diff --git a/EuclidEmulator2/.gitignore b/EuclidEmulator2/.gitignore new file mode 100644 index 00000000..d61d7fd5 --- /dev/null +++ b/EuclidEmulator2/.gitignore @@ -0,0 +1,12 @@ +ee2_data +misc/* +**/*.exe +my_nlc*.dat +.DS_Store +validation/* +*.swp +*/CAMBpath +*/CLASSpath +results/* +*.pxd +*.bu diff --git a/EuclidEmulator2/LICENSE b/EuclidEmulator2/LICENSE new file mode 100644 index 00000000..f288702d --- /dev/null +++ b/EuclidEmulator2/LICENSE @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + 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 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/EuclidEmulator2/Makefile b/EuclidEmulator2/Makefile new file mode 100644 index 00000000..5c5fdd51 --- /dev/null +++ b/EuclidEmulator2/Makefile @@ -0,0 +1,53 @@ +# Make file for EuclidEmulator2 +# ============================= +# This file is part of EuclidEmulator2 +# Copyright (c) 2020 Mischa Knabenhans +# +# EuclidEmulator2 is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# EuclidEmulator2 is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# Compiler +# -------- +CC = g++ # requires at least g++ version 4.9.1 + +# Set include paths if necessary +# ------------------------------ +# Notice that depending on the system and your setup +# you may not necessarily have to specify the I_GSL variable. +# For instance, on my Mac OS X Mojave with g++ 9.3.0 it works +# without it. + +I_CXXOPTS = -Icxxopts/include +I_GSL = -I/home/groups/risahw/chto/package/gsl/gsl_lib//include # GSL versions older than 2.5 have not been tested. + # GSL versions < 2.0 will certainly not work. +INCL = -Isrc $(I_CXXOPTS) $(I_GSL) + +# Set libraries +# -------------- +LIBPATH = -L/home/groups/risahw/chto/package/gsl/gsl_lib/lib # path to GSL library +LIBS = -lgsl -lgslcblas -lm + +# Define all source files +# ----------------------- +SRCS = src/main.cxx src/cosmo.cxx src/emulator.cxx src/parse.cxx + +# Define executable/output file name +# ---------------------------------- +EXEC = -o ee2.exe + +all: + echo $(CC) $(SRCS) $(EXEC) $(INCL) $(LIBPATH) $(LIBS) --std=c++11 + $(CC) $(SRCS) $(EXEC) $(INCL) $(LIBPATH) $(LIBS) --std=c++11 + +clean: + rm -f *.o *.exe diff --git a/EuclidEmulator2/README.md b/EuclidEmulator2/README.md new file mode 100644 index 00000000..61f9eba4 --- /dev/null +++ b/EuclidEmulator2/README.md @@ -0,0 +1,264 @@ +# EuclidEmulator2 (version 1.0.1) +This repository contains the source code of EuclidEmulator2, a fast and accurate tool to estimate the non-linear correction to the matter power spectrum. +In contrast to its predecessor EuclidEmulator, EuclidEmulator2 allows for 8-parameter cosmological models including massive neutrinos (assuming a degenerate hierarchy) and dynamical dark energy. EuclidEmulator2 is written in C++. For more information on EuclidEmulator please visit https://github.com/miknab/EuclidEmulator. + +Authors: M. Knabenhans, Pedro Carrilho
+Date of last update: March 2021
+Reference: Euclid Consortium: Knabenhans et al. (submitted), https://arxiv.org/abs/2010.11288
+ +If you use EuclidEmulator2 in any way (for a publication or otherwise), please cite this paper. + +Contact information: If you have any questions and/or remarks related to this work, please do not hesitate to send me an email (mischakATphysik.uzh.ch). For questions regarding the Python wrapper, contact Pedro Carrilho (p.gregoriocarrilhoATqmul.ac.uk). + +## Currently implemented features +* emulation of the non-linear correction factor B(k,z) +* large allowed redshift interval: z in the interval [0.0,10.0] +* spatial scales spanning more than three orders of magnitude: 8.73 x 10-3 h / Mpc ≤ k ≤ 9.41 h / Mpc. + + +* C++ executable + + many different was to define the cosmologies: + - direct definition of a single cosmology using command line parameters + - definition of several cosmologies through a parameter file + - definition of a cosmology through a CLASS or CAMB parameter file + + results are written to output file + + +* Python wrapper + - Cosmology defined via parameter dictionary + - Can output in custom k-range with extrapolation outside default range + - Interfaces with class to compute full non-linear matter power spectrum + +For a more extensive list of functionalities please the list of possible command line parameters shown [below](#building-and-installation). See the example jupyter notebook for details on running the python wrapper. + +## Features yet to be implemented +* resolution correction emulator + +## Quick start +### Prerequisites +In any case you need: + * C++11 or later + * GNU Scientific Library version 2.5 or higher (GSL; see https://www.gnu.org/software/gsl/) + * g++ version 4.9.1 or higher + +For the python wrapper, you need python with the following packages: + * cython, numpy, scipy (essential) + * jupyter, matplotlib (for plotting in the example notebook) + * classy (for computing non-linear power spectrum only) + +Note that the 3 essential packages will be installed during the wrapper installation via pip, if not present, but may not be recognised by anaconda later, which may lead to duplicate installations. + +#### GSL install +On most machines, building GSL is relatively simple. To install it locally, e.g. in `~/local/gsl`, use +``` +mkdir -p $HOME/local/gsl && cd $HOME/local +wget -c ftp://ftp.gnu.org/gnu/gsl/gsl-latest.tar.gz -O - | tar zxv +``` +The install procedure follows standard steps, but each one might take several minutes. Execute each command separately and only continue if there are no errors. +``` +./configure --prefix=$HOME/local/gsl +make +make check +make install +``` + Once done, make sure to add the GSL library to your library path with + ``` + export LD_LIBRARY_PATH=$HOME/local/gsl/lib${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH} + ``` + +### Test installations +The c++ code was successfully compiled on the following systems and environments: + +* Mac OS X Mojave (10.14.6), with g++ version 9.3.0 and GSL version 2.6 (both g++ and GSL were installed with Homebrew) +* Linux (Red Hat 4.4.7-18), with g++ version 4.9.1 and GSL version 2.5 +* Linux (Pop!_OS 20.04), with g++ version 9.3.0 and GSL version 2.6 (local GSL install) + +### Get the code +If you have not done so already, either download this repository or clone it to your local host (under Linux you can get an unzipped tar-ball via +``` + wget -c https://github.com/PedroCarrilho/EuclidEmulator2/archive/pywrapper.tar.gz -O - | tar zxv +``` + +Alternatively, if you are only interested in the python wrapper, you can just install it using +``` +pip install euclidemu2 +``` +See below for further installation instructions, in case pip install does not work. + +### Building and installation +The current version of EuclidEmulator2 comes both as a command line interface (CLI) or a python wrapper. + +#### CLI installation + +In order to build the CLI, cd into the EuclidEmulator2 directory, check the `Makefile` and modify it as required (in particular the path of the `-I` and `-L` flag for GSL) and execute + +``` + make +``` +This will create an executable file called `ee2.exe`. In order to check if the build was successful, execute + +``` + ./ee2.exe --help +``` + +You should now see the following output: + +``` +Highly accurate and efficient AI-based predictor of the non-linear correction of the matter power spectrum. +Usage: + EuclidEmulator2 [OPTION...] + + -b, --Omega_b arg baryon density parameter + -m, --Omega_m arg (total) matter density parameter + -s, --Sum_m_nu arg sum of neutrino masses in eV + -n, --n_s arg spectral index + -H, --hubble arg dimensionless Hubble parameter + -W, --w_0 arg time-independent dark energy equation-of-state + parameter + -w, --w_a arg time-dependent dark energy equation-of-state parameter + -A, --A_s arg spectral amplitude + -z, --redshift arg redshift at which the NLC shall be computed + -i, --inifile arg path to CLASS or CAMB parameter file + -p, --parfile arg path to EE2 parameter file + -o, --outfile arg output file name (default: nlc) + -d, --outdir arg output directory (default: results) + -v, --verbosity arg verbosity level (0, 1 or 2) (default: 0) + -h, --help Print usage +``` + +##### Sanity check +As a next step I recommend to go through the following: + + 1. enter the EuclidEmulator2 directory (root level). Here you should see, amongst others, a `tests` directory. + 2. execute the command `mkdir results` + 3. execute the command `./tests/run_test.sh` + +You should now see some output printed to screen that provides information about the cosmologies that are being treated by EuclidEmulator2. As a result, the following files should now be in the `results` directory: + +``` + CAMB_example0.dat + CLASS_example0.dat + cmd_input_test.dat0.dat + from_ee2_parfile0.dat + from_ee2_parfile1.dat + from_ee2_parfile2.dat + from_ee2_parfile3.dat +``` + +In each file you should find a list of k modes (first column) and one or more B(k,z) column. + + +#### Python installation + +To build the python wrapper, you can either use +``` +pip install euclidemu2 +``` +to get the version from PyPI or clone this repo, cd into the EuclidEmulator2 directory and execute + +``` +pip install . +``` + +to install the version present on github. + +##### Troubleshooting + +Should these installation methods produce errors this can be due to two main issues: +* gsl path is not correct. +* g++ is not present or points to another compiler (such as clang on mac). + +Solving the first issue is straightforward for a local installation by changing the paths to gsl present in setup.py, similarly to the CLI installation. The assumption for both ways of installing the python wrapper is that gsl is in `/usr/local`, such that the include files are in `/usr/local/include` and the lib files are in `/usr/local/lib`, so modify those lines in setup.py to the correct ones in your system and the installation should proceed. + +Alternatively, you can pass additional arguments to pip to include the required paths. To install from PyPI, use instead +``` +pip install --global-option=build_ext --global-option="-L/path/to/gsl/lib" --global-option="-I/path/to/gsl/include" euclidemu2 +``` +changing the `path/to/gsl` to your path. + +To solve the second issue, install a new version of g++ and make sure that it is correctly linked, so that when you call `g++ --version` on a terminal you get an appropriate version of g++ and not clang. + +To check if the installation was successful, just open python and do + +``` +import euclidemu2 +``` + +A python notebook (test_euclid_emu2.ipynb) is also included, which includes an example for running the code and retrieving the boost factor. If it runs correctly, the installation was successful. + +If you have further issues installing the python wrapper, don't hesitate to email Pedro Carrilho (p.gregoriocarrilhoATqmul.ac.uk) or post an issue on github. + +### CLI Usage +There are several ways of calling EuclidEmulator2. The different options are briefly explained in the following: + +* specify a cosmology directly by passing a value for each cosmological parameter (flags `-b, -m, -s, -n, -H, -W, -w, -A` and `-z` as well as there corresponding long versions). Notice that an arbitrary number of redshifts (`-z` flags) can be passed: + +Example: +``` + ./ee2.exe -b 0.049 -m 0.319 -s 0.058 -n 0.96 -H 0.67 -W -1.0 -w 0.0 -A 2.1e-9\ + -z 0.0 -z 0.1081179 -z 0.4880429 +``` + +* using the `-p` flag to pass an EuclidEmulator2 parameter file that contains at least one cosmology. + +Example: +``` + ./ee2.exe -p tests/ee2_parfile.par +``` + +Checkout the file `tests/ee2_parfile.par` in order to learn more about how to structure such a parameter file. + +* using the `-i` flag to pass a `CLASS` or `CAMB` parameter file. + +Examples: +``` + ./ee2.exe -i tests/camb_parameter_file.ini -t CAMB +``` +or +``` + ./ee2.exe -i tests/class_parameter_file.ini -t CLASS +``` + +Notice that the `-t` flag is mandatory in this case in order to tell the code whether it is reading a CLASS or a CAMB style \*.ini file. + +### Python Usage + +To run the python wrapper, first import the package via +``` +import euclidemu2 as ee2 +``` +then create a python dictionary with the requested values of the cosmological parameters: +``` +cosmo_par = {'As':2.1e-09, 'ns':0.966, 'Omb':0.04, 'Omm':0.3, 'h':0.68, 'mnu':0.15, 'w':-1.0, 'wa':0.0} +``` +This can then be passed to the main function along with an array of redshifts +``` +redshifts = [0,2,4,6,8,10] +k, b = ee2.get_boost(cosmo_par,redshifts) +``` +resulting in an array `k` with the wavenumbers in units of h / Mpc and a dictionary `b` indexed with the same index as the redshift array, e.g. `b[1]` is an array corresponding to `redshifts[1]`, etc. This is always the case, even when only one redshift is requested, so accessing that array is always done via `b[0]`. + +To calculate the boost for a custom range and sampling of k values, define an array with the requested values, e.g. +``` +k_custom = np.geomspace(1e-4,100,1000) +``` +and use +``` +k, b = ee2.get_boost(cosmo_par,redshifts,k_custom) +``` +where now `k=k_custom` and `b` gives the interpolated (extrapolated) boosts inside (outside) the default range. + +If classy is installed, you can also get the full non-linear power spectrum via +``` +k, pnl, plin, b = ee2.get_pnonlin(cosmo_par, redshifts, k_custom) +``` +which will now output `pnl` in addition to the linear power spectrum `plin` and the boost `b`, which are all indexed in the same way as the boost from `get_boost`. + +If classy is not installed, a warning will appear when loading `euclidemu2` and the `get_pnonlin` function will not work. The `get_boost` function will always work. + +Warning: In the most recent versions of Python (e.g. 3.8) `classy` may not work unless it is the first package to be imported. This is taken into account when calling `euclidemu2`, but implies that `euclidemu2` must be the first package to be imported. This has been verified not to be a problem for older versions of python (e.g. 3.6). + +See the python notebook (test_euclid_emu2.ipynb) for an example of a full run and more details. + +## License +EuclidEmulator2 is free software, distributed under the GNU General Public License. This implies that you may freely distribute and copy the software. You may also modify it as you wish, and distribute these modified versions. You must always indicate prominently any changes you made in the original code and leave the copyright notices, and the no-warranty notice intact. Please read the General Public License for more details. diff --git a/EuclidEmulator2/cxxopts b/EuclidEmulator2/cxxopts new file mode 120000 index 00000000..6e2fe22a --- /dev/null +++ b/EuclidEmulator2/cxxopts @@ -0,0 +1 @@ +cxxopts-2.2.0/ \ No newline at end of file diff --git a/EuclidEmulator2/cxxopts-2.2.0/.gitignore b/EuclidEmulator2/cxxopts-2.2.0/.gitignore new file mode 100755 index 00000000..e91cd408 --- /dev/null +++ b/EuclidEmulator2/cxxopts-2.2.0/.gitignore @@ -0,0 +1,8 @@ +*.swp +build* +CMakeCache.txt +Makefile +CMakeFiles/ +Testing/ +CTestTestfile.cmake +cmake_install.cmake diff --git a/EuclidEmulator2/cxxopts-2.2.0/.travis.yml b/EuclidEmulator2/cxxopts-2.2.0/.travis.yml new file mode 100755 index 00000000..87c78a7e --- /dev/null +++ b/EuclidEmulator2/cxxopts-2.2.0/.travis.yml @@ -0,0 +1,70 @@ +sudo: required +dist: trusty +language: cpp +os: + - linux +matrix: + include: + - os: linux + env: COMPILER=g++-4.9 + addons: + apt: + packages: + - g++-4.9 + sources: &sources + - llvm-toolchain-trusty-3.8 + - llvm-toolchain-trusty-5.0 + - ubuntu-toolchain-r-test + - os: linux + env: COMPILER=g++-4.9 UNICODE_OPTIONS=-DCXXOPTS_USE_UNICODE_HELP=Yes + addons: + apt: + packages: + - g++-4.9 + sources: *sources + - os: linux + env: COMPILER=g++-5 + addons: + apt: + packages: + - g++-5 + sources: *sources + - os: linux + env: COMPILER=g++-5 UNICODE_OPTIONS=-DCXXOPTS_USE_UNICODE_HELP=Yes + addons: + apt: + packages: + - g++-5 + sources: *sources + - os: linux + env: COMPILER=clang++-3.8 CXXFLAGS=-stdlib=libc++ + addons: + apt: + packages: + - clang-3.8 + - libc++-dev + sources: *sources + - os: linux + env: COMPILER=clang++-3.8 CXXFLAGS=-stdlib=libc++ UNICODE_OPTIONS=-DCXXOPTS_USE_UNICODE_HELP=Yes + addons: + apt: + packages: + - clang-3.8 + - libc++-dev + sources: *sources + - os: linux + env: COMPILER=clang++-5.0 CMAKE_OPTIONS=-DCXXOPTS_CXX_STANDARD=17 + addons: + apt: + packages: + - clang-5.0 + - g++-5 + sources: *sources +script: > + cmake -DCXXOPTS_BUILD_TESTS=ON -DCMAKE_CXX_COMPILER=$COMPILER + -DCMAKE_CXX_FLAGS=$CXXFLAGS $UNICODE_OPTIONS $CMAKE_OPTIONS . + && make && make ARGS=--output-on-failure test + +before_install: + - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then brew update ; fi + - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then brew install icu4c; fi diff --git a/EuclidEmulator2/cxxopts-2.2.0/CHANGELOG.md b/EuclidEmulator2/cxxopts-2.2.0/CHANGELOG.md new file mode 100755 index 00000000..96319a75 --- /dev/null +++ b/EuclidEmulator2/cxxopts-2.2.0/CHANGELOG.md @@ -0,0 +1,87 @@ +# Changelog + +This is the changelog for `cxxopts`, a C++11 library for parsing command line +options. The project adheres to semantic versioning. + +## 2.2 + +### Changed + +* Allow integers to have leading zeroes. +* Build the tests by default. +* Don't check for container when showing positional help. + +### Added + +* Iterator inputs to `parse_positional`. +* Throw an exception if the option in `parse_positional` doesn't exist. +* Parse a delimited list in a single argument for vector options. +* Add an option to disable implicit value on booleans. + +### Bug Fixes + +* Fix a warning about possible loss of data. +* Fix version numbering in CMakeLists.txt +* Remove unused declaration of the undefined `ParseResult::get_option`. +* Throw on invalid option syntax when beginning with a `-`. +* Throw in `as` when option wasn't present. +* Fix catching exceptions by reference. +* Fix out of bounds errors parsing integers. + +## 2.1.1 + +### Bug Fixes + +* Revert the change adding `const` type for `argv`, because most users expect + to pass a non-const `argv` from `main`. + +## 2.1 + +### Changed + +* Options with implicit arguments now require the `--option=value` form if + they are to be specified with an option. This is to remove the ambiguity + when a positional argument could follow an option with an implicit value. + For example, `--foo value`, where `foo` has an implicit value, will be + parsed as `--foo=implicit` and a positional argument `value`. +* Boolean values are no longer special, but are just an option with a default + and implicit value. + +### Added + +* Added support for `std::optional` as a storage type. +* Allow the help string to be customised. +* Use `const` for the type in the `argv` parameter, since the contents of the + arguments is never modified. + +### Bug Fixes + +* Building against GCC 4.9 was broken due to overly strict shadow warnings. +* Fixed an ambiguous overload in the `parse_positional` function when an + `initializer_list` was directly passed. +* Fixed precedence in the Boolean value regex. + +## 2.0 + +### Changed + +* `Options::parse` returns a ParseResult rather than storing the parse + result internally. +* Options with default values now get counted as appearing once if they + were not specified by the user. + +### Added + +* A new `ParseResult` object that is the immutable result of parsing. It + responds to the same `count` and `operator[]` as `Options` of 1.x did. +* The function `ParseResult::arguments` returns a vector of the parsed + arguments to iterate through in the order they were provided. +* The symbol `cxxopts::version` for the version of the library. +* Booleans can be specified with various strings and explicitly set false. + +## 1.x + +The 1.x series was the first major version of the library, with release numbers +starting to follow semantic versioning, after 0.x being unstable. It never had +a changelog maintained for it. Releases mostly contained bug fixes, with the +occasional feature added. diff --git a/EuclidEmulator2/cxxopts-2.2.0/CMakeLists.txt b/EuclidEmulator2/cxxopts-2.2.0/CMakeLists.txt new file mode 100755 index 00000000..440490ba --- /dev/null +++ b/EuclidEmulator2/cxxopts-2.2.0/CMakeLists.txt @@ -0,0 +1,104 @@ +# Copyright (c) 2014 Jarryd Beck +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. +cmake_minimum_required(VERSION 3.1) + +# parse the current version from the cxxopts header +file(STRINGS "${CMAKE_CURRENT_SOURCE_DIR}/include/cxxopts.hpp" cxxopts_version_defines + REGEX "#define CXXOPTS__VERSION_(MAJOR|MINOR|PATCH)") +foreach(ver ${cxxopts_version_defines}) + if(ver MATCHES "#define CXXOPTS__VERSION_(MAJOR|MINOR|PATCH) +([^ ]+)$") + set(CXXOPTS__VERSION_${CMAKE_MATCH_1} "${CMAKE_MATCH_2}" CACHE INTERNAL "") + endif() +endforeach() +set(VERSION ${CXXOPTS__VERSION_MAJOR}.${CXXOPTS__VERSION_MINOR}.${CXXOPTS__VERSION_PATCH}) +message(STATUS "cxxopts version ${VERSION}") + +project(cxxopts VERSION "${VERSION}") + +enable_testing() + +option(CXXOPTS_BUILD_EXAMPLES "Set to ON to build examples" ON) +option(CXXOPTS_BUILD_TESTS "Set to ON to build tests" ON) + +# request c++11 without gnu extension for the whole project and enable more warnings +if (CXXOPTS_CXX_STANDARD) + set(CMAKE_CXX_STANDARD ${CXXOPTS_CXX_STANDARD}) +else() + set(CMAKE_CXX_STANDARD 11) +endif() + +set(CMAKE_CXX_EXTENSIONS OFF) + +if(MSVC) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W2") +elseif(CMAKE_CXX_COMPILER_ID MATCHES "[Cc]lang" OR CMAKE_CXX_COMPILER_ID MATCHES "GNU") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Werror -Wextra -Wshadow") +endif() + +add_library(cxxopts INTERFACE) + +# optionally, enable unicode support using the ICU library +set(CXXOPTS_USE_UNICODE_HELP FALSE CACHE BOOL "Use ICU Unicode library") +if(CXXOPTS_USE_UNICODE_HELP) + find_package(PkgConfig) + pkg_check_modules(ICU REQUIRED icu-uc) + + target_link_libraries(cxxopts INTERFACE ${ICU_LDFLAGS}) + target_compile_options(cxxopts INTERFACE ${ICU_CFLAGS}) + target_compile_definitions(cxxopts INTERFACE CXXOPTS_USE_UNICODE) +endif() + +target_include_directories(cxxopts INTERFACE + $ + $ + ) + +include(CMakePackageConfigHelpers) +set(CXXOPTS_CMAKE_DIR "lib/cmake/cxxopts" CACHE STRING + "Installation directory for cmake files, relative to ${CMAKE_INSTALL_PREFIX}.") +set(version_config "${PROJECT_BINARY_DIR}/cxxopts-config-version.cmake") +set(project_config "${PROJECT_BINARY_DIR}/cxxopts-config.cmake") +set(targets_export_name cxxopts-targets) + +# Generate the version, config and target files into the build directory. +write_basic_package_version_file( + ${version_config} + VERSION ${VERSION} + COMPATIBILITY AnyNewerVersion) +configure_package_config_file( + ${PROJECT_SOURCE_DIR}/cxxopts-config.cmake.in + ${project_config} + INSTALL_DESTINATION ${CXXOPTS_CMAKE_DIR}) +export(TARGETS cxxopts NAMESPACE cxxopts:: + FILE ${PROJECT_BINARY_DIR}/${targets_export_name}.cmake) + +# Install version, config and target files. +install( + FILES ${project_config} ${version_config} + DESTINATION ${CXXOPTS_CMAKE_DIR}) +install(EXPORT ${targets_export_name} DESTINATION ${CXXOPTS_CMAKE_DIR} + NAMESPACE cxxopts::) + +# Install the header file and export the target +install(TARGETS cxxopts EXPORT ${targets_export_name} DESTINATION lib) +install(FILES ${PROJECT_SOURCE_DIR}/include/cxxopts.hpp DESTINATION include) + +add_subdirectory(src) +add_subdirectory(test) diff --git a/EuclidEmulator2/cxxopts-2.2.0/INSTALL b/EuclidEmulator2/cxxopts-2.2.0/INSTALL new file mode 100755 index 00000000..3e1c6f3d --- /dev/null +++ b/EuclidEmulator2/cxxopts-2.2.0/INSTALL @@ -0,0 +1,23 @@ +== System installation == + +This library is header only. So you can either copy `include/cxxopts.hpp` to `/usr/include` or `/usr/local/include`, or add `include` to your search path. + +== Building the examples and tests == + +It is preferable to build out of source. Make a build directory somewhere, and then +do the following, where `${CXXOPTS_DIR}` is the path that you checked out `cxxopts` +to: + + cmake ${CXXOPTS_DIR} + make + +You can use another build tool, such as ninja. + + cmake -G Ninja ${CXXOPTS_DIR} + ninja + + +To run the tests, you have to configure `cxxopts` with another flag: + cmake -D CXXOPTS_BUILD_TESTS=On ${CXXOPTS_DIR} + make + make test diff --git a/EuclidEmulator2/cxxopts-2.2.0/LICENSE b/EuclidEmulator2/cxxopts-2.2.0/LICENSE new file mode 100755 index 00000000..324a2035 --- /dev/null +++ b/EuclidEmulator2/cxxopts-2.2.0/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2014 Jarryd Beck + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/EuclidEmulator2/cxxopts-2.2.0/README.md b/EuclidEmulator2/cxxopts-2.2.0/README.md new file mode 100755 index 00000000..93dcf3b1 --- /dev/null +++ b/EuclidEmulator2/cxxopts-2.2.0/README.md @@ -0,0 +1,148 @@ +[![Build Status](https://travis-ci.org/jarro2783/cxxopts.svg?branch=master)](https://travis-ci.org/jarro2783/cxxopts) + +# Release versions + +Note that `master` is generally a work in progress, and you probably want to use a +tagged release version. + +# Quick start + +This is a lightweight C++ option parser library, supporting the standard GNU +style syntax for options. + +Options can be given as: + + --long + --long=argument + --long argument + -a + -ab + -abc argument + +where c takes an argument, but a and b do not. + +Additionally, anything after `--` will be parsed as a positional argument. + +## Basics + + #include + +Create a cxxopts::Options instance. + + cxxopts::Options options("MyProgram", "One line description of MyProgram"); + +Then use `add_options`. + + options.add_options() + ("d,debug", "Enable debugging") + ("f,file", "File name", cxxopts::value()) + ; + +Options are declared with a long and an optional short option. A description +must be provided. The third argument is the value, if omitted it is boolean. +Any type can be given as long as it can be parsed, with operator>>. + +To parse the command line do: + + auto result = options.parse(argc, argv); + +To retrieve an option use `result.count("option")` to get the number of times +it appeared, and + + result["opt"].as() + +to get its value. If "opt" doesn't exist, or isn't of the right type, then an +exception will be thrown. + +Note that the result of `options.parse` should only be used as long as the +`options` object that created it is in scope. + +## Exceptions + +Exceptional situations throw C++ exceptions. There are two types of +exceptions: errors defining the options, and errors when parsing a list of +arguments. All exceptions derive from `cxxopts::OptionException`. Errors +defining options derive from `cxxopts::OptionSpecException` and errors +parsing arguments derive from `cxxopts::OptionParseException`. + +All exceptions define a `what()` function to get a printable string +explaining the error. + +## Help groups + +Options can be placed into groups for the purposes of displaying help messages. +To place options in a group, pass the group as a string to `add_options`. Then, +when displaying the help, pass the groups that you would like displayed as a +vector to the `help` function. + +## Positional Arguments + +Positional arguments can be optionally parsed into one or more options. +To set up positional arguments, call + + options.parse_positional({"first", "second", "last"}) + +where "last" should be the name of an option with a container type, and the +others should have a single value. + +## Default and implicit values + +An option can be declared with a default or an implicit value, or both. + +A default value is the value that an option takes when it is not specified +on the command line. The following specifies a default value for an option: + + cxxopts::value()->default_value("value") + +An implicit value is the value that an option takes when it is given on the +command line without an argument. The following specifies an implicit value: + + cxxopts::value()->implicit_value("implicit") + +If an option had both, then not specifying it would give the value `"value"`, +writing it on the command line as `--option` would give the value `"implicit"`, +and writing `--option=another` would give it the value `"another"`. + +Note that the default and implicit value is always stored as a string, +regardless of the type that you want to store it in. It will be parsed as +though it was given on the command line. + +## Boolean values + +Boolean options have a default implicit value of `"true"`, which can be +overridden. The effect is that writing `-o` by itself will set option `o` to +`true`. However, they can also be written with various strings using `=value`. +There is no way to disambiguate positional arguments from the value following +a boolean, so we have chosen that they will be positional arguments, and +therefore, `-o false` does not work. + +## `std::vector` values + +Parsing of list of values in form of an `std::vector` is also supported, as long as `T` +can be parsed. To separate single values in a list the definition `CXXOPTS_VECTOR_DELIMITER` +is used, which is ',' by default. Ensure that you use no whitespaces between values because +those would be interpreted as the next command line option. Example for a command line option +that can be parsed as a `std::vector`: + +~~~ +--my_list=1,-2.1,3,4.5 +~~~ + +## Custom help + +The string after the program name on the first line of the help can be +completely replaced by calling `options.custom_help`. Note that you might +also want to override the positional help by calling `options.positional_help`. + +# Linking + +This is a header only library. + +# Requirements + +The only build requirement is a C++ compiler that supports C++11 regular +expressions. For example GCC >= 4.9 or clang with libc++. + +# TODO list + +* Allow unrecognised options. diff --git a/EuclidEmulator2/cxxopts-2.2.0/cxxopts-config.cmake.in b/EuclidEmulator2/cxxopts-2.2.0/cxxopts-config.cmake.in new file mode 100755 index 00000000..c9efaf14 --- /dev/null +++ b/EuclidEmulator2/cxxopts-2.2.0/cxxopts-config.cmake.in @@ -0,0 +1,4 @@ +@PACKAGE_INIT@ + +include(${CMAKE_CURRENT_LIST_DIR}/@targets_export_name@.cmake) +check_required_components(cxxopts) diff --git a/EuclidEmulator2/cxxopts-2.2.0/include/cxxopts.hpp b/EuclidEmulator2/cxxopts-2.2.0/include/cxxopts.hpp new file mode 100755 index 00000000..1381ab32 --- /dev/null +++ b/EuclidEmulator2/cxxopts-2.2.0/include/cxxopts.hpp @@ -0,0 +1,2104 @@ +/* + +Copyright (c) 2014, 2015, 2016, 2017 Jarryd Beck + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + +*/ + +#ifndef CXXOPTS_HPP_INCLUDED +#define CXXOPTS_HPP_INCLUDED + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef __cpp_lib_optional +#include +#define CXXOPTS_HAS_OPTIONAL +#endif + +#ifndef CXXOPTS_VECTOR_DELIMITER +#define CXXOPTS_VECTOR_DELIMITER ',' +#endif + +#define CXXOPTS__VERSION_MAJOR 2 +#define CXXOPTS__VERSION_MINOR 2 +#define CXXOPTS__VERSION_PATCH 0 + +namespace cxxopts +{ + static constexpr struct { + uint8_t major, minor, patch; + } version = { + CXXOPTS__VERSION_MAJOR, + CXXOPTS__VERSION_MINOR, + CXXOPTS__VERSION_PATCH + }; +} + +//when we ask cxxopts to use Unicode, help strings are processed using ICU, +//which results in the correct lengths being computed for strings when they +//are formatted for the help output +//it is necessary to make sure that can be found by the +//compiler, and that icu-uc is linked in to the binary. + +#ifdef CXXOPTS_USE_UNICODE +#include + +namespace cxxopts +{ + typedef icu::UnicodeString String; + + inline + String + toLocalString(std::string s) + { + return icu::UnicodeString::fromUTF8(std::move(s)); + } + + class UnicodeStringIterator : public + std::iterator + { + public: + + UnicodeStringIterator(const icu::UnicodeString* string, int32_t pos) + : s(string) + , i(pos) + { + } + + value_type + operator*() const + { + return s->char32At(i); + } + + bool + operator==(const UnicodeStringIterator& rhs) const + { + return s == rhs.s && i == rhs.i; + } + + bool + operator!=(const UnicodeStringIterator& rhs) const + { + return !(*this == rhs); + } + + UnicodeStringIterator& + operator++() + { + ++i; + return *this; + } + + UnicodeStringIterator + operator+(int32_t v) + { + return UnicodeStringIterator(s, i + v); + } + + private: + const icu::UnicodeString* s; + int32_t i; + }; + + inline + String& + stringAppend(String&s, String a) + { + return s.append(std::move(a)); + } + + inline + String& + stringAppend(String& s, int n, UChar32 c) + { + for (int i = 0; i != n; ++i) + { + s.append(c); + } + + return s; + } + + template + String& + stringAppend(String& s, Iterator begin, Iterator end) + { + while (begin != end) + { + s.append(*begin); + ++begin; + } + + return s; + } + + inline + size_t + stringLength(const String& s) + { + return s.length(); + } + + inline + std::string + toUTF8String(const String& s) + { + std::string result; + s.toUTF8String(result); + + return result; + } + + inline + bool + empty(const String& s) + { + return s.isEmpty(); + } +} + +namespace std +{ + inline + cxxopts::UnicodeStringIterator + begin(const icu::UnicodeString& s) + { + return cxxopts::UnicodeStringIterator(&s, 0); + } + + inline + cxxopts::UnicodeStringIterator + end(const icu::UnicodeString& s) + { + return cxxopts::UnicodeStringIterator(&s, s.length()); + } +} + +//ifdef CXXOPTS_USE_UNICODE +#else + +namespace cxxopts +{ + typedef std::string String; + + template + T + toLocalString(T&& t) + { + return std::forward(t); + } + + inline + size_t + stringLength(const String& s) + { + return s.length(); + } + + inline + String& + stringAppend(String&s, String a) + { + return s.append(std::move(a)); + } + + inline + String& + stringAppend(String& s, size_t n, char c) + { + return s.append(n, c); + } + + template + String& + stringAppend(String& s, Iterator begin, Iterator end) + { + return s.append(begin, end); + } + + template + std::string + toUTF8String(T&& t) + { + return std::forward(t); + } + + inline + bool + empty(const std::string& s) + { + return s.empty(); + } +} + +//ifdef CXXOPTS_USE_UNICODE +#endif + +namespace cxxopts +{ + namespace + { +#ifdef _WIN32 + const std::string LQUOTE("\'"); + const std::string RQUOTE("\'"); +#else + const std::string LQUOTE("‘"); + const std::string RQUOTE("’"); +#endif + } + + class Value : public std::enable_shared_from_this + { + public: + + virtual ~Value() = default; + + virtual + std::shared_ptr + clone() const = 0; + + virtual void + parse(const std::string& text) const = 0; + + virtual void + parse() const = 0; + + virtual bool + has_default() const = 0; + + virtual bool + is_container() const = 0; + + virtual bool + has_implicit() const = 0; + + virtual std::string + get_default_value() const = 0; + + virtual std::string + get_implicit_value() const = 0; + + virtual std::shared_ptr + default_value(const std::string& value) = 0; + + virtual std::shared_ptr + implicit_value(const std::string& value) = 0; + + virtual std::shared_ptr + no_implicit_value() = 0; + + virtual bool + is_boolean() const = 0; + }; + + class OptionException : public std::exception + { + public: + OptionException(const std::string& message) + : m_message(message) + { + } + + virtual const char* + what() const noexcept + { + return m_message.c_str(); + } + + private: + std::string m_message; + }; + + class OptionSpecException : public OptionException + { + public: + + OptionSpecException(const std::string& message) + : OptionException(message) + { + } + }; + + class OptionParseException : public OptionException + { + public: + OptionParseException(const std::string& message) + : OptionException(message) + { + } + }; + + class option_exists_error : public OptionSpecException + { + public: + option_exists_error(const std::string& option) + : OptionSpecException("Option " + LQUOTE + option + RQUOTE + " already exists") + { + } + }; + + class invalid_option_format_error : public OptionSpecException + { + public: + invalid_option_format_error(const std::string& format) + : OptionSpecException("Invalid option format " + LQUOTE + format + RQUOTE) + { + } + }; + + class option_syntax_exception : public OptionParseException { + public: + option_syntax_exception(const std::string& text) + : OptionParseException("Argument " + LQUOTE + text + RQUOTE + + " starts with a - but has incorrect syntax") + { + } + }; + + class option_not_exists_exception : public OptionParseException + { + public: + option_not_exists_exception(const std::string& option) + : OptionParseException("Option " + LQUOTE + option + RQUOTE + " does not exist") + { + } + }; + + class missing_argument_exception : public OptionParseException + { + public: + missing_argument_exception(const std::string& option) + : OptionParseException( + "Option " + LQUOTE + option + RQUOTE + " is missing an argument" + ) + { + } + }; + + class option_requires_argument_exception : public OptionParseException + { + public: + option_requires_argument_exception(const std::string& option) + : OptionParseException( + "Option " + LQUOTE + option + RQUOTE + " requires an argument" + ) + { + } + }; + + class option_not_has_argument_exception : public OptionParseException + { + public: + option_not_has_argument_exception + ( + const std::string& option, + const std::string& arg + ) + : OptionParseException( + "Option " + LQUOTE + option + RQUOTE + + " does not take an argument, but argument " + + LQUOTE + arg + RQUOTE + " given" + ) + { + } + }; + + class option_not_present_exception : public OptionParseException + { + public: + option_not_present_exception(const std::string& option) + : OptionParseException("Option " + LQUOTE + option + RQUOTE + " not present") + { + } + }; + + class argument_incorrect_type : public OptionParseException + { + public: + argument_incorrect_type + ( + const std::string& arg + ) + : OptionParseException( + "Argument " + LQUOTE + arg + RQUOTE + " failed to parse" + ) + { + } + }; + + class option_required_exception : public OptionParseException + { + public: + option_required_exception(const std::string& option) + : OptionParseException( + "Option " + LQUOTE + option + RQUOTE + " is required but not present" + ) + { + } + }; + + namespace values + { + namespace + { + std::basic_regex integer_pattern + ("(-)?(0x)?([0-9a-zA-Z]+)|((0x)?0)"); + std::basic_regex truthy_pattern + ("(t|T)(rue)?|1"); + std::basic_regex falsy_pattern + ("(f|F)(alse)?|0"); + } + + namespace detail + { + template + struct SignedCheck; + + template + struct SignedCheck + { + template + void + operator()(bool negative, U u, const std::string& text) + { + if (negative) + { + if (u > static_cast((std::numeric_limits::min)())) + { + throw argument_incorrect_type(text); + } + } + else + { + if (u > static_cast((std::numeric_limits::max)())) + { + throw argument_incorrect_type(text); + } + } + } + }; + + template + struct SignedCheck + { + template + void + operator()(bool, U, const std::string&) {} + }; + + template + void + check_signed_range(bool negative, U value, const std::string& text) + { + SignedCheck::is_signed>()(negative, value, text); + } + } + + template + R + checked_negate(T&& t, const std::string&, std::true_type) + { + // if we got to here, then `t` is a positive number that fits into + // `R`. So to avoid MSVC C4146, we first cast it to `R`. + // See https://github.com/jarro2783/cxxopts/issues/62 for more details. + return -static_cast(t-1)-1; + } + + template + T + checked_negate(T&&, const std::string& text, std::false_type) + { + throw argument_incorrect_type(text); + } + + template + void + integer_parser(const std::string& text, T& value) + { + std::smatch match; + std::regex_match(text, match, integer_pattern); + + if (match.length() == 0) + { + throw argument_incorrect_type(text); + } + + if (match.length(4) > 0) + { + value = 0; + return; + } + + using US = typename std::make_unsigned::type; + + constexpr bool is_signed = std::numeric_limits::is_signed; + const bool negative = match.length(1) > 0; + const uint8_t base = match.length(2) > 0 ? 16 : 10; + + auto value_match = match[3]; + + US result = 0; + + for (auto iter = value_match.first; iter != value_match.second; ++iter) + { + US digit = 0; + + if (*iter >= '0' && *iter <= '9') + { + digit = static_cast(*iter - '0'); + } + else if (base == 16 && *iter >= 'a' && *iter <= 'f') + { + digit = static_cast(*iter - 'a' + 10); + } + else if (base == 16 && *iter >= 'A' && *iter <= 'F') + { + digit = static_cast(*iter - 'A' + 10); + } + else + { + throw argument_incorrect_type(text); + } + + US next = result * base + digit; + if (result > next) + { + throw argument_incorrect_type(text); + } + + result = next; + } + + detail::check_signed_range(negative, result, text); + + if (negative) + { + value = checked_negate(result, + text, + std::integral_constant()); + } + else + { + value = static_cast(result); + } + } + + template + void stringstream_parser(const std::string& text, T& value) + { + std::stringstream in(text); + in >> value; + if (!in) { + throw argument_incorrect_type(text); + } + } + + inline + void + parse_value(const std::string& text, uint8_t& value) + { + integer_parser(text, value); + } + + inline + void + parse_value(const std::string& text, int8_t& value) + { + integer_parser(text, value); + } + + inline + void + parse_value(const std::string& text, uint16_t& value) + { + integer_parser(text, value); + } + + inline + void + parse_value(const std::string& text, int16_t& value) + { + integer_parser(text, value); + } + + inline + void + parse_value(const std::string& text, uint32_t& value) + { + integer_parser(text, value); + } + + inline + void + parse_value(const std::string& text, int32_t& value) + { + integer_parser(text, value); + } + + inline + void + parse_value(const std::string& text, uint64_t& value) + { + integer_parser(text, value); + } + + inline + void + parse_value(const std::string& text, int64_t& value) + { + integer_parser(text, value); + } + + inline + void + parse_value(const std::string& text, bool& value) + { + std::smatch result; + std::regex_match(text, result, truthy_pattern); + + if (!result.empty()) + { + value = true; + return; + } + + std::regex_match(text, result, falsy_pattern); + if (!result.empty()) + { + value = false; + return; + } + + throw argument_incorrect_type(text); + } + + inline + void + parse_value(const std::string& text, std::string& value) + { + value = text; + } + + // The fallback parser. It uses the stringstream parser to parse all types + // that have not been overloaded explicitly. It has to be placed in the + // source code before all other more specialized templates. + template + void + parse_value(const std::string& text, T& value) { + stringstream_parser(text, value); + } + + template + void + parse_value(const std::string& text, std::vector& value) + { + std::stringstream in(text); + std::string token; + while(in.eof() == false && std::getline(in, token, CXXOPTS_VECTOR_DELIMITER)) { + T v; + parse_value(token, v); + value.emplace_back(std::move(v)); + } + } + +#ifdef CXXOPTS_HAS_OPTIONAL + template + void + parse_value(const std::string& text, std::optional& value) + { + T result; + parse_value(text, result); + value = std::move(result); + } +#endif + + template + struct type_is_container + { + static constexpr bool value = false; + }; + + template + struct type_is_container> + { + static constexpr bool value = true; + }; + + template + class abstract_value : public Value + { + using Self = abstract_value; + + public: + abstract_value() + : m_result(std::make_shared()) + , m_store(m_result.get()) + { + } + + abstract_value(T* t) + : m_store(t) + { + } + + virtual ~abstract_value() = default; + + abstract_value(const abstract_value& rhs) + { + if (rhs.m_result) + { + m_result = std::make_shared(); + m_store = m_result.get(); + } + else + { + m_store = rhs.m_store; + } + + m_default = rhs.m_default; + m_implicit = rhs.m_implicit; + m_default_value = rhs.m_default_value; + m_implicit_value = rhs.m_implicit_value; + } + + void + parse(const std::string& text) const + { + parse_value(text, *m_store); + } + + bool + is_container() const + { + return type_is_container::value; + } + + void + parse() const + { + parse_value(m_default_value, *m_store); + } + + bool + has_default() const + { + return m_default; + } + + bool + has_implicit() const + { + return m_implicit; + } + + std::shared_ptr + default_value(const std::string& value) + { + m_default = true; + m_default_value = value; + return shared_from_this(); + } + + std::shared_ptr + implicit_value(const std::string& value) + { + m_implicit = true; + m_implicit_value = value; + return shared_from_this(); + } + + std::shared_ptr + no_implicit_value() + { + m_implicit = false; + return shared_from_this(); + } + + std::string + get_default_value() const + { + return m_default_value; + } + + std::string + get_implicit_value() const + { + return m_implicit_value; + } + + bool + is_boolean() const + { + return std::is_same::value; + } + + const T& + get() const + { + if (m_store == nullptr) + { + return *m_result; + } + else + { + return *m_store; + } + } + + protected: + std::shared_ptr m_result; + T* m_store; + + bool m_default = false; + bool m_implicit = false; + + std::string m_default_value; + std::string m_implicit_value; + }; + + template + class standard_value : public abstract_value + { + public: + using abstract_value::abstract_value; + + std::shared_ptr + clone() const + { + return std::make_shared>(*this); + } + }; + + template <> + class standard_value : public abstract_value + { + public: + ~standard_value() = default; + + standard_value() + { + set_default_and_implicit(); + } + + standard_value(bool* b) + : abstract_value(b) + { + set_default_and_implicit(); + } + + std::shared_ptr + clone() const + { + return std::make_shared>(*this); + } + + private: + + void + set_default_and_implicit() + { + m_default = true; + m_default_value = "false"; + m_implicit = true; + m_implicit_value = "true"; + } + }; + } + + template + std::shared_ptr + value() + { + return std::make_shared>(); + } + + template + std::shared_ptr + value(T& t) + { + return std::make_shared>(&t); + } + + class OptionAdder; + + class OptionDetails + { + public: + OptionDetails + ( + const std::string& short_, + const std::string& long_, + const String& desc, + std::shared_ptr val + ) + : m_short(short_) + , m_long(long_) + , m_desc(desc) + , m_value(val) + , m_count(0) + { + } + + OptionDetails(const OptionDetails& rhs) + : m_desc(rhs.m_desc) + , m_count(rhs.m_count) + { + m_value = rhs.m_value->clone(); + } + + OptionDetails(OptionDetails&& rhs) = default; + + const String& + description() const + { + return m_desc; + } + + const Value& value() const { + return *m_value; + } + + std::shared_ptr + make_storage() const + { + return m_value->clone(); + } + + const std::string& + short_name() const + { + return m_short; + } + + const std::string& + long_name() const + { + return m_long; + } + + private: + std::string m_short; + std::string m_long; + String m_desc; + std::shared_ptr m_value; + int m_count; + }; + + struct HelpOptionDetails + { + std::string s; + std::string l; + String desc; + bool has_default; + std::string default_value; + bool has_implicit; + std::string implicit_value; + std::string arg_help; + bool is_container; + bool is_boolean; + }; + + struct HelpGroupDetails + { + std::string name; + std::string description; + std::vector options; + }; + + class OptionValue + { + public: + void + parse + ( + std::shared_ptr details, + const std::string& text + ) + { + ensure_value(details); + ++m_count; + m_value->parse(text); + } + + void + parse_default(std::shared_ptr details) + { + ensure_value(details); + m_value->parse(); + } + + size_t + count() const + { + return m_count; + } + + template + const T& + as() const + { + if (m_value == nullptr) { + throw std::domain_error("No value"); + } + +#ifdef CXXOPTS_NO_RTTI + return static_cast&>(*m_value).get(); +#else + return dynamic_cast&>(*m_value).get(); +#endif + } + + private: + void + ensure_value(std::shared_ptr details) + { + if (m_value == nullptr) + { + m_value = details->make_storage(); + } + } + + std::shared_ptr m_value; + size_t m_count = 0; + }; + + class KeyValue + { + public: + KeyValue(std::string key_, std::string value_) + : m_key(std::move(key_)) + , m_value(std::move(value_)) + { + } + + const + std::string& + key() const + { + return m_key; + } + + const + std::string& + value() const + { + return m_value; + } + + template + T + as() const + { + T result; + values::parse_value(m_value, result); + return result; + } + + private: + std::string m_key; + std::string m_value; + }; + + class ParseResult + { + public: + + ParseResult( + const std::shared_ptr< + std::unordered_map> + >, + std::vector, + bool allow_unrecognised, + int&, char**&); + + size_t + count(const std::string& o) const + { + auto iter = m_options->find(o); + if (iter == m_options->end()) + { + return 0; + } + + auto riter = m_results.find(iter->second); + + return riter->second.count(); + } + + const OptionValue& + operator[](const std::string& option) const + { + auto iter = m_options->find(option); + + if (iter == m_options->end()) + { + throw option_not_present_exception(option); + } + + auto riter = m_results.find(iter->second); + + return riter->second; + } + + const std::vector& + arguments() const + { + return m_sequential; + } + + private: + + void + parse(int& argc, char**& argv); + + void + add_to_option(const std::string& option, const std::string& arg); + + bool + consume_positional(std::string a); + + void + parse_option + ( + std::shared_ptr value, + const std::string& name, + const std::string& arg = "" + ); + + void + parse_default(std::shared_ptr details); + + void + checked_parse_arg + ( + int argc, + char* argv[], + int& current, + std::shared_ptr value, + const std::string& name + ); + + const std::shared_ptr< + std::unordered_map> + > m_options; + std::vector m_positional; + std::vector::iterator m_next_positional; + std::unordered_set m_positional_set; + std::unordered_map, OptionValue> m_results; + + bool m_allow_unrecognised; + + std::vector m_sequential; + }; + + class Options + { + typedef std::unordered_map> + OptionMap; + public: + + Options(std::string program, std::string help_string = "") + : m_program(std::move(program)) + , m_help_string(toLocalString(std::move(help_string))) + , m_custom_help("[OPTION...]") + , m_positional_help("positional parameters") + , m_show_positional(false) + , m_allow_unrecognised(false) + , m_options(std::make_shared()) + , m_next_positional(m_positional.end()) + { + } + + Options& + positional_help(std::string help_text) + { + m_positional_help = std::move(help_text); + return *this; + } + + Options& + custom_help(std::string help_text) + { + m_custom_help = std::move(help_text); + return *this; + } + + Options& + show_positional_help() + { + m_show_positional = true; + return *this; + } + + Options& + allow_unrecognised_options() + { + m_allow_unrecognised = true; + return *this; + } + + ParseResult + parse(int& argc, char**& argv); + + OptionAdder + add_options(std::string group = ""); + + void + add_option + ( + const std::string& group, + const std::string& s, + const std::string& l, + std::string desc, + std::shared_ptr value, + std::string arg_help + ); + + //parse positional arguments into the given option + void + parse_positional(std::string option); + + void + parse_positional(std::vector options); + + void + parse_positional(std::initializer_list options); + + template + void + parse_positional(Iterator begin, Iterator end) { + parse_positional(std::vector{begin, end}); + } + + std::string + help(const std::vector& groups = {}) const; + + const std::vector + groups() const; + + const HelpGroupDetails& + group_help(const std::string& group) const; + + private: + + void + add_one_option + ( + const std::string& option, + std::shared_ptr details + ); + + String + help_one_group(const std::string& group) const; + + void + generate_group_help + ( + String& result, + const std::vector& groups + ) const; + + void + generate_all_groups_help(String& result) const; + + std::string m_program; + String m_help_string; + std::string m_custom_help; + std::string m_positional_help; + bool m_show_positional; + bool m_allow_unrecognised; + + std::shared_ptr m_options; + std::vector m_positional; + std::vector::iterator m_next_positional; + std::unordered_set m_positional_set; + + //mapping from groups to help options + std::map m_help; + }; + + class OptionAdder + { + public: + + OptionAdder(Options& options, std::string group) + : m_options(options), m_group(std::move(group)) + { + } + + OptionAdder& + operator() + ( + const std::string& opts, + const std::string& desc, + std::shared_ptr value + = ::cxxopts::value(), + std::string arg_help = "" + ); + + private: + Options& m_options; + std::string m_group; + }; + + namespace + { + constexpr int OPTION_LONGEST = 30; + constexpr int OPTION_DESC_GAP = 2; + + std::basic_regex option_matcher + ("--([[:alnum:]][-_[:alnum:]]+)(=(.*))?|-([[:alnum:]]+)"); + + std::basic_regex option_specifier + ("(([[:alnum:]]),)?[ ]*([[:alnum:]][-_[:alnum:]]*)?"); + + String + format_option + ( + const HelpOptionDetails& o + ) + { + auto& s = o.s; + auto& l = o.l; + + String result = " "; + + if (s.size() > 0) + { + result += "-" + toLocalString(s) + ","; + } + else + { + result += " "; + } + + if (l.size() > 0) + { + result += " --" + toLocalString(l); + } + + auto arg = o.arg_help.size() > 0 ? toLocalString(o.arg_help) : "arg"; + + if (!o.is_boolean) + { + if (o.has_implicit) + { + result += " [=" + arg + "(=" + toLocalString(o.implicit_value) + ")]"; + } + else + { + result += " " + arg; + } + } + + return result; + } + + String + format_description + ( + const HelpOptionDetails& o, + size_t start, + size_t width + ) + { + auto desc = o.desc; + + if (o.has_default && (!o.is_boolean || o.default_value != "false")) + { + desc += toLocalString(" (default: " + o.default_value + ")"); + } + + String result; + + auto current = std::begin(desc); + auto startLine = current; + auto lastSpace = current; + + auto size = size_t{}; + + while (current != std::end(desc)) + { + if (*current == ' ') + { + lastSpace = current; + } + + if (*current == '\n') + { + startLine = current + 1; + lastSpace = startLine; + } + else if (size > width) + { + if (lastSpace == startLine) + { + stringAppend(result, startLine, current + 1); + stringAppend(result, "\n"); + stringAppend(result, start, ' '); + startLine = current + 1; + lastSpace = startLine; + } + else + { + stringAppend(result, startLine, lastSpace); + stringAppend(result, "\n"); + stringAppend(result, start, ' '); + startLine = lastSpace + 1; + } + size = 0; + } + else + { + ++size; + } + + ++current; + } + + //append whatever is left + stringAppend(result, startLine, current); + + return result; + } + } + +inline +ParseResult::ParseResult +( + const std::shared_ptr< + std::unordered_map> + > options, + std::vector positional, + bool allow_unrecognised, + int& argc, char**& argv +) +: m_options(options) +, m_positional(std::move(positional)) +, m_next_positional(m_positional.begin()) +, m_allow_unrecognised(allow_unrecognised) +{ + parse(argc, argv); +} + +inline +OptionAdder +Options::add_options(std::string group) +{ + return OptionAdder(*this, std::move(group)); +} + +inline +OptionAdder& +OptionAdder::operator() +( + const std::string& opts, + const std::string& desc, + std::shared_ptr value, + std::string arg_help +) +{ + std::match_results result; + std::regex_match(opts.c_str(), result, option_specifier); + + if (result.empty()) + { + throw invalid_option_format_error(opts); + } + + const auto& short_match = result[2]; + const auto& long_match = result[3]; + + if (!short_match.length() && !long_match.length()) + { + throw invalid_option_format_error(opts); + } else if (long_match.length() == 1 && short_match.length()) + { + throw invalid_option_format_error(opts); + } + + auto option_names = [] + ( + const std::sub_match& short_, + const std::sub_match& long_ + ) + { + if (long_.length() == 1) + { + return std::make_tuple(long_.str(), short_.str()); + } + else + { + return std::make_tuple(short_.str(), long_.str()); + } + }(short_match, long_match); + + m_options.add_option + ( + m_group, + std::get<0>(option_names), + std::get<1>(option_names), + desc, + value, + std::move(arg_help) + ); + + return *this; +} + +inline +void +ParseResult::parse_default(std::shared_ptr details) +{ + m_results[details].parse_default(details); +} + +inline +void +ParseResult::parse_option +( + std::shared_ptr value, + const std::string& /*name*/, + const std::string& arg +) +{ + auto& result = m_results[value]; + result.parse(value, arg); + + m_sequential.emplace_back(value->long_name(), arg); +} + +inline +void +ParseResult::checked_parse_arg +( + int argc, + char* argv[], + int& current, + std::shared_ptr value, + const std::string& name +) +{ + if (current + 1 >= argc) + { + if (value->value().has_implicit()) + { + parse_option(value, name, value->value().get_implicit_value()); + } + else + { + throw missing_argument_exception(name); + } + } + else + { + if (value->value().has_implicit()) + { + parse_option(value, name, value->value().get_implicit_value()); + } + else + { + parse_option(value, name, argv[current + 1]); + ++current; + } + } +} + +inline +void +ParseResult::add_to_option(const std::string& option, const std::string& arg) +{ + auto iter = m_options->find(option); + + if (iter == m_options->end()) + { + throw option_not_exists_exception(option); + } + + parse_option(iter->second, option, arg); +} + +inline +bool +ParseResult::consume_positional(std::string a) +{ + while (m_next_positional != m_positional.end()) + { + auto iter = m_options->find(*m_next_positional); + if (iter != m_options->end()) + { + auto& result = m_results[iter->second]; + if (!iter->second->value().is_container()) + { + if (result.count() == 0) + { + add_to_option(*m_next_positional, a); + ++m_next_positional; + return true; + } + else + { + ++m_next_positional; + continue; + } + } + else + { + add_to_option(*m_next_positional, a); + return true; + } + } + else + { + throw option_not_exists_exception(*m_next_positional); + } + } + + return false; +} + +inline +void +Options::parse_positional(std::string option) +{ + parse_positional(std::vector{std::move(option)}); +} + +inline +void +Options::parse_positional(std::vector options) +{ + m_positional = std::move(options); + m_next_positional = m_positional.begin(); + + m_positional_set.insert(m_positional.begin(), m_positional.end()); +} + +inline +void +Options::parse_positional(std::initializer_list options) +{ + parse_positional(std::vector(std::move(options))); +} + +inline +ParseResult +Options::parse(int& argc, char**& argv) +{ + ParseResult result(m_options, m_positional, m_allow_unrecognised, argc, argv); + return result; +} + +inline +void +ParseResult::parse(int& argc, char**& argv) +{ + int current = 1; + + int nextKeep = 1; + + bool consume_remaining = false; + + while (current != argc) + { + if (strcmp(argv[current], "--") == 0) + { + consume_remaining = true; + ++current; + break; + } + + std::match_results result; + std::regex_match(argv[current], result, option_matcher); + + if (result.empty()) + { + //not a flag + + // but if it starts with a `-`, then it's an error + if (argv[current][0] == '-' && argv[current][1] != '\0') { + if (!m_allow_unrecognised) { + throw option_syntax_exception(argv[current]); + } + } + + //if true is returned here then it was consumed, otherwise it is + //ignored + if (consume_positional(argv[current])) + { + } + else + { + argv[nextKeep] = argv[current]; + ++nextKeep; + } + //if we return from here then it was parsed successfully, so continue + } + else + { + //short or long option? + if (result[4].length() != 0) + { + const std::string& s = result[4]; + + for (std::size_t i = 0; i != s.size(); ++i) + { + std::string name(1, s[i]); + auto iter = m_options->find(name); + + if (iter == m_options->end()) + { + if (m_allow_unrecognised) + { + continue; + } + else + { + //error + throw option_not_exists_exception(name); + } + } + + auto value = iter->second; + + if (i + 1 == s.size()) + { + //it must be the last argument + checked_parse_arg(argc, argv, current, value, name); + } + else if (value->value().has_implicit()) + { + parse_option(value, name, value->value().get_implicit_value()); + } + else + { + //error + throw option_requires_argument_exception(name); + } + } + } + else if (result[1].length() != 0) + { + const std::string& name = result[1]; + + auto iter = m_options->find(name); + + if (iter == m_options->end()) + { + if (m_allow_unrecognised) + { + // keep unrecognised options in argument list, skip to next argument + argv[nextKeep] = argv[current]; + ++nextKeep; + ++current; + continue; + } + else + { + //error + throw option_not_exists_exception(name); + } + } + + auto opt = iter->second; + + //equals provided for long option? + if (result[2].length() != 0) + { + //parse the option given + + parse_option(opt, name, result[3]); + } + else + { + //parse the next argument + checked_parse_arg(argc, argv, current, opt, name); + } + } + + } + + ++current; + } + + for (auto& opt : *m_options) + { + auto& detail = opt.second; + auto& value = detail->value(); + + auto& store = m_results[detail]; + + if(!store.count() && value.has_default()){ + parse_default(detail); + } + } + + if (consume_remaining) + { + while (current < argc) + { + if (!consume_positional(argv[current])) { + break; + } + ++current; + } + + //adjust argv for any that couldn't be swallowed + while (current != argc) { + argv[nextKeep] = argv[current]; + ++nextKeep; + ++current; + } + } + + argc = nextKeep; + +} + +inline +void +Options::add_option +( + const std::string& group, + const std::string& s, + const std::string& l, + std::string desc, + std::shared_ptr value, + std::string arg_help +) +{ + auto stringDesc = toLocalString(std::move(desc)); + auto option = std::make_shared(s, l, stringDesc, value); + + if (s.size() > 0) + { + add_one_option(s, option); + } + + if (l.size() > 0) + { + add_one_option(l, option); + } + + //add the help details + auto& options = m_help[group]; + + options.options.emplace_back(HelpOptionDetails{s, l, stringDesc, + value->has_default(), value->get_default_value(), + value->has_implicit(), value->get_implicit_value(), + std::move(arg_help), + value->is_container(), + value->is_boolean()}); +} + +inline +void +Options::add_one_option +( + const std::string& option, + std::shared_ptr details +) +{ + auto in = m_options->emplace(option, details); + + if (!in.second) + { + throw option_exists_error(option); + } +} + +inline +String +Options::help_one_group(const std::string& g) const +{ + typedef std::vector> OptionHelp; + + auto group = m_help.find(g); + if (group == m_help.end()) + { + return ""; + } + + OptionHelp format; + + size_t longest = 0; + + String result; + + if (!g.empty()) + { + result += toLocalString(" " + g + " options:\n"); + } + + for (const auto& o : group->second.options) + { + if (m_positional_set.find(o.l) != m_positional_set.end() && + !m_show_positional) + { + continue; + } + + auto s = format_option(o); + longest = (std::max)(longest, stringLength(s)); + format.push_back(std::make_pair(s, String())); + } + + longest = (std::min)(longest, static_cast(OPTION_LONGEST)); + + //widest allowed description + auto allowed = size_t{76} - longest - OPTION_DESC_GAP; + + auto fiter = format.begin(); + for (const auto& o : group->second.options) + { + if (m_positional_set.find(o.l) != m_positional_set.end() && + !m_show_positional) + { + continue; + } + + auto d = format_description(o, longest + OPTION_DESC_GAP, allowed); + + result += fiter->first; + if (stringLength(fiter->first) > longest) + { + result += '\n'; + result += toLocalString(std::string(longest + OPTION_DESC_GAP, ' ')); + } + else + { + result += toLocalString(std::string(longest + OPTION_DESC_GAP - + stringLength(fiter->first), + ' ')); + } + result += d; + result += '\n'; + + ++fiter; + } + + return result; +} + +inline +void +Options::generate_group_help +( + String& result, + const std::vector& print_groups +) const +{ + for (size_t i = 0; i != print_groups.size(); ++i) + { + const String& group_help_text = help_one_group(print_groups[i]); + if (empty(group_help_text)) + { + continue; + } + result += group_help_text; + if (i < print_groups.size() - 1) + { + result += '\n'; + } + } +} + +inline +void +Options::generate_all_groups_help(String& result) const +{ + std::vector all_groups; + all_groups.reserve(m_help.size()); + + for (auto& group : m_help) + { + all_groups.push_back(group.first); + } + + generate_group_help(result, all_groups); +} + +inline +std::string +Options::help(const std::vector& help_groups) const +{ + String result = m_help_string + "\nUsage:\n " + + toLocalString(m_program) + " " + toLocalString(m_custom_help); + + if (m_positional.size() > 0 && m_positional_help.size() > 0) { + result += " " + toLocalString(m_positional_help); + } + + result += "\n\n"; + + if (help_groups.size() == 0) + { + generate_all_groups_help(result); + } + else + { + generate_group_help(result, help_groups); + } + + return toUTF8String(result); +} + +inline +const std::vector +Options::groups() const +{ + std::vector g; + + std::transform( + m_help.begin(), + m_help.end(), + std::back_inserter(g), + [] (const std::map::value_type& pair) + { + return pair.first; + } + ); + + return g; +} + +inline +const HelpGroupDetails& +Options::group_help(const std::string& group) const +{ + return m_help.at(group); +} + +} + +#endif //CXXOPTS_HPP_INCLUDED diff --git a/EuclidEmulator2/cxxopts-2.2.0/src/.gitignore b/EuclidEmulator2/cxxopts-2.2.0/src/.gitignore new file mode 100755 index 00000000..33a9488b --- /dev/null +++ b/EuclidEmulator2/cxxopts-2.2.0/src/.gitignore @@ -0,0 +1 @@ +example diff --git a/EuclidEmulator2/cxxopts-2.2.0/src/CMakeLists.txt b/EuclidEmulator2/cxxopts-2.2.0/src/CMakeLists.txt new file mode 100755 index 00000000..eec97b74 --- /dev/null +++ b/EuclidEmulator2/cxxopts-2.2.0/src/CMakeLists.txt @@ -0,0 +1,24 @@ +# Copyright (c) 2014 Jarryd Beck +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. + +if(CXXOPTS_BUILD_EXAMPLES) + add_executable(example example.cpp) + target_link_libraries(example cxxopts) +endif() diff --git a/EuclidEmulator2/cxxopts-2.2.0/src/example.cpp b/EuclidEmulator2/cxxopts-2.2.0/src/example.cpp new file mode 100755 index 00000000..d3bbb0ad --- /dev/null +++ b/EuclidEmulator2/cxxopts-2.2.0/src/example.cpp @@ -0,0 +1,162 @@ +/* + +Copyright (c) 2014 Jarryd Beck + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + +*/ + +#include + +#include "cxxopts.hpp" + +cxxopts::ParseResult +parse(int argc, char* argv[]) +{ + try + { + cxxopts::Options options(argv[0], " - example command line options"); + options + .positional_help("[optional args]") + .show_positional_help(); + + bool apple = false; + + options + .allow_unrecognised_options() + .add_options() + ("a,apple", "an apple", cxxopts::value(apple)) + ("b,bob", "Bob") + ("t,true", "True", cxxopts::value()->default_value("true")) + ("f, file", "File", cxxopts::value>(), "FILE") + ("i,input", "Input", cxxopts::value()) + ("o,output", "Output file", cxxopts::value() + ->default_value("a.out")->implicit_value("b.def"), "BIN") + ("positional", + "Positional arguments: these are the arguments that are entered " + "without an option", cxxopts::value>()) + ("long-description", + "thisisareallylongwordthattakesupthewholelineandcannotbebrokenataspace") + ("help", "Print help") + ("int", "An integer", cxxopts::value(), "N") + ("float", "A floating point number", cxxopts::value()) + ("vector", "A list of doubles", cxxopts::value>()) + ("option_that_is_too_long_for_the_help", "A very long option") + #ifdef CXXOPTS_USE_UNICODE + ("unicode", u8"A help option with non-ascii: à. Here the size of the" + " string should be correct") + #endif + ; + + options.add_options("Group") + ("c,compile", "compile") + ("d,drop", "drop", cxxopts::value>()); + + options.parse_positional({"input", "output", "positional"}); + + auto result = options.parse(argc, argv); + + if (result.count("help")) + { + std::cout << options.help({"", "Group"}) << std::endl; + exit(0); + } + + if (apple) + { + std::cout << "Saw option ‘a’ " << result.count("a") << " times " << + std::endl; + } + + if (result.count("b")) + { + std::cout << "Saw option ‘b’" << std::endl; + } + + if (result.count("f")) + { + auto& ff = result["f"].as>(); + std::cout << "Files" << std::endl; + for (const auto& f : ff) + { + std::cout << f << std::endl; + } + } + + if (result.count("input")) + { + std::cout << "Input = " << result["input"].as() + << std::endl; + } + + if (result.count("output")) + { + std::cout << "Output = " << result["output"].as() + << std::endl; + } + + if (result.count("positional")) + { + std::cout << "Positional = {"; + auto& v = result["positional"].as>(); + for (const auto& s : v) { + std::cout << s << ", "; + } + std::cout << "}" << std::endl; + } + + if (result.count("int")) + { + std::cout << "int = " << result["int"].as() << std::endl; + } + + if (result.count("float")) + { + std::cout << "float = " << result["float"].as() << std::endl; + } + + if (result.count("vector")) + { + std::cout << "vector = "; + const auto values = result["vector"].as>(); + for (const auto& v : values) { + std::cout << v << ", "; + } + std::cout << std::endl; + } + + std::cout << "Arguments remain = " << argc << std::endl; + + return result; + + } catch (const cxxopts::OptionException& e) + { + std::cout << "error parsing options: " << e.what() << std::endl; + exit(1); + } +} + +int main(int argc, char* argv[]) +{ + auto result = parse(argc, argv); + auto arguments = result.arguments(); + std::cout << "Saw " << arguments.size() << " arguments" << std::endl; + + return 0; +} diff --git a/EuclidEmulator2/cxxopts-2.2.0/test/.gitignore b/EuclidEmulator2/cxxopts-2.2.0/test/.gitignore new file mode 100755 index 00000000..d2cad1ae --- /dev/null +++ b/EuclidEmulator2/cxxopts-2.2.0/test/.gitignore @@ -0,0 +1 @@ +options_test diff --git a/EuclidEmulator2/cxxopts-2.2.0/test/CMakeLists.txt b/EuclidEmulator2/cxxopts-2.2.0/test/CMakeLists.txt new file mode 100755 index 00000000..19695457 --- /dev/null +++ b/EuclidEmulator2/cxxopts-2.2.0/test/CMakeLists.txt @@ -0,0 +1,35 @@ +if (CXXOPTS_BUILD_TESTS) + add_executable(options_test main.cpp options.cpp) + target_link_libraries(options_test cxxopts) + add_test(options options_test) + + # test if the targets are findable from the build directory + add_test(find-package-test ${CMAKE_CTEST_COMMAND} + -C ${CMAKE_BUILD_TYPE} + --build-and-test + "${CMAKE_CURRENT_SOURCE_DIR}/find-package-test" + "${CMAKE_CURRENT_BINARY_DIR}/find-package-test" + --build-generator ${CMAKE_GENERATOR} + --build-makeprogram ${CMAKE_MAKE_PROGRAM} + --build-options + "-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}" + "-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}" + "-Dcxxopts_DIR=${PROJECT_BINARY_DIR}" + ) + + # test if the targets are findable when add_subdirectory is used + add_test(add-subdirectory-test ${CMAKE_CTEST_COMMAND} + -C ${CMAKE_BUILD_TYPE} + --build-and-test + "${CMAKE_CURRENT_SOURCE_DIR}/add-subdirectory-test" + "${CMAKE_CURRENT_BINARY_DIR}/add-subdirectory-test" + --build-generator ${CMAKE_GENERATOR} + --build-makeprogram ${CMAKE_MAKE_PROGRAM} + --build-options + "-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}" + "-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}" + ) + + add_executable(link_test link_a.cpp link_b.cpp) + target_link_libraries(link_test cxxopts) +endif() diff --git a/EuclidEmulator2/cxxopts-2.2.0/test/add-subdirectory-test/CMakeLists.txt b/EuclidEmulator2/cxxopts-2.2.0/test/add-subdirectory-test/CMakeLists.txt new file mode 100755 index 00000000..6c922992 --- /dev/null +++ b/EuclidEmulator2/cxxopts-2.2.0/test/add-subdirectory-test/CMakeLists.txt @@ -0,0 +1,11 @@ +cmake_minimum_required(VERSION 3.1) + +project(cxxopts-test) + +set(CMAKE_CXX_STANDARD 11) +set(CMAKE_CXX_EXTENSIONS OFF) + +add_subdirectory(../.. cxxopts EXCLUDE_FROM_ALL) + +add_executable(library-test "../../src/example.cpp") +target_link_libraries(library-test cxxopts) diff --git a/EuclidEmulator2/cxxopts-2.2.0/test/catch.hpp b/EuclidEmulator2/cxxopts-2.2.0/test/catch.hpp new file mode 100755 index 00000000..ef9a4632 --- /dev/null +++ b/EuclidEmulator2/cxxopts-2.2.0/test/catch.hpp @@ -0,0 +1,10460 @@ +/* + * Catch v1.5.0 + * Generated: 2016-04-25 18:56:14.308559 + * ---------------------------------------------------------- + * This file has been merged from multiple headers. Please don't edit it directly + * Copyright (c) 2012 Two Blue Cubes Ltd. All rights reserved. + * + * Distributed under the Boost Software License, Version 1.0. (See accompanying + * file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + */ +#ifndef TWOBLUECUBES_SINGLE_INCLUDE_CATCH_HPP_INCLUDED +#define TWOBLUECUBES_SINGLE_INCLUDE_CATCH_HPP_INCLUDED + +#define TWOBLUECUBES_CATCH_HPP_INCLUDED + +#ifdef __clang__ +# pragma clang system_header +#elif defined __GNUC__ +# pragma GCC system_header +#endif + +// #included from: internal/catch_suppress_warnings.h + +#ifdef __clang__ +# ifdef __ICC // icpc defines the __clang__ macro +# pragma warning(push) +# pragma warning(disable: 161 1682) +# else // __ICC +# pragma clang diagnostic ignored "-Wglobal-constructors" +# pragma clang diagnostic ignored "-Wvariadic-macros" +# pragma clang diagnostic ignored "-Wc99-extensions" +# pragma clang diagnostic ignored "-Wunused-variable" +# pragma clang diagnostic push +# pragma clang diagnostic ignored "-Wpadded" +# pragma clang diagnostic ignored "-Wc++98-compat" +# pragma clang diagnostic ignored "-Wc++98-compat-pedantic" +# pragma clang diagnostic ignored "-Wswitch-enum" +# pragma clang diagnostic ignored "-Wcovered-switch-default" +# endif +#elif defined __GNUC__ +# pragma GCC diagnostic ignored "-Wvariadic-macros" +# pragma GCC diagnostic ignored "-Wunused-variable" +# pragma GCC diagnostic push +# pragma GCC diagnostic ignored "-Wpadded" +#endif +#if defined(CATCH_CONFIG_MAIN) || defined(CATCH_CONFIG_RUNNER) +# define CATCH_IMPL +#endif + +#ifdef CATCH_IMPL +# ifndef CLARA_CONFIG_MAIN +# define CLARA_CONFIG_MAIN_NOT_DEFINED +# define CLARA_CONFIG_MAIN +# endif +#endif + +// #included from: internal/catch_notimplemented_exception.h +#define TWOBLUECUBES_CATCH_NOTIMPLEMENTED_EXCEPTION_H_INCLUDED + +// #included from: catch_common.h +#define TWOBLUECUBES_CATCH_COMMON_H_INCLUDED + +#define INTERNAL_CATCH_UNIQUE_NAME_LINE2( name, line ) name##line +#define INTERNAL_CATCH_UNIQUE_NAME_LINE( name, line ) INTERNAL_CATCH_UNIQUE_NAME_LINE2( name, line ) +#ifdef CATCH_CONFIG_COUNTER +# define INTERNAL_CATCH_UNIQUE_NAME( name ) INTERNAL_CATCH_UNIQUE_NAME_LINE( name, __COUNTER__ ) +#else +# define INTERNAL_CATCH_UNIQUE_NAME( name ) INTERNAL_CATCH_UNIQUE_NAME_LINE( name, __LINE__ ) +#endif + +#define INTERNAL_CATCH_STRINGIFY2( expr ) #expr +#define INTERNAL_CATCH_STRINGIFY( expr ) INTERNAL_CATCH_STRINGIFY2( expr ) + +#include +#include +#include + +// #included from: catch_compiler_capabilities.h +#define TWOBLUECUBES_CATCH_COMPILER_CAPABILITIES_HPP_INCLUDED + +// Detect a number of compiler features - mostly C++11/14 conformance - by compiler +// The following features are defined: +// +// CATCH_CONFIG_CPP11_NULLPTR : is nullptr supported? +// CATCH_CONFIG_CPP11_NOEXCEPT : is noexcept supported? +// CATCH_CONFIG_CPP11_GENERATED_METHODS : The delete and default keywords for compiler generated methods +// CATCH_CONFIG_CPP11_IS_ENUM : std::is_enum is supported? +// CATCH_CONFIG_CPP11_TUPLE : std::tuple is supported +// CATCH_CONFIG_CPP11_LONG_LONG : is long long supported? +// CATCH_CONFIG_CPP11_OVERRIDE : is override supported? +// CATCH_CONFIG_CPP11_UNIQUE_PTR : is unique_ptr supported (otherwise use auto_ptr) + +// CATCH_CONFIG_CPP11_OR_GREATER : Is C++11 supported? + +// CATCH_CONFIG_VARIADIC_MACROS : are variadic macros supported? +// CATCH_CONFIG_COUNTER : is the __COUNTER__ macro supported? +// **************** +// Note to maintainers: if new toggles are added please document them +// in configuration.md, too +// **************** + +// In general each macro has a _NO_ form +// (e.g. CATCH_CONFIG_CPP11_NO_NULLPTR) which disables the feature. +// Many features, at point of detection, define an _INTERNAL_ macro, so they +// can be combined, en-mass, with the _NO_ forms later. + +// All the C++11 features can be disabled with CATCH_CONFIG_NO_CPP11 + +#if defined(__cplusplus) && __cplusplus >= 201103L +# define CATCH_CPP11_OR_GREATER +#endif + +#ifdef __clang__ + +# if __has_feature(cxx_nullptr) +# define CATCH_INTERNAL_CONFIG_CPP11_NULLPTR +# endif + +# if __has_feature(cxx_noexcept) +# define CATCH_INTERNAL_CONFIG_CPP11_NOEXCEPT +# endif + +# if defined(CATCH_CPP11_OR_GREATER) +# define CATCH_INTERNAL_SUPPRESS_PARENTHESES_WARNINGS _Pragma( "clang diagnostic ignored \"-Wparentheses\"" ) +# endif + +#endif // __clang__ + +//////////////////////////////////////////////////////////////////////////////// +// Borland +#ifdef __BORLANDC__ + +#endif // __BORLANDC__ + +//////////////////////////////////////////////////////////////////////////////// +// EDG +#ifdef __EDG_VERSION__ + +#endif // __EDG_VERSION__ + +//////////////////////////////////////////////////////////////////////////////// +// Digital Mars +#ifdef __DMC__ + +#endif // __DMC__ + +//////////////////////////////////////////////////////////////////////////////// +// GCC +#ifdef __GNUC__ + +# if __GNUC__ == 4 && __GNUC_MINOR__ >= 6 && defined(__GXX_EXPERIMENTAL_CXX0X__) +# define CATCH_INTERNAL_CONFIG_CPP11_NULLPTR +# endif + +# if !defined(CATCH_INTERNAL_SUPPRESS_PARENTHESES_WARNINGS) && defined(CATCH_CPP11_OR_GREATER) +# define CATCH_INTERNAL_SUPPRESS_PARENTHESES_WARNINGS _Pragma( "GCC diagnostic ignored \"-Wparentheses\"" ) +# endif + +// - otherwise more recent versions define __cplusplus >= 201103L +// and will get picked up below + +#endif // __GNUC__ + +//////////////////////////////////////////////////////////////////////////////// +// Visual C++ +#ifdef _MSC_VER + +#if (_MSC_VER >= 1600) +# define CATCH_INTERNAL_CONFIG_CPP11_NULLPTR +# define CATCH_INTERNAL_CONFIG_CPP11_UNIQUE_PTR +#endif + +#if (_MSC_VER >= 1900 ) // (VC++ 13 (VS2015)) +#define CATCH_INTERNAL_CONFIG_CPP11_NOEXCEPT +#define CATCH_INTERNAL_CONFIG_CPP11_GENERATED_METHODS +#endif + +#endif // _MSC_VER + +//////////////////////////////////////////////////////////////////////////////// + +// Use variadic macros if the compiler supports them +#if ( defined _MSC_VER && _MSC_VER > 1400 && !defined __EDGE__) || \ + ( defined __WAVE__ && __WAVE_HAS_VARIADICS ) || \ + ( defined __GNUC__ && __GNUC__ >= 3 ) || \ + ( !defined __cplusplus && __STDC_VERSION__ >= 199901L || __cplusplus >= 201103L ) + +#define CATCH_INTERNAL_CONFIG_VARIADIC_MACROS + +#endif + +// Use __COUNTER__ if the compiler supports it +#if ( defined _MSC_VER && _MSC_VER >= 1300 ) || \ + ( defined __GNUC__ && __GNUC__ >= 4 && __GNUC_MINOR__ >= 3 ) || \ + ( defined __clang__ && __clang_major__ >= 3 ) + +#define CATCH_INTERNAL_CONFIG_COUNTER + +#endif + +//////////////////////////////////////////////////////////////////////////////// +// C++ language feature support + +// catch all support for C++11 +#if defined(CATCH_CPP11_OR_GREATER) + +# if !defined(CATCH_INTERNAL_CONFIG_CPP11_NULLPTR) +# define CATCH_INTERNAL_CONFIG_CPP11_NULLPTR +# endif + +# ifndef CATCH_INTERNAL_CONFIG_CPP11_NOEXCEPT +# define CATCH_INTERNAL_CONFIG_CPP11_NOEXCEPT +# endif + +# ifndef CATCH_INTERNAL_CONFIG_CPP11_GENERATED_METHODS +# define CATCH_INTERNAL_CONFIG_CPP11_GENERATED_METHODS +# endif + +# ifndef CATCH_INTERNAL_CONFIG_CPP11_IS_ENUM +# define CATCH_INTERNAL_CONFIG_CPP11_IS_ENUM +# endif + +# ifndef CATCH_INTERNAL_CONFIG_CPP11_TUPLE +# define CATCH_INTERNAL_CONFIG_CPP11_TUPLE +# endif + +# ifndef CATCH_INTERNAL_CONFIG_VARIADIC_MACROS +# define CATCH_INTERNAL_CONFIG_VARIADIC_MACROS +# endif + +# if !defined(CATCH_INTERNAL_CONFIG_CPP11_LONG_LONG) +# define CATCH_INTERNAL_CONFIG_CPP11_LONG_LONG +# endif + +# if !defined(CATCH_INTERNAL_CONFIG_CPP11_OVERRIDE) +# define CATCH_INTERNAL_CONFIG_CPP11_OVERRIDE +# endif +# if !defined(CATCH_INTERNAL_CONFIG_CPP11_UNIQUE_PTR) +# define CATCH_INTERNAL_CONFIG_CPP11_UNIQUE_PTR +# endif + +#endif // __cplusplus >= 201103L + +// Now set the actual defines based on the above + anything the user has configured +#if defined(CATCH_INTERNAL_CONFIG_CPP11_NULLPTR) && !defined(CATCH_CONFIG_CPP11_NO_NULLPTR) && !defined(CATCH_CONFIG_CPP11_NULLPTR) && !defined(CATCH_CONFIG_NO_CPP11) +# define CATCH_CONFIG_CPP11_NULLPTR +#endif +#if defined(CATCH_INTERNAL_CONFIG_CPP11_NOEXCEPT) && !defined(CATCH_CONFIG_CPP11_NO_NOEXCEPT) && !defined(CATCH_CONFIG_CPP11_NOEXCEPT) && !defined(CATCH_CONFIG_NO_CPP11) +# define CATCH_CONFIG_CPP11_NOEXCEPT +#endif +#if defined(CATCH_INTERNAL_CONFIG_CPP11_GENERATED_METHODS) && !defined(CATCH_CONFIG_CPP11_NO_GENERATED_METHODS) && !defined(CATCH_CONFIG_CPP11_GENERATED_METHODS) && !defined(CATCH_CONFIG_NO_CPP11) +# define CATCH_CONFIG_CPP11_GENERATED_METHODS +#endif +#if defined(CATCH_INTERNAL_CONFIG_CPP11_IS_ENUM) && !defined(CATCH_CONFIG_CPP11_NO_IS_ENUM) && !defined(CATCH_CONFIG_CPP11_IS_ENUM) && !defined(CATCH_CONFIG_NO_CPP11) +# define CATCH_CONFIG_CPP11_IS_ENUM +#endif +#if defined(CATCH_INTERNAL_CONFIG_CPP11_TUPLE) && !defined(CATCH_CONFIG_CPP11_NO_TUPLE) && !defined(CATCH_CONFIG_CPP11_TUPLE) && !defined(CATCH_CONFIG_NO_CPP11) +# define CATCH_CONFIG_CPP11_TUPLE +#endif +#if defined(CATCH_INTERNAL_CONFIG_VARIADIC_MACROS) && !defined(CATCH_CONFIG_NO_VARIADIC_MACROS) && !defined(CATCH_CONFIG_VARIADIC_MACROS) +# define CATCH_CONFIG_VARIADIC_MACROS +#endif +#if defined(CATCH_INTERNAL_CONFIG_CPP11_LONG_LONG) && !defined(CATCH_CONFIG_NO_LONG_LONG) && !defined(CATCH_CONFIG_CPP11_LONG_LONG) && !defined(CATCH_CONFIG_NO_CPP11) +# define CATCH_CONFIG_CPP11_LONG_LONG +#endif +#if defined(CATCH_INTERNAL_CONFIG_CPP11_OVERRIDE) && !defined(CATCH_CONFIG_NO_OVERRIDE) && !defined(CATCH_CONFIG_CPP11_OVERRIDE) && !defined(CATCH_CONFIG_NO_CPP11) +# define CATCH_CONFIG_CPP11_OVERRIDE +#endif +#if defined(CATCH_INTERNAL_CONFIG_CPP11_UNIQUE_PTR) && !defined(CATCH_CONFIG_NO_UNIQUE_PTR) && !defined(CATCH_CONFIG_CPP11_UNIQUE_PTR) && !defined(CATCH_CONFIG_NO_CPP11) +# define CATCH_CONFIG_CPP11_UNIQUE_PTR +#endif +#if defined(CATCH_INTERNAL_CONFIG_COUNTER) && !defined(CATCH_CONFIG_NO_COUNTER) && !defined(CATCH_CONFIG_COUNTER) +# define CATCH_CONFIG_COUNTER +#endif + +#if !defined(CATCH_INTERNAL_SUPPRESS_PARENTHESES_WARNINGS) +# define CATCH_INTERNAL_SUPPRESS_PARENTHESES_WARNINGS +#endif + +// noexcept support: +#if defined(CATCH_CONFIG_CPP11_NOEXCEPT) && !defined(CATCH_NOEXCEPT) +# define CATCH_NOEXCEPT noexcept +# define CATCH_NOEXCEPT_IS(x) noexcept(x) +#else +# define CATCH_NOEXCEPT throw() +# define CATCH_NOEXCEPT_IS(x) +#endif + +// nullptr support +#ifdef CATCH_CONFIG_CPP11_NULLPTR +# define CATCH_NULL nullptr +#else +# define CATCH_NULL NULL +#endif + +// override support +#ifdef CATCH_CONFIG_CPP11_OVERRIDE +# define CATCH_OVERRIDE override +#else +# define CATCH_OVERRIDE +#endif + +// unique_ptr support +#ifdef CATCH_CONFIG_CPP11_UNIQUE_PTR +# define CATCH_AUTO_PTR( T ) std::unique_ptr +#else +# define CATCH_AUTO_PTR( T ) std::auto_ptr +#endif + +namespace Catch { + + struct IConfig; + + struct CaseSensitive { enum Choice { + Yes, + No + }; }; + + class NonCopyable { +#ifdef CATCH_CONFIG_CPP11_GENERATED_METHODS + NonCopyable( NonCopyable const& ) = delete; + NonCopyable( NonCopyable && ) = delete; + NonCopyable& operator = ( NonCopyable const& ) = delete; + NonCopyable& operator = ( NonCopyable && ) = delete; +#else + NonCopyable( NonCopyable const& info ); + NonCopyable& operator = ( NonCopyable const& ); +#endif + + protected: + NonCopyable() {} + virtual ~NonCopyable(); + }; + + class SafeBool { + public: + typedef void (SafeBool::*type)() const; + + static type makeSafe( bool value ) { + return value ? &SafeBool::trueValue : 0; + } + private: + void trueValue() const {} + }; + + template + inline void deleteAll( ContainerT& container ) { + typename ContainerT::const_iterator it = container.begin(); + typename ContainerT::const_iterator itEnd = container.end(); + for(; it != itEnd; ++it ) + delete *it; + } + template + inline void deleteAllValues( AssociativeContainerT& container ) { + typename AssociativeContainerT::const_iterator it = container.begin(); + typename AssociativeContainerT::const_iterator itEnd = container.end(); + for(; it != itEnd; ++it ) + delete it->second; + } + + bool startsWith( std::string const& s, std::string const& prefix ); + bool endsWith( std::string const& s, std::string const& suffix ); + bool contains( std::string const& s, std::string const& infix ); + void toLowerInPlace( std::string& s ); + std::string toLower( std::string const& s ); + std::string trim( std::string const& str ); + bool replaceInPlace( std::string& str, std::string const& replaceThis, std::string const& withThis ); + + struct pluralise { + pluralise( std::size_t count, std::string const& label ); + + friend std::ostream& operator << ( std::ostream& os, pluralise const& pluraliser ); + + std::size_t m_count; + std::string m_label; + }; + + struct SourceLineInfo { + + SourceLineInfo(); + SourceLineInfo( char const* _file, std::size_t _line ); + SourceLineInfo( SourceLineInfo const& other ); +# ifdef CATCH_CONFIG_CPP11_GENERATED_METHODS + SourceLineInfo( SourceLineInfo && ) = default; + SourceLineInfo& operator = ( SourceLineInfo const& ) = default; + SourceLineInfo& operator = ( SourceLineInfo && ) = default; +# endif + bool empty() const; + bool operator == ( SourceLineInfo const& other ) const; + bool operator < ( SourceLineInfo const& other ) const; + + std::string file; + std::size_t line; + }; + + std::ostream& operator << ( std::ostream& os, SourceLineInfo const& info ); + + // This is just here to avoid compiler warnings with macro constants and boolean literals + inline bool isTrue( bool value ){ return value; } + inline bool alwaysTrue() { return true; } + inline bool alwaysFalse() { return false; } + + void throwLogicError( std::string const& message, SourceLineInfo const& locationInfo ); + + void seedRng( IConfig const& config ); + unsigned int rngSeed(); + + // Use this in variadic streaming macros to allow + // >> +StreamEndStop + // as well as + // >> stuff +StreamEndStop + struct StreamEndStop { + std::string operator+() { + return std::string(); + } + }; + template + T const& operator + ( T const& value, StreamEndStop ) { + return value; + } +} + +#define CATCH_INTERNAL_LINEINFO ::Catch::SourceLineInfo( __FILE__, static_cast( __LINE__ ) ) +#define CATCH_INTERNAL_ERROR( msg ) ::Catch::throwLogicError( msg, CATCH_INTERNAL_LINEINFO ); + +#include + +namespace Catch { + + class NotImplementedException : public std::exception + { + public: + NotImplementedException( SourceLineInfo const& lineInfo ); + NotImplementedException( NotImplementedException const& ) {} + + virtual ~NotImplementedException() CATCH_NOEXCEPT {} + + virtual const char* what() const CATCH_NOEXCEPT; + + private: + std::string m_what; + SourceLineInfo m_lineInfo; + }; + +} // end namespace Catch + +/////////////////////////////////////////////////////////////////////////////// +#define CATCH_NOT_IMPLEMENTED throw Catch::NotImplementedException( CATCH_INTERNAL_LINEINFO ) + +// #included from: internal/catch_context.h +#define TWOBLUECUBES_CATCH_CONTEXT_H_INCLUDED + +// #included from: catch_interfaces_generators.h +#define TWOBLUECUBES_CATCH_INTERFACES_GENERATORS_H_INCLUDED + +#include + +namespace Catch { + + struct IGeneratorInfo { + virtual ~IGeneratorInfo(); + virtual bool moveNext() = 0; + virtual std::size_t getCurrentIndex() const = 0; + }; + + struct IGeneratorsForTest { + virtual ~IGeneratorsForTest(); + + virtual IGeneratorInfo& getGeneratorInfo( std::string const& fileInfo, std::size_t size ) = 0; + virtual bool moveNext() = 0; + }; + + IGeneratorsForTest* createGeneratorsForTest(); + +} // end namespace Catch + +// #included from: catch_ptr.hpp +#define TWOBLUECUBES_CATCH_PTR_HPP_INCLUDED + +#ifdef __clang__ +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wpadded" +#endif + +namespace Catch { + + // An intrusive reference counting smart pointer. + // T must implement addRef() and release() methods + // typically implementing the IShared interface + template + class Ptr { + public: + Ptr() : m_p( CATCH_NULL ){} + Ptr( T* p ) : m_p( p ){ + if( m_p ) + m_p->addRef(); + } + Ptr( Ptr const& other ) : m_p( other.m_p ){ + if( m_p ) + m_p->addRef(); + } + ~Ptr(){ + if( m_p ) + m_p->release(); + } + void reset() { + if( m_p ) + m_p->release(); + m_p = CATCH_NULL; + } + Ptr& operator = ( T* p ){ + Ptr temp( p ); + swap( temp ); + return *this; + } + Ptr& operator = ( Ptr const& other ){ + Ptr temp( other ); + swap( temp ); + return *this; + } + void swap( Ptr& other ) { std::swap( m_p, other.m_p ); } + T* get() const{ return m_p; } + T& operator*() const { return *m_p; } + T* operator->() const { return m_p; } + bool operator !() const { return m_p == CATCH_NULL; } + operator SafeBool::type() const { return SafeBool::makeSafe( m_p != CATCH_NULL ); } + + private: + T* m_p; + }; + + struct IShared : NonCopyable { + virtual ~IShared(); + virtual void addRef() const = 0; + virtual void release() const = 0; + }; + + template + struct SharedImpl : T { + + SharedImpl() : m_rc( 0 ){} + + virtual void addRef() const { + ++m_rc; + } + virtual void release() const { + if( --m_rc == 0 ) + delete this; + } + + mutable unsigned int m_rc; + }; + +} // end namespace Catch + +#ifdef __clang__ +#pragma clang diagnostic pop +#endif + +#include +#include +#include + +namespace Catch { + + class TestCase; + class Stream; + struct IResultCapture; + struct IRunner; + struct IGeneratorsForTest; + struct IConfig; + + struct IContext + { + virtual ~IContext(); + + virtual IResultCapture* getResultCapture() = 0; + virtual IRunner* getRunner() = 0; + virtual size_t getGeneratorIndex( std::string const& fileInfo, size_t totalSize ) = 0; + virtual bool advanceGeneratorsForCurrentTest() = 0; + virtual Ptr getConfig() const = 0; + }; + + struct IMutableContext : IContext + { + virtual ~IMutableContext(); + virtual void setResultCapture( IResultCapture* resultCapture ) = 0; + virtual void setRunner( IRunner* runner ) = 0; + virtual void setConfig( Ptr const& config ) = 0; + }; + + IContext& getCurrentContext(); + IMutableContext& getCurrentMutableContext(); + void cleanUpContext(); + Stream createStream( std::string const& streamName ); + +} + +// #included from: internal/catch_test_registry.hpp +#define TWOBLUECUBES_CATCH_TEST_REGISTRY_HPP_INCLUDED + +// #included from: catch_interfaces_testcase.h +#define TWOBLUECUBES_CATCH_INTERFACES_TESTCASE_H_INCLUDED + +#include + +namespace Catch { + + class TestSpec; + + struct ITestCase : IShared { + virtual void invoke () const = 0; + protected: + virtual ~ITestCase(); + }; + + class TestCase; + struct IConfig; + + struct ITestCaseRegistry { + virtual ~ITestCaseRegistry(); + virtual std::vector const& getAllTests() const = 0; + virtual std::vector const& getAllTestsSorted( IConfig const& config ) const = 0; + }; + + bool matchTest( TestCase const& testCase, TestSpec const& testSpec, IConfig const& config ); + std::vector filterTests( std::vector const& testCases, TestSpec const& testSpec, IConfig const& config ); + std::vector const& getAllTestCasesSorted( IConfig const& config ); + +} + +namespace Catch { + +template +class MethodTestCase : public SharedImpl { + +public: + MethodTestCase( void (C::*method)() ) : m_method( method ) {} + + virtual void invoke() const { + C obj; + (obj.*m_method)(); + } + +private: + virtual ~MethodTestCase() {} + + void (C::*m_method)(); +}; + +typedef void(*TestFunction)(); + +struct NameAndDesc { + NameAndDesc( const char* _name = "", const char* _description= "" ) + : name( _name ), description( _description ) + {} + + const char* name; + const char* description; +}; + +void registerTestCase + ( ITestCase* testCase, + char const* className, + NameAndDesc const& nameAndDesc, + SourceLineInfo const& lineInfo ); + +struct AutoReg { + + AutoReg + ( TestFunction function, + SourceLineInfo const& lineInfo, + NameAndDesc const& nameAndDesc ); + + template + AutoReg + ( void (C::*method)(), + char const* className, + NameAndDesc const& nameAndDesc, + SourceLineInfo const& lineInfo ) { + + registerTestCase + ( new MethodTestCase( method ), + className, + nameAndDesc, + lineInfo ); + } + + ~AutoReg(); + +private: + AutoReg( AutoReg const& ); + void operator= ( AutoReg const& ); +}; + +void registerTestCaseFunction + ( TestFunction function, + SourceLineInfo const& lineInfo, + NameAndDesc const& nameAndDesc ); + +} // end namespace Catch + +#ifdef CATCH_CONFIG_VARIADIC_MACROS + /////////////////////////////////////////////////////////////////////////////// + #define INTERNAL_CATCH_TESTCASE2( TestName, ... ) \ + static void TestName(); \ + namespace{ Catch::AutoReg INTERNAL_CATCH_UNIQUE_NAME( autoRegistrar )( &TestName, CATCH_INTERNAL_LINEINFO, Catch::NameAndDesc( __VA_ARGS__ ) ); }\ + static void TestName() + #define INTERNAL_CATCH_TESTCASE( ... ) \ + INTERNAL_CATCH_TESTCASE2( INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_S_T____ ), __VA_ARGS__ ) + + /////////////////////////////////////////////////////////////////////////////// + #define INTERNAL_CATCH_METHOD_AS_TEST_CASE( QualifiedMethod, ... ) \ + namespace{ Catch::AutoReg INTERNAL_CATCH_UNIQUE_NAME( autoRegistrar )( &QualifiedMethod, "&" #QualifiedMethod, Catch::NameAndDesc( __VA_ARGS__ ), CATCH_INTERNAL_LINEINFO ); } + + /////////////////////////////////////////////////////////////////////////////// + #define INTERNAL_CATCH_TEST_CASE_METHOD2( TestName, ClassName, ... )\ + namespace{ \ + struct TestName : ClassName{ \ + void test(); \ + }; \ + Catch::AutoReg INTERNAL_CATCH_UNIQUE_NAME( autoRegistrar ) ( &TestName::test, #ClassName, Catch::NameAndDesc( __VA_ARGS__ ), CATCH_INTERNAL_LINEINFO ); \ + } \ + void TestName::test() + #define INTERNAL_CATCH_TEST_CASE_METHOD( ClassName, ... ) \ + INTERNAL_CATCH_TEST_CASE_METHOD2( INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_S_T____ ), ClassName, __VA_ARGS__ ) + + /////////////////////////////////////////////////////////////////////////////// + #define INTERNAL_CATCH_REGISTER_TESTCASE( Function, ... ) \ + Catch::AutoReg( Function, CATCH_INTERNAL_LINEINFO, Catch::NameAndDesc( __VA_ARGS__ ) ); + +#else + /////////////////////////////////////////////////////////////////////////////// + #define INTERNAL_CATCH_TESTCASE2( TestName, Name, Desc ) \ + static void TestName(); \ + namespace{ Catch::AutoReg INTERNAL_CATCH_UNIQUE_NAME( autoRegistrar )( &TestName, CATCH_INTERNAL_LINEINFO, Catch::NameAndDesc( Name, Desc ) ); }\ + static void TestName() + #define INTERNAL_CATCH_TESTCASE( Name, Desc ) \ + INTERNAL_CATCH_TESTCASE2( INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_S_T____ ), Name, Desc ) + + /////////////////////////////////////////////////////////////////////////////// + #define INTERNAL_CATCH_METHOD_AS_TEST_CASE( QualifiedMethod, Name, Desc ) \ + namespace{ Catch::AutoReg INTERNAL_CATCH_UNIQUE_NAME( autoRegistrar )( &QualifiedMethod, "&" #QualifiedMethod, Catch::NameAndDesc( Name, Desc ), CATCH_INTERNAL_LINEINFO ); } + + /////////////////////////////////////////////////////////////////////////////// + #define INTERNAL_CATCH_TEST_CASE_METHOD2( TestCaseName, ClassName, TestName, Desc )\ + namespace{ \ + struct TestCaseName : ClassName{ \ + void test(); \ + }; \ + Catch::AutoReg INTERNAL_CATCH_UNIQUE_NAME( autoRegistrar ) ( &TestCaseName::test, #ClassName, Catch::NameAndDesc( TestName, Desc ), CATCH_INTERNAL_LINEINFO ); \ + } \ + void TestCaseName::test() + #define INTERNAL_CATCH_TEST_CASE_METHOD( ClassName, TestName, Desc )\ + INTERNAL_CATCH_TEST_CASE_METHOD2( INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_S_T____ ), ClassName, TestName, Desc ) + + /////////////////////////////////////////////////////////////////////////////// + #define INTERNAL_CATCH_REGISTER_TESTCASE( Function, Name, Desc ) \ + Catch::AutoReg( Function, CATCH_INTERNAL_LINEINFO, Catch::NameAndDesc( Name, Desc ) ); +#endif + +// #included from: internal/catch_capture.hpp +#define TWOBLUECUBES_CATCH_CAPTURE_HPP_INCLUDED + +// #included from: catch_result_builder.h +#define TWOBLUECUBES_CATCH_RESULT_BUILDER_H_INCLUDED + +// #included from: catch_result_type.h +#define TWOBLUECUBES_CATCH_RESULT_TYPE_H_INCLUDED + +namespace Catch { + + // ResultWas::OfType enum + struct ResultWas { enum OfType { + Unknown = -1, + Ok = 0, + Info = 1, + Warning = 2, + + FailureBit = 0x10, + + ExpressionFailed = FailureBit | 1, + ExplicitFailure = FailureBit | 2, + + Exception = 0x100 | FailureBit, + + ThrewException = Exception | 1, + DidntThrowException = Exception | 2, + + FatalErrorCondition = 0x200 | FailureBit + + }; }; + + inline bool isOk( ResultWas::OfType resultType ) { + return ( resultType & ResultWas::FailureBit ) == 0; + } + inline bool isJustInfo( int flags ) { + return flags == ResultWas::Info; + } + + // ResultDisposition::Flags enum + struct ResultDisposition { enum Flags { + Normal = 0x01, + + ContinueOnFailure = 0x02, // Failures fail test, but execution continues + FalseTest = 0x04, // Prefix expression with ! + SuppressFail = 0x08 // Failures are reported but do not fail the test + }; }; + + inline ResultDisposition::Flags operator | ( ResultDisposition::Flags lhs, ResultDisposition::Flags rhs ) { + return static_cast( static_cast( lhs ) | static_cast( rhs ) ); + } + + inline bool shouldContinueOnFailure( int flags ) { return ( flags & ResultDisposition::ContinueOnFailure ) != 0; } + inline bool isFalseTest( int flags ) { return ( flags & ResultDisposition::FalseTest ) != 0; } + inline bool shouldSuppressFailure( int flags ) { return ( flags & ResultDisposition::SuppressFail ) != 0; } + +} // end namespace Catch + +// #included from: catch_assertionresult.h +#define TWOBLUECUBES_CATCH_ASSERTIONRESULT_H_INCLUDED + +#include + +namespace Catch { + + struct AssertionInfo + { + AssertionInfo() {} + AssertionInfo( std::string const& _macroName, + SourceLineInfo const& _lineInfo, + std::string const& _capturedExpression, + ResultDisposition::Flags _resultDisposition ); + + std::string macroName; + SourceLineInfo lineInfo; + std::string capturedExpression; + ResultDisposition::Flags resultDisposition; + }; + + struct AssertionResultData + { + AssertionResultData() : resultType( ResultWas::Unknown ) {} + + std::string reconstructedExpression; + std::string message; + ResultWas::OfType resultType; + }; + + class AssertionResult { + public: + AssertionResult(); + AssertionResult( AssertionInfo const& info, AssertionResultData const& data ); + ~AssertionResult(); +# ifdef CATCH_CONFIG_CPP11_GENERATED_METHODS + AssertionResult( AssertionResult const& ) = default; + AssertionResult( AssertionResult && ) = default; + AssertionResult& operator = ( AssertionResult const& ) = default; + AssertionResult& operator = ( AssertionResult && ) = default; +# endif + + bool isOk() const; + bool succeeded() const; + ResultWas::OfType getResultType() const; + bool hasExpression() const; + bool hasMessage() const; + std::string getExpression() const; + std::string getExpressionInMacro() const; + bool hasExpandedExpression() const; + std::string getExpandedExpression() const; + std::string getMessage() const; + SourceLineInfo getSourceInfo() const; + std::string getTestMacroName() const; + + protected: + AssertionInfo m_info; + AssertionResultData m_resultData; + }; + +} // end namespace Catch + +// #included from: catch_matchers.hpp +#define TWOBLUECUBES_CATCH_MATCHERS_HPP_INCLUDED + +namespace Catch { +namespace Matchers { + namespace Impl { + + namespace Generic { + template class AllOf; + template class AnyOf; + template class Not; + } + + template + struct Matcher : SharedImpl + { + typedef ExpressionT ExpressionType; + + virtual ~Matcher() {} + virtual Ptr clone() const = 0; + virtual bool match( ExpressionT const& expr ) const = 0; + virtual std::string toString() const = 0; + + Generic::AllOf operator && ( Matcher const& other ) const; + Generic::AnyOf operator || ( Matcher const& other ) const; + Generic::Not operator ! () const; + }; + + template + struct MatcherImpl : Matcher { + + virtual Ptr > clone() const { + return Ptr >( new DerivedT( static_cast( *this ) ) ); + } + }; + + namespace Generic { + template + class Not : public MatcherImpl, ExpressionT> { + public: + explicit Not( Matcher const& matcher ) : m_matcher(matcher.clone()) {} + Not( Not const& other ) : m_matcher( other.m_matcher ) {} + + virtual bool match( ExpressionT const& expr ) const CATCH_OVERRIDE { + return !m_matcher->match( expr ); + } + + virtual std::string toString() const CATCH_OVERRIDE { + return "not " + m_matcher->toString(); + } + private: + Ptr< Matcher > m_matcher; + }; + + template + class AllOf : public MatcherImpl, ExpressionT> { + public: + + AllOf() {} + AllOf( AllOf const& other ) : m_matchers( other.m_matchers ) {} + + AllOf& add( Matcher const& matcher ) { + m_matchers.push_back( matcher.clone() ); + return *this; + } + virtual bool match( ExpressionT const& expr ) const + { + for( std::size_t i = 0; i < m_matchers.size(); ++i ) + if( !m_matchers[i]->match( expr ) ) + return false; + return true; + } + virtual std::string toString() const { + std::ostringstream oss; + oss << "( "; + for( std::size_t i = 0; i < m_matchers.size(); ++i ) { + if( i != 0 ) + oss << " and "; + oss << m_matchers[i]->toString(); + } + oss << " )"; + return oss.str(); + } + + AllOf operator && ( Matcher const& other ) const { + AllOf allOfExpr( *this ); + allOfExpr.add( other ); + return allOfExpr; + } + + private: + std::vector > > m_matchers; + }; + + template + class AnyOf : public MatcherImpl, ExpressionT> { + public: + + AnyOf() {} + AnyOf( AnyOf const& other ) : m_matchers( other.m_matchers ) {} + + AnyOf& add( Matcher const& matcher ) { + m_matchers.push_back( matcher.clone() ); + return *this; + } + virtual bool match( ExpressionT const& expr ) const + { + for( std::size_t i = 0; i < m_matchers.size(); ++i ) + if( m_matchers[i]->match( expr ) ) + return true; + return false; + } + virtual std::string toString() const { + std::ostringstream oss; + oss << "( "; + for( std::size_t i = 0; i < m_matchers.size(); ++i ) { + if( i != 0 ) + oss << " or "; + oss << m_matchers[i]->toString(); + } + oss << " )"; + return oss.str(); + } + + AnyOf operator || ( Matcher const& other ) const { + AnyOf anyOfExpr( *this ); + anyOfExpr.add( other ); + return anyOfExpr; + } + + private: + std::vector > > m_matchers; + }; + + } // namespace Generic + + template + Generic::AllOf Matcher::operator && ( Matcher const& other ) const { + Generic::AllOf allOfExpr; + allOfExpr.add( *this ); + allOfExpr.add( other ); + return allOfExpr; + } + + template + Generic::AnyOf Matcher::operator || ( Matcher const& other ) const { + Generic::AnyOf anyOfExpr; + anyOfExpr.add( *this ); + anyOfExpr.add( other ); + return anyOfExpr; + } + + template + Generic::Not Matcher::operator ! () const { + return Generic::Not( *this ); + } + + namespace StdString { + + inline std::string makeString( std::string const& str ) { return str; } + inline std::string makeString( const char* str ) { return str ? std::string( str ) : std::string(); } + + struct CasedString + { + CasedString( std::string const& str, CaseSensitive::Choice caseSensitivity ) + : m_caseSensitivity( caseSensitivity ), + m_str( adjustString( str ) ) + {} + std::string adjustString( std::string const& str ) const { + return m_caseSensitivity == CaseSensitive::No + ? toLower( str ) + : str; + + } + std::string toStringSuffix() const + { + return m_caseSensitivity == CaseSensitive::No + ? " (case insensitive)" + : ""; + } + CaseSensitive::Choice m_caseSensitivity; + std::string m_str; + }; + + struct Equals : MatcherImpl { + Equals( std::string const& str, CaseSensitive::Choice caseSensitivity = CaseSensitive::Yes ) + : m_data( str, caseSensitivity ) + {} + Equals( Equals const& other ) : m_data( other.m_data ){} + + virtual ~Equals(); + + virtual bool match( std::string const& expr ) const { + return m_data.m_str == m_data.adjustString( expr );; + } + virtual std::string toString() const { + return "equals: \"" + m_data.m_str + "\"" + m_data.toStringSuffix(); + } + + CasedString m_data; + }; + + struct Contains : MatcherImpl { + Contains( std::string const& substr, CaseSensitive::Choice caseSensitivity = CaseSensitive::Yes ) + : m_data( substr, caseSensitivity ){} + Contains( Contains const& other ) : m_data( other.m_data ){} + + virtual ~Contains(); + + virtual bool match( std::string const& expr ) const { + return m_data.adjustString( expr ).find( m_data.m_str ) != std::string::npos; + } + virtual std::string toString() const { + return "contains: \"" + m_data.m_str + "\"" + m_data.toStringSuffix(); + } + + CasedString m_data; + }; + + struct StartsWith : MatcherImpl { + StartsWith( std::string const& substr, CaseSensitive::Choice caseSensitivity = CaseSensitive::Yes ) + : m_data( substr, caseSensitivity ){} + + StartsWith( StartsWith const& other ) : m_data( other.m_data ){} + + virtual ~StartsWith(); + + virtual bool match( std::string const& expr ) const { + return startsWith( m_data.adjustString( expr ), m_data.m_str ); + } + virtual std::string toString() const { + return "starts with: \"" + m_data.m_str + "\"" + m_data.toStringSuffix(); + } + + CasedString m_data; + }; + + struct EndsWith : MatcherImpl { + EndsWith( std::string const& substr, CaseSensitive::Choice caseSensitivity = CaseSensitive::Yes ) + : m_data( substr, caseSensitivity ){} + EndsWith( EndsWith const& other ) : m_data( other.m_data ){} + + virtual ~EndsWith(); + + virtual bool match( std::string const& expr ) const { + return endsWith( m_data.adjustString( expr ), m_data.m_str ); + } + virtual std::string toString() const { + return "ends with: \"" + m_data.m_str + "\"" + m_data.toStringSuffix(); + } + + CasedString m_data; + }; + } // namespace StdString + } // namespace Impl + + // The following functions create the actual matcher objects. + // This allows the types to be inferred + template + inline Impl::Generic::Not Not( Impl::Matcher const& m ) { + return Impl::Generic::Not( m ); + } + + template + inline Impl::Generic::AllOf AllOf( Impl::Matcher const& m1, + Impl::Matcher const& m2 ) { + return Impl::Generic::AllOf().add( m1 ).add( m2 ); + } + template + inline Impl::Generic::AllOf AllOf( Impl::Matcher const& m1, + Impl::Matcher const& m2, + Impl::Matcher const& m3 ) { + return Impl::Generic::AllOf().add( m1 ).add( m2 ).add( m3 ); + } + template + inline Impl::Generic::AnyOf AnyOf( Impl::Matcher const& m1, + Impl::Matcher const& m2 ) { + return Impl::Generic::AnyOf().add( m1 ).add( m2 ); + } + template + inline Impl::Generic::AnyOf AnyOf( Impl::Matcher const& m1, + Impl::Matcher const& m2, + Impl::Matcher const& m3 ) { + return Impl::Generic::AnyOf().add( m1 ).add( m2 ).add( m3 ); + } + + inline Impl::StdString::Equals Equals( std::string const& str, CaseSensitive::Choice caseSensitivity = CaseSensitive::Yes ) { + return Impl::StdString::Equals( str, caseSensitivity ); + } + inline Impl::StdString::Equals Equals( const char* str, CaseSensitive::Choice caseSensitivity = CaseSensitive::Yes ) { + return Impl::StdString::Equals( Impl::StdString::makeString( str ), caseSensitivity ); + } + inline Impl::StdString::Contains Contains( std::string const& substr, CaseSensitive::Choice caseSensitivity = CaseSensitive::Yes ) { + return Impl::StdString::Contains( substr, caseSensitivity ); + } + inline Impl::StdString::Contains Contains( const char* substr, CaseSensitive::Choice caseSensitivity = CaseSensitive::Yes ) { + return Impl::StdString::Contains( Impl::StdString::makeString( substr ), caseSensitivity ); + } + inline Impl::StdString::StartsWith StartsWith( std::string const& substr ) { + return Impl::StdString::StartsWith( substr ); + } + inline Impl::StdString::StartsWith StartsWith( const char* substr ) { + return Impl::StdString::StartsWith( Impl::StdString::makeString( substr ) ); + } + inline Impl::StdString::EndsWith EndsWith( std::string const& substr ) { + return Impl::StdString::EndsWith( substr ); + } + inline Impl::StdString::EndsWith EndsWith( const char* substr ) { + return Impl::StdString::EndsWith( Impl::StdString::makeString( substr ) ); + } + +} // namespace Matchers + +using namespace Matchers; + +} // namespace Catch + +namespace Catch { + + struct TestFailureException{}; + + template class ExpressionLhs; + + struct STATIC_ASSERT_Expression_Too_Complex_Please_Rewrite_As_Binary_Comparison; + + struct CopyableStream { + CopyableStream() {} + CopyableStream( CopyableStream const& other ) { + oss << other.oss.str(); + } + CopyableStream& operator=( CopyableStream const& other ) { + oss.str(""); + oss << other.oss.str(); + return *this; + } + std::ostringstream oss; + }; + + class ResultBuilder { + public: + ResultBuilder( char const* macroName, + SourceLineInfo const& lineInfo, + char const* capturedExpression, + ResultDisposition::Flags resultDisposition, + char const* secondArg = "" ); + + template + ExpressionLhs operator <= ( T const& operand ); + ExpressionLhs operator <= ( bool value ); + + template + ResultBuilder& operator << ( T const& value ) { + m_stream.oss << value; + return *this; + } + + template STATIC_ASSERT_Expression_Too_Complex_Please_Rewrite_As_Binary_Comparison& operator && ( RhsT const& ); + template STATIC_ASSERT_Expression_Too_Complex_Please_Rewrite_As_Binary_Comparison& operator || ( RhsT const& ); + + ResultBuilder& setResultType( ResultWas::OfType result ); + ResultBuilder& setResultType( bool result ); + ResultBuilder& setLhs( std::string const& lhs ); + ResultBuilder& setRhs( std::string const& rhs ); + ResultBuilder& setOp( std::string const& op ); + + void endExpression(); + + std::string reconstructExpression() const; + AssertionResult build() const; + + void useActiveException( ResultDisposition::Flags resultDisposition = ResultDisposition::Normal ); + void captureResult( ResultWas::OfType resultType ); + void captureExpression(); + void captureExpectedException( std::string const& expectedMessage ); + void captureExpectedException( Matchers::Impl::Matcher const& matcher ); + void handleResult( AssertionResult const& result ); + void react(); + bool shouldDebugBreak() const; + bool allowThrows() const; + + private: + AssertionInfo m_assertionInfo; + AssertionResultData m_data; + struct ExprComponents { + ExprComponents() : testFalse( false ) {} + bool testFalse; + std::string lhs, rhs, op; + } m_exprComponents; + CopyableStream m_stream; + + bool m_shouldDebugBreak; + bool m_shouldThrow; + }; + +} // namespace Catch + +// Include after due to circular dependency: +// #included from: catch_expression_lhs.hpp +#define TWOBLUECUBES_CATCH_EXPRESSION_LHS_HPP_INCLUDED + +// #included from: catch_evaluate.hpp +#define TWOBLUECUBES_CATCH_EVALUATE_HPP_INCLUDED + +#ifdef _MSC_VER +#pragma warning(push) +#pragma warning(disable:4389) // '==' : signed/unsigned mismatch +#endif + +#include + +namespace Catch { +namespace Internal { + + enum Operator { + IsEqualTo, + IsNotEqualTo, + IsLessThan, + IsGreaterThan, + IsLessThanOrEqualTo, + IsGreaterThanOrEqualTo + }; + + template struct OperatorTraits { static const char* getName(){ return "*error*"; } }; + template<> struct OperatorTraits { static const char* getName(){ return "=="; } }; + template<> struct OperatorTraits { static const char* getName(){ return "!="; } }; + template<> struct OperatorTraits { static const char* getName(){ return "<"; } }; + template<> struct OperatorTraits { static const char* getName(){ return ">"; } }; + template<> struct OperatorTraits { static const char* getName(){ return "<="; } }; + template<> struct OperatorTraits{ static const char* getName(){ return ">="; } }; + + template + inline T& opCast(T const& t) { return const_cast(t); } + +// nullptr_t support based on pull request #154 from Konstantin Baumann +#ifdef CATCH_CONFIG_CPP11_NULLPTR + inline std::nullptr_t opCast(std::nullptr_t) { return nullptr; } +#endif // CATCH_CONFIG_CPP11_NULLPTR + + // So the compare overloads can be operator agnostic we convey the operator as a template + // enum, which is used to specialise an Evaluator for doing the comparison. + template + class Evaluator{}; + + template + struct Evaluator { + static bool evaluate( T1 const& lhs, T2 const& rhs) { + return bool( opCast( lhs ) == opCast( rhs ) ); + } + }; + template + struct Evaluator { + static bool evaluate( T1 const& lhs, T2 const& rhs ) { + return bool( opCast( lhs ) != opCast( rhs ) ); + } + }; + template + struct Evaluator { + static bool evaluate( T1 const& lhs, T2 const& rhs ) { + return bool( opCast( lhs ) < opCast( rhs ) ); + } + }; + template + struct Evaluator { + static bool evaluate( T1 const& lhs, T2 const& rhs ) { + return bool( opCast( lhs ) > opCast( rhs ) ); + } + }; + template + struct Evaluator { + static bool evaluate( T1 const& lhs, T2 const& rhs ) { + return bool( opCast( lhs ) >= opCast( rhs ) ); + } + }; + template + struct Evaluator { + static bool evaluate( T1 const& lhs, T2 const& rhs ) { + return bool( opCast( lhs ) <= opCast( rhs ) ); + } + }; + + template + bool applyEvaluator( T1 const& lhs, T2 const& rhs ) { + return Evaluator::evaluate( lhs, rhs ); + } + + // This level of indirection allows us to specialise for integer types + // to avoid signed/ unsigned warnings + + // "base" overload + template + bool compare( T1 const& lhs, T2 const& rhs ) { + return Evaluator::evaluate( lhs, rhs ); + } + + // unsigned X to int + template bool compare( unsigned int lhs, int rhs ) { + return applyEvaluator( lhs, static_cast( rhs ) ); + } + template bool compare( unsigned long lhs, int rhs ) { + return applyEvaluator( lhs, static_cast( rhs ) ); + } + template bool compare( unsigned char lhs, int rhs ) { + return applyEvaluator( lhs, static_cast( rhs ) ); + } + + // unsigned X to long + template bool compare( unsigned int lhs, long rhs ) { + return applyEvaluator( lhs, static_cast( rhs ) ); + } + template bool compare( unsigned long lhs, long rhs ) { + return applyEvaluator( lhs, static_cast( rhs ) ); + } + template bool compare( unsigned char lhs, long rhs ) { + return applyEvaluator( lhs, static_cast( rhs ) ); + } + + // int to unsigned X + template bool compare( int lhs, unsigned int rhs ) { + return applyEvaluator( static_cast( lhs ), rhs ); + } + template bool compare( int lhs, unsigned long rhs ) { + return applyEvaluator( static_cast( lhs ), rhs ); + } + template bool compare( int lhs, unsigned char rhs ) { + return applyEvaluator( static_cast( lhs ), rhs ); + } + + // long to unsigned X + template bool compare( long lhs, unsigned int rhs ) { + return applyEvaluator( static_cast( lhs ), rhs ); + } + template bool compare( long lhs, unsigned long rhs ) { + return applyEvaluator( static_cast( lhs ), rhs ); + } + template bool compare( long lhs, unsigned char rhs ) { + return applyEvaluator( static_cast( lhs ), rhs ); + } + + // pointer to long (when comparing against NULL) + template bool compare( long lhs, T* rhs ) { + return Evaluator::evaluate( reinterpret_cast( lhs ), rhs ); + } + template bool compare( T* lhs, long rhs ) { + return Evaluator::evaluate( lhs, reinterpret_cast( rhs ) ); + } + + // pointer to int (when comparing against NULL) + template bool compare( int lhs, T* rhs ) { + return Evaluator::evaluate( reinterpret_cast( lhs ), rhs ); + } + template bool compare( T* lhs, int rhs ) { + return Evaluator::evaluate( lhs, reinterpret_cast( rhs ) ); + } + +#ifdef CATCH_CONFIG_CPP11_LONG_LONG + // long long to unsigned X + template bool compare( long long lhs, unsigned int rhs ) { + return applyEvaluator( static_cast( lhs ), rhs ); + } + template bool compare( long long lhs, unsigned long rhs ) { + return applyEvaluator( static_cast( lhs ), rhs ); + } + template bool compare( long long lhs, unsigned long long rhs ) { + return applyEvaluator( static_cast( lhs ), rhs ); + } + template bool compare( long long lhs, unsigned char rhs ) { + return applyEvaluator( static_cast( lhs ), rhs ); + } + + // unsigned long long to X + template bool compare( unsigned long long lhs, int rhs ) { + return applyEvaluator( static_cast( lhs ), rhs ); + } + template bool compare( unsigned long long lhs, long rhs ) { + return applyEvaluator( static_cast( lhs ), rhs ); + } + template bool compare( unsigned long long lhs, long long rhs ) { + return applyEvaluator( static_cast( lhs ), rhs ); + } + template bool compare( unsigned long long lhs, char rhs ) { + return applyEvaluator( static_cast( lhs ), rhs ); + } + + // pointer to long long (when comparing against NULL) + template bool compare( long long lhs, T* rhs ) { + return Evaluator::evaluate( reinterpret_cast( lhs ), rhs ); + } + template bool compare( T* lhs, long long rhs ) { + return Evaluator::evaluate( lhs, reinterpret_cast( rhs ) ); + } +#endif // CATCH_CONFIG_CPP11_LONG_LONG + +#ifdef CATCH_CONFIG_CPP11_NULLPTR + // pointer to nullptr_t (when comparing against nullptr) + template bool compare( std::nullptr_t, T* rhs ) { + return Evaluator::evaluate( nullptr, rhs ); + } + template bool compare( T* lhs, std::nullptr_t ) { + return Evaluator::evaluate( lhs, nullptr ); + } +#endif // CATCH_CONFIG_CPP11_NULLPTR + +} // end of namespace Internal +} // end of namespace Catch + +#ifdef _MSC_VER +#pragma warning(pop) +#endif + +// #included from: catch_tostring.h +#define TWOBLUECUBES_CATCH_TOSTRING_H_INCLUDED + +#include +#include +#include +#include +#include + +#ifdef __OBJC__ +// #included from: catch_objc_arc.hpp +#define TWOBLUECUBES_CATCH_OBJC_ARC_HPP_INCLUDED + +#import + +#ifdef __has_feature +#define CATCH_ARC_ENABLED __has_feature(objc_arc) +#else +#define CATCH_ARC_ENABLED 0 +#endif + +void arcSafeRelease( NSObject* obj ); +id performOptionalSelector( id obj, SEL sel ); + +#if !CATCH_ARC_ENABLED +inline void arcSafeRelease( NSObject* obj ) { + [obj release]; +} +inline id performOptionalSelector( id obj, SEL sel ) { + if( [obj respondsToSelector: sel] ) + return [obj performSelector: sel]; + return nil; +} +#define CATCH_UNSAFE_UNRETAINED +#define CATCH_ARC_STRONG +#else +inline void arcSafeRelease( NSObject* ){} +inline id performOptionalSelector( id obj, SEL sel ) { +#ifdef __clang__ +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Warc-performSelector-leaks" +#endif + if( [obj respondsToSelector: sel] ) + return [obj performSelector: sel]; +#ifdef __clang__ +#pragma clang diagnostic pop +#endif + return nil; +} +#define CATCH_UNSAFE_UNRETAINED __unsafe_unretained +#define CATCH_ARC_STRONG __strong +#endif + +#endif + +#ifdef CATCH_CONFIG_CPP11_TUPLE +#include +#endif + +#ifdef CATCH_CONFIG_CPP11_IS_ENUM +#include +#endif + +namespace Catch { + +// Why we're here. +template +std::string toString( T const& value ); + +// Built in overloads + +std::string toString( std::string const& value ); +std::string toString( std::wstring const& value ); +std::string toString( const char* const value ); +std::string toString( char* const value ); +std::string toString( const wchar_t* const value ); +std::string toString( wchar_t* const value ); +std::string toString( int value ); +std::string toString( unsigned long value ); +std::string toString( unsigned int value ); +std::string toString( const double value ); +std::string toString( const float value ); +std::string toString( bool value ); +std::string toString( char value ); +std::string toString( signed char value ); +std::string toString( unsigned char value ); + +#ifdef CATCH_CONFIG_CPP11_LONG_LONG +std::string toString( long long value ); +std::string toString( unsigned long long value ); +#endif + +#ifdef CATCH_CONFIG_CPP11_NULLPTR +std::string toString( std::nullptr_t ); +#endif + +#ifdef __OBJC__ + std::string toString( NSString const * const& nsstring ); + std::string toString( NSString * CATCH_ARC_STRONG const& nsstring ); + std::string toString( NSObject* const& nsObject ); +#endif + +namespace Detail { + + extern const std::string unprintableString; + + struct BorgType { + template BorgType( T const& ); + }; + + struct TrueType { char sizer[1]; }; + struct FalseType { char sizer[2]; }; + + TrueType& testStreamable( std::ostream& ); + FalseType testStreamable( FalseType ); + + FalseType operator<<( std::ostream const&, BorgType const& ); + + template + struct IsStreamInsertable { + static std::ostream &s; + static T const&t; + enum { value = sizeof( testStreamable(s << t) ) == sizeof( TrueType ) }; + }; + +#if defined(CATCH_CONFIG_CPP11_IS_ENUM) + template::value + > + struct EnumStringMaker + { + static std::string convert( T const& ) { return unprintableString; } + }; + + template + struct EnumStringMaker + { + static std::string convert( T const& v ) + { + return ::Catch::toString( + static_cast::type>(v) + ); + } + }; +#endif + template + struct StringMakerBase { +#if defined(CATCH_CONFIG_CPP11_IS_ENUM) + template + static std::string convert( T const& v ) + { + return EnumStringMaker::convert( v ); + } +#else + template + static std::string convert( T const& ) { return unprintableString; } +#endif + }; + + template<> + struct StringMakerBase { + template + static std::string convert( T const& _value ) { + std::ostringstream oss; + oss << _value; + return oss.str(); + } + }; + + std::string rawMemoryToString( const void *object, std::size_t size ); + + template + inline std::string rawMemoryToString( const T& object ) { + return rawMemoryToString( &object, sizeof(object) ); + } + +} // end namespace Detail + +template +struct StringMaker : + Detail::StringMakerBase::value> {}; + +template +struct StringMaker { + template + static std::string convert( U* p ) { + if( !p ) + return "NULL"; + else + return Detail::rawMemoryToString( p ); + } +}; + +template +struct StringMaker { + static std::string convert( R C::* p ) { + if( !p ) + return "NULL"; + else + return Detail::rawMemoryToString( p ); + } +}; + +namespace Detail { + template + std::string rangeToString( InputIterator first, InputIterator last ); +} + +//template +//struct StringMaker > { +// static std::string convert( std::vector const& v ) { +// return Detail::rangeToString( v.begin(), v.end() ); +// } +//}; + +template +std::string toString( std::vector const& v ) { + return Detail::rangeToString( v.begin(), v.end() ); +} + +#ifdef CATCH_CONFIG_CPP11_TUPLE + +// toString for tuples +namespace TupleDetail { + template< + typename Tuple, + std::size_t N = 0, + bool = (N < std::tuple_size::value) + > + struct ElementPrinter { + static void print( const Tuple& tuple, std::ostream& os ) + { + os << ( N ? ", " : " " ) + << Catch::toString(std::get(tuple)); + ElementPrinter::print(tuple,os); + } + }; + + template< + typename Tuple, + std::size_t N + > + struct ElementPrinter { + static void print( const Tuple&, std::ostream& ) {} + }; + +} + +template +struct StringMaker> { + + static std::string convert( const std::tuple& tuple ) + { + std::ostringstream os; + os << '{'; + TupleDetail::ElementPrinter>::print( tuple, os ); + os << " }"; + return os.str(); + } +}; +#endif // CATCH_CONFIG_CPP11_TUPLE + +namespace Detail { + template + std::string makeString( T const& value ) { + return StringMaker::convert( value ); + } +} // end namespace Detail + +/// \brief converts any type to a string +/// +/// The default template forwards on to ostringstream - except when an +/// ostringstream overload does not exist - in which case it attempts to detect +/// that and writes {?}. +/// Overload (not specialise) this template for custom typs that you don't want +/// to provide an ostream overload for. +template +std::string toString( T const& value ) { + return StringMaker::convert( value ); +} + + namespace Detail { + template + std::string rangeToString( InputIterator first, InputIterator last ) { + std::ostringstream oss; + oss << "{ "; + if( first != last ) { + oss << Catch::toString( *first ); + for( ++first ; first != last ; ++first ) + oss << ", " << Catch::toString( *first ); + } + oss << " }"; + return oss.str(); + } +} + +} // end namespace Catch + +namespace Catch { + +// Wraps the LHS of an expression and captures the operator and RHS (if any) - +// wrapping them all in a ResultBuilder object +template +class ExpressionLhs { + ExpressionLhs& operator = ( ExpressionLhs const& ); +# ifdef CATCH_CONFIG_CPP11_GENERATED_METHODS + ExpressionLhs& operator = ( ExpressionLhs && ) = delete; +# endif + +public: + ExpressionLhs( ResultBuilder& rb, T lhs ) : m_rb( rb ), m_lhs( lhs ) {} +# ifdef CATCH_CONFIG_CPP11_GENERATED_METHODS + ExpressionLhs( ExpressionLhs const& ) = default; + ExpressionLhs( ExpressionLhs && ) = default; +# endif + + template + ResultBuilder& operator == ( RhsT const& rhs ) { + return captureExpression( rhs ); + } + + template + ResultBuilder& operator != ( RhsT const& rhs ) { + return captureExpression( rhs ); + } + + template + ResultBuilder& operator < ( RhsT const& rhs ) { + return captureExpression( rhs ); + } + + template + ResultBuilder& operator > ( RhsT const& rhs ) { + return captureExpression( rhs ); + } + + template + ResultBuilder& operator <= ( RhsT const& rhs ) { + return captureExpression( rhs ); + } + + template + ResultBuilder& operator >= ( RhsT const& rhs ) { + return captureExpression( rhs ); + } + + ResultBuilder& operator == ( bool rhs ) { + return captureExpression( rhs ); + } + + ResultBuilder& operator != ( bool rhs ) { + return captureExpression( rhs ); + } + + void endExpression() { + bool value = m_lhs ? true : false; + m_rb + .setLhs( Catch::toString( value ) ) + .setResultType( value ) + .endExpression(); + } + + // Only simple binary expressions are allowed on the LHS. + // If more complex compositions are required then place the sub expression in parentheses + template STATIC_ASSERT_Expression_Too_Complex_Please_Rewrite_As_Binary_Comparison& operator + ( RhsT const& ); + template STATIC_ASSERT_Expression_Too_Complex_Please_Rewrite_As_Binary_Comparison& operator - ( RhsT const& ); + template STATIC_ASSERT_Expression_Too_Complex_Please_Rewrite_As_Binary_Comparison& operator / ( RhsT const& ); + template STATIC_ASSERT_Expression_Too_Complex_Please_Rewrite_As_Binary_Comparison& operator * ( RhsT const& ); + template STATIC_ASSERT_Expression_Too_Complex_Please_Rewrite_As_Binary_Comparison& operator && ( RhsT const& ); + template STATIC_ASSERT_Expression_Too_Complex_Please_Rewrite_As_Binary_Comparison& operator || ( RhsT const& ); + +private: + template + ResultBuilder& captureExpression( RhsT const& rhs ) { + return m_rb + .setResultType( Internal::compare( m_lhs, rhs ) ) + .setLhs( Catch::toString( m_lhs ) ) + .setRhs( Catch::toString( rhs ) ) + .setOp( Internal::OperatorTraits::getName() ); + } + +private: + ResultBuilder& m_rb; + T m_lhs; +}; + +} // end namespace Catch + + +namespace Catch { + + template + inline ExpressionLhs ResultBuilder::operator <= ( T const& operand ) { + return ExpressionLhs( *this, operand ); + } + + inline ExpressionLhs ResultBuilder::operator <= ( bool value ) { + return ExpressionLhs( *this, value ); + } + +} // namespace Catch + +// #included from: catch_message.h +#define TWOBLUECUBES_CATCH_MESSAGE_H_INCLUDED + +#include + +namespace Catch { + + struct MessageInfo { + MessageInfo( std::string const& _macroName, + SourceLineInfo const& _lineInfo, + ResultWas::OfType _type ); + + std::string macroName; + SourceLineInfo lineInfo; + ResultWas::OfType type; + std::string message; + unsigned int sequence; + + bool operator == ( MessageInfo const& other ) const { + return sequence == other.sequence; + } + bool operator < ( MessageInfo const& other ) const { + return sequence < other.sequence; + } + private: + static unsigned int globalCount; + }; + + struct MessageBuilder { + MessageBuilder( std::string const& macroName, + SourceLineInfo const& lineInfo, + ResultWas::OfType type ) + : m_info( macroName, lineInfo, type ) + {} + + template + MessageBuilder& operator << ( T const& value ) { + m_stream << value; + return *this; + } + + MessageInfo m_info; + std::ostringstream m_stream; + }; + + class ScopedMessage { + public: + ScopedMessage( MessageBuilder const& builder ); + ScopedMessage( ScopedMessage const& other ); + ~ScopedMessage(); + + MessageInfo m_info; + }; + +} // end namespace Catch + +// #included from: catch_interfaces_capture.h +#define TWOBLUECUBES_CATCH_INTERFACES_CAPTURE_H_INCLUDED + +#include + +namespace Catch { + + class TestCase; + class AssertionResult; + struct AssertionInfo; + struct SectionInfo; + struct SectionEndInfo; + struct MessageInfo; + class ScopedMessageBuilder; + struct Counts; + + struct IResultCapture { + + virtual ~IResultCapture(); + + virtual void assertionEnded( AssertionResult const& result ) = 0; + virtual bool sectionStarted( SectionInfo const& sectionInfo, + Counts& assertions ) = 0; + virtual void sectionEnded( SectionEndInfo const& endInfo ) = 0; + virtual void sectionEndedEarly( SectionEndInfo const& endInfo ) = 0; + virtual void pushScopedMessage( MessageInfo const& message ) = 0; + virtual void popScopedMessage( MessageInfo const& message ) = 0; + + virtual std::string getCurrentTestName() const = 0; + virtual const AssertionResult* getLastResult() const = 0; + + virtual void handleFatalErrorCondition( std::string const& message ) = 0; + }; + + IResultCapture& getResultCapture(); +} + +// #included from: catch_debugger.h +#define TWOBLUECUBES_CATCH_DEBUGGER_H_INCLUDED + +// #included from: catch_platform.h +#define TWOBLUECUBES_CATCH_PLATFORM_H_INCLUDED + +#if defined(__MAC_OS_X_VERSION_MIN_REQUIRED) +#define CATCH_PLATFORM_MAC +#elif defined(__IPHONE_OS_VERSION_MIN_REQUIRED) +#define CATCH_PLATFORM_IPHONE +#elif defined(WIN32) || defined(__WIN32__) || defined(_WIN32) || defined(_MSC_VER) +#define CATCH_PLATFORM_WINDOWS +#endif + +#include + +namespace Catch{ + + bool isDebuggerActive(); + void writeToDebugConsole( std::string const& text ); +} + +#ifdef CATCH_PLATFORM_MAC + + // The following code snippet based on: + // http://cocoawithlove.com/2008/03/break-into-debugger.html + #ifdef DEBUG + #if defined(__ppc64__) || defined(__ppc__) + #define CATCH_BREAK_INTO_DEBUGGER() \ + if( Catch::isDebuggerActive() ) { \ + __asm__("li r0, 20\nsc\nnop\nli r0, 37\nli r4, 2\nsc\nnop\n" \ + : : : "memory","r0","r3","r4" ); \ + } + #else + #define CATCH_BREAK_INTO_DEBUGGER() if( Catch::isDebuggerActive() ) {__asm__("int $3\n" : : );} + #endif + #endif + +#elif defined(_MSC_VER) + #define CATCH_BREAK_INTO_DEBUGGER() if( Catch::isDebuggerActive() ) { __debugbreak(); } +#elif defined(__MINGW32__) + extern "C" __declspec(dllimport) void __stdcall DebugBreak(); + #define CATCH_BREAK_INTO_DEBUGGER() if( Catch::isDebuggerActive() ) { DebugBreak(); } +#endif + +#ifndef CATCH_BREAK_INTO_DEBUGGER +#define CATCH_BREAK_INTO_DEBUGGER() Catch::alwaysTrue(); +#endif + +// #included from: catch_interfaces_runner.h +#define TWOBLUECUBES_CATCH_INTERFACES_RUNNER_H_INCLUDED + +namespace Catch { + class TestCase; + + struct IRunner { + virtual ~IRunner(); + virtual bool aborting() const = 0; + }; +} + +/////////////////////////////////////////////////////////////////////////////// +// In the event of a failure works out if the debugger needs to be invoked +// and/or an exception thrown and takes appropriate action. +// This needs to be done as a macro so the debugger will stop in the user +// source code rather than in Catch library code +#define INTERNAL_CATCH_REACT( resultBuilder ) \ + if( resultBuilder.shouldDebugBreak() ) CATCH_BREAK_INTO_DEBUGGER(); \ + resultBuilder.react(); + +/////////////////////////////////////////////////////////////////////////////// +#define INTERNAL_CATCH_TEST( expr, resultDisposition, macroName ) \ + do { \ + Catch::ResultBuilder __catchResult( macroName, CATCH_INTERNAL_LINEINFO, #expr, resultDisposition ); \ + try { \ + CATCH_INTERNAL_SUPPRESS_PARENTHESES_WARNINGS \ + ( __catchResult <= expr ).endExpression(); \ + } \ + catch( ... ) { \ + __catchResult.useActiveException( Catch::ResultDisposition::Normal ); \ + } \ + INTERNAL_CATCH_REACT( __catchResult ) \ + } while( Catch::isTrue( false && static_cast(expr) ) ) // expr here is never evaluated at runtime but it forces the compiler to give it a look + +/////////////////////////////////////////////////////////////////////////////// +#define INTERNAL_CATCH_IF( expr, resultDisposition, macroName ) \ + INTERNAL_CATCH_TEST( expr, resultDisposition, macroName ); \ + if( Catch::getResultCapture().getLastResult()->succeeded() ) + +/////////////////////////////////////////////////////////////////////////////// +#define INTERNAL_CATCH_ELSE( expr, resultDisposition, macroName ) \ + INTERNAL_CATCH_TEST( expr, resultDisposition, macroName ); \ + if( !Catch::getResultCapture().getLastResult()->succeeded() ) + +/////////////////////////////////////////////////////////////////////////////// +#define INTERNAL_CATCH_NO_THROW( expr, resultDisposition, macroName ) \ + do { \ + Catch::ResultBuilder __catchResult( macroName, CATCH_INTERNAL_LINEINFO, #expr, resultDisposition ); \ + try { \ + expr; \ + __catchResult.captureResult( Catch::ResultWas::Ok ); \ + } \ + catch( ... ) { \ + __catchResult.useActiveException( resultDisposition ); \ + } \ + INTERNAL_CATCH_REACT( __catchResult ) \ + } while( Catch::alwaysFalse() ) + +/////////////////////////////////////////////////////////////////////////////// +#define INTERNAL_CATCH_THROWS( expr, resultDisposition, matcher, macroName ) \ + do { \ + Catch::ResultBuilder __catchResult( macroName, CATCH_INTERNAL_LINEINFO, #expr, resultDisposition, #matcher ); \ + if( __catchResult.allowThrows() ) \ + try { \ + expr; \ + __catchResult.captureResult( Catch::ResultWas::DidntThrowException ); \ + } \ + catch( ... ) { \ + __catchResult.captureExpectedException( matcher ); \ + } \ + else \ + __catchResult.captureResult( Catch::ResultWas::Ok ); \ + INTERNAL_CATCH_REACT( __catchResult ) \ + } while( Catch::alwaysFalse() ) + +/////////////////////////////////////////////////////////////////////////////// +#define INTERNAL_CATCH_THROWS_AS( expr, exceptionType, resultDisposition, macroName ) \ + do { \ + Catch::ResultBuilder __catchResult( macroName, CATCH_INTERNAL_LINEINFO, #expr, resultDisposition ); \ + if( __catchResult.allowThrows() ) \ + try { \ + expr; \ + __catchResult.captureResult( Catch::ResultWas::DidntThrowException ); \ + } \ + catch( exceptionType ) { \ + __catchResult.captureResult( Catch::ResultWas::Ok ); \ + } \ + catch( ... ) { \ + __catchResult.useActiveException( resultDisposition ); \ + } \ + else \ + __catchResult.captureResult( Catch::ResultWas::Ok ); \ + INTERNAL_CATCH_REACT( __catchResult ) \ + } while( Catch::alwaysFalse() ) + +/////////////////////////////////////////////////////////////////////////////// +#ifdef CATCH_CONFIG_VARIADIC_MACROS + #define INTERNAL_CATCH_MSG( messageType, resultDisposition, macroName, ... ) \ + do { \ + Catch::ResultBuilder __catchResult( macroName, CATCH_INTERNAL_LINEINFO, "", resultDisposition ); \ + __catchResult << __VA_ARGS__ + ::Catch::StreamEndStop(); \ + __catchResult.captureResult( messageType ); \ + INTERNAL_CATCH_REACT( __catchResult ) \ + } while( Catch::alwaysFalse() ) +#else + #define INTERNAL_CATCH_MSG( messageType, resultDisposition, macroName, log ) \ + do { \ + Catch::ResultBuilder __catchResult( macroName, CATCH_INTERNAL_LINEINFO, "", resultDisposition ); \ + __catchResult << log + ::Catch::StreamEndStop(); \ + __catchResult.captureResult( messageType ); \ + INTERNAL_CATCH_REACT( __catchResult ) \ + } while( Catch::alwaysFalse() ) +#endif + +/////////////////////////////////////////////////////////////////////////////// +#define INTERNAL_CATCH_INFO( log, macroName ) \ + Catch::ScopedMessage INTERNAL_CATCH_UNIQUE_NAME( scopedMessage ) = Catch::MessageBuilder( macroName, CATCH_INTERNAL_LINEINFO, Catch::ResultWas::Info ) << log; + +/////////////////////////////////////////////////////////////////////////////// +#define INTERNAL_CHECK_THAT( arg, matcher, resultDisposition, macroName ) \ + do { \ + Catch::ResultBuilder __catchResult( macroName, CATCH_INTERNAL_LINEINFO, #arg ", " #matcher, resultDisposition ); \ + try { \ + std::string matcherAsString = (matcher).toString(); \ + __catchResult \ + .setLhs( Catch::toString( arg ) ) \ + .setRhs( matcherAsString == Catch::Detail::unprintableString ? #matcher : matcherAsString ) \ + .setOp( "matches" ) \ + .setResultType( (matcher).match( arg ) ); \ + __catchResult.captureExpression(); \ + } catch( ... ) { \ + __catchResult.useActiveException( resultDisposition | Catch::ResultDisposition::ContinueOnFailure ); \ + } \ + INTERNAL_CATCH_REACT( __catchResult ) \ + } while( Catch::alwaysFalse() ) + +// #included from: internal/catch_section.h +#define TWOBLUECUBES_CATCH_SECTION_H_INCLUDED + +// #included from: catch_section_info.h +#define TWOBLUECUBES_CATCH_SECTION_INFO_H_INCLUDED + +// #included from: catch_totals.hpp +#define TWOBLUECUBES_CATCH_TOTALS_HPP_INCLUDED + +#include + +namespace Catch { + + struct Counts { + Counts() : passed( 0 ), failed( 0 ), failedButOk( 0 ) {} + + Counts operator - ( Counts const& other ) const { + Counts diff; + diff.passed = passed - other.passed; + diff.failed = failed - other.failed; + diff.failedButOk = failedButOk - other.failedButOk; + return diff; + } + Counts& operator += ( Counts const& other ) { + passed += other.passed; + failed += other.failed; + failedButOk += other.failedButOk; + return *this; + } + + std::size_t total() const { + return passed + failed + failedButOk; + } + bool allPassed() const { + return failed == 0 && failedButOk == 0; + } + bool allOk() const { + return failed == 0; + } + + std::size_t passed; + std::size_t failed; + std::size_t failedButOk; + }; + + struct Totals { + + Totals operator - ( Totals const& other ) const { + Totals diff; + diff.assertions = assertions - other.assertions; + diff.testCases = testCases - other.testCases; + return diff; + } + + Totals delta( Totals const& prevTotals ) const { + Totals diff = *this - prevTotals; + if( diff.assertions.failed > 0 ) + ++diff.testCases.failed; + else if( diff.assertions.failedButOk > 0 ) + ++diff.testCases.failedButOk; + else + ++diff.testCases.passed; + return diff; + } + + Totals& operator += ( Totals const& other ) { + assertions += other.assertions; + testCases += other.testCases; + return *this; + } + + Counts assertions; + Counts testCases; + }; +} + +namespace Catch { + + struct SectionInfo { + SectionInfo + ( SourceLineInfo const& _lineInfo, + std::string const& _name, + std::string const& _description = std::string() ); + + std::string name; + std::string description; + SourceLineInfo lineInfo; + }; + + struct SectionEndInfo { + SectionEndInfo( SectionInfo const& _sectionInfo, Counts const& _prevAssertions, double _durationInSeconds ) + : sectionInfo( _sectionInfo ), prevAssertions( _prevAssertions ), durationInSeconds( _durationInSeconds ) + {} + + SectionInfo sectionInfo; + Counts prevAssertions; + double durationInSeconds; + }; + +} // end namespace Catch + +// #included from: catch_timer.h +#define TWOBLUECUBES_CATCH_TIMER_H_INCLUDED + +#ifdef CATCH_PLATFORM_WINDOWS +typedef unsigned long long uint64_t; +#else +#include +#endif + +namespace Catch { + + class Timer { + public: + Timer() : m_ticks( 0 ) {} + void start(); + unsigned int getElapsedMicroseconds() const; + unsigned int getElapsedMilliseconds() const; + double getElapsedSeconds() const; + + private: + uint64_t m_ticks; + }; + +} // namespace Catch + +#include + +namespace Catch { + + class Section : NonCopyable { + public: + Section( SectionInfo const& info ); + ~Section(); + + // This indicates whether the section should be executed or not + operator bool() const; + + private: + SectionInfo m_info; + + std::string m_name; + Counts m_assertions; + bool m_sectionIncluded; + Timer m_timer; + }; + +} // end namespace Catch + +#ifdef CATCH_CONFIG_VARIADIC_MACROS + #define INTERNAL_CATCH_SECTION( ... ) \ + if( Catch::Section const& INTERNAL_CATCH_UNIQUE_NAME( catch_internal_Section ) = Catch::SectionInfo( CATCH_INTERNAL_LINEINFO, __VA_ARGS__ ) ) +#else + #define INTERNAL_CATCH_SECTION( name, desc ) \ + if( Catch::Section const& INTERNAL_CATCH_UNIQUE_NAME( catch_internal_Section ) = Catch::SectionInfo( CATCH_INTERNAL_LINEINFO, name, desc ) ) +#endif + +// #included from: internal/catch_generators.hpp +#define TWOBLUECUBES_CATCH_GENERATORS_HPP_INCLUDED + +#include +#include +#include +#include + +namespace Catch { + +template +struct IGenerator { + virtual ~IGenerator() {} + virtual T getValue( std::size_t index ) const = 0; + virtual std::size_t size () const = 0; +}; + +template +class BetweenGenerator : public IGenerator { +public: + BetweenGenerator( T from, T to ) : m_from( from ), m_to( to ){} + + virtual T getValue( std::size_t index ) const { + return m_from+static_cast( index ); + } + + virtual std::size_t size() const { + return static_cast( 1+m_to-m_from ); + } + +private: + + T m_from; + T m_to; +}; + +template +class ValuesGenerator : public IGenerator { +public: + ValuesGenerator(){} + + void add( T value ) { + m_values.push_back( value ); + } + + virtual T getValue( std::size_t index ) const { + return m_values[index]; + } + + virtual std::size_t size() const { + return m_values.size(); + } + +private: + std::vector m_values; +}; + +template +class CompositeGenerator { +public: + CompositeGenerator() : m_totalSize( 0 ) {} + + // *** Move semantics, similar to auto_ptr *** + CompositeGenerator( CompositeGenerator& other ) + : m_fileInfo( other.m_fileInfo ), + m_totalSize( 0 ) + { + move( other ); + } + + CompositeGenerator& setFileInfo( const char* fileInfo ) { + m_fileInfo = fileInfo; + return *this; + } + + ~CompositeGenerator() { + deleteAll( m_composed ); + } + + operator T () const { + size_t overallIndex = getCurrentContext().getGeneratorIndex( m_fileInfo, m_totalSize ); + + typename std::vector*>::const_iterator it = m_composed.begin(); + typename std::vector*>::const_iterator itEnd = m_composed.end(); + for( size_t index = 0; it != itEnd; ++it ) + { + const IGenerator* generator = *it; + if( overallIndex >= index && overallIndex < index + generator->size() ) + { + return generator->getValue( overallIndex-index ); + } + index += generator->size(); + } + CATCH_INTERNAL_ERROR( "Indexed past end of generated range" ); + return T(); // Suppress spurious "not all control paths return a value" warning in Visual Studio - if you know how to fix this please do so + } + + void add( const IGenerator* generator ) { + m_totalSize += generator->size(); + m_composed.push_back( generator ); + } + + CompositeGenerator& then( CompositeGenerator& other ) { + move( other ); + return *this; + } + + CompositeGenerator& then( T value ) { + ValuesGenerator* valuesGen = new ValuesGenerator(); + valuesGen->add( value ); + add( valuesGen ); + return *this; + } + +private: + + void move( CompositeGenerator& other ) { + std::copy( other.m_composed.begin(), other.m_composed.end(), std::back_inserter( m_composed ) ); + m_totalSize += other.m_totalSize; + other.m_composed.clear(); + } + + std::vector*> m_composed; + std::string m_fileInfo; + size_t m_totalSize; +}; + +namespace Generators +{ + template + CompositeGenerator between( T from, T to ) { + CompositeGenerator generators; + generators.add( new BetweenGenerator( from, to ) ); + return generators; + } + + template + CompositeGenerator values( T val1, T val2 ) { + CompositeGenerator generators; + ValuesGenerator* valuesGen = new ValuesGenerator(); + valuesGen->add( val1 ); + valuesGen->add( val2 ); + generators.add( valuesGen ); + return generators; + } + + template + CompositeGenerator values( T val1, T val2, T val3 ){ + CompositeGenerator generators; + ValuesGenerator* valuesGen = new ValuesGenerator(); + valuesGen->add( val1 ); + valuesGen->add( val2 ); + valuesGen->add( val3 ); + generators.add( valuesGen ); + return generators; + } + + template + CompositeGenerator values( T val1, T val2, T val3, T val4 ) { + CompositeGenerator generators; + ValuesGenerator* valuesGen = new ValuesGenerator(); + valuesGen->add( val1 ); + valuesGen->add( val2 ); + valuesGen->add( val3 ); + valuesGen->add( val4 ); + generators.add( valuesGen ); + return generators; + } + +} // end namespace Generators + +using namespace Generators; + +} // end namespace Catch + +#define INTERNAL_CATCH_LINESTR2( line ) #line +#define INTERNAL_CATCH_LINESTR( line ) INTERNAL_CATCH_LINESTR2( line ) + +#define INTERNAL_CATCH_GENERATE( expr ) expr.setFileInfo( __FILE__ "(" INTERNAL_CATCH_LINESTR( __LINE__ ) ")" ) + +// #included from: internal/catch_interfaces_exception.h +#define TWOBLUECUBES_CATCH_INTERFACES_EXCEPTION_H_INCLUDED + +#include +#include + +// #included from: catch_interfaces_registry_hub.h +#define TWOBLUECUBES_CATCH_INTERFACES_REGISTRY_HUB_H_INCLUDED + +#include + +namespace Catch { + + class TestCase; + struct ITestCaseRegistry; + struct IExceptionTranslatorRegistry; + struct IExceptionTranslator; + struct IReporterRegistry; + struct IReporterFactory; + + struct IRegistryHub { + virtual ~IRegistryHub(); + + virtual IReporterRegistry const& getReporterRegistry() const = 0; + virtual ITestCaseRegistry const& getTestCaseRegistry() const = 0; + virtual IExceptionTranslatorRegistry& getExceptionTranslatorRegistry() = 0; + }; + + struct IMutableRegistryHub { + virtual ~IMutableRegistryHub(); + virtual void registerReporter( std::string const& name, Ptr const& factory ) = 0; + virtual void registerListener( Ptr const& factory ) = 0; + virtual void registerTest( TestCase const& testInfo ) = 0; + virtual void registerTranslator( const IExceptionTranslator* translator ) = 0; + }; + + IRegistryHub& getRegistryHub(); + IMutableRegistryHub& getMutableRegistryHub(); + void cleanUp(); + std::string translateActiveException(); + +} + +namespace Catch { + + typedef std::string(*exceptionTranslateFunction)(); + + struct IExceptionTranslator; + typedef std::vector ExceptionTranslators; + + struct IExceptionTranslator { + virtual ~IExceptionTranslator(); + virtual std::string translate( ExceptionTranslators::const_iterator it, ExceptionTranslators::const_iterator itEnd ) const = 0; + }; + + struct IExceptionTranslatorRegistry { + virtual ~IExceptionTranslatorRegistry(); + + virtual std::string translateActiveException() const = 0; + }; + + class ExceptionTranslatorRegistrar { + template + class ExceptionTranslator : public IExceptionTranslator { + public: + + ExceptionTranslator( std::string(*translateFunction)( T& ) ) + : m_translateFunction( translateFunction ) + {} + + virtual std::string translate( ExceptionTranslators::const_iterator it, ExceptionTranslators::const_iterator itEnd ) const CATCH_OVERRIDE { + try { + if( it == itEnd ) + throw; + else + return (*it)->translate( it+1, itEnd ); + } + catch( T& ex ) { + return m_translateFunction( ex ); + } + } + + protected: + std::string(*m_translateFunction)( T& ); + }; + + public: + template + ExceptionTranslatorRegistrar( std::string(*translateFunction)( T& ) ) { + getMutableRegistryHub().registerTranslator + ( new ExceptionTranslator( translateFunction ) ); + } + }; +} + +/////////////////////////////////////////////////////////////////////////////// +#define INTERNAL_CATCH_TRANSLATE_EXCEPTION2( translatorName, signature ) \ + static std::string translatorName( signature ); \ + namespace{ Catch::ExceptionTranslatorRegistrar INTERNAL_CATCH_UNIQUE_NAME( catch_internal_ExceptionRegistrar )( &translatorName ); }\ + static std::string translatorName( signature ) + +#define INTERNAL_CATCH_TRANSLATE_EXCEPTION( signature ) INTERNAL_CATCH_TRANSLATE_EXCEPTION2( INTERNAL_CATCH_UNIQUE_NAME( catch_internal_ExceptionTranslator ), signature ) + +// #included from: internal/catch_approx.hpp +#define TWOBLUECUBES_CATCH_APPROX_HPP_INCLUDED + +#include +#include + +namespace Catch { +namespace Detail { + + class Approx { + public: + explicit Approx ( double value ) + : m_epsilon( std::numeric_limits::epsilon()*100 ), + m_scale( 1.0 ), + m_value( value ) + {} + + Approx( Approx const& other ) + : m_epsilon( other.m_epsilon ), + m_scale( other.m_scale ), + m_value( other.m_value ) + {} + + static Approx custom() { + return Approx( 0 ); + } + + Approx operator()( double value ) { + Approx approx( value ); + approx.epsilon( m_epsilon ); + approx.scale( m_scale ); + return approx; + } + + friend bool operator == ( double lhs, Approx const& rhs ) { + // Thanks to Richard Harris for his help refining this formula + return fabs( lhs - rhs.m_value ) < rhs.m_epsilon * (rhs.m_scale + (std::max)( fabs(lhs), fabs(rhs.m_value) ) ); + } + + friend bool operator == ( Approx const& lhs, double rhs ) { + return operator==( rhs, lhs ); + } + + friend bool operator != ( double lhs, Approx const& rhs ) { + return !operator==( lhs, rhs ); + } + + friend bool operator != ( Approx const& lhs, double rhs ) { + return !operator==( rhs, lhs ); + } + + Approx& epsilon( double newEpsilon ) { + m_epsilon = newEpsilon; + return *this; + } + + Approx& scale( double newScale ) { + m_scale = newScale; + return *this; + } + + std::string toString() const { + std::ostringstream oss; + oss << "Approx( " << Catch::toString( m_value ) << " )"; + return oss.str(); + } + + private: + double m_epsilon; + double m_scale; + double m_value; + }; +} + +template<> +inline std::string toString( Detail::Approx const& value ) { + return value.toString(); +} + +} // end namespace Catch + +// #included from: internal/catch_interfaces_tag_alias_registry.h +#define TWOBLUECUBES_CATCH_INTERFACES_TAG_ALIAS_REGISTRY_H_INCLUDED + +// #included from: catch_tag_alias.h +#define TWOBLUECUBES_CATCH_TAG_ALIAS_H_INCLUDED + +#include + +namespace Catch { + + struct TagAlias { + TagAlias( std::string _tag, SourceLineInfo _lineInfo ) : tag( _tag ), lineInfo( _lineInfo ) {} + + std::string tag; + SourceLineInfo lineInfo; + }; + + struct RegistrarForTagAliases { + RegistrarForTagAliases( char const* alias, char const* tag, SourceLineInfo const& lineInfo ); + }; + +} // end namespace Catch + +#define CATCH_REGISTER_TAG_ALIAS( alias, spec ) namespace{ Catch::RegistrarForTagAliases INTERNAL_CATCH_UNIQUE_NAME( AutoRegisterTagAlias )( alias, spec, CATCH_INTERNAL_LINEINFO ); } +// #included from: catch_option.hpp +#define TWOBLUECUBES_CATCH_OPTION_HPP_INCLUDED + +namespace Catch { + + // An optional type + template + class Option { + public: + Option() : nullableValue( CATCH_NULL ) {} + Option( T const& _value ) + : nullableValue( new( storage ) T( _value ) ) + {} + Option( Option const& _other ) + : nullableValue( _other ? new( storage ) T( *_other ) : CATCH_NULL ) + {} + + ~Option() { + reset(); + } + + Option& operator= ( Option const& _other ) { + if( &_other != this ) { + reset(); + if( _other ) + nullableValue = new( storage ) T( *_other ); + } + return *this; + } + Option& operator = ( T const& _value ) { + reset(); + nullableValue = new( storage ) T( _value ); + return *this; + } + + void reset() { + if( nullableValue ) + nullableValue->~T(); + nullableValue = CATCH_NULL; + } + + T& operator*() { return *nullableValue; } + T const& operator*() const { return *nullableValue; } + T* operator->() { return nullableValue; } + const T* operator->() const { return nullableValue; } + + T valueOr( T const& defaultValue ) const { + return nullableValue ? *nullableValue : defaultValue; + } + + bool some() const { return nullableValue != CATCH_NULL; } + bool none() const { return nullableValue == CATCH_NULL; } + + bool operator !() const { return nullableValue == CATCH_NULL; } + operator SafeBool::type() const { + return SafeBool::makeSafe( some() ); + } + + private: + T* nullableValue; + char storage[sizeof(T)]; + }; + +} // end namespace Catch + +namespace Catch { + + struct ITagAliasRegistry { + virtual ~ITagAliasRegistry(); + virtual Option find( std::string const& alias ) const = 0; + virtual std::string expandAliases( std::string const& unexpandedTestSpec ) const = 0; + + static ITagAliasRegistry const& get(); + }; + +} // end namespace Catch + +// These files are included here so the single_include script doesn't put them +// in the conditionally compiled sections +// #included from: internal/catch_test_case_info.h +#define TWOBLUECUBES_CATCH_TEST_CASE_INFO_H_INCLUDED + +#include +#include + +#ifdef __clang__ +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wpadded" +#endif + +namespace Catch { + + struct ITestCase; + + struct TestCaseInfo { + enum SpecialProperties{ + None = 0, + IsHidden = 1 << 1, + ShouldFail = 1 << 2, + MayFail = 1 << 3, + Throws = 1 << 4 + }; + + TestCaseInfo( std::string const& _name, + std::string const& _className, + std::string const& _description, + std::set const& _tags, + SourceLineInfo const& _lineInfo ); + + TestCaseInfo( TestCaseInfo const& other ); + + friend void setTags( TestCaseInfo& testCaseInfo, std::set const& tags ); + + bool isHidden() const; + bool throws() const; + bool okToFail() const; + bool expectedToFail() const; + + std::string name; + std::string className; + std::string description; + std::set tags; + std::set lcaseTags; + std::string tagsAsString; + SourceLineInfo lineInfo; + SpecialProperties properties; + }; + + class TestCase : public TestCaseInfo { + public: + + TestCase( ITestCase* testCase, TestCaseInfo const& info ); + TestCase( TestCase const& other ); + + TestCase withName( std::string const& _newName ) const; + + void invoke() const; + + TestCaseInfo const& getTestCaseInfo() const; + + void swap( TestCase& other ); + bool operator == ( TestCase const& other ) const; + bool operator < ( TestCase const& other ) const; + TestCase& operator = ( TestCase const& other ); + + private: + Ptr test; + }; + + TestCase makeTestCase( ITestCase* testCase, + std::string const& className, + std::string const& name, + std::string const& description, + SourceLineInfo const& lineInfo ); +} + +#ifdef __clang__ +#pragma clang diagnostic pop +#endif + + +#ifdef __OBJC__ +// #included from: internal/catch_objc.hpp +#define TWOBLUECUBES_CATCH_OBJC_HPP_INCLUDED + +#import + +#include + +// NB. Any general catch headers included here must be included +// in catch.hpp first to make sure they are included by the single +// header for non obj-usage + +/////////////////////////////////////////////////////////////////////////////// +// This protocol is really only here for (self) documenting purposes, since +// all its methods are optional. +@protocol OcFixture + +@optional + +-(void) setUp; +-(void) tearDown; + +@end + +namespace Catch { + + class OcMethod : public SharedImpl { + + public: + OcMethod( Class cls, SEL sel ) : m_cls( cls ), m_sel( sel ) {} + + virtual void invoke() const { + id obj = [[m_cls alloc] init]; + + performOptionalSelector( obj, @selector(setUp) ); + performOptionalSelector( obj, m_sel ); + performOptionalSelector( obj, @selector(tearDown) ); + + arcSafeRelease( obj ); + } + private: + virtual ~OcMethod() {} + + Class m_cls; + SEL m_sel; + }; + + namespace Detail{ + + inline std::string getAnnotation( Class cls, + std::string const& annotationName, + std::string const& testCaseName ) { + NSString* selStr = [[NSString alloc] initWithFormat:@"Catch_%s_%s", annotationName.c_str(), testCaseName.c_str()]; + SEL sel = NSSelectorFromString( selStr ); + arcSafeRelease( selStr ); + id value = performOptionalSelector( cls, sel ); + if( value ) + return [(NSString*)value UTF8String]; + return ""; + } + } + + inline size_t registerTestMethods() { + size_t noTestMethods = 0; + int noClasses = objc_getClassList( CATCH_NULL, 0 ); + + Class* classes = (CATCH_UNSAFE_UNRETAINED Class *)malloc( sizeof(Class) * noClasses); + objc_getClassList( classes, noClasses ); + + for( int c = 0; c < noClasses; c++ ) { + Class cls = classes[c]; + { + u_int count; + Method* methods = class_copyMethodList( cls, &count ); + for( u_int m = 0; m < count ; m++ ) { + SEL selector = method_getName(methods[m]); + std::string methodName = sel_getName(selector); + if( startsWith( methodName, "Catch_TestCase_" ) ) { + std::string testCaseName = methodName.substr( 15 ); + std::string name = Detail::getAnnotation( cls, "Name", testCaseName ); + std::string desc = Detail::getAnnotation( cls, "Description", testCaseName ); + const char* className = class_getName( cls ); + + getMutableRegistryHub().registerTest( makeTestCase( new OcMethod( cls, selector ), className, name.c_str(), desc.c_str(), SourceLineInfo() ) ); + noTestMethods++; + } + } + free(methods); + } + } + return noTestMethods; + } + + namespace Matchers { + namespace Impl { + namespace NSStringMatchers { + + template + struct StringHolder : MatcherImpl{ + StringHolder( NSString* substr ) : m_substr( [substr copy] ){} + StringHolder( StringHolder const& other ) : m_substr( [other.m_substr copy] ){} + StringHolder() { + arcSafeRelease( m_substr ); + } + + NSString* m_substr; + }; + + struct Equals : StringHolder { + Equals( NSString* substr ) : StringHolder( substr ){} + + virtual bool match( ExpressionType const& str ) const { + return (str != nil || m_substr == nil ) && + [str isEqualToString:m_substr]; + } + + virtual std::string toString() const { + return "equals string: " + Catch::toString( m_substr ); + } + }; + + struct Contains : StringHolder { + Contains( NSString* substr ) : StringHolder( substr ){} + + virtual bool match( ExpressionType const& str ) const { + return (str != nil || m_substr == nil ) && + [str rangeOfString:m_substr].location != NSNotFound; + } + + virtual std::string toString() const { + return "contains string: " + Catch::toString( m_substr ); + } + }; + + struct StartsWith : StringHolder { + StartsWith( NSString* substr ) : StringHolder( substr ){} + + virtual bool match( ExpressionType const& str ) const { + return (str != nil || m_substr == nil ) && + [str rangeOfString:m_substr].location == 0; + } + + virtual std::string toString() const { + return "starts with: " + Catch::toString( m_substr ); + } + }; + struct EndsWith : StringHolder { + EndsWith( NSString* substr ) : StringHolder( substr ){} + + virtual bool match( ExpressionType const& str ) const { + return (str != nil || m_substr == nil ) && + [str rangeOfString:m_substr].location == [str length] - [m_substr length]; + } + + virtual std::string toString() const { + return "ends with: " + Catch::toString( m_substr ); + } + }; + + } // namespace NSStringMatchers + } // namespace Impl + + inline Impl::NSStringMatchers::Equals + Equals( NSString* substr ){ return Impl::NSStringMatchers::Equals( substr ); } + + inline Impl::NSStringMatchers::Contains + Contains( NSString* substr ){ return Impl::NSStringMatchers::Contains( substr ); } + + inline Impl::NSStringMatchers::StartsWith + StartsWith( NSString* substr ){ return Impl::NSStringMatchers::StartsWith( substr ); } + + inline Impl::NSStringMatchers::EndsWith + EndsWith( NSString* substr ){ return Impl::NSStringMatchers::EndsWith( substr ); } + + } // namespace Matchers + + using namespace Matchers; + +} // namespace Catch + +/////////////////////////////////////////////////////////////////////////////// +#define OC_TEST_CASE( name, desc )\ ++(NSString*) INTERNAL_CATCH_UNIQUE_NAME( Catch_Name_test ) \ +{\ +return @ name; \ +}\ ++(NSString*) INTERNAL_CATCH_UNIQUE_NAME( Catch_Description_test ) \ +{ \ +return @ desc; \ +} \ +-(void) INTERNAL_CATCH_UNIQUE_NAME( Catch_TestCase_test ) + +#endif + +#ifdef CATCH_IMPL +// #included from: internal/catch_impl.hpp +#define TWOBLUECUBES_CATCH_IMPL_HPP_INCLUDED + +// Collect all the implementation files together here +// These are the equivalent of what would usually be cpp files + +#ifdef __clang__ +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wweak-vtables" +#endif + +// #included from: ../catch_session.hpp +#define TWOBLUECUBES_CATCH_RUNNER_HPP_INCLUDED + +// #included from: internal/catch_commandline.hpp +#define TWOBLUECUBES_CATCH_COMMANDLINE_HPP_INCLUDED + +// #included from: catch_config.hpp +#define TWOBLUECUBES_CATCH_CONFIG_HPP_INCLUDED + +// #included from: catch_test_spec_parser.hpp +#define TWOBLUECUBES_CATCH_TEST_SPEC_PARSER_HPP_INCLUDED + +#ifdef __clang__ +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wpadded" +#endif + +// #included from: catch_test_spec.hpp +#define TWOBLUECUBES_CATCH_TEST_SPEC_HPP_INCLUDED + +#ifdef __clang__ +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wpadded" +#endif + +// #included from: catch_wildcard_pattern.hpp +#define TWOBLUECUBES_CATCH_WILDCARD_PATTERN_HPP_INCLUDED + +namespace Catch +{ + class WildcardPattern { + enum WildcardPosition { + NoWildcard = 0, + WildcardAtStart = 1, + WildcardAtEnd = 2, + WildcardAtBothEnds = WildcardAtStart | WildcardAtEnd + }; + + public: + + WildcardPattern( std::string const& pattern, CaseSensitive::Choice caseSensitivity ) + : m_caseSensitivity( caseSensitivity ), + m_wildcard( NoWildcard ), + m_pattern( adjustCase( pattern ) ) + { + if( startsWith( m_pattern, "*" ) ) { + m_pattern = m_pattern.substr( 1 ); + m_wildcard = WildcardAtStart; + } + if( endsWith( m_pattern, "*" ) ) { + m_pattern = m_pattern.substr( 0, m_pattern.size()-1 ); + m_wildcard = static_cast( m_wildcard | WildcardAtEnd ); + } + } + virtual ~WildcardPattern(); + virtual bool matches( std::string const& str ) const { + switch( m_wildcard ) { + case NoWildcard: + return m_pattern == adjustCase( str ); + case WildcardAtStart: + return endsWith( adjustCase( str ), m_pattern ); + case WildcardAtEnd: + return startsWith( adjustCase( str ), m_pattern ); + case WildcardAtBothEnds: + return contains( adjustCase( str ), m_pattern ); + } + +#ifdef __clang__ +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wunreachable-code" +#endif + throw std::logic_error( "Unknown enum" ); +#ifdef __clang__ +#pragma clang diagnostic pop +#endif + } + private: + std::string adjustCase( std::string const& str ) const { + return m_caseSensitivity == CaseSensitive::No ? toLower( str ) : str; + } + CaseSensitive::Choice m_caseSensitivity; + WildcardPosition m_wildcard; + std::string m_pattern; + }; +} + +#include +#include + +namespace Catch { + + class TestSpec { + struct Pattern : SharedImpl<> { + virtual ~Pattern(); + virtual bool matches( TestCaseInfo const& testCase ) const = 0; + }; + class NamePattern : public Pattern { + public: + NamePattern( std::string const& name ) + : m_wildcardPattern( toLower( name ), CaseSensitive::No ) + {} + virtual ~NamePattern(); + virtual bool matches( TestCaseInfo const& testCase ) const { + return m_wildcardPattern.matches( toLower( testCase.name ) ); + } + private: + WildcardPattern m_wildcardPattern; + }; + + class TagPattern : public Pattern { + public: + TagPattern( std::string const& tag ) : m_tag( toLower( tag ) ) {} + virtual ~TagPattern(); + virtual bool matches( TestCaseInfo const& testCase ) const { + return testCase.lcaseTags.find( m_tag ) != testCase.lcaseTags.end(); + } + private: + std::string m_tag; + }; + + class ExcludedPattern : public Pattern { + public: + ExcludedPattern( Ptr const& underlyingPattern ) : m_underlyingPattern( underlyingPattern ) {} + virtual ~ExcludedPattern(); + virtual bool matches( TestCaseInfo const& testCase ) const { return !m_underlyingPattern->matches( testCase ); } + private: + Ptr m_underlyingPattern; + }; + + struct Filter { + std::vector > m_patterns; + + bool matches( TestCaseInfo const& testCase ) const { + // All patterns in a filter must match for the filter to be a match + for( std::vector >::const_iterator it = m_patterns.begin(), itEnd = m_patterns.end(); it != itEnd; ++it ) + if( !(*it)->matches( testCase ) ) + return false; + return true; + } + }; + + public: + bool hasFilters() const { + return !m_filters.empty(); + } + bool matches( TestCaseInfo const& testCase ) const { + // A TestSpec matches if any filter matches + for( std::vector::const_iterator it = m_filters.begin(), itEnd = m_filters.end(); it != itEnd; ++it ) + if( it->matches( testCase ) ) + return true; + return false; + } + + private: + std::vector m_filters; + + friend class TestSpecParser; + }; +} + +#ifdef __clang__ +#pragma clang diagnostic pop +#endif + +namespace Catch { + + class TestSpecParser { + enum Mode{ None, Name, QuotedName, Tag }; + Mode m_mode; + bool m_exclusion; + std::size_t m_start, m_pos; + std::string m_arg; + TestSpec::Filter m_currentFilter; + TestSpec m_testSpec; + ITagAliasRegistry const* m_tagAliases; + + public: + TestSpecParser( ITagAliasRegistry const& tagAliases ) : m_tagAliases( &tagAliases ) {} + + TestSpecParser& parse( std::string const& arg ) { + m_mode = None; + m_exclusion = false; + m_start = std::string::npos; + m_arg = m_tagAliases->expandAliases( arg ); + for( m_pos = 0; m_pos < m_arg.size(); ++m_pos ) + visitChar( m_arg[m_pos] ); + if( m_mode == Name ) + addPattern(); + return *this; + } + TestSpec testSpec() { + addFilter(); + return m_testSpec; + } + private: + void visitChar( char c ) { + if( m_mode == None ) { + switch( c ) { + case ' ': return; + case '~': m_exclusion = true; return; + case '[': return startNewMode( Tag, ++m_pos ); + case '"': return startNewMode( QuotedName, ++m_pos ); + default: startNewMode( Name, m_pos ); break; + } + } + if( m_mode == Name ) { + if( c == ',' ) { + addPattern(); + addFilter(); + } + else if( c == '[' ) { + if( subString() == "exclude:" ) + m_exclusion = true; + else + addPattern(); + startNewMode( Tag, ++m_pos ); + } + } + else if( m_mode == QuotedName && c == '"' ) + addPattern(); + else if( m_mode == Tag && c == ']' ) + addPattern(); + } + void startNewMode( Mode mode, std::size_t start ) { + m_mode = mode; + m_start = start; + } + std::string subString() const { return m_arg.substr( m_start, m_pos - m_start ); } + template + void addPattern() { + std::string token = subString(); + if( startsWith( token, "exclude:" ) ) { + m_exclusion = true; + token = token.substr( 8 ); + } + if( !token.empty() ) { + Ptr pattern = new T( token ); + if( m_exclusion ) + pattern = new TestSpec::ExcludedPattern( pattern ); + m_currentFilter.m_patterns.push_back( pattern ); + } + m_exclusion = false; + m_mode = None; + } + void addFilter() { + if( !m_currentFilter.m_patterns.empty() ) { + m_testSpec.m_filters.push_back( m_currentFilter ); + m_currentFilter = TestSpec::Filter(); + } + } + }; + inline TestSpec parseTestSpec( std::string const& arg ) { + return TestSpecParser( ITagAliasRegistry::get() ).parse( arg ).testSpec(); + } + +} // namespace Catch + +#ifdef __clang__ +#pragma clang diagnostic pop +#endif + +// #included from: catch_interfaces_config.h +#define TWOBLUECUBES_CATCH_INTERFACES_CONFIG_H_INCLUDED + +#include +#include +#include + +namespace Catch { + + struct Verbosity { enum Level { + NoOutput = 0, + Quiet, + Normal + }; }; + + struct WarnAbout { enum What { + Nothing = 0x00, + NoAssertions = 0x01 + }; }; + + struct ShowDurations { enum OrNot { + DefaultForReporter, + Always, + Never + }; }; + struct RunTests { enum InWhatOrder { + InDeclarationOrder, + InLexicographicalOrder, + InRandomOrder + }; }; + struct UseColour { enum YesOrNo { + Auto, + Yes, + No + }; }; + + class TestSpec; + + struct IConfig : IShared { + + virtual ~IConfig(); + + virtual bool allowThrows() const = 0; + virtual std::ostream& stream() const = 0; + virtual std::string name() const = 0; + virtual bool includeSuccessfulResults() const = 0; + virtual bool shouldDebugBreak() const = 0; + virtual bool warnAboutMissingAssertions() const = 0; + virtual int abortAfter() const = 0; + virtual bool showInvisibles() const = 0; + virtual ShowDurations::OrNot showDurations() const = 0; + virtual TestSpec const& testSpec() const = 0; + virtual RunTests::InWhatOrder runOrder() const = 0; + virtual unsigned int rngSeed() const = 0; + virtual UseColour::YesOrNo useColour() const = 0; + }; +} + +// #included from: catch_stream.h +#define TWOBLUECUBES_CATCH_STREAM_H_INCLUDED + +// #included from: catch_streambuf.h +#define TWOBLUECUBES_CATCH_STREAMBUF_H_INCLUDED + +#include + +namespace Catch { + + class StreamBufBase : public std::streambuf { + public: + virtual ~StreamBufBase() CATCH_NOEXCEPT; + }; +} + +#include +#include +#include + +namespace Catch { + + std::ostream& cout(); + std::ostream& cerr(); + + struct IStream { + virtual ~IStream() CATCH_NOEXCEPT; + virtual std::ostream& stream() const = 0; + }; + + class FileStream : public IStream { + mutable std::ofstream m_ofs; + public: + FileStream( std::string const& filename ); + virtual ~FileStream() CATCH_NOEXCEPT; + public: // IStream + virtual std::ostream& stream() const CATCH_OVERRIDE; + }; + + class CoutStream : public IStream { + mutable std::ostream m_os; + public: + CoutStream(); + virtual ~CoutStream() CATCH_NOEXCEPT; + + public: // IStream + virtual std::ostream& stream() const CATCH_OVERRIDE; + }; + + class DebugOutStream : public IStream { + std::auto_ptr m_streamBuf; + mutable std::ostream m_os; + public: + DebugOutStream(); + virtual ~DebugOutStream() CATCH_NOEXCEPT; + + public: // IStream + virtual std::ostream& stream() const CATCH_OVERRIDE; + }; +} + +#include +#include +#include +#include +#include + +#ifndef CATCH_CONFIG_CONSOLE_WIDTH +#define CATCH_CONFIG_CONSOLE_WIDTH 80 +#endif + +namespace Catch { + + struct ConfigData { + + ConfigData() + : listTests( false ), + listTags( false ), + listReporters( false ), + listTestNamesOnly( false ), + showSuccessfulTests( false ), + shouldDebugBreak( false ), + noThrow( false ), + showHelp( false ), + showInvisibles( false ), + filenamesAsTags( false ), + abortAfter( -1 ), + rngSeed( 0 ), + verbosity( Verbosity::Normal ), + warnings( WarnAbout::Nothing ), + showDurations( ShowDurations::DefaultForReporter ), + runOrder( RunTests::InDeclarationOrder ), + useColour( UseColour::Auto ) + {} + + bool listTests; + bool listTags; + bool listReporters; + bool listTestNamesOnly; + + bool showSuccessfulTests; + bool shouldDebugBreak; + bool noThrow; + bool showHelp; + bool showInvisibles; + bool filenamesAsTags; + + int abortAfter; + unsigned int rngSeed; + + Verbosity::Level verbosity; + WarnAbout::What warnings; + ShowDurations::OrNot showDurations; + RunTests::InWhatOrder runOrder; + UseColour::YesOrNo useColour; + + std::string outputFilename; + std::string name; + std::string processName; + + std::vector reporterNames; + std::vector testsOrTags; + }; + + class Config : public SharedImpl { + private: + Config( Config const& other ); + Config& operator = ( Config const& other ); + virtual void dummy(); + public: + + Config() + {} + + Config( ConfigData const& data ) + : m_data( data ), + m_stream( openStream() ) + { + if( !data.testsOrTags.empty() ) { + TestSpecParser parser( ITagAliasRegistry::get() ); + for( std::size_t i = 0; i < data.testsOrTags.size(); ++i ) + parser.parse( data.testsOrTags[i] ); + m_testSpec = parser.testSpec(); + } + } + + virtual ~Config() { + } + + std::string const& getFilename() const { + return m_data.outputFilename ; + } + + bool listTests() const { return m_data.listTests; } + bool listTestNamesOnly() const { return m_data.listTestNamesOnly; } + bool listTags() const { return m_data.listTags; } + bool listReporters() const { return m_data.listReporters; } + + std::string getProcessName() const { return m_data.processName; } + + bool shouldDebugBreak() const { return m_data.shouldDebugBreak; } + + std::vector getReporterNames() const { return m_data.reporterNames; } + + int abortAfter() const { return m_data.abortAfter; } + + TestSpec const& testSpec() const { return m_testSpec; } + + bool showHelp() const { return m_data.showHelp; } + bool showInvisibles() const { return m_data.showInvisibles; } + + // IConfig interface + virtual bool allowThrows() const { return !m_data.noThrow; } + virtual std::ostream& stream() const { return m_stream->stream(); } + virtual std::string name() const { return m_data.name.empty() ? m_data.processName : m_data.name; } + virtual bool includeSuccessfulResults() const { return m_data.showSuccessfulTests; } + virtual bool warnAboutMissingAssertions() const { return m_data.warnings & WarnAbout::NoAssertions; } + virtual ShowDurations::OrNot showDurations() const { return m_data.showDurations; } + virtual RunTests::InWhatOrder runOrder() const { return m_data.runOrder; } + virtual unsigned int rngSeed() const { return m_data.rngSeed; } + virtual UseColour::YesOrNo useColour() const { return m_data.useColour; } + + private: + + IStream const* openStream() { + if( m_data.outputFilename.empty() ) + return new CoutStream(); + else if( m_data.outputFilename[0] == '%' ) { + if( m_data.outputFilename == "%debug" ) + return new DebugOutStream(); + else + throw std::domain_error( "Unrecognised stream: " + m_data.outputFilename ); + } + else + return new FileStream( m_data.outputFilename ); + } + ConfigData m_data; + + std::auto_ptr m_stream; + TestSpec m_testSpec; + }; + +} // end namespace Catch + +// #included from: catch_clara.h +#define TWOBLUECUBES_CATCH_CLARA_H_INCLUDED + +// Use Catch's value for console width (store Clara's off to the side, if present) +#ifdef CLARA_CONFIG_CONSOLE_WIDTH +#define CATCH_TEMP_CLARA_CONFIG_CONSOLE_WIDTH CLARA_CONFIG_CONSOLE_WIDTH +#undef CLARA_CONFIG_CONSOLE_WIDTH +#endif +#define CLARA_CONFIG_CONSOLE_WIDTH CATCH_CONFIG_CONSOLE_WIDTH + +// Declare Clara inside the Catch namespace +#define STITCH_CLARA_OPEN_NAMESPACE namespace Catch { +// #included from: ../external/clara.h + +// Version 0.0.2.3 + +// Only use header guard if we are not using an outer namespace +#if !defined(TWOBLUECUBES_CLARA_H_INCLUDED) || defined(STITCH_CLARA_OPEN_NAMESPACE) + +#ifndef STITCH_CLARA_OPEN_NAMESPACE +#define TWOBLUECUBES_CLARA_H_INCLUDED +#define STITCH_CLARA_OPEN_NAMESPACE +#define STITCH_CLARA_CLOSE_NAMESPACE +#else +#define STITCH_CLARA_CLOSE_NAMESPACE } +#endif + +#define STITCH_TBC_TEXT_FORMAT_OPEN_NAMESPACE STITCH_CLARA_OPEN_NAMESPACE + +// ----------- #included from tbc_text_format.h ----------- + +// Only use header guard if we are not using an outer namespace +#if !defined(TBC_TEXT_FORMAT_H_INCLUDED) || defined(STITCH_TBC_TEXT_FORMAT_OUTER_NAMESPACE) +#ifndef STITCH_TBC_TEXT_FORMAT_OUTER_NAMESPACE +#define TBC_TEXT_FORMAT_H_INCLUDED +#endif + +#include +#include +#include +#include + +// Use optional outer namespace +#ifdef STITCH_TBC_TEXT_FORMAT_OUTER_NAMESPACE +namespace STITCH_TBC_TEXT_FORMAT_OUTER_NAMESPACE { +#endif + +namespace Tbc { + +#ifdef TBC_TEXT_FORMAT_CONSOLE_WIDTH + const unsigned int consoleWidth = TBC_TEXT_FORMAT_CONSOLE_WIDTH; +#else + const unsigned int consoleWidth = 80; +#endif + + struct TextAttributes { + TextAttributes() + : initialIndent( std::string::npos ), + indent( 0 ), + width( consoleWidth-1 ), + tabChar( '\t' ) + {} + + TextAttributes& setInitialIndent( std::size_t _value ) { initialIndent = _value; return *this; } + TextAttributes& setIndent( std::size_t _value ) { indent = _value; return *this; } + TextAttributes& setWidth( std::size_t _value ) { width = _value; return *this; } + TextAttributes& setTabChar( char _value ) { tabChar = _value; return *this; } + + std::size_t initialIndent; // indent of first line, or npos + std::size_t indent; // indent of subsequent lines, or all if initialIndent is npos + std::size_t width; // maximum width of text, including indent. Longer text will wrap + char tabChar; // If this char is seen the indent is changed to current pos + }; + + class Text { + public: + Text( std::string const& _str, TextAttributes const& _attr = TextAttributes() ) + : attr( _attr ) + { + std::string wrappableChars = " [({.,/|\\-"; + std::size_t indent = _attr.initialIndent != std::string::npos + ? _attr.initialIndent + : _attr.indent; + std::string remainder = _str; + + while( !remainder.empty() ) { + if( lines.size() >= 1000 ) { + lines.push_back( "... message truncated due to excessive size" ); + return; + } + std::size_t tabPos = std::string::npos; + std::size_t width = (std::min)( remainder.size(), _attr.width - indent ); + std::size_t pos = remainder.find_first_of( '\n' ); + if( pos <= width ) { + width = pos; + } + pos = remainder.find_last_of( _attr.tabChar, width ); + if( pos != std::string::npos ) { + tabPos = pos; + if( remainder[width] == '\n' ) + width--; + remainder = remainder.substr( 0, tabPos ) + remainder.substr( tabPos+1 ); + } + + if( width == remainder.size() ) { + spliceLine( indent, remainder, width ); + } + else if( remainder[width] == '\n' ) { + spliceLine( indent, remainder, width ); + if( width <= 1 || remainder.size() != 1 ) + remainder = remainder.substr( 1 ); + indent = _attr.indent; + } + else { + pos = remainder.find_last_of( wrappableChars, width ); + if( pos != std::string::npos && pos > 0 ) { + spliceLine( indent, remainder, pos ); + if( remainder[0] == ' ' ) + remainder = remainder.substr( 1 ); + } + else { + spliceLine( indent, remainder, width-1 ); + lines.back() += "-"; + } + if( lines.size() == 1 ) + indent = _attr.indent; + if( tabPos != std::string::npos ) + indent += tabPos; + } + } + } + + void spliceLine( std::size_t _indent, std::string& _remainder, std::size_t _pos ) { + lines.push_back( std::string( _indent, ' ' ) + _remainder.substr( 0, _pos ) ); + _remainder = _remainder.substr( _pos ); + } + + typedef std::vector::const_iterator const_iterator; + + const_iterator begin() const { return lines.begin(); } + const_iterator end() const { return lines.end(); } + std::string const& last() const { return lines.back(); } + std::size_t size() const { return lines.size(); } + std::string const& operator[]( std::size_t _index ) const { return lines[_index]; } + std::string toString() const { + std::ostringstream oss; + oss << *this; + return oss.str(); + } + + inline friend std::ostream& operator << ( std::ostream& _stream, Text const& _text ) { + for( Text::const_iterator it = _text.begin(), itEnd = _text.end(); + it != itEnd; ++it ) { + if( it != _text.begin() ) + _stream << "\n"; + _stream << *it; + } + return _stream; + } + + private: + std::string str; + TextAttributes attr; + std::vector lines; + }; + +} // end namespace Tbc + +#ifdef STITCH_TBC_TEXT_FORMAT_OUTER_NAMESPACE +} // end outer namespace +#endif + +#endif // TBC_TEXT_FORMAT_H_INCLUDED + +// ----------- end of #include from tbc_text_format.h ----------- +// ........... back in clara.h + +#undef STITCH_TBC_TEXT_FORMAT_OPEN_NAMESPACE + +// ----------- #included from clara_compilers.h ----------- + +#ifndef TWOBLUECUBES_CLARA_COMPILERS_H_INCLUDED +#define TWOBLUECUBES_CLARA_COMPILERS_H_INCLUDED + +// Detect a number of compiler features - mostly C++11/14 conformance - by compiler +// The following features are defined: +// +// CLARA_CONFIG_CPP11_NULLPTR : is nullptr supported? +// CLARA_CONFIG_CPP11_NOEXCEPT : is noexcept supported? +// CLARA_CONFIG_CPP11_GENERATED_METHODS : The delete and default keywords for compiler generated methods +// CLARA_CONFIG_CPP11_OVERRIDE : is override supported? +// CLARA_CONFIG_CPP11_UNIQUE_PTR : is unique_ptr supported (otherwise use auto_ptr) + +// CLARA_CONFIG_CPP11_OR_GREATER : Is C++11 supported? + +// CLARA_CONFIG_VARIADIC_MACROS : are variadic macros supported? + +// In general each macro has a _NO_ form +// (e.g. CLARA_CONFIG_CPP11_NO_NULLPTR) which disables the feature. +// Many features, at point of detection, define an _INTERNAL_ macro, so they +// can be combined, en-mass, with the _NO_ forms later. + +// All the C++11 features can be disabled with CLARA_CONFIG_NO_CPP11 + +#ifdef __clang__ + +#if __has_feature(cxx_nullptr) +#define CLARA_INTERNAL_CONFIG_CPP11_NULLPTR +#endif + +#if __has_feature(cxx_noexcept) +#define CLARA_INTERNAL_CONFIG_CPP11_NOEXCEPT +#endif + +#endif // __clang__ + +//////////////////////////////////////////////////////////////////////////////// +// GCC +#ifdef __GNUC__ + +#if __GNUC__ == 4 && __GNUC_MINOR__ >= 6 && defined(__GXX_EXPERIMENTAL_CXX0X__) +#define CLARA_INTERNAL_CONFIG_CPP11_NULLPTR +#endif + +// - otherwise more recent versions define __cplusplus >= 201103L +// and will get picked up below + +#endif // __GNUC__ + +//////////////////////////////////////////////////////////////////////////////// +// Visual C++ +#ifdef _MSC_VER + +#if (_MSC_VER >= 1600) +#define CLARA_INTERNAL_CONFIG_CPP11_NULLPTR +#define CLARA_INTERNAL_CONFIG_CPP11_UNIQUE_PTR +#endif + +#if (_MSC_VER >= 1900 ) // (VC++ 13 (VS2015)) +#define CLARA_INTERNAL_CONFIG_CPP11_NOEXCEPT +#define CLARA_INTERNAL_CONFIG_CPP11_GENERATED_METHODS +#endif + +#endif // _MSC_VER + +//////////////////////////////////////////////////////////////////////////////// +// C++ language feature support + +// catch all support for C++11 +#if defined(__cplusplus) && __cplusplus >= 201103L + +#define CLARA_CPP11_OR_GREATER + +#if !defined(CLARA_INTERNAL_CONFIG_CPP11_NULLPTR) +#define CLARA_INTERNAL_CONFIG_CPP11_NULLPTR +#endif + +#ifndef CLARA_INTERNAL_CONFIG_CPP11_NOEXCEPT +#define CLARA_INTERNAL_CONFIG_CPP11_NOEXCEPT +#endif + +#ifndef CLARA_INTERNAL_CONFIG_CPP11_GENERATED_METHODS +#define CLARA_INTERNAL_CONFIG_CPP11_GENERATED_METHODS +#endif + +#if !defined(CLARA_INTERNAL_CONFIG_CPP11_OVERRIDE) +#define CLARA_INTERNAL_CONFIG_CPP11_OVERRIDE +#endif +#if !defined(CLARA_INTERNAL_CONFIG_CPP11_UNIQUE_PTR) +#define CLARA_INTERNAL_CONFIG_CPP11_UNIQUE_PTR +#endif + +#endif // __cplusplus >= 201103L + +// Now set the actual defines based on the above + anything the user has configured +#if defined(CLARA_INTERNAL_CONFIG_CPP11_NULLPTR) && !defined(CLARA_CONFIG_CPP11_NO_NULLPTR) && !defined(CLARA_CONFIG_CPP11_NULLPTR) && !defined(CLARA_CONFIG_NO_CPP11) +#define CLARA_CONFIG_CPP11_NULLPTR +#endif +#if defined(CLARA_INTERNAL_CONFIG_CPP11_NOEXCEPT) && !defined(CLARA_CONFIG_CPP11_NO_NOEXCEPT) && !defined(CLARA_CONFIG_CPP11_NOEXCEPT) && !defined(CLARA_CONFIG_NO_CPP11) +#define CLARA_CONFIG_CPP11_NOEXCEPT +#endif +#if defined(CLARA_INTERNAL_CONFIG_CPP11_GENERATED_METHODS) && !defined(CLARA_CONFIG_CPP11_NO_GENERATED_METHODS) && !defined(CLARA_CONFIG_CPP11_GENERATED_METHODS) && !defined(CLARA_CONFIG_NO_CPP11) +#define CLARA_CONFIG_CPP11_GENERATED_METHODS +#endif +#if defined(CLARA_INTERNAL_CONFIG_CPP11_OVERRIDE) && !defined(CLARA_CONFIG_NO_OVERRIDE) && !defined(CLARA_CONFIG_CPP11_OVERRIDE) && !defined(CLARA_CONFIG_NO_CPP11) +#define CLARA_CONFIG_CPP11_OVERRIDE +#endif +#if defined(CLARA_INTERNAL_CONFIG_CPP11_UNIQUE_PTR) && !defined(CLARA_CONFIG_NO_UNIQUE_PTR) && !defined(CLARA_CONFIG_CPP11_UNIQUE_PTR) && !defined(CLARA_CONFIG_NO_CPP11) +#define CLARA_CONFIG_CPP11_UNIQUE_PTR +#endif + +// noexcept support: +#if defined(CLARA_CONFIG_CPP11_NOEXCEPT) && !defined(CLARA_NOEXCEPT) +#define CLARA_NOEXCEPT noexcept +# define CLARA_NOEXCEPT_IS(x) noexcept(x) +#else +#define CLARA_NOEXCEPT throw() +# define CLARA_NOEXCEPT_IS(x) +#endif + +// nullptr support +#ifdef CLARA_CONFIG_CPP11_NULLPTR +#define CLARA_NULL nullptr +#else +#define CLARA_NULL NULL +#endif + +// override support +#ifdef CLARA_CONFIG_CPP11_OVERRIDE +#define CLARA_OVERRIDE override +#else +#define CLARA_OVERRIDE +#endif + +// unique_ptr support +#ifdef CLARA_CONFIG_CPP11_UNIQUE_PTR +# define CLARA_AUTO_PTR( T ) std::unique_ptr +#else +# define CLARA_AUTO_PTR( T ) std::auto_ptr +#endif + +#endif // TWOBLUECUBES_CLARA_COMPILERS_H_INCLUDED + +// ----------- end of #include from clara_compilers.h ----------- +// ........... back in clara.h + +#include +#include +#include + +#if defined(WIN32) || defined(__WIN32__) || defined(_WIN32) || defined(_MSC_VER) +#define CLARA_PLATFORM_WINDOWS +#endif + +// Use optional outer namespace +#ifdef STITCH_CLARA_OPEN_NAMESPACE +STITCH_CLARA_OPEN_NAMESPACE +#endif + +namespace Clara { + + struct UnpositionalTag {}; + + extern UnpositionalTag _; + +#ifdef CLARA_CONFIG_MAIN + UnpositionalTag _; +#endif + + namespace Detail { + +#ifdef CLARA_CONSOLE_WIDTH + const unsigned int consoleWidth = CLARA_CONFIG_CONSOLE_WIDTH; +#else + const unsigned int consoleWidth = 80; +#endif + + using namespace Tbc; + + inline bool startsWith( std::string const& str, std::string const& prefix ) { + return str.size() >= prefix.size() && str.substr( 0, prefix.size() ) == prefix; + } + + template struct RemoveConstRef{ typedef T type; }; + template struct RemoveConstRef{ typedef T type; }; + template struct RemoveConstRef{ typedef T type; }; + template struct RemoveConstRef{ typedef T type; }; + + template struct IsBool { static const bool value = false; }; + template<> struct IsBool { static const bool value = true; }; + + template + void convertInto( std::string const& _source, T& _dest ) { + std::stringstream ss; + ss << _source; + ss >> _dest; + if( ss.fail() ) + throw std::runtime_error( "Unable to convert " + _source + " to destination type" ); + } + inline void convertInto( std::string const& _source, std::string& _dest ) { + _dest = _source; + } + inline void convertInto( std::string const& _source, bool& _dest ) { + std::string sourceLC = _source; + std::transform( sourceLC.begin(), sourceLC.end(), sourceLC.begin(), ::tolower ); + if( sourceLC == "y" || sourceLC == "1" || sourceLC == "true" || sourceLC == "yes" || sourceLC == "on" ) + _dest = true; + else if( sourceLC == "n" || sourceLC == "0" || sourceLC == "false" || sourceLC == "no" || sourceLC == "off" ) + _dest = false; + else + throw std::runtime_error( "Expected a boolean value but did not recognise:\n '" + _source + "'" ); + } + + template + struct IArgFunction { + virtual ~IArgFunction() {} +#ifdef CLARA_CONFIG_CPP11_GENERATED_METHODS + IArgFunction() = default; + IArgFunction( IArgFunction const& ) = default; +#endif + virtual void set( ConfigT& config, std::string const& value ) const = 0; + virtual bool takesArg() const = 0; + virtual IArgFunction* clone() const = 0; + }; + + template + class BoundArgFunction { + public: + BoundArgFunction() : functionObj( CLARA_NULL ) {} + BoundArgFunction( IArgFunction* _functionObj ) : functionObj( _functionObj ) {} + BoundArgFunction( BoundArgFunction const& other ) : functionObj( other.functionObj ? other.functionObj->clone() : CLARA_NULL ) {} + BoundArgFunction& operator = ( BoundArgFunction const& other ) { + IArgFunction* newFunctionObj = other.functionObj ? other.functionObj->clone() : CLARA_NULL; + delete functionObj; + functionObj = newFunctionObj; + return *this; + } + ~BoundArgFunction() { delete functionObj; } + + void set( ConfigT& config, std::string const& value ) const { + functionObj->set( config, value ); + } + bool takesArg() const { return functionObj->takesArg(); } + + bool isSet() const { + return functionObj != CLARA_NULL; + } + private: + IArgFunction* functionObj; + }; + + template + struct NullBinder : IArgFunction{ + virtual void set( C&, std::string const& ) const {} + virtual bool takesArg() const { return true; } + virtual IArgFunction* clone() const { return new NullBinder( *this ); } + }; + + template + struct BoundDataMember : IArgFunction{ + BoundDataMember( M C::* _member ) : member( _member ) {} + virtual void set( C& p, std::string const& stringValue ) const { + convertInto( stringValue, p.*member ); + } + virtual bool takesArg() const { return !IsBool::value; } + virtual IArgFunction* clone() const { return new BoundDataMember( *this ); } + M C::* member; + }; + template + struct BoundUnaryMethod : IArgFunction{ + BoundUnaryMethod( void (C::*_member)( M ) ) : member( _member ) {} + virtual void set( C& p, std::string const& stringValue ) const { + typename RemoveConstRef::type value; + convertInto( stringValue, value ); + (p.*member)( value ); + } + virtual bool takesArg() const { return !IsBool::value; } + virtual IArgFunction* clone() const { return new BoundUnaryMethod( *this ); } + void (C::*member)( M ); + }; + template + struct BoundNullaryMethod : IArgFunction{ + BoundNullaryMethod( void (C::*_member)() ) : member( _member ) {} + virtual void set( C& p, std::string const& stringValue ) const { + bool value; + convertInto( stringValue, value ); + if( value ) + (p.*member)(); + } + virtual bool takesArg() const { return false; } + virtual IArgFunction* clone() const { return new BoundNullaryMethod( *this ); } + void (C::*member)(); + }; + + template + struct BoundUnaryFunction : IArgFunction{ + BoundUnaryFunction( void (*_function)( C& ) ) : function( _function ) {} + virtual void set( C& obj, std::string const& stringValue ) const { + bool value; + convertInto( stringValue, value ); + if( value ) + function( obj ); + } + virtual bool takesArg() const { return false; } + virtual IArgFunction* clone() const { return new BoundUnaryFunction( *this ); } + void (*function)( C& ); + }; + + template + struct BoundBinaryFunction : IArgFunction{ + BoundBinaryFunction( void (*_function)( C&, T ) ) : function( _function ) {} + virtual void set( C& obj, std::string const& stringValue ) const { + typename RemoveConstRef::type value; + convertInto( stringValue, value ); + function( obj, value ); + } + virtual bool takesArg() const { return !IsBool::value; } + virtual IArgFunction* clone() const { return new BoundBinaryFunction( *this ); } + void (*function)( C&, T ); + }; + + } // namespace Detail + + inline std::vector argsToVector( int argc, char const* const* const argv ) { + std::vector args( static_cast( argc ) ); + for( std::size_t i = 0; i < static_cast( argc ); ++i ) + args[i] = argv[i]; + + return args; + } + + class Parser { + enum Mode { None, MaybeShortOpt, SlashOpt, ShortOpt, LongOpt, Positional }; + Mode mode; + std::size_t from; + bool inQuotes; + public: + + struct Token { + enum Type { Positional, ShortOpt, LongOpt }; + Token( Type _type, std::string const& _data ) : type( _type ), data( _data ) {} + Type type; + std::string data; + }; + + Parser() : mode( None ), from( 0 ), inQuotes( false ){} + + void parseIntoTokens( std::vector const& args, std::vector& tokens ) { + const std::string doubleDash = "--"; + for( std::size_t i = 1; i < args.size() && args[i] != doubleDash; ++i ) + parseIntoTokens( args[i], tokens); + } + + void parseIntoTokens( std::string const& arg, std::vector& tokens ) { + for( std::size_t i = 0; i <= arg.size(); ++i ) { + char c = arg[i]; + if( c == '"' ) + inQuotes = !inQuotes; + mode = handleMode( i, c, arg, tokens ); + } + } + Mode handleMode( std::size_t i, char c, std::string const& arg, std::vector& tokens ) { + switch( mode ) { + case None: return handleNone( i, c ); + case MaybeShortOpt: return handleMaybeShortOpt( i, c ); + case ShortOpt: + case LongOpt: + case SlashOpt: return handleOpt( i, c, arg, tokens ); + case Positional: return handlePositional( i, c, arg, tokens ); + default: throw std::logic_error( "Unknown mode" ); + } + } + + Mode handleNone( std::size_t i, char c ) { + if( inQuotes ) { + from = i; + return Positional; + } + switch( c ) { + case '-': return MaybeShortOpt; +#ifdef CLARA_PLATFORM_WINDOWS + case '/': from = i+1; return SlashOpt; +#endif + default: from = i; return Positional; + } + } + Mode handleMaybeShortOpt( std::size_t i, char c ) { + switch( c ) { + case '-': from = i+1; return LongOpt; + default: from = i; return ShortOpt; + } + } + Mode handleOpt( std::size_t i, char c, std::string const& arg, std::vector& tokens ) { + if( std::string( " \t:=\0", 5 ).find( c ) == std::string::npos ) + return mode; + + std::string optName = arg.substr( from, i-from ); + if( mode == ShortOpt ) + for( std::size_t j = 0; j < optName.size(); ++j ) + tokens.push_back( Token( Token::ShortOpt, optName.substr( j, 1 ) ) ); + else if( mode == SlashOpt && optName.size() == 1 ) + tokens.push_back( Token( Token::ShortOpt, optName ) ); + else + tokens.push_back( Token( Token::LongOpt, optName ) ); + return None; + } + Mode handlePositional( std::size_t i, char c, std::string const& arg, std::vector& tokens ) { + if( inQuotes || std::string( " \t\0", 3 ).find( c ) == std::string::npos ) + return mode; + + std::string data = arg.substr( from, i-from ); + tokens.push_back( Token( Token::Positional, data ) ); + return None; + } + }; + + template + struct CommonArgProperties { + CommonArgProperties() {} + CommonArgProperties( Detail::BoundArgFunction const& _boundField ) : boundField( _boundField ) {} + + Detail::BoundArgFunction boundField; + std::string description; + std::string detail; + std::string placeholder; // Only value if boundField takes an arg + + bool takesArg() const { + return !placeholder.empty(); + } + void validate() const { + if( !boundField.isSet() ) + throw std::logic_error( "option not bound" ); + } + }; + struct OptionArgProperties { + std::vector shortNames; + std::string longName; + + bool hasShortName( std::string const& shortName ) const { + return std::find( shortNames.begin(), shortNames.end(), shortName ) != shortNames.end(); + } + bool hasLongName( std::string const& _longName ) const { + return _longName == longName; + } + }; + struct PositionalArgProperties { + PositionalArgProperties() : position( -1 ) {} + int position; // -1 means non-positional (floating) + + bool isFixedPositional() const { + return position != -1; + } + }; + + template + class CommandLine { + + struct Arg : CommonArgProperties, OptionArgProperties, PositionalArgProperties { + Arg() {} + Arg( Detail::BoundArgFunction const& _boundField ) : CommonArgProperties( _boundField ) {} + + using CommonArgProperties::placeholder; // !TBD + + std::string dbgName() const { + if( !longName.empty() ) + return "--" + longName; + if( !shortNames.empty() ) + return "-" + shortNames[0]; + return "positional args"; + } + std::string commands() const { + std::ostringstream oss; + bool first = true; + std::vector::const_iterator it = shortNames.begin(), itEnd = shortNames.end(); + for(; it != itEnd; ++it ) { + if( first ) + first = false; + else + oss << ", "; + oss << "-" << *it; + } + if( !longName.empty() ) { + if( !first ) + oss << ", "; + oss << "--" << longName; + } + if( !placeholder.empty() ) + oss << " <" << placeholder << ">"; + return oss.str(); + } + }; + + typedef CLARA_AUTO_PTR( Arg ) ArgAutoPtr; + + friend void addOptName( Arg& arg, std::string const& optName ) + { + if( optName.empty() ) + return; + if( Detail::startsWith( optName, "--" ) ) { + if( !arg.longName.empty() ) + throw std::logic_error( "Only one long opt may be specified. '" + + arg.longName + + "' already specified, now attempting to add '" + + optName + "'" ); + arg.longName = optName.substr( 2 ); + } + else if( Detail::startsWith( optName, "-" ) ) + arg.shortNames.push_back( optName.substr( 1 ) ); + else + throw std::logic_error( "option must begin with - or --. Option was: '" + optName + "'" ); + } + friend void setPositionalArg( Arg& arg, int position ) + { + arg.position = position; + } + + class ArgBuilder { + public: + ArgBuilder( Arg* arg ) : m_arg( arg ) {} + + // Bind a non-boolean data member (requires placeholder string) + template + void bind( M C::* field, std::string const& placeholder ) { + m_arg->boundField = new Detail::BoundDataMember( field ); + m_arg->placeholder = placeholder; + } + // Bind a boolean data member (no placeholder required) + template + void bind( bool C::* field ) { + m_arg->boundField = new Detail::BoundDataMember( field ); + } + + // Bind a method taking a single, non-boolean argument (requires a placeholder string) + template + void bind( void (C::* unaryMethod)( M ), std::string const& placeholder ) { + m_arg->boundField = new Detail::BoundUnaryMethod( unaryMethod ); + m_arg->placeholder = placeholder; + } + + // Bind a method taking a single, boolean argument (no placeholder string required) + template + void bind( void (C::* unaryMethod)( bool ) ) { + m_arg->boundField = new Detail::BoundUnaryMethod( unaryMethod ); + } + + // Bind a method that takes no arguments (will be called if opt is present) + template + void bind( void (C::* nullaryMethod)() ) { + m_arg->boundField = new Detail::BoundNullaryMethod( nullaryMethod ); + } + + // Bind a free function taking a single argument - the object to operate on (no placeholder string required) + template + void bind( void (* unaryFunction)( C& ) ) { + m_arg->boundField = new Detail::BoundUnaryFunction( unaryFunction ); + } + + // Bind a free function taking a single argument - the object to operate on (requires a placeholder string) + template + void bind( void (* binaryFunction)( C&, T ), std::string const& placeholder ) { + m_arg->boundField = new Detail::BoundBinaryFunction( binaryFunction ); + m_arg->placeholder = placeholder; + } + + ArgBuilder& describe( std::string const& description ) { + m_arg->description = description; + return *this; + } + ArgBuilder& detail( std::string const& detail ) { + m_arg->detail = detail; + return *this; + } + + protected: + Arg* m_arg; + }; + + class OptBuilder : public ArgBuilder { + public: + OptBuilder( Arg* arg ) : ArgBuilder( arg ) {} + OptBuilder( OptBuilder& other ) : ArgBuilder( other ) {} + + OptBuilder& operator[]( std::string const& optName ) { + addOptName( *ArgBuilder::m_arg, optName ); + return *this; + } + }; + + public: + + CommandLine() + : m_boundProcessName( new Detail::NullBinder() ), + m_highestSpecifiedArgPosition( 0 ), + m_throwOnUnrecognisedTokens( false ) + {} + CommandLine( CommandLine const& other ) + : m_boundProcessName( other.m_boundProcessName ), + m_options ( other.m_options ), + m_positionalArgs( other.m_positionalArgs ), + m_highestSpecifiedArgPosition( other.m_highestSpecifiedArgPosition ), + m_throwOnUnrecognisedTokens( other.m_throwOnUnrecognisedTokens ) + { + if( other.m_floatingArg.get() ) + m_floatingArg.reset( new Arg( *other.m_floatingArg ) ); + } + + CommandLine& setThrowOnUnrecognisedTokens( bool shouldThrow = true ) { + m_throwOnUnrecognisedTokens = shouldThrow; + return *this; + } + + OptBuilder operator[]( std::string const& optName ) { + m_options.push_back( Arg() ); + addOptName( m_options.back(), optName ); + OptBuilder builder( &m_options.back() ); + return builder; + } + + ArgBuilder operator[]( int position ) { + m_positionalArgs.insert( std::make_pair( position, Arg() ) ); + if( position > m_highestSpecifiedArgPosition ) + m_highestSpecifiedArgPosition = position; + setPositionalArg( m_positionalArgs[position], position ); + ArgBuilder builder( &m_positionalArgs[position] ); + return builder; + } + + // Invoke this with the _ instance + ArgBuilder operator[]( UnpositionalTag ) { + if( m_floatingArg.get() ) + throw std::logic_error( "Only one unpositional argument can be added" ); + m_floatingArg.reset( new Arg() ); + ArgBuilder builder( m_floatingArg.get() ); + return builder; + } + + template + void bindProcessName( M C::* field ) { + m_boundProcessName = new Detail::BoundDataMember( field ); + } + template + void bindProcessName( void (C::*_unaryMethod)( M ) ) { + m_boundProcessName = new Detail::BoundUnaryMethod( _unaryMethod ); + } + + void optUsage( std::ostream& os, std::size_t indent = 0, std::size_t width = Detail::consoleWidth ) const { + typename std::vector::const_iterator itBegin = m_options.begin(), itEnd = m_options.end(), it; + std::size_t maxWidth = 0; + for( it = itBegin; it != itEnd; ++it ) + maxWidth = (std::max)( maxWidth, it->commands().size() ); + + for( it = itBegin; it != itEnd; ++it ) { + Detail::Text usage( it->commands(), Detail::TextAttributes() + .setWidth( maxWidth+indent ) + .setIndent( indent ) ); + Detail::Text desc( it->description, Detail::TextAttributes() + .setWidth( width - maxWidth - 3 ) ); + + for( std::size_t i = 0; i < (std::max)( usage.size(), desc.size() ); ++i ) { + std::string usageCol = i < usage.size() ? usage[i] : ""; + os << usageCol; + + if( i < desc.size() && !desc[i].empty() ) + os << std::string( indent + 2 + maxWidth - usageCol.size(), ' ' ) + << desc[i]; + os << "\n"; + } + } + } + std::string optUsage() const { + std::ostringstream oss; + optUsage( oss ); + return oss.str(); + } + + void argSynopsis( std::ostream& os ) const { + for( int i = 1; i <= m_highestSpecifiedArgPosition; ++i ) { + if( i > 1 ) + os << " "; + typename std::map::const_iterator it = m_positionalArgs.find( i ); + if( it != m_positionalArgs.end() ) + os << "<" << it->second.placeholder << ">"; + else if( m_floatingArg.get() ) + os << "<" << m_floatingArg->placeholder << ">"; + else + throw std::logic_error( "non consecutive positional arguments with no floating args" ); + } + // !TBD No indication of mandatory args + if( m_floatingArg.get() ) { + if( m_highestSpecifiedArgPosition > 1 ) + os << " "; + os << "[<" << m_floatingArg->placeholder << "> ...]"; + } + } + std::string argSynopsis() const { + std::ostringstream oss; + argSynopsis( oss ); + return oss.str(); + } + + void usage( std::ostream& os, std::string const& procName ) const { + validate(); + os << "usage:\n " << procName << " "; + argSynopsis( os ); + if( !m_options.empty() ) { + os << " [options]\n\nwhere options are: \n"; + optUsage( os, 2 ); + } + os << "\n"; + } + std::string usage( std::string const& procName ) const { + std::ostringstream oss; + usage( oss, procName ); + return oss.str(); + } + + ConfigT parse( std::vector const& args ) const { + ConfigT config; + parseInto( args, config ); + return config; + } + + std::vector parseInto( std::vector const& args, ConfigT& config ) const { + std::string processName = args[0]; + std::size_t lastSlash = processName.find_last_of( "/\\" ); + if( lastSlash != std::string::npos ) + processName = processName.substr( lastSlash+1 ); + m_boundProcessName.set( config, processName ); + std::vector tokens; + Parser parser; + parser.parseIntoTokens( args, tokens ); + return populate( tokens, config ); + } + + std::vector populate( std::vector const& tokens, ConfigT& config ) const { + validate(); + std::vector unusedTokens = populateOptions( tokens, config ); + unusedTokens = populateFixedArgs( unusedTokens, config ); + unusedTokens = populateFloatingArgs( unusedTokens, config ); + return unusedTokens; + } + + std::vector populateOptions( std::vector const& tokens, ConfigT& config ) const { + std::vector unusedTokens; + std::vector errors; + for( std::size_t i = 0; i < tokens.size(); ++i ) { + Parser::Token const& token = tokens[i]; + typename std::vector::const_iterator it = m_options.begin(), itEnd = m_options.end(); + for(; it != itEnd; ++it ) { + Arg const& arg = *it; + + try { + if( ( token.type == Parser::Token::ShortOpt && arg.hasShortName( token.data ) ) || + ( token.type == Parser::Token::LongOpt && arg.hasLongName( token.data ) ) ) { + if( arg.takesArg() ) { + if( i == tokens.size()-1 || tokens[i+1].type != Parser::Token::Positional ) + errors.push_back( "Expected argument to option: " + token.data ); + else + arg.boundField.set( config, tokens[++i].data ); + } + else { + arg.boundField.set( config, "true" ); + } + break; + } + } + catch( std::exception& ex ) { + errors.push_back( std::string( ex.what() ) + "\n- while parsing: (" + arg.commands() + ")" ); + } + } + if( it == itEnd ) { + if( token.type == Parser::Token::Positional || !m_throwOnUnrecognisedTokens ) + unusedTokens.push_back( token ); + else if( errors.empty() && m_throwOnUnrecognisedTokens ) + errors.push_back( "unrecognised option: " + token.data ); + } + } + if( !errors.empty() ) { + std::ostringstream oss; + for( std::vector::const_iterator it = errors.begin(), itEnd = errors.end(); + it != itEnd; + ++it ) { + if( it != errors.begin() ) + oss << "\n"; + oss << *it; + } + throw std::runtime_error( oss.str() ); + } + return unusedTokens; + } + std::vector populateFixedArgs( std::vector const& tokens, ConfigT& config ) const { + std::vector unusedTokens; + int position = 1; + for( std::size_t i = 0; i < tokens.size(); ++i ) { + Parser::Token const& token = tokens[i]; + typename std::map::const_iterator it = m_positionalArgs.find( position ); + if( it != m_positionalArgs.end() ) + it->second.boundField.set( config, token.data ); + else + unusedTokens.push_back( token ); + if( token.type == Parser::Token::Positional ) + position++; + } + return unusedTokens; + } + std::vector populateFloatingArgs( std::vector const& tokens, ConfigT& config ) const { + if( !m_floatingArg.get() ) + return tokens; + std::vector unusedTokens; + for( std::size_t i = 0; i < tokens.size(); ++i ) { + Parser::Token const& token = tokens[i]; + if( token.type == Parser::Token::Positional ) + m_floatingArg->boundField.set( config, token.data ); + else + unusedTokens.push_back( token ); + } + return unusedTokens; + } + + void validate() const + { + if( m_options.empty() && m_positionalArgs.empty() && !m_floatingArg.get() ) + throw std::logic_error( "No options or arguments specified" ); + + for( typename std::vector::const_iterator it = m_options.begin(), + itEnd = m_options.end(); + it != itEnd; ++it ) + it->validate(); + } + + private: + Detail::BoundArgFunction m_boundProcessName; + std::vector m_options; + std::map m_positionalArgs; + ArgAutoPtr m_floatingArg; + int m_highestSpecifiedArgPosition; + bool m_throwOnUnrecognisedTokens; + }; + +} // end namespace Clara + +STITCH_CLARA_CLOSE_NAMESPACE +#undef STITCH_CLARA_OPEN_NAMESPACE +#undef STITCH_CLARA_CLOSE_NAMESPACE + +#endif // TWOBLUECUBES_CLARA_H_INCLUDED +#undef STITCH_CLARA_OPEN_NAMESPACE + +// Restore Clara's value for console width, if present +#ifdef CATCH_TEMP_CLARA_CONFIG_CONSOLE_WIDTH +#define CLARA_CONFIG_CONSOLE_WIDTH CATCH_TEMP_CLARA_CONFIG_CONSOLE_WIDTH +#undef CATCH_TEMP_CLARA_CONFIG_CONSOLE_WIDTH +#endif + +#include + +namespace Catch { + + inline void abortAfterFirst( ConfigData& config ) { config.abortAfter = 1; } + inline void abortAfterX( ConfigData& config, int x ) { + if( x < 1 ) + throw std::runtime_error( "Value after -x or --abortAfter must be greater than zero" ); + config.abortAfter = x; + } + inline void addTestOrTags( ConfigData& config, std::string const& _testSpec ) { config.testsOrTags.push_back( _testSpec ); } + inline void addReporterName( ConfigData& config, std::string const& _reporterName ) { config.reporterNames.push_back( _reporterName ); } + + inline void addWarning( ConfigData& config, std::string const& _warning ) { + if( _warning == "NoAssertions" ) + config.warnings = static_cast( config.warnings | WarnAbout::NoAssertions ); + else + throw std::runtime_error( "Unrecognised warning: '" + _warning + "'" ); + } + inline void setOrder( ConfigData& config, std::string const& order ) { + if( startsWith( "declared", order ) ) + config.runOrder = RunTests::InDeclarationOrder; + else if( startsWith( "lexical", order ) ) + config.runOrder = RunTests::InLexicographicalOrder; + else if( startsWith( "random", order ) ) + config.runOrder = RunTests::InRandomOrder; + else + throw std::runtime_error( "Unrecognised ordering: '" + order + "'" ); + } + inline void setRngSeed( ConfigData& config, std::string const& seed ) { + if( seed == "time" ) { + config.rngSeed = static_cast( std::time(0) ); + } + else { + std::stringstream ss; + ss << seed; + ss >> config.rngSeed; + if( ss.fail() ) + throw std::runtime_error( "Argment to --rng-seed should be the word 'time' or a number" ); + } + } + inline void setVerbosity( ConfigData& config, int level ) { + // !TBD: accept strings? + config.verbosity = static_cast( level ); + } + inline void setShowDurations( ConfigData& config, bool _showDurations ) { + config.showDurations = _showDurations + ? ShowDurations::Always + : ShowDurations::Never; + } + inline void setUseColour( ConfigData& config, std::string const& value ) { + std::string mode = toLower( value ); + + if( mode == "yes" ) + config.useColour = UseColour::Yes; + else if( mode == "no" ) + config.useColour = UseColour::No; + else if( mode == "auto" ) + config.useColour = UseColour::Auto; + else + throw std::runtime_error( "colour mode must be one of: auto, yes or no" ); + } + inline void forceColour( ConfigData& config ) { + config.useColour = UseColour::Yes; + } + inline void loadTestNamesFromFile( ConfigData& config, std::string const& _filename ) { + std::ifstream f( _filename.c_str() ); + if( !f.is_open() ) + throw std::domain_error( "Unable to load input file: " + _filename ); + + std::string line; + while( std::getline( f, line ) ) { + line = trim(line); + if( !line.empty() && !startsWith( line, "#" ) ) + addTestOrTags( config, "\"" + line + "\"," ); + } + } + + inline Clara::CommandLine makeCommandLineParser() { + + using namespace Clara; + CommandLine cli; + + cli.bindProcessName( &ConfigData::processName ); + + cli["-?"]["-h"]["--help"] + .describe( "display usage information" ) + .bind( &ConfigData::showHelp ); + + cli["-l"]["--list-tests"] + .describe( "list all/matching test cases" ) + .bind( &ConfigData::listTests ); + + cli["-t"]["--list-tags"] + .describe( "list all/matching tags" ) + .bind( &ConfigData::listTags ); + + cli["-s"]["--success"] + .describe( "include successful tests in output" ) + .bind( &ConfigData::showSuccessfulTests ); + + cli["-b"]["--break"] + .describe( "break into debugger on failure" ) + .bind( &ConfigData::shouldDebugBreak ); + + cli["-e"]["--nothrow"] + .describe( "skip exception tests" ) + .bind( &ConfigData::noThrow ); + + cli["-i"]["--invisibles"] + .describe( "show invisibles (tabs, newlines)" ) + .bind( &ConfigData::showInvisibles ); + + cli["-o"]["--out"] + .describe( "output filename" ) + .bind( &ConfigData::outputFilename, "filename" ); + + cli["-r"]["--reporter"] +// .placeholder( "name[:filename]" ) + .describe( "reporter to use (defaults to console)" ) + .bind( &addReporterName, "name" ); + + cli["-n"]["--name"] + .describe( "suite name" ) + .bind( &ConfigData::name, "name" ); + + cli["-a"]["--abort"] + .describe( "abort at first failure" ) + .bind( &abortAfterFirst ); + + cli["-x"]["--abortx"] + .describe( "abort after x failures" ) + .bind( &abortAfterX, "no. failures" ); + + cli["-w"]["--warn"] + .describe( "enable warnings" ) + .bind( &addWarning, "warning name" ); + +// - needs updating if reinstated +// cli.into( &setVerbosity ) +// .describe( "level of verbosity (0=no output)" ) +// .shortOpt( "v") +// .longOpt( "verbosity" ) +// .placeholder( "level" ); + + cli[_] + .describe( "which test or tests to use" ) + .bind( &addTestOrTags, "test name, pattern or tags" ); + + cli["-d"]["--durations"] + .describe( "show test durations" ) + .bind( &setShowDurations, "yes|no" ); + + cli["-f"]["--input-file"] + .describe( "load test names to run from a file" ) + .bind( &loadTestNamesFromFile, "filename" ); + + cli["-#"]["--filenames-as-tags"] + .describe( "adds a tag for the filename" ) + .bind( &ConfigData::filenamesAsTags ); + + // Less common commands which don't have a short form + cli["--list-test-names-only"] + .describe( "list all/matching test cases names only" ) + .bind( &ConfigData::listTestNamesOnly ); + + cli["--list-reporters"] + .describe( "list all reporters" ) + .bind( &ConfigData::listReporters ); + + cli["--order"] + .describe( "test case order (defaults to decl)" ) + .bind( &setOrder, "decl|lex|rand" ); + + cli["--rng-seed"] + .describe( "set a specific seed for random numbers" ) + .bind( &setRngSeed, "'time'|number" ); + + cli["--force-colour"] + .describe( "force colourised output (deprecated)" ) + .bind( &forceColour ); + + cli["--use-colour"] + .describe( "should output be colourised" ) + .bind( &setUseColour, "yes|no" ); + + return cli; + } + +} // end namespace Catch + +// #included from: internal/catch_list.hpp +#define TWOBLUECUBES_CATCH_LIST_HPP_INCLUDED + +// #included from: catch_text.h +#define TWOBLUECUBES_CATCH_TEXT_H_INCLUDED + +#define TBC_TEXT_FORMAT_CONSOLE_WIDTH CATCH_CONFIG_CONSOLE_WIDTH + +#define CLICHE_TBC_TEXT_FORMAT_OUTER_NAMESPACE Catch +// #included from: ../external/tbc_text_format.h +// Only use header guard if we are not using an outer namespace +#ifndef CLICHE_TBC_TEXT_FORMAT_OUTER_NAMESPACE +# ifdef TWOBLUECUBES_TEXT_FORMAT_H_INCLUDED +# ifndef TWOBLUECUBES_TEXT_FORMAT_H_ALREADY_INCLUDED +# define TWOBLUECUBES_TEXT_FORMAT_H_ALREADY_INCLUDED +# endif +# else +# define TWOBLUECUBES_TEXT_FORMAT_H_INCLUDED +# endif +#endif +#ifndef TWOBLUECUBES_TEXT_FORMAT_H_ALREADY_INCLUDED +#include +#include +#include + +// Use optional outer namespace +#ifdef CLICHE_TBC_TEXT_FORMAT_OUTER_NAMESPACE +namespace CLICHE_TBC_TEXT_FORMAT_OUTER_NAMESPACE { +#endif + +namespace Tbc { + +#ifdef TBC_TEXT_FORMAT_CONSOLE_WIDTH + const unsigned int consoleWidth = TBC_TEXT_FORMAT_CONSOLE_WIDTH; +#else + const unsigned int consoleWidth = 80; +#endif + + struct TextAttributes { + TextAttributes() + : initialIndent( std::string::npos ), + indent( 0 ), + width( consoleWidth-1 ), + tabChar( '\t' ) + {} + + TextAttributes& setInitialIndent( std::size_t _value ) { initialIndent = _value; return *this; } + TextAttributes& setIndent( std::size_t _value ) { indent = _value; return *this; } + TextAttributes& setWidth( std::size_t _value ) { width = _value; return *this; } + TextAttributes& setTabChar( char _value ) { tabChar = _value; return *this; } + + std::size_t initialIndent; // indent of first line, or npos + std::size_t indent; // indent of subsequent lines, or all if initialIndent is npos + std::size_t width; // maximum width of text, including indent. Longer text will wrap + char tabChar; // If this char is seen the indent is changed to current pos + }; + + class Text { + public: + Text( std::string const& _str, TextAttributes const& _attr = TextAttributes() ) + : attr( _attr ) + { + std::string wrappableChars = " [({.,/|\\-"; + std::size_t indent = _attr.initialIndent != std::string::npos + ? _attr.initialIndent + : _attr.indent; + std::string remainder = _str; + + while( !remainder.empty() ) { + if( lines.size() >= 1000 ) { + lines.push_back( "... message truncated due to excessive size" ); + return; + } + std::size_t tabPos = std::string::npos; + std::size_t width = (std::min)( remainder.size(), _attr.width - indent ); + std::size_t pos = remainder.find_first_of( '\n' ); + if( pos <= width ) { + width = pos; + } + pos = remainder.find_last_of( _attr.tabChar, width ); + if( pos != std::string::npos ) { + tabPos = pos; + if( remainder[width] == '\n' ) + width--; + remainder = remainder.substr( 0, tabPos ) + remainder.substr( tabPos+1 ); + } + + if( width == remainder.size() ) { + spliceLine( indent, remainder, width ); + } + else if( remainder[width] == '\n' ) { + spliceLine( indent, remainder, width ); + if( width <= 1 || remainder.size() != 1 ) + remainder = remainder.substr( 1 ); + indent = _attr.indent; + } + else { + pos = remainder.find_last_of( wrappableChars, width ); + if( pos != std::string::npos && pos > 0 ) { + spliceLine( indent, remainder, pos ); + if( remainder[0] == ' ' ) + remainder = remainder.substr( 1 ); + } + else { + spliceLine( indent, remainder, width-1 ); + lines.back() += "-"; + } + if( lines.size() == 1 ) + indent = _attr.indent; + if( tabPos != std::string::npos ) + indent += tabPos; + } + } + } + + void spliceLine( std::size_t _indent, std::string& _remainder, std::size_t _pos ) { + lines.push_back( std::string( _indent, ' ' ) + _remainder.substr( 0, _pos ) ); + _remainder = _remainder.substr( _pos ); + } + + typedef std::vector::const_iterator const_iterator; + + const_iterator begin() const { return lines.begin(); } + const_iterator end() const { return lines.end(); } + std::string const& last() const { return lines.back(); } + std::size_t size() const { return lines.size(); } + std::string const& operator[]( std::size_t _index ) const { return lines[_index]; } + std::string toString() const { + std::ostringstream oss; + oss << *this; + return oss.str(); + } + + inline friend std::ostream& operator << ( std::ostream& _stream, Text const& _text ) { + for( Text::const_iterator it = _text.begin(), itEnd = _text.end(); + it != itEnd; ++it ) { + if( it != _text.begin() ) + _stream << "\n"; + _stream << *it; + } + return _stream; + } + + private: + std::string str; + TextAttributes attr; + std::vector lines; + }; + +} // end namespace Tbc + +#ifdef CLICHE_TBC_TEXT_FORMAT_OUTER_NAMESPACE +} // end outer namespace +#endif + +#endif // TWOBLUECUBES_TEXT_FORMAT_H_ALREADY_INCLUDED +#undef CLICHE_TBC_TEXT_FORMAT_OUTER_NAMESPACE + +namespace Catch { + using Tbc::Text; + using Tbc::TextAttributes; +} + +// #included from: catch_console_colour.hpp +#define TWOBLUECUBES_CATCH_CONSOLE_COLOUR_HPP_INCLUDED + +namespace Catch { + + struct Colour { + enum Code { + None = 0, + + White, + Red, + Green, + Blue, + Cyan, + Yellow, + Grey, + + Bright = 0x10, + + BrightRed = Bright | Red, + BrightGreen = Bright | Green, + LightGrey = Bright | Grey, + BrightWhite = Bright | White, + + // By intention + FileName = LightGrey, + Warning = Yellow, + ResultError = BrightRed, + ResultSuccess = BrightGreen, + ResultExpectedFailure = Warning, + + Error = BrightRed, + Success = Green, + + OriginalExpression = Cyan, + ReconstructedExpression = Yellow, + + SecondaryText = LightGrey, + Headers = White + }; + + // Use constructed object for RAII guard + Colour( Code _colourCode ); + Colour( Colour const& other ); + ~Colour(); + + // Use static method for one-shot changes + static void use( Code _colourCode ); + + private: + bool m_moved; + }; + + inline std::ostream& operator << ( std::ostream& os, Colour const& ) { return os; } + +} // end namespace Catch + +// #included from: catch_interfaces_reporter.h +#define TWOBLUECUBES_CATCH_INTERFACES_REPORTER_H_INCLUDED + +#include +#include +#include +#include + +namespace Catch +{ + struct ReporterConfig { + explicit ReporterConfig( Ptr const& _fullConfig ) + : m_stream( &_fullConfig->stream() ), m_fullConfig( _fullConfig ) {} + + ReporterConfig( Ptr const& _fullConfig, std::ostream& _stream ) + : m_stream( &_stream ), m_fullConfig( _fullConfig ) {} + + std::ostream& stream() const { return *m_stream; } + Ptr fullConfig() const { return m_fullConfig; } + + private: + std::ostream* m_stream; + Ptr m_fullConfig; + }; + + struct ReporterPreferences { + ReporterPreferences() + : shouldRedirectStdOut( false ) + {} + + bool shouldRedirectStdOut; + }; + + template + struct LazyStat : Option { + LazyStat() : used( false ) {} + LazyStat& operator=( T const& _value ) { + Option::operator=( _value ); + used = false; + return *this; + } + void reset() { + Option::reset(); + used = false; + } + bool used; + }; + + struct TestRunInfo { + TestRunInfo( std::string const& _name ) : name( _name ) {} + std::string name; + }; + struct GroupInfo { + GroupInfo( std::string const& _name, + std::size_t _groupIndex, + std::size_t _groupsCount ) + : name( _name ), + groupIndex( _groupIndex ), + groupsCounts( _groupsCount ) + {} + + std::string name; + std::size_t groupIndex; + std::size_t groupsCounts; + }; + + struct AssertionStats { + AssertionStats( AssertionResult const& _assertionResult, + std::vector const& _infoMessages, + Totals const& _totals ) + : assertionResult( _assertionResult ), + infoMessages( _infoMessages ), + totals( _totals ) + { + if( assertionResult.hasMessage() ) { + // Copy message into messages list. + // !TBD This should have been done earlier, somewhere + MessageBuilder builder( assertionResult.getTestMacroName(), assertionResult.getSourceInfo(), assertionResult.getResultType() ); + builder << assertionResult.getMessage(); + builder.m_info.message = builder.m_stream.str(); + + infoMessages.push_back( builder.m_info ); + } + } + virtual ~AssertionStats(); + +# ifdef CATCH_CONFIG_CPP11_GENERATED_METHODS + AssertionStats( AssertionStats const& ) = default; + AssertionStats( AssertionStats && ) = default; + AssertionStats& operator = ( AssertionStats const& ) = default; + AssertionStats& operator = ( AssertionStats && ) = default; +# endif + + AssertionResult assertionResult; + std::vector infoMessages; + Totals totals; + }; + + struct SectionStats { + SectionStats( SectionInfo const& _sectionInfo, + Counts const& _assertions, + double _durationInSeconds, + bool _missingAssertions ) + : sectionInfo( _sectionInfo ), + assertions( _assertions ), + durationInSeconds( _durationInSeconds ), + missingAssertions( _missingAssertions ) + {} + virtual ~SectionStats(); +# ifdef CATCH_CONFIG_CPP11_GENERATED_METHODS + SectionStats( SectionStats const& ) = default; + SectionStats( SectionStats && ) = default; + SectionStats& operator = ( SectionStats const& ) = default; + SectionStats& operator = ( SectionStats && ) = default; +# endif + + SectionInfo sectionInfo; + Counts assertions; + double durationInSeconds; + bool missingAssertions; + }; + + struct TestCaseStats { + TestCaseStats( TestCaseInfo const& _testInfo, + Totals const& _totals, + std::string const& _stdOut, + std::string const& _stdErr, + bool _aborting ) + : testInfo( _testInfo ), + totals( _totals ), + stdOut( _stdOut ), + stdErr( _stdErr ), + aborting( _aborting ) + {} + virtual ~TestCaseStats(); + +# ifdef CATCH_CONFIG_CPP11_GENERATED_METHODS + TestCaseStats( TestCaseStats const& ) = default; + TestCaseStats( TestCaseStats && ) = default; + TestCaseStats& operator = ( TestCaseStats const& ) = default; + TestCaseStats& operator = ( TestCaseStats && ) = default; +# endif + + TestCaseInfo testInfo; + Totals totals; + std::string stdOut; + std::string stdErr; + bool aborting; + }; + + struct TestGroupStats { + TestGroupStats( GroupInfo const& _groupInfo, + Totals const& _totals, + bool _aborting ) + : groupInfo( _groupInfo ), + totals( _totals ), + aborting( _aborting ) + {} + TestGroupStats( GroupInfo const& _groupInfo ) + : groupInfo( _groupInfo ), + aborting( false ) + {} + virtual ~TestGroupStats(); + +# ifdef CATCH_CONFIG_CPP11_GENERATED_METHODS + TestGroupStats( TestGroupStats const& ) = default; + TestGroupStats( TestGroupStats && ) = default; + TestGroupStats& operator = ( TestGroupStats const& ) = default; + TestGroupStats& operator = ( TestGroupStats && ) = default; +# endif + + GroupInfo groupInfo; + Totals totals; + bool aborting; + }; + + struct TestRunStats { + TestRunStats( TestRunInfo const& _runInfo, + Totals const& _totals, + bool _aborting ) + : runInfo( _runInfo ), + totals( _totals ), + aborting( _aborting ) + {} + virtual ~TestRunStats(); + +# ifndef CATCH_CONFIG_CPP11_GENERATED_METHODS + TestRunStats( TestRunStats const& _other ) + : runInfo( _other.runInfo ), + totals( _other.totals ), + aborting( _other.aborting ) + {} +# else + TestRunStats( TestRunStats const& ) = default; + TestRunStats( TestRunStats && ) = default; + TestRunStats& operator = ( TestRunStats const& ) = default; + TestRunStats& operator = ( TestRunStats && ) = default; +# endif + + TestRunInfo runInfo; + Totals totals; + bool aborting; + }; + + struct IStreamingReporter : IShared { + virtual ~IStreamingReporter(); + + // Implementing class must also provide the following static method: + // static std::string getDescription(); + + virtual ReporterPreferences getPreferences() const = 0; + + virtual void noMatchingTestCases( std::string const& spec ) = 0; + + virtual void testRunStarting( TestRunInfo const& testRunInfo ) = 0; + virtual void testGroupStarting( GroupInfo const& groupInfo ) = 0; + + virtual void testCaseStarting( TestCaseInfo const& testInfo ) = 0; + virtual void sectionStarting( SectionInfo const& sectionInfo ) = 0; + + virtual void assertionStarting( AssertionInfo const& assertionInfo ) = 0; + + // The return value indicates if the messages buffer should be cleared: + virtual bool assertionEnded( AssertionStats const& assertionStats ) = 0; + + virtual void sectionEnded( SectionStats const& sectionStats ) = 0; + virtual void testCaseEnded( TestCaseStats const& testCaseStats ) = 0; + virtual void testGroupEnded( TestGroupStats const& testGroupStats ) = 0; + virtual void testRunEnded( TestRunStats const& testRunStats ) = 0; + + virtual void skipTest( TestCaseInfo const& testInfo ) = 0; + }; + + struct IReporterFactory : IShared { + virtual ~IReporterFactory(); + virtual IStreamingReporter* create( ReporterConfig const& config ) const = 0; + virtual std::string getDescription() const = 0; + }; + + struct IReporterRegistry { + typedef std::map > FactoryMap; + typedef std::vector > Listeners; + + virtual ~IReporterRegistry(); + virtual IStreamingReporter* create( std::string const& name, Ptr const& config ) const = 0; + virtual FactoryMap const& getFactories() const = 0; + virtual Listeners const& getListeners() const = 0; + }; + + Ptr addReporter( Ptr const& existingReporter, Ptr const& additionalReporter ); + +} + +#include +#include + +namespace Catch { + + inline std::size_t listTests( Config const& config ) { + + TestSpec testSpec = config.testSpec(); + if( config.testSpec().hasFilters() ) + Catch::cout() << "Matching test cases:\n"; + else { + Catch::cout() << "All available test cases:\n"; + testSpec = TestSpecParser( ITagAliasRegistry::get() ).parse( "*" ).testSpec(); + } + + std::size_t matchedTests = 0; + TextAttributes nameAttr, tagsAttr; + nameAttr.setInitialIndent( 2 ).setIndent( 4 ); + tagsAttr.setIndent( 6 ); + + std::vector matchedTestCases = filterTests( getAllTestCasesSorted( config ), testSpec, config ); + for( std::vector::const_iterator it = matchedTestCases.begin(), itEnd = matchedTestCases.end(); + it != itEnd; + ++it ) { + matchedTests++; + TestCaseInfo const& testCaseInfo = it->getTestCaseInfo(); + Colour::Code colour = testCaseInfo.isHidden() + ? Colour::SecondaryText + : Colour::None; + Colour colourGuard( colour ); + + Catch::cout() << Text( testCaseInfo.name, nameAttr ) << std::endl; + if( !testCaseInfo.tags.empty() ) + Catch::cout() << Text( testCaseInfo.tagsAsString, tagsAttr ) << std::endl; + } + + if( !config.testSpec().hasFilters() ) + Catch::cout() << pluralise( matchedTests, "test case" ) << "\n" << std::endl; + else + Catch::cout() << pluralise( matchedTests, "matching test case" ) << "\n" << std::endl; + return matchedTests; + } + + inline std::size_t listTestsNamesOnly( Config const& config ) { + TestSpec testSpec = config.testSpec(); + if( !config.testSpec().hasFilters() ) + testSpec = TestSpecParser( ITagAliasRegistry::get() ).parse( "*" ).testSpec(); + std::size_t matchedTests = 0; + std::vector matchedTestCases = filterTests( getAllTestCasesSorted( config ), testSpec, config ); + for( std::vector::const_iterator it = matchedTestCases.begin(), itEnd = matchedTestCases.end(); + it != itEnd; + ++it ) { + matchedTests++; + TestCaseInfo const& testCaseInfo = it->getTestCaseInfo(); + Catch::cout() << testCaseInfo.name << std::endl; + } + return matchedTests; + } + + struct TagInfo { + TagInfo() : count ( 0 ) {} + void add( std::string const& spelling ) { + ++count; + spellings.insert( spelling ); + } + std::string all() const { + std::string out; + for( std::set::const_iterator it = spellings.begin(), itEnd = spellings.end(); + it != itEnd; + ++it ) + out += "[" + *it + "]"; + return out; + } + std::set spellings; + std::size_t count; + }; + + inline std::size_t listTags( Config const& config ) { + TestSpec testSpec = config.testSpec(); + if( config.testSpec().hasFilters() ) + Catch::cout() << "Tags for matching test cases:\n"; + else { + Catch::cout() << "All available tags:\n"; + testSpec = TestSpecParser( ITagAliasRegistry::get() ).parse( "*" ).testSpec(); + } + + std::map tagCounts; + + std::vector matchedTestCases = filterTests( getAllTestCasesSorted( config ), testSpec, config ); + for( std::vector::const_iterator it = matchedTestCases.begin(), itEnd = matchedTestCases.end(); + it != itEnd; + ++it ) { + for( std::set::const_iterator tagIt = it->getTestCaseInfo().tags.begin(), + tagItEnd = it->getTestCaseInfo().tags.end(); + tagIt != tagItEnd; + ++tagIt ) { + std::string tagName = *tagIt; + std::string lcaseTagName = toLower( tagName ); + std::map::iterator countIt = tagCounts.find( lcaseTagName ); + if( countIt == tagCounts.end() ) + countIt = tagCounts.insert( std::make_pair( lcaseTagName, TagInfo() ) ).first; + countIt->second.add( tagName ); + } + } + + for( std::map::const_iterator countIt = tagCounts.begin(), + countItEnd = tagCounts.end(); + countIt != countItEnd; + ++countIt ) { + std::ostringstream oss; + oss << " " << std::setw(2) << countIt->second.count << " "; + Text wrapper( countIt->second.all(), TextAttributes() + .setInitialIndent( 0 ) + .setIndent( oss.str().size() ) + .setWidth( CATCH_CONFIG_CONSOLE_WIDTH-10 ) ); + Catch::cout() << oss.str() << wrapper << "\n"; + } + Catch::cout() << pluralise( tagCounts.size(), "tag" ) << "\n" << std::endl; + return tagCounts.size(); + } + + inline std::size_t listReporters( Config const& /*config*/ ) { + Catch::cout() << "Available reporters:\n"; + IReporterRegistry::FactoryMap const& factories = getRegistryHub().getReporterRegistry().getFactories(); + IReporterRegistry::FactoryMap::const_iterator itBegin = factories.begin(), itEnd = factories.end(), it; + std::size_t maxNameLen = 0; + for(it = itBegin; it != itEnd; ++it ) + maxNameLen = (std::max)( maxNameLen, it->first.size() ); + + for(it = itBegin; it != itEnd; ++it ) { + Text wrapper( it->second->getDescription(), TextAttributes() + .setInitialIndent( 0 ) + .setIndent( 7+maxNameLen ) + .setWidth( CATCH_CONFIG_CONSOLE_WIDTH - maxNameLen-8 ) ); + Catch::cout() << " " + << it->first + << ":" + << std::string( maxNameLen - it->first.size() + 2, ' ' ) + << wrapper << "\n"; + } + Catch::cout() << std::endl; + return factories.size(); + } + + inline Option list( Config const& config ) { + Option listedCount; + if( config.listTests() ) + listedCount = listedCount.valueOr(0) + listTests( config ); + if( config.listTestNamesOnly() ) + listedCount = listedCount.valueOr(0) + listTestsNamesOnly( config ); + if( config.listTags() ) + listedCount = listedCount.valueOr(0) + listTags( config ); + if( config.listReporters() ) + listedCount = listedCount.valueOr(0) + listReporters( config ); + return listedCount; + } + +} // end namespace Catch + +// #included from: internal/catch_run_context.hpp +#define TWOBLUECUBES_CATCH_RUNNER_IMPL_HPP_INCLUDED + +// #included from: catch_test_case_tracker.hpp +#define TWOBLUECUBES_CATCH_TEST_CASE_TRACKER_HPP_INCLUDED + +#include +#include +#include +#include + +namespace Catch { +namespace TestCaseTracking { + + struct ITracker : SharedImpl<> { + virtual ~ITracker(); + + // static queries + virtual std::string name() const = 0; + + // dynamic queries + virtual bool isComplete() const = 0; // Successfully completed or failed + virtual bool isSuccessfullyCompleted() const = 0; + virtual bool isOpen() const = 0; // Started but not complete + virtual bool hasChildren() const = 0; + + virtual ITracker& parent() = 0; + + // actions + virtual void close() = 0; // Successfully complete + virtual void fail() = 0; + virtual void markAsNeedingAnotherRun() = 0; + + virtual void addChild( Ptr const& child ) = 0; + virtual ITracker* findChild( std::string const& name ) = 0; + virtual void openChild() = 0; + }; + + class TrackerContext { + + enum RunState { + NotStarted, + Executing, + CompletedCycle + }; + + Ptr m_rootTracker; + ITracker* m_currentTracker; + RunState m_runState; + + public: + + static TrackerContext& instance() { + static TrackerContext s_instance; + return s_instance; + } + + TrackerContext() + : m_currentTracker( CATCH_NULL ), + m_runState( NotStarted ) + {} + + ITracker& startRun(); + + void endRun() { + m_rootTracker.reset(); + m_currentTracker = CATCH_NULL; + m_runState = NotStarted; + } + + void startCycle() { + m_currentTracker = m_rootTracker.get(); + m_runState = Executing; + } + void completeCycle() { + m_runState = CompletedCycle; + } + + bool completedCycle() const { + return m_runState == CompletedCycle; + } + ITracker& currentTracker() { + return *m_currentTracker; + } + void setCurrentTracker( ITracker* tracker ) { + m_currentTracker = tracker; + } + }; + + class TrackerBase : public ITracker { + protected: + enum CycleState { + NotStarted, + Executing, + ExecutingChildren, + NeedsAnotherRun, + CompletedSuccessfully, + Failed + }; + class TrackerHasName { + std::string m_name; + public: + TrackerHasName( std::string const& name ) : m_name( name ) {} + bool operator ()( Ptr const& tracker ) { + return tracker->name() == m_name; + } + }; + typedef std::vector > Children; + std::string m_name; + TrackerContext& m_ctx; + ITracker* m_parent; + Children m_children; + CycleState m_runState; + public: + TrackerBase( std::string const& name, TrackerContext& ctx, ITracker* parent ) + : m_name( name ), + m_ctx( ctx ), + m_parent( parent ), + m_runState( NotStarted ) + {} + virtual ~TrackerBase(); + + virtual std::string name() const CATCH_OVERRIDE { + return m_name; + } + virtual bool isComplete() const CATCH_OVERRIDE { + return m_runState == CompletedSuccessfully || m_runState == Failed; + } + virtual bool isSuccessfullyCompleted() const CATCH_OVERRIDE { + return m_runState == CompletedSuccessfully; + } + virtual bool isOpen() const CATCH_OVERRIDE { + return m_runState != NotStarted && !isComplete(); + } + virtual bool hasChildren() const CATCH_OVERRIDE { + return !m_children.empty(); + } + + virtual void addChild( Ptr const& child ) CATCH_OVERRIDE { + m_children.push_back( child ); + } + + virtual ITracker* findChild( std::string const& name ) CATCH_OVERRIDE { + Children::const_iterator it = std::find_if( m_children.begin(), m_children.end(), TrackerHasName( name ) ); + return( it != m_children.end() ) + ? it->get() + : CATCH_NULL; + } + virtual ITracker& parent() CATCH_OVERRIDE { + assert( m_parent ); // Should always be non-null except for root + return *m_parent; + } + + virtual void openChild() CATCH_OVERRIDE { + if( m_runState != ExecutingChildren ) { + m_runState = ExecutingChildren; + if( m_parent ) + m_parent->openChild(); + } + } + void open() { + m_runState = Executing; + moveToThis(); + if( m_parent ) + m_parent->openChild(); + } + + virtual void close() CATCH_OVERRIDE { + + // Close any still open children (e.g. generators) + while( &m_ctx.currentTracker() != this ) + m_ctx.currentTracker().close(); + + switch( m_runState ) { + case NotStarted: + case CompletedSuccessfully: + case Failed: + throw std::logic_error( "Illogical state" ); + + case NeedsAnotherRun: + break;; + + case Executing: + m_runState = CompletedSuccessfully; + break; + case ExecutingChildren: + if( m_children.empty() || m_children.back()->isComplete() ) + m_runState = CompletedSuccessfully; + break; + + default: + throw std::logic_error( "Unexpected state" ); + } + moveToParent(); + m_ctx.completeCycle(); + } + virtual void fail() CATCH_OVERRIDE { + m_runState = Failed; + if( m_parent ) + m_parent->markAsNeedingAnotherRun(); + moveToParent(); + m_ctx.completeCycle(); + } + virtual void markAsNeedingAnotherRun() CATCH_OVERRIDE { + m_runState = NeedsAnotherRun; + } + private: + void moveToParent() { + assert( m_parent ); + m_ctx.setCurrentTracker( m_parent ); + } + void moveToThis() { + m_ctx.setCurrentTracker( this ); + } + }; + + class SectionTracker : public TrackerBase { + public: + SectionTracker( std::string const& name, TrackerContext& ctx, ITracker* parent ) + : TrackerBase( name, ctx, parent ) + {} + virtual ~SectionTracker(); + + static SectionTracker& acquire( TrackerContext& ctx, std::string const& name ) { + SectionTracker* section = CATCH_NULL; + + ITracker& currentTracker = ctx.currentTracker(); + if( ITracker* childTracker = currentTracker.findChild( name ) ) { + section = dynamic_cast( childTracker ); + assert( section ); + } + else { + section = new SectionTracker( name, ctx, ¤tTracker ); + currentTracker.addChild( section ); + } + if( !ctx.completedCycle() && !section->isComplete() ) { + + section->open(); + } + return *section; + } + }; + + class IndexTracker : public TrackerBase { + int m_size; + int m_index; + public: + IndexTracker( std::string const& name, TrackerContext& ctx, ITracker* parent, int size ) + : TrackerBase( name, ctx, parent ), + m_size( size ), + m_index( -1 ) + {} + virtual ~IndexTracker(); + + static IndexTracker& acquire( TrackerContext& ctx, std::string const& name, int size ) { + IndexTracker* tracker = CATCH_NULL; + + ITracker& currentTracker = ctx.currentTracker(); + if( ITracker* childTracker = currentTracker.findChild( name ) ) { + tracker = dynamic_cast( childTracker ); + assert( tracker ); + } + else { + tracker = new IndexTracker( name, ctx, ¤tTracker, size ); + currentTracker.addChild( tracker ); + } + + if( !ctx.completedCycle() && !tracker->isComplete() ) { + if( tracker->m_runState != ExecutingChildren && tracker->m_runState != NeedsAnotherRun ) + tracker->moveNext(); + tracker->open(); + } + + return *tracker; + } + + int index() const { return m_index; } + + void moveNext() { + m_index++; + m_children.clear(); + } + + virtual void close() CATCH_OVERRIDE { + TrackerBase::close(); + if( m_runState == CompletedSuccessfully && m_index < m_size-1 ) + m_runState = Executing; + } + }; + + inline ITracker& TrackerContext::startRun() { + m_rootTracker = new SectionTracker( "{root}", *this, CATCH_NULL ); + m_currentTracker = CATCH_NULL; + m_runState = Executing; + return *m_rootTracker; + } + +} // namespace TestCaseTracking + +using TestCaseTracking::ITracker; +using TestCaseTracking::TrackerContext; +using TestCaseTracking::SectionTracker; +using TestCaseTracking::IndexTracker; + +} // namespace Catch + +// #included from: catch_fatal_condition.hpp +#define TWOBLUECUBES_CATCH_FATAL_CONDITION_H_INCLUDED + +namespace Catch { + + // Report the error condition then exit the process + inline void fatal( std::string const& message, int exitCode ) { + IContext& context = Catch::getCurrentContext(); + IResultCapture* resultCapture = context.getResultCapture(); + resultCapture->handleFatalErrorCondition( message ); + + if( Catch::alwaysTrue() ) // avoids "no return" warnings + exit( exitCode ); + } + +} // namespace Catch + +#if defined ( CATCH_PLATFORM_WINDOWS ) ///////////////////////////////////////// + +namespace Catch { + + struct FatalConditionHandler { + void reset() {} + }; + +} // namespace Catch + +#else // Not Windows - assumed to be POSIX compatible ////////////////////////// + +#include + +namespace Catch { + + struct SignalDefs { int id; const char* name; }; + extern SignalDefs signalDefs[]; + SignalDefs signalDefs[] = { + { SIGINT, "SIGINT - Terminal interrupt signal" }, + { SIGILL, "SIGILL - Illegal instruction signal" }, + { SIGFPE, "SIGFPE - Floating point error signal" }, + { SIGSEGV, "SIGSEGV - Segmentation violation signal" }, + { SIGTERM, "SIGTERM - Termination request signal" }, + { SIGABRT, "SIGABRT - Abort (abnormal termination) signal" } + }; + + struct FatalConditionHandler { + + static void handleSignal( int sig ) { + for( std::size_t i = 0; i < sizeof(signalDefs)/sizeof(SignalDefs); ++i ) + if( sig == signalDefs[i].id ) + fatal( signalDefs[i].name, -sig ); + fatal( "", -sig ); + } + + FatalConditionHandler() : m_isSet( true ) { + for( std::size_t i = 0; i < sizeof(signalDefs)/sizeof(SignalDefs); ++i ) + signal( signalDefs[i].id, handleSignal ); + } + ~FatalConditionHandler() { + reset(); + } + void reset() { + if( m_isSet ) { + for( std::size_t i = 0; i < sizeof(signalDefs)/sizeof(SignalDefs); ++i ) + signal( signalDefs[i].id, SIG_DFL ); + m_isSet = false; + } + } + + bool m_isSet; + }; + +} // namespace Catch + +#endif // not Windows + +#include +#include + +namespace Catch { + + class StreamRedirect { + + public: + StreamRedirect( std::ostream& stream, std::string& targetString ) + : m_stream( stream ), + m_prevBuf( stream.rdbuf() ), + m_targetString( targetString ) + { + stream.rdbuf( m_oss.rdbuf() ); + } + + ~StreamRedirect() { + m_targetString += m_oss.str(); + m_stream.rdbuf( m_prevBuf ); + } + + private: + std::ostream& m_stream; + std::streambuf* m_prevBuf; + std::ostringstream m_oss; + std::string& m_targetString; + }; + + /////////////////////////////////////////////////////////////////////////// + + class RunContext : public IResultCapture, public IRunner { + + RunContext( RunContext const& ); + void operator =( RunContext const& ); + + public: + + explicit RunContext( Ptr const& _config, Ptr const& reporter ) + : m_runInfo( _config->name() ), + m_context( getCurrentMutableContext() ), + m_activeTestCase( CATCH_NULL ), + m_config( _config ), + m_reporter( reporter ) + { + m_context.setRunner( this ); + m_context.setConfig( m_config ); + m_context.setResultCapture( this ); + m_reporter->testRunStarting( m_runInfo ); + } + + virtual ~RunContext() { + m_reporter->testRunEnded( TestRunStats( m_runInfo, m_totals, aborting() ) ); + } + + void testGroupStarting( std::string const& testSpec, std::size_t groupIndex, std::size_t groupsCount ) { + m_reporter->testGroupStarting( GroupInfo( testSpec, groupIndex, groupsCount ) ); + } + void testGroupEnded( std::string const& testSpec, Totals const& totals, std::size_t groupIndex, std::size_t groupsCount ) { + m_reporter->testGroupEnded( TestGroupStats( GroupInfo( testSpec, groupIndex, groupsCount ), totals, aborting() ) ); + } + + Totals runTest( TestCase const& testCase ) { + Totals prevTotals = m_totals; + + std::string redirectedCout; + std::string redirectedCerr; + + TestCaseInfo testInfo = testCase.getTestCaseInfo(); + + m_reporter->testCaseStarting( testInfo ); + + m_activeTestCase = &testCase; + + do { + m_trackerContext.startRun(); + do { + m_trackerContext.startCycle(); + m_testCaseTracker = &SectionTracker::acquire( m_trackerContext, testInfo.name ); + runCurrentTest( redirectedCout, redirectedCerr ); + } + while( !m_testCaseTracker->isSuccessfullyCompleted() && !aborting() ); + } + // !TBD: deprecated - this will be replaced by indexed trackers + while( getCurrentContext().advanceGeneratorsForCurrentTest() && !aborting() ); + + Totals deltaTotals = m_totals.delta( prevTotals ); + if( testInfo.expectedToFail() && deltaTotals.testCases.passed > 0 ) { + deltaTotals.assertions.failed++; + deltaTotals.testCases.passed--; + deltaTotals.testCases.failed++; + } + m_totals.testCases += deltaTotals.testCases; + m_reporter->testCaseEnded( TestCaseStats( testInfo, + deltaTotals, + redirectedCout, + redirectedCerr, + aborting() ) ); + + m_activeTestCase = CATCH_NULL; + m_testCaseTracker = CATCH_NULL; + + return deltaTotals; + } + + Ptr config() const { + return m_config; + } + + private: // IResultCapture + + virtual void assertionEnded( AssertionResult const& result ) { + if( result.getResultType() == ResultWas::Ok ) { + m_totals.assertions.passed++; + } + else if( !result.isOk() ) { + m_totals.assertions.failed++; + } + + if( m_reporter->assertionEnded( AssertionStats( result, m_messages, m_totals ) ) ) + m_messages.clear(); + + // Reset working state + m_lastAssertionInfo = AssertionInfo( "", m_lastAssertionInfo.lineInfo, "{Unknown expression after the reported line}" , m_lastAssertionInfo.resultDisposition ); + m_lastResult = result; + } + + virtual bool sectionStarted ( + SectionInfo const& sectionInfo, + Counts& assertions + ) + { + std::ostringstream oss; + oss << sectionInfo.name << "@" << sectionInfo.lineInfo; + + ITracker& sectionTracker = SectionTracker::acquire( m_trackerContext, oss.str() ); + if( !sectionTracker.isOpen() ) + return false; + m_activeSections.push_back( §ionTracker ); + + m_lastAssertionInfo.lineInfo = sectionInfo.lineInfo; + + m_reporter->sectionStarting( sectionInfo ); + + assertions = m_totals.assertions; + + return true; + } + bool testForMissingAssertions( Counts& assertions ) { + if( assertions.total() != 0 ) + return false; + if( !m_config->warnAboutMissingAssertions() ) + return false; + if( m_trackerContext.currentTracker().hasChildren() ) + return false; + m_totals.assertions.failed++; + assertions.failed++; + return true; + } + + virtual void sectionEnded( SectionEndInfo const& endInfo ) { + Counts assertions = m_totals.assertions - endInfo.prevAssertions; + bool missingAssertions = testForMissingAssertions( assertions ); + + if( !m_activeSections.empty() ) { + m_activeSections.back()->close(); + m_activeSections.pop_back(); + } + + m_reporter->sectionEnded( SectionStats( endInfo.sectionInfo, assertions, endInfo.durationInSeconds, missingAssertions ) ); + m_messages.clear(); + } + + virtual void sectionEndedEarly( SectionEndInfo const& endInfo ) { + if( m_unfinishedSections.empty() ) + m_activeSections.back()->fail(); + else + m_activeSections.back()->close(); + m_activeSections.pop_back(); + + m_unfinishedSections.push_back( endInfo ); + } + + virtual void pushScopedMessage( MessageInfo const& message ) { + m_messages.push_back( message ); + } + + virtual void popScopedMessage( MessageInfo const& message ) { + m_messages.erase( std::remove( m_messages.begin(), m_messages.end(), message ), m_messages.end() ); + } + + virtual std::string getCurrentTestName() const { + return m_activeTestCase + ? m_activeTestCase->getTestCaseInfo().name + : ""; + } + + virtual const AssertionResult* getLastResult() const { + return &m_lastResult; + } + + virtual void handleFatalErrorCondition( std::string const& message ) { + ResultBuilder resultBuilder = makeUnexpectedResultBuilder(); + resultBuilder.setResultType( ResultWas::FatalErrorCondition ); + resultBuilder << message; + resultBuilder.captureExpression(); + + handleUnfinishedSections(); + + // Recreate section for test case (as we will lose the one that was in scope) + TestCaseInfo const& testCaseInfo = m_activeTestCase->getTestCaseInfo(); + SectionInfo testCaseSection( testCaseInfo.lineInfo, testCaseInfo.name, testCaseInfo.description ); + + Counts assertions; + assertions.failed = 1; + SectionStats testCaseSectionStats( testCaseSection, assertions, 0, false ); + m_reporter->sectionEnded( testCaseSectionStats ); + + TestCaseInfo testInfo = m_activeTestCase->getTestCaseInfo(); + + Totals deltaTotals; + deltaTotals.testCases.failed = 1; + m_reporter->testCaseEnded( TestCaseStats( testInfo, + deltaTotals, + "", + "", + false ) ); + m_totals.testCases.failed++; + testGroupEnded( "", m_totals, 1, 1 ); + m_reporter->testRunEnded( TestRunStats( m_runInfo, m_totals, false ) ); + } + + public: + // !TBD We need to do this another way! + bool aborting() const { + return m_totals.assertions.failed == static_cast( m_config->abortAfter() ); + } + + private: + + void runCurrentTest( std::string& redirectedCout, std::string& redirectedCerr ) { + TestCaseInfo const& testCaseInfo = m_activeTestCase->getTestCaseInfo(); + SectionInfo testCaseSection( testCaseInfo.lineInfo, testCaseInfo.name, testCaseInfo.description ); + m_reporter->sectionStarting( testCaseSection ); + Counts prevAssertions = m_totals.assertions; + double duration = 0; + try { + m_lastAssertionInfo = AssertionInfo( "TEST_CASE", testCaseInfo.lineInfo, "", ResultDisposition::Normal ); + + seedRng( *m_config ); + + Timer timer; + timer.start(); + if( m_reporter->getPreferences().shouldRedirectStdOut ) { + StreamRedirect coutRedir( Catch::cout(), redirectedCout ); + StreamRedirect cerrRedir( Catch::cerr(), redirectedCerr ); + invokeActiveTestCase(); + } + else { + invokeActiveTestCase(); + } + duration = timer.getElapsedSeconds(); + } + catch( TestFailureException& ) { + // This just means the test was aborted due to failure + } + catch(...) { + makeUnexpectedResultBuilder().useActiveException(); + } + m_testCaseTracker->close(); + handleUnfinishedSections(); + m_messages.clear(); + + Counts assertions = m_totals.assertions - prevAssertions; + bool missingAssertions = testForMissingAssertions( assertions ); + + if( testCaseInfo.okToFail() ) { + std::swap( assertions.failedButOk, assertions.failed ); + m_totals.assertions.failed -= assertions.failedButOk; + m_totals.assertions.failedButOk += assertions.failedButOk; + } + + SectionStats testCaseSectionStats( testCaseSection, assertions, duration, missingAssertions ); + m_reporter->sectionEnded( testCaseSectionStats ); + } + + void invokeActiveTestCase() { + FatalConditionHandler fatalConditionHandler; // Handle signals + m_activeTestCase->invoke(); + fatalConditionHandler.reset(); + } + + private: + + ResultBuilder makeUnexpectedResultBuilder() const { + return ResultBuilder( m_lastAssertionInfo.macroName.c_str(), + m_lastAssertionInfo.lineInfo, + m_lastAssertionInfo.capturedExpression.c_str(), + m_lastAssertionInfo.resultDisposition ); + } + + void handleUnfinishedSections() { + // If sections ended prematurely due to an exception we stored their + // infos here so we can tear them down outside the unwind process. + for( std::vector::const_reverse_iterator it = m_unfinishedSections.rbegin(), + itEnd = m_unfinishedSections.rend(); + it != itEnd; + ++it ) + sectionEnded( *it ); + m_unfinishedSections.clear(); + } + + TestRunInfo m_runInfo; + IMutableContext& m_context; + TestCase const* m_activeTestCase; + ITracker* m_testCaseTracker; + ITracker* m_currentSectionTracker; + AssertionResult m_lastResult; + + Ptr m_config; + Totals m_totals; + Ptr m_reporter; + std::vector m_messages; + AssertionInfo m_lastAssertionInfo; + std::vector m_unfinishedSections; + std::vector m_activeSections; + TrackerContext m_trackerContext; + }; + + IResultCapture& getResultCapture() { + if( IResultCapture* capture = getCurrentContext().getResultCapture() ) + return *capture; + else + throw std::logic_error( "No result capture instance" ); + } + +} // end namespace Catch + +// #included from: internal/catch_version.h +#define TWOBLUECUBES_CATCH_VERSION_H_INCLUDED + +namespace Catch { + + // Versioning information + struct Version { + Version( unsigned int _majorVersion, + unsigned int _minorVersion, + unsigned int _patchNumber, + std::string const& _branchName, + unsigned int _buildNumber ); + + unsigned int const majorVersion; + unsigned int const minorVersion; + unsigned int const patchNumber; + + // buildNumber is only used if branchName is not null + std::string const branchName; + unsigned int const buildNumber; + + friend std::ostream& operator << ( std::ostream& os, Version const& version ); + + private: + void operator=( Version const& ); + }; + + extern Version libraryVersion; +} + +#include +#include +#include + +namespace Catch { + + Ptr createReporter( std::string const& reporterName, Ptr const& config ) { + Ptr reporter = getRegistryHub().getReporterRegistry().create( reporterName, config.get() ); + if( !reporter ) { + std::ostringstream oss; + oss << "No reporter registered with name: '" << reporterName << "'"; + throw std::domain_error( oss.str() ); + } + return reporter; + } + + Ptr makeReporter( Ptr const& config ) { + std::vector reporters = config->getReporterNames(); + if( reporters.empty() ) + reporters.push_back( "console" ); + + Ptr reporter; + for( std::vector::const_iterator it = reporters.begin(), itEnd = reporters.end(); + it != itEnd; + ++it ) + reporter = addReporter( reporter, createReporter( *it, config ) ); + return reporter; + } + Ptr addListeners( Ptr const& config, Ptr reporters ) { + IReporterRegistry::Listeners listeners = getRegistryHub().getReporterRegistry().getListeners(); + for( IReporterRegistry::Listeners::const_iterator it = listeners.begin(), itEnd = listeners.end(); + it != itEnd; + ++it ) + reporters = addReporter(reporters, (*it)->create( ReporterConfig( config ) ) ); + return reporters; + } + + Totals runTests( Ptr const& config ) { + + Ptr iconfig = config.get(); + + Ptr reporter = makeReporter( config ); + reporter = addListeners( iconfig, reporter ); + + RunContext context( iconfig, reporter ); + + Totals totals; + + context.testGroupStarting( config->name(), 1, 1 ); + + TestSpec testSpec = config->testSpec(); + if( !testSpec.hasFilters() ) + testSpec = TestSpecParser( ITagAliasRegistry::get() ).parse( "~[.]" ).testSpec(); // All not hidden tests + + std::vector const& allTestCases = getAllTestCasesSorted( *iconfig ); + for( std::vector::const_iterator it = allTestCases.begin(), itEnd = allTestCases.end(); + it != itEnd; + ++it ) { + if( !context.aborting() && matchTest( *it, testSpec, *iconfig ) ) + totals += context.runTest( *it ); + else + reporter->skipTest( *it ); + } + + context.testGroupEnded( iconfig->name(), totals, 1, 1 ); + return totals; + } + + void applyFilenamesAsTags( IConfig const& config ) { + std::vector const& tests = getAllTestCasesSorted( config ); + for(std::size_t i = 0; i < tests.size(); ++i ) { + TestCase& test = const_cast( tests[i] ); + std::set tags = test.tags; + + std::string filename = test.lineInfo.file; + std::string::size_type lastSlash = filename.find_last_of( "\\/" ); + if( lastSlash != std::string::npos ) + filename = filename.substr( lastSlash+1 ); + + std::string::size_type lastDot = filename.find_last_of( "." ); + if( lastDot != std::string::npos ) + filename = filename.substr( 0, lastDot ); + + tags.insert( "#" + filename ); + setTags( test, tags ); + } + } + + class Session : NonCopyable { + static bool alreadyInstantiated; + + public: + + struct OnUnusedOptions { enum DoWhat { Ignore, Fail }; }; + + Session() + : m_cli( makeCommandLineParser() ) { + if( alreadyInstantiated ) { + std::string msg = "Only one instance of Catch::Session can ever be used"; + Catch::cerr() << msg << std::endl; + throw std::logic_error( msg ); + } + alreadyInstantiated = true; + } + ~Session() { + Catch::cleanUp(); + } + + void showHelp( std::string const& processName ) { + Catch::cout() << "\nCatch v" << libraryVersion << "\n"; + + m_cli.usage( Catch::cout(), processName ); + Catch::cout() << "For more detail usage please see the project docs\n" << std::endl; + } + + int applyCommandLine( int argc, char const* const* const argv, OnUnusedOptions::DoWhat unusedOptionBehaviour = OnUnusedOptions::Fail ) { + try { + m_cli.setThrowOnUnrecognisedTokens( unusedOptionBehaviour == OnUnusedOptions::Fail ); + m_unusedTokens = m_cli.parseInto( Clara::argsToVector( argc, argv ), m_configData ); + if( m_configData.showHelp ) + showHelp( m_configData.processName ); + m_config.reset(); + } + catch( std::exception& ex ) { + { + Colour colourGuard( Colour::Red ); + Catch::cerr() + << "\nError(s) in input:\n" + << Text( ex.what(), TextAttributes().setIndent(2) ) + << "\n\n"; + } + m_cli.usage( Catch::cout(), m_configData.processName ); + return (std::numeric_limits::max)(); + } + return 0; + } + + void useConfigData( ConfigData const& _configData ) { + m_configData = _configData; + m_config.reset(); + } + + int run( int argc, char const* const* const argv ) { + + int returnCode = applyCommandLine( argc, argv ); + if( returnCode == 0 ) + returnCode = run(); + return returnCode; + } + + int run() { + if( m_configData.showHelp ) + return 0; + + try + { + config(); // Force config to be constructed + + seedRng( *m_config ); + + if( m_configData.filenamesAsTags ) + applyFilenamesAsTags( *m_config ); + + // Handle list request + if( Option listed = list( config() ) ) + return static_cast( *listed ); + + return static_cast( runTests( m_config ).assertions.failed ); + } + catch( std::exception& ex ) { + Catch::cerr() << ex.what() << std::endl; + return (std::numeric_limits::max)(); + } + } + + Clara::CommandLine const& cli() const { + return m_cli; + } + std::vector const& unusedTokens() const { + return m_unusedTokens; + } + ConfigData& configData() { + return m_configData; + } + Config& config() { + if( !m_config ) + m_config = new Config( m_configData ); + return *m_config; + } + private: + Clara::CommandLine m_cli; + std::vector m_unusedTokens; + ConfigData m_configData; + Ptr m_config; + }; + + bool Session::alreadyInstantiated = false; + +} // end namespace Catch + +// #included from: catch_registry_hub.hpp +#define TWOBLUECUBES_CATCH_REGISTRY_HUB_HPP_INCLUDED + +// #included from: catch_test_case_registry_impl.hpp +#define TWOBLUECUBES_CATCH_TEST_CASE_REGISTRY_IMPL_HPP_INCLUDED + +#include +#include +#include +#include +#include + +namespace Catch { + + struct LexSort { + bool operator() (TestCase i,TestCase j) const { return (i sortTests( IConfig const& config, std::vector const& unsortedTestCases ) { + + std::vector sorted = unsortedTestCases; + + switch( config.runOrder() ) { + case RunTests::InLexicographicalOrder: + std::sort( sorted.begin(), sorted.end(), LexSort() ); + break; + case RunTests::InRandomOrder: + { + seedRng( config ); + + RandomNumberGenerator rng; + std::random_shuffle( sorted.begin(), sorted.end(), rng ); + } + break; + case RunTests::InDeclarationOrder: + // already in declaration order + break; + } + return sorted; + } + bool matchTest( TestCase const& testCase, TestSpec const& testSpec, IConfig const& config ) { + return testSpec.matches( testCase ) && ( config.allowThrows() || !testCase.throws() ); + } + + void enforceNoDuplicateTestCases( std::vector const& functions ) { + std::set seenFunctions; + for( std::vector::const_iterator it = functions.begin(), itEnd = functions.end(); + it != itEnd; + ++it ) { + std::pair::const_iterator, bool> prev = seenFunctions.insert( *it ); + if( !prev.second ){ + Catch::cerr() + << Colour( Colour::Red ) + << "error: TEST_CASE( \"" << it->name << "\" ) already defined.\n" + << "\tFirst seen at " << prev.first->getTestCaseInfo().lineInfo << "\n" + << "\tRedefined at " << it->getTestCaseInfo().lineInfo << std::endl; + exit(1); + } + } + } + + std::vector filterTests( std::vector const& testCases, TestSpec const& testSpec, IConfig const& config ) { + std::vector filtered; + filtered.reserve( testCases.size() ); + for( std::vector::const_iterator it = testCases.begin(), itEnd = testCases.end(); + it != itEnd; + ++it ) + if( matchTest( *it, testSpec, config ) ) + filtered.push_back( *it ); + return filtered; + } + std::vector const& getAllTestCasesSorted( IConfig const& config ) { + return getRegistryHub().getTestCaseRegistry().getAllTestsSorted( config ); + } + + class TestRegistry : public ITestCaseRegistry { + public: + TestRegistry() + : m_currentSortOrder( RunTests::InDeclarationOrder ), + m_unnamedCount( 0 ) + {} + virtual ~TestRegistry(); + + virtual void registerTest( TestCase const& testCase ) { + std::string name = testCase.getTestCaseInfo().name; + if( name == "" ) { + std::ostringstream oss; + oss << "Anonymous test case " << ++m_unnamedCount; + return registerTest( testCase.withName( oss.str() ) ); + } + m_functions.push_back( testCase ); + } + + virtual std::vector const& getAllTests() const { + return m_functions; + } + virtual std::vector const& getAllTestsSorted( IConfig const& config ) const { + if( m_sortedFunctions.empty() ) + enforceNoDuplicateTestCases( m_functions ); + + if( m_currentSortOrder != config.runOrder() || m_sortedFunctions.empty() ) { + m_sortedFunctions = sortTests( config, m_functions ); + m_currentSortOrder = config.runOrder(); + } + return m_sortedFunctions; + } + + private: + std::vector m_functions; + mutable RunTests::InWhatOrder m_currentSortOrder; + mutable std::vector m_sortedFunctions; + size_t m_unnamedCount; + std::ios_base::Init m_ostreamInit; // Forces cout/ cerr to be initialised + }; + + /////////////////////////////////////////////////////////////////////////// + + class FreeFunctionTestCase : public SharedImpl { + public: + + FreeFunctionTestCase( TestFunction fun ) : m_fun( fun ) {} + + virtual void invoke() const { + m_fun(); + } + + private: + virtual ~FreeFunctionTestCase(); + + TestFunction m_fun; + }; + + inline std::string extractClassName( std::string const& classOrQualifiedMethodName ) { + std::string className = classOrQualifiedMethodName; + if( startsWith( className, "&" ) ) + { + std::size_t lastColons = className.rfind( "::" ); + std::size_t penultimateColons = className.rfind( "::", lastColons-1 ); + if( penultimateColons == std::string::npos ) + penultimateColons = 1; + className = className.substr( penultimateColons, lastColons-penultimateColons ); + } + return className; + } + + void registerTestCase + ( ITestCase* testCase, + char const* classOrQualifiedMethodName, + NameAndDesc const& nameAndDesc, + SourceLineInfo const& lineInfo ) { + + getMutableRegistryHub().registerTest + ( makeTestCase + ( testCase, + extractClassName( classOrQualifiedMethodName ), + nameAndDesc.name, + nameAndDesc.description, + lineInfo ) ); + } + void registerTestCaseFunction + ( TestFunction function, + SourceLineInfo const& lineInfo, + NameAndDesc const& nameAndDesc ) { + registerTestCase( new FreeFunctionTestCase( function ), "", nameAndDesc, lineInfo ); + } + + /////////////////////////////////////////////////////////////////////////// + + AutoReg::AutoReg + ( TestFunction function, + SourceLineInfo const& lineInfo, + NameAndDesc const& nameAndDesc ) { + registerTestCaseFunction( function, lineInfo, nameAndDesc ); + } + + AutoReg::~AutoReg() {} + +} // end namespace Catch + +// #included from: catch_reporter_registry.hpp +#define TWOBLUECUBES_CATCH_REPORTER_REGISTRY_HPP_INCLUDED + +#include + +namespace Catch { + + class ReporterRegistry : public IReporterRegistry { + + public: + + virtual ~ReporterRegistry() CATCH_OVERRIDE {} + + virtual IStreamingReporter* create( std::string const& name, Ptr const& config ) const CATCH_OVERRIDE { + FactoryMap::const_iterator it = m_factories.find( name ); + if( it == m_factories.end() ) + return CATCH_NULL; + return it->second->create( ReporterConfig( config ) ); + } + + void registerReporter( std::string const& name, Ptr const& factory ) { + m_factories.insert( std::make_pair( name, factory ) ); + } + void registerListener( Ptr const& factory ) { + m_listeners.push_back( factory ); + } + + virtual FactoryMap const& getFactories() const CATCH_OVERRIDE { + return m_factories; + } + virtual Listeners const& getListeners() const CATCH_OVERRIDE { + return m_listeners; + } + + private: + FactoryMap m_factories; + Listeners m_listeners; + }; +} + +// #included from: catch_exception_translator_registry.hpp +#define TWOBLUECUBES_CATCH_EXCEPTION_TRANSLATOR_REGISTRY_HPP_INCLUDED + +#ifdef __OBJC__ +#import "Foundation/Foundation.h" +#endif + +namespace Catch { + + class ExceptionTranslatorRegistry : public IExceptionTranslatorRegistry { + public: + ~ExceptionTranslatorRegistry() { + deleteAll( m_translators ); + } + + virtual void registerTranslator( const IExceptionTranslator* translator ) { + m_translators.push_back( translator ); + } + + virtual std::string translateActiveException() const { + try { +#ifdef __OBJC__ + // In Objective-C try objective-c exceptions first + @try { + return tryTranslators(); + } + @catch (NSException *exception) { + return Catch::toString( [exception description] ); + } +#else + return tryTranslators(); +#endif + } + catch( TestFailureException& ) { + throw; + } + catch( std::exception& ex ) { + return ex.what(); + } + catch( std::string& msg ) { + return msg; + } + catch( const char* msg ) { + return msg; + } + catch(...) { + return "Unknown exception"; + } + } + + std::string tryTranslators() const { + if( m_translators.empty() ) + throw; + else + return m_translators[0]->translate( m_translators.begin()+1, m_translators.end() ); + } + + private: + std::vector m_translators; + }; +} + +namespace Catch { + + namespace { + + class RegistryHub : public IRegistryHub, public IMutableRegistryHub { + + RegistryHub( RegistryHub const& ); + void operator=( RegistryHub const& ); + + public: // IRegistryHub + RegistryHub() { + } + virtual IReporterRegistry const& getReporterRegistry() const CATCH_OVERRIDE { + return m_reporterRegistry; + } + virtual ITestCaseRegistry const& getTestCaseRegistry() const CATCH_OVERRIDE { + return m_testCaseRegistry; + } + virtual IExceptionTranslatorRegistry& getExceptionTranslatorRegistry() CATCH_OVERRIDE { + return m_exceptionTranslatorRegistry; + } + + public: // IMutableRegistryHub + virtual void registerReporter( std::string const& name, Ptr const& factory ) CATCH_OVERRIDE { + m_reporterRegistry.registerReporter( name, factory ); + } + virtual void registerListener( Ptr const& factory ) CATCH_OVERRIDE { + m_reporterRegistry.registerListener( factory ); + } + virtual void registerTest( TestCase const& testInfo ) CATCH_OVERRIDE { + m_testCaseRegistry.registerTest( testInfo ); + } + virtual void registerTranslator( const IExceptionTranslator* translator ) CATCH_OVERRIDE { + m_exceptionTranslatorRegistry.registerTranslator( translator ); + } + + private: + TestRegistry m_testCaseRegistry; + ReporterRegistry m_reporterRegistry; + ExceptionTranslatorRegistry m_exceptionTranslatorRegistry; + }; + + // Single, global, instance + inline RegistryHub*& getTheRegistryHub() { + static RegistryHub* theRegistryHub = CATCH_NULL; + if( !theRegistryHub ) + theRegistryHub = new RegistryHub(); + return theRegistryHub; + } + } + + IRegistryHub& getRegistryHub() { + return *getTheRegistryHub(); + } + IMutableRegistryHub& getMutableRegistryHub() { + return *getTheRegistryHub(); + } + void cleanUp() { + delete getTheRegistryHub(); + getTheRegistryHub() = CATCH_NULL; + cleanUpContext(); + } + std::string translateActiveException() { + return getRegistryHub().getExceptionTranslatorRegistry().translateActiveException(); + } + +} // end namespace Catch + +// #included from: catch_notimplemented_exception.hpp +#define TWOBLUECUBES_CATCH_NOTIMPLEMENTED_EXCEPTION_HPP_INCLUDED + +#include + +namespace Catch { + + NotImplementedException::NotImplementedException( SourceLineInfo const& lineInfo ) + : m_lineInfo( lineInfo ) { + std::ostringstream oss; + oss << lineInfo << ": function "; + oss << "not implemented"; + m_what = oss.str(); + } + + const char* NotImplementedException::what() const CATCH_NOEXCEPT { + return m_what.c_str(); + } + +} // end namespace Catch + +// #included from: catch_context_impl.hpp +#define TWOBLUECUBES_CATCH_CONTEXT_IMPL_HPP_INCLUDED + +// #included from: catch_stream.hpp +#define TWOBLUECUBES_CATCH_STREAM_HPP_INCLUDED + +#include +#include +#include + +namespace Catch { + + template + class StreamBufImpl : public StreamBufBase { + char data[bufferSize]; + WriterF m_writer; + + public: + StreamBufImpl() { + setp( data, data + sizeof(data) ); + } + + ~StreamBufImpl() CATCH_NOEXCEPT { + sync(); + } + + private: + int overflow( int c ) { + sync(); + + if( c != EOF ) { + if( pbase() == epptr() ) + m_writer( std::string( 1, static_cast( c ) ) ); + else + sputc( static_cast( c ) ); + } + return 0; + } + + int sync() { + if( pbase() != pptr() ) { + m_writer( std::string( pbase(), static_cast( pptr() - pbase() ) ) ); + setp( pbase(), epptr() ); + } + return 0; + } + }; + + /////////////////////////////////////////////////////////////////////////// + + FileStream::FileStream( std::string const& filename ) { + m_ofs.open( filename.c_str() ); + if( m_ofs.fail() ) { + std::ostringstream oss; + oss << "Unable to open file: '" << filename << "'"; + throw std::domain_error( oss.str() ); + } + } + + std::ostream& FileStream::stream() const { + return m_ofs; + } + + struct OutputDebugWriter { + + void operator()( std::string const&str ) { + writeToDebugConsole( str ); + } + }; + + DebugOutStream::DebugOutStream() + : m_streamBuf( new StreamBufImpl() ), + m_os( m_streamBuf.get() ) + {} + + std::ostream& DebugOutStream::stream() const { + return m_os; + } + + // Store the streambuf from cout up-front because + // cout may get redirected when running tests + CoutStream::CoutStream() + : m_os( Catch::cout().rdbuf() ) + {} + + std::ostream& CoutStream::stream() const { + return m_os; + } + +#ifndef CATCH_CONFIG_NOSTDOUT // If you #define this you must implement these functions + std::ostream& cout() { + return std::cout; + } + std::ostream& cerr() { + return std::cerr; + } +#endif +} + +namespace Catch { + + class Context : public IMutableContext { + + Context() : m_config( CATCH_NULL ), m_runner( CATCH_NULL ), m_resultCapture( CATCH_NULL ) {} + Context( Context const& ); + void operator=( Context const& ); + + public: // IContext + virtual IResultCapture* getResultCapture() { + return m_resultCapture; + } + virtual IRunner* getRunner() { + return m_runner; + } + virtual size_t getGeneratorIndex( std::string const& fileInfo, size_t totalSize ) { + return getGeneratorsForCurrentTest() + .getGeneratorInfo( fileInfo, totalSize ) + .getCurrentIndex(); + } + virtual bool advanceGeneratorsForCurrentTest() { + IGeneratorsForTest* generators = findGeneratorsForCurrentTest(); + return generators && generators->moveNext(); + } + + virtual Ptr getConfig() const { + return m_config; + } + + public: // IMutableContext + virtual void setResultCapture( IResultCapture* resultCapture ) { + m_resultCapture = resultCapture; + } + virtual void setRunner( IRunner* runner ) { + m_runner = runner; + } + virtual void setConfig( Ptr const& config ) { + m_config = config; + } + + friend IMutableContext& getCurrentMutableContext(); + + private: + IGeneratorsForTest* findGeneratorsForCurrentTest() { + std::string testName = getResultCapture()->getCurrentTestName(); + + std::map::const_iterator it = + m_generatorsByTestName.find( testName ); + return it != m_generatorsByTestName.end() + ? it->second + : CATCH_NULL; + } + + IGeneratorsForTest& getGeneratorsForCurrentTest() { + IGeneratorsForTest* generators = findGeneratorsForCurrentTest(); + if( !generators ) { + std::string testName = getResultCapture()->getCurrentTestName(); + generators = createGeneratorsForTest(); + m_generatorsByTestName.insert( std::make_pair( testName, generators ) ); + } + return *generators; + } + + private: + Ptr m_config; + IRunner* m_runner; + IResultCapture* m_resultCapture; + std::map m_generatorsByTestName; + }; + + namespace { + Context* currentContext = CATCH_NULL; + } + IMutableContext& getCurrentMutableContext() { + if( !currentContext ) + currentContext = new Context(); + return *currentContext; + } + IContext& getCurrentContext() { + return getCurrentMutableContext(); + } + + void cleanUpContext() { + delete currentContext; + currentContext = CATCH_NULL; + } +} + +// #included from: catch_console_colour_impl.hpp +#define TWOBLUECUBES_CATCH_CONSOLE_COLOUR_IMPL_HPP_INCLUDED + +namespace Catch { + namespace { + + struct IColourImpl { + virtual ~IColourImpl() {} + virtual void use( Colour::Code _colourCode ) = 0; + }; + + struct NoColourImpl : IColourImpl { + void use( Colour::Code ) {} + + static IColourImpl* instance() { + static NoColourImpl s_instance; + return &s_instance; + } + }; + + } // anon namespace +} // namespace Catch + +#if !defined( CATCH_CONFIG_COLOUR_NONE ) && !defined( CATCH_CONFIG_COLOUR_WINDOWS ) && !defined( CATCH_CONFIG_COLOUR_ANSI ) +# ifdef CATCH_PLATFORM_WINDOWS +# define CATCH_CONFIG_COLOUR_WINDOWS +# else +# define CATCH_CONFIG_COLOUR_ANSI +# endif +#endif + +#if defined ( CATCH_CONFIG_COLOUR_WINDOWS ) ///////////////////////////////////////// + +#ifndef NOMINMAX +#define NOMINMAX +#endif + +#ifdef __AFXDLL +#include +#else +#include +#endif + +namespace Catch { +namespace { + + class Win32ColourImpl : public IColourImpl { + public: + Win32ColourImpl() : stdoutHandle( GetStdHandle(STD_OUTPUT_HANDLE) ) + { + CONSOLE_SCREEN_BUFFER_INFO csbiInfo; + GetConsoleScreenBufferInfo( stdoutHandle, &csbiInfo ); + originalForegroundAttributes = csbiInfo.wAttributes & ~( BACKGROUND_GREEN | BACKGROUND_RED | BACKGROUND_BLUE | BACKGROUND_INTENSITY ); + originalBackgroundAttributes = csbiInfo.wAttributes & ~( FOREGROUND_GREEN | FOREGROUND_RED | FOREGROUND_BLUE | FOREGROUND_INTENSITY ); + } + + virtual void use( Colour::Code _colourCode ) { + switch( _colourCode ) { + case Colour::None: return setTextAttribute( originalForegroundAttributes ); + case Colour::White: return setTextAttribute( FOREGROUND_GREEN | FOREGROUND_RED | FOREGROUND_BLUE ); + case Colour::Red: return setTextAttribute( FOREGROUND_RED ); + case Colour::Green: return setTextAttribute( FOREGROUND_GREEN ); + case Colour::Blue: return setTextAttribute( FOREGROUND_BLUE ); + case Colour::Cyan: return setTextAttribute( FOREGROUND_BLUE | FOREGROUND_GREEN ); + case Colour::Yellow: return setTextAttribute( FOREGROUND_RED | FOREGROUND_GREEN ); + case Colour::Grey: return setTextAttribute( 0 ); + + case Colour::LightGrey: return setTextAttribute( FOREGROUND_INTENSITY ); + case Colour::BrightRed: return setTextAttribute( FOREGROUND_INTENSITY | FOREGROUND_RED ); + case Colour::BrightGreen: return setTextAttribute( FOREGROUND_INTENSITY | FOREGROUND_GREEN ); + case Colour::BrightWhite: return setTextAttribute( FOREGROUND_INTENSITY | FOREGROUND_GREEN | FOREGROUND_RED | FOREGROUND_BLUE ); + + case Colour::Bright: throw std::logic_error( "not a colour" ); + } + } + + private: + void setTextAttribute( WORD _textAttribute ) { + SetConsoleTextAttribute( stdoutHandle, _textAttribute | originalBackgroundAttributes ); + } + HANDLE stdoutHandle; + WORD originalForegroundAttributes; + WORD originalBackgroundAttributes; + }; + + IColourImpl* platformColourInstance() { + static Win32ColourImpl s_instance; + + Ptr config = getCurrentContext().getConfig(); + UseColour::YesOrNo colourMode = config + ? config->useColour() + : UseColour::Auto; + if( colourMode == UseColour::Auto ) + colourMode = !isDebuggerActive() + ? UseColour::Yes + : UseColour::No; + return colourMode == UseColour::Yes + ? &s_instance + : NoColourImpl::instance(); + } + +} // end anon namespace +} // end namespace Catch + +#elif defined( CATCH_CONFIG_COLOUR_ANSI ) ////////////////////////////////////// + +#include + +namespace Catch { +namespace { + + // use POSIX/ ANSI console terminal codes + // Thanks to Adam Strzelecki for original contribution + // (http://github.com/nanoant) + // https://github.com/philsquared/Catch/pull/131 + class PosixColourImpl : public IColourImpl { + public: + virtual void use( Colour::Code _colourCode ) { + switch( _colourCode ) { + case Colour::None: + case Colour::White: return setColour( "[0m" ); + case Colour::Red: return setColour( "[0;31m" ); + case Colour::Green: return setColour( "[0;32m" ); + case Colour::Blue: return setColour( "[0:34m" ); + case Colour::Cyan: return setColour( "[0;36m" ); + case Colour::Yellow: return setColour( "[0;33m" ); + case Colour::Grey: return setColour( "[1;30m" ); + + case Colour::LightGrey: return setColour( "[0;37m" ); + case Colour::BrightRed: return setColour( "[1;31m" ); + case Colour::BrightGreen: return setColour( "[1;32m" ); + case Colour::BrightWhite: return setColour( "[1;37m" ); + + case Colour::Bright: throw std::logic_error( "not a colour" ); + } + } + static IColourImpl* instance() { + static PosixColourImpl s_instance; + return &s_instance; + } + + private: + void setColour( const char* _escapeCode ) { + Catch::cout() << '\033' << _escapeCode; + } + }; + + IColourImpl* platformColourInstance() { + Ptr config = getCurrentContext().getConfig(); + UseColour::YesOrNo colourMode = config + ? config->useColour() + : UseColour::Auto; + if( colourMode == UseColour::Auto ) + colourMode = (!isDebuggerActive() && isatty(STDOUT_FILENO) ) + ? UseColour::Yes + : UseColour::No; + return colourMode == UseColour::Yes + ? PosixColourImpl::instance() + : NoColourImpl::instance(); + } + +} // end anon namespace +} // end namespace Catch + +#else // not Windows or ANSI /////////////////////////////////////////////// + +namespace Catch { + + static IColourImpl* platformColourInstance() { return NoColourImpl::instance(); } + +} // end namespace Catch + +#endif // Windows/ ANSI/ None + +namespace Catch { + + Colour::Colour( Code _colourCode ) : m_moved( false ) { use( _colourCode ); } + Colour::Colour( Colour const& _other ) : m_moved( false ) { const_cast( _other ).m_moved = true; } + Colour::~Colour(){ if( !m_moved ) use( None ); } + + void Colour::use( Code _colourCode ) { + static IColourImpl* impl = platformColourInstance(); + impl->use( _colourCode ); + } + +} // end namespace Catch + +// #included from: catch_generators_impl.hpp +#define TWOBLUECUBES_CATCH_GENERATORS_IMPL_HPP_INCLUDED + +#include +#include +#include + +namespace Catch { + + struct GeneratorInfo : IGeneratorInfo { + + GeneratorInfo( std::size_t size ) + : m_size( size ), + m_currentIndex( 0 ) + {} + + bool moveNext() { + if( ++m_currentIndex == m_size ) { + m_currentIndex = 0; + return false; + } + return true; + } + + std::size_t getCurrentIndex() const { + return m_currentIndex; + } + + std::size_t m_size; + std::size_t m_currentIndex; + }; + + /////////////////////////////////////////////////////////////////////////// + + class GeneratorsForTest : public IGeneratorsForTest { + + public: + ~GeneratorsForTest() { + deleteAll( m_generatorsInOrder ); + } + + IGeneratorInfo& getGeneratorInfo( std::string const& fileInfo, std::size_t size ) { + std::map::const_iterator it = m_generatorsByName.find( fileInfo ); + if( it == m_generatorsByName.end() ) { + IGeneratorInfo* info = new GeneratorInfo( size ); + m_generatorsByName.insert( std::make_pair( fileInfo, info ) ); + m_generatorsInOrder.push_back( info ); + return *info; + } + return *it->second; + } + + bool moveNext() { + std::vector::const_iterator it = m_generatorsInOrder.begin(); + std::vector::const_iterator itEnd = m_generatorsInOrder.end(); + for(; it != itEnd; ++it ) { + if( (*it)->moveNext() ) + return true; + } + return false; + } + + private: + std::map m_generatorsByName; + std::vector m_generatorsInOrder; + }; + + IGeneratorsForTest* createGeneratorsForTest() + { + return new GeneratorsForTest(); + } + +} // end namespace Catch + +// #included from: catch_assertionresult.hpp +#define TWOBLUECUBES_CATCH_ASSERTIONRESULT_HPP_INCLUDED + +namespace Catch { + + AssertionInfo::AssertionInfo( std::string const& _macroName, + SourceLineInfo const& _lineInfo, + std::string const& _capturedExpression, + ResultDisposition::Flags _resultDisposition ) + : macroName( _macroName ), + lineInfo( _lineInfo ), + capturedExpression( _capturedExpression ), + resultDisposition( _resultDisposition ) + {} + + AssertionResult::AssertionResult() {} + + AssertionResult::AssertionResult( AssertionInfo const& info, AssertionResultData const& data ) + : m_info( info ), + m_resultData( data ) + {} + + AssertionResult::~AssertionResult() {} + + // Result was a success + bool AssertionResult::succeeded() const { + return Catch::isOk( m_resultData.resultType ); + } + + // Result was a success, or failure is suppressed + bool AssertionResult::isOk() const { + return Catch::isOk( m_resultData.resultType ) || shouldSuppressFailure( m_info.resultDisposition ); + } + + ResultWas::OfType AssertionResult::getResultType() const { + return m_resultData.resultType; + } + + bool AssertionResult::hasExpression() const { + return !m_info.capturedExpression.empty(); + } + + bool AssertionResult::hasMessage() const { + return !m_resultData.message.empty(); + } + + std::string AssertionResult::getExpression() const { + if( isFalseTest( m_info.resultDisposition ) ) + return "!" + m_info.capturedExpression; + else + return m_info.capturedExpression; + } + std::string AssertionResult::getExpressionInMacro() const { + if( m_info.macroName.empty() ) + return m_info.capturedExpression; + else + return m_info.macroName + "( " + m_info.capturedExpression + " )"; + } + + bool AssertionResult::hasExpandedExpression() const { + return hasExpression() && getExpandedExpression() != getExpression(); + } + + std::string AssertionResult::getExpandedExpression() const { + return m_resultData.reconstructedExpression; + } + + std::string AssertionResult::getMessage() const { + return m_resultData.message; + } + SourceLineInfo AssertionResult::getSourceInfo() const { + return m_info.lineInfo; + } + + std::string AssertionResult::getTestMacroName() const { + return m_info.macroName; + } + +} // end namespace Catch + +// #included from: catch_test_case_info.hpp +#define TWOBLUECUBES_CATCH_TEST_CASE_INFO_HPP_INCLUDED + +namespace Catch { + + inline TestCaseInfo::SpecialProperties parseSpecialTag( std::string const& tag ) { + if( startsWith( tag, "." ) || + tag == "hide" || + tag == "!hide" ) + return TestCaseInfo::IsHidden; + else if( tag == "!throws" ) + return TestCaseInfo::Throws; + else if( tag == "!shouldfail" ) + return TestCaseInfo::ShouldFail; + else if( tag == "!mayfail" ) + return TestCaseInfo::MayFail; + else + return TestCaseInfo::None; + } + inline bool isReservedTag( std::string const& tag ) { + return parseSpecialTag( tag ) == TestCaseInfo::None && tag.size() > 0 && !isalnum( tag[0] ); + } + inline void enforceNotReservedTag( std::string const& tag, SourceLineInfo const& _lineInfo ) { + if( isReservedTag( tag ) ) { + { + Colour colourGuard( Colour::Red ); + Catch::cerr() + << "Tag name [" << tag << "] not allowed.\n" + << "Tag names starting with non alpha-numeric characters are reserved\n"; + } + { + Colour colourGuard( Colour::FileName ); + Catch::cerr() << _lineInfo << std::endl; + } + exit(1); + } + } + + TestCase makeTestCase( ITestCase* _testCase, + std::string const& _className, + std::string const& _name, + std::string const& _descOrTags, + SourceLineInfo const& _lineInfo ) + { + bool isHidden( startsWith( _name, "./" ) ); // Legacy support + + // Parse out tags + std::set tags; + std::string desc, tag; + bool inTag = false; + for( std::size_t i = 0; i < _descOrTags.size(); ++i ) { + char c = _descOrTags[i]; + if( !inTag ) { + if( c == '[' ) + inTag = true; + else + desc += c; + } + else { + if( c == ']' ) { + TestCaseInfo::SpecialProperties prop = parseSpecialTag( tag ); + if( prop == TestCaseInfo::IsHidden ) + isHidden = true; + else if( prop == TestCaseInfo::None ) + enforceNotReservedTag( tag, _lineInfo ); + + tags.insert( tag ); + tag.clear(); + inTag = false; + } + else + tag += c; + } + } + if( isHidden ) { + tags.insert( "hide" ); + tags.insert( "." ); + } + + TestCaseInfo info( _name, _className, desc, tags, _lineInfo ); + return TestCase( _testCase, info ); + } + + void setTags( TestCaseInfo& testCaseInfo, std::set const& tags ) + { + testCaseInfo.tags = tags; + testCaseInfo.lcaseTags.clear(); + + std::ostringstream oss; + for( std::set::const_iterator it = tags.begin(), itEnd = tags.end(); it != itEnd; ++it ) { + oss << "[" << *it << "]"; + std::string lcaseTag = toLower( *it ); + testCaseInfo.properties = static_cast( testCaseInfo.properties | parseSpecialTag( lcaseTag ) ); + testCaseInfo.lcaseTags.insert( lcaseTag ); + } + testCaseInfo.tagsAsString = oss.str(); + } + + TestCaseInfo::TestCaseInfo( std::string const& _name, + std::string const& _className, + std::string const& _description, + std::set const& _tags, + SourceLineInfo const& _lineInfo ) + : name( _name ), + className( _className ), + description( _description ), + lineInfo( _lineInfo ), + properties( None ) + { + setTags( *this, _tags ); + } + + TestCaseInfo::TestCaseInfo( TestCaseInfo const& other ) + : name( other.name ), + className( other.className ), + description( other.description ), + tags( other.tags ), + lcaseTags( other.lcaseTags ), + tagsAsString( other.tagsAsString ), + lineInfo( other.lineInfo ), + properties( other.properties ) + {} + + bool TestCaseInfo::isHidden() const { + return ( properties & IsHidden ) != 0; + } + bool TestCaseInfo::throws() const { + return ( properties & Throws ) != 0; + } + bool TestCaseInfo::okToFail() const { + return ( properties & (ShouldFail | MayFail ) ) != 0; + } + bool TestCaseInfo::expectedToFail() const { + return ( properties & (ShouldFail ) ) != 0; + } + + TestCase::TestCase( ITestCase* testCase, TestCaseInfo const& info ) : TestCaseInfo( info ), test( testCase ) {} + + TestCase::TestCase( TestCase const& other ) + : TestCaseInfo( other ), + test( other.test ) + {} + + TestCase TestCase::withName( std::string const& _newName ) const { + TestCase other( *this ); + other.name = _newName; + return other; + } + + void TestCase::swap( TestCase& other ) { + test.swap( other.test ); + name.swap( other.name ); + className.swap( other.className ); + description.swap( other.description ); + tags.swap( other.tags ); + lcaseTags.swap( other.lcaseTags ); + tagsAsString.swap( other.tagsAsString ); + std::swap( TestCaseInfo::properties, static_cast( other ).properties ); + std::swap( lineInfo, other.lineInfo ); + } + + void TestCase::invoke() const { + test->invoke(); + } + + bool TestCase::operator == ( TestCase const& other ) const { + return test.get() == other.test.get() && + name == other.name && + className == other.className; + } + + bool TestCase::operator < ( TestCase const& other ) const { + return name < other.name; + } + TestCase& TestCase::operator = ( TestCase const& other ) { + TestCase temp( other ); + swap( temp ); + return *this; + } + + TestCaseInfo const& TestCase::getTestCaseInfo() const + { + return *this; + } + +} // end namespace Catch + +// #included from: catch_version.hpp +#define TWOBLUECUBES_CATCH_VERSION_HPP_INCLUDED + +namespace Catch { + + Version::Version + ( unsigned int _majorVersion, + unsigned int _minorVersion, + unsigned int _patchNumber, + std::string const& _branchName, + unsigned int _buildNumber ) + : majorVersion( _majorVersion ), + minorVersion( _minorVersion ), + patchNumber( _patchNumber ), + branchName( _branchName ), + buildNumber( _buildNumber ) + {} + + std::ostream& operator << ( std::ostream& os, Version const& version ) { + os << version.majorVersion << "." + << version.minorVersion << "." + << version.patchNumber; + + if( !version.branchName.empty() ) { + os << "-" << version.branchName + << "." << version.buildNumber; + } + return os; + } + + Version libraryVersion( 1, 5, 0, "", 0 ); + +} + +// #included from: catch_message.hpp +#define TWOBLUECUBES_CATCH_MESSAGE_HPP_INCLUDED + +namespace Catch { + + MessageInfo::MessageInfo( std::string const& _macroName, + SourceLineInfo const& _lineInfo, + ResultWas::OfType _type ) + : macroName( _macroName ), + lineInfo( _lineInfo ), + type( _type ), + sequence( ++globalCount ) + {} + + // This may need protecting if threading support is added + unsigned int MessageInfo::globalCount = 0; + + //////////////////////////////////////////////////////////////////////////// + + ScopedMessage::ScopedMessage( MessageBuilder const& builder ) + : m_info( builder.m_info ) + { + m_info.message = builder.m_stream.str(); + getResultCapture().pushScopedMessage( m_info ); + } + ScopedMessage::ScopedMessage( ScopedMessage const& other ) + : m_info( other.m_info ) + {} + + ScopedMessage::~ScopedMessage() { + getResultCapture().popScopedMessage( m_info ); + } + +} // end namespace Catch + +// #included from: catch_legacy_reporter_adapter.hpp +#define TWOBLUECUBES_CATCH_LEGACY_REPORTER_ADAPTER_HPP_INCLUDED + +// #included from: catch_legacy_reporter_adapter.h +#define TWOBLUECUBES_CATCH_LEGACY_REPORTER_ADAPTER_H_INCLUDED + +namespace Catch +{ + // Deprecated + struct IReporter : IShared { + virtual ~IReporter(); + + virtual bool shouldRedirectStdout() const = 0; + + virtual void StartTesting() = 0; + virtual void EndTesting( Totals const& totals ) = 0; + virtual void StartGroup( std::string const& groupName ) = 0; + virtual void EndGroup( std::string const& groupName, Totals const& totals ) = 0; + virtual void StartTestCase( TestCaseInfo const& testInfo ) = 0; + virtual void EndTestCase( TestCaseInfo const& testInfo, Totals const& totals, std::string const& stdOut, std::string const& stdErr ) = 0; + virtual void StartSection( std::string const& sectionName, std::string const& description ) = 0; + virtual void EndSection( std::string const& sectionName, Counts const& assertions ) = 0; + virtual void NoAssertionsInSection( std::string const& sectionName ) = 0; + virtual void NoAssertionsInTestCase( std::string const& testName ) = 0; + virtual void Aborted() = 0; + virtual void Result( AssertionResult const& result ) = 0; + }; + + class LegacyReporterAdapter : public SharedImpl + { + public: + LegacyReporterAdapter( Ptr const& legacyReporter ); + virtual ~LegacyReporterAdapter(); + + virtual ReporterPreferences getPreferences() const; + virtual void noMatchingTestCases( std::string const& ); + virtual void testRunStarting( TestRunInfo const& ); + virtual void testGroupStarting( GroupInfo const& groupInfo ); + virtual void testCaseStarting( TestCaseInfo const& testInfo ); + virtual void sectionStarting( SectionInfo const& sectionInfo ); + virtual void assertionStarting( AssertionInfo const& ); + virtual bool assertionEnded( AssertionStats const& assertionStats ); + virtual void sectionEnded( SectionStats const& sectionStats ); + virtual void testCaseEnded( TestCaseStats const& testCaseStats ); + virtual void testGroupEnded( TestGroupStats const& testGroupStats ); + virtual void testRunEnded( TestRunStats const& testRunStats ); + virtual void skipTest( TestCaseInfo const& ); + + private: + Ptr m_legacyReporter; + }; +} + +namespace Catch +{ + LegacyReporterAdapter::LegacyReporterAdapter( Ptr const& legacyReporter ) + : m_legacyReporter( legacyReporter ) + {} + LegacyReporterAdapter::~LegacyReporterAdapter() {} + + ReporterPreferences LegacyReporterAdapter::getPreferences() const { + ReporterPreferences prefs; + prefs.shouldRedirectStdOut = m_legacyReporter->shouldRedirectStdout(); + return prefs; + } + + void LegacyReporterAdapter::noMatchingTestCases( std::string const& ) {} + void LegacyReporterAdapter::testRunStarting( TestRunInfo const& ) { + m_legacyReporter->StartTesting(); + } + void LegacyReporterAdapter::testGroupStarting( GroupInfo const& groupInfo ) { + m_legacyReporter->StartGroup( groupInfo.name ); + } + void LegacyReporterAdapter::testCaseStarting( TestCaseInfo const& testInfo ) { + m_legacyReporter->StartTestCase( testInfo ); + } + void LegacyReporterAdapter::sectionStarting( SectionInfo const& sectionInfo ) { + m_legacyReporter->StartSection( sectionInfo.name, sectionInfo.description ); + } + void LegacyReporterAdapter::assertionStarting( AssertionInfo const& ) { + // Not on legacy interface + } + + bool LegacyReporterAdapter::assertionEnded( AssertionStats const& assertionStats ) { + if( assertionStats.assertionResult.getResultType() != ResultWas::Ok ) { + for( std::vector::const_iterator it = assertionStats.infoMessages.begin(), itEnd = assertionStats.infoMessages.end(); + it != itEnd; + ++it ) { + if( it->type == ResultWas::Info ) { + ResultBuilder rb( it->macroName.c_str(), it->lineInfo, "", ResultDisposition::Normal ); + rb << it->message; + rb.setResultType( ResultWas::Info ); + AssertionResult result = rb.build(); + m_legacyReporter->Result( result ); + } + } + } + m_legacyReporter->Result( assertionStats.assertionResult ); + return true; + } + void LegacyReporterAdapter::sectionEnded( SectionStats const& sectionStats ) { + if( sectionStats.missingAssertions ) + m_legacyReporter->NoAssertionsInSection( sectionStats.sectionInfo.name ); + m_legacyReporter->EndSection( sectionStats.sectionInfo.name, sectionStats.assertions ); + } + void LegacyReporterAdapter::testCaseEnded( TestCaseStats const& testCaseStats ) { + m_legacyReporter->EndTestCase + ( testCaseStats.testInfo, + testCaseStats.totals, + testCaseStats.stdOut, + testCaseStats.stdErr ); + } + void LegacyReporterAdapter::testGroupEnded( TestGroupStats const& testGroupStats ) { + if( testGroupStats.aborting ) + m_legacyReporter->Aborted(); + m_legacyReporter->EndGroup( testGroupStats.groupInfo.name, testGroupStats.totals ); + } + void LegacyReporterAdapter::testRunEnded( TestRunStats const& testRunStats ) { + m_legacyReporter->EndTesting( testRunStats.totals ); + } + void LegacyReporterAdapter::skipTest( TestCaseInfo const& ) { + } +} + +// #included from: catch_timer.hpp + +#ifdef __clang__ +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wc++11-long-long" +#endif + +#ifdef CATCH_PLATFORM_WINDOWS +#include +#else +#include +#endif + +namespace Catch { + + namespace { +#ifdef CATCH_PLATFORM_WINDOWS + uint64_t getCurrentTicks() { + static uint64_t hz=0, hzo=0; + if (!hz) { + QueryPerformanceFrequency( reinterpret_cast( &hz ) ); + QueryPerformanceCounter( reinterpret_cast( &hzo ) ); + } + uint64_t t; + QueryPerformanceCounter( reinterpret_cast( &t ) ); + return ((t-hzo)*1000000)/hz; + } +#else + uint64_t getCurrentTicks() { + timeval t; + gettimeofday(&t,CATCH_NULL); + return static_cast( t.tv_sec ) * 1000000ull + static_cast( t.tv_usec ); + } +#endif + } + + void Timer::start() { + m_ticks = getCurrentTicks(); + } + unsigned int Timer::getElapsedMicroseconds() const { + return static_cast(getCurrentTicks() - m_ticks); + } + unsigned int Timer::getElapsedMilliseconds() const { + return static_cast(getElapsedMicroseconds()/1000); + } + double Timer::getElapsedSeconds() const { + return getElapsedMicroseconds()/1000000.0; + } + +} // namespace Catch + +#ifdef __clang__ +#pragma clang diagnostic pop +#endif +// #included from: catch_common.hpp +#define TWOBLUECUBES_CATCH_COMMON_HPP_INCLUDED + +namespace Catch { + + bool startsWith( std::string const& s, std::string const& prefix ) { + return s.size() >= prefix.size() && s.substr( 0, prefix.size() ) == prefix; + } + bool endsWith( std::string const& s, std::string const& suffix ) { + return s.size() >= suffix.size() && s.substr( s.size()-suffix.size(), suffix.size() ) == suffix; + } + bool contains( std::string const& s, std::string const& infix ) { + return s.find( infix ) != std::string::npos; + } + void toLowerInPlace( std::string& s ) { + std::transform( s.begin(), s.end(), s.begin(), ::tolower ); + } + std::string toLower( std::string const& s ) { + std::string lc = s; + toLowerInPlace( lc ); + return lc; + } + std::string trim( std::string const& str ) { + static char const* whitespaceChars = "\n\r\t "; + std::string::size_type start = str.find_first_not_of( whitespaceChars ); + std::string::size_type end = str.find_last_not_of( whitespaceChars ); + + return start != std::string::npos ? str.substr( start, 1+end-start ) : ""; + } + + bool replaceInPlace( std::string& str, std::string const& replaceThis, std::string const& withThis ) { + bool replaced = false; + std::size_t i = str.find( replaceThis ); + while( i != std::string::npos ) { + replaced = true; + str = str.substr( 0, i ) + withThis + str.substr( i+replaceThis.size() ); + if( i < str.size()-withThis.size() ) + i = str.find( replaceThis, i+withThis.size() ); + else + i = std::string::npos; + } + return replaced; + } + + pluralise::pluralise( std::size_t count, std::string const& label ) + : m_count( count ), + m_label( label ) + {} + + std::ostream& operator << ( std::ostream& os, pluralise const& pluraliser ) { + os << pluraliser.m_count << " " << pluraliser.m_label; + if( pluraliser.m_count != 1 ) + os << "s"; + return os; + } + + SourceLineInfo::SourceLineInfo() : line( 0 ){} + SourceLineInfo::SourceLineInfo( char const* _file, std::size_t _line ) + : file( _file ), + line( _line ) + {} + SourceLineInfo::SourceLineInfo( SourceLineInfo const& other ) + : file( other.file ), + line( other.line ) + {} + bool SourceLineInfo::empty() const { + return file.empty(); + } + bool SourceLineInfo::operator == ( SourceLineInfo const& other ) const { + return line == other.line && file == other.file; + } + bool SourceLineInfo::operator < ( SourceLineInfo const& other ) const { + return line < other.line || ( line == other.line && file < other.file ); + } + + void seedRng( IConfig const& config ) { + if( config.rngSeed() != 0 ) + std::srand( config.rngSeed() ); + } + unsigned int rngSeed() { + return getCurrentContext().getConfig()->rngSeed(); + } + + std::ostream& operator << ( std::ostream& os, SourceLineInfo const& info ) { +#ifndef __GNUG__ + os << info.file << "(" << info.line << ")"; +#else + os << info.file << ":" << info.line; +#endif + return os; + } + + void throwLogicError( std::string const& message, SourceLineInfo const& locationInfo ) { + std::ostringstream oss; + oss << locationInfo << ": Internal Catch error: '" << message << "'"; + if( alwaysTrue() ) + throw std::logic_error( oss.str() ); + } +} + +// #included from: catch_section.hpp +#define TWOBLUECUBES_CATCH_SECTION_HPP_INCLUDED + +namespace Catch { + + SectionInfo::SectionInfo + ( SourceLineInfo const& _lineInfo, + std::string const& _name, + std::string const& _description ) + : name( _name ), + description( _description ), + lineInfo( _lineInfo ) + {} + + Section::Section( SectionInfo const& info ) + : m_info( info ), + m_sectionIncluded( getResultCapture().sectionStarted( m_info, m_assertions ) ) + { + m_timer.start(); + } + + Section::~Section() { + if( m_sectionIncluded ) { + SectionEndInfo endInfo( m_info, m_assertions, m_timer.getElapsedSeconds() ); + if( std::uncaught_exception() ) + getResultCapture().sectionEndedEarly( endInfo ); + else + getResultCapture().sectionEnded( endInfo ); + } + } + + // This indicates whether the section should be executed or not + Section::operator bool() const { + return m_sectionIncluded; + } + +} // end namespace Catch + +// #included from: catch_debugger.hpp +#define TWOBLUECUBES_CATCH_DEBUGGER_HPP_INCLUDED + +#include + +#ifdef CATCH_PLATFORM_MAC + + #include + #include + #include + #include + #include + + namespace Catch{ + + // The following function is taken directly from the following technical note: + // http://developer.apple.com/library/mac/#qa/qa2004/qa1361.html + + // Returns true if the current process is being debugged (either + // running under the debugger or has a debugger attached post facto). + bool isDebuggerActive(){ + + int mib[4]; + struct kinfo_proc info; + size_t size; + + // Initialize the flags so that, if sysctl fails for some bizarre + // reason, we get a predictable result. + + info.kp_proc.p_flag = 0; + + // Initialize mib, which tells sysctl the info we want, in this case + // we're looking for information about a specific process ID. + + mib[0] = CTL_KERN; + mib[1] = KERN_PROC; + mib[2] = KERN_PROC_PID; + mib[3] = getpid(); + + // Call sysctl. + + size = sizeof(info); + if( sysctl(mib, sizeof(mib) / sizeof(*mib), &info, &size, CATCH_NULL, 0) != 0 ) { + Catch::cerr() << "\n** Call to sysctl failed - unable to determine if debugger is active **\n" << std::endl; + return false; + } + + // We're being debugged if the P_TRACED flag is set. + + return ( (info.kp_proc.p_flag & P_TRACED) != 0 ); + } + } // namespace Catch + +#elif defined(_MSC_VER) + extern "C" __declspec(dllimport) int __stdcall IsDebuggerPresent(); + namespace Catch { + bool isDebuggerActive() { + return IsDebuggerPresent() != 0; + } + } +#elif defined(__MINGW32__) + extern "C" __declspec(dllimport) int __stdcall IsDebuggerPresent(); + namespace Catch { + bool isDebuggerActive() { + return IsDebuggerPresent() != 0; + } + } +#else + namespace Catch { + inline bool isDebuggerActive() { return false; } + } +#endif // Platform + +#ifdef CATCH_PLATFORM_WINDOWS + extern "C" __declspec(dllimport) void __stdcall OutputDebugStringA( const char* ); + namespace Catch { + void writeToDebugConsole( std::string const& text ) { + ::OutputDebugStringA( text.c_str() ); + } + } +#else + namespace Catch { + void writeToDebugConsole( std::string const& text ) { + // !TBD: Need a version for Mac/ XCode and other IDEs + Catch::cout() << text; + } + } +#endif // Platform + +// #included from: catch_tostring.hpp +#define TWOBLUECUBES_CATCH_TOSTRING_HPP_INCLUDED + +namespace Catch { + +namespace Detail { + + const std::string unprintableString = "{?}"; + + namespace { + const int hexThreshold = 255; + + struct Endianness { + enum Arch { Big, Little }; + + static Arch which() { + union _{ + int asInt; + char asChar[sizeof (int)]; + } u; + + u.asInt = 1; + return ( u.asChar[sizeof(int)-1] == 1 ) ? Big : Little; + } + }; + } + + std::string rawMemoryToString( const void *object, std::size_t size ) + { + // Reverse order for little endian architectures + int i = 0, end = static_cast( size ), inc = 1; + if( Endianness::which() == Endianness::Little ) { + i = end-1; + end = inc = -1; + } + + unsigned char const *bytes = static_cast(object); + std::ostringstream os; + os << "0x" << std::setfill('0') << std::hex; + for( ; i != end; i += inc ) + os << std::setw(2) << static_cast(bytes[i]); + return os.str(); + } +} + +std::string toString( std::string const& value ) { + std::string s = value; + if( getCurrentContext().getConfig()->showInvisibles() ) { + for(size_t i = 0; i < s.size(); ++i ) { + std::string subs; + switch( s[i] ) { + case '\n': subs = "\\n"; break; + case '\t': subs = "\\t"; break; + default: break; + } + if( !subs.empty() ) { + s = s.substr( 0, i ) + subs + s.substr( i+1 ); + ++i; + } + } + } + return "\"" + s + "\""; +} +std::string toString( std::wstring const& value ) { + + std::string s; + s.reserve( value.size() ); + for(size_t i = 0; i < value.size(); ++i ) + s += value[i] <= 0xff ? static_cast( value[i] ) : '?'; + return Catch::toString( s ); +} + +std::string toString( const char* const value ) { + return value ? Catch::toString( std::string( value ) ) : std::string( "{null string}" ); +} + +std::string toString( char* const value ) { + return Catch::toString( static_cast( value ) ); +} + +std::string toString( const wchar_t* const value ) +{ + return value ? Catch::toString( std::wstring(value) ) : std::string( "{null string}" ); +} + +std::string toString( wchar_t* const value ) +{ + return Catch::toString( static_cast( value ) ); +} + +std::string toString( int value ) { + std::ostringstream oss; + oss << value; + if( value > Detail::hexThreshold ) + oss << " (0x" << std::hex << value << ")"; + return oss.str(); +} + +std::string toString( unsigned long value ) { + std::ostringstream oss; + oss << value; + if( value > Detail::hexThreshold ) + oss << " (0x" << std::hex << value << ")"; + return oss.str(); +} + +std::string toString( unsigned int value ) { + return Catch::toString( static_cast( value ) ); +} + +template +std::string fpToString( T value, int precision ) { + std::ostringstream oss; + oss << std::setprecision( precision ) + << std::fixed + << value; + std::string d = oss.str(); + std::size_t i = d.find_last_not_of( '0' ); + if( i != std::string::npos && i != d.size()-1 ) { + if( d[i] == '.' ) + i++; + d = d.substr( 0, i+1 ); + } + return d; +} + +std::string toString( const double value ) { + return fpToString( value, 10 ); +} +std::string toString( const float value ) { + return fpToString( value, 5 ) + "f"; +} + +std::string toString( bool value ) { + return value ? "true" : "false"; +} + +std::string toString( char value ) { + return value < ' ' + ? toString( static_cast( value ) ) + : Detail::makeString( value ); +} + +std::string toString( signed char value ) { + return toString( static_cast( value ) ); +} + +std::string toString( unsigned char value ) { + return toString( static_cast( value ) ); +} + +#ifdef CATCH_CONFIG_CPP11_LONG_LONG +std::string toString( long long value ) { + std::ostringstream oss; + oss << value; + if( value > Detail::hexThreshold ) + oss << " (0x" << std::hex << value << ")"; + return oss.str(); +} +std::string toString( unsigned long long value ) { + std::ostringstream oss; + oss << value; + if( value > Detail::hexThreshold ) + oss << " (0x" << std::hex << value << ")"; + return oss.str(); +} +#endif + +#ifdef CATCH_CONFIG_CPP11_NULLPTR +std::string toString( std::nullptr_t ) { + return "nullptr"; +} +#endif + +#ifdef __OBJC__ + std::string toString( NSString const * const& nsstring ) { + if( !nsstring ) + return "nil"; + return "@" + toString([nsstring UTF8String]); + } + std::string toString( NSString * CATCH_ARC_STRONG const& nsstring ) { + if( !nsstring ) + return "nil"; + return "@" + toString([nsstring UTF8String]); + } + std::string toString( NSObject* const& nsObject ) { + return toString( [nsObject description] ); + } +#endif + +} // end namespace Catch + +// #included from: catch_result_builder.hpp +#define TWOBLUECUBES_CATCH_RESULT_BUILDER_HPP_INCLUDED + +namespace Catch { + + std::string capturedExpressionWithSecondArgument( std::string const& capturedExpression, std::string const& secondArg ) { + return secondArg.empty() || secondArg == "\"\"" + ? capturedExpression + : capturedExpression + ", " + secondArg; + } + ResultBuilder::ResultBuilder( char const* macroName, + SourceLineInfo const& lineInfo, + char const* capturedExpression, + ResultDisposition::Flags resultDisposition, + char const* secondArg ) + : m_assertionInfo( macroName, lineInfo, capturedExpressionWithSecondArgument( capturedExpression, secondArg ), resultDisposition ), + m_shouldDebugBreak( false ), + m_shouldThrow( false ) + {} + + ResultBuilder& ResultBuilder::setResultType( ResultWas::OfType result ) { + m_data.resultType = result; + return *this; + } + ResultBuilder& ResultBuilder::setResultType( bool result ) { + m_data.resultType = result ? ResultWas::Ok : ResultWas::ExpressionFailed; + return *this; + } + ResultBuilder& ResultBuilder::setLhs( std::string const& lhs ) { + m_exprComponents.lhs = lhs; + return *this; + } + ResultBuilder& ResultBuilder::setRhs( std::string const& rhs ) { + m_exprComponents.rhs = rhs; + return *this; + } + ResultBuilder& ResultBuilder::setOp( std::string const& op ) { + m_exprComponents.op = op; + return *this; + } + + void ResultBuilder::endExpression() { + m_exprComponents.testFalse = isFalseTest( m_assertionInfo.resultDisposition ); + captureExpression(); + } + + void ResultBuilder::useActiveException( ResultDisposition::Flags resultDisposition ) { + m_assertionInfo.resultDisposition = resultDisposition; + m_stream.oss << Catch::translateActiveException(); + captureResult( ResultWas::ThrewException ); + } + + void ResultBuilder::captureResult( ResultWas::OfType resultType ) { + setResultType( resultType ); + captureExpression(); + } + void ResultBuilder::captureExpectedException( std::string const& expectedMessage ) { + if( expectedMessage.empty() ) + captureExpectedException( Matchers::Impl::Generic::AllOf() ); + else + captureExpectedException( Matchers::Equals( expectedMessage ) ); + } + + void ResultBuilder::captureExpectedException( Matchers::Impl::Matcher const& matcher ) { + + assert( m_exprComponents.testFalse == false ); + AssertionResultData data = m_data; + data.resultType = ResultWas::Ok; + data.reconstructedExpression = m_assertionInfo.capturedExpression; + + std::string actualMessage = Catch::translateActiveException(); + if( !matcher.match( actualMessage ) ) { + data.resultType = ResultWas::ExpressionFailed; + data.reconstructedExpression = actualMessage; + } + AssertionResult result( m_assertionInfo, data ); + handleResult( result ); + } + + void ResultBuilder::captureExpression() { + AssertionResult result = build(); + handleResult( result ); + } + void ResultBuilder::handleResult( AssertionResult const& result ) + { + getResultCapture().assertionEnded( result ); + + if( !result.isOk() ) { + if( getCurrentContext().getConfig()->shouldDebugBreak() ) + m_shouldDebugBreak = true; + if( getCurrentContext().getRunner()->aborting() || (m_assertionInfo.resultDisposition & ResultDisposition::Normal) ) + m_shouldThrow = true; + } + } + void ResultBuilder::react() { + if( m_shouldThrow ) + throw Catch::TestFailureException(); + } + + bool ResultBuilder::shouldDebugBreak() const { return m_shouldDebugBreak; } + bool ResultBuilder::allowThrows() const { return getCurrentContext().getConfig()->allowThrows(); } + + AssertionResult ResultBuilder::build() const + { + assert( m_data.resultType != ResultWas::Unknown ); + + AssertionResultData data = m_data; + + // Flip bool results if testFalse is set + if( m_exprComponents.testFalse ) { + if( data.resultType == ResultWas::Ok ) + data.resultType = ResultWas::ExpressionFailed; + else if( data.resultType == ResultWas::ExpressionFailed ) + data.resultType = ResultWas::Ok; + } + + data.message = m_stream.oss.str(); + data.reconstructedExpression = reconstructExpression(); + if( m_exprComponents.testFalse ) { + if( m_exprComponents.op == "" ) + data.reconstructedExpression = "!" + data.reconstructedExpression; + else + data.reconstructedExpression = "!(" + data.reconstructedExpression + ")"; + } + return AssertionResult( m_assertionInfo, data ); + } + std::string ResultBuilder::reconstructExpression() const { + if( m_exprComponents.op == "" ) + return m_exprComponents.lhs.empty() ? m_assertionInfo.capturedExpression : m_exprComponents.op + m_exprComponents.lhs; + else if( m_exprComponents.op == "matches" ) + return m_exprComponents.lhs + " " + m_exprComponents.rhs; + else if( m_exprComponents.op != "!" ) { + if( m_exprComponents.lhs.size() + m_exprComponents.rhs.size() < 40 && + m_exprComponents.lhs.find("\n") == std::string::npos && + m_exprComponents.rhs.find("\n") == std::string::npos ) + return m_exprComponents.lhs + " " + m_exprComponents.op + " " + m_exprComponents.rhs; + else + return m_exprComponents.lhs + "\n" + m_exprComponents.op + "\n" + m_exprComponents.rhs; + } + else + return "{can't expand - use " + m_assertionInfo.macroName + "_FALSE( " + m_assertionInfo.capturedExpression.substr(1) + " ) instead of " + m_assertionInfo.macroName + "( " + m_assertionInfo.capturedExpression + " ) for better diagnostics}"; + } + +} // end namespace Catch + +// #included from: catch_tag_alias_registry.hpp +#define TWOBLUECUBES_CATCH_TAG_ALIAS_REGISTRY_HPP_INCLUDED + +// #included from: catch_tag_alias_registry.h +#define TWOBLUECUBES_CATCH_TAG_ALIAS_REGISTRY_H_INCLUDED + +#include + +namespace Catch { + + class TagAliasRegistry : public ITagAliasRegistry { + public: + virtual ~TagAliasRegistry(); + virtual Option find( std::string const& alias ) const; + virtual std::string expandAliases( std::string const& unexpandedTestSpec ) const; + void add( char const* alias, char const* tag, SourceLineInfo const& lineInfo ); + static TagAliasRegistry& get(); + + private: + std::map m_registry; + }; + +} // end namespace Catch + +#include +#include + +namespace Catch { + + TagAliasRegistry::~TagAliasRegistry() {} + + Option TagAliasRegistry::find( std::string const& alias ) const { + std::map::const_iterator it = m_registry.find( alias ); + if( it != m_registry.end() ) + return it->second; + else + return Option(); + } + + std::string TagAliasRegistry::expandAliases( std::string const& unexpandedTestSpec ) const { + std::string expandedTestSpec = unexpandedTestSpec; + for( std::map::const_iterator it = m_registry.begin(), itEnd = m_registry.end(); + it != itEnd; + ++it ) { + std::size_t pos = expandedTestSpec.find( it->first ); + if( pos != std::string::npos ) { + expandedTestSpec = expandedTestSpec.substr( 0, pos ) + + it->second.tag + + expandedTestSpec.substr( pos + it->first.size() ); + } + } + return expandedTestSpec; + } + + void TagAliasRegistry::add( char const* alias, char const* tag, SourceLineInfo const& lineInfo ) { + + if( !startsWith( alias, "[@" ) || !endsWith( alias, "]" ) ) { + std::ostringstream oss; + oss << "error: tag alias, \"" << alias << "\" is not of the form [@alias name].\n" << lineInfo; + throw std::domain_error( oss.str().c_str() ); + } + if( !m_registry.insert( std::make_pair( alias, TagAlias( tag, lineInfo ) ) ).second ) { + std::ostringstream oss; + oss << "error: tag alias, \"" << alias << "\" already registered.\n" + << "\tFirst seen at " << find(alias)->lineInfo << "\n" + << "\tRedefined at " << lineInfo; + throw std::domain_error( oss.str().c_str() ); + } + } + + TagAliasRegistry& TagAliasRegistry::get() { + static TagAliasRegistry instance; + return instance; + + } + + ITagAliasRegistry::~ITagAliasRegistry() {} + ITagAliasRegistry const& ITagAliasRegistry::get() { return TagAliasRegistry::get(); } + + RegistrarForTagAliases::RegistrarForTagAliases( char const* alias, char const* tag, SourceLineInfo const& lineInfo ) { + try { + TagAliasRegistry::get().add( alias, tag, lineInfo ); + } + catch( std::exception& ex ) { + Colour colourGuard( Colour::Red ); + Catch::cerr() << ex.what() << std::endl; + exit(1); + } + } + +} // end namespace Catch + +// #included from: ../reporters/catch_reporter_multi.hpp +#define TWOBLUECUBES_CATCH_REPORTER_MULTI_HPP_INCLUDED + +namespace Catch { + +class MultipleReporters : public SharedImpl { + typedef std::vector > Reporters; + Reporters m_reporters; + +public: + void add( Ptr const& reporter ) { + m_reporters.push_back( reporter ); + } + +public: // IStreamingReporter + + virtual ReporterPreferences getPreferences() const CATCH_OVERRIDE { + return m_reporters[0]->getPreferences(); + } + + virtual void noMatchingTestCases( std::string const& spec ) CATCH_OVERRIDE { + for( Reporters::const_iterator it = m_reporters.begin(), itEnd = m_reporters.end(); + it != itEnd; + ++it ) + (*it)->noMatchingTestCases( spec ); + } + + virtual void testRunStarting( TestRunInfo const& testRunInfo ) CATCH_OVERRIDE { + for( Reporters::const_iterator it = m_reporters.begin(), itEnd = m_reporters.end(); + it != itEnd; + ++it ) + (*it)->testRunStarting( testRunInfo ); + } + + virtual void testGroupStarting( GroupInfo const& groupInfo ) CATCH_OVERRIDE { + for( Reporters::const_iterator it = m_reporters.begin(), itEnd = m_reporters.end(); + it != itEnd; + ++it ) + (*it)->testGroupStarting( groupInfo ); + } + + virtual void testCaseStarting( TestCaseInfo const& testInfo ) CATCH_OVERRIDE { + for( Reporters::const_iterator it = m_reporters.begin(), itEnd = m_reporters.end(); + it != itEnd; + ++it ) + (*it)->testCaseStarting( testInfo ); + } + + virtual void sectionStarting( SectionInfo const& sectionInfo ) CATCH_OVERRIDE { + for( Reporters::const_iterator it = m_reporters.begin(), itEnd = m_reporters.end(); + it != itEnd; + ++it ) + (*it)->sectionStarting( sectionInfo ); + } + + virtual void assertionStarting( AssertionInfo const& assertionInfo ) CATCH_OVERRIDE { + for( Reporters::const_iterator it = m_reporters.begin(), itEnd = m_reporters.end(); + it != itEnd; + ++it ) + (*it)->assertionStarting( assertionInfo ); + } + + // The return value indicates if the messages buffer should be cleared: + virtual bool assertionEnded( AssertionStats const& assertionStats ) CATCH_OVERRIDE { + bool clearBuffer = false; + for( Reporters::const_iterator it = m_reporters.begin(), itEnd = m_reporters.end(); + it != itEnd; + ++it ) + clearBuffer |= (*it)->assertionEnded( assertionStats ); + return clearBuffer; + } + + virtual void sectionEnded( SectionStats const& sectionStats ) CATCH_OVERRIDE { + for( Reporters::const_iterator it = m_reporters.begin(), itEnd = m_reporters.end(); + it != itEnd; + ++it ) + (*it)->sectionEnded( sectionStats ); + } + + virtual void testCaseEnded( TestCaseStats const& testCaseStats ) CATCH_OVERRIDE { + for( Reporters::const_iterator it = m_reporters.begin(), itEnd = m_reporters.end(); + it != itEnd; + ++it ) + (*it)->testCaseEnded( testCaseStats ); + } + + virtual void testGroupEnded( TestGroupStats const& testGroupStats ) CATCH_OVERRIDE { + for( Reporters::const_iterator it = m_reporters.begin(), itEnd = m_reporters.end(); + it != itEnd; + ++it ) + (*it)->testGroupEnded( testGroupStats ); + } + + virtual void testRunEnded( TestRunStats const& testRunStats ) CATCH_OVERRIDE { + for( Reporters::const_iterator it = m_reporters.begin(), itEnd = m_reporters.end(); + it != itEnd; + ++it ) + (*it)->testRunEnded( testRunStats ); + } + + virtual void skipTest( TestCaseInfo const& testInfo ) CATCH_OVERRIDE { + for( Reporters::const_iterator it = m_reporters.begin(), itEnd = m_reporters.end(); + it != itEnd; + ++it ) + (*it)->skipTest( testInfo ); + } +}; + +Ptr addReporter( Ptr const& existingReporter, Ptr const& additionalReporter ) { + Ptr resultingReporter; + + if( existingReporter ) { + MultipleReporters* multi = dynamic_cast( existingReporter.get() ); + if( !multi ) { + multi = new MultipleReporters; + resultingReporter = Ptr( multi ); + if( existingReporter ) + multi->add( existingReporter ); + } + else + resultingReporter = existingReporter; + multi->add( additionalReporter ); + } + else + resultingReporter = additionalReporter; + + return resultingReporter; +} + +} // end namespace Catch + +// #included from: ../reporters/catch_reporter_xml.hpp +#define TWOBLUECUBES_CATCH_REPORTER_XML_HPP_INCLUDED + +// #included from: catch_reporter_bases.hpp +#define TWOBLUECUBES_CATCH_REPORTER_BASES_HPP_INCLUDED + +#include + +namespace Catch { + + struct StreamingReporterBase : SharedImpl { + + StreamingReporterBase( ReporterConfig const& _config ) + : m_config( _config.fullConfig() ), + stream( _config.stream() ) + { + m_reporterPrefs.shouldRedirectStdOut = false; + } + + virtual ReporterPreferences getPreferences() const CATCH_OVERRIDE { + return m_reporterPrefs; + } + + virtual ~StreamingReporterBase() CATCH_OVERRIDE; + + virtual void noMatchingTestCases( std::string const& ) CATCH_OVERRIDE {} + + virtual void testRunStarting( TestRunInfo const& _testRunInfo ) CATCH_OVERRIDE { + currentTestRunInfo = _testRunInfo; + } + virtual void testGroupStarting( GroupInfo const& _groupInfo ) CATCH_OVERRIDE { + currentGroupInfo = _groupInfo; + } + + virtual void testCaseStarting( TestCaseInfo const& _testInfo ) CATCH_OVERRIDE { + currentTestCaseInfo = _testInfo; + } + virtual void sectionStarting( SectionInfo const& _sectionInfo ) CATCH_OVERRIDE { + m_sectionStack.push_back( _sectionInfo ); + } + + virtual void sectionEnded( SectionStats const& /* _sectionStats */ ) CATCH_OVERRIDE { + m_sectionStack.pop_back(); + } + virtual void testCaseEnded( TestCaseStats const& /* _testCaseStats */ ) CATCH_OVERRIDE { + currentTestCaseInfo.reset(); + } + virtual void testGroupEnded( TestGroupStats const& /* _testGroupStats */ ) CATCH_OVERRIDE { + currentGroupInfo.reset(); + } + virtual void testRunEnded( TestRunStats const& /* _testRunStats */ ) CATCH_OVERRIDE { + currentTestCaseInfo.reset(); + currentGroupInfo.reset(); + currentTestRunInfo.reset(); + } + + virtual void skipTest( TestCaseInfo const& ) CATCH_OVERRIDE { + // Don't do anything with this by default. + // It can optionally be overridden in the derived class. + } + + Ptr m_config; + std::ostream& stream; + + LazyStat currentTestRunInfo; + LazyStat currentGroupInfo; + LazyStat currentTestCaseInfo; + + std::vector m_sectionStack; + ReporterPreferences m_reporterPrefs; + }; + + struct CumulativeReporterBase : SharedImpl { + template + struct Node : SharedImpl<> { + explicit Node( T const& _value ) : value( _value ) {} + virtual ~Node() {} + + typedef std::vector > ChildNodes; + T value; + ChildNodes children; + }; + struct SectionNode : SharedImpl<> { + explicit SectionNode( SectionStats const& _stats ) : stats( _stats ) {} + virtual ~SectionNode(); + + bool operator == ( SectionNode const& other ) const { + return stats.sectionInfo.lineInfo == other.stats.sectionInfo.lineInfo; + } + bool operator == ( Ptr const& other ) const { + return operator==( *other ); + } + + SectionStats stats; + typedef std::vector > ChildSections; + typedef std::vector Assertions; + ChildSections childSections; + Assertions assertions; + std::string stdOut; + std::string stdErr; + }; + + struct BySectionInfo { + BySectionInfo( SectionInfo const& other ) : m_other( other ) {} + BySectionInfo( BySectionInfo const& other ) : m_other( other.m_other ) {} + bool operator() ( Ptr const& node ) const { + return node->stats.sectionInfo.lineInfo == m_other.lineInfo; + } + private: + void operator=( BySectionInfo const& ); + SectionInfo const& m_other; + }; + + typedef Node TestCaseNode; + typedef Node TestGroupNode; + typedef Node TestRunNode; + + CumulativeReporterBase( ReporterConfig const& _config ) + : m_config( _config.fullConfig() ), + stream( _config.stream() ) + { + m_reporterPrefs.shouldRedirectStdOut = false; + } + ~CumulativeReporterBase(); + + virtual ReporterPreferences getPreferences() const CATCH_OVERRIDE { + return m_reporterPrefs; + } + + virtual void testRunStarting( TestRunInfo const& ) CATCH_OVERRIDE {} + virtual void testGroupStarting( GroupInfo const& ) CATCH_OVERRIDE {} + + virtual void testCaseStarting( TestCaseInfo const& ) CATCH_OVERRIDE {} + + virtual void sectionStarting( SectionInfo const& sectionInfo ) CATCH_OVERRIDE { + SectionStats incompleteStats( sectionInfo, Counts(), 0, false ); + Ptr node; + if( m_sectionStack.empty() ) { + if( !m_rootSection ) + m_rootSection = new SectionNode( incompleteStats ); + node = m_rootSection; + } + else { + SectionNode& parentNode = *m_sectionStack.back(); + SectionNode::ChildSections::const_iterator it = + std::find_if( parentNode.childSections.begin(), + parentNode.childSections.end(), + BySectionInfo( sectionInfo ) ); + if( it == parentNode.childSections.end() ) { + node = new SectionNode( incompleteStats ); + parentNode.childSections.push_back( node ); + } + else + node = *it; + } + m_sectionStack.push_back( node ); + m_deepestSection = node; + } + + virtual void assertionStarting( AssertionInfo const& ) CATCH_OVERRIDE {} + + virtual bool assertionEnded( AssertionStats const& assertionStats ) CATCH_OVERRIDE { + assert( !m_sectionStack.empty() ); + SectionNode& sectionNode = *m_sectionStack.back(); + sectionNode.assertions.push_back( assertionStats ); + return true; + } + virtual void sectionEnded( SectionStats const& sectionStats ) CATCH_OVERRIDE { + assert( !m_sectionStack.empty() ); + SectionNode& node = *m_sectionStack.back(); + node.stats = sectionStats; + m_sectionStack.pop_back(); + } + virtual void testCaseEnded( TestCaseStats const& testCaseStats ) CATCH_OVERRIDE { + Ptr node = new TestCaseNode( testCaseStats ); + assert( m_sectionStack.size() == 0 ); + node->children.push_back( m_rootSection ); + m_testCases.push_back( node ); + m_rootSection.reset(); + + assert( m_deepestSection ); + m_deepestSection->stdOut = testCaseStats.stdOut; + m_deepestSection->stdErr = testCaseStats.stdErr; + } + virtual void testGroupEnded( TestGroupStats const& testGroupStats ) CATCH_OVERRIDE { + Ptr node = new TestGroupNode( testGroupStats ); + node->children.swap( m_testCases ); + m_testGroups.push_back( node ); + } + virtual void testRunEnded( TestRunStats const& testRunStats ) CATCH_OVERRIDE { + Ptr node = new TestRunNode( testRunStats ); + node->children.swap( m_testGroups ); + m_testRuns.push_back( node ); + testRunEndedCumulative(); + } + virtual void testRunEndedCumulative() = 0; + + virtual void skipTest( TestCaseInfo const& ) CATCH_OVERRIDE {} + + Ptr m_config; + std::ostream& stream; + std::vector m_assertions; + std::vector > > m_sections; + std::vector > m_testCases; + std::vector > m_testGroups; + + std::vector > m_testRuns; + + Ptr m_rootSection; + Ptr m_deepestSection; + std::vector > m_sectionStack; + ReporterPreferences m_reporterPrefs; + + }; + + template + char const* getLineOfChars() { + static char line[CATCH_CONFIG_CONSOLE_WIDTH] = {0}; + if( !*line ) { + memset( line, C, CATCH_CONFIG_CONSOLE_WIDTH-1 ); + line[CATCH_CONFIG_CONSOLE_WIDTH-1] = 0; + } + return line; + } + + struct TestEventListenerBase : StreamingReporterBase { + TestEventListenerBase( ReporterConfig const& _config ) + : StreamingReporterBase( _config ) + {} + + virtual void assertionStarting( AssertionInfo const& ) CATCH_OVERRIDE {} + virtual bool assertionEnded( AssertionStats const& ) CATCH_OVERRIDE { + return false; + } + }; + +} // end namespace Catch + +// #included from: ../internal/catch_reporter_registrars.hpp +#define TWOBLUECUBES_CATCH_REPORTER_REGISTRARS_HPP_INCLUDED + +namespace Catch { + + template + class LegacyReporterRegistrar { + + class ReporterFactory : public IReporterFactory { + virtual IStreamingReporter* create( ReporterConfig const& config ) const { + return new LegacyReporterAdapter( new T( config ) ); + } + + virtual std::string getDescription() const { + return T::getDescription(); + } + }; + + public: + + LegacyReporterRegistrar( std::string const& name ) { + getMutableRegistryHub().registerReporter( name, new ReporterFactory() ); + } + }; + + template + class ReporterRegistrar { + + class ReporterFactory : public SharedImpl { + + // *** Please Note ***: + // - If you end up here looking at a compiler error because it's trying to register + // your custom reporter class be aware that the native reporter interface has changed + // to IStreamingReporter. The "legacy" interface, IReporter, is still supported via + // an adapter. Just use REGISTER_LEGACY_REPORTER to take advantage of the adapter. + // However please consider updating to the new interface as the old one is now + // deprecated and will probably be removed quite soon! + // Please contact me via github if you have any questions at all about this. + // In fact, ideally, please contact me anyway to let me know you've hit this - as I have + // no idea who is actually using custom reporters at all (possibly no-one!). + // The new interface is designed to minimise exposure to interface changes in the future. + virtual IStreamingReporter* create( ReporterConfig const& config ) const { + return new T( config ); + } + + virtual std::string getDescription() const { + return T::getDescription(); + } + }; + + public: + + ReporterRegistrar( std::string const& name ) { + getMutableRegistryHub().registerReporter( name, new ReporterFactory() ); + } + }; + + template + class ListenerRegistrar { + + class ListenerFactory : public SharedImpl { + + virtual IStreamingReporter* create( ReporterConfig const& config ) const { + return new T( config ); + } + virtual std::string getDescription() const { + return ""; + } + }; + + public: + + ListenerRegistrar() { + getMutableRegistryHub().registerListener( new ListenerFactory() ); + } + }; +} + +#define INTERNAL_CATCH_REGISTER_LEGACY_REPORTER( name, reporterType ) \ + namespace{ Catch::LegacyReporterRegistrar catch_internal_RegistrarFor##reporterType( name ); } + +#define INTERNAL_CATCH_REGISTER_REPORTER( name, reporterType ) \ + namespace{ Catch::ReporterRegistrar catch_internal_RegistrarFor##reporterType( name ); } + +#define INTERNAL_CATCH_REGISTER_LISTENER( listenerType ) \ + namespace{ Catch::ListenerRegistrar catch_internal_RegistrarFor##listenerType; } + +// #included from: ../internal/catch_xmlwriter.hpp +#define TWOBLUECUBES_CATCH_XMLWRITER_HPP_INCLUDED + +#include +#include +#include +#include + +namespace Catch { + + class XmlEncode { + public: + enum ForWhat { ForTextNodes, ForAttributes }; + + XmlEncode( std::string const& str, ForWhat forWhat = ForTextNodes ) + : m_str( str ), + m_forWhat( forWhat ) + {} + + void encodeTo( std::ostream& os ) const { + + // Apostrophe escaping not necessary if we always use " to write attributes + // (see: http://www.w3.org/TR/xml/#syntax) + + for( std::size_t i = 0; i < m_str.size(); ++ i ) { + char c = m_str[i]; + switch( c ) { + case '<': os << "<"; break; + case '&': os << "&"; break; + + case '>': + // See: http://www.w3.org/TR/xml/#syntax + if( i > 2 && m_str[i-1] == ']' && m_str[i-2] == ']' ) + os << ">"; + else + os << c; + break; + + case '\"': + if( m_forWhat == ForAttributes ) + os << """; + else + os << c; + break; + + default: + // Escape control chars - based on contribution by @espenalb in PR #465 + if ( ( c < '\x09' ) || ( c > '\x0D' && c < '\x20') || c=='\x7F' ) + os << "&#x" << std::uppercase << std::hex << static_cast( c ); + else + os << c; + } + } + } + + friend std::ostream& operator << ( std::ostream& os, XmlEncode const& xmlEncode ) { + xmlEncode.encodeTo( os ); + return os; + } + + private: + std::string m_str; + ForWhat m_forWhat; + }; + + class XmlWriter { + public: + + class ScopedElement { + public: + ScopedElement( XmlWriter* writer ) + : m_writer( writer ) + {} + + ScopedElement( ScopedElement const& other ) + : m_writer( other.m_writer ){ + other.m_writer = CATCH_NULL; + } + + ~ScopedElement() { + if( m_writer ) + m_writer->endElement(); + } + + ScopedElement& writeText( std::string const& text, bool indent = true ) { + m_writer->writeText( text, indent ); + return *this; + } + + template + ScopedElement& writeAttribute( std::string const& name, T const& attribute ) { + m_writer->writeAttribute( name, attribute ); + return *this; + } + + private: + mutable XmlWriter* m_writer; + }; + + XmlWriter() + : m_tagIsOpen( false ), + m_needsNewline( false ), + m_os( &Catch::cout() ) + {} + + XmlWriter( std::ostream& os ) + : m_tagIsOpen( false ), + m_needsNewline( false ), + m_os( &os ) + {} + + ~XmlWriter() { + while( !m_tags.empty() ) + endElement(); + } + + XmlWriter& startElement( std::string const& name ) { + ensureTagClosed(); + newlineIfNecessary(); + stream() << m_indent << "<" << name; + m_tags.push_back( name ); + m_indent += " "; + m_tagIsOpen = true; + return *this; + } + + ScopedElement scopedElement( std::string const& name ) { + ScopedElement scoped( this ); + startElement( name ); + return scoped; + } + + XmlWriter& endElement() { + newlineIfNecessary(); + m_indent = m_indent.substr( 0, m_indent.size()-2 ); + if( m_tagIsOpen ) { + stream() << "/>\n"; + m_tagIsOpen = false; + } + else { + stream() << m_indent << "\n"; + } + m_tags.pop_back(); + return *this; + } + + XmlWriter& writeAttribute( std::string const& name, std::string const& attribute ) { + if( !name.empty() && !attribute.empty() ) + stream() << " " << name << "=\"" << XmlEncode( attribute, XmlEncode::ForAttributes ) << "\""; + return *this; + } + + XmlWriter& writeAttribute( std::string const& name, bool attribute ) { + stream() << " " << name << "=\"" << ( attribute ? "true" : "false" ) << "\""; + return *this; + } + + template + XmlWriter& writeAttribute( std::string const& name, T const& attribute ) { + std::ostringstream oss; + oss << attribute; + return writeAttribute( name, oss.str() ); + } + + XmlWriter& writeText( std::string const& text, bool indent = true ) { + if( !text.empty() ){ + bool tagWasOpen = m_tagIsOpen; + ensureTagClosed(); + if( tagWasOpen && indent ) + stream() << m_indent; + stream() << XmlEncode( text ); + m_needsNewline = true; + } + return *this; + } + + XmlWriter& writeComment( std::string const& text ) { + ensureTagClosed(); + stream() << m_indent << ""; + m_needsNewline = true; + return *this; + } + + XmlWriter& writeBlankLine() { + ensureTagClosed(); + stream() << "\n"; + return *this; + } + + void setStream( std::ostream& os ) { + m_os = &os; + } + + private: + XmlWriter( XmlWriter const& ); + void operator=( XmlWriter const& ); + + std::ostream& stream() { + return *m_os; + } + + void ensureTagClosed() { + if( m_tagIsOpen ) { + stream() << ">\n"; + m_tagIsOpen = false; + } + } + + void newlineIfNecessary() { + if( m_needsNewline ) { + stream() << "\n"; + m_needsNewline = false; + } + } + + bool m_tagIsOpen; + bool m_needsNewline; + std::vector m_tags; + std::string m_indent; + std::ostream* m_os; + }; + +} +// #included from: catch_reenable_warnings.h + +#define TWOBLUECUBES_CATCH_REENABLE_WARNINGS_H_INCLUDED + +#ifdef __clang__ +# ifdef __ICC // icpc defines the __clang__ macro +# pragma warning(pop) +# else +# pragma clang diagnostic pop +# endif +#elif defined __GNUC__ +# pragma GCC diagnostic pop +#endif + + +namespace Catch { + class XmlReporter : public StreamingReporterBase { + public: + XmlReporter( ReporterConfig const& _config ) + : StreamingReporterBase( _config ), + m_sectionDepth( 0 ) + { + m_reporterPrefs.shouldRedirectStdOut = true; + } + + virtual ~XmlReporter() CATCH_OVERRIDE; + + static std::string getDescription() { + return "Reports test results as an XML document"; + } + + public: // StreamingReporterBase + + virtual void noMatchingTestCases( std::string const& s ) CATCH_OVERRIDE { + StreamingReporterBase::noMatchingTestCases( s ); + } + + virtual void testRunStarting( TestRunInfo const& testInfo ) CATCH_OVERRIDE { + StreamingReporterBase::testRunStarting( testInfo ); + m_xml.setStream( stream ); + m_xml.startElement( "Catch" ); + if( !m_config->name().empty() ) + m_xml.writeAttribute( "name", m_config->name() ); + } + + virtual void testGroupStarting( GroupInfo const& groupInfo ) CATCH_OVERRIDE { + StreamingReporterBase::testGroupStarting( groupInfo ); + m_xml.startElement( "Group" ) + .writeAttribute( "name", groupInfo.name ); + } + + virtual void testCaseStarting( TestCaseInfo const& testInfo ) CATCH_OVERRIDE { + StreamingReporterBase::testCaseStarting(testInfo); + m_xml.startElement( "TestCase" ).writeAttribute( "name", trim( testInfo.name ) ); + + if ( m_config->showDurations() == ShowDurations::Always ) + m_testCaseTimer.start(); + } + + virtual void sectionStarting( SectionInfo const& sectionInfo ) CATCH_OVERRIDE { + StreamingReporterBase::sectionStarting( sectionInfo ); + if( m_sectionDepth++ > 0 ) { + m_xml.startElement( "Section" ) + .writeAttribute( "name", trim( sectionInfo.name ) ) + .writeAttribute( "description", sectionInfo.description ); + } + } + + virtual void assertionStarting( AssertionInfo const& ) CATCH_OVERRIDE { } + + virtual bool assertionEnded( AssertionStats const& assertionStats ) CATCH_OVERRIDE { + const AssertionResult& assertionResult = assertionStats.assertionResult; + + // Print any info messages in tags. + if( assertionStats.assertionResult.getResultType() != ResultWas::Ok ) { + for( std::vector::const_iterator it = assertionStats.infoMessages.begin(), itEnd = assertionStats.infoMessages.end(); + it != itEnd; + ++it ) { + if( it->type == ResultWas::Info ) { + m_xml.scopedElement( "Info" ) + .writeText( it->message ); + } else if ( it->type == ResultWas::Warning ) { + m_xml.scopedElement( "Warning" ) + .writeText( it->message ); + } + } + } + + // Drop out if result was successful but we're not printing them. + if( !m_config->includeSuccessfulResults() && isOk(assertionResult.getResultType()) ) + return true; + + // Print the expression if there is one. + if( assertionResult.hasExpression() ) { + m_xml.startElement( "Expression" ) + .writeAttribute( "success", assertionResult.succeeded() ) + .writeAttribute( "type", assertionResult.getTestMacroName() ) + .writeAttribute( "filename", assertionResult.getSourceInfo().file ) + .writeAttribute( "line", assertionResult.getSourceInfo().line ); + + m_xml.scopedElement( "Original" ) + .writeText( assertionResult.getExpression() ); + m_xml.scopedElement( "Expanded" ) + .writeText( assertionResult.getExpandedExpression() ); + } + + // And... Print a result applicable to each result type. + switch( assertionResult.getResultType() ) { + case ResultWas::ThrewException: + m_xml.scopedElement( "Exception" ) + .writeAttribute( "filename", assertionResult.getSourceInfo().file ) + .writeAttribute( "line", assertionResult.getSourceInfo().line ) + .writeText( assertionResult.getMessage() ); + break; + case ResultWas::FatalErrorCondition: + m_xml.scopedElement( "Fatal Error Condition" ) + .writeAttribute( "filename", assertionResult.getSourceInfo().file ) + .writeAttribute( "line", assertionResult.getSourceInfo().line ) + .writeText( assertionResult.getMessage() ); + break; + case ResultWas::Info: + m_xml.scopedElement( "Info" ) + .writeText( assertionResult.getMessage() ); + break; + case ResultWas::Warning: + // Warning will already have been written + break; + case ResultWas::ExplicitFailure: + m_xml.scopedElement( "Failure" ) + .writeText( assertionResult.getMessage() ); + break; + default: + break; + } + + if( assertionResult.hasExpression() ) + m_xml.endElement(); + + return true; + } + + virtual void sectionEnded( SectionStats const& sectionStats ) CATCH_OVERRIDE { + StreamingReporterBase::sectionEnded( sectionStats ); + if( --m_sectionDepth > 0 ) { + XmlWriter::ScopedElement e = m_xml.scopedElement( "OverallResults" ); + e.writeAttribute( "successes", sectionStats.assertions.passed ); + e.writeAttribute( "failures", sectionStats.assertions.failed ); + e.writeAttribute( "expectedFailures", sectionStats.assertions.failedButOk ); + + if ( m_config->showDurations() == ShowDurations::Always ) + e.writeAttribute( "durationInSeconds", sectionStats.durationInSeconds ); + + m_xml.endElement(); + } + } + + virtual void testCaseEnded( TestCaseStats const& testCaseStats ) CATCH_OVERRIDE { + StreamingReporterBase::testCaseEnded( testCaseStats ); + XmlWriter::ScopedElement e = m_xml.scopedElement( "OverallResult" ); + e.writeAttribute( "success", testCaseStats.totals.assertions.allOk() ); + + if ( m_config->showDurations() == ShowDurations::Always ) + e.writeAttribute( "durationInSeconds", m_testCaseTimer.getElapsedSeconds() ); + + m_xml.endElement(); + } + + virtual void testGroupEnded( TestGroupStats const& testGroupStats ) CATCH_OVERRIDE { + StreamingReporterBase::testGroupEnded( testGroupStats ); + // TODO: Check testGroupStats.aborting and act accordingly. + m_xml.scopedElement( "OverallResults" ) + .writeAttribute( "successes", testGroupStats.totals.assertions.passed ) + .writeAttribute( "failures", testGroupStats.totals.assertions.failed ) + .writeAttribute( "expectedFailures", testGroupStats.totals.assertions.failedButOk ); + m_xml.endElement(); + } + + virtual void testRunEnded( TestRunStats const& testRunStats ) CATCH_OVERRIDE { + StreamingReporterBase::testRunEnded( testRunStats ); + m_xml.scopedElement( "OverallResults" ) + .writeAttribute( "successes", testRunStats.totals.assertions.passed ) + .writeAttribute( "failures", testRunStats.totals.assertions.failed ) + .writeAttribute( "expectedFailures", testRunStats.totals.assertions.failedButOk ); + m_xml.endElement(); + } + + private: + Timer m_testCaseTimer; + XmlWriter m_xml; + int m_sectionDepth; + }; + + INTERNAL_CATCH_REGISTER_REPORTER( "xml", XmlReporter ) + +} // end namespace Catch + +// #included from: ../reporters/catch_reporter_junit.hpp +#define TWOBLUECUBES_CATCH_REPORTER_JUNIT_HPP_INCLUDED + +#include + +namespace Catch { + + class JunitReporter : public CumulativeReporterBase { + public: + JunitReporter( ReporterConfig const& _config ) + : CumulativeReporterBase( _config ), + xml( _config.stream() ) + { + m_reporterPrefs.shouldRedirectStdOut = true; + } + + virtual ~JunitReporter() CATCH_OVERRIDE; + + static std::string getDescription() { + return "Reports test results in an XML format that looks like Ant's junitreport target"; + } + + virtual void noMatchingTestCases( std::string const& /*spec*/ ) CATCH_OVERRIDE {} + + virtual void testRunStarting( TestRunInfo const& runInfo ) CATCH_OVERRIDE { + CumulativeReporterBase::testRunStarting( runInfo ); + xml.startElement( "testsuites" ); + } + + virtual void testGroupStarting( GroupInfo const& groupInfo ) CATCH_OVERRIDE { + suiteTimer.start(); + stdOutForSuite.str(""); + stdErrForSuite.str(""); + unexpectedExceptions = 0; + CumulativeReporterBase::testGroupStarting( groupInfo ); + } + + virtual bool assertionEnded( AssertionStats const& assertionStats ) CATCH_OVERRIDE { + if( assertionStats.assertionResult.getResultType() == ResultWas::ThrewException ) + unexpectedExceptions++; + return CumulativeReporterBase::assertionEnded( assertionStats ); + } + + virtual void testCaseEnded( TestCaseStats const& testCaseStats ) CATCH_OVERRIDE { + stdOutForSuite << testCaseStats.stdOut; + stdErrForSuite << testCaseStats.stdErr; + CumulativeReporterBase::testCaseEnded( testCaseStats ); + } + + virtual void testGroupEnded( TestGroupStats const& testGroupStats ) CATCH_OVERRIDE { + double suiteTime = suiteTimer.getElapsedSeconds(); + CumulativeReporterBase::testGroupEnded( testGroupStats ); + writeGroup( *m_testGroups.back(), suiteTime ); + } + + virtual void testRunEndedCumulative() CATCH_OVERRIDE { + xml.endElement(); + } + + void writeGroup( TestGroupNode const& groupNode, double suiteTime ) { + XmlWriter::ScopedElement e = xml.scopedElement( "testsuite" ); + TestGroupStats const& stats = groupNode.value; + xml.writeAttribute( "name", stats.groupInfo.name ); + xml.writeAttribute( "errors", unexpectedExceptions ); + xml.writeAttribute( "failures", stats.totals.assertions.failed-unexpectedExceptions ); + xml.writeAttribute( "tests", stats.totals.assertions.total() ); + xml.writeAttribute( "hostname", "tbd" ); // !TBD + if( m_config->showDurations() == ShowDurations::Never ) + xml.writeAttribute( "time", "" ); + else + xml.writeAttribute( "time", suiteTime ); + xml.writeAttribute( "timestamp", "tbd" ); // !TBD + + // Write test cases + for( TestGroupNode::ChildNodes::const_iterator + it = groupNode.children.begin(), itEnd = groupNode.children.end(); + it != itEnd; + ++it ) + writeTestCase( **it ); + + xml.scopedElement( "system-out" ).writeText( trim( stdOutForSuite.str() ), false ); + xml.scopedElement( "system-err" ).writeText( trim( stdErrForSuite.str() ), false ); + } + + void writeTestCase( TestCaseNode const& testCaseNode ) { + TestCaseStats const& stats = testCaseNode.value; + + // All test cases have exactly one section - which represents the + // test case itself. That section may have 0-n nested sections + assert( testCaseNode.children.size() == 1 ); + SectionNode const& rootSection = *testCaseNode.children.front(); + + std::string className = stats.testInfo.className; + + if( className.empty() ) { + if( rootSection.childSections.empty() ) + className = "global"; + } + writeSection( className, "", rootSection ); + } + + void writeSection( std::string const& className, + std::string const& rootName, + SectionNode const& sectionNode ) { + std::string name = trim( sectionNode.stats.sectionInfo.name ); + if( !rootName.empty() ) + name = rootName + "/" + name; + + if( !sectionNode.assertions.empty() || + !sectionNode.stdOut.empty() || + !sectionNode.stdErr.empty() ) { + XmlWriter::ScopedElement e = xml.scopedElement( "testcase" ); + if( className.empty() ) { + xml.writeAttribute( "classname", name ); + xml.writeAttribute( "name", "root" ); + } + else { + xml.writeAttribute( "classname", className ); + xml.writeAttribute( "name", name ); + } + xml.writeAttribute( "time", Catch::toString( sectionNode.stats.durationInSeconds ) ); + + writeAssertions( sectionNode ); + + if( !sectionNode.stdOut.empty() ) + xml.scopedElement( "system-out" ).writeText( trim( sectionNode.stdOut ), false ); + if( !sectionNode.stdErr.empty() ) + xml.scopedElement( "system-err" ).writeText( trim( sectionNode.stdErr ), false ); + } + for( SectionNode::ChildSections::const_iterator + it = sectionNode.childSections.begin(), + itEnd = sectionNode.childSections.end(); + it != itEnd; + ++it ) + if( className.empty() ) + writeSection( name, "", **it ); + else + writeSection( className, name, **it ); + } + + void writeAssertions( SectionNode const& sectionNode ) { + for( SectionNode::Assertions::const_iterator + it = sectionNode.assertions.begin(), itEnd = sectionNode.assertions.end(); + it != itEnd; + ++it ) + writeAssertion( *it ); + } + void writeAssertion( AssertionStats const& stats ) { + AssertionResult const& result = stats.assertionResult; + if( !result.isOk() ) { + std::string elementName; + switch( result.getResultType() ) { + case ResultWas::ThrewException: + case ResultWas::FatalErrorCondition: + elementName = "error"; + break; + case ResultWas::ExplicitFailure: + elementName = "failure"; + break; + case ResultWas::ExpressionFailed: + elementName = "failure"; + break; + case ResultWas::DidntThrowException: + elementName = "failure"; + break; + + // We should never see these here: + case ResultWas::Info: + case ResultWas::Warning: + case ResultWas::Ok: + case ResultWas::Unknown: + case ResultWas::FailureBit: + case ResultWas::Exception: + elementName = "internalError"; + break; + } + + XmlWriter::ScopedElement e = xml.scopedElement( elementName ); + + xml.writeAttribute( "message", result.getExpandedExpression() ); + xml.writeAttribute( "type", result.getTestMacroName() ); + + std::ostringstream oss; + if( !result.getMessage().empty() ) + oss << result.getMessage() << "\n"; + for( std::vector::const_iterator + it = stats.infoMessages.begin(), + itEnd = stats.infoMessages.end(); + it != itEnd; + ++it ) + if( it->type == ResultWas::Info ) + oss << it->message << "\n"; + + oss << "at " << result.getSourceInfo(); + xml.writeText( oss.str(), false ); + } + } + + XmlWriter xml; + Timer suiteTimer; + std::ostringstream stdOutForSuite; + std::ostringstream stdErrForSuite; + unsigned int unexpectedExceptions; + }; + + INTERNAL_CATCH_REGISTER_REPORTER( "junit", JunitReporter ) + +} // end namespace Catch + +// #included from: ../reporters/catch_reporter_console.hpp +#define TWOBLUECUBES_CATCH_REPORTER_CONSOLE_HPP_INCLUDED + +namespace Catch { + + struct ConsoleReporter : StreamingReporterBase { + ConsoleReporter( ReporterConfig const& _config ) + : StreamingReporterBase( _config ), + m_headerPrinted( false ) + {} + + virtual ~ConsoleReporter() CATCH_OVERRIDE; + static std::string getDescription() { + return "Reports test results as plain lines of text"; + } + + virtual void noMatchingTestCases( std::string const& spec ) CATCH_OVERRIDE { + stream << "No test cases matched '" << spec << "'" << std::endl; + } + + virtual void assertionStarting( AssertionInfo const& ) CATCH_OVERRIDE { + } + + virtual bool assertionEnded( AssertionStats const& _assertionStats ) CATCH_OVERRIDE { + AssertionResult const& result = _assertionStats.assertionResult; + + bool printInfoMessages = true; + + // Drop out if result was successful and we're not printing those + if( !m_config->includeSuccessfulResults() && result.isOk() ) { + if( result.getResultType() != ResultWas::Warning ) + return false; + printInfoMessages = false; + } + + lazyPrint(); + + AssertionPrinter printer( stream, _assertionStats, printInfoMessages ); + printer.print(); + stream << std::endl; + return true; + } + + virtual void sectionStarting( SectionInfo const& _sectionInfo ) CATCH_OVERRIDE { + m_headerPrinted = false; + StreamingReporterBase::sectionStarting( _sectionInfo ); + } + virtual void sectionEnded( SectionStats const& _sectionStats ) CATCH_OVERRIDE { + if( _sectionStats.missingAssertions ) { + lazyPrint(); + Colour colour( Colour::ResultError ); + if( m_sectionStack.size() > 1 ) + stream << "\nNo assertions in section"; + else + stream << "\nNo assertions in test case"; + stream << " '" << _sectionStats.sectionInfo.name << "'\n" << std::endl; + } + if( m_headerPrinted ) { + if( m_config->showDurations() == ShowDurations::Always ) + stream << "Completed in " << _sectionStats.durationInSeconds << "s" << std::endl; + m_headerPrinted = false; + } + else { + if( m_config->showDurations() == ShowDurations::Always ) + stream << _sectionStats.sectionInfo.name << " completed in " << _sectionStats.durationInSeconds << "s" << std::endl; + } + StreamingReporterBase::sectionEnded( _sectionStats ); + } + + virtual void testCaseEnded( TestCaseStats const& _testCaseStats ) CATCH_OVERRIDE { + StreamingReporterBase::testCaseEnded( _testCaseStats ); + m_headerPrinted = false; + } + virtual void testGroupEnded( TestGroupStats const& _testGroupStats ) CATCH_OVERRIDE { + if( currentGroupInfo.used ) { + printSummaryDivider(); + stream << "Summary for group '" << _testGroupStats.groupInfo.name << "':\n"; + printTotals( _testGroupStats.totals ); + stream << "\n" << std::endl; + } + StreamingReporterBase::testGroupEnded( _testGroupStats ); + } + virtual void testRunEnded( TestRunStats const& _testRunStats ) CATCH_OVERRIDE { + printTotalsDivider( _testRunStats.totals ); + printTotals( _testRunStats.totals ); + stream << std::endl; + StreamingReporterBase::testRunEnded( _testRunStats ); + } + + private: + + class AssertionPrinter { + void operator= ( AssertionPrinter const& ); + public: + AssertionPrinter( std::ostream& _stream, AssertionStats const& _stats, bool _printInfoMessages ) + : stream( _stream ), + stats( _stats ), + result( _stats.assertionResult ), + colour( Colour::None ), + message( result.getMessage() ), + messages( _stats.infoMessages ), + printInfoMessages( _printInfoMessages ) + { + switch( result.getResultType() ) { + case ResultWas::Ok: + colour = Colour::Success; + passOrFail = "PASSED"; + //if( result.hasMessage() ) + if( _stats.infoMessages.size() == 1 ) + messageLabel = "with message"; + if( _stats.infoMessages.size() > 1 ) + messageLabel = "with messages"; + break; + case ResultWas::ExpressionFailed: + if( result.isOk() ) { + colour = Colour::Success; + passOrFail = "FAILED - but was ok"; + } + else { + colour = Colour::Error; + passOrFail = "FAILED"; + } + if( _stats.infoMessages.size() == 1 ) + messageLabel = "with message"; + if( _stats.infoMessages.size() > 1 ) + messageLabel = "with messages"; + break; + case ResultWas::ThrewException: + colour = Colour::Error; + passOrFail = "FAILED"; + messageLabel = "due to unexpected exception with message"; + break; + case ResultWas::FatalErrorCondition: + colour = Colour::Error; + passOrFail = "FAILED"; + messageLabel = "due to a fatal error condition"; + break; + case ResultWas::DidntThrowException: + colour = Colour::Error; + passOrFail = "FAILED"; + messageLabel = "because no exception was thrown where one was expected"; + break; + case ResultWas::Info: + messageLabel = "info"; + break; + case ResultWas::Warning: + messageLabel = "warning"; + break; + case ResultWas::ExplicitFailure: + passOrFail = "FAILED"; + colour = Colour::Error; + if( _stats.infoMessages.size() == 1 ) + messageLabel = "explicitly with message"; + if( _stats.infoMessages.size() > 1 ) + messageLabel = "explicitly with messages"; + break; + // These cases are here to prevent compiler warnings + case ResultWas::Unknown: + case ResultWas::FailureBit: + case ResultWas::Exception: + passOrFail = "** internal error **"; + colour = Colour::Error; + break; + } + } + + void print() const { + printSourceInfo(); + if( stats.totals.assertions.total() > 0 ) { + if( result.isOk() ) + stream << "\n"; + printResultType(); + printOriginalExpression(); + printReconstructedExpression(); + } + else { + stream << "\n"; + } + printMessage(); + } + + private: + void printResultType() const { + if( !passOrFail.empty() ) { + Colour colourGuard( colour ); + stream << passOrFail << ":\n"; + } + } + void printOriginalExpression() const { + if( result.hasExpression() ) { + Colour colourGuard( Colour::OriginalExpression ); + stream << " "; + stream << result.getExpressionInMacro(); + stream << "\n"; + } + } + void printReconstructedExpression() const { + if( result.hasExpandedExpression() ) { + stream << "with expansion:\n"; + Colour colourGuard( Colour::ReconstructedExpression ); + stream << Text( result.getExpandedExpression(), TextAttributes().setIndent(2) ) << "\n"; + } + } + void printMessage() const { + if( !messageLabel.empty() ) + stream << messageLabel << ":" << "\n"; + for( std::vector::const_iterator it = messages.begin(), itEnd = messages.end(); + it != itEnd; + ++it ) { + // If this assertion is a warning ignore any INFO messages + if( printInfoMessages || it->type != ResultWas::Info ) + stream << Text( it->message, TextAttributes().setIndent(2) ) << "\n"; + } + } + void printSourceInfo() const { + Colour colourGuard( Colour::FileName ); + stream << result.getSourceInfo() << ": "; + } + + std::ostream& stream; + AssertionStats const& stats; + AssertionResult const& result; + Colour::Code colour; + std::string passOrFail; + std::string messageLabel; + std::string message; + std::vector messages; + bool printInfoMessages; + }; + + void lazyPrint() { + + if( !currentTestRunInfo.used ) + lazyPrintRunInfo(); + if( !currentGroupInfo.used ) + lazyPrintGroupInfo(); + + if( !m_headerPrinted ) { + printTestCaseAndSectionHeader(); + m_headerPrinted = true; + } + } + void lazyPrintRunInfo() { + stream << "\n" << getLineOfChars<'~'>() << "\n"; + Colour colour( Colour::SecondaryText ); + stream << currentTestRunInfo->name + << " is a Catch v" << libraryVersion << " host application.\n" + << "Run with -? for options\n\n"; + + if( m_config->rngSeed() != 0 ) + stream << "Randomness seeded to: " << m_config->rngSeed() << "\n\n"; + + currentTestRunInfo.used = true; + } + void lazyPrintGroupInfo() { + if( !currentGroupInfo->name.empty() && currentGroupInfo->groupsCounts > 1 ) { + printClosedHeader( "Group: " + currentGroupInfo->name ); + currentGroupInfo.used = true; + } + } + void printTestCaseAndSectionHeader() { + assert( !m_sectionStack.empty() ); + printOpenHeader( currentTestCaseInfo->name ); + + if( m_sectionStack.size() > 1 ) { + Colour colourGuard( Colour::Headers ); + + std::vector::const_iterator + it = m_sectionStack.begin()+1, // Skip first section (test case) + itEnd = m_sectionStack.end(); + for( ; it != itEnd; ++it ) + printHeaderString( it->name, 2 ); + } + + SourceLineInfo lineInfo = m_sectionStack.front().lineInfo; + + if( !lineInfo.empty() ){ + stream << getLineOfChars<'-'>() << "\n"; + Colour colourGuard( Colour::FileName ); + stream << lineInfo << "\n"; + } + stream << getLineOfChars<'.'>() << "\n" << std::endl; + } + + void printClosedHeader( std::string const& _name ) { + printOpenHeader( _name ); + stream << getLineOfChars<'.'>() << "\n"; + } + void printOpenHeader( std::string const& _name ) { + stream << getLineOfChars<'-'>() << "\n"; + { + Colour colourGuard( Colour::Headers ); + printHeaderString( _name ); + } + } + + // if string has a : in first line will set indent to follow it on + // subsequent lines + void printHeaderString( std::string const& _string, std::size_t indent = 0 ) { + std::size_t i = _string.find( ": " ); + if( i != std::string::npos ) + i+=2; + else + i = 0; + stream << Text( _string, TextAttributes() + .setIndent( indent+i) + .setInitialIndent( indent ) ) << "\n"; + } + + struct SummaryColumn { + + SummaryColumn( std::string const& _label, Colour::Code _colour ) + : label( _label ), + colour( _colour ) + {} + SummaryColumn addRow( std::size_t count ) { + std::ostringstream oss; + oss << count; + std::string row = oss.str(); + for( std::vector::iterator it = rows.begin(); it != rows.end(); ++it ) { + while( it->size() < row.size() ) + *it = " " + *it; + while( it->size() > row.size() ) + row = " " + row; + } + rows.push_back( row ); + return *this; + } + + std::string label; + Colour::Code colour; + std::vector rows; + + }; + + void printTotals( Totals const& totals ) { + if( totals.testCases.total() == 0 ) { + stream << Colour( Colour::Warning ) << "No tests ran\n"; + } + else if( totals.assertions.total() > 0 && totals.testCases.allPassed() ) { + stream << Colour( Colour::ResultSuccess ) << "All tests passed"; + stream << " (" + << pluralise( totals.assertions.passed, "assertion" ) << " in " + << pluralise( totals.testCases.passed, "test case" ) << ")" + << "\n"; + } + else { + + std::vector columns; + columns.push_back( SummaryColumn( "", Colour::None ) + .addRow( totals.testCases.total() ) + .addRow( totals.assertions.total() ) ); + columns.push_back( SummaryColumn( "passed", Colour::Success ) + .addRow( totals.testCases.passed ) + .addRow( totals.assertions.passed ) ); + columns.push_back( SummaryColumn( "failed", Colour::ResultError ) + .addRow( totals.testCases.failed ) + .addRow( totals.assertions.failed ) ); + columns.push_back( SummaryColumn( "failed as expected", Colour::ResultExpectedFailure ) + .addRow( totals.testCases.failedButOk ) + .addRow( totals.assertions.failedButOk ) ); + + printSummaryRow( "test cases", columns, 0 ); + printSummaryRow( "assertions", columns, 1 ); + } + } + void printSummaryRow( std::string const& label, std::vector const& cols, std::size_t row ) { + for( std::vector::const_iterator it = cols.begin(); it != cols.end(); ++it ) { + std::string value = it->rows[row]; + if( it->label.empty() ) { + stream << label << ": "; + if( value != "0" ) + stream << value; + else + stream << Colour( Colour::Warning ) << "- none -"; + } + else if( value != "0" ) { + stream << Colour( Colour::LightGrey ) << " | "; + stream << Colour( it->colour ) + << value << " " << it->label; + } + } + stream << "\n"; + } + + static std::size_t makeRatio( std::size_t number, std::size_t total ) { + std::size_t ratio = total > 0 ? CATCH_CONFIG_CONSOLE_WIDTH * number/ total : 0; + return ( ratio == 0 && number > 0 ) ? 1 : ratio; + } + static std::size_t& findMax( std::size_t& i, std::size_t& j, std::size_t& k ) { + if( i > j && i > k ) + return i; + else if( j > k ) + return j; + else + return k; + } + + void printTotalsDivider( Totals const& totals ) { + if( totals.testCases.total() > 0 ) { + std::size_t failedRatio = makeRatio( totals.testCases.failed, totals.testCases.total() ); + std::size_t failedButOkRatio = makeRatio( totals.testCases.failedButOk, totals.testCases.total() ); + std::size_t passedRatio = makeRatio( totals.testCases.passed, totals.testCases.total() ); + while( failedRatio + failedButOkRatio + passedRatio < CATCH_CONFIG_CONSOLE_WIDTH-1 ) + findMax( failedRatio, failedButOkRatio, passedRatio )++; + while( failedRatio + failedButOkRatio + passedRatio > CATCH_CONFIG_CONSOLE_WIDTH-1 ) + findMax( failedRatio, failedButOkRatio, passedRatio )--; + + stream << Colour( Colour::Error ) << std::string( failedRatio, '=' ); + stream << Colour( Colour::ResultExpectedFailure ) << std::string( failedButOkRatio, '=' ); + if( totals.testCases.allPassed() ) + stream << Colour( Colour::ResultSuccess ) << std::string( passedRatio, '=' ); + else + stream << Colour( Colour::Success ) << std::string( passedRatio, '=' ); + } + else { + stream << Colour( Colour::Warning ) << std::string( CATCH_CONFIG_CONSOLE_WIDTH-1, '=' ); + } + stream << "\n"; + } + void printSummaryDivider() { + stream << getLineOfChars<'-'>() << "\n"; + } + + private: + bool m_headerPrinted; + }; + + INTERNAL_CATCH_REGISTER_REPORTER( "console", ConsoleReporter ) + +} // end namespace Catch + +// #included from: ../reporters/catch_reporter_compact.hpp +#define TWOBLUECUBES_CATCH_REPORTER_COMPACT_HPP_INCLUDED + +namespace Catch { + + struct CompactReporter : StreamingReporterBase { + + CompactReporter( ReporterConfig const& _config ) + : StreamingReporterBase( _config ) + {} + + virtual ~CompactReporter(); + + static std::string getDescription() { + return "Reports test results on a single line, suitable for IDEs"; + } + + virtual ReporterPreferences getPreferences() const { + ReporterPreferences prefs; + prefs.shouldRedirectStdOut = false; + return prefs; + } + + virtual void noMatchingTestCases( std::string const& spec ) { + stream << "No test cases matched '" << spec << "'" << std::endl; + } + + virtual void assertionStarting( AssertionInfo const& ) { + } + + virtual bool assertionEnded( AssertionStats const& _assertionStats ) { + AssertionResult const& result = _assertionStats.assertionResult; + + bool printInfoMessages = true; + + // Drop out if result was successful and we're not printing those + if( !m_config->includeSuccessfulResults() && result.isOk() ) { + if( result.getResultType() != ResultWas::Warning ) + return false; + printInfoMessages = false; + } + + AssertionPrinter printer( stream, _assertionStats, printInfoMessages ); + printer.print(); + + stream << std::endl; + return true; + } + + virtual void testRunEnded( TestRunStats const& _testRunStats ) { + printTotals( _testRunStats.totals ); + stream << "\n" << std::endl; + StreamingReporterBase::testRunEnded( _testRunStats ); + } + + private: + class AssertionPrinter { + void operator= ( AssertionPrinter const& ); + public: + AssertionPrinter( std::ostream& _stream, AssertionStats const& _stats, bool _printInfoMessages ) + : stream( _stream ) + , stats( _stats ) + , result( _stats.assertionResult ) + , messages( _stats.infoMessages ) + , itMessage( _stats.infoMessages.begin() ) + , printInfoMessages( _printInfoMessages ) + {} + + void print() { + printSourceInfo(); + + itMessage = messages.begin(); + + switch( result.getResultType() ) { + case ResultWas::Ok: + printResultType( Colour::ResultSuccess, passedString() ); + printOriginalExpression(); + printReconstructedExpression(); + if ( ! result.hasExpression() ) + printRemainingMessages( Colour::None ); + else + printRemainingMessages(); + break; + case ResultWas::ExpressionFailed: + if( result.isOk() ) + printResultType( Colour::ResultSuccess, failedString() + std::string( " - but was ok" ) ); + else + printResultType( Colour::Error, failedString() ); + printOriginalExpression(); + printReconstructedExpression(); + printRemainingMessages(); + break; + case ResultWas::ThrewException: + printResultType( Colour::Error, failedString() ); + printIssue( "unexpected exception with message:" ); + printMessage(); + printExpressionWas(); + printRemainingMessages(); + break; + case ResultWas::FatalErrorCondition: + printResultType( Colour::Error, failedString() ); + printIssue( "fatal error condition with message:" ); + printMessage(); + printExpressionWas(); + printRemainingMessages(); + break; + case ResultWas::DidntThrowException: + printResultType( Colour::Error, failedString() ); + printIssue( "expected exception, got none" ); + printExpressionWas(); + printRemainingMessages(); + break; + case ResultWas::Info: + printResultType( Colour::None, "info" ); + printMessage(); + printRemainingMessages(); + break; + case ResultWas::Warning: + printResultType( Colour::None, "warning" ); + printMessage(); + printRemainingMessages(); + break; + case ResultWas::ExplicitFailure: + printResultType( Colour::Error, failedString() ); + printIssue( "explicitly" ); + printRemainingMessages( Colour::None ); + break; + // These cases are here to prevent compiler warnings + case ResultWas::Unknown: + case ResultWas::FailureBit: + case ResultWas::Exception: + printResultType( Colour::Error, "** internal error **" ); + break; + } + } + + private: + // Colour::LightGrey + + static Colour::Code dimColour() { return Colour::FileName; } + +#ifdef CATCH_PLATFORM_MAC + static const char* failedString() { return "FAILED"; } + static const char* passedString() { return "PASSED"; } +#else + static const char* failedString() { return "failed"; } + static const char* passedString() { return "passed"; } +#endif + + void printSourceInfo() const { + Colour colourGuard( Colour::FileName ); + stream << result.getSourceInfo() << ":"; + } + + void printResultType( Colour::Code colour, std::string passOrFail ) const { + if( !passOrFail.empty() ) { + { + Colour colourGuard( colour ); + stream << " " << passOrFail; + } + stream << ":"; + } + } + + void printIssue( std::string issue ) const { + stream << " " << issue; + } + + void printExpressionWas() { + if( result.hasExpression() ) { + stream << ";"; + { + Colour colour( dimColour() ); + stream << " expression was:"; + } + printOriginalExpression(); + } + } + + void printOriginalExpression() const { + if( result.hasExpression() ) { + stream << " " << result.getExpression(); + } + } + + void printReconstructedExpression() const { + if( result.hasExpandedExpression() ) { + { + Colour colour( dimColour() ); + stream << " for: "; + } + stream << result.getExpandedExpression(); + } + } + + void printMessage() { + if ( itMessage != messages.end() ) { + stream << " '" << itMessage->message << "'"; + ++itMessage; + } + } + + void printRemainingMessages( Colour::Code colour = dimColour() ) { + if ( itMessage == messages.end() ) + return; + + // using messages.end() directly yields compilation error: + std::vector::const_iterator itEnd = messages.end(); + const std::size_t N = static_cast( std::distance( itMessage, itEnd ) ); + + { + Colour colourGuard( colour ); + stream << " with " << pluralise( N, "message" ) << ":"; + } + + for(; itMessage != itEnd; ) { + // If this assertion is a warning ignore any INFO messages + if( printInfoMessages || itMessage->type != ResultWas::Info ) { + stream << " '" << itMessage->message << "'"; + if ( ++itMessage != itEnd ) { + Colour colourGuard( dimColour() ); + stream << " and"; + } + } + } + } + + private: + std::ostream& stream; + AssertionStats const& stats; + AssertionResult const& result; + std::vector messages; + std::vector::const_iterator itMessage; + bool printInfoMessages; + }; + + // Colour, message variants: + // - white: No tests ran. + // - red: Failed [both/all] N test cases, failed [both/all] M assertions. + // - white: Passed [both/all] N test cases (no assertions). + // - red: Failed N tests cases, failed M assertions. + // - green: Passed [both/all] N tests cases with M assertions. + + std::string bothOrAll( std::size_t count ) const { + return count == 1 ? "" : count == 2 ? "both " : "all " ; + } + + void printTotals( const Totals& totals ) const { + if( totals.testCases.total() == 0 ) { + stream << "No tests ran."; + } + else if( totals.testCases.failed == totals.testCases.total() ) { + Colour colour( Colour::ResultError ); + const std::string qualify_assertions_failed = + totals.assertions.failed == totals.assertions.total() ? + bothOrAll( totals.assertions.failed ) : ""; + stream << + "Failed " << bothOrAll( totals.testCases.failed ) + << pluralise( totals.testCases.failed, "test case" ) << ", " + "failed " << qualify_assertions_failed << + pluralise( totals.assertions.failed, "assertion" ) << "."; + } + else if( totals.assertions.total() == 0 ) { + stream << + "Passed " << bothOrAll( totals.testCases.total() ) + << pluralise( totals.testCases.total(), "test case" ) + << " (no assertions)."; + } + else if( totals.assertions.failed ) { + Colour colour( Colour::ResultError ); + stream << + "Failed " << pluralise( totals.testCases.failed, "test case" ) << ", " + "failed " << pluralise( totals.assertions.failed, "assertion" ) << "."; + } + else { + Colour colour( Colour::ResultSuccess ); + stream << + "Passed " << bothOrAll( totals.testCases.passed ) + << pluralise( totals.testCases.passed, "test case" ) << + " with " << pluralise( totals.assertions.passed, "assertion" ) << "."; + } + } + }; + + INTERNAL_CATCH_REGISTER_REPORTER( "compact", CompactReporter ) + +} // end namespace Catch + +namespace Catch { + // These are all here to avoid warnings about not having any out of line + // virtual methods + NonCopyable::~NonCopyable() {} + IShared::~IShared() {} + IStream::~IStream() CATCH_NOEXCEPT {} + FileStream::~FileStream() CATCH_NOEXCEPT {} + CoutStream::~CoutStream() CATCH_NOEXCEPT {} + DebugOutStream::~DebugOutStream() CATCH_NOEXCEPT {} + StreamBufBase::~StreamBufBase() CATCH_NOEXCEPT {} + IContext::~IContext() {} + IResultCapture::~IResultCapture() {} + ITestCase::~ITestCase() {} + ITestCaseRegistry::~ITestCaseRegistry() {} + IRegistryHub::~IRegistryHub() {} + IMutableRegistryHub::~IMutableRegistryHub() {} + IExceptionTranslator::~IExceptionTranslator() {} + IExceptionTranslatorRegistry::~IExceptionTranslatorRegistry() {} + IReporter::~IReporter() {} + IReporterFactory::~IReporterFactory() {} + IReporterRegistry::~IReporterRegistry() {} + IStreamingReporter::~IStreamingReporter() {} + AssertionStats::~AssertionStats() {} + SectionStats::~SectionStats() {} + TestCaseStats::~TestCaseStats() {} + TestGroupStats::~TestGroupStats() {} + TestRunStats::~TestRunStats() {} + CumulativeReporterBase::SectionNode::~SectionNode() {} + CumulativeReporterBase::~CumulativeReporterBase() {} + + StreamingReporterBase::~StreamingReporterBase() {} + ConsoleReporter::~ConsoleReporter() {} + CompactReporter::~CompactReporter() {} + IRunner::~IRunner() {} + IMutableContext::~IMutableContext() {} + IConfig::~IConfig() {} + XmlReporter::~XmlReporter() {} + JunitReporter::~JunitReporter() {} + TestRegistry::~TestRegistry() {} + FreeFunctionTestCase::~FreeFunctionTestCase() {} + IGeneratorInfo::~IGeneratorInfo() {} + IGeneratorsForTest::~IGeneratorsForTest() {} + WildcardPattern::~WildcardPattern() {} + TestSpec::Pattern::~Pattern() {} + TestSpec::NamePattern::~NamePattern() {} + TestSpec::TagPattern::~TagPattern() {} + TestSpec::ExcludedPattern::~ExcludedPattern() {} + + Matchers::Impl::StdString::Equals::~Equals() {} + Matchers::Impl::StdString::Contains::~Contains() {} + Matchers::Impl::StdString::StartsWith::~StartsWith() {} + Matchers::Impl::StdString::EndsWith::~EndsWith() {} + + void Config::dummy() {} + + namespace TestCaseTracking { + ITracker::~ITracker() {} + TrackerBase::~TrackerBase() {} + SectionTracker::~SectionTracker() {} + IndexTracker::~IndexTracker() {} + } +} + +#ifdef __clang__ +#pragma clang diagnostic pop +#endif + +#endif + +#ifdef CATCH_CONFIG_MAIN +// #included from: internal/catch_default_main.hpp +#define TWOBLUECUBES_CATCH_DEFAULT_MAIN_HPP_INCLUDED + +#ifndef __OBJC__ + +// Standard C/C++ main entry point +int main (int argc, char * argv[]) { + return Catch::Session().run( argc, argv ); +} + +#else // __OBJC__ + +// Objective-C entry point +int main (int argc, char * const argv[]) { +#if !CATCH_ARC_ENABLED + NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; +#endif + + Catch::registerTestMethods(); + int result = Catch::Session().run( argc, (char* const*)argv ); + +#if !CATCH_ARC_ENABLED + [pool drain]; +#endif + + return result; +} + +#endif // __OBJC__ + +#endif + +#ifdef CLARA_CONFIG_MAIN_NOT_DEFINED +# undef CLARA_CONFIG_MAIN +#endif + +////// + +// If this config identifier is defined then all CATCH macros are prefixed with CATCH_ +#ifdef CATCH_CONFIG_PREFIX_ALL + +#define CATCH_REQUIRE( expr ) INTERNAL_CATCH_TEST( expr, Catch::ResultDisposition::Normal, "CATCH_REQUIRE" ) +#define CATCH_REQUIRE_FALSE( expr ) INTERNAL_CATCH_TEST( expr, Catch::ResultDisposition::Normal | Catch::ResultDisposition::FalseTest, "CATCH_REQUIRE_FALSE" ) + +#define CATCH_REQUIRE_THROWS( expr ) INTERNAL_CATCH_THROWS( expr, Catch::ResultDisposition::Normal, "", "CATCH_REQUIRE_THROWS" ) +#define CATCH_REQUIRE_THROWS_AS( expr, exceptionType ) INTERNAL_CATCH_THROWS_AS( expr, exceptionType, Catch::ResultDisposition::Normal, "CATCH_REQUIRE_THROWS_AS" ) +#define CATCH_REQUIRE_THROWS_WITH( expr, matcher ) INTERNAL_CATCH_THROWS( expr, Catch::ResultDisposition::Normal, matcher, "CATCH_REQUIRE_THROWS_WITH" ) +#define CATCH_REQUIRE_NOTHROW( expr ) INTERNAL_CATCH_NO_THROW( expr, Catch::ResultDisposition::Normal, "CATCH_REQUIRE_NOTHROW" ) + +#define CATCH_CHECK( expr ) INTERNAL_CATCH_TEST( expr, Catch::ResultDisposition::ContinueOnFailure, "CATCH_CHECK" ) +#define CATCH_CHECK_FALSE( expr ) INTERNAL_CATCH_TEST( expr, Catch::ResultDisposition::ContinueOnFailure | Catch::ResultDisposition::FalseTest, "CATCH_CHECK_FALSE" ) +#define CATCH_CHECKED_IF( expr ) INTERNAL_CATCH_IF( expr, Catch::ResultDisposition::ContinueOnFailure, "CATCH_CHECKED_IF" ) +#define CATCH_CHECKED_ELSE( expr ) INTERNAL_CATCH_ELSE( expr, Catch::ResultDisposition::ContinueOnFailure, "CATCH_CHECKED_ELSE" ) +#define CATCH_CHECK_NOFAIL( expr ) INTERNAL_CATCH_TEST( expr, Catch::ResultDisposition::ContinueOnFailure | Catch::ResultDisposition::SuppressFail, "CATCH_CHECK_NOFAIL" ) + +#define CATCH_CHECK_THROWS( expr ) INTERNAL_CATCH_THROWS( expr, Catch::ResultDisposition::ContinueOnFailure, "CATCH_CHECK_THROWS" ) +#define CATCH_CHECK_THROWS_AS( expr, exceptionType ) INTERNAL_CATCH_THROWS_AS( expr, exceptionType, Catch::ResultDisposition::ContinueOnFailure, "CATCH_CHECK_THROWS_AS" ) +#define CATCH_CHECK_THROWS_WITH( expr, matcher ) INTERNAL_CATCH_THROWS( expr, Catch::ResultDisposition::ContinueOnFailure, matcher, "CATCH_CHECK_THROWS_WITH" ) +#define CATCH_CHECK_NOTHROW( expr ) INTERNAL_CATCH_NO_THROW( expr, Catch::ResultDisposition::ContinueOnFailure, "CATCH_CHECK_NOTHROW" ) + +#define CHECK_THAT( arg, matcher ) INTERNAL_CHECK_THAT( arg, matcher, Catch::ResultDisposition::ContinueOnFailure, "CATCH_CHECK_THAT" ) +#define CATCH_REQUIRE_THAT( arg, matcher ) INTERNAL_CHECK_THAT( arg, matcher, Catch::ResultDisposition::Normal, "CATCH_REQUIRE_THAT" ) + +#define CATCH_INFO( msg ) INTERNAL_CATCH_INFO( msg, "CATCH_INFO" ) +#define CATCH_WARN( msg ) INTERNAL_CATCH_MSG( Catch::ResultWas::Warning, Catch::ResultDisposition::ContinueOnFailure, "CATCH_WARN", msg ) +#define CATCH_SCOPED_INFO( msg ) INTERNAL_CATCH_INFO( msg, "CATCH_INFO" ) +#define CATCH_CAPTURE( msg ) INTERNAL_CATCH_INFO( #msg " := " << msg, "CATCH_CAPTURE" ) +#define CATCH_SCOPED_CAPTURE( msg ) INTERNAL_CATCH_INFO( #msg " := " << msg, "CATCH_CAPTURE" ) + +#ifdef CATCH_CONFIG_VARIADIC_MACROS + #define CATCH_TEST_CASE( ... ) INTERNAL_CATCH_TESTCASE( __VA_ARGS__ ) + #define CATCH_TEST_CASE_METHOD( className, ... ) INTERNAL_CATCH_TEST_CASE_METHOD( className, __VA_ARGS__ ) + #define CATCH_METHOD_AS_TEST_CASE( method, ... ) INTERNAL_CATCH_METHOD_AS_TEST_CASE( method, __VA_ARGS__ ) + #define CATCH_REGISTER_TEST_CASE( Function, ... ) INTERNAL_CATCH_REGISTER_TESTCASE( Function, __VA_ARGS__ ) + #define CATCH_SECTION( ... ) INTERNAL_CATCH_SECTION( __VA_ARGS__ ) + #define CATCH_FAIL( ... ) INTERNAL_CATCH_MSG( Catch::ResultWas::ExplicitFailure, Catch::ResultDisposition::Normal, "CATCH_FAIL", __VA_ARGS__ ) + #define CATCH_SUCCEED( ... ) INTERNAL_CATCH_MSG( Catch::ResultWas::Ok, Catch::ResultDisposition::ContinueOnFailure, "CATCH_SUCCEED", __VA_ARGS__ ) +#else + #define CATCH_TEST_CASE( name, description ) INTERNAL_CATCH_TESTCASE( name, description ) + #define CATCH_TEST_CASE_METHOD( className, name, description ) INTERNAL_CATCH_TEST_CASE_METHOD( className, name, description ) + #define CATCH_METHOD_AS_TEST_CASE( method, name, description ) INTERNAL_CATCH_METHOD_AS_TEST_CASE( method, name, description ) + #define CATCH_REGISTER_TEST_CASE( function, name, description ) INTERNAL_CATCH_REGISTER_TESTCASE( function, name, description ) + #define CATCH_SECTION( name, description ) INTERNAL_CATCH_SECTION( name, description ) + #define CATCH_FAIL( msg ) INTERNAL_CATCH_MSG( Catch::ResultWas::ExplicitFailure, Catch::ResultDisposition::Normal, "CATCH_FAIL", msg ) + #define CATCH_SUCCEED( msg ) INTERNAL_CATCH_MSG( Catch::ResultWas::Ok, Catch::ResultDisposition::ContinueOnFailure, "CATCH_SUCCEED", msg ) +#endif +#define CATCH_ANON_TEST_CASE() INTERNAL_CATCH_TESTCASE( "", "" ) + +#define CATCH_REGISTER_REPORTER( name, reporterType ) INTERNAL_CATCH_REGISTER_REPORTER( name, reporterType ) +#define CATCH_REGISTER_LEGACY_REPORTER( name, reporterType ) INTERNAL_CATCH_REGISTER_LEGACY_REPORTER( name, reporterType ) + +#define CATCH_GENERATE( expr) INTERNAL_CATCH_GENERATE( expr ) + +// "BDD-style" convenience wrappers +#ifdef CATCH_CONFIG_VARIADIC_MACROS +#define CATCH_SCENARIO( ... ) CATCH_TEST_CASE( "Scenario: " __VA_ARGS__ ) +#define CATCH_SCENARIO_METHOD( className, ... ) INTERNAL_CATCH_TEST_CASE_METHOD( className, "Scenario: " __VA_ARGS__ ) +#else +#define CATCH_SCENARIO( name, tags ) CATCH_TEST_CASE( "Scenario: " name, tags ) +#define CATCH_SCENARIO_METHOD( className, name, tags ) INTERNAL_CATCH_TEST_CASE_METHOD( className, "Scenario: " name, tags ) +#endif +#define CATCH_GIVEN( desc ) CATCH_SECTION( std::string( "Given: ") + desc, "" ) +#define CATCH_WHEN( desc ) CATCH_SECTION( std::string( " When: ") + desc, "" ) +#define CATCH_AND_WHEN( desc ) CATCH_SECTION( std::string( " And: ") + desc, "" ) +#define CATCH_THEN( desc ) CATCH_SECTION( std::string( " Then: ") + desc, "" ) +#define CATCH_AND_THEN( desc ) CATCH_SECTION( std::string( " And: ") + desc, "" ) + +// If CATCH_CONFIG_PREFIX_ALL is not defined then the CATCH_ prefix is not required +#else + +#define REQUIRE( expr ) INTERNAL_CATCH_TEST( expr, Catch::ResultDisposition::Normal, "REQUIRE" ) +#define REQUIRE_FALSE( expr ) INTERNAL_CATCH_TEST( expr, Catch::ResultDisposition::Normal | Catch::ResultDisposition::FalseTest, "REQUIRE_FALSE" ) + +#define REQUIRE_THROWS( expr ) INTERNAL_CATCH_THROWS( expr, Catch::ResultDisposition::Normal, "", "REQUIRE_THROWS" ) +#define REQUIRE_THROWS_AS( expr, exceptionType ) INTERNAL_CATCH_THROWS_AS( expr, exceptionType, Catch::ResultDisposition::Normal, "REQUIRE_THROWS_AS" ) +#define REQUIRE_THROWS_WITH( expr, matcher ) INTERNAL_CATCH_THROWS( expr, Catch::ResultDisposition::Normal, matcher, "REQUIRE_THROWS_WITH" ) +#define REQUIRE_NOTHROW( expr ) INTERNAL_CATCH_NO_THROW( expr, Catch::ResultDisposition::Normal, "REQUIRE_NOTHROW" ) + +#define CHECK( expr ) INTERNAL_CATCH_TEST( expr, Catch::ResultDisposition::ContinueOnFailure, "CHECK" ) +#define CHECK_FALSE( expr ) INTERNAL_CATCH_TEST( expr, Catch::ResultDisposition::ContinueOnFailure | Catch::ResultDisposition::FalseTest, "CHECK_FALSE" ) +#define CHECKED_IF( expr ) INTERNAL_CATCH_IF( expr, Catch::ResultDisposition::ContinueOnFailure, "CHECKED_IF" ) +#define CHECKED_ELSE( expr ) INTERNAL_CATCH_ELSE( expr, Catch::ResultDisposition::ContinueOnFailure, "CHECKED_ELSE" ) +#define CHECK_NOFAIL( expr ) INTERNAL_CATCH_TEST( expr, Catch::ResultDisposition::ContinueOnFailure | Catch::ResultDisposition::SuppressFail, "CHECK_NOFAIL" ) + +#define CHECK_THROWS( expr ) INTERNAL_CATCH_THROWS( expr, Catch::ResultDisposition::ContinueOnFailure, "", "CHECK_THROWS" ) +#define CHECK_THROWS_AS( expr, exceptionType ) INTERNAL_CATCH_THROWS_AS( expr, exceptionType, Catch::ResultDisposition::ContinueOnFailure, "CHECK_THROWS_AS" ) +#define CHECK_THROWS_WITH( expr, matcher ) INTERNAL_CATCH_THROWS( expr, Catch::ResultDisposition::ContinueOnFailure, matcher, "CHECK_THROWS_WITH" ) +#define CHECK_NOTHROW( expr ) INTERNAL_CATCH_NO_THROW( expr, Catch::ResultDisposition::ContinueOnFailure, "CHECK_NOTHROW" ) + +#define CHECK_THAT( arg, matcher ) INTERNAL_CHECK_THAT( arg, matcher, Catch::ResultDisposition::ContinueOnFailure, "CHECK_THAT" ) +#define REQUIRE_THAT( arg, matcher ) INTERNAL_CHECK_THAT( arg, matcher, Catch::ResultDisposition::Normal, "REQUIRE_THAT" ) + +#define INFO( msg ) INTERNAL_CATCH_INFO( msg, "INFO" ) +#define WARN( msg ) INTERNAL_CATCH_MSG( Catch::ResultWas::Warning, Catch::ResultDisposition::ContinueOnFailure, "WARN", msg ) +#define SCOPED_INFO( msg ) INTERNAL_CATCH_INFO( msg, "INFO" ) +#define CAPTURE( msg ) INTERNAL_CATCH_INFO( #msg " := " << msg, "CAPTURE" ) +#define SCOPED_CAPTURE( msg ) INTERNAL_CATCH_INFO( #msg " := " << msg, "CAPTURE" ) + +#ifdef CATCH_CONFIG_VARIADIC_MACROS + #define TEST_CASE( ... ) INTERNAL_CATCH_TESTCASE( __VA_ARGS__ ) + #define TEST_CASE_METHOD( className, ... ) INTERNAL_CATCH_TEST_CASE_METHOD( className, __VA_ARGS__ ) + #define METHOD_AS_TEST_CASE( method, ... ) INTERNAL_CATCH_METHOD_AS_TEST_CASE( method, __VA_ARGS__ ) + #define REGISTER_TEST_CASE( Function, ... ) INTERNAL_CATCH_REGISTER_TESTCASE( Function, __VA_ARGS__ ) + #define SECTION( ... ) INTERNAL_CATCH_SECTION( __VA_ARGS__ ) + #define FAIL( ... ) INTERNAL_CATCH_MSG( Catch::ResultWas::ExplicitFailure, Catch::ResultDisposition::Normal, "FAIL", __VA_ARGS__ ) + #define SUCCEED( ... ) INTERNAL_CATCH_MSG( Catch::ResultWas::Ok, Catch::ResultDisposition::ContinueOnFailure, "SUCCEED", __VA_ARGS__ ) +#else + #define TEST_CASE( name, description ) INTERNAL_CATCH_TESTCASE( name, description ) + #define TEST_CASE_METHOD( className, name, description ) INTERNAL_CATCH_TEST_CASE_METHOD( className, name, description ) + #define METHOD_AS_TEST_CASE( method, name, description ) INTERNAL_CATCH_METHOD_AS_TEST_CASE( method, name, description ) + #define REGISTER_TEST_CASE( method, name, description ) INTERNAL_CATCH_REGISTER_TESTCASE( method, name, description ) + #define SECTION( name, description ) INTERNAL_CATCH_SECTION( name, description ) + #define FAIL( msg ) INTERNAL_CATCH_MSG( Catch::ResultWas::ExplicitFailure, Catch::ResultDisposition::Normal, "FAIL", msg ) + #define SUCCEED( msg ) INTERNAL_CATCH_MSG( Catch::ResultWas::Ok, Catch::ResultDisposition::ContinueOnFailure, "SUCCEED", msg ) +#endif +#define ANON_TEST_CASE() INTERNAL_CATCH_TESTCASE( "", "" ) + +#define REGISTER_REPORTER( name, reporterType ) INTERNAL_CATCH_REGISTER_REPORTER( name, reporterType ) +#define REGISTER_LEGACY_REPORTER( name, reporterType ) INTERNAL_CATCH_REGISTER_LEGACY_REPORTER( name, reporterType ) + +#define GENERATE( expr) INTERNAL_CATCH_GENERATE( expr ) + +#endif + +#define CATCH_TRANSLATE_EXCEPTION( signature ) INTERNAL_CATCH_TRANSLATE_EXCEPTION( signature ) + +// "BDD-style" convenience wrappers +#ifdef CATCH_CONFIG_VARIADIC_MACROS +#define SCENARIO( ... ) TEST_CASE( "Scenario: " __VA_ARGS__ ) +#define SCENARIO_METHOD( className, ... ) INTERNAL_CATCH_TEST_CASE_METHOD( className, "Scenario: " __VA_ARGS__ ) +#else +#define SCENARIO( name, tags ) TEST_CASE( "Scenario: " name, tags ) +#define SCENARIO_METHOD( className, name, tags ) INTERNAL_CATCH_TEST_CASE_METHOD( className, "Scenario: " name, tags ) +#endif +#define GIVEN( desc ) SECTION( std::string(" Given: ") + desc, "" ) +#define WHEN( desc ) SECTION( std::string(" When: ") + desc, "" ) +#define AND_WHEN( desc ) SECTION( std::string("And when: ") + desc, "" ) +#define THEN( desc ) SECTION( std::string(" Then: ") + desc, "" ) +#define AND_THEN( desc ) SECTION( std::string(" And: ") + desc, "" ) + +using Catch::Detail::Approx; + +#endif // TWOBLUECUBES_SINGLE_INCLUDE_CATCH_HPP_INCLUDED + diff --git a/EuclidEmulator2/cxxopts-2.2.0/test/find-package-test/CMakeLists.txt b/EuclidEmulator2/cxxopts-2.2.0/test/find-package-test/CMakeLists.txt new file mode 100755 index 00000000..77d58316 --- /dev/null +++ b/EuclidEmulator2/cxxopts-2.2.0/test/find-package-test/CMakeLists.txt @@ -0,0 +1,11 @@ +cmake_minimum_required(VERSION 3.1) + +project(cxxopts-test) + +set(CMAKE_CXX_STANDARD 11) +set(CMAKE_CXX_EXTENSIONS OFF) + +find_package(cxxopts REQUIRED) + +add_executable(library-test "../../src/example.cpp") +target_link_libraries(library-test cxxopts::cxxopts) diff --git a/EuclidEmulator2/cxxopts-2.2.0/test/link_a.cpp b/EuclidEmulator2/cxxopts-2.2.0/test/link_a.cpp new file mode 100755 index 00000000..3611692e --- /dev/null +++ b/EuclidEmulator2/cxxopts-2.2.0/test/link_a.cpp @@ -0,0 +1,6 @@ +#include "cxxopts.hpp" + +int main(int, char**) +{ + return 0; +} diff --git a/EuclidEmulator2/cxxopts-2.2.0/test/link_b.cpp b/EuclidEmulator2/cxxopts-2.2.0/test/link_b.cpp new file mode 100755 index 00000000..e48e22a9 --- /dev/null +++ b/EuclidEmulator2/cxxopts-2.2.0/test/link_b.cpp @@ -0,0 +1 @@ +#include diff --git a/EuclidEmulator2/cxxopts-2.2.0/test/main.cpp b/EuclidEmulator2/cxxopts-2.2.0/test/main.cpp new file mode 100755 index 00000000..0c7c351f --- /dev/null +++ b/EuclidEmulator2/cxxopts-2.2.0/test/main.cpp @@ -0,0 +1,2 @@ +#define CATCH_CONFIG_MAIN +#include "catch.hpp" diff --git a/EuclidEmulator2/cxxopts-2.2.0/test/options.cpp b/EuclidEmulator2/cxxopts-2.2.0/test/options.cpp new file mode 100755 index 00000000..25b5ea30 --- /dev/null +++ b/EuclidEmulator2/cxxopts-2.2.0/test/options.cpp @@ -0,0 +1,686 @@ +#include "catch.hpp" + +#include + +#include "cxxopts.hpp" + +class Argv { + public: + + Argv(std::initializer_list args) + : m_argv(new char*[args.size()]) + , m_argc(args.size()) + { + int i = 0; + auto iter = args.begin(); + while (iter != args.end()) { + auto len = strlen(*iter) + 1; + auto ptr = std::unique_ptr(new char[len]); + + strcpy(ptr.get(), *iter); + m_args.push_back(std::move(ptr)); + m_argv.get()[i] = m_args.back().get(); + + ++iter; + ++i; + } + } + + char** argv() const { + return m_argv.get(); + } + + int argc() const { + return m_argc; + } + + private: + + std::vector> m_args; + std::unique_ptr m_argv; + int m_argc; +}; + +TEST_CASE("Basic options", "[options]") +{ + + cxxopts::Options options("tester", " - test basic options"); + + options.add_options() + ("long", "a long option") + ("s,short", "a short option") + ("value", "an option with a value", cxxopts::value()) + ("a,av", "a short option with a value", cxxopts::value()) + ("6,six", "a short number option") + ("p, space", "an option with space between short and long") + ("nothing", "won't exist", cxxopts::value()) + ; + + Argv argv({ + "tester", + "--long", + "-s", + "--value", + "value", + "-a", + "b", + "-6", + "-p", + "--space", + }); + + char** actual_argv = argv.argv(); + auto argc = argv.argc(); + + auto result = options.parse(argc, actual_argv); + + CHECK(result.count("long") == 1); + CHECK(result.count("s") == 1); + CHECK(result.count("value") == 1); + CHECK(result.count("a") == 1); + CHECK(result["value"].as() == "value"); + CHECK(result["a"].as() == "b"); + CHECK(result.count("6") == 1); + CHECK(result.count("p") == 2); + CHECK(result.count("space") == 2); + + auto& arguments = result.arguments(); + REQUIRE(arguments.size() == 7); + CHECK(arguments[0].key() == "long"); + CHECK(arguments[0].value() == "true"); + CHECK(arguments[0].as() == true); + + CHECK(arguments[1].key() == "short"); + CHECK(arguments[2].key() == "value"); + CHECK(arguments[3].key() == "av"); + + CHECK_THROWS_AS(result["nothing"].as(), std::domain_error&); +} + +TEST_CASE("Short options", "[options]") +{ + cxxopts::Options options("test_short", " - test short options"); + + options.add_options() + ("a", "a short option", cxxopts::value()); + + Argv argv({"test_short", "-a", "value"}); + + auto actual_argv = argv.argv(); + auto argc = argv.argc(); + + auto result = options.parse(argc, actual_argv); + + CHECK(result.count("a") == 1); + CHECK(result["a"].as() == "value"); + + REQUIRE_THROWS_AS(options.add_options()("", "nothing option"), + cxxopts::invalid_option_format_error&); +} + +TEST_CASE("No positional", "[positional]") +{ + cxxopts::Options options("test_no_positional", + " - test no positional options"); + + Argv av({"tester", "a", "b", "def"}); + + char** argv = av.argv(); + auto argc = av.argc(); + auto result = options.parse(argc, argv); + + REQUIRE(argc == 4); + CHECK(strcmp(argv[1], "a") == 0); +} + +TEST_CASE("All positional", "[positional]") +{ + std::vector positional; + + cxxopts::Options options("test_all_positional", " - test all positional"); + options.add_options() + ("positional", "Positional parameters", + cxxopts::value>(positional)) + ; + + Argv av({"tester", "a", "b", "c"}); + + auto argc = av.argc(); + auto argv = av.argv(); + + std::vector pos_names = {"positional"}; + + options.parse_positional(pos_names.begin(), pos_names.end()); + + auto result = options.parse(argc, argv); + + REQUIRE(argc == 1); + REQUIRE(positional.size() == 3); + + CHECK(positional[0] == "a"); + CHECK(positional[1] == "b"); + CHECK(positional[2] == "c"); +} + +TEST_CASE("Some positional explicit", "[positional]") +{ + cxxopts::Options options("positional_explicit", " - test positional"); + + options.add_options() + ("input", "Input file", cxxopts::value()) + ("output", "Output file", cxxopts::value()) + ("positional", "Positional parameters", + cxxopts::value>()) + ; + + options.parse_positional({"input", "output", "positional"}); + + Argv av({"tester", "--output", "a", "b", "c", "d"}); + + char** argv = av.argv(); + auto argc = av.argc(); + + auto result = options.parse(argc, argv); + + CHECK(argc == 1); + CHECK(result.count("output")); + CHECK(result["input"].as() == "b"); + CHECK(result["output"].as() == "a"); + + auto& positional = result["positional"].as>(); + + REQUIRE(positional.size() == 2); + CHECK(positional[0] == "c"); + CHECK(positional[1] == "d"); +} + +TEST_CASE("No positional with extras", "[positional]") +{ + cxxopts::Options options("posargmaster", "shows incorrect handling"); + options.add_options() + ("dummy", "oh no", cxxopts::value()) + ; + + Argv av({"extras", "--", "a", "b", "c", "d"}); + + char** argv = av.argv(); + auto argc = av.argc(); + + auto old_argv = argv; + auto old_argc = argc; + + options.parse(argc, argv); + + REQUIRE(argc == old_argc - 1); + CHECK(argv[0] == std::string("extras")); + CHECK(argv[1] == std::string("a")); +} + +TEST_CASE("Positional not valid", "[positional]") { + cxxopts::Options options("positional_invalid", "invalid positional argument"); + options.add_options() + ("long", "a long option", cxxopts::value()) + ; + + options.parse_positional("something"); + + Argv av({"foobar", "bar", "baz"}); + + char** argv = av.argv(); + auto argc = av.argc(); + + CHECK_THROWS_AS(options.parse(argc, argv), cxxopts::option_not_exists_exception&); +} + +TEST_CASE("Empty with implicit value", "[implicit]") +{ + cxxopts::Options options("empty_implicit", "doesn't handle empty"); + options.add_options() + ("implicit", "Has implicit", cxxopts::value() + ->implicit_value("foo")); + + Argv av({"implicit", "--implicit="}); + + char** argv = av.argv(); + auto argc = av.argc(); + + auto result = options.parse(argc, argv); + + REQUIRE(result.count("implicit") == 1); + REQUIRE(result["implicit"].as() == ""); +} + +TEST_CASE("Boolean without implicit value", "[implicit]") +{ + cxxopts::Options options("no_implicit", "bool without an implicit value"); + options.add_options() + ("bool", "Boolean without implicit", cxxopts::value() + ->no_implicit_value()); + + SECTION("When no value provided") { + Argv av({"no_implicit", "--bool"}); + + char** argv = av.argv(); + auto argc = av.argc(); + + CHECK_THROWS_AS(options.parse(argc, argv), cxxopts::missing_argument_exception&); + } + + SECTION("With equal-separated true") { + Argv av({"no_implicit", "--bool=true"}); + + char** argv = av.argv(); + auto argc = av.argc(); + + auto result = options.parse(argc, argv); + CHECK(result.count("bool") == 1); + CHECK(result["bool"].as() == true); + } + + SECTION("With equal-separated false") { + Argv av({"no_implicit", "--bool=false"}); + + char** argv = av.argv(); + auto argc = av.argc(); + + auto result = options.parse(argc, argv); + CHECK(result.count("bool") == 1); + CHECK(result["bool"].as() == false); + } + + SECTION("With space-separated true") { + Argv av({"no_implicit", "--bool", "true"}); + + char** argv = av.argv(); + auto argc = av.argc(); + + auto result = options.parse(argc, argv); + CHECK(result.count("bool") == 1); + CHECK(result["bool"].as() == true); + } + + SECTION("With space-separated false") { + Argv av({"no_implicit", "--bool", "false"}); + + char** argv = av.argv(); + auto argc = av.argc(); + + auto result = options.parse(argc, argv); + CHECK(result.count("bool") == 1); + CHECK(result["bool"].as() == false); + } +} + +TEST_CASE("Default values", "[default]") +{ + cxxopts::Options options("defaults", "has defaults"); + options.add_options() + ("default", "Has implicit", cxxopts::value() + ->default_value("42")); + + SECTION("Sets defaults") { + Argv av({"implicit"}); + + char** argv = av.argv(); + auto argc = av.argc(); + + auto result = options.parse(argc, argv); + CHECK(result.count("default") == 0); + CHECK(result["default"].as() == 42); + } + + SECTION("When values provided") { + Argv av({"implicit", "--default", "5"}); + + char** argv = av.argv(); + auto argc = av.argc(); + + auto result = options.parse(argc, argv); + CHECK(result.count("default") == 1); + CHECK(result["default"].as() == 5); + } +} + +TEST_CASE("Parse into a reference", "[reference]") +{ + int value = 0; + + cxxopts::Options options("into_reference", "parses into a reference"); + options.add_options() + ("ref", "A reference", cxxopts::value(value)); + + Argv av({"into_reference", "--ref", "42"}); + + auto argv = av.argv(); + auto argc = av.argc(); + + auto result = options.parse(argc, argv); + CHECK(result.count("ref") == 1); + CHECK(value == 42); +} + +TEST_CASE("Integers", "[options]") +{ + cxxopts::Options options("parses_integers", "parses integers correctly"); + options.add_options() + ("positional", "Integers", cxxopts::value>()); + + Argv av({"ints", "--", "5", "6", "-6", "0", "0xab", "0xAf", "0x0"}); + + char** argv = av.argv(); + auto argc = av.argc(); + + options.parse_positional("positional"); + auto result = options.parse(argc, argv); + + REQUIRE(result.count("positional") == 7); + + auto& positional = result["positional"].as>(); + REQUIRE(positional.size() == 7); + CHECK(positional[0] == 5); + CHECK(positional[1] == 6); + CHECK(positional[2] == -6); + CHECK(positional[3] == 0); + CHECK(positional[4] == 0xab); + CHECK(positional[5] == 0xaf); + CHECK(positional[6] == 0x0); +} + +TEST_CASE("Leading zero integers", "[options]") +{ + cxxopts::Options options("parses_integers", "parses integers correctly"); + options.add_options() + ("positional", "Integers", cxxopts::value>()); + + Argv av({"ints", "--", "05", "06", "0x0ab", "0x0001"}); + + char** argv = av.argv(); + auto argc = av.argc(); + + options.parse_positional("positional"); + auto result = options.parse(argc, argv); + + REQUIRE(result.count("positional") == 4); + + auto& positional = result["positional"].as>(); + REQUIRE(positional.size() == 4); + CHECK(positional[0] == 5); + CHECK(positional[1] == 6); + CHECK(positional[2] == 0xab); + CHECK(positional[3] == 0x1); +} + +TEST_CASE("Unsigned integers", "[options]") +{ + cxxopts::Options options("parses_unsigned", "detects unsigned errors"); + options.add_options() + ("positional", "Integers", cxxopts::value>()); + + Argv av({"ints", "--", "-2"}); + + char** argv = av.argv(); + auto argc = av.argc(); + + options.parse_positional("positional"); + CHECK_THROWS_AS(options.parse(argc, argv), cxxopts::argument_incorrect_type&); +} + +TEST_CASE("Integer bounds", "[integer]") +{ + cxxopts::Options options("integer_boundaries", "check min/max integer"); + options.add_options() + ("positional", "Integers", cxxopts::value>()); + + SECTION("No overflow") + { + Argv av({"ints", "--", "127", "-128", "0x7f", "-0x80", "0x7e"}); + + auto argv = av.argv(); + auto argc = av.argc(); + + options.parse_positional("positional"); + auto result = options.parse(argc, argv); + + REQUIRE(result.count("positional") == 5); + + auto& positional = result["positional"].as>(); + CHECK(positional[0] == 127); + CHECK(positional[1] == -128); + CHECK(positional[2] == 0x7f); + CHECK(positional[3] == -0x80); + CHECK(positional[4] == 0x7e); + } +} + +TEST_CASE("Overflow on boundary", "[integer]") +{ + using namespace cxxopts::values; + + int8_t si; + uint8_t ui; + + CHECK_THROWS_AS((integer_parser("128", si)), cxxopts::argument_incorrect_type&); + CHECK_THROWS_AS((integer_parser("-129", si)), cxxopts::argument_incorrect_type&); + CHECK_THROWS_AS((integer_parser("256", ui)), cxxopts::argument_incorrect_type&); + CHECK_THROWS_AS((integer_parser("-0x81", si)), cxxopts::argument_incorrect_type&); + CHECK_THROWS_AS((integer_parser("0x80", si)), cxxopts::argument_incorrect_type&); + CHECK_THROWS_AS((integer_parser("0x100", ui)), cxxopts::argument_incorrect_type&); +} + +TEST_CASE("Integer overflow", "[options]") +{ + using namespace cxxopts::values; + + cxxopts::Options options("reject_overflow", "rejects overflowing integers"); + options.add_options() + ("positional", "Integers", cxxopts::value>()); + + Argv av({"ints", "--", "128"}); + + auto argv = av.argv(); + auto argc = av.argc(); + + options.parse_positional("positional"); + CHECK_THROWS_AS(options.parse(argc, argv), cxxopts::argument_incorrect_type&); + + int integer = 0; + CHECK_THROWS_AS((integer_parser("23423423423", integer)), cxxopts::argument_incorrect_type&); + CHECK_THROWS_AS((integer_parser("234234234234", integer)), cxxopts::argument_incorrect_type&); +} + +TEST_CASE("Floats", "[options]") +{ + cxxopts::Options options("parses_floats", "parses floats correctly"); + options.add_options() + ("double", "Double precision", cxxopts::value()) + ("positional", "Floats", cxxopts::value>()); + + Argv av({"floats", "--double", "0.5", "--", "4", "-4", "1.5e6", "-1.5e6"}); + + char** argv = av.argv(); + auto argc = av.argc(); + + options.parse_positional("positional"); + auto result = options.parse(argc, argv); + + REQUIRE(result.count("double") == 1); + REQUIRE(result.count("positional") == 4); + + CHECK(result["double"].as() == 0.5); + + auto& positional = result["positional"].as>(); + CHECK(positional[0] == 4); + CHECK(positional[1] == -4); + CHECK(positional[2] == 1.5e6); + CHECK(positional[3] == -1.5e6); +} + +TEST_CASE("Invalid integers", "[integer]") { + cxxopts::Options options("invalid_integers", "rejects invalid integers"); + options.add_options() + ("positional", "Integers", cxxopts::value>()); + + Argv av({"ints", "--", "Ae"}); + + char **argv = av.argv(); + auto argc = av.argc(); + + options.parse_positional("positional"); + CHECK_THROWS_AS(options.parse(argc, argv), cxxopts::argument_incorrect_type&); +} + +TEST_CASE("Booleans", "[boolean]") { + cxxopts::Options options("parses_floats", "parses floats correctly"); + options.add_options() + ("bool", "A Boolean", cxxopts::value()) + ("debug", "Debugging", cxxopts::value()) + ("timing", "Timing", cxxopts::value()) + ("verbose", "Verbose", cxxopts::value()) + ("dry-run", "Dry Run", cxxopts::value()) + ("noExplicitDefault", "No Explicit Default", cxxopts::value()) + ("defaultTrue", "Timing", cxxopts::value()->default_value("true")) + ("defaultFalse", "Timing", cxxopts::value()->default_value("false")) + ("others", "Other arguments", cxxopts::value>()) + ; + + options.parse_positional("others"); + + Argv av({"booleans", "--bool=false", "--debug=true", "--timing", "--verbose=1", "--dry-run=0", "extra"}); + + char** argv = av.argv(); + auto argc = av.argc(); + + auto result = options.parse(argc, argv); + + REQUIRE(result.count("bool") == 1); + REQUIRE(result.count("debug") == 1); + REQUIRE(result.count("timing") == 1); + REQUIRE(result.count("verbose") == 1); + REQUIRE(result.count("dry-run") == 1); + REQUIRE(result.count("noExplicitDefault") == 0); + REQUIRE(result.count("defaultTrue") == 0); + REQUIRE(result.count("defaultFalse") == 0); + + CHECK(result["bool"].as() == false); + CHECK(result["debug"].as() == true); + CHECK(result["timing"].as() == true); + CHECK(result["verbose"].as() == true); + CHECK(result["dry-run"].as() == false); + CHECK(result["noExplicitDefault"].as() == false); + CHECK(result["defaultTrue"].as() == true); + CHECK(result["defaultFalse"].as() == false); + + REQUIRE(result.count("others") == 1); +} + +TEST_CASE("std::vector", "[vector]") { + std::vector vector; + cxxopts::Options options("vector", " - tests vector"); + options.add_options() + ("vector", "an vector option", cxxopts::value>(vector)); + + Argv av({"vector", "--vector", "1,-2.1,3,4.5"}); + + char** argv = av.argv(); + auto argc = av.argc(); + + options.parse(argc, argv); + + REQUIRE(vector.size() == 4); + CHECK(vector[0] == 1); + CHECK(vector[1] == -2.1); + CHECK(vector[2] == 3); + CHECK(vector[3] == 4.5); +} + +#ifdef CXXOPTS_HAS_OPTIONAL +TEST_CASE("std::optional", "[optional]") { + std::optional optional; + cxxopts::Options options("optional", " - tests optional"); + options.add_options() + ("optional", "an optional option", cxxopts::value>(optional)); + + Argv av({"optional", "--optional", "foo"}); + + char** argv = av.argv(); + auto argc = av.argc(); + + options.parse(argc, argv); + + REQUIRE(optional.has_value()); + CHECK(*optional == "foo"); +} +#endif + +TEST_CASE("Unrecognised options", "[options]") { + cxxopts::Options options("unknown_options", " - test unknown options"); + + options.add_options() + ("long", "a long option") + ("s,short", "a short option"); + + Argv av({ + "unknown_options", + "--unknown", + "--long", + "-su", + "--another_unknown", + }); + + char** argv = av.argv(); + auto argc = av.argc(); + + SECTION("Default behaviour") { + CHECK_THROWS_AS(options.parse(argc, argv), cxxopts::option_not_exists_exception&); + } + + SECTION("After allowing unrecognised options") { + options.allow_unrecognised_options(); + CHECK_NOTHROW(options.parse(argc, argv)); + REQUIRE(argc == 3); + CHECK_THAT(argv[1], Catch::Equals("--unknown")); + } +} + +TEST_CASE("Allow bad short syntax", "[options]") { + cxxopts::Options options("unknown_options", " - test unknown options"); + + options.add_options() + ("long", "a long option") + ("s,short", "a short option"); + + Argv av({ + "unknown_options", + "-some_bad_short", + }); + + char** argv = av.argv(); + auto argc = av.argc(); + + SECTION("Default behaviour") { + CHECK_THROWS_AS(options.parse(argc, argv), cxxopts::option_syntax_exception&); + } + + SECTION("After allowing unrecognised options") { + options.allow_unrecognised_options(); + CHECK_NOTHROW(options.parse(argc, argv)); + REQUIRE(argc == 2); + CHECK_THAT(argv[1], Catch::Equals("-some_bad_short")); + } +} + +TEST_CASE("Invalid option syntax", "[options]") { + cxxopts::Options options("invalid_syntax", " - test invalid syntax"); + + Argv av({ + "invalid_syntax", + "--a", + }); + + char** argv = av.argv(); + auto argc = av.argc(); + + SECTION("Default behaviour") { + CHECK_THROWS_AS(options.parse(argc, argv), cxxopts::option_syntax_exception&); + } +} diff --git a/EuclidEmulator2/ee2_bindata.dat b/EuclidEmulator2/ee2_bindata.dat new file mode 100644 index 00000000..cc432cb5 Binary files /dev/null and b/EuclidEmulator2/ee2_bindata.dat differ diff --git a/EuclidEmulator2/pyproject.toml b/EuclidEmulator2/pyproject.toml new file mode 100644 index 00000000..bc1f36da --- /dev/null +++ b/EuclidEmulator2/pyproject.toml @@ -0,0 +1,7 @@ +[build-system] +requires = [ + "setuptools", + "wheel", + "cython" +] +build-backend = "setuptools.build_meta" diff --git a/EuclidEmulator2/setup.py b/EuclidEmulator2/setup.py new file mode 100644 index 00000000..32b31209 --- /dev/null +++ b/EuclidEmulator2/setup.py @@ -0,0 +1,38 @@ +from setuptools import setup, Extension, find_packages +from Cython.Distutils import build_ext +from Cython.Build import cythonize +import os +from distutils.sysconfig import get_python_lib + +os.environ["CC"] = "g++" +os.environ["CXX"] = "g++" + +if 'LDFLAGS' in os.environ.keys(): + ldfl=os.environ['LDFLAGS'] + new_ldfl=ldfl.replace('-Wl,-dead_strip_dylibs ','') + os.environ['LDFLAGS']=new_ldfl + + +pathtopythonlib=get_python_lib() + +extensions=Extension(name="euclidemu2", + sources=["src/euclidemu2.pyx","src/cosmo.cxx","src/emulator.cxx"], + include_dirs=["/usr/local/include","../src/"], + libraries=["gsl","gslcblas"], + extra_link_args=['-L/usr/local/lib'], + language="c++", + extra_compile_args=['-std=c++11', + '-D PRINT_FLAG=0', + '-D PATH_TO_EE2_DATA_FILE="'+pathtopythonlib+'/euclidemu2/ee2_bindata.dat"'] + ) + + +setup(name='euclidemu2', + cmdclass={'build_ext': build_ext}, + ext_modules = cythonize(extensions,language_level = 3), + packages=['euclidemu2'], + package_dir={'euclidemu2': 'src'}, + package_data={'euclidemu2': ["ee2_bindata.dat","cosmo.h","emulator.h","units_and_constants.h"]}, + include_package_data=True, + install_requires=['cython','numpy','scipy'] + ) diff --git a/EuclidEmulator2/src/cosmo.cxx b/EuclidEmulator2/src/cosmo.cxx new file mode 100644 index 00000000..4d410444 --- /dev/null +++ b/EuclidEmulator2/src/cosmo.cxx @@ -0,0 +1,333 @@ +/* cosmo.cxx +* ========= +* This file is part of EuclidEmulator2 +* Copyright (c) 2020 Mischa Knabenhans +* +* EuclidEmulator2 is free software: you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* EuclidEmulator2 is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*/ + +#include +#include +#include +#include +#include "cosmo.h" +#include "units_and_constants.h" + +#define EPSCOSMO 1e-6 +#define LIMIT 1000 + +#ifndef PRINT_FLAG +#define PRINT_FLAG 1 +#endif + +//using namespace planck_units; +using namespace SI_units; + +/* CONSTRUCTOR */ +Cosmology::Cosmology(double Omega_b, double Omega_m, double Sum_m_nu, double n_s, double h, double w_0, double w_a, double A_s): + Neff(3.046), + nTable(101), + nSteps(101) + { + // GSL interpolation object for redshift-to-nStep conversion: + // The spline is depends on the cosmology but takes redshift as an + // argument. For this very reason, the spline can computed once when + // a Cosmology class object is instantiated. From then on, the spline + // can be evaluated as often as necessary until the Cosmology object + // is destroyed. + gsl_wsp = gsl_integration_workspace_alloc(LIMIT); + acc = gsl_interp_accel_alloc(); + + this->cosmo[0] = Omega_b; + this->cosmo[1] = Omega_m; + this->cosmo[2] = Sum_m_nu; + this->cosmo[3] = n_s; + this->cosmo[4] = h; + this->cosmo[5] = w_0; + this->cosmo[6] = w_a; + this->cosmo[7] = A_s; + // Compute the present day temperatures of the photon (gamma) and the + // neutrino (nu) fluids: + this->T_gamma_0 = T_gamma(1.0); + this->T_nu_0 = T_nu(1.0); + // Compute the actual critical density of the Universe in SI units for + // the given cosmology: + this->rho_crit = rho_crit_over_h2 * pow(this->cosmo[4],2); + // Now we can compute the present day values of the density parameters + // of the neutrino, the photon and the dark energy (DE) fluid: + this->Omega_nu_0 = Omega_nu(1.0); + this->Omega_gamma_0 = Omega_gamma(1.0); + this->Omega_DE_0 = 1 - (this->cosmo[1] + this->Omega_gamma_0 + this->Omega_nu_0); + + //printf("Cosmological parameters assigned successfully\n"); + // Prepare for spline interpolation of z --> nStep mapping: + t0 = a2t(1.0); // proper time at z = 0 (or equivalently a = 1) + t10 = a2t(1.0/(10+1)); // proper time at z = 10 (or equivalently a = 0.090909...) + Delta_t = (t0-t10)/(nSteps-1); + + z2nStep_spline = gsl_spline_alloc(gsl_interp_cspline, nTable); + // In the next line the spline is actually being computed: + compute_z2nStep_spline(); + + /* Member functions */ + check_parameter_ranges(); + isoprob_tf(); + //convert_to_pkdgrav(); + if(PRINT_FLAG){ + print_cosmo(); + print_cosmo_tf(); + } +} + + +/* CHECK PARAMETER RANGES */ +void Cosmology::check_parameter_ranges(){ + for(int i=0 ; i<8; i++) { + if(cosmo[i] < minima[i] || cosmo[i] > maxima[i] ) { + std::cout << "Parameter " << i << " is outside allowed range:" << std::endl; + std::cout << "cosmo[" << i << "] = " << cosmo[i] << std::endl; + exit(1); + } + if(i==5) i++; + } + // Check w_a separately because values >0.5 are not + // allowed although they are inside the range + if(cosmo[6] < -0.7 || cosmo[6] > 0.5 ) { + std::cout << "Parameter w_a is outside allowed range:" << std::endl; + std::cout << " w_a = " << cosmo[6] << std::endl; + exit(1); + } +} + +/* ISOPROBALISTIC TRANSFORMATION TO UNIT HYPERCUBE */ +void Cosmology::isoprob_tf(){ + for (int i=0; i<8; i++){ + cosmo_tf[i] = 2*(cosmo[i] - minima[i])/(maxima[i] - minima[i]) - 1.0; + } +} + +/* COMPUTE a(t) TABLE FOR GIVEN COSMOLOGY */ +double Cosmology::Omega_matter(double a){ + /* This function computes the matter density parameter *\ + \* in the Universe at scale factor a. */ + return this->cosmo[1] / (a*a*a); +} + +double Cosmology::Omega_gamma(double a){ + /* This function computes the photon density parameter in the Universe at scale factor a */ + + // Present day photon density corresponding to T_gamma (also in SI units): + double rho_gamma_0 = M_PI * M_PI / 15.0 + * pow(kB,4) / (pow(hbar,3)*pow(c,5)) + * pow(Tgamma,4); + + // Scale the photon density and return result + this->Omega_gamma_0 = rho_gamma_0 / this->rho_crit; + return this->Omega_gamma_0 / (a*a*a*a); +} + +double Cosmology::T_gamma(double a){ + return Tgamma/a; +} + +double Cosmology::T_nu(double a){ + return pow(this->Neff/3.0,0.25)*pow(4.0/11.0,1./3.)*Tgamma/a; +} + +double Cosmology::rho_nu_i_integrand(double p, void * params){ + /* This function provides the integrand for the function Cosmology::Omega_nu */ + rho_nu_parameters *rho_nu_pars = reinterpret_cast(params); + + double T_nu = rho_nu_pars->csm_instance->T_nu_0; + double mnui = rho_nu_pars->mnu_i; + double p2 = p*p; + double y = p2 / ( exp(c/kB/T_nu * rho_nu_pars->a * p) + 1 ); + + return y * sqrt( mnui*mnui*c*c*c*c + p2*c*c); +} + +double Cosmology::Omega_nu(double a){ + /* This function computes the neutrino density parameter in the Universe at scale factor a */ + /* REMARK: The assumption of a degenerate neutrino hierarchy is hardcoded. */ + //printf("Entering Omega_nu...\n"); + rho_nu_parameters rho_nu_pars; + gsl_function F; + double rho_nu_i, error; + + //the letter "i" in "rho_nu_i" emphasizes that this variable + //contains the density of only ONE neutrino species + + // Compute the neutrino density of ONE neutrino species of mass m_nu + // (according to eq. 2.69 in my thesis). Remember that this integral is + // an integral over the momentum p, so we start by defining an uper bound + // "pmax" for the integration: + double pmax = 0.004/a * eV/c; + double prefactor = 1.0/(pow(M_PI,2) * pow(hbar,3) * pow(c,2)); + + // Remember that we always assume degenerate neutrino hierarchy. This is + // why the mass of a single neutrino species is a third of Sum m_nu (which + // is stored in this->cosmo[2]. + rho_nu_pars.mnu_i = this->cosmo[2]/3.0 * eV/pow(c,2); + rho_nu_pars.a = a; + rho_nu_pars.csm_instance = this; + + //printf("Setting up GSL integrator...\n"); + F.function = &rho_nu_i_integrand; + F.params = &rho_nu_pars; + gsl_integration_qag(&F, 0.0, pmax, 0.0, + EPSCOSMO, LIMIT, GSL_INTEG_GAUSS61, + gsl_wsp, &rho_nu_i, &error); + + //printf("Omega_nu integration relative error = %.15e\n", error/rho_nu_i); + rho_nu_i *= prefactor; + + //printf("GSL integration complete.\n"); + // NOTICE: The prefactor 3 comes from the fact that we ALWAYS consider three + // equal-mass neutrinos while rho_nu_i computes the density of ONE neutrino species + return 3*rho_nu_i / this->rho_crit; +} + +double Cosmology::Omega_DE(double a){ + /* This function computes the dark energy (DE) density parameter of *\ + |* the Universe. This computation is based on the flatness condition: *| + |* *| + |* Omega_matter + Omega_gamma + Omega_nu + Omega_DE = 1 *| + |* *| + \* The assumption of a flat Universe is thus hardcoded. */ + double w_0 = this->cosmo[5]; + double w_a = this->cosmo[6]; + + // The following is equation (2.67) in my thesis + return this->Omega_DE_0 * pow(a, -3.0 *(1 + w_0 + w_a)) * exp(-3*(1-a)*w_a); +} + +double Cosmology::a2Hubble(double a){ + /* This function computes the Hubble parameter at scale factor a */ + H0 = 100*this->cosmo[4] * kilometer/second/Mpc; + return H0 * sqrt( Cosmology::Omega_matter(a) + + Cosmology::Omega_gamma(a) + + Cosmology::Omega_nu(a) + + Cosmology::Omega_DE(a) + ); +} + +double Cosmology::a2t_integrand(double lna, void *params){ + /* This function provides the integrand for the GSL *\ + \* integration in Cosmology::a2t below. */ + a2t_parameters *a2t_pars = reinterpret_cast(params); + return 1./(a2t_pars->csm_instance->a2Hubble(exp(lna))); +} + +double Cosmology::a2t(double a){ + /* This function converts a scale factor a to a proper time. *\ + |* The integration is solved by GSL and the integrand is *| + \* by Cosmology::a2t_integrand. */ + a2t_parameters a2t_params; + gsl_function F; + double result, error; + a2t_params.csm_instance = this; + F.function = &a2t_integrand; + F.params = &a2t_params; + gsl_integration_qag(&F, -15, log(a), 0.0, + EPSCOSMO, LIMIT, GSL_INTEG_GAUSS61, + this->gsl_wsp, &result, &error); + + //printf("a2t integration relative error = %.15e\n", error/result); + return result; +} + +void Cosmology::compute_z2nStep_spline(){ + /* This function creates and interpolates the array of (z,nStep)-tuples *\ + |* computed in "Cosmology::compute_time_lookup_table". It returns a *| + \* gsl_spline function than can be readily evaluated. */ + + // Step 1: Setup the array + double t_current, z; + double avec[101]={0}; + double frac_nStep[101]={0}; + + double z10 = 10.0; + for(int idx=0; idxnTable; idx++){ + // Loop through redshifts: z \in {10.0, 9.9, ..., 0.1, 0.0} + z = z10 - idx*0.1; + // Convert z to a (remember that GSL interpolator expects + // x-values to be in ascending order) + avec[idx] = 1.0/(z+1.0); + // Convert a to t + t_current = Cosmology::a2t(avec[idx]); + // Convert t to nStep (fractional) + frac_nStep[idx] = (t_current - this->t10)/this->Delta_t; + } + + // Some sanity checks: + assert(abs(frac_nStep[0]) < EPSCOSMO); + assert(abs(frac_nStep[this->nTable-1] - (this->nSteps-1)) < EPSCOSMO); + + // Step 2: Interpolate the array + gsl_spline_init(this->z2nStep_spline, avec, frac_nStep, this->nTable); +} + +/* INTERPOLATE OUTPUT STEP */ +double Cosmology::compute_step_number(double z){ + /* This function evaluates the spline mapping *\ + \* a redshift to a (fractional) output step. */ + if(abs(z) < EPSCOSMO){ + return 100.0; + } + else{ + // Now simply evaluate the precomputed spline + return gsl_spline_eval(this->z2nStep_spline, 1./(z+1.), this->acc); + } +} + +/* PRINT FUNCTIONS */ +void Cosmology::print_cosmo(){ + std::cout << "The current cosmology is defined as:" << std::endl; + std::cout << "\tOmega_b = " << this->cosmo[0] << std::endl; + std::cout << "\tOmega_m = " << this->cosmo[1] << std::endl; + std::cout << "\tSum m_nu = " << this->cosmo[2] << " eV" << std::endl; + std::cout << "\tn_s = " << this->cosmo[3] << std::endl; + std::cout << "\th = " << this->cosmo[4] << std::endl; + std::cout << "\tw_0 = " << this->cosmo[5] << std::endl; + std::cout << "\tw_a = " << this->cosmo[6] << std::endl; + std::cout << "\tA_s = " << this->cosmo[7] << std::endl; + std::cout << std::endl; + std::cout << "Fixed parameters (hardcoded):" << std::endl; + std::cout << "\tT_gamma = " << this->T_gamma_0 << " K" << std::endl; + std::cout << std::endl; + std::cout << "Derived parameters:" << std::endl; + std::cout << "\tT_nu = " << this->T_nu_0 << " K" << std::endl; + std::cout << "\tOmega_nu = " << std::setprecision(12) << this->Omega_nu_0 << std::endl; + std::cout << "\tOmega_gamma = " << this->Omega_gamma_0 << std::endl; + std::cout << "\tOmega_DE = " << this->Omega_DE_0 << std::endl; + std::cout << "\trho_crit = " << this->rho_crit/(Msol/pow(Mpc,3)) << " h^2 M_sol/(Mpc^3)" << std::endl; + std::cout << std::endl; +} + +void Cosmology::print_cosmo_tf(){ + std::cout << "The current cosmology is mapped to:" << std::endl; + std::cout << std::endl; + std::cout << "\ttf(Omega_b) = " << this->cosmo_tf[0] << std::endl; + std::cout << "\ttf(Omega_m) = " << this->cosmo_tf[1] << std::endl; + std::cout << "\ttf(Sum m_nu) = " << this->cosmo_tf[2] << std::endl; + std::cout << "\ttf(n_s) = " << this->cosmo_tf[3] << std::endl; + std::cout << "\ttf(h) = " << this->cosmo_tf[4] << std::endl; + std::cout << "\ttf(w_0) = " << this->cosmo_tf[5] << std::endl; + std::cout << "\ttf(w_a) = " << this->cosmo_tf[6] << std::endl; + std::cout << "\ttf(A_s) = " << this->cosmo_tf[7] << std::endl; + std::cout << std::endl; +} + +/* READ COSMOLOGY FROM FILE */ +void read_from_file(char *filename){} diff --git a/EuclidEmulator2/src/cosmo.h b/EuclidEmulator2/src/cosmo.h new file mode 100644 index 00000000..ef2b0254 --- /dev/null +++ b/EuclidEmulator2/src/cosmo.h @@ -0,0 +1,77 @@ +/* cosmo.h +* ======= +* This file is part of EuclidEmulator2 +* Copyright (c) 2020 Mischa Knabenhans +* +* EuclidEmulator2 is free software: you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* EuclidEmulator2 is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*/ + +#ifndef COSMOLOGY_H +#define COSMOLOGY_H +#include +#include + +class Cosmology{ + public: + double cosmo[8], cosmo_tf[8]; + double Omega_gamma_0, Omega_nu_0, Omega_DE_0, rho_crit, T_gamma_0, T_nu_0; + + /* Ranges for cosmological parameters */ + const double minima[8] = {0.04, 0.24, 0.00, 0.92, 0.61, -1.3, -0.7, 1.7e-9}; + const double maxima[8] = {0.06, 0.40, 0.15, 1.00, 0.73, -0.7, 0.7, 2.5e-9}; + + /* Member functions */ + Cosmology(double Omega_b, double Omega_m, double Sum_m_nu, double n_s, double h, double w_0, double w_a, double A_s); + //~Cosmology(); + void read_from_file(char *filename); + void print_cosmo(); + void print_cosmo_tf(); + double compute_step_number(double z); + static double rho_nu_i_integrand(double p, void * params); + static double a2t_integrand(double a, void * params); + + private: + /* Private members */ + const int nSteps, nTable; + double t0, t10, Delta_t, Neff, H0; + + typedef struct { + double mnu_i; + double a; + Cosmology * csm_instance; + } rho_nu_parameters; + typedef struct { + Cosmology * csm_instance; + } a2t_parameters; + + gsl_integration_workspace *gsl_wsp; + gsl_interp_accel *acc; + gsl_spline *z2nStep_spline; + + /* Private member functions*/ + void isoprob_tf(); + void check_parameter_ranges(); + void compute_z2nStep_spline(); + + double Hubble(double a); + double Omega_matter(double a); + double Omega_gamma(double a); + double Omega_nu(double a); + double Omega_DE(double a); + double T_gamma(double a); + double T_nu(double a); + double a2t(double a); + double a2Hubble(double a); +}; +#endif diff --git a/EuclidEmulator2/src/ee2_bindata.dat b/EuclidEmulator2/src/ee2_bindata.dat new file mode 100644 index 00000000..cc432cb5 Binary files /dev/null and b/EuclidEmulator2/src/ee2_bindata.dat differ diff --git a/EuclidEmulator2/src/emulator.cxx b/EuclidEmulator2/src/emulator.cxx new file mode 100644 index 00000000..4ef1eed1 --- /dev/null +++ b/EuclidEmulator2/src/emulator.cxx @@ -0,0 +1,248 @@ +/* emulator.cxx +* ========= +* This file is part of EuclidEmulator2 +* Copyright (c) 2020 Mischa Knabenhans +* +* EuclidEmulator2 is free software: you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* EuclidEmulator2 is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*/ + +#include +#include +#include +#include // struct stat and fstat() function +#include // mmap() function +#include // declaration of O_RDONLY +#include +#include +#include +#include +#include +#include "emulator.h" + +#include +#include +#include + +using namespace std; + +/* CONSTRUCTOR */ +EuclidEmulator::EuclidEmulator(): + lmax(16), + nz(101), + nk(613), + n_coeffs{53, 53, 117, 117, 53, \ + 117, 117, 117, 117, 521, \ + 117, 1539, 173, 457} + { + + read_in_ee2_data_file(); + + pc_2d_interp(); + +} + +/* DESTRUCTOR */ +EuclidEmulator::~EuclidEmulator(){ + for(int i=0; i<15; i++) { + gsl_spline2d_free(logklogz2pc_spline[i]); + } +} + +/* FUNCTION TO READ IN THE DATA FILE */ +void EuclidEmulator::read_in_ee2_data_file(){ + /// VARIABLE DECLARATIONS /// + off_t size; + struct stat s; + double *data; + double *kptr; + int i, ik, iz, idx = 0; + + + for(iz = 0; iz < nz; iz++){ + for(ik = 0; ik < nk; ik++){ + this->Bvec[iz][ik] = 0.0; // initialize the resulting nlc vector + } + } + + // ==== LOAD EUCLIDEMULATOR2 DATA FILE ==== // + int fp = open(PATH_TO_EE2_DATA_FILE, O_RDONLY); + if(!fp) { + cerr << "Unable to open ./ee2_bindata.dat\n"; + exit(1); + } + + // Get the size of the file. // + int status = fstat(fp, & s); + size = s.st_size; + + // Map the file into memory // + data = (double *) mmap (0, size, PROT_READ, MAP_PRIVATE, fp, 0); + + // Reading in principal components // + for (i=0;i<15;i++) { + this->pc[i] = &data[idx]; // pc[0] = PCA mean + idx += nk*nz; + } + // Reading in PCE coefficients // + for (i=0;i<14;i++) { + this->pce_coeffs[i] = &data[idx]; + idx += n_coeffs[i]; + } + + // Reading in PCE multi-indices // + for (i=0;i<14;i++) { + this->pce_multiindex[i] = &data[idx]; + idx += 8*n_coeffs[i]; + } + // vector of k modes + kptr = &data[idx]; + + for (i=0;ikvec[i] = kptr[i]; + } + idx += nk; + // Check if all data has been read in properly + assert(idx == size/sizeof(double)); + +} + +/* 2D INTERPOLATION OF PRINCIPAL COMPONENTS */ +void EuclidEmulator::pc_2d_interp(){ + double logk[nk]; + double stp[nz]; + int i; + + for (i=0; ikvec[i]); + for (i=nz-1; i>=0; i--) stp[i] = i; + for (int i=0; i<15; i++){ + logk2pc_acc[i] = gsl_interp_accel_alloc(); + logz2pc_acc[i] = gsl_interp_accel_alloc(); + logklogz2pc_spline[i] = gsl_spline2d_alloc(gsl_interp2d_bicubic, nk, nz); + gsl_spline2d_init(logklogz2pc_spline[i], logk, stp, pc[i], nk, nz); + } +} + +/* COMPUTE NLC */ +//void EuclidEmulator::compute_nlc(Cosmology csm, double* redshift, int n_redshift, double* kmodes, int n_kmodes){ +void EuclidEmulator::compute_nlc(Cosmology csm, vector redshift, int n_redshift){ + double pc_weight; + double basisfunc; + double stp_no[n_redshift]; + + //printf("There are %d redshifts to compute.\n", n_redshift); + + // Convert all redshifts into step numbers + // As we are looping through all redshifts anyway, we can just + // as well use the same loop to declare Bvec[iz] + for(int iz=0; iz 10.0 || redshift.at(iz) < 0.0){ + std::cout << "ERROR: EuclidEmulator2 accepts only redshifts in the interval [0.0, 10.0]\n" \ + << "The current redshift z = " << redshift.at(iz) << " is therefore ignored." << std::endl; + continue; + } + stp_no[iz] = csm.compute_step_number(redshift.at(iz)); + //printf("nStep(%.2f) = %.4f\n", redshift.at(iz), stp_no[iz]); + } + //printf("Redshifts mapped to nStep\n"); + + // Pre-compute all Legendre polynomials up to order lmax + for (int ipar=0; ipar < 8; ipar++){ + univ_legendre[ipar] = new double[lmax+1]; + gsl_sf_legendre_Pl_array(lmax, csm.cosmo_tf[ipar], univ_legendre[ipar]); + for (int l=0; l<=lmax; l++){ + univ_legendre[ipar][l] *= sqrt(2.0*l + 1.0); //normalization + } + } + //printf("Legendre polynomials computed\n"); + + // Initialize with PCA mean + for(int iz=0; izkvec[ik]), stp_no[iz], logk2pc_acc[0], logz2pc_acc[0]); + } + //printf("B(k_max, z=%.2f) = %.2f\n", redshift.at(iz), Bvec[iz][nk-1]); + } + //printf("PCA initialized\n"); + + // Loop over principal components + for(int ipc=1; ipc<15; ipc++){ + pc_weight = 0.0; + // assemble PCE to get the PCA weight according + // to inner sum of eq. 27 in EE2 paper + for(int ic=0; ic nStep = %.3f\n", iz, redshift.at(iz), stp_no[iz]); + for(int ik=0; ikkvec[ik]), stp_no[iz], logk2pc_acc[ipc], logz2pc_acc[ipc])); + } + } + } + //printf("PCA assembled\n"); +} + +/* WRITE NLC TO FILE */ +void EuclidEmulator::write_nlc2file(const string& filename, vector zvec, int n_redshift){ + ofstream fp_out (filename); + // Writing an informative header line + string header = "#k [h/Mpc]"; + for(int iz=0; izkvec[ik]); + for(int iz=0; iz. +*/ + +#ifndef EMULATOR_H +#define EMULATOR_H + +#ifndef PATH_TO_EE2_DATA_FILE +#define PATH_TO_EE2_DATA_FILE "/home/users/chto/code/cosmolike_core/EuclidEmulator2/ee2_bindata.dat" +#endif + +#include +#include +#include +#include +#include "cosmo.h" + +using namespace std; + +class EuclidEmulator{ + private: + /* Private members */ + const int nz; // number of redshifts in the training data + const int nk; // number of k modes in training data + const int n_coeffs[14]; + const int lmax; + + gsl_interp_accel * logk2pc_acc[15]; + gsl_interp_accel * logz2pc_acc[15]; + gsl_spline2d * logklogz2pc_spline[15]; + + /* Private data containers */ + double * pc[15]; // principal components + double pc_weights[14]; // PCA weights + double * pce_coeffs[14]; // PCE coefficients + double * pce_multiindex[14]; // PCE multi-indices + double * univ_legendre[8]; // univariate legendre polynomials + double * pce_basisfuncs; // multivariate legendre polynomials + + /* Private member functions */ + void read_in_ee2_data_file(); + void pc_2d_interp(); + void print_info(); + + public: + /* Public members */ + double kvec[613]; + double Bvec[101][613]; + + /* Public member functions */ + EuclidEmulator(); + ~EuclidEmulator(); + void compute_nlc(Cosmology csm, vector redshift, int n_redshift); + void write_nlc2file(const string &filename, vector zvec, int n_redshift); +}; + +#endif diff --git a/EuclidEmulator2/src/emulator_c_connector.cpp b/EuclidEmulator2/src/emulator_c_connector.cpp new file mode 100644 index 00000000..47123b49 --- /dev/null +++ b/EuclidEmulator2/src/emulator_c_connector.cpp @@ -0,0 +1,39 @@ +#include + +#include "emulator_c_connector.h" +#include "emulator.h" +#include "cosmo.h" + +#ifdef __cplusplus +extern "C" { +#endif + +// Inside this "extern C" block, I can implement functions in C++, which will externally +// appear as C functions (which means that the function IDs will be their names, unlike +// the regular C++ behavior, which allows defining multiple functions with the same name +// (overloading) and hence uses function signature hashing to enforce unique IDs), + + +static EuclidEmulator *EuclidEmulator_instance = NULL; + +void lazyEuclidEmulator() { + if (EuclidEmulator_instance == NULL) { + EuclidEmulator_instance = new EuclidEmulator(); + } +} + +void EuclidEmulator_compute_nlc(double Omega_b, double Omega_m, double Sum_m_nu, double n_s, double h, double w_0, double w_a, double A_s, double* redshift, int n_redshift, double* kout, double pkout[101][613]) { + lazyEuclidEmulator(); + Cosmology csm = Cosmology(Omega_b, Omega_m, Sum_m_nu, n_s, h, w_0, w_a, A_s); + EuclidEmulator_instance->compute_nlc(csm, vector(redshift, redshift+n_redshift), n_redshift); + int i=0, j=0; + for(i=0; i<603; ++i){ + kout[i] = EuclidEmulator_instance->kvec[i]; + for(j=0; j<101; ++j) + pkout[j][i] = pow(10.0,EuclidEmulator_instance->Bvec[j][i]); + } +} + +#ifdef __cplusplus +} +#endif diff --git a/EuclidEmulator2/src/emulator_c_connector.h b/EuclidEmulator2/src/emulator_c_connector.h new file mode 100644 index 00000000..dd036ad2 --- /dev/null +++ b/EuclidEmulator2/src/emulator_c_connector.h @@ -0,0 +1,14 @@ +#ifndef EMULATOR_C_CONNECTOR_H +#define EMULATOR_C_CONNECTOR_H + +#ifdef __cplusplus +extern "C" { +#endif + + void EuclidEmulator_compute_nlc(double Omega_b, double Omega_m, double Sum_m_nu, double n_s, double h, double w_0, double w_a, double A_s, double* redshift, int n_redshift, double *, double[101][613]); + +#ifdef __cplusplus +} +#endif +#endif + diff --git a/EuclidEmulator2/src/euclidemu2.cpp b/EuclidEmulator2/src/euclidemu2.cpp new file mode 100644 index 00000000..f4691af7 --- /dev/null +++ b/EuclidEmulator2/src/euclidemu2.cpp @@ -0,0 +1,13262 @@ +/* Generated by Cython 0.29.21 */ + +/* BEGIN: Cython Metadata +{ + "distutils": { + "depends": [ + "src/cosmo.h", + "src/emulator.h" + ], + "extra_compile_args": [ + "-std=c++11" + ], + "extra_link_args": [ + "-L/usr/local/lib" + ], + "include_dirs": [ + "src", + "/usr/local/include", + "../src/" + ], + "language": "c++", + "libraries": [ + "gsl", + "gslcblas" + ], + "name": "euclidemu2", + "sources": [ + "src/euclidemu2.pyx", + "src/cosmo.cxx", + "src/emulator.cxx" + ] + }, + "module_name": "euclidemu2" +} +END: Cython Metadata */ + +#define PY_SSIZE_T_CLEAN +#include "Python.h" +#ifndef Py_PYTHON_H + #error Python headers needed to compile C extensions, please install development version of Python. +#elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000) + #error Cython requires Python 2.6+ or Python 3.3+. +#else +#define CYTHON_ABI "0_29_21" +#define CYTHON_HEX_VERSION 0x001D15F0 +#define CYTHON_FUTURE_DIVISION 1 +#include +#ifndef offsetof + #define offsetof(type, member) ( (size_t) & ((type*)0) -> member ) +#endif +#if !defined(WIN32) && !defined(MS_WINDOWS) + #ifndef __stdcall + #define __stdcall + #endif + #ifndef __cdecl + #define __cdecl + #endif + #ifndef __fastcall + #define __fastcall + #endif +#endif +#ifndef DL_IMPORT + #define DL_IMPORT(t) t +#endif +#ifndef DL_EXPORT + #define DL_EXPORT(t) t +#endif +#define __PYX_COMMA , +#ifndef HAVE_LONG_LONG + #if PY_VERSION_HEX >= 0x02070000 + #define HAVE_LONG_LONG + #endif +#endif +#ifndef PY_LONG_LONG + #define PY_LONG_LONG LONG_LONG +#endif +#ifndef Py_HUGE_VAL + #define Py_HUGE_VAL HUGE_VAL +#endif +#ifdef PYPY_VERSION + #define CYTHON_COMPILING_IN_PYPY 1 + #define CYTHON_COMPILING_IN_PYSTON 0 + #define CYTHON_COMPILING_IN_CPYTHON 0 + #undef CYTHON_USE_TYPE_SLOTS + #define CYTHON_USE_TYPE_SLOTS 0 + #undef CYTHON_USE_PYTYPE_LOOKUP + #define CYTHON_USE_PYTYPE_LOOKUP 0 + #if PY_VERSION_HEX < 0x03050000 + #undef CYTHON_USE_ASYNC_SLOTS + #define CYTHON_USE_ASYNC_SLOTS 0 + #elif !defined(CYTHON_USE_ASYNC_SLOTS) + #define CYTHON_USE_ASYNC_SLOTS 1 + #endif + #undef CYTHON_USE_PYLIST_INTERNALS + #define CYTHON_USE_PYLIST_INTERNALS 0 + #undef CYTHON_USE_UNICODE_INTERNALS + #define CYTHON_USE_UNICODE_INTERNALS 0 + #undef CYTHON_USE_UNICODE_WRITER + #define CYTHON_USE_UNICODE_WRITER 0 + #undef CYTHON_USE_PYLONG_INTERNALS + #define CYTHON_USE_PYLONG_INTERNALS 0 + #undef CYTHON_AVOID_BORROWED_REFS + #define CYTHON_AVOID_BORROWED_REFS 1 + #undef CYTHON_ASSUME_SAFE_MACROS + #define CYTHON_ASSUME_SAFE_MACROS 0 + #undef CYTHON_UNPACK_METHODS + #define CYTHON_UNPACK_METHODS 0 + #undef CYTHON_FAST_THREAD_STATE + #define CYTHON_FAST_THREAD_STATE 0 + #undef CYTHON_FAST_PYCALL + #define CYTHON_FAST_PYCALL 0 + #undef CYTHON_PEP489_MULTI_PHASE_INIT + #define CYTHON_PEP489_MULTI_PHASE_INIT 0 + #undef CYTHON_USE_TP_FINALIZE + #define CYTHON_USE_TP_FINALIZE 0 + #undef CYTHON_USE_DICT_VERSIONS + #define CYTHON_USE_DICT_VERSIONS 0 + #undef CYTHON_USE_EXC_INFO_STACK + #define CYTHON_USE_EXC_INFO_STACK 0 +#elif defined(PYSTON_VERSION) + #define CYTHON_COMPILING_IN_PYPY 0 + #define CYTHON_COMPILING_IN_PYSTON 1 + #define CYTHON_COMPILING_IN_CPYTHON 0 + #ifndef CYTHON_USE_TYPE_SLOTS + #define CYTHON_USE_TYPE_SLOTS 1 + #endif + #undef CYTHON_USE_PYTYPE_LOOKUP + #define CYTHON_USE_PYTYPE_LOOKUP 0 + #undef CYTHON_USE_ASYNC_SLOTS + #define CYTHON_USE_ASYNC_SLOTS 0 + #undef CYTHON_USE_PYLIST_INTERNALS + #define CYTHON_USE_PYLIST_INTERNALS 0 + #ifndef CYTHON_USE_UNICODE_INTERNALS + #define CYTHON_USE_UNICODE_INTERNALS 1 + #endif + #undef CYTHON_USE_UNICODE_WRITER + #define CYTHON_USE_UNICODE_WRITER 0 + #undef CYTHON_USE_PYLONG_INTERNALS + #define CYTHON_USE_PYLONG_INTERNALS 0 + #ifndef CYTHON_AVOID_BORROWED_REFS + #define CYTHON_AVOID_BORROWED_REFS 0 + #endif + #ifndef CYTHON_ASSUME_SAFE_MACROS + #define CYTHON_ASSUME_SAFE_MACROS 1 + #endif + #ifndef CYTHON_UNPACK_METHODS + #define CYTHON_UNPACK_METHODS 1 + #endif + #undef CYTHON_FAST_THREAD_STATE + #define CYTHON_FAST_THREAD_STATE 0 + #undef CYTHON_FAST_PYCALL + #define CYTHON_FAST_PYCALL 0 + #undef CYTHON_PEP489_MULTI_PHASE_INIT + #define CYTHON_PEP489_MULTI_PHASE_INIT 0 + #undef CYTHON_USE_TP_FINALIZE + #define CYTHON_USE_TP_FINALIZE 0 + #undef CYTHON_USE_DICT_VERSIONS + #define CYTHON_USE_DICT_VERSIONS 0 + #undef CYTHON_USE_EXC_INFO_STACK + #define CYTHON_USE_EXC_INFO_STACK 0 +#else + #define CYTHON_COMPILING_IN_PYPY 0 + #define CYTHON_COMPILING_IN_PYSTON 0 + #define CYTHON_COMPILING_IN_CPYTHON 1 + #ifndef CYTHON_USE_TYPE_SLOTS + #define CYTHON_USE_TYPE_SLOTS 1 + #endif + #if PY_VERSION_HEX < 0x02070000 + #undef CYTHON_USE_PYTYPE_LOOKUP + #define CYTHON_USE_PYTYPE_LOOKUP 0 + #elif !defined(CYTHON_USE_PYTYPE_LOOKUP) + #define CYTHON_USE_PYTYPE_LOOKUP 1 + #endif + #if PY_MAJOR_VERSION < 3 + #undef CYTHON_USE_ASYNC_SLOTS + #define CYTHON_USE_ASYNC_SLOTS 0 + #elif !defined(CYTHON_USE_ASYNC_SLOTS) + #define CYTHON_USE_ASYNC_SLOTS 1 + #endif + #if PY_VERSION_HEX < 0x02070000 + #undef CYTHON_USE_PYLONG_INTERNALS + #define CYTHON_USE_PYLONG_INTERNALS 0 + #elif !defined(CYTHON_USE_PYLONG_INTERNALS) + #define CYTHON_USE_PYLONG_INTERNALS 1 + #endif + #ifndef CYTHON_USE_PYLIST_INTERNALS + #define CYTHON_USE_PYLIST_INTERNALS 1 + #endif + #ifndef CYTHON_USE_UNICODE_INTERNALS + #define CYTHON_USE_UNICODE_INTERNALS 1 + #endif + #if PY_VERSION_HEX < 0x030300F0 + #undef CYTHON_USE_UNICODE_WRITER + #define CYTHON_USE_UNICODE_WRITER 0 + #elif !defined(CYTHON_USE_UNICODE_WRITER) + #define CYTHON_USE_UNICODE_WRITER 1 + #endif + #ifndef CYTHON_AVOID_BORROWED_REFS + #define CYTHON_AVOID_BORROWED_REFS 0 + #endif + #ifndef CYTHON_ASSUME_SAFE_MACROS + #define CYTHON_ASSUME_SAFE_MACROS 1 + #endif + #ifndef CYTHON_UNPACK_METHODS + #define CYTHON_UNPACK_METHODS 1 + #endif + #ifndef CYTHON_FAST_THREAD_STATE + #define CYTHON_FAST_THREAD_STATE 1 + #endif + #ifndef CYTHON_FAST_PYCALL + #define CYTHON_FAST_PYCALL 1 + #endif + #ifndef CYTHON_PEP489_MULTI_PHASE_INIT + #define CYTHON_PEP489_MULTI_PHASE_INIT (PY_VERSION_HEX >= 0x03050000) + #endif + #ifndef CYTHON_USE_TP_FINALIZE + #define CYTHON_USE_TP_FINALIZE (PY_VERSION_HEX >= 0x030400a1) + #endif + #ifndef CYTHON_USE_DICT_VERSIONS + #define CYTHON_USE_DICT_VERSIONS (PY_VERSION_HEX >= 0x030600B1) + #endif + #ifndef CYTHON_USE_EXC_INFO_STACK + #define CYTHON_USE_EXC_INFO_STACK (PY_VERSION_HEX >= 0x030700A3) + #endif +#endif +#if !defined(CYTHON_FAST_PYCCALL) +#define CYTHON_FAST_PYCCALL (CYTHON_FAST_PYCALL && PY_VERSION_HEX >= 0x030600B1) +#endif +#if CYTHON_USE_PYLONG_INTERNALS + #include "longintrepr.h" + #undef SHIFT + #undef BASE + #undef MASK + #ifdef SIZEOF_VOID_P + enum { __pyx_check_sizeof_voidp = 1 / (int)(SIZEOF_VOID_P == sizeof(void*)) }; + #endif +#endif +#ifndef __has_attribute + #define __has_attribute(x) 0 +#endif +#ifndef __has_cpp_attribute + #define __has_cpp_attribute(x) 0 +#endif +#ifndef CYTHON_RESTRICT + #if defined(__GNUC__) + #define CYTHON_RESTRICT __restrict__ + #elif defined(_MSC_VER) && _MSC_VER >= 1400 + #define CYTHON_RESTRICT __restrict + #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L + #define CYTHON_RESTRICT restrict + #else + #define CYTHON_RESTRICT + #endif +#endif +#ifndef CYTHON_UNUSED +# if defined(__GNUC__) +# if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)) +# define CYTHON_UNUSED __attribute__ ((__unused__)) +# else +# define CYTHON_UNUSED +# endif +# elif defined(__ICC) || (defined(__INTEL_COMPILER) && !defined(_MSC_VER)) +# define CYTHON_UNUSED __attribute__ ((__unused__)) +# else +# define CYTHON_UNUSED +# endif +#endif +#ifndef CYTHON_MAYBE_UNUSED_VAR +# if defined(__cplusplus) + template void CYTHON_MAYBE_UNUSED_VAR( const T& ) { } +# else +# define CYTHON_MAYBE_UNUSED_VAR(x) (void)(x) +# endif +#endif +#ifndef CYTHON_NCP_UNUSED +# if CYTHON_COMPILING_IN_CPYTHON +# define CYTHON_NCP_UNUSED +# else +# define CYTHON_NCP_UNUSED CYTHON_UNUSED +# endif +#endif +#define __Pyx_void_to_None(void_result) ((void)(void_result), Py_INCREF(Py_None), Py_None) +#ifdef _MSC_VER + #ifndef _MSC_STDINT_H_ + #if _MSC_VER < 1300 + typedef unsigned char uint8_t; + typedef unsigned int uint32_t; + #else + typedef unsigned __int8 uint8_t; + typedef unsigned __int32 uint32_t; + #endif + #endif +#else + #include +#endif +#ifndef CYTHON_FALLTHROUGH + #if defined(__cplusplus) && __cplusplus >= 201103L + #if __has_cpp_attribute(fallthrough) + #define CYTHON_FALLTHROUGH [[fallthrough]] + #elif __has_cpp_attribute(clang::fallthrough) + #define CYTHON_FALLTHROUGH [[clang::fallthrough]] + #elif __has_cpp_attribute(gnu::fallthrough) + #define CYTHON_FALLTHROUGH [[gnu::fallthrough]] + #endif + #endif + #ifndef CYTHON_FALLTHROUGH + #if __has_attribute(fallthrough) + #define CYTHON_FALLTHROUGH __attribute__((fallthrough)) + #else + #define CYTHON_FALLTHROUGH + #endif + #endif + #if defined(__clang__ ) && defined(__apple_build_version__) + #if __apple_build_version__ < 7000000 + #undef CYTHON_FALLTHROUGH + #define CYTHON_FALLTHROUGH + #endif + #endif +#endif + +#ifndef __cplusplus + #error "Cython files generated with the C++ option must be compiled with a C++ compiler." +#endif +#ifndef CYTHON_INLINE + #if defined(__clang__) + #define CYTHON_INLINE __inline__ __attribute__ ((__unused__)) + #else + #define CYTHON_INLINE inline + #endif +#endif +template +void __Pyx_call_destructor(T& x) { + x.~T(); +} +template +class __Pyx_FakeReference { + public: + __Pyx_FakeReference() : ptr(NULL) { } + __Pyx_FakeReference(const T& ref) : ptr(const_cast(&ref)) { } + T *operator->() { return ptr; } + T *operator&() { return ptr; } + operator T&() { return *ptr; } + template bool operator ==(U other) { return *ptr == other; } + template bool operator !=(U other) { return *ptr != other; } + private: + T *ptr; +}; + +#if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x02070600 && !defined(Py_OptimizeFlag) + #define Py_OptimizeFlag 0 +#endif +#define __PYX_BUILD_PY_SSIZE_T "n" +#define CYTHON_FORMAT_SSIZE_T "z" +#if PY_MAJOR_VERSION < 3 + #define __Pyx_BUILTIN_MODULE_NAME "__builtin__" + #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ + PyCode_New(a+k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) + #define __Pyx_DefaultClassType PyClass_Type +#else + #define __Pyx_BUILTIN_MODULE_NAME "builtins" +#if PY_VERSION_HEX >= 0x030800A4 && PY_VERSION_HEX < 0x030800B2 + #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ + PyCode_New(a, 0, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) +#else + #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ + PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) +#endif + #define __Pyx_DefaultClassType PyType_Type +#endif +#ifndef Py_TPFLAGS_CHECKTYPES + #define Py_TPFLAGS_CHECKTYPES 0 +#endif +#ifndef Py_TPFLAGS_HAVE_INDEX + #define Py_TPFLAGS_HAVE_INDEX 0 +#endif +#ifndef Py_TPFLAGS_HAVE_NEWBUFFER + #define Py_TPFLAGS_HAVE_NEWBUFFER 0 +#endif +#ifndef Py_TPFLAGS_HAVE_FINALIZE + #define Py_TPFLAGS_HAVE_FINALIZE 0 +#endif +#ifndef METH_STACKLESS + #define METH_STACKLESS 0 +#endif +#if PY_VERSION_HEX <= 0x030700A3 || !defined(METH_FASTCALL) + #ifndef METH_FASTCALL + #define METH_FASTCALL 0x80 + #endif + typedef PyObject *(*__Pyx_PyCFunctionFast) (PyObject *self, PyObject *const *args, Py_ssize_t nargs); + typedef PyObject *(*__Pyx_PyCFunctionFastWithKeywords) (PyObject *self, PyObject *const *args, + Py_ssize_t nargs, PyObject *kwnames); +#else + #define __Pyx_PyCFunctionFast _PyCFunctionFast + #define __Pyx_PyCFunctionFastWithKeywords _PyCFunctionFastWithKeywords +#endif +#if CYTHON_FAST_PYCCALL +#define __Pyx_PyFastCFunction_Check(func)\ + ((PyCFunction_Check(func) && (METH_FASTCALL == (PyCFunction_GET_FLAGS(func) & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS | METH_STACKLESS))))) +#else +#define __Pyx_PyFastCFunction_Check(func) 0 +#endif +#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Malloc) + #define PyObject_Malloc(s) PyMem_Malloc(s) + #define PyObject_Free(p) PyMem_Free(p) + #define PyObject_Realloc(p) PyMem_Realloc(p) +#endif +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030400A1 + #define PyMem_RawMalloc(n) PyMem_Malloc(n) + #define PyMem_RawRealloc(p, n) PyMem_Realloc(p, n) + #define PyMem_RawFree(p) PyMem_Free(p) +#endif +#if CYTHON_COMPILING_IN_PYSTON + #define __Pyx_PyCode_HasFreeVars(co) PyCode_HasFreeVars(co) + #define __Pyx_PyFrame_SetLineNumber(frame, lineno) PyFrame_SetLineNumber(frame, lineno) +#else + #define __Pyx_PyCode_HasFreeVars(co) (PyCode_GetNumFree(co) > 0) + #define __Pyx_PyFrame_SetLineNumber(frame, lineno) (frame)->f_lineno = (lineno) +#endif +#if !CYTHON_FAST_THREAD_STATE || PY_VERSION_HEX < 0x02070000 + #define __Pyx_PyThreadState_Current PyThreadState_GET() +#elif PY_VERSION_HEX >= 0x03060000 + #define __Pyx_PyThreadState_Current _PyThreadState_UncheckedGet() +#elif PY_VERSION_HEX >= 0x03000000 + #define __Pyx_PyThreadState_Current PyThreadState_GET() +#else + #define __Pyx_PyThreadState_Current _PyThreadState_Current +#endif +#if PY_VERSION_HEX < 0x030700A2 && !defined(PyThread_tss_create) && !defined(Py_tss_NEEDS_INIT) +#include "pythread.h" +#define Py_tss_NEEDS_INIT 0 +typedef int Py_tss_t; +static CYTHON_INLINE int PyThread_tss_create(Py_tss_t *key) { + *key = PyThread_create_key(); + return 0; +} +static CYTHON_INLINE Py_tss_t * PyThread_tss_alloc(void) { + Py_tss_t *key = (Py_tss_t *)PyObject_Malloc(sizeof(Py_tss_t)); + *key = Py_tss_NEEDS_INIT; + return key; +} +static CYTHON_INLINE void PyThread_tss_free(Py_tss_t *key) { + PyObject_Free(key); +} +static CYTHON_INLINE int PyThread_tss_is_created(Py_tss_t *key) { + return *key != Py_tss_NEEDS_INIT; +} +static CYTHON_INLINE void PyThread_tss_delete(Py_tss_t *key) { + PyThread_delete_key(*key); + *key = Py_tss_NEEDS_INIT; +} +static CYTHON_INLINE int PyThread_tss_set(Py_tss_t *key, void *value) { + return PyThread_set_key_value(*key, value); +} +static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) { + return PyThread_get_key_value(*key); +} +#endif +#if CYTHON_COMPILING_IN_CPYTHON || defined(_PyDict_NewPresized) +#define __Pyx_PyDict_NewPresized(n) ((n <= 8) ? PyDict_New() : _PyDict_NewPresized(n)) +#else +#define __Pyx_PyDict_NewPresized(n) PyDict_New() +#endif +#if PY_MAJOR_VERSION >= 3 || CYTHON_FUTURE_DIVISION + #define __Pyx_PyNumber_Divide(x,y) PyNumber_TrueDivide(x,y) + #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceTrueDivide(x,y) +#else + #define __Pyx_PyNumber_Divide(x,y) PyNumber_Divide(x,y) + #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceDivide(x,y) +#endif +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1 && CYTHON_USE_UNICODE_INTERNALS +#define __Pyx_PyDict_GetItemStr(dict, name) _PyDict_GetItem_KnownHash(dict, name, ((PyASCIIObject *) name)->hash) +#else +#define __Pyx_PyDict_GetItemStr(dict, name) PyDict_GetItem(dict, name) +#endif +#if PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND) + #define CYTHON_PEP393_ENABLED 1 + #define __Pyx_PyUnicode_READY(op) (likely(PyUnicode_IS_READY(op)) ?\ + 0 : _PyUnicode_Ready((PyObject *)(op))) + #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_LENGTH(u) + #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i) + #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) PyUnicode_MAX_CHAR_VALUE(u) + #define __Pyx_PyUnicode_KIND(u) PyUnicode_KIND(u) + #define __Pyx_PyUnicode_DATA(u) PyUnicode_DATA(u) + #define __Pyx_PyUnicode_READ(k, d, i) PyUnicode_READ(k, d, i) + #define __Pyx_PyUnicode_WRITE(k, d, i, ch) PyUnicode_WRITE(k, d, i, ch) + #if defined(PyUnicode_IS_READY) && defined(PyUnicode_GET_SIZE) + #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : PyUnicode_GET_SIZE(u))) + #else + #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GET_LENGTH(u)) + #endif +#else + #define CYTHON_PEP393_ENABLED 0 + #define PyUnicode_1BYTE_KIND 1 + #define PyUnicode_2BYTE_KIND 2 + #define PyUnicode_4BYTE_KIND 4 + #define __Pyx_PyUnicode_READY(op) (0) + #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_SIZE(u) + #define __Pyx_PyUnicode_READ_CHAR(u, i) ((Py_UCS4)(PyUnicode_AS_UNICODE(u)[i])) + #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) ((sizeof(Py_UNICODE) == 2) ? 65535 : 1114111) + #define __Pyx_PyUnicode_KIND(u) (sizeof(Py_UNICODE)) + #define __Pyx_PyUnicode_DATA(u) ((void*)PyUnicode_AS_UNICODE(u)) + #define __Pyx_PyUnicode_READ(k, d, i) ((void)(k), (Py_UCS4)(((Py_UNICODE*)d)[i])) + #define __Pyx_PyUnicode_WRITE(k, d, i, ch) (((void)(k)), ((Py_UNICODE*)d)[i] = ch) + #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GET_SIZE(u)) +#endif +#if CYTHON_COMPILING_IN_PYPY + #define __Pyx_PyUnicode_Concat(a, b) PyNumber_Add(a, b) + #define __Pyx_PyUnicode_ConcatSafe(a, b) PyNumber_Add(a, b) +#else + #define __Pyx_PyUnicode_Concat(a, b) PyUnicode_Concat(a, b) + #define __Pyx_PyUnicode_ConcatSafe(a, b) ((unlikely((a) == Py_None) || unlikely((b) == Py_None)) ?\ + PyNumber_Add(a, b) : __Pyx_PyUnicode_Concat(a, b)) +#endif +#if CYTHON_COMPILING_IN_PYPY && !defined(PyUnicode_Contains) + #define PyUnicode_Contains(u, s) PySequence_Contains(u, s) +#endif +#if CYTHON_COMPILING_IN_PYPY && !defined(PyByteArray_Check) + #define PyByteArray_Check(obj) PyObject_TypeCheck(obj, &PyByteArray_Type) +#endif +#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Format) + #define PyObject_Format(obj, fmt) PyObject_CallMethod(obj, "__format__", "O", fmt) +#endif +#define __Pyx_PyString_FormatSafe(a, b) ((unlikely((a) == Py_None || (PyString_Check(b) && !PyString_CheckExact(b)))) ? PyNumber_Remainder(a, b) : __Pyx_PyString_Format(a, b)) +#define __Pyx_PyUnicode_FormatSafe(a, b) ((unlikely((a) == Py_None || (PyUnicode_Check(b) && !PyUnicode_CheckExact(b)))) ? PyNumber_Remainder(a, b) : PyUnicode_Format(a, b)) +#if PY_MAJOR_VERSION >= 3 + #define __Pyx_PyString_Format(a, b) PyUnicode_Format(a, b) +#else + #define __Pyx_PyString_Format(a, b) PyString_Format(a, b) +#endif +#if PY_MAJOR_VERSION < 3 && !defined(PyObject_ASCII) + #define PyObject_ASCII(o) PyObject_Repr(o) +#endif +#if PY_MAJOR_VERSION >= 3 + #define PyBaseString_Type PyUnicode_Type + #define PyStringObject PyUnicodeObject + #define PyString_Type PyUnicode_Type + #define PyString_Check PyUnicode_Check + #define PyString_CheckExact PyUnicode_CheckExact +#ifndef PyObject_Unicode + #define PyObject_Unicode PyObject_Str +#endif +#endif +#if PY_MAJOR_VERSION >= 3 + #define __Pyx_PyBaseString_Check(obj) PyUnicode_Check(obj) + #define __Pyx_PyBaseString_CheckExact(obj) PyUnicode_CheckExact(obj) +#else + #define __Pyx_PyBaseString_Check(obj) (PyString_Check(obj) || PyUnicode_Check(obj)) + #define __Pyx_PyBaseString_CheckExact(obj) (PyString_CheckExact(obj) || PyUnicode_CheckExact(obj)) +#endif +#ifndef PySet_CheckExact + #define PySet_CheckExact(obj) (Py_TYPE(obj) == &PySet_Type) +#endif +#if PY_VERSION_HEX >= 0x030900A4 + #define __Pyx_SET_REFCNT(obj, refcnt) Py_SET_REFCNT(obj, refcnt) + #define __Pyx_SET_SIZE(obj, size) Py_SET_SIZE(obj, size) +#else + #define __Pyx_SET_REFCNT(obj, refcnt) Py_REFCNT(obj) = (refcnt) + #define __Pyx_SET_SIZE(obj, size) Py_SIZE(obj) = (size) +#endif +#if CYTHON_ASSUME_SAFE_MACROS + #define __Pyx_PySequence_SIZE(seq) Py_SIZE(seq) +#else + #define __Pyx_PySequence_SIZE(seq) PySequence_Size(seq) +#endif +#if PY_MAJOR_VERSION >= 3 + #define PyIntObject PyLongObject + #define PyInt_Type PyLong_Type + #define PyInt_Check(op) PyLong_Check(op) + #define PyInt_CheckExact(op) PyLong_CheckExact(op) + #define PyInt_FromString PyLong_FromString + #define PyInt_FromUnicode PyLong_FromUnicode + #define PyInt_FromLong PyLong_FromLong + #define PyInt_FromSize_t PyLong_FromSize_t + #define PyInt_FromSsize_t PyLong_FromSsize_t + #define PyInt_AsLong PyLong_AsLong + #define PyInt_AS_LONG PyLong_AS_LONG + #define PyInt_AsSsize_t PyLong_AsSsize_t + #define PyInt_AsUnsignedLongMask PyLong_AsUnsignedLongMask + #define PyInt_AsUnsignedLongLongMask PyLong_AsUnsignedLongLongMask + #define PyNumber_Int PyNumber_Long +#endif +#if PY_MAJOR_VERSION >= 3 + #define PyBoolObject PyLongObject +#endif +#if PY_MAJOR_VERSION >= 3 && CYTHON_COMPILING_IN_PYPY + #ifndef PyUnicode_InternFromString + #define PyUnicode_InternFromString(s) PyUnicode_FromString(s) + #endif +#endif +#if PY_VERSION_HEX < 0x030200A4 + typedef long Py_hash_t; + #define __Pyx_PyInt_FromHash_t PyInt_FromLong + #define __Pyx_PyInt_AsHash_t PyInt_AsLong +#else + #define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t + #define __Pyx_PyInt_AsHash_t PyInt_AsSsize_t +#endif +#if PY_MAJOR_VERSION >= 3 + #define __Pyx_PyMethod_New(func, self, klass) ((self) ? ((void)(klass), PyMethod_New(func, self)) : __Pyx_NewRef(func)) +#else + #define __Pyx_PyMethod_New(func, self, klass) PyMethod_New(func, self, klass) +#endif +#if CYTHON_USE_ASYNC_SLOTS + #if PY_VERSION_HEX >= 0x030500B1 + #define __Pyx_PyAsyncMethodsStruct PyAsyncMethods + #define __Pyx_PyType_AsAsync(obj) (Py_TYPE(obj)->tp_as_async) + #else + #define __Pyx_PyType_AsAsync(obj) ((__Pyx_PyAsyncMethodsStruct*) (Py_TYPE(obj)->tp_reserved)) + #endif +#else + #define __Pyx_PyType_AsAsync(obj) NULL +#endif +#ifndef __Pyx_PyAsyncMethodsStruct + typedef struct { + unaryfunc am_await; + unaryfunc am_aiter; + unaryfunc am_anext; + } __Pyx_PyAsyncMethodsStruct; +#endif + +#if defined(WIN32) || defined(MS_WINDOWS) + #define _USE_MATH_DEFINES +#endif +#include +#ifdef NAN +#define __PYX_NAN() ((float) NAN) +#else +static CYTHON_INLINE float __PYX_NAN() { + float value; + memset(&value, 0xFF, sizeof(value)); + return value; +} +#endif +#if defined(__CYGWIN__) && defined(_LDBL_EQ_DBL) +#define __Pyx_truncl trunc +#else +#define __Pyx_truncl truncl +#endif + +#define __PYX_MARK_ERR_POS(f_index, lineno) \ + { __pyx_filename = __pyx_f[f_index]; (void)__pyx_filename; __pyx_lineno = lineno; (void)__pyx_lineno; __pyx_clineno = __LINE__; (void)__pyx_clineno; } +#define __PYX_ERR(f_index, lineno, Ln_error) \ + { __PYX_MARK_ERR_POS(f_index, lineno) goto Ln_error; } + +#ifndef __PYX_EXTERN_C + #ifdef __cplusplus + #define __PYX_EXTERN_C extern "C" + #else + #define __PYX_EXTERN_C extern + #endif +#endif + +#define __PYX_HAVE__euclidemu2 +#define __PYX_HAVE_API__euclidemu2 +/* Early includes */ +#include +#include +#include "ios" +#include "new" +#include "stdexcept" +#include "typeinfo" +#include +#include +#include "cosmo.h" +#include "emulator.h" +#ifdef _OPENMP +#include +#endif /* _OPENMP */ + +#if defined(PYREX_WITHOUT_ASSERTIONS) && !defined(CYTHON_WITHOUT_ASSERTIONS) +#define CYTHON_WITHOUT_ASSERTIONS +#endif + +typedef struct {PyObject **p; const char *s; const Py_ssize_t n; const char* encoding; + const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry; + +#define __PYX_DEFAULT_STRING_ENCODING_IS_ASCII 0 +#define __PYX_DEFAULT_STRING_ENCODING_IS_UTF8 0 +#define __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT (PY_MAJOR_VERSION >= 3 && __PYX_DEFAULT_STRING_ENCODING_IS_UTF8) +#define __PYX_DEFAULT_STRING_ENCODING "" +#define __Pyx_PyObject_FromString __Pyx_PyBytes_FromString +#define __Pyx_PyObject_FromStringAndSize __Pyx_PyBytes_FromStringAndSize +#define __Pyx_uchar_cast(c) ((unsigned char)c) +#define __Pyx_long_cast(x) ((long)x) +#define __Pyx_fits_Py_ssize_t(v, type, is_signed) (\ + (sizeof(type) < sizeof(Py_ssize_t)) ||\ + (sizeof(type) > sizeof(Py_ssize_t) &&\ + likely(v < (type)PY_SSIZE_T_MAX ||\ + v == (type)PY_SSIZE_T_MAX) &&\ + (!is_signed || likely(v > (type)PY_SSIZE_T_MIN ||\ + v == (type)PY_SSIZE_T_MIN))) ||\ + (sizeof(type) == sizeof(Py_ssize_t) &&\ + (is_signed || likely(v < (type)PY_SSIZE_T_MAX ||\ + v == (type)PY_SSIZE_T_MAX))) ) +static CYTHON_INLINE int __Pyx_is_valid_index(Py_ssize_t i, Py_ssize_t limit) { + return (size_t) i < (size_t) limit; +} +#if defined (__cplusplus) && __cplusplus >= 201103L + #include + #define __Pyx_sst_abs(value) std::abs(value) +#elif SIZEOF_INT >= SIZEOF_SIZE_T + #define __Pyx_sst_abs(value) abs(value) +#elif SIZEOF_LONG >= SIZEOF_SIZE_T + #define __Pyx_sst_abs(value) labs(value) +#elif defined (_MSC_VER) + #define __Pyx_sst_abs(value) ((Py_ssize_t)_abs64(value)) +#elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L + #define __Pyx_sst_abs(value) llabs(value) +#elif defined (__GNUC__) + #define __Pyx_sst_abs(value) __builtin_llabs(value) +#else + #define __Pyx_sst_abs(value) ((value<0) ? -value : value) +#endif +static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject*); +static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject*, Py_ssize_t* length); +#define __Pyx_PyByteArray_FromString(s) PyByteArray_FromStringAndSize((const char*)s, strlen((const char*)s)) +#define __Pyx_PyByteArray_FromStringAndSize(s, l) PyByteArray_FromStringAndSize((const char*)s, l) +#define __Pyx_PyBytes_FromString PyBytes_FromString +#define __Pyx_PyBytes_FromStringAndSize PyBytes_FromStringAndSize +static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char*); +#if PY_MAJOR_VERSION < 3 + #define __Pyx_PyStr_FromString __Pyx_PyBytes_FromString + #define __Pyx_PyStr_FromStringAndSize __Pyx_PyBytes_FromStringAndSize +#else + #define __Pyx_PyStr_FromString __Pyx_PyUnicode_FromString + #define __Pyx_PyStr_FromStringAndSize __Pyx_PyUnicode_FromStringAndSize +#endif +#define __Pyx_PyBytes_AsWritableString(s) ((char*) PyBytes_AS_STRING(s)) +#define __Pyx_PyBytes_AsWritableSString(s) ((signed char*) PyBytes_AS_STRING(s)) +#define __Pyx_PyBytes_AsWritableUString(s) ((unsigned char*) PyBytes_AS_STRING(s)) +#define __Pyx_PyBytes_AsString(s) ((const char*) PyBytes_AS_STRING(s)) +#define __Pyx_PyBytes_AsSString(s) ((const signed char*) PyBytes_AS_STRING(s)) +#define __Pyx_PyBytes_AsUString(s) ((const unsigned char*) PyBytes_AS_STRING(s)) +#define __Pyx_PyObject_AsWritableString(s) ((char*) __Pyx_PyObject_AsString(s)) +#define __Pyx_PyObject_AsWritableSString(s) ((signed char*) __Pyx_PyObject_AsString(s)) +#define __Pyx_PyObject_AsWritableUString(s) ((unsigned char*) __Pyx_PyObject_AsString(s)) +#define __Pyx_PyObject_AsSString(s) ((const signed char*) __Pyx_PyObject_AsString(s)) +#define __Pyx_PyObject_AsUString(s) ((const unsigned char*) __Pyx_PyObject_AsString(s)) +#define __Pyx_PyObject_FromCString(s) __Pyx_PyObject_FromString((const char*)s) +#define __Pyx_PyBytes_FromCString(s) __Pyx_PyBytes_FromString((const char*)s) +#define __Pyx_PyByteArray_FromCString(s) __Pyx_PyByteArray_FromString((const char*)s) +#define __Pyx_PyStr_FromCString(s) __Pyx_PyStr_FromString((const char*)s) +#define __Pyx_PyUnicode_FromCString(s) __Pyx_PyUnicode_FromString((const char*)s) +static CYTHON_INLINE size_t __Pyx_Py_UNICODE_strlen(const Py_UNICODE *u) { + const Py_UNICODE *u_end = u; + while (*u_end++) ; + return (size_t)(u_end - u - 1); +} +#define __Pyx_PyUnicode_FromUnicode(u) PyUnicode_FromUnicode(u, __Pyx_Py_UNICODE_strlen(u)) +#define __Pyx_PyUnicode_FromUnicodeAndLength PyUnicode_FromUnicode +#define __Pyx_PyUnicode_AsUnicode PyUnicode_AsUnicode +#define __Pyx_NewRef(obj) (Py_INCREF(obj), obj) +#define __Pyx_Owned_Py_None(b) __Pyx_NewRef(Py_None) +static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b); +static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*); +static CYTHON_INLINE int __Pyx_PyObject_IsTrueAndDecref(PyObject*); +static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x); +#define __Pyx_PySequence_Tuple(obj)\ + (likely(PyTuple_CheckExact(obj)) ? __Pyx_NewRef(obj) : PySequence_Tuple(obj)) +static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*); +static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t); +#if CYTHON_ASSUME_SAFE_MACROS +#define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x)) +#else +#define __pyx_PyFloat_AsDouble(x) PyFloat_AsDouble(x) +#endif +#define __pyx_PyFloat_AsFloat(x) ((float) __pyx_PyFloat_AsDouble(x)) +#if PY_MAJOR_VERSION >= 3 +#define __Pyx_PyNumber_Int(x) (PyLong_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Long(x)) +#else +#define __Pyx_PyNumber_Int(x) (PyInt_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Int(x)) +#endif +#define __Pyx_PyNumber_Float(x) (PyFloat_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Float(x)) +#if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII +static int __Pyx_sys_getdefaultencoding_not_ascii; +static int __Pyx_init_sys_getdefaultencoding_params(void) { + PyObject* sys; + PyObject* default_encoding = NULL; + PyObject* ascii_chars_u = NULL; + PyObject* ascii_chars_b = NULL; + const char* default_encoding_c; + sys = PyImport_ImportModule("sys"); + if (!sys) goto bad; + default_encoding = PyObject_CallMethod(sys, (char*) "getdefaultencoding", NULL); + Py_DECREF(sys); + if (!default_encoding) goto bad; + default_encoding_c = PyBytes_AsString(default_encoding); + if (!default_encoding_c) goto bad; + if (strcmp(default_encoding_c, "ascii") == 0) { + __Pyx_sys_getdefaultencoding_not_ascii = 0; + } else { + char ascii_chars[128]; + int c; + for (c = 0; c < 128; c++) { + ascii_chars[c] = c; + } + __Pyx_sys_getdefaultencoding_not_ascii = 1; + ascii_chars_u = PyUnicode_DecodeASCII(ascii_chars, 128, NULL); + if (!ascii_chars_u) goto bad; + ascii_chars_b = PyUnicode_AsEncodedString(ascii_chars_u, default_encoding_c, NULL); + if (!ascii_chars_b || !PyBytes_Check(ascii_chars_b) || memcmp(ascii_chars, PyBytes_AS_STRING(ascii_chars_b), 128) != 0) { + PyErr_Format( + PyExc_ValueError, + "This module compiled with c_string_encoding=ascii, but default encoding '%.200s' is not a superset of ascii.", + default_encoding_c); + goto bad; + } + Py_DECREF(ascii_chars_u); + Py_DECREF(ascii_chars_b); + } + Py_DECREF(default_encoding); + return 0; +bad: + Py_XDECREF(default_encoding); + Py_XDECREF(ascii_chars_u); + Py_XDECREF(ascii_chars_b); + return -1; +} +#endif +#if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT && PY_MAJOR_VERSION >= 3 +#define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_DecodeUTF8(c_str, size, NULL) +#else +#define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_Decode(c_str, size, __PYX_DEFAULT_STRING_ENCODING, NULL) +#if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT +static char* __PYX_DEFAULT_STRING_ENCODING; +static int __Pyx_init_sys_getdefaultencoding_params(void) { + PyObject* sys; + PyObject* default_encoding = NULL; + char* default_encoding_c; + sys = PyImport_ImportModule("sys"); + if (!sys) goto bad; + default_encoding = PyObject_CallMethod(sys, (char*) (const char*) "getdefaultencoding", NULL); + Py_DECREF(sys); + if (!default_encoding) goto bad; + default_encoding_c = PyBytes_AsString(default_encoding); + if (!default_encoding_c) goto bad; + __PYX_DEFAULT_STRING_ENCODING = (char*) malloc(strlen(default_encoding_c) + 1); + if (!__PYX_DEFAULT_STRING_ENCODING) goto bad; + strcpy(__PYX_DEFAULT_STRING_ENCODING, default_encoding_c); + Py_DECREF(default_encoding); + return 0; +bad: + Py_XDECREF(default_encoding); + return -1; +} +#endif +#endif + + +/* Test for GCC > 2.95 */ +#if defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95))) + #define likely(x) __builtin_expect(!!(x), 1) + #define unlikely(x) __builtin_expect(!!(x), 0) +#else /* !__GNUC__ or GCC < 2.95 */ + #define likely(x) (x) + #define unlikely(x) (x) +#endif /* __GNUC__ */ +static CYTHON_INLINE void __Pyx_pretend_to_initialize(void* ptr) { (void)ptr; } + +static PyObject *__pyx_m = NULL; +static PyObject *__pyx_d; +static PyObject *__pyx_b; +static PyObject *__pyx_cython_runtime = NULL; +static PyObject *__pyx_empty_tuple; +static PyObject *__pyx_empty_bytes; +static PyObject *__pyx_empty_unicode; +static int __pyx_lineno; +static int __pyx_clineno = 0; +static const char * __pyx_cfilenm= __FILE__; +static const char *__pyx_filename; + + +static const char *__pyx_f[] = { + "stringsource", + "src/euclidemu2.pyx", +}; + +/*--- Type declarations ---*/ +struct __pyx_obj_10euclidemu2_PyCosmology; +struct __pyx_obj_10euclidemu2_PyEuclidEmulator; + +/* "euclidemu2.pyx":57 + * + * #Create new python classes for wrapping the c++ classes + * cdef class PyCosmology: # <<<<<<<<<<<<<< + * + * cdef void* _inst + */ +struct __pyx_obj_10euclidemu2_PyCosmology { + PyObject_HEAD + void *_inst; + int _free_inst; +}; + + +/* "euclidemu2.pyx":85 + * + * + * cdef class PyEuclidEmulator: # <<<<<<<<<<<<<< + * + * cdef EuclidEmulator*ee2 + */ +struct __pyx_obj_10euclidemu2_PyEuclidEmulator { + PyObject_HEAD + EuclidEmulator *ee2; +}; + + +/* --- Runtime support code (head) --- */ +/* Refnanny.proto */ +#ifndef CYTHON_REFNANNY + #define CYTHON_REFNANNY 0 +#endif +#if CYTHON_REFNANNY + typedef struct { + void (*INCREF)(void*, PyObject*, int); + void (*DECREF)(void*, PyObject*, int); + void (*GOTREF)(void*, PyObject*, int); + void (*GIVEREF)(void*, PyObject*, int); + void* (*SetupContext)(const char*, int, const char*); + void (*FinishContext)(void**); + } __Pyx_RefNannyAPIStruct; + static __Pyx_RefNannyAPIStruct *__Pyx_RefNanny = NULL; + static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname); + #define __Pyx_RefNannyDeclarations void *__pyx_refnanny = NULL; +#ifdef WITH_THREAD + #define __Pyx_RefNannySetupContext(name, acquire_gil)\ + if (acquire_gil) {\ + PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\ + __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__);\ + PyGILState_Release(__pyx_gilstate_save);\ + } else {\ + __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__);\ + } +#else + #define __Pyx_RefNannySetupContext(name, acquire_gil)\ + __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__) +#endif + #define __Pyx_RefNannyFinishContext()\ + __Pyx_RefNanny->FinishContext(&__pyx_refnanny) + #define __Pyx_INCREF(r) __Pyx_RefNanny->INCREF(__pyx_refnanny, (PyObject *)(r), __LINE__) + #define __Pyx_DECREF(r) __Pyx_RefNanny->DECREF(__pyx_refnanny, (PyObject *)(r), __LINE__) + #define __Pyx_GOTREF(r) __Pyx_RefNanny->GOTREF(__pyx_refnanny, (PyObject *)(r), __LINE__) + #define __Pyx_GIVEREF(r) __Pyx_RefNanny->GIVEREF(__pyx_refnanny, (PyObject *)(r), __LINE__) + #define __Pyx_XINCREF(r) do { if((r) != NULL) {__Pyx_INCREF(r); }} while(0) + #define __Pyx_XDECREF(r) do { if((r) != NULL) {__Pyx_DECREF(r); }} while(0) + #define __Pyx_XGOTREF(r) do { if((r) != NULL) {__Pyx_GOTREF(r); }} while(0) + #define __Pyx_XGIVEREF(r) do { if((r) != NULL) {__Pyx_GIVEREF(r);}} while(0) +#else + #define __Pyx_RefNannyDeclarations + #define __Pyx_RefNannySetupContext(name, acquire_gil) + #define __Pyx_RefNannyFinishContext() + #define __Pyx_INCREF(r) Py_INCREF(r) + #define __Pyx_DECREF(r) Py_DECREF(r) + #define __Pyx_GOTREF(r) + #define __Pyx_GIVEREF(r) + #define __Pyx_XINCREF(r) Py_XINCREF(r) + #define __Pyx_XDECREF(r) Py_XDECREF(r) + #define __Pyx_XGOTREF(r) + #define __Pyx_XGIVEREF(r) +#endif +#define __Pyx_XDECREF_SET(r, v) do {\ + PyObject *tmp = (PyObject *) r;\ + r = v; __Pyx_XDECREF(tmp);\ + } while (0) +#define __Pyx_DECREF_SET(r, v) do {\ + PyObject *tmp = (PyObject *) r;\ + r = v; __Pyx_DECREF(tmp);\ + } while (0) +#define __Pyx_CLEAR(r) do { PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);} while(0) +#define __Pyx_XCLEAR(r) do { if((r) != NULL) {PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);}} while(0) + +/* PyObjectGetAttrStr.proto */ +#if CYTHON_USE_TYPE_SLOTS +static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name); +#else +#define __Pyx_PyObject_GetAttrStr(o,n) PyObject_GetAttr(o,n) +#endif + +/* GetBuiltinName.proto */ +static PyObject *__Pyx_GetBuiltinName(PyObject *name); + +/* KeywordStringCheck.proto */ +static int __Pyx_CheckKeywordStrings(PyObject *kwdict, const char* function_name, int kw_allowed); + +/* RaiseArgTupleInvalid.proto */ +static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact, + Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found); + +/* RaiseDoubleKeywords.proto */ +static void __Pyx_RaiseDoubleKeywordsError(const char* func_name, PyObject* kw_name); + +/* ParseKeywords.proto */ +static int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject **argnames[],\ + PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args,\ + const char* function_name); + +/* PyObjectCall.proto */ +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw); +#else +#define __Pyx_PyObject_Call(func, arg, kw) PyObject_Call(func, arg, kw) +#endif + +/* PyThreadStateGet.proto */ +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_PyThreadState_declare PyThreadState *__pyx_tstate; +#define __Pyx_PyThreadState_assign __pyx_tstate = __Pyx_PyThreadState_Current; +#define __Pyx_PyErr_Occurred() __pyx_tstate->curexc_type +#else +#define __Pyx_PyThreadState_declare +#define __Pyx_PyThreadState_assign +#define __Pyx_PyErr_Occurred() PyErr_Occurred() +#endif + +/* PyErrFetchRestore.proto */ +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_PyErr_Clear() __Pyx_ErrRestore(NULL, NULL, NULL) +#define __Pyx_ErrRestoreWithState(type, value, tb) __Pyx_ErrRestoreInState(PyThreadState_GET(), type, value, tb) +#define __Pyx_ErrFetchWithState(type, value, tb) __Pyx_ErrFetchInState(PyThreadState_GET(), type, value, tb) +#define __Pyx_ErrRestore(type, value, tb) __Pyx_ErrRestoreInState(__pyx_tstate, type, value, tb) +#define __Pyx_ErrFetch(type, value, tb) __Pyx_ErrFetchInState(__pyx_tstate, type, value, tb) +static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb); +static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); +#if CYTHON_COMPILING_IN_CPYTHON +#define __Pyx_PyErr_SetNone(exc) (Py_INCREF(exc), __Pyx_ErrRestore((exc), NULL, NULL)) +#else +#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc) +#endif +#else +#define __Pyx_PyErr_Clear() PyErr_Clear() +#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc) +#define __Pyx_ErrRestoreWithState(type, value, tb) PyErr_Restore(type, value, tb) +#define __Pyx_ErrFetchWithState(type, value, tb) PyErr_Fetch(type, value, tb) +#define __Pyx_ErrRestoreInState(tstate, type, value, tb) PyErr_Restore(type, value, tb) +#define __Pyx_ErrFetchInState(tstate, type, value, tb) PyErr_Fetch(type, value, tb) +#define __Pyx_ErrRestore(type, value, tb) PyErr_Restore(type, value, tb) +#define __Pyx_ErrFetch(type, value, tb) PyErr_Fetch(type, value, tb) +#endif + +/* RaiseException.proto */ +static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause); + +/* ArgTypeTest.proto */ +#define __Pyx_ArgTypeTest(obj, type, none_allowed, name, exact)\ + ((likely((Py_TYPE(obj) == type) | (none_allowed && (obj == Py_None)))) ? 1 :\ + __Pyx__ArgTypeTest(obj, type, name, exact)) +static int __Pyx__ArgTypeTest(PyObject *obj, PyTypeObject *type, const char *name, int exact); + +/* IncludeStringH.proto */ +#include + +/* GetItemInt.proto */ +#define __Pyx_GetItemInt(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\ + (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ + __Pyx_GetItemInt_Fast(o, (Py_ssize_t)i, is_list, wraparound, boundscheck) :\ + (is_list ? (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL) :\ + __Pyx_GetItemInt_Generic(o, to_py_func(i)))) +#define __Pyx_GetItemInt_List(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\ + (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ + __Pyx_GetItemInt_List_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) :\ + (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL)) +static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i, + int wraparound, int boundscheck); +#define __Pyx_GetItemInt_Tuple(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\ + (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ + __Pyx_GetItemInt_Tuple_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) :\ + (PyErr_SetString(PyExc_IndexError, "tuple index out of range"), (PyObject*)NULL)) +static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i, + int wraparound, int boundscheck); +static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j); +static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, + int is_list, int wraparound, int boundscheck); + +/* DictGetItem.proto */ +#if PY_MAJOR_VERSION >= 3 && !CYTHON_COMPILING_IN_PYPY +static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key); +#define __Pyx_PyObject_Dict_GetItem(obj, name)\ + (likely(PyDict_CheckExact(obj)) ?\ + __Pyx_PyDict_GetItem(obj, name) : PyObject_GetItem(obj, name)) +#else +#define __Pyx_PyDict_GetItem(d, key) PyObject_GetItem(d, key) +#define __Pyx_PyObject_Dict_GetItem(obj, name) PyObject_GetItem(obj, name) +#endif + +/* PyCFunctionFastCall.proto */ +#if CYTHON_FAST_PYCCALL +static CYTHON_INLINE PyObject *__Pyx_PyCFunction_FastCall(PyObject *func, PyObject **args, Py_ssize_t nargs); +#else +#define __Pyx_PyCFunction_FastCall(func, args, nargs) (assert(0), NULL) +#endif + +/* PyFunctionFastCall.proto */ +#if CYTHON_FAST_PYCALL +#define __Pyx_PyFunction_FastCall(func, args, nargs)\ + __Pyx_PyFunction_FastCallDict((func), (args), (nargs), NULL) +#if 1 || PY_VERSION_HEX < 0x030600B1 +static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, Py_ssize_t nargs, PyObject *kwargs); +#else +#define __Pyx_PyFunction_FastCallDict(func, args, nargs, kwargs) _PyFunction_FastCallDict(func, args, nargs, kwargs) +#endif +#define __Pyx_BUILD_ASSERT_EXPR(cond)\ + (sizeof(char [1 - 2*!(cond)]) - 1) +#ifndef Py_MEMBER_SIZE +#define Py_MEMBER_SIZE(type, member) sizeof(((type *)0)->member) +#endif + static size_t __pyx_pyframe_localsplus_offset = 0; + #include "frameobject.h" + #define __Pxy_PyFrame_Initialize_Offsets()\ + ((void)__Pyx_BUILD_ASSERT_EXPR(sizeof(PyFrameObject) == offsetof(PyFrameObject, f_localsplus) + Py_MEMBER_SIZE(PyFrameObject, f_localsplus)),\ + (void)(__pyx_pyframe_localsplus_offset = ((size_t)PyFrame_Type.tp_basicsize) - Py_MEMBER_SIZE(PyFrameObject, f_localsplus))) + #define __Pyx_PyFrame_GetLocalsplus(frame)\ + (assert(__pyx_pyframe_localsplus_offset), (PyObject **)(((char *)(frame)) + __pyx_pyframe_localsplus_offset)) +#endif + +/* PyObjectCallMethO.proto */ +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg); +#endif + +/* PyObjectCallOneArg.proto */ +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg); + +/* PyDictVersioning.proto */ +#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS +#define __PYX_DICT_VERSION_INIT ((PY_UINT64_T) -1) +#define __PYX_GET_DICT_VERSION(dict) (((PyDictObject*)(dict))->ma_version_tag) +#define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var)\ + (version_var) = __PYX_GET_DICT_VERSION(dict);\ + (cache_var) = (value); +#define __PYX_PY_DICT_LOOKUP_IF_MODIFIED(VAR, DICT, LOOKUP) {\ + static PY_UINT64_T __pyx_dict_version = 0;\ + static PyObject *__pyx_dict_cached_value = NULL;\ + if (likely(__PYX_GET_DICT_VERSION(DICT) == __pyx_dict_version)) {\ + (VAR) = __pyx_dict_cached_value;\ + } else {\ + (VAR) = __pyx_dict_cached_value = (LOOKUP);\ + __pyx_dict_version = __PYX_GET_DICT_VERSION(DICT);\ + }\ +} +static CYTHON_INLINE PY_UINT64_T __Pyx_get_tp_dict_version(PyObject *obj); +static CYTHON_INLINE PY_UINT64_T __Pyx_get_object_dict_version(PyObject *obj); +static CYTHON_INLINE int __Pyx_object_dict_version_matches(PyObject* obj, PY_UINT64_T tp_dict_version, PY_UINT64_T obj_dict_version); +#else +#define __PYX_GET_DICT_VERSION(dict) (0) +#define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var) +#define __PYX_PY_DICT_LOOKUP_IF_MODIFIED(VAR, DICT, LOOKUP) (VAR) = (LOOKUP); +#endif + +/* GetModuleGlobalName.proto */ +#if CYTHON_USE_DICT_VERSIONS +#define __Pyx_GetModuleGlobalName(var, name) {\ + static PY_UINT64_T __pyx_dict_version = 0;\ + static PyObject *__pyx_dict_cached_value = NULL;\ + (var) = (likely(__pyx_dict_version == __PYX_GET_DICT_VERSION(__pyx_d))) ?\ + (likely(__pyx_dict_cached_value) ? __Pyx_NewRef(__pyx_dict_cached_value) : __Pyx_GetBuiltinName(name)) :\ + __Pyx__GetModuleGlobalName(name, &__pyx_dict_version, &__pyx_dict_cached_value);\ +} +#define __Pyx_GetModuleGlobalNameUncached(var, name) {\ + PY_UINT64_T __pyx_dict_version;\ + PyObject *__pyx_dict_cached_value;\ + (var) = __Pyx__GetModuleGlobalName(name, &__pyx_dict_version, &__pyx_dict_cached_value);\ +} +static PyObject *__Pyx__GetModuleGlobalName(PyObject *name, PY_UINT64_T *dict_version, PyObject **dict_cached_value); +#else +#define __Pyx_GetModuleGlobalName(var, name) (var) = __Pyx__GetModuleGlobalName(name) +#define __Pyx_GetModuleGlobalNameUncached(var, name) (var) = __Pyx__GetModuleGlobalName(name) +static CYTHON_INLINE PyObject *__Pyx__GetModuleGlobalName(PyObject *name); +#endif + +/* PyObjectCallNoArg.proto */ +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func); +#else +#define __Pyx_PyObject_CallNoArg(func) __Pyx_PyObject_Call(func, __pyx_empty_tuple, NULL) +#endif + +/* PySequenceContains.proto */ +static CYTHON_INLINE int __Pyx_PySequence_ContainsTF(PyObject* item, PyObject* seq, int eq) { + int result = PySequence_Contains(seq, item); + return unlikely(result < 0) ? result : (result == (eq == Py_EQ)); +} + +/* PyFloatBinop.proto */ +#if !CYTHON_COMPILING_IN_PYPY +static PyObject* __Pyx_PyFloat_TrueDivideObjC(PyObject *op1, PyObject *op2, double floatval, int inplace, int zerodivision_check); +#else +#define __Pyx_PyFloat_TrueDivideObjC(op1, op2, floatval, inplace, zerodivision_check)\ + (inplace ? PyNumber_InPlaceTrueDivide(op1, op2) : PyNumber_TrueDivide(op1, op2)) +#endif + +/* None.proto */ +static CYTHON_INLINE void __Pyx_RaiseUnboundLocalError(const char *varname); + +/* PyObjectCall2Args.proto */ +static CYTHON_UNUSED PyObject* __Pyx_PyObject_Call2Args(PyObject* function, PyObject* arg1, PyObject* arg2); + +/* SliceObject.proto */ +static CYTHON_INLINE PyObject* __Pyx_PyObject_GetSlice( + PyObject* obj, Py_ssize_t cstart, Py_ssize_t cstop, + PyObject** py_start, PyObject** py_stop, PyObject** py_slice, + int has_cstart, int has_cstop, int wraparound); + +/* RaiseTooManyValuesToUnpack.proto */ +static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected); + +/* RaiseNeedMoreValuesToUnpack.proto */ +static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index); + +/* IterFinish.proto */ +static CYTHON_INLINE int __Pyx_IterFinish(void); + +/* UnpackItemEndCheck.proto */ +static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected); + +/* ListCompAppend.proto */ +#if CYTHON_USE_PYLIST_INTERNALS && CYTHON_ASSUME_SAFE_MACROS +static CYTHON_INLINE int __Pyx_ListComp_Append(PyObject* list, PyObject* x) { + PyListObject* L = (PyListObject*) list; + Py_ssize_t len = Py_SIZE(list); + if (likely(L->allocated > len)) { + Py_INCREF(x); + PyList_SET_ITEM(list, len, x); + __Pyx_SET_SIZE(list, len + 1); + return 0; + } + return PyList_Append(list, x); +} +#else +#define __Pyx_ListComp_Append(L,x) PyList_Append(L,x) +#endif + +/* ObjectGetItem.proto */ +#if CYTHON_USE_TYPE_SLOTS +static CYTHON_INLINE PyObject *__Pyx_PyObject_GetItem(PyObject *obj, PyObject* key); +#else +#define __Pyx_PyObject_GetItem(obj, key) PyObject_GetItem(obj, key) +#endif + +/* SetItemInt.proto */ +#define __Pyx_SetItemInt(o, i, v, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\ + (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ + __Pyx_SetItemInt_Fast(o, (Py_ssize_t)i, v, is_list, wraparound, boundscheck) :\ + (is_list ? (PyErr_SetString(PyExc_IndexError, "list assignment index out of range"), -1) :\ + __Pyx_SetItemInt_Generic(o, to_py_func(i), v))) +static int __Pyx_SetItemInt_Generic(PyObject *o, PyObject *j, PyObject *v); +static CYTHON_INLINE int __Pyx_SetItemInt_Fast(PyObject *o, Py_ssize_t i, PyObject *v, + int is_list, int wraparound, int boundscheck); + +/* GetTopmostException.proto */ +#if CYTHON_USE_EXC_INFO_STACK +static _PyErr_StackItem * __Pyx_PyErr_GetTopmostException(PyThreadState *tstate); +#endif + +/* SaveResetException.proto */ +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_ExceptionSave(type, value, tb) __Pyx__ExceptionSave(__pyx_tstate, type, value, tb) +static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); +#define __Pyx_ExceptionReset(type, value, tb) __Pyx__ExceptionReset(__pyx_tstate, type, value, tb) +static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb); +#else +#define __Pyx_ExceptionSave(type, value, tb) PyErr_GetExcInfo(type, value, tb) +#define __Pyx_ExceptionReset(type, value, tb) PyErr_SetExcInfo(type, value, tb) +#endif + +/* PyErrExceptionMatches.proto */ +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_PyErr_ExceptionMatches(err) __Pyx_PyErr_ExceptionMatchesInState(__pyx_tstate, err) +static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tstate, PyObject* err); +#else +#define __Pyx_PyErr_ExceptionMatches(err) PyErr_ExceptionMatches(err) +#endif + +/* PyObject_GenericGetAttrNoDict.proto */ +#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 +static CYTHON_INLINE PyObject* __Pyx_PyObject_GenericGetAttrNoDict(PyObject* obj, PyObject* attr_name); +#else +#define __Pyx_PyObject_GenericGetAttrNoDict PyObject_GenericGetAttr +#endif + +/* PyObject_GenericGetAttr.proto */ +#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 +static PyObject* __Pyx_PyObject_GenericGetAttr(PyObject* obj, PyObject* attr_name); +#else +#define __Pyx_PyObject_GenericGetAttr PyObject_GenericGetAttr +#endif + +/* PyObjectGetAttrStrNoError.proto */ +static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStrNoError(PyObject* obj, PyObject* attr_name); + +/* SetupReduce.proto */ +static int __Pyx_setup_reduce(PyObject* type_obj); + +/* Import.proto */ +static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level); + +/* ImportFrom.proto */ +static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name); + +/* CLineInTraceback.proto */ +#ifdef CYTHON_CLINE_IN_TRACEBACK +#define __Pyx_CLineForTraceback(tstate, c_line) (((CYTHON_CLINE_IN_TRACEBACK)) ? c_line : 0) +#else +static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line); +#endif + +/* CodeObjectCache.proto */ +typedef struct { + PyCodeObject* code_object; + int code_line; +} __Pyx_CodeObjectCacheEntry; +struct __Pyx_CodeObjectCache { + int count; + int max_count; + __Pyx_CodeObjectCacheEntry* entries; +}; +static struct __Pyx_CodeObjectCache __pyx_code_cache = {0,0,NULL}; +static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line); +static PyCodeObject *__pyx_find_code_object(int code_line); +static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object); + +/* AddTraceback.proto */ +static void __Pyx_AddTraceback(const char *funcname, int c_line, + int py_line, const char *filename); + +/* CppExceptionConversion.proto */ +#ifndef __Pyx_CppExn2PyErr +#include +#include +#include +#include +static void __Pyx_CppExn2PyErr() { + try { + if (PyErr_Occurred()) + ; // let the latest Python exn pass through and ignore the current one + else + throw; + } catch (const std::bad_alloc& exn) { + PyErr_SetString(PyExc_MemoryError, exn.what()); + } catch (const std::bad_cast& exn) { + PyErr_SetString(PyExc_TypeError, exn.what()); + } catch (const std::bad_typeid& exn) { + PyErr_SetString(PyExc_TypeError, exn.what()); + } catch (const std::domain_error& exn) { + PyErr_SetString(PyExc_ValueError, exn.what()); + } catch (const std::invalid_argument& exn) { + PyErr_SetString(PyExc_ValueError, exn.what()); + } catch (const std::ios_base::failure& exn) { + PyErr_SetString(PyExc_IOError, exn.what()); + } catch (const std::out_of_range& exn) { + PyErr_SetString(PyExc_IndexError, exn.what()); + } catch (const std::overflow_error& exn) { + PyErr_SetString(PyExc_OverflowError, exn.what()); + } catch (const std::range_error& exn) { + PyErr_SetString(PyExc_ArithmeticError, exn.what()); + } catch (const std::underflow_error& exn) { + PyErr_SetString(PyExc_ArithmeticError, exn.what()); + } catch (const std::exception& exn) { + PyErr_SetString(PyExc_RuntimeError, exn.what()); + } + catch (...) + { + PyErr_SetString(PyExc_RuntimeError, "Unknown exception"); + } +} +#endif + +/* CIntToPy.proto */ +static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value); + +/* CIntFromPy.proto */ +static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *); + +/* CIntFromPy.proto */ +static CYTHON_INLINE size_t __Pyx_PyInt_As_size_t(PyObject *); + +/* CIntFromPy.proto */ +static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *); + +/* FastTypeChecks.proto */ +#if CYTHON_COMPILING_IN_CPYTHON +#define __Pyx_TypeCheck(obj, type) __Pyx_IsSubtype(Py_TYPE(obj), (PyTypeObject *)type) +static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b); +static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject *type); +static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *type1, PyObject *type2); +#else +#define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type) +#define __Pyx_PyErr_GivenExceptionMatches(err, type) PyErr_GivenExceptionMatches(err, type) +#define __Pyx_PyErr_GivenExceptionMatches2(err, type1, type2) (PyErr_GivenExceptionMatches(err, type1) || PyErr_GivenExceptionMatches(err, type2)) +#endif +#define __Pyx_PyException_Check(obj) __Pyx_TypeCheck(obj, PyExc_Exception) + +/* CheckBinaryVersion.proto */ +static int __Pyx_check_binary_version(void); + +/* InitStrings.proto */ +static int __Pyx_InitStrings(__Pyx_StringTabEntry *t); + + +/* Module declarations from 'cython' */ + +/* Module declarations from 'libc.string' */ + +/* Module declarations from 'libc.stdlib' */ + +/* Module declarations from 'libcpp.vector' */ + +/* Module declarations from 'libcpp.string' */ + +/* Module declarations from 'euclidemu2' */ +static PyTypeObject *__pyx_ptype_10euclidemu2_PyCosmology = 0; +static PyTypeObject *__pyx_ptype_10euclidemu2_PyEuclidEmulator = 0; +static std::vector __pyx_convert_vector_from_py_double(PyObject *); /*proto*/ +static std::string __pyx_convert_string_from_py_std__in_string(PyObject *); /*proto*/ +static CYTHON_INLINE PyObject *__Pyx_carray_to_py_double(double *, Py_ssize_t); /*proto*/ +static CYTHON_INLINE PyObject *__Pyx_carray_to_tuple_double(double *, Py_ssize_t); /*proto*/ +static int __Pyx_carray_from_py_double(PyObject *, double *, Py_ssize_t); /*proto*/ +static CYTHON_INLINE PyObject *__Pyx_carray_to_py_double___5b_0x265_5d_(double (*)[0x265], Py_ssize_t); /*proto*/ +static CYTHON_INLINE PyObject *__Pyx_carray_to_tuple_double___5b_0x265_5d_(double (*)[0x265], Py_ssize_t); /*proto*/ +static int __Pyx_carray_from_py_double___5b_0x265_5d_(PyObject *, double (*)[0x265], Py_ssize_t); /*proto*/ +#define __Pyx_MODULE_NAME "euclidemu2" +extern int __pyx_module_is_main_euclidemu2; +int __pyx_module_is_main_euclidemu2 = 0; + +/* Implementation of 'euclidemu2' */ +static PyObject *__pyx_builtin_TypeError; +static PyObject *__pyx_builtin_ValueError; +static PyObject *__pyx_builtin_print; +static PyObject *__pyx_builtin_max; +static PyObject *__pyx_builtin_min; +static PyObject *__pyx_builtin_any; +static PyObject *__pyx_builtin_range; +static PyObject *__pyx_builtin_zip; +static PyObject *__pyx_builtin_OverflowError; +static PyObject *__pyx_builtin_enumerate; +static PyObject *__pyx_builtin_IndexError; +static const char __pyx_k_h[] = "h"; +static const char __pyx_k_i[] = "i"; +static const char __pyx_k_k[] = "k"; +static const char __pyx_k_l[] = "l"; +static const char __pyx_k_u[] = "u"; +static const char __pyx_k_w[] = "w"; +static const char __pyx_k_z[] = "z"; +static const char __pyx_k_As[] = "As"; +static const char __pyx_k_H0[] = "H0"; +static const char __pyx_k_np[] = "np"; +static const char __pyx_k_ns[] = "ns"; +static const char __pyx_k_w0[] = "w0"; +static const char __pyx_k_wa[] = "wa"; +static const char __pyx_k_A_s[] = "A_s"; +static const char __pyx_k_Omb[] = "Omb"; +static const char __pyx_k_Omc[] = "Omc"; +static const char __pyx_k_Omm[] = "Omm"; +static const char __pyx_k_any[] = "any"; +static const char __pyx_k_csm[] = "csm"; +static const char __pyx_k_ee2[] = "ee2"; +static const char __pyx_k_exp[] = "exp"; +static const char __pyx_k_max[] = "max"; +static const char __pyx_k_min[] = "min"; +static const char __pyx_k_mnu[] = "mnu"; +static const char __pyx_k_n_s[] = "n_s"; +static const char __pyx_k_sys[] = "sys"; +static const char __pyx_k_tmp[] = "tmp"; +static const char __pyx_k_w_0[] = "w_0"; +static const char __pyx_k_w_a[] = "w_a"; +static const char __pyx_k_zip[] = "zip"; +static const char __pyx_k_Bvec[] = "Bvec"; +static const char __pyx_k_Om_b[] = "Om_b"; +static const char __pyx_k_Om_m[] = "Om_m"; +static const char __pyx_k_exit[] = "exit"; +static const char __pyx_k_kvec[] = "kvec"; +static const char __pyx_k_m_nu[] = "m_nu"; +static const char __pyx_k_main[] = "__main__"; +static const char __pyx_k_mask[] = "mask"; +static const char __pyx_k_name[] = "__name__"; +static const char __pyx_k_om_b[] = "om_b"; +static const char __pyx_k_om_m[] = "om_m"; +static const char __pyx_k_test[] = "__test__"; +static const char __pyx_k_warn[] = "warn"; +static const char __pyx_k_zvec[] = "zvec"; +static const char __pyx_k_boost[] = "boost"; +static const char __pyx_k_bvals[] = "bvals"; +static const char __pyx_k_cosmo[] = "cosmo"; +static const char __pyx_k_kvals[] = "kvals"; +static const char __pyx_k_log10[] = "log10"; +static const char __pyx_k_numpy[] = "numpy"; +static const char __pyx_k_ombh2[] = "ombh2"; +static const char __pyx_k_omch2[] = "omch2"; +static const char __pyx_k_ommh2[] = "ommh2"; +static const char __pyx_k_print[] = "print"; +static const char __pyx_k_range[] = "range"; +static const char __pyx_k_shape[] = "shape"; +static const char __pyx_k_Om_cdm[] = "Om_cdm"; +static const char __pyx_k_import[] = "__import__"; +static const char __pyx_k_m_ncdm[] = "m_ncdm"; +static const char __pyx_k_reduce[] = "__reduce__"; +static const char __pyx_k_w0_fld[] = "w0_fld"; +static const char __pyx_k_wa_fld[] = "wa_fld"; +static const char __pyx_k_Omega_b[] = "Omega_b"; +static const char __pyx_k_Omega_m[] = "Omega_m"; +static const char __pyx_k_asarray[] = "asarray"; +static const char __pyx_k_h_range[] = "h_range"; +static const char __pyx_k_k_shape[] = "k_shape"; +static const char __pyx_k_omega_b[] = "omega_b"; +static const char __pyx_k_omega_m[] = "omega_m"; +static const char __pyx_k_reshape[] = "reshape"; +static const char __pyx_k_Sum_m_nu[] = "Sum_m_nu"; +static const char __pyx_k_b_extrap[] = "b_extrap"; +static const char __pyx_k_filename[] = "filename"; +static const char __pyx_k_getstate[] = "__getstate__"; +static const char __pyx_k_par_dict[] = "par_dict"; +static const char __pyx_k_redshift[] = "redshift"; +static const char __pyx_k_setstate[] = "__setstate__"; +static const char __pyx_k_warnings[] = "_warnings"; +static const char __pyx_k_A_s_range[] = "A_s_range"; +static const char __pyx_k_Omega_cdm[] = "Omega_cdm"; +static const char __pyx_k_TypeError[] = "TypeError"; +static const char __pyx_k_cosmo_par[] = "cosmo_par"; +static const char __pyx_k_enumerate[] = "enumerate"; +static const char __pyx_k_get_boost[] = "get_boost"; +static const char __pyx_k_len_kvals[] = "len_kvals"; +static const char __pyx_k_n_s_range[] = "n_s_range"; +static const char __pyx_k_omega_cdm[] = "omega_cdm"; +static const char __pyx_k_ones_like[] = "ones_like"; +static const char __pyx_k_redshifts[] = "redshifts"; +static const char __pyx_k_reduce_ex[] = "__reduce_ex__"; +static const char __pyx_k_w_0_range[] = "w_0_range"; +static const char __pyx_k_w_a_range[] = "w_a_range"; +static const char __pyx_k_IndexError[] = "IndexError"; +static const char __pyx_k_ValueError[] = "ValueError"; +static const char __pyx_k_euclidemu2[] = "euclidemu2"; +static const char __pyx_k_lower_mask[] = "lower_mask"; +static const char __pyx_k_m_nu_range[] = "m_nu_range"; +static const char __pyx_k_n_redshift[] = "n_redshift"; +static const char __pyx_k_om_b_range[] = "om_b_range"; +static const char __pyx_k_om_m_range[] = "om_m_range"; +static const char __pyx_k_upper_mask[] = "upper_mask"; +static const char __pyx_k_warnings_2[] = "warnings"; +static const char __pyx_k_CubicSpline[] = "_CubicSpline"; +static const char __pyx_k_PyCosmology[] = "PyCosmology"; +static const char __pyx_k_compute_nlc[] = "compute_nlc"; +static const char __pyx_k_concatenate[] = "concatenate"; +static const char __pyx_k_custom_kvec[] = "custom_kvec"; +static const char __pyx_k_ln10_10_A_s[] = "ln10^{10}A_s"; +static const char __pyx_k_wrn_message[] = "wrn_message"; +static const char __pyx_k_cosmo_par_in[] = "cosmo_par_in"; +static const char __pyx_k_CubicSpline_2[] = "CubicSpline"; +static const char __pyx_k_OverflowError[] = "OverflowError"; +static const char __pyx_k_emu_pars_dict[] = "emu_pars_dict"; +static const char __pyx_k_len_redshifts[] = "len_redshifts"; +static const char __pyx_k_reduce_cython[] = "__reduce_cython__"; +static const char __pyx_k_convert_to_emu[] = "convert_to_emu"; +static const char __pyx_k_custom_k_above[] = "custom_k_above"; +static const char __pyx_k_custom_k_below[] = "custom_k_below"; +static const char __pyx_k_h_not_in_range[] = "h_not_in_range"; +static const char __pyx_k_class_pars_dict[] = "class_pars_dict"; +static const char __pyx_k_setstate_cython[] = "__setstate_cython__"; +static const char __pyx_k_A_s_not_in_range[] = "A_s_not_in_range"; +static const char __pyx_k_PyEuclidEmulator[] = "PyEuclidEmulator"; +static const char __pyx_k_arg_h_wrong_type[] = "arg h wrong type"; +static const char __pyx_k_n_s_not_in_range[] = "n_s_not_in_range"; +static const char __pyx_k_w_0_not_in_range[] = "w_0_not_in_range"; +static const char __pyx_k_w_a_not_in_range[] = "w_a_not_in_range"; +static const char __pyx_k_check_param_range[] = "check_param_range"; +static const char __pyx_k_m_nu_not_in_range[] = "m_nu_not_in_range"; +static const char __pyx_k_om_b_not_in_range[] = "om_b_not_in_range"; +static const char __pyx_k_om_m_not_in_range[] = "om_m_not_in_range"; +static const char __pyx_k_scipy_interpolate[] = "scipy.interpolate"; +static const char __pyx_k_arg_A_s_wrong_type[] = "arg A_s wrong type"; +static const char __pyx_k_arg_n_s_wrong_type[] = "arg n_s wrong type"; +static const char __pyx_k_arg_w_0_wrong_type[] = "arg w_0 wrong type"; +static const char __pyx_k_arg_w_a_wrong_type[] = "arg w_a wrong type"; +static const char __pyx_k_cline_in_traceback[] = "cline_in_traceback"; +static const char __pyx_k_src_euclidemu2_pyx[] = "src/euclidemu2.pyx"; +static const char __pyx_k_do_extrapolate_above[] = "do_extrapolate_above"; +static const char __pyx_k_do_extrapolate_below[] = "do_extrapolate_below"; +static const char __pyx_k_custom_k_within_range[] = "custom_k_within_range"; +static const char __pyx_k_arg_Omega_b_wrong_type[] = "arg Omega_b wrong type"; +static const char __pyx_k_arg_Omega_m_wrong_type[] = "arg Omega_m wrong type"; +static const char __pyx_k_arg_Sum_m_nu_wrong_type[] = "arg Sum_m_nu wrong type"; +static const char __pyx_k_Missing_parameter_Omega_b_Can_t[] = "Missing parameter Omega_b. Can't proceed."; +static const char __pyx_k_Parameter_range_violation_Omega[] = "Parameter range violation: Omega_b is set to %f, but should be in the interval [0.04, 0.06]."; +static const char __pyx_k_EuclidEmulator2_allows_only_reds[] = "EuclidEmulator2 allows only redshifts z <= 10.0.\n"; +static const char __pyx_k_EuclidEmulator2_emulates_the_non[] = "EuclidEmulator2 emulates the non-linear correction in \nthe interval [8.73e-3 h/Mpc, 9.41h/Mpc]. You are \nrequesting k modes beyond k_max = 9.41h/Mpc. \nHigher k modes constantly extrapolated."; +static const char __pyx_k_Missing_parameter_A_s_or_ln10_10[] = "Missing parameter A_s or ln10^{10}A_s. Can't proceed."; +static const char __pyx_k_Missing_parameter_Omega_m_or_Ome[] = "Missing parameter Omega_m or Omega_cdm. Can't proceed."; +static const char __pyx_k_Missing_parameter_h_Can_t_procee[] = "Missing parameter h. Can't proceed."; +static const char __pyx_k_Missing_parameter_m_ncdm_Can_t_p[] = "Missing parameter m_ncdm. Can't proceed."; +static const char __pyx_k_Missing_parameter_n_s_Can_t_proc[] = "Missing parameter n_s. Can't proceed."; +static const char __pyx_k_Missing_parameter_w0_Will_set_to[] = "Missing parameter w0. Will set to -1."; +static const char __pyx_k_Missing_parameter_wa_Will_set_to[] = "Missing parameter wa. Will set to 0."; +static const char __pyx_k_Parameter_range_violation_A_s_is[] = "Parameter range violation: A_s is set to %f, but should be in the interval [1.7e-9, 2.5e-9]."; +static const char __pyx_k_Parameter_range_violation_h_is_s[] = "Parameter range violation: h is set to %f, but should be in the interval [0.61, 0.73]."; +static const char __pyx_k_Parameter_range_violation_m_ncdm[] = "Parameter range violation: m_ncdm is set to %f, but should be in the interval [0.00, 0.15]."; +static const char __pyx_k_Parameter_range_violation_n_s_is[] = "Parameter range violation: n_s is set to %f, but should be in the interval [0.92, 1.00]."; +static const char __pyx_k_Parameter_range_violation_w_0_is[] = "Parameter range violation: w_0 is set to %f, but should be in the interval [-1.3, -0.7]."; +static const char __pyx_k_Parameter_range_violation_w_a_is[] = "Parameter range violation: w_a is set to %f, but should be in the interval [-0.7, 0.5]."; +static const char __pyx_k_The_cosmological_parameters_must[] = "The cosmological parameters must be passed as a python dictionary.\n"; +static const char __pyx_k_no_default___reduce___due_to_non[] = "no default __reduce__ due to non-trivial __cinit__"; +static const char __pyx_k_Parameter_range_violation_Omega_2[] = "Parameter range violation: Omega_m is set to %f, but should be in the interval [0.24, 0.40]."; +static const char __pyx_k_EuclidEmulator2_emulates_the_non_2[] = "EuclidEmulator2 emulates the non-linear correction in \nthe interval [8.73e-3 h/Mpc, 9.41h/Mpc]. You are \nrequesting k modes below k_min = 8.73e-3 h/Mpc. \nLower k modes constantly extrapolated."; +static PyObject *__pyx_n_s_A_s; +static PyObject *__pyx_n_u_A_s; +static PyObject *__pyx_n_s_A_s_not_in_range; +static PyObject *__pyx_n_s_A_s_range; +static PyObject *__pyx_n_u_As; +static PyObject *__pyx_n_s_Bvec; +static PyObject *__pyx_n_s_CubicSpline; +static PyObject *__pyx_n_s_CubicSpline_2; +static PyObject *__pyx_kp_u_EuclidEmulator2_allows_only_reds; +static PyObject *__pyx_kp_u_EuclidEmulator2_emulates_the_non; +static PyObject *__pyx_kp_u_EuclidEmulator2_emulates_the_non_2; +static PyObject *__pyx_n_u_H0; +static PyObject *__pyx_n_s_IndexError; +static PyObject *__pyx_kp_u_Missing_parameter_A_s_or_ln10_10; +static PyObject *__pyx_kp_u_Missing_parameter_Omega_b_Can_t; +static PyObject *__pyx_kp_u_Missing_parameter_Omega_m_or_Ome; +static PyObject *__pyx_kp_u_Missing_parameter_h_Can_t_procee; +static PyObject *__pyx_kp_u_Missing_parameter_m_ncdm_Can_t_p; +static PyObject *__pyx_kp_u_Missing_parameter_n_s_Can_t_proc; +static PyObject *__pyx_kp_u_Missing_parameter_w0_Will_set_to; +static PyObject *__pyx_kp_u_Missing_parameter_wa_Will_set_to; +static PyObject *__pyx_n_s_Om_b; +static PyObject *__pyx_n_s_Om_cdm; +static PyObject *__pyx_n_s_Om_m; +static PyObject *__pyx_n_u_Omb; +static PyObject *__pyx_n_u_Omc; +static PyObject *__pyx_n_s_Omega_b; +static PyObject *__pyx_n_u_Omega_b; +static PyObject *__pyx_n_u_Omega_cdm; +static PyObject *__pyx_n_s_Omega_m; +static PyObject *__pyx_n_u_Omega_m; +static PyObject *__pyx_n_u_Omm; +static PyObject *__pyx_n_s_OverflowError; +static PyObject *__pyx_kp_u_Parameter_range_violation_A_s_is; +static PyObject *__pyx_kp_u_Parameter_range_violation_Omega; +static PyObject *__pyx_kp_u_Parameter_range_violation_Omega_2; +static PyObject *__pyx_kp_u_Parameter_range_violation_h_is_s; +static PyObject *__pyx_kp_u_Parameter_range_violation_m_ncdm; +static PyObject *__pyx_kp_u_Parameter_range_violation_n_s_is; +static PyObject *__pyx_kp_u_Parameter_range_violation_w_0_is; +static PyObject *__pyx_kp_u_Parameter_range_violation_w_a_is; +static PyObject *__pyx_n_s_PyCosmology; +static PyObject *__pyx_n_s_PyEuclidEmulator; +static PyObject *__pyx_n_s_Sum_m_nu; +static PyObject *__pyx_kp_u_The_cosmological_parameters_must; +static PyObject *__pyx_n_s_TypeError; +static PyObject *__pyx_n_s_ValueError; +static PyObject *__pyx_n_s_any; +static PyObject *__pyx_kp_u_arg_A_s_wrong_type; +static PyObject *__pyx_kp_u_arg_Omega_b_wrong_type; +static PyObject *__pyx_kp_u_arg_Omega_m_wrong_type; +static PyObject *__pyx_kp_u_arg_Sum_m_nu_wrong_type; +static PyObject *__pyx_kp_u_arg_h_wrong_type; +static PyObject *__pyx_kp_u_arg_n_s_wrong_type; +static PyObject *__pyx_kp_u_arg_w_0_wrong_type; +static PyObject *__pyx_kp_u_arg_w_a_wrong_type; +static PyObject *__pyx_n_s_asarray; +static PyObject *__pyx_n_s_b_extrap; +static PyObject *__pyx_n_s_boost; +static PyObject *__pyx_n_s_bvals; +static PyObject *__pyx_n_s_check_param_range; +static PyObject *__pyx_n_s_class_pars_dict; +static PyObject *__pyx_n_s_cline_in_traceback; +static PyObject *__pyx_n_s_compute_nlc; +static PyObject *__pyx_n_s_concatenate; +static PyObject *__pyx_n_s_convert_to_emu; +static PyObject *__pyx_n_s_cosmo; +static PyObject *__pyx_n_s_cosmo_par; +static PyObject *__pyx_n_s_cosmo_par_in; +static PyObject *__pyx_n_s_csm; +static PyObject *__pyx_n_s_custom_k_above; +static PyObject *__pyx_n_s_custom_k_below; +static PyObject *__pyx_n_s_custom_k_within_range; +static PyObject *__pyx_n_s_custom_kvec; +static PyObject *__pyx_n_s_do_extrapolate_above; +static PyObject *__pyx_n_s_do_extrapolate_below; +static PyObject *__pyx_n_s_ee2; +static PyObject *__pyx_n_s_emu_pars_dict; +static PyObject *__pyx_n_s_enumerate; +static PyObject *__pyx_n_s_euclidemu2; +static PyObject *__pyx_n_s_exit; +static PyObject *__pyx_n_s_exp; +static PyObject *__pyx_n_s_filename; +static PyObject *__pyx_n_s_get_boost; +static PyObject *__pyx_n_s_getstate; +static PyObject *__pyx_n_s_h; +static PyObject *__pyx_n_u_h; +static PyObject *__pyx_n_s_h_not_in_range; +static PyObject *__pyx_n_s_h_range; +static PyObject *__pyx_n_s_i; +static PyObject *__pyx_n_s_import; +static PyObject *__pyx_n_s_k; +static PyObject *__pyx_n_s_k_shape; +static PyObject *__pyx_n_s_kvals; +static PyObject *__pyx_n_s_kvec; +static PyObject *__pyx_n_s_l; +static PyObject *__pyx_n_s_len_kvals; +static PyObject *__pyx_n_s_len_redshifts; +static PyObject *__pyx_kp_u_ln10_10_A_s; +static PyObject *__pyx_n_s_log10; +static PyObject *__pyx_n_s_lower_mask; +static PyObject *__pyx_n_s_m_ncdm; +static PyObject *__pyx_n_u_m_ncdm; +static PyObject *__pyx_n_u_m_nu; +static PyObject *__pyx_n_s_m_nu_not_in_range; +static PyObject *__pyx_n_s_m_nu_range; +static PyObject *__pyx_n_s_main; +static PyObject *__pyx_n_s_mask; +static PyObject *__pyx_n_s_max; +static PyObject *__pyx_n_s_min; +static PyObject *__pyx_n_u_mnu; +static PyObject *__pyx_n_s_n_redshift; +static PyObject *__pyx_n_s_n_s; +static PyObject *__pyx_n_u_n_s; +static PyObject *__pyx_n_s_n_s_not_in_range; +static PyObject *__pyx_n_s_n_s_range; +static PyObject *__pyx_n_s_name; +static PyObject *__pyx_kp_s_no_default___reduce___due_to_non; +static PyObject *__pyx_n_s_np; +static PyObject *__pyx_n_u_ns; +static PyObject *__pyx_n_s_numpy; +static PyObject *__pyx_n_u_om_b; +static PyObject *__pyx_n_s_om_b_not_in_range; +static PyObject *__pyx_n_s_om_b_range; +static PyObject *__pyx_n_u_om_m; +static PyObject *__pyx_n_s_om_m_not_in_range; +static PyObject *__pyx_n_s_om_m_range; +static PyObject *__pyx_n_u_ombh2; +static PyObject *__pyx_n_u_omch2; +static PyObject *__pyx_n_u_omega_b; +static PyObject *__pyx_n_u_omega_cdm; +static PyObject *__pyx_n_u_omega_m; +static PyObject *__pyx_n_u_ommh2; +static PyObject *__pyx_n_s_ones_like; +static PyObject *__pyx_n_s_par_dict; +static PyObject *__pyx_n_s_print; +static PyObject *__pyx_n_s_range; +static PyObject *__pyx_n_s_redshift; +static PyObject *__pyx_n_s_redshifts; +static PyObject *__pyx_n_s_reduce; +static PyObject *__pyx_n_s_reduce_cython; +static PyObject *__pyx_n_s_reduce_ex; +static PyObject *__pyx_n_s_reshape; +static PyObject *__pyx_n_s_scipy_interpolate; +static PyObject *__pyx_n_s_setstate; +static PyObject *__pyx_n_s_setstate_cython; +static PyObject *__pyx_n_s_shape; +static PyObject *__pyx_kp_s_src_euclidemu2_pyx; +static PyObject *__pyx_n_s_sys; +static PyObject *__pyx_n_s_test; +static PyObject *__pyx_n_s_tmp; +static PyObject *__pyx_n_s_u; +static PyObject *__pyx_n_s_upper_mask; +static PyObject *__pyx_n_u_w; +static PyObject *__pyx_n_u_w0; +static PyObject *__pyx_n_s_w0_fld; +static PyObject *__pyx_n_u_w0_fld; +static PyObject *__pyx_n_s_w_0; +static PyObject *__pyx_n_u_w_0; +static PyObject *__pyx_n_s_w_0_not_in_range; +static PyObject *__pyx_n_s_w_0_range; +static PyObject *__pyx_n_s_w_a; +static PyObject *__pyx_n_u_w_a; +static PyObject *__pyx_n_s_w_a_not_in_range; +static PyObject *__pyx_n_s_w_a_range; +static PyObject *__pyx_n_u_wa; +static PyObject *__pyx_n_s_wa_fld; +static PyObject *__pyx_n_u_wa_fld; +static PyObject *__pyx_n_s_warn; +static PyObject *__pyx_n_s_warnings; +static PyObject *__pyx_n_s_warnings_2; +static PyObject *__pyx_n_s_wrn_message; +static PyObject *__pyx_n_s_z; +static PyObject *__pyx_n_s_zip; +static PyObject *__pyx_n_s_zvec; +static int __pyx_pf_10euclidemu2_11PyCosmology___cinit__(struct __pyx_obj_10euclidemu2_PyCosmology *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_args, CYTHON_UNUSED PyObject *__pyx_v_kwargs); /* proto */ +static int __pyx_pf_10euclidemu2_11PyCosmology_2__init__(struct __pyx_obj_10euclidemu2_PyCosmology *__pyx_v_self, double __pyx_v_Omega_b, double __pyx_v_Omega_m, double __pyx_v_Sum_m_nu, double __pyx_v_n_s, double __pyx_v_h, double __pyx_v_w_0, double __pyx_v_w_a, double __pyx_v_A_s); /* proto */ +static void __pyx_pf_10euclidemu2_11PyCosmology_4__dealloc__(struct __pyx_obj_10euclidemu2_PyCosmology *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_10euclidemu2_11PyCosmology_10_free_inst___get__(struct __pyx_obj_10euclidemu2_PyCosmology *__pyx_v_self); /* proto */ +static int __pyx_pf_10euclidemu2_11PyCosmology_10_free_inst_2__set__(struct __pyx_obj_10euclidemu2_PyCosmology *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ +static PyObject *__pyx_pf_10euclidemu2_11PyCosmology_6__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_10euclidemu2_PyCosmology *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_10euclidemu2_11PyCosmology_8__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_10euclidemu2_PyCosmology *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */ +static int __pyx_pf_10euclidemu2_16PyEuclidEmulator___cinit__(struct __pyx_obj_10euclidemu2_PyEuclidEmulator *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_10euclidemu2_16PyEuclidEmulator_2compute_nlc(struct __pyx_obj_10euclidemu2_PyEuclidEmulator *__pyx_v_self, struct __pyx_obj_10euclidemu2_PyCosmology *__pyx_v_csm, PyObject *__pyx_v_redshift, PyObject *__pyx_v_n_redshift); /* proto */ +static PyObject *__pyx_pf_10euclidemu2_16PyEuclidEmulator_4write_nlc2file(struct __pyx_obj_10euclidemu2_PyEuclidEmulator *__pyx_v_self, PyObject *__pyx_v_filename, PyObject *__pyx_v_zvec, PyObject *__pyx_v_n_redshift); /* proto */ +static PyObject *__pyx_pf_10euclidemu2_16PyEuclidEmulator_4kvec___get__(struct __pyx_obj_10euclidemu2_PyEuclidEmulator *__pyx_v_self); /* proto */ +static int __pyx_pf_10euclidemu2_16PyEuclidEmulator_4kvec_2__set__(struct __pyx_obj_10euclidemu2_PyEuclidEmulator *__pyx_v_self, PyObject *__pyx_v_kvec); /* proto */ +static PyObject *__pyx_pf_10euclidemu2_16PyEuclidEmulator_4Bvec___get__(struct __pyx_obj_10euclidemu2_PyEuclidEmulator *__pyx_v_self); /* proto */ +static int __pyx_pf_10euclidemu2_16PyEuclidEmulator_4Bvec_2__set__(struct __pyx_obj_10euclidemu2_PyEuclidEmulator *__pyx_v_self, PyObject *__pyx_v_Bvec); /* proto */ +static PyObject *__pyx_pf_10euclidemu2_16PyEuclidEmulator_6__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_10euclidemu2_PyEuclidEmulator *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_10euclidemu2_16PyEuclidEmulator_8__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_10euclidemu2_PyEuclidEmulator *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */ +static PyObject *__pyx_pf_10euclidemu2_check_param_range(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_par_dict); /* proto */ +static PyObject *__pyx_pf_10euclidemu2_2convert_to_emu(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_class_pars_dict); /* proto */ +static PyObject *__pyx_pf_10euclidemu2_4get_boost(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_cosmo_par_in, PyObject *__pyx_v_redshifts, PyObject *__pyx_v_custom_kvec); /* proto */ +static PyObject *__pyx_tp_new_10euclidemu2_PyCosmology(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_10euclidemu2_PyEuclidEmulator(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_float_0_0; +static PyObject *__pyx_float_0_5; +static PyObject *__pyx_float_0_00; +static PyObject *__pyx_float_0_04; +static PyObject *__pyx_float_0_06; +static PyObject *__pyx_float_0_15; +static PyObject *__pyx_float_0_24; +static PyObject *__pyx_float_0_40; +static PyObject *__pyx_float_0_61; +static PyObject *__pyx_float_0_73; +static PyObject *__pyx_float_0_92; +static PyObject *__pyx_float_1_00; +static PyObject *__pyx_float_10_0; +static PyObject *__pyx_float_100_; +static PyObject *__pyx_float_1_7eneg_9; +static PyObject *__pyx_float_2_5eneg_9; +static PyObject *__pyx_float_1_0eneg_10; +static PyObject *__pyx_float_neg_0_7; +static PyObject *__pyx_float_neg_1_0; +static PyObject *__pyx_float_neg_1_3; +static PyObject *__pyx_int_2; +static PyObject *__pyx_int_10; +static PyObject *__pyx_tuple_; +static PyObject *__pyx_tuple__2; +static PyObject *__pyx_tuple__3; +static PyObject *__pyx_tuple__4; +static PyObject *__pyx_tuple__5; +static PyObject *__pyx_tuple__6; +static PyObject *__pyx_tuple__7; +static PyObject *__pyx_tuple__8; +static PyObject *__pyx_tuple__9; +static PyObject *__pyx_tuple__10; +static PyObject *__pyx_tuple__11; +static PyObject *__pyx_tuple__12; +static PyObject *__pyx_tuple__13; +static PyObject *__pyx_tuple__14; +static PyObject *__pyx_tuple__16; +static PyObject *__pyx_tuple__18; +static PyObject *__pyx_codeobj__15; +static PyObject *__pyx_codeobj__17; +static PyObject *__pyx_codeobj__19; +/* Late includes */ + +/* "euclidemu2.pyx":62 + * cdef public bint _free_inst + * + * def __cinit__(self, *args, **kwargs): # <<<<<<<<<<<<<< + * self._inst = NULL + * self._free_inst = True + */ + +/* Python wrapper */ +static int __pyx_pw_10euclidemu2_11PyCosmology_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static int __pyx_pw_10euclidemu2_11PyCosmology_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + CYTHON_UNUSED PyObject *__pyx_v_args = 0; + CYTHON_UNUSED PyObject *__pyx_v_kwargs = 0; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0); + if (unlikely(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__cinit__", 1))) return -1; + __Pyx_INCREF(__pyx_args); + __pyx_v_args = __pyx_args; + __pyx_r = __pyx_pf_10euclidemu2_11PyCosmology___cinit__(((struct __pyx_obj_10euclidemu2_PyCosmology *)__pyx_v_self), __pyx_v_args, __pyx_v_kwargs); + + /* function exit code */ + __Pyx_XDECREF(__pyx_v_args); + __Pyx_XDECREF(__pyx_v_kwargs); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_10euclidemu2_11PyCosmology___cinit__(struct __pyx_obj_10euclidemu2_PyCosmology *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_args, CYTHON_UNUSED PyObject *__pyx_v_kwargs) { + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__cinit__", 0); + + /* "euclidemu2.pyx":63 + * + * def __cinit__(self, *args, **kwargs): + * self._inst = NULL # <<<<<<<<<<<<<< + * self._free_inst = True + * + */ + __pyx_v_self->_inst = NULL; + + /* "euclidemu2.pyx":64 + * def __cinit__(self, *args, **kwargs): + * self._inst = NULL + * self._free_inst = True # <<<<<<<<<<<<<< + * + * def __init__(self, double Omega_b , double Omega_m , double Sum_m_nu , double n_s , double h , double w_0 , double w_a , double A_s ): + */ + __pyx_v_self->_free_inst = 1; + + /* "euclidemu2.pyx":62 + * cdef public bint _free_inst + * + * def __cinit__(self, *args, **kwargs): # <<<<<<<<<<<<<< + * self._inst = NULL + * self._free_inst = True + */ + + /* function exit code */ + __pyx_r = 0; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "euclidemu2.pyx":66 + * self._free_inst = True + * + * def __init__(self, double Omega_b , double Omega_m , double Sum_m_nu , double n_s , double h , double w_0 , double w_a , double A_s ): # <<<<<<<<<<<<<< + * """Cython signature: void Cosmology(double Omega_b, double Omega_m, double Sum_m_nu, double n_s, double h, double w_0, double w_a, double A_s)""" + * assert isinstance(Omega_b, float), 'arg Omega_b wrong type' + */ + +/* Python wrapper */ +static int __pyx_pw_10euclidemu2_11PyCosmology_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static char __pyx_doc_10euclidemu2_11PyCosmology_2__init__[] = "Cython signature: void Cosmology(double Omega_b, double Omega_m, double Sum_m_nu, double n_s, double h, double w_0, double w_a, double A_s)"; +#if CYTHON_COMPILING_IN_CPYTHON +struct wrapperbase __pyx_wrapperbase_10euclidemu2_11PyCosmology_2__init__; +#endif +static int __pyx_pw_10euclidemu2_11PyCosmology_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + double __pyx_v_Omega_b; + double __pyx_v_Omega_m; + double __pyx_v_Sum_m_nu; + double __pyx_v_n_s; + double __pyx_v_h; + double __pyx_v_w_0; + double __pyx_v_w_a; + double __pyx_v_A_s; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__init__ (wrapper)", 0); + { + static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_Omega_b,&__pyx_n_s_Omega_m,&__pyx_n_s_Sum_m_nu,&__pyx_n_s_n_s,&__pyx_n_s_h,&__pyx_n_s_w_0,&__pyx_n_s_w_a,&__pyx_n_s_A_s,0}; + PyObject* values[8] = {0,0,0,0,0,0,0,0}; + if (unlikely(__pyx_kwds)) { + Py_ssize_t kw_args; + const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); + switch (pos_args) { + case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7); + CYTHON_FALLTHROUGH; + case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6); + CYTHON_FALLTHROUGH; + case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5); + CYTHON_FALLTHROUGH; + case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4); + CYTHON_FALLTHROUGH; + case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); + CYTHON_FALLTHROUGH; + case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); + CYTHON_FALLTHROUGH; + case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); + CYTHON_FALLTHROUGH; + case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = PyDict_Size(__pyx_kwds); + switch (pos_args) { + case 0: + if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Omega_b)) != 0)) kw_args--; + else goto __pyx_L5_argtuple_error; + CYTHON_FALLTHROUGH; + case 1: + if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Omega_m)) != 0)) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("__init__", 1, 8, 8, 1); __PYX_ERR(1, 66, __pyx_L3_error) + } + CYTHON_FALLTHROUGH; + case 2: + if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Sum_m_nu)) != 0)) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("__init__", 1, 8, 8, 2); __PYX_ERR(1, 66, __pyx_L3_error) + } + CYTHON_FALLTHROUGH; + case 3: + if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n_s)) != 0)) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("__init__", 1, 8, 8, 3); __PYX_ERR(1, 66, __pyx_L3_error) + } + CYTHON_FALLTHROUGH; + case 4: + if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_h)) != 0)) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("__init__", 1, 8, 8, 4); __PYX_ERR(1, 66, __pyx_L3_error) + } + CYTHON_FALLTHROUGH; + case 5: + if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_w_0)) != 0)) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("__init__", 1, 8, 8, 5); __PYX_ERR(1, 66, __pyx_L3_error) + } + CYTHON_FALLTHROUGH; + case 6: + if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_w_a)) != 0)) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("__init__", 1, 8, 8, 6); __PYX_ERR(1, 66, __pyx_L3_error) + } + CYTHON_FALLTHROUGH; + case 7: + if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_A_s)) != 0)) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("__init__", 1, 8, 8, 7); __PYX_ERR(1, 66, __pyx_L3_error) + } + } + if (unlikely(kw_args > 0)) { + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(1, 66, __pyx_L3_error) + } + } else if (PyTuple_GET_SIZE(__pyx_args) != 8) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + values[1] = PyTuple_GET_ITEM(__pyx_args, 1); + values[2] = PyTuple_GET_ITEM(__pyx_args, 2); + values[3] = PyTuple_GET_ITEM(__pyx_args, 3); + values[4] = PyTuple_GET_ITEM(__pyx_args, 4); + values[5] = PyTuple_GET_ITEM(__pyx_args, 5); + values[6] = PyTuple_GET_ITEM(__pyx_args, 6); + values[7] = PyTuple_GET_ITEM(__pyx_args, 7); + } + __pyx_v_Omega_b = __pyx_PyFloat_AsDouble(values[0]); if (unlikely((__pyx_v_Omega_b == (double)-1) && PyErr_Occurred())) __PYX_ERR(1, 66, __pyx_L3_error) + __pyx_v_Omega_m = __pyx_PyFloat_AsDouble(values[1]); if (unlikely((__pyx_v_Omega_m == (double)-1) && PyErr_Occurred())) __PYX_ERR(1, 66, __pyx_L3_error) + __pyx_v_Sum_m_nu = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_Sum_m_nu == (double)-1) && PyErr_Occurred())) __PYX_ERR(1, 66, __pyx_L3_error) + __pyx_v_n_s = __pyx_PyFloat_AsDouble(values[3]); if (unlikely((__pyx_v_n_s == (double)-1) && PyErr_Occurred())) __PYX_ERR(1, 66, __pyx_L3_error) + __pyx_v_h = __pyx_PyFloat_AsDouble(values[4]); if (unlikely((__pyx_v_h == (double)-1) && PyErr_Occurred())) __PYX_ERR(1, 66, __pyx_L3_error) + __pyx_v_w_0 = __pyx_PyFloat_AsDouble(values[5]); if (unlikely((__pyx_v_w_0 == (double)-1) && PyErr_Occurred())) __PYX_ERR(1, 66, __pyx_L3_error) + __pyx_v_w_a = __pyx_PyFloat_AsDouble(values[6]); if (unlikely((__pyx_v_w_a == (double)-1) && PyErr_Occurred())) __PYX_ERR(1, 66, __pyx_L3_error) + __pyx_v_A_s = __pyx_PyFloat_AsDouble(values[7]); if (unlikely((__pyx_v_A_s == (double)-1) && PyErr_Occurred())) __PYX_ERR(1, 66, __pyx_L3_error) + } + goto __pyx_L4_argument_unpacking_done; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("__init__", 1, 8, 8, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 66, __pyx_L3_error) + __pyx_L3_error:; + __Pyx_AddTraceback("euclidemu2.PyCosmology.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return -1; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_10euclidemu2_11PyCosmology_2__init__(((struct __pyx_obj_10euclidemu2_PyCosmology *)__pyx_v_self), __pyx_v_Omega_b, __pyx_v_Omega_m, __pyx_v_Sum_m_nu, __pyx_v_n_s, __pyx_v_h, __pyx_v_w_0, __pyx_v_w_a, __pyx_v_A_s); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_10euclidemu2_11PyCosmology_2__init__(struct __pyx_obj_10euclidemu2_PyCosmology *__pyx_v_self, double __pyx_v_Omega_b, double __pyx_v_Omega_m, double __pyx_v_Sum_m_nu, double __pyx_v_n_s, double __pyx_v_h, double __pyx_v_w_0, double __pyx_v_w_a, double __pyx_v_A_s) { + int __pyx_r; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_t_2; + Cosmology *__pyx_t_3; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__init__", 0); + + /* "euclidemu2.pyx":68 + * def __init__(self, double Omega_b , double Omega_m , double Sum_m_nu , double n_s , double h , double w_0 , double w_a , double A_s ): + * """Cython signature: void Cosmology(double Omega_b, double Omega_m, double Sum_m_nu, double n_s, double h, double w_0, double w_a, double A_s)""" + * assert isinstance(Omega_b, float), 'arg Omega_b wrong type' # <<<<<<<<<<<<<< + * assert isinstance(Omega_m, float), 'arg Omega_m wrong type' + * assert isinstance(Sum_m_nu, float), 'arg Sum_m_nu wrong type' + */ + #ifndef CYTHON_WITHOUT_ASSERTIONS + if (unlikely(!Py_OptimizeFlag)) { + __pyx_t_1 = PyFloat_FromDouble(__pyx_v_Omega_b); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 68, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = PyFloat_Check(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (unlikely(!(__pyx_t_2 != 0))) { + PyErr_SetObject(PyExc_AssertionError, __pyx_kp_u_arg_Omega_b_wrong_type); + __PYX_ERR(1, 68, __pyx_L1_error) + } + } + #endif + + /* "euclidemu2.pyx":69 + * """Cython signature: void Cosmology(double Omega_b, double Omega_m, double Sum_m_nu, double n_s, double h, double w_0, double w_a, double A_s)""" + * assert isinstance(Omega_b, float), 'arg Omega_b wrong type' + * assert isinstance(Omega_m, float), 'arg Omega_m wrong type' # <<<<<<<<<<<<<< + * assert isinstance(Sum_m_nu, float), 'arg Sum_m_nu wrong type' + * assert isinstance(n_s, float), 'arg n_s wrong type' + */ + #ifndef CYTHON_WITHOUT_ASSERTIONS + if (unlikely(!Py_OptimizeFlag)) { + __pyx_t_1 = PyFloat_FromDouble(__pyx_v_Omega_m); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 69, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = PyFloat_Check(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (unlikely(!(__pyx_t_2 != 0))) { + PyErr_SetObject(PyExc_AssertionError, __pyx_kp_u_arg_Omega_m_wrong_type); + __PYX_ERR(1, 69, __pyx_L1_error) + } + } + #endif + + /* "euclidemu2.pyx":70 + * assert isinstance(Omega_b, float), 'arg Omega_b wrong type' + * assert isinstance(Omega_m, float), 'arg Omega_m wrong type' + * assert isinstance(Sum_m_nu, float), 'arg Sum_m_nu wrong type' # <<<<<<<<<<<<<< + * assert isinstance(n_s, float), 'arg n_s wrong type' + * assert isinstance(h, float), 'arg h wrong type' + */ + #ifndef CYTHON_WITHOUT_ASSERTIONS + if (unlikely(!Py_OptimizeFlag)) { + __pyx_t_1 = PyFloat_FromDouble(__pyx_v_Sum_m_nu); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 70, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = PyFloat_Check(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (unlikely(!(__pyx_t_2 != 0))) { + PyErr_SetObject(PyExc_AssertionError, __pyx_kp_u_arg_Sum_m_nu_wrong_type); + __PYX_ERR(1, 70, __pyx_L1_error) + } + } + #endif + + /* "euclidemu2.pyx":71 + * assert isinstance(Omega_m, float), 'arg Omega_m wrong type' + * assert isinstance(Sum_m_nu, float), 'arg Sum_m_nu wrong type' + * assert isinstance(n_s, float), 'arg n_s wrong type' # <<<<<<<<<<<<<< + * assert isinstance(h, float), 'arg h wrong type' + * assert isinstance(w_0, float), 'arg w_0 wrong type' + */ + #ifndef CYTHON_WITHOUT_ASSERTIONS + if (unlikely(!Py_OptimizeFlag)) { + __pyx_t_1 = PyFloat_FromDouble(__pyx_v_n_s); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 71, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = PyFloat_Check(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (unlikely(!(__pyx_t_2 != 0))) { + PyErr_SetObject(PyExc_AssertionError, __pyx_kp_u_arg_n_s_wrong_type); + __PYX_ERR(1, 71, __pyx_L1_error) + } + } + #endif + + /* "euclidemu2.pyx":72 + * assert isinstance(Sum_m_nu, float), 'arg Sum_m_nu wrong type' + * assert isinstance(n_s, float), 'arg n_s wrong type' + * assert isinstance(h, float), 'arg h wrong type' # <<<<<<<<<<<<<< + * assert isinstance(w_0, float), 'arg w_0 wrong type' + * assert isinstance(w_a, float), 'arg w_a wrong type' + */ + #ifndef CYTHON_WITHOUT_ASSERTIONS + if (unlikely(!Py_OptimizeFlag)) { + __pyx_t_1 = PyFloat_FromDouble(__pyx_v_h); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 72, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = PyFloat_Check(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (unlikely(!(__pyx_t_2 != 0))) { + PyErr_SetObject(PyExc_AssertionError, __pyx_kp_u_arg_h_wrong_type); + __PYX_ERR(1, 72, __pyx_L1_error) + } + } + #endif + + /* "euclidemu2.pyx":73 + * assert isinstance(n_s, float), 'arg n_s wrong type' + * assert isinstance(h, float), 'arg h wrong type' + * assert isinstance(w_0, float), 'arg w_0 wrong type' # <<<<<<<<<<<<<< + * assert isinstance(w_a, float), 'arg w_a wrong type' + * assert isinstance(A_s, float), 'arg A_s wrong type' + */ + #ifndef CYTHON_WITHOUT_ASSERTIONS + if (unlikely(!Py_OptimizeFlag)) { + __pyx_t_1 = PyFloat_FromDouble(__pyx_v_w_0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 73, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = PyFloat_Check(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (unlikely(!(__pyx_t_2 != 0))) { + PyErr_SetObject(PyExc_AssertionError, __pyx_kp_u_arg_w_0_wrong_type); + __PYX_ERR(1, 73, __pyx_L1_error) + } + } + #endif + + /* "euclidemu2.pyx":74 + * assert isinstance(h, float), 'arg h wrong type' + * assert isinstance(w_0, float), 'arg w_0 wrong type' + * assert isinstance(w_a, float), 'arg w_a wrong type' # <<<<<<<<<<<<<< + * assert isinstance(A_s, float), 'arg A_s wrong type' + * + */ + #ifndef CYTHON_WITHOUT_ASSERTIONS + if (unlikely(!Py_OptimizeFlag)) { + __pyx_t_1 = PyFloat_FromDouble(__pyx_v_w_a); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 74, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = PyFloat_Check(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (unlikely(!(__pyx_t_2 != 0))) { + PyErr_SetObject(PyExc_AssertionError, __pyx_kp_u_arg_w_a_wrong_type); + __PYX_ERR(1, 74, __pyx_L1_error) + } + } + #endif + + /* "euclidemu2.pyx":75 + * assert isinstance(w_0, float), 'arg w_0 wrong type' + * assert isinstance(w_a, float), 'arg w_a wrong type' + * assert isinstance(A_s, float), 'arg A_s wrong type' # <<<<<<<<<<<<<< + * + * self._inst =new Cosmology((Omega_b), (Omega_m), (Sum_m_nu), (n_s), (h), (w_0), (w_a), (A_s)) + */ + #ifndef CYTHON_WITHOUT_ASSERTIONS + if (unlikely(!Py_OptimizeFlag)) { + __pyx_t_1 = PyFloat_FromDouble(__pyx_v_A_s); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 75, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = PyFloat_Check(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (unlikely(!(__pyx_t_2 != 0))) { + PyErr_SetObject(PyExc_AssertionError, __pyx_kp_u_arg_A_s_wrong_type); + __PYX_ERR(1, 75, __pyx_L1_error) + } + } + #endif + + /* "euclidemu2.pyx":77 + * assert isinstance(A_s, float), 'arg A_s wrong type' + * + * self._inst =new Cosmology((Omega_b), (Omega_m), (Sum_m_nu), (n_s), (h), (w_0), (w_a), (A_s)) # <<<<<<<<<<<<<< + * + * def __dealloc__(self): + */ + try { + __pyx_t_3 = new Cosmology(((double)__pyx_v_Omega_b), ((double)__pyx_v_Omega_m), ((double)__pyx_v_Sum_m_nu), ((double)__pyx_v_n_s), ((double)__pyx_v_h), ((double)__pyx_v_w_0), ((double)__pyx_v_w_a), ((double)__pyx_v_A_s)); + } catch(...) { + __Pyx_CppExn2PyErr(); + __PYX_ERR(1, 77, __pyx_L1_error) + } + __pyx_v_self->_inst = __pyx_t_3; + + /* "euclidemu2.pyx":66 + * self._free_inst = True + * + * def __init__(self, double Omega_b , double Omega_m , double Sum_m_nu , double n_s , double h , double w_0 , double w_a , double A_s ): # <<<<<<<<<<<<<< + * """Cython signature: void Cosmology(double Omega_b, double Omega_m, double Sum_m_nu, double n_s, double h, double w_0, double w_a, double A_s)""" + * assert isinstance(Omega_b, float), 'arg Omega_b wrong type' + */ + + /* function exit code */ + __pyx_r = 0; + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("euclidemu2.PyCosmology.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "euclidemu2.pyx":79 + * self._inst =new Cosmology((Omega_b), (Omega_m), (Sum_m_nu), (n_s), (h), (w_0), (w_a), (A_s)) + * + * def __dealloc__(self): # <<<<<<<<<<<<<< + * if self._free_inst: + * free(self._inst) + */ + +/* Python wrapper */ +static void __pyx_pw_10euclidemu2_11PyCosmology_5__dealloc__(PyObject *__pyx_v_self); /*proto*/ +static void __pyx_pw_10euclidemu2_11PyCosmology_5__dealloc__(PyObject *__pyx_v_self) { + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0); + __pyx_pf_10euclidemu2_11PyCosmology_4__dealloc__(((struct __pyx_obj_10euclidemu2_PyCosmology *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); +} + +static void __pyx_pf_10euclidemu2_11PyCosmology_4__dealloc__(struct __pyx_obj_10euclidemu2_PyCosmology *__pyx_v_self) { + __Pyx_RefNannyDeclarations + int __pyx_t_1; + __Pyx_RefNannySetupContext("__dealloc__", 0); + + /* "euclidemu2.pyx":80 + * + * def __dealloc__(self): + * if self._free_inst: # <<<<<<<<<<<<<< + * free(self._inst) + * + */ + __pyx_t_1 = (__pyx_v_self->_free_inst != 0); + if (__pyx_t_1) { + + /* "euclidemu2.pyx":81 + * def __dealloc__(self): + * if self._free_inst: + * free(self._inst) # <<<<<<<<<<<<<< + * + * + */ + free(__pyx_v_self->_inst); + + /* "euclidemu2.pyx":80 + * + * def __dealloc__(self): + * if self._free_inst: # <<<<<<<<<<<<<< + * free(self._inst) + * + */ + } + + /* "euclidemu2.pyx":79 + * self._inst =new Cosmology((Omega_b), (Omega_m), (Sum_m_nu), (n_s), (h), (w_0), (w_a), (A_s)) + * + * def __dealloc__(self): # <<<<<<<<<<<<<< + * if self._free_inst: + * free(self._inst) + */ + + /* function exit code */ + __Pyx_RefNannyFinishContext(); +} + +/* "euclidemu2.pyx":60 + * + * cdef void* _inst + * cdef public bint _free_inst # <<<<<<<<<<<<<< + * + * def __cinit__(self, *args, **kwargs): + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_10euclidemu2_11PyCosmology_10_free_inst_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_10euclidemu2_11PyCosmology_10_free_inst_1__get__(PyObject *__pyx_v_self) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_r = __pyx_pf_10euclidemu2_11PyCosmology_10_free_inst___get__(((struct __pyx_obj_10euclidemu2_PyCosmology *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10euclidemu2_11PyCosmology_10_free_inst___get__(struct __pyx_obj_10euclidemu2_PyCosmology *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__get__", 0); + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->_free_inst); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 60, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("euclidemu2.PyCosmology._free_inst.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static int __pyx_pw_10euclidemu2_11PyCosmology_10_free_inst_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ +static int __pyx_pw_10euclidemu2_11PyCosmology_10_free_inst_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); + __pyx_r = __pyx_pf_10euclidemu2_11PyCosmology_10_free_inst_2__set__(((struct __pyx_obj_10euclidemu2_PyCosmology *)__pyx_v_self), ((PyObject *)__pyx_v_value)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_10euclidemu2_11PyCosmology_10_free_inst_2__set__(struct __pyx_obj_10euclidemu2_PyCosmology *__pyx_v_self, PyObject *__pyx_v_value) { + int __pyx_r; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__set__", 0); + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_value); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 60, __pyx_L1_error) + __pyx_v_self->_free_inst = __pyx_t_1; + + /* function exit code */ + __pyx_r = 0; + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_AddTraceback("euclidemu2.PyCosmology._free_inst.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "(tree fragment)":1 + * def __reduce_cython__(self): # <<<<<<<<<<<<<< + * raise TypeError("no default __reduce__ due to non-trivial __cinit__") + * def __setstate_cython__(self, __pyx_state): + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_10euclidemu2_11PyCosmology_7__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ +static PyObject *__pyx_pw_10euclidemu2_11PyCosmology_7__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0); + __pyx_r = __pyx_pf_10euclidemu2_11PyCosmology_6__reduce_cython__(((struct __pyx_obj_10euclidemu2_PyCosmology *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10euclidemu2_11PyCosmology_6__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_10euclidemu2_PyCosmology *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__reduce_cython__", 0); + + /* "(tree fragment)":2 + * def __reduce_cython__(self): + * raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<< + * def __setstate_cython__(self, __pyx_state): + * raise TypeError("no default __reduce__ due to non-trivial __cinit__") + */ + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple_, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_Raise(__pyx_t_1, 0, 0, 0); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __PYX_ERR(0, 2, __pyx_L1_error) + + /* "(tree fragment)":1 + * def __reduce_cython__(self): # <<<<<<<<<<<<<< + * raise TypeError("no default __reduce__ due to non-trivial __cinit__") + * def __setstate_cython__(self, __pyx_state): + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("euclidemu2.PyCosmology.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "(tree fragment)":3 + * def __reduce_cython__(self): + * raise TypeError("no default __reduce__ due to non-trivial __cinit__") + * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< + * raise TypeError("no default __reduce__ due to non-trivial __cinit__") + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_10euclidemu2_11PyCosmology_9__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/ +static PyObject *__pyx_pw_10euclidemu2_11PyCosmology_9__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0); + __pyx_r = __pyx_pf_10euclidemu2_11PyCosmology_8__setstate_cython__(((struct __pyx_obj_10euclidemu2_PyCosmology *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10euclidemu2_11PyCosmology_8__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_10euclidemu2_PyCosmology *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__setstate_cython__", 0); + + /* "(tree fragment)":4 + * raise TypeError("no default __reduce__ due to non-trivial __cinit__") + * def __setstate_cython__(self, __pyx_state): + * raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<< + */ + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_Raise(__pyx_t_1, 0, 0, 0); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __PYX_ERR(0, 4, __pyx_L1_error) + + /* "(tree fragment)":3 + * def __reduce_cython__(self): + * raise TypeError("no default __reduce__ due to non-trivial __cinit__") + * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< + * raise TypeError("no default __reduce__ due to non-trivial __cinit__") + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("euclidemu2.PyCosmology.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "euclidemu2.pyx":89 + * cdef EuclidEmulator*ee2 + * + * def __cinit__(self): # <<<<<<<<<<<<<< + * self.ee2 = new EuclidEmulator() + * + */ + +/* Python wrapper */ +static int __pyx_pw_10euclidemu2_16PyEuclidEmulator_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static int __pyx_pw_10euclidemu2_16PyEuclidEmulator_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0); + if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) { + __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;} + if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__cinit__", 0))) return -1; + __pyx_r = __pyx_pf_10euclidemu2_16PyEuclidEmulator___cinit__(((struct __pyx_obj_10euclidemu2_PyEuclidEmulator *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_10euclidemu2_16PyEuclidEmulator___cinit__(struct __pyx_obj_10euclidemu2_PyEuclidEmulator *__pyx_v_self) { + int __pyx_r; + __Pyx_RefNannyDeclarations + EuclidEmulator *__pyx_t_1; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__cinit__", 0); + + /* "euclidemu2.pyx":90 + * + * def __cinit__(self): + * self.ee2 = new EuclidEmulator() # <<<<<<<<<<<<<< + * + * + */ + try { + __pyx_t_1 = new EuclidEmulator(); + } catch(...) { + __Pyx_CppExn2PyErr(); + __PYX_ERR(1, 90, __pyx_L1_error) + } + __pyx_v_self->ee2 = __pyx_t_1; + + /* "euclidemu2.pyx":89 + * cdef EuclidEmulator*ee2 + * + * def __cinit__(self): # <<<<<<<<<<<<<< + * self.ee2 = new EuclidEmulator() + * + */ + + /* function exit code */ + __pyx_r = 0; + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_AddTraceback("euclidemu2.PyEuclidEmulator.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "euclidemu2.pyx":93 + * + * + * def compute_nlc(self,PyCosmology csm, redshift, n_redshift): # <<<<<<<<<<<<<< + * self.ee2.compute_nlc(( csm._inst)[0], redshift, n_redshift) + * + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_10euclidemu2_16PyEuclidEmulator_3compute_nlc(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static PyObject *__pyx_pw_10euclidemu2_16PyEuclidEmulator_3compute_nlc(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + struct __pyx_obj_10euclidemu2_PyCosmology *__pyx_v_csm = 0; + PyObject *__pyx_v_redshift = 0; + PyObject *__pyx_v_n_redshift = 0; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("compute_nlc (wrapper)", 0); + { + static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_csm,&__pyx_n_s_redshift,&__pyx_n_s_n_redshift,0}; + PyObject* values[3] = {0,0,0}; + if (unlikely(__pyx_kwds)) { + Py_ssize_t kw_args; + const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); + switch (pos_args) { + case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); + CYTHON_FALLTHROUGH; + case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); + CYTHON_FALLTHROUGH; + case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = PyDict_Size(__pyx_kwds); + switch (pos_args) { + case 0: + if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_csm)) != 0)) kw_args--; + else goto __pyx_L5_argtuple_error; + CYTHON_FALLTHROUGH; + case 1: + if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_redshift)) != 0)) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("compute_nlc", 1, 3, 3, 1); __PYX_ERR(1, 93, __pyx_L3_error) + } + CYTHON_FALLTHROUGH; + case 2: + if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n_redshift)) != 0)) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("compute_nlc", 1, 3, 3, 2); __PYX_ERR(1, 93, __pyx_L3_error) + } + } + if (unlikely(kw_args > 0)) { + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "compute_nlc") < 0)) __PYX_ERR(1, 93, __pyx_L3_error) + } + } else if (PyTuple_GET_SIZE(__pyx_args) != 3) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + values[1] = PyTuple_GET_ITEM(__pyx_args, 1); + values[2] = PyTuple_GET_ITEM(__pyx_args, 2); + } + __pyx_v_csm = ((struct __pyx_obj_10euclidemu2_PyCosmology *)values[0]); + __pyx_v_redshift = values[1]; + __pyx_v_n_redshift = values[2]; + } + goto __pyx_L4_argument_unpacking_done; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("compute_nlc", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 93, __pyx_L3_error) + __pyx_L3_error:; + __Pyx_AddTraceback("euclidemu2.PyEuclidEmulator.compute_nlc", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_csm), __pyx_ptype_10euclidemu2_PyCosmology, 1, "csm", 0))) __PYX_ERR(1, 93, __pyx_L1_error) + __pyx_r = __pyx_pf_10euclidemu2_16PyEuclidEmulator_2compute_nlc(((struct __pyx_obj_10euclidemu2_PyEuclidEmulator *)__pyx_v_self), __pyx_v_csm, __pyx_v_redshift, __pyx_v_n_redshift); + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __pyx_r = NULL; + __pyx_L0:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10euclidemu2_16PyEuclidEmulator_2compute_nlc(struct __pyx_obj_10euclidemu2_PyEuclidEmulator *__pyx_v_self, struct __pyx_obj_10euclidemu2_PyCosmology *__pyx_v_csm, PyObject *__pyx_v_redshift, PyObject *__pyx_v_n_redshift) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + std::vector __pyx_t_1; + int __pyx_t_2; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("compute_nlc", 0); + + /* "euclidemu2.pyx":94 + * + * def compute_nlc(self,PyCosmology csm, redshift, n_redshift): + * self.ee2.compute_nlc(( csm._inst)[0], redshift, n_redshift) # <<<<<<<<<<<<<< + * + * def write_nlc2file(self,filename, zvec, n_redshift): + */ + __pyx_t_1 = __pyx_convert_vector_from_py_double(__pyx_v_redshift); if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 94, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_v_n_redshift); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 94, __pyx_L1_error) + __pyx_v_self->ee2->compute_nlc((((Cosmology *)__pyx_v_csm->_inst)[0]), __pyx_t_1, __pyx_t_2); + + /* "euclidemu2.pyx":93 + * + * + * def compute_nlc(self,PyCosmology csm, redshift, n_redshift): # <<<<<<<<<<<<<< + * self.ee2.compute_nlc(( csm._inst)[0], redshift, n_redshift) + * + */ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_AddTraceback("euclidemu2.PyEuclidEmulator.compute_nlc", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "euclidemu2.pyx":96 + * self.ee2.compute_nlc(( csm._inst)[0], redshift, n_redshift) + * + * def write_nlc2file(self,filename, zvec, n_redshift): # <<<<<<<<<<<<<< + * self.ee2.write_nlc2file(filename, zvec, n_redshift) + * + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_10euclidemu2_16PyEuclidEmulator_5write_nlc2file(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static PyObject *__pyx_pw_10euclidemu2_16PyEuclidEmulator_5write_nlc2file(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + PyObject *__pyx_v_filename = 0; + PyObject *__pyx_v_zvec = 0; + PyObject *__pyx_v_n_redshift = 0; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("write_nlc2file (wrapper)", 0); + { + static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_filename,&__pyx_n_s_zvec,&__pyx_n_s_n_redshift,0}; + PyObject* values[3] = {0,0,0}; + if (unlikely(__pyx_kwds)) { + Py_ssize_t kw_args; + const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); + switch (pos_args) { + case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); + CYTHON_FALLTHROUGH; + case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); + CYTHON_FALLTHROUGH; + case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = PyDict_Size(__pyx_kwds); + switch (pos_args) { + case 0: + if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_filename)) != 0)) kw_args--; + else goto __pyx_L5_argtuple_error; + CYTHON_FALLTHROUGH; + case 1: + if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_zvec)) != 0)) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("write_nlc2file", 1, 3, 3, 1); __PYX_ERR(1, 96, __pyx_L3_error) + } + CYTHON_FALLTHROUGH; + case 2: + if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n_redshift)) != 0)) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("write_nlc2file", 1, 3, 3, 2); __PYX_ERR(1, 96, __pyx_L3_error) + } + } + if (unlikely(kw_args > 0)) { + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "write_nlc2file") < 0)) __PYX_ERR(1, 96, __pyx_L3_error) + } + } else if (PyTuple_GET_SIZE(__pyx_args) != 3) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + values[1] = PyTuple_GET_ITEM(__pyx_args, 1); + values[2] = PyTuple_GET_ITEM(__pyx_args, 2); + } + __pyx_v_filename = values[0]; + __pyx_v_zvec = values[1]; + __pyx_v_n_redshift = values[2]; + } + goto __pyx_L4_argument_unpacking_done; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("write_nlc2file", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 96, __pyx_L3_error) + __pyx_L3_error:; + __Pyx_AddTraceback("euclidemu2.PyEuclidEmulator.write_nlc2file", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_10euclidemu2_16PyEuclidEmulator_4write_nlc2file(((struct __pyx_obj_10euclidemu2_PyEuclidEmulator *)__pyx_v_self), __pyx_v_filename, __pyx_v_zvec, __pyx_v_n_redshift); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10euclidemu2_16PyEuclidEmulator_4write_nlc2file(struct __pyx_obj_10euclidemu2_PyEuclidEmulator *__pyx_v_self, PyObject *__pyx_v_filename, PyObject *__pyx_v_zvec, PyObject *__pyx_v_n_redshift) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + std::string __pyx_t_1; + std::vector __pyx_t_2; + int __pyx_t_3; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("write_nlc2file", 0); + + /* "euclidemu2.pyx":97 + * + * def write_nlc2file(self,filename, zvec, n_redshift): + * self.ee2.write_nlc2file(filename, zvec, n_redshift) # <<<<<<<<<<<<<< + * + * + */ + __pyx_t_1 = __pyx_convert_string_from_py_std__in_string(__pyx_v_filename); if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 97, __pyx_L1_error) + __pyx_t_2 = __pyx_convert_vector_from_py_double(__pyx_v_zvec); if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 97, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_v_n_redshift); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 97, __pyx_L1_error) + __pyx_v_self->ee2->write_nlc2file(((std::string)__pyx_t_1), __pyx_t_2, __pyx_t_3); + + /* "euclidemu2.pyx":96 + * self.ee2.compute_nlc(( csm._inst)[0], redshift, n_redshift) + * + * def write_nlc2file(self,filename, zvec, n_redshift): # <<<<<<<<<<<<<< + * self.ee2.write_nlc2file(filename, zvec, n_redshift) + * + */ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_AddTraceback("euclidemu2.PyEuclidEmulator.write_nlc2file", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "euclidemu2.pyx":103 + * # Attribute access + * @property + * def kvec(self): # <<<<<<<<<<<<<< + * return self.ee2.kvec + * @kvec.setter + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_10euclidemu2_16PyEuclidEmulator_4kvec_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_10euclidemu2_16PyEuclidEmulator_4kvec_1__get__(PyObject *__pyx_v_self) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_r = __pyx_pf_10euclidemu2_16PyEuclidEmulator_4kvec___get__(((struct __pyx_obj_10euclidemu2_PyEuclidEmulator *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10euclidemu2_16PyEuclidEmulator_4kvec___get__(struct __pyx_obj_10euclidemu2_PyEuclidEmulator *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__get__", 0); + + /* "euclidemu2.pyx":104 + * @property + * def kvec(self): + * return self.ee2.kvec # <<<<<<<<<<<<<< + * @kvec.setter + * def kvec(self, kvec): + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __Pyx_carray_to_py_double(__pyx_v_self->ee2->kvec, 0x265); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 104, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "euclidemu2.pyx":103 + * # Attribute access + * @property + * def kvec(self): # <<<<<<<<<<<<<< + * return self.ee2.kvec + * @kvec.setter + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("euclidemu2.PyEuclidEmulator.kvec.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "euclidemu2.pyx":106 + * return self.ee2.kvec + * @kvec.setter + * def kvec(self, kvec): # <<<<<<<<<<<<<< + * self.ee2.kvec = kvec + * + */ + +/* Python wrapper */ +static int __pyx_pw_10euclidemu2_16PyEuclidEmulator_4kvec_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_kvec); /*proto*/ +static int __pyx_pw_10euclidemu2_16PyEuclidEmulator_4kvec_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_kvec) { + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); + __pyx_r = __pyx_pf_10euclidemu2_16PyEuclidEmulator_4kvec_2__set__(((struct __pyx_obj_10euclidemu2_PyEuclidEmulator *)__pyx_v_self), ((PyObject *)__pyx_v_kvec)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_10euclidemu2_16PyEuclidEmulator_4kvec_2__set__(struct __pyx_obj_10euclidemu2_PyEuclidEmulator *__pyx_v_self, PyObject *__pyx_v_kvec) { + int __pyx_r; + __Pyx_RefNannyDeclarations + double __pyx_t_1[0x265]; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__set__", 0); + + /* "euclidemu2.pyx":107 + * @kvec.setter + * def kvec(self, kvec): + * self.ee2.kvec = kvec # <<<<<<<<<<<<<< + * + * @property + */ + if (unlikely(__Pyx_carray_from_py_double(__pyx_v_kvec, __pyx_t_1, 0x265) < 0)) __PYX_ERR(1, 107, __pyx_L1_error) + if (unlikely((0x265) != (0x265))) { + PyErr_Format(PyExc_ValueError, "Assignment to slice of wrong length, expected %" CYTHON_FORMAT_SSIZE_T "d, got %" CYTHON_FORMAT_SSIZE_T "d", (Py_ssize_t)(0x265), (Py_ssize_t)(0x265)); + __PYX_ERR(1, 107, __pyx_L1_error) + } + memcpy(&(__pyx_v_self->ee2->kvec[0]), __pyx_t_1, sizeof(__pyx_v_self->ee2->kvec[0]) * (0x265)); + + /* "euclidemu2.pyx":106 + * return self.ee2.kvec + * @kvec.setter + * def kvec(self, kvec): # <<<<<<<<<<<<<< + * self.ee2.kvec = kvec + * + */ + + /* function exit code */ + __pyx_r = 0; + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_AddTraceback("euclidemu2.PyEuclidEmulator.kvec.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "euclidemu2.pyx":110 + * + * @property + * def Bvec(self): # <<<<<<<<<<<<<< + * return self.ee2.Bvec + * @Bvec.setter + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_10euclidemu2_16PyEuclidEmulator_4Bvec_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_10euclidemu2_16PyEuclidEmulator_4Bvec_1__get__(PyObject *__pyx_v_self) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_r = __pyx_pf_10euclidemu2_16PyEuclidEmulator_4Bvec___get__(((struct __pyx_obj_10euclidemu2_PyEuclidEmulator *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10euclidemu2_16PyEuclidEmulator_4Bvec___get__(struct __pyx_obj_10euclidemu2_PyEuclidEmulator *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__get__", 0); + + /* "euclidemu2.pyx":111 + * @property + * def Bvec(self): + * return self.ee2.Bvec # <<<<<<<<<<<<<< + * @Bvec.setter + * def Bvec(self, Bvec): + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __Pyx_carray_to_py_double___5b_0x265_5d_(__pyx_v_self->ee2->Bvec, 0x65); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 111, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "euclidemu2.pyx":110 + * + * @property + * def Bvec(self): # <<<<<<<<<<<<<< + * return self.ee2.Bvec + * @Bvec.setter + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("euclidemu2.PyEuclidEmulator.Bvec.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "euclidemu2.pyx":113 + * return self.ee2.Bvec + * @Bvec.setter + * def Bvec(self, Bvec): # <<<<<<<<<<<<<< + * self.ee2.Bvec = Bvec + * + */ + +/* Python wrapper */ +static int __pyx_pw_10euclidemu2_16PyEuclidEmulator_4Bvec_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_Bvec); /*proto*/ +static int __pyx_pw_10euclidemu2_16PyEuclidEmulator_4Bvec_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_Bvec) { + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); + __pyx_r = __pyx_pf_10euclidemu2_16PyEuclidEmulator_4Bvec_2__set__(((struct __pyx_obj_10euclidemu2_PyEuclidEmulator *)__pyx_v_self), ((PyObject *)__pyx_v_Bvec)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_10euclidemu2_16PyEuclidEmulator_4Bvec_2__set__(struct __pyx_obj_10euclidemu2_PyEuclidEmulator *__pyx_v_self, PyObject *__pyx_v_Bvec) { + int __pyx_r; + __Pyx_RefNannyDeclarations + double __pyx_t_1[0x65][0x265]; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__set__", 0); + + /* "euclidemu2.pyx":114 + * @Bvec.setter + * def Bvec(self, Bvec): + * self.ee2.Bvec = Bvec # <<<<<<<<<<<<<< + * + * + */ + if (unlikely(__Pyx_carray_from_py_double___5b_0x265_5d_(__pyx_v_Bvec, __pyx_t_1, 0x65) < 0)) __PYX_ERR(1, 114, __pyx_L1_error) + if (unlikely((0x65) != (0x65))) { + PyErr_Format(PyExc_ValueError, "Assignment to slice of wrong length, expected %" CYTHON_FORMAT_SSIZE_T "d, got %" CYTHON_FORMAT_SSIZE_T "d", (Py_ssize_t)(0x65), (Py_ssize_t)(0x65)); + __PYX_ERR(1, 114, __pyx_L1_error) + } + memcpy(&(__pyx_v_self->ee2->Bvec[0]), __pyx_t_1, sizeof(__pyx_v_self->ee2->Bvec[0]) * (0x65)); + + /* "euclidemu2.pyx":113 + * return self.ee2.Bvec + * @Bvec.setter + * def Bvec(self, Bvec): # <<<<<<<<<<<<<< + * self.ee2.Bvec = Bvec + * + */ + + /* function exit code */ + __pyx_r = 0; + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_AddTraceback("euclidemu2.PyEuclidEmulator.Bvec.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "(tree fragment)":1 + * def __reduce_cython__(self): # <<<<<<<<<<<<<< + * raise TypeError("no default __reduce__ due to non-trivial __cinit__") + * def __setstate_cython__(self, __pyx_state): + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_10euclidemu2_16PyEuclidEmulator_7__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ +static PyObject *__pyx_pw_10euclidemu2_16PyEuclidEmulator_7__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0); + __pyx_r = __pyx_pf_10euclidemu2_16PyEuclidEmulator_6__reduce_cython__(((struct __pyx_obj_10euclidemu2_PyEuclidEmulator *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10euclidemu2_16PyEuclidEmulator_6__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_10euclidemu2_PyEuclidEmulator *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__reduce_cython__", 0); + + /* "(tree fragment)":2 + * def __reduce_cython__(self): + * raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<< + * def __setstate_cython__(self, __pyx_state): + * raise TypeError("no default __reduce__ due to non-trivial __cinit__") + */ + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_Raise(__pyx_t_1, 0, 0, 0); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __PYX_ERR(0, 2, __pyx_L1_error) + + /* "(tree fragment)":1 + * def __reduce_cython__(self): # <<<<<<<<<<<<<< + * raise TypeError("no default __reduce__ due to non-trivial __cinit__") + * def __setstate_cython__(self, __pyx_state): + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("euclidemu2.PyEuclidEmulator.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "(tree fragment)":3 + * def __reduce_cython__(self): + * raise TypeError("no default __reduce__ due to non-trivial __cinit__") + * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< + * raise TypeError("no default __reduce__ due to non-trivial __cinit__") + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_10euclidemu2_16PyEuclidEmulator_9__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/ +static PyObject *__pyx_pw_10euclidemu2_16PyEuclidEmulator_9__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0); + __pyx_r = __pyx_pf_10euclidemu2_16PyEuclidEmulator_8__setstate_cython__(((struct __pyx_obj_10euclidemu2_PyEuclidEmulator *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10euclidemu2_16PyEuclidEmulator_8__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_10euclidemu2_PyEuclidEmulator *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__setstate_cython__", 0); + + /* "(tree fragment)":4 + * raise TypeError("no default __reduce__ due to non-trivial __cinit__") + * def __setstate_cython__(self, __pyx_state): + * raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<< + */ + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_Raise(__pyx_t_1, 0, 0, 0); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __PYX_ERR(0, 4, __pyx_L1_error) + + /* "(tree fragment)":3 + * def __reduce_cython__(self): + * raise TypeError("no default __reduce__ due to non-trivial __cinit__") + * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< + * raise TypeError("no default __reduce__ due to non-trivial __cinit__") + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("euclidemu2.PyEuclidEmulator.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "euclidemu2.pyx":129 + * ###################################################### + * + * def check_param_range(par_dict): #, csm_index=0): #Only one cosmology for now # <<<<<<<<<<<<<< + * """ + * Checks if all parameters in the cosmology dictionary 'par_dict' + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_10euclidemu2_1check_param_range(PyObject *__pyx_self, PyObject *__pyx_v_par_dict); /*proto*/ +static char __pyx_doc_10euclidemu2_check_param_range[] = "\n Checks if all parameters in the cosmology dictionary 'par_dict'\n passed to this function obey the limits set by the emulator.\n "; +static PyMethodDef __pyx_mdef_10euclidemu2_1check_param_range = {"check_param_range", (PyCFunction)__pyx_pw_10euclidemu2_1check_param_range, METH_O, __pyx_doc_10euclidemu2_check_param_range}; +static PyObject *__pyx_pw_10euclidemu2_1check_param_range(PyObject *__pyx_self, PyObject *__pyx_v_par_dict) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("check_param_range (wrapper)", 0); + __pyx_r = __pyx_pf_10euclidemu2_check_param_range(__pyx_self, ((PyObject *)__pyx_v_par_dict)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10euclidemu2_check_param_range(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_par_dict) { + PyObject *__pyx_v_om_b_range = NULL; + PyObject *__pyx_v_om_m_range = NULL; + PyObject *__pyx_v_m_nu_range = NULL; + PyObject *__pyx_v_n_s_range = NULL; + PyObject *__pyx_v_h_range = NULL; + PyObject *__pyx_v_w_0_range = NULL; + PyObject *__pyx_v_w_a_range = NULL; + PyObject *__pyx_v_A_s_range = NULL; + PyObject *__pyx_v_om_b_not_in_range = NULL; + PyObject *__pyx_v_om_m_not_in_range = NULL; + PyObject *__pyx_v_m_nu_not_in_range = NULL; + PyObject *__pyx_v_n_s_not_in_range = NULL; + PyObject *__pyx_v_h_not_in_range = NULL; + PyObject *__pyx_v_w_0_not_in_range = NULL; + PyObject *__pyx_v_w_a_not_in_range = NULL; + PyObject *__pyx_v_A_s_not_in_range = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + int __pyx_t_5; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("check_param_range", 0); + + /* "euclidemu2.pyx":135 + * """ + * + * om_b_range = [0.04, 0.06] # <<<<<<<<<<<<<< + * om_m_range = [0.24, 0.40] + * m_nu_range = [0.00, 0.15] + */ + __pyx_t_1 = PyList_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 135, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_INCREF(__pyx_float_0_04); + __Pyx_GIVEREF(__pyx_float_0_04); + PyList_SET_ITEM(__pyx_t_1, 0, __pyx_float_0_04); + __Pyx_INCREF(__pyx_float_0_06); + __Pyx_GIVEREF(__pyx_float_0_06); + PyList_SET_ITEM(__pyx_t_1, 1, __pyx_float_0_06); + __pyx_v_om_b_range = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + + /* "euclidemu2.pyx":136 + * + * om_b_range = [0.04, 0.06] + * om_m_range = [0.24, 0.40] # <<<<<<<<<<<<<< + * m_nu_range = [0.00, 0.15] + * n_s_range = [0.92, 1.00] + */ + __pyx_t_1 = PyList_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 136, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_INCREF(__pyx_float_0_24); + __Pyx_GIVEREF(__pyx_float_0_24); + PyList_SET_ITEM(__pyx_t_1, 0, __pyx_float_0_24); + __Pyx_INCREF(__pyx_float_0_40); + __Pyx_GIVEREF(__pyx_float_0_40); + PyList_SET_ITEM(__pyx_t_1, 1, __pyx_float_0_40); + __pyx_v_om_m_range = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + + /* "euclidemu2.pyx":137 + * om_b_range = [0.04, 0.06] + * om_m_range = [0.24, 0.40] + * m_nu_range = [0.00, 0.15] # <<<<<<<<<<<<<< + * n_s_range = [0.92, 1.00] + * h_range = [0.61, 0.73] + */ + __pyx_t_1 = PyList_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 137, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_INCREF(__pyx_float_0_00); + __Pyx_GIVEREF(__pyx_float_0_00); + PyList_SET_ITEM(__pyx_t_1, 0, __pyx_float_0_00); + __Pyx_INCREF(__pyx_float_0_15); + __Pyx_GIVEREF(__pyx_float_0_15); + PyList_SET_ITEM(__pyx_t_1, 1, __pyx_float_0_15); + __pyx_v_m_nu_range = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + + /* "euclidemu2.pyx":138 + * om_m_range = [0.24, 0.40] + * m_nu_range = [0.00, 0.15] + * n_s_range = [0.92, 1.00] # <<<<<<<<<<<<<< + * h_range = [0.61, 0.73] + * w_0_range = [-1.3, -0.7] + */ + __pyx_t_1 = PyList_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 138, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_INCREF(__pyx_float_0_92); + __Pyx_GIVEREF(__pyx_float_0_92); + PyList_SET_ITEM(__pyx_t_1, 0, __pyx_float_0_92); + __Pyx_INCREF(__pyx_float_1_00); + __Pyx_GIVEREF(__pyx_float_1_00); + PyList_SET_ITEM(__pyx_t_1, 1, __pyx_float_1_00); + __pyx_v_n_s_range = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + + /* "euclidemu2.pyx":139 + * m_nu_range = [0.00, 0.15] + * n_s_range = [0.92, 1.00] + * h_range = [0.61, 0.73] # <<<<<<<<<<<<<< + * w_0_range = [-1.3, -0.7] + * w_a_range = [-0.7, 0.5] + */ + __pyx_t_1 = PyList_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 139, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_INCREF(__pyx_float_0_61); + __Pyx_GIVEREF(__pyx_float_0_61); + PyList_SET_ITEM(__pyx_t_1, 0, __pyx_float_0_61); + __Pyx_INCREF(__pyx_float_0_73); + __Pyx_GIVEREF(__pyx_float_0_73); + PyList_SET_ITEM(__pyx_t_1, 1, __pyx_float_0_73); + __pyx_v_h_range = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + + /* "euclidemu2.pyx":140 + * n_s_range = [0.92, 1.00] + * h_range = [0.61, 0.73] + * w_0_range = [-1.3, -0.7] # <<<<<<<<<<<<<< + * w_a_range = [-0.7, 0.5] + * A_s_range = [1.7e-9, 2.5e-9] + */ + __pyx_t_1 = PyList_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 140, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_INCREF(__pyx_float_neg_1_3); + __Pyx_GIVEREF(__pyx_float_neg_1_3); + PyList_SET_ITEM(__pyx_t_1, 0, __pyx_float_neg_1_3); + __Pyx_INCREF(__pyx_float_neg_0_7); + __Pyx_GIVEREF(__pyx_float_neg_0_7); + PyList_SET_ITEM(__pyx_t_1, 1, __pyx_float_neg_0_7); + __pyx_v_w_0_range = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + + /* "euclidemu2.pyx":141 + * h_range = [0.61, 0.73] + * w_0_range = [-1.3, -0.7] + * w_a_range = [-0.7, 0.5] # <<<<<<<<<<<<<< + * A_s_range = [1.7e-9, 2.5e-9] + * + */ + __pyx_t_1 = PyList_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 141, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_INCREF(__pyx_float_neg_0_7); + __Pyx_GIVEREF(__pyx_float_neg_0_7); + PyList_SET_ITEM(__pyx_t_1, 0, __pyx_float_neg_0_7); + __Pyx_INCREF(__pyx_float_0_5); + __Pyx_GIVEREF(__pyx_float_0_5); + PyList_SET_ITEM(__pyx_t_1, 1, __pyx_float_0_5); + __pyx_v_w_a_range = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + + /* "euclidemu2.pyx":142 + * w_0_range = [-1.3, -0.7] + * w_a_range = [-0.7, 0.5] + * A_s_range = [1.7e-9, 2.5e-9] # <<<<<<<<<<<<<< + * + * om_b_not_in_range = om_b_range[0] > par_dict['Omega_b'] or\ + */ + __pyx_t_1 = PyList_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 142, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_INCREF(__pyx_float_1_7eneg_9); + __Pyx_GIVEREF(__pyx_float_1_7eneg_9); + PyList_SET_ITEM(__pyx_t_1, 0, __pyx_float_1_7eneg_9); + __Pyx_INCREF(__pyx_float_2_5eneg_9); + __Pyx_GIVEREF(__pyx_float_2_5eneg_9); + PyList_SET_ITEM(__pyx_t_1, 1, __pyx_float_2_5eneg_9); + __pyx_v_A_s_range = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + + /* "euclidemu2.pyx":144 + * A_s_range = [1.7e-9, 2.5e-9] + * + * om_b_not_in_range = om_b_range[0] > par_dict['Omega_b'] or\ # <<<<<<<<<<<<<< + * om_b_range[1] < par_dict['Omega_b'] + * + */ + __pyx_t_2 = __Pyx_GetItemInt_List(__pyx_v_om_b_range, 0, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 144, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyObject_Dict_GetItem(__pyx_v_par_dict, __pyx_n_u_Omega_b); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 144, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = PyObject_RichCompare(__pyx_t_2, __pyx_t_3, Py_GT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 144, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(1, 144, __pyx_L1_error) + if (!__pyx_t_5) { + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } else { + __Pyx_INCREF(__pyx_t_4); + __pyx_t_1 = __pyx_t_4; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + goto __pyx_L3_bool_binop_done; + } + + /* "euclidemu2.pyx":145 + * + * om_b_not_in_range = om_b_range[0] > par_dict['Omega_b'] or\ + * om_b_range[1] < par_dict['Omega_b'] # <<<<<<<<<<<<<< + * + * om_m_not_in_range = om_m_range[0] > par_dict['Omega_m'] or\ + */ + __pyx_t_4 = __Pyx_GetItemInt_List(__pyx_v_om_b_range, 1, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 145, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_3 = __Pyx_PyObject_Dict_GetItem(__pyx_v_par_dict, __pyx_n_u_Omega_b); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 145, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_2 = PyObject_RichCompare(__pyx_t_4, __pyx_t_3, Py_LT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 145, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_INCREF(__pyx_t_2); + __pyx_t_1 = __pyx_t_2; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_L3_bool_binop_done:; + __pyx_v_om_b_not_in_range = __pyx_t_1; + __pyx_t_1 = 0; + + /* "euclidemu2.pyx":147 + * om_b_range[1] < par_dict['Omega_b'] + * + * om_m_not_in_range = om_m_range[0] > par_dict['Omega_m'] or\ # <<<<<<<<<<<<<< + * om_m_range[1] < par_dict['Omega_m'] + * + */ + __pyx_t_2 = __Pyx_GetItemInt_List(__pyx_v_om_m_range, 0, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 147, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyObject_Dict_GetItem(__pyx_v_par_dict, __pyx_n_u_Omega_m); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 147, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = PyObject_RichCompare(__pyx_t_2, __pyx_t_3, Py_GT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 147, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(1, 147, __pyx_L1_error) + if (!__pyx_t_5) { + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } else { + __Pyx_INCREF(__pyx_t_4); + __pyx_t_1 = __pyx_t_4; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + goto __pyx_L5_bool_binop_done; + } + + /* "euclidemu2.pyx":148 + * + * om_m_not_in_range = om_m_range[0] > par_dict['Omega_m'] or\ + * om_m_range[1] < par_dict['Omega_m'] # <<<<<<<<<<<<<< + * + * m_nu_not_in_range = m_nu_range[0] > par_dict['m_ncdm'] or\ + */ + __pyx_t_4 = __Pyx_GetItemInt_List(__pyx_v_om_m_range, 1, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 148, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_3 = __Pyx_PyObject_Dict_GetItem(__pyx_v_par_dict, __pyx_n_u_Omega_m); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 148, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_2 = PyObject_RichCompare(__pyx_t_4, __pyx_t_3, Py_LT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 148, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_INCREF(__pyx_t_2); + __pyx_t_1 = __pyx_t_2; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_L5_bool_binop_done:; + __pyx_v_om_m_not_in_range = __pyx_t_1; + __pyx_t_1 = 0; + + /* "euclidemu2.pyx":150 + * om_m_range[1] < par_dict['Omega_m'] + * + * m_nu_not_in_range = m_nu_range[0] > par_dict['m_ncdm'] or\ # <<<<<<<<<<<<<< + * m_nu_range[1] < par_dict['m_ncdm'] + * + */ + __pyx_t_2 = __Pyx_GetItemInt_List(__pyx_v_m_nu_range, 0, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 150, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyObject_Dict_GetItem(__pyx_v_par_dict, __pyx_n_u_m_ncdm); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 150, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = PyObject_RichCompare(__pyx_t_2, __pyx_t_3, Py_GT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 150, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(1, 150, __pyx_L1_error) + if (!__pyx_t_5) { + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } else { + __Pyx_INCREF(__pyx_t_4); + __pyx_t_1 = __pyx_t_4; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + goto __pyx_L7_bool_binop_done; + } + + /* "euclidemu2.pyx":151 + * + * m_nu_not_in_range = m_nu_range[0] > par_dict['m_ncdm'] or\ + * m_nu_range[1] < par_dict['m_ncdm'] # <<<<<<<<<<<<<< + * + * n_s_not_in_range = n_s_range[0] > par_dict['n_s'] or\ + */ + __pyx_t_4 = __Pyx_GetItemInt_List(__pyx_v_m_nu_range, 1, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 151, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_3 = __Pyx_PyObject_Dict_GetItem(__pyx_v_par_dict, __pyx_n_u_m_ncdm); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 151, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_2 = PyObject_RichCompare(__pyx_t_4, __pyx_t_3, Py_LT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 151, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_INCREF(__pyx_t_2); + __pyx_t_1 = __pyx_t_2; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_L7_bool_binop_done:; + __pyx_v_m_nu_not_in_range = __pyx_t_1; + __pyx_t_1 = 0; + + /* "euclidemu2.pyx":153 + * m_nu_range[1] < par_dict['m_ncdm'] + * + * n_s_not_in_range = n_s_range[0] > par_dict['n_s'] or\ # <<<<<<<<<<<<<< + * n_s_range[1] < par_dict['n_s'] + * + */ + __pyx_t_2 = __Pyx_GetItemInt_List(__pyx_v_n_s_range, 0, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 153, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyObject_Dict_GetItem(__pyx_v_par_dict, __pyx_n_u_n_s); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 153, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = PyObject_RichCompare(__pyx_t_2, __pyx_t_3, Py_GT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 153, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(1, 153, __pyx_L1_error) + if (!__pyx_t_5) { + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } else { + __Pyx_INCREF(__pyx_t_4); + __pyx_t_1 = __pyx_t_4; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + goto __pyx_L9_bool_binop_done; + } + + /* "euclidemu2.pyx":154 + * + * n_s_not_in_range = n_s_range[0] > par_dict['n_s'] or\ + * n_s_range[1] < par_dict['n_s'] # <<<<<<<<<<<<<< + * + * h_not_in_range = h_range[0] > par_dict['h'] or\ + */ + __pyx_t_4 = __Pyx_GetItemInt_List(__pyx_v_n_s_range, 1, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 154, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_3 = __Pyx_PyObject_Dict_GetItem(__pyx_v_par_dict, __pyx_n_u_n_s); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 154, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_2 = PyObject_RichCompare(__pyx_t_4, __pyx_t_3, Py_LT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 154, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_INCREF(__pyx_t_2); + __pyx_t_1 = __pyx_t_2; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_L9_bool_binop_done:; + __pyx_v_n_s_not_in_range = __pyx_t_1; + __pyx_t_1 = 0; + + /* "euclidemu2.pyx":156 + * n_s_range[1] < par_dict['n_s'] + * + * h_not_in_range = h_range[0] > par_dict['h'] or\ # <<<<<<<<<<<<<< + * h_range[1] < par_dict['h'] + * + */ + __pyx_t_2 = __Pyx_GetItemInt_List(__pyx_v_h_range, 0, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 156, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyObject_Dict_GetItem(__pyx_v_par_dict, __pyx_n_u_h); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 156, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = PyObject_RichCompare(__pyx_t_2, __pyx_t_3, Py_GT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 156, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(1, 156, __pyx_L1_error) + if (!__pyx_t_5) { + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } else { + __Pyx_INCREF(__pyx_t_4); + __pyx_t_1 = __pyx_t_4; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + goto __pyx_L11_bool_binop_done; + } + + /* "euclidemu2.pyx":157 + * + * h_not_in_range = h_range[0] > par_dict['h'] or\ + * h_range[1] < par_dict['h'] # <<<<<<<<<<<<<< + * + * w_0_not_in_range = w_0_range[0] > par_dict['w0_fld'] or\ + */ + __pyx_t_4 = __Pyx_GetItemInt_List(__pyx_v_h_range, 1, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 157, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_3 = __Pyx_PyObject_Dict_GetItem(__pyx_v_par_dict, __pyx_n_u_h); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 157, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_2 = PyObject_RichCompare(__pyx_t_4, __pyx_t_3, Py_LT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 157, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_INCREF(__pyx_t_2); + __pyx_t_1 = __pyx_t_2; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_L11_bool_binop_done:; + __pyx_v_h_not_in_range = __pyx_t_1; + __pyx_t_1 = 0; + + /* "euclidemu2.pyx":159 + * h_range[1] < par_dict['h'] + * + * w_0_not_in_range = w_0_range[0] > par_dict['w0_fld'] or\ # <<<<<<<<<<<<<< + * w_0_range[1] < par_dict['w0_fld'] + * + */ + __pyx_t_2 = __Pyx_GetItemInt_List(__pyx_v_w_0_range, 0, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 159, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyObject_Dict_GetItem(__pyx_v_par_dict, __pyx_n_u_w0_fld); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 159, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = PyObject_RichCompare(__pyx_t_2, __pyx_t_3, Py_GT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 159, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(1, 159, __pyx_L1_error) + if (!__pyx_t_5) { + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } else { + __Pyx_INCREF(__pyx_t_4); + __pyx_t_1 = __pyx_t_4; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + goto __pyx_L13_bool_binop_done; + } + + /* "euclidemu2.pyx":160 + * + * w_0_not_in_range = w_0_range[0] > par_dict['w0_fld'] or\ + * w_0_range[1] < par_dict['w0_fld'] # <<<<<<<<<<<<<< + * + * w_a_not_in_range = w_a_range[0] > par_dict['wa_fld'] or\ + */ + __pyx_t_4 = __Pyx_GetItemInt_List(__pyx_v_w_0_range, 1, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 160, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_3 = __Pyx_PyObject_Dict_GetItem(__pyx_v_par_dict, __pyx_n_u_w0_fld); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 160, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_2 = PyObject_RichCompare(__pyx_t_4, __pyx_t_3, Py_LT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 160, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_INCREF(__pyx_t_2); + __pyx_t_1 = __pyx_t_2; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_L13_bool_binop_done:; + __pyx_v_w_0_not_in_range = __pyx_t_1; + __pyx_t_1 = 0; + + /* "euclidemu2.pyx":162 + * w_0_range[1] < par_dict['w0_fld'] + * + * w_a_not_in_range = w_a_range[0] > par_dict['wa_fld'] or\ # <<<<<<<<<<<<<< + * w_a_range[1] < par_dict['wa_fld'] + * + */ + __pyx_t_2 = __Pyx_GetItemInt_List(__pyx_v_w_a_range, 0, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 162, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyObject_Dict_GetItem(__pyx_v_par_dict, __pyx_n_u_wa_fld); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 162, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = PyObject_RichCompare(__pyx_t_2, __pyx_t_3, Py_GT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 162, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(1, 162, __pyx_L1_error) + if (!__pyx_t_5) { + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } else { + __Pyx_INCREF(__pyx_t_4); + __pyx_t_1 = __pyx_t_4; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + goto __pyx_L15_bool_binop_done; + } + + /* "euclidemu2.pyx":163 + * + * w_a_not_in_range = w_a_range[0] > par_dict['wa_fld'] or\ + * w_a_range[1] < par_dict['wa_fld'] # <<<<<<<<<<<<<< + * + * A_s_not_in_range = A_s_range[0] > par_dict['A_s'] or\ + */ + __pyx_t_4 = __Pyx_GetItemInt_List(__pyx_v_w_a_range, 1, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 163, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_3 = __Pyx_PyObject_Dict_GetItem(__pyx_v_par_dict, __pyx_n_u_wa_fld); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 163, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_2 = PyObject_RichCompare(__pyx_t_4, __pyx_t_3, Py_LT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 163, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_INCREF(__pyx_t_2); + __pyx_t_1 = __pyx_t_2; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_L15_bool_binop_done:; + __pyx_v_w_a_not_in_range = __pyx_t_1; + __pyx_t_1 = 0; + + /* "euclidemu2.pyx":165 + * w_a_range[1] < par_dict['wa_fld'] + * + * A_s_not_in_range = A_s_range[0] > par_dict['A_s'] or\ # <<<<<<<<<<<<<< + * A_s_range[1] < par_dict['A_s'] + * + */ + __pyx_t_2 = __Pyx_GetItemInt_List(__pyx_v_A_s_range, 0, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 165, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyObject_Dict_GetItem(__pyx_v_par_dict, __pyx_n_u_A_s); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 165, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = PyObject_RichCompare(__pyx_t_2, __pyx_t_3, Py_GT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 165, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(1, 165, __pyx_L1_error) + if (!__pyx_t_5) { + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } else { + __Pyx_INCREF(__pyx_t_4); + __pyx_t_1 = __pyx_t_4; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + goto __pyx_L17_bool_binop_done; + } + + /* "euclidemu2.pyx":166 + * + * A_s_not_in_range = A_s_range[0] > par_dict['A_s'] or\ + * A_s_range[1] < par_dict['A_s'] # <<<<<<<<<<<<<< + * + * if om_b_not_in_range: + */ + __pyx_t_4 = __Pyx_GetItemInt_List(__pyx_v_A_s_range, 1, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 166, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_3 = __Pyx_PyObject_Dict_GetItem(__pyx_v_par_dict, __pyx_n_u_A_s); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 166, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_2 = PyObject_RichCompare(__pyx_t_4, __pyx_t_3, Py_LT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 166, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_INCREF(__pyx_t_2); + __pyx_t_1 = __pyx_t_2; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_L17_bool_binop_done:; + __pyx_v_A_s_not_in_range = __pyx_t_1; + __pyx_t_1 = 0; + + /* "euclidemu2.pyx":168 + * A_s_range[1] < par_dict['A_s'] + * + * if om_b_not_in_range: # <<<<<<<<<<<<<< + * raise ValueError("Parameter range violation: \ + * Omega_b is set to %f, but should be in the interval \ + */ + __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_om_b_not_in_range); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(1, 168, __pyx_L1_error) + if (unlikely(__pyx_t_5)) { + + /* "euclidemu2.pyx":172 + * Omega_b is set to %f, but should be in the interval \ + * [0.04, 0.06]." + * %(par_dict['Omega_b'] )) # <<<<<<<<<<<<<< + * + * if om_m_not_in_range: + */ + __pyx_t_1 = __Pyx_PyObject_Dict_GetItem(__pyx_v_par_dict, __pyx_n_u_Omega_b); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 172, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyUnicode_FormatSafe(__pyx_kp_u_Parameter_range_violation_Omega, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 172, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "euclidemu2.pyx":169 + * + * if om_b_not_in_range: + * raise ValueError("Parameter range violation: \ # <<<<<<<<<<<<<< + * Omega_b is set to %f, but should be in the interval \ + * [0.04, 0.06]." + */ + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 169, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_Raise(__pyx_t_1, 0, 0, 0); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __PYX_ERR(1, 169, __pyx_L1_error) + + /* "euclidemu2.pyx":168 + * A_s_range[1] < par_dict['A_s'] + * + * if om_b_not_in_range: # <<<<<<<<<<<<<< + * raise ValueError("Parameter range violation: \ + * Omega_b is set to %f, but should be in the interval \ + */ + } + + /* "euclidemu2.pyx":174 + * %(par_dict['Omega_b'] )) + * + * if om_m_not_in_range: # <<<<<<<<<<<<<< + * raise ValueError("Parameter range violation: \ + * Omega_m is set to %f, but should be in the interval \ + */ + __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_om_m_not_in_range); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(1, 174, __pyx_L1_error) + if (unlikely(__pyx_t_5)) { + + /* "euclidemu2.pyx":178 + * Omega_m is set to %f, but should be in the interval \ + * [0.24, 0.40]." + * %(par_dict['Omega_m'])) # <<<<<<<<<<<<<< + * + * if m_nu_not_in_range: + */ + __pyx_t_1 = __Pyx_PyObject_Dict_GetItem(__pyx_v_par_dict, __pyx_n_u_Omega_m); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 178, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyUnicode_FormatSafe(__pyx_kp_u_Parameter_range_violation_Omega_2, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 178, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "euclidemu2.pyx":175 + * + * if om_m_not_in_range: + * raise ValueError("Parameter range violation: \ # <<<<<<<<<<<<<< + * Omega_m is set to %f, but should be in the interval \ + * [0.24, 0.40]." + */ + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 175, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_Raise(__pyx_t_1, 0, 0, 0); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __PYX_ERR(1, 175, __pyx_L1_error) + + /* "euclidemu2.pyx":174 + * %(par_dict['Omega_b'] )) + * + * if om_m_not_in_range: # <<<<<<<<<<<<<< + * raise ValueError("Parameter range violation: \ + * Omega_m is set to %f, but should be in the interval \ + */ + } + + /* "euclidemu2.pyx":180 + * %(par_dict['Omega_m'])) + * + * if m_nu_not_in_range: # <<<<<<<<<<<<<< + * raise ValueError("Parameter range violation: \ + * m_ncdm is set to %f, but should be in the interval \ + */ + __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_m_nu_not_in_range); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(1, 180, __pyx_L1_error) + if (unlikely(__pyx_t_5)) { + + /* "euclidemu2.pyx":184 + * m_ncdm is set to %f, but should be in the interval \ + * [0.00, 0.15]." + * %(par_dict['m_ncdm'])) # <<<<<<<<<<<<<< + * + * if n_s_not_in_range: + */ + __pyx_t_1 = __Pyx_PyObject_Dict_GetItem(__pyx_v_par_dict, __pyx_n_u_m_ncdm); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 184, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyUnicode_FormatSafe(__pyx_kp_u_Parameter_range_violation_m_ncdm, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 184, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "euclidemu2.pyx":181 + * + * if m_nu_not_in_range: + * raise ValueError("Parameter range violation: \ # <<<<<<<<<<<<<< + * m_ncdm is set to %f, but should be in the interval \ + * [0.00, 0.15]." + */ + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 181, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_Raise(__pyx_t_1, 0, 0, 0); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __PYX_ERR(1, 181, __pyx_L1_error) + + /* "euclidemu2.pyx":180 + * %(par_dict['Omega_m'])) + * + * if m_nu_not_in_range: # <<<<<<<<<<<<<< + * raise ValueError("Parameter range violation: \ + * m_ncdm is set to %f, but should be in the interval \ + */ + } + + /* "euclidemu2.pyx":186 + * %(par_dict['m_ncdm'])) + * + * if n_s_not_in_range: # <<<<<<<<<<<<<< + * raise ValueError("Parameter range violation: \ + * n_s is set to %f, but should be in the interval \ + */ + __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_n_s_not_in_range); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(1, 186, __pyx_L1_error) + if (unlikely(__pyx_t_5)) { + + /* "euclidemu2.pyx":190 + * n_s is set to %f, but should be in the interval \ + * [0.92, 1.00]." + * %(par_dict['n_s'])) # <<<<<<<<<<<<<< + * + * if h_not_in_range: + */ + __pyx_t_1 = __Pyx_PyObject_Dict_GetItem(__pyx_v_par_dict, __pyx_n_u_n_s); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 190, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyUnicode_FormatSafe(__pyx_kp_u_Parameter_range_violation_n_s_is, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 190, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "euclidemu2.pyx":187 + * + * if n_s_not_in_range: + * raise ValueError("Parameter range violation: \ # <<<<<<<<<<<<<< + * n_s is set to %f, but should be in the interval \ + * [0.92, 1.00]." + */ + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 187, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_Raise(__pyx_t_1, 0, 0, 0); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __PYX_ERR(1, 187, __pyx_L1_error) + + /* "euclidemu2.pyx":186 + * %(par_dict['m_ncdm'])) + * + * if n_s_not_in_range: # <<<<<<<<<<<<<< + * raise ValueError("Parameter range violation: \ + * n_s is set to %f, but should be in the interval \ + */ + } + + /* "euclidemu2.pyx":192 + * %(par_dict['n_s'])) + * + * if h_not_in_range: # <<<<<<<<<<<<<< + * raise ValueError("Parameter range violation: \ + * h is set to %f, but should be in the interval \ + */ + __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_h_not_in_range); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(1, 192, __pyx_L1_error) + if (unlikely(__pyx_t_5)) { + + /* "euclidemu2.pyx":196 + * h is set to %f, but should be in the interval \ + * [0.61, 0.73]." + * %( par_dict['h'])) # <<<<<<<<<<<<<< + * + * if w_0_not_in_range: + */ + __pyx_t_1 = __Pyx_PyObject_Dict_GetItem(__pyx_v_par_dict, __pyx_n_u_h); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 196, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyUnicode_FormatSafe(__pyx_kp_u_Parameter_range_violation_h_is_s, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 196, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "euclidemu2.pyx":193 + * + * if h_not_in_range: + * raise ValueError("Parameter range violation: \ # <<<<<<<<<<<<<< + * h is set to %f, but should be in the interval \ + * [0.61, 0.73]." + */ + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 193, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_Raise(__pyx_t_1, 0, 0, 0); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __PYX_ERR(1, 193, __pyx_L1_error) + + /* "euclidemu2.pyx":192 + * %(par_dict['n_s'])) + * + * if h_not_in_range: # <<<<<<<<<<<<<< + * raise ValueError("Parameter range violation: \ + * h is set to %f, but should be in the interval \ + */ + } + + /* "euclidemu2.pyx":198 + * %( par_dict['h'])) + * + * if w_0_not_in_range: # <<<<<<<<<<<<<< + * raise ValueError("Parameter range violation: \ + * w_0 is set to %f, but should be in the interval \ + */ + __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_w_0_not_in_range); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(1, 198, __pyx_L1_error) + if (unlikely(__pyx_t_5)) { + + /* "euclidemu2.pyx":202 + * w_0 is set to %f, but should be in the interval \ + * [-1.3, -0.7]." + * %( par_dict['w0_fld'])) # <<<<<<<<<<<<<< + * + * if w_a_not_in_range: + */ + __pyx_t_1 = __Pyx_PyObject_Dict_GetItem(__pyx_v_par_dict, __pyx_n_u_w0_fld); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 202, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyUnicode_FormatSafe(__pyx_kp_u_Parameter_range_violation_w_0_is, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 202, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "euclidemu2.pyx":199 + * + * if w_0_not_in_range: + * raise ValueError("Parameter range violation: \ # <<<<<<<<<<<<<< + * w_0 is set to %f, but should be in the interval \ + * [-1.3, -0.7]." + */ + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 199, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_Raise(__pyx_t_1, 0, 0, 0); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __PYX_ERR(1, 199, __pyx_L1_error) + + /* "euclidemu2.pyx":198 + * %( par_dict['h'])) + * + * if w_0_not_in_range: # <<<<<<<<<<<<<< + * raise ValueError("Parameter range violation: \ + * w_0 is set to %f, but should be in the interval \ + */ + } + + /* "euclidemu2.pyx":204 + * %( par_dict['w0_fld'])) + * + * if w_a_not_in_range: # <<<<<<<<<<<<<< + * raise ValueError("Parameter range violation: \ + * w_a is set to %f, but should be in the interval \ + */ + __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_w_a_not_in_range); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(1, 204, __pyx_L1_error) + if (unlikely(__pyx_t_5)) { + + /* "euclidemu2.pyx":208 + * w_a is set to %f, but should be in the interval \ + * [-0.7, 0.5]." + * %( par_dict['wa_fld'])) # <<<<<<<<<<<<<< + * + * if A_s_not_in_range: + */ + __pyx_t_1 = __Pyx_PyObject_Dict_GetItem(__pyx_v_par_dict, __pyx_n_u_wa_fld); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 208, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyUnicode_FormatSafe(__pyx_kp_u_Parameter_range_violation_w_a_is, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 208, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "euclidemu2.pyx":205 + * + * if w_a_not_in_range: + * raise ValueError("Parameter range violation: \ # <<<<<<<<<<<<<< + * w_a is set to %f, but should be in the interval \ + * [-0.7, 0.5]." + */ + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 205, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_Raise(__pyx_t_1, 0, 0, 0); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __PYX_ERR(1, 205, __pyx_L1_error) + + /* "euclidemu2.pyx":204 + * %( par_dict['w0_fld'])) + * + * if w_a_not_in_range: # <<<<<<<<<<<<<< + * raise ValueError("Parameter range violation: \ + * w_a is set to %f, but should be in the interval \ + */ + } + + /* "euclidemu2.pyx":210 + * %( par_dict['wa_fld'])) + * + * if A_s_not_in_range: # <<<<<<<<<<<<<< + * raise ValueError("Parameter range violation: \ + * A_s is set to %f, but should be in the interval \ + */ + __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_A_s_not_in_range); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(1, 210, __pyx_L1_error) + if (unlikely(__pyx_t_5)) { + + /* "euclidemu2.pyx":214 + * A_s is set to %f, but should be in the interval \ + * [1.7e-9, 2.5e-9]." + * %( par_dict['A_s'])) # <<<<<<<<<<<<<< + * + * + */ + __pyx_t_1 = __Pyx_PyObject_Dict_GetItem(__pyx_v_par_dict, __pyx_n_u_A_s); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 214, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyUnicode_FormatSafe(__pyx_kp_u_Parameter_range_violation_A_s_is, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 214, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "euclidemu2.pyx":211 + * + * if A_s_not_in_range: + * raise ValueError("Parameter range violation: \ # <<<<<<<<<<<<<< + * A_s is set to %f, but should be in the interval \ + * [1.7e-9, 2.5e-9]." + */ + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 211, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_Raise(__pyx_t_1, 0, 0, 0); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __PYX_ERR(1, 211, __pyx_L1_error) + + /* "euclidemu2.pyx":210 + * %( par_dict['wa_fld'])) + * + * if A_s_not_in_range: # <<<<<<<<<<<<<< + * raise ValueError("Parameter range violation: \ + * A_s is set to %f, but should be in the interval \ + */ + } + + /* "euclidemu2.pyx":129 + * ###################################################### + * + * def check_param_range(par_dict): #, csm_index=0): #Only one cosmology for now # <<<<<<<<<<<<<< + * """ + * Checks if all parameters in the cosmology dictionary 'par_dict' + */ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_AddTraceback("euclidemu2.check_param_range", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_om_b_range); + __Pyx_XDECREF(__pyx_v_om_m_range); + __Pyx_XDECREF(__pyx_v_m_nu_range); + __Pyx_XDECREF(__pyx_v_n_s_range); + __Pyx_XDECREF(__pyx_v_h_range); + __Pyx_XDECREF(__pyx_v_w_0_range); + __Pyx_XDECREF(__pyx_v_w_a_range); + __Pyx_XDECREF(__pyx_v_A_s_range); + __Pyx_XDECREF(__pyx_v_om_b_not_in_range); + __Pyx_XDECREF(__pyx_v_om_m_not_in_range); + __Pyx_XDECREF(__pyx_v_m_nu_not_in_range); + __Pyx_XDECREF(__pyx_v_n_s_not_in_range); + __Pyx_XDECREF(__pyx_v_h_not_in_range); + __Pyx_XDECREF(__pyx_v_w_0_not_in_range); + __Pyx_XDECREF(__pyx_v_w_a_not_in_range); + __Pyx_XDECREF(__pyx_v_A_s_not_in_range); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "euclidemu2.pyx":217 + * + * + * def convert_to_emu(class_pars_dict): # <<<<<<<<<<<<<< + * """ + * Signature: convert_to_emu(class_pars_dict) + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_10euclidemu2_3convert_to_emu(PyObject *__pyx_self, PyObject *__pyx_v_class_pars_dict); /*proto*/ +static char __pyx_doc_10euclidemu2_2convert_to_emu[] = "\n Signature: convert_to_emu(class_pars_dict)\n\n Description: Converts the set of parameters accepted by several\n other codes into a set of parameters accepted by\n EuclidEmulator2. Also checks the params exist.\n\n Input type: python dictionary\n\n Output type: python dictionary\n\n Related: class_to_emu\n "; +static PyMethodDef __pyx_mdef_10euclidemu2_3convert_to_emu = {"convert_to_emu", (PyCFunction)__pyx_pw_10euclidemu2_3convert_to_emu, METH_O, __pyx_doc_10euclidemu2_2convert_to_emu}; +static PyObject *__pyx_pw_10euclidemu2_3convert_to_emu(PyObject *__pyx_self, PyObject *__pyx_v_class_pars_dict) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("convert_to_emu (wrapper)", 0); + __pyx_r = __pyx_pf_10euclidemu2_2convert_to_emu(__pyx_self, ((PyObject *)__pyx_v_class_pars_dict)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10euclidemu2_2convert_to_emu(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_class_pars_dict) { + PyObject *__pyx_v_h = NULL; + PyObject *__pyx_v_Om_b = NULL; + PyObject *__pyx_v_m_ncdm = NULL; + PyObject *__pyx_v_Om_m = NULL; + PyObject *__pyx_v_Om_cdm = NULL; + PyObject *__pyx_v_n_s = NULL; + PyObject *__pyx_v_A_s = NULL; + PyObject *__pyx_v_w0_fld = NULL; + PyObject *__pyx_v_wa_fld = NULL; + PyObject *__pyx_v_emu_pars_dict = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("convert_to_emu", 0); + + /* "euclidemu2.pyx":231 + * Related: class_to_emu + * """ + * if not isinstance(class_pars_dict, dict): # <<<<<<<<<<<<<< + * print("The cosmological parameters must be passed as a \ + * python dictionary.\n") + */ + __pyx_t_1 = PyDict_Check(__pyx_v_class_pars_dict); + __pyx_t_2 = ((!(__pyx_t_1 != 0)) != 0); + if (__pyx_t_2) { + + /* "euclidemu2.pyx":232 + * """ + * if not isinstance(class_pars_dict, dict): + * print("The cosmological parameters must be passed as a \ # <<<<<<<<<<<<<< + * python dictionary.\n") + * sys.exit() + */ + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_tuple__5, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 232, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "euclidemu2.pyx":234 + * print("The cosmological parameters must be passed as a \ + * python dictionary.\n") + * sys.exit() # <<<<<<<<<<<<<< + * + * if 'h' in class_pars_dict: + */ + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_sys); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 234, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_exit); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 234, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5); + if (likely(__pyx_t_4)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_5, function); + } + } + __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallNoArg(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 234, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "euclidemu2.pyx":231 + * Related: class_to_emu + * """ + * if not isinstance(class_pars_dict, dict): # <<<<<<<<<<<<<< + * print("The cosmological parameters must be passed as a \ + * python dictionary.\n") + */ + } + + /* "euclidemu2.pyx":236 + * sys.exit() + * + * if 'h' in class_pars_dict: # <<<<<<<<<<<<<< + * h = class_pars_dict['h'] + * elif 'H0' in class_pars_dict: + */ + __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_n_u_h, __pyx_v_class_pars_dict, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(1, 236, __pyx_L1_error) + __pyx_t_1 = (__pyx_t_2 != 0); + if (__pyx_t_1) { + + /* "euclidemu2.pyx":237 + * + * if 'h' in class_pars_dict: + * h = class_pars_dict['h'] # <<<<<<<<<<<<<< + * elif 'H0' in class_pars_dict: + * h = class_pars_dict['H0']/100. + */ + __pyx_t_3 = __Pyx_PyObject_Dict_GetItem(__pyx_v_class_pars_dict, __pyx_n_u_h); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 237, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_v_h = __pyx_t_3; + __pyx_t_3 = 0; + + /* "euclidemu2.pyx":236 + * sys.exit() + * + * if 'h' in class_pars_dict: # <<<<<<<<<<<<<< + * h = class_pars_dict['h'] + * elif 'H0' in class_pars_dict: + */ + goto __pyx_L4; + } + + /* "euclidemu2.pyx":238 + * if 'h' in class_pars_dict: + * h = class_pars_dict['h'] + * elif 'H0' in class_pars_dict: # <<<<<<<<<<<<<< + * h = class_pars_dict['H0']/100. + * else: + */ + __pyx_t_1 = (__Pyx_PySequence_ContainsTF(__pyx_n_u_H0, __pyx_v_class_pars_dict, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(1, 238, __pyx_L1_error) + __pyx_t_2 = (__pyx_t_1 != 0); + if (__pyx_t_2) { + + /* "euclidemu2.pyx":239 + * h = class_pars_dict['h'] + * elif 'H0' in class_pars_dict: + * h = class_pars_dict['H0']/100. # <<<<<<<<<<<<<< + * else: + * print("Missing parameter h. Can't proceed.") + */ + __pyx_t_3 = __Pyx_PyObject_Dict_GetItem(__pyx_v_class_pars_dict, __pyx_n_u_H0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 239, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_5 = __Pyx_PyFloat_TrueDivideObjC(__pyx_t_3, __pyx_float_100_, 100., 0, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 239, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_v_h = __pyx_t_5; + __pyx_t_5 = 0; + + /* "euclidemu2.pyx":238 + * if 'h' in class_pars_dict: + * h = class_pars_dict['h'] + * elif 'H0' in class_pars_dict: # <<<<<<<<<<<<<< + * h = class_pars_dict['H0']/100. + * else: + */ + goto __pyx_L4; + } + + /* "euclidemu2.pyx":241 + * h = class_pars_dict['H0']/100. + * else: + * print("Missing parameter h. Can't proceed.") # <<<<<<<<<<<<<< + * sys.exit() + * + */ + /*else*/ { + __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_tuple__6, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 241, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + + /* "euclidemu2.pyx":242 + * else: + * print("Missing parameter h. Can't proceed.") + * sys.exit() # <<<<<<<<<<<<<< + * + * if 'Omega_b' in class_pars_dict: + */ + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_sys); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 242, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_exit); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 242, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_4, function); + } + } + __pyx_t_5 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 242, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + } + __pyx_L4:; + + /* "euclidemu2.pyx":244 + * sys.exit() + * + * if 'Omega_b' in class_pars_dict: # <<<<<<<<<<<<<< + * Om_b = class_pars_dict['Omega_b'] + * elif 'Omb' in class_pars_dict: + */ + __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_n_u_Omega_b, __pyx_v_class_pars_dict, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(1, 244, __pyx_L1_error) + __pyx_t_1 = (__pyx_t_2 != 0); + if (__pyx_t_1) { + + /* "euclidemu2.pyx":245 + * + * if 'Omega_b' in class_pars_dict: + * Om_b = class_pars_dict['Omega_b'] # <<<<<<<<<<<<<< + * elif 'Omb' in class_pars_dict: + * Om_b = class_pars_dict['Omb'] + */ + __pyx_t_5 = __Pyx_PyObject_Dict_GetItem(__pyx_v_class_pars_dict, __pyx_n_u_Omega_b); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 245, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_v_Om_b = __pyx_t_5; + __pyx_t_5 = 0; + + /* "euclidemu2.pyx":244 + * sys.exit() + * + * if 'Omega_b' in class_pars_dict: # <<<<<<<<<<<<<< + * Om_b = class_pars_dict['Omega_b'] + * elif 'Omb' in class_pars_dict: + */ + goto __pyx_L5; + } + + /* "euclidemu2.pyx":246 + * if 'Omega_b' in class_pars_dict: + * Om_b = class_pars_dict['Omega_b'] + * elif 'Omb' in class_pars_dict: # <<<<<<<<<<<<<< + * Om_b = class_pars_dict['Omb'] + * elif 'omega_b' in class_pars_dict: + */ + __pyx_t_1 = (__Pyx_PySequence_ContainsTF(__pyx_n_u_Omb, __pyx_v_class_pars_dict, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(1, 246, __pyx_L1_error) + __pyx_t_2 = (__pyx_t_1 != 0); + if (__pyx_t_2) { + + /* "euclidemu2.pyx":247 + * Om_b = class_pars_dict['Omega_b'] + * elif 'Omb' in class_pars_dict: + * Om_b = class_pars_dict['Omb'] # <<<<<<<<<<<<<< + * elif 'omega_b' in class_pars_dict: + * Om_b = class_pars_dict['omega_b']/h**2 + */ + __pyx_t_5 = __Pyx_PyObject_Dict_GetItem(__pyx_v_class_pars_dict, __pyx_n_u_Omb); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 247, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_v_Om_b = __pyx_t_5; + __pyx_t_5 = 0; + + /* "euclidemu2.pyx":246 + * if 'Omega_b' in class_pars_dict: + * Om_b = class_pars_dict['Omega_b'] + * elif 'Omb' in class_pars_dict: # <<<<<<<<<<<<<< + * Om_b = class_pars_dict['Omb'] + * elif 'omega_b' in class_pars_dict: + */ + goto __pyx_L5; + } + + /* "euclidemu2.pyx":248 + * elif 'Omb' in class_pars_dict: + * Om_b = class_pars_dict['Omb'] + * elif 'omega_b' in class_pars_dict: # <<<<<<<<<<<<<< + * Om_b = class_pars_dict['omega_b']/h**2 + * elif 'om_b' in class_pars_dict: + */ + __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_n_u_omega_b, __pyx_v_class_pars_dict, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(1, 248, __pyx_L1_error) + __pyx_t_1 = (__pyx_t_2 != 0); + if (__pyx_t_1) { + + /* "euclidemu2.pyx":249 + * Om_b = class_pars_dict['Omb'] + * elif 'omega_b' in class_pars_dict: + * Om_b = class_pars_dict['omega_b']/h**2 # <<<<<<<<<<<<<< + * elif 'om_b' in class_pars_dict: + * Om_b = class_pars_dict['om_b']/h**2 + */ + __pyx_t_5 = __Pyx_PyObject_Dict_GetItem(__pyx_v_class_pars_dict, __pyx_n_u_omega_b); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 249, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + if (unlikely(!__pyx_v_h)) { __Pyx_RaiseUnboundLocalError("h"); __PYX_ERR(1, 249, __pyx_L1_error) } + __pyx_t_4 = PyNumber_Power(__pyx_v_h, __pyx_int_2, Py_None); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 249, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_3 = __Pyx_PyNumber_Divide(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 249, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_v_Om_b = __pyx_t_3; + __pyx_t_3 = 0; + + /* "euclidemu2.pyx":248 + * elif 'Omb' in class_pars_dict: + * Om_b = class_pars_dict['Omb'] + * elif 'omega_b' in class_pars_dict: # <<<<<<<<<<<<<< + * Om_b = class_pars_dict['omega_b']/h**2 + * elif 'om_b' in class_pars_dict: + */ + goto __pyx_L5; + } + + /* "euclidemu2.pyx":250 + * elif 'omega_b' in class_pars_dict: + * Om_b = class_pars_dict['omega_b']/h**2 + * elif 'om_b' in class_pars_dict: # <<<<<<<<<<<<<< + * Om_b = class_pars_dict['om_b']/h**2 + * elif 'ombh2' in class_pars_dict: + */ + __pyx_t_1 = (__Pyx_PySequence_ContainsTF(__pyx_n_u_om_b, __pyx_v_class_pars_dict, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(1, 250, __pyx_L1_error) + __pyx_t_2 = (__pyx_t_1 != 0); + if (__pyx_t_2) { + + /* "euclidemu2.pyx":251 + * Om_b = class_pars_dict['omega_b']/h**2 + * elif 'om_b' in class_pars_dict: + * Om_b = class_pars_dict['om_b']/h**2 # <<<<<<<<<<<<<< + * elif 'ombh2' in class_pars_dict: + * Om_b = class_pars_dict['ombh2']/h**2 + */ + __pyx_t_3 = __Pyx_PyObject_Dict_GetItem(__pyx_v_class_pars_dict, __pyx_n_u_om_b); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 251, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (unlikely(!__pyx_v_h)) { __Pyx_RaiseUnboundLocalError("h"); __PYX_ERR(1, 251, __pyx_L1_error) } + __pyx_t_4 = PyNumber_Power(__pyx_v_h, __pyx_int_2, Py_None); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 251, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = __Pyx_PyNumber_Divide(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 251, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_v_Om_b = __pyx_t_5; + __pyx_t_5 = 0; + + /* "euclidemu2.pyx":250 + * elif 'omega_b' in class_pars_dict: + * Om_b = class_pars_dict['omega_b']/h**2 + * elif 'om_b' in class_pars_dict: # <<<<<<<<<<<<<< + * Om_b = class_pars_dict['om_b']/h**2 + * elif 'ombh2' in class_pars_dict: + */ + goto __pyx_L5; + } + + /* "euclidemu2.pyx":252 + * elif 'om_b' in class_pars_dict: + * Om_b = class_pars_dict['om_b']/h**2 + * elif 'ombh2' in class_pars_dict: # <<<<<<<<<<<<<< + * Om_b = class_pars_dict['ombh2']/h**2 + * else: + */ + __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_n_u_ombh2, __pyx_v_class_pars_dict, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(1, 252, __pyx_L1_error) + __pyx_t_1 = (__pyx_t_2 != 0); + if (__pyx_t_1) { + + /* "euclidemu2.pyx":253 + * Om_b = class_pars_dict['om_b']/h**2 + * elif 'ombh2' in class_pars_dict: + * Om_b = class_pars_dict['ombh2']/h**2 # <<<<<<<<<<<<<< + * else: + * print("Missing parameter Omega_b. Can't proceed.") + */ + __pyx_t_5 = __Pyx_PyObject_Dict_GetItem(__pyx_v_class_pars_dict, __pyx_n_u_ombh2); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 253, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + if (unlikely(!__pyx_v_h)) { __Pyx_RaiseUnboundLocalError("h"); __PYX_ERR(1, 253, __pyx_L1_error) } + __pyx_t_4 = PyNumber_Power(__pyx_v_h, __pyx_int_2, Py_None); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 253, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_3 = __Pyx_PyNumber_Divide(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 253, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_v_Om_b = __pyx_t_3; + __pyx_t_3 = 0; + + /* "euclidemu2.pyx":252 + * elif 'om_b' in class_pars_dict: + * Om_b = class_pars_dict['om_b']/h**2 + * elif 'ombh2' in class_pars_dict: # <<<<<<<<<<<<<< + * Om_b = class_pars_dict['ombh2']/h**2 + * else: + */ + goto __pyx_L5; + } + + /* "euclidemu2.pyx":255 + * Om_b = class_pars_dict['ombh2']/h**2 + * else: + * print("Missing parameter Omega_b. Can't proceed.") # <<<<<<<<<<<<<< + * sys.exit() + * + */ + /*else*/ { + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_tuple__7, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 255, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "euclidemu2.pyx":256 + * else: + * print("Missing parameter Omega_b. Can't proceed.") + * sys.exit() # <<<<<<<<<<<<<< + * + * # Currently only allowing this way of passing the neutrino mass + */ + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_sys); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 256, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_exit); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 256, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5); + if (likely(__pyx_t_4)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_5, function); + } + } + __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallNoArg(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 256, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + __pyx_L5:; + + /* "euclidemu2.pyx":261 + * # and only allowing one value to be passed. + * # TODO: Compute Omega_nu to add to Omega_m + * if 'm_ncdm' in class_pars_dict: # <<<<<<<<<<<<<< + * m_ncdm = class_pars_dict['m_ncdm'] + * elif 'm_nu' in class_pars_dict: + */ + __pyx_t_1 = (__Pyx_PySequence_ContainsTF(__pyx_n_u_m_ncdm, __pyx_v_class_pars_dict, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(1, 261, __pyx_L1_error) + __pyx_t_2 = (__pyx_t_1 != 0); + if (__pyx_t_2) { + + /* "euclidemu2.pyx":262 + * # TODO: Compute Omega_nu to add to Omega_m + * if 'm_ncdm' in class_pars_dict: + * m_ncdm = class_pars_dict['m_ncdm'] # <<<<<<<<<<<<<< + * elif 'm_nu' in class_pars_dict: + * m_ncdm = class_pars_dict['m_nu'] + */ + __pyx_t_3 = __Pyx_PyObject_Dict_GetItem(__pyx_v_class_pars_dict, __pyx_n_u_m_ncdm); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 262, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_v_m_ncdm = __pyx_t_3; + __pyx_t_3 = 0; + + /* "euclidemu2.pyx":261 + * # and only allowing one value to be passed. + * # TODO: Compute Omega_nu to add to Omega_m + * if 'm_ncdm' in class_pars_dict: # <<<<<<<<<<<<<< + * m_ncdm = class_pars_dict['m_ncdm'] + * elif 'm_nu' in class_pars_dict: + */ + goto __pyx_L6; + } + + /* "euclidemu2.pyx":263 + * if 'm_ncdm' in class_pars_dict: + * m_ncdm = class_pars_dict['m_ncdm'] + * elif 'm_nu' in class_pars_dict: # <<<<<<<<<<<<<< + * m_ncdm = class_pars_dict['m_nu'] + * elif 'mnu' in class_pars_dict: + */ + __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_n_u_m_nu, __pyx_v_class_pars_dict, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(1, 263, __pyx_L1_error) + __pyx_t_1 = (__pyx_t_2 != 0); + if (__pyx_t_1) { + + /* "euclidemu2.pyx":264 + * m_ncdm = class_pars_dict['m_ncdm'] + * elif 'm_nu' in class_pars_dict: + * m_ncdm = class_pars_dict['m_nu'] # <<<<<<<<<<<<<< + * elif 'mnu' in class_pars_dict: + * m_ncdm = class_pars_dict['mnu'] + */ + __pyx_t_3 = __Pyx_PyObject_Dict_GetItem(__pyx_v_class_pars_dict, __pyx_n_u_m_nu); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 264, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_v_m_ncdm = __pyx_t_3; + __pyx_t_3 = 0; + + /* "euclidemu2.pyx":263 + * if 'm_ncdm' in class_pars_dict: + * m_ncdm = class_pars_dict['m_ncdm'] + * elif 'm_nu' in class_pars_dict: # <<<<<<<<<<<<<< + * m_ncdm = class_pars_dict['m_nu'] + * elif 'mnu' in class_pars_dict: + */ + goto __pyx_L6; + } + + /* "euclidemu2.pyx":265 + * elif 'm_nu' in class_pars_dict: + * m_ncdm = class_pars_dict['m_nu'] + * elif 'mnu' in class_pars_dict: # <<<<<<<<<<<<<< + * m_ncdm = class_pars_dict['mnu'] + * else: + */ + __pyx_t_1 = (__Pyx_PySequence_ContainsTF(__pyx_n_u_mnu, __pyx_v_class_pars_dict, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(1, 265, __pyx_L1_error) + __pyx_t_2 = (__pyx_t_1 != 0); + if (__pyx_t_2) { + + /* "euclidemu2.pyx":266 + * m_ncdm = class_pars_dict['m_nu'] + * elif 'mnu' in class_pars_dict: + * m_ncdm = class_pars_dict['mnu'] # <<<<<<<<<<<<<< + * else: + * print("Missing parameter m_ncdm. Can't proceed.") + */ + __pyx_t_3 = __Pyx_PyObject_Dict_GetItem(__pyx_v_class_pars_dict, __pyx_n_u_mnu); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 266, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_v_m_ncdm = __pyx_t_3; + __pyx_t_3 = 0; + + /* "euclidemu2.pyx":265 + * elif 'm_nu' in class_pars_dict: + * m_ncdm = class_pars_dict['m_nu'] + * elif 'mnu' in class_pars_dict: # <<<<<<<<<<<<<< + * m_ncdm = class_pars_dict['mnu'] + * else: + */ + goto __pyx_L6; + } + + /* "euclidemu2.pyx":268 + * m_ncdm = class_pars_dict['mnu'] + * else: + * print("Missing parameter m_ncdm. Can't proceed.") # <<<<<<<<<<<<<< + * sys.exit() + * + */ + /*else*/ { + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_tuple__8, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 268, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "euclidemu2.pyx":269 + * else: + * print("Missing parameter m_ncdm. Can't proceed.") + * sys.exit() # <<<<<<<<<<<<<< + * + * + */ + __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_sys); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 269, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_exit); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 269, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_5 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); + if (likely(__pyx_t_5)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_5); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_4, function); + } + } + __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 269, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + __pyx_L6:; + + /* "euclidemu2.pyx":274 + * # Should give either Omega_m or Omega_cdm + * # Omega_m currently prefered as otherwise won't include neutrinos + * if 'Omega_m' in class_pars_dict: # <<<<<<<<<<<<<< + * Om_m = class_pars_dict['Omega_m'] + * elif 'Omm' in class_pars_dict: + */ + __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_n_u_Omega_m, __pyx_v_class_pars_dict, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(1, 274, __pyx_L1_error) + __pyx_t_1 = (__pyx_t_2 != 0); + if (__pyx_t_1) { + + /* "euclidemu2.pyx":275 + * # Omega_m currently prefered as otherwise won't include neutrinos + * if 'Omega_m' in class_pars_dict: + * Om_m = class_pars_dict['Omega_m'] # <<<<<<<<<<<<<< + * elif 'Omm' in class_pars_dict: + * Om_m = class_pars_dict['Omm'] + */ + __pyx_t_3 = __Pyx_PyObject_Dict_GetItem(__pyx_v_class_pars_dict, __pyx_n_u_Omega_m); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 275, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_v_Om_m = __pyx_t_3; + __pyx_t_3 = 0; + + /* "euclidemu2.pyx":274 + * # Should give either Omega_m or Omega_cdm + * # Omega_m currently prefered as otherwise won't include neutrinos + * if 'Omega_m' in class_pars_dict: # <<<<<<<<<<<<<< + * Om_m = class_pars_dict['Omega_m'] + * elif 'Omm' in class_pars_dict: + */ + goto __pyx_L7; + } + + /* "euclidemu2.pyx":276 + * if 'Omega_m' in class_pars_dict: + * Om_m = class_pars_dict['Omega_m'] + * elif 'Omm' in class_pars_dict: # <<<<<<<<<<<<<< + * Om_m = class_pars_dict['Omm'] + * elif 'omega_m' in class_pars_dict: + */ + __pyx_t_1 = (__Pyx_PySequence_ContainsTF(__pyx_n_u_Omm, __pyx_v_class_pars_dict, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(1, 276, __pyx_L1_error) + __pyx_t_2 = (__pyx_t_1 != 0); + if (__pyx_t_2) { + + /* "euclidemu2.pyx":277 + * Om_m = class_pars_dict['Omega_m'] + * elif 'Omm' in class_pars_dict: + * Om_m = class_pars_dict['Omm'] # <<<<<<<<<<<<<< + * elif 'omega_m' in class_pars_dict: + * Om_m = class_pars_dict['omega_m']/h**2 + */ + __pyx_t_3 = __Pyx_PyObject_Dict_GetItem(__pyx_v_class_pars_dict, __pyx_n_u_Omm); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 277, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_v_Om_m = __pyx_t_3; + __pyx_t_3 = 0; + + /* "euclidemu2.pyx":276 + * if 'Omega_m' in class_pars_dict: + * Om_m = class_pars_dict['Omega_m'] + * elif 'Omm' in class_pars_dict: # <<<<<<<<<<<<<< + * Om_m = class_pars_dict['Omm'] + * elif 'omega_m' in class_pars_dict: + */ + goto __pyx_L7; + } + + /* "euclidemu2.pyx":278 + * elif 'Omm' in class_pars_dict: + * Om_m = class_pars_dict['Omm'] + * elif 'omega_m' in class_pars_dict: # <<<<<<<<<<<<<< + * Om_m = class_pars_dict['omega_m']/h**2 + * elif 'om_m' in class_pars_dict: + */ + __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_n_u_omega_m, __pyx_v_class_pars_dict, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(1, 278, __pyx_L1_error) + __pyx_t_1 = (__pyx_t_2 != 0); + if (__pyx_t_1) { + + /* "euclidemu2.pyx":279 + * Om_m = class_pars_dict['Omm'] + * elif 'omega_m' in class_pars_dict: + * Om_m = class_pars_dict['omega_m']/h**2 # <<<<<<<<<<<<<< + * elif 'om_m' in class_pars_dict: + * Om_m = class_pars_dict['om_m']/h**2 + */ + __pyx_t_3 = __Pyx_PyObject_Dict_GetItem(__pyx_v_class_pars_dict, __pyx_n_u_omega_m); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 279, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (unlikely(!__pyx_v_h)) { __Pyx_RaiseUnboundLocalError("h"); __PYX_ERR(1, 279, __pyx_L1_error) } + __pyx_t_4 = PyNumber_Power(__pyx_v_h, __pyx_int_2, Py_None); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 279, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = __Pyx_PyNumber_Divide(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 279, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_v_Om_m = __pyx_t_5; + __pyx_t_5 = 0; + + /* "euclidemu2.pyx":278 + * elif 'Omm' in class_pars_dict: + * Om_m = class_pars_dict['Omm'] + * elif 'omega_m' in class_pars_dict: # <<<<<<<<<<<<<< + * Om_m = class_pars_dict['omega_m']/h**2 + * elif 'om_m' in class_pars_dict: + */ + goto __pyx_L7; + } + + /* "euclidemu2.pyx":280 + * elif 'omega_m' in class_pars_dict: + * Om_m = class_pars_dict['omega_m']/h**2 + * elif 'om_m' in class_pars_dict: # <<<<<<<<<<<<<< + * Om_m = class_pars_dict['om_m']/h**2 + * elif 'ommh2' in class_pars_dict: + */ + __pyx_t_1 = (__Pyx_PySequence_ContainsTF(__pyx_n_u_om_m, __pyx_v_class_pars_dict, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(1, 280, __pyx_L1_error) + __pyx_t_2 = (__pyx_t_1 != 0); + if (__pyx_t_2) { + + /* "euclidemu2.pyx":281 + * Om_m = class_pars_dict['omega_m']/h**2 + * elif 'om_m' in class_pars_dict: + * Om_m = class_pars_dict['om_m']/h**2 # <<<<<<<<<<<<<< + * elif 'ommh2' in class_pars_dict: + * Om_m = class_pars_dict['ommh2']/h**2 + */ + __pyx_t_5 = __Pyx_PyObject_Dict_GetItem(__pyx_v_class_pars_dict, __pyx_n_u_om_m); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 281, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + if (unlikely(!__pyx_v_h)) { __Pyx_RaiseUnboundLocalError("h"); __PYX_ERR(1, 281, __pyx_L1_error) } + __pyx_t_4 = PyNumber_Power(__pyx_v_h, __pyx_int_2, Py_None); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 281, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_3 = __Pyx_PyNumber_Divide(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 281, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_v_Om_m = __pyx_t_3; + __pyx_t_3 = 0; + + /* "euclidemu2.pyx":280 + * elif 'omega_m' in class_pars_dict: + * Om_m = class_pars_dict['omega_m']/h**2 + * elif 'om_m' in class_pars_dict: # <<<<<<<<<<<<<< + * Om_m = class_pars_dict['om_m']/h**2 + * elif 'ommh2' in class_pars_dict: + */ + goto __pyx_L7; + } + + /* "euclidemu2.pyx":282 + * elif 'om_m' in class_pars_dict: + * Om_m = class_pars_dict['om_m']/h**2 + * elif 'ommh2' in class_pars_dict: # <<<<<<<<<<<<<< + * Om_m = class_pars_dict['ommh2']/h**2 + * elif 'Omega_cdm' in class_pars_dict: + */ + __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_n_u_ommh2, __pyx_v_class_pars_dict, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(1, 282, __pyx_L1_error) + __pyx_t_1 = (__pyx_t_2 != 0); + if (__pyx_t_1) { + + /* "euclidemu2.pyx":283 + * Om_m = class_pars_dict['om_m']/h**2 + * elif 'ommh2' in class_pars_dict: + * Om_m = class_pars_dict['ommh2']/h**2 # <<<<<<<<<<<<<< + * elif 'Omega_cdm' in class_pars_dict: + * Om_cdm = class_pars_dict['Omega_cdm'] + */ + __pyx_t_3 = __Pyx_PyObject_Dict_GetItem(__pyx_v_class_pars_dict, __pyx_n_u_ommh2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 283, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (unlikely(!__pyx_v_h)) { __Pyx_RaiseUnboundLocalError("h"); __PYX_ERR(1, 283, __pyx_L1_error) } + __pyx_t_4 = PyNumber_Power(__pyx_v_h, __pyx_int_2, Py_None); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 283, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = __Pyx_PyNumber_Divide(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 283, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_v_Om_m = __pyx_t_5; + __pyx_t_5 = 0; + + /* "euclidemu2.pyx":282 + * elif 'om_m' in class_pars_dict: + * Om_m = class_pars_dict['om_m']/h**2 + * elif 'ommh2' in class_pars_dict: # <<<<<<<<<<<<<< + * Om_m = class_pars_dict['ommh2']/h**2 + * elif 'Omega_cdm' in class_pars_dict: + */ + goto __pyx_L7; + } + + /* "euclidemu2.pyx":284 + * elif 'ommh2' in class_pars_dict: + * Om_m = class_pars_dict['ommh2']/h**2 + * elif 'Omega_cdm' in class_pars_dict: # <<<<<<<<<<<<<< + * Om_cdm = class_pars_dict['Omega_cdm'] + * Om_m = Om_b + Om_cdm + */ + __pyx_t_1 = (__Pyx_PySequence_ContainsTF(__pyx_n_u_Omega_cdm, __pyx_v_class_pars_dict, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(1, 284, __pyx_L1_error) + __pyx_t_2 = (__pyx_t_1 != 0); + if (__pyx_t_2) { + + /* "euclidemu2.pyx":285 + * Om_m = class_pars_dict['ommh2']/h**2 + * elif 'Omega_cdm' in class_pars_dict: + * Om_cdm = class_pars_dict['Omega_cdm'] # <<<<<<<<<<<<<< + * Om_m = Om_b + Om_cdm + * elif 'Omc' in class_pars_dict: + */ + __pyx_t_5 = __Pyx_PyObject_Dict_GetItem(__pyx_v_class_pars_dict, __pyx_n_u_Omega_cdm); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 285, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_v_Om_cdm = __pyx_t_5; + __pyx_t_5 = 0; + + /* "euclidemu2.pyx":286 + * elif 'Omega_cdm' in class_pars_dict: + * Om_cdm = class_pars_dict['Omega_cdm'] + * Om_m = Om_b + Om_cdm # <<<<<<<<<<<<<< + * elif 'Omc' in class_pars_dict: + * Om_cdm = class_pars_dict['Omc'] + */ + if (unlikely(!__pyx_v_Om_b)) { __Pyx_RaiseUnboundLocalError("Om_b"); __PYX_ERR(1, 286, __pyx_L1_error) } + __pyx_t_5 = PyNumber_Add(__pyx_v_Om_b, __pyx_v_Om_cdm); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 286, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_v_Om_m = __pyx_t_5; + __pyx_t_5 = 0; + + /* "euclidemu2.pyx":284 + * elif 'ommh2' in class_pars_dict: + * Om_m = class_pars_dict['ommh2']/h**2 + * elif 'Omega_cdm' in class_pars_dict: # <<<<<<<<<<<<<< + * Om_cdm = class_pars_dict['Omega_cdm'] + * Om_m = Om_b + Om_cdm + */ + goto __pyx_L7; + } + + /* "euclidemu2.pyx":287 + * Om_cdm = class_pars_dict['Omega_cdm'] + * Om_m = Om_b + Om_cdm + * elif 'Omc' in class_pars_dict: # <<<<<<<<<<<<<< + * Om_cdm = class_pars_dict['Omc'] + * Om_m = Om_b + Om_cdm + */ + __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_n_u_Omc, __pyx_v_class_pars_dict, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(1, 287, __pyx_L1_error) + __pyx_t_1 = (__pyx_t_2 != 0); + if (__pyx_t_1) { + + /* "euclidemu2.pyx":288 + * Om_m = Om_b + Om_cdm + * elif 'Omc' in class_pars_dict: + * Om_cdm = class_pars_dict['Omc'] # <<<<<<<<<<<<<< + * Om_m = Om_b + Om_cdm + * elif 'omega_cdm' in class_pars_dict: + */ + __pyx_t_5 = __Pyx_PyObject_Dict_GetItem(__pyx_v_class_pars_dict, __pyx_n_u_Omc); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 288, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_v_Om_cdm = __pyx_t_5; + __pyx_t_5 = 0; + + /* "euclidemu2.pyx":289 + * elif 'Omc' in class_pars_dict: + * Om_cdm = class_pars_dict['Omc'] + * Om_m = Om_b + Om_cdm # <<<<<<<<<<<<<< + * elif 'omega_cdm' in class_pars_dict: + * Om_cdm = class_pars_dict['omega_cdm']/h**2 + */ + if (unlikely(!__pyx_v_Om_b)) { __Pyx_RaiseUnboundLocalError("Om_b"); __PYX_ERR(1, 289, __pyx_L1_error) } + __pyx_t_5 = PyNumber_Add(__pyx_v_Om_b, __pyx_v_Om_cdm); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 289, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_v_Om_m = __pyx_t_5; + __pyx_t_5 = 0; + + /* "euclidemu2.pyx":287 + * Om_cdm = class_pars_dict['Omega_cdm'] + * Om_m = Om_b + Om_cdm + * elif 'Omc' in class_pars_dict: # <<<<<<<<<<<<<< + * Om_cdm = class_pars_dict['Omc'] + * Om_m = Om_b + Om_cdm + */ + goto __pyx_L7; + } + + /* "euclidemu2.pyx":290 + * Om_cdm = class_pars_dict['Omc'] + * Om_m = Om_b + Om_cdm + * elif 'omega_cdm' in class_pars_dict: # <<<<<<<<<<<<<< + * Om_cdm = class_pars_dict['omega_cdm']/h**2 + * Om_m = Om_b + Om_cdm + */ + __pyx_t_1 = (__Pyx_PySequence_ContainsTF(__pyx_n_u_omega_cdm, __pyx_v_class_pars_dict, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(1, 290, __pyx_L1_error) + __pyx_t_2 = (__pyx_t_1 != 0); + if (__pyx_t_2) { + + /* "euclidemu2.pyx":291 + * Om_m = Om_b + Om_cdm + * elif 'omega_cdm' in class_pars_dict: + * Om_cdm = class_pars_dict['omega_cdm']/h**2 # <<<<<<<<<<<<<< + * Om_m = Om_b + Om_cdm + * elif 'omch2' in class_pars_dict: + */ + __pyx_t_5 = __Pyx_PyObject_Dict_GetItem(__pyx_v_class_pars_dict, __pyx_n_u_omega_cdm); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 291, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + if (unlikely(!__pyx_v_h)) { __Pyx_RaiseUnboundLocalError("h"); __PYX_ERR(1, 291, __pyx_L1_error) } + __pyx_t_4 = PyNumber_Power(__pyx_v_h, __pyx_int_2, Py_None); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 291, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_3 = __Pyx_PyNumber_Divide(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 291, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_v_Om_cdm = __pyx_t_3; + __pyx_t_3 = 0; + + /* "euclidemu2.pyx":292 + * elif 'omega_cdm' in class_pars_dict: + * Om_cdm = class_pars_dict['omega_cdm']/h**2 + * Om_m = Om_b + Om_cdm # <<<<<<<<<<<<<< + * elif 'omch2' in class_pars_dict: + * Om_cdm = class_pars_dict['omch2']/h**2 + */ + if (unlikely(!__pyx_v_Om_b)) { __Pyx_RaiseUnboundLocalError("Om_b"); __PYX_ERR(1, 292, __pyx_L1_error) } + __pyx_t_3 = PyNumber_Add(__pyx_v_Om_b, __pyx_v_Om_cdm); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 292, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_v_Om_m = __pyx_t_3; + __pyx_t_3 = 0; + + /* "euclidemu2.pyx":290 + * Om_cdm = class_pars_dict['Omc'] + * Om_m = Om_b + Om_cdm + * elif 'omega_cdm' in class_pars_dict: # <<<<<<<<<<<<<< + * Om_cdm = class_pars_dict['omega_cdm']/h**2 + * Om_m = Om_b + Om_cdm + */ + goto __pyx_L7; + } + + /* "euclidemu2.pyx":293 + * Om_cdm = class_pars_dict['omega_cdm']/h**2 + * Om_m = Om_b + Om_cdm + * elif 'omch2' in class_pars_dict: # <<<<<<<<<<<<<< + * Om_cdm = class_pars_dict['omch2']/h**2 + * Om_m = Om_b + Om_cdm + */ + __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_n_u_omch2, __pyx_v_class_pars_dict, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(1, 293, __pyx_L1_error) + __pyx_t_1 = (__pyx_t_2 != 0); + if (__pyx_t_1) { + + /* "euclidemu2.pyx":294 + * Om_m = Om_b + Om_cdm + * elif 'omch2' in class_pars_dict: + * Om_cdm = class_pars_dict['omch2']/h**2 # <<<<<<<<<<<<<< + * Om_m = Om_b + Om_cdm + * else: + */ + __pyx_t_3 = __Pyx_PyObject_Dict_GetItem(__pyx_v_class_pars_dict, __pyx_n_u_omch2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 294, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (unlikely(!__pyx_v_h)) { __Pyx_RaiseUnboundLocalError("h"); __PYX_ERR(1, 294, __pyx_L1_error) } + __pyx_t_4 = PyNumber_Power(__pyx_v_h, __pyx_int_2, Py_None); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 294, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = __Pyx_PyNumber_Divide(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 294, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_v_Om_cdm = __pyx_t_5; + __pyx_t_5 = 0; + + /* "euclidemu2.pyx":295 + * elif 'omch2' in class_pars_dict: + * Om_cdm = class_pars_dict['omch2']/h**2 + * Om_m = Om_b + Om_cdm # <<<<<<<<<<<<<< + * else: + * print("Missing parameter Omega_m or Omega_cdm. Can't proceed.") + */ + if (unlikely(!__pyx_v_Om_b)) { __Pyx_RaiseUnboundLocalError("Om_b"); __PYX_ERR(1, 295, __pyx_L1_error) } + __pyx_t_5 = PyNumber_Add(__pyx_v_Om_b, __pyx_v_Om_cdm); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 295, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_v_Om_m = __pyx_t_5; + __pyx_t_5 = 0; + + /* "euclidemu2.pyx":293 + * Om_cdm = class_pars_dict['omega_cdm']/h**2 + * Om_m = Om_b + Om_cdm + * elif 'omch2' in class_pars_dict: # <<<<<<<<<<<<<< + * Om_cdm = class_pars_dict['omch2']/h**2 + * Om_m = Om_b + Om_cdm + */ + goto __pyx_L7; + } + + /* "euclidemu2.pyx":297 + * Om_m = Om_b + Om_cdm + * else: + * print("Missing parameter Omega_m or Omega_cdm. Can't proceed.") # <<<<<<<<<<<<<< + * sys.exit() + * + */ + /*else*/ { + __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_tuple__9, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 297, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + + /* "euclidemu2.pyx":298 + * else: + * print("Missing parameter Omega_m or Omega_cdm. Can't proceed.") + * sys.exit() # <<<<<<<<<<<<<< + * + * if 'n_s' in class_pars_dict: + */ + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_sys); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 298, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_exit); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 298, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_4)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + } + } + __pyx_t_5 = (__pyx_t_4) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4) : __Pyx_PyObject_CallNoArg(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 298, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + } + __pyx_L7:; + + /* "euclidemu2.pyx":300 + * sys.exit() + * + * if 'n_s' in class_pars_dict: # <<<<<<<<<<<<<< + * n_s = class_pars_dict['n_s'] + * elif 'ns' in class_pars_dict: + */ + __pyx_t_1 = (__Pyx_PySequence_ContainsTF(__pyx_n_u_n_s, __pyx_v_class_pars_dict, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(1, 300, __pyx_L1_error) + __pyx_t_2 = (__pyx_t_1 != 0); + if (__pyx_t_2) { + + /* "euclidemu2.pyx":301 + * + * if 'n_s' in class_pars_dict: + * n_s = class_pars_dict['n_s'] # <<<<<<<<<<<<<< + * elif 'ns' in class_pars_dict: + * n_s = class_pars_dict['ns'] + */ + __pyx_t_5 = __Pyx_PyObject_Dict_GetItem(__pyx_v_class_pars_dict, __pyx_n_u_n_s); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 301, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_v_n_s = __pyx_t_5; + __pyx_t_5 = 0; + + /* "euclidemu2.pyx":300 + * sys.exit() + * + * if 'n_s' in class_pars_dict: # <<<<<<<<<<<<<< + * n_s = class_pars_dict['n_s'] + * elif 'ns' in class_pars_dict: + */ + goto __pyx_L8; + } + + /* "euclidemu2.pyx":302 + * if 'n_s' in class_pars_dict: + * n_s = class_pars_dict['n_s'] + * elif 'ns' in class_pars_dict: # <<<<<<<<<<<<<< + * n_s = class_pars_dict['ns'] + * else: + */ + __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_n_u_ns, __pyx_v_class_pars_dict, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(1, 302, __pyx_L1_error) + __pyx_t_1 = (__pyx_t_2 != 0); + if (__pyx_t_1) { + + /* "euclidemu2.pyx":303 + * n_s = class_pars_dict['n_s'] + * elif 'ns' in class_pars_dict: + * n_s = class_pars_dict['ns'] # <<<<<<<<<<<<<< + * else: + * print("Missing parameter n_s. Can't proceed.") + */ + __pyx_t_5 = __Pyx_PyObject_Dict_GetItem(__pyx_v_class_pars_dict, __pyx_n_u_ns); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 303, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_v_n_s = __pyx_t_5; + __pyx_t_5 = 0; + + /* "euclidemu2.pyx":302 + * if 'n_s' in class_pars_dict: + * n_s = class_pars_dict['n_s'] + * elif 'ns' in class_pars_dict: # <<<<<<<<<<<<<< + * n_s = class_pars_dict['ns'] + * else: + */ + goto __pyx_L8; + } + + /* "euclidemu2.pyx":305 + * n_s = class_pars_dict['ns'] + * else: + * print("Missing parameter n_s. Can't proceed.") # <<<<<<<<<<<<<< + * sys.exit() + * + */ + /*else*/ { + __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_tuple__10, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 305, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + + /* "euclidemu2.pyx":306 + * else: + * print("Missing parameter n_s. Can't proceed.") + * sys.exit() # <<<<<<<<<<<<<< + * + * if 'A_s' in class_pars_dict: + */ + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_sys); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 306, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_exit); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 306, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_4, function); + } + } + __pyx_t_5 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 306, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + } + __pyx_L8:; + + /* "euclidemu2.pyx":308 + * sys.exit() + * + * if 'A_s' in class_pars_dict: # <<<<<<<<<<<<<< + * A_s = class_pars_dict['A_s'] + * elif 'As' in class_pars_dict: + */ + __pyx_t_1 = (__Pyx_PySequence_ContainsTF(__pyx_n_u_A_s, __pyx_v_class_pars_dict, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(1, 308, __pyx_L1_error) + __pyx_t_2 = (__pyx_t_1 != 0); + if (__pyx_t_2) { + + /* "euclidemu2.pyx":309 + * + * if 'A_s' in class_pars_dict: + * A_s = class_pars_dict['A_s'] # <<<<<<<<<<<<<< + * elif 'As' in class_pars_dict: + * A_s = class_pars_dict['As'] + */ + __pyx_t_5 = __Pyx_PyObject_Dict_GetItem(__pyx_v_class_pars_dict, __pyx_n_u_A_s); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 309, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_v_A_s = __pyx_t_5; + __pyx_t_5 = 0; + + /* "euclidemu2.pyx":308 + * sys.exit() + * + * if 'A_s' in class_pars_dict: # <<<<<<<<<<<<<< + * A_s = class_pars_dict['A_s'] + * elif 'As' in class_pars_dict: + */ + goto __pyx_L9; + } + + /* "euclidemu2.pyx":310 + * if 'A_s' in class_pars_dict: + * A_s = class_pars_dict['A_s'] + * elif 'As' in class_pars_dict: # <<<<<<<<<<<<<< + * A_s = class_pars_dict['As'] + * elif 'ln10^{10}A_s' in class_pars_dict: + */ + __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_n_u_As, __pyx_v_class_pars_dict, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(1, 310, __pyx_L1_error) + __pyx_t_1 = (__pyx_t_2 != 0); + if (__pyx_t_1) { + + /* "euclidemu2.pyx":311 + * A_s = class_pars_dict['A_s'] + * elif 'As' in class_pars_dict: + * A_s = class_pars_dict['As'] # <<<<<<<<<<<<<< + * elif 'ln10^{10}A_s' in class_pars_dict: + * A_s = np.exp(class_pars_dict['ln10^{10}A_s'])*1.0e-10 + */ + __pyx_t_5 = __Pyx_PyObject_Dict_GetItem(__pyx_v_class_pars_dict, __pyx_n_u_As); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 311, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_v_A_s = __pyx_t_5; + __pyx_t_5 = 0; + + /* "euclidemu2.pyx":310 + * if 'A_s' in class_pars_dict: + * A_s = class_pars_dict['A_s'] + * elif 'As' in class_pars_dict: # <<<<<<<<<<<<<< + * A_s = class_pars_dict['As'] + * elif 'ln10^{10}A_s' in class_pars_dict: + */ + goto __pyx_L9; + } + + /* "euclidemu2.pyx":312 + * elif 'As' in class_pars_dict: + * A_s = class_pars_dict['As'] + * elif 'ln10^{10}A_s' in class_pars_dict: # <<<<<<<<<<<<<< + * A_s = np.exp(class_pars_dict['ln10^{10}A_s'])*1.0e-10 + * else: + */ + __pyx_t_1 = (__Pyx_PySequence_ContainsTF(__pyx_kp_u_ln10_10_A_s, __pyx_v_class_pars_dict, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(1, 312, __pyx_L1_error) + __pyx_t_2 = (__pyx_t_1 != 0); + if (__pyx_t_2) { + + /* "euclidemu2.pyx":313 + * A_s = class_pars_dict['As'] + * elif 'ln10^{10}A_s' in class_pars_dict: + * A_s = np.exp(class_pars_dict['ln10^{10}A_s'])*1.0e-10 # <<<<<<<<<<<<<< + * else: + * print("Missing parameter A_s or ln10^{10}A_s. Can't proceed.") + */ + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 313, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_exp); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 313, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = __Pyx_PyObject_Dict_GetItem(__pyx_v_class_pars_dict, __pyx_kp_u_ln10_10_A_s); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 313, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_6 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_6)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_6); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + } + } + __pyx_t_5 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_6, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 313, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = PyNumber_Multiply(__pyx_t_5, __pyx_float_1_0eneg_10); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 313, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_v_A_s = __pyx_t_3; + __pyx_t_3 = 0; + + /* "euclidemu2.pyx":312 + * elif 'As' in class_pars_dict: + * A_s = class_pars_dict['As'] + * elif 'ln10^{10}A_s' in class_pars_dict: # <<<<<<<<<<<<<< + * A_s = np.exp(class_pars_dict['ln10^{10}A_s'])*1.0e-10 + * else: + */ + goto __pyx_L9; + } + + /* "euclidemu2.pyx":315 + * A_s = np.exp(class_pars_dict['ln10^{10}A_s'])*1.0e-10 + * else: + * print("Missing parameter A_s or ln10^{10}A_s. Can't proceed.") # <<<<<<<<<<<<<< + * sys.exit() + * + */ + /*else*/ { + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_tuple__11, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 315, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "euclidemu2.pyx":316 + * else: + * print("Missing parameter A_s or ln10^{10}A_s. Can't proceed.") + * sys.exit() # <<<<<<<<<<<<<< + * + * # Using default values for DE params for LCDM case. + */ + __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_sys); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 316, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_exit); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 316, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_5 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); + if (likely(__pyx_t_5)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_5); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_4, function); + } + } + __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 316, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + __pyx_L9:; + + /* "euclidemu2.pyx":319 + * + * # Using default values for DE params for LCDM case. + * if 'w0_fld' in class_pars_dict: # <<<<<<<<<<<<<< + * w0_fld = class_pars_dict['w0_fld'] + * elif 'w0' in class_pars_dict: + */ + __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_n_u_w0_fld, __pyx_v_class_pars_dict, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(1, 319, __pyx_L1_error) + __pyx_t_1 = (__pyx_t_2 != 0); + if (__pyx_t_1) { + + /* "euclidemu2.pyx":320 + * # Using default values for DE params for LCDM case. + * if 'w0_fld' in class_pars_dict: + * w0_fld = class_pars_dict['w0_fld'] # <<<<<<<<<<<<<< + * elif 'w0' in class_pars_dict: + * w0_fld = class_pars_dict['w0'] + */ + __pyx_t_3 = __Pyx_PyObject_Dict_GetItem(__pyx_v_class_pars_dict, __pyx_n_u_w0_fld); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 320, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_v_w0_fld = __pyx_t_3; + __pyx_t_3 = 0; + + /* "euclidemu2.pyx":319 + * + * # Using default values for DE params for LCDM case. + * if 'w0_fld' in class_pars_dict: # <<<<<<<<<<<<<< + * w0_fld = class_pars_dict['w0_fld'] + * elif 'w0' in class_pars_dict: + */ + goto __pyx_L10; + } + + /* "euclidemu2.pyx":321 + * if 'w0_fld' in class_pars_dict: + * w0_fld = class_pars_dict['w0_fld'] + * elif 'w0' in class_pars_dict: # <<<<<<<<<<<<<< + * w0_fld = class_pars_dict['w0'] + * elif 'w_0' in class_pars_dict: + */ + __pyx_t_1 = (__Pyx_PySequence_ContainsTF(__pyx_n_u_w0, __pyx_v_class_pars_dict, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(1, 321, __pyx_L1_error) + __pyx_t_2 = (__pyx_t_1 != 0); + if (__pyx_t_2) { + + /* "euclidemu2.pyx":322 + * w0_fld = class_pars_dict['w0_fld'] + * elif 'w0' in class_pars_dict: + * w0_fld = class_pars_dict['w0'] # <<<<<<<<<<<<<< + * elif 'w_0' in class_pars_dict: + * w0_fld = class_pars_dict['w_0'] + */ + __pyx_t_3 = __Pyx_PyObject_Dict_GetItem(__pyx_v_class_pars_dict, __pyx_n_u_w0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 322, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_v_w0_fld = __pyx_t_3; + __pyx_t_3 = 0; + + /* "euclidemu2.pyx":321 + * if 'w0_fld' in class_pars_dict: + * w0_fld = class_pars_dict['w0_fld'] + * elif 'w0' in class_pars_dict: # <<<<<<<<<<<<<< + * w0_fld = class_pars_dict['w0'] + * elif 'w_0' in class_pars_dict: + */ + goto __pyx_L10; + } + + /* "euclidemu2.pyx":323 + * elif 'w0' in class_pars_dict: + * w0_fld = class_pars_dict['w0'] + * elif 'w_0' in class_pars_dict: # <<<<<<<<<<<<<< + * w0_fld = class_pars_dict['w_0'] + * elif 'w' in class_pars_dict: + */ + __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_n_u_w_0, __pyx_v_class_pars_dict, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(1, 323, __pyx_L1_error) + __pyx_t_1 = (__pyx_t_2 != 0); + if (__pyx_t_1) { + + /* "euclidemu2.pyx":324 + * w0_fld = class_pars_dict['w0'] + * elif 'w_0' in class_pars_dict: + * w0_fld = class_pars_dict['w_0'] # <<<<<<<<<<<<<< + * elif 'w' in class_pars_dict: + * w0_fld = class_pars_dict['w'] + */ + __pyx_t_3 = __Pyx_PyObject_Dict_GetItem(__pyx_v_class_pars_dict, __pyx_n_u_w_0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 324, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_v_w0_fld = __pyx_t_3; + __pyx_t_3 = 0; + + /* "euclidemu2.pyx":323 + * elif 'w0' in class_pars_dict: + * w0_fld = class_pars_dict['w0'] + * elif 'w_0' in class_pars_dict: # <<<<<<<<<<<<<< + * w0_fld = class_pars_dict['w_0'] + * elif 'w' in class_pars_dict: + */ + goto __pyx_L10; + } + + /* "euclidemu2.pyx":325 + * elif 'w_0' in class_pars_dict: + * w0_fld = class_pars_dict['w_0'] + * elif 'w' in class_pars_dict: # <<<<<<<<<<<<<< + * w0_fld = class_pars_dict['w'] + * else: + */ + __pyx_t_1 = (__Pyx_PySequence_ContainsTF(__pyx_n_u_w, __pyx_v_class_pars_dict, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(1, 325, __pyx_L1_error) + __pyx_t_2 = (__pyx_t_1 != 0); + if (__pyx_t_2) { + + /* "euclidemu2.pyx":326 + * w0_fld = class_pars_dict['w_0'] + * elif 'w' in class_pars_dict: + * w0_fld = class_pars_dict['w'] # <<<<<<<<<<<<<< + * else: + * print("Missing parameter w0. Will set to -1.") + */ + __pyx_t_3 = __Pyx_PyObject_Dict_GetItem(__pyx_v_class_pars_dict, __pyx_n_u_w); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 326, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_v_w0_fld = __pyx_t_3; + __pyx_t_3 = 0; + + /* "euclidemu2.pyx":325 + * elif 'w_0' in class_pars_dict: + * w0_fld = class_pars_dict['w_0'] + * elif 'w' in class_pars_dict: # <<<<<<<<<<<<<< + * w0_fld = class_pars_dict['w'] + * else: + */ + goto __pyx_L10; + } + + /* "euclidemu2.pyx":328 + * w0_fld = class_pars_dict['w'] + * else: + * print("Missing parameter w0. Will set to -1.") # <<<<<<<<<<<<<< + * w0_fld=-1.0 + * + */ + /*else*/ { + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_tuple__12, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 328, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "euclidemu2.pyx":329 + * else: + * print("Missing parameter w0. Will set to -1.") + * w0_fld=-1.0 # <<<<<<<<<<<<<< + * + * if 'wa_fld' in class_pars_dict: + */ + __Pyx_INCREF(__pyx_float_neg_1_0); + __pyx_v_w0_fld = __pyx_float_neg_1_0; + } + __pyx_L10:; + + /* "euclidemu2.pyx":331 + * w0_fld=-1.0 + * + * if 'wa_fld' in class_pars_dict: # <<<<<<<<<<<<<< + * wa_fld = class_pars_dict['wa_fld'] + * elif 'wa' in class_pars_dict: + */ + __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_n_u_wa_fld, __pyx_v_class_pars_dict, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(1, 331, __pyx_L1_error) + __pyx_t_1 = (__pyx_t_2 != 0); + if (__pyx_t_1) { + + /* "euclidemu2.pyx":332 + * + * if 'wa_fld' in class_pars_dict: + * wa_fld = class_pars_dict['wa_fld'] # <<<<<<<<<<<<<< + * elif 'wa' in class_pars_dict: + * wa_fld = class_pars_dict['wa'] + */ + __pyx_t_3 = __Pyx_PyObject_Dict_GetItem(__pyx_v_class_pars_dict, __pyx_n_u_wa_fld); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 332, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_v_wa_fld = __pyx_t_3; + __pyx_t_3 = 0; + + /* "euclidemu2.pyx":331 + * w0_fld=-1.0 + * + * if 'wa_fld' in class_pars_dict: # <<<<<<<<<<<<<< + * wa_fld = class_pars_dict['wa_fld'] + * elif 'wa' in class_pars_dict: + */ + goto __pyx_L11; + } + + /* "euclidemu2.pyx":333 + * if 'wa_fld' in class_pars_dict: + * wa_fld = class_pars_dict['wa_fld'] + * elif 'wa' in class_pars_dict: # <<<<<<<<<<<<<< + * wa_fld = class_pars_dict['wa'] + * elif 'w_a' in class_pars_dict: + */ + __pyx_t_1 = (__Pyx_PySequence_ContainsTF(__pyx_n_u_wa, __pyx_v_class_pars_dict, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(1, 333, __pyx_L1_error) + __pyx_t_2 = (__pyx_t_1 != 0); + if (__pyx_t_2) { + + /* "euclidemu2.pyx":334 + * wa_fld = class_pars_dict['wa_fld'] + * elif 'wa' in class_pars_dict: + * wa_fld = class_pars_dict['wa'] # <<<<<<<<<<<<<< + * elif 'w_a' in class_pars_dict: + * wa_fld = class_pars_dict['w_a'] + */ + __pyx_t_3 = __Pyx_PyObject_Dict_GetItem(__pyx_v_class_pars_dict, __pyx_n_u_wa); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 334, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_v_wa_fld = __pyx_t_3; + __pyx_t_3 = 0; + + /* "euclidemu2.pyx":333 + * if 'wa_fld' in class_pars_dict: + * wa_fld = class_pars_dict['wa_fld'] + * elif 'wa' in class_pars_dict: # <<<<<<<<<<<<<< + * wa_fld = class_pars_dict['wa'] + * elif 'w_a' in class_pars_dict: + */ + goto __pyx_L11; + } + + /* "euclidemu2.pyx":335 + * elif 'wa' in class_pars_dict: + * wa_fld = class_pars_dict['wa'] + * elif 'w_a' in class_pars_dict: # <<<<<<<<<<<<<< + * wa_fld = class_pars_dict['w_a'] + * else: + */ + __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_n_u_w_a, __pyx_v_class_pars_dict, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(1, 335, __pyx_L1_error) + __pyx_t_1 = (__pyx_t_2 != 0); + if (__pyx_t_1) { + + /* "euclidemu2.pyx":336 + * wa_fld = class_pars_dict['wa'] + * elif 'w_a' in class_pars_dict: + * wa_fld = class_pars_dict['w_a'] # <<<<<<<<<<<<<< + * else: + * print("Missing parameter wa. Will set to 0.") + */ + __pyx_t_3 = __Pyx_PyObject_Dict_GetItem(__pyx_v_class_pars_dict, __pyx_n_u_w_a); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 336, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_v_wa_fld = __pyx_t_3; + __pyx_t_3 = 0; + + /* "euclidemu2.pyx":335 + * elif 'wa' in class_pars_dict: + * wa_fld = class_pars_dict['wa'] + * elif 'w_a' in class_pars_dict: # <<<<<<<<<<<<<< + * wa_fld = class_pars_dict['w_a'] + * else: + */ + goto __pyx_L11; + } + + /* "euclidemu2.pyx":338 + * wa_fld = class_pars_dict['w_a'] + * else: + * print("Missing parameter wa. Will set to 0.") # <<<<<<<<<<<<<< + * wa_fld=0.0 + * + */ + /*else*/ { + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_tuple__13, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 338, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "euclidemu2.pyx":339 + * else: + * print("Missing parameter wa. Will set to 0.") + * wa_fld=0.0 # <<<<<<<<<<<<<< + * + * + */ + __Pyx_INCREF(__pyx_float_0_0); + __pyx_v_wa_fld = __pyx_float_0_0; + } + __pyx_L11:; + + /* "euclidemu2.pyx":343 + * + * + * emu_pars_dict = {'Omega_b': Om_b, # <<<<<<<<<<<<<< + * 'Omega_m': Om_m, + * 'm_ncdm': m_ncdm, + */ + __pyx_t_3 = __Pyx_PyDict_NewPresized(8); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 343, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (unlikely(!__pyx_v_Om_b)) { __Pyx_RaiseUnboundLocalError("Om_b"); __PYX_ERR(1, 343, __pyx_L1_error) } + if (PyDict_SetItem(__pyx_t_3, __pyx_n_u_Omega_b, __pyx_v_Om_b) < 0) __PYX_ERR(1, 343, __pyx_L1_error) + + /* "euclidemu2.pyx":344 + * + * emu_pars_dict = {'Omega_b': Om_b, + * 'Omega_m': Om_m, # <<<<<<<<<<<<<< + * 'm_ncdm': m_ncdm, + * 'n_s': n_s, + */ + if (unlikely(!__pyx_v_Om_m)) { __Pyx_RaiseUnboundLocalError("Om_m"); __PYX_ERR(1, 344, __pyx_L1_error) } + if (PyDict_SetItem(__pyx_t_3, __pyx_n_u_Omega_m, __pyx_v_Om_m) < 0) __PYX_ERR(1, 343, __pyx_L1_error) + + /* "euclidemu2.pyx":345 + * emu_pars_dict = {'Omega_b': Om_b, + * 'Omega_m': Om_m, + * 'm_ncdm': m_ncdm, # <<<<<<<<<<<<<< + * 'n_s': n_s, + * 'h': h, + */ + if (unlikely(!__pyx_v_m_ncdm)) { __Pyx_RaiseUnboundLocalError("m_ncdm"); __PYX_ERR(1, 345, __pyx_L1_error) } + if (PyDict_SetItem(__pyx_t_3, __pyx_n_u_m_ncdm, __pyx_v_m_ncdm) < 0) __PYX_ERR(1, 343, __pyx_L1_error) + + /* "euclidemu2.pyx":346 + * 'Omega_m': Om_m, + * 'm_ncdm': m_ncdm, + * 'n_s': n_s, # <<<<<<<<<<<<<< + * 'h': h, + * 'w0_fld': w0_fld, + */ + if (unlikely(!__pyx_v_n_s)) { __Pyx_RaiseUnboundLocalError("n_s"); __PYX_ERR(1, 346, __pyx_L1_error) } + if (PyDict_SetItem(__pyx_t_3, __pyx_n_u_n_s, __pyx_v_n_s) < 0) __PYX_ERR(1, 343, __pyx_L1_error) + + /* "euclidemu2.pyx":347 + * 'm_ncdm': m_ncdm, + * 'n_s': n_s, + * 'h': h, # <<<<<<<<<<<<<< + * 'w0_fld': w0_fld, + * 'wa_fld': wa_fld, + */ + if (unlikely(!__pyx_v_h)) { __Pyx_RaiseUnboundLocalError("h"); __PYX_ERR(1, 347, __pyx_L1_error) } + if (PyDict_SetItem(__pyx_t_3, __pyx_n_u_h, __pyx_v_h) < 0) __PYX_ERR(1, 343, __pyx_L1_error) + + /* "euclidemu2.pyx":348 + * 'n_s': n_s, + * 'h': h, + * 'w0_fld': w0_fld, # <<<<<<<<<<<<<< + * 'wa_fld': wa_fld, + * 'A_s': A_s} + */ + if (PyDict_SetItem(__pyx_t_3, __pyx_n_u_w0_fld, __pyx_v_w0_fld) < 0) __PYX_ERR(1, 343, __pyx_L1_error) + + /* "euclidemu2.pyx":349 + * 'h': h, + * 'w0_fld': w0_fld, + * 'wa_fld': wa_fld, # <<<<<<<<<<<<<< + * 'A_s': A_s} + * + */ + if (PyDict_SetItem(__pyx_t_3, __pyx_n_u_wa_fld, __pyx_v_wa_fld) < 0) __PYX_ERR(1, 343, __pyx_L1_error) + + /* "euclidemu2.pyx":350 + * 'w0_fld': w0_fld, + * 'wa_fld': wa_fld, + * 'A_s': A_s} # <<<<<<<<<<<<<< + * + * return emu_pars_dict + */ + if (unlikely(!__pyx_v_A_s)) { __Pyx_RaiseUnboundLocalError("A_s"); __PYX_ERR(1, 350, __pyx_L1_error) } + if (PyDict_SetItem(__pyx_t_3, __pyx_n_u_A_s, __pyx_v_A_s) < 0) __PYX_ERR(1, 343, __pyx_L1_error) + __pyx_v_emu_pars_dict = ((PyObject*)__pyx_t_3); + __pyx_t_3 = 0; + + /* "euclidemu2.pyx":352 + * 'A_s': A_s} + * + * return emu_pars_dict # <<<<<<<<<<<<<< + * + * + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_emu_pars_dict); + __pyx_r = __pyx_v_emu_pars_dict; + goto __pyx_L0; + + /* "euclidemu2.pyx":217 + * + * + * def convert_to_emu(class_pars_dict): # <<<<<<<<<<<<<< + * """ + * Signature: convert_to_emu(class_pars_dict) + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_AddTraceback("euclidemu2.convert_to_emu", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_h); + __Pyx_XDECREF(__pyx_v_Om_b); + __Pyx_XDECREF(__pyx_v_m_ncdm); + __Pyx_XDECREF(__pyx_v_Om_m); + __Pyx_XDECREF(__pyx_v_Om_cdm); + __Pyx_XDECREF(__pyx_v_n_s); + __Pyx_XDECREF(__pyx_v_A_s); + __Pyx_XDECREF(__pyx_v_w0_fld); + __Pyx_XDECREF(__pyx_v_wa_fld); + __Pyx_XDECREF(__pyx_v_emu_pars_dict); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "euclidemu2.pyx":355 + * + * + * def get_boost(cosmo_par_in,redshifts,custom_kvec=None): # <<<<<<<<<<<<<< + * + * if isinstance(redshifts, (int, float)): + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_10euclidemu2_5get_boost(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static PyMethodDef __pyx_mdef_10euclidemu2_5get_boost = {"get_boost", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_10euclidemu2_5get_boost, METH_VARARGS|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_10euclidemu2_5get_boost(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + PyObject *__pyx_v_cosmo_par_in = 0; + PyObject *__pyx_v_redshifts = 0; + PyObject *__pyx_v_custom_kvec = 0; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("get_boost (wrapper)", 0); + { + static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_cosmo_par_in,&__pyx_n_s_redshifts,&__pyx_n_s_custom_kvec,0}; + PyObject* values[3] = {0,0,0}; + values[2] = ((PyObject *)Py_None); + if (unlikely(__pyx_kwds)) { + Py_ssize_t kw_args; + const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); + switch (pos_args) { + case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); + CYTHON_FALLTHROUGH; + case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); + CYTHON_FALLTHROUGH; + case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = PyDict_Size(__pyx_kwds); + switch (pos_args) { + case 0: + if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_cosmo_par_in)) != 0)) kw_args--; + else goto __pyx_L5_argtuple_error; + CYTHON_FALLTHROUGH; + case 1: + if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_redshifts)) != 0)) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("get_boost", 0, 2, 3, 1); __PYX_ERR(1, 355, __pyx_L3_error) + } + CYTHON_FALLTHROUGH; + case 2: + if (kw_args > 0) { + PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_custom_kvec); + if (value) { values[2] = value; kw_args--; } + } + } + if (unlikely(kw_args > 0)) { + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "get_boost") < 0)) __PYX_ERR(1, 355, __pyx_L3_error) + } + } else { + switch (PyTuple_GET_SIZE(__pyx_args)) { + case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); + CYTHON_FALLTHROUGH; + case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); + values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + break; + default: goto __pyx_L5_argtuple_error; + } + } + __pyx_v_cosmo_par_in = values[0]; + __pyx_v_redshifts = values[1]; + __pyx_v_custom_kvec = values[2]; + } + goto __pyx_L4_argument_unpacking_done; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("get_boost", 0, 2, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 355, __pyx_L3_error) + __pyx_L3_error:; + __Pyx_AddTraceback("euclidemu2.get_boost", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_10euclidemu2_4get_boost(__pyx_self, __pyx_v_cosmo_par_in, __pyx_v_redshifts, __pyx_v_custom_kvec); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10euclidemu2_4get_boost(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_cosmo_par_in, PyObject *__pyx_v_redshifts, PyObject *__pyx_v_custom_kvec) { + PyObject *__pyx_v_z = NULL; + PyObject *__pyx_v_cosmo_par = NULL; + struct __pyx_obj_10euclidemu2_PyCosmology *__pyx_v_cosmo = NULL; + struct __pyx_obj_10euclidemu2_PyEuclidEmulator *__pyx_v_ee2 = NULL; + PyObject *__pyx_v_k = NULL; + PyObject *__pyx_v_boost = NULL; + PyObject *__pyx_v_kvals = NULL; + PyObject *__pyx_v_k_shape = NULL; + int __pyx_v_do_extrapolate_above; + int __pyx_v_do_extrapolate_below; + PyObject *__pyx_v_upper_mask = NULL; + PyObject *__pyx_v_lower_mask = NULL; + PyObject *__pyx_v_mask = NULL; + PyObject *__pyx_v_custom_k_within_range = NULL; + PyObject *__pyx_v_custom_k_below = NULL; + PyObject *__pyx_v_custom_k_above = NULL; + PyObject *__pyx_v_wrn_message = NULL; + CYTHON_UNUSED Py_ssize_t __pyx_v_len_kvals; + Py_ssize_t __pyx_v_len_redshifts; + PyObject *__pyx_v_bvals = NULL; + Py_ssize_t __pyx_v_i; + PyObject *__pyx_v_tmp = NULL; + PyObject *__pyx_v_b_extrap = NULL; + PyObject *__pyx_7genexpr__pyx_v_u = NULL; + PyObject *__pyx_7genexpr__pyx_v_l = NULL; + PyObject *__pyx_8genexpr1__pyx_v_l = NULL; + PyObject *__pyx_8genexpr2__pyx_v_u = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + int __pyx_t_2; + int __pyx_t_3; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + Py_ssize_t __pyx_t_8; + PyObject *(*__pyx_t_9)(PyObject *); + PyObject *__pyx_t_10 = NULL; + PyObject *__pyx_t_11 = NULL; + PyObject *__pyx_t_12 = NULL; + PyObject *__pyx_t_13 = NULL; + PyObject *__pyx_t_14 = NULL; + int __pyx_t_15; + PyObject *(*__pyx_t_16)(PyObject *); + Py_ssize_t __pyx_t_17; + Py_ssize_t __pyx_t_18; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("get_boost", 0); + __Pyx_INCREF(__pyx_v_redshifts); + + /* "euclidemu2.pyx":357 + * def get_boost(cosmo_par_in,redshifts,custom_kvec=None): + * + * if isinstance(redshifts, (int, float)): # <<<<<<<<<<<<<< + * redshifts = np.asarray([redshifts]) + * else: + */ + __pyx_t_2 = PyInt_Check(__pyx_v_redshifts); + __pyx_t_3 = (__pyx_t_2 != 0); + if (!__pyx_t_3) { + } else { + __pyx_t_1 = __pyx_t_3; + goto __pyx_L4_bool_binop_done; + } + __pyx_t_3 = PyFloat_Check(__pyx_v_redshifts); + __pyx_t_2 = (__pyx_t_3 != 0); + __pyx_t_1 = __pyx_t_2; + __pyx_L4_bool_binop_done:; + __pyx_t_2 = (__pyx_t_1 != 0); + if (__pyx_t_2) { + + /* "euclidemu2.pyx":358 + * + * if isinstance(redshifts, (int, float)): + * redshifts = np.asarray([redshifts]) # <<<<<<<<<<<<<< + * else: + * redshifts = np.asarray(redshifts) + */ + __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 358, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_asarray); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 358, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_5 = PyList_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 358, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_INCREF(__pyx_v_redshifts); + __Pyx_GIVEREF(__pyx_v_redshifts); + PyList_SET_ITEM(__pyx_t_5, 0, __pyx_v_redshifts); + __pyx_t_7 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { + __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6); + if (likely(__pyx_t_7)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); + __Pyx_INCREF(__pyx_t_7); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_6, function); + } + } + __pyx_t_4 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_7, __pyx_t_5) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_5); + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 358, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF_SET(__pyx_v_redshifts, __pyx_t_4); + __pyx_t_4 = 0; + + /* "euclidemu2.pyx":357 + * def get_boost(cosmo_par_in,redshifts,custom_kvec=None): + * + * if isinstance(redshifts, (int, float)): # <<<<<<<<<<<<<< + * redshifts = np.asarray([redshifts]) + * else: + */ + goto __pyx_L3; + } + + /* "euclidemu2.pyx":360 + * redshifts = np.asarray([redshifts]) + * else: + * redshifts = np.asarray(redshifts) # <<<<<<<<<<<<<< + * + * #Two options for checking redshifts are in range: either warn but do nothing (first), or throw exception (second) + */ + /*else*/ { + __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 360, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_asarray); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 360, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __pyx_t_6 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) { + __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5); + if (likely(__pyx_t_6)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); + __Pyx_INCREF(__pyx_t_6); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_5, function); + } + } + __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_6, __pyx_v_redshifts) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_redshifts); + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 360, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF_SET(__pyx_v_redshifts, __pyx_t_4); + __pyx_t_4 = 0; + } + __pyx_L3:; + + /* "euclidemu2.pyx":368 + * print('All requested redshifts above 10 will result in the same (incorrect) boost as for z=10') + * ''' + * for z in redshifts: # <<<<<<<<<<<<<< + * assert z <= 10.0, "EuclidEmulator2 allows only redshifts z <= 10.0.\n" + * + */ + if (likely(PyList_CheckExact(__pyx_v_redshifts)) || PyTuple_CheckExact(__pyx_v_redshifts)) { + __pyx_t_4 = __pyx_v_redshifts; __Pyx_INCREF(__pyx_t_4); __pyx_t_8 = 0; + __pyx_t_9 = NULL; + } else { + __pyx_t_8 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_v_redshifts); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 368, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_9 = Py_TYPE(__pyx_t_4)->tp_iternext; if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 368, __pyx_L1_error) + } + for (;;) { + if (likely(!__pyx_t_9)) { + if (likely(PyList_CheckExact(__pyx_t_4))) { + if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_4)) break; + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_5 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_8); __Pyx_INCREF(__pyx_t_5); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(1, 368, __pyx_L1_error) + #else + __pyx_t_5 = PySequence_ITEM(__pyx_t_4, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 368, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + #endif + } else { + if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_4)) break; + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_8); __Pyx_INCREF(__pyx_t_5); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(1, 368, __pyx_L1_error) + #else + __pyx_t_5 = PySequence_ITEM(__pyx_t_4, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 368, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + #endif + } + } else { + __pyx_t_5 = __pyx_t_9(__pyx_t_4); + if (unlikely(!__pyx_t_5)) { + PyObject* exc_type = PyErr_Occurred(); + if (exc_type) { + if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); + else __PYX_ERR(1, 368, __pyx_L1_error) + } + break; + } + __Pyx_GOTREF(__pyx_t_5); + } + __Pyx_XDECREF_SET(__pyx_v_z, __pyx_t_5); + __pyx_t_5 = 0; + + /* "euclidemu2.pyx":369 + * ''' + * for z in redshifts: + * assert z <= 10.0, "EuclidEmulator2 allows only redshifts z <= 10.0.\n" # <<<<<<<<<<<<<< + * + * #Check if all variables are passed and convert to emu dict + */ + #ifndef CYTHON_WITHOUT_ASSERTIONS + if (unlikely(!Py_OptimizeFlag)) { + __pyx_t_5 = PyObject_RichCompare(__pyx_v_z, __pyx_float_10_0, Py_LE); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 369, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(1, 369, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_2)) { + PyErr_SetObject(PyExc_AssertionError, __pyx_kp_u_EuclidEmulator2_allows_only_reds); + __PYX_ERR(1, 369, __pyx_L1_error) + } + } + #endif + + /* "euclidemu2.pyx":368 + * print('All requested redshifts above 10 will result in the same (incorrect) boost as for z=10') + * ''' + * for z in redshifts: # <<<<<<<<<<<<<< + * assert z <= 10.0, "EuclidEmulator2 allows only redshifts z <= 10.0.\n" + * + */ + } + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "euclidemu2.pyx":372 + * + * #Check if all variables are passed and convert to emu dict + * cosmo_par=convert_to_emu(cosmo_par_in) # <<<<<<<<<<<<<< + * #Check if all parameters are in range + * check_param_range(cosmo_par) + */ + __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_convert_to_emu); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 372, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_6 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) { + __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5); + if (likely(__pyx_t_6)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); + __Pyx_INCREF(__pyx_t_6); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_5, function); + } + } + __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_6, __pyx_v_cosmo_par_in) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_cosmo_par_in); + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 372, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_v_cosmo_par = __pyx_t_4; + __pyx_t_4 = 0; + + /* "euclidemu2.pyx":374 + * cosmo_par=convert_to_emu(cosmo_par_in) + * #Check if all parameters are in range + * check_param_range(cosmo_par) # <<<<<<<<<<<<<< + * + * cosmo=PyCosmology(cosmo_par['Omega_b'], + */ + __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_check_param_range); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 374, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_6 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) { + __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5); + if (likely(__pyx_t_6)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); + __Pyx_INCREF(__pyx_t_6); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_5, function); + } + } + __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_6, __pyx_v_cosmo_par) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_cosmo_par); + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 374, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "euclidemu2.pyx":376 + * check_param_range(cosmo_par) + * + * cosmo=PyCosmology(cosmo_par['Omega_b'], # <<<<<<<<<<<<<< + * cosmo_par['Omega_m'], + * cosmo_par['m_ncdm'], + */ + __pyx_t_4 = __Pyx_PyObject_Dict_GetItem(__pyx_v_cosmo_par, __pyx_n_u_Omega_b); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 376, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + + /* "euclidemu2.pyx":377 + * + * cosmo=PyCosmology(cosmo_par['Omega_b'], + * cosmo_par['Omega_m'], # <<<<<<<<<<<<<< + * cosmo_par['m_ncdm'], + * cosmo_par['n_s'], + */ + __pyx_t_5 = __Pyx_PyObject_Dict_GetItem(__pyx_v_cosmo_par, __pyx_n_u_Omega_m); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 377, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + + /* "euclidemu2.pyx":378 + * cosmo=PyCosmology(cosmo_par['Omega_b'], + * cosmo_par['Omega_m'], + * cosmo_par['m_ncdm'], # <<<<<<<<<<<<<< + * cosmo_par['n_s'], + * cosmo_par['h'], + */ + __pyx_t_6 = __Pyx_PyObject_Dict_GetItem(__pyx_v_cosmo_par, __pyx_n_u_m_ncdm); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 378, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + + /* "euclidemu2.pyx":379 + * cosmo_par['Omega_m'], + * cosmo_par['m_ncdm'], + * cosmo_par['n_s'], # <<<<<<<<<<<<<< + * cosmo_par['h'], + * cosmo_par['w0_fld'], + */ + __pyx_t_7 = __Pyx_PyObject_Dict_GetItem(__pyx_v_cosmo_par, __pyx_n_u_n_s); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 379, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + + /* "euclidemu2.pyx":380 + * cosmo_par['m_ncdm'], + * cosmo_par['n_s'], + * cosmo_par['h'], # <<<<<<<<<<<<<< + * cosmo_par['w0_fld'], + * cosmo_par['wa_fld'], + */ + __pyx_t_10 = __Pyx_PyObject_Dict_GetItem(__pyx_v_cosmo_par, __pyx_n_u_h); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 380, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + + /* "euclidemu2.pyx":381 + * cosmo_par['n_s'], + * cosmo_par['h'], + * cosmo_par['w0_fld'], # <<<<<<<<<<<<<< + * cosmo_par['wa_fld'], + * cosmo_par['A_s']) + */ + __pyx_t_11 = __Pyx_PyObject_Dict_GetItem(__pyx_v_cosmo_par, __pyx_n_u_w0_fld); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 381, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_11); + + /* "euclidemu2.pyx":382 + * cosmo_par['h'], + * cosmo_par['w0_fld'], + * cosmo_par['wa_fld'], # <<<<<<<<<<<<<< + * cosmo_par['A_s']) + * ee2=PyEuclidEmulator() + */ + __pyx_t_12 = __Pyx_PyObject_Dict_GetItem(__pyx_v_cosmo_par, __pyx_n_u_wa_fld); if (unlikely(!__pyx_t_12)) __PYX_ERR(1, 382, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_12); + + /* "euclidemu2.pyx":383 + * cosmo_par['w0_fld'], + * cosmo_par['wa_fld'], + * cosmo_par['A_s']) # <<<<<<<<<<<<<< + * ee2=PyEuclidEmulator() + * ee2.compute_nlc(cosmo,redshifts,len(redshifts)) + */ + __pyx_t_13 = __Pyx_PyObject_Dict_GetItem(__pyx_v_cosmo_par, __pyx_n_u_A_s); if (unlikely(!__pyx_t_13)) __PYX_ERR(1, 383, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_13); + + /* "euclidemu2.pyx":376 + * check_param_range(cosmo_par) + * + * cosmo=PyCosmology(cosmo_par['Omega_b'], # <<<<<<<<<<<<<< + * cosmo_par['Omega_m'], + * cosmo_par['m_ncdm'], + */ + __pyx_t_14 = PyTuple_New(8); if (unlikely(!__pyx_t_14)) __PYX_ERR(1, 376, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_14); + __Pyx_GIVEREF(__pyx_t_4); + PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_4); + __Pyx_GIVEREF(__pyx_t_5); + PyTuple_SET_ITEM(__pyx_t_14, 1, __pyx_t_5); + __Pyx_GIVEREF(__pyx_t_6); + PyTuple_SET_ITEM(__pyx_t_14, 2, __pyx_t_6); + __Pyx_GIVEREF(__pyx_t_7); + PyTuple_SET_ITEM(__pyx_t_14, 3, __pyx_t_7); + __Pyx_GIVEREF(__pyx_t_10); + PyTuple_SET_ITEM(__pyx_t_14, 4, __pyx_t_10); + __Pyx_GIVEREF(__pyx_t_11); + PyTuple_SET_ITEM(__pyx_t_14, 5, __pyx_t_11); + __Pyx_GIVEREF(__pyx_t_12); + PyTuple_SET_ITEM(__pyx_t_14, 6, __pyx_t_12); + __Pyx_GIVEREF(__pyx_t_13); + PyTuple_SET_ITEM(__pyx_t_14, 7, __pyx_t_13); + __pyx_t_4 = 0; + __pyx_t_5 = 0; + __pyx_t_6 = 0; + __pyx_t_7 = 0; + __pyx_t_10 = 0; + __pyx_t_11 = 0; + __pyx_t_12 = 0; + __pyx_t_13 = 0; + __pyx_t_13 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_10euclidemu2_PyCosmology), __pyx_t_14, NULL); if (unlikely(!__pyx_t_13)) __PYX_ERR(1, 376, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_13); + __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; + __pyx_v_cosmo = ((struct __pyx_obj_10euclidemu2_PyCosmology *)__pyx_t_13); + __pyx_t_13 = 0; + + /* "euclidemu2.pyx":384 + * cosmo_par['wa_fld'], + * cosmo_par['A_s']) + * ee2=PyEuclidEmulator() # <<<<<<<<<<<<<< + * ee2.compute_nlc(cosmo,redshifts,len(redshifts)) + * + */ + __pyx_t_13 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_10euclidemu2_PyEuclidEmulator)); if (unlikely(!__pyx_t_13)) __PYX_ERR(1, 384, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_13); + __pyx_v_ee2 = ((struct __pyx_obj_10euclidemu2_PyEuclidEmulator *)__pyx_t_13); + __pyx_t_13 = 0; + + /* "euclidemu2.pyx":385 + * cosmo_par['A_s']) + * ee2=PyEuclidEmulator() + * ee2.compute_nlc(cosmo,redshifts,len(redshifts)) # <<<<<<<<<<<<<< + * + * k=np.asarray(ee2.kvec) + */ + __pyx_t_14 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_ee2), __pyx_n_s_compute_nlc); if (unlikely(!__pyx_t_14)) __PYX_ERR(1, 385, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_14); + __pyx_t_8 = PyObject_Length(__pyx_v_redshifts); if (unlikely(__pyx_t_8 == ((Py_ssize_t)-1))) __PYX_ERR(1, 385, __pyx_L1_error) + __pyx_t_12 = PyInt_FromSsize_t(__pyx_t_8); if (unlikely(!__pyx_t_12)) __PYX_ERR(1, 385, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_12); + __pyx_t_11 = NULL; + __pyx_t_15 = 0; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_14))) { + __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_14); + if (likely(__pyx_t_11)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_14); + __Pyx_INCREF(__pyx_t_11); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_14, function); + __pyx_t_15 = 1; + } + } + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_14)) { + PyObject *__pyx_temp[4] = {__pyx_t_11, ((PyObject *)__pyx_v_cosmo), __pyx_v_redshifts, __pyx_t_12}; + __pyx_t_13 = __Pyx_PyFunction_FastCall(__pyx_t_14, __pyx_temp+1-__pyx_t_15, 3+__pyx_t_15); if (unlikely(!__pyx_t_13)) __PYX_ERR(1, 385, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; + __Pyx_GOTREF(__pyx_t_13); + __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_14)) { + PyObject *__pyx_temp[4] = {__pyx_t_11, ((PyObject *)__pyx_v_cosmo), __pyx_v_redshifts, __pyx_t_12}; + __pyx_t_13 = __Pyx_PyCFunction_FastCall(__pyx_t_14, __pyx_temp+1-__pyx_t_15, 3+__pyx_t_15); if (unlikely(!__pyx_t_13)) __PYX_ERR(1, 385, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; + __Pyx_GOTREF(__pyx_t_13); + __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; + } else + #endif + { + __pyx_t_10 = PyTuple_New(3+__pyx_t_15); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 385, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + if (__pyx_t_11) { + __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_11); __pyx_t_11 = NULL; + } + __Pyx_INCREF(((PyObject *)__pyx_v_cosmo)); + __Pyx_GIVEREF(((PyObject *)__pyx_v_cosmo)); + PyTuple_SET_ITEM(__pyx_t_10, 0+__pyx_t_15, ((PyObject *)__pyx_v_cosmo)); + __Pyx_INCREF(__pyx_v_redshifts); + __Pyx_GIVEREF(__pyx_v_redshifts); + PyTuple_SET_ITEM(__pyx_t_10, 1+__pyx_t_15, __pyx_v_redshifts); + __Pyx_GIVEREF(__pyx_t_12); + PyTuple_SET_ITEM(__pyx_t_10, 2+__pyx_t_15, __pyx_t_12); + __pyx_t_12 = 0; + __pyx_t_13 = __Pyx_PyObject_Call(__pyx_t_14, __pyx_t_10, NULL); if (unlikely(!__pyx_t_13)) __PYX_ERR(1, 385, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_13); + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + } + __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + + /* "euclidemu2.pyx":387 + * ee2.compute_nlc(cosmo,redshifts,len(redshifts)) + * + * k=np.asarray(ee2.kvec) # <<<<<<<<<<<<<< + * boost=10**np.reshape(ee2.Bvec[0:len(redshifts)],(len(redshifts),len(k))) + * + */ + __Pyx_GetModuleGlobalName(__pyx_t_14, __pyx_n_s_np); if (unlikely(!__pyx_t_14)) __PYX_ERR(1, 387, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_14); + __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_14, __pyx_n_s_asarray); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 387, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; + __pyx_t_14 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_ee2), __pyx_n_s_kvec); if (unlikely(!__pyx_t_14)) __PYX_ERR(1, 387, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_14); + __pyx_t_12 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_10))) { + __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_10); + if (likely(__pyx_t_12)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10); + __Pyx_INCREF(__pyx_t_12); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_10, function); + } + } + __pyx_t_13 = (__pyx_t_12) ? __Pyx_PyObject_Call2Args(__pyx_t_10, __pyx_t_12, __pyx_t_14) : __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_t_14); + __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; + __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; + if (unlikely(!__pyx_t_13)) __PYX_ERR(1, 387, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_13); + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + __pyx_v_k = __pyx_t_13; + __pyx_t_13 = 0; + + /* "euclidemu2.pyx":388 + * + * k=np.asarray(ee2.kvec) + * boost=10**np.reshape(ee2.Bvec[0:len(redshifts)],(len(redshifts),len(k))) # <<<<<<<<<<<<<< + * + * #New part to extrapolate + */ + __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_np); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 388, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_reshape); if (unlikely(!__pyx_t_14)) __PYX_ERR(1, 388, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_14); + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + __pyx_t_10 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_ee2), __pyx_n_s_Bvec); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 388, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __pyx_t_8 = PyObject_Length(__pyx_v_redshifts); if (unlikely(__pyx_t_8 == ((Py_ssize_t)-1))) __PYX_ERR(1, 388, __pyx_L1_error) + __pyx_t_12 = __Pyx_PyObject_GetSlice(__pyx_t_10, 0, __pyx_t_8, NULL, NULL, NULL, 1, 1, 1); if (unlikely(!__pyx_t_12)) __PYX_ERR(1, 388, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_12); + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + __pyx_t_8 = PyObject_Length(__pyx_v_redshifts); if (unlikely(__pyx_t_8 == ((Py_ssize_t)-1))) __PYX_ERR(1, 388, __pyx_L1_error) + __pyx_t_10 = PyInt_FromSsize_t(__pyx_t_8); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 388, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __pyx_t_8 = PyObject_Length(__pyx_v_k); if (unlikely(__pyx_t_8 == ((Py_ssize_t)-1))) __PYX_ERR(1, 388, __pyx_L1_error) + __pyx_t_11 = PyInt_FromSsize_t(__pyx_t_8); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 388, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_11); + __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 388, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_GIVEREF(__pyx_t_10); + PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_10); + __Pyx_GIVEREF(__pyx_t_11); + PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_11); + __pyx_t_10 = 0; + __pyx_t_11 = 0; + __pyx_t_11 = NULL; + __pyx_t_15 = 0; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_14))) { + __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_14); + if (likely(__pyx_t_11)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_14); + __Pyx_INCREF(__pyx_t_11); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_14, function); + __pyx_t_15 = 1; + } + } + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_14)) { + PyObject *__pyx_temp[3] = {__pyx_t_11, __pyx_t_12, __pyx_t_7}; + __pyx_t_13 = __Pyx_PyFunction_FastCall(__pyx_t_14, __pyx_temp+1-__pyx_t_15, 2+__pyx_t_15); if (unlikely(!__pyx_t_13)) __PYX_ERR(1, 388, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; + __Pyx_GOTREF(__pyx_t_13); + __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_14)) { + PyObject *__pyx_temp[3] = {__pyx_t_11, __pyx_t_12, __pyx_t_7}; + __pyx_t_13 = __Pyx_PyCFunction_FastCall(__pyx_t_14, __pyx_temp+1-__pyx_t_15, 2+__pyx_t_15); if (unlikely(!__pyx_t_13)) __PYX_ERR(1, 388, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; + __Pyx_GOTREF(__pyx_t_13); + __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + } else + #endif + { + __pyx_t_10 = PyTuple_New(2+__pyx_t_15); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 388, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + if (__pyx_t_11) { + __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_11); __pyx_t_11 = NULL; + } + __Pyx_GIVEREF(__pyx_t_12); + PyTuple_SET_ITEM(__pyx_t_10, 0+__pyx_t_15, __pyx_t_12); + __Pyx_GIVEREF(__pyx_t_7); + PyTuple_SET_ITEM(__pyx_t_10, 1+__pyx_t_15, __pyx_t_7); + __pyx_t_12 = 0; + __pyx_t_7 = 0; + __pyx_t_13 = __Pyx_PyObject_Call(__pyx_t_14, __pyx_t_10, NULL); if (unlikely(!__pyx_t_13)) __PYX_ERR(1, 388, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_13); + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + } + __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; + __pyx_t_14 = PyNumber_Power(__pyx_int_10, __pyx_t_13, Py_None); if (unlikely(!__pyx_t_14)) __PYX_ERR(1, 388, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_14); + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + __pyx_v_boost = __pyx_t_14; + __pyx_t_14 = 0; + + /* "euclidemu2.pyx":391 + * + * #New part to extrapolate + * kvals = k # <<<<<<<<<<<<<< + * k_shape = kvals.shape + * + */ + __Pyx_INCREF(__pyx_v_k); + __pyx_v_kvals = __pyx_v_k; + + /* "euclidemu2.pyx":392 + * #New part to extrapolate + * kvals = k + * k_shape = kvals.shape # <<<<<<<<<<<<<< + * + * do_extrapolate_above = False + */ + __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_v_kvals, __pyx_n_s_shape); if (unlikely(!__pyx_t_14)) __PYX_ERR(1, 392, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_14); + __pyx_v_k_shape = __pyx_t_14; + __pyx_t_14 = 0; + + /* "euclidemu2.pyx":394 + * k_shape = kvals.shape + * + * do_extrapolate_above = False # <<<<<<<<<<<<<< + * do_extrapolate_below = False + * if not(custom_kvec is None): + */ + __pyx_v_do_extrapolate_above = 0; + + /* "euclidemu2.pyx":395 + * + * do_extrapolate_above = False + * do_extrapolate_below = False # <<<<<<<<<<<<<< + * if not(custom_kvec is None): + * upper_mask = custom_kvec < max(kvals) + */ + __pyx_v_do_extrapolate_below = 0; + + /* "euclidemu2.pyx":396 + * do_extrapolate_above = False + * do_extrapolate_below = False + * if not(custom_kvec is None): # <<<<<<<<<<<<<< + * upper_mask = custom_kvec < max(kvals) + * lower_mask = custom_kvec > min(kvals) + */ + __pyx_t_2 = (__pyx_v_custom_kvec != Py_None); + __pyx_t_1 = (__pyx_t_2 != 0); + if (__pyx_t_1) { + + /* "euclidemu2.pyx":397 + * do_extrapolate_below = False + * if not(custom_kvec is None): + * upper_mask = custom_kvec < max(kvals) # <<<<<<<<<<<<<< + * lower_mask = custom_kvec > min(kvals) + * mask = [u and l for (u,l) in zip(lower_mask, upper_mask)] + */ + __pyx_t_14 = __Pyx_PyObject_CallOneArg(__pyx_builtin_max, __pyx_v_kvals); if (unlikely(!__pyx_t_14)) __PYX_ERR(1, 397, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_14); + __pyx_t_13 = PyObject_RichCompare(__pyx_v_custom_kvec, __pyx_t_14, Py_LT); __Pyx_XGOTREF(__pyx_t_13); if (unlikely(!__pyx_t_13)) __PYX_ERR(1, 397, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; + __pyx_v_upper_mask = __pyx_t_13; + __pyx_t_13 = 0; + + /* "euclidemu2.pyx":398 + * if not(custom_kvec is None): + * upper_mask = custom_kvec < max(kvals) + * lower_mask = custom_kvec > min(kvals) # <<<<<<<<<<<<<< + * mask = [u and l for (u,l) in zip(lower_mask, upper_mask)] + * custom_k_within_range = custom_kvec[mask] + */ + __pyx_t_13 = __Pyx_PyObject_CallOneArg(__pyx_builtin_min, __pyx_v_kvals); if (unlikely(!__pyx_t_13)) __PYX_ERR(1, 398, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_13); + __pyx_t_14 = PyObject_RichCompare(__pyx_v_custom_kvec, __pyx_t_13, Py_GT); __Pyx_XGOTREF(__pyx_t_14); if (unlikely(!__pyx_t_14)) __PYX_ERR(1, 398, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + __pyx_v_lower_mask = __pyx_t_14; + __pyx_t_14 = 0; + + /* "euclidemu2.pyx":399 + * upper_mask = custom_kvec < max(kvals) + * lower_mask = custom_kvec > min(kvals) + * mask = [u and l for (u,l) in zip(lower_mask, upper_mask)] # <<<<<<<<<<<<<< + * custom_k_within_range = custom_kvec[mask] + * custom_k_below = custom_kvec[[not(l) for l in lower_mask]] + */ + { /* enter inner scope */ + __pyx_t_14 = PyList_New(0); if (unlikely(!__pyx_t_14)) __PYX_ERR(1, 399, __pyx_L11_error) + __Pyx_GOTREF(__pyx_t_14); + __pyx_t_13 = PyTuple_New(2); if (unlikely(!__pyx_t_13)) __PYX_ERR(1, 399, __pyx_L11_error) + __Pyx_GOTREF(__pyx_t_13); + __Pyx_INCREF(__pyx_v_lower_mask); + __Pyx_GIVEREF(__pyx_v_lower_mask); + PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_v_lower_mask); + __Pyx_INCREF(__pyx_v_upper_mask); + __Pyx_GIVEREF(__pyx_v_upper_mask); + PyTuple_SET_ITEM(__pyx_t_13, 1, __pyx_v_upper_mask); + __pyx_t_10 = __Pyx_PyObject_Call(__pyx_builtin_zip, __pyx_t_13, NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 399, __pyx_L11_error) + __Pyx_GOTREF(__pyx_t_10); + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + if (likely(PyList_CheckExact(__pyx_t_10)) || PyTuple_CheckExact(__pyx_t_10)) { + __pyx_t_13 = __pyx_t_10; __Pyx_INCREF(__pyx_t_13); __pyx_t_8 = 0; + __pyx_t_9 = NULL; + } else { + __pyx_t_8 = -1; __pyx_t_13 = PyObject_GetIter(__pyx_t_10); if (unlikely(!__pyx_t_13)) __PYX_ERR(1, 399, __pyx_L11_error) + __Pyx_GOTREF(__pyx_t_13); + __pyx_t_9 = Py_TYPE(__pyx_t_13)->tp_iternext; if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 399, __pyx_L11_error) + } + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + for (;;) { + if (likely(!__pyx_t_9)) { + if (likely(PyList_CheckExact(__pyx_t_13))) { + if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_13)) break; + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_10 = PyList_GET_ITEM(__pyx_t_13, __pyx_t_8); __Pyx_INCREF(__pyx_t_10); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(1, 399, __pyx_L11_error) + #else + __pyx_t_10 = PySequence_ITEM(__pyx_t_13, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 399, __pyx_L11_error) + __Pyx_GOTREF(__pyx_t_10); + #endif + } else { + if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_13)) break; + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_10 = PyTuple_GET_ITEM(__pyx_t_13, __pyx_t_8); __Pyx_INCREF(__pyx_t_10); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(1, 399, __pyx_L11_error) + #else + __pyx_t_10 = PySequence_ITEM(__pyx_t_13, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 399, __pyx_L11_error) + __Pyx_GOTREF(__pyx_t_10); + #endif + } + } else { + __pyx_t_10 = __pyx_t_9(__pyx_t_13); + if (unlikely(!__pyx_t_10)) { + PyObject* exc_type = PyErr_Occurred(); + if (exc_type) { + if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); + else __PYX_ERR(1, 399, __pyx_L11_error) + } + break; + } + __Pyx_GOTREF(__pyx_t_10); + } + if ((likely(PyTuple_CheckExact(__pyx_t_10))) || (PyList_CheckExact(__pyx_t_10))) { + PyObject* sequence = __pyx_t_10; + Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); + if (unlikely(size != 2)) { + if (size > 2) __Pyx_RaiseTooManyValuesError(2); + else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); + __PYX_ERR(1, 399, __pyx_L11_error) + } + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + if (likely(PyTuple_CheckExact(sequence))) { + __pyx_t_7 = PyTuple_GET_ITEM(sequence, 0); + __pyx_t_12 = PyTuple_GET_ITEM(sequence, 1); + } else { + __pyx_t_7 = PyList_GET_ITEM(sequence, 0); + __pyx_t_12 = PyList_GET_ITEM(sequence, 1); + } + __Pyx_INCREF(__pyx_t_7); + __Pyx_INCREF(__pyx_t_12); + #else + __pyx_t_7 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 399, __pyx_L11_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_12 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_12)) __PYX_ERR(1, 399, __pyx_L11_error) + __Pyx_GOTREF(__pyx_t_12); + #endif + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + } else { + Py_ssize_t index = -1; + __pyx_t_11 = PyObject_GetIter(__pyx_t_10); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 399, __pyx_L11_error) + __Pyx_GOTREF(__pyx_t_11); + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + __pyx_t_16 = Py_TYPE(__pyx_t_11)->tp_iternext; + index = 0; __pyx_t_7 = __pyx_t_16(__pyx_t_11); if (unlikely(!__pyx_t_7)) goto __pyx_L14_unpacking_failed; + __Pyx_GOTREF(__pyx_t_7); + index = 1; __pyx_t_12 = __pyx_t_16(__pyx_t_11); if (unlikely(!__pyx_t_12)) goto __pyx_L14_unpacking_failed; + __Pyx_GOTREF(__pyx_t_12); + if (__Pyx_IternextUnpackEndCheck(__pyx_t_16(__pyx_t_11), 2) < 0) __PYX_ERR(1, 399, __pyx_L11_error) + __pyx_t_16 = NULL; + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + goto __pyx_L15_unpacking_done; + __pyx_L14_unpacking_failed:; + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + __pyx_t_16 = NULL; + if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); + __PYX_ERR(1, 399, __pyx_L11_error) + __pyx_L15_unpacking_done:; + } + __Pyx_XDECREF_SET(__pyx_7genexpr__pyx_v_u, __pyx_t_7); + __pyx_t_7 = 0; + __Pyx_XDECREF_SET(__pyx_7genexpr__pyx_v_l, __pyx_t_12); + __pyx_t_12 = 0; + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_7genexpr__pyx_v_u); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(1, 399, __pyx_L11_error) + if (__pyx_t_1) { + } else { + __Pyx_INCREF(__pyx_7genexpr__pyx_v_u); + __pyx_t_10 = __pyx_7genexpr__pyx_v_u; + goto __pyx_L16_bool_binop_done; + } + __Pyx_INCREF(__pyx_7genexpr__pyx_v_l); + __pyx_t_10 = __pyx_7genexpr__pyx_v_l; + __pyx_L16_bool_binop_done:; + if (unlikely(__Pyx_ListComp_Append(__pyx_t_14, (PyObject*)__pyx_t_10))) __PYX_ERR(1, 399, __pyx_L11_error) + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + } + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + __Pyx_XDECREF(__pyx_7genexpr__pyx_v_l); __pyx_7genexpr__pyx_v_l = 0; + __Pyx_XDECREF(__pyx_7genexpr__pyx_v_u); __pyx_7genexpr__pyx_v_u = 0; + goto __pyx_L18_exit_scope; + __pyx_L11_error:; + __Pyx_XDECREF(__pyx_7genexpr__pyx_v_l); __pyx_7genexpr__pyx_v_l = 0; + __Pyx_XDECREF(__pyx_7genexpr__pyx_v_u); __pyx_7genexpr__pyx_v_u = 0; + goto __pyx_L1_error; + __pyx_L18_exit_scope:; + } /* exit inner scope */ + __pyx_v_mask = ((PyObject*)__pyx_t_14); + __pyx_t_14 = 0; + + /* "euclidemu2.pyx":400 + * lower_mask = custom_kvec > min(kvals) + * mask = [u and l for (u,l) in zip(lower_mask, upper_mask)] + * custom_k_within_range = custom_kvec[mask] # <<<<<<<<<<<<<< + * custom_k_below = custom_kvec[[not(l) for l in lower_mask]] + * custom_k_above = custom_kvec[[not(u) for u in upper_mask]] + */ + __pyx_t_14 = __Pyx_PyObject_GetItem(__pyx_v_custom_kvec, __pyx_v_mask); if (unlikely(!__pyx_t_14)) __PYX_ERR(1, 400, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_14); + __pyx_v_custom_k_within_range = __pyx_t_14; + __pyx_t_14 = 0; + + /* "euclidemu2.pyx":401 + * mask = [u and l for (u,l) in zip(lower_mask, upper_mask)] + * custom_k_within_range = custom_kvec[mask] + * custom_k_below = custom_kvec[[not(l) for l in lower_mask]] # <<<<<<<<<<<<<< + * custom_k_above = custom_kvec[[not(u) for u in upper_mask]] + * + */ + { /* enter inner scope */ + __pyx_t_14 = PyList_New(0); if (unlikely(!__pyx_t_14)) __PYX_ERR(1, 401, __pyx_L21_error) + __Pyx_GOTREF(__pyx_t_14); + if (likely(PyList_CheckExact(__pyx_v_lower_mask)) || PyTuple_CheckExact(__pyx_v_lower_mask)) { + __pyx_t_13 = __pyx_v_lower_mask; __Pyx_INCREF(__pyx_t_13); __pyx_t_8 = 0; + __pyx_t_9 = NULL; + } else { + __pyx_t_8 = -1; __pyx_t_13 = PyObject_GetIter(__pyx_v_lower_mask); if (unlikely(!__pyx_t_13)) __PYX_ERR(1, 401, __pyx_L21_error) + __Pyx_GOTREF(__pyx_t_13); + __pyx_t_9 = Py_TYPE(__pyx_t_13)->tp_iternext; if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 401, __pyx_L21_error) + } + for (;;) { + if (likely(!__pyx_t_9)) { + if (likely(PyList_CheckExact(__pyx_t_13))) { + if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_13)) break; + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_10 = PyList_GET_ITEM(__pyx_t_13, __pyx_t_8); __Pyx_INCREF(__pyx_t_10); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(1, 401, __pyx_L21_error) + #else + __pyx_t_10 = PySequence_ITEM(__pyx_t_13, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 401, __pyx_L21_error) + __Pyx_GOTREF(__pyx_t_10); + #endif + } else { + if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_13)) break; + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_10 = PyTuple_GET_ITEM(__pyx_t_13, __pyx_t_8); __Pyx_INCREF(__pyx_t_10); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(1, 401, __pyx_L21_error) + #else + __pyx_t_10 = PySequence_ITEM(__pyx_t_13, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 401, __pyx_L21_error) + __Pyx_GOTREF(__pyx_t_10); + #endif + } + } else { + __pyx_t_10 = __pyx_t_9(__pyx_t_13); + if (unlikely(!__pyx_t_10)) { + PyObject* exc_type = PyErr_Occurred(); + if (exc_type) { + if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); + else __PYX_ERR(1, 401, __pyx_L21_error) + } + break; + } + __Pyx_GOTREF(__pyx_t_10); + } + __Pyx_XDECREF_SET(__pyx_8genexpr1__pyx_v_l, __pyx_t_10); + __pyx_t_10 = 0; + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_8genexpr1__pyx_v_l); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(1, 401, __pyx_L21_error) + __pyx_t_10 = __Pyx_PyBool_FromLong((!__pyx_t_1)); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 401, __pyx_L21_error) + __Pyx_GOTREF(__pyx_t_10); + if (unlikely(__Pyx_ListComp_Append(__pyx_t_14, (PyObject*)__pyx_t_10))) __PYX_ERR(1, 401, __pyx_L21_error) + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + } + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + __Pyx_XDECREF(__pyx_8genexpr1__pyx_v_l); __pyx_8genexpr1__pyx_v_l = 0; + goto __pyx_L24_exit_scope; + __pyx_L21_error:; + __Pyx_XDECREF(__pyx_8genexpr1__pyx_v_l); __pyx_8genexpr1__pyx_v_l = 0; + goto __pyx_L1_error; + __pyx_L24_exit_scope:; + } /* exit inner scope */ + __pyx_t_13 = __Pyx_PyObject_GetItem(__pyx_v_custom_kvec, __pyx_t_14); if (unlikely(!__pyx_t_13)) __PYX_ERR(1, 401, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_13); + __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; + __pyx_v_custom_k_below = __pyx_t_13; + __pyx_t_13 = 0; + + /* "euclidemu2.pyx":402 + * custom_k_within_range = custom_kvec[mask] + * custom_k_below = custom_kvec[[not(l) for l in lower_mask]] + * custom_k_above = custom_kvec[[not(u) for u in upper_mask]] # <<<<<<<<<<<<<< + * + * if any(custom_kvec > max(kvals)): + */ + { /* enter inner scope */ + __pyx_t_13 = PyList_New(0); if (unlikely(!__pyx_t_13)) __PYX_ERR(1, 402, __pyx_L27_error) + __Pyx_GOTREF(__pyx_t_13); + if (likely(PyList_CheckExact(__pyx_v_upper_mask)) || PyTuple_CheckExact(__pyx_v_upper_mask)) { + __pyx_t_14 = __pyx_v_upper_mask; __Pyx_INCREF(__pyx_t_14); __pyx_t_8 = 0; + __pyx_t_9 = NULL; + } else { + __pyx_t_8 = -1; __pyx_t_14 = PyObject_GetIter(__pyx_v_upper_mask); if (unlikely(!__pyx_t_14)) __PYX_ERR(1, 402, __pyx_L27_error) + __Pyx_GOTREF(__pyx_t_14); + __pyx_t_9 = Py_TYPE(__pyx_t_14)->tp_iternext; if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 402, __pyx_L27_error) + } + for (;;) { + if (likely(!__pyx_t_9)) { + if (likely(PyList_CheckExact(__pyx_t_14))) { + if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_14)) break; + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_10 = PyList_GET_ITEM(__pyx_t_14, __pyx_t_8); __Pyx_INCREF(__pyx_t_10); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(1, 402, __pyx_L27_error) + #else + __pyx_t_10 = PySequence_ITEM(__pyx_t_14, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 402, __pyx_L27_error) + __Pyx_GOTREF(__pyx_t_10); + #endif + } else { + if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_14)) break; + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_10 = PyTuple_GET_ITEM(__pyx_t_14, __pyx_t_8); __Pyx_INCREF(__pyx_t_10); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(1, 402, __pyx_L27_error) + #else + __pyx_t_10 = PySequence_ITEM(__pyx_t_14, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 402, __pyx_L27_error) + __Pyx_GOTREF(__pyx_t_10); + #endif + } + } else { + __pyx_t_10 = __pyx_t_9(__pyx_t_14); + if (unlikely(!__pyx_t_10)) { + PyObject* exc_type = PyErr_Occurred(); + if (exc_type) { + if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); + else __PYX_ERR(1, 402, __pyx_L27_error) + } + break; + } + __Pyx_GOTREF(__pyx_t_10); + } + __Pyx_XDECREF_SET(__pyx_8genexpr2__pyx_v_u, __pyx_t_10); + __pyx_t_10 = 0; + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_8genexpr2__pyx_v_u); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(1, 402, __pyx_L27_error) + __pyx_t_10 = __Pyx_PyBool_FromLong((!__pyx_t_1)); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 402, __pyx_L27_error) + __Pyx_GOTREF(__pyx_t_10); + if (unlikely(__Pyx_ListComp_Append(__pyx_t_13, (PyObject*)__pyx_t_10))) __PYX_ERR(1, 402, __pyx_L27_error) + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + } + __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; + __Pyx_XDECREF(__pyx_8genexpr2__pyx_v_u); __pyx_8genexpr2__pyx_v_u = 0; + goto __pyx_L30_exit_scope; + __pyx_L27_error:; + __Pyx_XDECREF(__pyx_8genexpr2__pyx_v_u); __pyx_8genexpr2__pyx_v_u = 0; + goto __pyx_L1_error; + __pyx_L30_exit_scope:; + } /* exit inner scope */ + __pyx_t_14 = __Pyx_PyObject_GetItem(__pyx_v_custom_kvec, __pyx_t_13); if (unlikely(!__pyx_t_14)) __PYX_ERR(1, 402, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_14); + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + __pyx_v_custom_k_above = __pyx_t_14; + __pyx_t_14 = 0; + + /* "euclidemu2.pyx":404 + * custom_k_above = custom_kvec[[not(u) for u in upper_mask]] + * + * if any(custom_kvec > max(kvals)): # <<<<<<<<<<<<<< + * wrn_message = ("EuclidEmulator2 emulates the non-linear correction in \n" + * "the interval [8.73e-3 h/Mpc, 9.41h/Mpc]. You are \n" + */ + __pyx_t_14 = __Pyx_PyObject_CallOneArg(__pyx_builtin_max, __pyx_v_kvals); if (unlikely(!__pyx_t_14)) __PYX_ERR(1, 404, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_14); + __pyx_t_13 = PyObject_RichCompare(__pyx_v_custom_kvec, __pyx_t_14, Py_GT); __Pyx_XGOTREF(__pyx_t_13); if (unlikely(!__pyx_t_13)) __PYX_ERR(1, 404, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; + __pyx_t_14 = __Pyx_PyObject_CallOneArg(__pyx_builtin_any, __pyx_t_13); if (unlikely(!__pyx_t_14)) __PYX_ERR(1, 404, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_14); + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_14); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(1, 404, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; + if (__pyx_t_1) { + + /* "euclidemu2.pyx":405 + * + * if any(custom_kvec > max(kvals)): + * wrn_message = ("EuclidEmulator2 emulates the non-linear correction in \n" # <<<<<<<<<<<<<< + * "the interval [8.73e-3 h/Mpc, 9.41h/Mpc]. You are \n" + * "requesting k modes beyond k_max = 9.41h/Mpc. \n" + */ + __Pyx_INCREF(__pyx_kp_u_EuclidEmulator2_emulates_the_non); + __pyx_v_wrn_message = __pyx_kp_u_EuclidEmulator2_emulates_the_non; + + /* "euclidemu2.pyx":410 + * "Higher k modes constantly extrapolated.") + * #if verbose: + * _warnings.warn(wrn_message) # <<<<<<<<<<<<<< + * do_extrapolate_above = True + * + */ + __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_warnings); if (unlikely(!__pyx_t_13)) __PYX_ERR(1, 410, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_13); + __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_13, __pyx_n_s_warn); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 410, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + __pyx_t_13 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_10))) { + __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_10); + if (likely(__pyx_t_13)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10); + __Pyx_INCREF(__pyx_t_13); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_10, function); + } + } + __pyx_t_14 = (__pyx_t_13) ? __Pyx_PyObject_Call2Args(__pyx_t_10, __pyx_t_13, __pyx_v_wrn_message) : __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_v_wrn_message); + __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; + if (unlikely(!__pyx_t_14)) __PYX_ERR(1, 410, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_14); + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; + + /* "euclidemu2.pyx":411 + * #if verbose: + * _warnings.warn(wrn_message) + * do_extrapolate_above = True # <<<<<<<<<<<<<< + * + * if any(custom_kvec < min(kvals)): + */ + __pyx_v_do_extrapolate_above = 1; + + /* "euclidemu2.pyx":404 + * custom_k_above = custom_kvec[[not(u) for u in upper_mask]] + * + * if any(custom_kvec > max(kvals)): # <<<<<<<<<<<<<< + * wrn_message = ("EuclidEmulator2 emulates the non-linear correction in \n" + * "the interval [8.73e-3 h/Mpc, 9.41h/Mpc]. You are \n" + */ + } + + /* "euclidemu2.pyx":413 + * do_extrapolate_above = True + * + * if any(custom_kvec < min(kvals)): # <<<<<<<<<<<<<< + * wrn_message = ("EuclidEmulator2 emulates the non-linear correction in \n" + * "the interval [8.73e-3 h/Mpc, 9.41h/Mpc]. You are \n" + */ + __pyx_t_14 = __Pyx_PyObject_CallOneArg(__pyx_builtin_min, __pyx_v_kvals); if (unlikely(!__pyx_t_14)) __PYX_ERR(1, 413, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_14); + __pyx_t_10 = PyObject_RichCompare(__pyx_v_custom_kvec, __pyx_t_14, Py_LT); __Pyx_XGOTREF(__pyx_t_10); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 413, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; + __pyx_t_14 = __Pyx_PyObject_CallOneArg(__pyx_builtin_any, __pyx_t_10); if (unlikely(!__pyx_t_14)) __PYX_ERR(1, 413, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_14); + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_14); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(1, 413, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; + if (__pyx_t_1) { + + /* "euclidemu2.pyx":414 + * + * if any(custom_kvec < min(kvals)): + * wrn_message = ("EuclidEmulator2 emulates the non-linear correction in \n" # <<<<<<<<<<<<<< + * "the interval [8.73e-3 h/Mpc, 9.41h/Mpc]. You are \n" + * "requesting k modes below k_min = 8.73e-3 h/Mpc. \n" + */ + __Pyx_INCREF(__pyx_kp_u_EuclidEmulator2_emulates_the_non_2); + __Pyx_XDECREF_SET(__pyx_v_wrn_message, __pyx_kp_u_EuclidEmulator2_emulates_the_non_2); + + /* "euclidemu2.pyx":419 + * "Lower k modes constantly extrapolated.") + * #if verbose: + * _warnings.warn(wrn_message) # <<<<<<<<<<<<<< + * do_extrapolate_below = True + * + */ + __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_warnings); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 419, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_warn); if (unlikely(!__pyx_t_13)) __PYX_ERR(1, 419, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_13); + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + __pyx_t_10 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_13))) { + __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_13); + if (likely(__pyx_t_10)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_13); + __Pyx_INCREF(__pyx_t_10); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_13, function); + } + } + __pyx_t_14 = (__pyx_t_10) ? __Pyx_PyObject_Call2Args(__pyx_t_13, __pyx_t_10, __pyx_v_wrn_message) : __Pyx_PyObject_CallOneArg(__pyx_t_13, __pyx_v_wrn_message); + __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; + if (unlikely(!__pyx_t_14)) __PYX_ERR(1, 419, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_14); + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; + + /* "euclidemu2.pyx":420 + * #if verbose: + * _warnings.warn(wrn_message) + * do_extrapolate_below = True # <<<<<<<<<<<<<< + * + * + */ + __pyx_v_do_extrapolate_below = 1; + + /* "euclidemu2.pyx":413 + * do_extrapolate_above = True + * + * if any(custom_kvec < min(kvals)): # <<<<<<<<<<<<<< + * wrn_message = ("EuclidEmulator2 emulates the non-linear correction in \n" + * "the interval [8.73e-3 h/Mpc, 9.41h/Mpc]. You are \n" + */ + } + + /* "euclidemu2.pyx":396 + * do_extrapolate_above = False + * do_extrapolate_below = False + * if not(custom_kvec is None): # <<<<<<<<<<<<<< + * upper_mask = custom_kvec < max(kvals) + * lower_mask = custom_kvec > min(kvals) + */ + } + + /* "euclidemu2.pyx":423 + * + * + * len_kvals = len(kvals) # <<<<<<<<<<<<<< + * len_redshifts = len(redshifts) + * + */ + __pyx_t_8 = PyObject_Length(__pyx_v_kvals); if (unlikely(__pyx_t_8 == ((Py_ssize_t)-1))) __PYX_ERR(1, 423, __pyx_L1_error) + __pyx_v_len_kvals = __pyx_t_8; + + /* "euclidemu2.pyx":424 + * + * len_kvals = len(kvals) + * len_redshifts = len(redshifts) # <<<<<<<<<<<<<< + * + * if len_redshifts > 1: + */ + __pyx_t_8 = PyObject_Length(__pyx_v_redshifts); if (unlikely(__pyx_t_8 == ((Py_ssize_t)-1))) __PYX_ERR(1, 424, __pyx_L1_error) + __pyx_v_len_redshifts = __pyx_t_8; + + /* "euclidemu2.pyx":426 + * len_redshifts = len(redshifts) + * + * if len_redshifts > 1: # <<<<<<<<<<<<<< + * bvals = {} + * for i in range(len_redshifts): + */ + __pyx_t_1 = ((__pyx_v_len_redshifts > 1) != 0); + if (__pyx_t_1) { + + /* "euclidemu2.pyx":427 + * + * if len_redshifts > 1: + * bvals = {} # <<<<<<<<<<<<<< + * for i in range(len_redshifts): + * tmp = boost[i] + */ + __pyx_t_14 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_14)) __PYX_ERR(1, 427, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_14); + __pyx_v_bvals = __pyx_t_14; + __pyx_t_14 = 0; + + /* "euclidemu2.pyx":428 + * if len_redshifts > 1: + * bvals = {} + * for i in range(len_redshifts): # <<<<<<<<<<<<<< + * tmp = boost[i] + * if not(custom_kvec is None): + */ + __pyx_t_8 = __pyx_v_len_redshifts; + __pyx_t_17 = __pyx_t_8; + for (__pyx_t_18 = 0; __pyx_t_18 < __pyx_t_17; __pyx_t_18+=1) { + __pyx_v_i = __pyx_t_18; + + /* "euclidemu2.pyx":429 + * bvals = {} + * for i in range(len_redshifts): + * tmp = boost[i] # <<<<<<<<<<<<<< + * if not(custom_kvec is None): + * bvals[i] = 10.0**_CubicSpline(np.log10(kvals), + */ + __pyx_t_14 = __Pyx_GetItemInt(__pyx_v_boost, __pyx_v_i, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 1, 1); if (unlikely(!__pyx_t_14)) __PYX_ERR(1, 429, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_14); + __Pyx_XDECREF_SET(__pyx_v_tmp, __pyx_t_14); + __pyx_t_14 = 0; + + /* "euclidemu2.pyx":430 + * for i in range(len_redshifts): + * tmp = boost[i] + * if not(custom_kvec is None): # <<<<<<<<<<<<<< + * bvals[i] = 10.0**_CubicSpline(np.log10(kvals), + * np.log10(tmp.reshape(k_shape)) + */ + __pyx_t_1 = (__pyx_v_custom_kvec != Py_None); + __pyx_t_2 = (__pyx_t_1 != 0); + if (__pyx_t_2) { + + /* "euclidemu2.pyx":431 + * tmp = boost[i] + * if not(custom_kvec is None): + * bvals[i] = 10.0**_CubicSpline(np.log10(kvals), # <<<<<<<<<<<<<< + * np.log10(tmp.reshape(k_shape)) + * )(np.log10(custom_k_within_range)) + */ + __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_CubicSpline); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 431, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 431, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_log10); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 431, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_11); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __pyx_t_7 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_11))) { + __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_11); + if (likely(__pyx_t_7)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11); + __Pyx_INCREF(__pyx_t_7); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_11, function); + } + } + __pyx_t_12 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_11, __pyx_t_7, __pyx_v_kvals) : __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_v_kvals); + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + if (unlikely(!__pyx_t_12)) __PYX_ERR(1, 431, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_12); + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + + /* "euclidemu2.pyx":432 + * if not(custom_kvec is None): + * bvals[i] = 10.0**_CubicSpline(np.log10(kvals), + * np.log10(tmp.reshape(k_shape)) # <<<<<<<<<<<<<< + * )(np.log10(custom_k_within_range)) + * + */ + __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 432, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_log10); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 432, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_tmp, __pyx_n_s_reshape); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 432, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_4 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5); + if (likely(__pyx_t_4)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_5, function); + } + } + __pyx_t_7 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_4, __pyx_v_k_shape) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_k_shape); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 432, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_5 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { + __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6); + if (likely(__pyx_t_5)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); + __Pyx_INCREF(__pyx_t_5); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_6, function); + } + } + __pyx_t_11 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_5, __pyx_t_7) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_7); + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 432, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_11); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __pyx_t_6 = NULL; + __pyx_t_15 = 0; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_10))) { + __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_10); + if (likely(__pyx_t_6)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10); + __Pyx_INCREF(__pyx_t_6); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_10, function); + __pyx_t_15 = 1; + } + } + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_10)) { + PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_t_12, __pyx_t_11}; + __pyx_t_13 = __Pyx_PyFunction_FastCall(__pyx_t_10, __pyx_temp+1-__pyx_t_15, 2+__pyx_t_15); if (unlikely(!__pyx_t_13)) __PYX_ERR(1, 431, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_GOTREF(__pyx_t_13); + __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_10)) { + PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_t_12, __pyx_t_11}; + __pyx_t_13 = __Pyx_PyCFunction_FastCall(__pyx_t_10, __pyx_temp+1-__pyx_t_15, 2+__pyx_t_15); if (unlikely(!__pyx_t_13)) __PYX_ERR(1, 431, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_GOTREF(__pyx_t_13); + __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + } else + #endif + { + __pyx_t_7 = PyTuple_New(2+__pyx_t_15); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 431, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + if (__pyx_t_6) { + __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6); __pyx_t_6 = NULL; + } + __Pyx_GIVEREF(__pyx_t_12); + PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_15, __pyx_t_12); + __Pyx_GIVEREF(__pyx_t_11); + PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_15, __pyx_t_11); + __pyx_t_12 = 0; + __pyx_t_11 = 0; + __pyx_t_13 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_7, NULL); if (unlikely(!__pyx_t_13)) __PYX_ERR(1, 431, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_13); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + } + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + + /* "euclidemu2.pyx":433 + * bvals[i] = 10.0**_CubicSpline(np.log10(kvals), + * np.log10(tmp.reshape(k_shape)) + * )(np.log10(custom_k_within_range)) # <<<<<<<<<<<<<< + * + * #Extrapolate if necessary + */ + __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 433, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_log10); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 433, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_11); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + if (unlikely(!__pyx_v_custom_k_within_range)) { __Pyx_RaiseUnboundLocalError("custom_k_within_range"); __PYX_ERR(1, 433, __pyx_L1_error) } + __pyx_t_7 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_11))) { + __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_11); + if (likely(__pyx_t_7)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11); + __Pyx_INCREF(__pyx_t_7); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_11, function); + } + } + __pyx_t_10 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_11, __pyx_t_7, __pyx_v_custom_k_within_range) : __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_v_custom_k_within_range); + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 433, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + __pyx_t_11 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_13))) { + __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_13); + if (likely(__pyx_t_11)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_13); + __Pyx_INCREF(__pyx_t_11); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_13, function); + } + } + __pyx_t_14 = (__pyx_t_11) ? __Pyx_PyObject_Call2Args(__pyx_t_13, __pyx_t_11, __pyx_t_10) : __Pyx_PyObject_CallOneArg(__pyx_t_13, __pyx_t_10); + __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + if (unlikely(!__pyx_t_14)) __PYX_ERR(1, 433, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_14); + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + + /* "euclidemu2.pyx":431 + * tmp = boost[i] + * if not(custom_kvec is None): + * bvals[i] = 10.0**_CubicSpline(np.log10(kvals), # <<<<<<<<<<<<<< + * np.log10(tmp.reshape(k_shape)) + * )(np.log10(custom_k_within_range)) + */ + __pyx_t_13 = PyNumber_Power(__pyx_float_10_0, __pyx_t_14, Py_None); if (unlikely(!__pyx_t_13)) __PYX_ERR(1, 431, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_13); + __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; + if (unlikely(__Pyx_SetItemInt(__pyx_v_bvals, __pyx_v_i, __pyx_t_13, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 1, 1) < 0)) __PYX_ERR(1, 431, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + + /* "euclidemu2.pyx":436 + * + * #Extrapolate if necessary + * if do_extrapolate_below: # <<<<<<<<<<<<<< + * # below the k_min of EuclidEmulator, we are in the linear regime where + * # the boost factor is unity by construction + */ + __pyx_t_2 = (__pyx_v_do_extrapolate_below != 0); + if (__pyx_t_2) { + + /* "euclidemu2.pyx":439 + * # below the k_min of EuclidEmulator, we are in the linear regime where + * # the boost factor is unity by construction + * b_extrap = np.ones_like(custom_k_below) # <<<<<<<<<<<<<< + * bvals[i]= np.concatenate((b_extrap, bvals[i])) + * + */ + __Pyx_GetModuleGlobalName(__pyx_t_14, __pyx_n_s_np); if (unlikely(!__pyx_t_14)) __PYX_ERR(1, 439, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_14); + __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_14, __pyx_n_s_ones_like); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 439, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; + if (unlikely(!__pyx_v_custom_k_below)) { __Pyx_RaiseUnboundLocalError("custom_k_below"); __PYX_ERR(1, 439, __pyx_L1_error) } + __pyx_t_14 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_10))) { + __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_10); + if (likely(__pyx_t_14)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10); + __Pyx_INCREF(__pyx_t_14); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_10, function); + } + } + __pyx_t_13 = (__pyx_t_14) ? __Pyx_PyObject_Call2Args(__pyx_t_10, __pyx_t_14, __pyx_v_custom_k_below) : __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_v_custom_k_below); + __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0; + if (unlikely(!__pyx_t_13)) __PYX_ERR(1, 439, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_13); + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + __Pyx_XDECREF_SET(__pyx_v_b_extrap, __pyx_t_13); + __pyx_t_13 = 0; + + /* "euclidemu2.pyx":440 + * # the boost factor is unity by construction + * b_extrap = np.ones_like(custom_k_below) + * bvals[i]= np.concatenate((b_extrap, bvals[i])) # <<<<<<<<<<<<<< + * + * if do_extrapolate_above: + */ + __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_np); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 440, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_concatenate); if (unlikely(!__pyx_t_14)) __PYX_ERR(1, 440, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_14); + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + __pyx_t_10 = __Pyx_GetItemInt(__pyx_v_bvals, __pyx_v_i, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 1, 1); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 440, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __pyx_t_11 = PyTuple_New(2); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 440, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_11); + __Pyx_INCREF(__pyx_v_b_extrap); + __Pyx_GIVEREF(__pyx_v_b_extrap); + PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_v_b_extrap); + __Pyx_GIVEREF(__pyx_t_10); + PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_10); + __pyx_t_10 = 0; + __pyx_t_10 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_14))) { + __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_14); + if (likely(__pyx_t_10)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_14); + __Pyx_INCREF(__pyx_t_10); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_14, function); + } + } + __pyx_t_13 = (__pyx_t_10) ? __Pyx_PyObject_Call2Args(__pyx_t_14, __pyx_t_10, __pyx_t_11) : __Pyx_PyObject_CallOneArg(__pyx_t_14, __pyx_t_11); + __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + if (unlikely(!__pyx_t_13)) __PYX_ERR(1, 440, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_13); + __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; + if (unlikely(__Pyx_SetItemInt(__pyx_v_bvals, __pyx_v_i, __pyx_t_13, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 1, 1) < 0)) __PYX_ERR(1, 440, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + + /* "euclidemu2.pyx":436 + * + * #Extrapolate if necessary + * if do_extrapolate_below: # <<<<<<<<<<<<<< + * # below the k_min of EuclidEmulator, we are in the linear regime where + * # the boost factor is unity by construction + */ + } + + /* "euclidemu2.pyx":442 + * bvals[i]= np.concatenate((b_extrap, bvals[i])) + * + * if do_extrapolate_above: # <<<<<<<<<<<<<< + * # We extrapolate by setting all b(k > k_max) to b(k_max) + * b_extrap = bvals[i][-1] * np.ones_like(custom_k_above) + */ + __pyx_t_2 = (__pyx_v_do_extrapolate_above != 0); + if (__pyx_t_2) { + + /* "euclidemu2.pyx":444 + * if do_extrapolate_above: + * # We extrapolate by setting all b(k > k_max) to b(k_max) + * b_extrap = bvals[i][-1] * np.ones_like(custom_k_above) # <<<<<<<<<<<<<< + * bvals[i] = np.concatenate((bvals[i], b_extrap)) + * + */ + __pyx_t_13 = PyInt_FromSsize_t(__pyx_v_i); if (unlikely(!__pyx_t_13)) __PYX_ERR(1, 444, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_13); + __pyx_t_14 = __Pyx_PyDict_GetItem(__pyx_v_bvals, __pyx_t_13); if (unlikely(!__pyx_t_14)) __PYX_ERR(1, 444, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_14); + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + __pyx_t_13 = __Pyx_GetItemInt(__pyx_t_14, -1L, long, 1, __Pyx_PyInt_From_long, 0, 1, 1); if (unlikely(!__pyx_t_13)) __PYX_ERR(1, 444, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_13); + __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; + __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_np); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 444, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_11); + __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_ones_like); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 444, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + if (unlikely(!__pyx_v_custom_k_above)) { __Pyx_RaiseUnboundLocalError("custom_k_above"); __PYX_ERR(1, 444, __pyx_L1_error) } + __pyx_t_11 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_10))) { + __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_10); + if (likely(__pyx_t_11)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10); + __Pyx_INCREF(__pyx_t_11); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_10, function); + } + } + __pyx_t_14 = (__pyx_t_11) ? __Pyx_PyObject_Call2Args(__pyx_t_10, __pyx_t_11, __pyx_v_custom_k_above) : __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_v_custom_k_above); + __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; + if (unlikely(!__pyx_t_14)) __PYX_ERR(1, 444, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_14); + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + __pyx_t_10 = PyNumber_Multiply(__pyx_t_13, __pyx_t_14); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 444, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; + __Pyx_XDECREF_SET(__pyx_v_b_extrap, __pyx_t_10); + __pyx_t_10 = 0; + + /* "euclidemu2.pyx":445 + * # We extrapolate by setting all b(k > k_max) to b(k_max) + * b_extrap = bvals[i][-1] * np.ones_like(custom_k_above) + * bvals[i] = np.concatenate((bvals[i], b_extrap)) # <<<<<<<<<<<<<< + * + * else: + */ + __Pyx_GetModuleGlobalName(__pyx_t_14, __pyx_n_s_np); if (unlikely(!__pyx_t_14)) __PYX_ERR(1, 445, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_14); + __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_14, __pyx_n_s_concatenate); if (unlikely(!__pyx_t_13)) __PYX_ERR(1, 445, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_13); + __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; + __pyx_t_14 = __Pyx_GetItemInt(__pyx_v_bvals, __pyx_v_i, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 1, 1); if (unlikely(!__pyx_t_14)) __PYX_ERR(1, 445, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_14); + __pyx_t_11 = PyTuple_New(2); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 445, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_11); + __Pyx_GIVEREF(__pyx_t_14); + PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_14); + __Pyx_INCREF(__pyx_v_b_extrap); + __Pyx_GIVEREF(__pyx_v_b_extrap); + PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_v_b_extrap); + __pyx_t_14 = 0; + __pyx_t_14 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_13))) { + __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_13); + if (likely(__pyx_t_14)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_13); + __Pyx_INCREF(__pyx_t_14); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_13, function); + } + } + __pyx_t_10 = (__pyx_t_14) ? __Pyx_PyObject_Call2Args(__pyx_t_13, __pyx_t_14, __pyx_t_11) : __Pyx_PyObject_CallOneArg(__pyx_t_13, __pyx_t_11); + __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0; + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 445, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + if (unlikely(__Pyx_SetItemInt(__pyx_v_bvals, __pyx_v_i, __pyx_t_10, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 1, 1) < 0)) __PYX_ERR(1, 445, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + + /* "euclidemu2.pyx":442 + * bvals[i]= np.concatenate((b_extrap, bvals[i])) + * + * if do_extrapolate_above: # <<<<<<<<<<<<<< + * # We extrapolate by setting all b(k > k_max) to b(k_max) + * b_extrap = bvals[i][-1] * np.ones_like(custom_k_above) + */ + } + + /* "euclidemu2.pyx":430 + * for i in range(len_redshifts): + * tmp = boost[i] + * if not(custom_kvec is None): # <<<<<<<<<<<<<< + * bvals[i] = 10.0**_CubicSpline(np.log10(kvals), + * np.log10(tmp.reshape(k_shape)) + */ + goto __pyx_L36; + } + + /* "euclidemu2.pyx":448 + * + * else: + * bvals[i] = tmp.reshape(k_shape) # <<<<<<<<<<<<<< + * else: + * tmp = boost + */ + /*else*/ { + __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_v_tmp, __pyx_n_s_reshape); if (unlikely(!__pyx_t_13)) __PYX_ERR(1, 448, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_13); + __pyx_t_11 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_13))) { + __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_13); + if (likely(__pyx_t_11)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_13); + __Pyx_INCREF(__pyx_t_11); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_13, function); + } + } + __pyx_t_10 = (__pyx_t_11) ? __Pyx_PyObject_Call2Args(__pyx_t_13, __pyx_t_11, __pyx_v_k_shape) : __Pyx_PyObject_CallOneArg(__pyx_t_13, __pyx_v_k_shape); + __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; + if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 448, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + if (unlikely(__Pyx_SetItemInt(__pyx_v_bvals, __pyx_v_i, __pyx_t_10, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 1, 1) < 0)) __PYX_ERR(1, 448, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + } + __pyx_L36:; + } + + /* "euclidemu2.pyx":426 + * len_redshifts = len(redshifts) + * + * if len_redshifts > 1: # <<<<<<<<<<<<<< + * bvals = {} + * for i in range(len_redshifts): + */ + goto __pyx_L33; + } + + /* "euclidemu2.pyx":450 + * bvals[i] = tmp.reshape(k_shape) + * else: + * tmp = boost # <<<<<<<<<<<<<< + * if not(custom_kvec is None): + * bvals = 10.0**_CubicSpline(np.log10(kvals), + */ + /*else*/ { + __Pyx_INCREF(__pyx_v_boost); + __pyx_v_tmp = __pyx_v_boost; + + /* "euclidemu2.pyx":451 + * else: + * tmp = boost + * if not(custom_kvec is None): # <<<<<<<<<<<<<< + * bvals = 10.0**_CubicSpline(np.log10(kvals), + * np.log10(tmp.reshape(k_shape)) + */ + __pyx_t_2 = (__pyx_v_custom_kvec != Py_None); + __pyx_t_1 = (__pyx_t_2 != 0); + if (__pyx_t_1) { + + /* "euclidemu2.pyx":452 + * tmp = boost + * if not(custom_kvec is None): + * bvals = 10.0**_CubicSpline(np.log10(kvals), # <<<<<<<<<<<<<< + * np.log10(tmp.reshape(k_shape)) + * )(np.log10(custom_k_within_range)) + */ + __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_CubicSpline); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 452, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_11); + __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 452, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_log10); if (unlikely(!__pyx_t_12)) __PYX_ERR(1, 452, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_12); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __pyx_t_7 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_12))) { + __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_12); + if (likely(__pyx_t_7)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12); + __Pyx_INCREF(__pyx_t_7); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_12, function); + } + } + __pyx_t_14 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_12, __pyx_t_7, __pyx_v_kvals) : __Pyx_PyObject_CallOneArg(__pyx_t_12, __pyx_v_kvals); + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + if (unlikely(!__pyx_t_14)) __PYX_ERR(1, 452, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_14); + __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; + + /* "euclidemu2.pyx":453 + * if not(custom_kvec is None): + * bvals = 10.0**_CubicSpline(np.log10(kvals), + * np.log10(tmp.reshape(k_shape)) # <<<<<<<<<<<<<< + * )(np.log10(custom_k_within_range)) + * + */ + __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 453, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_log10); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 453, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_tmp, __pyx_n_s_reshape); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 453, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_4 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5); + if (likely(__pyx_t_4)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_5, function); + } + } + __pyx_t_7 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_4, __pyx_v_k_shape) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_k_shape); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 453, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_5 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { + __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6); + if (likely(__pyx_t_5)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); + __Pyx_INCREF(__pyx_t_5); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_6, function); + } + } + __pyx_t_12 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_5, __pyx_t_7) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_7); + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + if (unlikely(!__pyx_t_12)) __PYX_ERR(1, 453, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_12); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __pyx_t_6 = NULL; + __pyx_t_15 = 0; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_11))) { + __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_11); + if (likely(__pyx_t_6)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11); + __Pyx_INCREF(__pyx_t_6); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_11, function); + __pyx_t_15 = 1; + } + } + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_11)) { + PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_t_14, __pyx_t_12}; + __pyx_t_13 = __Pyx_PyFunction_FastCall(__pyx_t_11, __pyx_temp+1-__pyx_t_15, 2+__pyx_t_15); if (unlikely(!__pyx_t_13)) __PYX_ERR(1, 452, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_GOTREF(__pyx_t_13); + __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; + __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_11)) { + PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_t_14, __pyx_t_12}; + __pyx_t_13 = __Pyx_PyCFunction_FastCall(__pyx_t_11, __pyx_temp+1-__pyx_t_15, 2+__pyx_t_15); if (unlikely(!__pyx_t_13)) __PYX_ERR(1, 452, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_GOTREF(__pyx_t_13); + __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; + __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; + } else + #endif + { + __pyx_t_7 = PyTuple_New(2+__pyx_t_15); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 452, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + if (__pyx_t_6) { + __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6); __pyx_t_6 = NULL; + } + __Pyx_GIVEREF(__pyx_t_14); + PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_15, __pyx_t_14); + __Pyx_GIVEREF(__pyx_t_12); + PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_15, __pyx_t_12); + __pyx_t_14 = 0; + __pyx_t_12 = 0; + __pyx_t_13 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_7, NULL); if (unlikely(!__pyx_t_13)) __PYX_ERR(1, 452, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_13); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + } + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + + /* "euclidemu2.pyx":454 + * bvals = 10.0**_CubicSpline(np.log10(kvals), + * np.log10(tmp.reshape(k_shape)) + * )(np.log10(custom_k_within_range)) # <<<<<<<<<<<<<< + * + * #Extrapolate if necessary + */ + __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 454, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_log10); if (unlikely(!__pyx_t_12)) __PYX_ERR(1, 454, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_12); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + if (unlikely(!__pyx_v_custom_k_within_range)) { __Pyx_RaiseUnboundLocalError("custom_k_within_range"); __PYX_ERR(1, 454, __pyx_L1_error) } + __pyx_t_7 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_12))) { + __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_12); + if (likely(__pyx_t_7)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12); + __Pyx_INCREF(__pyx_t_7); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_12, function); + } + } + __pyx_t_11 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_12, __pyx_t_7, __pyx_v_custom_k_within_range) : __Pyx_PyObject_CallOneArg(__pyx_t_12, __pyx_v_custom_k_within_range); + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 454, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_11); + __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; + __pyx_t_12 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_13))) { + __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_13); + if (likely(__pyx_t_12)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_13); + __Pyx_INCREF(__pyx_t_12); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_13, function); + } + } + __pyx_t_10 = (__pyx_t_12) ? __Pyx_PyObject_Call2Args(__pyx_t_13, __pyx_t_12, __pyx_t_11) : __Pyx_PyObject_CallOneArg(__pyx_t_13, __pyx_t_11); + __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 454, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + + /* "euclidemu2.pyx":452 + * tmp = boost + * if not(custom_kvec is None): + * bvals = 10.0**_CubicSpline(np.log10(kvals), # <<<<<<<<<<<<<< + * np.log10(tmp.reshape(k_shape)) + * )(np.log10(custom_k_within_range)) + */ + __pyx_t_13 = PyNumber_Power(__pyx_float_10_0, __pyx_t_10, Py_None); if (unlikely(!__pyx_t_13)) __PYX_ERR(1, 452, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_13); + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + __pyx_v_bvals = __pyx_t_13; + __pyx_t_13 = 0; + + /* "euclidemu2.pyx":457 + * + * #Extrapolate if necessary + * if do_extrapolate_below: # <<<<<<<<<<<<<< + * # below the k_min of EuclidEmulator, we are in the linear regime where + * # the boost factor is unity by construction + */ + __pyx_t_1 = (__pyx_v_do_extrapolate_below != 0); + if (__pyx_t_1) { + + /* "euclidemu2.pyx":460 + * # below the k_min of EuclidEmulator, we are in the linear regime where + * # the boost factor is unity by construction + * b_extrap = np.ones_like(custom_k_below) # <<<<<<<<<<<<<< + * bvals = np.concatenate((b_extrap,bvals)) + * + */ + __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_np); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 460, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_ones_like); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 460, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_11); + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + if (unlikely(!__pyx_v_custom_k_below)) { __Pyx_RaiseUnboundLocalError("custom_k_below"); __PYX_ERR(1, 460, __pyx_L1_error) } + __pyx_t_10 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_11))) { + __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_11); + if (likely(__pyx_t_10)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11); + __Pyx_INCREF(__pyx_t_10); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_11, function); + } + } + __pyx_t_13 = (__pyx_t_10) ? __Pyx_PyObject_Call2Args(__pyx_t_11, __pyx_t_10, __pyx_v_custom_k_below) : __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_v_custom_k_below); + __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; + if (unlikely(!__pyx_t_13)) __PYX_ERR(1, 460, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_13); + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + __pyx_v_b_extrap = __pyx_t_13; + __pyx_t_13 = 0; + + /* "euclidemu2.pyx":461 + * # the boost factor is unity by construction + * b_extrap = np.ones_like(custom_k_below) + * bvals = np.concatenate((b_extrap,bvals)) # <<<<<<<<<<<<<< + * + * if do_extrapolate_above: + */ + __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_np); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 461, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_11); + __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_concatenate); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 461, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + __pyx_t_11 = PyTuple_New(2); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 461, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_11); + __Pyx_INCREF(__pyx_v_b_extrap); + __Pyx_GIVEREF(__pyx_v_b_extrap); + PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_v_b_extrap); + __Pyx_INCREF(__pyx_v_bvals); + __Pyx_GIVEREF(__pyx_v_bvals); + PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_v_bvals); + __pyx_t_12 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_10))) { + __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_10); + if (likely(__pyx_t_12)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10); + __Pyx_INCREF(__pyx_t_12); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_10, function); + } + } + __pyx_t_13 = (__pyx_t_12) ? __Pyx_PyObject_Call2Args(__pyx_t_10, __pyx_t_12, __pyx_t_11) : __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_t_11); + __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + if (unlikely(!__pyx_t_13)) __PYX_ERR(1, 461, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_13); + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + __Pyx_DECREF_SET(__pyx_v_bvals, __pyx_t_13); + __pyx_t_13 = 0; + + /* "euclidemu2.pyx":457 + * + * #Extrapolate if necessary + * if do_extrapolate_below: # <<<<<<<<<<<<<< + * # below the k_min of EuclidEmulator, we are in the linear regime where + * # the boost factor is unity by construction + */ + } + + /* "euclidemu2.pyx":463 + * bvals = np.concatenate((b_extrap,bvals)) + * + * if do_extrapolate_above: # <<<<<<<<<<<<<< + * # We extrapolate by setting all b(k > k_max) to b(k_max) + * b_extrap = bvals[-1] * np.ones_like(custom_k_above) + */ + __pyx_t_1 = (__pyx_v_do_extrapolate_above != 0); + if (__pyx_t_1) { + + /* "euclidemu2.pyx":465 + * if do_extrapolate_above: + * # We extrapolate by setting all b(k > k_max) to b(k_max) + * b_extrap = bvals[-1] * np.ones_like(custom_k_above) # <<<<<<<<<<<<<< + * bvals = np.concatenate((bvals, b_extrap)) + * + */ + __pyx_t_13 = __Pyx_GetItemInt(__pyx_v_bvals, -1L, long, 1, __Pyx_PyInt_From_long, 0, 1, 1); if (unlikely(!__pyx_t_13)) __PYX_ERR(1, 465, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_13); + __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_np); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 465, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_11); + __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_ones_like); if (unlikely(!__pyx_t_12)) __PYX_ERR(1, 465, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_12); + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + if (unlikely(!__pyx_v_custom_k_above)) { __Pyx_RaiseUnboundLocalError("custom_k_above"); __PYX_ERR(1, 465, __pyx_L1_error) } + __pyx_t_11 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_12))) { + __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_12); + if (likely(__pyx_t_11)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12); + __Pyx_INCREF(__pyx_t_11); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_12, function); + } + } + __pyx_t_10 = (__pyx_t_11) ? __Pyx_PyObject_Call2Args(__pyx_t_12, __pyx_t_11, __pyx_v_custom_k_above) : __Pyx_PyObject_CallOneArg(__pyx_t_12, __pyx_v_custom_k_above); + __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; + if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 465, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; + __pyx_t_12 = PyNumber_Multiply(__pyx_t_13, __pyx_t_10); if (unlikely(!__pyx_t_12)) __PYX_ERR(1, 465, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_12); + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + __Pyx_XDECREF_SET(__pyx_v_b_extrap, __pyx_t_12); + __pyx_t_12 = 0; + + /* "euclidemu2.pyx":466 + * # We extrapolate by setting all b(k > k_max) to b(k_max) + * b_extrap = bvals[-1] * np.ones_like(custom_k_above) + * bvals = np.concatenate((bvals, b_extrap)) # <<<<<<<<<<<<<< + * + * else: + */ + __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_np); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 466, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_concatenate); if (unlikely(!__pyx_t_13)) __PYX_ERR(1, 466, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_13); + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + __pyx_t_10 = PyTuple_New(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 466, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __Pyx_INCREF(__pyx_v_bvals); + __Pyx_GIVEREF(__pyx_v_bvals); + PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_v_bvals); + __Pyx_INCREF(__pyx_v_b_extrap); + __Pyx_GIVEREF(__pyx_v_b_extrap); + PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_v_b_extrap); + __pyx_t_11 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_13))) { + __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_13); + if (likely(__pyx_t_11)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_13); + __Pyx_INCREF(__pyx_t_11); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_13, function); + } + } + __pyx_t_12 = (__pyx_t_11) ? __Pyx_PyObject_Call2Args(__pyx_t_13, __pyx_t_11, __pyx_t_10) : __Pyx_PyObject_CallOneArg(__pyx_t_13, __pyx_t_10); + __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + if (unlikely(!__pyx_t_12)) __PYX_ERR(1, 466, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_12); + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + __Pyx_DECREF_SET(__pyx_v_bvals, __pyx_t_12); + __pyx_t_12 = 0; + + /* "euclidemu2.pyx":463 + * bvals = np.concatenate((b_extrap,bvals)) + * + * if do_extrapolate_above: # <<<<<<<<<<<<<< + * # We extrapolate by setting all b(k > k_max) to b(k_max) + * b_extrap = bvals[-1] * np.ones_like(custom_k_above) + */ + } + + /* "euclidemu2.pyx":451 + * else: + * tmp = boost + * if not(custom_kvec is None): # <<<<<<<<<<<<<< + * bvals = 10.0**_CubicSpline(np.log10(kvals), + * np.log10(tmp.reshape(k_shape)) + */ + goto __pyx_L39; + } + + /* "euclidemu2.pyx":469 + * + * else: + * bvals = tmp.reshape(k_shape) # <<<<<<<<<<<<<< + * + * if not(custom_kvec is None): # This could probably be done cleaner! + */ + /*else*/ { + __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_v_tmp, __pyx_n_s_reshape); if (unlikely(!__pyx_t_13)) __PYX_ERR(1, 469, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_13); + __pyx_t_10 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_13))) { + __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_13); + if (likely(__pyx_t_10)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_13); + __Pyx_INCREF(__pyx_t_10); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_13, function); + } + } + __pyx_t_12 = (__pyx_t_10) ? __Pyx_PyObject_Call2Args(__pyx_t_13, __pyx_t_10, __pyx_v_k_shape) : __Pyx_PyObject_CallOneArg(__pyx_t_13, __pyx_v_k_shape); + __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; + if (unlikely(!__pyx_t_12)) __PYX_ERR(1, 469, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_12); + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + __pyx_v_bvals = __pyx_t_12; + __pyx_t_12 = 0; + } + __pyx_L39:; + } + __pyx_L33:; + + /* "euclidemu2.pyx":471 + * bvals = tmp.reshape(k_shape) + * + * if not(custom_kvec is None): # This could probably be done cleaner! # <<<<<<<<<<<<<< + * kvals = custom_kvec + * + */ + __pyx_t_1 = (__pyx_v_custom_kvec != Py_None); + __pyx_t_2 = (__pyx_t_1 != 0); + if (__pyx_t_2) { + + /* "euclidemu2.pyx":472 + * + * if not(custom_kvec is None): # This could probably be done cleaner! + * kvals = custom_kvec # <<<<<<<<<<<<<< + * + * return kvals,bvals + */ + __Pyx_INCREF(__pyx_v_custom_kvec); + __Pyx_DECREF_SET(__pyx_v_kvals, __pyx_v_custom_kvec); + + /* "euclidemu2.pyx":471 + * bvals = tmp.reshape(k_shape) + * + * if not(custom_kvec is None): # This could probably be done cleaner! # <<<<<<<<<<<<<< + * kvals = custom_kvec + * + */ + } + + /* "euclidemu2.pyx":474 + * kvals = custom_kvec + * + * return kvals,bvals # <<<<<<<<<<<<<< + * + * + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_12 = PyTuple_New(2); if (unlikely(!__pyx_t_12)) __PYX_ERR(1, 474, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_12); + __Pyx_INCREF(__pyx_v_kvals); + __Pyx_GIVEREF(__pyx_v_kvals); + PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_v_kvals); + __Pyx_INCREF(__pyx_v_bvals); + __Pyx_GIVEREF(__pyx_v_bvals); + PyTuple_SET_ITEM(__pyx_t_12, 1, __pyx_v_bvals); + __pyx_r = __pyx_t_12; + __pyx_t_12 = 0; + goto __pyx_L0; + + /* "euclidemu2.pyx":355 + * + * + * def get_boost(cosmo_par_in,redshifts,custom_kvec=None): # <<<<<<<<<<<<<< + * + * if isinstance(redshifts, (int, float)): + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_XDECREF(__pyx_t_10); + __Pyx_XDECREF(__pyx_t_11); + __Pyx_XDECREF(__pyx_t_12); + __Pyx_XDECREF(__pyx_t_13); + __Pyx_XDECREF(__pyx_t_14); + __Pyx_AddTraceback("euclidemu2.get_boost", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_z); + __Pyx_XDECREF(__pyx_v_cosmo_par); + __Pyx_XDECREF((PyObject *)__pyx_v_cosmo); + __Pyx_XDECREF((PyObject *)__pyx_v_ee2); + __Pyx_XDECREF(__pyx_v_k); + __Pyx_XDECREF(__pyx_v_boost); + __Pyx_XDECREF(__pyx_v_kvals); + __Pyx_XDECREF(__pyx_v_k_shape); + __Pyx_XDECREF(__pyx_v_upper_mask); + __Pyx_XDECREF(__pyx_v_lower_mask); + __Pyx_XDECREF(__pyx_v_mask); + __Pyx_XDECREF(__pyx_v_custom_k_within_range); + __Pyx_XDECREF(__pyx_v_custom_k_below); + __Pyx_XDECREF(__pyx_v_custom_k_above); + __Pyx_XDECREF(__pyx_v_wrn_message); + __Pyx_XDECREF(__pyx_v_bvals); + __Pyx_XDECREF(__pyx_v_tmp); + __Pyx_XDECREF(__pyx_v_b_extrap); + __Pyx_XDECREF(__pyx_7genexpr__pyx_v_u); + __Pyx_XDECREF(__pyx_7genexpr__pyx_v_l); + __Pyx_XDECREF(__pyx_8genexpr1__pyx_v_l); + __Pyx_XDECREF(__pyx_8genexpr2__pyx_v_u); + __Pyx_XDECREF(__pyx_v_redshifts); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "vector.from_py":45 + * + * @cname("__pyx_convert_vector_from_py_double") + * cdef vector[X] __pyx_convert_vector_from_py_double(object o) except *: # <<<<<<<<<<<<<< + * cdef vector[X] v + * for item in o: + */ + +static std::vector __pyx_convert_vector_from_py_double(PyObject *__pyx_v_o) { + std::vector __pyx_v_v; + PyObject *__pyx_v_item = NULL; + std::vector __pyx_r; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + Py_ssize_t __pyx_t_2; + PyObject *(*__pyx_t_3)(PyObject *); + PyObject *__pyx_t_4 = NULL; + double __pyx_t_5; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__pyx_convert_vector_from_py_double", 0); + + /* "vector.from_py":47 + * cdef vector[X] __pyx_convert_vector_from_py_double(object o) except *: + * cdef vector[X] v + * for item in o: # <<<<<<<<<<<<<< + * v.push_back(item) + * return v + */ + if (likely(PyList_CheckExact(__pyx_v_o)) || PyTuple_CheckExact(__pyx_v_o)) { + __pyx_t_1 = __pyx_v_o; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0; + __pyx_t_3 = NULL; + } else { + __pyx_t_2 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_o); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 47, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_3 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 47, __pyx_L1_error) + } + for (;;) { + if (likely(!__pyx_t_3)) { + if (likely(PyList_CheckExact(__pyx_t_1))) { + if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_1)) break; + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(0, 47, __pyx_L1_error) + #else + __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 47, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + #endif + } else { + if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break; + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(0, 47, __pyx_L1_error) + #else + __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 47, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + #endif + } + } else { + __pyx_t_4 = __pyx_t_3(__pyx_t_1); + if (unlikely(!__pyx_t_4)) { + PyObject* exc_type = PyErr_Occurred(); + if (exc_type) { + if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); + else __PYX_ERR(0, 47, __pyx_L1_error) + } + break; + } + __Pyx_GOTREF(__pyx_t_4); + } + __Pyx_XDECREF_SET(__pyx_v_item, __pyx_t_4); + __pyx_t_4 = 0; + + /* "vector.from_py":48 + * cdef vector[X] v + * for item in o: + * v.push_back(item) # <<<<<<<<<<<<<< + * return v + * + */ + __pyx_t_5 = __pyx_PyFloat_AsDouble(__pyx_v_item); if (unlikely((__pyx_t_5 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 48, __pyx_L1_error) + __pyx_v_v.push_back(((double)__pyx_t_5)); + + /* "vector.from_py":47 + * cdef vector[X] __pyx_convert_vector_from_py_double(object o) except *: + * cdef vector[X] v + * for item in o: # <<<<<<<<<<<<<< + * v.push_back(item) + * return v + */ + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "vector.from_py":49 + * for item in o: + * v.push_back(item) + * return v # <<<<<<<<<<<<<< + * + * + */ + __pyx_r = __pyx_v_v; + goto __pyx_L0; + + /* "vector.from_py":45 + * + * @cname("__pyx_convert_vector_from_py_double") + * cdef vector[X] __pyx_convert_vector_from_py_double(object o) except *: # <<<<<<<<<<<<<< + * cdef vector[X] v + * for item in o: + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_AddTraceback("vector.from_py.__pyx_convert_vector_from_py_double", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_pretend_to_initialize(&__pyx_r); + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_item); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "string.from_py":13 + * + * @cname("__pyx_convert_string_from_py_std__in_string") + * cdef string __pyx_convert_string_from_py_std__in_string(object o) except *: # <<<<<<<<<<<<<< + * cdef Py_ssize_t length = 0 + * cdef const char* data = __Pyx_PyObject_AsStringAndSize(o, &length) + */ + +static std::string __pyx_convert_string_from_py_std__in_string(PyObject *__pyx_v_o) { + Py_ssize_t __pyx_v_length; + char const *__pyx_v_data; + std::string __pyx_r; + __Pyx_RefNannyDeclarations + char const *__pyx_t_1; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__pyx_convert_string_from_py_std__in_string", 0); + + /* "string.from_py":14 + * @cname("__pyx_convert_string_from_py_std__in_string") + * cdef string __pyx_convert_string_from_py_std__in_string(object o) except *: + * cdef Py_ssize_t length = 0 # <<<<<<<<<<<<<< + * cdef const char* data = __Pyx_PyObject_AsStringAndSize(o, &length) + * return string(data, length) + */ + __pyx_v_length = 0; + + /* "string.from_py":15 + * cdef string __pyx_convert_string_from_py_std__in_string(object o) except *: + * cdef Py_ssize_t length = 0 + * cdef const char* data = __Pyx_PyObject_AsStringAndSize(o, &length) # <<<<<<<<<<<<<< + * return string(data, length) + * + */ + __pyx_t_1 = __Pyx_PyObject_AsStringAndSize(__pyx_v_o, (&__pyx_v_length)); if (unlikely(__pyx_t_1 == ((char const *)NULL))) __PYX_ERR(0, 15, __pyx_L1_error) + __pyx_v_data = __pyx_t_1; + + /* "string.from_py":16 + * cdef Py_ssize_t length = 0 + * cdef const char* data = __Pyx_PyObject_AsStringAndSize(o, &length) + * return string(data, length) # <<<<<<<<<<<<<< + * + * + */ + __pyx_r = std::string(__pyx_v_data, __pyx_v_length); + goto __pyx_L0; + + /* "string.from_py":13 + * + * @cname("__pyx_convert_string_from_py_std__in_string") + * cdef string __pyx_convert_string_from_py_std__in_string(object o) except *: # <<<<<<<<<<<<<< + * cdef Py_ssize_t length = 0 + * cdef const char* data = __Pyx_PyObject_AsStringAndSize(o, &length) + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_AddTraceback("string.from_py.__pyx_convert_string_from_py_std__in_string", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_pretend_to_initialize(&__pyx_r); + __pyx_L0:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "carray.to_py":112 + * + * @cname("__Pyx_carray_to_py_double") + * cdef inline list __Pyx_carray_to_py_double(base_type *v, Py_ssize_t length): # <<<<<<<<<<<<<< + * cdef size_t i + * cdef object value + */ + +static CYTHON_INLINE PyObject *__Pyx_carray_to_py_double(double *__pyx_v_v, Py_ssize_t __pyx_v_length) { + size_t __pyx_v_i; + PyObject *__pyx_v_value = 0; + PyObject *__pyx_v_l = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + size_t __pyx_t_2; + size_t __pyx_t_3; + size_t __pyx_t_4; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__Pyx_carray_to_py_double", 0); + + /* "carray.to_py":115 + * cdef size_t i + * cdef object value + * l = PyList_New(length) # <<<<<<<<<<<<<< + * for i in range(length): + * value = v[i] + */ + __pyx_t_1 = PyList_New(__pyx_v_length); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 115, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_v_l = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + + /* "carray.to_py":116 + * cdef object value + * l = PyList_New(length) + * for i in range(length): # <<<<<<<<<<<<<< + * value = v[i] + * Py_INCREF(value) + */ + __pyx_t_2 = ((size_t)__pyx_v_length); + __pyx_t_3 = __pyx_t_2; + for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) { + __pyx_v_i = __pyx_t_4; + + /* "carray.to_py":117 + * l = PyList_New(length) + * for i in range(length): + * value = v[i] # <<<<<<<<<<<<<< + * Py_INCREF(value) + * PyList_SET_ITEM(l, i, value) + */ + __pyx_t_1 = PyFloat_FromDouble((__pyx_v_v[__pyx_v_i])); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 117, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_XDECREF_SET(__pyx_v_value, __pyx_t_1); + __pyx_t_1 = 0; + + /* "carray.to_py":118 + * for i in range(length): + * value = v[i] + * Py_INCREF(value) # <<<<<<<<<<<<<< + * PyList_SET_ITEM(l, i, value) + * return l + */ + Py_INCREF(__pyx_v_value); + + /* "carray.to_py":119 + * value = v[i] + * Py_INCREF(value) + * PyList_SET_ITEM(l, i, value) # <<<<<<<<<<<<<< + * return l + * + */ + PyList_SET_ITEM(__pyx_v_l, __pyx_v_i, __pyx_v_value); + } + + /* "carray.to_py":120 + * Py_INCREF(value) + * PyList_SET_ITEM(l, i, value) + * return l # <<<<<<<<<<<<<< + * + * + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_l); + __pyx_r = __pyx_v_l; + goto __pyx_L0; + + /* "carray.to_py":112 + * + * @cname("__Pyx_carray_to_py_double") + * cdef inline list __Pyx_carray_to_py_double(base_type *v, Py_ssize_t length): # <<<<<<<<<<<<<< + * cdef size_t i + * cdef object value + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("carray.to_py.__Pyx_carray_to_py_double", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_value); + __Pyx_XDECREF(__pyx_v_l); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "carray.to_py":124 + * + * @cname("__Pyx_carray_to_tuple_double") + * cdef inline tuple __Pyx_carray_to_tuple_double(base_type *v, Py_ssize_t length): # <<<<<<<<<<<<<< + * cdef size_t i + * cdef object value + */ + +static CYTHON_INLINE PyObject *__Pyx_carray_to_tuple_double(double *__pyx_v_v, Py_ssize_t __pyx_v_length) { + size_t __pyx_v_i; + PyObject *__pyx_v_value = 0; + PyObject *__pyx_v_t = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + size_t __pyx_t_2; + size_t __pyx_t_3; + size_t __pyx_t_4; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__Pyx_carray_to_tuple_double", 0); + + /* "carray.to_py":127 + * cdef size_t i + * cdef object value + * t = PyTuple_New(length) # <<<<<<<<<<<<<< + * for i in range(length): + * value = v[i] + */ + __pyx_t_1 = PyTuple_New(__pyx_v_length); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 127, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_v_t = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + + /* "carray.to_py":128 + * cdef object value + * t = PyTuple_New(length) + * for i in range(length): # <<<<<<<<<<<<<< + * value = v[i] + * Py_INCREF(value) + */ + __pyx_t_2 = ((size_t)__pyx_v_length); + __pyx_t_3 = __pyx_t_2; + for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) { + __pyx_v_i = __pyx_t_4; + + /* "carray.to_py":129 + * t = PyTuple_New(length) + * for i in range(length): + * value = v[i] # <<<<<<<<<<<<<< + * Py_INCREF(value) + * PyTuple_SET_ITEM(t, i, value) + */ + __pyx_t_1 = PyFloat_FromDouble((__pyx_v_v[__pyx_v_i])); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 129, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_XDECREF_SET(__pyx_v_value, __pyx_t_1); + __pyx_t_1 = 0; + + /* "carray.to_py":130 + * for i in range(length): + * value = v[i] + * Py_INCREF(value) # <<<<<<<<<<<<<< + * PyTuple_SET_ITEM(t, i, value) + * return t + */ + Py_INCREF(__pyx_v_value); + + /* "carray.to_py":131 + * value = v[i] + * Py_INCREF(value) + * PyTuple_SET_ITEM(t, i, value) # <<<<<<<<<<<<<< + * return t + */ + PyTuple_SET_ITEM(__pyx_v_t, __pyx_v_i, __pyx_v_value); + } + + /* "carray.to_py":132 + * Py_INCREF(value) + * PyTuple_SET_ITEM(t, i, value) + * return t # <<<<<<<<<<<<<< + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_t); + __pyx_r = __pyx_v_t; + goto __pyx_L0; + + /* "carray.to_py":124 + * + * @cname("__Pyx_carray_to_tuple_double") + * cdef inline tuple __Pyx_carray_to_tuple_double(base_type *v, Py_ssize_t length): # <<<<<<<<<<<<<< + * cdef size_t i + * cdef object value + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("carray.to_py.__Pyx_carray_to_tuple_double", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_value); + __Pyx_XDECREF(__pyx_v_t); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "carray.from_py":77 + * + * @cname("__Pyx_carray_from_py_double") + * cdef int __Pyx_carray_from_py_double(object o, base_type *v, Py_ssize_t length) except -1: # <<<<<<<<<<<<<< + * cdef Py_ssize_t i = length + * try: + */ + +static int __Pyx_carray_from_py_double(PyObject *__pyx_v_o, double *__pyx_v_v, Py_ssize_t __pyx_v_length) { + Py_ssize_t __pyx_v_i; + PyObject *__pyx_v_item = NULL; + int __pyx_r; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + Py_ssize_t __pyx_t_4; + int __pyx_t_5; + int __pyx_t_6; + PyObject *__pyx_t_7 = NULL; + Py_ssize_t __pyx_t_8; + PyObject *(*__pyx_t_9)(PyObject *); + PyObject *__pyx_t_10 = NULL; + double __pyx_t_11; + char const *__pyx_t_12; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__Pyx_carray_from_py_double", 0); + + /* "carray.from_py":78 + * @cname("__Pyx_carray_from_py_double") + * cdef int __Pyx_carray_from_py_double(object o, base_type *v, Py_ssize_t length) except -1: + * cdef Py_ssize_t i = length # <<<<<<<<<<<<<< + * try: + * i = len(o) + */ + __pyx_v_i = __pyx_v_length; + + /* "carray.from_py":79 + * cdef int __Pyx_carray_from_py_double(object o, base_type *v, Py_ssize_t length) except -1: + * cdef Py_ssize_t i = length + * try: # <<<<<<<<<<<<<< + * i = len(o) + * except (TypeError, OverflowError): + */ + { + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3); + __Pyx_XGOTREF(__pyx_t_1); + __Pyx_XGOTREF(__pyx_t_2); + __Pyx_XGOTREF(__pyx_t_3); + /*try:*/ { + + /* "carray.from_py":80 + * cdef Py_ssize_t i = length + * try: + * i = len(o) # <<<<<<<<<<<<<< + * except (TypeError, OverflowError): + * pass + */ + __pyx_t_4 = PyObject_Length(__pyx_v_o); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(0, 80, __pyx_L3_error) + __pyx_v_i = __pyx_t_4; + + /* "carray.from_py":79 + * cdef int __Pyx_carray_from_py_double(object o, base_type *v, Py_ssize_t length) except -1: + * cdef Py_ssize_t i = length + * try: # <<<<<<<<<<<<<< + * i = len(o) + * except (TypeError, OverflowError): + */ + } + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + goto __pyx_L8_try_end; + __pyx_L3_error:; + + /* "carray.from_py":81 + * try: + * i = len(o) + * except (TypeError, OverflowError): # <<<<<<<<<<<<<< + * pass + * if i == length: + */ + __pyx_t_5 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_TypeError) || __Pyx_PyErr_ExceptionMatches(__pyx_builtin_OverflowError); + if (__pyx_t_5) { + __Pyx_ErrRestore(0,0,0); + goto __pyx_L4_exception_handled; + } + goto __pyx_L5_except_error; + __pyx_L5_except_error:; + + /* "carray.from_py":79 + * cdef int __Pyx_carray_from_py_double(object o, base_type *v, Py_ssize_t length) except -1: + * cdef Py_ssize_t i = length + * try: # <<<<<<<<<<<<<< + * i = len(o) + * except (TypeError, OverflowError): + */ + __Pyx_XGIVEREF(__pyx_t_1); + __Pyx_XGIVEREF(__pyx_t_2); + __Pyx_XGIVEREF(__pyx_t_3); + __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); + goto __pyx_L1_error; + __pyx_L4_exception_handled:; + __Pyx_XGIVEREF(__pyx_t_1); + __Pyx_XGIVEREF(__pyx_t_2); + __Pyx_XGIVEREF(__pyx_t_3); + __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); + __pyx_L8_try_end:; + } + + /* "carray.from_py":83 + * except (TypeError, OverflowError): + * pass + * if i == length: # <<<<<<<<<<<<<< + * for i, item in enumerate(o): + * if i >= length: + */ + __pyx_t_6 = ((__pyx_v_i == __pyx_v_length) != 0); + if (__pyx_t_6) { + + /* "carray.from_py":84 + * pass + * if i == length: + * for i, item in enumerate(o): # <<<<<<<<<<<<<< + * if i >= length: + * break + */ + __pyx_t_4 = 0; + if (likely(PyList_CheckExact(__pyx_v_o)) || PyTuple_CheckExact(__pyx_v_o)) { + __pyx_t_7 = __pyx_v_o; __Pyx_INCREF(__pyx_t_7); __pyx_t_8 = 0; + __pyx_t_9 = NULL; + } else { + __pyx_t_8 = -1; __pyx_t_7 = PyObject_GetIter(__pyx_v_o); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 84, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_9 = Py_TYPE(__pyx_t_7)->tp_iternext; if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 84, __pyx_L1_error) + } + for (;;) { + if (likely(!__pyx_t_9)) { + if (likely(PyList_CheckExact(__pyx_t_7))) { + if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_7)) break; + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_10 = PyList_GET_ITEM(__pyx_t_7, __pyx_t_8); __Pyx_INCREF(__pyx_t_10); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(0, 84, __pyx_L1_error) + #else + __pyx_t_10 = PySequence_ITEM(__pyx_t_7, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 84, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + #endif + } else { + if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_7)) break; + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_10 = PyTuple_GET_ITEM(__pyx_t_7, __pyx_t_8); __Pyx_INCREF(__pyx_t_10); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(0, 84, __pyx_L1_error) + #else + __pyx_t_10 = PySequence_ITEM(__pyx_t_7, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 84, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + #endif + } + } else { + __pyx_t_10 = __pyx_t_9(__pyx_t_7); + if (unlikely(!__pyx_t_10)) { + PyObject* exc_type = PyErr_Occurred(); + if (exc_type) { + if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); + else __PYX_ERR(0, 84, __pyx_L1_error) + } + break; + } + __Pyx_GOTREF(__pyx_t_10); + } + __Pyx_XDECREF_SET(__pyx_v_item, __pyx_t_10); + __pyx_t_10 = 0; + __pyx_v_i = __pyx_t_4; + __pyx_t_4 = (__pyx_t_4 + 1); + + /* "carray.from_py":85 + * if i == length: + * for i, item in enumerate(o): + * if i >= length: # <<<<<<<<<<<<<< + * break + * v[i] = item + */ + __pyx_t_6 = ((__pyx_v_i >= __pyx_v_length) != 0); + if (__pyx_t_6) { + + /* "carray.from_py":86 + * for i, item in enumerate(o): + * if i >= length: + * break # <<<<<<<<<<<<<< + * v[i] = item + * else: + */ + goto __pyx_L11_break; + + /* "carray.from_py":85 + * if i == length: + * for i, item in enumerate(o): + * if i >= length: # <<<<<<<<<<<<<< + * break + * v[i] = item + */ + } + + /* "carray.from_py":87 + * if i >= length: + * break + * v[i] = item # <<<<<<<<<<<<<< + * else: + * i += 1 # convert index to length + */ + __pyx_t_11 = __pyx_PyFloat_AsDouble(__pyx_v_item); if (unlikely((__pyx_t_11 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 87, __pyx_L1_error) + (__pyx_v_v[__pyx_v_i]) = __pyx_t_11; + + /* "carray.from_py":84 + * pass + * if i == length: + * for i, item in enumerate(o): # <<<<<<<<<<<<<< + * if i >= length: + * break + */ + } + /*else*/ { + + /* "carray.from_py":89 + * v[i] = item + * else: + * i += 1 # convert index to length # <<<<<<<<<<<<<< + * if i == length: + * return 0 + */ + __pyx_v_i = (__pyx_v_i + 1); + + /* "carray.from_py":90 + * else: + * i += 1 # convert index to length + * if i == length: # <<<<<<<<<<<<<< + * return 0 + * + */ + __pyx_t_6 = ((__pyx_v_i == __pyx_v_length) != 0); + if (__pyx_t_6) { + + /* "carray.from_py":91 + * i += 1 # convert index to length + * if i == length: + * return 0 # <<<<<<<<<<<<<< + * + * PyErr_Format( + */ + __pyx_r = 0; + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + goto __pyx_L0; + + /* "carray.from_py":90 + * else: + * i += 1 # convert index to length + * if i == length: # <<<<<<<<<<<<<< + * return 0 + * + */ + } + } + + /* "carray.from_py":84 + * pass + * if i == length: + * for i, item in enumerate(o): # <<<<<<<<<<<<<< + * if i >= length: + * break + */ + __pyx_L11_break:; + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + + /* "carray.from_py":83 + * except (TypeError, OverflowError): + * pass + * if i == length: # <<<<<<<<<<<<<< + * for i, item in enumerate(o): + * if i >= length: + */ + } + + /* "carray.from_py":96 + * IndexError, + * ("too many values found during array assignment, expected %zd" + * if i >= length else # <<<<<<<<<<<<<< + * "not enough values found during array assignment, expected %zd, got %zd"), + * length, i) + */ + if (((__pyx_v_i >= __pyx_v_length) != 0)) { + __pyx_t_12 = ((char const *)"too many values found during array assignment, expected %zd"); + } else { + __pyx_t_12 = ((char const *)"not enough values found during array assignment, expected %zd, got %zd"); + } + + /* "carray.from_py":93 + * return 0 + * + * PyErr_Format( # <<<<<<<<<<<<<< + * IndexError, + * ("too many values found during array assignment, expected %zd" + */ + __pyx_t_7 = PyErr_Format(__pyx_builtin_IndexError, __pyx_t_12, __pyx_v_length, __pyx_v_i); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 93, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + + /* "carray.from_py":77 + * + * @cname("__Pyx_carray_from_py_double") + * cdef int __Pyx_carray_from_py_double(object o, base_type *v, Py_ssize_t length) except -1: # <<<<<<<<<<<<<< + * cdef Py_ssize_t i = length + * try: + */ + + /* function exit code */ + __pyx_r = 0; + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_7); + __Pyx_XDECREF(__pyx_t_10); + __Pyx_AddTraceback("carray.from_py.__Pyx_carray_from_py_double", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_item); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "carray.to_py":112 + * + * @cname("__Pyx_carray_to_py_double___5b_0x265_5d_") + * cdef inline list __Pyx_carray_to_py_double___5b_0x265_5d_(base_type *v, Py_ssize_t length): # <<<<<<<<<<<<<< + * cdef size_t i + * cdef object value + */ + +static CYTHON_INLINE PyObject *__Pyx_carray_to_py_double___5b_0x265_5d_(double (*__pyx_v_v)[0x265], Py_ssize_t __pyx_v_length) { + size_t __pyx_v_i; + PyObject *__pyx_v_value = 0; + PyObject *__pyx_v_l = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + size_t __pyx_t_2; + size_t __pyx_t_3; + size_t __pyx_t_4; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__Pyx_carray_to_py_double___5b_0x265_5d_", 0); + + /* "carray.to_py":115 + * cdef size_t i + * cdef object value + * l = PyList_New(length) # <<<<<<<<<<<<<< + * for i in range(length): + * value = v[i] + */ + __pyx_t_1 = PyList_New(__pyx_v_length); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 115, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_v_l = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + + /* "carray.to_py":116 + * cdef object value + * l = PyList_New(length) + * for i in range(length): # <<<<<<<<<<<<<< + * value = v[i] + * Py_INCREF(value) + */ + __pyx_t_2 = ((size_t)__pyx_v_length); + __pyx_t_3 = __pyx_t_2; + for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) { + __pyx_v_i = __pyx_t_4; + + /* "carray.to_py":117 + * l = PyList_New(length) + * for i in range(length): + * value = v[i] # <<<<<<<<<<<<<< + * Py_INCREF(value) + * PyList_SET_ITEM(l, i, value) + */ + __pyx_t_1 = __Pyx_carray_to_py_double((__pyx_v_v[__pyx_v_i]), 0x265); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 117, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_XDECREF_SET(__pyx_v_value, __pyx_t_1); + __pyx_t_1 = 0; + + /* "carray.to_py":118 + * for i in range(length): + * value = v[i] + * Py_INCREF(value) # <<<<<<<<<<<<<< + * PyList_SET_ITEM(l, i, value) + * return l + */ + Py_INCREF(__pyx_v_value); + + /* "carray.to_py":119 + * value = v[i] + * Py_INCREF(value) + * PyList_SET_ITEM(l, i, value) # <<<<<<<<<<<<<< + * return l + * + */ + PyList_SET_ITEM(__pyx_v_l, __pyx_v_i, __pyx_v_value); + } + + /* "carray.to_py":120 + * Py_INCREF(value) + * PyList_SET_ITEM(l, i, value) + * return l # <<<<<<<<<<<<<< + * + * + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_l); + __pyx_r = __pyx_v_l; + goto __pyx_L0; + + /* "carray.to_py":112 + * + * @cname("__Pyx_carray_to_py_double___5b_0x265_5d_") + * cdef inline list __Pyx_carray_to_py_double___5b_0x265_5d_(base_type *v, Py_ssize_t length): # <<<<<<<<<<<<<< + * cdef size_t i + * cdef object value + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("carray.to_py.__Pyx_carray_to_py_double___5b_0x265_5d_", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_value); + __Pyx_XDECREF(__pyx_v_l); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "carray.to_py":124 + * + * @cname("__Pyx_carray_to_tuple_double___5b_0x265_5d_") + * cdef inline tuple __Pyx_carray_to_tuple_double___5b_0x265_5d_(base_type *v, Py_ssize_t length): # <<<<<<<<<<<<<< + * cdef size_t i + * cdef object value + */ + +static CYTHON_INLINE PyObject *__Pyx_carray_to_tuple_double___5b_0x265_5d_(double (*__pyx_v_v)[0x265], Py_ssize_t __pyx_v_length) { + size_t __pyx_v_i; + PyObject *__pyx_v_value = 0; + PyObject *__pyx_v_t = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + size_t __pyx_t_2; + size_t __pyx_t_3; + size_t __pyx_t_4; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__Pyx_carray_to_tuple_double___5b_0x265_5d_", 0); + + /* "carray.to_py":127 + * cdef size_t i + * cdef object value + * t = PyTuple_New(length) # <<<<<<<<<<<<<< + * for i in range(length): + * value = v[i] + */ + __pyx_t_1 = PyTuple_New(__pyx_v_length); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 127, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_v_t = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + + /* "carray.to_py":128 + * cdef object value + * t = PyTuple_New(length) + * for i in range(length): # <<<<<<<<<<<<<< + * value = v[i] + * Py_INCREF(value) + */ + __pyx_t_2 = ((size_t)__pyx_v_length); + __pyx_t_3 = __pyx_t_2; + for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) { + __pyx_v_i = __pyx_t_4; + + /* "carray.to_py":129 + * t = PyTuple_New(length) + * for i in range(length): + * value = v[i] # <<<<<<<<<<<<<< + * Py_INCREF(value) + * PyTuple_SET_ITEM(t, i, value) + */ + __pyx_t_1 = __Pyx_carray_to_py_double((__pyx_v_v[__pyx_v_i]), 0x265); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 129, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_XDECREF_SET(__pyx_v_value, __pyx_t_1); + __pyx_t_1 = 0; + + /* "carray.to_py":130 + * for i in range(length): + * value = v[i] + * Py_INCREF(value) # <<<<<<<<<<<<<< + * PyTuple_SET_ITEM(t, i, value) + * return t + */ + Py_INCREF(__pyx_v_value); + + /* "carray.to_py":131 + * value = v[i] + * Py_INCREF(value) + * PyTuple_SET_ITEM(t, i, value) # <<<<<<<<<<<<<< + * return t + */ + PyTuple_SET_ITEM(__pyx_v_t, __pyx_v_i, __pyx_v_value); + } + + /* "carray.to_py":132 + * Py_INCREF(value) + * PyTuple_SET_ITEM(t, i, value) + * return t # <<<<<<<<<<<<<< + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_t); + __pyx_r = __pyx_v_t; + goto __pyx_L0; + + /* "carray.to_py":124 + * + * @cname("__Pyx_carray_to_tuple_double___5b_0x265_5d_") + * cdef inline tuple __Pyx_carray_to_tuple_double___5b_0x265_5d_(base_type *v, Py_ssize_t length): # <<<<<<<<<<<<<< + * cdef size_t i + * cdef object value + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("carray.to_py.__Pyx_carray_to_tuple_double___5b_0x265_5d_", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_value); + __Pyx_XDECREF(__pyx_v_t); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "carray.from_py":77 + * + * @cname("__Pyx_carray_from_py_double___5b_0x265_5d_") + * cdef int __Pyx_carray_from_py_double___5b_0x265_5d_(object o, base_type *v, Py_ssize_t length) except -1: # <<<<<<<<<<<<<< + * cdef Py_ssize_t i = length + * try: + */ + +static int __Pyx_carray_from_py_double___5b_0x265_5d_(PyObject *__pyx_v_o, double (*__pyx_v_v)[0x265], Py_ssize_t __pyx_v_length) { + Py_ssize_t __pyx_v_i; + PyObject *__pyx_v_item = NULL; + int __pyx_r; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + Py_ssize_t __pyx_t_4; + int __pyx_t_5; + int __pyx_t_6; + PyObject *__pyx_t_7 = NULL; + Py_ssize_t __pyx_t_8; + PyObject *(*__pyx_t_9)(PyObject *); + PyObject *__pyx_t_10 = NULL; + double __pyx_t_11[0x265]; + char const *__pyx_t_12; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__Pyx_carray_from_py_double___5b_0x265_5d_", 0); + + /* "carray.from_py":78 + * @cname("__Pyx_carray_from_py_double___5b_0x265_5d_") + * cdef int __Pyx_carray_from_py_double___5b_0x265_5d_(object o, base_type *v, Py_ssize_t length) except -1: + * cdef Py_ssize_t i = length # <<<<<<<<<<<<<< + * try: + * i = len(o) + */ + __pyx_v_i = __pyx_v_length; + + /* "carray.from_py":79 + * cdef int __Pyx_carray_from_py_double___5b_0x265_5d_(object o, base_type *v, Py_ssize_t length) except -1: + * cdef Py_ssize_t i = length + * try: # <<<<<<<<<<<<<< + * i = len(o) + * except (TypeError, OverflowError): + */ + { + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3); + __Pyx_XGOTREF(__pyx_t_1); + __Pyx_XGOTREF(__pyx_t_2); + __Pyx_XGOTREF(__pyx_t_3); + /*try:*/ { + + /* "carray.from_py":80 + * cdef Py_ssize_t i = length + * try: + * i = len(o) # <<<<<<<<<<<<<< + * except (TypeError, OverflowError): + * pass + */ + __pyx_t_4 = PyObject_Length(__pyx_v_o); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(0, 80, __pyx_L3_error) + __pyx_v_i = __pyx_t_4; + + /* "carray.from_py":79 + * cdef int __Pyx_carray_from_py_double___5b_0x265_5d_(object o, base_type *v, Py_ssize_t length) except -1: + * cdef Py_ssize_t i = length + * try: # <<<<<<<<<<<<<< + * i = len(o) + * except (TypeError, OverflowError): + */ + } + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + goto __pyx_L8_try_end; + __pyx_L3_error:; + + /* "carray.from_py":81 + * try: + * i = len(o) + * except (TypeError, OverflowError): # <<<<<<<<<<<<<< + * pass + * if i == length: + */ + __pyx_t_5 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_TypeError) || __Pyx_PyErr_ExceptionMatches(__pyx_builtin_OverflowError); + if (__pyx_t_5) { + __Pyx_ErrRestore(0,0,0); + goto __pyx_L4_exception_handled; + } + goto __pyx_L5_except_error; + __pyx_L5_except_error:; + + /* "carray.from_py":79 + * cdef int __Pyx_carray_from_py_double___5b_0x265_5d_(object o, base_type *v, Py_ssize_t length) except -1: + * cdef Py_ssize_t i = length + * try: # <<<<<<<<<<<<<< + * i = len(o) + * except (TypeError, OverflowError): + */ + __Pyx_XGIVEREF(__pyx_t_1); + __Pyx_XGIVEREF(__pyx_t_2); + __Pyx_XGIVEREF(__pyx_t_3); + __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); + goto __pyx_L1_error; + __pyx_L4_exception_handled:; + __Pyx_XGIVEREF(__pyx_t_1); + __Pyx_XGIVEREF(__pyx_t_2); + __Pyx_XGIVEREF(__pyx_t_3); + __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); + __pyx_L8_try_end:; + } + + /* "carray.from_py":83 + * except (TypeError, OverflowError): + * pass + * if i == length: # <<<<<<<<<<<<<< + * for i, item in enumerate(o): + * if i >= length: + */ + __pyx_t_6 = ((__pyx_v_i == __pyx_v_length) != 0); + if (__pyx_t_6) { + + /* "carray.from_py":84 + * pass + * if i == length: + * for i, item in enumerate(o): # <<<<<<<<<<<<<< + * if i >= length: + * break + */ + __pyx_t_4 = 0; + if (likely(PyList_CheckExact(__pyx_v_o)) || PyTuple_CheckExact(__pyx_v_o)) { + __pyx_t_7 = __pyx_v_o; __Pyx_INCREF(__pyx_t_7); __pyx_t_8 = 0; + __pyx_t_9 = NULL; + } else { + __pyx_t_8 = -1; __pyx_t_7 = PyObject_GetIter(__pyx_v_o); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 84, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_9 = Py_TYPE(__pyx_t_7)->tp_iternext; if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 84, __pyx_L1_error) + } + for (;;) { + if (likely(!__pyx_t_9)) { + if (likely(PyList_CheckExact(__pyx_t_7))) { + if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_7)) break; + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_10 = PyList_GET_ITEM(__pyx_t_7, __pyx_t_8); __Pyx_INCREF(__pyx_t_10); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(0, 84, __pyx_L1_error) + #else + __pyx_t_10 = PySequence_ITEM(__pyx_t_7, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 84, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + #endif + } else { + if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_7)) break; + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_10 = PyTuple_GET_ITEM(__pyx_t_7, __pyx_t_8); __Pyx_INCREF(__pyx_t_10); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(0, 84, __pyx_L1_error) + #else + __pyx_t_10 = PySequence_ITEM(__pyx_t_7, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 84, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + #endif + } + } else { + __pyx_t_10 = __pyx_t_9(__pyx_t_7); + if (unlikely(!__pyx_t_10)) { + PyObject* exc_type = PyErr_Occurred(); + if (exc_type) { + if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); + else __PYX_ERR(0, 84, __pyx_L1_error) + } + break; + } + __Pyx_GOTREF(__pyx_t_10); + } + __Pyx_XDECREF_SET(__pyx_v_item, __pyx_t_10); + __pyx_t_10 = 0; + __pyx_v_i = __pyx_t_4; + __pyx_t_4 = (__pyx_t_4 + 1); + + /* "carray.from_py":85 + * if i == length: + * for i, item in enumerate(o): + * if i >= length: # <<<<<<<<<<<<<< + * break + * v[i] = item + */ + __pyx_t_6 = ((__pyx_v_i >= __pyx_v_length) != 0); + if (__pyx_t_6) { + + /* "carray.from_py":86 + * for i, item in enumerate(o): + * if i >= length: + * break # <<<<<<<<<<<<<< + * v[i] = item + * else: + */ + goto __pyx_L11_break; + + /* "carray.from_py":85 + * if i == length: + * for i, item in enumerate(o): + * if i >= length: # <<<<<<<<<<<<<< + * break + * v[i] = item + */ + } + + /* "carray.from_py":87 + * if i >= length: + * break + * v[i] = item # <<<<<<<<<<<<<< + * else: + * i += 1 # convert index to length + */ + if (unlikely(__Pyx_carray_from_py_double(__pyx_v_item, __pyx_t_11, 0x265) < 0)) __PYX_ERR(0, 87, __pyx_L1_error) + if (unlikely((0x265) != (0x265))) { + PyErr_Format(PyExc_ValueError, "Assignment to slice of wrong length, expected %" CYTHON_FORMAT_SSIZE_T "d, got %" CYTHON_FORMAT_SSIZE_T "d", (Py_ssize_t)(0x265), (Py_ssize_t)(0x265)); + __PYX_ERR(0, 87, __pyx_L1_error) + } + memcpy(&((__pyx_v_v[__pyx_v_i])[0]), __pyx_t_11, sizeof((__pyx_v_v[__pyx_v_i])[0]) * (0x265)); + + /* "carray.from_py":84 + * pass + * if i == length: + * for i, item in enumerate(o): # <<<<<<<<<<<<<< + * if i >= length: + * break + */ + } + /*else*/ { + + /* "carray.from_py":89 + * v[i] = item + * else: + * i += 1 # convert index to length # <<<<<<<<<<<<<< + * if i == length: + * return 0 + */ + __pyx_v_i = (__pyx_v_i + 1); + + /* "carray.from_py":90 + * else: + * i += 1 # convert index to length + * if i == length: # <<<<<<<<<<<<<< + * return 0 + * + */ + __pyx_t_6 = ((__pyx_v_i == __pyx_v_length) != 0); + if (__pyx_t_6) { + + /* "carray.from_py":91 + * i += 1 # convert index to length + * if i == length: + * return 0 # <<<<<<<<<<<<<< + * + * PyErr_Format( + */ + __pyx_r = 0; + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + goto __pyx_L0; + + /* "carray.from_py":90 + * else: + * i += 1 # convert index to length + * if i == length: # <<<<<<<<<<<<<< + * return 0 + * + */ + } + } + + /* "carray.from_py":84 + * pass + * if i == length: + * for i, item in enumerate(o): # <<<<<<<<<<<<<< + * if i >= length: + * break + */ + __pyx_L11_break:; + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + + /* "carray.from_py":83 + * except (TypeError, OverflowError): + * pass + * if i == length: # <<<<<<<<<<<<<< + * for i, item in enumerate(o): + * if i >= length: + */ + } + + /* "carray.from_py":96 + * IndexError, + * ("too many values found during array assignment, expected %zd" + * if i >= length else # <<<<<<<<<<<<<< + * "not enough values found during array assignment, expected %zd, got %zd"), + * length, i) + */ + if (((__pyx_v_i >= __pyx_v_length) != 0)) { + __pyx_t_12 = ((char const *)"too many values found during array assignment, expected %zd"); + } else { + __pyx_t_12 = ((char const *)"not enough values found during array assignment, expected %zd, got %zd"); + } + + /* "carray.from_py":93 + * return 0 + * + * PyErr_Format( # <<<<<<<<<<<<<< + * IndexError, + * ("too many values found during array assignment, expected %zd" + */ + __pyx_t_7 = PyErr_Format(__pyx_builtin_IndexError, __pyx_t_12, __pyx_v_length, __pyx_v_i); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 93, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + + /* "carray.from_py":77 + * + * @cname("__Pyx_carray_from_py_double___5b_0x265_5d_") + * cdef int __Pyx_carray_from_py_double___5b_0x265_5d_(object o, base_type *v, Py_ssize_t length) except -1: # <<<<<<<<<<<<<< + * cdef Py_ssize_t i = length + * try: + */ + + /* function exit code */ + __pyx_r = 0; + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_7); + __Pyx_XDECREF(__pyx_t_10); + __Pyx_AddTraceback("carray.from_py.__Pyx_carray_from_py_double___5b_0x265_5d_", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_item); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_tp_new_10euclidemu2_PyCosmology(PyTypeObject *t, PyObject *a, PyObject *k) { + PyObject *o; + if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) { + o = (*t->tp_alloc)(t, 0); + } else { + o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0); + } + if (unlikely(!o)) return 0; + if (unlikely(__pyx_pw_10euclidemu2_11PyCosmology_1__cinit__(o, a, k) < 0)) goto bad; + return o; + bad: + Py_DECREF(o); o = 0; + return NULL; +} + +static void __pyx_tp_dealloc_10euclidemu2_PyCosmology(PyObject *o) { + #if CYTHON_USE_TP_FINALIZE + if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && (!PyType_IS_GC(Py_TYPE(o)) || !_PyGC_FINALIZED(o))) { + if (PyObject_CallFinalizerFromDealloc(o)) return; + } + #endif + { + PyObject *etype, *eval, *etb; + PyErr_Fetch(&etype, &eval, &etb); + __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1); + __pyx_pw_10euclidemu2_11PyCosmology_5__dealloc__(o); + __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1); + PyErr_Restore(etype, eval, etb); + } + (*Py_TYPE(o)->tp_free)(o); +} + +static PyObject *__pyx_getprop_10euclidemu2_11PyCosmology__free_inst(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_10euclidemu2_11PyCosmology_10_free_inst_1__get__(o); +} + +static int __pyx_setprop_10euclidemu2_11PyCosmology__free_inst(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { + if (v) { + return __pyx_pw_10euclidemu2_11PyCosmology_10_free_inst_3__set__(o, v); + } + else { + PyErr_SetString(PyExc_NotImplementedError, "__del__"); + return -1; + } +} + +static PyMethodDef __pyx_methods_10euclidemu2_PyCosmology[] = { + {"__reduce_cython__", (PyCFunction)__pyx_pw_10euclidemu2_11PyCosmology_7__reduce_cython__, METH_NOARGS, 0}, + {"__setstate_cython__", (PyCFunction)__pyx_pw_10euclidemu2_11PyCosmology_9__setstate_cython__, METH_O, 0}, + {0, 0, 0, 0} +}; + +static struct PyGetSetDef __pyx_getsets_10euclidemu2_PyCosmology[] = { + {(char *)"_free_inst", __pyx_getprop_10euclidemu2_11PyCosmology__free_inst, __pyx_setprop_10euclidemu2_11PyCosmology__free_inst, (char *)0, 0}, + {0, 0, 0, 0, 0} +}; + +static PyTypeObject __pyx_type_10euclidemu2_PyCosmology = { + PyVarObject_HEAD_INIT(0, 0) + "euclidemu2.PyCosmology", /*tp_name*/ + sizeof(struct __pyx_obj_10euclidemu2_PyCosmology), /*tp_basicsize*/ + 0, /*tp_itemsize*/ + __pyx_tp_dealloc_10euclidemu2_PyCosmology, /*tp_dealloc*/ + #if PY_VERSION_HEX < 0x030800b4 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030800b4 + 0, /*tp_vectorcall_offset*/ + #endif + 0, /*tp_getattr*/ + 0, /*tp_setattr*/ + #if PY_MAJOR_VERSION < 3 + 0, /*tp_compare*/ + #endif + #if PY_MAJOR_VERSION >= 3 + 0, /*tp_as_async*/ + #endif + 0, /*tp_repr*/ + 0, /*tp_as_number*/ + 0, /*tp_as_sequence*/ + 0, /*tp_as_mapping*/ + 0, /*tp_hash*/ + 0, /*tp_call*/ + 0, /*tp_str*/ + 0, /*tp_getattro*/ + 0, /*tp_setattro*/ + 0, /*tp_as_buffer*/ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/ + 0, /*tp_doc*/ + 0, /*tp_traverse*/ + 0, /*tp_clear*/ + 0, /*tp_richcompare*/ + 0, /*tp_weaklistoffset*/ + 0, /*tp_iter*/ + 0, /*tp_iternext*/ + __pyx_methods_10euclidemu2_PyCosmology, /*tp_methods*/ + 0, /*tp_members*/ + __pyx_getsets_10euclidemu2_PyCosmology, /*tp_getset*/ + 0, /*tp_base*/ + 0, /*tp_dict*/ + 0, /*tp_descr_get*/ + 0, /*tp_descr_set*/ + 0, /*tp_dictoffset*/ + __pyx_pw_10euclidemu2_11PyCosmology_3__init__, /*tp_init*/ + 0, /*tp_alloc*/ + __pyx_tp_new_10euclidemu2_PyCosmology, /*tp_new*/ + 0, /*tp_free*/ + 0, /*tp_is_gc*/ + 0, /*tp_bases*/ + 0, /*tp_mro*/ + 0, /*tp_cache*/ + 0, /*tp_subclasses*/ + 0, /*tp_weaklist*/ + 0, /*tp_del*/ + 0, /*tp_version_tag*/ + #if PY_VERSION_HEX >= 0x030400a1 + 0, /*tp_finalize*/ + #endif + #if PY_VERSION_HEX >= 0x030800b1 + 0, /*tp_vectorcall*/ + #endif + #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 + 0, /*tp_print*/ + #endif +}; + +static PyObject *__pyx_tp_new_10euclidemu2_PyEuclidEmulator(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { + PyObject *o; + if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) { + o = (*t->tp_alloc)(t, 0); + } else { + o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0); + } + if (unlikely(!o)) return 0; + if (unlikely(__pyx_pw_10euclidemu2_16PyEuclidEmulator_1__cinit__(o, __pyx_empty_tuple, NULL) < 0)) goto bad; + return o; + bad: + Py_DECREF(o); o = 0; + return NULL; +} + +static void __pyx_tp_dealloc_10euclidemu2_PyEuclidEmulator(PyObject *o) { + #if CYTHON_USE_TP_FINALIZE + if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && (!PyType_IS_GC(Py_TYPE(o)) || !_PyGC_FINALIZED(o))) { + if (PyObject_CallFinalizerFromDealloc(o)) return; + } + #endif + (*Py_TYPE(o)->tp_free)(o); +} + +static PyObject *__pyx_getprop_10euclidemu2_16PyEuclidEmulator_kvec(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_10euclidemu2_16PyEuclidEmulator_4kvec_1__get__(o); +} + +static int __pyx_setprop_10euclidemu2_16PyEuclidEmulator_kvec(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { + if (v) { + return __pyx_pw_10euclidemu2_16PyEuclidEmulator_4kvec_3__set__(o, v); + } + else { + PyErr_SetString(PyExc_NotImplementedError, "__del__"); + return -1; + } +} + +static PyObject *__pyx_getprop_10euclidemu2_16PyEuclidEmulator_Bvec(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_10euclidemu2_16PyEuclidEmulator_4Bvec_1__get__(o); +} + +static int __pyx_setprop_10euclidemu2_16PyEuclidEmulator_Bvec(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { + if (v) { + return __pyx_pw_10euclidemu2_16PyEuclidEmulator_4Bvec_3__set__(o, v); + } + else { + PyErr_SetString(PyExc_NotImplementedError, "__del__"); + return -1; + } +} + +static PyMethodDef __pyx_methods_10euclidemu2_PyEuclidEmulator[] = { + {"compute_nlc", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_10euclidemu2_16PyEuclidEmulator_3compute_nlc, METH_VARARGS|METH_KEYWORDS, 0}, + {"write_nlc2file", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_10euclidemu2_16PyEuclidEmulator_5write_nlc2file, METH_VARARGS|METH_KEYWORDS, 0}, + {"__reduce_cython__", (PyCFunction)__pyx_pw_10euclidemu2_16PyEuclidEmulator_7__reduce_cython__, METH_NOARGS, 0}, + {"__setstate_cython__", (PyCFunction)__pyx_pw_10euclidemu2_16PyEuclidEmulator_9__setstate_cython__, METH_O, 0}, + {0, 0, 0, 0} +}; + +static struct PyGetSetDef __pyx_getsets_10euclidemu2_PyEuclidEmulator[] = { + {(char *)"kvec", __pyx_getprop_10euclidemu2_16PyEuclidEmulator_kvec, __pyx_setprop_10euclidemu2_16PyEuclidEmulator_kvec, (char *)0, 0}, + {(char *)"Bvec", __pyx_getprop_10euclidemu2_16PyEuclidEmulator_Bvec, __pyx_setprop_10euclidemu2_16PyEuclidEmulator_Bvec, (char *)0, 0}, + {0, 0, 0, 0, 0} +}; + +static PyTypeObject __pyx_type_10euclidemu2_PyEuclidEmulator = { + PyVarObject_HEAD_INIT(0, 0) + "euclidemu2.PyEuclidEmulator", /*tp_name*/ + sizeof(struct __pyx_obj_10euclidemu2_PyEuclidEmulator), /*tp_basicsize*/ + 0, /*tp_itemsize*/ + __pyx_tp_dealloc_10euclidemu2_PyEuclidEmulator, /*tp_dealloc*/ + #if PY_VERSION_HEX < 0x030800b4 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030800b4 + 0, /*tp_vectorcall_offset*/ + #endif + 0, /*tp_getattr*/ + 0, /*tp_setattr*/ + #if PY_MAJOR_VERSION < 3 + 0, /*tp_compare*/ + #endif + #if PY_MAJOR_VERSION >= 3 + 0, /*tp_as_async*/ + #endif + 0, /*tp_repr*/ + 0, /*tp_as_number*/ + 0, /*tp_as_sequence*/ + 0, /*tp_as_mapping*/ + 0, /*tp_hash*/ + 0, /*tp_call*/ + 0, /*tp_str*/ + 0, /*tp_getattro*/ + 0, /*tp_setattro*/ + 0, /*tp_as_buffer*/ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/ + 0, /*tp_doc*/ + 0, /*tp_traverse*/ + 0, /*tp_clear*/ + 0, /*tp_richcompare*/ + 0, /*tp_weaklistoffset*/ + 0, /*tp_iter*/ + 0, /*tp_iternext*/ + __pyx_methods_10euclidemu2_PyEuclidEmulator, /*tp_methods*/ + 0, /*tp_members*/ + __pyx_getsets_10euclidemu2_PyEuclidEmulator, /*tp_getset*/ + 0, /*tp_base*/ + 0, /*tp_dict*/ + 0, /*tp_descr_get*/ + 0, /*tp_descr_set*/ + 0, /*tp_dictoffset*/ + 0, /*tp_init*/ + 0, /*tp_alloc*/ + __pyx_tp_new_10euclidemu2_PyEuclidEmulator, /*tp_new*/ + 0, /*tp_free*/ + 0, /*tp_is_gc*/ + 0, /*tp_bases*/ + 0, /*tp_mro*/ + 0, /*tp_cache*/ + 0, /*tp_subclasses*/ + 0, /*tp_weaklist*/ + 0, /*tp_del*/ + 0, /*tp_version_tag*/ + #if PY_VERSION_HEX >= 0x030400a1 + 0, /*tp_finalize*/ + #endif + #if PY_VERSION_HEX >= 0x030800b1 + 0, /*tp_vectorcall*/ + #endif + #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 + 0, /*tp_print*/ + #endif +}; + +static PyMethodDef __pyx_methods[] = { + {0, 0, 0, 0} +}; + +#if PY_MAJOR_VERSION >= 3 +#if CYTHON_PEP489_MULTI_PHASE_INIT +static PyObject* __pyx_pymod_create(PyObject *spec, PyModuleDef *def); /*proto*/ +static int __pyx_pymod_exec_euclidemu2(PyObject* module); /*proto*/ +static PyModuleDef_Slot __pyx_moduledef_slots[] = { + {Py_mod_create, (void*)__pyx_pymod_create}, + {Py_mod_exec, (void*)__pyx_pymod_exec_euclidemu2}, + {0, NULL} +}; +#endif + +static struct PyModuleDef __pyx_moduledef = { + PyModuleDef_HEAD_INIT, + "euclidemu2", + 0, /* m_doc */ + #if CYTHON_PEP489_MULTI_PHASE_INIT + 0, /* m_size */ + #else + -1, /* m_size */ + #endif + __pyx_methods /* m_methods */, + #if CYTHON_PEP489_MULTI_PHASE_INIT + __pyx_moduledef_slots, /* m_slots */ + #else + NULL, /* m_reload */ + #endif + NULL, /* m_traverse */ + NULL, /* m_clear */ + NULL /* m_free */ +}; +#endif +#ifndef CYTHON_SMALL_CODE +#if defined(__clang__) + #define CYTHON_SMALL_CODE +#elif defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)) + #define CYTHON_SMALL_CODE __attribute__((cold)) +#else + #define CYTHON_SMALL_CODE +#endif +#endif + +static __Pyx_StringTabEntry __pyx_string_tab[] = { + {&__pyx_n_s_A_s, __pyx_k_A_s, sizeof(__pyx_k_A_s), 0, 0, 1, 1}, + {&__pyx_n_u_A_s, __pyx_k_A_s, sizeof(__pyx_k_A_s), 0, 1, 0, 1}, + {&__pyx_n_s_A_s_not_in_range, __pyx_k_A_s_not_in_range, sizeof(__pyx_k_A_s_not_in_range), 0, 0, 1, 1}, + {&__pyx_n_s_A_s_range, __pyx_k_A_s_range, sizeof(__pyx_k_A_s_range), 0, 0, 1, 1}, + {&__pyx_n_u_As, __pyx_k_As, sizeof(__pyx_k_As), 0, 1, 0, 1}, + {&__pyx_n_s_Bvec, __pyx_k_Bvec, sizeof(__pyx_k_Bvec), 0, 0, 1, 1}, + {&__pyx_n_s_CubicSpline, __pyx_k_CubicSpline, sizeof(__pyx_k_CubicSpline), 0, 0, 1, 1}, + {&__pyx_n_s_CubicSpline_2, __pyx_k_CubicSpline_2, sizeof(__pyx_k_CubicSpline_2), 0, 0, 1, 1}, + {&__pyx_kp_u_EuclidEmulator2_allows_only_reds, __pyx_k_EuclidEmulator2_allows_only_reds, sizeof(__pyx_k_EuclidEmulator2_allows_only_reds), 0, 1, 0, 0}, + {&__pyx_kp_u_EuclidEmulator2_emulates_the_non, __pyx_k_EuclidEmulator2_emulates_the_non, sizeof(__pyx_k_EuclidEmulator2_emulates_the_non), 0, 1, 0, 0}, + {&__pyx_kp_u_EuclidEmulator2_emulates_the_non_2, __pyx_k_EuclidEmulator2_emulates_the_non_2, sizeof(__pyx_k_EuclidEmulator2_emulates_the_non_2), 0, 1, 0, 0}, + {&__pyx_n_u_H0, __pyx_k_H0, sizeof(__pyx_k_H0), 0, 1, 0, 1}, + {&__pyx_n_s_IndexError, __pyx_k_IndexError, sizeof(__pyx_k_IndexError), 0, 0, 1, 1}, + {&__pyx_kp_u_Missing_parameter_A_s_or_ln10_10, __pyx_k_Missing_parameter_A_s_or_ln10_10, sizeof(__pyx_k_Missing_parameter_A_s_or_ln10_10), 0, 1, 0, 0}, + {&__pyx_kp_u_Missing_parameter_Omega_b_Can_t, __pyx_k_Missing_parameter_Omega_b_Can_t, sizeof(__pyx_k_Missing_parameter_Omega_b_Can_t), 0, 1, 0, 0}, + {&__pyx_kp_u_Missing_parameter_Omega_m_or_Ome, __pyx_k_Missing_parameter_Omega_m_or_Ome, sizeof(__pyx_k_Missing_parameter_Omega_m_or_Ome), 0, 1, 0, 0}, + {&__pyx_kp_u_Missing_parameter_h_Can_t_procee, __pyx_k_Missing_parameter_h_Can_t_procee, sizeof(__pyx_k_Missing_parameter_h_Can_t_procee), 0, 1, 0, 0}, + {&__pyx_kp_u_Missing_parameter_m_ncdm_Can_t_p, __pyx_k_Missing_parameter_m_ncdm_Can_t_p, sizeof(__pyx_k_Missing_parameter_m_ncdm_Can_t_p), 0, 1, 0, 0}, + {&__pyx_kp_u_Missing_parameter_n_s_Can_t_proc, __pyx_k_Missing_parameter_n_s_Can_t_proc, sizeof(__pyx_k_Missing_parameter_n_s_Can_t_proc), 0, 1, 0, 0}, + {&__pyx_kp_u_Missing_parameter_w0_Will_set_to, __pyx_k_Missing_parameter_w0_Will_set_to, sizeof(__pyx_k_Missing_parameter_w0_Will_set_to), 0, 1, 0, 0}, + {&__pyx_kp_u_Missing_parameter_wa_Will_set_to, __pyx_k_Missing_parameter_wa_Will_set_to, sizeof(__pyx_k_Missing_parameter_wa_Will_set_to), 0, 1, 0, 0}, + {&__pyx_n_s_Om_b, __pyx_k_Om_b, sizeof(__pyx_k_Om_b), 0, 0, 1, 1}, + {&__pyx_n_s_Om_cdm, __pyx_k_Om_cdm, sizeof(__pyx_k_Om_cdm), 0, 0, 1, 1}, + {&__pyx_n_s_Om_m, __pyx_k_Om_m, sizeof(__pyx_k_Om_m), 0, 0, 1, 1}, + {&__pyx_n_u_Omb, __pyx_k_Omb, sizeof(__pyx_k_Omb), 0, 1, 0, 1}, + {&__pyx_n_u_Omc, __pyx_k_Omc, sizeof(__pyx_k_Omc), 0, 1, 0, 1}, + {&__pyx_n_s_Omega_b, __pyx_k_Omega_b, sizeof(__pyx_k_Omega_b), 0, 0, 1, 1}, + {&__pyx_n_u_Omega_b, __pyx_k_Omega_b, sizeof(__pyx_k_Omega_b), 0, 1, 0, 1}, + {&__pyx_n_u_Omega_cdm, __pyx_k_Omega_cdm, sizeof(__pyx_k_Omega_cdm), 0, 1, 0, 1}, + {&__pyx_n_s_Omega_m, __pyx_k_Omega_m, sizeof(__pyx_k_Omega_m), 0, 0, 1, 1}, + {&__pyx_n_u_Omega_m, __pyx_k_Omega_m, sizeof(__pyx_k_Omega_m), 0, 1, 0, 1}, + {&__pyx_n_u_Omm, __pyx_k_Omm, sizeof(__pyx_k_Omm), 0, 1, 0, 1}, + {&__pyx_n_s_OverflowError, __pyx_k_OverflowError, sizeof(__pyx_k_OverflowError), 0, 0, 1, 1}, + {&__pyx_kp_u_Parameter_range_violation_A_s_is, __pyx_k_Parameter_range_violation_A_s_is, sizeof(__pyx_k_Parameter_range_violation_A_s_is), 0, 1, 0, 0}, + {&__pyx_kp_u_Parameter_range_violation_Omega, __pyx_k_Parameter_range_violation_Omega, sizeof(__pyx_k_Parameter_range_violation_Omega), 0, 1, 0, 0}, + {&__pyx_kp_u_Parameter_range_violation_Omega_2, __pyx_k_Parameter_range_violation_Omega_2, sizeof(__pyx_k_Parameter_range_violation_Omega_2), 0, 1, 0, 0}, + {&__pyx_kp_u_Parameter_range_violation_h_is_s, __pyx_k_Parameter_range_violation_h_is_s, sizeof(__pyx_k_Parameter_range_violation_h_is_s), 0, 1, 0, 0}, + {&__pyx_kp_u_Parameter_range_violation_m_ncdm, __pyx_k_Parameter_range_violation_m_ncdm, sizeof(__pyx_k_Parameter_range_violation_m_ncdm), 0, 1, 0, 0}, + {&__pyx_kp_u_Parameter_range_violation_n_s_is, __pyx_k_Parameter_range_violation_n_s_is, sizeof(__pyx_k_Parameter_range_violation_n_s_is), 0, 1, 0, 0}, + {&__pyx_kp_u_Parameter_range_violation_w_0_is, __pyx_k_Parameter_range_violation_w_0_is, sizeof(__pyx_k_Parameter_range_violation_w_0_is), 0, 1, 0, 0}, + {&__pyx_kp_u_Parameter_range_violation_w_a_is, __pyx_k_Parameter_range_violation_w_a_is, sizeof(__pyx_k_Parameter_range_violation_w_a_is), 0, 1, 0, 0}, + {&__pyx_n_s_PyCosmology, __pyx_k_PyCosmology, sizeof(__pyx_k_PyCosmology), 0, 0, 1, 1}, + {&__pyx_n_s_PyEuclidEmulator, __pyx_k_PyEuclidEmulator, sizeof(__pyx_k_PyEuclidEmulator), 0, 0, 1, 1}, + {&__pyx_n_s_Sum_m_nu, __pyx_k_Sum_m_nu, sizeof(__pyx_k_Sum_m_nu), 0, 0, 1, 1}, + {&__pyx_kp_u_The_cosmological_parameters_must, __pyx_k_The_cosmological_parameters_must, sizeof(__pyx_k_The_cosmological_parameters_must), 0, 1, 0, 0}, + {&__pyx_n_s_TypeError, __pyx_k_TypeError, sizeof(__pyx_k_TypeError), 0, 0, 1, 1}, + {&__pyx_n_s_ValueError, __pyx_k_ValueError, sizeof(__pyx_k_ValueError), 0, 0, 1, 1}, + {&__pyx_n_s_any, __pyx_k_any, sizeof(__pyx_k_any), 0, 0, 1, 1}, + {&__pyx_kp_u_arg_A_s_wrong_type, __pyx_k_arg_A_s_wrong_type, sizeof(__pyx_k_arg_A_s_wrong_type), 0, 1, 0, 0}, + {&__pyx_kp_u_arg_Omega_b_wrong_type, __pyx_k_arg_Omega_b_wrong_type, sizeof(__pyx_k_arg_Omega_b_wrong_type), 0, 1, 0, 0}, + {&__pyx_kp_u_arg_Omega_m_wrong_type, __pyx_k_arg_Omega_m_wrong_type, sizeof(__pyx_k_arg_Omega_m_wrong_type), 0, 1, 0, 0}, + {&__pyx_kp_u_arg_Sum_m_nu_wrong_type, __pyx_k_arg_Sum_m_nu_wrong_type, sizeof(__pyx_k_arg_Sum_m_nu_wrong_type), 0, 1, 0, 0}, + {&__pyx_kp_u_arg_h_wrong_type, __pyx_k_arg_h_wrong_type, sizeof(__pyx_k_arg_h_wrong_type), 0, 1, 0, 0}, + {&__pyx_kp_u_arg_n_s_wrong_type, __pyx_k_arg_n_s_wrong_type, sizeof(__pyx_k_arg_n_s_wrong_type), 0, 1, 0, 0}, + {&__pyx_kp_u_arg_w_0_wrong_type, __pyx_k_arg_w_0_wrong_type, sizeof(__pyx_k_arg_w_0_wrong_type), 0, 1, 0, 0}, + {&__pyx_kp_u_arg_w_a_wrong_type, __pyx_k_arg_w_a_wrong_type, sizeof(__pyx_k_arg_w_a_wrong_type), 0, 1, 0, 0}, + {&__pyx_n_s_asarray, __pyx_k_asarray, sizeof(__pyx_k_asarray), 0, 0, 1, 1}, + {&__pyx_n_s_b_extrap, __pyx_k_b_extrap, sizeof(__pyx_k_b_extrap), 0, 0, 1, 1}, + {&__pyx_n_s_boost, __pyx_k_boost, sizeof(__pyx_k_boost), 0, 0, 1, 1}, + {&__pyx_n_s_bvals, __pyx_k_bvals, sizeof(__pyx_k_bvals), 0, 0, 1, 1}, + {&__pyx_n_s_check_param_range, __pyx_k_check_param_range, sizeof(__pyx_k_check_param_range), 0, 0, 1, 1}, + {&__pyx_n_s_class_pars_dict, __pyx_k_class_pars_dict, sizeof(__pyx_k_class_pars_dict), 0, 0, 1, 1}, + {&__pyx_n_s_cline_in_traceback, __pyx_k_cline_in_traceback, sizeof(__pyx_k_cline_in_traceback), 0, 0, 1, 1}, + {&__pyx_n_s_compute_nlc, __pyx_k_compute_nlc, sizeof(__pyx_k_compute_nlc), 0, 0, 1, 1}, + {&__pyx_n_s_concatenate, __pyx_k_concatenate, sizeof(__pyx_k_concatenate), 0, 0, 1, 1}, + {&__pyx_n_s_convert_to_emu, __pyx_k_convert_to_emu, sizeof(__pyx_k_convert_to_emu), 0, 0, 1, 1}, + {&__pyx_n_s_cosmo, __pyx_k_cosmo, sizeof(__pyx_k_cosmo), 0, 0, 1, 1}, + {&__pyx_n_s_cosmo_par, __pyx_k_cosmo_par, sizeof(__pyx_k_cosmo_par), 0, 0, 1, 1}, + {&__pyx_n_s_cosmo_par_in, __pyx_k_cosmo_par_in, sizeof(__pyx_k_cosmo_par_in), 0, 0, 1, 1}, + {&__pyx_n_s_csm, __pyx_k_csm, sizeof(__pyx_k_csm), 0, 0, 1, 1}, + {&__pyx_n_s_custom_k_above, __pyx_k_custom_k_above, sizeof(__pyx_k_custom_k_above), 0, 0, 1, 1}, + {&__pyx_n_s_custom_k_below, __pyx_k_custom_k_below, sizeof(__pyx_k_custom_k_below), 0, 0, 1, 1}, + {&__pyx_n_s_custom_k_within_range, __pyx_k_custom_k_within_range, sizeof(__pyx_k_custom_k_within_range), 0, 0, 1, 1}, + {&__pyx_n_s_custom_kvec, __pyx_k_custom_kvec, sizeof(__pyx_k_custom_kvec), 0, 0, 1, 1}, + {&__pyx_n_s_do_extrapolate_above, __pyx_k_do_extrapolate_above, sizeof(__pyx_k_do_extrapolate_above), 0, 0, 1, 1}, + {&__pyx_n_s_do_extrapolate_below, __pyx_k_do_extrapolate_below, sizeof(__pyx_k_do_extrapolate_below), 0, 0, 1, 1}, + {&__pyx_n_s_ee2, __pyx_k_ee2, sizeof(__pyx_k_ee2), 0, 0, 1, 1}, + {&__pyx_n_s_emu_pars_dict, __pyx_k_emu_pars_dict, sizeof(__pyx_k_emu_pars_dict), 0, 0, 1, 1}, + {&__pyx_n_s_enumerate, __pyx_k_enumerate, sizeof(__pyx_k_enumerate), 0, 0, 1, 1}, + {&__pyx_n_s_euclidemu2, __pyx_k_euclidemu2, sizeof(__pyx_k_euclidemu2), 0, 0, 1, 1}, + {&__pyx_n_s_exit, __pyx_k_exit, sizeof(__pyx_k_exit), 0, 0, 1, 1}, + {&__pyx_n_s_exp, __pyx_k_exp, sizeof(__pyx_k_exp), 0, 0, 1, 1}, + {&__pyx_n_s_filename, __pyx_k_filename, sizeof(__pyx_k_filename), 0, 0, 1, 1}, + {&__pyx_n_s_get_boost, __pyx_k_get_boost, sizeof(__pyx_k_get_boost), 0, 0, 1, 1}, + {&__pyx_n_s_getstate, __pyx_k_getstate, sizeof(__pyx_k_getstate), 0, 0, 1, 1}, + {&__pyx_n_s_h, __pyx_k_h, sizeof(__pyx_k_h), 0, 0, 1, 1}, + {&__pyx_n_u_h, __pyx_k_h, sizeof(__pyx_k_h), 0, 1, 0, 1}, + {&__pyx_n_s_h_not_in_range, __pyx_k_h_not_in_range, sizeof(__pyx_k_h_not_in_range), 0, 0, 1, 1}, + {&__pyx_n_s_h_range, __pyx_k_h_range, sizeof(__pyx_k_h_range), 0, 0, 1, 1}, + {&__pyx_n_s_i, __pyx_k_i, sizeof(__pyx_k_i), 0, 0, 1, 1}, + {&__pyx_n_s_import, __pyx_k_import, sizeof(__pyx_k_import), 0, 0, 1, 1}, + {&__pyx_n_s_k, __pyx_k_k, sizeof(__pyx_k_k), 0, 0, 1, 1}, + {&__pyx_n_s_k_shape, __pyx_k_k_shape, sizeof(__pyx_k_k_shape), 0, 0, 1, 1}, + {&__pyx_n_s_kvals, __pyx_k_kvals, sizeof(__pyx_k_kvals), 0, 0, 1, 1}, + {&__pyx_n_s_kvec, __pyx_k_kvec, sizeof(__pyx_k_kvec), 0, 0, 1, 1}, + {&__pyx_n_s_l, __pyx_k_l, sizeof(__pyx_k_l), 0, 0, 1, 1}, + {&__pyx_n_s_len_kvals, __pyx_k_len_kvals, sizeof(__pyx_k_len_kvals), 0, 0, 1, 1}, + {&__pyx_n_s_len_redshifts, __pyx_k_len_redshifts, sizeof(__pyx_k_len_redshifts), 0, 0, 1, 1}, + {&__pyx_kp_u_ln10_10_A_s, __pyx_k_ln10_10_A_s, sizeof(__pyx_k_ln10_10_A_s), 0, 1, 0, 0}, + {&__pyx_n_s_log10, __pyx_k_log10, sizeof(__pyx_k_log10), 0, 0, 1, 1}, + {&__pyx_n_s_lower_mask, __pyx_k_lower_mask, sizeof(__pyx_k_lower_mask), 0, 0, 1, 1}, + {&__pyx_n_s_m_ncdm, __pyx_k_m_ncdm, sizeof(__pyx_k_m_ncdm), 0, 0, 1, 1}, + {&__pyx_n_u_m_ncdm, __pyx_k_m_ncdm, sizeof(__pyx_k_m_ncdm), 0, 1, 0, 1}, + {&__pyx_n_u_m_nu, __pyx_k_m_nu, sizeof(__pyx_k_m_nu), 0, 1, 0, 1}, + {&__pyx_n_s_m_nu_not_in_range, __pyx_k_m_nu_not_in_range, sizeof(__pyx_k_m_nu_not_in_range), 0, 0, 1, 1}, + {&__pyx_n_s_m_nu_range, __pyx_k_m_nu_range, sizeof(__pyx_k_m_nu_range), 0, 0, 1, 1}, + {&__pyx_n_s_main, __pyx_k_main, sizeof(__pyx_k_main), 0, 0, 1, 1}, + {&__pyx_n_s_mask, __pyx_k_mask, sizeof(__pyx_k_mask), 0, 0, 1, 1}, + {&__pyx_n_s_max, __pyx_k_max, sizeof(__pyx_k_max), 0, 0, 1, 1}, + {&__pyx_n_s_min, __pyx_k_min, sizeof(__pyx_k_min), 0, 0, 1, 1}, + {&__pyx_n_u_mnu, __pyx_k_mnu, sizeof(__pyx_k_mnu), 0, 1, 0, 1}, + {&__pyx_n_s_n_redshift, __pyx_k_n_redshift, sizeof(__pyx_k_n_redshift), 0, 0, 1, 1}, + {&__pyx_n_s_n_s, __pyx_k_n_s, sizeof(__pyx_k_n_s), 0, 0, 1, 1}, + {&__pyx_n_u_n_s, __pyx_k_n_s, sizeof(__pyx_k_n_s), 0, 1, 0, 1}, + {&__pyx_n_s_n_s_not_in_range, __pyx_k_n_s_not_in_range, sizeof(__pyx_k_n_s_not_in_range), 0, 0, 1, 1}, + {&__pyx_n_s_n_s_range, __pyx_k_n_s_range, sizeof(__pyx_k_n_s_range), 0, 0, 1, 1}, + {&__pyx_n_s_name, __pyx_k_name, sizeof(__pyx_k_name), 0, 0, 1, 1}, + {&__pyx_kp_s_no_default___reduce___due_to_non, __pyx_k_no_default___reduce___due_to_non, sizeof(__pyx_k_no_default___reduce___due_to_non), 0, 0, 1, 0}, + {&__pyx_n_s_np, __pyx_k_np, sizeof(__pyx_k_np), 0, 0, 1, 1}, + {&__pyx_n_u_ns, __pyx_k_ns, sizeof(__pyx_k_ns), 0, 1, 0, 1}, + {&__pyx_n_s_numpy, __pyx_k_numpy, sizeof(__pyx_k_numpy), 0, 0, 1, 1}, + {&__pyx_n_u_om_b, __pyx_k_om_b, sizeof(__pyx_k_om_b), 0, 1, 0, 1}, + {&__pyx_n_s_om_b_not_in_range, __pyx_k_om_b_not_in_range, sizeof(__pyx_k_om_b_not_in_range), 0, 0, 1, 1}, + {&__pyx_n_s_om_b_range, __pyx_k_om_b_range, sizeof(__pyx_k_om_b_range), 0, 0, 1, 1}, + {&__pyx_n_u_om_m, __pyx_k_om_m, sizeof(__pyx_k_om_m), 0, 1, 0, 1}, + {&__pyx_n_s_om_m_not_in_range, __pyx_k_om_m_not_in_range, sizeof(__pyx_k_om_m_not_in_range), 0, 0, 1, 1}, + {&__pyx_n_s_om_m_range, __pyx_k_om_m_range, sizeof(__pyx_k_om_m_range), 0, 0, 1, 1}, + {&__pyx_n_u_ombh2, __pyx_k_ombh2, sizeof(__pyx_k_ombh2), 0, 1, 0, 1}, + {&__pyx_n_u_omch2, __pyx_k_omch2, sizeof(__pyx_k_omch2), 0, 1, 0, 1}, + {&__pyx_n_u_omega_b, __pyx_k_omega_b, sizeof(__pyx_k_omega_b), 0, 1, 0, 1}, + {&__pyx_n_u_omega_cdm, __pyx_k_omega_cdm, sizeof(__pyx_k_omega_cdm), 0, 1, 0, 1}, + {&__pyx_n_u_omega_m, __pyx_k_omega_m, sizeof(__pyx_k_omega_m), 0, 1, 0, 1}, + {&__pyx_n_u_ommh2, __pyx_k_ommh2, sizeof(__pyx_k_ommh2), 0, 1, 0, 1}, + {&__pyx_n_s_ones_like, __pyx_k_ones_like, sizeof(__pyx_k_ones_like), 0, 0, 1, 1}, + {&__pyx_n_s_par_dict, __pyx_k_par_dict, sizeof(__pyx_k_par_dict), 0, 0, 1, 1}, + {&__pyx_n_s_print, __pyx_k_print, sizeof(__pyx_k_print), 0, 0, 1, 1}, + {&__pyx_n_s_range, __pyx_k_range, sizeof(__pyx_k_range), 0, 0, 1, 1}, + {&__pyx_n_s_redshift, __pyx_k_redshift, sizeof(__pyx_k_redshift), 0, 0, 1, 1}, + {&__pyx_n_s_redshifts, __pyx_k_redshifts, sizeof(__pyx_k_redshifts), 0, 0, 1, 1}, + {&__pyx_n_s_reduce, __pyx_k_reduce, sizeof(__pyx_k_reduce), 0, 0, 1, 1}, + {&__pyx_n_s_reduce_cython, __pyx_k_reduce_cython, sizeof(__pyx_k_reduce_cython), 0, 0, 1, 1}, + {&__pyx_n_s_reduce_ex, __pyx_k_reduce_ex, sizeof(__pyx_k_reduce_ex), 0, 0, 1, 1}, + {&__pyx_n_s_reshape, __pyx_k_reshape, sizeof(__pyx_k_reshape), 0, 0, 1, 1}, + {&__pyx_n_s_scipy_interpolate, __pyx_k_scipy_interpolate, sizeof(__pyx_k_scipy_interpolate), 0, 0, 1, 1}, + {&__pyx_n_s_setstate, __pyx_k_setstate, sizeof(__pyx_k_setstate), 0, 0, 1, 1}, + {&__pyx_n_s_setstate_cython, __pyx_k_setstate_cython, sizeof(__pyx_k_setstate_cython), 0, 0, 1, 1}, + {&__pyx_n_s_shape, __pyx_k_shape, sizeof(__pyx_k_shape), 0, 0, 1, 1}, + {&__pyx_kp_s_src_euclidemu2_pyx, __pyx_k_src_euclidemu2_pyx, sizeof(__pyx_k_src_euclidemu2_pyx), 0, 0, 1, 0}, + {&__pyx_n_s_sys, __pyx_k_sys, sizeof(__pyx_k_sys), 0, 0, 1, 1}, + {&__pyx_n_s_test, __pyx_k_test, sizeof(__pyx_k_test), 0, 0, 1, 1}, + {&__pyx_n_s_tmp, __pyx_k_tmp, sizeof(__pyx_k_tmp), 0, 0, 1, 1}, + {&__pyx_n_s_u, __pyx_k_u, sizeof(__pyx_k_u), 0, 0, 1, 1}, + {&__pyx_n_s_upper_mask, __pyx_k_upper_mask, sizeof(__pyx_k_upper_mask), 0, 0, 1, 1}, + {&__pyx_n_u_w, __pyx_k_w, sizeof(__pyx_k_w), 0, 1, 0, 1}, + {&__pyx_n_u_w0, __pyx_k_w0, sizeof(__pyx_k_w0), 0, 1, 0, 1}, + {&__pyx_n_s_w0_fld, __pyx_k_w0_fld, sizeof(__pyx_k_w0_fld), 0, 0, 1, 1}, + {&__pyx_n_u_w0_fld, __pyx_k_w0_fld, sizeof(__pyx_k_w0_fld), 0, 1, 0, 1}, + {&__pyx_n_s_w_0, __pyx_k_w_0, sizeof(__pyx_k_w_0), 0, 0, 1, 1}, + {&__pyx_n_u_w_0, __pyx_k_w_0, sizeof(__pyx_k_w_0), 0, 1, 0, 1}, + {&__pyx_n_s_w_0_not_in_range, __pyx_k_w_0_not_in_range, sizeof(__pyx_k_w_0_not_in_range), 0, 0, 1, 1}, + {&__pyx_n_s_w_0_range, __pyx_k_w_0_range, sizeof(__pyx_k_w_0_range), 0, 0, 1, 1}, + {&__pyx_n_s_w_a, __pyx_k_w_a, sizeof(__pyx_k_w_a), 0, 0, 1, 1}, + {&__pyx_n_u_w_a, __pyx_k_w_a, sizeof(__pyx_k_w_a), 0, 1, 0, 1}, + {&__pyx_n_s_w_a_not_in_range, __pyx_k_w_a_not_in_range, sizeof(__pyx_k_w_a_not_in_range), 0, 0, 1, 1}, + {&__pyx_n_s_w_a_range, __pyx_k_w_a_range, sizeof(__pyx_k_w_a_range), 0, 0, 1, 1}, + {&__pyx_n_u_wa, __pyx_k_wa, sizeof(__pyx_k_wa), 0, 1, 0, 1}, + {&__pyx_n_s_wa_fld, __pyx_k_wa_fld, sizeof(__pyx_k_wa_fld), 0, 0, 1, 1}, + {&__pyx_n_u_wa_fld, __pyx_k_wa_fld, sizeof(__pyx_k_wa_fld), 0, 1, 0, 1}, + {&__pyx_n_s_warn, __pyx_k_warn, sizeof(__pyx_k_warn), 0, 0, 1, 1}, + {&__pyx_n_s_warnings, __pyx_k_warnings, sizeof(__pyx_k_warnings), 0, 0, 1, 1}, + {&__pyx_n_s_warnings_2, __pyx_k_warnings_2, sizeof(__pyx_k_warnings_2), 0, 0, 1, 1}, + {&__pyx_n_s_wrn_message, __pyx_k_wrn_message, sizeof(__pyx_k_wrn_message), 0, 0, 1, 1}, + {&__pyx_n_s_z, __pyx_k_z, sizeof(__pyx_k_z), 0, 0, 1, 1}, + {&__pyx_n_s_zip, __pyx_k_zip, sizeof(__pyx_k_zip), 0, 0, 1, 1}, + {&__pyx_n_s_zvec, __pyx_k_zvec, sizeof(__pyx_k_zvec), 0, 0, 1, 1}, + {0, 0, 0, 0, 0, 0, 0} +}; +static CYTHON_SMALL_CODE int __Pyx_InitCachedBuiltins(void) { + __pyx_builtin_TypeError = __Pyx_GetBuiltinName(__pyx_n_s_TypeError); if (!__pyx_builtin_TypeError) __PYX_ERR(0, 2, __pyx_L1_error) + __pyx_builtin_ValueError = __Pyx_GetBuiltinName(__pyx_n_s_ValueError); if (!__pyx_builtin_ValueError) __PYX_ERR(1, 169, __pyx_L1_error) + __pyx_builtin_print = __Pyx_GetBuiltinName(__pyx_n_s_print); if (!__pyx_builtin_print) __PYX_ERR(1, 232, __pyx_L1_error) + __pyx_builtin_max = __Pyx_GetBuiltinName(__pyx_n_s_max); if (!__pyx_builtin_max) __PYX_ERR(1, 397, __pyx_L1_error) + __pyx_builtin_min = __Pyx_GetBuiltinName(__pyx_n_s_min); if (!__pyx_builtin_min) __PYX_ERR(1, 398, __pyx_L1_error) + __pyx_builtin_any = __Pyx_GetBuiltinName(__pyx_n_s_any); if (!__pyx_builtin_any) __PYX_ERR(1, 404, __pyx_L1_error) + __pyx_builtin_range = __Pyx_GetBuiltinName(__pyx_n_s_range); if (!__pyx_builtin_range) __PYX_ERR(1, 428, __pyx_L1_error) + __pyx_builtin_zip = __Pyx_GetBuiltinName(__pyx_n_s_zip); if (!__pyx_builtin_zip) __PYX_ERR(1, 399, __pyx_L1_error) + __pyx_builtin_OverflowError = __Pyx_GetBuiltinName(__pyx_n_s_OverflowError); if (!__pyx_builtin_OverflowError) __PYX_ERR(0, 81, __pyx_L1_error) + __pyx_builtin_enumerate = __Pyx_GetBuiltinName(__pyx_n_s_enumerate); if (!__pyx_builtin_enumerate) __PYX_ERR(0, 84, __pyx_L1_error) + __pyx_builtin_IndexError = __Pyx_GetBuiltinName(__pyx_n_s_IndexError); if (!__pyx_builtin_IndexError) __PYX_ERR(0, 94, __pyx_L1_error) + return 0; + __pyx_L1_error:; + return -1; +} + +static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) { + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0); + + /* "(tree fragment)":2 + * def __reduce_cython__(self): + * raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<< + * def __setstate_cython__(self, __pyx_state): + * raise TypeError("no default __reduce__ due to non-trivial __cinit__") + */ + __pyx_tuple_ = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple_)) __PYX_ERR(0, 2, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple_); + __Pyx_GIVEREF(__pyx_tuple_); + + /* "(tree fragment)":4 + * raise TypeError("no default __reduce__ due to non-trivial __cinit__") + * def __setstate_cython__(self, __pyx_state): + * raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<< + */ + __pyx_tuple__2 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__2)) __PYX_ERR(0, 4, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__2); + __Pyx_GIVEREF(__pyx_tuple__2); + + /* "(tree fragment)":2 + * def __reduce_cython__(self): + * raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<< + * def __setstate_cython__(self, __pyx_state): + * raise TypeError("no default __reduce__ due to non-trivial __cinit__") + */ + __pyx_tuple__3 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__3)) __PYX_ERR(0, 2, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__3); + __Pyx_GIVEREF(__pyx_tuple__3); + + /* "(tree fragment)":4 + * raise TypeError("no default __reduce__ due to non-trivial __cinit__") + * def __setstate_cython__(self, __pyx_state): + * raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<< + */ + __pyx_tuple__4 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__4)) __PYX_ERR(0, 4, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__4); + __Pyx_GIVEREF(__pyx_tuple__4); + + /* "euclidemu2.pyx":232 + * """ + * if not isinstance(class_pars_dict, dict): + * print("The cosmological parameters must be passed as a \ # <<<<<<<<<<<<<< + * python dictionary.\n") + * sys.exit() + */ + __pyx_tuple__5 = PyTuple_Pack(1, __pyx_kp_u_The_cosmological_parameters_must); if (unlikely(!__pyx_tuple__5)) __PYX_ERR(1, 232, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__5); + __Pyx_GIVEREF(__pyx_tuple__5); + + /* "euclidemu2.pyx":241 + * h = class_pars_dict['H0']/100. + * else: + * print("Missing parameter h. Can't proceed.") # <<<<<<<<<<<<<< + * sys.exit() + * + */ + __pyx_tuple__6 = PyTuple_Pack(1, __pyx_kp_u_Missing_parameter_h_Can_t_procee); if (unlikely(!__pyx_tuple__6)) __PYX_ERR(1, 241, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__6); + __Pyx_GIVEREF(__pyx_tuple__6); + + /* "euclidemu2.pyx":255 + * Om_b = class_pars_dict['ombh2']/h**2 + * else: + * print("Missing parameter Omega_b. Can't proceed.") # <<<<<<<<<<<<<< + * sys.exit() + * + */ + __pyx_tuple__7 = PyTuple_Pack(1, __pyx_kp_u_Missing_parameter_Omega_b_Can_t); if (unlikely(!__pyx_tuple__7)) __PYX_ERR(1, 255, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__7); + __Pyx_GIVEREF(__pyx_tuple__7); + + /* "euclidemu2.pyx":268 + * m_ncdm = class_pars_dict['mnu'] + * else: + * print("Missing parameter m_ncdm. Can't proceed.") # <<<<<<<<<<<<<< + * sys.exit() + * + */ + __pyx_tuple__8 = PyTuple_Pack(1, __pyx_kp_u_Missing_parameter_m_ncdm_Can_t_p); if (unlikely(!__pyx_tuple__8)) __PYX_ERR(1, 268, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__8); + __Pyx_GIVEREF(__pyx_tuple__8); + + /* "euclidemu2.pyx":297 + * Om_m = Om_b + Om_cdm + * else: + * print("Missing parameter Omega_m or Omega_cdm. Can't proceed.") # <<<<<<<<<<<<<< + * sys.exit() + * + */ + __pyx_tuple__9 = PyTuple_Pack(1, __pyx_kp_u_Missing_parameter_Omega_m_or_Ome); if (unlikely(!__pyx_tuple__9)) __PYX_ERR(1, 297, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__9); + __Pyx_GIVEREF(__pyx_tuple__9); + + /* "euclidemu2.pyx":305 + * n_s = class_pars_dict['ns'] + * else: + * print("Missing parameter n_s. Can't proceed.") # <<<<<<<<<<<<<< + * sys.exit() + * + */ + __pyx_tuple__10 = PyTuple_Pack(1, __pyx_kp_u_Missing_parameter_n_s_Can_t_proc); if (unlikely(!__pyx_tuple__10)) __PYX_ERR(1, 305, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__10); + __Pyx_GIVEREF(__pyx_tuple__10); + + /* "euclidemu2.pyx":315 + * A_s = np.exp(class_pars_dict['ln10^{10}A_s'])*1.0e-10 + * else: + * print("Missing parameter A_s or ln10^{10}A_s. Can't proceed.") # <<<<<<<<<<<<<< + * sys.exit() + * + */ + __pyx_tuple__11 = PyTuple_Pack(1, __pyx_kp_u_Missing_parameter_A_s_or_ln10_10); if (unlikely(!__pyx_tuple__11)) __PYX_ERR(1, 315, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__11); + __Pyx_GIVEREF(__pyx_tuple__11); + + /* "euclidemu2.pyx":328 + * w0_fld = class_pars_dict['w'] + * else: + * print("Missing parameter w0. Will set to -1.") # <<<<<<<<<<<<<< + * w0_fld=-1.0 + * + */ + __pyx_tuple__12 = PyTuple_Pack(1, __pyx_kp_u_Missing_parameter_w0_Will_set_to); if (unlikely(!__pyx_tuple__12)) __PYX_ERR(1, 328, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__12); + __Pyx_GIVEREF(__pyx_tuple__12); + + /* "euclidemu2.pyx":338 + * wa_fld = class_pars_dict['w_a'] + * else: + * print("Missing parameter wa. Will set to 0.") # <<<<<<<<<<<<<< + * wa_fld=0.0 + * + */ + __pyx_tuple__13 = PyTuple_Pack(1, __pyx_kp_u_Missing_parameter_wa_Will_set_to); if (unlikely(!__pyx_tuple__13)) __PYX_ERR(1, 338, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__13); + __Pyx_GIVEREF(__pyx_tuple__13); + + /* "euclidemu2.pyx":129 + * ###################################################### + * + * def check_param_range(par_dict): #, csm_index=0): #Only one cosmology for now # <<<<<<<<<<<<<< + * """ + * Checks if all parameters in the cosmology dictionary 'par_dict' + */ + __pyx_tuple__14 = PyTuple_Pack(17, __pyx_n_s_par_dict, __pyx_n_s_om_b_range, __pyx_n_s_om_m_range, __pyx_n_s_m_nu_range, __pyx_n_s_n_s_range, __pyx_n_s_h_range, __pyx_n_s_w_0_range, __pyx_n_s_w_a_range, __pyx_n_s_A_s_range, __pyx_n_s_om_b_not_in_range, __pyx_n_s_om_m_not_in_range, __pyx_n_s_m_nu_not_in_range, __pyx_n_s_n_s_not_in_range, __pyx_n_s_h_not_in_range, __pyx_n_s_w_0_not_in_range, __pyx_n_s_w_a_not_in_range, __pyx_n_s_A_s_not_in_range); if (unlikely(!__pyx_tuple__14)) __PYX_ERR(1, 129, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__14); + __Pyx_GIVEREF(__pyx_tuple__14); + __pyx_codeobj__15 = (PyObject*)__Pyx_PyCode_New(1, 0, 17, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__14, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_euclidemu2_pyx, __pyx_n_s_check_param_range, 129, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__15)) __PYX_ERR(1, 129, __pyx_L1_error) + + /* "euclidemu2.pyx":217 + * + * + * def convert_to_emu(class_pars_dict): # <<<<<<<<<<<<<< + * """ + * Signature: convert_to_emu(class_pars_dict) + */ + __pyx_tuple__16 = PyTuple_Pack(11, __pyx_n_s_class_pars_dict, __pyx_n_s_h, __pyx_n_s_Om_b, __pyx_n_s_m_ncdm, __pyx_n_s_Om_m, __pyx_n_s_Om_cdm, __pyx_n_s_n_s, __pyx_n_s_A_s, __pyx_n_s_w0_fld, __pyx_n_s_wa_fld, __pyx_n_s_emu_pars_dict); if (unlikely(!__pyx_tuple__16)) __PYX_ERR(1, 217, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__16); + __Pyx_GIVEREF(__pyx_tuple__16); + __pyx_codeobj__17 = (PyObject*)__Pyx_PyCode_New(1, 0, 11, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__16, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_euclidemu2_pyx, __pyx_n_s_convert_to_emu, 217, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__17)) __PYX_ERR(1, 217, __pyx_L1_error) + + /* "euclidemu2.pyx":355 + * + * + * def get_boost(cosmo_par_in,redshifts,custom_kvec=None): # <<<<<<<<<<<<<< + * + * if isinstance(redshifts, (int, float)): + */ + __pyx_tuple__18 = PyTuple_Pack(30, __pyx_n_s_cosmo_par_in, __pyx_n_s_redshifts, __pyx_n_s_custom_kvec, __pyx_n_s_z, __pyx_n_s_cosmo_par, __pyx_n_s_cosmo, __pyx_n_s_ee2, __pyx_n_s_k, __pyx_n_s_boost, __pyx_n_s_kvals, __pyx_n_s_k_shape, __pyx_n_s_do_extrapolate_above, __pyx_n_s_do_extrapolate_below, __pyx_n_s_upper_mask, __pyx_n_s_lower_mask, __pyx_n_s_mask, __pyx_n_s_custom_k_within_range, __pyx_n_s_custom_k_below, __pyx_n_s_custom_k_above, __pyx_n_s_wrn_message, __pyx_n_s_len_kvals, __pyx_n_s_len_redshifts, __pyx_n_s_bvals, __pyx_n_s_i, __pyx_n_s_tmp, __pyx_n_s_b_extrap, __pyx_n_s_u, __pyx_n_s_l, __pyx_n_s_l, __pyx_n_s_u); if (unlikely(!__pyx_tuple__18)) __PYX_ERR(1, 355, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__18); + __Pyx_GIVEREF(__pyx_tuple__18); + __pyx_codeobj__19 = (PyObject*)__Pyx_PyCode_New(3, 0, 30, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_euclidemu2_pyx, __pyx_n_s_get_boost, 355, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__19)) __PYX_ERR(1, 355, __pyx_L1_error) + __Pyx_RefNannyFinishContext(); + return 0; + __pyx_L1_error:; + __Pyx_RefNannyFinishContext(); + return -1; +} + +static CYTHON_SMALL_CODE int __Pyx_InitGlobals(void) { + if (__Pyx_InitStrings(__pyx_string_tab) < 0) __PYX_ERR(1, 1, __pyx_L1_error); + __pyx_float_0_0 = PyFloat_FromDouble(0.0); if (unlikely(!__pyx_float_0_0)) __PYX_ERR(1, 1, __pyx_L1_error) + __pyx_float_0_5 = PyFloat_FromDouble(0.5); if (unlikely(!__pyx_float_0_5)) __PYX_ERR(1, 1, __pyx_L1_error) + __pyx_float_0_00 = PyFloat_FromDouble(0.00); if (unlikely(!__pyx_float_0_00)) __PYX_ERR(1, 1, __pyx_L1_error) + __pyx_float_0_04 = PyFloat_FromDouble(0.04); if (unlikely(!__pyx_float_0_04)) __PYX_ERR(1, 1, __pyx_L1_error) + __pyx_float_0_06 = PyFloat_FromDouble(0.06); if (unlikely(!__pyx_float_0_06)) __PYX_ERR(1, 1, __pyx_L1_error) + __pyx_float_0_15 = PyFloat_FromDouble(0.15); if (unlikely(!__pyx_float_0_15)) __PYX_ERR(1, 1, __pyx_L1_error) + __pyx_float_0_24 = PyFloat_FromDouble(0.24); if (unlikely(!__pyx_float_0_24)) __PYX_ERR(1, 1, __pyx_L1_error) + __pyx_float_0_40 = PyFloat_FromDouble(0.40); if (unlikely(!__pyx_float_0_40)) __PYX_ERR(1, 1, __pyx_L1_error) + __pyx_float_0_61 = PyFloat_FromDouble(0.61); if (unlikely(!__pyx_float_0_61)) __PYX_ERR(1, 1, __pyx_L1_error) + __pyx_float_0_73 = PyFloat_FromDouble(0.73); if (unlikely(!__pyx_float_0_73)) __PYX_ERR(1, 1, __pyx_L1_error) + __pyx_float_0_92 = PyFloat_FromDouble(0.92); if (unlikely(!__pyx_float_0_92)) __PYX_ERR(1, 1, __pyx_L1_error) + __pyx_float_1_00 = PyFloat_FromDouble(1.00); if (unlikely(!__pyx_float_1_00)) __PYX_ERR(1, 1, __pyx_L1_error) + __pyx_float_10_0 = PyFloat_FromDouble(10.0); if (unlikely(!__pyx_float_10_0)) __PYX_ERR(1, 1, __pyx_L1_error) + __pyx_float_100_ = PyFloat_FromDouble(100.); if (unlikely(!__pyx_float_100_)) __PYX_ERR(1, 1, __pyx_L1_error) + __pyx_float_1_7eneg_9 = PyFloat_FromDouble(1.7e-9); if (unlikely(!__pyx_float_1_7eneg_9)) __PYX_ERR(1, 1, __pyx_L1_error) + __pyx_float_2_5eneg_9 = PyFloat_FromDouble(2.5e-9); if (unlikely(!__pyx_float_2_5eneg_9)) __PYX_ERR(1, 1, __pyx_L1_error) + __pyx_float_1_0eneg_10 = PyFloat_FromDouble(1.0e-10); if (unlikely(!__pyx_float_1_0eneg_10)) __PYX_ERR(1, 1, __pyx_L1_error) + __pyx_float_neg_0_7 = PyFloat_FromDouble(-0.7); if (unlikely(!__pyx_float_neg_0_7)) __PYX_ERR(1, 1, __pyx_L1_error) + __pyx_float_neg_1_0 = PyFloat_FromDouble(-1.0); if (unlikely(!__pyx_float_neg_1_0)) __PYX_ERR(1, 1, __pyx_L1_error) + __pyx_float_neg_1_3 = PyFloat_FromDouble(-1.3); if (unlikely(!__pyx_float_neg_1_3)) __PYX_ERR(1, 1, __pyx_L1_error) + __pyx_int_2 = PyInt_FromLong(2); if (unlikely(!__pyx_int_2)) __PYX_ERR(1, 1, __pyx_L1_error) + __pyx_int_10 = PyInt_FromLong(10); if (unlikely(!__pyx_int_10)) __PYX_ERR(1, 1, __pyx_L1_error) + return 0; + __pyx_L1_error:; + return -1; +} + +static CYTHON_SMALL_CODE int __Pyx_modinit_global_init_code(void); /*proto*/ +static CYTHON_SMALL_CODE int __Pyx_modinit_variable_export_code(void); /*proto*/ +static CYTHON_SMALL_CODE int __Pyx_modinit_function_export_code(void); /*proto*/ +static CYTHON_SMALL_CODE int __Pyx_modinit_type_init_code(void); /*proto*/ +static CYTHON_SMALL_CODE int __Pyx_modinit_type_import_code(void); /*proto*/ +static CYTHON_SMALL_CODE int __Pyx_modinit_variable_import_code(void); /*proto*/ +static CYTHON_SMALL_CODE int __Pyx_modinit_function_import_code(void); /*proto*/ + +static int __Pyx_modinit_global_init_code(void) { + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__Pyx_modinit_global_init_code", 0); + /*--- Global init code ---*/ + __Pyx_RefNannyFinishContext(); + return 0; +} + +static int __Pyx_modinit_variable_export_code(void) { + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__Pyx_modinit_variable_export_code", 0); + /*--- Variable export code ---*/ + __Pyx_RefNannyFinishContext(); + return 0; +} + +static int __Pyx_modinit_function_export_code(void) { + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__Pyx_modinit_function_export_code", 0); + /*--- Function export code ---*/ + __Pyx_RefNannyFinishContext(); + return 0; +} + +static int __Pyx_modinit_type_init_code(void) { + __Pyx_RefNannyDeclarations + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__Pyx_modinit_type_init_code", 0); + /*--- Type init code ---*/ + if (PyType_Ready(&__pyx_type_10euclidemu2_PyCosmology) < 0) __PYX_ERR(1, 57, __pyx_L1_error) + #if PY_VERSION_HEX < 0x030800B1 + __pyx_type_10euclidemu2_PyCosmology.tp_print = 0; + #endif + if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_10euclidemu2_PyCosmology.tp_dictoffset && __pyx_type_10euclidemu2_PyCosmology.tp_getattro == PyObject_GenericGetAttr)) { + __pyx_type_10euclidemu2_PyCosmology.tp_getattro = __Pyx_PyObject_GenericGetAttr; + } + #if CYTHON_COMPILING_IN_CPYTHON + { + PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_10euclidemu2_PyCosmology, "__init__"); if (unlikely(!wrapper)) __PYX_ERR(1, 57, __pyx_L1_error) + if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) { + __pyx_wrapperbase_10euclidemu2_11PyCosmology_2__init__ = *((PyWrapperDescrObject *)wrapper)->d_base; + __pyx_wrapperbase_10euclidemu2_11PyCosmology_2__init__.doc = __pyx_doc_10euclidemu2_11PyCosmology_2__init__; + ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_10euclidemu2_11PyCosmology_2__init__; + } + } + #endif + if (PyObject_SetAttr(__pyx_m, __pyx_n_s_PyCosmology, (PyObject *)&__pyx_type_10euclidemu2_PyCosmology) < 0) __PYX_ERR(1, 57, __pyx_L1_error) + if (__Pyx_setup_reduce((PyObject*)&__pyx_type_10euclidemu2_PyCosmology) < 0) __PYX_ERR(1, 57, __pyx_L1_error) + __pyx_ptype_10euclidemu2_PyCosmology = &__pyx_type_10euclidemu2_PyCosmology; + if (PyType_Ready(&__pyx_type_10euclidemu2_PyEuclidEmulator) < 0) __PYX_ERR(1, 85, __pyx_L1_error) + #if PY_VERSION_HEX < 0x030800B1 + __pyx_type_10euclidemu2_PyEuclidEmulator.tp_print = 0; + #endif + if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_10euclidemu2_PyEuclidEmulator.tp_dictoffset && __pyx_type_10euclidemu2_PyEuclidEmulator.tp_getattro == PyObject_GenericGetAttr)) { + __pyx_type_10euclidemu2_PyEuclidEmulator.tp_getattro = __Pyx_PyObject_GenericGetAttr; + } + if (PyObject_SetAttr(__pyx_m, __pyx_n_s_PyEuclidEmulator, (PyObject *)&__pyx_type_10euclidemu2_PyEuclidEmulator) < 0) __PYX_ERR(1, 85, __pyx_L1_error) + if (__Pyx_setup_reduce((PyObject*)&__pyx_type_10euclidemu2_PyEuclidEmulator) < 0) __PYX_ERR(1, 85, __pyx_L1_error) + __pyx_ptype_10euclidemu2_PyEuclidEmulator = &__pyx_type_10euclidemu2_PyEuclidEmulator; + __Pyx_RefNannyFinishContext(); + return 0; + __pyx_L1_error:; + __Pyx_RefNannyFinishContext(); + return -1; +} + +static int __Pyx_modinit_type_import_code(void) { + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__Pyx_modinit_type_import_code", 0); + /*--- Type import code ---*/ + __Pyx_RefNannyFinishContext(); + return 0; +} + +static int __Pyx_modinit_variable_import_code(void) { + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__Pyx_modinit_variable_import_code", 0); + /*--- Variable import code ---*/ + __Pyx_RefNannyFinishContext(); + return 0; +} + +static int __Pyx_modinit_function_import_code(void) { + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__Pyx_modinit_function_import_code", 0); + /*--- Function import code ---*/ + __Pyx_RefNannyFinishContext(); + return 0; +} + + +#ifndef CYTHON_NO_PYINIT_EXPORT +#define __Pyx_PyMODINIT_FUNC PyMODINIT_FUNC +#elif PY_MAJOR_VERSION < 3 +#ifdef __cplusplus +#define __Pyx_PyMODINIT_FUNC extern "C" void +#else +#define __Pyx_PyMODINIT_FUNC void +#endif +#else +#ifdef __cplusplus +#define __Pyx_PyMODINIT_FUNC extern "C" PyObject * +#else +#define __Pyx_PyMODINIT_FUNC PyObject * +#endif +#endif + + +#if PY_MAJOR_VERSION < 3 +__Pyx_PyMODINIT_FUNC initeuclidemu2(void) CYTHON_SMALL_CODE; /*proto*/ +__Pyx_PyMODINIT_FUNC initeuclidemu2(void) +#else +__Pyx_PyMODINIT_FUNC PyInit_euclidemu2(void) CYTHON_SMALL_CODE; /*proto*/ +__Pyx_PyMODINIT_FUNC PyInit_euclidemu2(void) +#if CYTHON_PEP489_MULTI_PHASE_INIT +{ + return PyModuleDef_Init(&__pyx_moduledef); +} +static CYTHON_SMALL_CODE int __Pyx_check_single_interpreter(void) { + #if PY_VERSION_HEX >= 0x030700A1 + static PY_INT64_T main_interpreter_id = -1; + PY_INT64_T current_id = PyInterpreterState_GetID(PyThreadState_Get()->interp); + if (main_interpreter_id == -1) { + main_interpreter_id = current_id; + return (unlikely(current_id == -1)) ? -1 : 0; + } else if (unlikely(main_interpreter_id != current_id)) + #else + static PyInterpreterState *main_interpreter = NULL; + PyInterpreterState *current_interpreter = PyThreadState_Get()->interp; + if (!main_interpreter) { + main_interpreter = current_interpreter; + } else if (unlikely(main_interpreter != current_interpreter)) + #endif + { + PyErr_SetString( + PyExc_ImportError, + "Interpreter change detected - this module can only be loaded into one interpreter per process."); + return -1; + } + return 0; +} +static CYTHON_SMALL_CODE int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *moddict, const char* from_name, const char* to_name, int allow_none) { + PyObject *value = PyObject_GetAttrString(spec, from_name); + int result = 0; + if (likely(value)) { + if (allow_none || value != Py_None) { + result = PyDict_SetItemString(moddict, to_name, value); + } + Py_DECREF(value); + } else if (PyErr_ExceptionMatches(PyExc_AttributeError)) { + PyErr_Clear(); + } else { + result = -1; + } + return result; +} +static CYTHON_SMALL_CODE PyObject* __pyx_pymod_create(PyObject *spec, CYTHON_UNUSED PyModuleDef *def) { + PyObject *module = NULL, *moddict, *modname; + if (__Pyx_check_single_interpreter()) + return NULL; + if (__pyx_m) + return __Pyx_NewRef(__pyx_m); + modname = PyObject_GetAttrString(spec, "name"); + if (unlikely(!modname)) goto bad; + module = PyModule_NewObject(modname); + Py_DECREF(modname); + if (unlikely(!module)) goto bad; + moddict = PyModule_GetDict(module); + if (unlikely(!moddict)) goto bad; + if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "loader", "__loader__", 1) < 0)) goto bad; + if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "origin", "__file__", 1) < 0)) goto bad; + if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "parent", "__package__", 1) < 0)) goto bad; + if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "submodule_search_locations", "__path__", 0) < 0)) goto bad; + return module; +bad: + Py_XDECREF(module); + return NULL; +} + + +static CYTHON_SMALL_CODE int __pyx_pymod_exec_euclidemu2(PyObject *__pyx_pyinit_module) +#endif +#endif +{ + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannyDeclarations + #if CYTHON_PEP489_MULTI_PHASE_INIT + if (__pyx_m) { + if (__pyx_m == __pyx_pyinit_module) return 0; + PyErr_SetString(PyExc_RuntimeError, "Module 'euclidemu2' has already been imported. Re-initialisation is not supported."); + return -1; + } + #elif PY_MAJOR_VERSION >= 3 + if (__pyx_m) return __Pyx_NewRef(__pyx_m); + #endif + #if CYTHON_REFNANNY +__Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny"); +if (!__Pyx_RefNanny) { + PyErr_Clear(); + __Pyx_RefNanny = __Pyx_RefNannyImportAPI("Cython.Runtime.refnanny"); + if (!__Pyx_RefNanny) + Py_FatalError("failed to import 'refnanny' module"); +} +#endif + __Pyx_RefNannySetupContext("__Pyx_PyMODINIT_FUNC PyInit_euclidemu2(void)", 0); + if (__Pyx_check_binary_version() < 0) __PYX_ERR(1, 1, __pyx_L1_error) + #ifdef __Pxy_PyFrame_Initialize_Offsets + __Pxy_PyFrame_Initialize_Offsets(); + #endif + __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) __PYX_ERR(1, 1, __pyx_L1_error) + __pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) __PYX_ERR(1, 1, __pyx_L1_error) + __pyx_empty_unicode = PyUnicode_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_unicode)) __PYX_ERR(1, 1, __pyx_L1_error) + #ifdef __Pyx_CyFunction_USED + if (__pyx_CyFunction_init() < 0) __PYX_ERR(1, 1, __pyx_L1_error) + #endif + #ifdef __Pyx_FusedFunction_USED + if (__pyx_FusedFunction_init() < 0) __PYX_ERR(1, 1, __pyx_L1_error) + #endif + #ifdef __Pyx_Coroutine_USED + if (__pyx_Coroutine_init() < 0) __PYX_ERR(1, 1, __pyx_L1_error) + #endif + #ifdef __Pyx_Generator_USED + if (__pyx_Generator_init() < 0) __PYX_ERR(1, 1, __pyx_L1_error) + #endif + #ifdef __Pyx_AsyncGen_USED + if (__pyx_AsyncGen_init() < 0) __PYX_ERR(1, 1, __pyx_L1_error) + #endif + #ifdef __Pyx_StopAsyncIteration_USED + if (__pyx_StopAsyncIteration_init() < 0) __PYX_ERR(1, 1, __pyx_L1_error) + #endif + /*--- Library function declarations ---*/ + /*--- Threads initialization code ---*/ + #if defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS + #ifdef WITH_THREAD /* Python build with threading support? */ + PyEval_InitThreads(); + #endif + #endif + /*--- Module creation code ---*/ + #if CYTHON_PEP489_MULTI_PHASE_INIT + __pyx_m = __pyx_pyinit_module; + Py_INCREF(__pyx_m); + #else + #if PY_MAJOR_VERSION < 3 + __pyx_m = Py_InitModule4("euclidemu2", __pyx_methods, 0, 0, PYTHON_API_VERSION); Py_XINCREF(__pyx_m); + #else + __pyx_m = PyModule_Create(&__pyx_moduledef); + #endif + if (unlikely(!__pyx_m)) __PYX_ERR(1, 1, __pyx_L1_error) + #endif + __pyx_d = PyModule_GetDict(__pyx_m); if (unlikely(!__pyx_d)) __PYX_ERR(1, 1, __pyx_L1_error) + Py_INCREF(__pyx_d); + __pyx_b = PyImport_AddModule(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_b)) __PYX_ERR(1, 1, __pyx_L1_error) + Py_INCREF(__pyx_b); + __pyx_cython_runtime = PyImport_AddModule((char *) "cython_runtime"); if (unlikely(!__pyx_cython_runtime)) __PYX_ERR(1, 1, __pyx_L1_error) + Py_INCREF(__pyx_cython_runtime); + if (PyObject_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) __PYX_ERR(1, 1, __pyx_L1_error); + /*--- Initialize various global constants etc. ---*/ + if (__Pyx_InitGlobals() < 0) __PYX_ERR(1, 1, __pyx_L1_error) + #if PY_MAJOR_VERSION < 3 && (__PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT) + if (__Pyx_init_sys_getdefaultencoding_params() < 0) __PYX_ERR(1, 1, __pyx_L1_error) + #endif + if (__pyx_module_is_main_euclidemu2) { + if (PyObject_SetAttr(__pyx_m, __pyx_n_s_name, __pyx_n_s_main) < 0) __PYX_ERR(1, 1, __pyx_L1_error) + } + #if PY_MAJOR_VERSION >= 3 + { + PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) __PYX_ERR(1, 1, __pyx_L1_error) + if (!PyDict_GetItemString(modules, "euclidemu2")) { + if (unlikely(PyDict_SetItemString(modules, "euclidemu2", __pyx_m) < 0)) __PYX_ERR(1, 1, __pyx_L1_error) + } + } + #endif + /*--- Builtin init code ---*/ + if (__Pyx_InitCachedBuiltins() < 0) __PYX_ERR(1, 1, __pyx_L1_error) + /*--- Constants init code ---*/ + if (__Pyx_InitCachedConstants() < 0) __PYX_ERR(1, 1, __pyx_L1_error) + /*--- Global type/function init code ---*/ + (void)__Pyx_modinit_global_init_code(); + (void)__Pyx_modinit_variable_export_code(); + (void)__Pyx_modinit_function_export_code(); + if (unlikely(__Pyx_modinit_type_init_code() < 0)) __PYX_ERR(1, 1, __pyx_L1_error) + (void)__Pyx_modinit_type_import_code(); + (void)__Pyx_modinit_variable_import_code(); + (void)__Pyx_modinit_function_import_code(); + /*--- Execution code ---*/ + #if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED) + if (__Pyx_patch_abc() < 0) __PYX_ERR(1, 1, __pyx_L1_error) + #endif + + /* "euclidemu2.pyx":24 + * from cython.operator cimport dereference as deref + * + * import sys # <<<<<<<<<<<<<< + * import numpy as np + * from scipy.interpolate import CubicSpline as _CubicSpline + */ + __pyx_t_1 = __Pyx_Import(__pyx_n_s_sys, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 24, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_sys, __pyx_t_1) < 0) __PYX_ERR(1, 24, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "euclidemu2.pyx":25 + * + * import sys + * import numpy as np # <<<<<<<<<<<<<< + * from scipy.interpolate import CubicSpline as _CubicSpline + * import warnings as _warnings + */ + __pyx_t_1 = __Pyx_Import(__pyx_n_s_numpy, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 25, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_np, __pyx_t_1) < 0) __PYX_ERR(1, 25, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "euclidemu2.pyx":26 + * import sys + * import numpy as np + * from scipy.interpolate import CubicSpline as _CubicSpline # <<<<<<<<<<<<<< + * import warnings as _warnings + * + */ + __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 26, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_INCREF(__pyx_n_s_CubicSpline_2); + __Pyx_GIVEREF(__pyx_n_s_CubicSpline_2); + PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_CubicSpline_2); + __pyx_t_2 = __Pyx_Import(__pyx_n_s_scipy_interpolate, __pyx_t_1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 26, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_CubicSpline_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 26, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_CubicSpline, __pyx_t_1) < 0) __PYX_ERR(1, 26, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "euclidemu2.pyx":27 + * import numpy as np + * from scipy.interpolate import CubicSpline as _CubicSpline + * import warnings as _warnings # <<<<<<<<<<<<<< + * + * # distutils: language = c++ + */ + __pyx_t_2 = __Pyx_Import(__pyx_n_s_warnings_2, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 27, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_warnings, __pyx_t_2) < 0) __PYX_ERR(1, 27, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "euclidemu2.pyx":129 + * ###################################################### + * + * def check_param_range(par_dict): #, csm_index=0): #Only one cosmology for now # <<<<<<<<<<<<<< + * """ + * Checks if all parameters in the cosmology dictionary 'par_dict' + */ + __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_10euclidemu2_1check_param_range, NULL, __pyx_n_s_euclidemu2); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 129, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_check_param_range, __pyx_t_2) < 0) __PYX_ERR(1, 129, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "euclidemu2.pyx":217 + * + * + * def convert_to_emu(class_pars_dict): # <<<<<<<<<<<<<< + * """ + * Signature: convert_to_emu(class_pars_dict) + */ + __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_10euclidemu2_3convert_to_emu, NULL, __pyx_n_s_euclidemu2); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 217, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_convert_to_emu, __pyx_t_2) < 0) __PYX_ERR(1, 217, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "euclidemu2.pyx":355 + * + * + * def get_boost(cosmo_par_in,redshifts,custom_kvec=None): # <<<<<<<<<<<<<< + * + * if isinstance(redshifts, (int, float)): + */ + __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_10euclidemu2_5get_boost, NULL, __pyx_n_s_euclidemu2); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 355, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_get_boost, __pyx_t_2) < 0) __PYX_ERR(1, 355, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "euclidemu2.pyx":1 + * # This file is part of EuclidEmulator2 # <<<<<<<<<<<<<< + * # Copyright (c) 2018-2021 Mischa Knabenhans, Pedro Carrilho + * # + */ + __pyx_t_2 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "carray.from_py":77 + * + * @cname("__Pyx_carray_from_py_double___5b_0x265_5d_") + * cdef int __Pyx_carray_from_py_double___5b_0x265_5d_(object o, base_type *v, Py_ssize_t length) except -1: # <<<<<<<<<<<<<< + * cdef Py_ssize_t i = length + * try: + */ + + /*--- Wrapped vars code ---*/ + + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + if (__pyx_m) { + if (__pyx_d) { + __Pyx_AddTraceback("init euclidemu2", __pyx_clineno, __pyx_lineno, __pyx_filename); + } + Py_CLEAR(__pyx_m); + } else if (!PyErr_Occurred()) { + PyErr_SetString(PyExc_ImportError, "init euclidemu2"); + } + __pyx_L0:; + __Pyx_RefNannyFinishContext(); + #if CYTHON_PEP489_MULTI_PHASE_INIT + return (__pyx_m != NULL) ? 0 : -1; + #elif PY_MAJOR_VERSION >= 3 + return __pyx_m; + #else + return; + #endif +} + +/* --- Runtime support code --- */ +/* Refnanny */ +#if CYTHON_REFNANNY +static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) { + PyObject *m = NULL, *p = NULL; + void *r = NULL; + m = PyImport_ImportModule(modname); + if (!m) goto end; + p = PyObject_GetAttrString(m, "RefNannyAPI"); + if (!p) goto end; + r = PyLong_AsVoidPtr(p); +end: + Py_XDECREF(p); + Py_XDECREF(m); + return (__Pyx_RefNannyAPIStruct *)r; +} +#endif + +/* PyObjectGetAttrStr */ +#if CYTHON_USE_TYPE_SLOTS +static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name) { + PyTypeObject* tp = Py_TYPE(obj); + if (likely(tp->tp_getattro)) + return tp->tp_getattro(obj, attr_name); +#if PY_MAJOR_VERSION < 3 + if (likely(tp->tp_getattr)) + return tp->tp_getattr(obj, PyString_AS_STRING(attr_name)); +#endif + return PyObject_GetAttr(obj, attr_name); +} +#endif + +/* GetBuiltinName */ +static PyObject *__Pyx_GetBuiltinName(PyObject *name) { + PyObject* result = __Pyx_PyObject_GetAttrStr(__pyx_b, name); + if (unlikely(!result)) { + PyErr_Format(PyExc_NameError, +#if PY_MAJOR_VERSION >= 3 + "name '%U' is not defined", name); +#else + "name '%.200s' is not defined", PyString_AS_STRING(name)); +#endif + } + return result; +} + +/* KeywordStringCheck */ +static int __Pyx_CheckKeywordStrings( + PyObject *kwdict, + const char* function_name, + int kw_allowed) +{ + PyObject* key = 0; + Py_ssize_t pos = 0; +#if CYTHON_COMPILING_IN_PYPY + if (!kw_allowed && PyDict_Next(kwdict, &pos, &key, 0)) + goto invalid_keyword; + return 1; +#else + while (PyDict_Next(kwdict, &pos, &key, 0)) { + #if PY_MAJOR_VERSION < 3 + if (unlikely(!PyString_Check(key))) + #endif + if (unlikely(!PyUnicode_Check(key))) + goto invalid_keyword_type; + } + if ((!kw_allowed) && unlikely(key)) + goto invalid_keyword; + return 1; +invalid_keyword_type: + PyErr_Format(PyExc_TypeError, + "%.200s() keywords must be strings", function_name); + return 0; +#endif +invalid_keyword: + PyErr_Format(PyExc_TypeError, + #if PY_MAJOR_VERSION < 3 + "%.200s() got an unexpected keyword argument '%.200s'", + function_name, PyString_AsString(key)); + #else + "%s() got an unexpected keyword argument '%U'", + function_name, key); + #endif + return 0; +} + +/* RaiseArgTupleInvalid */ +static void __Pyx_RaiseArgtupleInvalid( + const char* func_name, + int exact, + Py_ssize_t num_min, + Py_ssize_t num_max, + Py_ssize_t num_found) +{ + Py_ssize_t num_expected; + const char *more_or_less; + if (num_found < num_min) { + num_expected = num_min; + more_or_less = "at least"; + } else { + num_expected = num_max; + more_or_less = "at most"; + } + if (exact) { + more_or_less = "exactly"; + } + PyErr_Format(PyExc_TypeError, + "%.200s() takes %.8s %" CYTHON_FORMAT_SSIZE_T "d positional argument%.1s (%" CYTHON_FORMAT_SSIZE_T "d given)", + func_name, more_or_less, num_expected, + (num_expected == 1) ? "" : "s", num_found); +} + +/* RaiseDoubleKeywords */ +static void __Pyx_RaiseDoubleKeywordsError( + const char* func_name, + PyObject* kw_name) +{ + PyErr_Format(PyExc_TypeError, + #if PY_MAJOR_VERSION >= 3 + "%s() got multiple values for keyword argument '%U'", func_name, kw_name); + #else + "%s() got multiple values for keyword argument '%s'", func_name, + PyString_AsString(kw_name)); + #endif +} + +/* ParseKeywords */ +static int __Pyx_ParseOptionalKeywords( + PyObject *kwds, + PyObject **argnames[], + PyObject *kwds2, + PyObject *values[], + Py_ssize_t num_pos_args, + const char* function_name) +{ + PyObject *key = 0, *value = 0; + Py_ssize_t pos = 0; + PyObject*** name; + PyObject*** first_kw_arg = argnames + num_pos_args; + while (PyDict_Next(kwds, &pos, &key, &value)) { + name = first_kw_arg; + while (*name && (**name != key)) name++; + if (*name) { + values[name-argnames] = value; + continue; + } + name = first_kw_arg; + #if PY_MAJOR_VERSION < 3 + if (likely(PyString_Check(key))) { + while (*name) { + if ((CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**name) == PyString_GET_SIZE(key)) + && _PyString_Eq(**name, key)) { + values[name-argnames] = value; + break; + } + name++; + } + if (*name) continue; + else { + PyObject*** argname = argnames; + while (argname != first_kw_arg) { + if ((**argname == key) || ( + (CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**argname) == PyString_GET_SIZE(key)) + && _PyString_Eq(**argname, key))) { + goto arg_passed_twice; + } + argname++; + } + } + } else + #endif + if (likely(PyUnicode_Check(key))) { + while (*name) { + int cmp = (**name == key) ? 0 : + #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3 + (__Pyx_PyUnicode_GET_LENGTH(**name) != __Pyx_PyUnicode_GET_LENGTH(key)) ? 1 : + #endif + PyUnicode_Compare(**name, key); + if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad; + if (cmp == 0) { + values[name-argnames] = value; + break; + } + name++; + } + if (*name) continue; + else { + PyObject*** argname = argnames; + while (argname != first_kw_arg) { + int cmp = (**argname == key) ? 0 : + #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3 + (__Pyx_PyUnicode_GET_LENGTH(**argname) != __Pyx_PyUnicode_GET_LENGTH(key)) ? 1 : + #endif + PyUnicode_Compare(**argname, key); + if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad; + if (cmp == 0) goto arg_passed_twice; + argname++; + } + } + } else + goto invalid_keyword_type; + if (kwds2) { + if (unlikely(PyDict_SetItem(kwds2, key, value))) goto bad; + } else { + goto invalid_keyword; + } + } + return 0; +arg_passed_twice: + __Pyx_RaiseDoubleKeywordsError(function_name, key); + goto bad; +invalid_keyword_type: + PyErr_Format(PyExc_TypeError, + "%.200s() keywords must be strings", function_name); + goto bad; +invalid_keyword: + PyErr_Format(PyExc_TypeError, + #if PY_MAJOR_VERSION < 3 + "%.200s() got an unexpected keyword argument '%.200s'", + function_name, PyString_AsString(key)); + #else + "%s() got an unexpected keyword argument '%U'", + function_name, key); + #endif +bad: + return -1; +} + +/* PyObjectCall */ +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw) { + PyObject *result; + ternaryfunc call = func->ob_type->tp_call; + if (unlikely(!call)) + return PyObject_Call(func, arg, kw); + if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) + return NULL; + result = (*call)(func, arg, kw); + Py_LeaveRecursiveCall(); + if (unlikely(!result) && unlikely(!PyErr_Occurred())) { + PyErr_SetString( + PyExc_SystemError, + "NULL result without error in PyObject_Call"); + } + return result; +} +#endif + +/* PyErrFetchRestore */ +#if CYTHON_FAST_THREAD_STATE +static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) { + PyObject *tmp_type, *tmp_value, *tmp_tb; + tmp_type = tstate->curexc_type; + tmp_value = tstate->curexc_value; + tmp_tb = tstate->curexc_traceback; + tstate->curexc_type = type; + tstate->curexc_value = value; + tstate->curexc_traceback = tb; + Py_XDECREF(tmp_type); + Py_XDECREF(tmp_value); + Py_XDECREF(tmp_tb); +} +static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { + *type = tstate->curexc_type; + *value = tstate->curexc_value; + *tb = tstate->curexc_traceback; + tstate->curexc_type = 0; + tstate->curexc_value = 0; + tstate->curexc_traceback = 0; +} +#endif + +/* RaiseException */ +#if PY_MAJOR_VERSION < 3 +static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, + CYTHON_UNUSED PyObject *cause) { + __Pyx_PyThreadState_declare + Py_XINCREF(type); + if (!value || value == Py_None) + value = NULL; + else + Py_INCREF(value); + if (!tb || tb == Py_None) + tb = NULL; + else { + Py_INCREF(tb); + if (!PyTraceBack_Check(tb)) { + PyErr_SetString(PyExc_TypeError, + "raise: arg 3 must be a traceback or None"); + goto raise_error; + } + } + if (PyType_Check(type)) { +#if CYTHON_COMPILING_IN_PYPY + if (!value) { + Py_INCREF(Py_None); + value = Py_None; + } +#endif + PyErr_NormalizeException(&type, &value, &tb); + } else { + if (value) { + PyErr_SetString(PyExc_TypeError, + "instance exception may not have a separate value"); + goto raise_error; + } + value = type; + type = (PyObject*) Py_TYPE(type); + Py_INCREF(type); + if (!PyType_IsSubtype((PyTypeObject *)type, (PyTypeObject *)PyExc_BaseException)) { + PyErr_SetString(PyExc_TypeError, + "raise: exception class must be a subclass of BaseException"); + goto raise_error; + } + } + __Pyx_PyThreadState_assign + __Pyx_ErrRestore(type, value, tb); + return; +raise_error: + Py_XDECREF(value); + Py_XDECREF(type); + Py_XDECREF(tb); + return; +} +#else +static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause) { + PyObject* owned_instance = NULL; + if (tb == Py_None) { + tb = 0; + } else if (tb && !PyTraceBack_Check(tb)) { + PyErr_SetString(PyExc_TypeError, + "raise: arg 3 must be a traceback or None"); + goto bad; + } + if (value == Py_None) + value = 0; + if (PyExceptionInstance_Check(type)) { + if (value) { + PyErr_SetString(PyExc_TypeError, + "instance exception may not have a separate value"); + goto bad; + } + value = type; + type = (PyObject*) Py_TYPE(value); + } else if (PyExceptionClass_Check(type)) { + PyObject *instance_class = NULL; + if (value && PyExceptionInstance_Check(value)) { + instance_class = (PyObject*) Py_TYPE(value); + if (instance_class != type) { + int is_subclass = PyObject_IsSubclass(instance_class, type); + if (!is_subclass) { + instance_class = NULL; + } else if (unlikely(is_subclass == -1)) { + goto bad; + } else { + type = instance_class; + } + } + } + if (!instance_class) { + PyObject *args; + if (!value) + args = PyTuple_New(0); + else if (PyTuple_Check(value)) { + Py_INCREF(value); + args = value; + } else + args = PyTuple_Pack(1, value); + if (!args) + goto bad; + owned_instance = PyObject_Call(type, args, NULL); + Py_DECREF(args); + if (!owned_instance) + goto bad; + value = owned_instance; + if (!PyExceptionInstance_Check(value)) { + PyErr_Format(PyExc_TypeError, + "calling %R should have returned an instance of " + "BaseException, not %R", + type, Py_TYPE(value)); + goto bad; + } + } + } else { + PyErr_SetString(PyExc_TypeError, + "raise: exception class must be a subclass of BaseException"); + goto bad; + } + if (cause) { + PyObject *fixed_cause; + if (cause == Py_None) { + fixed_cause = NULL; + } else if (PyExceptionClass_Check(cause)) { + fixed_cause = PyObject_CallObject(cause, NULL); + if (fixed_cause == NULL) + goto bad; + } else if (PyExceptionInstance_Check(cause)) { + fixed_cause = cause; + Py_INCREF(fixed_cause); + } else { + PyErr_SetString(PyExc_TypeError, + "exception causes must derive from " + "BaseException"); + goto bad; + } + PyException_SetCause(value, fixed_cause); + } + PyErr_SetObject(type, value); + if (tb) { +#if CYTHON_COMPILING_IN_PYPY + PyObject *tmp_type, *tmp_value, *tmp_tb; + PyErr_Fetch(&tmp_type, &tmp_value, &tmp_tb); + Py_INCREF(tb); + PyErr_Restore(tmp_type, tmp_value, tb); + Py_XDECREF(tmp_tb); +#else + PyThreadState *tstate = __Pyx_PyThreadState_Current; + PyObject* tmp_tb = tstate->curexc_traceback; + if (tb != tmp_tb) { + Py_INCREF(tb); + tstate->curexc_traceback = tb; + Py_XDECREF(tmp_tb); + } +#endif + } +bad: + Py_XDECREF(owned_instance); + return; +} +#endif + +/* ArgTypeTest */ +static int __Pyx__ArgTypeTest(PyObject *obj, PyTypeObject *type, const char *name, int exact) +{ + if (unlikely(!type)) { + PyErr_SetString(PyExc_SystemError, "Missing type object"); + return 0; + } + else if (exact) { + #if PY_MAJOR_VERSION == 2 + if ((type == &PyBaseString_Type) && likely(__Pyx_PyBaseString_CheckExact(obj))) return 1; + #endif + } + else { + if (likely(__Pyx_TypeCheck(obj, type))) return 1; + } + PyErr_Format(PyExc_TypeError, + "Argument '%.200s' has incorrect type (expected %.200s, got %.200s)", + name, type->tp_name, Py_TYPE(obj)->tp_name); + return 0; +} + +/* GetItemInt */ +static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j) { + PyObject *r; + if (!j) return NULL; + r = PyObject_GetItem(o, j); + Py_DECREF(j); + return r; +} +static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i, + CYTHON_NCP_UNUSED int wraparound, + CYTHON_NCP_UNUSED int boundscheck) { +#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + Py_ssize_t wrapped_i = i; + if (wraparound & unlikely(i < 0)) { + wrapped_i += PyList_GET_SIZE(o); + } + if ((!boundscheck) || likely(__Pyx_is_valid_index(wrapped_i, PyList_GET_SIZE(o)))) { + PyObject *r = PyList_GET_ITEM(o, wrapped_i); + Py_INCREF(r); + return r; + } + return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); +#else + return PySequence_GetItem(o, i); +#endif +} +static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i, + CYTHON_NCP_UNUSED int wraparound, + CYTHON_NCP_UNUSED int boundscheck) { +#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + Py_ssize_t wrapped_i = i; + if (wraparound & unlikely(i < 0)) { + wrapped_i += PyTuple_GET_SIZE(o); + } + if ((!boundscheck) || likely(__Pyx_is_valid_index(wrapped_i, PyTuple_GET_SIZE(o)))) { + PyObject *r = PyTuple_GET_ITEM(o, wrapped_i); + Py_INCREF(r); + return r; + } + return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); +#else + return PySequence_GetItem(o, i); +#endif +} +static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, int is_list, + CYTHON_NCP_UNUSED int wraparound, + CYTHON_NCP_UNUSED int boundscheck) { +#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS && CYTHON_USE_TYPE_SLOTS + if (is_list || PyList_CheckExact(o)) { + Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyList_GET_SIZE(o); + if ((!boundscheck) || (likely(__Pyx_is_valid_index(n, PyList_GET_SIZE(o))))) { + PyObject *r = PyList_GET_ITEM(o, n); + Py_INCREF(r); + return r; + } + } + else if (PyTuple_CheckExact(o)) { + Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyTuple_GET_SIZE(o); + if ((!boundscheck) || likely(__Pyx_is_valid_index(n, PyTuple_GET_SIZE(o)))) { + PyObject *r = PyTuple_GET_ITEM(o, n); + Py_INCREF(r); + return r; + } + } else { + PySequenceMethods *m = Py_TYPE(o)->tp_as_sequence; + if (likely(m && m->sq_item)) { + if (wraparound && unlikely(i < 0) && likely(m->sq_length)) { + Py_ssize_t l = m->sq_length(o); + if (likely(l >= 0)) { + i += l; + } else { + if (!PyErr_ExceptionMatches(PyExc_OverflowError)) + return NULL; + PyErr_Clear(); + } + } + return m->sq_item(o, i); + } + } +#else + if (is_list || PySequence_Check(o)) { + return PySequence_GetItem(o, i); + } +#endif + return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); +} + +/* DictGetItem */ +#if PY_MAJOR_VERSION >= 3 && !CYTHON_COMPILING_IN_PYPY +static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key) { + PyObject *value; + value = PyDict_GetItemWithError(d, key); + if (unlikely(!value)) { + if (!PyErr_Occurred()) { + if (unlikely(PyTuple_Check(key))) { + PyObject* args = PyTuple_Pack(1, key); + if (likely(args)) { + PyErr_SetObject(PyExc_KeyError, args); + Py_DECREF(args); + } + } else { + PyErr_SetObject(PyExc_KeyError, key); + } + } + return NULL; + } + Py_INCREF(value); + return value; +} +#endif + +/* PyCFunctionFastCall */ +#if CYTHON_FAST_PYCCALL +static CYTHON_INLINE PyObject * __Pyx_PyCFunction_FastCall(PyObject *func_obj, PyObject **args, Py_ssize_t nargs) { + PyCFunctionObject *func = (PyCFunctionObject*)func_obj; + PyCFunction meth = PyCFunction_GET_FUNCTION(func); + PyObject *self = PyCFunction_GET_SELF(func); + int flags = PyCFunction_GET_FLAGS(func); + assert(PyCFunction_Check(func)); + assert(METH_FASTCALL == (flags & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS | METH_STACKLESS))); + assert(nargs >= 0); + assert(nargs == 0 || args != NULL); + /* _PyCFunction_FastCallDict() must not be called with an exception set, + because it may clear it (directly or indirectly) and so the + caller loses its exception */ + assert(!PyErr_Occurred()); + if ((PY_VERSION_HEX < 0x030700A0) || unlikely(flags & METH_KEYWORDS)) { + return (*((__Pyx_PyCFunctionFastWithKeywords)(void*)meth)) (self, args, nargs, NULL); + } else { + return (*((__Pyx_PyCFunctionFast)(void*)meth)) (self, args, nargs); + } +} +#endif + +/* PyFunctionFastCall */ +#if CYTHON_FAST_PYCALL +static PyObject* __Pyx_PyFunction_FastCallNoKw(PyCodeObject *co, PyObject **args, Py_ssize_t na, + PyObject *globals) { + PyFrameObject *f; + PyThreadState *tstate = __Pyx_PyThreadState_Current; + PyObject **fastlocals; + Py_ssize_t i; + PyObject *result; + assert(globals != NULL); + /* XXX Perhaps we should create a specialized + PyFrame_New() that doesn't take locals, but does + take builtins without sanity checking them. + */ + assert(tstate != NULL); + f = PyFrame_New(tstate, co, globals, NULL); + if (f == NULL) { + return NULL; + } + fastlocals = __Pyx_PyFrame_GetLocalsplus(f); + for (i = 0; i < na; i++) { + Py_INCREF(*args); + fastlocals[i] = *args++; + } + result = PyEval_EvalFrameEx(f,0); + ++tstate->recursion_depth; + Py_DECREF(f); + --tstate->recursion_depth; + return result; +} +#if 1 || PY_VERSION_HEX < 0x030600B1 +static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, Py_ssize_t nargs, PyObject *kwargs) { + PyCodeObject *co = (PyCodeObject *)PyFunction_GET_CODE(func); + PyObject *globals = PyFunction_GET_GLOBALS(func); + PyObject *argdefs = PyFunction_GET_DEFAULTS(func); + PyObject *closure; +#if PY_MAJOR_VERSION >= 3 + PyObject *kwdefs; +#endif + PyObject *kwtuple, **k; + PyObject **d; + Py_ssize_t nd; + Py_ssize_t nk; + PyObject *result; + assert(kwargs == NULL || PyDict_Check(kwargs)); + nk = kwargs ? PyDict_Size(kwargs) : 0; + if (Py_EnterRecursiveCall((char*)" while calling a Python object")) { + return NULL; + } + if ( +#if PY_MAJOR_VERSION >= 3 + co->co_kwonlyargcount == 0 && +#endif + likely(kwargs == NULL || nk == 0) && + co->co_flags == (CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE)) { + if (argdefs == NULL && co->co_argcount == nargs) { + result = __Pyx_PyFunction_FastCallNoKw(co, args, nargs, globals); + goto done; + } + else if (nargs == 0 && argdefs != NULL + && co->co_argcount == Py_SIZE(argdefs)) { + /* function called with no arguments, but all parameters have + a default value: use default values as arguments .*/ + args = &PyTuple_GET_ITEM(argdefs, 0); + result =__Pyx_PyFunction_FastCallNoKw(co, args, Py_SIZE(argdefs), globals); + goto done; + } + } + if (kwargs != NULL) { + Py_ssize_t pos, i; + kwtuple = PyTuple_New(2 * nk); + if (kwtuple == NULL) { + result = NULL; + goto done; + } + k = &PyTuple_GET_ITEM(kwtuple, 0); + pos = i = 0; + while (PyDict_Next(kwargs, &pos, &k[i], &k[i+1])) { + Py_INCREF(k[i]); + Py_INCREF(k[i+1]); + i += 2; + } + nk = i / 2; + } + else { + kwtuple = NULL; + k = NULL; + } + closure = PyFunction_GET_CLOSURE(func); +#if PY_MAJOR_VERSION >= 3 + kwdefs = PyFunction_GET_KW_DEFAULTS(func); +#endif + if (argdefs != NULL) { + d = &PyTuple_GET_ITEM(argdefs, 0); + nd = Py_SIZE(argdefs); + } + else { + d = NULL; + nd = 0; + } +#if PY_MAJOR_VERSION >= 3 + result = PyEval_EvalCodeEx((PyObject*)co, globals, (PyObject *)NULL, + args, (int)nargs, + k, (int)nk, + d, (int)nd, kwdefs, closure); +#else + result = PyEval_EvalCodeEx(co, globals, (PyObject *)NULL, + args, (int)nargs, + k, (int)nk, + d, (int)nd, closure); +#endif + Py_XDECREF(kwtuple); +done: + Py_LeaveRecursiveCall(); + return result; +} +#endif +#endif + +/* PyObjectCallMethO */ +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg) { + PyObject *self, *result; + PyCFunction cfunc; + cfunc = PyCFunction_GET_FUNCTION(func); + self = PyCFunction_GET_SELF(func); + if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) + return NULL; + result = cfunc(self, arg); + Py_LeaveRecursiveCall(); + if (unlikely(!result) && unlikely(!PyErr_Occurred())) { + PyErr_SetString( + PyExc_SystemError, + "NULL result without error in PyObject_Call"); + } + return result; +} +#endif + +/* PyObjectCallOneArg */ +#if CYTHON_COMPILING_IN_CPYTHON +static PyObject* __Pyx__PyObject_CallOneArg(PyObject *func, PyObject *arg) { + PyObject *result; + PyObject *args = PyTuple_New(1); + if (unlikely(!args)) return NULL; + Py_INCREF(arg); + PyTuple_SET_ITEM(args, 0, arg); + result = __Pyx_PyObject_Call(func, args, NULL); + Py_DECREF(args); + return result; +} +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) { +#if CYTHON_FAST_PYCALL + if (PyFunction_Check(func)) { + return __Pyx_PyFunction_FastCall(func, &arg, 1); + } +#endif + if (likely(PyCFunction_Check(func))) { + if (likely(PyCFunction_GET_FLAGS(func) & METH_O)) { + return __Pyx_PyObject_CallMethO(func, arg); +#if CYTHON_FAST_PYCCALL + } else if (PyCFunction_GET_FLAGS(func) & METH_FASTCALL) { + return __Pyx_PyCFunction_FastCall(func, &arg, 1); +#endif + } + } + return __Pyx__PyObject_CallOneArg(func, arg); +} +#else +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) { + PyObject *result; + PyObject *args = PyTuple_Pack(1, arg); + if (unlikely(!args)) return NULL; + result = __Pyx_PyObject_Call(func, args, NULL); + Py_DECREF(args); + return result; +} +#endif + +/* PyDictVersioning */ +#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS +static CYTHON_INLINE PY_UINT64_T __Pyx_get_tp_dict_version(PyObject *obj) { + PyObject *dict = Py_TYPE(obj)->tp_dict; + return likely(dict) ? __PYX_GET_DICT_VERSION(dict) : 0; +} +static CYTHON_INLINE PY_UINT64_T __Pyx_get_object_dict_version(PyObject *obj) { + PyObject **dictptr = NULL; + Py_ssize_t offset = Py_TYPE(obj)->tp_dictoffset; + if (offset) { +#if CYTHON_COMPILING_IN_CPYTHON + dictptr = (likely(offset > 0)) ? (PyObject **) ((char *)obj + offset) : _PyObject_GetDictPtr(obj); +#else + dictptr = _PyObject_GetDictPtr(obj); +#endif + } + return (dictptr && *dictptr) ? __PYX_GET_DICT_VERSION(*dictptr) : 0; +} +static CYTHON_INLINE int __Pyx_object_dict_version_matches(PyObject* obj, PY_UINT64_T tp_dict_version, PY_UINT64_T obj_dict_version) { + PyObject *dict = Py_TYPE(obj)->tp_dict; + if (unlikely(!dict) || unlikely(tp_dict_version != __PYX_GET_DICT_VERSION(dict))) + return 0; + return obj_dict_version == __Pyx_get_object_dict_version(obj); +} +#endif + +/* GetModuleGlobalName */ +#if CYTHON_USE_DICT_VERSIONS +static PyObject *__Pyx__GetModuleGlobalName(PyObject *name, PY_UINT64_T *dict_version, PyObject **dict_cached_value) +#else +static CYTHON_INLINE PyObject *__Pyx__GetModuleGlobalName(PyObject *name) +#endif +{ + PyObject *result; +#if !CYTHON_AVOID_BORROWED_REFS +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1 + result = _PyDict_GetItem_KnownHash(__pyx_d, name, ((PyASCIIObject *) name)->hash); + __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version) + if (likely(result)) { + return __Pyx_NewRef(result); + } else if (unlikely(PyErr_Occurred())) { + return NULL; + } +#else + result = PyDict_GetItem(__pyx_d, name); + __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version) + if (likely(result)) { + return __Pyx_NewRef(result); + } +#endif +#else + result = PyObject_GetItem(__pyx_d, name); + __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version) + if (likely(result)) { + return __Pyx_NewRef(result); + } + PyErr_Clear(); +#endif + return __Pyx_GetBuiltinName(name); +} + +/* PyObjectCallNoArg */ +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) { +#if CYTHON_FAST_PYCALL + if (PyFunction_Check(func)) { + return __Pyx_PyFunction_FastCall(func, NULL, 0); + } +#endif +#ifdef __Pyx_CyFunction_USED + if (likely(PyCFunction_Check(func) || __Pyx_CyFunction_Check(func))) +#else + if (likely(PyCFunction_Check(func))) +#endif + { + if (likely(PyCFunction_GET_FLAGS(func) & METH_NOARGS)) { + return __Pyx_PyObject_CallMethO(func, NULL); + } + } + return __Pyx_PyObject_Call(func, __pyx_empty_tuple, NULL); +} +#endif + +/* PyFloatBinop */ +#if !CYTHON_COMPILING_IN_PYPY +static PyObject* __Pyx_PyFloat_TrueDivideObjC(PyObject *op1, PyObject *op2, double floatval, int inplace, int zerodivision_check) { + const double b = floatval; + double a, result; + (void)inplace; + (void)zerodivision_check; + if (likely(PyFloat_CheckExact(op1))) { + a = PyFloat_AS_DOUBLE(op1); + + } else + #if PY_MAJOR_VERSION < 3 + if (likely(PyInt_CheckExact(op1))) { + a = (double) PyInt_AS_LONG(op1); + + } else + #endif + if (likely(PyLong_CheckExact(op1))) { + #if CYTHON_USE_PYLONG_INTERNALS + const digit* digits = ((PyLongObject*)op1)->ob_digit; + const Py_ssize_t size = Py_SIZE(op1); + switch (size) { + case 0: a = 0.0; break; + case -1: a = -(double) digits[0]; break; + case 1: a = (double) digits[0]; break; + case -2: + case 2: + if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT && ((8 * sizeof(unsigned long) < 53) || (1 * PyLong_SHIFT < 53))) { + a = (double) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + if ((8 * sizeof(unsigned long) < 53) || (2 * PyLong_SHIFT < 53) || (a < (double) ((PY_LONG_LONG)1 << 53))) { + if (size == -2) + a = -a; + break; + } + } + CYTHON_FALLTHROUGH; + case -3: + case 3: + if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT && ((8 * sizeof(unsigned long) < 53) || (2 * PyLong_SHIFT < 53))) { + a = (double) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + if ((8 * sizeof(unsigned long) < 53) || (3 * PyLong_SHIFT < 53) || (a < (double) ((PY_LONG_LONG)1 << 53))) { + if (size == -3) + a = -a; + break; + } + } + CYTHON_FALLTHROUGH; + case -4: + case 4: + if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT && ((8 * sizeof(unsigned long) < 53) || (3 * PyLong_SHIFT < 53))) { + a = (double) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + if ((8 * sizeof(unsigned long) < 53) || (4 * PyLong_SHIFT < 53) || (a < (double) ((PY_LONG_LONG)1 << 53))) { + if (size == -4) + a = -a; + break; + } + } + CYTHON_FALLTHROUGH; + default: + #else + { + #endif + a = PyLong_AsDouble(op1); + if (unlikely(a == -1.0 && PyErr_Occurred())) return NULL; + + } + } else { + return (inplace ? PyNumber_InPlaceTrueDivide : PyNumber_TrueDivide)(op1, op2); + } + + PyFPE_START_PROTECT("divide", return NULL) + result = a / b; + PyFPE_END_PROTECT(result) + return PyFloat_FromDouble(result); +} +#endif + +/* None */ + static CYTHON_INLINE void __Pyx_RaiseUnboundLocalError(const char *varname) { + PyErr_Format(PyExc_UnboundLocalError, "local variable '%s' referenced before assignment", varname); +} + +/* PyObjectCall2Args */ + static CYTHON_UNUSED PyObject* __Pyx_PyObject_Call2Args(PyObject* function, PyObject* arg1, PyObject* arg2) { + PyObject *args, *result = NULL; + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(function)) { + PyObject *args[2] = {arg1, arg2}; + return __Pyx_PyFunction_FastCall(function, args, 2); + } + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(function)) { + PyObject *args[2] = {arg1, arg2}; + return __Pyx_PyCFunction_FastCall(function, args, 2); + } + #endif + args = PyTuple_New(2); + if (unlikely(!args)) goto done; + Py_INCREF(arg1); + PyTuple_SET_ITEM(args, 0, arg1); + Py_INCREF(arg2); + PyTuple_SET_ITEM(args, 1, arg2); + Py_INCREF(function); + result = __Pyx_PyObject_Call(function, args, NULL); + Py_DECREF(args); + Py_DECREF(function); +done: + return result; +} + +/* SliceObject */ + static CYTHON_INLINE PyObject* __Pyx_PyObject_GetSlice(PyObject* obj, + Py_ssize_t cstart, Py_ssize_t cstop, + PyObject** _py_start, PyObject** _py_stop, PyObject** _py_slice, + int has_cstart, int has_cstop, CYTHON_UNUSED int wraparound) { +#if CYTHON_USE_TYPE_SLOTS + PyMappingMethods* mp; +#if PY_MAJOR_VERSION < 3 + PySequenceMethods* ms = Py_TYPE(obj)->tp_as_sequence; + if (likely(ms && ms->sq_slice)) { + if (!has_cstart) { + if (_py_start && (*_py_start != Py_None)) { + cstart = __Pyx_PyIndex_AsSsize_t(*_py_start); + if ((cstart == (Py_ssize_t)-1) && PyErr_Occurred()) goto bad; + } else + cstart = 0; + } + if (!has_cstop) { + if (_py_stop && (*_py_stop != Py_None)) { + cstop = __Pyx_PyIndex_AsSsize_t(*_py_stop); + if ((cstop == (Py_ssize_t)-1) && PyErr_Occurred()) goto bad; + } else + cstop = PY_SSIZE_T_MAX; + } + if (wraparound && unlikely((cstart < 0) | (cstop < 0)) && likely(ms->sq_length)) { + Py_ssize_t l = ms->sq_length(obj); + if (likely(l >= 0)) { + if (cstop < 0) { + cstop += l; + if (cstop < 0) cstop = 0; + } + if (cstart < 0) { + cstart += l; + if (cstart < 0) cstart = 0; + } + } else { + if (!PyErr_ExceptionMatches(PyExc_OverflowError)) + goto bad; + PyErr_Clear(); + } + } + return ms->sq_slice(obj, cstart, cstop); + } +#endif + mp = Py_TYPE(obj)->tp_as_mapping; + if (likely(mp && mp->mp_subscript)) +#endif + { + PyObject* result; + PyObject *py_slice, *py_start, *py_stop; + if (_py_slice) { + py_slice = *_py_slice; + } else { + PyObject* owned_start = NULL; + PyObject* owned_stop = NULL; + if (_py_start) { + py_start = *_py_start; + } else { + if (has_cstart) { + owned_start = py_start = PyInt_FromSsize_t(cstart); + if (unlikely(!py_start)) goto bad; + } else + py_start = Py_None; + } + if (_py_stop) { + py_stop = *_py_stop; + } else { + if (has_cstop) { + owned_stop = py_stop = PyInt_FromSsize_t(cstop); + if (unlikely(!py_stop)) { + Py_XDECREF(owned_start); + goto bad; + } + } else + py_stop = Py_None; + } + py_slice = PySlice_New(py_start, py_stop, Py_None); + Py_XDECREF(owned_start); + Py_XDECREF(owned_stop); + if (unlikely(!py_slice)) goto bad; + } +#if CYTHON_USE_TYPE_SLOTS + result = mp->mp_subscript(obj, py_slice); +#else + result = PyObject_GetItem(obj, py_slice); +#endif + if (!_py_slice) { + Py_DECREF(py_slice); + } + return result; + } + PyErr_Format(PyExc_TypeError, + "'%.200s' object is unsliceable", Py_TYPE(obj)->tp_name); +bad: + return NULL; +} + +/* RaiseTooManyValuesToUnpack */ + static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected) { + PyErr_Format(PyExc_ValueError, + "too many values to unpack (expected %" CYTHON_FORMAT_SSIZE_T "d)", expected); +} + +/* RaiseNeedMoreValuesToUnpack */ + static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index) { + PyErr_Format(PyExc_ValueError, + "need more than %" CYTHON_FORMAT_SSIZE_T "d value%.1s to unpack", + index, (index == 1) ? "" : "s"); +} + +/* IterFinish */ + static CYTHON_INLINE int __Pyx_IterFinish(void) { +#if CYTHON_FAST_THREAD_STATE + PyThreadState *tstate = __Pyx_PyThreadState_Current; + PyObject* exc_type = tstate->curexc_type; + if (unlikely(exc_type)) { + if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) { + PyObject *exc_value, *exc_tb; + exc_value = tstate->curexc_value; + exc_tb = tstate->curexc_traceback; + tstate->curexc_type = 0; + tstate->curexc_value = 0; + tstate->curexc_traceback = 0; + Py_DECREF(exc_type); + Py_XDECREF(exc_value); + Py_XDECREF(exc_tb); + return 0; + } else { + return -1; + } + } + return 0; +#else + if (unlikely(PyErr_Occurred())) { + if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) { + PyErr_Clear(); + return 0; + } else { + return -1; + } + } + return 0; +#endif +} + +/* UnpackItemEndCheck */ + static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected) { + if (unlikely(retval)) { + Py_DECREF(retval); + __Pyx_RaiseTooManyValuesError(expected); + return -1; + } else { + return __Pyx_IterFinish(); + } + return 0; +} + +/* ObjectGetItem */ + #if CYTHON_USE_TYPE_SLOTS +static PyObject *__Pyx_PyObject_GetIndex(PyObject *obj, PyObject* index) { + PyObject *runerr; + Py_ssize_t key_value; + PySequenceMethods *m = Py_TYPE(obj)->tp_as_sequence; + if (unlikely(!(m && m->sq_item))) { + PyErr_Format(PyExc_TypeError, "'%.200s' object is not subscriptable", Py_TYPE(obj)->tp_name); + return NULL; + } + key_value = __Pyx_PyIndex_AsSsize_t(index); + if (likely(key_value != -1 || !(runerr = PyErr_Occurred()))) { + return __Pyx_GetItemInt_Fast(obj, key_value, 0, 1, 1); + } + if (PyErr_GivenExceptionMatches(runerr, PyExc_OverflowError)) { + PyErr_Clear(); + PyErr_Format(PyExc_IndexError, "cannot fit '%.200s' into an index-sized integer", Py_TYPE(index)->tp_name); + } + return NULL; +} +static PyObject *__Pyx_PyObject_GetItem(PyObject *obj, PyObject* key) { + PyMappingMethods *m = Py_TYPE(obj)->tp_as_mapping; + if (likely(m && m->mp_subscript)) { + return m->mp_subscript(obj, key); + } + return __Pyx_PyObject_GetIndex(obj, key); +} +#endif + +/* SetItemInt */ + static int __Pyx_SetItemInt_Generic(PyObject *o, PyObject *j, PyObject *v) { + int r; + if (!j) return -1; + r = PyObject_SetItem(o, j, v); + Py_DECREF(j); + return r; +} +static CYTHON_INLINE int __Pyx_SetItemInt_Fast(PyObject *o, Py_ssize_t i, PyObject *v, int is_list, + CYTHON_NCP_UNUSED int wraparound, CYTHON_NCP_UNUSED int boundscheck) { +#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS && CYTHON_USE_TYPE_SLOTS + if (is_list || PyList_CheckExact(o)) { + Py_ssize_t n = (!wraparound) ? i : ((likely(i >= 0)) ? i : i + PyList_GET_SIZE(o)); + if ((!boundscheck) || likely(__Pyx_is_valid_index(n, PyList_GET_SIZE(o)))) { + PyObject* old = PyList_GET_ITEM(o, n); + Py_INCREF(v); + PyList_SET_ITEM(o, n, v); + Py_DECREF(old); + return 1; + } + } else { + PySequenceMethods *m = Py_TYPE(o)->tp_as_sequence; + if (likely(m && m->sq_ass_item)) { + if (wraparound && unlikely(i < 0) && likely(m->sq_length)) { + Py_ssize_t l = m->sq_length(o); + if (likely(l >= 0)) { + i += l; + } else { + if (!PyErr_ExceptionMatches(PyExc_OverflowError)) + return -1; + PyErr_Clear(); + } + } + return m->sq_ass_item(o, i, v); + } + } +#else +#if CYTHON_COMPILING_IN_PYPY + if (is_list || (PySequence_Check(o) && !PyDict_Check(o))) +#else + if (is_list || PySequence_Check(o)) +#endif + { + return PySequence_SetItem(o, i, v); + } +#endif + return __Pyx_SetItemInt_Generic(o, PyInt_FromSsize_t(i), v); +} + +/* GetTopmostException */ + #if CYTHON_USE_EXC_INFO_STACK +static _PyErr_StackItem * +__Pyx_PyErr_GetTopmostException(PyThreadState *tstate) +{ + _PyErr_StackItem *exc_info = tstate->exc_info; + while ((exc_info->exc_type == NULL || exc_info->exc_type == Py_None) && + exc_info->previous_item != NULL) + { + exc_info = exc_info->previous_item; + } + return exc_info; +} +#endif + +/* SaveResetException */ + #if CYTHON_FAST_THREAD_STATE +static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { + #if CYTHON_USE_EXC_INFO_STACK + _PyErr_StackItem *exc_info = __Pyx_PyErr_GetTopmostException(tstate); + *type = exc_info->exc_type; + *value = exc_info->exc_value; + *tb = exc_info->exc_traceback; + #else + *type = tstate->exc_type; + *value = tstate->exc_value; + *tb = tstate->exc_traceback; + #endif + Py_XINCREF(*type); + Py_XINCREF(*value); + Py_XINCREF(*tb); +} +static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) { + PyObject *tmp_type, *tmp_value, *tmp_tb; + #if CYTHON_USE_EXC_INFO_STACK + _PyErr_StackItem *exc_info = tstate->exc_info; + tmp_type = exc_info->exc_type; + tmp_value = exc_info->exc_value; + tmp_tb = exc_info->exc_traceback; + exc_info->exc_type = type; + exc_info->exc_value = value; + exc_info->exc_traceback = tb; + #else + tmp_type = tstate->exc_type; + tmp_value = tstate->exc_value; + tmp_tb = tstate->exc_traceback; + tstate->exc_type = type; + tstate->exc_value = value; + tstate->exc_traceback = tb; + #endif + Py_XDECREF(tmp_type); + Py_XDECREF(tmp_value); + Py_XDECREF(tmp_tb); +} +#endif + +/* PyErrExceptionMatches */ + #if CYTHON_FAST_THREAD_STATE +static int __Pyx_PyErr_ExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) { + Py_ssize_t i, n; + n = PyTuple_GET_SIZE(tuple); +#if PY_MAJOR_VERSION >= 3 + for (i=0; icurexc_type; + if (exc_type == err) return 1; + if (unlikely(!exc_type)) return 0; + if (unlikely(PyTuple_Check(err))) + return __Pyx_PyErr_ExceptionMatchesTuple(exc_type, err); + return __Pyx_PyErr_GivenExceptionMatches(exc_type, err); +} +#endif + +/* PyObject_GenericGetAttrNoDict */ + #if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 +static PyObject *__Pyx_RaiseGenericGetAttributeError(PyTypeObject *tp, PyObject *attr_name) { + PyErr_Format(PyExc_AttributeError, +#if PY_MAJOR_VERSION >= 3 + "'%.50s' object has no attribute '%U'", + tp->tp_name, attr_name); +#else + "'%.50s' object has no attribute '%.400s'", + tp->tp_name, PyString_AS_STRING(attr_name)); +#endif + return NULL; +} +static CYTHON_INLINE PyObject* __Pyx_PyObject_GenericGetAttrNoDict(PyObject* obj, PyObject* attr_name) { + PyObject *descr; + PyTypeObject *tp = Py_TYPE(obj); + if (unlikely(!PyString_Check(attr_name))) { + return PyObject_GenericGetAttr(obj, attr_name); + } + assert(!tp->tp_dictoffset); + descr = _PyType_Lookup(tp, attr_name); + if (unlikely(!descr)) { + return __Pyx_RaiseGenericGetAttributeError(tp, attr_name); + } + Py_INCREF(descr); + #if PY_MAJOR_VERSION < 3 + if (likely(PyType_HasFeature(Py_TYPE(descr), Py_TPFLAGS_HAVE_CLASS))) + #endif + { + descrgetfunc f = Py_TYPE(descr)->tp_descr_get; + if (unlikely(f)) { + PyObject *res = f(descr, obj, (PyObject *)tp); + Py_DECREF(descr); + return res; + } + } + return descr; +} +#endif + +/* PyObject_GenericGetAttr */ + #if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 +static PyObject* __Pyx_PyObject_GenericGetAttr(PyObject* obj, PyObject* attr_name) { + if (unlikely(Py_TYPE(obj)->tp_dictoffset)) { + return PyObject_GenericGetAttr(obj, attr_name); + } + return __Pyx_PyObject_GenericGetAttrNoDict(obj, attr_name); +} +#endif + +/* PyObjectGetAttrStrNoError */ + static void __Pyx_PyObject_GetAttrStr_ClearAttributeError(void) { + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + if (likely(__Pyx_PyErr_ExceptionMatches(PyExc_AttributeError))) + __Pyx_PyErr_Clear(); +} +static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStrNoError(PyObject* obj, PyObject* attr_name) { + PyObject *result; +#if CYTHON_COMPILING_IN_CPYTHON && CYTHON_USE_TYPE_SLOTS && PY_VERSION_HEX >= 0x030700B1 + PyTypeObject* tp = Py_TYPE(obj); + if (likely(tp->tp_getattro == PyObject_GenericGetAttr)) { + return _PyObject_GenericGetAttrWithDict(obj, attr_name, NULL, 1); + } +#endif + result = __Pyx_PyObject_GetAttrStr(obj, attr_name); + if (unlikely(!result)) { + __Pyx_PyObject_GetAttrStr_ClearAttributeError(); + } + return result; +} + +/* SetupReduce */ + static int __Pyx_setup_reduce_is_named(PyObject* meth, PyObject* name) { + int ret; + PyObject *name_attr; + name_attr = __Pyx_PyObject_GetAttrStr(meth, __pyx_n_s_name); + if (likely(name_attr)) { + ret = PyObject_RichCompareBool(name_attr, name, Py_EQ); + } else { + ret = -1; + } + if (unlikely(ret < 0)) { + PyErr_Clear(); + ret = 0; + } + Py_XDECREF(name_attr); + return ret; +} +static int __Pyx_setup_reduce(PyObject* type_obj) { + int ret = 0; + PyObject *object_reduce = NULL; + PyObject *object_reduce_ex = NULL; + PyObject *reduce = NULL; + PyObject *reduce_ex = NULL; + PyObject *reduce_cython = NULL; + PyObject *setstate = NULL; + PyObject *setstate_cython = NULL; +#if CYTHON_USE_PYTYPE_LOOKUP + if (_PyType_Lookup((PyTypeObject*)type_obj, __pyx_n_s_getstate)) goto __PYX_GOOD; +#else + if (PyObject_HasAttr(type_obj, __pyx_n_s_getstate)) goto __PYX_GOOD; +#endif +#if CYTHON_USE_PYTYPE_LOOKUP + object_reduce_ex = _PyType_Lookup(&PyBaseObject_Type, __pyx_n_s_reduce_ex); if (!object_reduce_ex) goto __PYX_BAD; +#else + object_reduce_ex = __Pyx_PyObject_GetAttrStr((PyObject*)&PyBaseObject_Type, __pyx_n_s_reduce_ex); if (!object_reduce_ex) goto __PYX_BAD; +#endif + reduce_ex = __Pyx_PyObject_GetAttrStr(type_obj, __pyx_n_s_reduce_ex); if (unlikely(!reduce_ex)) goto __PYX_BAD; + if (reduce_ex == object_reduce_ex) { +#if CYTHON_USE_PYTYPE_LOOKUP + object_reduce = _PyType_Lookup(&PyBaseObject_Type, __pyx_n_s_reduce); if (!object_reduce) goto __PYX_BAD; +#else + object_reduce = __Pyx_PyObject_GetAttrStr((PyObject*)&PyBaseObject_Type, __pyx_n_s_reduce); if (!object_reduce) goto __PYX_BAD; +#endif + reduce = __Pyx_PyObject_GetAttrStr(type_obj, __pyx_n_s_reduce); if (unlikely(!reduce)) goto __PYX_BAD; + if (reduce == object_reduce || __Pyx_setup_reduce_is_named(reduce, __pyx_n_s_reduce_cython)) { + reduce_cython = __Pyx_PyObject_GetAttrStrNoError(type_obj, __pyx_n_s_reduce_cython); + if (likely(reduce_cython)) { + ret = PyDict_SetItem(((PyTypeObject*)type_obj)->tp_dict, __pyx_n_s_reduce, reduce_cython); if (unlikely(ret < 0)) goto __PYX_BAD; + ret = PyDict_DelItem(((PyTypeObject*)type_obj)->tp_dict, __pyx_n_s_reduce_cython); if (unlikely(ret < 0)) goto __PYX_BAD; + } else if (reduce == object_reduce || PyErr_Occurred()) { + goto __PYX_BAD; + } + setstate = __Pyx_PyObject_GetAttrStr(type_obj, __pyx_n_s_setstate); + if (!setstate) PyErr_Clear(); + if (!setstate || __Pyx_setup_reduce_is_named(setstate, __pyx_n_s_setstate_cython)) { + setstate_cython = __Pyx_PyObject_GetAttrStrNoError(type_obj, __pyx_n_s_setstate_cython); + if (likely(setstate_cython)) { + ret = PyDict_SetItem(((PyTypeObject*)type_obj)->tp_dict, __pyx_n_s_setstate, setstate_cython); if (unlikely(ret < 0)) goto __PYX_BAD; + ret = PyDict_DelItem(((PyTypeObject*)type_obj)->tp_dict, __pyx_n_s_setstate_cython); if (unlikely(ret < 0)) goto __PYX_BAD; + } else if (!setstate || PyErr_Occurred()) { + goto __PYX_BAD; + } + } + PyType_Modified((PyTypeObject*)type_obj); + } + } + goto __PYX_GOOD; +__PYX_BAD: + if (!PyErr_Occurred()) + PyErr_Format(PyExc_RuntimeError, "Unable to initialize pickling for %s", ((PyTypeObject*)type_obj)->tp_name); + ret = -1; +__PYX_GOOD: +#if !CYTHON_USE_PYTYPE_LOOKUP + Py_XDECREF(object_reduce); + Py_XDECREF(object_reduce_ex); +#endif + Py_XDECREF(reduce); + Py_XDECREF(reduce_ex); + Py_XDECREF(reduce_cython); + Py_XDECREF(setstate); + Py_XDECREF(setstate_cython); + return ret; +} + +/* Import */ + static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) { + PyObject *empty_list = 0; + PyObject *module = 0; + PyObject *global_dict = 0; + PyObject *empty_dict = 0; + PyObject *list; + #if PY_MAJOR_VERSION < 3 + PyObject *py_import; + py_import = __Pyx_PyObject_GetAttrStr(__pyx_b, __pyx_n_s_import); + if (!py_import) + goto bad; + #endif + if (from_list) + list = from_list; + else { + empty_list = PyList_New(0); + if (!empty_list) + goto bad; + list = empty_list; + } + global_dict = PyModule_GetDict(__pyx_m); + if (!global_dict) + goto bad; + empty_dict = PyDict_New(); + if (!empty_dict) + goto bad; + { + #if PY_MAJOR_VERSION >= 3 + if (level == -1) { + if ((1) && (strchr(__Pyx_MODULE_NAME, '.'))) { + module = PyImport_ImportModuleLevelObject( + name, global_dict, empty_dict, list, 1); + if (!module) { + if (!PyErr_ExceptionMatches(PyExc_ImportError)) + goto bad; + PyErr_Clear(); + } + } + level = 0; + } + #endif + if (!module) { + #if PY_MAJOR_VERSION < 3 + PyObject *py_level = PyInt_FromLong(level); + if (!py_level) + goto bad; + module = PyObject_CallFunctionObjArgs(py_import, + name, global_dict, empty_dict, list, py_level, (PyObject *)NULL); + Py_DECREF(py_level); + #else + module = PyImport_ImportModuleLevelObject( + name, global_dict, empty_dict, list, level); + #endif + } + } +bad: + #if PY_MAJOR_VERSION < 3 + Py_XDECREF(py_import); + #endif + Py_XDECREF(empty_list); + Py_XDECREF(empty_dict); + return module; +} + +/* ImportFrom */ + static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name) { + PyObject* value = __Pyx_PyObject_GetAttrStr(module, name); + if (unlikely(!value) && PyErr_ExceptionMatches(PyExc_AttributeError)) { + PyErr_Format(PyExc_ImportError, + #if PY_MAJOR_VERSION < 3 + "cannot import name %.230s", PyString_AS_STRING(name)); + #else + "cannot import name %S", name); + #endif + } + return value; +} + +/* CLineInTraceback */ + #ifndef CYTHON_CLINE_IN_TRACEBACK +static int __Pyx_CLineForTraceback(CYTHON_NCP_UNUSED PyThreadState *tstate, int c_line) { + PyObject *use_cline; + PyObject *ptype, *pvalue, *ptraceback; +#if CYTHON_COMPILING_IN_CPYTHON + PyObject **cython_runtime_dict; +#endif + if (unlikely(!__pyx_cython_runtime)) { + return c_line; + } + __Pyx_ErrFetchInState(tstate, &ptype, &pvalue, &ptraceback); +#if CYTHON_COMPILING_IN_CPYTHON + cython_runtime_dict = _PyObject_GetDictPtr(__pyx_cython_runtime); + if (likely(cython_runtime_dict)) { + __PYX_PY_DICT_LOOKUP_IF_MODIFIED( + use_cline, *cython_runtime_dict, + __Pyx_PyDict_GetItemStr(*cython_runtime_dict, __pyx_n_s_cline_in_traceback)) + } else +#endif + { + PyObject *use_cline_obj = __Pyx_PyObject_GetAttrStr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback); + if (use_cline_obj) { + use_cline = PyObject_Not(use_cline_obj) ? Py_False : Py_True; + Py_DECREF(use_cline_obj); + } else { + PyErr_Clear(); + use_cline = NULL; + } + } + if (!use_cline) { + c_line = 0; + PyObject_SetAttr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback, Py_False); + } + else if (use_cline == Py_False || (use_cline != Py_True && PyObject_Not(use_cline) != 0)) { + c_line = 0; + } + __Pyx_ErrRestoreInState(tstate, ptype, pvalue, ptraceback); + return c_line; +} +#endif + +/* CodeObjectCache */ + static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) { + int start = 0, mid = 0, end = count - 1; + if (end >= 0 && code_line > entries[end].code_line) { + return count; + } + while (start < end) { + mid = start + (end - start) / 2; + if (code_line < entries[mid].code_line) { + end = mid; + } else if (code_line > entries[mid].code_line) { + start = mid + 1; + } else { + return mid; + } + } + if (code_line <= entries[mid].code_line) { + return mid; + } else { + return mid + 1; + } +} +static PyCodeObject *__pyx_find_code_object(int code_line) { + PyCodeObject* code_object; + int pos; + if (unlikely(!code_line) || unlikely(!__pyx_code_cache.entries)) { + return NULL; + } + pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line); + if (unlikely(pos >= __pyx_code_cache.count) || unlikely(__pyx_code_cache.entries[pos].code_line != code_line)) { + return NULL; + } + code_object = __pyx_code_cache.entries[pos].code_object; + Py_INCREF(code_object); + return code_object; +} +static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) { + int pos, i; + __Pyx_CodeObjectCacheEntry* entries = __pyx_code_cache.entries; + if (unlikely(!code_line)) { + return; + } + if (unlikely(!entries)) { + entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Malloc(64*sizeof(__Pyx_CodeObjectCacheEntry)); + if (likely(entries)) { + __pyx_code_cache.entries = entries; + __pyx_code_cache.max_count = 64; + __pyx_code_cache.count = 1; + entries[0].code_line = code_line; + entries[0].code_object = code_object; + Py_INCREF(code_object); + } + return; + } + pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line); + if ((pos < __pyx_code_cache.count) && unlikely(__pyx_code_cache.entries[pos].code_line == code_line)) { + PyCodeObject* tmp = entries[pos].code_object; + entries[pos].code_object = code_object; + Py_DECREF(tmp); + return; + } + if (__pyx_code_cache.count == __pyx_code_cache.max_count) { + int new_max = __pyx_code_cache.max_count + 64; + entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Realloc( + __pyx_code_cache.entries, ((size_t)new_max) * sizeof(__Pyx_CodeObjectCacheEntry)); + if (unlikely(!entries)) { + return; + } + __pyx_code_cache.entries = entries; + __pyx_code_cache.max_count = new_max; + } + for (i=__pyx_code_cache.count; i>pos; i--) { + entries[i] = entries[i-1]; + } + entries[pos].code_line = code_line; + entries[pos].code_object = code_object; + __pyx_code_cache.count++; + Py_INCREF(code_object); +} + +/* AddTraceback */ + #include "compile.h" +#include "frameobject.h" +#include "traceback.h" +static PyCodeObject* __Pyx_CreateCodeObjectForTraceback( + const char *funcname, int c_line, + int py_line, const char *filename) { + PyCodeObject *py_code = 0; + PyObject *py_srcfile = 0; + PyObject *py_funcname = 0; + #if PY_MAJOR_VERSION < 3 + py_srcfile = PyString_FromString(filename); + #else + py_srcfile = PyUnicode_FromString(filename); + #endif + if (!py_srcfile) goto bad; + if (c_line) { + #if PY_MAJOR_VERSION < 3 + py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); + #else + py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); + #endif + } + else { + #if PY_MAJOR_VERSION < 3 + py_funcname = PyString_FromString(funcname); + #else + py_funcname = PyUnicode_FromString(funcname); + #endif + } + if (!py_funcname) goto bad; + py_code = __Pyx_PyCode_New( + 0, + 0, + 0, + 0, + 0, + __pyx_empty_bytes, /*PyObject *code,*/ + __pyx_empty_tuple, /*PyObject *consts,*/ + __pyx_empty_tuple, /*PyObject *names,*/ + __pyx_empty_tuple, /*PyObject *varnames,*/ + __pyx_empty_tuple, /*PyObject *freevars,*/ + __pyx_empty_tuple, /*PyObject *cellvars,*/ + py_srcfile, /*PyObject *filename,*/ + py_funcname, /*PyObject *name,*/ + py_line, + __pyx_empty_bytes /*PyObject *lnotab*/ + ); + Py_DECREF(py_srcfile); + Py_DECREF(py_funcname); + return py_code; +bad: + Py_XDECREF(py_srcfile); + Py_XDECREF(py_funcname); + return NULL; +} +static void __Pyx_AddTraceback(const char *funcname, int c_line, + int py_line, const char *filename) { + PyCodeObject *py_code = 0; + PyFrameObject *py_frame = 0; + PyThreadState *tstate = __Pyx_PyThreadState_Current; + if (c_line) { + c_line = __Pyx_CLineForTraceback(tstate, c_line); + } + py_code = __pyx_find_code_object(c_line ? -c_line : py_line); + if (!py_code) { + py_code = __Pyx_CreateCodeObjectForTraceback( + funcname, c_line, py_line, filename); + if (!py_code) goto bad; + __pyx_insert_code_object(c_line ? -c_line : py_line, py_code); + } + py_frame = PyFrame_New( + tstate, /*PyThreadState *tstate,*/ + py_code, /*PyCodeObject *code,*/ + __pyx_d, /*PyObject *globals,*/ + 0 /*PyObject *locals*/ + ); + if (!py_frame) goto bad; + __Pyx_PyFrame_SetLineNumber(py_frame, py_line); + PyTraceBack_Here(py_frame); +bad: + Py_XDECREF(py_code); + Py_XDECREF(py_frame); +} + +/* CIntFromPyVerify */ + #define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\ + __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 0) +#define __PYX_VERIFY_RETURN_INT_EXC(target_type, func_type, func_value)\ + __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 1) +#define __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, exc)\ + {\ + func_type value = func_value;\ + if (sizeof(target_type) < sizeof(func_type)) {\ + if (unlikely(value != (func_type) (target_type) value)) {\ + func_type zero = 0;\ + if (exc && unlikely(value == (func_type)-1 && PyErr_Occurred()))\ + return (target_type) -1;\ + if (is_unsigned && unlikely(value < zero))\ + goto raise_neg_overflow;\ + else\ + goto raise_overflow;\ + }\ + }\ + return (target_type) value;\ + } + +/* CIntToPy */ + static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) { + const long neg_one = (long) ((long) 0 - (long) 1), const_zero = (long) 0; + const int is_unsigned = neg_one > const_zero; + if (is_unsigned) { + if (sizeof(long) < sizeof(long)) { + return PyInt_FromLong((long) value); + } else if (sizeof(long) <= sizeof(unsigned long)) { + return PyLong_FromUnsignedLong((unsigned long) value); +#ifdef HAVE_LONG_LONG + } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) { + return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); +#endif + } + } else { + if (sizeof(long) <= sizeof(long)) { + return PyInt_FromLong((long) value); +#ifdef HAVE_LONG_LONG + } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) { + return PyLong_FromLongLong((PY_LONG_LONG) value); +#endif + } + } + { + int one = 1; int little = (int)*(unsigned char *)&one; + unsigned char *bytes = (unsigned char *)&value; + return _PyLong_FromByteArray(bytes, sizeof(long), + little, !is_unsigned); + } +} + +/* CIntFromPy */ + static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) { + const int neg_one = (int) ((int) 0 - (int) 1), const_zero = (int) 0; + const int is_unsigned = neg_one > const_zero; +#if PY_MAJOR_VERSION < 3 + if (likely(PyInt_Check(x))) { + if (sizeof(int) < sizeof(long)) { + __PYX_VERIFY_RETURN_INT(int, long, PyInt_AS_LONG(x)) + } else { + long val = PyInt_AS_LONG(x); + if (is_unsigned && unlikely(val < 0)) { + goto raise_neg_overflow; + } + return (int) val; + } + } else +#endif + if (likely(PyLong_Check(x))) { + if (is_unsigned) { +#if CYTHON_USE_PYLONG_INTERNALS + const digit* digits = ((PyLongObject*)x)->ob_digit; + switch (Py_SIZE(x)) { + case 0: return (int) 0; + case 1: __PYX_VERIFY_RETURN_INT(int, digit, digits[0]) + case 2: + if (8 * sizeof(int) > 1 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(int) >= 2 * PyLong_SHIFT) { + return (int) (((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); + } + } + break; + case 3: + if (8 * sizeof(int) > 2 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(int) >= 3 * PyLong_SHIFT) { + return (int) (((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); + } + } + break; + case 4: + if (8 * sizeof(int) > 3 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(int) >= 4 * PyLong_SHIFT) { + return (int) (((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); + } + } + break; + } +#endif +#if CYTHON_COMPILING_IN_CPYTHON + if (unlikely(Py_SIZE(x) < 0)) { + goto raise_neg_overflow; + } +#else + { + int result = PyObject_RichCompareBool(x, Py_False, Py_LT); + if (unlikely(result < 0)) + return (int) -1; + if (unlikely(result == 1)) + goto raise_neg_overflow; + } +#endif + if (sizeof(int) <= sizeof(unsigned long)) { + __PYX_VERIFY_RETURN_INT_EXC(int, unsigned long, PyLong_AsUnsignedLong(x)) +#ifdef HAVE_LONG_LONG + } else if (sizeof(int) <= sizeof(unsigned PY_LONG_LONG)) { + __PYX_VERIFY_RETURN_INT_EXC(int, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) +#endif + } + } else { +#if CYTHON_USE_PYLONG_INTERNALS + const digit* digits = ((PyLongObject*)x)->ob_digit; + switch (Py_SIZE(x)) { + case 0: return (int) 0; + case -1: __PYX_VERIFY_RETURN_INT(int, sdigit, (sdigit) (-(sdigit)digits[0])) + case 1: __PYX_VERIFY_RETURN_INT(int, digit, +digits[0]) + case -2: + if (8 * sizeof(int) - 1 > 1 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) { + return (int) (((int)-1)*(((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); + } + } + break; + case 2: + if (8 * sizeof(int) > 1 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) { + return (int) ((((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); + } + } + break; + case -3: + if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) { + return (int) (((int)-1)*(((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); + } + } + break; + case 3: + if (8 * sizeof(int) > 2 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) { + return (int) ((((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); + } + } + break; + case -4: + if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(int) - 1 > 4 * PyLong_SHIFT) { + return (int) (((int)-1)*(((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); + } + } + break; + case 4: + if (8 * sizeof(int) > 3 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(int) - 1 > 4 * PyLong_SHIFT) { + return (int) ((((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); + } + } + break; + } +#endif + if (sizeof(int) <= sizeof(long)) { + __PYX_VERIFY_RETURN_INT_EXC(int, long, PyLong_AsLong(x)) +#ifdef HAVE_LONG_LONG + } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) { + __PYX_VERIFY_RETURN_INT_EXC(int, PY_LONG_LONG, PyLong_AsLongLong(x)) +#endif + } + } + { +#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray) + PyErr_SetString(PyExc_RuntimeError, + "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers"); +#else + int val; + PyObject *v = __Pyx_PyNumber_IntOrLong(x); + #if PY_MAJOR_VERSION < 3 + if (likely(v) && !PyLong_Check(v)) { + PyObject *tmp = v; + v = PyNumber_Long(tmp); + Py_DECREF(tmp); + } + #endif + if (likely(v)) { + int one = 1; int is_little = (int)*(unsigned char *)&one; + unsigned char *bytes = (unsigned char *)&val; + int ret = _PyLong_AsByteArray((PyLongObject *)v, + bytes, sizeof(val), + is_little, !is_unsigned); + Py_DECREF(v); + if (likely(!ret)) + return val; + } +#endif + return (int) -1; + } + } else { + int val; + PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); + if (!tmp) return (int) -1; + val = __Pyx_PyInt_As_int(tmp); + Py_DECREF(tmp); + return val; + } +raise_overflow: + PyErr_SetString(PyExc_OverflowError, + "value too large to convert to int"); + return (int) -1; +raise_neg_overflow: + PyErr_SetString(PyExc_OverflowError, + "can't convert negative value to int"); + return (int) -1; +} + +/* CIntFromPy */ + static CYTHON_INLINE size_t __Pyx_PyInt_As_size_t(PyObject *x) { + const size_t neg_one = (size_t) ((size_t) 0 - (size_t) 1), const_zero = (size_t) 0; + const int is_unsigned = neg_one > const_zero; +#if PY_MAJOR_VERSION < 3 + if (likely(PyInt_Check(x))) { + if (sizeof(size_t) < sizeof(long)) { + __PYX_VERIFY_RETURN_INT(size_t, long, PyInt_AS_LONG(x)) + } else { + long val = PyInt_AS_LONG(x); + if (is_unsigned && unlikely(val < 0)) { + goto raise_neg_overflow; + } + return (size_t) val; + } + } else +#endif + if (likely(PyLong_Check(x))) { + if (is_unsigned) { +#if CYTHON_USE_PYLONG_INTERNALS + const digit* digits = ((PyLongObject*)x)->ob_digit; + switch (Py_SIZE(x)) { + case 0: return (size_t) 0; + case 1: __PYX_VERIFY_RETURN_INT(size_t, digit, digits[0]) + case 2: + if (8 * sizeof(size_t) > 1 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(size_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(size_t) >= 2 * PyLong_SHIFT) { + return (size_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + } + break; + case 3: + if (8 * sizeof(size_t) > 2 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(size_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(size_t) >= 3 * PyLong_SHIFT) { + return (size_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + } + break; + case 4: + if (8 * sizeof(size_t) > 3 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(size_t, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(size_t) >= 4 * PyLong_SHIFT) { + return (size_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + } + break; + } +#endif +#if CYTHON_COMPILING_IN_CPYTHON + if (unlikely(Py_SIZE(x) < 0)) { + goto raise_neg_overflow; + } +#else + { + int result = PyObject_RichCompareBool(x, Py_False, Py_LT); + if (unlikely(result < 0)) + return (size_t) -1; + if (unlikely(result == 1)) + goto raise_neg_overflow; + } +#endif + if (sizeof(size_t) <= sizeof(unsigned long)) { + __PYX_VERIFY_RETURN_INT_EXC(size_t, unsigned long, PyLong_AsUnsignedLong(x)) +#ifdef HAVE_LONG_LONG + } else if (sizeof(size_t) <= sizeof(unsigned PY_LONG_LONG)) { + __PYX_VERIFY_RETURN_INT_EXC(size_t, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) +#endif + } + } else { +#if CYTHON_USE_PYLONG_INTERNALS + const digit* digits = ((PyLongObject*)x)->ob_digit; + switch (Py_SIZE(x)) { + case 0: return (size_t) 0; + case -1: __PYX_VERIFY_RETURN_INT(size_t, sdigit, (sdigit) (-(sdigit)digits[0])) + case 1: __PYX_VERIFY_RETURN_INT(size_t, digit, +digits[0]) + case -2: + if (8 * sizeof(size_t) - 1 > 1 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(size_t, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(size_t) - 1 > 2 * PyLong_SHIFT) { + return (size_t) (((size_t)-1)*(((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]))); + } + } + break; + case 2: + if (8 * sizeof(size_t) > 1 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(size_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(size_t) - 1 > 2 * PyLong_SHIFT) { + return (size_t) ((((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]))); + } + } + break; + case -3: + if (8 * sizeof(size_t) - 1 > 2 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(size_t, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(size_t) - 1 > 3 * PyLong_SHIFT) { + return (size_t) (((size_t)-1)*(((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]))); + } + } + break; + case 3: + if (8 * sizeof(size_t) > 2 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(size_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(size_t) - 1 > 3 * PyLong_SHIFT) { + return (size_t) ((((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]))); + } + } + break; + case -4: + if (8 * sizeof(size_t) - 1 > 3 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(size_t, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(size_t) - 1 > 4 * PyLong_SHIFT) { + return (size_t) (((size_t)-1)*(((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]))); + } + } + break; + case 4: + if (8 * sizeof(size_t) > 3 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(size_t, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(size_t) - 1 > 4 * PyLong_SHIFT) { + return (size_t) ((((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]))); + } + } + break; + } +#endif + if (sizeof(size_t) <= sizeof(long)) { + __PYX_VERIFY_RETURN_INT_EXC(size_t, long, PyLong_AsLong(x)) +#ifdef HAVE_LONG_LONG + } else if (sizeof(size_t) <= sizeof(PY_LONG_LONG)) { + __PYX_VERIFY_RETURN_INT_EXC(size_t, PY_LONG_LONG, PyLong_AsLongLong(x)) +#endif + } + } + { +#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray) + PyErr_SetString(PyExc_RuntimeError, + "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers"); +#else + size_t val; + PyObject *v = __Pyx_PyNumber_IntOrLong(x); + #if PY_MAJOR_VERSION < 3 + if (likely(v) && !PyLong_Check(v)) { + PyObject *tmp = v; + v = PyNumber_Long(tmp); + Py_DECREF(tmp); + } + #endif + if (likely(v)) { + int one = 1; int is_little = (int)*(unsigned char *)&one; + unsigned char *bytes = (unsigned char *)&val; + int ret = _PyLong_AsByteArray((PyLongObject *)v, + bytes, sizeof(val), + is_little, !is_unsigned); + Py_DECREF(v); + if (likely(!ret)) + return val; + } +#endif + return (size_t) -1; + } + } else { + size_t val; + PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); + if (!tmp) return (size_t) -1; + val = __Pyx_PyInt_As_size_t(tmp); + Py_DECREF(tmp); + return val; + } +raise_overflow: + PyErr_SetString(PyExc_OverflowError, + "value too large to convert to size_t"); + return (size_t) -1; +raise_neg_overflow: + PyErr_SetString(PyExc_OverflowError, + "can't convert negative value to size_t"); + return (size_t) -1; +} + +/* CIntFromPy */ + static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) { + const long neg_one = (long) ((long) 0 - (long) 1), const_zero = (long) 0; + const int is_unsigned = neg_one > const_zero; +#if PY_MAJOR_VERSION < 3 + if (likely(PyInt_Check(x))) { + if (sizeof(long) < sizeof(long)) { + __PYX_VERIFY_RETURN_INT(long, long, PyInt_AS_LONG(x)) + } else { + long val = PyInt_AS_LONG(x); + if (is_unsigned && unlikely(val < 0)) { + goto raise_neg_overflow; + } + return (long) val; + } + } else +#endif + if (likely(PyLong_Check(x))) { + if (is_unsigned) { +#if CYTHON_USE_PYLONG_INTERNALS + const digit* digits = ((PyLongObject*)x)->ob_digit; + switch (Py_SIZE(x)) { + case 0: return (long) 0; + case 1: __PYX_VERIFY_RETURN_INT(long, digit, digits[0]) + case 2: + if (8 * sizeof(long) > 1 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(long) >= 2 * PyLong_SHIFT) { + return (long) (((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); + } + } + break; + case 3: + if (8 * sizeof(long) > 2 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(long) >= 3 * PyLong_SHIFT) { + return (long) (((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); + } + } + break; + case 4: + if (8 * sizeof(long) > 3 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(long) >= 4 * PyLong_SHIFT) { + return (long) (((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); + } + } + break; + } +#endif +#if CYTHON_COMPILING_IN_CPYTHON + if (unlikely(Py_SIZE(x) < 0)) { + goto raise_neg_overflow; + } +#else + { + int result = PyObject_RichCompareBool(x, Py_False, Py_LT); + if (unlikely(result < 0)) + return (long) -1; + if (unlikely(result == 1)) + goto raise_neg_overflow; + } +#endif + if (sizeof(long) <= sizeof(unsigned long)) { + __PYX_VERIFY_RETURN_INT_EXC(long, unsigned long, PyLong_AsUnsignedLong(x)) +#ifdef HAVE_LONG_LONG + } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) { + __PYX_VERIFY_RETURN_INT_EXC(long, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) +#endif + } + } else { +#if CYTHON_USE_PYLONG_INTERNALS + const digit* digits = ((PyLongObject*)x)->ob_digit; + switch (Py_SIZE(x)) { + case 0: return (long) 0; + case -1: __PYX_VERIFY_RETURN_INT(long, sdigit, (sdigit) (-(sdigit)digits[0])) + case 1: __PYX_VERIFY_RETURN_INT(long, digit, +digits[0]) + case -2: + if (8 * sizeof(long) - 1 > 1 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { + return (long) (((long)-1)*(((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + case 2: + if (8 * sizeof(long) > 1 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { + return (long) ((((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + case -3: + if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { + return (long) (((long)-1)*(((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + case 3: + if (8 * sizeof(long) > 2 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { + return (long) ((((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + case -4: + if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { + return (long) (((long)-1)*(((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + case 4: + if (8 * sizeof(long) > 3 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { + return (long) ((((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + } +#endif + if (sizeof(long) <= sizeof(long)) { + __PYX_VERIFY_RETURN_INT_EXC(long, long, PyLong_AsLong(x)) +#ifdef HAVE_LONG_LONG + } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) { + __PYX_VERIFY_RETURN_INT_EXC(long, PY_LONG_LONG, PyLong_AsLongLong(x)) +#endif + } + } + { +#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray) + PyErr_SetString(PyExc_RuntimeError, + "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers"); +#else + long val; + PyObject *v = __Pyx_PyNumber_IntOrLong(x); + #if PY_MAJOR_VERSION < 3 + if (likely(v) && !PyLong_Check(v)) { + PyObject *tmp = v; + v = PyNumber_Long(tmp); + Py_DECREF(tmp); + } + #endif + if (likely(v)) { + int one = 1; int is_little = (int)*(unsigned char *)&one; + unsigned char *bytes = (unsigned char *)&val; + int ret = _PyLong_AsByteArray((PyLongObject *)v, + bytes, sizeof(val), + is_little, !is_unsigned); + Py_DECREF(v); + if (likely(!ret)) + return val; + } +#endif + return (long) -1; + } + } else { + long val; + PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); + if (!tmp) return (long) -1; + val = __Pyx_PyInt_As_long(tmp); + Py_DECREF(tmp); + return val; + } +raise_overflow: + PyErr_SetString(PyExc_OverflowError, + "value too large to convert to long"); + return (long) -1; +raise_neg_overflow: + PyErr_SetString(PyExc_OverflowError, + "can't convert negative value to long"); + return (long) -1; +} + +/* FastTypeChecks */ + #if CYTHON_COMPILING_IN_CPYTHON +static int __Pyx_InBases(PyTypeObject *a, PyTypeObject *b) { + while (a) { + a = a->tp_base; + if (a == b) + return 1; + } + return b == &PyBaseObject_Type; +} +static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b) { + PyObject *mro; + if (a == b) return 1; + mro = a->tp_mro; + if (likely(mro)) { + Py_ssize_t i, n; + n = PyTuple_GET_SIZE(mro); + for (i = 0; i < n; i++) { + if (PyTuple_GET_ITEM(mro, i) == (PyObject *)b) + return 1; + } + return 0; + } + return __Pyx_InBases(a, b); +} +#if PY_MAJOR_VERSION == 2 +static int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject* exc_type2) { + PyObject *exception, *value, *tb; + int res; + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + __Pyx_ErrFetch(&exception, &value, &tb); + res = exc_type1 ? PyObject_IsSubclass(err, exc_type1) : 0; + if (unlikely(res == -1)) { + PyErr_WriteUnraisable(err); + res = 0; + } + if (!res) { + res = PyObject_IsSubclass(err, exc_type2); + if (unlikely(res == -1)) { + PyErr_WriteUnraisable(err); + res = 0; + } + } + __Pyx_ErrRestore(exception, value, tb); + return res; +} +#else +static CYTHON_INLINE int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject *exc_type2) { + int res = exc_type1 ? __Pyx_IsSubtype((PyTypeObject*)err, (PyTypeObject*)exc_type1) : 0; + if (!res) { + res = __Pyx_IsSubtype((PyTypeObject*)err, (PyTypeObject*)exc_type2); + } + return res; +} +#endif +static int __Pyx_PyErr_GivenExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) { + Py_ssize_t i, n; + assert(PyExceptionClass_Check(exc_type)); + n = PyTuple_GET_SIZE(tuple); +#if PY_MAJOR_VERSION >= 3 + for (i=0; ip) { + #if PY_MAJOR_VERSION < 3 + if (t->is_unicode) { + *t->p = PyUnicode_DecodeUTF8(t->s, t->n - 1, NULL); + } else if (t->intern) { + *t->p = PyString_InternFromString(t->s); + } else { + *t->p = PyString_FromStringAndSize(t->s, t->n - 1); + } + #else + if (t->is_unicode | t->is_str) { + if (t->intern) { + *t->p = PyUnicode_InternFromString(t->s); + } else if (t->encoding) { + *t->p = PyUnicode_Decode(t->s, t->n - 1, t->encoding, NULL); + } else { + *t->p = PyUnicode_FromStringAndSize(t->s, t->n - 1); + } + } else { + *t->p = PyBytes_FromStringAndSize(t->s, t->n - 1); + } + #endif + if (!*t->p) + return -1; + if (PyObject_Hash(*t->p) == -1) + return -1; + ++t; + } + return 0; +} + +static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char* c_str) { + return __Pyx_PyUnicode_FromStringAndSize(c_str, (Py_ssize_t)strlen(c_str)); +} +static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject* o) { + Py_ssize_t ignore; + return __Pyx_PyObject_AsStringAndSize(o, &ignore); +} +#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT +#if !CYTHON_PEP393_ENABLED +static const char* __Pyx_PyUnicode_AsStringAndSize(PyObject* o, Py_ssize_t *length) { + char* defenc_c; + PyObject* defenc = _PyUnicode_AsDefaultEncodedString(o, NULL); + if (!defenc) return NULL; + defenc_c = PyBytes_AS_STRING(defenc); +#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII + { + char* end = defenc_c + PyBytes_GET_SIZE(defenc); + char* c; + for (c = defenc_c; c < end; c++) { + if ((unsigned char) (*c) >= 128) { + PyUnicode_AsASCIIString(o); + return NULL; + } + } + } +#endif + *length = PyBytes_GET_SIZE(defenc); + return defenc_c; +} +#else +static CYTHON_INLINE const char* __Pyx_PyUnicode_AsStringAndSize(PyObject* o, Py_ssize_t *length) { + if (unlikely(__Pyx_PyUnicode_READY(o) == -1)) return NULL; +#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII + if (likely(PyUnicode_IS_ASCII(o))) { + *length = PyUnicode_GET_LENGTH(o); + return PyUnicode_AsUTF8(o); + } else { + PyUnicode_AsASCIIString(o); + return NULL; + } +#else + return PyUnicode_AsUTF8AndSize(o, length); +#endif +} +#endif +#endif +static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject* o, Py_ssize_t *length) { +#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT + if ( +#if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII + __Pyx_sys_getdefaultencoding_not_ascii && +#endif + PyUnicode_Check(o)) { + return __Pyx_PyUnicode_AsStringAndSize(o, length); + } else +#endif +#if (!CYTHON_COMPILING_IN_PYPY) || (defined(PyByteArray_AS_STRING) && defined(PyByteArray_GET_SIZE)) + if (PyByteArray_Check(o)) { + *length = PyByteArray_GET_SIZE(o); + return PyByteArray_AS_STRING(o); + } else +#endif + { + char* result; + int r = PyBytes_AsStringAndSize(o, &result, length); + if (unlikely(r < 0)) { + return NULL; + } else { + return result; + } + } +} +static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) { + int is_true = x == Py_True; + if (is_true | (x == Py_False) | (x == Py_None)) return is_true; + else return PyObject_IsTrue(x); +} +static CYTHON_INLINE int __Pyx_PyObject_IsTrueAndDecref(PyObject* x) { + int retval; + if (unlikely(!x)) return -1; + retval = __Pyx_PyObject_IsTrue(x); + Py_DECREF(x); + return retval; +} +static PyObject* __Pyx_PyNumber_IntOrLongWrongResultType(PyObject* result, const char* type_name) { +#if PY_MAJOR_VERSION >= 3 + if (PyLong_Check(result)) { + if (PyErr_WarnFormat(PyExc_DeprecationWarning, 1, + "__int__ returned non-int (type %.200s). " + "The ability to return an instance of a strict subclass of int " + "is deprecated, and may be removed in a future version of Python.", + Py_TYPE(result)->tp_name)) { + Py_DECREF(result); + return NULL; + } + return result; + } +#endif + PyErr_Format(PyExc_TypeError, + "__%.4s__ returned non-%.4s (type %.200s)", + type_name, type_name, Py_TYPE(result)->tp_name); + Py_DECREF(result); + return NULL; +} +static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x) { +#if CYTHON_USE_TYPE_SLOTS + PyNumberMethods *m; +#endif + const char *name = NULL; + PyObject *res = NULL; +#if PY_MAJOR_VERSION < 3 + if (likely(PyInt_Check(x) || PyLong_Check(x))) +#else + if (likely(PyLong_Check(x))) +#endif + return __Pyx_NewRef(x); +#if CYTHON_USE_TYPE_SLOTS + m = Py_TYPE(x)->tp_as_number; + #if PY_MAJOR_VERSION < 3 + if (m && m->nb_int) { + name = "int"; + res = m->nb_int(x); + } + else if (m && m->nb_long) { + name = "long"; + res = m->nb_long(x); + } + #else + if (likely(m && m->nb_int)) { + name = "int"; + res = m->nb_int(x); + } + #endif +#else + if (!PyBytes_CheckExact(x) && !PyUnicode_CheckExact(x)) { + res = PyNumber_Int(x); + } +#endif + if (likely(res)) { +#if PY_MAJOR_VERSION < 3 + if (unlikely(!PyInt_Check(res) && !PyLong_Check(res))) { +#else + if (unlikely(!PyLong_CheckExact(res))) { +#endif + return __Pyx_PyNumber_IntOrLongWrongResultType(res, name); + } + } + else if (!PyErr_Occurred()) { + PyErr_SetString(PyExc_TypeError, + "an integer is required"); + } + return res; +} +static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) { + Py_ssize_t ival; + PyObject *x; +#if PY_MAJOR_VERSION < 3 + if (likely(PyInt_CheckExact(b))) { + if (sizeof(Py_ssize_t) >= sizeof(long)) + return PyInt_AS_LONG(b); + else + return PyInt_AsSsize_t(b); + } +#endif + if (likely(PyLong_CheckExact(b))) { + #if CYTHON_USE_PYLONG_INTERNALS + const digit* digits = ((PyLongObject*)b)->ob_digit; + const Py_ssize_t size = Py_SIZE(b); + if (likely(__Pyx_sst_abs(size) <= 1)) { + ival = likely(size) ? digits[0] : 0; + if (size == -1) ival = -ival; + return ival; + } else { + switch (size) { + case 2: + if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) { + return (Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + break; + case -2: + if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) { + return -(Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + break; + case 3: + if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) { + return (Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + break; + case -3: + if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) { + return -(Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + break; + case 4: + if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) { + return (Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + break; + case -4: + if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) { + return -(Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + break; + } + } + #endif + return PyLong_AsSsize_t(b); + } + x = PyNumber_Index(b); + if (!x) return -1; + ival = PyInt_AsSsize_t(x); + Py_DECREF(x); + return ival; +} +static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b) { + return b ? __Pyx_NewRef(Py_True) : __Pyx_NewRef(Py_False); +} +static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) { + return PyInt_FromSize_t(ival); +} + + +#endif /* Py_PYTHON_H */ diff --git a/EuclidEmulator2/src/euclidemu2.pyx b/EuclidEmulator2/src/euclidemu2.pyx new file mode 100644 index 00000000..c6c263b9 --- /dev/null +++ b/EuclidEmulator2/src/euclidemu2.pyx @@ -0,0 +1,556 @@ +# This file is part of EuclidEmulator2 +# Copyright (c) 2018-2021 Mischa Knabenhans, Pedro Carrilho +# +# EuclidEmulator2 is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# at your option) any later version. +# +# EuclidEmulator2 is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +try: + from classy import Class as _Class +except ImportError: + print("\nClassy could not be found in your system.") + print("Here are some suggestions:\n") + print("\t -Download the Class from class-code.net and install it") + print("\t together with its wrapper classy (type 'make' instead of") + print("\t 'make class'") + print("\t -If you know that Class is installed on your system") + print("\t and yet classy could not be installed, try re-compiling") + print("\t Class with just ''make'' instead of ''make class''") + print("NOTICE: Even without classy you can still use EuclidEmulator2") + print(" to emulate boost factors. You won't be able to compute") + print(" full power spectra, though.") + + +import cython +cimport cython +from libc.stdlib cimport free +from libcpp.vector cimport vector +from libcpp.string cimport string +from cython.operator cimport dereference as deref + +import sys as _sys +import numpy as np +from scipy.interpolate import CubicSpline as _CubicSpline +import warnings as _warnings + +# distutils: language = c++ +# cython: c_string_type=unicode, c_string_encoding=utf8 + +#defining NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION + + + +# Import the C++ classes + +cdef extern from "cosmo.h": + cdef cppclass Cosmology: + + double Omega_nu_0; + + Cosmology(double Omega_b, double Omega_m, double Sum_m_nu, double n_s, double h, double w_0, double w_a, double A_s) except + + + + +cdef extern from "emulator.h": + cdef cppclass EuclidEmulator: + + double kvec[613]; + double Bvec[101][613]; + + EuclidEmulator() except + + + void compute_nlc(Cosmology csm, vector[double] redshift, int n_redshift); + void write_nlc2file(const string &filename, vector[double] zvec, int n_redshift); + + +#Create new python classes for wrapping the c++ classes +cdef class PyCosmology: + + cdef Cosmology*cosm + + + def __cinit__(self, double Omega_b , double Omega_m , double Sum_m_nu , double n_s , double h , double w_0 , double w_a , double A_s ): + """Cython signature: void Cosmology(double Omega_b, double Omega_m, double Sum_m_nu, double n_s, double h, double w_0, double w_a, double A_s)""" + assert isinstance(Omega_b, float), 'arg Omega_b wrong type' + assert isinstance(Omega_m, float), 'arg Omega_m wrong type' + assert isinstance(Sum_m_nu, float), 'arg Sum_m_nu wrong type' + assert isinstance(n_s, float), 'arg n_s wrong type' + assert isinstance(h, float), 'arg h wrong type' + assert isinstance(w_0, float), 'arg w_0 wrong type' + assert isinstance(w_a, float), 'arg w_a wrong type' + assert isinstance(A_s, float), 'arg A_s wrong type' + + self.cosm =new Cosmology((Omega_b), (Omega_m), (Sum_m_nu), (n_s), (h), (w_0), (w_a), (A_s)) + + # Attribute access + @property + def Omega_nu_0(self): + return self.cosm.Omega_nu_0 + @Omega_nu_0.setter + def Omega_nu_0(self, Omega_nu_0): + self.cosm.Omega_nu_0 = Omega_nu_0 + + +cdef class PyEuclidEmulator: + + cdef EuclidEmulator*ee2 + + def __cinit__(self): + self.ee2 = new EuclidEmulator() + + + def compute_nlc(self,PyCosmology csm, redshift, n_redshift): + self.ee2.compute_nlc(( csm.cosm)[0], redshift, n_redshift) + + def write_nlc2file(self,filename, zvec, n_redshift): + self.ee2.write_nlc2file(filename, zvec, n_redshift) + + + + # Attribute access + @property + def kvec(self): + return self.ee2.kvec + @kvec.setter + def kvec(self, kvec): + self.ee2.kvec = kvec + + @property + def Bvec(self): + return self.ee2.Bvec + @Bvec.setter + def Bvec(self, Bvec): + self.ee2.Bvec = Bvec + + + +#Extra functions to manipulate the results of the c++ computations + +###################################################### +#################### Check input ##################### +###################################################### + +def check_param_range(par_dict): #, csm_index=0): #Only one cosmology for now + """ + Checks if all parameters in the cosmology dictionary 'par_dict' + passed to this function obey the limits set by the emulator. + """ + + om_b_range = [0.04, 0.06] + om_m_range = [0.24, 0.40] + m_nu_range = [0.00, 0.15] + n_s_range = [0.92, 1.00] + h_range = [0.61, 0.73] + w_0_range = [-1.3, -0.7] + w_a_range = [-0.7, 0.5] + A_s_range = [1.7e-9, 2.5e-9] + + om_b_not_in_range = om_b_range[0] > par_dict['Omega_b'] or\ + om_b_range[1] < par_dict['Omega_b'] + + om_m_not_in_range = om_m_range[0] > par_dict['Omega_m'] or\ + om_m_range[1] < par_dict['Omega_m'] + + m_nu_not_in_range = m_nu_range[0] > par_dict['m_ncdm'] or\ + m_nu_range[1] < par_dict['m_ncdm'] + + n_s_not_in_range = n_s_range[0] > par_dict['n_s'] or\ + n_s_range[1] < par_dict['n_s'] + + h_not_in_range = h_range[0] > par_dict['h'] or\ + h_range[1] < par_dict['h'] + + w_0_not_in_range = w_0_range[0] > par_dict['w0_fld'] or\ + w_0_range[1] < par_dict['w0_fld'] + + w_a_not_in_range = w_a_range[0] > par_dict['wa_fld'] or\ + w_a_range[1] < par_dict['wa_fld'] + + A_s_not_in_range = A_s_range[0] > par_dict['A_s'] or\ + A_s_range[1] < par_dict['A_s'] + + if om_b_not_in_range: + raise ValueError("Parameter range violation: \nOmega_b is set to %f, but should be in the interval [0.04, 0.06]." + %(par_dict['Omega_b'] )) + + if om_m_not_in_range: + raise ValueError("Parameter range violation: \nOmega_m is set to %f, but should be in the interval [0.24, 0.40]." + %(par_dict['Omega_m'])) + + if m_nu_not_in_range: + raise ValueError("Parameter range violation: \nm_ncdm is set to %f, but should be in the interval [0.00, 0.15]." + %(par_dict['m_ncdm'])) + + if n_s_not_in_range: + raise ValueError("Parameter range violation: \nn_s is set to %f, but should be in the interval [0.92, 1.00]." + %(par_dict['n_s'])) + + if h_not_in_range: + raise ValueError("Parameter range violation: \nh is set to %f, but should be in the interval [0.61, 0.73]." + %( par_dict['h'])) + + if w_0_not_in_range: + raise ValueError("Parameter range violation: \nw_0 is set to %f, but should be in the interval [-1.3, -0.7]." + %( par_dict['w0_fld'])) + + if w_a_not_in_range: + raise ValueError("Parameter range violation: \nw_a is set to %f, but should be in the interval [-0.7, 0.5]." + %( par_dict['wa_fld'])) + + if A_s_not_in_range: + raise ValueError("Parameter range violation: \nA_s is set to %f, but should be in the interval [1.7e-9, 2.5e-9]." + %( par_dict['A_s'])) + + +def convert_to_emu(class_pars_dict): + """ + Signature: convert_to_emu(class_pars_dict) + + Description: Converts the set of parameters accepted by several + other codes into a set of parameters accepted by + EuclidEmulator2. Also checks the params exist. + + Input type: python dictionary + + Output type: python dictionary + + """ + if not isinstance(class_pars_dict, dict): + raise TypeError("The cosmological parameters must be passed as a python dictionary.") + + if 'h' in class_pars_dict: + h = class_pars_dict['h'] + elif 'hubble' in class_pars_dict: + h = class_pars_dict['hubble'] + elif 'H0' in class_pars_dict: + h = class_pars_dict['H0']/100. + else: + raise KeyError("Missing parameter h. Can't proceed.") + + if 'Omega_b' in class_pars_dict: + Om_b = class_pars_dict['Omega_b'] + elif 'Omb' in class_pars_dict: + Om_b = class_pars_dict['Omb'] + elif 'Omega_baryon' in class_pars_dict: + Om_b = class_pars_dict['Omega_baryon'] + elif 'omega_b' in class_pars_dict: + Om_b = class_pars_dict['omega_b']/h**2 + elif 'om_b' in class_pars_dict: + Om_b = class_pars_dict['om_b']/h**2 + elif 'ombh2' in class_pars_dict: + Om_b = class_pars_dict['ombh2']/h**2 + else: + raise KeyError("Missing parameter Omega_b. Can't proceed.") + + # Currently only allowing this way of passing the neutrino mass + # and only allowing one value to be passed. + if 'm_ncdm' in class_pars_dict: + m_ncdm = class_pars_dict['m_ncdm'] + elif 'm_nu' in class_pars_dict: + m_ncdm = class_pars_dict['m_nu'] + elif 'mnu' in class_pars_dict: + m_ncdm = class_pars_dict['mnu'] + elif 'neutrino_mass' in class_pars_dict: + m_ncdm = class_pars_dict['neutrino_mass'] + else: + print("Missing parameter m_nu. Will set to 0.") + m_ncdm=0.0 + + # Should give either Omega_m or Omega_cdm + Om_cdm=0 + if 'Omega_m' in class_pars_dict: + Om_m = class_pars_dict['Omega_m'] + elif 'Omm' in class_pars_dict: + Om_m = class_pars_dict['Omm'] + elif 'Omega_matter' in class_pars_dict: + Om_m = class_pars_dict['Omega_matter'] + elif 'omega_m' in class_pars_dict: + Om_m = class_pars_dict['omega_m']/h**2 + elif 'om_m' in class_pars_dict: + Om_m = class_pars_dict['om_m']/h**2 + elif 'ommh2' in class_pars_dict: + Om_m = class_pars_dict['ommh2']/h**2 + elif 'Omega_cdm' in class_pars_dict: + Om_cdm = class_pars_dict['Omega_cdm'] + Om_m = Om_b + Om_cdm + elif 'Omc' in class_pars_dict: + Om_cdm = class_pars_dict['Omc'] + Om_m = Om_b + Om_cdm + elif 'omega_cdm' in class_pars_dict: + Om_cdm = class_pars_dict['omega_cdm']/h**2 + Om_m = Om_b + Om_cdm + elif 'omch2' in class_pars_dict: + Om_cdm = class_pars_dict['omch2']/h**2 + Om_m = Om_b + Om_cdm + else: + raise KeyError("Missing parameter Omega_m or Omega_cdm. Can't proceed.") + + if 'n_s' in class_pars_dict: + n_s = class_pars_dict['n_s'] + elif 'ns' in class_pars_dict: + n_s = class_pars_dict['ns'] + else: + raise KeyError("Missing parameter n_s. Can't proceed.") + + if 'A_s' in class_pars_dict: + A_s = class_pars_dict['A_s'] + elif 'As' in class_pars_dict: + A_s = class_pars_dict['As'] + elif 'ln10^{10}A_s' in class_pars_dict: + A_s = np.exp(class_pars_dict['ln10^{10}A_s'])*1.0e-10 + else: + raise KeyError("Missing parameter A_s or ln10^{10}A_s. Can't proceed.") + + # Using default values for DE params for LCDM case. + if 'w0_fld' in class_pars_dict: + w0_fld = class_pars_dict['w0_fld'] + elif 'w0' in class_pars_dict: + w0_fld = class_pars_dict['w0'] + elif 'w_0' in class_pars_dict: + w0_fld = class_pars_dict['w_0'] + elif 'w' in class_pars_dict: + w0_fld = class_pars_dict['w'] + else: + print("Missing parameter w0. Will set to -1.") + w0_fld=-1.0 + + if 'wa_fld' in class_pars_dict: + wa_fld = class_pars_dict['wa_fld'] + elif 'wa' in class_pars_dict: + wa_fld = class_pars_dict['wa'] + elif 'w_a' in class_pars_dict: + wa_fld = class_pars_dict['w_a'] + else: + print("Missing parameter wa. Will set to 0.") + wa_fld=0.0 + + if not(Om_cdm==0): + cosmotmp=PyCosmology(Om_b,Om_m,m_ncdm,n_s,h,w0_fld,wa_fld,A_s) + Om_m=Om_m+cosmotmp.Omega_nu_0 + + emu_pars_dict = {'Omega_b': Om_b, + 'Omega_m': Om_m, + 'm_ncdm': m_ncdm, + 'n_s': n_s, + 'h': h, + 'w0_fld': w0_fld, + 'wa_fld': wa_fld, + 'A_s': A_s, + 'Omega_cdm': Om_cdm} + + return emu_pars_dict + + + +def get_boost(cosmo_par_in,redshifts,custom_kvec=None): + + if isinstance(redshifts, (int, float)): + redshifts = np.asarray([redshifts]) + else: + redshifts = np.asarray(redshifts) + + for z in redshifts: + assert z <= 10.0 and z>=0.0, "EuclidEmulator2 allows only redshifts in the interval [0.0, 10.0]" + + #Check if all variables are passed and convert to emu dict + cosmo_par=convert_to_emu(cosmo_par_in) + #Check if all parameters are in range + check_param_range(cosmo_par) + + cosmo=PyCosmology(cosmo_par['Omega_b'], + cosmo_par['Omega_m'], + cosmo_par['m_ncdm'], + cosmo_par['n_s'], + cosmo_par['h'], + cosmo_par['w0_fld'], + cosmo_par['wa_fld'], + cosmo_par['A_s']) + + ee2=PyEuclidEmulator() + ee2.compute_nlc(cosmo,redshifts,len(redshifts)) + + k=np.asarray(ee2.kvec) + logboost=np.reshape(ee2.Bvec[0:len(redshifts)],(len(redshifts),len(k))) + + #Extrapolate for custom k-range + kvals = k + k_shape = kvals.shape + + do_extrapolate_above = False + do_extrapolate_below = False + if not(custom_kvec is None): + upper_mask = custom_kvec < max(kvals) + lower_mask = custom_kvec > min(kvals) + mask = [u and l for (u,l) in zip(lower_mask, upper_mask)] + custom_k_within_range = custom_kvec[mask] + custom_k_below = custom_kvec[[not(l) for l in lower_mask]] + custom_k_above = custom_kvec[[not(u) for u in upper_mask]] + + if any(custom_kvec > max(kvals)): + wrn_message = ("Warning:\nEuclidEmulator2 emulates the non-linear correction in \n" + "the interval [8.73e-3 h/Mpc, 9.41h/Mpc]. You are \n" + "requesting k modes beyond k_max = 9.41h/Mpc. \n" + "Higher k modes constantly extrapolated.") + + print(wrn_message) + do_extrapolate_above = True + + if any(custom_kvec < min(kvals)): + wrn_message = ("Warning:\nEuclidEmulator2 emulates the non-linear correction in \n" + "the interval [8.73e-3 h/Mpc, 9.41h/Mpc]. You are \n" + "requesting k modes below k_min = 8.73e-3 h/Mpc. \n" + "Lower k modes constantly extrapolated.") + + print(wrn_message) + do_extrapolate_below = True + + + len_kvals = len(kvals) + len_redshifts = len(redshifts) + + + bvals = {} + for i in range(len_redshifts): + tmp = logboost[i] + if not(custom_kvec is None): + bvals[i] = 10.0**_CubicSpline(np.log10(kvals), + tmp.reshape(k_shape) + )(np.log10(custom_k_within_range)) + + #Extrapolate if necessary + if do_extrapolate_below: + # below the k_min of EuclidEmulator2, we are in the linear regime where + # the boost factor is unity by construction + b_extrap = np.ones_like(custom_k_below) + bvals[i]= np.concatenate((b_extrap, bvals[i])) + + if do_extrapolate_above: + # We extrapolate by setting all b(k > k_max) to b(k_max) + b_extrap = bvals[i][-1] * np.ones_like(custom_k_above) + bvals[i] = np.concatenate((bvals[i], b_extrap)) + + else: + bvals[i] = 10.**tmp.reshape(k_shape) + + if not(custom_kvec is None): # This could probably be done cleaner! + kvals = custom_kvec + + return kvals,bvals + + + + +def get_plin(emu_pars_dict, custom_kvec, redshifts): + + if _Class.__module__ not in _sys.modules: + print("You have not imported neither classee nor classy.\n \ + Computing linear power spectrum is hence not possible.") + return None + + # Convert single redshift input argument to array + if isinstance(redshifts, (int, float)): + redshifts = np.asarray([redshifts]) + else: + redshifts = np.asarray(redshifts) + + for z in redshifts: + assert z <= 10.0 and z>=0.0, "EuclidEmulator2 allows only redshifts in the interval [0.0, 10.0]" + + # Convert single kvec input argument to array + if isinstance(custom_kvec, (int, float)): + custom_kvec = np.asarray([custom_kvec]) + else: + custom_kvec = np.asarray(custom_kvec) + + # "Stringify" the input arrays to be understandable for classy. + z_str=str(redshifts[0]) + + if len(redshifts)>1: + for i in range(1,len(redshifts)): + z_str+=','+str(redshifts[i]) + + # Convert the input dictionary into a Class-compatible dictionary + cosmo_par = convert_to_emu(emu_pars_dict) + + # When no value for Omega_cdm is given, this is computed + if cosmo_par['Omega_cdm']==0: + cosmotmp=PyCosmology(cosmo_par['Omega_b'], + cosmo_par['Omega_m'], + cosmo_par['m_ncdm'], + cosmo_par['n_s'], + cosmo_par['h'], + cosmo_par['w0_fld'], + cosmo_par['wa_fld'], + cosmo_par['A_s']) + cosmo_par['Omega_cdm']=cosmo_par['Omega_m']-cosmo_par['Omega_b']-cosmotmp.Omega_nu_0 + + # This parameter is eliminated as classy does not accept it. + del cosmo_par['Omega_m'] + + # Extend the input Class-compatible dictionary by the additional + # information requested by classy. + classy_pars = cosmo_par + classy_pars['Omega_Lambda'] = 0.0 + classy_pars['output'] = 'mPk' + classy_pars['P_k_max_1/Mpc'] = custom_kvec[-1]*cosmo_par['h'] + classy_pars['z_pk'] = z_str + # Assuming a single massive neutrino with all the mass + classy_pars['N_ur']=2.0308 + classy_pars['N_ncdm']=1 + + + # Create a "Class" instance called "cosmo" and run classy to compute + # the cosmological quantities. + cosmo = _Class() + cosmo.set(classy_pars) + cosmo.compute() + + # Convert k units: h/Mpc to 1/Mpc + h = classy_pars['h'] + k_classy_arr = h*custom_kvec + + # Get shape of k vector + k_shape = k_classy_arr.shape + + # Get power spectrum at tabulated z and k in units of Mpc^3 + linpower = {i: + np.array([cosmo.pk(k, z)*h*h*h + for k in k_classy_arr]).reshape(k_shape) + for i, z in enumerate(redshifts)} + + return custom_kvec, linpower + +def get_pnonlin(emu_pars_dict, redshifts, custom_kvec=None): + + if _Class.__module__ not in _sys.modules: + print("You have not imported neither classee nor classy.\n \ + Emulating full power spectrum is hence not possible.") + return None + + # Convert single redshift input argument to array + if isinstance(redshifts, (int, float)): + redshifts = np.asarray([redshifts]) + else: + redshifts = np.asarray(redshifts) + + kvec, Bk = get_boost(emu_pars_dict, redshifts, custom_kvec) + + plin = get_plin(emu_pars_dict, kvec, redshifts) + plin = plin[1] + + pnonlin = {} + for i, z in enumerate(redshifts): + pnonlin[i] = plin[i]*Bk[i] + + return kvec, pnonlin, plin, Bk + + diff --git a/EuclidEmulator2/src/kvec.csv b/EuclidEmulator2/src/kvec.csv new file mode 100755 index 00000000..f25ea15c --- /dev/null +++ b/EuclidEmulator2/src/kvec.csv @@ -0,0 +1,613 @@ +8.730750000000000663e-03 +1.500420000000000052e-02 +2.137150000000000161e-02 +2.779119999999999854e-02 +3.429589999999999722e-02 +4.044880000000000003e-02 +4.673080000000000289e-02 +5.305549999999999849e-02 +5.942390000000000172e-02 +6.573800000000000476e-02 +7.194540000000000657e-02 +7.825819999999999999e-02 +8.468309999999999726e-02 +9.095169999999999644e-02 +9.719079999999999386e-02 +1.034619999999999984e-01 +1.097420000000000062e-01 +1.160410000000000053e-01 +1.223530000000000034e-01 +1.286690000000000056e-01 +1.349380000000000024e-01 +1.411830000000000029e-01 +1.475019999999999942e-01 +1.537769999999999970e-01 +1.600550000000000028e-01 +1.663890000000000091e-01 +1.727100000000000024e-01 +1.789679999999999882e-01 +1.852260000000000018e-01 +1.914730000000000043e-01 +1.977800000000000114e-01 +2.040859999999999896e-01 +2.103859999999999897e-01 +2.166829999999999867e-01 +2.229629999999999945e-01 +2.292549999999999866e-01 +2.355069999999999941e-01 +2.417839999999999989e-01 +2.480789999999999940e-01 +2.543429999999999858e-01 +2.606269999999999976e-01 +2.669199999999999906e-01 +2.732359999999999789e-01 +2.795469999999999899e-01 +2.858310000000000017e-01 +2.920820000000000083e-01 +2.983390000000000208e-01 +3.046329999999999871e-01 +3.109230000000000049e-01 +3.172119999999999940e-01 +3.235140000000000238e-01 +3.298119999999999941e-01 +3.361129999999999951e-01 +3.423649999999999749e-01 +3.486429999999999807e-01 +3.549370000000000025e-01 +3.611869999999999803e-01 +3.674720000000000208e-01 +3.737599999999999811e-01 +3.800609999999999822e-01 +3.863500000000000267e-01 +3.926100000000000145e-01 +3.989219999999999988e-01 +4.052029999999999799e-01 +4.114880000000000204e-01 +4.177779999999999827e-01 +4.240360000000000240e-01 +4.303390000000000271e-01 +4.366320000000000201e-01 +4.428960000000000119e-01 +4.491600000000000037e-01 +4.554380000000000095e-01 +4.617600000000000038e-01 +4.680610000000000048e-01 +4.743450000000000166e-01 +4.806320000000000037e-01 +4.868990000000000262e-01 +4.931659999999999933e-01 +4.994469999999999743e-01 +5.057129999999999681e-01 +5.119890000000000274e-01 +5.183090000000000197e-01 +5.246060000000000167e-01 +5.308730000000000393e-01 +5.371540000000000203e-01 +5.434550000000000214e-01 +5.497400000000000064e-01 +5.559910000000000130e-01 +5.622819999999999485e-01 +5.685980000000000478e-01 +5.748780000000000001e-01 +5.811520000000000019e-01 +5.874369999999999870e-01 +5.937149999999999928e-01 +5.999940000000000273e-01 +6.062650000000000539e-01 +6.125439999999999774e-01 +6.188449999999999784e-01 +6.251280000000000170e-01 +6.313999999999999613e-01 +6.376979999999999871e-01 +6.439829999999999721e-01 +6.502660000000000107e-01 +6.565560000000000285e-01 +6.628340000000000343e-01 +6.691160000000000441e-01 +6.754050000000000331e-01 +6.816809999999999814e-01 +6.879570000000000407e-01 +6.942319999999999602e-01 +7.005149999999999988e-01 +7.068100000000000493e-01 +7.130999999999999561e-01 +7.193899999999999739e-01 +7.256810000000000205e-01 +7.319630000000000303e-01 +7.382490000000000441e-01 +7.445239999999999636e-01 +7.507850000000000357e-01 +7.570740000000000247e-01 +7.633619999999999850e-01 +7.696439999999999948e-01 +7.759369999999999878e-01 +7.822310000000000096e-01 +7.885290000000000354e-01 +7.947880000000000500e-01 +8.010469999999999535e-01 +8.073339999999999961e-01 +8.136210000000000386e-01 +8.199130000000000029e-01 +8.261929999999999552e-01 +8.324880000000000058e-01 +8.387940000000000396e-01 +8.450619999999999798e-01 +8.513260000000000272e-01 +8.576179999999999914e-01 +8.639040000000000052e-01 +8.701820000000000110e-01 +8.764619999999999633e-01 +8.827490000000000059e-01 +8.890310000000000157e-01 +8.953069999999999640e-01 +9.015940000000000065e-01 +9.078819999999999668e-01 +9.141730000000000134e-01 +9.204609999999999737e-01 +9.267419999999999547e-01 +9.330310000000000548e-01 +9.393249999999999655e-01 +9.455959999999999921e-01 +9.518640000000000434e-01 +9.581399999999999917e-01 +9.644329999999999847e-01 +9.707339999999999858e-01 +9.770060000000000411e-01 +9.832809999999999606e-01 +9.895549999999999624e-01 +9.958439999999999515e-01 +1.002129999999999965e+00 +1.008399999999999963e+00 +1.014690000000000092e+00 +1.020990000000000064e+00 +1.027269999999999905e+00 +1.033560000000000034e+00 +1.039849999999999941e+00 +1.046130000000000004e+00 +1.052400000000000002e+00 +1.058680000000000065e+00 +1.064959999999999907e+00 +1.071260000000000101e+00 +1.077539999999999942e+00 +1.083820000000000006e+00 +1.090109999999999912e+00 +1.096389999999999976e+00 +1.102680000000000105e+00 +1.108959999999999946e+00 +1.115220000000000100e+00 +1.121499999999999941e+00 +1.127790000000000070e+00 +1.134090000000000042e+00 +1.140360000000000040e+00 +1.146640000000000104e+00 +1.152940000000000076e+00 +1.159229999999999983e+00 +1.165510000000000046e+00 +1.171790000000000109e+00 +1.178090000000000082e+00 +1.184369999999999923e+00 +1.190630000000000077e+00 +1.196909999999999918e+00 +1.203200000000000047e+00 +1.209489999999999954e+00 +1.215759999999999952e+00 +1.222050000000000081e+00 +1.228339999999999987e+00 +1.234629999999999894e+00 +1.240899999999999892e+00 +1.247169999999999890e+00 +1.253460000000000019e+00 +1.259749999999999925e+00 +1.266029999999999989e+00 +1.272319999999999895e+00 +1.278599999999999959e+00 +1.284890000000000088e+00 +1.291169999999999929e+00 +1.297460000000000058e+00 +1.303739999999999899e+00 +1.310019999999999962e+00 +1.316300000000000026e+00 +1.322589999999999932e+00 +1.328859999999999930e+00 +1.335139999999999993e+00 +1.341439999999999966e+00 +1.347730000000000095e+00 +1.354000000000000092e+00 +1.360279999999999934e+00 +1.366559999999999997e+00 +1.372849999999999904e+00 +1.379129999999999967e+00 +1.385410000000000030e+00 +1.391699999999999937e+00 +1.401140000000000052e+00 +1.410549999999999971e+00 +1.416840000000000099e+00 +1.423119999999999941e+00 +1.429400000000000004e+00 +1.435689999999999911e+00 +1.441980000000000040e+00 +1.448250000000000037e+00 +1.454530000000000101e+00 +1.463980000000000059e+00 +1.473389999999999977e+00 +1.479670000000000041e+00 +1.485959999999999948e+00 +1.492229999999999945e+00 +1.498499999999999943e+00 +1.504780000000000006e+00 +1.514229999999999965e+00 +1.523649999999999949e+00 +1.529940000000000078e+00 +1.536229999999999984e+00 +1.542510000000000048e+00 +1.551949999999999941e+00 +1.561360000000000081e+00 +1.567630000000000079e+00 +1.573909999999999920e+00 +1.580200000000000049e+00 +1.589630000000000098e+00 +1.599050000000000082e+00 +1.605339999999999989e+00 +1.611620000000000053e+00 +1.621050000000000102e+00 +1.630460000000000020e+00 +1.636749999999999927e+00 +1.643029999999999990e+00 +1.652470000000000105e+00 +1.661880000000000024e+00 +1.668169999999999931e+00 +1.677599999999999980e+00 +1.687009999999999899e+00 +1.693310000000000093e+00 +1.702749999999999986e+00 +1.712150000000000061e+00 +1.718439999999999968e+00 +1.727870000000000017e+00 +1.737290000000000001e+00 +1.743570000000000064e+00 +1.752990000000000048e+00 +1.762410000000000032e+00 +1.768699999999999939e+00 +1.778140000000000054e+00 +1.787549999999999972e+00 +1.796969999999999956e+00 +1.806389999999999940e+00 +1.812670000000000003e+00 +1.822100000000000053e+00 +1.831530000000000102e+00 +1.840969999999999995e+00 +1.850379999999999914e+00 +1.856670000000000043e+00 +1.866100000000000092e+00 +1.875520000000000076e+00 +1.884949999999999903e+00 +1.894349999999999978e+00 +1.903790000000000093e+00 +1.913210000000000077e+00 +1.922630000000000061e+00 +1.932060000000000111e+00 +1.941500000000000004e+00 +1.950909999999999922e+00 +1.960339999999999971e+00 +1.969759999999999955e+00 +1.979200000000000070e+00 +1.988620000000000054e+00 +1.998040000000000038e+00 +2.007460000000000022e+00 +2.016890000000000072e+00 +2.029459999999999820e+00 +2.038870000000000182e+00 +2.048299999999999788e+00 +2.057729999999999837e+00 +2.067169999999999952e+00 +2.079730000000000079e+00 +2.089129999999999932e+00 +2.098559999999999981e+00 +2.107990000000000030e+00 +2.117420000000000080e+00 +2.129989999999999828e+00 +2.139409999999999812e+00 +2.148839999999999861e+00 +2.161399999999999988e+00 +2.170830000000000037e+00 +2.180260000000000087e+00 +2.192820000000000213e+00 +2.205389999999999961e+00 +2.214799999999999880e+00 +2.224229999999999929e+00 +2.236800000000000122e+00 +2.246220000000000105e+00 +2.255650000000000155e+00 +2.268209999999999837e+00 +2.280780000000000030e+00 +2.290200000000000014e+00 +2.299630000000000063e+00 +2.312190000000000190e+00 +2.324770000000000003e+00 +2.337340000000000195e+00 +2.346760000000000179e+00 +2.356189999999999785e+00 +2.368759999999999977e+00 +2.381320000000000103e+00 +2.393879999999999786e+00 +2.406449999999999978e+00 +2.419020000000000170e+00 +2.428440000000000154e+00 +2.437860000000000138e+00 +2.450429999999999886e+00 +2.463000000000000078e+00 +2.475560000000000205e+00 +2.488129999999999953e+00 +2.500700000000000145e+00 +2.513259999999999827e+00 +2.525830000000000020e+00 +2.538400000000000212e+00 +2.550959999999999894e+00 +2.563530000000000086e+00 +2.576099999999999834e+00 +2.588659999999999961e+00 +2.601220000000000088e+00 +2.613789999999999836e+00 +2.626360000000000028e+00 +2.638930000000000220e+00 +2.651499999999999968e+00 +2.664060000000000095e+00 +2.676629999999999843e+00 +2.689200000000000035e+00 +2.701760000000000161e+00 +2.714319999999999844e+00 +2.730039999999999800e+00 +2.745740000000000069e+00 +2.758319999999999883e+00 +2.770880000000000010e+00 +2.783440000000000136e+00 +2.796009999999999884e+00 +2.808580000000000076e+00 +2.824300000000000033e+00 +2.839989999999999792e+00 +2.852559999999999985e+00 +2.865130000000000177e+00 +2.877689999999999859e+00 +2.893409999999999815e+00 +2.909110000000000085e+00 +2.921679999999999833e+00 +2.937390000000000168e+00 +2.953089999999999993e+00 +2.965650000000000119e+00 +2.978219999999999867e+00 +2.993939999999999824e+00 +3.009630000000000027e+00 +3.022200000000000220e+00 +3.037920000000000176e+00 +3.053620000000000001e+00 +3.069339999999999957e+00 +3.085039999999999782e+00 +3.097609999999999975e+00 +3.113319999999999865e+00 +3.129020000000000135e+00 +3.144730000000000025e+00 +3.160429999999999851e+00 +3.176149999999999807e+00 +3.191850000000000076e+00 +3.204410000000000203e+00 +3.220130000000000159e+00 +3.235840000000000050e+00 +3.251549999999999940e+00 +3.270399999999999974e+00 +3.286099999999999799e+00 +3.301810000000000134e+00 +3.317509999999999959e+00 +3.333229999999999915e+00 +3.348930000000000184e+00 +3.364650000000000141e+00 +3.383500000000000174e+00 +3.399199999999999999e+00 +3.414909999999999890e+00 +3.433759999999999923e+00 +3.449469999999999814e+00 +3.465180000000000149e+00 +3.484020000000000117e+00 +3.499719999999999942e+00 +3.515439999999999898e+00 +3.534289999999999932e+00 +3.553139999999999965e+00 +3.568839999999999790e+00 +3.584560000000000191e+00 +3.603400000000000158e+00 +3.622250000000000192e+00 +3.641109999999999847e+00 +3.656810000000000116e+00 +3.672530000000000072e+00 +3.691370000000000040e+00 +3.710220000000000073e+00 +3.729070000000000107e+00 +3.747920000000000140e+00 +3.766770000000000174e+00 +3.785620000000000207e+00 +3.804469999999999796e+00 +3.823319999999999830e+00 +3.839020000000000099e+00 +3.854740000000000055e+00 +3.873580000000000023e+00 +3.895579999999999821e+00 +3.917569999999999997e+00 +3.936420000000000030e+00 +3.955270000000000064e+00 +3.974110000000000031e+00 +3.992960000000000065e+00 +4.011809999999999654e+00 +4.030660000000000132e+00 +4.049509999999999721e+00 +4.068360000000000198e+00 +4.090360000000000440e+00 +4.112350000000000172e+00 +4.131199999999999761e+00 +4.150039999999999729e+00 +4.168890000000000207e+00 +4.190889999999999560e+00 +4.212869999999999671e+00 +4.231720000000000148e+00 +4.250569999999999737e+00 +4.272569999999999979e+00 +4.294550000000000090e+00 +4.313399999999999679e+00 +4.335410000000000430e+00 +4.357389999999999652e+00 +4.379389999999999894e+00 +4.401370000000000005e+00 +4.420219999999999594e+00 +4.442219999999999835e+00 +4.464199999999999946e+00 +4.486200000000000188e+00 +4.508189999999999920e+00 +4.530179999999999652e+00 +4.552170000000000272e+00 +4.574169999999999625e+00 +4.596149999999999736e+00 +4.618149999999999977e+00 +4.643279999999999852e+00 +4.665269999999999584e+00 +4.687269999999999825e+00 +4.712399999999999700e+00 +4.734379999999999811e+00 +4.756380000000000052e+00 +4.781509999999999927e+00 +4.803499999999999659e+00 +4.825499999999999901e+00 +4.850629999999999775e+00 +4.875759999999999650e+00 +4.897739999999999760e+00 +4.919740000000000002e+00 +4.944869999999999877e+00 +4.970010000000000261e+00 +4.995140000000000136e+00 +5.020270000000000010e+00 +5.045399999999999885e+00 +5.070529999999999760e+00 +5.095659999999999634e+00 +5.117650000000000254e+00 +5.139649999999999608e+00 +5.164789999999999992e+00 +5.193069999999999631e+00 +5.221330000000000027e+00 +5.246459999999999901e+00 +5.271600000000000286e+00 +5.296730000000000160e+00 +5.321860000000000035e+00 +5.347000000000000419e+00 +5.372130000000000294e+00 +5.397260000000000169e+00 +5.425550000000000317e+00 +5.453809999999999825e+00 +5.478950000000000209e+00 +5.504080000000000084e+00 +5.532359999999999722e+00 +5.560629999999999740e+00 +5.585759999999999614e+00 +5.614040000000000141e+00 +5.642310000000000159e+00 +5.667440000000000033e+00 +5.695730000000000182e+00 +5.723989999999999689e+00 +5.752270000000000216e+00 +5.780529999999999724e+00 +5.808810000000000251e+00 +5.837089999999999890e+00 +5.865370000000000417e+00 +5.893629999999999924e+00 +5.921920000000000073e+00 +5.953330000000000233e+00 +5.981600000000000250e+00 +6.009879999999999889e+00 +6.041290000000000049e+00 +6.069560000000000066e+00 +6.097839999999999705e+00 +6.129260000000000375e+00 +6.160669999999999646e+00 +6.188939999999999664e+00 +6.217220000000000191e+00 +6.248639999999999972e+00 +6.280059999999999754e+00 +6.311469999999999914e+00 +6.342889999999999695e+00 +6.374299999999999855e+00 +6.405719999999999636e+00 +6.437140000000000306e+00 +6.468549999999999578e+00 +6.499970000000000248e+00 +6.531380000000000408e+00 +6.562800000000000189e+00 +6.594219999999999970e+00 +6.625630000000000130e+00 +6.657049999999999912e+00 +6.688460000000000072e+00 +6.723029999999999617e+00 +6.757579999999999920e+00 +6.788999999999999702e+00 +6.820409999999999862e+00 +6.854980000000000295e+00 +6.889520000000000088e+00 +6.924089999999999634e+00 +6.958639999999999937e+00 +6.990059999999999718e+00 +7.024610000000000021e+00 +7.059169999999999945e+00 +7.093740000000000379e+00 +7.128289999999999793e+00 +7.162849999999999717e+00 +7.197400000000000020e+00 +7.231959999999999944e+00 +7.269660000000000011e+00 +7.304210000000000313e+00 +7.338779999999999859e+00 +7.376479999999999926e+00 +7.414179999999999993e+00 +7.448730000000000295e+00 +7.483290000000000219e+00 +7.520990000000000286e+00 +7.558690000000000353e+00 +7.596390000000000420e+00 +7.634089999999999598e+00 +7.671789999999999665e+00 +7.709480000000000111e+00 +7.747180000000000177e+00 +7.784880000000000244e+00 +7.822580000000000311e+00 +7.860280000000000378e+00 +7.897979999999999556e+00 +7.935679999999999623e+00 +7.973379999999999690e+00 +8.011079999999999757e+00 +8.051930000000000476e+00 +8.092760000000000176e+00 +8.130459999999999354e+00 +8.171300000000000452e+00 +8.212139999999999773e+00 +8.249840000000000728e+00 +8.290689999999999671e+00 +8.331519999999999371e+00 +8.372370000000000090e+00 +8.413199999999999790e+00 +8.454050000000000509e+00 +8.494880000000000209e+00 +8.535729999999999151e+00 +8.579710000000000392e+00 +8.620540000000000092e+00 +8.661390000000000811e+00 +8.705370000000000275e+00 +8.749359999999999360e+00 +8.790190000000000836e+00 +8.831039999999999779e+00 +8.875019999999999243e+00 +8.919000000000000483e+00 +8.962989999999999569e+00 +9.006970000000000809e+00 +9.050950000000000273e+00 +9.094929999999999737e+00 +9.138920000000000599e+00 +9.182900000000000063e+00 +9.230029999999999291e+00 +9.277139999999999276e+00 +9.321130000000000138e+00 +9.365109999999999602e+00 +9.409090000000000842e+00 diff --git a/EuclidEmulator2/src/main.cxx b/EuclidEmulator2/src/main.cxx new file mode 100644 index 00000000..f000dff3 --- /dev/null +++ b/EuclidEmulator2/src/main.cxx @@ -0,0 +1,87 @@ +/* main.cxx +* ========= +* This file is part of EuclidEmulator2 +* Copyright (c) 2020 Mischa Knabenhans +* +* EuclidEmulator2 is free software: you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* EuclidEmulator2 is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*/ + +#include +#include +#include +#include +#include +#include +#include "emulator.h" +#include "parse.h" + +int main(int argc, char *argv[]) { + int verbosity_level = 0, n_cosmologies; + const int nPCA = 15; //15 principal components + std::vector nlc, kmodes; + csmpars CSM; // this is just a container for easier parsing of cosmological parameters + string outfilename; + + + /* GET INPUT PARAMETERS */ + CSM = ee2_parser(argc, argv); + n_cosmologies = CSM.Omega_b.size(); + std::cout << "\nThere is/are " << n_cosmologies << " cosmologies specified in the input." << std::endl; + + /* INITIALIZE EE2 SESSION */ + EuclidEmulator ee2 = EuclidEmulator(); + std::cout << "\nEuclidEmulator2 >> Session started... " << std::endl; + + /* ITERATE THROUGH COSMOLOGIES */ + for (int cntr = 0; cntr < n_cosmologies; cntr++){ + /* Instatiate the Cosmology class */ + /*printf("Omega_b: "); + printf("Omega_b[%d] = %f\n", cntr, CSM.Omega_b[cntr]); + printf("Omega_m: "); + printf("Omega_m[%d] = %f\n", cntr, CSM.Omega_m[cntr]); + printf("Sum_m_nu: "); + printf("Sum_m_nu[%d] = %f\n", cntr, CSM.Sum_m_nu[cntr]); + printf("n_s: "); + printf("n_s[%d] = %f\n", cntr, CSM.n_s[cntr]); + printf("h: "); + printf("h[%d] = %f\n", cntr, CSM.h[cntr]); + printf("w_0: "); + printf("w_0[%d] = %f\n", cntr, CSM.w_0[cntr]); + printf("w_a: "); + printf("w_a[%d] = %f\n", cntr, CSM.w_a[cntr]); + printf("A_s: "); + printf("A_s[%d] = %.5e\n", cntr, CSM.A_s[cntr]); + printf("Entering cosmology class..\n"); + */ + Cosmology cosmo = Cosmology(CSM.Omega_b[cntr], CSM.Omega_m[cntr], \ + CSM.Sum_m_nu[cntr], CSM.n_s[cntr], CSM.h[cntr], \ + CSM.w_0[cntr], CSM.w_a[cntr], CSM.A_s[cntr]); + + //printf("Cosmology struct created successfully\n"); + /* compute NLCs for each cosmology */ + /*for(int i = 0; i < CSM.n_redshift[cntr]; i++){ + printf("z[%d][%d] = %f\n", cntr, i, CSM.zvec.at(cntr).at(i)); + }*/ + ee2.compute_nlc(cosmo, CSM.zvec[cntr], CSM.n_redshift[cntr]); + //printf("NLC computed successfully.\n"); + /* Write result to file. Format: k [h/Mpc] B(k,z0) B(k,z1) ... B(k,zn) */ + string filename = CSM.outdir+CSM.outfilename+to_string(cntr)+".dat"; + std::cout << "Filename-->"<< filename << std::endl; + ee2.write_nlc2file(filename, CSM.zvec[cntr], CSM.n_redshift[cntr]); + } + + /* CLOSE EE2 SESSION (no explicit destructor required)*/ + std::cout << "EuclidEmulator2 >> Session closed... " << std::endl; + return 0; +} diff --git a/EuclidEmulator2/src/parse.cxx b/EuclidEmulator2/src/parse.cxx new file mode 100644 index 00000000..53b91875 --- /dev/null +++ b/EuclidEmulator2/src/parse.cxx @@ -0,0 +1,708 @@ +/* parse.cxx +* ========= +* This file is part of EuclidEmulator2 +* Copyright (c) 2020 Mischa Knabenhans +* +* EuclidEmulator2 is free software: you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* EuclidEmulator2 is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*/ + +#include +#include +#include +#include +#include + +csmpars ee2_parser(int n_args, char * vec_args[]){ + size_t n_cosmo_pars; + csmpars CSM; + // Option 1: pass in a cosmology following the format: + // Omega_b, Omega_m, Sum_m_nu, n_s, h, w_0, w_a, A_s, z[0], ..., z[n] + // yet to be added + + // Option 2: pass in a cosmology, a camb, a class or a parameter file + // define the Options class and add the individual options to it + cxxopts::Options options("EuclidEmulator2", "Highly accurate and efficient AI-based \ +predictor of the non-linear correction of the matter power spectrum."); + options.add_options() + ("b,Omega_b", "baryon density parameter", cxxopts::value()) + ("m,Omega_m", "(total) matter density parameter", cxxopts::value()) + ("s,Sum_m_nu", "sum of neutrino masses in eV", cxxopts::value()) + ("n,n_s", "spectral index", cxxopts::value()) + ("H,hubble", "dimensionless Hubble parameter", cxxopts::value()) + ("W,w_0", "time-independent dark energy equation-of-state parameter", cxxopts::value()) + ("w,w_a", "time-dependent dark energy equation-of-state parameter", cxxopts::value()) + ("A,A_s", "spectral amplitude", cxxopts::value()) + ("z,redshift", "redshift at which the NLC shall be computed", cxxopts::value< std::vector< double > >()) + ("i,inifile", "path to CLASS or CAMB parameter file", cxxopts::value()) + ("t,type", "'CLASS' or 'CAMB' depending on the file pointed to by -i/--inifile", cxxopts::value()) + ("p,parfile", "path to EE2 parameter file", cxxopts::value()) + ("o,outfile", "output file name", cxxopts::value()->default_value("nlc")) + ("d,outdir", "output directory", cxxopts::value()->default_value("results")) + ("v,verbosity", "verbosity level (0, 1 or 2)", cxxopts::value()->default_value("0")) + ("h,help", "Print usage"); + + // Now we actually start parsing in the arguments... + auto result = options.parse(n_args, vec_args); + + if (result.count("help")) + { + std::cout << options.help() << std::endl; + exit(0); + } + CSM.verbosity_level = result["verbosity"].as(); + + CSM.outfilename = result["outfile"].as(); + CSM.outdir = result["outdir"].as(); + if (strcmp(&CSM.outdir.back(), "/")){ + CSM.outdir += "/"; + } + // n_cosmo_pars counts the number of flags defining cosmological parameters + // on the commmand line + n_cosmo_pars = result.count("Omega_b") + result.count("Omega_m") \ + + result.count("Sum_m_nu") + result.count("n_s") \ + + result.count("hubble") + result.count("w_0") \ + + result.count("w_a") + result.count("A_s"); + + // If the cosmology shall be read from a file, then no cosmological parameter + // may be defined on the command line + if (n_cosmo_pars > 0){ + if (!result.count("redshift")){ + printf("There must be at least one specified redshift value (-z/--redshift flags) when the cosmology is defined by command line flags.\n"); + exit(1); + } + if (n_cosmo_pars < 8){ + printf("Cosmology not fully defined!\n"); + exit(1); + } + read_cosmo_from_cmdline(result, CSM); + } + if (result.count("inifile")){ + assert(n_cosmo_pars == 0); + if (!result.count("type")){ + printf("When passing an inifile, you must specify whether it is a CLASS or a CAMB file through the -t/--type flag\n"); + } + if (!strcmp(result["type"].as().c_str(),"CLASS")){ + read_classfile(result["inifile"].as(), CSM); + } + else if(!strcmp(result["type"].as().c_str(),"CAMB")){ + read_cambfile(result["inifile"].as(), CSM); + } + else{ + printf("No valid type for ini file. Please set -t/--type to either 'CLASS' or 'CAMB'.\n"); + } + } + if (result.count("parfile")){ + assert(n_cosmo_pars == 0); + read_parfile(result["parfile"].as(), CSM); + } + + return CSM; +} + +void read_cosmo_from_cmdline(cxxopts::ParseResult result, csmpars &CSM){ + std::cout << "Reading cosmology from command line..." << std::endl; + + if (result.count("Omega_b")){ + CSM.Omega_b.push_back(result["Omega_b"].as()); + } + if (result.count("Omega_m")){ + CSM.Omega_m.push_back(result["Omega_m"].as()); + } + if (result.count("Sum_m_nu")){ + CSM.Sum_m_nu.push_back(result["Sum_m_nu"].as()); + } + if (result.count("n_s")){ + CSM.n_s.push_back(result["n_s"].as()); + } + if (result.count("hubble")){ + CSM.h.push_back(result["hubble"].as()); + } + if (result.count("w_0")){ + CSM.w_0.push_back(result["w_0"].as()); + } + if (result.count("w_a")){ + CSM.w_a.push_back(result["w_a"].as()); + } + if (result.count("A_s")){ + CSM.A_s.push_back(result["A_s"].as()); + } + if (result.count("redshift")){ + std::string zvecstr = "zvec = ["; + CSM.n_redshift.push_back(result.count("redshift")); + std::vector ztmp = result["redshift"].as< std::vector >(); + CSM.zvec.push_back(ztmp); + for(int i=0; i ERROR <==: The defined cosmology is non-flat. Please set Omega_k = 0.0." << std::endl; + std::cerr << "\nABORT!" << std::endl; + exit(1); + } + } + if (starts_with(removeblanks(current_line), "k_pivot=")){ + if(extract_value(current_line) != 0.05 ){ + std::cerr << "\n==> ERROR <==: The defined pivot scale is not specified to be 0.05 Mpc^{-1}.\n"\ + << " This contradicts the hardcoded settings of EuclidEmulator2." << std::endl; + std::cerr << "\nABORT!" << std::endl; + exit(1); + } + } + if (starts_with(removeblanks(current_line), "T_cmb=")){ + if(extract_value(current_line) != 2.7255 ){ + std::cerr << "\n--> WARNING <--: The CMB temperature T_cmb ≠ 2.7255 K is ignored.\n" \ + << " EuclidEmulator2 always assumes T_cmb = 2.7255 K." << std::endl; + std::cerr << "\nABORT!" << std::endl; + exit(1); + } + } +} + +void read_classfile(std::string class_file_name, csmpars &CSM){ + printf("Reading cosmology from CLASS-style *.ini file...\n"); + FILE * inifile; + char instring[256]; + std::string current_line; + char * token; + + // Open parameter file (and check for success): + inifile = fopen(class_file_name.c_str(), "r"); + if(inifile == NULL){ + std::cerr << "\n==> ERROR <==: Could not open CLASS file " << class_file_name << std::endl; + std::cerr << "\nABORT!" << std::endl; + exit(1); + } + + // Read file line by line + double Omega_cdm, omega_nu; + bool read_next_line = true; + bool hubble_defined = false; + bool mnu_defined = false; + bool Omega_ncdm_defined = false; + bool As_defined = false; + // first: find the Hubble parameter: + while(read_next_line){ + if (fgets(instring, 256, inifile) != NULL){ + current_line = instring; + + // But at the VERY first: check if all inputs are valid + check_implicit_classparameters(current_line); + + // Hubble parameter: + if (starts_with(removeblanks(current_line), "H0=")){ + CSM.h.push_back(0.01*extract_value(current_line)); + hubble_defined = true; + } + if (starts_with(removeblanks(current_line), "h=")){ + CSM.h.push_back(extract_value(current_line)); + hubble_defined = true; + } + } + else{ + read_next_line = false; + } + } + // Check if all necessary parameters are defined: + if (!hubble_defined){ + std::cerr << "\n==> ERROR <==: You have not explicitely defined the Hubble parameter. Please do so! \n" \ + << " EuclidEmulator2 does not accept the peak scale parameter theta_s as an alternative\n" \ + << " to specifying H0 or h, respectively." << std::endl; + std::cerr << "\nABORT!" << std::endl; + exit(1); + } + // Go back to beginning of file. + rewind(inifile); + + // Now that we know the Hubble parameter, we can read the remaining parameters: + read_next_line = true; + while(read_next_line){ + if (fgets(instring, 256, inifile) != NULL){ + current_line = instring; + // Baryon density parameter: + if (starts_with(removeblanks(current_line), "Omega_b=")){ + CSM.Omega_b.push_back(extract_value(current_line)); + } + if (starts_with(removeblanks(current_line), "omega_b=")){ + CSM.Omega_b.push_back(extract_value(current_line)/pow(CSM.h.at(0),2)); + } + // Cold dark matter (CDM) density parameter: + if (starts_with(removeblanks(current_line), "Omega_cdm=")){ + Omega_cdm = extract_value(current_line); + } + if (starts_with(removeblanks(current_line), "omega_cdm=")){ + Omega_cdm = extract_value(current_line)/pow(CSM.h.at(0),2); + } + // Massive neutrinos: + if (starts_with(removeblanks(current_line), "Omega_ncdm=")){ + std::cerr << "--> WARNING <--: You have specified Omega_ncdm instead of Sum m_nu. Notice that\n" \ + << " EuclidEmulator2 only recognizes Sum m_nu. For the conversion\n" \ + << " the approximate formula Sum m_nu = 93.14 eV * Omega_ncdm*h2 is used.\n" \ + << " For a more accurate value of Sum m_nu you should specify it\n" \ + << " directly." << std::endl; + omega_nu = extract_value(current_line)*pow(CSM.h.at(0),2); + CSM.Sum_m_nu.push_back(93.14 * omega_nu); + mnu_defined = true; + } + if (starts_with(removeblanks(current_line), "m_ncdm=")){ + std::string token, value_str = current_line.substr(current_line.find("=")+1), delimiter = ","; + size_t pos = 0; + double tot_m_nu = 0.0; + int cntr = 0; + double m_nu[3] = {0.0, 0.0, 0.0}; + while ((pos = value_str.find(delimiter)) != std::string::npos) { + token = value_str.substr(0, pos); + m_nu[cntr] = extract_value(token); + tot_m_nu += m_nu[cntr]; + value_str.erase(0, pos + delimiter.length()); + cntr++; + } + m_nu[cntr] = extract_value(value_str); + tot_m_nu += m_nu[cntr]; + + if (m_nu[0] != m_nu[1] || m_nu[0] != m_nu[2] || m_nu[0] != m_nu[2]){ + std::cerr << "\n--> WARNING <--: You have defined a non-degenerate hierarchy of neutrino mass\n" \ + << " eigenstates. This hierarchy will be ignored. EuclidEmulator2 always\n" \ + << " assumes a degenerate hierarchy of neutrino mass eigenstates.\n" << std::endl; + } + CSM.Sum_m_nu.push_back(tot_m_nu); + mnu_defined = true; + } + if (starts_with(removeblanks(current_line), "Omega_ncdm=")){ + Omega_ncdm_defined = true; + } + // spectral index: + if (starts_with(removeblanks(current_line), "n_s=")){ + CSM.n_s.push_back(extract_value(current_line)); + } + // DE EoS w_0: + if (starts_with(removeblanks(current_line), "w0_fld=")){ + CSM.w_0.push_back(extract_value(current_line)); + } + // DE EoS w_a: + if (starts_with(removeblanks(current_line), "wa_fld=")){ + CSM.w_a.push_back(extract_value(current_line)); + } + // spectral amplitude: + if (starts_with(removeblanks(current_line), "A_s=")){ + CSM.A_s.push_back(extract_value(current_line)); + As_defined = true; + } + // redshifts: + if (starts_with(removeblanks(current_line), "z_pk=")){ + std::string token, value_str = current_line.substr(current_line.find("=")+1), delimiter = ","; + size_t pos = 0; + std::vector z_tmp; // auxiliary vector (zvec is a matrix, z_tmp a row of this matrix) + CSM.n_redshift.push_back(0); + // Iterate through the list until only the last entry is left, + // i.e. no more delimiters can be found: + while ((pos = value_str.find(delimiter)) != std::string::npos) { + CSM.n_redshift.at(0)++; //count the number of list items + token = value_str.substr(0, pos); + z_tmp.push_back(atof(token.c_str())); + value_str.erase(0, pos + delimiter.length()); + } + // Don't forget to add the last redshift in the list to the vector: + CSM.n_redshift.at(0)++; + z_tmp.push_back(atof(value_str.c_str())); + CSM.zvec.push_back(z_tmp); + } + if (starts_with(removeblanks(current_line), "root=")){ + std::string newoutdir, delimiter = "/", fileroot = current_line.substr(current_line.find("=")+1); + size_t pos = 0; + newoutdir = ""; + while ((pos = fileroot.find(delimiter)) != std::string::npos) { + newoutdir += trim(fileroot.substr(0,pos)) + "/"; + fileroot.erase(0, pos + delimiter.length()); + } + if(!newoutdir.empty()){ + CSM.outdir = newoutdir; + } + + CSM.outfilename = trim(fileroot); + std::string newline="\n"; + int newlinelength = newline.length(); + int startpos = CSM.outfilename.length()-newlinelength; + if (CSM.outfilename.compare(startpos - newlinelength, newlinelength, newline)){ + CSM.outfilename.replace(startpos,newlinelength,""); + CSM.outfilename = trim(CSM.outfilename); + } + } + } + else{ + read_next_line = false; + } + } + fclose(inifile); + + // Fill unspecified DE parameters: + if (CSM.w_0.size() == 0){ + std::cout << "\n--> WARNING <--: w_0 is not specified --> set to -1.0." << std::endl; + CSM.w_0.push_back(-1.0); + } + if (CSM.w_a.size() == 0){ + std::cout << "\n--> WARNING <--: w_a is not specified --> set to 0.0." << std::endl; + CSM.w_a.push_back(0.0); + } + + // Compute matter density parameter; + CSM.Omega_m.push_back(Omega_cdm + CSM.Omega_b.at(0)); // Notice that here boh Omega and omega can be stored. + + // Check if all necessary parameters are defined: + if (!mnu_defined){ + if (Omega_ncdm_defined){ + std::cout << "\n==> ERROR <==: You have not explicitely defined the neutrino mass eigenstates. Please do so! \n" \ + << " Alternative specifications of the neutrino content (e.g. through Omega_ncdm) are not \n" \ + << " accepted by EuclidEmulator2." << std::endl; + std::cerr << "\nABORT!" << std::endl; + exit(1); + }else{ + std::cout << "\n--> WARNING <--: Neither neutrino mass eigenstates nor a neutrino density parameter have been\n" \ + << " specified. Hence we assume only massless neutrinos: Sum m_nu = 0.0 eV." << std::endl; + CSM.Sum_m_nu.push_back(0.0); + } + } + if (!As_defined){ + std::cout << "\n==> ERROR <==: You have not explicitely defined the spectral amplitude A_s. Please do so! \n" \ + << " Alternative normalizations (as e.g. sigma_8) are not accepted by EuclidEmulator2." << std::endl; + std::cerr << "\nABORT!" << std::endl; + exit(1); + } +} + +void check_implicit_cambparameters(std::string current_line){ + // Check parameters implicitly defined in EE2: + if (starts_with(removeblanks(current_line), "omk=")){ + if(extract_value(current_line) != 0.0 ){ + std::cerr << "\n==> ERROR <==: The defined cosmology is non-flat. Please set omk = 0.0." << std::endl; + std::cerr << "\nABORT!" << std::endl; + exit(1); + } + } + if (starts_with(removeblanks(current_line), "pivot_scalar=")){ + if(extract_value(current_line) != 0.05 ){ + std::cerr << "\n==> ERROR <==: The defined pivot scale is not specified to be 0.05 Mpc^{-1}.\n"\ + << " This contradicts the hardcoded settings of EuclidEmulator2." << std::endl; + std::cerr << "\nABORT!" << std::endl; + exit(1); + } + } + if (starts_with(removeblanks(current_line), "temp_cmb=")){ + if(extract_value(current_line) != 2.7255 ){ + std::cerr << "\n==> ERROR <==: The CMB temperature T_cmb ≠ 2.7255 K is ignored.\n" \ + << " EuclidEmulator2 always assumes T_cmb = 2.7255 K." << std::endl; + std::cerr << "\nABORT!" << std::endl; + exit(1); + } + } + if (starts_with(removeblanks(current_line), "dark_energy_model=")){ + if(current_line.find("PPF") == std::string::npos){ + std::cerr << "\n--> WARNING <--: The specified dark energy model is not set to \"PPF\".\n" \ + << " Notice that EuclidEmulator2 ALWAYS implicitely assumes the\n"\ + << " PPF model.\n" < ERROR <==: You have not explicitely defined the Hubble parameter. Please do so! \n" \ + << " EuclidEmulator2 does not accept the peak scale parameter theta_s as an alternative\n" \ + << " to specifying H0 or h, respectively." << std::endl; + std::cerr << "\nABORT!" << std::endl; + exit(1); + } + // Go back to beginning of file. + rewind(inifile); + + // Now that we know the Hubble parameter, we can read the remaining parameters: + read_next_line = true; + while(read_next_line){ + if (fgets(instring, 256, inifile) != NULL){ + current_line = instring; + // Baryon density parameter: + if (starts_with(removeblanks(current_line), "ombh2=")){ + CSM.Omega_b.push_back(extract_value(current_line)/pow(CSM.h.at(0),2)); + } + // Cold dark matter (CDM) density parameter: + if (starts_with(removeblanks(current_line), "omch2=")){ + Omega_cdm = extract_value(current_line)/pow(CSM.h.at(0),2); + } + // Massive neutrinos: + if (starts_with(removeblanks(current_line), "omnuh2=")){ + std::cerr << "--> WARNING <--: You have specified omnuh2 instead of Sum m_nu. Notice that\n" \ + << " EuclidEmulator2 only recognizes Sum m_nu. For the conversion\n" \ + << " the approximate formula Sum m_nu = 93.14 eV * omnuh2 is used.\n" \ + << " For a more accurate value of Sum m_nu you should specify it\n" \ + << " directly." << std::endl; + omega_nu = extract_value(current_line); + CSM.Sum_m_nu.push_back(93.14 * omega_nu); + mnu_defined = true; + } + if (starts_with(removeblanks(current_line), "omnuh2=")){ + Omega_ncdm_defined = true; + } + // spectral index: + if (starts_with(removeblanks(current_line), "scalar_spectral_index(1)=")){ + CSM.n_s.push_back(extract_value(current_line)); + } + // DE EoS w_0: + if (starts_with(removeblanks(current_line), "w=")){ + CSM.w_0.push_back(extract_value(current_line)); + } + // DE EoS w_a: + if (starts_with(removeblanks(current_line), "wa=")){ + CSM.w_a.push_back(extract_value(current_line)); + } + // spectral amplitude: + if (starts_with(removeblanks(current_line), "scalar_amp(1)=")){ + CSM.A_s.push_back(extract_value(current_line)); + As_defined = true; + } + // redshifts: + if (starts_with(removeblanks(current_line), "transfer_redshift(1)=")){ + std::string token, value_str = current_line.substr(current_line.find("=")+1), delimiter = ","; + size_t pos = 0; + std::vector z_tmp; // auxiliary vector (zvec is a matrix, z_tmp a row of this matrix) + CSM.n_redshift.push_back(0); + // Iterate through the list until only the last entry is left, + // i.e. no more delimiters can be found: + while ((pos = value_str.find(delimiter)) != std::string::npos) { + CSM.n_redshift.at(0)++; //count the number of list items + token = value_str.substr(0, pos); + z_tmp.push_back(atof(token.c_str())); + value_str.erase(0, pos + delimiter.length()); + } + // Don't forget to add the last redshift in the list to the vector: + CSM.n_redshift.at(0)++; + z_tmp.push_back(atof(value_str.c_str())); + CSM.zvec.push_back(z_tmp); + } + if (starts_with(removeblanks(current_line), "output_root=")){ + std::string newoutdir, delimiter = "/", fileroot = current_line.substr(current_line.find("=")+1); + size_t pos = 0; + newoutdir = ""; + while ((pos = fileroot.find(delimiter)) != std::string::npos) { + newoutdir += trim(fileroot.substr(0,pos)) + "/"; + fileroot.erase(0, pos + delimiter.length()); + } + if(!newoutdir.empty()){ + CSM.outdir = newoutdir; + } + CSM.outfilename = trim(fileroot); + } + } + else{ + read_next_line = false; + } + } + fclose(inifile); + + // Fill unspecified DE parameters: + if (CSM.w_0.size() == 0){ + std::cout << "\n--> WARNING <--: w_0 is not specified --> set to -1.0." << std::endl; + CSM.w_0.push_back(-1.0); + } + if (CSM.w_a.size() == 0){ + std::cout << "\n--> WARNING <--: w_a is not specified --> set to 0.0." << std::endl; + CSM.w_a.push_back(0.0); + } + + // Compute matter density parameter; + CSM.Omega_m.push_back(Omega_cdm + CSM.Omega_b.at(0)); // Notice that here boh Omega and omega can be stored. + + // Check if all necessary parameters are defined: + if (!mnu_defined){ + if (Omega_ncdm_defined){ + std::cout << "\n==> ERROR <==: You have not explicitely defined the neutrino mass eigenstates. It is strongly recommended \n" \ + << " to do so as alternative specifications of the neutrino content (e.g. through Omega_ncdm)\n" \ + << " lead to very crudely approximated results or are not even accepted by EuclidEmulator2." << std::endl; + exit(1); + }else{ + std::cout << "\n--> WARNING <--: Neither neutrino mass eigenstates nor a neutrino density parameter have been\n" \ + << " specified. Hence we assume only massless neutrinos: Sum m_nu = 0.0 eV." << std::endl; + CSM.Sum_m_nu.push_back(0.0); + } + } + if (!As_defined){ + std::cout << "\n==> ERROR <==: You have not explicitely defined the spectral amplitude A_s. Please do so! \n" \ + << " Alternative normalizations (as e.g. sigma_8) are not accepted by EuclidEmulator2." << std::endl; + exit(1); + } +} + +void read_parfile(std::string par_file_name, csmpars &CSM){ + printf("Reading cosmology from EE2 parameter file...\n"); + + FILE * cosmofile; + char instring[256]; + char * token; + + // Open parameter file (and check for success): + cosmofile = fopen(par_file_name.c_str(), "r"); + if(cosmofile == NULL){ + std::cout << "Could not open cosmology file " << par_file_name << std::endl; + std::cout << "Please make sure the command line argument list follows the format: " << std::endl; + std::cout << std::endl; + std::cout << " ./ee2.exe [/path/to/cosmology/file]" << std::endl; + std::cout << "or" << std::endl; + std::cout << " ./ee2.exe [Omega_b] [Omega_m] [Sum m_nu] [n_s] [h] [w_0] [w_a] [A_s] [z_1] ... [z_n]" << std::endl; + exit(1); + } + + // Fill arrays + int linecntr = 0; + bool read_next_line = true; + while(read_next_line){ + if (fgets(instring, 256, cosmofile) != NULL){ + //Ignore the line if it is a comment + if (instring[0] == '#'){ + continue; + } + //Remark: Don't forget to split (i.e. tokenize) each + // line into its individual parameters + token = strtok(instring, ","); + CSM.Omega_b.push_back(atof(token)); + + token = strtok(NULL, ","); + CSM.Omega_m.push_back(atof(token)); + + token = strtok(NULL, ","); + CSM.Sum_m_nu.push_back(atof(token)); + + token = strtok(NULL, ","); + CSM.n_s.push_back(atof(token)); + + token = strtok(NULL, ","); + CSM.h.push_back(atof(token)); + + token = strtok(NULL, ","); + CSM.w_0.push_back(atof(token)); + + token = strtok(NULL, ","); + CSM.w_a.push_back(atof(token)); + + token = strtok(NULL, ","); + CSM.A_s.push_back(atof(token)); + + // Read the rest of the line as individual redshifts: + std::vector z_tmp; + bool reached_end_of_line = false; + while (!reached_end_of_line){ + token = strtok(NULL, ","); + printf("Redshifts: %s\n", token); + z_tmp.push_back(atof(token)); + if (strstr(token, "\n") != NULL) reached_end_of_line = true; + } + CSM.zvec.push_back(z_tmp); + CSM.n_redshift.push_back(z_tmp.size()); + linecntr++; + } + else{ + read_next_line = false; + } + } + fclose(cosmofile); +} diff --git a/EuclidEmulator2/src/parse.h b/EuclidEmulator2/src/parse.h new file mode 100644 index 00000000..324c56f6 --- /dev/null +++ b/EuclidEmulator2/src/parse.h @@ -0,0 +1,46 @@ +/* parse.h +* ======= +* This file is part of EuclidEmulator2 +* Copyright (c) 2020 Mischa Knabenhans +* +* EuclidEmulator2 is free software: you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* EuclidEmulator2 is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*/ + +#include +#include +#include +#include +#include + +struct csmpars { + int verbosity_level; + std::vector Omega_b; + std::vector Omega_m; + std::vector Sum_m_nu; + std::vector n_s; + std::vector h; + std::vector w_0; + std::vector w_a; + std::vector A_s; + std::vector n_redshift; + std::vector< std::vector > zvec; + std::string outfilename; + std::string outdir; +}; + +csmpars ee2_parser(int n_args, char * vec_args[]); +void read_cosmo_from_cmdline(cxxopts::ParseResult result, csmpars &CSM); +void read_classfile(std::string class_file_name, csmpars &CSM); +void read_cambfile(std::string class_file_name, csmpars &CSM); +void read_parfile(std::string par_file_name, csmpars &CSM); diff --git a/EuclidEmulator2/src/tags b/EuclidEmulator2/src/tags new file mode 100644 index 00000000..469b9839 --- /dev/null +++ b/EuclidEmulator2/src/tags @@ -0,0 +1,1276 @@ +!_TAG_FILE_FORMAT 2 /extended format; --format=1 will not append ;" to lines/ +!_TAG_FILE_SORTED 1 /0=unsorted, 1=sorted, 2=foldcase/ +!_TAG_PROGRAM_AUTHOR Darren Hiebert /dhiebert@users.sourceforge.net/ +!_TAG_PROGRAM_NAME Exuberant Ctags // +!_TAG_PROGRAM_URL http://ctags.sourceforge.net /official site/ +!_TAG_PROGRAM_VERSION 5.8 // +A_s parse.h /^ std::vector A_s;$/;" m struct:csmpars +BASE euclidemu2.cpp 232;" d file: +Bvec emulator.h /^ double Bvec[101][613];$/;" m class:EuclidEmulator +Bvec euclidemu2.pyx /^ def Bvec(self):$/;" m class:PyEuclidEmulator +Bvec euclidemu2.pyx /^ def Bvec(self, Bvec):$/;" m class:PyEuclidEmulator +COSMOLOGY_H cosmo.h 21;" d +CYTHON_ABI euclidemu2.cpp 44;" d file: +CYTHON_ASSUME_SAFE_MACROS euclidemu2.cpp 104;" d file: +CYTHON_ASSUME_SAFE_MACROS euclidemu2.cpp 105;" d file: +CYTHON_ASSUME_SAFE_MACROS euclidemu2.cpp 144;" d file: +CYTHON_ASSUME_SAFE_MACROS euclidemu2.cpp 202;" d file: +CYTHON_AVOID_BORROWED_REFS euclidemu2.cpp 102;" d file: +CYTHON_AVOID_BORROWED_REFS euclidemu2.cpp 103;" d file: +CYTHON_AVOID_BORROWED_REFS euclidemu2.cpp 141;" d file: +CYTHON_AVOID_BORROWED_REFS euclidemu2.cpp 199;" d file: +CYTHON_COMPILING_IN_CPYTHON euclidemu2.cpp 123;" d file: +CYTHON_COMPILING_IN_CPYTHON euclidemu2.cpp 164;" d file: +CYTHON_COMPILING_IN_CPYTHON euclidemu2.cpp 83;" d file: +CYTHON_COMPILING_IN_PYPY euclidemu2.cpp 121;" d file: +CYTHON_COMPILING_IN_PYPY euclidemu2.cpp 162;" d file: +CYTHON_COMPILING_IN_PYPY euclidemu2.cpp 81;" d file: +CYTHON_COMPILING_IN_PYSTON euclidemu2.cpp 122;" d file: +CYTHON_COMPILING_IN_PYSTON euclidemu2.cpp 163;" d file: +CYTHON_COMPILING_IN_PYSTON euclidemu2.cpp 82;" d file: +CYTHON_FALLTHROUGH euclidemu2.cpp 299;" d file: +CYTHON_FALLTHROUGH euclidemu2.cpp 301;" d file: +CYTHON_FALLTHROUGH euclidemu2.cpp 303;" d file: +CYTHON_FALLTHROUGH euclidemu2.cpp 308;" d file: +CYTHON_FALLTHROUGH euclidemu2.cpp 310;" d file: +CYTHON_FALLTHROUGH euclidemu2.cpp 315;" d file: +CYTHON_FALLTHROUGH euclidemu2.cpp 316;" d file: +CYTHON_FAST_PYCALL euclidemu2.cpp 110;" d file: +CYTHON_FAST_PYCALL euclidemu2.cpp 111;" d file: +CYTHON_FAST_PYCALL euclidemu2.cpp 151;" d file: +CYTHON_FAST_PYCALL euclidemu2.cpp 152;" d file: +CYTHON_FAST_PYCALL euclidemu2.cpp 211;" d file: +CYTHON_FAST_PYCCALL euclidemu2.cpp 227;" d file: +CYTHON_FAST_THREAD_STATE euclidemu2.cpp 108;" d file: +CYTHON_FAST_THREAD_STATE euclidemu2.cpp 109;" d file: +CYTHON_FAST_THREAD_STATE euclidemu2.cpp 149;" d file: +CYTHON_FAST_THREAD_STATE euclidemu2.cpp 150;" d file: +CYTHON_FAST_THREAD_STATE euclidemu2.cpp 208;" d file: +CYTHON_FORMAT_SSIZE_T euclidemu2.cpp 353;" d file: +CYTHON_FUTURE_DIVISION euclidemu2.cpp 46;" d file: +CYTHON_HEX_VERSION euclidemu2.cpp 45;" d file: +CYTHON_INLINE euclidemu2.cpp 326;" d file: +CYTHON_INLINE euclidemu2.cpp 328;" d file: +CYTHON_MAYBE_UNUSED_VAR euclidemu2.cpp /^ template void CYTHON_MAYBE_UNUSED_VAR( const T& ) { }$/;" f +CYTHON_MAYBE_UNUSED_VAR euclidemu2.cpp 272;" d file: +CYTHON_NCP_UNUSED euclidemu2.cpp 277;" d file: +CYTHON_NCP_UNUSED euclidemu2.cpp 279;" d file: +CYTHON_PEP393_ENABLED euclidemu2.cpp 476;" d file: +CYTHON_PEP393_ENABLED euclidemu2.cpp 492;" d file: +CYTHON_PEP489_MULTI_PHASE_INIT euclidemu2.cpp 112;" d file: +CYTHON_PEP489_MULTI_PHASE_INIT euclidemu2.cpp 113;" d file: +CYTHON_PEP489_MULTI_PHASE_INIT euclidemu2.cpp 153;" d file: +CYTHON_PEP489_MULTI_PHASE_INIT euclidemu2.cpp 154;" d file: +CYTHON_PEP489_MULTI_PHASE_INIT euclidemu2.cpp 214;" d file: +CYTHON_REFNANNY euclidemu2.cpp 912;" d file: +CYTHON_RESTRICT euclidemu2.cpp 246;" d file: +CYTHON_RESTRICT euclidemu2.cpp 248;" d file: +CYTHON_RESTRICT euclidemu2.cpp 250;" d file: +CYTHON_RESTRICT euclidemu2.cpp 252;" d file: +CYTHON_SMALL_CODE euclidemu2.cpp 9699;" d file: +CYTHON_SMALL_CODE euclidemu2.cpp 9701;" d file: +CYTHON_SMALL_CODE euclidemu2.cpp 9703;" d file: +CYTHON_UNPACK_METHODS euclidemu2.cpp 106;" d file: +CYTHON_UNPACK_METHODS euclidemu2.cpp 107;" d file: +CYTHON_UNPACK_METHODS euclidemu2.cpp 147;" d file: +CYTHON_UNPACK_METHODS euclidemu2.cpp 205;" d file: +CYTHON_UNUSED euclidemu2.cpp 258;" d file: +CYTHON_UNUSED euclidemu2.cpp 260;" d file: +CYTHON_UNUSED euclidemu2.cpp 263;" d file: +CYTHON_UNUSED euclidemu2.cpp 265;" d file: +CYTHON_USE_ASYNC_SLOTS euclidemu2.cpp 129;" d file: +CYTHON_USE_ASYNC_SLOTS euclidemu2.cpp 130;" d file: +CYTHON_USE_ASYNC_SLOTS euclidemu2.cpp 175;" d file: +CYTHON_USE_ASYNC_SLOTS euclidemu2.cpp 176;" d file: +CYTHON_USE_ASYNC_SLOTS euclidemu2.cpp 178;" d file: +CYTHON_USE_ASYNC_SLOTS euclidemu2.cpp 89;" d file: +CYTHON_USE_ASYNC_SLOTS euclidemu2.cpp 90;" d file: +CYTHON_USE_ASYNC_SLOTS euclidemu2.cpp 92;" d file: +CYTHON_USE_DICT_VERSIONS euclidemu2.cpp 116;" d file: +CYTHON_USE_DICT_VERSIONS euclidemu2.cpp 117;" d file: +CYTHON_USE_DICT_VERSIONS euclidemu2.cpp 157;" d file: +CYTHON_USE_DICT_VERSIONS euclidemu2.cpp 158;" d file: +CYTHON_USE_DICT_VERSIONS euclidemu2.cpp 220;" d file: +CYTHON_USE_EXC_INFO_STACK euclidemu2.cpp 118;" d file: +CYTHON_USE_EXC_INFO_STACK euclidemu2.cpp 119;" d file: +CYTHON_USE_EXC_INFO_STACK euclidemu2.cpp 159;" d file: +CYTHON_USE_EXC_INFO_STACK euclidemu2.cpp 160;" d file: +CYTHON_USE_EXC_INFO_STACK euclidemu2.cpp 223;" d file: +CYTHON_USE_PYLIST_INTERNALS euclidemu2.cpp 131;" d file: +CYTHON_USE_PYLIST_INTERNALS euclidemu2.cpp 132;" d file: +CYTHON_USE_PYLIST_INTERNALS euclidemu2.cpp 187;" d file: +CYTHON_USE_PYLIST_INTERNALS euclidemu2.cpp 94;" d file: +CYTHON_USE_PYLIST_INTERNALS euclidemu2.cpp 95;" d file: +CYTHON_USE_PYLONG_INTERNALS euclidemu2.cpp 100;" d file: +CYTHON_USE_PYLONG_INTERNALS euclidemu2.cpp 101;" d file: +CYTHON_USE_PYLONG_INTERNALS euclidemu2.cpp 138;" d file: +CYTHON_USE_PYLONG_INTERNALS euclidemu2.cpp 139;" d file: +CYTHON_USE_PYLONG_INTERNALS euclidemu2.cpp 181;" d file: +CYTHON_USE_PYLONG_INTERNALS euclidemu2.cpp 182;" d file: +CYTHON_USE_PYLONG_INTERNALS euclidemu2.cpp 184;" d file: +CYTHON_USE_PYTYPE_LOOKUP euclidemu2.cpp 127;" d file: +CYTHON_USE_PYTYPE_LOOKUP euclidemu2.cpp 128;" d file: +CYTHON_USE_PYTYPE_LOOKUP euclidemu2.cpp 169;" d file: +CYTHON_USE_PYTYPE_LOOKUP euclidemu2.cpp 170;" d file: +CYTHON_USE_PYTYPE_LOOKUP euclidemu2.cpp 172;" d file: +CYTHON_USE_PYTYPE_LOOKUP euclidemu2.cpp 86;" d file: +CYTHON_USE_PYTYPE_LOOKUP euclidemu2.cpp 87;" d file: +CYTHON_USE_TP_FINALIZE euclidemu2.cpp 114;" d file: +CYTHON_USE_TP_FINALIZE euclidemu2.cpp 115;" d file: +CYTHON_USE_TP_FINALIZE euclidemu2.cpp 155;" d file: +CYTHON_USE_TP_FINALIZE euclidemu2.cpp 156;" d file: +CYTHON_USE_TP_FINALIZE euclidemu2.cpp 217;" d file: +CYTHON_USE_TYPE_SLOTS euclidemu2.cpp 125;" d file: +CYTHON_USE_TYPE_SLOTS euclidemu2.cpp 166;" d file: +CYTHON_USE_TYPE_SLOTS euclidemu2.cpp 84;" d file: +CYTHON_USE_TYPE_SLOTS euclidemu2.cpp 85;" d file: +CYTHON_USE_UNICODE_INTERNALS euclidemu2.cpp 134;" d file: +CYTHON_USE_UNICODE_INTERNALS euclidemu2.cpp 190;" d file: +CYTHON_USE_UNICODE_INTERNALS euclidemu2.cpp 96;" d file: +CYTHON_USE_UNICODE_INTERNALS euclidemu2.cpp 97;" d file: +CYTHON_USE_UNICODE_WRITER euclidemu2.cpp 136;" d file: +CYTHON_USE_UNICODE_WRITER euclidemu2.cpp 137;" d file: +CYTHON_USE_UNICODE_WRITER euclidemu2.cpp 193;" d file: +CYTHON_USE_UNICODE_WRITER euclidemu2.cpp 194;" d file: +CYTHON_USE_UNICODE_WRITER euclidemu2.cpp 196;" d file: +CYTHON_USE_UNICODE_WRITER euclidemu2.cpp 98;" d file: +CYTHON_USE_UNICODE_WRITER euclidemu2.cpp 99;" d file: +CYTHON_WITHOUT_ASSERTIONS euclidemu2.cpp 671;" d file: +Cosmology cosmo.cxx /^Cosmology::Cosmology(double Omega_b, double Omega_m, double Sum_m_nu, double n_s, double h, double w_0, double w_a, double A_s):$/;" f class:Cosmology +Cosmology cosmo.h /^class Cosmology{$/;" c +DECREF euclidemu2.cpp /^ void (*DECREF)(void*, PyObject*, int);$/;" m struct:__anon6 file: +DL_EXPORT euclidemu2.cpp 66;" d file: +DL_IMPORT euclidemu2.cpp 63;" d file: +Delta_t cosmo.h /^ double t0, t10, Delta_t, Neff, H0;$/;" m class:Cosmology +EMULATOR_C_CONNECTOR_H emulator_c_connector.h 2;" d +EMULATOR_H emulator.h 21;" d +EPSCOSMO cosmo.cxx 27;" d file: +EuclidEmulator emulator.cxx /^EuclidEmulator::EuclidEmulator():$/;" f class:EuclidEmulator +EuclidEmulator emulator.h /^class EuclidEmulator{$/;" c +EuclidEmulator_compute_nlc emulator_c_connector.c /^void EuclidEmulator_compute_nlc(double Omega_b, double Omega_m, double Sum_m_nu, double n_s, double h, double w_0, double w_a, double A_s, double* redshift, int n_redshift, double* kout, double* pkout) {$/;" f +EuclidEmulator_instance emulator_c_connector.c /^static EuclidEmulator *EuclidEmulator_instance = NULL;$/;" v file: +FinishContext euclidemu2.cpp /^ void (*FinishContext)(void**);$/;" m struct:__anon6 file: +G units_and_constants.h /^ const double G = 1.0; \/\/ Newton's constant of gravity$/;" m namespace:planck_units +G units_and_constants.h /^ const double G = 6.67428e-11 * pow(meter,3)\/(kilogram*pow(second,2)); \/\/ Newton's constant of gravity$/;" m namespace:SI_units +G units_and_constants.h /^ const double G = 1.0; \/\/ Newton's constant of gravity$/;" m namespace:cosmological_units +G units_and_constants.h /^ const double G = 1.0; \/\/ Newton's constant of gravity$/;" m namespace:pkdgrav_units +GIVEREF euclidemu2.cpp /^ void (*GIVEREF)(void*, PyObject*, int);$/;" m struct:__anon6 file: +GOTREF euclidemu2.cpp /^ void (*GOTREF)(void*, PyObject*, int);$/;" m struct:__anon6 file: +H0 cosmo.h /^ double t0, t10, Delta_t, Neff, H0;$/;" m class:Cosmology +HAVE_LONG_LONG euclidemu2.cpp 71;" d file: +INCREF euclidemu2.cpp /^ void (*INCREF)(void*, PyObject*, int);$/;" m struct:__anon6 file: +Joule units_and_constants.h /^ const double Joule = kilogram * pow(meter,2)\/pow(second,2); \/\/ Joule$/;" m namespace:SI_units +Joule units_and_constants.h /^ const double Joule = kilogram * pow(meter,2)\/pow(second,2); \/\/ in planckian energy units$/;" m namespace:planck_units +Joule units_and_constants.h /^ const double Joule = kilogram * pow(meter,2)\/pow(second,2); \/\/ in planckian energy units$/;" m namespace:cosmological_units +Joule units_and_constants.h /^ const double Joule = kilogram * pow(meter,2)\/pow(second,2); \/\/ in planckian energy units$/;" m namespace:pkdgrav_units +Kelvin units_and_constants.h /^ const double Kelvin = 1.0; \/\/ in Kelvin$/;" m namespace:SI_units +Kelvin units_and_constants.h /^ const double Kelvin = 1.0\/(1.416785e32); \/\/ in planck temperature$/;" m namespace:planck_units +Kelvin units_and_constants.h /^ const double Kelvin = 1.0\/(1.416785e32); \/\/ in planck temperature$/;" m namespace:cosmological_units +Kelvin units_and_constants.h /^ const double Kelvin = 1.0\/(1.416785e32); \/\/ in planck temperature$/;" m namespace:pkdgrav_units +LIMIT cosmo.cxx 28;" d file: +Lbox units_and_constants.h /^ const double Lbox = 1000 * Mpc;$/;" m namespace:SI_units +Lbox units_and_constants.h /^ const double Lbox = 1000 * Mpc;$/;" m namespace:planck_units +Lbox units_and_constants.h /^ const double Lbox = 1000 * Mpc;$/;" m namespace:cosmological_units +Lbox units_and_constants.h /^ const double Lbox = 1000 * Mpc;$/;" m namespace:pkdgrav_units +MASK euclidemu2.cpp 233;" d file: +METH_FASTCALL euclidemu2.cpp 387;" d file: +METH_STACKLESS euclidemu2.cpp 383;" d file: +Mpc units_and_constants.h /^ const double Mpc = 3.085677581282e22 * meter; \/\/ megaparsec$/;" m namespace:SI_units +Mpc units_and_constants.h /^ const double Mpc = 3.085677581282e22 * meter; \/\/ in planck lengths$/;" m namespace:planck_units +Mpc units_and_constants.h /^ const double Mpc = 3.085677581282e22 * meter; \/\/ in planck lengths$/;" m namespace:cosmological_units +Mpc units_and_constants.h /^ const double Mpc = 3.085677581282e22 * meter; \/\/ in planck lengths$/;" m namespace:pkdgrav_units +Msol units_and_constants.h /^ const double Msol = 1.98841e30 *kilogram; \/\/ solar kilogram$/;" m namespace:SI_units +Msol units_and_constants.h /^ const double Msol = 1.98841e30 * kilogram; \/\/ solar mass in planck masses$/;" m namespace:planck_units +Msol units_and_constants.h /^ const double Msol = 1.98841e30 * kilogram; \/\/ solar mass in planck masses$/;" m namespace:cosmological_units +Msol units_and_constants.h /^ const double Msol = 1.98841e30 * kilogram; \/\/ solar mass in planck masses$/;" m namespace:pkdgrav_units +Neff cosmo.h /^ double t0, t10, Delta_t, Neff, H0;$/;" m class:Cosmology +Omega_DE cosmo.cxx /^double Cosmology::Omega_DE(double a){$/;" f class:Cosmology +Omega_DE_0 cosmo.h /^ double Omega_gamma_0, Omega_nu_0, Omega_DE_0, rho_crit, T_gamma_0, T_nu_0;$/;" m class:Cosmology +Omega_b parse.h /^ std::vector Omega_b;$/;" m struct:csmpars +Omega_gamma cosmo.cxx /^double Cosmology::Omega_gamma(double a){$/;" f class:Cosmology +Omega_gamma_0 cosmo.h /^ double Omega_gamma_0, Omega_nu_0, Omega_DE_0, rho_crit, T_gamma_0, T_nu_0;$/;" m class:Cosmology +Omega_m parse.h /^ std::vector Omega_m;$/;" m struct:csmpars +Omega_matter cosmo.cxx /^double Cosmology::Omega_matter(double a){$/;" f class:Cosmology +Omega_nu cosmo.cxx /^double Cosmology::Omega_nu(double a){$/;" f class:Cosmology +Omega_nu_0 cosmo.h /^ double Omega_gamma_0, Omega_nu_0, Omega_DE_0, rho_crit, T_gamma_0, T_nu_0;$/;" m class:Cosmology +Omega_nu_0 euclidemu2.pyx /^ def Omega_nu_0(self):$/;" m class:PyCosmology +Omega_nu_0 euclidemu2.pyx /^ def Omega_nu_0(self, Omega_nu_0):$/;" m class:PyCosmology +PATH_TO_EE2_DATA_FILE emulator.h 24;" d +PRINT_FLAG cosmo.cxx 31;" d file: +PY_LONG_LONG euclidemu2.cpp 75;" d file: +PY_SSIZE_T_CLEAN euclidemu2.cpp 37;" d file: +PyBaseString_Type euclidemu2.cpp 534;" d file: +PyBoolObject euclidemu2.cpp 583;" d file: +PyByteArray_Check euclidemu2.cpp 518;" d file: +PyCosmology euclidemu2.pyx /^cdef class PyCosmology:$/;" c +PyEuclidEmulator euclidemu2.pyx /^cdef class PyEuclidEmulator:$/;" c +PyIntObject euclidemu2.cpp 566;" d file: +PyInt_AS_LONG euclidemu2.cpp 576;" d file: +PyInt_AsLong euclidemu2.cpp 575;" d file: +PyInt_AsSsize_t euclidemu2.cpp 577;" d file: +PyInt_AsUnsignedLongLongMask euclidemu2.cpp 579;" d file: +PyInt_AsUnsignedLongMask euclidemu2.cpp 578;" d file: +PyInt_Check euclidemu2.cpp 568;" d file: +PyInt_CheckExact euclidemu2.cpp 569;" d file: +PyInt_FromLong euclidemu2.cpp 572;" d file: +PyInt_FromSize_t euclidemu2.cpp 573;" d file: +PyInt_FromSsize_t euclidemu2.cpp 574;" d file: +PyInt_FromString euclidemu2.cpp 570;" d file: +PyInt_FromUnicode euclidemu2.cpp 571;" d file: +PyInt_Type euclidemu2.cpp 567;" d file: +PyMem_RawFree euclidemu2.cpp 410;" d file: +PyMem_RawMalloc euclidemu2.cpp 408;" d file: +PyMem_RawRealloc euclidemu2.cpp 409;" d file: +PyNumber_Int euclidemu2.cpp 580;" d file: +PyObject_ASCII euclidemu2.cpp 531;" d file: +PyObject_Format euclidemu2.cpp 521;" d file: +PyObject_Free euclidemu2.cpp 404;" d file: +PyObject_Malloc euclidemu2.cpp 403;" d file: +PyObject_Realloc euclidemu2.cpp 405;" d file: +PyObject_Unicode euclidemu2.cpp 540;" d file: +PySet_CheckExact euclidemu2.cpp 551;" d file: +PyStringObject euclidemu2.cpp 535;" d file: +PyString_Check euclidemu2.cpp 537;" d file: +PyString_CheckExact euclidemu2.cpp 538;" d file: +PyString_Type euclidemu2.cpp 536;" d file: +PyThread_tss_alloc euclidemu2.cpp /^static CYTHON_INLINE Py_tss_t * PyThread_tss_alloc(void) {$/;" f file: +PyThread_tss_create euclidemu2.cpp /^static CYTHON_INLINE int PyThread_tss_create(Py_tss_t *key) {$/;" f file: +PyThread_tss_delete euclidemu2.cpp /^static CYTHON_INLINE void PyThread_tss_delete(Py_tss_t *key) {$/;" f file: +PyThread_tss_free euclidemu2.cpp /^static CYTHON_INLINE void PyThread_tss_free(Py_tss_t *key) {$/;" f file: +PyThread_tss_get euclidemu2.cpp /^static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) {$/;" f file: +PyThread_tss_is_created euclidemu2.cpp /^static CYTHON_INLINE int PyThread_tss_is_created(Py_tss_t *key) {$/;" f file: +PyThread_tss_set euclidemu2.cpp /^static CYTHON_INLINE int PyThread_tss_set(Py_tss_t *key, void *value) {$/;" f file: +PyUnicode_1BYTE_KIND euclidemu2.cpp 493;" d file: +PyUnicode_2BYTE_KIND euclidemu2.cpp 494;" d file: +PyUnicode_4BYTE_KIND euclidemu2.cpp 495;" d file: +PyUnicode_Contains euclidemu2.cpp 515;" d file: +PyUnicode_InternFromString euclidemu2.cpp 587;" d file: +Py_HUGE_VAL euclidemu2.cpp 78;" d file: +Py_MEMBER_SIZE euclidemu2.cpp 1105;" d file: +Py_OptimizeFlag euclidemu2.cpp 350;" d file: +Py_TPFLAGS_CHECKTYPES euclidemu2.cpp 371;" d file: +Py_TPFLAGS_HAVE_FINALIZE euclidemu2.cpp 380;" d file: +Py_TPFLAGS_HAVE_INDEX euclidemu2.cpp 374;" d file: +Py_TPFLAGS_HAVE_NEWBUFFER euclidemu2.cpp 377;" d file: +Py_hash_t euclidemu2.cpp /^ typedef long Py_hash_t;$/;" t file: +Py_tss_NEEDS_INIT euclidemu2.cpp 430;" d file: +Py_tss_t euclidemu2.cpp /^typedef int Py_tss_t;$/;" t file: +SHIFT euclidemu2.cpp 231;" d file: +SI_units units_and_constants.h /^namespace SI_units{$/;" n +SetupContext euclidemu2.cpp /^ void* (*SetupContext)(const char*, int, const char*);$/;" m struct:__anon6 file: +Sum_m_nu parse.h /^ std::vector Sum_m_nu;$/;" m struct:csmpars +T_gamma cosmo.cxx /^double Cosmology::T_gamma(double a){$/;" f class:Cosmology +T_gamma_0 cosmo.h /^ double Omega_gamma_0, Omega_nu_0, Omega_DE_0, rho_crit, T_gamma_0, T_nu_0;$/;" m class:Cosmology +T_nu cosmo.cxx /^double Cosmology::T_nu(double a){$/;" f class:Cosmology +T_nu_0 cosmo.h /^ double Omega_gamma_0, Omega_nu_0, Omega_DE_0, rho_crit, T_gamma_0, T_nu_0;$/;" m class:Cosmology +Tgamma units_and_constants.h /^ const double Tgamma = 2.7255 * Kelvin;$/;" m namespace:SI_units +Tgamma units_and_constants.h /^ const double Tgamma = 2.7255 * Kelvin;$/;" m namespace:planck_units +Tgamma units_and_constants.h /^ const double Tgamma = 2.7255 * Kelvin;$/;" m namespace:cosmological_units +Tgamma units_and_constants.h /^ const double Tgamma = 2.7255 * Kelvin;$/;" m namespace:pkdgrav_units +UNITS_AND_CONSTANTS units_and_constants.h 21;" d +_USE_MATH_DEFINES euclidemu2.cpp 622;" d file: +__PYX_BUILD_PY_SSIZE_T euclidemu2.cpp 352;" d file: +__PYX_COMMA euclidemu2.cpp 68;" d file: +__PYX_DEFAULT_STRING_ENCODING euclidemu2.cpp /^static char* __PYX_DEFAULT_STRING_ENCODING;$/;" v file: +__PYX_DEFAULT_STRING_ENCODING euclidemu2.cpp 680;" d file: +__PYX_DEFAULT_STRING_ENCODING_IS_ASCII euclidemu2.cpp 677;" d file: +__PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT euclidemu2.cpp 679;" d file: +__PYX_DEFAULT_STRING_ENCODING_IS_UTF8 euclidemu2.cpp 678;" d file: +__PYX_DICT_VERSION_INIT euclidemu2.cpp 1126;" d file: +__PYX_ERR euclidemu2.cpp 642;" d file: +__PYX_EXTERN_C euclidemu2.cpp 647;" d file: +__PYX_EXTERN_C euclidemu2.cpp 649;" d file: +__PYX_GET_DICT_VERSION euclidemu2.cpp 1127;" d file: +__PYX_GET_DICT_VERSION euclidemu2.cpp 1145;" d file: +__PYX_HAVE_API__euclidemu2 euclidemu2.cpp 654;" d file: +__PYX_HAVE__euclidemu2 euclidemu2.cpp 653;" d file: +__PYX_MARK_ERR_POS euclidemu2.cpp 640;" d file: +__PYX_NAN euclidemu2.cpp /^static CYTHON_INLINE float __PYX_NAN() {$/;" f file: +__PYX_NAN euclidemu2.cpp 626;" d file: +__PYX_PY_DICT_LOOKUP_IF_MODIFIED euclidemu2.cpp 1131;" d file: +__PYX_PY_DICT_LOOKUP_IF_MODIFIED euclidemu2.cpp 1147;" d file: +__PYX_UPDATE_DICT_CACHE euclidemu2.cpp 1128;" d file: +__PYX_UPDATE_DICT_CACHE euclidemu2.cpp 1146;" d file: +__PYX_VERIFY_RETURN_INT euclidemu2.cpp 12271;" d file: +__PYX_VERIFY_RETURN_INT_EXC euclidemu2.cpp 12273;" d file: +__PYX__VERIFY_RETURN_INT euclidemu2.cpp 12275;" d file: +__Pxy_PyFrame_Initialize_Offsets euclidemu2.cpp 1109;" d file: +__Pyx_AddTraceback euclidemu2.cpp /^static void __Pyx_AddTraceback(const char *funcname, int c_line,$/;" f file: +__Pyx_ArgTypeTest euclidemu2.cpp 1045;" d file: +__Pyx_BUILD_ASSERT_EXPR euclidemu2.cpp 1102;" d file: +__Pyx_BUILTIN_MODULE_NAME euclidemu2.cpp 355;" d file: +__Pyx_BUILTIN_MODULE_NAME euclidemu2.cpp 360;" d file: +__Pyx_CLEAR euclidemu2.cpp 970;" d file: +__Pyx_CLineForTraceback euclidemu2.cpp /^static int __Pyx_CLineForTraceback(CYTHON_NCP_UNUSED PyThreadState *tstate, int c_line) {$/;" f file: +__Pyx_CLineForTraceback euclidemu2.cpp 1302;" d file: +__Pyx_CheckKeywordStrings euclidemu2.cpp /^static int __Pyx_CheckKeywordStrings($/;" f file: +__Pyx_CodeObjectCache euclidemu2.cpp /^struct __Pyx_CodeObjectCache {$/;" s file: +__Pyx_CodeObjectCacheEntry euclidemu2.cpp /^} __Pyx_CodeObjectCacheEntry;$/;" t typeref:struct:__anon7 file: +__Pyx_CppExn2PyErr euclidemu2.cpp /^static void __Pyx_CppExn2PyErr() {$/;" f file: +__Pyx_CreateCodeObjectForTraceback euclidemu2.cpp /^static PyCodeObject* __Pyx_CreateCodeObjectForTraceback($/;" f file: +__Pyx_DECREF euclidemu2.cpp 942;" d file: +__Pyx_DECREF euclidemu2.cpp 954;" d file: +__Pyx_DECREF_SET euclidemu2.cpp 966;" d file: +__Pyx_DefaultClassType euclidemu2.cpp 358;" d file: +__Pyx_DefaultClassType euclidemu2.cpp 368;" d file: +__Pyx_ErrFetch euclidemu2.cpp 1022;" d file: +__Pyx_ErrFetch euclidemu2.cpp 1038;" d file: +__Pyx_ErrFetchInState euclidemu2.cpp /^static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) {$/;" f file: +__Pyx_ErrFetchInState euclidemu2.cpp 1036;" d file: +__Pyx_ErrFetchWithState euclidemu2.cpp 1020;" d file: +__Pyx_ErrFetchWithState euclidemu2.cpp 1034;" d file: +__Pyx_ErrRestore euclidemu2.cpp 1021;" d file: +__Pyx_ErrRestore euclidemu2.cpp 1037;" d file: +__Pyx_ErrRestoreInState euclidemu2.cpp /^static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) {$/;" f file: +__Pyx_ErrRestoreInState euclidemu2.cpp 1035;" d file: +__Pyx_ErrRestoreWithState euclidemu2.cpp 1019;" d file: +__Pyx_ErrRestoreWithState euclidemu2.cpp 1033;" d file: +__Pyx_ExceptionReset euclidemu2.cpp 1259;" d file: +__Pyx_ExceptionReset euclidemu2.cpp 1263;" d file: +__Pyx_ExceptionSave euclidemu2.cpp 1257;" d file: +__Pyx_ExceptionSave euclidemu2.cpp 1262;" d file: +__Pyx_FakeReference euclidemu2.cpp /^ __Pyx_FakeReference() : ptr(NULL) { }$/;" f class:__Pyx_FakeReference +__Pyx_FakeReference euclidemu2.cpp /^ __Pyx_FakeReference(const T& ref) : ptr(const_cast(&ref)) { }$/;" f class:__Pyx_FakeReference +__Pyx_FakeReference euclidemu2.cpp /^class __Pyx_FakeReference {$/;" c file: +__Pyx_GIVEREF euclidemu2.cpp 944;" d file: +__Pyx_GIVEREF euclidemu2.cpp 956;" d file: +__Pyx_GOTREF euclidemu2.cpp 943;" d file: +__Pyx_GOTREF euclidemu2.cpp 955;" d file: +__Pyx_GetBuiltinName euclidemu2.cpp /^static PyObject *__Pyx_GetBuiltinName(PyObject *name) {$/;" f file: +__Pyx_GetItemInt euclidemu2.cpp 1054;" d file: +__Pyx_GetItemInt_Fast euclidemu2.cpp /^static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, int is_list,$/;" f file: +__Pyx_GetItemInt_Generic euclidemu2.cpp /^static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j) {$/;" f file: +__Pyx_GetItemInt_List euclidemu2.cpp 1059;" d file: +__Pyx_GetItemInt_List_Fast euclidemu2.cpp /^static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i,$/;" f file: +__Pyx_GetItemInt_Tuple euclidemu2.cpp 1065;" d file: +__Pyx_GetItemInt_Tuple_Fast euclidemu2.cpp /^static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i,$/;" f file: +__Pyx_GetModuleGlobalName euclidemu2.cpp 1152;" d file: +__Pyx_GetModuleGlobalName euclidemu2.cpp 1166;" d file: +__Pyx_GetModuleGlobalNameUncached euclidemu2.cpp 1159;" d file: +__Pyx_GetModuleGlobalNameUncached euclidemu2.cpp 1167;" d file: +__Pyx_INCREF euclidemu2.cpp 941;" d file: +__Pyx_INCREF euclidemu2.cpp 953;" d file: +__Pyx_Import euclidemu2.cpp /^ static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) {$/;" f file: +__Pyx_ImportFrom euclidemu2.cpp /^ static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name) {$/;" f file: +__Pyx_InBases euclidemu2.cpp /^static int __Pyx_InBases(PyTypeObject *a, PyTypeObject *b) {$/;" f file: +__Pyx_InitCachedBuiltins euclidemu2.cpp /^static CYTHON_SMALL_CODE int __Pyx_InitCachedBuiltins(void) {$/;" f file: +__Pyx_InitCachedConstants euclidemu2.cpp /^static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) {$/;" f file: +__Pyx_InitGlobals euclidemu2.cpp /^static CYTHON_SMALL_CODE int __Pyx_InitGlobals(void) {$/;" f file: +__Pyx_InitStrings euclidemu2.cpp /^ static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) {$/;" f file: +__Pyx_IsSubtype euclidemu2.cpp /^static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b) {$/;" f file: +__Pyx_IterFinish euclidemu2.cpp /^ static CYTHON_INLINE int __Pyx_IterFinish(void) {$/;" f file: +__Pyx_IternextUnpackEndCheck euclidemu2.cpp /^ static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected) {$/;" f file: +__Pyx_ListComp_Append euclidemu2.cpp /^static CYTHON_INLINE int __Pyx_ListComp_Append(PyObject* list, PyObject* x) {$/;" f file: +__Pyx_ListComp_Append euclidemu2.cpp 1230;" d file: +__Pyx_MODULE_NAME euclidemu2.cpp 1421;" d file: +__Pyx_NewRef euclidemu2.cpp 752;" d file: +__Pyx_Owned_Py_None euclidemu2.cpp 753;" d file: +__Pyx_ParseOptionalKeywords euclidemu2.cpp /^static int __Pyx_ParseOptionalKeywords($/;" f file: +__Pyx_PyAsyncMethodsStruct euclidemu2.cpp /^ } __Pyx_PyAsyncMethodsStruct;$/;" t typeref:struct:__anon4 file: +__Pyx_PyAsyncMethodsStruct euclidemu2.cpp 605;" d file: +__Pyx_PyBaseString_Check euclidemu2.cpp 544;" d file: +__Pyx_PyBaseString_Check euclidemu2.cpp 547;" d file: +__Pyx_PyBaseString_CheckExact euclidemu2.cpp 545;" d file: +__Pyx_PyBaseString_CheckExact euclidemu2.cpp 548;" d file: +__Pyx_PyBool_FromLong euclidemu2.cpp /^static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b) {$/;" f file: +__Pyx_PyByteArray_FromCString euclidemu2.cpp 741;" d file: +__Pyx_PyByteArray_FromString euclidemu2.cpp 716;" d file: +__Pyx_PyByteArray_FromStringAndSize euclidemu2.cpp 717;" d file: +__Pyx_PyBytes_AsSString euclidemu2.cpp 732;" d file: +__Pyx_PyBytes_AsString euclidemu2.cpp 731;" d file: +__Pyx_PyBytes_AsUString euclidemu2.cpp 733;" d file: +__Pyx_PyBytes_AsWritableSString euclidemu2.cpp 729;" d file: +__Pyx_PyBytes_AsWritableString euclidemu2.cpp 728;" d file: +__Pyx_PyBytes_AsWritableUString euclidemu2.cpp 730;" d file: +__Pyx_PyBytes_FromCString euclidemu2.cpp 740;" d file: +__Pyx_PyBytes_FromString euclidemu2.cpp 718;" d file: +__Pyx_PyBytes_FromStringAndSize euclidemu2.cpp 719;" d file: +__Pyx_PyCFunctionFast euclidemu2.cpp /^ typedef PyObject *(*__Pyx_PyCFunctionFast) (PyObject *self, PyObject *const *args, Py_ssize_t nargs);$/;" t file: +__Pyx_PyCFunctionFast euclidemu2.cpp 393;" d file: +__Pyx_PyCFunctionFastWithKeywords euclidemu2.cpp /^ typedef PyObject *(*__Pyx_PyCFunctionFastWithKeywords) (PyObject *self, PyObject *const *args,$/;" t file: +__Pyx_PyCFunctionFastWithKeywords euclidemu2.cpp 394;" d file: +__Pyx_PyCFunction_FastCall euclidemu2.cpp /^static CYTHON_INLINE PyObject * __Pyx_PyCFunction_FastCall(PyObject *func_obj, PyObject **args, Py_ssize_t nargs) {$/;" f file: +__Pyx_PyCFunction_FastCall euclidemu2.cpp 1090;" d file: +__Pyx_PyCode_HasFreeVars euclidemu2.cpp 413;" d file: +__Pyx_PyCode_HasFreeVars euclidemu2.cpp 416;" d file: +__Pyx_PyCode_New euclidemu2.cpp 356;" d file: +__Pyx_PyCode_New euclidemu2.cpp 362;" d file: +__Pyx_PyCode_New euclidemu2.cpp 365;" d file: +__Pyx_PyDict_GetItem euclidemu2.cpp /^static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key) {$/;" f file: +__Pyx_PyDict_GetItem euclidemu2.cpp 1082;" d file: +__Pyx_PyDict_GetItemStr euclidemu2.cpp 471;" d file: +__Pyx_PyDict_GetItemStr euclidemu2.cpp 473;" d file: +__Pyx_PyDict_NewPresized euclidemu2.cpp 459;" d file: +__Pyx_PyDict_NewPresized euclidemu2.cpp 461;" d file: +__Pyx_PyErr_Clear euclidemu2.cpp 1018;" d file: +__Pyx_PyErr_Clear euclidemu2.cpp 1031;" d file: +__Pyx_PyErr_ExceptionMatches euclidemu2.cpp 1268;" d file: +__Pyx_PyErr_ExceptionMatches euclidemu2.cpp 1271;" d file: +__Pyx_PyErr_ExceptionMatchesInState euclidemu2.cpp /^static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tstate, PyObject* err) {$/;" f file: +__Pyx_PyErr_ExceptionMatchesTuple euclidemu2.cpp /^static int __Pyx_PyErr_ExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) {$/;" f file: +__Pyx_PyErr_GetTopmostException euclidemu2.cpp /^__Pyx_PyErr_GetTopmostException(PyThreadState *tstate)$/;" f file: +__Pyx_PyErr_GivenExceptionMatches euclidemu2.cpp /^static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject* exc_type) {$/;" f file: +__Pyx_PyErr_GivenExceptionMatches euclidemu2.cpp 1388;" d file: +__Pyx_PyErr_GivenExceptionMatches2 euclidemu2.cpp /^static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *exc_type1, PyObject *exc_type2) {$/;" f file: +__Pyx_PyErr_GivenExceptionMatches2 euclidemu2.cpp 1389;" d file: +__Pyx_PyErr_GivenExceptionMatchesTuple euclidemu2.cpp /^static int __Pyx_PyErr_GivenExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) {$/;" f file: +__Pyx_PyErr_Occurred euclidemu2.cpp 1009;" d file: +__Pyx_PyErr_Occurred euclidemu2.cpp 1013;" d file: +__Pyx_PyErr_SetNone euclidemu2.cpp 1026;" d file: +__Pyx_PyErr_SetNone euclidemu2.cpp 1028;" d file: +__Pyx_PyErr_SetNone euclidemu2.cpp 1032;" d file: +__Pyx_PyException_Check euclidemu2.cpp 1391;" d file: +__Pyx_PyFastCFunction_Check euclidemu2.cpp 397;" d file: +__Pyx_PyFastCFunction_Check euclidemu2.cpp 400;" d file: +__Pyx_PyFloat_TrueDivideObjC euclidemu2.cpp /^static PyObject* __Pyx_PyFloat_TrueDivideObjC(PyObject *op1, PyObject *op2, double floatval, int inplace, int zerodivision_check) {$/;" f file: +__Pyx_PyFloat_TrueDivideObjC euclidemu2.cpp 1188;" d file: +__Pyx_PyFrame_GetLocalsplus euclidemu2.cpp 1112;" d file: +__Pyx_PyFrame_SetLineNumber euclidemu2.cpp 414;" d file: +__Pyx_PyFrame_SetLineNumber euclidemu2.cpp 417;" d file: +__Pyx_PyFunction_FastCall euclidemu2.cpp 1095;" d file: +__Pyx_PyFunction_FastCallDict euclidemu2.cpp /^static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, Py_ssize_t nargs, PyObject *kwargs) {$/;" f file: +__Pyx_PyFunction_FastCallDict euclidemu2.cpp 1100;" d file: +__Pyx_PyFunction_FastCallNoKw euclidemu2.cpp /^static PyObject* __Pyx_PyFunction_FastCallNoKw(PyCodeObject *co, PyObject **args, Py_ssize_t na,$/;" f file: +__Pyx_PyIndex_AsSsize_t euclidemu2.cpp /^static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) {$/;" f file: +__Pyx_PyInt_AsHash_t euclidemu2.cpp 593;" d file: +__Pyx_PyInt_AsHash_t euclidemu2.cpp 596;" d file: +__Pyx_PyInt_As_int euclidemu2.cpp /^ static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) {$/;" f file: +__Pyx_PyInt_As_long euclidemu2.cpp /^ static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) {$/;" f file: +__Pyx_PyInt_As_size_t euclidemu2.cpp /^ static CYTHON_INLINE size_t __Pyx_PyInt_As_size_t(PyObject *x) {$/;" f file: +__Pyx_PyInt_FromHash_t euclidemu2.cpp 592;" d file: +__Pyx_PyInt_FromHash_t euclidemu2.cpp 595;" d file: +__Pyx_PyInt_FromSize_t euclidemu2.cpp /^static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) {$/;" f file: +__Pyx_PyInt_From_long euclidemu2.cpp /^ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) {$/;" f file: +__Pyx_PyMODINIT_FUNC euclidemu2.cpp 10216;" d file: +__Pyx_PyMODINIT_FUNC euclidemu2.cpp 10219;" d file: +__Pyx_PyMODINIT_FUNC euclidemu2.cpp 10221;" d file: +__Pyx_PyMODINIT_FUNC euclidemu2.cpp 10225;" d file: +__Pyx_PyMODINIT_FUNC euclidemu2.cpp 10227;" d file: +__Pyx_PyMethod_New euclidemu2.cpp 599;" d file: +__Pyx_PyMethod_New euclidemu2.cpp 601;" d file: +__Pyx_PyNumber_Divide euclidemu2.cpp 464;" d file: +__Pyx_PyNumber_Divide euclidemu2.cpp 467;" d file: +__Pyx_PyNumber_Float euclidemu2.cpp 773;" d file: +__Pyx_PyNumber_InPlaceDivide euclidemu2.cpp 465;" d file: +__Pyx_PyNumber_InPlaceDivide euclidemu2.cpp 468;" d file: +__Pyx_PyNumber_Int euclidemu2.cpp 769;" d file: +__Pyx_PyNumber_Int euclidemu2.cpp 771;" d file: +__Pyx_PyNumber_IntOrLong euclidemu2.cpp /^static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x) {$/;" f file: +__Pyx_PyNumber_IntOrLongWrongResultType euclidemu2.cpp /^static PyObject* __Pyx_PyNumber_IntOrLongWrongResultType(PyObject* result, const char* type_name) {$/;" f file: +__Pyx_PyObject_AsSString euclidemu2.cpp 737;" d file: +__Pyx_PyObject_AsString euclidemu2.cpp /^static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject* o) {$/;" f file: +__Pyx_PyObject_AsStringAndSize euclidemu2.cpp /^static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject* o, Py_ssize_t *length) {$/;" f file: +__Pyx_PyObject_AsUString euclidemu2.cpp 738;" d file: +__Pyx_PyObject_AsWritableSString euclidemu2.cpp 735;" d file: +__Pyx_PyObject_AsWritableString euclidemu2.cpp 734;" d file: +__Pyx_PyObject_AsWritableUString euclidemu2.cpp 736;" d file: +__Pyx_PyObject_Call euclidemu2.cpp /^static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw) {$/;" f file: +__Pyx_PyObject_Call euclidemu2.cpp 1002;" d file: +__Pyx_PyObject_Call2Args euclidemu2.cpp /^ static CYTHON_UNUSED PyObject* __Pyx_PyObject_Call2Args(PyObject* function, PyObject* arg1, PyObject* arg2) {$/;" f file: +__Pyx_PyObject_CallMethO euclidemu2.cpp /^static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg) {$/;" f file: +__Pyx_PyObject_CallNoArg euclidemu2.cpp /^static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) {$/;" f file: +__Pyx_PyObject_CallNoArg euclidemu2.cpp 1175;" d file: +__Pyx_PyObject_CallOneArg euclidemu2.cpp /^static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) {$/;" f file: +__Pyx_PyObject_Dict_GetItem euclidemu2.cpp 1078;" d file: +__Pyx_PyObject_Dict_GetItem euclidemu2.cpp 1083;" d file: +__Pyx_PyObject_FromCString euclidemu2.cpp 739;" d file: +__Pyx_PyObject_FromString euclidemu2.cpp 681;" d file: +__Pyx_PyObject_FromStringAndSize euclidemu2.cpp 682;" d file: +__Pyx_PyObject_GenericGetAttr euclidemu2.cpp /^static PyObject* __Pyx_PyObject_GenericGetAttr(PyObject* obj, PyObject* attr_name) {$/;" f file: +__Pyx_PyObject_GenericGetAttr euclidemu2.cpp 1285;" d file: +__Pyx_PyObject_GenericGetAttrNoDict euclidemu2.cpp /^static CYTHON_INLINE PyObject* __Pyx_PyObject_GenericGetAttrNoDict(PyObject* obj, PyObject* attr_name) {$/;" f file: +__Pyx_PyObject_GenericGetAttrNoDict euclidemu2.cpp 1278;" d file: +__Pyx_PyObject_GetAttrStr euclidemu2.cpp /^static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name) {$/;" f file: +__Pyx_PyObject_GetAttrStr euclidemu2.cpp 977;" d file: +__Pyx_PyObject_GetAttrStrNoError euclidemu2.cpp /^static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStrNoError(PyObject* obj, PyObject* attr_name) {$/;" f file: +__Pyx_PyObject_GetAttrStr_ClearAttributeError euclidemu2.cpp /^ static void __Pyx_PyObject_GetAttrStr_ClearAttributeError(void) {$/;" f file: +__Pyx_PyObject_GetIndex euclidemu2.cpp /^static PyObject *__Pyx_PyObject_GetIndex(PyObject *obj, PyObject* index) {$/;" f file: +__Pyx_PyObject_GetItem euclidemu2.cpp /^static PyObject *__Pyx_PyObject_GetItem(PyObject *obj, PyObject* key) {$/;" f file: +__Pyx_PyObject_GetItem euclidemu2.cpp 1237;" d file: +__Pyx_PyObject_GetSlice euclidemu2.cpp /^ static CYTHON_INLINE PyObject* __Pyx_PyObject_GetSlice(PyObject* obj,$/;" f file: +__Pyx_PyObject_IsTrue euclidemu2.cpp /^static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) {$/;" f file: +__Pyx_PyObject_IsTrueAndDecref euclidemu2.cpp /^static CYTHON_INLINE int __Pyx_PyObject_IsTrueAndDecref(PyObject* x) {$/;" f file: +__Pyx_PySequence_ContainsTF euclidemu2.cpp /^static CYTHON_INLINE int __Pyx_PySequence_ContainsTF(PyObject* item, PyObject* seq, int eq) {$/;" f file: +__Pyx_PySequence_SIZE euclidemu2.cpp 561;" d file: +__Pyx_PySequence_SIZE euclidemu2.cpp 563;" d file: +__Pyx_PySequence_Tuple euclidemu2.cpp 758;" d file: +__Pyx_PyStr_FromCString euclidemu2.cpp 742;" d file: +__Pyx_PyStr_FromString euclidemu2.cpp 722;" d file: +__Pyx_PyStr_FromString euclidemu2.cpp 725;" d file: +__Pyx_PyStr_FromStringAndSize euclidemu2.cpp 723;" d file: +__Pyx_PyStr_FromStringAndSize euclidemu2.cpp 726;" d file: +__Pyx_PyString_Format euclidemu2.cpp 526;" d file: +__Pyx_PyString_Format euclidemu2.cpp 528;" d file: +__Pyx_PyString_FormatSafe euclidemu2.cpp 523;" d file: +__Pyx_PyThreadState_Current euclidemu2.cpp 420;" d file: +__Pyx_PyThreadState_Current euclidemu2.cpp 422;" d file: +__Pyx_PyThreadState_Current euclidemu2.cpp 424;" d file: +__Pyx_PyThreadState_Current euclidemu2.cpp 426;" d file: +__Pyx_PyThreadState_assign euclidemu2.cpp 1008;" d file: +__Pyx_PyThreadState_assign euclidemu2.cpp 1012;" d file: +__Pyx_PyThreadState_declare euclidemu2.cpp 1007;" d file: +__Pyx_PyThreadState_declare euclidemu2.cpp 1011;" d file: +__Pyx_PyType_AsAsync euclidemu2.cpp 606;" d file: +__Pyx_PyType_AsAsync euclidemu2.cpp 608;" d file: +__Pyx_PyType_AsAsync euclidemu2.cpp 611;" d file: +__Pyx_PyUnicode_AsStringAndSize euclidemu2.cpp /^static CYTHON_INLINE const char* __Pyx_PyUnicode_AsStringAndSize(PyObject* o, Py_ssize_t *length) {$/;" f file: +__Pyx_PyUnicode_AsStringAndSize euclidemu2.cpp /^static const char* __Pyx_PyUnicode_AsStringAndSize(PyObject* o, Py_ssize_t *length) {$/;" f file: +__Pyx_PyUnicode_AsUnicode euclidemu2.cpp 751;" d file: +__Pyx_PyUnicode_Concat euclidemu2.cpp 507;" d file: +__Pyx_PyUnicode_Concat euclidemu2.cpp 510;" d file: +__Pyx_PyUnicode_ConcatSafe euclidemu2.cpp 508;" d file: +__Pyx_PyUnicode_ConcatSafe euclidemu2.cpp 511;" d file: +__Pyx_PyUnicode_DATA euclidemu2.cpp 483;" d file: +__Pyx_PyUnicode_DATA euclidemu2.cpp 501;" d file: +__Pyx_PyUnicode_FormatSafe euclidemu2.cpp 524;" d file: +__Pyx_PyUnicode_FromCString euclidemu2.cpp 743;" d file: +__Pyx_PyUnicode_FromString euclidemu2.cpp /^static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char* c_str) {$/;" f file: +__Pyx_PyUnicode_FromStringAndSize euclidemu2.cpp 821;" d file: +__Pyx_PyUnicode_FromStringAndSize euclidemu2.cpp 823;" d file: +__Pyx_PyUnicode_FromUnicode euclidemu2.cpp 749;" d file: +__Pyx_PyUnicode_FromUnicodeAndLength euclidemu2.cpp 750;" d file: +__Pyx_PyUnicode_GET_LENGTH euclidemu2.cpp 479;" d file: +__Pyx_PyUnicode_GET_LENGTH euclidemu2.cpp 497;" d file: +__Pyx_PyUnicode_IS_TRUE euclidemu2.cpp 487;" d file: +__Pyx_PyUnicode_IS_TRUE euclidemu2.cpp 489;" d file: +__Pyx_PyUnicode_IS_TRUE euclidemu2.cpp 504;" d file: +__Pyx_PyUnicode_KIND euclidemu2.cpp 482;" d file: +__Pyx_PyUnicode_KIND euclidemu2.cpp 500;" d file: +__Pyx_PyUnicode_MAX_CHAR_VALUE euclidemu2.cpp 481;" d file: +__Pyx_PyUnicode_MAX_CHAR_VALUE euclidemu2.cpp 499;" d file: +__Pyx_PyUnicode_READ euclidemu2.cpp 484;" d file: +__Pyx_PyUnicode_READ euclidemu2.cpp 502;" d file: +__Pyx_PyUnicode_READY euclidemu2.cpp 477;" d file: +__Pyx_PyUnicode_READY euclidemu2.cpp 496;" d file: +__Pyx_PyUnicode_READ_CHAR euclidemu2.cpp 480;" d file: +__Pyx_PyUnicode_READ_CHAR euclidemu2.cpp 498;" d file: +__Pyx_PyUnicode_WRITE euclidemu2.cpp 485;" d file: +__Pyx_PyUnicode_WRITE euclidemu2.cpp 503;" d file: +__Pyx_Py_UNICODE_strlen euclidemu2.cpp /^static CYTHON_INLINE size_t __Pyx_Py_UNICODE_strlen(const Py_UNICODE *u) {$/;" f file: +__Pyx_Raise euclidemu2.cpp /^static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause) {$/;" f file: +__Pyx_Raise euclidemu2.cpp /^static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb,$/;" f file: +__Pyx_RaiseArgtupleInvalid euclidemu2.cpp /^static void __Pyx_RaiseArgtupleInvalid($/;" f file: +__Pyx_RaiseDoubleKeywordsError euclidemu2.cpp /^static void __Pyx_RaiseDoubleKeywordsError($/;" f file: +__Pyx_RaiseGenericGetAttributeError euclidemu2.cpp /^static PyObject *__Pyx_RaiseGenericGetAttributeError(PyTypeObject *tp, PyObject *attr_name) {$/;" f file: +__Pyx_RaiseNeedMoreValuesError euclidemu2.cpp /^ static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index) {$/;" f file: +__Pyx_RaiseTooManyValuesError euclidemu2.cpp /^ static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected) {$/;" f file: +__Pyx_RaiseUnboundLocalError euclidemu2.cpp /^ static CYTHON_INLINE void __Pyx_RaiseUnboundLocalError(const char *varname) {$/;" f file: +__Pyx_RefNanny euclidemu2.cpp /^ static __Pyx_RefNannyAPIStruct *__Pyx_RefNanny = NULL;$/;" v file: +__Pyx_RefNannyAPIStruct euclidemu2.cpp /^ } __Pyx_RefNannyAPIStruct;$/;" t typeref:struct:__anon6 file: +__Pyx_RefNannyDeclarations euclidemu2.cpp 925;" d file: +__Pyx_RefNannyDeclarations euclidemu2.cpp 950;" d file: +__Pyx_RefNannyFinishContext euclidemu2.cpp 939;" d file: +__Pyx_RefNannyFinishContext euclidemu2.cpp 952;" d file: +__Pyx_RefNannyImportAPI euclidemu2.cpp /^static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) {$/;" f file: +__Pyx_RefNannySetupContext euclidemu2.cpp 927;" d file: +__Pyx_RefNannySetupContext euclidemu2.cpp 936;" d file: +__Pyx_RefNannySetupContext euclidemu2.cpp 951;" d file: +__Pyx_SET_REFCNT euclidemu2.cpp 554;" d file: +__Pyx_SET_REFCNT euclidemu2.cpp 557;" d file: +__Pyx_SET_SIZE euclidemu2.cpp 555;" d file: +__Pyx_SET_SIZE euclidemu2.cpp 558;" d file: +__Pyx_SetItemInt euclidemu2.cpp 1241;" d file: +__Pyx_SetItemInt_Fast euclidemu2.cpp /^static CYTHON_INLINE int __Pyx_SetItemInt_Fast(PyObject *o, Py_ssize_t i, PyObject *v, int is_list,$/;" f file: +__Pyx_SetItemInt_Generic euclidemu2.cpp /^ static int __Pyx_SetItemInt_Generic(PyObject *o, PyObject *j, PyObject *v) {$/;" f file: +__Pyx_StringTabEntry euclidemu2.cpp /^ const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry;$/;" t typeref:struct:__anon5 file: +__Pyx_TypeCheck euclidemu2.cpp 1382;" d file: +__Pyx_TypeCheck euclidemu2.cpp 1387;" d file: +__Pyx_XCLEAR euclidemu2.cpp 971;" d file: +__Pyx_XDECREF euclidemu2.cpp 946;" d file: +__Pyx_XDECREF euclidemu2.cpp 958;" d file: +__Pyx_XDECREF_SET euclidemu2.cpp 962;" d file: +__Pyx_XGIVEREF euclidemu2.cpp 948;" d file: +__Pyx_XGIVEREF euclidemu2.cpp 960;" d file: +__Pyx_XGOTREF euclidemu2.cpp 947;" d file: +__Pyx_XGOTREF euclidemu2.cpp 959;" d file: +__Pyx_XINCREF euclidemu2.cpp 945;" d file: +__Pyx_XINCREF euclidemu2.cpp 957;" d file: +__Pyx__ArgTypeTest euclidemu2.cpp /^static int __Pyx__ArgTypeTest(PyObject *obj, PyTypeObject *type, const char *name, int exact)$/;" f file: +__Pyx__ExceptionReset euclidemu2.cpp /^static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) {$/;" f file: +__Pyx__ExceptionSave euclidemu2.cpp /^static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) {$/;" f file: +__Pyx__GetModuleGlobalName euclidemu2.cpp /^static PyObject *__Pyx__GetModuleGlobalName(PyObject *name, PY_UINT64_T *dict_version, PyObject **dict_cached_value)$/;" f file: +__Pyx__PyObject_CallOneArg euclidemu2.cpp /^static PyObject* __Pyx__PyObject_CallOneArg(PyObject *func, PyObject *arg) {$/;" f file: +__Pyx_call_destructor euclidemu2.cpp /^void __Pyx_call_destructor(T& x) {$/;" f +__Pyx_carray_from_py_double euclidemu2.cpp /^static int __Pyx_carray_from_py_double(PyObject *__pyx_v_o, double *__pyx_v_v, Py_ssize_t __pyx_v_length) {$/;" f file: +__Pyx_carray_from_py_double___5b_0x265_5d_ euclidemu2.cpp /^static int __Pyx_carray_from_py_double___5b_0x265_5d_(PyObject *__pyx_v_o, double (*__pyx_v_v)[0x265], Py_ssize_t __pyx_v_length) {$/;" f file: +__Pyx_carray_to_py_double euclidemu2.cpp /^static CYTHON_INLINE PyObject *__Pyx_carray_to_py_double(double *__pyx_v_v, Py_ssize_t __pyx_v_length) {$/;" f file: +__Pyx_carray_to_py_double___5b_0x265_5d_ euclidemu2.cpp /^static CYTHON_INLINE PyObject *__Pyx_carray_to_py_double___5b_0x265_5d_(double (*__pyx_v_v)[0x265], Py_ssize_t __pyx_v_length) {$/;" f file: +__Pyx_carray_to_tuple_double euclidemu2.cpp /^static CYTHON_INLINE PyObject *__Pyx_carray_to_tuple_double(double *__pyx_v_v, Py_ssize_t __pyx_v_length) {$/;" f file: +__Pyx_carray_to_tuple_double___5b_0x265_5d_ euclidemu2.cpp /^static CYTHON_INLINE PyObject *__Pyx_carray_to_tuple_double___5b_0x265_5d_(double (*__pyx_v_v)[0x265], Py_ssize_t __pyx_v_length) {$/;" f file: +__Pyx_check_binary_version euclidemu2.cpp /^ static int __Pyx_check_binary_version(void) {$/;" f file: +__Pyx_fits_Py_ssize_t euclidemu2.cpp 685;" d file: +__Pyx_get_object_dict_version euclidemu2.cpp /^static CYTHON_INLINE PY_UINT64_T __Pyx_get_object_dict_version(PyObject *obj) {$/;" f file: +__Pyx_get_tp_dict_version euclidemu2.cpp /^static CYTHON_INLINE PY_UINT64_T __Pyx_get_tp_dict_version(PyObject *obj) {$/;" f file: +__Pyx_init_sys_getdefaultencoding_params euclidemu2.cpp /^static int __Pyx_init_sys_getdefaultencoding_params(void) {$/;" f file: +__Pyx_inner_PyErr_GivenExceptionMatches2 euclidemu2.cpp /^static CYTHON_INLINE int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject *exc_type2) {$/;" f file: +__Pyx_inner_PyErr_GivenExceptionMatches2 euclidemu2.cpp /^static int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject* exc_type2) {$/;" f file: +__Pyx_is_valid_index euclidemu2.cpp /^static CYTHON_INLINE int __Pyx_is_valid_index(Py_ssize_t i, Py_ssize_t limit) {$/;" f file: +__Pyx_long_cast euclidemu2.cpp 684;" d file: +__Pyx_modinit_function_export_code euclidemu2.cpp /^static int __Pyx_modinit_function_export_code(void) {$/;" f file: +__Pyx_modinit_function_import_code euclidemu2.cpp /^static int __Pyx_modinit_function_import_code(void) {$/;" f file: +__Pyx_modinit_global_init_code euclidemu2.cpp /^static int __Pyx_modinit_global_init_code(void) {$/;" f file: +__Pyx_modinit_type_import_code euclidemu2.cpp /^static int __Pyx_modinit_type_import_code(void) {$/;" f file: +__Pyx_modinit_type_init_code euclidemu2.cpp /^static int __Pyx_modinit_type_init_code(void) {$/;" f file: +__Pyx_modinit_variable_export_code euclidemu2.cpp /^static int __Pyx_modinit_variable_export_code(void) {$/;" f file: +__Pyx_modinit_variable_import_code euclidemu2.cpp /^static int __Pyx_modinit_variable_import_code(void) {$/;" f file: +__Pyx_object_dict_version_matches euclidemu2.cpp /^static CYTHON_INLINE int __Pyx_object_dict_version_matches(PyObject* obj, PY_UINT64_T tp_dict_version, PY_UINT64_T obj_dict_version) {$/;" f file: +__Pyx_pretend_to_initialize euclidemu2.cpp /^static CYTHON_INLINE void __Pyx_pretend_to_initialize(void* ptr) { (void)ptr; }$/;" f file: +__Pyx_setup_reduce euclidemu2.cpp /^static int __Pyx_setup_reduce(PyObject* type_obj) {$/;" f file: +__Pyx_setup_reduce_is_named euclidemu2.cpp /^ static int __Pyx_setup_reduce_is_named(PyObject* meth, PyObject* name) {$/;" f file: +__Pyx_sst_abs euclidemu2.cpp 700;" d file: +__Pyx_sst_abs euclidemu2.cpp 702;" d file: +__Pyx_sst_abs euclidemu2.cpp 704;" d file: +__Pyx_sst_abs euclidemu2.cpp 706;" d file: +__Pyx_sst_abs euclidemu2.cpp 708;" d file: +__Pyx_sst_abs euclidemu2.cpp 710;" d file: +__Pyx_sst_abs euclidemu2.cpp 712;" d file: +__Pyx_sys_getdefaultencoding_not_ascii euclidemu2.cpp /^static int __Pyx_sys_getdefaultencoding_not_ascii;$/;" v file: +__Pyx_truncl euclidemu2.cpp 635;" d file: +__Pyx_truncl euclidemu2.cpp 637;" d file: +__Pyx_uchar_cast euclidemu2.cpp 683;" d file: +__Pyx_void_to_None euclidemu2.cpp 282;" d file: +__cdecl euclidemu2.cpp 56;" d file: +__cinit__ euclidemu2.pyx /^ def __cinit__(self):$/;" m class:PyEuclidEmulator file: +__cinit__ euclidemu2.pyx /^ def __cinit__(self, double Omega_b , double Omega_m , double Sum_m_nu , double n_s , double h , double w_0 , double w_a , double A_s ):$/;" m class:PyCosmology file: +__fastcall euclidemu2.cpp 59;" d file: +__has_attribute euclidemu2.cpp 239;" d file: +__has_cpp_attribute euclidemu2.cpp 242;" d file: +__pyx_PyFloat_AsDouble euclidemu2.cpp 763;" d file: +__pyx_PyFloat_AsDouble euclidemu2.cpp 765;" d file: +__pyx_PyFloat_AsFloat euclidemu2.cpp 767;" d file: +__pyx_b euclidemu2.cpp /^static PyObject *__pyx_b;$/;" v file: +__pyx_bisect_code_objects euclidemu2.cpp /^ static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) {$/;" f file: +__pyx_builtin_IndexError euclidemu2.cpp /^static PyObject *__pyx_builtin_IndexError;$/;" v file: +__pyx_builtin_OverflowError euclidemu2.cpp /^static PyObject *__pyx_builtin_OverflowError;$/;" v file: +__pyx_builtin_TypeError euclidemu2.cpp /^static PyObject *__pyx_builtin_TypeError;$/;" v file: +__pyx_builtin_ValueError euclidemu2.cpp /^static PyObject *__pyx_builtin_ValueError;$/;" v file: +__pyx_builtin_any euclidemu2.cpp /^static PyObject *__pyx_builtin_any;$/;" v file: +__pyx_builtin_enumerate euclidemu2.cpp /^static PyObject *__pyx_builtin_enumerate;$/;" v file: +__pyx_builtin_max euclidemu2.cpp /^static PyObject *__pyx_builtin_max;$/;" v file: +__pyx_builtin_min euclidemu2.cpp /^static PyObject *__pyx_builtin_min;$/;" v file: +__pyx_builtin_print euclidemu2.cpp /^static PyObject *__pyx_builtin_print;$/;" v file: +__pyx_builtin_range euclidemu2.cpp /^static PyObject *__pyx_builtin_range;$/;" v file: +__pyx_builtin_zip euclidemu2.cpp /^static PyObject *__pyx_builtin_zip;$/;" v file: +__pyx_cfilenm euclidemu2.cpp /^static const char * __pyx_cfilenm= __FILE__;$/;" v file: +__pyx_check_sizeof_voidp euclidemu2.cpp /^ enum { __pyx_check_sizeof_voidp = 1 \/ (int)(SIZEOF_VOID_P == sizeof(void*)) };$/;" e enum:__anon3 file: +__pyx_clineno euclidemu2.cpp /^static int __pyx_clineno = 0;$/;" v file: +__pyx_code_cache euclidemu2.cpp /^static struct __Pyx_CodeObjectCache __pyx_code_cache = {0,0,NULL};$/;" v typeref:struct:__Pyx_CodeObjectCache file: +__pyx_codeobj__15 euclidemu2.cpp /^static PyObject *__pyx_codeobj__15;$/;" v file: +__pyx_codeobj__17 euclidemu2.cpp /^static PyObject *__pyx_codeobj__17;$/;" v file: +__pyx_codeobj__19 euclidemu2.cpp /^static PyObject *__pyx_codeobj__19;$/;" v file: +__pyx_convert_string_from_py_std__in_string euclidemu2.cpp /^static std::string __pyx_convert_string_from_py_std__in_string(PyObject *__pyx_v_o) {$/;" f file: +__pyx_convert_vector_from_py_double euclidemu2.cpp /^static std::vector __pyx_convert_vector_from_py_double(PyObject *__pyx_v_o) {$/;" f file: +__pyx_cython_runtime euclidemu2.cpp /^static PyObject *__pyx_cython_runtime = NULL;$/;" v file: +__pyx_d euclidemu2.cpp /^static PyObject *__pyx_d;$/;" v file: +__pyx_doc_10euclidemu2_11PyCosmology_2__init__ euclidemu2.cpp /^static char __pyx_doc_10euclidemu2_11PyCosmology_2__init__[] = "Cython signature: void Cosmology(double Omega_b, double Omega_m, double Sum_m_nu, double n_s, double h, double w_0, double w_a, double A_s)";$/;" v file: +__pyx_doc_10euclidemu2_2convert_to_emu euclidemu2.cpp /^static char __pyx_doc_10euclidemu2_2convert_to_emu[] = "\\n Signature: convert_to_emu(class_pars_dict)\\n\\n Description: Converts the set of parameters accepted by several\\n other codes into a set of parameters accepted by\\n EuclidEmulator2. Also checks the params exist.\\n\\n Input type: python dictionary\\n\\n Output type: python dictionary\\n\\n Related: class_to_emu\\n ";$/;" v file: +__pyx_doc_10euclidemu2_check_param_range euclidemu2.cpp /^static char __pyx_doc_10euclidemu2_check_param_range[] = "\\n Checks if all parameters in the cosmology dictionary 'par_dict'\\n passed to this function obey the limits set by the emulator.\\n ";$/;" v file: +__pyx_empty_bytes euclidemu2.cpp /^static PyObject *__pyx_empty_bytes;$/;" v file: +__pyx_empty_tuple euclidemu2.cpp /^static PyObject *__pyx_empty_tuple;$/;" v file: +__pyx_empty_unicode euclidemu2.cpp /^static PyObject *__pyx_empty_unicode;$/;" v file: +__pyx_f euclidemu2.cpp /^static const char *__pyx_f[] = {$/;" v file: +__pyx_filename euclidemu2.cpp /^static const char *__pyx_filename;$/;" v file: +__pyx_find_code_object euclidemu2.cpp /^static PyCodeObject *__pyx_find_code_object(int code_line) {$/;" f file: +__pyx_float_0_0 euclidemu2.cpp /^static PyObject *__pyx_float_0_0;$/;" v file: +__pyx_float_0_00 euclidemu2.cpp /^static PyObject *__pyx_float_0_00;$/;" v file: +__pyx_float_0_04 euclidemu2.cpp /^static PyObject *__pyx_float_0_04;$/;" v file: +__pyx_float_0_06 euclidemu2.cpp /^static PyObject *__pyx_float_0_06;$/;" v file: +__pyx_float_0_15 euclidemu2.cpp /^static PyObject *__pyx_float_0_15;$/;" v file: +__pyx_float_0_24 euclidemu2.cpp /^static PyObject *__pyx_float_0_24;$/;" v file: +__pyx_float_0_40 euclidemu2.cpp /^static PyObject *__pyx_float_0_40;$/;" v file: +__pyx_float_0_5 euclidemu2.cpp /^static PyObject *__pyx_float_0_5;$/;" v file: +__pyx_float_0_61 euclidemu2.cpp /^static PyObject *__pyx_float_0_61;$/;" v file: +__pyx_float_0_73 euclidemu2.cpp /^static PyObject *__pyx_float_0_73;$/;" v file: +__pyx_float_0_92 euclidemu2.cpp /^static PyObject *__pyx_float_0_92;$/;" v file: +__pyx_float_100_ euclidemu2.cpp /^static PyObject *__pyx_float_100_;$/;" v file: +__pyx_float_10_0 euclidemu2.cpp /^static PyObject *__pyx_float_10_0;$/;" v file: +__pyx_float_1_00 euclidemu2.cpp /^static PyObject *__pyx_float_1_00;$/;" v file: +__pyx_float_1_0eneg_10 euclidemu2.cpp /^static PyObject *__pyx_float_1_0eneg_10;$/;" v file: +__pyx_float_1_7eneg_9 euclidemu2.cpp /^static PyObject *__pyx_float_1_7eneg_9;$/;" v file: +__pyx_float_2_5eneg_9 euclidemu2.cpp /^static PyObject *__pyx_float_2_5eneg_9;$/;" v file: +__pyx_float_neg_0_7 euclidemu2.cpp /^static PyObject *__pyx_float_neg_0_7;$/;" v file: +__pyx_float_neg_1_0 euclidemu2.cpp /^static PyObject *__pyx_float_neg_1_0;$/;" v file: +__pyx_float_neg_1_3 euclidemu2.cpp /^static PyObject *__pyx_float_neg_1_3;$/;" v file: +__pyx_getprop_10euclidemu2_11PyCosmology__free_inst euclidemu2.cpp /^static PyObject *__pyx_getprop_10euclidemu2_11PyCosmology__free_inst(PyObject *o, CYTHON_UNUSED void *x) {$/;" f file: +__pyx_getprop_10euclidemu2_16PyEuclidEmulator_Bvec euclidemu2.cpp /^static PyObject *__pyx_getprop_10euclidemu2_16PyEuclidEmulator_Bvec(PyObject *o, CYTHON_UNUSED void *x) {$/;" f file: +__pyx_getprop_10euclidemu2_16PyEuclidEmulator_kvec euclidemu2.cpp /^static PyObject *__pyx_getprop_10euclidemu2_16PyEuclidEmulator_kvec(PyObject *o, CYTHON_UNUSED void *x) {$/;" f file: +__pyx_getsets_10euclidemu2_PyCosmology euclidemu2.cpp /^static struct PyGetSetDef __pyx_getsets_10euclidemu2_PyCosmology[] = {$/;" v typeref:struct:PyGetSetDef file: +__pyx_getsets_10euclidemu2_PyEuclidEmulator euclidemu2.cpp /^static struct PyGetSetDef __pyx_getsets_10euclidemu2_PyEuclidEmulator[] = {$/;" v typeref:struct:PyGetSetDef file: +__pyx_insert_code_object euclidemu2.cpp /^static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) {$/;" f file: +__pyx_int_10 euclidemu2.cpp /^static PyObject *__pyx_int_10;$/;" v file: +__pyx_int_2 euclidemu2.cpp /^static PyObject *__pyx_int_2;$/;" v file: +__pyx_k_A_s euclidemu2.cpp /^static const char __pyx_k_A_s[] = "A_s";$/;" v file: +__pyx_k_A_s_not_in_range euclidemu2.cpp /^static const char __pyx_k_A_s_not_in_range[] = "A_s_not_in_range";$/;" v file: +__pyx_k_A_s_range euclidemu2.cpp /^static const char __pyx_k_A_s_range[] = "A_s_range";$/;" v file: +__pyx_k_As euclidemu2.cpp /^static const char __pyx_k_As[] = "As";$/;" v file: +__pyx_k_Bvec euclidemu2.cpp /^static const char __pyx_k_Bvec[] = "Bvec";$/;" v file: +__pyx_k_CubicSpline euclidemu2.cpp /^static const char __pyx_k_CubicSpline[] = "_CubicSpline";$/;" v file: +__pyx_k_CubicSpline_2 euclidemu2.cpp /^static const char __pyx_k_CubicSpline_2[] = "CubicSpline";$/;" v file: +__pyx_k_EuclidEmulator2_allows_only_reds euclidemu2.cpp /^static const char __pyx_k_EuclidEmulator2_allows_only_reds[] = "EuclidEmulator2 allows only redshifts z <= 10.0.\\n";$/;" v file: +__pyx_k_EuclidEmulator2_emulates_the_non euclidemu2.cpp /^static const char __pyx_k_EuclidEmulator2_emulates_the_non[] = "EuclidEmulator2 emulates the non-linear correction in \\nthe interval [8.73e-3 h\/Mpc, 9.41h\/Mpc]. You are \\nrequesting k modes beyond k_max = 9.41h\/Mpc. \\nHigher k modes constantly extrapolated.";$/;" v file: +__pyx_k_EuclidEmulator2_emulates_the_non_2 euclidemu2.cpp /^static const char __pyx_k_EuclidEmulator2_emulates_the_non_2[] = "EuclidEmulator2 emulates the non-linear correction in \\nthe interval [8.73e-3 h\/Mpc, 9.41h\/Mpc]. You are \\nrequesting k modes below k_min = 8.73e-3 h\/Mpc. \\nLower k modes constantly extrapolated.";$/;" v file: +__pyx_k_H0 euclidemu2.cpp /^static const char __pyx_k_H0[] = "H0";$/;" v file: +__pyx_k_IndexError euclidemu2.cpp /^static const char __pyx_k_IndexError[] = "IndexError";$/;" v file: +__pyx_k_Missing_parameter_A_s_or_ln10_10 euclidemu2.cpp /^static const char __pyx_k_Missing_parameter_A_s_or_ln10_10[] = "Missing parameter A_s or ln10^{10}A_s. Can't proceed.";$/;" v file: +__pyx_k_Missing_parameter_Omega_b_Can_t euclidemu2.cpp /^static const char __pyx_k_Missing_parameter_Omega_b_Can_t[] = "Missing parameter Omega_b. Can't proceed.";$/;" v file: +__pyx_k_Missing_parameter_Omega_m_or_Ome euclidemu2.cpp /^static const char __pyx_k_Missing_parameter_Omega_m_or_Ome[] = "Missing parameter Omega_m or Omega_cdm. Can't proceed.";$/;" v file: +__pyx_k_Missing_parameter_h_Can_t_procee euclidemu2.cpp /^static const char __pyx_k_Missing_parameter_h_Can_t_procee[] = "Missing parameter h. Can't proceed.";$/;" v file: +__pyx_k_Missing_parameter_m_ncdm_Can_t_p euclidemu2.cpp /^static const char __pyx_k_Missing_parameter_m_ncdm_Can_t_p[] = "Missing parameter m_ncdm. Can't proceed.";$/;" v file: +__pyx_k_Missing_parameter_n_s_Can_t_proc euclidemu2.cpp /^static const char __pyx_k_Missing_parameter_n_s_Can_t_proc[] = "Missing parameter n_s. Can't proceed.";$/;" v file: +__pyx_k_Missing_parameter_w0_Will_set_to euclidemu2.cpp /^static const char __pyx_k_Missing_parameter_w0_Will_set_to[] = "Missing parameter w0. Will set to -1.";$/;" v file: +__pyx_k_Missing_parameter_wa_Will_set_to euclidemu2.cpp /^static const char __pyx_k_Missing_parameter_wa_Will_set_to[] = "Missing parameter wa. Will set to 0.";$/;" v file: +__pyx_k_Om_b euclidemu2.cpp /^static const char __pyx_k_Om_b[] = "Om_b";$/;" v file: +__pyx_k_Om_cdm euclidemu2.cpp /^static const char __pyx_k_Om_cdm[] = "Om_cdm";$/;" v file: +__pyx_k_Om_m euclidemu2.cpp /^static const char __pyx_k_Om_m[] = "Om_m";$/;" v file: +__pyx_k_Omb euclidemu2.cpp /^static const char __pyx_k_Omb[] = "Omb";$/;" v file: +__pyx_k_Omc euclidemu2.cpp /^static const char __pyx_k_Omc[] = "Omc";$/;" v file: +__pyx_k_Omega_b euclidemu2.cpp /^static const char __pyx_k_Omega_b[] = "Omega_b";$/;" v file: +__pyx_k_Omega_cdm euclidemu2.cpp /^static const char __pyx_k_Omega_cdm[] = "Omega_cdm";$/;" v file: +__pyx_k_Omega_m euclidemu2.cpp /^static const char __pyx_k_Omega_m[] = "Omega_m";$/;" v file: +__pyx_k_Omm euclidemu2.cpp /^static const char __pyx_k_Omm[] = "Omm";$/;" v file: +__pyx_k_OverflowError euclidemu2.cpp /^static const char __pyx_k_OverflowError[] = "OverflowError";$/;" v file: +__pyx_k_Parameter_range_violation_A_s_is euclidemu2.cpp /^static const char __pyx_k_Parameter_range_violation_A_s_is[] = "Parameter range violation: A_s is set to %f, but should be in the interval [1.7e-9, 2.5e-9].";$/;" v file: +__pyx_k_Parameter_range_violation_Omega euclidemu2.cpp /^static const char __pyx_k_Parameter_range_violation_Omega[] = "Parameter range violation: Omega_b is set to %f, but should be in the interval [0.04, 0.06].";$/;" v file: +__pyx_k_Parameter_range_violation_Omega_2 euclidemu2.cpp /^static const char __pyx_k_Parameter_range_violation_Omega_2[] = "Parameter range violation: Omega_m is set to %f, but should be in the interval [0.24, 0.40].";$/;" v file: +__pyx_k_Parameter_range_violation_h_is_s euclidemu2.cpp /^static const char __pyx_k_Parameter_range_violation_h_is_s[] = "Parameter range violation: h is set to %f, but should be in the interval [0.61, 0.73].";$/;" v file: +__pyx_k_Parameter_range_violation_m_ncdm euclidemu2.cpp /^static const char __pyx_k_Parameter_range_violation_m_ncdm[] = "Parameter range violation: m_ncdm is set to %f, but should be in the interval [0.00, 0.15].";$/;" v file: +__pyx_k_Parameter_range_violation_n_s_is euclidemu2.cpp /^static const char __pyx_k_Parameter_range_violation_n_s_is[] = "Parameter range violation: n_s is set to %f, but should be in the interval [0.92, 1.00].";$/;" v file: +__pyx_k_Parameter_range_violation_w_0_is euclidemu2.cpp /^static const char __pyx_k_Parameter_range_violation_w_0_is[] = "Parameter range violation: w_0 is set to %f, but should be in the interval [-1.3, -0.7].";$/;" v file: +__pyx_k_Parameter_range_violation_w_a_is euclidemu2.cpp /^static const char __pyx_k_Parameter_range_violation_w_a_is[] = "Parameter range violation: w_a is set to %f, but should be in the interval [-0.7, 0.5].";$/;" v file: +__pyx_k_PyCosmology euclidemu2.cpp /^static const char __pyx_k_PyCosmology[] = "PyCosmology";$/;" v file: +__pyx_k_PyEuclidEmulator euclidemu2.cpp /^static const char __pyx_k_PyEuclidEmulator[] = "PyEuclidEmulator";$/;" v file: +__pyx_k_Sum_m_nu euclidemu2.cpp /^static const char __pyx_k_Sum_m_nu[] = "Sum_m_nu";$/;" v file: +__pyx_k_The_cosmological_parameters_must euclidemu2.cpp /^static const char __pyx_k_The_cosmological_parameters_must[] = "The cosmological parameters must be passed as a python dictionary.\\n";$/;" v file: +__pyx_k_TypeError euclidemu2.cpp /^static const char __pyx_k_TypeError[] = "TypeError";$/;" v file: +__pyx_k_ValueError euclidemu2.cpp /^static const char __pyx_k_ValueError[] = "ValueError";$/;" v file: +__pyx_k_any euclidemu2.cpp /^static const char __pyx_k_any[] = "any";$/;" v file: +__pyx_k_arg_A_s_wrong_type euclidemu2.cpp /^static const char __pyx_k_arg_A_s_wrong_type[] = "arg A_s wrong type";$/;" v file: +__pyx_k_arg_Omega_b_wrong_type euclidemu2.cpp /^static const char __pyx_k_arg_Omega_b_wrong_type[] = "arg Omega_b wrong type";$/;" v file: +__pyx_k_arg_Omega_m_wrong_type euclidemu2.cpp /^static const char __pyx_k_arg_Omega_m_wrong_type[] = "arg Omega_m wrong type";$/;" v file: +__pyx_k_arg_Sum_m_nu_wrong_type euclidemu2.cpp /^static const char __pyx_k_arg_Sum_m_nu_wrong_type[] = "arg Sum_m_nu wrong type";$/;" v file: +__pyx_k_arg_h_wrong_type euclidemu2.cpp /^static const char __pyx_k_arg_h_wrong_type[] = "arg h wrong type";$/;" v file: +__pyx_k_arg_n_s_wrong_type euclidemu2.cpp /^static const char __pyx_k_arg_n_s_wrong_type[] = "arg n_s wrong type";$/;" v file: +__pyx_k_arg_w_0_wrong_type euclidemu2.cpp /^static const char __pyx_k_arg_w_0_wrong_type[] = "arg w_0 wrong type";$/;" v file: +__pyx_k_arg_w_a_wrong_type euclidemu2.cpp /^static const char __pyx_k_arg_w_a_wrong_type[] = "arg w_a wrong type";$/;" v file: +__pyx_k_asarray euclidemu2.cpp /^static const char __pyx_k_asarray[] = "asarray";$/;" v file: +__pyx_k_b_extrap euclidemu2.cpp /^static const char __pyx_k_b_extrap[] = "b_extrap";$/;" v file: +__pyx_k_boost euclidemu2.cpp /^static const char __pyx_k_boost[] = "boost";$/;" v file: +__pyx_k_bvals euclidemu2.cpp /^static const char __pyx_k_bvals[] = "bvals";$/;" v file: +__pyx_k_check_param_range euclidemu2.cpp /^static const char __pyx_k_check_param_range[] = "check_param_range";$/;" v file: +__pyx_k_class_pars_dict euclidemu2.cpp /^static const char __pyx_k_class_pars_dict[] = "class_pars_dict";$/;" v file: +__pyx_k_cline_in_traceback euclidemu2.cpp /^static const char __pyx_k_cline_in_traceback[] = "cline_in_traceback";$/;" v file: +__pyx_k_compute_nlc euclidemu2.cpp /^static const char __pyx_k_compute_nlc[] = "compute_nlc";$/;" v file: +__pyx_k_concatenate euclidemu2.cpp /^static const char __pyx_k_concatenate[] = "concatenate";$/;" v file: +__pyx_k_convert_to_emu euclidemu2.cpp /^static const char __pyx_k_convert_to_emu[] = "convert_to_emu";$/;" v file: +__pyx_k_cosmo euclidemu2.cpp /^static const char __pyx_k_cosmo[] = "cosmo";$/;" v file: +__pyx_k_cosmo_par euclidemu2.cpp /^static const char __pyx_k_cosmo_par[] = "cosmo_par";$/;" v file: +__pyx_k_cosmo_par_in euclidemu2.cpp /^static const char __pyx_k_cosmo_par_in[] = "cosmo_par_in";$/;" v file: +__pyx_k_csm euclidemu2.cpp /^static const char __pyx_k_csm[] = "csm";$/;" v file: +__pyx_k_custom_k_above euclidemu2.cpp /^static const char __pyx_k_custom_k_above[] = "custom_k_above";$/;" v file: +__pyx_k_custom_k_below euclidemu2.cpp /^static const char __pyx_k_custom_k_below[] = "custom_k_below";$/;" v file: +__pyx_k_custom_k_within_range euclidemu2.cpp /^static const char __pyx_k_custom_k_within_range[] = "custom_k_within_range";$/;" v file: +__pyx_k_custom_kvec euclidemu2.cpp /^static const char __pyx_k_custom_kvec[] = "custom_kvec";$/;" v file: +__pyx_k_do_extrapolate_above euclidemu2.cpp /^static const char __pyx_k_do_extrapolate_above[] = "do_extrapolate_above";$/;" v file: +__pyx_k_do_extrapolate_below euclidemu2.cpp /^static const char __pyx_k_do_extrapolate_below[] = "do_extrapolate_below";$/;" v file: +__pyx_k_ee2 euclidemu2.cpp /^static const char __pyx_k_ee2[] = "ee2";$/;" v file: +__pyx_k_emu_pars_dict euclidemu2.cpp /^static const char __pyx_k_emu_pars_dict[] = "emu_pars_dict";$/;" v file: +__pyx_k_enumerate euclidemu2.cpp /^static const char __pyx_k_enumerate[] = "enumerate";$/;" v file: +__pyx_k_euclidemu2 euclidemu2.cpp /^static const char __pyx_k_euclidemu2[] = "euclidemu2";$/;" v file: +__pyx_k_exit euclidemu2.cpp /^static const char __pyx_k_exit[] = "exit";$/;" v file: +__pyx_k_exp euclidemu2.cpp /^static const char __pyx_k_exp[] = "exp";$/;" v file: +__pyx_k_filename euclidemu2.cpp /^static const char __pyx_k_filename[] = "filename";$/;" v file: +__pyx_k_get_boost euclidemu2.cpp /^static const char __pyx_k_get_boost[] = "get_boost";$/;" v file: +__pyx_k_getstate euclidemu2.cpp /^static const char __pyx_k_getstate[] = "__getstate__";$/;" v file: +__pyx_k_h euclidemu2.cpp /^static const char __pyx_k_h[] = "h";$/;" v file: +__pyx_k_h_not_in_range euclidemu2.cpp /^static const char __pyx_k_h_not_in_range[] = "h_not_in_range";$/;" v file: +__pyx_k_h_range euclidemu2.cpp /^static const char __pyx_k_h_range[] = "h_range";$/;" v file: +__pyx_k_i euclidemu2.cpp /^static const char __pyx_k_i[] = "i";$/;" v file: +__pyx_k_import euclidemu2.cpp /^static const char __pyx_k_import[] = "__import__";$/;" v file: +__pyx_k_k euclidemu2.cpp /^static const char __pyx_k_k[] = "k";$/;" v file: +__pyx_k_k_shape euclidemu2.cpp /^static const char __pyx_k_k_shape[] = "k_shape";$/;" v file: +__pyx_k_kvals euclidemu2.cpp /^static const char __pyx_k_kvals[] = "kvals";$/;" v file: +__pyx_k_kvec euclidemu2.cpp /^static const char __pyx_k_kvec[] = "kvec";$/;" v file: +__pyx_k_l euclidemu2.cpp /^static const char __pyx_k_l[] = "l";$/;" v file: +__pyx_k_len_kvals euclidemu2.cpp /^static const char __pyx_k_len_kvals[] = "len_kvals";$/;" v file: +__pyx_k_len_redshifts euclidemu2.cpp /^static const char __pyx_k_len_redshifts[] = "len_redshifts";$/;" v file: +__pyx_k_ln10_10_A_s euclidemu2.cpp /^static const char __pyx_k_ln10_10_A_s[] = "ln10^{10}A_s";$/;" v file: +__pyx_k_log10 euclidemu2.cpp /^static const char __pyx_k_log10[] = "log10";$/;" v file: +__pyx_k_lower_mask euclidemu2.cpp /^static const char __pyx_k_lower_mask[] = "lower_mask";$/;" v file: +__pyx_k_m_ncdm euclidemu2.cpp /^static const char __pyx_k_m_ncdm[] = "m_ncdm";$/;" v file: +__pyx_k_m_nu euclidemu2.cpp /^static const char __pyx_k_m_nu[] = "m_nu";$/;" v file: +__pyx_k_m_nu_not_in_range euclidemu2.cpp /^static const char __pyx_k_m_nu_not_in_range[] = "m_nu_not_in_range";$/;" v file: +__pyx_k_m_nu_range euclidemu2.cpp /^static const char __pyx_k_m_nu_range[] = "m_nu_range";$/;" v file: +__pyx_k_main euclidemu2.cpp /^static const char __pyx_k_main[] = "__main__";$/;" v file: +__pyx_k_mask euclidemu2.cpp /^static const char __pyx_k_mask[] = "mask";$/;" v file: +__pyx_k_max euclidemu2.cpp /^static const char __pyx_k_max[] = "max";$/;" v file: +__pyx_k_min euclidemu2.cpp /^static const char __pyx_k_min[] = "min";$/;" v file: +__pyx_k_mnu euclidemu2.cpp /^static const char __pyx_k_mnu[] = "mnu";$/;" v file: +__pyx_k_n_redshift euclidemu2.cpp /^static const char __pyx_k_n_redshift[] = "n_redshift";$/;" v file: +__pyx_k_n_s euclidemu2.cpp /^static const char __pyx_k_n_s[] = "n_s";$/;" v file: +__pyx_k_n_s_not_in_range euclidemu2.cpp /^static const char __pyx_k_n_s_not_in_range[] = "n_s_not_in_range";$/;" v file: +__pyx_k_n_s_range euclidemu2.cpp /^static const char __pyx_k_n_s_range[] = "n_s_range";$/;" v file: +__pyx_k_name euclidemu2.cpp /^static const char __pyx_k_name[] = "__name__";$/;" v file: +__pyx_k_no_default___reduce___due_to_non euclidemu2.cpp /^static const char __pyx_k_no_default___reduce___due_to_non[] = "no default __reduce__ due to non-trivial __cinit__";$/;" v file: +__pyx_k_np euclidemu2.cpp /^static const char __pyx_k_np[] = "np";$/;" v file: +__pyx_k_ns euclidemu2.cpp /^static const char __pyx_k_ns[] = "ns";$/;" v file: +__pyx_k_numpy euclidemu2.cpp /^static const char __pyx_k_numpy[] = "numpy";$/;" v file: +__pyx_k_om_b euclidemu2.cpp /^static const char __pyx_k_om_b[] = "om_b";$/;" v file: +__pyx_k_om_b_not_in_range euclidemu2.cpp /^static const char __pyx_k_om_b_not_in_range[] = "om_b_not_in_range";$/;" v file: +__pyx_k_om_b_range euclidemu2.cpp /^static const char __pyx_k_om_b_range[] = "om_b_range";$/;" v file: +__pyx_k_om_m euclidemu2.cpp /^static const char __pyx_k_om_m[] = "om_m";$/;" v file: +__pyx_k_om_m_not_in_range euclidemu2.cpp /^static const char __pyx_k_om_m_not_in_range[] = "om_m_not_in_range";$/;" v file: +__pyx_k_om_m_range euclidemu2.cpp /^static const char __pyx_k_om_m_range[] = "om_m_range";$/;" v file: +__pyx_k_ombh2 euclidemu2.cpp /^static const char __pyx_k_ombh2[] = "ombh2";$/;" v file: +__pyx_k_omch2 euclidemu2.cpp /^static const char __pyx_k_omch2[] = "omch2";$/;" v file: +__pyx_k_omega_b euclidemu2.cpp /^static const char __pyx_k_omega_b[] = "omega_b";$/;" v file: +__pyx_k_omega_cdm euclidemu2.cpp /^static const char __pyx_k_omega_cdm[] = "omega_cdm";$/;" v file: +__pyx_k_omega_m euclidemu2.cpp /^static const char __pyx_k_omega_m[] = "omega_m";$/;" v file: +__pyx_k_ommh2 euclidemu2.cpp /^static const char __pyx_k_ommh2[] = "ommh2";$/;" v file: +__pyx_k_ones_like euclidemu2.cpp /^static const char __pyx_k_ones_like[] = "ones_like";$/;" v file: +__pyx_k_par_dict euclidemu2.cpp /^static const char __pyx_k_par_dict[] = "par_dict";$/;" v file: +__pyx_k_print euclidemu2.cpp /^static const char __pyx_k_print[] = "print";$/;" v file: +__pyx_k_range euclidemu2.cpp /^static const char __pyx_k_range[] = "range";$/;" v file: +__pyx_k_redshift euclidemu2.cpp /^static const char __pyx_k_redshift[] = "redshift";$/;" v file: +__pyx_k_redshifts euclidemu2.cpp /^static const char __pyx_k_redshifts[] = "redshifts";$/;" v file: +__pyx_k_reduce euclidemu2.cpp /^static const char __pyx_k_reduce[] = "__reduce__";$/;" v file: +__pyx_k_reduce_cython euclidemu2.cpp /^static const char __pyx_k_reduce_cython[] = "__reduce_cython__";$/;" v file: +__pyx_k_reduce_ex euclidemu2.cpp /^static const char __pyx_k_reduce_ex[] = "__reduce_ex__";$/;" v file: +__pyx_k_reshape euclidemu2.cpp /^static const char __pyx_k_reshape[] = "reshape";$/;" v file: +__pyx_k_scipy_interpolate euclidemu2.cpp /^static const char __pyx_k_scipy_interpolate[] = "scipy.interpolate";$/;" v file: +__pyx_k_setstate euclidemu2.cpp /^static const char __pyx_k_setstate[] = "__setstate__";$/;" v file: +__pyx_k_setstate_cython euclidemu2.cpp /^static const char __pyx_k_setstate_cython[] = "__setstate_cython__";$/;" v file: +__pyx_k_shape euclidemu2.cpp /^static const char __pyx_k_shape[] = "shape";$/;" v file: +__pyx_k_src_euclidemu2_pyx euclidemu2.cpp /^static const char __pyx_k_src_euclidemu2_pyx[] = "src\/euclidemu2.pyx";$/;" v file: +__pyx_k_sys euclidemu2.cpp /^static const char __pyx_k_sys[] = "sys";$/;" v file: +__pyx_k_test euclidemu2.cpp /^static const char __pyx_k_test[] = "__test__";$/;" v file: +__pyx_k_tmp euclidemu2.cpp /^static const char __pyx_k_tmp[] = "tmp";$/;" v file: +__pyx_k_u euclidemu2.cpp /^static const char __pyx_k_u[] = "u";$/;" v file: +__pyx_k_upper_mask euclidemu2.cpp /^static const char __pyx_k_upper_mask[] = "upper_mask";$/;" v file: +__pyx_k_w euclidemu2.cpp /^static const char __pyx_k_w[] = "w";$/;" v file: +__pyx_k_w0 euclidemu2.cpp /^static const char __pyx_k_w0[] = "w0";$/;" v file: +__pyx_k_w0_fld euclidemu2.cpp /^static const char __pyx_k_w0_fld[] = "w0_fld";$/;" v file: +__pyx_k_w_0 euclidemu2.cpp /^static const char __pyx_k_w_0[] = "w_0";$/;" v file: +__pyx_k_w_0_not_in_range euclidemu2.cpp /^static const char __pyx_k_w_0_not_in_range[] = "w_0_not_in_range";$/;" v file: +__pyx_k_w_0_range euclidemu2.cpp /^static const char __pyx_k_w_0_range[] = "w_0_range";$/;" v file: +__pyx_k_w_a euclidemu2.cpp /^static const char __pyx_k_w_a[] = "w_a";$/;" v file: +__pyx_k_w_a_not_in_range euclidemu2.cpp /^static const char __pyx_k_w_a_not_in_range[] = "w_a_not_in_range";$/;" v file: +__pyx_k_w_a_range euclidemu2.cpp /^static const char __pyx_k_w_a_range[] = "w_a_range";$/;" v file: +__pyx_k_wa euclidemu2.cpp /^static const char __pyx_k_wa[] = "wa";$/;" v file: +__pyx_k_wa_fld euclidemu2.cpp /^static const char __pyx_k_wa_fld[] = "wa_fld";$/;" v file: +__pyx_k_warn euclidemu2.cpp /^static const char __pyx_k_warn[] = "warn";$/;" v file: +__pyx_k_warnings euclidemu2.cpp /^static const char __pyx_k_warnings[] = "_warnings";$/;" v file: +__pyx_k_warnings_2 euclidemu2.cpp /^static const char __pyx_k_warnings_2[] = "warnings";$/;" v file: +__pyx_k_wrn_message euclidemu2.cpp /^static const char __pyx_k_wrn_message[] = "wrn_message";$/;" v file: +__pyx_k_z euclidemu2.cpp /^static const char __pyx_k_z[] = "z";$/;" v file: +__pyx_k_zip euclidemu2.cpp /^static const char __pyx_k_zip[] = "zip";$/;" v file: +__pyx_k_zvec euclidemu2.cpp /^static const char __pyx_k_zvec[] = "zvec";$/;" v file: +__pyx_kp_s_no_default___reduce___due_to_non euclidemu2.cpp /^static PyObject *__pyx_kp_s_no_default___reduce___due_to_non;$/;" v file: +__pyx_kp_s_src_euclidemu2_pyx euclidemu2.cpp /^static PyObject *__pyx_kp_s_src_euclidemu2_pyx;$/;" v file: +__pyx_kp_u_EuclidEmulator2_allows_only_reds euclidemu2.cpp /^static PyObject *__pyx_kp_u_EuclidEmulator2_allows_only_reds;$/;" v file: +__pyx_kp_u_EuclidEmulator2_emulates_the_non euclidemu2.cpp /^static PyObject *__pyx_kp_u_EuclidEmulator2_emulates_the_non;$/;" v file: +__pyx_kp_u_EuclidEmulator2_emulates_the_non_2 euclidemu2.cpp /^static PyObject *__pyx_kp_u_EuclidEmulator2_emulates_the_non_2;$/;" v file: +__pyx_kp_u_Missing_parameter_A_s_or_ln10_10 euclidemu2.cpp /^static PyObject *__pyx_kp_u_Missing_parameter_A_s_or_ln10_10;$/;" v file: +__pyx_kp_u_Missing_parameter_Omega_b_Can_t euclidemu2.cpp /^static PyObject *__pyx_kp_u_Missing_parameter_Omega_b_Can_t;$/;" v file: +__pyx_kp_u_Missing_parameter_Omega_m_or_Ome euclidemu2.cpp /^static PyObject *__pyx_kp_u_Missing_parameter_Omega_m_or_Ome;$/;" v file: +__pyx_kp_u_Missing_parameter_h_Can_t_procee euclidemu2.cpp /^static PyObject *__pyx_kp_u_Missing_parameter_h_Can_t_procee;$/;" v file: +__pyx_kp_u_Missing_parameter_m_ncdm_Can_t_p euclidemu2.cpp /^static PyObject *__pyx_kp_u_Missing_parameter_m_ncdm_Can_t_p;$/;" v file: +__pyx_kp_u_Missing_parameter_n_s_Can_t_proc euclidemu2.cpp /^static PyObject *__pyx_kp_u_Missing_parameter_n_s_Can_t_proc;$/;" v file: +__pyx_kp_u_Missing_parameter_w0_Will_set_to euclidemu2.cpp /^static PyObject *__pyx_kp_u_Missing_parameter_w0_Will_set_to;$/;" v file: +__pyx_kp_u_Missing_parameter_wa_Will_set_to euclidemu2.cpp /^static PyObject *__pyx_kp_u_Missing_parameter_wa_Will_set_to;$/;" v file: +__pyx_kp_u_Parameter_range_violation_A_s_is euclidemu2.cpp /^static PyObject *__pyx_kp_u_Parameter_range_violation_A_s_is;$/;" v file: +__pyx_kp_u_Parameter_range_violation_Omega euclidemu2.cpp /^static PyObject *__pyx_kp_u_Parameter_range_violation_Omega;$/;" v file: +__pyx_kp_u_Parameter_range_violation_Omega_2 euclidemu2.cpp /^static PyObject *__pyx_kp_u_Parameter_range_violation_Omega_2;$/;" v file: +__pyx_kp_u_Parameter_range_violation_h_is_s euclidemu2.cpp /^static PyObject *__pyx_kp_u_Parameter_range_violation_h_is_s;$/;" v file: +__pyx_kp_u_Parameter_range_violation_m_ncdm euclidemu2.cpp /^static PyObject *__pyx_kp_u_Parameter_range_violation_m_ncdm;$/;" v file: +__pyx_kp_u_Parameter_range_violation_n_s_is euclidemu2.cpp /^static PyObject *__pyx_kp_u_Parameter_range_violation_n_s_is;$/;" v file: +__pyx_kp_u_Parameter_range_violation_w_0_is euclidemu2.cpp /^static PyObject *__pyx_kp_u_Parameter_range_violation_w_0_is;$/;" v file: +__pyx_kp_u_Parameter_range_violation_w_a_is euclidemu2.cpp /^static PyObject *__pyx_kp_u_Parameter_range_violation_w_a_is;$/;" v file: +__pyx_kp_u_The_cosmological_parameters_must euclidemu2.cpp /^static PyObject *__pyx_kp_u_The_cosmological_parameters_must;$/;" v file: +__pyx_kp_u_arg_A_s_wrong_type euclidemu2.cpp /^static PyObject *__pyx_kp_u_arg_A_s_wrong_type;$/;" v file: +__pyx_kp_u_arg_Omega_b_wrong_type euclidemu2.cpp /^static PyObject *__pyx_kp_u_arg_Omega_b_wrong_type;$/;" v file: +__pyx_kp_u_arg_Omega_m_wrong_type euclidemu2.cpp /^static PyObject *__pyx_kp_u_arg_Omega_m_wrong_type;$/;" v file: +__pyx_kp_u_arg_Sum_m_nu_wrong_type euclidemu2.cpp /^static PyObject *__pyx_kp_u_arg_Sum_m_nu_wrong_type;$/;" v file: +__pyx_kp_u_arg_h_wrong_type euclidemu2.cpp /^static PyObject *__pyx_kp_u_arg_h_wrong_type;$/;" v file: +__pyx_kp_u_arg_n_s_wrong_type euclidemu2.cpp /^static PyObject *__pyx_kp_u_arg_n_s_wrong_type;$/;" v file: +__pyx_kp_u_arg_w_0_wrong_type euclidemu2.cpp /^static PyObject *__pyx_kp_u_arg_w_0_wrong_type;$/;" v file: +__pyx_kp_u_arg_w_a_wrong_type euclidemu2.cpp /^static PyObject *__pyx_kp_u_arg_w_a_wrong_type;$/;" v file: +__pyx_kp_u_ln10_10_A_s euclidemu2.cpp /^static PyObject *__pyx_kp_u_ln10_10_A_s;$/;" v file: +__pyx_lineno euclidemu2.cpp /^static int __pyx_lineno;$/;" v file: +__pyx_m euclidemu2.cpp /^static PyObject *__pyx_m = NULL;$/;" v file: +__pyx_mdef_10euclidemu2_1check_param_range euclidemu2.cpp /^static PyMethodDef __pyx_mdef_10euclidemu2_1check_param_range = {"check_param_range", (PyCFunction)__pyx_pw_10euclidemu2_1check_param_range, METH_O, __pyx_doc_10euclidemu2_check_param_range};$/;" v file: +__pyx_mdef_10euclidemu2_3convert_to_emu euclidemu2.cpp /^static PyMethodDef __pyx_mdef_10euclidemu2_3convert_to_emu = {"convert_to_emu", (PyCFunction)__pyx_pw_10euclidemu2_3convert_to_emu, METH_O, __pyx_doc_10euclidemu2_2convert_to_emu};$/;" v file: +__pyx_mdef_10euclidemu2_5get_boost euclidemu2.cpp /^static PyMethodDef __pyx_mdef_10euclidemu2_5get_boost = {"get_boost", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_10euclidemu2_5get_boost, METH_VARARGS|METH_KEYWORDS, 0};$/;" v file: +__pyx_methods euclidemu2.cpp /^static PyMethodDef __pyx_methods[] = {$/;" v file: +__pyx_methods_10euclidemu2_PyCosmology euclidemu2.cpp /^static PyMethodDef __pyx_methods_10euclidemu2_PyCosmology[] = {$/;" v file: +__pyx_methods_10euclidemu2_PyEuclidEmulator euclidemu2.cpp /^static PyMethodDef __pyx_methods_10euclidemu2_PyEuclidEmulator[] = {$/;" v file: +__pyx_module_is_main_euclidemu2 euclidemu2.cpp /^int __pyx_module_is_main_euclidemu2 = 0;$/;" v +__pyx_moduledef euclidemu2.cpp /^static struct PyModuleDef __pyx_moduledef = {$/;" v typeref:struct:PyModuleDef file: +__pyx_moduledef_slots euclidemu2.cpp /^static PyModuleDef_Slot __pyx_moduledef_slots[] = {$/;" v file: +__pyx_n_s_A_s euclidemu2.cpp /^static PyObject *__pyx_n_s_A_s;$/;" v file: +__pyx_n_s_A_s_not_in_range euclidemu2.cpp /^static PyObject *__pyx_n_s_A_s_not_in_range;$/;" v file: +__pyx_n_s_A_s_range euclidemu2.cpp /^static PyObject *__pyx_n_s_A_s_range;$/;" v file: +__pyx_n_s_Bvec euclidemu2.cpp /^static PyObject *__pyx_n_s_Bvec;$/;" v file: +__pyx_n_s_CubicSpline euclidemu2.cpp /^static PyObject *__pyx_n_s_CubicSpline;$/;" v file: +__pyx_n_s_CubicSpline_2 euclidemu2.cpp /^static PyObject *__pyx_n_s_CubicSpline_2;$/;" v file: +__pyx_n_s_IndexError euclidemu2.cpp /^static PyObject *__pyx_n_s_IndexError;$/;" v file: +__pyx_n_s_Om_b euclidemu2.cpp /^static PyObject *__pyx_n_s_Om_b;$/;" v file: +__pyx_n_s_Om_cdm euclidemu2.cpp /^static PyObject *__pyx_n_s_Om_cdm;$/;" v file: +__pyx_n_s_Om_m euclidemu2.cpp /^static PyObject *__pyx_n_s_Om_m;$/;" v file: +__pyx_n_s_Omega_b euclidemu2.cpp /^static PyObject *__pyx_n_s_Omega_b;$/;" v file: +__pyx_n_s_Omega_m euclidemu2.cpp /^static PyObject *__pyx_n_s_Omega_m;$/;" v file: +__pyx_n_s_OverflowError euclidemu2.cpp /^static PyObject *__pyx_n_s_OverflowError;$/;" v file: +__pyx_n_s_PyCosmology euclidemu2.cpp /^static PyObject *__pyx_n_s_PyCosmology;$/;" v file: +__pyx_n_s_PyEuclidEmulator euclidemu2.cpp /^static PyObject *__pyx_n_s_PyEuclidEmulator;$/;" v file: +__pyx_n_s_Sum_m_nu euclidemu2.cpp /^static PyObject *__pyx_n_s_Sum_m_nu;$/;" v file: +__pyx_n_s_TypeError euclidemu2.cpp /^static PyObject *__pyx_n_s_TypeError;$/;" v file: +__pyx_n_s_ValueError euclidemu2.cpp /^static PyObject *__pyx_n_s_ValueError;$/;" v file: +__pyx_n_s_any euclidemu2.cpp /^static PyObject *__pyx_n_s_any;$/;" v file: +__pyx_n_s_asarray euclidemu2.cpp /^static PyObject *__pyx_n_s_asarray;$/;" v file: +__pyx_n_s_b_extrap euclidemu2.cpp /^static PyObject *__pyx_n_s_b_extrap;$/;" v file: +__pyx_n_s_boost euclidemu2.cpp /^static PyObject *__pyx_n_s_boost;$/;" v file: +__pyx_n_s_bvals euclidemu2.cpp /^static PyObject *__pyx_n_s_bvals;$/;" v file: +__pyx_n_s_check_param_range euclidemu2.cpp /^static PyObject *__pyx_n_s_check_param_range;$/;" v file: +__pyx_n_s_class_pars_dict euclidemu2.cpp /^static PyObject *__pyx_n_s_class_pars_dict;$/;" v file: +__pyx_n_s_cline_in_traceback euclidemu2.cpp /^static PyObject *__pyx_n_s_cline_in_traceback;$/;" v file: +__pyx_n_s_compute_nlc euclidemu2.cpp /^static PyObject *__pyx_n_s_compute_nlc;$/;" v file: +__pyx_n_s_concatenate euclidemu2.cpp /^static PyObject *__pyx_n_s_concatenate;$/;" v file: +__pyx_n_s_convert_to_emu euclidemu2.cpp /^static PyObject *__pyx_n_s_convert_to_emu;$/;" v file: +__pyx_n_s_cosmo euclidemu2.cpp /^static PyObject *__pyx_n_s_cosmo;$/;" v file: +__pyx_n_s_cosmo_par euclidemu2.cpp /^static PyObject *__pyx_n_s_cosmo_par;$/;" v file: +__pyx_n_s_cosmo_par_in euclidemu2.cpp /^static PyObject *__pyx_n_s_cosmo_par_in;$/;" v file: +__pyx_n_s_csm euclidemu2.cpp /^static PyObject *__pyx_n_s_csm;$/;" v file: +__pyx_n_s_custom_k_above euclidemu2.cpp /^static PyObject *__pyx_n_s_custom_k_above;$/;" v file: +__pyx_n_s_custom_k_below euclidemu2.cpp /^static PyObject *__pyx_n_s_custom_k_below;$/;" v file: +__pyx_n_s_custom_k_within_range euclidemu2.cpp /^static PyObject *__pyx_n_s_custom_k_within_range;$/;" v file: +__pyx_n_s_custom_kvec euclidemu2.cpp /^static PyObject *__pyx_n_s_custom_kvec;$/;" v file: +__pyx_n_s_do_extrapolate_above euclidemu2.cpp /^static PyObject *__pyx_n_s_do_extrapolate_above;$/;" v file: +__pyx_n_s_do_extrapolate_below euclidemu2.cpp /^static PyObject *__pyx_n_s_do_extrapolate_below;$/;" v file: +__pyx_n_s_ee2 euclidemu2.cpp /^static PyObject *__pyx_n_s_ee2;$/;" v file: +__pyx_n_s_emu_pars_dict euclidemu2.cpp /^static PyObject *__pyx_n_s_emu_pars_dict;$/;" v file: +__pyx_n_s_enumerate euclidemu2.cpp /^static PyObject *__pyx_n_s_enumerate;$/;" v file: +__pyx_n_s_euclidemu2 euclidemu2.cpp /^static PyObject *__pyx_n_s_euclidemu2;$/;" v file: +__pyx_n_s_exit euclidemu2.cpp /^static PyObject *__pyx_n_s_exit;$/;" v file: +__pyx_n_s_exp euclidemu2.cpp /^static PyObject *__pyx_n_s_exp;$/;" v file: +__pyx_n_s_filename euclidemu2.cpp /^static PyObject *__pyx_n_s_filename;$/;" v file: +__pyx_n_s_get_boost euclidemu2.cpp /^static PyObject *__pyx_n_s_get_boost;$/;" v file: +__pyx_n_s_getstate euclidemu2.cpp /^static PyObject *__pyx_n_s_getstate;$/;" v file: +__pyx_n_s_h euclidemu2.cpp /^static PyObject *__pyx_n_s_h;$/;" v file: +__pyx_n_s_h_not_in_range euclidemu2.cpp /^static PyObject *__pyx_n_s_h_not_in_range;$/;" v file: +__pyx_n_s_h_range euclidemu2.cpp /^static PyObject *__pyx_n_s_h_range;$/;" v file: +__pyx_n_s_i euclidemu2.cpp /^static PyObject *__pyx_n_s_i;$/;" v file: +__pyx_n_s_import euclidemu2.cpp /^static PyObject *__pyx_n_s_import;$/;" v file: +__pyx_n_s_k euclidemu2.cpp /^static PyObject *__pyx_n_s_k;$/;" v file: +__pyx_n_s_k_shape euclidemu2.cpp /^static PyObject *__pyx_n_s_k_shape;$/;" v file: +__pyx_n_s_kvals euclidemu2.cpp /^static PyObject *__pyx_n_s_kvals;$/;" v file: +__pyx_n_s_kvec euclidemu2.cpp /^static PyObject *__pyx_n_s_kvec;$/;" v file: +__pyx_n_s_l euclidemu2.cpp /^static PyObject *__pyx_n_s_l;$/;" v file: +__pyx_n_s_len_kvals euclidemu2.cpp /^static PyObject *__pyx_n_s_len_kvals;$/;" v file: +__pyx_n_s_len_redshifts euclidemu2.cpp /^static PyObject *__pyx_n_s_len_redshifts;$/;" v file: +__pyx_n_s_log10 euclidemu2.cpp /^static PyObject *__pyx_n_s_log10;$/;" v file: +__pyx_n_s_lower_mask euclidemu2.cpp /^static PyObject *__pyx_n_s_lower_mask;$/;" v file: +__pyx_n_s_m_ncdm euclidemu2.cpp /^static PyObject *__pyx_n_s_m_ncdm;$/;" v file: +__pyx_n_s_m_nu_not_in_range euclidemu2.cpp /^static PyObject *__pyx_n_s_m_nu_not_in_range;$/;" v file: +__pyx_n_s_m_nu_range euclidemu2.cpp /^static PyObject *__pyx_n_s_m_nu_range;$/;" v file: +__pyx_n_s_main euclidemu2.cpp /^static PyObject *__pyx_n_s_main;$/;" v file: +__pyx_n_s_mask euclidemu2.cpp /^static PyObject *__pyx_n_s_mask;$/;" v file: +__pyx_n_s_max euclidemu2.cpp /^static PyObject *__pyx_n_s_max;$/;" v file: +__pyx_n_s_min euclidemu2.cpp /^static PyObject *__pyx_n_s_min;$/;" v file: +__pyx_n_s_n_redshift euclidemu2.cpp /^static PyObject *__pyx_n_s_n_redshift;$/;" v file: +__pyx_n_s_n_s euclidemu2.cpp /^static PyObject *__pyx_n_s_n_s;$/;" v file: +__pyx_n_s_n_s_not_in_range euclidemu2.cpp /^static PyObject *__pyx_n_s_n_s_not_in_range;$/;" v file: +__pyx_n_s_n_s_range euclidemu2.cpp /^static PyObject *__pyx_n_s_n_s_range;$/;" v file: +__pyx_n_s_name euclidemu2.cpp /^static PyObject *__pyx_n_s_name;$/;" v file: +__pyx_n_s_np euclidemu2.cpp /^static PyObject *__pyx_n_s_np;$/;" v file: +__pyx_n_s_numpy euclidemu2.cpp /^static PyObject *__pyx_n_s_numpy;$/;" v file: +__pyx_n_s_om_b_not_in_range euclidemu2.cpp /^static PyObject *__pyx_n_s_om_b_not_in_range;$/;" v file: +__pyx_n_s_om_b_range euclidemu2.cpp /^static PyObject *__pyx_n_s_om_b_range;$/;" v file: +__pyx_n_s_om_m_not_in_range euclidemu2.cpp /^static PyObject *__pyx_n_s_om_m_not_in_range;$/;" v file: +__pyx_n_s_om_m_range euclidemu2.cpp /^static PyObject *__pyx_n_s_om_m_range;$/;" v file: +__pyx_n_s_ones_like euclidemu2.cpp /^static PyObject *__pyx_n_s_ones_like;$/;" v file: +__pyx_n_s_par_dict euclidemu2.cpp /^static PyObject *__pyx_n_s_par_dict;$/;" v file: +__pyx_n_s_print euclidemu2.cpp /^static PyObject *__pyx_n_s_print;$/;" v file: +__pyx_n_s_range euclidemu2.cpp /^static PyObject *__pyx_n_s_range;$/;" v file: +__pyx_n_s_redshift euclidemu2.cpp /^static PyObject *__pyx_n_s_redshift;$/;" v file: +__pyx_n_s_redshifts euclidemu2.cpp /^static PyObject *__pyx_n_s_redshifts;$/;" v file: +__pyx_n_s_reduce euclidemu2.cpp /^static PyObject *__pyx_n_s_reduce;$/;" v file: +__pyx_n_s_reduce_cython euclidemu2.cpp /^static PyObject *__pyx_n_s_reduce_cython;$/;" v file: +__pyx_n_s_reduce_ex euclidemu2.cpp /^static PyObject *__pyx_n_s_reduce_ex;$/;" v file: +__pyx_n_s_reshape euclidemu2.cpp /^static PyObject *__pyx_n_s_reshape;$/;" v file: +__pyx_n_s_scipy_interpolate euclidemu2.cpp /^static PyObject *__pyx_n_s_scipy_interpolate;$/;" v file: +__pyx_n_s_setstate euclidemu2.cpp /^static PyObject *__pyx_n_s_setstate;$/;" v file: +__pyx_n_s_setstate_cython euclidemu2.cpp /^static PyObject *__pyx_n_s_setstate_cython;$/;" v file: +__pyx_n_s_shape euclidemu2.cpp /^static PyObject *__pyx_n_s_shape;$/;" v file: +__pyx_n_s_sys euclidemu2.cpp /^static PyObject *__pyx_n_s_sys;$/;" v file: +__pyx_n_s_test euclidemu2.cpp /^static PyObject *__pyx_n_s_test;$/;" v file: +__pyx_n_s_tmp euclidemu2.cpp /^static PyObject *__pyx_n_s_tmp;$/;" v file: +__pyx_n_s_u euclidemu2.cpp /^static PyObject *__pyx_n_s_u;$/;" v file: +__pyx_n_s_upper_mask euclidemu2.cpp /^static PyObject *__pyx_n_s_upper_mask;$/;" v file: +__pyx_n_s_w0_fld euclidemu2.cpp /^static PyObject *__pyx_n_s_w0_fld;$/;" v file: +__pyx_n_s_w_0 euclidemu2.cpp /^static PyObject *__pyx_n_s_w_0;$/;" v file: +__pyx_n_s_w_0_not_in_range euclidemu2.cpp /^static PyObject *__pyx_n_s_w_0_not_in_range;$/;" v file: +__pyx_n_s_w_0_range euclidemu2.cpp /^static PyObject *__pyx_n_s_w_0_range;$/;" v file: +__pyx_n_s_w_a euclidemu2.cpp /^static PyObject *__pyx_n_s_w_a;$/;" v file: +__pyx_n_s_w_a_not_in_range euclidemu2.cpp /^static PyObject *__pyx_n_s_w_a_not_in_range;$/;" v file: +__pyx_n_s_w_a_range euclidemu2.cpp /^static PyObject *__pyx_n_s_w_a_range;$/;" v file: +__pyx_n_s_wa_fld euclidemu2.cpp /^static PyObject *__pyx_n_s_wa_fld;$/;" v file: +__pyx_n_s_warn euclidemu2.cpp /^static PyObject *__pyx_n_s_warn;$/;" v file: +__pyx_n_s_warnings euclidemu2.cpp /^static PyObject *__pyx_n_s_warnings;$/;" v file: +__pyx_n_s_warnings_2 euclidemu2.cpp /^static PyObject *__pyx_n_s_warnings_2;$/;" v file: +__pyx_n_s_wrn_message euclidemu2.cpp /^static PyObject *__pyx_n_s_wrn_message;$/;" v file: +__pyx_n_s_z euclidemu2.cpp /^static PyObject *__pyx_n_s_z;$/;" v file: +__pyx_n_s_zip euclidemu2.cpp /^static PyObject *__pyx_n_s_zip;$/;" v file: +__pyx_n_s_zvec euclidemu2.cpp /^static PyObject *__pyx_n_s_zvec;$/;" v file: +__pyx_n_u_A_s euclidemu2.cpp /^static PyObject *__pyx_n_u_A_s;$/;" v file: +__pyx_n_u_As euclidemu2.cpp /^static PyObject *__pyx_n_u_As;$/;" v file: +__pyx_n_u_H0 euclidemu2.cpp /^static PyObject *__pyx_n_u_H0;$/;" v file: +__pyx_n_u_Omb euclidemu2.cpp /^static PyObject *__pyx_n_u_Omb;$/;" v file: +__pyx_n_u_Omc euclidemu2.cpp /^static PyObject *__pyx_n_u_Omc;$/;" v file: +__pyx_n_u_Omega_b euclidemu2.cpp /^static PyObject *__pyx_n_u_Omega_b;$/;" v file: +__pyx_n_u_Omega_cdm euclidemu2.cpp /^static PyObject *__pyx_n_u_Omega_cdm;$/;" v file: +__pyx_n_u_Omega_m euclidemu2.cpp /^static PyObject *__pyx_n_u_Omega_m;$/;" v file: +__pyx_n_u_Omm euclidemu2.cpp /^static PyObject *__pyx_n_u_Omm;$/;" v file: +__pyx_n_u_h euclidemu2.cpp /^static PyObject *__pyx_n_u_h;$/;" v file: +__pyx_n_u_m_ncdm euclidemu2.cpp /^static PyObject *__pyx_n_u_m_ncdm;$/;" v file: +__pyx_n_u_m_nu euclidemu2.cpp /^static PyObject *__pyx_n_u_m_nu;$/;" v file: +__pyx_n_u_mnu euclidemu2.cpp /^static PyObject *__pyx_n_u_mnu;$/;" v file: +__pyx_n_u_n_s euclidemu2.cpp /^static PyObject *__pyx_n_u_n_s;$/;" v file: +__pyx_n_u_ns euclidemu2.cpp /^static PyObject *__pyx_n_u_ns;$/;" v file: +__pyx_n_u_om_b euclidemu2.cpp /^static PyObject *__pyx_n_u_om_b;$/;" v file: +__pyx_n_u_om_m euclidemu2.cpp /^static PyObject *__pyx_n_u_om_m;$/;" v file: +__pyx_n_u_ombh2 euclidemu2.cpp /^static PyObject *__pyx_n_u_ombh2;$/;" v file: +__pyx_n_u_omch2 euclidemu2.cpp /^static PyObject *__pyx_n_u_omch2;$/;" v file: +__pyx_n_u_omega_b euclidemu2.cpp /^static PyObject *__pyx_n_u_omega_b;$/;" v file: +__pyx_n_u_omega_cdm euclidemu2.cpp /^static PyObject *__pyx_n_u_omega_cdm;$/;" v file: +__pyx_n_u_omega_m euclidemu2.cpp /^static PyObject *__pyx_n_u_omega_m;$/;" v file: +__pyx_n_u_ommh2 euclidemu2.cpp /^static PyObject *__pyx_n_u_ommh2;$/;" v file: +__pyx_n_u_w euclidemu2.cpp /^static PyObject *__pyx_n_u_w;$/;" v file: +__pyx_n_u_w0 euclidemu2.cpp /^static PyObject *__pyx_n_u_w0;$/;" v file: +__pyx_n_u_w0_fld euclidemu2.cpp /^static PyObject *__pyx_n_u_w0_fld;$/;" v file: +__pyx_n_u_w_0 euclidemu2.cpp /^static PyObject *__pyx_n_u_w_0;$/;" v file: +__pyx_n_u_w_a euclidemu2.cpp /^static PyObject *__pyx_n_u_w_a;$/;" v file: +__pyx_n_u_wa euclidemu2.cpp /^static PyObject *__pyx_n_u_wa;$/;" v file: +__pyx_n_u_wa_fld euclidemu2.cpp /^static PyObject *__pyx_n_u_wa_fld;$/;" v file: +__pyx_obj_10euclidemu2_PyCosmology euclidemu2.cpp /^struct __pyx_obj_10euclidemu2_PyCosmology {$/;" s file: +__pyx_obj_10euclidemu2_PyEuclidEmulator euclidemu2.cpp /^struct __pyx_obj_10euclidemu2_PyEuclidEmulator {$/;" s file: +__pyx_pf_10euclidemu2_11PyCosmology_10_free_inst_2__set__ euclidemu2.cpp /^static int __pyx_pf_10euclidemu2_11PyCosmology_10_free_inst_2__set__(struct __pyx_obj_10euclidemu2_PyCosmology *__pyx_v_self, PyObject *__pyx_v_value) {$/;" f file: +__pyx_pf_10euclidemu2_11PyCosmology_10_free_inst___get__ euclidemu2.cpp /^static PyObject *__pyx_pf_10euclidemu2_11PyCosmology_10_free_inst___get__(struct __pyx_obj_10euclidemu2_PyCosmology *__pyx_v_self) {$/;" f file: +__pyx_pf_10euclidemu2_11PyCosmology_2__init__ euclidemu2.cpp /^static int __pyx_pf_10euclidemu2_11PyCosmology_2__init__(struct __pyx_obj_10euclidemu2_PyCosmology *__pyx_v_self, double __pyx_v_Omega_b, double __pyx_v_Omega_m, double __pyx_v_Sum_m_nu, double __pyx_v_n_s, double __pyx_v_h, double __pyx_v_w_0, double __pyx_v_w_a, double __pyx_v_A_s) {$/;" f file: +__pyx_pf_10euclidemu2_11PyCosmology_4__dealloc__ euclidemu2.cpp /^static void __pyx_pf_10euclidemu2_11PyCosmology_4__dealloc__(struct __pyx_obj_10euclidemu2_PyCosmology *__pyx_v_self) {$/;" f file: +__pyx_pf_10euclidemu2_11PyCosmology_6__reduce_cython__ euclidemu2.cpp /^static PyObject *__pyx_pf_10euclidemu2_11PyCosmology_6__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_10euclidemu2_PyCosmology *__pyx_v_self) {$/;" f file: +__pyx_pf_10euclidemu2_11PyCosmology_8__setstate_cython__ euclidemu2.cpp /^static PyObject *__pyx_pf_10euclidemu2_11PyCosmology_8__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_10euclidemu2_PyCosmology *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {$/;" f file: +__pyx_pf_10euclidemu2_11PyCosmology___cinit__ euclidemu2.cpp /^static int __pyx_pf_10euclidemu2_11PyCosmology___cinit__(struct __pyx_obj_10euclidemu2_PyCosmology *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_args, CYTHON_UNUSED PyObject *__pyx_v_kwargs) {$/;" f file: +__pyx_pf_10euclidemu2_16PyEuclidEmulator_2compute_nlc euclidemu2.cpp /^static PyObject *__pyx_pf_10euclidemu2_16PyEuclidEmulator_2compute_nlc(struct __pyx_obj_10euclidemu2_PyEuclidEmulator *__pyx_v_self, struct __pyx_obj_10euclidemu2_PyCosmology *__pyx_v_csm, PyObject *__pyx_v_redshift, PyObject *__pyx_v_n_redshift) {$/;" f file: +__pyx_pf_10euclidemu2_16PyEuclidEmulator_4Bvec_2__set__ euclidemu2.cpp /^static int __pyx_pf_10euclidemu2_16PyEuclidEmulator_4Bvec_2__set__(struct __pyx_obj_10euclidemu2_PyEuclidEmulator *__pyx_v_self, PyObject *__pyx_v_Bvec) {$/;" f file: +__pyx_pf_10euclidemu2_16PyEuclidEmulator_4Bvec___get__ euclidemu2.cpp /^static PyObject *__pyx_pf_10euclidemu2_16PyEuclidEmulator_4Bvec___get__(struct __pyx_obj_10euclidemu2_PyEuclidEmulator *__pyx_v_self) {$/;" f file: +__pyx_pf_10euclidemu2_16PyEuclidEmulator_4kvec_2__set__ euclidemu2.cpp /^static int __pyx_pf_10euclidemu2_16PyEuclidEmulator_4kvec_2__set__(struct __pyx_obj_10euclidemu2_PyEuclidEmulator *__pyx_v_self, PyObject *__pyx_v_kvec) {$/;" f file: +__pyx_pf_10euclidemu2_16PyEuclidEmulator_4kvec___get__ euclidemu2.cpp /^static PyObject *__pyx_pf_10euclidemu2_16PyEuclidEmulator_4kvec___get__(struct __pyx_obj_10euclidemu2_PyEuclidEmulator *__pyx_v_self) {$/;" f file: +__pyx_pf_10euclidemu2_16PyEuclidEmulator_4write_nlc2file euclidemu2.cpp /^static PyObject *__pyx_pf_10euclidemu2_16PyEuclidEmulator_4write_nlc2file(struct __pyx_obj_10euclidemu2_PyEuclidEmulator *__pyx_v_self, PyObject *__pyx_v_filename, PyObject *__pyx_v_zvec, PyObject *__pyx_v_n_redshift) {$/;" f file: +__pyx_pf_10euclidemu2_16PyEuclidEmulator_6__reduce_cython__ euclidemu2.cpp /^static PyObject *__pyx_pf_10euclidemu2_16PyEuclidEmulator_6__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_10euclidemu2_PyEuclidEmulator *__pyx_v_self) {$/;" f file: +__pyx_pf_10euclidemu2_16PyEuclidEmulator_8__setstate_cython__ euclidemu2.cpp /^static PyObject *__pyx_pf_10euclidemu2_16PyEuclidEmulator_8__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_10euclidemu2_PyEuclidEmulator *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {$/;" f file: +__pyx_pf_10euclidemu2_16PyEuclidEmulator___cinit__ euclidemu2.cpp /^static int __pyx_pf_10euclidemu2_16PyEuclidEmulator___cinit__(struct __pyx_obj_10euclidemu2_PyEuclidEmulator *__pyx_v_self) {$/;" f file: +__pyx_pf_10euclidemu2_2convert_to_emu euclidemu2.cpp /^static PyObject *__pyx_pf_10euclidemu2_2convert_to_emu(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_class_pars_dict) {$/;" f file: +__pyx_pf_10euclidemu2_4get_boost euclidemu2.cpp /^static PyObject *__pyx_pf_10euclidemu2_4get_boost(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_cosmo_par_in, PyObject *__pyx_v_redshifts, PyObject *__pyx_v_custom_kvec) {$/;" f file: +__pyx_pf_10euclidemu2_check_param_range euclidemu2.cpp /^static PyObject *__pyx_pf_10euclidemu2_check_param_range(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_par_dict) {$/;" f file: +__pyx_ptype_10euclidemu2_PyCosmology euclidemu2.cpp /^static PyTypeObject *__pyx_ptype_10euclidemu2_PyCosmology = 0;$/;" v file: +__pyx_ptype_10euclidemu2_PyEuclidEmulator euclidemu2.cpp /^static PyTypeObject *__pyx_ptype_10euclidemu2_PyEuclidEmulator = 0;$/;" v file: +__pyx_pw_10euclidemu2_11PyCosmology_10_free_inst_1__get__ euclidemu2.cpp /^static PyObject *__pyx_pw_10euclidemu2_11PyCosmology_10_free_inst_1__get__(PyObject *__pyx_v_self) {$/;" f file: +__pyx_pw_10euclidemu2_11PyCosmology_10_free_inst_3__set__ euclidemu2.cpp /^static int __pyx_pw_10euclidemu2_11PyCosmology_10_free_inst_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {$/;" f file: +__pyx_pw_10euclidemu2_11PyCosmology_1__cinit__ euclidemu2.cpp /^static int __pyx_pw_10euclidemu2_11PyCosmology_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {$/;" f file: +__pyx_pw_10euclidemu2_11PyCosmology_3__init__ euclidemu2.cpp /^static int __pyx_pw_10euclidemu2_11PyCosmology_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {$/;" f file: +__pyx_pw_10euclidemu2_11PyCosmology_5__dealloc__ euclidemu2.cpp /^static void __pyx_pw_10euclidemu2_11PyCosmology_5__dealloc__(PyObject *__pyx_v_self) {$/;" f file: +__pyx_pw_10euclidemu2_11PyCosmology_7__reduce_cython__ euclidemu2.cpp /^static PyObject *__pyx_pw_10euclidemu2_11PyCosmology_7__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {$/;" f file: +__pyx_pw_10euclidemu2_11PyCosmology_9__setstate_cython__ euclidemu2.cpp /^static PyObject *__pyx_pw_10euclidemu2_11PyCosmology_9__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {$/;" f file: +__pyx_pw_10euclidemu2_16PyEuclidEmulator_1__cinit__ euclidemu2.cpp /^static int __pyx_pw_10euclidemu2_16PyEuclidEmulator_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {$/;" f file: +__pyx_pw_10euclidemu2_16PyEuclidEmulator_3compute_nlc euclidemu2.cpp /^static PyObject *__pyx_pw_10euclidemu2_16PyEuclidEmulator_3compute_nlc(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {$/;" f file: +__pyx_pw_10euclidemu2_16PyEuclidEmulator_4Bvec_1__get__ euclidemu2.cpp /^static PyObject *__pyx_pw_10euclidemu2_16PyEuclidEmulator_4Bvec_1__get__(PyObject *__pyx_v_self) {$/;" f file: +__pyx_pw_10euclidemu2_16PyEuclidEmulator_4Bvec_3__set__ euclidemu2.cpp /^static int __pyx_pw_10euclidemu2_16PyEuclidEmulator_4Bvec_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_Bvec) {$/;" f file: +__pyx_pw_10euclidemu2_16PyEuclidEmulator_4kvec_1__get__ euclidemu2.cpp /^static PyObject *__pyx_pw_10euclidemu2_16PyEuclidEmulator_4kvec_1__get__(PyObject *__pyx_v_self) {$/;" f file: +__pyx_pw_10euclidemu2_16PyEuclidEmulator_4kvec_3__set__ euclidemu2.cpp /^static int __pyx_pw_10euclidemu2_16PyEuclidEmulator_4kvec_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_kvec) {$/;" f file: +__pyx_pw_10euclidemu2_16PyEuclidEmulator_5write_nlc2file euclidemu2.cpp /^static PyObject *__pyx_pw_10euclidemu2_16PyEuclidEmulator_5write_nlc2file(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {$/;" f file: +__pyx_pw_10euclidemu2_16PyEuclidEmulator_7__reduce_cython__ euclidemu2.cpp /^static PyObject *__pyx_pw_10euclidemu2_16PyEuclidEmulator_7__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {$/;" f file: +__pyx_pw_10euclidemu2_16PyEuclidEmulator_9__setstate_cython__ euclidemu2.cpp /^static PyObject *__pyx_pw_10euclidemu2_16PyEuclidEmulator_9__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {$/;" f file: +__pyx_pw_10euclidemu2_1check_param_range euclidemu2.cpp /^static PyObject *__pyx_pw_10euclidemu2_1check_param_range(PyObject *__pyx_self, PyObject *__pyx_v_par_dict) {$/;" f file: +__pyx_pw_10euclidemu2_3convert_to_emu euclidemu2.cpp /^static PyObject *__pyx_pw_10euclidemu2_3convert_to_emu(PyObject *__pyx_self, PyObject *__pyx_v_class_pars_dict) {$/;" f file: +__pyx_pw_10euclidemu2_5get_boost euclidemu2.cpp /^static PyObject *__pyx_pw_10euclidemu2_5get_boost(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {$/;" f file: +__pyx_pyframe_localsplus_offset euclidemu2.cpp /^ static size_t __pyx_pyframe_localsplus_offset = 0;$/;" v file: +__pyx_setprop_10euclidemu2_11PyCosmology__free_inst euclidemu2.cpp /^static int __pyx_setprop_10euclidemu2_11PyCosmology__free_inst(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {$/;" f file: +__pyx_setprop_10euclidemu2_16PyEuclidEmulator_Bvec euclidemu2.cpp /^static int __pyx_setprop_10euclidemu2_16PyEuclidEmulator_Bvec(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {$/;" f file: +__pyx_setprop_10euclidemu2_16PyEuclidEmulator_kvec euclidemu2.cpp /^static int __pyx_setprop_10euclidemu2_16PyEuclidEmulator_kvec(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {$/;" f file: +__pyx_string_tab euclidemu2.cpp /^static __Pyx_StringTabEntry __pyx_string_tab[] = {$/;" v file: +__pyx_tp_dealloc_10euclidemu2_PyCosmology euclidemu2.cpp /^static void __pyx_tp_dealloc_10euclidemu2_PyCosmology(PyObject *o) {$/;" f file: +__pyx_tp_dealloc_10euclidemu2_PyEuclidEmulator euclidemu2.cpp /^static void __pyx_tp_dealloc_10euclidemu2_PyEuclidEmulator(PyObject *o) {$/;" f file: +__pyx_tp_new_10euclidemu2_PyCosmology euclidemu2.cpp /^static PyObject *__pyx_tp_new_10euclidemu2_PyCosmology(PyTypeObject *t, PyObject *a, PyObject *k) {$/;" f file: +__pyx_tp_new_10euclidemu2_PyEuclidEmulator euclidemu2.cpp /^static PyObject *__pyx_tp_new_10euclidemu2_PyEuclidEmulator(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {$/;" f file: +__pyx_tuple_ euclidemu2.cpp /^static PyObject *__pyx_tuple_;$/;" v file: +__pyx_tuple__10 euclidemu2.cpp /^static PyObject *__pyx_tuple__10;$/;" v file: +__pyx_tuple__11 euclidemu2.cpp /^static PyObject *__pyx_tuple__11;$/;" v file: +__pyx_tuple__12 euclidemu2.cpp /^static PyObject *__pyx_tuple__12;$/;" v file: +__pyx_tuple__13 euclidemu2.cpp /^static PyObject *__pyx_tuple__13;$/;" v file: +__pyx_tuple__14 euclidemu2.cpp /^static PyObject *__pyx_tuple__14;$/;" v file: +__pyx_tuple__16 euclidemu2.cpp /^static PyObject *__pyx_tuple__16;$/;" v file: +__pyx_tuple__18 euclidemu2.cpp /^static PyObject *__pyx_tuple__18;$/;" v file: +__pyx_tuple__2 euclidemu2.cpp /^static PyObject *__pyx_tuple__2;$/;" v file: +__pyx_tuple__3 euclidemu2.cpp /^static PyObject *__pyx_tuple__3;$/;" v file: +__pyx_tuple__4 euclidemu2.cpp /^static PyObject *__pyx_tuple__4;$/;" v file: +__pyx_tuple__5 euclidemu2.cpp /^static PyObject *__pyx_tuple__5;$/;" v file: +__pyx_tuple__6 euclidemu2.cpp /^static PyObject *__pyx_tuple__6;$/;" v file: +__pyx_tuple__7 euclidemu2.cpp /^static PyObject *__pyx_tuple__7;$/;" v file: +__pyx_tuple__8 euclidemu2.cpp /^static PyObject *__pyx_tuple__8;$/;" v file: +__pyx_tuple__9 euclidemu2.cpp /^static PyObject *__pyx_tuple__9;$/;" v file: +__pyx_type_10euclidemu2_PyCosmology euclidemu2.cpp /^static PyTypeObject __pyx_type_10euclidemu2_PyCosmology = {$/;" v file: +__pyx_type_10euclidemu2_PyEuclidEmulator euclidemu2.cpp /^static PyTypeObject __pyx_type_10euclidemu2_PyEuclidEmulator = {$/;" v file: +__pyx_wrapperbase_10euclidemu2_11PyCosmology_2__init__ euclidemu2.cpp /^struct wrapperbase __pyx_wrapperbase_10euclidemu2_11PyCosmology_2__init__;$/;" v typeref:struct:wrapperbase +__stdcall euclidemu2.cpp 53;" d file: +_free_inst euclidemu2.cpp /^ int _free_inst;$/;" m struct:__pyx_obj_10euclidemu2_PyCosmology file: +_inst euclidemu2.cpp /^ void *_inst;$/;" m struct:__pyx_obj_10euclidemu2_PyCosmology file: +a cosmo.h /^ double a;$/;" m struct:Cosmology::__anon1 +a2Hubble cosmo.cxx /^double Cosmology::a2Hubble(double a){$/;" f class:Cosmology +a2t cosmo.cxx /^double Cosmology::a2t(double a){$/;" f class:Cosmology +a2t_integrand cosmo.cxx /^double Cosmology::a2t_integrand(double lna, void *params){$/;" f class:Cosmology +a2t_parameters cosmo.h /^ } a2t_parameters;$/;" t class:Cosmology typeref:struct:Cosmology::__anon2 +acc cosmo.h /^ gsl_interp_accel *acc;$/;" m class:Cosmology +am_aiter euclidemu2.cpp /^ unaryfunc am_aiter;$/;" m struct:__anon4 file: +am_anext euclidemu2.cpp /^ unaryfunc am_anext;$/;" m struct:__anon4 file: +am_await euclidemu2.cpp /^ unaryfunc am_await;$/;" m struct:__anon4 file: +c units_and_constants.h /^ const double c = 1.0; \/\/ speed of light$/;" m namespace:planck_units +c units_and_constants.h /^ const double c = 2.99792458e8 * meter\/second; \/\/ speed of light$/;" m namespace:SI_units +c units_and_constants.h /^ const double c = 1.0; \/\/ speed of light$/;" m namespace:cosmological_units +c units_and_constants.h /^ const double c = 1.0; \/\/ speed of light$/;" m namespace:pkdgrav_units +check_implicit_cambparameters parse.cxx /^void check_implicit_cambparameters(std::string current_line){$/;" f +check_implicit_classparameters parse.cxx /^void check_implicit_classparameters(std::string current_line){$/;" f +check_param_range euclidemu2.pyx /^def check_param_range(par_dict): #, csm_index=0): #Only one cosmology for now$/;" f +check_parameter_ranges cosmo.cxx /^void Cosmology::check_parameter_ranges(){$/;" f class:Cosmology +code_line euclidemu2.cpp /^ int code_line;$/;" m struct:__anon7 file: +code_object euclidemu2.cpp /^ PyCodeObject* code_object;$/;" m struct:__anon7 file: +compute_nlc emulator.cxx /^void EuclidEmulator::compute_nlc(Cosmology csm, vector redshift, int n_redshift){$/;" f class:EuclidEmulator +compute_nlc euclidemu2.pyx /^ def compute_nlc(self,PyCosmology csm, redshift, n_redshift):$/;" m class:PyEuclidEmulator +compute_step_number cosmo.cxx /^double Cosmology::compute_step_number(double z){$/;" f class:Cosmology +compute_z2nStep_spline cosmo.cxx /^void Cosmology::compute_z2nStep_spline(){$/;" f class:Cosmology +convert_to_emu euclidemu2.pyx /^def convert_to_emu(class_pars_dict):$/;" f +cosmo cosmo.h /^ double cosmo[8], cosmo_tf[8];$/;" m class:Cosmology +cosmo_tf cosmo.h /^ double cosmo[8], cosmo_tf[8];$/;" m class:Cosmology +cosmological_units units_and_constants.h /^namespace cosmological_units{$/;" n +count euclidemu2.cpp /^ int count;$/;" m struct:__Pyx_CodeObjectCache file: +csm_instance cosmo.h /^ Cosmology * csm_instance;$/;" m struct:Cosmology::__anon1 +csm_instance cosmo.h /^ Cosmology * csm_instance;$/;" m struct:Cosmology::__anon2 +csmpars parse.h /^struct csmpars {$/;" s +eV units_and_constants.h /^ const double eV = 1.602176487e-19 * Joule; \/\/ electron Volt$/;" m namespace:SI_units +eV units_and_constants.h /^ const double eV = 1.602176487e-19 * Joule; \/\/ electron Volt$/;" m namespace:planck_units +eV units_and_constants.h /^ const double eV = 1.602176487e-19 * Joule; \/\/ electron Volt$/;" m namespace:cosmological_units +eV units_and_constants.h /^ const double eV = 1.602176487e-19 * Joule; \/\/ electron Volt$/;" m namespace:pkdgrav_units +ee2 euclidemu2.cpp /^ EuclidEmulator *ee2;$/;" m struct:__pyx_obj_10euclidemu2_PyEuclidEmulator file: +ee2_parser parse.cxx /^csmpars ee2_parser(int n_args, char * vec_args[]){$/;" f +encoding euclidemu2.cpp /^typedef struct {PyObject **p; const char *s; const Py_ssize_t n; const char* encoding;$/;" m struct:__anon5 file: +entries euclidemu2.cpp /^ __Pyx_CodeObjectCacheEntry* entries;$/;" m struct:__Pyx_CodeObjectCache file: +extract_value parse.cxx /^double extract_value(std::string line){$/;" f +get_boost euclidemu2.pyx /^def get_boost(cosmo_par_in,redshifts,custom_kvec=None):$/;" f +get_plin euclidemu2.pyx /^def get_plin(emu_pars_dict, custom_kvec, redshifts):$/;" f +get_pnonlin euclidemu2.pyx /^def get_pnonlin(emu_pars_dict, redshifts, custom_kvec=None):$/;" f +gsl_wsp cosmo.h /^ gsl_integration_workspace *gsl_wsp;$/;" m class:Cosmology +h parse.h /^ std::vector h;$/;" m struct:csmpars +hbar units_and_constants.h /^ const double hbar = 1.0; \/\/ reduced Planck constant$/;" m namespace:planck_units +hbar units_and_constants.h /^ const double hbar = 6.62606896e-34\/(2*M_PI) * Joule * second; \/\/ reduced Planck constant$/;" m namespace:SI_units +hbar units_and_constants.h /^ const double hbar = 1.0; \/\/ reduced Planck constant$/;" m namespace:cosmological_units +hbar units_and_constants.h /^ const double hbar = 1.0; \/\/ reduced Planck constant$/;" m namespace:pkdgrav_units +initeuclidemu2 euclidemu2.cpp /^__Pyx_PyMODINIT_FUNC initeuclidemu2(void)$/;" f +intern euclidemu2.cpp /^ const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry;$/;" m struct:__anon5 file: +is_str euclidemu2.cpp /^ const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry;$/;" m struct:__anon5 file: +is_unicode euclidemu2.cpp /^ const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry;$/;" m struct:__anon5 file: +isoprob_tf cosmo.cxx /^void Cosmology::isoprob_tf(){$/;" f class:Cosmology +kB units_and_constants.h /^ const double kB = 1.0; \/\/ Boltzmann constant$/;" m namespace:planck_units +kB units_and_constants.h /^ const double kB = 1.3806504e-23 * Joule\/Kelvin; \/\/ Boltzmann constant$/;" m namespace:SI_units +kB units_and_constants.h /^ const double kB = 1.0; \/\/ Boltzmann constant$/;" m namespace:cosmological_units +kB units_and_constants.h /^ const double kB = 1.0; \/\/ Boltzmann constant$/;" m namespace:pkdgrav_units +kilogram units_and_constants.h /^ const double kilogram = 1.0; \/\/ in kilogram$/;" m namespace:SI_units +kilogram units_and_constants.h /^ const double kilogram = 1.0\/(2.176434e-8); \/\/ in planck mass$/;" m namespace:planck_units +kilogram units_and_constants.h /^ const double kilogram = 1.0\/(2.176434e-8); \/\/ in planck mass$/;" m namespace:cosmological_units +kilogram units_and_constants.h /^ const double kilogram = 1.0\/(2.176434e-8); \/\/ in planck mass$/;" m namespace:pkdgrav_units +kilometer units_and_constants.h /^ const double kilometer = 1000 * meter;$/;" m namespace:SI_units +kvec emulator.h /^ double kvec[613];$/;" m class:EuclidEmulator +kvec euclidemu2.pyx /^ def kvec(self):$/;" m class:PyEuclidEmulator +kvec euclidemu2.pyx /^ def kvec(self, kvec):$/;" m class:PyEuclidEmulator +lazyEuclidEmulator emulator_c_connector.c /^void lazyEuclidEmulator() {$/;" f +likely euclidemu2.cpp 852;" d file: +likely euclidemu2.cpp 855;" d file: +lmax emulator.h /^ const int lmax;$/;" m class:EuclidEmulator +logk2pc_acc emulator.h /^ gsl_interp_accel * logk2pc_acc[15];$/;" m class:EuclidEmulator +logklogz2pc_spline emulator.h /^ gsl_spline2d * logklogz2pc_spline[15];$/;" m class:EuclidEmulator +logz2pc_acc emulator.h /^ gsl_interp_accel * logz2pc_acc[15];$/;" m class:EuclidEmulator +ltrim parse.cxx /^std::string ltrim(const std::string& s) {$/;" f +main main.cxx /^int main(int argc, char *argv[]) {$/;" f +max_count euclidemu2.cpp /^ int max_count;$/;" m struct:__Pyx_CodeObjectCache file: +maxima cosmo.h /^ const double maxima[8] = {0.06, 0.40, 0.15, 1.00, 0.73, -0.7, 0.7, 2.5e-9};$/;" m class:Cosmology +meter units_and_constants.h /^ const double meter = 1.0; \/\/ in meters$/;" m namespace:SI_units +meter units_and_constants.h /^ const double meter = 1.0\/(1.616255e-35); \/\/ in planck length$/;" m namespace:planck_units +meter units_and_constants.h /^ const double meter = 1.0\/(1.616255e-35); \/\/ in planck length$/;" m namespace:cosmological_units +meter units_and_constants.h /^ const double meter = 1.0\/(1.616255e-35); \/\/ in planck length$/;" m namespace:pkdgrav_units +minima cosmo.h /^ const double minima[8] = {0.04, 0.24, 0.00, 0.92, 0.61, -1.3, -0.7, 1.7e-9};$/;" m class:Cosmology +mnu_i cosmo.h /^ double mnu_i;$/;" m struct:Cosmology::__anon1 +n euclidemu2.cpp /^typedef struct {PyObject **p; const char *s; const Py_ssize_t n; const char* encoding;$/;" m struct:__anon5 file: +nSteps cosmo.h /^ const int nSteps, nTable; $/;" m class:Cosmology +nTable cosmo.h /^ const int nSteps, nTable; $/;" m class:Cosmology +n_coeffs emulator.h /^ const int n_coeffs[14];$/;" m class:EuclidEmulator +n_redshift parse.h /^ std::vector n_redshift;$/;" m struct:csmpars +n_s parse.h /^ std::vector n_s;$/;" m struct:csmpars +nk emulator.h /^ const int nk; \/\/ number of k modes in training data$/;" m class:EuclidEmulator +nz emulator.h /^ const int nz; \/\/ number of redshifts in the training data$/;" m class:EuclidEmulator +offsetof euclidemu2.cpp 49;" d file: +operator != euclidemu2.cpp /^ template bool operator !=(U other) { return *ptr != other; }$/;" f class:__Pyx_FakeReference +operator & euclidemu2.cpp /^ T *operator&() { return ptr; }$/;" f class:__Pyx_FakeReference +operator -> euclidemu2.cpp /^ T *operator->() { return ptr; }$/;" f class:__Pyx_FakeReference +operator == euclidemu2.cpp /^ template bool operator ==(U other) { return *ptr == other; }$/;" f class:__Pyx_FakeReference +operator T& euclidemu2.cpp /^ operator T&() { return *ptr; }$/;" f class:__Pyx_FakeReference +outdir parse.h /^ std::string outdir;$/;" m struct:csmpars +outfilename parse.h /^ std::string outfilename;$/;" m struct:csmpars +p euclidemu2.cpp /^typedef struct {PyObject **p; const char *s; const Py_ssize_t n; const char* encoding;$/;" m struct:__anon5 file: +pc emulator.h /^ double * pc[15]; \/\/ principal components$/;" m class:EuclidEmulator +pc_2d_interp emulator.cxx /^void EuclidEmulator::pc_2d_interp(){$/;" f class:EuclidEmulator +pc_weights emulator.h /^ double pc_weights[14]; \/\/ PCA weights$/;" m class:EuclidEmulator +pce_basisfuncs emulator.h /^ double * pce_basisfuncs; \/\/ multivariate legendre polynomials$/;" m class:EuclidEmulator +pce_coeffs emulator.h /^ double * pce_coeffs[14]; \/\/ PCE coefficients$/;" m class:EuclidEmulator +pce_multiindex emulator.h /^ double * pce_multiindex[14]; \/\/ PCE multi-indices$/;" m class:EuclidEmulator +pkdgrav_units units_and_constants.h /^namespace pkdgrav_units{$/;" n +planck_units units_and_constants.h /^namespace planck_units{$/;" n +print_cosmo cosmo.cxx /^void Cosmology::print_cosmo(){$/;" f class:Cosmology +print_cosmo_tf cosmo.cxx /^void Cosmology::print_cosmo_tf(){$/;" f class:Cosmology +print_info emulator.cxx /^void EuclidEmulator::print_info(){$/;" f class:EuclidEmulator +ptr euclidemu2.cpp /^ T *ptr;$/;" m class:__Pyx_FakeReference file: +read_cambfile parse.cxx /^void read_cambfile(std::string camb_file_name, csmpars &CSM){$/;" f +read_classfile parse.cxx /^void read_classfile(std::string class_file_name, csmpars &CSM){$/;" f +read_cosmo_from_cmdline parse.cxx /^void read_cosmo_from_cmdline(cxxopts::ParseResult result, csmpars &CSM){$/;" f +read_from_file cosmo.cxx /^void read_from_file(char *filename){}$/;" f +read_in_ee2_data_file emulator.cxx /^void EuclidEmulator::read_in_ee2_data_file(){$/;" f class:EuclidEmulator +read_parfile parse.cxx /^void read_parfile(std::string par_file_name, csmpars &CSM){$/;" f +removeblanks parse.cxx /^std::string removeblanks(const std::string& s) {$/;" f +rho_crit cosmo.h /^ double Omega_gamma_0, Omega_nu_0, Omega_DE_0, rho_crit, T_gamma_0, T_nu_0;$/;" m class:Cosmology +rho_crit_over_h2 units_and_constants.h /^ const double rho_crit_over_h2 = 2.77536627e11 * Msol\/pow(Mpc,3); \/\/ critical density of the Universe$/;" m namespace:SI_units +rho_crit_over_h2 units_and_constants.h /^ const double rho_crit_over_h2 = 2.77536627e11 * Msol\/pow(Mpc,3); \/\/ critical density of the Universe$/;" m namespace:planck_units +rho_crit_over_h2 units_and_constants.h /^ const double rho_crit_over_h2 = 2.77536627e11 * Msol\/pow(Mpc,3); \/\/ critical density of the Universe$/;" m namespace:cosmological_units +rho_crit_over_h2 units_and_constants.h /^ const double rho_crit_over_h2 = 2.77536627e11 * Msol\/pow(Mpc,3); \/\/ critical density of the Universe$/;" m namespace:pkdgrav_units +rho_nu_i_integrand cosmo.cxx /^double Cosmology::rho_nu_i_integrand(double p, void * params){$/;" f class:Cosmology +rho_nu_parameters cosmo.h /^ } rho_nu_parameters;$/;" t class:Cosmology typeref:struct:Cosmology::__anon1 +rtrim parse.cxx /^std::string rtrim(const std::string& s) {$/;" f +s euclidemu2.cpp /^typedef struct {PyObject **p; const char *s; const Py_ssize_t n; const char* encoding;$/;" m struct:__anon5 file: +second units_and_constants.h /^ const double second = 1.0; \/\/ in seconds$/;" m namespace:SI_units +second units_and_constants.h /^ const double second = 1.0\/(5.391247e-44); \/\/ in planck times$/;" m namespace:planck_units +second units_and_constants.h /^ const double second = 1.0\/(5.391247e-44); \/\/ in planck times$/;" m namespace:cosmological_units +second units_and_constants.h /^ const double second = 1.0\/(5.391247e-44); \/\/ in planck times$/;" m namespace:pkdgrav_units +starts_with parse.cxx /^bool starts_with(std::string str1, std::string str2){$/;" f +t0 cosmo.h /^ double t0, t10, Delta_t, Neff, H0;$/;" m class:Cosmology +t10 cosmo.h /^ double t0, t10, Delta_t, Neff, H0;$/;" m class:Cosmology +trim parse.cxx /^std::string trim(const std::string& s) {$/;" f +uint32_t euclidemu2.cpp /^ typedef unsigned __int32 uint32_t;$/;" t file: +uint32_t euclidemu2.cpp /^ typedef unsigned int uint32_t;$/;" t file: +uint8_t euclidemu2.cpp /^ typedef unsigned __int8 uint8_t;$/;" t file: +uint8_t euclidemu2.cpp /^ typedef unsigned char uint8_t;$/;" t file: +univ_legendre emulator.h /^ double * univ_legendre[8]; \/\/ univariate legendre polynomials$/;" m class:EuclidEmulator +unlikely euclidemu2.cpp 853;" d file: +unlikely euclidemu2.cpp 856;" d file: +verbosity_level parse.h /^ int verbosity_level;$/;" m struct:csmpars +w_0 parse.h /^ std::vector w_0;$/;" m struct:csmpars +w_a parse.h /^ std::vector w_a;$/;" m struct:csmpars +write_nlc2file emulator.cxx /^void EuclidEmulator::write_nlc2file(const string& filename, vector zvec, int n_redshift){$/;" f class:EuclidEmulator +write_nlc2file euclidemu2.pyx /^ def write_nlc2file(self,filename, zvec, n_redshift):$/;" m class:PyEuclidEmulator +z2nStep_spline cosmo.h /^ gsl_spline *z2nStep_spline;$/;" m class:Cosmology +zvec parse.h /^ std::vector< std::vector > zvec;$/;" m struct:csmpars +~EuclidEmulator emulator.cxx /^EuclidEmulator::~EuclidEmulator(){$/;" f class:EuclidEmulator diff --git a/EuclidEmulator2/src/units_and_constants.h b/EuclidEmulator2/src/units_and_constants.h new file mode 100644 index 00000000..9f808b02 --- /dev/null +++ b/EuclidEmulator2/src/units_and_constants.h @@ -0,0 +1,125 @@ +/* units_and_constants.h +* ===================== +* This file is part of EuclidEmulator2 +* Copyright (c) 2020 Mischa Knabenhans +* +* EuclidEmulator2 is free software: you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* EuclidEmulator2 is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*/ + +#ifndef UNITS_AND_CONSTANTS +#define UNITS_AND_CONSTANTS +#include + +namespace SI_units{ + // Base units + const double second = 1.0; // in seconds + const double meter = 1.0; // in meters + const double kilogram = 1.0; // in kilogram + const double Kelvin = 1.0; // in Kelvin + + // derived units + const double kilometer = 1000 * meter; + const double Joule = kilogram * pow(meter,2)/pow(second,2); // Joule + const double Mpc = 3.085677581282e22 * meter; // megaparsec + const double Msol = 1.98841e30 *kilogram; // solar kilogram + + // units constant + const double c = 2.99792458e8 * meter/second; // speed of light + const double G = 6.67428e-11 * pow(meter,3)/(kilogram*pow(second,2)); // Newton's constant of gravity + const double kB = 1.3806504e-23 * Joule/Kelvin; // Boltzmann constant + const double eV = 1.602176487e-19 * Joule; // electron Volt + const double hbar = 6.62606896e-34/(2*M_PI) * Joule * second; // reduced Planck constant + const double rho_crit_over_h2 = 2.77536627e11 * Msol/pow(Mpc,3); // critical density of the Universe + + // Constants and specifications of the training simulations + const double Lbox = 1000 * Mpc; + const double Tgamma = 2.7255 * Kelvin; +}; + +namespace planck_units{ + // Base units + const double second = 1.0/(5.391247e-44); // in planck times + const double meter = 1.0/(1.616255e-35); // in planck length + const double kilogram = 1.0/(2.176434e-8); // in planck mass + const double Kelvin = 1.0/(1.416785e32); // in planck temperature + + // derived units + const double Joule = kilogram * pow(meter,2)/pow(second,2); // in planckian energy units + const double Mpc = 3.085677581282e22 * meter; // in planck lengths + const double Msol = 1.98841e30 * kilogram; // solar mass in planck masses + + // natural constant + const double c = 1.0; // speed of light + const double G = 1.0; // Newton's constant of gravity + const double kB = 1.0; // Boltzmann constant + const double eV = 1.602176487e-19 * Joule; // electron Volt + const double hbar = 1.0; // reduced Planck constant + const double rho_crit_over_h2 = 2.77536627e11 * Msol/pow(Mpc,3); // critical density of the Universe + + // Constants and specifications of the training simulations + const double Lbox = 1000 * Mpc; + const double Tgamma = 2.7255 * Kelvin; +}; + +namespace pkdgrav_units{ + // Base units + const double second = 1.0/(5.391247e-44); // in planck times + const double meter = 1.0/(1.616255e-35); // in planck length + const double kilogram = 1.0/(2.176434e-8); // in planck mass + const double Kelvin = 1.0/(1.416785e32); // in planck temperature + + // derived units + const double Joule = kilogram * pow(meter,2)/pow(second,2); // in planckian energy units + const double Mpc = 3.085677581282e22 * meter; // in planck lengths + const double Msol = 1.98841e30 * kilogram; // solar mass in planck masses + + // natural constant + const double c = 1.0; // speed of light + const double G = 1.0; // Newton's constant of gravity + const double kB = 1.0; // Boltzmann constant + const double eV = 1.602176487e-19 * Joule; // electron Volt + const double hbar = 1.0; // reduced Planck constant + const double rho_crit_over_h2 = 2.77536627e11 * Msol/pow(Mpc,3); // critical density of the Universe + + // Constants and specifications of the training simulations + const double Lbox = 1000 * Mpc; + const double Tgamma = 2.7255 * Kelvin; +}; + +namespace cosmological_units{ + // Base units + const double second = 1.0/(5.391247e-44); // in planck times + const double meter = 1.0/(1.616255e-35); // in planck length + const double kilogram = 1.0/(2.176434e-8); // in planck mass + const double Kelvin = 1.0/(1.416785e32); // in planck temperature + + // derived units + const double Joule = kilogram * pow(meter,2)/pow(second,2); // in planckian energy units + const double Mpc = 3.085677581282e22 * meter; // in planck lengths + const double Msol = 1.98841e30 * kilogram; // solar mass in planck masses + + // natural constant + const double c = 1.0; // speed of light + const double G = 1.0; // Newton's constant of gravity + const double kB = 1.0; // Boltzmann constant + const double eV = 1.602176487e-19 * Joule; // electron Volt + const double hbar = 1.0; // reduced Planck constant + const double rho_crit_over_h2 = 2.77536627e11 * Msol/pow(Mpc,3); // critical density of the Universe + + // Constants and specifications of the training simulations + const double Lbox = 1000 * Mpc; + const double Tgamma = 2.7255 * Kelvin; +}; + +#endif diff --git a/EuclidEmulator2/test_euclid_emu2.ipynb b/EuclidEmulator2/test_euclid_emu2.ipynb new file mode 100644 index 00000000..81185f96 --- /dev/null +++ b/EuclidEmulator2/test_euclid_emu2.ipynb @@ -0,0 +1,259 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import euclidemu2 as ee2\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "import scipy, scipy.interpolate" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "# Set plotting and printing options (may result in errors if latex is not installed)\n", + "%matplotlib inline\n", + "\n", + "font = {'size' : 16, 'family':'STIXGeneral'}\n", + "axislabelfontsize='x-large'\n", + "plt.rc('font', **font)\n", + "plt.rcParams['text.usetex'] = True\n", + "\n", + "np.set_printoptions(precision=3,linewidth=200,suppress=False)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "# Input parameter dictionary \n", + "#\n", + "# Accepts multiple formats such as CLASS par dictionary\n", + "# Accepts both Omega_x or omega_x = Omega_x*h^2 depending on capitalization of O\n", + "# Requires at least 5 parameters (As, ns, Omb, Omm, h)\n", + "# Other parameters (mnu,w,wa) will be set to LCDM values if not specified\n", + "# Additional parameters will be ignored.\n", + "\n", + "cosmo_par={'As':2.1e-09,\n", + " 'ns':0.966,\n", + " 'Omb':0.04,\n", + " 'Omm':0.3,\n", + " 'h':0.68,\n", + " 'mnu':0.15,\n", + " 'w':-1.0,\n", + " 'wa':0.0}\n", + "\n", + "#Array with chosen redshifts (between 0 and 10)\n", + "redshifts=[0,2,4,6,8,10]\n", + "\n", + "# Standard call of the main function with default k-range\n", + "#\n", + "# Always returns a numpy array for k and a dict for b indexed with an\n", + "# integer corresponding to the position in the redshifts array.\n", + "# Each element of the dictionary in b is a numpy array with the boost\n", + "\n", + "k, b = ee2.get_boost(cosmo_par,redshifts)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "for i in range(len(redshifts)):\n", + " plt.loglog(k,b[i],label=\"z=\"+str(redshifts[i]))\n", + "\n", + "plt.xlabel(r'$k\\ [h/\\rm{Mpc}]$'); plt.ylabel('boost')\n", + "plt.legend()" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Warning:\n", + "EuclidEmulator2 emulates the non-linear correction in \n", + "the interval [8.73e-3 h/Mpc, 9.41h/Mpc]. You are \n", + "requesting k modes beyond k_max = 9.41h/Mpc. \n", + "Higher k modes constantly extrapolated.\n", + "Warning:\n", + "EuclidEmulator2 emulates the non-linear correction in \n", + "the interval [8.73e-3 h/Mpc, 9.41h/Mpc]. You are \n", + "requesting k modes below k_min = 8.73e-3 h/Mpc. \n", + "Lower k modes constantly extrapolated.\n" + ] + } + ], + "source": [ + "#Call with custom k-range with extrapolation (Warnings are to be expected when outside the default range)\n", + "\n", + "k_custom=np.geomspace(1e-4,100,1000)\n", + "\n", + "k2, b2 = ee2.get_boost(cosmo_par,redshifts,k_custom)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "for i in range(len(redshifts)):\n", + " plt.loglog(k2,b2[i],label=\"z=\"+str(redshifts[i]))\n", + "\n", + "plt.xlabel(r'$k\\ [h/\\rm{Mpc}]$'); plt.ylabel('boost')\n", + "plt.legend()" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Warning:\n", + "EuclidEmulator2 emulates the non-linear correction in \n", + "the interval [8.73e-3 h/Mpc, 9.41h/Mpc]. You are \n", + "requesting k modes beyond k_max = 9.41h/Mpc. \n", + "Higher k modes constantly extrapolated.\n", + "Warning:\n", + "EuclidEmulator2 emulates the non-linear correction in \n", + "the interval [8.73e-3 h/Mpc, 9.41h/Mpc]. You are \n", + "requesting k modes below k_min = 8.73e-3 h/Mpc. \n", + "Lower k modes constantly extrapolated.\n" + ] + } + ], + "source": [ + "# Get the non-linear power spectrum\n", + "#\n", + "# Always returns a numpy array for k and dicts for pnl, plin and b\n", + "\n", + "k,pnl,plin,b=ee2.get_pnonlin(cosmo_par, redshifts,k_custom)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "# Plotting just z=0 to simplify figure\n", + "\n", + "plt.loglog(k,pnl[0],label=r'$P_{NL}$')\n", + "plt.loglog(k,plin[0],label=r'$P_L$')\n", + "\n", + "plt.xlabel(r'$k\\ [h/\\rm{Mpc}]$'); plt.ylabel(r'$P(k)$')\n", + "plt.legend()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.8" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/EuclidEmulator2/tests/CAMB_parfile.ini b/EuclidEmulator2/tests/CAMB_parfile.ini new file mode 100644 index 00000000..19f22e81 --- /dev/null +++ b/EuclidEmulator2/tests/CAMB_parfile.ini @@ -0,0 +1,80 @@ +output_root = camb_example +get_scalar_cls = T +get_vector_cls = F +get_tensor_cls = F +CMB_outputscale = 7.42835025e12 +get_transfer = T +accuracy_boost = 1 +l_accuracy_boost = 1 +high_accuracy_default = T +do_nonlinear = 0 +l_max_scalar = 2200 +k_eta_max_scalar = 4400.00000000000 +do_lensing = F +w = -1 +cs2_lam = 1 +hubble = 67 +use_physical = T +ombh2 = 0.0226 +omch2 = 0.112 +omnuh2 = 0.001056601911 +omk = 0 +temp_cmb = 2.7255 +helium_fraction = 0.24 +massless_neutrinos = 3.046 +nu_mass_eigenstates = 1 +massive_neutrinos = 0 +transfer_high_precision = F +transfer_kmax = 2 +transfer_k_per_logint = 25 +transfer_num_redshifts = 1 +transfer_interp_matterpower = T +transfer_power_var = 7 +transfer_redshift(1) = 0 +transfer_filename(1) = transfer_out.dat +transfer_matterpower(1) = my_matterpower_now.dat +DebugParam = 0.000000000000000E+000 +Alens = 1.00000000000000 +reionization = T +re_use_optical_depth = T +re_optical_depth = 0.09 +re_delta_redshift = 1.5 +re_ionization_frac = -1 +re_helium_redshift = 3.5 +re_helium_delta_redshift = 0.5 +re_helium_redshiftstart = 5.00000000000000 +pivot_scalar = 0.05 +pivot_tensor = 0.05 +initial_power_num = 1 +scalar_spectral_index(1) = 0.96 +scalar_nrun(1) = 0 +scalar_nrunrun(1) = 0 +scalar_amp(1) = 2.1e-9 +RECFAST_fudge_He = 0.86 +RECFAST_Heswitch = 6 +RECFAST_Hswitch = T +RECFAST_fudge = 1.14 +AGauss1 = -0.140000000000000 +AGauss2 = 7.900000000000000E-002 +zGauss1 = 7.28000000000000 +zGauss2 = 6.73000000000000 +wGauss1 = 0.180000000000000 +wGauss2 = 0.330000000000000 +do_lensing_bispectrum = F +do_primordial_bispectrum = F +initial_condition = 1 +scalar_output_file = scalCls.dat +lensed_output_file = lensedCls.dat +lens_potential_output_file = lenspotentialCls.dat +accurate_polarization = T +accurate_reionization = T +accurate_BB = F +derived_parameters = T +version_check = Jan17 +do_late_rad_truncation = T +feedback_level = 1 +output_file_headers = T +massive_nu_approx = 1 +number_of_threads = 0 +use_spline_template = T +l_sample_boost = 1 diff --git a/EuclidEmulator2/tests/CLASS_parfile.ini b/EuclidEmulator2/tests/CLASS_parfile.ini new file mode 100644 index 00000000..6ef790e0 --- /dev/null +++ b/EuclidEmulator2/tests/CLASS_parfile.ini @@ -0,0 +1,20 @@ +Omega_cdm = 0.269962 +omega_b = 0.0219961 +n_s = 0.96 +h = 0.67 +Omega_Lambda = 0.0 +w0_fld = -1 +A_s = 2.1e-09 +output = dTk +non linear = Halofit +format = camb +m_ncdm = 0.03, 0.03, 0.03 +root = class_example. +P_k_max_h/Mpc = 10. +k_per_decade_for_pk = 300. +z_pk = 0.0, 10.0, 1.0, 2.0, 5.0 +input_verbose = 1 +background_verbose = 1 +transfer_verbose = 1 +spectra_verbose = 1 +output_verbose = 1 diff --git a/EuclidEmulator2/tests/ee2_parfile.par b/EuclidEmulator2/tests/ee2_parfile.par new file mode 100644 index 00000000..925ea604 --- /dev/null +++ b/EuclidEmulator2/tests/ee2_parfile.par @@ -0,0 +1,25 @@ +# This is a parameter file for EuclidEmulator2 +# ******************************************** +# The structure of this file is quite flexible. The following conditions must however be met: +# - the order of the parameters must be as indicated below, +# - it is assumed that all values after A_s are redshift values, +# - the values must be separated by a comma (,), +# - there must not be any comment (#) lines apart from this first block of comments. +# +# Further: +# - you may remove parts or all of this comment block, +# - the number of whitespaces after each comma is arbitrary (no whitespaces at all +# is also allowed), +# - the whitespace characters may be blanks, tabs or a mix of the two +# - you may use scientific notation for the numbers (but you don't have to), +# - you may put an arbitrary number of redshift values. +# +# Below you can find three different example formats that EuclidEmulator2 can understand. +# +#=============================================================================================== +#Omega_b, Omega_m, Sum m_nu, n_s, h, w_0, w_a, A_s, z1, z2, z3, ... +#------------------------------------------------------------------------------------------------ +4.186e-2, 2.889e-1, 3.876e-2, 9.947e-1, 6.113e-1, -7.079e-1, -2.204e-1, 2.438e-9, 0.0 +0.045, 0.319, 0.059, 0.96, 0.67, -1.0, 0.0, 2.1e-9, 0.0, 0.1, 0.25, 0.5, 0.9, 1.0, 2.0, 3.0, 5.0, 10.0 +0.05,0.3,0.1,0.96,0.72,-1.25,0.5,2e-9,1 +0.05, 0.3, 0.1, 0.96, 0.72, -1.25, 0.5, 2e-9, 1, 0, 3 diff --git a/EuclidEmulator2/tests/run_test.sh b/EuclidEmulator2/tests/run_test.sh new file mode 100755 index 00000000..09c0a3a0 --- /dev/null +++ b/EuclidEmulator2/tests/run_test.sh @@ -0,0 +1,33 @@ +# Test script for EuclidEmulator2 +# =============================== +# This file is part of EuclidEmulator2 +# Copyright (c) 2020 Mischa Knabenhans +# +# EuclidEmulator2 is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# EuclidEmulator2 is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +#!/bin/bash +./ee2.exe -b 4.18613219e-2\ + -m 2.88868201e-1\ + -s 3.87617426E-2\ + -n 9.94669748e-1\ + -H 6.11313591e-1\ + -W -7.07891438e-1\ + -w -2.20396591e-1\ + -A 2.43811423e-9\ + -z 0.0 -z 0.1081179 -z 0.4880429 -z 1.010451 -z 1.998261 -z 3.035232 -z 5.255458 -z 10.0\ + -o cmd_input_test + +./ee2.exe -p tests/ee2_parfile.par -o from_ee2_parfile +./ee2.exe -i tests/CAMB_parfile.ini -d results -t CAMB +./ee2.exe -i tests/CLASS_parfile.ini -d results -t CLASS diff --git a/class/.explanatory.ini.swp b/class/.explanatory.ini.swp new file mode 100644 index 00000000..7cc575cb Binary files /dev/null and b/class/.explanatory.ini.swp differ diff --git a/class/.gitignore b/class/.gitignore new file mode 100644 index 00000000..bf5fbf37 --- /dev/null +++ b/class/.gitignore @@ -0,0 +1,16 @@ +output/ +*~ +build/ +class +*.prof +*.ini +libclass.a +*out +python/classy.c +*.pyc +python/build/ +*.dSYM +RealSpaceInterface/cache/ +.DS_Store +doc/manual/html +doc/manual/latex diff --git a/class/CPU b/class/CPU new file mode 100755 index 00000000..d12c8e54 --- /dev/null +++ b/class/CPU @@ -0,0 +1,427 @@ +################################################################### +# +# CPU, a CLASS Plotting Utility +# v1.3 +# Benjamin Audren, 07.11.2011 +# +# This is a small python program aimed to gain time when comparing two +# spectra, i.e. from CAMB and CLASS, or a non-linear spectrum to a +# linear one. It is designed to be used in a command line fashion, not +# being restricted to your CLASS directory, though it recognized mainly +# CLASS output format. Far from perfect, or complete, it could use any +# suggestion for enhancing it, just to avoid losing time on useless +# matters for others. Be warned that, when comparing with other +# format, the following is assumed: there are no empty line (especially +# at the end of file). Gnuplot comment lines (starting with a # are +# allowed). This issue will cause a non-very descriptive error in CPU, +# any suggestion for testing it is welcome. Example of use: To +# superimpose two different spectra and see their global shape : python +# CPU output/lcdm_z2_pk.dat output/lncdm_z2_pk.dat To precisely compare +# the non-linear contribution of one-loop w.r.t. to TRG method: python +# CPU -i output/lcdm_1l_z1_pk.dat output/lcdm_1l_z1_pk_nl_density.dat +# output/lcdm_trg_pk_nl_density.dat The documentation available with +# --help should cover any question. +################################################################### + +from scipy import * +from scipy import interpolate +import numpy as np +import os,sys,string,io,subprocess +import argparse + +# parser for input arguments + +parser = argparse.ArgumentParser(description='CPU, a CLASS Plotting Utility, specify wether you want to superimpose, divide or interpolate different files, and behold!', + epilog='''A standard usage would be, for instance : + python CPU output/test_1l_pk.dat output/test_1l_pk_nl_density.dat -i 0 + python CPU output/wmap_cl.dat output/planck_cl.dat''', +formatter_class=argparse.RawDescriptionHelpFormatter) +parser.add_argument('files', metavar='Files', + type=str, nargs='*', + help='the relative path of the desired file to plot\nfrom the root directory of CLASS') +parser.add_argument('-d, --divide', + dest='merging',action='store_const',const='blend_against',default='blend_together', + help='divide the spectra from different files. The k-values must be strictly identical (default: plot every graph on the same plot)') +parser.add_argument('-i, --interpolate',metavar='index', + nargs='?',dest='interp',const=True,default=False, + help='interpolate the spectra on each set of k-values if different. Use to compare two (or more) graphs with different k-values. If nothing more is specified, it will plot both index in gnuplot. Otherwise, just add -i 0 to plot only the first one.') +parser.add_argument('-t', metavar='pk, cl_lin,etc...', + help='specify the file type (whether pk or cl (if not specified, cl==cl_lin, other choices are cl_log and cl_ll for log linear), only needed if your file name does not already contain one of these keywords...') +parser.add_argument('-colnum',metavar='2, 3, ...', + help='specify the column you want to plot. By default, column is 2: you are plotting TT spectrum') +parser.add_argument('-x, --x11',metavar='gnuplot terminal', + dest='term',action='store_const',const='x11',default='aqua', + help='if your version of gnuplot does not support the aqua terminal, it will pick instead the x11 one, for crappier displays') +parser.add_argument('-p, --print', + dest='printfile',action='store_true',default=False, + help='print the graph directly in a .png file') +parser.add_argument('-r, --repeat', + dest='repeat',action='store_true',default=False, + help='repeat the step for all redshifts with same base name, whatever the desired action') +parser.add_argument('-c, --cleaning',metavar='path', + nargs='?',dest='cleaning',const=True,default=False, + help='remove all .plt files in the current directory (if none specified) : keep your folders clean !') + +# Remove all .plt, interp and divided files generated in output/ +# By default, will clean current directory. + +def clean(path): + pattern1,pattern2,pattern3='.plt','_interp.dat','_divided.dat' + path+="/" + print 'Cleaning {0} directory from .plt files ...'.format(path) + i=0 + for each in os.listdir(path): + if ( (each.rfind(pattern1)!=-1) or (each.rfind(pattern2)!=-1) or (each.rfind(pattern3)!=-1) ): + name= "{0}{1}".format(path,each) + print ' deleting {0}'.format(name) + if os.remove(name)!= None: + break + i+=1 + if i==0: + print ' ==> Already as clean as possible' + else: + print ' ==> Done' + +# Errors ########################### +def error_format(): + print " Hum... have you really provided a .dat file ?" + print " We apologise for the inconvenience, but CPU is exiting now" + exit() + +def error_type(): + print " Spectrum type unrecognized or unsupported yet, sorry!" + print " Please try the -t command in addition to your previous call" + print " We apologise for the inconvenience" + exit() + +def error_number_of_files(): + print " You specified a wrong number of files for the operation you demanded, maybe you do not want to divide only one file, for instance ?" + print " We apologise for the inconvenience" + exit() +#################################### + +# Subfunction called to write on the gnuplot script file the proper file names. + +def printstring(names): + print_file=names[0].rstrip(".dat") + print_file+=".ps" + print_string="set terminal po enhanced color\nset output '{0}'\nreplot".format(print_file) + print '{0} has been generated'.format(print_file) + return print_string + +# Subfunction called to write the most of the gnuplot script file according to options. + +def headers_plot_file(spectrum_type,names,plot_line,term): + tmp=open(names[0],"r") + + # printing option + if ((args.printfile is True) and (plot_line is not False)): + print_string=printstring(names) + else: + print_string="" + + # for interpolation: index choice option + if plot_line is True: + if args.interp is not True: + if args.interp is not False: + index_string=" index {0} ".format(args.interp) + else: + index_string=" " + else: + index_string=" " + + # if args colnum not specified, put it to 2, + if args.colnum is None: + args.colnum=2 + + + if spectrum_type=='cl_lin': + if plot_line is True: + plot_string="plot " + for name in names: + plot_string+="'{0}'".format(name)+"{0}u 1:{1} w l,".format(index_string,args.colnum) + plot_string=plot_string.rstrip(",") + plot_string+="\n" + else: + plot_string='' + return "set terminal {0} enhanced\n".format(term)+"set xlabel 'l'\nset ylabel 'l(l+1)C_l / 2{/Symbol p}'\nset xr [2:]\nset format y '%.0t*10^{%T}'\nset key right\nset title 'CLASS output'\n"+plot_string+print_string + elif spectrum_type=='cl_log': + for line in tmp: + if line.rfind('multipoles')!=-1: + lmax= line.split(None)[-1] + break + if plot_line is True: + plot_string="plot " + for name in names: + plot_string+="'{0}'".format(name)+"{0}u 1:{1} w l,".format(index_string,args.colnum) + plot_string=plot_string.rstrip(",") + plot_string+="\n" + else: + plot_string='' + return "set terminal {0} enhanced\n".format(term)+"set logscale x\nset xr [2:{0}]\n".format(lmax)+"set xlabel 'l'\nset format y '%.0t*10^{%T}'\n"+"set ylabel 'l(l+1)C_l / 2{/Symbol p}'\nset key left\nset title 'CLASS output'\n"+plot_string+print_string + elif spectrum_type=='cl_ll': + for line in tmp: + if line.rfind('multipoles')!=-1: + lmax= line.split()[-1] + break + if plot_line is True: + plot_string="plot " + for name in names: + plot_string+="'{0}'".format(name)+"{0}u (sqrt($1)):{1} w l,".format(index_string,args.colnum) + plot_string=plot_string.rstrip(",") + plot_string=plot_string+"\n" + else: + plot_string='' + return "set terminal {0} enhanced\n".format(term)+"set xlabel 'l'\nset ylabel 'l(l+1)C_l / 2{/Symbol p}'\nset key right\nset title 'CLASS output'\nset xtics ('2' (2),'100' (100), '500' (500), '1000' (1000), '1500' (1500), '2000' (2000),'2500' (2500))"+"\nset format y '%.0t*10^{%T}'\n"+"set xr [2:{0}]\n".format(lmax)+plot_string+print_string + elif spectrum_type=='pk': + if plot_line is True: + plot_string="plot " + for name in names: + plot_string+="'{0}'".format(name)+"{0}w l,".format(index_string) + plot_string=plot_string.rstrip(",") + plot_string+="\n" + else: + plot_string="" + for line in tmp: + if line.rfind('redshift')!=-1: + z= line.split("=")[1] + z= z.rstrip("\n") + break + else: + z= 'I have no idea' + return "set terminal {0} enhanced\n".format(term)+"set logscale\nset xlabel 'k (h/Mpc)'\nset ylabel 'P_k (Mpc/h)^3'\nset key right\nset title 'Power spectrum at z={0}'\n".format(z)+plot_string+print_string + else: + return None + tmp.close() + +# Print all asked files one next to the other (default operation if files with different k values) +def blend_together(names,spectrum_type,term): + gnuplot_file=names[0].replace(".dat",".plt") + if gnuplot_file==names[0]: + error_format() + print ' creating {0}'.format(gnuplot_file) + plotfile = open(gnuplot_file, "w") + plotfile.write(headers_plot_file(spectrum_type, names,True,term)) + plotfile.close() + _plot(gnuplot_file) + +# Print all asked files with respect to the same k (or anything) values, all y-data being divided by the y data of the first file. +# Only valid if the k values are exactly the same (values and number of values). +def blend_against(names,spectrum_type,term): + gnuplot_file=names[0].replace(".dat",".plt") + data_file=names[0].replace(".dat","_divided.dat") + if gnuplot_file==names[0]: + error_format() + print ' creating {0} and {1}'.format(gnuplot_file,data_file) + string=['' for rows in range(10000)] + imax=0 + datafile=open(data_file,"w") + for name in names: + i=0 + tmp=open(name,"r") + for line in tmp: + if ((line.find('#')==-1) and (line.rfind('000000')==-1)): + string[i]=string[i]+line.rstrip("\n")+"\t" + if i>imax: + imax=i + i+=1 + tmp.close() + for i in range(imax): + datafile.write(string[i]+"\n") + plotfile = open(gnuplot_file,"w") + plotfile.write(headers_plot_file(spectrum_type,names,False,term)) + plot_string='unset logscale\nplot ' + x_base=1 + field_base=2 + field=2 + size=len(names) + for i in range(size): + field+=2 + plot_string+="'{0}' u {1}:(${2}/${3}) w l,".format(data_file,x_base,field,field_base) + plot_string=plot_string.rstrip(',') + plot_string+="\n" + plotfile.write(plot_string) + plotfile.close() + datafile.close() + _plot(gnuplot_file) + +# If k values are different, an interpolation is done and outputs a data file. For a two files case: +# File 1 contains ( k1 | P1(k1) ), File 2 ( k2 | P2(k2) ). The data file created will contain: +# k1 | P1(k1) | P2(k1)_interp +#(blank space for gnuplot using index 0, etc) +# k2 | P1(k2)_interp | P2(k2) +def blend_against_interp(names,spectrum_type,term): + gnuplot_file=names[0].replace(".dat",".plt") + data_file=names[0].replace(".dat","_interp.dat") + if gnuplot_file==names[0]: + error_format() + print ' creating {0} and {1}'.format(gnuplot_file,data_file) + plotfile = open(gnuplot_file,"w") + l=0 + jmax=[0 for col in range(10)] + lmax=0 + kmax=10000000 + kmin=0 + spam = np.array([[[0 for col in range(10)] for row in range(10000)] for depth in range(2)],dtype=float) + for name in names: + currentfile = open(name,"r") + print ' reading {0}..'.format(name) + j=0 + for line in currentfile: + if (line.find('#')==-1): + line=line.split() + spam[0,j,l]=float(line[0]) + spam[1,j,l]=float(line[1]) + j+=1 + jmax[l]=j + if spam[0,jmax[l]-1,l]<=kmax: + kmax=spam[0,jmax[l]-1,l] + if spam[0,0,l]>=kmin: + kmin=spam[0,0,l] + l+=1 + currentfile.close() + lmax=l + lower_bound=[0 for col in range(10)] + upper_bound=[0 for col in range(10)] + #determining the upper and lower bound for each file, to only do interpolation + for l in range (lmax): + for j in range (jmax[l]): + if ((spam[0,j,l]=kmin)): + lower_bound[l]=j+1 + if (spam[0,j,l]<=kmax): + upper_bound[l]=j + print ' -> done' + + #creating the new data file + curves=[np.array for row in range(lmax)] + interpolated=[np.array for row in range(lmax)] + for l in range (lmax): + x=spam[0,lower_bound[l]:upper_bound[l],l] + y=spam[1,lower_bound[l]:upper_bound[l],l] + curves[l]=interpolate.splrep(x,y) + + datafile = open(data_file,"w") + for l in range (lmax): + for ll in range(lmax): + if ll==l: + interpolated[ll]=spam[1,lower_bound[l]:upper_bound[l],l] + else: + x2=spam[0,lower_bound[l]:upper_bound[l],l] + interpolated[ll]=interpolate.splev(x2,curves[ll],der=0) + for j in range(upper_bound[l]-lower_bound[l]-2): + data_string='' + for ll in range(lmax): + data_string=data_string+str((interpolated[ll])[j+1])+"\t" + datafile.write(str(spam[0,j+lower_bound[l]+1,l])+"\t"+data_string+"\n") + datafile.write("\n\n") + datafile.close() + + # if index chosen + if args.interp is not True: + index_string_interp=" index {0}".format(args.interp) + else: + index_string_interp="" + plotfile = open(gnuplot_file,"w") + plotfile.write(headers_plot_file(spectrum_type,names,False,term)) + plotfile.write("unset logscale \n") + if args.t in ['cl_log', 'pk']: + plotfile.write("set logscale x\n") + plotfile.write("set xr [{0}:{1}]\n".format(kmin,kmax)) + #plotfile.write("set yr [-0.001:0.005]\n") + plot_string="plot " + for l in range(lmax-1): + plot_string+="'{0}' {1} u 1:(${2}/$2-1) w l,".format(data_file,index_string_interp,l+3) + plot_string=plot_string.rstrip(",") + plot_string=plot_string+"\n" + plotfile.write(plot_string) + + if (args.printfile is True): + plotfile.write(printstring(names)) + + plotfile.close() + _plot(gnuplot_file) + +# Launch session of gnuplot with generated gnuplot script file +def _plot(gnuplot_file): + os.system("gnuplot -persist '{0}'".format(gnuplot_file)) + + +####################################################### +################## MAIN PART ########################## +####################################################### + +print '~~~ CPU, a CLASS Plotting Utility ~~~' +args = parser.parse_args() + +# check if the user want to clean its directory first +if args.cleaning is not False: + if args.cleaning is not True: + clean(args.cleaning) + else: + clean(os.getcwd()) + exit() + +# if there are no argument in the input, print usage +if len(args.files)==0: + parser.print_usage() + exit() + +# if the first file name contains cl or pk, infer the type of desired spectrum +if ((args.files[0].rfind('cl')!=-1) and (args.t is None)): + spectrum_type='cl_lin' + args.t = 'cl_lin' +elif args.files[0].rfind('pk')!=-1: + spectrum_type='pk' + args.t = 'pk' +elif args.t is not None: + spectrum_type=args.t +else: + error_type() + +# repeater +temp_path=args.files[0].split("/") +if len(temp_path)> 1: + path=temp_path[-2] +else: + path=os.getcwd() +list_file=['' for i in range(len(args.files)*10)] +if (temp_path[-1].rfind("z")!=-1 and args.repeat is True): + root_name=temp_path[-1].split("z")[-2] + for any in range (0,len(args.files)): + extension_name=args.files[any].split("/")[-1].split("_")[-1] + i=0 + for each in os.listdir(path): + if (("z" in each) and (each.split("z")[-2]==root_name) and (each.split("_")[-1]==extension_name)): + if len(temp_path)>1: + list_file[any+len(args.files)*i]=temp_path[-2]+"/"+each + else: + list_file[any+len(args.files)*i]=each + i+=1 + if args.repeat is True: + repeat_len=i-1 + else: + repeat_len=0 +else: + for any in range(0,len(args.files)): + list_file[any]=args.files[any] + repeat_len=0 + + +# actual computation +for i in range(0,repeat_len+1): + local_files=['' for k in range(len(args.files))] + for j in range(0,len(args.files)): + local_files[j]=list_file[j+len(args.files)*i] + if args.interp is False: + if args.merging=='blend_together': + blend_together(local_files,spectrum_type,args.term) + else: + if len(local_files)<2: + error_number_of_files() + else: + blend_against(local_files,spectrum_type,args.term) + else: + print '**interpolating (please wait)' + blend_against_interp(local_files,spectrum_type,args.term) + +exit() diff --git a/class/CPU.py b/class/CPU.py new file mode 100755 index 00000000..df6afed0 --- /dev/null +++ b/class/CPU.py @@ -0,0 +1,622 @@ +#!/usr/bin/env python +""" +.. module:: CPU + :synopsis: CPU, a CLASS Plotting Utility +.. moduleauthor:: Benjamin Audren +.. credits:: Benjamin Audren, Jesus Torrado +.. version:: 2.0 + +This is a small python program aimed to gain time when comparing two spectra, +e.g. from CAMB and CLASS, or a non-linear spectrum to a linear one. + +It is designed to be used in a command line fashion, not being restricted to +your CLASS directory, though it recognizes mainly CLASS output format. Far from +perfect, or complete, it could use any suggestion for enhancing it, +just to avoid losing time on useless matters for others. + +Be warned that, when comparing with other format, the following is assumed: +there are no empty line (especially at the end of file). Gnuplot comment lines +(starting with a # are allowed). This issue will cause a non-very descriptive +error in CPU, any suggestion for testing it is welcome. + +Example of use: +- To superimpose two different spectra and see their global shape : +python CPU.py output/lcdm_z2_pk.dat output/lncdm_z2_pk.dat +- To see in details their ratio: +python CPU.py output/lcdm_z2_pk.dat output/lncdm_z2_pk.dat -r + +The "PlanckScale" is taken with permission from Jesus Torrado's: +cosmo_mini_toolbox, available under GPLv3 at +https://github.com/JesusTorrado/cosmo_mini_toolbox + +""" + +from __future__ import unicode_literals, print_function + +# System imports +import os +import sys +import argparse + +# Numerics +import numpy as np +from numpy import ma +from scipy.interpolate import InterpolatedUnivariateSpline +from math import floor + +# Plotting +import matplotlib.pyplot as plt +from matplotlib import scale as mscale +from matplotlib.transforms import Transform +from matplotlib.ticker import FixedLocator + + +def CPU_parser(): + parser = argparse.ArgumentParser( + description=( + 'CPU, a CLASS Plotting Utility, specify wether you want\n' + 'to superimpose, or plot the ratio of different files.'), + epilog=( + 'A standard usage would be, for instance:\n' + 'python CPU.py output/test_pk.dat output/test_pk_nl_density.dat' + ' -r\npython CPU.py output/wmap_cl.dat output/planck_cl.dat'), + formatter_class=argparse.RawDescriptionHelpFormatter) + + parser.add_argument( + 'files', type=str, nargs='*', help='Files to plot') + parser.add_argument('-r', '--ratio', dest='ratio', action='store_true', + help='Plot the ratio of the spectra') + parser.add_argument('-y', '--y-axis', dest='y_axis', nargs='+', + help='specify the fields you want to plot.') + parser.add_argument('-x', '--x-axis', dest='x_axis', type=str, + help='specify the field to be used on the x-axis') + parser.add_argument('--scale', type=str, + choices=['lin', 'loglog', 'loglin', 'george'], + help='Specify the scale to use for the plot') + parser.add_argument('--xlim', dest='xlim', nargs='+', type=float, + default=[], help='Specify the x range') + parser.add_argument('--ylim', dest='ylim', nargs='+', type=float, + default=[], help='Specify the y range') + parser.add_argument( + '-p, --print', + dest='printfile', default='', + help=('print the graph directly in a file. If no name is specified, it' + 'uses the name of the first input file')) + parser.add_argument( + '--repeat', + dest='repeat', action='store_true', default=False, + help='repeat the step for all redshifts with same base name') + return parser + + +def plot_CLASS_output(files, x_axis, y_axis, ratio=False, printing='', + output_name='', extension='', x_variable='', + scale='lin', xlim=[], ylim=[]): + """ + Load the data to numpy arrays, write all the commands for plotting to a + Python script for further refinment, and display them. + + Inspired heavily by the matlab version by Thomas Tram + + Parameters + ---------- + files : list + List of files to plot + x-axis : string + name of the column to use as the x coordinate + y-axis : list, str + List of items to plot, which should match the way they appear in the + file, for instance: ['TT', 'BB] + + Keyword Arguments + ----------------- + ratio : bool + If set to yes, plots the ratio of the files, taking as a reference the + first one + output_name : str + Specify a different name for the produced figure (by default, it takes + the name of the first file, and replace the .dat by .pdf) + extension : str + + """ + # Define the python script name, and the pdf path + python_script_path = os.path.splitext(files[0])[0]+'.py' + + # The variable text will contain all the lines to be printed in the end to + # the python script path, joined with newline characters. Beware of the + # indentation. + text = ['import matplotlib.pyplot as plt', + 'import numpy as np', + 'import itertools', ''] + + # Load all the graphs + data = [] + for data_file in files: + data.append(np.loadtxt(data_file)) + + # Create the full_path_files list, that contains the absolute path, so that + # the future python script can import them directly. + full_path_files = [os.path.abspath(elem) for elem in files] + + text += ['files = %s' % full_path_files] + text += ['data = []', + 'for data_file in files:', + ' data.append(np.loadtxt(data_file))'] + + # Recover the base name of the files, everything before the dot + roots = [elem.split(os.path.sep)[-1].split('.')[0] for elem in files] + text += ['roots = [%s]' % ', '.join(["'%s'" % root for root in roots])] + + # Create the figure and ax objects + fig, ax = plt.subplots() + text += ['', 'fig, ax = plt.subplots()'] + + # if ratio is not set, then simply plot them all + original_y_axis = y_axis + legend = [] + if not ratio: + for index, curve in enumerate(data): + # Recover the number of columns in the first file, as well as their + # title. + num_columns, names, tex_names = extract_headers(files[index]) + + text += ['', 'index, curve = %i, data[%i]' % (index, index)] + # Check if everything is in order + if num_columns == 2: + y_axis = [names[1]] + elif num_columns > 2: + # in case y_axis was only a string, cast it to a list + if isinstance(original_y_axis, str): + y_axis = [original_y_axis] + else: + y_axis = original_y_axis + + # Store the selected text and tex_names to the script + selected = [] + for elem in y_axis: + selected.extend( + [name for name in names if name.find(elem) != -1 and + name not in selected]) + if not y_axis: + selected = names[1:] + y_axis = selected + + # Decide for the x_axis, by default the index will be set to zero + x_index = 0 + if x_axis: + for index_name, name in enumerate(names): + if name.find(x_axis) != -1: + x_index = index_name + break + # Store to text + text += ['y_axis = %s' % selected] + text += ['tex_names = %s' % [elem for (elem, name) in + zip(tex_names, names) if name in selected]] + text += ["x_axis = '%s'" % tex_names[x_index]] + text += ["ylim = %s" % ylim] + text += ["xlim = %s" % xlim] + + for selec in y_axis: + index_selec = names.index(selec) + plot_line = 'ax.' + if scale == 'lin': + plot_line += 'plot(curve[:, %i], curve[:, %i])' % ( + x_index, index_selec) + ax.plot(curve[:, x_index], curve[:, index_selec]) + elif scale == 'loglog': + plot_line += 'loglog(curve[:, %i], abs(curve[:, %i]))' % ( + x_index, index_selec) + ax.loglog(curve[:, x_index], abs(curve[:, index_selec])) + elif scale == 'loglin': + plot_line += 'semilogx(curve[:, %i], curve[:, %i])' % ( + x_index, index_selec) + ax.semilogx(curve[:, x_index], curve[:, index_selec]) + elif scale == 'george': + plot_line += 'plot(curve[:, %i], curve[:, %i])' % ( + x_index, index_selec) + ax.plot(curve[:, x_index], curve[:, index_selec]) + ax.set_xscale('planck') + text += [plot_line] + + legend.extend([roots[index]+': '+elem for elem in y_axis]) + + ax.legend(legend, loc='best') + text += ["", + "ax.legend([root+': '+elem for (root, elem) in", + " itertools.product(roots, y_axis)], loc='best')", + ""] + else: + ref = data[0] + num_columns, ref_curve_names, ref_tex_names = extract_headers(files[0]) + # Check if everything is in order + if num_columns == 2: + y_axis_ref = [ref_curve_names[1]] + elif num_columns > 2: + # in case y_axis was only a string, cast it to a list + if isinstance(original_y_axis, str): + y_axis_ref = [original_y_axis] + else: + y_axis_ref = original_y_axis + + # Store the selected text and tex_names to the script + selected = [] + for elem in y_axis_ref: + selected.extend([name for name in ref_curve_names if name.find(elem) != -1 and + name not in selected]) + y_axis_ref = selected + + # Decide for the x_axis, by default the index will be set to zero + x_index_ref = 0 + if x_axis: + for index_name, name in enumerate(ref_curve_names): + if name.find(x_axis) != -1: + x_index_ref = index_name + break + + for idx in range(1, len(data)): + current = data[idx] + num_columns, names, tex_names = extract_headers(files[idx]) + + # Check if everything is in order + if num_columns == 2: + y_axis = [names[1]] + elif num_columns > 2: + # in case y_axis was only a string, cast it to a list + if isinstance(original_y_axis, str): + y_axis = [original_y_axis] + else: + y_axis = original_y_axis + + # Store the selected text and tex_names to the script + selected = [] + for elem in y_axis: + selected.extend([name for name in names if name.find(elem) != -1 and + name not in selected]) + y_axis = selected + + text += ['y_axis = %s' % selected] + text += ['tex_names = %s' % [elem for (elem, name) in + zip(tex_names, names) if name in selected]] + + # Decide for the x_axis, by default the index will be set to zero + x_index = 0 + if x_axis: + for index_name, name in enumerate(names): + if name.find(x_axis) != -1: + x_index = index_name + break + + text += ["x_axis = '%s'" % tex_names[x_index]] + for selec in y_axis: + # Do the interpolation + axis = ref[:, x_index_ref] + reference = ref[:, ref_curve_names.index(selec)] + #plt.loglog(current[:, x_index], current[:, names.index(selec)]) + #plt.show() + #interpolated = splrep(current[:, x_index], + #current[:, names.index(selec)]) + interpolated = InterpolatedUnivariateSpline(current[:, x_index], + current[:, names.index(selec)]) + if scale == 'lin': + #ax.plot(axis, splev(ref[:, x_index_ref], + #interpolated)/reference-1) + ax.plot(axis, interpolated(ref[:, x_index_ref])/reference-1) + elif scale == 'loglin': + #ax.semilogx(axis, splev(ref[:, x_index_ref], + #interpolated)/reference-1) + ax.semilogx(axis, interpolated(ref[:, x_index_ref])/reference-1) + elif scale == 'loglog': + raise InputError( + "loglog plot is not available for ratios") + + if 'TT' in names: + ax.set_xlabel('$\ell$', fontsize=16) + text += ["ax.set_xlabel('$\ell$', fontsize=16)"] + elif 'P' in names: + ax.set_xlabel('$k$ [$h$/Mpc]', fontsize=16) + text += ["ax.set_xlabel('$k$ [$h$/Mpc]', fontsize=16)"] + else: + ax.set_xlabel(tex_names[x_index], fontsize=16) + text += ["ax.set_xlabel('%s', fontsize=16)" % tex_names[x_index]] + if xlim: + if len(xlim) > 1: + ax.set_xlim(xlim) + text += ["ax.set_xlim(xlim)"] + else: + ax.set_xlim(xlim[0]) + text += ["ax.set_xlim(xlim[0])"] + ax.set_ylim() + text += ["ax.set_ylim()"] + if ylim: + if len(ylim) > 1: + ax.set_ylim(ylim) + text += ["ax.set_ylim(ylim)"] + else: + ax.set_ylim(ylim[0]) + text += ["ax.set_ylim(ylim[0])"] + text += ['plt.show()'] + plt.show() + + # If the use wants to print the figure to a file + if printing: + fig.savefig(printing) + text += ["fig.savefig('%s')" % printing] + + # Write to the python file all the issued commands. You can then reproduce + # the plot by running "python output/something_cl.dat.py" + with open(python_script_path, 'w') as python_script: + print('Creating a python script to reproduce the figure') + print('--> stored in %s' % python_script_path) + python_script.write('\n'.join(text)) + + # If the use wants to print the figure to a file + if printing: + fig.savefig(printing) + + +class FormatError(Exception): + """Format not recognised""" + pass + + +class TypeError(Exception): + """Spectrum type not recognised""" + pass + + +class NumberOfFilesError(Exception): + """Invalid number of files""" + pass + + +class InputError(Exception): + """Incompatible input requirements""" + pass + + +def replace_scale(string): + """ + This assumes that the string starts with "(.)", which will be replaced by + (8piG/3) + + >>> print replace_scale('(.)toto') + >>> '(8\\pi G/3)toto' + """ + string_list = list(string) + string_list.pop(1) + string_list[1:1] = list('8\\pi G/3') + return ''.join(string_list) + + +def process_long_names(long_names): + """ + Given the names extracted from the header, return two arrays, one with the + short version, and one tex version + + >>> names, tex_names = process_long_names(['(.)toto', 'proper time [Gyr]']) + >>> print names + >>> ['toto', 'proper time'] + >>> print tex_names + >>> ['(8\\pi G/3)toto, 'proper time [Gyr]'] + + """ + names = [] + tex_names = [] + # First pass, to remove the leading scales + for name in long_names: + # This can happen in the background file + if name.startswith('(.)', 0): + temp_name = name[3:] + names.append(temp_name) + tex_names.append(replace_scale(name)) + # Otherwise, we simply + else: + names.append(name) + tex_names.append(name) + + # Finally, remove any extra spacing + names = [''.join(elem.split()) for elem in names] + return names, tex_names + + +def extract_headers(header_path): + with open(header_path, 'r') as header_file: + header = [line for line in header_file if line[0] == '#'] + header = header[-1] + + # Count the number of columns in the file, and recover their name. Thanks + # Thomas Tram for the trick + indices = [i+1 for i in range(len(header)) if + header.startswith(':', i)] + num_columns = len(indices) + long_names = [header[indices[i]:indices[(i+1)]-3].strip() if i < num_columns-1 + else header[indices[i]:].strip() + for i in range(num_columns)] + + # Process long_names further to handle special cases, and extract names, + # which will correspond to the tags specified in "y_axis". + names, tex_names = process_long_names(long_names) + + return num_columns, names, tex_names + + +def main(): + print('~~~ Running CPU, a CLASS Plotting Utility ~~~') + parser = CPU_parser() + # Parse the command line arguments + args = parser.parse_args() + + # if there are no argument in the input, print usage + if len(args.files) == 0: + parser.print_usage() + return + + # if the first file name contains cl or pk, infer the type of desired + # spectrum + if not args.y_axis: + if args.files[0].rfind('cl') != -1: + scale = 'loglog' + elif args.files[0].rfind('pk') != -1: + scale = 'loglog' + else: + scale = 'lin' + args.y_axis = [] + else: + scale = '' + if not args.scale: + if scale: + args.scale = scale + else: + args.scale = 'lin' + + # Remove extra spacing in the y_axis list + args.y_axis = [''.join(elem.split()) for elem in args.y_axis] + # If ratio is asked, but only one file was passed in argument, politely + # complain + if args.ratio: + if len(args.files) < 2: + raise NumberOfFilesError( + "If you want me to compute a ratio between two files, " + "I strongly encourage you to give me at least two of them.") + # actual plotting. By default, a simple superposition of the graph is + # performed. If asked to be divided, the ratio is shown - whether a need + # for interpolation arises or not. + if args.ratio and args.scale == 'loglog': + print("Defaulting to loglin scale") + args.scale = 'loglin' + + plot_CLASS_output(args.files, args.x_axis, args.y_axis, + ratio=args.ratio, printing=args.printfile, + scale=args.scale, xlim=args.xlim, ylim=args.ylim) + + +# Helper code from cosmo_mini_toolbox, by Jesus Torrado, available fully at +# https://github.com/JesusTorrado/cosmo_mini_toolbox, to use the log then +# linear scale for the multipole axis when plotting Cl. +nonpos = "mask" +change = 50.0 +factor = 500. + + +def _mask_nonpos(a): + """ + Return a Numpy masked array where all non-positive 1 are + masked. If there are no non-positive, the original array + is returned. + """ + mask = a <= 0.0 + if mask.any(): + return ma.MaskedArray(a, mask=mask) + return a + + +def _clip_smaller_than_one(a): + a[a <= 0.0] = 1e-300 + return a + + +class PlanckScale(mscale.ScaleBase): + """ + Scale used by the Planck collaboration to plot Temperature power spectra: + base-10 logarithmic up to l=50, and linear from there on. + + Care is taken so non-positive values are not plotted. + """ + name = 'planck' + + def __init__(self, axis, **kwargs): + pass + + def set_default_locators_and_formatters(self, axis): + axis.set_major_locator( + FixedLocator( + np.concatenate((np.array([2, 10, change]), + np.arange(500, 2500, 500))))) + axis.set_minor_locator( + FixedLocator( + np.concatenate((np.arange(2, 10), + np.arange(10, 50, 10), + np.arange(floor(change/100), 2500, 100))))) + + def get_transform(self): + """ + Return a :class:`~matplotlib.transforms.Transform` instance + appropriate for the given logarithm base. + """ + return self.PlanckTransform(nonpos) + + def limit_range_for_scale(self, vmin, vmax, minpos): + """ + Limit the domain to positive values. + """ + return (vmin <= 0.0 and minpos or vmin, + vmax <= 0.0 and minpos or vmax) + + class PlanckTransform(Transform): + input_dims = 1 + output_dims = 1 + is_separable = True + has_inverse = True + + def __init__(self, nonpos): + Transform.__init__(self) + if nonpos == 'mask': + self._handle_nonpos = _mask_nonpos + else: + self._handle_nonpos = _clip_nonpos + + def transform_non_affine(self, a): + lower = a[np.where(a<=change)] + greater = a[np.where(a> change)] + if lower.size: + lower = self._handle_nonpos(lower * 10.0)/10.0 + if isinstance(lower, ma.MaskedArray): + lower = ma.log10(lower) + else: + lower = np.log10(lower) + lower = factor*lower + if greater.size: + greater = (factor*np.log10(change) + (greater-change)) + # Only low + if not(greater.size): + return lower + # Only high + if not(lower.size): + return greater + return np.concatenate((lower, greater)) + + def inverted(self): + return PlanckScale.InvertedPlanckTransform() + + class InvertedPlanckTransform(Transform): + input_dims = 1 + output_dims = 1 + is_separable = True + has_inverse = True + + def transform_non_affine(self, a): + lower = a[np.where(a<=factor*np.log10(change))] + greater = a[np.where(a> factor*np.log10(change))] + if lower.size: + if isinstance(lower, ma.MaskedArray): + lower = ma.power(10.0, lower/float(factor)) + else: + lower = np.power(10.0, lower/float(factor)) + if greater.size: + greater = (greater + change - factor*np.log10(change)) + # Only low + if not(greater.size): + return lower + # Only high + if not(lower.size): + return greater + return np.concatenate((lower, greater)) + + def inverted(self): + return PlanckTransform() + +# Finished. Register the scale! +mscale.register_scale(PlanckScale) + +if __name__ == '__main__': + sys.exit(main()) diff --git a/class/Makefile b/class/Makefile old mode 100644 new mode 100755 index 6bddd5a0..52530996 --- a/class/Makefile +++ b/class/Makefile @@ -1,203 +1,207 @@ -#Some Makefile for CLASS. -#Julien Lesgourgues, 28.11.2011 - -MDIR := $(shell pwd) -WRKDIR = $(MDIR)/build - -.base: - if ! [ -e $(WRKDIR) ]; then mkdir $(WRKDIR) ; mkdir $(WRKDIR)/lib; fi; - touch build/.base - -vpath %.c source:tools:main:test -vpath %.o build -vpath .base build - -######################################################## -###### LINES TO ADAPT TO YOUR PLATEFORM ################ -######################################################## - -# your C compiler: -CC = gcc -#CC = icc -#CC = pgcc - -# your tool for creating static libraries: -AR = ar rv - -# (OPT) your python interpreter -PYTHON = python - -# your optimization flag -OPTFLAG = -O3 -ffast-math #-march=native -#OPTFLAG = -Ofast -ffast-math #-march=native -#OPTFLAG = -fast - -# your openmp flag (comment for compiling without openmp) -# OMPFLAG = -fopenmp -# OMPFLAG = -mp -mp=nonuma -mp=allcores -g -# OMPFLAG = -openmp - -# all other compilation flags -CCFLAG = -g -fPIC -LDFLAG = -g -fPIC - -# leave blank to compile without HyRec, or put path to HyRec directory -# (with no slash at the end: e.g. hyrec or ../hyrec) -#HYREC = hyrec - -######################################################## -###### IN PRINCIPLE THE REST SHOULD BE LEFT UNCHANGED ## -######################################################## - -# pass current working directory to the code -CCFLAG += -D__CLASSDIR__='"$(MDIR)"' - -# where to find include files *.h -INCLUDES = -I../include - -# automatically add external programs if needed. First, initialize to blank. -EXTERNAL = - -# Try to automatically avoid an error 'error: can't combine user with ...' -# which sometimes happens with brewed Python on OSX: -CFGFILE=$(shell $(PYTHON) -c "import sys; print(sys.prefix+'/lib/'+'python'+'.'.join(['%i' % e for e in sys.version_info[0:2]])+'/distutils/distutils.cfg')") -PYTHONPREFIX=$(shell grep -s "prefix" $(CFGFILE)) -ifeq ($(PYTHONPREFIX),) -PYTHONFLAGS=--user -else -PYTHONFLAGS= -endif - -# eventually update flags for including HyRec -ifneq ($(HYREC),) -vpath %.c $(HYREC) -CCFLAG += -DHYREC -#LDFLAGS += -DHYREC -INCLUDES += -I../hyrec -EXTERNAL += hyrectools.o helium.o hydrogen.o history.o -endif - -%.o: %.c .base - cd $(WRKDIR);$(CC) $(OPTFLAG) $(OMPFLAG) $(CCFLAG) $(INCLUDES) -c ../$< -o $*.o - -TOOLS = growTable.o dei_rkck.o sparse.o evolver_rkck.o evolver_ndf15.o arrays.o parser.o quadrature.o hyperspherical.o common.o - -SOURCE = input.o background.o thermodynamics.o perturbations.o primordial.o nonlinear.o transfer.o spectra.o lensing.o - -INPUT = input.o - -PRECISION = precision.o - -BACKGROUND = background.o - -THERMO = thermodynamics.o - -PERTURBATIONS = perturbations.o - -TRANSFER = transfer.o - -PRIMORDIAL = primordial.o - -SPECTRA = spectra.o - -NONLINEAR = nonlinear.o - -LENSING = lensing.o - -OUTPUT = output.o - -CLASS = class.o - -TEST_LOOPS = test_loops.o - -TEST_LOOPS_OMP = test_loops_omp.o - -TEST_DEGENERACY = test_degeneracy.o - -TEST_TRANSFER = test_transfer.o - -TEST_NONLINEAR = test_nonlinear.o - -TEST_PERTURBATIONS = test_perturbations.o - -TEST_THERMODYNAMICS = test_thermodynamics.o - -TEST_BACKGROUND = test_background.o - -TEST_SIGMA = test_sigma.o - -TEST_HYPERSPHERICAL = test_hyperspherical.o - -TEST_STEPHANE = test_stephane.o - -C_TOOLS = $(addprefix tools/, $(addsuffix .c,$(basename $(TOOLS)))) -C_SOURCE = $(addprefix source/, $(addsuffix .c,$(basename $(SOURCE) $(OUTPUT)))) -C_TEST = $(addprefix test/, $(addsuffix .c,$(basename $(TEST_DEGENERACY) $(TEST_LOOPS) $(TEST_TRANSFER) $(TEST_NONLINEAR) $(TEST_PERTURBATIONS) $(TEST_THERMODYNAMICS)))) -C_MAIN = $(addprefix main/, $(addsuffix .c,$(basename $(CLASS)))) -C_ALL = $(C_MAIN) $(C_TOOLS) $(C_SOURCE) -H_ALL = $(addprefix include/, common.h svnversion.h $(addsuffix .h, $(basename $(notdir $(C_ALL))))) -PRE_ALL = cl_ref.pre clt_permille.pre -INI_ALL = explanatory.ini lcdm.ini -MISC_FILES = Makefile CPU psd_FD_single.dat myselection.dat myevolution.dat README bbn/sBBN.dat external_Pk/* cpp -PYTHON_FILES = python/classy.pyx python/setup.py python/cclassy.pxd python/test_class.py - - - - -all: libclass.a -#all: class - -# libclass.a: $(TOOLS) $(SOURCE) $(EXTERNAL) -# $(AR) $@ $(addprefix build/, $(TOOLS) $(SOURCE) $(EXTERNAL)) - -libclass.a: $(TOOLS) $(SOURCE) $(EXTERNAL) $(OUTPUT) $(CLASS) - $(AR) $@ $(addprefix build/, $(TOOLS) $(SOURCE) $(EXTERNAL)) - -class: $(TOOLS) $(SOURCE) $(EXTERNAL) $(OUTPUT) $(CLASS) - $(CC) $(OPTFLAG) $(OMPFLAG) $(LDFLAG) -o class $(addprefix build/,$(notdir $^)) -lm - -test_sigma: $(TOOLS) $(SOURCE) $(EXTERNAL) $(OUTPUT) $(TEST_SIGMA) - $(CC) $(OPTFLAG) $(OMPFLAG) $(LDFLAG) -o test_sigma $(addprefix build/,$(notdir $^)) -lm - -test_loops: $(TOOLS) $(SOURCE) $(EXTERNAL) $(OUTPUT) $(TEST_LOOPS) - $(CC) $(OPTFLAG) $(OMPFLAG) $(LDFLAG) -o $@ $(addprefix build/,$(notdir $^)) -lm - -test_loops_omp: $(TOOLS) $(SOURCE) $(EXTERNAL) $(OUTPUT) $(TEST_LOOPS_OMP) - $(CC) $(OPTFLAG) $(OMPFLAG) $(LDFLAG) -o $@ $(addprefix build/,$(notdir $^)) -lm - -test_stephane: $(TOOLS) $(SOURCE) $(EXTERNAL) $(OUTPUT) $(TEST_STEPHANE) - $(CC) $(OPTFLAG) $(OMPFLAG) $(LDFLAG) -o $@ $(addprefix build/,$(notdir $^)) -lm - -test_degeneracy: $(TOOLS) $(SOURCE) $(EXTERNAL) $(OUTPUT) $(TEST_DEGENERACY) - $(CC) $(OPTFLAG) $(OMPFLAG) $(LDFLAG) -o $@ $(addprefix build/,$(notdir $^)) -lm - -test_transfer: $(TOOLS) $(SOURCE) $(EXTERNAL) $(TEST_TRANSFER) - $(CC) $(OPTFLAG) $(OMPFLAG) $(LDFLAG) -o $@ $(addprefix build/,$(notdir $^)) -lm - -test_nonlinear: $(TOOLS) $(SOURCE) $(EXTERNAL) $(TEST_NONLINEAR) - $(CC) $(OPTFLAG) $(OMPFLAG) $(LDFLAG) -o $@ $(addprefix build/,$(notdir $^)) -lm - -test_perturbations: $(TOOLS) $(SOURCE) $(EXTERNAL) $(TEST_PERTURBATIONS) - $(CC) $(OPTFLAG) $(OMPFLAG) $(LDFLAG) -o $@ $(addprefix build/,$(notdir $^)) -lm - -test_thermodynamics: $(TOOLS) $(SOURCE) $(EXTERNAL) $(TEST_THERMODYNAMICS) - $(CC) $(OPTFLAG) $(OMPFLAG) $(LDFLAG) -o $@ $(addprefix build/,$(notdir $^)) -lm - -test_background: $(TOOLS) $(SOURCE) $(EXTERNAL) $(TEST_BACKGROUND) - $(CC) $(OPTFLAG) $(OMPFLAG) $(LDFLAG) -o $@ $(addprefix build/,$(notdir $^)) -lm - -test_hyperspherical: $(TOOLS) $(TEST_HYPERSPHERICAL) - $(CC) $(OPTFLAG) $(OMPFLAG) $(LDFLAG) -o test_hyperspherical $(addprefix build/,$(notdir $^)) -lm - - -tar: $(C_ALL) $(C_TEST) $(H_ALL) $(PRE_ALL) $(INI_ALL) $(MISC_FILES) $(HYREC) $(PYTHON_FILES) - tar czvf class.tar.gz $(C_ALL) $(H_ALL) $(PRE_ALL) $(INI_ALL) $(MISC_FILES) $(HYREC) $(PYTHON_FILES) - -classy: libclass.a python/classy.pyx python/cclassy.pxd - cd python; export CC=$(CC); $(PYTHON) setup.py install $(PYTHONFLAGS) - -clean: .base - rm -rf $(WRKDIR); - rm -f libclass.a - rm -f $(MDIR)/python/classy.c - rm -rf $(MDIR)/python/build +#Some Makefile for CLASS. +#Julien Lesgourgues, 28.11.2011 + +MDIR := $(shell pwd) +WRKDIR = $(MDIR)/build + +.base: + if ! [ -e $(WRKDIR) ]; then mkdir $(WRKDIR) ; mkdir $(WRKDIR)/lib; fi; + touch build/.base + +vpath %.c source:tools:main:test +vpath %.o build +vpath .base build + +######################################################## +###### LINES TO ADAPT TO YOUR PLATEFORM ################ +######################################################## + +# your C compiler: +CC = gcc +#CC = icc +#CC = pgcc + +# your tool for creating static libraries: +AR = ar rv + +# Your python interpreter. +# In order to use Python 3, you can manually +# substitute python3 to python in the line below, or you can simply +# add a compilation option on the terminal command line: +# "PYTHON=python3 make all" (THanks to Marius Millea for pyhton3 +# compatibility) +PYTHON ?= python + +# your optimization flag +#OPTFLAG = -O4 -ffast-math #-march=native +#OPTFLAG = -Ofast -ffast-math #-march=native +#OPTFLAG = -fast +OPTFLAG = -O4 -ffast-math -lgsl -lgslcblas + +# your openmp flag (comment for compiling without openmp) +OMPFLAG = -fopenmp +#OMPFLAG = -mp -mp=nonuma -mp=allcores -g +#OMPFLAG = -openmp + +# all other compilation flags +CCFLAG = -g -fPIC +LDFLAG = -g -fPIC + +# leave blank to compile without HyRec, or put path to HyRec directory +# (with no slash at the end: e.g. hyrec or ../hyrec) +HYREC = hyrec + +######################################################## +###### IN PRINCIPLE THE REST SHOULD BE LEFT UNCHANGED ## +######################################################## + +# pass current working directory to the code +CCFLAG += -D__CLASSDIR__='"$(MDIR)"' + +# where to find include files *.h +INCLUDES = -I../include + +# automatically add external programs if needed. First, initialize to blank. +EXTERNAL = + +# eventually update flags for including HyRec +ifneq ($(HYREC),) +vpath %.c $(HYREC) +CCFLAG += -DHYREC +#LDFLAGS += -DHYREC +INCLUDES += -I../hyrec +EXTERNAL += hyrectools.o helium.o hydrogen.o history.o +endif + +%.o: %.c .base + cd $(WRKDIR);$(CC) $(OPTFLAG) $(OMPFLAG) $(CCFLAG) $(INCLUDES) -c ../$< -o $*.o + +TOOLS = growTable.o dei_rkck.o sparse.o evolver_rkck.o evolver_ndf15.o arrays.o parser.o quadrature.o hyperspherical.o common.o trigonometric_integrals.o + +SOURCE = input.o background.o thermodynamics.o perturbations.o primordial.o nonlinear.o transfer.o spectra.o lensing.o + +INPUT = input.o + +PRECISION = precision.o + +BACKGROUND = background.o + +THERMO = thermodynamics.o + +PERTURBATIONS = perturbations.o + +TRANSFER = transfer.o + +PRIMORDIAL = primordial.o + +SPECTRA = spectra.o + +NONLINEAR = nonlinear.o + +LENSING = lensing.o + +OUTPUT = output.o + +CLASS = class.o + +TEST_LOOPS = test_loops.o + +TEST_LOOPS_OMP = test_loops_omp.o + +TEST_DEGENERACY = test_degeneracy.o + +TEST_SPECTRA = test_spectra.o + +TEST_TRANSFER = test_transfer.o + +TEST_NONLINEAR = test_nonlinear.o + +TEST_PERTURBATIONS = test_perturbations.o + +TEST_THERMODYNAMICS = test_thermodynamics.o + +TEST_BACKGROUND = test_background.o + +TEST_SIGMA = test_sigma.o + +TEST_HYPERSPHERICAL = test_hyperspherical.o + +TEST_STEPHANE = test_stephane.o + +C_TOOLS = $(addprefix tools/, $(addsuffix .c,$(basename $(TOOLS)))) +C_SOURCE = $(addprefix source/, $(addsuffix .c,$(basename $(SOURCE) $(OUTPUT)))) +C_TEST = $(addprefix test/, $(addsuffix .c,$(basename $(TEST_DEGENERACY) $(TEST_LOOPS) $(TEST_TRANSFER) $(TEST_NONLINEAR) $(TEST_PERTURBATIONS) $(TEST_THERMODYNAMICS)))) +C_MAIN = $(addprefix main/, $(addsuffix .c,$(basename $(CLASS)))) +C_ALL = $(C_MAIN) $(C_TOOLS) $(C_SOURCE) +H_ALL = $(addprefix include/, common.h svnversion.h $(addsuffix .h, $(basename $(notdir $(C_ALL))))) +PRE_ALL = cl_ref.pre clt_permille.pre +INI_ALL = explanatory.ini lcdm.ini +MISC_FILES = Makefile CPU psd_FD_single.dat myselection.dat myevolution.dat README bbn/sBBN.dat external_Pk/* cpp +PYTHON_FILES = python/classy.pyx python/setup.py python/cclassy.pxd python/test_class.py + +all: libclass.a + +#libclass.a: $(TOOLS) $(SOURCE) $(EXTERNAL) +# $(AR) $@ $(addprefix build/, $(TOOLS) $(SOURCE) $(EXTERNAL)) +libclass.a: $(TOOLS) $(SOURCE) $(EXTERNAL) $(OUTPUT) $(CLASS) + $(AR) $@ $(addprefix build/, $(TOOLS) $(SOURCE) $(EXTERNAL)) + + + +class: $(TOOLS) $(SOURCE) $(EXTERNAL) $(OUTPUT) $(CLASS) + $(CC) $(OPTFLAG) $(OMPFLAG) $(LDFLAG) -o class $(addprefix build/,$(notdir $^)) -lm + +test_sigma: $(TOOLS) $(SOURCE) $(EXTERNAL) $(OUTPUT) $(TEST_SIGMA) + $(CC) $(OPTFLAG) $(OMPFLAG) $(LDFLAG) -o test_sigma $(addprefix build/,$(notdir $^)) -lm + +test_loops: $(TOOLS) $(SOURCE) $(EXTERNAL) $(OUTPUT) $(TEST_LOOPS) + $(CC) $(OPTFLAG) $(OMPFLAG) $(LDFLAG) -o $@ $(addprefix build/,$(notdir $^)) -lm + +test_loops_omp: $(TOOLS) $(SOURCE) $(EXTERNAL) $(OUTPUT) $(TEST_LOOPS_OMP) + $(CC) $(OPTFLAG) $(OMPFLAG) $(LDFLAG) -o $@ $(addprefix build/,$(notdir $^)) -lm + +test_stephane: $(TOOLS) $(SOURCE) $(EXTERNAL) $(OUTPUT) $(TEST_STEPHANE) + $(CC) $(OPTFLAG) $(OMPFLAG) $(LDFLAG) -o $@ $(addprefix build/,$(notdir $^)) -lm + +test_degeneracy: $(TOOLS) $(SOURCE) $(EXTERNAL) $(OUTPUT) $(TEST_DEGENERACY) + $(CC) $(OPTFLAG) $(OMPFLAG) $(LDFLAG) -o $@ $(addprefix build/,$(notdir $^)) -lm + +test_spectra: $(TOOLS) $(SOURCE) $(EXTERNAL) $(TEST_SPECTRA) + $(CC) $(OPTFLAG) $(OMPFLAG) $(LDFLAG) -o $@ $(addprefix build/,$(notdir $^)) -lm + +test_transfer: $(TOOLS) $(SOURCE) $(EXTERNAL) $(TEST_TRANSFER) + $(CC) $(OPTFLAG) $(OMPFLAG) $(LDFLAG) -o $@ $(addprefix build/,$(notdir $^)) -lm + +test_nonlinear: $(TOOLS) $(SOURCE) $(EXTERNAL) $(TEST_NONLINEAR) + $(CC) $(OPTFLAG) $(OMPFLAG) $(LDFLAG) -o $@ $(addprefix build/,$(notdir $^)) -lm + +test_perturbations: $(TOOLS) $(SOURCE) $(EXTERNAL) $(TEST_PERTURBATIONS) + $(CC) $(OPTFLAG) $(OMPFLAG) $(LDFLAG) -o $@ $(addprefix build/,$(notdir $^)) -lm + +test_thermodynamics: $(TOOLS) $(SOURCE) $(EXTERNAL) $(TEST_THERMODYNAMICS) + $(CC) $(OPTFLAG) $(OMPFLAG) $(LDFLAG) -o $@ $(addprefix build/,$(notdir $^)) -lm + +test_background: $(TOOLS) $(SOURCE) $(EXTERNAL) $(TEST_BACKGROUND) + $(CC) $(OPTFLAG) $(OMPFLAG) $(LDFLAG) -o $@ $(addprefix build/,$(notdir $^)) -lm + +test_hyperspherical: $(TOOLS) $(TEST_HYPERSPHERICAL) + $(CC) $(OPTFLAG) $(OMPFLAG) $(LDFLAG) -o test_hyperspherical $(addprefix build/,$(notdir $^)) -lm + + +tar: $(C_ALL) $(C_TEST) $(H_ALL) $(PRE_ALL) $(INI_ALL) $(MISC_FILES) $(HYREC) $(PYTHON_FILES) + tar czvf class.tar.gz $(C_ALL) $(H_ALL) $(PRE_ALL) $(INI_ALL) $(MISC_FILES) $(HYREC) $(PYTHON_FILES) + +classy: libclass.a python/classy.pyx python/cclassy.pxd +ifdef OMPFLAG + cp python/setup.py python/autosetup.py +else + grep -v "lgomp" python/setup.py > python/autosetup.py +endif + cd python; export CC='$(CC) $(OPTFLAG)'; $(PYTHON) autosetup.py install || $(PYTHON) autosetup.py install --user + rm python/autosetup.py + +clean: .base + rm -rf $(WRKDIR); + rm -f libclass.a + rm -f $(MDIR)/python/classy.c + rm -rf $(MDIR)/python/build diff --git a/class/README.md b/class/README.md new file mode 100644 index 00000000..0307968e --- /dev/null +++ b/class/README.md @@ -0,0 +1,118 @@ +CLASS: Cosmic Linear Anisotropy Solving System {#mainpage} +============================================== + +Authors: Julien Lesgourgues and Thomas Tram + +with several major inputs from other people, especially Benjamin +Audren, Simon Prunet, Jesus Torrado, Miguel Zumalacarregui, Francesco +Montanari, etc. + +For download and information, see http://class-code.net + + +Compiling CLASS and getting started +----------------------------------- + +(the information below can also be found on the webpage, just below +the download button) + +Download the code from the webpage and unpack the archive (tar -zxvf +class_vx.y.z.tar.gz), or clone it from +https://github.com/lesgourg/class_public. Go to the class directory +(cd class/ or class_public/ or class_vx.y.z/) and compile (make clean; +make class). You can usually speed up compilation with the option -j: +make -j class. If the first compilation attempt fails, you may need to +open the Makefile and adapt the name of the compiler (default: gcc), +of the optimization flag (default: -O4 -ffast-math) and of the OpenMP +flag (default: -fopenmp; this flag is facultative, you are free to +compile without OpenMP if you don't want parallel execution; note that +you need the version 4.2 or higher of gcc to be able to compile with +-fopenmp). Many more details on the CLASS compilation are given on the +wiki page + +https://github.com/lesgourg/class_public/wiki/Installation + +(in particular, for compiling on Mac >= 10.9 despite of the clang +incompatibility with OpenMP). + +To check that the code runs, type: + + ./class explanatory.ini + +The explanatory.ini file is THE reference input file, containing and +explaining the use of all possible input parameters. We recommend to +read it, to keep it unchanged (for future reference), and to create +for your own purposes some shorter input files, containing only the +input lines which are useful for you. Input files must have a *.ini +extension. + +If you want to play with the precision/speed of the code, you can use +one of the provided precision files (e.g. cl_permille.pre) or modify +one of them, and run with two input files, for instance: + + ./class test.ini cl_permille.pre + +The files *.pre are suppposed to specify the precision parameters for +which you don't want to keep default values. If you find it more +convenient, you can pass these precision parameter values in your *.ini +file instead of an additional *.pre file. + +The automatically-generated documentation is located in + + doc/manual/html/index.html + doc/manual/CLASS_manual.pdf + +On top of that, if you wish to modify the code, you will find lots of +comments directly in the files. + +Python +------ + +To use CLASS from python, or ipython notebooks, or from the Monte +Python parameter extraction code, you need to compile not only the +code, but also its python wrapper. This can be done by typing just +'make' instead of 'make class' (or for speeding up: 'make -j'). More +details on the wrapper and its compilation are found on the wiki page + +https://github.com/lesgourg/class_public/wiki + +Plotting utility +---------------- + +Since version 2.3, the package includes an improved plotting script +called CPU.py (Class Plotting Utility), written by Benjamin Audren and +Jesus Torrado. It can plot the Cl's, the P(k) or any other CLASS +output, for one or several models, as well as their ratio or percentage +difference. The syntax and list of available options is obtained by +typing 'pyhton CPU.py -h'. There is a similar script for MATLAB, +written by Thomas Tram. To use it, once in MATLAB, type 'help +plot_CLASS_output.m' + +Developing the code +-------------------- + +If you want to develop the code, we suggest that you download it from +the github webpage + +https://github.com/lesgourg/class_public + +rather than from class-code.net. Then you will enjoy all the feature +of git repositories. You can even develop your own branch and get it +merged to the public distribution. For related instructions, check + +https://github.com/lesgourg/class_public/wiki/Public-Contributing + +Using the code +-------------- + +You can use CLASS freely, provided that in your publications, you cite +at least the paper `CLASS II: Approximation schemes `. Feel free to cite more CLASS papers! + +Support +------- + +To get support, please open a new issue on the + +https://github.com/lesgourg/class_public + +webpage! diff --git a/class/RealSpaceInterface/Calc2D/CalculationClass.py b/class/RealSpaceInterface/Calc2D/CalculationClass.py new file mode 100644 index 00000000..0a6b5bb4 --- /dev/null +++ b/class/RealSpaceInterface/Calc2D/CalculationClass.py @@ -0,0 +1,187 @@ +import os +import logging + +import cv2 +import numpy as np + +from classy import Class + +from Calc2D.TransferFunction import ComputeTransferFunctionList +from Calc2D.DataGeneration import GenerateGaussianData, GenerateSIData +from Calc2D.DataPropagation import PropagateDatawithList +from Calc2D.rFourier import * +from Calc2D.Database import Database +from collections import namedtuple + +import config + +ClSpectrum = namedtuple("Cls", ["l", "tCl"]) +PkSpectrum = namedtuple("Pkh", ["kh", "Pkh"]) + +def normalize(real): + """ + Given the `real` data, i.e. either a 2d array or a flattened 1d array + of the relative density perturbations, normalize its values as follows: + + The client expects the values to be in the interval of [-1, 1]. + Take a symmetric interval around a `real` value of 0 and linearly + map it to the required interval [-1, 1]. + """ + minimum, maximum = real.min(), real.max() + bound = max(abs(maximum), abs(minimum)) + result = real / bound + return result + +class Calculation(object): + def __init__(self, + kbins, + resolution = 200, + gauge="newtonian", + kperdecade=200, + P_k_max=100, + evolver=1): + # also sets `endshape` through setter + self.resolution = resolution + self.gauge = gauge + self.evolver = evolver + self.P_k_max = P_k_max + self.kperdecade = kperdecade + + self.redshift = None # to be set later + self.size = None # to be set later + + self.krange = np.logspace(-4, 1, kbins) + + @property + def resolution(self): + return self._resolution + + @resolution.setter + def resolution(self, resolution): + self._resolution = resolution + self.endshape = (resolution, resolution) + + def getData(self, redshiftindex): + FValuenew = PropagateDatawithList( + k=self.k, + FValue=self.FValue, + zredindex=redshiftindex, + transferFunctionlist=self.TransferFunctionList) + + Valuenew = dict() + FValue_abs = np.abs(self.FValue) + _min, _max = FValue_abs.min(), FValue_abs.max() + dimensions = (self.endshape[0] / 2, self.endshape[1]) + for quantity, FT in FValuenew.items(): + FT_abs = np.abs(FT) + FT_normalized = cv2.resize(FT_abs, dimensions).ravel() + FT_normalized = (FT_normalized - _min) / (_max - _min) + real = realInverseFourier(FT.reshape(self.FValue.shape)) + # real = cv2.resize(real, self.endshape).ravel() + real = real.ravel() + + minimum, maximum = real.min(), real.max() + Valuenew[quantity] = normalize(real) + + return Valuenew, FValuenew, (minimum, maximum) + + + def getInitialData(self): + # for odd values of self._resolution, this is necessary + Value = cv2.resize(realInverseFourier(self.FValue), self.endshape) + + minimum, maximum = Value.min(), Value.max() + Value = normalize(Value) + + assert Value.size == self.resolution ** 2 + + return Value.ravel(), cv2.resize( + (np.abs(self.FValue) - np.abs(self.FValue).min()) / + (np.abs(self.FValue).max() - np.abs(self.FValue).min()), + (self.endshape[0] / 2, self.endshape[1])).ravel(), (minimum, + maximum) + + def getTransferData(self, redshiftindex): + return {field: transfer_function[redshiftindex](self.krange) for field, transfer_function in self.TransferFunctionList.items()}, self.krange + + def setCosmologialParameters(self, cosmologicalParameters): + self.cosmologicalParameters = cosmologicalParameters + + # Calculate transfer functions + self.TransferFunctionList = ComputeTransferFunctionList(self.cosmologicalParameters, self.redshift) + # Calculate Cl's + self.tCl, self.mPk = self.calculate_spectra(self.cosmologicalParameters) + + def calculate_spectra(self, cosmo_params, force_recalc=False): + settings = cosmo_params.copy() + settings.update({ + "output": "tCl,mPk", + "evolver": "1", + "gauge": "newtonian", + "P_k_max_1/Mpc": 10, + }) + + database = Database(config.DATABASE_DIR, "spectra.dat") + + if settings in database and not force_recalc: + data = database[settings] + ell = data["ell"] + tt = data["tt"] + kh = data["kh"] + Pkh = data["Pkh"] + self.z_rec = data["z_rec"] + else: + cosmo = Class() + cosmo.set(settings) + cosmo.compute() + # Cl's + data = cosmo.raw_cl() + ell = data["ell"] + tt = data["tt"] + # Matter spectrum + k = np.logspace(-3, 1, config.MATTER_SPECTRUM_CLIENT_SAMPLES_PER_DECADE * 4) + Pk = np.vectorize(cosmo.pk)(k, 0) + kh = k * cosmo.h() + Pkh = Pk / cosmo.h()**3 + # Get redshift of decoupling + z_rec = cosmo.get_current_derived_parameters(['z_rec'])['z_rec'] + self.z_rec = z_rec + # Store to database + database[settings] = { + "ell": data["ell"], + "tt": data["tt"], + + "kh": k, + "Pkh": Pk, + + "z_rec": z_rec, + } + + return ClSpectrum(ell[2:], tt[2:]), PkSpectrum(kh, Pkh) + + @property + def z_dec(self): + if self.z_rec is None: + raise ValueError("z_rec hasn't been computed yet") + return self.z_rec + + def setInitialConditions(self, + A=1, + sigma=2, + initialDataType="SI", + SIlimit=None, + SI_ns=0.96): + logging.info("Generating Initial Condition") + + if initialDataType == "Gaussian": + self.ValueE, self.FValue, self.k, self.kxE, self.kyE = GenerateGaussianData( + sigma, self.size, self.resolution) + elif initialDataType == "SI": + self.ValueE, self.FValue, self.k, self.kxE, self.kyE = GenerateSIData( + A, + self.size, + self.resolution, + limit=SIlimit, + ns=SI_ns) + else: + logging.warn("initialDataType " + str(initialDataType) + " not found") diff --git a/class/RealSpaceInterface/Calc2D/DataGeneration.py b/class/RealSpaceInterface/Calc2D/DataGeneration.py new file mode 100644 index 00000000..7e2c2b44 --- /dev/null +++ b/class/RealSpaceInterface/Calc2D/DataGeneration.py @@ -0,0 +1,91 @@ +import logging + +import numpy as np +import cv2 + +from Calc2D.rFourier import realFourier, realInverseFourier + +def GenerateGaussianData(sigma, size, points, A=1): + xr = np.linspace(-size / 2.0, size / 2.0, points) + yr = np.linspace(-size / 2.0, size / 2.0, points) + step = xr[1] - xr[0] + x, y = np.meshgrid( + xr, yr, indexing='ij', sparse=True) # indexing is important + del xr, yr + + #use the more easy formula + Value = A * np.exp(-(x**2 + y**2) / (2 * sigma**2)) + + kx, ky, FValue = realFourier(step, Value) + kxr, kyr = np.meshgrid(kx, ky, indexing='ij', sparse=True) + + k = np.sqrt(kxr**2 + kyr**2) + del kxr, kyr + + kx = (min(kx), max(kx)) #just return the extremal values to save memory + ky = (min(ky), max(ky)) + + ValueE = (Value.min(), Value.max()) + + return ValueE, FValue, k, kx, ky + +def GenerateSIData(A, size, points, limit=None, ns=0.96): + xr = np.linspace(-size / 2.0, size / 2.0, points) + yr = np.linspace(-size / 2.0, size / 2.0, points) + step = xr[1] - xr[0] + + x, y = np.meshgrid( + xr, yr, indexing='ij', sparse=True) # indexing is important + del xr, yr + Value = 0 * x + 0 * y + + kx, ky, FValue = realFourier(step, Value) #FValue==0 + + kxr, kyr = np.meshgrid(kx, ky, indexing='ij', sparse=True) + + k = np.sqrt(kxr**2 + kyr**2) + del kxr, kyr + + if limit == None: + + ktilde = k.flatten() + ktilde[np.argmin(k)] = 10**9 #just let the background be arbitrary low + ktilde = ktilde.reshape(k.shape) + + FValue = np.random.normal( + loc=0, + scale=np.sqrt(A / ktilde**( + 2 - (ns - 1) * 2. / 3.)) / np.sqrt(2)) + np.random.normal( + loc=0, + scale=np.sqrt(A / ktilde** + (2 - (ns - 1) * 2. / 3.)) / np.sqrt(2)) * 1j + + elif type(limit) == list or type(limit) == tuple: + + iunder, junder = np.where(k < limit[1]) + + for t in range(len(iunder)): + + if k[iunder[t]][junder[t]] > limit[0] and k[iunder[t]][junder[t]] > 0: + + FValue[iunder[t]][junder[t]] = np.random.normal( + loc=0, + scale=np.sqrt(A / k[iunder[t]][junder[t]]** + (2 - (ns - 1) * 2. / 3.)) / + np.sqrt(2)) + np.random.normal( + loc=0, + scale=np.sqrt(A / k[iunder[t]][junder[t]]** + (2 - + (ns - 1) * 2. / 3.)) / np.sqrt(2)) * 1j + + else: + raise ValueError("limit must be None or tuple or list") + + Value = realInverseFourier(FValue) + + kx = (min(kx), max(kx)) + ky = (min(ky), max(ky)) + + ValueE = (Value.min(), Value.max()) + + return ValueE, FValue, k, kx, ky diff --git a/class/RealSpaceInterface/Calc2D/DataPropagation.py b/class/RealSpaceInterface/Calc2D/DataPropagation.py new file mode 100644 index 00000000..83bca8e8 --- /dev/null +++ b/class/RealSpaceInterface/Calc2D/DataPropagation.py @@ -0,0 +1,37 @@ +import numpy as np +#uses one dimensional interpolation +def PropagateDatawithListOld(k,FValue,zredindex,transferFunctionlist): + return (transferFunctionlist[zredindex](k.ravel()) * FValue.ravel()).reshape(FValue.shape) + +def PropagateDatawithList(k, FValue, zredindex, transferFunctionlist): + result = {} + for field, transfer_function in transferFunctionlist.items(): + result[field] = (transfer_function[zredindex](k.ravel()) * FValue.ravel()).reshape(FValue.shape) + return result + +#module with uses two dimensional interpolation and propagates all data at once (fastest but high memory consumption) +def PropagateAllData(k,FValue,allzred,transferFunction): + + allFValue = np.ones((len(allzred),FValue.shape[0],FValue.shape[1]),dtype=complex) + + for kxindex in range(FValue.shape[0]): + allFValue[:,kxindex,:] = transferFunction(allzred,k[kxindex])*FValue[kxindex] + + + return allFValue + + +#module with uses 2 dimensional interpolation (slowest but can be useful if the set of redshift changes very often) +def PropagateData(k,FValue,zred,transferFunction): + + FValuenew = np.ones(FValue.shape,dtype=complex) + + for kxindex in range(FValue.shape[0]): + allFValue[kxindex,:] = transferFunction(zred,k[kxindex])*FValue[kxindex] + + + return allFValue + + + + diff --git a/class/RealSpaceInterface/Calc2D/Database.py b/class/RealSpaceInterface/Calc2D/Database.py new file mode 100644 index 00000000..bc8f006c --- /dev/null +++ b/class/RealSpaceInterface/Calc2D/Database.py @@ -0,0 +1,58 @@ +import pickle +import os +import logging +import uuid + +class Database: + def __init__(self, directory, db_file="database.dat"): + self.directory = directory + self.db_file = db_file + + if not os.path.isdir(directory): + raise ValueError("'{}' is not a directory!".format(directory)) + + self.db_path = os.path.join(directory, db_file) + if not os.path.exists(self.db_path): + logging.info("No database found; Creating one at {}.".format(self.db_path)) + with open(self.db_path, "w") as f: + pickle.dump(dict(), f) + + self.db = self.__read_database() + + def __read_database(self): + with open(self.db_path) as f: + return pickle.load(f) + + def __write_database(self): + with open(self.db_path, "w") as f: + pickle.dump(self.db, f) + + def __create_file(self, data): + filename = str(uuid.uuid4()) + with open(os.path.join(self.directory, filename), "w") as f: + pickle.dump(data, f) + return filename + + def __get_frozen_key(self, key): + return frozenset(key.items()) + + def __getitem__(self, key): + frozen_key = self.__get_frozen_key(key) + if frozen_key in self.db: + filename = self.db[frozen_key] + with open(os.path.join(self.directory, filename)) as f: + return pickle.load(f) + else: + raise KeyError("No data for key: {}".format(key)) + + def __setitem__(self, key, data): + frozen_key = self.__get_frozen_key(key) + self.db[frozen_key] = self.__create_file(data) + self.__write_database() + + def __contains__(self, key): + """ + Return whether `self` contains a record + for the given `key`. + """ + return self.__get_frozen_key(key) in self.db \ No newline at end of file diff --git a/class/RealSpaceInterface/Calc2D/TransferFunction.py b/class/RealSpaceInterface/Calc2D/TransferFunction.py new file mode 100644 index 00000000..8747f007 --- /dev/null +++ b/class/RealSpaceInterface/Calc2D/TransferFunction.py @@ -0,0 +1,64 @@ +import os.path +import pickle +import uuid +import numpy as np +from scipy.interpolate import InterpolatedUnivariateSpline, RectBivariateSpline +import sys +import logging + +from classy import Class + +import Calc2D.Database as Database +import config + +TRANSFER_QUANTITIES = ["d_g", "d_ur", "d_cdm", "d_b", "d_g/4 + psi"] + +def ComputeTransferData(settings, redshift): + database_key = settings.copy() + database_key.update({'redshift': tuple(redshift)}) + + database = Database.Database(config.DATABASE_DIR) + if database_key in database: + return database[database_key], redshift + else: + cosmo = Class() + cosmo.set(settings) + cosmo.compute() + + outputData = [cosmo.get_transfer(z) for z in redshift] + # Calculate d_g/4+psi + for transfer_function_dict in outputData: + transfer_function_dict["d_g/4 + psi"] = transfer_function_dict["d_g"]/4 + transfer_function_dict["psi"] + # Now filter the relevant fields + fields = TRANSFER_QUANTITIES + ["k (h/Mpc)"] + outputData = [{field: outputData[i][field] for field in fields} for i in range(len(redshift))] + + database[database_key] = outputData + return outputData, redshift + + +def ComputeTransferFunctionList(cosmologicalParameters, redshift, kperdecade=200, P_k_max=100): + class_settings = cosmologicalParameters.copy() + class_settings.update({ + "output": "mTk", + "gauge": "newtonian", + "evolver": "1", + "P_k_max_h/Mpc": P_k_max, + "k_per_decade_for_pk": kperdecade, + "z_max_pk": str(max(redshift)), + }) + + data_dict, redshift = ComputeTransferData(class_settings, redshift) + transfer_functions = {field: [] for field in TRANSFER_QUANTITIES} + + + for i in range(len(redshift)): + k_data = data_dict[0]["k (h/Mpc)"] * cosmologicalParameters["h"] #in order to get k [1/Mpc] + k_data_zero = np.concatenate(([0.0], k_data)) + for field in TRANSFER_QUANTITIES: + data = data_dict[i][field] / data_dict[i][field][0] + data_zero = np.concatenate(([1.0], data)) + interpolated_func = InterpolatedUnivariateSpline(k_data_zero, data_zero) + transfer_functions[field].append(interpolated_func) + + return transfer_functions diff --git a/class/RealSpaceInterface/Calc2D/__init__.py b/class/RealSpaceInterface/Calc2D/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/class/RealSpaceInterface/Calc2D/rFourier.py b/class/RealSpaceInterface/Calc2D/rFourier.py new file mode 100644 index 00000000..b8a54378 --- /dev/null +++ b/class/RealSpaceInterface/Calc2D/rFourier.py @@ -0,0 +1,21 @@ +import numpy as np +import numpy.fft as fft + +def realFourier(step, Value): + FValue = np.fft.fftshift( + np.fft.rfft2(Value), axes=(0)) #shifting only the x axes + + kx = np.fft.fftshift(np.fft.fftfreq(Value.shape[0], d=step)) * 2 * np.pi + ky = np.fft.rfftfreq(Value.shape[0], d=step) * 2 * np.pi + + return kx, ky, FValue + +def realInverseFourier(FValue): + return np.fft.irfft2(np.fft.ifftshift( + FValue, axes=(0))) #shifting only on the x axes + + +def realInverseAllFourier(allFValue): + return np.fft.irfftn( + np.fft.ifftshift(allFValue, axes=(1)), + axes=(1, 2)) #shifting only on the x axes diff --git a/class/RealSpaceInterface/README b/class/RealSpaceInterface/README new file mode 100644 index 00000000..4fc84d3e --- /dev/null +++ b/class/RealSpaceInterface/README @@ -0,0 +1,18 @@ +For installation of python packages, run + + pip install -r requirements.txt + +Launch the application with + + python tornadoserver.py + +Then in any browser open the URL + + http://localhost:7777 + +------------------------------------------------------------ + +Cache files are located in cache/, so to clear the cache, run + + rm cache/* + diff --git a/class/RealSpaceInterface/colormap_converter.py b/class/RealSpaceInterface/colormap_converter.py new file mode 100644 index 00000000..2c18b21d --- /dev/null +++ b/class/RealSpaceInterface/colormap_converter.py @@ -0,0 +1,34 @@ +import matplotlib.cm as cm +import matplotlib.pyplot as plt +import numpy as np +from PIL import Image +import os + +OUTPUT_DIR = os.path.join("static", "images", "colormaps") +WIDTH = 512 + +def create_image(cmap, width): + values = np.linspace(0, 1, width) + colors = cmap(values).reshape((1, width, 4)) + image = Image.fromarray(np.uint8(255 * colors)) + return image + +cmap_names = {} +cmap_names['Uniform'] = [ + 'viridis', 'plasma', 'inferno', 'magma'] +cmap_names['Diverging'] = [ + 'seismic', 'RdYlBu', 'Spectral' + ] +cmap_names['Miscellaneous'] = ['jet'] + +if __name__ == "__main__": + for category in cmap_names: + category_dir = os.path.join(OUTPUT_DIR, category) + if not os.path.exists(category_dir): + os.mkdir(category_dir) + for name in cmap_names[category]: + result = create_image(plt.get_cmap(name), width=WIDTH) + output_path = os.path.join(category_dir, "{}.png".format(name)) + print(output_path) + result.save(output_path) + diff --git a/class/RealSpaceInterface/config.py b/class/RealSpaceInterface/config.py new file mode 100644 index 00000000..90e91691 --- /dev/null +++ b/class/RealSpaceInterface/config.py @@ -0,0 +1,23 @@ +import os + +# Default port number to listen on. Can be overriden by passing a port number +# as the first command line argument, e.g. `python tornadoserver.py 1234` +PORT = 7777 + +# Directory to store previously computed transfer functions, spectra etc. in +DATABASE_DIR = "cache" + +# Maximum number of thread pool workers (only required for multi-user usage) +MAX_THREADPOOL_WORKERS = 8 + +# Path of colormap directory relative to the static directory from which +# tornado serves static files +COLORMAP_PATH = os.path.join("images", "colormaps") + +# number of sample points for the transfer function that is displayed +# in the client +TRANSFER_FUNCTION_CLIENT_SAMPLES = 400 + +# number of sample points for the matter spectrum that is displayed +# in the client per decade +MATTER_SPECTRUM_CLIENT_SAMPLES_PER_DECADE = 40 diff --git a/class/RealSpaceInterface/requirements.txt b/class/RealSpaceInterface/requirements.txt new file mode 100644 index 00000000..2f2dc9a6 --- /dev/null +++ b/class/RealSpaceInterface/requirements.txt @@ -0,0 +1,7 @@ +futures>=3.0.2 +numpy>=1.8.2 +scipy>=0.14.0 +tornado>=4.0.2 +opencv-python +# Building the Python bindings of CLASS requires Cython +Cython diff --git a/class/RealSpaceInterface/static/css/custom.css b/class/RealSpaceInterface/static/css/custom.css new file mode 100644 index 00000000..872a731b --- /dev/null +++ b/class/RealSpaceInterface/static/css/custom.css @@ -0,0 +1,189 @@ +body { + margin: 0; + overflow: hidden; +} + +.activityIndicator-active, .activityIndicator-inactive { + border-radius: 50%; + width: 20px; + height: 20px; + display: inline-block; + vertical-align: sub; +} + +.activityIndicator-active { + border: 3px solid #f3f3f3; + border-top: 3px solid #3498db; + animation: spin 2s linear infinite; +} + +.activityIndicator-inactive { + border: 3px solid #444; + display: none; +} + +@keyframes spin { + 0% { transform: rotate(0deg); } + 100% { transform: rotate(360deg); } +} + +td.color-circle-container { + vertical-align: middle; +} + +.color-circle { + width: 24px; + height: 24px; + border-radius: 50%; + margin: auto; +} + +.popover { + max-width: 100%; +} + +.modal { + overflow-y: scroll; +} + +/* PLOTS */ + +#plotWindowContainer { + position: absolute; + top: 50px; + left: 0px; + overflow: hidden; +} + +#plotWindowWrapper { + min-width: 550px; + border-radius: 3px; +} + +.plotWindowWrapperHidden { +} + +.plotWindowWrapperVisible { + padding-top: 10px; + padding-bottom: 10px; + padding-left: 10px; + padding-right: 10px; +} + +.plotWindowHidden, .plotWindowVisible { + overflow-x: hidden; + background-color: rgba(255, 255, 255, 0.8); +} + +.plotWindowHidden { + display: none; + margin: 0px; +} + +.plotWindowVisible { + display: block; + min-height: 200px; +} + +.plotWindowVisible:not(:last-child) { + margin-bottom: 10px; +} + +#plotWindowToggle { + width: 100%; +} + +/* END PLOTS */ + +#aboutLink { + position: absolute; + padding: 5px; + right: 0; + bottom: 0; + text-align: right; + vertical-align: bottom; + border-top-left-radius: 3px; +} + +#statusBar { + position: absolute; + bottom: 0; + left: 0; + padding: 5px; + border-top-right-radius: 3px; +} + +#statusBar p { + margin: 0; + vertical-align: bottom; +} + +.status-bar-item { + display: inline-block; +} + +/* */ +#simulationTable td { + text-align: center; + vertical-align: middle; +} + +#simulationTable th { + text-align: center; + border: none; +} + +.visible-checkbox { + vertical-align: middle; +} + +/* .cmap-preview, .cmap-preview-button { */ +/* } */ + +.cmap-preview { + width: 64px; + height: inherit; + margin-left: 1em; +} + +/* .cmap-preview-button { */ +/* height: 1em; */ +/* vertical-align: middle; */ +/* } */ + +#colormap-selector-button-placeholder { + width: 64px; + display: inline-block; +} + +.colormap-selector-item { + display: flex; + justify-content: space-between; +} + +.scrollable-menu { + height: auto; + max-height: 200px; + overflow-x: hidden; +} + + +/* FIX DAT.GUI */ +.dg .c input[type=text] { + line-height:normal; +} + +.dg .c div { + box-sizing: content-box; +} + +/* END FIX */ + + +#exceptionModalMessage { + white-space: pre; +} + +.modal-lg { + max-width: 900px; +} diff --git a/class/RealSpaceInterface/static/css/timeline.css b/class/RealSpaceInterface/static/css/timeline.css new file mode 100644 index 00000000..e87f469e --- /dev/null +++ b/class/RealSpaceInterface/static/css/timeline.css @@ -0,0 +1,28 @@ +.player { + width: 25%; + border-radius: 2px; + margin-top: 6px; +} + +.timeline { + height: 12px; + /*background: linear-gradient(to right, red 0%, red 20%, green 20%);*/ + border-radius: 8px; + /* horizontal vertical blur spread color */ + /* box-shadow: inset 2px 2px 20px -5px #333; */ + cursor: pointer; +} + +.scrubber { + width: 18px; + height: 18px; + border-radius: 50%; + float: left; + cursor: pointer; + background: linear-gradient(to bottom, hsl(134, 61%, 45%), hsl(134, 61%, 35%)); + box-shadow: 0px 2px 10px 2px #333; +} + +.scrubber:hover { + background: linear-gradient(to bottom, hsl(134, 61%, 65%), hsl(134, 61%, 55%)); +} diff --git a/class/RealSpaceInterface/static/favicon-16x16.png b/class/RealSpaceInterface/static/favicon-16x16.png new file mode 100644 index 00000000..b1eaa217 Binary files /dev/null and b/class/RealSpaceInterface/static/favicon-16x16.png differ diff --git a/class/RealSpaceInterface/static/favicon-32x32.png b/class/RealSpaceInterface/static/favicon-32x32.png new file mode 100644 index 00000000..d343d67a Binary files /dev/null and b/class/RealSpaceInterface/static/favicon-32x32.png differ diff --git a/class/RealSpaceInterface/static/fonts/open-iconic/.gitignore b/class/RealSpaceInterface/static/fonts/open-iconic/.gitignore new file mode 100644 index 00000000..496ee2ca --- /dev/null +++ b/class/RealSpaceInterface/static/fonts/open-iconic/.gitignore @@ -0,0 +1 @@ +.DS_Store \ No newline at end of file diff --git a/class/RealSpaceInterface/static/fonts/open-iconic/FONT-LICENSE b/class/RealSpaceInterface/static/fonts/open-iconic/FONT-LICENSE new file mode 100644 index 00000000..a1dc03f3 --- /dev/null +++ b/class/RealSpaceInterface/static/fonts/open-iconic/FONT-LICENSE @@ -0,0 +1,86 @@ +SIL OPEN FONT LICENSE Version 1.1 + +Copyright (c) 2014 Waybury + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/class/RealSpaceInterface/static/fonts/open-iconic/ICON-LICENSE b/class/RealSpaceInterface/static/fonts/open-iconic/ICON-LICENSE new file mode 100644 index 00000000..2199f4a6 --- /dev/null +++ b/class/RealSpaceInterface/static/fonts/open-iconic/ICON-LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2014 Waybury + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. \ No newline at end of file diff --git a/class/RealSpaceInterface/static/fonts/open-iconic/README.md b/class/RealSpaceInterface/static/fonts/open-iconic/README.md new file mode 100644 index 00000000..6b810e47 --- /dev/null +++ b/class/RealSpaceInterface/static/fonts/open-iconic/README.md @@ -0,0 +1,114 @@ +[Open Iconic v1.1.1](http://useiconic.com/open) +=========== + +### Open Iconic is the open source sibling of [Iconic](http://useiconic.com). It is a hyper-legible collection of 223 icons with a tiny footprint—ready to use with Bootstrap and Foundation. [View the collection](http://useiconic.com/open#icons) + + + +## What's in Open Iconic? + +* 223 icons designed to be legible down to 8 pixels +* Super-light SVG files - 61.8 for the entire set +* SVG sprite—the modern replacement for icon fonts +* Webfont (EOT, OTF, SVG, TTF, WOFF), PNG and WebP formats +* Webfont stylesheets (including versions for Bootstrap and Foundation) in CSS, LESS, SCSS and Stylus formats +* PNG and WebP raster images in 8px, 16px, 24px, 32px, 48px and 64px. + + +## Getting Started + +#### For code samples and everything else you need to get started with Open Iconic, check out our [Icons](http://useiconic.com/open#icons) and [Reference](http://useiconic.com/open#reference) sections. + +### General Usage + +#### Using Open Iconic's SVGs + +We like SVGs and we think they're the way to display icons on the web. Since Open Iconic are just basic SVGs, we suggest you display them like you would any other image (don't forget the `alt` attribute). + +``` +icon name +``` + +#### Using Open Iconic's SVG Sprite + +Open Iconic also comes in a SVG sprite which allows you to display all the icons in the set with a single request. It's like an icon font, without being a hack. + +Adding an icon from an SVG sprite is a little different than what you're used to, but it's still a piece of cake. *Tip: To make your icons easily style able, we suggest adding a general class to the* `` *tag and a unique class name for each different icon in the* `` *tag.* + +``` + + + +``` + +Sizing icons only needs basic CSS. All the icons are in a square format, so just set the `` tag with equal width and height dimensions. + +``` +.icon { + width: 16px; + height: 16px; +} +``` + +Coloring icons is even easier. All you need to do is set the `fill` rule on the `` tag. + +``` +.icon-account-login { + fill: #f00; +} +``` + +To learn more about SVG Sprites, read [Chris Coyier's guide](http://css-tricks.com/svg-sprites-use-better-icon-fonts/). + +#### Using Open Iconic's Icon Font... + + +##### …with Bootstrap + +You can find our Bootstrap stylesheets in `font/css/open-iconic-bootstrap.{css, less, scss, styl}` + + +``` + +``` + + +``` + +``` + +##### …with Foundation + +You can find our Foundation stylesheets in `font/css/open-iconic-foundation.{css, less, scss, styl}` + +``` + +``` + + +``` + +``` + +##### …on its own + +You can find our default stylesheets in `font/css/open-iconic.{css, less, scss, styl}` + +``` + +``` + +``` + +``` + + +## License + +### Icons + +All code (including SVG markup) is under the [MIT License](http://opensource.org/licenses/MIT). + +### Fonts + +All fonts are under the [SIL Licensed](http://scripts.sil.org/cms/scripts/page.php?item_id=OFL_web). diff --git a/class/RealSpaceInterface/static/fonts/open-iconic/bower.json b/class/RealSpaceInterface/static/fonts/open-iconic/bower.json new file mode 100644 index 00000000..fbf96616 --- /dev/null +++ b/class/RealSpaceInterface/static/fonts/open-iconic/bower.json @@ -0,0 +1,21 @@ +{ + "name": "open-iconic", + "description": "An open source icon set in SVG, webfont and raster formats", + "version": "1.1.1", + "license": [ + "MIT", + "OFL-1.1" + ], + "homepage": "https://useiconic.com/open", + "repository": { + "type": "git", + "url": "git://github.com/iconic/open-iconic.git" + }, + "main": [ + "./sprite/open-iconic.min.svg" + ], + "ignore": [ + "*.json", + "*.md" + ] +} diff --git a/class/RealSpaceInterface/static/fonts/open-iconic/font/css/open-iconic-bootstrap.css b/class/RealSpaceInterface/static/fonts/open-iconic/font/css/open-iconic-bootstrap.css new file mode 100644 index 00000000..56c4e5f3 --- /dev/null +++ b/class/RealSpaceInterface/static/fonts/open-iconic/font/css/open-iconic-bootstrap.css @@ -0,0 +1,952 @@ +/* Bootstrap */ + +@font-face { + font-family: 'Icons'; + src: url('../fonts/open-iconic.eot'); + src: url('../fonts/open-iconic.eot?#iconic-sm') format('embedded-opentype'), url('../fonts/open-iconic.woff') format('woff'), url('../fonts/open-iconic.ttf') format('truetype'), url('../fonts/open-iconic.otf') format('opentype'), url('../fonts/open-iconic.svg#iconic-sm') format('svg'); + font-weight: normal; + font-style: normal; +} + +.oi { + position: relative; + top: 1px; + display: inline-block; + speak:none; + font-family: 'Icons'; + font-style: normal; + font-weight: normal; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.oi:empty:before { + width: 1em; + text-align: center; + box-sizing: content-box; +} + +.oi.oi-align-center:before { + text-align: center; +} + +.oi.oi-align-left:before { + text-align: left; +} + +.oi.oi-align-right:before { + text-align: right; +} + + +.oi.oi-flip-horizontal:before { + -webkit-transform: scale(-1, 1); + -ms-transform: scale(-1, 1); + transform: scale(-1, 1); +} + +.oi.oi-flip-vertical:before { + -webkit-transform: scale(1, -1); + -ms-transform: scale(-1, 1); + transform: scale(1, -1); +} + +.oi.oi-flip-horizontal-vertical:before { + -webkit-transform: scale(-1, -1); + -ms-transform: scale(-1, 1); + transform: scale(-1, -1); +} + + +.oi-account-login:before { + content:'\e000'; +} + +.oi-account-logout:before { + content:'\e001'; +} + +.oi-action-redo:before { + content:'\e002'; +} + +.oi-action-undo:before { + content:'\e003'; +} + +.oi-align-center:before { + content:'\e004'; +} + +.oi-align-left:before { + content:'\e005'; +} + +.oi-align-right:before { + content:'\e006'; +} + +.oi-aperture:before { + content:'\e007'; +} + +.oi-arrow-bottom:before { + content:'\e008'; +} + +.oi-arrow-circle-bottom:before { + content:'\e009'; +} + +.oi-arrow-circle-left:before { + content:'\e00a'; +} + +.oi-arrow-circle-right:before { + content:'\e00b'; +} + +.oi-arrow-circle-top:before { + content:'\e00c'; +} + +.oi-arrow-left:before { + content:'\e00d'; +} + +.oi-arrow-right:before { + content:'\e00e'; +} + +.oi-arrow-thick-bottom:before { + content:'\e00f'; +} + +.oi-arrow-thick-left:before { + content:'\e010'; +} + +.oi-arrow-thick-right:before { + content:'\e011'; +} + +.oi-arrow-thick-top:before { + content:'\e012'; +} + +.oi-arrow-top:before { + content:'\e013'; +} + +.oi-audio-spectrum:before { + content:'\e014'; +} + +.oi-audio:before { + content:'\e015'; +} + +.oi-badge:before { + content:'\e016'; +} + +.oi-ban:before { + content:'\e017'; +} + +.oi-bar-chart:before { + content:'\e018'; +} + +.oi-basket:before { + content:'\e019'; +} + +.oi-battery-empty:before { + content:'\e01a'; +} + +.oi-battery-full:before { + content:'\e01b'; +} + +.oi-beaker:before { + content:'\e01c'; +} + +.oi-bell:before { + content:'\e01d'; +} + +.oi-bluetooth:before { + content:'\e01e'; +} + +.oi-bold:before { + content:'\e01f'; +} + +.oi-bolt:before { + content:'\e020'; +} + +.oi-book:before { + content:'\e021'; +} + +.oi-bookmark:before { + content:'\e022'; +} + +.oi-box:before { + content:'\e023'; +} + +.oi-briefcase:before { + content:'\e024'; +} + +.oi-british-pound:before { + content:'\e025'; +} + +.oi-browser:before { + content:'\e026'; +} + +.oi-brush:before { + content:'\e027'; +} + +.oi-bug:before { + content:'\e028'; +} + +.oi-bullhorn:before { + content:'\e029'; +} + +.oi-calculator:before { + content:'\e02a'; +} + +.oi-calendar:before { + content:'\e02b'; +} + +.oi-camera-slr:before { + content:'\e02c'; +} + +.oi-caret-bottom:before { + content:'\e02d'; +} + +.oi-caret-left:before { + content:'\e02e'; +} + +.oi-caret-right:before { + content:'\e02f'; +} + +.oi-caret-top:before { + content:'\e030'; +} + +.oi-cart:before { + content:'\e031'; +} + +.oi-chat:before { + content:'\e032'; +} + +.oi-check:before { + content:'\e033'; +} + +.oi-chevron-bottom:before { + content:'\e034'; +} + +.oi-chevron-left:before { + content:'\e035'; +} + +.oi-chevron-right:before { + content:'\e036'; +} + +.oi-chevron-top:before { + content:'\e037'; +} + +.oi-circle-check:before { + content:'\e038'; +} + +.oi-circle-x:before { + content:'\e039'; +} + +.oi-clipboard:before { + content:'\e03a'; +} + +.oi-clock:before { + content:'\e03b'; +} + +.oi-cloud-download:before { + content:'\e03c'; +} + +.oi-cloud-upload:before { + content:'\e03d'; +} + +.oi-cloud:before { + content:'\e03e'; +} + +.oi-cloudy:before { + content:'\e03f'; +} + +.oi-code:before { + content:'\e040'; +} + +.oi-cog:before { + content:'\e041'; +} + +.oi-collapse-down:before { + content:'\e042'; +} + +.oi-collapse-left:before { + content:'\e043'; +} + +.oi-collapse-right:before { + content:'\e044'; +} + +.oi-collapse-up:before { + content:'\e045'; +} + +.oi-command:before { + content:'\e046'; +} + +.oi-comment-square:before { + content:'\e047'; +} + +.oi-compass:before { + content:'\e048'; +} + +.oi-contrast:before { + content:'\e049'; +} + +.oi-copywriting:before { + content:'\e04a'; +} + +.oi-credit-card:before { + content:'\e04b'; +} + +.oi-crop:before { + content:'\e04c'; +} + +.oi-dashboard:before { + content:'\e04d'; +} + +.oi-data-transfer-download:before { + content:'\e04e'; +} + +.oi-data-transfer-upload:before { + content:'\e04f'; +} + +.oi-delete:before { + content:'\e050'; +} + +.oi-dial:before { + content:'\e051'; +} + +.oi-document:before { + content:'\e052'; +} + +.oi-dollar:before { + content:'\e053'; +} + +.oi-double-quote-sans-left:before { + content:'\e054'; +} + +.oi-double-quote-sans-right:before { + content:'\e055'; +} + +.oi-double-quote-serif-left:before { + content:'\e056'; +} + +.oi-double-quote-serif-right:before { + content:'\e057'; +} + +.oi-droplet:before { + content:'\e058'; +} + +.oi-eject:before { + content:'\e059'; +} + +.oi-elevator:before { + content:'\e05a'; +} + +.oi-ellipses:before { + content:'\e05b'; +} + +.oi-envelope-closed:before { + content:'\e05c'; +} + +.oi-envelope-open:before { + content:'\e05d'; +} + +.oi-euro:before { + content:'\e05e'; +} + +.oi-excerpt:before { + content:'\e05f'; +} + +.oi-expand-down:before { + content:'\e060'; +} + +.oi-expand-left:before { + content:'\e061'; +} + +.oi-expand-right:before { + content:'\e062'; +} + +.oi-expand-up:before { + content:'\e063'; +} + +.oi-external-link:before { + content:'\e064'; +} + +.oi-eye:before { + content:'\e065'; +} + +.oi-eyedropper:before { + content:'\e066'; +} + +.oi-file:before { + content:'\e067'; +} + +.oi-fire:before { + content:'\e068'; +} + +.oi-flag:before { + content:'\e069'; +} + +.oi-flash:before { + content:'\e06a'; +} + +.oi-folder:before { + content:'\e06b'; +} + +.oi-fork:before { + content:'\e06c'; +} + +.oi-fullscreen-enter:before { + content:'\e06d'; +} + +.oi-fullscreen-exit:before { + content:'\e06e'; +} + +.oi-globe:before { + content:'\e06f'; +} + +.oi-graph:before { + content:'\e070'; +} + +.oi-grid-four-up:before { + content:'\e071'; +} + +.oi-grid-three-up:before { + content:'\e072'; +} + +.oi-grid-two-up:before { + content:'\e073'; +} + +.oi-hard-drive:before { + content:'\e074'; +} + +.oi-header:before { + content:'\e075'; +} + +.oi-headphones:before { + content:'\e076'; +} + +.oi-heart:before { + content:'\e077'; +} + +.oi-home:before { + content:'\e078'; +} + +.oi-image:before { + content:'\e079'; +} + +.oi-inbox:before { + content:'\e07a'; +} + +.oi-infinity:before { + content:'\e07b'; +} + +.oi-info:before { + content:'\e07c'; +} + +.oi-italic:before { + content:'\e07d'; +} + +.oi-justify-center:before { + content:'\e07e'; +} + +.oi-justify-left:before { + content:'\e07f'; +} + +.oi-justify-right:before { + content:'\e080'; +} + +.oi-key:before { + content:'\e081'; +} + +.oi-laptop:before { + content:'\e082'; +} + +.oi-layers:before { + content:'\e083'; +} + +.oi-lightbulb:before { + content:'\e084'; +} + +.oi-link-broken:before { + content:'\e085'; +} + +.oi-link-intact:before { + content:'\e086'; +} + +.oi-list-rich:before { + content:'\e087'; +} + +.oi-list:before { + content:'\e088'; +} + +.oi-location:before { + content:'\e089'; +} + +.oi-lock-locked:before { + content:'\e08a'; +} + +.oi-lock-unlocked:before { + content:'\e08b'; +} + +.oi-loop-circular:before { + content:'\e08c'; +} + +.oi-loop-square:before { + content:'\e08d'; +} + +.oi-loop:before { + content:'\e08e'; +} + +.oi-magnifying-glass:before { + content:'\e08f'; +} + +.oi-map-marker:before { + content:'\e090'; +} + +.oi-map:before { + content:'\e091'; +} + +.oi-media-pause:before { + content:'\e092'; +} + +.oi-media-play:before { + content:'\e093'; +} + +.oi-media-record:before { + content:'\e094'; +} + +.oi-media-skip-backward:before { + content:'\e095'; +} + +.oi-media-skip-forward:before { + content:'\e096'; +} + +.oi-media-step-backward:before { + content:'\e097'; +} + +.oi-media-step-forward:before { + content:'\e098'; +} + +.oi-media-stop:before { + content:'\e099'; +} + +.oi-medical-cross:before { + content:'\e09a'; +} + +.oi-menu:before { + content:'\e09b'; +} + +.oi-microphone:before { + content:'\e09c'; +} + +.oi-minus:before { + content:'\e09d'; +} + +.oi-monitor:before { + content:'\e09e'; +} + +.oi-moon:before { + content:'\e09f'; +} + +.oi-move:before { + content:'\e0a0'; +} + +.oi-musical-note:before { + content:'\e0a1'; +} + +.oi-paperclip:before { + content:'\e0a2'; +} + +.oi-pencil:before { + content:'\e0a3'; +} + +.oi-people:before { + content:'\e0a4'; +} + +.oi-person:before { + content:'\e0a5'; +} + +.oi-phone:before { + content:'\e0a6'; +} + +.oi-pie-chart:before { + content:'\e0a7'; +} + +.oi-pin:before { + content:'\e0a8'; +} + +.oi-play-circle:before { + content:'\e0a9'; +} + +.oi-plus:before { + content:'\e0aa'; +} + +.oi-power-standby:before { + content:'\e0ab'; +} + +.oi-print:before { + content:'\e0ac'; +} + +.oi-project:before { + content:'\e0ad'; +} + +.oi-pulse:before { + content:'\e0ae'; +} + +.oi-puzzle-piece:before { + content:'\e0af'; +} + +.oi-question-mark:before { + content:'\e0b0'; +} + +.oi-rain:before { + content:'\e0b1'; +} + +.oi-random:before { + content:'\e0b2'; +} + +.oi-reload:before { + content:'\e0b3'; +} + +.oi-resize-both:before { + content:'\e0b4'; +} + +.oi-resize-height:before { + content:'\e0b5'; +} + +.oi-resize-width:before { + content:'\e0b6'; +} + +.oi-rss-alt:before { + content:'\e0b7'; +} + +.oi-rss:before { + content:'\e0b8'; +} + +.oi-script:before { + content:'\e0b9'; +} + +.oi-share-boxed:before { + content:'\e0ba'; +} + +.oi-share:before { + content:'\e0bb'; +} + +.oi-shield:before { + content:'\e0bc'; +} + +.oi-signal:before { + content:'\e0bd'; +} + +.oi-signpost:before { + content:'\e0be'; +} + +.oi-sort-ascending:before { + content:'\e0bf'; +} + +.oi-sort-descending:before { + content:'\e0c0'; +} + +.oi-spreadsheet:before { + content:'\e0c1'; +} + +.oi-star:before { + content:'\e0c2'; +} + +.oi-sun:before { + content:'\e0c3'; +} + +.oi-tablet:before { + content:'\e0c4'; +} + +.oi-tag:before { + content:'\e0c5'; +} + +.oi-tags:before { + content:'\e0c6'; +} + +.oi-target:before { + content:'\e0c7'; +} + +.oi-task:before { + content:'\e0c8'; +} + +.oi-terminal:before { + content:'\e0c9'; +} + +.oi-text:before { + content:'\e0ca'; +} + +.oi-thumb-down:before { + content:'\e0cb'; +} + +.oi-thumb-up:before { + content:'\e0cc'; +} + +.oi-timer:before { + content:'\e0cd'; +} + +.oi-transfer:before { + content:'\e0ce'; +} + +.oi-trash:before { + content:'\e0cf'; +} + +.oi-underline:before { + content:'\e0d0'; +} + +.oi-vertical-align-bottom:before { + content:'\e0d1'; +} + +.oi-vertical-align-center:before { + content:'\e0d2'; +} + +.oi-vertical-align-top:before { + content:'\e0d3'; +} + +.oi-video:before { + content:'\e0d4'; +} + +.oi-volume-high:before { + content:'\e0d5'; +} + +.oi-volume-low:before { + content:'\e0d6'; +} + +.oi-volume-off:before { + content:'\e0d7'; +} + +.oi-warning:before { + content:'\e0d8'; +} + +.oi-wifi:before { + content:'\e0d9'; +} + +.oi-wrench:before { + content:'\e0da'; +} + +.oi-x:before { + content:'\e0db'; +} + +.oi-yen:before { + content:'\e0dc'; +} + +.oi-zoom-in:before { + content:'\e0dd'; +} + +.oi-zoom-out:before { + content:'\e0de'; +} diff --git a/class/RealSpaceInterface/static/fonts/open-iconic/font/css/open-iconic-bootstrap.less b/class/RealSpaceInterface/static/fonts/open-iconic/font/css/open-iconic-bootstrap.less new file mode 100644 index 00000000..fc3fe341 --- /dev/null +++ b/class/RealSpaceInterface/static/fonts/open-iconic/font/css/open-iconic-bootstrap.less @@ -0,0 +1,960 @@ +/* Bootstrap */ + +/* Override Bootstrap default variable */ +//@icon-font-path: "../fonts/"; + +@font-face { + font-family: 'Icons'; + src: ~"url('@{icon-font-path}open-iconic.eot')"; + src: ~"url('@{icon-font-path}open-iconic.eot?#iconic-sm') format('embedded-opentype')", + ~"url('@{icon-font-path}open-iconic.woff') format('woff')", + ~"url('@{icon-font-path}open-iconic.ttf') format('truetype')", + ~"url('@{icon-font-path}open-iconic.svg#iconic-sm') format('svg')"; + font-weight: normal; + font-style: normal; +} + +// Catchall baseclass +.oi { + position: relative; + top: 1px; + display: inline-block; + font-family: 'Icons'; + font-style: normal; + font-weight: normal; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + + &:empty:before { + width: 1em; + text-align: center; + box-sizing: content-box; + } + + &.oi-align-center:before { + text-align: center; + } + + &.oi-align-left:before { + text-align: left; + } + + &.oi-align-right:before { + text-align: right; + } + + + &.oi-flip-horizontal:before { + -webkit-transform: scale(-1, 1); + -ms-transform: scale(-1, 1); + transform: scale(-1, 1); + } + + &.oi-flip-vertical:before { + -webkit-transform: scale(1, -1); + -ms-transform: scale(-1, 1); + transform: scale(1, -1); + } + + &.oi-flip-horizontal-vertical:before { + -webkit-transform: scale(-1, -1); + -ms-transform: scale(-1, 1); + transform: scale(-1, -1); + } +} + + + +.oi-account-login:before { + content:"\e000"; +} + +.oi-account-logout:before { + content:"\e001"; +} + +.oi-action-redo:before { + content:"\e002"; +} + +.oi-action-undo:before { + content:"\e003"; +} + +.oi-align-center:before { + content:"\e004"; +} + +.oi-align-left:before { + content:"\e005"; +} + +.oi-align-right:before { + content:"\e006"; +} + +.oi-aperture:before { + content:"\e007"; +} + +.oi-arrow-bottom:before { + content:"\e008"; +} + +.oi-arrow-circle-bottom:before { + content:"\e009"; +} + +.oi-arrow-circle-left:before { + content:"\e00a"; +} + +.oi-arrow-circle-right:before { + content:"\e00b"; +} + +.oi-arrow-circle-top:before { + content:"\e00c"; +} + +.oi-arrow-left:before { + content:"\e00d"; +} + +.oi-arrow-right:before { + content:"\e00e"; +} + +.oi-arrow-thick-bottom:before { + content:"\e00f"; +} + +.oi-arrow-thick-left:before { + content:"\e010"; +} + +.oi-arrow-thick-right:before { + content:"\e011"; +} + +.oi-arrow-thick-top:before { + content:"\e012"; +} + +.oi-arrow-top:before { + content:"\e013"; +} + +.oi-audio-spectrum:before { + content:"\e014"; +} + +.oi-audio:before { + content:"\e015"; +} + +.oi-badge:before { + content:"\e016"; +} + +.oi-ban:before { + content:"\e017"; +} + +.oi-bar-chart:before { + content:"\e018"; +} + +.oi-basket:before { + content:"\e019"; +} + +.oi-battery-empty:before { + content:"\e01a"; +} + +.oi-battery-full:before { + content:"\e01b"; +} + +.oi-beaker:before { + content:"\e01c"; +} + +.oi-bell:before { + content:"\e01d"; +} + +.oi-bluetooth:before { + content:"\e01e"; +} + +.oi-bold:before { + content:"\e01f"; +} + +.oi-bolt:before { + content:"\e020"; +} + +.oi-book:before { + content:"\e021"; +} + +.oi-bookmark:before { + content:"\e022"; +} + +.oi-box:before { + content:"\e023"; +} + +.oi-briefcase:before { + content:"\e024"; +} + +.oi-british-pound:before { + content:"\e025"; +} + +.oi-browser:before { + content:"\e026"; +} + +.oi-brush:before { + content:"\e027"; +} + +.oi-bug:before { + content:"\e028"; +} + +.oi-bullhorn:before { + content:"\e029"; +} + +.oi-calculator:before { + content:"\e02a"; +} + +.oi-calendar:before { + content:"\e02b"; +} + +.oi-camera-slr:before { + content:"\e02c"; +} + +.oi-caret-bottom:before { + content:"\e02d"; +} + +.oi-caret-left:before { + content:"\e02e"; +} + +.oi-caret-right:before { + content:"\e02f"; +} + +.oi-caret-top:before { + content:"\e030"; +} + +.oi-cart:before { + content:"\e031"; +} + +.oi-chat:before { + content:"\e032"; +} + +.oi-check:before { + content:"\e033"; +} + +.oi-chevron-bottom:before { + content:"\e034"; +} + +.oi-chevron-left:before { + content:"\e035"; +} + +.oi-chevron-right:before { + content:"\e036"; +} + +.oi-chevron-top:before { + content:"\e037"; +} + +.oi-circle-check:before { + content:"\e038"; +} + +.oi-circle-x:before { + content:"\e039"; +} + +.oi-clipboard:before { + content:"\e03a"; +} + +.oi-clock:before { + content:"\e03b"; +} + +.oi-cloud-download:before { + content:"\e03c"; +} + +.oi-cloud-upload:before { + content:"\e03d"; +} + +.oi-cloud:before { + content:"\e03e"; +} + +.oi-cloudy:before { + content:"\e03f"; +} + +.oi-code:before { + content:"\e040"; +} + +.oi-cog:before { + content:"\e041"; +} + +.oi-collapse-down:before { + content:"\e042"; +} + +.oi-collapse-left:before { + content:"\e043"; +} + +.oi-collapse-right:before { + content:"\e044"; +} + +.oi-collapse-up:before { + content:"\e045"; +} + +.oi-command:before { + content:"\e046"; +} + +.oi-comment-square:before { + content:"\e047"; +} + +.oi-compass:before { + content:"\e048"; +} + +.oi-contrast:before { + content:"\e049"; +} + +.oi-copywriting:before { + content:"\e04a"; +} + +.oi-credit-card:before { + content:"\e04b"; +} + +.oi-crop:before { + content:"\e04c"; +} + +.oi-dashboard:before { + content:"\e04d"; +} + +.oi-data-transfer-download:before { + content:"\e04e"; +} + +.oi-data-transfer-upload:before { + content:"\e04f"; +} + +.oi-delete:before { + content:"\e050"; +} + +.oi-dial:before { + content:"\e051"; +} + +.oi-document:before { + content:"\e052"; +} + +.oi-dollar:before { + content:"\e053"; +} + +.oi-double-quote-sans-left:before { + content:"\e054"; +} + +.oi-double-quote-sans-right:before { + content:"\e055"; +} + +.oi-double-quote-serif-left:before { + content:"\e056"; +} + +.oi-double-quote-serif-right:before { + content:"\e057"; +} + +.oi-droplet:before { + content:"\e058"; +} + +.oi-eject:before { + content:"\e059"; +} + +.oi-elevator:before { + content:"\e05a"; +} + +.oi-ellipses:before { + content:"\e05b"; +} + +.oi-envelope-closed:before { + content:"\e05c"; +} + +.oi-envelope-open:before { + content:"\e05d"; +} + +.oi-euro:before { + content:"\e05e"; +} + +.oi-excerpt:before { + content:"\e05f"; +} + +.oi-expand-down:before { + content:"\e060"; +} + +.oi-expand-left:before { + content:"\e061"; +} + +.oi-expand-right:before { + content:"\e062"; +} + +.oi-expand-up:before { + content:"\e063"; +} + +.oi-external-link:before { + content:"\e064"; +} + +.oi-eye:before { + content:"\e065"; +} + +.oi-eyedropper:before { + content:"\e066"; +} + +.oi-file:before { + content:"\e067"; +} + +.oi-fire:before { + content:"\e068"; +} + +.oi-flag:before { + content:"\e069"; +} + +.oi-flash:before { + content:"\e06a"; +} + +.oi-folder:before { + content:"\e06b"; +} + +.oi-fork:before { + content:"\e06c"; +} + +.oi-fullscreen-enter:before { + content:"\e06d"; +} + +.oi-fullscreen-exit:before { + content:"\e06e"; +} + +.oi-globe:before { + content:"\e06f"; +} + +.oi-graph:before { + content:"\e070"; +} + +.oi-grid-four-up:before { + content:"\e071"; +} + +.oi-grid-three-up:before { + content:"\e072"; +} + +.oi-grid-two-up:before { + content:"\e073"; +} + +.oi-hard-drive:before { + content:"\e074"; +} + +.oi-header:before { + content:"\e075"; +} + +.oi-headphones:before { + content:"\e076"; +} + +.oi-heart:before { + content:"\e077"; +} + +.oi-home:before { + content:"\e078"; +} + +.oi-image:before { + content:"\e079"; +} + +.oi-inbox:before { + content:"\e07a"; +} + +.oi-infinity:before { + content:"\e07b"; +} + +.oi-info:before { + content:"\e07c"; +} + +.oi-italic:before { + content:"\e07d"; +} + +.oi-justify-center:before { + content:"\e07e"; +} + +.oi-justify-left:before { + content:"\e07f"; +} + +.oi-justify-right:before { + content:"\e080"; +} + +.oi-key:before { + content:"\e081"; +} + +.oi-laptop:before { + content:"\e082"; +} + +.oi-layers:before { + content:"\e083"; +} + +.oi-lightbulb:before { + content:"\e084"; +} + +.oi-link-broken:before { + content:"\e085"; +} + +.oi-link-intact:before { + content:"\e086"; +} + +.oi-list-rich:before { + content:"\e087"; +} + +.oi-list:before { + content:"\e088"; +} + +.oi-location:before { + content:"\e089"; +} + +.oi-lock-locked:before { + content:"\e08a"; +} + +.oi-lock-unlocked:before { + content:"\e08b"; +} + +.oi-loop-circular:before { + content:"\e08c"; +} + +.oi-loop-square:before { + content:"\e08d"; +} + +.oi-loop:before { + content:"\e08e"; +} + +.oi-magnifying-glass:before { + content:"\e08f"; +} + +.oi-map-marker:before { + content:"\e090"; +} + +.oi-map:before { + content:"\e091"; +} + +.oi-media-pause:before { + content:"\e092"; +} + +.oi-media-play:before { + content:"\e093"; +} + +.oi-media-record:before { + content:"\e094"; +} + +.oi-media-skip-backward:before { + content:"\e095"; +} + +.oi-media-skip-forward:before { + content:"\e096"; +} + +.oi-media-step-backward:before { + content:"\e097"; +} + +.oi-media-step-forward:before { + content:"\e098"; +} + +.oi-media-stop:before { + content:"\e099"; +} + +.oi-medical-cross:before { + content:"\e09a"; +} + +.oi-menu:before { + content:"\e09b"; +} + +.oi-microphone:before { + content:"\e09c"; +} + +.oi-minus:before { + content:"\e09d"; +} + +.oi-monitor:before { + content:"\e09e"; +} + +.oi-moon:before { + content:"\e09f"; +} + +.oi-move:before { + content:"\e0a0"; +} + +.oi-musical-note:before { + content:"\e0a1"; +} + +.oi-paperclip:before { + content:"\e0a2"; +} + +.oi-pencil:before { + content:"\e0a3"; +} + +.oi-people:before { + content:"\e0a4"; +} + +.oi-person:before { + content:"\e0a5"; +} + +.oi-phone:before { + content:"\e0a6"; +} + +.oi-pie-chart:before { + content:"\e0a7"; +} + +.oi-pin:before { + content:"\e0a8"; +} + +.oi-play-circle:before { + content:"\e0a9"; +} + +.oi-plus:before { + content:"\e0aa"; +} + +.oi-power-standby:before { + content:"\e0ab"; +} + +.oi-print:before { + content:"\e0ac"; +} + +.oi-project:before { + content:"\e0ad"; +} + +.oi-pulse:before { + content:"\e0ae"; +} + +.oi-puzzle-piece:before { + content:"\e0af"; +} + +.oi-question-mark:before { + content:"\e0b0"; +} + +.oi-rain:before { + content:"\e0b1"; +} + +.oi-random:before { + content:"\e0b2"; +} + +.oi-reload:before { + content:"\e0b3"; +} + +.oi-resize-both:before { + content:"\e0b4"; +} + +.oi-resize-height:before { + content:"\e0b5"; +} + +.oi-resize-width:before { + content:"\e0b6"; +} + +.oi-rss-alt:before { + content:"\e0b7"; +} + +.oi-rss:before { + content:"\e0b8"; +} + +.oi-script:before { + content:"\e0b9"; +} + +.oi-share-boxed:before { + content:"\e0ba"; +} + +.oi-share:before { + content:"\e0bb"; +} + +.oi-shield:before { + content:"\e0bc"; +} + +.oi-signal:before { + content:"\e0bd"; +} + +.oi-signpost:before { + content:"\e0be"; +} + +.oi-sort-ascending:before { + content:"\e0bf"; +} + +.oi-sort-descending:before { + content:"\e0c0"; +} + +.oi-spreadsheet:before { + content:"\e0c1"; +} + +.oi-star:before { + content:"\e0c2"; +} + +.oi-sun:before { + content:"\e0c3"; +} + +.oi-tablet:before { + content:"\e0c4"; +} + +.oi-tag:before { + content:"\e0c5"; +} + +.oi-tags:before { + content:"\e0c6"; +} + +.oi-target:before { + content:"\e0c7"; +} + +.oi-task:before { + content:"\e0c8"; +} + +.oi-terminal:before { + content:"\e0c9"; +} + +.oi-text:before { + content:"\e0ca"; +} + +.oi-thumb-down:before { + content:"\e0cb"; +} + +.oi-thumb-up:before { + content:"\e0cc"; +} + +.oi-timer:before { + content:"\e0cd"; +} + +.oi-transfer:before { + content:"\e0ce"; +} + +.oi-trash:before { + content:"\e0cf"; +} + +.oi-underline:before { + content:"\e0d0"; +} + +.oi-vertical-align-bottom:before { + content:"\e0d1"; +} + +.oi-vertical-align-center:before { + content:"\e0d2"; +} + +.oi-vertical-align-top:before { + content:"\e0d3"; +} + +.oi-video:before { + content:"\e0d4"; +} + +.oi-volume-high:before { + content:"\e0d5"; +} + +.oi-volume-low:before { + content:"\e0d6"; +} + +.oi-volume-off:before { + content:"\e0d7"; +} + +.oi-warning:before { + content:"\e0d8"; +} + +.oi-wifi:before { + content:"\e0d9"; +} + +.oi-wrench:before { + content:"\e0da"; +} + +.oi-x:before { + content:"\e0db"; +} + +.oi-yen:before { + content:"\e0dc"; +} + +.oi-zoom-in:before { + content:"\e0dd"; +} + +.oi-zoom-out:before { + content:"\e0de"; +} + diff --git a/class/RealSpaceInterface/static/fonts/open-iconic/font/css/open-iconic-bootstrap.min.css b/class/RealSpaceInterface/static/fonts/open-iconic/font/css/open-iconic-bootstrap.min.css new file mode 100644 index 00000000..4664f2e8 --- /dev/null +++ b/class/RealSpaceInterface/static/fonts/open-iconic/font/css/open-iconic-bootstrap.min.css @@ -0,0 +1 @@ +@font-face{font-family:Icons;src:url(../fonts/open-iconic.eot);src:url(../fonts/open-iconic.eot?#iconic-sm) format('embedded-opentype'),url(../fonts/open-iconic.woff) format('woff'),url(../fonts/open-iconic.ttf) format('truetype'),url(../fonts/open-iconic.otf) format('opentype'),url(../fonts/open-iconic.svg#iconic-sm) format('svg');font-weight:400;font-style:normal}.oi{position:relative;top:1px;display:inline-block;speak:none;font-family:Icons;font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.oi:empty:before{width:1em;text-align:center;box-sizing:content-box}.oi.oi-align-center:before{text-align:center}.oi.oi-align-left:before{text-align:left}.oi.oi-align-right:before{text-align:right}.oi.oi-flip-horizontal:before{-webkit-transform:scale(-1,1);-ms-transform:scale(-1,1);transform:scale(-1,1)}.oi.oi-flip-vertical:before{-webkit-transform:scale(1,-1);-ms-transform:scale(-1,1);transform:scale(1,-1)}.oi.oi-flip-horizontal-vertical:before{-webkit-transform:scale(-1,-1);-ms-transform:scale(-1,1);transform:scale(-1,-1)}.oi-account-login:before{content:'\e000'}.oi-account-logout:before{content:'\e001'}.oi-action-redo:before{content:'\e002'}.oi-action-undo:before{content:'\e003'}.oi-align-center:before{content:'\e004'}.oi-align-left:before{content:'\e005'}.oi-align-right:before{content:'\e006'}.oi-aperture:before{content:'\e007'}.oi-arrow-bottom:before{content:'\e008'}.oi-arrow-circle-bottom:before{content:'\e009'}.oi-arrow-circle-left:before{content:'\e00a'}.oi-arrow-circle-right:before{content:'\e00b'}.oi-arrow-circle-top:before{content:'\e00c'}.oi-arrow-left:before{content:'\e00d'}.oi-arrow-right:before{content:'\e00e'}.oi-arrow-thick-bottom:before{content:'\e00f'}.oi-arrow-thick-left:before{content:'\e010'}.oi-arrow-thick-right:before{content:'\e011'}.oi-arrow-thick-top:before{content:'\e012'}.oi-arrow-top:before{content:'\e013'}.oi-audio-spectrum:before{content:'\e014'}.oi-audio:before{content:'\e015'}.oi-badge:before{content:'\e016'}.oi-ban:before{content:'\e017'}.oi-bar-chart:before{content:'\e018'}.oi-basket:before{content:'\e019'}.oi-battery-empty:before{content:'\e01a'}.oi-battery-full:before{content:'\e01b'}.oi-beaker:before{content:'\e01c'}.oi-bell:before{content:'\e01d'}.oi-bluetooth:before{content:'\e01e'}.oi-bold:before{content:'\e01f'}.oi-bolt:before{content:'\e020'}.oi-book:before{content:'\e021'}.oi-bookmark:before{content:'\e022'}.oi-box:before{content:'\e023'}.oi-briefcase:before{content:'\e024'}.oi-british-pound:before{content:'\e025'}.oi-browser:before{content:'\e026'}.oi-brush:before{content:'\e027'}.oi-bug:before{content:'\e028'}.oi-bullhorn:before{content:'\e029'}.oi-calculator:before{content:'\e02a'}.oi-calendar:before{content:'\e02b'}.oi-camera-slr:before{content:'\e02c'}.oi-caret-bottom:before{content:'\e02d'}.oi-caret-left:before{content:'\e02e'}.oi-caret-right:before{content:'\e02f'}.oi-caret-top:before{content:'\e030'}.oi-cart:before{content:'\e031'}.oi-chat:before{content:'\e032'}.oi-check:before{content:'\e033'}.oi-chevron-bottom:before{content:'\e034'}.oi-chevron-left:before{content:'\e035'}.oi-chevron-right:before{content:'\e036'}.oi-chevron-top:before{content:'\e037'}.oi-circle-check:before{content:'\e038'}.oi-circle-x:before{content:'\e039'}.oi-clipboard:before{content:'\e03a'}.oi-clock:before{content:'\e03b'}.oi-cloud-download:before{content:'\e03c'}.oi-cloud-upload:before{content:'\e03d'}.oi-cloud:before{content:'\e03e'}.oi-cloudy:before{content:'\e03f'}.oi-code:before{content:'\e040'}.oi-cog:before{content:'\e041'}.oi-collapse-down:before{content:'\e042'}.oi-collapse-left:before{content:'\e043'}.oi-collapse-right:before{content:'\e044'}.oi-collapse-up:before{content:'\e045'}.oi-command:before{content:'\e046'}.oi-comment-square:before{content:'\e047'}.oi-compass:before{content:'\e048'}.oi-contrast:before{content:'\e049'}.oi-copywriting:before{content:'\e04a'}.oi-credit-card:before{content:'\e04b'}.oi-crop:before{content:'\e04c'}.oi-dashboard:before{content:'\e04d'}.oi-data-transfer-download:before{content:'\e04e'}.oi-data-transfer-upload:before{content:'\e04f'}.oi-delete:before{content:'\e050'}.oi-dial:before{content:'\e051'}.oi-document:before{content:'\e052'}.oi-dollar:before{content:'\e053'}.oi-double-quote-sans-left:before{content:'\e054'}.oi-double-quote-sans-right:before{content:'\e055'}.oi-double-quote-serif-left:before{content:'\e056'}.oi-double-quote-serif-right:before{content:'\e057'}.oi-droplet:before{content:'\e058'}.oi-eject:before{content:'\e059'}.oi-elevator:before{content:'\e05a'}.oi-ellipses:before{content:'\e05b'}.oi-envelope-closed:before{content:'\e05c'}.oi-envelope-open:before{content:'\e05d'}.oi-euro:before{content:'\e05e'}.oi-excerpt:before{content:'\e05f'}.oi-expand-down:before{content:'\e060'}.oi-expand-left:before{content:'\e061'}.oi-expand-right:before{content:'\e062'}.oi-expand-up:before{content:'\e063'}.oi-external-link:before{content:'\e064'}.oi-eye:before{content:'\e065'}.oi-eyedropper:before{content:'\e066'}.oi-file:before{content:'\e067'}.oi-fire:before{content:'\e068'}.oi-flag:before{content:'\e069'}.oi-flash:before{content:'\e06a'}.oi-folder:before{content:'\e06b'}.oi-fork:before{content:'\e06c'}.oi-fullscreen-enter:before{content:'\e06d'}.oi-fullscreen-exit:before{content:'\e06e'}.oi-globe:before{content:'\e06f'}.oi-graph:before{content:'\e070'}.oi-grid-four-up:before{content:'\e071'}.oi-grid-three-up:before{content:'\e072'}.oi-grid-two-up:before{content:'\e073'}.oi-hard-drive:before{content:'\e074'}.oi-header:before{content:'\e075'}.oi-headphones:before{content:'\e076'}.oi-heart:before{content:'\e077'}.oi-home:before{content:'\e078'}.oi-image:before{content:'\e079'}.oi-inbox:before{content:'\e07a'}.oi-infinity:before{content:'\e07b'}.oi-info:before{content:'\e07c'}.oi-italic:before{content:'\e07d'}.oi-justify-center:before{content:'\e07e'}.oi-justify-left:before{content:'\e07f'}.oi-justify-right:before{content:'\e080'}.oi-key:before{content:'\e081'}.oi-laptop:before{content:'\e082'}.oi-layers:before{content:'\e083'}.oi-lightbulb:before{content:'\e084'}.oi-link-broken:before{content:'\e085'}.oi-link-intact:before{content:'\e086'}.oi-list-rich:before{content:'\e087'}.oi-list:before{content:'\e088'}.oi-location:before{content:'\e089'}.oi-lock-locked:before{content:'\e08a'}.oi-lock-unlocked:before{content:'\e08b'}.oi-loop-circular:before{content:'\e08c'}.oi-loop-square:before{content:'\e08d'}.oi-loop:before{content:'\e08e'}.oi-magnifying-glass:before{content:'\e08f'}.oi-map-marker:before{content:'\e090'}.oi-map:before{content:'\e091'}.oi-media-pause:before{content:'\e092'}.oi-media-play:before{content:'\e093'}.oi-media-record:before{content:'\e094'}.oi-media-skip-backward:before{content:'\e095'}.oi-media-skip-forward:before{content:'\e096'}.oi-media-step-backward:before{content:'\e097'}.oi-media-step-forward:before{content:'\e098'}.oi-media-stop:before{content:'\e099'}.oi-medical-cross:before{content:'\e09a'}.oi-menu:before{content:'\e09b'}.oi-microphone:before{content:'\e09c'}.oi-minus:before{content:'\e09d'}.oi-monitor:before{content:'\e09e'}.oi-moon:before{content:'\e09f'}.oi-move:before{content:'\e0a0'}.oi-musical-note:before{content:'\e0a1'}.oi-paperclip:before{content:'\e0a2'}.oi-pencil:before{content:'\e0a3'}.oi-people:before{content:'\e0a4'}.oi-person:before{content:'\e0a5'}.oi-phone:before{content:'\e0a6'}.oi-pie-chart:before{content:'\e0a7'}.oi-pin:before{content:'\e0a8'}.oi-play-circle:before{content:'\e0a9'}.oi-plus:before{content:'\e0aa'}.oi-power-standby:before{content:'\e0ab'}.oi-print:before{content:'\e0ac'}.oi-project:before{content:'\e0ad'}.oi-pulse:before{content:'\e0ae'}.oi-puzzle-piece:before{content:'\e0af'}.oi-question-mark:before{content:'\e0b0'}.oi-rain:before{content:'\e0b1'}.oi-random:before{content:'\e0b2'}.oi-reload:before{content:'\e0b3'}.oi-resize-both:before{content:'\e0b4'}.oi-resize-height:before{content:'\e0b5'}.oi-resize-width:before{content:'\e0b6'}.oi-rss-alt:before{content:'\e0b7'}.oi-rss:before{content:'\e0b8'}.oi-script:before{content:'\e0b9'}.oi-share-boxed:before{content:'\e0ba'}.oi-share:before{content:'\e0bb'}.oi-shield:before{content:'\e0bc'}.oi-signal:before{content:'\e0bd'}.oi-signpost:before{content:'\e0be'}.oi-sort-ascending:before{content:'\e0bf'}.oi-sort-descending:before{content:'\e0c0'}.oi-spreadsheet:before{content:'\e0c1'}.oi-star:before{content:'\e0c2'}.oi-sun:before{content:'\e0c3'}.oi-tablet:before{content:'\e0c4'}.oi-tag:before{content:'\e0c5'}.oi-tags:before{content:'\e0c6'}.oi-target:before{content:'\e0c7'}.oi-task:before{content:'\e0c8'}.oi-terminal:before{content:'\e0c9'}.oi-text:before{content:'\e0ca'}.oi-thumb-down:before{content:'\e0cb'}.oi-thumb-up:before{content:'\e0cc'}.oi-timer:before{content:'\e0cd'}.oi-transfer:before{content:'\e0ce'}.oi-trash:before{content:'\e0cf'}.oi-underline:before{content:'\e0d0'}.oi-vertical-align-bottom:before{content:'\e0d1'}.oi-vertical-align-center:before{content:'\e0d2'}.oi-vertical-align-top:before{content:'\e0d3'}.oi-video:before{content:'\e0d4'}.oi-volume-high:before{content:'\e0d5'}.oi-volume-low:before{content:'\e0d6'}.oi-volume-off:before{content:'\e0d7'}.oi-warning:before{content:'\e0d8'}.oi-wifi:before{content:'\e0d9'}.oi-wrench:before{content:'\e0da'}.oi-x:before{content:'\e0db'}.oi-yen:before{content:'\e0dc'}.oi-zoom-in:before{content:'\e0dd'}.oi-zoom-out:before{content:'\e0de'} \ No newline at end of file diff --git a/class/RealSpaceInterface/static/fonts/open-iconic/font/css/open-iconic-bootstrap.scss b/class/RealSpaceInterface/static/fonts/open-iconic/font/css/open-iconic-bootstrap.scss new file mode 100644 index 00000000..18f01e26 --- /dev/null +++ b/class/RealSpaceInterface/static/fonts/open-iconic/font/css/open-iconic-bootstrap.scss @@ -0,0 +1,958 @@ +/* Bootstrap */ + +/* Override Bootstrap default variable */ +$icon-font-path: '../fonts/' !default; + +@font-face { + font-family: 'Icons'; + src: url('#{$icon-font-path}open-iconic.eot'); + src: url('#{$icon-font-path}open-iconic.eot?#iconic-sm') format('embedded-opentype'), url('#{$icon-font-path}open-iconic.woff') format('woff'), url('#{$icon-font-path}open-iconic.ttf') format('truetype'), url('#{$icon-font-path}open-iconic.svg#iconic-sm') format('svg'); + font-weight: normal; + font-style: normal; +} + +// Catchall baseclass +.oi { + position: relative; + top: 1px; + display: inline-block; + font-family: 'Icons'; + font-style: normal; + font-weight: normal; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + + + &:empty:before { + width: 1em; + text-align: center; + box-sizing: content-box; + } + + &.oi-align-center:before { + text-align: center; + } + + &.oi-align-left:before { + text-align: left; + } + + &.oi-align-right:before { + text-align: right; + } + + + &.oi-flip-horizontal:before { + -webkit-transform: scale(-1, 1); + -ms-transform: scale(-1, 1); + transform: scale(-1, 1); + } + + &.oi-flip-vertical:before { + -webkit-transform: scale(1, -1); + -ms-transform: scale(-1, 1); + transform: scale(1, -1); + } + + &.oi-flip-horizontal-vertical:before { + -webkit-transform: scale(-1, -1); + -ms-transform: scale(-1, 1); + transform: scale(-1, -1); + } +} + + + +.oi-account-login:before { + content:'\e000'; +} + +.oi-account-logout:before { + content:'\e001'; +} + +.oi-action-redo:before { + content:'\e002'; +} + +.oi-action-undo:before { + content:'\e003'; +} + +.oi-align-center:before { + content:'\e004'; +} + +.oi-align-left:before { + content:'\e005'; +} + +.oi-align-right:before { + content:'\e006'; +} + +.oi-aperture:before { + content:'\e007'; +} + +.oi-arrow-bottom:before { + content:'\e008'; +} + +.oi-arrow-circle-bottom:before { + content:'\e009'; +} + +.oi-arrow-circle-left:before { + content:'\e00a'; +} + +.oi-arrow-circle-right:before { + content:'\e00b'; +} + +.oi-arrow-circle-top:before { + content:'\e00c'; +} + +.oi-arrow-left:before { + content:'\e00d'; +} + +.oi-arrow-right:before { + content:'\e00e'; +} + +.oi-arrow-thick-bottom:before { + content:'\e00f'; +} + +.oi-arrow-thick-left:before { + content:'\e010'; +} + +.oi-arrow-thick-right:before { + content:'\e011'; +} + +.oi-arrow-thick-top:before { + content:'\e012'; +} + +.oi-arrow-top:before { + content:'\e013'; +} + +.oi-audio-spectrum:before { + content:'\e014'; +} + +.oi-audio:before { + content:'\e015'; +} + +.oi-badge:before { + content:'\e016'; +} + +.oi-ban:before { + content:'\e017'; +} + +.oi-bar-chart:before { + content:'\e018'; +} + +.oi-basket:before { + content:'\e019'; +} + +.oi-battery-empty:before { + content:'\e01a'; +} + +.oi-battery-full:before { + content:'\e01b'; +} + +.oi-beaker:before { + content:'\e01c'; +} + +.oi-bell:before { + content:'\e01d'; +} + +.oi-bluetooth:before { + content:'\e01e'; +} + +.oi-bold:before { + content:'\e01f'; +} + +.oi-bolt:before { + content:'\e020'; +} + +.oi-book:before { + content:'\e021'; +} + +.oi-bookmark:before { + content:'\e022'; +} + +.oi-box:before { + content:'\e023'; +} + +.oi-briefcase:before { + content:'\e024'; +} + +.oi-british-pound:before { + content:'\e025'; +} + +.oi-browser:before { + content:'\e026'; +} + +.oi-brush:before { + content:'\e027'; +} + +.oi-bug:before { + content:'\e028'; +} + +.oi-bullhorn:before { + content:'\e029'; +} + +.oi-calculator:before { + content:'\e02a'; +} + +.oi-calendar:before { + content:'\e02b'; +} + +.oi-camera-slr:before { + content:'\e02c'; +} + +.oi-caret-bottom:before { + content:'\e02d'; +} + +.oi-caret-left:before { + content:'\e02e'; +} + +.oi-caret-right:before { + content:'\e02f'; +} + +.oi-caret-top:before { + content:'\e030'; +} + +.oi-cart:before { + content:'\e031'; +} + +.oi-chat:before { + content:'\e032'; +} + +.oi-check:before { + content:'\e033'; +} + +.oi-chevron-bottom:before { + content:'\e034'; +} + +.oi-chevron-left:before { + content:'\e035'; +} + +.oi-chevron-right:before { + content:'\e036'; +} + +.oi-chevron-top:before { + content:'\e037'; +} + +.oi-circle-check:before { + content:'\e038'; +} + +.oi-circle-x:before { + content:'\e039'; +} + +.oi-clipboard:before { + content:'\e03a'; +} + +.oi-clock:before { + content:'\e03b'; +} + +.oi-cloud-download:before { + content:'\e03c'; +} + +.oi-cloud-upload:before { + content:'\e03d'; +} + +.oi-cloud:before { + content:'\e03e'; +} + +.oi-cloudy:before { + content:'\e03f'; +} + +.oi-code:before { + content:'\e040'; +} + +.oi-cog:before { + content:'\e041'; +} + +.oi-collapse-down:before { + content:'\e042'; +} + +.oi-collapse-left:before { + content:'\e043'; +} + +.oi-collapse-right:before { + content:'\e044'; +} + +.oi-collapse-up:before { + content:'\e045'; +} + +.oi-command:before { + content:'\e046'; +} + +.oi-comment-square:before { + content:'\e047'; +} + +.oi-compass:before { + content:'\e048'; +} + +.oi-contrast:before { + content:'\e049'; +} + +.oi-copywriting:before { + content:'\e04a'; +} + +.oi-credit-card:before { + content:'\e04b'; +} + +.oi-crop:before { + content:'\e04c'; +} + +.oi-dashboard:before { + content:'\e04d'; +} + +.oi-data-transfer-download:before { + content:'\e04e'; +} + +.oi-data-transfer-upload:before { + content:'\e04f'; +} + +.oi-delete:before { + content:'\e050'; +} + +.oi-dial:before { + content:'\e051'; +} + +.oi-document:before { + content:'\e052'; +} + +.oi-dollar:before { + content:'\e053'; +} + +.oi-double-quote-sans-left:before { + content:'\e054'; +} + +.oi-double-quote-sans-right:before { + content:'\e055'; +} + +.oi-double-quote-serif-left:before { + content:'\e056'; +} + +.oi-double-quote-serif-right:before { + content:'\e057'; +} + +.oi-droplet:before { + content:'\e058'; +} + +.oi-eject:before { + content:'\e059'; +} + +.oi-elevator:before { + content:'\e05a'; +} + +.oi-ellipses:before { + content:'\e05b'; +} + +.oi-envelope-closed:before { + content:'\e05c'; +} + +.oi-envelope-open:before { + content:'\e05d'; +} + +.oi-euro:before { + content:'\e05e'; +} + +.oi-excerpt:before { + content:'\e05f'; +} + +.oi-expand-down:before { + content:'\e060'; +} + +.oi-expand-left:before { + content:'\e061'; +} + +.oi-expand-right:before { + content:'\e062'; +} + +.oi-expand-up:before { + content:'\e063'; +} + +.oi-external-link:before { + content:'\e064'; +} + +.oi-eye:before { + content:'\e065'; +} + +.oi-eyedropper:before { + content:'\e066'; +} + +.oi-file:before { + content:'\e067'; +} + +.oi-fire:before { + content:'\e068'; +} + +.oi-flag:before { + content:'\e069'; +} + +.oi-flash:before { + content:'\e06a'; +} + +.oi-folder:before { + content:'\e06b'; +} + +.oi-fork:before { + content:'\e06c'; +} + +.oi-fullscreen-enter:before { + content:'\e06d'; +} + +.oi-fullscreen-exit:before { + content:'\e06e'; +} + +.oi-globe:before { + content:'\e06f'; +} + +.oi-graph:before { + content:'\e070'; +} + +.oi-grid-four-up:before { + content:'\e071'; +} + +.oi-grid-three-up:before { + content:'\e072'; +} + +.oi-grid-two-up:before { + content:'\e073'; +} + +.oi-hard-drive:before { + content:'\e074'; +} + +.oi-header:before { + content:'\e075'; +} + +.oi-headphones:before { + content:'\e076'; +} + +.oi-heart:before { + content:'\e077'; +} + +.oi-home:before { + content:'\e078'; +} + +.oi-image:before { + content:'\e079'; +} + +.oi-inbox:before { + content:'\e07a'; +} + +.oi-infinity:before { + content:'\e07b'; +} + +.oi-info:before { + content:'\e07c'; +} + +.oi-italic:before { + content:'\e07d'; +} + +.oi-justify-center:before { + content:'\e07e'; +} + +.oi-justify-left:before { + content:'\e07f'; +} + +.oi-justify-right:before { + content:'\e080'; +} + +.oi-key:before { + content:'\e081'; +} + +.oi-laptop:before { + content:'\e082'; +} + +.oi-layers:before { + content:'\e083'; +} + +.oi-lightbulb:before { + content:'\e084'; +} + +.oi-link-broken:before { + content:'\e085'; +} + +.oi-link-intact:before { + content:'\e086'; +} + +.oi-list-rich:before { + content:'\e087'; +} + +.oi-list:before { + content:'\e088'; +} + +.oi-location:before { + content:'\e089'; +} + +.oi-lock-locked:before { + content:'\e08a'; +} + +.oi-lock-unlocked:before { + content:'\e08b'; +} + +.oi-loop-circular:before { + content:'\e08c'; +} + +.oi-loop-square:before { + content:'\e08d'; +} + +.oi-loop:before { + content:'\e08e'; +} + +.oi-magnifying-glass:before { + content:'\e08f'; +} + +.oi-map-marker:before { + content:'\e090'; +} + +.oi-map:before { + content:'\e091'; +} + +.oi-media-pause:before { + content:'\e092'; +} + +.oi-media-play:before { + content:'\e093'; +} + +.oi-media-record:before { + content:'\e094'; +} + +.oi-media-skip-backward:before { + content:'\e095'; +} + +.oi-media-skip-forward:before { + content:'\e096'; +} + +.oi-media-step-backward:before { + content:'\e097'; +} + +.oi-media-step-forward:before { + content:'\e098'; +} + +.oi-media-stop:before { + content:'\e099'; +} + +.oi-medical-cross:before { + content:'\e09a'; +} + +.oi-menu:before { + content:'\e09b'; +} + +.oi-microphone:before { + content:'\e09c'; +} + +.oi-minus:before { + content:'\e09d'; +} + +.oi-monitor:before { + content:'\e09e'; +} + +.oi-moon:before { + content:'\e09f'; +} + +.oi-move:before { + content:'\e0a0'; +} + +.oi-musical-note:before { + content:'\e0a1'; +} + +.oi-paperclip:before { + content:'\e0a2'; +} + +.oi-pencil:before { + content:'\e0a3'; +} + +.oi-people:before { + content:'\e0a4'; +} + +.oi-person:before { + content:'\e0a5'; +} + +.oi-phone:before { + content:'\e0a6'; +} + +.oi-pie-chart:before { + content:'\e0a7'; +} + +.oi-pin:before { + content:'\e0a8'; +} + +.oi-play-circle:before { + content:'\e0a9'; +} + +.oi-plus:before { + content:'\e0aa'; +} + +.oi-power-standby:before { + content:'\e0ab'; +} + +.oi-print:before { + content:'\e0ac'; +} + +.oi-project:before { + content:'\e0ad'; +} + +.oi-pulse:before { + content:'\e0ae'; +} + +.oi-puzzle-piece:before { + content:'\e0af'; +} + +.oi-question-mark:before { + content:'\e0b0'; +} + +.oi-rain:before { + content:'\e0b1'; +} + +.oi-random:before { + content:'\e0b2'; +} + +.oi-reload:before { + content:'\e0b3'; +} + +.oi-resize-both:before { + content:'\e0b4'; +} + +.oi-resize-height:before { + content:'\e0b5'; +} + +.oi-resize-width:before { + content:'\e0b6'; +} + +.oi-rss-alt:before { + content:'\e0b7'; +} + +.oi-rss:before { + content:'\e0b8'; +} + +.oi-script:before { + content:'\e0b9'; +} + +.oi-share-boxed:before { + content:'\e0ba'; +} + +.oi-share:before { + content:'\e0bb'; +} + +.oi-shield:before { + content:'\e0bc'; +} + +.oi-signal:before { + content:'\e0bd'; +} + +.oi-signpost:before { + content:'\e0be'; +} + +.oi-sort-ascending:before { + content:'\e0bf'; +} + +.oi-sort-descending:before { + content:'\e0c0'; +} + +.oi-spreadsheet:before { + content:'\e0c1'; +} + +.oi-star:before { + content:'\e0c2'; +} + +.oi-sun:before { + content:'\e0c3'; +} + +.oi-tablet:before { + content:'\e0c4'; +} + +.oi-tag:before { + content:'\e0c5'; +} + +.oi-tags:before { + content:'\e0c6'; +} + +.oi-target:before { + content:'\e0c7'; +} + +.oi-task:before { + content:'\e0c8'; +} + +.oi-terminal:before { + content:'\e0c9'; +} + +.oi-text:before { + content:'\e0ca'; +} + +.oi-thumb-down:before { + content:'\e0cb'; +} + +.oi-thumb-up:before { + content:'\e0cc'; +} + +.oi-timer:before { + content:'\e0cd'; +} + +.oi-transfer:before { + content:'\e0ce'; +} + +.oi-trash:before { + content:'\e0cf'; +} + +.oi-underline:before { + content:'\e0d0'; +} + +.oi-vertical-align-bottom:before { + content:'\e0d1'; +} + +.oi-vertical-align-center:before { + content:'\e0d2'; +} + +.oi-vertical-align-top:before { + content:'\e0d3'; +} + +.oi-video:before { + content:'\e0d4'; +} + +.oi-volume-high:before { + content:'\e0d5'; +} + +.oi-volume-low:before { + content:'\e0d6'; +} + +.oi-volume-off:before { + content:'\e0d7'; +} + +.oi-warning:before { + content:'\e0d8'; +} + +.oi-wifi:before { + content:'\e0d9'; +} + +.oi-wrench:before { + content:'\e0da'; +} + +.oi-x:before { + content:'\e0db'; +} + +.oi-yen:before { + content:'\e0dc'; +} + +.oi-zoom-in:before { + content:'\e0dd'; +} + +.oi-zoom-out:before { + content:'\e0de'; +} + diff --git a/class/RealSpaceInterface/static/fonts/open-iconic/font/css/open-iconic-bootstrap.styl b/class/RealSpaceInterface/static/fonts/open-iconic/font/css/open-iconic-bootstrap.styl new file mode 100644 index 00000000..0afa2548 --- /dev/null +++ b/class/RealSpaceInterface/static/fonts/open-iconic/font/css/open-iconic-bootstrap.styl @@ -0,0 +1,954 @@ +/* Bootstrap */ + +@font-face + font-family 'Icons' + src url('../fonts/open-iconic.eot') + src url('../fonts/open-iconic.eot?#iconic-sm') format('embedded-opentype'), url('../fonts/open-iconic.woff') format('woff'), url('../fonts/open-iconic.ttf') format('truetype'), url('../fonts/open-iconic.svg#iconic-sm') format('svg') + font-weight normal + font-style normal + + +// Catchall baseclass +.oi + position relative + top 1px + display inline-block + font-family 'Icons' + font-style normal + font-weight normal + line-height 1 + -webkit-font-smoothing antialiased + -moz-osx-font-smoothing grayscale + + + &:empty:before + width 1em + text-align center + box-sizing content-box + + &.oi-align-center:before + text-align center + + + &.oi-align-left:before + text-align left + + + &.oi-align-right:before + text-align right + + + + &.oi-flip-horizontal:before + -webkit-transform scale(-1, 1) + -ms-transform scale(-1, 1) + transform scale(-1, 1) + + + &.oi-flip-vertical:before + -webkit-transform scale(1, -1) + -ms-transform scale(-1, 1) + transform scale(1, -1) + + + &.oi-flip-horizontal-vertical:before + -webkit-transform scale(-1, -1) + -ms-transform scale(-1, 1) + transform scale(-1, -1) + + + + + +.oi-account-login:before { + content'\e000' +} + +.oi-account-logout:before { + content'\e001' +} + +.oi-action-redo:before { + content'\e002' +} + +.oi-action-undo:before { + content'\e003' +} + +.oi-align-center:before { + content'\e004' +} + +.oi-align-left:before { + content'\e005' +} + +.oi-align-right:before { + content'\e006' +} + +.oi-aperture:before { + content'\e007' +} + +.oi-arrow-bottom:before { + content'\e008' +} + +.oi-arrow-circle-bottom:before { + content'\e009' +} + +.oi-arrow-circle-left:before { + content'\e00a' +} + +.oi-arrow-circle-right:before { + content'\e00b' +} + +.oi-arrow-circle-top:before { + content'\e00c' +} + +.oi-arrow-left:before { + content'\e00d' +} + +.oi-arrow-right:before { + content'\e00e' +} + +.oi-arrow-thick-bottom:before { + content'\e00f' +} + +.oi-arrow-thick-left:before { + content'\e010' +} + +.oi-arrow-thick-right:before { + content'\e011' +} + +.oi-arrow-thick-top:before { + content'\e012' +} + +.oi-arrow-top:before { + content'\e013' +} + +.oi-audio-spectrum:before { + content'\e014' +} + +.oi-audio:before { + content'\e015' +} + +.oi-badge:before { + content'\e016' +} + +.oi-ban:before { + content'\e017' +} + +.oi-bar-chart:before { + content'\e018' +} + +.oi-basket:before { + content'\e019' +} + +.oi-battery-empty:before { + content'\e01a' +} + +.oi-battery-full:before { + content'\e01b' +} + +.oi-beaker:before { + content'\e01c' +} + +.oi-bell:before { + content'\e01d' +} + +.oi-bluetooth:before { + content'\e01e' +} + +.oi-bold:before { + content'\e01f' +} + +.oi-bolt:before { + content'\e020' +} + +.oi-book:before { + content'\e021' +} + +.oi-bookmark:before { + content'\e022' +} + +.oi-box:before { + content'\e023' +} + +.oi-briefcase:before { + content'\e024' +} + +.oi-british-pound:before { + content'\e025' +} + +.oi-browser:before { + content'\e026' +} + +.oi-brush:before { + content'\e027' +} + +.oi-bug:before { + content'\e028' +} + +.oi-bullhorn:before { + content'\e029' +} + +.oi-calculator:before { + content'\e02a' +} + +.oi-calendar:before { + content'\e02b' +} + +.oi-camera-slr:before { + content'\e02c' +} + +.oi-caret-bottom:before { + content'\e02d' +} + +.oi-caret-left:before { + content'\e02e' +} + +.oi-caret-right:before { + content'\e02f' +} + +.oi-caret-top:before { + content'\e030' +} + +.oi-cart:before { + content'\e031' +} + +.oi-chat:before { + content'\e032' +} + +.oi-check:before { + content'\e033' +} + +.oi-chevron-bottom:before { + content'\e034' +} + +.oi-chevron-left:before { + content'\e035' +} + +.oi-chevron-right:before { + content'\e036' +} + +.oi-chevron-top:before { + content'\e037' +} + +.oi-circle-check:before { + content'\e038' +} + +.oi-circle-x:before { + content'\e039' +} + +.oi-clipboard:before { + content'\e03a' +} + +.oi-clock:before { + content'\e03b' +} + +.oi-cloud-download:before { + content'\e03c' +} + +.oi-cloud-upload:before { + content'\e03d' +} + +.oi-cloud:before { + content'\e03e' +} + +.oi-cloudy:before { + content'\e03f' +} + +.oi-code:before { + content'\e040' +} + +.oi-cog:before { + content'\e041' +} + +.oi-collapse-down:before { + content'\e042' +} + +.oi-collapse-left:before { + content'\e043' +} + +.oi-collapse-right:before { + content'\e044' +} + +.oi-collapse-up:before { + content'\e045' +} + +.oi-command:before { + content'\e046' +} + +.oi-comment-square:before { + content'\e047' +} + +.oi-compass:before { + content'\e048' +} + +.oi-contrast:before { + content'\e049' +} + +.oi-copywriting:before { + content'\e04a' +} + +.oi-credit-card:before { + content'\e04b' +} + +.oi-crop:before { + content'\e04c' +} + +.oi-dashboard:before { + content'\e04d' +} + +.oi-data-transfer-download:before { + content'\e04e' +} + +.oi-data-transfer-upload:before { + content'\e04f' +} + +.oi-delete:before { + content'\e050' +} + +.oi-dial:before { + content'\e051' +} + +.oi-document:before { + content'\e052' +} + +.oi-dollar:before { + content'\e053' +} + +.oi-double-quote-sans-left:before { + content'\e054' +} + +.oi-double-quote-sans-right:before { + content'\e055' +} + +.oi-double-quote-serif-left:before { + content'\e056' +} + +.oi-double-quote-serif-right:before { + content'\e057' +} + +.oi-droplet:before { + content'\e058' +} + +.oi-eject:before { + content'\e059' +} + +.oi-elevator:before { + content'\e05a' +} + +.oi-ellipses:before { + content'\e05b' +} + +.oi-envelope-closed:before { + content'\e05c' +} + +.oi-envelope-open:before { + content'\e05d' +} + +.oi-euro:before { + content'\e05e' +} + +.oi-excerpt:before { + content'\e05f' +} + +.oi-expand-down:before { + content'\e060' +} + +.oi-expand-left:before { + content'\e061' +} + +.oi-expand-right:before { + content'\e062' +} + +.oi-expand-up:before { + content'\e063' +} + +.oi-external-link:before { + content'\e064' +} + +.oi-eye:before { + content'\e065' +} + +.oi-eyedropper:before { + content'\e066' +} + +.oi-file:before { + content'\e067' +} + +.oi-fire:before { + content'\e068' +} + +.oi-flag:before { + content'\e069' +} + +.oi-flash:before { + content'\e06a' +} + +.oi-folder:before { + content'\e06b' +} + +.oi-fork:before { + content'\e06c' +} + +.oi-fullscreen-enter:before { + content'\e06d' +} + +.oi-fullscreen-exit:before { + content'\e06e' +} + +.oi-globe:before { + content'\e06f' +} + +.oi-graph:before { + content'\e070' +} + +.oi-grid-four-up:before { + content'\e071' +} + +.oi-grid-three-up:before { + content'\e072' +} + +.oi-grid-two-up:before { + content'\e073' +} + +.oi-hard-drive:before { + content'\e074' +} + +.oi-header:before { + content'\e075' +} + +.oi-headphones:before { + content'\e076' +} + +.oi-heart:before { + content'\e077' +} + +.oi-home:before { + content'\e078' +} + +.oi-image:before { + content'\e079' +} + +.oi-inbox:before { + content'\e07a' +} + +.oi-infinity:before { + content'\e07b' +} + +.oi-info:before { + content'\e07c' +} + +.oi-italic:before { + content'\e07d' +} + +.oi-justify-center:before { + content'\e07e' +} + +.oi-justify-left:before { + content'\e07f' +} + +.oi-justify-right:before { + content'\e080' +} + +.oi-key:before { + content'\e081' +} + +.oi-laptop:before { + content'\e082' +} + +.oi-layers:before { + content'\e083' +} + +.oi-lightbulb:before { + content'\e084' +} + +.oi-link-broken:before { + content'\e085' +} + +.oi-link-intact:before { + content'\e086' +} + +.oi-list-rich:before { + content'\e087' +} + +.oi-list:before { + content'\e088' +} + +.oi-location:before { + content'\e089' +} + +.oi-lock-locked:before { + content'\e08a' +} + +.oi-lock-unlocked:before { + content'\e08b' +} + +.oi-loop-circular:before { + content'\e08c' +} + +.oi-loop-square:before { + content'\e08d' +} + +.oi-loop:before { + content'\e08e' +} + +.oi-magnifying-glass:before { + content'\e08f' +} + +.oi-map-marker:before { + content'\e090' +} + +.oi-map:before { + content'\e091' +} + +.oi-media-pause:before { + content'\e092' +} + +.oi-media-play:before { + content'\e093' +} + +.oi-media-record:before { + content'\e094' +} + +.oi-media-skip-backward:before { + content'\e095' +} + +.oi-media-skip-forward:before { + content'\e096' +} + +.oi-media-step-backward:before { + content'\e097' +} + +.oi-media-step-forward:before { + content'\e098' +} + +.oi-media-stop:before { + content'\e099' +} + +.oi-medical-cross:before { + content'\e09a' +} + +.oi-menu:before { + content'\e09b' +} + +.oi-microphone:before { + content'\e09c' +} + +.oi-minus:before { + content'\e09d' +} + +.oi-monitor:before { + content'\e09e' +} + +.oi-moon:before { + content'\e09f' +} + +.oi-move:before { + content'\e0a0' +} + +.oi-musical-note:before { + content'\e0a1' +} + +.oi-paperclip:before { + content'\e0a2' +} + +.oi-pencil:before { + content'\e0a3' +} + +.oi-people:before { + content'\e0a4' +} + +.oi-person:before { + content'\e0a5' +} + +.oi-phone:before { + content'\e0a6' +} + +.oi-pie-chart:before { + content'\e0a7' +} + +.oi-pin:before { + content'\e0a8' +} + +.oi-play-circle:before { + content'\e0a9' +} + +.oi-plus:before { + content'\e0aa' +} + +.oi-power-standby:before { + content'\e0ab' +} + +.oi-print:before { + content'\e0ac' +} + +.oi-project:before { + content'\e0ad' +} + +.oi-pulse:before { + content'\e0ae' +} + +.oi-puzzle-piece:before { + content'\e0af' +} + +.oi-question-mark:before { + content'\e0b0' +} + +.oi-rain:before { + content'\e0b1' +} + +.oi-random:before { + content'\e0b2' +} + +.oi-reload:before { + content'\e0b3' +} + +.oi-resize-both:before { + content'\e0b4' +} + +.oi-resize-height:before { + content'\e0b5' +} + +.oi-resize-width:before { + content'\e0b6' +} + +.oi-rss-alt:before { + content'\e0b7' +} + +.oi-rss:before { + content'\e0b8' +} + +.oi-script:before { + content'\e0b9' +} + +.oi-share-boxed:before { + content'\e0ba' +} + +.oi-share:before { + content'\e0bb' +} + +.oi-shield:before { + content'\e0bc' +} + +.oi-signal:before { + content'\e0bd' +} + +.oi-signpost:before { + content'\e0be' +} + +.oi-sort-ascending:before { + content'\e0bf' +} + +.oi-sort-descending:before { + content'\e0c0' +} + +.oi-spreadsheet:before { + content'\e0c1' +} + +.oi-star:before { + content'\e0c2' +} + +.oi-sun:before { + content'\e0c3' +} + +.oi-tablet:before { + content'\e0c4' +} + +.oi-tag:before { + content'\e0c5' +} + +.oi-tags:before { + content'\e0c6' +} + +.oi-target:before { + content'\e0c7' +} + +.oi-task:before { + content'\e0c8' +} + +.oi-terminal:before { + content'\e0c9' +} + +.oi-text:before { + content'\e0ca' +} + +.oi-thumb-down:before { + content'\e0cb' +} + +.oi-thumb-up:before { + content'\e0cc' +} + +.oi-timer:before { + content'\e0cd' +} + +.oi-transfer:before { + content'\e0ce' +} + +.oi-trash:before { + content'\e0cf' +} + +.oi-underline:before { + content'\e0d0' +} + +.oi-vertical-align-bottom:before { + content'\e0d1' +} + +.oi-vertical-align-center:before { + content'\e0d2' +} + +.oi-vertical-align-top:before { + content'\e0d3' +} + +.oi-video:before { + content'\e0d4' +} + +.oi-volume-high:before { + content'\e0d5' +} + +.oi-volume-low:before { + content'\e0d6' +} + +.oi-volume-off:before { + content'\e0d7' +} + +.oi-warning:before { + content'\e0d8' +} + +.oi-wifi:before { + content'\e0d9' +} + +.oi-wrench:before { + content'\e0da' +} + +.oi-x:before { + content'\e0db' +} + +.oi-yen:before { + content'\e0dc' +} + +.oi-zoom-in:before { + content'\e0dd' +} + +.oi-zoom-out:before { + content'\e0de' +} + diff --git a/class/RealSpaceInterface/static/fonts/open-iconic/font/css/open-iconic-foundation.css b/class/RealSpaceInterface/static/fonts/open-iconic/font/css/open-iconic-foundation.css new file mode 100644 index 00000000..905a8212 --- /dev/null +++ b/class/RealSpaceInterface/static/fonts/open-iconic/font/css/open-iconic-foundation.css @@ -0,0 +1,1395 @@ +/* Foundation */ + +@font-face { + font-family: 'Icons'; + src: url('../fonts/open-iconic.eot'); + src: url('../fonts/open-iconic.eot?#iconic-sm') format('embedded-opentype'), url('../fonts/open-iconic.woff') format('woff'), url('../fonts/open-iconic.ttf') format('truetype'), url('../fonts/open-iconic.otf') format('opentype'), url('../fonts/open-iconic.svg#iconic-sm') format('svg'); + font-weight: normal; + font-style: normal; +} + + +.fi-account-login:before, + +.fi-account-logout:before, + +.fi-action-redo:before, + +.fi-action-undo:before, + +.fi-align-center:before, + +.fi-align-left:before, + +.fi-align-right:before, + +.fi-aperture:before, + +.fi-arrow-bottom:before, + +.fi-arrow-circle-bottom:before, + +.fi-arrow-circle-left:before, + +.fi-arrow-circle-right:before, + +.fi-arrow-circle-top:before, + +.fi-arrow-left:before, + +.fi-arrow-right:before, + +.fi-arrow-thick-bottom:before, + +.fi-arrow-thick-left:before, + +.fi-arrow-thick-right:before, + +.fi-arrow-thick-top:before, + +.fi-arrow-top:before, + +.fi-audio-spectrum:before, + +.fi-audio:before, + +.fi-badge:before, + +.fi-ban:before, + +.fi-bar-chart:before, + +.fi-basket:before, + +.fi-battery-empty:before, + +.fi-battery-full:before, + +.fi-beaker:before, + +.fi-bell:before, + +.fi-bluetooth:before, + +.fi-bold:before, + +.fi-bolt:before, + +.fi-book:before, + +.fi-bookmark:before, + +.fi-box:before, + +.fi-briefcase:before, + +.fi-british-pound:before, + +.fi-browser:before, + +.fi-brush:before, + +.fi-bug:before, + +.fi-bullhorn:before, + +.fi-calculator:before, + +.fi-calendar:before, + +.fi-camera-slr:before, + +.fi-caret-bottom:before, + +.fi-caret-left:before, + +.fi-caret-right:before, + +.fi-caret-top:before, + +.fi-cart:before, + +.fi-chat:before, + +.fi-check:before, + +.fi-chevron-bottom:before, + +.fi-chevron-left:before, + +.fi-chevron-right:before, + +.fi-chevron-top:before, + +.fi-circle-check:before, + +.fi-circle-x:before, + +.fi-clipboard:before, + +.fi-clock:before, + +.fi-cloud-download:before, + +.fi-cloud-upload:before, + +.fi-cloud:before, + +.fi-cloudy:before, + +.fi-code:before, + +.fi-cog:before, + +.fi-collapse-down:before, + +.fi-collapse-left:before, + +.fi-collapse-right:before, + +.fi-collapse-up:before, + +.fi-command:before, + +.fi-comment-square:before, + +.fi-compass:before, + +.fi-contrast:before, + +.fi-copywriting:before, + +.fi-credit-card:before, + +.fi-crop:before, + +.fi-dashboard:before, + +.fi-data-transfer-download:before, + +.fi-data-transfer-upload:before, + +.fi-delete:before, + +.fi-dial:before, + +.fi-document:before, + +.fi-dollar:before, + +.fi-double-quote-sans-left:before, + +.fi-double-quote-sans-right:before, + +.fi-double-quote-serif-left:before, + +.fi-double-quote-serif-right:before, + +.fi-droplet:before, + +.fi-eject:before, + +.fi-elevator:before, + +.fi-ellipses:before, + +.fi-envelope-closed:before, + +.fi-envelope-open:before, + +.fi-euro:before, + +.fi-excerpt:before, + +.fi-expand-down:before, + +.fi-expand-left:before, + +.fi-expand-right:before, + +.fi-expand-up:before, + +.fi-external-link:before, + +.fi-eye:before, + +.fi-eyedropper:before, + +.fi-file:before, + +.fi-fire:before, + +.fi-flag:before, + +.fi-flash:before, + +.fi-folder:before, + +.fi-fork:before, + +.fi-fullscreen-enter:before, + +.fi-fullscreen-exit:before, + +.fi-globe:before, + +.fi-graph:before, + +.fi-grid-four-up:before, + +.fi-grid-three-up:before, + +.fi-grid-two-up:before, + +.fi-hard-drive:before, + +.fi-header:before, + +.fi-headphones:before, + +.fi-heart:before, + +.fi-home:before, + +.fi-image:before, + +.fi-inbox:before, + +.fi-infinity:before, + +.fi-info:before, + +.fi-italic:before, + +.fi-justify-center:before, + +.fi-justify-left:before, + +.fi-justify-right:before, + +.fi-key:before, + +.fi-laptop:before, + +.fi-layers:before, + +.fi-lightbulb:before, + +.fi-link-broken:before, + +.fi-link-intact:before, + +.fi-list-rich:before, + +.fi-list:before, + +.fi-location:before, + +.fi-lock-locked:before, + +.fi-lock-unlocked:before, + +.fi-loop-circular:before, + +.fi-loop-square:before, + +.fi-loop:before, + +.fi-magnifying-glass:before, + +.fi-map-marker:before, + +.fi-map:before, + +.fi-media-pause:before, + +.fi-media-play:before, + +.fi-media-record:before, + +.fi-media-skip-backward:before, + +.fi-media-skip-forward:before, + +.fi-media-step-backward:before, + +.fi-media-step-forward:before, + +.fi-media-stop:before, + +.fi-medical-cross:before, + +.fi-menu:before, + +.fi-microphone:before, + +.fi-minus:before, + +.fi-monitor:before, + +.fi-moon:before, + +.fi-move:before, + +.fi-musical-note:before, + +.fi-paperclip:before, + +.fi-pencil:before, + +.fi-people:before, + +.fi-person:before, + +.fi-phone:before, + +.fi-pie-chart:before, + +.fi-pin:before, + +.fi-play-circle:before, + +.fi-plus:before, + +.fi-power-standby:before, + +.fi-print:before, + +.fi-project:before, + +.fi-pulse:before, + +.fi-puzzle-piece:before, + +.fi-question-mark:before, + +.fi-rain:before, + +.fi-random:before, + +.fi-reload:before, + +.fi-resize-both:before, + +.fi-resize-height:before, + +.fi-resize-width:before, + +.fi-rss-alt:before, + +.fi-rss:before, + +.fi-script:before, + +.fi-share-boxed:before, + +.fi-share:before, + +.fi-shield:before, + +.fi-signal:before, + +.fi-signpost:before, + +.fi-sort-ascending:before, + +.fi-sort-descending:before, + +.fi-spreadsheet:before, + +.fi-star:before, + +.fi-sun:before, + +.fi-tablet:before, + +.fi-tag:before, + +.fi-tags:before, + +.fi-target:before, + +.fi-task:before, + +.fi-terminal:before, + +.fi-text:before, + +.fi-thumb-down:before, + +.fi-thumb-up:before, + +.fi-timer:before, + +.fi-transfer:before, + +.fi-trash:before, + +.fi-underline:before, + +.fi-vertical-align-bottom:before, + +.fi-vertical-align-center:before, + +.fi-vertical-align-top:before, + +.fi-video:before, + +.fi-volume-high:before, + +.fi-volume-low:before, + +.fi-volume-off:before, + +.fi-warning:before, + +.fi-wifi:before, + +.fi-wrench:before, + +.fi-x:before, + +.fi-yen:before, + +.fi-zoom-in:before, + +.fi-zoom-out:before + { + font-family: 'Icons'; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + display: inline-block; + text-decoration: inherit; +} + + +[class*='fi-'].oi-align-center:before { + text-align: center; +} + +[class*='fi-'].oi-align-left:before { + text-align: left; +} + +[class*='fi-'].oi-align-right:before { + text-align: right; +} + + +[class*='fi-'].oi-flip-horizontal:before { + -webkit-transform: scale(-1, 1); + -ms-transform: scale(-1, 1); + transform: scale(-1, 1); +} + +[class*='fi-'].oi-flip-vertical:before { + -webkit-transform: scale(1, -1); + -ms-transform: scale(-1, 1); + transform: scale(1, -1); +} + +[class*='fi-'].oi-flip-horizontal-vertical:before { + -webkit-transform: scale(-1, -1); + -ms-transform: scale(-1, 1); + transform: scale(-1, -1); +} + + + +.fi-account-login:before { + content:'\e000'; +} + +.fi-account-logout:before { + content:'\e001'; +} + +.fi-action-redo:before { + content:'\e002'; +} + +.fi-action-undo:before { + content:'\e003'; +} + +.fi-align-center:before { + content:'\e004'; +} + +.fi-align-left:before { + content:'\e005'; +} + +.fi-align-right:before { + content:'\e006'; +} + +.fi-aperture:before { + content:'\e007'; +} + +.fi-arrow-bottom:before { + content:'\e008'; +} + +.fi-arrow-circle-bottom:before { + content:'\e009'; +} + +.fi-arrow-circle-left:before { + content:'\e00a'; +} + +.fi-arrow-circle-right:before { + content:'\e00b'; +} + +.fi-arrow-circle-top:before { + content:'\e00c'; +} + +.fi-arrow-left:before { + content:'\e00d'; +} + +.fi-arrow-right:before { + content:'\e00e'; +} + +.fi-arrow-thick-bottom:before { + content:'\e00f'; +} + +.fi-arrow-thick-left:before { + content:'\e010'; +} + +.fi-arrow-thick-right:before { + content:'\e011'; +} + +.fi-arrow-thick-top:before { + content:'\e012'; +} + +.fi-arrow-top:before { + content:'\e013'; +} + +.fi-audio-spectrum:before { + content:'\e014'; +} + +.fi-audio:before { + content:'\e015'; +} + +.fi-badge:before { + content:'\e016'; +} + +.fi-ban:before { + content:'\e017'; +} + +.fi-bar-chart:before { + content:'\e018'; +} + +.fi-basket:before { + content:'\e019'; +} + +.fi-battery-empty:before { + content:'\e01a'; +} + +.fi-battery-full:before { + content:'\e01b'; +} + +.fi-beaker:before { + content:'\e01c'; +} + +.fi-bell:before { + content:'\e01d'; +} + +.fi-bluetooth:before { + content:'\e01e'; +} + +.fi-bold:before { + content:'\e01f'; +} + +.fi-bolt:before { + content:'\e020'; +} + +.fi-book:before { + content:'\e021'; +} + +.fi-bookmark:before { + content:'\e022'; +} + +.fi-box:before { + content:'\e023'; +} + +.fi-briefcase:before { + content:'\e024'; +} + +.fi-british-pound:before { + content:'\e025'; +} + +.fi-browser:before { + content:'\e026'; +} + +.fi-brush:before { + content:'\e027'; +} + +.fi-bug:before { + content:'\e028'; +} + +.fi-bullhorn:before { + content:'\e029'; +} + +.fi-calculator:before { + content:'\e02a'; +} + +.fi-calendar:before { + content:'\e02b'; +} + +.fi-camera-slr:before { + content:'\e02c'; +} + +.fi-caret-bottom:before { + content:'\e02d'; +} + +.fi-caret-left:before { + content:'\e02e'; +} + +.fi-caret-right:before { + content:'\e02f'; +} + +.fi-caret-top:before { + content:'\e030'; +} + +.fi-cart:before { + content:'\e031'; +} + +.fi-chat:before { + content:'\e032'; +} + +.fi-check:before { + content:'\e033'; +} + +.fi-chevron-bottom:before { + content:'\e034'; +} + +.fi-chevron-left:before { + content:'\e035'; +} + +.fi-chevron-right:before { + content:'\e036'; +} + +.fi-chevron-top:before { + content:'\e037'; +} + +.fi-circle-check:before { + content:'\e038'; +} + +.fi-circle-x:before { + content:'\e039'; +} + +.fi-clipboard:before { + content:'\e03a'; +} + +.fi-clock:before { + content:'\e03b'; +} + +.fi-cloud-download:before { + content:'\e03c'; +} + +.fi-cloud-upload:before { + content:'\e03d'; +} + +.fi-cloud:before { + content:'\e03e'; +} + +.fi-cloudy:before { + content:'\e03f'; +} + +.fi-code:before { + content:'\e040'; +} + +.fi-cog:before { + content:'\e041'; +} + +.fi-collapse-down:before { + content:'\e042'; +} + +.fi-collapse-left:before { + content:'\e043'; +} + +.fi-collapse-right:before { + content:'\e044'; +} + +.fi-collapse-up:before { + content:'\e045'; +} + +.fi-command:before { + content:'\e046'; +} + +.fi-comment-square:before { + content:'\e047'; +} + +.fi-compass:before { + content:'\e048'; +} + +.fi-contrast:before { + content:'\e049'; +} + +.fi-copywriting:before { + content:'\e04a'; +} + +.fi-credit-card:before { + content:'\e04b'; +} + +.fi-crop:before { + content:'\e04c'; +} + +.fi-dashboard:before { + content:'\e04d'; +} + +.fi-data-transfer-download:before { + content:'\e04e'; +} + +.fi-data-transfer-upload:before { + content:'\e04f'; +} + +.fi-delete:before { + content:'\e050'; +} + +.fi-dial:before { + content:'\e051'; +} + +.fi-document:before { + content:'\e052'; +} + +.fi-dollar:before { + content:'\e053'; +} + +.fi-double-quote-sans-left:before { + content:'\e054'; +} + +.fi-double-quote-sans-right:before { + content:'\e055'; +} + +.fi-double-quote-serif-left:before { + content:'\e056'; +} + +.fi-double-quote-serif-right:before { + content:'\e057'; +} + +.fi-droplet:before { + content:'\e058'; +} + +.fi-eject:before { + content:'\e059'; +} + +.fi-elevator:before { + content:'\e05a'; +} + +.fi-ellipses:before { + content:'\e05b'; +} + +.fi-envelope-closed:before { + content:'\e05c'; +} + +.fi-envelope-open:before { + content:'\e05d'; +} + +.fi-euro:before { + content:'\e05e'; +} + +.fi-excerpt:before { + content:'\e05f'; +} + +.fi-expand-down:before { + content:'\e060'; +} + +.fi-expand-left:before { + content:'\e061'; +} + +.fi-expand-right:before { + content:'\e062'; +} + +.fi-expand-up:before { + content:'\e063'; +} + +.fi-external-link:before { + content:'\e064'; +} + +.fi-eye:before { + content:'\e065'; +} + +.fi-eyedropper:before { + content:'\e066'; +} + +.fi-file:before { + content:'\e067'; +} + +.fi-fire:before { + content:'\e068'; +} + +.fi-flag:before { + content:'\e069'; +} + +.fi-flash:before { + content:'\e06a'; +} + +.fi-folder:before { + content:'\e06b'; +} + +.fi-fork:before { + content:'\e06c'; +} + +.fi-fullscreen-enter:before { + content:'\e06d'; +} + +.fi-fullscreen-exit:before { + content:'\e06e'; +} + +.fi-globe:before { + content:'\e06f'; +} + +.fi-graph:before { + content:'\e070'; +} + +.fi-grid-four-up:before { + content:'\e071'; +} + +.fi-grid-three-up:before { + content:'\e072'; +} + +.fi-grid-two-up:before { + content:'\e073'; +} + +.fi-hard-drive:before { + content:'\e074'; +} + +.fi-header:before { + content:'\e075'; +} + +.fi-headphones:before { + content:'\e076'; +} + +.fi-heart:before { + content:'\e077'; +} + +.fi-home:before { + content:'\e078'; +} + +.fi-image:before { + content:'\e079'; +} + +.fi-inbox:before { + content:'\e07a'; +} + +.fi-infinity:before { + content:'\e07b'; +} + +.fi-info:before { + content:'\e07c'; +} + +.fi-italic:before { + content:'\e07d'; +} + +.fi-justify-center:before { + content:'\e07e'; +} + +.fi-justify-left:before { + content:'\e07f'; +} + +.fi-justify-right:before { + content:'\e080'; +} + +.fi-key:before { + content:'\e081'; +} + +.fi-laptop:before { + content:'\e082'; +} + +.fi-layers:before { + content:'\e083'; +} + +.fi-lightbulb:before { + content:'\e084'; +} + +.fi-link-broken:before { + content:'\e085'; +} + +.fi-link-intact:before { + content:'\e086'; +} + +.fi-list-rich:before { + content:'\e087'; +} + +.fi-list:before { + content:'\e088'; +} + +.fi-location:before { + content:'\e089'; +} + +.fi-lock-locked:before { + content:'\e08a'; +} + +.fi-lock-unlocked:before { + content:'\e08b'; +} + +.fi-loop-circular:before { + content:'\e08c'; +} + +.fi-loop-square:before { + content:'\e08d'; +} + +.fi-loop:before { + content:'\e08e'; +} + +.fi-magnifying-glass:before { + content:'\e08f'; +} + +.fi-map-marker:before { + content:'\e090'; +} + +.fi-map:before { + content:'\e091'; +} + +.fi-media-pause:before { + content:'\e092'; +} + +.fi-media-play:before { + content:'\e093'; +} + +.fi-media-record:before { + content:'\e094'; +} + +.fi-media-skip-backward:before { + content:'\e095'; +} + +.fi-media-skip-forward:before { + content:'\e096'; +} + +.fi-media-step-backward:before { + content:'\e097'; +} + +.fi-media-step-forward:before { + content:'\e098'; +} + +.fi-media-stop:before { + content:'\e099'; +} + +.fi-medical-cross:before { + content:'\e09a'; +} + +.fi-menu:before { + content:'\e09b'; +} + +.fi-microphone:before { + content:'\e09c'; +} + +.fi-minus:before { + content:'\e09d'; +} + +.fi-monitor:before { + content:'\e09e'; +} + +.fi-moon:before { + content:'\e09f'; +} + +.fi-move:before { + content:'\e0a0'; +} + +.fi-musical-note:before { + content:'\e0a1'; +} + +.fi-paperclip:before { + content:'\e0a2'; +} + +.fi-pencil:before { + content:'\e0a3'; +} + +.fi-people:before { + content:'\e0a4'; +} + +.fi-person:before { + content:'\e0a5'; +} + +.fi-phone:before { + content:'\e0a6'; +} + +.fi-pie-chart:before { + content:'\e0a7'; +} + +.fi-pin:before { + content:'\e0a8'; +} + +.fi-play-circle:before { + content:'\e0a9'; +} + +.fi-plus:before { + content:'\e0aa'; +} + +.fi-power-standby:before { + content:'\e0ab'; +} + +.fi-print:before { + content:'\e0ac'; +} + +.fi-project:before { + content:'\e0ad'; +} + +.fi-pulse:before { + content:'\e0ae'; +} + +.fi-puzzle-piece:before { + content:'\e0af'; +} + +.fi-question-mark:before { + content:'\e0b0'; +} + +.fi-rain:before { + content:'\e0b1'; +} + +.fi-random:before { + content:'\e0b2'; +} + +.fi-reload:before { + content:'\e0b3'; +} + +.fi-resize-both:before { + content:'\e0b4'; +} + +.fi-resize-height:before { + content:'\e0b5'; +} + +.fi-resize-width:before { + content:'\e0b6'; +} + +.fi-rss-alt:before { + content:'\e0b7'; +} + +.fi-rss:before { + content:'\e0b8'; +} + +.fi-script:before { + content:'\e0b9'; +} + +.fi-share-boxed:before { + content:'\e0ba'; +} + +.fi-share:before { + content:'\e0bb'; +} + +.fi-shield:before { + content:'\e0bc'; +} + +.fi-signal:before { + content:'\e0bd'; +} + +.fi-signpost:before { + content:'\e0be'; +} + +.fi-sort-ascending:before { + content:'\e0bf'; +} + +.fi-sort-descending:before { + content:'\e0c0'; +} + +.fi-spreadsheet:before { + content:'\e0c1'; +} + +.fi-star:before { + content:'\e0c2'; +} + +.fi-sun:before { + content:'\e0c3'; +} + +.fi-tablet:before { + content:'\e0c4'; +} + +.fi-tag:before { + content:'\e0c5'; +} + +.fi-tags:before { + content:'\e0c6'; +} + +.fi-target:before { + content:'\e0c7'; +} + +.fi-task:before { + content:'\e0c8'; +} + +.fi-terminal:before { + content:'\e0c9'; +} + +.fi-text:before { + content:'\e0ca'; +} + +.fi-thumb-down:before { + content:'\e0cb'; +} + +.fi-thumb-up:before { + content:'\e0cc'; +} + +.fi-timer:before { + content:'\e0cd'; +} + +.fi-transfer:before { + content:'\e0ce'; +} + +.fi-trash:before { + content:'\e0cf'; +} + +.fi-underline:before { + content:'\e0d0'; +} + +.fi-vertical-align-bottom:before { + content:'\e0d1'; +} + +.fi-vertical-align-center:before { + content:'\e0d2'; +} + +.fi-vertical-align-top:before { + content:'\e0d3'; +} + +.fi-video:before { + content:'\e0d4'; +} + +.fi-volume-high:before { + content:'\e0d5'; +} + +.fi-volume-low:before { + content:'\e0d6'; +} + +.fi-volume-off:before { + content:'\e0d7'; +} + +.fi-warning:before { + content:'\e0d8'; +} + +.fi-wifi:before { + content:'\e0d9'; +} + +.fi-wrench:before { + content:'\e0da'; +} + +.fi-x:before { + content:'\e0db'; +} + +.fi-yen:before { + content:'\e0dc'; +} + +.fi-zoom-in:before { + content:'\e0dd'; +} + +.fi-zoom-out:before { + content:'\e0de'; +} + diff --git a/class/RealSpaceInterface/static/fonts/open-iconic/font/css/open-iconic-foundation.less b/class/RealSpaceInterface/static/fonts/open-iconic/font/css/open-iconic-foundation.less new file mode 100644 index 00000000..deabf26f --- /dev/null +++ b/class/RealSpaceInterface/static/fonts/open-iconic/font/css/open-iconic-foundation.less @@ -0,0 +1,1397 @@ +/* Foundation */ + +/* Font path variable */ +@icon-font-path: '../fonts/'; + +@font-face { + font-family: 'Icons'; + src: url('@{icon-font-path}open-iconic.eot'); + src: url('@{icon-font-path}open-iconic.eot?#iconic-sm') format('embedded-opentype'), url('@{icon-font-path}open-iconic.woff') format('woff'), url('@{icon-font-path}open-iconic.ttf') format('truetype'), url('@{icon-font-path}open-iconic.otf') format('opentype'), url('@{icon-font-path}open-iconic.svg#iconic-sm') format('svg'); + font-weight: normal; + font-style: normal; +} + + +.fi-account-login:before, + +.fi-account-logout:before, + +.fi-action-redo:before, + +.fi-action-undo:before, + +.fi-align-center:before, + +.fi-align-left:before, + +.fi-align-right:before, + +.fi-aperture:before, + +.fi-arrow-bottom:before, + +.fi-arrow-circle-bottom:before, + +.fi-arrow-circle-left:before, + +.fi-arrow-circle-right:before, + +.fi-arrow-circle-top:before, + +.fi-arrow-left:before, + +.fi-arrow-right:before, + +.fi-arrow-thick-bottom:before, + +.fi-arrow-thick-left:before, + +.fi-arrow-thick-right:before, + +.fi-arrow-thick-top:before, + +.fi-arrow-top:before, + +.fi-audio-spectrum:before, + +.fi-audio:before, + +.fi-badge:before, + +.fi-ban:before, + +.fi-bar-chart:before, + +.fi-basket:before, + +.fi-battery-empty:before, + +.fi-battery-full:before, + +.fi-beaker:before, + +.fi-bell:before, + +.fi-bluetooth:before, + +.fi-bold:before, + +.fi-bolt:before, + +.fi-book:before, + +.fi-bookmark:before, + +.fi-box:before, + +.fi-briefcase:before, + +.fi-british-pound:before, + +.fi-browser:before, + +.fi-brush:before, + +.fi-bug:before, + +.fi-bullhorn:before, + +.fi-calculator:before, + +.fi-calendar:before, + +.fi-camera-slr:before, + +.fi-caret-bottom:before, + +.fi-caret-left:before, + +.fi-caret-right:before, + +.fi-caret-top:before, + +.fi-cart:before, + +.fi-chat:before, + +.fi-check:before, + +.fi-chevron-bottom:before, + +.fi-chevron-left:before, + +.fi-chevron-right:before, + +.fi-chevron-top:before, + +.fi-circle-check:before, + +.fi-circle-x:before, + +.fi-clipboard:before, + +.fi-clock:before, + +.fi-cloud-download:before, + +.fi-cloud-upload:before, + +.fi-cloud:before, + +.fi-cloudy:before, + +.fi-code:before, + +.fi-cog:before, + +.fi-collapse-down:before, + +.fi-collapse-left:before, + +.fi-collapse-right:before, + +.fi-collapse-up:before, + +.fi-command:before, + +.fi-comment-square:before, + +.fi-compass:before, + +.fi-contrast:before, + +.fi-copywriting:before, + +.fi-credit-card:before, + +.fi-crop:before, + +.fi-dashboard:before, + +.fi-data-transfer-download:before, + +.fi-data-transfer-upload:before, + +.fi-delete:before, + +.fi-dial:before, + +.fi-document:before, + +.fi-dollar:before, + +.fi-double-quote-sans-left:before, + +.fi-double-quote-sans-right:before, + +.fi-double-quote-serif-left:before, + +.fi-double-quote-serif-right:before, + +.fi-droplet:before, + +.fi-eject:before, + +.fi-elevator:before, + +.fi-ellipses:before, + +.fi-envelope-closed:before, + +.fi-envelope-open:before, + +.fi-euro:before, + +.fi-excerpt:before, + +.fi-expand-down:before, + +.fi-expand-left:before, + +.fi-expand-right:before, + +.fi-expand-up:before, + +.fi-external-link:before, + +.fi-eye:before, + +.fi-eyedropper:before, + +.fi-file:before, + +.fi-fire:before, + +.fi-flag:before, + +.fi-flash:before, + +.fi-folder:before, + +.fi-fork:before, + +.fi-fullscreen-enter:before, + +.fi-fullscreen-exit:before, + +.fi-globe:before, + +.fi-graph:before, + +.fi-grid-four-up:before, + +.fi-grid-three-up:before, + +.fi-grid-two-up:before, + +.fi-hard-drive:before, + +.fi-header:before, + +.fi-headphones:before, + +.fi-heart:before, + +.fi-home:before, + +.fi-image:before, + +.fi-inbox:before, + +.fi-infinity:before, + +.fi-info:before, + +.fi-italic:before, + +.fi-justify-center:before, + +.fi-justify-left:before, + +.fi-justify-right:before, + +.fi-key:before, + +.fi-laptop:before, + +.fi-layers:before, + +.fi-lightbulb:before, + +.fi-link-broken:before, + +.fi-link-intact:before, + +.fi-list-rich:before, + +.fi-list:before, + +.fi-location:before, + +.fi-lock-locked:before, + +.fi-lock-unlocked:before, + +.fi-loop-circular:before, + +.fi-loop-square:before, + +.fi-loop:before, + +.fi-magnifying-glass:before, + +.fi-map-marker:before, + +.fi-map:before, + +.fi-media-pause:before, + +.fi-media-play:before, + +.fi-media-record:before, + +.fi-media-skip-backward:before, + +.fi-media-skip-forward:before, + +.fi-media-step-backward:before, + +.fi-media-step-forward:before, + +.fi-media-stop:before, + +.fi-medical-cross:before, + +.fi-menu:before, + +.fi-microphone:before, + +.fi-minus:before, + +.fi-monitor:before, + +.fi-moon:before, + +.fi-move:before, + +.fi-musical-note:before, + +.fi-paperclip:before, + +.fi-pencil:before, + +.fi-people:before, + +.fi-person:before, + +.fi-phone:before, + +.fi-pie-chart:before, + +.fi-pin:before, + +.fi-play-circle:before, + +.fi-plus:before, + +.fi-power-standby:before, + +.fi-print:before, + +.fi-project:before, + +.fi-pulse:before, + +.fi-puzzle-piece:before, + +.fi-question-mark:before, + +.fi-rain:before, + +.fi-random:before, + +.fi-reload:before, + +.fi-resize-both:before, + +.fi-resize-height:before, + +.fi-resize-width:before, + +.fi-rss-alt:before, + +.fi-rss:before, + +.fi-script:before, + +.fi-share-boxed:before, + +.fi-share:before, + +.fi-shield:before, + +.fi-signal:before, + +.fi-signpost:before, + +.fi-sort-ascending:before, + +.fi-sort-descending:before, + +.fi-spreadsheet:before, + +.fi-star:before, + +.fi-sun:before, + +.fi-tablet:before, + +.fi-tag:before, + +.fi-tags:before, + +.fi-target:before, + +.fi-task:before, + +.fi-terminal:before, + +.fi-text:before, + +.fi-thumb-down:before, + +.fi-thumb-up:before, + +.fi-timer:before, + +.fi-transfer:before, + +.fi-trash:before, + +.fi-underline:before, + +.fi-vertical-align-bottom:before, + +.fi-vertical-align-center:before, + +.fi-vertical-align-top:before, + +.fi-video:before, + +.fi-volume-high:before, + +.fi-volume-low:before, + +.fi-volume-off:before, + +.fi-warning:before, + +.fi-wifi:before, + +.fi-wrench:before, + +.fi-x:before, + +.fi-yen:before, + +.fi-zoom-in:before, + +.fi-zoom-out:before + { + font-family: 'Icons'; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + display: inline-block; + text-decoration: inherit; +} + +[class*='fi-'].oi-align-center:before { + text-align: center; +} + +[class*='fi-'].oi-align-left:before { + text-align: left; +} + +[class*='fi-'].oi-align-right:before { + text-align: right; +} + + +[class*='fi-'].oi-flip-horizontal:before { + -webkit-transform: scale(-1, 1); + -ms-transform: scale(-1, 1); + transform: scale(-1, 1); +} + +[class*='fi-'].oi-flip-vertical:before { + -webkit-transform: scale(1, -1); + -ms-transform: scale(-1, 1); + transform: scale(1, -1); +} + +[class*='fi-'].oi-flip-horizontal-vertical:before { + -webkit-transform: scale(-1, -1); + -ms-transform: scale(-1, 1); + transform: scale(-1, -1); +} + + + +.fi-account-login:before { + content:'\e000'; +} + +.fi-account-logout:before { + content:'\e001'; +} + +.fi-action-redo:before { + content:'\e002'; +} + +.fi-action-undo:before { + content:'\e003'; +} + +.fi-align-center:before { + content:'\e004'; +} + +.fi-align-left:before { + content:'\e005'; +} + +.fi-align-right:before { + content:'\e006'; +} + +.fi-aperture:before { + content:'\e007'; +} + +.fi-arrow-bottom:before { + content:'\e008'; +} + +.fi-arrow-circle-bottom:before { + content:'\e009'; +} + +.fi-arrow-circle-left:before { + content:'\e00a'; +} + +.fi-arrow-circle-right:before { + content:'\e00b'; +} + +.fi-arrow-circle-top:before { + content:'\e00c'; +} + +.fi-arrow-left:before { + content:'\e00d'; +} + +.fi-arrow-right:before { + content:'\e00e'; +} + +.fi-arrow-thick-bottom:before { + content:'\e00f'; +} + +.fi-arrow-thick-left:before { + content:'\e010'; +} + +.fi-arrow-thick-right:before { + content:'\e011'; +} + +.fi-arrow-thick-top:before { + content:'\e012'; +} + +.fi-arrow-top:before { + content:'\e013'; +} + +.fi-audio-spectrum:before { + content:'\e014'; +} + +.fi-audio:before { + content:'\e015'; +} + +.fi-badge:before { + content:'\e016'; +} + +.fi-ban:before { + content:'\e017'; +} + +.fi-bar-chart:before { + content:'\e018'; +} + +.fi-basket:before { + content:'\e019'; +} + +.fi-battery-empty:before { + content:'\e01a'; +} + +.fi-battery-full:before { + content:'\e01b'; +} + +.fi-beaker:before { + content:'\e01c'; +} + +.fi-bell:before { + content:'\e01d'; +} + +.fi-bluetooth:before { + content:'\e01e'; +} + +.fi-bold:before { + content:'\e01f'; +} + +.fi-bolt:before { + content:'\e020'; +} + +.fi-book:before { + content:'\e021'; +} + +.fi-bookmark:before { + content:'\e022'; +} + +.fi-box:before { + content:'\e023'; +} + +.fi-briefcase:before { + content:'\e024'; +} + +.fi-british-pound:before { + content:'\e025'; +} + +.fi-browser:before { + content:'\e026'; +} + +.fi-brush:before { + content:'\e027'; +} + +.fi-bug:before { + content:'\e028'; +} + +.fi-bullhorn:before { + content:'\e029'; +} + +.fi-calculator:before { + content:'\e02a'; +} + +.fi-calendar:before { + content:'\e02b'; +} + +.fi-camera-slr:before { + content:'\e02c'; +} + +.fi-caret-bottom:before { + content:'\e02d'; +} + +.fi-caret-left:before { + content:'\e02e'; +} + +.fi-caret-right:before { + content:'\e02f'; +} + +.fi-caret-top:before { + content:'\e030'; +} + +.fi-cart:before { + content:'\e031'; +} + +.fi-chat:before { + content:'\e032'; +} + +.fi-check:before { + content:'\e033'; +} + +.fi-chevron-bottom:before { + content:'\e034'; +} + +.fi-chevron-left:before { + content:'\e035'; +} + +.fi-chevron-right:before { + content:'\e036'; +} + +.fi-chevron-top:before { + content:'\e037'; +} + +.fi-circle-check:before { + content:'\e038'; +} + +.fi-circle-x:before { + content:'\e039'; +} + +.fi-clipboard:before { + content:'\e03a'; +} + +.fi-clock:before { + content:'\e03b'; +} + +.fi-cloud-download:before { + content:'\e03c'; +} + +.fi-cloud-upload:before { + content:'\e03d'; +} + +.fi-cloud:before { + content:'\e03e'; +} + +.fi-cloudy:before { + content:'\e03f'; +} + +.fi-code:before { + content:'\e040'; +} + +.fi-cog:before { + content:'\e041'; +} + +.fi-collapse-down:before { + content:'\e042'; +} + +.fi-collapse-left:before { + content:'\e043'; +} + +.fi-collapse-right:before { + content:'\e044'; +} + +.fi-collapse-up:before { + content:'\e045'; +} + +.fi-command:before { + content:'\e046'; +} + +.fi-comment-square:before { + content:'\e047'; +} + +.fi-compass:before { + content:'\e048'; +} + +.fi-contrast:before { + content:'\e049'; +} + +.fi-copywriting:before { + content:'\e04a'; +} + +.fi-credit-card:before { + content:'\e04b'; +} + +.fi-crop:before { + content:'\e04c'; +} + +.fi-dashboard:before { + content:'\e04d'; +} + +.fi-data-transfer-download:before { + content:'\e04e'; +} + +.fi-data-transfer-upload:before { + content:'\e04f'; +} + +.fi-delete:before { + content:'\e050'; +} + +.fi-dial:before { + content:'\e051'; +} + +.fi-document:before { + content:'\e052'; +} + +.fi-dollar:before { + content:'\e053'; +} + +.fi-double-quote-sans-left:before { + content:'\e054'; +} + +.fi-double-quote-sans-right:before { + content:'\e055'; +} + +.fi-double-quote-serif-left:before { + content:'\e056'; +} + +.fi-double-quote-serif-right:before { + content:'\e057'; +} + +.fi-droplet:before { + content:'\e058'; +} + +.fi-eject:before { + content:'\e059'; +} + +.fi-elevator:before { + content:'\e05a'; +} + +.fi-ellipses:before { + content:'\e05b'; +} + +.fi-envelope-closed:before { + content:'\e05c'; +} + +.fi-envelope-open:before { + content:'\e05d'; +} + +.fi-euro:before { + content:'\e05e'; +} + +.fi-excerpt:before { + content:'\e05f'; +} + +.fi-expand-down:before { + content:'\e060'; +} + +.fi-expand-left:before { + content:'\e061'; +} + +.fi-expand-right:before { + content:'\e062'; +} + +.fi-expand-up:before { + content:'\e063'; +} + +.fi-external-link:before { + content:'\e064'; +} + +.fi-eye:before { + content:'\e065'; +} + +.fi-eyedropper:before { + content:'\e066'; +} + +.fi-file:before { + content:'\e067'; +} + +.fi-fire:before { + content:'\e068'; +} + +.fi-flag:before { + content:'\e069'; +} + +.fi-flash:before { + content:'\e06a'; +} + +.fi-folder:before { + content:'\e06b'; +} + +.fi-fork:before { + content:'\e06c'; +} + +.fi-fullscreen-enter:before { + content:'\e06d'; +} + +.fi-fullscreen-exit:before { + content:'\e06e'; +} + +.fi-globe:before { + content:'\e06f'; +} + +.fi-graph:before { + content:'\e070'; +} + +.fi-grid-four-up:before { + content:'\e071'; +} + +.fi-grid-three-up:before { + content:'\e072'; +} + +.fi-grid-two-up:before { + content:'\e073'; +} + +.fi-hard-drive:before { + content:'\e074'; +} + +.fi-header:before { + content:'\e075'; +} + +.fi-headphones:before { + content:'\e076'; +} + +.fi-heart:before { + content:'\e077'; +} + +.fi-home:before { + content:'\e078'; +} + +.fi-image:before { + content:'\e079'; +} + +.fi-inbox:before { + content:'\e07a'; +} + +.fi-infinity:before { + content:'\e07b'; +} + +.fi-info:before { + content:'\e07c'; +} + +.fi-italic:before { + content:'\e07d'; +} + +.fi-justify-center:before { + content:'\e07e'; +} + +.fi-justify-left:before { + content:'\e07f'; +} + +.fi-justify-right:before { + content:'\e080'; +} + +.fi-key:before { + content:'\e081'; +} + +.fi-laptop:before { + content:'\e082'; +} + +.fi-layers:before { + content:'\e083'; +} + +.fi-lightbulb:before { + content:'\e084'; +} + +.fi-link-broken:before { + content:'\e085'; +} + +.fi-link-intact:before { + content:'\e086'; +} + +.fi-list-rich:before { + content:'\e087'; +} + +.fi-list:before { + content:'\e088'; +} + +.fi-location:before { + content:'\e089'; +} + +.fi-lock-locked:before { + content:'\e08a'; +} + +.fi-lock-unlocked:before { + content:'\e08b'; +} + +.fi-loop-circular:before { + content:'\e08c'; +} + +.fi-loop-square:before { + content:'\e08d'; +} + +.fi-loop:before { + content:'\e08e'; +} + +.fi-magnifying-glass:before { + content:'\e08f'; +} + +.fi-map-marker:before { + content:'\e090'; +} + +.fi-map:before { + content:'\e091'; +} + +.fi-media-pause:before { + content:'\e092'; +} + +.fi-media-play:before { + content:'\e093'; +} + +.fi-media-record:before { + content:'\e094'; +} + +.fi-media-skip-backward:before { + content:'\e095'; +} + +.fi-media-skip-forward:before { + content:'\e096'; +} + +.fi-media-step-backward:before { + content:'\e097'; +} + +.fi-media-step-forward:before { + content:'\e098'; +} + +.fi-media-stop:before { + content:'\e099'; +} + +.fi-medical-cross:before { + content:'\e09a'; +} + +.fi-menu:before { + content:'\e09b'; +} + +.fi-microphone:before { + content:'\e09c'; +} + +.fi-minus:before { + content:'\e09d'; +} + +.fi-monitor:before { + content:'\e09e'; +} + +.fi-moon:before { + content:'\e09f'; +} + +.fi-move:before { + content:'\e0a0'; +} + +.fi-musical-note:before { + content:'\e0a1'; +} + +.fi-paperclip:before { + content:'\e0a2'; +} + +.fi-pencil:before { + content:'\e0a3'; +} + +.fi-people:before { + content:'\e0a4'; +} + +.fi-person:before { + content:'\e0a5'; +} + +.fi-phone:before { + content:'\e0a6'; +} + +.fi-pie-chart:before { + content:'\e0a7'; +} + +.fi-pin:before { + content:'\e0a8'; +} + +.fi-play-circle:before { + content:'\e0a9'; +} + +.fi-plus:before { + content:'\e0aa'; +} + +.fi-power-standby:before { + content:'\e0ab'; +} + +.fi-print:before { + content:'\e0ac'; +} + +.fi-project:before { + content:'\e0ad'; +} + +.fi-pulse:before { + content:'\e0ae'; +} + +.fi-puzzle-piece:before { + content:'\e0af'; +} + +.fi-question-mark:before { + content:'\e0b0'; +} + +.fi-rain:before { + content:'\e0b1'; +} + +.fi-random:before { + content:'\e0b2'; +} + +.fi-reload:before { + content:'\e0b3'; +} + +.fi-resize-both:before { + content:'\e0b4'; +} + +.fi-resize-height:before { + content:'\e0b5'; +} + +.fi-resize-width:before { + content:'\e0b6'; +} + +.fi-rss-alt:before { + content:'\e0b7'; +} + +.fi-rss:before { + content:'\e0b8'; +} + +.fi-script:before { + content:'\e0b9'; +} + +.fi-share-boxed:before { + content:'\e0ba'; +} + +.fi-share:before { + content:'\e0bb'; +} + +.fi-shield:before { + content:'\e0bc'; +} + +.fi-signal:before { + content:'\e0bd'; +} + +.fi-signpost:before { + content:'\e0be'; +} + +.fi-sort-ascending:before { + content:'\e0bf'; +} + +.fi-sort-descending:before { + content:'\e0c0'; +} + +.fi-spreadsheet:before { + content:'\e0c1'; +} + +.fi-star:before { + content:'\e0c2'; +} + +.fi-sun:before { + content:'\e0c3'; +} + +.fi-tablet:before { + content:'\e0c4'; +} + +.fi-tag:before { + content:'\e0c5'; +} + +.fi-tags:before { + content:'\e0c6'; +} + +.fi-target:before { + content:'\e0c7'; +} + +.fi-task:before { + content:'\e0c8'; +} + +.fi-terminal:before { + content:'\e0c9'; +} + +.fi-text:before { + content:'\e0ca'; +} + +.fi-thumb-down:before { + content:'\e0cb'; +} + +.fi-thumb-up:before { + content:'\e0cc'; +} + +.fi-timer:before { + content:'\e0cd'; +} + +.fi-transfer:before { + content:'\e0ce'; +} + +.fi-trash:before { + content:'\e0cf'; +} + +.fi-underline:before { + content:'\e0d0'; +} + +.fi-vertical-align-bottom:before { + content:'\e0d1'; +} + +.fi-vertical-align-center:before { + content:'\e0d2'; +} + +.fi-vertical-align-top:before { + content:'\e0d3'; +} + +.fi-video:before { + content:'\e0d4'; +} + +.fi-volume-high:before { + content:'\e0d5'; +} + +.fi-volume-low:before { + content:'\e0d6'; +} + +.fi-volume-off:before { + content:'\e0d7'; +} + +.fi-warning:before { + content:'\e0d8'; +} + +.fi-wifi:before { + content:'\e0d9'; +} + +.fi-wrench:before { + content:'\e0da'; +} + +.fi-x:before { + content:'\e0db'; +} + +.fi-yen:before { + content:'\e0dc'; +} + +.fi-zoom-in:before { + content:'\e0dd'; +} + +.fi-zoom-out:before { + content:'\e0de'; +} + diff --git a/class/RealSpaceInterface/static/fonts/open-iconic/font/css/open-iconic-foundation.min.css b/class/RealSpaceInterface/static/fonts/open-iconic/font/css/open-iconic-foundation.min.css new file mode 100644 index 00000000..bd124297 --- /dev/null +++ b/class/RealSpaceInterface/static/fonts/open-iconic/font/css/open-iconic-foundation.min.css @@ -0,0 +1 @@ +@font-face{font-family:Icons;src:url(../fonts/open-iconic.eot);src:url(../fonts/open-iconic.eot?#iconic-sm) format('embedded-opentype'),url(../fonts/open-iconic.woff) format('woff'),url(../fonts/open-iconic.ttf) format('truetype'),url(../fonts/open-iconic.otf) format('opentype'),url(../fonts/open-iconic.svg#iconic-sm) format('svg');font-weight:400;font-style:normal}.fi-account-login:before,.fi-account-logout:before,.fi-action-redo:before,.fi-action-undo:before,.fi-align-center:before,.fi-align-left:before,.fi-align-right:before,.fi-aperture:before,.fi-arrow-bottom:before,.fi-arrow-circle-bottom:before,.fi-arrow-circle-left:before,.fi-arrow-circle-right:before,.fi-arrow-circle-top:before,.fi-arrow-left:before,.fi-arrow-right:before,.fi-arrow-thick-bottom:before,.fi-arrow-thick-left:before,.fi-arrow-thick-right:before,.fi-arrow-thick-top:before,.fi-arrow-top:before,.fi-audio-spectrum:before,.fi-audio:before,.fi-badge:before,.fi-ban:before,.fi-bar-chart:before,.fi-basket:before,.fi-battery-empty:before,.fi-battery-full:before,.fi-beaker:before,.fi-bell:before,.fi-bluetooth:before,.fi-bold:before,.fi-bolt:before,.fi-book:before,.fi-bookmark:before,.fi-box:before,.fi-briefcase:before,.fi-british-pound:before,.fi-browser:before,.fi-brush:before,.fi-bug:before,.fi-bullhorn:before,.fi-calculator:before,.fi-calendar:before,.fi-camera-slr:before,.fi-caret-bottom:before,.fi-caret-left:before,.fi-caret-right:before,.fi-caret-top:before,.fi-cart:before,.fi-chat:before,.fi-check:before,.fi-chevron-bottom:before,.fi-chevron-left:before,.fi-chevron-right:before,.fi-chevron-top:before,.fi-circle-check:before,.fi-circle-x:before,.fi-clipboard:before,.fi-clock:before,.fi-cloud-download:before,.fi-cloud-upload:before,.fi-cloud:before,.fi-cloudy:before,.fi-code:before,.fi-cog:before,.fi-collapse-down:before,.fi-collapse-left:before,.fi-collapse-right:before,.fi-collapse-up:before,.fi-command:before,.fi-comment-square:before,.fi-compass:before,.fi-contrast:before,.fi-copywriting:before,.fi-credit-card:before,.fi-crop:before,.fi-dashboard:before,.fi-data-transfer-download:before,.fi-data-transfer-upload:before,.fi-delete:before,.fi-dial:before,.fi-document:before,.fi-dollar:before,.fi-double-quote-sans-left:before,.fi-double-quote-sans-right:before,.fi-double-quote-serif-left:before,.fi-double-quote-serif-right:before,.fi-droplet:before,.fi-eject:before,.fi-elevator:before,.fi-ellipses:before,.fi-envelope-closed:before,.fi-envelope-open:before,.fi-euro:before,.fi-excerpt:before,.fi-expand-down:before,.fi-expand-left:before,.fi-expand-right:before,.fi-expand-up:before,.fi-external-link:before,.fi-eye:before,.fi-eyedropper:before,.fi-file:before,.fi-fire:before,.fi-flag:before,.fi-flash:before,.fi-folder:before,.fi-fork:before,.fi-fullscreen-enter:before,.fi-fullscreen-exit:before,.fi-globe:before,.fi-graph:before,.fi-grid-four-up:before,.fi-grid-three-up:before,.fi-grid-two-up:before,.fi-hard-drive:before,.fi-header:before,.fi-headphones:before,.fi-heart:before,.fi-home:before,.fi-image:before,.fi-inbox:before,.fi-infinity:before,.fi-info:before,.fi-italic:before,.fi-justify-center:before,.fi-justify-left:before,.fi-justify-right:before,.fi-key:before,.fi-laptop:before,.fi-layers:before,.fi-lightbulb:before,.fi-link-broken:before,.fi-link-intact:before,.fi-list-rich:before,.fi-list:before,.fi-location:before,.fi-lock-locked:before,.fi-lock-unlocked:before,.fi-loop-circular:before,.fi-loop-square:before,.fi-loop:before,.fi-magnifying-glass:before,.fi-map-marker:before,.fi-map:before,.fi-media-pause:before,.fi-media-play:before,.fi-media-record:before,.fi-media-skip-backward:before,.fi-media-skip-forward:before,.fi-media-step-backward:before,.fi-media-step-forward:before,.fi-media-stop:before,.fi-medical-cross:before,.fi-menu:before,.fi-microphone:before,.fi-minus:before,.fi-monitor:before,.fi-moon:before,.fi-move:before,.fi-musical-note:before,.fi-paperclip:before,.fi-pencil:before,.fi-people:before,.fi-person:before,.fi-phone:before,.fi-pie-chart:before,.fi-pin:before,.fi-play-circle:before,.fi-plus:before,.fi-power-standby:before,.fi-print:before,.fi-project:before,.fi-pulse:before,.fi-puzzle-piece:before,.fi-question-mark:before,.fi-rain:before,.fi-random:before,.fi-reload:before,.fi-resize-both:before,.fi-resize-height:before,.fi-resize-width:before,.fi-rss-alt:before,.fi-rss:before,.fi-script:before,.fi-share-boxed:before,.fi-share:before,.fi-shield:before,.fi-signal:before,.fi-signpost:before,.fi-sort-ascending:before,.fi-sort-descending:before,.fi-spreadsheet:before,.fi-star:before,.fi-sun:before,.fi-tablet:before,.fi-tag:before,.fi-tags:before,.fi-target:before,.fi-task:before,.fi-terminal:before,.fi-text:before,.fi-thumb-down:before,.fi-thumb-up:before,.fi-timer:before,.fi-transfer:before,.fi-trash:before,.fi-underline:before,.fi-vertical-align-bottom:before,.fi-vertical-align-center:before,.fi-vertical-align-top:before,.fi-video:before,.fi-volume-high:before,.fi-volume-low:before,.fi-volume-off:before,.fi-warning:before,.fi-wifi:before,.fi-wrench:before,.fi-x:before,.fi-yen:before,.fi-zoom-in:before,.fi-zoom-out:before{font-family:Icons;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:inline-block;text-decoration:inherit}[class*=fi-].oi-align-center:before{text-align:center}[class*=fi-].oi-align-left:before{text-align:left}[class*=fi-].oi-align-right:before{text-align:right}[class*=fi-].oi-flip-horizontal:before{-webkit-transform:scale(-1,1);-ms-transform:scale(-1,1);transform:scale(-1,1)}[class*=fi-].oi-flip-vertical:before{-webkit-transform:scale(1,-1);-ms-transform:scale(-1,1);transform:scale(1,-1)}[class*=fi-].oi-flip-horizontal-vertical:before{-webkit-transform:scale(-1,-1);-ms-transform:scale(-1,1);transform:scale(-1,-1)}.fi-account-login:before{content:'\e000'}.fi-account-logout:before{content:'\e001'}.fi-action-redo:before{content:'\e002'}.fi-action-undo:before{content:'\e003'}.fi-align-center:before{content:'\e004'}.fi-align-left:before{content:'\e005'}.fi-align-right:before{content:'\e006'}.fi-aperture:before{content:'\e007'}.fi-arrow-bottom:before{content:'\e008'}.fi-arrow-circle-bottom:before{content:'\e009'}.fi-arrow-circle-left:before{content:'\e00a'}.fi-arrow-circle-right:before{content:'\e00b'}.fi-arrow-circle-top:before{content:'\e00c'}.fi-arrow-left:before{content:'\e00d'}.fi-arrow-right:before{content:'\e00e'}.fi-arrow-thick-bottom:before{content:'\e00f'}.fi-arrow-thick-left:before{content:'\e010'}.fi-arrow-thick-right:before{content:'\e011'}.fi-arrow-thick-top:before{content:'\e012'}.fi-arrow-top:before{content:'\e013'}.fi-audio-spectrum:before{content:'\e014'}.fi-audio:before{content:'\e015'}.fi-badge:before{content:'\e016'}.fi-ban:before{content:'\e017'}.fi-bar-chart:before{content:'\e018'}.fi-basket:before{content:'\e019'}.fi-battery-empty:before{content:'\e01a'}.fi-battery-full:before{content:'\e01b'}.fi-beaker:before{content:'\e01c'}.fi-bell:before{content:'\e01d'}.fi-bluetooth:before{content:'\e01e'}.fi-bold:before{content:'\e01f'}.fi-bolt:before{content:'\e020'}.fi-book:before{content:'\e021'}.fi-bookmark:before{content:'\e022'}.fi-box:before{content:'\e023'}.fi-briefcase:before{content:'\e024'}.fi-british-pound:before{content:'\e025'}.fi-browser:before{content:'\e026'}.fi-brush:before{content:'\e027'}.fi-bug:before{content:'\e028'}.fi-bullhorn:before{content:'\e029'}.fi-calculator:before{content:'\e02a'}.fi-calendar:before{content:'\e02b'}.fi-camera-slr:before{content:'\e02c'}.fi-caret-bottom:before{content:'\e02d'}.fi-caret-left:before{content:'\e02e'}.fi-caret-right:before{content:'\e02f'}.fi-caret-top:before{content:'\e030'}.fi-cart:before{content:'\e031'}.fi-chat:before{content:'\e032'}.fi-check:before{content:'\e033'}.fi-chevron-bottom:before{content:'\e034'}.fi-chevron-left:before{content:'\e035'}.fi-chevron-right:before{content:'\e036'}.fi-chevron-top:before{content:'\e037'}.fi-circle-check:before{content:'\e038'}.fi-circle-x:before{content:'\e039'}.fi-clipboard:before{content:'\e03a'}.fi-clock:before{content:'\e03b'}.fi-cloud-download:before{content:'\e03c'}.fi-cloud-upload:before{content:'\e03d'}.fi-cloud:before{content:'\e03e'}.fi-cloudy:before{content:'\e03f'}.fi-code:before{content:'\e040'}.fi-cog:before{content:'\e041'}.fi-collapse-down:before{content:'\e042'}.fi-collapse-left:before{content:'\e043'}.fi-collapse-right:before{content:'\e044'}.fi-collapse-up:before{content:'\e045'}.fi-command:before{content:'\e046'}.fi-comment-square:before{content:'\e047'}.fi-compass:before{content:'\e048'}.fi-contrast:before{content:'\e049'}.fi-copywriting:before{content:'\e04a'}.fi-credit-card:before{content:'\e04b'}.fi-crop:before{content:'\e04c'}.fi-dashboard:before{content:'\e04d'}.fi-data-transfer-download:before{content:'\e04e'}.fi-data-transfer-upload:before{content:'\e04f'}.fi-delete:before{content:'\e050'}.fi-dial:before{content:'\e051'}.fi-document:before{content:'\e052'}.fi-dollar:before{content:'\e053'}.fi-double-quote-sans-left:before{content:'\e054'}.fi-double-quote-sans-right:before{content:'\e055'}.fi-double-quote-serif-left:before{content:'\e056'}.fi-double-quote-serif-right:before{content:'\e057'}.fi-droplet:before{content:'\e058'}.fi-eject:before{content:'\e059'}.fi-elevator:before{content:'\e05a'}.fi-ellipses:before{content:'\e05b'}.fi-envelope-closed:before{content:'\e05c'}.fi-envelope-open:before{content:'\e05d'}.fi-euro:before{content:'\e05e'}.fi-excerpt:before{content:'\e05f'}.fi-expand-down:before{content:'\e060'}.fi-expand-left:before{content:'\e061'}.fi-expand-right:before{content:'\e062'}.fi-expand-up:before{content:'\e063'}.fi-external-link:before{content:'\e064'}.fi-eye:before{content:'\e065'}.fi-eyedropper:before{content:'\e066'}.fi-file:before{content:'\e067'}.fi-fire:before{content:'\e068'}.fi-flag:before{content:'\e069'}.fi-flash:before{content:'\e06a'}.fi-folder:before{content:'\e06b'}.fi-fork:before{content:'\e06c'}.fi-fullscreen-enter:before{content:'\e06d'}.fi-fullscreen-exit:before{content:'\e06e'}.fi-globe:before{content:'\e06f'}.fi-graph:before{content:'\e070'}.fi-grid-four-up:before{content:'\e071'}.fi-grid-three-up:before{content:'\e072'}.fi-grid-two-up:before{content:'\e073'}.fi-hard-drive:before{content:'\e074'}.fi-header:before{content:'\e075'}.fi-headphones:before{content:'\e076'}.fi-heart:before{content:'\e077'}.fi-home:before{content:'\e078'}.fi-image:before{content:'\e079'}.fi-inbox:before{content:'\e07a'}.fi-infinity:before{content:'\e07b'}.fi-info:before{content:'\e07c'}.fi-italic:before{content:'\e07d'}.fi-justify-center:before{content:'\e07e'}.fi-justify-left:before{content:'\e07f'}.fi-justify-right:before{content:'\e080'}.fi-key:before{content:'\e081'}.fi-laptop:before{content:'\e082'}.fi-layers:before{content:'\e083'}.fi-lightbulb:before{content:'\e084'}.fi-link-broken:before{content:'\e085'}.fi-link-intact:before{content:'\e086'}.fi-list-rich:before{content:'\e087'}.fi-list:before{content:'\e088'}.fi-location:before{content:'\e089'}.fi-lock-locked:before{content:'\e08a'}.fi-lock-unlocked:before{content:'\e08b'}.fi-loop-circular:before{content:'\e08c'}.fi-loop-square:before{content:'\e08d'}.fi-loop:before{content:'\e08e'}.fi-magnifying-glass:before{content:'\e08f'}.fi-map-marker:before{content:'\e090'}.fi-map:before{content:'\e091'}.fi-media-pause:before{content:'\e092'}.fi-media-play:before{content:'\e093'}.fi-media-record:before{content:'\e094'}.fi-media-skip-backward:before{content:'\e095'}.fi-media-skip-forward:before{content:'\e096'}.fi-media-step-backward:before{content:'\e097'}.fi-media-step-forward:before{content:'\e098'}.fi-media-stop:before{content:'\e099'}.fi-medical-cross:before{content:'\e09a'}.fi-menu:before{content:'\e09b'}.fi-microphone:before{content:'\e09c'}.fi-minus:before{content:'\e09d'}.fi-monitor:before{content:'\e09e'}.fi-moon:before{content:'\e09f'}.fi-move:before{content:'\e0a0'}.fi-musical-note:before{content:'\e0a1'}.fi-paperclip:before{content:'\e0a2'}.fi-pencil:before{content:'\e0a3'}.fi-people:before{content:'\e0a4'}.fi-person:before{content:'\e0a5'}.fi-phone:before{content:'\e0a6'}.fi-pie-chart:before{content:'\e0a7'}.fi-pin:before{content:'\e0a8'}.fi-play-circle:before{content:'\e0a9'}.fi-plus:before{content:'\e0aa'}.fi-power-standby:before{content:'\e0ab'}.fi-print:before{content:'\e0ac'}.fi-project:before{content:'\e0ad'}.fi-pulse:before{content:'\e0ae'}.fi-puzzle-piece:before{content:'\e0af'}.fi-question-mark:before{content:'\e0b0'}.fi-rain:before{content:'\e0b1'}.fi-random:before{content:'\e0b2'}.fi-reload:before{content:'\e0b3'}.fi-resize-both:before{content:'\e0b4'}.fi-resize-height:before{content:'\e0b5'}.fi-resize-width:before{content:'\e0b6'}.fi-rss-alt:before{content:'\e0b7'}.fi-rss:before{content:'\e0b8'}.fi-script:before{content:'\e0b9'}.fi-share-boxed:before{content:'\e0ba'}.fi-share:before{content:'\e0bb'}.fi-shield:before{content:'\e0bc'}.fi-signal:before{content:'\e0bd'}.fi-signpost:before{content:'\e0be'}.fi-sort-ascending:before{content:'\e0bf'}.fi-sort-descending:before{content:'\e0c0'}.fi-spreadsheet:before{content:'\e0c1'}.fi-star:before{content:'\e0c2'}.fi-sun:before{content:'\e0c3'}.fi-tablet:before{content:'\e0c4'}.fi-tag:before{content:'\e0c5'}.fi-tags:before{content:'\e0c6'}.fi-target:before{content:'\e0c7'}.fi-task:before{content:'\e0c8'}.fi-terminal:before{content:'\e0c9'}.fi-text:before{content:'\e0ca'}.fi-thumb-down:before{content:'\e0cb'}.fi-thumb-up:before{content:'\e0cc'}.fi-timer:before{content:'\e0cd'}.fi-transfer:before{content:'\e0ce'}.fi-trash:before{content:'\e0cf'}.fi-underline:before{content:'\e0d0'}.fi-vertical-align-bottom:before{content:'\e0d1'}.fi-vertical-align-center:before{content:'\e0d2'}.fi-vertical-align-top:before{content:'\e0d3'}.fi-video:before{content:'\e0d4'}.fi-volume-high:before{content:'\e0d5'}.fi-volume-low:before{content:'\e0d6'}.fi-volume-off:before{content:'\e0d7'}.fi-warning:before{content:'\e0d8'}.fi-wifi:before{content:'\e0d9'}.fi-wrench:before{content:'\e0da'}.fi-x:before{content:'\e0db'}.fi-yen:before{content:'\e0dc'}.fi-zoom-in:before{content:'\e0dd'}.fi-zoom-out:before{content:'\e0de'} \ No newline at end of file diff --git a/class/RealSpaceInterface/static/fonts/open-iconic/font/css/open-iconic-foundation.scss b/class/RealSpaceInterface/static/fonts/open-iconic/font/css/open-iconic-foundation.scss new file mode 100644 index 00000000..fe471389 --- /dev/null +++ b/class/RealSpaceInterface/static/fonts/open-iconic/font/css/open-iconic-foundation.scss @@ -0,0 +1,1398 @@ +/* Foundation */ + +/* Font path variable */ +$icon-font-path: '../fonts/' !default; + +@font-face { + font-family: 'Icons'; + src: url('#{$icon-font-path}open-iconic.eot'); + src: url('#{$icon-font-path}open-iconic.eot?#iconic-sm') format('embedded-opentype'), url('#{$icon-font-path}open-iconic.woff') format('woff'), url('#{$icon-font-path}open-iconic.ttf') format('truetype'), url('#{$icon-font-path}open-iconic.otf') format('opentype'), url('#{$icon-font-path}open-iconic.svg#iconic-sm') format('svg'); + font-weight: normal; + font-style: normal; +} + + +.fi-account-login:before, + +.fi-account-logout:before, + +.fi-action-redo:before, + +.fi-action-undo:before, + +.fi-align-center:before, + +.fi-align-left:before, + +.fi-align-right:before, + +.fi-aperture:before, + +.fi-arrow-bottom:before, + +.fi-arrow-circle-bottom:before, + +.fi-arrow-circle-left:before, + +.fi-arrow-circle-right:before, + +.fi-arrow-circle-top:before, + +.fi-arrow-left:before, + +.fi-arrow-right:before, + +.fi-arrow-thick-bottom:before, + +.fi-arrow-thick-left:before, + +.fi-arrow-thick-right:before, + +.fi-arrow-thick-top:before, + +.fi-arrow-top:before, + +.fi-audio-spectrum:before, + +.fi-audio:before, + +.fi-badge:before, + +.fi-ban:before, + +.fi-bar-chart:before, + +.fi-basket:before, + +.fi-battery-empty:before, + +.fi-battery-full:before, + +.fi-beaker:before, + +.fi-bell:before, + +.fi-bluetooth:before, + +.fi-bold:before, + +.fi-bolt:before, + +.fi-book:before, + +.fi-bookmark:before, + +.fi-box:before, + +.fi-briefcase:before, + +.fi-british-pound:before, + +.fi-browser:before, + +.fi-brush:before, + +.fi-bug:before, + +.fi-bullhorn:before, + +.fi-calculator:before, + +.fi-calendar:before, + +.fi-camera-slr:before, + +.fi-caret-bottom:before, + +.fi-caret-left:before, + +.fi-caret-right:before, + +.fi-caret-top:before, + +.fi-cart:before, + +.fi-chat:before, + +.fi-check:before, + +.fi-chevron-bottom:before, + +.fi-chevron-left:before, + +.fi-chevron-right:before, + +.fi-chevron-top:before, + +.fi-circle-check:before, + +.fi-circle-x:before, + +.fi-clipboard:before, + +.fi-clock:before, + +.fi-cloud-download:before, + +.fi-cloud-upload:before, + +.fi-cloud:before, + +.fi-cloudy:before, + +.fi-code:before, + +.fi-cog:before, + +.fi-collapse-down:before, + +.fi-collapse-left:before, + +.fi-collapse-right:before, + +.fi-collapse-up:before, + +.fi-command:before, + +.fi-comment-square:before, + +.fi-compass:before, + +.fi-contrast:before, + +.fi-copywriting:before, + +.fi-credit-card:before, + +.fi-crop:before, + +.fi-dashboard:before, + +.fi-data-transfer-download:before, + +.fi-data-transfer-upload:before, + +.fi-delete:before, + +.fi-dial:before, + +.fi-document:before, + +.fi-dollar:before, + +.fi-double-quote-sans-left:before, + +.fi-double-quote-sans-right:before, + +.fi-double-quote-serif-left:before, + +.fi-double-quote-serif-right:before, + +.fi-droplet:before, + +.fi-eject:before, + +.fi-elevator:before, + +.fi-ellipses:before, + +.fi-envelope-closed:before, + +.fi-envelope-open:before, + +.fi-euro:before, + +.fi-excerpt:before, + +.fi-expand-down:before, + +.fi-expand-left:before, + +.fi-expand-right:before, + +.fi-expand-up:before, + +.fi-external-link:before, + +.fi-eye:before, + +.fi-eyedropper:before, + +.fi-file:before, + +.fi-fire:before, + +.fi-flag:before, + +.fi-flash:before, + +.fi-folder:before, + +.fi-fork:before, + +.fi-fullscreen-enter:before, + +.fi-fullscreen-exit:before, + +.fi-globe:before, + +.fi-graph:before, + +.fi-grid-four-up:before, + +.fi-grid-three-up:before, + +.fi-grid-two-up:before, + +.fi-hard-drive:before, + +.fi-header:before, + +.fi-headphones:before, + +.fi-heart:before, + +.fi-home:before, + +.fi-image:before, + +.fi-inbox:before, + +.fi-infinity:before, + +.fi-info:before, + +.fi-italic:before, + +.fi-justify-center:before, + +.fi-justify-left:before, + +.fi-justify-right:before, + +.fi-key:before, + +.fi-laptop:before, + +.fi-layers:before, + +.fi-lightbulb:before, + +.fi-link-broken:before, + +.fi-link-intact:before, + +.fi-list-rich:before, + +.fi-list:before, + +.fi-location:before, + +.fi-lock-locked:before, + +.fi-lock-unlocked:before, + +.fi-loop-circular:before, + +.fi-loop-square:before, + +.fi-loop:before, + +.fi-magnifying-glass:before, + +.fi-map-marker:before, + +.fi-map:before, + +.fi-media-pause:before, + +.fi-media-play:before, + +.fi-media-record:before, + +.fi-media-skip-backward:before, + +.fi-media-skip-forward:before, + +.fi-media-step-backward:before, + +.fi-media-step-forward:before, + +.fi-media-stop:before, + +.fi-medical-cross:before, + +.fi-menu:before, + +.fi-microphone:before, + +.fi-minus:before, + +.fi-monitor:before, + +.fi-moon:before, + +.fi-move:before, + +.fi-musical-note:before, + +.fi-paperclip:before, + +.fi-pencil:before, + +.fi-people:before, + +.fi-person:before, + +.fi-phone:before, + +.fi-pie-chart:before, + +.fi-pin:before, + +.fi-play-circle:before, + +.fi-plus:before, + +.fi-power-standby:before, + +.fi-print:before, + +.fi-project:before, + +.fi-pulse:before, + +.fi-puzzle-piece:before, + +.fi-question-mark:before, + +.fi-rain:before, + +.fi-random:before, + +.fi-reload:before, + +.fi-resize-both:before, + +.fi-resize-height:before, + +.fi-resize-width:before, + +.fi-rss-alt:before, + +.fi-rss:before, + +.fi-script:before, + +.fi-share-boxed:before, + +.fi-share:before, + +.fi-shield:before, + +.fi-signal:before, + +.fi-signpost:before, + +.fi-sort-ascending:before, + +.fi-sort-descending:before, + +.fi-spreadsheet:before, + +.fi-star:before, + +.fi-sun:before, + +.fi-tablet:before, + +.fi-tag:before, + +.fi-tags:before, + +.fi-target:before, + +.fi-task:before, + +.fi-terminal:before, + +.fi-text:before, + +.fi-thumb-down:before, + +.fi-thumb-up:before, + +.fi-timer:before, + +.fi-transfer:before, + +.fi-trash:before, + +.fi-underline:before, + +.fi-vertical-align-bottom:before, + +.fi-vertical-align-center:before, + +.fi-vertical-align-top:before, + +.fi-video:before, + +.fi-volume-high:before, + +.fi-volume-low:before, + +.fi-volume-off:before, + +.fi-warning:before, + +.fi-wifi:before, + +.fi-wrench:before, + +.fi-x:before, + +.fi-yen:before, + +.fi-zoom-in:before, + +.fi-zoom-out:before + { + font-family: 'Icons'; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + display: inline-block; + text-decoration: inherit; +} + + +[class*='fi-'].oi-align-center:before { + text-align: center; +} + +[class*='fi-'].oi-align-left:before { + text-align: left; +} + +[class*='fi-'].oi-align-right:before { + text-align: right; +} + + +[class*='fi-'].oi-flip-horizontal:before { + -webkit-transform: scale(-1, 1); + -ms-transform: scale(-1, 1); + transform: scale(-1, 1); +} + +[class*='fi-'].oi-flip-vertical:before { + -webkit-transform: scale(1, -1); + -ms-transform: scale(-1, 1); + transform: scale(1, -1); +} + +[class*='fi-'].oi-flip-horizontal-vertical:before { + -webkit-transform: scale(-1, -1); + -ms-transform: scale(-1, 1); + transform: scale(-1, -1); +} + + + +.fi-account-login:before { + content:'\e000'; +} + +.fi-account-logout:before { + content:'\e001'; +} + +.fi-action-redo:before { + content:'\e002'; +} + +.fi-action-undo:before { + content:'\e003'; +} + +.fi-align-center:before { + content:'\e004'; +} + +.fi-align-left:before { + content:'\e005'; +} + +.fi-align-right:before { + content:'\e006'; +} + +.fi-aperture:before { + content:'\e007'; +} + +.fi-arrow-bottom:before { + content:'\e008'; +} + +.fi-arrow-circle-bottom:before { + content:'\e009'; +} + +.fi-arrow-circle-left:before { + content:'\e00a'; +} + +.fi-arrow-circle-right:before { + content:'\e00b'; +} + +.fi-arrow-circle-top:before { + content:'\e00c'; +} + +.fi-arrow-left:before { + content:'\e00d'; +} + +.fi-arrow-right:before { + content:'\e00e'; +} + +.fi-arrow-thick-bottom:before { + content:'\e00f'; +} + +.fi-arrow-thick-left:before { + content:'\e010'; +} + +.fi-arrow-thick-right:before { + content:'\e011'; +} + +.fi-arrow-thick-top:before { + content:'\e012'; +} + +.fi-arrow-top:before { + content:'\e013'; +} + +.fi-audio-spectrum:before { + content:'\e014'; +} + +.fi-audio:before { + content:'\e015'; +} + +.fi-badge:before { + content:'\e016'; +} + +.fi-ban:before { + content:'\e017'; +} + +.fi-bar-chart:before { + content:'\e018'; +} + +.fi-basket:before { + content:'\e019'; +} + +.fi-battery-empty:before { + content:'\e01a'; +} + +.fi-battery-full:before { + content:'\e01b'; +} + +.fi-beaker:before { + content:'\e01c'; +} + +.fi-bell:before { + content:'\e01d'; +} + +.fi-bluetooth:before { + content:'\e01e'; +} + +.fi-bold:before { + content:'\e01f'; +} + +.fi-bolt:before { + content:'\e020'; +} + +.fi-book:before { + content:'\e021'; +} + +.fi-bookmark:before { + content:'\e022'; +} + +.fi-box:before { + content:'\e023'; +} + +.fi-briefcase:before { + content:'\e024'; +} + +.fi-british-pound:before { + content:'\e025'; +} + +.fi-browser:before { + content:'\e026'; +} + +.fi-brush:before { + content:'\e027'; +} + +.fi-bug:before { + content:'\e028'; +} + +.fi-bullhorn:before { + content:'\e029'; +} + +.fi-calculator:before { + content:'\e02a'; +} + +.fi-calendar:before { + content:'\e02b'; +} + +.fi-camera-slr:before { + content:'\e02c'; +} + +.fi-caret-bottom:before { + content:'\e02d'; +} + +.fi-caret-left:before { + content:'\e02e'; +} + +.fi-caret-right:before { + content:'\e02f'; +} + +.fi-caret-top:before { + content:'\e030'; +} + +.fi-cart:before { + content:'\e031'; +} + +.fi-chat:before { + content:'\e032'; +} + +.fi-check:before { + content:'\e033'; +} + +.fi-chevron-bottom:before { + content:'\e034'; +} + +.fi-chevron-left:before { + content:'\e035'; +} + +.fi-chevron-right:before { + content:'\e036'; +} + +.fi-chevron-top:before { + content:'\e037'; +} + +.fi-circle-check:before { + content:'\e038'; +} + +.fi-circle-x:before { + content:'\e039'; +} + +.fi-clipboard:before { + content:'\e03a'; +} + +.fi-clock:before { + content:'\e03b'; +} + +.fi-cloud-download:before { + content:'\e03c'; +} + +.fi-cloud-upload:before { + content:'\e03d'; +} + +.fi-cloud:before { + content:'\e03e'; +} + +.fi-cloudy:before { + content:'\e03f'; +} + +.fi-code:before { + content:'\e040'; +} + +.fi-cog:before { + content:'\e041'; +} + +.fi-collapse-down:before { + content:'\e042'; +} + +.fi-collapse-left:before { + content:'\e043'; +} + +.fi-collapse-right:before { + content:'\e044'; +} + +.fi-collapse-up:before { + content:'\e045'; +} + +.fi-command:before { + content:'\e046'; +} + +.fi-comment-square:before { + content:'\e047'; +} + +.fi-compass:before { + content:'\e048'; +} + +.fi-contrast:before { + content:'\e049'; +} + +.fi-copywriting:before { + content:'\e04a'; +} + +.fi-credit-card:before { + content:'\e04b'; +} + +.fi-crop:before { + content:'\e04c'; +} + +.fi-dashboard:before { + content:'\e04d'; +} + +.fi-data-transfer-download:before { + content:'\e04e'; +} + +.fi-data-transfer-upload:before { + content:'\e04f'; +} + +.fi-delete:before { + content:'\e050'; +} + +.fi-dial:before { + content:'\e051'; +} + +.fi-document:before { + content:'\e052'; +} + +.fi-dollar:before { + content:'\e053'; +} + +.fi-double-quote-sans-left:before { + content:'\e054'; +} + +.fi-double-quote-sans-right:before { + content:'\e055'; +} + +.fi-double-quote-serif-left:before { + content:'\e056'; +} + +.fi-double-quote-serif-right:before { + content:'\e057'; +} + +.fi-droplet:before { + content:'\e058'; +} + +.fi-eject:before { + content:'\e059'; +} + +.fi-elevator:before { + content:'\e05a'; +} + +.fi-ellipses:before { + content:'\e05b'; +} + +.fi-envelope-closed:before { + content:'\e05c'; +} + +.fi-envelope-open:before { + content:'\e05d'; +} + +.fi-euro:before { + content:'\e05e'; +} + +.fi-excerpt:before { + content:'\e05f'; +} + +.fi-expand-down:before { + content:'\e060'; +} + +.fi-expand-left:before { + content:'\e061'; +} + +.fi-expand-right:before { + content:'\e062'; +} + +.fi-expand-up:before { + content:'\e063'; +} + +.fi-external-link:before { + content:'\e064'; +} + +.fi-eye:before { + content:'\e065'; +} + +.fi-eyedropper:before { + content:'\e066'; +} + +.fi-file:before { + content:'\e067'; +} + +.fi-fire:before { + content:'\e068'; +} + +.fi-flag:before { + content:'\e069'; +} + +.fi-flash:before { + content:'\e06a'; +} + +.fi-folder:before { + content:'\e06b'; +} + +.fi-fork:before { + content:'\e06c'; +} + +.fi-fullscreen-enter:before { + content:'\e06d'; +} + +.fi-fullscreen-exit:before { + content:'\e06e'; +} + +.fi-globe:before { + content:'\e06f'; +} + +.fi-graph:before { + content:'\e070'; +} + +.fi-grid-four-up:before { + content:'\e071'; +} + +.fi-grid-three-up:before { + content:'\e072'; +} + +.fi-grid-two-up:before { + content:'\e073'; +} + +.fi-hard-drive:before { + content:'\e074'; +} + +.fi-header:before { + content:'\e075'; +} + +.fi-headphones:before { + content:'\e076'; +} + +.fi-heart:before { + content:'\e077'; +} + +.fi-home:before { + content:'\e078'; +} + +.fi-image:before { + content:'\e079'; +} + +.fi-inbox:before { + content:'\e07a'; +} + +.fi-infinity:before { + content:'\e07b'; +} + +.fi-info:before { + content:'\e07c'; +} + +.fi-italic:before { + content:'\e07d'; +} + +.fi-justify-center:before { + content:'\e07e'; +} + +.fi-justify-left:before { + content:'\e07f'; +} + +.fi-justify-right:before { + content:'\e080'; +} + +.fi-key:before { + content:'\e081'; +} + +.fi-laptop:before { + content:'\e082'; +} + +.fi-layers:before { + content:'\e083'; +} + +.fi-lightbulb:before { + content:'\e084'; +} + +.fi-link-broken:before { + content:'\e085'; +} + +.fi-link-intact:before { + content:'\e086'; +} + +.fi-list-rich:before { + content:'\e087'; +} + +.fi-list:before { + content:'\e088'; +} + +.fi-location:before { + content:'\e089'; +} + +.fi-lock-locked:before { + content:'\e08a'; +} + +.fi-lock-unlocked:before { + content:'\e08b'; +} + +.fi-loop-circular:before { + content:'\e08c'; +} + +.fi-loop-square:before { + content:'\e08d'; +} + +.fi-loop:before { + content:'\e08e'; +} + +.fi-magnifying-glass:before { + content:'\e08f'; +} + +.fi-map-marker:before { + content:'\e090'; +} + +.fi-map:before { + content:'\e091'; +} + +.fi-media-pause:before { + content:'\e092'; +} + +.fi-media-play:before { + content:'\e093'; +} + +.fi-media-record:before { + content:'\e094'; +} + +.fi-media-skip-backward:before { + content:'\e095'; +} + +.fi-media-skip-forward:before { + content:'\e096'; +} + +.fi-media-step-backward:before { + content:'\e097'; +} + +.fi-media-step-forward:before { + content:'\e098'; +} + +.fi-media-stop:before { + content:'\e099'; +} + +.fi-medical-cross:before { + content:'\e09a'; +} + +.fi-menu:before { + content:'\e09b'; +} + +.fi-microphone:before { + content:'\e09c'; +} + +.fi-minus:before { + content:'\e09d'; +} + +.fi-monitor:before { + content:'\e09e'; +} + +.fi-moon:before { + content:'\e09f'; +} + +.fi-move:before { + content:'\e0a0'; +} + +.fi-musical-note:before { + content:'\e0a1'; +} + +.fi-paperclip:before { + content:'\e0a2'; +} + +.fi-pencil:before { + content:'\e0a3'; +} + +.fi-people:before { + content:'\e0a4'; +} + +.fi-person:before { + content:'\e0a5'; +} + +.fi-phone:before { + content:'\e0a6'; +} + +.fi-pie-chart:before { + content:'\e0a7'; +} + +.fi-pin:before { + content:'\e0a8'; +} + +.fi-play-circle:before { + content:'\e0a9'; +} + +.fi-plus:before { + content:'\e0aa'; +} + +.fi-power-standby:before { + content:'\e0ab'; +} + +.fi-print:before { + content:'\e0ac'; +} + +.fi-project:before { + content:'\e0ad'; +} + +.fi-pulse:before { + content:'\e0ae'; +} + +.fi-puzzle-piece:before { + content:'\e0af'; +} + +.fi-question-mark:before { + content:'\e0b0'; +} + +.fi-rain:before { + content:'\e0b1'; +} + +.fi-random:before { + content:'\e0b2'; +} + +.fi-reload:before { + content:'\e0b3'; +} + +.fi-resize-both:before { + content:'\e0b4'; +} + +.fi-resize-height:before { + content:'\e0b5'; +} + +.fi-resize-width:before { + content:'\e0b6'; +} + +.fi-rss-alt:before { + content:'\e0b7'; +} + +.fi-rss:before { + content:'\e0b8'; +} + +.fi-script:before { + content:'\e0b9'; +} + +.fi-share-boxed:before { + content:'\e0ba'; +} + +.fi-share:before { + content:'\e0bb'; +} + +.fi-shield:before { + content:'\e0bc'; +} + +.fi-signal:before { + content:'\e0bd'; +} + +.fi-signpost:before { + content:'\e0be'; +} + +.fi-sort-ascending:before { + content:'\e0bf'; +} + +.fi-sort-descending:before { + content:'\e0c0'; +} + +.fi-spreadsheet:before { + content:'\e0c1'; +} + +.fi-star:before { + content:'\e0c2'; +} + +.fi-sun:before { + content:'\e0c3'; +} + +.fi-tablet:before { + content:'\e0c4'; +} + +.fi-tag:before { + content:'\e0c5'; +} + +.fi-tags:before { + content:'\e0c6'; +} + +.fi-target:before { + content:'\e0c7'; +} + +.fi-task:before { + content:'\e0c8'; +} + +.fi-terminal:before { + content:'\e0c9'; +} + +.fi-text:before { + content:'\e0ca'; +} + +.fi-thumb-down:before { + content:'\e0cb'; +} + +.fi-thumb-up:before { + content:'\e0cc'; +} + +.fi-timer:before { + content:'\e0cd'; +} + +.fi-transfer:before { + content:'\e0ce'; +} + +.fi-trash:before { + content:'\e0cf'; +} + +.fi-underline:before { + content:'\e0d0'; +} + +.fi-vertical-align-bottom:before { + content:'\e0d1'; +} + +.fi-vertical-align-center:before { + content:'\e0d2'; +} + +.fi-vertical-align-top:before { + content:'\e0d3'; +} + +.fi-video:before { + content:'\e0d4'; +} + +.fi-volume-high:before { + content:'\e0d5'; +} + +.fi-volume-low:before { + content:'\e0d6'; +} + +.fi-volume-off:before { + content:'\e0d7'; +} + +.fi-warning:before { + content:'\e0d8'; +} + +.fi-wifi:before { + content:'\e0d9'; +} + +.fi-wrench:before { + content:'\e0da'; +} + +.fi-x:before { + content:'\e0db'; +} + +.fi-yen:before { + content:'\e0dc'; +} + +.fi-zoom-in:before { + content:'\e0dd'; +} + +.fi-zoom-out:before { + content:'\e0de'; +} + diff --git a/class/RealSpaceInterface/static/fonts/open-iconic/font/css/open-iconic-foundation.styl b/class/RealSpaceInterface/static/fonts/open-iconic/font/css/open-iconic-foundation.styl new file mode 100644 index 00000000..a52637ab --- /dev/null +++ b/class/RealSpaceInterface/static/fonts/open-iconic/font/css/open-iconic-foundation.styl @@ -0,0 +1,1392 @@ +/* Foundation */ + +@font-face + font-family 'Icons' + src url('../fonts/open-iconic.eot') + src url('../fonts/open-iconic.eot?#iconic-sm') format('embedded-opentype'), url('../fonts/open-iconic.woff') format('woff'), url('../fonts/open-iconic.ttf') format('truetype'), url('../fonts/open-iconic.otf') format('opentype'), url('../fonts/open-iconic.svg#iconic-sm') format('svg') + font-weight normal + font-style normal + + + +.fi-account-loginbefore, + +.fi-account-logoutbefore, + +.fi-action-redobefore, + +.fi-action-undobefore, + +.fi-align-centerbefore, + +.fi-align-leftbefore, + +.fi-align-rightbefore, + +.fi-aperturebefore, + +.fi-arrow-bottombefore, + +.fi-arrow-circle-bottombefore, + +.fi-arrow-circle-leftbefore, + +.fi-arrow-circle-rightbefore, + +.fi-arrow-circle-topbefore, + +.fi-arrow-leftbefore, + +.fi-arrow-rightbefore, + +.fi-arrow-thick-bottombefore, + +.fi-arrow-thick-leftbefore, + +.fi-arrow-thick-rightbefore, + +.fi-arrow-thick-topbefore, + +.fi-arrow-topbefore, + +.fi-audio-spectrumbefore, + +.fi-audiobefore, + +.fi-badgebefore, + +.fi-banbefore, + +.fi-bar-chartbefore, + +.fi-basketbefore, + +.fi-battery-emptybefore, + +.fi-battery-fullbefore, + +.fi-beakerbefore, + +.fi-bellbefore, + +.fi-bluetoothbefore, + +.fi-boldbefore, + +.fi-boltbefore, + +.fi-bookbefore, + +.fi-bookmarkbefore, + +.fi-boxbefore, + +.fi-briefcasebefore, + +.fi-british-poundbefore, + +.fi-browserbefore, + +.fi-brushbefore, + +.fi-bugbefore, + +.fi-bullhornbefore, + +.fi-calculatorbefore, + +.fi-calendarbefore, + +.fi-camera-slrbefore, + +.fi-caret-bottombefore, + +.fi-caret-leftbefore, + +.fi-caret-rightbefore, + +.fi-caret-topbefore, + +.fi-cartbefore, + +.fi-chatbefore, + +.fi-checkbefore, + +.fi-chevron-bottombefore, + +.fi-chevron-leftbefore, + +.fi-chevron-rightbefore, + +.fi-chevron-topbefore, + +.fi-circle-checkbefore, + +.fi-circle-xbefore, + +.fi-clipboardbefore, + +.fi-clockbefore, + +.fi-cloud-downloadbefore, + +.fi-cloud-uploadbefore, + +.fi-cloudbefore, + +.fi-cloudybefore, + +.fi-codebefore, + +.fi-cogbefore, + +.fi-collapse-downbefore, + +.fi-collapse-leftbefore, + +.fi-collapse-rightbefore, + +.fi-collapse-upbefore, + +.fi-commandbefore, + +.fi-comment-squarebefore, + +.fi-compassbefore, + +.fi-contrastbefore, + +.fi-copywritingbefore, + +.fi-credit-cardbefore, + +.fi-cropbefore, + +.fi-dashboardbefore, + +.fi-data-transfer-downloadbefore, + +.fi-data-transfer-uploadbefore, + +.fi-deletebefore, + +.fi-dialbefore, + +.fi-documentbefore, + +.fi-dollarbefore, + +.fi-double-quote-sans-leftbefore, + +.fi-double-quote-sans-rightbefore, + +.fi-double-quote-serif-leftbefore, + +.fi-double-quote-serif-rightbefore, + +.fi-dropletbefore, + +.fi-ejectbefore, + +.fi-elevatorbefore, + +.fi-ellipsesbefore, + +.fi-envelope-closedbefore, + +.fi-envelope-openbefore, + +.fi-eurobefore, + +.fi-excerptbefore, + +.fi-expand-downbefore, + +.fi-expand-leftbefore, + +.fi-expand-rightbefore, + +.fi-expand-upbefore, + +.fi-external-linkbefore, + +.fi-eyebefore, + +.fi-eyedropperbefore, + +.fi-filebefore, + +.fi-firebefore, + +.fi-flagbefore, + +.fi-flashbefore, + +.fi-folderbefore, + +.fi-forkbefore, + +.fi-fullscreen-enterbefore, + +.fi-fullscreen-exitbefore, + +.fi-globebefore, + +.fi-graphbefore, + +.fi-grid-four-upbefore, + +.fi-grid-three-upbefore, + +.fi-grid-two-upbefore, + +.fi-hard-drivebefore, + +.fi-headerbefore, + +.fi-headphonesbefore, + +.fi-heartbefore, + +.fi-homebefore, + +.fi-imagebefore, + +.fi-inboxbefore, + +.fi-infinitybefore, + +.fi-infobefore, + +.fi-italicbefore, + +.fi-justify-centerbefore, + +.fi-justify-leftbefore, + +.fi-justify-rightbefore, + +.fi-keybefore, + +.fi-laptopbefore, + +.fi-layersbefore, + +.fi-lightbulbbefore, + +.fi-link-brokenbefore, + +.fi-link-intactbefore, + +.fi-list-richbefore, + +.fi-listbefore, + +.fi-locationbefore, + +.fi-lock-lockedbefore, + +.fi-lock-unlockedbefore, + +.fi-loop-circularbefore, + +.fi-loop-squarebefore, + +.fi-loopbefore, + +.fi-magnifying-glassbefore, + +.fi-map-markerbefore, + +.fi-mapbefore, + +.fi-media-pausebefore, + +.fi-media-playbefore, + +.fi-media-recordbefore, + +.fi-media-skip-backwardbefore, + +.fi-media-skip-forwardbefore, + +.fi-media-step-backwardbefore, + +.fi-media-step-forwardbefore, + +.fi-media-stopbefore, + +.fi-medical-crossbefore, + +.fi-menubefore, + +.fi-microphonebefore, + +.fi-minusbefore, + +.fi-monitorbefore, + +.fi-moonbefore, + +.fi-movebefore, + +.fi-musical-notebefore, + +.fi-paperclipbefore, + +.fi-pencilbefore, + +.fi-peoplebefore, + +.fi-personbefore, + +.fi-phonebefore, + +.fi-pie-chartbefore, + +.fi-pinbefore, + +.fi-play-circlebefore, + +.fi-plusbefore, + +.fi-power-standbybefore, + +.fi-printbefore, + +.fi-projectbefore, + +.fi-pulsebefore, + +.fi-puzzle-piecebefore, + +.fi-question-markbefore, + +.fi-rainbefore, + +.fi-randombefore, + +.fi-reloadbefore, + +.fi-resize-bothbefore, + +.fi-resize-heightbefore, + +.fi-resize-widthbefore, + +.fi-rss-altbefore, + +.fi-rssbefore, + +.fi-scriptbefore, + +.fi-share-boxedbefore, + +.fi-sharebefore, + +.fi-shieldbefore, + +.fi-signalbefore, + +.fi-signpostbefore, + +.fi-sort-ascendingbefore, + +.fi-sort-descendingbefore, + +.fi-spreadsheetbefore, + +.fi-starbefore, + +.fi-sunbefore, + +.fi-tabletbefore, + +.fi-tagbefore, + +.fi-tagsbefore, + +.fi-targetbefore, + +.fi-taskbefore, + +.fi-terminalbefore, + +.fi-textbefore, + +.fi-thumb-downbefore, + +.fi-thumb-upbefore, + +.fi-timerbefore, + +.fi-transferbefore, + +.fi-trashbefore, + +.fi-underlinebefore, + +.fi-vertical-align-bottombefore, + +.fi-vertical-align-centerbefore, + +.fi-vertical-align-topbefore, + +.fi-videobefore, + +.fi-volume-highbefore, + +.fi-volume-lowbefore, + +.fi-volume-offbefore, + +.fi-warningbefore, + +.fi-wifibefore, + +.fi-wrenchbefore, + +.fi-xbefore, + +.fi-yenbefore, + +.fi-zoom-inbefore, + +.fi-zoom-outbefore + + font-family 'Icons' + font-style normal + font-weight normal + font-variant normal + text-transform none + line-height 1 + -webkit-font-smoothing antialiased + -moz-osx-font-smoothing grayscale + display inline-block + text-decoration inherit + + +[class*='fi-'].oi-align-center:before + text-align center + + +[class*='fi-'].oi-align-left:before + text-align left + + +[class*='fi-'].oi-align-right:before + text-align right + + + +[class*='fi-'].oi-flip-horizontal:before + -webkit-transform scale(-1, 1) + -ms-transform scale(-1, 1) + transform scale(-1, 1) + + +[class*='fi-'].oi-flip-vertical:before + -webkit-transform scale(1, -1) + -ms-transform scale(-1, 1) + transform scale(1, -1) + + +[class*='fi-'].oi-flip-horizontal-vertical:before + -webkit-transform scale(-1, -1) + -ms-transform scale(-1, 1) + transform scale(-1, -1) + + +.fi-account-login:before + content'\e000' + + +.fi-account-logout:before + content'\e001' + + +.fi-action-redo:before + content'\e002' + + +.fi-action-undo:before + content'\e003' + + +.fi-align-center:before + content'\e004' + + +.fi-align-left:before + content'\e005' + + +.fi-align-right:before + content'\e006' + + +.fi-aperture:before + content'\e007' + + +.fi-arrow-bottom:before + content'\e008' + + +.fi-arrow-circle-bottom:before + content'\e009' + + +.fi-arrow-circle-left:before + content'\e00a' + + +.fi-arrow-circle-right:before + content'\e00b' + + +.fi-arrow-circle-top:before + content'\e00c' + + +.fi-arrow-left:before + content'\e00d' + + +.fi-arrow-right:before + content'\e00e' + + +.fi-arrow-thick-bottom:before + content'\e00f' + + +.fi-arrow-thick-left:before + content'\e010' + + +.fi-arrow-thick-right:before + content'\e011' + + +.fi-arrow-thick-top:before + content'\e012' + + +.fi-arrow-top:before + content'\e013' + + +.fi-audio-spectrum:before + content'\e014' + + +.fi-audio:before + content'\e015' + + +.fi-badge:before + content'\e016' + + +.fi-ban:before + content'\e017' + + +.fi-bar-chart:before + content'\e018' + + +.fi-basket:before + content'\e019' + + +.fi-battery-empty:before + content'\e01a' + + +.fi-battery-full:before + content'\e01b' + + +.fi-beaker:before + content'\e01c' + + +.fi-bell:before + content'\e01d' + + +.fi-bluetooth:before + content'\e01e' + + +.fi-bold:before + content'\e01f' + + +.fi-bolt:before + content'\e020' + + +.fi-book:before + content'\e021' + + +.fi-bookmark:before + content'\e022' + + +.fi-box:before + content'\e023' + + +.fi-briefcase:before + content'\e024' + + +.fi-british-pound:before + content'\e025' + + +.fi-browser:before + content'\e026' + + +.fi-brush:before + content'\e027' + + +.fi-bug:before + content'\e028' + + +.fi-bullhorn:before + content'\e029' + + +.fi-calculator:before + content'\e02a' + + +.fi-calendar:before + content'\e02b' + + +.fi-camera-slr:before + content'\e02c' + + +.fi-caret-bottom:before + content'\e02d' + + +.fi-caret-left:before + content'\e02e' + + +.fi-caret-right:before + content'\e02f' + + +.fi-caret-top:before + content'\e030' + + +.fi-cart:before + content'\e031' + + +.fi-chat:before + content'\e032' + + +.fi-check:before + content'\e033' + + +.fi-chevron-bottom:before + content'\e034' + + +.fi-chevron-left:before + content'\e035' + + +.fi-chevron-right:before + content'\e036' + + +.fi-chevron-top:before + content'\e037' + + +.fi-circle-check:before + content'\e038' + + +.fi-circle-x:before + content'\e039' + + +.fi-clipboard:before + content'\e03a' + + +.fi-clock:before + content'\e03b' + + +.fi-cloud-download:before + content'\e03c' + + +.fi-cloud-upload:before + content'\e03d' + + +.fi-cloud:before + content'\e03e' + + +.fi-cloudy:before + content'\e03f' + + +.fi-code:before + content'\e040' + + +.fi-cog:before + content'\e041' + + +.fi-collapse-down:before + content'\e042' + + +.fi-collapse-left:before + content'\e043' + + +.fi-collapse-right:before + content'\e044' + + +.fi-collapse-up:before + content'\e045' + + +.fi-command:before + content'\e046' + + +.fi-comment-square:before + content'\e047' + + +.fi-compass:before + content'\e048' + + +.fi-contrast:before + content'\e049' + + +.fi-copywriting:before + content'\e04a' + + +.fi-credit-card:before + content'\e04b' + + +.fi-crop:before + content'\e04c' + + +.fi-dashboard:before + content'\e04d' + + +.fi-data-transfer-download:before + content'\e04e' + + +.fi-data-transfer-upload:before + content'\e04f' + + +.fi-delete:before + content'\e050' + + +.fi-dial:before + content'\e051' + + +.fi-document:before + content'\e052' + + +.fi-dollar:before + content'\e053' + + +.fi-double-quote-sans-left:before + content'\e054' + + +.fi-double-quote-sans-right:before + content'\e055' + + +.fi-double-quote-serif-left:before + content'\e056' + + +.fi-double-quote-serif-right:before + content'\e057' + + +.fi-droplet:before + content'\e058' + + +.fi-eject:before + content'\e059' + + +.fi-elevator:before + content'\e05a' + + +.fi-ellipses:before + content'\e05b' + + +.fi-envelope-closed:before + content'\e05c' + + +.fi-envelope-open:before + content'\e05d' + + +.fi-euro:before + content'\e05e' + + +.fi-excerpt:before + content'\e05f' + + +.fi-expand-down:before + content'\e060' + + +.fi-expand-left:before + content'\e061' + + +.fi-expand-right:before + content'\e062' + + +.fi-expand-up:before + content'\e063' + + +.fi-external-link:before + content'\e064' + + +.fi-eye:before + content'\e065' + + +.fi-eyedropper:before + content'\e066' + + +.fi-file:before + content'\e067' + + +.fi-fire:before + content'\e068' + + +.fi-flag:before + content'\e069' + + +.fi-flash:before + content'\e06a' + + +.fi-folder:before + content'\e06b' + + +.fi-fork:before + content'\e06c' + + +.fi-fullscreen-enter:before + content'\e06d' + + +.fi-fullscreen-exit:before + content'\e06e' + + +.fi-globe:before + content'\e06f' + + +.fi-graph:before + content'\e070' + + +.fi-grid-four-up:before + content'\e071' + + +.fi-grid-three-up:before + content'\e072' + + +.fi-grid-two-up:before + content'\e073' + + +.fi-hard-drive:before + content'\e074' + + +.fi-header:before + content'\e075' + + +.fi-headphones:before + content'\e076' + + +.fi-heart:before + content'\e077' + + +.fi-home:before + content'\e078' + + +.fi-image:before + content'\e079' + + +.fi-inbox:before + content'\e07a' + + +.fi-infinity:before + content'\e07b' + + +.fi-info:before + content'\e07c' + + +.fi-italic:before + content'\e07d' + + +.fi-justify-center:before + content'\e07e' + + +.fi-justify-left:before + content'\e07f' + + +.fi-justify-right:before + content'\e080' + + +.fi-key:before + content'\e081' + + +.fi-laptop:before + content'\e082' + + +.fi-layers:before + content'\e083' + + +.fi-lightbulb:before + content'\e084' + + +.fi-link-broken:before + content'\e085' + + +.fi-link-intact:before + content'\e086' + + +.fi-list-rich:before + content'\e087' + + +.fi-list:before + content'\e088' + + +.fi-location:before + content'\e089' + + +.fi-lock-locked:before + content'\e08a' + + +.fi-lock-unlocked:before + content'\e08b' + + +.fi-loop-circular:before + content'\e08c' + + +.fi-loop-square:before + content'\e08d' + + +.fi-loop:before + content'\e08e' + + +.fi-magnifying-glass:before + content'\e08f' + + +.fi-map-marker:before + content'\e090' + + +.fi-map:before + content'\e091' + + +.fi-media-pause:before + content'\e092' + + +.fi-media-play:before + content'\e093' + + +.fi-media-record:before + content'\e094' + + +.fi-media-skip-backward:before + content'\e095' + + +.fi-media-skip-forward:before + content'\e096' + + +.fi-media-step-backward:before + content'\e097' + + +.fi-media-step-forward:before + content'\e098' + + +.fi-media-stop:before + content'\e099' + + +.fi-medical-cross:before + content'\e09a' + + +.fi-menu:before + content'\e09b' + + +.fi-microphone:before + content'\e09c' + + +.fi-minus:before + content'\e09d' + + +.fi-monitor:before + content'\e09e' + + +.fi-moon:before + content'\e09f' + + +.fi-move:before + content'\e0a0' + + +.fi-musical-note:before + content'\e0a1' + + +.fi-paperclip:before + content'\e0a2' + + +.fi-pencil:before + content'\e0a3' + + +.fi-people:before + content'\e0a4' + + +.fi-person:before + content'\e0a5' + + +.fi-phone:before + content'\e0a6' + + +.fi-pie-chart:before + content'\e0a7' + + +.fi-pin:before + content'\e0a8' + + +.fi-play-circle:before + content'\e0a9' + + +.fi-plus:before + content'\e0aa' + + +.fi-power-standby:before + content'\e0ab' + + +.fi-print:before + content'\e0ac' + + +.fi-project:before + content'\e0ad' + + +.fi-pulse:before + content'\e0ae' + + +.fi-puzzle-piece:before + content'\e0af' + + +.fi-question-mark:before + content'\e0b0' + + +.fi-rain:before + content'\e0b1' + + +.fi-random:before + content'\e0b2' + + +.fi-reload:before + content'\e0b3' + + +.fi-resize-both:before + content'\e0b4' + + +.fi-resize-height:before + content'\e0b5' + + +.fi-resize-width:before + content'\e0b6' + + +.fi-rss-alt:before + content'\e0b7' + + +.fi-rss:before + content'\e0b8' + + +.fi-script:before + content'\e0b9' + + +.fi-share-boxed:before + content'\e0ba' + + +.fi-share:before + content'\e0bb' + + +.fi-shield:before + content'\e0bc' + + +.fi-signal:before + content'\e0bd' + + +.fi-signpost:before + content'\e0be' + + +.fi-sort-ascending:before + content'\e0bf' + + +.fi-sort-descending:before + content'\e0c0' + + +.fi-spreadsheet:before + content'\e0c1' + + +.fi-star:before + content'\e0c2' + + +.fi-sun:before + content'\e0c3' + + +.fi-tablet:before + content'\e0c4' + + +.fi-tag:before + content'\e0c5' + + +.fi-tags:before + content'\e0c6' + + +.fi-target:before + content'\e0c7' + + +.fi-task:before + content'\e0c8' + + +.fi-terminal:before + content'\e0c9' + + +.fi-text:before + content'\e0ca' + + +.fi-thumb-down:before + content'\e0cb' + + +.fi-thumb-up:before + content'\e0cc' + + +.fi-timer:before + content'\e0cd' + + +.fi-transfer:before + content'\e0ce' + + +.fi-trash:before + content'\e0cf' + + +.fi-underline:before + content'\e0d0' + + +.fi-vertical-align-bottom:before + content'\e0d1' + + +.fi-vertical-align-center:before + content'\e0d2' + + +.fi-vertical-align-top:before + content'\e0d3' + + +.fi-video:before + content'\e0d4' + + +.fi-volume-high:before + content'\e0d5' + + +.fi-volume-low:before + content'\e0d6' + + +.fi-volume-off:before + content'\e0d7' + + +.fi-warning:before + content'\e0d8' + + +.fi-wifi:before + content'\e0d9' + + +.fi-wrench:before + content'\e0da' + + +.fi-x:before + content'\e0db' + + +.fi-yen:before + content'\e0dc' + + +.fi-zoom-in:before + content'\e0dd' + + +.fi-zoom-out:before + content'\e0de' + + diff --git a/class/RealSpaceInterface/static/fonts/open-iconic/font/css/open-iconic.css b/class/RealSpaceInterface/static/fonts/open-iconic/font/css/open-iconic.css new file mode 100644 index 00000000..301a138c --- /dev/null +++ b/class/RealSpaceInterface/static/fonts/open-iconic/font/css/open-iconic.css @@ -0,0 +1,511 @@ + +@font-face { + font-family: 'Icons'; + src: url('../fonts/open-iconic.eot'); + src: url('../fonts/open-iconic.eot?#iconic-sm') format('embedded-opentype'), url('../fonts/open-iconic.woff') format('woff'), url('../fonts/open-iconic.ttf') format('truetype'), url('../fonts/open-iconic.otf') format('opentype'), url('../fonts/open-iconic.svg#iconic-sm') format('svg'); + font-weight: normal; + font-style: normal; +} + +.oi[data-glyph].oi-text-replace { + font-size: 0; + line-height: 0; +} + +.oi[data-glyph].oi-text-replace:before { + width: 1em; + text-align: center; +} + +.oi[data-glyph]:before { + font-family: 'Icons'; + display: inline-block; + speak: none; + line-height: 1; + vertical-align: baseline; + font-weight: normal; + font-style: normal; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.oi[data-glyph]:empty:before { + width: 1em; + text-align: center; + box-sizing: content-box; +} + +.oi[data-glyph].oi-align-left:before { + text-align: left; +} + +.oi[data-glyph].oi-align-right:before { + text-align: right; +} + +.oi[data-glyph].oi-align-center:before { + text-align: center; +} + +.oi[data-glyph].oi-flip-horizontal:before { + -webkit-transform: scale(-1, 1); + -ms-transform: scale(-1, 1); + transform: scale(-1, 1); +} +.oi[data-glyph].oi-flip-vertical:before { + -webkit-transform: scale(1, -1); + -ms-transform: scale(-1, 1); + transform: scale(1, -1); +} +.oi[data-glyph].oi-flip-horizontal-vertical:before { + -webkit-transform: scale(-1, -1); + -ms-transform: scale(-1, 1); + transform: scale(-1, -1); +} + + +.oi[data-glyph=account-login]:before { content:'\e000'; } + +.oi[data-glyph=account-logout]:before { content:'\e001'; } + +.oi[data-glyph=action-redo]:before { content:'\e002'; } + +.oi[data-glyph=action-undo]:before { content:'\e003'; } + +.oi[data-glyph=align-center]:before { content:'\e004'; } + +.oi[data-glyph=align-left]:before { content:'\e005'; } + +.oi[data-glyph=align-right]:before { content:'\e006'; } + +.oi[data-glyph=aperture]:before { content:'\e007'; } + +.oi[data-glyph=arrow-bottom]:before { content:'\e008'; } + +.oi[data-glyph=arrow-circle-bottom]:before { content:'\e009'; } + +.oi[data-glyph=arrow-circle-left]:before { content:'\e00a'; } + +.oi[data-glyph=arrow-circle-right]:before { content:'\e00b'; } + +.oi[data-glyph=arrow-circle-top]:before { content:'\e00c'; } + +.oi[data-glyph=arrow-left]:before { content:'\e00d'; } + +.oi[data-glyph=arrow-right]:before { content:'\e00e'; } + +.oi[data-glyph=arrow-thick-bottom]:before { content:'\e00f'; } + +.oi[data-glyph=arrow-thick-left]:before { content:'\e010'; } + +.oi[data-glyph=arrow-thick-right]:before { content:'\e011'; } + +.oi[data-glyph=arrow-thick-top]:before { content:'\e012'; } + +.oi[data-glyph=arrow-top]:before { content:'\e013'; } + +.oi[data-glyph=audio-spectrum]:before { content:'\e014'; } + +.oi[data-glyph=audio]:before { content:'\e015'; } + +.oi[data-glyph=badge]:before { content:'\e016'; } + +.oi[data-glyph=ban]:before { content:'\e017'; } + +.oi[data-glyph=bar-chart]:before { content:'\e018'; } + +.oi[data-glyph=basket]:before { content:'\e019'; } + +.oi[data-glyph=battery-empty]:before { content:'\e01a'; } + +.oi[data-glyph=battery-full]:before { content:'\e01b'; } + +.oi[data-glyph=beaker]:before { content:'\e01c'; } + +.oi[data-glyph=bell]:before { content:'\e01d'; } + +.oi[data-glyph=bluetooth]:before { content:'\e01e'; } + +.oi[data-glyph=bold]:before { content:'\e01f'; } + +.oi[data-glyph=bolt]:before { content:'\e020'; } + +.oi[data-glyph=book]:before { content:'\e021'; } + +.oi[data-glyph=bookmark]:before { content:'\e022'; } + +.oi[data-glyph=box]:before { content:'\e023'; } + +.oi[data-glyph=briefcase]:before { content:'\e024'; } + +.oi[data-glyph=british-pound]:before { content:'\e025'; } + +.oi[data-glyph=browser]:before { content:'\e026'; } + +.oi[data-glyph=brush]:before { content:'\e027'; } + +.oi[data-glyph=bug]:before { content:'\e028'; } + +.oi[data-glyph=bullhorn]:before { content:'\e029'; } + +.oi[data-glyph=calculator]:before { content:'\e02a'; } + +.oi[data-glyph=calendar]:before { content:'\e02b'; } + +.oi[data-glyph=camera-slr]:before { content:'\e02c'; } + +.oi[data-glyph=caret-bottom]:before { content:'\e02d'; } + +.oi[data-glyph=caret-left]:before { content:'\e02e'; } + +.oi[data-glyph=caret-right]:before { content:'\e02f'; } + +.oi[data-glyph=caret-top]:before { content:'\e030'; } + +.oi[data-glyph=cart]:before { content:'\e031'; } + +.oi[data-glyph=chat]:before { content:'\e032'; } + +.oi[data-glyph=check]:before { content:'\e033'; } + +.oi[data-glyph=chevron-bottom]:before { content:'\e034'; } + +.oi[data-glyph=chevron-left]:before { content:'\e035'; } + +.oi[data-glyph=chevron-right]:before { content:'\e036'; } + +.oi[data-glyph=chevron-top]:before { content:'\e037'; } + +.oi[data-glyph=circle-check]:before { content:'\e038'; } + +.oi[data-glyph=circle-x]:before { content:'\e039'; } + +.oi[data-glyph=clipboard]:before { content:'\e03a'; } + +.oi[data-glyph=clock]:before { content:'\e03b'; } + +.oi[data-glyph=cloud-download]:before { content:'\e03c'; } + +.oi[data-glyph=cloud-upload]:before { content:'\e03d'; } + +.oi[data-glyph=cloud]:before { content:'\e03e'; } + +.oi[data-glyph=cloudy]:before { content:'\e03f'; } + +.oi[data-glyph=code]:before { content:'\e040'; } + +.oi[data-glyph=cog]:before { content:'\e041'; } + +.oi[data-glyph=collapse-down]:before { content:'\e042'; } + +.oi[data-glyph=collapse-left]:before { content:'\e043'; } + +.oi[data-glyph=collapse-right]:before { content:'\e044'; } + +.oi[data-glyph=collapse-up]:before { content:'\e045'; } + +.oi[data-glyph=command]:before { content:'\e046'; } + +.oi[data-glyph=comment-square]:before { content:'\e047'; } + +.oi[data-glyph=compass]:before { content:'\e048'; } + +.oi[data-glyph=contrast]:before { content:'\e049'; } + +.oi[data-glyph=copywriting]:before { content:'\e04a'; } + +.oi[data-glyph=credit-card]:before { content:'\e04b'; } + +.oi[data-glyph=crop]:before { content:'\e04c'; } + +.oi[data-glyph=dashboard]:before { content:'\e04d'; } + +.oi[data-glyph=data-transfer-download]:before { content:'\e04e'; } + +.oi[data-glyph=data-transfer-upload]:before { content:'\e04f'; } + +.oi[data-glyph=delete]:before { content:'\e050'; } + +.oi[data-glyph=dial]:before { content:'\e051'; } + +.oi[data-glyph=document]:before { content:'\e052'; } + +.oi[data-glyph=dollar]:before { content:'\e053'; } + +.oi[data-glyph=double-quote-sans-left]:before { content:'\e054'; } + +.oi[data-glyph=double-quote-sans-right]:before { content:'\e055'; } + +.oi[data-glyph=double-quote-serif-left]:before { content:'\e056'; } + +.oi[data-glyph=double-quote-serif-right]:before { content:'\e057'; } + +.oi[data-glyph=droplet]:before { content:'\e058'; } + +.oi[data-glyph=eject]:before { content:'\e059'; } + +.oi[data-glyph=elevator]:before { content:'\e05a'; } + +.oi[data-glyph=ellipses]:before { content:'\e05b'; } + +.oi[data-glyph=envelope-closed]:before { content:'\e05c'; } + +.oi[data-glyph=envelope-open]:before { content:'\e05d'; } + +.oi[data-glyph=euro]:before { content:'\e05e'; } + +.oi[data-glyph=excerpt]:before { content:'\e05f'; } + +.oi[data-glyph=expand-down]:before { content:'\e060'; } + +.oi[data-glyph=expand-left]:before { content:'\e061'; } + +.oi[data-glyph=expand-right]:before { content:'\e062'; } + +.oi[data-glyph=expand-up]:before { content:'\e063'; } + +.oi[data-glyph=external-link]:before { content:'\e064'; } + +.oi[data-glyph=eye]:before { content:'\e065'; } + +.oi[data-glyph=eyedropper]:before { content:'\e066'; } + +.oi[data-glyph=file]:before { content:'\e067'; } + +.oi[data-glyph=fire]:before { content:'\e068'; } + +.oi[data-glyph=flag]:before { content:'\e069'; } + +.oi[data-glyph=flash]:before { content:'\e06a'; } + +.oi[data-glyph=folder]:before { content:'\e06b'; } + +.oi[data-glyph=fork]:before { content:'\e06c'; } + +.oi[data-glyph=fullscreen-enter]:before { content:'\e06d'; } + +.oi[data-glyph=fullscreen-exit]:before { content:'\e06e'; } + +.oi[data-glyph=globe]:before { content:'\e06f'; } + +.oi[data-glyph=graph]:before { content:'\e070'; } + +.oi[data-glyph=grid-four-up]:before { content:'\e071'; } + +.oi[data-glyph=grid-three-up]:before { content:'\e072'; } + +.oi[data-glyph=grid-two-up]:before { content:'\e073'; } + +.oi[data-glyph=hard-drive]:before { content:'\e074'; } + +.oi[data-glyph=header]:before { content:'\e075'; } + +.oi[data-glyph=headphones]:before { content:'\e076'; } + +.oi[data-glyph=heart]:before { content:'\e077'; } + +.oi[data-glyph=home]:before { content:'\e078'; } + +.oi[data-glyph=image]:before { content:'\e079'; } + +.oi[data-glyph=inbox]:before { content:'\e07a'; } + +.oi[data-glyph=infinity]:before { content:'\e07b'; } + +.oi[data-glyph=info]:before { content:'\e07c'; } + +.oi[data-glyph=italic]:before { content:'\e07d'; } + +.oi[data-glyph=justify-center]:before { content:'\e07e'; } + +.oi[data-glyph=justify-left]:before { content:'\e07f'; } + +.oi[data-glyph=justify-right]:before { content:'\e080'; } + +.oi[data-glyph=key]:before { content:'\e081'; } + +.oi[data-glyph=laptop]:before { content:'\e082'; } + +.oi[data-glyph=layers]:before { content:'\e083'; } + +.oi[data-glyph=lightbulb]:before { content:'\e084'; } + +.oi[data-glyph=link-broken]:before { content:'\e085'; } + +.oi[data-glyph=link-intact]:before { content:'\e086'; } + +.oi[data-glyph=list-rich]:before { content:'\e087'; } + +.oi[data-glyph=list]:before { content:'\e088'; } + +.oi[data-glyph=location]:before { content:'\e089'; } + +.oi[data-glyph=lock-locked]:before { content:'\e08a'; } + +.oi[data-glyph=lock-unlocked]:before { content:'\e08b'; } + +.oi[data-glyph=loop-circular]:before { content:'\e08c'; } + +.oi[data-glyph=loop-square]:before { content:'\e08d'; } + +.oi[data-glyph=loop]:before { content:'\e08e'; } + +.oi[data-glyph=magnifying-glass]:before { content:'\e08f'; } + +.oi[data-glyph=map-marker]:before { content:'\e090'; } + +.oi[data-glyph=map]:before { content:'\e091'; } + +.oi[data-glyph=media-pause]:before { content:'\e092'; } + +.oi[data-glyph=media-play]:before { content:'\e093'; } + +.oi[data-glyph=media-record]:before { content:'\e094'; } + +.oi[data-glyph=media-skip-backward]:before { content:'\e095'; } + +.oi[data-glyph=media-skip-forward]:before { content:'\e096'; } + +.oi[data-glyph=media-step-backward]:before { content:'\e097'; } + +.oi[data-glyph=media-step-forward]:before { content:'\e098'; } + +.oi[data-glyph=media-stop]:before { content:'\e099'; } + +.oi[data-glyph=medical-cross]:before { content:'\e09a'; } + +.oi[data-glyph=menu]:before { content:'\e09b'; } + +.oi[data-glyph=microphone]:before { content:'\e09c'; } + +.oi[data-glyph=minus]:before { content:'\e09d'; } + +.oi[data-glyph=monitor]:before { content:'\e09e'; } + +.oi[data-glyph=moon]:before { content:'\e09f'; } + +.oi[data-glyph=move]:before { content:'\e0a0'; } + +.oi[data-glyph=musical-note]:before { content:'\e0a1'; } + +.oi[data-glyph=paperclip]:before { content:'\e0a2'; } + +.oi[data-glyph=pencil]:before { content:'\e0a3'; } + +.oi[data-glyph=people]:before { content:'\e0a4'; } + +.oi[data-glyph=person]:before { content:'\e0a5'; } + +.oi[data-glyph=phone]:before { content:'\e0a6'; } + +.oi[data-glyph=pie-chart]:before { content:'\e0a7'; } + +.oi[data-glyph=pin]:before { content:'\e0a8'; } + +.oi[data-glyph=play-circle]:before { content:'\e0a9'; } + +.oi[data-glyph=plus]:before { content:'\e0aa'; } + +.oi[data-glyph=power-standby]:before { content:'\e0ab'; } + +.oi[data-glyph=print]:before { content:'\e0ac'; } + +.oi[data-glyph=project]:before { content:'\e0ad'; } + +.oi[data-glyph=pulse]:before { content:'\e0ae'; } + +.oi[data-glyph=puzzle-piece]:before { content:'\e0af'; } + +.oi[data-glyph=question-mark]:before { content:'\e0b0'; } + +.oi[data-glyph=rain]:before { content:'\e0b1'; } + +.oi[data-glyph=random]:before { content:'\e0b2'; } + +.oi[data-glyph=reload]:before { content:'\e0b3'; } + +.oi[data-glyph=resize-both]:before { content:'\e0b4'; } + +.oi[data-glyph=resize-height]:before { content:'\e0b5'; } + +.oi[data-glyph=resize-width]:before { content:'\e0b6'; } + +.oi[data-glyph=rss-alt]:before { content:'\e0b7'; } + +.oi[data-glyph=rss]:before { content:'\e0b8'; } + +.oi[data-glyph=script]:before { content:'\e0b9'; } + +.oi[data-glyph=share-boxed]:before { content:'\e0ba'; } + +.oi[data-glyph=share]:before { content:'\e0bb'; } + +.oi[data-glyph=shield]:before { content:'\e0bc'; } + +.oi[data-glyph=signal]:before { content:'\e0bd'; } + +.oi[data-glyph=signpost]:before { content:'\e0be'; } + +.oi[data-glyph=sort-ascending]:before { content:'\e0bf'; } + +.oi[data-glyph=sort-descending]:before { content:'\e0c0'; } + +.oi[data-glyph=spreadsheet]:before { content:'\e0c1'; } + +.oi[data-glyph=star]:before { content:'\e0c2'; } + +.oi[data-glyph=sun]:before { content:'\e0c3'; } + +.oi[data-glyph=tablet]:before { content:'\e0c4'; } + +.oi[data-glyph=tag]:before { content:'\e0c5'; } + +.oi[data-glyph=tags]:before { content:'\e0c6'; } + +.oi[data-glyph=target]:before { content:'\e0c7'; } + +.oi[data-glyph=task]:before { content:'\e0c8'; } + +.oi[data-glyph=terminal]:before { content:'\e0c9'; } + +.oi[data-glyph=text]:before { content:'\e0ca'; } + +.oi[data-glyph=thumb-down]:before { content:'\e0cb'; } + +.oi[data-glyph=thumb-up]:before { content:'\e0cc'; } + +.oi[data-glyph=timer]:before { content:'\e0cd'; } + +.oi[data-glyph=transfer]:before { content:'\e0ce'; } + +.oi[data-glyph=trash]:before { content:'\e0cf'; } + +.oi[data-glyph=underline]:before { content:'\e0d0'; } + +.oi[data-glyph=vertical-align-bottom]:before { content:'\e0d1'; } + +.oi[data-glyph=vertical-align-center]:before { content:'\e0d2'; } + +.oi[data-glyph=vertical-align-top]:before { content:'\e0d3'; } + +.oi[data-glyph=video]:before { content:'\e0d4'; } + +.oi[data-glyph=volume-high]:before { content:'\e0d5'; } + +.oi[data-glyph=volume-low]:before { content:'\e0d6'; } + +.oi[data-glyph=volume-off]:before { content:'\e0d7'; } + +.oi[data-glyph=warning]:before { content:'\e0d8'; } + +.oi[data-glyph=wifi]:before { content:'\e0d9'; } + +.oi[data-glyph=wrench]:before { content:'\e0da'; } + +.oi[data-glyph=x]:before { content:'\e0db'; } + +.oi[data-glyph=yen]:before { content:'\e0dc'; } + +.oi[data-glyph=zoom-in]:before { content:'\e0dd'; } + +.oi[data-glyph=zoom-out]:before { content:'\e0de'; } diff --git a/class/RealSpaceInterface/static/fonts/open-iconic/font/css/open-iconic.less b/class/RealSpaceInterface/static/fonts/open-iconic/font/css/open-iconic.less new file mode 100644 index 00000000..d505e9f2 --- /dev/null +++ b/class/RealSpaceInterface/static/fonts/open-iconic/font/css/open-iconic.less @@ -0,0 +1,962 @@ +@iconic-font-path: '../fonts/'; + +@font-face { + font-family: 'Icons'; + src: url('@{iconic-font-path}open-iconic.eot'); + src: url('@{iconic-font-path}open-iconic.eot?#iconic-sm') format('embedded-opentype'), url('@{iconic-font-path}open-iconic.woff') format('woff'), url('@{iconic-font-path}open-iconic.ttf') format('truetype'), url('@{iconic-font-path}open-iconic.otf') format('opentype'), url('@{iconic-font-path}open-iconic.svg#iconic-sm') format('svg'); + font-weight: normal; + font-style: normal; +} + +.oi[data-glyph].oi-text-replace { + font-size: 0; + line-height: 0; +} + +.oi[data-glyph].oi-text-replace:before { + width: 1em; + text-align: center; +} + +.oi[data-glyph] { + &:before { + position: relative; + top: 1px; + font-family: 'Icons'; + display: inline-block; + speak: none; + line-height: 1; + vertical-align: baseline; + font-weight: normal; + font-style: normal; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + } + + &:empty:before { + width: 1em; + text-align: center; + box-sizing: content-box; + } + + &.oi-align-left:before { + text-align: left; + } + &.oi-align-right:before { + text-align: right; + } + &.oi-align-center:before { + text-align: center; + } + + &.oi-flip-horizontal:before { + -webkit-transform: scale(-1, 1); + -ms-transform: scale(-1, 1); + transform: scale(-1, 1); + } + + &.oi-flip-vertical:before { + -webkit-transform: scale(1, -1); + -ms-transform: scale(-1, 1); + transform: scale(1, -1); + } + + &.oi-flip-horizontal-vertical:before { + -webkit-transform: scale(-1, -1); + -ms-transform: scale(-1, 1); + transform: scale(-1, -1); + } +} + + +.oi[data-glyph=account-login]:before { + content: '\e000'; +} + +.oi[data-glyph=account-logout]:before { + content: '\e001'; +} + +.oi[data-glyph=action-redo]:before { + content: '\e002'; +} + +.oi[data-glyph=action-undo]:before { + content: '\e003'; +} + +.oi[data-glyph=align-center]:before { + content: '\e004'; +} + +.oi[data-glyph=align-left]:before { + content: '\e005'; +} + +.oi[data-glyph=align-right]:before { + content: '\e006'; +} + +.oi[data-glyph=aperture]:before { + content: '\e007'; +} + +.oi[data-glyph=arrow-bottom]:before { + content: '\e008'; +} + +.oi[data-glyph=arrow-circle-bottom]:before { + content: '\e009'; +} + +.oi[data-glyph=arrow-circle-left]:before { + content: '\e00a'; +} + +.oi[data-glyph=arrow-circle-right]:before { + content: '\e00b'; +} + +.oi[data-glyph=arrow-circle-top]:before { + content: '\e00c'; +} + +.oi[data-glyph=arrow-left]:before { + content: '\e00d'; +} + +.oi[data-glyph=arrow-right]:before { + content: '\e00e'; +} + +.oi[data-glyph=arrow-thick-bottom]:before { + content: '\e00f'; +} + +.oi[data-glyph=arrow-thick-left]:before { + content: '\e010'; +} + +.oi[data-glyph=arrow-thick-right]:before { + content: '\e011'; +} + +.oi[data-glyph=arrow-thick-top]:before { + content: '\e012'; +} + +.oi[data-glyph=arrow-top]:before { + content: '\e013'; +} + +.oi[data-glyph=audio-spectrum]:before { + content: '\e014'; +} + +.oi[data-glyph=audio]:before { + content: '\e015'; +} + +.oi[data-glyph=badge]:before { + content: '\e016'; +} + +.oi[data-glyph=ban]:before { + content: '\e017'; +} + +.oi[data-glyph=bar-chart]:before { + content: '\e018'; +} + +.oi[data-glyph=basket]:before { + content: '\e019'; +} + +.oi[data-glyph=battery-empty]:before { + content: '\e01a'; +} + +.oi[data-glyph=battery-full]:before { + content: '\e01b'; +} + +.oi[data-glyph=beaker]:before { + content: '\e01c'; +} + +.oi[data-glyph=bell]:before { + content: '\e01d'; +} + +.oi[data-glyph=bluetooth]:before { + content: '\e01e'; +} + +.oi[data-glyph=bold]:before { + content: '\e01f'; +} + +.oi[data-glyph=bolt]:before { + content: '\e020'; +} + +.oi[data-glyph=book]:before { + content: '\e021'; +} + +.oi[data-glyph=bookmark]:before { + content: '\e022'; +} + +.oi[data-glyph=box]:before { + content: '\e023'; +} + +.oi[data-glyph=briefcase]:before { + content: '\e024'; +} + +.oi[data-glyph=british-pound]:before { + content: '\e025'; +} + +.oi[data-glyph=browser]:before { + content: '\e026'; +} + +.oi[data-glyph=brush]:before { + content: '\e027'; +} + +.oi[data-glyph=bug]:before { + content: '\e028'; +} + +.oi[data-glyph=bullhorn]:before { + content: '\e029'; +} + +.oi[data-glyph=calculator]:before { + content: '\e02a'; +} + +.oi[data-glyph=calendar]:before { + content: '\e02b'; +} + +.oi[data-glyph=camera-slr]:before { + content: '\e02c'; +} + +.oi[data-glyph=caret-bottom]:before { + content: '\e02d'; +} + +.oi[data-glyph=caret-left]:before { + content: '\e02e'; +} + +.oi[data-glyph=caret-right]:before { + content: '\e02f'; +} + +.oi[data-glyph=caret-top]:before { + content: '\e030'; +} + +.oi[data-glyph=cart]:before { + content: '\e031'; +} + +.oi[data-glyph=chat]:before { + content: '\e032'; +} + +.oi[data-glyph=check]:before { + content: '\e033'; +} + +.oi[data-glyph=chevron-bottom]:before { + content: '\e034'; +} + +.oi[data-glyph=chevron-left]:before { + content: '\e035'; +} + +.oi[data-glyph=chevron-right]:before { + content: '\e036'; +} + +.oi[data-glyph=chevron-top]:before { + content: '\e037'; +} + +.oi[data-glyph=circle-check]:before { + content: '\e038'; +} + +.oi[data-glyph=circle-x]:before { + content: '\e039'; +} + +.oi[data-glyph=clipboard]:before { + content: '\e03a'; +} + +.oi[data-glyph=clock]:before { + content: '\e03b'; +} + +.oi[data-glyph=cloud-download]:before { + content: '\e03c'; +} + +.oi[data-glyph=cloud-upload]:before { + content: '\e03d'; +} + +.oi[data-glyph=cloud]:before { + content: '\e03e'; +} + +.oi[data-glyph=cloudy]:before { + content: '\e03f'; +} + +.oi[data-glyph=code]:before { + content: '\e040'; +} + +.oi[data-glyph=cog]:before { + content: '\e041'; +} + +.oi[data-glyph=collapse-down]:before { + content: '\e042'; +} + +.oi[data-glyph=collapse-left]:before { + content: '\e043'; +} + +.oi[data-glyph=collapse-right]:before { + content: '\e044'; +} + +.oi[data-glyph=collapse-up]:before { + content: '\e045'; +} + +.oi[data-glyph=command]:before { + content: '\e046'; +} + +.oi[data-glyph=comment-square]:before { + content: '\e047'; +} + +.oi[data-glyph=compass]:before { + content: '\e048'; +} + +.oi[data-glyph=contrast]:before { + content: '\e049'; +} + +.oi[data-glyph=copywriting]:before { + content: '\e04a'; +} + +.oi[data-glyph=credit-card]:before { + content: '\e04b'; +} + +.oi[data-glyph=crop]:before { + content: '\e04c'; +} + +.oi[data-glyph=dashboard]:before { + content: '\e04d'; +} + +.oi[data-glyph=data-transfer-download]:before { + content: '\e04e'; +} + +.oi[data-glyph=data-transfer-upload]:before { + content: '\e04f'; +} + +.oi[data-glyph=delete]:before { + content: '\e050'; +} + +.oi[data-glyph=dial]:before { + content: '\e051'; +} + +.oi[data-glyph=document]:before { + content: '\e052'; +} + +.oi[data-glyph=dollar]:before { + content: '\e053'; +} + +.oi[data-glyph=double-quote-sans-left]:before { + content: '\e054'; +} + +.oi[data-glyph=double-quote-sans-right]:before { + content: '\e055'; +} + +.oi[data-glyph=double-quote-serif-left]:before { + content: '\e056'; +} + +.oi[data-glyph=double-quote-serif-right]:before { + content: '\e057'; +} + +.oi[data-glyph=droplet]:before { + content: '\e058'; +} + +.oi[data-glyph=eject]:before { + content: '\e059'; +} + +.oi[data-glyph=elevator]:before { + content: '\e05a'; +} + +.oi[data-glyph=ellipses]:before { + content: '\e05b'; +} + +.oi[data-glyph=envelope-closed]:before { + content: '\e05c'; +} + +.oi[data-glyph=envelope-open]:before { + content: '\e05d'; +} + +.oi[data-glyph=euro]:before { + content: '\e05e'; +} + +.oi[data-glyph=excerpt]:before { + content: '\e05f'; +} + +.oi[data-glyph=expand-down]:before { + content: '\e060'; +} + +.oi[data-glyph=expand-left]:before { + content: '\e061'; +} + +.oi[data-glyph=expand-right]:before { + content: '\e062'; +} + +.oi[data-glyph=expand-up]:before { + content: '\e063'; +} + +.oi[data-glyph=external-link]:before { + content: '\e064'; +} + +.oi[data-glyph=eye]:before { + content: '\e065'; +} + +.oi[data-glyph=eyedropper]:before { + content: '\e066'; +} + +.oi[data-glyph=file]:before { + content: '\e067'; +} + +.oi[data-glyph=fire]:before { + content: '\e068'; +} + +.oi[data-glyph=flag]:before { + content: '\e069'; +} + +.oi[data-glyph=flash]:before { + content: '\e06a'; +} + +.oi[data-glyph=folder]:before { + content: '\e06b'; +} + +.oi[data-glyph=fork]:before { + content: '\e06c'; +} + +.oi[data-glyph=fullscreen-enter]:before { + content: '\e06d'; +} + +.oi[data-glyph=fullscreen-exit]:before { + content: '\e06e'; +} + +.oi[data-glyph=globe]:before { + content: '\e06f'; +} + +.oi[data-glyph=graph]:before { + content: '\e070'; +} + +.oi[data-glyph=grid-four-up]:before { + content: '\e071'; +} + +.oi[data-glyph=grid-three-up]:before { + content: '\e072'; +} + +.oi[data-glyph=grid-two-up]:before { + content: '\e073'; +} + +.oi[data-glyph=hard-drive]:before { + content: '\e074'; +} + +.oi[data-glyph=header]:before { + content: '\e075'; +} + +.oi[data-glyph=headphones]:before { + content: '\e076'; +} + +.oi[data-glyph=heart]:before { + content: '\e077'; +} + +.oi[data-glyph=home]:before { + content: '\e078'; +} + +.oi[data-glyph=image]:before { + content: '\e079'; +} + +.oi[data-glyph=inbox]:before { + content: '\e07a'; +} + +.oi[data-glyph=infinity]:before { + content: '\e07b'; +} + +.oi[data-glyph=info]:before { + content: '\e07c'; +} + +.oi[data-glyph=italic]:before { + content: '\e07d'; +} + +.oi[data-glyph=justify-center]:before { + content: '\e07e'; +} + +.oi[data-glyph=justify-left]:before { + content: '\e07f'; +} + +.oi[data-glyph=justify-right]:before { + content: '\e080'; +} + +.oi[data-glyph=key]:before { + content: '\e081'; +} + +.oi[data-glyph=laptop]:before { + content: '\e082'; +} + +.oi[data-glyph=layers]:before { + content: '\e083'; +} + +.oi[data-glyph=lightbulb]:before { + content: '\e084'; +} + +.oi[data-glyph=link-broken]:before { + content: '\e085'; +} + +.oi[data-glyph=link-intact]:before { + content: '\e086'; +} + +.oi[data-glyph=list-rich]:before { + content: '\e087'; +} + +.oi[data-glyph=list]:before { + content: '\e088'; +} + +.oi[data-glyph=location]:before { + content: '\e089'; +} + +.oi[data-glyph=lock-locked]:before { + content: '\e08a'; +} + +.oi[data-glyph=lock-unlocked]:before { + content: '\e08b'; +} + +.oi[data-glyph=loop-circular]:before { + content: '\e08c'; +} + +.oi[data-glyph=loop-square]:before { + content: '\e08d'; +} + +.oi[data-glyph=loop]:before { + content: '\e08e'; +} + +.oi[data-glyph=magnifying-glass]:before { + content: '\e08f'; +} + +.oi[data-glyph=map-marker]:before { + content: '\e090'; +} + +.oi[data-glyph=map]:before { + content: '\e091'; +} + +.oi[data-glyph=media-pause]:before { + content: '\e092'; +} + +.oi[data-glyph=media-play]:before { + content: '\e093'; +} + +.oi[data-glyph=media-record]:before { + content: '\e094'; +} + +.oi[data-glyph=media-skip-backward]:before { + content: '\e095'; +} + +.oi[data-glyph=media-skip-forward]:before { + content: '\e096'; +} + +.oi[data-glyph=media-step-backward]:before { + content: '\e097'; +} + +.oi[data-glyph=media-step-forward]:before { + content: '\e098'; +} + +.oi[data-glyph=media-stop]:before { + content: '\e099'; +} + +.oi[data-glyph=medical-cross]:before { + content: '\e09a'; +} + +.oi[data-glyph=menu]:before { + content: '\e09b'; +} + +.oi[data-glyph=microphone]:before { + content: '\e09c'; +} + +.oi[data-glyph=minus]:before { + content: '\e09d'; +} + +.oi[data-glyph=monitor]:before { + content: '\e09e'; +} + +.oi[data-glyph=moon]:before { + content: '\e09f'; +} + +.oi[data-glyph=move]:before { + content: '\e0a0'; +} + +.oi[data-glyph=musical-note]:before { + content: '\e0a1'; +} + +.oi[data-glyph=paperclip]:before { + content: '\e0a2'; +} + +.oi[data-glyph=pencil]:before { + content: '\e0a3'; +} + +.oi[data-glyph=people]:before { + content: '\e0a4'; +} + +.oi[data-glyph=person]:before { + content: '\e0a5'; +} + +.oi[data-glyph=phone]:before { + content: '\e0a6'; +} + +.oi[data-glyph=pie-chart]:before { + content: '\e0a7'; +} + +.oi[data-glyph=pin]:before { + content: '\e0a8'; +} + +.oi[data-glyph=play-circle]:before { + content: '\e0a9'; +} + +.oi[data-glyph=plus]:before { + content: '\e0aa'; +} + +.oi[data-glyph=power-standby]:before { + content: '\e0ab'; +} + +.oi[data-glyph=print]:before { + content: '\e0ac'; +} + +.oi[data-glyph=project]:before { + content: '\e0ad'; +} + +.oi[data-glyph=pulse]:before { + content: '\e0ae'; +} + +.oi[data-glyph=puzzle-piece]:before { + content: '\e0af'; +} + +.oi[data-glyph=question-mark]:before { + content: '\e0b0'; +} + +.oi[data-glyph=rain]:before { + content: '\e0b1'; +} + +.oi[data-glyph=random]:before { + content: '\e0b2'; +} + +.oi[data-glyph=reload]:before { + content: '\e0b3'; +} + +.oi[data-glyph=resize-both]:before { + content: '\e0b4'; +} + +.oi[data-glyph=resize-height]:before { + content: '\e0b5'; +} + +.oi[data-glyph=resize-width]:before { + content: '\e0b6'; +} + +.oi[data-glyph=rss-alt]:before { + content: '\e0b7'; +} + +.oi[data-glyph=rss]:before { + content: '\e0b8'; +} + +.oi[data-glyph=script]:before { + content: '\e0b9'; +} + +.oi[data-glyph=share-boxed]:before { + content: '\e0ba'; +} + +.oi[data-glyph=share]:before { + content: '\e0bb'; +} + +.oi[data-glyph=shield]:before { + content: '\e0bc'; +} + +.oi[data-glyph=signal]:before { + content: '\e0bd'; +} + +.oi[data-glyph=signpost]:before { + content: '\e0be'; +} + +.oi[data-glyph=sort-ascending]:before { + content: '\e0bf'; +} + +.oi[data-glyph=sort-descending]:before { + content: '\e0c0'; +} + +.oi[data-glyph=spreadsheet]:before { + content: '\e0c1'; +} + +.oi[data-glyph=star]:before { + content: '\e0c2'; +} + +.oi[data-glyph=sun]:before { + content: '\e0c3'; +} + +.oi[data-glyph=tablet]:before { + content: '\e0c4'; +} + +.oi[data-glyph=tag]:before { + content: '\e0c5'; +} + +.oi[data-glyph=tags]:before { + content: '\e0c6'; +} + +.oi[data-glyph=target]:before { + content: '\e0c7'; +} + +.oi[data-glyph=task]:before { + content: '\e0c8'; +} + +.oi[data-glyph=terminal]:before { + content: '\e0c9'; +} + +.oi[data-glyph=text]:before { + content: '\e0ca'; +} + +.oi[data-glyph=thumb-down]:before { + content: '\e0cb'; +} + +.oi[data-glyph=thumb-up]:before { + content: '\e0cc'; +} + +.oi[data-glyph=timer]:before { + content: '\e0cd'; +} + +.oi[data-glyph=transfer]:before { + content: '\e0ce'; +} + +.oi[data-glyph=trash]:before { + content: '\e0cf'; +} + +.oi[data-glyph=underline]:before { + content: '\e0d0'; +} + +.oi[data-glyph=vertical-align-bottom]:before { + content: '\e0d1'; +} + +.oi[data-glyph=vertical-align-center]:before { + content: '\e0d2'; +} + +.oi[data-glyph=vertical-align-top]:before { + content: '\e0d3'; +} + +.oi[data-glyph=video]:before { + content: '\e0d4'; +} + +.oi[data-glyph=volume-high]:before { + content: '\e0d5'; +} + +.oi[data-glyph=volume-low]:before { + content: '\e0d6'; +} + +.oi[data-glyph=volume-off]:before { + content: '\e0d7'; +} + +.oi[data-glyph=warning]:before { + content: '\e0d8'; +} + +.oi[data-glyph=wifi]:before { + content: '\e0d9'; +} + +.oi[data-glyph=wrench]:before { + content: '\e0da'; +} + +.oi[data-glyph=x]:before { + content: '\e0db'; +} + +.oi[data-glyph=yen]:before { + content: '\e0dc'; +} + +.oi[data-glyph=zoom-in]:before { + content: '\e0dd'; +} + +.oi[data-glyph=zoom-out]:before { + content: '\e0de'; +} diff --git a/class/RealSpaceInterface/static/fonts/open-iconic/font/css/open-iconic.min.css b/class/RealSpaceInterface/static/fonts/open-iconic/font/css/open-iconic.min.css new file mode 100644 index 00000000..1f6afb82 --- /dev/null +++ b/class/RealSpaceInterface/static/fonts/open-iconic/font/css/open-iconic.min.css @@ -0,0 +1 @@ +@font-face{font-family:Icons;src:url(../fonts/open-iconic.eot);src:url(../fonts/open-iconic.eot?#iconic-sm) format('embedded-opentype'),url(../fonts/open-iconic.woff) format('woff'),url(../fonts/open-iconic.ttf) format('truetype'),url(../fonts/open-iconic.otf) format('opentype'),url(../fonts/open-iconic.svg#iconic-sm) format('svg');font-weight:400;font-style:normal}.oi[data-glyph].oi-text-replace{font-size:0;line-height:0}.oi[data-glyph].oi-text-replace:before{width:1em;text-align:center}.oi[data-glyph]:before{font-family:Icons;display:inline-block;speak:none;line-height:1;vertical-align:baseline;font-weight:400;font-style:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.oi[data-glyph]:empty:before{width:1em;text-align:center;box-sizing:content-box}.oi[data-glyph].oi-align-left:before{text-align:left}.oi[data-glyph].oi-align-right:before{text-align:right}.oi[data-glyph].oi-align-center:before{text-align:center}.oi[data-glyph].oi-flip-horizontal:before{-webkit-transform:scale(-1,1);-ms-transform:scale(-1,1);transform:scale(-1,1)}.oi[data-glyph].oi-flip-vertical:before{-webkit-transform:scale(1,-1);-ms-transform:scale(-1,1);transform:scale(1,-1)}.oi[data-glyph].oi-flip-horizontal-vertical:before{-webkit-transform:scale(-1,-1);-ms-transform:scale(-1,1);transform:scale(-1,-1)}.oi[data-glyph=account-login]:before{content:'\e000'}.oi[data-glyph=account-logout]:before{content:'\e001'}.oi[data-glyph=action-redo]:before{content:'\e002'}.oi[data-glyph=action-undo]:before{content:'\e003'}.oi[data-glyph=align-center]:before{content:'\e004'}.oi[data-glyph=align-left]:before{content:'\e005'}.oi[data-glyph=align-right]:before{content:'\e006'}.oi[data-glyph=aperture]:before{content:'\e007'}.oi[data-glyph=arrow-bottom]:before{content:'\e008'}.oi[data-glyph=arrow-circle-bottom]:before{content:'\e009'}.oi[data-glyph=arrow-circle-left]:before{content:'\e00a'}.oi[data-glyph=arrow-circle-right]:before{content:'\e00b'}.oi[data-glyph=arrow-circle-top]:before{content:'\e00c'}.oi[data-glyph=arrow-left]:before{content:'\e00d'}.oi[data-glyph=arrow-right]:before{content:'\e00e'}.oi[data-glyph=arrow-thick-bottom]:before{content:'\e00f'}.oi[data-glyph=arrow-thick-left]:before{content:'\e010'}.oi[data-glyph=arrow-thick-right]:before{content:'\e011'}.oi[data-glyph=arrow-thick-top]:before{content:'\e012'}.oi[data-glyph=arrow-top]:before{content:'\e013'}.oi[data-glyph=audio-spectrum]:before{content:'\e014'}.oi[data-glyph=audio]:before{content:'\e015'}.oi[data-glyph=badge]:before{content:'\e016'}.oi[data-glyph=ban]:before{content:'\e017'}.oi[data-glyph=bar-chart]:before{content:'\e018'}.oi[data-glyph=basket]:before{content:'\e019'}.oi[data-glyph=battery-empty]:before{content:'\e01a'}.oi[data-glyph=battery-full]:before{content:'\e01b'}.oi[data-glyph=beaker]:before{content:'\e01c'}.oi[data-glyph=bell]:before{content:'\e01d'}.oi[data-glyph=bluetooth]:before{content:'\e01e'}.oi[data-glyph=bold]:before{content:'\e01f'}.oi[data-glyph=bolt]:before{content:'\e020'}.oi[data-glyph=book]:before{content:'\e021'}.oi[data-glyph=bookmark]:before{content:'\e022'}.oi[data-glyph=box]:before{content:'\e023'}.oi[data-glyph=briefcase]:before{content:'\e024'}.oi[data-glyph=british-pound]:before{content:'\e025'}.oi[data-glyph=browser]:before{content:'\e026'}.oi[data-glyph=brush]:before{content:'\e027'}.oi[data-glyph=bug]:before{content:'\e028'}.oi[data-glyph=bullhorn]:before{content:'\e029'}.oi[data-glyph=calculator]:before{content:'\e02a'}.oi[data-glyph=calendar]:before{content:'\e02b'}.oi[data-glyph=camera-slr]:before{content:'\e02c'}.oi[data-glyph=caret-bottom]:before{content:'\e02d'}.oi[data-glyph=caret-left]:before{content:'\e02e'}.oi[data-glyph=caret-right]:before{content:'\e02f'}.oi[data-glyph=caret-top]:before{content:'\e030'}.oi[data-glyph=cart]:before{content:'\e031'}.oi[data-glyph=chat]:before{content:'\e032'}.oi[data-glyph=check]:before{content:'\e033'}.oi[data-glyph=chevron-bottom]:before{content:'\e034'}.oi[data-glyph=chevron-left]:before{content:'\e035'}.oi[data-glyph=chevron-right]:before{content:'\e036'}.oi[data-glyph=chevron-top]:before{content:'\e037'}.oi[data-glyph=circle-check]:before{content:'\e038'}.oi[data-glyph=circle-x]:before{content:'\e039'}.oi[data-glyph=clipboard]:before{content:'\e03a'}.oi[data-glyph=clock]:before{content:'\e03b'}.oi[data-glyph=cloud-download]:before{content:'\e03c'}.oi[data-glyph=cloud-upload]:before{content:'\e03d'}.oi[data-glyph=cloud]:before{content:'\e03e'}.oi[data-glyph=cloudy]:before{content:'\e03f'}.oi[data-glyph=code]:before{content:'\e040'}.oi[data-glyph=cog]:before{content:'\e041'}.oi[data-glyph=collapse-down]:before{content:'\e042'}.oi[data-glyph=collapse-left]:before{content:'\e043'}.oi[data-glyph=collapse-right]:before{content:'\e044'}.oi[data-glyph=collapse-up]:before{content:'\e045'}.oi[data-glyph=command]:before{content:'\e046'}.oi[data-glyph=comment-square]:before{content:'\e047'}.oi[data-glyph=compass]:before{content:'\e048'}.oi[data-glyph=contrast]:before{content:'\e049'}.oi[data-glyph=copywriting]:before{content:'\e04a'}.oi[data-glyph=credit-card]:before{content:'\e04b'}.oi[data-glyph=crop]:before{content:'\e04c'}.oi[data-glyph=dashboard]:before{content:'\e04d'}.oi[data-glyph=data-transfer-download]:before{content:'\e04e'}.oi[data-glyph=data-transfer-upload]:before{content:'\e04f'}.oi[data-glyph=delete]:before{content:'\e050'}.oi[data-glyph=dial]:before{content:'\e051'}.oi[data-glyph=document]:before{content:'\e052'}.oi[data-glyph=dollar]:before{content:'\e053'}.oi[data-glyph=double-quote-sans-left]:before{content:'\e054'}.oi[data-glyph=double-quote-sans-right]:before{content:'\e055'}.oi[data-glyph=double-quote-serif-left]:before{content:'\e056'}.oi[data-glyph=double-quote-serif-right]:before{content:'\e057'}.oi[data-glyph=droplet]:before{content:'\e058'}.oi[data-glyph=eject]:before{content:'\e059'}.oi[data-glyph=elevator]:before{content:'\e05a'}.oi[data-glyph=ellipses]:before{content:'\e05b'}.oi[data-glyph=envelope-closed]:before{content:'\e05c'}.oi[data-glyph=envelope-open]:before{content:'\e05d'}.oi[data-glyph=euro]:before{content:'\e05e'}.oi[data-glyph=excerpt]:before{content:'\e05f'}.oi[data-glyph=expand-down]:before{content:'\e060'}.oi[data-glyph=expand-left]:before{content:'\e061'}.oi[data-glyph=expand-right]:before{content:'\e062'}.oi[data-glyph=expand-up]:before{content:'\e063'}.oi[data-glyph=external-link]:before{content:'\e064'}.oi[data-glyph=eye]:before{content:'\e065'}.oi[data-glyph=eyedropper]:before{content:'\e066'}.oi[data-glyph=file]:before{content:'\e067'}.oi[data-glyph=fire]:before{content:'\e068'}.oi[data-glyph=flag]:before{content:'\e069'}.oi[data-glyph=flash]:before{content:'\e06a'}.oi[data-glyph=folder]:before{content:'\e06b'}.oi[data-glyph=fork]:before{content:'\e06c'}.oi[data-glyph=fullscreen-enter]:before{content:'\e06d'}.oi[data-glyph=fullscreen-exit]:before{content:'\e06e'}.oi[data-glyph=globe]:before{content:'\e06f'}.oi[data-glyph=graph]:before{content:'\e070'}.oi[data-glyph=grid-four-up]:before{content:'\e071'}.oi[data-glyph=grid-three-up]:before{content:'\e072'}.oi[data-glyph=grid-two-up]:before{content:'\e073'}.oi[data-glyph=hard-drive]:before{content:'\e074'}.oi[data-glyph=header]:before{content:'\e075'}.oi[data-glyph=headphones]:before{content:'\e076'}.oi[data-glyph=heart]:before{content:'\e077'}.oi[data-glyph=home]:before{content:'\e078'}.oi[data-glyph=image]:before{content:'\e079'}.oi[data-glyph=inbox]:before{content:'\e07a'}.oi[data-glyph=infinity]:before{content:'\e07b'}.oi[data-glyph=info]:before{content:'\e07c'}.oi[data-glyph=italic]:before{content:'\e07d'}.oi[data-glyph=justify-center]:before{content:'\e07e'}.oi[data-glyph=justify-left]:before{content:'\e07f'}.oi[data-glyph=justify-right]:before{content:'\e080'}.oi[data-glyph=key]:before{content:'\e081'}.oi[data-glyph=laptop]:before{content:'\e082'}.oi[data-glyph=layers]:before{content:'\e083'}.oi[data-glyph=lightbulb]:before{content:'\e084'}.oi[data-glyph=link-broken]:before{content:'\e085'}.oi[data-glyph=link-intact]:before{content:'\e086'}.oi[data-glyph=list-rich]:before{content:'\e087'}.oi[data-glyph=list]:before{content:'\e088'}.oi[data-glyph=location]:before{content:'\e089'}.oi[data-glyph=lock-locked]:before{content:'\e08a'}.oi[data-glyph=lock-unlocked]:before{content:'\e08b'}.oi[data-glyph=loop-circular]:before{content:'\e08c'}.oi[data-glyph=loop-square]:before{content:'\e08d'}.oi[data-glyph=loop]:before{content:'\e08e'}.oi[data-glyph=magnifying-glass]:before{content:'\e08f'}.oi[data-glyph=map-marker]:before{content:'\e090'}.oi[data-glyph=map]:before{content:'\e091'}.oi[data-glyph=media-pause]:before{content:'\e092'}.oi[data-glyph=media-play]:before{content:'\e093'}.oi[data-glyph=media-record]:before{content:'\e094'}.oi[data-glyph=media-skip-backward]:before{content:'\e095'}.oi[data-glyph=media-skip-forward]:before{content:'\e096'}.oi[data-glyph=media-step-backward]:before{content:'\e097'}.oi[data-glyph=media-step-forward]:before{content:'\e098'}.oi[data-glyph=media-stop]:before{content:'\e099'}.oi[data-glyph=medical-cross]:before{content:'\e09a'}.oi[data-glyph=menu]:before{content:'\e09b'}.oi[data-glyph=microphone]:before{content:'\e09c'}.oi[data-glyph=minus]:before{content:'\e09d'}.oi[data-glyph=monitor]:before{content:'\e09e'}.oi[data-glyph=moon]:before{content:'\e09f'}.oi[data-glyph=move]:before{content:'\e0a0'}.oi[data-glyph=musical-note]:before{content:'\e0a1'}.oi[data-glyph=paperclip]:before{content:'\e0a2'}.oi[data-glyph=pencil]:before{content:'\e0a3'}.oi[data-glyph=people]:before{content:'\e0a4'}.oi[data-glyph=person]:before{content:'\e0a5'}.oi[data-glyph=phone]:before{content:'\e0a6'}.oi[data-glyph=pie-chart]:before{content:'\e0a7'}.oi[data-glyph=pin]:before{content:'\e0a8'}.oi[data-glyph=play-circle]:before{content:'\e0a9'}.oi[data-glyph=plus]:before{content:'\e0aa'}.oi[data-glyph=power-standby]:before{content:'\e0ab'}.oi[data-glyph=print]:before{content:'\e0ac'}.oi[data-glyph=project]:before{content:'\e0ad'}.oi[data-glyph=pulse]:before{content:'\e0ae'}.oi[data-glyph=puzzle-piece]:before{content:'\e0af'}.oi[data-glyph=question-mark]:before{content:'\e0b0'}.oi[data-glyph=rain]:before{content:'\e0b1'}.oi[data-glyph=random]:before{content:'\e0b2'}.oi[data-glyph=reload]:before{content:'\e0b3'}.oi[data-glyph=resize-both]:before{content:'\e0b4'}.oi[data-glyph=resize-height]:before{content:'\e0b5'}.oi[data-glyph=resize-width]:before{content:'\e0b6'}.oi[data-glyph=rss-alt]:before{content:'\e0b7'}.oi[data-glyph=rss]:before{content:'\e0b8'}.oi[data-glyph=script]:before{content:'\e0b9'}.oi[data-glyph=share-boxed]:before{content:'\e0ba'}.oi[data-glyph=share]:before{content:'\e0bb'}.oi[data-glyph=shield]:before{content:'\e0bc'}.oi[data-glyph=signal]:before{content:'\e0bd'}.oi[data-glyph=signpost]:before{content:'\e0be'}.oi[data-glyph=sort-ascending]:before{content:'\e0bf'}.oi[data-glyph=sort-descending]:before{content:'\e0c0'}.oi[data-glyph=spreadsheet]:before{content:'\e0c1'}.oi[data-glyph=star]:before{content:'\e0c2'}.oi[data-glyph=sun]:before{content:'\e0c3'}.oi[data-glyph=tablet]:before{content:'\e0c4'}.oi[data-glyph=tag]:before{content:'\e0c5'}.oi[data-glyph=tags]:before{content:'\e0c6'}.oi[data-glyph=target]:before{content:'\e0c7'}.oi[data-glyph=task]:before{content:'\e0c8'}.oi[data-glyph=terminal]:before{content:'\e0c9'}.oi[data-glyph=text]:before{content:'\e0ca'}.oi[data-glyph=thumb-down]:before{content:'\e0cb'}.oi[data-glyph=thumb-up]:before{content:'\e0cc'}.oi[data-glyph=timer]:before{content:'\e0cd'}.oi[data-glyph=transfer]:before{content:'\e0ce'}.oi[data-glyph=trash]:before{content:'\e0cf'}.oi[data-glyph=underline]:before{content:'\e0d0'}.oi[data-glyph=vertical-align-bottom]:before{content:'\e0d1'}.oi[data-glyph=vertical-align-center]:before{content:'\e0d2'}.oi[data-glyph=vertical-align-top]:before{content:'\e0d3'}.oi[data-glyph=video]:before{content:'\e0d4'}.oi[data-glyph=volume-high]:before{content:'\e0d5'}.oi[data-glyph=volume-low]:before{content:'\e0d6'}.oi[data-glyph=volume-off]:before{content:'\e0d7'}.oi[data-glyph=warning]:before{content:'\e0d8'}.oi[data-glyph=wifi]:before{content:'\e0d9'}.oi[data-glyph=wrench]:before{content:'\e0da'}.oi[data-glyph=x]:before{content:'\e0db'}.oi[data-glyph=yen]:before{content:'\e0dc'}.oi[data-glyph=zoom-in]:before{content:'\e0dd'}.oi[data-glyph=zoom-out]:before{content:'\e0de'} \ No newline at end of file diff --git a/class/RealSpaceInterface/static/fonts/open-iconic/font/css/open-iconic.scss b/class/RealSpaceInterface/static/fonts/open-iconic/font/css/open-iconic.scss new file mode 100644 index 00000000..e03d979f --- /dev/null +++ b/class/RealSpaceInterface/static/fonts/open-iconic/font/css/open-iconic.scss @@ -0,0 +1,963 @@ +$iconic-font-path: '../fonts/' !default; + +@font-face { + font-family: 'Icons'; + src: url('#{$iconic-font-path}open-iconic.eot'); + src: url('#{$iconic-font-path}open-iconic.eot?#iconic-sm') format('embedded-opentype'), url('#{$iconic-font-path}open-iconic.woff') format('woff'), url('#{$iconic-font-path}open-iconic.ttf') format('truetype'), url('#{$iconic-font-path}open-iconic.otf') format('opentype'), url('#{$iconic-font-path}open-iconic.svg#iconic-sm') format('svg'); + font-weight: normal; + font-style: normal; +} + +.oi[data-glyph].oi-text-replace { + font-size: 0; + line-height: 0; +} + +.oi[data-glyph].oi-text-replace:before { + width: 1em; + text-align: center; +} + +.oi[data-glyph] { + &:before { + position: relative; + top: 1px; + font-family: 'Icons'; + display: inline-block; + speak: none; + line-height: 1; + vertical-align: baseline; + font-weight: normal; + font-style: normal; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + } + + &:empty:before { + width: 1em; + text-align: center; + box-sizing: content-box; + } + + &.oi-align-left:before { + text-align: left; + } + &.oi-align-right:before { + text-align: right; + } + &.oi-align-center:before { + text-align: center; + } + + &.oi-flip-horizontal:before { + -webkit-transform: scale(-1, 1); + -ms-transform: scale(-1, 1); + transform: scale(-1, 1); + } + + &.oi-flip-vertical:before { + -webkit-transform: scale(1, -1); + -ms-transform: scale(-1, 1); + transform: scale(1, -1); + } + + &.oi-flip-horizontal-vertical:before { + -webkit-transform: scale(-1, -1); + -ms-transform: scale(-1, 1); + transform: scale(-1, -1); + } +} + + +.oi[data-glyph=account-login]:before { + content: '\e000'; +} + +.oi[data-glyph=account-logout]:before { + content: '\e001'; +} + +.oi[data-glyph=action-redo]:before { + content: '\e002'; +} + +.oi[data-glyph=action-undo]:before { + content: '\e003'; +} + +.oi[data-glyph=align-center]:before { + content: '\e004'; +} + +.oi[data-glyph=align-left]:before { + content: '\e005'; +} + +.oi[data-glyph=align-right]:before { + content: '\e006'; +} + +.oi[data-glyph=aperture]:before { + content: '\e007'; +} + +.oi[data-glyph=arrow-bottom]:before { + content: '\e008'; +} + +.oi[data-glyph=arrow-circle-bottom]:before { + content: '\e009'; +} + +.oi[data-glyph=arrow-circle-left]:before { + content: '\e00a'; +} + +.oi[data-glyph=arrow-circle-right]:before { + content: '\e00b'; +} + +.oi[data-glyph=arrow-circle-top]:before { + content: '\e00c'; +} + +.oi[data-glyph=arrow-left]:before { + content: '\e00d'; +} + +.oi[data-glyph=arrow-right]:before { + content: '\e00e'; +} + +.oi[data-glyph=arrow-thick-bottom]:before { + content: '\e00f'; +} + +.oi[data-glyph=arrow-thick-left]:before { + content: '\e010'; +} + +.oi[data-glyph=arrow-thick-right]:before { + content: '\e011'; +} + +.oi[data-glyph=arrow-thick-top]:before { + content: '\e012'; +} + +.oi[data-glyph=arrow-top]:before { + content: '\e013'; +} + +.oi[data-glyph=audio-spectrum]:before { + content: '\e014'; +} + +.oi[data-glyph=audio]:before { + content: '\e015'; +} + +.oi[data-glyph=badge]:before { + content: '\e016'; +} + +.oi[data-glyph=ban]:before { + content: '\e017'; +} + +.oi[data-glyph=bar-chart]:before { + content: '\e018'; +} + +.oi[data-glyph=basket]:before { + content: '\e019'; +} + +.oi[data-glyph=battery-empty]:before { + content: '\e01a'; +} + +.oi[data-glyph=battery-full]:before { + content: '\e01b'; +} + +.oi[data-glyph=beaker]:before { + content: '\e01c'; +} + +.oi[data-glyph=bell]:before { + content: '\e01d'; +} + +.oi[data-glyph=bluetooth]:before { + content: '\e01e'; +} + +.oi[data-glyph=bold]:before { + content: '\e01f'; +} + +.oi[data-glyph=bolt]:before { + content: '\e020'; +} + +.oi[data-glyph=book]:before { + content: '\e021'; +} + +.oi[data-glyph=bookmark]:before { + content: '\e022'; +} + +.oi[data-glyph=box]:before { + content: '\e023'; +} + +.oi[data-glyph=briefcase]:before { + content: '\e024'; +} + +.oi[data-glyph=british-pound]:before { + content: '\e025'; +} + +.oi[data-glyph=browser]:before { + content: '\e026'; +} + +.oi[data-glyph=brush]:before { + content: '\e027'; +} + +.oi[data-glyph=bug]:before { + content: '\e028'; +} + +.oi[data-glyph=bullhorn]:before { + content: '\e029'; +} + +.oi[data-glyph=calculator]:before { + content: '\e02a'; +} + +.oi[data-glyph=calendar]:before { + content: '\e02b'; +} + +.oi[data-glyph=camera-slr]:before { + content: '\e02c'; +} + +.oi[data-glyph=caret-bottom]:before { + content: '\e02d'; +} + +.oi[data-glyph=caret-left]:before { + content: '\e02e'; +} + +.oi[data-glyph=caret-right]:before { + content: '\e02f'; +} + +.oi[data-glyph=caret-top]:before { + content: '\e030'; +} + +.oi[data-glyph=cart]:before { + content: '\e031'; +} + +.oi[data-glyph=chat]:before { + content: '\e032'; +} + +.oi[data-glyph=check]:before { + content: '\e033'; +} + +.oi[data-glyph=chevron-bottom]:before { + content: '\e034'; +} + +.oi[data-glyph=chevron-left]:before { + content: '\e035'; +} + +.oi[data-glyph=chevron-right]:before { + content: '\e036'; +} + +.oi[data-glyph=chevron-top]:before { + content: '\e037'; +} + +.oi[data-glyph=circle-check]:before { + content: '\e038'; +} + +.oi[data-glyph=circle-x]:before { + content: '\e039'; +} + +.oi[data-glyph=clipboard]:before { + content: '\e03a'; +} + +.oi[data-glyph=clock]:before { + content: '\e03b'; +} + +.oi[data-glyph=cloud-download]:before { + content: '\e03c'; +} + +.oi[data-glyph=cloud-upload]:before { + content: '\e03d'; +} + +.oi[data-glyph=cloud]:before { + content: '\e03e'; +} + +.oi[data-glyph=cloudy]:before { + content: '\e03f'; +} + +.oi[data-glyph=code]:before { + content: '\e040'; +} + +.oi[data-glyph=cog]:before { + content: '\e041'; +} + +.oi[data-glyph=collapse-down]:before { + content: '\e042'; +} + +.oi[data-glyph=collapse-left]:before { + content: '\e043'; +} + +.oi[data-glyph=collapse-right]:before { + content: '\e044'; +} + +.oi[data-glyph=collapse-up]:before { + content: '\e045'; +} + +.oi[data-glyph=command]:before { + content: '\e046'; +} + +.oi[data-glyph=comment-square]:before { + content: '\e047'; +} + +.oi[data-glyph=compass]:before { + content: '\e048'; +} + +.oi[data-glyph=contrast]:before { + content: '\e049'; +} + +.oi[data-glyph=copywriting]:before { + content: '\e04a'; +} + +.oi[data-glyph=credit-card]:before { + content: '\e04b'; +} + +.oi[data-glyph=crop]:before { + content: '\e04c'; +} + +.oi[data-glyph=dashboard]:before { + content: '\e04d'; +} + +.oi[data-glyph=data-transfer-download]:before { + content: '\e04e'; +} + +.oi[data-glyph=data-transfer-upload]:before { + content: '\e04f'; +} + +.oi[data-glyph=delete]:before { + content: '\e050'; +} + +.oi[data-glyph=dial]:before { + content: '\e051'; +} + +.oi[data-glyph=document]:before { + content: '\e052'; +} + +.oi[data-glyph=dollar]:before { + content: '\e053'; +} + +.oi[data-glyph=double-quote-sans-left]:before { + content: '\e054'; +} + +.oi[data-glyph=double-quote-sans-right]:before { + content: '\e055'; +} + +.oi[data-glyph=double-quote-serif-left]:before { + content: '\e056'; +} + +.oi[data-glyph=double-quote-serif-right]:before { + content: '\e057'; +} + +.oi[data-glyph=droplet]:before { + content: '\e058'; +} + +.oi[data-glyph=eject]:before { + content: '\e059'; +} + +.oi[data-glyph=elevator]:before { + content: '\e05a'; +} + +.oi[data-glyph=ellipses]:before { + content: '\e05b'; +} + +.oi[data-glyph=envelope-closed]:before { + content: '\e05c'; +} + +.oi[data-glyph=envelope-open]:before { + content: '\e05d'; +} + +.oi[data-glyph=euro]:before { + content: '\e05e'; +} + +.oi[data-glyph=excerpt]:before { + content: '\e05f'; +} + +.oi[data-glyph=expand-down]:before { + content: '\e060'; +} + +.oi[data-glyph=expand-left]:before { + content: '\e061'; +} + +.oi[data-glyph=expand-right]:before { + content: '\e062'; +} + +.oi[data-glyph=expand-up]:before { + content: '\e063'; +} + +.oi[data-glyph=external-link]:before { + content: '\e064'; +} + +.oi[data-glyph=eye]:before { + content: '\e065'; +} + +.oi[data-glyph=eyedropper]:before { + content: '\e066'; +} + +.oi[data-glyph=file]:before { + content: '\e067'; +} + +.oi[data-glyph=fire]:before { + content: '\e068'; +} + +.oi[data-glyph=flag]:before { + content: '\e069'; +} + +.oi[data-glyph=flash]:before { + content: '\e06a'; +} + +.oi[data-glyph=folder]:before { + content: '\e06b'; +} + +.oi[data-glyph=fork]:before { + content: '\e06c'; +} + +.oi[data-glyph=fullscreen-enter]:before { + content: '\e06d'; +} + +.oi[data-glyph=fullscreen-exit]:before { + content: '\e06e'; +} + +.oi[data-glyph=globe]:before { + content: '\e06f'; +} + +.oi[data-glyph=graph]:before { + content: '\e070'; +} + +.oi[data-glyph=grid-four-up]:before { + content: '\e071'; +} + +.oi[data-glyph=grid-three-up]:before { + content: '\e072'; +} + +.oi[data-glyph=grid-two-up]:before { + content: '\e073'; +} + +.oi[data-glyph=hard-drive]:before { + content: '\e074'; +} + +.oi[data-glyph=header]:before { + content: '\e075'; +} + +.oi[data-glyph=headphones]:before { + content: '\e076'; +} + +.oi[data-glyph=heart]:before { + content: '\e077'; +} + +.oi[data-glyph=home]:before { + content: '\e078'; +} + +.oi[data-glyph=image]:before { + content: '\e079'; +} + +.oi[data-glyph=inbox]:before { + content: '\e07a'; +} + +.oi[data-glyph=infinity]:before { + content: '\e07b'; +} + +.oi[data-glyph=info]:before { + content: '\e07c'; +} + +.oi[data-glyph=italic]:before { + content: '\e07d'; +} + +.oi[data-glyph=justify-center]:before { + content: '\e07e'; +} + +.oi[data-glyph=justify-left]:before { + content: '\e07f'; +} + +.oi[data-glyph=justify-right]:before { + content: '\e080'; +} + +.oi[data-glyph=key]:before { + content: '\e081'; +} + +.oi[data-glyph=laptop]:before { + content: '\e082'; +} + +.oi[data-glyph=layers]:before { + content: '\e083'; +} + +.oi[data-glyph=lightbulb]:before { + content: '\e084'; +} + +.oi[data-glyph=link-broken]:before { + content: '\e085'; +} + +.oi[data-glyph=link-intact]:before { + content: '\e086'; +} + +.oi[data-glyph=list-rich]:before { + content: '\e087'; +} + +.oi[data-glyph=list]:before { + content: '\e088'; +} + +.oi[data-glyph=location]:before { + content: '\e089'; +} + +.oi[data-glyph=lock-locked]:before { + content: '\e08a'; +} + +.oi[data-glyph=lock-unlocked]:before { + content: '\e08b'; +} + +.oi[data-glyph=loop-circular]:before { + content: '\e08c'; +} + +.oi[data-glyph=loop-square]:before { + content: '\e08d'; +} + +.oi[data-glyph=loop]:before { + content: '\e08e'; +} + +.oi[data-glyph=magnifying-glass]:before { + content: '\e08f'; +} + +.oi[data-glyph=map-marker]:before { + content: '\e090'; +} + +.oi[data-glyph=map]:before { + content: '\e091'; +} + +.oi[data-glyph=media-pause]:before { + content: '\e092'; +} + +.oi[data-glyph=media-play]:before { + content: '\e093'; +} + +.oi[data-glyph=media-record]:before { + content: '\e094'; +} + +.oi[data-glyph=media-skip-backward]:before { + content: '\e095'; +} + +.oi[data-glyph=media-skip-forward]:before { + content: '\e096'; +} + +.oi[data-glyph=media-step-backward]:before { + content: '\e097'; +} + +.oi[data-glyph=media-step-forward]:before { + content: '\e098'; +} + +.oi[data-glyph=media-stop]:before { + content: '\e099'; +} + +.oi[data-glyph=medical-cross]:before { + content: '\e09a'; +} + +.oi[data-glyph=menu]:before { + content: '\e09b'; +} + +.oi[data-glyph=microphone]:before { + content: '\e09c'; +} + +.oi[data-glyph=minus]:before { + content: '\e09d'; +} + +.oi[data-glyph=monitor]:before { + content: '\e09e'; +} + +.oi[data-glyph=moon]:before { + content: '\e09f'; +} + +.oi[data-glyph=move]:before { + content: '\e0a0'; +} + +.oi[data-glyph=musical-note]:before { + content: '\e0a1'; +} + +.oi[data-glyph=paperclip]:before { + content: '\e0a2'; +} + +.oi[data-glyph=pencil]:before { + content: '\e0a3'; +} + +.oi[data-glyph=people]:before { + content: '\e0a4'; +} + +.oi[data-glyph=person]:before { + content: '\e0a5'; +} + +.oi[data-glyph=phone]:before { + content: '\e0a6'; +} + +.oi[data-glyph=pie-chart]:before { + content: '\e0a7'; +} + +.oi[data-glyph=pin]:before { + content: '\e0a8'; +} + +.oi[data-glyph=play-circle]:before { + content: '\e0a9'; +} + +.oi[data-glyph=plus]:before { + content: '\e0aa'; +} + +.oi[data-glyph=power-standby]:before { + content: '\e0ab'; +} + +.oi[data-glyph=print]:before { + content: '\e0ac'; +} + +.oi[data-glyph=project]:before { + content: '\e0ad'; +} + +.oi[data-glyph=pulse]:before { + content: '\e0ae'; +} + +.oi[data-glyph=puzzle-piece]:before { + content: '\e0af'; +} + +.oi[data-glyph=question-mark]:before { + content: '\e0b0'; +} + +.oi[data-glyph=rain]:before { + content: '\e0b1'; +} + +.oi[data-glyph=random]:before { + content: '\e0b2'; +} + +.oi[data-glyph=reload]:before { + content: '\e0b3'; +} + +.oi[data-glyph=resize-both]:before { + content: '\e0b4'; +} + +.oi[data-glyph=resize-height]:before { + content: '\e0b5'; +} + +.oi[data-glyph=resize-width]:before { + content: '\e0b6'; +} + +.oi[data-glyph=rss-alt]:before { + content: '\e0b7'; +} + +.oi[data-glyph=rss]:before { + content: '\e0b8'; +} + +.oi[data-glyph=script]:before { + content: '\e0b9'; +} + +.oi[data-glyph=share-boxed]:before { + content: '\e0ba'; +} + +.oi[data-glyph=share]:before { + content: '\e0bb'; +} + +.oi[data-glyph=shield]:before { + content: '\e0bc'; +} + +.oi[data-glyph=signal]:before { + content: '\e0bd'; +} + +.oi[data-glyph=signpost]:before { + content: '\e0be'; +} + +.oi[data-glyph=sort-ascending]:before { + content: '\e0bf'; +} + +.oi[data-glyph=sort-descending]:before { + content: '\e0c0'; +} + +.oi[data-glyph=spreadsheet]:before { + content: '\e0c1'; +} + +.oi[data-glyph=star]:before { + content: '\e0c2'; +} + +.oi[data-glyph=sun]:before { + content: '\e0c3'; +} + +.oi[data-glyph=tablet]:before { + content: '\e0c4'; +} + +.oi[data-glyph=tag]:before { + content: '\e0c5'; +} + +.oi[data-glyph=tags]:before { + content: '\e0c6'; +} + +.oi[data-glyph=target]:before { + content: '\e0c7'; +} + +.oi[data-glyph=task]:before { + content: '\e0c8'; +} + +.oi[data-glyph=terminal]:before { + content: '\e0c9'; +} + +.oi[data-glyph=text]:before { + content: '\e0ca'; +} + +.oi[data-glyph=thumb-down]:before { + content: '\e0cb'; +} + +.oi[data-glyph=thumb-up]:before { + content: '\e0cc'; +} + +.oi[data-glyph=timer]:before { + content: '\e0cd'; +} + +.oi[data-glyph=transfer]:before { + content: '\e0ce'; +} + +.oi[data-glyph=trash]:before { + content: '\e0cf'; +} + +.oi[data-glyph=underline]:before { + content: '\e0d0'; +} + +.oi[data-glyph=vertical-align-bottom]:before { + content: '\e0d1'; +} + +.oi[data-glyph=vertical-align-center]:before { + content: '\e0d2'; +} + +.oi[data-glyph=vertical-align-top]:before { + content: '\e0d3'; +} + +.oi[data-glyph=video]:before { + content: '\e0d4'; +} + +.oi[data-glyph=volume-high]:before { + content: '\e0d5'; +} + +.oi[data-glyph=volume-low]:before { + content: '\e0d6'; +} + +.oi[data-glyph=volume-off]:before { + content: '\e0d7'; +} + +.oi[data-glyph=warning]:before { + content: '\e0d8'; +} + +.oi[data-glyph=wifi]:before { + content: '\e0d9'; +} + +.oi[data-glyph=wrench]:before { + content: '\e0da'; +} + +.oi[data-glyph=x]:before { + content: '\e0db'; +} + +.oi[data-glyph=yen]:before { + content: '\e0dc'; +} + +.oi[data-glyph=zoom-in]:before { + content: '\e0dd'; +} + +.oi[data-glyph=zoom-out]:before { + content: '\e0de'; +} + diff --git a/class/RealSpaceInterface/static/fonts/open-iconic/font/css/open-iconic.styl b/class/RealSpaceInterface/static/fonts/open-iconic/font/css/open-iconic.styl new file mode 100644 index 00000000..f541bc2d --- /dev/null +++ b/class/RealSpaceInterface/static/fonts/open-iconic/font/css/open-iconic.styl @@ -0,0 +1,733 @@ +@font-face + font-family 'Icons' + src url('../fonts/open-iconic.eot') + src url('../fonts/open-iconic.eot?#iconic-sm') format('embedded-opentype'), url('../fonts/open-iconic.woff') format('woff'), url('../fonts/open-iconic.ttf') format('truetype'), url('../fonts/open-iconic.otf') format('opentype'), url('../fonts/open-iconic.svg#iconic-sm') format('svg') + font-weight normal + font-style normal + + +.oi[data-glyph].oi-text-replace + font-size 0 + line-height 0 + +.oi[data-glyph].oi-text-replace:before + width 1em + text-align center + +.oi[data-glyph] + &:before + position relative + top 1px + font-family 'Icons' + display inline-block + speak none + line-height 1 + vertical-align baseline + font-weight normal + font-style normal + -webkit-font-smoothing antialiased + -moz-osx-font-smoothing grayscale + + &:empty:before + width 1em + text-align center + box-sizing content-box + + &.oi-align-left:before + text-align left + + &.oi-align-right:before + text-align right + + &.oi-align-center:before + text-align center + + + &.oi-flip-horizontal:before + -webkit-transform scale(-1, 1) + -ms-transform scale(-1, 1) + transform scale(-1, 1) + + + &.oi-flip-vertical:before + -webkit-transform scale(1, -1) + -ms-transform scale(-1, 1) + transform scale(1, -1) + + + &.oi-flip-horizontal-vertical:before + -webkit-transform scale(-1, -1) + -ms-transform scale(-1, 1) + transform scale(-1, -1) + + + + +.oi[data-glyph=account-login]:before + content '\e000' + +.oi[data-glyph=account-logout]:before + content '\e001' + +.oi[data-glyph=action-redo]:before + content '\e002' + +.oi[data-glyph=action-undo]:before + content '\e003' + +.oi[data-glyph=align-center]:before + content '\e004' + +.oi[data-glyph=align-left]:before + content '\e005' + +.oi[data-glyph=align-right]:before + content '\e006' + +.oi[data-glyph=aperture]:before + content '\e007' + +.oi[data-glyph=arrow-bottom]:before + content '\e008' + +.oi[data-glyph=arrow-circle-bottom]:before + content '\e009' + +.oi[data-glyph=arrow-circle-left]:before + content '\e00a' + +.oi[data-glyph=arrow-circle-right]:before + content '\e00b' + +.oi[data-glyph=arrow-circle-top]:before + content '\e00c' + +.oi[data-glyph=arrow-left]:before + content '\e00d' + +.oi[data-glyph=arrow-right]:before + content '\e00e' + +.oi[data-glyph=arrow-thick-bottom]:before + content '\e00f' + +.oi[data-glyph=arrow-thick-left]:before + content '\e010' + +.oi[data-glyph=arrow-thick-right]:before + content '\e011' + +.oi[data-glyph=arrow-thick-top]:before + content '\e012' + +.oi[data-glyph=arrow-top]:before + content '\e013' + +.oi[data-glyph=audio-spectrum]:before + content '\e014' + +.oi[data-glyph=audio]:before + content '\e015' + +.oi[data-glyph=badge]:before + content '\e016' + +.oi[data-glyph=ban]:before + content '\e017' + +.oi[data-glyph=bar-chart]:before + content '\e018' + +.oi[data-glyph=basket]:before + content '\e019' + +.oi[data-glyph=battery-empty]:before + content '\e01a' + +.oi[data-glyph=battery-full]:before + content '\e01b' + +.oi[data-glyph=beaker]:before + content '\e01c' + +.oi[data-glyph=bell]:before + content '\e01d' + +.oi[data-glyph=bluetooth]:before + content '\e01e' + +.oi[data-glyph=bold]:before + content '\e01f' + +.oi[data-glyph=bolt]:before + content '\e020' + +.oi[data-glyph=book]:before + content '\e021' + +.oi[data-glyph=bookmark]:before + content '\e022' + +.oi[data-glyph=box]:before + content '\e023' + +.oi[data-glyph=briefcase]:before + content '\e024' + +.oi[data-glyph=british-pound]:before + content '\e025' + +.oi[data-glyph=browser]:before + content '\e026' + +.oi[data-glyph=brush]:before + content '\e027' + +.oi[data-glyph=bug]:before + content '\e028' + +.oi[data-glyph=bullhorn]:before + content '\e029' + +.oi[data-glyph=calculator]:before + content '\e02a' + +.oi[data-glyph=calendar]:before + content '\e02b' + +.oi[data-glyph=camera-slr]:before + content '\e02c' + +.oi[data-glyph=caret-bottom]:before + content '\e02d' + +.oi[data-glyph=caret-left]:before + content '\e02e' + +.oi[data-glyph=caret-right]:before + content '\e02f' + +.oi[data-glyph=caret-top]:before + content '\e030' + +.oi[data-glyph=cart]:before + content '\e031' + +.oi[data-glyph=chat]:before + content '\e032' + +.oi[data-glyph=check]:before + content '\e033' + +.oi[data-glyph=chevron-bottom]:before + content '\e034' + +.oi[data-glyph=chevron-left]:before + content '\e035' + +.oi[data-glyph=chevron-right]:before + content '\e036' + +.oi[data-glyph=chevron-top]:before + content '\e037' + +.oi[data-glyph=circle-check]:before + content '\e038' + +.oi[data-glyph=circle-x]:before + content '\e039' + +.oi[data-glyph=clipboard]:before + content '\e03a' + +.oi[data-glyph=clock]:before + content '\e03b' + +.oi[data-glyph=cloud-download]:before + content '\e03c' + +.oi[data-glyph=cloud-upload]:before + content '\e03d' + +.oi[data-glyph=cloud]:before + content '\e03e' + +.oi[data-glyph=cloudy]:before + content '\e03f' + +.oi[data-glyph=code]:before + content '\e040' + +.oi[data-glyph=cog]:before + content '\e041' + +.oi[data-glyph=collapse-down]:before + content '\e042' + +.oi[data-glyph=collapse-left]:before + content '\e043' + +.oi[data-glyph=collapse-right]:before + content '\e044' + +.oi[data-glyph=collapse-up]:before + content '\e045' + +.oi[data-glyph=command]:before + content '\e046' + +.oi[data-glyph=comment-square]:before + content '\e047' + +.oi[data-glyph=compass]:before + content '\e048' + +.oi[data-glyph=contrast]:before + content '\e049' + +.oi[data-glyph=copywriting]:before + content '\e04a' + +.oi[data-glyph=credit-card]:before + content '\e04b' + +.oi[data-glyph=crop]:before + content '\e04c' + +.oi[data-glyph=dashboard]:before + content '\e04d' + +.oi[data-glyph=data-transfer-download]:before + content '\e04e' + +.oi[data-glyph=data-transfer-upload]:before + content '\e04f' + +.oi[data-glyph=delete]:before + content '\e050' + +.oi[data-glyph=dial]:before + content '\e051' + +.oi[data-glyph=document]:before + content '\e052' + +.oi[data-glyph=dollar]:before + content '\e053' + +.oi[data-glyph=double-quote-sans-left]:before + content '\e054' + +.oi[data-glyph=double-quote-sans-right]:before + content '\e055' + +.oi[data-glyph=double-quote-serif-left]:before + content '\e056' + +.oi[data-glyph=double-quote-serif-right]:before + content '\e057' + +.oi[data-glyph=droplet]:before + content '\e058' + +.oi[data-glyph=eject]:before + content '\e059' + +.oi[data-glyph=elevator]:before + content '\e05a' + +.oi[data-glyph=ellipses]:before + content '\e05b' + +.oi[data-glyph=envelope-closed]:before + content '\e05c' + +.oi[data-glyph=envelope-open]:before + content '\e05d' + +.oi[data-glyph=euro]:before + content '\e05e' + +.oi[data-glyph=excerpt]:before + content '\e05f' + +.oi[data-glyph=expand-down]:before + content '\e060' + +.oi[data-glyph=expand-left]:before + content '\e061' + +.oi[data-glyph=expand-right]:before + content '\e062' + +.oi[data-glyph=expand-up]:before + content '\e063' + +.oi[data-glyph=external-link]:before + content '\e064' + +.oi[data-glyph=eye]:before + content '\e065' + +.oi[data-glyph=eyedropper]:before + content '\e066' + +.oi[data-glyph=file]:before + content '\e067' + +.oi[data-glyph=fire]:before + content '\e068' + +.oi[data-glyph=flag]:before + content '\e069' + +.oi[data-glyph=flash]:before + content '\e06a' + +.oi[data-glyph=folder]:before + content '\e06b' + +.oi[data-glyph=fork]:before + content '\e06c' + +.oi[data-glyph=fullscreen-enter]:before + content '\e06d' + +.oi[data-glyph=fullscreen-exit]:before + content '\e06e' + +.oi[data-glyph=globe]:before + content '\e06f' + +.oi[data-glyph=graph]:before + content '\e070' + +.oi[data-glyph=grid-four-up]:before + content '\e071' + +.oi[data-glyph=grid-three-up]:before + content '\e072' + +.oi[data-glyph=grid-two-up]:before + content '\e073' + +.oi[data-glyph=hard-drive]:before + content '\e074' + +.oi[data-glyph=header]:before + content '\e075' + +.oi[data-glyph=headphones]:before + content '\e076' + +.oi[data-glyph=heart]:before + content '\e077' + +.oi[data-glyph=home]:before + content '\e078' + +.oi[data-glyph=image]:before + content '\e079' + +.oi[data-glyph=inbox]:before + content '\e07a' + +.oi[data-glyph=infinity]:before + content '\e07b' + +.oi[data-glyph=info]:before + content '\e07c' + +.oi[data-glyph=italic]:before + content '\e07d' + +.oi[data-glyph=justify-center]:before + content '\e07e' + +.oi[data-glyph=justify-left]:before + content '\e07f' + +.oi[data-glyph=justify-right]:before + content '\e080' + +.oi[data-glyph=key]:before + content '\e081' + +.oi[data-glyph=laptop]:before + content '\e082' + +.oi[data-glyph=layers]:before + content '\e083' + +.oi[data-glyph=lightbulb]:before + content '\e084' + +.oi[data-glyph=link-broken]:before + content '\e085' + +.oi[data-glyph=link-intact]:before + content '\e086' + +.oi[data-glyph=list-rich]:before + content '\e087' + +.oi[data-glyph=list]:before + content '\e088' + +.oi[data-glyph=location]:before + content '\e089' + +.oi[data-glyph=lock-locked]:before + content '\e08a' + +.oi[data-glyph=lock-unlocked]:before + content '\e08b' + +.oi[data-glyph=loop-circular]:before + content '\e08c' + +.oi[data-glyph=loop-square]:before + content '\e08d' + +.oi[data-glyph=loop]:before + content '\e08e' + +.oi[data-glyph=magnifying-glass]:before + content '\e08f' + +.oi[data-glyph=map-marker]:before + content '\e090' + +.oi[data-glyph=map]:before + content '\e091' + +.oi[data-glyph=media-pause]:before + content '\e092' + +.oi[data-glyph=media-play]:before + content '\e093' + +.oi[data-glyph=media-record]:before + content '\e094' + +.oi[data-glyph=media-skip-backward]:before + content '\e095' + +.oi[data-glyph=media-skip-forward]:before + content '\e096' + +.oi[data-glyph=media-step-backward]:before + content '\e097' + +.oi[data-glyph=media-step-forward]:before + content '\e098' + +.oi[data-glyph=media-stop]:before + content '\e099' + +.oi[data-glyph=medical-cross]:before + content '\e09a' + +.oi[data-glyph=menu]:before + content '\e09b' + +.oi[data-glyph=microphone]:before + content '\e09c' + +.oi[data-glyph=minus]:before + content '\e09d' + +.oi[data-glyph=monitor]:before + content '\e09e' + +.oi[data-glyph=moon]:before + content '\e09f' + +.oi[data-glyph=move]:before + content '\e0a0' + +.oi[data-glyph=musical-note]:before + content '\e0a1' + +.oi[data-glyph=paperclip]:before + content '\e0a2' + +.oi[data-glyph=pencil]:before + content '\e0a3' + +.oi[data-glyph=people]:before + content '\e0a4' + +.oi[data-glyph=person]:before + content '\e0a5' + +.oi[data-glyph=phone]:before + content '\e0a6' + +.oi[data-glyph=pie-chart]:before + content '\e0a7' + +.oi[data-glyph=pin]:before + content '\e0a8' + +.oi[data-glyph=play-circle]:before + content '\e0a9' + +.oi[data-glyph=plus]:before + content '\e0aa' + +.oi[data-glyph=power-standby]:before + content '\e0ab' + +.oi[data-glyph=print]:before + content '\e0ac' + +.oi[data-glyph=project]:before + content '\e0ad' + +.oi[data-glyph=pulse]:before + content '\e0ae' + +.oi[data-glyph=puzzle-piece]:before + content '\e0af' + +.oi[data-glyph=question-mark]:before + content '\e0b0' + +.oi[data-glyph=rain]:before + content '\e0b1' + +.oi[data-glyph=random]:before + content '\e0b2' + +.oi[data-glyph=reload]:before + content '\e0b3' + +.oi[data-glyph=resize-both]:before + content '\e0b4' + +.oi[data-glyph=resize-height]:before + content '\e0b5' + +.oi[data-glyph=resize-width]:before + content '\e0b6' + +.oi[data-glyph=rss-alt]:before + content '\e0b7' + +.oi[data-glyph=rss]:before + content '\e0b8' + +.oi[data-glyph=script]:before + content '\e0b9' + +.oi[data-glyph=share-boxed]:before + content '\e0ba' + +.oi[data-glyph=share]:before + content '\e0bb' + +.oi[data-glyph=shield]:before + content '\e0bc' + +.oi[data-glyph=signal]:before + content '\e0bd' + +.oi[data-glyph=signpost]:before + content '\e0be' + +.oi[data-glyph=sort-ascending]:before + content '\e0bf' + +.oi[data-glyph=sort-descending]:before + content '\e0c0' + +.oi[data-glyph=spreadsheet]:before + content '\e0c1' + +.oi[data-glyph=star]:before + content '\e0c2' + +.oi[data-glyph=sun]:before + content '\e0c3' + +.oi[data-glyph=tablet]:before + content '\e0c4' + +.oi[data-glyph=tag]:before + content '\e0c5' + +.oi[data-glyph=tags]:before + content '\e0c6' + +.oi[data-glyph=target]:before + content '\e0c7' + +.oi[data-glyph=task]:before + content '\e0c8' + +.oi[data-glyph=terminal]:before + content '\e0c9' + +.oi[data-glyph=text]:before + content '\e0ca' + +.oi[data-glyph=thumb-down]:before + content '\e0cb' + +.oi[data-glyph=thumb-up]:before + content '\e0cc' + +.oi[data-glyph=timer]:before + content '\e0cd' + +.oi[data-glyph=transfer]:before + content '\e0ce' + +.oi[data-glyph=trash]:before + content '\e0cf' + +.oi[data-glyph=underline]:before + content '\e0d0' + +.oi[data-glyph=vertical-align-bottom]:before + content '\e0d1' + +.oi[data-glyph=vertical-align-center]:before + content '\e0d2' + +.oi[data-glyph=vertical-align-top]:before + content '\e0d3' + +.oi[data-glyph=video]:before + content '\e0d4' + +.oi[data-glyph=volume-high]:before + content '\e0d5' + +.oi[data-glyph=volume-low]:before + content '\e0d6' + +.oi[data-glyph=volume-off]:before + content '\e0d7' + +.oi[data-glyph=warning]:before + content '\e0d8' + +.oi[data-glyph=wifi]:before + content '\e0d9' + +.oi[data-glyph=wrench]:before + content '\e0da' + +.oi[data-glyph=x]:before + content '\e0db' + +.oi[data-glyph=yen]:before + content '\e0dc' + +.oi[data-glyph=zoom-in]:before + content '\e0dd' + +.oi[data-glyph=zoom-out]:before + content '\e0de' diff --git a/class/RealSpaceInterface/static/fonts/open-iconic/font/fonts/open-iconic.eot b/class/RealSpaceInterface/static/fonts/open-iconic/font/fonts/open-iconic.eot new file mode 100644 index 00000000..f98177db Binary files /dev/null and b/class/RealSpaceInterface/static/fonts/open-iconic/font/fonts/open-iconic.eot differ diff --git a/class/RealSpaceInterface/static/fonts/open-iconic/font/fonts/open-iconic.otf b/class/RealSpaceInterface/static/fonts/open-iconic/font/fonts/open-iconic.otf new file mode 100644 index 00000000..f6bd6846 Binary files /dev/null and b/class/RealSpaceInterface/static/fonts/open-iconic/font/fonts/open-iconic.otf differ diff --git a/class/RealSpaceInterface/static/fonts/open-iconic/font/fonts/open-iconic.svg b/class/RealSpaceInterface/static/fonts/open-iconic/font/fonts/open-iconic.svg new file mode 100644 index 00000000..32b2c4e9 --- /dev/null +++ b/class/RealSpaceInterface/static/fonts/open-iconic/font/fonts/open-iconic.svg @@ -0,0 +1,543 @@ + + + + + +Created by FontForge 20120731 at Tue Jul 1 20:39:22 2014 + By P.J. Onori +Created by P.J. Onori with FontForge 2.0 (http://fontforge.sf.net) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/class/RealSpaceInterface/static/fonts/open-iconic/font/fonts/open-iconic.ttf b/class/RealSpaceInterface/static/fonts/open-iconic/font/fonts/open-iconic.ttf new file mode 100644 index 00000000..fab60486 Binary files /dev/null and b/class/RealSpaceInterface/static/fonts/open-iconic/font/fonts/open-iconic.ttf differ diff --git a/class/RealSpaceInterface/static/fonts/open-iconic/font/fonts/open-iconic.woff b/class/RealSpaceInterface/static/fonts/open-iconic/font/fonts/open-iconic.woff new file mode 100644 index 00000000..f9309988 Binary files /dev/null and b/class/RealSpaceInterface/static/fonts/open-iconic/font/fonts/open-iconic.woff differ diff --git a/class/RealSpaceInterface/static/fonts/open-iconic/package.json b/class/RealSpaceInterface/static/fonts/open-iconic/package.json new file mode 100644 index 00000000..d1e76ca0 --- /dev/null +++ b/class/RealSpaceInterface/static/fonts/open-iconic/package.json @@ -0,0 +1,36 @@ +{ + "name": "open-iconic", + "description": "An open source icon set with marks in SVG, sprite, webfont and raster format", + "version": "1.1.1", + "keywords": ["icon", "iconic", "open-iconic", "svg", "sprite", "font", "png", "webp"], + "homepage": "http://useiconic.com/open-iconic/", + "author": { + "name": "Iconic", + "email": "yourfriends@useiconic.com", + "web": "http://useiconic.com/" + }, + "repository": { + "type": "git", + "url": "https://github.com/iconic/open-iconic.git" + }, + "contributors": [ + { + "name": "P.J. Onori", + "web": "http://twitter.com/somerandomdude" + }, + { + "name": "Dave Johnson", + "web": "http://twitter.com/protodave" + } + ], + "licenses": [ + { + "type": "MIT License", + "url": "http://opensource.org/licenses/mit-license.html" + }, + { + "type": "SIL OFL 1.1", + "url": "http://scripts.sil.org/OFL" + } + ] +} diff --git a/class/RealSpaceInterface/static/images/cmap.png b/class/RealSpaceInterface/static/images/cmap.png new file mode 100644 index 00000000..68d1ec8c Binary files /dev/null and b/class/RealSpaceInterface/static/images/cmap.png differ diff --git a/class/RealSpaceInterface/static/images/colormaps/Default/default.png b/class/RealSpaceInterface/static/images/colormaps/Default/default.png new file mode 100644 index 00000000..fe8479ee Binary files /dev/null and b/class/RealSpaceInterface/static/images/colormaps/Default/default.png differ diff --git a/class/RealSpaceInterface/static/images/colormaps/Diverging/RdYlBu.png b/class/RealSpaceInterface/static/images/colormaps/Diverging/RdYlBu.png new file mode 100644 index 00000000..f8f5529b Binary files /dev/null and b/class/RealSpaceInterface/static/images/colormaps/Diverging/RdYlBu.png differ diff --git a/class/RealSpaceInterface/static/images/colormaps/Diverging/Spectral.png b/class/RealSpaceInterface/static/images/colormaps/Diverging/Spectral.png new file mode 100644 index 00000000..180960f1 Binary files /dev/null and b/class/RealSpaceInterface/static/images/colormaps/Diverging/Spectral.png differ diff --git a/class/RealSpaceInterface/static/images/colormaps/Diverging/seismic.png b/class/RealSpaceInterface/static/images/colormaps/Diverging/seismic.png new file mode 100644 index 00000000..54c3eb10 Binary files /dev/null and b/class/RealSpaceInterface/static/images/colormaps/Diverging/seismic.png differ diff --git a/class/RealSpaceInterface/static/images/colormaps/Miscellaneous/jet.png b/class/RealSpaceInterface/static/images/colormaps/Miscellaneous/jet.png new file mode 100644 index 00000000..ed2a5134 Binary files /dev/null and b/class/RealSpaceInterface/static/images/colormaps/Miscellaneous/jet.png differ diff --git a/class/RealSpaceInterface/static/images/colormaps/Uniform/inferno.png b/class/RealSpaceInterface/static/images/colormaps/Uniform/inferno.png new file mode 100644 index 00000000..5eaae181 Binary files /dev/null and b/class/RealSpaceInterface/static/images/colormaps/Uniform/inferno.png differ diff --git a/class/RealSpaceInterface/static/images/colormaps/Uniform/magma.png b/class/RealSpaceInterface/static/images/colormaps/Uniform/magma.png new file mode 100644 index 00000000..63502da8 Binary files /dev/null and b/class/RealSpaceInterface/static/images/colormaps/Uniform/magma.png differ diff --git a/class/RealSpaceInterface/static/images/colormaps/Uniform/plasma.png b/class/RealSpaceInterface/static/images/colormaps/Uniform/plasma.png new file mode 100644 index 00000000..90d8bd30 Binary files /dev/null and b/class/RealSpaceInterface/static/images/colormaps/Uniform/plasma.png differ diff --git a/class/RealSpaceInterface/static/images/colormaps/Uniform/viridis.png b/class/RealSpaceInterface/static/images/colormaps/Uniform/viridis.png new file mode 100644 index 00000000..68d1ec8c Binary files /dev/null and b/class/RealSpaceInterface/static/images/colormaps/Uniform/viridis.png differ diff --git a/class/RealSpaceInterface/static/js/.Rhistory b/class/RealSpaceInterface/static/js/.Rhistory new file mode 100644 index 00000000..e69de29b diff --git a/class/RealSpaceInterface/static/js/RSI.js b/class/RealSpaceInterface/static/js/RSI.js new file mode 100644 index 00000000..2fcc5408 --- /dev/null +++ b/class/RealSpaceInterface/static/js/RSI.js @@ -0,0 +1,1756 @@ +/** @module RSI */ + +/** + * Display a warning message if web browser does not support WebGL. + */ +if (!Detector.webgl) { + Detector.addGetWebGLMessage(); + document.getElementById('container').innerHTML = ""; +} + +////////////////////// +// Global Variables // +////////////////////// + +/** + * Indicates whether initial condition has been set. + * @type {boolean} + */ +var initialSet = false; //initialConditions are not set +/** + * Indicates whether cosmological parameters have been set. + * @type {boolean} + */ +var cosmoSet = false; //cosmological parameters are not set +/** + * indicates whether calculation is running (i.e. initial or cosmological) + * @type {boolean} + */ +var calculationRunning = false; +/** + * indicates whether initial state has been received. + * @type {boolean} + */ +var receivedInitial = false; + +/** + * array containing redshift values. + * @type {number[]} + */ +var redshift = ["Initial"]; +/** + * True if simulation is to be run until today, else until decoupling. + * @type {boolean} + */ +var stopAtDecoupling = true; +/** + * The last frame (inclusive) to be displayed when simulation is run until decoupling. + * @type {number} + */ +var decouplingFrame = 0; + +/** + * Active quantity. Must be from {@link QUANTITIES}. + * + * @type {string} + */ +var activeQuantity = "d_g"; + +var container, stats; + +/** + * @type {THREE.Camera} + */ +var camera; +/** + * @type {THREE.Scene} + */ +var scene; +/** + * @type {THREE.OrbitControls} + */ +var controls; +/** + * @type {THREE.WebGLRenderer} + */ +var renderer; + +/** + * @type {THREE.Clock} + */ +var clock = new THREE.Clock(); + +/** + * Size of grid divisions. + * Set in {@link module:RSI~onInitialConditionSet}. + * @type {string} + */ +var realScale = "0 Mpc"; + +/* + * @type {SimulationManager} + */ +var simulationManager; + +/** + * List of color map objects: + *

+ * [{name: <name>, texture: <texture>}, ...]
+ * 
+ *
+ * @type {Array.>}
+ * */
+var colorMaps = [];
+
+/**
+ * GUI responsible for controlling inital + cosmological parameters.
+ * @type {module:paramGui~ParamGui}
+ */
+var parameterGui;
+
+/**
+ * modal dialog containing table of previous simulations and
+ * their previous parameters.
+ *
+ * @type {SimuTable}
+ * @see {SimuTable}
+ */
+var simuTable;
+
+/**
+ * Player controls.
+ *
+ * @type {PlayerPanel}
+ */
+var playerPanel;
+
+/**
+ * flot.js instance for transfer function plot.
+ */
+var transferFunctionPlot;
+
+/**
+ * flot.js instance for Cl plot.
+ */
+var tClPlot;
+
+/**
+ * Indicates whether plots panel is visible.
+ * @type {boolean}
+ */
+var plotWindowVisible = true;
+
+/**
+ * Holds the list of k's for the transfer function plot.
+ * @type {number[]}
+ */
+var kRange;
+
+/**
+ * Indicates whether websocket connection is closed.
+ * @type {boolean}
+ */
+var closed = true;
+/**
+ * Current frame.
+ * @type {number}
+ */
+var frame = 0;
+/**
+ * Indicates whether animation is currently running.
+ * @ŧype {boolean}
+ */
+var animationRunning = false;
+
+/**
+ * Field of View (in degrees) of perspective camera
+ * @type {number}
+ */
+var FoV = 45;
+
+/**
+ * true if scene is to be rendered using an orthographic camera.
+ * @type {boolean}
+ * @see {@link module:RSI~toggleCameraMode}
+ */
+var orthographicMode = false;
+
+/**
+ * Renderer used to create images / .gifs.
+ * @type {THREE.WebGLRenderer}
+ */
+var imgRenderer = new THREE.WebGLRenderer();
+
+/**
+ * Orthographic camera used for image / .gif creation.
+ * @type {THREE.OrthographicCamera}
+ */
+var orthoCam;
+
+/**
+ * Number of decimal digits to round redshift values to.
+ * @type {number}
+ */
+var REDSHIFT_ROUND = 1;
+
+/**
+ * List of visually distinct colors for use in plots,
+ * taken from {@link https://sashat.me/2017/01/11/list-of-20-simple-distinct-colors/}
+ */
+var colors = [
+    "#e6194b",
+    "#3cb44b",
+    // "#ffe119", // yellow, hard to see on white ground
+    "#0082c8",
+    "#f58231",
+    "#911eb4",
+    // "#46f0f0", // cyan, hard to see on white ground
+    "#f032e6",
+    "#d2f53c",
+    "#fabebe",
+    "#008080",
+    "#e6beff",
+    "#aa6e28",
+    "#fffac8",
+    "#800000",
+    "#aaffc3",
+    "#808000",
+    "#ffd8b1",
+    "#000080",
+    "#808080",
+    "#FFFFFF",
+    "#000000"
+];
+
+/**
+ * Plot options for Cl's
+ */
+var tClPlotOptions = {
+    legend: {
+        show: false,
+    },
+    xaxis: {
+        axisLabel: "ℓ",
+        // transform: Math.log,
+        // inverseTransform: Math.exp,
+    },
+    yaxis: {
+        tickFormatter: function(num, obj) {
+            if (num > 0 && num < 1e-3) {
+                var power = Math.floor(Math.log10(num));
+                var prefix = num / Math.pow(10, power);
+                return round(prefix, 2) + "·10" + power + "";
+            }
+            return num;
+        },
+        axisLabel: "ℓ (ℓ+1) CTT / (2π)",
+    },
+};
+
+/**
+ * Plot options for matter spectrum
+ */
+var mPkPlotOptions = {
+    legend: {
+        show: false,
+    },
+    xaxis: {
+        transform: Math.log,
+        inverseTransform: Math.exp,
+        axisLabel: "k [h/Mpc]",
+        ticks: [[1e-3, "10-3"], [1e-2, "10-2"], [1e-1, "10-1"], 1, 10],
+    },
+    yaxis: {
+        transform: Math.log,
+        inverseTransform: Math.exp,
+        tickFormatter: function(num, obj) {
+            var power = Math.floor(Math.log10(num));
+            var prefix = num / Math.pow(10, power);
+            var result = "";
+            if (prefix != 1)
+                result += round(prefix, 2) + "·";
+            return result + "10" + power + "";
+        },
+        axisLabel: "P(k) [(Mpc/h)3]",
+        ticks: [1, 10, 100, 1000, 10000, 100000, 1000000],
+        min: 0.1,
+    },
+};
+
+/**
+ * Plot options for transfer function(s)
+ */
+var transferPlotOptions = {
+    legend: {
+        show: false,
+    },
+    xaxis: {
+        axisLabel: "k [Mpc-1]",
+        transform: Math.log,
+        inverseTransform: Math.exp,
+        ticks: [[1e-3, "10-3"], [1e-2, "10-2"], [1e-1, "10-1"], 1],
+    },
+    yaxis: {
+        axisLabel: "transfer function",
+        min: -5,
+        max: 5,
+    },
+};
+
+
+/**
+ * Raycaster for mouse picking
+ * @type {THREE.Raycaster}
+ */
+var raycaster = new THREE.Raycaster();
+/**
+ * 2d vector containing mouse position.
+ * @type {THREE.Vector2}
+ */
+var mouse = new THREE.Vector2();
+
+
+/* ENTRY POINT */
+$(document).ready(connect);
+
+/**
+ * Mouse Event Callback which is called on every mouse move.
+ * It is required to track the mouse's position since it's required
+ * to feed its position to the raycaster to determine over which mesh
+ * the mouse is currently hovering.
+ */
+function onMouseMove(ev) {
+    var rect = container.getBoundingClientRect();
+    mouse.x = ((ev.clientX - rect.left) / window.innerWidth) * 2 - 1;
+    mouse.y = -((ev.clientY - rect.top) / window.innerHeight) * 2 + 1;
+}
+
+
+/**
+ * Once the websocket in {@link module:RSI~connect} has established a connection,
+ * this function will be called, which initializes the application.
+ */
+function start() {
+    init();
+    step();
+    requestAnimationFrame(animate);
+}
+
+/**
+ * Logging function
+ *
+ * @param {Object} msg
+ */
+function log(msg) {
+    console.log("D: " + msg);
+}
+
+/**
+ * Entry point for the whole application.
+ *
+ * Establishes a connection to the WebSocket provided by the backend.
+ */
+function connect() {
+    // connection = new SockJS('http://' + window.location.host + '/datasocket');
+    connection = new WebSocket("ws://" + window.location.host + "/datasocket");
+
+    log("Connecting...");
+
+    connection.onopen = function() {
+        log("Connected!");
+        start();
+    };
+
+    connection.onmessage = messageCallback;
+
+    connection.onclose = function() {
+        log('Disconnected.');
+        connection = null;
+        onClose();
+    };
+}
+
+/**
+ * Message callback for the WebSocket connection which gets called for each
+ * received message.
+ *
+ * @param {Object} e - message event object
+ */
+function messageCallback(e) {
+    var message = JSON.parse(e.data);
+    /**
+     * Once data has been received, update the progress in the progress
+     * in the progress modal and call {@link module:RSI~onData} to process
+     * the received data.
+     * Also, flag {@link receivedInitial} as true if no initial data has been
+     * received prior.
+     */
+    if (message.type == 'data') {
+        if (message.hasOwnProperty("progress")) {
+            var percentage = (message.progress * 100).toFixed(1) + "%";
+            $("#simulationProgressBar").css({width: percentage});
+            $("#simulationProgressBar").text(percentage);
+        }
+        onData(message, !receivedInitial);
+        if (!receivedInitial) {
+            receivedInitial = true;
+        }
+    /**
+     * The server sends a list of k values (at which the transfer function is sampled)
+     * immediately after the client connected.
+     */
+    } else if (message.type === 'krange') {
+        log("Received k range from server.");
+        kRange = message.k;
+    }
+    /**
+     * Handles the temperature Cl's sent by the server.
+     * The Cl's (and l's) sent by the server conventionally do not contain the samples for l = 0 and l = 1.
+     * They are, however, not already in the conventional form of l * (l + 1) Cl / (2 * Pi),
+     * so they are processed below.
+     * After that, they are added to the active simulation exposed by
+     * {@link SimulationManager#getTarget}.
+     */
+    else if (message.type === "Cl") {
+        log("Received Cl's from server.");
+        var l = message.l;
+        var tCl = message.tCl;
+
+        message.tCl = l.map(function(ll, i) { return tCl[i] * ll * (ll + 1) / (2 * Math.PI); });
+        simulationManager.getTarget().Cls = message;
+    }
+    /**
+     * Handles matter power spectrum, similar to Cl's above.
+     */
+    else if (message.type == "mPk") {
+        log("Received matter spectrum from server");
+        var kh = message.kh;
+        var Pkh = message.Pkh;
+
+        simulationManager.getTarget().mPk = message;
+        plotStaticIfVisible();
+    }
+    /**
+     * The server signals end of calculations or data transfers via a "success" message
+     * of one of several types.
+     * Upon reception of that message the activity indicator is hidden.
+     */
+    else if (message.type == "success") {
+        calculationRunning = false;
+        hideActivityIndicator();
+
+        if (message.sort == 'Initial') {
+            initialSet = true;
+            loadFrame(0);
+        }
+        /**
+         * Once the server has confirmed that it has received cosmological parameters,
+         * immediately request the simulation results.
+         */
+        else if (message.sort == 'Cosmo') {
+            cosmoSet = true;
+            $("#simulationProgressInfo").text("Receiving simulation data...");
+            requestSimulationData();
+        }
+        /**
+         * Handle the server signaling end of data transfer (for all frames).
+         * The progress modal is hidden, and the list of simulations is rebuild from scratch.
+         * Also, the current frame is reloaded to display the newly received data
+         * at the currently active frame.
+         */
+        else if (message.sort == "Data") {
+            log("Success receiving simulation.");
+            $("#simulationProgressModal").modal("hide");
+            simulationManager.finalizeTarget();
+            // Update the simulation list/table
+            simuTable.clear();
+            var simulations = simulationManager.getSimulations();
+            var active = simulationManager.getActive();
+            simuTable.populate(simulationManager.getSimulations(), simulationManager.getActive());
+            loadFrame(frame, true);
+        }
+    }
+    /**
+     * Server sends redshifts immediately after sending initial condition data.
+     */
+    else if (message.type == "redshift") {
+        redshift = ["Initial"].concat(message.redshift);
+    }
+    /**
+     * Server also sends exact z of decoupling extracted from CLASS's background parameters.
+     * Also contains the index of the closest frame *before* decoupling, which this
+     * application requires to stop the simulation playback at the appropriate frame.
+     */
+    else if (message.type == 'decoupling') {
+        log("Decoupling at z = " + message.z + " (frame #" + message.frame + ")");
+        // Add +1 because redshift[0] === "Initial"
+        decouplingFrame = message.frame + 1;
+    }
+    /**
+     * The server notifies the client about the resolution (i.e. the side length of the square
+     * data matrix) it is about to receive.
+     * This is done before an initial state is sent.
+     */
+    else if (message.type == "resolution") {
+        log("Setting resolution to " + message.value);
+        simulationManager.setResolution(message.value);
+    }
+    /**
+     * Currently unused.
+     */
+    else if (message.type == "extrema") {
+    }
+    /**
+     * In case of an exception occuring on the server side, the client is notified of that
+     * and displays the transmitted stack trace to the user.
+     * Also, if one exists, the target simulation (the one, which is currently receiving data)
+     * is destroyed in case of an exception, to guarantee the continued functionality of the
+     * application.
+     */
+    else if (message.type == "exception") {
+        $("#exceptionModalMessage").text(message.exception);
+        if (calculationRunning) {
+            $("#simulationProgressModal").modal("hide");
+            calculationRunning = false;
+        }
+        simulationManager.destroyTarget();
+        $("#exceptionModal").modal("show");
+    }
+}
+
+function sendParams(params,type) {
+    connection.send(JSON.stringify({type:type,params:params}));
+}
+
+/**
+ * Disconnect from the server.
+ */
+function disconnect() {
+    log("disconnecting");
+    connection.close();
+    connection = null;
+}
+
+
+/**
+ * Requests the transfer of the actual data (for all the redshifts) from the server.
+ */
+function requestSimulationData() {
+    log("Requesting calculation result from server...");
+    if (!calculationRunning) {
+        connection.send(JSON.stringify({
+            type: "Start",
+            params: [],
+        }));
+        calculationRunning = true;
+        showActivityIndicator();
+    }
+}
+
+/**
+ * A simple rounding implementation since JavaScript doesn't provide a built-in
+ * solution.
+ * This will round the given number to a maximum number of decimal places (no trailing zeros).
+ *
+ * @param {number} num - The number to round
+ * @param {number} decimalPlaces - Maximum number of decimal places
+ * @return {number} rounding result
+ */
+function round(num, decimalPlaces) {
+    return num.toFixed(decimalPlaces).replace(/(\.)?0+$/, "");
+}
+
+/**
+ * Since the data transfer between server and client (in that direction) is the main
+ * bottleneck of the application, the data is mostly (except for plots, redshifts, ...)
+ * encoded in base64.
+ * This function serves the purpose of decing that data.
+ * The data is assumed to consist of 32-bit floats. Other data formats (e.g. 64-bit floats)
+ * would require a modification of this function.
+ *
+ * @param {string} b64 - base64 encoded data received from the server
+ * @return {Float32Array} The decoded data array
+ */
+function b64ToFloatArray(b64) {
+    var binary = window.atob(b64);
+    var dv = new DataView(new ArrayBuffer(4));
+    var resultLength = binary.length / 4;
+    var result = new Float32Array(resultLength);
+
+    for (var i = 0; i < resultLength; i++) {
+        var idx = 4 * i;
+        for (var offset = 0; offset < 4; offset++) {
+            dv.setUint8(offset, binary.charCodeAt(idx + offset));
+        }
+        result[i] = dv.getFloat32(0, true);
+    }
+
+    return result;
+}
+
+/**
+ * A data array (for a single frame) sent by the server has the following structure:
+ * 

+ * {
+ *  'd_g': <base64 encoded string>,
+ *  'd_b': <base64 encoded string>,
+ *  ...
+ * }
+ * 
+ * Hence, each field must be decoded individually, + * which is done using {@link module:RSI~b64ToFloatArray}. + * + *

+ * {
+ *  'd_g': <Float32Array>,
+ *  'd_b': <Float32Array>,
+ *  ...
+ * }
+ * 
+ * @param {Object} obj - base64 object as described above + * @return {Object} decoded object, as described above + */ +function decodeArray(obj) { + return Object.keys(obj).reduce(function(acc, key) { + acc[key] = b64ToFloatArray(obj[key]); + return acc; + }, {}); +} + +/** + * Toggles the camera mode between an orthographic and a perspective camera + */ +function toggleCameraMode() { + var aspect = $("#container").width() / $("#container").height(); + if (orthographicMode) { + console.log("Switching to perspective mode"); + camera = new THREE.PerspectiveCamera(FoV, aspect, 0.1, 10000); + controls.object = camera; + } + else { + console.log("Switching to orthographic mode"); + camera = new THREE.OrthographicCamera( + -500 * aspect, 500 * aspect, + 500, -500, + -10000, 10000 + ); + controls.object = camera; + } + + orthographicMode = !orthographicMode; +} + +/** + * Switches to so-called 'single mode', which, instead of displaying one quantity + * for multiple simulations side by side, displays all quantities for a + * single simulation side by side. + * In order to enter single mode, following steps will occur in this function: + *
    + *
  1. Enable single mode in the {@link SimulationManager} instance
  2. + *
  3. Remove the 'normal' plane group from the scene
  4. + *
  5. Add the single plane group to the scene
  6. + *
  7. Adapt the top navigation bar, i.e. add a return button and remove quantity selector
  8. + *
  9. Replot
  10. + *
+ * + * @param {number} simulationIndex - the index of the simulation to display in single mode + */ +function enterSingleMode(simulationIndex) { + console.assert(simulationIndex >= 0); + console.assert(simulationIndex < simulationManager.getSimulations().length); + + simulationManager.enableSingleMode(simulationIndex); + scene.remove(simulationManager.getGroup()); + scene.add(simulationManager.getSingleGroup()); + $("#exitSingleMode").show(); + $("#quantityDropdownWrapper").hide(); + $("#simulationListButton").hide(); + + plotTransferFunction(frame); + plotStatic(); +} + +/** + * The opposite of {@link module:RSI~enterSingleMode}. + * In order to exit single mode, following steps will occur in this function: + *
    + *
  1. Disable single mode in the {@link SimulationManager} instance
  2. + *
  3. Remove the single plane group from the scene
  4. + *
  5. Add the 'normal' plane group to the scene
  6. + *
  7. Adapt the top navigation bar back to its original state
  8. + *
  9. Replot
  10. + *
+ */ +function exitSingleMode() { + simulationManager.disableSingleMode(); + scene.remove(simulationManager.getSingleGroup()); + scene.add(simulationManager.getGroup()); + $("#exitSingleMode").hide(); + $("#quantityDropdownWrapper").show(); + $("#simulationListButton").show(); + + plotStatic(); + loadFrame(frame, true); +} + +/** + * Once data is received, this method is called. + * This function is responsible for decoding the received data using + * {@link module:RSI~b64ToFloatArray} and store the result using the + * {@link SimulationManager} instance. + * + * @param {Object} data - A data object as described in {@link module:RSI~b64ToFloatArray} + * @param {bool} initial - true if initial data, false otherwise + */ +function onData(data, initial) { + /** + * If initial data, store it in the simulationManager (instead of simulationManager.getTarget() + * as below in the else branch) and create new Simulation instance using simulationManager + */ + if (initial) { + var realArray = b64ToFloatArray(data.real); + var transferArray = b64ToFloatArray(data.transfer); + var fourierArray = new Float32Array(data.fourier); + + simulationManager.realInit = realArray; + simulationManager.transferInit = transferArray; + simulationManager.fourierInit = fourierArray; + + simulationManager.createSimulation(); + } else { + simulationManager.getTarget().addFrame( + decodeArray(data.real), + decodeArray(data.transfer), + decodeArray(data.fourier) + ); + } +} + + +/** + * Render an image of the specified simulation at a resolution specified by size. + * + * @param {number} simulationIndex - the index (with respect to the simulations array stored + * in the {@link SimulationManager} instance) of the simulation of which to render an image + * @param {number} size - side length in pixels of the image to render + * + * @return {Object} Canvas DOM element + */ +function renderImage(simulationIndex, size) { + var simulation = simulationManager.getSimulations()[simulationIndex]; + console.assert(simulation); + console.assert(simulation.mesh); + + var size = simulationManager.PLANE_SIZE / 2; + orthoCam = new THREE.OrthographicCamera(-size, size, size, -size, 0, 1000); + orthoCam.position.copy(simulation.mesh.position); + orthoCam.position.y = 500; // Lift camera above mesh + orthoCam.lookAt(simulation.mesh.position); + + imgRenderer.setSize(size, size); + imgRenderer.render(scene, orthoCam); + + // var image = new Image(); + // image.src = imgRenderer.domElement.toDataURL(); + + return imgRenderer.domElement; +} + +/** + * @callback gifProgressCallback + * @param {number} frame - number of currently rendered frame + * @param {number} frameCount - total number of all frames (rendered + not yet rendered) + */ + +/** + * @callback gifFinishCallback + * @param {blob} blob - blob of .gif + */ + +/** + * Renders a .gif of the specified simulation. + * + * @param {number} simulationIndex - the index (with respect to the simulations array stored + * in the {@link SimulationManager} instance) of the simulation of which to render the .gif + * @param {number} size - side length in pixels of the .gif to render + * @param {number} fps - frames per second + * @param {number} quality - quality of resulting .gif, corresponds to pixel sampling interval. + * Lower values are better, but also produce bigger files. + * @param {module:RSI~gifProgressCallback} progressCallback - progress callback + * @param {module:RSI~gifFinishCallback} finishCallback - finish callback + */ +function renderGIF(simulationIndex, size, fps, quality, progressCallback, finishCallback) { + var gif = new GIF({ + workers: 2, + quality: quality, + workerScript: "/static/js/gif.worker.js", + }); + + var previousFrame = frame; + + var frameCount = getLastFrame() + 1; + var delay = 1000.0 / fps; + + for (var i = 0; i < frameCount; ++i) { + loadFrame(i); + gif.addFrame(renderImage(simulationIndex, size), { + copy: true, + delay: delay + }); + if (progressCallback) { + progressCallback(i, frameCount); + } + } + progressCallback(frameCount, frameCount); + + if (finishCallback) { + gif.on('finished', finishCallback); + } + + gif.render(); + + loadFrame(previousFrame); +} + + +/** + * Gets called on close / loss of connection and displays a corresponding message to the user. + */ +function onClose() { + closed = true; + alert("Connection to server lost; Reload page to start a new session."); +} + +/** + * Initializes the quantity dropdown by assigning an event handler, which + * updates the currently active quantity and reloads the current frame in order + * for the change to take effect. + */ +function initQuantityDropdown() { + var dropDown = $("#quantity-dropdown"); + dropDown.children().click(function(e) { + dropDown.find(".active").removeClass("active"); + $(this).addClass("active"); + $("#quantity-dropdown-btn").html($(this).html()); + activeQuantity = $(this).attr("data-quantity"); + loadFrame(frame, true); + + e.preventDefault(); + }); +} + +/** + * Initializes the dropup color map selector by assigning an event listener + * which loads the appropriate texture using {@link SimulationManager#setColorMap}. + */ +function initColorMapDropdown() { + var menu = $("#colormap-selector-menu"); + menu.find(".colormap-selector-item").click(function(e) { + menu.find(".colormap-selector-item.active").removeClass("active"); + $(this).addClass("active"); + $("#colormap-selector-button") .css({ + "background": "url(" + $(this).find("img").attr("src") + ")", + "background-size": "contain" + }); + + var texture = new THREE.Texture($(this).find("img").get(0)); + texture.needsUpdate = true; + simulationManager.setColorMap(texture); + + e.preventDefault(); + }); + + menu.find(":contains(default)").click(); +} + +/** + * Initializes the checkbox which toggles between stopping the playback + * at decoupling and today. + */ +function initRedshiftEndToggle() { + $("#redshift-end-toggle").change(function(e) { + stopAtDecoupling = !$(this).get(0).checked; + console.log("Stop at decoupling? " + stopAtDecoupling); + var lastFrame = getLastFrame(); + if (frame > lastFrame) { + loadFrame(lastFrame); + } + updateTimeline(lastFrame); + }); +} + +/** + * Initializes the .gif creation dialog + */ +function initGifDialog() { + log("Initializing .gif dialog"); + var modal = $("#gifExportModal"); + modal.on("show.bs.modal", function() { + $(this).find("#gifExportProgressContainer").hide(); + $(this).find("#gifExportResultContainer").hide(); + }); + $("#gifExportCreateBtn").click(function() { + onCreateGif(modal.data("simulationIndex")); + }); +} + +/** + * Initializes the image creation dialog + */ +function initImgDialog() { + var modal = $("#imgExportModal"); + modal.on("show.bs.modal", function() { + $(this).find("#imgExportResultContainer").hide(); + }); + $("#imgExportCreateBtn").click(function() { + $("#imgExportResultContainer").show(); + + // Hide grids if necessary + var gridShown = parameterGui.config.showGrid; + parameterGui.config.showGrid = $("#imgExportGrid").is(":checked"); + simulationManager.updateGrids(); + + var canvas = renderImage(modal.data("simulationIndex"), $("#imgExportSize").val()); + $("#imgExportResultImage").attr("src", canvas.toDataURL()); + + // Re-show grids if necessary + parameterGui.config.showGrid = gridShown; + simulationManager.updateGrids(); + }); +} + +/** + * Callback function which is called from the {@link SimulationList} instance once + * the user presses the 'Create .gif' button there. + * + * @param {number} simulationIndex - index of simulation to render as .gif + */ +function onCreateGif(simulationIndex) { + log("Creating gif for simulation #" + simulationIndex); + var size = $("#gifExportSize").val(); + var fps = $("#gifExportFPS").val(); + parameterGui.config.showGrid = $("#gifExportGrid").is(":checked"); + simulationManager.updateGrids(); + + var quality = $("#gifExportQuality").val(); + + $("#gifExportProgressContainer").show(); + $("#gifExportResultContainer").hide(); + + renderGIF(simulationIndex, size, fps, quality, gifProgressCallback, gifFinishCallback); +} + +/** + * Implements {@link module:RSI~gifProgressCallback} and is called after every frame + * rendered to the .gif. + * Uses this data to update the progress bar in the .gif creation dialog. + * + * @param {number} frame - number of currently rendered frame + * @param {number} frameCount - total number of all frames (rendered + not yet rendered) + */ +function gifProgressCallback(frame, frameCount) { + var progressPercent = Math.floor(frame / frameCount * 100) + "%"; + $("#gifExportProgressBar").css({width: progressPercent}); + if (frame == frameCount) { + $("#gifExportProgressBar").html("Finalizing .gif…"); + } else { + $("#gifExportProgressBar").text("Rendering Frame " + frame + "/" + frameCount); + } + +} + +/** + * Implements {@link module:RSI~gifFinishCallback} and is called once the .gif has been rendered. + * Proceeds to reset the progress bar in the .gif creation dialog and displays the resulting + * .gif. + * + * @param {blob} blob - data blob of .gif + */ +function gifFinishCallback(blob) { + $("#gifExportProgressBar") .css({width: 0}) + $("#gifExportProgressContainer").hide(); + $("#gifExportResultContainer").show(); + $("#gifExportResultImage").attr("src", URL.createObjectURL(blob)); + $("#gifExportResultMessage").alert(); +} + +/** + * Toggles the visibility of the plot panel. + */ +function togglePlotWindow() { + plotWindowVisible = !plotWindowVisible; + $("#plotWindowWrapper").toggleClass("plotWindowWrapperVisible").toggleClass("plotWindowWrapperHidden"); + $("#plotWindowWrapper").find("div").toggleClass("plotWindowVisible").toggleClass("plotWindowHidden"); + $("#plotWindowToggleIcon").toggleClass("oi-caret-top").toggleClass("oi-caret-bottom"); + + if (plotWindowVisible) { + if (simulationManager.getActive().length == 0) { + initClPlot(); + initTransferPlot(); + } else { + plotStatic(); + plotTransferFunction(frame, true); + } + } +} + +/** + * Initializes the button used to collapse the plot panel. + */ +function initPlotCollapseButton() { + $("#plotWindowToggle").click(function(e) { + togglePlotWindow(); + }); +} + + +/* SECTION: PLOT INITIALIZATION */ + +/** + * Initialize transfer function plot. + */ +function initTransferPlot() { + var initialOptions = Object.assign({}, transferPlotOptions); + initialOptions.xaxis.min = 1e-4; + initialOptions.xaxis.max = 10; + transferFunctionPlot = $.plot($("#transferFunctionPlot"), [{shadowSize: 0, color: colors[0], data: []}], initialOptions); +} + +/** + * Initialize Cl's plot. + */ +function initClPlot() { + var initialOptions = Object.assign({}, tClPlotOptions); + initialOptions.xaxis.min = 2; + initialOptions.xaxis.max = 2500; + $.plot($("#tClPlot"), [{shadowSize: 0, color: colors[0], data: []}], initialOptions); +} + +/** + * Initialize matter spectrum plot. + */ +function initmPkPlot() { + var initialOptions = Object.assign({}, mPkPlotOptions); + initialOptions.xaxis.min = 1e-3; + initialOptions.xaxis.max = 10; + $.plot($("#mPkPlot"), [{shadowSize: 0, data: []}], initialOptions); +} +/* END OF PLOT INITIALIZATION */ + +/** + * Callback to be called once cosmological parameters have been set + * @callback cosmologicalParametersSetCallback + * @param {module:paramGui~CosmoParams} cosmoParamsInstance + * @param {Object} serializedMessage - message to be sent to the server +*/ + +/** + * Callback to be called once initial condition has been set + * @callback initialConditionSetCallback + * @param {module:paramGui~ParamSet} paramSet +*/ + +/** + * Called once user presses button to generate initial state. + * Obtains the JSON representation and sends it to the server. + * Since it isn't particularly enlightening to compare simulations (resulting from different + * cosmological parameters) for different initial state seeds, this also cleans up + * any existing simulations. + * + * @param {module:paramGui~ParamSet} paramSet - initial condition parameter set + */ +function onInitialConditionSet(paramSet) { + if (!calculationRunning) { + if (simulationManager.singleMode) { + exitSingleMode(); + } + log("Sending initial parameters to server."); + var serializedParamSet = paramSet.serializeInitial(); + var paramString = JSON.stringify(serializedParamSet); + log(paramString); + calculationRunning = true; + showActivityIndicator(); + connection.send(paramString); + + simulationManager.deleteAll(); + simuTable.clear(); + + var realScale = serializedParamSet.params.xScale / simulationManager.GRID_DIVISIONS; + $("#displayRealScale").text(round(realScale, 1) + " Mpc"); + + receivedInitial = false; + } +} + +/** + * Called once the user presses the button which sets the cosmological parameters. + *
+ * Implements {@link module:RSI~cosmologicalParametersSetCallback}. + *
+ * If an initial condition has been set, the following steps will occur: + * First, this function checks using {@link SimulationManager~wasAlreadySimulated} + * whether a simulation set for that particular set of cosmological parameters has already + * been computed. + * If so, a message indicating that will be displayed. + * If not, the parameters (which have already been encoded in the appropriate structure + * by {@link module:paramGui~CosmoParams}) will be sent to the server and the progress + * modal will be displayed. + * Also, a new simulation will be created and a copy of the parameters will be stored + * in it. + * + * @param {module:paramGui~CosmoParams} cosmoParamsInstance + * @param {Object} serializedMessage - message to be sent to the server + */ +function onCosmologicalParamsSet(cosmoParamsInstance, serializedMessage) { + if (!initialSet) { + alert("Initial condition has to be set!"); + return; + } + if (!calculationRunning) { + log("Sending cosmological parameters to server."); + + var alreadySimulated = simulationManager.wasAlreadySimulated(cosmoParamsInstance.parameters); + log("Already simulated? " + alreadySimulated); + if (!alreadySimulated) { + calculationRunning = true; + showActivityIndicator(); + connection.send(JSON.stringify(serializedMessage)); + + $("#simulationProgressModal").modal("show"); + $("#simulationProgressInfo").text("Running calculation... (this may take some time depending on the choice of parameters!)"); + $("#simulationProgressBar").css({width: "0%"}); + $("#simulationProgressBar").text("0%"); + + if (!simulationManager.hasTarget()) { + simulationManager.createSimulation(); + } + /** + * At this point, it is absolutely necessary to create a copy of the + * parameters. If not, any change by the user in the parameters in the + * control panel will be reflected by the parameters stored in the simulation + * object, since both references refer to the same object. + * This results in simulationManager.wasAlreadySimulated always returning + * true and hence preventing any further simulation runs. + */ + var simParams = Object.assign({}, cosmoParamsInstance.parameters); + simulationManager.getTarget().setParameters(simParams); + } else { + $("#alreadySimulatedModal").modal("show"); + } + } +} + +/** + * Loads the given frame. + * + * @param {number} f - frame to load + * @param {bool} replot - if true, fully replot (which includes recalculating + * data limits, axis labels, etc.). otherwise, just swap + * out the data (faster, but this effect decreases with data + * size, since then most of the CPU time will be spent on plotting + * the curve anyways) + */ +function loadFrame(f, replot) { + frame = f; + simulationManager.loadFrame(activeQuantity, f); + + plotTransferFunctionIfVisible(f, replot); + + if (f > 0) + $("#DisplayRedshift").text(round(redshift[f], REDSHIFT_ROUND)); + else if (f == 0) + $("#DisplayRedshift").text(redshift[0]); + + var frameCount = simulationManager.getFrameCount(); + // var percentage = (frameCount > 1) ? frame / (frameCount - 1) : frame / frameCount; + updateTimeline(getLastFrame()); +} + +/** + * Plots the transfer function for the given frame if and only if the plot window + * is visible. + * + * @param {number} f - frame number + * @param {bool} replot - same as in {@link module:RSI~loadFrame} + */ +function plotTransferFunctionIfVisible(f, replot) { + if (plotWindowVisible) { + plotTransferFunction(f, replot); + } +} + +/** + * Finds the minimum and maximum of all transfer functions + * over all frames. + * + * @return {number[]} tuple containing minimum and maximum, in that order + */ +function findTransferFunctionMinMax() { + var min = Infinity, max = -Infinity; + var frameCount = simulationManager.getFrameCount(); + for (var _f = 0; _f < frameCount; ++_f) { + var transferFunctions = simulationManager.getTransferData(activeQuantity, _f); + for (var i = 0; i < transferFunctions.length; ++i) { + var transferFunction = transferFunctions[i]; + var _min = Math.min.apply(null, transferFunction); + var _max = Math.max.apply(null, transferFunction); + + min = Math.min(min, _min); + max = Math.max(max, _max); + } + } + + return [min, max]; +} + +/** + * Plot transfer function in non-single mode, i.e. one quantity but for + * multiple simulations. + * + * @param {number} f - frame number + * @param {bool} replot - same as in {@link module:RSI~loadFrame} + */ +function plotTransferFunctionMulti(f, replot) { + // Transfer function + var tData = simulationManager.getTransferData(activeQuantity, f); + var activeIndices = simulationManager.getActive(); + var datas = []; + for (var i = 0; i < activeIndices.length; ++i) { + var color = colors[activeIndices[i] % colors.length]; + var data = zip(kRange, tData[i]); + datas.push({ + shadowSize: 0, + color: color, + data: data, + }); + } + + transferFunctionPlot = $.plot($("#transferFunctionPlot"), datas, transferPlotOptions); +} + +/** + * Plot transfer function in single mode. + * + * @param {number} f - frame number + */ +function plotTransferFunctionSingle(f) { + var replot = true; + var datas = []; + // Transfer function + for (var i = 0; i < QUANTITIES.length; ++i) { + var tData = simulationManager.getTransferDataOfSingle(QUANTITIES[i], f); + var color = colors[i % colors.length]; + var data = zip(kRange, tData); + datas.push({ + shadowSize: 0, + color: color, + data: data, + }); + } + + transferFunctionPlot = $.plot($("#transferFunctionPlot"), datas, transferPlotOptions); + return; + + if (replot) { + } + else { + transferFunctionPlot.setData(datas); + transferFunctionPlot.draw(); + } +} + +/** + * Plot the transfer function, automatically in the correct mode (single vs. non-single). + * + * @param {number} f - frame number + * @param {bool} replot - same as in {@link module:RSI~loadFrame} + */ +function plotTransferFunction(f, replot) { + if (simulationManager.singleMode) { + plotTransferFunctionSingle(f); + } else { + plotTransferFunctionMulti(f, replot); + } +} + +/******************************************************************************* +* Cl plotting +*******************************************************************************/ + +/** + * Plot Cl spectrum in non-single mode. + */ +function plotClsMulti() { + var plotDatas = []; + + simulationManager.forEachActive(function(index, simulation) { + var dataItem = { + shadowSize: 0, + color: colors[index % colors.length], + data: zip(simulation.Cls.l, simulation.Cls.tCl), + } + plotDatas.push(dataItem); + }); + + $.plot($("#tClPlot"), plotDatas, tClPlotOptions); +} + +/** + * Plot Cl spectrum in single mode. + */ +function plotClsSingle() { + var tuple = simulationManager.getSingleSimulation(); + var singleIndex = tuple[0]; + var singleSimulation = tuple[1]; + + var plotData = { + shadowSize: 0, + color: colors[singleIndex % colors.length], + data: zip(singleSimulation.Cls.l, singleSimulation.Cls.tCl) + }; + $.plot($("#tClPlot"), [plotData], tClPlotOptions); +} + +/******************************************************************************* +* mPk plotting +*******************************************************************************/ + +/** + * Plot matter spectrum in non-single mode. + */ +function plotmPkMulti() { + var plotDatas = []; + + simulationManager.forEachActive(function(index, simulation) { + var dataItem = { + shadowSize: 0, + color: colors[index % colors.length], + data: zip(simulation.mPk.kh, simulation.mPk.Pkh), + } + plotDatas.push(dataItem); + }); + + $.plot($("#mPkPlot"), plotDatas, mPkPlotOptions); +} + +/** + * Plot matter spectrum in single mode. + */ +function plotmPkSingle() { + var tuple = simulationManager.getSingleSimulation(); + var singleIndex = tuple[0]; + var singleSimulation = tuple[1]; + + var plotData = { + shadowSize: 0, + color: colors[singleIndex % colors.length], + data: zip(singleSimulation.mPk.kh, singleSimulation.mPk.Pkh) + }; + $.plot($("#mPkPlot"), [plotData], mPkPlotOptions); +} + +/******************************************************************************* +* Static plotting (i.e. Cl's and mPk) +*******************************************************************************/ + +/** + * Plot the static plots (Cl's and matter spectrum) in the appropriate mode + */ +function plotStatic() { + if (simulationManager.singleMode) { + plotStaticSingle(); + } else { + plotStaticMulti(); + } +} + +/** + * Plot the static plots (Cl's and matter spectrum) only if the plot panel + * is visible. + */ +function plotStaticIfVisible() { + if (plotWindowVisible) + plotStatic(); +} + +/** + * Plot Cl's and matter spectrum in non-single mode. + */ +function plotStaticMulti() { + plotClsMulti(); + plotmPkMulti(); +} + +/** + * Plot Cl's and matter spectrum in single mode. + */ +function plotStaticSingle() { + plotClsSingle(); + plotmPkSingle(); +} + + +/** + * Analogon of the zip function in python. Takes two arrays [a1, a2, a3, ...] and + * [b1, b2, b3, ...] and returns [[a1, b1], [a2, b2], [a3, b3], ...]. + * Required for plotting, as flot.js requires its data to be specified in a 'zipped' + * format. + * + * @param {Object[]} a - first array + * @param {Object[]} b - second array + * + * @return {Array.>}} the zipped array + */ +function zip(a, b) { + var result = []; + var limit = Math.min(a.length, b.length); + for (var i = 0; i < limit; ++i) { + result.push([a[i], b[i]]); + } + return result; +} + +/* + * Player Panel Callbacks + */ + +/** + * Implements {@link PlayerPanel~playPauseCallback}. + */ +function onPlayPause(playing) { + animationRunning = playing; + if (playing) { + if (frame == getLastFrame()) { + frame = 0; + } + } else { + } +} + +/** + * Implements {@link PlayerPanel~scrubCallback}. + */ +function scrubCallback(progress) { + var f = Math.floor((getLastFrame() + 1) * progress); + f = Math.min(getLastFrame(), f); + loadFrame(f); +} + +/** + * Implements {@link PlayerPanel~backFrameCallback}. + */ +function onBackFrame() { + if (frame > 0 && receivedInitial) { + loadFrame(frame - 1); + } +} + +/** + * Implements {@link PlayerPanel~forwardFrameCallback}. + */ +function onForwardFrame() { + if (frame < getLastFrame()) + loadFrame(frame + 1); +} + +/** + * Implements {@link PlayerPanel~toStartCallback}. + */ +function onToStart() { + frame = 0; + loadFrame(frame); +} + +/** + * Implements {@link PlayerPanel~toEndCallback}. + */ +function onToEnd() { + if (receivedInitial) { + loadFrame(getLastFrame()); + } +} + +/** + * Returns the number of the last frame to be displayed. + * If {@link module:RSI~stopAtDecoupling} is true, return the last frame before + * decoupling, otherwise the actual last frame stored. + * + * @return {number} number of last frame + */ +function getLastFrame() { + var frameCount = simulationManager.getFrameCount(); + return lastFrame = (stopAtDecoupling) ? Math.min(decouplingFrame, frameCount - 1) : frameCount - 1; +} + + +/** + * Initializes all components. + */ +function init() { + hideActivityIndicator(); + + window.addEventListener("mousemove", onMouseMove, false); + + parameterGui = new ParameterGui(onInitialConditionSet, onCosmologicalParamsSet); + + simulationManager = new SimulationManager(cmapTexture); + playerPanel = new PlayerPanel( + onPlayPause, + onBackFrame, + onForwardFrame, + onToStart, + onToEnd, + function(e) {}, + scrubCallback + ); + + initQuantityDropdown(); + initColorMapDropdown(); + initGifDialog(); + initImgDialog(); + + initTransferPlot(); + initClPlot(); + initmPkPlot(); + + initPlotCollapseButton(); + + initRedshiftEndToggle(); + + /////////// + // Scene // + /////////// + + container = document.getElementById("container"); + + scene = new THREE.Scene(); + scene.add(simulationManager.getGroup()); + scene.add(simulationManager.getActiveBoxes()); + // scene.add(simulationManager.getCollisionGroup()); + scene.background = new THREE.Color("#4a4a4a"); + + var width = window.innerWidth; + var height = window.innerHeight; + var aspect = width / height; // view aspect ratio + + //////////// + // Camera // + //////////// + + camera = new THREE.PerspectiveCamera(FoV, aspect, 0.1, 10000); + + camera.position.y = 300; + camera.position.z = 500; + camera.position.x = -50; + camera.lookAt(scene.position); + + + ////////////// + // Renderer // + ////////////// + renderer = new THREE.WebGLRenderer({antialias: true}); + renderer.setClearColor(0x53504d); + renderer.setSize(window.innerWidth, window.innerHeight); + renderer.setPixelRatio(window.devicePixelRatio); + renderer.autoClear = false; + + container.innerHTML = ""; + container.appendChild(renderer.domElement); + + ////////////// + // Controls // + ////////////// + controls = new THREE.OrbitControls(camera, renderer.domElement); + + controls.rotateSpeed = 1.0; + controls.zoomSpeed = 3; + controls.panSpeed = 0.8; + + controls.noZoom = false; + controls.noPan = false; + + controls.maxPolarAngle = Math.PI/2; + controls.minDistance = 100; + controls.maxDistance = 10000; + + controls.staticMoving = true; + controls.dynamicDampingFactor = 0.3; + + controls.keys = [65, 83, 68]; + + controls.addEventListener('change', render); + + /****************************************************************** + * SIMULATION TABLE + ******************************************************************/ + + var deleteCallback = function(index) { + simulationManager.delete(index); + simuTable.clear(); + simuTable.populate(simulationManager.getSimulations(), simulationManager.getActive()); + plotStaticIfVisible(); + loadFrame(frame, true); + }; + + var activateCallback = function(index) { + simulationManager.activate(index); + loadFrame(frame, true); + plotStaticIfVisible(); + }; + + var deactivateCallback = function(index) { + simulationManager.deactivate(index); + loadFrame(frame, true); + plotStaticIfVisible(); + }; + + var imageCallback = function(index) { + if (simulationManager.isActive(index)) { + $("#simulationListModal").modal("hide"); + $("#imgExportModal").data("simulationIndex", index).modal("show"); + } + else { + alert("To create an image, the selected simulation needs to be active."); + } + }; + + var gifCallback = function(index) { + if (simulationManager.isActive(index)) { + $("#simulationListModal").modal("hide"); + $("#gifExportModal").data("simulationIndex", index).modal("show"); + } else { + alert("To create a .gif, the selected simulation needs to be active."); + } + // renderGIF(index); + }; + + var singleModeCallback = function(index) { + $("#simulationListModal").modal("hide"); + enterSingleMode(index); + }; + + var focusCameraCallback = function(index) { + if (simulationManager.isActive(index)) { + controls.center.copy(simulationManager.getSimulations()[index].mesh.position); + controls.rotateUp(controls.getPolarAngle()); + controls.rotateLeft(controls.getAzimuthalAngle()); + $("#simulationListModal").modal("hide"); + } else { + alert("To focus the camera on the selected simulation, it needs to be active."); + } + }; + + var loadParamCallback = function(index) { + var parameters = simulationManager.getSimulations()[index].params; + parameterGui.loadCosmoParameters(parameters); + }; + + simuTable = new SimuTable(deleteCallback, activateCallback, deactivateCallback, + gifCallback, imageCallback, singleModeCallback, focusCameraCallback, + loadParamCallback); + + simuTable.createHeader(); + /****************************************************************** + * END OF SIMULATION TABLE + ******************************************************************/ + + // stats = new Stats(); + // stats.domElement.style.position = 'absolute'; + // stats.domElement.style.bottom = '0px'; + // stats.domElement.style.zIndex = 100; + // container.appendChild(stats.domElement); + + window.addEventListener('resize', onWindowResize, false); +} + +/** + * Shows the activity indicator. + */ +function showActivityIndicator() { + $("#activityIndicator").removeClass("activityIndicator-inactive").addClass("activityIndicator-active"); +} + +/** + * Hides the activity indicator. + */ +function hideActivityIndicator() { + $("#activityIndicator").addClass("activityIndicator-inactive").removeClass("activityIndicator-active"); +} + +/** + * Called when the window is resized to update the renderer (which requires + * the window size to render) and the camera (which requires the aspect ratio + * of the window to construct its projection matrix). + */ +function onWindowResize() { + camera.aspect = window.innerWidth / window.innerHeight; + camera.updateProjectionMatrix(); + + renderer.setSize(window.innerWidth, window.innerHeight); + + // Re-read the width of the time line once window refreshes + playerPanel.timeline.refresh(); +} + +/** + * This function is called every time an update (such as an advance in frame, etc.) + * is needed. + * It handles the logic required to play back the animation, such as advancing, + * repeating (if repeat is enabled), pausing and continuing the playback, etc. + * The rate at which this function is called is determined by the FPS. + */ +function step() { + var totalFrames = simulationManager.getFrameCount(); + var lastFrame = getLastFrame(); + if(animationRunning) { + if(frame < lastFrame) { + loadFrame(++frame); + } + else if (frame == lastFrame) { + if (playerPanel.repeat) { + frame = 1; + loadFrame(frame); + } else + playerPanel.pause(); + } + } + setTimeout(step, 1000 / parameterGui.config.animationSpeed); +} + +/** + * Positions the 'scrubber' of the playback timeline at {@link module:RSI~frame} + * given the last frame position. + * + * @param {number} lastFrame - index of last frame + */ +function updateTimeline(lastFrame) { + playerPanel.timeline.scrubTo(frame / lastFrame); +} + + +/** + * Function that is called on every frame of the main loop. + */ +function animate() { + requestAnimationFrame(animate); + controls.update(); + + render(); +} + +/** + * Rendering function, called on every frame of the main loop via + * {@link module:RSI~animate}. + * On each frame, this renders the scene and updates the raycaster. + * Then determines over which plane (if at all) the mouse hovers + * and instructs the {@link SimulationManager} instance to highlight it. + */ +function render() { + raycaster.setFromCamera(mouse, camera); + simulationManager.mousePick(raycaster); + + // renderer.clear(); + renderer.render(scene, camera); + // renderer.clearDepth(); + // stats.update(); +} diff --git a/class/RealSpaceInterface/static/js/gif.js b/class/RealSpaceInterface/static/js/gif.js new file mode 100644 index 00000000..2e4d2042 --- /dev/null +++ b/class/RealSpaceInterface/static/js/gif.js @@ -0,0 +1,3 @@ +// gif.js 0.2.0 - https://github.com/jnordberg/gif.js +(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.GIF=f()}})(function(){var define,module,exports;return function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o0&&this._events[type].length>m){this._events[type].warned=true;console.error("(node) warning: possible EventEmitter memory "+"leak detected. %d listeners added. "+"Use emitter.setMaxListeners() to increase limit.",this._events[type].length);if(typeof console.trace==="function"){console.trace()}}}return this};EventEmitter.prototype.on=EventEmitter.prototype.addListener;EventEmitter.prototype.once=function(type,listener){if(!isFunction(listener))throw TypeError("listener must be a function");var fired=false;function g(){this.removeListener(type,g);if(!fired){fired=true;listener.apply(this,arguments)}}g.listener=listener;this.on(type,g);return this};EventEmitter.prototype.removeListener=function(type,listener){var list,position,length,i;if(!isFunction(listener))throw TypeError("listener must be a function");if(!this._events||!this._events[type])return this;list=this._events[type];length=list.length;position=-1;if(list===listener||isFunction(list.listener)&&list.listener===listener){delete this._events[type];if(this._events.removeListener)this.emit("removeListener",type,listener)}else if(isObject(list)){for(i=length;i-- >0;){if(list[i]===listener||list[i].listener&&list[i].listener===listener){position=i;break}}if(position<0)return this;if(list.length===1){list.length=0;delete this._events[type]}else{list.splice(position,1)}if(this._events.removeListener)this.emit("removeListener",type,listener)}return this};EventEmitter.prototype.removeAllListeners=function(type){var key,listeners;if(!this._events)return this;if(!this._events.removeListener){if(arguments.length===0)this._events={};else if(this._events[type])delete this._events[type];return this}if(arguments.length===0){for(key in this._events){if(key==="removeListener")continue;this.removeAllListeners(key)}this.removeAllListeners("removeListener");this._events={};return this}listeners=this._events[type];if(isFunction(listeners)){this.removeListener(type,listeners)}else if(listeners){while(listeners.length)this.removeListener(type,listeners[listeners.length-1])}delete this._events[type];return this};EventEmitter.prototype.listeners=function(type){var ret;if(!this._events||!this._events[type])ret=[];else if(isFunction(this._events[type]))ret=[this._events[type]];else ret=this._events[type].slice();return ret};EventEmitter.prototype.listenerCount=function(type){if(this._events){var evlistener=this._events[type];if(isFunction(evlistener))return 1;else if(evlistener)return evlistener.length}return 0};EventEmitter.listenerCount=function(emitter,type){return emitter.listenerCount(type)};function isFunction(arg){return typeof arg==="function"}function isNumber(arg){return typeof arg==="number"}function isObject(arg){return typeof arg==="object"&&arg!==null}function isUndefined(arg){return arg===void 0}},{}],2:[function(require,module,exports){var UA,browser,mode,platform,ua;ua=navigator.userAgent.toLowerCase();platform=navigator.platform.toLowerCase();UA=ua.match(/(opera|ie|firefox|chrome|version)[\s\/:]([\w\d\.]+)?.*?(safari|version[\s\/:]([\w\d\.]+)|$)/)||[null,"unknown",0];mode=UA[1]==="ie"&&document.documentMode;browser={name:UA[1]==="version"?UA[3]:UA[1],version:mode||parseFloat(UA[1]==="opera"&&UA[4]?UA[4]:UA[2]),platform:{name:ua.match(/ip(?:ad|od|hone)/)?"ios":(ua.match(/(?:webos|android)/)||platform.match(/mac|win|linux/)||["other"])[0]}};browser[browser.name]=true;browser[browser.name+parseInt(browser.version,10)]=true;browser.platform[browser.platform.name]=true;module.exports=browser},{}],3:[function(require,module,exports){var EventEmitter,GIF,browser,extend=function(child,parent){for(var key in parent){if(hasProp.call(parent,key))child[key]=parent[key]}function ctor(){this.constructor=child}ctor.prototype=parent.prototype;child.prototype=new ctor;child.__super__=parent.prototype;return child},hasProp={}.hasOwnProperty,indexOf=[].indexOf||function(item){for(var i=0,l=this.length;iref;i=0<=ref?++j:--j){results.push(null)}return results}.call(this);numWorkers=this.spawnWorkers();if(this.options.globalPalette===true){this.renderNextFrame()}else{for(i=j=0,ref=numWorkers;0<=ref?jref;i=0<=ref?++j:--j){this.renderNextFrame()}}this.emit("start");return this.emit("progress",0)};GIF.prototype.abort=function(){var worker;while(true){worker=this.activeWorkers.shift();if(worker==null){break}this.log("killing active worker");worker.terminate()}this.running=false;return this.emit("abort")};GIF.prototype.spawnWorkers=function(){var j,numWorkers,ref,results;numWorkers=Math.min(this.options.workers,this.frames.length);(function(){results=[];for(var j=ref=this.freeWorkers.length;ref<=numWorkers?jnumWorkers;ref<=numWorkers?j++:j--){results.push(j)}return results}).apply(this).forEach(function(_this){return function(i){var worker;_this.log("spawning worker "+i);worker=new Worker(_this.options.workerScript);worker.onmessage=function(event){_this.activeWorkers.splice(_this.activeWorkers.indexOf(worker),1);_this.freeWorkers.push(worker);return _this.frameFinished(event.data)};return _this.freeWorkers.push(worker)}}(this));return numWorkers};GIF.prototype.frameFinished=function(frame){var i,j,ref;this.log("frame "+frame.index+" finished - "+this.activeWorkers.length+" active");this.finishedFrames++;this.emit("progress",this.finishedFrames/this.frames.length);this.imageParts[frame.index]=frame;if(this.options.globalPalette===true){this.options.globalPalette=frame.globalPalette;this.log("global palette analyzed");if(this.frames.length>2){for(i=j=1,ref=this.freeWorkers.length;1<=ref?jref;i=1<=ref?++j:--j){this.renderNextFrame()}}}if(indexOf.call(this.imageParts,null)>=0){return this.renderNextFrame()}else{return this.finishRendering()}};GIF.prototype.finishRendering=function(){var data,frame,i,image,j,k,l,len,len1,len2,len3,offset,page,ref,ref1,ref2;len=0;ref=this.imageParts;for(j=0,len1=ref.length;j=this.frames.length){return}frame=this.frames[this.nextFrame++];worker=this.freeWorkers.shift();task=this.getTask(frame);this.log("starting frame "+(task.index+1)+" of "+this.frames.length);this.activeWorkers.push(worker);return worker.postMessage(task)};GIF.prototype.getContextData=function(ctx){return ctx.getImageData(0,0,this.options.width,this.options.height).data};GIF.prototype.getImageData=function(image){var ctx;if(this._canvas==null){this._canvas=document.createElement("canvas");this._canvas.width=this.options.width;this._canvas.height=this.options.height}ctx=this._canvas.getContext("2d");ctx.setFill=this.options.background;ctx.fillRect(0,0,this.options.width,this.options.height);ctx.drawImage(image,0,0);return this.getContextData(ctx)};GIF.prototype.getTask=function(frame){var index,task;index=this.frames.indexOf(frame);task={index:index,last:index===this.frames.length-1,delay:frame.delay,transparent:frame.transparent,width:this.options.width,height:this.options.height,quality:this.options.quality,dither:this.options.dither,globalPalette:this.options.globalPalette,repeat:this.options.repeat,canTransfer:browser.name==="chrome"};if(frame.data!=null){task.data=frame.data}else if(frame.context!=null){task.data=this.getContextData(frame.context)}else if(frame.image!=null){task.data=this.getImageData(frame.image)}else{throw new Error("Invalid frame")}return task};GIF.prototype.log=function(){var args;args=1<=arguments.length?slice.call(arguments,0):[];if(!this.options.debug){return}return console.log.apply(console,args)};return GIF}(EventEmitter);module.exports=GIF},{"./browser.coffee":2,events:1}]},{},[3])(3)}); +//# sourceMappingURL=gif.js.map diff --git a/class/RealSpaceInterface/static/js/gif.worker.js b/class/RealSpaceInterface/static/js/gif.worker.js new file mode 100644 index 00000000..269624e6 --- /dev/null +++ b/class/RealSpaceInterface/static/js/gif.worker.js @@ -0,0 +1,3 @@ +// gif.worker.js 0.2.0 - https://github.com/jnordberg/gif.js +(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o=ByteArray.pageSize)this.newPage();this.pages[this.page][this.cursor++]=val};ByteArray.prototype.writeUTFBytes=function(string){for(var l=string.length,i=0;i=0)this.dispose=disposalCode};GIFEncoder.prototype.setRepeat=function(repeat){this.repeat=repeat};GIFEncoder.prototype.setTransparent=function(color){this.transparent=color};GIFEncoder.prototype.addFrame=function(imageData){this.image=imageData;this.colorTab=this.globalPalette&&this.globalPalette.slice?this.globalPalette:null;this.getImagePixels();this.analyzePixels();if(this.globalPalette===true)this.globalPalette=this.colorTab;if(this.firstFrame){this.writeLSD();this.writePalette();if(this.repeat>=0){this.writeNetscapeExt()}}this.writeGraphicCtrlExt();this.writeImageDesc();if(!this.firstFrame&&!this.globalPalette)this.writePalette();this.writePixels();this.firstFrame=false};GIFEncoder.prototype.finish=function(){this.out.writeByte(59)};GIFEncoder.prototype.setQuality=function(quality){if(quality<1)quality=1;this.sample=quality};GIFEncoder.prototype.setDither=function(dither){if(dither===true)dither="FloydSteinberg";this.dither=dither};GIFEncoder.prototype.setGlobalPalette=function(palette){this.globalPalette=palette};GIFEncoder.prototype.getGlobalPalette=function(){return this.globalPalette&&this.globalPalette.slice&&this.globalPalette.slice(0)||this.globalPalette};GIFEncoder.prototype.writeHeader=function(){this.out.writeUTFBytes("GIF89a")};GIFEncoder.prototype.analyzePixels=function(){if(!this.colorTab){this.neuQuant=new NeuQuant(this.pixels,this.sample);this.neuQuant.buildColormap();this.colorTab=this.neuQuant.getColormap()}if(this.dither){this.ditherPixels(this.dither.replace("-serpentine",""),this.dither.match(/-serpentine/)!==null)}else{this.indexPixels()}this.pixels=null;this.colorDepth=8;this.palSize=7;if(this.transparent!==null){this.transIndex=this.findClosest(this.transparent,true)}};GIFEncoder.prototype.indexPixels=function(imgq){var nPix=this.pixels.length/3;this.indexedPixels=new Uint8Array(nPix);var k=0;for(var j=0;j=0&&x1+x=0&&y1+y>16,(c&65280)>>8,c&255,used)};GIFEncoder.prototype.findClosestRGB=function(r,g,b,used){if(this.colorTab===null)return-1;if(this.neuQuant&&!used){return this.neuQuant.lookupRGB(r,g,b)}var c=b|g<<8|r<<16;var minpos=0;var dmin=256*256*256;var len=this.colorTab.length;for(var i=0,index=0;i=0){disp=dispose&7}disp<<=2;this.out.writeByte(0|disp|0|transp);this.writeShort(this.delay);this.out.writeByte(this.transIndex);this.out.writeByte(0)};GIFEncoder.prototype.writeImageDesc=function(){this.out.writeByte(44);this.writeShort(0);this.writeShort(0);this.writeShort(this.width);this.writeShort(this.height);if(this.firstFrame||this.globalPalette){this.out.writeByte(0)}else{this.out.writeByte(128|0|0|0|this.palSize)}};GIFEncoder.prototype.writeLSD=function(){this.writeShort(this.width);this.writeShort(this.height);this.out.writeByte(128|112|0|this.palSize);this.out.writeByte(0);this.out.writeByte(0)};GIFEncoder.prototype.writeNetscapeExt=function(){this.out.writeByte(33);this.out.writeByte(255);this.out.writeByte(11);this.out.writeUTFBytes("NETSCAPE2.0");this.out.writeByte(3);this.out.writeByte(1);this.writeShort(this.repeat);this.out.writeByte(0)};GIFEncoder.prototype.writePalette=function(){this.out.writeBytes(this.colorTab);var n=3*256-this.colorTab.length;for(var i=0;i>8&255)};GIFEncoder.prototype.writePixels=function(){var enc=new LZWEncoder(this.width,this.height,this.indexedPixels,this.colorDepth);enc.encode(this.out)};GIFEncoder.prototype.stream=function(){return this.out};module.exports=GIFEncoder},{"./LZWEncoder.js":2,"./TypedNeuQuant.js":3}],2:[function(require,module,exports){var EOF=-1;var BITS=12;var HSIZE=5003;var masks=[0,1,3,7,15,31,63,127,255,511,1023,2047,4095,8191,16383,32767,65535];function LZWEncoder(width,height,pixels,colorDepth){var initCodeSize=Math.max(2,colorDepth);var accum=new Uint8Array(256);var htab=new Int32Array(HSIZE);var codetab=new Int32Array(HSIZE);var cur_accum,cur_bits=0;var a_count;var free_ent=0;var maxcode;var clear_flg=false;var g_init_bits,ClearCode,EOFCode;function char_out(c,outs){accum[a_count++]=c;if(a_count>=254)flush_char(outs)}function cl_block(outs){cl_hash(HSIZE);free_ent=ClearCode+2;clear_flg=true;output(ClearCode,outs)}function cl_hash(hsize){for(var i=0;i=0){disp=hsize_reg-i;if(i===0)disp=1;do{if((i-=disp)<0)i+=hsize_reg;if(htab[i]===fcode){ent=codetab[i];continue outer_loop}}while(htab[i]>=0)}output(ent,outs);ent=c;if(free_ent<1<0){outs.writeByte(a_count);outs.writeBytes(accum,0,a_count);a_count=0}}function MAXCODE(n_bits){return(1<0)cur_accum|=code<=8){char_out(cur_accum&255,outs);cur_accum>>=8;cur_bits-=8}if(free_ent>maxcode||clear_flg){if(clear_flg){maxcode=MAXCODE(n_bits=g_init_bits);clear_flg=false}else{++n_bits;if(n_bits==BITS)maxcode=1<0){char_out(cur_accum&255,outs);cur_accum>>=8;cur_bits-=8}flush_char(outs)}}this.encode=encode}module.exports=LZWEncoder},{}],3:[function(require,module,exports){var ncycles=100;var netsize=256;var maxnetpos=netsize-1;var netbiasshift=4;var intbiasshift=16;var intbias=1<>betashift;var betagamma=intbias<>3;var radiusbiasshift=6;var radiusbias=1<>3);var i,v;for(i=0;i>=netbiasshift;network[i][1]>>=netbiasshift;network[i][2]>>=netbiasshift;network[i][3]=i}}function altersingle(alpha,i,b,g,r){network[i][0]-=alpha*(network[i][0]-b)/initalpha;network[i][1]-=alpha*(network[i][1]-g)/initalpha;network[i][2]-=alpha*(network[i][2]-r)/initalpha}function alterneigh(radius,i,b,g,r){var lo=Math.abs(i-radius);var hi=Math.min(i+radius,netsize);var j=i+1;var k=i-1;var m=1;var p,a;while(jlo){a=radpower[m++];if(jlo){p=network[k--];p[0]-=a*(p[0]-b)/alpharadbias;p[1]-=a*(p[1]-g)/alpharadbias;p[2]-=a*(p[2]-r)/alpharadbias}}}function contest(b,g,r){var bestd=~(1<<31);var bestbiasd=bestd;var bestpos=-1;var bestbiaspos=bestpos;var i,n,dist,biasdist,betafreq;for(i=0;i>intbiasshift-netbiasshift);if(biasdist>betashift;freq[i]-=betafreq;bias[i]+=betafreq<>1;for(j=previouscol+1;j>1;for(j=previouscol+1;j<256;j++)netindex[j]=maxnetpos}function inxsearch(b,g,r){var a,p,dist;var bestd=1e3;var best=-1;var i=netindex[g];var j=i-1;while(i=0){if(i=bestd)i=netsize;else{i++;if(dist<0)dist=-dist;a=p[0]-b;if(a<0)a=-a;dist+=a;if(dist=0){p=network[j];dist=g-p[1];if(dist>=bestd)j=-1;else{j--;if(dist<0)dist=-dist;a=p[0]-b;if(a<0)a=-a;dist+=a;if(dist>radiusbiasshift;if(rad<=1)rad=0;for(i=0;i=lengthcount)pix-=lengthcount;i++;if(delta===0)delta=1;if(i%delta===0){alpha-=alpha/alphadec;radius-=radius/radiusdec;rad=radius>>radiusbiasshift;if(rad<=1)rad=0;for(j=0;j= this.count) { + throw "GridLayout error: index higher than maximum number of items in layout"; + } + + row = Math.floor(index / this.columns); + column = index % this.columns; + + return [row, column]; +} + +/** + * Get the actual position (in correct units of size) of + * the item defined by index. + */ +GridLayout.prototype.getWorldPosition = function(index) { + var pos = this.getPosition(index); + + var row = pos[0]; + var col = pos[1]; + + var x = 0, y = 0; + var dx = Math.floor(this.columns / 2); + var dy = Math.floor(this.rows / 2); + if (this.columns % 2 == 0) + dx -= 1 / 2; + if (this.rows % 2 == 0) + dy -= 1 / 2; + x = (col - dx) * (this.size + this.margin); + y = (row - dy) * (this.size + this.margin); + + return [x, y]; +} diff --git a/class/RealSpaceInterface/static/js/jquery.flot.axislabels.js b/class/RealSpaceInterface/static/js/jquery.flot.axislabels.js new file mode 100644 index 00000000..c4b3bca9 --- /dev/null +++ b/class/RealSpaceInterface/static/js/jquery.flot.axislabels.js @@ -0,0 +1,466 @@ +/* +Axis Labels Plugin for flot. +http://github.com/markrcote/flot-axislabels + +Original code is Copyright (c) 2010 Xuan Luo. +Original code was released under the GPLv3 license by Xuan Luo, September 2010. +Original code was rereleased under the MIT license by Xuan Luo, April 2012. + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +(function ($) { + var options = { + axisLabels: { + show: true + } + }; + + function canvasSupported() { + return !!document.createElement('canvas').getContext; + } + + function canvasTextSupported() { + if (!canvasSupported()) { + return false; + } + var dummy_canvas = document.createElement('canvas'); + var context = dummy_canvas.getContext('2d'); + return typeof context.fillText == 'function'; + } + + function css3TransitionSupported() { + var div = document.createElement('div'); + return typeof div.style.MozTransition != 'undefined' // Gecko + || typeof div.style.OTransition != 'undefined' // Opera + || typeof div.style.webkitTransition != 'undefined' // WebKit + || typeof div.style.transition != 'undefined'; + } + + + function AxisLabel(axisName, position, padding, plot, opts) { + this.axisName = axisName; + this.position = position; + this.padding = padding; + this.plot = plot; + this.opts = opts; + this.width = 0; + this.height = 0; + } + + AxisLabel.prototype.cleanup = function() { + }; + + + CanvasAxisLabel.prototype = new AxisLabel(); + CanvasAxisLabel.prototype.constructor = CanvasAxisLabel; + function CanvasAxisLabel(axisName, position, padding, plot, opts) { + AxisLabel.prototype.constructor.call(this, axisName, position, padding, + plot, opts); + } + + CanvasAxisLabel.prototype.calculateSize = function() { + if (!this.opts.axisLabelFontSizePixels) + this.opts.axisLabelFontSizePixels = 14; + if (!this.opts.axisLabelFontFamily) + this.opts.axisLabelFontFamily = 'sans-serif'; + + var textWidth = this.opts.axisLabelFontSizePixels + this.padding; + var textHeight = this.opts.axisLabelFontSizePixels + this.padding; + if (this.position == 'left' || this.position == 'right') { + this.width = this.opts.axisLabelFontSizePixels + this.padding; + this.height = 0; + } else { + this.width = 0; + this.height = this.opts.axisLabelFontSizePixels + this.padding; + } + }; + + CanvasAxisLabel.prototype.draw = function(box) { + if (!this.opts.axisLabelColour) + this.opts.axisLabelColour = 'black'; + var ctx = this.plot.getCanvas().getContext('2d'); + ctx.save(); + ctx.font = this.opts.axisLabelFontSizePixels + 'px ' + + this.opts.axisLabelFontFamily; + ctx.fillStyle = this.opts.axisLabelColour; + var width = ctx.measureText(this.opts.axisLabel).width; + var height = this.opts.axisLabelFontSizePixels; + var x, y, angle = 0; + if (this.position == 'top') { + x = box.left + box.width/2 - width/2; + y = box.top + height*0.72; + } else if (this.position == 'bottom') { + x = box.left + box.width/2 - width/2; + y = box.top + box.height - height*0.72; + } else if (this.position == 'left') { + x = box.left + height*0.72; + y = box.height/2 + box.top + width/2; + angle = -Math.PI/2; + } else if (this.position == 'right') { + x = box.left + box.width - height*0.72; + y = box.height/2 + box.top - width/2; + angle = Math.PI/2; + } + ctx.translate(x, y); + ctx.rotate(angle); + ctx.fillText(this.opts.axisLabel, 0, 0); + ctx.restore(); + }; + + + HtmlAxisLabel.prototype = new AxisLabel(); + HtmlAxisLabel.prototype.constructor = HtmlAxisLabel; + function HtmlAxisLabel(axisName, position, padding, plot, opts) { + AxisLabel.prototype.constructor.call(this, axisName, position, + padding, plot, opts); + this.elem = null; + } + + HtmlAxisLabel.prototype.calculateSize = function() { + var elem = $('
' + + this.opts.axisLabel + '
'); + this.plot.getPlaceholder().append(elem); + // store height and width of label itself, for use in draw() + this.labelWidth = elem.outerWidth(true); + this.labelHeight = elem.outerHeight(true); + elem.remove(); + + this.width = this.height = 0; + if (this.position == 'left' || this.position == 'right') { + this.width = this.labelWidth + this.padding; + } else { + this.height = this.labelHeight + this.padding; + } + }; + + HtmlAxisLabel.prototype.cleanup = function() { + if (this.elem) { + this.elem.remove(); + } + }; + + HtmlAxisLabel.prototype.draw = function(box) { + this.plot.getPlaceholder().find('#' + this.axisName + 'Label').remove(); + this.elem = $('
' + + this.opts.axisLabel + '
'); + this.plot.getPlaceholder().append(this.elem); + if (this.position == 'top') { + this.elem.css('left', box.left + box.width/2 - this.labelWidth/2 + + 'px'); + this.elem.css('top', box.top + 'px'); + } else if (this.position == 'bottom') { + this.elem.css('left', box.left + box.width/2 - this.labelWidth/2 + + 'px'); + this.elem.css('top', box.top + box.height - this.labelHeight + + 'px'); + } else if (this.position == 'left') { + this.elem.css('top', box.top + box.height/2 - this.labelHeight/2 + + 'px'); + this.elem.css('left', box.left + 'px'); + } else if (this.position == 'right') { + this.elem.css('top', box.top + box.height/2 - this.labelHeight/2 + + 'px'); + this.elem.css('left', box.left + box.width - this.labelWidth + + 'px'); + } + }; + + + CssTransformAxisLabel.prototype = new HtmlAxisLabel(); + CssTransformAxisLabel.prototype.constructor = CssTransformAxisLabel; + function CssTransformAxisLabel(axisName, position, padding, plot, opts) { + HtmlAxisLabel.prototype.constructor.call(this, axisName, position, + padding, plot, opts); + } + + CssTransformAxisLabel.prototype.calculateSize = function() { + HtmlAxisLabel.prototype.calculateSize.call(this); + this.width = this.height = 0; + if (this.position == 'left' || this.position == 'right') { + this.width = this.labelHeight + this.padding; + } else { + this.height = this.labelHeight + this.padding; + } + }; + + CssTransformAxisLabel.prototype.transforms = function(degrees, x, y) { + var stransforms = { + '-moz-transform': '', + '-webkit-transform': '', + '-o-transform': '', + '-ms-transform': '' + }; + if (x != 0 || y != 0) { + var stdTranslate = ' translate(' + x + 'px, ' + y + 'px)'; + stransforms['-moz-transform'] += stdTranslate; + stransforms['-webkit-transform'] += stdTranslate; + stransforms['-o-transform'] += stdTranslate; + stransforms['-ms-transform'] += stdTranslate; + } + if (degrees != 0) { + var rotation = degrees / 90; + var stdRotate = ' rotate(' + degrees + 'deg)'; + stransforms['-moz-transform'] += stdRotate; + stransforms['-webkit-transform'] += stdRotate; + stransforms['-o-transform'] += stdRotate; + stransforms['-ms-transform'] += stdRotate; + } + var s = 'top: 0; left: 0; '; + for (var prop in stransforms) { + if (stransforms[prop]) { + s += prop + ':' + stransforms[prop] + ';'; + } + } + s += ';'; + return s; + }; + + CssTransformAxisLabel.prototype.calculateOffsets = function(box) { + var offsets = { x: 0, y: 0, degrees: 0 }; + if (this.position == 'bottom') { + offsets.x = box.left + box.width/2 - this.labelWidth/2; + offsets.y = box.top + box.height - this.labelHeight; + } else if (this.position == 'top') { + offsets.x = box.left + box.width/2 - this.labelWidth/2; + offsets.y = box.top; + } else if (this.position == 'left') { + offsets.degrees = -90; + offsets.x = box.left - this.labelWidth/2 + this.labelHeight/2; + offsets.y = box.height/2 + box.top; + } else if (this.position == 'right') { + offsets.degrees = 90; + offsets.x = box.left + box.width - this.labelWidth/2 + - this.labelHeight/2; + offsets.y = box.height/2 + box.top; + } + offsets.x = Math.round(offsets.x); + offsets.y = Math.round(offsets.y); + + return offsets; + }; + + CssTransformAxisLabel.prototype.draw = function(box) { + this.plot.getPlaceholder().find("." + this.axisName + "Label").remove(); + var offsets = this.calculateOffsets(box); + this.elem = $('
' + this.opts.axisLabel + '
'); + this.plot.getPlaceholder().append(this.elem); + }; + + + IeTransformAxisLabel.prototype = new CssTransformAxisLabel(); + IeTransformAxisLabel.prototype.constructor = IeTransformAxisLabel; + function IeTransformAxisLabel(axisName, position, padding, plot, opts) { + CssTransformAxisLabel.prototype.constructor.call(this, axisName, + position, padding, + plot, opts); + this.requiresResize = false; + } + + IeTransformAxisLabel.prototype.transforms = function(degrees, x, y) { + // I didn't feel like learning the crazy Matrix stuff, so this uses + // a combination of the rotation transform and CSS positioning. + var s = ''; + if (degrees != 0) { + var rotation = degrees/90; + while (rotation < 0) { + rotation += 4; + } + s += ' filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=' + rotation + '); '; + // see below + this.requiresResize = (this.position == 'right'); + } + if (x != 0) { + s += 'left: ' + x + 'px; '; + } + if (y != 0) { + s += 'top: ' + y + 'px; '; + } + return s; + }; + + IeTransformAxisLabel.prototype.calculateOffsets = function(box) { + var offsets = CssTransformAxisLabel.prototype.calculateOffsets.call( + this, box); + // adjust some values to take into account differences between + // CSS and IE rotations. + if (this.position == 'top') { + // FIXME: not sure why, but placing this exactly at the top causes + // the top axis label to flip to the bottom... + offsets.y = box.top + 1; + } else if (this.position == 'left') { + offsets.x = box.left; + offsets.y = box.height/2 + box.top - this.labelWidth/2; + } else if (this.position == 'right') { + offsets.x = box.left + box.width - this.labelHeight; + offsets.y = box.height/2 + box.top - this.labelWidth/2; + } + return offsets; + }; + + IeTransformAxisLabel.prototype.draw = function(box) { + CssTransformAxisLabel.prototype.draw.call(this, box); + if (this.requiresResize) { + this.elem = this.plot.getPlaceholder().find("." + this.axisName + + "Label"); + // Since we used CSS positioning instead of transforms for + // translating the element, and since the positioning is done + // before any rotations, we have to reset the width and height + // in case the browser wrapped the text (specifically for the + // y2axis). + this.elem.css('width', this.labelWidth); + this.elem.css('height', this.labelHeight); + } + }; + + + function init(plot) { + plot.hooks.processOptions.push(function (plot, options) { + + if (!options.axisLabels.show) + return; + + // This is kind of a hack. There are no hooks in Flot between + // the creation and measuring of the ticks (setTicks, measureTickLabels + // in setupGrid() ) and the drawing of the ticks and plot box + // (insertAxisLabels in setupGrid() ). + // + // Therefore, we use a trick where we run the draw routine twice: + // the first time to get the tick measurements, so that we can change + // them, and then have it draw it again. + var secondPass = false; + + var axisLabels = {}; + var axisOffsetCounts = { left: 0, right: 0, top: 0, bottom: 0 }; + + var defaultPadding = 2; // padding between axis and tick labels + plot.hooks.draw.push(function (plot, ctx) { + var hasAxisLabels = false; + if (!secondPass) { + // MEASURE AND SET OPTIONS + $.each(plot.getAxes(), function(axisName, axis) { + var opts = axis.options // Flot 0.7 + || plot.getOptions()[axisName]; // Flot 0.6 + + // Handle redraws initiated outside of this plug-in. + if (axisName in axisLabels) { + axis.labelHeight = axis.labelHeight - + axisLabels[axisName].height; + axis.labelWidth = axis.labelWidth - + axisLabels[axisName].width; + opts.labelHeight = axis.labelHeight; + opts.labelWidth = axis.labelWidth; + axisLabels[axisName].cleanup(); + delete axisLabels[axisName]; + } + + if (!opts || !opts.axisLabel || !axis.show) + return; + + hasAxisLabels = true; + var renderer = null; + + if (!opts.axisLabelUseHtml && + navigator.appName == 'Microsoft Internet Explorer') { + var ua = navigator.userAgent; + var re = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})"); + if (re.exec(ua) != null) { + rv = parseFloat(RegExp.$1); + } + if (rv >= 9 && !opts.axisLabelUseCanvas && !opts.axisLabelUseHtml) { + renderer = CssTransformAxisLabel; + } else if (!opts.axisLabelUseCanvas && !opts.axisLabelUseHtml) { + renderer = IeTransformAxisLabel; + } else if (opts.axisLabelUseCanvas) { + renderer = CanvasAxisLabel; + } else { + renderer = HtmlAxisLabel; + } + } else { + if (opts.axisLabelUseHtml || (!css3TransitionSupported() && !canvasTextSupported()) && !opts.axisLabelUseCanvas) { + renderer = HtmlAxisLabel; + } else if (opts.axisLabelUseCanvas || !css3TransitionSupported()) { + renderer = CanvasAxisLabel; + } else { + renderer = CssTransformAxisLabel; + } + } + + var padding = opts.axisLabelPadding === undefined ? + defaultPadding : opts.axisLabelPadding; + + axisLabels[axisName] = new renderer(axisName, + axis.position, padding, + plot, opts); + + // flot interprets axis.labelHeight and .labelWidth as + // the height and width of the tick labels. We increase + // these values to make room for the axis label and + // padding. + + axisLabels[axisName].calculateSize(); + + // AxisLabel.height and .width are the size of the + // axis label and padding. + // Just set opts here because axis will be sorted out on + // the redraw. + + opts.labelHeight = axis.labelHeight + + axisLabels[axisName].height; + opts.labelWidth = axis.labelWidth + + axisLabels[axisName].width; + }); + + // If there are axis labels, re-draw with new label widths and + // heights. + + if (hasAxisLabels) { + secondPass = true; + plot.setupGrid(); + plot.draw(); + } + } else { + secondPass = false; + // DRAW + $.each(plot.getAxes(), function(axisName, axis) { + var opts = axis.options // Flot 0.7 + || plot.getOptions()[axisName]; // Flot 0.6 + if (!opts || !opts.axisLabel || !axis.show) + return; + + axisLabels[axisName].draw(axis.box); + }); + } + }); + }); + } + + + $.plot.plugins.push({ + init: init, + options: options, + name: 'axisLabels', + version: '2.0' + }); +})(jQuery); diff --git a/class/RealSpaceInterface/static/js/paramGui.js b/class/RealSpaceInterface/static/js/paramGui.js new file mode 100644 index 00000000..c54e0164 --- /dev/null +++ b/class/RealSpaceInterface/static/js/paramGui.js @@ -0,0 +1,397 @@ +/** @module paramGui */ + +/** + * Initial Condition Type. Either Gaussian (0) or Scale Invariant (1). + * + * @typedef {number} IC_TYPE + */ +const IC_TYPE = { + GAUSSIAN: 0, + SCALE_INVARIANT: 1, +}; + +/** + * Set of initial parameters providing the data structure for the ParameterGui. + * Reads default parameters from {@link DEFAULT_INITIAL} and default redshifts + * from {@link DEFAULT_REDSHIFTS}. + * + * @typedef {Object} ParamSet + * @constructor + * + * @property {number} scale - side length of 2D cross section of universe in Mpc + * @property {module:paramGui~IC_TYPE} initialType - either + * {@link IC_TYPE.GAUSSIAN} or + * {@link IC_TYPE.SCALE_INVARIANT} + * @property {bool} limitModes - true if modes are to be limited, false otherwise + * @property {number} minMode - minimum mode wave number in 1 / Mpc + * @property {number} minMode - maximum mode wave number in 1 / Mpc + * @property {number} ns - primordial tilt n_s + * @property {number} resolution - the side length of the mesh in number of vertices + * + * @param {module:RSI~initialConditionSetCallback} setInitialConditions - callback + */ +function ParamSet(setInitialConditions) { + this.scale = DEFAULT_INITIAL.scale; + this.initialType = IC_TYPE.GAUSSIAN; + this.sigmaGauss = DEFAULT_INITIAL.sigmaGauss; + this.limitModes = false; + this.minMode = 1; + this.maxMode = 10; + this.ns = DEFAULT_INITIAL.n_s; + this.resolution = DEFAULT_INITIAL.resolution; + + var self = this; + + var initialCallback = function() { + setInitialConditions(self); + }; + + this.setInitialSI = initialCallback; + this.setInitialGauss = initialCallback; + + this.redshift = Object.assign([], DEFAULT_REDSHIFTS); + this.modal = new RedshiftModal( + this.redshift, + function(redshift) { + self.redshift = redshift; + } + ); + + this.configureRedshift = function() { + self.modal.show(); + }; +}; + +/** + * Returns an object according to the communication protocol + * to be sent as JSON object to the server specifying the initial + * conditions. + * + * @return {Object} the object to be sent to the server + */ +ParamSet.prototype.serializeInitial = function() { + var dataType = (this.initialType === IC_TYPE.GAUSSIAN) ? "Gaussian" : "SI"; + var SILimit; + if (this.initialType === IC_TYPE.GAUSSIAN || !this.limitModes) + SILimit = "None"; + else + SILimit = [this.minMode, this.maxMode]; + + var result = { + type: "Initial", + params: { + xScale: Math.floor(this.scale), + resolution: this.resolution, + initialDataType: dataType, + sigma: this.sigmaGauss, + SILimit: SILimit, + n_s: this.ns, + redshift: this.redshift, + } + }; + + return result; +}; + +/***************************************************************************************/ + +/** + * Represents the set of cosmological parameters (that are + * not initial state parameters). Reads the set of parameters + * exposed to the user from {@link COSMOLOGICAL_PARAMETER_LIST}. + * + * @typedef {Object} CosmoParams + * @constructor + * @param {module:RSI~cosmologicalParametersSetCallback} + */ +function CosmoParams(cosmoCallback) { + this.config = COSMOLOGICAL_PARAMETER_LIST; + this.additionalParameters = ADDITIONAL_CLASS_PARAMETERS; + + this.parameters = this.buildParameterObject(); + this.cosmoCallback = cosmoCallback; +} + +/** + * Builds the object which is passed to dat.gui. + */ +CosmoParams.prototype.buildParameterObject = function() { + var result = {}; + for (var entry of this.config) { + result[entry.name] = entry.default; + } + return result; +}; + +/** + * Resets all parameters to their default value. + */ +CosmoParams.prototype.resetParameters = function() { + for (var entry of this.config) { + this.parameters[entry.name] = entry.default; + } +}; + +/** + * This is called once the user presses the button to set the cosmological parameters + * (which coincides with the button to start the calculation). + * This will call the {@link module:RSI~cosmologicalParametersSetCallback} instance + * passed in the {@link CosmoParams} constructor. + */ +CosmoParams.prototype.setCosmological = function() { + var result = { + type: "Cosmo", + params: this.serialize(), + }; + this.cosmoCallback(this, result); +}; + +/** + * Converts the user specified cosmological parameters into a representation + * that can be sent to the server. + * + * @return {Object} object to be sent to the server + */ +CosmoParams.prototype.serialize = function() { + var serialized = {}; + for (var entry of this.config) { + if (entry.hasOwnProperty("replaceBy")) { + var replacement = entry.replaceBy(this.parameters); + for (var key in replacement) { + serialized[key] = replacement[key]; + } + } + else { + serialized[entry.name] = this.parameters[entry.name]; + } + } + for (var key in this.additionalParameters) { + serialized[key] = this.additionalParameters[key]; + } + + return serialized; +}; + +CosmoParams.prototype.loadParameters = function(parameters) { + var self = this; + Object.keys(parameters).forEach(function(key) { + self.parameters[key] = parameters[key]; + }); +}; + + +/** + * This class provides the graphical user interface that controls the inital + * + cosmological parameters of the simulation as well as other properties, + * such as the animation rate, whether or not grids are shown, etc. + * + * @typedef {Object} ParameterGui + * @constructor + * @param {module:RSI~initialConditionSetCallback} setInitialConditions + * @param {module:RSI~cosmologicalParametersSetCallback} setCosmologicalParams + */ +function ParameterGui(setInitialConditions, setCosmologicalParams) { + this.gui = new dat.GUI({ width: 300 }); + this.gui.domElement.id = "datgui"; + this.paramSet = new ParamSet(setInitialConditions); + this.cosmoParams = new CosmoParams(setCosmologicalParams); + + this.config = { + notFlat: true, + amplitude: 25.0, + resetCamera: function() {controls.reset()}, + orthographicMode: false, + showAxes: true, + dashedAxes: true, + showGrid: true, + animationSpeed: 25, + backgroundColor: "#4a4a4a" + }; + + + this.buildFolders(); +} + +/** + * Create folders for initial condition and cosmological parameters + * and populate them. + * Called via the constructor of {@link ParameterGui}. + */ +ParameterGui.prototype.buildFolders = function() { + this.initialFolder = this.gui.addFolder("Initial Condition"); + this.cosmoFolder = this.gui.addFolder("Cosm. Parameters"); + + this.buildInitialFolder(); + this.buildCosmoFolder(); + this.buildDisplayFolder(); + this.buildControlFolder(); + + this.initialFolder.open(); + this.siFolder.open(); + this.switchToScaleInvariant(); + this.cosmoFolder.open(); +}; + +/** + * Build folder containing initial condition parameters. + */ +ParameterGui.prototype.buildInitialFolder = function() { + this.initialFolder.add(this.paramSet, "scale") + .min(100).max(1600).name("Scale [Mpc]"); + this.initialFolder.add(this.paramSet, "resolution") + .min(64).max(1024).step(1).name("Resolution"); + this.initialFolder.add(this.paramSet, "configureRedshift") + .name("Configure Redshifts"); + + var self = this; + this.gaussianFolder = this.initialFolder.addFolder("Gaussian Initial Conditions"); + this.sigmaGaussCtl = this.gaussianFolder + .add(this.paramSet, "sigmaGauss").min(1).max(30).name("σ [Mpc]"); + this.gaussianFolder + .add(this.paramSet, "setInitialGauss").name("Set Initial Condition"); + this.gaussianFolder.domElement.onclick = function() { + self.switchToGaussian(); + }; + + var siButtonString = "Set Initial Condition"; + + // Create SI folder + this.siFolder = this.initialFolder.addFolder("Scale Invariant Initial Conditions"); + // Add fields + this.siFolder + .add(this.paramSet, "ns").name("ns"); + this.limitModesCtl = this.siFolder + .add(this.paramSet, "limitModes").name("Limit Modes"); + this.limitModesCtl.onChange(function (limitModes) { + if (limitModes) { + self.siFolder.remove(self.set_initial_si); + self.minModeCtl = self.siFolder + .add(self.paramSet, "minMode").name("Min. Mode [1/Mpc]"); + self.maxModeCtl = self.siFolder + .add(self.paramSet, "maxMode").name("Max. Mode [1/Mpc]"); + self.set_initial_si = self.siFolder + .add(self.paramSet, "setInitialSI") + .name(siButtonString); + } else { + self.siFolder.remove(self.minModeCtl); + self.siFolder.remove(self.maxModeCtl); + } + }); + this.set_initial_si = this.siFolder + .add(this.paramSet, "setInitialSI").name(siButtonString); + this.siFolder.domElement.onclick = function() { + self.switchToScaleInvariant(); + }; +}; + +/** + * Build folder containing cosmological parameters. + */ +ParameterGui.prototype.buildCosmoFolder = function() { + for (var param of this.cosmoParams.config) { + var step = param.hasOwnProperty("step") ? param.step : 0.001; + this.cosmoFolder + .add(this.cosmoParams.parameters, param.name) + .step(step) + .min(param.min) + .max(param.max) + .name(param.displayName); + } + + // Rather ugly solution but necessary since calling `listen()` on the + // config attributes above to auto-update them on value change + // prevents user from manually entering a value into the text boxes. + // NOTE: This relies on the internal implementation of dat.gui and is + // therefore not guaranteed to be compatible with future versions of dat.gui. + var self = this; + this.resetConfig = { + resetCosmological: function() { + self.cosmoParams.resetParameters(); + self.refreshCosmoFolder(); + } + }; + + this.cosmoFolder.add(this.resetConfig, "resetCosmological").name("Reset Parameters"); + this.cosmoFolder.add(this.cosmoParams, "setCosmological").name("Start Calculation"); +}; + +ParameterGui.prototype.refreshCosmoFolder = function() { + this.gui.__folders["Cosm. Parameters"].__controllers.forEach(function(ctrl) { + ctrl.updateDisplay(); + }); +}; + +ParameterGui.prototype.loadCosmoParameters = function(parameters) { + this.cosmoParams.loadParameters(parameters); + this.refreshCosmoFolder(); +}; + +ParameterGui.prototype.buildDisplayFolder = function() { + displaySettings = this.gui.addFolder("Display Settings"); + + var self = this; + displaySettings + .add(this.config, 'notFlat') + .name("Show in 3D") + .onChange(function() { + simulationManager.setUniform("notFlat", self.config.notFlat); + }); + + displaySettings + .add(this.config, "showGrid") + .name("Show Grid") + .onChange(function() { + simulationManager.updateGrids(); + }); + + displaySettings + .add(this.config , 'amplitude', 0, 50) + .name("Amplitude") + .onChange(function() { + simulationManager.setUniform("amplitude", self.config.amplitude); + }); + +}; + +/** + * Build the control folder, containing properties like the animation rate, + * background color etc. + */ +ParameterGui.prototype.buildControlFolder = function() { + var self = this; + + this.gui.add(this.config, "animationSpeed", 1, 60).name("FPS").listen().onChange(function() { + fps = self.config.animationSpeed; + }); + + // this.gui.add(this.config, "orthographicMode") + // .name("Orthographic Camera") + // .onChange(toggleCameraMode); + + this.gui.add(this.config, "resetCamera"). name("Reset Camera"); + + this.gui.addColor(this.config, "backgroundColor").name("Background Color") + .onChange(function (value) { + scene.background = new THREE.Color(value); + }); +}; + +/** + * Switch to the menu for Gaussian initial conditions + */ +ParameterGui.prototype.switchToGaussian = function() { + if (this.paramSet.initialType === IC_TYPE.SCALE_INVARIANT) { + this.siFolder.close(); + this.paramSet.initialType = IC_TYPE.GAUSSIAN; + } +}; + +/** + * Switch to the menu for scale invariant initial conditions + */ +ParameterGui.prototype.switchToScaleInvariant = function() { + if (this.paramSet.initialType === IC_TYPE.GAUSSIAN) { + this.gaussianFolder.close(); + this.paramSet.initialType = IC_TYPE.SCALE_INVARIANT; + } +}; diff --git a/class/RealSpaceInterface/static/js/parameterConfig.js b/class/RealSpaceInterface/static/js/parameterConfig.js new file mode 100644 index 00000000..cae53856 --- /dev/null +++ b/class/RealSpaceInterface/static/js/parameterConfig.js @@ -0,0 +1,153 @@ +/* +The parameters the application exposes to the user are configured using this list. +Each parameter is represented by an entry in that list. +An entry is an object containing some required and some optional fields. + +The required fields are: +------------------------ +- `name`: The `name` property is the one that will be used to pass the + parameter value to CLASS. + +- `displayName`: The `displayName` property will be displayed as the label + of the property in both the control panel (on the left of the + application) and in the simulation list. + HTML is allowed. Subscripts use the tag. + +- `min`: Minimum parameter value. + +- `max`: Maximum parameter value. + +- `default`: Default parameter value. + +The optional fields are: +------------------------ +- `step`: The increment by which the parameter will be increased using + the sliders in the control panel. Defaults to 0.001. + +- `replaceBy`: It might be necessary to pass parameters to CLASS + which are functions of other parameters, e.g. the user might + set a value of `omega_m` but CLASS requires `omega_cdm` to be + passed. In this case, a function accepting a dictionary of + all the parameters and returning a dictionary containining + the key-value pairs that are supposed to be passed to CLASS + (see example for `omega_m` below). +*/ + +/** @global */ +var COSMOLOGICAL_PARAMETER_LIST = [ + { + name: "h", + displayName: "h", + min: 0.0, + max: 2.0, + default: 0.67556, + }, + { + name: "omega_b", + displayName: "ωb", + min: 0.0, + max: 1.0, + default: 0.022, + }, + { + name: "omega_m", + displayName: "ωm", + min: 0.0, + max: 1.0, + default: 0.142, + replaceBy: function(parameters) { + return { + "omega_cdm": parameters.omega_m - parameters.omega_b + }; + }, + }, + { + name: "Omega_k", + displayName: "Ωk", + min: -0.2, + max: 0.2, + default: 0.0, + }, + { + name: "N_ur", + displayName: "Neff", + min: 0.0, + max: 30.0, + default: 3.046 + }, + { + name: "w0_fld", + displayName: "w0,fld", + min: -2.0, + max: 0.0, + default: -1.0, + }, + { + name: "wa_fld", + displayName: "wa,fld", + min: -1.0, + max: 1.0, + default: 0.0 + }, +]; + + +/** + * It is possible to pass additional parameters to CLASS using + * the following object. + * + * @global + */ +var ADDITIONAL_CLASS_PARAMETERS = { + "Omega_Lambda": 0, + "YHe": 0.25, +}; + + +/** + * Default redshifts. + * Depending on the value of log, the individual arrays will be created either + * as + *
+ * numpy.logspace(from, to, points) (for log = true)
+ *  or
+ * numpy.linspace(from, to, points) (for  log = false).
+ * 
+ * + * The resulting individual arrays will be concatenated and duplicates removed. + * + * @global + */ +var DEFAULT_REDSHIFTS = [ + { + from: 1000000, + to: 10000, + log: true, + points: 60, + }, + { + from: 10000, + to: 1089, + log: true, + points: 80, + }, + { + from: 1089, + to: 0.01, + log: false, + points: 40, + }, +]; + +/** + * Default Initial Condition Values. + * + * @global + */ +var DEFAULT_INITIAL = { + scale: 400, + resolution: 200, + sigmaGauss: 10.0, + n_s: 0.96 +}; + diff --git a/class/RealSpaceInterface/static/js/playerPanel.js b/class/RealSpaceInterface/static/js/playerPanel.js new file mode 100644 index 00000000..5937e3d6 --- /dev/null +++ b/class/RealSpaceInterface/static/js/playerPanel.js @@ -0,0 +1,190 @@ +/** + * This function will be called when the user presses the play/pause button. + * @callback PlayerPanel~playPauseCallback + * @param {bool} playing - true if movie should be played, false if movie should be paused. + */ + +/** + * This function will be called when the user presses the "back one frame" button. + * @callback PlayerPanel~backFrameCallback + */ + +/** + * This function will be called when the user presses the "forward one frame" button. + * @callback PlayerPanel~forwardFrameCallback + */ + +/** + * This function will be called when the user presses the "Go to Start" button. + * @callback PlayerPanel~toStartCallback + */ + +/** + * This function will be called when the user presses the "Go to End" button. + * @callback PlayerPanel~toEndCallback + */ + +/** + * This function will be called when the user presses the play/pause button. + * @callback PlayerPanel~repeatCallback + * @param {bool} repeating - true if movie should be played in repeat, else false. + */ + +/** + * This function will be called when the user uses the 'scrubber' to move to a specific frame. + * @callback PlayerPanel~scrubCallback + * @param {number} progress - number between 0.0 and 1.0 (inclusive). + */ + +/** + * Represents the player panel. + * @constructor + * @param {PlayerPanel~playPauseCallback} + * @param {PlayerPanel~backFrameCallback} + * @param {PlayerPanel~forwardFrameCallback} + * @param {PlayerPanel~toStartCallback} + * @param {PlayerPanel~toEndCallback} + * @param {PlayerPanel~repeatCallback} + * @param {PlayerPanel~scrubCallback} + */ +function PlayerPanel(playPauseCallback, backFrameCallback, forwardFrameCallback, toStartCallback, toEndCallback, repeatCallback, + scrubCallback) { + this.playPauseCallback = playPauseCallback; + this.backFrameCallback = backFrameCallback; + this.forwardFrameCallback = forwardFrameCallback; + this.toStartCallback = toStartCallback; + this.toEndCallback = toEndCallback; + this.repeatCallback = repeatCallback; + + this.playPauseButton = document.getElementById("playerPlayPauseBtn"); + this.backFrameButton = document.getElementById("playerBackFrameBtn"); + this.forwardFrameButton = document.getElementById("playerForwardFrameBtn"); + this.toStartButton = document.getElementById("playerToStartBtn"); + this.toEndButton = document.getElementById("playerToEndBtn"); + this.repeatButton = document.getElementById("playerRepeatBtn"); + + this.timeline = new Timeline("timeline", "scrubber", scrubCallback); + this.timeline.scrubTo(0); + + this.playing = false; + this.repeat = false; + + this.connectCallbacks(); +} + +PlayerPanel.prototype.connectCallbacks = function() { + var self = this; + this.playPauseButton.onclick = function() { + // Additionally, toggle button + var buttonSpan = self.playPauseButton.firstElementChild; + if (self.playing) { + buttonSpan.classList.remove("oi-media-pause"); + buttonSpan.classList.add("oi-media-play"); + } else { + buttonSpan.classList.remove("oi-media-play"); + buttonSpan.classList.add("oi-media-pause"); + } + self.playing = !self.playing; + self.playPauseCallback(self.playing); + }; + this.backFrameButton.onclick = this.backFrameCallback; + this.forwardFrameButton.onclick = this.forwardFrameCallback; + this.toStartButton.onclick = this.toStartCallback; + this.toEndButton.onclick = this.toEndCallback; + + this.repeatButton.onclick = function() { + if (self.repeat) { + self.repeatButton.classList.remove("btn-success"); + self.repeatButton.classList.add("btn-outline-success"); + } else { + self.repeatButton.classList.remove("btn-outline-success"); + self.repeatButton.classList.add("btn-success"); + } + self.repeat = !self.repeat; + if (self.repeatCallback) { + self.repeatCallback(self.repeat); + } + }; +}; + +PlayerPanel.prototype.pause = function() { + if (this.playing) { + this.playPauseButton.onclick(); + } +}; + +PlayerPanel.prototype.play = function() { + if (!this.playing) { + this.playPauseButton.onclick(); + } +}; + + + + +/* TIMELINE */ +function Timeline(timelineId, scrubberId, scrubCallback) { + this.timeline = document.getElementById(timelineId); + this.scrubber = document.getElementById(scrubberId); + + this.scrubCallback = scrubCallback; + + this.timelineWidth = this.timeline.offsetWidth; + this.scrubberRadius = this.scrubber.offsetWidth / 2; + + + // Center + var dy = this.scrubber.offsetHeight / 2 - this.timeline.offsetHeight / 2; + this.scrubber.style.marginTop = "-" + Math.floor(dy) + "px"; + + // Event handling + this.mouseDown = false; + var self = this; + this.scrubber.addEventListener("mousedown", function(e) { + self.mouseDown = true; + e.stopPropagation(); + }); + + this.timeline.addEventListener("mousedown", function(e) { + self.handleClick(e); + }); + + document.addEventListener("mouseup", function() { + self.mouseDown = false; + }); + + document.addEventListener("mousemove", function(e) { + if (self.mouseDown) { + self.handleClick(e); + } + }); +} + +Timeline.prototype.refresh = function() { + this.timelineWidth = this.timeline.offsetWidth; +}; + +Timeline.prototype.handleClick = function(e) { + var leftBoundary = this.timeline.getBoundingClientRect().left; + var rightBoundary = leftBoundary + this.timelineWidth; + if (e.clientX >= leftBoundary && e.clientX <= rightBoundary) { + var percentage = (e.clientX - leftBoundary) / this.timelineWidth; + this.scrubTo(percentage); + this.scrubCallback(percentage); + } +}; + +Timeline.prototype.scrubTo = function(percentage) { + var pos = percentage * this.timelineWidth - this.scrubberRadius; + this.scrubber.style.marginLeft = pos + "px"; + + this.timeline.style.background = this.generateGradientCSS(percentage); +}; + +Timeline.prototype.generateGradientCSS = function(percent) { + percent *= 100; + // var result = "linear-gradient(to right, rgba(255, 0, 0, 0.75) 0%, rgba(255, 0, 0, 0.75) " + percent + "%, #222 " + percent + "%)"; + var result = "linear-gradient(to right, transparent 0%, transparent " + percent + "%, #222 " + percent + "%)"; + result = result + ", repeating-linear-gradient(45deg, hsl(134, 61%, 35%) 0%, hsl(134, 61%, 35%) 2%, hsl(134, 61%, 41%) 2%, hsl(134, 61%, 41%) 4%)"; + return result; +}; diff --git a/class/RealSpaceInterface/static/js/redshiftModal.js b/class/RealSpaceInterface/static/js/redshiftModal.js new file mode 100644 index 00000000..2ea6c994 --- /dev/null +++ b/class/RealSpaceInterface/static/js/redshiftModal.js @@ -0,0 +1,253 @@ +/** + * @callback RedshiftModal~saveCallback + * @param {Object} config - redshift configuration; + * for documentation on format, see {@link DEFAULT_REDSHIFTS} + */ + +/** + * Redshift Modal that allows user control over redshift sampling. + * @typedef {Object} RedshiftModal + * + * @constructor + * @param {Object} initial state, probably {@link DEFAULT_REDSHIFTS} + * @param {RedshiftModal~saveCallback} callback - callback to be called once user saves + */ +function RedshiftModal(initial, callback) { + this.modal = $("#redshift-modal"); + this.grid = $("#redshift-modal-grid"); + this.initial = initial; + + this.init(initial); + this.callback = callback; +} + +/** + * Initialize the modal with the initial configuration passed to the {@link RedshiftModal} constructor. + * + * @param {Object} initial - initial configuration + */ +RedshiftModal.prototype.init = function(initial) { + this.load(initial); + + // Deactivate first delete button + this.grid.find(".redshift-modal-btn-delete").first().prop("disabled", true); + + var self = this; + this.modal.find("#redshift-modal-save").click(function(e) { + self.clearAlerts(); + if (self.validate()) { + self.callback(self.serialize()); + self.hide(); + } + }); + + this.modal.find("#redshift-modal-cancel").click(function(e) { + self.clear(); + self.load(self.initial); + }); +}; + +/** + * Removes all entries + */ +RedshiftModal.prototype.clear = function() { + this.grid.children().remove(); +}; + +/** + * Show the modal + */ +RedshiftModal.prototype.show = function() { + this.modal.modal("show"); +}; + +/** + * Hide the modal + */ +RedshiftModal.prototype.hide = function() { + this.modal.modal("hide"); +}; + +/** + * Create an empty row template + * @return {Object} row + */ +RedshiftModal.prototype.createRow = function() { + return $("
").addClass("alert").addClass("alert-warning").text(message); + this.modal.find(".modal-body").append(element); +}; + +/** + * Clear all alerts. + */ +RedshiftModal.prototype.clearAlerts = function() { + this.modal.find(".alert").remove(); +}; + +/** + * Validate input fields and display warnings if input fields + * contain illegal values. + * + * @return {bool} true if all inputs are valid; false otherwise. + */ +RedshiftModal.prototype.validate = function() { + var self = this; + var return_ = false; + + var values = this.modal.find(".redshift-modal-z").map(function() { + if (isNaN(this.value)) { + self.alert("Invalid value encountered: " + this.value); + return_ = true; + } + var value = parseFloat(this.value); + return value; + }).get(); + + var points = this.modal.find(".redshift-modal-samples").map(function() { + if (isNaN(this.value)) { + self.alert("Invalid point count encountered: " + this.value); + return_ = true; + } + var value = parseInt(this.value); + if (value <= 0) { + self.alert("Invalid point count encountered: " + value); + return_ = true; + } + return value; + }).get(); + + if (return_) { + return false; + } + + for (var i = 0; i < values.length - 1; ++i) { + if (values[i] <= values[i + 1]) { + self.alert("Redshifts must be decreasing!"); + return false; + } + } + + return true; +}; + +/** + * Constructs an object representing the user's choice of z values. + * For an example of the format, see {@link DEFAULT_REDSHIFTS}. + */ +RedshiftModal.prototype.serialize = function() { + var z = this.modal.find(".redshift-modal-z").map(function() { + return parseFloat(this.value); + }); + + var points = this.modal.find(".redshift-modal-samples").map(function() { + return parseInt(this.value); + }); + + var logarithmic = this.modal.find(".redshift-modal-spacing").map(function() { + return this.value == 0; + }); + + var result = []; + for (var i = 0; i < z.length - 1; ++i) { + result.push({ + from: z[i], + to: z[i + 1], + points: points[i], + log: logarithmic[i], + }); + } + return result; +}; + +/** + * The 'inverse' operation of {@link RedshiftModal#serialize}. + * Takes an object of the same format and populates the modal + * accordingly. Note that this does NOT clear the modal but merely + * appends to the end of it. + * To clear, call {@link RedshiftModal#clear}. + * + * @param {Object[]} data - the data to populate the modal with + */ +RedshiftModal.prototype.load = function(data) { + for (var i = 0; i < data.length; ++i) { + if (i == 0) { + var lr = this.createLeftRow(); + lr.find(".redshift-modal-z").val(data[i].from); + this.grid.append(lr); + } + + var rr = this.createRightRow(); + rr.find(".redshift-modal-samples").val(data[i].points); + this.grid.append(rr); + + var lr2 = this.createLeftRow(); + lr2.find(".redshift-modal-z").val(data[i].to); + this.grid.append(lr2); + } +}; diff --git a/class/RealSpaceInterface/static/js/simulation.js b/class/RealSpaceInterface/static/js/simulation.js new file mode 100644 index 00000000..e7387247 --- /dev/null +++ b/class/RealSpaceInterface/static/js/simulation.js @@ -0,0 +1,874 @@ +/** @const {string[]} */ +var QUANTITIES = ["d_g", "d_b", "d_ur", "d_g/4 + psi", "d_cdm"]; +/** @const {string[]} */ +var QUANTITY_LABELS = [ + "δγ", + "δb", + "δν", + "δγ/4 + ψ", + "δcdm" +]; + +/** + * @typedef {Object} Simulation + * @typedef {Object} SimulationManager + * @typedef {Object} QuantityObject + */ + +/** + * Represents a single simulation. + * + * @constructor + */ +function Simulation() { + /* + These objects (once filled) can be accessed like this: + transfer[QUANTITY][FRAME][DATAPOINT] + */ + this.real = this.createQuantityObject(); + this.transfer = this.createQuantityObject(); + this.fourier = this.createQuantityObject(); + + this.params = null; + + // Cl's + this.l = null; + this.tCl = null; + + this.mPk = null; + + this.frameCount = 0; +} + +/** + * Create a new quantity object, i.e. an object whose + * keys are the quantities of {@link QUANTITIES} and values + * empty arrays. + */ +Simulation.prototype.createQuantityObject = function() { + var obj = {}; + for (var qty of QUANTITIES) { + obj[qty] = []; + } + return obj; +} + +/** + * Set the cosmological parameters associated with this simulation. + * + * @param {Object} params - The parameter object + */ +Simulation.prototype.setParameters = function(params) { + this.params = params; +}; + +/** + * Add a frame to this simulation. + * + * @param {QuantityObject} real - real data + * @param {QuantityObject} transfer - transfer function data + * @param {QuantityObject} fourier - fourier data (not used) + */ +Simulation.prototype.addFrame = function(real, transfer, fourier) { + for (var qty of QUANTITIES) { + this.real[qty].push(real[qty]); + this.transfer[qty].push(transfer[qty]); + this.fourier[qty].push(fourier[qty]); + } + this.frameCount++; +}; + +/** + * Add a frame to this simulation. + * + * @param {Float32Array} real - real data + * @param {Float32Array} transfer - transfer function data + * @param {Float32Array} fourier - fourier data (not used) + */ +Simulation.prototype.addInitial = function(real, transfer, fourier) { + for (var qty of QUANTITIES) { + this.real[qty].push(real); + this.transfer[qty].push(transfer); + this.fourier[qty].push(fourier); + } + this.frameCount++; +} + +/** + * Get the real data of `quantity` at frame `index`. + * @param {string} quantity + * @param {number} index - frame number + * @return {Float32Array} real data + */ +Simulation.prototype.getReal = function(quantity, index) { + return this.real[quantity][index]; +}; + +/** + * Get the transfer function data of `quantity` at frame `index`. + * @param {string} quantity + * @param {number} index - frame number + * @return {Float32Array} transfer function array + */ +Simulation.prototype.getTransfer = function(quantity, index) { + console.assert(index < this.transfer.length); + return this.transfer[quantity][index]; +}; + +/** + * Get the Fourier data of `quantity` at frame `index`. + * @deprecated Unused + * @param {string} quantity + * @param {number} index - frame number + * @return {Float32Array} Fourier data + */ +Simulation.prototype.getFourier = function(quantity, index) { + console.assert(index < this.fourier.length); + return this.fourier[quantity][index]; +}; + +/** + * Get the number of frames in this simulation. + * @return {number} frame count + */ +Simulation.prototype.getFrameCount = function() { + return this.frameCount; +}; + +/************************************************************************************************* +*************************************************************************************************/ + +/** + * A container class which is capable of managing multiple simulations. + * Provides an abstraction over dealing with individual simulations manually. + * + * @constructor + * @param {THREE.Texture} colorMap - A texture containing the initial color map + * + * @property {Simulation[]} simulations - An array of all stored simulations + * @property {number} frame - The currently active frame + * @property {number[]} active - The indices of active simulations + * @property {THREE.Group} planeGroup - The object group of planes in 'regular' mode + * @property {THREE.Group} collisionPlaneGroup - The group containing the meshes used + * for mouse picking + * @property {number} resolution - mesh resolution + * @property {number} PLANE_SIZE - size of planes in world space + * @property {number} PLANE_MARGIN - margin between planes in world units + * @property {number} GRID_DIVISIONS - number of grid divisions + * + * @property {THREE.Texture} colorMap - active color map + * @property {Simulation} targetSimulation - reference to the (unfinished) simulation object that is still receiving data + * + * @property {Float32Array} realInit - initial state for real data, that is the same for all quantities and passed to every newly created instance of {@link Simulation} + * @property {GridLayout} layout - layout manager which calculates the position of the individual planes + * @property {THREE.Group} activeBoxes - group of color outlines implemented as BoxHelpers + * + * @property {bool} singleMode - true if application is in single mode, i.e. all quantities of a _single_ simulation are shown side by side. false otherwise. + * @property {number} singleSimulationIndex - index of simulation that is shown in single mode (if any) + * @property {THREE.Group} singleGroup - object group of planes and grids in single mode + * @property {THREE.Mesh[]} singleMeshes - array of plane meshes in single mode + * @property {THREE.Mesh[]} singleCollisionMeshes - + * array of low resolution plane meshes in single mode used for mouse picking + * @property {THREE.Mesh[]} singleGrids - array of grids in single mode + */ +function SimulationManager(colorMap) { + this.simulations = []; + + this.frame = 0; + + this.active = []; // List of active (i.e. visible) simulations + this.planeGroup = new THREE.Group(); + this.collisionPlaneGroup = new THREE.Group(); + + // Definition of constants + this.resolution = 200; + this.PLANE_SIZE = 500; // Size of Ground Plane in world units + this.PLANE_MARGIN = 50; + this.GRID_DIVISIONS = 20; + + this.colorMap = colorMap; + + // active simulation, i.e. simulation that is (still) receiving data + this.targetSimulation = null; + + this.realInit = null; + this.transferInit = null; + this.fourierInit = null; + + this.layout = new GridLayout(1, this.PLANE_SIZE, this.PLANE_MARGIN); + + // Group of highlight boxes + this.activeBoxes = new THREE.Group(); + + // Single Mode = Showing only 1 simulation, but all 4 quantities at once + this.singleMode = false; + this.singleSimulationIndex = 0; + this.singleGroup = new THREE.Group(); + this.singleMeshes = []; + this.singleCollisionMeshes = []; + this.singleGrids = []; +} + +/** + * Test whether the user hovers over any of the simulations and react accordingly, + * i.e. create a colored outline in the appropriate color. + * If in single mode, also display the quantity of the currently hovered plane + * in the status bar. + * + * @param {THREE.Raycaster} raycaster - raycaster to be used for intersection checking + */ +SimulationManager.prototype.mousePick = function(raycaster) { + var self = this; + this.activeBoxes.children.forEach(function(box) { + self.activeBoxes.remove(box); + }); + $("#displayHover").text(""); + + if (this.singleMode) { + var intersects = raycaster.intersectObjects(this.singleCollisionMeshes); + for (var i = 0; i < intersects.length; i++) { + // Find corresponding simulation + var qtyIdx = intersects[i].object.index; + var box = new THREE.BoxHelper(this.singleCollisionMeshes[qtyIdx]); + box.material.linewidth = 5; + box.material.color = new THREE.Color(colors[qtyIdx % colors.length]); + this.activeBoxes.add(box); + $("#displayHover").html(" | " + QUANTITY_LABELS[qtyIdx]); + } + } else { + var intersects = raycaster.intersectObjects(this.getCollisionGroup().children); + for (var i = 0; i < intersects.length; i++) { + // Find corresponding simulation + var simulationIndex = intersects[i].object.index; + var simulation = simulationManager.getSimulations()[simulationIndex]; + var box = new THREE.BoxHelper(simulation.collisionMesh); + box.material.linewidth = 5; + box.material.color = new THREE.Color(colors[simulationIndex % colors.length]); + this.activeBoxes.add(box); + } + } +}; + +/** + * @return {THREE.Mesh[]} array of active boxes (colored outlines). + */ +SimulationManager.prototype.getActiveBoxes = function() { + return this.activeBoxes; +}; + +/** + * Create a new set of uniforms for the shader material for a new {@link Simulation} instance. + * @private + * @return {Object} uniform object + */ +SimulationManager.prototype.createUniforms = function() { + return { + notFlat: { + type: 'i', + value: parameterGui.config.notFlat + }, + amplitude: { + type: 'f', + value: parameterGui.config.amplitude + }, + cmap: { + type: "t", + value: this.colorMap, + }, + }; +} + +/** + * Set the resolution for future new simulations. + * @parameter {number} resolution - resolution (side length of mesh as number of vertices) + */ +SimulationManager.prototype.setResolution = function(resolution) { + // If updating, also update this.getResolution + this.resolution = resolution; + if (this.singleMode && this.singleGroup.children.length > 0 || + !this.singleMode && this.planeGroup.children.length > 0) { + console.warn("Resolution set to " + resolution + ", but there are existing planes!"); + } +}; + +/** + * @return {number} resolution + */ +SimulationManager.prototype.getResolution = function() { + return this.resolution; +}; + +/** + * Set a new color map. + * + * @param {THREE.Texture} texture - new color map to be set + */ +SimulationManager.prototype.setColorMap = function(texture) { + this.colorMap = texture; + + for (var plane of this.planeGroup.children) { + if (plane.material.uniforms) + plane.material.uniforms.cmap.value = texture; + } + for (var plane of this.singleMeshes) { + plane.material.uniforms.cmap.value = texture; + } +}; + +/** + * Create a new material for a {@link Simulation} instance. + * @private + * + * @return {THREE.ShaderMaterial} ShaderMaterial for simulation + */ +SimulationManager.prototype.createMeshMaterial = function() { + var uniforms = this.createUniforms(); + return new THREE.ShaderMaterial({ + uniforms: uniforms, + vertexShader: document.getElementById('vertexshader').textContent, + fragmentShader: document.getElementById('fragmentshader').textContent, + }); +}; + +/** + * Create a new simulation and initialize it with the stored initial state. + */ +SimulationManager.prototype.createSimulation = function() { + var sim = new Simulation(); + this.simulations.push(sim); + this.targetSimulation = sim; + sim.addInitial(this.realInit, this.transferInit, this.fourierInit); + this.activateSimulation(sim); +}; + + +/** + * @return {Simulation} the current target simulation + */ +SimulationManager.prototype.getTarget = function() { + return this.targetSimulation; +}; + +/** + * @return {bool} whether or not there exists a target simulation. + */ +SimulationManager.prototype.hasTarget = function() { + return this.targetSimulation !== null; +}; + +/** + * Finalize target (should be called once all data for a simulation has been received). + */ +SimulationManager.prototype.finalizeTarget = function() { + this.targetSimulation = null; +}; + +/** + * Destroys the current target. This should be called in case an error occurs during + * the data transfer from the server. + */ +SimulationManager.prototype.destroyTarget = function() { + this.delete(this.simulations.indexOf(this.targetSimulation)); + this.targetSimulation = null; +}; + +/** + * Update the grids after the user toggles grid visibility in the control panel. + */ +SimulationManager.prototype.updateGrids = function() { + var self = this; + if (this.singleMode) { + this.singleGrids.forEach(function(grid) { + grid.visible = parameterGui.config.showGrid; + }); + } else { + this.active.map(function(idx) { return self.simulations[idx]; }).forEach(function(sim) { + sim.grid.visible = parameterGui.config.showGrid; + }); + } +}; + +/** + * Enter single mode for the given simulation index, i.e. show all quantities + * for that simulation side by side. + * + * @param {number} simulationIdx - index of simulation to view in single mode + */ +SimulationManager.prototype.enableSingleMode = function(simulationIdx) { + this.singleMode = true; + this.singleSimulationIndex = simulationIdx; + + var self = this; + QUANTITIES.forEach(function(qty, qtyIdx) { + var plane = self.createPlane(); + var collisionPlane = self.createCollisionPlane(qtyIdx); + var grid = new THREE.GridHelper(self.PLANE_SIZE, self.GRID_DIVISIONS); + self.singleMeshes.push(plane); + self.singleCollisionMeshes.push(collisionPlane); + self.singleGrids.push(grid); + + self.singleGroup.add(plane); + self.singleGroup.add(grid); + }); + + this.refresh(); + this.loadFrame("d_g", this.frame); // Quantity is actually unused here and merely serves as a dummy +}; + +/** + * Leave single mode. + */ +SimulationManager.prototype.disableSingleMode = function() { + this.singleMode = false; + + for (var i = 0; i < this.singleGroup.children.length; ++i) { + this.singleGroup.remove(this.singleGroup.children[i]); + } + + + for (var i = 0; i < QUANTITIES.length; ++i) { + this.singleMeshes[i].geometry.dispose(); + this.singleCollisionMeshes[i].geometry.dispose(); + this.singleGrids[i].geometry.dispose(); + } + + this.singleMeshes = []; + this.singleCollisionMeshes = []; + this.singleGrids = []; + + this.refresh(); +}; + +/** + * @return {THREE.Group} {@link SimulationManager#singleGroup} + */ +SimulationManager.prototype.getSingleGroup = function() { + return this.singleGroup; +}; + +/** + * Activate the simulation for the given index. + * + * @param {number} index - index of the simulation to activate + */ +SimulationManager.prototype.activate = function(index) { + console.log("Activating simulation #" + index); + + this.active.push(index); + + this.simulations[index].mesh = this.createPlane(); + this.simulations[index].collisionMesh = this.createCollisionPlane(index); + this.simulations[index].grid = new THREE.GridHelper(this.PLANE_SIZE, this.GRID_DIVISIONS); + this.simulations[index].grid.visible = parameterGui.config.showGrid; + + this.planeGroup.add(this.simulations[index].mesh); + this.planeGroup.add(this.simulations[index].grid); + this.collisionPlaneGroup.add(this.simulations[index].collisionMesh); + + this.refresh(); +}; + +/** + * Activate the given simulation. + * + * @param {Simulation} sim - simulation to activate + */ +SimulationManager.prototype.activateSimulation = function(sim) { + this.activate(this.simulations.indexOf(sim)); +}; + +/** + * Deactivate the simulation for the given index. + * + * @param {number} index - index of simulation to deactivate + */ +SimulationManager.prototype.deactivate = function(index) { + if (!this.active.includes(index)) { + return; + } + this.active.splice(this.active.indexOf(index), 1); + var simulation = this.simulations[index]; + + // Remove meshes from rendering groups + this.planeGroup.remove(simulation.mesh); + this.planeGroup.remove(simulation.grid); + this.collisionPlaneGroup.remove(simulation.collisionMesh); + + // Dispose of mesh geometry + if (simulation.mesh) { + simulation.mesh.geometry.dispose(); + simulation.mesh.material.dispose(); + simulation.mesh = null; + } + if (simulation.collisionMesh) { + simulation.collisionMesh.geometry.dispose(); + simulation.collisionMesh = null; + } + if (simulation.grid) { + simulation.grid.geometry.dispose(); + simulation.grid = null; + } + + this.refresh(); +}; + +/** + * Deactivate given simulation. + * + * @param {Simulation} sim - simulation to deactivate + */ +SimulationManager.prototype.deactivateSimulation = function(sim) { + this.deactivate(this.simulations.indexOf(sim)); +}; + +/** + * Delete all simulations. + */ +SimulationManager.prototype.deleteAll = function() { + // for (var activeIdx of this.active) { + // this.deactivate(activeIdx); + // } + + // Evaluate count outside for loop since loop body modifies this.simulations + var count = this.simulations.length; + for (var i = 0; i < count; ++i) { + // Always delete simulation at index #0, since by deleting simulation #0, + // what was previously simulation #1 now becomes #0. + this.delete(0); + } + + this.active = []; + this.simulations = []; + console.assert(this.planeGroup.children.length == 0); + this.refresh(); +}; + +/** + * Delete a single simulation. + * + * @param {number} index of simulation to delete. + */ +SimulationManager.prototype.delete = function(index) { + if (index >= 0 && index < this.simulations.length) { + this.deactivate(index); + + // Since a simulation was removed from the list, + // the indices of this.active aren't accurate anymore. + // Every active index > `index` (i.e. the index of the simulation + // to delete) needs to be shifted down by one so that they continue + // to refer to the correct simulation. + this.active = this.active.map(function(idx) { + return (idx > index) ? idx - 1 : idx; + }); + + // After this, no more reference the simulation should exist + this.simulations.splice(index, 1); + + // Update simulationIndex on collision meshes + this.simulations.forEach(function(simulation, index) { + if (simulation.collisionMesh) { + simulation.collisionMesh.index = index; + } + }); + } +}; + +/** + * Needs to be called after simulations have been activated/deactivated + * to re-layout the remaining (activated) planes. + */ +SimulationManager.prototype.refresh = function() { + if (this.singleMode) { + this.layout.count = QUANTITIES.length; + this.layout.recalculate(); + + for (var i = 0; i < QUANTITIES.length; ++i) { + var position = this.layout.getWorldPosition(i); + this.singleMeshes[i].position.x = position[0]; + this.singleMeshes[i].position.z = position[1]; + this.singleCollisionMeshes[i].position.x = position[0]; + this.singleCollisionMeshes[i].position.z = position[1]; + this.singleGrids[i].position.x = position[0]; + this.singleGrids[i].position.z = position[1]; + } + } else { + this.layout.count = this.active.length; + this.layout.recalculate(); + + var self = this; + var objects = ["mesh", "collisionMesh", "grid"]; + this.active.forEach(function(active, gridIdx) { + var position = self.layout.getWorldPosition(gridIdx); + var x = position[0]; + var y = position[1]; + + var sim = self.simulations[active]; + objects.forEach(function(obj) { + sim[obj].position.x = x; + sim[obj].position.z = y; + }); + }); + } +}; + +/** + * Create a new mesh for a simulation. + * @private + * @return {THREE.Mesh} mesh + */ +SimulationManager.prototype.createPlane = function() { + + var bufferGeometry = new THREE.PlaneBufferGeometry( + this.PLANE_SIZE, this.PLANE_SIZE, + this.resolution - 1, this.resolution - 1 + ); + var result = new THREE.Mesh(bufferGeometry, this.createMeshMaterial()); + + var displacementBuffer = new Float32Array(this.resolution * this.resolution); + var displacementAttribute = new THREE.BufferAttribute(displacementBuffer, 1); + result.geometry.addAttribute("displacement", displacementAttribute); + result.rotation.x = -Math.PI/2; + + return result; +}; + +/** + * Create a plane for mouse hover checking for the simulation at given index. + * + * @param {number} index - index of simulation + */ +SimulationManager.prototype.createCollisionPlane = function(index) { + // index is required, as it is stored as mesh attribute to allow the + // mouse picker to identify the simulation that is associated with the collision mesh. + var bufferGeometry = new THREE.PlaneBufferGeometry(this.PLANE_SIZE, this.PLANE_SIZE); + var result = new THREE.Mesh(bufferGeometry); + result.rotation.x = -Math.PI/2; + // Apply transformation such that ray caster detects plane in correct orientation + // even if it is not added to the scene + result.updateMatrix(); + result.geometry.applyMatrix(result.matrix); + result.rotation.set(0, 0, 0); + result.updateMatrix(); + result.index = index; + return result; +}; + +/** + * @return {Simulation[]} {@link SimulationManager#simulations} + */ +SimulationManager.prototype.getSimulations = function() { + return this.simulations; +}; + +/** + * @return {number[]} {@link SimulationManager#active} + */ +SimulationManager.prototype.getActive = function() { + return this.active; +}; + +/** + * Return a list of active simulations as tuples, each of which consists of the + * index of the simulation and the simulation itself. + * @return {Object[]} + */ +SimulationManager.prototype.getActiveSimulations = function() { + var self = this; + return this.active.map(function(idx) { return [idx, self.simulations[idx]]; }); +}; + +/** + * @callback SimulationManager~activeCallback + * @param {number} activeIndex + * @param {Simulation} activeSimulation + */ + +/** + * Iterate over active simulations. + * + * @param {SimulationManager~activeCallback} - a function called for each active simulation + */ +SimulationManager.prototype.forEachActive = function(callback) { + var self = this; + this.active.forEach(function(activeIndex) { + callback(activeIndex, self.simulations[activeIndex]); + }); +} + +/** + * Check whether a given simulation specified by index is active. + * + * @param {number} index - index of simulation + */ +SimulationManager.prototype.isActive = function(index) { + return this.active.includes(index); +}; + +/** + * Update meshes to show the given frame for the given quantity. + * + * @param {string} quantity - quantity to display + * @param {number} frame - frame to display + */ +SimulationManager.prototype.loadFrame = function(quantity, frame) { + this.frame = frame; + + if (this.singleMode) { + this.loadSingleFrame(frame); + } else { + var self = this; + this.active.forEach(function(index) { + self.loadFrameForIndex(quantity, index, frame); + }); + } +}; + +/** + * Similar to {@link SimulationManager#loadFrame}, but for single mode (i.e. + * all quantities). + * + * @param {number} frame - frame to load + */ +SimulationManager.prototype.loadSingleFrame = function(frame) { + var self = this; + QUANTITIES.forEach(function(qty, qtyIdx) { + var disp = self.singleMeshes[qtyIdx].geometry.attributes.displacement; + disp.array = self.simulations[self.singleSimulationIndex].getReal(qty, frame); + disp.needsUpdate = true; + }); +}; + +/** + * Load the given frame for the given quantity for the given simulation index. + * + * @private + * @param {string} quantity - quantity + * @param {number} index - simulation index + * @param {number} frame - frame + */ +SimulationManager.prototype.loadFrameForIndex = function(quantity, index, frame) { + var simulation = this.simulations[index]; + var plane = simulation.mesh; + + // Update plane + var displacementArray = plane.geometry.attributes.displacement.array; + var newArray = simulation.getReal(quantity, frame); + console.assert(newArray.length === plane.geometry.attributes.displacement.array.length); + plane.geometry.attributes.displacement.array = newArray; + plane.geometry.attributes.displacement.needsUpdate = true; +}; + +/** + * Check whether there already exists a simulation for the given set of cosmological parameters. + * + * @param {Object} cosmoParams - object of cosmological parameters + * @return {bool} + */ +SimulationManager.prototype.wasAlreadySimulated = function(cosmoParams) { + for (var simulation of this.simulations) { + // Require that cosmo params have already been set. + // This is not the case for the first simulation. + if (simulation.params) { + var sProps = Object.getOwnPropertyNames(simulation.params); + var nProps = Object.getOwnPropertyNames(cosmoParams); + + var lengthMatch = sProps.length == nProps.length; + var propMatch = true; + + for (var i = 0; i < sProps.length; i++) { + var pName = sProps[i]; + if (simulation.params[pName] !== cosmoParams[pName]) { + propMatch = false; + break; + } + } + + if (lengthMatch && propMatch) { + return true; + } + } + } + return false; +}; + +/** + * Get number of frames. + * @return {number} frame count + */ +SimulationManager.prototype.getFrameCount = function() { + if (this.simulations.length > 0) + return this.simulations[0].getFrameCount(); + else + return 0; +}; + +/** + * @return {THREE.Group} {@link SimulationManager#planeGroup} + */ +SimulationManager.prototype.getGroup = function() { + return this.planeGroup; +}; + +/** + * @return {THREE.Group} {@link SimulationManager#collisionPlaneGroup} + */ +SimulationManager.prototype.getCollisionGroup = function() { + return this.collisionPlaneGroup; +}; + +/** + * Set a uniform value for all materials. + * + * @param {string} key - uniform key + * @param {Object} value - value for key + */ +SimulationManager.prototype.setUniform = function(key, value) { + var self = this; + if (this.singleMode) { + this.singleMeshes.forEach(function(mesh) { + mesh.material.uniforms[key].value = value; + }); + } else { + this.active.forEach(function(idx) { + var simulation = self.simulations[idx]; + if (simulation.mesh) { + simulation.mesh.material.uniforms[key].value = value; + } + }); + } +}; + +/** + * Get transfer function arrays of all simulations for given quantity and frame. + * + * @param {string} quantity + * @param {number} frame + * + * @return {Float32Array[]} array of transfer function data for all simulations + */ +SimulationManager.prototype.getTransferData = function(quantity, frame) { + var self = this; + return this.active.map(function(idx) { return self.simulations[idx].transfer[quantity][frame]; }); +}; + +/** + * Get transfer function data for given quantity and frame of active single-mode simulation. + * + * @param {string} quantity + * @param {number} frame + * + * @return {Float32Array} + */ +SimulationManager.prototype.getTransferDataOfSingle = function(quantity, frame) { + var self = this; + return self.simulations[self.singleSimulationIndex].transfer[quantity][frame]; +}; + +/** + * Get index and simulation itself of currently active single mode simulation. + * + * @return {Object[]} + */ +SimulationManager.prototype.getSingleSimulation = function() { + return [this.singleSimulationIndex, this.simulations[this.singleSimulationIndex]]; +}; diff --git a/class/RealSpaceInterface/static/js/simulationList.js b/class/RealSpaceInterface/static/js/simulationList.js new file mode 100644 index 00000000..3381a5c2 --- /dev/null +++ b/class/RealSpaceInterface/static/js/simulationList.js @@ -0,0 +1,337 @@ +/** + * Number of decimal digits to round values to in the simulation list dialog. + * @const + * @type {number} + */ +const SIMU_LIST_ROUNDING = 3; + +/** + * Will be called when a simulation is deleted. + * + * @callback SimuTable~deleteCallback + * @param {number} index - index of simulation to be deleted + */ + +/** + * Will be called when a simulation is activated. + * + * @callback SimuTable~activateCallback + * @param {number} index - index of simulation to be activated + */ + +/** + * Will be called when a simulation is deactivated. + * @callback SimuTable~deactivateCallback + * @param {number} index - index of simulation to be deactivated + */ + +/** + * Will be called when a .gif needs to be created for a simulation. + * @callback SimuTable~gifCallback + * @param {number} index - index of simulation to create a .gif of + */ + +/** + * Will be called when an image needs to be created for a simulation at the current frame. + * @callback SimuTable~imageCallback + * @param {number} index - index of simulation to create an image of + */ + +/** + * Will be called when user requests simulation to be displayed in 'single' mode + * @callback SimuTable~singleModeCallback + * @param {number} index - index of simulation to display in single mode + */ + +/** + * Will be called when user requests camera to be focused on a simulation. + * @callback SimuTable~focusCameraCallback + * @param {number} index - index of simulation to focus in view + */ + +/** + * Will be called when user requests to load parameters of simulation + * into control panel. + * @callback SimuTable~loadParamCallback + * @param {number} index - index of simulation of which to load parameters + */ + +/** + * + * Implementation of a list dialog which displays previously run simulations + * along with their respective set of cosmological parameters. + * Exposes additional functionality such as hiding and showing individual + * simulations, entering 'single' mode, in which only a single simulation + * (but all quantities of that simulation) are shown, creating a .gif and + * deleting a simulation from memory. + * The passed callbacks are bound to the appropriate buttons and actions. + * + * @constructor + * + * @param {SimuTable~deleteCallback} deleteCallback + * @param {SimuTable~activateCallback} activateCallback + * @param {SimuTable~deactivateCallback} deactivateCallback + * @param {SimuTable~gifCallback} gifCallback + * @param {SimuTable~imageCallback} imageCallback + * @param {SimuTable~singleModeCallback} singleModeCallback + * @param {SimuTable~focusCameraCallback} focusCameraCallback + * @param {SimuTable~loadParamCallback} loadParamCallback + */ +function SimuTable(deleteCallback, activateCallback, deactivateCallback, + gifCallback, imageCallback, singleModeCallback, focusCameraCallback, + loadParamCallback) { + this.deleteCallback = deleteCallback; + this.activateCallback = activateCallback; + this.deactivateCallback = deactivateCallback; + this.gifCallback = gifCallback; + this.imageCallback = imageCallback; + this.singleModeCallback = singleModeCallback; + this.focusCameraCallback = focusCameraCallback; + this.loadParamCallback = loadParamCallback; + + this.table = document.getElementById("simulationTable"); + this.tableHead = document.getElementById("simulationTableHead"); + this.tableBody = document.getElementById("simulationTableBody"); + this.rowTemplate = document.getElementById("simulationTableRowTemplate"); + + this.activeSet = 0; + + this.displayParams = ["omega_b", "omega_m", "Omega_k", "N_ur", "w0_fld", "wa_fld"]; + this.displayLabels = ["ωb", "ωm", "Ωk", + "Nur", "w0,fld", "wa,fld"]; +} + +/** + * Creates the table header for the modal. + * Reads table column headings from {@link COSMOLOGICAL_PARAMETER_LIST}. + * + */ +SimuTable.prototype.createHeader = function() { + var headRow = document.createElement("tr"); + + var activeTh = document.createElement("th"); + activeTh.textContent = "Active"; + headRow.appendChild(activeTh); + + var idxTh = document.createElement("th"); + idxTh.textContent = "#"; + idxTh.setAttribute("scope", "col"); + + headRow.appendChild(idxTh); + + for (var entry of COSMOLOGICAL_PARAMETER_LIST) { + var th = document.createElement("th"); + th.innerHTML = entry.displayName; + headRow.appendChild(th); + } + + var actionsTh = document.createElement("th"); + actionsTh.textContent = "Actions"; + + var colorTh = document.createElement("th"); + colorTh.textContent = "Color"; + + headRow.appendChild(actionsTh); + headRow.appendChild(colorTh); + + this.tableHead.appendChild(headRow); +} + +/** + * Given a list of simulations and a list of active simulations, + * populates the dialog with their data. + * + * @param {Simulation[]} simulations - list of all simulations + * @param {number[]} activeList - array of indices of active simulations. + * required to determine whether to show + * individual simulations as active or + * inactive. + */ +SimuTable.prototype.populate = function(simulations, activeList) { + var self = this; + // Data + simulations.forEach(function(sim, i) { + var isActive = activeList.includes(i); + + var sim = simulations[i]; + var row = document.createElement("tr"); + row.setAttribute("scope", "row"); + row.classList.toggle("table-primary", isActive); + + // Active checkbox + var checkbox = document.createElement("input"); + checkbox.setAttribute("type", "checkbox"); + checkbox.classList.add("visible-checkbox"); + + checkbox.onclick = function() { + row.classList.toggle("table-primary"); + if (checkbox.checked) { + self.activateCallback(i); + } else { + self.deactivateCallback(i); + } + }; + var checkboxTd = document.createElement("td"); + checkbox.checked = isActive; + checkboxTd.appendChild(checkbox); + row.appendChild(checkboxTd); + + // Index + var idxCol = document.createElement("td"); + idxCol.textContent = i; + row.appendChild(idxCol); + + for (var entry of COSMOLOGICAL_PARAMETER_LIST) { + var td = document.createElement("td"); + td.textContent = round(sim.params[entry.name], 3); + row.appendChild(td); + } + + /* BUTTONS */ + var buttonGroup = document.createElement("div"); + buttonGroup.classList.add("btn-group", "btn-group-sm"); + + // Expand in Single Mode Button + var singleModeButton = document.createElement("button"); + singleModeButton.classList.add("btn", "btn-primary", "simulationTableSingleModeBtn"); + var singleIconSpan = document.createElement("span"); + singleIconSpan.classList.add("oi", "oi-layers"); + singleModeButton.appendChild(singleIconSpan); + singleModeButton.onclick = function() { + self.singleModeCallback(i); + }; + singleModeButton.setAttribute("data-toggle", "tooltip"); + singleModeButton.setAttribute("data-placement", "top"); + singleModeButton.setAttribute("title", "Show all quantities side by side"); + buttonGroup.appendChild(singleModeButton); + + // Image Button + var imgButton = document.createElement("button"); + imgButton.classList.add("btn", "btn-success", "simulationTableImgBtn"); + var imgIconSpan = document.createElement("span"); + imgIconSpan.classList.add("oi", "oi-image"); + imgButton.appendChild(imgIconSpan); + imgButton.onclick = function() { + self.imageCallback(i); + }; + imgButton.setAttribute("data-toggle", "tooltip"); + imgButton.setAttribute("data-placement", "top"); + imgButton.setAttribute("title", "Take Snapshot"); + buttonGroup.appendChild(imgButton); + + // GIF Button + var gifButton = document.createElement("button"); + gifButton.classList.add("btn", "btn-success", "simulationTableGifBtn"); + var gifIconSpan = document.createElement("span"); + gifIconSpan.classList.add("oi", "oi-video"); + gifButton.appendChild(gifIconSpan); + gifButton.onclick = function() { + self.gifCallback(i); + }; + gifButton.setAttribute("data-toggle", "tooltip"); + gifButton.setAttribute("data-placement", "top"); + gifButton.setAttribute("title", "Create .gif"); + buttonGroup.appendChild(gifButton); + + // Load Parameters Button + var loadParamButton = document.createElement("button"); + loadParamButton.classList.add("btn", "btn-secondary", + "simulationTableLoadParamBtn"); + var paramIconSpan = document.createElement("span"); + paramIconSpan.classList.add("oi", "oi-list-rich"); + loadParamButton.appendChild(paramIconSpan); + loadParamButton.onclick = function() { + self.loadParamCallback(i); + }; + loadParamButton.setAttribute("data-toggle", "tooltip"); + loadParamButton.setAttribute("data-placement", "top"); + loadParamButton.setAttribute("title", "Load Parameters in Control Panel"); + buttonGroup.appendChild(loadParamButton); + + // Focus Camera Button + var focusCameraButton = document.createElement("button"); + focusCameraButton.classList.add("btn", "btn-secondary", "simulationTableFocusCameraBtn"); + var focusIconSpan = document.createElement("span"); + focusIconSpan.classList.add("oi", "oi-aperture"); + focusCameraButton.appendChild(focusIconSpan); + focusCameraButton.onclick = function() { + self.focusCameraCallback(i); + }; + focusCameraButton.setAttribute("data-toggle", "tooltip"); + focusCameraButton.setAttribute("data-placement", "top"); + focusCameraButton.setAttribute("title", "Focus in View"); + buttonGroup.appendChild(focusCameraButton); + + // Delete Button + var deleteButton = document.createElement("button"); + deleteButton.classList.add("btn", "btn-danger", "simulationTableDelBtn"); + var deleteIconSpan = document.createElement("span"); + deleteIconSpan.classList.add("oi", "oi-x"); + deleteButton.appendChild(deleteIconSpan); + deleteButton.onclick = function() { + self.deleteCallback(i); + }; + deleteButton.setAttribute("data-toggle", "tooltip"); + deleteButton.setAttribute("data-placement", "top"); + deleteButton.setAttribute("title", "Delete (cannot be undone!)"); + buttonGroup.appendChild(deleteButton); + + + var buttonTd = document.createElement("td"); + buttonTd.appendChild(buttonGroup); + row.appendChild(buttonTd); + + + // Color + var colorCircleTd = document.createElement("td"); + colorCircleTd.classList.add("color-circle-container"); + var colorCircle = document.createElement("div"); + colorCircleTd.appendChild(colorCircle); + colorCircle.classList.add("color-circle"); + colorCircle.style.backgroundColor = colors[i % colors.length]; + + row.appendChild(colorCircleTd); + + + self.tableBody.appendChild(row); + }); + + $(function () { + $('[data-toggle="tooltip"]').tooltip() + }); + +}; + +/** + * Activate a given simulation. + * + * @param {number} idx - index of simulation to active + * @deprecated + * @ignore + */ +SimuTable.prototype.setActive = function(idx) { + if (this.activeSet >= 0) { + this.tableBody.children[this.activeSet].classList.remove("table-primary"); + this.activeSet = idx; + this.tableBody.children[this.activeSet].classList.add("table-primary"); + } +} + +/** + * Clears all rows. + */ +SimuTable.prototype.clear = function() { + while (this.tableBody.firstChild) { + this.tableBody.removeChild(this.tableBody.firstChild); + } +} + +/** + * Refreshes (i.e. clears and repopulates). + * @deprecated + * @ignore + */ +SimuTable.prototype.refresh = function() { + this.clear(); + this.populate(); +} diff --git a/class/RealSpaceInterface/static/js/sockjs.min.js b/class/RealSpaceInterface/static/js/sockjs.min.js new file mode 100644 index 00000000..19b2b7eb --- /dev/null +++ b/class/RealSpaceInterface/static/js/sockjs.min.js @@ -0,0 +1,28 @@ +/* SockJS client, version 0.3.4, http://sockjs.org, MIT License + +Copyright (c) 2011-2012 VMware, Inc. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +*/ + +// JSON2 by Douglas Crockford (minified). +var JSON;JSON||(JSON={}),function(){function str(a,b){var c,d,e,f,g=gap,h,i=b[a];i&&typeof i=="object"&&typeof i.toJSON=="function"&&(i=i.toJSON(a)),typeof rep=="function"&&(i=rep.call(b,a,i));switch(typeof i){case"string":return quote(i);case"number":return isFinite(i)?String(i):"null";case"boolean":case"null":return String(i);case"object":if(!i)return"null";gap+=indent,h=[];if(Object.prototype.toString.apply(i)==="[object Array]"){f=i.length;for(c=0;c1?this._listeners[a]=d.slice(0,e).concat(d.slice(e+1)):delete this._listeners[a];return}return},d.prototype.dispatchEvent=function(a){var b=a.type,c=Array.prototype.slice.call(arguments,0);this["on"+b]&&this["on"+b].apply(this,c);if(this._listeners&&b in this._listeners)for(var d=0;d=3e3&&a<=4999},c.countRTO=function(a){var b;return a>100?b=3*a:b=a+200,b},c.log=function(){b.console&&console.log&&console.log.apply&&console.log.apply(console,arguments)},c.bind=function(a,b){return a.bind?a.bind(b):function(){return a.apply(b,arguments)}},c.flatUrl=function(a){return a.indexOf("?")===-1&&a.indexOf("#")===-1},c.amendUrl=function(b){var d=a.location;if(!b)throw new Error("Wrong url for SockJS");if(!c.flatUrl(b))throw new Error("Only basic urls are supported in SockJS");return b.indexOf("//")===0&&(b=d.protocol+b),b.indexOf("/")===0&&(b=d.protocol+"//"+d.host+b),b=b.replace(/[/]+$/,""),b},c.arrIndexOf=function(a,b){for(var c=0;c=0},c.delay=function(a,b){return typeof a=="function"&&(b=a,a=0),setTimeout(b,a)};var i=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,j={"\0":"\\u0000","\x01":"\\u0001","\x02":"\\u0002","\x03":"\\u0003","\x04":"\\u0004","\x05":"\\u0005","\x06":"\\u0006","\x07":"\\u0007","\b":"\\b","\t":"\\t","\n":"\\n","\x0b":"\\u000b","\f":"\\f","\r":"\\r","\x0e":"\\u000e","\x0f":"\\u000f","\x10":"\\u0010","\x11":"\\u0011","\x12":"\\u0012","\x13":"\\u0013","\x14":"\\u0014","\x15":"\\u0015","\x16":"\\u0016","\x17":"\\u0017","\x18":"\\u0018","\x19":"\\u0019","\x1a":"\\u001a","\x1b":"\\u001b","\x1c":"\\u001c","\x1d":"\\u001d","\x1e":"\\u001e","\x1f":"\\u001f",'"':'\\"',"\\":"\\\\","\x7f":"\\u007f","\x80":"\\u0080","\x81":"\\u0081","\x82":"\\u0082","\x83":"\\u0083","\x84":"\\u0084","\x85":"\\u0085","\x86":"\\u0086","\x87":"\\u0087","\x88":"\\u0088","\x89":"\\u0089","\x8a":"\\u008a","\x8b":"\\u008b","\x8c":"\\u008c","\x8d":"\\u008d","\x8e":"\\u008e","\x8f":"\\u008f","\x90":"\\u0090","\x91":"\\u0091","\x92":"\\u0092","\x93":"\\u0093","\x94":"\\u0094","\x95":"\\u0095","\x96":"\\u0096","\x97":"\\u0097","\x98":"\\u0098","\x99":"\\u0099","\x9a":"\\u009a","\x9b":"\\u009b","\x9c":"\\u009c","\x9d":"\\u009d","\x9e":"\\u009e","\x9f":"\\u009f","\xad":"\\u00ad","\u0600":"\\u0600","\u0601":"\\u0601","\u0602":"\\u0602","\u0603":"\\u0603","\u0604":"\\u0604","\u070f":"\\u070f","\u17b4":"\\u17b4","\u17b5":"\\u17b5","\u200c":"\\u200c","\u200d":"\\u200d","\u200e":"\\u200e","\u200f":"\\u200f","\u2028":"\\u2028","\u2029":"\\u2029","\u202a":"\\u202a","\u202b":"\\u202b","\u202c":"\\u202c","\u202d":"\\u202d","\u202e":"\\u202e","\u202f":"\\u202f","\u2060":"\\u2060","\u2061":"\\u2061","\u2062":"\\u2062","\u2063":"\\u2063","\u2064":"\\u2064","\u2065":"\\u2065","\u2066":"\\u2066","\u2067":"\\u2067","\u2068":"\\u2068","\u2069":"\\u2069","\u206a":"\\u206a","\u206b":"\\u206b","\u206c":"\\u206c","\u206d":"\\u206d","\u206e":"\\u206e","\u206f":"\\u206f","\ufeff":"\\ufeff","\ufff0":"\\ufff0","\ufff1":"\\ufff1","\ufff2":"\\ufff2","\ufff3":"\\ufff3","\ufff4":"\\ufff4","\ufff5":"\\ufff5","\ufff6":"\\ufff6","\ufff7":"\\ufff7","\ufff8":"\\ufff8","\ufff9":"\\ufff9","\ufffa":"\\ufffa","\ufffb":"\\ufffb","\ufffc":"\\ufffc","\ufffd":"\\ufffd","\ufffe":"\\ufffe","\uffff":"\\uffff"},k=/[\x00-\x1f\ud800-\udfff\ufffe\uffff\u0300-\u0333\u033d-\u0346\u034a-\u034c\u0350-\u0352\u0357-\u0358\u035c-\u0362\u0374\u037e\u0387\u0591-\u05af\u05c4\u0610-\u0617\u0653-\u0654\u0657-\u065b\u065d-\u065e\u06df-\u06e2\u06eb-\u06ec\u0730\u0732-\u0733\u0735-\u0736\u073a\u073d\u073f-\u0741\u0743\u0745\u0747\u07eb-\u07f1\u0951\u0958-\u095f\u09dc-\u09dd\u09df\u0a33\u0a36\u0a59-\u0a5b\u0a5e\u0b5c-\u0b5d\u0e38-\u0e39\u0f43\u0f4d\u0f52\u0f57\u0f5c\u0f69\u0f72-\u0f76\u0f78\u0f80-\u0f83\u0f93\u0f9d\u0fa2\u0fa7\u0fac\u0fb9\u1939-\u193a\u1a17\u1b6b\u1cda-\u1cdb\u1dc0-\u1dcf\u1dfc\u1dfe\u1f71\u1f73\u1f75\u1f77\u1f79\u1f7b\u1f7d\u1fbb\u1fbe\u1fc9\u1fcb\u1fd3\u1fdb\u1fe3\u1feb\u1fee-\u1fef\u1ff9\u1ffb\u1ffd\u2000-\u2001\u20d0-\u20d1\u20d4-\u20d7\u20e7-\u20e9\u2126\u212a-\u212b\u2329-\u232a\u2adc\u302b-\u302c\uaab2-\uaab3\uf900-\ufa0d\ufa10\ufa12\ufa15-\ufa1e\ufa20\ufa22\ufa25-\ufa26\ufa2a-\ufa2d\ufa30-\ufa6d\ufa70-\ufad9\ufb1d\ufb1f\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40-\ufb41\ufb43-\ufb44\ufb46-\ufb4e\ufff0-\uffff]/g,l,m=JSON&&JSON.stringify||function(a){return i.lastIndex=0,i.test(a)&&(a=a.replace(i,function(a){return j[a]})),'"'+a+'"'},n=function(a){var b,c={},d=[];for(b=0;b<65536;b++)d.push(String.fromCharCode(b));return a.lastIndex=0,d.join("").replace(a,function(a){return c[a]="\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4),""}),a.lastIndex=0,c};c.quote=function(a){var b=m(a);return k.lastIndex=0,k.test(b)?(l||(l=n(k)),b.replace(k,function(a){return l[a]})):b};var o=["websocket","xdr-streaming","xhr-streaming","iframe-eventsource","iframe-htmlfile","xdr-polling","xhr-polling","iframe-xhr-polling","jsonp-polling"];c.probeProtocols=function(){var a={};for(var b=0;b0&&h(a)};return c.websocket!==!1&&h(["websocket"]),d["xhr-streaming"]&&!c.null_origin?e.push("xhr-streaming"):d["xdr-streaming"]&&!c.cookie_needed&&!c.null_origin?e.push("xdr-streaming"):h(["iframe-eventsource","iframe-htmlfile"]),d["xhr-polling"]&&!c.null_origin?e.push("xhr-polling"):d["xdr-polling"]&&!c.cookie_needed&&!c.null_origin?e.push("xdr-polling"):h(["iframe-xhr-polling","jsonp-polling"]),e};var p="_sockjs_global";c.createHook=function(){var a="a"+c.random_string(8);if(!(p in b)){var d={};b[p]=function(a){return a in d||(d[a]={id:a,del:function(){delete d[a]}}),d[a]}}return b[p](a)},c.attachMessage=function(a){c.attachEvent("message",a)},c.attachEvent=function(c,d){typeof b.addEventListener!="undefined"?b.addEventListener(c,d,!1):(a.attachEvent("on"+c,d),b.attachEvent("on"+c,d))},c.detachMessage=function(a){c.detachEvent("message",a)},c.detachEvent=function(c,d){typeof b.addEventListener!="undefined"?b.removeEventListener(c,d,!1):(a.detachEvent("on"+c,d),b.detachEvent("on"+c,d))};var q={},r=!1,s=function(){for(var a in q)q[a](),delete q[a]},t=function(){if(r)return;r=!0,s()};c.attachEvent("unload",t),c.unload_add=function(a){var b=c.random_string(8);return q[b]=a,r&&c.delay(s),b},c.unload_del=function(a){a in q&&delete q[a]},c.createIframe=function(b,d){var e=a.createElement("iframe"),f,g,h=function(){clearTimeout(f);try{e.onload=null}catch(a){}e.onerror=null},i=function(){e&&(h(),setTimeout(function(){e&&e.parentNode.removeChild(e),e=null},0),c.unload_del(g))},j=function(a){e&&(i(),d(a))},k=function(a,b){try{e&&e.contentWindow&&e.contentWindow.postMessage(a,b)}catch(c){}};return e.src=b,e.style.display="none",e.style.position="absolute",e.onerror=function(){j("onerror")},e.onload=function(){clearTimeout(f),f=setTimeout(function(){j("onload timeout")},2e3)},a.body.appendChild(e),f=setTimeout(function(){j("timeout")},15e3),g=c.unload_add(i),{post:k,cleanup:i,loaded:h}},c.createHtmlfile=function(a,d){var e=new ActiveXObject("htmlfile"),f,g,i,j=function(){clearTimeout(f)},k=function(){e&&(j(),c.unload_del(g),i.parentNode.removeChild(i),i=e=null,CollectGarbage())},l=function(a){e&&(k(),d(a))},m=function(a,b){try{i&&i.contentWindow&&i.contentWindow.postMessage(a,b)}catch(c){}};e.open(),e.write(' + + + + + + + + + + + + + + + + + + + + + + + + + {% block threejs %} + {% end %} + + + + + + + + + + + + {% include "SimulationList.html" %} + {% include "ProgressModal.html" %} + {% include "AlreadySimulatedModal.html" %} + {% include "GifExportModal.html" %} + {% include "ImageExportModal.html" %} + {% include "ExceptionModal.html" %} + {% include "RedshiftModal.html" %} + + {% block body %} + {% end %} + + diff --git a/class/RealSpaceInterface/templates/ImageExportModal.html b/class/RealSpaceInterface/templates/ImageExportModal.html new file mode 100644 index 00000000..6ffd11af --- /dev/null +++ b/class/RealSpaceInterface/templates/ImageExportModal.html @@ -0,0 +1,49 @@ + + diff --git a/class/RealSpaceInterface/templates/ProgressModal.html b/class/RealSpaceInterface/templates/ProgressModal.html new file mode 100644 index 00000000..8d7a6ac3 --- /dev/null +++ b/class/RealSpaceInterface/templates/ProgressModal.html @@ -0,0 +1,28 @@ + + + diff --git a/class/RealSpaceInterface/templates/RSI.html b/class/RealSpaceInterface/templates/RSI.html new file mode 100644 index 00000000..bc0da323 --- /dev/null +++ b/class/RealSpaceInterface/templates/RSI.html @@ -0,0 +1,180 @@ +{% extends "Header.html" %} + + {% block body %} + +
+ +
+
+
+
+
+
+ +
+ +
+
+
+ + + + +
+
+ + +
+ Division Size: N/A +
+
+ +
+
+
+
+
+ + About + + + + + {% end %} + + {% block threejs %} + + + + + + + + + + + + + + + + + + + + + + + + + + + + {% end %} diff --git a/class/RealSpaceInterface/templates/RedshiftModal.html b/class/RealSpaceInterface/templates/RedshiftModal.html new file mode 100644 index 00000000..71b74e51 --- /dev/null +++ b/class/RealSpaceInterface/templates/RedshiftModal.html @@ -0,0 +1,57 @@ + + + + + diff --git a/class/RealSpaceInterface/templates/SimulationList.html b/class/RealSpaceInterface/templates/SimulationList.html new file mode 100644 index 00000000..b3db40c0 --- /dev/null +++ b/class/RealSpaceInterface/templates/SimulationList.html @@ -0,0 +1,19 @@ + + diff --git a/class/RealSpaceInterface/templates/index.html b/class/RealSpaceInterface/templates/index.html new file mode 100644 index 00000000..29a0aadd --- /dev/null +++ b/class/RealSpaceInterface/templates/index.html @@ -0,0 +1,14 @@ + + + + three.js webgl - geometry - dynamic + + + + + +
+ + + + diff --git a/class/RealSpaceInterface/tornadoserver.py b/class/RealSpaceInterface/tornadoserver.py new file mode 100644 index 00000000..04d5d937 --- /dev/null +++ b/class/RealSpaceInterface/tornadoserver.py @@ -0,0 +1,248 @@ +from Calc2D.CalculationClass import Calculation + +import time +import numpy as np +from concurrent.futures import ThreadPoolExecutor +from tornado.ioloop import IOLoop +from tornado import gen +import tornado.web +import tornado.websocket +import os +import os.path +import json +import unicodedata +import logging +import base64 +import traceback +import sys + +import config + +pool = ThreadPoolExecutor(max_workers=config.MAX_THREADPOOL_WORKERS) + +def generate_redshifts(redshift_config): + logging.info(redshift_config) + arrs = [] + for conf in redshift_config: + log = conf["log"] + func = np.logspace if log else np.linspace + start = np.log10(conf["from"]) if log else conf["from"] + stop = np.log10(conf["to"]) if log else conf["to"] + arrs.append(func(start, stop, conf["points"])) + # Remove duplicates + return np.flip(np.unique(np.concatenate(arrs)), axis=0) + +# Load available colormaps +def get_colormaps(path=config.COLORMAP_PATH): + categories = [] + maps = [] + order = {'Default': 1, 'Uniform': 2, 'Diverging': 3, 'Miscellaneous': 4} + cmap_directories = list(sorted( + os.listdir(os.path.join("static", path)), + key=lambda d: order[d] + )) + for directory in cmap_directories: + categories.append(directory) + maps_for_category = [] + for cmap in os.listdir(os.path.join("static", path, directory)): + maps_for_category.append({ + 'label': cmap[:cmap.rfind(".")], + 'src': os.path.join(os.path.join(config.COLORMAP_PATH, directory, cmap)), + }) + maps.append(maps_for_category) + return categories, maps + +class SimulationHandler(tornado.web.RequestHandler): + def get(self): + categories, colormaps = get_colormaps() + self.render('RSI.html', categories=categories, colormaps=colormaps) + +class DataConnection(tornado.websocket.WebSocketHandler): + def open(self): + logging.info("Client connected!") + self.calc = Calculation(kbins=config.TRANSFER_FUNCTION_CLIENT_SAMPLES) + # Send list of `k` values only once + logging.info("Sending k range to client"); + self.write_message(json.dumps({ + "type": "krange", + "k": self.calc.krange.tolist() + })) + + def on_close(self): + logging.info("Connection was closed") + + @gen.coroutine + def on_message(self, message): + message = json.loads(message) + param_type = message['type'] + logging.debug("Received message from client: {}".format(message)) + params = message['params'] + if param_type == "Initial": + initialDataType = str(params['initialDataType']) + + size = params["xScale"] + resolution = int(params["resolution"]) + self.calc.resolution = resolution + self.calc.size = size + + logging.info("Size: {} x {} Mpc^2, resolution: {} x {}".format(size, size, resolution, resolution)) + + SIlimit = params['SILimit'] + + if SIlimit == "None": + SIlimit = None + + sigma = float(params['sigma']) + + SI_ns = params['n_s'] + if initialDataType == "SI": + A_s = 2.214 * 10**(-9) + else: + A_s = 1 + + redshift = generate_redshifts(params["redshift"]) + self.calc.redshift = redshift + + self.write_message( + json.dumps({ + 'type': 'redshift', + 'redshift': redshift.tolist() + })) + + logging.info("Submitting initial state generation to ThreadPoolExecutor") + yield pool.submit(self.set_initial_condition, sigma, initialDataType, + SIlimit, SI_ns, A_s) + self.send_initial_state() + self.write_message(json.dumps({'type': 'success', 'sort': 'Initial'})) + + elif param_type == "Cosmo": + logging.info("Received cosmological parameters") + cosmological_parameters = params + logging.info("Submitting calculation to ThreadPoolExecutor") + messages = yield pool.submit(self.set_cosmological_parameters, cosmological_parameters) + for message in messages: + self.write_message(json.dumps(message)) + elif param_type == "Start": + logging.info("Starting propagation...") + try: + for redindex, z in enumerate(self.calc.redshift): + self.send_frame(redindex) + self.write_message(json.dumps({'type': 'success', 'sort': 'Data'})) + except Exception as e: + logging.exception(e) + self.send_exception(e) + + def send_frame(self, redindex): + # `extrema`: (minimum, maximum) of (real space) data + Valuenew, FValuenew, extrema = self.calc.getData(redindex) + logging.info("Sending data for redshift = {}".format(self.calc.redshift[redindex])) + + # Create data to be displayed in transfer function window + TransferData, _ = self.calc.getTransferData(redindex) + + self.write_message(json.dumps({'type': 'extrema', 'extrema': extrema})) + progress = float(redindex) / len(self.calc.redshift) + + real = {quantity: base64.b64encode(data.astype(np.float32)) for quantity, data in Valuenew.iteritems()} + transfer = {quantity: base64.b64encode(data.astype(np.float32)) for quantity, data in TransferData.iteritems()} + self.write_message( + json.dumps({ + 'type': 'data', + 'progress': progress, + 'real': real, + 'fourier': [], + 'transfer': transfer, + })) + + def send_initial_state(self): + Value, FValue, extrema = self.calc.getInitialData() + TransferData = np.ones(config.TRANSFER_FUNCTION_CLIENT_SAMPLES) + krange = np.zeros(config.TRANSFER_FUNCTION_CLIENT_SAMPLES) + logging.info("Sending initial data to client.") + self.write_message({ + "type": "resolution", + "value": self.calc.resolution + }) + extremastring = json.dumps({'type': 'extrema', 'extrema': extrema}) + datastring = json.dumps({ + 'type': 'data', + 'real': base64.b64encode(Value.astype(np.float32)), + 'fourier': [], + 'transfer': base64.b64encode(TransferData.astype(np.float32)), + 'k': krange.tolist() + }) + self.write_message(extremastring) + self.write_message(datastring) + + + def set_initial_condition(self, sigma, initialDataType, SIlimit, SI_ns, A_s): + try: + self.calc.setInitialConditions( + sigma=sigma, + initialDataType=initialDataType, + SIlimit=SIlimit, + SI_ns=SI_ns, + A=A_s + ) + except Exception as e: + logging.exception(e) + self.send_exception(e) + + def send_exception(self, e): + self.write_message(json.dumps({'type': 'exception', 'exception': traceback.format_exc()})) + + def set_cosmological_parameters(self, cosmologicalParameters): + try: + messages = [] + logging.info("Starting calculation...") + self.calc.setCosmologialParameters(cosmologicalParameters=cosmologicalParameters) + logging.info("Finished calculation!") + + messages.append({'type': 'success', 'sort': 'Cosmo'}) + messages.append({ + 'type': 'Cl', + 'l': self.calc.tCl.l.tolist(), + 'tCl': self.calc.tCl.tCl.tolist() + }) + messages.append({ + 'type': 'mPk', + 'kh': self.calc.mPk.kh.tolist(), + 'Pkh': self.calc.mPk.Pkh.tolist() + }) + + z_of_decoupling = self.calc.z_dec + frame_of_decoupling = np.argmin(np.abs(z_of_decoupling - self.calc.redshift)) + if self.calc.redshift[frame_of_decoupling] > z_of_decoupling: + frame_of_decoupling -= 1 + messages.append({ + 'type': 'decoupling', + 'frame': frame_of_decoupling, + 'z': z_of_decoupling}) + except Exception as e: + logging.exception(e) + self.send_exception(e) + else: + return messages + + +def main(): + logging.getLogger().setLevel(logging.DEBUG) + + application = tornado.web.Application( + [ + (r"/", SimulationHandler), + (r"/datasocket", DataConnection), + ], + template_path=os.path.join(os.path.dirname(__file__), "templates"), + static_path=os.path.join(os.path.dirname(__file__), "static"), + debug=True, + ) + + PORT = config.PORT if len(sys.argv) == 1 else int(sys.argv[1]) + application.listen(PORT) + logging.info("Application launched on http://localhost:{}".format(PORT)) + IOLoop.instance().current().start() + + +if __name__ == '__main__': + main() diff --git a/class/bbn/sBBN_2017.dat b/class/bbn/sBBN_2017.dat new file mode 100644 index 00000000..6968d4a8 --- /dev/null +++ b/class/bbn/sBBN_2017.dat @@ -0,0 +1,542 @@ +# standard BBN prediction of the primordial Helium abundance $Y_p$ as +# function of the baryon density $\omega_b h^2$ and number of extra +# radiation degrees of freedom $\Delta N = N_eff-3.046$. Impact of +# chemical potential of electron neutrinos neglected in this version. +# +# Calculated with PArthENoPE v1.2 for a neutron lifetime of 880.2 s, +# identical to standard assumptions of Planck 2017 papers. +# +# Format: +# First line must contain (num_ombh2,num_DeltaN), other lines must +# contain (ombh2,DeltaN,YHe) blank lines and lines starting with # +# neglected + +48 11 +0.00499 -3.0 0.17643 +0.00599 -3.0 0.17896 +0.00699 -3.0 0.18091 +0.00799 -3.0 0.18251 +0.00898 -3.0 0.18384 +0.00998 -3.0 0.18502 +0.01098 -3.0 0.18604 +0.01198 -3.0 0.18694 +0.01298 -3.0 0.18778 +0.01398 -3.0 0.18852 +0.01497 -3.0 0.1892 +0.01597 -3.0 0.18984 +0.01697 -3.0 0.19044 +0.01797 -3.0 0.191 +0.01897 -3.0 0.19152 +0.01997 -3.0 0.192 +0.02021 -3.0 0.19212 +0.02046 -3.0 0.19225 +0.02071 -3.0 0.19235 +0.02096 -3.0 0.19246 +0.02121 -3.0 0.19258 +0.02146 -3.0 0.19269 +0.02171 -3.0 0.1928 +0.02196 -3.0 0.19291 +0.02221 -3.0 0.19301 +0.02246 -3.0 0.19311 +0.02271 -3.0 0.19321 +0.02296 -3.0 0.19332 +0.02321 -3.0 0.19343 +0.02346 -3.0 0.19352 +0.02371 -3.0 0.19362 +0.02396 -3.0 0.19373 +0.02496 -3.0 0.1941 +0.02595 -3.0 0.19448 +0.02695 -3.0 0.19481 +0.02795 -3.0 0.19514 +0.02895 -3.0 0.19548 +0.02995 -3.0 0.19578 +0.03094 -3.0 0.19609 +0.03194 -3.0 0.19638 +0.03294 -3.0 0.19665 +0.03394 -3.0 0.19693 +0.03494 -3.0 0.19719 +0.03594 -3.0 0.19744 +0.03693 -3.0 0.19769 +0.03793 -3.0 0.19792 +0.03893 -3.0 0.19817 +0.03993 -3.0 0.19838 +0.00499 -2.0 0.19647 +0.00599 -2.0 0.1992 +0.00699 -2.0 0.20131 +0.00799 -2.0 0.203 +0.00898 -2.0 0.2044 +0.00998 -2.0 0.20562 +0.01098 -2.0 0.20669 +0.01198 -2.0 0.20763 +0.01298 -2.0 0.20848 +0.01398 -2.0 0.20923 +0.01497 -2.0 0.20995 +0.01597 -2.0 0.21061 +0.01697 -2.0 0.21122 +0.01797 -2.0 0.21177 +0.01897 -2.0 0.21229 +0.01997 -2.0 0.2128 +0.02021 -2.0 0.21292 +0.02046 -2.0 0.21304 +0.02071 -2.0 0.21316 +0.02096 -2.0 0.21328 +0.02121 -2.0 0.21339 +0.02146 -2.0 0.2135 +0.02171 -2.0 0.21361 +0.02196 -2.0 0.21373 +0.02221 -2.0 0.21382 +0.02246 -2.0 0.21392 +0.02271 -2.0 0.21403 +0.02296 -2.0 0.21412 +0.02321 -2.0 0.21424 +0.02346 -2.0 0.21433 +0.02371 -2.0 0.21444 +0.02396 -2.0 0.21455 +0.02496 -2.0 0.21491 +0.02595 -2.0 0.21528 +0.02695 -2.0 0.21564 +0.02795 -2.0 0.21598 +0.02895 -2.0 0.2163 +0.02995 -2.0 0.21662 +0.03094 -2.0 0.21692 +0.03194 -2.0 0.21722 +0.03294 -2.0 0.2175 +0.03394 -2.0 0.21776 +0.03494 -2.0 0.21804 +0.03594 -2.0 0.21828 +0.03693 -2.0 0.21855 +0.03793 -2.0 0.21878 +0.03893 -2.0 0.21902 +0.03993 -2.0 0.21923 +0.00499 -1.0 0.21295 +0.00599 -1.0 0.21585 +0.00699 -1.0 0.21807 +0.00799 -1.0 0.21983 +0.00898 -1.0 0.22131 +0.00998 -1.0 0.22255 +0.01098 -1.0 0.22365 +0.01198 -1.0 0.2246 +0.01298 -1.0 0.22548 +0.01398 -1.0 0.22626 +0.01497 -1.0 0.22696 +0.01597 -1.0 0.22764 +0.01697 -1.0 0.22826 +0.01797 -1.0 0.22882 +0.01897 -1.0 0.22934 +0.01997 -1.0 0.22984 +0.02021 -1.0 0.22998 +0.02046 -1.0 0.23009 +0.02071 -1.0 0.23022 +0.02096 -1.0 0.23033 +0.02121 -1.0 0.23043 +0.02146 -1.0 0.23056 +0.02171 -1.0 0.23068 +0.02196 -1.0 0.23078 +0.02221 -1.0 0.23089 +0.02246 -1.0 0.231 +0.02271 -1.0 0.23109 +0.02296 -1.0 0.23121 +0.02321 -1.0 0.23131 +0.02346 -1.0 0.2314 +0.02371 -1.0 0.23152 +0.02396 -1.0 0.23161 +0.02496 -1.0 0.23198 +0.02595 -1.0 0.23235 +0.02695 -1.0 0.23271 +0.02795 -1.0 0.23306 +0.02895 -1.0 0.23337 +0.02995 -1.0 0.2337 +0.03094 -1.0 0.23399 +0.03194 -1.0 0.23428 +0.03294 -1.0 0.23455 +0.03394 -1.0 0.23484 +0.03494 -1.0 0.2351 +0.03594 -1.0 0.23534 +0.03693 -1.0 0.23559 +0.03793 -1.0 0.23585 +0.03893 -1.0 0.23607 +0.03993 -1.0 0.23631 +0.00499 0.0 0.22686 +0.00599 0.0 0.22995 +0.00699 0.0 0.23226 +0.00799 0.0 0.23411 +0.00898 0.0 0.2356 +0.00998 0.0 0.23689 +0.01098 0.0 0.238 +0.01198 0.0 0.23901 +0.01298 0.0 0.23987 +0.01398 0.0 0.24066 +0.01497 0.0 0.24139 +0.01597 0.0 0.24206 +0.01697 0.0 0.24268 +0.01797 0.0 0.24324 +0.01897 0.0 0.24378 +0.01997 0.0 0.2443 +0.02021 0.0 0.24442 +0.02046 0.0 0.24454 +0.02071 0.0 0.24465 +0.02096 0.0 0.24478 +0.02121 0.0 0.24488 +0.02146 0.0 0.24498 +0.02171 0.0 0.24509 +0.02196 0.0 0.24522 +0.02221 0.0 0.24533 +0.02246 0.0 0.24543 +0.02271 0.0 0.24552 +0.02296 0.0 0.24563 +0.02321 0.0 0.24575 +0.02346 0.0 0.24585 +0.02371 0.0 0.24595 +0.02396 0.0 0.24603 +0.02496 0.0 0.24642 +0.02595 0.0 0.24679 +0.02695 0.0 0.24714 +0.02795 0.0 0.2475 +0.02895 0.0 0.24781 +0.02995 0.0 0.24812 +0.03094 0.0 0.24843 +0.03194 0.0 0.2487 +0.03294 0.0 0.24898 +0.03394 0.0 0.24926 +0.03494 0.0 0.24952 +0.03594 0.0 0.24977 +0.03693 0.0 0.25003 +0.03793 0.0 0.25027 +0.03893 0.0 0.25051 +0.03993 0.0 0.25071 +0.00499 1.0 0.23893 +0.00599 1.0 0.24216 +0.00699 1.0 0.24457 +0.00799 1.0 0.24646 +0.00898 1.0 0.24801 +0.00998 1.0 0.24932 +0.01098 1.0 0.25046 +0.01198 1.0 0.25145 +0.01298 1.0 0.25236 +0.01398 1.0 0.25315 +0.01497 1.0 0.25388 +0.01597 1.0 0.25456 +0.01697 1.0 0.25517 +0.01797 1.0 0.25577 +0.01897 1.0 0.25629 +0.01997 1.0 0.25679 +0.02021 1.0 0.25692 +0.02046 1.0 0.25704 +0.02071 1.0 0.25716 +0.02096 1.0 0.25726 +0.02121 1.0 0.25737 +0.02146 1.0 0.25749 +0.02171 1.0 0.25762 +0.02196 1.0 0.25771 +0.02221 1.0 0.25784 +0.02246 1.0 0.25794 +0.02271 1.0 0.25805 +0.02296 1.0 0.25815 +0.02321 1.0 0.25824 +0.02346 1.0 0.25836 +0.02371 1.0 0.25844 +0.02396 1.0 0.25855 +0.02496 1.0 0.25892 +0.02595 1.0 0.25928 +0.02695 1.0 0.25965 +0.02795 1.0 0.25999 +0.02895 1.0 0.26031 +0.02995 1.0 0.26062 +0.03094 1.0 0.26091 +0.03194 1.0 0.26121 +0.03294 1.0 0.26149 +0.03394 1.0 0.26176 +0.03494 1.0 0.26201 +0.03594 1.0 0.26225 +0.03693 1.0 0.26249 +0.03793 1.0 0.26273 +0.03893 1.0 0.26296 +0.03993 1.0 0.26321 +0.00499 2.0 0.2495 +0.00599 2.0 0.25288 +0.00699 2.0 0.25538 +0.00799 2.0 0.25733 +0.00898 2.0 0.25896 +0.00998 2.0 0.26028 +0.01098 2.0 0.26145 +0.01198 2.0 0.26244 +0.01298 2.0 0.26336 +0.01398 2.0 0.26417 +0.01497 2.0 0.26491 +0.01597 2.0 0.26557 +0.01697 2.0 0.26618 +0.01797 2.0 0.26678 +0.01897 2.0 0.26732 +0.01997 2.0 0.26782 +0.02021 2.0 0.26793 +0.02046 2.0 0.26806 +0.02071 2.0 0.26817 +0.02096 2.0 0.26827 +0.02121 2.0 0.26839 +0.02146 2.0 0.26852 +0.02171 2.0 0.26861 +0.02196 2.0 0.26872 +0.02221 2.0 0.26883 +0.02246 2.0 0.26896 +0.02271 2.0 0.26906 +0.02296 2.0 0.26916 +0.02321 2.0 0.26925 +0.02346 2.0 0.26935 +0.02371 2.0 0.26947 +0.02396 2.0 0.26956 +0.02496 2.0 0.26995 +0.02595 2.0 0.27032 +0.02695 2.0 0.27065 +0.02795 2.0 0.271 +0.02895 2.0 0.27131 +0.02995 2.0 0.27161 +0.03094 2.0 0.27191 +0.03194 2.0 0.27219 +0.03294 2.0 0.27249 +0.03394 2.0 0.27275 +0.03494 2.0 0.27301 +0.03594 2.0 0.27326 +0.03693 2.0 0.27351 +0.03793 2.0 0.27372 +0.03893 2.0 0.27397 +0.03993 2.0 0.27418 +0.00499 3.0 0.25893 +0.00599 3.0 0.26246 +0.00699 3.0 0.26505 +0.00799 3.0 0.26705 +0.00898 3.0 0.2687 +0.00998 3.0 0.27007 +0.01098 3.0 0.27122 +0.01198 3.0 0.27227 +0.01298 3.0 0.27318 +0.01398 3.0 0.27398 +0.01497 3.0 0.27471 +0.01597 3.0 0.27541 +0.01697 3.0 0.27604 +0.01797 3.0 0.2766 +0.01897 3.0 0.27716 +0.01997 3.0 0.27765 +0.02021 3.0 0.27776 +0.02046 3.0 0.2779 +0.02071 3.0 0.27801 +0.02096 3.0 0.27813 +0.02121 3.0 0.27824 +0.02146 3.0 0.27836 +0.02171 3.0 0.27845 +0.02196 3.0 0.27857 +0.02221 3.0 0.27868 +0.02246 3.0 0.27877 +0.02271 3.0 0.27888 +0.02296 3.0 0.27898 +0.02321 3.0 0.27908 +0.02346 3.0 0.2792 +0.02371 3.0 0.27929 +0.02396 3.0 0.2794 +0.02496 3.0 0.27978 +0.02595 3.0 0.28014 +0.02695 3.0 0.28049 +0.02795 3.0 0.2808 +0.02895 3.0 0.28114 +0.02995 3.0 0.28145 +0.03094 3.0 0.28172 +0.03194 3.0 0.28203 +0.03294 3.0 0.2823 +0.03394 3.0 0.28255 +0.03494 3.0 0.28282 +0.03594 3.0 0.28305 +0.03693 3.0 0.28332 +0.03793 3.0 0.28353 +0.03893 3.0 0.28377 +0.03993 3.0 0.28399 +0.00499 4.0 0.2674 +0.00599 4.0 0.27107 +0.00699 4.0 0.27376 +0.00799 4.0 0.27583 +0.00898 4.0 0.2775 +0.00998 4.0 0.2789 +0.01098 4.0 0.28007 +0.01198 4.0 0.2811 +0.01298 4.0 0.28202 +0.01398 4.0 0.28285 +0.01497 4.0 0.2836 +0.01597 4.0 0.28427 +0.01697 4.0 0.28489 +0.01797 4.0 0.28547 +0.01897 4.0 0.28602 +0.01997 4.0 0.28654 +0.02021 4.0 0.28664 +0.02046 4.0 0.28676 +0.02071 4.0 0.28687 +0.02096 4.0 0.287 +0.02121 4.0 0.2871 +0.02146 4.0 0.28723 +0.02171 4.0 0.28732 +0.02196 4.0 0.28744 +0.02221 4.0 0.28755 +0.02246 4.0 0.28765 +0.02271 4.0 0.28777 +0.02296 4.0 0.28785 +0.02321 4.0 0.28797 +0.02346 4.0 0.28806 +0.02371 4.0 0.28817 +0.02396 4.0 0.28827 +0.02496 4.0 0.28863 +0.02595 4.0 0.289 +0.02695 4.0 0.28936 +0.02795 4.0 0.28967 +0.02895 4.0 0.28999 +0.02995 4.0 0.2903 +0.03094 4.0 0.2906 +0.03194 4.0 0.29088 +0.03294 4.0 0.29113 +0.03394 4.0 0.29142 +0.03494 4.0 0.29167 +0.03594 4.0 0.2919 +0.03693 4.0 0.29216 +0.03793 4.0 0.29237 +0.03893 4.0 0.29259 +0.03993 4.0 0.29281 +0.00499 5.0 0.27505 +0.00599 5.0 0.27891 +0.00699 5.0 0.28166 +0.00799 5.0 0.28378 +0.00898 5.0 0.2855 +0.00998 5.0 0.2869 +0.01098 5.0 0.28814 +0.01198 5.0 0.28917 +0.01298 5.0 0.29011 +0.01398 5.0 0.29092 +0.01497 5.0 0.29169 +0.01597 5.0 0.29235 +0.01697 5.0 0.293 +0.01797 5.0 0.29356 +0.01897 5.0 0.29411 +0.01997 5.0 0.29461 +0.02021 5.0 0.29472 +0.02046 5.0 0.29484 +0.02071 5.0 0.29497 +0.02096 5.0 0.29507 +0.02121 5.0 0.29519 +0.02146 5.0 0.29532 +0.02171 5.0 0.29543 +0.02196 5.0 0.29552 +0.02221 5.0 0.29564 +0.02246 5.0 0.29573 +0.02271 5.0 0.29585 +0.02296 5.0 0.29594 +0.02321 5.0 0.29605 +0.02346 5.0 0.29616 +0.02371 5.0 0.29624 +0.02396 5.0 0.29635 +0.02496 5.0 0.29671 +0.02595 5.0 0.29708 +0.02695 5.0 0.29743 +0.02795 5.0 0.29774 +0.02895 5.0 0.29807 +0.02995 5.0 0.29836 +0.03094 5.0 0.29865 +0.03194 5.0 0.29893 +0.03294 5.0 0.2992 +0.03394 5.0 0.29946 +0.03494 5.0 0.29974 +0.03594 5.0 0.29996 +0.03693 5.0 0.30022 +0.03793 5.0 0.30042 +0.03893 5.0 0.30064 +0.03993 5.0 0.30087 +0.00499 6.0 0.28209 +0.00599 6.0 0.28606 +0.00699 6.0 0.28893 +0.00799 6.0 0.2911 +0.00898 6.0 0.29285 +0.00998 6.0 0.29427 +0.01098 6.0 0.2955 +0.01198 6.0 0.29658 +0.01298 6.0 0.29749 +0.01398 6.0 0.29834 +0.01497 6.0 0.29908 +0.01597 6.0 0.29978 +0.01697 6.0 0.30041 +0.01797 6.0 0.30099 +0.01897 6.0 0.30153 +0.01997 6.0 0.30203 +0.02021 6.0 0.30213 +0.02046 6.0 0.30225 +0.02071 6.0 0.30237 +0.02096 6.0 0.30251 +0.02121 6.0 0.30262 +0.02146 6.0 0.30271 +0.02171 6.0 0.30284 +0.02196 6.0 0.30295 +0.02221 6.0 0.30305 +0.02246 6.0 0.30316 +0.02271 6.0 0.30325 +0.02296 6.0 0.30336 +0.02321 6.0 0.30347 +0.02346 6.0 0.30357 +0.02371 6.0 0.30365 +0.02396 6.0 0.30374 +0.02496 6.0 0.30411 +0.02595 6.0 0.30449 +0.02695 6.0 0.30483 +0.02795 6.0 0.30516 +0.02895 6.0 0.30546 +0.02995 6.0 0.30576 +0.03094 6.0 0.30606 +0.03194 6.0 0.30632 +0.03294 6.0 0.30659 +0.03394 6.0 0.30686 +0.03494 6.0 0.30712 +0.03594 6.0 0.30736 +0.03693 6.0 0.30759 +0.03793 6.0 0.3078 +0.03893 6.0 0.30802 +0.03993 6.0 0.30823 +0.00499 7.0 0.28851 +0.00599 7.0 0.29265 +0.00699 7.0 0.29559 +0.00799 7.0 0.29784 +0.00898 7.0 0.29963 +0.00998 7.0 0.30107 +0.01098 7.0 0.30231 +0.01198 7.0 0.30341 +0.01298 7.0 0.30432 +0.01398 7.0 0.30518 +0.01497 7.0 0.30592 +0.01597 7.0 0.30663 +0.01697 7.0 0.30726 +0.01797 7.0 0.30783 +0.01897 7.0 0.30835 +0.01997 7.0 0.30888 +0.02021 7.0 0.309 +0.02046 7.0 0.30911 +0.02071 7.0 0.30923 +0.02096 7.0 0.30935 +0.02121 7.0 0.30946 +0.02146 7.0 0.30957 +0.02171 7.0 0.30966 +0.02196 7.0 0.30979 +0.02221 7.0 0.30988 +0.02246 7.0 0.30998 +0.02271 7.0 0.3101 +0.02296 7.0 0.31021 +0.02321 7.0 0.31031 +0.02346 7.0 0.31041 +0.02371 7.0 0.31049 +0.02396 7.0 0.31058 +0.02496 7.0 0.31098 +0.02595 7.0 0.31131 +0.02695 7.0 0.31168 +0.02795 7.0 0.31198 +0.02895 7.0 0.31229 +0.02995 7.0 0.31259 +0.03094 7.0 0.31289 +0.03194 7.0 0.31317 +0.03294 7.0 0.31343 +0.03394 7.0 0.31369 +0.03494 7.0 0.31392 +0.03594 7.0 0.31418 +0.03693 7.0 0.3144 +0.03793 7.0 0.31462 +0.03893 7.0 0.31484 +0.03993 7.0 0.31506 diff --git a/class/bbn/sBBN_2017_marcucci.dat b/class/bbn/sBBN_2017_marcucci.dat new file mode 100644 index 00000000..25f7ed8a --- /dev/null +++ b/class/bbn/sBBN_2017_marcucci.dat @@ -0,0 +1,543 @@ +# standard BBN prediction of the primordial Helium abundance $Y_p$ as +# function of the baryon density $\omega_b h^2$ and number of extra +# radiation degrees of freedom $\Delta N = N_eff-3.046$. Impact of +# chemical potential of electron neutrinos neglected in this version. +# +# Calculated with PArthENoPE v1.2 for a neutron lifetime of 880.2 s, +# and with the rate d(p,gamma)^3He coming from ab initio calculations +# by Marcucci et al. 2015. +# +# Format: +# First line must contain (num_ombh2,num_DeltaN), other lines must +# contain (ombh2,DeltaN,YHe) blank lines and lines starting with # +# neglected + +48 11 +0.00499 -3.0 0.17644 +0.00599 -3.0 0.17896 +0.00699 -3.0 0.18092 +0.00799 -3.0 0.18252 +0.00898 -3.0 0.18387 +0.00998 -3.0 0.18503 +0.01098 -3.0 0.18603 +0.01198 -3.0 0.18696 +0.01298 -3.0 0.18778 +0.01398 -3.0 0.18852 +0.01497 -3.0 0.18922 +0.01597 -3.0 0.18985 +0.01697 -3.0 0.19045 +0.01797 -3.0 0.191 +0.01897 -3.0 0.19152 +0.01997 -3.0 0.19202 +0.02021 -3.0 0.19214 +0.02046 -3.0 0.19226 +0.02071 -3.0 0.19236 +0.02096 -3.0 0.19248 +0.02121 -3.0 0.1926 +0.02146 -3.0 0.19271 +0.02171 -3.0 0.19281 +0.02196 -3.0 0.19292 +0.02221 -3.0 0.19301 +0.02246 -3.0 0.19313 +0.02271 -3.0 0.19323 +0.02296 -3.0 0.19334 +0.02321 -3.0 0.19343 +0.02346 -3.0 0.19354 +0.02371 -3.0 0.19363 +0.02396 -3.0 0.19372 +0.02496 -3.0 0.19411 +0.02595 -3.0 0.19449 +0.02695 -3.0 0.19482 +0.02795 -3.0 0.19517 +0.02895 -3.0 0.19549 +0.02995 -3.0 0.19579 +0.03094 -3.0 0.1961 +0.03194 -3.0 0.19638 +0.03294 -3.0 0.19667 +0.03394 -3.0 0.19695 +0.03494 -3.0 0.19721 +0.03594 -3.0 0.19746 +0.03693 -3.0 0.19771 +0.03793 -3.0 0.19793 +0.03893 -3.0 0.19819 +0.03993 -3.0 0.19841 +0.00499 -2.0 0.1965 +0.00599 -2.0 0.19921 +0.00699 -2.0 0.20132 +0.00799 -2.0 0.20299 +0.00898 -2.0 0.2044 +0.00998 -2.0 0.20563 +0.01098 -2.0 0.20669 +0.01198 -2.0 0.20764 +0.01298 -2.0 0.20849 +0.01398 -2.0 0.20925 +0.01497 -2.0 0.20996 +0.01597 -2.0 0.21061 +0.01697 -2.0 0.21123 +0.01797 -2.0 0.21177 +0.01897 -2.0 0.2123 +0.01997 -2.0 0.21281 +0.02021 -2.0 0.21292 +0.02046 -2.0 0.21305 +0.02071 -2.0 0.21316 +0.02096 -2.0 0.21328 +0.02121 -2.0 0.2134 +0.02146 -2.0 0.2135 +0.02171 -2.0 0.21361 +0.02196 -2.0 0.21372 +0.02221 -2.0 0.21384 +0.02246 -2.0 0.21395 +0.02271 -2.0 0.21403 +0.02296 -2.0 0.21414 +0.02321 -2.0 0.21424 +0.02346 -2.0 0.21435 +0.02371 -2.0 0.21445 +0.02396 -2.0 0.21455 +0.02496 -2.0 0.21493 +0.02595 -2.0 0.21531 +0.02695 -2.0 0.21566 +0.02795 -2.0 0.216 +0.02895 -2.0 0.21634 +0.02995 -2.0 0.21663 +0.03094 -2.0 0.21694 +0.03194 -2.0 0.21721 +0.03294 -2.0 0.21751 +0.03394 -2.0 0.21778 +0.03494 -2.0 0.21805 +0.03594 -2.0 0.21831 +0.03693 -2.0 0.21856 +0.03793 -2.0 0.2188 +0.03893 -2.0 0.21902 +0.03993 -2.0 0.21926 +0.00499 -1.0 0.21295 +0.00599 -1.0 0.21586 +0.00699 -1.0 0.21808 +0.00799 -1.0 0.21983 +0.00898 -1.0 0.22132 +0.00998 -1.0 0.22256 +0.01098 -1.0 0.22365 +0.01198 -1.0 0.22462 +0.01298 -1.0 0.22547 +0.01398 -1.0 0.22628 +0.01497 -1.0 0.22697 +0.01597 -1.0 0.22764 +0.01697 -1.0 0.22827 +0.01797 -1.0 0.22884 +0.01897 -1.0 0.22935 +0.01997 -1.0 0.22987 +0.02021 -1.0 0.22999 +0.02046 -1.0 0.23009 +0.02071 -1.0 0.23021 +0.02096 -1.0 0.23035 +0.02121 -1.0 0.23046 +0.02146 -1.0 0.23057 +0.02171 -1.0 0.23068 +0.02196 -1.0 0.23078 +0.02221 -1.0 0.2309 +0.02246 -1.0 0.23099 +0.02271 -1.0 0.2311 +0.02296 -1.0 0.23122 +0.02321 -1.0 0.23131 +0.02346 -1.0 0.23143 +0.02371 -1.0 0.23153 +0.02396 -1.0 0.23161 +0.02496 -1.0 0.23199 +0.02595 -1.0 0.23237 +0.02695 -1.0 0.23273 +0.02795 -1.0 0.23307 +0.02895 -1.0 0.23339 +0.02995 -1.0 0.23369 +0.03094 -1.0 0.234 +0.03194 -1.0 0.23429 +0.03294 -1.0 0.23458 +0.03394 -1.0 0.23485 +0.03494 -1.0 0.2351 +0.03594 -1.0 0.23536 +0.03693 -1.0 0.23562 +0.03793 -1.0 0.23587 +0.03893 -1.0 0.23608 +0.03993 -1.0 0.23633 +0.00499 0.0 0.22688 +0.00599 0.0 0.22997 +0.00699 0.0 0.23227 +0.00799 0.0 0.2341 +0.00898 0.0 0.23562 +0.00998 0.0 0.23691 +0.01098 0.0 0.23802 +0.01198 0.0 0.239 +0.01298 0.0 0.23988 +0.01398 0.0 0.24067 +0.01497 0.0 0.24141 +0.01597 0.0 0.24207 +0.01697 0.0 0.24267 +0.01797 0.0 0.24327 +0.01897 0.0 0.24379 +0.01997 0.0 0.24431 +0.02021 0.0 0.24442 +0.02046 0.0 0.24453 +0.02071 0.0 0.24467 +0.02096 0.0 0.24478 +0.02121 0.0 0.2449 +0.02146 0.0 0.24499 +0.02171 0.0 0.2451 +0.02196 0.0 0.24521 +0.02221 0.0 0.24532 +0.02246 0.0 0.24544 +0.02271 0.0 0.24553 +0.02296 0.0 0.24565 +0.02321 0.0 0.24575 +0.02346 0.0 0.24584 +0.02371 0.0 0.24594 +0.02396 0.0 0.24604 +0.02496 0.0 0.24644 +0.02595 0.0 0.24681 +0.02695 0.0 0.24717 +0.02795 0.0 0.24749 +0.02895 0.0 0.24781 +0.02995 0.0 0.24814 +0.03094 0.0 0.24844 +0.03194 0.0 0.24871 +0.03294 0.0 0.24901 +0.03394 0.0 0.24928 +0.03494 0.0 0.24953 +0.03594 0.0 0.2498 +0.03693 0.0 0.25004 +0.03793 0.0 0.25027 +0.03893 0.0 0.25051 +0.03993 0.0 0.25074 +0.00499 1.0 0.23892 +0.00599 1.0 0.24217 +0.00699 1.0 0.24456 +0.00799 1.0 0.24647 +0.00898 1.0 0.24801 +0.00998 1.0 0.24933 +0.01098 1.0 0.25048 +0.01198 1.0 0.25147 +0.01298 1.0 0.25235 +0.01398 1.0 0.25318 +0.01497 1.0 0.25389 +0.01597 1.0 0.25457 +0.01697 1.0 0.2552 +0.01797 1.0 0.25578 +0.01897 1.0 0.25629 +0.01997 1.0 0.25679 +0.02021 1.0 0.25693 +0.02046 1.0 0.25703 +0.02071 1.0 0.25717 +0.02096 1.0 0.25727 +0.02121 1.0 0.25738 +0.02146 1.0 0.2575 +0.02171 1.0 0.25762 +0.02196 1.0 0.25773 +0.02221 1.0 0.25783 +0.02246 1.0 0.25794 +0.02271 1.0 0.25804 +0.02296 1.0 0.25815 +0.02321 1.0 0.25827 +0.02346 1.0 0.25837 +0.02371 1.0 0.25846 +0.02396 1.0 0.25855 +0.02496 1.0 0.25895 +0.02595 1.0 0.25929 +0.02695 1.0 0.25967 +0.02795 1.0 0.26 +0.02895 1.0 0.26032 +0.02995 1.0 0.26062 +0.03094 1.0 0.26093 +0.03194 1.0 0.26122 +0.03294 1.0 0.2615 +0.03394 1.0 0.26175 +0.03494 1.0 0.26202 +0.03594 1.0 0.26227 +0.03693 1.0 0.26252 +0.03793 1.0 0.26274 +0.03893 1.0 0.26299 +0.03993 1.0 0.2632 +0.00499 2.0 0.24951 +0.00599 2.0 0.25289 +0.00699 2.0 0.2554 +0.00799 2.0 0.25736 +0.00898 2.0 0.25894 +0.00998 2.0 0.26029 +0.01098 2.0 0.26144 +0.01198 2.0 0.26244 +0.01298 2.0 0.26336 +0.01398 2.0 0.26418 +0.01497 2.0 0.2649 +0.01597 2.0 0.26557 +0.01697 2.0 0.26619 +0.01797 2.0 0.26679 +0.01897 2.0 0.26731 +0.01997 2.0 0.26782 +0.02021 2.0 0.26795 +0.02046 2.0 0.26807 +0.02071 2.0 0.26816 +0.02096 2.0 0.2683 +0.02121 2.0 0.26839 +0.02146 2.0 0.26852 +0.02171 2.0 0.26864 +0.02196 2.0 0.26875 +0.02221 2.0 0.26884 +0.02246 2.0 0.26894 +0.02271 2.0 0.26905 +0.02296 2.0 0.26918 +0.02321 2.0 0.26927 +0.02346 2.0 0.26938 +0.02371 2.0 0.26946 +0.02396 2.0 0.26956 +0.02496 2.0 0.26996 +0.02595 2.0 0.27031 +0.02695 2.0 0.27067 +0.02795 2.0 0.27101 +0.02895 2.0 0.27132 +0.02995 2.0 0.27161 +0.03094 2.0 0.27191 +0.03194 2.0 0.27222 +0.03294 2.0 0.27248 +0.03394 2.0 0.27276 +0.03494 2.0 0.27303 +0.03594 2.0 0.27327 +0.03693 2.0 0.27351 +0.03793 2.0 0.27375 +0.03893 2.0 0.27398 +0.03993 2.0 0.27419 +0.00499 3.0 0.25892 +0.00599 3.0 0.26245 +0.00699 3.0 0.26504 +0.00799 3.0 0.26706 +0.00898 3.0 0.26871 +0.00998 3.0 0.27008 +0.01098 3.0 0.27123 +0.01198 3.0 0.27226 +0.01298 3.0 0.27319 +0.01398 3.0 0.27399 +0.01497 3.0 0.27472 +0.01597 3.0 0.2754 +0.01697 3.0 0.27605 +0.01797 3.0 0.27663 +0.01897 3.0 0.27716 +0.01997 3.0 0.27764 +0.02021 3.0 0.27777 +0.02046 3.0 0.2779 +0.02071 3.0 0.278 +0.02096 3.0 0.27812 +0.02121 3.0 0.27825 +0.02146 3.0 0.27836 +0.02171 3.0 0.27846 +0.02196 3.0 0.27857 +0.02221 3.0 0.27867 +0.02246 3.0 0.27878 +0.02271 3.0 0.2789 +0.02296 3.0 0.27901 +0.02321 3.0 0.27911 +0.02346 3.0 0.27919 +0.02371 3.0 0.27931 +0.02396 3.0 0.27941 +0.02496 3.0 0.27977 +0.02595 3.0 0.28014 +0.02695 3.0 0.28049 +0.02795 3.0 0.28083 +0.02895 3.0 0.28113 +0.02995 3.0 0.28145 +0.03094 3.0 0.28175 +0.03194 3.0 0.28204 +0.03294 3.0 0.28229 +0.03394 3.0 0.28258 +0.03494 3.0 0.28283 +0.03594 3.0 0.28308 +0.03693 3.0 0.2833 +0.03793 3.0 0.28354 +0.03893 3.0 0.28377 +0.03993 3.0 0.28398 +0.00499 4.0 0.2674 +0.00599 4.0 0.27106 +0.00699 4.0 0.27376 +0.00799 4.0 0.27582 +0.00898 4.0 0.27751 +0.00998 4.0 0.2789 +0.01098 4.0 0.28009 +0.01198 4.0 0.28111 +0.01298 4.0 0.28203 +0.01398 4.0 0.28287 +0.01497 4.0 0.28361 +0.01597 4.0 0.28427 +0.01697 4.0 0.2849 +0.01797 4.0 0.2855 +0.01897 4.0 0.28602 +0.01997 4.0 0.28654 +0.02021 4.0 0.28665 +0.02046 4.0 0.28678 +0.02071 4.0 0.28689 +0.02096 4.0 0.28699 +0.02121 4.0 0.2871 +0.02146 4.0 0.28724 +0.02171 4.0 0.28735 +0.02196 4.0 0.28745 +0.02221 4.0 0.28756 +0.02246 4.0 0.28767 +0.02271 4.0 0.28775 +0.02296 4.0 0.28788 +0.02321 4.0 0.28796 +0.02346 4.0 0.28808 +0.02371 4.0 0.28816 +0.02396 4.0 0.28829 +0.02496 4.0 0.28864 +0.02595 4.0 0.289 +0.02695 4.0 0.28936 +0.02795 4.0 0.28968 +0.02895 4.0 0.29002 +0.02995 4.0 0.2903 +0.03094 4.0 0.29059 +0.03194 4.0 0.29087 +0.03294 4.0 0.29116 +0.03394 4.0 0.29141 +0.03494 4.0 0.29168 +0.03594 4.0 0.29193 +0.03693 4.0 0.29215 +0.03793 4.0 0.29238 +0.03893 4.0 0.29262 +0.03993 4.0 0.29282 +0.00499 5.0 0.27508 +0.00599 5.0 0.2789 +0.00699 5.0 0.28168 +0.00799 5.0 0.28379 +0.00898 5.0 0.2855 +0.00998 5.0 0.28693 +0.01098 5.0 0.28812 +0.01198 5.0 0.28919 +0.01298 5.0 0.2901 +0.01398 5.0 0.29093 +0.01497 5.0 0.29167 +0.01597 5.0 0.29236 +0.01697 5.0 0.29299 +0.01797 5.0 0.29356 +0.01897 5.0 0.2941 +0.01997 5.0 0.2946 +0.02021 5.0 0.29474 +0.02046 5.0 0.29484 +0.02071 5.0 0.29496 +0.02096 5.0 0.29508 +0.02121 5.0 0.29519 +0.02146 5.0 0.2953 +0.02171 5.0 0.29543 +0.02196 5.0 0.29554 +0.02221 5.0 0.29565 +0.02246 5.0 0.29576 +0.02271 5.0 0.29586 +0.02296 5.0 0.29594 +0.02321 5.0 0.29606 +0.02346 5.0 0.29614 +0.02371 5.0 0.29625 +0.02396 5.0 0.29636 +0.02496 5.0 0.29673 +0.02595 5.0 0.29709 +0.02695 5.0 0.29742 +0.02795 5.0 0.29776 +0.02895 5.0 0.29806 +0.02995 5.0 0.29836 +0.03094 5.0 0.29866 +0.03194 5.0 0.29895 +0.03294 5.0 0.29921 +0.03394 5.0 0.29949 +0.03494 5.0 0.29972 +0.03594 5.0 0.29997 +0.03693 5.0 0.3002 +0.03793 5.0 0.30044 +0.03893 5.0 0.30065 +0.03993 5.0 0.30089 +0.00499 6.0 0.28208 +0.00599 6.0 0.28607 +0.00699 6.0 0.28892 +0.00799 6.0 0.29111 +0.00898 6.0 0.29284 +0.00998 6.0 0.2943 +0.01098 6.0 0.29552 +0.01198 6.0 0.29658 +0.01298 6.0 0.2975 +0.01398 6.0 0.29835 +0.01497 6.0 0.29909 +0.01597 6.0 0.29979 +0.01697 6.0 0.30041 +0.01797 6.0 0.30099 +0.01897 6.0 0.30152 +0.01997 6.0 0.30204 +0.02021 6.0 0.30214 +0.02046 6.0 0.30226 +0.02071 6.0 0.30239 +0.02096 6.0 0.30249 +0.02121 6.0 0.30261 +0.02146 6.0 0.30273 +0.02171 6.0 0.30284 +0.02196 6.0 0.30294 +0.02221 6.0 0.30306 +0.02246 6.0 0.30317 +0.02271 6.0 0.30327 +0.02296 6.0 0.30338 +0.02321 6.0 0.30346 +0.02346 6.0 0.30357 +0.02371 6.0 0.30368 +0.02396 6.0 0.30378 +0.02496 6.0 0.30412 +0.02595 6.0 0.30449 +0.02695 6.0 0.30484 +0.02795 6.0 0.30515 +0.02895 6.0 0.30549 +0.02995 6.0 0.30576 +0.03094 6.0 0.30605 +0.03194 6.0 0.30635 +0.03294 6.0 0.3066 +0.03394 6.0 0.30688 +0.03494 6.0 0.30711 +0.03594 6.0 0.30737 +0.03693 6.0 0.30759 +0.03793 6.0 0.30783 +0.03893 6.0 0.30803 +0.03993 6.0 0.30824 +0.00499 7.0 0.28853 +0.00599 7.0 0.29268 +0.00699 7.0 0.29562 +0.00799 7.0 0.29783 +0.00898 7.0 0.29963 +0.00998 7.0 0.30109 +0.01098 7.0 0.30232 +0.01198 7.0 0.30341 +0.01298 7.0 0.30433 +0.01398 7.0 0.30517 +0.01497 7.0 0.30594 +0.01597 7.0 0.30664 +0.01697 7.0 0.30725 +0.01797 7.0 0.30782 +0.01897 7.0 0.30836 +0.01997 7.0 0.30886 +0.02021 7.0 0.309 +0.02046 7.0 0.3091 +0.02071 7.0 0.30922 +0.02096 7.0 0.30936 +0.02121 7.0 0.30947 +0.02146 7.0 0.30956 +0.02171 7.0 0.30967 +0.02196 7.0 0.30979 +0.02221 7.0 0.30988 +0.02246 7.0 0.30999 +0.02271 7.0 0.31009 +0.02296 7.0 0.3102 +0.02321 7.0 0.3103 +0.02346 7.0 0.31042 +0.02371 7.0 0.3105 +0.02396 7.0 0.31061 +0.02496 7.0 0.31097 +0.02595 7.0 0.31133 +0.02695 7.0 0.31167 +0.02795 7.0 0.31199 +0.02895 7.0 0.3123 +0.02995 7.0 0.31259 +0.03094 7.0 0.31288 +0.03194 7.0 0.31318 +0.03294 7.0 0.31345 +0.03394 7.0 0.3137 +0.03494 7.0 0.31393 +0.03594 7.0 0.31417 +0.03693 7.0 0.31441 +0.03793 7.0 0.31463 +0.03893 7.0 0.31485 +0.03993 7.0 0.31505 diff --git a/class/cl_permille.pre b/class/cl_permille.pre new file mode 100644 index 00000000..270cd014 --- /dev/null +++ b/class/cl_permille.pre @@ -0,0 +1,7 @@ +# precision file to be passed as input in order to achieve at least percent precision on scalar Cls +hyper_flat_approximation_nu = 7000. +transfer_neglect_delta_k_S_t0 = 0.17 +transfer_neglect_delta_k_S_t1 = 0.05 +transfer_neglect_delta_k_S_t2 = 0.17 +transfer_neglect_delta_k_S_e = 0.13 +delta_l_max=1000 diff --git a/class/cl_ref.pre b/class/cl_ref.pre new file mode 100644 index 00000000..376e5bbb --- /dev/null +++ b/class/cl_ref.pre @@ -0,0 +1,82 @@ +# this file achieves maximum precision for the CMB: each ClTT and ClEE, lensed and unlensed, are stable at the 0.01% level + +tol_ncdm_bg = 1.e-10 + +recfast_Nz0=100000 +tol_thermo_integration=1.e-5 + +recfast_x_He0_trigger_delta = 0.01 +recfast_x_H0_trigger_delta = 0.01 + +evolver=0 + +k_min_tau0=0.002 +k_max_tau0_over_l_max=3. +k_step_sub=0.015 +k_step_super=0.0001 +k_step_super_reduction=0.1 + +start_small_k_at_tau_c_over_tau_h = 0.0004 +start_large_k_at_tau_h_over_tau_k = 0.05 +tight_coupling_trigger_tau_c_over_tau_h=0.005 +tight_coupling_trigger_tau_c_over_tau_k=0.008 +start_sources_at_tau_c_over_tau_h = 0.006 + +l_max_g=50 +l_max_pol_g=25 +l_max_ur=50 +l_max_ncdm=50 + +tol_perturb_integration=1.e-6 +perturb_sampling_stepsize=0.01 + +radiation_streaming_approximation = 2 +radiation_streaming_trigger_tau_over_tau_k = 240. +radiation_streaming_trigger_tau_c_over_tau = 100. + +ur_fluid_approximation = 2 +ur_fluid_trigger_tau_over_tau_k = 50. + +ncdm_fluid_approximation = 3 +ncdm_fluid_trigger_tau_over_tau_k = 51. + +tol_ncdm_synchronous = 1.e-10 +tol_ncdm_newtonian = 1.e-10 + +l_logstep=1.026 +l_linstep=25 + +hyper_sampling_flat = 12. +hyper_sampling_curved_low_nu = 10. +hyper_sampling_curved_high_nu = 10. +hyper_nu_sampling_step = 10. +hyper_phi_min_abs = 1.e-10 +hyper_x_tol = 1.e-4 +hyper_flat_approximation_nu = 1.e6 + +q_linstep=0.20 +q_logstep_spline= 20. +q_logstep_trapzd = 0.5 +q_numstep_transition = 250 + +transfer_neglect_delta_k_S_t0 = 100. +transfer_neglect_delta_k_S_t1 = 100. +transfer_neglect_delta_k_S_t2 = 100. +transfer_neglect_delta_k_S_e = 100. +transfer_neglect_delta_k_V_t1 = 100. +transfer_neglect_delta_k_V_t2 = 100. +transfer_neglect_delta_k_V_e = 100. +transfer_neglect_delta_k_V_b = 100. +transfer_neglect_delta_k_T_t2 = 100. +transfer_neglect_delta_k_T_e = 100. +transfer_neglect_delta_k_T_b = 100. + +neglect_CMB_sources_below_visibility = 1.e-30 +transfer_neglect_late_source = 3000. + +halofit_k_per_decade = 3000. + +l_switch_limber = 40. +accurate_lensing=1 +num_mu_minus_lmax = 1000. +delta_l_max = 1000. \ No newline at end of file diff --git a/class/cpp/ClassEngine.cc b/class/cpp/ClassEngine.cc new file mode 100644 index 00000000..7c476e87 --- /dev/null +++ b/class/cpp/ClassEngine.cc @@ -0,0 +1,721 @@ +//-------------------------------------------------------------------------- +// +// Description: +// class ClassEngine : see header file (ClassEngine.hh) for description. +// +//------------------------------------------------------------------------ +//----------------------- +// This Class's Header -- +//----------------------- +#include "ClassEngine.hh" +// ------------------------ +// Collaborating classes -- +//------------------------- +// C++ +//-------------------- +#include +#include +#include +#include +#include +#include +#include +#include + +//#define DBUG + +using namespace std; + +template std::string str(const T &x){ + std::ostringstream os; + os << x; + return os.str(); +} +//specilization +template<> std::string str (const float &x){ + std::ostringstream os; + os << setprecision(8) << x; + return os.str(); +} +template<> std::string str (const double &x){ + std::ostringstream os; + os << setprecision(16) << x; + return os.str(); +} +template<> std::string str (const bool &x){ + { return x ? "yes" : "no"; } +} + +template<> std::string str (const std::string &x) {return x;} + +std::string str (const char* s){return string(s);} + +//instanciations +template string str(const int &x); +template string str(const signed char &x); +template string str(const unsigned char &x); +template string str(const short &x); +template string str(const unsigned short &x); +template string str(const unsigned int &x); +template string str(const long &x); +template string str(const unsigned long &x); +template string str(const long long &x); +template string str(const unsigned long long &x); + +//--------------- +// Constructors -- +//---------------- +ClassEngine::ClassEngine(const ClassParams& pars, bool verbose): cl(0),dofree(true){ + + //prepare fp structure + size_t n=pars.size(); + // + parser_init(&fc,n,"pipo",_errmsg); + + //config + for (size_t i=0;i> _lmax; + } + } + if( verbose ) cout << __FILE__ << " : using lmax=" << _lmax <0); // this collides with transfer function calculations + + //input + if (input_init(&fc,&pr,&ba,&th,&pt,&tr,&pm,&sp,&nl,&le,&op,_errmsg) == _FAILURE_) + throw invalid_argument(_errmsg); + + //proetction parametres mal defini + for (size_t i=0;i(precision_file.c_str()),&fc_precision,_errmsg) == _FAILURE_){ + throw invalid_argument(_errmsg); + } + + //pars + struct file_content fc_input; + fc_input.size = 0; + fc_input.filename=new char[1]; + //prepare fc par structure + size_t n=pars.size(); + parser_init(&fc_input,n,"pipo",_errmsg); + //config + for (size_t i=0;i> _lmax; + } + } + if( verbose ) cout << __FILE__ << " : using lmax=" << _lmax <0); + + + + //concatenate both + if (parser_cat(&fc_input,&fc_precision,&fc,_errmsg) == _FAILURE_) throw invalid_argument(_errmsg); + + //parser_free(&fc_input); + parser_free(&fc_precision); + + //input + if (input_init(&fc,&pr,&ba,&th,&pt,&tr,&pm,&sp,&nl,&le,&op,_errmsg) == _FAILURE_) + throw invalid_argument(_errmsg); + + //proetction parametres mal defini + for (size_t i=0;i& par){ + dofree && freeStructs(); + for (size_t i=0;i%s\n",errmsg); + dofree=false; + return _FAILURE_; + } + + if (background_init(ppr,pba) == _FAILURE_) { + printf("\n\nError running background_init \n=>%s\n",pba->error_message); + dofree=false; + return _FAILURE_; + } + + if (thermodynamics_init(ppr,pba,pth) == _FAILURE_) { + printf("\n\nError in thermodynamics_init \n=>%s\n",pth->error_message); + background_free(&ba); + dofree=false; + return _FAILURE_; + } + + if (perturb_init(ppr,pba,pth,ppt) == _FAILURE_) { + printf("\n\nError in perturb_init \n=>%s\n",ppt->error_message); + thermodynamics_free(&th); + background_free(&ba); + dofree=false; + return _FAILURE_; + } + + if (primordial_init(ppr,ppt,ppm) == _FAILURE_) { + printf("\n\nError in primordial_init \n=>%s\n",ppm->error_message); + perturb_free(&pt); + thermodynamics_free(&th); + background_free(&ba); + dofree=false; + return _FAILURE_; + } + + if (nonlinear_init(ppr,pba,pth,ppt,ppm,pnl) == _FAILURE_) { + printf("\n\nError in nonlinear_init \n=>%s\n",pnl->error_message); + primordial_free(&pm); + perturb_free(&pt); + thermodynamics_free(&th); + background_free(&ba); + dofree=false; + return _FAILURE_; + } + + if (transfer_init(ppr,pba,pth,ppt,pnl,ptr) == _FAILURE_) { + printf("\n\nError in transfer_init \n=>%s\n",ptr->error_message); + nonlinear_free(&nl); + primordial_free(&pm); + perturb_free(&pt); + thermodynamics_free(&th); + background_free(&ba); + dofree=false; + return _FAILURE_; + } + + if (spectra_init(ppr,pba,ppt,ppm,pnl,ptr,psp) == _FAILURE_) { + printf("\n\nError in spectra_init \n=>%s\n",psp->error_message); + transfer_free(&tr); + nonlinear_free(&nl); + primordial_free(&pm); + perturb_free(&pt); + thermodynamics_free(&th); + background_free(&ba); + dofree=false; + return _FAILURE_; + } + + if (lensing_init(ppr,ppt,psp,pnl,ple) == _FAILURE_) { + printf("\n\nError in lensing_init \n=>%s\n",ple->error_message); + spectra_free(&sp); + transfer_free(&tr); + nonlinear_free(&nl); + primordial_free(&pm); + perturb_free(&pt); + thermodynamics_free(&th); + background_free(&ba); + dofree=false; + return _FAILURE_; + } + + + dofree=true; + return _SUCCESS_; +} + + +int ClassEngine::computeCls(){ + +#ifdef DBUG + cout <<"call computecls" << endl; + //printFC(); +#endif + + int status=this->class_main(&fc,&pr,&ba,&th,&pt,&tr,&pm,&sp,&nl,&le,&op,_errmsg); +#ifdef DBUG + cout <<"status=" << status << endl; +#endif + return status; + +} + +int +ClassEngine::freeStructs(){ + + + if (lensing_free(&le) == _FAILURE_) { + printf("\n\nError in spectra_free \n=>%s\n",le.error_message); + return _FAILURE_; + } + + if (nonlinear_free(&nl) == _FAILURE_) { + printf("\n\nError in nonlinear_free \n=>%s\n",nl.error_message); + return _FAILURE_; + } + + if (spectra_free(&sp) == _FAILURE_) { + printf("\n\nError in spectra_free \n=>%s\n",sp.error_message); + return _FAILURE_; + } + + if (primordial_free(&pm) == _FAILURE_) { + printf("\n\nError in primordial_free \n=>%s\n",pm.error_message); + return _FAILURE_; + } + + if (transfer_free(&tr) == _FAILURE_) { + printf("\n\nError in transfer_free \n=>%s\n",tr.error_message); + return _FAILURE_; + } + + if (perturb_free(&pt) == _FAILURE_) { + printf("\n\nError in perturb_free \n=>%s\n",pt.error_message); + return _FAILURE_; + } + + if (thermodynamics_free(&th) == _FAILURE_) { + printf("\n\nError in thermodynamics_free \n=>%s\n",th.error_message); + return _FAILURE_; + } + + if (background_free(&ba) == _FAILURE_) { + printf("\n\nError in background_free \n=>%s\n",ba.error_message); + return _FAILURE_; + } + + return _SUCCESS_; +} + +void ClassEngine::call_perturb_sources_at_tau( + int index_md, + int index_ic, + int index_tp, + double tau, + double * psource + ) { + if( perturb_sources_at_tau( &pt, index_md, index_ic, index_tp, tau, psource ) == _FAILURE_){ + cerr << ">>>fail getting Tk type=" << (int)index_tp <& k, + std::vector& d_cdm, + std::vector& d_b, + std::vector& d_ncdm, + std::vector& d_tot, + std::vector& t_cdm, + std::vector& t_b, + std::vector& t_ncdm, + std::vector& t_tot ) +{ + + if (!dofree) throw out_of_range("no Tk available because CLASS failed"); + + double tau; + int index; + //transform redshift in conformal time + background_tau_of_z(&ba,z,&tau); + + if(log(tau) < pt.ln_tau[0]){ + cerr << "Asking sources at a z bigger than z_max_pk, something probably went wrong\n"; + throw out_of_range(pt.error_message); + } + + double *pvecback=new double[ba.bg_size]; + background_at_tau(&ba,tau,ba.long_info,ba.inter_normal, &index, pvecback); + double fHa = pvecback[ba.index_bg_f] * (pvecback[ba.index_bg_a]*pvecback[ba.index_bg_H]); + delete[] pvecback; + + // copy transfer func data to temporary + const size_t index_md = pt.index_md_scalars; + d_cdm.assign( pt.k_size[index_md], 0.0 ); + d_b.assign( pt.k_size[index_md], 0.0 ); + d_ncdm.assign( pt.k_size[index_md], 0.0 ); + d_tot.assign( pt.k_size[index_md], 0.0 ); + t_cdm.assign( pt.k_size[index_md], 0.0 ); + t_b.assign( pt.k_size[index_md], 0.0 ); + t_ncdm.assign( pt.k_size[index_md], 0.0 ); + t_tot.assign( pt.k_size[index_md], 0.0 ); + + if( pt.ic_size[index_md] > 1 ){ + cerr << ">>>have more than 1 ICs, will use first and ignore others" << endl; + } + + call_perturb_sources_at_tau(index_md, 0, pt.index_tp_delta_cdm, tau, &d_cdm[0]); + call_perturb_sources_at_tau(index_md, 0, pt.index_tp_delta_b, tau, &d_b[0]); + call_perturb_sources_at_tau(index_md, 0, pt.index_tp_delta_ncdm1, tau, &d_ncdm[0]); + call_perturb_sources_at_tau(index_md, 0, pt.index_tp_delta_tot, tau, &d_tot[0]); + call_perturb_sources_at_tau(index_md, 0, pt.index_tp_theta_b, tau, &t_b[0]); + call_perturb_sources_at_tau(index_md, 0, pt.index_tp_theta_ncdm1, tau, &t_ncdm[0]); + call_perturb_sources_at_tau(index_md, 0, pt.index_tp_theta_tot, tau, &d_tot[0]); + + // + std::vector h_prime(pt.k_size[index_md],0.0), eta_prime(pt.k_size[index_md],0.0); + call_perturb_sources_at_tau(index_md, 0, pt.index_tp_eta_prime, tau, &eta_prime[0]); + call_perturb_sources_at_tau(index_md, 0, pt.index_tp_h_prime, tau, &h_prime[0]); + + // gauge trafo velocities, store k-vector + for (int index_k=0; index_k(l),cl) == _FAILURE_){ + cerr << ">>>fail getting Cl type=" << (int)t << " @l=" << l <& lvec, //input + std::vector& cltt, + std::vector& clte, + std::vector& clee, + std::vector& clbb) +{ + cltt.resize(lvec.size()); + clte.resize(lvec.size()); + clee.resize(lvec.size()); + clbb.resize(lvec.size()); + + for (size_t i=0;i& lvec, //input + std::vector& clpp , + std::vector& cltp , + std::vector& clep ){ + + + clpp.resize(lvec.size()); + cltp.resize(lvec.size()); + clep.resize(lvec.size()); + + for (size_t i=0;i +#include +#include +#include + +using std::string; + +//general utility to convert safely numerical types to string +template std::string str(const T &x); +//specialisations +template<> std::string str (const float &x); +template<> std::string str (const double &x); +template<> std::string str (const bool &x); //"yes" or "no" +template<> std::string str (const std::string &x); + +std::string str(const char* x); +////////////////////////////////////////////////////////////////////////// +//class to encapsulate CLASS parameters from any type (numerical or string) +class ClassParams{ +public: + + ClassParams(){}; + ClassParams( const ClassParams& o):pars(o.pars){}; + + //use this to add a CLASS variable + template unsigned add(const string& key,const T& val){ + pars.push_back(make_pair(key,str(val))); + return pars.size(); + } + + //accesors + inline unsigned size() const {return pars.size();} + inline string key(const unsigned& i) const {return pars[i].first;} + inline string value(const unsigned& i) const {return pars[i].second;} + + +private: + std::vector > pars; +}; + +/////////////////////////////////////////////////////////////////////////// +class ClassEngine : public Engine +{ + + friend class ClassParams; + +public: + //constructors + ClassEngine(const ClassParams& pars, bool verbose=true ); + //with a class .pre file + ClassEngine(const ClassParams& pars, const string & precision_file, bool verbose=true); + + + // destructor + ~ClassEngine(); + + //modfiers: _FAILURE_ returned if CLASS pb: + bool updateParValues(const std::vector& par); + + + //get value at l ( 2& lVec, //input + std::vector& cltt, + std::vector& clte, + std::vector& clee, + std::vector& clbb); + bool getLensing(const std::vector& lVec, //input + std::vector& clphiphi, + std::vector& cltphi, + std::vector& clephi); + + void call_perturb_sources_at_tau( + int index_md, + int index_ic, + int index_tp, + double tau, + double * psource + ); + + void getTk( double z, + std::vector& k, + std::vector& d_cdm, + std::vector& d_b, + std::vector& d_ncdm, + std::vector& d_tot, + std::vector& t_cdm, + std::vector& t_b, + std::vector& t_ncdm, + std::vector& t_tot ); + + //for BAO + inline double z_drag() const {return th.z_d;} + inline double rs_drag() const {return th.rs_d;} + double get_Dv(double z); + + double get_Da(double z); + double get_sigma8(double z); + double get_f(double z); + + double get_Fz(double z); + double get_Hz(double z); + double get_Az(double z); + + double getTauReio() const {return th.tau_reio;} + + //may need that + inline int numCls() const {return sp.ct_size;}; + inline double Tcmb() const {return ba.T_cmb;} + + inline int l_max_scalars() const {return _lmax;} + + //print content of file_content + void printFC(); + +private: + //structures class en commun + struct file_content fc; + struct precision pr; /* for precision parameters */ + struct background ba; /* for cosmological background */ + struct thermo th; /* for thermodynamics */ + struct perturbs pt; /* for source functions */ + struct transfers tr; /* for transfer functions */ + struct primordial pm; /* for primordial spectra */ + struct spectra sp; /* for output spectra */ + struct nonlinear nl; /* for non-linear spectra */ + struct lensing le; /* for lensed spectra */ + struct output op; /* for output files */ + + ErrorMsg _errmsg; /* for error messages */ + double * cl; + + //helpers + bool dofree; + int freeStructs(); + + //call once /model + int computeCls(); + + int class_main( + struct file_content *pfc, + struct precision * ppr, + struct background * pba, + struct thermo * pth, + struct perturbs * ppt, + struct transfers * ptr, + struct primordial * ppm, + struct spectra * psp, + struct nonlinear * pnl, + struct lensing * ple, + struct output * pop, + ErrorMsg errmsg); + //parnames + std::vector parNames; + +protected: + + +}; + +#endif + diff --git a/class/cpp/Engine.cc b/class/cpp/Engine.cc new file mode 100644 index 00000000..12b3ac98 --- /dev/null +++ b/class/cpp/Engine.cc @@ -0,0 +1,70 @@ +//-------------------------------------------------------------------------- +// +// Description: +// class Engine : see header file (Engine.hh) for description. +// +//------------------------------------------------------------------------ +//----------------------- +// This Class's Header -- +//----------------------- +#include "Engine.hh" +// ------------------------ +// Collaborating classes -- +//------------------------- +//-------------------- +// C++ +//-------------------- +#include +#include +#include +//-------------------- +// C +//---------------- + +using namespace std; +//--------------- +// Constructors -- +//---------------- +Engine::Engine():_lmax(-1) +{ +} +//-------------- +// Destructor -- +//-------------- + +//----------------- +// Member functions -- +//----------------- + +void +Engine::writeCls(std::ostream &of){ + + vector lvec(_lmax-1,1); + lvec[0]=2; + partial_sum(lvec.begin(),lvec.end(),lvec.begin()); + + vector cltt,clte,clee,clbb,clpp,cltp,clep; + bool hasLensing=false; + try{ + getCls(lvec,cltt,clte,clee,clbb); + hasLensing=getLensing(lvec,clpp,cltp,clep); + } + catch (std::exception &e){ + cout << "GIOSH" << e.what() << endl; + } + + cout.precision( 16 ); + for (size_t i=0;i +#include + +class Engine +{ + +public: + + enum cltype {TT=0,EE,TE,BB,PP,TP,EP}; //P stands for phi (lensing potential) + + //constructors + Engine(); + + //pure virtual: + virtual bool updateParValues(const std::vector& cosmopars)=0; + + // units = (micro-K)^2 + virtual void getCls(const std::vector& lVec, //input + std::vector& cltt, + std::vector& clte, + std::vector& clee, + std::vector& clbb)=0; + + + virtual bool getLensing(const std::vector& lVec, //input + std::vector& clpp, + std::vector& cltp, + std::vector& clep)=0; + + + virtual double z_drag() const=0; + virtual double rs_drag() const =0; + + virtual double get_Dv(double z)=0; + + virtual double get_Da(double z)=0; + virtual double get_sigma8(double z)=0; + virtual double get_f(double z)=0; + virtual double get_Fz(double z)=0; + virtual double get_Az(double z)=0; + virtual double get_Hz(double z)=0; + + virtual double getTauReio() const=0; + + // destructor + virtual ~Engine(){}; + + //write Cl model+lensing in ostream + virtual void writeCls(std::ostream &o); + inline int lmax() {return _lmax;} + +protected: + int _lmax; + +}; + +#endif + diff --git a/class/cpp/Makefile b/class/cpp/Makefile new file mode 100644 index 00000000..255eca95 --- /dev/null +++ b/class/cpp/Makefile @@ -0,0 +1,28 @@ +CXX = g++ +CFLAGS = -O2 -fopenmp -I../include +CLASSMODULES = ../build/arrays.o ../build/background.o ../build/common.o \ + ../build/dei_rkck.o ../build/evolver_ndf15.o ../build/evolver_rkck.o \ + ../build/growTable.o ../build/helium.o ../build/history.o \ + ../build/hydrogen.o ../build/hyperspherical.o ../build/hyrectools.o \ + ../build/input.o ../build/lensing.o ../build/nonlinear.o ../build/output.o \ + ../build/parser.o ../build/perturbations.o ../build/primordial.o \ + ../build/quadrature.o ../build/sparse.o ../build/spectra.o \ + ../build/thermodynamics.o ../build/transfer.o \ + ../build/trigonometric_integrals.o + +all: testKlass Makefile + +testKlass: testKlass.o Engine.o ClassEngine.o + $(CXX) $(CFLAGS) $(CLASSMODULES) ClassEngine.o Engine.o testKlass.o -o testKlass + +testKlass.o: testKlass.cc + $(CXX) $(CFLAGS) -c testKlass.cc -o testKlass.o + +ClassEngine.o: ClassEngine.cc ClassEngine.hh + $(CXX) $(CFLAGS) -c ClassEngine.cc -o ClassEngine.o + +Engine.o: Engine.cc Engine.hh + $(CXX) $(CFLAGS) -c Engine.cc -o Engine.o + +clean: + rm -rf *.o testKlass diff --git a/class/cpp/README b/class/cpp/README new file mode 100644 index 00000000..0bb49733 --- /dev/null +++ b/class/cpp/README @@ -0,0 +1,11 @@ +The C++ wrapper ClassEngine.cc for Class (written by S. Plaszczynski) is distributed together with a test code, testKlass.cc, in which you can write a list of input parameters. This test code can be compiled with (assuming you are already in the directory cpp/ and you have a c++ compiler compatible with openmp): + +> c++ -O2 -fopenmp -I../include -c Engine.cc -o Engine.o +> c++ -O2 -fopenmp -I../include -c ClassEngine.cc -o ClassEngine.o +> c++ -O2 -fopenmp -I../include -c testKlass.cc -o testKlass.o +> cd .. +> c++ -O2 -fopenmp build/arrays.o build/background.o build/common.o build/dei_rkck.o build/evolver_ndf15.o build/evolver_rkck.o build/growTable.o build/helium.o build/history.o build/hydrogen.o build/hyperspherical.o build/hyrectools.o build/input.o build/lensing.o build/nonlinear.o build/output.o build/parser.o build/perturbations.o build/primordial.o build/quadrature.o build/sparse.o build/spectra.o build/thermodynamics.o build/transfer.o cpp/ClassEngine.o cpp/Engine.o cpp/testKlass.o -o testKlass + +then run with: + +> ./testKlass diff --git a/class/cpp/testKlass.cc b/class/cpp/testKlass.cc new file mode 100644 index 00000000..23f120e4 --- /dev/null +++ b/class/cpp/testKlass.cc @@ -0,0 +1,71 @@ + +//KLASS +#include"ClassEngine.hh" + +#include +#include +#include +#include + +using namespace std; + + +// example run: one can specify as a second argument a preicison file +int main(int argc,char** argv){ + + const int l_max_scalars=1200; + + //CLASS config + ClassParams pars; + + pars.add("100*theta_s",1.04); + pars.add("omega_b",0.0220); + pars.add("omega_cdm",0.1116); + pars.add("A_s",2.42e-9); + pars.add("n_s",.96); + pars.add("tau_reio",0.09); + + pars.add("k_pivot",0.05); + pars.add("YHe",0.25); + pars.add("output","tCl,pCl,lCl"); //pol +clphi + + pars.add("l_max_scalars",l_max_scalars); + pars.add("lensing",true); //note boolean + + pars.add("background_verbose",1); + pars.add("thermodynamics_verbose",1); + pars.add("perturbations_verbose",1); + pars.add("transfer_verbose",1); + pars.add("primordial_verbose",1); + pars.add("spectra_verbose",1); + pars.add("nonlinear_verbose",1); + pars.add("lensing_verbose",1); + + ClassEngine* KKK(0); + + try{ + //le calculateur de spectres + if (argc==2){ + string pre=string(argv[1]); + KKK=new ClassEngine(pars,pre); + } + else{ + KKK=new ClassEngine(pars); + } + + //cout.precision( 16 ); + //KKK->writeCls(cout); + + ofstream outfile; + const char* outfile_name = "testKlass_Cl_lensed.dat"; + outfile.open(outfile_name, ios::out | ios::trunc ); + KKK->writeCls(outfile); + cout << "Cl's written in file " << outfile_name << endl; + } + catch (std::exception &e){ + cout << "GOSH" << e.what() << endl; + } + + delete KKK; + +} diff --git a/class/doc/README b/class/doc/README new file mode 100644 index 00000000..71313830 --- /dev/null +++ b/class/doc/README @@ -0,0 +1,13 @@ +CLASS automatic documentation folders +===================================== +(Deanna Hooper, 25.03.2016) + +* the automatically generated PDF manual can be found in + + doc/manual/CLASS_MANUAL.pdf + +* the files in doc/input/ are auxiliary files for generating it + +* if you wish to update this manual yourself using doxygen, look at instructions in section 6 of CLASS_MANUAL.pdf + +* there is also an html version that you can access from the CLASS webpages. The html version used to be distributed together with CLASS, but we removed it because the html directory was too big. If you do wish to get the html source files on your own computer, you just need to recompile the manual with "cd doc/input/; ./make1.sh" (assuming that you have doxygen installed). \ No newline at end of file diff --git a/class/doc/input/chap2.md b/class/doc/input/chap2.md new file mode 100644 index 00000000..244374bc --- /dev/null +++ b/class/doc/input/chap2.md @@ -0,0 +1,108 @@ +Where to find information and documentation on CLASS? +====================================================== + +Author: Julien Lesgourgues + + +* __For what the code can actually compute__: all possible input parameters, all coded cosmological models, all functionalities, all observables, etc.: read the file `explanatory.ini` in the main `CLASS` directory: it is THE reference file where we keep track of all possible input and the definition of all input parameters. For that reason we recommend to leave it always unchanged and to work with copies of it, or with short input files written from scratch. + + +* __For the structure, style, and concrete aspects of the code__: this documentation, especially the `CLASS overview` chapter (the extensive automatically-generated part of this documentation is more for advanced users); plus the slides of our `CLASS` lectures, for instance those from Tokyo 2014 available at + + `http://lesgourg.github.io/class-tour-Tokyo.html` + + or the more recent and concise summary from the Narbonne 2016 lecture available at + + `http://lesgourg.github.io/class-tour/Narbonne.pdf` + + An updated overview of available `CLASS` lecture slides is always available at + + `http://lesgourg.github.io/courses.html` + + in the section `Courses on numerical tools`. + + +* __For the python wrapper of `CLASS`__: at the moment, the best are the last slides (pages 75-96) of the Narbonne 2016 lectures + + `http://lesgourg.github.io/class-tour/Narbonne.pdf` + + Later we will expand the wrapper documentation with a dedicated chapter here. + +* __For the physics and equations used in the code__: mainly, the following papers: + - *Cosmological perturbation theory in the synchronous and conformal Newtonian gauges* + + C. P. Ma and E. Bertschinger. + + http://arxiv.org/abs/astro-ph/9506072 + + 10.1086/176550 + + Astrophys. J. __455__, 7 (1995) + + - *The Cosmic Linear Anisotropy Solving System (CLASS) II: Approximation schemes* + + D. Blas, J. Lesgourgues and T. Tram. + + http://arxiv.org/abs/1104.2933 [astro-ph.CO] + + 10.1088/1475-7516/2011/07/034 + + JCAP __1107__, 034 (2011) + + - *The Cosmic Linear Anisotropy Solving System (CLASS) IV: efficient implementation of non-cold relics* + + J. Lesgourgues and T. Tram. + + http://arxiv.org/abs/1104.2935 [astro-ph.CO] + + 10.1088/1475-7516/2011/09/032 + + JCAP __1109__, 032 (2011) + + - *Optimal polarisation equations in FLRW universes* + + T. Tram and J. Lesgourgues. + + http://arxiv.org/abs/1305.3261 [astro-ph.CO] + + 10.1088/1475-7516/2013/10/002 + + JCAP __1310__, 002 (2013) + + - *Fast and accurate CMB computations in non-flat FLRW universes* + + J. Lesgourgues and T. Tram. + + http://arxiv.org/abs/1312.2697 [astro-ph.CO] + + 10.1088/1475-7516/2014/09/032 + + JCAP __1409__, no. 09, 032 (2014) + + - *The CLASSgal code for Relativistic Cosmological Large Scale Structure* + + E. Di Dio, F. Montanari, J. Lesgourgues and R. Durrer. + + http://arxiv.org/abs/1307.1459 [astro-ph.CO] + + 10.1088/1475-7516/2013/11/044 + + JCAP __1311__, 044 (2013) + + plus also some latex notes on specific sectors: + + - *Equations for perturbed recombination* + + (can be turned on optionally by the user since v2.1.0) + + L. Voruz. + + http://lesgourg.github.io/class_public/perturbed_recombination.pdf + + - *PPF formalism in Newtonian and synchronous gauge* + + (used by default for the fluid perturbations since v2.6.0) + + T. Tram. + + http://lesgourg.github.io/class_public/PPF_formalism.pdf \ No newline at end of file diff --git a/class/doc/input/chap3.md b/class/doc/input/chap3.md new file mode 100644 index 00000000..1e79b6b5 --- /dev/null +++ b/class/doc/input/chap3.md @@ -0,0 +1,517 @@ +CLASS overview (architecture, input/output, general principles) +=============================================================== + +Author: Julien Lesgourgues + + +# Overall architecture of `class` # + +## Files and directories ## + +After downloading `CLASS`, one can see the following files in the root directory contains: + +- some example of input files, the most important being `explanatory.ini`. a reference input file containing all possible flags, options and physical input parameters. While this documentation explains the structure and use of the code, `explanatory.ini` can be seen as the _physical_ documentation of `CLASS`. The other input file are alternative parameter input files (ending with `.ini`) and precision input files (ending with `.pre`) + +- the `Makefile`, with which you can compile the code by typing `make clean; make;` this will create the executable `class` and some binary files in the directory `build/`. The `Makefile` contains other compilation options that you can view inside the file. + +- `CPU.py` is a python script designed for plotting the `CLASS` output; for documentation type `python CPU.py --help` + +- `plot_CLASS_output.m` is the counterpart of `CPU.py` for MatLab + +- there are other input files for various applications: an example of a non-cold dark matter distribution functions (`psd_FD_single.dat`), and examples of evolution and selection functions for galaxy number count observables (`myevolution.dat, myselection.dat`). + +Other files are split between the following directories: + +- `source/` contains the C files for each `CLASS` module, i.e. each +block containing some part of the physical equations and logic of +the Boltzmann code. + +- `tools/` contains purely numerical algorithms, applicable in any +context: integrators, simple manipulation of arrays (derivation, +integration, interpolation), Bessel function calculation, quadrature algorithms, parser, etc. + +- `main/` contains the main module `class.c` with the main + routine `class(...)`, to be used in interactive runs (but not + necessarily when the code is interfaced with other ones). + +- `test/` contains alternative main routines which can be used to run only some part of the code, to test its accuracy, to illustrate how +it can be interfaced with other codes, etc. + +- `include/` contains all the include files with a `.h` suffix. + +- `output/` is where the output files will be written by default (this can be changed to another directory by adjusting the input parameter `root = <...>`) + +- `python/` contains the python wrapper of `CLASS`, called classy (see `python/README`) + +- `cpp/` contains the C++ wrapper of `CLASS`, called ClassEngine (see `cpp/README`) + +- `doc/` contains the automatic documentation (manual and input files required to build it) + +- `external_Pk/` contains examples of external codes that can be used to generate the primordial spectrum and be interfaced with `CLASS`, when one of the many options already built inside the code are not sufficient. + +- `bbn/` contains interpolation tables produced by BBN codes, in order to predict e.g. \f$ Y_\mathrm{He}(\omega_b, \Delta N_\mathrm{eff})\f$. + +- `hyrec/` contains the recombination code HyRec of Yacine Ali-Haimoud and Chris Hirata, that can be used as an alternative to the built-in Recfast (using the input parameter `recombination = <...>`). + + +## The ten-module backbone ## + +### Ten tasks ### + +The purpose of `class` consists in computing some background quantities, thermodynamical quantities, perturbation transfer functions, and finally 2-point statistics (power spectra) for a given set of cosmological parameters. This task can be decomposed in few steps or modules: + +1. set input parameter values. + +2. compute the evolution of cosmological background quantities. + +3. compute the evolution of thermodynamical quantities (ionization fractions, etc.) + +4. compute the evolution of source functions \f$S(k,\tau)\f$ (by integrating over all perturbations). + +5. compute the primordial spectra. + +6. eventually, compute non-linear corrections at small redshift/large wavenumber. + +7. compute transfer functions in harmonic space \f$\Delta_l(k)\f$ (unless one needs only Fourier spectra \f$P(k)\f$'s and no harmonic spectra \f$C_l\f$'s). + +8. compute the observable power spectra \f$C_l\f$'s (by convolving the primordial spectra and the harmonic transfer functions) and/or \f$P(k)\f$'s (by multiplying the primordial spectra and the appropriate source functions \f$S(k,\tau)\f$). + +9. eventually, compute the lensed CMB spectra (using second-order perturbation theory) + +10. write results in files (when `CLASS` is used interactively. The python wrapper does not go through this step, after 1.-9. it just keeps the output stored internally). + + +### Ten structures ### + +In `class`, each of these steps is associated with a structure: + +1. `struct precision` for input precision parameters (input physical parameters are dispatched among the other structures listed below) +2. `struct background` for cosmological background, +3. `struct thermo` for thermodynamics, +4. `struct perturbs` for source functions, +5. `struct primordial` for primordial spectra, +6. `struct nonlinear` for nonlinear corrections, +7. `struct transfers` for transfer functions, +8. `struct spectra` for observable spectra, +9. `struct lensing` for lensed CMB spectra, +10. `struct output` for auxiliary variable describing the output format. + +A given structure contains "everything concerning one step that the +subsequent steps need to know" (for instance, `struct perturbs` contains everything about source +functions that the transfer module needs to know). In particular, each +structure contains one array of tabulated values (for `struct background`, background +quantities as a function of time, for `struct thermo`, thermodynamical quantities as a +function of redshift, for `struct perturbs`, sources \f$S(k, \tau)\f$, etc.). It +also contains information about the size of this array and the value +of the index of each physical quantity, so that the table can be +easily read and interpolated. Finally, it contains any derived +quantity that other modules might need to know. Hence, the +communication from one module A to another module B +consists in passing a pointer to the structure filled by A, and nothing else. + +All "precision parameters" are grouped in the single structure +`struct precision`. The code contains _no other arbitrary +numerical coefficient_. + +### Ten modules ### + +Each structure is defined and filled in one of the following modules +(and precisely in the order below): + +1. `input.c` +2. `background.c` +3. `thermodynamics.c` +4. `perturbations.c ` +5. `primordial.c` +6. `nonlinear.c` +7. `transfer.c` +8. `spectra.c` +9. `lensing.c` +10. `output.c` + + +Each of these modules contains at least three functions: + +- `module_init(...)` + +- `module_free(...)` + +- `module_something_at_somevalue` + +where _module_ is one of `input, background, thermodynamics, perturb, primordial, nonlinear, transfer, spectra, lensing, output`. + + +The first function allocates and fills each structure. This can be +done provided that the previous structures in the hierarchy have been +already allocated and filled. In summary, calling one of `module_init(...)` amounts in solving entirely one of the steps 1 to 10. + +The second function deallocates the fields of each structure. This +can be done optionally at the end of the code (or, when the code is embedded +in a sampler, this __must__ be done +between each execution of `class`, and especially before calling `module_init(...)` again with different input parameters). + +The third function is able to interpolate the pre-computed tables. For +instance, `background_init()` fills a table of background +quantities for discrete values of conformal time \f$\tau\f$, but +`background_at_tau(tau, * values)` will return these values for any +arbitrary \f$\tau\f$. + +Note that functions of the type `module_something_at_somevalue` are the only ones which are +called from another module, while functions of the type `module_init(...)` and `module_free(...)` are the only +one called by the main executable. All other functions are for +internal use in each module. + +When writing a C code, the ordering of the functions in the *.c file is in principle arbitrary. However, for the sake of clarity, we always respected the following order in each `CLASS` module: + +1. all functions that may be called by other modules, i.e. "external functions", usually named like `module_something_at_somevalue(...)` +2. then, `module_init(...)` +3. then, `module_free()` +4. then, all functions used only internally by the module + + +## The `main()` function(s) ## + +### The `main.c` file ### + +The main executable of `class` is the function `main()` located in the file `main/main.c`. +This function consist only in the +following lines +(not including comments and error-management lines explained later): + + main() { + struct precision pr; + + struct background ba; + + struct thermo th; + + struct perturbs pt; + + struct primordial pm; + + struct nonlinear nl; + + struct transfers tr; + + struct spectra sp; + + struct lensing le; + + struct output op; + + + input_init_from_arguments(argc, argv,&pr,&ba,&th,&pt,&tr,&pm,&sp,&nl,&le,&op,errmsg); + + background_init(&pr,&ba); + + thermodynamics_init(&pr,&ba,&th); + + perturb_init(&pr,&ba,&th,&pt); + + primordial_init(&pr,&pt,&pm); + + nonlinear_init(&pr,&ba,&th,&pt,&pm,&nl); + + transfer_init(&pr,&ba,&th,&pt,&nl,&tr); + + spectra_init(&pr,&ba,&pt,&pm,&nl,&tr,&sp); + + lensing_init(&pr,&pt,&sp,&nl,&le); + + output_init(&ba,&th,&pt,&pm,&tr,&sp,&nl,&le,&op) + + + /****** done ******/ + + + lensing_free(&le); + + spectra_free(&sp); + + transfer_free(&tr); + + nonlinear_free(&nl); + + primordial_free(&pm); + + perturb_free(&pt); + + thermodynamics_free(&th); + + background_free(&ba); + + +We can come back on the role of each argument. The arguments above are all pointers to the 10 structures of the code, excepted `argc, argv` which contains the input files passed by the user, and `errmsg` which contains the output error message of the input module (error management will be described below). + +`input_init_from_arguments` needs all structures, because it will set the precision parameters inside the `precision` structure, and the physical parameters in some fields of the respective other structures. For instance, an input parameter relevant for the primordial spectrum calculation (like the tilt \f$n_s\f$) will be stored in the `primordial` structure. Hence, in ` input_init_from_arguments`, all structures can be seen as output arguments. + +Other `module_init()` functions typically need all previous structures, which contain the result of the previous modules, plus its own structures, which contain some relevant input parameters before the function is called, as well as all the result form the module when the function has been executed. Hence all passed structures can be seen as input argument, excepted the last one which is both input and output. An example is `perturb_init(&pr,&ba,&th,&pt)`. + +Each function `module_init()` does not need __all__ previous structures, it happens that a module does not depend on a __all__ previous one. For instance, the primordial module does not need information on the background and thermodynamics evolution in order to compute the primordial spectra, so the dependency is reduced: `primordial_init(&pr,&pt,&pm)`. + +Each function `module_init()` only deallocates arrays defined in the structure of their own module, so they need only their own structure as argument. (This is possible because all structures are self-contained, in the sense that when the structure contains an allocated array, it also contains the size of this array). The first and last module, `input` and `output`, have no `input_free()` or `output_free()` functions, because the structures `precision` and `output` do not contain arrays that would need to be de-allocated after the execution of the module. + +### The `test_<...>.c` files ### + +For a given purpose, somebody could only be interested in the +intermediate steps (only background quantities, only the +thermodynamics, only the perturbations and sources, etc.) It is +then straightforward to truncate the full hierarchy of modules 1, ... 10 at some +arbitrary order. We provide several "reduced executables" achieving precisely this. +They are located in `test/test_module_.c` (like, for instance, `test/test_perturbations.c`) and they can +be complied using the Makefile, which contains the appropriate commands and definitions (for instance, you can type `make test_perturbations`). + +The `test/` directory contains other useful example of alternative main functions, like for instance +`test_loops.c` which shows how to call `CLASS` within a loop over different parameter values. +There is also a version `test/test_loops_omp.c` using a double level of openMP parallelisation: one for running several `CLASS` instances in parallel, one for running each `CLASS` instance on several cores. The comments in these files are self-explanatory. + +# Input/output # + +## Input ## + +There are two types of input: + +- "precision parameters" (controlling the precision of the output and the execution time), + +- "input parameters" (cosmological parameters, flags telling to the code what it should compute, ...) + +The code can be executed with a maximum of two input files, e.g. + + ./class explanatory.ini cl_permille.pre + + +The file with a `.ini` extension is the cosmological parameter +input file, and the one with a `.pre` extension is the precision +file. Both files are optional: all parameters are set to default +values corresponding to the "most usual choices", and are eventually +replaced by the parameters passed in the two input files. For +instance, if one is happy with default accuracy settings, it is enough +to run with + + ./class explanatory.ini + +Input files do not +necessarily contain a line for each parameter, since many of them can +be left to default value. The example file `explanatory.ini` is +very long and somewhat indigestible, since it contains all possible +parameters, together with lengthy explanations. We recommend to keep +this file unchanged for reference, and to copy it in e.g. `test.ini`. +In the latter file, the user can erase all sections in +which he/she is absolutely not interested (e.g., all the part on +isocurvature modes, or on tensors, or on non-cold species, +etc.). Another option is to create an input file from scratch, copying +just the relevant lines from `explanatory.ini`. For the simplest +applications, the user will just need a few lines for basic +cosmological parameters, one line for the `output` entry (where +one can specifying which power spectra must be computed), and one line +for the `root` entry (specifying the prefix of all output files). + +The syntax of the input files is explained at the beginning of +`explanatory.ini`. Typically, lines in those files look like: + + + parameter1 = value1 + + free comments + + parameter2 = value2 # further comments + + # commented_parameter = commented_value + +and parameters can be entered in arbitrary order. This is rather +intuitive. The user should just be careful not to put an "=" +sign not preceded by a "#" sign inside a comment: the code +would then think that one is trying to pass some unidentified input +parameter. + +The syntax for the cosmological and precision parameters is the same. +It is clearer to split these parameters in the two files `.ini` +and `.pre`, but there is no strict rule about which parameter goes +into which file: in principle, precision parameters could be passed in +the `.ini`, and vice-versa. The only important thing is not to pass +the same parameter twice: the code would then complain and not run. + +The `CLASS` input files are also user-friendly in the sense that many +different cosmological parameter bases can be used. This is made +possible by the fact that the code does not only read parameters, it +"interprets them" with the level of logic which has been coded in +the `input.c` module. For instance, the Hubble parameter, the photon +density, the baryon density and the ultra-relativistic neutrino density can be +entered as: + + h = 0.7 + + T_cmb = 2.726 # Kelvin units + + omega_b = 0.02 + + N_eff = 3.04 + + +(in arbitrary order), or as + + + H0 = 70 + + omega_g = 2.5e-5 # g is the label for photons + + Omega_b = 0.04 + + omega_ur = 1.7e-5 # ur is the label for ultra-relativistic species + + +or any combination of the two. The code knows that for the photon +density, one should pass one (but not more than one) parameter out of +`T_cmb`, `omega_g`, `Omega_g` (where small omega's refer to +\f$\omega_i \equiv \Omega_i h^2\f$). It searches for one of these values, +and if needed, it converts it into one of the other two parameters, +using also other input parameters. For instance, `omega_g` will +be converted into `Omega_g` even if \f$h\f$ is written later in the +file than `omega_g`: the order makes no difference. Lots of +alternatives have been defined. If the code finds that not enough +parameters have been passed for making consistent deductions, it will +complete the missing information with in-built default values. On the +contrary, if it finds that there is too much information and no unique +solution, it will complain and return an error. + +In summary, the input syntax has been defined in such way that the +user does not need to think too much, and can pass his preferred set +of parameters in a nearly informal way. + +Let us mention a two useful parameters defined at the end of `explanatory.ini`, that we recommend setting to `yes` in order to run the code in a safe way: + +`write parameters = [yes or no]` (_default_: `no`) + +When set to yes, all input/precision parameters which have been read +are written in a file `parameters.ini`, to keep track all the details of this execution; this file can also be re-used as a new input file. Also, with this option, all parameters that have been passed and that the code did not read (because the syntax was wrong, or because the parameter was not relevant in the context of the run) are written in a file `unused_parameters`. When you have doubts about your input or your results, you can check what is in there. + +`write warnings = [yes or no]` (_default_: `no`) + +When set to yes, the parameters that have been passed and that the code did not read +(because the syntax was wrong, or because the parameter was not relevant in the context of the run) are written +in the standard output as `[Warning:]....` + +There is also a list of "verbose" parameters at the end of `explanatory.ini`. They can be used to control +the level of information passed to the standard output (0 means silent; 1 means normal, e.g. information on age of the universe, etc.; 2 is useful for instance when you want to check on how many cores the run is parallelised; 3 and more are intended for debugging). + +`CLASS` comes with a list of precision parameter files ending by `.pre`. Honestly we have not been updating all these files recently, and we need to do a bit of cleaning there. However you can trust `cl_ref.pre`. We have derived this file by studying both the convergence of the CMB output with respect to all `CLASS` precision parameters, and the agreement with `CAMB`. We consider that this file generates good reference CMB spectra, accurate up to the hundredth of per cent level, as explained in the CLASS IV paper and re-checked since then. You can try it with e.g. + + ./class explanatory.ini cl_ref.pre + +but the run will be extremely long. This is an occasion to run a many-core machine with a lot of RAM. It may work also on your laptop, but in half an hour or so. + +If you want a reference matter power spectrum P(k), also accurate up to the hundredth of percent level, we recommend using the file `pk_ref.pre`, identical to `cl_ref.pre` excepted that the truncation of the neutrino hierarchy has been pushed to `l_max_ur=150`. + +In order to increase moderately the precision to a tenth of percent, without prohibitive computing time, we recommend using `cl_permille.pre`. + +## Output ## + +The input file may contain a line + + root = + +where `` is a path of your choice, e.g. `output/test_`. +Then all output files will start like this, e.g. `output/test_cl.dat`, `output/test_cl_lensed.dat`, etc. +Of course the number of output files depends on your settings in the input file. There can be input files for CMB, LSS, background, thermodynamics, transfer functions, primordial spectra, etc. All this is documented in `explanatory.ini`. + +If you do not pass explicitly a `root = `, the code will name the output in its own way, by concatenating `output/`, the name of the input parameter file, and the first available integer number, e.g. + + output/explanatory03_cl.dat, etc. + + +# General principles # + +## Error management ## + +Error management is based on the fact that all functions are defined +as integers returning either `_SUCCESS_` or `_FAILURE_`. Before returning `_FAILURE_`, they write an +error message in the structure of the module to which they belong. The +calling function will read this message, append it to its own error +message, and return a `_FAILURE_`; and so on and so forth, until +the main routine is reached. This error management allows the user to +see the whole nested structure of error messages when an error has +been met. The structure associated to each module contains a field +for writing error messages, called `structure_i.error_message`, where `structure_i` could be one of `background`, `thermo`, `perturbs`, etc. So, when a function from a module \f$i\f$ +is called within module \f$j\f$ and returns an error, the goal is to write +in `structure_j.error_message` a local error message, and to +append to it the error message in `structure_i.error_message`. These steps are implemented in a macro `class_call()`, used for calling whatever function: + + + class_call(module_i_function(...,structure_i), + structure_i.error_message, + structure_j.error_message); + + +So, the first argument of `call_call()` is the function we want +to call; the second argument is the location of the error message +returned by this function; and the third one is the location of the +error message which should be returned to the higher level. +Usually, in the bulk of the code, we use pointer to structures rather than structure themselves; then the syntax is + + class_call(module_i_function(...,pi), + pi->error_message, + pj->error_message);` + +where in this generic example, `pi` and `pj` are assumed to be pointers towards the structures +`structure_i` and `structure_j`. + +The user will find in `include/common.h` a list of additional macros, all +starting by `class_...()`, which are all based on this logic. For +instance, the macro `class_test()` offers a generic way to return +an error in a standard format if a condition is not fulfilled. A +typical error message from `CLASS` looks like: + + +`Error in module_j_function1` + +`module_j_function1 (L:340) : error in module_i_function2(...)` + +`module_i_function2 (L:275) : error in module_k_function3(...)` + +`...` + +`=> module_x_functionN (L:735) : your choice of input parameter blabla=30 +is not consistent with the constraint blabla<1` + + +where the `L`'s refer to line numbers in each file. These error +messages are very informative, and are built almost entirely +automatically by the macros. For instance, in the above example, it +was only necessary to write inside the function `module_x_functionN()` a test like: + + + class_test(blabla >= 1, + px->error_message, + "your choice of input parameter blabla=%e + is not consistent with the constraint blabla<%e", + blabla,blablamax); + + +All the rest was added step by step by the various `class_call()` macros. + + +## Dynamical allocation of indices ## + +On might be tempted to decide that in a given array, matrix or vector, a given quantity is associated with an explicit index value. However, when modifying the code, extra entries will be needed and will mess up the initial scheme; the user will need to study which index is associated to which quantity, and possibly make an error. All this can be avoided by using systematically a dynamical index allocation. This means that all indices remain under a symbolic form, and in each, run the code attributes automatically a value to each index. The user never needs to know this value. + +Dynamical indexing is implemented in a very generic way in CLASS, the same rules apply everywhere. They are explained in these lecture slides: + +`https://www.dropbox.com/sh/ma5muh76sggwk8k/AABl_DDUBEzAjjdywMjeTya2a?dl=0` + +in the folder `CLASS_Lecture_slides/lecture5_index_and_error.pdf`. + +## No hard coding ## + +Any feature or equation which could be true in one cosmology and not in another one should not be written explicitly in the code, and should not be taken as granted in several other places. Discretization and integration steps are usually defined automatically by the code for each cosmology, instead of being set to something which might be optimal for minimal models, and not sufficient for other ones. You will find many example of this in the code. As a consequence, in the list of precision parameter, you rarely find actual stepsize. You find rather parameters representing the ratio between a stepsize and a physical quantity computed for each cosmology. + +## Modifying the code ## + +Implementing a new idea completly from scratch would be rather intimidating, even for the main developpers of `CLASS`. Fortunately, we never have to work from scratch. Usually we want to code a new species, a new observable, a new approximation scheme, etc. The trick is to think of another species, observable, approximation scheme, etc., looking as close as possible to the new one. + +Then, playing with the `grep` command and the `search` command of your editor, search for all occurences of this nearest-as-possible other feature. This is usually easy thanks to our naming scheme. For each species, observable, approximation scheme, etc., we usually use the same sequence of few letters everywhere (fo instance, `fld` for the fluid usually representing Dark Energy). Grep for `fld` and you'll get all the lines related to the fluid. There is another way: we use everywhere some conditional jumps related to a given feature. For instance, the lines related to the fluid are always in between `if (pba->has_fld == _TRUE_) { ... }` and the lines related to the cosmic shear observables are always in between `if (ppt->has_lensing_potential == _TRUE_) { ... }`. Locating these flags and conditional jumps shows you all the parts related to a given feature/ingredient. + +Once you have localised your nearest-as-possible other feature, you can copy/paste these lines and adapt them to the case of your new feature! You are then sure that you didn't miss any step, even the smallest technical steps (definition of indices, etc.) + +# Units # + +Internally, the code uses almost everywhere units of Mpc to some power, excepted in the inflation module, where many quantities are in natural units (wrt the true Planck mass). diff --git a/class/doc/input/doxyconf b/class/doc/input/doxyconf new file mode 100644 index 00000000..0c2a683b --- /dev/null +++ b/class/doc/input/doxyconf @@ -0,0 +1,2362 @@ +# Doxyfile 1.8.9.1 + +# This file describes the settings to be used by the documentation system +# doxygen (www.doxygen.org) for a project. +# +# All text after a double hash (##) is considered a comment and is placed in +# front of the TAG it is preceding. +# +# All text after a single hash (#) is considered a comment and will be ignored. +# The format is: +# TAG = value [value, ...] +# For lists, items can also be appended using: +# TAG += value [value, ...] +# Values that contain spaces should be placed between quotes (\" \"). + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- + +# This tag specifies the encoding used for all characters in the config file +# that follow. The default is UTF-8 which is also the encoding used for all text +# before the first occurrence of this tag. Doxygen uses libiconv (or the iconv +# built into libc) for the transcoding. See http://www.gnu.org/software/libiconv +# for the list of possible encodings. +# The default value is: UTF-8. + +DOXYFILE_ENCODING = UTF-8 + +# The PROJECT_NAME tag is a single word (or a sequence of words surrounded by +# double-quotes, unless you are using Doxywizard) that should identify the +# project for which the documentation is generated. This name is used in the +# title of most generated pages and in a few other places. +# The default value is: My Project. + +PROJECT_NAME = "CLASS MANUAL" + +# The PROJECT_NUMBER tag can be used to enter a project or revision number. This +# could be handy for archiving the generated documentation or if some version +# control system is used. + +PROJECT_NUMBER = + +# Using the PROJECT_BRIEF tag one can provide an optional one line description +# for a project that appears at the top of each page and should give viewer a +# quick idea about the purpose of the project. Keep the description short. + +PROJECT_BRIEF = + +# With the PROJECT_LOGO tag one can specify a logo or an icon that is included +# in the documentation. The maximum height of the logo should not exceed 55 +# pixels and the maximum width should not exceed 200 pixels. Doxygen will copy +# the logo to the output directory. + +PROJECT_LOGO = + +# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path +# into which the generated documentation will be written. If a relative path is +# entered, it will be relative to the location where doxygen was started. If +# left blank the current directory will be used. + +OUTPUT_DIRECTORY = ../manual + +# If the CREATE_SUBDIRS tag is set to YES then doxygen will create 4096 sub- +# directories (in 2 levels) under the output directory of each output format and +# will distribute the generated files over these directories. Enabling this +# option can be useful when feeding doxygen a huge amount of source files, where +# putting all generated files in the same directory would otherwise causes +# performance problems for the file system. +# The default value is: NO. + +CREATE_SUBDIRS = NO + +# If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII +# characters to appear in the names of generated files. If set to NO, non-ASCII +# characters will be escaped, for example _xE3_x81_x84 will be used for Unicode +# U+3044. +# The default value is: NO. + +ALLOW_UNICODE_NAMES = YES + +# The OUTPUT_LANGUAGE tag is used to specify the language in which all +# documentation generated by doxygen is written. Doxygen will use this +# information to generate all constant output in the proper language. +# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Catalan, Chinese, +# Chinese-Traditional, Croatian, Czech, Danish, Dutch, English (United States), +# Esperanto, Farsi (Persian), Finnish, French, German, Greek, Hungarian, +# Indonesian, Italian, Japanese, Japanese-en (Japanese with English messages), +# Korean, Korean-en (Korean with English messages), Latvian, Lithuanian, +# Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, Romanian, Russian, +# Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, Swedish, Turkish, +# Ukrainian and Vietnamese. +# The default value is: English. + +OUTPUT_LANGUAGE = English + +# If the BRIEF_MEMBER_DESC tag is set to YES, doxygen will include brief member +# descriptions after the members that are listed in the file and class +# documentation (similar to Javadoc). Set to NO to disable this. +# The default value is: YES. + +BRIEF_MEMBER_DESC = YES + +# If the REPEAT_BRIEF tag is set to YES, doxygen will prepend the brief +# description of a member or function before the detailed description +# +# Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the +# brief descriptions will be completely suppressed. +# The default value is: YES. + +REPEAT_BRIEF = NO + +# This tag implements a quasi-intelligent brief description abbreviator that is +# used to form the text in various listings. Each string in this list, if found +# as the leading text of the brief description, will be stripped from the text +# and the result, after processing the whole list, is used as the annotated +# text. Otherwise, the brief description is used as-is. If left blank, the +# following values are used ($name is automatically replaced with the name of +# the entity):The $name class, The $name widget, The $name file, is, provides, +# specifies, contains, represents, a, an and the. + +ABBREVIATE_BRIEF = + +# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then +# doxygen will generate a detailed section even if there is only a brief +# description. +# The default value is: NO. + +ALWAYS_DETAILED_SEC = NO + +# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all +# inherited members of a class in the documentation of that class as if those +# members were ordinary class members. Constructors, destructors and assignment +# operators of the base classes will not be shown. +# The default value is: NO. + +INLINE_INHERITED_MEMB = NO + +# If the FULL_PATH_NAMES tag is set to YES, doxygen will prepend the full path +# before files name in the file list and in the header files. If set to NO the +# shortest path that makes the file name unique will be used +# The default value is: YES. + +FULL_PATH_NAMES = NO + +# The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path. +# Stripping is only done if one of the specified strings matches the left-hand +# part of the path. The tag can be used to show relative paths in the file list. +# If left blank the directory from which doxygen is run is used as the path to +# strip. +# +# Note that you can specify absolute paths here, but also relative paths, which +# will be relative from the directory where doxygen is started. +# This tag requires that the tag FULL_PATH_NAMES is set to YES. + +STRIP_FROM_PATH = + +# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the +# path mentioned in the documentation of a class, which tells the reader which +# header file to include in order to use a class. If left blank only the name of +# the header file containing the class definition is used. Otherwise one should +# specify the list of include paths that are normally passed to the compiler +# using the -I flag. + +STRIP_FROM_INC_PATH = + +# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but +# less readable) file names. This can be useful is your file systems doesn't +# support long names like on DOS, Mac, or CD-ROM. +# The default value is: NO. + +SHORT_NAMES = NO + +# If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the +# first line (until the first dot) of a Javadoc-style comment as the brief +# description. If set to NO, the Javadoc-style will behave just like regular Qt- +# style comments (thus requiring an explicit @brief command for a brief +# description.) +# The default value is: NO. + +JAVADOC_AUTOBRIEF = NO + +# If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first +# line (until the first dot) of a Qt-style comment as the brief description. If +# set to NO, the Qt-style will behave just like regular Qt-style comments (thus +# requiring an explicit \brief command for a brief description.) +# The default value is: NO. + +QT_AUTOBRIEF = NO + +# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a +# multi-line C++ special comment block (i.e. a block of //! or /// comments) as +# a brief description. This used to be the default behavior. The new default is +# to treat a multi-line C++ comment block as a detailed description. Set this +# tag to YES if you prefer the old behavior instead. +# +# Note that setting this tag to YES also means that rational rose comments are +# not recognized any more. +# The default value is: NO. + +MULTILINE_CPP_IS_BRIEF = NO + +# If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the +# documentation from any documented member that it re-implements. +# The default value is: YES. + +INHERIT_DOCS = YES + +# If the SEPARATE_MEMBER_PAGES tag is set to YES then doxygen will produce a new +# page for each member. If set to NO, the documentation of a member will be part +# of the file/class/namespace that contains it. +# The default value is: NO. + +SEPARATE_MEMBER_PAGES = NO + +# The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen +# uses this value to replace tabs by spaces in code fragments. +# Minimum value: 1, maximum value: 16, default value: 4. + +TAB_SIZE = 4 + +# This tag can be used to specify a number of aliases that act as commands in +# the documentation. An alias has the form: +# name=value +# For example adding +# "sideeffect=@par Side Effects:\n" +# will allow you to put the command \sideeffect (or @sideeffect) in the +# documentation, which will result in a user-defined paragraph with heading +# "Side Effects:". You can put \n's in the value part of an alias to insert +# newlines. + +ALIASES = + +# This tag can be used to specify a number of word-keyword mappings (TCL only). +# A mapping has the form "name=value". For example adding "class=itcl::class" +# will allow you to use the command class in the itcl::class meaning. + +TCL_SUBST = + +# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources +# only. Doxygen will then generate output that is more tailored for C. For +# instance, some of the names that are used will be different. The list of all +# members will be omitted, etc. +# The default value is: NO. + +OPTIMIZE_OUTPUT_FOR_C = YES + +# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or +# Python sources only. Doxygen will then generate output that is more tailored +# for that language. For instance, namespaces will be presented as packages, +# qualified scopes will look different, etc. +# The default value is: NO. + +OPTIMIZE_OUTPUT_JAVA = NO + +# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran +# sources. Doxygen will then generate output that is tailored for Fortran. +# The default value is: NO. + +OPTIMIZE_FOR_FORTRAN = NO + +# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL +# sources. Doxygen will then generate output that is tailored for VHDL. +# The default value is: NO. + +OPTIMIZE_OUTPUT_VHDL = NO + +# Doxygen selects the parser to use depending on the extension of the files it +# parses. With this tag you can assign which parser to use for a given +# extension. Doxygen has a built-in mapping, but you can override or extend it +# using this tag. The format is ext=language, where ext is a file extension, and +# language is one of the parsers supported by doxygen: IDL, Java, Javascript, +# C#, C, C++, D, PHP, Objective-C, Python, Fortran (fixed format Fortran: +# FortranFixed, free formatted Fortran: FortranFree, unknown formatted Fortran: +# Fortran. In the later case the parser tries to guess whether the code is fixed +# or free formatted code, this is the default for Fortran type files), VHDL. For +# instance to make doxygen treat .inc files as Fortran files (default is PHP), +# and .f files as C (default is Fortran), use: inc=Fortran f=C. +# +# Note: For files without extension you can use no_extension as a placeholder. +# +# Note that for custom extensions you also need to set FILE_PATTERNS otherwise +# the files are not read by doxygen. + +EXTENSION_MAPPING = + +# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments +# according to the Markdown format, which allows for more readable +# documentation. See http://daringfireball.net/projects/markdown/ for details. +# The output of markdown processing is further processed by doxygen, so you can +# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in +# case of backward compatibilities issues. +# The default value is: YES. + +MARKDOWN_SUPPORT = YES + +# When enabled doxygen tries to link words that correspond to documented +# classes, or namespaces to their corresponding documentation. Such a link can +# be prevented in individual cases by putting a % sign in front of the word or +# globally by setting AUTOLINK_SUPPORT to NO. +# The default value is: YES. + +AUTOLINK_SUPPORT = YES + +# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want +# to include (a tag file for) the STL sources as input, then you should set this +# tag to YES in order to let doxygen match functions declarations and +# definitions whose arguments contain STL classes (e.g. func(std::string); +# versus func(std::string) {}). This also make the inheritance and collaboration +# diagrams that involve STL classes more complete and accurate. +# The default value is: NO. + +BUILTIN_STL_SUPPORT = YES + +# If you use Microsoft's C++/CLI language, you should set this option to YES to +# enable parsing support. +# The default value is: NO. + +CPP_CLI_SUPPORT = NO + +# Set the SIP_SUPPORT tag to YES if your project consists of sip (see: +# http://www.riverbankcomputing.co.uk/software/sip/intro) sources only. Doxygen +# will parse them like normal C++ but will assume all classes use public instead +# of private inheritance when no explicit protection keyword is present. +# The default value is: NO. + +SIP_SUPPORT = NO + +# For Microsoft's IDL there are propget and propput attributes to indicate +# getter and setter methods for a property. Setting this option to YES will make +# doxygen to replace the get and set methods by a property in the documentation. +# This will only work if the methods are indeed getting or setting a simple +# type. If this is not the case, or you want to show the methods anyway, you +# should set this option to NO. +# The default value is: YES. + +IDL_PROPERTY_SUPPORT = YES + +# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC +# tag is set to YES then doxygen will reuse the documentation of the first +# member in the group (if any) for the other members of the group. By default +# all members of a group must be documented explicitly. +# The default value is: NO. + +DISTRIBUTE_GROUP_DOC = NO + +# Set the SUBGROUPING tag to YES to allow class member groups of the same type +# (for instance a group of public functions) to be put as a subgroup of that +# type (e.g. under the Public Functions section). Set it to NO to prevent +# subgrouping. Alternatively, this can be done per class using the +# \nosubgrouping command. +# The default value is: YES. + +SUBGROUPING = YES + +# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions +# are shown inside the group in which they are included (e.g. using \ingroup) +# instead of on a separate page (for HTML and Man pages) or section (for LaTeX +# and RTF). +# +# Note that this feature does not work in combination with +# SEPARATE_MEMBER_PAGES. +# The default value is: NO. + +INLINE_GROUPED_CLASSES = NO + +# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions +# with only public data fields or simple typedef fields will be shown inline in +# the documentation of the scope in which they are defined (i.e. file, +# namespace, or group documentation), provided this scope is documented. If set +# to NO, structs, classes, and unions are shown on a separate page (for HTML and +# Man pages) or section (for LaTeX and RTF). +# The default value is: NO. + +INLINE_SIMPLE_STRUCTS = YES + +# When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or +# enum is documented as struct, union, or enum with the name of the typedef. So +# typedef struct TypeS {} TypeT, will appear in the documentation as a struct +# with name TypeT. When disabled the typedef will appear as a member of a file, +# namespace, or class. And the struct will be named TypeS. This can typically be +# useful for C code in case the coding convention dictates that all compound +# types are typedef'ed and only the typedef is referenced, never the tag name. +# The default value is: NO. + +TYPEDEF_HIDES_STRUCT = YES + +# The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This +# cache is used to resolve symbols given their name and scope. Since this can be +# an expensive process and often the same symbol appears multiple times in the +# code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small +# doxygen will become slower. If the cache is too large, memory is wasted. The +# cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range +# is 0..9, the default is 0, corresponding to a cache size of 2^16=65536 +# symbols. At the end of a run doxygen will report the cache usage and suggest +# the optimal cache size from a speed point of view. +# Minimum value: 0, maximum value: 9, default value: 0. + +LOOKUP_CACHE_SIZE = 0 + +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- + +# If the EXTRACT_ALL tag is set to YES, doxygen will assume all entities in +# documentation are documented, even if no documentation was available. Private +# class members and static file members will be hidden unless the +# EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES. +# Note: This will also disable the warnings about undocumented members that are +# normally produced when WARNINGS is set to YES. +# The default value is: NO. + +EXTRACT_ALL = NO + +# If the EXTRACT_PRIVATE tag is set to YES, all private members of a class will +# be included in the documentation. +# The default value is: NO. + +EXTRACT_PRIVATE = NO + +# If the EXTRACT_PACKAGE tag is set to YES, all members with package or internal +# scope will be included in the documentation. +# The default value is: NO. + +EXTRACT_PACKAGE = NO + +# If the EXTRACT_STATIC tag is set to YES, all static members of a file will be +# included in the documentation. +# The default value is: NO. + +EXTRACT_STATIC = NO + +# If the EXTRACT_LOCAL_CLASSES tag is set to YES, classes (and structs) defined +# locally in source files will be included in the documentation. If set to NO, +# only classes defined in header files are included. Does not have any effect +# for Java sources. +# The default value is: YES. + +EXTRACT_LOCAL_CLASSES = NO + +# This flag is only useful for Objective-C code. If set to YES, local methods, +# which are defined in the implementation section but not in the interface are +# included in the documentation. If set to NO, only methods in the interface are +# included. +# The default value is: NO. + +EXTRACT_LOCAL_METHODS = NO + +# If this flag is set to YES, the members of anonymous namespaces will be +# extracted and appear in the documentation as a namespace called +# 'anonymous_namespace{file}', where file will be replaced with the base name of +# the file that contains the anonymous namespace. By default anonymous namespace +# are hidden. +# The default value is: NO. + +EXTRACT_ANON_NSPACES = NO + +# If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all +# undocumented members inside documented classes or files. If set to NO these +# members will be included in the various overviews, but no documentation +# section is generated. This option has no effect if EXTRACT_ALL is enabled. +# The default value is: NO. + +HIDE_UNDOC_MEMBERS = YES + +# If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all +# undocumented classes that are normally visible in the class hierarchy. If set +# to NO, these classes will be included in the various overviews. This option +# has no effect if EXTRACT_ALL is enabled. +# The default value is: NO. + +HIDE_UNDOC_CLASSES = YES + +# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend +# (class|struct|union) declarations. If set to NO, these declarations will be +# included in the documentation. +# The default value is: NO. + +HIDE_FRIEND_COMPOUNDS = NO + +# If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any +# documentation blocks found inside the body of a function. If set to NO, these +# blocks will be appended to the function's detailed documentation block. +# The default value is: NO. + +HIDE_IN_BODY_DOCS = NO + +# The INTERNAL_DOCS tag determines if documentation that is typed after a +# \internal command is included. If the tag is set to NO then the documentation +# will be excluded. Set it to YES to include the internal documentation. +# The default value is: NO. + +INTERNAL_DOCS = NO + +# If the CASE_SENSE_NAMES tag is set to NO then doxygen will only generate file +# names in lower-case letters. If set to YES, upper-case letters are also +# allowed. This is useful if you have classes or files whose names only differ +# in case and if your file system supports case sensitive file names. Windows +# and Mac users are advised to set this option to NO. +# The default value is: system dependent. + +CASE_SENSE_NAMES = YES + +# If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with +# their full class and namespace scopes in the documentation. If set to YES, the +# scope will be hidden. +# The default value is: NO. + +HIDE_SCOPE_NAMES = NO + +# If the HIDE_COMPOUND_REFERENCE tag is set to NO (default) then doxygen will +# append additional text to a page's title, such as Class Reference. If set to +# YES the compound reference will be hidden. +# The default value is: NO. + +HIDE_COMPOUND_REFERENCE= NO + +# If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of +# the files that are included by a file in the documentation of that file. +# The default value is: YES. + +SHOW_INCLUDE_FILES = YES + +# If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each +# grouped member an include statement to the documentation, telling the reader +# which file to include in order to use the member. +# The default value is: NO. + +SHOW_GROUPED_MEMB_INC = NO + +# If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include +# files with double quotes in the documentation rather than with sharp brackets. +# The default value is: NO. + +FORCE_LOCAL_INCLUDES = NO + +# If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the +# documentation for inline members. +# The default value is: YES. + +INLINE_INFO = YES + +# If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the +# (detailed) documentation of file and class members alphabetically by member +# name. If set to NO, the members will appear in declaration order. +# The default value is: YES. + +SORT_MEMBER_DOCS = NO + +# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief +# descriptions of file, namespace and class members alphabetically by member +# name. If set to NO, the members will appear in declaration order. Note that +# this will also influence the order of the classes in the class list. +# The default value is: NO. + +SORT_BRIEF_DOCS = NO + +# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the +# (brief and detailed) documentation of class members so that constructors and +# destructors are listed first. If set to NO the constructors will appear in the +# respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS. +# Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief +# member documentation. +# Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting +# detailed member documentation. +# The default value is: NO. + +SORT_MEMBERS_CTORS_1ST = NO + +# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy +# of group names into alphabetical order. If set to NO the group names will +# appear in their defined order. +# The default value is: NO. + +SORT_GROUP_NAMES = NO + +# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by +# fully-qualified names, including namespaces. If set to NO, the class list will +# be sorted only by class name, not including the namespace part. +# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. +# Note: This option applies only to the class list, not to the alphabetical +# list. +# The default value is: NO. + +SORT_BY_SCOPE_NAME = NO + +# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper +# type resolution of all parameters of a function it will reject a match between +# the prototype and the implementation of a member function even if there is +# only one candidate or it is obvious which candidate to choose by doing a +# simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still +# accept a match between prototype and implementation in such cases. +# The default value is: NO. + +STRICT_PROTO_MATCHING = NO + +# The GENERATE_TODOLIST tag can be used to enable (YES) or disable (NO) the todo +# list. This list is created by putting \todo commands in the documentation. +# The default value is: YES. + +GENERATE_TODOLIST = NO + +# The GENERATE_TESTLIST tag can be used to enable (YES) or disable (NO) the test +# list. This list is created by putting \test commands in the documentation. +# The default value is: YES. + +GENERATE_TESTLIST = NO + +# The GENERATE_BUGLIST tag can be used to enable (YES) or disable (NO) the bug +# list. This list is created by putting \bug commands in the documentation. +# The default value is: YES. + +GENERATE_BUGLIST = YES + +# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or disable (NO) +# the deprecated list. This list is created by putting \deprecated commands in +# the documentation. +# The default value is: YES. + +GENERATE_DEPRECATEDLIST= YES + +# The ENABLED_SECTIONS tag can be used to enable conditional documentation +# sections, marked by \if ... \endif and \cond +# ... \endcond blocks. + +ENABLED_SECTIONS = + +# The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the +# initial value of a variable or macro / define can have for it to appear in the +# documentation. If the initializer consists of more lines than specified here +# it will be hidden. Use a value of 0 to hide initializers completely. The +# appearance of the value of individual variables and macros / defines can be +# controlled using \showinitializer or \hideinitializer command in the +# documentation regardless of this setting. +# Minimum value: 0, maximum value: 10000, default value: 30. + +MAX_INITIALIZER_LINES = 30 + +# Set the SHOW_USED_FILES tag to NO to disable the list of files generated at +# the bottom of the documentation of classes and structs. If set to YES, the +# list will mention the files that were used to generate the documentation. +# The default value is: YES. + +SHOW_USED_FILES = YES + +# Set the SHOW_FILES tag to NO to disable the generation of the Files page. This +# will remove the Files entry from the Quick Index and from the Folder Tree View +# (if specified). +# The default value is: YES. + +SHOW_FILES = YES + +# Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces +# page. This will remove the Namespaces entry from the Quick Index and from the +# Folder Tree View (if specified). +# The default value is: YES. + +SHOW_NAMESPACES = YES + +# The FILE_VERSION_FILTER tag can be used to specify a program or script that +# doxygen should invoke to get the current version for each file (typically from +# the version control system). Doxygen will invoke the program by executing (via +# popen()) the command command input-file, where command is the value of the +# FILE_VERSION_FILTER tag, and input-file is the name of an input file provided +# by doxygen. Whatever the program writes to standard output is used as the file +# version. For an example see the documentation. + +FILE_VERSION_FILTER = + +# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed +# by doxygen. The layout file controls the global structure of the generated +# output files in an output format independent way. To create the layout file +# that represents doxygen's defaults, run doxygen with the -l option. You can +# optionally specify a file name after the option, if omitted DoxygenLayout.xml +# will be used as the name of the layout file. +# +# Note that if you run doxygen from a directory containing a file called +# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE +# tag is left empty. + +LAYOUT_FILE = + +# The CITE_BIB_FILES tag can be used to specify one or more bib files containing +# the reference definitions. This must be a list of .bib files. The .bib +# extension is automatically appended if omitted. This requires the bibtex tool +# to be installed. See also http://en.wikipedia.org/wiki/BibTeX for more info. +# For LaTeX the style of the bibliography can be controlled using +# LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the +# search path. See also \cite for info how to create references. + +CITE_BIB_FILES = + +#--------------------------------------------------------------------------- +# Configuration options related to warning and progress messages +#--------------------------------------------------------------------------- + +# The QUIET tag can be used to turn on/off the messages that are generated to +# standard output by doxygen. If QUIET is set to YES this implies that the +# messages are off. +# The default value is: NO. + +QUIET = YES + +# The WARNINGS tag can be used to turn on/off the warning messages that are +# generated to standard error (stderr) by doxygen. If WARNINGS is set to YES +# this implies that the warnings are on. +# +# Tip: Turn warnings on while writing the documentation. +# The default value is: YES. + +WARNINGS = NO + +# If the WARN_IF_UNDOCUMENTED tag is set to YES then doxygen will generate +# warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag +# will automatically be disabled. +# The default value is: YES. + +WARN_IF_UNDOCUMENTED = NO + +# If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for +# potential errors in the documentation, such as not documenting some parameters +# in a documented function, or documenting parameters that don't exist or using +# markup commands wrongly. +# The default value is: YES. + +WARN_IF_DOC_ERROR = YES + +# This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that +# are documented, but have no documentation for their parameters or return +# value. If set to NO, doxygen will only warn about wrong or incomplete +# parameter documentation, but not about the absence of documentation. +# The default value is: NO. + +WARN_NO_PARAMDOC = YES + +# The WARN_FORMAT tag determines the format of the warning messages that doxygen +# can produce. The string should contain the $file, $line, and $text tags, which +# will be replaced by the file and line number from which the warning originated +# and the warning text. Optionally the format may contain $version, which will +# be replaced by the version of the file (if it could be obtained via +# FILE_VERSION_FILTER) +# The default value is: $file:$line: $text. + +WARN_FORMAT = "$file:$line: $text" + +# The WARN_LOGFILE tag can be used to specify a file to which warning and error +# messages should be written. If left blank the output is written to standard +# error (stderr). + +WARN_LOGFILE = + +#--------------------------------------------------------------------------- +# Configuration options related to the input files +#--------------------------------------------------------------------------- + +# The INPUT tag is used to specify the files and/or directories that contain +# documented source files. You may enter file names like myfile.cpp or +# directories like /usr/src/myproject. Separate the files or directories with +# spaces. +# Note: If this tag is empty the current directory is searched. + +INPUT = ../../README.md ../input/chap2.md ../input/chap3.md ../../include ../../source ../../main ../../external_Pk ../input/mod.md + +# This tag can be used to specify the character encoding of the source files +# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses +# libiconv (or the iconv built into libc) for the transcoding. See the libiconv +# documentation (see: http://www.gnu.org/software/libiconv) for the list of +# possible encodings. +# The default value is: UTF-8. + +INPUT_ENCODING = UTF-8 + +# If the value of the INPUT tag contains directories, you can use the +# FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and +# *.h) to filter out the source-files in the directories. If left blank the +# following patterns are tested:*.c, *.cc, *.cxx, *.cpp, *.c++, *.java, *.ii, +# *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h, *.hh, *.hxx, *.hpp, +# *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc, *.m, *.markdown, +# *.md, *.mm, *.dox, *.py, *.f90, *.f, *.for, *.tcl, *.vhd, *.vhdl, *.ucf, +# *.qsf, *.as and *.js. + +FILE_PATTERNS = + +# The RECURSIVE tag can be used to specify whether or not subdirectories should +# be searched for input files as well. +# The default value is: NO. + +RECURSIVE = YES + +# The EXCLUDE tag can be used to specify files and/or directories that should be +# excluded from the INPUT source files. This way you can easily exclude a +# subdirectory from a directory tree whose root is specified with the INPUT tag. +# +# Note that relative paths are relative to the directory from which doxygen is +# run. + +EXCLUDE = ../../include/growTable.h + +# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or +# directories that are symbolic links (a Unix file system feature) are excluded +# from the input. +# The default value is: NO. + +EXCLUDE_SYMLINKS = NO + +# If the value of the INPUT tag contains directories, you can use the +# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude +# certain files from those directories. +# +# Note that the wildcards are matched against the file with absolute path, so to +# exclude all test directories for example use the pattern */test/* + +EXCLUDE_PATTERNS = + +# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names +# (namespaces, classes, functions, etc.) that should be excluded from the +# output. The symbol name can be a fully qualified name, a word, or if the +# wildcard * is used, a substring. Examples: ANamespace, AClass, +# AClass::ANamespace, ANamespace::*Test +# +# Note that the wildcards are matched against the file with absolute path, so to +# exclude all test directories use the pattern */test/* + +EXCLUDE_SYMBOLS = __ALLOCATE_PRECISION_PARAMETER__ + +# The EXAMPLE_PATH tag can be used to specify one or more files or directories +# that contain example code fragments that are included (see the \include +# command). + +EXAMPLE_PATH = + +# If the value of the EXAMPLE_PATH tag contains directories, you can use the +# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and +# *.h) to filter out the source-files in the directories. If left blank all +# files are included. + +EXAMPLE_PATTERNS = + +# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be +# searched for input files to be used with the \include or \dontinclude commands +# irrespective of the value of the RECURSIVE tag. +# The default value is: NO. + +EXAMPLE_RECURSIVE = NO + +# The IMAGE_PATH tag can be used to specify one or more files or directories +# that contain images that are to be included in the documentation (see the +# \image command). + +IMAGE_PATH = + +# The INPUT_FILTER tag can be used to specify a program that doxygen should +# invoke to filter for each input file. Doxygen will invoke the filter program +# by executing (via popen()) the command: +# +# +# +# where is the value of the INPUT_FILTER tag, and is the +# name of an input file. Doxygen will then use the output that the filter +# program writes to standard output. If FILTER_PATTERNS is specified, this tag +# will be ignored. +# +# Note that the filter must not add or remove lines; it is applied before the +# code is scanned, but not when the output code is generated. If lines are added +# or removed, the anchors will not be placed correctly. + +INPUT_FILTER = + +# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern +# basis. Doxygen will compare the file name with each pattern and apply the +# filter if there is a match. The filters are a list of the form: pattern=filter +# (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how +# filters are used. If the FILTER_PATTERNS tag is empty or if none of the +# patterns match the file name, INPUT_FILTER is applied. + +FILTER_PATTERNS = + +# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using +# INPUT_FILTER) will also be used to filter the input files that are used for +# producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES). +# The default value is: NO. + +FILTER_SOURCE_FILES = NO + +# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file +# pattern. A pattern will override the setting for FILTER_PATTERN (if any) and +# it is also possible to disable source filtering for a specific pattern using +# *.ext= (so without naming a filter). +# This tag requires that the tag FILTER_SOURCE_FILES is set to YES. + +FILTER_SOURCE_PATTERNS = + +# If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that +# is part of the input, its contents will be placed on the main page +# (index.html). This can be useful if you have a project on for instance GitHub +# and want to reuse the introduction page also for the doxygen output. + +USE_MDFILE_AS_MAINPAGE = + +#--------------------------------------------------------------------------- +# Configuration options related to source browsing +#--------------------------------------------------------------------------- + +# If the SOURCE_BROWSER tag is set to YES then a list of source files will be +# generated. Documented entities will be cross-referenced with these sources. +# +# Note: To get rid of all source code in the generated output, make sure that +# also VERBATIM_HEADERS is set to NO. +# The default value is: NO. + +SOURCE_BROWSER = NO + +# Setting the INLINE_SOURCES tag to YES will include the body of functions, +# classes and enums directly into the documentation. +# The default value is: NO. + +INLINE_SOURCES = NO + +# Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any +# special comment blocks from generated source code fragments. Normal C, C++ and +# Fortran comments will always remain visible. +# The default value is: YES. + +STRIP_CODE_COMMENTS = YES + +# If the REFERENCED_BY_RELATION tag is set to YES then for each documented +# function all documented functions referencing it will be listed. +# The default value is: NO. + +REFERENCED_BY_RELATION = NO + +# If the REFERENCES_RELATION tag is set to YES then for each documented function +# all documented entities called/used by that function will be listed. +# The default value is: NO. + +REFERENCES_RELATION = NO + +# If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set +# to YES then the hyperlinks from functions in REFERENCES_RELATION and +# REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will +# link to the documentation. +# The default value is: YES. + +REFERENCES_LINK_SOURCE = YES + +# If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the +# source code will show a tooltip with additional information such as prototype, +# brief description and links to the definition and documentation. Since this +# will make the HTML file larger and loading of large files a bit slower, you +# can opt to disable this feature. +# The default value is: YES. +# This tag requires that the tag SOURCE_BROWSER is set to YES. + +SOURCE_TOOLTIPS = YES + +# If the USE_HTAGS tag is set to YES then the references to source code will +# point to the HTML generated by the htags(1) tool instead of doxygen built-in +# source browser. The htags tool is part of GNU's global source tagging system +# (see http://www.gnu.org/software/global/global.html). You will need version +# 4.8.6 or higher. +# +# To use it do the following: +# - Install the latest version of global +# - Enable SOURCE_BROWSER and USE_HTAGS in the config file +# - Make sure the INPUT points to the root of the source tree +# - Run doxygen as normal +# +# Doxygen will invoke htags (and that will in turn invoke gtags), so these +# tools must be available from the command line (i.e. in the search path). +# +# The result: instead of the source browser generated by doxygen, the links to +# source code will now point to the output of htags. +# The default value is: NO. +# This tag requires that the tag SOURCE_BROWSER is set to YES. + +USE_HTAGS = NO + +# If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a +# verbatim copy of the header file for each class for which an include is +# specified. Set to NO to disable this. +# See also: Section \class. +# The default value is: YES. + +VERBATIM_HEADERS = YES + +#--------------------------------------------------------------------------- +# Configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- + +# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all +# compounds will be generated. Enable this if the project contains a lot of +# classes, structs, unions or interfaces. +# The default value is: YES. + +ALPHABETICAL_INDEX = NO + +# The COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns in +# which the alphabetical index list will be split. +# Minimum value: 1, maximum value: 20, default value: 5. +# This tag requires that the tag ALPHABETICAL_INDEX is set to YES. + +COLS_IN_ALPHA_INDEX = 5 + +# In case all classes in a project start with a common prefix, all classes will +# be put under the same header in the alphabetical index. The IGNORE_PREFIX tag +# can be used to specify a prefix (or a list of prefixes) that should be ignored +# while generating the index headers. +# This tag requires that the tag ALPHABETICAL_INDEX is set to YES. + +IGNORE_PREFIX = + +#--------------------------------------------------------------------------- +# Configuration options related to the HTML output +#--------------------------------------------------------------------------- + +# If the GENERATE_HTML tag is set to YES, doxygen will generate HTML output +# The default value is: YES. + +GENERATE_HTML = YES + +# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a +# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of +# it. +# The default directory is: html. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_OUTPUT = html + +# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each +# generated HTML page (for example: .htm, .php, .asp). +# The default value is: .html. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_FILE_EXTENSION = .html + +# The HTML_HEADER tag can be used to specify a user-defined HTML header file for +# each generated HTML page. If the tag is left blank doxygen will generate a +# standard header. +# +# To get valid HTML the header file that includes any scripts and style sheets +# that doxygen needs, which is dependent on the configuration options used (e.g. +# the setting GENERATE_TREEVIEW). It is highly recommended to start with a +# default header using +# doxygen -w html new_header.html new_footer.html new_stylesheet.css +# YourConfigFile +# and then modify the file new_header.html. See also section "Doxygen usage" +# for information on how to generate the default header that doxygen normally +# uses. +# Note: The header is subject to change so you typically have to regenerate the +# default header when upgrading to a newer version of doxygen. For a description +# of the possible markers and block names see the documentation. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_HEADER = + +# The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each +# generated HTML page. If the tag is left blank doxygen will generate a standard +# footer. See HTML_HEADER for more information on how to generate a default +# footer and what special commands can be used inside the footer. See also +# section "Doxygen usage" for information on how to generate the default footer +# that doxygen normally uses. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_FOOTER = + +# The HTML_STYLESHEET tag can be used to specify a user-defined cascading style +# sheet that is used by each HTML page. It can be used to fine-tune the look of +# the HTML output. If left blank doxygen will generate a default style sheet. +# See also section "Doxygen usage" for information on how to generate the style +# sheet that doxygen normally uses. +# Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as +# it is more robust and this tag (HTML_STYLESHEET) will in the future become +# obsolete. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_STYLESHEET = + +# The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined +# cascading style sheets that are included after the standard style sheets +# created by doxygen. Using this option one can overrule certain style aspects. +# This is preferred over using HTML_STYLESHEET since it does not replace the +# standard style sheet and is therefore more robust against future updates. +# Doxygen will copy the style sheet files to the output directory. +# Note: The order of the extra style sheet files is of importance (e.g. the last +# style sheet in the list overrules the setting of the previous ones in the +# list). For an example see the documentation. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_EXTRA_STYLESHEET = + +# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or +# other source files which should be copied to the HTML output directory. Note +# that these files will be copied to the base HTML output directory. Use the +# $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these +# files. In the HTML_STYLESHEET file, use the file name only. Also note that the +# files will be copied as-is; there are no commands or markers available. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_EXTRA_FILES = + +# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen +# will adjust the colors in the style sheet and background images according to +# this color. Hue is specified as an angle on a colorwheel, see +# http://en.wikipedia.org/wiki/Hue for more information. For instance the value +# 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300 +# purple, and 360 is red again. +# Minimum value: 0, maximum value: 359, default value: 220. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE_HUE = 220 + +# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors +# in the HTML output. For a value of 0 the output will use grayscales only. A +# value of 255 will produce the most vivid colors. +# Minimum value: 0, maximum value: 255, default value: 100. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE_SAT = 220 + +# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the +# luminance component of the colors in the HTML output. Values below 100 +# gradually make the output lighter, whereas values above 100 make the output +# darker. The value divided by 100 is the actual gamma applied, so 80 represents +# a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not +# change the gamma. +# Minimum value: 40, maximum value: 240, default value: 80. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE_GAMMA = 80 + +# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML +# page will contain the date and time when the page was generated. Setting this +# to NO can help when comparing the output of multiple runs. +# The default value is: YES. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_TIMESTAMP = YES + +# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML +# documentation will contain sections that can be hidden and shown after the +# page has loaded. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_DYNAMIC_SECTIONS = YES + +# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries +# shown in the various tree structured indices initially; the user can expand +# and collapse entries dynamically later on. Doxygen will expand the tree to +# such a level that at most the specified number of entries are visible (unless +# a fully collapsed tree already exceeds this amount). So setting the number of +# entries 1 will produce a full collapsed tree by default. 0 is a special value +# representing an infinite number of entries and will result in a full expanded +# tree by default. +# Minimum value: 0, maximum value: 9999, default value: 100. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_INDEX_NUM_ENTRIES = 100 + +# If the GENERATE_DOCSET tag is set to YES, additional index files will be +# generated that can be used as input for Apple's Xcode 3 integrated development +# environment (see: http://developer.apple.com/tools/xcode/), introduced with +# OSX 10.5 (Leopard). To create a documentation set, doxygen will generate a +# Makefile in the HTML output directory. Running make will produce the docset in +# that directory and running make install will install the docset in +# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at +# startup. See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html +# for more information. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_DOCSET = NO + +# This tag determines the name of the docset feed. A documentation feed provides +# an umbrella under which multiple documentation sets from a single provider +# (such as a company or product suite) can be grouped. +# The default value is: Doxygen generated docs. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_FEEDNAME = "Doxygen generated docs" + +# This tag specifies a string that should uniquely identify the documentation +# set bundle. This should be a reverse domain-name style string, e.g. +# com.mycompany.MyDocSet. Doxygen will append .docset to the name. +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_BUNDLE_ID = org.doxygen.Project + +# The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify +# the documentation publisher. This should be a reverse domain-name style +# string, e.g. com.mycompany.MyDocSet.documentation. +# The default value is: org.doxygen.Publisher. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_PUBLISHER_ID = org.doxygen.Publisher + +# The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher. +# The default value is: Publisher. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_PUBLISHER_NAME = Publisher + +# If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three +# additional HTML index files: index.hhp, index.hhc, and index.hhk. The +# index.hhp is a project file that can be read by Microsoft's HTML Help Workshop +# (see: http://www.microsoft.com/en-us/download/details.aspx?id=21138) on +# Windows. +# +# The HTML Help Workshop contains a compiler that can convert all HTML output +# generated by doxygen into a single compiled HTML file (.chm). Compiled HTML +# files are now used as the Windows 98 help format, and will replace the old +# Windows help format (.hlp) on all Windows platforms in the future. Compressed +# HTML files also contain an index, a table of contents, and you can search for +# words in the documentation. The HTML workshop also contains a viewer for +# compressed HTML files. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_HTMLHELP = NO + +# The CHM_FILE tag can be used to specify the file name of the resulting .chm +# file. You can add a path in front of the file if the result should not be +# written to the html output directory. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +CHM_FILE = + +# The HHC_LOCATION tag can be used to specify the location (absolute path +# including file name) of the HTML help compiler (hhc.exe). If non-empty, +# doxygen will try to run the HTML help compiler on the generated index.hhp. +# The file has to be specified with full path. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +HHC_LOCATION = + +# The GENERATE_CHI flag controls if a separate .chi index file is generated +# (YES) or that it should be included in the master .chm file (NO). +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +GENERATE_CHI = NO + +# The CHM_INDEX_ENCODING is used to encode HtmlHelp index (hhk), content (hhc) +# and project file content. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +CHM_INDEX_ENCODING = + +# The BINARY_TOC flag controls whether a binary table of contents is generated +# (YES) or a normal table of contents (NO) in the .chm file. Furthermore it +# enables the Previous and Next buttons. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +BINARY_TOC = NO + +# The TOC_EXPAND flag can be set to YES to add extra items for group members to +# the table of contents of the HTML help documentation and to the tree view. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +TOC_EXPAND = NO + +# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and +# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that +# can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help +# (.qch) of the generated HTML documentation. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_QHP = NO + +# If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify +# the file name of the resulting .qch file. The path specified is relative to +# the HTML output folder. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QCH_FILE = + +# The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help +# Project output. For more information please see Qt Help Project / Namespace +# (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#namespace). +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_NAMESPACE = org.doxygen.Project + +# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt +# Help Project output. For more information please see Qt Help Project / Virtual +# Folders (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#virtual- +# folders). +# The default value is: doc. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_VIRTUAL_FOLDER = doc + +# If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom +# filter to add. For more information please see Qt Help Project / Custom +# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom- +# filters). +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_CUST_FILTER_NAME = + +# The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the +# custom filter to add. For more information please see Qt Help Project / Custom +# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom- +# filters). +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_CUST_FILTER_ATTRS = + +# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this +# project's filter section matches. Qt Help Project / Filter Attributes (see: +# http://qt-project.org/doc/qt-4.8/qthelpproject.html#filter-attributes). +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_SECT_FILTER_ATTRS = + +# The QHG_LOCATION tag can be used to specify the location of Qt's +# qhelpgenerator. If non-empty doxygen will try to run qhelpgenerator on the +# generated .qhp file. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHG_LOCATION = + +# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be +# generated, together with the HTML files, they form an Eclipse help plugin. To +# install this plugin and make it available under the help contents menu in +# Eclipse, the contents of the directory containing the HTML and XML files needs +# to be copied into the plugins directory of eclipse. The name of the directory +# within the plugins directory should be the same as the ECLIPSE_DOC_ID value. +# After copying Eclipse needs to be restarted before the help appears. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_ECLIPSEHELP = NO + +# A unique identifier for the Eclipse help plugin. When installing the plugin +# the directory name containing the HTML and XML files should also have this +# name. Each documentation set should have its own identifier. +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES. + +ECLIPSE_DOC_ID = org.doxygen.Project + +# If you want full control over the layout of the generated HTML pages it might +# be necessary to disable the index and replace it with your own. The +# DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top +# of each HTML page. A value of NO enables the index and the value YES disables +# it. Since the tabs in the index contain the same information as the navigation +# tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +DISABLE_INDEX = NO + +# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index +# structure should be generated to display hierarchical information. If the tag +# value is set to YES, a side panel will be generated containing a tree-like +# index structure (just like the one that is generated for HTML Help). For this +# to work a browser that supports JavaScript, DHTML, CSS and frames is required +# (i.e. any modern browser). Windows users are probably better off using the +# HTML help feature. Via custom style sheets (see HTML_EXTRA_STYLESHEET) one can +# further fine-tune the look of the index. As an example, the default style +# sheet generated by doxygen has an example that shows how to put an image at +# the root of the tree instead of the PROJECT_NAME. Since the tree basically has +# the same information as the tab index, you could consider setting +# DISABLE_INDEX to YES when enabling this option. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_TREEVIEW = YES + +# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that +# doxygen will group on one line in the generated HTML documentation. +# +# Note that a value of 0 will completely suppress the enum values from appearing +# in the overview section. +# Minimum value: 0, maximum value: 20, default value: 4. +# This tag requires that the tag GENERATE_HTML is set to YES. + +ENUM_VALUES_PER_LINE = 4 + +# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used +# to set the initial width (in pixels) of the frame in which the tree is shown. +# Minimum value: 0, maximum value: 1500, default value: 250. +# This tag requires that the tag GENERATE_HTML is set to YES. + +TREEVIEW_WIDTH = 250 + +# If the EXT_LINKS_IN_WINDOW option is set to YES, doxygen will open links to +# external symbols imported via tag files in a separate window. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +EXT_LINKS_IN_WINDOW = NO + +# Use this tag to change the font size of LaTeX formulas included as images in +# the HTML documentation. When you change the font size after a successful +# doxygen run you need to manually remove any form_*.png images from the HTML +# output directory to force them to be regenerated. +# Minimum value: 8, maximum value: 50, default value: 10. +# This tag requires that the tag GENERATE_HTML is set to YES. + +FORMULA_FONTSIZE = 10 + +# Use the FORMULA_TRANPARENT tag to determine whether or not the images +# generated for formulas are transparent PNGs. Transparent PNGs are not +# supported properly for IE 6.0, but are supported on all modern browsers. +# +# Note that when changing this option you need to delete any form_*.png files in +# the HTML output directory before the changes have effect. +# The default value is: YES. +# This tag requires that the tag GENERATE_HTML is set to YES. + +FORMULA_TRANSPARENT = YES + +# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see +# http://www.mathjax.org) which uses client side Javascript for the rendering +# instead of using pre-rendered bitmaps. Use this if you do not have LaTeX +# installed or if you want to formulas look prettier in the HTML output. When +# enabled you may also need to install MathJax separately and configure the path +# to it using the MATHJAX_RELPATH option. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +USE_MATHJAX = NO + +# When MathJax is enabled you can set the default output format to be used for +# the MathJax output. See the MathJax site (see: +# http://docs.mathjax.org/en/latest/output.html) for more details. +# Possible values are: HTML-CSS (which is slower, but has the best +# compatibility), NativeMML (i.e. MathML) and SVG. +# The default value is: HTML-CSS. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_FORMAT = HTML-CSS + +# When MathJax is enabled you need to specify the location relative to the HTML +# output directory using the MATHJAX_RELPATH option. The destination directory +# should contain the MathJax.js script. For instance, if the mathjax directory +# is located at the same level as the HTML output directory, then +# MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax +# Content Delivery Network so you can quickly see the result without installing +# MathJax. However, it is strongly recommended to install a local copy of +# MathJax from http://www.mathjax.org before deployment. +# The default value is: http://cdn.mathjax.org/mathjax/latest. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest + +# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax +# extension names that should be enabled during MathJax rendering. For example +# MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_EXTENSIONS = + +# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces +# of code that will be used on startup of the MathJax code. See the MathJax site +# (see: http://docs.mathjax.org/en/latest/output.html) for more details. For an +# example see the documentation. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_CODEFILE = + +# When the SEARCHENGINE tag is enabled doxygen will generate a search box for +# the HTML output. The underlying search engine uses javascript and DHTML and +# should work on any modern browser. Note that when using HTML help +# (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET) +# there is already a search function so this one should typically be disabled. +# For large projects the javascript based search engine can be slow, then +# enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to +# search using the keyboard; to jump to the search box use + S +# (what the is depends on the OS and browser, but it is typically +# , /
+Output written on class.pdf (13 pages, 191829 bytes). +PDF statistics: + 99 PDF objects out of 1000 (max. 8388607) + 70 compressed objects within 1 object stream + 0 named destinations out of 1000 (max. 500000) + 1 words of extra memory for PDF output out of 10000 (max. 10000000) + diff --git a/class/doc/input/latex/class.pdf b/class/doc/input/latex/class.pdf new file mode 100644 index 00000000..e12acb94 Binary files /dev/null and b/class/doc/input/latex/class.pdf differ diff --git a/class/doc/input/latex/class.synctex.gz b/class/doc/input/latex/class.synctex.gz new file mode 100644 index 00000000..6326b36c Binary files /dev/null and b/class/doc/input/latex/class.synctex.gz differ diff --git a/class/doc/input/latex/class.tex b/class/doc/input/latex/class.tex new file mode 100644 index 00000000..9dd38d0c --- /dev/null +++ b/class/doc/input/latex/class.tex @@ -0,0 +1,605 @@ +\documentclass{article} + +\newcommand\CLASS{{\tt CLASS}~} +\newcommand\CAMB{{\tt CAMB}~} + +\begin{document} + +\title{The Cosmic Linear Anisotropy Solving System (CLASS)} + +\author{Julien Lesgourgues} + +%\email{Julien.Lesgourgues@cern.ch} + +\date{\today} + +%\affiliation{CERN} + +\maketitle + + +Where to find information and documentation on \CLASS? +\begin{itemize} +\item {\bf for what the code can actually compute:} all possible input parameters, all coded cosmological models, all functionalities, all observables, etc.: read the file {\tt explanatory.ini} in the main \CLASS directory: it is a reference file where we keep track of all possible input. +\item {\bf for the physics and equations used in the code:} mainly, the following papers: +\begin{itemize} +%\cite{Ma:1995ey} +\item%{Ma:1995ey} +{\bf ``Cosmological perturbation theory in the synchronous and conformal Newtonian gauges''} + \\{}C.~P.~Ma and E.~Bertschinger. + \\{}astro-ph/9506072 + \\{}10.1086/176550 + \\{}Astrophys.\ J.\ {\bf 455}, 7 (1995) +%(Jun 1995) +%\href{http://inspirehep.net/record/396100}{HEP entry} +%1004 citations counted in INSPIRE as of 25 Mar 2016 + +%\cite{Blas:2011rf} +\item%{Blas:2011rf} +{\bf ``The Cosmic Linear Anisotropy Solving System (CLASS) II: Approximation schemes''} + \\{}D.~Blas, J.~Lesgourgues and T.~Tram. + \\{}arXiv:1104.2933 [astro-ph.CO] + \\{}10.1088/1475-7516/2011/07/034 + \\{}JCAP {\bf 1107}, 034 (2011) +%(Apr 2011) +%\href{http://inspirehep.net/record/896300}{HEP entry} +%172 citations counted in INSPIRE as of 25 Mar 2016 + +%\cite{Lesgourgues:2011rh} +\item%{Lesgourgues:2011rh} +{\bf ``The Cosmic Linear Anisotropy Solving System (CLASS) IV: efficient implementation of non-cold relics''} + \\{}J.~Lesgourgues and T.~Tram. + \\{}arXiv:1104.2935 [astro-ph.CO] + \\{}10.1088/1475-7516/2011/09/032 + \\{}JCAP {\bf 1109}, 032 (2011) +%(Apr 2011) +%\href{http://inspirehep.net/record/896298}{HEP entry} +%31 citations counted in INSPIRE as of 25 Mar 2016 + +%\cite{Tram:2013ima} +\item%{Tram:2013ima} +{\bf ``Optimal polarisation equations in FLRW universes''} + \\{}T.~Tram and J.~Lesgourgues. + \\{}arXiv:1305.3261 [astro-ph.CO] + \\{}10.1088/1475-7516/2013/10/002 + \\{}JCAP {\bf 1310}, 002 (2013) +%(May 14, 2013) +%\href{http://inspirehep.net/record/1233344}{HEP entry} +%5 citations counted in INSPIRE as of 25 Mar 2016 + +%\cite{Lesgourgues:2013bra} +\item%{Lesgourgues:2013bra} +{\bf ``Fast and accurate CMB computations in non-flat FLRW universes''} + \\{}J.~Lesgourgues and T.~Tram. + \\{}arXiv:1312.2697 [astro-ph.CO] + \\{}10.1088/1475-7516/2014/09/032 + \\{}JCAP {\bf 1409}, no. 09, 032 (2014) +%(Dec 10, 2013) +%\href{http://inspirehep.net/record/1268619}{HEP entry} +%3 citations counted in INSPIRE as of 25 Mar 2016 + +%\cite{DiDio:2013bqa} +\item%{DiDio:2013bqa} +{\bf ``The CLASSgal code for Relativistic Cosmological Large Scale Structure''} + \\{}E.~Di Dio, F.~Montanari, J.~Lesgourgues and R.~Durrer. + \\{}arXiv:1307.1459 [astro-ph.CO] + \\{}10.1088/1475-7516/2013/11/044 + \\{}JCAP {\bf 1311}, 044 (2013) +%(Jul 4, 2013) +%\href{http://inspirehep.net/record/1241553}{HEP entry} +%28 citations counted in INSPIRE as of 25 Mar 2016 +\end{itemize} + +\item {\bf for the structure, style, and concrete aspects of the code:} this documentation; plus the slides of our \CLASS lectures, for instance those from Tokyo 2014 available at \\ + +{\tt https://www.dropbox.com/sh/ma5muh76sggwk8k/AABl\_DDUBEzAjjdywMjeTya2a?dl=0}\\ + +in the folder {\tt CLASS\_Lecture\_slides/}. + +\item {\bf for the python wrapper of \CLASS:} at the moment, the best is the slides from these lectures, for instance following the previous link and looking into\\ + + {\tt CLASS\_Lecture\_slides/lecture7\_wrapper.pdf}\\ + + and into\\ + +{\tt IPython\_Notebooks/}\\ + + for example of python sessions. We will expand soon the documentation on this part with a dedicated webpage. + + +\end{itemize} + +\section{Overall architecture of {\sc class}} + +\subsection{Files and directories} + +After downloading \CLASS, one can see the following files in +the root directory contains: +\begin{itemize} +\item some example of input files, the most important being {\tt explanatory.ini}. a reference input file containing all possible flags, options and physical input parameters. While this documentation explains the structure and use of the code, {\tt explanatory.ini} can be seen as the {\it physical} documentation of \CLASS. +The other input file are alternative parameter input files (ending with {\tt .ini})and precision input files (ending with {\tt .pre}) +\item +the {\tt Makefile}, with which you can compile the code by typing {\tt make clean; make;} this will create the executable {\tt class} and some binary files in the directory {\tt build/}. The {\tt Makefile} contains other compilation options that you can view inside the file. +\item {\tt CPU.py} is a python script designed for plotting the \CLASS output; for documentation type {\tt python CPU.py --help} +\item {\tt plot\_CLASS\_output.m} is the counterpart of {\tt CPU.py} for MatLab +\item there are other input files for various applications: an example of a non-cold dark matter distribution functions ({\tt psd\_FD\_single.dat}), and examples of evolution and selection functions for galaxy number count observables ({\tt myevolution.dat, myselection.dat}). +\end{itemize} +Other files are split between the +following directories: +\begin{itemize} +\item +{\tt source/} contains the C files for each \CLASS module, i.e. each +block containing some part of the physical equations and logic of +the Boltzmann code. +\item +{\tt tools/} contains purely numerical algorithms, applicable in any +context: integrators, simple manipulation of arrays (derivation, +integration, interpolation), Bessel function calculation, quadrature algorithms, parser, etc. +\item {\tt main/} contains the main module {\tt class.c} with the main + routine {\tt class(...)}, to be used in interactive runs (but not + necessarily when the code is interfaced with other ones). +\item +{\tt test/} contains alternative main routines which can be used to +run only some part of the code, to test its accuracy, to illustrate how +it can be interfaced with other codes, etc. +\item +{\tt include/} contains all the include files with a {\tt .h} suffix. +\item +{\tt output/} is where the output files will be written by default (this can be changed to another directory by adjusting the input parameter {\tt root = <...>}) +\item +{\tt python/} contains the python wrapper of \CLASS, called classy (see {\tt python/README}) +\item +{\tt cpp/} contains the C++ wrapper of \CLASS, called ClassEngine (see {\tt cpp/README}) +\item +{\tt doc/} contains the automatic documentation (manual and input files required to build it) +\item +{\tt external\_Pk/} contains exemples of external codes that can be used to generate the primordial spectrum and be interfaced with \CLASS, when one of the many options already built inside the code are not sufficient. +\item +{\tt bbn/} contains interpolation tables produced by BBN codes, in order to predict e.g. $Y_\mathrm{He}(\omega_b, \Delta N_\mathrm{eff})$. +\item +{\tt hyrec/} contains the recombination code HyRec of Yacine Ali-Ha\"{\i}moud and Chris Hirata, that can be used as an alternative to the built-in Recfast (using the input parameter {\tt recombination = <...>}). +\end{itemize} + +\subsection{The ten-module backbone} + +\subsubsection{Ten tasks} + +The purpose of {\sc class} consists in computing some power spectra for a +given set of cosmological parameters. This task can be decomposed in few steps +or modules: +\begin{enumerate} +\item +set input parameter values. +\item +compute the evolution of cosmological background quantitites. +\item +compute the evolution of thermodynamical quantitites (ionization fractions, etc.) +\item +compute the evolution of source functions $S(k,\tau)$ (by integrating over all perturbations). +\item +compute the primordial spectra. +\item +eventually, compute non-linear corrections at small redshift/large wavenumber. +\item +compute transfer functions in harmonic space $\Delta_l(k)$ (unless one needs only Fourier spectra $P(k)$'s and no harmonic spectra $C_l$'s). +\item +compute the observable power spectra $C_l$'s (by convolving the primordial spectra and the harmonic transfer functions) and/or $P(k)$'s (by multiplying the primordial spectra and the appropriate source functions $S(k,\tau)$). +\item +eventually, compute the lensed CMB spectra (using second-order perturbation theory) +\item +write results in files (when \CLASS is used interactively. The pyhton wrapper would not go to this step and just keep the output stored internally). +\end{enumerate} + + +\subsubsection{Ten structures} + +In {\sc class}, each of these steps is associated with a structure: +\begin{enumerate} +\item {\tt struct precision } for input precision parameters (input physical paramaters are dispatched among the other structures listed below) +\item {\tt struct background } for cosmological background, +\item {\tt struct thermo } for thermodynamics, +\item {\tt struct perturbs } for source functions, +\item {\tt struct primordial } for primordial spectra, +\item {\tt struct nonlinear } for nonlinear corrections, +\item {\tt struct transfers } for transfer functions, +\item {\tt struct spectra } for observable spectra, +\item {\tt struct lensing } for lensed CMB spectra, +\item {\tt struct output} for auxiliary variable describing the output format. +\end{enumerate} +A given structure contains ``everything concerning one step that the +subsequent steps need to know'' (for instance, {\tt struct perturbs} contains everything about source +functions that the transfer module needs to know). In particular, each +structure contains one array of tabulated values (for {\tt struct background }, background +quantitites as a function of time, for {\tt struct thermo}, thermodynamical quantitites as a +function of redshift, for {\tt struct perturbs}, sources $S(k, \tau)$, etc.). It +also contains information about the size of this array and the value +of the index of each physical quantity, so that the table can be +easily read and interpolated. Finally, it contains any derived +quantity that other modules might need to know. Hence, the +comunication from one module A to another module B +consists in passing a pointer to the structure filled by A, and nothing else. + +All ``precision parameters'' are grouped in the single structure +{\tt struct precision}. The code contains {\it no other arbitrary +numerical coefficient}. + +\subsubsection{Ten modules} + +Each structure is defined and filled in one of the following modules +(and precisely in the order below): +\begin{enumerate} +\item {\tt input.c } +\item {\tt background.c } +\item {\tt thermodynamics.c } +\item {\tt perturbations.c } +\item {\tt primordial.c } +\item {\tt nonlinear.c } +\item {\tt transfer.c } +\item {\tt spectra.c } +\item {\tt lensing.c } +\item {\tt output.c } +\end{enumerate} +Each of these modules contains at least three functions: +\begin{itemize} +\item {\it module}\_{\tt init(...)} +\item {\it module}\_{\tt free(...)} +\item {\it module}\_{\it something}\_{\tt at}\_{\it somevalue}{\tt(...)} +\end{itemize} +where {\it module} is one of {\tt input, background, thermodynamics, perturb, primordial, nonlinear, transfer, spectra, lensing, output}. + + +The first function allocates and fills each structure. This can be +done provided that the previous structures in the hierarchy have been +already allocated and filled. In summary, calling one of {\it module}\_{\tt +init(...)} amounts in solving entirely one of the steps 1 to 10. + +The second function deallocates the fields of each structure. This +can be done optionally at the end of the code (or, when the code is embedded +in a sampler, this {\it must} be done +between each execution of {\sc class}, and especially before calling {\it +module}\_{\tt init(...)} again with different input parameters). + +The +third function is able to interpolate the pre-computed tables. For +instance, {\tt background\_init()} fills a table of background +quantitites for discrete values of conformal time $\tau$, but {\tt +background\_at\_tau(tau, * values)} will return these values for any +arbitrary $\tau$. + +Note that functions of the type {\it module}\_{\it +something}\_{\tt at}\_{\it somevalue}{\tt(...)} are the only ones which are +called from another module, while functions of the type {\it +module}\_{\tt init(...)} and {\it module}\_{\tt free(...)} are the only +one called by the main executable. All other functions are for +internal use in each module. + +When writing a C code, the ordering of the functions in the *.c file is in principle arbitrary. However, for the sake of clarity, we always respected the following order in each \CLASS module: + +\begin{enumerate} +\item all functions that may be called by other modules, i.e. ``external functions'', usually named like {\it module}\_{\it something}\_{\tt at}\_{\it somevalue}{\tt(...)} +\item then, {\it module}\_{\tt init(...)} +\item then, {\it module}\_{\tt free()} +\item then, all functions used only internally by the module +\end{enumerate} + +\subsection{{\tt main()} function(s)} + +\subsubsection{The {\tt main.c} file} + +The main executable of {\sc class} is the function {\tt main()} located in the file {\tt main/main.c}. +This function consist only in the +following lines +(not including comments and error-management lines explained later): + +\vspace{0.5cm} + +\noindent +{\tt +main() \{ \\ +\indent struct precision pr;\\ +\indent struct background ba;\\ +\indent struct thermo th; \\ +\indent struct perturbs pt; \\ +\indent struct primordial pm; \\ +\indent struct nonlinear nl;\\ +\indent struct transfers tr; \\ +\indent struct spectra sp; \\ +\indent struct lensing le;\\ +\indent struct output op; \\ + \\ +\indent input\_init\_from\_arguments(argc, argv,\&pr,\&ba,\&th,\&pt,\&tr,\&pm,\&sp,\&nl,\&le,\&op,errmsg);\\ +\indent background\_init(\&pr,\&ba);\\ +\indent thermodynamics\_init(\&pr,\&ba,\&th);\\ +\indent perturb\_init(\&pr,\&ba,\&th,\&pt);\\ +\indent primordial\_init(\&pr,\&pt,\&pm);\\ +\indent nonlinear\_init(\&pr,\&ba,\&th,\&pt,\&pm,\&nl);\\ +\indent transfer\_init(\&pr,\&ba,\&th,\&pt,\&nl,\&tr);\\ +\indent spectra\_init(\&pr,\&ba,\&pt,\&pm,\&nl,\&tr,\&sp);\\ +\indent lensing\_init(\&pr,\&pt,\&sp,\&nl,\&le);\\ +\indent output\_init(\&ba,\&th,\&pt,\&pm,\&tr,\&sp,\&nl,\&le,\&op)\\ +\\ +\indent /****** done ******/\\ +\\ +\indent lensing\_free(\&le);\\ +\indent spectra\_free(\&sp);\\ +\indent transfer\_free(\&tr);\\ +\indent nonlinear\_free(\&nl);\\ +\indent primordial\_free(\&pm);\\ +\indent perturb\_free(\&pt);\\ +\indent thermodynamics\_free(\&th);\\ +\indent background\_free(\&ba);\\ +\} +} + +\vspace{0.5cm} + +We can come back on the role of each argument. The arguments above are all pointers to the 10 structures of the code, excepted {\tt argc, argv} which contains the input files passed by the user, and {\tt errmsg} which contains the output error message of the input module (error management will be described below). + +{\tt input\_init\_from\_arguments} needs all structures, because it will set the precision parameters inside the {\tt precision} structure, and the physical parameters in some fields of the respective other structures. For instance, an input parameter relevant for the primordial spectrum calculation (like the tilt $n_s$) will be stored in the {\tt primordial} structure. Hence, in {\tt input\_init\_from\_arguments}, all structures can be seen as output arguments. + +Other {\it module}{\tt \_init()} functions typically need all previous structures, which contain the result of the previous modules, plus its own structures, which contain some relevant input parameters before the function is called, as well as all the result form the module when the function has been executed. Hence all passed structures can be seen as input argument, excepted the last one which is both input and output. An example is {\tt perturb\_init(\&pr,\&ba,\&th,\&pt)}. + +Each function {\it module}{\tt \_init()} does not need {\it all} previous structures, it happens that a module does not depend on a {\it all} previous one. For instance, the primordial module does not need information on the background and thermodynamics evolution in order to compute the primordial spectra, so the dependency is reduced: {\tt primordial\_init(\&pr,\&pt,\&pm)}. + +Each function {\it module}{\tt \_init()} only deallocates arrays defined in the structure of their own module, so they need only their own structure as argument. (This is possible because all structures are self-contained, in the sense that when the structure contains an allocated array, it also contains the size of this array). The first and last module, {\tt input} and {\tt output}, have no {\tt input\_free()} or {\tt output\_free()} functions, because the structures {\tt precision} and {\tt output} do not contain arrays that would need to be de-allocated after the execution of the module. + +\subsubsection{The {\tt test\_<...>.c} files} + +For a given purpose, somebody could only be interested in the +intermediate steps (only background quantities, only the +thermodynamics, only the perturbations and sources, etc.) It is +then straightforward to truncate the full hierarchy of modules 1, ... 10 at some +arbitrary order. We provide several ``reduced executables'' achieving precisely this. +They are located in {\tt test/test}\_{\it module}{\tt.c} (like, for instance, {\tt test/test\_perturbations.c}) and they can +be complied using the Makefile, which contains the appropriate commands and definitions (for instance, you can type {\tt make test\_perturbations}). + +The {\tt test/} directory contains other useful example of alternative main functions, like for instance +{\tt test\_loops.c} which shows how to call \CLASS within a loop over different parameter values. +There is also a version {\tt test/test\_loops\_omp.c} using a double level of openMP parallelisation: one for running several \CLASS instances in parallel, one for running each \CLASS instance on several cores. The comments in theses files are self-explanatory. + +\section{Input/output} + +\subsection{Input} + +There are two types of input: +\begin{enumerate} +\item ``precision parameters'' (controlling the precision of the output and the execution time), +\item ``input parameters'' (cosmological parameters, flags telling to the code what it should compute, ...) +\end{enumerate} +The code can be executed with a maximum of two input files, e.g.\\ + +\indent +{\tt ./class explanatory.ini cl\_permille.pre}\\ + + +\noindent +The file with a {\tt .ini} extension is the cosmological parameter +input file, and the one with a {\tt .pre} extension is the precision +file. Both files are optional: all parameters are set to default +values corresponding to the ``most usual choices'', and are eventually +replaced by the parameters passed in the two input files. For +instance, if one is happy with default accuracy settings, it is enough +to run with \\ + +\indent {\tt ./class explanatory.ini}\\ + +\noindent Input files do not +necessarily contain a line for each parameter, since many of them can +be left to default value. The example file {\tt explanatory.ini} is +very long and somewhat indigestible, since it contains all possible +parameters, together with lengthy explanations. We recommend to keep +this file unchanged for reference, and to copy it in e.g. {\tt +test.ini}. In the latter file, the user can erase all sections in +which he/she is absolutely not interested (e.g., all the part on +isocurvature modes, or on tensors, or on non-cold species, +etc.). Another option is to create an input file from scratch, copying +just the relevant lines from {\tt explanatory.ini}. For the simplest +applications, the user will just need a few lines for basic +cosmological parameters, one line for the {\tt output} entry (where +one can specifying which power spectra must be computed), and one line +for the {\tt root} entry (specifying the prefix of all output files). + +The syntax of the input files is explained at the beginning of {\tt +explanatory.ini}. Typically, lines in those files look like: + +\vspace{0.5cm} + +\noindent +{\tt parameter1 = value1}\\ +{\tt free comments}\\ +{\tt parameter2 = value2 \# further comments}\\ +{\tt \# commented\_parameter = commented\_value}\\ + +\noindent +and parameters can be entered in arbitrary order. This is rather +intuitive. The user should just be careful not to put an ``{\tt =}'' +sign not preceded by a ``{\tt \#}'' sign inside a comment: the code +would then think that one is trying to pass some unidentified input +parameter. + +The syntax for the cosmological and precision parameters is the same. +It is clearer to split these parameters in the two files {\tt .ini} +and {\tt .pre}, but there is no strict rule about which parameter goes +into which file: in principle, precision parameters could be passed in +the {\tt .ini}, and vice-versa. The only important thing is not to pass +the same parameter twice: the code would then complain and not run. + +The \CLASS input files are also user-friendly in the sense that many +different cosmological parameter bases can be used. This is made +possible by the fact that the code does not only read parameters, it +``interprets them'' with the level of logic which has been coded in +the {\tt input.c} module. For instance, the Hubble parameter, the photon +density, the baryon density and the ultra-relativistic neutrino density can be +entered as: + +\vspace{0.5cm} + +\noindent +{\tt h = 0.7}\\ +{\tt T\_cmb = 2.726 ~~~\# Kelvin units}\\ +{\tt omega\_b = 0.02}\\ +{\tt N\_eff = 3.04}\\ + + +\noindent +(in arbitrary order), or as + +\vspace{0.5cm} + +\noindent +{\tt H0 = 70}\\ {\tt omega\_g = 2.5e-5 ~~~\# g is the label for +photons}\\ {\tt Omega\_b = 0.04}\\ {\tt omega\_ur = 1.7e-5 ~~~\# ur is +the label for ultra-relativistic species}\\ + + +\noindent +or any combination of the two. The code knows that for the photon +density, one should pass one (but not more than one) parameter out of +{\tt T\_cmb, omega\_g, Omega\_g} (where small omega's refer to +$\omega_i \equiv \Omega_i h^2$). It searches for one of these values, +and if needed, it converts it into one of the other two parameters, +using also other input parameters. For instance, {\tt omega\_g} will +be converted into {\tt Omega\_g} even if $h$ is written later in the +file than {\tt omega\_g}: the order makes no difference. Lots of +alternatives have been defined. If the code finds that not enough +parameters have been passed for making consistent deductions, it will +complete the missing information with in-built default values. On the +contrary, if it finds that there is too much information and no unique +solution, it will complain and return an error. + +In summary, the input syntax has been defined in such way that the +user does not need to think too much, and can pass his preferred set +of parameters in a nearly informal way. + +Let us mention a two useful parameters defined at the end of {\tt explanatory.ini}, that we recommend setting to {\tt yes} in order to run the code in a safe way:\\ + +\indent {\tt write parameters =} [{\tt yes} or {\tt no}] {\it (default: {\tt no})}\\ + +When set to yes, all input/precision parameters which have been read +are written in a file {\tt parameters.ini}, to keep track all the details of this execution; this file can also be re-used as a new input file. Also, with this option, all parameters that have been passed and that the code did not read (because the syntax was wrong, or because the parameter was not relevant in the context of the run) are written in a file {\tt unused\_parameters}. When you have doubts about your input or your results, you can check what is in there.\\ + +\indent {\tt write warnings =} [{\tt yes} or {\tt no}] {\it (default: {\tt no})}\\ + +When set to yes, the parameters that have been passed and that the code did not read +(because the syntax was wrong, or because the parameter was not relevant in the context of the run) are written +in the standard output as {\tt [Warning:]....} + +There is also a list of ``verbose'' parameters at the end of {\tt explanatory.ini}. They can be used to control +the level of information passed to the standard output (0 means silent; 1 means normal, e.g. information on age of the universe, etc.; 2 is useful for instance when you want to check on how many cores the run is parallelised; 3 and more are intended for debugging). + +{\it This part of the documentation will be expanded with details on default precision and on the proposed alternative precision files.} + +\subsection{Output} + +The input file may contain a line\\ + +\indent {\tt root = }\\ + +\noindent where {\tt } is a path of your choice, e.g. {\tt output/test\_}. +Then all output files will start like this, e.g. {\tt output/test\_cl.dat}, {\tt output/test\_cl\_lensed.dat}, etc. +Of course the number of output files depends on your settings in the input file. There can be input files for CMB, LSS, background, thermodynamics, transfer functions, primordial spectra, etc. All this is documented in {\tt explanatory.ini}. + +If you do not pass explicitly a {\tt root = }, the code will name the output in its own way, by concatenating {\tt output/}, the name of the input parameter file, and the first available integer number, e.g.\\ + +\indent {\tt output/explanatory03\_cl.dat}, etc. + +\section{General principles} + +\subsection{Error management} + +Error management is based on the fact that all functions are defined +as integers returning either {\tt \_SUCCESS\_} or {\tt + \_FAILURE\_}. Before returning {\tt \_FAILURE\_}, they write an +error message in the structure of the module to which they belong. The +calling function will read this message, append it to its own error +message, and return a {\tt \_FAILURE\_}; and so on and so forth, until +the main routine is reached. This error management allows the user to +see the whole nested structure of error messages when an error has +been met. The structure associated to each module contains a field +for writing error messages, called {\tt + structure\_i.error\_message}, where {\tt structure\_i} could be one of {\tt background}, {\tt thermo}, {\tt perturbs}, etc. So, when a function from a module $i$ +is called within module $j$ and returns an error, the goal is to write +in {\tt structure\_j.error\_message} a local error message, and to +append to it the error message in {\tt + structure\_i.error\_message}. These steps are implemented in a macro +{\tt class\_call()}, used for calling whatever function: + +\vspace{0.5cm} + +\noindent +{\tt class\_call(module\_i\_function(...,structure\_i),}\\ +\mbox{ }~~~~~~~~~~~~~~~~{\tt structure\_i.error\_message,} \\ +\mbox{ }~~~~~~~~~~~~~~~~{\tt structure\_j.error\_message);}\\ + +\noindent +So, the first argument of {\tt call\_call()} is the function we want +to call; the second argument is the location of the error message +returned by this function; and the third one is the location of the +error message which should be returned to the higher level. +Usually, in the bulk of the code, we use pointer to structures rather than structure themselves; then the syntax is + +\vspace{0.5cm} + +\noindent +{\tt class\_call(module\_i\_function(...,pi),}\\ +\mbox{ }~~~~~~~~~~~~~~~~{\tt pi->error\_message,} \\ +\mbox{ }~~~~~~~~~~~~~~~~{\tt pj->error\_message);}\\ + +\noindent +where in this generic example, {\tt pi} and {\tt pj} are assumed to be pointers towards the structures +{\tt structure\_i} and {\tt structure\_j}. + + +The user +will find in {\tt include/common.h} a list of additional macros, all +starting by {\tt class\_...()}, which are all based on this logic. For +instance, the macro {\tt class\_test()} offers a generic way to return +an error in a standard format if a condition is not fulfilled. A +typical error message from \CLASS looks like: + +\vspace{0.5cm} + +\noindent +{\tt Error in module\_j\_function1\\ +=> module\_j\_function1 (L:340) : error in module\_i\_function2(...)\\ +=> module\_i\_function2 (L:275) : error in module\_k\_function3(...)\\ +...\\ +=> module\_x\_functionN (L:735) : your choice of input parameter blabla=30 +is not consistent with the constraint blabla<1\\} + +\noindent +where the {\tt L}'s refer to line numbers in each file. These error +messages are very informative, and are built almost entirely +automatically by the macros. For instance, in the above example, it +was only necessary to write inside the function {\tt module\_x\_functionN()} a test like:\\ + +\noindent +{\tt class\_test(blabla >= 1,}\\ +\mbox{ }~~~~~~~~~~~~~~~~{\tt px->error\_message,} \\ +\mbox{ }~~~~~~~~~~~~~~~~{\tt "your choice of input parameter blabla=\%e +is not consistent with the constraint blabla<\%e",}\\ +\mbox{ }~~~~~~~~~~~~~~~~{\tt blabla,blablamax);}\\ + +\noindent All +the rest was added step by step by the various {\tt +class\_call()} macros. + +\subsection{Dynamical allocation of indices} + +On might be tempted to decide that in a given array, matrix or vector, a given quantity is associated with an explicit index value. However, when modifying the code, extra entries will be needed and will mess up the initial scheme; the user will need to study which index is associated to which quantity, and possibly make an error. All this can be avoided by using systematically a dynamical index allocation. This means that all indices remain under a symbolic form, and in each, run the code attributes automatically a value to each index. The user never needs to know this value. +{\it This part of the documentation will be expanded with concrete guidelines.} + +\subsection{No hard coding} + +Any feature or equation which could be true in one cosmology and not in another one should not be written explicitly in the code, and should not be taken as granted in several other places. Discretization and integration steps are usually defined automatically by the code for each cosmology, instead of being set to something which might be optimal for minimal models, and not sufficient for other ones. +{\it This part of the documentation will be expanded with concrete examples.} + +\subsection{Modifying the code} + +{\it This part of the documentation will be expanded with concrete guidelines.} + +\section{Units and equations} + +{\it This part of the documentation will be expanded with concrete guidlines.} + +\end{document} diff --git a/class/doc/input/make1.sh b/class/doc/input/make1.sh new file mode 100755 index 00000000..334e3d72 --- /dev/null +++ b/class/doc/input/make1.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +doxygen doxyconf + +cp doxygen.sty ../manual/latex/doxygen.sty \ No newline at end of file diff --git a/class/doc/input/make2.sh b/class/doc/input/make2.sh new file mode 100755 index 00000000..61d2fc13 --- /dev/null +++ b/class/doc/input/make2.sh @@ -0,0 +1,10 @@ +#!/bin/bash + +cd ../manual/latex + +make + +make + +cp refman.pdf ../CLASS_MANUAL.pdf +cd ../../input diff --git a/class/doc/input/mod.md b/class/doc/input/mod.md new file mode 100644 index 00000000..32f0a8cb --- /dev/null +++ b/class/doc/input/mod.md @@ -0,0 +1,40 @@ +Updating the manual +=================== +Author: D. C. Hooper (hooper@physik.rwth-aachen.de) + +This pdf manual and accompanying web version have been generated using the `doxygen` software (http://www.doxygen.org). This software directly reads the code and extracts the necessary comments to form the manual, meaning it is very easy to generate newer versions of the manual as desired. + +### For CLASS developpers: ### + +To maintain the usefulness of the manual, a new version should be generated after any major upgrade to `CLASS`. To keep track of how up-to-date the manual is the title page also displays the last modification date. The manual is generated automatically from the code, excepted a few chapters written manually in the files + + README.md + doc/input/chap2.md + doc/input/chap3.md + doc/input/mod.md + external_Pk/README.md + +You can update these files, or add new ones that should be declared in the `INPUT=` field of `doc/input/doxyconf`. + +Generating a new version of this manual is straightforward. First, you need to install the `doxygen` software, which can be done by following the instructions on the software's webpage. The location where you install this software is irrelevant; it doesn't need to be in the same folder as `CLASS`. For Mac OSX, homebrew users can install the software with `brew install doxygen --with-graphviz`. + +Once installed, navigate to the class/doc/input directory and run the first script + +` . make1.sh` + +This will generate a new version of the html manual and the necessary files to make the pdf version. Unfortunately, `doxygen` does not yet offer the option to automatically order the output chapters in the pdf version of the manual. Hence, before compiling the pdf, this must be done manually. To do this you need to find the `refman.tex` file in class/doc/manual/latex. With this file you can modify the title page, headers, footers, and chapter ordering for the final pdf. Usually we just make two things: add manually the line + + \vspace*{1cm} + {\large Last updated \today}\\ + +after + + {\Large C\+L\+A\+SS M\+A\+N\+U\+AL }\\ + +and move manually the chapters `"The external Pk mode"` and `"Updating the manual"` to the end, after the automatically generated part. Once you have this file with your desired configuration, navigate back to the class/doc/input directory, and run the second script + +` . make2.sh` + +You should now be able to find the finished pdf in `class/doc/manual/CLASS_MANUAL.pdf`. Finally you can commit the changes to git, but not all the content of `doc/` is necessary: only `doc/README`, `doc/input/` and `doc/manual/CLASS_MANUAL.pdf`. Since version 2.8, we are not committing anymore `doc/manual/html/` because it was too big (and complicating the version history): users only get the PDF manual from git. + +As a final comment, doxygen uses two main configuration files: `doxyconf` and `doxygen.sty`, both located in class/doc/input. Changes to these files can dramatically impact the outcome, so any modifications to these files should be done with great care. diff --git a/class/doc/manual/CLASS_MANUAL.pdf b/class/doc/manual/CLASS_MANUAL.pdf new file mode 100644 index 00000000..6f9658bb Binary files /dev/null and b/class/doc/manual/CLASS_MANUAL.pdf differ diff --git a/class/explanatory.ini b/class/explanatory.ini old mode 100644 new mode 100755 index 4ce23a4a..399098e9 --- a/class/explanatory.ini +++ b/class/explanatory.ini @@ -1,228 +1,358 @@ -*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~* -* CLASS input parameter file * -*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~* - -> This example of input file, intended for CLASS beginners, lists all -> possibilities with detailed comments. You can use a more concise version, in -> which only the arguments in which you are interested would appear. Only -> lines containing an equal sign not preceded by a sharp sign "#" are -> considered by the code. Hence, do not write an equal sign within a comment, -> the whole line would be interpreted as relevant input. Input files must have -> an extension ".ini". - ----------------------------- -----> background parameters: ----------------------------- - -1) Hubble parameter : either 'H0' in km/s/Mpc or 'h' or '100*theta_s' where the - latter is the peak scale parameter 100(ds_dec/da_dec) close to 1.042143 - (default: 'h' set to 0.67556) +# *~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~* +# * CLASS input parameter file * +# *~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~* + +# This example of input file, intended for CLASS beginners, lists all +# possibilities with detailed comments. You can use a more concise version, in +# which only the arguments in which you are interested would appear. Only +# lines containing an equal sign not preceded by a sharp sign "#" are +# considered by the code, any other line is considered as a comment. +# +# The normal syntax is: parameter = value(s) +# where white spaces do not matter (they are removed automatically +# by the parser unless they are part of the parameter name). +# However, 'parameter' = value(s) +# and "parameter" = value(s) +# are also accepted by the parser since v2.8.0 +# +# Input files must have an extension ".ini". + +# ---------------------------- +# ----> background parameters: +# ---------------------------- + +# 1) Hubble parameter : either 'H0' in km/s/Mpc or 'h' or '100*theta_s' where the +# latter is the peak scale parameter 100(ds_dec/da_dec) close to 1.042143 +# (default: 'h' set to 0.67556) #H0 = 67.556 h =0.67556 #100*theta_s = 1.042143 -2) photon density: either 'T_cmb' in K or 'Omega_g' or 'omega_g' (default: - 'T_cmb' set to 2.7255) +# 2) photon density: either 'T_cmb' in K or 'Omega_g' or 'omega_g' (default: +# 'T_cmb' set to 2.7255) T_cmb = 2.7255 #Omega_g = #omega_g = -3) baryon density: either 'Omega_b' or 'omega_b' (default: 'omega_b' set to - 0.022032) +# 3) baryon density: either 'Omega_b' or 'omega_b' (default: 'omega_b' set to +# 0.022032) #Omega_b = omega_b = 0.022032 -4a) ultra-relativistic species / massless neutrino density: either 'N_ur' or - 'Omega_ur' or 'omega_ur' (default: 'N_ur' set to 3.046) (note: instead of - 'N_ur' you can pass equivalently 'N_eff', although this syntax is - deprecated) (one more remark: if you have respectively 1,2,3 massive neutrinos, if you stick to the default value T_ncdm equal to 0.71611, designed to give m/omega of 93.14 eV, and if you want to use N_ur to get N_eff equal to 3.046 in the early universe, then you should pass here respectively 2.0328,1.0196,0.00641) +# 4a) ultra-relativistic species / massless neutrino density: either 'N_ur' or +# 'Omega_ur' or 'omega_ur' (default: 'N_ur' set to 3.046) (note: instead of +# 'N_ur' you can pass equivalently 'N_eff', although this syntax is +# deprecated) (one more remark: if you have respectively 1,2,3 massive neutrinos, if you stick to the default value T_ncdm equal to 0.71611, designed to give m/omega of 93.14 eV, and if you want to use N_ur to get N_eff equal to 3.046 in the early universe, then you should pass here respectively 2.0328,1.0196,0.00641) -N_ur = 3.046 +N_ur = 2.0328 #Omega_ur = #omega_ur = -4b) to simulate ultra-relativistic species with non-standard - properties, you can pass 'ceff2_ur' and 'cvis2_ur' (effective squared - sound speed and viscosity parameter, like in the Generalised Dark - Matter formalism of W. Hu) (default: both set to 1/3) +# 4b) to simulate ultra-relativistic species with non-standard +# properties, you can pass 'ceff2_ur' and 'cvis2_ur' (effective squared +# sound speed and viscosity parameter, like in the Generalised Dark +# Matter formalism of W. Hu) (default: both set to 1/3) #ceff2_ur = #cvis2_ur = -5) density of cdm (cold dark matter): 'Omega_cdm' or 'omega_cdm' (default: - 'omega_cdm' set to 0.12038) +# 5) density of cdm (cold dark matter): 'Omega_cdm' or 'omega_cdm' (default: +# 'omega_cdm' set to 0.12038) #Omega_cdm = omega_cdm = 0.12038 -5b) For models with decaying cold dark matter (dcdm) you can choose to pass either: +# 5b) For models with decaying cold dark matter (dcdm) you can choose to pass either: -5b1) the current fractional density of dcdm+dr (decaying cold dark - matter and its relativistic decay radiation): 'Omega_dcdmdr' or - 'omega_dcdmdr' (default: 'Omega_dcdmdr' set to 0) +# 5b1) the current fractional density of dcdm+dr (decaying cold dark +# matter and its relativistic decay radiation): 'Omega_dcdmdr' or +# 'omega_dcdmdr' (default: 'Omega_dcdmdr' set to 0) Omega_dcdmdr = 0.0 #omega_dcdmdr = 0.0 -5b2) the rescaled initial value for dcdm density (see 1407.2418 for definitions). If you specify 5b1, 5b2 will be found autamtically by a shooting method, and vice versa. (default: 'Omega_dcdmdr' set to 0, hence so is 'Omega_ini_dcdm') +# 5b2) the rescaled initial value for dcdm density (see 1407.2418 for definitions). If you specify 5b1, 5b2 will be found autamtically by a shooting method, and vice versa. (default: 'Omega_dcdmdr' set to 0, hence so is 'Omega_ini_dcdm') #Omega_ini_dcdm = #omega_ini_dcdm = -5c) decay constant of dcdm in km/s/Mpc, same unit as H0 above. +# 5c) decay constant of dcdm in km/s/Mpc, same unit as H0 above. Gamma_dcdm = 0.0 -6) all parameters describing the ncdm sector (i.e. any non-cold dark matter - relics, including massive neutrinos, warm dark matter, etc.): +# 6) all parameters describing the ncdm sector (i.e. any non-cold dark matter +# relics, including massive neutrinos, warm dark matter, etc.): +# +# -> 'N_ncdm' is the number of distinct species (default: set to 0) - -> 'N_ncdm' is the number of distinct species (default: set to 0) +N_ncdm = 1 -N_ncdm = 0 - - -> 'use_ncdm_psd_files' is the list of N_ncdm numbers: 0 means 'phase-space - distribution (psd) passed analytically inside the code, in the mnodule - background.c, inside the function background_ncdm_distribution()'; 1 means - 'psd passed as a file with at list two columns: first for q, second for - f_0(q)', where q is p/T_ncdm (default: only zeros) +# -> 'use_ncdm_psd_files' is the list of N_ncdm numbers: 0 means 'phase-space +# distribution (psd) passed analytically inside the code, in the mnodule +# background.c, inside the function background_ncdm_distribution()'; 1 means +# 'psd passed as a file with at list two columns: first for q, second for +# f_0(q)', where q is p/T_ncdm (default: only zeros) #use_ncdm_psd_files = 0 - -> if some of the previous values are equal to one, 'ncdm_psd_filenames' is - the list of names of psd files (as many as number of ones in previous entry) +# -> if some of the previous values are equal to one, 'ncdm_psd_filenames' is +# the list of names of psd files (as many as number of ones in previous entry) ncdm_psd_filenames = psd_FD_single.dat - -> 'ncdm_psd_parameters' is an optional list of double parameters to describe - the analytic distribution function or to modify a p.s.d. passed as a file. - It is made available in the routine background_ncdm_distribution. +# -> 'ncdm_psd_parameters' is an optional list of double parameters to describe +# the analytic distribution function or to modify a p.s.d. passed as a file. +# It is made available in the routine background_ncdm_distribution. #ncdm_psd_parameters = Nactive, sin^2_12 ,s23 ,s13 ncdm_psd_parameters = 0.3 ,0.5, 0.05 -The remaining parameters should be entered as a list of N_ncdm numbers -separated by commas: +# The remaining parameters should be entered as a list of N_ncdm numbers +# separated by commas: - -> 'Omega_ncdm' or 'omega_ncdm' or 'm_ncdm' in eV (default: all set to zero); - with only one of these inputs, CLASS computes the correct value of - the mass; if both (Omega_ncdm, m_ncdm) or (omega_ncdm, m_ncdm) are - passed, CLASS will renormalise the psd in order to fulfill both - conditions. - Passing zero in the list of m_ncdm's or Omeg_ncdm's means that for - this component, this coefficient is not imposed, and its value is - inferred from the other one. +# -> 'Omega_ncdm' or 'omega_ncdm' or 'm_ncdm' in eV (default: all set to zero); +# with only one of these inputs, CLASS computes the correct value of +# the mass; if both (Omega_ncdm, m_ncdm) or (omega_ncdm, m_ncdm) are +# passed, CLASS will renormalise the psd in order to fulfill both +# conditions. +# Passing zero in the list of m_ncdm's or Omeg_ncdm's means that for +# this component, this coefficient is not imposed, and its value is +# inferred from the other one. -m_ncdm = 0.04, 0.04, 0.04 -Omega_ncdm = +#m_ncdm = 0.04, 0.04, 0.04 +#Omega_ncdm = 0.0014129995059138502, 0.0014129995059138502, 0.0014129995059138502 +omega_ncdm = 0.000644866570625114 +#, 0.000644866570625114, 0.000644866570625114 - -> 'T_ncdm' is the ncdm temperature in units of photon temperature - (default: set to 0.71611, which is slightly larger than the - instantaneous decoupling value (4/11)^(1/3); indeed, this default - value is fudged to give a ratio m/omega equal to 93.14 eV for - active neutrinos, as predicted by precise studies of active - neutrino decoupling, see hep-ph/0506164) +# -> 'T_ncdm' is the ncdm temperature in units of photon temperature +# (default: set to 0.71611, which is slightly larger than the +# instantaneous decoupling value (4/11)^(1/3); indeed, this default +# value is fudged to give a ratio m/omega equal to 93.14 eV for +# active neutrinos, as predicted by precise studies of active +# neutrino decoupling, see hep-ph/0506164) -T_ncdm = +T_ncdm = 0.71611 - -> 'ksi_ncdm' is the ncdm chemical potential in units of its own temperature - (default: set to 0) +# -> 'ksi_ncdm' is the ncdm chemical potential in units of its own temperature +# (default: set to 0) ksi_ncdm = - -> 'deg_ncdm' is the degeneracy parameter multiplying the psd: 1 stands for - 'one family', i.e. one particle + anti-particle (default: set to 1.0) +# -> 'deg_ncdm' is the degeneracy parameter multiplying the psd: 1 stands for +# 'one family', i.e. one particle + anti-particle (default: set to 1.0) deg_ncdm = -7) curvature: 'Omega_k' (default: 'Omega_k' set to 0) +# -> 'Quadrature strategy' is the method used for the momentum sampling of the +# ncdm distribution function. 0 is the automatic method, 1 is Gauss-Laguerre +# quadrature, 2 is the trapezoidal rule on [0,Infinity] using the transformation +# q->1/t-1. 3 is the trapezoidal rule on [0,q_max] where q_max is the next input. +# (default: set to 0) + +Quadrature strategy = + +# -> 'Maximum q' is the maximum q relevant only for Quadrature strategy 3. +# (default: set to 15) + +Maximum q = + +# 7) curvature: 'Omega_k' (default: 'Omega_k' set to 0) Omega_k = 0. -8a) Dark energy contributions. At least one out of three conditions must be satisfied: - i) 'Omega_Lambda' unspecified. - ii) 'Omega_fld' unspecified. - iii) 'Omega_scf' set to a negative value. [Will be refered to as - unspecified in the following text.] - The code will then use the first unspecified component to satisfy the - closure equation (sum_i Omega_i) equals (1 + Omega_k) - (default: 'Omega_fld' and 'Omega_scf' set to 0 and 'Omega_Lambda' inferred - by code) - -Omega_Lambda = 0.0 -#Omega_fld = 0 +# 8a) Dark energy contributions. At least one out of three conditions must be satisfied: +# i) 'Omega_Lambda' unspecified. +# ii) 'Omega_fld' unspecified. +# iii) 'Omega_scf' set to a negative value. [Will be refered to as +# unspecified in the following text.] +# The code will then use the first unspecified component to satisfy the +# closure equation (sum_i Omega_i) equals (1 + Omega_k) +# (default: 'Omega_fld' and 'Omega_scf' set to 0 and 'Omega_Lambda' inferred +# by code) + +# Omega_Lambda = 0.7 +Omega_fld = 0 Omega_scf = 0 -8b) equation of state parameter (p/rho equal to w0+wa(1-a/a0) ) and sound speed - of the fluid (this is the sound speed defined in the frame comoving with - the fluid, i.e. obeying to the most sensible physical definition) - -w0_fld = -0.9 +# 8b) The flag 'use_ppf' is 'yes' by default, to use the PPF approximation +# (see 0808.3125 [astro-ph]) allowing perturbations to cross the +# phantom divide. Set to 'no' to enforce true fluid equations for +# perturbations. When the PPF approximation is used, you can choose +# the ratio 'c_gamma_over_c_fld' (eq. (16) in 0808.3125). The +# default is 0.4 as recommended by that reference, and implicitely +# assumed in other codes. (default: 'use_ppf' to yes, 'c_gamma_over_c_fld' to 0.4) + +use_ppf = yes +c_gamma_over_c_fld = 0.4 + +# 8c) Choose your equation of state between different models, 'CLP' for +# p/rho = w0_fld + wa_fld (1-a/a0) (Chevalier-Linder-Polarski). +# (default:'fluid_equation_of_state' set to 'CLP') + +#fluid_equation_of_state = CLP + +# 8c1) equation of state of the fluid in 'CLP' case (p/rho = w0_fld + +# wa_fld (1-a/a0)) and squared sound speed 'cs2_fld' of the fluid +# (this is the sound speed defined in the frame comoving with the +# fluid, i.e. obeying to the most sensible physical +# definition). Generalizing w(a) to a more complicated expressions +# would be easy, for that, have a look into source/background.c at +# the function background_w_fld(). (default: 'w0_fld' set to -1, +# 'wa_fld' to 0, 'cs2_fls' to 1) + +w0_fld = -1 wa_fld = 0. cs2_fld = 1 -8c) Scalar field (scf) initial conditions from attractor solution (assuming - pure exponential potential). (default: yes) +# 8d) Scalar field (scf) initial conditions from attractor solution (assuming +# pure exponential potential). (default: yes) attractor_ic_scf = yes -8d) Scalar field (scf) potential parameters and initial conditions. V equals - ((\phi-B)^\alpha + A)exp(-lambda*phi), see - http://arxiv.org/abs/astro-ph/9908085. +# 8e) Scalar field (scf) potential parameters and initial conditions. V equals +# ((\phi-B)^\alpha + A)exp(-lambda*phi), see +# http://arxiv.org/abs/astro-ph/9908085. #scf_parameters = [scf_lambda, scf_alpha, scf_A, scf_B, phi, phi_prime] scf_parameters = 10.0, 0.0, 0.0, 0.0, 100.0, 0.0 -If 'attractor_ic_scf' is set to 'no', the last two entries are assumed to be -the initial values of phi in units of the reduced planck mass m_Pl and the -conformal time derivative of phi in units of [m_Pl/Mpc]. (Note however that -CLASS determines the initial scale factor dynamically and the results might not -be as expected in some models.) +# If 'attractor_ic_scf' is set to 'no', the last two entries are assumed to be +# the initial values of phi in units of the reduced planck mass m_Pl and the +# conformal time derivative of phi in units of [m_Pl/Mpc]. (Note however that +# CLASS determines the initial scale factor dynamically and the results might not +# be as expected in some models.) -8e) Scalar field (scf) tuning parameter: If Omega_scf is negative, the - following index (0,1,2,...) in scf_parameters will be used for tuning: +# 8f) Scalar field (scf) tuning parameter: If Omega_scf is negative, the +# following index (0,1,2,...) in scf_parameters will be used for tuning: scf_tuning_index = 0 -9) scale factor today 'a_today' (arbitrary and irrelevant for most purposes) - (default: set to 1) +# 9) scale factor today 'a_today' (arbitrary and irrelevant for most purposes) +# (default: set to 1) # a_today = 1. --------------------------------- -----> thermodynamics parameters: --------------------------------- - -1) primordial Helium fraction 'YHe', e.g. 0.25; if set to 'BBN' or 'bbn', will - be inferred from Big Bang Nucleosynthesis (default: set to 'BBN') - -YHe = BBN - -2) 'recombination' algorithm set to 'RECFAST' or 'HyRec' +# 10) Dark Matter interacting with Dark Radiation (idm_dr) and +# interacting Dark Radiation (idr), implemented by +# M. Archidiacono, S. Bohr, and D.C. Hooper following the ETHOS +# framework (1512.05344). Can also take as input the parameters +# of the models of 1507.04351 (with non-abelian dark matter, dark +# gluons...) wicj can be seen as a sub-class of ETHOS. See +# 1907.01496 for more details on both cases. + +# -> Amount of idm_dr. Enter either: +# - 'Omega_idm_dr', +# - 'omega_idm_dr', or +# - the fraction 'f_idm_dr' of CDM that should be interacting; the latter option requires +# that Omega_cdm or omega_cdm are non-zero +# default: 0) +Omega_idm_dr = 0. +#omega_idm_dr = +#f_idm_dr = + +# -> interacting dark matter mass, 'm_idm' (or equivalently just 'm_dm') in eV (default: 1.0e11) +#m_idm = 1.0e11 + +# -> Amount of interacting dark radiation idr. +# - Can be parameterised through the temperature ratio 'xi_idr' (= T_idr/T_cmb) +# - Can be parameterised through the number of extra relativistic relics 'N_idr' (or indifferently 'N_dg') +# In all cases the parameter is dimensionless. +# (default : 0) +xi_idr = +#N_idr = + +# -> Statistical factor to differentiate between fermionic (= 7/8) and bosonic (= 1) dark radiation (default 7/8) +stat_f_idr = 0.875 + +# -> Strength of the coupling between DM and DR: +# +# - Can be passed indifferently as 'a_idm_dr' or 'a_dark' in ETHOS parameterisation, in units of 1/Mpc. +# Then in ETHOS notations: Gamma_DR-DM = - omega_DM a_dark ((1+z)/10^7)^nindex_dark +# while: Gamma_DM-DR = - 4/3 (rho_DR/rho_DM) omega_DM a_dark ((1+z)/10^7)^nindex_dark +# = - 4/3 omega_DR a_dark (1+z) ((1+z)/10^7)^nindex_dark +# or in CLASS notations: dmu_idm_dr = - Gamma_DR-DM = omega_idm_dr a_idm_dr ((1+z)/10^7)^nindex_idm_dr +# +# - Can be passed as 'Gamma_0_nadm' in NADM parameterisation, in units of 1/Mpc. +# Then in ETHOS notations: Gamma_DR-DM = - 3/4 Omega_DM/Omega_DR Gamma_0_nadm +# while: Gamma_DM-DR = - (1+z) Gamma_0_nadm +# or in CLASS notations: dmu_idm_dr = - Gamma_DR-DM = 3/4 Omega_idm_dr/Omega_idr Gamma_0_nadm +# +# (default : 0) +a_idm_dr = 0. +#Gamma_0_nadm = + +# -> Strength of the dark radiation self interactions coupling, +# can be passed indifferently as 'b_idr' (or 'b_dark'), in units of 1/Mpc. +# In ETHOS notations: Gamma_DR-DR = (b_dark/a_dark) (Omega_DR/Omega_DM) Gamma_DR-DM +# In CLASS notations: dmu_idr = - Gamma_DR-DR = (b_idr/a_idm_dr) (Omega_idr/Omega_idm_dr) dmu_idm_dr +# (default : 0) +b_idr = + +# -> Power of the temperature dependence of the co-moving idr - idm_dr interaction rate +# Can be passed indifferently as 'nindex_idm_dr' (or 'nindex_dark'), in units of 1/Mpc. +# (default : 4, unless Gamma_0_nadm has been passed, then default changes to 0) +nindex_idm_dr = + +# -> Nature of the interacting dark radiation: 'free_streaming' or 'fluid' +# (default = 'free_streaming', unless Gamma_0_nadm has been passed, then default changes to 'fluid') +idr_nature = + +# -> idr - idm_dr interaction angular coefficient: 'alpha_idm_dr' (or indifferently 'alpha_dark') +# Should be 3/4 if vector boson mediator; 3/2 if scalar boson mediator. +# In full generality this coefficient may depend on l = 2, 3, 4... +# The user can pass here a list of values with an arbitrary size. The first coefficients will be adjusted +# accordingly. After that, the last value will be repeated. +# For instance, if users passes 3, 2, 1, the code will take alpha_2=3, alpha_3=2, and all others equal to 1. +# (default = all set to 1.5) +alpha_idm_dr = 1.5 + +# -> idr self-interaction angular coefficient: 'beta_idr' (or indifferently 'beta_dark') +# In full generality this coefficient may depend on l = 2, 3, 4... +# The user can pass here a list of values with an arbitrary size. The first coefficients will be adjusted +# accordingly. After that, the last value will be repeated. +# For instance, if users passes 3, 2, 1, the code will take beta_2=3, beta_3=2, and all others equal to 1. +# (default = all set to 1.5) +beta_idr = 1.5 + +# -> Precision parameters for idm_dr and idr can be found in precisions.h, with the tag idm_dr or idr + +# -------------------------------- +# ----> thermodynamics parameters: +# -------------------------------- + +# 1) primordial Helium fraction 'YHe', e.g. 0.25; if set to 'BBN' or 'bbn', will +# be inferred from Big Bang Nucleosynthesis (default: set to 'BBN') + +YHe = 0.2457089991568521 +#BBN + +# 2) 'recombination' algorithm set to 'RECFAST' or 'HyRec' recombination = RECFAST -2) parametrization of reionization: 'reio_parametrization' must be one - of 'reio_none' (no reionization), 'reio_camb' (like CAMB: one - tanh() step for hydrogen reionization one for second helium - reionization), 'reio_bins_tanh' (binned history x_e(z) with tanh() - interpolation between input values), 'reio_half_tanh' (like - 'reio_camb' excepted that we match the function xe(z) from - recombination with only half a tanh(z-z_reio)), 'reio_many_tanh' - (arbitrary number of tanh-like steps with specified central values, - a scheme usually more useful than 'reio_bins_tanh')... (default: - set to 'reio_camb') +# 2) parametrization of reionization: 'reio_parametrization' must be one +# of 'reio_none' (no reionization), 'reio_camb' (like CAMB: one +# tanh() step for hydrogen reionization one for second helium +# reionization), 'reio_bins_tanh' (binned history x_e(z) with tanh() +# interpolation between input values), 'reio_half_tanh' (like +# 'reio_camb' excepted that we match the function xe(z) from +# recombination with only half a tanh(z-z_reio)), 'reio_many_tanh' +# (arbitrary number of tanh-like steps with specified ending values, +# a scheme usually more useful than 'reio_bins_tanh'), 'reio_inter' +# (linear interpolation between discrete values of xe(z))... (default: +# set to 'reio_camb') reio_parametrization = reio_camb -3.a.) if 'reio_parametrization' set to 'reio_camb' or 'reio_half_tanh': enter - one of 'z_reio' or 'tau_reio' (default: 'z_reio' set to 11.357 to get tau_reio of 0.0925), plus - 'reionization_exponent', 'reionization_width', - 'helium_fullreio_redshift', 'helium_fullreio_width' - (default: set to 1.5, 0.5, 3.5, 0.5) +# 3.a.) if 'reio_parametrization' set to 'reio_camb' or 'reio_half_tanh': enter +# one of 'z_reio' or 'tau_reio' (default: 'z_reio' set to 11.357 to get tau_reio of 0.0925), plus +# 'reionization_exponent', 'reionization_width', +# 'helium_fullreio_redshift', 'helium_fullreio_width' +# (default: set to 1.5, 0.5, 3.5, 0.5) z_reio = 11.357 #tau_reio = 0.0925 @@ -232,47 +362,64 @@ reionization_width = 0.5 helium_fullreio_redshift = 3.5 helium_fullreio_width = 0.5 -3.b.) if 'reio_parametrization' set to 'reio_bins_tanh': enter number of bins - and list of z_i and xe_i defining the free electron density at the center - of each bin. Also enter a dimensionless paramater regulating the - sharpness of the tanh() steps, independently of the bin width; - recommended sharpness is 0.3, smaller values will make steps too sharp, - larger values will make the step very progressive but with discontinuity - of x_e(z) derivative around z_i values. - (default: set to 0, blank, blank, 0.3) +# 3.b.) if 'reio_parametrization' set to 'reio_bins_tanh': enter number of bins +# and list of z_i and xe_i defining the free electron density at the center +# of each bin. Also enter a dimensionless paramater regulating the +# sharpness of the tanh() steps, independently of the bin width; +# recommended sharpness is 0.3, smaller values will make steps too sharp, +# larger values will make the step very progressive but with discontinuity +# of x_e(z) derivative around z_i values. +# (default: set to 0, blank, blank, 0.3) binned_reio_num = 3 binned_reio_z = 8,12,16 binned_reio_xe = 0.8,0.2,0.1 binned_reio_step_sharpness = 0.3 -3.c.) if 'reio_parametrization' set to 'reio_many_tanh': enter number of jumps, - list of jump redhsifts z_i (central value of each tanh()), list of free electron density x_i after each jump, and common width of all jumps. If you want to end up with all hydrogen reionized but neglecting helium reionization, the first value of x_i in the list should be 1. For each x_i you can also pass the flags -1 or -2. They mean: for -1, after hydrogen + first helium recombination (so the code will substitute a value bigger than one based on Y_He); for -2, after hydrogen + second helium recombination (the code will substitite an even bigger value based on Y_He). You can get results close to reio_camb by setting these parameters to the value showed below (and adapting the second many_tanh_z to the usual z_reio). (default: not set) +# 3.c.) if 'reio_parametrization' set to 'reio_many_tanh': enter number of jumps, +# list of jump redhsifts z_i (central value of each tanh()), list of free electron density x_i after each jump, and common width of all jumps. If you want to end up with all hydrogen reionized but neglecting helium reionization, the first value of x_i in the list should be 1. For each x_i you can also pass the flags -1 or -2. They mean: for -1, after hydrogen + first helium recombination (so the code will substitute a value bigger than one based on Y_He); for -2, after hydrogen + second helium recombination (the code will substitute an even bigger value based on Y_He). You can get results close to reio_camb by setting these parameters to the value showed below (and adapting the second many_tanh_z to the usual z_reio). (default: not set) many_tanh_num = 2 many_tanh_z = 3.5,11.3 many_tanh_xe = -2,-1 many_tanh_width = 0.5 -4.a) in order to model energy injection from DM annihilation, specify a - parameter 'annihilation' corresponding to the energy fraction absorbed by - the gas times the DM cross section divided by the DM mass, (f / - m_cdm), see e.g. 0905.0003, expressed here in units of m^3/s/Kg - (default: set to zero) +# 3.d.) if 'reio_parametrization' set to 'reio_inter': enter the number +# of points, the list of redshifts z_i, and the list of free electron +# fraction values x_i. The code will do linear interpolation between +# them. The first z_i should always be 0. Like above, for each x_i, you +# can also pass the flags -1 or -2. They mean: for -1, after the +# hydrogen and the first helium recombination (so the code will +# substitute a value bigger than one based on Y_He); for -2, after the +# hydrogen and the second helium recombination (the code will substitute +# an even bigger value based on Y_He). The last value of x_i should +# always be zero, the code will substitute it with the value that one +# would get in absence of reionization, as computed by the recombination +# code. (default: not set) + +reio_inter_num = 8 +reio_inter_z = 0, 3, 4, 8, 9, 10, 11, 12 +reio_inter_xe = -2, -2, -1, -1, 0.9, 0.5, 0.1, 0 + +# 4.a) in order to model energy injection from DM annihilation, specify a +# parameter 'annihilation' corresponding to the energy fraction absorbed by +# the gas times the DM cross section divided by the DM mass, (f / +# m_cdm), see e.g. 0905.0003, expressed here in units of m^3/s/Kg +# (default: set to zero) annihilation = 0. -4.b) you can model simple variations of the above quanity as a function of - redhsift. If 'annihilation_variation' is non-zero, the function F(z) - defined as (f / m_cdm)(z) will be a parabola in log-log scale - between 'annihilation_zmin' and 'annihilation_zmax', with a curvature - given by 'annihilation_variation' (must be negative), and with a maximum - in 'annihilation_zmax'; it will be constant outside this range. To take DM - halos into account, specify the parameters 'annihilation_f_halo', the - amplitude of the halo contribution, and 'annihilation_z_halo', the - characteristic redshift of halos - (default: no variation, 'annihilation_variation' and 'annihilation_f_halo' - set to zero). +# 4.b) you can model simple variations of the above quanity as a function of +# redhsift. If 'annihilation_variation' is non-zero, the function F(z) +# defined as (f / m_cdm)(z) will be a parabola in log-log scale +# between 'annihilation_zmin' and 'annihilation_zmax', with a curvature +# given by 'annihilation_variation' (must be negative), and with a maximum +# in 'annihilation_zmax'; it will be constant outside this range. To take DM +# halos into account, specify the parameters 'annihilation_f_halo', the +# amplitude of the halo contribution, and 'annihilation_z_halo', the +# characteristic redshift of halos +# (default: no variation, 'annihilation_variation' and 'annihilation_f_halo' +# set to zero). annihilation_variation = 0. annihilation_z = 1000 @@ -281,160 +428,224 @@ annihilation_zmin = 30 annihilation_f_halo= 20 annihilation_z_halo= 8 -4.c) You can also state whether you want to use the on-the-spot approximation - (default: 'on the spot' is 'yes') +# 4.c) You can also state whether you want to use the on-the-spot approximation +# (default: 'on the spot' is 'yes') on the spot = yes -5) to model DM decay, specify a parameter 'decay' which is equal to the energy - fraction absorbed by the gas divided by the lifetime of the particle, see - e.g. 1109.6322, expressed here in 1/s - (default: set to zero) +# 5) to model DM decay, specify a parameter 'decay' which is equal to the energy +# fraction absorbed by the gas divided by the lifetime of the particle, see +# e.g. 1109.6322, expressed here in 1/s +# (default: set to zero) decay = 0. -6) State whether you want the code to compute the simplest analytic approximation to the photon damping scale (it will be added to the thermodynamics output, and its value at recombination will be stored and displayed in the standard output) (default: 'compute damping scale' set to 'no') +# 6) State whether you want the code to compute the simplest analytic approximation to the photon damping scale (it will be added to the thermodynamics output, and its value at recombination will be stored and displayed in the standard output) (default: 'compute damping scale' set to 'no') # compute damping scale = yes ----------------------------------------------------- -----> define which perturbations should be computed: ----------------------------------------------------- - -1.a) list of output spectra requested: -- 'tCl' for temperature Cls, -- 'pCl' for polarization Cls, -- 'lCl' for CMB lensing potential Cls, -- 'nCl' (or 'dCl') for density number count Cls, -- 'sCl' for galaxy lensing potential Cls, -- 'mPk' for total matter power spectrum P(k) infered from gravitational potential, -- 'dTk' (or 'mTk') for density transfer functions for each species, -- 'vTk' for velocity transfer function for each species. -By defaut, the code will try to compute the following cross-correlation Cls (if -available): temperature-polarisation, temperature-CMB lensing, polarization-CMB -lensing, and density-lensing. Other cross-correlations are not computed because -they would slow down the code considerably. - -Can be left blank if you do not want to evolve cosmological perturbations at -all. (default: set to blanck, no perturbation calculation) +# ---------------------------------------------------- +# ----> define which perturbations should be computed: +# ---------------------------------------------------- + +# 1.a) list of output spectra requested: +# - 'tCl' for temperature Cls, +# - 'pCl' for polarization Cls, +# - 'lCl' for CMB lensing potential Cls, +# - 'nCl' (or 'dCl') for density number count Cls, +# - 'sCl' for galaxy lensing potential Cls, +# - 'mPk' for total matter power spectrum P(k) infered from gravitational potential, +# - 'dTk' (or 'mTk') for density transfer functions for each species, +# - 'vTk' for velocity transfer function for each species. +# Warning: both lCl and sCl compute the C_ls of the lensing potential, C_l^phi-phi. +# If you are used to other codes, you may want to deal instead with the deflection +# Cls or the shear/convergence Cls. The relations between them are trivial: +# --> deflection d: +# Cl^dd = l(l+1) C_l^phiphi +# --> convergence kappa and shear gamma: the share the same harmonic power spectrum: +# Cl^gamma-gamma = 1/4 * [(l+2)!/(l-2)!] C_l^phi-phi +# By defaut, the code will try to compute the following cross-correlation Cls (if +# available): temperature-polarisation, temperature-CMB lensing, polarization-CMB +# lensing, CMB lensing-density, and density-lensing. Other cross-correlations are +# not computed because they would slow down the code considerably. +# +# Can be left blank if you do not want to evolve cosmological perturbations at +# all. (default: set to blanck, no perturbation calculation) #output = tCl,pCl,lCl -#output = tCl,pCl,lCl,mPk -output = mPk +output = tCl,pCl,lCl,mPk,mTk,vTk +#output = mPk,mTk -1.b) if you included 'tCl' in the list, you can take into account only some of - the terms contributing to the temperature spectrum: intrinsic temperature - corrected by Sachs-Wolfe ('tsw' or 'TSW'), early integrated Sachs-Wolfe - ('eisw' or 'EISW'), late integrated Sachs-Wolfe ('lisw' or 'LISW'), - Doppler ('dop' or 'Dop'), polarisation contribution ('pol' or 'Pol'). Put - below the list of terms to be included - (defaut: if this field is not passed, all terms will be included) +# 1.b) if you included 'tCl' in the list, you can take into account only some of +# the terms contributing to the temperature spectrum: intrinsic temperature +# corrected by Sachs-Wolfe ('tsw' or 'TSW'), early integrated Sachs-Wolfe +# ('eisw' or 'EISW'), late integrated Sachs-Wolfe ('lisw' or 'LISW'), +# Doppler ('dop' or 'Dop'), polarisation contribution ('pol' or 'Pol'). Put +# below the list of terms to be included +# (defaut: if this field is not passed, all terms will be included) #temperature contributions = tsw, eisw, lisw, dop, pol -1.c) if one of 'eisw' or 'lisw' is turned off, the code will read 'early/late - isw redshift', the split value of redshift z at which the isw is - considered as late or early (if this field is absent or left blank, by - default, 'early/late isw redshift' is set to 50) +# 1.c) if one of 'eisw' or 'lisw' is turned off, the code will read 'early/late +# isw redshift', the split value of redshift z at which the isw is +# considered as late or early (if this field is absent or left blank, by +# default, 'early/late isw redshift' is set to 50) #early/late isw redshift = -1.d) if you included 'nCl' (or 'dCl') in the list, you can take into account - only some of the terms contributing to the obsevable number count - fluctuation spectrum: matter density ('density'), redshift-space and - Doppler distortions ('rsd'), lensing ('lensing'), or gravitational - potential terms ('gr'). Put below the list of terms to be included - (defaut: if this field is not passed, only 'dens' will be included) +# 1.d) if you included 'nCl' (or 'dCl') in the list, you can take into account +# only some of the terms contributing to the obsevable number count +# fluctuation spectrum: matter density ('density'), redshift-space and +# Doppler distortions ('rsd'), lensing ('lensing'), or gravitational +# potential terms ('gr'). Put below the list of terms to be included +# (defaut: if this field is not passed, only 'dens' will be included) #number count contributions = density, rsd, lensing, gr -2) if you want an estimate of the non-linear P(k) and Cls, enter 'halofit' or - 'Halofit' or 'HALOFIT' for Halofit; otherwise leave blank - (default: blank, linear P(k) and Cls) - -non linear = Halofit - -3) if you want to consider perturbed recombination, enter a word containing the - letter 'y' or 'Y'. CLASS will then compute the perturbation in the - ionization fraction x_e and the baryon temperature. The initial conformal - time will be small, therefore you should use the default integrator ndf15 - (i.e. do not set 'evolver' to 0, otherwise the code will be slower). - (default: neglect perturbed recombination) +# 1.e) if you included 'dTk' (or 'mTk') in the list, the code will give +# you by default the transfer function of the scale-invariant Bardeen +# potentials (for whatever gauge you are using). If you need the +# transfer function of additional metric fluctuations, specific to the +# gauge you are using, set the following flag to 'yes' (default: +# set to 'no') + +extra metric transfer functions = + +# 1.f) if you included 'dTk' or 'vTk' in the list of outputs, you may +# transform your transfer functions into the Nbody gauge by setting +# the following flag to ‘yes'. This will also include the transfer +# function for the metric perturbations H_T’ (exact) and gamma +# (approximate) in the Nbody gauge, see e.g. 1505.04756 and +# 1811.00904. These calculations are more stable whith +# 'gauge=synchronous' (default). To compute H_T' and gamma without +# converting the output to the Nbody gauge, use the previous flag +# 'extra metric transfer functions'. (default: set to 'no'). + +Nbody gauge transfer functions = + +# 2.a) if you want an estimate of the non-linear P(k) and Cls, enter +# 'halofit' or 'Halofit' or 'HALOFIT' for Halofit, and +# 'hmcode' or 'Hmcode' or 'HMcode' or 'HMCODE') for HMcode; +# otherwise leave blank (default: blank, linear P(k) and Cls) + +non linear = "HMcode2020" + +# 2.b) if you chose Halofit, and you have Omega0_fld != 0. (i.e. you +# set Omega_lambda=0.) & wa_fld != 0., then you might want to use the +# pk equal method of 0810.0190 and 1601.07230 by setting this flag to +# 'yes' (default: set to 'no') + +pk_eq = + +# 2.c) if you chose HMcode: +# In HMcode you can specify a baryonic feedback model (otherwise only DM is used). +# Each model depends on two parameters: the minimum concentration "c_min" from the +# Bullock et al. 2001 mass-concentration relation and the halo bloating parameter "eta_0" +# introduced in Mead et al. 2015. In Mead et al. 2015 the parameters c_min and eta_0 are fitted +# to the Cosmic Emulator dark matter only simulation (Heitman et al. 2014) and the +# hydrodynamical OWLS simulations (Schaye et al. 2010, van Daalen et al. 2011). +# You can choose between the 5 models of Mead et al. 2015, Table 4: +# Model (eta_0, c_min) Explanation +# - 'emu_dmonly' (0.603, 3.13) fits the only dark matter Cosmic Emulator simulation (default) +# - 'owls_dmonly' (0.64, 3.43) fits the OWLS simulation of dark matter only +# - 'owls_ref' (0.68, 3.91) fits the OWLS simulation that includes gas cooling, heating, +# star formation and evolution, chemical enrichment and supernovae feedback +# - 'owls_agn' (0.76, 2.32) fits the OWLS simulation that includes AGN feedback +# - 'owls_dblim' (0.70, 3.01) fits the OWLS simulation that has extra supernova energy in wind velocity +# Set 'feedback model' to one of these names, +# or leave blank and pass manually the value of either 'eta_0' or 'c_min' +# (the other one will then be fixed according to equation (30) in Mead et al. 2015), +# or pass manually the two values of 'eta_0' and 'c_min' +# (default: 'feedback model' set to 'nl_emu_dmonly') + +feedback model = +eta_0 = +c_min = +hmcode2020log10tagn = 7.8 +# 3) if you want to consider perturbed recombination, enter a word +# containing the letter 'y' or 'Y'. CLASS will then compute the +# perturbation in the ionization fraction x_e and the baryon +# temperature, as in 0707.2727. The initial conformal time will be +# small, therefore you should use the default integrator ndf15 +# (i.e. do not set 'evolver' to 0, otherwise the code will be +# slower). (default: neglect perturbed recombination) #perturbed recombination = yes -4) list of modes ('s' for scalars, 'v' for vectors, 't' for tensors). More than - one letter allowed, can be attached or separated by arbitrary characters; - letters can be small or capital. - (default: set to 's') +# 4) list of modes ('s' for scalars, 'v' for vectors, 't' for tensors). More than +# one letter allowed, can be attached or separated by arbitrary characters; +# letters can be small or capital. +# (default: set to 's') modes = s #modes = s,t -5) relevant only if you ask for 'tCl, lCl' and/or 'pCl, lCl': if you want the - spectrum of lensed Cls, enter a word containing the letter 'y' or 'Y' - (default: no lensed Cls) +# 5) relevant only if you ask for 'tCl, lCl' and/or 'pCl, lCl': if you want the +# spectrum of lensed Cls, enter a word containing the letter 'y' or 'Y' +# (default: no lensed Cls) -lensing = no +lensing = yes -6) which perturbations should be included in tensor calculations? write 'exact' - to include photons, ultra-relativistic species 'ur' and all non-cold dark - matter species 'ncdm'; write 'massless' to appriximate 'ncdm' as extra - relativistic species (good approximation if ncdm is still relativistic at - the time of recombination); write 'photons' to include only photons - (default: 'massless') +# 6) which perturbations should be included in tensor calculations? write 'exact' +# to include photons, ultra-relativistic species 'ur' and all non-cold dark +# matter species 'ncdm'; write 'massless' to appriximate 'ncdm' as extra +# relativistic species (good approximation if ncdm is still relativistic at +# the time of recombination); write 'photons' to include only photons +# (default: 'massless') tensor method = -7) list of initial conditions for scalars ('ad' for adiabatic, 'bi' for baryon - isocurvature, 'cdi' for CDM isocurvature, 'nid' for neutrino density - isocurvature, 'niv' for neutrino velocity isocurvature). More than one of - these allowed, can be attached or separated by arbitrary characters; letters - can be small or capital. - (default: set to 'ad') +# 7) list of initial conditions for scalars ('ad' for adiabatic, 'bi' for baryon +# isocurvature, 'cdi' for CDM isocurvature, 'nid' for neutrino density +# isocurvature, 'niv' for neutrino velocity isocurvature). More than one of +# these allowed, can be attached or separated by arbitrary characters; letters +# can be small or capital. +# (default: set to 'ad') ic = ad #ic = ad&bi&nid -8) gauge in which calculations are performed: 'sync' or 'synchronous' or - 'Synchronous' for synchronous, 'new' or 'newtonian' or 'Newtonian' for - Newtonian/longitudinal gauge - (default: set to synchronous) +# 8) gauge in which calculations are performed: 'sync' or 'synchronous' or +# 'Synchronous' for synchronous, 'new' or 'newtonian' or 'Newtonian' for +# Newtonian/longitudinal gauge +# (default: set to synchronous) gauge = synchronous ---------------------------------------------- -----> define primordial perturbation spectra: ---------------------------------------------- +# --------------------------------------------- +# ----> define primordial perturbation spectra: +# --------------------------------------------- -1) primordial spectrum type ('analytic_Pk' for an analytic smooth function with amplitude, tilt, running, etc.; analytic spectra with feature can also be added as a new type;'inflation_V' for a numerical computation of the inflationary primordial spectrum, through a full integration of the perturbation equations, given a parametrization of the potential V(phi) in the observable window, like in astro-ph/0703625; 'inflation_H' for the same, but given a parametrization of the potential H(phi) in the observable window, like in astro-ph/0710.1630; 'inflation_V_end' for the same, but given a parametrization of the potential V(phi) in the whole region between the observable part and the end of inflation; there is also an option 'two scales' in order to specify two amplitudes instead of one amplitude and one tilt, like in the isocurvature mode analysis of the Planck inflation paper (works also for adiabatic mode only; see details below, item 2.c); finally 'external_Pk' allows for the primordial spectrum to be computed externally by some piece of code, or to be read from a table, see 2.d). (default: set to 'analytic_Pk') +# 1) primordial spectrum type ('analytic_Pk' for an analytic smooth function with amplitude, tilt, running, etc.; analytic spectra with feature can also be added as a new type;'inflation_V' for a numerical computation of the inflationary primordial spectrum, through a full integration of the perturbation equations, given a parametrization of the potential V(phi) in the observable window, like in astro-ph/0703625; 'inflation_H' for the same, but given a parametrization of the potential H(phi) in the observable window, like in astro-ph/0710.1630; 'inflation_V_end' for the same, but given a parametrization of the potential V(phi) in the whole region between the observable part and the end of inflation; there is also an option 'two scales' in order to specify two amplitudes instead of one amplitude and one tilt, like in the isocurvature mode analysis of the Planck inflation paper (works also for adiabatic mode only; see details below, item 2.c); finally 'external_Pk' allows for the primordial spectrum to be computed externally by some piece of code, or to be read from a table, see 2.d). (default: set to 'analytic_Pk') P_k_ini type = analytic_Pk -2) parameters related to one of the primordial spectrum types (will only be - read if they correspond to the type selected above) +# 2) parameters related to one of the primordial spectrum types (will only be +# read if they correspond to the type selected above) -2.a) for type 'analytic_Pk': +# 2.a) for type 'analytic_Pk': -2.a.1) pivot scale in Mpc-1 (default: set to 0.05) +# 2.a.1) pivot scale in Mpc-1 (default: set to 0.05) k_pivot = 0.05 -2.a.2) scalar adiabatic perturbations: curvature power spectrum value at pivot scale ('A_s' or 'ln10^{10}A_s'), tilt at the same scale 'n_s', and tilt running 'alpha_s' (default: set 'A_s' to 2.215e-9, 'n_s' to 0.9619, 'alpha_s' to 0) +# 2.a.2) scalar adiabatic perturbations: curvature power spectrum value at pivot scale ('A_s' or 'ln10^{10}A_s') OR 'sigma8' (found by iterations using a shooting method), tilt at the same scale 'n_s', and tilt running 'alpha_s' (default: set 'A_s' to 2.215e-9, 'n_s' to 0.9619, 'alpha_s' to 0) -sigma_8 = 0.83 -#A_s = 2.215e-9 +A_s = 2.215e-9 #ln10^{10}A_s = 3.0980 +# sigma8 = 0.848365 + n_s = 0.9619 + alpha_s = 0. -2.a.3) isocurvature/entropy perturbations: for each mode xx ('xx' being one of - 'bi', 'cdi', 'nid', 'niv', corresponding to baryon, cdm, neutrino - density and neutrino velocity entropy perturbations), enter the - entropy-to-curvature ratio f_xx, tilt n_xx and running alpha_xx, all - defined at the pivot scale; e.g. f_cdi of 0.5 means S_cdi/R equal to - one half and (S_cdi/R)^2 to 0.25 - (default: set each 'f_xx' to 1, 'n_xx' to 1, 'alpha_xx' to 0) +# 2.a.3) isocurvature/entropy perturbations: for each mode xx ('xx' being one of +# 'bi', 'cdi', 'nid', 'niv', corresponding to baryon, cdm, neutrino +# density and neutrino velocity entropy perturbations), enter the +# entropy-to-curvature ratio f_xx, tilt n_xx and running alpha_xx, all +# defined at the pivot scale; e.g. f_cdi of 0.5 means S_cdi/R equal to +# one half and (S_cdi/R)^2 to 0.25 +# (default: set each 'f_xx' to 1, 'n_xx' to 1, 'alpha_xx' to 0) f_bi = 1. n_bi = 1.5 @@ -445,17 +656,17 @@ f_nid=1. n_nid=2. alpha_nid= 0.01 -etc. +# etc. -2.a.4) cross-correlation between different adiabatic/entropy mode: for each - pair (xx, yy) where 'xx' and 'yy' are one of 'ad', 'bi', 'cdi', 'nid', - 'niv', enter the correlation c_xx_yy (parameter between -1 and 1, - standing for cosDelta, the cosine of the cross-correlation angle), the - tilt n_xx_yy of the function cosDelta(k), and its running alpha_xx_yy, - all defined at the pivot scale. So, for a pair of fully correlated - (resp. anti-correlated) modes, one should set (c_xx_yy, n_xx_yy, - alpha_xx_yy) to (1,0,0) (resp. (-1,0,0) - (default: set each 'c_xx_yy' to 0, 'n_xx_yy' to 0, 'alpha_xx_yy' to 0) +# 2.a.4) cross-correlation between different adiabatic/entropy mode: for each +# pair (xx, yy) where 'xx' and 'yy' are one of 'ad', 'bi', 'cdi', 'nid', +# 'niv', enter the correlation c_xx_yy (parameter between -1 and 1, +# standing for cosDelta, the cosine of the cross-correlation angle), the +# tilt n_xx_yy of the function cosDelta(k), and its running alpha_xx_yy, +# all defined at the pivot scale. So, for a pair of fully correlated +# (resp. anti-correlated) modes, one should set (c_xx_yy, n_xx_yy, +# alpha_xx_yy) to (1,0,0) (resp. (-1,0,0) +# (default: set each 'c_xx_yy' to 0, 'n_xx_yy' to 0, 'alpha_xx_yy' to 0) c_ad_bi = 0.5 #n_ad_bi = 0.1 @@ -466,26 +677,26 @@ c_bi_nid = 1. #n_bi_nid = -0.2 #alpha_bi_nid = 0.002 -etc. +# etc. -2.a.5) tensor mode (if any): tensor-to-scalar power spectrum ratio, tilt, - running at the pivot scale; if 'n_t' and/or 'alpha_t' is set to 'scc' or - 'SCC' isntead of a numerical value, it will be inferred from the - self-consistency condition of single field slow-roll inflation: for n_t, - -r/8*(2-r/8-n_s); for alpha_t, r/8(r/8+n_s-1) - (default: set 'r' to 1, 'n_t' to 'scc', 'alpha_t' to 'scc') +# 2.a.5) tensor mode (if any): tensor-to-scalar power spectrum ratio, tilt, +# running at the pivot scale; if 'n_t' and/or 'alpha_t' is set to 'scc' or +# 'SCC' isntead of a numerical value, it will be inferred from the +# self-consistency condition of single field slow-roll inflation: for n_t, +# -r/8*(2-r/8-n_s); for alpha_t, r/8(r/8+n_s-1) +# (default: set 'r' to 1, 'n_t' to 'scc', 'alpha_t' to 'scc') r = 1. n_t = scc alpha_t = scc -2.b) for type 'inflation_V' +# 2.b) for type 'inflation_V' -2.b.1) type of potential: 'polynomial' for a Taylor expansion of the potential around phi_pivot. Other shapes can easily be defined in primordial module. +# 2.b.1) type of potential: 'polynomial' for a Taylor expansion of the potential around phi_pivot. Other shapes can easily be defined in primordial module. potential = polynomial -2.b.2) for 'inflation_V' and 'polynomial': enter either the coefficients 'V_0', 'V_1', 'V_2', 'V_3', 'V_4' of the Taylor expansion (in units of Planck mass to appropriate power), or their ratios 'R_0', 'R_1', 'R_2', 'R_3', 'R_4' corresponding to (128pi/3)*V_0^3/V_1^2, V_1^2/V_0^2, V_2/V_0, V_1*V_3/V_0, V_1^2*V_4/V_0^3, or the potential-slow-roll parameters 'PSR_0', 'PSR_1', 'PSR_2', 'PSR_3', 'PSR_4', equal respectively to R_0, epsilon_V=R_1/(16pi), eta_V=R_2/(8pi), ksi_V=R_3/(8pi)^2, omega_V=R_4/(8pi)^3 (default: 'V_0' set to 1.25e-13, 'V_1' to 1.12e-14, 'V_2' to 6.95e-14, 'V_3' and 'V_4' to zero). +# 2.b.2) for 'inflation_V' and 'polynomial': enter either the coefficients 'V_0', 'V_1', 'V_2', 'V_3', 'V_4' of the Taylor expansion (in units of Planck mass to appropriate power), or their ratios 'R_0', 'R_1', 'R_2', 'R_3', 'R_4' corresponding to (128pi/3)*V_0^3/V_1^2, V_1^2/V_0^2, V_2/V_0, V_1*V_3/V_0, V_1^2*V_4/V_0^3, or the potential-slow-roll parameters 'PSR_0', 'PSR_1', 'PSR_2', 'PSR_3', 'PSR_4', equal respectively to R_0, epsilon_V=R_1/(16pi), eta_V=R_2/(8pi), ksi_V=R_3/(8pi)^2, omega_V=R_4/(8pi)^3 (default: 'V_0' set to 1.25e-13, 'V_1' to 1.12e-14, 'V_2' to 6.95e-14, 'V_3' and 'V_4' to zero). V_0=1.e-13 V_1=-1.e-14 @@ -505,7 +716,7 @@ V_4= #PSR_3 = #PSR_4 = -2.c) for 'inflation_H': enter either the coefficients 'H_0', 'H_1', 'H_2', 'H_3', 'H_4' of the Taylor expansion (in units of Planck mass to appropriate power), or the Hubble-slow-roll parameters 'HSR_0', 'HSR_1', 'HSR_2', 'HSR_3', 'HSR_4' +# 2.c) for 'inflation_H': enter either the coefficients 'H_0', 'H_1', 'H_2', 'H_3', 'H_4' of the Taylor expansion (in units of Planck mass to appropriate power), or the Hubble-slow-roll parameters 'HSR_0', 'HSR_1', 'HSR_2', 'HSR_3', 'HSR_4' H_0=1.e-13 H_1=-1.e-14 @@ -519,17 +730,17 @@ H_4= #HSR_3 = #HSR_4 = -2.d) for type 'inflation_V_end': +# 2.d) for type 'inflation_V_end': -2.d.1) value of the field at the minimum of the potential after inflation, or at a value in which you want to impose the end of inflation, in hybrid-like models. By convention, the code expects inflation to take place for values smaller than this value, with phi increasing with time (using a reflection symmetry, it is always possible to be in that case) (default: 'phi_end' set to 0) +# 2.d.1) value of the field at the minimum of the potential after inflation, or at a value in which you want to impose the end of inflation, in hybrid-like models. By convention, the code expects inflation to take place for values smaller than this value, with phi increasing with time (using a reflection symmetry, it is always possible to be in that case) (default: 'phi_end' set to 0) phi_end = -2.d.2) shape of the potential. Refers to functions pre-coded in the primordail module, so far 'polynomial' and 'higgs_inflation'. (default: 'full_potential' set to 0) +# 2.d.2) shape of the potential. Refers to functions pre-coded in the primordail module, so far 'polynomial' and 'higgs_inflation'. (default: 'full_potential' set to 0) full_potential = polynomial -2.d.3) parameters of the potential. The meaning of each parameter is explained in the function primrodial_inflation_potential() in source/primordial.c +# 2.d.3) parameters of the potential. The meaning of each parameter is explained in the function primrodial_inflation_potential() in source/primordial.c Vparam0 = Vparam1 = @@ -537,68 +748,68 @@ Vparam2 = Vparam3 = Vparam4 = -2.d.4) how much the scale factor a or the product (aH) increases between Hubble crossing for the pivot scale (during inflation) and the end of inflation. You can pass either: 'N_star' (standing for log(a_end/a_pivot)) set to a number; or 'ln_aH_ratio' (standing for log(aH_end/aH_pivot)) set to a number; (default: 'N_star' set to 60) +# 2.d.4) how much the scale factor a or the product (aH) increases between Hubble crossing for the pivot scale (during inflation) and the end of inflation. You can pass either: 'N_star' (standing for log(a_end/a_pivot)) set to a number; or 'ln_aH_ratio' (standing for log(aH_end/aH_pivot)) set to a number; (default: 'N_star' set to 60) #ln_aH_ratio = 50 #N_star = 55 -2.d.5) should the inflation module do its nomral job of numerical integration ('numerical') or use analytical slow-roll formulas to infer the primordial spectrum from the potential ('analytical') (default: 'inflation_behavior' set to 'numerical') +# 2.d.5) should the inflation module do its nomral job of numerical integration ('numerical') or use analytical slow-roll formulas to infer the primordial spectrum from the potential ('analytical') (default: 'inflation_behavior' set to 'numerical') #inflation_behavior = numerical -2.e) for type 'two_scales' (currently this option works only for scalar modes, and either for pure adiabatic modes or adiabatic + one type of isocurvature): +# 2.e) for type 'two_scales' (currently this option works only for scalar modes, and either for pure adiabatic modes or adiabatic + one type of isocurvature): -2.e.1) two wavenumbers 'k1' and 'k2' in 1/Mpc, at which primordial amplitude - parameters will be given. The value of 'k_pivot' will not be used in - input but quantities at k_pivot will still be calculated and stored in - the primordial structure (no default value: compulsory input if 'P_k_ini - type' has been set to 'two_scales') +# 2.e.1) two wavenumbers 'k1' and 'k2' in 1/Mpc, at which primordial amplitude +# parameters will be given. The value of 'k_pivot' will not be used in +# input but quantities at k_pivot will still be calculated and stored in +# the primordial structure (no default value: compulsory input if 'P_k_ini +# type' has been set to 'two_scales') k1=0.002 k2=0.1 -2.e.2) two amplitudes 'P_{RR}^1', 'P_{RR}^2' for the adiabatic primordial - spectrum (no default value: compulsory input if 'P_k_ini type' has been - set to 'two_scales') +# 2.e.2) two amplitudes 'P_{RR}^1', 'P_{RR}^2' for the adiabatic primordial +# spectrum (no default value: compulsory input if 'P_k_ini type' has been +# set to 'two_scales') P_{RR}^1 = 2.3e-9 P_{RR}^2 = 2.3e-9 -2.e.3) if one isocurvature mode has been turned on ('ic' set e.g. to 'ad,cdi' - or 'ad,nid', etc.), enter values of the isocurvature amplitude - 'P_{II}^1', 'P_{II}^2', and cross-correlation amplitude 'P_{RI}^1', - '|P_{RI}^2|' (see Planck paper on inflation for details on definitions) +# 2.e.3) if one isocurvature mode has been turned on ('ic' set e.g. to 'ad,cdi' +# or 'ad,nid', etc.), enter values of the isocurvature amplitude +# 'P_{II}^1', 'P_{II}^2', and cross-correlation amplitude 'P_{RI}^1', +# '|P_{RI}^2|' (see Planck paper on inflation for details on definitions) P_{II}^1 = 1.e-11 P_{II}^2 = 1.e-11 P_{RI}^1 = -1.e-13 |P_{RI}^2| = 1.e-13 -2.e.4) set 'special iso' to 'axion' or 'curvaton' for two particular cases: - 'axion' means uncorrelated, n_ad equal to n_iso, 'curvaton' means fully - anti-correlated with f_iso<0 (in the conventions of the Planck inflation - paper this would be called fully correlated), n_iso equal to one; in - these two cases, the last three of the four paramneters in 2.c.3 will be - over-written give the input for 'P_{II}^1' (defaut: 'special_iso' left - blanck, code assumes general case described by four parameters of 2.c.3) +# 2.e.4) set 'special iso' to 'axion' or 'curvaton' for two particular cases: +# 'axion' means uncorrelated, n_ad equal to n_iso, 'curvaton' means fully +# anti-correlated with f_iso<0 (in the conventions of the Planck inflation +# paper this would be called fully correlated), n_iso equal to one; in +# these two cases, the last three of the four paramneters in 2.c.3 will be +# over-written give the input for 'P_{II}^1' (defaut: 'special_iso' left +# blanck, code assumes general case described by four parameters of 2.c.3) special_iso = -2.f) for type 'external_Pk' (see external documentation external_Pk/README.md - for more details): +# 2.f) for type 'external_Pk' (see external documentation external_Pk/README.md +# for more details): -2.f.1) Command generating the table. If the table is already generated, just - write "cat ". The table should have two columns (k, pk) if - tensors are not requested, or three columns (k, pks, pkt) if they are. +# 2.f.1) Command generating the table. If the table is already generated, just +# write "cat ". The table should have two columns (k, pk) if +# tensors are not requested, or three columns (k, pks, pkt) if they are. #command = python external_Pk/generate_Pk_example.py #command = python external_Pk/generate_Pk_example_w_tensors.py command = cat external_Pk/Pk_example.dat #command = cat external_Pk/Pk_example_w_tensors.dat -2.f.2) If the table is not pregenerated, parameters to be passed to the - command, in the right order, starting from "custom1" and up to - "custom10". They must be real numbers. +# 2.f.2) If the table is not pregenerated, parameters to be passed to the +# command, in the right order, starting from "custom1" and up to +# "custom10". They must be real numbers. custom1 = 0.05 # In the example command: k_pivot custom2 = 2.215e-9 # In the example command: A_s @@ -611,56 +822,56 @@ custom5 = -0.1 # In the example (with tensors) command: n_t #custom9 = 0 #custom10 = 0 -------------------------------------- -----> define format of final spectra: -------------------------------------- +# ------------------------------------- +# ----> define format of final spectra: +# ------------------------------------- -1) maximum l for CLs: -- 'l_max_scalars' for CMB scalars (temperature, polarization, cmb lensing potential), -- 'l_max_tensors' for CMB tensors (temperature, polarization) -- 'l_max_lss' for Large Scale Structure Cls (density, galaxy lensing potential) -Reducing 'l_max_lss' with respect to l_max_scalars reduces the execution time significantly -(default: set 'l_max_scalars' to 2500, 'l_max_tensors' to 500, 'l_max_lss' to 300) +# 1) maximum l for CLs: +# - 'l_max_scalars' for CMB scalars (temperature, polarization, cmb lensing potential), +# - 'l_max_tensors' for CMB tensors (temperature, polarization) +# - 'l_max_lss' for Large Scale Structure Cls (density, galaxy lensing potential) +# Reducing 'l_max_lss' with respect to l_max_scalars reduces the execution time significantly +# (default: set 'l_max_scalars' to 2500, 'l_max_tensors' to 500, 'l_max_lss' to 300) -#l_max_scalars = 2500 -#l_max_tensors = 500 +l_max_scalars = 2500 +l_max_tensors = 500 #l_max_lss = 600 -2) maximum k in P(k), 'P_k_max_h/Mpc' in units of h/Mpc or 'P_k_max_1/Mpc' in - units of 1/Mpc. If scalar Cls are also requested, a minimum value is - automatically imposed (the same as in scalar Cls computation) - (default: set to 0.1h/Mpc) +# 2) maximum k in P(k), 'P_k_max_h/Mpc' in units of h/Mpc or 'P_k_max_1/Mpc' in +# units of 1/Mpc. If scalar Cls are also requested, a minimum value is +# automatically imposed (the same as in scalar Cls computation) +# (default: set to 1 1/Mpc) -P_k_max_h/Mpc = 100. +P_k_max_h/Mpc = 10. #P_k_max_1/Mpc = 0.7 -3) value(s) 'z_pk' of redshift(s) for P(k,z) output file(s); can be ordered - arbitrarily, but must be separated by comas (default: set 'z_pk' to 0) +# 3) value(s) 'z_pk' of redshift(s) for P(k,z) output file(s); can be ordered +# arbitrarily, but must be separated by comas (default: set 'z_pk' to 0) z_pk = 0 #z_pk = 0., 1.2, 3.5 -4) if the code is interfaced with routines that need to interpolate P(k,z) at - various values of (k,z), enter 'z_max_pk', the maximum value of z at which - such interpolations are needed. (default: set to maximum value in above - 'z_pk' input) +# 4) if the code is interfaced with routines that need to interpolate P(k,z) at +# various values of (k,z), enter 'z_max_pk', the maximum value of z at which +# such interpolations are needed. (default: set to maximum value in above +# 'z_pk' input) -z_max_pk = 10. +#z_max_pk = 10. -6) parameters for the the matter density number count (option 'nCl' (or 'dCl')) - or galaxy lensing potential (option 'sCl') Cls: +# 6) parameters for the the matter density number count (option 'nCl' (or 'dCl')) +# or galaxy lensing potential (option 'sCl') Cls: -6a) enter here a description of the selection functions W(z) of each - redshift bin; selection can be set to 'gaussian', 'tophat' or - 'dirac', then pass a list of N mean redshifts in growing order - separated by comas, 1 or N widths separated by comas, 1 or N bias - separated by a comma, and 1 or N magnification bias separated by a - comma. The width stands for one standard deviation of the gaussian - (in z space), or for the half-width of the top-hat. Finally, - non_diagonal sets the number of cross-correlation spectra that you - want to calculate: 0 means only auto-correlation, 1 means only - adjacent bins, and number of bins minus one means all correlations - (default: set to 'gaussian',1,0.1,1.,0.,0) +# 6a) enter here a description of the selection functions W(z) of each +# redshift bin; selection can be set to 'gaussian', 'tophat' or +# 'dirac', then pass a list of N mean redshifts in growing order +# separated by comas, 1 or N widths separated by comas, 1 or N bias +# separated by a comma, and 1 or N magnification bias separated by a +# comma. The width stands for one standard deviation of the gaussian +# (in z space), or for the half-width of the top-hat. Finally, +# non_diagonal sets the number of cross-correlation spectra that you +# want to calculate: 0 means only auto-correlation, 1 means only +# adjacent bins, and number of bins minus one means all correlations +# (default: set to 'gaussian',1,0.1,1.,0.,0) selection=gaussian selection_mean = 0.98,0.99,1.0,1.1,1.2 @@ -669,106 +880,106 @@ selection_bias = selection_magnification_bias = non_diagonal=4 - [note: for good performances, the code uses the Limber approximation for nCl. If you want high precision even with thin selection functions, increase the default value of the precision parameters l_switch_limber_for_nc_local_over_z, l_switch_limber_for_nc_los_over_z; for instance, add them to the input file with values 10000 and 2000, instead of the default 100 and 30] +# [note: for good performances, the code uses the Limber approximation for nCl. If you want high precision even with thin selection functions, increase the default value of the precision parameters l_switch_limber_for_nc_local_over_z, l_switch_limber_for_nc_los_over_z; for instance, add them to the input file with values 10000 and 2000, instead of the default 100 and 30] -6b) It is possible to multiply the window function W(z) by a selection function - 'dNdz' (number of objects per redshift interval). Type the name of the file - containing the redshift in the first column and the number of objects in - the second column (do not call it 'analytic*'). Set to 'analytic' to use - instead the analytic expression from arXiv:1004.4640 (this function can be - tuned in the module transfer.c, in the subroutine transfer_dNdz_analytic). - Leave blank to use a uniform distribution (default). +# 6b) It is possible to multiply the window function W(z) by a selection function +# 'dNdz' (number of objects per redshift interval). Type the name of the file +# containing the redshift in the first column and the number of objects in +# the second column (do not call it 'analytic*'). Set to 'analytic' to use +# instead the analytic expression from arXiv:1004.4640 (this function can be +# tuned in the module transfer.c, in the subroutine transfer_dNdz_analytic). +# Leave blank to use a uniform distribution (default). dNdz_selection = -6c) It is possible to consider source number counts evolution. Type the name of - the file containing the redshift on the first column and the number of - objects on the second column (do not call it 'analytic*'). Set to - 'analytic' to use instead the analytic expression from Eq. 48 of - arXiv:1105.5292. Leave blank to use constant comoving number densities - (default). +# 6c) It is possible to consider source number counts evolution. Type the name of +# the file containing the redshift on the first column and the number of +# objects on the second column (do not call it 'analytic*'). Set to +# 'analytic' to use instead the analytic expression from Eq. 48 of +# arXiv:1105.5292. Leave blank to use constant comoving number densities +# (default). dNdz_evolution = -7a) file name root 'root' for all output files (if Cl requested, written to - 'cl.dat'; if P(k) requested, written to 'pk.dat'; plus similar - files for scalars, tensors, pairs of initial conditions, etc.; if file with - input parameters requested, written to 'parameters.ini') (default: - the input module sets automatically 'root' to 'output/N_', - where N is the first available integer number, starting from 00, to avoid - erasing the output of previous runs) +# 7a) file name root 'root' for all output files (if Cl requested, written to +# 'cl.dat'; if P(k) requested, written to 'pk.dat'; plus similar +# files for scalars, tensors, pairs of initial conditions, etc.; if file with +# input parameters requested, written to 'parameters.ini') (default: +# the input module sets automatically 'root' to 'output/N_', +# where N is the first available integer number, starting from 00, to avoid +# erasing the output of previous runs) #root = output/test_ -7b) do you want headers at the beginning of each output file (giving precisions - on the output units/ format) ? If 'headers' set to something containing the - letter 'y' or 'Y', headers written, otherwise not written - (default: written) +# 7b) do you want headers at the beginning of each output file (giving precisions +# on the output units/ format) ? If 'headers' set to something containing the +# letter 'y' or 'Y', headers written, otherwise not written +# (default: written) headers = yes -7c) in all output files, do you want columns to be normalized and ordered with - the default CLASS definitions or with the CAMB definitions (often idential - to the CMBFAST one) ? Set 'format' to either 'class', 'CLASS', 'camb' or - 'CAMB' (default: 'class') +# 7c) in all output files, do you want columns to be normalized and ordered with +# the default CLASS definitions or with the CAMB definitions (often idential +# to the CMBFAST one) ? Set 'format' to either 'class', 'CLASS', 'camb' or +# 'CAMB' (default: 'class') format = class -7d) Do you want to write a table of background quantitites in a file? This will - include H, densities, Omegas, various cosmological distances, sound - horizon, etc., as a function of conformal time, proper time, scale factor. - File created if 'write background' set to something containing the letter - 'y' or 'Y', file written, otherwise not written (default: not written) +# 7d) Do you want to write a table of background quantitites in a file? This will +# include H, densities, Omegas, various cosmological distances, sound +# horizon, etc., as a function of conformal time, proper time, scale factor. +# File created if 'write background' set to something containing the letter +# 'y' or 'Y', file written, otherwise not written (default: not written) write background = no -7e) Do you want to write a table of thermodynamics quantitites in a file? File - is created if 'write thermodynamics' is set to something containing the - letter 'y' or 'Y'. (default: not written) +# 7e) Do you want to write a table of thermodynamics quantitites in a file? File +# is created if 'write thermodynamics' is set to something containing the +# letter 'y' or 'Y'. (default: not written) write thermodynamics = no -7f) Do you want to write a table of perturbations to files for certain - wavenumbers k? Dimension of k is 1/Mpc. The actual wave numbers are chosen - such that they are as close as possible to the requested k-values. +# 7f) Do you want to write a table of perturbations to files for certain +# wavenumbers k? Dimension of k is 1/Mpc. The actual wave numbers are chosen +# such that they are as close as possible to the requested k-values. k_output_values = #0.01, 0.1, 0.0001 -7g) Do you want to write the primordial scalar(/tensor) spectrum in a file, - with columns k [1/Mpc], P_s(k) [dimensionless], ( P_t(k) [dimensionless])? - File created if 'write primordial' set to something containing the letter - 'y' or 'Y', file written, otherwise not written (default: not written) +# 7g) Do you want to write the primordial scalar(/tensor) spectrum in a file, +# with columns k [1/Mpc], P_s(k) [dimensionless], ( P_t(k) [dimensionless])? +# File created if 'write primordial' set to something containing the letter +# 'y' or 'Y', file written, otherwise not written (default: not written) write primordial = no -7h) Do you want to have all input/precision parameters which have been read - written in file 'parameters.ini', and those not written in file - 'unused_parameters' ? If 'write parameters' set to something - containing the letter 'y' or 'Y', file written, otherwise not written - (default: not written) +# 7h) Do you want to have all input/precision parameters which have been read +# written in file 'parameters.ini', and those not written in file +# 'unused_parameters' ? If 'write parameters' set to something +# containing the letter 'y' or 'Y', file written, otherwise not written +# (default: not written) write parameters = yeap -7i) Do you want a warning written in the standard output when an input - parameter or value could not be interpreted ? If 'write warnings' set to - something containing the letter 'y' or 'Y', warnings written, otherwise not - written (default: not written) +# 7i) Do you want a warning written in the standard output when an input +# parameter or value could not be interpreted ? If 'write warnings' set to +# something containing the letter 'y' or 'Y', warnings written, otherwise not +# written (default: not written) write warnings = ----------------------------------------------------- -----> amount of information sent to standard output: ----------------------------------------------------- - -Increase integer values to make each module more talkative (default: all set to 0) - -input_verbose = 1 -background_verbose = 1 -thermodynamics_verbose = 0 -perturbations_verbose = 0 -transfer_verbose = 0 -primordial_verbose = 0 -spectra_verbose = 0 -nonlinear_verbose = 0 -lensing_verbose = 1 -output_verbose = 1 +# ---------------------------------------------------- +# ----> amount of information sent to standard output: +# ---------------------------------------------------- + +# Increase integer values to make each module more talkative (default: all set to 0) + +input_verbose = 2 +background_verbose = 2 +thermodynamics_verbose = 2 +perturbations_verbose = 2 +transfer_verbose = 2 +primordial_verbose = 2 +spectra_verbose = 2 +nonlinear_verbose = 2 +lensing_verbose = 2 +output_verbose = 2 diff --git a/class/external_Pk/Pk_example.dat b/class/external_Pk/Pk_example.dat new file mode 100644 index 00000000..cce8c798 --- /dev/null +++ b/class/external_Pk/Pk_example.dat @@ -0,0 +1,1401 @@ +9.99999999999999955e-07 3.32701686778166524e-09 +1.01157945425989849e-06 3.32557696044656018e-09 +1.02329299228075415e-06 3.32413767629228539e-09 +1.03514216667934384e-06 3.32269901504913284e-09 +1.04712854805089959e-06 3.32126097644751113e-09 +1.059253725177289e-06 3.31982356021794633e-09 +1.07151930523760658e-06 3.31838676609108071e-09 +1.08392691402120369e-06 3.31695059379767237e-09 +1.09647819614318531e-06 3.31551504306859685e-09 +1.10917481526240141e-06 3.31408011363484551e-09 +1.1220184543019639e-06 3.31264580522752756e-09 +1.13501081567231556e-06 3.3112121175778664e-09 +1.14815362149688337e-06 3.30977905041720367e-09 +1.16144861384034336e-06 3.30834660347699602e-09 +1.1748975549395302e-06 3.30691477648881672e-09 +1.18850222743701909e-06 3.3054835691843561e-09 +1.2022644346174136e-06 3.30405298129541863e-09 +1.21618600064636887e-06 3.30262301255392747e-09 +1.23026877081238242e-06 3.3011936626919187e-09 +1.24451461177138599e-06 3.29976493144154712e-09 +1.25892541179416823e-06 3.29833681853508248e-09 +1.27350308101666285e-06 3.29690932370490951e-09 +1.28824955169313518e-06 3.29548244668353e-09 +1.30316677845230061e-06 3.29405618720356113e-09 +1.31825673855640845e-06 3.29263054499773588e-09 +1.33352143216332558e-06 3.29120551979890179e-09 +1.34896288259165522e-06 3.28978111134002429e-09 +1.36458313658892618e-06 3.28835731935418252e-09 +1.38038426460288654e-06 3.28693414357457145e-09 +1.39636836105593931e-06 3.28551158373450185e-09 +1.41253754462275605e-06 3.28408963956739946e-09 +1.42889395851110465e-06 3.28266831080680665e-09 +1.44543977074592942e-06 3.28124759718637997e-09 +1.46217717445672011e-06 3.27982749843989049e-09 +1.4791083881682094e-06 3.27840801430122677e-09 +1.49623565609443541e-06 3.27698914450439069e-09 +1.51356124843621036e-06 3.27557088878349993e-09 +1.53108746168203239e-06 3.27415324687278673e-09 +1.54881661891248364e-06 3.27273621850659957e-09 +1.56675107010815143e-06 3.27131980341940022e-09 +1.58489319246111599e-06 3.26990400134576711e-09 +1.60324539069004414e-06 3.26848881202039198e-09 +1.62181009735893272e-06 3.2670742351780828e-09 +1.64058977319954219e-06 3.26566027055376044e-09 +1.65958690743756367e-06 3.26424691788246282e-09 +1.67880401812256343e-06 3.26283417689934077e-09 +1.69824365246174758e-06 3.26142204733966051e-09 +1.71790838715759147e-06 3.26001052893880284e-09 +1.73780082874937889e-06 3.25859962143226267e-09 +1.75792361395869617e-06 3.25718932455564953e-09 +1.7782794100389265e-06 3.25577963804468788e-09 +1.79887091512879167e-06 3.25437056163521635e-09 +1.81970085860998745e-06 3.2529620950631865e-09 +1.84077200146895999e-06 3.25155423806466648e-09 +1.86208713666287174e-06 3.25014699037583739e-09 +1.88364908948980499e-06 3.24874035173299446e-09 +1.90546071796325172e-06 3.24733432187254707e-09 +1.92752491319094052e-06 3.24592890053101959e-09 +1.94984459975805007e-06 3.24452408744504888e-09 +1.97242273611485878e-06 3.24311988235138719e-09 +1.99526231496888464e-06 3.24171628498689968e-09 +2.01836636368156641e-06 3.24031329508856648e-09 +2.04173794466953494e-06 3.23891091239348066e-09 +2.065380155810535e-06 3.23750913663884858e-09 +2.08929613085404531e-06 3.2361079675619916e-09 +2.11348903983665289e-06 3.23470740490034481e-09 +2.13796208950223857e-06 3.23330744839145578e-09 +2.16271852372702703e-06 3.23190809777298626e-09 +2.18776162394955936e-06 3.23050935278271173e-09 +2.21309470960564487e-06 3.22911121315852056e-09 +2.2387211385683469e-06 3.22771367863841529e-09 +2.26464430759306726e-06 3.22631674896051178e-09 +2.29086765276778108e-06 3.22492042386303838e-09 +2.31739464996848689e-06 3.2235247030843372e-09 +2.34422881531993065e-06 3.22212958636286446e-09 +2.37137370566166411e-06 3.22073507343718892e-09 +2.39883291901949943e-06 3.21934116404599181e-09 +2.42661009508242485e-06 3.21794785792806809e-09 +2.45470891568503983e-06 3.21655515482232567e-09 +2.48313310529557989e-06 3.21516305446778574e-09 +2.5118864315095899e-06 3.21377155660358242e-09 +2.54097270554931515e-06 3.21238066096896234e-09 +2.5703957827688744e-06 3.21099036730328459e-09 +2.60015956316528288e-06 3.20960067534602244e-09 +2.6302679918953931e-06 3.20821158483676082e-09 +2.66072505979882126e-06 3.20682309551519717e-09 +2.69153480392692776e-06 3.20543520712114306e-09 +2.72270130807792478e-06 3.20404791939452132e-09 +2.75422870333817904e-06 3.20266123207536688e-09 +2.78612116862978341e-06 3.20127514490382879e-09 +2.81838293126446741e-06 3.19988965762016822e-09 +2.85101826750392339e-06 3.19850476996475716e-09 +2.88403150312662028e-06 3.19712048167808217e-09 +2.91742701400118136e-06 3.19573679250074022e-09 +2.95120922666640065e-06 3.19435370217344164e-09 +2.98538261891797501e-06 3.19297121043700965e-09 +3.01995172040203199e-06 3.19158931703237748e-09 +3.05492111321552923e-06 3.19020802170059169e-09 +3.09029543251360714e-06 3.18882732418281216e-09 +3.12607936712397199e-06 3.18744722422030838e-09 +3.16227766016839656e-06 3.18606772155446357e-09 +3.19889510969141555e-06 3.18468881592677221e-09 +3.23593656929630038e-06 3.18331050707884128e-09 +3.27340694878840014e-06 3.18193279475238817e-09 +3.31131121482592974e-06 3.18055567868924321e-09 +3.34965439157829578e-06 3.17917915863134878e-09 +3.38844156139204531e-06 3.17780323432075771e-09 +3.42767786546452376e-06 3.17642790549963574e-09 +3.46736850452533717e-06 3.17505317191025944e-09 +3.50751873952570145e-06 3.17367903329501665e-09 +3.54813389233577665e-06 3.17230548939640729e-09 +3.58921934645007473e-06 3.17093253995704334e-09 +3.63078054770103653e-06 3.16956018471964642e-09 +3.67282300498087032e-06 3.16818842342705104e-09 +3.71535229097174963e-06 3.16681725582220213e-09 +3.75837404288446625e-06 3.16544668164815671e-09 +3.80189396320563693e-06 3.16407670064808141e-09 +3.84591782045356131e-06 3.16270731256525659e-09 +3.89045144994283218e-06 3.16133851714307097e-09 +3.93550075455780151e-06 3.15997031412502619e-09 +3.98107170553499961e-06 3.1586027032547343e-09 +4.02717034325461879e-06 3.1572356842759182e-09 +4.07380277804115604e-06 3.15586925693241165e-09 +4.1209751909733315e-06 3.15450342096815964e-09 +4.16869383470338365e-06 3.15313817612721719e-09 +4.2169650342858529e-06 3.15177352215375139e-09 +4.26579518801595789e-06 3.15040945879203936e-09 +4.31519076827768383e-06 3.14904598578646823e-09 +4.36515832240169219e-06 3.14768310288153762e-09 +4.41570447353315848e-06 3.14632080982185511e-09 +4.46683592150966515e-06 3.14495910635214035e-09 +4.518559443749258e-06 3.14359799221722426e-09 +4.57088189614878569e-06 3.14223746716204651e-09 +4.62381021399263895e-06 3.14087753093165846e-09 +4.67735141287201854e-06 3.13951818327122107e-09 +4.73151258961484191e-06 3.13815942392600572e-09 +4.78630092322642153e-06 3.1368012526413934e-09 +4.84172367584103189e-06 3.13544366916287719e-09 +4.89778819368450149e-06 3.13408667323605849e-09 +4.95450190804794238e-06 3.1327302646066496e-09 +5.01187233627276393e-06 3.1313744430204728e-09 +5.06990708274708519e-06 3.13001920822346038e-09 +5.12861383991369129e-06 3.12866455996165385e-09 +5.18800038928965452e-06 3.12731049798120593e-09 +5.24807460249777053e-06 3.12595702202837817e-09 +5.30884444230992931e-06 3.12460413184954249e-09 +5.37031796370257413e-06 3.12325182719118087e-09 +5.43250331492437979e-06 3.12190010779988322e-09 +5.49540873857629419e-06 3.12054897342235195e-09 +5.55904257270408545e-06 3.11919842380539699e-09 +5.62341325190354118e-06 3.11784845869593829e-09 +5.6885293084384656e-06 3.11649907784100543e-09 +5.7543993733716218e-06 3.11515028098773838e-09 +5.82103217770876751e-06 3.11380206788338425e-09 +5.88843655355594431e-06 3.11245443827530264e-09 +5.95662143529016024e-06 3.11110739191095945e-09 +6.02559586074363413e-06 3.10976092853793224e-09 +6.09536897240174922e-06 3.10841504790390611e-09 +6.16595001861488036e-06 3.10706974975667658e-09 +6.23734835482425226e-06 3.10572503384414754e-09 +6.30957344480199317e-06 3.1043808999143329e-09 +6.38263486190554834e-06 3.10303734771535408e-09 +6.45654229034661755e-06 3.10169437699544338e-09 +6.53130552647478693e-06 3.10035198750294059e-09 +6.60693448007602453e-06 3.09901017898629472e-09 +6.68343917568621162e-06 3.09766895119406478e-09 +6.7608297539198841e-06 3.09632830387491649e-09 +6.83911647281436111e-06 3.09498823677762641e-09 +6.9183097091894337e-06 3.09364874965107865e-09 +6.99841996002280485e-06 3.09230984224426689e-09 +7.07945784384145037e-06 3.09097151430629196e-09 +7.16143410212909289e-06 3.0896337655863651e-09 +7.24435960074997444e-06 3.08829659583380468e-09 +7.32824533138911571e-06 3.08696000479803784e-09 +7.4131024130092517e-06 3.08562399222860089e-09 +7.49894209332463598e-06 3.08428855787513813e-09 +7.58577575029191697e-06 3.08295370148740178e-09 +7.67361489361827076e-06 3.0816194228152524e-09 +7.76247116628700062e-06 3.08028572160865979e-09 +7.85235634610080224e-06 3.07895259761770123e-09 +7.94328234724290137e-06 3.07762005059256239e-09 +8.03526122185626116e-06 3.07628808028353566e-09 +8.12830516164108297e-06 3.07495668644102423e-09 +8.22242649947080286e-06 3.07362586881553679e-09 +8.31763771102680255e-06 3.07229562715769161e-09 +8.41395141645204474e-06 3.07096596121821452e-09 +8.51138038202385979e-06 3.06963687074793844e-09 +8.60993752184610247e-06 3.06830835549780509e-09 +8.70963589956090384e-06 3.06698041521886328e-09 +8.81048873008024044e-06 3.06565304966227063e-09 +8.91250938133755602e-06 3.06432625857929061e-09 +9.01571137605967146e-06 3.06300004172129631e-09 +9.1201083935592014e-06 3.0616743988397671e-09 +9.22571427154773663e-06 3.06034932968629113e-09 +9.33254300797001774e-06 3.05902483401256202e-09 +9.44060876285934213e-06 3.05770091157038339e-09 +9.54992586021447047e-06 3.05637756211166434e-09 +9.66050878989824593e-06 3.05505478538842192e-09 +9.77237220955822109e-06 3.05373258115278152e-09 +9.88553094656950416e-06 3.05241094915697402e-09 +1.00000000000001177e-05 3.05108988915333865e-09 +1.01157945425991052e-05 3.04976940089432216e-09 +1.02329299228076635e-05 3.04844948413247638e-09 +1.03514216667935633e-05 3.04713013862046354e-09 +1.04712854805091226e-05 3.04581136411104971e-09 +1.05925372517730187e-05 3.04449316035711012e-09 +1.07151930523761971e-05 3.04317552711162631e-09 +1.08392691402121707e-05 3.04185846412768569e-09 +1.09647819614319874e-05 3.04054197115848445e-09 +1.109174815262415e-05 3.03922604795732384e-09 +1.12201845430197758e-05 3.03791069427761304e-09 +1.13501081567232945e-05 3.03659590987286753e-09 +1.1481536214968973e-05 3.03528169449670949e-09 +1.16144861384035763e-05 3.03396804790286783e-09 +1.17489755493954464e-05 3.03265496984517689e-09 +1.18850222743703387e-05 3.03134246007757982e-09 +1.20226443461742859e-05 3.03003051835412479e-09 +1.2161860006463839e-05 3.0287191444289667e-09 +1.23026877081239767e-05 3.02740833805636673e-09 +1.24451461177140149e-05 3.02609809899069194e-09 +1.2589254117941839e-05 3.02478842698641693e-09 +1.27350308101667865e-05 3.02347932179812176e-09 +1.28824955169315128e-05 3.02217078318049279e-09 +1.303166778452317e-05 3.02086281088832224e-09 +1.31825673855642505e-05 3.01955540467650948e-09 +1.33352143216334235e-05 3.01824856430005849e-09 +1.34896288259167228e-05 3.01694228951408039e-09 +1.36458313658894346e-05 3.01563658007379258e-09 +1.38038426460290403e-05 3.01433143573451669e-09 +1.39636836105595714e-05 3.01302685625168271e-09 +1.41253754462277413e-05 3.01172284138082361e-09 +1.42889395851112303e-05 3.01041939087758073e-09 +1.44543977074594801e-05 3.00911650449769963e-09 +1.46217717445673904e-05 3.00781418199703215e-09 +1.47910838816822867e-05 3.00651242313153563e-09 +1.49623565609445494e-05 3.00521122765727365e-09 +1.51356124843623001e-05 3.00391059533041366e-09 +1.53108746168205238e-05 3.00261052590723101e-09 +1.5488166189125041e-05 3.00131101914410448e-09 +1.56675107010817227e-05 3.00001207479751953e-09 +1.58489319246113716e-05 2.99871369262406669e-09 +1.60324539069006541e-05 2.99741587238044194e-09 +1.62181009735895424e-05 2.9961186138234451e-09 +1.64058977319956409e-05 2.9948219167099839e-09 +1.65958690743758591e-05 2.9935257807970695e-09 +1.67880401812258588e-05 2.99223020584181809e-09 +1.69824365246177032e-05 2.99093519160145216e-09 +1.71790838715761468e-05 2.98964073783329842e-09 +1.73780082874940248e-05 2.98834684429478865e-09 +1.75792361395871989e-05 2.98705351074346049e-09 +1.77827941003895068e-05 2.98576073693695456e-09 +1.79887091512881624e-05 2.98446852263301862e-09 +1.81970085861001219e-05 2.98317686758950341e-09 +1.84077200146898498e-05 2.98188577156436594e-09 +1.86208713666289723e-05 2.98059523431566706e-09 +1.88364908948983091e-05 2.97930525560157308e-09 +1.90546071796327789e-05 2.97801583518035409e-09 +1.92752491319096729e-05 2.97672697281038528e-09 +1.94984459975807709e-05 2.97543866825014644e-09 +1.97242273611488589e-05 2.97415092125822161e-09 +1.99526231496891216e-05 2.97286373159329945e-09 +2.01836636368159411e-05 2.97157709901417369e-09 +2.04173794466956298e-05 2.97029102327974143e-09 +2.06538015581056363e-05 2.96900550414900445e-09 +2.08929613085407411e-05 2.96772054138106953e-09 +2.11348903983668211e-05 2.96643613473514648e-09 +2.13796208950226788e-05 2.96515228397055014e-09 +2.16271852372705651e-05 2.96386898884669916e-09 +2.18776162394958951e-05 2.96258624912311767e-09 +2.2130947096056752e-05 2.96130406455943111e-09 +2.23872113856837756e-05 2.96002243491537164e-09 +2.26464430759309826e-05 2.95874135995077357e-09 +2.29086765276781217e-05 2.95746083942557627e-09 +2.3173946499685184e-05 2.95618087309982209e-09 +2.3442288153199625e-05 2.95490146073365925e-09 +2.37137370566169638e-05 2.95362260208733649e-09 +2.39883291901953238e-05 2.95234429692120924e-09 +2.42661009508245814e-05 2.9510665449957351e-09 +2.45470891568507362e-05 2.94978934607147588e-09 +2.48313310529561428e-05 2.94851269990909721e-09 +2.51188643150962488e-05 2.9472366062693673e-09 +2.54097270554935047e-05 2.94596106491315939e-09 +2.57039578276890989e-05 2.9446860756014489e-09 +2.60015956316531888e-05 2.94341163809531463e-09 +2.63026799189542952e-05 2.94213775215594084e-09 +2.66072505979885794e-05 2.94086441754461274e-09 +2.69153480392696478e-05 2.93959163402271973e-09 +2.72270130807796222e-05 2.93831940135175504e-09 +2.75422870333821715e-05 2.93704771929331405e-09 +2.7861211686298217e-05 2.93577658760909635e-09 +2.81838293126450603e-05 2.93450600606090414e-09 +2.85101826750396218e-05 2.93323597441064214e-09 +2.8840315031266595e-05 2.93196649242031934e-09 +2.91742701400122125e-05 2.93069755985204769e-09 +2.95120922666644097e-05 2.92942917646804048e-09 +2.98538261891801567e-05 2.92816134203061562e-09 +3.01995172040207307e-05 2.9268940563021932e-09 +3.05492111321557124e-05 2.92562731904529586e-09 +3.09029543251364966e-05 2.92436113002254924e-09 +3.12607936712401476e-05 2.92309548899668196e-09 +3.16227766016843984e-05 2.92183039573052563e-09 +3.19889510969145969e-05 2.92056584998701399e-09 +3.23593656929634527e-05 2.91930185152918337e-09 +3.27340694878844562e-05 2.91803840012017186e-09 +3.31131121482597539e-05 2.91677549552322175e-09 +3.34965439157834178e-05 2.91551313750167707e-09 +3.3884415613920913e-05 2.91425132581898403e-09 +3.42767786546457068e-05 2.91299006023869139e-09 +3.46736850452538452e-05 2.91172934052444966e-09 +3.50751873952574931e-05 2.91046916644001317e-09 +3.54813389233582519e-05 2.90920953774923674e-09 +3.5892193464501236e-05 2.907950454216079e-09 +3.63078054770108583e-05 2.9066919156045991e-09 +3.67282300498092038e-05 2.90543392167895915e-09 +3.71535229097180028e-05 2.90417647220342426e-09 +3.75837404288451783e-05 2.90291956694235963e-09 +3.80189396320568894e-05 2.90166320566023385e-09 +3.84591782045361349e-05 2.90040738812161683e-09 +3.89045144994288521e-05 2.89915211409118025e-09 +3.93550075455785471e-05 2.89789738333369876e-09 +3.98107170553505348e-05 2.8966431956140475e-09 +4.027170343254673e-05 2.89538955069720379e-09 +4.07380277804121076e-05 2.8941364483482475e-09 +4.1209751909733869e-05 2.8928838883323586e-09 +4.16869383470343989e-05 2.89163187041481963e-09 +4.21696503428590965e-05 2.89038039436101446e-09 +4.26579518801601515e-05 2.88912945993642911e-09 +4.31519076827774245e-05 2.88787906690665052e-09 +4.36515832240175149e-05 2.88662921503736613e-09 +4.41570447353321828e-05 2.88537990409436762e-09 +4.46683592150972562e-05 2.88413113384354509e-09 +4.5185594437493195e-05 2.88288290405089161e-09 +4.57088189614884786e-05 2.88163521448250079e-09 +4.62381021399270231e-05 2.88038806490456753e-09 +4.67735141287208258e-05 2.87914145508338851e-09 +4.73151258961490662e-05 2.87789538478536046e-09 +4.78630092322648675e-05 2.87664985377698272e-09 +4.84172367584109796e-05 2.87540486182485468e-09 +4.8977881936845679e-05 2.87416040869567669e-09 +4.95450190804800963e-05 2.87291649415625038e-09 +5.01187233627283153e-05 2.87167311797347834e-09 +5.06990708274715363e-05 2.87043027991436446e-09 +5.1286138399137599e-05 2.86918797974601191e-09 +5.18800038928972398e-05 2.867946217235626e-09 +5.2480746024978405e-05 2.86670499215051339e-09 +5.30884444230999962e-05 2.86546430425807958e-09 +5.37031796370264494e-05 2.86422415332583221e-09 +5.43250331492445179e-05 2.8629845391213782e-09 +5.4954087385763667e-05 2.86174546141242662e-09 +5.55904257270415863e-05 2.86050691996678664e-09 +5.62341325190361538e-05 2.85926891455236709e-09 +5.68852930843854099e-05 2.85803144493717773e-09 +5.75439937337169787e-05 2.85679451088932881e-09 +5.82103217770884476e-05 2.8555581121770315e-09 +5.88843655355602224e-05 2.85432224856859581e-09 +5.95662143529023902e-05 2.85308691983243352e-09 +6.02559586074371409e-05 2.85185212573705565e-09 +6.09536897240183003e-05 2.85061786605107413e-09 +6.16595001861496201e-05 2.84938414054320018e-09 +6.2373483548243351e-05 2.84815094898224589e-09 +6.30957344480207702e-05 2.84691829113712308e-09 +6.38263486190563338e-05 2.84568616677684403e-09 +6.45654229034670361e-05 2.84445457567052072e-09 +6.531305526474874e-05 2.84322351758736396e-09 +6.60693448007611245e-05 2.84199299229668549e-09 +6.68343917568630107e-05 2.84076299956789837e-09 +6.76082975391997473e-05 2.83953353917051245e-09 +6.83911647281445259e-05 2.83830461087413849e-09 +6.91830970918952653e-05 2.83707621444848858e-09 +6.99841996002289904e-05 2.835848349663372e-09 +7.07945784384154524e-05 2.83462101628869978e-09 +7.16143410212918895e-05 2.83339421409448139e-09 +7.24435960075007151e-05 2.83216794285082553e-09 +7.32824533138921413e-05 2.83094220232794063e-09 +7.41310241300935114e-05 2.82971699229613557e-09 +7.49894209332473746e-05 2.82849231252581769e-09 +7.58577575029201879e-05 2.82726816278749358e-09 +7.67361489361837308e-05 2.82604454285176994e-09 +7.76247116628710362e-05 2.82482145248935189e-09 +7.85235634610090727e-05 2.82359889147104422e-09 +7.94328234724300775e-05 2.82237685956775098e-09 +8.03526122185636789e-05 2.8211553565504755e-09 +8.12830516164119105e-05 2.81993438219031912e-09 +8.22242649947091229e-05 2.81871393625848451e-09 +8.31763771102691368e-05 2.81749401852627028e-09 +8.41395141645215756e-05 2.81627462876507682e-09 +8.51138038202397363e-05 2.81505576674640208e-09 +8.609937521846218e-05 2.81383743224184289e-09 +8.70963589956102107e-05 2.81261962502309575e-09 +8.81048873008035869e-05 2.81140234486195476e-09 +8.91250938133767562e-05 2.81018559153031411e-09 +9.01571137605979174e-05 2.80896936480016561e-09 +9.12010839355932405e-05 2.80775366444360031e-09 +9.22571427154786166e-05 2.8065384902328073e-09 +9.3325430079701431e-05 2.80532384194007533e-09 +9.44060876285946919e-05 2.80410971933779119e-09 +9.54992586021459786e-05 2.80289612219843968e-09 +9.66050878989837603e-05 2.80168305029460485e-09 +9.77237220955835221e-05 2.80047050339896796e-09 +9.88553094656963697e-05 2.79925848128431077e-09 +0.000100000000000002526 2.7980469837235114e-09 +0.000101157945425992411 2.79683601048954683e-09 +0.000102329299228078014 2.79562556135549246e-09 +0.000103514216667937022 2.79441563609452213e-09 +0.000104712854805092632 2.7932062344799077e-09 +0.0001059253725177316 2.79199735628501824e-09 +0.000107151930523763394 2.79078900128332288e-09 +0.000108392691402123151 2.78958116924838713e-09 +0.000109647819614321334 2.78837385995387536e-09 +0.000110917481526242974 2.7871670731735483e-09 +0.000112201845430199255 2.78596080868126674e-09 +0.000113501081567234463 2.78475506625098872e-09 +0.000114815362149691275 2.78354984565676941e-09 +0.000116144861384037318 2.78234514667276206e-09 +0.000117489755493956037 2.78114096907321749e-09 +0.000118850222743704966 2.77993731263248579e-09 +0.000120226443461744455 2.77873417712501176e-09 +0.000121618600064640013 2.77753156232534071e-09 +0.000123026877081241413 2.77632946800811391e-09 +0.000124451461177141809 2.77512789394807022e-09 +0.000125892541179420077 2.77392683992004735e-09 +0.000127350308101669562 2.77272630569897814e-09 +0.000128824955169316835 2.77152629105989512e-09 +0.000130316677845233425 2.77032679577792633e-09 +0.000131825673855644237 2.76912781962829868e-09 +0.000133352143216335973 2.76792936238633544e-09 +0.000134896288259168994 2.76673142382745789e-09 +0.000136458313658896138 2.76553400372718288e-09 +0.000138038426460292233 2.76433710186112649e-09 +0.000139636836105597574 2.76314071800500036e-09 +0.00014125375446227931 2.76194485193461412e-09 +0.000142889395851114224 2.76074950342587382e-09 +0.000144543977074596756 2.75955467225478306e-09 +0.000146217717445675893 2.75836035819744143e-09 +0.000147910838816824877 2.75716656103004695e-09 +0.00014962356560944753 2.75597328052889316e-09 +0.000151356124843625054 2.75478051647037081e-09 +0.000153108746168207298 2.75358826863096743e-09 +0.00015488166189125247 2.75239653678726775e-09 +0.000156675107010819314 2.75120532071595325e-09 +0.00015848931924611581 2.75001462019380015e-09 +0.000160324539069008661 2.74882443499768393e-09 +0.000162181009735897565 2.74763476490457477e-09 +0.000164058977319958571 2.74644560969154006e-09 +0.000165958690743760759 2.74525696913574436e-09 +0.00016788040181226079 2.74406884301444738e-09 +0.000169824365246179254 2.74288123110500602e-09 +0.000171790838715763704 2.74169413318487311e-09 +0.000173780082874942511 2.74050754903159828e-09 +0.0001757923613958743 2.73932147842282753e-09 +0.000177827941003897393 2.73813592113630156e-09 +0.000179887091512883962 2.73695087694985952e-09 +0.000181970085861003604 2.73576634564143566e-09 +0.000184077200146900917 2.73458232698905939e-09 +0.000186208713666292149 2.73339882077085851e-09 +0.000188364908948985524 2.73221582676505393e-09 +0.000190546071796330262 2.73103334474996537e-09 +0.000192752491319099229 2.72985137450400603e-09 +0.00019498445997581025 2.72866991580568631e-09 +0.000197242273611491164 2.7274889684336138e-09 +0.000199526231496893839 2.72630853216648873e-09 +0.000201836636368162047 2.72512860678310937e-09 +0.000204173794466958974 2.72394919206236951e-09 +0.000206538015581059074 2.72277028778325806e-09 +0.000208929613085410162 2.72159189372485949e-09 +0.000211348903983670969 2.72041400966635463e-09 +0.00021379620895022958 2.719236635387019e-09 +0.000216271852372708497 2.71805977066622453e-09 +0.000218776162394961824 2.71688341528343824e-09 +0.00022130947096057042 2.71570756901822228e-09 +0.000223872113856840691 2.71453223165023436e-09 +0.000226464430759312774 2.71335740295922729e-09 +0.000229086765276784198 2.71218308272505068e-09 +0.000231739464996854835 2.71100927072764802e-09 +0.000234422881531999279 2.70983596674705792e-09 +0.000237137370566172694 2.70866317056341452e-09 +0.000239883291901956308 2.70749088195694794e-09 +0.000242661009508248924 2.70631910070798217e-09 +0.0002454708915685105 2.70514782659693632e-09 +0.000248313310529564579 2.70397705940432629e-09 +0.000251188643150965652 2.70280679891075979e-09 +0.000254097270554938266 2.70163704489694297e-09 +0.000257039578276894228 2.70046779714367504e-09 +0.000260015956316535127 2.69929905543184991e-09 +0.000263026799189546218 2.69813081954245663e-09 +0.000266072505979889128 2.69696308925657977e-09 +0.000269153480392699852 2.69579586435539782e-09 +0.000272270130807799617 2.69462914462018311e-09 +0.00027542287033382513 2.6934629298323052e-09 +0.000278612116862985619 2.69229721977322629e-09 +0.000281838293126454066 2.69113201422450284e-09 +0.000285101826750399755 2.68996731296778774e-09 +0.000288403150312669548 2.68880311578482646e-09 +0.000291742701400125751 2.68763942245746089e-09 +0.000295120922666647736 2.6864762327676247e-09 +0.000298538261891805273 2.68531354649734795e-09 +0.000301995172040211068 2.68415136342875498e-09 +0.000305492111321560892 2.68298968334406444e-09 +0.000309029543251368747 2.68182850602558721e-09 +0.000312607936712405352 2.68066783125573095e-09 +0.000316227766016847914 2.67950765881699638e-09 +0.000319889510969149926 2.67834798849197768e-09 +0.000323593656929638512 2.6771888200633654e-09 +0.000327340694878848601 2.67603015331394192e-09 +0.000331131121482601673 2.67487198802658349e-09 +0.000334965439157838406 2.67371432398426274e-09 +0.000338844156139213467 2.67255716097004369e-09 +0.000342767786546461432 2.67140049876708508e-09 +0.000346736850452542857 2.67024433715863994e-09 +0.000350751873952579363 2.6690886759280548e-09 +0.000354813389233586977 2.66793351485877003e-09 +0.000358921934645016873 2.66677885373431992e-09 +0.000363078054770113164 2.66562469233833139e-09 +0.000367282300498096646 2.66447103045452648e-09 +0.000371535229097184677 2.66331786786672073e-09 +0.000375837404288456459 2.66216520435882104e-09 +0.000380189396320573651 2.6610130397148303e-09 +0.000384591782045366174 2.65986137371884445e-09 +0.0003890451449942934 2.65871020615505205e-09 +0.000393550075455790431 2.65755953680773557e-09 +0.000398107170553510417 2.65640936546127013e-09 +0.00040271703432547245 2.65525969190012636e-09 +0.000407380277804126267 2.65411051590886508e-09 +0.000412097519097343935 2.65296183727214222e-09 +0.000416869383470349329 2.65181365577470718e-09 +0.000421696503428596386 2.6506659712014012e-09 +0.00042657951880160699 2.64951878333715897e-09 +0.000431519076827779761 2.64837209196700989e-09 +0.000436515832240180692 2.64722589687607436e-09 +0.000441570447353327412 2.64608019784956666e-09 +0.000446683592150978227 2.64493499467279414e-09 +0.000451855944374937655 2.64379028713115636e-09 +0.000457088189614890546 2.64264607501014678e-09 +0.000462381021399276004 2.64150235809535025e-09 +0.000467735141287214126 2.64035913617244636e-09 +0.000473151258961496612 2.63921640902720607e-09 +0.000478630092322654692 2.63807417644549342e-09 +0.000484172367584115922 2.63693243821326509e-09 +0.000489778819368463011 2.63579119411656997e-09 +0.000495450190804807211 2.63465044394155087e-09 +0.00050118723362728955 2.63351018747444156e-09 +0.000506990708274721882 2.6323704245015693e-09 +0.000512861383991382617 2.63123115480935399e-09 +0.000518800038928979106 2.63009237818430693e-09 +0.000524807460249790826 2.62895409441303289e-09 +0.000530884444231006819 2.62781630328222764e-09 +0.000537031796370271474 2.62667900457868164e-09 +0.000543250331492452199 2.62554219808927471e-09 +0.000549540873857643744 2.62440588360098179e-09 +0.000555904257270423033 2.62327006090086714e-09 +0.00056234132519036883 2.62213472977608934e-09 +0.000568852930843861417 2.62099989001389836e-09 +0.000575439937337177132 2.61986554140163641e-09 +0.000582103217770891862 2.61873168372673709e-09 +0.000588843655355609651 2.61759831677672665e-09 +0.000595662143529031383 2.61646544033922358e-09 +0.00060255958607437893 2.61533305420193735e-09 +0.000609536897240190606 2.61420115815266966e-09 +0.000616595001861503953 2.61306975197931487e-09 +0.000623734835482441289 2.61193883546985788e-09 +0.000630957344480215644 2.61080840841237628e-09 +0.000638263486190571334 2.6096784705950382e-09 +0.000645654229034678439 2.60854902180610485e-09 +0.000653130552647495613 2.60742006183392925e-09 +0.000660693448007619566 2.60629159046695416e-09 +0.000668343917568638536 2.60516360749371541e-09 +0.000676082975392006038 2.60403611270283941e-09 +0.000683911647281453959 2.6029091058830456e-09 +0.000691830970918961489 2.6017825868231428e-09 +0.000699841996002298849 2.60065655531203326e-09 +0.000707945784384163604 2.59953101113870941e-09 +0.00071614341021292811 2.59840595409225468e-09 +0.000724435960075016502 2.5972813839618443e-09 +0.000732824533138930873 2.59615730053674491e-09 +0.000741310241300944628 2.59503370360631455e-09 +0.000749894209332483287 2.59391059296000185e-09 +0.000758577575029211609 2.59278796838734641e-09 +0.000767361489361847201 2.59166582967798008e-09 +0.000776247116628720336 2.59054417662162443e-09 +0.00078523563461010081 2.58942300900809206e-09 +0.000794328234724310913 2.58830232662728819e-09 +0.000803526122185647062 2.58718212926920695e-09 +0.000812830516164129405 2.58606241672393514e-09 +0.000822242649947101719 2.58494318878164848e-09 +0.000831763771102701993 2.58382444523261449e-09 +0.000841395141645226463 2.58270618586719209e-09 +0.000851138038202408232 2.58158841047583081e-09 +0.000860993752184632832 2.58047111884906907e-09 +0.000870963589956113247 2.57935431077753877e-09 +0.000881048873008047091 2.5782379860519595e-09 +0.000891250938133779 2.57712214446314306e-09 +0.000901571137605990829 2.57600678580199268e-09 +0.000912010839355944115 2.57489190985950008e-09 +0.000922571427154798038 2.5737775164267488e-09 +0.000933254300797026399 2.57266360529491131e-09 +0.000944060876285959198 2.57155017625525271e-09 +0.000954992586021472228 2.57043722909912704e-09 +0.00096605087898985018 2.56932476361797807e-09 +0.00097723722095584796 2.56821277960334099e-09 +0.000988553094656976572 2.56710127684684114e-09 +0.00100000000000003818 2.56599025514019279e-09 +0.00101157945425993726 2.56487971427520244e-09 +0.00102329299228079342 2.56376965404376426e-09 +0.00103514216667938358 2.56266007423786468e-09 +0.00104712854805093973 2.56155097464957942e-09 +0.00105925372517732966 2.56044235507107316e-09 +0.00107151930523764782 2.55933421529460157e-09 +0.00108392691402124544 2.55822655511251003e-09 +0.00109647819614322743 2.55711937431723412e-09 +0.00110917481526244402 2.55601267270129834e-09 +0.00112201845430200705 2.55490645005731816e-09 +0.00113501081567235918 2.55380070617799799e-09 +0.00114815362149692755 2.55269544085613156e-09 +0.00116144861384038806 2.55159065388460402e-09 +0.00117489755493957546 2.55048634505638818e-09 +0.00118850222743706498 2.54938251416454787e-09 +0.00120226443461746006 2.54827916100223539e-09 +0.00121618600064641582 2.54717628536269242e-09 +0.00123026877081243002 2.54607388703925241e-09 +0.00124451461177143424 2.54497196582533612e-09 +0.00125892541179421693 2.54387052151445362e-09 +0.00127350308101671205 2.54276955390020473e-09 +0.00128824955169318505 2.54166906277627944e-09 +0.00130316677845235111 2.54056904793645667e-09 +0.00131825673855645955 2.53946950917460342e-09 +0.00133352143216337719 2.53837044628467768e-09 +0.00134896288259170739 2.53727185906072512e-09 +0.001364583136588979 2.5361737472968816e-09 +0.00138038426460293994 2.53507611078737145e-09 +0.00139636836105599352 2.53397894932650753e-09 +0.00141253754462281099 2.53288226270869409e-09 +0.00142889395851116029 2.53178605072842061e-09 +0.00144543977074598567 2.53069031318027e-09 +0.0014621771744567772 2.52959504985890957e-09 +0.00147910838816826731 2.52850026055909885e-09 +0.00149623565609449411 2.52740594507568423e-09 +0.00151356124843626968 2.52631210320360225e-09 +0.0015310874616820925 2.52521873473787757e-09 +0.00154881661891254443 2.52412583947362292e-09 +0.00156675107010821298 2.52303341720604038e-09 +0.00158489319246117827 2.52194146773042135e-09 +0.00160324539069010711 2.52084999084214451e-09 +0.00162181009735899652 2.51975898633667788e-09 +0.00164058977319960679 2.51866845400957756e-09 +0.00165958690743762895 2.517578393656489e-09 +0.00167880401812262959 2.51648880507314491e-09 +0.0016982436524618145 2.51539968805536733e-09 +0.00171790838715765921 2.51431104239906558e-09 +0.00173780082874944739 2.51322286790023913e-09 +0.00175792361395876555 2.51213516435497391e-09 +0.00177827941003899669 2.51104793155944474e-09 +0.0017988709151288626 2.50996116930991498e-09 +0.00181970085861005919 2.50887487740273649e-09 +0.00184077200146903265 2.50778905563434797e-09 +0.0018620871366629454 2.50670370380127746e-09 +0.00188364908948987953 2.50561882170013988e-09 +0.00190546071796332712 2.50453440912763902e-09 +0.00192752491319101707 2.50345046588056765e-09 +0.00194984459975812755 2.5023669917558037e-09 +0.00197242273611493695 2.50128398655031528e-09 +0.00199526231496896392 2.50020145006115859e-09 +0.0020183663636816466 2.49911938208547543e-09 +0.00204173794466961604 2.4980377824204978e-09 +0.00206538015581061735 2.49695665086354367e-09 +0.00208929613085412878 2.49587598721202e-09 +0.00211348903983673729 2.49479579126342054e-09 +0.00213796208950232372 2.49371606281532718e-09 +0.002162718523727113 2.49263680166540988e-09 +0.0021877616239496466 2.49155800761142463e-09 +0.0022130947096057332 2.49047968045121678e-09 +0.00223872113856843618 2.48940181998271725e-09 +0.00226464430759315766 2.48832442600394674e-09 +0.00229086765276787256 2.48724749831301032e-09 +0.00231739464996857936 2.48617103670810446e-09 +0.00234422881532002402 2.48509504098750875e-09 +0.0023713737056617586 2.48401951094959337e-09 +0.00239883291901959528 2.48294444639281371e-09 +0.00242661009508252177 2.4818698471157128e-09 +0.00245470891568513785 2.48079571291692181e-09 +0.00248313310529567908 2.47972204359515874e-09 +0.00251188643150969046 2.47864883894922763e-09 +0.00254097270554941692 2.47757609877802018e-09 +0.0025703957827689773 2.47650382288051621e-09 +0.00260015956316538704 2.47543201105578114e-09 +0.0026302679918954984 2.47436066310296806e-09 +0.0026607250597989276 2.47328977882131612e-09 +0.00269153480392703539 2.47221935801015294e-09 +0.00272270130807803368 2.47114940046889137e-09 +0.00275422870333828914 2.47007990599703192e-09 +0.00278612116862989468 2.46901087439416155e-09 +0.00281838293126457969 2.46794230545995449e-09 +0.00285101826750403702 2.466874198994171e-09 +0.00288403150312673516 2.46580655479665858e-09 +0.00291742701400129773 2.46473937266735038e-09 +0.00295120922666651823 2.46367265240626804e-09 +0.00298538261891809382 2.46260639381351757e-09 +0.00301995172040215231 2.46154059668929267e-09 +0.0030549211132156512 2.46047526083387389e-09 +0.00309029543251373041 2.45941038604762657e-09 +0.00312607936712409667 2.45834597213100454e-09 +0.00316227766016852294 2.45728201888454645e-09 +0.00319889510969154339 2.45621852610887735e-09 +0.0032359365692964299 2.45515549360471001e-09 +0.00327340694878853122 2.45409292117284195e-09 +0.00331131121482606226 2.45303080861415716e-09 +0.00334965439157842992 2.45196915572962688e-09 +0.00338844156139218085 2.45090796232030674e-09 +0.00342767786546466094 2.44984722818733961e-09 +0.00346736850452547584 2.44878695313195523e-09 +0.00350751873952584144 2.44772713695546649e-09 +0.00354813389233591802 2.44666777945927558e-09 +0.00358921934645021774 2.44560888044486866e-09 +0.00363078054770118097 2.44455043971381877e-09 +0.00367282300498101644 2.4434924570677837e-09 +0.00371535229097189751 2.44243493230850811e-09 +0.00375837404288461609 2.4413778652378227e-09 +0.00380189396320578877 2.44032125565764251e-09 +0.00384591782045371486 2.43926510336996947e-09 +0.00389045144994298745 2.43820940817689109e-09 +0.00393550075455795841 2.43715416988058011e-09 +0.00398107170553515903 2.43609938828329486e-09 +0.00402717034325477969 2.43504506318737971e-09 +0.0040738027780413185 2.43399119439526504e-09 +0.00412097519097349551 2.43293778170946522e-09 +0.00416869383470354956 2.43188482493258103e-09 +0.00421696503428602067 2.43083232386729928e-09 +0.00426579518801612715 2.42978027831639077e-09 +0.00431519076827785539 2.42872868808271229e-09 +0.00436515832240186568 2.42767755296920708e-09 +0.00441570447353333354 2.42662687277890194e-09 +0.00446683592150984212 2.42557664731490885e-09 +0.00451855944374943749 2.42452687638042707e-09 +0.00457088189614896726 2.42347755977873899e-09 +0.00462381021399282249 2.42242869731321261e-09 +0.00467735141287220404 2.42138028878730195e-09 +0.00473151258961502976 2.42033233400454543e-09 +0.00478630092322661176 2.41928483276856622e-09 +0.00484172367584122503 2.41823778488307272e-09 +0.00489778819368469689 2.4171911901518585e-09 +0.0049545019080481402 2.41614504837880153e-09 +0.00501187233627296402 2.41509935936786538e-09 +0.00506990708274728755 2.41405412292309757e-09 +0.00512861383991389599 2.41300933884863209e-09 +0.00518800038928986153 2.41196500694868561e-09 +0.0052480746024979796 2.41092112702755961e-09 +0.00530884444231014083 2.40987769888964325e-09 +0.00537031796370278803 2.40883472233940675e-09 +0.00543250331492459593 2.40779219718140677e-09 +0.00549540873857651269 2.40675012322028475e-09 +0.005559042572704306 2.40570850026076486e-09 +0.00562341325190376419 2.40466732810765811e-09 +0.00568852930843869158 2.40362660656585908e-09 +0.00575439937337185025 2.40258633544034627e-09 +0.00582103217770899885 2.40154651453618259e-09 +0.00588843655355617782 2.40050714365851655e-09 +0.00595662143529039623 2.39946822261257895e-09 +0.00602559586074387279 2.39842975120368746e-09 +0.00609536897240199084 2.39739172923724164e-09 +0.00616595001861512497 2.39635415651872708e-09 +0.00623734835482449984 2.39531703285371165e-09 +0.00630957344480224426 2.3942803580478497e-09 +0.00638263486190580268 2.39324413190687743e-09 +0.00645654229034687503 2.39220835423661586e-09 +0.00653130552647504786 2.39117302484297161e-09 +0.00660693448007628869 2.39013814353193317e-09 +0.00668343917568647861 2.38910371010957386e-09 +0.00676082975392015492 2.38806972438205092e-09 +0.00683911647281463479 2.38703618615560598e-09 +0.00691830970918971052 2.38600309523656338e-09 +0.00699841996002308498 2.38497045143133226e-09 +0.00707945784384173341 2.38393825454640488e-09 +0.00716143410212937911 2.38290650438835788e-09 +0.00724435960075026433 2.3818752007638506e-09 +0.00732824533138940956 2.38084434347962843e-09 +0.00741310241300954884 2.37981393234251656e-09 +0.00749894209332493695 2.37878396715942748e-09 +0.00758577575029222104 2.37775444773735554e-09 +0.00767361489361857805 2.37672537388337782e-09 +0.00776247116628731113 2.37569674540465702e-09 +0.00785235634610111609 2.37466856210843771e-09 +0.00794328234724321798 2.37364082380204802e-09 +0.00803526122185658012 2.37261353029290005e-09 +0.00812830516164140572 2.37158668138848942e-09 +0.00822242649947113081 2.37056027689639367e-09 +0.00831763771102713573 2.36953431662427509e-09 +0.00841395141645238237 2.36850880037987872e-09 +0.00851138038202420115 2.36748372797103271e-09 +0.0086099375218464478 2.36645909920564836e-09 +0.00870963589956125391 2.36543491389172051e-09 +0.00881048873008059494 2.3644111718373267e-09 +0.00891250938133791512 2.36338787285062679e-09 +0.00901571137606003471 2.36236501673986586e-09 +0.00912010839355956865 2.36134260331336959e-09 +0.00922571427154810809 2.36032063237954808e-09 +0.00933254300797039388 2.3592991037468937e-09 +0.00944060876285972295 2.35827801722398157e-09 +0.00954992586021485498 2.35725737261947075e-09 +0.00966050878989863603 2.35623716974210176e-09 +0.00977237220955861491 2.35521740840069871e-09 +0.00988553094656990233 2.3541980884041688e-09 +0.0100000000000005206 2.35317920956150032e-09 +0.0101157945425995131 2.35216077168176591e-09 +0.0102329299228080765 2.35114277457411972e-09 +0.0103514216667939807 2.35012521804779982e-09 +0.0104712854805095457 2.34910810191212495e-09 +0.0105925372517734467 2.34809142597649782e-09 +0.0107151930523766287 2.34707519005040384e-09 +0.0108392691402126075 2.3460593939434099e-09 +0.01096478196143243 2.3450440374651652e-09 +0.0110917481526245972 2.34402912042540206e-09 +0.0112201845430202288 2.34301464263393513e-09 +0.0113501081567237531 2.34200060390066092e-09 +0.0114815362149694386 2.34098700403555827e-09 +0.0116144861384040472 2.33997384284868872e-09 +0.0117489755493959229 2.33896112015019571e-09 +0.0118850222743708198 2.33794883575030457e-09 +0.0120226443461747719 2.33693698945932335e-09 +0.0121618600064643308 2.33592558108764156e-09 +0.0123026877081244754 2.33491461044573105e-09 +0.0124451461177145194 2.33390407734414634e-09 +0.0125892541179423497 2.33289398159352224e-09 +0.0127350308101673027 2.33188432300457747e-09 +0.0128824955169320344 2.33087510138811185e-09 +0.013031667784523698 2.32986631655500708e-09 +0.0131825673855647842 2.3288579683162259e-09 +0.0133352143216339623 2.32785005648281505e-09 +0.0134896288259172669 2.32684258086590023e-09 +0.0136458313658899856 2.32583554127669071e-09 +0.0138038426460295981 2.32482893752647722e-09 +0.0139636836105601347 2.32382276942663157e-09 +0.014125375446228312 2.32281703678860827e-09 +0.0142889395851118067 2.32181173942394291e-09 +0.0144543977074600635 2.32080687714425213e-09 +0.0146217717445679806 2.31980244976123406e-09 +0.014791083881682883 2.31879845708666912e-09 +0.0149623565609451527 2.31779489893241922e-09 +0.0151356124843629106 2.31679177511042651e-09 +0.0153108746168211414 2.31578908543271667e-09 +0.0154881661891256642 2.31478682971139396e-09 +0.015667510701082351 2.3137850077586458e-09 +0.0158489319246120051 2.31278361938674106e-09 +0.0160324539069012957 2.31178266440802885e-09 +0.0162181009735901903 2.31078214263493977e-09 +0.0164058977319962961 2.30978205387998588e-09 +0.0165958690743765215 2.30878239795576074e-09 +0.0167880401812265309 2.30778317467493771e-09 +0.0169824365246183835 2.30678438385027247e-09 +0.0171790838715768328 2.30578602529460134e-09 +0.0173780082874947193 2.30478809882084129e-09 +0.0175792361395879018 2.3037906042419912e-09 +0.0177827941003902146 2.30279354137112974e-09 +0.0179887091512888793 2.30179691002141792e-09 +0.018197008586100849 2.30080071000609489e-09 +0.0184077200146905845 2.29980494113848419e-09 +0.0186208713666297133 2.29880960323198793e-09 +0.0188364908948990585 2.29781469610008888e-09 +0.0190546071796335384 2.2968202195563521e-09 +0.0192752491319104387 2.29582617341442085e-09 +0.0194984459975815448 2.29483255748802231e-09 +0.0197242273611496419 2.29383937159096145e-09 +0.0199526231496899159 2.29284661553712468e-09 +0.0201836636368167427 2.2918542891404795e-09 +0.0204173794466964396 2.29086239221507365e-09 +0.0206538015581064563 2.2898709245750355e-09 +0.0208929613085415723 2.28887988603457368e-09 +0.0211348903983676617 2.28788927640797578e-09 +0.0213796208950235295 2.2868990955096134e-09 +0.0216271852372714249 2.2859093431539346e-09 +0.0218776162394967617 2.2849200191554702e-09 +0.0221309470960576286 2.28393112332882999e-09 +0.0223872113856846619 2.28294265548870484e-09 +0.0226464430759318776 2.28195461544986543e-09 +0.0229086765276790283 2.28096700302716228e-09 +0.0231739464996860989 2.27997981803552695e-09 +0.0234422881532005516 2.27899306028997043e-09 +0.0237137370566179 2.27800672960558393e-09 +0.0239883291901962677 2.27702082579753851e-09 +0.0242661009508255351 2.27603534868108502e-09 +0.0245470891568517029 2.27505029807155497e-09 +0.0248313310529571195 2.27406567378435971e-09 +0.0251188643150972377 2.27308147563498998e-09 +0.0254097270554945048 2.27209770343901636e-09 +0.0257039578276901104 2.27111435701208964e-09 +0.0260015956316542104 2.27013143616994087e-09 +0.0263026799189553309 2.26914894072837926e-09 +0.026607250597989629 2.2681668705032951e-09 +0.0269153480392707103 2.26718522531065805e-09 +0.0272270130807806959 2.26620400496651764e-09 +0.0275422870333832566 2.26522320928700194e-09 +0.0278612116862993163 2.2642428380883197e-09 +0.0281838293126461699 2.26326289118675908e-09 +0.028510182675040744 2.2622833683986872e-09 +0.0288403150312677332 2.26130426954055146e-09 +0.0291742701400133642 2.26032559442887781e-09 +0.0295120922666655752 2.25934734288027246e-09 +0.0298538261891813372 2.2583695147114202e-09 +0.0301995172040219265 2.25739210973908561e-09 +0.0305492111321569206 2.25641512778011231e-09 +0.0309029543251377152 2.25543856865142373e-09 +0.0312607936712413839 2.25446243217002268e-09 +0.031622776601685651 2.25348671815298935e-09 +0.0319889510969158589 2.25251142641748456e-09 +0.0323593656929647283 2.25153655678074938e-09 +0.0327340694878857433 2.25056210906010178e-09 +0.0331131121482610563 2.24958808307294001e-09 +0.0334965439157847364 2.24861447863674085e-09 +0.0338844156139222474 2.24764129556906013e-09 +0.0342767786546470526 2.24666853368753346e-09 +0.0346736850452552051 2.24569619280987422e-09 +0.035075187395258868 2.2447242727538748e-09 +0.0354813389233596399 2.24375277333740738e-09 +0.0358921934645026405 2.24278169437842277e-09 +0.0363078054770122824 2.24181103569494907e-09 +0.0367282300498106423 2.24084079710509506e-09 +0.0371535229097194608 2.23987097842704727e-09 +0.0375837404288466501 2.23890157947907122e-09 +0.0380189396320583795 2.23793260007951103e-09 +0.0384591782045376473 2.23696404004678896e-09 +0.0389045144994303801 2.23599589919940628e-09 +0.0393550075455800924 2.23502817735594327e-09 +0.0398107170553521003 2.23406087433505795e-09 +0.0402717034325483156 2.23309398995548774e-09 +0.0407380277804137089 2.23212752403604658e-09 +0.0412097519097354842 2.23116147639562909e-09 +0.0416869383470360316 2.23019584685320677e-09 +0.0421696503428607497 2.22923063522783098e-09 +0.0426579518801618249 2.22826584133862957e-09 +0.0431519076827791143 2.22730146500480981e-09 +0.0436515832240192206 2.22633750604565715e-09 +0.0441570447353339113 2.22537396428053435e-09 +0.0446683592150990058 2.22441083952888362e-09 +0.0451855944374949664 2.22344813161022489e-09 +0.0457088189614902676 2.22248584034415586e-09 +0.0462381021399288286 2.2215239655503524e-09 +0.0467735141287226527 2.22056250704856813e-09 +0.0473151258961509169 2.21960146465863567e-09 +0.0478630092322667386 2.21864083820046457e-09 +0.0484172367584128766 2.21768062749404295e-09 +0.0489778819368476004 2.2167208323594371e-09 +0.0495450190804820403 2.21576145261678985e-09 +0.0501187233627302872 2.21480248808632341e-09 +0.050699070827473533 2.21384393858833734e-09 +0.0512861383991396191 2.21288580394320772e-09 +0.0518800038928992832 2.21192808397139045e-09 +0.0524807460249804708 2.21097077849341751e-09 +0.0530884444231020866 2.21001388732989951e-09 +0.0537031796370285655 2.20905741030152394e-09 +0.0543250331492466584 2.2081013472290569e-09 +0.0549540873857658346 2.20714569793334099e-09 +0.0555904257270437782 2.20619046223529698e-09 +0.056234132519038374 2.20523563995592259e-09 +0.0568852930843876531 2.20428123091629408e-09 +0.0575439937337192467 2.20332723493756386e-09 +0.0582103217770907413 2.20237365184096287e-09 +0.0588843655355625398 2.20142048144779861e-09 +0.0595662143529047325 2.2004677235794559e-09 +0.0602559586074395068 2.19951537805739773e-09 +0.060953689724020696 2.19856344470316318e-09 +0.0616595001861520442 2.19761192333836994e-09 +0.0623734835482458033 2.19666081378471178e-09 +0.0630957344480232579 2.19571011586395981e-09 +0.0638263486190588508 2.1947598293979629e-09 +0.0645654229034695881 2.19380995420864603e-09 +0.0653130552647513268 2.19286049011801192e-09 +0.066069344800763749 2.19191143694814064e-09 +0.0668343917568656604 2.19096279452118877e-09 +0.0676082975392024305 2.19001456265938982e-09 +0.0683911647281472412 2.18906674118505423e-09 +0.0691830970918980159 2.18811932992056936e-09 +0.0699841996002317779 2.18717232868839993e-09 +0.0707945784384182708 2.18622573731108673e-09 +0.0716143410212947418 2.18527955561124791e-09 +0.0724435960075036078 2.18433378341157815e-09 +0.073282453313895074 2.18338842053484944e-09 +0.074131024130096479 2.18244346680390906e-09 +0.074989420933250367 2.18149892204168204e-09 +0.0758577575029232148 2.18055478607117035e-09 +0.0767361489361867988 2.17961105871545205e-09 +0.0776247116628741435 2.17866773979768129e-09 +0.0785235634610122052 2.17772482914108958e-09 +0.0794328234724332449 2.17678232656898452e-09 +0.0803526122185668906 2.17584023190475065e-09 +0.0812830516164151501 2.17489854497184819e-09 +0.082224264994712401 2.17395726559381386e-09 +0.0831763771102724536 2.17301639359426174e-09 +0.0841395141645249339 2.17207592879688118e-09 +0.0851138038202431391 2.17113587102543804e-09 +0.0860993752184656264 2.17019622010377511e-09 +0.0870963589956137013 2.16925697585581045e-09 +0.0881048873008071221 2.16831813810553906e-09 +0.0891250938133803378 2.16737970667703202e-09 +0.090157113760601551 2.16644168139443611e-09 +0.0912010839355969077 2.16550406208197463e-09 +0.0922571427154823265 2.16456684856394697e-09 +0.0933254300797051878 2.16363004066472779e-09 +0.0944060876285984923 2.16269363820876911e-09 +0.0954992586021498335 2.16175764102059779e-09 +0.0966050878989876544 2.16082204892481722e-09 +0.0977237220955874675 2.15988686174610646e-09 +0.0988553094657003695 2.15895207930922068e-09 +0.10000000000000657 2.15801770143899033e-09 +0.101157945425996501 2.15708372796032277e-09 +0.102329299228082149 2.15615015869819942e-09 +0.103514216667941208 2.15521699347767901e-09 +0.104712854805096872 2.15428423212389598e-09 +0.1059253725177359 2.15335187446205921e-09 +0.107151930523767744 2.15241992031745409e-09 +0.108392691402127539 2.15148836951544169e-09 +0.109647819614325778 2.15055722188145755e-09 +0.110917481526247474 2.14962647724101494e-09 +0.112201845430203798 2.14869613541970077e-09 +0.113501081567239051 2.14776619624317804e-09 +0.114815362149695913 2.1468366595371846e-09 +0.116144861384042009 2.14590752512753525e-09 +0.11748975549396079 2.1449787928401188e-09 +0.11885022274370978 2.14405046250089935e-09 +0.120226443461749322 2.14312253393591751e-09 +0.121618600064644936 2.14219500697128874e-09 +0.123026877081246391 2.14126788143320255e-09 +0.124451461177146852 2.14034115714792496e-09 +0.125892541179425166 2.13941483394179724e-09 +0.12735030810167472 2.13848891164123514e-09 +0.128824955169322047 2.13756339007272966e-09 +0.130316677845238704 2.13663826906284751e-09 +0.131825673855649583 2.1357135484382294e-09 +0.133352143216341396 2.13478922802559216e-09 +0.134896288259174463 2.13386530765172625e-09 +0.136458313658901681 2.13294178714349946e-09 +0.138038426460297819 2.13201866632785152e-09 +0.139636836105603207 2.13109594503179956e-09 +0.141253754462284997 2.13017362308243385e-09 +0.142889395851119982 2.12925170030692122e-09 +0.144543977074602564 2.12833017653250127e-09 +0.146217717445681766 2.12740905158648972e-09 +0.147910838816830814 2.12648832529627671e-09 +0.149623565609453529 2.12556799748932726e-09 +0.151356124843631146 2.12464806799318082e-09 +0.153108746168213461 2.1237285366354509e-09 +0.15488166189125871 2.12280940324382749e-09 +0.156675107010825626 2.12189066764607258e-09 +0.158489319246122196 2.12097232967002546e-09 +0.160324539069015143 2.12005438914359701e-09 +0.16218100973590413 2.11913684589477501e-09 +0.164058977319965188 2.11821969975162088e-09 +0.165958690743767456 2.11730295054226965e-09 +0.167880401812267571 2.11638659809493204e-09 +0.169824365246186132 2.11547064223789237e-09 +0.171790838715770666 2.11455508279950861e-09 +0.17378008287494956 2.11363991960821522e-09 +0.175792361395881419 2.11272515249251864e-09 +0.177827941003904588 2.11181078128100016e-09 +0.179887091512891256 2.11089680580231634e-09 +0.181970085861010961 2.10998322588519615e-09 +0.184077200146908343 2.1090700413584442e-09 +0.18620871366629968 2.10815725205093833e-09 +0.188364908948993159 2.10724485779163083e-09 +0.190546071796337979 2.10633285840954802e-09 +0.192752491319107017 2.10542125373378941e-09 +0.19498445997581812 2.10451004359352981e-09 +0.197242273611499125 2.10359922781801721e-09 +0.199526231496901879 2.10268880623657283e-09 +0.201836636368170202 2.10177877867859396e-09 +0.204173794466967207 2.10086914497354865e-09 +0.20653801558106738 2.09995990495098143e-09 +0.208929613085418575 2.09905105844050923e-09 +0.211348903983679504 2.098142605271823e-09 +0.213796208950238209 2.09723454527468775e-09 +0.216271852372717205 2.09632687827894123e-09 +0.218776162394970636 2.0954196041144957e-09 +0.221309470960579346 2.09451272261133739e-09 +0.223872113856849742 2.09360623359952496e-09 +0.226464430759321933 2.09270013690919107e-09 +0.229086765276793475 2.09179443237054201e-09 +0.231739464996864236 2.09088911981385811e-09 +0.234422881532008798 2.08998419906949207e-09 +0.237137370566182309 2.08907966996787061e-09 +0.239883291901966028 2.08817553233949369e-09 +0.242661009508258751 2.08727178601493485e-09 +0.24547089156852045 2.08636843082484087e-09 +0.248313310529574671 2.0854654665999317e-09 +0.251188643150975888 2.08456289317100054e-09 +0.254097270554948629 2.08366071036891374e-09 +0.257039578276904712 2.08275891802461132e-09 +0.260015956316545727 2.08185751596910607e-09 +0.263026799189556959 2.08095650403348398e-09 +0.266072505979899954 2.08005588204890384e-09 +0.269153480392710809 2.07915564984659847e-09 +0.272270130807810706 2.07825580725787225e-09 +0.275422870333836334 2.0773563541141044e-09 +0.278612116862996972 2.07645729024674571e-09 +0.281838293126465578 2.07555861548731976e-09 +0.285101826750411402 2.07466032966742456e-09 +0.288403150312681322 2.07376243261872969e-09 +0.291742701400137694 2.07286492417297752e-09 +0.295120922666659846 2.07196780416198443e-09 +0.29853826189181748 2.07107107241763839e-09 +0.301995172040223414 2.07017472877190053e-09 +0.30549211132157339 2.06927877305680523e-09 +0.309029543251381378 2.0683832051044588e-09 +0.3126079367124181 2.06748802474703995e-09 +0.316227766016860812 2.06659323181680141e-09 +0.31988951096916296 2.06569882614606747e-09 +0.323593656929651696 2.06480480756723521e-09 +0.327340694878861915 2.06391117591277367e-09 +0.331131121482615143 2.06301793101522592e-09 +0.334965439157851985 2.06212507270720534e-09 +0.338844156139227193 2.0612326008214002e-09 +0.342767786546475328 2.06034051519056903e-09 +0.346736850452556922 2.05944881564754402e-09 +0.350751873952593607 2.05855750202522931e-09 +0.354813389233601395 2.05766657415660182e-09 +0.358921934645031471 2.05677603187470922e-09 +0.363078054770127945 2.05588587501267318e-09 +0.367282300498111614 2.05499610340368737e-09 +0.371535229097199826 2.05410671688101657e-09 +0.375837404288471788 2.05321771527799837e-09 +0.380189396320589179 2.05232909842804314e-09 +0.384591782045381914 2.05144086616463238e-09 +0.389045144994309311 2.05055301832131918e-09 +0.393550075455806558 2.04966555473173102e-09 +0.398107170553526735 2.04877847522956491e-09 +0.402717034325488943 2.04789177964859063e-09 +0.407380277804142932 2.04700546782265035e-09 +0.412097519097360809 2.04611953958565777e-09 +0.416869383470366395 2.04523399477159857e-09 +0.421696503428613645 2.0443488332145304e-09 +0.426579518801624424 2.04346405474858245e-09 +0.431519076827797388 2.04257965920795546e-09 +0.43651583224019852 2.04169564642692298e-09 +0.441570447353345441 2.04081201623982885e-09 +0.446683592150996456 2.03992876848109012e-09 +0.451855944374956131 2.03904590298519458e-09 +0.457088189614909213 2.03816341958670113e-09 +0.462381021399294934 2.03728131812024189e-09 +0.467735141287233258 2.03639959842051847e-09 +0.473151258961515997 2.0355182603223065e-09 +0.478630092322674283 2.03463730366045069e-09 +0.484172367584135732 2.03375672826986854e-09 +0.489778819368483054 2.03287653398554951e-09 +0.49545019080482755 2.03199672064255295e-09 +0.501187233627310103 2.03111728807601061e-09 +0.506990708274742685 2.03023823612112535e-09 +0.512861383991403685 2.0293595646131712e-09 +0.518800038929000396 2.02848127338749453e-09 +0.524807460249812396 2.02760336227951081e-09 +0.530884444231028652 2.02672583112470913e-09 +0.537031796370293524 2.02584867975864762e-09 +0.543250331492474481 2.02497190801695765e-09 +0.549540873857666368 2.02409551573534004e-09 +0.555904257270445901 2.02321950274956719e-09 +0.562341325190391927 2.02234386889548386e-09 +0.568852930843884885 2.0214686140090039e-09 +0.575439937337200891 2.0205937379261131e-09 +0.582103217770915893 2.01971924048286798e-09 +0.588843655355633988 2.01884512151539704e-09 +0.595662143529055998 2.01797138085989825e-09 +0.602559586074403852 2.01709801835264113e-09 +0.609536897240215869 2.01622503382996635e-09 +0.61659500186152949 2.01535242712828445e-09 +0.623734835482467109 2.01448019808407798e-09 +0.630957344480241655 2.01360834653389975e-09 +0.638263486190597695 2.0127368723143725e-09 +0.645654229034705152 2.01186577526219133e-09 +0.653130552647522622 2.01099505521412044e-09 +0.660693448007646844 2.01012471200699595e-09 +0.668343917568666068 2.00925474547772349e-09 +0.67608297539203388 2.00838515546327983e-09 +0.683911647281482127 2.00751594180071245e-09 +0.691830970918989929 2.00664710432713915e-09 +0.69984199600232766 2.00577864287974805e-09 +0.707945784384192756 2.00491055729579796e-09 +0.716143410212957576 2.00404284741261846e-09 +0.724435960075046292 2.00317551306760857e-09 +0.73282453313896101 2.00230855409823805e-09 +0.741310241300975115 2.00144197034204824e-09 +0.749894209332514161 2.00057576163664908e-09 +0.758577575029242834 1.99970992781972128e-09 +0.767361489361878757 1.99884446872901626e-09 +0.776247116628752343 1.99797938420235574e-09 +0.785235634610133126 1.99711467407763053e-09 +0.794328234724343551 1.99625033819280296e-09 +0.803526122185680092 1.99538637638590488e-09 +0.812830516164162908 1.9945227884950376e-09 +0.822242649947135584 1.99365957435837356e-09 +0.831763771102736249 1.99279673381415513e-09 +0.841395141645261191 1.99193426670069372e-09 +0.851138038202443381 1.99107217285637189e-09 +0.860993752184668448 1.99021045211964126e-09 +0.870963589956149309 1.98934910432902418e-09 +0.881048873008083655 1.98848812932311208e-09 +0.891250938133815951 1.98762752694056626e-09 +0.901571137606028139 1.98676729702011919e-09 +0.912010839355981928 1.98590743940057157e-09 +0.922571427154836199 1.98504795392079397e-09 +0.933254300797064951 1.98418884041972814e-09 +0.944060876285998218 1.98333009873638364e-09 +0.954992586021511713 1.98247172870984075e-09 +0.966050878989890061 1.98161373017925005e-09 +0.977237220955888275 1.98075610298382999e-09 +0.98855309465701735 1.97989884696287052e-09 +1.00000000000007949 1.97904196195572904e-09 +1.01157945425997897 1.97818544780183449e-09 +1.02329299228083559 1.97732930434068405e-09 +1.03514216667942627 1.97647353141184522e-09 +1.0471285480509831 1.97561812885495372e-09 +1.05925372517737348 1.97476309650971603e-09 +1.07151930523769212 1.97390843421590724e-09 +1.08392691402129038 1.97305414181337156e-09 +1.09647819614327302 1.97220021914202348e-09 +1.10917481526249007 1.97134666604184572e-09 +1.12201845430205349 1.97049348235289093e-09 +1.13501081567240614 1.96964066791528081e-09 +1.14815362149697497 1.96878822256920614e-09 +1.16144861384043607 1.96793614615492676e-09 +1.17489755493962411 1.96708443851277199e-09 +1.1885022274371142 1.96623309948314064e-09 +1.20226443461750976 1.96538212890649894e-09 +1.21618600064646598 1.96453152662338384e-09 +1.23026877081248065 1.96368129247440094e-09 +1.24451461177148537 1.9628314263002245e-09 +1.25892541179426876 1.96198192794159744e-09 +1.27350308101676446 1.96113279723933257e-09 +1.28824955169323796 1.96028403403431054e-09 +1.30316677845240458 1.95943563816748188e-09 +1.3182567385565136 1.95858760947986496e-09 +1.33352143216343189 1.95773994781254805e-09 +1.34896288259176278 1.95689265300668683e-09 +1.36458313658903507 1.95604572490350686e-09 +1.38038426460299668 1.95519916334430239e-09 +1.39636836105605089 1.95435296817043507e-09 +1.41253754462286896 1.95350713922333726e-09 +1.42889395851121903 1.95266167634450834e-09 +1.44543977074604513 1.95181657937551633e-09 +1.46217717445683726 1.95097184815799875e-09 +1.47910838816832801 1.95012748253366136e-09 +1.49623565609455556 1.94928348234427732e-09 +1.51356124843633189 1.94843984743169012e-09 +1.53108746168215548 1.94759657763781065e-09 +1.54881661891260825 1.94675367280461846e-09 +1.56675107010827763 1.94591113277416052e-09 +1.58489319246124349 1.94506895738855369e-09 +1.60324539069017313 1.94422714648998226e-09 +1.62181009735906323 1.94338569992069956e-09 +1.64058977319967414 1.94254461752302596e-09 +1.65958690743769721 1.94170389913935086e-09 +1.67880401812269864 1.94086354461213235e-09 +1.69824365246188447 1.94002355378389592e-09 +1.71790838715773009 1.93918392649723488e-09 +1.73780082874951924 1.93834466259481205e-09 +1.75792361395883812 1.93750576191935721e-09 +1.7782794100390702 1.93666722431366802e-09 +1.79887091512893704 1.93582904962061158e-09 +1.81970085861013442 1.93499123768312159e-09 +1.84077200146910869 1.93415378834420001e-09 +1.86208713666302228 1.93331670144691744e-09 +1.88364908948995735 1.93247997683441189e-09 +1.90546071796340599 1.93164361434988881e-09 +1.92752491319109676 1.93080761383662227e-09 +1.94984459975820812 1.9299719751379542e-09 +1.97242273611501862 1.92913669809729351e-09 +1.99526231496904649 1.92830178255811779e-09 +2.01836636368172995 1.92746722836397202e-09 +2.0417379446697006 1.9266330353584682e-09 +2.06538015581070278 1.92579920338528739e-09 +2.08929613085421506 1.92496573228817723e-09 +2.11348903983682446 1.92413262191095321e-09 +2.13796208950241207 1.92329987209749905e-09 +2.16271852372720241 1.92246748269176506e-09 +2.18776162394973683 1.92163545353776937e-09 +2.21309470960582422 1.92080378447959838e-09 +2.23872113856852861 1.91997247536140503e-09 +2.26464430759325097 1.91914152602741015e-09 +2.29086765276796678 1.91831093632190193e-09 +2.31739464996867461 1.917480706089236e-09 +2.34422881532012051 1.916650835173835e-09 +2.37137370566185623 1.91582132342018937e-09 +2.39883291901969375 1.9149921706728566e-09 +2.42661009508262149 1.91416337677646154e-09 +2.45470891568523886 1.91333494157569607e-09 +2.48313310529578146 1.91250686491531991e-09 +2.51188643150979374 1.91167914664015934e-09 +2.54097270554952148 1.91085178659510807e-09 +2.57039578276908287 1.9100247846251264e-09 +2.6001595631654939 1.90919814057524287e-09 +2.63026799189560645 1.9083718542905522e-09 +2.66072505979903706 1.90754592561621568e-09 +2.69153480392714606 1.90672035439746328e-09 +2.72270130807814548 1.90589514047959029e-09 +2.75422870333840253 1.90507028370796027e-09 +2.78612116863000958 1.90424578392800252e-09 +2.81838293126469619 1.90342164098521377e-09 +2.85101826750415466 1.90259785472515775e-09 +2.88403150312685419 1.90177442499346559e-09 +2.91742701400141824 1.90095135163583336e-09 +2.9512092266666401 1.90012863449802581e-09 +2.9853826189182171 1.89930627342587383e-09 +3.01995172040227677 1.8984842682652745e-09 +3.05492111321577697 1.89766261886219273e-09 +3.09029543251385741 1.89684132506265836e-09 +3.12607936712422507 1.89602038671276989e-09 +3.16227766016865264 1.89519980365869075e-09 +3.19889510969167468 1.8943795757466522e-09 +3.23593656929656293 1.89355970282295126e-09 +3.27340694878866545 1.89274018473395154e-09 +3.31131121482619806 1.89192102132608324e-09 +3.34965439157856704 1.89110221244584355e-09 +3.38844156139231956 1.89028375793979503e-09 +3.42767786546480124 1.88946565765456804e-09 +3.46736850452561773 1.8886479114368583e-09 +3.50751873952598503 1.88783051913342731e-09 +3.54813389233606324 1.88701348059110479e-09 +3.58921934645036478 1.88619679565678456e-09 +3.63078054770132974 1.88538046417742912e-09 +3.67282300498116676 1.88456448600006465e-09 +3.71535229097204933 1.88374886097178556e-09 +3.75837404288476984 1.8829335889397508e-09 +3.80189396320594408 1.88211866975118715e-09 +3.84591782045387198 1.88130410325338631e-09 +3.8904514499431464 1.88048988929370657e-09 +3.93550075455811932 1.87967602771957199e-09 +3.9810717055353213 1.8788625183784728e-09 +4.02717034325494438 1.8780493611179654e-09 +4.07380277804148516 1.87723655578567195e-09 +4.12097519097366405 1.87642410222928079e-09 +4.16869383470372057 1.8756120002965452e-09 +4.21696503428619351 1.87480024983528668e-09 +4.26579518801630186 1.87398885069338963e-09 +4.31519076827803172 1.87317780271880625e-09 +4.36515832240204382 1.87236710575955409e-09 +4.41570447353351359 1.87155675966371648e-09 +4.4668359215100244 1.87074676427944249e-09 +4.51855944374962171 1.86993711945494655e-09 +4.57088189614915308 1.86912782503850925e-09 +4.62381021399301062 1.86831888087847655e-09 +4.67735141287239475 1.86751028682326016e-09 +4.73151258961522281 1.86670204272133795e-09 +4.78630092322680678 1.86589414842125232e-09 +4.84172367584142194 1.86508660377161145e-09 +4.89778819368489593 1.86427940862108967e-09 +4.9545019080483419 1.86347256281842666e-09 +5.01187233627316786 1.86266606621242704e-09 +5.06990708274749391 1.8618599186519612e-09 +5.12861383991410413 1.86105411998596507e-09 +5.18800038929007279 1.86024867006343951e-09 +5.24807460249819346 1.85944356873345136e-09 +5.3088444423103569 1.8586388158451324e-09 +5.37031796370300629 1.85783441124767972e-09 +5.43250331492481742 1.8570303547903556e-09 +5.49540873857673695 1.85622664632248763e-09 +5.55904257270453339 1.85542328569346877e-09 +5.62341325190399477 1.8546202727527569e-09 +5.68852930843892501 1.85381760734987546e-09 +5.7543993733720864 1.85301528933441262e-09 +5.82103217770923731 1.85221331855602168e-09 +5.88843655355641893 1.85141169486442129e-09 +5.95662143529064014 1.85061041810939464e-09 +6.02559586074411957 1.84980948814079065e-09 +6.09536897240224018 1.84900890480852236e-09 +6.16595001861537728 1.84820866796256858e-09 +6.23734835482475525 1.84740877745297283e-09 +6.30957344480250182 1.84660923312984297e-09 +6.38263486190606333 1.84581003484335216e-09 +6.456542290347139 1.84501118244373876e-09 +6.53130552647531459 1.8442126757813056e-09 +6.60693448007655881 1.84341451470641964e-09 +6.68343917568675217 1.84261669906951422e-09 +6.76082975392043117 1.84181922872108555e-09 +6.83911647281491408 1.84102210351169599e-09 +6.91830970918999366 1.84022532329197184e-09 +6.99841996002337119 1.83942888791260429e-09 +7.07945784384202348 1.83863279722434867e-09 +7.16143410212967257 1.83783705107802605e-09 +7.24435960075056062 1.8370416493245208e-09 +7.32824533138970935 1.83624659181478241e-09 +7.41310241300985151 1.8354518783998249e-09 +7.49894209332524309 1.8346575089307266e-09 +7.58577575029253115 1.83386348325863057e-09 +7.67361489361889149 1.83306980123474418e-09 +7.76247116628762779 1.83227646271033891e-09 +7.85235634610143673 1.83148346753675076e-09 +7.94328234724354232 1.83069081556538025e-09 +8.03526122185690816 1.8298985066476922e-09 +8.12830516164173744 1.82910654063521556e-09 +8.22242649947146553 1.82831491737954317e-09 +8.31763771102747285 1.82752363673233321e-09 +8.41395141645272382 1.82673269854530714e-09 +8.51138038202454794 1.82594210267025053e-09 +8.60993752184679906 1.82515184895901349e-09 +8.70963589956160789 1.82436193726351061e-09 +8.81048873008095157 1.82357236743571937e-09 +8.91250938133827653 1.82278313932768261e-09 +9.01571137606040018 1.82199425279150662e-09 +9.12010839355993852 1.82120570767936121e-09 +9.22571427154848323 1.82041750384348131e-09 +9.33254300797077185 1.81962964113616494e-09 +9.44060876286010497 1.81884211940977399e-09 +9.54992586021524126 1.81805493851673491e-09 +9.66050878989902628 1.8172680983095376e-09 +9.77237220955901087 1.81648159864073588e-09 +9.88553094657030407 1.81569543936294706e-09 +10.0000000000009273 1.81490962032885274e-09 diff --git a/class/external_Pk/Pk_example_w_tensors.dat b/class/external_Pk/Pk_example_w_tensors.dat new file mode 100644 index 00000000..c270a143 --- /dev/null +++ b/class/external_Pk/Pk_example_w_tensors.dat @@ -0,0 +1,1401 @@ +9.99999999999999955e-07 3.32701686778166524e-09 5.9010187706738371e-10 +1.01157945425989849e-06 3.32557696044656018e-09 5.89422888107105289e-10 +1.02329299228075415e-06 3.32413767629228539e-09 5.88744680411937329e-10 +1.03514216667934384e-06 3.32269901504913284e-09 5.88067253082932717e-10 +1.04712854805089959e-06 3.32126097644751113e-09 5.87390605222178626e-10 +1.059253725177289e-06 3.31982356021794633e-09 5.86714735932795481e-10 +1.07151930523760658e-06 3.31838676609108071e-09 5.86039644318935823e-10 +1.08392691402120369e-06 3.31695059379767237e-09 5.85365329485782548e-10 +1.09647819614318531e-06 3.31551504306859685e-09 5.84691790539548703e-10 +1.10917481526240141e-06 3.31408011363484551e-09 5.84019026587475209e-10 +1.1220184543019639e-06 3.31264580522752756e-09 5.83347036737830659e-10 +1.13501081567231556e-06 3.3112121175778664e-09 5.82675820099909448e-10 +1.14815362149688337e-06 3.30977905041720367e-09 5.8200537578403106e-10 +1.16144861384034336e-06 3.30834660347699602e-09 5.81335702901538301e-10 +1.1748975549395302e-06 3.30691477648881672e-09 5.80666800564796891e-10 +1.18850222743701909e-06 3.3054835691843561e-09 5.79998667887193703e-10 +1.2022644346174136e-06 3.30405298129541863e-09 5.79331303983135733e-10 +1.21618600064636887e-06 3.30262301255392747e-09 5.78664707968049062e-10 +1.23026877081238242e-06 3.3011936626919187e-09 5.77998878958377512e-10 +1.24451461177138599e-06 3.29976493144154712e-09 5.7733381607158172e-10 +1.25892541179416823e-06 3.29833681853508248e-09 5.76669518426137477e-10 +1.27350308101666285e-06 3.29690932370490951e-09 5.76005985141535319e-10 +1.28824955169313518e-06 3.29548244668353e-09 5.7534321533827846e-10 +1.30316677845230061e-06 3.29405618720356113e-09 5.74681208137882477e-10 +1.31825673855640845e-06 3.29263054499773588e-09 5.74019962662873452e-10 +1.33352143216332558e-06 3.29120551979890179e-09 5.73359478036787352e-10 +1.34896288259165522e-06 3.28978111134002429e-09 5.72699753384168581e-10 +1.36458313658892618e-06 3.28835731935418252e-09 5.72040787830568633e-10 +1.38038426460288654e-06 3.28693414357457145e-09 5.71382580502545476e-10 +1.39636836105593931e-06 3.28551158373450185e-09 5.70725130527661999e-10 +1.41253754462275605e-06 3.28408963956739946e-09 5.7006843703448477e-10 +1.42889395851110465e-06 3.28266831080680665e-09 5.69412499152583419e-10 +1.44543977074592942e-06 3.28124759718637997e-09 5.68757316012528669e-10 +1.46217717445672011e-06 3.27982749843989049e-09 5.68102886745892029e-10 +1.4791083881682094e-06 3.27840801430122677e-09 5.67449210485244037e-10 +1.49623565609443541e-06 3.27698914450439069e-09 5.66796286364153326e-10 +1.51356124843621036e-06 3.27557088878349993e-09 5.66144113517185384e-10 +1.53108746168203239e-06 3.27415324687278673e-09 5.65492691079901937e-10 +1.54881661891248364e-06 3.27273621850659957e-09 5.64842018188858775e-10 +1.56675107010815143e-06 3.27131980341940022e-09 5.64192093981605648e-10 +1.58489319246111599e-06 3.26990400134576711e-09 5.63542917596684199e-10 +1.60324539069004414e-06 3.26848881202039198e-09 5.6289448817362786e-10 +1.62181009735893272e-06 3.2670742351780828e-09 5.62246804852959787e-10 +1.64058977319954219e-06 3.26566027055376044e-09 5.61599866776192028e-10 +1.65958690743756367e-06 3.26424691788246282e-09 5.60953673085824596e-10 +1.67880401812256343e-06 3.26283417689934077e-09 5.60308222925344226e-10 +1.69824365246174758e-06 3.26142204733966051e-09 5.5966351543922293e-10 +1.71790838715759147e-06 3.26001052893880284e-09 5.59019549772917271e-10 +1.73780082874937889e-06 3.25859962143226267e-09 5.58376325072867329e-10 +1.75792361395869617e-06 3.25718932455564953e-09 5.57733840486494635e-10 +1.7782794100389265e-06 3.25577963804468788e-09 5.57092095162202376e-10 +1.79887091512879167e-06 3.25437056163521635e-09 5.56451088249373431e-10 +1.81970085860998745e-06 3.2529620950631865e-09 5.55810818898369338e-10 +1.84077200146895999e-06 3.25155423806466648e-09 5.55171286260529155e-10 +1.86208713666287174e-06 3.25014699037583739e-09 5.54532489488168735e-10 +1.88364908948980499e-06 3.24874035173299446e-09 5.53894427734578973e-10 +1.90546071796325172e-06 3.24733432187254707e-09 5.53257100154025286e-10 +1.92752491319094052e-06 3.24592890053101959e-09 5.5262050590174606e-10 +1.94984459975805007e-06 3.24452408744504888e-09 5.51984644133951827e-10 +1.97242273611485878e-06 3.24311988235138719e-09 5.51349514007823815e-10 +1.99526231496888464e-06 3.24171628498689968e-09 5.50715114681513017e-10 +2.01836636368156641e-06 3.24031329508856648e-09 5.50081445314139469e-10 +2.04173794466953494e-06 3.23891091239348066e-09 5.49448505065790388e-10 +2.065380155810535e-06 3.23750913663884858e-09 5.48816293097519447e-10 +2.08929613085404531e-06 3.2361079675619916e-09 5.48184808571345537e-10 +2.11348903983665289e-06 3.23470740490034481e-09 5.47554050650252144e-10 +2.13796208950223857e-06 3.23330744839145578e-09 5.46924018498185592e-10 +2.16271852372702703e-06 3.23190809777298626e-09 5.46294711280054113e-10 +2.18776162394955936e-06 3.23050935278271173e-09 5.45666128161727124e-10 +2.21309470960564487e-06 3.22911121315852056e-09 5.45038268310033363e-10 +2.2387211385683469e-06 3.22771367863841529e-09 5.44411130892760684e-10 +2.26464430759306726e-06 3.22631674896051178e-09 5.43784715078654197e-10 +2.29086765276778108e-06 3.22492042386303838e-09 5.43159020037415749e-10 +2.31739464996848689e-06 3.2235247030843372e-09 5.4253404493970227e-10 +2.34422881531993065e-06 3.22212958636286446e-09 5.41909788957125258e-10 +2.37137370566166411e-06 3.22073507343718892e-09 5.41286251262249018e-10 +2.39883291901949943e-06 3.21934116404599181e-09 5.40663431028590251e-10 +2.42661009508242485e-06 3.21794785792806809e-09 5.40041327430616398e-10 +2.45470891568503983e-06 3.21655515482232567e-09 5.39419939643745021e-10 +2.48313310529557989e-06 3.21516305446778574e-09 5.38799266844342354e-10 +2.5118864315095899e-06 3.21377155660358242e-09 5.38179308209722375e-10 +2.54097270554931515e-06 3.21238066096896234e-09 5.37560062918145354e-10 +2.5703957827688744e-06 3.21099036730328459e-09 5.36941530148817651e-10 +2.60015956316528288e-06 3.20960067534602244e-09 5.36323709081889334e-10 +2.6302679918953931e-06 3.20821158483676082e-09 5.35706598898454699e-10 +2.66072505979882126e-06 3.20682309551519717e-09 5.3509019878054958e-10 +2.69153480392692776e-06 3.20543520712114306e-09 5.34474507911151143e-10 +2.72270130807792478e-06 3.20404791939452132e-09 5.33859525474177056e-10 +2.75422870333817904e-06 3.20266123207536688e-09 5.33245250654483426e-10 +2.78612116862978341e-06 3.20127514490382879e-09 5.32631682637864382e-10 +2.81838293126446741e-06 3.19988965762016822e-09 5.32018820611051456e-10 +2.85101826750392339e-06 3.19850476996475716e-09 5.31406663761711305e-10 +2.88403150312662028e-06 3.19712048167808217e-09 5.30795211278445615e-10 +2.91742701400118136e-06 3.19573679250074022e-09 5.30184462350789541e-10 +2.95120922666640065e-06 3.19435370217344164e-09 5.29574416169210783e-10 +2.98538261891797501e-06 3.19297121043700965e-09 5.28965071925108859e-10 +3.01995172040203199e-06 3.19158931703237748e-09 5.28356428810813039e-10 +3.05492111321552923e-06 3.19020802170059169e-09 5.27748486019582549e-10 +3.09029543251360714e-06 3.18882732418281216e-09 5.27141242745604508e-10 +3.12607936712397199e-06 3.18744722422030838e-09 5.26534698183993403e-10 +3.16227766016839656e-06 3.18606772155446357e-09 5.25928851530789652e-10 +3.19889510969141555e-06 3.18468881592677221e-09 5.25323701982958974e-10 +3.23593656929630038e-06 3.18331050707884128e-09 5.24719248738391049e-10 +3.27340694878840014e-06 3.18193279475238817e-09 5.24115490995898176e-10 +3.31131121482592974e-06 3.18055567868924321e-09 5.23512427955214958e-10 +3.34965439157829578e-06 3.17917915863134878e-09 5.22910058816996547e-10 +3.38844156139204531e-06 3.17780323432075771e-09 5.22308382782817818e-10 +3.42767786546452376e-06 3.17642790549963574e-09 5.21707399055172538e-10 +3.46736850452533717e-06 3.17505317191025944e-09 5.21107106837471923e-10 +3.50751873952570145e-06 3.17367903329501665e-09 5.20507505334043909e-10 +3.54813389233577665e-06 3.17230548939640729e-09 5.19908593750131918e-10 +3.58921934645007473e-06 3.17093253995704334e-09 5.1931037129189361e-10 +3.63078054770103653e-06 3.16956018471964642e-09 5.18712837166400474e-10 +3.67282300498087032e-06 3.16818842342705104e-09 5.18115990581636069e-10 +3.71535229097174963e-06 3.16681725582220213e-09 5.17519830746495405e-10 +3.75837404288446625e-06 3.16544668164815671e-09 5.16924356870783698e-10 +3.80189396320563693e-06 3.16407670064808141e-09 5.16329568165215548e-10 +3.84591782045356131e-06 3.16270731256525659e-09 5.15735463841413282e-10 +3.89045144994283218e-06 3.16133851714307097e-09 5.15142043111906849e-10 +3.93550075455780151e-06 3.15997031412502619e-09 5.14549305190132171e-10 +3.98107170553499961e-06 3.1586027032547343e-09 5.13957249290429999e-10 +4.02717034325461879e-06 3.1572356842759182e-09 5.13365874628045297e-10 +4.07380277804115604e-06 3.15586925693241165e-09 5.12775180419126001e-10 +4.1209751909733315e-06 3.15450342096815964e-09 5.12185165880721776e-10 +4.16869383470338365e-06 3.15313817612721719e-09 5.1159583023078319e-10 +4.2169650342858529e-06 3.15177352215375139e-09 5.11007172688161095e-10 +4.26579518801595789e-06 3.15040945879203936e-09 5.10419192472604659e-10 +4.31519076827768383e-06 3.14904598578646823e-09 5.09831888804760751e-10 +4.36515832240169219e-06 3.14768310288153762e-09 5.09245260906173727e-10 +4.41570447353315848e-06 3.14632080982185511e-09 5.08659307999282853e-10 +4.46683592150966515e-06 3.14495910635214035e-09 5.08074029307422297e-10 +4.518559443749258e-06 3.14359799221722426e-09 5.07489424054820207e-10 +4.57088189614878569e-06 3.14223746716204651e-09 5.0690549146659715e-10 +4.62381021399263895e-06 3.14087753093165846e-09 5.06322230768764986e-10 +4.67735141287201854e-06 3.13951818327122107e-09 5.05739641188226651e-10 +4.73151258961484191e-06 3.13815942392600572e-09 5.05157721952774404e-10 +4.78630092322642153e-06 3.1368012526413934e-09 5.04576472291089003e-10 +4.84172367584103189e-06 3.13544366916287719e-09 5.03995891432738559e-10 +4.89778819368450149e-06 3.13408667323605849e-09 5.03415978608178235e-10 +4.95450190804794238e-06 3.1327302646066496e-09 5.02836733048747964e-10 +5.01187233627276393e-06 3.1313744430204728e-09 5.02258153986672556e-10 +5.06990708274708519e-06 3.13001920822346038e-09 5.01680240655060046e-10 +5.12861383991369129e-06 3.12866455996165385e-09 5.01102992287901067e-10 +5.18800038928965452e-06 3.12731049798120593e-09 5.00526408120067305e-10 +5.24807460249777053e-06 3.12595702202837817e-09 4.99950487387311288e-10 +5.30884444230992931e-06 3.12460413184954249e-09 4.9937522932626453e-10 +5.37031796370257413e-06 3.12325182719118087e-09 4.9880063317443711e-10 +5.43250331492437979e-06 3.12190010779988322e-09 4.98226698170216336e-10 +5.49540873857629419e-06 3.12054897342235195e-09 4.97653423552865912e-10 +5.55904257270408545e-06 3.11919842380539699e-09 4.97080808562524801e-10 +5.62341325190354118e-06 3.11784845869593829e-09 4.96508852440206403e-10 +5.6885293084384656e-06 3.11649907784100543e-09 4.9593755442779741e-10 +5.7543993733716218e-06 3.11515028098773838e-09 4.95366913768056676e-10 +5.82103217770876751e-06 3.11380206788338425e-09 4.94796929704614487e-10 +5.88843655355594431e-06 3.11245443827530264e-09 4.94227601481971428e-10 +5.95662143529016024e-06 3.11110739191095945e-09 4.93658928345497347e-10 +6.02559586074363413e-06 3.10976092853793224e-09 4.93090909541430322e-10 +6.09536897240174922e-06 3.10841504790390611e-09 4.92523544316875832e-10 +6.16595001861488036e-06 3.10706974975667658e-09 4.91956831919805828e-10 +6.23734835482425226e-06 3.10572503384414754e-09 4.91390771599057287e-10 +6.30957344480199317e-06 3.1043808999143329e-09 4.90825362604331484e-10 +6.38263486190554834e-06 3.10303734771535408e-09 4.90260604186193168e-10 +6.45654229034661755e-06 3.10169437699544338e-09 4.89696495596069321e-10 +6.53130552647478693e-06 3.10035198750294059e-09 4.89133036086248432e-10 +6.60693448007602453e-06 3.09901017898629472e-09 4.88570224909879053e-10 +6.68343917568621162e-06 3.09766895119406478e-09 4.88008061320969383e-10 +6.7608297539198841e-06 3.09632830387491649e-09 4.87446544574385612e-10 +6.83911647281436111e-06 3.09498823677762641e-09 4.86885673925851616e-10 +6.9183097091894337e-06 3.09364874965107865e-09 4.86325448631947607e-10 +6.99841996002280485e-06 3.09230984224426689e-09 4.85765867950109001e-10 +7.07945784384145037e-06 3.09097151430629196e-09 4.85206931138625896e-10 +7.16143410212909289e-06 3.0896337655863651e-09 4.84648637456641732e-10 +7.24435960074997444e-06 3.08829659583380468e-09 4.84090986164152357e-10 +7.32824533138911571e-06 3.08696000479803784e-09 4.83533976522004996e-10 +7.4131024130092517e-06 3.08562399222860089e-09 4.82977607791897525e-10 +7.49894209332463598e-06 3.08428855787513813e-09 4.82421879236377438e-10 +7.58577575029191697e-06 3.08295370148740178e-09 4.81866790118840296e-10 +7.67361489361827076e-06 3.0816194228152524e-09 4.81312339703529832e-10 +7.76247116628700062e-06 3.08028572160865979e-09 4.80758527255535878e-10 +7.85235634610080224e-06 3.07895259761770123e-09 4.80205352040794164e-10 +7.94328234724290137e-06 3.07762005059256239e-09 4.79652813326084867e-10 +8.03526122185626116e-06 3.07628808028353566e-09 4.79100910379031993e-10 +8.12830516164108297e-06 3.07495668644102423e-09 4.78549642468102134e-10 +8.22242649947080286e-06 3.07362586881553679e-09 4.7799900886260364e-10 +8.31763771102680255e-06 3.07229562715769161e-09 4.77449008832685589e-10 +8.41395141645204474e-06 3.07096596121821452e-09 4.76899641649336854e-10 +8.51138038202385979e-06 3.06963687074793844e-09 4.76350906584385274e-10 +8.60993752184610247e-06 3.06830835549780509e-09 4.75802802910496211e-10 +8.70963589956090384e-06 3.06698041521886328e-09 4.75255329901172339e-10 +8.81048873008024044e-06 3.06565304966227063e-09 4.74708486830751784e-10 +8.91250938133755602e-06 3.06432625857929061e-09 4.74162272974408228e-10 +9.01571137605967146e-06 3.06300004172129631e-09 4.7361668760814874e-10 +9.1201083935592014e-06 3.0616743988397671e-09 4.73071730008813976e-10 +9.22571427154773663e-06 3.06034932968629113e-09 4.72527399454076325e-10 +9.33254300797001774e-06 3.05902483401256202e-09 4.71983695222439493e-10 +9.44060876285934213e-06 3.05770091157038339e-09 4.71440616593237052e-10 +9.54992586021447047e-06 3.05637756211166434e-09 4.70898162846632342e-10 +9.66050878989824593e-06 3.05505478538842192e-09 4.70356333263616504e-10 +9.77237220955822109e-06 3.05373258115278152e-09 4.69815127126008272e-10 +9.88553094656950416e-06 3.05241094915697402e-09 4.69274543716452423e-10 +1.00000000000001177e-05 3.05108988915333865e-09 4.68734582318419366e-10 +1.01157945425991052e-05 3.04976940089432216e-09 4.68195242216204102e-10 +1.02329299228076635e-05 3.04844948413247638e-09 4.67656522694924888e-10 +1.03514216667935633e-05 3.04713013862046354e-09 4.67118423040522608e-10 +1.04712854805091226e-05 3.04581136411104971e-09 4.66580942539759849e-10 +1.05925372517730187e-05 3.04449316035711012e-09 4.66044080480219863e-10 +1.07151930523761971e-05 3.04317552711162631e-09 4.65507836150305485e-10 +1.08392691402121707e-05 3.04185846412768569e-09 4.6497220883923856e-10 +1.09647819614319874e-05 3.04054197115848445e-09 4.64437197837058498e-10 +1.109174815262415e-05 3.03922604795732384e-09 4.63902802434621914e-10 +1.12201845430197758e-05 3.03791069427761304e-09 4.63369021923601071e-10 +1.13501081567232945e-05 3.03659590987286753e-09 4.62835855596483578e-10 +1.1481536214968973e-05 3.03528169449670949e-09 4.62303302746570933e-10 +1.16144861384035763e-05 3.03396804790286783e-09 4.61771362667977758e-10 +1.17489755493954464e-05 3.03265496984517689e-09 4.61240034655631013e-10 +1.18850222743703387e-05 3.03134246007757982e-09 4.60709318005268764e-10 +1.20226443461742859e-05 3.03003051835412479e-09 4.60179212013439712e-10 +1.2161860006463839e-05 3.0287191444289667e-09 4.59649715977501697e-10 +1.23026877081239767e-05 3.02740833805636673e-09 4.59120829195621126e-10 +1.24451461177140149e-05 3.02609809899069194e-09 4.58592550966771944e-10 +1.2589254117941839e-05 3.02478842698641693e-09 4.58064880590734749e-10 +1.27350308101667865e-05 3.02347932179812176e-09 4.57537817368095816e-10 +1.28824955169315128e-05 3.02217078318049279e-09 4.57011360600246368e-10 +1.303166778452317e-05 3.02086281088832224e-09 4.56485509589381028e-10 +1.31825673855642505e-05 3.01955540467650948e-09 4.55960263638497663e-10 +1.33352143216334235e-05 3.01824856430005849e-09 4.55435622051396246e-10 +1.34896288259167228e-05 3.01694228951408039e-09 4.54911584132677307e-10 +1.36458313658894346e-05 3.01563658007379258e-09 4.54388149187742242e-10 +1.38038426460290403e-05 3.01433143573451669e-09 4.53865316522791087e-10 +1.39636836105595714e-05 3.01302685625168271e-09 4.53343085444822267e-10 +1.41253754462277413e-05 3.01172284138082361e-09 4.52821455261631915e-10 +1.42889395851112303e-05 3.01041939087758073e-09 4.52300425281812432e-10 +1.44543977074594801e-05 3.00911650449769963e-09 4.51779994814751706e-10 +1.46217717445673904e-05 3.00781418199703215e-09 4.51260163170632288e-10 +1.47910838816822867e-05 3.00651242313153563e-09 4.50740929660430564e-10 +1.49623565609445494e-05 3.00521122765727365e-09 4.50222293595915618e-10 +1.51356124843623001e-05 3.00391059533041366e-09 4.49704254289648557e-10 +1.53108746168205238e-05 3.00261052590723101e-09 4.49186811054981328e-10 +1.5488166189125041e-05 3.00131101914410448e-09 4.48669963206056091e-10 +1.56675107010817227e-05 3.00001207479751953e-09 4.48153710057804086e-10 +1.58489319246113716e-05 2.99871369262406669e-09 4.47638050925944805e-10 +1.60324539069006541e-05 2.99741587238044194e-09 4.47122985126985214e-10 +1.62181009735895424e-05 2.9961186138234451e-09 4.46608511978218464e-10 +1.64058977319956409e-05 2.9948219167099839e-09 4.46094630797723682e-10 +1.65958690743758591e-05 2.9935257807970695e-09 4.45581340904364162e-10 +1.67880401812258588e-05 2.99223020584181809e-09 4.45068641617787316e-10 +1.69824365246177032e-05 2.99093519160145216e-09 4.44556532258423013e-10 +1.71790838715761468e-05 2.98964073783329842e-09 4.44045012147483431e-10 +1.73780082874940248e-05 2.98834684429478865e-09 4.43534080606961658e-10 +1.75792361395871989e-05 2.98705351074346049e-09 4.4302373695963076e-10 +1.77827941003895068e-05 2.98576073693695456e-09 4.42513980529043164e-10 +1.79887091512881624e-05 2.98446852263301862e-09 4.42004810639529569e-10 +1.81970085861001219e-05 2.98317686758950341e-09 4.41496226616198432e-10 +1.84077200146898498e-05 2.98188577156436594e-09 4.40988227784934312e-10 +1.86208713666289723e-05 2.98059523431566706e-09 4.40480813472397611e-10 +1.88364908948983091e-05 2.97930525560157308e-09 4.39973983006023593e-10 +1.90546071796327789e-05 2.97801583518035409e-09 4.39467735714021348e-10 +1.92752491319096729e-05 2.97672697281038528e-09 4.38962070925372762e-10 +1.94984459975807709e-05 2.97543866825014644e-09 4.38456987969832048e-10 +1.97242273611488589e-05 2.97415092125822161e-09 4.37952486177924557e-10 +1.99526231496891216e-05 2.97286373159329945e-09 4.3744856488094585e-10 +2.01836636368159411e-05 2.97157709901417369e-09 4.36945223410961283e-10 +2.04173794466956298e-05 2.97029102327974143e-09 4.36442461100804145e-10 +2.06538015581056363e-05 2.96900550414900445e-09 4.35940277284075814e-10 +2.08929613085407411e-05 2.96772054138106953e-09 4.35438671295144466e-10 +2.11348903983668211e-05 2.96643613473514648e-09 4.34937642469143984e-10 +2.13796208950226788e-05 2.96515228397055014e-09 4.34437190141973449e-10 +2.16271852372705651e-05 2.96386898884669916e-09 4.33937313650295841e-10 +2.18776162394958951e-05 2.96258624912311767e-09 4.33438012331537629e-10 +2.2130947096056752e-05 2.96130406455943111e-09 4.32939285523887475e-10 +2.23872113856837756e-05 2.96002243491537164e-09 4.32441132566295773e-10 +2.26464430759309826e-05 2.95874135995077357e-09 4.31943552798473198e-10 +2.29086765276781217e-05 2.95746083942557627e-09 4.31446545560890451e-10 +2.3173946499685184e-05 2.95618087309982209e-09 4.30950110194777118e-10 +2.3442288153199625e-05 2.95490146073365925e-09 4.30454246042120585e-10 +2.37137370566169638e-05 2.95362260208733649e-09 4.29958952445665524e-10 +2.39883291901953238e-05 2.95234429692120924e-09 4.29464228748912803e-10 +2.42661009508245814e-05 2.9510665449957351e-09 4.28970074296118662e-10 +2.45470891568507362e-05 2.94978934607147588e-09 4.28476488432293938e-10 +2.48313310529561428e-05 2.94851269990909721e-09 4.27983470503203026e-10 +2.51188643150962488e-05 2.9472366062693673e-09 4.27491019855363162e-10 +2.54097270554935047e-05 2.94596106491315939e-09 4.26999135836043488e-10 +2.57039578276890989e-05 2.9446860756014489e-09 4.26507817793264226e-10 +2.60015956316531888e-05 2.94341163809531463e-09 4.26017065075795747e-10 +2.63026799189542952e-05 2.94213775215594084e-09 4.25526877033157641e-10 +2.66072505979885794e-05 2.94086441754461274e-09 4.25037253015618253e-10 +2.69153480392696478e-05 2.93959163402271973e-09 4.2454819237419318e-10 +2.72270130807796222e-05 2.93831940135175504e-09 4.24059694460645017e-10 +2.75422870333821715e-05 2.93704771929331405e-09 4.23571758627482214e-10 +2.7861211686298217e-05 2.93577658760909635e-09 4.23084384227958051e-10 +2.81838293126450603e-05 2.93450600606090414e-09 4.22597570616070058e-10 +2.85101826750396218e-05 2.93323597441064214e-09 4.22111317146559351e-10 +2.8840315031266595e-05 2.93196649242031934e-09 4.21625623174909185e-10 +2.91742701400122125e-05 2.93069755985204769e-09 4.21140488057344377e-10 +2.95120922666644097e-05 2.92942917646804048e-09 4.20655911150830642e-10 +2.98538261891801567e-05 2.92816134203061562e-09 4.20171891813073662e-10 +3.01995172040207307e-05 2.9268940563021932e-09 4.19688429402517994e-10 +3.05492111321557124e-05 2.92562731904529586e-09 4.1920552327834656e-10 +3.09029543251364966e-05 2.92436113002254924e-09 4.18723172800479402e-10 +3.12607936712401476e-05 2.92309548899668196e-09 4.18241377329573218e-10 +3.16227766016843984e-05 2.92183039573052563e-09 4.17760136227020328e-10 +3.19889510969145969e-05 2.92056584998701399e-09 4.17279448854947796e-10 +3.23593656929634527e-05 2.91930185152918337e-09 4.16799314576216706e-10 +3.27340694878844562e-05 2.91803840012017186e-09 4.1631973275442128e-10 +3.31131121482597539e-05 2.91677549552322175e-09 4.15840702753887951e-10 +3.34965439157834178e-05 2.91551313750167707e-09 4.15362223939674486e-10 +3.3884415613920913e-05 2.91425132581898403e-09 4.14884295677569357e-10 +3.42767786546457068e-05 2.91299006023869139e-09 4.14406917334090874e-10 +3.46736850452538452e-05 2.91172934052444966e-09 4.13930088276486087e-10 +3.50751873952574931e-05 2.91046916644001317e-09 4.13453807872730022e-10 +3.54813389233582519e-05 2.90920953774923674e-09 4.12978075491525259e-10 +3.5892193464501236e-05 2.907950454216079e-09 4.12502890502300436e-10 +3.63078054770108583e-05 2.9066919156045991e-09 4.12028252275209992e-10 +3.67282300498092038e-05 2.90543392167895915e-09 4.11554160181132922e-10 +3.71535229097180028e-05 2.90417647220342426e-09 4.1108061359167211e-10 +3.75837404288451783e-05 2.90291956694235963e-09 4.10607611879153548e-10 +3.80189396320568894e-05 2.90166320566023385e-09 4.10135154416625619e-10 +3.84591782045361349e-05 2.90040738812161683e-09 4.09663240577857745e-10 +3.89045144994288521e-05 2.89915211409118025e-09 4.09191869737340136e-10 +3.93550075455785471e-05 2.89789738333369876e-09 4.08721041270282646e-10 +3.98107170553505348e-05 2.8966431956140475e-09 4.08250754552614211e-10 +4.027170343254673e-05 2.89538955069720379e-09 4.07781008960981497e-10 +4.07380277804121076e-05 2.8941364483482475e-09 4.07311803872748701e-10 +4.1209751909733869e-05 2.8928838883323586e-09 4.06843138665996408e-10 +4.16869383470343989e-05 2.89163187041481963e-09 4.06375012719520716e-10 +4.21696503428590965e-05 2.89038039436101446e-09 4.05907425412832561e-10 +4.26579518801601515e-05 2.88912945993642911e-09 4.05440376126156735e-10 +4.31519076827774245e-05 2.88787906690665052e-09 4.0497386424043127e-10 +4.36515832240175149e-05 2.88662921503736613e-09 4.0450788913730655e-10 +4.41570447353321828e-05 2.88537990409436762e-09 4.04042450199144289e-10 +4.46683592150972562e-05 2.88413113384354509e-09 4.03577546809017053e-10 +4.5185594437493195e-05 2.88288290405089161e-09 4.03113178350707135e-10 +4.57088189614884786e-05 2.88163521448250079e-09 4.0264934420870582e-10 +4.62381021399270231e-05 2.88038806490456753e-09 4.02186043768212826e-10 +4.67735141287208258e-05 2.87914145508338851e-09 4.01723276415135002e-10 +4.73151258961490662e-05 2.87789538478536046e-09 4.0126104153608608e-10 +4.78630092322648675e-05 2.87664985377698272e-09 4.00799338518385476e-10 +4.84172367584109796e-05 2.87540486182485468e-09 4.00338166750057315e-10 +4.8977881936845679e-05 2.87416040869567669e-09 3.99877525619830323e-10 +4.95450190804800963e-05 2.87291649415625038e-09 3.99417414517136228e-10 +5.01187233627283153e-05 2.87167311797347834e-09 3.98957832832109446e-10 +5.06990708274715363e-05 2.87043027991436446e-09 3.98498779955585998e-10 +5.1286138399137599e-05 2.86918797974601191e-09 3.98040255279103096e-10 +5.18800038928972398e-05 2.867946217235626e-09 3.97582258194897798e-10 +5.2480746024978405e-05 2.86670499215051339e-09 3.97124788095906596e-10 +5.30884444230999962e-05 2.86546430425807958e-09 3.96667844375764379e-10 +5.37031796370264494e-05 2.86422415332583221e-09 3.96211426428803971e-10 +5.43250331492445179e-05 2.8629845391213782e-09 3.95755533650054837e-10 +5.4954087385763667e-05 2.86174546141242662e-09 3.95300165435242618e-10 +5.55904257270415863e-05 2.86050691996678664e-09 3.94845321180788303e-10 +5.62341325190361538e-05 2.85926891455236709e-09 3.94391000283807403e-10 +5.68852930843854099e-05 2.85803144493717773e-09 3.93937202142109073e-10 +5.75439937337169787e-05 2.85679451088932881e-09 3.9348392615419528e-10 +5.82103217770884476e-05 2.8555581121770315e-09 3.93031171719260293e-10 +5.88843655355602224e-05 2.85432224856859581e-09 3.9257893823718954e-10 +5.95662143529023902e-05 2.85308691983243352e-09 3.92127225108558888e-10 +6.02559586074371409e-05 2.85185212573705565e-09 3.91676031734634173e-10 +6.09536897240183003e-05 2.85061786605107413e-09 3.91225357517369915e-10 +6.16595001861496201e-05 2.84938414054320018e-09 3.90775201859408948e-10 +6.2373483548243351e-05 2.84815094898224589e-09 3.90325564164081236e-10 +6.30957344480207702e-05 2.84691829113712308e-09 3.89876443835403457e-10 +6.38263486190563338e-05 2.84568616677684403e-09 3.89427840278077921e-10 +6.45654229034670361e-05 2.84445457567052072e-09 3.8897975289749215e-10 +6.531305526474874e-05 2.84322351758736396e-09 3.88532181099717489e-10 +6.60693448007611245e-05 2.84199299229668549e-09 3.88085124291508946e-10 +6.68343917568630107e-05 2.84076299956789837e-09 3.87638581880303955e-10 +6.76082975391997473e-05 2.83953353917051245e-09 3.87192553274222008e-10 +6.83911647281445259e-05 2.83830461087413849e-09 3.8674703788206332e-10 +6.91830970918952653e-05 2.83707621444848858e-09 3.86302035113308666e-10 +6.99841996002289904e-05 2.835848349663372e-09 3.85857544378117987e-10 +7.07945784384154524e-05 2.83462101628869978e-09 3.85413565087330239e-10 +7.16143410212918895e-05 2.83339421409448139e-09 3.84970096652462044e-10 +7.24435960075007151e-05 2.83216794285082553e-09 3.84527138485707225e-10 +7.32824533138921413e-05 2.83094220232794063e-09 3.8408468999993588e-10 +7.41310241300935114e-05 2.82971699229613557e-09 3.8364275060869386e-10 +7.49894209332473746e-05 2.82849231252581769e-09 3.83201319726201632e-10 +7.58577575029201879e-05 2.82726816278749358e-09 3.82760396767353767e-10 +7.67361489361837308e-05 2.82604454285176994e-09 3.82319981147718056e-10 +7.76247116628710362e-05 2.82482145248935189e-09 3.81880072283534683e-10 +7.85235634610090727e-05 2.82359889147104422e-09 3.81440669591715659e-10 +7.94328234724300775e-05 2.82237685956775098e-09 3.81001772489843788e-10 +8.03526122185636789e-05 2.8211553565504755e-09 3.80563380396172146e-10 +8.12830516164119105e-05 2.81993438219031912e-09 3.80125492729623104e-10 +8.22242649947091229e-05 2.81871393625848451e-09 3.79688108909787602e-10 +8.31763771102691368e-05 2.81749401852627028e-09 3.79251228356924525e-10 +8.41395141645215756e-05 2.81627462876507682e-09 3.78814850491959675e-10 +8.51138038202397363e-05 2.81505576674640208e-09 3.78378974736485304e-10 +8.609937521846218e-05 2.81383743224184289e-09 3.77943600512759128e-10 +8.70963589956102107e-05 2.81261962502309575e-09 3.7750872724370366e-10 +8.81048873008035869e-05 2.81140234486195476e-09 3.77074354352905379e-10 +8.91250938133767562e-05 2.81018559153031411e-09 3.76640481264614061e-10 +9.01571137605979174e-05 2.80896936480016561e-09 3.76207107403741793e-10 +9.12010839355932405e-05 2.80775366444360031e-09 3.75774232195862616e-10 +9.22571427154786166e-05 2.8065384902328073e-09 3.75341855067211331e-10 +9.3325430079701431e-05 2.80532384194007533e-09 3.74909975444683088e-10 +9.44060876285946919e-05 2.80410971933779119e-09 3.74478592755832353e-10 +9.54992586021459786e-05 2.80289612219843968e-09 3.74047706428872233e-10 +9.66050878989837603e-05 2.80168305029460485e-09 3.73617315892673858e-10 +9.77237220955835221e-05 2.80047050339896796e-09 3.73187420576765501e-10 +9.88553094656963697e-05 2.79925848128431077e-09 3.72758019911331752e-10 +0.000100000000000002526 2.7980469837235114e-09 3.72329113327212947e-10 +0.000101157945425992411 2.79683601048954683e-09 3.71900700255904291e-10 +0.000102329299228078014 2.79562556135549246e-09 3.71472780129555083e-10 +0.000103514216667937022 2.79441563609452213e-09 3.71045352380967989e-10 +0.000104712854805092632 2.7932062344799077e-09 3.70618416443598376e-10 +0.0001059253725177316 2.79199735628501824e-09 3.70191971751553528e-10 +0.000107151930523763394 2.79078900128332288e-09 3.69766017739591777e-10 +0.000108392691402123151 2.78958116924838713e-09 3.69340553843121821e-10 +0.000109647819614321334 2.78837385995387536e-09 3.6891557949820206e-10 +0.000110917481526242974 2.7871670731735483e-09 3.68491094141539815e-10 +0.000112201845430199255 2.78596080868126674e-09 3.68067097210490453e-10 +0.000113501081567234463 2.78475506625098872e-09 3.67643588143056815e-10 +0.000114815362149691275 2.78354984565676941e-09 3.67220566377888238e-10 +0.000116144861384037318 2.78234514667276206e-09 3.66798031354280238e-10 +0.000117489755493956037 2.78114096907321749e-09 3.66375982512173278e-10 +0.000118850222743704966 2.77993731263248579e-09 3.65954419292152346e-10 +0.000120226443461744455 2.77873417712501176e-09 3.65533341135445978e-10 +0.000121618600064640013 2.77753156232534071e-09 3.65112747483925793e-10 +0.000123026877081241413 2.77632946800811391e-09 3.64692637780105557e-10 +0.000124451461177141809 2.77512789394807022e-09 3.6427301146714057e-10 +0.000125892541179420077 2.77392683992004735e-09 3.63853867988826625e-10 +0.000127350308101669562 2.77272630569897814e-09 3.63435206789599806e-10 +0.000128824955169316835 2.77152629105989512e-09 3.63017027314535247e-10 +0.000130316677845233425 2.77032679577792633e-09 3.62599329009346612e-10 +0.000131825673855644237 2.76912781962829868e-09 3.62182111320385372e-10 +0.000133352143216335973 2.76792936238633544e-09 3.61765373694640138e-10 +0.000134896288259168994 2.76673142382745789e-09 3.61349115579735566e-10 +0.000136458313658896138 2.76553400372718288e-09 3.60933336423932262e-10 +0.000138038426460292233 2.76433710186112649e-09 3.60518035676125383e-10 +0.000139636836105597574 2.76314071800500036e-09 3.60103212785844325e-10 +0.00014125375446227931 2.76194485193461412e-09 3.59688867203251847e-10 +0.000142889395851114224 2.76074950342587382e-09 3.59274998379143397e-10 +0.000144543977074596756 2.75955467225478306e-09 3.58861605764946288e-10 +0.000146217717445675893 2.75836035819744143e-09 3.58448688812719071e-10 +0.000147910838816824877 2.75716656103004695e-09 3.58036246975150871e-10 +0.00014962356560944753 2.75597328052889316e-09 3.57624279705560347e-10 +0.000151356124843625054 2.75478051647037081e-09 3.57212786457895488e-10 +0.000153108746168207298 2.75358826863096743e-09 3.56801766686732269e-10 +0.00015488166189125247 2.75239653678726775e-09 3.56391219847274389e-10 +0.000156675107010819314 2.75120532071595325e-09 3.55981145395352554e-10 +0.00015848931924611581 2.75001462019380015e-09 3.5557154278742328e-10 +0.000160324539069008661 2.74882443499768393e-09 3.55162411480568846e-10 +0.000162181009735897565 2.74763476490457477e-09 3.54753750932496004e-10 +0.000164058977319958571 2.74644560969154006e-09 3.54345560601535453e-10 +0.000165958690743760759 2.74525696913574436e-09 3.53937839946641385e-10 +0.00016788040181226079 2.74406884301444738e-09 3.5353058842739039e-10 +0.000169824365246179254 2.74288123110500602e-09 3.53123805503980788e-10 +0.000171790838715763704 2.74169413318487311e-09 3.52717490637232217e-10 +0.000173780082874942511 2.74050754903159828e-09 3.52311643288584544e-10 +0.0001757923613958743 2.73932147842282753e-09 3.51906262920097401e-10 +0.000177827941003897393 2.73813592113630156e-09 3.51501348994449409e-10 +0.000179887091512883962 2.73695087694985952e-09 3.51096900974937406e-10 +0.000181970085861003604 2.73576634564143566e-09 3.50692918325475768e-10 +0.000184077200146900917 2.73458232698905939e-09 3.50289400510595743e-10 +0.000186208713666292149 2.73339882077085851e-09 3.49886346995444675e-10 +0.000188364908948985524 2.73221582676505393e-09 3.49483757245785328e-10 +0.000190546071796330262 2.73103334474996537e-09 3.49081630727995164e-10 +0.000192752491319099229 2.72985137450400603e-09 3.48679966909065727e-10 +0.00019498445997581025 2.72866991580568631e-09 3.48278765256601756e-10 +0.000197242273611491164 2.7274889684336138e-09 3.47878025238820622e-10 +0.000199526231496893839 2.72630853216648873e-09 3.47477746324551606e-10 +0.000201836636368162047 2.72512860678310937e-09 3.47077927983235167e-10 +0.000204173794466958974 2.72394919206236951e-09 3.46678569684922123e-10 +0.000206538015581059074 2.72277028778325806e-09 3.46279670900273286e-10 +0.000208929613085410162 2.72159189372485949e-09 3.45881231100558323e-10 +0.000211348903983670969 2.72041400966635463e-09 3.45483249757655397e-10 +0.00021379620895022958 2.719236635387019e-09 3.45085726344050339e-10 +0.000216271852372708497 2.71805977066622453e-09 3.44688660332835923e-10 +0.000218776162394961824 2.71688341528343824e-09 3.44292051197711194e-10 +0.00022130947096057042 2.71570756901822228e-09 3.43895898412980797e-10 +0.000223872113856840691 2.71453223165023436e-09 3.43500201453554254e-10 +0.000226464430759312774 2.71335740295922729e-09 3.43104959794945238e-10 +0.000229086765276784198 2.71218308272505068e-09 3.42710172913271006e-10 +0.000231739464996854835 2.71100927072764802e-09 3.42315840285251466e-10 +0.000234422881531999279 2.70983596674705792e-09 3.41921961388208768e-10 +0.000237137370566172694 2.70866317056341452e-09 3.41528535700066369e-10 +0.000239883291901956308 2.70749088195694794e-09 3.41135562699348464e-10 +0.000242661009508248924 2.70631910070798217e-09 3.40743041865179372e-10 +0.0002454708915685105 2.70514782659693632e-09 3.40350972677282598e-10 +0.000248313310529564579 2.70397705940432629e-09 3.39959354615980422e-10 +0.000251188643150965652 2.70280679891075979e-09 3.39568187162192971e-10 +0.000254097270554938266 2.70163704489694297e-09 3.39177469797437697e-10 +0.000257039578276894228 2.70046779714367504e-09 3.38787202003828658e-10 +0.000260015956316535127 2.69929905543184991e-09 3.38397383264075741e-10 +0.000263026799189546218 2.69813081954245663e-09 3.38008013061484142e-10 +0.000266072505979889128 2.69696308925657977e-09 3.37619090879953389e-10 +0.000269153480392699852 2.69579586435539782e-09 3.37230616203977131e-10 +0.000272270130807799617 2.69462914462018311e-09 3.368425885186419e-10 +0.00027542287033382513 2.6934629298323052e-09 3.36455007309626952e-10 +0.000278612116862985619 2.69229721977322629e-09 3.36067872063203134e-10 +0.000281838293126454066 2.69113201422450284e-09 3.3568118226623247e-10 +0.000285101826750399755 2.68996731296778774e-09 3.35294937406167433e-10 +0.000288403150312669548 2.68880311578482646e-09 3.34909136971050278e-10 +0.000291742701400125751 2.68763942245746089e-09 3.34523780449512262e-10 +0.000295120922666647736 2.6864762327676247e-09 3.34138867330773081e-10 +0.000298538261891805273 2.68531354649734795e-09 3.33754397104640192e-10 +0.000301995172040211068 2.68415136342875498e-09 3.33370369261507988e-10 +0.000305492111321560892 2.68298968334406444e-09 3.32986783292357284e-10 +0.000309029543251368747 2.68182850602558721e-09 3.3260363868875469e-10 +0.000312607936712405352 2.68066783125573095e-09 3.32220934942851585e-10 +0.000316227766016847914 2.67950765881699638e-09 3.31838671547384008e-10 +0.000319889510969149926 2.67834798849197768e-09 3.31456847995671417e-10 +0.000323593656929638512 2.6771888200633654e-09 3.31075463781616332e-10 +0.000327340694878848601 2.67603015331394192e-09 3.30694518399703709e-10 +0.000331131121482601673 2.67487198802658349e-09 3.30314011345000015e-10 +0.000334965439157838406 2.67371432398426274e-09 3.29933942113152911e-10 +0.000338844156139213467 2.67255716097004369e-09 3.29554310200390121e-10 +0.000342767786546461432 2.67140049876708508e-09 3.29175115103519274e-10 +0.000346736850452542857 2.67024433715863994e-09 3.28796356319926766e-10 +0.000350751873952579363 2.6690886759280548e-09 3.28418033347577452e-10 +0.000354813389233586977 2.66793351485877003e-09 3.28040145685013919e-10 +0.000358921934645016873 2.66677885373431992e-09 3.27662692831355509e-10 +0.000363078054770113164 2.66562469233833139e-09 3.27285674286298053e-10 +0.000367282300498096646 2.66447103045452648e-09 3.2690908955011305e-10 +0.000371535229097184677 2.66331786786672073e-09 3.26532938123646944e-10 +0.000375837404288456459 2.66216520435882104e-09 3.26157219508320599e-10 +0.000380189396320573651 2.6610130397148303e-09 3.25781933206128429e-10 +0.000384591782045366174 2.65986137371884445e-09 3.2540707871963798e-10 +0.0003890451449942934 2.65871020615505205e-09 3.25032655551989154e-10 +0.000393550075455790431 2.65755953680773557e-09 3.24658663206893436e-10 +0.000398107170553510417 2.65640936546127013e-09 3.24285101188633532e-10 +0.00040271703432547245 2.65525969190012636e-09 3.23911969002062434e-10 +0.000407380277804126267 2.65411051590886508e-09 3.23539266152602859e-10 +0.000412097519097343935 2.65296183727214222e-09 3.23166992146246569e-10 +0.000416869383470349329 2.65181365577470718e-09 3.2279514648955391e-10 +0.000421696503428596386 2.6506659712014012e-09 3.22423728689652779e-10 +0.00042657951880160699 2.64951878333715897e-09 3.22052738254238361e-10 +0.000431519076827779761 2.64837209196700989e-09 3.21682174691572205e-10 +0.000436515832240180692 2.64722589687607436e-09 3.21312037510481648e-10 +0.000441570447353327412 2.64608019784956666e-09 3.20942326220359355e-10 +0.000446683592150978227 2.64493499467279414e-09 3.2057304033116218e-10 +0.000451855944374937655 2.64379028713115636e-09 3.20204179353411216e-10 +0.000457088189614890546 2.64264607501014678e-09 3.19835742798190506e-10 +0.000462381021399276004 2.64150235809535025e-09 3.19467730177146678e-10 +0.000467735141287214126 2.64035913617244636e-09 3.19100141002488378e-10 +0.000473151258961496612 2.63921640902720607e-09 3.18732974786985495e-10 +0.000478630092322654692 2.63807417644549342e-09 3.18366231043968434e-10 +0.000484172367584115922 2.63693243821326509e-09 3.17999909287327706e-10 +0.000489778819368463011 2.63579119411656997e-09 3.176340090315131e-10 +0.000495450190804807211 2.63465044394155087e-09 3.1726852979153301e-10 +0.00050118723362728955 2.63351018747444156e-09 3.16903471082954072e-10 +0.000506990708274721882 2.6323704245015693e-09 3.16538832421900135e-10 +0.000512861383991382617 2.63123115480935399e-09 3.16174613325051943e-10 +0.000518800038928979106 2.63009237818430693e-09 3.15810813309646264e-10 +0.000524807460249790826 2.62895409441303289e-09 3.1544743189347542e-10 +0.000530884444231006819 2.62781630328222764e-09 3.15084468594886564e-10 +0.000537031796370271474 2.62667900457868164e-09 3.14721922932780956e-10 +0.000543250331492452199 2.62554219808927471e-09 3.14359794426613604e-10 +0.000549540873857643744 2.62440588360098179e-09 3.13998082596392277e-10 +0.000555904257270423033 2.62327006090086714e-09 3.13636786962677147e-10 +0.00056234132519036883 2.62213472977608934e-09 3.13275907046579961e-10 +0.000568852930843861417 2.62099989001389836e-09 3.12915442369763521e-10 +0.000575439937337177132 2.61986554140163641e-09 3.12555392454441119e-10 +0.000582103217770891862 2.61873168372673709e-09 3.12195756823375605e-10 +0.000588843655355609651 2.61759831677672665e-09 3.11836534999879079e-10 +0.000595662143529031383 2.61646544033922358e-09 3.11477726507812161e-10 +0.00060255958607437893 2.61533305420193735e-09 3.11119330871583224e-10 +0.000609536897240190606 2.61420115815266966e-09 3.10761347616147972e-10 +0.000616595001861503953 2.61306975197931487e-09 3.10403776267008671e-10 +0.000623734835482441289 2.61193883546985788e-09 3.10046616350213475e-10 +0.000630957344480215644 2.61080840841237628e-09 3.09689867392356114e-10 +0.000638263486190571334 2.6096784705950382e-09 3.09333528920574707e-10 +0.000645654229034678439 2.60854902180610485e-09 3.0897760046255176e-10 +0.000653130552647495613 2.60742006183392925e-09 3.08622081546513082e-10 +0.000660693448007619566 2.60629159046695416e-09 3.08266971701227218e-10 +0.000668343917568638536 2.60516360749371541e-09 3.07912270456005289e-10 +0.000676082975392006038 2.60403611270283941e-09 3.07557977340699652e-10 +0.000683911647281453959 2.6029091058830456e-09 3.07204091885703795e-10 +0.000691830970918961489 2.6017825868231428e-09 3.06850613621951458e-10 +0.000699841996002298849 2.60065655531203326e-09 3.06497542080916169e-10 +0.000707945784384163604 2.59953101113870941e-09 3.06144876794610621e-10 +0.00071614341021292811 2.59840595409225468e-09 3.05792617295585796e-10 +0.000724435960075016502 2.5972813839618443e-09 3.05440763116930757e-10 +0.000732824533138930873 2.59615730053674491e-09 3.05089313792271562e-10 +0.000741310241300944628 2.59503370360631455e-09 3.04738268855771162e-10 +0.000749894209332483287 2.59391059296000185e-09 3.04387627842128363e-10 +0.000758577575029211609 2.59278796838734641e-09 3.04037390286577315e-10 +0.000767361489361847201 2.59166582967798008e-09 3.03687555724887042e-10 +0.000776247116628720336 2.59054417662162443e-09 3.03338123693360721e-10 +0.00078523563461010081 2.58942300900809206e-09 3.02989093728835008e-10 +0.000794328234724310913 2.58830232662728819e-09 3.02640465368679574e-10 +0.000803526122185647062 2.58718212926920695e-09 3.02292238150796276e-10 +0.000812830516164129405 2.58606241672393514e-09 3.01944411613618851e-10 +0.000822242649947101719 2.58494318878164848e-09 3.01596985296111927e-10 +0.000831763771102701993 2.58382444523261449e-09 3.01249958737770772e-10 +0.000841395141645226463 2.58270618586719209e-09 3.00903331478620564e-10 +0.000851138038202408232 2.58158841047583081e-09 3.00557103059215516e-10 +0.000860993752184632832 2.58047111884906907e-09 3.00211273020638668e-10 +0.000870963589956113247 2.57935431077753877e-09 2.99865840904501007e-10 +0.000881048873008047091 2.5782379860519595e-09 2.99520806252941159e-10 +0.000891250938133779 2.57712214446314306e-09 2.99176168608624301e-10 +0.000901571137605990829 2.57600678580199268e-09 2.98831927514742008e-10 +0.000912010839355944115 2.57489190985950008e-09 2.98488082515011425e-10 +0.000922571427154798038 2.5737775164267488e-09 2.98144633153674696e-10 +0.000933254300797026399 2.57266360529491131e-09 2.97801578975498453e-10 +0.000944060876285959198 2.57155017625525271e-09 2.97458919525772983e-10 +0.000954992586021472228 2.57043722909912704e-09 2.9711665435031197e-10 +0.00096605087898985018 2.56932476361797807e-09 2.96774782995451465e-10 +0.00097723722095584796 2.56821277960334099e-09 2.96433305008049727e-10 +0.000988553094656976572 2.56710127684684114e-09 2.96092219935486346e-10 +0.00100000000000003818 2.56599025514019279e-09 2.95751527325661623e-10 +0.00101157945425993726 2.56487971427520244e-09 2.95411226726996207e-10 +0.00102329299228079342 2.56376965404376426e-09 2.95071317688430215e-10 +0.00103514216667938358 2.56266007423786468e-09 2.94731799759422925e-10 +0.00104712854805093973 2.56155097464957942e-09 2.9439267248995179e-10 +0.00105925372517732966 2.56044235507107316e-09 2.94053935430512184e-10 +0.00107151930523764782 2.55933421529460157e-09 2.93715588132116881e-10 +0.00108392691402124544 2.55822655511251003e-09 2.93377630146295022e-10 +0.00109647819614322743 2.55711937431723412e-09 2.93040061025091806e-10 +0.00110917481526244402 2.55601267270129834e-09 2.92702880321067973e-10 +0.00112201845430200705 2.55490645005731816e-09 2.92366087587299027e-10 +0.00113501081567235918 2.55380070617799799e-09 2.92029682377374719e-10 +0.00114815362149692755 2.55269544085613156e-09 2.9169366424539843e-10 +0.00116144861384038806 2.55159065388460402e-09 2.913580327459867e-10 +0.00117489755493957546 2.55048634505638818e-09 2.91022787434268458e-10 +0.00118850222743706498 2.54938251416454787e-09 2.90687927865884502e-10 +0.00120226443461746006 2.54827916100223539e-09 2.90353453596986983e-10 +0.00121618600064641582 2.54717628536269242e-09 2.90019364184238783e-10 +0.00123026877081243002 2.54607388703925241e-09 2.89685659184812691e-10 +0.00124451461177143424 2.54497196582533612e-09 2.89352338156391297e-10 +0.00125892541179421693 2.54387052151445362e-09 2.89019400657166062e-10 +0.00127350308101671205 2.54276955390020473e-09 2.88686846245836645e-10 +0.00128824955169318505 2.54166906277627944e-09 2.88354674481610649e-10 +0.00130316677845235111 2.54056904793645667e-09 2.88022884924202838e-10 +0.00131825673855645955 2.53946950917460342e-09 2.87691477133834524e-10 +0.00133352143216337719 2.53837044628467768e-09 2.87360450671233096e-10 +0.00134896288259170739 2.53727185906072512e-09 2.87029805097631352e-10 +0.001364583136588979 2.5361737472968816e-09 2.86699539974766928e-10 +0.00138038426460293994 2.53507611078737145e-09 2.86369654864881834e-10 +0.00139636836105599352 2.53397894932650753e-09 2.86040149330721676e-10 +0.00141253754462281099 2.53288226270869409e-09 2.85711022935535195e-10 +0.00142889395851116029 2.53178605072842061e-09 2.85382275243073694e-10 +0.00144543977074598567 2.53069031318027e-09 2.85053905817590474e-10 +0.0014621771744567772 2.52959504985890957e-09 2.84725914223840103e-10 +0.00147910838816826731 2.52850026055909885e-09 2.84398300027078115e-10 +0.00149623565609449411 2.52740594507568423e-09 2.84071062793060123e-10 +0.00151356124843626968 2.52631210320360225e-09 2.83744202088041463e-10 +0.0015310874616820925 2.52521873473787757e-09 2.83417717478776619e-10 +0.00154881661891254443 2.52412583947362292e-09 2.83091608532518457e-10 +0.00156675107010821298 2.52303341720604038e-09 2.827658748170178e-10 +0.00158489319246117827 2.52194146773042135e-09 2.8244051590052292e-10 +0.00160324539069010711 2.52084999084214451e-09 2.82115531351778811e-10 +0.00162181009735899652 2.51975898633667788e-09 2.81790920740026619e-10 +0.00164058977319960679 2.51866845400957756e-09 2.8146668363500323e-10 +0.00165958690743762895 2.517578393656489e-09 2.81142819606940598e-10 +0.00167880401812262959 2.51648880507314491e-09 2.80819328226565176e-10 +0.0016982436524618145 2.51539968805536733e-09 2.80496209065097243e-10 +0.00171790838715765921 2.51431104239906558e-09 2.80173461694250596e-10 +0.00173780082874944739 2.51322286790023913e-09 2.79851085686231771e-10 +0.00175792361395876555 2.51213516435497391e-09 2.79529080613739479e-10 +0.00177827941003899669 2.51104793155944474e-09 2.79207446049964239e-10 +0.0017988709151288626 2.50996116930991498e-09 2.78886181568587556e-10 +0.00181970085861005919 2.50887487740273649e-09 2.78565286743781452e-10 +0.00184077200146903265 2.50778905563434797e-09 2.78244761150207949e-10 +0.0018620871366629454 2.50670370380127746e-09 2.77924604363018607e-10 +0.00188364908948987953 2.50561882170013988e-09 2.77604815957853588e-10 +0.00190546071796332712 2.50453440912763902e-09 2.7728539551084156e-10 +0.00192752491319101707 2.50345046588056765e-09 2.76966342598598707e-10 +0.00194984459975812755 2.5023669917558037e-09 2.76647656798228528e-10 +0.00197242273611493695 2.50128398655031528e-09 2.76329337687321111e-10 +0.00199526231496896392 2.50020145006115859e-09 2.76011384843952458e-10 +0.0020183663636816466 2.49911938208547543e-09 2.7569379784668413e-10 +0.00204173794466961604 2.4980377824204978e-09 2.75376576274562672e-10 +0.00206538015581061735 2.49695665086354367e-09 2.75059719707118892e-10 +0.00208929613085412878 2.49587598721202e-09 2.74743227724367395e-10 +0.00211348903983673729 2.49479579126342054e-09 2.74427099906806119e-10 +0.00213796208950232372 2.49371606281532718e-09 2.7411133583541566e-10 +0.002162718523727113 2.49263680166540988e-09 2.73795935091658656e-10 +0.0021877616239496466 2.49155800761142463e-09 2.73480897257479523e-10 +0.0022130947096057332 2.49047968045121678e-09 2.7316622191530348e-10 +0.00223872113856843618 2.48940181998271725e-09 2.72851908648036488e-10 +0.00226464430759315766 2.48832442600394674e-09 2.7253795703906407e-10 +0.00229086765276787256 2.48724749831301032e-09 2.72224366672251459e-10 +0.00231739464996857936 2.48617103670810446e-09 2.71911137131942518e-10 +0.00234422881532002402 2.48509504098750875e-09 2.71598268002959426e-10 +0.0023713737056617586 2.48401951094959337e-09 2.7128575887060211e-10 +0.00239883291901959528 2.48294444639281371e-09 2.70973609320647522e-10 +0.00242661009508252177 2.4818698471157128e-09 2.70661818939349485e-10 +0.00245470891568513785 2.48079571291692181e-09 2.70350387313437707e-10 +0.00248313310529567908 2.47972204359515874e-09 2.70039314030117372e-10 +0.00251188643150969046 2.47864883894922763e-09 2.69728598677068774e-10 +0.00254097270554941692 2.47757609877802018e-09 2.69418240842446648e-10 +0.0025703957827689773 2.47650382288051621e-09 2.69108240114879393e-10 +0.00260015956316538704 2.47543201105578114e-09 2.68798596083469021e-10 +0.0026302679918954984 2.47436066310296806e-09 2.68489308337790173e-10 +0.0026607250597989276 2.47328977882131612e-09 2.68180376467889759e-10 +0.00269153480392703539 2.47221935801015294e-09 2.67871800064286442e-10 +0.00272270130807803368 2.47114940046889137e-09 2.67563578717970013e-10 +0.00275422870333828914 2.47007990599703192e-09 2.67255712020400829e-10 +0.00278612116862989468 2.46901087439416155e-09 2.66948199563509445e-10 +0.00281838293126457969 2.46794230545995449e-09 2.66641040939695841e-10 +0.00285101826750403702 2.466874198994171e-09 2.66334235741829062e-10 +0.00288403150312673516 2.46580655479665858e-09 2.66027783563246593e-10 +0.00291742701400129773 2.46473937266735038e-09 2.65721683997753847e-10 +0.00295120922666651823 2.46367265240626804e-09 2.65415936639623541e-10 +0.00298538261891809382 2.46260639381351757e-09 2.65110541083595336e-10 +0.00301995172040215231 2.46154059668929267e-09 2.64805496924875114e-10 +0.0030549211132156512 2.46047526083387389e-09 2.64500803759134663e-10 +0.00309029543251373041 2.45941038604762657e-09 2.64196461182510858e-10 +0.00312607936712409667 2.45834597213100454e-09 2.63892468791605341e-10 +0.00316227766016852294 2.45728201888454645e-09 2.63588826183483858e-10 +0.00319889510969154339 2.45621852610887735e-09 2.6328553295567584e-10 +0.0032359365692964299 2.45515549360471001e-09 2.62982588706173731e-10 +0.00327340694878853122 2.45409292117284195e-09 2.62679993033432734e-10 +0.00331131121482606226 2.45303080861415716e-09 2.62377745536369823e-10 +0.00334965439157842992 2.45196915572962688e-09 2.62075845814363643e-10 +0.00338844156139218085 2.45090796232030674e-09 2.61774293467253785e-10 +0.00342767786546466094 2.44984722818733961e-09 2.61473088095340271e-10 +0.00346736850452547584 2.44878695313195523e-09 2.61172229299382929e-10 +0.00350751873952584144 2.44772713695546649e-09 2.60871716680601088e-10 +0.00354813389233591802 2.44666777945927558e-09 2.60571549840672905e-10 +0.00358921934645021774 2.44560888044486866e-09 2.6027172838173474e-10 +0.00363078054770118097 2.44455043971381877e-09 2.59972251906380955e-10 +0.00367282300498101644 2.4434924570677837e-09 2.59673120017663031e-10 +0.00371535229097189751 2.44243493230850811e-09 2.59374332319089159e-10 +0.00375837404288461609 2.4413778652378227e-09 2.59075888414623923e-10 +0.00380189396320578877 2.44032125565764251e-09 2.58777787908687429e-10 +0.00384591782045371486 2.43926510336996947e-09 2.58480030406154987e-10 +0.00389045144994298745 2.43820940817689109e-09 2.581826155123566e-10 +0.00393550075455795841 2.43715416988058011e-09 2.57885542833076393e-10 +0.00398107170553515903 2.43609938828329486e-09 2.57588811974551942e-10 +0.00402717034325477969 2.43504506318737971e-09 2.57292422543474064e-10 +0.0040738027780413185 2.43399119439526504e-09 2.56996374146986148e-10 +0.00412097519097349551 2.43293778170946522e-09 2.56700666392683484e-10 +0.00416869383470354956 2.43188482493258103e-09 2.56405298888612896e-10 +0.00421696503428602067 2.43083232386729928e-09 2.56110271243272231e-10 +0.00426579518801612715 2.42978027831639077e-09 2.55815583065609942e-10 +0.00431519076827785539 2.42872868808271229e-09 2.55521233965024156e-10 +0.00436515832240186568 2.42767755296920708e-09 2.55227223551362679e-10 +0.00441570447353333354 2.42662687277890194e-09 2.54933551434922163e-10 +0.00446683592150984212 2.42557664731490885e-09 2.54640217226447648e-10 +0.00451855944374943749 2.42452687638042707e-09 2.54347220537132035e-10 +0.00457088189614896726 2.42347755977873899e-09 2.54054560978615682e-10 +0.00462381021399282249 2.42242869731321261e-09 2.53762238162985675e-10 +0.00467735141287220404 2.42138028878730195e-09 2.53470251702775622e-10 +0.00473151258961502976 2.42033233400454543e-09 2.53178601210964775e-10 +0.00478630092322661176 2.41928483276856622e-09 2.52887286300977875e-10 +0.00484172367584122503 2.41823778488307272e-09 2.52596306586684324e-10 +0.00489778819368469689 2.4171911901518585e-09 2.52305661682397925e-10 +0.0049545019080481402 2.41614504837880153e-09 2.52015351202876163e-10 +0.00501187233627296402 2.41509935936786538e-09 2.51725374763319941e-10 +0.00506990708274728755 2.41405412292309757e-09 2.51435731979372757e-10 +0.00512861383991389599 2.41300933884863209e-09 2.51146422467120443e-10 +0.00518800038928986153 2.41196500694868561e-09 2.50857445843090597e-10 +0.0052480746024979796 2.41092112702755961e-09 2.50568801724252015e-10 +0.00530884444231014083 2.40987769888964325e-09 2.50280489728014225e-10 +0.00537031796370278803 2.40883472233940675e-09 2.49992509472226919e-10 +0.00543250331492459593 2.40779219718140677e-09 2.49704860575179692e-10 +0.00549540873857651269 2.40675012322028475e-09 2.49417542655601064e-10 +0.005559042572704306 2.40570850026076486e-09 2.49130555332658529e-10 +0.00562341325190376419 2.40466732810765811e-09 2.48843898225957572e-10 +0.00568852930843869158 2.40362660656585908e-09 2.48557570955541568e-10 +0.00575439937337185025 2.40258633544034627e-09 2.48271573141890849e-10 +0.00582103217770899885 2.40154651453618259e-09 2.47985904405922654e-10 +0.00588843655355617782 2.40050714365851655e-09 2.47700564368990199e-10 +0.00595662143529039623 2.39946822261257895e-09 2.47415552652882621e-10 +0.00602559586074387279 2.39842975120368746e-09 2.47130868879824055e-10 +0.00609536897240199084 2.39739172923724164e-09 2.46846512672473264e-10 +0.00616595001861512497 2.39635415651872708e-09 2.46562483653923489e-10 +0.00623734835482449984 2.39531703285371165e-09 2.46278781447701311e-10 +0.00630957344480224426 2.3942803580478497e-09 2.45995405677766701e-10 +0.00638263486190580268 2.39324413190687743e-09 2.45712355968512246e-10 +0.00645654229034687503 2.39220835423661586e-09 2.45429631944762734e-10 +0.00653130552647504786 2.39117302484297161e-09 2.45147233231774638e-10 +0.00660693448007628869 2.39013814353193317e-09 2.44865159455235548e-10 +0.00668343917568647861 2.38910371010957386e-09 2.44583410241263912e-10 +0.00676082975392015492 2.38806972438205092e-09 2.44301985216408208e-10 +0.00683911647281463479 2.38703618615560598e-09 2.44020884007646736e-10 +0.00691830970918971052 2.38600309523656338e-09 2.43740106242386899e-10 +0.00699841996002308498 2.38497045143133226e-09 2.43459651548464991e-10 +0.00707945784384173341 2.38393825454640488e-09 2.43179519554145373e-10 +0.00716143410212937911 2.38290650438835788e-09 2.42899709888120161e-10 +0.00724435960075026433 2.3818752007638506e-09 2.42620222179508659e-10 +0.00732824533138940956 2.38084434347962843e-09 2.4234105605785715e-10 +0.00741310241300954884 2.37981393234251656e-09 2.42062211153137865e-10 +0.00749894209332493695 2.37878396715942748e-09 2.41783687095749032e-10 +0.00758577575029222104 2.37775444773735554e-09 2.41505483516514049e-10 +0.00767361489361857805 2.37672537388337782e-09 2.41227600046681073e-10 +0.00776247116628731113 2.37569674540465702e-09 2.40950036317922655e-10 +0.00785235634610111609 2.37466856210843771e-09 2.40672791962335071e-10 +0.00794328234724321798 2.37364082380204802e-09 2.40395866612437956e-10 +0.00803526122185658012 2.37261353029290005e-09 2.40119259901173792e-10 +0.00812830516164140572 2.37158668138848942e-09 2.39842971461907333e-10 +0.00822242649947113081 2.37056027689639367e-09 2.39567000928425354e-10 +0.00831763771102713573 2.36953431662427509e-09 2.39291347934935819e-10 +0.00841395141645238237 2.36850880037987872e-09 2.39016012116067674e-10 +0.00851138038202420115 2.36748372797103271e-09 2.3874099310687028e-10 +0.0086099375218464478 2.36645909920564836e-09 2.38466290542812845e-10 +0.00870963589956125391 2.36543491389172051e-09 2.38191904059784215e-10 +0.00881048873008059494 2.3644111718373267e-09 2.37917833294091944e-10 +0.00891250938133791512 2.36338787285062679e-09 2.37644077882462192e-10 +0.00901571137606003471 2.36236501673986586e-09 2.37370637462039105e-10 +0.00912010839355956865 2.36134260331336959e-09 2.37097511670384345e-10 +0.00922571427154810809 2.36032063237954808e-09 2.36824700145476579e-10 +0.00933254300797039388 2.3592991037468937e-09 2.36552202525711063e-10 +0.00944060876285972295 2.35827801722398157e-09 2.36280018449899019e-10 +0.00954992586021485498 2.35725737261947075e-09 2.36008147557267486e-10 +0.00966050878989863603 2.35623716974210176e-09 2.35736589487458382e-10 +0.00977237220955861491 2.35521740840069871e-09 2.35465343880528355e-10 +0.00988553094656990233 2.3541980884041688e-09 2.35194410376948264e-10 +0.0100000000000005206 2.35317920956150032e-09 2.34923788617602608e-10 +0.0101157945425995131 2.35216077168176591e-09 2.34653478243789064e-10 +0.0102329299228080765 2.35114277457411972e-09 2.34383478897218125e-10 +0.0103514216667939807 2.35012521804779982e-09 2.34113790220012475e-10 +0.0104712854805095457 2.34910810191212495e-09 2.33844411854706583e-10 +0.0105925372517734467 2.34809142597649782e-09 2.33575343444246282e-10 +0.0107151930523766287 2.34707519005040384e-09 2.33306584631988205e-10 +0.0108392691402126075 2.3460593939434099e-09 2.33038135061699318e-10 +0.01096478196143243 2.3450440374651652e-09 2.32769994377556585e-10 +0.0110917481526245972 2.34402912042540206e-09 2.32502162224146242e-10 +0.0112201845430202288 2.34301464263393513e-09 2.32234638246463566e-10 +0.0113501081567237531 2.34200060390066092e-09 2.31967422089912309e-10 +0.0114815362149694386 2.34098700403555827e-09 2.31700513400304252e-10 +0.0116144861384040472 2.33997384284868872e-09 2.31433911823858692e-10 +0.0117489755493959229 2.33896112015019571e-09 2.31167617007201954e-10 +0.0118850222743708198 2.33794883575030457e-09 2.30901628597366996e-10 +0.0120226443461747719 2.33693698945932335e-09 2.30635946241792949e-10 +0.0121618600064643308 2.33592558108764156e-09 2.30370569588324573e-10 +0.0123026877081244754 2.33491461044573105e-09 2.30105498285211765e-10 +0.0124451461177145194 2.33390407734414634e-09 2.29840731981109328e-10 +0.0125892541179423497 2.33289398159352224e-09 2.29576270325076193e-10 +0.0127350308101673027 2.33188432300457747e-09 2.29312112966575162e-10 +0.0128824955169320344 2.33087510138811185e-09 2.29048259555472289e-10 +0.013031667784523698 2.32986631655500708e-09 2.28784709742036594e-10 +0.0131825673855647842 2.3288579683162259e-09 2.2852146317693944e-10 +0.0133352143216339623 2.32785005648281505e-09 2.28258519511254229e-10 +0.0134896288259172669 2.32684258086590023e-09 2.27995878396455802e-10 +0.0136458313658899856 2.32583554127669071e-09 2.27733539484419901e-10 +0.0138038426460295981 2.32482893752647722e-09 2.27471502427423033e-10 +0.0139636836105601347 2.32382276942663157e-09 2.27209766878141702e-10 +0.014125375446228312 2.32281703678860827e-09 2.26948332489652067e-10 +0.0142889395851118067 2.32181173942394291e-09 2.26687198915429429e-10 +0.0144543977074600635 2.32080687714425213e-09 2.26426365809347893e-10 +0.0146217717445679806 2.31980244976123406e-09 2.26165832825679749e-10 +0.014791083881682883 2.31879845708666912e-09 2.2590559961909521e-10 +0.0149623565609451527 2.31779489893241922e-09 2.25645665844661643e-10 +0.0151356124843629106 2.31679177511042651e-09 2.25386031157843457e-10 +0.0153108746168211414 2.31578908543271667e-09 2.25126695214501414e-10 +0.0154881661891256642 2.31478682971139396e-09 2.2486765767089239e-10 +0.015667510701082351 2.3137850077586458e-09 2.24608918183668575e-10 +0.0158489319246120051 2.31278361938674106e-09 2.24350476409877425e-10 +0.0160324539069012957 2.31178266440802885e-09 2.24092332006960829e-10 +0.0162181009735901903 2.31078214263493977e-09 2.23834484632754958e-10 +0.0164058977319962961 2.30978205387998588e-09 2.23576933945489618e-10 +0.0165958690743765215 2.30878239795576074e-09 2.23319679603787912e-10 +0.0167880401812265309 2.30778317467493771e-09 2.23062721266665779e-10 +0.0169824365246183835 2.30678438385027247e-09 2.22806058593531393e-10 +0.0171790838715768328 2.30578602529460134e-09 2.2254969124418486e-10 +0.0173780082874947193 2.30478809882084129e-09 2.22293618878817799e-10 +0.0175792361395879018 2.3037906042419912e-09 2.22037841158012749e-10 +0.0177827941003902146 2.30279354137112974e-09 2.21782357742742861e-10 +0.0179887091512888793 2.30179691002141792e-09 2.21527168294371275e-10 +0.018197008586100849 2.30080071000609489e-09 2.21272272474650887e-10 +0.0184077200146905845 2.29980494113848419e-09 2.21017669945723732e-10 +0.0186208713666297133 2.29880960323198793e-09 2.20763360370120592e-10 +0.0188364908948990585 2.29781469610008888e-09 2.2050934341076061e-10 +0.0190546071796335384 2.2968202195563521e-09 2.20255618730950673e-10 +0.0192752491319104387 2.29582617341442085e-09 2.20002185994385174e-10 +0.0194984459975815448 2.29483255748802231e-09 2.19749044865145444e-10 +0.0197242273611496419 2.29383937159096145e-09 2.19496195007699344e-10 +0.0199526231496899159 2.29284661553712468e-09 2.19243636086900741e-10 +0.0201836636368167427 2.2918542891404795e-09 2.18991367767989202e-10 +0.0204173794466964396 2.29086239221507365e-09 2.187393897165895e-10 +0.0206538015581064563 2.2898709245750355e-09 2.18487701598711102e-10 +0.0208929613085415723 2.28887988603457368e-09 2.18236303080747723e-10 +0.0211348903983676617 2.28788927640797578e-09 2.1798519382947702e-10 +0.0213796208950235295 2.2868990955096134e-09 2.17734373512060101e-10 +0.0216271852372714249 2.2859093431539346e-09 2.17483841796040877e-10 +0.0218776162394967617 2.2849200191554702e-09 2.17233598349346011e-10 +0.0221309470960576286 2.28393112332882999e-09 2.16983642840284089e-10 +0.0223872113856846619 2.28294265548870484e-09 2.16733974937545445e-10 +0.0226464430759318776 2.28195461544986543e-09 2.16484594310201532e-10 +0.0229086765276790283 2.28096700302716228e-09 2.16235500627704723e-10 +0.0231739464996860989 2.27997981803552695e-09 2.15986693559887634e-10 +0.0234422881532005516 2.27899306028997043e-09 2.15738172776962763e-10 +0.0237137370566179 2.27800672960558393e-09 2.15489937949522182e-10 +0.0239883291901962677 2.27702082579753851e-09 2.15241988748536812e-10 +0.0242661009508255351 2.27603534868108502e-09 2.14994324845356317e-10 +0.0245470891568517029 2.27505029807155497e-09 2.14746945911708437e-10 +0.0248313310529571195 2.27406567378435971e-09 2.14499851619698751e-10 +0.0251188643150972377 2.27308147563498998e-09 2.14253041641809955e-10 +0.0254097270554945048 2.27209770343901636e-09 2.14006515650901681e-10 +0.0257039578276901104 2.27111435701208964e-09 2.13760273320209929e-10 +0.0260015956316542104 2.27013143616994087e-09 2.13514314323346857e-10 +0.0263026799189553309 2.26914894072837926e-09 2.13268638334299881e-10 +0.026607250597989629 2.2681668705032951e-09 2.13023245027431827e-10 +0.0269153480392707103 2.26718522531065805e-09 2.12778134077480053e-10 +0.0272270130807806959 2.26620400496651764e-09 2.12533305159556164e-10 +0.0275422870333832566 2.26522320928700194e-09 2.12288757949145652e-10 +0.0278612116862993163 2.2642428380883197e-09 2.12044492122107375e-10 +0.0281838293126461699 2.26326289118675908e-09 2.11800507354673201e-10 +0.028510182675040744 2.2622833683986872e-09 2.11556803323447459e-10 +0.0288403150312677332 2.26130426954055146e-09 2.11313379705406634e-10 +0.0291742701400133642 2.26032559442887781e-09 2.11070236177898847e-10 +0.0295120922666655752 2.25934734288027246e-09 2.10827372418643623e-10 +0.0298538261891813372 2.2583695147114202e-09 2.10584788105731088e-10 +0.0301995172040219265 2.25739210973908561e-09 2.10342482917621922e-10 +0.0305492111321569206 2.25641512778011231e-09 2.10100456533146761e-10 +0.0309029543251377152 2.25543856865142373e-09 2.09858708631505756e-10 +0.0312607936712413839 2.25446243217002268e-09 2.09617238892268137e-10 +0.031622776601685651 2.25348671815298935e-09 2.09376046995371929e-10 +0.0319889510969158589 2.25251142641748456e-09 2.09135132621123326e-10 +0.0323593656929647283 2.25153655678074938e-09 2.08894495450196492e-10 +0.0327340694878857433 2.25056210906010178e-09 2.08654135163632908e-10 +0.0331131121482610563 2.24958808307294001e-09 2.08414051442841067e-10 +0.0334965439157847364 2.24861447863674085e-09 2.0817424396959616e-10 +0.0338844156139222474 2.24764129556906013e-09 2.07934712426039483e-10 +0.0342767786546470526 2.24666853368753346e-09 2.07695456494677896e-10 +0.0346736850452552051 2.24569619280987422e-09 2.07456475858383844e-10 +0.035075187395258868 2.2447242727538748e-09 2.07217770200394483e-10 +0.0354813389233596399 2.24375277333740738e-09 2.06979339204311548e-10 +0.0358921934645026405 2.24278169437842277e-09 2.06741182554100762e-10 +0.0363078054770122824 2.24181103569494907e-09 2.06503299934091544e-10 +0.0367282300498106423 2.24084079710509506e-09 2.0626569102897645e-10 +0.0371535229097194608 2.23987097842704727e-09 2.06028355523810984e-10 +0.0375837404288466501 2.23890157947907122e-09 2.05791293104012906e-10 +0.0380189396320583795 2.23793260007951103e-09 2.05554503455361918e-10 +0.0384591782045376473 2.23696404004678896e-09 2.05317986263999432e-10 +0.0389045144994303801 2.23599589919940628e-09 2.05081741216427873e-10 +0.0393550075455800924 2.23502817735594327e-09 2.04845767999510343e-10 +0.0398107170553521003 2.23406087433505795e-09 2.04610066300470415e-10 +0.0402717034325483156 2.23309398995548774e-09 2.04374635806891431e-10 +0.0407380277804137089 2.23212752403604658e-09 2.04139476206716222e-10 +0.0412097519097354842 2.23116147639562909e-09 2.03904587188246642e-10 +0.0416869383470360316 2.23019584685320677e-09 2.03669968440143386e-10 +0.0421696503428607497 2.22923063522783098e-09 2.0343561965142511e-10 +0.0426579518801618249 2.22826584133862957e-09 2.03201540511468433e-10 +0.0431519076827791143 2.22730146500480981e-09 2.02967730710007473e-10 +0.0436515832240192206 2.22633750604565715e-09 2.02734189937133248e-10 +0.0441570447353339113 2.22537396428053435e-09 2.02500917883293293e-10 +0.0446683592150990058 2.22441083952888362e-09 2.02267914239291448e-10 +0.0451855944374949664 2.22344813161022489e-09 2.02035178696287348e-10 +0.0457088189614902676 2.22248584034415586e-09 2.01802710945795822e-10 +0.0462381021399288286 2.2215239655503524e-09 2.01570510679686844e-10 +0.0467735141287226527 2.22056250704856813e-09 2.01338577590184784e-10 +0.0473151258961509169 2.21960146465863567e-09 2.011069113698682e-10 +0.0478630092322667386 2.21864083820046457e-09 2.0087551171166945e-10 +0.0484172367584128766 2.21768062749404295e-09 2.00644378308874099e-10 +0.0489778819368476004 2.2167208323594371e-09 2.0041351085512066e-10 +0.0495450190804820403 2.21576145261678985e-09 2.00182909044400205e-10 +0.0501187233627302872 2.21480248808632341e-09 1.99952572571055849e-10 +0.050699070827473533 2.21384393858833734e-09 1.99722501129782466e-10 +0.0512861383991396191 2.21288580394320772e-09 1.99492694415626171e-10 +0.0518800038928992832 2.21192808397139045e-09 1.99263152123983933e-10 +0.0524807460249804708 2.21097077849341751e-09 1.99033873950603343e-10 +0.0530884444231020866 2.21001388732989951e-09 1.98804859591581914e-10 +0.0537031796370285655 2.20905741030152394e-09 1.98576108743366979e-10 +0.0543250331492466584 2.2081013472290569e-09 1.98347621102755047e-10 +0.0549540873857658346 2.20714569793334099e-09 1.98119396366891537e-10 +0.0555904257270437782 2.20619046223529698e-09 1.97891434233270324e-10 +0.056234132519038374 2.20523563995592259e-09 1.97663734399733392e-10 +0.0568852930843876531 2.20428123091629408e-09 1.97436296564470428e-10 +0.0575439937337192467 2.20332723493756386e-09 1.97209120426018248e-10 +0.0582103217770907413 2.20237365184096287e-09 1.969822056832607e-10 +0.0588843655355625398 2.20142048144779861e-09 1.96755552035428009e-10 +0.0595662143529047325 2.2004677235794559e-09 1.96529159182096501e-10 +0.0602559586074395068 2.19951537805739773e-09 1.96303026823188237e-10 +0.060953689724020696 2.19856344470316318e-09 1.96077154658970419e-10 +0.0616595001861520442 2.19761192333836994e-09 1.95851542390055285e-10 +0.0623734835482458033 2.19666081378471178e-09 1.95626189717399442e-10 +0.0630957344480232579 2.19571011586395981e-09 1.95401096342303653e-10 +0.0638263486190588508 2.1947598293979629e-09 1.95176261966412375e-10 +0.0645654229034695881 2.19380995420864603e-09 1.94951686291713244e-10 +0.0653130552647513268 2.19286049011801192e-09 1.94727369020536991e-10 +0.066069344800763749 2.19191143694814064e-09 1.94503309855556725e-10 +0.0668343917568656604 2.19096279452118877e-09 1.94279508499787645e-10 +0.0676082975392024305 2.19001456265938982e-09 1.94055964656586783e-10 +0.0683911647281472412 2.18906674118505423e-09 1.93832678029652408e-10 +0.0691830970918980159 2.18811932992056936e-09 1.93609648323023769e-10 +0.0699841996002317779 2.18717232868839993e-09 1.93386875241080629e-10 +0.0707945784384182708 2.18622573731108673e-09 1.93164358488542929e-10 +0.0716143410212947418 2.18527955561124791e-09 1.92942097770470322e-10 +0.0724435960075036078 2.18433378341157815e-09 1.92720092792261838e-10 +0.073282453313895074 2.18338842053484944e-09 1.92498343259655549e-10 +0.074131024130096479 2.18244346680390906e-09 1.92276848878728024e-10 +0.074989420933250367 2.18149892204168204e-09 1.92055609355894095e-10 +0.0758577575029232148 2.18055478607117035e-09 1.91834624397906398e-10 +0.0767361489361867988 2.17961105871545205e-09 1.91613893711854926e-10 +0.0776247116628741435 2.17866773979768129e-09 1.9139341700516675e-10 +0.0785235634610122052 2.17772482914108958e-09 1.91173193985605603e-10 +0.0794328234724332449 2.17678232656898452e-09 1.9095322436127144e-10 +0.0803526122185668906 2.17584023190475065e-09 1.90733507840600053e-10 +0.0812830516164151501 2.17489854497184819e-09 1.90514044132362835e-10 +0.082224264994712401 2.17395726559381386e-09 1.90294832945666164e-10 +0.0831763771102724536 2.17301639359426174e-09 1.90075873989951139e-10 +0.0841395141645249339 2.17207592879688118e-09 1.89857166974993248e-10 +0.0851138038202431391 2.17113587102543804e-09 1.89638711610901849e-10 +0.0860993752184656264 2.17019622010377511e-09 1.89420507608119914e-10 +0.0870963589956137013 2.16925697585581045e-09 1.89202554677423561e-10 +0.0881048873008071221 2.16831813810553906e-09 1.88984852529921691e-10 +0.0891250938133803378 2.16737970667703202e-09 1.88767400877055632e-10 +0.090157113760601551 2.16644168139443611e-09 1.88550199430598693e-10 +0.0912010839355969077 2.16550406208197463e-09 1.88333247902655885e-10 +0.0922571427154823265 2.16456684856394697e-09 1.88116546005663449e-10 +0.0933254300797051878 2.16363004066472779e-09 1.87900093452388554e-10 +0.0944060876285984923 2.16269363820876911e-09 1.87683889955928723e-10 +0.0954992586021498335 2.16175764102059779e-09 1.87467935229711782e-10 +0.0966050878989876544 2.16082204892481722e-09 1.87252228987495162e-10 +0.0977237220955874675 2.15988686174610646e-09 1.87036770943365721e-10 +0.0988553094657003695 2.15895207930922068e-09 1.86821560811739299e-10 +0.10000000000000657 2.15801770143899033e-09 1.8660659830736026e-10 +0.101157945425996501 2.15708372796032277e-09 1.86391883145301303e-10 +0.102329299228082149 2.15615015869819942e-09 1.86177415040962899e-10 +0.103514216667941208 2.15521699347767901e-09 1.85963193710073007e-10 +0.104712854805096872 2.15428423212389598e-09 1.8574921886868668e-10 +0.1059253725177359 2.15335187446205921e-09 1.85535490233185686e-10 +0.107151930523767744 2.15241992031745409e-09 1.85322007520278137e-10 +0.108392691402127539 2.15148836951544169e-09 1.85108770446998085e-10 +0.109647819614325778 2.15055722188145755e-09 1.84895778730705176e-10 +0.110917481526247474 2.14962647724101494e-09 1.84683032089084348e-10 +0.112201845430203798 2.14869613541970077e-09 1.84470530240145259e-10 +0.113501081567239051 2.14776619624317804e-09 1.84258272902222105e-10 +0.114815362149695913 2.1468366595371846e-09 1.84046259793973181e-10 +0.116144861384042009 2.14590752512753525e-09 1.83834490634380445e-10 +0.11748975549396079 2.1449787928401188e-09 1.83622965142749254e-10 +0.11885022274370978 2.14405046250089935e-09 1.83411683038707954e-10 +0.120226443461749322 2.14312253393591751e-09 1.83200644042207416e-10 +0.121618600064644936 2.14219500697128874e-09 1.82989847873520849e-10 +0.123026877081246391 2.14126788143320255e-09 1.82779294253243213e-10 +0.124451461177146852 2.14034115714792496e-09 1.82568982902291058e-10 +0.125892541179425166 2.13941483394179724e-09 1.82358913541901985e-10 +0.12735030810167472 2.13848891164123514e-09 1.82149085893634436e-10 +0.128824955169322047 2.13756339007272966e-09 1.81939499679367129e-10 +0.130316677845238704 2.13663826906284751e-09 1.81730154621298797e-10 +0.131825673855649583 2.1357135484382294e-09 1.81521050441947979e-10 +0.133352143216341396 2.13478922802559216e-09 1.81312186864152329e-10 +0.134896288259174463 2.13386530765172625e-09 1.81103563611068403e-10 +0.136458313658901681 2.13294178714349946e-09 1.80895180406171478e-10 +0.138038426460297819 2.13201866632785152e-09 1.80687036973254783e-10 +0.139636836105603207 2.13109594503179956e-09 1.80479133036429568e-10 +0.141253754462284997 2.13017362308243385e-09 1.8027146832012436e-10 +0.142889395851119982 2.12925170030692122e-09 1.80064042549084859e-10 +0.144543977074602564 2.12833017653250127e-09 1.79856855448373471e-10 +0.146217717445681766 2.12740905158648972e-09 1.7964990674336892e-10 +0.147910838816830814 2.12648832529627671e-09 1.79443196159765967e-10 +0.149623565609453529 2.12556799748932726e-09 1.7923672342357494e-10 +0.151356124843631146 2.12464806799318082e-09 1.79030488261121453e-10 +0.153108746168213461 2.1237285366354509e-09 1.78824490399046044e-10 +0.15488166189125871 2.12280940324382749e-09 1.7861872956430376e-10 +0.156675107010825626 2.12189066764607258e-09 1.78413205484163795e-10 +0.158489319246122196 2.12097232967002546e-09 1.78207917886209259e-10 +0.160324539069015143 2.12005438914359701e-09 1.78002866498336556e-10 +0.16218100973590413 2.11913684589477501e-09 1.77798051048755307e-10 +0.164058977319965188 2.11821969975162088e-09 1.77593471265987808e-10 +0.165958690743767456 2.11730295054226965e-09 1.77389126878868745e-10 +0.167880401812267571 2.11638659809493204e-09 1.77185017616544831e-10 +0.169824365246186132 2.11547064223789237e-09 1.76981143208474368e-10 +0.171790838715770666 2.11455508279950861e-09 1.7677750338442699e-10 +0.17378008287494956 2.11363991960821522e-09 1.76574097874483321e-10 +0.175792361395881419 2.11272515249251864e-09 1.7637092640903444e-10 +0.177827941003904588 2.11181078128100016e-09 1.76167988718781772e-10 +0.179887091512891256 2.11089680580231634e-09 1.75965284534736522e-10 +0.181970085861010961 2.10998322588519615e-09 1.75762813588219415e-10 +0.184077200146908343 2.1090700413584442e-09 1.75560575610860386e-10 +0.18620871366629968 2.10815725205093833e-09 1.75358570334598064e-10 +0.188364908948993159 2.10724485779163083e-09 1.75156797491679593e-10 +0.190546071796337979 2.10633285840954802e-09 1.74955256814660185e-10 +0.192752491319107017 2.10542125373378941e-09 1.74753948036402767e-10 +0.19498445997581812 2.10451004359352981e-09 1.74552870890077665e-10 +0.197242273611499125 2.10359922781801721e-09 1.74352025109162221e-10 +0.199526231496901879 2.10268880623657283e-09 1.74151410427440399e-10 +0.201836636368170202 2.10177877867859396e-09 1.73951026579002559e-10 +0.204173794466967207 2.10086914497354865e-09 1.73750873298244986e-10 +0.20653801558106738 2.09995990495098143e-09 1.73550950319869531e-10 +0.208929613085418575 2.09905105844050923e-09 1.73351257378883381e-10 +0.211348903983679504 2.098142605271823e-09 1.73151794210598587e-10 +0.213796208950238209 2.09723454527468775e-09 1.72952560550631812e-10 +0.216271852372717205 2.09632687827894123e-09 1.72753556134903835e-10 +0.218776162394970636 2.0954196041144957e-09 1.72554780699639373e-10 +0.221309470960579346 2.09451272261133739e-09 1.72356233981366591e-10 +0.223872113856849742 2.09360623359952496e-09 1.72157915716916889e-10 +0.226464430759321933 2.09270013690919107e-09 1.71959825643424393e-10 +0.229086765276793475 2.09179443237054201e-09 1.71761963498325744e-10 +0.231739464996864236 2.09088911981385811e-09 1.71564329019359656e-10 +0.234422881532008798 2.08998419906949207e-09 1.71366921944566639e-10 +0.237137370566182309 2.08907966996787061e-09 1.71169742012288655e-10 +0.239883291901966028 2.08817553233949369e-09 1.70972788961168658e-10 +0.242661009508258751 2.08727178601493485e-09 1.70776062530150361e-10 +0.24547089156852045 2.08636843082484087e-09 1.70579562458477895e-10 +0.248313310529574671 2.0854654665999317e-09 1.70383288485695377e-10 +0.251188643150975888 2.08456289317100054e-09 1.70187240351646646e-10 +0.254097270554948629 2.08366071036891374e-09 1.69991417796474799e-10 +0.257039578276904712 2.08275891802461132e-09 1.69795820560622063e-10 +0.260015956316545727 2.08185751596910607e-09 1.69600448384829225e-10 +0.263026799189556959 2.08095650403348398e-09 1.69405301010135426e-10 +0.266072505979899954 2.08005588204890384e-09 1.69210378177877799e-10 +0.269153480392710809 2.07915564984659847e-09 1.69015679629690978e-10 +0.272270130807810706 2.07825580725787225e-09 1.68821205107507045e-10 +0.275422870333836334 2.0773563541141044e-09 1.6862695435355491e-10 +0.278612116862996972 2.07645729024674571e-09 1.68432927110360133e-10 +0.281838293126465578 2.07555861548731976e-09 1.68239123120744533e-10 +0.285101826750411402 2.07466032966742456e-09 1.68045542127825773e-10 +0.288403150312681322 2.07376243261872969e-09 1.67852183875017211e-10 +0.291742701400137694 2.07286492417297752e-09 1.67659048106027351e-10 +0.295120922666659846 2.07196780416198443e-09 1.67466134564859612e-10 +0.29853826189181748 2.07107107241763839e-09 1.67273442995812022e-10 +0.301995172040223414 2.07017472877190053e-09 1.67080973143476745e-10 +0.30549211132157339 2.06927877305680523e-09 1.66888724752739881e-10 +0.309029543251381378 2.0683832051044588e-09 1.6669669756878105e-10 +0.3126079367124181 2.06748802474703995e-09 1.66504891337073107e-10 +0.316227766016860812 2.06659323181680141e-09 1.66313305803381728e-10 +0.31988951096916296 2.06569882614606747e-09 1.66121940713765154e-10 +0.323593656929651696 2.06480480756723521e-09 1.65930795814573775e-10 +0.327340694878861915 2.06391117591277367e-09 1.65739870852449898e-10 +0.331131121482615143 2.06301793101522592e-09 1.65549165574327308e-10 +0.334965439157851985 2.06212507270720534e-09 1.65358679727431011e-10 +0.338844156139227193 2.0612326008214002e-09 1.65168413059276814e-10 +0.342767786546475328 2.06034051519056903e-09 1.64978365317671077e-10 +0.346736850452556922 2.05944881564754402e-09 1.64788536250710342e-10 +0.350751873952593607 2.05855750202522931e-09 1.64598925606780948e-10 +0.354813389233601395 2.05766657415660182e-09 1.64409533134558827e-10 +0.358921934645031471 2.05677603187470922e-09 1.6422035858300906e-10 +0.363078054770127945 2.05588587501267318e-09 1.6403140170138552e-10 +0.367282300498111614 2.05499610340368737e-09 1.63842662239230713e-10 +0.371535229097199826 2.05410671688101657e-09 1.63654139946375209e-10 +0.375837404288471788 2.05321771527799837e-09 1.63465834572937544e-10 +0.380189396320589179 2.05232909842804314e-09 1.63277745869323618e-10 +0.384591782045381914 2.05144086616463238e-09 1.63089873586226726e-10 +0.389045144994309311 2.05055301832131918e-09 1.62902217474626808e-10 +0.393550075455806558 2.04966555473173102e-09 1.6271477728579055e-10 +0.398107170553526735 2.04877847522956491e-09 1.62527552771270637e-10 +0.402717034325488943 2.04789177964859063e-09 1.62340543682905775e-10 +0.407380277804142932 2.04700546782265035e-09 1.62153749772820128e-10 +0.412097519097360809 2.04611953958565777e-09 1.61967170793423106e-10 +0.416869383470366395 2.04523399477159857e-09 1.61780806497408953e-10 +0.421696503428613645 2.0443488332145304e-09 1.61594656637756621e-10 +0.426579518801624424 2.04346405474858245e-09 1.61408720967729067e-10 +0.431519076827797388 2.04257965920795546e-09 1.61222999240873359e-10 +0.43651583224019852 2.04169564642692298e-09 1.61037491211019978e-10 +0.441570447353345441 2.04081201623982885e-09 1.60852196632282818e-10 +0.446683592150996456 2.03992876848109012e-09 1.60667115259058513e-10 +0.451855944374956131 2.03904590298519458e-09 1.60482246846026464e-10 +0.457088189614909213 2.03816341958670113e-09 1.60297591148148219e-10 +0.462381021399294934 2.03728131812024189e-09 1.60113147920667342e-10 +0.467735141287233258 2.03639959842051847e-09 1.59928916919109025e-10 +0.473151258961515997 2.0355182603223065e-09 1.59744897899279728e-10 +0.478630092322674283 2.03463730366045069e-09 1.59561090617266897e-10 +0.484172367584135732 2.03375672826986854e-09 1.59377494829438645e-10 +0.489778819368483054 2.03287653398554951e-09 1.59194110292443401e-10 +0.49545019080482755 2.03199672064255295e-09 1.59010936763209591e-10 +0.501187233627310103 2.03111728807601061e-09 1.5882797399894536e-10 +0.506990708274742685 2.03023823612112535e-09 1.58645221757138206e-10 +0.512861383991403685 2.0293595646131712e-09 1.58462679795554619e-10 +0.518800038929000396 2.02848127338749453e-09 1.58280347872239902e-10 +0.524807460249812396 2.02760336227951081e-09 1.58098225745517677e-10 +0.530884444231028652 2.02672583112470913e-09 1.57916313173989681e-10 +0.537031796370293524 2.02584867975864762e-09 1.57734609916535427e-10 +0.543250331492474481 2.02497190801695765e-09 1.57553115732311846e-10 +0.549540873857666368 2.02409551573534004e-09 1.57371830380752947e-10 +0.555904257270445901 2.02321950274956719e-09 1.57190753621569637e-10 +0.562341325190391927 2.02234386889548386e-09 1.57009885214749232e-10 +0.568852930843884885 2.0214686140090039e-09 1.56829224920555275e-10 +0.575439937337200891 2.0205937379261131e-09 1.56648772499527094e-10 +0.582103217770915893 2.01971924048286798e-09 1.56468527712479574e-10 +0.588843655355633988 2.01884512151539704e-09 1.56288490320502817e-10 +0.595662143529055998 2.01797138085989825e-09 1.56108660084961808e-10 +0.602559586074403852 2.01709801835264113e-09 1.55929036767496181e-10 +0.609536897240215869 2.01622503382996635e-09 1.55749620130019679e-10 +0.61659500186152949 2.01535242712828445e-09 1.55570409934720176e-10 +0.623734835482467109 2.01448019808407798e-09 1.55391405944059084e-10 +0.630957344480241655 2.01360834653389975e-09 1.55212607920771096e-10 +0.638263486190597695 2.0127368723143725e-09 1.55034015627864029e-10 +0.645654229034705152 2.01186577526219133e-09 1.54855628828618283e-10 +0.653130552647522622 2.01099505521412044e-09 1.54677447286586658e-10 +0.660693448007646844 2.01012471200699595e-09 1.5449947076559407e-10 +0.668343917568666068 2.00925474547772349e-09 1.54321699029737138e-10 +0.67608297539203388 2.00838515546327983e-09 1.54144131843383928e-10 +0.683911647281482127 2.00751594180071245e-09 1.5396676897117361e-10 +0.691830970918989929 2.00664710432713915e-09 1.53789610178016209e-10 +0.69984199600232766 2.00577864287974805e-09 1.53612655229092234e-10 +0.707945784384192756 2.00491055729579796e-09 1.53435903889852348e-10 +0.716143410212957576 2.00404284741261846e-09 1.53259355926017185e-10 +0.724435960075046292 2.00317551306760857e-09 1.53083011103576858e-10 +0.73282453313896101 2.00230855409823805e-09 1.52906869188790753e-10 +0.741310241300975115 2.00144197034204824e-09 1.52730929948187273e-10 +0.749894209332514161 2.00057576163664908e-09 1.52555193148563343e-10 +0.758577575029242834 1.99970992781972128e-09 1.52379658556984357e-10 +0.767361489361878757 1.99884446872901626e-09 1.52204325940783592e-10 +0.776247116628752343 1.99797938420235574e-09 1.52029195067562172e-10 +0.785235634610133126 1.99711467407763053e-09 1.51854265705188505e-10 +0.794328234724343551 1.99625033819280296e-09 1.51679537621798178e-10 +0.803526122185680092 1.99538637638590488e-09 1.51505010585793545e-10 +0.812830516164162908 1.9945227884950376e-09 1.51330684365843415e-10 +0.822242649947135584 1.99365957435837356e-09 1.51156558730882845e-10 +0.831763771102736249 1.99279673381415513e-09 1.5098263345011265e-10 +0.841395141645261191 1.99193426670069372e-09 1.50808908292999325e-10 +0.851138038202443381 1.99107217285637189e-09 1.50635383029274555e-10 +0.860993752184668448 1.99021045211964126e-09 1.50462057428935032e-10 +0.870963589956149309 1.98934910432902418e-09 1.50288931262241989e-10 +0.881048873008083655 1.98848812932311208e-09 1.50116004299721154e-10 +0.891250938133815951 1.98762752694056626e-09 1.49943276312162149e-10 +0.901571137606028139 1.98676729702011919e-09 1.49770747070618466e-10 +0.912010839355981928 1.98590743940057157e-09 1.49598416346406951e-10 +0.922571427154836199 1.98504795392079397e-09 1.49426283911107522e-10 +0.933254300797064951 1.98418884041972814e-09 1.49254349536563084e-10 +0.944060876285998218 1.98333009873638364e-09 1.49082612994878944e-10 +0.954992586021511713 1.98247172870984075e-09 1.48911074058422674e-10 +0.966050878989890061 1.98161373017925005e-09 1.48739732499823751e-10 +0.977237220955888275 1.98075610298382999e-09 1.48568588091973278e-10 +0.98855309465701735 1.97989884696287052e-09 1.48397640608023666e-10 +1.00000000000007949 1.97904196195572904e-09 1.48226889821388379e-10 +1.01157945425997897 1.97818544780183449e-09 1.48056335505741549e-10 +1.02329299228083559 1.97732930434068405e-09 1.47885977435017738e-10 +1.03514216667942627 1.97647353141184522e-09 1.4771581538341171e-10 +1.0471285480509831 1.97561812885495372e-09 1.47545849125377909e-10 +1.05925372517737348 1.97476309650971603e-09 1.47376078435630337e-10 +1.07151930523769212 1.97390843421590724e-09 1.47206503089142339e-10 +1.08392691402129038 1.97305414181337156e-09 1.47037122861146015e-10 +1.09647819614327302 1.97220021914202348e-09 1.46867937527132191e-10 +1.10917481526249007 1.97134666604184572e-09 1.46698946862850004e-10 +1.12201845430205349 1.97049348235289093e-09 1.46530150644306572e-10 +1.13501081567240614 1.96964066791528081e-09 1.46361548647766806e-10 +1.14815362149697497 1.96878822256920614e-09 1.46193140649753025e-10 +1.16144861384043607 1.96793614615492676e-09 1.46024926427044674e-10 +1.17489755493962411 1.96708443851277199e-09 1.45856905756678087e-10 +1.1885022274371142 1.96623309948314064e-09 1.4568907841594613e-10 +1.20226443461750976 1.96538212890649894e-09 1.45521444182397886e-10 +1.21618600064646598 1.96453152662338384e-09 1.45354002833838425e-10 +1.23026877081248065 1.96368129247440094e-09 1.45186754148328494e-10 +1.24451461177148537 1.9628314263002245e-09 1.45019697904184181e-10 +1.25892541179426876 1.96198192794159744e-09 1.44852833879976704e-10 +1.27350308101676446 1.96113279723933257e-09 1.44686161854531954e-10 +1.28824955169323796 1.96028403403431054e-09 1.44519681606930461e-10 +1.30316677845240458 1.95943563816748188e-09 1.4435339291650683e-10 +1.3182567385565136 1.95858760947986496e-09 1.44187295562849611e-10 +1.33352143216343189 1.95773994781254805e-09 1.44021389325800986e-10 +1.34896288259176278 1.95689265300668683e-09 1.43855673985456412e-10 +1.36458313658903507 1.95604572490350686e-09 1.4369014932216441e-10 +1.38038426460299668 1.95519916334430239e-09 1.43524815116526283e-10 +1.39636836105605089 1.95435296817043507e-09 1.4335967114939565e-10 +1.41253754462286896 1.95350713922333726e-09 1.43194717201878418e-10 +1.42889395851121903 1.95266167634450834e-09 1.43029953055332297e-10 +1.44543977074604513 1.95181657937551633e-09 1.42865378491366585e-10 +1.46217717445683726 1.95097184815799875e-09 1.42700993291841838e-10 +1.47910838816832801 1.95012748253366136e-09 1.42536797238869688e-10 +1.49623565609455556 1.94928348234427732e-09 1.42372790114812349e-10 +1.51356124843633189 1.94843984743169012e-09 1.42208971702282595e-10 +1.53108746168215548 1.94759657763781065e-09 1.42045341784143293e-10 +1.54881661891260825 1.94675367280461846e-09 1.41881900143507038e-10 +1.56675107010827763 1.94591113277416052e-09 1.41718646563736134e-10 +1.58489319246124349 1.94506895738855369e-09 1.41555580828442122e-10 +1.60324539069017313 1.94422714648998226e-09 1.41392702721485424e-10 +1.62181009735906323 1.94338569992069956e-09 1.4123001202697531e-10 +1.64058977319967414 1.94254461752302596e-09 1.41067508529269311e-10 +1.65958690743769721 1.94170389913935086e-09 1.4090519201297324e-10 +1.67880401812269864 1.94086354461213235e-09 1.40743062262940574e-10 +1.69824365246188447 1.94002355378389592e-09 1.40581119064272503e-10 +1.71790838715773009 1.93918392649723488e-09 1.4041936220231739e-10 +1.73780082874951924 1.93834466259481205e-09 1.40257791462670641e-10 +1.75792361395883812 1.93750576191935721e-09 1.40096406631174291e-10 +1.7782794100390702 1.93666722431366802e-09 1.39935207493916875e-10 +1.79887091512893704 1.93582904962061158e-09 1.39774193837232986e-10 +1.81970085861013442 1.93499123768312159e-09 1.39613365447703125e-10 +1.84077200146910869 1.93415378834420001e-09 1.39452722112153285e-10 +1.86208713666302228 1.93331670144691744e-09 1.39292263617654845e-10 +1.88364908948995735 1.93247997683441189e-09 1.39131989751524134e-10 +1.90546071796340599 1.93164361434988881e-09 1.38971900301322172e-10 +1.92752491319109676 1.93080761383662227e-09 1.38811995054854435e-10 +1.94984459975820812 1.9299719751379542e-09 1.38652273800170627e-10 +1.97242273611501862 1.92913669809729351e-09 1.38492736325564234e-10 +1.99526231496904649 1.92830178255811779e-09 1.38333382419572376e-10 +2.01836636368172995 1.92746722836397202e-09 1.38174211870975464e-10 +2.0417379446697006 1.9266330353584682e-09 1.38015224468797027e-10 +2.06538015581070278 1.92579920338528739e-09 1.37856420002303237e-10 +2.08929613085421506 1.92496573228817723e-09 1.37697798261002815e-10 +2.11348903983682446 1.92413262191095321e-09 1.37539359034646663e-10 +2.13796208950241207 1.92329987209749905e-09 1.37381102113227582e-10 +2.16271852372720241 1.92246748269176506e-09 1.3722302728698004e-10 +2.18776162394973683 1.92163545353776937e-09 1.37065134346379859e-10 +2.21309470960582422 1.92080378447959838e-09 1.3690742308214396e-10 +2.23872113856852861 1.91997247536140503e-09 1.3674989328523005e-10 +2.26464430759325097 1.91914152602741015e-09 1.36592544746836339e-10 +2.29086765276796678 1.91831093632190193e-09 1.36435377258401358e-10 +2.31739464996867461 1.917480706089236e-09 1.36278390611603601e-10 +2.34422881532012051 1.916650835173835e-09 1.36121584598361182e-10 +2.37137370566185623 1.91582132342018937e-09 1.35964959010831738e-10 +2.39883291901969375 1.9149921706728566e-09 1.35808513641412037e-10 +2.42661009508262149 1.91416337677646154e-09 1.35652248282737672e-10 +2.45470891568523886 1.91333494157569607e-09 1.35496162727682874e-10 +2.48313310529578146 1.91250686491531991e-09 1.3534025676936021e-10 +2.51188643150979374 1.91167914664015934e-09 1.3518453020112029e-10 +2.54097270554952148 1.91085178659510807e-09 1.35028982816551463e-10 +2.57039578276908287 1.9100247846251264e-09 1.34873614409479581e-10 +2.6001595631654939 1.90919814057524287e-09 1.34718424773967821e-10 +2.63026799189560645 1.9083718542905522e-09 1.34563413704316243e-10 +2.66072505979903706 1.90754592561621568e-09 1.34408580995061557e-10 +2.69153480392714606 1.90672035439746328e-09 1.34253926440976944e-10 +2.72270130807814548 1.90589514047959029e-09 1.34099449837071747e-10 +2.75422870333840253 1.90507028370796027e-09 1.33945150978591079e-10 +2.78612116863000958 1.90424578392800252e-09 1.33791029661015747e-10 +2.81838293126469619 1.90342164098521377e-09 1.33637085680061843e-10 +2.85101826750415466 1.90259785472515775e-09 1.33483318831680556e-10 +2.88403150312685419 1.90177442499346559e-09 1.33329728912057736e-10 +2.91742701400141824 1.90095135163583336e-09 1.33176315717613895e-10 +2.9512092266666401 1.90012863449802581e-09 1.33023079045003715e-10 +2.9853826189182171 1.89930627342587383e-09 1.32870018691115916e-10 +3.01995172040227677 1.8984842682652745e-09 1.32717134453072795e-10 +3.05492111321577697 1.89766261886219273e-09 1.32564426128230199e-10 +3.09029543251385741 1.89684132506265836e-09 1.32411893514177109e-10 +3.12607936712422507 1.89602038671276989e-09 1.3225953640873541e-10 +3.16227766016865264 1.89519980365869075e-09 1.32107354609959631e-10 +3.19889510969167468 1.8943795757466522e-09 1.31955347916136635e-10 +3.23593656929656293 1.89355970282295126e-09 1.31803516125785414e-10 +3.27340694878866545 1.89274018473395154e-09 1.31651859037656751e-10 +3.31131121482619806 1.89192102132608324e-09 1.31500376450733038e-10 +3.34965439157856704 1.89110221244584355e-09 1.31349068164227918e-10 +3.38844156139231956 1.89028375793979503e-09 1.31197933977586126e-10 +3.42767786546480124 1.88946565765456804e-09 1.31046973690483103e-10 +3.46736850452561773 1.8886479114368583e-09 1.30896187102824816e-10 +3.50751873952598503 1.88783051913342731e-09 1.30745574014747446e-10 +3.54813389233606324 1.88701348059110479e-09 1.30595134226617208e-10 +3.58921934645036478 1.88619679565678456e-09 1.30444867539029909e-10 +3.63078054770132974 1.88538046417742912e-09 1.30294773752810903e-10 +3.67282300498116676 1.88456448600006465e-09 1.3014485266901467e-10 +3.71535229097204933 1.88374886097178556e-09 1.2999510408892456e-10 +3.75837404288476984 1.8829335889397508e-09 1.29845527814052693e-10 +3.80189396320594408 1.88211866975118715e-09 1.29696123646139488e-10 +3.84591782045387198 1.88130410325338631e-09 1.29546891387153513e-10 +3.8904514499431464 1.88048988929370657e-09 1.29397830839291146e-10 +3.93550075455811932 1.87967602771957199e-09 1.29248941804976444e-10 +3.9810717055353213 1.8788625183784728e-09 1.29100224086860736e-10 +4.02717034325494438 1.8780493611179654e-09 1.28951677487822461e-10 +4.07380277804148516 1.87723655578567195e-09 1.28803301810966887e-10 +4.12097519097366405 1.87642410222928079e-09 1.28655096859625801e-10 +4.16869383470372057 1.8756120002965452e-09 1.28507062437357248e-10 +4.21696503428619351 1.87480024983528668e-09 1.28359198347945433e-10 +4.26579518801630186 1.87398885069338963e-09 1.2821150439540017e-10 +4.31519076827803172 1.87317780271880625e-09 1.28063980383956915e-10 +4.36515832240204382 1.87236710575955409e-09 1.27916626118076323e-10 +4.41570447353351359 1.87155675966371648e-09 1.27769441402444043e-10 +4.4668359215100244 1.87074676427944249e-09 1.27622426041970458e-10 +4.51855944374962171 1.86993711945494655e-09 1.27475579841790402e-10 +4.57088189614915308 1.86912782503850925e-09 1.27328902607263002e-10 +4.62381021399301062 1.86831888087847655e-09 1.2718239414397127e-10 +4.67735141287239475 1.86751028682326016e-09 1.27036054257721993e-10 +4.73151258961522281 1.86670204272133795e-09 1.26889882754545273e-10 +4.78630092322680678 1.86589414842125232e-09 1.26743879440694575e-10 +4.84172367584142194 1.86508660377161145e-09 1.26598044122646137e-10 +4.89778819368489593 1.86427940862108967e-09 1.26452376607098963e-10 +4.9545019080483419 1.86347256281842666e-09 1.26306876700974468e-10 +5.01187233627316786 1.86266606621242704e-09 1.26161544211416191e-10 +5.06990708274749391 1.8618599186519612e-09 1.26016378945789586e-10 +5.12861383991410413 1.86105411998596507e-09 1.25871380711681819e-10 +5.18800038929007279 1.86024867006343951e-09 1.25726549316901326e-10 +5.24807460249819346 1.85944356873345136e-09 1.2558188456947784e-10 +5.3088444423103569 1.8586388158451324e-09 1.25437386277661847e-10 +5.37031796370300629 1.85783441124767972e-09 1.25293054249924563e-10 +5.43250331492481742 1.8570303547903556e-09 1.25148888294957491e-10 +5.49540873857673695 1.85622664632248763e-09 1.2500488822167237e-10 +5.55904257270453339 1.85542328569346877e-09 1.24861053839200713e-10 +5.62341325190399477 1.8546202727527569e-09 1.24717384956893673e-10 +5.68852930843892501 1.85381760734987546e-09 1.24573881384321787e-10 +5.7543993733720864 1.85301528933441262e-09 1.24430542931274772e-10 +5.82103217770923731 1.85221331855602168e-09 1.24287369407761053e-10 +5.88843655355641893 1.85141169486442129e-09 1.24144360624007794e-10 +5.95662143529064014 1.85061041810939464e-09 1.24001516390460457e-10 +6.02559586074411957 1.84980948814079065e-09 1.23858836517782648e-10 +6.09536897240224018 1.84900890480852236e-09 1.23716320816855779e-10 +6.16595001861537728 1.84820866796256858e-09 1.23573969098778939e-10 +6.23734835482475525 1.84740877745297283e-09 1.23431781174868484e-10 +6.30957344480250182 1.84660923312984297e-09 1.23289756856657978e-10 +6.38263486190606333 1.84581003484335216e-09 1.23147895955897738e-10 +6.456542290347139 1.84501118244373876e-09 1.23006198284554744e-10 +6.53130552647531459 1.8442126757813056e-09 1.22864663654812316e-10 +6.60693448007655881 1.84341451470641964e-09 1.22723291879069921e-10 +6.68343917568675217 1.84261669906951422e-09 1.22582082769942795e-10 +6.76082975392043117 1.84181922872108555e-09 1.22441036140261911e-10 +6.83911647281491408 1.84102210351169599e-09 1.22300151803073439e-10 +6.91830970918999366 1.84022532329197184e-09 1.22159429571638848e-10 +6.99841996002337119 1.83942888791260429e-09 1.22018869259434338e-10 +7.07945784384202348 1.83863279722434867e-09 1.21878470680150763e-10 +7.16143410212967257 1.83783705107802605e-09 1.21738233647693398e-10 +7.24435960075056062 1.8370416493245208e-09 1.21598157976181601e-10 +7.32824533138970935 1.83624659181478241e-09 1.21458243479948635e-10 +7.41310241300985151 1.8354518783998249e-09 1.21318489973541305e-10 +7.49894209332524309 1.8346575089307266e-09 1.21178897271719957e-10 +7.58577575029253115 1.83386348325863057e-09 1.21039465189457962e-10 +7.67361489361889149 1.83306980123474418e-09 1.2090019354194164e-10 +7.76247116628762779 1.83227646271033891e-09 1.20761082144569945e-10 +7.85235634610143673 1.83148346753675076e-09 1.20622130812954212e-10 +7.94328234724354232 1.83069081556538025e-09 1.20483339362918025e-10 +8.03526122185690816 1.8298985066476922e-09 1.20344707610496804e-10 +8.12830516164173744 1.82910654063521556e-09 1.20206235371937674e-10 +8.22242649947146553 1.82831491737954317e-09 1.20067922463699183e-10 +8.31763771102747285 1.82752363673233321e-09 1.19929768702451071e-10 +8.41395141645272382 1.82673269854530714e-09 1.19791773905074056e-10 +8.51138038202454794 1.82594210267025053e-09 1.1965393788865948e-10 +8.60993752184679906 1.82515184895901349e-09 1.19516260470509254e-10 +8.70963589956160789 1.82436193726351061e-09 1.19378741468135419e-10 +8.81048873008095157 1.82357236743571937e-09 1.19241380699259989e-10 +8.91250938133827653 1.82278313932768261e-09 1.19104177981814799e-10 +9.01571137606040018 1.82199425279150662e-09 1.18967133133941088e-10 +9.12010839355993852 1.82120570767936121e-09 1.18830245973989349e-10 +9.22571427154848323 1.82041750384348131e-09 1.18693516320519194e-10 +9.33254300797077185 1.81962964113616494e-09 1.18556943992298893e-10 +9.44060876286010497 1.81884211940977399e-09 1.18420528808305266e-10 +9.54992586021524126 1.81805493851673491e-09 1.18284270587723484e-10 +9.66050878989902628 1.8172680983095376e-09 1.18148169149946697e-10 +9.77237220955901087 1.81648159864073588e-09 1.18012224314575888e-10 +9.88553094657030407 1.81569543936294706e-09 1.17876435901419634e-10 +10.0000000000009273 1.81490962032885274e-09 1.17740803730493826e-10 diff --git a/class/external_Pk/README.md b/class/external_Pk/README.md new file mode 100644 index 00000000..e8f11d3e --- /dev/null +++ b/class/external_Pk/README.md @@ -0,0 +1,101 @@ +The `external_Pk` mode +====================== + +* Author: Jesus Torrado (torradocacho [@] lorentz.leidenuniv.nl) +* Date: 2013-12-20 + + +Introduction +------------ + +This mode allows for an arbitrary primordial spectrum `P(k)` to be calculated by an external command and passed to CLASS. That external command may be anything that can be run in the shell: a python script, some compiled C or Fortran code... This command is executed from within CLASS, and CLASS is able to pass it a number of parameters defining the spectrum (an amplitude, a tilt...). Those parameters can be used in a Markov chain search performed by MontePython. + +This mode includes the simple case of a precomputed primordial spectrum stored in a text file. In that case, the `cat` shell command will do the trick (see below). + +Currently, scalar and tensor spectra of perturbations of adiabatic modes are supported. + + +Use case #1: reading the spectrum from a table +---------------------------------------------- + +In this case, say the file with the table is called `spectrum.txt`, located under `/path/to`, simply include in the `.ini` file + + command = cat path/to/spectrum.txt + +It is necessary that 1st 4 characters are exactly `cat `. + + +Use case #2: getting the spectrum from an external command +---------------------------------------------------------- + +Here an external command is called to generate the spectrum; it may be some compiled C or Fortran code, a python script... This command may be passed up to 10 floating point arguments, named `custom1` to `custom10`, which are assigned values inside the `.ini` file of CLASS. The `command` parameter would look like + + command = /path/to/example.py + +if it starts with `#/usr/bin/python`, otherwise + + command = python /path/to/example.py + +As an example of the 1st use case, one may use the included script `generate_Pk_example.py`, which implements a single-field slow-roll spectrum without running, and takes 3 arguments: +* `custom1` -- the pivot scale (`k_0 = 0.05 1/Mpc` for Planck). +* `custom2` -- the amplitude of the scalar power spectrum. +* `custom3` -- the scalar spectral index. + +In order to use it, the following lines must be present in the parameter file: + + P_k_ini type = external_Pk + command = /path/to/CLASS/external_Pk/generate_Pk_example.py + custom1 = 0.05 + custom2 = 2.2e-9 + custom3 = 1. + +Defined or not (in that case, 0-valued), parameters from `custom4` to `custom10` will be passed to the example script, which should ignore them. In this case, CLASS will run in the shell the command + + /path/to/CLASS/external_Pk/generate_Pk_example.py 0.05 2.2e-9 1. 0 0 0 0 0 0 0 + +If CLASS fails to run the command, try to do it directly yourself by hand, using exactly the same string that was given in `command`. + + +Output of the command / format of the table +------------------------------------------- + +The command must generate an output separated into lines, each containing a tuple (`k`, `P(k)`). The following requirements must be fulfilled: + +* Each line must contain 2 (3, if tensors) floating point numbers: `k` (in `1/Mpc` units) and `P_s(k)` (and `P_t(k)`, if tensors), separated by any number of spaces or tabs. The numbers can be in scientific notation, e.g. `1.4e-3`. + +* The lines must be sorted in increasing values of `k`. + +* There must be at least two points `(k, P(k))` before and after the interval of `k` requested by CLASS, in order not to introduce unnecessary interpolation error. Otherwise, an error will be raised. In most of the cases, generating the spectrum between `1e-6` and `1 1/Mpc` should be more than enough. + + +Precision +--------- + +This implementation properly handles double-precision floating point numbers (i.e. about 17 significant figures), both for the input parameters of the command and for the output of the command (or the table). + +The sampling of `k` given by the command (or table) is preserved to be used internally by CLASS. It must be fine enough a sampling to clearly show the features of the spectrum. The best way to test this is to plot the output/table and check it with the naked eye. + +Another thing to have in mind arises at the time of convolving with the transfer functions. Two precision parameters are implied: the sampling of `k` in the integral, given by `k_step_trans`, and the sampling of the transfer functions in `l`, given by `l_logstep` and `l_linstep`. In general, it will be enough to reduce the values of the first and the third parameters. A good start is to give them rather small values, say `k_step_trans=0.01` and `l_linstep=1`, and to increase them slowly until the point at which the effect of increasing them gets noticeable. + + +Parameter fit with MontePython +------------------------------ + +(MontePython)[http://montepython.net/] is able to interact with the `external_Pk` mode transparently, using the `custom` parameters in an MCMC fit. One must just add the appropriate lines to the input file of MontePython. For our example, if we wanted to fit the amplitude and spectral index of the primordial spectrum, it would be: + + data.cosmo_arguments['P_k_ini type'] = 'external_Pk' + data.cosmo_arguments['command'] = '/path/to/CLASS/external_Pk/generate_Pk_example.py' + data.cosmo_arguments['custom1'] = 0.05 # k_pivot + data.parameters['custom2'] = [ 2.2, 0, -1, 0.055, 1.e-9, 'cosmo'] # A_s + data.parameters['custom3'] = [ 1., 0, -1, 0.0074, 1, 'cosmo'] # n_s + +Notice that since in our case `custom1` represents the pivot scale, it is passed as a (non-varying) argument, instead of as a (varying) parameter. + +In this case, one would not include the corresponding lines for the primordial parameters of CLASS: `k_pivot`, `A_s`, `n_s`, `alpha_s`, etc. They would simply be ignored. + + +Limitations +----------- + +* So far, this mode cannot handle vector perturbations, nor isocurvature initial conditions. +* The external script knows nothing about the rest of the CLASS parameters, so if it needs, e.g., `k_pivot`, it should be either hard coded, or its value passed as one of the `custom` parameters. diff --git a/class/external_Pk/generate_Pk_example.py b/class/external_Pk/generate_Pk_example.py new file mode 100755 index 00000000..6f876af2 --- /dev/null +++ b/class/external_Pk/generate_Pk_example.py @@ -0,0 +1,56 @@ +#!/usr/bin/python +from __future__ import print_function +import sys +from math import exp + +# README: +# +# This is an example python script for the external_Pk mode of Class. +# It generates the primordial spectrum of LambdaCDM. +# It can be edited and used directly, though keeping a copy of it is recommended. +# +# Two (maybe three) things need to be edited: +# +# 1. The name of the parameters needed for the calculation of Pk. +# "sys.argv[1]" corresponds to "custom1" in Class, an so on + +try : + k_0 = float(sys.argv[1]) + A = float(sys.argv[2]) + n_s = float(sys.argv[3]) + +# Error control, no need to touch +except IndexError : + raise IndexError("It seems you are calling this script with too few arguments.") +except ValueError : + raise ValueError("It seems some of the arguments are not correctly formatted. "+ + "Remember that they must be floating point numbers.") + +# 2. The function giving P(k), including the necessary import statements. +# Inside this function, you can use the parameters named in the previous step. + +def P(k) : + return A * (k/k_0)**(n_s-1.) + +# 3. Limits for k and precision: +# Check that the boundaries are correct for your case. +# It is safer to set k_per_decade primordial slightly bigger than that of Class. + +k_min = 1.e-6 +k_max = 10. +k_per_decade_primordial = 200. + +# +# And nothing should need to be edited from here on. +# + +# Filling the array of k's +ks = [float(k_min)] +while ks[-1] <= float(k_max) : + ks.append(ks[-1]*10.**(1./float(k_per_decade_primordial))) + +# Filling the array of Pk's +for k in ks : + P_k = P(k) + print("%.18g %.18g" % (k, P_k)) + diff --git a/class/external_Pk/generate_Pk_example_w_tensors.py b/class/external_Pk/generate_Pk_example_w_tensors.py new file mode 100755 index 00000000..3722d289 --- /dev/null +++ b/class/external_Pk/generate_Pk_example_w_tensors.py @@ -0,0 +1,60 @@ +#!/usr/bin/python +from __future__ import print_function +import sys +from math import exp + +# README: +# +# This is an example python script for the external_Pk mode of Class. +# It generates the primordial spectrum of LambdaCDM. +# It can be edited and used directly, though keeping a copy of it is recommended. +# +# Two (maybe three) things need to be edited: +# +# 1. The name of the parameters needed for the calculation of Pk. +# "sys.argv[1]" corresponds to "custom1" in Class, an so on + +try : + k_0 = float(sys.argv[1]) + A_s = float(sys.argv[2]) + n_s = float(sys.argv[3]) + A_t = float(sys.argv[4]) + n_t = float(sys.argv[5]) + +# Error control, no need to touch +except IndexError : + raise IndexError("It seems you are calling this script with too few arguments.") +except ValueError : + raise ValueError("It seems some of the arguments are not correctly formatted. "+ + "Remember that they must be floating point numbers.") + +# 2. The function giving P(k), including the necessary import statements. +# Inside this function, you can use the parameters named in the previous step. + +def P_s(k) : + return A_s * (k/k_0)**(n_s-1.) + +def P_t(k) : + return A_t * (k/k_0)**(n_t) + +# 3. Limits for k and precision: +# Check that the boundaries are correct for your case. +# It is safer to set k_per_decade primordial slightly bigger than that of Class. + +k_min = 1.e-6 +k_max = 10. +k_per_decade_primordial = 200. + +# +# And nothing should need to be edited from here on. +# + +# Filling the array of k's +ks = [float(k_min)] +while ks[-1] <= float(k_max) : + ks.append(ks[-1]*10.**(1./float(k_per_decade_primordial))) + +# Filling the array of Pk's +for k in ks : + print("%.18g %.18g %.18g" % (k, P_s(k), P_t(k))) + diff --git a/class/hyrec/Alpha_inf.dat b/class/hyrec/Alpha_inf.dat new file mode 100644 index 00000000..3fae8b09 --- /dev/null +++ b/class/hyrec/Alpha_inf.dat @@ -0,0 +1,4000 @@ + 6.0915545e-12 5.5735114e-11 + 5.4363309e-12 4.7677140e-11 + 4.9520194e-12 4.1925958e-11 + 4.5754201e-12 3.7588861e-11 + 4.2718516e-12 3.4186367e-11 + 4.0204787e-12 3.1436457e-11 + 3.8079302e-12 2.9161701e-11 + 3.6251808e-12 2.7244566e-11 + 3.4658896e-12 2.5603878e-11 + 3.3254542e-12 2.4181682e-11 + 3.2004429e-12 2.2935428e-11 + 3.0882372e-12 2.1833107e-11 + 2.9868004e-12 2.0850160e-11 + 2.8945211e-12 1.9967416e-11 + 2.8101057e-12 1.9169664e-11 + 2.7325022e-12 1.8444685e-11 + 2.6608452e-12 1.7782520e-11 + 2.5944154e-12 1.7174995e-11 + 2.5326095e-12 1.6615326e-11 + 2.4749172e-12 1.6097812e-11 + 2.4209036e-12 1.5617655e-11 + 2.3701952e-12 1.5170759e-11 + 2.3224698e-12 1.4753633e-11 + 2.2774470e-12 1.4363249e-11 + 2.2348823e-12 1.3997002e-11 + 2.1945607e-12 1.3652613e-11 + 2.1562926e-12 1.3328083e-11 + 2.1199104e-12 1.3021664e-11 + 2.0852645e-12 1.2731804e-11 + 2.0522218e-12 1.2457129e-11 + 2.0206627e-12 1.2196419e-11 + 1.9904798e-12 1.1948582e-11 + 1.9615764e-12 1.1712638e-11 + 1.9338648e-12 1.1487708e-11 + 1.9072656e-12 1.1272996e-11 + 1.8817066e-12 1.1067788e-11 + 1.8571219e-12 1.0871435e-11 + 1.8334514e-12 1.0683342e-11 + 1.8106399e-12 1.0502974e-11 + 1.7886370e-12 1.0329839e-11 + 5.9611031e-12 5.4202236e-11 + 5.3193387e-12 4.6363395e-11 + 4.8449393e-12 4.0767469e-11 + 4.4760502e-12 3.6547009e-11 + 4.1787080e-12 3.3235847e-11 + 3.9325031e-12 3.0559705e-11 + 3.7243361e-12 2.8345971e-11 + 3.5453644e-12 2.6480297e-11 + 3.3893754e-12 2.4883679e-11 + 3.2518594e-12 2.3499732e-11 + 3.1294537e-12 2.2287024e-11 + 3.0195926e-12 2.1214420e-11 + 2.9202802e-12 2.0258002e-11 + 2.8299378e-12 1.9399116e-11 + 2.7472978e-12 1.8622950e-11 + 2.6713296e-12 1.7917608e-11 + 2.6011852e-12 1.7273411e-11 + 2.5361602e-12 1.6682393e-11 + 2.4756635e-12 1.6137941e-11 + 2.4191952e-12 1.5634517e-11 + 2.3663293e-12 1.5167450e-11 + 2.3167000e-12 1.4732759e-11 + 2.2699916e-12 1.4327029e-11 + 2.2259296e-12 1.3947327e-11 + 2.1842744e-12 1.3591112e-11 + 2.1448154e-12 1.3256165e-11 + 2.1073672e-12 1.2940544e-11 + 2.0717651e-12 1.2642544e-11 + 2.0378630e-12 1.2360658e-11 + 2.0055304e-12 1.2093547e-11 + 1.9746502e-12 1.1840022e-11 + 1.9451172e-12 1.1599022e-11 + 1.9168367e-12 1.1369591e-11 + 1.8897229e-12 1.1150878e-11 + 1.8636979e-12 1.0942105e-11 + 1.8386911e-12 1.0742579e-11 + 1.8146380e-12 1.0551667e-11 + 1.7914797e-12 1.0368791e-11 + 1.7691622e-12 1.0193430e-11 + 1.7476361e-12 1.0025106e-11 + 5.8337663e-12 5.2714403e-11 + 5.2051141e-12 4.5087571e-11 + 4.7403792e-12 3.9642049e-11 + 4.3790108e-12 3.5534684e-11 + 4.0877431e-12 3.2312148e-11 + 3.8465812e-12 2.9707614e-11 + 3.6426904e-12 2.7553138e-11 + 3.4674063e-12 2.5737442e-11 + 3.3146408e-12 2.4183649e-11 + 3.1799750e-12 2.2836866e-11 + 3.0601133e-12 2.1656772e-11 + 2.9525412e-12 2.0613043e-11 + 2.8553031e-12 1.9682418e-11 + 2.7668517e-12 1.8846723e-11 + 2.6859451e-12 1.8091546e-11 + 2.6115735e-12 1.7405302e-11 + 2.5429062e-12 1.6778573e-11 + 2.4792529e-12 1.6203597e-11 + 2.4200346e-12 1.5673949e-11 + 2.3647616e-12 1.5184230e-11 + 2.3130164e-12 1.4729896e-11 + 2.2644410e-12 1.4307064e-11 + 2.2187258e-12 1.3912419e-11 + 2.1756022e-12 1.3543108e-11 + 2.1348352e-12 1.3196647e-11 + 2.0962187e-12 1.2870883e-11 + 2.0595710e-12 1.2563926e-11 + 2.0247309e-12 1.2274115e-11 + 1.9915552e-12 1.1999982e-11 + 1.9599161e-12 1.1740227e-11 + 1.9296989e-12 1.1493692e-11 + 1.9008006e-12 1.1259339e-11 + 1.8731284e-12 1.1036245e-11 + 1.8465983e-12 1.0823579e-11 + 1.8211342e-12 1.0620583e-11 + 1.7966667e-12 1.0426585e-11 + 1.7731327e-12 1.0240962e-11 + 1.7504746e-12 1.0063160e-11 + 1.7286395e-12 9.8926682e-12 + 1.7075790e-12 9.7290216e-12 + 5.7094677e-12 5.1269844e-11 + 5.0935910e-12 4.3848280e-11 + 4.6382796e-12 3.8548559e-11 + 4.2842469e-12 3.4550902e-11 + 3.9989058e-12 3.1414397e-11 + 3.7626650e-12 2.8879386e-11 + 3.5629477e-12 2.6782481e-11 + 3.3912631e-12 2.5015349e-11 + 3.2416447e-12 2.3503169e-11 + 3.1097615e-12 2.2192508e-11 + 2.9923834e-12 2.1044114e-11 + 2.8870462e-12 2.0028468e-11 + 2.7918331e-12 1.9122914e-11 + 2.7052281e-12 1.8309768e-11 + 2.6260140e-12 1.7575001e-11 + 2.5532013e-12 1.6907326e-11 + 2.4859762e-12 1.6297583e-11 + 2.4236623e-12 1.5738214e-11 + 2.3656924e-12 1.5222965e-11 + 2.3115866e-12 1.4746572e-11 + 2.2609360e-12 1.4304618e-11 + 2.2133897e-12 1.3893323e-11 + 2.1686445e-12 1.3509462e-11 + 2.1264372e-12 1.3150253e-11 + 2.0865377e-12 1.2813282e-11 + 2.0487440e-12 1.2496450e-11 + 2.0128781e-12 1.2197921e-11 + 1.9787821e-12 1.1916074e-11 + 1.9463158e-12 1.1649481e-11 + 1.9153539e-12 1.1396882e-11 + 1.8857841e-12 1.1157141e-11 + 1.8575057e-12 1.0929257e-11 + 1.8304276e-12 1.0712328e-11 + 1.8044676e-12 1.0505540e-11 + 1.7795511e-12 1.0308162e-11 + 1.7556102e-12 1.0119538e-11 + 1.7325833e-12 9.9390626e-12 + 1.7104137e-12 9.7661964e-12 + 1.6890497e-12 9.6004385e-12 + 1.6684440e-12 9.4413416e-12 + 5.5881331e-12 4.9866943e-11 + 4.9847048e-12 4.2644207e-11 + 4.5385822e-12 3.7485894e-11 + 4.1917050e-12 3.3594730e-11 + 3.9121460e-12 3.0541731e-11 + 3.6807075e-12 2.8074277e-11 + 3.4850638e-12 2.6033300e-11 + 3.3168929e-12 2.4313371e-11 + 3.1703468e-12 2.2841646e-11 + 3.0411800e-12 2.1566104e-11 + 2.9262267e-12 2.0448531e-11 + 2.8230713e-12 1.9460187e-11 + 2.7298354e-12 1.8579015e-11 + 2.6450329e-12 1.7787799e-11 + 2.5674713e-12 1.7072875e-11 + 2.4961808e-12 1.6423271e-11 + 2.4303640e-12 1.5830042e-11 + 2.3693580e-12 1.5285853e-11 + 2.3126071e-12 1.4784603e-11 + 2.2596412e-12 1.4321181e-11 + 2.2100595e-12 1.3891266e-11 + 2.1635182e-12 1.3491195e-11 + 2.1197203e-12 1.3117822e-11 + 2.0784079e-12 1.2768438e-11 + 2.0393555e-12 1.2440697e-11 + 2.0023653e-12 1.2132556e-11 + 1.9672629e-12 1.1842222e-11 + 1.9338936e-12 1.1568121e-11 + 1.9021200e-12 1.1308866e-11 + 1.8718194e-12 1.1063223e-11 + 1.8428820e-12 1.0830095e-11 + 1.8152088e-12 1.0608503e-11 + 1.7887109e-12 1.0397567e-11 + 1.7633076e-12 1.0196498e-11 + 1.7389259e-12 1.0004586e-11 + 1.7154994e-12 9.8211873e-12 + 1.6929676e-12 9.6457206e-12 + 1.6712751e-12 9.4776529e-12 + 1.6503712e-12 9.3165004e-12 + 1.6302096e-12 9.1618278e-12 + 5.4696901e-12 4.8504135e-11 + 4.8783926e-12 4.1474166e-11 + 4.4412301e-12 3.6453024e-11 + 4.1013325e-12 3.2665240e-11 + 3.8274152e-12 2.9693381e-11 + 3.6006631e-12 2.7291565e-11 + 3.4089954e-12 2.5304952e-11 + 3.2442545e-12 2.3630907e-11 + 3.1007075e-12 2.2198517e-11 + 2.9741927e-12 2.0957116e-11 + 2.8616065e-12 1.9869514e-11 + 2.7605813e-12 1.8907720e-11 + 2.6692756e-12 1.8050267e-11 + 2.5862331e-12 1.7280380e-11 + 2.5102849e-12 1.6584764e-11 + 2.4404807e-12 1.5952722e-11 + 2.3760390e-12 1.5375568e-11 + 2.3163102e-12 1.4846144e-11 + 2.2607498e-12 1.4358512e-11 + 2.2088969e-12 1.3907698e-11 + 2.1603591e-12 1.3489499e-11 + 2.1147993e-12 1.3100346e-11 + 2.0719265e-12 1.2737176e-11 + 2.0314880e-12 1.2397348e-11 + 1.9932629e-12 1.2078587e-11 + 1.9570573e-12 1.1778897e-11 + 1.9227004e-12 1.1496536e-11 + 1.8900408e-12 1.1229973e-11 + 1.8589437e-12 1.0977853e-11 + 1.8292890e-12 1.0738981e-11 + 1.8009689e-12 1.0512282e-11 + 1.7738869e-12 1.0296809e-11 + 1.7479555e-12 1.0091704e-11 + 1.7230959e-12 9.8961988e-12 + 1.6992365e-12 9.7096041e-12 + 1.6763123e-12 9.5312899e-12 + 1.6542640e-12 9.3606907e-12 + 1.6330374e-12 9.1972914e-12 + 1.6125830e-12 9.0406210e-12 + 1.5928552e-12 8.8902533e-12 + 5.3540682e-12 4.7180015e-11 + 4.7745928e-12 4.0336974e-11 + 4.3461675e-12 3.5448988e-11 + 4.0130783e-12 3.1761614e-11 + 3.7446655e-12 2.8868576e-11 + 3.5224871e-12 2.6530549e-11 + 3.3347003e-12 2.4596791e-11 + 3.1733075e-12 2.2967361e-11 + 3.0326884e-12 2.1573215e-11 + 2.9087626e-12 2.0365031e-11 + 2.7984873e-12 1.9306577e-11 + 2.6995416e-12 1.8370612e-11 + 2.6101204e-12 1.7536224e-11 + 2.5287962e-12 1.6787084e-11 + 2.4544234e-12 1.6110244e-11 + 2.3860705e-12 1.5495298e-11 + 2.3229715e-12 1.4933776e-11 + 2.2644900e-12 1.4418713e-11 + 2.2100920e-12 1.3944333e-11 + 2.1593262e-12 1.3505787e-11 + 2.1118077e-12 1.3098986e-11 + 2.0672063e-12 1.2720454e-11 + 2.0252369e-12 1.2367207e-11 + 1.9856518e-12 1.2036683e-11 + 1.9482345e-12 1.1726656e-11 + 1.9127952e-12 1.1435187e-11 + 1.8791664e-12 1.1160583e-11 + 1.8471996e-12 1.0901350e-11 + 1.8167631e-12 1.0656172e-11 + 1.7877391e-12 1.0423884e-11 + 1.7600221e-12 1.0203443e-11 + 1.7335172e-12 9.9939217e-12 + 1.7081391e-12 9.7944886e-12 + 1.6838104e-12 9.6043952e-12 + 1.6604612e-12 9.4229715e-12 + 1.6380275e-12 9.2496033e-12 + 1.6164515e-12 9.0837408e-12 + 1.5956800e-12 8.9248826e-12 + 1.5756645e-12 8.7725717e-12 + 1.5563604e-12 8.6263893e-12 + 5.2411989e-12 4.5893230e-11 + 4.6732454e-12 3.9231511e-11 + 4.2533403e-12 3.4472837e-11 + 3.9268924e-12 3.0883003e-11 + 3.6638506e-12 2.8066587e-11 + 3.4461359e-12 2.5790582e-11 + 3.2621371e-12 2.3908218e-11 + 3.1040128e-12 2.2322179e-11 + 2.9662518e-12 2.0965231e-11 + 2.8448532e-12 1.9789345e-11 + 2.7368340e-12 1.8759253e-11 + 2.6399185e-12 1.7848409e-11 + 2.5523372e-12 1.7036464e-11 + 2.4726907e-12 1.6307508e-11 + 2.3998560e-12 1.5648937e-11 + 2.3329203e-12 1.5050622e-11 + 2.2711325e-12 1.4504308e-11 + 2.2138688e-12 1.4003222e-11 + 2.1606061e-12 1.3541731e-11 + 2.1109017e-12 1.3115121e-11 + 2.0643786e-12 1.2719408e-11 + 2.0207132e-12 1.2351209e-11 + 1.9796259e-12 1.2007621e-11 + 1.9408741e-12 1.1686143e-11 + 1.9042457e-12 1.1384613e-11 + 1.8695546e-12 1.1101143e-11 + 1.8366368e-12 1.0834086e-11 + 1.8053467e-12 1.0581987e-11 + 1.7755553e-12 1.0343562e-11 + 1.7471472e-12 1.0117678e-11 + 1.7200190e-12 9.9033228e-12 + 1.6940778e-12 9.6995913e-12 + 1.6692400e-12 9.5056786e-12 + 1.6454299e-12 9.3208511e-12 + 1.6225788e-12 9.1444548e-12 + 1.6006242e-12 8.9759003e-12 + 1.5795095e-12 8.8146470e-12 + 1.5591824e-12 8.6602058e-12 + 1.5395956e-12 8.5121340e-12 + 1.5207053e-12 8.3700248e-12 + 5.1310153e-12 4.4642449e-11 + 4.5742917e-12 3.8156767e-11 + 4.1626952e-12 3.3523685e-11 + 3.8427261e-12 3.0028665e-11 + 3.5849253e-12 2.7286734e-11 + 3.3715670e-12 2.5071030e-11 + 3.1912657e-12 2.3238646e-11 + 3.0363318e-12 2.1694811e-11 + 2.9013607e-12 2.0374050e-11 + 2.7824293e-12 1.9229596e-11 + 2.6766124e-12 1.8227090e-11 + 2.5816789e-12 1.7340690e-11 + 2.4958940e-12 1.6550576e-11 + 2.4178856e-12 1.5841260e-11 + 2.3465529e-12 1.5200468e-11 + 2.2810008e-12 1.4618329e-11 + 2.2204934e-12 1.4086815e-11 + 2.1644191e-12 1.3599324e-11 + 2.1122648e-12 1.3150376e-11 + 2.0635970e-12 1.2735382e-11 + 2.0180459e-12 1.2350459e-11 + 1.9752944e-12 1.1992312e-11 + 1.9350686e-12 1.1658118e-11 + 1.8971305e-12 1.1345443e-11 + 1.8612724e-12 1.1052181e-11 + 1.8273120e-12 1.0776496e-11 + 1.7950883e-12 1.0516779e-11 + 1.7644591e-12 1.0271617e-11 + 1.7352976e-12 1.0039766e-11 + 1.7074909e-12 9.8201129e-12 + 1.6809377e-12 9.6116797e-12 + 1.6555471e-12 9.4135827e-12 + 1.6312370e-12 9.2250354e-12 + 1.6079332e-12 9.0453308e-12 + 1.5855686e-12 8.8738297e-12 + 1.5640821e-12 8.7099555e-12 + 1.5434178e-12 8.5531847e-12 + 1.5235248e-12 8.4030416e-12 + 1.5043567e-12 8.2590938e-12 + 1.4858706e-12 8.1209460e-12 + 5.0234523e-12 4.3426480e-11 + 4.4776744e-12 3.7111721e-11 + 4.0741806e-12 3.2600691e-11 + 3.7605318e-12 2.9197829e-11 + 3.5078451e-12 2.6528333e-11 + 3.2987386e-12 2.4371288e-11 + 3.1220465e-12 2.2587521e-11 + 2.9702268e-12 2.1084743e-11 + 2.8379792e-12 1.9799192e-11 + 2.7214562e-12 1.8685315e-11 + 2.6177893e-12 1.7709651e-11 + 2.5247909e-12 1.6847033e-11 + 2.4407597e-12 1.6078164e-11 + 2.3643507e-12 1.5387960e-11 + 2.2944846e-12 1.4764462e-11 + 2.2302837e-12 1.4198069e-11 + 2.1710266e-12 1.3680954e-11 + 2.1161135e-12 1.3206697e-11 + 2.0650417e-12 1.2769954e-11 + 2.0173861e-12 1.2366260e-11 + 1.9727841e-12 1.1991835e-11 + 1.9309250e-12 1.1643470e-11 + 1.8915404e-12 1.1318417e-11 + 1.8543969e-12 1.1014309e-11 + 1.8192910e-12 1.0729090e-11 + 1.7860440e-12 1.0460976e-11 + 1.7544983e-12 1.0208403e-11 + 1.7245143e-12 9.9699938e-12 + 1.6959680e-12 9.7445346e-12 + 1.6687486e-12 9.5309469e-12 + 1.6427570e-12 9.3282742e-12 + 1.6179039e-12 9.1356582e-12 + 1.5941092e-12 8.9523329e-12 + 1.5713000e-12 8.7776129e-12 + 1.5494106e-12 8.6108730e-12 + 1.5283811e-12 8.4515506e-12 + 1.5081568e-12 8.2991422e-12 + 1.4886879e-12 8.1531802e-12 + 1.4699287e-12 8.0132431e-12 + 1.4518374e-12 7.8789501e-12 + 4.9184462e-12 4.2244164e-11 + 4.3833377e-12 3.6095463e-11 + 3.9877458e-12 3.1703048e-11 + 3.6802630e-12 2.8389795e-11 + 3.4325670e-12 2.5790751e-11 + 3.2276103e-12 2.3690768e-11 + 3.0544409e-12 2.1954303e-11 + 2.9056610e-12 2.0491476e-11 + 2.7760719e-12 1.9240183e-11 + 2.6619000e-12 1.8156056e-11 + 2.5603321e-12 1.7206514e-11 + 2.4692228e-12 1.6367043e-11 + 2.3869040e-12 1.5618850e-11 + 2.3120567e-12 1.4947241e-11 + 2.2436226e-12 1.4340577e-11 + 2.1807411e-12 1.3789504e-11 + 2.1227047e-12 1.3286403e-11 + 2.0689256e-12 1.2825022e-11 + 2.0189109e-12 1.2400155e-11 + 1.9722435e-12 1.2007456e-11 + 1.9285683e-12 1.1643247e-11 + 1.8875807e-12 1.1304402e-11 + 1.8490173e-12 1.0988245e-11 + 1.8126497e-12 1.0692471e-11 + 1.7782784e-12 1.0415080e-11 + 1.7457280e-12 1.0154335e-11 + 1.7148443e-12 9.9087122e-12 + 1.6854904e-12 9.6768714e-12 + 1.6575449e-12 9.4576316e-12 + 1.6308991e-12 9.2499428e-12 + 1.6054558e-12 9.0528750e-12 + 1.5811279e-12 8.8655914e-12 + 1.5578365e-12 8.6873501e-12 + 1.5355104e-12 8.5174772e-12 + 1.5140851e-12 8.3553687e-12 + 1.4935019e-12 8.2004794e-12 + 1.4737073e-12 8.0523127e-12 + 1.4546526e-12 7.9104169e-12 + 1.4362928e-12 7.7743865e-12 + 1.4185871e-12 7.6438415e-12 + 4.8159352e-12 4.1094417e-11 + 4.2912270e-12 3.5107059e-11 + 3.9033415e-12 3.0829985e-11 + 3.6018744e-12 2.7603891e-11 + 3.3590487e-12 2.5073377e-11 + 3.1581423e-12 2.3028908e-11 + 2.9884112e-12 2.1338477e-11 + 2.8425986e-12 1.9914526e-11 + 2.7156045e-12 1.8696569e-11 + 2.6037276e-12 1.7641396e-11 + 2.5042088e-12 1.6717275e-11 + 2.4149440e-12 1.5900330e-11 + 2.3342971e-12 1.5172254e-11 + 2.2609747e-12 1.4518747e-11 + 2.1939388e-12 1.3928467e-11 + 2.1323456e-12 1.3392304e-11 + 2.0755013e-12 1.2902842e-11 + 2.0228295e-12 1.2453988e-11 + 1.9738468e-12 1.2040681e-11 + 1.9281444e-12 1.1658684e-11 + 1.8853743e-12 1.1304415e-11 + 1.8452375e-12 1.0974835e-11 + 1.8074761e-12 1.0667334e-11 + 1.7718661e-12 1.0379670e-11 + 1.7382120e-12 1.0109896e-11 + 1.7063419e-12 9.8563204e-12 + 1.6761047e-12 9.6174613e-12 + 1.6473662e-12 9.3920124e-12 + 1.6200072e-12 9.1788219e-12 + 1.5939216e-12 8.9768757e-12 + 1.5690140e-12 8.7852598e-12 + 1.5451989e-12 8.6031681e-12 + 1.5223990e-12 8.4298691e-12 + 1.5005447e-12 8.2647149e-12 + 1.4795727e-12 8.1071125e-12 + 1.4594255e-12 7.9565343e-12 + 1.4400507e-12 7.8124950e-12 + 1.4214004e-12 7.6745571e-12 + 1.4034308e-12 7.5423232e-12 + 1.3861018e-12 7.4154265e-12 + 4.7158589e-12 3.9976210e-11 + 4.2012889e-12 3.4145664e-11 + 3.8209197e-12 2.9980753e-11 + 3.5253220e-12 2.6839454e-11 + 3.2872491e-12 2.4375622e-11 + 3.0902957e-12 2.2385182e-11 + 2.9239206e-12 2.0739538e-11 + 2.7810042e-12 1.9353421e-11 + 2.6565432e-12 1.8167912e-11 + 2.5469069e-12 1.7140923e-11 + 2.4493886e-12 1.6241540e-11 + 2.3619245e-12 1.5446521e-11 + 2.2829101e-12 1.4738032e-11 + 2.2110766e-12 1.4102139e-11 + 2.1454059e-12 1.3527804e-11 + 2.0850707e-12 1.3006151e-11 + 2.0293903e-12 1.2529965e-11 + 1.9777997e-12 1.2093306e-11 + 1.9298247e-12 1.1691247e-11 + 1.8850646e-12 1.1319664e-11 + 1.8431781e-12 1.0975070e-11 + 1.8038721e-12 1.0654503e-11 + 1.7668938e-12 1.0355425e-11 + 1.7320237e-12 1.0075654e-11 + 1.6990698e-12 9.8132913e-12 + 1.6678641e-12 9.5666940e-12 + 1.6382582e-12 9.3344129e-12 + 1.6101206e-12 9.1151843e-12 + 1.5833346e-12 8.9078855e-12 + 1.5577961e-12 8.7115240e-12 + 1.5334116e-12 8.5252151e-12 + 1.5100972e-12 8.3481714e-12 + 1.4877775e-12 8.1796829e-12 + 1.4663840e-12 8.0191174e-12 + 1.4458547e-12 7.8659017e-12 + 1.4261333e-12 7.7195149e-12 + 1.4071685e-12 7.5794926e-12 + 1.3889133e-12 7.4454065e-12 + 1.3713248e-12 7.3168650e-12 + 1.3543636e-12 7.1935200e-12 + 4.6181582e-12 3.8888556e-11 + 4.1134716e-12 3.3210474e-11 + 3.7404334e-12 2.9154662e-11 + 3.4505624e-12 2.6095850e-11 + 3.2171278e-12 2.3696918e-11 + 3.0240325e-12 2.1759054e-11 + 2.8609330e-12 2.0157010e-11 + 2.7208435e-12 1.8807717e-11 + 2.5988552e-12 1.7653791e-11 + 2.4914061e-12 1.6654232e-11 + 2.3958409e-12 1.5778933e-11 + 2.3101351e-12 1.5005259e-11 + 2.2327145e-12 1.4315826e-11 + 2.1623348e-12 1.3697081e-11 + 2.0979972e-12 1.3138267e-11 + 2.0388902e-12 1.2630740e-11 + 1.9843464e-12 1.2167470e-11 + 1.9338113e-12 1.1742680e-11 + 1.8868203e-12 1.1351570e-11 + 1.8429803e-12 1.0990122e-11 + 1.8019565e-12 1.0654944e-11 + 1.7634617e-12 1.0343149e-11 + 1.7272481e-12 1.0052269e-11 + 1.6931004e-12 9.7801761e-12 + 1.6608305e-12 9.5250284e-12 + 1.6302735e-12 9.2852207e-12 + 1.6012840e-12 9.0593432e-12 + 1.5737333e-12 8.8461672e-12 + 1.5475069e-12 8.6445978e-12 + 1.5225027e-12 8.4536713e-12 + 1.4986291e-12 8.2725260e-12 + 1.4758039e-12 8.1003936e-12 + 1.4539531e-12 7.9365877e-12 + 1.4330096e-12 7.7804879e-12 + 1.4129128e-12 7.6315390e-12 + 1.3936073e-12 7.4892340e-12 + 1.3750429e-12 7.3531178e-12 + 1.3571735e-12 7.2227777e-12 + 1.3399572e-12 7.0978324e-12 + 1.3233553e-12 6.9779390e-12 + 4.5227757e-12 3.7830464e-11 + 4.0277243e-12 3.2300684e-11 + 3.6618368e-12 2.8351022e-11 + 3.3775536e-12 2.5372501e-11 + 3.1486455e-12 2.3036714e-11 + 2.9593155e-12 2.1150033e-11 + 2.7994131e-12 1.9590424e-11 + 2.6620830e-12 1.8276983e-11 + 2.5425085e-12 1.7153799e-11 + 2.4371946e-12 1.6180942e-11 + 2.3435362e-12 1.5329089e-11 + 2.2595470e-12 1.4576187e-11 + 2.1836827e-12 1.3905310e-11 + 2.1147224e-12 1.3303255e-11 + 2.0516864e-12 1.2759548e-11 + 1.9937787e-12 1.2265767e-11 + 1.9403445e-12 1.1815074e-11 + 1.8908401e-12 1.1401835e-11 + 1.8448098e-12 1.1021380e-11 + 1.8018681e-12 1.0669797e-11 + 1.7616868e-12 1.0343781e-11 + 1.7239842e-12 1.0040527e-11 + 1.6885172e-12 9.7576239e-12 + 1.6550749e-12 9.4930065e-12 + 1.6234729e-12 9.2448767e-12 + 1.5935495e-12 9.0116743e-12 + 1.5651621e-12 8.7920294e-12 + 1.5381845e-12 8.5847435e-12 + 1.5125046e-12 8.3887506e-12 + 1.4880222e-12 8.2031111e-12 + 1.4646475e-12 8.0269914e-12 + 1.4423001e-12 7.8596405e-12 + 1.4209073e-12 7.7003878e-12 + 1.4004034e-12 7.5486333e-12 + 1.3807289e-12 7.4038350e-12 + 1.3618296e-12 7.2654996e-12 + 1.3436563e-12 7.1331868e-12 + 1.3261638e-12 7.0064903e-12 + 1.3093109e-12 6.8850422e-12 + 1.2930599e-12 6.7685078e-12 + 4.4296553e-12 3.6801091e-11 + 3.9439977e-12 3.1415564e-11 + 3.5850853e-12 2.7569190e-11 + 3.3062545e-12 2.4668805e-11 + 3.0817637e-12 2.2394497e-11 + 2.8961085e-12 2.0557630e-11 + 2.7393265e-12 1.9039339e-11 + 2.6046898e-12 1.7760799e-11 + 2.4874716e-12 1.6667542e-11 + 2.3842423e-12 1.5720682e-11 + 2.2924456e-12 1.4891650e-11 + 2.2101324e-12 1.4158969e-11 + 2.1357876e-12 1.3506155e-11 + 2.0682132e-12 1.2920348e-11 + 2.0064480e-12 1.2391344e-11 + 1.9497111e-12 1.1910949e-11 + 1.8973604e-12 1.1472493e-11 + 1.8488624e-12 1.1070499e-11 + 1.8037701e-12 1.0700416e-11 + 1.7617055e-12 1.0358434e-11 + 1.7223467e-12 1.0041336e-11 + 1.6854176e-12 9.7463886e-12 + 1.6506798e-12 9.4712509e-12 + 1.6179264e-12 9.2139089e-12 + 1.5869766e-12 8.9726098e-12 + 1.5576719e-12 8.7458365e-12 + 1.5298725e-12 8.5322580e-12 + 1.5034547e-12 8.3307015e-12 + 1.4783085e-12 8.1401351e-12 + 1.4543357e-12 7.9596454e-12 + 1.4314484e-12 7.7884113e-12 + 1.4095676e-12 7.6257124e-12 + 1.3886221e-12 7.4708912e-12 + 1.3685475e-12 7.3233661e-12 + 1.3492854e-12 7.1826054e-12 + 1.3307829e-12 7.0481343e-12 + 1.3129915e-12 6.9195195e-12 + 1.2958671e-12 6.7963685e-12 + 1.2793693e-12 6.6783233e-12 + 1.2634609e-12 6.5650564e-12 + 4.3387422e-12 3.5799540e-11 + 3.8622435e-12 3.0554369e-11 + 3.5101353e-12 2.6808529e-11 + 3.2366246e-12 2.3984203e-11 + 3.0164446e-12 2.1769748e-11 + 2.8343759e-12 1.9981384e-11 + 2.6806395e-12 1.8503320e-11 + 2.5486318e-12 1.7258751e-11 + 2.4337139e-12 1.6194634e-11 + 2.3325197e-12 1.5273087e-11 + 2.2425407e-12 1.4466273e-11 + 2.1618639e-12 1.3753278e-11 + 2.0890026e-12 1.3118049e-11 + 2.0227812e-12 1.2548059e-11 + 1.9622569e-12 1.2033369e-11 + 1.9066632e-12 1.1565999e-11 + 1.8553702e-12 1.1139458e-11 + 1.8078548e-12 1.0748407e-11 + 1.7636784e-12 1.0388420e-11 + 1.7224702e-12 1.0055782e-11 + 1.6839147e-12 9.7473642e-12 + 1.6477409e-12 9.4605047e-12 + 1.6137151e-12 9.1929259e-12 + 1.5816344e-12 8.9426592e-12 + 1.5513215e-12 8.7080095e-12 + 1.5226211e-12 8.4874945e-12 + 1.4953960e-12 8.2798163e-12 + 1.4695249e-12 8.0838384e-12 + 1.4449000e-12 7.8985542e-12 + 1.4214249e-12 7.7230709e-12 + 1.3990136e-12 7.5565954e-12 + 1.3775885e-12 7.3984217e-12 + 1.3570798e-12 7.2479135e-12 + 1.3374245e-12 7.1045005e-12 + 1.3185653e-12 6.9676706e-12 + 1.3004502e-12 6.8369582e-12 + 1.2830318e-12 6.7119423e-12 + 1.2662669e-12 6.5922407e-12 + 1.2501158e-12 6.4775054e-12 + 1.2345421e-12 6.3674195e-12 + 4.2499830e-12 3.4824998e-11 + 3.7824147e-12 2.9716428e-11 + 3.4369443e-12 2.6068445e-11 + 3.1686248e-12 2.3318167e-11 + 2.9526516e-12 2.1161986e-11 + 2.7740830e-12 1.9420850e-11 + 2.6233192e-12 1.7981940e-11 + 2.4938779e-12 1.6770453e-11 + 2.3812056e-12 1.5734709e-11 + 2.2819983e-12 1.4837802e-11 + 2.1937937e-12 1.4052622e-11 + 2.1147147e-12 1.3358794e-11 + 2.0433017e-12 1.2740686e-11 + 1.9784015e-12 1.2186091e-11 + 1.9190885e-12 1.1685339e-11 + 1.8646109e-12 1.1230649e-11 + 1.8143508e-12 1.0815704e-11 + 1.7677947e-12 1.0435309e-11 + 1.7245125e-12 1.0085144e-11 + 1.6841407e-12 9.7616039e-12 + 1.6463695e-12 9.4616352e-12 + 1.6109333e-12 9.1826483e-12 + 1.5776028e-12 8.9224218e-12 + 1.5461791e-12 8.6790463e-12 + 1.5164883e-12 8.4508662e-12 + 1.4883779e-12 8.2364410e-12 + 1.4617137e-12 8.0345074e-12 + 1.4363765e-12 7.8439564e-12 + 1.4122606e-12 7.6638091e-12 + 1.3892717e-12 7.4932006e-12 + 1.3673252e-12 7.3313544e-12 + 1.3463452e-12 7.1775846e-12 + 1.3262632e-12 7.0312718e-12 + 1.3070174e-12 6.8918631e-12 + 1.2885516e-12 6.7588566e-12 + 1.2708149e-12 6.6318005e-12 + 1.2537609e-12 6.5102865e-12 + 1.2373470e-12 6.3939413e-12 + 1.2215345e-12 6.2824274e-12 + 1.2062877e-12 6.1754337e-12 + 4.1633258e-12 3.3876697e-11 + 3.7044655e-12 2.8901062e-11 + 3.3654706e-12 2.5348345e-11 + 3.1022165e-12 2.2670168e-11 + 2.8903485e-12 2.0570725e-11 + 2.7151960e-12 1.8875573e-11 + 2.5673336e-12 1.7474800e-11 + 2.4403975e-12 1.6295527e-11 + 2.3299173e-12 1.5287412e-11 + 2.2326498e-12 1.4414493e-11 + 2.1461778e-12 1.3650378e-11 + 2.0686585e-12 1.2975210e-11 + 1.9986597e-12 1.2373769e-11 + 1.9350492e-12 1.1834165e-11 + 1.8769189e-12 1.1346978e-11 + 1.8235311e-12 1.0904634e-11 + 1.7742793e-12 1.0500978e-11 + 1.7286599e-12 1.0130952e-11 + 1.6862510e-12 9.7903514e-12 + 1.6466957e-12 9.4756648e-12 + 1.6096904e-12 9.1839201e-12 + 1.5749745e-12 8.9125928e-12 + 1.5423230e-12 8.6595254e-12 + 1.5115409e-12 8.4228566e-12 + 1.4824576e-12 8.2009734e-12 + 1.4549236e-12 7.9924734e-12 + 1.4288071e-12 7.7961283e-12 + 1.4039914e-12 7.6108606e-12 + 1.3803727e-12 7.4357155e-12 + 1.3578586e-12 7.2698477e-12 + 1.3363660e-12 7.1125073e-12 + 1.3158207e-12 6.9630227e-12 + 1.2961554e-12 6.8207936e-12 + 1.2773094e-12 6.6852796e-12 + 1.2592279e-12 6.5559929e-12 + 1.2418608e-12 6.4324962e-12 + 1.2251625e-12 6.3143885e-12 + 1.2090915e-12 6.2013089e-12 + 1.1936097e-12 6.0929274e-12 + 1.1786822e-12 5.9889447e-12 + 4.0787199e-12 3.2953836e-11 + 3.6283513e-12 2.8107633e-11 + 3.2956737e-12 2.4647678e-11 + 3.0373621e-12 2.2039713e-11 + 2.8295002e-12 1.9995523e-11 + 2.6576816e-12 1.8345150e-11 + 2.5126513e-12 1.6981515e-11 + 2.3881607e-12 1.5833604e-11 + 2.2798207e-12 1.4852386e-11 + 2.1844469e-12 1.4002832e-11 + 2.0996663e-12 1.3259225e-11 + 2.0236698e-12 1.2602229e-11 + 1.9550516e-12 1.2017013e-11 + 1.8927003e-12 1.1492004e-11 + 1.8357247e-12 1.1018021e-11 + 1.7834008e-12 1.0587695e-11 + 1.7351335e-12 1.0195030e-11 + 1.6904288e-12 9.8350960e-12 + 1.6488725e-12 9.5038075e-12 + 1.6101147e-12 9.1977378e-12 + 1.5738573e-12 8.9139986e-12 + 1.5398447e-12 8.6501270e-12 + 1.5078565e-12 8.4040284e-12 + 1.4777009e-12 8.1738852e-12 + 1.4492109e-12 7.9581303e-12 + 1.4222398e-12 7.7553981e-12 + 1.3966582e-12 7.5644940e-12 + 1.3723517e-12 7.3843660e-12 + 1.3492186e-12 7.2140869e-12 + 1.3271682e-12 7.0528343e-12 + 1.3061190e-12 6.8998781e-12 + 1.2859981e-12 6.7545630e-12 + 1.2667398e-12 6.6163073e-12 + 1.2482844e-12 6.4845826e-12 + 1.2305781e-12 6.3589165e-12 + 1.2135719e-12 6.2388808e-12 + 1.1972211e-12 6.1240882e-12 + 1.1814850e-12 6.0141852e-12 + 1.1663262e-12 5.9088531e-12 + 1.1517105e-12 5.8077965e-12 + 3.9961156e-12 3.2055726e-11 + 3.5540282e-12 2.7335525e-11 + 3.2275137e-12 2.3965902e-11 + 2.9740249e-12 2.1426310e-11 + 2.7700724e-12 1.9435933e-11 + 2.6015075e-12 1.7829165e-11 + 2.4592416e-12 1.6501688e-11 + 2.3371383e-12 1.5384329e-11 + 2.2308876e-12 1.4429301e-11 + 2.1373626e-12 1.3602496e-11 + 2.0542333e-12 1.2878858e-11 + 1.9797236e-12 1.2239552e-11 + 1.9124531e-12 1.1670137e-11 + 1.8513312e-12 1.1159337e-11 + 1.7954829e-12 1.0698213e-11 + 1.7441978e-12 1.0279585e-11 + 1.6968919e-12 9.8976164e-12 + 1.6530802e-12 9.5475110e-12 + 1.6123565e-12 9.2252852e-12 + 1.5743773e-12 8.9276036e-12 + 1.5388504e-12 8.6516543e-12 + 1.5055248e-12 8.3950438e-12 + 1.4741841e-12 8.1557246e-12 + 1.4446405e-12 7.9319340e-12 + 1.4167299e-12 7.7221443e-12 + 1.3903084e-12 7.5250250e-12 + 1.3652493e-12 7.3394151e-12 + 1.3414402e-12 7.1642896e-12 + 1.3187813e-12 6.9987471e-12 + 1.2971836e-12 6.8419850e-12 + 1.2765675e-12 6.6932934e-12 + 1.2568612e-12 6.5520375e-12 + 1.2380002e-12 6.4176466e-12 + 1.2199263e-12 6.2896087e-12 + 1.2025865e-12 6.1674655e-12 + 1.1859328e-12 6.0507987e-12 + 1.1699214e-12 5.9392302e-12 + 1.1545123e-12 5.8324186e-12 + 1.1396690e-12 5.7300520e-12 + 1.1253578e-12 5.6318439e-12 + 3.9154649e-12 3.1181635e-11 + 3.4814537e-12 2.6584145e-11 + 3.1609519e-12 2.3302491e-11 + 2.9121688e-12 2.0829492e-11 + 2.7120313e-12 1.8891511e-11 + 2.5466423e-12 1.7327220e-11 + 2.4070747e-12 1.6034961e-11 + 2.2873019e-12 1.4947346e-11 + 2.1830908e-12 1.4017832e-11 + 2.0913708e-12 1.3213179e-11 + 2.0098535e-12 1.2508987e-11 + 1.9367952e-12 1.1886908e-11 + 1.8708405e-12 1.1332875e-11 + 1.8109188e-12 1.0835907e-11 + 1.7561712e-12 1.0387298e-11 + 1.7059004e-12 9.9800612e-12 + 1.6595331e-12 9.6085081e-12 + 1.6165935e-12 9.2679689e-12 + 1.5766828e-12 8.9545640e-12 + 1.5394641e-12 8.6650476e-12 + 1.5046504e-12 8.3966822e-12 + 1.4719956e-12 8.1471369e-12 + 1.4412875e-12 7.9144196e-12 + 1.4123415e-12 7.6968103e-12 + 1.3849967e-12 7.4928256e-12 + 1.3591121e-12 7.3011709e-12 + 1.3345632e-12 7.1207125e-12 + 1.3112398e-12 6.9504555e-12 + 1.2890440e-12 6.7895199e-12 + 1.2678885e-12 6.6371289e-12 + 1.2476952e-12 6.4925887e-12 + 1.2283938e-12 6.3552797e-12 + 1.2099210e-12 6.2246499e-12 + 1.1922195e-12 6.1002015e-12 + 1.1752377e-12 5.9814841e-12 + 1.1589282e-12 5.8680946e-12 + 1.1432483e-12 5.7596639e-12 + 1.1281586e-12 5.6558599e-12 + 1.1136234e-12 5.5563786e-12 + 1.0996098e-12 5.4609427e-12 + 3.8367208e-12 3.0330921e-11 + 3.4105862e-12 2.5852913e-11 + 3.0959503e-12 2.2656948e-11 + 2.8517587e-12 2.0248800e-11 + 2.6553442e-12 1.8361863e-11 + 2.4930548e-12 1.6838939e-11 + 2.3561213e-12 1.5580975e-11 + 2.2386235e-12 1.4522332e-11 + 2.1364036e-12 1.3617663e-11 + 2.0464455e-12 1.2834580e-11 + 1.9665021e-12 1.2149322e-11 + 1.8948607e-12 1.1544015e-11 + 1.8301906e-12 1.1004959e-11 + 1.7714407e-12 1.0521458e-11 + 1.7177678e-12 1.0085038e-11 + 1.6684872e-12 9.6888904e-12 + 1.6230365e-12 9.3274751e-12 + 1.5809484e-12 8.9962479e-12 + 1.5418317e-12 8.6914310e-12 + 1.5053556e-12 8.4098652e-12 + 1.4712385e-12 8.1488805e-12 + 1.4392389e-12 7.9062111e-12 + 1.4091484e-12 7.6799179e-12 + 1.3807860e-12 7.4683268e-12 + 1.3539939e-12 7.2699927e-12 + 1.3286336e-12 7.0836545e-12 + 1.3045829e-12 6.9082104e-12 + 1.2817338e-12 6.7426894e-12 + 1.2599903e-12 6.5862393e-12 + 1.2392667e-12 6.4381006e-12 + 1.2194864e-12 6.2975990e-12 + 1.2005803e-12 6.1641324e-12 + 1.1824866e-12 6.0371639e-12 + 1.1651490e-12 5.9162050e-12 + 1.1485166e-12 5.8008227e-12 + 1.1325434e-12 5.6906206e-12 + 1.1171872e-12 5.5852445e-12 + 1.1024096e-12 5.4843662e-12 + 1.0881754e-12 5.3876912e-12 + 1.0744522e-12 5.2949507e-12 + 3.7598372e-12 2.9502905e-11 + 3.3413848e-12 2.5141284e-11 + 3.0324716e-12 2.2028768e-11 + 2.7927602e-12 1.9683798e-11 + 2.5999791e-12 1.7846580e-11 + 2.4407152e-12 1.6363934e-11 + 2.3063528e-12 1.5139383e-11 + 2.1910759e-12 1.4108958e-11 + 2.0907998e-12 1.3228479e-11 + 2.0025618e-12 1.2466406e-11 + 1.9241547e-12 1.1799585e-11 + 1.8538966e-12 1.1210611e-11 + 1.7904807e-12 1.0686137e-11 + 1.7328748e-12 1.0215751e-11 + 1.6802512e-12 9.7911951e-12 + 1.6319376e-12 9.4058415e-12 + 1.5873819e-12 9.0542973e-12 + 1.5461254e-12 8.7321354e-12 + 1.5077841e-12 8.4356792e-12 + 1.4720332e-12 8.1618497e-12 + 1.4385963e-12 7.9080499e-12 + 1.4072365e-12 7.6720760e-12 + 1.3777492e-12 7.4520355e-12 + 1.3499568e-12 7.2463008e-12 + 1.3237043e-12 7.0534654e-12 + 1.2988560e-12 6.8723013e-12 + 1.2752918e-12 6.7017367e-12 + 1.2529060e-12 6.5408264e-12 + 1.2316042e-12 6.3887411e-12 + 1.2113024e-12 6.2447396e-12 + 1.1919253e-12 6.1081683e-12 + 1.1734055e-12 5.9784405e-12 + 1.1556819e-12 5.8550323e-12 + 1.1386996e-12 5.7374703e-12 + 1.1224087e-12 5.6253324e-12 + 1.1067639e-12 5.5182329e-12 + 1.0917240e-12 5.4158263e-12 + 1.0772511e-12 5.3177944e-12 + 1.0633108e-12 5.2238512e-12 + 1.0498715e-12 5.1337336e-12 + 3.6847695e-12 2.8696973e-11 + 3.2738098e-12 2.4448713e-11 + 2.9704796e-12 2.1417492e-11 + 2.7351398e-12 1.9134059e-11 + 2.5459046e-12 1.7345267e-11 + 2.3895937e-12 1.5901863e-11 + 2.2577412e-12 1.4709856e-11 + 2.1446323e-12 1.3706909e-11 + 2.0462538e-12 1.2849988e-11 + 1.9596949e-12 1.2108373e-11 + 1.8827876e-12 1.1459506e-11 + 1.8138799e-12 1.0886435e-11 + 1.7516885e-12 1.0376160e-11 + 1.6951996e-12 9.9185412e-12 + 1.6436005e-12 9.5055382e-12 + 1.5962312e-12 9.1306956e-12 + 1.5525495e-12 8.7887606e-12 + 1.5121051e-12 8.4754248e-12 + 1.4745209e-12 8.1871033e-12 + 1.4394783e-12 7.9208080e-12 + 1.4067057e-12 7.6740025e-12 + 1.3759707e-12 7.4445430e-12 + 1.3470725e-12 7.2305874e-12 + 1.3198367e-12 7.0305535e-12 + 1.2941113e-12 6.8430709e-12 + 1.2697629e-12 6.6669425e-12 + 1.2466739e-12 6.5011260e-12 + 1.2247405e-12 6.3447031e-12 + 1.2038700e-12 6.1968633e-12 + 1.1839801e-12 6.0568893e-12 + 1.1649969e-12 5.9241424e-12 + 1.1468542e-12 5.7980526e-12 + 1.1294923e-12 5.6781086e-12 + 1.1128570e-12 5.5638524e-12 + 1.0968996e-12 5.4548704e-12 + 1.0815756e-12 5.3507911e-12 + 1.0668445e-12 5.2512731e-12 + 1.0526693e-12 5.1560103e-12 + 1.0390162e-12 5.0647244e-12 + 1.0258541e-12 4.9771587e-12 + 3.6114740e-12 2.7912518e-11 + 3.2078222e-12 2.3774688e-11 + 2.9099387e-12 2.0822658e-11 + 2.6788646e-12 1.8599163e-11 + 2.4930902e-12 1.6857548e-11 + 2.3396617e-12 1.5452375e-11 + 2.2102592e-12 1.4292056e-11 + 2.0992666e-12 1.3315874e-11 + 2.0027404e-12 1.2481899e-11 + 1.9178208e-12 1.1760208e-11 + 1.8423777e-12 1.1128821e-11 + 1.7747884e-12 1.0571237e-11 + 1.7137925e-12 1.0074790e-11 + 1.6583942e-12 9.6296030e-12 + 1.6077955e-12 9.2278455e-12 + 1.5613483e-12 8.8632337e-12 + 1.5185200e-12 8.5306541e-12 + 1.4788687e-12 8.2259091e-12 + 1.4420239e-12 7.9455129e-12 + 1.4076729e-12 7.6865475e-12 + 1.3755491e-12 7.4465521e-12 + 1.3454243e-12 7.2234329e-12 + 1.3171013e-12 7.0154015e-12 + 1.2904090e-12 6.8209154e-12 + 1.2651983e-12 6.6386395e-12 + 1.2413382e-12 6.4674123e-12 + 1.2187133e-12 6.3062169e-12 + 1.1972217e-12 6.1541608e-12 + 1.1767725e-12 6.0104535e-12 + 1.1572848e-12 5.8743978e-12 + 1.1386864e-12 5.7453725e-12 + 1.1209121e-12 5.6228214e-12 + 1.1039032e-12 5.5062498e-12 + 1.0876070e-12 5.3952095e-12 + 1.0719753e-12 5.2892994e-12 + 1.0569646e-12 5.1881559e-12 + 1.0425352e-12 5.0914490e-12 + 1.0286508e-12 4.9988814e-12 + 1.0152781e-12 4.9101802e-12 + 1.0023869e-12 4.8250969e-12 + 3.5399079e-12 2.7148954e-11 + 3.1433839e-12 2.3118693e-11 + 2.8508141e-12 2.0243817e-11 + 2.6239026e-12 1.8078722e-11 + 2.4415058e-12 1.6383057e-11 + 2.2908909e-12 1.5015123e-11 + 2.1638800e-12 1.3885670e-11 + 2.0549533e-12 1.2935556e-11 + 1.9602353e-12 1.2123932e-11 + 1.8769158e-12 1.1421639e-11 + 1.8029022e-12 1.0807280e-11 + 1.7366000e-12 1.0264774e-11 + 1.6767713e-12 9.7817888e-12 + 1.6224380e-12 9.3487062e-12 + 1.5728162e-12 8.9579003e-12 + 1.5272694e-12 8.6032507e-12 + 1.4852746e-12 8.2797792e-12 + 1.4463977e-12 7.9833976e-12 + 1.4102750e-12 7.7107128e-12 + 1.3765994e-12 7.4588825e-12 + 1.3451092e-12 7.2255149e-12 + 1.3155802e-12 7.0085685e-12 + 1.2878190e-12 6.8063030e-12 + 1.2616576e-12 6.6172160e-12 + 1.2369495e-12 6.4400096e-12 + 1.2135662e-12 6.2735519e-12 + 1.1913946e-12 6.1168537e-12 + 1.1703344e-12 5.9690459e-12 + 1.1502966e-12 5.8293610e-12 + 1.1312019e-12 5.6971180e-12 + 1.1129792e-12 5.5717136e-12 + 1.0955646e-12 5.4526073e-12 + 1.0789008e-12 5.3393149e-12 + 1.0629356e-12 5.2314039e-12 + 1.0476221e-12 5.1284818e-12 + 1.0329175e-12 5.0301955e-12 + 1.0187828e-12 4.9362250e-12 + 1.0051824e-12 4.8462780e-12 + 9.9208374e-13 4.7600925e-12 + 9.7945700e-13 4.6774236e-12 + 3.4700293e-12 2.6405706e-11 + 3.0804576e-12 2.2480257e-11 + 2.7930720e-12 1.9680539e-11 + 2.5702224e-12 1.7572339e-11 + 2.3911223e-12 1.5921438e-11 + 2.2432537e-12 1.4589775e-11 + 2.1185773e-12 1.3490395e-11 + 2.0116672e-12 1.2565670e-11 + 1.9187143e-12 1.1775808e-11 + 1.8369570e-12 1.1092410e-11 + 1.7643389e-12 1.0494632e-11 + 1.6992935e-12 9.9668084e-12 + 1.6406044e-12 9.4969304e-12 + 1.5873110e-12 9.0756336e-12 + 1.5386432e-12 8.6954896e-12 + 1.4939756e-12 8.3505387e-12 + 1.4527947e-12 8.0359357e-12 + 1.4146741e-12 7.7476956e-12 + 1.3792566e-12 7.4825169e-12 + 1.3462405e-12 7.2376357e-12 + 1.3153691e-12 7.0107177e-12 + 1.2864220e-12 6.7997789e-12 + 1.2592093e-12 6.6031236e-12 + 1.2335663e-12 6.4192923e-12 + 1.2093491e-12 6.2470197e-12 + 1.1864315e-12 6.0852034e-12 + 1.1647025e-12 5.9328818e-12 + 1.1440637e-12 5.7892088e-12 + 1.1244278e-12 5.6534373e-12 + 1.1057168e-12 5.5249053e-12 + 1.0878611e-12 5.4030236e-12 + 1.0707980e-12 5.2872687e-12 + 1.0544711e-12 5.1771683e-12 + 1.0388294e-12 5.0723014e-12 + 1.0238267e-12 4.9722871e-12 + 1.0094211e-12 4.8767805e-12 + 9.9557420e-13 4.7854714e-12 + 9.8225126e-13 4.6980757e-12 + 9.6942027e-13 4.6143355e-12 + 9.5705194e-13 4.5340166e-12 + 3.4017975e-12 2.5682237e-11 + 3.0190068e-12 2.1858897e-11 + 2.7366791e-12 1.9132412e-11 + 2.5177935e-12 1.7079636e-11 + 2.3419110e-12 1.5472349e-11 + 2.1967231e-12 1.4176016e-11 + 2.0743254e-12 1.3105925e-11 + 1.9693839e-12 1.2205928e-11 + 1.8781541e-12 1.1437266e-11 + 1.7979218e-12 1.0772267e-11 + 1.7266661e-12 1.0190634e-11 + 1.6628477e-12 9.6771083e-12 + 1.6052716e-12 9.2199965e-12 + 1.5529936e-12 8.8101739e-12 + 1.5052573e-12 8.4404118e-12 + 1.4614484e-12 8.1049037e-12 + 1.4210623e-12 7.7989327e-12 + 1.3836802e-12 7.5186172e-12 + 1.3489514e-12 7.2607472e-12 + 1.3165794e-12 7.0226283e-12 + 1.2863122e-12 6.8019886e-12 + 1.2579333e-12 6.5968972e-12 + 1.2312565e-12 6.4057050e-12 + 1.2061197e-12 6.2269880e-12 + 1.1823818e-12 6.0595160e-12 + 1.1599191e-12 5.9022173e-12 + 1.1386224e-12 5.7541544e-12 + 1.1183952e-12 5.6145046e-12 + 1.0991518e-12 5.4825412e-12 + 1.0808157e-12 5.3576194e-12 + 1.0633184e-12 5.2391664e-12 + 1.0465986e-12 5.1266718e-12 + 1.0306008e-12 5.0196780e-12 + 1.0152751e-12 4.9177732e-12 + 1.0005760e-12 4.8205874e-12 + 9.8646235e-13 4.7277855e-12 + 9.7289672e-13 4.6390647e-12 + 9.5984480e-13 4.5541498e-12 + 9.4727527e-13 4.4727903e-12 + 9.3515937e-13 4.3947567e-12 + 3.3351725e-12 2.4978006e-11 + 2.9589958e-12 2.1254163e-11 + 2.6816029e-12 1.8599023e-11 + 2.4665859e-12 1.6600245e-11 + 2.2938439e-12 1.5035441e-11 + 2.1512726e-12 1.3773533e-11 + 2.0310993e-12 1.2731971e-11 + 1.9280793e-12 1.1856060e-11 + 1.8385316e-12 1.1108041e-11 + 1.7597882e-12 1.0460963e-11 + 1.6898627e-12 9.8950532e-12 + 1.6272425e-12 9.3954509e-12 + 1.5707530e-12 8.9507687e-12 + 1.5194666e-12 8.5521203e-12 + 1.4726400e-12 8.1924634e-12 + 1.4296696e-12 7.8661480e-12 + 1.3900597e-12 7.5685800e-12 + 1.3533988e-12 7.2959834e-12 + 1.3193425e-12 7.0452274e-12 + 1.2875995e-12 6.8136903e-12 + 1.2579223e-12 6.5991619e-12 + 1.2300984e-12 6.3997623e-12 + 1.2039448e-12 6.2138850e-12 + 1.1793024e-12 6.0401461e-12 + 1.1560328e-12 5.8773466e-12 + 1.1340143e-12 5.7244438e-12 + 1.1131398e-12 5.5805263e-12 + 1.0933146e-12 5.4447921e-12 + 1.0744546e-12 5.3165342e-12 + 1.0564846e-12 5.1951249e-12 + 1.0393376e-12 5.0800084e-12 + 1.0229531e-12 4.9706861e-12 + 1.0072768e-12 4.8667150e-12 + 9.9225964e-13 4.7676920e-12 + 9.7785711e-13 4.6732575e-12 + 9.6402879e-13 4.5830874e-12 + 9.5073786e-13 4.4968850e-12 + 9.3795071e-13 4.4143850e-12 + 9.2563658e-13 4.3353401e-12 + 9.1376727e-13 4.2595303e-12 + 3.2701150e-12 2.4292499e-11 + 2.9003897e-12 2.0665600e-11 + 2.6278118e-12 1.8079980e-11 + 2.4165703e-12 1.6133815e-11 + 2.2468936e-12 1.4610403e-11 + 2.1068763e-12 1.3382021e-11 + 1.9888742e-12 1.2368251e-11 + 1.8877300e-12 1.1515801e-11 + 1.7998245e-12 1.0787887e-11 + 1.7225346e-12 1.0158261e-11 + 1.6539079e-12 9.6076627e-12 + 1.5924576e-12 9.1216181e-12 + 1.5370293e-12 8.6890396e-12 + 1.4867112e-12 8.3012679e-12 + 1.4407730e-12 7.9514538e-12 + 1.3986215e-12 7.6340898e-12 + 1.3597695e-12 7.3447022e-12 + 1.3238130e-12 7.0796168e-12 + 1.2904133e-12 6.8357854e-12 + 1.2592847e-12 6.6106558e-12 + 1.2301836e-12 6.4020752e-12 + 1.2029017e-12 6.2082167e-12 + 1.1772591e-12 6.0275126e-12 + 1.1530996e-12 5.8586179e-12 + 1.1302873e-12 5.7003645e-12 + 1.1087027e-12 5.5517407e-12 + 1.0882406e-12 5.4118564e-12 + 1.0688081e-12 5.2799328e-12 + 1.0503226e-12 5.1552803e-12 + 1.0327103e-12 5.0372901e-12 + 1.0159053e-12 4.9254192e-12 + 9.9984835e-13 4.8191848e-12 + 9.8448615e-13 4.7181522e-12 + 9.6977047e-13 4.6219338e-12 + 9.5565765e-13 4.5301774e-12 + 9.4210802e-13 4.4425673e-12 + 9.2908544e-13 4.3588159e-12 + 9.1655692e-13 4.2786626e-12 + 9.0449229e-13 4.2018710e-12 + 8.9286386e-13 4.1282241e-12 + 3.2065868e-12 2.3625221e-11 + 2.8431543e-12 2.0092780e-11 + 2.5752747e-12 1.7574899e-11 + 2.3677179e-12 1.5679993e-11 + 2.2010331e-12 1.4196910e-11 + 2.0635088e-12 1.3001190e-11 + 1.9476261e-12 1.2014488e-11 + 1.8483131e-12 1.1184889e-11 + 1.7620106e-12 1.0476559e-11 + 1.6861400e-12 9.8639300e-12 + 1.6187816e-12 9.3282416e-12 + 1.5584737e-12 8.8553984e-12 + 1.5040816e-12 8.4346042e-12 + 1.4547092e-12 8.0574275e-12 + 1.4096384e-12 7.7171935e-12 + 1.3682865e-12 7.4085431e-12 + 1.3301748e-12 7.1271202e-12 + 1.2949061e-12 6.8693471e-12 + 1.2621478e-12 6.6322561e-12 + 1.2316190e-12 6.4133632e-12 + 1.2030807e-12 6.2105730e-12 + 1.1763281e-12 6.0221047e-12 + 1.1511846e-12 5.8464365e-12 + 1.1274968e-12 5.6822562e-12 + 1.1051311e-12 5.5284294e-12 + 1.0839703e-12 5.3839690e-12 + 1.0639111e-12 5.2480094e-12 + 1.0448622e-12 5.1197933e-12 + 1.0267425e-12 4.9986501e-12 + 1.0094795e-12 4.8839858e-12 + 9.9300867e-13 4.7752735e-12 + 9.7727173e-13 4.6720421e-12 + 9.6221633e-13 4.5738717e-12 + 9.4779516e-13 4.4803800e-12 + 9.3396535e-13 4.3912291e-12 + 9.2068795e-13 4.3061088e-12 + 9.0792751e-13 4.2247416e-12 + 8.9565165e-13 4.1468730e-12 + 8.8383074e-13 4.0722726e-12 + 8.7243762e-13 4.0007290e-12 + 3.1445503e-12 2.2975682e-11 + 2.7872563e-12 1.9535289e-11 + 2.5239613e-12 1.7083408e-11 + 2.3200007e-12 1.5238452e-11 + 2.1562362e-12 1.3794651e-11 + 2.0211453e-12 1.2630752e-11 + 1.9073315e-12 1.1670416e-11 + 1.8098060e-12 1.0863073e-11 + 1.7250688e-12 1.0173817e-11 + 1.6505839e-12 9.5777409e-12 + 1.5844638e-12 9.0565720e-12 + 1.5252715e-12 8.5965871e-12 + 1.4718913e-12 8.1872661e-12 + 1.4234424e-12 7.8204056e-12 + 1.3792188e-12 7.4894964e-12 + 1.3386478e-12 7.1893310e-12 + 1.3012590e-12 6.9156621e-12 + 1.2666619e-12 6.6650069e-12 + 1.2345299e-12 6.4344772e-12 + 1.2045870e-12 6.2216543e-12 + 1.1765984e-12 6.0245002e-12 + 1.1503628e-12 5.8412793e-12 + 1.1257067e-12 5.6705117e-12 + 1.1024796e-12 5.5109209e-12 + 1.0805502e-12 5.3614002e-12 + 1.0598034e-12 5.2209915e-12 + 1.0401377e-12 5.0888516e-12 + 1.0214635e-12 4.9642432e-12 + 1.0037011e-12 4.8465136e-12 + 9.8677953e-13 4.7350862e-12 + 9.7063508e-13 4.6294475e-12 + 9.5521072e-13 4.5291390e-12 + 9.4045503e-13 4.4337510e-12 + 9.2632155e-13 4.3429139e-12 + 9.1276821e-13 4.2562968e-12 + 8.9975676e-13 4.1736002e-12 + 8.8725240e-13 4.0945517e-12 + 8.7522335e-13 4.0189054e-12 + 8.6364053e-13 3.9464365e-12 + 8.5247728e-13 3.8769392e-12 + 3.0839688e-12 2.2343419e-11 + 2.7326630e-12 1.8992716e-11 + 2.4738418e-12 1.6605148e-11 + 2.2733911e-12 1.4808852e-11 + 2.1124769e-12 1.3403328e-11 + 1.9797613e-12 1.2270426e-11 + 1.8679671e-12 1.1335777e-11 + 1.7721868e-12 1.0550110e-11 + 1.6889778e-12 9.8794283e-12 + 1.6158460e-12 9.2994707e-12 + 1.5509353e-12 8.7924453e-12 + 1.4928324e-12 8.3449805e-12 + 1.4404405e-12 7.9468340e-12 + 1.3928933e-12 7.5900131e-12 + 1.3494971e-12 7.2681886e-12 + 1.3096887e-12 6.9762809e-12 + 1.2730057e-12 6.7101595e-12 + 1.2390647e-12 6.4664339e-12 + 1.2075443e-12 6.2422910e-12 + 1.1781736e-12 6.0353774e-12 + 1.1507218e-12 5.8437081e-12 + 1.1249912e-12 5.6655959e-12 + 1.1008113e-12 5.4995975e-12 + 1.0780342e-12 5.3444713e-12 + 1.0565310e-12 5.1991427e-12 + 1.0361885e-12 5.0626762e-12 + 1.0169073e-12 4.9342533e-12 + 9.9859918e-13 4.8131556e-12 + 9.8118589e-13 4.6987486e-12 + 9.6459768e-13 4.5904707e-12 + 9.4877211e-13 4.4878219e-12 + 9.3365311e-13 4.3903569e-12 + 9.1919020e-13 4.2976766e-12 + 9.0533778e-13 4.2094224e-12 + 8.9205450e-13 4.1252711e-12 + 8.7930286e-13 4.0449312e-12 + 8.6704867e-13 3.9681379e-12 + 8.5526072e-13 3.8946529e-12 + 8.4391049e-13 3.8242577e-12 + 8.3297180e-13 3.7567522e-12 + 3.0248063e-12 2.1727961e-11 + 2.6793425e-12 1.8464672e-11 + 2.4248872e-12 1.6139770e-11 + 2.2278621e-12 1.4390888e-11 + 2.0697302e-12 1.3022647e-11 + 1.9393331e-12 1.1919943e-11 + 1.8295105e-12 1.1010311e-11 + 1.7354340e-12 1.0245760e-11 + 1.6537173e-12 9.5931721e-12 + 1.5819068e-12 9.0289140e-12 + 1.5181770e-12 8.5356578e-12 + 1.4611381e-12 8.1003863e-12 + 1.4097111e-12 7.7131189e-12 + 1.3630446e-12 7.3660750e-12 + 1.3204563e-12 7.0530927e-12 + 1.2813927e-12 6.7692245e-12 + 1.2453992e-12 6.5104519e-12 + 1.2120988e-12 6.2734718e-12 + 1.1811759e-12 6.0555453e-12 + 1.1523641e-12 5.8543835e-12 + 1.1254366e-12 5.6680521e-12 + 1.1001992e-12 5.4949114e-12 + 1.0764844e-12 5.3335550e-12 + 1.0541469e-12 5.1827753e-12 + 1.0330600e-12 5.0415248e-12 + 1.0131127e-12 4.9088952e-12 + 9.9420699e-13 4.7840903e-12 + 9.7625645e-13 4.6664080e-12 + 9.5918420e-13 4.5552342e-12 + 9.4292170e-13 4.4500201e-12 + 9.2740764e-13 4.3502804e-12 + 9.1258695e-13 4.2555824e-12 + 8.9841007e-13 4.1655366e-12 + 8.8483220e-13 4.0797933e-12 + 8.7181277e-13 3.9980412e-12 + 8.5931492e-13 3.9199945e-12 + 8.4730512e-13 3.8453965e-12 + 8.3575272e-13 3.7740143e-12 + 8.2462972e-13 3.7056351e-12 + 8.1391042e-13 3.6400656e-12 + 2.9670276e-12 2.1128873e-11 + 2.6272634e-12 1.7950758e-11 + 2.3770689e-12 1.5686926e-11 + 2.1833874e-12 1.3984237e-11 + 2.0279711e-12 1.2652329e-11 + 1.8998374e-12 1.1579038e-11 + 1.7919395e-12 1.0693778e-11 + 1.6995267e-12 9.9497926e-12 + 1.6192671e-12 9.3148238e-12 + 1.5487469e-12 8.7658573e-12 + 1.4861704e-12 8.2860123e-12 + 1.4301704e-12 7.8626120e-12 + 1.3796859e-12 7.4859376e-12 + 1.3338795e-12 7.1484139e-12 + 1.2920802e-12 6.8440402e-12 + 1.2537439e-12 6.5680000e-12 + 1.2184237e-12 6.3163803e-12 + 1.1857491e-12 6.0859652e-12 + 1.1554097e-12 5.8740909e-12 + 1.1271438e-12 5.6785273e-12 + 1.1007285e-12 5.4973932e-12 + 1.0759730e-12 5.3290898e-12 + 1.0527126e-12 5.1722499e-12 + 1.0308045e-12 5.0257004e-12 + 1.0101244e-12 4.8884202e-12 + 9.9056293e-13 4.7595248e-12 + 9.7202413e-13 4.6382382e-12 + 9.5442293e-13 4.5238804e-12 + 9.3768384e-13 4.4158520e-12 + 9.2173954e-13 4.3136192e-12 + 9.0652979e-13 4.2167105e-12 + 8.9200054e-13 4.1247040e-12 + 8.7810308e-13 4.0372207e-12 + 8.6479343e-13 3.9539229e-12 + 8.5203175e-13 3.8745032e-12 + 8.3978186e-13 3.7986873e-12 + 8.2801082e-13 3.7262239e-12 + 8.1668854e-13 3.6568869e-12 + 8.0578753e-13 3.5904697e-12 + 7.9528257e-13 3.5267835e-12 + 2.9105982e-12 2.0545716e-11 + 2.5763951e-12 1.7450612e-11 + 2.3303589e-12 1.5246284e-11 + 2.1399410e-12 1.3588607e-11 + 1.9871754e-12 1.2292091e-11 + 1.8612512e-12 1.1247457e-11 + 1.7552326e-12 1.0385935e-11 + 1.6644443e-12 9.6619836e-12 + 1.5856075e-12 9.0441769e-12 + 1.5163475e-12 8.5101004e-12 + 1.4548973e-12 8.0433149e-12 + 1.3999119e-12 7.6314724e-12 + 1.3503478e-12 7.2651134e-12 + 1.3053813e-12 6.9368588e-12 + 1.2643527e-12 6.6408660e-12 + 1.2267267e-12 6.3724460e-12 + 1.1920642e-12 6.1277894e-12 + 1.1600008e-12 5.9037662e-12 + 1.1302314e-12 5.6977831e-12 + 1.1024988e-12 5.5076687e-12 + 1.0765838e-12 5.3315907e-12 + 1.0522990e-12 5.1679969e-12 + 1.0294825e-12 5.0155547e-12 + 1.0079940e-12 4.8731203e-12 + 9.8771113e-13 4.7397034e-12 + 9.6852674e-13 4.6144411e-12 + 9.5034636e-13 4.4965796e-12 + 9.3308645e-13 4.3854560e-12 + 9.1667284e-13 4.2804880e-12 + 9.0103940e-13 4.1811562e-12 + 8.8612696e-13 4.0870018e-12 + 8.7188242e-13 3.9976133e-12 + 8.5825794e-13 3.9126235e-12 + 8.4521034e-13 3.8317023e-12 + 8.3270048e-13 3.7545535e-12 + 8.2069283e-13 3.6809067e-12 + 8.0915505e-13 3.6105208e-12 + 7.9805761e-13 3.5431733e-12 + 7.8737349e-13 3.4786642e-12 + 7.7707795e-13 3.4168101e-12 + 2.8554844e-12 1.9978075e-11 + 2.5267077e-12 1.6963867e-11 + 2.2847299e-12 1.4817519e-11 + 2.0974974e-12 1.3203704e-11 + 1.9473195e-12 1.1941667e-11 + 1.8235523e-12 1.0924947e-11 + 1.7193687e-12 1.0086550e-11 + 1.6301667e-12 9.3821097e-12 + 1.5527195e-12 8.7810173e-12 + 1.4846900e-12 8.2614452e-12 + 1.4243397e-12 7.8073757e-12 + 1.3703453e-12 7.4067904e-12 + 1.3216801e-12 7.0504741e-12 + 1.2775339e-12 6.7312433e-12 + 1.2372579e-12 6.4434099e-12 + 1.2003259e-12 6.1824099e-12 + 1.1663057e-12 5.9445321e-12 + 1.1348393e-12 5.7267298e-12 + 1.1056268e-12 5.5264797e-12 + 1.0784151e-12 5.3416684e-12 + 1.0529890e-12 5.1705145e-12 + 1.0291640e-12 5.0115031e-12 + 1.0067811e-12 4.8633402e-12 + 9.8570245e-13 4.7249116e-12 + 9.6580782e-13 4.5952527e-12 + 9.4699179e-13 4.4735259e-12 + 9.2916157e-13 4.3589976e-12 + 9.1223510e-13 4.2510220e-12 + 8.9613947e-13 4.1490316e-12 + 8.8080973e-13 4.0525217e-12 + 8.6618776e-13 3.9610469e-12 + 8.5222137e-13 3.8742052e-12 + 8.3886360e-13 3.7916418e-12 + 8.2607202e-13 3.7130336e-12 + 8.1380819e-13 3.6380921e-12 + 8.0203723e-13 3.5665566e-12 + 7.9072736e-13 3.4981902e-12 + 7.7984960e-13 3.4327782e-12 + 7.6937741e-13 3.3701251e-12 + 7.5928650e-13 3.3100534e-12 + 2.8016533e-12 1.9425540e-11 + 2.4781716e-12 1.6490165e-11 + 2.2401549e-12 1.4400320e-11 + 2.0560317e-12 1.2829237e-11 + 1.9083799e-12 1.1600794e-11 + 1.7867189e-12 1.0611270e-11 + 1.6843269e-12 9.7953976e-12 + 1.5966741e-12 9.1099635e-12 + 1.5205840e-12 8.5251497e-12 + 1.4537564e-12 8.0196985e-12 + 1.3944803e-12 7.5780140e-12 + 1.3414537e-12 7.1883890e-12 + 1.2936664e-12 6.8418521e-12 + 1.2503214e-12 6.5314072e-12 + 1.2107806e-12 6.2515182e-12 + 1.1745263e-12 5.9977387e-12 + 1.1411337e-12 5.7664594e-12 + 1.1102505e-12 5.5547142e-12 + 1.0815820e-12 5.3600451e-12 + 1.0548793e-12 5.1803963e-12 + 1.0299307e-12 5.0140336e-12 + 1.0065549e-12 4.8594812e-12 + 9.8459573e-13 4.7154829e-12 + 9.6391754e-13 4.5809524e-12 + 9.4440216e-13 4.4549526e-12 + 9.2594603e-13 4.3366660e-12 + 9.0845792e-13 4.2253801e-12 + 8.9185721e-13 4.1204660e-12 + 8.7607226e-13 4.0213730e-12 + 8.6103924e-13 3.9276096e-12 + 8.4670105e-13 3.8387405e-12 + 8.3300644e-13 3.7543783e-12 + 8.1990925e-13 3.6741740e-12 + 8.0736782e-13 3.5978161e-12 + 7.9534439e-13 3.5250229e-12 + 7.8380469e-13 3.4555410e-12 + 7.7271752e-13 3.3891389e-12 + 7.6205442e-13 3.3256099e-12 + 7.5178933e-13 3.2647620e-12 + 7.4189838e-13 3.2064230e-12 + 2.7490724e-12 1.8887713e-11 + 2.4307581e-12 1.6029165e-11 + 2.1966076e-12 1.3994382e-11 + 2.0155196e-12 1.2464931e-11 + 1.8703340e-12 1.1269220e-11 + 1.7507294e-12 1.0306186e-11 + 1.6500872e-12 9.5122543e-12 + 1.5639473e-12 8.8453308e-12 + 1.4891826e-12 8.2763735e-12 + 1.4235288e-12 7.7846753e-12 + 1.3653019e-12 7.3550516e-12 + 1.3132205e-12 6.9760993e-12 + 1.2662907e-12 6.6390828e-12 + 1.2237284e-12 6.3371927e-12 + 1.1849057e-12 6.0650366e-12 + 1.1493135e-12 5.8182879e-12 + 1.1165339e-12 5.5934321e-12 + 1.0862205e-12 5.3875819e-12 + 1.0580835e-12 5.1983450e-12 + 1.0318780e-12 5.0237212e-12 + 1.0073960e-12 4.8620211e-12 + 9.8445917e-13 4.7118097e-12 + 9.6291393e-13 4.5718634e-12 + 9.4262698e-13 4.4411273e-12 + 9.2348216e-13 4.3186862e-12 + 9.0537764e-13 4.2037482e-12 + 8.8822380e-13 4.0956167e-12 + 8.7194136e-13 3.9936825e-12 + 8.5645996e-13 3.8974080e-12 + 8.4171686e-13 3.8063159e-12 + 8.2765595e-13 3.7199836e-12 + 8.1422688e-13 3.6380317e-12 + 8.0138432e-13 3.5601236e-12 + 7.8908731e-13 3.4859540e-12 + 7.7729878e-13 3.4152504e-12 + 7.6598507e-13 3.3477657e-12 + 7.5511553e-13 3.2832756e-12 + 7.4466220e-13 3.2215770e-12 + 7.3459949e-13 3.1624852e-12 + 7.2490397e-13 3.1058324e-12 + 2.6977101e-12 1.8364203e-11 + 2.3844389e-12 1.5580532e-11 + 2.1540622e-12 1.3599402e-11 + 1.9759372e-12 1.2110519e-11 + 1.8331594e-12 1.0946690e-11 + 1.7155629e-12 1.0009465e-11 + 1.6166296e-12 9.2369071e-12 + 1.5319673e-12 8.5880132e-12 + 1.4584971e-12 8.0344958e-12 + 1.3939898e-12 7.5561951e-12 + 1.3367877e-12 7.1383142e-12 + 1.2856296e-12 6.7697531e-12 + 1.2395374e-12 6.4420073e-12 + 1.1977396e-12 6.1484454e-12 + 1.1596184e-12 5.8838183e-12 + 1.1246730e-12 5.6439144e-12 + 1.0924924e-12 5.4253110e-12 + 1.0627357e-12 5.2251992e-12 + 1.0351179e-12 5.0412500e-12 + 1.0093983e-12 4.8715167e-12 + 9.8537216e-13 4.7143538e-12 + 9.6286425e-13 4.5683684e-12 + 9.4172346e-13 4.4323654e-12 + 9.2181880e-13 4.3053207e-12 + 9.0303603e-13 4.1863438e-12 + 8.8527507e-13 4.0746619e-12 + 8.6844783e-13 3.9696003e-12 + 8.5247639e-13 3.8705656e-12 + 8.3729158e-13 3.7770343e-12 + 8.2283176e-13 3.6885414e-12 + 8.0904180e-13 3.6046759e-12 + 7.9587221e-13 3.5250700e-12 + 7.8327846e-13 3.4493945e-12 + 7.7122031e-13 3.3773546e-12 + 7.5966134e-13 3.3086835e-12 + 7.4856848e-13 3.2431410e-12 + 7.3791163e-13 3.1805099e-12 + 7.2766331e-13 3.1205926e-12 + 7.1779839e-13 3.0632093e-12 + 7.0829387e-13 3.0081959e-12 + 2.6475352e-12 1.7854638e-11 + 2.3391860e-12 1.5143940e-11 + 2.1124932e-12 1.3215090e-11 + 1.9372609e-12 1.1765733e-11 + 1.7968343e-12 1.0632970e-11 + 1.6811990e-12 9.7208857e-12 + 1.5839347e-12 8.9691474e-12 + 1.5007157e-12 8.3378147e-12 + 1.4285099e-12 7.7993384e-12 + 1.3651224e-12 7.3340773e-12 + 1.3089212e-12 6.9276323e-12 + 1.2586650e-12 6.5691904e-12 + 1.2133911e-12 6.2504706e-12 + 1.1723401e-12 5.9650169e-12 + 1.1349044e-12 5.7077198e-12 + 1.1005910e-12 5.4744786e-12 + 1.0689955e-12 5.2619618e-12 + 1.0397828e-12 5.0674363e-12 + 1.0126724e-12 4.8886338e-12 + 9.8742748e-13 4.7236590e-12 + 9.6384680e-13 4.5709134e-12 + 9.4175796e-13 4.4290400e-12 + 9.2101238e-13 4.2968744e-12 + 9.0148124e-13 4.1734217e-12 + 8.8305225e-13 4.0578148e-12 + 8.6562700e-13 3.9493037e-12 + 8.4911889e-13 3.8472295e-12 + 8.3345134e-13 3.7510137e-12 + 8.1855636e-13 3.6601508e-12 + 8.0437336e-13 3.5741860e-12 + 7.9084818e-13 3.4927214e-12 + 7.7793217e-13 3.4153975e-12 + 7.6558157e-13 3.3418943e-12 + 7.5375686e-13 3.2719255e-12 + 7.4242225e-13 3.2052319e-12 + 7.3154524e-13 3.1415794e-12 + 7.2109626e-13 3.0807566e-12 + 7.1104832e-13 3.0225717e-12 + 7.0137673e-13 2.9668494e-12 + 6.9205889e-13 2.9134305e-12 + 2.5985173e-12 1.7358655e-11 + 2.2949724e-12 1.4719071e-11 + 2.0718758e-12 1.2841164e-11 + 1.8994679e-12 1.1430317e-11 + 1.7613373e-12 1.0327820e-11 + 1.6476175e-12 9.4402263e-12 + 1.5519834e-12 8.7087698e-12 + 1.4701741e-12 8.0945398e-12 + 1.3992034e-12 7.5707106e-12 + 1.3369098e-12 7.1181541e-12 + 1.2816864e-12 6.7228440e-12 + 1.2323112e-12 6.3742540e-12 + 1.1878367e-12 6.0643226e-12 + 1.1475155e-12 5.7867627e-12 + 1.1107494e-12 5.5366022e-12 + 1.0770535e-12 5.3098460e-12 + 1.0460299e-12 5.1032543e-12 + 1.0173488e-12 4.9141655e-12 + 9.9073413e-13 4.7403725e-12 + 9.6595311e-13 4.5800310e-12 + 9.4280770e-13 4.4315833e-12 + 9.2112836e-13 4.2937103e-12 + 9.0076897e-13 4.1652809e-12 + 8.8160283e-13 4.0453231e-12 + 8.6351954e-13 3.9329955e-12 + 8.4642234e-13 3.8275679e-12 + 8.3022609e-13 3.7283998e-12 + 8.1485551e-13 3.6349297e-12 + 8.0024377e-13 3.5466613e-12 + 7.8633131e-13 3.4631575e-12 + 7.7306489e-13 3.3840271e-12 + 7.6039672e-13 3.3089231e-12 + 7.4828378e-13 3.2375339e-12 + 7.3668723e-13 3.1695797e-12 + 7.2557191e-13 3.1048092e-12 + 7.1490588e-13 3.0429946e-12 + 7.0466008e-13 2.9839310e-12 + 6.9480801e-13 2.9274307e-12 + 6.8532541e-13 2.8733241e-12 + 6.7619006e-13 2.8214566e-12 + 2.5506265e-12 1.6875893e-11 + 2.2517712e-12 1.4305610e-11 + 2.0321855e-12 1.2477348e-11 + 1.8625356e-12 1.1104026e-11 + 1.7266475e-12 1.0031014e-11 + 1.6147987e-12 9.1672814e-12 + 1.5207570e-12 8.4555778e-12 + 1.4403248e-12 7.8580048e-12 + 1.3705605e-12 7.3484430e-12 + 1.3093355e-12 6.9082551e-12 + 1.2550674e-12 6.5237881e-12 + 1.2065531e-12 6.1847918e-12 + 1.1628596e-12 5.8834160e-12 + 1.1232514e-12 5.6135426e-12 + 1.0871398e-12 5.3703278e-12 + 1.0540473e-12 5.1498861e-12 + 1.0235825e-12 4.9490618e-12 + 9.9542082e-13 4.7652651e-12 + 9.6929066e-13 4.5963481e-12 + 9.4496295e-13 4.4405142e-12 + 9.2224290e-13 4.2962500e-12 + 9.0096374e-13 4.1622704e-12 + 8.8098173e-13 4.0374748e-12 + 8.6217230e-13 3.9209180e-12 + 8.4442684e-13 3.8117826e-12 + 8.2765025e-13 3.7093554e-12 + 8.1175878e-13 3.6130150e-12 + 7.9667844e-13 3.5222150e-12 + 7.8234352e-13 3.4364723e-12 + 7.6869548e-13 3.3553614e-12 + 7.5568198e-13 3.2785029e-12 + 7.4325606e-13 3.2055580e-12 + 7.3137542e-13 3.1362243e-12 + 7.2000190e-13 3.0702301e-12 + 7.0910093e-13 3.0073306e-12 + 6.9864115e-13 2.9473043e-12 + 6.8859398e-13 2.8899509e-12 + 6.7893339e-13 2.8350897e-12 + 6.6963553e-13 2.7825548e-12 + 6.6067858e-13 2.7321958e-12 + 2.5038334e-12 1.6406006e-11 + 2.2095562e-12 1.3903263e-11 + 1.9933986e-12 1.2123373e-11 + 1.8264421e-12 1.0786613e-11 + 1.6927444e-12 9.7423270e-12 + 1.5827232e-12 8.9018375e-12 + 1.4902372e-12 8.2093737e-12 + 1.4111503e-12 7.6280284e-12 + 1.3425646e-12 7.1323578e-12 + 1.2823836e-12 6.7042175e-12 + 1.2290489e-12 6.3303092e-12 + 1.1813756e-12 6.0006533e-12 + 1.1384454e-12 5.7076079e-12 + 1.0995340e-12 5.4452177e-12 + 1.0640619e-12 5.2087650e-12 + 1.0315592e-12 4.9944690e-12 + 1.0016405e-12 4.7992596e-12 + 9.7398640e-13 4.6206142e-12 + 9.4832973e-13 4.4564417e-12 + 9.2444504e-13 4.3049956e-12 + 9.0214070e-13 4.1648036e-12 + 8.8125262e-13 4.0346125e-12 + 8.6163944e-13 3.9133531e-12 + 8.4317862e-13 3.8001068e-12 + 8.2576335e-13 3.6940759e-12 + 8.0930010e-13 3.5945687e-12 + 7.9370653e-13 3.5009790e-12 + 7.7890988e-13 3.4127761e-12 + 7.6484554e-13 3.3294911e-12 + 7.5145597e-13 3.2507083e-12 + 7.3868972e-13 3.1760597e-12 + 7.2650059e-13 3.1052158e-12 + 7.1484705e-13 3.0378818e-12 + 7.0369156e-13 2.9737939e-12 + 6.9300015e-13 2.9127134e-12 + 6.8274200e-13 2.8544265e-12 + 6.7288902e-13 2.7987375e-12 + 6.6341562e-13 2.7454704e-12 + 6.5429838e-13 2.6944639e-12 + 6.4551585e-13 2.6455717e-12 + 2.4581090e-12 1.5948651e-11 + 2.1683015e-12 1.3511731e-11 + 1.9554914e-12 1.1778981e-11 + 1.7911657e-12 1.0477844e-11 + 1.6596077e-12 9.4615447e-12 + 1.5513720e-12 8.6436950e-12 + 1.4604058e-12 7.9699758e-12 + 1.3826332e-12 7.4044345e-12 + 1.3151992e-12 6.9222934e-12 + 1.2560383e-12 6.5058821e-12 + 1.2036156e-12 6.1422547e-12 + 1.1567643e-12 5.8216947e-12 + 1.1145800e-12 5.5367613e-12 + 1.0763496e-12 5.2816543e-12 + 1.0415025e-12 5.0517857e-12 + 1.0095762e-12 4.8434732e-12 + 9.8019121e-13 4.6537276e-12 + 9.5303326e-13 4.4800949e-12 + 9.2783935e-13 4.3205417e-12 + 9.0438766e-13 4.1733663e-12 + 8.8248961e-13 4.0371356e-12 + 8.6198378e-13 3.9106325e-12 + 8.4273109e-13 3.7928152e-12 + 8.2461100e-13 3.6827885e-12 + 8.0751848e-13 3.5797787e-12 + 7.9136152e-13 3.4831119e-12 + 7.7605915e-13 3.3921988e-12 + 7.6153981e-13 3.3065234e-12 + 7.4773999e-13 3.2256283e-12 + 7.3460311e-13 3.1491109e-12 + 7.2207856e-13 3.0766118e-12 + 7.1012095e-13 3.0078109e-12 + 6.9868943e-13 2.9424229e-12 + 6.8774710e-13 2.8801889e-12 + 6.7726059e-13 2.8208791e-12 + 6.6719957e-13 2.7642834e-12 + 6.5753645e-13 2.7102132e-12 + 6.4824608e-13 2.6584961e-12 + 6.3930544e-13 2.6089762e-12 + 6.3069344e-13 2.5615110e-12 + 2.4134251e-12 1.5503506e-11 + 2.1279818e-12 1.3130734e-11 + 1.9184410e-12 1.1443915e-11 + 1.7566852e-12 1.0177486e-11 + 1.6272177e-12 9.1884557e-12 + 1.5207265e-12 8.3926618e-12 + 1.4312452e-12 7.7371975e-12 + 1.3547569e-12 7.1870500e-12 + 1.2884482e-12 6.7180830e-12 + 1.2302841e-12 6.3130958e-12 + 1.1787527e-12 5.9594798e-12 + 1.1327048e-12 5.6477750e-12 + 1.0912496e-12 5.3707377e-12 + 1.0536848e-12 5.1227230e-12 + 1.0194486e-12 4.8992624e-12 + 9.8808563e-13 4.6967746e-12 + 9.5922237e-13 4.5123480e-12 + 9.3254936e-13 4.3435966e-12 + 9.0780777e-13 4.1885366e-12 + 8.8477931e-13 4.0455175e-12 + 8.6327839e-13 3.9131425e-12 + 8.4314620e-13 3.7902272e-12 + 8.2424589e-13 3.6757581e-12 + 8.0645890e-13 3.5688659e-12 + 7.8968188e-13 3.4687955e-12 + 7.7382434e-13 3.3748927e-12 + 7.5880666e-13 3.2865840e-12 + 7.4455845e-13 3.2033671e-12 + 7.3101725e-13 3.1247980e-12 + 7.1812741e-13 3.0504835e-12 + 7.0583919e-13 2.9800758e-12 + 6.9410795e-13 2.9132630e-12 + 6.8289352e-13 2.8497670e-12 + 6.7215962e-13 2.7893370e-12 + 6.6187345e-13 2.7317484e-12 + 6.5200519e-13 2.6767981e-12 + 6.4252772e-13 2.6243015e-12 + 6.3341632e-13 2.5740926e-12 + 6.2464835e-13 2.5260186e-12 + 6.1620309e-13 2.4799408e-12 + 2.3697538e-12 1.5070248e-11 + 2.0885723e-12 1.2759988e-11 + 1.8822250e-12 1.1117926e-11 + 1.7229798e-12 9.8853182e-12 + 1.5955549e-12 8.9228518e-12 + 1.4907684e-12 8.1485443e-12 + 1.4027381e-12 7.5108628e-12 + 1.3275048e-12 6.9757055e-12 + 1.2622957e-12 6.5195714e-12 + 1.2051059e-12 6.1257066e-12 + 1.1544458e-12 5.7818385e-12 + 1.1091831e-12 5.4787568e-12 + 1.0684406e-12 5.2094079e-12 + 1.0315264e-12 4.9682974e-12 + 9.9788744e-13 4.7510763e-12 + 9.6707516e-13 4.5542574e-12 + 9.3872186e-13 4.3750084e-12 + 9.1252289e-13 4.2110051e-12 + 8.8822347e-13 4.0603213e-12 + 8.6560873e-13 3.9213454e-12 + 8.4449604e-13 3.7927233e-12 + 8.2472912e-13 3.6732987e-12 + 8.0617331e-13 3.5620891e-12 + 7.8871196e-13 3.4582455e-12 + 7.7224341e-13 3.3610353e-12 + 7.5667864e-13 3.2698216e-12 + 7.4193931e-13 3.1840465e-12 + 7.2795620e-13 3.1032212e-12 + 7.1466788e-13 3.0269139e-12 + 7.0201962e-13 2.9547436e-12 + 6.8996250e-13 2.8863705e-12 + 6.7845261e-13 2.8214909e-12 + 6.6745046e-13 2.7598353e-12 + 6.5692040e-13 2.7011601e-12 + 6.4683013e-13 2.6452459e-12 + 6.3715036e-13 2.5918959e-12 + 6.2785444e-13 2.5409307e-12 + 6.1891804e-13 2.4921875e-12 + 6.1031893e-13 2.4455194e-12 + 6.0203673e-13 2.4007913e-12 + 2.3270676e-12 1.4648558e-11 + 2.0500485e-12 1.2399227e-11 + 1.8468210e-12 1.0800780e-11 + 1.6900292e-12 9.6011238e-12 + 1.5646003e-12 8.6645354e-12 + 1.4614796e-12 7.9111569e-12 + 1.3748674e-12 7.2907953e-12 + 1.3008606e-12 6.7702396e-12 + 1.2367265e-12 6.3266008e-12 + 1.1804890e-12 5.9435694e-12 + 1.1306805e-12 5.6091943e-12 + 1.0861855e-12 5.3145068e-12 + 1.0461397e-12 5.0526434e-12 + 1.0098616e-12 4.8182543e-12 + 9.7680647e-13 4.6071061e-12 + 9.4653256e-13 4.4158063e-12 + 9.1867782e-13 4.2415961e-12 + 8.9294229e-13 4.0822157e-12 + 8.6907515e-13 3.9357893e-12 + 8.4686490e-13 3.8007506e-12 + 8.2613178e-13 3.6757781e-12 + 8.0672199e-13 3.5597515e-12 + 7.8850303e-13 3.4517122e-12 + 7.7136010e-13 3.3508351e-12 + 7.5519318e-13 3.2564084e-12 + 7.3991468e-13 3.1678104e-12 + 7.2544756e-13 3.0845004e-12 + 7.1172370e-13 3.0060026e-12 + 6.9868268e-13 2.9318962e-12 + 6.8627067e-13 2.8618111e-12 + 6.7443955e-13 2.7954164e-12 + 6.6314614e-13 2.7324184e-12 + 6.5235161e-13 2.6725529e-12 + 6.4202087e-13 2.6155840e-12 + 6.3212220e-13 2.5612985e-12 + 6.2262678e-13 2.5095048e-12 + 6.1350840e-13 2.4600287e-12 + 6.0474315e-13 2.4127115e-12 + 5.9630917e-13 2.3674104e-12 + 5.8818644e-13 2.3239945e-12 + 2.2853397e-12 1.4238140e-11 + 2.0123867e-12 1.2048183e-11 + 1.8122075e-12 1.0492237e-11 + 1.6578133e-12 9.3246868e-12 + 1.5343352e-12 8.4133097e-12 + 1.4328426e-12 7.6803202e-12 + 1.3476165e-12 7.0768293e-12 + 1.2748086e-12 6.5704936e-12 + 1.2117252e-12 6.1390248e-12 + 1.1564189e-12 5.7665412e-12 + 1.1074430e-12 5.4414092e-12 + 1.0636986e-12 5.1548947e-12 + 1.0243339e-12 4.9003194e-12 + 9.8867777e-13 4.6724734e-12 + 9.5619344e-13 4.4672376e-12 + 9.2644592e-13 4.2813086e-12 + 8.9907863e-13 4.1120029e-12 + 8.7379623e-13 3.9571220e-12 + 8.5035176e-13 3.8148388e-12 + 8.2853702e-13 3.6836303e-12 + 8.0817507e-13 3.5622111e-12 + 7.8911451e-13 3.4494908e-12 + 7.7122495e-13 3.3445366e-12 + 7.5439341e-13 3.2465468e-12 + 7.3852148e-13 3.1548272e-12 + 7.2352297e-13 3.0687751e-12 + 7.0932206e-13 2.9878633e-12 + 6.9585176e-13 2.9116290e-12 + 6.8305262e-13 2.8396641e-12 + 6.7087168e-13 2.7716070e-12 + 6.5926161e-13 2.7071374e-12 + 6.4817993e-13 2.6459687e-12 + 6.3758845e-13 2.5878442e-12 + 6.2745267e-13 2.5325354e-12 + 6.1774139e-13 2.4798341e-12 + 6.0842627e-13 2.4295540e-12 + 5.9948154e-13 2.3815255e-12 + 5.9088369e-13 2.3355958e-12 + 5.8261123e-13 2.2916241e-12 + 5.7464447e-13 2.2494846e-12 + 2.2445435e-12 1.3838695e-11 + 1.9755631e-12 1.1706598e-11 + 1.7783632e-12 1.0192070e-11 + 1.6263124e-12 9.0557997e-12 + 1.5047412e-12 8.1689859e-12 + 1.4048401e-12 7.4558588e-12 + 1.3209689e-12 6.8687991e-12 + 1.2493331e-12 6.3763119e-12 + 1.1872771e-12 5.9566950e-12 + 1.1328812e-12 5.5944835e-12 + 1.0847195e-12 5.2783501e-12 + 1.0417090e-12 4.9997956e-12 + 1.0030104e-12 4.7523150e-12 + 9.6796246e-13 4.5308380e-12 + 9.3603630e-13 4.3313573e-12 + 9.0680351e-13 4.1506563e-12 + 8.7991289e-13 3.9861254e-12 + 8.5507360e-13 3.8356228e-12 + 8.3204247e-13 3.6973719e-12 + 8.1061452e-13 3.5698906e-12 + 7.9061556e-13 3.4519296e-12 + 7.7189656e-13 3.3424262e-12 + 7.5432918e-13 3.2404739e-12 + 7.3780222e-13 3.1452925e-12 + 7.2221882e-13 3.0562076e-12 + 7.0749418e-13 2.9726317e-12 + 6.9355368e-13 2.8940532e-12 + 6.8033141e-13 2.8200210e-12 + 6.6776886e-13 2.7501386e-12 + 6.5581395e-13 2.6840550e-12 + 6.4442009e-13 2.6214579e-12 + 6.3354553e-13 2.5620691e-12 + 6.2315267e-13 2.5056383e-12 + 6.1320761e-13 2.4519436e-12 + 6.0367962e-13 2.4007832e-12 + 5.9454087e-13 2.3519750e-12 + 5.8576600e-13 2.3053546e-12 + 5.7733189e-13 2.2607732e-12 + 5.6921741e-13 2.2180950e-12 + 5.6140322e-13 2.1771959e-12 + 2.2046532e-12 1.3449932e-11 + 1.9395549e-12 1.1374229e-11 + 1.7452670e-12 9.9000551e-12 + 1.5955071e-12 8.7942645e-12 + 1.4758001e-12 7.9313799e-12 + 1.3774549e-12 7.2375979e-12 + 1.2949085e-12 6.6665434e-12 + 1.2244189e-12 6.1875454e-12 + 1.1633676e-12 5.7794706e-12 + 1.1098620e-12 5.4272610e-12 + 1.0624967e-12 5.1198912e-12 + 1.0202039e-12 4.8490847e-12 + 9.8215674e-13 4.6085106e-12 + 9.4770352e-13 4.3932354e-12 + 9.1632325e-13 4.1993568e-12 + 8.8759386e-13 4.0237448e-12 + 8.6116943e-13 3.8638599e-12 + 8.3676352e-13 3.7176175e-12 + 8.1413668e-13 3.5832921e-12 + 7.9308706e-13 3.4594387e-12 + 7.7344317e-13 3.3448417e-12 + 7.5505828e-13 3.2384687e-12 + 7.3780606e-13 3.1394373e-12 + 7.2157705e-13 3.0469890e-12 + 7.0627592e-13 2.9604669e-12 + 6.9181920e-13 2.8793005e-12 + 6.7813345e-13 2.8029918e-12 + 6.6515382e-13 2.7311022e-12 + 6.5282274e-13 2.6632462e-12 + 6.4108895e-13 2.5990819e-12 + 6.2990662e-13 2.5383060e-12 + 6.1923467e-13 2.4806474e-12 + 6.0903613e-13 2.4258647e-12 + 5.9927762e-13 2.3737398e-12 + 5.8992896e-13 2.3240774e-12 + 5.8096274e-13 2.2767006e-12 + 5.7235404e-13 2.2314501e-12 + 5.6408012e-13 2.1881801e-12 + 5.5612021e-13 2.1467590e-12 + 5.4845527e-13 2.1070667e-12 + 2.1656432e-12 1.3071572e-11 + 1.9043394e-12 1.1050824e-11 + 1.7128985e-12 9.6159808e-12 + 1.5653785e-12 8.5398844e-12 + 1.4474942e-12 7.7003114e-12 + 1.3506705e-12 7.0253751e-12 + 1.2694197e-12 6.4699100e-12 + 1.2000511e-12 6.0040476e-12 + 1.1399825e-12 5.6072109e-12 + 1.0873477e-12 5.2647441e-12 + 1.0407612e-12 4.9659051e-12 + 9.9917052e-13 4.7026438e-12 + 9.6176051e-13 4.4687926e-12 + 9.2788903e-13 4.2595549e-12 + 8.9704271e-13 4.0711287e-12 + 8.6880572e-13 3.9004696e-12 + 8.4283732e-13 3.7451066e-12 + 8.1885535e-13 3.6030123e-12 + 7.9662401e-13 3.4725057e-12 + 7.7594451e-13 3.3521820e-12 + 7.5664799e-13 3.2408595e-12 + 7.3858999e-13 3.1375325e-12 + 7.2164612e-13 3.0413434e-12 + 7.0570863e-13 2.9515540e-12 + 6.9068367e-13 2.8675252e-12 + 6.7648909e-13 2.7887031e-12 + 6.6305261e-13 2.7146021e-12 + 6.5031038e-13 2.6447970e-12 + 6.3820577e-13 2.5789117e-12 + 6.2668832e-13 2.5166141e-12 + 6.1571296e-13 2.4576097e-12 + 6.0523925e-13 2.4016354e-12 + 5.9523083e-13 2.3484544e-12 + 5.8565486e-13 2.2978567e-12 + 5.7648164e-13 2.2496510e-12 + 5.6768423e-13 2.2036668e-12 + 5.5923811e-13 2.1597479e-12 + 5.5112093e-13 2.1177529e-12 + 5.4331224e-13 2.0775546e-12 + 5.3579334e-13 2.0390350e-12 + 2.1274884e-12 1.2703341e-11 + 1.8698943e-12 1.0736153e-11 + 1.6812374e-12 9.3396267e-12 + 1.5359078e-12 8.2924663e-12 + 1.4198061e-12 7.4756048e-12 + 1.3244705e-12 6.8190255e-12 + 1.2444869e-12 6.2787436e-12 + 1.1762149e-12 5.8256752e-12 + 1.1171076e-12 5.4397846e-12 + 1.0653248e-12 5.1068020e-12 + 1.0195002e-12 4.8162711e-12 + 9.7859633e-13 4.5603526e-12 + 9.4180965e-13 4.3330495e-12 + 9.0850728e-13 4.1296869e-12 + 8.7818333e-13 3.9465686e-12 + 8.5042807e-13 3.7807309e-12 + 8.2490583e-13 3.6297700e-12 + 8.0133866e-13 3.4917114e-12 + 7.7949429e-13 3.3649215e-12 + 7.5917695e-13 3.2480335e-12 + 7.4022034e-13 3.1398964e-12 + 7.2248221e-13 3.0395339e-12 + 7.0584008e-13 2.9461099e-12 + 6.9018786e-13 2.8589068e-12 + 6.7543316e-13 2.7773047e-12 + 6.6149510e-13 2.7007630e-12 + 6.4830253e-13 2.6288101e-12 + 6.3579262e-13 2.5610323e-12 + 6.2390962e-13 2.4970643e-12 + 6.1260388e-13 2.4365829e-12 + 6.0183104e-13 2.3793014e-12 + 5.9155132e-13 2.3249643e-12 + 5.8172894e-13 2.2733417e-12 + 5.7233159e-13 2.2242286e-12 + 5.6333006e-13 2.1774404e-12 + 5.5469784e-13 2.1328098e-12 + 5.4641082e-13 2.0901856e-12 + 5.3844701e-13 2.0494310e-12 + 5.3078632e-13 2.0104208e-12 + 5.2341034e-13 1.9730422e-12 + 2.0901642e-12 1.2344971e-11 + 1.8361978e-12 1.0429981e-11 + 1.6502637e-12 9.0707949e-12 + 1.5070767e-12 8.0518272e-12 + 1.3927186e-12 7.2570882e-12 + 1.2988388e-12 6.6183902e-12 + 1.2200950e-12 6.0928985e-12 + 1.1528959e-12 5.6522917e-12 + 1.0947292e-12 5.2770597e-12 + 1.0437800e-12 4.9533107e-12 + 9.9870094e-13 4.6708692e-12 + 9.5846908e-13 4.4221024e-12 + 9.2229230e-13 4.2011725e-12 + 8.8954678e-13 4.0035295e-12 + 8.5973397e-13 3.8255775e-12 + 8.3245011e-13 3.6644324e-12 + 8.0736447e-13 3.5177548e-12 + 7.8420322e-13 3.3836245e-12 + 7.6273756e-13 3.2604516e-12 + 7.4277466e-13 3.1469059e-12 + 7.2415072e-13 3.0418695e-12 + 7.0672565e-13 2.9443904e-12 + 6.9037884e-13 2.8536568e-12 + 6.7500583e-13 2.7689713e-12 + 6.6051563e-13 2.6897296e-12 + 6.4682863e-13 2.6154061e-12 + 6.3387479e-13 2.5455428e-12 + 6.2159225e-13 2.4797370e-12 + 6.0992614e-13 2.4176337e-12 + 5.9882760e-13 2.3589190e-12 + 5.8825297e-13 2.3033135e-12 + 5.7816310e-13 2.2505682e-12 + 5.6852279e-13 2.2004614e-12 + 5.5930026e-13 2.1527928e-12 + 5.5046676e-13 2.1073825e-12 + 5.4199622e-13 2.0640678e-12 + 5.3386492e-13 2.0227033e-12 + 5.2605123e-13 1.9831541e-12 + 5.1853538e-13 1.9453004e-12 + 5.1129929e-13 1.9090308e-12 + 2.0536462e-12 1.1996204e-11 + 1.8032283e-12 1.0132083e-11 + 1.6199580e-12 8.8092862e-12 + 1.4788670e-12 7.8177822e-12 + 1.3662149e-12 7.0445976e-12 + 1.2737596e-12 6.4233190e-12 + 1.1962291e-12 5.9122303e-12 + 1.1300800e-12 5.4837579e-12 + 1.0728338e-12 5.1189072e-12 + 1.0227004e-12 4.8041521e-12 + 9.7835093e-13 4.5295850e-12 + 9.3877673e-13 4.2877806e-12 + 9.0319682e-13 4.0730535e-12 + 8.7099629e-13 3.8809786e-12 + 8.4168372e-13 3.7080553e-12 + 8.1486125e-13 3.5514782e-12 + 7.9020294e-13 3.4089697e-12 + 7.6743902e-13 3.2786623e-12 + 7.4634407e-13 3.1590088e-12 + 7.2672812e-13 3.0487167e-12 + 7.0842983e-13 2.9466967e-12 + 6.9131122e-13 2.8520236e-12 + 6.7525350e-13 2.7639083e-12 + 6.6015379e-13 2.6816712e-12 + 6.4592252e-13 2.6047255e-12 + 6.3248127e-13 2.5325603e-12 + 6.1976111e-13 2.4647301e-12 + 6.0770114e-13 2.4008424e-12 + 5.9624733e-13 2.3405528e-12 + 5.8535160e-13 2.2835561e-12 + 5.7497099e-13 2.2295805e-12 + 5.6506697e-13 2.1783839e-12 + 5.5560488e-13 2.1297508e-12 + 5.4655347e-13 2.0834864e-12 + 5.3788446e-13 2.0394161e-12 + 5.2957219e-13 1.9973822e-12 + 5.2159332e-13 1.9572413e-12 + 5.1392658e-13 1.9188648e-12 + 5.0655254e-13 1.8821352e-12 + 4.9945338e-13 1.8469437e-12 + 2.0179107e-12 1.1656787e-11 + 1.7709647e-12 9.8422434e-12 + 1.5903009e-12 8.5549032e-12 + 1.4512609e-12 7.5901564e-12 + 1.3402785e-12 6.8379704e-12 + 1.2492174e-12 6.2336590e-12 + 1.1728745e-12 5.7366016e-12 + 1.1077532e-12 5.3199471e-12 + 1.0514081e-12 4.9652043e-12 + 1.0020732e-12 4.6592042e-12 + 9.5843789e-13 4.3923059e-12 + 9.1950743e-13 4.1572789e-12 + 8.8451179e-13 3.9485918e-12 + 8.5284474e-13 3.7619370e-12 + 8.2402189e-13 3.5939086e-12 + 7.9765110e-13 3.4417765e-12 + 7.7341117e-13 3.3033257e-12 + 7.5103625e-13 3.1767386e-12 + 7.3030425e-13 3.0605104e-12 + 7.1102799e-13 2.9533834e-12 + 6.9304854e-13 2.8542986e-12 + 6.7622997e-13 2.7623562e-12 + 6.6045529e-13 2.6767880e-12 + 6.4562317e-13 2.5969330e-12 + 6.3164539e-13 2.5222215e-12 + 6.1844476e-13 2.4521557e-12 + 6.0595338e-13 2.3863021e-12 + 5.9411130e-13 2.3242806e-12 + 5.8286534e-13 2.2657556e-12 + 5.7216818e-13 2.2104295e-12 + 5.6197752e-13 2.1580390e-12 + 5.5225544e-13 2.1083492e-12 + 5.4296785e-13 2.0611489e-12 + 5.3408398e-13 2.0162501e-12 + 5.2557601e-13 1.9734830e-12 + 5.1741870e-13 1.9326936e-12 + 5.0958908e-13 1.8937435e-12 + 5.0206623e-13 1.8565074e-12 + 4.9483103e-13 1.8208699e-12 + 4.8786596e-13 1.7867269e-12 + 1.9829341e-12 1.1326475e-11 + 1.7393859e-12 9.5602455e-12 + 1.5612733e-12 8.3074527e-12 + 1.4242411e-12 7.3687807e-12 + 1.3148931e-12 6.6370500e-12 + 1.2251969e-12 6.0492651e-12 + 1.1500168e-12 5.5658736e-12 + 1.0859018e-12 5.1607279e-12 + 1.0304390e-12 4.8158290e-12 + 9.8188585e-13 4.5183550e-12 + 9.3894976e-13 4.2589219e-12 + 9.0064959e-13 4.0304940e-12 + 8.6622600e-13 3.8276848e-12 + 8.3508131e-13 3.6463062e-12 + 8.0673799e-13 3.4830425e-12 + 7.8080949e-13 3.3352371e-12 + 7.5697926e-13 3.2007354e-12 + 7.3498528e-13 3.0777692e-12 + 7.1460870e-13 2.9648746e-12 + 6.9566510e-13 2.8608281e-12 + 6.7799788e-13 2.7645990e-12 + 6.6147314e-13 2.6753127e-12 + 6.4597563e-13 2.5922225e-12 + 6.3140554e-13 2.5146854e-12 + 6.1767600e-13 2.4421467e-12 + 6.0471097e-13 2.3741234e-12 + 5.9244362e-13 2.3101932e-12 + 5.8081491e-13 2.2499868e-12 + 5.6977249e-13 2.1931773e-12 + 5.5926976e-13 2.1394766e-12 + 5.4926511e-13 2.0886280e-12 + 5.3972120e-13 2.0404022e-12 + 5.3060449e-13 1.9945960e-12 + 5.2188470e-13 1.9510252e-12 + 5.1353444e-13 1.9095253e-12 + 5.0552887e-13 1.8699463e-12 + 4.9784542e-13 1.8321539e-12 + 4.9046349e-13 1.7960259e-12 + 4.8336426e-13 1.7614508e-12 + 4.7653050e-13 1.7283274e-12 + 1.9486933e-12 1.1005022e-11 + 1.7084716e-12 9.2858817e-12 + 1.5328566e-12 8.0667569e-12 + 1.3977902e-12 7.1534872e-12 + 1.2900427e-12 6.4416824e-12 + 1.2016832e-12 5.8699963e-12 + 1.1276419e-12 5.3999130e-12 + 1.0645124e-12 5.0059784e-12 + 1.0099135e-12 4.6706639e-12 + 9.6212604e-13 4.3814929e-12 + 9.1987469e-13 4.1293282e-12 + 8.8219177e-13 3.9073232e-12 + 8.4832844e-13 3.7102370e-12 + 8.1769536e-13 3.5339943e-12 + 7.8982171e-13 3.3753679e-12 + 7.6432644e-13 3.2317742e-12 + 7.4089750e-13 3.1011154e-12 + 7.1927666e-13 2.9816730e-12 + 6.9924822e-13 2.8720219e-12 + 6.8063046e-13 2.7709721e-12 + 6.6326907e-13 2.6775222e-12 + 6.4703212e-13 2.5908210e-12 + 6.3180608e-13 2.5101412e-12 + 6.1749264e-13 2.4348591e-12 + 6.0400623e-13 2.3644341e-12 + 5.9127197e-13 2.2983973e-12 + 5.7922403e-13 2.2363378e-12 + 5.6780430e-13 2.1778963e-12 + 5.5696123e-13 2.1227563e-12 + 5.4664895e-13 2.0706358e-12 + 5.3682648e-13 2.0212861e-12 + 5.2745709e-13 1.9744851e-12 + 5.1850775e-13 1.9300345e-12 + 5.0994866e-13 1.8877555e-12 + 5.0175288e-13 1.8474868e-12 + 4.9389596e-13 1.8090849e-12 + 4.8635568e-13 1.7724181e-12 + 4.7911177e-13 1.7373678e-12 + 4.7214573e-13 1.7038256e-12 + 4.6544061e-13 1.6716931e-12 + 1.9151653e-12 1.0692204e-11 + 1.6782012e-12 9.0189527e-12 + 1.5050323e-12 7.8326319e-12 + 1.3718912e-12 6.9441109e-12 + 1.2657115e-12 6.2517183e-12 + 1.1786615e-12 5.6957139e-12 + 1.1057357e-12 5.2385947e-12 + 1.0435716e-12 4.8555759e-12 + 9.8981908e-13 4.5295950e-12 + 9.4278160e-13 4.2485070e-12 + 9.0120102e-13 4.0034190e-12 + 8.6412277e-13 3.7876674e-12 + 8.3080831e-13 3.5961538e-12 + 8.0067645e-13 3.4249092e-12 + 7.7326295e-13 3.2707967e-12 + 7.4819213e-13 3.1313010e-12 + 7.2515636e-13 3.0043830e-12 + 7.0390110e-13 2.8883696e-12 + 6.8421376e-13 2.7818750e-12 + 6.6591522e-13 2.6837416e-12 + 6.4885345e-13 2.5929952e-12 + 6.3289846e-13 2.5088086e-12 + 6.1793837e-13 2.4304744e-12 + 6.0387636e-13 2.3573853e-12 + 5.9062813e-13 2.2890169e-12 + 5.7811994e-13 2.2249121e-12 + 5.6628696e-13 2.1646728e-12 + 5.5507195e-13 2.1079484e-12 + 5.4442418e-13 2.0544309e-12 + 5.3429848e-13 2.0038475e-12 + 5.2465450e-13 1.9559564e-12 + 5.1545608e-13 1.9105408e-12 + 5.0667071e-13 1.8674077e-12 + 4.9826908e-13 1.8263842e-12 + 4.9022464e-13 1.7873138e-12 + 4.8251335e-13 1.7500563e-12 + 4.7511334e-13 1.7144838e-12 + 4.6800467e-13 1.6804812e-12 + 4.6116913e-13 1.6479433e-12 + 4.5459003e-13 1.6167742e-12 + 1.8823277e-12 1.0387784e-11 + 1.6485546e-12 8.7592555e-12 + 1.4777821e-12 7.6049021e-12 + 1.3465275e-12 6.7404945e-12 + 1.2418840e-12 6.0670138e-12 + 1.1561173e-12 5.5262854e-12 + 1.0842846e-12 5.0817903e-12 + 1.0230664e-12 4.7094017e-12 + 9.7014319e-13 4.3925111e-12 + 9.2384061e-13 4.1192929e-12 + 8.8291731e-13 3.8810947e-12 + 8.4643160e-13 3.6714308e-12 + 8.1365501e-13 3.4853410e-12 + 7.8401433e-13 3.3189625e-12 + 7.5705178e-13 3.1692432e-12 + 7.3239693e-13 3.0337368e-12 + 7.0974648e-13 2.9104587e-12 + 6.8884949e-13 2.7977818e-12 + 6.6949641e-13 2.6943584e-12 + 6.5151071e-13 2.5990631e-12 + 6.3474255e-13 2.5109475e-12 + 6.1906384e-13 2.4292069e-12 + 6.0436437e-13 2.3531543e-12 + 5.9054873e-13 2.2821995e-12 + 5.7753389e-13 2.2158315e-12 + 5.6524723e-13 2.1536059e-12 + 5.5362488e-13 2.0951363e-12 + 5.4261050e-13 2.0400821e-12 + 5.3215411e-13 1.9881430e-12 + 5.2221123e-13 1.9390548e-12 + 5.1274216e-13 1.8925814e-12 + 5.0371129e-13 1.8485129e-12 + 4.9508661e-13 1.8066612e-12 + 4.8683927e-13 1.7668588e-12 + 4.7894315e-13 1.7289533e-12 + 4.7137458e-13 1.6928083e-12 + 4.6411203e-13 1.6582998e-12 + 4.5713588e-13 1.6253158e-12 + 4.5042821e-13 1.5937541e-12 + 4.4397261e-13 1.5635214e-12 + 1.8501579e-12 1.0091549e-11 + 1.6195122e-12 8.5066047e-12 + 1.4510882e-12 7.3833970e-12 + 1.3216826e-12 6.5424847e-12 + 1.2185450e-12 5.8874279e-12 + 1.1340360e-12 5.3615772e-12 + 1.0632749e-12 4.9293796e-12 + 1.0029840e-12 4.5673437e-12 + 9.5087357e-13 4.2593027e-12 + 9.0529132e-13 3.9937472e-12 + 8.6501230e-13 3.7622577e-12 + 8.2910743e-13 3.5585208e-12 + 7.9685810e-13 3.3777099e-12 + 7.6769894e-13 3.2160677e-12 + 7.4117847e-13 3.0706244e-12 + 7.1693139e-13 2.9390004e-12 + 6.9465866e-13 2.8192644e-12 + 6.7411287e-13 2.7098349e-12 + 6.5508744e-13 2.6094004e-12 + 6.3740838e-13 2.5168657e-12 + 6.2092802e-13 2.4313096e-12 + 6.0552012e-13 2.3519486e-12 + 5.9107609e-13 2.2781165e-12 + 5.7750194e-13 2.2092365e-12 + 5.6471587e-13 2.1448142e-12 + 5.5264634e-13 2.0844173e-12 + 5.4123045e-13 2.0276686e-12 + 5.3041271e-13 1.9742386e-12 + 5.2014391e-13 1.9238350e-12 + 5.1038025e-13 1.8762004e-12 + 5.0108262e-13 1.8311055e-12 + 4.9221598e-13 1.7883469e-12 + 4.8374882e-13 1.7477417e-12 + 4.7565271e-13 1.7091263e-12 + 4.6790197e-13 1.6723534e-12 + 4.6047329e-13 1.6372902e-12 + 4.5334548e-13 1.6038163e-12 + 4.4649923e-13 1.5718225e-12 + 4.3991691e-13 1.5412097e-12 + 4.3358235e-13 1.5118875e-12 + 1.8186340e-12 9.8032791e-12 + 1.5910541e-12 8.2608106e-12 + 1.4249328e-12 7.1679559e-12 + 1.2973403e-12 6.3499315e-12 + 1.1956793e-12 5.7128210e-12 + 1.1124038e-12 5.2014641e-12 + 1.0426932e-12 4.7812414e-12 + 9.8331152e-13 4.4292884e-12 + 9.3199812e-13 4.1298649e-12 + 8.8712220e-13 3.8717711e-12 + 8.4747494e-13 3.6468117e-12 + 8.1213964e-13 3.4488445e-12 + 7.8040735e-13 3.2731724e-12 + 7.5172038e-13 3.1161408e-12 + 7.2563342e-13 2.9748591e-12 + 7.0178620e-13 2.8470135e-12 + 6.7988385e-13 2.7307251e-12 + 6.5968242e-13 2.6244550e-12 + 6.4097826e-13 2.5269284e-12 + 6.2359986e-13 2.4370802e-12 + 6.0740167e-13 2.3540141e-12 + 5.9225929e-13 2.2769691e-12 + 5.7806571e-13 2.2052955e-12 + 5.6472833e-13 2.1384350e-12 + 5.5216655e-13 2.0759051e-12 + 5.4030991e-13 2.0172861e-12 + 5.2909645e-13 1.9622122e-12 + 5.1847152e-13 1.9103616e-12 + 5.0838664e-13 1.8614505e-12 + 4.9879869e-13 1.8152297e-12 + 4.8966916e-13 1.7714758e-12 + 4.8096354e-13 1.7299908e-12 + 4.7265082e-13 1.6905975e-12 + 4.6470300e-13 1.6531364e-12 + 4.5709480e-13 1.6174647e-12 + 4.4980327e-13 1.5834530e-12 + 4.4280757e-13 1.5509846e-12 + 4.3608867e-13 1.5199536e-12 + 4.2962923e-13 1.4902634e-12 + 4.2341335e-13 1.4618264e-12 + 1.7877341e-12 9.5227646e-12 + 1.5631611e-12 8.0216941e-12 + 1.3992984e-12 6.9584117e-12 + 1.2734844e-12 6.1626883e-12 + 1.1732721e-12 5.5430607e-12 + 1.0912064e-12 5.0458202e-12 + 1.0225265e-12 4.6372631e-12 + 9.6403658e-13 4.2951275e-12 + 9.1350497e-13 4.0040954e-12 + 8.6932189e-13 3.7532653e-12 + 8.3029435e-13 3.5346642e-12 + 7.9551778e-13 3.3423137e-12 + 7.6429270e-13 3.1716444e-12 + 7.3606893e-13 3.0191000e-12 + 7.1040721e-13 2.8818691e-12 + 6.8695222e-13 2.7577002e-12 + 6.6541315e-13 2.6447668e-12 + 6.4554949e-13 2.5415715e-12 + 6.2716044e-13 2.4468738e-12 + 6.1007692e-13 2.3596394e-12 + 5.9415547e-13 2.2789956e-12 + 5.7927350e-13 2.2042031e-12 + 5.6532555e-13 2.1346305e-12 + 5.5222038e-13 2.0697339e-12 + 5.3987858e-13 2.0090447e-12 + 5.2823073e-13 1.9521551e-12 + 5.1721582e-13 1.8987093e-12 + 5.0677998e-13 1.8483946e-12 + 4.9687548e-13 1.8009360e-12 + 4.8745986e-13 1.7560895e-12 + 4.7849520e-13 1.7136395e-12 + 4.6994751e-13 1.6733931e-12 + 4.6178624e-13 1.6351779e-12 + 4.5398386e-13 1.5988392e-12 + 4.4651544e-13 1.5642378e-12 + 4.3935842e-13 1.5312488e-12 + 4.3249227e-13 1.4997580e-12 + 4.2589827e-13 1.4696628e-12 + 4.1955933e-13 1.4408694e-12 + 4.1345983e-13 1.4132925e-12 + 1.7574365e-12 9.2498041e-12 + 1.5358139e-12 7.7890713e-12 + 1.3741677e-12 6.7546082e-12 + 1.2500993e-12 5.9806121e-12 + 1.1513086e-12 5.3780184e-12 + 1.0704303e-12 4.8945270e-12 + 1.0027617e-12 4.4973283e-12 + 9.4514688e-13 4.1647541e-12 + 8.9538242e-13 3.8818923e-12 + 8.5187924e-13 3.6381364e-12 + 8.1345986e-13 3.4257250e-12 + 7.7923160e-13 3.2388424e-12 + 7.4850426e-13 3.0730425e-12 + 7.2073502e-13 2.9248656e-12 + 6.9549057e-13 2.7915774e-12 + 6.7242045e-13 2.6709869e-12 + 6.5123784e-13 2.5613179e-12 + 6.3170557e-13 2.4611141e-12 + 6.1362567e-13 2.3691698e-12 + 5.9683146e-13 2.2844781e-12 + 5.8118153e-13 2.2061912e-12 + 5.6655505e-13 2.1335898e-12 + 5.5284809e-13 2.0660598e-12 + 5.3997073e-13 2.0030737e-12 + 5.2784475e-13 1.9441753e-12 + 5.1640175e-13 1.8889672e-12 + 5.0558161e-13 1.8371052e-12 + 4.9533129e-13 1.7882846e-12 + 4.8560377e-13 1.7422378e-12 + 4.7635722e-13 1.6987283e-12 + 4.6755430e-13 1.6575462e-12 + 4.5916153e-13 1.6185038e-12 + 4.5114885e-13 1.5814341e-12 + 4.4348913e-13 1.5461866e-12 + 4.3615785e-13 1.5126262e-12 + 4.2913277e-13 1.4806308e-12 + 4.2239369e-13 1.4500906e-12 + 4.1592220e-13 1.4209051e-12 + 4.0970148e-13 1.3929834e-12 + 4.0371612e-13 1.3662426e-12 + 1.7277198e-12 8.9841937e-12 + 1.5089938e-12 7.5627773e-12 + 1.3495239e-12 6.5563961e-12 + 1.2271693e-12 5.8035674e-12 + 1.1297744e-12 5.2175638e-12 + 1.0500618e-12 4.7474649e-12 + 9.8338601e-13 4.3613300e-12 + 9.2663029e-13 4.0380663e-12 + 8.7761898e-13 3.7631608e-12 + 8.3478329e-13 3.5262919e-12 + 7.9696097e-13 3.3199062e-12 + 7.6327100e-13 3.1383462e-12 + 7.3303228e-13 2.9772862e-12 + 7.0570925e-13 2.8333606e-12 + 6.8087441e-13 2.7039087e-12 + 6.5818205e-13 2.5868008e-12 + 6.3734931e-13 2.4803085e-12 + 6.1814231e-13 2.3830156e-12 + 6.0036584e-13 2.2937497e-12 + 5.8385557e-13 2.2115322e-12 + 5.6847212e-13 2.1355380e-12 + 5.5409638e-13 2.0650681e-12 + 5.4062593e-13 1.9995254e-12 + 5.2797216e-13 1.9383978e-12 + 5.1605800e-13 1.8812403e-12 + 5.0481603e-13 1.8276688e-12 + 4.9418705e-13 1.7773468e-12 + 4.8411880e-13 1.7299787e-12 + 4.7456495e-13 1.6853049e-12 + 4.6548433e-13 1.6430955e-12 + 4.5684012e-13 1.6031459e-12 + 4.4859940e-13 1.5652745e-12 + 4.4073252e-13 1.5293182e-12 + 4.3321279e-13 1.4951316e-12 + 4.2601607e-13 1.4625829e-12 + 4.1912046e-13 1.4315540e-12 + 4.1250608e-13 1.4019374e-12 + 4.0615479e-13 1.3736362e-12 + 4.0005004e-13 1.3465620e-12 + 3.9417669e-13 1.3206340e-12 + 1.6985627e-12 8.7257422e-12 + 1.4826820e-12 7.3426429e-12 + 1.3253499e-12 6.3636211e-12 + 1.2046790e-12 5.6314167e-12 + 1.1086551e-12 5.0615755e-12 + 1.0300875e-12 4.6045225e-12 + 9.6438684e-13 4.2291611e-12 + 9.0847491e-13 3.9149635e-12 + 8.6020333e-13 3.6478048e-12 + 8.1802324e-13 3.4176411e-12 + 7.8078734e-13 3.2171222e-12 + 7.4762605e-13 3.0407438e-12 + 7.1786722e-13 2.8842974e-12 + 6.9098237e-13 2.7445091e-12 + 6.6654975e-13 2.6187919e-12 + 6.4422834e-13 2.5050722e-12 + 6.2373914e-13 2.4016713e-12 + 6.0485150e-13 2.3072103e-12 + 5.8737295e-13 2.2205510e-12 + 5.7114147e-13 2.1407399e-12 + 5.5601965e-13 2.0669757e-12 + 5.4189010e-13 1.9985795e-12 + 5.2865185e-13 1.9349703e-12 + 5.1621761e-13 1.8756493e-12 + 5.0451139e-13 1.8201862e-12 + 4.9346680e-13 1.7682057e-12 + 4.8302549e-13 1.7193811e-12 + 4.7313598e-13 1.6734257e-12 + 4.6375263e-13 1.6300872e-12 + 4.5483488e-13 1.5891417e-12 + 4.4634649e-13 1.5503908e-12 + 4.3825501e-13 1.5136576e-12 + 4.3053125e-13 1.4787843e-12 + 4.2314894e-13 1.4456289e-12 + 4.1608429e-13 1.4140638e-12 + 4.0931576e-13 1.3839740e-12 + 4.0282376e-13 1.3552555e-12 + 3.9659044e-13 1.3278139e-12 + 3.9059952e-13 1.3015630e-12 + 3.8483609e-13 1.2764252e-12 + 1.6699443e-12 8.4742607e-12 + 1.4568600e-12 7.1285010e-12 + 1.3016292e-12 6.1761421e-12 + 1.1826131e-12 5.4640305e-12 + 1.0879366e-12 4.9099342e-12 + 1.0104942e-12 4.4655855e-12 + 9.4575179e-13 4.1007182e-12 + 8.9066902e-13 3.7953482e-12 + 8.4312435e-13 3.5357332e-12 + 8.0158849e-13 3.3120974e-12 + 7.6492882e-13 3.1172898e-12 + 7.3228699e-13 2.9459552e-12 + 7.0299965e-13 2.7939996e-12 + 6.7654529e-13 2.6582382e-12 + 6.5250781e-13 2.5361549e-12 + 6.3055079e-13 2.4257329e-12 + 6.1039904e-13 2.3253396e-12 + 5.9182511e-13 2.2336350e-12 + 5.7463918e-13 2.1495103e-12 + 5.5868154e-13 2.0720408e-12 + 5.4381670e-13 2.0004467e-12 + 5.2992894e-13 1.9340676e-12 + 5.1691877e-13 1.8723385e-12 + 5.0470013e-13 1.8147754e-12 + 4.9319816e-13 1.7609593e-12 + 4.8234741e-13 1.7105259e-12 + 4.7209041e-13 1.6631578e-12 + 4.6237643e-13 1.6185764e-12 + 4.5316053e-13 1.5765358e-12 + 4.4440272e-13 1.5368193e-12 + 4.3606733e-13 1.4992335e-12 + 4.2812239e-13 1.4636072e-12 + 4.2053917e-13 1.4297866e-12 + 4.1329178e-13 1.3976338e-12 + 4.0635681e-13 1.3670249e-12 + 3.9971304e-13 1.3378482e-12 + 3.9334120e-13 1.3100024e-12 + 3.8722371e-13 1.2833961e-12 + 3.8134455e-13 1.2579457e-12 + 3.7568902e-13 1.2335754e-12 + 1.6418437e-12 8.2295651e-12 + 1.4315096e-12 6.9201949e-12 + 1.2783453e-12 5.9938162e-12 + 1.1609566e-12 5.3012808e-12 + 1.0676051e-12 4.7625206e-12 + 9.9126888e-13 4.3305473e-12 + 9.2746863e-13 3.9758979e-12 + 8.7320110e-13 3.6791260e-12 + 8.2637110e-13 3.4268555e-12 + 7.8546861e-13 3.2095758e-12 + 7.4937541e-13 3.0203281e-12 + 7.1724422e-13 2.8539034e-12 + 6.8842031e-13 2.7063183e-12 + 6.6238907e-13 2.5744764e-12 + 6.3873994e-13 2.4559291e-12 + 6.1714102e-13 2.3487162e-12 + 5.9732090e-13 2.2512492e-12 + 5.7905523e-13 2.1622263e-12 + 5.6215686e-13 2.0805683e-12 + 5.4646830e-13 2.0053762e-12 + 5.3185598e-13 1.9358927e-12 + 5.1820582e-13 1.8714754e-12 + 5.0541975e-13 1.8115754e-12 + 4.9341295e-13 1.7557221e-12 + 4.8211165e-13 1.7035076e-12 + 4.7145135e-13 1.6545793e-12 + 4.6137543e-13 1.6086276e-12 + 4.5183390e-13 1.5653819e-12 + 4.4278248e-13 1.5246036e-12 + 4.3418180e-13 1.4860819e-12 + 4.2599670e-13 1.4496292e-12 + 4.1819571e-13 1.4150788e-12 + 4.1075053e-13 1.3822815e-12 + 4.0363566e-13 1.3511032e-12 + 3.9682805e-13 1.3214237e-12 + 3.9030682e-13 1.2931345e-12 + 3.8405298e-13 1.2661371e-12 + 3.7804925e-13 1.2403426e-12 + 3.7227984e-13 1.2156702e-12 + 3.6673030e-13 1.1920461e-12 + 1.6142402e-12 7.9914774e-12 + 1.4066126e-12 6.7175718e-12 + 1.2554821e-12 5.8165062e-12 + 1.1396945e-12 5.1430428e-12 + 1.0476466e-12 4.6192225e-12 + 9.7239876e-13 4.1993017e-12 + 9.0952535e-13 3.8546053e-12 + 8.5605978e-13 3.5662045e-12 + 8.0993281e-13 3.3210852e-12 + 7.6965333e-13 3.1099923e-12 + 7.3411728e-13 2.9261577e-12 + 7.0248829e-13 2.7645123e-12 + 6.7412012e-13 2.6211823e-12 + 6.4850493e-13 2.4931538e-12 + 6.2523763e-13 2.3780478e-12 + 6.0399081e-13 2.2739579e-12 + 5.8449672e-13 2.1793385e-12 + 5.6653413e-13 2.0929233e-12 + 5.4991846e-13 2.0136655e-12 + 5.3449443e-13 1.9406893e-12 + 5.2013034e-13 1.8732589e-12 + 5.0671375e-13 1.8107497e-12 + 4.9414797e-13 1.7526287e-12 + 4.8234940e-13 1.6984378e-12 + 4.7124534e-13 1.6477815e-12 + 4.6077224e-13 1.6003163e-12 + 4.5087428e-13 1.5557419e-12 + 4.4150223e-13 1.5137952e-12 + 4.3261246e-13 1.4742442e-12 + 4.2416618e-13 1.4368841e-12 + 4.1612877e-13 1.4015330e-12 + 4.0846922e-13 1.3680287e-12 + 4.0115967e-13 1.3362260e-12 + 3.9417501e-13 1.3059950e-12 + 3.8749255e-13 1.2772189e-12 + 3.8109171e-13 1.2497922e-12 + 3.7495382e-13 1.2236194e-12 + 3.6906185e-13 1.1986143e-12 + 3.6340026e-13 1.1746977e-12 + 3.5795483e-13 1.1517986e-12 + 1.5871136e-12 7.7598233e-12 + 1.3821513e-12 6.5204768e-12 + 1.2330234e-12 5.6440793e-12 + 1.1188123e-12 4.9891954e-12 + 1.0280477e-12 4.4799266e-12 + 9.5387116e-13 4.0717462e-12 + 8.9191008e-13 3.7367409e-12 + 8.3923390e-13 3.4564925e-12 + 7.9379888e-13 3.2183370e-12 + 7.5413252e-13 3.0132682e-12 + 7.1914475e-13 2.8347024e-12 + 6.8800989e-13 2.6777089e-12 + 6.6009011e-13 2.5385191e-12 + 6.3488423e-13 2.4142029e-12 + 6.1199255e-13 2.3024458e-12 + 5.9109207e-13 2.2013938e-12 + 5.7191870e-13 2.1095451e-12 + 5.5425421e-13 2.0256684e-12 + 5.3791661e-13 1.9487448e-12 + 5.2275275e-13 1.8779240e-12 + 5.0863281e-13 1.8124906e-12 + 4.9544591e-13 1.7518375e-12 + 4.8309677e-13 1.6954466e-12 + 4.7150297e-13 1.6428729e-12 + 4.6059286e-13 1.5937317e-12 + 4.5030381e-13 1.5476894e-12 + 4.4058084e-13 1.5044541e-12 + 4.3137541e-13 1.4637702e-12 + 4.2264456e-13 1.4254127e-12 + 4.1435007e-13 1.3891821e-12 + 4.0645784e-13 1.3549017e-12 + 3.9893733e-13 1.3224141e-12 + 3.9176110e-13 1.2915784e-12 + 3.8490443e-13 1.2622683e-12 + 3.7834496e-13 1.2343702e-12 + 3.7206246e-13 1.2077818e-12 + 3.6603852e-13 1.1824104e-12 + 3.6025638e-13 1.1581723e-12 + 3.5470076e-13 1.1349904e-12 + 3.4935766e-13 1.1127957e-12 + 1.5604435e-12 7.5344306e-12 + 1.3581079e-12 6.3287673e-12 + 1.2109532e-12 5.4764032e-12 + 1.0982954e-12 4.8396201e-12 + 1.0087948e-12 4.3445267e-12 + 9.3567361e-13 3.9477799e-12 + 8.7461114e-13 3.6222141e-12 + 8.2271243e-13 3.3499040e-12 + 7.7795883e-13 3.1185277e-12 + 7.3889622e-13 2.9193242e-12 + 7.0444827e-13 2.7458872e-12 + 6.7379986e-13 2.5934215e-12 + 6.4632146e-13 2.4582613e-12 + 6.2151846e-13 2.3375579e-12 + 5.9899649e-13 2.2290594e-12 + 5.7843689e-13 2.1309638e-12 + 5.5957914e-13 2.0418107e-12 + 5.4220803e-13 1.9604029e-12 + 5.2614404e-13 1.8857502e-12 + 5.1123620e-13 1.8170265e-12 + 4.9735649e-13 1.7535355e-12 + 4.8439560e-13 1.6946876e-12 + 4.7225959e-13 1.6399794e-12 + 4.6086724e-13 1.5889781e-12 + 4.5014792e-13 1.5413105e-12 + 4.4003993e-13 1.4966516e-12 + 4.3048906e-13 1.4547185e-12 + 4.2144752e-13 1.4152627e-12 + 4.1287297e-13 1.3780651e-12 + 4.0472776e-13 1.3429325e-12 + 3.9697831e-13 1.3096931e-12 + 3.8959453e-13 1.2781939e-12 + 3.8254940e-13 1.2482981e-12 + 3.7581858e-13 1.2198830e-12 + 3.6938006e-13 1.1928386e-12 + 3.6321390e-13 1.1670649e-12 + 3.5730201e-13 1.1424723e-12 + 3.5162787e-13 1.1189792e-12 + 3.4617644e-13 1.0965114e-12 + 3.4093395e-13 1.0750015e-12 + 1.5342098e-12 7.3151368e-12 + 1.3344647e-12 6.1422971e-12 + 1.1892559e-12 5.3133508e-12 + 1.0781292e-12 4.6942046e-12 + 9.8987481e-13 4.2129193e-12 + 9.1779378e-13 3.8273070e-12 + 8.5761700e-13 3.5109326e-12 + 8.0648448e-13 3.2463525e-12 + 7.6240235e-13 3.0215768e-12 + 7.2393458e-13 2.8280828e-12 + 6.9001841e-13 2.6596387e-12 + 6.5984918e-13 2.5115801e-12 + 6.3280549e-13 2.3803426e-12 + 6.0839928e-13 2.2631537e-12 + 5.8624139e-13 2.1578263e-12 + 5.6601745e-13 2.0626075e-12 + 5.4747049e-13 1.9760766e-12 + 5.3038823e-13 1.8970711e-12 + 5.1459366e-13 1.8246281e-12 + 4.9993786e-13 1.7579437e-12 + 4.8629463e-13 1.6963421e-12 + 4.7355621e-13 1.6392500e-12 + 4.6162999e-13 1.5861783e-12 + 4.5043592e-13 1.5367064e-12 + 4.3990438e-13 1.4904715e-12 + 4.2997456e-13 1.4471579e-12 + 4.2059306e-13 1.4064909e-12 + 4.1171278e-13 1.3682288e-12 + 4.0329201e-13 1.3321592e-12 + 3.9529368e-13 1.2980939e-12 + 3.8768469e-13 1.2658663e-12 + 3.8043542e-13 1.2353279e-12 + 3.7351927e-13 1.2063456e-12 + 3.6691225e-13 1.1788006e-12 + 3.6059271e-13 1.1525855e-12 + 3.5454101e-13 1.1276039e-12 + 3.4873933e-13 1.1037682e-12 + 3.4317142e-13 1.0809992e-12 + 3.3782248e-13 1.0592254e-12 + 3.3267894e-13 1.0383806e-12 + 1.5083924e-12 7.1017791e-12 + 1.3112042e-12 5.9609289e-12 + 1.1679155e-12 5.1548007e-12 + 1.0582996e-12 4.5528329e-12 + 9.7127448e-13 4.0849980e-12 + 9.0021948e-13 3.7102324e-12 + 8.4091622e-13 3.4028087e-12 + 7.9053928e-13 3.1457550e-12 + 7.4711922e-13 2.9274064e-12 + 7.0923786e-13 2.7394706e-12 + 6.7584588e-13 2.5758868e-12 + 6.4614891e-13 2.4321174e-12 + 6.1953365e-13 2.3046968e-12 + 5.9551843e-13 2.1909294e-12 + 5.7371929e-13 2.0886871e-12 + 5.5382608e-13 1.9962668e-12 + 5.3558532e-13 1.9122876e-12 + 5.1878762e-13 1.8356192e-12 + 5.0325843e-13 1.7653251e-12 + 4.8885090e-13 1.7006245e-12 + 4.7544060e-13 1.6408607e-12 + 4.6292128e-13 1.5854762e-12 + 4.5120165e-13 1.5339959e-12 + 4.4020281e-13 1.4860111e-12 + 4.2985616e-13 1.4411694e-12 + 4.2010176e-13 1.3991640e-12 + 4.1088699e-13 1.3597278e-12 + 4.0216547e-13 1.3226263e-12 + 3.9389608e-13 1.2876531e-12 + 3.8604232e-13 1.2546255e-12 + 3.7857160e-13 1.2233816e-12 + 3.7145473e-13 1.1937769e-12 + 3.6466551e-13 1.1656827e-12 + 3.5818034e-13 1.1389830e-12 + 3.5197789e-13 1.1135741e-12 + 3.4603882e-13 1.0893619e-12 + 3.4034560e-13 1.0662620e-12 + 3.3488224e-13 1.0441968e-12 + 3.2963415e-13 1.0230971e-12 + 3.2458799e-13 1.0028987e-12 + 1.4829713e-12 6.8942003e-12 + 1.2883090e-12 5.7845262e-12 + 1.1469166e-12 5.0006303e-12 + 1.0387924e-12 4.4153991e-12 + 9.5298079e-13 3.9606651e-12 + 8.8293858e-13 3.5964629e-12 + 8.2449748e-13 3.2977562e-12 + 7.7486615e-13 3.0480316e-12 + 7.3209931e-13 2.8359396e-12 + 6.9479643e-13 2.6534151e-12 + 6.6192147e-13 2.4945610e-12 + 6.3269026e-13 2.3549671e-12 + 6.0649746e-13 2.2312608e-12 + 5.8286777e-13 2.1208222e-12 + 5.6142234e-13 2.0215827e-12 + 5.4185519e-13 1.9318853e-12 + 5.2391627e-13 1.8503889e-12 + 5.0739908e-13 1.7759932e-12 + 4.9213144e-13 1.7077898e-12 + 4.7796859e-13 1.6450189e-12 + 4.6478782e-13 1.5870424e-12 + 4.5248438e-13 1.5333187e-12 + 4.4096831e-13 1.4833859e-12 + 4.3016181e-13 1.4368474e-12 + 4.1999729e-13 1.3933599e-12 + 4.1041568e-13 1.3526265e-12 + 4.0136515e-13 1.3143870e-12 + 3.9279998e-13 1.2784140e-12 + 3.8467969e-13 1.2445065e-12 + 3.7696831e-13 1.2124874e-12 + 3.6963373e-13 1.1821997e-12 + 3.6264724e-13 1.1535029e-12 + 3.5598301e-13 1.1262716e-12 + 3.4961782e-13 1.1003937e-12 + 3.4353066e-13 1.0757683e-12 + 3.3770250e-13 1.0523041e-12 + 3.3211606e-13 1.0299186e-12 + 3.2675562e-13 1.0085375e-12 + 3.2160682e-13 9.8809293e-13 + 3.1665652e-13 9.6852273e-13 + 1.4579265e-12 6.6922496e-12 + 1.2657615e-12 5.6129555e-12 + 1.1262434e-12 4.8507225e-12 + 1.0195932e-12 4.2817961e-12 + 9.3498074e-13 3.8398230e-12 + 8.6593906e-13 3.4859089e-12 + 8.0834950e-13 3.1956913e-12 + 7.5945447e-13 2.9531024e-12 + 7.1733256e-13 2.7471020e-12 + 6.8060072e-13 2.5698442e-12 + 6.4823605e-13 2.4155960e-12 + 6.1946447e-13 2.2800643e-12 + 5.9368856e-13 2.1599732e-12 + 5.7043926e-13 2.0527743e-12 + 5.4934278e-13 1.9564555e-12 + 5.3009728e-13 1.8694082e-12 + 5.1245609e-13 1.7903263e-12 + 4.9621554e-13 1.7181421e-12 + 4.8120586e-13 1.6519721e-12 + 4.6728427e-13 1.5910781e-12 + 4.5432980e-13 1.5348398e-12 + 4.4223921e-13 1.4827312e-12 + 4.3092379e-13 1.4343035e-12 + 4.2030688e-13 1.3891709e-12 + 4.1032187e-13 1.3470006e-12 + 4.0091056e-13 1.3075036e-12 + 3.9202188e-13 1.2704277e-12 + 3.8361078e-13 1.2355514e-12 + 3.7563740e-13 1.2026802e-12 + 3.6806630e-13 1.1716416e-12 + 3.6086587e-13 1.1422832e-12 + 3.5400783e-13 1.1144686e-12 + 3.4746675e-13 1.0880760e-12 + 3.4121975e-13 1.0629968e-12 + 3.3524616e-13 1.0391327e-12 + 3.2952724e-13 1.0163951e-12 + 3.2404600e-13 9.9470432e-13 + 3.1878693e-13 9.7398773e-13 + 3.1373592e-13 9.5417966e-13 + 3.0888004e-13 9.3521994e-13 + 1.4332379e-12 6.4957782e-12 + 1.2435443e-12 5.4460903e-12 + 1.1058804e-12 4.7049641e-12 + 1.0006881e-12 4.1519212e-12 + 9.1726135e-13 3.7223772e-12 + 8.4920887e-13 3.3784838e-12 + 7.9246105e-13 3.0965318e-12 + 7.4429364e-13 2.8608909e-12 + 7.0280894e-13 2.6608215e-12 + 6.6664119e-13 2.4886910e-12 + 6.3478053e-13 2.3389239e-12 + 6.0646287e-13 2.2073471e-12 + 5.8109860e-13 2.0907736e-12 + 5.5822487e-13 1.9867272e-12 + 5.3747290e-13 1.8932510e-12 + 5.1854489e-13 1.8087805e-12 + 5.0119756e-13 1.7320483e-12 + 4.8523003e-13 1.6620155e-12 + 4.7047488e-13 1.5978232e-12 + 4.5679133e-13 1.5387547e-12 + 4.4406012e-13 1.4842071e-12 + 4.3217948e-13 1.4336690e-12 + 4.2106196e-13 1.3867046e-12 + 4.1063204e-13 1.3429393e-12 + 4.0082406e-13 1.3020495e-12 + 3.9158068e-13 1.2637549e-12 + 3.8285157e-13 1.2278099e-12 + 3.7459239e-13 1.1939999e-12 + 3.6676385e-13 1.1621359e-12 + 3.5933105e-13 1.1320503e-12 + 3.5226286e-13 1.1035952e-12 + 3.4553143e-13 1.0766378e-12 + 3.3911173e-13 1.0510608e-12 + 3.3298123e-13 1.0267575e-12 + 3.2711958e-13 1.0036333e-12 + 3.2150834e-13 9.8160184e-13 + 3.1613075e-13 9.6058597e-13 + 3.1097160e-13 9.4051527e-13 + 3.0601695e-13 9.2132563e-13 + 3.0125411e-13 9.0295875e-13 + 1.4088851e-12 6.3046403e-12 + 1.2216396e-12 5.2838027e-12 + 1.0858118e-12 4.5632422e-12 + 9.8206283e-13 4.0256727e-12 + 8.9980962e-13 3.6082371e-12 + 8.3273599e-13 3.2741009e-12 + 7.7682084e-13 3.0001986e-12 + 7.2937307e-13 2.7713228e-12 + 6.8851841e-13 2.5770260e-12 + 6.5290833e-13 2.4098872e-12 + 6.2154585e-13 2.2644823e-12 + 5.9367680e-13 2.1367539e-12 + 5.6871929e-13 2.0236043e-12 + 5.4621665e-13 1.9226245e-12 + 5.2580500e-13 1.8319140e-12 + 5.0719060e-13 1.7499515e-12 + 4.9013349e-13 1.6755046e-12 + 4.7443557e-13 1.6075641e-12 + 4.5993173e-13 1.5452958e-12 + 4.4648319e-13 1.4880025e-12 + 4.3397237e-13 1.4350990e-12 + 4.2229894e-13 1.3860882e-12 + 4.1137675e-13 1.3405469e-12 + 4.0113135e-13 1.2981109e-12 + 3.9149804e-13 1.2584662e-12 + 3.8242035e-13 1.2213401e-12 + 3.7384869e-13 1.1864947e-12 + 3.6573937e-13 1.1537213e-12 + 3.5805370e-13 1.1228361e-12 + 3.5075733e-13 1.0936770e-12 + 3.4381958e-13 1.0660995e-12 + 3.3721303e-13 1.0399758e-12 + 3.3091304e-13 1.0151908e-12 + 3.2489744e-13 9.9164183e-13 + 3.1914617e-13 9.6923655e-13 + 3.1364110e-13 9.4789160e-13 + 3.0836573e-13 9.2753152e-13 + 3.0330508e-13 9.0808802e-13 + 2.9844545e-13 8.8949914e-13 + 2.9377432e-13 8.7170845e-13 + 1.3848475e-12 6.1186933e-12 + 1.2000295e-12 5.1259728e-12 + 1.0660218e-12 4.4254489e-12 + 9.6370302e-13 3.9029538e-12 + 8.8261246e-13 3.4973105e-12 + 8.1650826e-13 3.1726777e-12 + 7.6141755e-13 2.9066138e-12 + 7.1468208e-13 2.6843243e-12 + 6.7445092e-13 2.4956488e-12 + 6.3939259e-13 2.3333682e-12 + 6.0852292e-13 2.1922085e-12 + 5.8109757e-13 2.0682260e-12 + 5.5654233e-13 1.9584074e-12 + 5.3440659e-13 1.8604119e-12 + 5.1433139e-13 1.7723923e-12 + 4.9602699e-13 1.6928694e-12 + 4.7925671e-13 1.6206458e-12 + 4.6382519e-13 1.5547408e-12 + 4.4956965e-13 1.4943434e-12 + 4.3635327e-13 1.4387769e-12 + 4.2406013e-13 1.3874720e-12 + 4.1259137e-13 1.3399464e-12 + 4.0186207e-13 1.2957883e-12 + 3.9179887e-13 1.2546449e-12 + 3.8233803e-13 1.2162107e-12 + 3.7342392e-13 1.1802209e-12 + 3.6500769e-13 1.1464443e-12 + 3.5704631e-13 1.1146785e-12 + 3.4950167e-13 1.0847450e-12 + 3.4233994e-13 1.0564862e-12 + 3.3553093e-13 1.0297619e-12 + 3.2904763e-13 1.0044479e-12 + 3.2286577e-13 9.8043301e-13 + 3.1696354e-13 9.5761702e-13 + 3.1132119e-13 9.3591025e-13 + 3.0592086e-13 9.1523192e-13 + 3.0074634e-13 8.9550919e-13 + 2.9578287e-13 8.7667537e-13 + 2.9101696e-13 8.5867023e-13 + 2.8643630e-13 8.4143920e-13 + 1.3611043e-12 5.9378027e-12 + 1.1786961e-12 4.9724812e-12 + 1.0464943e-12 4.2914783e-12 + 9.4559425e-13 3.7836679e-12 + 8.6565663e-13 3.3895115e-12 + 8.0051344e-13 3.0741341e-12 + 7.4623973e-13 2.8157026e-12 + 7.0020995e-13 2.5998259e-12 + 6.6059633e-13 2.4166213e-12 + 6.2608435e-13 2.2590693e-12 + 5.9570260e-13 2.1220427e-12 + 5.6871646e-13 2.0017048e-12 + 5.4455934e-13 1.8951281e-12 + 5.2278667e-13 1.8000366e-12 + 5.0304434e-13 1.7146343e-12 + 4.8504658e-13 1.6374849e-12 + 4.6855997e-13 1.5674238e-12 + 4.5339190e-13 1.5034986e-12 + 4.3938185e-13 1.4449210e-12 + 4.2639497e-13 1.3910334e-12 + 4.1431700e-13 1.3412833e-12 + 4.0305051e-13 1.2952016e-12 + 3.9251182e-13 1.2523891e-12 + 3.8262866e-13 1.2125023e-12 + 3.7333823e-13 1.1752448e-12 + 3.6458573e-13 1.1403595e-12 + 3.5632304e-13 1.1076222e-12 + 3.4850778e-13 1.0768356e-12 + 3.4110245e-13 1.0478269e-12 + 3.3407370e-13 1.0204430e-12 + 3.2739182e-13 9.9454829e-13 + 3.2103022e-13 9.7002139e-13 + 3.1496501e-13 9.4675448e-13 + 3.0917471e-13 9.2465064e-13 + 3.0363989e-13 9.0362280e-13 + 2.9834298e-13 8.8359255e-13 + 2.9326800e-13 8.6448869e-13 + 2.8840044e-13 8.4624717e-13 + 2.8372703e-13 8.2880929e-13 + 2.7923566e-13 8.1212199e-13 + 1.3376340e-12 5.7618329e-12 + 1.1576208e-12 4.8232101e-12 + 1.0272129e-12 4.1612289e-12 + 9.2772180e-13 3.6677230e-12 + 8.4892868e-13 3.2847547e-12 + 7.8473908e-13 2.9783905e-12 + 7.3127579e-13 2.7273902e-12 + 6.8594578e-13 2.5177569e-12 + 6.4694437e-13 2.3398790e-12 + 6.1297392e-13 2.1869300e-12 + 5.8307566e-13 2.0539250e-12 + 5.5652467e-13 1.9371343e-12 + 5.3276190e-13 1.8337120e-12 + 5.1134878e-13 1.7414458e-12 + 4.9193605e-13 1.6585905e-12 + 4.7424184e-13 1.5837498e-12 + 4.5803600e-13 1.5157923e-12 + 4.4312863e-13 1.4537924e-12 + 4.2936149e-13 1.3969846e-12 + 4.1660165e-13 1.3447301e-12 + 4.0473652e-13 1.2964918e-12 + 3.9367008e-13 1.2518145e-12 + 3.8331990e-13 1.2103097e-12 + 3.7361476e-13 1.1716445e-12 + 3.6449282e-13 1.1355310e-12 + 3.5590008e-13 1.1017195e-12 + 3.4778918e-13 1.0699920e-12 + 3.4011836e-13 1.0401574e-12 + 3.3285070e-13 1.0120477e-12 + 3.2595338e-13 9.8551442e-13 + 3.1939714e-13 9.6042532e-13 + 3.1315579e-13 9.3666341e-13 + 3.0720583e-13 9.1412366e-13 + 3.0152612e-13 8.9271183e-13 + 2.9609752e-13 8.7234362e-13 + 2.9090275e-13 8.5294282e-13 + 2.8592610e-13 8.3444057e-13 + 2.8115327e-13 8.1677431e-13 + 2.7657121e-13 7.9988745e-13 + 2.7216801e-13 7.8372818e-13 + 1.3144148e-12 5.5906525e-12 + 1.1367847e-12 4.6780486e-12 + 1.0081612e-12 4.0345992e-12 + 9.1007070e-13 3.5550281e-12 + 8.3241489e-13 3.1829571e-12 + 7.6917252e-13 2.8853705e-12 + 7.1651392e-13 2.6416066e-12 + 6.7187851e-13 2.4380515e-12 + 6.3348463e-13 2.2653582e-12 + 6.0005144e-13 2.1168895e-12 + 5.7063274e-13 1.9877983e-12 + 5.4451325e-13 1.8744594e-12 + 5.2114145e-13 1.7741066e-12 + 5.0008472e-13 1.6845893e-12 + 4.8099859e-13 1.6042118e-12 + 4.6360513e-13 1.5316168e-12 + 4.4767742e-13 1.4657055e-12 + 4.3302824e-13 1.4055786e-12 + 4.1950163e-13 1.3504921e-12 + 4.0696658e-13 1.2998251e-12 + 3.9531214e-13 1.2530570e-12 + 3.8444372e-13 1.2097448e-12 + 3.7428010e-13 1.1695118e-12 + 3.6475113e-13 1.1320344e-12 + 3.5579590e-13 1.0970330e-12 + 3.4736124e-13 1.0642651e-12 + 3.3940049e-13 1.0335195e-12 + 3.3187256e-13 1.0046102e-12 + 3.2474107e-13 9.7737408e-13 + 3.1797372e-13 9.5166746e-13 + 3.1154172e-13 9.2736143e-13 + 3.0541927e-13 9.0434276e-13 + 2.9958327e-13 8.8250935e-13 + 2.9401287e-13 8.6177011e-13 + 2.8868929e-13 8.4204279e-13 + 2.8359548e-13 8.2325355e-13 + 2.7871600e-13 8.0533566e-13 + 2.7403678e-13 7.8822834e-13 + 2.6954499e-13 7.7187671e-13 + 2.6522891e-13 7.5623051e-13 + 1.2914242e-12 5.4241362e-12 + 1.1161685e-12 4.5368863e-12 + 9.8932188e-13 3.9114923e-12 + 8.9262557e-13 3.4454959e-12 + 8.1610125e-13 3.0840376e-12 + 7.5380080e-13 2.7949990e-12 + 7.0194206e-13 2.5582811e-12 + 6.5799687e-13 2.3606435e-12 + 6.2020650e-13 2.1929969e-12 + 5.8730686e-13 2.0488893e-12 + 5.5836429e-13 1.9236071e-12 + 5.3267310e-13 1.8136276e-12 + 5.0968927e-13 1.7162609e-12 + 4.8898610e-13 1.6294182e-12 + 4.7022392e-13 1.5514511e-12 + 4.5312870e-13 1.4810407e-12 + 4.3747673e-13 1.4171195e-12 + 4.2308347e-13 1.3588138e-12 + 4.0979524e-13 1.3054009e-12 + 3.9748294e-13 1.2562785e-12 + 3.8603726e-13 1.2109396e-12 + 3.7536500e-13 1.1689548e-12 + 3.6538616e-13 1.1299583e-12 + 3.5603167e-13 1.0936355e-12 + 3.4724153e-13 1.0597152e-12 + 3.3896338e-13 1.0279619e-12 + 3.3115129e-13 9.9817038e-13 + 3.2376480e-13 9.7016046e-13 + 3.1676810e-13 9.4377355e-13 + 3.1012940e-13 9.1887001e-13 + 3.0382033e-13 8.9532526e-13 + 2.9781555e-13 8.7302882e-13 + 2.9209228e-13 8.5188181e-13 + 2.8663004e-13 8.3179588e-13 + 2.8141032e-13 8.1269128e-13 + 2.7641638e-13 7.9449627e-13 + 2.7163300e-13 7.7714602e-13 + 2.6704635e-13 7.6058165e-13 + 2.6264382e-13 7.4474993e-13 + 2.5841387e-13 7.2960214e-13 + 1.2686389e-12 5.2621593e-12 + 1.0957523e-12 4.3996155e-12 + 9.7067753e-13 3.7918122e-12 + 8.7537065e-13 3.3390397e-12 + 7.9997335e-13 2.9879184e-12 + 7.3861065e-13 2.7072037e-12 + 6.8754790e-13 2.4773454e-12 + 6.4428933e-13 2.2854687e-12 + 6.0709913e-13 2.1227355e-12 + 5.7472992e-13 1.9828717e-12 + 5.4626057e-13 1.8612969e-12 + 5.2099494e-13 1.7545860e-12 + 4.9839646e-13 1.6601255e-12 + 4.7804440e-13 1.5758846e-12 + 4.5960384e-13 1.5002618e-12 + 4.4280462e-13 1.4319766e-12 + 4.2742628e-13 1.3699913e-12 + 4.1328694e-13 1.3134567e-12 + 4.0023518e-13 1.2616717e-12 + 3.8814380e-13 1.2140506e-12 + 3.7690512e-13 1.1701015e-12 + 3.6642736e-13 1.1294075e-12 + 3.5663172e-13 1.0916128e-12 + 3.4745017e-13 1.0564124e-12 + 3.3882365e-13 1.0235432e-12 + 3.3070060e-13 9.9277607e-13 + 3.2303582e-13 9.6391195e-13 + 3.1578945e-13 9.3677609e-13 + 3.0892627e-13 9.1121454e-13 + 3.0241498e-13 8.8709146e-13 + 2.9622768e-13 8.6428625e-13 + 2.9033940e-13 8.4269174e-13 + 2.8472776e-13 8.2221178e-13 + 2.7937259e-13 8.0276054e-13 + 2.7425569e-13 7.8426097e-13 + 2.6936058e-13 7.6664310e-13 + 2.6467232e-13 7.4984437e-13 + 2.6017728e-13 7.3380751e-13 + 2.5586307e-13 7.1848072e-13 + 2.5171834e-13 7.0381697e-13 + 1.2460349e-12 5.1046008e-12 + 1.0755155e-12 4.2661323e-12 + 9.5221007e-13 3.6754683e-12 + 8.5828972e-13 3.2355760e-12 + 7.8401641e-13 2.8945226e-12 + 7.2358845e-13 2.6219129e-12 + 6.7331878e-13 2.3987339e-12 + 6.3074406e-13 2.2124657e-12 + 5.9415141e-13 2.0545143e-12 + 5.6231013e-13 1.9187817e-12 + 5.3431160e-13 1.8008147e-12 + 5.0946924e-13 1.6972843e-12 + 4.8725395e-13 1.6056509e-12 + 4.6725089e-13 1.5239413e-12 + 4.4912994e-13 1.4505996e-12 + 4.3262482e-13 1.3843813e-12 + 4.1751828e-13 1.3242785e-12 + 4.0363111e-13 1.2694666e-12 + 3.9081414e-13 1.2192647e-12 + 3.7894208e-13 1.1731035e-12 + 3.6790887e-13 1.1305057e-12 + 3.5762413e-13 1.0910665e-12 + 3.4801027e-13 1.0544402e-12 + 3.3900031e-13 1.0203311e-12 + 3.3053610e-13 9.8848337e-13 + 3.2256689e-13 9.5867486e-13 + 3.1504818e-13 9.3071227e-13 + 3.0794076e-13 9.0442584e-13 + 3.0120995e-13 8.7966622e-13 + 2.9482496e-13 8.5630170e-13 + 2.8875834e-13 8.3421519e-13 + 2.8298553e-13 8.1330246e-13 + 2.7748450e-13 7.9347059e-13 + 2.7223541e-13 7.7463621e-13 + 2.6722037e-13 7.5672431e-13 + 2.6242317e-13 7.3966722e-13 + 2.5782911e-13 7.2340408e-13 + 2.5342480e-13 7.0787959e-13 + 2.4919805e-13 6.9304331e-13 + 2.4513769e-13 6.7884968e-13 + 1.2235877e-12 4.9513431e-12 + 1.0554371e-12 4.1363347e-12 + 9.3390092e-13 3.5623685e-12 + 8.4136609e-13 3.1350238e-12 + 7.6821523e-13 2.8037754e-12 + 7.0872021e-13 2.5390581e-12 + 6.5924174e-13 2.3223826e-12 + 6.1734897e-13 2.1415737e-12 + 5.8135195e-13 1.9882775e-12 + 5.5003674e-13 1.8565654e-12 + 5.2250717e-13 1.7421086e-12 + 4.9808628e-13 1.6416734e-12 + 4.7625241e-13 1.5527908e-12 + 4.5659666e-13 1.4735436e-12 + 4.3879366e-13 1.4024209e-12 + 4.2258105e-13 1.3382127e-12 + 4.0774476e-13 1.2799407e-12 + 3.9410829e-13 1.2268044e-12 + 3.8152468e-13 1.1781414e-12 + 3.6987057e-13 1.1333999e-12 + 3.5904152e-13 1.0921160e-12 + 3.4894852e-13 1.0538965e-12 + 3.3951521e-13 1.0184064e-12 + 3.3067564e-13 9.8535811e-13 + 3.2237259e-13 9.5450333e-13 + 3.1455610e-13 9.2562662e-13 + 3.0718238e-13 8.9853997e-13 + 3.0021286e-13 8.7307899e-13 + 2.9361341e-13 8.4909886e-13 + 2.8735373e-13 8.2647142e-13 + 2.8140682e-13 8.0508319e-13 + 2.7574853e-13 7.8483311e-13 + 2.7035719e-13 7.6563084e-13 + 2.6521330e-13 7.4739551e-13 + 2.6029925e-13 7.3005457e-13 + 2.5559911e-13 7.1354226e-13 + 2.5109843e-13 6.9779943e-13 + 2.4678404e-13 6.8277249e-13 + 2.4264396e-13 6.6841269e-13 + 2.3866723e-13 6.5467559e-13 + 1.2012716e-12 4.8022711e-12 + 1.0354953e-12 4.0101252e-12 + 9.1573096e-13 3.4524259e-12 + 8.2458260e-13 3.0373034e-12 + 7.5255421e-13 2.7156036e-12 + 6.9399161e-13 2.4585719e-12 + 6.4530351e-13 2.2482281e-12 + 6.0409165e-13 2.0727336e-12 + 5.6868912e-13 1.9239685e-12 + 5.3789872e-13 1.7961688e-12 + 5.1083685e-13 1.6851290e-12 + 4.8683611e-13 1.5877048e-12 + 4.6538233e-13 1.5014983e-12 + 4.4607258e-13 1.4246470e-12 + 4.2858624e-13 1.3556823e-12 + 4.1266487e-13 1.2934296e-12 + 3.9809761e-13 1.2369383e-12 + 3.8471063e-13 1.1854312e-12 + 3.7235923e-13 1.1382648e-12 + 3.6092193e-13 1.0949039e-12 + 3.5029593e-13 1.0548973e-12 + 3.4039361e-13 1.0178638e-12 + 3.3113980e-13 9.8347805e-13 + 3.2246962e-13 9.5146060e-13 + 3.1432673e-13 9.2157105e-13 + 3.0666200e-13 8.9359977e-13 + 2.9943234e-13 8.6736483e-13 + 2.9259979e-13 8.4270618e-13 + 2.8613080e-13 8.1948327e-13 + 2.7999556e-13 7.9757209e-13 + 2.7416751e-13 7.7686234e-13 + 2.6862292e-13 7.5725599e-13 + 2.6334046e-13 7.3866543e-13 + 2.5830097e-13 7.2101217e-13 + 2.5348714e-13 7.0422575e-13 + 2.4888331e-13 6.8824261e-13 + 2.4447526e-13 6.7300527e-13 + 2.4025008e-13 6.5846159e-13 + 2.3619597e-13 6.4456460e-13 + 2.3230216e-13 6.3127092e-13 + 1.1790606e-12 4.6572748e-12 + 1.0156678e-12 3.8874041e-12 + 8.9768059e-13 3.3455543e-12 + 8.0792171e-13 2.9423365e-12 + 7.3701740e-13 2.6299367e-12 + 6.7938801e-13 2.3803888e-12 + 6.3149051e-13 2.1762089e-12 + 5.9095945e-13 2.0058884e-12 + 5.5615102e-13 1.8615333e-12 + 5.2588487e-13 1.7375418e-12 + 4.9928997e-13 1.6298264e-12 + 4.7570858e-13 1.5353324e-12 + 4.5463405e-13 1.4517296e-12 + 4.3566938e-13 1.3772084e-12 + 4.1849880e-13 1.3103429e-12 + 4.0286774e-13 1.2499920e-12 + 3.8856858e-13 1.1952325e-12 + 3.7543018e-13 1.1453095e-12 + 3.6331007e-13 1.0995987e-12 + 3.5208870e-13 1.0575798e-12 + 3.4166487e-13 1.0188151e-12 + 3.3195236e-13 9.8293455e-13 + 3.2287721e-13 9.4962239e-13 + 3.1437557e-13 9.1860733e-13 + 3.0639203e-13 8.8965577e-13 + 2.9887825e-13 8.6256469e-13 + 2.9179185e-13 8.3715718e-13 + 2.8509550e-13 8.1327813e-13 + 2.7875620e-13 7.9079131e-13 + 2.7274465e-13 7.6957603e-13 + 2.6703474e-13 7.4952546e-13 + 2.6160311e-13 7.3054457e-13 + 2.5642883e-13 7.1254826e-13 + 2.5149305e-13 6.9546043e-13 + 2.4677876e-13 6.7921279e-13 + 2.4227057e-13 6.6374356e-13 + 2.3795452e-13 6.4899702e-13 + 2.3381790e-13 6.3492295e-13 + 2.2984914e-13 6.2147523e-13 + 2.2603765e-13 6.0861214e-13 + 1.1569279e-12 4.5162422e-12 + 9.9593174e-13 3.7680787e-12 + 8.7972982e-13 3.2416703e-12 + 7.9136552e-13 2.8500483e-12 + 7.2158857e-13 2.5467053e-12 + 6.6489453e-13 2.3044441e-12 + 6.1778900e-13 2.1062656e-12 + 5.7793954e-13 1.9409816e-12 + 5.4372561e-13 1.8009189e-12 + 5.1398380e-13 1.6806332e-12 + 4.8785576e-13 1.5761530e-12 + 4.6469344e-13 1.4845097e-12 + 4.4399775e-13 1.4034399e-12 + 4.2537770e-13 1.3311859e-12 + 4.0852232e-13 1.2663623e-12 + 3.9318100e-13 1.2078609e-12 + 3.7914935e-13 1.1547856e-12 + 3.6625889e-13 1.1064031e-12 + 3.5436945e-13 1.0621076e-12 + 3.4336335e-13 1.0213936e-12 + 3.3314104e-13 9.8383647e-13 + 3.2361769e-13 9.4907674e-13 + 3.1472054e-13 9.1680814e-13 + 3.0638679e-13 8.8676728e-13 + 2.9856194e-13 8.5872752e-13 + 2.9119847e-13 8.3249179e-13 + 2.8425468e-13 8.0788845e-13 + 2.7769389e-13 7.8476701e-13 + 2.7148366e-13 7.6299523e-13 + 2.6559517e-13 7.4245619e-13 + 2.6000277e-13 7.2304613e-13 + 2.5468351e-13 7.0467271e-13 + 2.4961681e-13 6.8725378e-13 + 2.4478415e-13 6.7071518e-13 + 2.4016883e-13 6.5499086e-13 + 2.3575571e-13 6.4002088e-13 + 2.3153110e-13 6.2575116e-13 + 2.2748250e-13 6.1213286e-13 + 2.2359855e-13 5.9912153e-13 + 2.1986885e-13 5.8667669e-13 + 1.1348463e-12 4.3790675e-12 + 9.7626417e-13 3.6520565e-12 + 8.6185846e-13 3.1406908e-12 + 7.7489598e-13 2.7603641e-12 + 7.0625139e-13 2.4658411e-12 + 6.5049619e-13 2.2306753e-12 + 6.0418511e-13 2.0383399e-12 + 5.6501899e-13 1.8779586e-12 + 5.3140075e-13 1.7420738e-12 + 5.0218407e-13 1.6253949e-12 + 4.7652337e-13 1.5240623e-12 + 4.5378037e-13 1.4351930e-12 + 4.3346360e-13 1.3565871e-12 + 4.1518812e-13 1.2865384e-12 + 3.9864781e-13 1.2237008e-12 + 3.8359600e-13 1.1669984e-12 + 3.6983157e-13 1.1155610e-12 + 3.5718873e-13 1.0686766e-12 + 3.4552958e-13 1.0257572e-12 + 3.3473835e-13 9.8631166e-13 + 3.2471714e-13 9.4992865e-13 + 3.1538250e-13 9.1625860e-13 + 3.0666288e-13 8.8500415e-13 + 2.9849655e-13 8.5591041e-13 + 2.9082991e-13 8.2875676e-13 + 2.8361625e-13 8.0335233e-13 + 2.7681458e-13 7.7953043e-13 + 2.7038886e-13 7.5714521e-13 + 2.6430719e-13 7.3606831e-13 + 2.5854127e-13 7.1618618e-13 + 2.5306589e-13 6.9739836e-13 + 2.4785851e-13 6.7961533e-13 + 2.4289890e-13 6.6275713e-13 + 2.3816888e-13 6.4675211e-13 + 2.3365204e-13 6.3153612e-13 + 2.2933354e-13 6.1705087e-13 + 2.2519989e-13 6.0324433e-13 + 2.2123885e-13 5.9006878e-13 + 2.1743925e-13 5.7748127e-13 + 2.1379089e-13 5.6544250e-13 + 1.1127887e-12 4.2456455e-12 + 9.5664198e-13 3.5392468e-12 + 8.4404632e-13 3.0425370e-12 + 7.5849509e-13 2.6732116e-12 + 6.9098955e-13 2.3872785e-12 + 6.3617808e-13 2.1590217e-12 + 5.9066505e-13 1.9723744e-12 + 5.5218495e-13 1.8167659e-12 + 5.1916440e-13 1.6849471e-12 + 4.9047432e-13 1.5717781e-12 + 4.6528204e-13 1.4735088e-12 + 4.4295915e-13 1.3873379e-12 + 4.2302186e-13 1.3111294e-12 + 4.0509133e-13 1.2432258e-12 + 3.8886632e-13 1.1823200e-12 + 3.7410416e-13 1.1273671e-12 + 3.6060698e-13 1.0775227e-12 + 3.4821173e-13 1.0320951e-12 + 3.3678276e-13 9.9051360e-13 + 3.2620626e-13 9.5230179e-13 + 3.1638594e-13 9.1705972e-13 + 3.0723977e-13 8.8444906e-13 + 2.9869743e-13 8.5418087e-13 + 2.9069821e-13 8.2600734e-13 + 2.8318947e-13 7.9971499e-13 + 2.7612529e-13 7.7511846e-13 + 2.6946540e-13 7.5205597e-13 + 2.6317438e-13 7.3038614e-13 + 2.5722092e-13 7.0998435e-13 + 2.5157720e-13 6.9074045e-13 + 2.4621846e-13 6.7255721e-13 + 2.4112258e-13 6.5534763e-13 + 2.3626968e-13 6.3903413e-13 + 2.3164193e-13 6.2354739e-13 + 2.2722320e-13 6.0882507e-13 + 2.2299892e-13 5.9481094e-13 + 2.1895586e-13 5.8145401e-13 + 2.1508201e-13 5.6870852e-13 + 2.1136640e-13 5.5653257e-13 + 2.0779901e-13 5.4488824e-13 + 1.0907284e-12 4.1158752e-12 + 9.3704242e-13 3.4295613e-12 + 8.2627351e-13 2.9471291e-12 + 7.4214514e-13 2.5885203e-12 + 6.7578705e-13 2.3109521e-12 + 6.2192556e-13 2.0894228e-12 + 5.7721531e-13 1.9083139e-12 + 5.3942484e-13 1.7573508e-12 + 5.0700475e-13 1.6294901e-12 + 4.7884344e-13 1.5197369e-12 + 4.5412127e-13 1.4244480e-12 + 4.3221980e-13 1.3409028e-12 + 4.1266303e-13 1.2670265e-12 + 3.9507825e-13 1.2012094e-12 + 3.7916917e-13 1.1421825e-12 + 3.6469713e-13 1.0889313e-12 + 3.5146756e-13 1.0406359e-12 + 3.3932013e-13 9.9662497e-13 + 3.2812152e-13 9.5634417e-13 + 3.1775982e-13 9.1933181e-13 + 3.0814041e-13 8.8519938e-13 + 2.9918269e-13 8.5361835e-13 + 2.9081753e-13 8.2430847e-13 + 2.8298532e-13 7.9702964e-13 + 2.7563433e-13 7.7157434e-13 + 2.6871945e-13 7.4776292e-13 + 2.6220114e-13 7.2543838e-13 + 2.5604462e-13 7.0446364e-13 + 2.5021912e-13 6.8471780e-13 + 2.4469736e-13 6.6609408e-13 + 2.3945501e-13 6.4849815e-13 + 2.3447036e-13 6.3184562e-13 + 2.2972392e-13 6.1606143e-13 + 2.2519815e-13 6.0107805e-13 + 2.2087725e-13 5.8683530e-13 + 2.1674691e-13 5.7327846e-13 + 2.1279416e-13 5.6035852e-13 + 2.0900720e-13 5.4803055e-13 + 2.0537528e-13 5.3625421e-13 + 2.0188858e-13 5.2499279e-13 + 1.0686393e-12 3.9896538e-12 + 9.1744348e-13 3.3229129e-12 + 8.0852086e-13 2.8543915e-12 + 7.2582909e-13 2.5062203e-12 + 6.6062852e-13 2.2367987e-12 + 6.0772458e-13 2.0218206e-12 + 5.6382292e-13 1.8461037e-12 + 5.2672658e-13 1.6996629e-12 + 4.9491051e-13 1.5756542e-12 + 4.6728078e-13 1.4692248e-12 + 4.4303099e-13 1.3768362e-12 + 4.2155278e-13 1.2958457e-12 + 4.0237802e-13 1.2242385e-12 + 3.8514022e-13 1.1604509e-12 + 3.6954807e-13 1.1032514e-12 + 3.5536696e-13 1.0516556e-12 + 3.4240564e-13 1.0048664e-12 + 3.3050657e-13 9.6223296e-13 + 3.1953871e-13 9.2321719e-13 + 3.0939213e-13 8.8737090e-13 + 2.9997387e-13 8.5431705e-13 + 2.9120475e-13 8.2373697e-13 + 2.8301689e-13 7.9535876e-13 + 2.7535174e-13 7.6894942e-13 + 2.6815851e-13 7.4430761e-13 + 2.6139290e-13 7.2125909e-13 + 2.5501612e-13 6.9965182e-13 + 2.4899401e-13 6.7935240e-13 + 2.4329638e-13 6.6024397e-13 + 2.3789644e-13 6.4222286e-13 + 2.3277035e-13 6.2519742e-13 + 2.2789678e-13 6.0908600e-13 + 2.2325661e-13 5.9381582e-13 + 2.1883266e-13 5.7932155e-13 + 2.1460940e-13 5.6554449e-13 + 2.1057280e-13 5.5243195e-13 + 2.0671016e-13 5.3993615e-13 + 2.0300988e-13 5.2801371e-13 + 1.9946144e-13 5.1662569e-13 + 1.9605521e-13 5.0573601e-13 + 1.0464968e-12 3.8668845e-12 + 8.9782445e-13 3.2192175e-12 + 7.9077036e-13 2.7642484e-12 + 7.0953097e-13 2.4262446e-12 + 6.4549957e-13 2.1647574e-12 + 5.9356202e-13 1.9561578e-12 + 5.5047577e-13 1.7856903e-12 + 5.1407894e-13 1.6436517e-12 + 4.8287116e-13 1.5233922e-12 + 4.5577647e-13 1.4201978e-12 + 4.3200187e-13 1.3306312e-12 + 4.1094925e-13 1.2521263e-12 + 3.9215844e-13 1.1827262e-12 + 3.7526921e-13 1.1209134e-12 + 3.5999534e-13 1.0654916e-12 + 3.4610628e-13 1.0155052e-12 + 3.3341415e-13 9.7018092e-13 + 3.2176420e-13 9.2888729e-13 + 3.1102774e-13 8.9110141e-13 + 3.0109681e-13 8.5638867e-13 + 2.9188013e-13 8.2438350e-13 + 2.8329996e-13 7.9477640e-13 + 2.7528968e-13 7.6730385e-13 + 2.6779180e-13 7.4173945e-13 + 2.6075649e-13 7.1788842e-13 + 2.5414028e-13 6.9558134e-13 + 2.4790510e-13 6.7467090e-13 + 2.4201744e-13 6.5502774e-13 + 2.3644769e-13 6.3653851e-13 + 2.3116958e-13 6.1910285e-13 + 2.2615970e-13 6.0263168e-13 + 2.2139716e-13 5.8704604e-13 + 2.1686319e-13 5.7227517e-13 + 2.1254096e-13 5.5825590e-13 + 2.0841524e-13 5.4493122e-13 + 2.0447228e-13 5.3225014e-13 + 2.0069961e-13 5.2016635e-13 + 1.9708589e-13 5.0863781e-13 + 1.9362078e-13 4.9762653e-13 + 1.9029486e-13 4.8709798e-13 + 1.0242787e-12 3.7474710e-12 + 8.7816650e-13 3.1183906e-12 + 7.7300569e-13 2.6766253e-12 + 6.9323635e-13 2.3485265e-12 + 6.3038722e-13 2.0947667e-12 + 5.7942604e-13 1.8923785e-12 + 5.3716297e-13 1.7270219e-12 + 5.0147180e-13 1.5892684e-12 + 4.7087726e-13 1.4726583e-12 + 4.4432164e-13 1.3726122e-12 + 4.2102557e-13 1.2857917e-12 + 4.0040131e-13 1.2097051e-12 + 3.8199676e-13 1.1424525e-12 + 3.6545808e-13 1.0825605e-12 + 3.5050413e-13 1.0288677e-12 + 3.3690852e-13 9.8044668e-13 + 3.2448677e-13 9.3654748e-13 + 3.1308696e-13 8.9655616e-13 + 3.0258275e-13 8.5996641e-13 + 2.9286819e-13 8.2635588e-13 + 2.8385370e-13 7.9537013e-13 + 2.7546300e-13 7.6670894e-13 + 2.6763072e-13 7.4011649e-13 + 2.6030047e-13 7.1537351e-13 + 2.5342338e-13 6.9229082e-13 + 2.4695681e-13 6.7070437e-13 + 2.4086343e-13 6.5047097e-13 + 2.3511038e-13 6.3146564e-13 + 2.2966863e-13 6.1357819e-13 + 2.2451242e-13 5.9671121e-13 + 2.1961883e-13 5.8077856e-13 + 2.1496734e-13 5.6570361e-13 + 2.1053960e-13 5.5141770e-13 + 2.0631907e-13 5.3785983e-13 + 2.0229087e-13 5.2497460e-13 + 1.9844150e-13 5.1271264e-13 + 1.9475875e-13 5.0102877e-13 + 1.9123152e-13 4.8988274e-13 + 1.8784967e-13 4.7923759e-13 + 1.8460396e-13 4.6905968e-13 + 1.0019655e-12 3.6313187e-12 + 8.5845331e-13 3.0203527e-12 + 7.5521280e-13 2.5914527e-12 + 6.7693284e-13 2.2730014e-12 + 6.1528036e-13 2.0267674e-12 + 5.6530655e-13 1.8304281e-12 + 5.2387525e-13 1.6700476e-12 + 4.8889657e-13 1.5364659e-12 + 4.5892081e-13 1.4234076e-12 + 4.3290881e-13 1.3264253e-12 + 4.1009504e-13 1.2422773e-12 + 3.8990230e-13 1.1685437e-12 + 3.7188668e-13 1.1033805e-12 + 3.5570080e-13 1.0453568e-12 + 3.4106869e-13 9.9334606e-13 + 3.2776818e-13 9.4644780e-13 + 3.1561822e-13 9.0393408e-13 + 3.0446974e-13 8.6520951e-13 + 2.9419882e-13 8.2978248e-13 + 2.8470152e-13 7.9724376e-13 + 2.7588997e-13 7.6724890e-13 + 2.6768939e-13 7.3950732e-13 + 2.6003568e-13 7.1377047e-13 + 2.5287356e-13 6.8982585e-13 + 2.4615510e-13 6.6748999e-13 + 2.3983852e-13 6.4660369e-13 + 2.3388724e-13 6.2702841e-13 + 2.2826905e-13 6.0864275e-13 + 2.2295551e-13 5.9133981e-13 + 2.1792138e-13 5.7502536e-13 + 2.1314420e-13 5.5961591e-13 + 2.0860389e-13 5.4503709e-13 + 2.0428245e-13 5.3122250e-13 + 2.0016370e-13 5.1811267e-13 + 1.9623304e-13 5.0565428e-13 + 1.9247729e-13 4.9379926e-13 + 1.8888447e-13 4.8250408e-13 + 1.8544370e-13 4.7172943e-13 + 1.8214507e-13 4.6143965e-13 + 1.7897954e-13 4.5160223e-13 + 9.7954133e-13 3.5183358e-12 + 8.3867184e-13 2.9250235e-12 + 7.3738051e-13 2.5086583e-12 + 6.6061065e-13 2.1996063e-12 + 6.0017026e-13 1.9607028e-12 + 5.5119563e-13 1.7702535e-12 + 5.1060536e-13 1.6147182e-12 + 4.7634658e-13 1.4851978e-12 + 4.4699561e-13 1.3755966e-12 + 4.2153218e-13 1.2815963e-12 + 3.9920483e-13 1.2000488e-12 + 3.7944708e-13 1.1286049e-12 + 3.6182333e-13 1.0654742e-12 + 3.4599275e-13 1.0092685e-12 + 3.3168463e-13 9.5889373e-13 + 3.1868103e-13 9.1347641e-13 + 3.0680443e-13 8.7231022e-13 + 2.9590866e-13 8.3481741e-13 + 2.8587219e-13 8.0052122e-13 + 2.7659316e-13 7.6902438e-13 + 2.6798545e-13 7.3999309e-13 + 2.5997576e-13 7.1314527e-13 + 2.5250128e-13 6.8824021e-13 + 2.4550785e-13 6.6507143e-13 + 2.3894853e-13 6.4346144e-13 + 2.3278238e-13 6.2325565e-13 + 2.2697358e-13 6.0431979e-13 + 2.2149058e-13 5.8653626e-13 + 2.1630553e-13 5.6980136e-13 + 2.1139372e-13 5.5402381e-13 + 2.0673316e-13 5.3912273e-13 + 2.0230419e-13 5.2502581e-13 + 1.9808919e-13 5.1166889e-13 + 1.9407232e-13 4.9899448e-13 + 1.9023931e-13 4.8695059e-13 + 1.8657722e-13 4.7549089e-13 + 1.8307437e-13 4.6457305e-13 + 1.7972009e-13 4.5415917e-13 + 1.7650470e-13 4.4421454e-13 + 1.7341934e-13 4.3470773e-13 + 9.5699518e-13 3.4084329e-12 + 8.1881297e-13 2.8323265e-12 + 7.1950111e-13 2.4281755e-12 + 6.4426311e-13 2.1282796e-12 + 5.8505101e-13 1.8965163e-12 + 5.3708797e-13 1.7118032e-12 + 4.9734848e-13 1.5609853e-12 + 4.6381740e-13 1.4354187e-12 + 4.3509757e-13 1.3291831e-12 + 4.1018796e-13 1.2380850e-12 + 3.8835142e-13 1.1590683e-12 + 3.6903235e-13 1.0898523e-12 + 3.5180358e-13 1.0286992e-12 + 3.3633097e-13 9.7426186e-13 + 3.2234911e-13 9.2547880e-13 + 3.0964440e-13 8.8150196e-13 + 2.9804285e-13 8.4164627e-13 + 2.8740123e-13 8.0535133e-13 + 2.7760049e-13 7.7215462e-13 + 2.6854084e-13 7.4167087e-13 + 2.6013792e-13 7.1357638e-13 + 2.5231996e-13 6.8759749e-13 + 2.4502545e-13 6.6350081e-13 + 2.3820136e-13 6.4108642e-13 + 2.3180174e-13 6.2018175e-13 + 2.2578651e-13 6.0063729e-13 + 2.2012061e-13 5.8232300e-13 + 2.1477318e-13 5.6512436e-13 + 2.0971694e-13 5.4894147e-13 + 2.0492773e-13 5.3368562e-13 + 2.0038403e-13 5.1927816e-13 + 1.9606660e-13 5.0564954e-13 + 1.9195821e-13 4.9273722e-13 + 1.8804337e-13 4.8048565e-13 + 1.8430811e-13 4.6884446e-13 + 1.8073979e-13 4.5776866e-13 + 1.7732697e-13 4.4721735e-13 + 1.7405924e-13 4.3715380e-13 + 1.7092712e-13 4.2754431e-13 + 1.6792194e-13 4.1835851e-13 + 9.3432120e-13 3.3015235e-12 + 7.9887218e-13 2.7421874e-12 + 7.0157096e-13 2.3499382e-12 + 6.2788716e-13 2.0589631e-12 + 5.6991998e-13 1.8341545e-12 + 5.2298130e-13 1.6550277e-12 + 4.8410259e-13 1.5088031e-12 + 4.5130723e-13 1.3870855e-12 + 4.2322509e-13 1.2841259e-12 + 3.9887470e-13 1.1958528e-12 + 3.7753347e-13 1.1192991e-12 + 3.5865687e-13 1.0522510e-12 + 3.4182631e-13 9.9302221e-13 + 3.2671440e-13 9.4030537e-13 + 3.1306114e-13 8.9307028e-13 + 3.0065732e-13 8.5049477e-13 + 2.8933256e-13 8.1191362e-13 + 2.7894660e-13 7.7678353e-13 + 2.6938290e-13 7.4465602e-13 + 2.6054376e-13 7.1515727e-13 + 2.5234664e-13 6.8797353e-13 + 2.4472128e-13 6.6283925e-13 + 2.3760750e-13 6.3952843e-13 + 2.3095342e-13 6.1784717e-13 + 2.2471408e-13 5.9762816e-13 + 2.1885029e-13 5.7872650e-13 + 2.1332774e-13 5.6101599e-13 + 2.0811626e-13 5.4438594e-13 + 2.0318918e-13 5.2873938e-13 + 1.9852286e-13 5.1399028e-13 + 1.9409626e-13 5.0006268e-13 + 1.8989059e-13 4.8688887e-13 + 1.8588899e-13 4.7440849e-13 + 1.8207633e-13 4.6256761e-13 + 1.7843894e-13 4.5131758e-13 + 1.7496449e-13 4.4061467e-13 + 1.7164178e-13 4.3041935e-13 + 1.6846065e-13 4.2069595e-13 + 1.6541183e-13 4.1141201e-13 + 1.6248686e-13 4.0253791e-13 + 9.1151966e-13 3.1975242e-12 + 7.7885012e-13 2.6545337e-12 + 6.8359095e-13 2.2738831e-12 + 6.1148380e-13 1.9915984e-12 + 5.5477823e-13 1.7735646e-12 + 5.0887668e-13 1.5998782e-12 + 4.7086880e-13 1.4581268e-12 + 4.3881719e-13 1.3401568e-12 + 4.1137927e-13 1.2403862e-12 + 3.8759350e-13 1.1548624e-12 + 3.6675208e-13 1.0807058e-12 + 3.4832172e-13 1.0157673e-12 + 3.3189256e-13 9.5841118e-13 + 3.1714405e-13 9.0736796e-13 + 3.0382171e-13 8.6163899e-13 + 2.9172078e-13 8.2042613e-13 + 2.8067451e-13 7.8308465e-13 + 2.7054570e-13 7.4908752e-13 + 2.6122032e-13 7.1799959e-13 + 2.5260281e-13 6.8945857e-13 + 2.4461246e-13 6.6316018e-13 + 2.3718055e-13 6.3884715e-13 + 2.3024824e-13 6.1630023e-13 + 2.2376482e-13 5.9533150e-13 + 2.1768633e-13 5.7577901e-13 + 2.1197447e-13 5.5750192e-13 + 2.0659571e-13 5.4037829e-13 + 2.0152055e-13 5.2430080e-13 + 1.9672294e-13 5.0917528e-13 + 1.9217979e-13 4.9491851e-13 + 1.8787054e-13 4.8145710e-13 + 1.8377682e-13 4.6872517e-13 + 1.7988217e-13 4.5666440e-13 + 1.7617182e-13 4.4522252e-13 + 1.7263241e-13 4.3435228e-13 + 1.6925191e-13 4.2401153e-13 + 1.6601937e-13 4.1416191e-13 + 1.6292488e-13 4.0476890e-13 + 1.5995938e-13 3.9580100e-13 + 1.5711463e-13 3.8722963e-13 diff --git a/class/hyrec/Makefile b/class/hyrec/Makefile new file mode 100644 index 00000000..48384e6c --- /dev/null +++ b/class/hyrec/Makefile @@ -0,0 +1,19 @@ +CC = gcc +AR = ar rv +CCFLAG = -O3 +LDFLAG = -O3 + +%.o: %.c + $(CC) $(CCFLAG) -c $*.c -o $*.o + +HYREC_SRC = hyrectools.o helium.o hydrogen.o history.o +HYREC_EXE = hyrec.o + +clean: + rm *.o + +hyrec: $(HYREC_SRC) $(HYREC_EXE) + $(CC) $(LDFLAG) -o hyrec $(HYREC_SRC) $(HYREC_EXE) -lm + +libhyrec.a: $(HYREC_SRC) + $(AR) $@ $(HYREC_SRC) diff --git a/class/hyrec/R_inf.dat b/class/hyrec/R_inf.dat new file mode 100644 index 00000000..220d432d --- /dev/null +++ b/class/hyrec/R_inf.dat @@ -0,0 +1,100 @@ + 1.7280364e-270 + 6.6039762e-258 + 6.7635594e-246 + 1.9708577e-234 + 1.7300431e-223 + 4.8313008e-213 + 4.5215162e-203 + 1.4903791e-193 + 1.8142665e-184 + 8.5341394e-176 + 1.6197268e-167 + 1.2925969e-159 + 4.5115458e-152 + 7.1507716e-145 + 5.3349221e-138 + 1.9387643e-131 + 3.5460250e-125 + 3.3676825e-119 + 1.7109205e-113 + 4.7839499e-108 + 7.5646529e-103 + 6.9420654e-98 + 3.7898850e-93 + 1.2602397e-88 + 2.6106959e-84 + 3.4425222e-80 + 2.9493845e-76 + 1.6742940e-72 + 6.4165620e-69 + 1.6900470e-65 + 3.1118869e-62 + 4.0714008e-59 + 3.8441840e-56 + 2.6585412e-53 + 1.3658643e-50 + 5.2840064e-48 + 1.5592320e-45 + 3.5530007e-43 + 6.3258596e-41 + 8.8992663e-39 + 9.9988163e-37 + 9.0644363e-35 + 6.6952578e-33 + 4.0669811e-31 + 2.0498201e-29 + 8.6453638e-28 + 3.0760453e-26 + 9.3047039e-25 + 2.4105662e-23 + 5.3864587e-22 + 1.0451486e-20 + 1.7722856e-19 + 2.6426216e-18 + 3.4851890e-17 + 4.0882520e-16 + 4.2883440e-15 + 4.0429523e-14 + 3.4425611e-13 + 2.6598731e-12 + 1.8731305e-11 + 1.2073920e-10 + 7.1526105e-10 + 3.9093178e-09 + 1.9786383e-08 + 9.3067478e-08 + 4.0819149e-07 + 1.6748158e-06 + 6.4483254e-06 + 2.3365930e-05 + 7.9909245e-05 + 0.00025861567 + 0.00079408899 + 0.0023190028 + 0.0064559897 + 0.017171875 + 0.043730414 + 0.10683990 + 0.25089798 + 0.56736529 + 1.2375935 + 2.6082657 + 5.3193132 + 10.512952 + 20.163234 + 37.577705 + 68.135235 + 120.33502 + 207.23852 + 348.38577 + 572.25626 + 919.32050 + 1445.6878 + 2227.3000 + 3364.5516 + 4987.1358 + 7258.8380 + 10381.923 + 14600.711 + 20203.910 + 27525.291 diff --git a/class/hyrec/helium.c b/class/hyrec/helium.c new file mode 100644 index 00000000..1153e61f --- /dev/null +++ b/class/hyrec/helium.c @@ -0,0 +1,185 @@ +/*************************************************************************************************/ +/* HYREC: Hydrogen and Helium Recombination Code */ +/* Written by Yacine Ali-Haimoud and Chris Hirata (Caltech) */ +/* */ +/* helium.c: all functions related to Hydrogen recombination */ +/* */ +/* Units used in these modules: m, s, Kelvin */ +/* */ +/* Version: January 2011 */ +/* Revision history: */ +/* - written November 2010 */ +/* - January 2011: added input variables so the value of xHeIII */ +/* and post-Saha corrections can be monitored from external routines */ +/*************************************************************************************************/ + + +#include +#include +#include + +/************************************************************************************************ +Gets xe in He II + III equilibrium +*************************************************************************************************/ + +double rec_sahaHeII(double nH0, double Tr0, double fHe, double z, double *xHeIII) { + + double Tr, nH, ainv, s; + + /* Current conditions */ + Tr = Tr0*(ainv=1+z); + nH = nH0*ainv*ainv*ainv; + + /* Obtain Saha ratio, xe*xHeIII/xHeII + * prefactor = (2*pi*m*k/h^2)^1.5 */ + + s = 2.414194e21*Tr*sqrt(Tr)*exp(-631462.7/Tr)/nH; + + *xHeIII = 2.*s*fHe/(1.+s+fHe)/(1.+sqrt(1.+4.*s*fHe/(1.+s+fHe)/(1.+s+fHe))); + + return(1. + fHe + *xHeIII); +} + +/************************************************************************************** +Gets xe in He I + II equilibrium +***************************************************************************************/ + +double rec_sahaHeI(double nH0, double Tr0, double fHe, double z) { + + double Tr, nH, ainv, s, q; + + /* Current conditions */ + Tr = Tr0*(ainv=1+z); + nH = nH0*ainv*ainv*ainv; + + /* Obtain Saha ratio, xe*xHeII/xHeI + * prefactor = (2*pi*m*k/h^2)^1.5 */ + + s = 2.414194e21*Tr*sqrt(Tr)*exp(-285325./Tr)/nH * 4.; + + q = 2.*s*fHe/(1.+s)/(1.+sqrt(1.+4.*s*fHe/(1.+s)/(1.+s))); /* q = xHeII */ + + return(1.+q); +} + +/*************************************************************************************** +Saha equilibrium for Hydrogen, needed in the evolution equation for helium +***************************************************************************************/ + +double rec_saha_xe_H(double nH0, double T0, double z) { + + double xeSaha, s, Tr, nH, ainv; + + Tr = T0 * (ainv=1.+z); /* current radiation temperature */ + nH = nH0*ainv*ainv*ainv; + + /* Obtain Saha ratio, xe^2/(1-xe) + * Constants: + * reduced mass Rydberg = 157801.37882 Kelvin (no relativistic corrections) + * prefactor = (2*pi*m*k/h^2)^1.5 */ + + s = 2.4127161187130e21*Tr*sqrt(Tr)*exp(-157801.37882/Tr)/nH; + + xeSaha = 2./(1.+sqrt(1.+4./s)); + return(xeSaha); +} + +/************************************************************************************* + He II->I recombination rate evolution equation. + Incorporates 2(1)P-->1(1)S escape, with H continuum opacity + 2(1)S-->1(1)S 2 photon decay + 2(3)P-->1(1)S Sobolev + Assumes Compton temperature equilibrium, no Thomson opacity. +**************************************************************************************/ + +double rec_helium_dxedt(double xe, double nH0, double Tr0, double fHe, double H, double z) { + double Tr, nH, ainv, s, s0; + double xHeI, xHeII, y2s, y2p, xHII; + double etacinv, g2pinc, dnuline, tau2p, pesc, tauc; + double xdown, xup, ydown, enh; + + /* Current conditions */ + Tr = Tr0*(ainv=1+z); + nH = nH0*ainv*ainv*ainv; + + /* Saha abundance ratio, and ratio for zero ionization potential */ + s0 = 2.414194e21*Tr*sqrt(Tr)/nH * 4.; + s = s0 * exp(-285325./Tr); + + /* Abundances of excited levels. y is defined as x_i = y_i * xe * xHeII */ + xHII = rec_saha_xe_H(nH0,Tr0,z); + xHeII = xe - xHII; + xHeI = fHe - xHeII; + y2s = exp(46090./Tr)/s0; + y2p = exp(39101./Tr)/s0 * 3.; + + /* Continuum opacity = H/nH^2 * T^3/2 * exp(-chi/kT) * (2 pi m_e k/h^2)^{3/2} nu/(sigma c) */ + /* coef. is 2.205e50 => log = 115.920 */ + etacinv = H/(nH*nH*xe) * Tr*sqrt(Tr) * exp(115.920-157801.37882/Tr); + + /* Incoherent width of 2(1)P incl. ->2s, 3s, 3d, 4s, 4d, 5s, 5d */ + g2pinc = 1.976e6 / (1.-exp(-6989./Tr)) + + 6.03e6 / (exp(19754./Tr)-1.) + + 1.06e8 / (exp(21539./Tr)-1.) + + 2.18e6 / (exp(28496./Tr)-1.) + + 3.37e7 / (exp(29224./Tr)-1.) + + 1.04e6 / (exp(32414./Tr)-1.) + + 1.51e7 / (exp(32781./Tr)-1.); + + + /* Optical depth, escape prob in x2p */ + tau2p = 4.277e-14 * nH/H * xHeI; + dnuline = g2pinc * tau2p / (4.*M_PI*M_PI); + tauc = dnuline/etacinv; + enh = sqrt(1.+M_PI*M_PI*tauc) + 7.74*tauc/(1.+70.*tauc); + pesc = enh / tau2p; + + + /* Effective increase in escape probability via intercombination line + * ratio of optical depth to allowed line = 1.023e-7 + * 1-e^-tau23 = absorption prob. in intercom line + * e^[(E21P-E23P)/T] - e^[-(E21P-E23P)*eta_c] = step in intercom line + * relative to N_line in 21P + * divide by tau2p to get effective increase in escape prob. + * factor of 0.964525 is phase space factor for intercom vs allowed line -- (584/591)^3 + */ + pesc = pesc + (1.-exp(-1.023e-7*tau2p))*(0.964525*exp(2947./Tr)-enh*exp(-6.14e13/etacinv))/tau2p; + + /* Net decay rate */ + ydown = 50.94*y2s + 1.7989e9*y2p*pesc; + + + /* Excitation via detailed balance */ + xdown = ydown * xHeII * xe; + xup = ydown * xHeI * s; + + /* Return recombination rate, including derivative of hydrogen Saha */ + return(xup-xdown + H*(1.+z)*(rec_saha_xe_H(nH0,Tr0,z-0.5)-rec_saha_xe_H(nH0,Tr0,z+0.5)) ); +} + +/****************************************************************************************************** +Post-Saha expansion for beginning of Helium II -> Helium I +*******************************************************************************************************/ + +double xe_PostSahaHe(double nH0, double Tr0, double fHe, double H, double z, double *Delta_xe){ + + double Tr, nH, s, xeSaha, dxeSahadt, Dxe, DxedotDxe, ainv; + + Tr = Tr0 * (ainv=1.+z); /* current radiation temperature */ + nH = nH0*ainv*ainv*ainv; + + s = 2.414194e21*Tr*sqrt(Tr)*exp(-285325./Tr)/nH * 4.; + xeSaha = rec_sahaHeI(nH0, Tr0, fHe, z); + dxeSahadt = - xeSaha*(xeSaha-1.)/(2.*xeSaha +s-1.) * (285325./Tr - 1.5) * H; /* analytic derivative of xeSaha */ + + Dxe = 0.01 * (1.+fHe-xeSaha); + DxedotDxe = (rec_helium_dxedt(xeSaha + Dxe, nH0, Tr0, fHe, H, z) + - rec_helium_dxedt(xeSaha - Dxe, nH0, Tr0, fHe, H, z))/2./Dxe; + + *Delta_xe = dxeSahadt/DxedotDxe; + + return xeSaha + *Delta_xe; + +} + +/********************************************************************************************************/ diff --git a/class/hyrec/helium.h b/class/hyrec/helium.h new file mode 100644 index 00000000..906fe159 --- /dev/null +++ b/class/hyrec/helium.h @@ -0,0 +1,14 @@ +/*************************************************************************************************/ +/* HYREC: Hydrogen and Helium Recombination Code */ +/* Written by Yacine Ali-Haimoud and Chris Hirata (Caltech) */ +/* */ +/* helium.h: all functions related to helium recombination */ +/* */ +/* Version: January 2011 (first released November 2010) */ +/*************************************************************************************************/ + +double rec_sahaHeII(double nH0, double Tr0, double fHe, double z, double *xHeIII); +double rec_sahaHeI(double nH0, double Tr0, double fHe, double z); +double rec_helium_dxedt(double xe, double nH0, double Tr0, double fHe, double H, double z); +double rec_saha_xe_H(double nH0, double T0, double z); +double xe_PostSahaHe(double nH0, double Tr0, double fHe, double H, double z, double *Delta_xe); diff --git a/class/hyrec/history.c b/class/hyrec/history.c new file mode 100644 index 00000000..eb85692a --- /dev/null +++ b/class/hyrec/history.c @@ -0,0 +1,469 @@ +/*************************************************************************************************/ +/* HYREC: Hydrogen and Helium Recombination Code */ +/* Written by Yacine Ali-Haimoud and Chris Hirata (Caltech) */ +/* */ +/* history.c: compute reionization history */ +/* */ +/* Version: January 2011 */ +/* Revision history: */ +/* - written November 2010 */ +/* - January 2011: changed various switches (notably for post-Saha expansions) */ +/* so that they remain valid for arbitrary cosmologies */ +/*************************************************************************************************/ + +#include +#include +#include +#include + +#include "hyrectools.h" +#include "helium.h" +#include "hydrogen.h" +#include "history.h" + +/************************************************************************************************* +Cosmological parameters Input/Output +*************************************************************************************************/ + +void rec_get_cosmoparam(FILE *fin, FILE *fout, REC_COSMOPARAMS *param) { + int fscanf_result; + + fscanf_result = 0; + /* Cosmology */ + if (fout!=NULL && PROMPT==1) fprintf(fout, "Enter CMB temperature today [Kelvin]: "); + fscanf_result += fscanf(fin, "%lg", &(param->T0)); + if (fout!=NULL && PROMPT==1) fprintf(fout, "Enter baryon density, omega_bh2: "); + fscanf_result += fscanf(fin, "%lg", &(param->obh2)); + if (fout!=NULL && PROMPT==1) fprintf(fout, "Enter total matter (CDM+baryons) density, omega_mh2: "); + fscanf_result += fscanf(fin, "%lg", &(param->omh2)); + if (fout!=NULL && PROMPT==1) fprintf(fout, "Enter curvature, omega_kh2: "); + fscanf_result += fscanf(fin, "%lg", &(param->okh2)); + if (fout!=NULL && PROMPT==1) fprintf(fout, "Enter dark energy density, omega_deh2: "); + fscanf_result += fscanf(fin, "%lg", &(param->odeh2)); + if (fout!=NULL && PROMPT==1) fprintf(fout, "Enter dark energy equation of state parameters, w wa: "); + fscanf_result += fscanf(fin, "%lg %lg", &(param->w0), &(param->wa)); + if (fout!=NULL && PROMPT==1) fprintf(fout, "Enter primordial helium mass fraction, Y: "); + fscanf_result += fscanf(fin, "%lg", &(param->Y)); + if (fout!=NULL && PROMPT==1) fprintf(fout, "Enter effective number of neutrino species, N_nu_eff: "); + fscanf_result += fscanf(fin, "%lg", &(param->Nnueff)); + if (fscanf_result!=9){printf("Hyrec Warning :: Failed to read cosmological parameters");} + + param->nH0 = 11.223846333047*param->obh2*(1.-param->Y); /* number density of hudrogen today in m-3 */ + param->fHe = param->Y/(1-param->Y)/3.97153; /* abundance of helium by number */ + + + /* Redshift range */ + param->zstart = 8000.; + param->zend = 0.; + param->dlna = 8.49e-5; + param->nz = (long) floor(2+log((1.+param->zstart)/(1.+param->zend))/param->dlna); + + if (fout!=NULL && PROMPT==1) fprintf(fout, "\n"); +} + +/************************************************************************************* +Hubble expansion parameter in sec^-1 +*************************************************************************************/ + +double rec_HubbleConstant(REC_COSMOPARAMS *param, double z) { + + int j; + double rho, rho_i[5], ainv; + double ogh2; + + ainv = 1.+z; /* inverse scale factor */ + + /* Matter */ + rho_i[0] = param->omh2 *ainv*ainv*ainv; + + /* Curvature */ + rho_i[1] = param->okh2 *ainv*ainv; + + /* Dark energy */ + rho_i[2] = param->odeh2 * pow(ainv, 3*(1+param->w0)) * exp(3*param->wa* (log(ainv)-1.+1./ainv)); + + /* Get radiation density. + * Coefficient based on 1 AU = 1.49597870691e11 m (JPL SSD) */ + ogh2 = 4.48162687719e-7 * param->T0 * param->T0 * param->T0 * param->T0; + rho_i[3] = ogh2 *ainv*ainv*ainv*ainv; + + /* Neutrino density -- scaled from photons assuming lower temperature */ + rho_i[4] = 0.227107317660239 * rho_i[3] * param->Nnueff; + + /* Total density, including curvature contribution */ + rho = 0.; for(j=0; j<5; j++) rho += rho_i[j]; + + /* Conversion to Hubble rate */ + return( 3.2407792896393e-18 * sqrt(rho) ); +} + +/***************************************************************************************** +Matter temperature -- 1st order steady state, from Hirata 2008 +******************************************************************************************/ + +double rec_Tmss(double xe, double Tr, double H, double fHe, double nH, double energy_rate) { + + double chi_heat; + + //chi_heat = (1.+2.*xe)/3.; // old approximation from Chen and Kamionkowski + + // coefficient as revised by Galli et al. 2013 (in fact it is a fit by Vivian Poulin of columns 1 and 2 in Table V of Galli et al. 2013) + if (xe < 1.) { + chi_heat = 0.996857*(1.-pow(1.-pow(xe,0.300134),1.51035)); + if (chi_heat > 1.) chi_heat = 1.; + } + else + chi_heat = 1.; + + return Tr/(1.+H/4.91466895548409e-22/Tr/Tr/Tr/Tr*(1.+xe+fHe)/xe) + +2./3./kBoltz*chi_heat/nH*energy_rate/(4.91466895548409e-22*pow(Tr,4)*xe); + + /* Coefficient = 8 sigma_T a_r / (3 m_e c) */ +} + +/****************************************************************************************** +Matter temperature evolution derivative +******************************************************************************************/ + +double rec_dTmdlna(double xe, double Tm, double Tr, double H, double fHe, double nH, double energy_rate) { + + double chi_heat; + + //chi_heat = (1.+2.*xe)/3.; // old approximation from Chen and Kamionkowski + + // coefficient as revised by Galli et al. 2013 (in fact it is a fit by Vivian Poulin of columns 1 and 2 in Table V of Galli et al. 2013) + if (xe < 1.) { + chi_heat = 0.996857*(1.-pow(1.-pow(xe,0.300134),1.51035)); + if (chi_heat > 1.) chi_heat = 1.; + } + else + chi_heat = 1.; + + return -2.*Tm + 4.91466895548409e-22*Tr*Tr*Tr*Tr*xe/(1.+xe+fHe)*(Tr-Tm)/H + +2./3./kBoltz*chi_heat/nH*energy_rate/(1.+xe+fHe)/H; +} + +/********************************************************************************************** +Second order integrator using derivative from previous time steps +Evolves xe only, assumes Tm is given by the steady-state solution +***********************************************************************************************/ + +void rec_get_xe_next1(REC_COSMOPARAMS *param, double z1, double xe_in, double *xe_out, + HRATEEFF *rate_table, int func_select, unsigned iz, TWO_PHOTON_PARAMS *twog_params, + double **logfminus_hist, double *logfminus_Ly_hist[], + double *z_prev, double *dxedlna_prev, double *z_prev2, double *dxedlna_prev2) { + + double dxedlna, Tr, nH, ainv, H, Tm; + + Tr = param->T0 * (ainv=1.+z1); + nH = param->nH0 * ainv*ainv*ainv; + H = rec_HubbleConstant(param, z1); + Tm = rec_Tmss(xe_in, Tr, H, param->fHe, nH*1e-6, energy_injection_rate(param,z1)); + + #if (MODEL == PEEBLES) + dxedlna = func_select==FUNC_HEI ? rec_helium_dxedt(xe_in, param->nH0, param->T0, param->fHe, H, z1)/H: + rec_HPeebles_dxedlna(xe_in, nH*1e-6, H, Tm*kBoltz, Tr*kBoltz, energy_injection_rate(param,z1)); + #elif (MODEL == RECFAST) + dxedlna = func_select==FUNC_HEI ? rec_helium_dxedt(xe_in, param->nH0, param->T0, param->fHe, H, z1)/H: + rec_HRecFast_dxedlna(xe_in, nH*1e-6, H, Tm*kBoltz, Tr*kBoltz, energy_injection_rate(param,z1)); + #elif (MODEL == EMLA2s2p) + dxedlna = func_select==FUNC_HEI ? rec_helium_dxedt(xe_in, param->nH0, param->T0, param->fHe, H, z1)/H: + rec_HMLA_dxedlna(xe_in, nH*1e-6, H, Tm*kBoltz, Tr*kBoltz, energy_injection_rate(param,z1), rate_table); + #else + dxedlna = func_select==FUNC_HEI ? rec_helium_dxedt(xe_in, param->nH0, param->T0, param->fHe, H, z1)/H: + func_select==FUNC_H2G ? rec_HMLA_2photon_dxedlna(xe_in, nH*1e-6, H, Tm*kBoltz, Tr*kBoltz, rate_table, twog_params, + param->zstart, param->dlna, logfminus_hist, logfminus_Ly_hist, iz, z1, energy_injection_rate(param,z1)) + :rec_HMLA_dxedlna(xe_in, nH*1e-6, H, Tm*kBoltz, Tr*kBoltz, energy_injection_rate(param,z1), rate_table); + #endif + + *xe_out = xe_in + param->dlna * (1.25 * dxedlna - 0.25 * (*dxedlna_prev2)); + + *z_prev2 = *z_prev; + *dxedlna_prev2 = *dxedlna_prev; + *z_prev = z1; + *dxedlna_prev = dxedlna; + +} + +/********************************************************************************************** +Second order integrator using derivative from previous time steps +Evolves xe and Tm simultaneously +***********************************************************************************************/ + +void rec_get_xe_next2(REC_COSMOPARAMS *param, double z1, double xe_in, double Tm_in, double *xe_out, double *Tm_out, + HRATEEFF *rate_table, int func_select, unsigned iz, TWO_PHOTON_PARAMS *twog_params, + double **logfminus_hist, double *logfminus_Ly_hist[], + double *z_prev, double *dxedlna_prev, double *dTmdlna_prev, + double *z_prev2, double *dxedlna_prev2, double *dTmdlna_prev2) { + + double dxedlna, dTmdlna, Tr, nH, ainv, H; + + Tr = param->T0 * (ainv=1.+z1); + nH = param->nH0 * ainv*ainv*ainv; + H = rec_HubbleConstant(param, z1); + + #if (MODEL == PEEBLES) + dxedlna = func_select==FUNC_HEI ? rec_helium_dxedt(xe_in, param->nH0, param->T0, param->fHe, H, z1)/H: + rec_HPeebles_dxedlna(xe_in, nH*1e-6, H, Tm_in*kBoltz, Tr*kBoltz, energy_injection_rate(param,z1)); + #elif (MODEL == RECFAST) + dxedlna = func_select==FUNC_HEI ? rec_helium_dxedt(xe_in, param->nH0, param->T0, param->fHe, H, z1)/H: + rec_HRecFast_dxedlna(xe_in, nH*1e-6, H, Tm_in*kBoltz, Tr*kBoltz, energy_injection_rate(param,z1)); + #elif (MODEL == EMLA2s2p) + dxedlna = func_select==FUNC_HEI ? rec_helium_dxedt(xe_in, param->nH0, param->T0, param->fHe, H, z1)/H: + rec_HMLA_dxedlna(xe_in, nH*1e-6, H, Tm_in*kBoltz, Tr*kBoltz, energy_injection_rate(param,z1), rate_table); + #else + dxedlna = func_select==FUNC_HEI ? rec_helium_dxedt(xe_in, param->nH0, param->T0, param->fHe, H, z1)/H: + func_select==FUNC_H2G ? rec_HMLA_2photon_dxedlna(xe_in, nH*1e-6, H, Tm_in*kBoltz, Tr*kBoltz, rate_table, twog_params, + param->zstart, param->dlna, logfminus_hist, logfminus_Ly_hist, iz, z1, + energy_injection_rate(param,z1)): + func_select==FUNC_HMLA ? rec_HMLA_dxedlna(xe_in, nH*1e-6, H, Tm_in*kBoltz, Tr*kBoltz, energy_injection_rate(param,z1), rate_table) + :rec_HPeebles_dxedlna(xe_in, nH*1e-6, H, Tm_in*kBoltz, Tr*kBoltz, energy_injection_rate(param,z1)); /* used for z < 20 only */ + #endif + + dTmdlna = rec_dTmdlna(xe_in, Tm_in, Tr, H, param->fHe, nH*1e-6, energy_injection_rate(param,z1)); + + *xe_out = xe_in + param->dlna * (1.25 * dxedlna - 0.25 * (*dxedlna_prev2)); + *Tm_out = Tm_in + param->dlna * (1.25 * dTmdlna - 0.25 * (*dTmdlna_prev2)); + + *z_prev2 = *z_prev; + *dxedlna_prev2 = *dxedlna_prev; + *dTmdlna_prev2 = *dTmdlna_prev; + *z_prev = z1; + *dxedlna_prev = dxedlna; + *dTmdlna_prev = dTmdlna; + + +} + +/**************************************************************************************************** +Builds a recombination history +****************************************************************************************************/ + +void rec_build_history(REC_COSMOPARAMS *param, HRATEEFF *rate_table, TWO_PHOTON_PARAMS *twog_params, + double *xe_output, double *Tm_output) { + + + long iz; + double **logfminus_hist; + double *logfminus_Ly_hist[3]; + double H, z, z_prev, dxedlna_prev, z_prev2, dxedlna_prev2, dTmdlna_prev, dTmdlna_prev2; + double Delta_xe; + + /* history of photon occupation numbers */ + logfminus_hist = create_2D_array(NVIRT, param->nz); + logfminus_Ly_hist[0] = create_1D_array(param->nz); /* Ly-alpha */ + logfminus_Ly_hist[1] = create_1D_array(param->nz); /* Ly-beta */ + logfminus_Ly_hist[2] = create_1D_array(param->nz); /* Ly-gamma */ + + + z = param->zstart; + + + /********* He II + III Saha phase *********/ + Delta_xe = 1.; /* Delta_xe = xHeIII */ + + for(iz=0; iznz && Delta_xe > 1e-9; iz++) { + z = (1.+param->zstart)*exp(-param->dlna*iz) - 1.; + xe_output[iz] = rec_sahaHeII(param->nH0,param->T0,param->fHe,z, &Delta_xe); + Tm_output[iz] = param->T0 * (1.+z); + } + + /******* He I + II post-Saha phase *********/ + Delta_xe = 0.; /* Delta_xe = xe - xe(Saha) */ + + for (; iznz && Delta_xe < 5e-4; iz++) { + z = (1.+param->zstart)*exp(-param->dlna*iz) - 1.; + xe_output[iz] = xe_PostSahaHe(param->nH0,param->T0,param->fHe, rec_HubbleConstant(param,z), z, &Delta_xe); + Tm_output[iz] = param->T0 * (1.+z); + } + + /****** Segment where we follow the helium recombination evolution, Tm fixed to steady state *******/ + + z_prev2 = (1.+param->zstart)*exp(-param->dlna*(iz-3)) - 1.; + dxedlna_prev2 = (xe_output[iz-2] - xe_output[iz-4])/2./param->dlna; + + z_prev = (1.+param->zstart)*exp(-param->dlna*(iz-2)) - 1.; + dxedlna_prev = (xe_output[iz-1] - xe_output[iz-3])/2./param->dlna; + + Delta_xe = 1.; /* Difference between xe and H-Saha value */ + + for(; iznz && (Delta_xe > 1e-4 || z > 1650.); iz++) { + + rec_get_xe_next1(param, z, xe_output[iz-1], xe_output+iz, rate_table, FUNC_HEI, iz-1, twog_params, + logfminus_hist, logfminus_Ly_hist, &z_prev, &dxedlna_prev, &z_prev2, &dxedlna_prev2); + + z = (1.+param->zstart)*exp(-param->dlna*iz) - 1.; + Tm_output[iz] = rec_Tmss(xe_output[iz], param->T0*(1.+z), rec_HubbleConstant(param, z), param->fHe, param->nH0*cube(1.+z), energy_injection_rate(param,z)); + + /* Starting to populate the photon occupation number with thermal values */ + update_fminus_Saha(logfminus_hist, logfminus_Ly_hist, xe_output[iz], param->T0*(1.+z)*kBoltz, + param->nH0*cube(1.+z)*1e-6, twog_params, param->zstart, param->dlna, iz, z, 0); + + Delta_xe = fabs(xe_output[iz]- rec_saha_xe_H(param->nH0, param->T0, z)); + } + + + /******* Hydrogen post-Saha equilibrium phase *********/ + Delta_xe = 0.; /*Difference between xe and Saha value */ + + for(; iznz && Delta_xe < 5e-5; iz++) { + z = (1.+param->zstart)*exp(-param->dlna*iz) - 1.; + H = rec_HubbleConstant(param,z); + xe_output[iz] = xe_PostSahaH(param->nH0*cube(1.+z)*1e-6, H, kBoltz*param->T0*(1.+z), rate_table, twog_params, + param->zstart, param->dlna, logfminus_hist, logfminus_Ly_hist, iz, z, &Delta_xe, MODEL, energy_injection_rate(param,z)); + Tm_output[iz] = rec_Tmss(xe_output[iz], param->T0*(1.+z), H, param->fHe, param->nH0*cube(1.+z), energy_injection_rate(param,z)); + } + + /******* Segment where we follow the hydrogen recombination evolution with two-photon processes + Tm fixed to steady state ******/ + + z_prev2 = (1.+param->zstart)*exp(-param->dlna*(iz-3)) - 1.; + dxedlna_prev2 = (xe_output[iz-2] - xe_output[iz-4])/2./param->dlna; + + z_prev = (1.+param->zstart)*exp(-param->dlna*(iz-2)) - 1.; + dxedlna_prev = (xe_output[iz-1] - xe_output[iz-3])/2./param->dlna; + + for(; iznz && 1.-Tm_output[iz-1]/param->T0/(1.+z) < 5e-4 && z > 700.; iz++) { + + rec_get_xe_next1(param, z, xe_output[iz-1], xe_output+iz, rate_table, FUNC_H2G, iz-1, twog_params, + logfminus_hist, logfminus_Ly_hist, &z_prev, &dxedlna_prev, &z_prev2, &dxedlna_prev2); + z = (1.+param->zstart)*exp(-param->dlna*iz) - 1.; + Tm_output[iz] = rec_Tmss(xe_output[iz], param->T0*(1.+z), rec_HubbleConstant(param, z), param->fHe, param->nH0*cube(1.+z)*1e-6, energy_injection_rate(param,z)); + } + + /******* Segment where we follow the hydrogen recombination evolution with two-photon processes + AND Tm evolution ******/ + + dTmdlna_prev2 = rec_dTmdlna(xe_output[iz-3], Tm_output[iz-3], param->T0*(1.+z_prev2), + rec_HubbleConstant(param, z_prev2), param->fHe, param->nH0*cube(1.+z_prev2), energy_injection_rate(param,z_prev2)); + dTmdlna_prev = rec_dTmdlna(xe_output[iz-2], Tm_output[iz-2], param->T0*(1.+z_prev), + rec_HubbleConstant(param, z_prev), param->fHe, param->nH0*cube(1.+z_prev), energy_injection_rate(param,z_prev)); + + for(; iznz && z > 700.; iz++) { + + rec_get_xe_next2(param, z, xe_output[iz-1], Tm_output[iz-1], xe_output+iz, Tm_output+iz, rate_table, FUNC_H2G, + iz-1, twog_params, logfminus_hist, logfminus_Ly_hist, &z_prev, &dxedlna_prev, &dTmdlna_prev, + &z_prev2, &dxedlna_prev2, &dTmdlna_prev2); + z = (1.+param->zstart)*exp(-param->dlna*iz) - 1.; + } + + /***** Segment where we follow Tm as well as xe *****/ + /* Radiative transfer effects switched off here */ + for(; iznz && z>20.; iz++) { + + rec_get_xe_next2(param, z, xe_output[iz-1], Tm_output[iz-1], xe_output+iz, Tm_output+iz, rate_table, FUNC_HMLA, + iz-1, twog_params, logfminus_hist, logfminus_Ly_hist, &z_prev, &dxedlna_prev, &dTmdlna_prev, + &z_prev2, &dxedlna_prev2, &dTmdlna_prev2); + z = (1.+param->zstart)*exp(-param->dlna*iz) - 1.; + } + + /*** For z < 20 use Peeble's model. The precise model does not metter much here as + 1) the free electron fraction is basically zero (~1e-4) in any case and + 2) the universe is going to be reionized around that epoch + Tm is still evolved explicitly ***/ + for(; iznz; iz++) { + + rec_get_xe_next2(param, z, xe_output[iz-1], Tm_output[iz-1], xe_output+iz, Tm_output+iz, rate_table, FUNC_PEEBLES, + iz-1, twog_params, logfminus_hist, logfminus_Ly_hist, &z_prev, &dxedlna_prev, &dTmdlna_prev, + &z_prev2, &dxedlna_prev2, &dTmdlna_prev2); + z = (1.+param->zstart)*exp(-param->dlna*iz) - 1.; + } + + /* Cleanup */ + free_2D_array(logfminus_hist, NVIRT); + free(logfminus_Ly_hist[0]); + free(logfminus_Ly_hist[1]); + free(logfminus_Ly_hist[2]); + +} + +double onthespot_injection_rate(REC_COSMOPARAMS *param, + double z) { + + double annihilation_at_z; + double rho_cdm_today; + double u_min; + double erfc; + + /*redshift-dependent annihilation parameter*/ + + if (z>param->annihilation_zmax) { + + annihilation_at_z = param->annihilation* + exp(-param->annihilation_variation*pow(log((param->annihilation_z+1.)/(param->annihilation_zmax+1.)),2)); + } + else if (z>param->annihilation_zmin) { + + annihilation_at_z = param->annihilation* + exp(param->annihilation_variation*(-pow(log((param->annihilation_z+1.)/(param->annihilation_zmax+1.)),2) + +pow(log((z+1.)/(param->annihilation_zmax+1.)),2))); + } + else { + + annihilation_at_z = param->annihilation* + exp(param->annihilation_variation*(-pow(log((param->annihilation_z+1.)/(param->annihilation_zmax+1.)),2) + +pow(log((param->annihilation_zmin+1.)/(param->annihilation_zmax+1.)),2))); + } + + rho_cdm_today = param->omh2*1.44729366e-9; /* energy density in Kg/m^3 */ + + u_min = (1+z)/(1+param->annihilation_z_halo); + + erfc = pow(1.+0.278393*u_min+0.230389*u_min*u_min+0.000972*u_min*u_min*u_min+0.078108*u_min*u_min*u_min*u_min,-4); + + return (pow(rho_cdm_today,2)/2.99792458e8/2.99792458e8*pow((1.+z),3)* + (pow((1.+z),3)*annihilation_at_z+param->annihilation_f_halo*erfc) + +rho_cdm_today*pow((1+z),3)*param->decay)/1.e6/1.60217653e-19; + /* energy density rate in eV/cm^3/s (remember that annihilation_at_z is in m^3/s/Kg and decay in s^-1) */ + /* note that the injection rate used by recfast, defined in therodynamics.c, is in J/m^3/s. Here we multiplied by 1/1.e6/1.60217653e-19 to convert to eV and cm. */ + +} + +double energy_injection_rate(REC_COSMOPARAMS *param, + double z) { + + double zp,dz; + double integrand,first_integrand; + double factor,result; + + if (param->annihilation > 0.) { + + if (param->has_on_the_spot == 0) { + + /* factor = c sigma_T n_H(0) / H(0) (dimensionless) */ + factor = 2.99792458e8 * 6.6524616e-29 * param->nH0 / (3.2407792896393e-18 * sqrt(param->omh2)); + + /* integral over z'(=zp) with step dz */ + dz=1.; + + /* first point in trapezoidal integral */ + zp = z; + first_integrand = factor*pow(1+z,8)/pow(1+zp,7.5)*exp(2./3.*factor*(pow(1+z,1.5)-pow(1+zp,1.5)))*onthespot_injection_rate(param,zp); // beware: versions before 2.4.3, there were rwrong exponents: 6 and 5.5 instead of 8 and 7.5 + result = 0.5*dz*first_integrand; + + /* other points in trapezoidal integral */ + do { + + zp += dz; + integrand = factor*pow(1+z,8)/pow(1+zp,7.5)*exp(2./3.*factor*(pow(1+z,1.5)-pow(1+zp,1.5)))*onthespot_injection_rate(param,zp); // beware: versions before 2.4.3, there were rwrong exponents: 6 and 5.5 instead of 8 and 7.5 + result += dz*integrand; + //moment += dz*integrand*(zp-z); + + } while (integrand/first_integrand > 0.02); + + /* test lines for printing energy rate rescaled by (1=z)^6 in J/m^3/s w/o approximation */ + /* fprintf(stdout,"%e %e %e\n", 1.+z, result/pow(1.+z,6)*1.602176487e-19*1.e6, onthespot_injection_rate(param,z)/pow(1.+z,6)*1.602176487e-19*1.e6); */ + + } + else { + result = onthespot_injection_rate(param,z); + } + + /* effective energy density rate in eV/cm^3/s */ + return result; + } + else { + return 0.; + } + +} diff --git a/class/hyrec/history.h b/class/hyrec/history.h new file mode 100644 index 00000000..4b7fff0d --- /dev/null +++ b/class/hyrec/history.h @@ -0,0 +1,98 @@ +/*************************************************************************************************/ +/* HYREC: Hydrogen and Helium Recombination Code */ +/* Written by Yacine Ali-Haimoud and Chris Hirata (Caltech) */ +/* */ +/* history.h: functions for recombination history */ +/* */ +/*************************************************************************************************/ + +#define PROMPT 1 /* Set to zero to suppress initial prompts */ + +/**** Switch to choose the physical model used for hydrogen ****/ + +/* definitions*/ +#define PEEBLES 0 /* Peebles effective three-level atom */ +#define RECFAST 1 /* Effective three-level atom for hydrogen with fudge factor F = 1.14 */ +#define EMLA2s2p 2 /* Correct EMLA model, with standard decay rates from 2s and 2p only */ +#define FULL 3 /* All radiative transfer effects included. Additional switches in header file hydrogen.h */ + +/** here is the switch **/ +#define MODEL RECFAST /* default setting: FULL */ + +/***** Switches for derivative d(xe)/dt *****/ + +#define FUNC_HEI 1 +#define FUNC_H2G 2 +#define FUNC_HMLA 3 +#define FUNC_PEEBLES 4 + +/**** Cosmological parameters. + Include information on starting and ending redshit and timestep ****/ + +typedef struct { + double T0; /* CMB temperature today in K*/ + double obh2, omh2, okh2; /* cosmological parameters */ + double odeh2, w0, wa; /* dark energy parameters */ + double Y; /* primordial helium abundance */ + double Nnueff; /* effective number of neutrinos */ + + /* Secondary parameters, to avoid recalculating every time */ + double nH0; /* density of hydrogen today in m^{-3} */ + double fHe; /* Helium fraction by number */ + + double zstart, zend, dlna; /* initial and final redshift and step size in log a */ + long nz; /* total number of redshift steps */ + + /** parameters for energy injection */ + + double annihilation; /** parameter describing CDM annihilation (f / m_cdm, see e.g. 0905.0003) */ + + short has_on_the_spot; /** do we want to use the on-the-spot approximation? */ + + double decay; /** parameter descibing CDM decay (f/tau, see e.g. 1109.6322)*/ + + double annihilation_variation; /** if this parameter is non-zero, + the function F(z)=(f / + m_cdm)(z) will be a parabola in + log-log scale between zmin and + zmax, with a curvature given by + annihlation_variation (must ne + negative), and with a maximum in + zmax; it will be constant outside + this range */ + + double annihilation_z; /** if annihilation_variation is non-zero, + this is the value of z at which the + parameter annihilation is defined, i.e. + F(annihilation_z)=annihilation */ + + double annihilation_zmax; /** if annihilation_variation is non-zero, + redhsift above which annihilation rate + is maximal */ + + double annihilation_zmin; /** if annihilation_variation is non-zero, + redhsift below which annihilation rate + is constant */ + + double annihilation_f_halo; /* takes the contribution of DM annihilation in halos into account*/ + double annihilation_z_halo; /*characteristic redshift for DM annihilation in halos*/ + +} REC_COSMOPARAMS; + +void rec_get_cosmoparam(FILE *fin, FILE *fout, REC_COSMOPARAMS *param); +double rec_HubbleConstant(REC_COSMOPARAMS *param, double z); +double rec_Tmss(double xe, double Tr, double H, double fHe, double nH, double energy_rate); +double rec_dTmdlna(double xe, double Tm, double Tr, double H, double fHe , double nH, double energy_rate); +void rec_get_xe_next1(REC_COSMOPARAMS *param, double z1, double xe_in, double *xe_out, + HRATEEFF *rate_table, int func_select, unsigned iz, TWO_PHOTON_PARAMS *twog_params, + double **logfminus_hist, double *logfminus_Ly_hist[], + double *z_prev, double *dxedlna_prev, double *z_prev2, double *dxedlna_prev2); +void rec_get_xe_next2(REC_COSMOPARAMS *param, double z1, double xe_in, double Tm_in, double *xe_out, double *Tm_out, + HRATEEFF *rate_table, int func_select, unsigned iz, TWO_PHOTON_PARAMS *twog_params, + double **logfminus_hist, double *logfminus_Ly_hist[], + double *z_prev, double *dxedlna_prev, double *dTmdlna_prev, + double *z_prev2, double *dxedlna_prev2, double *dTmdlna_prev2); +void rec_build_history(REC_COSMOPARAMS *param, HRATEEFF *rate_table, TWO_PHOTON_PARAMS *twog_params, + double *xe_output, double *Tm_output); + +double energy_injection_rate(REC_COSMOPARAMS *param, double z); diff --git a/class/hyrec/hydrogen.c b/class/hyrec/hydrogen.c new file mode 100644 index 00000000..3170ef3a --- /dev/null +++ b/class/hyrec/hydrogen.c @@ -0,0 +1,834 @@ +/*************************************************************************************************/ +/* HYREC: Hydrogen and Helium Recombination Code */ +/* Written by Yacine Ali-Haimoud and Chris Hirata (Caltech) */ +/* */ +/* hydrogen.c: all functions related to Hydrogen recombination */ +/* */ +/* Units used: cgs + eV (all temperatures in eV) */ +/* */ +/* Version: January 2011 */ +/* Revision history: */ +/* - written November 2010 */ +/* - January 2011: - changed the post-Saha expansion to use the full derivative */ +/* (including two-photon processes and diffusion) rather than Peebles'ODE */ +/* - post-Saha expansion can now pass the difference from Saha value */ +/* to external routines */ +/* - differential 2s--1s rate is now systematically normalized to */ +/* total 2s--1s rate that can be set by user in hydrogen.h */ +/*************************************************************************************************/ + +#include +#include +#include + +#include "hyrectools.h" +#include "hydrogen.h" + + +/************************************************************************************************** +Case-B recombination coefficient, fit of Pequignot et al 1991, in cm^3 s^{-1} +***************************************************************************************************/ + +double alphaB_PPB(double TM) { + double t4; + t4 = TM/kBoltz/1e4; + return 4.309e-13*pow(t4,-0.6166)/(1.+ 0.6703*pow(t4,0.5300)); +} + +/************************************************************************************************** +Peebles recombination rate +***************************************************************************************************/ + +double rec_HPeebles_dxedlna(double xe, double nH, double H, double TM, double TR, double energy_rate) { + + double RLya, alphaB, four_betaB, C; + double chi_ion_H; + + RLya = 4.662899067555897e15 * H / nH / (1.-xe); + alphaB = alphaB_PPB(TM); + four_betaB = 3.016103031869581e21 *TR*sqrt(TR) *exp(-0.25*EI/TR) *alphaB; + + C = (3.*RLya + L2s1s)/(3.*RLya + L2s1s + four_betaB); + + // chi_ion_H = (1.-xe)/3.; // old approximation from Chen and Kamionkowski + if (xe < 1.) + chi_ion_H = 0.369202*pow(1.-pow(xe,0.463929),1.70237); // coefficient as revised by Galli et al. 2013 (in fact it is a fit by Vivian Poulin of columns 1 and 4 in Table V of Galli et al. 2013) + else + chi_ion_H = 0.; + + return (-nH*xe*xe*alphaB + four_betaB*(1.-xe)*exp(-E21/TR))*C/H + +chi_ion_H/nH*energy_rate*(1./EI+(1.-C)/E21)/H; + +} + +/**************************************************************************************************** +RecFast recombination rate (Seager et al 1999, 2000): effective three-level atom +with a fudge factor F = 1.14 +****************************************************************************************************/ + +double rec_HRecFast_dxedlna(double xe, double nH, double H, double TM, double TR, double energy_rate) { + + double RLya, alphaB, four_betaB, C; + double chi_ion_H; + + RLya = 4.662899067555897e15 * H / nH / (1.-xe); + alphaB = 1.14 * alphaB_PPB(TM); + four_betaB = 3.016103031869581e21 *TR*sqrt(TR) *exp(-0.25*EI/TR) *alphaB; + + C = (3.*RLya + L2s1s)/(3.*RLya + L2s1s + four_betaB); + + //chi_ion_H = (1.-xe)/3.; // old approximation from Chen and Kamionkowski + if (xe < 1.) + chi_ion_H = 0.369202*pow(1.-pow(xe,0.463929),1.70237); // coefficient as revised by Galli et al. 2013 (in fact it is a fit by Vivian Poulin of columns 1 and 4 in Table V of Galli et al. 2013) + else + chi_ion_H = 0.; + + return (-nH*xe*xe*alphaB + four_betaB*(1.-xe)*exp(-E21/TR))*C/H + +chi_ion_H/nH*energy_rate*(1./EI+(1.-C)/E21)/H; + +} + +/********************************************************************************************** +Store tabulated temperatures and read effective MLA rates from files. +**********************************************************************************************/ + +void read_rates(HRATEEFF *rate_table){ + + FILE *fA = fopen(ALPHA_FILE, "r"); + FILE *fR = fopen(RR_FILE, "r"); + + unsigned i, j, l; + int fscanf_result; + + maketab(log(TR_MIN), log(TR_MAX), NTR, rate_table->logTR_tab); + maketab(TM_TR_MIN, TM_TR_MAX, NTM, rate_table->TM_TR_tab); + rate_table->DlogTR = rate_table->logTR_tab[1] - rate_table->logTR_tab[0]; + rate_table->DTM_TR = rate_table->TM_TR_tab[1] - rate_table->TM_TR_tab[0]; + + for (i = 0; i < NTR; i++) { + for (j = 0; j < NTM; j++) { + for (l = 0; l <= 1; l++) { + fscanf_result = fscanf(fA, "%le", &(rate_table->logAlpha_tab[l][j][i])); + if(fscanf_result != 1){printf("Hyrec Warning :: Could not read log Alpha table (Alpha_inf.dat)");} + rate_table->logAlpha_tab[l][j][i] = log(rate_table->logAlpha_tab[l][j][i]); + } + } + + fscanf_result = fscanf(fR, "%le", &(rate_table->logR2p2s_tab[i])); + if(fscanf_result != 1){printf("Hyrec Warning :: Could not read rate table (R_inf.dat)");} + rate_table->logR2p2s_tab[i] = log(rate_table->logR2p2s_tab[i]); + + } + fclose(fA); + fclose(fR); +} + +/************************************************************************************************ +Interpolation of tabulated effective rates +To be more (slightly) efficient, not using the external interpolation routine. +************************************************************************************************/ + +void interpolate_rates(double Alpha[2], double Beta[2], double *R2p2s, double TR, double TM_TR, HRATEEFF *rate_table) { + double factor; + unsigned l, k; + long iTM, iTR; + double frac1, frac2; + double logTR; + double coeff1[4], coeff2[4], temp[4]; + + logTR = log(TR); + + /* Check if TM/TR is in the range tabulated */ + if (TM_TR < TM_TR_MIN || TM_TR > TM_TR_MAX) { + fprintf(stderr, "Error: TM/TR-value is out of range in interpolate_rates.\n"); + exit(1); + } + + /* Check if log(TR) is in the range tabulated */ + if (TR < TR_MIN || TR > TR_MAX) { + fprintf(stderr,"Error: TR-value is out of range in interpolate_rates.\n"); + exit(1); + } + + /* Identify location to interpolate in TM/TR */ + iTM = (long)floor((TM_TR - TM_TR_MIN)/rate_table->DTM_TR); + if (iTM < 1) iTM = 1; + if (iTM > NTM-3) iTM = NTM-3; + frac1 = (TM_TR - TM_TR_MIN)/rate_table->DTM_TR - iTM; + coeff1[0] = frac1*(frac1-1.)*(2.-frac1)/6.; + coeff1[1] = (1.+frac1)*(1.-frac1)*(2.-frac1)/2.; + coeff1[2] = (1.+frac1)*frac1*(2.-frac1)/2.; + coeff1[3] = (1.+frac1)*frac1*(frac1-1.)/6.; + + /* Identify location to interpolate in log(TR) */ + iTR = (long)floor((logTR - log(TR_MIN))/rate_table->DlogTR); + if (iTR < 1) iTR = 1; + if (iTR > NTR-3) iTR = NTR-3; + frac2 = (logTR - log(TR_MIN))/rate_table->DlogTR - iTR; + coeff2[0] = frac2*(frac2-1.)*(2.-frac2)/6.; + coeff2[1] = (1.+frac2)*(1.-frac2)*(2.-frac2)/2.; + coeff2[2] = (1.+frac2)*frac2*(2.-frac2)/2.; + coeff2[3] = (1.+frac2)*frac2*(frac2-1.)/6.; + + + for (l = 0; l <= 1; l++) { + /* effective recombination coefficient to each level */ + for (k = 0; k < 4; k++) { + temp[k] = rate_table->logAlpha_tab[l][iTM-1+k][iTR-1]*coeff2[0] + + rate_table->logAlpha_tab[l][iTM-1+k][iTR]*coeff2[1] + + rate_table->logAlpha_tab[l][iTM-1+k][iTR+1]*coeff2[2] + + rate_table->logAlpha_tab[l][iTM-1+k][iTR+2]*coeff2[3]; + } + + Alpha[l] = exp(temp[0]*coeff1[0]+temp[1]*coeff1[1] + +temp[2]*coeff1[2]+temp[3]*coeff1[3]); + + /* Alpha evaluated at Tm = Tr, for use in detailed balance */ + Beta[l] = exp(rate_table->logAlpha_tab[l][NTM-1][iTR-1]*coeff2[0] + +rate_table->logAlpha_tab[l][NTM-1][iTR]*coeff2[1] + +rate_table->logAlpha_tab[l][NTM-1][iTR+1]*coeff2[2] + +rate_table->logAlpha_tab[l][NTM-1][iTR+2]*coeff2[3]); + } + + /* Beta obtained by detailed balance */ + /* factor = pow(2.0 * M_PI * mue *TR / hPc / hPc, 1.5)) * exp(-0.25*EI/TR) */ + factor = 3.016103031869581e21 * TR*sqrt(TR) * exp(-3.399571517984581/TR); + Beta[0] *= factor; /* 2s */ + Beta[1] *= factor/3.; /* 2p */ + + /* Effective 2p->2s rate */ + *R2p2s = exp(rate_table->logR2p2s_tab[iTR-1]*coeff2[0] + +rate_table->logR2p2s_tab[iTR]*coeff2[1] + +rate_table->logR2p2s_tab[iTR+1]*coeff2[2] + +rate_table->logR2p2s_tab[iTR+2]*coeff2[3]); + +} + +/************************************************************************************************ +Solves for the populations of the 2s and 2p states in steady-state, and returns dxe/dt. +Uses standard rate for 2s-->1s decay and Sobolev for Lyman alpha (no feedback) +Inputs: xe, nH in cm^{-3}, H in s^{-1}, TM, TR in eV. Output: dxe/dlna +************************************************************************************************/ + +double rec_HMLA_dxedlna(double xe, double nH, double Hubble, double TM, double TR, double energy_rate, HRATEEFF *rate_table){ + + double Alpha[2]; + double Beta[2]; + double R2p2s; + double matrix[2][2]; + double RHS[2]; + double det, RLya; + double x2[2]; + double x1s_db; + double C_2p; + double chi_ion_H; + + interpolate_rates(Alpha, Beta, &R2p2s, TR, TM / TR, rate_table); + + x1s_db = (1.-xe)*exp(-E21/TR); + + /******** 2s *********/ + matrix[0][0] = Beta[0] + 3.*R2p2s + L2s1s; + matrix[0][1] = -R2p2s; + RHS[0] = xe*xe*nH *Alpha[0] + L2s1s *x1s_db; + + /******** 2p *********/ + RLya = 4.662899067555897e15 *Hubble /nH/(1.-xe); /*8 PI H/(3 nH x1s lambda_Lya^3) */ + + matrix[1][1] = Beta[1] + R2p2s + RLya; + matrix[1][0] = -3.*R2p2s; + RHS[1] = xe*xe*nH *Alpha[1] + 3.*RLya *x1s_db; + + /**** invert the 2 by 2 system matrix_ij * xj = RHSi *****/ + det = matrix[0][0] * matrix[1][1] - matrix[0][1] * matrix[1][0]; + x2[0] = (matrix[1][1] * RHS[0] - matrix[0][1] * RHS[1])/det; + x2[1] = (matrix[0][0] * RHS[1] - matrix[1][0] * RHS[0])/det; + + C_2p=(RLya+R2p2s*L2s1s/matrix[0][0])/(matrix[1][1]-R2p2s*3.*R2p2s/matrix[0][0]); + + //chi_ion_H = (1.-xe)/3.; // old approximation from Chen and Kamionkowski + if (xe < 1.) + chi_ion_H = 0.369202*pow(1.-pow(xe,463929),1.70237); // coefficient as revised by Galli et al. 2013 (in fact it is a fit by Vivian Poulin of columns 1 and 4 in Table V of Galli et al. 2013) + else + chi_ion_H = 0.; + + return (x1s_db*(L2s1s + 3.*RLya) -x2[0]*L2s1s -x2[1]*RLya)/Hubble + +chi_ion_H/nH*energy_rate*(1./EI+(1.-C_2p)/E21)/Hubble; + +} + +/********************************************************************************************* +Read two-photon rates from table +**********************************************************************************************/ + +void read_twog_params(TWO_PHOTON_PARAMS *twog){ + + FILE *fA; + unsigned b; + double L2s1s_current; + int fscanf_result; + + fA = fopen(TWOG_FILE, "r"); + + for (b = 0; b < NVIRT; b++) { + fscanf_result = 0; + fscanf_result += fscanf(fA, "%le", &(twog->Eb_tab[b])); + fscanf_result += fscanf(fA, "%le", &(twog->A1s_tab[b])); + fscanf_result += fscanf(fA, "%le", &(twog->A2s_tab[b])); + fscanf_result += fscanf(fA, "%le", &(twog->A3s3d_tab[b])); + fscanf_result += fscanf(fA, "%le", &(twog->A4s4d_tab[b])); + if(fscanf_result!=5){printf("Hyrec Warning :: Could not read Two Photon table (two_photon_tables.dat)");} + } + fclose(fA); + + /* Normalize 2s--1s differential decay rate to L2s1s (can be set by user in hydrogen.h) */ + L2s1s_current = 0.; + for (b = 0; b < NSUBLYA; b++) L2s1s_current += twog->A2s_tab[b]; + for (b = 0; b < NSUBLYA; b++) twog->A2s_tab[b] *= L2s1s/L2s1s_current; + + + /* Switches for the various effects considered in Hirata (2008) and diffusion: + Effect A: correct 2s-->1s rate, with stimulated decays and absorptions of non-thermal photons + Effect B: Sub-Lyman-alpha two-photon decays + Effect C: Super-Lyman-alpha two-photon decays + Effect D: Raman scattering */ + + #if (EFFECT_A == 0) + for (b = 0; b < NSUBLYA; b++) twog->A2s_tab[b] = 0; + #endif + #if (EFFECT_B == 0) + for (b = 0; b < NSUBLYA; b++) twog->A3s3d_tab[b] = twog->A4s4d_tab[b] = 0; + #endif + #if (EFFECT_C == 0) + for (b = NSUBLYA; b < NVIRT; b++) twog->A3s3d_tab[b] = twog->A4s4d_tab[b] = 0; + #endif + #if (EFFECT_D == 0) + for (b = NSUBLYA; b < NVIRT; b++) twog->A2s_tab[b] = 0; + for (b = NSUBLYB; b < NVIRT; b++) twog->A3s3d_tab[b] = 0; + #endif + #if (DIFFUSION == 0) + for (b = 0; b < NVIRT; b++) twog->A1s_tab[b] = 0; + #endif + +} + +/****************************************************************************************************** +Square and cube, used often +******************************************************************************************************/ + +double square(double x) { + return x*x; +} + +double cube(double x) { + return x*x*x; +} + +/******************************************************************************************************** +Compute the A_{b,b+/-1} "Einstein A-"coefficients between virtual states, due to diffusion +(In the notation of the paper, A_{b,b\pm1} = R_{b,b\pm1}) +Aup[b] = A_{b, b+1} Adn[b] = A_{b, b-1} +********************************************************************************************************/ + +void populate_Diffusion(double *Aup, double *Adn, double *A2p_up, double *A2p_dn, + double TM, double Eb_tab[NVIRT], double A1s_tab[NVIRT]) { + + unsigned b; + double DE2; + + DE2 = E21*E21*2.*TM/mH; + + /****** RED WING ******/ + b = NSUBLYA - NDIFF/2; + Aup[b] = DE2 / square(Eb_tab[b+1] - Eb_tab[b]) * A1s_tab[b]; /* A{0,1}. Assume A{0,-1} = 0 */ + + for (b = NSUBLYA - NDIFF/2 + 1; b < NSUBLYA-1; b++) { + Adn[b] = exp((Eb_tab[b] - Eb_tab[b-1])/TM) * Aup[b-1]; /* Detailed balance */ + Aup[b] = (DE2 * A1s_tab[b] - square(Eb_tab[b] - Eb_tab[b-1]) * Adn[b]) + /square(Eb_tab[b+1] - Eb_tab[b]); /* Aup[b] , Adn[b] must add up to correct diffusion rate */ + } + /* Last bin below Lyman alpha */ + b = NSUBLYA - 1; + Adn[b] = exp((Eb_tab[b] - Eb_tab[b-1])/TM) * Aup[b-1]; + + Aup[b] = (DE2 * A1s_tab[b] - square(Eb_tab[b] - Eb_tab[b-1]) * Adn[b]) + /square(E21 - Eb_tab[b]); + *A2p_dn = exp((E21 - Eb_tab[b])/TM)/3.* Aup[b]; /* 2p -> NSUBLYA-1 rate obtained by detailed balance */ + + + /****** BLUE WING ******/ + b = NSUBLYA + NDIFF/2 - 1; + Adn[b] = DE2 / square(Eb_tab[b] - Eb_tab[b-1]) * A1s_tab[b]; + + for (b = NSUBLYA + NDIFF/2 - 2; b > NSUBLYA; b--) { + Aup[b] = exp((Eb_tab[b] - Eb_tab[b+1])/TM) * Adn[b+1]; + Adn[b] = (DE2 * A1s_tab[b] - square(Eb_tab[b+1] - Eb_tab[b]) * Aup[b]) + /square(Eb_tab[b] - Eb_tab[b-1]); + } + /* First bin above Lyman alpha */ + b = NSUBLYA; + Aup[b] = exp((Eb_tab[b] - Eb_tab[b+1])/TM) * Adn[b+1]; + + Adn[b] = (DE2 * A1s_tab[b] - square(Eb_tab[b+1] - Eb_tab[b]) * Aup[b]) + /square(Eb_tab[b] - E21); + *A2p_up = exp((E21 - Eb_tab[b])/TM)/3. * Adn[b]; /* 2p -> NSUBLYA rate obtained by detailed balance */ + + +} + +/********************************************************************************************************* + Populate the real-real, real-virtual, virtual-real and virtual-virtual T-matrices, + as well as the source vectors sr, sv, +WITH DIFFUSION. Tvv[0][b] is the diagonal element Tbb, Tvv[1][b] = T{b,b-1} and Tvv[2][b] = T{b,b+1} +Also, computes and stores the optical depths Delta tau_b for future use +**********************************************************************************************************/ + +void populateTS_2photon(double Trr[2][2], double *Trv[2], double *Tvr[2], double *Tvv[3], + double sr[2], double sv[NVIRT], double Dtau[NVIRT], + double xe, double TM, double TR, double nH, double H, HRATEEFF *rate_table, + TWO_PHOTON_PARAMS *twog, double fplus[NVIRT], double fplus_Ly[], + double Alpha[2], double Beta[2], double z) { + + double R2p2s; + unsigned b; + double RLya, Gammab, Pib, dbfact; + + double *Aup, *Adn; + double A2p_up, A2p_dn; + + Aup = create_1D_array(NVIRT); + Adn = create_1D_array(NVIRT); + + RLya = 4.662899067555897e15 *H /nH/(1.-xe); /*8 PI H/(3 nH x1s lambda_Lya^3) */ + + interpolate_rates(Alpha, Beta, &R2p2s, TR, TM / TR, rate_table); + + /****** 2s row and column ******/ + + Trr[0][0] = Beta[0] + 3.*R2p2s + + 3.* RLya * (1.664786871919931 *exp(-E32/TR) /* Ly-beta escape */ + + 1.953125 *exp(-E42/TR)); /* Ly-gamma escape */ + + Trr[0][1] = -R2p2s; + sr[0] = nH * Alpha[0] * xe*xe + + 3.* RLya * (1.-xe) * (1.664786871919931 *fplus_Ly[1] + + 1.953125 *exp(-E41/TR)); + + #if (EFFECT_A == 0) + /* Standard treatment of 2s-->1s two-photon decays */ + Trr[0][0] += L2s1s; + sr[0] += L2s1s * (1.-xe) * exp(-E21/TR); + #endif + + + /****** 2p row and column ******/ + + Trr[1][1] = Beta[1] + R2p2s + RLya; + Trr[1][0] = -3.*R2p2s; + sr[1] = nH * Alpha[1] * xe*xe + 3.*RLya * (1.-xe) * fplus_Ly[0]; + + + /***** Two-photon transitions: populating Trv, Tvr and updating Trr ******/ + + for (b = 0; b < NVIRT; b++) { + dbfact = exp((twog->Eb_tab[b] - E21)/TR); + + Trr[0][0] -= Tvr[0][b] = -twog->A2s_tab[b]/fabs(exp((twog->Eb_tab[b] - E21)/TR)-1.); + Trv[0][b] = Tvr[0][b] *dbfact; + + Trr[1][1] -= Tvr[1][b] = -exp(-E32/TR)/3. * twog->A3s3d_tab[b]/fabs(exp((twog->Eb_tab[b] - E31)/TR)-1.) + -exp(-E42/TR)/3. * twog->A4s4d_tab[b]/fabs(exp((twog->Eb_tab[b] - E41)/TR)-1.); + Trv[1][b] = Tvr[1][b] *3.*dbfact; + } + + /****** Tvv and sv. Accounting for DIFFUSION ******/ + + populate_Diffusion(Aup, Adn, &A2p_up, &A2p_dn, TM, twog->Eb_tab, twog->A1s_tab); + + /* Updating Tvr, Trv, Trr for diffusion between line center ("2p state") and two neighboring bins */ + + Trr[1][1] += (A2p_dn + A2p_up); + + for (b = 0; b < NVIRT; b++) { + + Gammab = -(Trv[0][b] + Trv[1][b]) + Aup[b] + Adn[b]; /* Inverse lifetime of virtual state b */ + + /*** Diffusion region ***/ + if ( (b >= NSUBLYA - NDIFF/2 && b < NSUBLYA - 1) + ||(b > NSUBLYA && b < NSUBLYA + NDIFF/2)) { + Tvv[1][b] = -Aup[b-1]; + Tvv[2][b] = -Adn[b+1]; + } + /* Bins neighboring Lyman alpha. */ + if (b == NSUBLYA-1) { + Tvv[1][b] = -Aup[b-1]; + Tvv[2][b] = 0.; + Tvr[1][b] -= A2p_dn; + Trv[1][b] -= Aup[b]; + } + if (b == NSUBLYA) { + Tvv[1][b] = 0.; + Tvv[2][b] = -Adn[b+1]; + Tvr[1][b] -= A2p_up; + Trv[1][b] -= Adn[b]; + } + /*********************/ + + Dtau[b] = Gammab * (1.-xe) * cube(hPc/twog->Eb_tab[b]) * nH /8. /M_PI /H; + + if (Dtau[b] > 1e-30) { + Pib = (1.-exp(-Dtau[b]))/Dtau[b]; + Tvv[0][b] = Gammab/(1.-Pib); + sv[b] = Tvv[0][b] * (1.-xe) * fplus[b] * Pib; + } + else { /* Nearly vanishing optical depth: free streaming */ + Tvv[0][b] = 1.; + Trv[0][b] = Trv[1][b] = Tvr[0][b] = Tvr[1][b] = 0; + sv[b] = (1.-xe) * fplus[b]; + } + } + + free(Aup); + free(Adn); +} + +/********************************************************************* +Solves the linear system T*X = B, where T is a DIAGONALLY DOMINANT +tridiagonal matrix, and X and B are both one-column vectors of N elements. +diag[i] = T_{ii}, updiag[i] = T_{i,i+1}, dndiag[i] = T_{i,i-1} +IMPORTANT: This is NOT THE MOST GENERAL ALGORITHM. Only adapted for the +case we will consider, i.e. |T_{ii}| > |T_{i,i+1}| + |T_{i,i-1}|. +**********************************************************************/ + +void solveTXeqB(double *diag, double *updiag, double *dndiag, + double *X, double *B, unsigned N){ + int i; + double denom; + double *alpha = create_1D_array(N); + double *gamma = create_1D_array(N); /* X[i] = gamma[i] - alpha[i] * X[i+1] */ + + alpha[0] = updiag[0] / diag[0]; + gamma[0] = B[0] / diag[0]; + + for (i = 1; i < N; i++) { + denom = diag[i] - dndiag[i] * alpha[i-1]; + alpha[i] = updiag[i] / denom; + gamma[i] = (B[i] - dndiag[i] * gamma[i-1]) / denom; + } + + X[N-1] = gamma[N-1]; + for (i = N-2; i >= 0; i--) X[i] = gamma[i] - alpha[i] * X[i+1]; + + free(alpha); + free(gamma); +} + +/************************************************************************************************************** +Solves for the populations of the real (2s, 2p) and virtual states +***************************************************************************************************************/ + +void solve_real_virt(double xr[2], double xv[NVIRT], double Trr[2][2], double *Trv[2], double *Tvr[2], + double *Tvv[3], double sr[2], double sv[NVIRT]){ + + double *Tvv_inv_Tvr[2]; + double *Tvv_inv_sv; + double Trr_new[2][2]; + double sr_new[2]; + unsigned i, j, b; + double det; + + unsigned NSUBDIFF; + NSUBDIFF = NSUBLYA - NDIFF/2; /* lowest bin of the diffusion region */ + + /** Allocate memory **/ + for (i = 0; i < 2; i++) Tvv_inv_Tvr[i] = create_1D_array(NVIRT); + Tvv_inv_sv = create_1D_array(NVIRT); + + + /*** Computing Tvv^{-1}.Tvr ***/ + + for (i = 0; i < 2; i++) { + for (b = 0; b < NSUBDIFF; b++) Tvv_inv_Tvr[i][b] = Tvr[i][b]/Tvv[0][b]; + for (b = NSUBLYA + NDIFF/2; b < NVIRT; b++) Tvv_inv_Tvr[i][b] = Tvr[i][b]/Tvv[0][b]; + solveTXeqB(Tvv[0]+NSUBDIFF, Tvv[2]+NSUBDIFF, Tvv[1]+NSUBDIFF, Tvv_inv_Tvr[i]+NSUBDIFF, Tvr[i]+NSUBDIFF, NDIFF); + } + + /*** Trr_new = Trr - Trv.Tvv^{-1}.Tvr ***/ + for (i = 0; i < 2; i++) for (j = 0; j < 2; j++) { + Trr_new[i][j] = Trr[i][j]; + for (b = 0; b < NVIRT; b++) Trr_new[i][j] -= Trv[i][b]*Tvv_inv_Tvr[j][b]; + } + + /*** Computing Tvv^{-1}.sv ***/ + for (b = 0; b < NSUBDIFF; b++) Tvv_inv_sv[b] = sv[b]/Tvv[0][b]; + for (b = NSUBLYA + NDIFF/2; b < NVIRT; b++) Tvv_inv_sv[b] = sv[b]/Tvv[0][b]; + solveTXeqB(Tvv[0]+NSUBDIFF, Tvv[2]+NSUBDIFF, Tvv[1]+NSUBDIFF, Tvv_inv_sv+NSUBDIFF, sv+NSUBDIFF, NDIFF); + + /*** sr_new = sr - Trv.Tvv^{-1}sv ***/ + for (i = 0; i < 2; i++) { + sr_new[i] = sr[i]; + for (b = 0; b < NVIRT; b++) sr_new[i] -= Trv[i][b]*Tvv_inv_sv[b]; + } + + /*** Solve 2 by 2 system Trr_new.xr = sr_new ***/ + det = Trr_new[0][0] * Trr_new[1][1] - Trr_new[0][1] * Trr_new[1][0]; + xr[0] = (Trr_new[1][1] * sr_new[0] - Trr_new[0][1] * sr_new[1])/det; + xr[1] = (Trr_new[0][0] * sr_new[1] - Trr_new[1][0] * sr_new[0])/det; + + /*** xv = Tvv^{-1}(sv - Tvr.xr) ***/ + for (b = 0; b < NVIRT; b++) xv[b] = Tvv_inv_sv[b] - Tvv_inv_Tvr[0][b]*xr[0] - Tvv_inv_Tvr[1][b]*xr[1]; + + + /** Free memory **/ + for (i = 0; i < 2; i++) free(Tvv_inv_Tvr[i]); + free(Tvv_inv_sv); + + +} + +/************************************************************************************************************* +Obtain fplus at each bin, given the history of fminus (simple free-streaming). iz is the current time step. +fminus[0..iz-1] is known. +Assume the Lyman lines are optically thick +logfminus_hist is a NVIRT by nz array of previous log(f(nu_b - epsilon)(z)) +logfminus_Ly_hist is a 3 by nz array of previous log(f(nu - epsilon)) redward of Ly alpha, beta and gamma lines +*************************************************************************************************************/ + +void fplus_from_fminus(double fplus[NVIRT], double fplus_Ly[], double **logfminus_hist, double *logfminus_Ly_hist[], + double TR, double zstart, double dlna, unsigned iz, double z, double Eb_tab[NVIRT]) +{ + unsigned b; + double ainv, lna_start, zp1; + + zp1 = 1.+z; + lna_start = -log(1.+zstart); + + /*** Bins below Lyman alpha ***/ + for (b = 0; b < NSUBLYA-1; b++) { + ainv = zp1*Eb_tab[b+1]/Eb_tab[b]; + fplus[b] = exp(rec_interp1d(lna_start, dlna, logfminus_hist[b+1], iz, -log(ainv))); + } + + /*** highest bin below Ly-alpha: feedback from optically thick Ly-alpha ***/ + b = NSUBLYA-1; + ainv = zp1*E21/Eb_tab[b]; + fplus[b] = exp(rec_interp1d(lna_start, dlna, logfminus_Ly_hist[0], iz, -log(ainv))); + + /*** incoming photon occupation number at Lyman alpha ***/ + b = NSUBLYA; /* next highest bin */ + ainv = zp1*Eb_tab[b]/E21; + fplus_Ly[0] = exp(rec_interp1d(lna_start, dlna, logfminus_hist[b], iz, -log(ainv))); + + /*** Bins between Lyman alpha and beta ***/ + for (b = NSUBLYA; b < NSUBLYB-1; b++) { + ainv = zp1*Eb_tab[b+1]/Eb_tab[b]; + fplus[b] = exp(rec_interp1d(lna_start, dlna, logfminus_hist[b+1], iz, -log(ainv))); + } + + /*** highest bin below Ly-beta: feedback from Ly-beta ***/ + b = NSUBLYB-1; + ainv = zp1*E31/Eb_tab[b]; + fplus[b] = exp(rec_interp1d(lna_start, dlna, logfminus_Ly_hist[1], iz, -log(ainv))); + + /*** incoming photon occupation number at Lyman beta ***/ + b = NSUBLYB; /* next highest bin */ + ainv = zp1*Eb_tab[b]/E31; + fplus_Ly[1] = exp(rec_interp1d(lna_start, dlna, logfminus_hist[b], iz, -log(ainv))); + + + /*** Bins between Lyman beta and gamma ***/ + for (b = NSUBLYB; b < NVIRT-1; b++) { + ainv = zp1*Eb_tab[b+1]/Eb_tab[b]; + fplus[b] = exp(rec_interp1d(lna_start, dlna, logfminus_hist[b+1], iz, -log(ainv))); + } + + /*** highest energy bin: feedback from Ly-gamma ***/ + b = NVIRT-1; + ainv = zp1*E41/Eb_tab[b]; + fplus[b] = exp(rec_interp1d(lna_start, dlna, logfminus_Ly_hist[2], iz, -log(ainv))); + +} + +/****************************************************************************************************************** +d(x_e)/dt when including two-photon processes +This is independent of whether diffusion is present or not. +fminus[0..iz-1] is known. Update fminus[iz] +******************************************************************************************************************/ + +double rec_HMLA_2photon_dxedlna(double xe, double nH, double H, double TM, double TR, + HRATEEFF *rate_table, TWO_PHOTON_PARAMS *twog, + double zstart, double dlna, double **logfminus_hist, double *logfminus_Ly_hist[], + unsigned iz, double z, double energy_rate){ + + double xr[2]; + double xv[NVIRT]; + double xedot, Pib, feq; + double fplus[NVIRT], fplus_Ly[3]; + unsigned b, i; + + double Trr[2][2]; + double matrix[2][2]; + double *Trv[2]; + double *Tvr[2]; + double *Tvv[3]; + double sr[2]; + double sv[NVIRT]; + double Dtau[NVIRT]; + double Alpha[2], Beta[2]; + + double RLya; + double R2p2s; + double C_2p; + + double chi_ion_H; + + for (i = 0; i < 2; i++) Trv[i] = create_1D_array(NVIRT); + for (i = 0; i < 2; i++) Tvr[i] = create_1D_array(NVIRT); + for (i = 0; i < 3; i++) Tvv[i] = create_1D_array(NVIRT); + + /* Redshift photon occupation number from previous times and higher energy bins */ + fplus_from_fminus(fplus, fplus_Ly, logfminus_hist, logfminus_Ly_hist, TR, + zstart, dlna, iz, z, twog->Eb_tab); + + /* Compute real-real, real-virtual and virtual-virtual transition rates */ + populateTS_2photon(Trr, Trv, Tvr, Tvv, sr, sv, Dtau, xe, TM, TR, nH, H, rate_table, + twog, fplus, fplus_Ly, Alpha, Beta, z); + + /* Solve for the population of the real and virtual states */ + solve_real_virt(xr, xv, Trr, Trv, Tvr, Tvv, sr, sv); + + + /*************************************************************/ + + /* Dark matter annihilation*/ + RLya = 4.662899067555897e15 *H /nH/(1.-xe); /*8 PI H/(3 nH x1s lambda_Lya^3) */ + + interpolate_rates(Alpha, Beta, &R2p2s, TR, TM / TR, rate_table); + + matrix[0][0] = Beta[0] + 3.*R2p2s + L2s1s; + matrix[1][1] = Beta[1] + R2p2s + RLya; + + C_2p=(RLya+R2p2s*L2s1s/matrix[0][0])/(matrix[1][1]-R2p2s*3.*R2p2s/matrix[0][0]); + + + /*************************************************************/ + + //chi_ion_H = (1.-xe)/3.; // old approximation from Chen and Kamionkowski + if (xe < 1.) + chi_ion_H = 0.369202*pow(1.-pow(xe,0.463929),1.70237); // coefficient as revised by Galli et al. 2013 (in fact it is a fit by Vivian Poulin of columns 1 and 4 in Table V of Galli et al. 2013) + else + chi_ion_H = 0.; + + /* Obtain xe_dot */ + xedot = -nH*xe*xe*(Alpha[0]+Alpha[1]) + xr[0]*Beta[0] + xr[1]*Beta[1] + +chi_ion_H/nH*energy_rate*(1./EI+(1.-C_2p)/E21); + + + /* Update fminuses */ + + for (b = 0; b < NVIRT; b++) { + if (Dtau[b] != 0) { + Pib = (1.-exp(-Dtau[b]))/Dtau[b]; + feq = -xr[0]*Tvr[0][b] - xr[1]*Tvr[1][b]; + feq -= (b == 0 ? xv[1]*Tvv[2][0]: + b == NVIRT-1 ? xv[NVIRT-2]*Tvv[1][NVIRT-1]: + xv[b+1]*Tvv[2][b] + xv[b-1]*Tvv[1][b]); + feq /= (1.-xe)*(1.-Pib)*Tvv[0][b]; + + logfminus_hist[b][iz] = log(fplus[b] + (feq - fplus[b])*(1.-exp(-Dtau[b]))); + } + else logfminus_hist[b][iz] = log(fplus[b]); + } + + /* log(xnp/(3 x1s)) , n = 2, 3, 4, assuming 3p and 4p in Boltzmann eq. with 2s */ + logfminus_Ly_hist[0][iz] = log(xr[1]/3./(1.-xe)); + logfminus_Ly_hist[1][iz] = log(xr[0]/(1.-xe)) - E32/TR; + logfminus_Ly_hist[2][iz] = log(xr[0]/(1.-xe)) - E42/TR; + + + for (i = 0; i < 2; i++) free(Trv[i]); + for (i = 0; i < 2; i++) free(Tvr[i]); + for (i = 0; i < 3; i++) free(Tvv[i]); + + return xedot/H; +} + +/****************************************************************************************** +Post-Saha expansion using the full derivative with two-photon processes and diffusion +ADDED JANUARY 2011 +*******************************************************************************************/ + +double xe_PostSahaH(double nH, double H, double T, HRATEEFF *rate_table, TWO_PHOTON_PARAMS *twog, + double zstart, double dlna, double **logfminus_hist, double *logfminus_Ly_hist[], + unsigned iz, double z, double *Dxe, int model, double energy_rate){ + + double s, xeSaha, dxeSaha_dlna, Ddxedlna_Dxe; + + s = 3.016103031869581e21 *T*sqrt(T) *exp(-EI/T)/nH; /* xe^2/(1-xe) in Saha eq.*/ + xeSaha = 2./(1.+sqrt(1.+4./s)); /* Saha equilibrium */ + dxeSaha_dlna = -(EI/T - 1.5)/(2.*xeSaha + s)*xeSaha*xeSaha; /* Analytic derivative of above expression */ + + if (model == 0) { /* Peebles model */ + Ddxedlna_Dxe = (rec_HPeebles_dxedlna(xeSaha+0.01*(1.-xeSaha), nH, H, T, T, energy_rate) + - rec_HPeebles_dxedlna(xeSaha-0.01*(1.-xeSaha), nH, H, T, T, energy_rate))/0.02/(1.-xeSaha); + } + else if (model == 1) { /* "Recfast" model */ + Ddxedlna_Dxe = (rec_HRecFast_dxedlna(xeSaha+0.01*(1.-xeSaha), nH, H, T, T, energy_rate) + - rec_HRecFast_dxedlna(xeSaha-0.01*(1.-xeSaha), nH, H, T, T, energy_rate))/0.02/(1.-xeSaha); + } + else if (model == 2) { /* EMLA model with 2s and 2p decays only, no radiative transfer */ + Ddxedlna_Dxe = (rec_HMLA_dxedlna(xeSaha+0.01*(1.-xeSaha), nH, H, T, T, energy_rate, rate_table) + - rec_HMLA_dxedlna(xeSaha-0.01*(1.-xeSaha), nH, H, T, T, energy_rate, rate_table))/0.02/(1.-xeSaha); + } + else { /* Default mode, with radiative transfer */ + Ddxedlna_Dxe = (rec_HMLA_2photon_dxedlna(xeSaha+0.01*(1.-xeSaha),nH, H, T, T, + rate_table, twog, zstart, dlna, logfminus_hist, logfminus_Ly_hist, iz, z, energy_rate) + - rec_HMLA_2photon_dxedlna(xeSaha-0.01*(1.-xeSaha), nH, H, T, T, + rate_table, twog, zstart, dlna, logfminus_hist, logfminus_Ly_hist, iz, z, energy_rate))/0.02/(1.-xeSaha); + } + + *Dxe = dxeSaha_dlna/Ddxedlna_Dxe; + + /* Compute derivative again just so the fminuses are properly updated */ + //dxedlna = rec_HMLA_2photon_dxedlna(xeSaha + *Dxe, nH, H, T, T,rate_table, twog, zstart, dlna, logfminus_hist, logfminus_Ly_hist, iz, z, energy_rate); + + return xeSaha + *Dxe; + +} + +/***************************************************************************************************** +Update fminus(z) given the history of previous fminus's, assuming: +- thermal radiation field and Boltzmann equilibrium for the excited states if func_select = 0 +- excited states are in Saha eq. with xe, and free-streaming for the radiation field between + optically thick Lyman lines if func_select = 1 +*****************************************************************************************************/ + +void update_fminus_Saha(double **logfminus_hist, double *logfminus_Ly_hist[], + double xe, double TR, double nH, TWO_PHOTON_PARAMS *twog, + double zstart, double dlna, unsigned iz, double z, int func_select){ + + double fplus[NVIRT]; + double fplus_Ly[2]; + unsigned b; + double common_fact; + + if (func_select == 0) { + for (b = 0; b < NVIRT; b++) logfminus_hist[b][iz] = -twog->Eb_tab[b]/TR; + logfminus_Ly_hist[0][iz] = -E21/TR; + logfminus_Ly_hist[1][iz] = -E31/TR; + logfminus_Ly_hist[2][iz] = -E41/TR; + } + else { + fplus_from_fminus(fplus, fplus_Ly, logfminus_hist, logfminus_Ly_hist, TR, + zstart, dlna, iz, z, twog->Eb_tab); + + for (b = 0; b < NVIRT; b++) logfminus_hist[b][iz] = log(fplus[b]); /* free streaming */ + + common_fact = log(nH*xe*xe/(1.-xe)/(3.016103031869581e21 *TR*sqrt(TR))); + logfminus_Ly_hist[0][iz] = common_fact + EI/4./TR; /* Saha equilibrium with the continuum */ + logfminus_Ly_hist[1][iz] = common_fact + EI/9./TR; + logfminus_Ly_hist[2][iz] = common_fact + EI/16./TR; + } +} + +/***********************************************************************************************************/ diff --git a/class/hyrec/hydrogen.h b/class/hyrec/hydrogen.h new file mode 100644 index 00000000..948c36e7 --- /dev/null +++ b/class/hyrec/hydrogen.h @@ -0,0 +1,116 @@ +/*************************************************************************************************/ +/* HYREC: Hydrogen and Helium Recombination Code */ +/* Written by Yacine Ali-Haimoud and Chris Hirata (Caltech) */ +/* */ +/* hydrogen.h: all functions related to Hydrogen recombination */ +/* */ +/* Units used: cgs + eV (all temperatures in eV) */ +/* Version: Januray 2011 (updated value of 2s--1s decay rate, */ +/* changed temperature range for effective rates) */ +/*************************************************************************************************/ + +/****** CONSTANTS IN CGS + EV UNIT SYSTEM *******/ + +#define EI 13.598286071938324 /* Hydrogen ionization energy in eV, reduced mass, no relativistic corrections */ + +/* Energy differences between excited levels of hydrogen -- used often */ +#define E21 10.198714553953742 +#define E31 12.087365397278509 +#define E41 12.748393192442178 +#define E32 1.8886508433247664 +#define E42 2.5496786384884356 + +#define hPc 1.239841874331e-04 /* hc in eV cm */ +#define mH 0.93878299831e9 /* Hydrogen atom mass in eV/c^2 */ +#define kBoltz 8.617343e-5 /* Boltzmann constant in eV/K */ +#define L2s1s 8.2206 /* 2s -> 1s two-photon decay rate in s^{-1} (Labzowsky et al 2005) */ + + + +double square(double x); +double cube(double x); + + +/*********** PEEBLES + POST-SAHA + RECFAST ***************/ + +double alphaB_PPB(double TM); +double rec_HPeebles_dxedlna(double xe, double nH, double H, double TM, double TR, double energy_rate); +double rec_HRecFast_dxedlna(double xe, double nH, double H, double TM, double TR, double energy_rate); + +/************* EFFECTIVE MULTI LEVEL ATOM *******************/ + +#define ALPHA_FILE "Alpha_inf.dat" /* Contains the effective recombination coefficients to 2s and 2p */ +#define RR_FILE "R_inf.dat" /* Contains the effective transfer rate R_{2p,2s} */ + + +/* Boundaries and number of elements of temperature tables */ +#define TR_MIN 0.004 /* Tr parameters */ +#define TR_MAX 0.4 +#define NTR 100 +#define TM_TR_MIN 0.1 /* Tm/Tr parameters */ +#define TM_TR_MAX 1.0 +#define NTM 40 + +/* Effective rate coefficients structure */ +typedef struct { + double *logTR_tab; + double *TM_TR_tab; + double **logAlpha_tab[2]; + double *logR2p2s_tab; + double DlogTR, DTM_TR; +} +HRATEEFF; + +void read_rates(HRATEEFF *rate_table); +void interpolate_rates(double Alpha[2], double Beta[2], double *R2p2s, double TR, double TM_TR, HRATEEFF *rate_table); +double rec_HMLA_dxedlna(double xe, double nH, double Hubble, double TM, double TR, double energy_rate, HRATEEFF *rate_table); + +/************ TWO-PHOTON PROCESSES AND DIFFUSION ************/ + +#define EFFECT_A 1 /* 2s-->1s stimulated two-photon decays and non-thermal absorptions */ +#define EFFECT_B 1 /* Sub-Lyman alpha two-photon transitions 3s/3d<--> 1s and 4s/4d<-->1s */ +#define EFFECT_C 1 /* Super-Lyman alpha two-photon transitions 3s/3d<--> 1s and 4s/4d<-->1s */ +#define EFFECT_D 1 /* Raman scattering from 2s and 3s/3d */ +#define DIFFUSION 1 /* Lyman alpha frequency diffusion */ + + +#define NSUBLYA 140 +#define NSUBLYB 271 +#define NVIRT 311 +#define NDIFF 80 +#define TWOG_FILE "two_photon_tables.dat" +/* maximum dlna = 8.5e-5 */ + + + +typedef struct { + double Eb_tab[NVIRT]; /* Energies of the virtual levels in eV */ + double A1s_tab[NVIRT]; /* 3*A2p1s*phi(E)*DE */ + double A2s_tab[NVIRT]; /* dLambda_2s/dE * DeltaE if E < Elya dK2s/dE * Delta E if E > Elya */ + double A3s3d_tab[NVIRT]; /* (dLambda_3s/dE + 5*dLambda_3d/dE) * Delta E for E < ELyb, Raman scattering rate for E > ELyb */ + double A4s4d_tab[NVIRT]; /* (dLambda_4s/dE + 5*dLambda_4d/dE) * Delta E */ +} TWO_PHOTON_PARAMS; + +void read_twog_params(TWO_PHOTON_PARAMS *twog); +void populate_Diffusion(double *Aup, double *Adn, double *A2p_up, double *A2p_dn, + double TM, double Eb_tab[NVIRT], double A1s_tab[NVIRT]); +void populateTS_2photon(double Trr[2][2], double *Trv[2], double *Tvr[2], double *Tvv[3], + double sr[2], double sv[NVIRT], double Dtau[NVIRT], + double xe, double TM, double TR, double nH, double H, HRATEEFF *rate_table, + TWO_PHOTON_PARAMS *twog, double fplus[NVIRT], double fplus_Ly[], + double Alpha[], double Beta[], double z); +void solveTXeqB(double *diag, double *updiag, double *dndiag, double *X, double *B, unsigned N); +void solve_real_virt(double xr[2], double xv[NVIRT], double Trr[2][2], double *Trv[2], double *Tvr[2], + double *Tvv[3], double sr[2], double sv[NVIRT]); +void fplus_from_fminus(double fplus[NVIRT], double fplus_Ly[], double **logfminus_hist, double *logfminus_Ly_hist[], + double TR, double zstart, double dlna, unsigned iz, double z, double Eb_tab[NVIRT]); +double rec_HMLA_2photon_dxedlna(double xe, double nH, double H, double TM, double TR, + HRATEEFF *rate_table, TWO_PHOTON_PARAMS *twog, + double zstart, double dlna, double **logfminus_hist, double *logfminus_Ly_hist[], unsigned iz, double z, + double energy_rate); +double xe_PostSahaH(double nH, double H, double T, HRATEEFF *rate_table, TWO_PHOTON_PARAMS *twog, + double zstart, double dlna, double **logfminus_hist, double *logfminus_Ly_hist[], + unsigned iz, double z, double *Dxe, int model, double energy_rate); +void update_fminus_Saha(double **logfminus_hist, double *logfminus_Ly_hist[], + double xe, double TR, double nH, TWO_PHOTON_PARAMS *twog, + double zstart, double dlna, unsigned iz, double z, int func_select); diff --git a/class/hyrec/hyrec.c b/class/hyrec/hyrec.c new file mode 100644 index 00000000..4cf3e3fd --- /dev/null +++ b/class/hyrec/hyrec.c @@ -0,0 +1,76 @@ +/*************************************************************************************************/ +/* HYREC: Hydrogen and Helium Recombination Code */ +/* Written by Yacine Ali-Haimoud and Chris Hirata (Caltech) */ +/* */ +/* hyrec.c: main module */ +/* */ +/* Version: November 2011 */ +/* Revision history: */ +/* - written November 2010 */ +/* - January 2011: changed various switches (notably for post-Saha expansions) */ +/* so that they remain valid for arbitrary cosmologies */ +/* - November 2011: extended integration down to z = 0 with Peeble's model for z < 20 */ +/* changed dTm/dlna so it can be used at all times */ +/*************************************************************************************************/ + +#include +#include +#include +#include + +#include "hyrec.h" + +int main(void) { + + REC_COSMOPARAMS param; + HRATEEFF rate_table; + TWO_PHOTON_PARAMS twog_params; + double *xe_output, *Tm_output; + long iz; + + double dz = -1; + unsigned nz = 8001; + double z, xe, Tm; + + + /* Build effective rate table */ + rate_table.logTR_tab = create_1D_array(NTR); + rate_table.TM_TR_tab = create_1D_array(NTM); + rate_table.logAlpha_tab[0] = create_2D_array(NTM, NTR); + rate_table.logAlpha_tab[1] = create_2D_array(NTM, NTR); + rate_table.logR2p2s_tab = create_1D_array(NTR); + read_rates(&rate_table); + + /* Read two-photon rate tables */ + read_twog_params(&twog_params); + + + /* Get cosmological parameters */ + rec_get_cosmoparam(stdin, stderr, ¶m); + + /* Compute the recombination history */ + xe_output = (double*)malloc((size_t)(param.nz*sizeof(double))); + Tm_output = (double*)malloc((size_t)(param.nz*sizeof(double))); + + rec_build_history(¶m, &rate_table, &twog_params, xe_output, Tm_output); + + /* Interpolate at the desired output redshifts */ + for(iz=0; iz +#include +#include + +#include "hyrectools.h" + +/************************************************************************** +Creates a [n1] array. +***************************************************************************/ + +double *create_1D_array(unsigned n1){ + + double *matrix = (double *) calloc(n1, sizeof(double)); + if (matrix == NULL) { + fprintf(stderr, "memory issue in create_1D_array\n"); + exit(1); + } + return matrix; +} + +/************************************************************************** +Creates a [n1][n2] array. +***************************************************************************/ + +double **create_2D_array(unsigned n1, unsigned n2){ + + unsigned i; + double **matrix = (double **) calloc(n1, sizeof(double *)); + if (matrix == NULL){ + fprintf(stderr, "memory issue in create_2D_array\n"); + exit(1); + } + for (i = 0; i < n1; i++) matrix[i] = create_1D_array(n2); + + return matrix; +} + +/******************************************************************************* +Frees the memory of a [n1][] array. +********************************************************************************/ + +void free_2D_array(double **matrix, unsigned n1){ + + unsigned i; + for (i = 0; i < n1; i++) free(matrix[i]); + + free(matrix); +} + +/********************************************************************************* +Creates a [n1][n2][n3] matrix. +**********************************************************************************/ + +double ***create_3D_array(unsigned n1, unsigned n2, unsigned n3){ + + unsigned i; + double ***matrix = (double ***) calloc(n1, sizeof(double **)); + if (matrix == NULL) { + fprintf(stderr, "memory issue in create_3D_array\n"); + exit(1); + } + for (i = 0; i < n1; i++) matrix[i] = create_2D_array(n2, n3); + + return matrix; +} + +/*********************************************************************************** +Frees memory of a [n1][n2][] matrix +***********************************************************************************/ + +void free_3D_array(double ***matrix, unsigned n1, unsigned n2) { + unsigned i; + for (i = 0; i < n1; i++) free_2D_array(matrix[i], n2); + + free(matrix); +} + +/******************************************************************************************** +Making an evenly spaced array. +Input: xmin, xmax, Nx, xtab. +xtab is changed, s.t. xtab[0] = xmin, xtab[Nx-1] = xmax, evenly spaced. +ATTENTION: there will be Nx points, and Nx-1 intervals. +**********************************************************************************************/ + +void maketab(double xmin, double xmax, unsigned Nx, double *xtab){ + unsigned i; + double h = (xmax - xmin)/(Nx - 1.0); + + for (i = 0; i < Nx; i++) xtab[i] = xmin + i * h; +} + +/************************************************************************************ + Interpolation routine for 1-D table. Uses cubic interpolation assuming + uniformly spaced x-values, x0 ... x0+(Nx-1)*dx. +*************************************************************************************/ + +double rec_interp1d(double x0, double dx, double *ytab, unsigned int Nx, double x) { + + long ix; + double frac; + + /* Check if in range */ + if (dx > 0 && (xx0+dx*(Nx-1))) { + fprintf(stderr, "Error: rec_interp1d: x-value out of range in interpolation routine.\n"); + exit(1); + } + if (dx < 0 && (x>x0 || xNx-3) ix=Nx-3; + frac = (x-x0)/dx-ix; + ytab += ix-1; + + /* Return value */ + return( + -ytab[0]*frac*(1.-frac)*(2.-frac)/6. + +ytab[1]*(1.+frac)*(1.-frac)*(2.-frac)/2. + +ytab[2]*(1.+frac)*frac*(2.-frac)/2. + +ytab[3]*(1.+frac)*frac*(frac-1.)/6. + ); +} + +/************************************************************************************ + Interpolation routine for 2-D table. Uses bicubic interpolation assuming + uniformly spaced x1 and x2-values. +*************************************************************************************/ + +double rec_interp2d(double x10, double dx1, double x20, double dx2, double **ytab, + unsigned int Nx1, unsigned int Nx2, double x1, double x2) { + + int j; + long ix1; + double frac1; + double temp[4]; + + /* Check if in range in x1 */ + if (x1x10+dx1*(Nx1-1)) { + fprintf(stderr, "Error: rec_interp2d: x1-value out of range in interpolation routine.\n"); + exit(1); + } + + /* Identify location to interpolate in x1 */ + ix1 = (long)floor((x1-x10)/dx1); + if (ix1<1) ix1=1; + if (ix1>Nx1-3) ix1=Nx1-3; + frac1 = (x1-x10)/dx1-ix1; + ytab += ix1-1; + + /* Get values interpolated over x2 at the 4 neighboring points in x1 */ + for(j=0;j<4;j++) temp[j] = rec_interp1d(x20,dx2,ytab[j],Nx2,x2); + + return( + -temp[0]*frac1*(1.-frac1)*(2.-frac1)/6. + +temp[1]*(1.+frac1)*(1.-frac1)*(2.-frac1)/2. + +temp[2]*(1.+frac1)*frac1*(2.-frac1)/2. + +temp[3]*(1.+frac1)*frac1*(frac1-1.)/6. + ); +} + +/*********************************************************************************************/ diff --git a/class/hyrec/hyrectools.h b/class/hyrec/hyrectools.h new file mode 100644 index 00000000..7616d7b4 --- /dev/null +++ b/class/hyrec/hyrectools.h @@ -0,0 +1,15 @@ +/*************************** HYRECTOOLS.H ******************************** +Multidimensional array creation and freeing functions. +Also, function to make linear arrays and interpolation routines. +Version: January 2011 (identical to November 2010) +**************************************************************************/ + +double *create_1D_array(unsigned n1); +double **create_2D_array(unsigned n1, unsigned n2); +void free_2D_array(double **matrix, unsigned n1); +double ***create_3D_array(unsigned n1, unsigned n2, unsigned n3); +void free_3D_array(double ***matrix, unsigned n1, unsigned n2); +void maketab(double xmin, double xmax, unsigned Nx, double *xtab); +double rec_interp1d(double x0, double dx, double *ytab, unsigned int Nx, double x); +double rec_interp2d(double x10, double dx1, double x20, double dx2, double **ytab, + unsigned int Nx1, unsigned int Nx2, double x1, double x2); diff --git a/class/hyrec/input.dat b/class/hyrec/input.dat new file mode 100644 index 00000000..e739d0b6 --- /dev/null +++ b/class/hyrec/input.dat @@ -0,0 +1,8 @@ +2.728 +.021976 +.13 +0 +.343 +-1 0 +.24 +3.04 diff --git a/class/hyrec/two_photon_tables.dat b/class/hyrec/two_photon_tables.dat new file mode 100644 index 00000000..df04635e --- /dev/null +++ b/class/hyrec/two_photon_tables.dat @@ -0,0 +1,311 @@ + 5.1790432 0.0000000 0.33259349 0.0000000 0.0000000 + 5.3383879 0.0000000 0.33232657 0.0000000 0.0000000 + 5.4977327 0.0000000 0.33179062 0.0000000 0.0000000 + 5.6571046 0.0000000 0.33098159 0.0000000 0.0000000 + 5.8164493 0.0000000 0.32989325 0.0000000 0.0000000 + 5.9758212 0.0000000 0.32851708 0.0000000 0.0000000 + 6.1351659 0.0000000 0.32684231 1.3628747 0.0000000 + 6.2945106 0.0000000 0.32485537 1.3693452 0.0000000 + 6.4538826 0.0000000 0.32254017 1.3820041 0.73480877 + 6.6132273 0.0000000 0.31987727 1.4011732 0.73833172 + 6.7725720 0.0000000 0.31684389 1.4273542 0.74547518 + 6.9319439 0.0000000 0.31341336 1.4612583 0.75644083 + 7.0912886 0.0000000 0.30955451 1.5038534 0.77154767 + 7.2506605 0.0000000 0.30523101 1.5564301 0.79125521 + 7.4100052 0.0000000 0.30040073 1.6206984 0.81619725 + 7.5693500 0.0000000 0.29501454 1.6989265 0.84723252 + 7.7287219 0.0000000 0.28901515 1.7941442 0.88552099 + 7.8880666 0.0000000 0.28233575 1.9104474 0.93263584 + 8.0474113 0.0000000 0.27489786 2.0534603 0.99073481 + 8.2067832 0.0000000 0.26660916 2.2310600 1.0628281 + 8.3195130 0.0000000 0.10739775 0.98390967 0.46420361 + 8.3846760 0.0000000 0.10381181 1.0065348 0.47209379 + 8.4486423 0.0000000 0.10029073 1.0315323 0.48092498 + 8.5114392 0.0000000 0.096832649 1.0591144 0.49077008 + 8.5730938 0.0000000 0.093435794 1.0895259 0.50171471 + 8.6336334 0.0000000 0.090098347 1.1230492 0.51385695 + 8.6930851 0.0000000 0.086818614 1.1600102 0.52731174 + 8.7515034 0.0000000 0.083594818 1.2007873 0.54221173 + 8.8088609 0.0000000 0.080425307 1.2458202 0.55871185 + 8.8651850 0.0000000 0.077308429 1.2956214 0.57699291 + 8.9205573 0.0000000 0.074242571 1.3507925 0.59726594 + 8.9749504 0.0000000 0.071226124 1.4120406 0.61978038 + 9.0283917 0.0000000 0.068257476 1.4802028 0.64482996 + 9.0809082 0.0000000 0.065335180 1.5562745 0.67276414 + 9.1325545 0.0000000 0.062457626 1.6414476 0.70399992 + 9.1833033 0.0000000 0.059623409 1.7371569 0.73903897 + 9.2331818 0.0000000 0.056831042 1.8451449 0.77848856 + 9.2822173 0.0000000 0.054079078 1.9675413 0.82308929 + 9.3304368 0.0000000 0.051366073 2.1069748 0.87375299 + 9.3778676 0.0000000 0.048690703 2.2667167 0.93161140 + 9.4071039 0.0000000 0.011759100 0.59465520 0.24300710 + 9.4187169 0.0000000 0.011594717 0.60658166 0.24730819 + 9.4302754 0.0000000 0.011430875 0.61895856 0.25176745 + 9.4417796 0.0000000 0.011267578 0.63180865 0.25639282 + 9.4532565 0.0000000 0.011104819 0.64515677 0.26119267 + 9.4646791 0.0000000 0.010942592 0.65902882 0.26617621 + 9.4760472 0.0000000 0.010780894 0.67345277 0.27135266 + 9.4873610 0.0000000 0.010619717 0.68845828 0.27673248 + 9.4986476 0.0000000 0.010459051 0.70407730 0.28232636 + 9.5098798 0.0000000 0.010298903 0.72034409 0.28814622 + 9.5210576 0.0000000 0.010139258 0.73729478 0.29420423 + 9.5322082 0.0000000 0.0099801174 0.75496907 0.30051399 + 9.5433044 0.0000000 0.0098214725 0.77340855 0.30708976 + 9.5543462 0.0000000 0.0096633150 0.79265875 0.31394703 + 9.5653608 0.0000000 0.0095056451 0.81276797 0.32110216 + 9.5763210 0.0000000 0.0093484585 0.83378887 0.32857317 + 9.5872268 0.0000000 0.0091917470 0.85577788 0.33637913 + 9.5981055 0.0000000 0.0090355065 0.87879585 0.34454102 + 9.6089297 0.0000000 0.0088797328 0.90290884 0.35308085 + 9.6196995 0.0000000 0.0087244218 0.92818795 0.36202295 + 9.6304422 0.0000000 0.0085695652 0.95471056 0.37139353 + 9.6411304 0.0000000 0.0084151590 0.98256052 0.38122091 + 9.6517915 0.0000000 0.0082611989 1.0118291 0.39153615 + 9.6623982 0.0000000 0.0081076809 1.0426151 0.40237240 + 9.6729776 0.0000000 0.0079546008 1.0750270 0.41376659 + 9.6835027 0.0000000 0.0078019544 1.1091822 0.42575819 + 9.6939734 0.0000000 0.0076497295 1.1452100 0.43839064 + 9.7044169 0.0000000 0.0074979301 1.1832514 0.45171182 + 9.7148059 0.0000000 0.0073465479 1.2234614 0.46577359 + 9.7251678 0.0000000 0.0071955789 1.2660099 0.48063328 + 9.7354753 0.0000000 0.0070450147 1.3110845 0.49635370 + 9.7457556 0.0000000 0.0068948554 1.3588915 0.51300458 + 9.7559816 0.0000000 0.0067450928 1.4096592 0.53066200 + 9.7661803 0.0000000 0.0065957225 1.4636408 0.54941125 + 9.7763246 0.0000000 0.0064467406 1.5211166 0.56934608 + 9.7864417 0.0000000 0.0062981430 1.5823990 0.59057115 + 9.7965044 0.0000000 0.0061499254 1.6478362 0.61320252 + 9.8065400 0.0000000 0.0060020796 1.7178172 0.63737054 + 9.8165211 0.0000000 0.0058546056 1.7927784 0.66322073 + 9.8264751 0.0000000 0.0057074910 1.8732097 0.69091650 + 9.8364018 0.0000000 0.0055607400 1.9596638 0.72064212 + 9.8462742 0.0000000 0.0054143443 2.0527647 0.75260504 + 9.8561193 0.0000000 0.0052682998 2.1532213 0.78704112 + 9.8659101 0.0000000 0.0051225981 2.2618375 0.82421804 + 9.8756737 0.0000000 0.0049772394 2.3795339 0.86444079 + 9.8853828 0.0000000 0.0048322152 2.5073614 0.90805924 + 9.8950648 0.0000000 0.0046875257 2.6465363 0.95547487 + 9.9047196 0.0000000 0.0045431585 2.7984556 1.0071512 + 9.9143200 0.0000000 0.0043991176 2.9647433 1.0636252 + 9.9238932 0.0000000 0.0042553907 3.1472897 1.1255223 + 9.9334120 0.0000000 0.0041119786 3.3483107 1.1935742 + 9.9429036 0.0000000 0.0039688742 3.5704149 1.2686415 + 9.9523680 0.0000000 0.0038260732 3.8166898 1.3517420 + 9.9617780 0.0000000 0.0036835707 4.0908109 1.4440867 + 9.9711608 0.0000000 0.0035413629 4.3971850 1.5471258 + 9.9805165 0.0000000 0.0033994443 4.7411323 1.6626075 + 9.9898449 0.0000000 0.0032578102 5.1291164 1.7926561 + 9.9991189 0.0000000 0.0031164567 5.5690652 1.9398727 + 10.008339 0.0000000 0.0029753784 6.0707791 2.1074710 + 10.017558 0.0000000 0.0028345711 6.6464922 2.2994573 + 10.023854 32.507290 0.0023830786 6.2180801 2.1447811 + 10.031818 34.867503 0.0022341212 6.6442447 2.2850387 + 10.039597 37.462452 0.0020906766 7.1121731 2.4388665 + 10.047192 40.322141 0.0019527378 7.6271724 2.6079798 + 10.054603 43.481310 0.0018202895 8.1953847 2.7943633 + 10.061829 46.980331 0.0016933076 8.8239454 3.0003218 + 10.068871 50.866309 0.0015717599 9.5211766 3.2285425 + 10.075729 55.194433 0.0014556060 10.296825 3.4821717 + 10.082402 60.029646 0.0013447977 11.162355 3.7649091 + 10.088891 65.448727 0.0012392792 12.131318 4.0811257 + 10.095196 71.542893 0.0011389872 13.219806 4.4360114 + 10.101317 78.421085 0.0010438512 14.447031 4.8357603 + 10.107253 86.214134 0.00095379371 15.836061 5.2878068 + 10.113004 95.080096 0.00086873026 17.414751 5.8011271 + 10.118572 105.21113 0.00078856993 19.216962 6.3866275 + 10.123955 116.84245 0.00071321537 21.284122 7.0576510 + 10.129153 130.26406 0.00064256300 23.667304 7.8306401 + 10.134168 145.83639 0.00057650329 26.429957 8.7260180 + 10.138998 164.01114 0.00051492093 29.651581 9.7693683 + 10.143643 185.35967 0.00045769503 33.432710 10.993036 + 10.148105 210.61197 0.00040469936 37.901758 12.438327 + 10.152382 240.71093 0.00035580253 43.224551 14.158568 + 10.156475 276.88915 0.00031086822 49.617819 16.223445 + 10.160383 320.77944 0.00026975536 57.368593 18.725225 + 10.164107 374.57666 0.00023231838 66.862632 21.787894 + 10.167647 441.27993 0.00019840738 78.626942 25.580799 + 10.171002 525.06337 0.00016786835 93.394860 30.339553 + 10.174173 631.85868 0.00014054338 112.20831 36.398860 + 10.177160 770.29809 0.00011627090 136.58333 44.245645 + 10.179962 953.29373 9.4885811e-05 168.78722 54.608029 + 10.182580 1200.7901 7.6219782e-05 212.32161 68.610355 + 10.185014 1544.7904 6.0101397e-05 272.80444 88.056266 + 10.187263 2039.0659 4.6356387e-05 359.67357 115.97542 + 10.189328 2779.2427 3.4807837e-05 489.71101 157.75439 + 10.191209 3948.0937 2.5276392e-05 694.98878 223.68631 + 10.192905 5929.7347 1.7580467e-05 1042.9018 335.39853 + 10.194417 9644.7743 1.1536453e-05 1694.9577 544.71455 + 10.195745 17777.940 6.9589277e-06 3122.1046 1002.7348 + 10.196889 41262.571 3.6608641e-06 7242.0422 2324.6824 + 10.197848 177006.04 1.4538371e-06 31050.311 9962.3846 + 10.199581 177006.04 1.4556978e-06 31026.383 9947.7596 + 10.200541 41262.571 3.6695995e-06 7228.8991 2316.6493 + 10.201684 17777.940 6.9848636e-06 3112.6870 996.97866 + 10.203012 9644.7743 1.1597503e-05 1687.5014 540.15718 + 10.204524 5929.7347 1.7704930e-05 1036.6788 331.59494 + 10.206220 3948.0937 2.5506159e-05 689.62275 220.40653 + 10.208101 2779.2427 3.5202021e-05 484.98002 154.86276 + 10.210166 2039.0659 4.6995370e-05 355.43462 113.38453 + 10.212415 1544.7904 6.1091291e-05 268.95944 85.706161 + 10.214849 1200.7901 7.7697307e-05 208.80005 66.457939 + 10.217467 953.29373 9.7023591e-05 165.53653 52.621170 + 10.220269 770.29809 0.00011928317 133.56315 42.399682 + 10.223256 631.85868 0.00014469214 109.38694 34.674407 + 10.226427 525.06337 0.00017346987 90.746871 28.721073 + 10.229782 441.27993 0.00020583921 76.131614 24.055626 + 10.233322 374.57666 0.00024202669 64.502833 20.345558 + 10.237046 320.77944 0.00028226277 55.129983 17.356961 + 10.240955 276.88915 0.00032678197 47.488265 14.921837 + 10.245047 240.71093 0.00037582317 41.193691 12.917284 + 10.249324 210.61197 0.00042962975 35.960664 11.251908 + 10.253786 185.35967 0.00048844982 31.573634 9.8567484 + 10.258431 164.01114 0.00055253646 27.867753 8.6790726 + 10.263261 145.83639 0.00062214787 24.715423 7.6780755 + 10.268276 130.26406 0.00069754762 22.016800 6.8218335 + 10.273474 116.84245 0.00077900484 19.692970 6.0851208 + 10.278858 105.21113 0.00086679445 17.680984 5.4478205 + 10.284425 95.080096 0.00096119733 15.930202 4.8937534 + 10.290177 86.214134 0.0010625006 14.399566 4.4098050 + 10.296113 78.421085 0.0011709977 13.055543 3.9852672 + 10.302233 71.542893 0.0012869887 11.870560 3.6113374 + 10.308538 65.448727 0.0014107806 10.821801 3.2807339 + 10.315027 60.029646 0.0015426873 9.8902709 2.9873968 + 10.321700 55.194433 0.0016830299 9.0600736 2.7262555 + 10.328558 50.866309 0.0018321372 8.3178323 2.4930450 + 10.335600 46.980331 0.0019903453 7.6522361 2.2841599 + 10.342826 43.481310 0.0021579983 7.0536768 2.0965386 + 10.350237 40.322141 0.0023354486 6.5139566 1.9275698 + 10.357832 37.462452 0.0025230565 6.0260520 1.7750170 + 10.365611 34.867503 0.0027211909 5.5839218 1.6369575 + 10.373575 32.507290 0.0029302297 5.1823506 1.5117316 + 10.375900 0.0000000 0.0029239956 4.9185873 1.4364714 + 10.383733 0.0000000 0.0030576204 4.4757141 1.3009962 + 10.391538 0.0000000 0.0031911861 4.0885991 1.1828494 + 10.399289 0.0000000 0.0033246969 3.7483314 1.0792390 + 10.407040 0.0000000 0.0034581585 3.4476976 0.98791027 + 10.414764 0.0000000 0.0035915755 3.1808230 0.90702639 + 10.422461 0.0000000 0.0037249532 2.9428785 0.83507989 + 10.430103 0.0000000 0.0038582970 2.7298647 0.77082346 + 10.437745 0.0000000 0.0039916120 2.5384437 0.71321906 + 10.445333 0.0000000 0.0041249033 2.3658246 0.66139621 + 10.452921 0.0000000 0.0042581740 2.2096454 0.61462204 + 10.460482 0.0000000 0.0043914357 2.0679026 0.57227475 + 10.467988 0.0000000 0.0045246890 1.9388899 0.53382467 + 10.475494 0.0000000 0.0046579341 1.8211435 0.49881852 + 10.482973 0.0000000 0.0047911875 1.7134034 0.46686642 + 10.490398 0.0000000 0.0049244491 1.6145801 0.43763154 + 10.497822 0.0000000 0.0050577190 1.5237275 0.41082215 + 10.505220 0.0000000 0.0051910136 1.4400217 0.38618401 + 10.512563 0.0000000 0.0053243290 1.3627416 0.36349485 + 10.519906 0.0000000 0.0054576774 1.2912545 0.34256004 + 10.527222 0.0000000 0.0055910588 1.2250029 0.32320844 + 10.534511 0.0000000 0.0057244774 1.1634952 0.30528891 + 10.541772 0.0000000 0.0058579498 1.1062952 0.28866778 + 10.549006 0.0000000 0.0059914676 1.0530158 0.27322652 + 10.556213 0.0000000 0.0061250474 1.0033116 0.25885941 + 10.563393 0.0000000 0.0062586891 0.95687467 0.24547243 + 10.570546 0.0000000 0.0063924011 0.91342933 0.23298139 + 10.577672 0.0000000 0.0065261875 0.87272813 0.22131070 + 10.584770 0.0000000 0.0066600565 0.83454834 0.21039279 + 10.591868 0.0000000 0.0067940081 0.79868934 0.20016654 + 10.598912 0.0000000 0.0069280548 0.76496987 0.19057690 + 10.605929 0.0000000 0.0070622007 0.73322619 0.18157411 + 10.612946 0.0000000 0.0071964498 0.70330919 0.17311311 + 10.619935 0.0000000 0.0073308064 0.67508436 0.16515301 + 10.626897 0.0000000 0.0074652828 0.64842845 0.15765667 + 10.633833 0.0000000 0.0075998831 0.62322942 0.15059026 + 10.640740 0.0000000 0.0077346074 0.59938516 0.14392289 + 10.647621 0.0000000 0.0078694681 0.57680189 0.13762642 + 10.654475 0.0000000 0.0080044734 0.55539424 0.13167505 + 10.661301 0.0000000 0.0081396233 0.53508365 0.12604519 + 10.668127 0.0000000 0.0082749260 0.51579752 0.12071516 + 10.674899 0.0000000 0.0084103900 0.49746998 0.11566505 + 10.681671 0.0000000 0.0085460191 0.48003966 0.11087656 + 10.688416 0.0000000 0.0086818260 0.46345004 0.10633281 + 10.695134 0.0000000 0.0088178064 0.44764908 0.10201828 + 10.701824 0.0000000 0.0089539769 0.43258895 0.097918604 + 10.708514 0.0000000 0.0090903374 0.41822481 0.094020486 + 10.715150 0.0000000 0.0092269004 0.40451541 0.090311651 + 10.721786 0.0000000 0.0093636700 0.39142250 0.086780710 + 10.728395 0.0000000 0.0095006503 0.37891056 0.083417118 + 10.734977 0.0000000 0.0096378538 0.36694640 0.080211050 + 10.741531 0.0000000 0.0097752803 0.35549942 0.077153433 + 10.748058 0.0000000 0.0099129465 0.34454087 0.074235734 + 10.754585 0.0000000 0.010050848 0.33404397 0.071450128 + 10.761058 0.0000000 0.010189002 0.32398380 0.068789205 + 10.767531 0.0000000 0.010327412 0.31433697 0.066246132 + 10.773976 0.0000000 0.010466082 0.30508196 0.063814491 + 10.780395 0.0000000 0.010605025 0.29619834 0.061488297 + 10.786813 0.0000000 0.010744245 0.28766675 0.059261949 + 10.821625 0.0000000 0.11515986 2.4630767 0.48586331 + 10.883334 0.0000000 0.12944318 1.8962622 0.34356818 + 10.942976 0.0000000 0.14414030 1.4927104 0.24624795 + 11.000687 0.0000000 0.15934676 1.1964871 0.17795969 + 11.056549 0.0000000 0.17517102 0.97348725 0.12913361 + 11.110616 0.0000000 0.19173753 0.80200510 0.093783374 + 11.162969 0.0000000 0.20919058 0.66772307 0.068037507 + 11.213691 0.0000000 0.22769908 0.56090602 0.049325331 + 11.262835 0.0000000 0.24746272 0.47475961 0.035906305 + 11.310483 0.0000000 0.26872008 0.40443423 0.026588298 + 11.356690 0.0000000 0.29175924 0.34639807 0.020554503 + 11.401510 0.0000000 0.31693185 0.29803433 0.017255506 + 11.445025 0.0000000 0.34467227 0.25737305 0.016342238 + 11.487234 0.0000000 0.37552370 0.22291076 0.017626143 + 11.528219 0.0000000 0.41017466 0.19348491 0.021059166 + 11.568008 0.0000000 0.44951047 0.16818652 0.026730256 + 11.606681 0.0000000 0.49468811 0.14629725 0.034878225 + 11.644240 0.0000000 0.54724778 0.12724388 0.045924230 + 11.680765 0.0000000 0.60927856 0.11056504 0.060531831 + 11.716256 0.0000000 0.68368269 0.095886223 0.079709526 + 11.750796 0.0000000 0.77459701 0.082901136 0.10498508 + 11.784356 0.0000000 0.88810078 0.071357433 0.13870704 + 11.817047 0.0000000 1.0334535 0.061045825 0.18458571 + 11.848839 0.0000000 1.2253780 0.051791593 0.24871234 + 11.879816 0.0000000 1.4885437 0.043447986 0.34160192 + 11.909950 0.0000000 1.8670952 0.035890996 0.48261725 + 11.939295 0.0000000 2.4470039 0.029015262 0.71055870 + 11.967906 0.0000000 3.4158715 0.022730661 1.1125647 + 11.995755 0.0000000 5.2549629 0.016959733 1.9188541 + 12.022925 0.0000000 9.5520551 0.011635479 3.9125643 + 12.049387 0.0000000 24.609350 0.0066995850 11.325614 + 12.075196 0.0000000 213.21388 0.0021009695 110.55035 + 12.100380 0.0000000 164.30387 0.0022054218 96.356676 + 12.124939 0.0000000 17.241001 0.0062596390 11.496677 + 12.148872 0.0000000 5.5683169 0.010097584 4.2507381 + 12.172261 0.0000000 2.5043677 0.013751749 2.2075845 + 12.195079 0.0000000 1.3147974 0.017251837 1.3529301 + 12.217326 0.0000000 0.75084114 0.020625366 0.91433305 + 12.239083 0.0000000 0.44939023 0.023898134 0.65895417 + 12.260324 0.0000000 0.27521822 0.027094723 0.49689751 + 12.281047 0.0000000 0.16926110 0.030238941 0.38743325 + 12.301309 0.0000000 0.10266384 0.033354264 0.30990278 + 12.321108 0.0000000 0.060110610 0.036464296 0.25290760 + 12.340472 0.0000000 0.032937424 0.039593250 0.20973213 + 12.359373 0.0000000 0.015993084 0.042766487 0.17620809 + 12.377867 0.0000000 0.0060928889 0.046011124 0.14963420 + 12.395926 0.0000000 0.0012084142 0.049356734 0.12819630 + 12.413603 0.0000000 2.0781537e-05 0.052836237 0.11063844 + 12.430900 0.0000000 0.0016640968 0.056486953 0.096068059 + 12.447817 0.0000000 0.0055733826 0.060351966 0.083836418 + 12.464379 0.0000000 0.011392612 0.064481878 0.073462530 + 12.480561 0.0000000 0.018919022 0.068937064 0.064583415 + 12.496417 0.0000000 0.028070495 0.073790875 0.056920905 + 12.511946 0.0000000 0.038868975 0.079133508 0.050258745 + 12.527122 0.0000000 0.051436333 0.085078240 0.044426756 + 12.541998 0.0000000 0.066001524 0.091769128 0.039289420 + 12.556576 0.0000000 0.082920692 0.099393080 0.034737654 + 12.570854 0.0000000 0.10271330 0.10819708 0.030682897 + 12.584806 0.0000000 0.12612250 0.11851432 0.027052541 + 12.598513 0.0000000 0.15421335 0.13080501 0.023786582 + 12.611921 0.0000000 0.18853491 0.14572193 0.020835053 + 12.625084 0.0000000 0.23139472 0.16421970 0.018156043 + 12.637975 0.0000000 0.28634341 0.18774545 0.015714159 + 12.650594 0.0000000 0.35907350 0.21858903 0.013479308 + 12.662996 0.0000000 0.45919437 0.26056909 0.011425761 + 12.675126 0.0000000 0.60402239 0.32048416 0.0095313618 + 12.687038 0.0000000 0.82751863 0.41150574 0.0077769386 + 12.698732 0.0000000 1.2043236 0.56221810 0.0061457820 + 12.710182 0.0000000 1.9273526 0.84552331 0.0046232556 + 12.721414 0.0000000 3.6381356 1.5004252 0.0031964476 + 12.732456 0.0000000 9.7205741 3.7678616 0.0018538961 + 12.743280 0.0000000 87.258719 31.761136 0.00058535601 diff --git a/class/include/.arrays.h.swp b/class/include/.arrays.h.swp new file mode 100644 index 00000000..e45604e1 Binary files /dev/null and b/class/include/.arrays.h.swp differ diff --git a/class/include/.background.h.swp b/class/include/.background.h.swp new file mode 100644 index 00000000..95c42653 Binary files /dev/null and b/class/include/.background.h.swp differ diff --git a/class/include/.nonlinear.h.swp b/class/include/.nonlinear.h.swp new file mode 100644 index 00000000..a5d0040e Binary files /dev/null and b/class/include/.nonlinear.h.swp differ diff --git a/class/include/.perturbations.h.swp b/class/include/.perturbations.h.swp new file mode 100644 index 00000000..7729d6e5 Binary files /dev/null and b/class/include/.perturbations.h.swp differ diff --git a/class/include/.precisions.h.swp b/class/include/.precisions.h.swp new file mode 100644 index 00000000..15038fa0 Binary files /dev/null and b/class/include/.precisions.h.swp differ diff --git a/class/include/arrays.h b/class/include/arrays.h old mode 100644 new mode 100755 index ca3f7112..e995a9b6 --- a/class/include/arrays.h +++ b/class/include/arrays.h @@ -242,6 +242,13 @@ int array_integrate_all_trapzd_or_spline( int result_size, /** from 1 to n_columns */ ErrorMsg errmsg); + int array_search_bisect( + int n_lines, + double * __restrict__ array, + double c, + int * __restrict__ last_index, + ErrorMsg errmsg); + int array_interpolate_linear( double * x_array, int n_lines, diff --git a/class/include/background.h b/class/include/background.h old mode 100644 new mode 100755 index edb30d56..84953f6f --- a/class/include/background.h +++ b/class/include/background.h @@ -10,8 +10,18 @@ #include "dei_rkck.h" #include "parser.h" +//The name for this macro can be at most 30 characters total +#define _class_print_species_(name,type) \ +printf("-> %-30s Omega = %-15g , omega = %-15g\n",name,pba->Omega0_##type,pba->Omega0_##type*pba->h*pba->h); + +/** list of possible types of spatial curvature */ + enum spatial_curvature {flat,open,closed}; +/** list of possible parametrisations of the DE equation of state */ + +enum equation_of_state {CLP,EDE}; + /** * All background parameters and evolution that other modules need to know. * @@ -49,18 +59,34 @@ struct background double Omega0_lambda; /**< \f$ \Omega_{0_\Lambda} \f$: cosmological constant */ - double Omega0_fld; /**< \f$ \Omega_{0 de} \f$: fluid with constant - \f$ w \f$ and \f$ c_s^2 \f$ */ + double Omega0_fld; /**< \f$ \Omega_{0 de} \f$: fluid */ + + enum equation_of_state fluid_equation_of_state; /**< parametrisation scheme for fluid equation of state */ + double w0_fld; /**< \f$ w0_{DE} \f$: current fluid equation of state parameter */ double wa_fld; /**< \f$ wa_{DE} \f$: fluid equation of state parameter derivative */ + double Omega_EDE; /**< \f$ wa_{DE} \f$: Early Dark Energy density parameter */ double cs2_fld; /**< \f$ c^2_{s~DE} \f$: sound speed of the fluid in the frame comoving with the fluid (so, this is not [delta p/delta rho] in the synchronous or - newtonian gauge!!!) */ + newtonian gauge!) */ + + short use_ppf; /**< flag switching on PPF perturbation equations + instead of true fluid equations for + perturbations. It could have been defined inside + perturbation structure, but we leave it here in + such way to have all fld parameters grouped. */ + + double c_gamma_over_c_fld; /**< ppf parameter defined in eq. (16) of 0808.3125 [astro-ph] */ double Omega0_ur; /**< \f$ \Omega_{0 \nu r} \f$: ultra-relativistic neutrinos */ + double Omega0_idr; /**< \f$ \Omega_{0 idr} \f$: interacting dark radiation */ + double T_idr; /**< \f$ T_{idr} \f$: current temperature of interacting dark radiation in Kelvins */ + + double Omega0_idm_dr; /**< \f$ \Omega_{0 idm_dr} \f$: dark matter interacting with dark radiation */ + double Omega0_dcdmdr; /**< \f$ \Omega_{0 dcdm}+\Omega_{0 dr} \f$: decaying cold dark matter (dcdm) decaying to dark radiation (dr) */ double Gamma_dcdm; /**< \f$ \Gamma_{dcdm} \f$: decay constant for decaying cold dark matter */ @@ -128,7 +154,13 @@ struct background double Neff; /**< so-called "effective neutrino number", computed at earliest time in interpolation table */ double Omega0_dcdm; /**< \f$ \Omega_{0 dcdm} \f$: decaying cold dark matter */ double Omega0_dr; /**< \f$ \Omega_{0 dr} \f$: decay radiation */ - + double Omega0_m; /**< total non-relativistic matter today */ + double Omega0_r; /**< total ultra-relativistic radiation today */ + double Omega0_de; /**< total dark energy density today, currently defined as 1 - Omega0_m - Omega0_r - Omega0_k */ + double a_eq; /**< scale factor at radiation/matter equality */ + double H_eq; /**< Hubble rate at radiation/matter equality [Mpc^-1] */ + double z_eq; /**< redshift at radiation/matter equality */ + double tau_eq; /**< conformal time at radiation/matter equality [Mpc] */ //@} @@ -154,8 +186,11 @@ struct background int index_bg_rho_b; /**< baryon density */ int index_bg_rho_cdm; /**< cdm density */ int index_bg_rho_lambda; /**< cosmological constant density */ - int index_bg_rho_fld; /**< fluid with constant w density */ + int index_bg_rho_fld; /**< fluid density */ + int index_bg_w_fld; /**< fluid equation of state */ int index_bg_rho_ur; /**< relativistic neutrinos/relics density */ + int index_bg_rho_idm_dr; /**< density of dark matter interacting with dark radiation */ + int index_bg_rho_idr; /**< density of interacting dark radiation */ int index_bg_rho_dcdm; /**< dcdm density */ int index_bg_rho_dr; /**< dr density */ @@ -166,11 +201,16 @@ struct background int index_bg_ddV_scf; /**< scalar field potential second derivative V'' */ int index_bg_rho_scf; /**< scalar field energy density */ int index_bg_p_scf; /**< scalar field pressure */ + int index_bg_p_prime_scf; /**< scalar field pressure */ int index_bg_rho_ncdm1; /**< density of first ncdm species (others contiguous) */ int index_bg_p_ncdm1; /**< pressure of first ncdm species (others contiguous) */ int index_bg_pseudo_p_ncdm1;/**< another statistical momentum useful in ncdma approximation */ + int index_bg_rho_tot; /**< Total density */ + int index_bg_p_tot; /**< Total pressure */ + int index_bg_p_tot_prime; /**< Conf. time derivative of total pressure */ + int index_bg_Omega_r; /**< relativistic density fraction (\f$ \Omega_{\gamma} + \Omega_{\nu r} \f$) */ /* end of vector in normal format, now quantities in long format */ @@ -183,8 +223,8 @@ struct background int index_bg_time; /**< proper (cosmological) time in Mpc */ int index_bg_rs; /**< comoving sound horizon in Mpc */ - int index_bg_D; /**< density growth factor in dust universe, \f$ D = H \int [da/(aH)^3] \f$ (arbitrary normalization) */ - int index_bg_f; /**< velocity growth factor in dust universe, [dlnD]/[dln a] */ + int index_bg_D; /**< scale independent growth factor D(a) for CDM perturbations */ + int index_bg_f; /**< corresponding velocity growth factor [dlnD]/[dln a] */ int bg_size_short; /**< size of background vector in the "short format" */ int bg_size_normal; /**< size of background vector in the "normal format" */ @@ -229,13 +269,15 @@ struct background int index_bi_a; /**< {B} scale factor */ int index_bi_rho_dcdm;/**< {B} dcdm density */ int index_bi_rho_dr; /**< {B} dr density */ + int index_bi_rho_fld; /**< {B} fluid density */ int index_bi_phi_scf; /**< {B} scalar field value */ int index_bi_phi_prime_scf; /**< {B} scalar field derivative wrt conformal time */ int index_bi_time; /**< {C} proper (cosmological) time in Mpc */ int index_bi_rs; /**< {C} sound horizon */ int index_bi_tau; /**< {C} conformal time in Mpc */ - int index_bi_growth; /**< {C} integral over \f$ [da/(aH)^3]=[d\tau/(aH^2)]\f$, useful for growth factor */ + int index_bi_D; /**< {C} scale independent growth factor D(a) for CDM perturbations. */ + int index_bi_D_prime; /**< {C} D satisfies \f$ [D''(\tau)=-aHD'(\tau)+3/2 a^2 \rho_M D(\tau) \f$ */ int bi_B_size; /**< Number of {B} parameters */ int bi_size; /**< Number of {B}+{C} parameters */ @@ -260,6 +302,8 @@ struct background short has_lambda; /**< presence of cosmological constant? */ short has_fld; /**< presence of fluid with constant w and cs2? */ short has_ur; /**< presence of ultra-relativistic neutrinos/relics? */ + short has_idr; /**< presence of interacting dark radiation? */ + short has_idm_dr; /**< presence of dark matter interacting with dark radiation? */ short has_curvature; /**< presence of global spatial curvature? */ //@} @@ -270,7 +314,9 @@ struct background //@{ - + int * ncdm_quadrature_strategy; /**< Vector of integers according to quadrature strategy. */ + int * ncdm_input_q_size; /**< Vector of numbers of q bins */ + double * ncdm_qmax; /**< Vector of maximum value of q */ double ** q_ncdm_bg; /**< Pointers to vectors of background sampling in q */ double ** w_ncdm_bg; /**< Pointers to vectors of corresponding quadrature weights w */ double ** q_ncdm; /**< Pointers to vectors of perturbation sampling in q */ @@ -367,6 +413,12 @@ extern "C" { double * pvecback ); + int background_tau_of_z( + struct background *pba, + double z, + double * tau + ); + int background_functions( struct background *pba, double * pvecback_B, @@ -374,11 +426,12 @@ extern "C" { double * pvecback ); - int background_tau_of_z( - struct background *pba, - double z, - double * tau - ); + int background_w_fld( + struct background * pba, + double a, + double * w_fld, + double * dw_over_da_fld, + double * integral_fld); int background_init( struct precision *ppr, @@ -393,6 +446,10 @@ extern "C" { struct background *pba ); + int background_free_noinput( + struct background *pba + ); + int background_indices( struct background *pba ); @@ -447,6 +504,11 @@ extern "C" { double * pvecback_integration ); + int background_find_equality( + struct precision *ppr, + struct background *pba + ); + int background_output_titles(struct background * pba, char titles[_MAXTITLESTRINGLENGTH_] ); @@ -487,6 +549,11 @@ extern "C" { double phi_prime ); + /** Budget equation output */ + int background_output_budget( + struct background* pba + ); + #ifdef __cplusplus } #endif @@ -517,19 +584,15 @@ extern "C" { //@} /** - * @name Some numbers useful in numerical algorithms - but not - * affecting precision, otherwise would be in precision structure + * @name Some limits on possible background parameters */ //@{ -#define _H0_BIG_ 1./2997.9 /**< maximal \f$ H_0 \f$ in \f$ Mpc^{-1} (h=1.0) \f$ */ -#define _H0_SMALL_ 0.3/2997.9 /**< minimal \f$ H_0 \f$ in \f$ Mpc^{-1} (h=0.3) \f$ */ -#define _TCMB_BIG_ 2.8 /**< maximal \f$ T_{cmb} \f$ in K */ -#define _TCMB_SMALL_ 2.7 /**< minimal \f$ T_{cmb} \f$ in K */ -#define _TOLERANCE_ON_CURVATURE_ 1.e-5 /**< if \f$ | \Omega_k | \f$ smaller than this, considered as flat */ -#define _OMEGAK_BIG_ 0.5 /**< maximal \f$ Omega_k \f$ */ -#define _OMEGAK_SMALL_ -0.5 /**< minimal \f$ Omega_k \f$ */ +#define _h_BIG_ 1.5 /**< maximal \f$ h \f$ */ +#define _h_SMALL_ 0.3 /**< minimal \f$ h \f$ */ +#define _omegab_BIG_ 0.039 /**< maximal \f$ omega_b \f$ */ +#define _omegab_SMALL_ 0.005 /**< minimal \f$ omega_b \f$ */ //@} diff --git a/class/include/common.h b/class/include/common.h index dcc9e1f0..d1a83f9b 100644 --- a/class/include/common.h +++ b/class/include/common.h @@ -15,7 +15,7 @@ #ifndef __COMMON__ #define __COMMON__ -#define _VERSION_ "v2.5.0" +#define _VERSION_ "v2.9.3" /* @cond INCLUDE_WITH_DOXYGEN */ #define _TRUE_ 1 /**< integer associated to true statement */ @@ -42,6 +42,8 @@ typedef char FileName[_FILENAMESIZE_]; #define _SQRT_PI_ 1.77245385090551602729816748334e0 /**< square root of pi. */ +#define _E_ 2.718281828459045235360287471352662497757247093699959574966967627724076630353547594571382178525166427427466391932003059921817413596629043572900334295260595630738132328627943490763233829880753195251019011573834187930702154089149934884167509244761460668082264800168477411853742345442437107539077744992069551702761838606261331384583000752044933826560297606737113200709328709127443747047230696977209310141692836819025515108657463772111252389784425056953696 /**< exponential of one */ + #define _MAX_IT_ 10000/**< default maximum number of iterations in conditional loops (to avoid infinite loops) */ #define _QUADRATURE_MAX_ 250 /**< maximum allowed number of abssices in quadrature integral estimation */ @@ -52,6 +54,8 @@ typedef char FileName[_FILENAMESIZE_]; #define _HUGE_ 1.e99 +#define _EPSILON_ 1.e-10 + #define _OUTPUTPRECISION_ 12 /**< Number of significant digits in some output files */ #define _COLUMNWIDTH_ 24 /**< Must be at least _OUTPUTPRECISION_+8 for guaranteed fixed width columns */ @@ -60,8 +64,6 @@ typedef char FileName[_FILENAMESIZE_]; #define _DELIMITER_ "\t" /**< character used for delimiting titles in the title strings */ - - #ifndef __CLASSDIR__ #define __CLASSDIR__ "." /**< The directory of CLASS. This is set to the absolute path to the CLASS directory so this is just a failsafe. */ #endif @@ -70,7 +72,7 @@ typedef char FileName[_FILENAMESIZE_]; #define MAX(a,b) (((a)<(b)) ? (b) : (a) ) /**< the usual "max" function */ #define SIGN(a) (((a)>0) ? 1. : -1. ) #define NRSIGN(a,b) ((b) >= 0.0 ? fabs(a) : -fabs(a)) -#define index_symmetric_matrix(i1,i2,N) (((i1)<=(i2)) ? (i2+N*i1-(i1*(i1+1))/2) : (i1+N*i2-(i2*(i2+1))/2)) /**< assigns an index from 0 to [N(N+1)/2-1] to the coefficients M_{i1,i2} of an N*N symmetric matrix; useful for converting a symmetric matrix to a vector, without losing or double-counting any information */ +#define index_symmetric_matrix(i1,i2,N) (((i1)<=(i2)) ? ((i2)+N*(i1)-((i1)*((i1)+1))/2) : ((i1)+N*(i2)-((i2)*((i2)+1))/2)) /**< assigns an index from 0 to [N(N+1)/2-1] to the coefficients M_{i1,i2} of an N*N symmetric matrix; useful for converting a symmetric matrix to a vector, without losing or double-counting any information */ /* @endcond */ // needed because of weird openmp bug on macosx lion... void class_protect_sprintf(char* dest, char* tpl,...); @@ -344,444 +346,14 @@ enum file_format {class_format,camb_format}; */ struct precision { - - /** @name - parameters related to the background */ - //@{ - - /** - * default initial value of scale factor in background integration, in - * units of scale factor today - */ - double a_ini_over_a_today_default; - - /** - * default step d tau in background integration, in units of - * conformal Hubble time (\f$ d \tau \f$ = back_integration_stepsize / aH ) - */ - double back_integration_stepsize; - - /** - * parameter controlling precision of background integration - */ - double tol_background_integration; - - - /** - * parameter controlling how deep inside radiation domination must the - * initial time be chosen - */ - double tol_initial_Omega_r; - - /** - * parameter controlling relative precision of ncdm mass for given - * ncdm current density - */ - double tol_M_ncdm; - - /** - * parameter controlling relative precision of integrals over ncdm - * phase-space distribution during perturbation calculation: value - * to be applied in Newtonian gauge - */ - double tol_ncdm_newtonian; - - /** - * parameter controlling relative precision of integrals over ncdm - * phase-space distribution during perturbation calculation: value - * to be applied in synchronous gauge - */ - double tol_ncdm_synchronous; - - /** - * parameter controlling relative precision of integrals over ncdm - * phase-space distribution during perturbation calculation: value - * actually applied in chosen gauge - */ - double tol_ncdm; - - /** - * parameter controlling relative precision of integrals over ncdm - * phase-space distribution during background evolution - */ - double tol_ncdm_bg; - - /** - * parameter controlling how relativistic must non-cold relics be at - * initial time - */ - double tol_ncdm_initial_w; - - /** - * parameter controlling the initial scalar field in background functions - */ - double safe_phi_scf; - - //@} - - /** @name - parameters related to the thermodynamics */ - - //@{ - - /* - for bbn */ -/* @cond INCLUDE_WITH_DOXYGEN */ - FileName sBBN_file; -/* @endcond */ - /* - for recombination */ - - /* initial and final redshifts in recfast */ - - double recfast_z_initial; /**< initial redshift in recfast */ - - /* parameters governing precision of integration */ - - int recfast_Nz0; /**< number of integration steps */ - double tol_thermo_integration; /**< precision of each integration step */ - - /* He fudge parameters from recfast 1.4 */ - - int recfast_Heswitch; /**< recfast 1.4 parameter */ - double recfast_fudge_He; /**< recfast 1.4 parameter */ - - /* H fudge parameters from recfast 1.5 (Gaussian fits for extra H physics by Adam Moss) */ - - int recfast_Hswitch; /**< recfast 1.5 switching parameter */ - double recfast_fudge_H; /**< H fudge factor when recfast_Hswitch set to false (v1.4 fudging) */ - double recfast_delta_fudge_H; /**< correction to H fudge factor in v1.5 */ - double recfast_AGauss1; /**< Amplitude of 1st Gaussian */ - double recfast_AGauss2; /**< Amplitude of 2nd Gaussian */ - double recfast_zGauss1; /**< ln(1+z) of 1st Gaussian */ - double recfast_zGauss2; /**< ln(1+z) of 2nd Gaussian */ - double recfast_wGauss1; /**< Width of 1st Gaussian */ - double recfast_wGauss2; /**< Width of 2nd Gaussian */ - - /* triggers for switching approximations; ranges for doing it smoothly */ - - double recfast_z_He_1; /**< down to which redshift Helium fully ionized */ - double recfast_delta_z_He_1; /**< z range over which transition is smoothed */ - - double recfast_z_He_2; /**< down to which redshift first Helium recombination not complete */ - double recfast_delta_z_He_2; /**< z range over which transition is smoothed */ - - double recfast_z_He_3; /**< down to which redshift Helium singly ionized */ - double recfast_delta_z_He_3; /**< z range over which transition is smoothed */ - - double recfast_x_He0_trigger; /**< value below which recfast uses the full equation for Helium */ - double recfast_x_He0_trigger2; /**< a second threshold used in derivative routine */ - double recfast_x_He0_trigger_delta; /**< x_He range over which transition is smoothed */ - - double recfast_x_H0_trigger; /**< value below which recfast uses the full equation for Hydrogen */ - double recfast_x_H0_trigger2; /**< a second threshold used in derivative routine */ - double recfast_x_H0_trigger_delta; /**< x_H range over which transition is smoothed */ - - double recfast_H_frac; /**< governs time at which full equation of evolution for Tmat is used */ -/* @cond INCLUDE_WITH_DOXYGEN */ - FileName hyrec_Alpha_inf_file; - FileName hyrec_R_inf_file; - FileName hyrec_two_photon_tables_file; -/* @endcond */ - /* - for reionization */ - - double reionization_z_start_max; /**< maximum redshift at which reionization should start. If not, return an error. */ - double reionization_sampling; /**< control stepsize in z during reionization */ - double reionization_optical_depth_tol; /**< fractional error on optical_depth */ - double reionization_start_factor; /**< parameter for CAMB-like parametrization */ - - /* - general */ - - int thermo_rate_smoothing_radius; /**< plays a minor (almost aesthetic) role in the definition of the variation rate of thermodynamical quantities */ - - //@} - - /** @name - parameters related to the perturbation */ - - //@{ - - enum evolver_type evolver; /**< which type of evolver for integrating perturbations (Runge-Kutta? Stiff?...) */ - - double k_min_tau0; /**< number defining k_min for the computation of Cl's and P(k)'s (dimensionless): (k_min tau_0), usually chosen much smaller than one */ - - double k_max_tau0_over_l_max; /**< number defining k_max for the computation of Cl's (dimensionless): (k_max tau_0)/l_max, usually chosen around two */ - - double k_step_sub; /**< step in k space, in units of one period of acoustic oscillation at decoupling, for scales inside sound horizon at decoupling */ - double k_step_super; /**< step in k space, in units of one period of acoustic oscillation at decoupling, for scales above sound horizon at decoupling */ - double k_step_transition; /**< dimensionless number regulating the transition from 'sub' steps to 'super' steps. Decrease for more precision. */ - double k_step_super_reduction; /**< the step k_step_super is reduced by this amount in the k-->0 limit (below scale of Hubble and/or curvature radius) */ - - double k_per_decade_for_pk; /**< if values needed between kmax inferred from k_oscillations and k_kmax_for_pk, this gives the number of k per decade outside the BAO region*/ - - double k_per_decade_for_bao; /**< if values needed between kmax inferred from k_oscillations and k_kmax_for_pk, this gives the number of k per decade inside the BAO region (for finer sampling)*/ - - double k_bao_center; /**< in ln(k) space, the central value of the BAO region where sampling is finer is defined as k_rec times this number (recommended: 3, i.e. finest sampling near 3rd BAO peak) */ - - double k_bao_width; /**< in ln(k) space, width of the BAO region where sampling is finer: this number gives roughly the number of BAO oscillations well resolved on both sides of the central value (recommended: 4, i.e. finest sampling from before first up to 3+4=7th peak) */ - - double start_small_k_at_tau_c_over_tau_h; /**< largest wavelengths start being sampled when universe is sufficiently opaque. This is quantified in terms of the ratio of thermo to hubble time scales, \f$ \tau_c/\tau_H \f$. Start when start_largek_at_tau_c_over_tau_h equals this ratio. Decrease this value to start integrating the wavenumbers earlier in time. */ - - double start_large_k_at_tau_h_over_tau_k; /**< largest wavelengths start being sampled when mode is sufficiently outside Hubble scale. This is quantified in terms of the ratio of hubble time scale to wavenumber time scale, \f$ \tau_h/\tau_k \f$ which is roughly equal to (k*tau). Start when this ratio equals start_large_k_at_tau_k_over_tau_h. Decrease this value to start integrating the wavenumbers earlier in time. */ - - /** - * when to switch off tight-coupling approximation: first condition: - * \f$ \tau_c/\tau_H \f$ > tight_coupling_trigger_tau_c_over_tau_h. - * Decrease this value to switch off earlier in time. If this - * number is larger than start_sources_at_tau_c_over_tau_h, the code - * returns an error, because the source computation requires - * tight-coupling to be switched off. - */ - double tight_coupling_trigger_tau_c_over_tau_h; - - /** - * when to switch off tight-coupling approximation: - * second condition: \f$ \tau_c/\tau_k \equiv k \tau_c \f$ < - * tight_coupling_trigger_tau_c_over_tau_k. - * Decrease this value to switch off earlier in time. - */ - double tight_coupling_trigger_tau_c_over_tau_k; - - double start_sources_at_tau_c_over_tau_h; /**< sources start being sampled when universe is sufficiently opaque. This is quantified in terms of the ratio of thermo to hubble time scales, \f$ \tau_c/\tau_H \f$. Start when start_sources_at_tau_c_over_tau_h equals this ratio. Decrease this value to start sampling the sources earlier in time. */ - - int tight_coupling_approximation; /**< method for tight coupling approximation */ - - int l_max_g; /**< number of momenta in Boltzmann hierarchy for photon temperature (scalar), at least 4 */ - int l_max_pol_g; /**< number of momenta in Boltzmann hierarchy for photon polarization (scalar), at least 4 */ - int l_max_dr; /**< number of momenta in Boltzmann hierarchy for decay radiation, at least 4 */ - int l_max_ur; /**< number of momenta in Boltzmann hierarchy for relativistic neutrino/relics (scalar), at least 4 */ - int l_max_ncdm; /**< number of momenta in Boltzmann hierarchy for relativistic neutrino/relics (scalar), at least 4 */ - int l_max_g_ten; /**< number of momenta in Boltzmann hierarchy for photon temperature (tensor), at least 4 */ - int l_max_pol_g_ten; /**< number of momenta in Boltzmann hierarchy for photon polarization (tensor), at least 4 */ - - double curvature_ini; /**< initial condition for curvature for adiabatic */ - double entropy_ini; /**< initial condition for entropy perturbation for isocurvature */ - double gw_ini; /**< initial condition for tensor metric perturbation h */ - - /** - * default step \f$ d \tau \f$ in perturbation integration, in units of the timescale involved in the equations (usually, the min of \f$ 1/k \f$, \f$ 1/aH \f$, \f$ 1/\dot{\kappa} \f$) - */ - double perturb_integration_stepsize; - - /** - * default step \f$ d \tau \f$ for sampling the source function, in units of the timescale involved in the sources: \f$ (\dot{\kappa}- \ddot{\kappa}/\dot{\kappa})^{-1} \f$ - */ - double perturb_sampling_stepsize; - - /** - * control parameter for the precision of the perturbation integration - */ - double tol_perturb_integration; - - /** - * precision with which the code should determine (by bisection) the - * times at which sources start being sampled, and at which - * approximations must be switched on/off (units of Mpc) - */ - double tol_tau_approx; - - /** - * method for switching off photon perturbations - */ - int radiation_streaming_approximation; - - /** - * when to switch off photon perturbations, ie when to switch - * on photon free-streaming approximation (keep density and thtau, set - * shear and higher momenta to zero): - * first condition: \f$ k \tau \f$ > radiation_streaming_trigger_tau_h_over_tau_k - */ - double radiation_streaming_trigger_tau_over_tau_k; - - /** - * when to switch off photon perturbations, ie when to switch - * on photon free-streaming approximation (keep density and theta, set - * shear and higher momenta to zero): - * second condition: - */ - double radiation_streaming_trigger_tau_c_over_tau; - - int ur_fluid_approximation; /**< method for ultra relativistic fluid approximation */ - - /** - * when to switch off ur (massless neutrinos / ultra-relativistic - * relics) fluid approximation - */ - double ur_fluid_trigger_tau_over_tau_k; - - int ncdm_fluid_approximation; /**< method for non-cold dark matter fluid approximation */ - /** - * when to switch off ncdm (massive neutrinos / non-cold - * relics) fluid approximation + * Define (allocate) all precision parameters + * */ - double ncdm_fluid_trigger_tau_over_tau_k; - - /** - * whether CMB source functions can be approximated as zero when - * visibility function g(tau) is tiny - */ - double neglect_CMB_sources_below_visibility; - - //@} - - /** @name - parameters related to the primordial spectra */ - - //@{ - - double k_per_decade_primordial; /**< logarithmic sampling for primordial spectra (number of points per decade in k space) */ - - double primordial_inflation_ratio_min; /**< for each k, start following wavenumber when aH = k/primordial_inflation_ratio_min */ - double primordial_inflation_ratio_max; /**< for each k, stop following wavenumber, at the latest, when aH = k/primordial_inflation_ratio_max */ - int primordial_inflation_phi_ini_maxit; /**< maximum number of iteration when searching a suitable initial field value phi_ini (value reached when no long-enough slow-roll period before the pivot scale) */ - double primordial_inflation_pt_stepsize; /**< controls the integration timestep for inflaton perturbations */ - double primordial_inflation_bg_stepsize; /**< controls the integration timestep for inflaton background */ - double primordial_inflation_tol_integration; /**< controls the precision of the ODE integration during inflation */ - double primordial_inflation_attractor_precision_pivot; /**< targeted precision when searching attractor solution near phi_pivot */ - double primordial_inflation_attractor_precision_initial; /**< targeted precision when searching attractor solution near phi_ini */ - int primordial_inflation_attractor_maxit; /**< maximum number of iteration when searching attractor solution */ - double primordial_inflation_tol_curvature; /**< for each k, stop following wavenumber, at the latest, when curvature perturbation R is stable up to to this tolerance */ - double primordial_inflation_aH_ini_target; /**< control the step size in the search for a suitable initial field value */ - double primordial_inflation_end_dphi; /**< first bracketing width, when trying to bracket the value phi_end at which inflation ends naturally */ - double primordial_inflation_end_logstep; /**< logarithmic step for updating the bracketing width, when trying to bracket the value phi_end at which inflation ends naturally */ - double primordial_inflation_small_epsilon; /**< value of slow-roll parameter epsilon used to define a field value phi_end close to the end of inflation (doesn't need to be exactly at the end): epsilon(phi_end)=small_epsilon (should be smaller than one) */ - double primordial_inflation_small_epsilon_tol; /**< tolerance in the search for phi_end */ - double primordial_inflation_extra_efolds; /**< a small number of efolds, irrelevant at the end, used in the search for the pivot scale (backward from the end of inflation) */ - - //@} - - /** @name - parameters related to the transfer function */ - - //@{ - - int l_linstep; /**< factor for logarithmic spacing of values of l over which bessel and transfer functions are sampled */ - - double l_logstep; /**< maximum spacing of values of l over which Bessel and transfer functions are sampled (so, spacing becomes linear instead of logarithmic at some point) */ - - /* parameters relevant for bessel functions */ - double hyper_x_min; /**< flat case: lower bound on the smallest value of x at which we sample \f$ \Phi_l^{\nu}(x)\f$ or \f$ j_l(x)\f$ */ - double hyper_sampling_flat; /**< flat case: number of sampled points x per approximate wavelength \f$ 2\pi \f$*/ - double hyper_sampling_curved_low_nu; /**< open/closed cases: number of sampled points x per approximate wavelength \f$ 2\pi/\nu\f$, when \f$ \nu \f$ smaller than hyper_nu_sampling_step */ - double hyper_sampling_curved_high_nu; /**< open/closed cases: number of sampled points x per approximate wavelength \f$ 2\pi/\nu\f$, when \f$ \nu \f$ greater than hyper_nu_sampling_step */ - double hyper_nu_sampling_step; /**< open/closed cases: value of nu at which sampling changes */ - double hyper_phi_min_abs; /**< small value of Bessel function used in calculation of first point x (\f$ \Phi_l^{\nu}(x) \f$ equals hyper_phi_min_abs) */ - double hyper_x_tol; /**< tolerance parameter used to determine first value of x */ - double hyper_flat_approximation_nu; /**< value of nu below which the flat approximation is used to compute Bessel function */ - - /* parameters relevant for transfer function */ - - double q_linstep; /**< asymptotic linear sampling step in q - space, in units of \f$ 2\pi/r_a(\tau_rec) \f$ - (comoving angular diameter distance to - recombination) */ - - double q_logstep_spline; /**< initial logarithmic sampling step in q - space, in units of \f$ 2\pi/r_a(\tau_{rec})\f$ - (comoving angular diameter distance to - recombination) */ - - double q_logstep_open; /**< in open models, the value of - q_logstep_spline must be decreased - according to curvature. Increasing - this number will make the calculation - more accurate for large positive - Omega_k */ - - double q_logstep_trapzd; /**< initial logarithmic sampling step in q - space, in units of \f$ 2\pi/r_a(\tau_{rec}) \f$ - (comoving angular diameter distance to - recombination), in the case of small - q's in the closed case, for which one - must used trapezoidal integration - instead of spline (the number of q's - for which this is the case decreases - with curvature and vanishes in the - flat limit) */ - - double q_numstep_transition; /**< number of steps for the transition - from q_logstep_trapzd steps to - q_logstep_spline steps (transition - must be smooth for spline) */ - - double transfer_neglect_delta_k_S_t0; /**< for temperature source function T0 of scalar mode, range of k values (in 1/Mpc) taken into account in transfer function: for l < (k-delta_k)*tau0, ie for k > (l/tau0 + delta_k), the transfer function is set to zero */ - double transfer_neglect_delta_k_S_t1; /**< same for temperature source function T1 of scalar mode */ - double transfer_neglect_delta_k_S_t2; /**< same for temperature source function T2 of scalar mode */ - double transfer_neglect_delta_k_S_e; /**< same for polarization source function E of scalar mode */ - double transfer_neglect_delta_k_V_t1; /**< same for temperature source function T1 of vector mode */ - double transfer_neglect_delta_k_V_t2; /**< same for temperature source function T2 of vector mode */ - double transfer_neglect_delta_k_V_e; /**< same for polarization source function E of vector mode */ - double transfer_neglect_delta_k_V_b; /**< same for polarization source function B of vector mode */ - double transfer_neglect_delta_k_T_t2; /**< same for temperature source function T2 of tensor mode */ - double transfer_neglect_delta_k_T_e; /**< same for polarization source function E of tensor mode */ - double transfer_neglect_delta_k_T_b; /**< same for polarization source function B of tensor mode */ - - double transfer_neglect_late_source; /**< value of l below which the CMB source functions can be neglected at late time, excepted when there is a Late ISW contribution */ - - /** when to use the Limber approximation for project gravitational potential cl's */ - double l_switch_limber; - - /** when to use the Limber approximation for local number count contributions to cl's (relative to central redshift of each bin) */ - double l_switch_limber_for_nc_local_over_z; - - /** when to use the Limber approximation for number count contributions to cl's integrated along the line-of-sight (relative to central redshift of each bin) */ - double l_switch_limber_for_nc_los_over_z; - - /** in sigma units, where to cut gaussian selection functions */ - double selection_cut_at_sigma; - - /** controls sampling of integral over time when selection functions vary quicker than Bessel functions. Increase for better sampling. */ - double selection_sampling; - - /** controls sampling of integral over time when selection functions vary slower than Bessel functions. Increase for better sampling */ - double selection_sampling_bessel; - - /** controls sampling of integral over time when selection functions vary slower than Bessel functions. This parameter is specific to number counts contributions to Cl integrated along the line of sight. Increase for better sampling */ - double selection_sampling_bessel_los; - - /** controls how smooth are the edge of top-hat window function (<<1 for very sharp, 0.1 for sharp) */ - double selection_tophat_edge; - - //@} - - /** @name - parameters related to non-linear computations */ - - //@{ - - /** parameters relevant for HALOFIT computation */ - - double halofit_dz; /**< spacing in redshift space defining values of z - at which HALOFIT will be used. Intermediate - values will be obtained by - interpolation. Decrease for more precise - interpolations, at the expense of increasing - time spent in nonlinear_init() */ - - double halofit_min_k_nonlinear; /**< value of k in 1/Mpc above - which non-linear corrections will - be computed */ - double halofit_sigma_precision; /**< a smaller value will lead to a - more precise halofit result at - the highest requested redshift, - at the expense of requiring a - larger k_max */ - - double halofit_min_k_max; /**< when halofit is used, k_max must be at - least equal to this value (otherwise - halofit could not find the scale of - non-linearity) */ - - double halofit_k_per_decade; /**< halofit needs to evalute integrals - (linear power spectrum times some - kernels). They are sampled using - this logarithmic step size. */ - - //@} - - /** @name - parameters related to lensing */ - - //@{ - - int accurate_lensing; /**< switch between Gauss-Legendre quadrature integration and simple quadrature on a subdomain of angles */ - int num_mu_minus_lmax; /**< difference between num_mu and l_max, increase for more precision */ - int delta_l_max; /**< difference between l_max in unlensed and lensed spectra */ - double tol_gauss_legendre; /**< tolerance with which quadrature points are found: must be very small for an accurate integration (if not entered manually, set automatically to match machine precision) */ - //@} + #define __ALLOCATE_PRECISION_PARAMETER__ + #include "precisions.h" + #undef __ALLOCATE_PRECISION_PARAMETER__ /** @name - general precision parameters */ diff --git a/class/include/dei_rkck.h b/class/include/dei_rkck.h old mode 100644 new mode 100755 diff --git a/class/include/evolver_ndf15.h b/class/include/evolver_ndf15.h old mode 100644 new mode 100755 diff --git a/class/include/evolver_rkck.h b/class/include/evolver_rkck.h old mode 100644 new mode 100755 diff --git a/class/include/growTable.h b/class/include/growTable.h old mode 100644 new mode 100755 diff --git a/class/include/hyperspherical.h b/class/include/hyperspherical.h old mode 100644 new mode 100755 diff --git a/class/include/input.h b/class/include/input.h old mode 100644 new mode 100755 index 74bb1c07..b4586fab --- a/class/include/input.h +++ b/class/include/input.h @@ -134,7 +134,7 @@ * temporary parameters for background fzero function */ -enum target_names {theta_s, Omega_dcdmdr, omega_dcdmdr, Omega_scf, Omega_ini_dcdm, omega_ini_dcdm,tn_sigma8}; +enum target_names {theta_s, Omega_dcdmdr, omega_dcdmdr, Omega_scf, Omega_ini_dcdm, omega_ini_dcdm, sigma8}; enum computation_stage {cs_background, cs_thermodynamics, cs_perturbations, cs_primordial, cs_nonlinear, cs_transfer, cs_spectra}; #define _NUM_TARGETS_ 7 //Keep this number as number of target_names @@ -155,7 +155,7 @@ struct fzerofun_workspace { /**************************************************************/ -/* @cond INCLUDE_WITH_DOXYGEN */ +/* @cond INCLUDE_WITH_DOXYGEN */ /* * Boilerplate for C++ */ @@ -209,6 +209,21 @@ extern "C" { ErrorMsg errmsg ); + int input_read_precisions( + struct file_content * pfc, + struct precision * ppr, + struct background * pba, + struct thermo *pth, + struct perturbs *ppt, + struct transfers *ptr, + struct primordial *ppm, + struct spectra *psp, + struct nonlinear *pnl, + struct lensing *ple, + struct output *pop, + ErrorMsg errmsg + ); + int input_default_params( struct background *pba, struct thermo *pth, @@ -276,6 +291,15 @@ extern "C" { int compare_doubles(const void *a,const void *b); + int input_prepare_pk_eq( + struct precision * ppr, + struct background *pba, + struct thermo *pth, + struct nonlinear *pnl, + int input_verbose, + ErrorMsg errmsg + ); + #ifdef __cplusplus } @@ -284,4 +308,4 @@ extern "C" { /**************************************************************/ #endif -/* @endcond */ \ No newline at end of file +/* @endcond */ diff --git a/class/include/lensing.h b/class/include/lensing.h old mode 100644 new mode 100755 diff --git a/class/include/nonlinear.h b/class/include/nonlinear.h old mode 100644 new mode 100755 index aabcb81d..00741908 --- a/class/include/nonlinear.h +++ b/class/include/nonlinear.h @@ -1,118 +1,634 @@ -/** @file nonlinear.h Documented includes for trg module */ - -#include "primordial.h" - -#ifndef __NONLINEAR__ -#define __NONLINEAR__ - -#define _M_EV_TOO_BIG_FOR_HALOFIT_ 10. /**< above which value of non-CDM mass (in eV) do we stop trusting halofit? */ - -enum non_linear_method {nl_none,nl_halofit}; - -/** - * Structure containing all information on non-linear spectra. - * - * Once initialized by nonlinear_init(), contains a table for all two points correlation functions - * and for all the ai,bj functions (containing the three points correlation functions), for each - * time and wave-number. - */ - -struct nonlinear { - - /** @name - input parameters initialized by user in input module - (all other quantities are computed in this module, given these - parameters and the content of the 'precision', 'background', - 'thermo', 'primordial' and 'spectra' structures) */ - - //@{ - - enum non_linear_method method; /**< method for computing non-linear corrections (none, Halogit, etc.) */ - - //@} - - /** @name - table non-linear corrections for matter density, sqrt(P_NL(k,z)/P_NL(k,z)) */ - - //@{ - - int k_size; /**< k_size = total number of k values */ - double * k; /**< k[index_k] = list of k values */ - int tau_size; /**< tau_size = number of values */ - double * tau; /**< tau[index_tau] = list of time values */ - - double * nl_corr_density; /**< nl_corr_density[index_tau * ppt->k_size + index_k] */ - double * k_nl; /**< wavenumber at which non-linear corrections become important, defined differently by different non_linear_method's */ - - //@} - - /** @name - technical parameters */ - - //@{ - - short nonlinear_verbose; /**< amount of information written in standard output */ - - ErrorMsg error_message; /**< zone for writing error messages */ - - //@} -}; - -/********************************************************************************/ - -/* @cond INCLUDE_WITH_DOXYGEN */ -/* - * Boilerplate for C++ - */ -#ifdef __cplusplus -extern "C" { -#endif - - int nonlinear_k_nl_at_z( - struct background *pba, - struct nonlinear * pnl, - double z, - double * k_nl - ); - - int nonlinear_init( - struct precision *ppr, - struct background *pba, - struct thermo *pth, - struct perturbs *ppt, - struct primordial *ppm, - struct nonlinear *pnl - ); - - int nonlinear_free( - struct nonlinear *pnl - ); - - int nonlinear_pk_l(struct perturbs *ppt, - struct primordial *ppm, - struct nonlinear *pnl, - int index_tau, - double *pk_l, - double *lnk, - double *lnpk, - double *ddlnpk); - - int nonlinear_halofit( - struct precision *ppr, - struct background *pba, - struct primordial *ppm, - struct nonlinear *pnl, - double tau, - double *pk_l, - double *lnk, - double *lnpk, - double *ddlnpk, - double *pk_nl, - double *k_nl - ); - -#ifdef __cplusplus -} -#endif - -/**************************************************************/ - -#endif -/* @endcond */ +/** @file nonlinear.h Documented includes for trg module */ + +#include "primordial.h" +#include "trigonometric_integrals.h" +#include +#include +#include +#include + +#ifndef __NONLINEAR__ +#define __NONLINEAR__ + +#define _M_EV_TOO_BIG_FOR_HALOFIT_ 10. /**< above which value of non-CDM mass (in eV) do we stop trusting halofit? */ + +#define _M_SUN_ 1.98847e30 /**< Solar mass in Kg */ + +#define _MAX_NUM_EXTRAPOLATION_ 100000 + +enum non_linear_method {nl_none,nl_halofit,nl_HMcode,nl_HMcode_2020}; +enum pk_outputs {pk_linear,pk_nonlinear}; + +enum source_extrapolation {extrap_zero,extrap_only_max,extrap_only_max_units,extrap_max_scaled,extrap_hmcode,extrap_user_defined}; + +enum halofit_integral_type {halofit_integral_one, halofit_integral_two, halofit_integral_three}; + +enum hmcode_baryonic_feedback_model {nl_emu_dmonly, nl_owls_dmonly, nl_owls_ref, nl_owls_agn, nl_owls_dblim, nl_user_defined, hmcode2020tagn}; +enum out_sigmas {out_sigma,out_sigma_prime,out_sigma_disp}; + +/** + * Structure containing all information on non-linear spectra. + * + * Once initialized by nonlinear_init(), contains a table for all two points correlation functions + * and for all the ai,bj functions (containing the three points correlation functions), for each + * time and wave-number. + */ + +struct nonlinear { + + /** @name - input parameters initialized by user in input module + (all other quantities are computed in this module, given these + parameters and the content of the 'precision', 'background', + 'thermo', 'primordial' and 'spectra' structures) */ + + //@{ + + enum non_linear_method method; /**< method for computing non-linear corrections (none, Halogit, etc.) */ + + enum source_extrapolation extrapolation_method; /**< method for analytical extrapolation of sources beyond pre-computed range */ + + enum hmcode_baryonic_feedback_model feedback; /** to choose between different baryonic feedback models + in hmcode (dmonly, gas cooling, Agn or supernova feedback) */ + double c_min; /** for HMcode: minimum concentration in Bullock 2001 mass-concentration relation */ + double eta_0; /** for HMcode: halo bloating parameter */ + double z_infinity; /** for HMcode: z value at which Dark Energy correction is evaluated needs to be at early times (default */ + double hmcode2020log10tagn; /** for HMcode2020: Tagn value */ + + //@} + + /** @name - information on number of modes and pairs of initial conditions */ + + //@{ + + int index_md_scalars; /**< set equal to psp->index_md_scalars + (useful since this module only deals with + scalars) */ + int ic_size; /**< for a given mode, ic_size[index_md] = number of initial conditions included in computation */ + int ic_ic_size; /**< for a given mode, ic_ic_size[index_md] = number of pairs of (index_ic1, index_ic2) with index_ic2 >= index_ic1; this number is just N(N+1)/2 where N = ic_size[index_md] */ + short * is_non_zero; /**< for a given mode, is_non_zero[index_md][index_ic1_ic2] is set to true if the pair of initial conditions (index_ic1, index_ic2) are statistically correlated, or to false if they are uncorrelated */ + + //@} + + /** @name - information on the type of power spectra (_cb, _m...) */ + + //@{ + + short has_pk_m; /**< do we want spectra for total matter? */ + short has_pk_cb; /**< do we want spectra for cdm+baryons? */ + + int index_pk_m; /**< index of pk for matter (defined only when has_pk_m is TRUE) */ + int index_pk_cb; /**< index of pk for cold dark matter plus baryons (defined only when has_pk_cb is TRUE */ + + /* and two redundent but useful indices: */ + + int index_pk_total; /**< always equal to index_pk_m + (always defined, useful e.g. for weak lensing spectrum) */ + int index_pk_cluster; /**< equal to index_pk_cb if it exists, otherwise to index_pk_m + (always defined, useful e.g. for galaxy clustering spectrum) */ + + int pk_size; /**< k_size = total number of pk */ + + //@} + + /** @name - arrays for the Fourier power spectra P(k,tau) */ + + //@{ + + short has_pk_matter; /**< do we need matter Fourier spectrum? */ + + int k_size; /**< k_size = total number of k values */ + double * k; /**< k[index_k] = list of k values */ + double * ln_k; /**< ln_k[index_k] = list of log(k) values */ + + double * ln_tau; /**< log(tau) array, only needed if user wants + some output at z>0, instead of only z=0. This + array only covers late times, used for the + output of P(k) or T(k), and matching the + condition z(tau) < z_max_pk */ + + int ln_tau_size; /**< number of values in this array */ + + double ** ln_pk_ic_l; /**< Matter power spectrum (linear). + Depends on indices index_pk, index_ic1_ic2, index_k, index_tau as: + ln_pk_ic_l[index_pk][(index_tau * pnl->k_size + index_k)* pnl->ic_ic_size + index_ic1_ic2] + where index-pk labels P(k) types (_m = total matter, _cb = baryons+CDM), + while index_ic1_ic2 labels ordered pairs (index_ic1, index_ic2) (since + the primordial spectrum is symmetric in (index_ic1, index_ic2)). + - for diagonal elements (index_ic1 = index_ic2) this arrays contains + ln[P(k)] where P(k) is positive by construction. + - for non-diagonal elements this arrays contains the k-dependent + cosine of the correlation angle, namely + P(k)_(index_ic1, index_ic2)/sqrt[P(k)_index_ic1 P(k)_index_ic2] + This choice is convenient since the sign of the non-diagonal cross-correlation + could be negative. For fully correlated or anti-correlated initial conditions, + this non-diagonal element is independent on k, and equal to +1 or -1. + */ + + double ** ddln_pk_ic_l; /**< second derivative of above array with respect to log(tau), for spline interpolation. So: + - for index_ic1 = index_ic, we spline ln[P(k)] vs. ln(k), which is + good since this function is usually smooth. + - for non-diagonal coefficients, we spline + P(k)_(index_ic1, index_ic2)/sqrt[P(k)_index_ic1 P(k)_index_ic2] + vs. ln(k), which is fine since this quantity is often assumed to be + constant (e.g for fully correlated/anticorrelated initial conditions) + or nearly constant, and with arbitrary sign. + */ + + double ** ln_pk_l; /**< Total matter power spectrum summed over initial conditions (linear). + Only depends on indices index_pk,index_k, index_tau as: + ln_pk[index_pk][index_tau * pnl->k_size + index_k] + */ + + double ** ddln_pk_l; /**< second derivative of above array with respect to log(tau), for spline interpolation. */ + + double ** ln_pk_nl; /**< Total matter power spectrum summed over initial conditions (nonlinear). + Only depends on indices index_pk,index_k, index_tau as: + ln_pk[index_pk][index_tau * pnl->k_size + index_k] + */ + + double ** ddln_pk_nl; /**< second derivative of above array with respect to log(tau), for spline interpolation. */ + + double * sigma8; /**< sigma8[index_pk] */ + + //@} + + /** @name - table non-linear corrections for matter density, sqrt(P_NL(k,z)/P_NL(k,z)) */ + + //@{ + + int k_size_extra;/** total number of k values of extrapolated k array (high k)*/ + + int tau_size; /**< tau_size = number of values */ + double * tau; /**< tau[index_tau] = list of time values, covering + all the values of the perturbation module */ + + double ** nl_corr_density; /**< nl_corr_density[index_pk][index_tau * ppt->k_size + index_k] */ + double ** k_nl; /**< wavenumber at which non-linear corrections become important, + defined differently by different non_linear_method's */ + int index_tau_min_nl; /**< index of smallest value of tau at which nonlinear corrections have been computed + (so, for tau=2 for idm_fr-idr */ + double * beta_idr; /**< Angular contribution to collisional term at l>=2 for idr-idr */ + + int idr_nature; /**< Nature of the interacting dark radiation (free streaming or fluid) */ + //@} /** @name - useful flags inferred from the ones above */ @@ -233,32 +229,46 @@ struct perturbs //@{ - short has_source_t; /**< do we need source for CMB temperature? */ - short has_source_p; /**< do we need source for CMB polarization? */ - short has_source_delta_m; /**< do we need source for delta of total matter? */ - short has_source_delta_g; /**< do we need source for delta of gammas? */ - short has_source_delta_b; /**< do we need source for delta of baryons? */ - short has_source_delta_cdm; /**< do we need source for delta of cold dark matter? */ - short has_source_delta_dcdm; /**< do we need source for delta of DCDM? */ - short has_source_delta_fld; /**< do we need source for delta of dark energy? */ - short has_source_delta_scf; /**< do we need source for delta from scalar field? */ - short has_source_delta_dr; /**< do we need source for delta of decay radiation? */ - short has_source_delta_ur; /**< do we need source for delta of ultra-relativistic neutrinos/relics? */ - short has_source_delta_ncdm; /**< do we need source for delta of all non-cold dark matter species (e.g. massive neutrinos)? */ - short has_source_theta_m; /**< do we need source for theta of total matter? */ - short has_source_theta_g; /**< do we need source for theta of gammas? */ - short has_source_theta_b; /**< do we need source for theta of baryons? */ - short has_source_theta_cdm; /**< do we need source for theta of cold dark matter? */ - short has_source_theta_dcdm; /**< do we need source for theta of DCDM? */ - short has_source_theta_fld; /**< do we need source for theta of dark energy? */ - short has_source_theta_scf; /**< do we need source for theta of scalar field? */ - short has_source_theta_dr; /**< do we need source for theta of ultra-relativistic neutrinos/relics? */ - short has_source_theta_ur; /**< do we need source for theta of ultra-relativistic neutrinos/relics? */ - short has_source_theta_ncdm; /**< do we need source for theta of all non-cold dark matter species (e.g. massive neutrinos)? */ - short has_source_phi; /**< do we need source for metric fluctuation phi? */ - short has_source_phi_prime; /**< do we need source for metric fluctuation phi'? */ - short has_source_phi_plus_psi; /**< do we need source for metric fluctuation (phi+psi)? */ - short has_source_psi; /**< do we need source for metric fluctuation psi? */ + short has_source_t; /**< do we need source for CMB temperature? */ + short has_source_p; /**< do we need source for CMB polarization? */ + short has_source_delta_m; /**< do we need source for delta of total matter? */ + short has_source_delta_cb; /**< do we ALSO need source for delta of ONLY cdm and baryon? */ + short has_source_delta_tot; /**< do we need source for delta total? */ + short has_source_delta_g; /**< do we need source for delta of gammas? */ + short has_source_delta_b; /**< do we need source for delta of baryons? */ + short has_source_delta_cdm; /**< do we need source for delta of cold dark matter? */ + short has_source_delta_dcdm; /**< do we need source for delta of DCDM? */ + short has_source_delta_fld; /**< do we need source for delta of dark energy? */ + short has_source_delta_scf; /**< do we need source for delta from scalar field? */ + short has_source_delta_dr; /**< do we need source for delta of decay radiation? */ + short has_source_delta_ur; /**< do we need source for delta of ultra-relativistic neutrinos/relics? */ + short has_source_delta_idr; /**< do we need source for delta of interacting dark radiation? */ + short has_source_delta_idm_dr;/**< do we need source for delta of interacting dark matter (with dr)? */ + short has_source_delta_ncdm; /**< do we need source for delta of all non-cold dark matter species (e.g. massive neutrinos)? */ + short has_source_theta_m; /**< do we need source for theta of total matter? */ + short has_source_theta_cb; /**< do we ALSO need source for theta of ONLY cdm and baryon? */ + short has_source_theta_tot; /**< do we need source for theta total? */ + short has_source_theta_g; /**< do we need source for theta of gammas? */ + short has_source_theta_b; /**< do we need source for theta of baryons? */ + short has_source_theta_cdm; /**< do we need source for theta of cold dark matter? */ + short has_source_theta_dcdm; /**< do we need source for theta of DCDM? */ + short has_source_theta_fld; /**< do we need source for theta of dark energy? */ + short has_source_theta_scf; /**< do we need source for theta of scalar field? */ + short has_source_theta_dr; /**< do we need source for theta of ultra-relativistic neutrinos/relics? */ + short has_source_theta_ur; /**< do we need source for theta of ultra-relativistic neutrinos/relics? */ + short has_source_theta_idr; /**< do we need source for theta of interacting dark radiation? */ + short has_source_theta_idm_dr;/**< do we need source for theta of interacting dark matter (with dr)? */ + short has_source_theta_ncdm; /**< do we need source for theta of all non-cold dark matter species (e.g. massive neutrinos)? */ + short has_source_phi; /**< do we need source for metric fluctuation phi? */ + short has_source_phi_prime; /**< do we need source for metric fluctuation phi'? */ + short has_source_phi_plus_psi;/**< do we need source for metric fluctuation (phi+psi)? */ + short has_source_psi; /**< do we need source for metric fluctuation psi? */ + short has_source_h; /**< do we need source for metric fluctuation h? */ + short has_source_h_prime; /**< do we need source for metric fluctuation h'? */ + short has_source_eta; /**< do we need source for metric fluctuation eta? */ + short has_source_eta_prime; /**< do we need source for metric fluctuation eta'? */ + short has_source_H_T_Nb_prime;/**< do we need source for metric fluctuation H_T_Nb'? */ + short has_source_k2gamma_Nb; /**< do we need source for metric fluctuation gamma in Nbody gauge? */ /* remember that the temperature source function includes three terms that we call 0,1,2 (since the strategy in class v > 1.7 is @@ -268,7 +278,9 @@ struct perturbs int index_tp_t1; /**< index value for temperature (j=1 term) */ int index_tp_t2; /**< index value for temperature (j=2 term) */ int index_tp_p; /**< index value for polarization */ - int index_tp_delta_m; /**< index value for delta tot */ + int index_tp_delta_m; /**< index value for matter density fluctuation */ + int index_tp_delta_cb; /**< index value for delta cb */ + int index_tp_delta_tot; /**< index value for total density fluctuation */ int index_tp_delta_g; /**< index value for delta of gammas */ int index_tp_delta_b; /**< index value for delta of baryons */ int index_tp_delta_cdm; /**< index value for delta of cold dark matter */ @@ -277,25 +289,37 @@ struct perturbs int index_tp_delta_scf; /**< index value for delta of scalar field */ int index_tp_delta_dr; /**< index value for delta of decay radiation */ int index_tp_delta_ur; /**< index value for delta of ultra-relativistic neutrinos/relics */ + int index_tp_delta_idr; /**< index value for delta of interacting dark radiation */ + int index_tp_delta_idm_dr;/**< index value for delta of interacting dark matter (with dr)*/ int index_tp_delta_ncdm1; /**< index value for delta of first non-cold dark matter species (e.g. massive neutrinos) */ int index_tp_perturbed_recombination_delta_temp; /**< Gas temperature perturbation */ int index_tp_perturbed_recombination_delta_chi; /**< Inionization fraction perturbation */ - int index_tp_theta_m; /**< index value for theta tot */ - int index_tp_theta_g; /**< index value for theta of gammas */ - int index_tp_theta_b; /**< index value for theta of baryons */ - int index_tp_theta_cdm; /**< index value for theta of cold dark matter */ - int index_tp_theta_dcdm;/**< index value for theta of DCDM */ - int index_tp_theta_fld; /**< index value for theta of dark energy */ - int index_tp_theta_scf; /**< index value for theta of scalar field */ - int index_tp_theta_ur; /**< index value for theta of ultra-relativistic neutrinos/relics */ - int index_tp_theta_dr; /**< index value for F1 of decay radiation */ + int index_tp_theta_m; /**< index value for matter velocity fluctuation */ + int index_tp_theta_cb; /**< index value for theta cb */ + int index_tp_theta_tot; /**< index value for total velocity fluctuation */ + int index_tp_theta_g; /**< index value for theta of gammas */ + int index_tp_theta_b; /**< index value for theta of baryons */ + int index_tp_theta_cdm; /**< index value for theta of cold dark matter */ + int index_tp_theta_dcdm; /**< index value for theta of DCDM */ + int index_tp_theta_fld; /**< index value for theta of dark energy */ + int index_tp_theta_scf; /**< index value for theta of scalar field */ + int index_tp_theta_ur; /**< index value for theta of ultra-relativistic neutrinos/relics */ + int index_tp_theta_idr; /**< index value for theta of interacting dark radiation */ + int index_tp_theta_idm_dr;/**< index value for theta of interacting dark matter (with dr)*/ + int index_tp_theta_dr; /**< index value for F1 of decay radiation */ int index_tp_theta_ncdm1; /**< index value for theta of first non-cold dark matter species (e.g. massive neutrinos) */ int index_tp_phi; /**< index value for metric fluctuation phi */ int index_tp_phi_prime; /**< index value for metric fluctuation phi' */ int index_tp_phi_plus_psi; /**< index value for metric fluctuation phi+psi */ int index_tp_psi; /**< index value for metric fluctuation psi */ + int index_tp_h; /**< index value for metric fluctuation h */ + int index_tp_h_prime; /**< index value for metric fluctuation h' */ + int index_tp_eta; /**< index value for metric fluctuation eta */ + int index_tp_eta_prime; /**< index value for metric fluctuation eta' */ + int index_tp_H_T_Nb_prime; /**< index value for metric fluctuation H_T_Nb' */ + int index_tp_k2gamma_Nb; /**< index value for metric fluctuation gamma times k^2 in Nbody gauge */ int * tp_size; /**< number of types tp_size[index_md] included in computation for each mode */ @@ -329,9 +353,8 @@ struct perturbs //@{ - int tau_size; /**< tau_size = number of values */ - - double * tau_sampling; /**< tau_sampling[index_tau] = list of tau values */ + double * tau_sampling; /**< array of tau values */ + int tau_size; /**< number of values in this array */ double selection_min_of_tau_min; /**< used in presence of selection functions (for matter density, cosmic shear...) */ double selection_max_of_tau_max; /**< used in presence of selection functions (for matter density, cosmic shear...) */ @@ -351,9 +374,55 @@ struct perturbs double *** sources; /**< Pointer towards the source interpolation table sources[index_md] - [index_ic * ppt->tp_size[index_md] + index_type] + [index_ic * ppt->tp_size[index_md] + index_tp] [index_tau * ppt->k_size + index_k] */ + //@} + + /** @name - arrays related to the interpolation table for sources at late times, corresponding to z < z_max_pk (used for Fourier transfer function and spectra output) */ + + //@{ + + double * ln_tau; /**< log of the arrau tau_sampling, covering only the final time range required for the output of + Fourier transfer functions (used for interpolations) */ + int ln_tau_size; /**< number of values in this array */ + + double *** late_sources; /**< Pointer towards the source interpolation table + late_sources[index_md] + [index_ic * ppt->tp_size[index_md] + index_tp] + [index_tau * ppt->k_size + index_k] + Note that this is not a replication of part of the sources table, + it is just poiting towards the same memory zone, at the place where the late_sources actually start */ + + double *** ddlate_sources; /**< Pointer towards the splined source interpolation table with second derivatives with respect to time + ddlate_sources[index_md] + [index_ic * ppt->tp_size[index_md] + index_tp] + [index_tau * ppt->k_size + index_k] */ + + //@} + + /** @name - arrays storing the evolution of all sources for given k values, passed as k_output_values */ + + //@{ + + int * index_k_output_values; /**< List of indices corresponding to k-values close to k_output_values for each mode. + index_k_output_values[index_md*k_output_values_num+ik]*/ + + char scalar_titles[_MAXTITLESTRINGLENGTH_]; /**< _DELIMITER_ separated string of titles for scalar perturbation output files. */ + char vector_titles[_MAXTITLESTRINGLENGTH_]; /**< _DELIMITER_ separated string of titles for vector perturbation output files. */ + char tensor_titles[_MAXTITLESTRINGLENGTH_]; /**< _DELIMITER_ separated string of titles for tensor perturbation output files. */ + + int number_of_scalar_titles; /**< number of titles/columns in scalar perturbation output files */ + int number_of_vector_titles; /**< number of titles/columns in vector perturbation output files*/ + int number_of_tensor_titles; /**< number of titles/columns in tensor perturbation output files*/ + + double * scalar_perturbations_data[_MAX_NUMBER_OF_K_FILES_]; /**< Array of double pointers to perturbation output for scalars */ + double * vector_perturbations_data[_MAX_NUMBER_OF_K_FILES_]; /**< Array of double pointers to perturbation output for vectors */ + double * tensor_perturbations_data[_MAX_NUMBER_OF_K_FILES_]; /**< Array of double pointers to perturbation output for tensors */ + + int size_scalar_perturbation_data[_MAX_NUMBER_OF_K_FILES_]; /**< Array of sizes of scalar double pointers */ + int size_vector_perturbation_data[_MAX_NUMBER_OF_K_FILES_]; /**< Array of sizes of vector double pointers */ + int size_tensor_perturbation_data[_MAX_NUMBER_OF_K_FILES_]; /**< Array of sizes of tensor double pointers */ //@} @@ -392,10 +461,13 @@ struct perturb_vector int index_pt_theta_b; /**< baryon velocity */ int index_pt_delta_cdm; /**< cdm density */ int index_pt_theta_cdm; /**< cdm velocity */ + int index_pt_delta_idm_dr;/**< idm_dr density */ + int index_pt_theta_idm_dr;/**< idm_dr velocity */ int index_pt_delta_dcdm; /**< dcdm density */ int index_pt_theta_dcdm; /**< dcdm velocity */ - int index_pt_delta_fld; /**< dark energy density */ - int index_pt_theta_fld; /**< dark energy velocity */ + int index_pt_delta_fld; /**< dark energy density in true fluid case */ + int index_pt_theta_fld; /**< dark energy velocity in true fluid case */ + int index_pt_Gamma_fld; /**< unique dark energy dynamical variable in PPF case */ int index_pt_phi_scf; /**< scalar field density */ int index_pt_phi_prime_scf; /**< scalar field velocity */ int index_pt_delta_ur; /**< density of ultra-relativistic neutrinos/relics */ @@ -403,6 +475,12 @@ struct perturb_vector int index_pt_shear_ur; /**< shear of ultra-relativistic neutrinos/relics */ int index_pt_l3_ur; /**< l=3 of ultra-relativistic neutrinos/relics */ int l_max_ur; /**< max momentum in Boltzmann hierarchy (at least 3) */ + int index_pt_delta_idr; /**< density of interacting dark radiation */ + int index_pt_theta_idr; /**< velocity of interacting dark radiation */ + int index_pt_shear_idr; /**< shear of interacting dark radiation */ + int index_pt_l3_idr; /**< l=3 of interacting dark radiation */ + int l_max_idr; /**< max momentum in Boltzmann hierarchy (at least 3) for interacting dark radiation */ + /* perturbed recombination */ int index_pt_perturbed_recombination_delta_temp; /**< Gas temperature perturbation */ int index_pt_perturbed_recombination_delta_chi; /**< Inionization fraction perturbation */ @@ -483,16 +561,22 @@ struct perturb_workspace double rho_plus_p_theta; /**< total (rho+p)*theta perturbation (gives delta Toi) */ double rho_plus_p_shear; /**< total (rho+p)*shear (gives delta Tij) */ double delta_p; /**< total pressure perturbation (gives Tii) */ + + double rho_plus_p_tot; /**< total (rho+p) (used to infer theta_tot from rho_plus_p_theta) */ + double gw_source; /**< stress-energy source term in Einstein's tensor equations (gives Tij[tensor]) */ double vector_source_pi; /**< first stress-energy source term in Einstein's vector equations */ double vector_source_v; /**< second stress-energy source term in Einstein's vector equations */ double tca_shear_g; /**< photon shear in tight-coupling approximation */ double tca_slip; /**< photon-baryon slip in tight-coupling approximation */ + double tca_shear_idm_dr;/**< interacting dark radiation shear in tight coupling appproximation */ double rsa_delta_g; /**< photon density in radiation streaming approximation */ double rsa_theta_g; /**< photon velocity in radiation streaming approximation */ double rsa_delta_ur; /**< photon density in radiation streaming approximation */ double rsa_theta_ur; /**< photon velocity in radiation streaming approximation */ + double rsa_delta_idr; /**< interacting dark radiation density in dark radiation streaming approximation */ + double rsa_theta_idr; /**< interacting dark radiation velocity in dark radiation streaming approximation */ double * delta_ncdm; /**< relative density perturbation of each ncdm species */ double * theta_ncdm; /**< velocity divergence theta of each ncdm species */ @@ -501,6 +585,15 @@ struct perturb_workspace double delta_m; /**< relative density perturbation of all non-relativistic species */ double theta_m; /**< velocity divergence theta of all non-relativistic species */ + double delta_cb; /**< relative density perturbation of only cdm and baryon */ + double theta_cb; /**< velocity divergence theta of only cdm and baryon */ + + double delta_rho_fld; /**< density perturbation of fluid, not so trivial in PPF scheme */ + double delta_p_fld; /**< pressure perturbation of fluid, very non-trivial in PPF scheme */ + double rho_plus_p_theta_fld; /**< velocity divergence of fluid, not so trivial in PPF scheme */ + double S_fld; /**< S quantity sourcing Gamma_prime evolution in PPF scheme (equivalent to eq. 15 in 0808.3125) */ + double Gamma_prime_fld; /**< Gamma_prime in PPF scheme (equivalent to eq. 14 in 0808.3125) */ + FILE * perturb_output_file; /**< filepointer to output file*/ int index_ikout; /**< index for output k value (when k_output_values is set) */ @@ -523,6 +616,8 @@ struct perturb_workspace int index_ap_tca; /**< index for tight-coupling approximation */ int index_ap_rsa; /**< index for radiation streaming approximation */ + int index_ap_tca_idm_dr; /**< index for dark tight-coupling approximation (idm-idr) */ + int index_ap_rsa_idr; /**< index for dark radiation streaming approximation */ int index_ap_ufa; /**< index for ur fluid approximation */ int index_ap_ncdmfa; /**< index for ncdm fluid approximation */ int ap_size; /**< number of relevant approximations for a given mode */ @@ -575,11 +670,34 @@ extern "C" { struct perturbs * ppt, int index_md, int index_ic, - int index_type, + int index_tp, double tau, double * pvecsources ); + int perturb_output_data( + struct background * pba, + struct perturbs * ppt, + enum file_format output_format, + double z, + int number_of_titles, + double *data + ); + + int perturb_output_titles( + struct background *pba, + struct perturbs *ppt, + enum file_format output_format, + char titles[_MAXTITLESTRINGLENGTH_] + ); + + int perturb_output_firstline_and_ic_suffix( + struct perturbs *ppt, + int index_ic, + char first_line[_LINE_LENGTH_MAX_], + FileName ic_suffix + ); + int perturb_init( struct precision * ppr, struct background * pba, @@ -637,6 +755,11 @@ extern "C" { struct perturb_workspace * ppw ); + int perturb_prepare_k_output( + struct background * pba, + struct perturbs * ppt + ); + int perturb_find_approximation_number( struct precision * ppr, struct background * pba, @@ -780,14 +903,17 @@ extern "C" { struct perturb_workspace * ppw ); - int perturb_prepare_output_file(struct background * pba, + int perturb_rsa_idr_delta_and_theta( + struct precision * ppr, + struct background * pba, + struct thermo * pth, struct perturbs * ppt, - struct perturb_workspace * ppw, - int index_ikout, - int index_md); - - int perturb_prepare_output(struct background * pba, - struct perturbs * ppt); + double k, + double * y, + double a_prime_over_a, + double * pvecthermo, + struct perturb_workspace * ppw + ); #ifdef __cplusplus } diff --git a/class/include/precision_macros.h b/class/include/precision_macros.h new file mode 100644 index 00000000..d54770db --- /dev/null +++ b/class/include/precision_macros.h @@ -0,0 +1,45 @@ +/** + * This file should not be modified + * */ + +#ifdef __ASSIGN_DEFAULT_PRECISION__ +#define class_precision_parameter(NAME,TYPE,DEF_VALUE) \ +ppr->NAME = DEF_VALUE; +#endif +#ifdef __ALLOCATE_PRECISION_PARAMETER__ +#define class_precision_parameter(NAME,TYPE,DEF_VALUE) \ +TYPE NAME; +#endif +#ifdef __PARSE_PRECISION_PARAMETER__ +#define class_precision_parameter(NAME,TYPE,DEF_VALUE) \ +class_read_ ## TYPE(#NAME,ppr->NAME); +#endif + + +#ifdef __ASSIGN_DEFAULT_PRECISION__ +#define class_string_parameter(NAME,DIR,STRING) \ +sprintf(ppr->NAME,__CLASSDIR__); \ +strcat(ppr->NAME,DIR); +#endif +#ifdef __ALLOCATE_PRECISION_PARAMETER__ +#define class_string_parameter(NAME,DIR,STRING) \ +FileName NAME; +#endif +#ifdef __PARSE_PRECISION_PARAMETER__ +#define class_string_parameter(NAME,DIR,STRING) \ +class_read_string(STRING,ppr->NAME); +#endif + + +#ifdef __ASSIGN_DEFAULT_PRECISION__ +#define class_type_parameter(NAME,READ_TP,REAL_TP,DEF_VAL) \ +ppr->NAME = DEF_VAL; +#endif +#ifdef __ALLOCATE_PRECISION_PARAMETER__ +#define class_type_parameter(NAME,READ_TP,REAL_TP,DEF_VAL) \ +REAL_TP NAME; +#endif +#ifdef __PARSE_PRECISION_PARAMETER__ +#define class_type_parameter(NAME,READ_TP,REAL_TP,DEF_VAL) \ +class_read_ ## READ_TP(#NAME,ppr->NAME); +#endif diff --git a/class/include/precisions.h b/class/include/precisions.h new file mode 100644 index 00000000..eb561840 --- /dev/null +++ b/class/include/precisions.h @@ -0,0 +1,505 @@ +#include "precision_macros.h" + +/* + * Background Quantities + * */ + + +/** + * Default initial value of scale factor used in the integration of background quantities. + * For models like ncdm, the code may decide to start the integration earlier. + */ +class_precision_parameter(a_ini_over_a_today_default,double,1.e-14) +/** + * Default stepsize in conformal time for the background integration, + * in units for the conformal Hubble time. dtau = back_integration_stepsize/aH + */ +class_precision_parameter(back_integration_stepsize,double,7.e-3) +/** + * Tolerance of the background integration, giving the allowed relative integration error. + */ +class_precision_parameter(tol_background_integration,double,1.e-2) +/** + * Tolerance of the deviation of \f$ \Omega_r \f$ from 1 for which to start integration: + * The starting point of integration will be chosen, + * such that the Omega of radiation at that point is close to 1 within tolerance. + * (Class starts background integration during complete radiation domination) + */ +class_precision_parameter(tol_initial_Omega_r,double,1.e-4) +/** + * Tolerance of relative deviation of the used non-cold dark matter mass compared to that which would give the correct density. + * The dark matter mass is estimated from the dark matter density using a Newton-Method. + * In the nonrelativistic limit, this could be estimated using M=density/number density + */ +class_precision_parameter(tol_M_ncdm,double,1.e-7) +/** + * Tolerance on the relative precision of the integration over + * non-cold dark matter phase-space distributions. + */ +class_precision_parameter(tol_ncdm,double,1.e-3) +/** + * Tolerance on the relative precision of the integration over + * non-cold dark matter phase-space distributions in the synchronous gauge. + */ +class_precision_parameter(tol_ncdm_synchronous,double,1.e-3) +/** + * Tolerance on the relative precision of the integration over + * non-cold dark matter phase-space distributions in the newtonian gauge. + */ +class_precision_parameter(tol_ncdm_newtonian,double,1.e-5) +/** + * Tolerance on the relative precision of the integration over + * non-cold dark matter phase-space distributions during the background evolution. + */ +class_precision_parameter(tol_ncdm_bg,double,1.e-5) +/** + * Tolerance on the initial deviation of non-cold dark matter from being fully relativistic. + * Using w = pressure/density, this quantifies the maximum deviation from 1/3. (for relativistic species) + */ +class_precision_parameter(tol_ncdm_initial_w,double,1.e-3) +/** + * Tolerance on the deviation of the conformal time of equality from the true value in 1/Mpc. + */ +class_precision_parameter(tol_tau_eq,double,1.e-6) +/** + * Minimum amount of cdm to allow calculations in synchronous gauge comoving with cdm. + */ +class_precision_parameter(Omega0_cdm_min_synchronous,double,1.e-10) +/* + * Currently unused parameter. + */ +//class_precision_parameter(safe_phi_scf,double,0.0) +/** + * Big Bang Nucleosynthesis file path. The file specifies the predictions for + * \f$ Y_\mathrm{He} \f$ for given \f$ \omega_b \f$ and \f$ N_\mathrm{eff} \f$. + */ +class_string_parameter(sBBN_file,"/bbn/sBBN_2017.dat","sBBN file") + +/* + * Thermodynamical quantities + * */ + + +/** + * The initial z for the recfast calculation of the recombination history, e.g. 10^4 + */ +class_precision_parameter(recfast_z_initial,double,1.0e4) +/** + * Number of recfast integration steps, e.g. if this is 1.10^4 and the previous one is 10^4, the step will be Delta z = 0.5 + */ +class_precision_parameter(recfast_Nz0,int,20000) +/** + * If there is interacting DM, we want the thermodynamics table to + * start at a much larger z, in order to capture the possible + * non-trivial behavior of the dark matter interaction rate at early + * times: + * + * - The new initial redshift will be thermo_z_initial_idm_dr + * + * - the highest redhsift will be sampled with thermo_Nz1_idm_dr values, and the step will be + * Delta z = (thermo_z_initial_idm_dr-recfast_z_initial)/thermo_Nz1_idm_dr + * For instance, if the previous value is 10^9 and this value is 10^4, then Delta z simeq 10^5 + * + * - But the first interval after recfast_z_initial will be better + * sampled with thermo_Nz2_idm_dr values, in order to ensure a smoother + * transition from a small step to a large step. The intermediate + * stepsize will then be + * Delta z = (thermo_z_initial_idm_dr-recfast_z_initial)/thermo_Nz1_idm_dr/thermo_Nz1_idm_dr. + * For instance, if the three values are (10^9, 10^4, 10^2), then the intermediate timestep is Delta z simeq 10^3 +*/ +class_precision_parameter(thermo_z_initial_idm_dr,double,1.0e9) +class_precision_parameter(thermo_Nz1_idm_dr,int,10000) +class_precision_parameter(thermo_Nz2_idm_dr,int,100) +/** + * Tolerance of the relative value of integral during thermodynamical integration + */ +class_precision_parameter(tol_thermo_integration,double,1.0e-2) +/* + * Recfast 1.4 switch parameters + */ +class_precision_parameter(recfast_Heswitch,int,6) /**< from recfast 1.4, specifies how accurate the Helium recombination should be handled */ +class_precision_parameter(recfast_fudge_He,double,0.86) /**< from recfast 1.4, fugde factor for Peeble's equation coefficient of Helium */ + +/* + * Recfast 1.5 parameters + */ +class_precision_parameter(recfast_Hswitch,int,_TRUE_) /**< from recfast 1.5, specifies how accurate the Hydrogen recombination should be handled */ +class_precision_parameter(recfast_fudge_H,double,1.14) /**< from recfast 1.4, fudge factor for Peeble's equation coeffient of Hydrogen */ +class_precision_parameter(recfast_delta_fudge_H,double,-0.015) /**< from recfast 1.5.2, increasing Hydrogen fudge factor if Hswitch is enabled */ +class_precision_parameter(recfast_AGauss1,double,-0.14) /**< from recfast 1.5, Gaussian Peeble prefactor fit, amplitude */ +class_precision_parameter(recfast_AGauss2,double,0.079) /**< from recfast 1.5.2, Gaussian Peeble prefactor fit, amplitude */ +class_precision_parameter(recfast_zGauss1,double,7.28) /**< from recfast 1.5, Gaussian Peeble prefactor fit, center */ +class_precision_parameter(recfast_zGauss2,double,6.73) /**< from recfast 1.5.2, Gaussian Peeble prefactor fit, center */ +class_precision_parameter(recfast_wGauss1,double,0.18) /**< from recfast 1.5, Gaussian Peeble prefactor fit, width */ +class_precision_parameter(recfast_wGauss2,double,0.33) /**< from recfast 1.5, Gaussian Peeble prefactor fit, width */ + +class_precision_parameter(recfast_z_He_1,double,8000.0) /**< from recfast 1.4, Starting value of Helium recombination 1 */ +class_precision_parameter(recfast_delta_z_He_1,double,50.0) /**< Smoothing factor for recombination approximation switching, found to be OK on 3.09.10 */ +class_precision_parameter(recfast_z_He_2,double,5000.0) /**< from recfast 1.4, Ending value of Helium recombination 1 */ +class_precision_parameter(recfast_delta_z_He_2,double,100.0)/**< Smoothing factor for recombination approximation switching, found to be OK on 3.09.10 */ +class_precision_parameter(recfast_z_He_3,double,3500.0) /**< from recfast 1.4, Starting value of Helium recombination 2 */ +class_precision_parameter(recfast_delta_z_He_3,double,50.0) /**< Smoothing factor for recombination approximation switching, found to be OK on 3.09.10 */ +class_precision_parameter(recfast_x_He0_trigger,double,0.995) /**< Switch for Helium full calculation during reco, raised from 0.99 to 0.995 for smoother Helium */ +class_precision_parameter(recfast_x_He0_trigger2,double,0.995) /**< Switch for Helium full calculation during reco, for changing Helium flag, raised from 0.985 to same as previous one for smoother Helium */ +class_precision_parameter(recfast_x_He0_trigger_delta,double,0.05) /**< Smoothing factor for recombination approximation switching, found to be OK on 3.09.10 */ +class_precision_parameter(recfast_x_H0_trigger,double,0.995) /**< Switch for Hydrogen full calculation during reco, raised from 0.99 to 0.995 for smoother Hydrogen */ +class_precision_parameter(recfast_x_H0_trigger2,double,0.995) /**< Switch for Hydrogen full calculation during reco, for changing Hydrogen flag, raised from 0.98 to same as previous one for smoother Hydrogen */ +class_precision_parameter(recfast_x_H0_trigger_delta,double,0.05) /**< Smoothing factor for recombination approximation switching, found to be OK on 3.09.10 */ + +class_precision_parameter(recfast_H_frac,double,1.0e-3) /**< from recfast 1.4, specifies the time at which the temperature evolution is calculated by the more precise equation */ + +class_precision_parameter(reionization_z_start_max,double,50.0) /**< Maximum starting value in z for reionization */ +class_precision_parameter(reionization_sampling,double,5.0e-2) /**< Sampling density in z during reionization */ +class_precision_parameter(reionization_optical_depth_tol,double,1.0e-4) /**< Relative tolerance on finding the user-given optical depth of reionization given a certain redshift of reionization */ +class_precision_parameter(reionization_start_factor,double,8.0) /**< Searching optical depth corresponding to the redshift is started from an initial offset beyond z_reionization_start, multiplied by reionization_width */ + +class_precision_parameter(thermo_rate_smoothing_radius,int,50) /**< Smoothing in redshift of the variation rate of \f$ \exp(-\kappa) \f$, g, and \f$ \frac{dg}{d\tau} \f$ that is used as a timescale afterwards */ + +class_string_parameter(hyrec_Alpha_inf_file,"/hyrec/Alpha_inf.dat","Alpha_inf hyrec file") /**< File containing the alpha parameter of hyrec */ +class_string_parameter(hyrec_R_inf_file,"/hyrec/R_inf.dat","R_inf hyrec file") /**< File containing the R_inf parameter of hyrec */ +class_string_parameter(hyrec_two_photon_tables_file,"/hyrec/two_photon_tables.dat","two_photon_tables hyrec file") /**< File containing the two-photon interaction parameter of hyrec */ + +class_precision_parameter(k_min_tau0,double,0.1) /**< number defining k_min for the computation of Cl's and P(k)'s (dimensionless): (k_min tau_0), usually chosen much smaller than one */ + +class_precision_parameter(k_max_tau0_over_l_max,double,2.4) /**< number defining k_max for the computation of Cl's (dimensionless): (k_max tau_0)/l_max, usually chosen around two */ +class_precision_parameter(k_step_sub,double,0.05) /**< step in k space, in units of one period of acoustic oscillation at decoupling, for scales inside sound horizon at decoupling */ +class_precision_parameter(k_step_super,double,0.002) /**< step in k space, in units of one period of acoustic oscillation at decoupling, for scales above sound horizon at decoupling */ +class_precision_parameter(k_step_transition,double,0.2) /**< dimensionless number regulating the transition from 'sub' steps to 'super' steps. Decrease for more precision. */ +class_precision_parameter(k_step_super_reduction,double,0.1) /**< the step k_step_super is reduced by this amount in the k-->0 limit (below scale of Hubble and/or curvature radius) */ + +class_precision_parameter(k_per_decade_for_pk,double,10.0) /**< if values needed between kmax inferred from k_oscillations and k_kmax_for_pk, this gives the number of k per decade outside the BAO region*/ + +class_precision_parameter(idmdr_boost_k_per_decade_for_pk,double,1.0) /**< boost factor for the case of DAO in idm-idr models */ + +class_precision_parameter(k_per_decade_for_bao,double,70.0) /**< if values needed between kmax inferred from k_oscillations and k_kmax_for_pk, this gives the number of k per decade inside the BAO region (for finer sampling)*/ + +class_precision_parameter(k_bao_center,double,3.0) /**< in ln(k) space, the central value of the BAO region where sampling is finer is defined as k_rec times this number (recommended: 3, i.e. finest sampling near 3rd BAO peak) */ + +class_precision_parameter(k_bao_width,double,4.0) /**< in ln(k) space, width of the BAO region where sampling is finer: this number gives roughly the number of BAO oscillations well resolved on both sides of the central value (recommended: 4, i.e. finest sampling from before first up to 3+4=7th peak) */ + +class_precision_parameter(start_small_k_at_tau_c_over_tau_h,double,0.0015) /**< largest wavelengths start being sampled when universe is sufficiently opaque. This is quantified in terms of the ratio of thermo to hubble time scales, \f$ \tau_c/\tau_H \f$. Start when start_largek_at_tau_c_over_tau_h equals this ratio. Decrease this value to start integrating the wavenumbers earlier in time. */ + +class_precision_parameter(start_large_k_at_tau_h_over_tau_k,double,0.07) /**< largest wavelengths start being sampled when mode is sufficiently outside Hubble scale. This is quantified in terms of the ratio of hubble time scale to wavenumber time scale, \f$ \tau_h/\tau_k \f$ which is roughly equal to (k*tau). Start when this ratio equals start_large_k_at_tau_k_over_tau_h. Decrease this value to start integrating the wavenumbers earlier in time. */ + +/** + * when to switch off tight-coupling approximation: first condition: + * \f$ \tau_c/\tau_H \f$ > tight_coupling_trigger_tau_c_over_tau_h. + * Decrease this value to switch off earlier in time. If this + * number is larger than start_sources_at_tau_c_over_tau_h, the code + * returns an error, because the source computation requires + * tight-coupling to be switched off. + */ +class_precision_parameter(tight_coupling_trigger_tau_c_over_tau_h,double,0.015) + +/** + * when to switch off tight-coupling approximation: + * second condition: \f$ \tau_c/\tau_k \equiv k \tau_c \f$ < + * tight_coupling_trigger_tau_c_over_tau_k. + * Decrease this value to switch off earlier in time. + */ +class_precision_parameter(tight_coupling_trigger_tau_c_over_tau_k,double,0.01) + +class_precision_parameter(start_sources_at_tau_c_over_tau_h,double,0.008) /**< sources start being sampled when universe is sufficiently opaque. This is quantified in terms of the ratio of thermo to hubble time scales, \f$ \tau_c/\tau_H \f$. Start when start_sources_at_tau_c_over_tau_h equals this ratio. Decrease this value to start sampling the sources earlier in time. */ + +class_precision_parameter(tight_coupling_approximation,int,(int)compromise_CLASS) /**< method for tight coupling approximation */ + +class_precision_parameter(idm_dr_tight_coupling_trigger_tau_c_over_tau_k,double,0.01) /**< when to switch off the dark-tight-coupling approximation, first condition (see normal tca for full definition) */ +class_precision_parameter(idm_dr_tight_coupling_trigger_tau_c_over_tau_h,double,0.015) /**< when to switch off the dark-tight-coupling approximation, second condition (see normal tca for full definition) */ + +class_precision_parameter(l_max_g,int,12) /**< number of momenta in Boltzmann hierarchy for photon temperature (scalar), at least 4 */ +class_precision_parameter(l_max_pol_g,int,10) /**< number of momenta in Boltzmann hierarchy for photon polarization (scalar), at least 4 */ +class_precision_parameter(l_max_dr,int,17) /**< number of momenta in Boltzmann hierarchy for decay radiation, at least 4 */ +class_precision_parameter(l_max_ur,int,17) /**< number of momenta in Boltzmann hierarchy for relativistic neutrino/relics (scalar), at least 4 */ +class_precision_parameter(l_max_idr,int,17) /**< number of momenta in Boltzmann hierarchy for interacting dark radiation */ +class_precision_parameter(l_max_ncdm,int,17) /**< number of momenta in Boltzmann hierarchy for relativistic neutrino/relics (scalar), at least 4 */ +class_precision_parameter(l_max_g_ten,int,5) /**< number of momenta in Boltzmann hierarchy for photon temperature (tensor), at least 4 */ +class_precision_parameter(l_max_pol_g_ten,int,5) /**< number of momenta in Boltzmann hierarchy for photon polarization (tensor), at least 4 */ + +class_precision_parameter(curvature_ini,double,1.0) /**< initial condition for curvature for adiabatic */ +class_precision_parameter(entropy_ini,double,1.0) /**< initial condition for entropy perturbation for isocurvature */ +class_precision_parameter(gw_ini,double,1.0) /**< initial condition for tensor metric perturbation h */ + +/** + * default step \f$ d \tau \f$ in perturbation integration, in units of the timescale involved in the equations (usually, the min of \f$ 1/k \f$, \f$ 1/aH \f$, \f$ 1/\dot{\kappa} \f$) + */ +class_precision_parameter(perturb_integration_stepsize,double,0.5) + +/** + * default step \f$ d \tau \f$ for sampling the source function, in units of the timescale involved in the sources: \f$ (\dot{\kappa}- \ddot{\kappa}/\dot{\kappa})^{-1} \f$ + */ +class_precision_parameter(perturb_sampling_stepsize,double,0.1) + +/** + * control parameter for the precision of the perturbation integration, + * IMPORTANT FOR SETTING THE STEPSIZE OF NDF15 + */ +class_precision_parameter(tol_perturb_integration,double,1.0e-5) + +/** + * cutoff relevant for controlling stiffness in the PPF scheme. It is + * neccessary for the Runge-Kutta evolver, but not for ndf15. However, + * the approximation is excellent for a cutoff value of 1000, so we + * leave it on for both evolvers. (CAMB uses a cutoff value of 30.) + */ +class_precision_parameter(c_gamma_k_H_square_max,double,1.0e3) + +/** + * precision with which the code should determine (by bisection) the + * times at which sources start being sampled, and at which + * approximations must be switched on/off (units of Mpc) + */ +class_precision_parameter(tol_tau_approx,double,1.0e-10) + +/** + * method for switching off photon perturbations + */ +class_precision_parameter(radiation_streaming_approximation,int,rsa_MD_with_reio) + +/** + * when to switch off photon perturbations, ie when to switch + * on photon free-streaming approximation (keep density and thtau, set + * shear and higher momenta to zero): + * first condition: \f$ k \tau \f$ > radiation_streaming_trigger_tau_h_over_tau_k + */ +class_precision_parameter(radiation_streaming_trigger_tau_over_tau_k,double,45.0) + +/** + * when to switch off photon perturbations, ie when to switch + * on photon free-streaming approximation (keep density and theta, set + * shear and higher momenta to zero): + * second condition: + */ +class_precision_parameter(radiation_streaming_trigger_tau_c_over_tau,double,5.0) + +class_precision_parameter(idr_streaming_approximation,int,rsa_idr_none) /**< method for dark radiation free-streaming approximation */ +class_precision_parameter(idr_streaming_trigger_tau_over_tau_k,double,50.0) /**< when to switch on dark radiation (idr) free-streaming approximation, first condition */ +class_precision_parameter(idr_streaming_trigger_tau_c_over_tau,double,10.0) /**< when to switch on dark radiation (idr) free-streaming approximation, second condition */ + +class_precision_parameter(ur_fluid_approximation,int,ufa_CLASS) /**< method for ultra relativistic fluid approximation */ + +/** + * when to switch off ur (massless neutrinos / ultra-relativistic + * relics) fluid approximation + */ +class_precision_parameter(ur_fluid_trigger_tau_over_tau_k,double,30.0) + +class_precision_parameter(ncdm_fluid_approximation,int,ncdmfa_CLASS) /**< method for non-cold dark matter fluid approximation */ + +/** + * when to switch off ncdm (massive neutrinos / non-cold + * relics) fluid approximation + */ +class_precision_parameter(ncdm_fluid_trigger_tau_over_tau_k,double,31.0) + +/** + * whether CMB source functions can be approximated as zero when + * visibility function g(tau) is tiny + */ +class_precision_parameter(neglect_CMB_sources_below_visibility,double,1.0e-3) + +/** + * The type of evolver to use: options are ndf15 or rk + */ +class_type_parameter(evolver,int,enum evolver_type,ndf15) + +/* + * Primordial parameters + * */ + + +class_precision_parameter(k_per_decade_primordial,double,10.0) /**< logarithmic sampling for primordial spectra (number of points per decade in k space) */ + +class_precision_parameter(primordial_inflation_ratio_min,double,100.0) /**< for each k, start following wavenumber when aH = k/primordial_inflation_ratio_min */ +class_precision_parameter(primordial_inflation_ratio_max,double,1.0/50.0) /**< for each k, stop following wavenumber, at the latest, when aH = k/primordial_inflation_ratio_max */ +class_precision_parameter(primordial_inflation_phi_ini_maxit,int,10000) /**< maximum number of iteration when searching a suitable initial field value phi_ini (value reached when no long-enough slow-roll period before the pivot scale) */ +class_precision_parameter(primordial_inflation_pt_stepsize,double,0.01) /**< controls the integration timestep for inflaton perturbations */ +class_precision_parameter(primordial_inflation_bg_stepsize,double,0.005) /**< controls the integration timestep for inflaton background */ +class_precision_parameter(primordial_inflation_tol_integration,double,1.0e-3) /**< controls the precision of the ODE integration during inflation */ +class_precision_parameter(primordial_inflation_attractor_precision_pivot,double,0.001) /**< targeted precision when searching attractor solution near phi_pivot */ +class_precision_parameter(primordial_inflation_attractor_precision_initial,double,0.1) /**< targeted precision when searching attractor solution near phi_ini */ +class_precision_parameter(primordial_inflation_attractor_maxit,int,10) /**< maximum number of iteration when searching attractor solution */ +class_precision_parameter(primordial_inflation_tol_curvature,double,1.0e-3) /**< for each k, stop following wavenumber, at the latest, when curvature perturbation R is stable up to to this tolerance */ +class_precision_parameter(primordial_inflation_aH_ini_target,double,0.9) /**< control the step size in the search for a suitable initial field value */ +class_precision_parameter(primordial_inflation_end_dphi,double,1.0e-10) /**< first bracketing width, when trying to bracket the value phi_end at which inflation ends naturally */ +class_precision_parameter(primordial_inflation_end_logstep,double,10.0) /**< logarithmic step for updating the bracketing width, when trying to bracket the value phi_end at which inflation ends naturally */ +class_precision_parameter(primordial_inflation_small_epsilon,double,0.1) /**< value of slow-roll parameter epsilon used to define a field value phi_end close to the end of inflation (doesn't need to be exactly at the end): epsilon(phi_end)=small_epsilon (should be smaller than one) */ +class_precision_parameter(primordial_inflation_small_epsilon_tol,double,0.01) /**< tolerance in the search for phi_end */ +class_precision_parameter(primordial_inflation_extra_efolds,double,2.0) /**< a small number of efolds, irrelevant at the end, used in the search for the pivot scale (backward from the end of inflation) */ + +/* + * Transfer function parameters + * */ + + +class_precision_parameter(l_linstep,int,40) /**< factor for logarithmic spacing of values of l over which bessel and transfer functions are sampled */ + +class_precision_parameter(l_logstep,double,1.12) /**< maximum spacing of values of l over which Bessel and transfer functions are sampled (so, spacing becomes linear instead of logarithmic at some point) */ + +class_precision_parameter(hyper_x_min,double,1.0e-5) /**< flat case: lower bound on the smallest value of x at which we sample \f$ \Phi_l^{\nu}(x)\f$ or \f$ j_l(x)\f$ */ +class_precision_parameter(hyper_sampling_flat,double,8.0) /**< flat case: number of sampled points x per approximate wavelength \f$ 2\pi \f$, should remain >7.5 */ +class_precision_parameter(hyper_sampling_curved_low_nu,double,7.0) /**< open/closed cases: number of sampled points x per approximate wavelength \f$ 2\pi/\nu\f$, when \f$ \nu \f$ smaller than hyper_nu_sampling_step */ +class_precision_parameter(hyper_sampling_curved_high_nu,double,3.0) /**< open/closed cases: number of sampled points x per approximate wavelength \f$ 2\pi/\nu\f$, when \f$ \nu \f$ greater than hyper_nu_sampling_step */ +class_precision_parameter(hyper_nu_sampling_step,double,1000.0) /**< open/closed cases: value of nu at which sampling changes */ +class_precision_parameter(hyper_phi_min_abs,double,1.0e-10) /**< small value of Bessel function used in calculation of first point x (\f$ \Phi_l^{\nu}(x) \f$ equals hyper_phi_min_abs) */ +class_precision_parameter(hyper_x_tol,double,1.0e-4) /**< tolerance parameter used to determine first value of x */ +class_precision_parameter(hyper_flat_approximation_nu,double,4000.0) /**< value of nu below which the flat approximation is used to compute Bessel function */ + +class_precision_parameter(q_linstep,double,0.45) /**< asymptotic linear sampling step in q + space, in units of \f$ 2\pi/r_a(\tau_rec) \f$ + (comoving angular diameter distance to + recombination), very important for CMB */ + +class_precision_parameter(q_logstep_spline,double,170.0) /**< initial logarithmic sampling step in q + space, in units of \f$ 2\pi/r_a(\tau_{rec})\f$ + (comoving angular diameter distance to + recombination), very important for CMB and LSS */ + +class_precision_parameter(q_logstep_open,double,6.0) /**< in open models, the value of + q_logstep_spline must be decreased + according to curvature. Increasing + this number will make the calculation + more accurate for large positive + Omega_k */ + +class_precision_parameter(q_logstep_trapzd,double,20.0) /**< initial logarithmic sampling step in q + space, in units of \f$ 2\pi/r_a(\tau_{rec}) \f$ + (comoving angular diameter distance to + recombination), in the case of small + q's in the closed case, for which one + must used trapezoidal integration + instead of spline (the number of q's + for which this is the case decreases + with curvature and vanishes in the + flat limit) */ + +class_precision_parameter(q_numstep_transition,double,250.0) /**< number of steps for the transition + from q_logstep_trapzd steps to + q_logstep_spline steps (transition + must be smooth for spline) */ + +class_precision_parameter(transfer_neglect_delta_k_S_t0,double,0.15) /**< for temperature source function T0 of scalar mode, range of k values (in 1/Mpc) taken into account in transfer function: for l < (k-delta_k)*tau0, ie for k > (l/tau0 + delta_k), the transfer function is set to zero */ +class_precision_parameter(transfer_neglect_delta_k_S_t1,double,0.04) /**< same for temperature source function T1 of scalar mode */ +class_precision_parameter(transfer_neglect_delta_k_S_t2,double,0.15) /**< same for temperature source function T2 of scalar mode */ +class_precision_parameter(transfer_neglect_delta_k_S_e,double,0.11) /**< same for polarization source function E of scalar mode */ +class_precision_parameter(transfer_neglect_delta_k_V_t1,double,1.0) /**< same for temperature source function T1 of vector mode */ +class_precision_parameter(transfer_neglect_delta_k_V_t2,double,1.0) /**< same for temperature source function T2 of vector mode */ +class_precision_parameter(transfer_neglect_delta_k_V_e,double,1.0) /**< same for polarization source function E of vector mode */ +class_precision_parameter(transfer_neglect_delta_k_V_b,double,1.0) /**< same for polarization source function B of vector mode */ +class_precision_parameter(transfer_neglect_delta_k_T_t2,double,0.2) /**< same for temperature source function T2 of tensor mode */ +class_precision_parameter(transfer_neglect_delta_k_T_e,double,0.25) /**< same for polarization source function E of tensor mode */ +class_precision_parameter(transfer_neglect_delta_k_T_b,double,0.1) /**< same for polarization source function B of tensor mode */ + +class_precision_parameter(transfer_neglect_late_source,double,400.0) /**< value of l below which the CMB source functions can be neglected at late time, excepted when there is a Late ISW contribution */ + +class_precision_parameter(l_switch_limber,double,10.) /**< when to use the Limber approximation for project gravitational potential cl's */ +// For density Cl, we recommend not to use the Limber approximation +// at all, and hence to put here a very large number (e.g. 10000); but +// if you have wide and smooth selection functions you may wish to +// use it; then 100 might be OK +class_precision_parameter(l_switch_limber_for_nc_local_over_z,double,100.0) /**< when to use the Limber approximation for local number count contributions to cl's (relative to central redshift of each bin) */ +// For terms integrated along the line-of-sight involving spherical +// Bessel functions (but not their derivatives), Limber +// approximation works well. High precision can be reached with 2000 +// only. But if you have wide and smooth selection functions you may +// reduce to e.g. 30. +class_precision_parameter(l_switch_limber_for_nc_los_over_z,double,30.0) /**< when to use the Limber approximation for number count contributions to cl's integrated along the line-of-sight (relative to central redshift of each bin) */ + +class_precision_parameter(selection_cut_at_sigma,double,5.0)/**< in sigma units, where to cut gaussian selection functions */ +class_precision_parameter(selection_sampling,double,50.0) /**< controls sampling of integral over time when selection functions vary quicker than Bessel functions. Increase for better sampling. */ +class_precision_parameter(selection_sampling_bessel,double,20.0)/**< controls sampling of integral over time when selection functions vary slower than Bessel functions. Increase for better sampling. IMPORTANT for lensed contributions. */ +class_precision_parameter(selection_sampling_bessel_los,double,ppr->selection_sampling_bessel)/**< controls sampling of integral over time when selection functions vary slower than Bessel functions. This parameter is specific to number counts contributions to Cl integrated along the line of sight. Increase for better sampling */ +class_precision_parameter(selection_tophat_edge,double,0.1) /**< controls how smooth are the edge of top-hat window function (<<1 for very sharp, 0.1 for sharp) */ + +/* + * Nonlinear module precision parameters + * */ + +class_precision_parameter(sigma_k_per_decade,double,80.) /**< logarithmic stepsize controlling the precision of integrals for sigma(R,k) and similar quantitites */ + +class_precision_parameter(nonlinear_min_k_max,double,20.0) /**< when + using an algorithm to compute nonlinear + corrections, like halofit or hmcode, + k_max must be at least equal to this + value. Calculations are done internally + until this k_max, but the P(k,z) output + is still controlled by P_k_max_1/Mpc or + P_k_max_h/Mpc even if they are + smaller */ + +/** parameters relevant for HALOFIT computation */ + +class_precision_parameter(halofit_min_k_nonlinear,double,1.0e-4)/**< value of k in 1/Mpc below which non-linear corrections will be neglected */ + +class_precision_parameter(halofit_min_k_max,double,5.0) /**< DEPRECATED: should use instead nonlinear_min_k_max */ + +class_precision_parameter(halofit_k_per_decade,double,80.0) /**< halofit needs to evalute integrals + (linear power spectrum times some + kernels). They are sampled using + this logarithmic step size. */ + +class_precision_parameter(halofit_sigma_precision,double,0.05) /**< a smaller value will lead to a + more precise halofit result at the *highest* + redshift at which halofit can make computations, + at the expense of requiring a larger k_max; but + this parameter is not relevant for the + precision on P_nl(k,z) at other redshifts, so + there is normally no need to change it */ + +class_precision_parameter(halofit_tol_sigma,double,1.0e-6) /**< tolerance required on sigma(R) when + matching the condition sigma(R_nl)=1, + whcih defines the wavenumber of + non-linearity, k_nl=1./R_nl */ + +class_precision_parameter(pk_eq_z_max,double,5.0) /**< Maximum z for the pk_eq method */ +class_precision_parameter(pk_eq_tol,double,1.0e-7) /**< Tolerance on the pk_eq method for finding the pk */ + +/** Parameters relevant for HMcode computation */ + +class_precision_parameter(hmcode_max_k_extra,double,1.e6) /**< parameter specifying the maximum k value for + the extrapolation of the linear power spectrum + (needed for the sigma computation) */ + +class_precision_parameter(hmcode_min_k_max,double,5.) /**< DEPRECATED: should use instead nonlinear_min_k_max */ + +class_precision_parameter(hmcode_tol_sigma,double,1.e-6) /**< tolerance required on sigma(R) when matching the + condition sigma(R_nl)=1, which defines the wavenumber + of non-linearity, k_nl=1./R_nl */ + + +class_precision_parameter(nk_wiggle,int,512) /** following camb implementation for HMcode2020*/ +class_precision_parameter(logkmin_wiggle,double, log(5E-3)) /** following camb implementation for HMcode2020*/ +class_precision_parameter(logkmax_wiggle,double, log(5.0)) /** following camb implementation for HMcode2020*/ +class_precision_parameter(knorm_nowiggle,double, 0.03) /** following camb implementation for HMcode2020*/ + +/** + * parameters controlling stepsize and min/max r & a values for + * sigma(r) & grow table + */ +class_precision_parameter(n_hmcode_tables,int,64) +class_precision_parameter(n_hmcode_mead_growth_tables,int,64) +class_precision_parameter(rmin_for_sigtab,double,1.e-5) +class_precision_parameter(rmax_for_sigtab,double,1.e3) +class_precision_parameter(ainit_for_growtab,double,1.e-3) +class_precision_parameter(amax_for_growtab,double,1.) + +/** + * parameters controlling stepsize and min/max halomass values for the + * 1-halo-power integral + */ +class_precision_parameter(nsteps_for_p1h_integral,int,256) +class_precision_parameter(mmin_for_p1h_integral,double,1.e3) +class_precision_parameter(mmax_for_p1h_integral,double,1.e18) + + +/* + * Lensing precision parameters + * */ + +class_precision_parameter(accurate_lensing,int,_FALSE_) /**< switch between Gauss-Legendre quadrature integration and simple quadrature on a subdomain of angles */ +class_precision_parameter(num_mu_minus_lmax,int,70) /**< difference between num_mu and l_max, increase for more precision */ +class_precision_parameter(delta_l_max,int,500)/**< difference between l_max in unlensed and lensed spectra */ +class_precision_parameter(tol_gauss_legendre,double,ppr->smallest_allowed_variation) /**< tolerance with which quadrature points are found: must be very small for an accurate integration (if not entered manually, set automatically to match machine precision) */ + +#undef class_precision_parameter +#undef class_string_parameter +#undef class_type_parameter diff --git a/class/include/primordial.h b/class/include/primordial.h old mode 100644 new mode 100755 diff --git a/class/include/quadrature.h b/class/include/quadrature.h index 4927d352..19aed33f 100644 --- a/class/include/quadrature.h +++ b/class/include/quadrature.h @@ -10,6 +10,8 @@ /******************************************/ #include "common.h" +enum ncdm_quadrature_method {qm_auto, qm_Laguerre, qm_trapz_indefinite, qm_trapz}; + /* Structures for QSS */ typedef struct adaptive_integration_tree_node{ @@ -39,6 +41,16 @@ typedef struct adaptive_integration_tree_node{ int (*function)(void * params_for_function, double q, double *f0), void * params_for_function, ErrorMsg errmsg); + int get_qsampling_manual(double *x, + double *w, + int N, + double qmax, + enum ncdm_quadrature_method method, + double *qvec, + int qsiz, + int (*function)(void * params_for_function, double q, double *f0), + void * params_for_function, + ErrorMsg errmsg); int sort_x_and_w(double *x, double *w, double *workx, double *workw, int startidx, int endidx); int get_leaf_x_and_w(qss_node *node, int *ind, double *x, double *w,int isindefinite); diff --git a/class/include/sparse.h b/class/include/sparse.h old mode 100644 new mode 100755 diff --git a/class/include/spectra.h b/class/include/spectra.h old mode 100644 new mode 100755 index 5b41cda9..e7d4febd --- a/class/include/spectra.h +++ b/class/include/spectra.h @@ -25,7 +25,6 @@ struct spectra { double z_max_pk; /**< maximum value of z at which matter spectrum P(k,z) will be evaluated; keep fixed to zero if P(k) only needed today */ - int non_diag; /**< sets the number of cross-correlation spectra that you want to calculate: 0 means only auto-correlation, 1 means only adjacent bins, @@ -117,111 +116,22 @@ struct spectra { double ** cl; /**< table of anisotropy spectra for each mode, multipole, pair of initial conditions and types, cl[index_md][(index_l * psp->ic_ic_size[index_md] + index_ic1_ic2) * psp->ct_size + index_ct] */ double ** ddcl; /**< second derivatives of previous table with respect to l, in view of spline interpolation */ - double alpha_II_2_20; /**< parameter describing adiabatic versus isocurvature contribution in mutipole range [2,20] (see Planck parameter papers) */ - double alpha_RI_2_20; /**< parameter describing adiabatic versus isocurvature contribution in mutipole range [2,20] (see Planck parameter papers) */ - double alpha_RR_2_20; /**< parameter describing adiabatic versus isocurvature contribution in mutipole range [2,20] (see Planck parameter papers) */ - - double alpha_II_21_200; /**< parameter describing adiabatic versus isocurvature contribution in mutipole range [21,200] (see Planck parameter papers) */ - double alpha_RI_21_200; /**< parameter describing adiabatic versus isocurvature contribution in mutipole range [21,200] (see Planck parameter papers) */ - double alpha_RR_21_200; /**< parameter describing adiabatic versus isocurvature contribution in mutipole range [21,200] (see Planck parameter papers) */ - - double alpha_II_201_2500; /**< parameter describing adiabatic versus isocurvature contribution in mutipole range [201,2500] (see Planck parameter papers) */ - double alpha_RI_201_2500; /**< parameter describing adiabatic versus isocurvature contribution in mutipole range [201,2500] (see Planck parameter papers) */ - double alpha_RR_201_2500; /**< parameter describing adiabatic versus isocurvature contribution in mutipole range [201,2500] (see Planck parameter papers) */ - - double alpha_II_2_2500; /**< parameter describing adiabatic versus isocurvature contribution in mutipole range [2,2500] (see Planck parameter papers) */ - double alpha_RI_2_2500; /**< parameter describing adiabatic versus isocurvature contribution in mutipole range [2,2500] (see Planck parameter papers) */ - double alpha_RR_2_2500; /**< parameter describing adiabatic versus isocurvature contribution in mutipole range [2,2500] (see Planck parameter papers) */ - - double alpha_kp; /**< parameter describing adiabatic versus isocurvature contribution at pivot scale (see Planck parameter papers) */ - double alpha_k1; /**< parameter describing adiabatic versus isocurvature contribution at scale k1 (see Planck parameter papers) */ - double alpha_k2; /**< parameter describing adiabatic versus isocurvature contribution at scale k2 (see Planck parameter papers) */ - - //@} - - /** @name - table of pre-computed matter power spectrum P(k) values, and related quantities */ - - //@{ - - int ln_k_size; /**< number ln(k) values */ - double * ln_k; /**< list of ln(k) values ln_k[index_k] */ - - int ln_tau_size; /**< number ln(tau) values (only one if z_max_pk = 0) */ - double * ln_tau; /**< list of ln(tau) values ln_tau[index_tau] */ - - double * ln_pk; /**< Matter power spectrum. - depends on indices index_md, index_ic1, index_ic2, index_k, index_tau as: - ln_pk[(index_tau * psp->k_size + index_k)* psp->ic_ic_size[index_md] + index_ic1_ic2] - where index_ic1_ic2 labels ordered pairs (index_ic1, index_ic2) (since - the primordial spectrum is symmetric in (index_ic1, index_ic2)). - - for diagonal elements (index_ic1 = index_ic2) this arrays contains - ln[P(k)] where P(k) is positive by construction. - - for non-diagonal elements this arrays contains the k-dependent - cosine of the correlation angle, namely - P(k)_(index_ic1, index_ic2)/sqrt[P(k)_index_ic1 P(k)_index_ic2] - This choice is convenient since the sign of the non-diagonal cross-correlation - is arbitrary. For fully correlated or anti-correlated initial conditions, - this non-diagonal element is independent on k, and equal to +1 or -1. - */ - - double * ddln_pk; /**< second derivative of above array with respect to log(tau), for spline interpolation. So: - - for index_ic1 = index_ic, we spline ln[P(k)] vs. ln(k), which is - good since this function is usually smooth. - - for non-diagonal coefficients, we spline - P(k)_(index_ic1, index_ic2)/sqrt[P(k)_index_ic1 P(k)_index_ic2] - vs. ln(k), which is fine since this quantity is often assumed to be - constant (e.g for fully correlated/anticorrelated initial conditions) - or nearly constant, and with arbitrary sign. - */ - - double sigma8; /**< sigma8 parameter */ - - double * ln_pk_nl; /**< Non-linear matter power spectrum. - depends on indices index_k, index_tau as: - ln_pk_nl[index_tau * psp->k_size + index_k] - */ - double * ddln_pk_nl; /**< second derivative of above array with respect to log(tau), for spline interpolation. */ - - int index_tr_delta_g; /**< index of gamma density transfer function */ - int index_tr_delta_b; /**< index of baryon density transfer function */ - int index_tr_delta_cdm; /**< index of cold dark matter density transfer function */ - int index_tr_delta_dcdm; /**< index of decaying cold dark matter density transfer function */ - int index_tr_delta_scf; /**< index of scalar field phi transfer function */ - int index_tr_delta_fld; /**< index of dark energy fluid density transfer function */ - int index_tr_delta_ur; /**< index of ultra-relativistic neutrinos/relics density transfer function */ - int index_tr_delta_dr; /**< index of decay radiation density transfer function */ - int index_tr_delta_ncdm1; /**< index of first species of non-cold dark matter (massive neutrinos, ...) density transfer function */ - int index_tr_delta_tot; /**< index of total matter density transfer function */ - int index_tr_theta_g; /**< index of gamma velocity transfer function */ - int index_tr_theta_b; /**< index of baryon velocity transfer function */ - int index_tr_theta_cdm; /**< index of cold dark matter velocity transfer function */ - int index_tr_theta_dcdm; /**< index of decaying cold dark matter velocity transfer function */ - int index_tr_theta_scf; /**< index of derivative of scalar field phi transfer function */ - int index_tr_theta_fld; /**< index of dark energy fluid velocity transfer function */ - int index_tr_theta_ur; /**< index of ultra-relativistic neutrinos/relics velocity transfer function */ - int index_tr_theta_dr; /**< index of decay radiation velocity transfer function */ - int index_tr_theta_ncdm1; /**< index of first species of non-cold dark matter (massive neutrinos, ...) velocity transfer function */ - int index_tr_theta_tot; /**< index of total matter velocity transfer function */ - int index_tr_phi; /**< index of Bardeen potential phi */ - int index_tr_psi; /**< index of Bardeen potential psi */ - int tr_size; /**< total number of species in transfer functions */ - - double * matter_transfer; /**< Matter transfer functions. - Depends on indices index_md,index_tau,index_ic,index_k, index_tr as: - matter_transfer[((index_tau*psp->ln_k_size + index_k) * psp->ic_size[index_md] + index_ic) * psp->tr_size + index_tr] - */ - double * ddmatter_transfer; /**< second derivative of above array with respect to log(tau), for spline interpolation. */ - - /* double * LddCl; /\**< density Cl's in the Limber plus thin shell approximation (then, there are no non-diagonal correlations between various shells of different redshifts); depends on index_tau,index_l as: LddCl[index_tau*psp->psp->l_size[psp->index_md_scalars]+index_l] *\/ */ - - /* double * LTdCl; /\**< cross (temperature * density) Cl's in the Limber plus thin shell approximation; depends on index_tau,index_l as: LTdCl[index_tau*psp->psp->l_size[psp->index_md_scalars]+index_l] *\/ */ - //@} /** @name - technical parameters */ //@{ + struct nonlinear * pnl; /**< a pointer to the nonlinear structure is + stored in the spectra structure. This odd, + unusual and unelegant feature has been + introduced in v2.8 in order to keep in use + some deprecated functions spectra_pk_...() + that are now pointing at new function + nonlinear_pk_...(). In the future, if the + deprecated functions are removed, it will + be possible to remove also this pointer. */ + short spectra_verbose; /**< flag regulating the amount of information sent to standard output (none if set to zero) */ ErrorMsg error_message; /**< zone for writing error messages */ @@ -238,14 +148,7 @@ struct spectra { extern "C" { #endif - int spectra_bandpower( - struct spectra * psp, - int l1, - int l2, - double * TT_II, - double * TT_RI, - double * TT_RR - ); + /* external functions (meant to be called from other modules) */ int spectra_cl_at_l( struct spectra * psp, @@ -255,56 +158,7 @@ extern "C" { double ** cl_md_ic ); - int spectra_pk_at_z( - struct background * pba, - struct spectra * psp, - enum linear_or_logarithmic mode, - double z, - double * output_tot, - double * output_ic - ); - - int spectra_pk_at_k_and_z( - struct background * pba, - struct primordial * ppm, - struct spectra * psp, - double k, - double z, - double * pk, - double * pk_ic - ); - - int spectra_pk_nl_at_z( - struct background * pba, - struct spectra * psp, - enum linear_or_logarithmic mode, - double z, - double * output_tot - ); - - int spectra_pk_nl_at_k_and_z( - struct background * pba, - struct primordial * ppm, - struct spectra * psp, - double k, - double z, - double * pk_tot - ); - - int spectra_tk_at_z( - struct background * pba, - struct spectra * psp, - double z, - double * output - ); - - int spectra_tk_at_k_and_z( - struct background * pba, - struct spectra * psp, - double k, - double z, - double * output - ); + /* internal functions */ int spectra_init( struct precision * ppr, @@ -356,16 +210,64 @@ extern "C" { int spectra_k_and_tau( struct background * pba, struct perturbs * ppt, + struct nonlinear *pnl, struct spectra * psp ); - int spectra_pk( - struct background * pba, - struct perturbs * ppt, - struct primordial * ppm, - struct nonlinear *pnl, - struct spectra * psp - ); + /* deprecated functions (since v2.8) */ + + int spectra_pk_at_z( + struct background * pba, + struct spectra * psp, + enum linear_or_logarithmic mode, + double z, + double * output_tot, + double * output_ic, + double * output_cb_tot, + double * output_cb_ic + ); + + int spectra_pk_at_k_and_z( + struct background * pba, + struct primordial * ppm, + struct spectra * psp, + double k, + double z, + double * pk, + double * pk_ic, + double * pk_cb, + double * pk_cb_ic + ); + + int spectra_pk_nl_at_z( + struct background * pba, + struct spectra * psp, + enum linear_or_logarithmic mode, + double z, + double * output_tot, + double * output_cb_tot + ); + + int spectra_pk_nl_at_k_and_z( + struct background * pba, + struct primordial * ppm, + struct spectra * psp, + double k, + double z, + double * pk_tot, + double * pk_cb_tot + ); + + int spectra_fast_pk_at_kvec_and_zvec( + struct background * pba, + struct spectra * psp, + double * kvec, + int kvec_size, + double * zvec, + int zvec_size, + double * pk_tot_out, + double * pk_cb_tot_out, + int nonlinear); int spectra_sigma( struct background * pba, @@ -376,32 +278,33 @@ extern "C" { double *sigma ); - int spectra_matter_transfers( - struct background * pba, - struct perturbs * ppt, - struct spectra * psp - ); + int spectra_sigma_cb( + struct background * pba, + struct primordial * ppm, + struct spectra * psp, + double R, + double z, + double *sigma_cb + ); - int spectra_output_tk_titles(struct background *pba, - struct perturbs *ppt, - enum file_format output_format, - char titles[_MAXTITLESTRINGLENGTH_] - ); + /* deprecated functions (since v2.1) */ + + int spectra_tk_at_z( + struct background * pba, + struct spectra * psp, + double z, + double * output + ); + + int spectra_tk_at_k_and_z( + struct background * pba, + struct spectra * psp, + double k, + double z, + double * output + ); - int spectra_output_tk_data( - struct background * pba, - struct perturbs * ppt, - struct spectra * psp, - enum file_format output_format, - double z, - int number_of_titles, - double *data - ); - - int spectra_firstline_and_ic_suffix(struct perturbs *ppt, - int index_ic, - char first_line[_LINE_LENGTH_MAX_], - FileName ic_suffix); + /* end deprecated functions */ #ifdef __cplusplus } diff --git a/class/include/thermodynamics.h b/class/include/thermodynamics.h index e416c78c..13d32cd4 100644 --- a/class/include/thermodynamics.h +++ b/class/include/thermodynamics.h @@ -26,7 +26,8 @@ enum reionization_parametrization { reio_camb, /**< reionization parameterized like in CAMB */ reio_bins_tanh, /**< binned reionization history with tanh inteprolation between bins */ reio_half_tanh, /**< half a tanh, instead of the full tanh */ - reio_many_tanh /**< similar to reio_camb but with more than one tanh */ + reio_many_tanh, /**< similar to reio_camb but with more than one tanh */ + reio_inter /**< linear interpolation between specified points */ }; /** @@ -98,7 +99,7 @@ struct thermo double binned_reio_step_sharpness; /**< sharpness of tanh() step interpolating between binned values */ - /** parameters for reio_many_tanh */ + /** parameters for reio_many_tanh */ int many_tanh_num; /**< with how many jumps do we want to describe reionization? */ @@ -108,15 +109,23 @@ struct thermo double many_tanh_width; /**< sharpness of tanh() steps */ + /** parameters for reio_inter */ + + int reio_inter_num; /**< with how many jumps do we want to describe reionization? */ + + double * reio_inter_z; /**< discrete z values */ + + double * reio_inter_xe; /**< discrete \f$ X_e(z)\f$ values */ + /** parameters for energy injection */ - double annihilation; /** parameter describing CDM annihilation (f / m_cdm, see e.g. 0905.0003) */ + double annihilation; /**< parameter describing CDM annihilation (f / m_cdm, see e.g. 0905.0003) */ - short has_on_the_spot; /** flag to specify if we want to use the on-the-spot approximation **/ + short has_on_the_spot; /**< flag to specify if we want to use the on-the-spot approximation **/ - double decay; /** parameter describing CDM decay (f/tau, see e.g. 1109.6322)*/ + double decay; /**< parameter describing CDM decay (f/tau, see e.g. 1109.6322)*/ - double annihilation_variation; /** if this parameter is non-zero, + double annihilation_variation; /**< if this parameter is non-zero, the function F(z)=(f / m_cdm)(z) will be a parabola in log-log scale between zmin and @@ -126,21 +135,26 @@ struct thermo zmax; it will be constant outside this range */ - double annihilation_z; /** if annihilation_variation is non-zero, + double annihilation_z; /**< if annihilation_variation is non-zero, this is the value of z at which the parameter annihilation is defined, i.e. F(annihilation_z)=annihilation */ - double annihilation_zmax; /** if annihilation_variation is non-zero, + double annihilation_zmax; /**< if annihilation_variation is non-zero, redshift above which annihilation rate is maximal */ - double annihilation_zmin; /** if annihilation_variation is non-zero, + double annihilation_zmin; /**< if annihilation_variation is non-zero, redshift below which annihilation rate is constant */ - double annihilation_f_halo; /** takes the contribution of DM annihilation in halos into account*/ - double annihilation_z_halo; /** characteristic redshift for DM annihilation in halos*/ + double annihilation_f_halo; /**< takes the contribution of DM annihilation in halos into account*/ + double annihilation_z_halo; /**< characteristic redshift for DM annihilation in halos*/ + + double a_idm_dr; /**< strength of the coupling between interacting dark matter and interacting dark radiation (idm-idr) */ + double b_idr; /**< strength of the self coupling for interacting dark radiation (idr-idr) */ + double nindex_idm_dr; /**< temperature dependence of the interaction between dark matter and dark radiation */ + double m_idm; /**< interacting dark matter mass */ //@} @@ -153,12 +167,22 @@ struct thermo int index_th_tau_d; /**< Baryon drag optical depth */ int index_th_ddkappa; /**< scattering rate derivative \f$ d^2 \kappa / d \tau^2 \f$ */ int index_th_dddkappa; /**< scattering rate second derivative \f$ d^3 \kappa / d \tau^3 \f$ */ - int index_th_exp_m_kappa; /**< \f$ exp^{-\kappa} \f$ */ + int index_th_exp_m_kappa; /**< \f$ exp^{-\kappa} \f$ */ int index_th_g; /**< visibility function \f$ g = (d \kappa / d \tau) * exp^{-\kappa} \f$ */ int index_th_dg; /**< visibility function derivative \f$ (d g / d \tau) \f$ */ int index_th_ddg; /**< visibility function second derivative \f$ (d^2 g / d \tau^2) \f$ */ + int index_th_dmu_idm_dr; /**< scattering rate of idr with idm_dr (i.e. idr opacity to idm_dr scattering) (units 1/Mpc) */ + int index_th_ddmu_idm_dr; /**< derivative of this scattering rate */ + int index_th_dddmu_idm_dr; /**< second derivative of this scattering rate */ + int index_th_dmu_idr; /**< idr self-interaction rate */ + int index_th_tau_idm_dr; /**< optical depth of idm_dr (due to interactions with idr) */ + int index_th_tau_idr; /**< optical depth of idr (due to self-interactions) */ + int index_th_g_idm_dr; /**< visibility function of idm_idr */ + int index_th_cidm_dr2; /**< interacting dark matter squared sound speed \f$ c_{dm}^2 \f$ */ + int index_th_Tidm_dr; /**< temperature of DM interacting with DR \f$ T_{idm_dr} \f$ */ int index_th_Tb; /**< baryon temperature \f$ T_b \f$ */ - int index_th_cb2; /**< squared baryon sound speed \f$ c_b^2 \f$ */ + int index_th_wb; /**< baryon equation of state parameter \f$ w_b = k_B T_b / \mu \f$ */ + int index_th_cb2; /**< squared baryon adiabatic sound speed \f$ c_b^2 \f$ */ int index_th_dcb2; /**< derivative wrt conformal time of squared baryon sound speed \f$ d [c_b^2] / d \tau \f$ (only computed if some non-minimal tight-coupling schemes is requested) */ int index_th_ddcb2; /**< second derivative wrt conformal time of squared baryon sound speed \f$ d^2 [c_b^2] / d \tau^2 \f$ (only computed if some non0-minimal tight-coupling schemes is requested) */ int index_th_rate; /**< maximum variation rate of \f$ exp^{-\kappa}\f$, g and \f$ (d g / d \tau) \f$, used for computing integration step in perturbation module */ @@ -186,7 +210,7 @@ struct thermo //@} - /** @name - redshift, conformal time and sound horizon at recombination */ + /** @name - characteristic quantities like redshift, conformal time and sound horizon at recombination */ //@{ @@ -197,20 +221,24 @@ struct thermo double ra_rec; /**< conformal angular diameter distance to recombination */ double da_rec; /**< physical angular diameter distance to recombination */ double rd_rec; /**< comoving photon damping scale at recombination */ + + double z_star; /**< redshift at which photon optical depth crosses one */ + double tau_star;/**< confirmal time at which photon optical depth crosses one */ + double rs_star; /**< comoving sound horizon at z_star */ + double ds_star; /**< physical sound horizon at z_star */ + double ra_star; /**< conformal angular diameter distance to z_star */ + double da_star; /**< physical angular diameter distance to z_star */ + double rd_star; /**< comoving photon damping scale at z_star */ + double z_d; /**< baryon drag redshift */ double tau_d; /**< baryon drag time */ double ds_d; /**< physical sound horizon at baryon drag */ double rs_d; /**< comoving sound horizon at baryon drag */ + double tau_cut; /**< at at which the visibility goes below a fixed fraction of the maximum visibility, used for an approximation in perturbation module */ double angular_rescaling; /**< [ratio ra_rec / (tau0-tau_rec)]: gives CMB rescaling in angular space relative to flat model (=1 for curvature K=0) */ - - //@} - - /** @name - redshift, conformal time and sound horizon at recombination */ - - //@{ - - double tau_free_streaming; /**< minimum value of tau at which sfree-streaming approximation can be switched on */ + double tau_free_streaming; /**< minimum value of tau at which free-streaming approximation can be switched on */ + double tau_idr_free_streaming; /**< trigger for dark radiation free streaming approximation (idm-idr) */ //@} @@ -269,7 +297,8 @@ struct recombination { int index_re_z; /**< redshift \f$ z \f$ */ int index_re_xe; /**< ionization fraction \f$ x_e \f$ */ int index_re_Tb; /**< baryon temperature \f$ T_b \f$ */ - int index_re_cb2; /**< squared baryon sound speed \f$ c_b^2 \f$ */ + int index_re_wb; /**< baryon equation of state parameter \f$ w_b \f$ */ + int index_re_cb2; /**< squared baryon adiabatic sound speed \f$ c_b^2 \f$ */ int index_re_dkappadtau; /**< Thomson scattering rate \f$ d \kappa / d \tau \f$ (units 1/Mpc) */ int re_size; /**< size of this vector */ @@ -363,7 +392,8 @@ struct reionization { int index_re_z; /**< redshift \f$ z \f$ */ int index_re_xe; /**< ionization fraction \f$ x_e \f$ */ int index_re_Tb; /**< baryon temperature \f$ T_b \f$ */ - int index_re_cb2; /**< squared baryon sound speed \f$ c_b^2 \f$ */ + int index_re_wb; /**< baryon equation of state parameter \f$ w_b \f$ */ + int index_re_cb2; /**< squared baryon adiabatic sound speed \f$ c_b^2 \f$ */ int index_re_dkappadtau; /**< Thomson scattering rate \f$ d \kappa / d \tau\f$ (units 1/Mpc) */ int index_re_dkappadz; /**< Thomson scattering rate with respect to redshift \f$ d \kappa / d z\f$ (units 1/Mpc) */ int index_re_d3kappadz3; /**< second derivative of previous quantity with respect to redshift */ @@ -403,7 +433,7 @@ struct reionization { int index_helium_fullreio_redshift; /**< helium full reionization redshift */ int index_helium_fullreio_width; /**< a width defining the duration of helium full reionization in the reio_camb scheme */ - /* parameters used by reio_bins_tanh and reio_many_tanh */ + /* parameters used by reio_bins_tanh, reio_many_tanh, reio_inter */ int reio_num_z; /**< number of reionization jumps */ int index_reio_first_z; /**< redshift at which we start to impose reionization function */ @@ -479,10 +509,11 @@ extern "C" { ); int thermodynamics_indices( - struct thermo * pthermo, - struct recombination * preco, - struct reionization * preio - ); + struct background * pba, + struct thermo * pthermo, + struct recombination * preco, + struct reionization * preio + ); int thermodynamics_helium_from_bbn( struct precision * ppr, @@ -574,6 +605,7 @@ extern "C" { int thermodynamics_merge_reco_and_reio( struct precision * ppr, + struct background * pba, struct thermo * pth, struct recombination * preco, struct reionization * preio diff --git a/class/include/transfer.h b/class/include/transfer.h old mode 100644 new mode 100755 index cccb4b81..cd59231f --- a/class/include/transfer.h +++ b/class/include/transfer.h @@ -11,7 +11,45 @@ /* macro: test if index_tt is in the range between index and index+num, while the flag is true */ #define _index_tt_in_range_(index,num,flag) (flag == _TRUE_) && (index_tt >= index) && (index_tt < index+num) - +/* macro: test if index_tt corresponds to an integrated nCl/sCl contribution */ +#define _integrated_ncl_ (_index_tt_in_range_(ptr->index_tt_lensing, ppt->selection_num, ppt->has_cl_lensing_potential)) || \ + (_index_tt_in_range_(ptr->index_tt_nc_lens, ppt->selection_num, ppt->has_nc_lens)) || \ + (_index_tt_in_range_(ptr->index_tt_nc_g4, ppt->selection_num, ppt->has_nc_gr)) || \ + (_index_tt_in_range_(ptr->index_tt_nc_g5, ppt->selection_num, ppt->has_nc_gr)) +/* macro: test if index_tt corresponds to an non-integrated nCl/sCl contribution */ +#define _nonintegrated_ncl_ (_index_tt_in_range_(ptr->index_tt_density, ppt->selection_num, ppt->has_nc_density)) || \ + (_index_tt_in_range_(ptr->index_tt_rsd, ppt->selection_num, ppt->has_nc_rsd)) || \ + (_index_tt_in_range_(ptr->index_tt_d0, ppt->selection_num, ppt->has_nc_rsd)) || \ + (_index_tt_in_range_(ptr->index_tt_d1, ppt->selection_num, ppt->has_nc_rsd)) || \ + (_index_tt_in_range_(ptr->index_tt_nc_g1, ppt->selection_num, ppt->has_nc_gr)) || \ + (_index_tt_in_range_(ptr->index_tt_nc_g2, ppt->selection_num, ppt->has_nc_gr)) || \ + (_index_tt_in_range_(ptr->index_tt_nc_g3, ppt->selection_num, ppt->has_nc_gr)) +/* macro: bin number associated to particular redshift bin and selection function for non-integrated contributions*/ +#define _get_bin_nonintegrated_ncl_(index_tt) \ + if (_index_tt_in_range_(ptr->index_tt_density, ppt->selection_num, ppt->has_nc_density)) \ + bin = index_tt - ptr->index_tt_density; \ + if (_index_tt_in_range_(ptr->index_tt_rsd, ppt->selection_num, ppt->has_nc_rsd)) \ + bin = index_tt - ptr->index_tt_rsd; \ + if (_index_tt_in_range_(ptr->index_tt_d0, ppt->selection_num, ppt->has_nc_rsd)) \ + bin = index_tt - ptr->index_tt_d0; \ + if (_index_tt_in_range_(ptr->index_tt_d1, ppt->selection_num, ppt->has_nc_rsd)) \ + bin = index_tt - ptr->index_tt_d1; \ + if (_index_tt_in_range_(ptr->index_tt_nc_g1, ppt->selection_num, ppt->has_nc_gr)) \ + bin = index_tt - ptr->index_tt_nc_g1; \ + if (_index_tt_in_range_(ptr->index_tt_nc_g2, ppt->selection_num, ppt->has_nc_gr)) \ + bin = index_tt - ptr->index_tt_nc_g2; \ + if (_index_tt_in_range_(ptr->index_tt_nc_g3, ppt->selection_num, ppt->has_nc_gr)) \ + bin = index_tt - ptr->index_tt_nc_g3; +/* macro: bin number associated to particular redshift bin and selection function for integrated contributions*/ +#define _get_bin_integrated_ncl_(index_tt) \ + if (_index_tt_in_range_(ptr->index_tt_lensing, ppt->selection_num, ppt->has_cl_lensing_potential)) \ + bin = index_tt - ptr->index_tt_lensing; \ + if (_index_tt_in_range_(ptr->index_tt_nc_lens, ppt->selection_num, ppt->has_nc_lens)) \ + bin = index_tt - ptr->index_tt_nc_lens; \ + if (_index_tt_in_range_(ptr->index_tt_nc_g4, ppt->selection_num, ppt->has_nc_gr)) \ + bin = index_tt - ptr->index_tt_nc_g4; \ + if (_index_tt_in_range_(ptr->index_tt_nc_g5, ppt->selection_num, ppt->has_nc_gr)) \ + bin = index_tt - ptr->index_tt_nc_g5; /** * Structure containing everything about transfer functions in * harmonic space \f$ \Delta_l^{X} (q) \f$ that other modules need to @@ -193,7 +231,7 @@ struct transfer_workspace { int tau_size; /**< number of discrete time values for a given type */ int tau_size_max; /**< maximum number of discrete time values for all types */ - double * interpolated_sources; /**< interpolated_sources[index_tau]: + double * interpolated_sources; /**< interpolated_sources[index_tau]: sources interpolated from the perturbation module at the right value of k */ @@ -390,6 +428,7 @@ extern "C" { double tau_rec, double *** sources, double *** sources_spline, + double * window, struct transfer_workspace * ptw ); @@ -423,6 +462,8 @@ extern "C" { int index_md, int index_tt, double * sources, + double * window, + int tau_size_max, double * tau0_minus_tau, double * delta_tau, int * tau_size_out @@ -665,6 +706,25 @@ extern "C" { int *index_l_right, ErrorMsg error_message); + int transfer_precompute_selection( + struct precision * ppr, + struct background * pba, + struct perturbs * ppt, + struct transfers * ptr, + double tau_rec, + int tau_size_max, + double ** window + ); + + int transfer_f_evo( + struct background* pba, + struct transfers * ptr, + double* pvecback, + int last_index, + double cotKgen, + double* f_evo + ); + #ifdef __cplusplus } #endif diff --git a/class/include/trigonometric_integrals.h b/class/include/trigonometric_integrals.h new file mode 100644 index 00000000..da82b53a --- /dev/null +++ b/class/include/trigonometric_integrals.h @@ -0,0 +1,33 @@ +/** + * definitions for module trigonometric_integrals.c + */ + +#ifndef __TRIGONOMETRIC_INTEGRALS__ +#define __TRIGONOMETRIC_INTEGRALS__ + +#include "common.h" + +/** + * Boilerplate for C++ + */ +#ifdef __cplusplus +extern "C" { +#endif + + int cosine_integral( + double x, + double *Ci, + ErrorMsg error_message + ); + + int sine_integral( + double x, + double *Si, + ErrorMsg error_message + ); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/class/main/class.c b/class/main/class.c old mode 100644 new mode 100755 index aedb3aa6..dfee6647 --- a/class/main/class.c +++ b/class/main/class.c @@ -10,68 +10,16 @@ int main(int argc, char **argv) { struct background ba; /* for cosmological background */ struct thermo th; /* for thermodynamics */ struct perturbs pt; /* for source functions */ - struct transfers tr; /* for transfer functions */ struct primordial pm; /* for primordial spectra */ - struct spectra sp; /* for output spectra */ struct nonlinear nl; /* for non-linear spectra */ + struct transfers tr; /* for transfer functions */ + struct spectra sp; /* for output spectra */ struct lensing le; /* for lensed spectra */ struct output op; /* for output files */ ErrorMsg errmsg; /* for error messages */ - struct file_content fc; - - if (parser_init(&fc,15,"none",errmsg) == _FAILURE_){ - printf("\n\nparser_init\n=>%s\n",errmsg); - return _FAILURE_; - } - strcpy(fc.name[0],"h"); - strcpy(fc.value[0],"0.7"); - - strcpy(fc.name[1],"Omega_cdm"); - strcpy(fc.value[1],"0.25"); - - strcpy(fc.name[2],"Omega_b"); - strcpy(fc.value[2],"0.04"); - - strcpy(fc.name[3],"Omega_k"); - strcpy(fc.value[3],"0.0"); - - // set Omega_Lambda = 0.0 if w !=-1 - strcpy(fc.name[4],"Omega_Lambda"); - strcpy(fc.value[4],"0.0"); - - strcpy(fc.name[5],"w0_fld"); - strcpy(fc.value[5],"-.99"); - - strcpy(fc.name[6],"wa_fld"); - strcpy(fc.value[6],"0.0"); - - strcpy(fc.name[7],"n_s"); - strcpy(fc.value[7],"0.0"); - - strcpy(fc.name[8],"A_s"); - strcpy(fc.value[8],"2.215e-9"); - - strcpy(fc.name[9],"output"); - strcpy(fc.value[9],"mPk"); - - strcpy(fc.name[10],"non linear"); - strcpy(fc.value[10],"Halofit"); - - strcpy(fc.name[11],"P_k_max_1/Mpc"); - strcpy(fc.value[11],"100."); - - strcpy(fc.name[12],"z_max_pk"); - strcpy(fc.value[12],"10."); - - strcpy(fc.name[13],"modes"); - strcpy(fc.value[13],"s"); - - strcpy(fc.name[14],"lensing"); - strcpy(fc.value[14],"no"); - - if (input_init(&fc,&pr,&ba,&th,&pt,&tr,&pm,&sp,&nl,&le,&op,errmsg) == _FAILURE_) { - printf("\n\nError running input_init\n=>%s\n",errmsg); + if (input_init_from_arguments(argc, argv,&pr,&ba,&th,&pt,&tr,&pm,&sp,&nl,&le,&op,errmsg) == _FAILURE_) { + printf("\n\nError running input_init_from_arguments \n=>%s\n",errmsg); return _FAILURE_; } @@ -100,47 +48,42 @@ int main(int argc, char **argv) { return _FAILURE_; } - if (transfer_init(&pr,&ba,&th,&pt,&nl,&tr) == _FAILURE_) { - printf("\n\nError in transfer_init \n=>%s\n",tr.error_message); - return _FAILURE_; - } - - if (spectra_init(&pr,&ba,&pt,&pm,&nl,&tr,&sp) == _FAILURE_) { - printf("\n\nError in spectra_init \n=>%s\n",sp.error_message); - return _FAILURE_; - } - double Z, ic; - int i = spectra_pk_at_k_and_z(&ba, &pm, &sp,0.001,0.0, &Z,&ic); - printf("%e\n",Z); - i = spectra_pk_nl_at_k_and_z(&ba, &pm, &sp,0.001,0.0, &Z); - printf("%e\n",Z); - - // if (lensing_init(&pr,&pt,&sp,&nl,&le) == _FAILURE_) { - // printf("\n\nError in lensing_init \n=>%s\n",le.error_message); - // return _FAILURE_; - // } - - // if (output_init(&ba,&th,&pt,&pm,&tr,&sp,&nl,&le,&op) == _FAILURE_) { - // printf("\n\nError in output_init \n=>%s\n",op.error_message); - // return _FAILURE_; - // } - - // /****** all calculations done, now free the structures ******/ - - // if (lensing_free(&le) == _FAILURE_) { - // printf("\n\nError in lensing_free \n=>%s\n",le.error_message); - // return _FAILURE_; - // } - - if (spectra_free(&sp) == _FAILURE_) { - printf("\n\nError in spectra_free \n=>%s\n",sp.error_message); - return _FAILURE_; - } - - if (transfer_free(&tr) == _FAILURE_) { - printf("\n\nError in transfer_free \n=>%s\n",tr.error_message); - return _FAILURE_; - } + if (transfer_init(&pr,&ba,&th,&pt,&nl,&tr) == _FAILURE_) { + printf("\n\nError in transfer_init \n=>%s\n",tr.error_message); + return _FAILURE_; + } + + if (spectra_init(&pr,&ba,&pt,&pm,&nl,&tr,&sp) == _FAILURE_) { + printf("\n\nError in spectra_init \n=>%s\n",sp.error_message); + return _FAILURE_; + } + + if (lensing_init(&pr,&pt,&sp,&nl,&le) == _FAILURE_) { + printf("\n\nError in lensing_init \n=>%s\n",le.error_message); + return _FAILURE_; + } + + if (output_init(&ba,&th,&pt,&pm,&tr,&sp,&nl,&le,&op) == _FAILURE_) { + printf("\n\nError in output_init \n=>%s\n",op.error_message); + return _FAILURE_; + } + + /****** all calculations done, now free the structures ******/ + + if (lensing_free(&le) == _FAILURE_) { + printf("\n\nError in lensing_free \n=>%s\n",le.error_message); + return _FAILURE_; + } + + if (spectra_free(&sp) == _FAILURE_) { + printf("\n\nError in spectra_free \n=>%s\n",sp.error_message); + return _FAILURE_; + } + + if (transfer_free(&tr) == _FAILURE_) { + printf("\n\nError in transfer_free \n=>%s\n",tr.error_message); + return _FAILURE_; + } if (nonlinear_free(&nl) == _FAILURE_) { printf("\n\nError in nonlinear_free \n=>%s\n",nl.error_message); diff --git a/class/myevolution.dat b/class/myevolution.dat new file mode 100644 index 00000000..6f12c114 --- /dev/null +++ b/class/myevolution.dat @@ -0,0 +1,46 @@ +0.1 0.0010000000000000002 +0.2 0.008 +0.3 0.02699999999999939 +0.4 0.0639999999999378 +0.5 0.1249999999977896 +0.6 0.21599999995913313 +0.7 0.34299999951858506 +0.8 0.5119999959225299 +0.9 0.728999973156994 +1. 0.999999855139168 +1.1 1.330999334368509 +1.2 1.7279973217531261 +1.3 2.196990360740088 +1.4 2.743968450165843 +1.5 3.3749048508244637 +1.6 4.095732787627785 +1.7 4.912295140442309 +1.8 5.830241082017937 +1.9 6.854822885825836 +2. 7.990512030628799 +2.1 9.240299830454715 +2.2 10.604466399010644 +2.3 12.078486025087846 +2.4 13.649587865208744 +2.5 15.291333774900915 +2.6 16.955497974925894 +2.7 18.56075979355865 +2.8 19.97872820320106 +2.9 21.02045222024772 +3. 21.431930578229572 +3.1 20.915524906920037 +3.2 19.201919576687313 +3.3 16.190881291907615 +3.4 12.133254618683612 +3.5 7.729006674620789 +3.6 3.942205156623325 +3.7 1.4868118911900279 +3.8 0.3732807590089654 +3.9 0.05436027966326381 +4. 0.003838922724865479 +4.1 0.00010430820255980766 +4.2 8.102007168749191e-7 +4.3 1.2314496393552691e-9 +4.4 2.2644902011221728e-13 +4.5 2.7467569667648903e-18 +4.6 1.0265616267989809e-24 diff --git a/class/myselection.dat b/class/myselection.dat new file mode 100644 index 00000000..77816a57 --- /dev/null +++ b/class/myselection.dat @@ -0,0 +1,11 @@ +0.0 0.0 +0.1 0.030591786603680816 +0.2 0.10619451692325403 +0.30000000000000004 0.19886750367043496 +0.4 0.28446992920441827 +0.5 0.34735619337280493 +0.6 0.38083288182668446 +0.7000000000000001 0.3853875240364537 +0.8 0.3660955463257228 +0.9 0.330122848124979 +1. 0.2848017764321144 diff --git a/class/notebooks/.ipynb_checkpoints/Growth_with_w-checkpoint.ipynb b/class/notebooks/.ipynb_checkpoints/Growth_with_w-checkpoint.ipynb new file mode 100644 index 00000000..bd5e556f --- /dev/null +++ b/class/notebooks/.ipynb_checkpoints/Growth_with_w-checkpoint.ipynb @@ -0,0 +1,378 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "%matplotlib inline\n", + "import matplotlib\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "from classy import Class\n", + "from scipy import interpolate" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "w0vec = [-0.7, -1.0, -1.3]\n", + "wavec = [-0.2,0.0,0.2]\n", + "#w0vec = [-1.0]\n", + "#wavec = [0.0]\n", + "\n", + "cosmo = {}\n", + "for w0 in w0vec:\n", + " for wa in wavec:\n", + " if w0==-1.0 and wa==0.0:\n", + " M='LCDM'\n", + " else:\n", + " M = '('+str(w0)+','+str(wa)+')'\n", + " cosmo[M] = Class()\n", + " cosmo[M].set({'input_verbose':1,'background_verbose':1,'gauge' : 'Newtonian'})\n", + " if M!='LCDM':\n", + " cosmo[M].set({'Omega_Lambda':0.,'w0_fld':w0,'wa_fld':wa})\n", + " cosmo[M].compute()" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "import scipy\n", + "import scipy.special\n", + "import scipy.integrate\n", + "\n", + "def D_hypergeom(avec,csm):\n", + " bg = csm.get_background()\n", + " Om = csm.Omega0_m()\n", + " if bg.has_key('(.)rho_lambda'):\n", + " Ol = bg['(.)rho_lambda'][-1]/bg['(.)rho_crit'][-1]\n", + " else:\n", + " Ol = bg['(.)rho_fld'][-1]/bg['(.)rho_crit'][-1]\n", + " \n", + " x = Ol/Om*avec**3\n", + " D = avec*scipy.special.hyp2f1(1./3.,1,11./6.,-x)\n", + " D_today = scipy.special.hyp2f1(1./3.,1,11./6.,-Ol/Om)\n", + " return D/D_today\n", + "\n", + "def f_hypergeom(avec,csm):\n", + " bg = csm.get_background()\n", + " Om = csm.Omega0_m()\n", + " if bg.has_key('(.)rho_lambda'):\n", + " Ol = bg['(.)rho_lambda'][-1]/bg['(.)rho_crit'][-1]\n", + " else:\n", + " Ol = bg['(.)rho_fld'][-1]/bg['(.)rho_crit'][-1]\n", + " \n", + " x = Ol/Om*avec**3\n", + " D = avec*scipy.special.hyp2f1(1./3.,1,11./6.,-x)\n", + " f = 1.-6./11.*x*avec/D*scipy.special.hyp2f1(4./3.,2,17./6.,-x)\n", + " return f\n", + "\n", + "def D_integral2(avec,csm):\n", + " bg = csm.get_background()\n", + " Om = csm.Omega0_m()\n", + " if bg.has_key('(.)rho_lambda'):\n", + " Ol = bg['(.)rho_lambda'][-1]/bg['(.)rho_crit'][-1]\n", + " w0 = -1\n", + " wa = 0.0\n", + " else:\n", + " Ol = bg['(.)rho_fld'][-1]/bg['(.)rho_crit'][-1]\n", + " w0 = csm.pars['w0_fld']\n", + " wa = csm.pars['wa_fld']\n", + " D = np.zeros(avec.shape)\n", + " for idx, a in enumerate(avec):\n", + " Hc = a*np.sqrt(Om/a**3 + Ol*a**(-3*(1+w0+wa))*np.exp(-3.*(1.0-a)*wa) )\n", + " Dintegrand2 = lambda a: (a*np.sqrt(Om/a**3 + Ol*a**(-3*(1+w0+wa))*np.exp(-3.*(1.0-a)*wa) ))**(-3)\n", + " I = scipy.integrate.quad(Dintegrand2, 1e-15,a)\n", + " D[idx] = Hc/a*I[0]\n", + " D = D/scipy.integrate.quad(Dintegrand2,1e-15,1)[0]\n", + " return D\n", + "\n", + "def D_integral(avec,csm):\n", + " bg = csm.get_background()\n", + " Om = csm.Omega0_m()\n", + " Ol = bg['(.)rho_lambda'][-1]/bg['(.)rho_crit'][-1]\n", + " Or = 1-Om-Ol\n", + " def Dintegrand(a):\n", + " Hc = np.sqrt(Om/a+Ol*a*a+Or/a/a)\n", + " #print a,Hc\n", + " return Hc**(-3)\n", + " D = np.zeros(avec.shape)\n", + " for idx, a in enumerate(avec):\n", + " #if a<1e-4:\n", + " # continue\n", + " Hc = np.sqrt(Om/a+Ol*a*a+Or/a/a)\n", + " I = scipy.integrate.quad(Dintegrand,1e-15,a,args=())\n", + " D[idx] = Hc/a*I[0]\n", + " D = D/scipy.integrate.quad(Dintegrand,1e-15,1,args=())[0]\n", + " return D\n", + "\n", + "def D_linder(avec,csm):\n", + " bg = csm.get_background()\n", + " if bg.has_key('(.)rho_lambda'):\n", + " Ol = bg['(.)rho_lambda'][-1]/bg['(.)rho_crit'][-1]\n", + " w0 = -1\n", + " wa = 0.0\n", + " else:\n", + " Ol = bg['(.)rho_fld'][-1]/bg['(.)rho_crit'][-1]\n", + " w0 = csm.pars['w0_fld']\n", + " wa = csm.pars['wa_fld']\n", + " \n", + " Om_of_a = (bg['(.)rho_cdm']+bg['(.)rho_b'])/bg['H [1/Mpc]']**2\n", + " gamma = 0.55+0.05*(w0+0.5*wa)\n", + " a_bg = 1./(1.+bg['z'])\n", + " \n", + " integ = (Om_of_a**gamma-1.)/a_bg\n", + " \n", + " integ_interp = interpolate.interp1d(a_bg,integ)\n", + " D = np.zeros(avec.shape)\n", + " amin = min(a_bg)\n", + " amin = 1e-3\n", + " for idx, a in enumerate(avec):\n", + " if a" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "figwidth1 = 4.4 #=0.7*6.3\n", + "figwidth2 = 6.3\n", + "figwidth15 = 0.5*(figwidth1+figwidth2)\n", + "ratio = 8.3/11.7\n", + "figheight1 = figwidth1*ratio\n", + "figheight2 = figwidth2*ratio\n", + "figheight15 = figwidth15*ratio\n", + "\n", + "lw=2\n", + "fs=12\n", + "labelfs=16\n", + "\n", + "fig, (ax1, ax2) = plt.subplots(2,1,figsize=(1.2*figwidth1,figheight1/(3./5.)),sharex=True,\n", + " gridspec_kw = {'height_ratios':[3, 2]})\n", + "\n", + "if False:\n", + " aminexp = -13\n", + " amin = 10**aminexp\n", + " ymin = 10**(aminexp/2.)\n", + " ymax = 10**(-aminexp/2.)\n", + "elif False:\n", + " aminexp = -7\n", + " amin = 10**aminexp\n", + " ymin = 10**(aminexp)\n", + " ymax = 10**(-aminexp)\n", + "else:\n", + " aminexp = -4\n", + " amin = 10**aminexp\n", + " ymin = 10**(aminexp-1)\n", + " ymax = 10**(-aminexp+1)\n", + " \n", + "\n", + "bg = cosmo['LCDM'].get_background()\n", + "\n", + "a = 1./(bg['z']+1)\n", + "H = bg['H [1/Mpc]']\n", + "D = bg['gr.fac. D']\n", + "f = bg['gr.fac. f']\n", + "\n", + "ax1.loglog(a,D,lw=lw,label=r'$D_+^\\mathrm{approx}$')\n", + "ax1.loglog(a,D_hypergeom(a,cosmo['LCDM']),lw=lw,label=r'$D_+^\\mathrm{analytic}$')\n", + "\n", + "ax1.loglog(a,a*ymax,'k--',lw=lw,label=r'$\\propto a$')\n", + "ax1.loglog(a,1./a*ymin,'k:',lw=lw,label=r'$\\propto a^{-1}$')\n", + "\n", + "ax2.semilogx(a,D/D_hypergeom(a,cosmo['LCDM']),lw=lw,label=r'$D_+/D_+^\\mathrm{analytic}$')\n", + "#ax2.semilogx(a,grow/grow[-1]/D_integral(a,cosmo['CDM']),'--',lw=5)\n", + "ax2.semilogx(a,f/f_hypergeom(a,cosmo['LCDM']),lw=lw,label=r'$f/f^{\\,\\mathrm{analytic}}$')\n", + "\n", + "\n", + "draw_vertical_redshift(cosmo['LCDM'], ax1, var='a',z=99,label='$z=99$')\n", + "draw_vertical_redshift(cosmo['LCDM'], ax1, var='a',z=49,label='$z=49$',ls='-')\n", + "draw_vertical_redshift(cosmo['LCDM'], ax2, var='a',z=99,label=None)\n", + "draw_vertical_redshift(cosmo['LCDM'], ax2, var='a',z=49,label=None,ls='-')\n", + "\n", + "lgd1 = ax1.legend(fontsize=fs,ncol=1,loc='upper left',\n", + " bbox_to_anchor=(1.02, 1.035))\n", + "\n", + "#lgd2 = ax2.legend([r'$D_+/D_+^\\mathrm{analytic}$','$z=99$'],\n", + "# fontsize=fs,ncol=1,loc='upper left',\n", + "# bbox_to_anchor=(1.0, 1.08))\n", + "lgd2 = ax2.legend(fontsize=fs,ncol=1,loc='upper left',\n", + " bbox_to_anchor=(1.02, 0.83))\n", + "\n", + "ax1.set_xlim([10**aminexp,1]) \n", + "ax2.set_xlabel(r'$a$',fontsize=fs)\n", + "ax1.set_ylim([ymin,ymax])\n", + "ax2.set_ylim([0.9,1.099])\n", + "\n", + "ax2.axhline(1,color='k')\n", + "\n", + "\n", + "fig.tight_layout()\n", + "fig.subplots_adjust(hspace=0.0)\n", + "fig.savefig('NewtonianGrowthFactor.pdf',bbox_extra_artists=(lgd1,lgd2), bbox_inches='tight')" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAagAAAI4CAYAAAA/PH0eAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xl8VNX5+PHPmT37vpCFsIcAIksEARWsCrhbV5Sq7ddK\nbbHa1p+tdvVbrbbVb1uXUmvd6lJXat2oioqIgAsIsiSyJ5CwJCF7JpPZzu+POxkmzGQBQhjC8369\n5jVzz3PuvWeyzDPn3nPPVVprhBBCiGhjOtYNEEIIISKRBCWEECIqSYISQggRlSRBCSGEiEqSoIQQ\nQkQlSVBCCCGiUrcJSimVr5RaopQqUUptVErdGqGOUko9pJTaqpRap5SaEBKbrZTaFIjd0dtvQAgh\nRP/Ukx6UF7hNaz0KOBWYr5QadVCdc4Hhgcc84G8ASikz8NdAfBRwdYR1hRBCiDDdJiit9R6t9ZeB\n101AKZB7ULWLgWe04VMgWSk1AJgEbNVab9dau4EXA3WFEEKILlkOpbJSahAwHvjsoFAusCtkuSJQ\nFql8cifbnofR+yIuLm7iyJEjD6VpQgghoszq1atrtNYZh7t+jxOUUioeWAj8SGvdeLg77IzW+jHg\nMYDi4mK9atWq3t6FEEKIPqSUKj+S9XuUoJRSVozk9LzW+t8RqlQC+SHLeYEyayflQgghRJd6MopP\nAU8ApVrrP3VS7Q3gusBovlOBBq31HuALYLhSarBSygbMCdQVQgghutSTHtQ04FpgvVJqbaDs58BA\nAK31o8Ai4DxgK+AEvhOIeZVSNwPvAmbgSa31xl59B0IIIfqlbhOU1voTQHVTRwPzO4ktwkhgQggh\nRI/JTBJCCCGikiQoIYQQUUkSlBBCiKgkCUoIIURUkgQlhBAiKkmCEkIIEZUkQQkhhIhKkqCEEEJE\nJUlQQgghopIkKCGEEFFJEpQQQoioJAlKCCFEVJIEJYQQIipJghJCCBGVJEEJIYSISpKghBBCRCVJ\nUEIIIaKSJCghhBBRSRKUEEKIqCQJSgghRFSSBCWEECIqSYISQggRlSRBCSGEiEqW7ioopZ4ELgCq\ntNZjIsRvB+aGbK8IyNBa1yqlyoAmwAd4tdbFvdVwIYQQ/VtPelBPA7M7C2qt79daj9NajwPuBJZq\nrWtDqpwZiEtyEkII0WPdJiit9cdAbXf1Aq4GXjiiFgkhhBD04jkopVQsRk9rYUixBt5XSq1WSs3r\nZv15SqlVSqlV1dXVvdUsIYQQx6neHCRxIbD8oMN7pwUO/Z0LzFdKndHZylrrx7TWxVrr4oyMjF5s\nlhBCiONRbyaoORx0eE9rXRl4rgJeAyb14v6EEEL0Y72SoJRSScB04PWQsjilVEL7a2AmsKE39ieE\nEKL/68kw8xeAGUC6UqoC+A1gBdBaPxqo9k3gPa11S8iqWcBrSqn2/fxLa/1O7zVdCCFEf9ZtgtJa\nX92DOk9jDEcPLdsOnHy4DRNCCHFii8qZJNxe/7FughBCiGMsKhPUlqpmHl+2Ha9PEpUQQpyoojJB\n+bXmnrdLueiR5azdVX+smyOEEOIYiMoENSgtltzkGEr2NPLNBcv59esbaHR5jnWzhBBC9KGoTFAJ\nDiuLf3IG35s+BJNSPLOynG88sJSXvtiJz6+PdfOEEEL0gahMUACxNgt3nlvEWz88jYkFKdQ0t/Gz\nheu58OFPWLGt5lg3TwghxFEWtQmqXdGARF69aQoPXT2enCQHJXsaueYfnzHvmVXsqGnpfgNCCCGO\nS0rr6DtkVlxcrFetWhVW7vL4+MfH2/nb0m043T7MJsUVE/P44VnDyU2OOQYtFUII0Rml1OojudXS\ncZWg2u1rdPF/723i1dUV+DXYzCaumTyQH5w5lMwERx+2VAghRGdOyATVbnt1M39+fwtvfrUbgBir\nmeumFnDDaYMlUQkhxDF2QieodqV7GvnT4s0sLtkHgM1i4oqJeXzvjKEMTIs9Ws0UQgjRBUlQIb7a\nVc+Cj7by7kYjUZkUXDA2h5umD2VUTmJvN1MIIUQXJEFFsLWqiUeXbuc/ayrxBq6bmjIkjeunDuLs\nokws5qgfvCiEEMc9SVBd2F3fyj+WbeelL3bhdPsAyE2OYe6pA5lzykBS42xHvA8hhBCRSYLqgUaX\nh1dXVfDMyjLK9jsB4zzVhWNzuOqUfE4ZlELgvlVCCCF6iSSoQ+D3a5ZuqeafK8r4aFN1sHxQWixX\nFOdz2YQ8spNk9J8QQvQGSVCHqaymhVdW7+LV1RXsa2wDjEEVZ4zI4Jvjczm7KIs4e7f3cxRCCNEJ\nSVBHyOvzs2xrDa+s2sXikn14fMbPw2E1cdbILC48eQAzCjNxWM190h4hhOgvJEH1otoWN2+sreTN\ndXtYXV4XLI+3W5g5KovZY7I5fXgGMTZJVkII0R1JUEdJZX0rb6/bzZtf7WF9ZUOw3G4xcfrwdM4u\nyuKsoiwyEuzHsJVCCBG9JEH1gR01LSxav4f3SvbxVcgdfpWCcfnJnDUyk9OHZzAmNwmzSUYDCiEE\nSILqc1WNLt4vreL90n18srUGt9cfjCXHWpk2NJ3Thqdz2rB08lNlmiUhxImrXyaoicUT9epVq491\nM7rldHv5eHMNSzdX88nWanbVtnaID06P49QhaUwanMIpg1LJS5GEJYQ4cRz1BKWUehK4AKjSWo+J\nEJ8BvA7sCBT9W2v920BsNvAgYAYe11r/vieNShqWpN/86E3OyDujp+8jKpTvb+HjLTV8sqWaFdv2\n0+TydojnJDk4ZXAqpwxKZdLgVIZlxGOSQ4JCiH6qLxLUGUAz8EwXCer/aa0vOKjcDGwGzgEqgC+A\nq7XWJd01KmZwjB521zCm5kzlxxN/zMjUkT19P1HD6/OzrrKBz3fU8sWOWr4oq6XxoISV6LAwNi+Z\nsXlJjM1LZlx+slwoLIToN/rkEJ9SahDw1iEmqCnAXVrrWYHlOwG01vd1t7/Bowfr7F9k0+xpRqG4\nYMgF3Dz+ZnLic3rwlqKT36/ZtK+JL8pqjaRVVhu8QDhUZoKdsXnJnJyXxKicREYOSCQnySFTMQkh\njjvRkqD+jdFLqsRIVhuVUpcDs7XW3w3UuxaYrLW+uZN9zAPmAQwcOHDi2k1reWzdY7y46UW8fi82\nk42rR17NDSfdQIoj5XDea1TRWrO30cVXuxpYV1HPuooGvqqoDzssCJDgsFCUncjIAQmMzE6kMDuB\nwuwE4mWmCyFEFIuGBJUI+LXWzUqp84AHtdbDDzVBhQodxVfRVMHDax5m0Y5FAMRYYpgzcg7Xj7qe\ntJi0nr7P44Lfrynb38K6igbWVzbw9d5GSvc0Udvijlg/NzmGIRlxDM2IZ0hGHEPS4xmaGUd2ovS4\nhBDH3jFPUBHqlgHFwHAO8xBfpGHmJftLeGTNIyyrXAYYierKEVfy7THfJj0mvdv3cLzSWlPd3MbX\ne5r4em8jX+9ponRvE1urmoLTMh0s1mZmcHocQzLiGZgaQ35KLANTY8lPjWVAkkPuhyWE6BPHPEEp\npbKBfVprrZSaBLwKFGCM3NsMnIVx6O8L4Bqt9cbu9tfVdVAbajbw6FePsrRiKQB2s51vDvsm1426\njvzE/G7fS3/h8fnZVetke3UL22ua2VZlPG+vbmF/Jz0uALNJkZPsID8l1nikxpCTHEN2koMBSTFk\nJzpkKichRK/oi1F8LwAzgHRgH/AbwAqgtX5UKXUz8H3AC7QCP9Farwisex7wF4xk9aTW+nc9aVRP\nLtQt2V/Co189ypJdS4x2ojhr4FlcP/p6xmWO68lu+q16p5tt1S3sqGlhV62TXXVO47m2lX1NLrr7\nTpIUY2VAkoOsREfH5yQHGfF20uJtpMXZsVmkJyaE6Fy/vFD3UGaS2FS7iWdLnuXtHW/j9RsDDMZm\njOXaoms5a+BZWM3Wo9nU406b10dlXSs7a53sqmulotbJngYXextc7GlsZV9DG26fv/sNYQyTT0+w\nkx5nJz3BSFrpgQTW/pwcYyUp1kpSjBW7RXpmQpxITvgE1a7aWc0LX7/AS5teotHdCECqI5VLh1/K\nZcMvIy8h72g0td/RWlPb4g4mrb2NgeTV4KKqyUVNs5ua5jZqW9z4/If2txNrMwcSlpG4kmONR1KM\nzXgdYyXBYSXeYSHebiEh8BzvsBBns8g8h0IcZ/pngpowTq/6cu1hrev0OHlj2xu8tOklttZvBYzD\nf9Nyp3HliCs5Pe90LCYZnn2k/H5NfauH/c1tVDe3sT+QuPY3u9nf0kZ1k5t6p5s6p5uGVg/1Tg/e\nQ0xoB4uzmYPJK95hJcF+IIHF2y3E2MzEWs3E2AIPq5lYmxmH1UyszUJMIBYbiMXYzNgtJhnxKMRR\n0j8TVK5Nr3rhd3DqfLAd3vx1WmvWVq/l5U0v817Ze7j9xsCBNEca5w4+lwuHXkhRapF8OPURrTUt\nbh/1Tjf1Tk8wadW3Hliua3HT3Oaluc1Lk8t4bm5/bgu/Pqw3mBTBZOWwGgnLbjFjt5qwmU3Yg2Um\nbO0xiwm71YS9m7jNbMZmMWE1K6xmU+DR8bXFbOzHalaYTUr+HkW/0j8TVI5Zr5oXj04YgG/aj/GP\nuw4sxn2XTIrgMOnQmcTbhcY9gXMpda463tr+Bv/espDypvJg3aFJQzl/yAWcN+h8suKyAFBKBQ8l\nRTqEpSA4f54/UlwR/JDp7GcrH0KHzu/XtLgPJK2mwHNL24HXrR4frW4fTrePVo835LVR3jFuvO7p\n+ba+YgtJXFazCVvwdedJ7uDXlsB6VrMJq8WI2Q9KlDZLe2I0yoPLIeU2iwrWDa4XWJbDraIn+meC\nOqlQr5qfCXvXAVCp03jEewmv+qZz+aQh3HfpSQAMuuPtsHWvnjSwi7hm9kQPAweW8s6Od6hrM+6a\nq7XC11qAt3EM5w+dxV8un3GY2+9JPJ/7Lh17BPED2x98Z3h8zikH4kMixScN5N5vGvGhP18UYf18\nfheID4sQvyokPvwXkeP3XGLER/ziv2HxK0/JOxD/ZXj8quJ87r7EuJqhMFL8lHx+e7ERH/mrCNsv\nPhAv+tU7EeJ5/G8gPurX73T4EqGBWaOyuPGMobR5/cz9x6cEo1qjgQkFKZwzKhu318+fF29GB2q0\nbyY/NZbCrATavD4+3lwDwRoG49yaFY/PT3VTG9H339czpsAXMYvJ+ELX/jDOM9qIsZlpcnlwWAOH\nU61mYuxmUmJtZCbYibGa0ZrgecZYu3EINt5hnHtMcFhIdFjlEOxx7kgTVHSejLEnwLylzP/1b7nF\n/CqFahf3WZ/gB5Y3WFV3A3gLwWLDag7/ww29BtUS9i1PkWYZxs8nf5PbT7md0fc9iDnxS8zxpVhi\ny7DElvFBy1vMfXss5xScg9lmRntSO25BRX7dc92t1PONdvfdItIpn9B1IvUQQ4sinTMKLYp0oXBo\nhyRS76RDPEIPOHSfbRHioft0ebqOt3p8YXF3SNzpDo/H2q2MyU0yth9h/4PT47nhtMEA/OGdr8Pi\npw5J6/ILyvljc7qMX1mcz68vHIXH62f83YvD4jNHZTHvjCF4fH6u/sdnYfHJg1O58OQc3F4/v30r\nfF7mEVnxTCxIxePz8erqyrB4RrydAckO3F4/X+9tCoubTQqttfF3oHXY31C908PuelfYeodLQbBX\n57CaSIu3MzA1lgSHhSaXJ9DeGPKSY8lJdpCeYCctzkaiwyp3CugHorMHFTqKz++Hkv/AR7+Hmk1G\nWUIOnPp9mPhtcCQe8f6a3c18XPExi8sX80nlJ7h8B/7BhqcM5/Tc0zkj7wxOzjj5qA+w0Fr3+BBh\npEOMcOAQZGej7NoPz3gjJJDQQ5yeSHF6foi1zRueAEzKOGwE4IqQQExKBa+v6i7eGiHBmEwEh7M7\n3eHnrcwmFYy3RDivZTYpHFYjHum8lyUk3uTyhMWtZlMw3hghbguJN7RGjrdfKN3g9KDRaA3+QFKw\nW00kOqxoramoM+4/1h7za02C3UJmogOtNSV7Gjus69eatDgbBWlxaK35dHttMNkYdTQDkmIozE7A\n79e8vX4PXr8fj0/j9Wm8fj/DMuOZOjQdt9fPQx9sps3rp83rx+314/b6GDkgialD02hxe/nz4s24\nPD5cHn+w3vDMOE7OT6G5zcNzK3fi9fs7fOlJi7OR4LDQ6PJ2OsVXT5hNRu8u1hbotSXayUuJZWR2\nAkUDEslOcpCd6CBO5rM8qvrnIb5Iw8z9PtiwEJb9CapLjTJ7IhR/ByZ/HxIH9Mq+nR4nn1R+wvvl\n77O0YilOrzMYS7AlMDVnKmfkncHUnKn9eoolIfqK1po2rx+Xx4fZpEhwWPH6/Hy2o5balsBlDc1t\n1Dk95ATmn6xpdvPk8h00ubw427y4vH58fk2iw4LW0NTDQTVWsyI5xkZ2koMhGXGMH5jMuPwUBqXF\nkhxrO8rvvP87cRJUO61hy2JY/iCUf2KUmaww+ptwynchf9LhHnsL4/a5Wb1vNcsql7GsYhlljWUd\n4sOShzEpexKTBkyiOKuYJHtSr+xXCHHo2rw+fH5NrM1Cg9PD619VsqvWyc7aVvY0tFLT1EZWkgOb\n2cSuOme3hyKtZkVmgp2hmQlMGJjMtGHpjMlJkqnADsGJl6BCVayGFQ9CyRvQfro5+yQ45UY46XKw\nxfVqu3Y27gwmq9X7Vnc4FKhQjEwdyeQBk5mYNZGTM07uF7cFEaI/cnv9bK1uYkNlI+sr6tlS1UxF\nXSuZCXZcHj/bq5sjnoNUQGF2AqNzEslMdDB7dDZjcpNkVGMnTuwE1a6uHFY/BV8+A879Rpk9CcZd\nDeO/ZSStXub2uVlfs57P93zOZ3s/46vqr4JTLbUblDiIkzNOZlzmOMZljGNI8hBMSuavEyLa1Tvd\nvLVuD5/vqOXrvY1U1rfS0ubDpMIHH5kUZCY4OGVQClcU5zNlaFrwPOuJThJUKI8LSl6HL/4BFV8c\nKM86CcZdAyddAfEZvdfQEK3eVtZWreXzvZ+zpmoNG2o20ObreMfcBGsCY9LHUJRWxKi0UYxKHUVe\nQp4MoxXiOODy+HB7/Wze18TLq3bx3/V7I57rirWZGZ2TyKD0OL41uYCxeUkn7P+4JKjO7PkK1jwH\n61+BVuN6J0wWGD4TTp5jPFtjjryxnfD4PWyu3cza6rWsrVrL2uq17G3ZG1YvwZrAyLSRjEodRVFa\nEYUphRQkFsgkt0IcB5pcHpZtruG/G/awqryOWJuZbdUtHerEWE2MH5jC3MkDmTk6+4TqXUmC6o63\nDTa/A2v/ZQyu0IGhybZ4GDEbRl8Cw84+qsmq3d6WvWzcv5HS/aWU7C+hZH8J+137w+pZlIWCxAKG\nJg9lWMowhiUPY2jyUAYmDJR5BIWIclWNLh54bzOLS/ZS5+x4KUFSjJVzx2Rz3kkDmDYsvd+fu5IE\ndSiaq2Ddy7DhVdi95kB5e7IadTEM/QbY43t/352odlYbyaq2hNL9pWyp20Jlc+VB8w8YrCYrBYkF\nFCQWMDBxIAUJgefEAjJiMk7YwwhCRKu9DS7+uWIHizbspaa5jZa2A9fuWc2KyYPT+OE3hjF5SNox\nbOXRIwnqcNXuMM5XbXwN9oTMnG62waDTofBcGDELkgce3XZE0OptZXvDdrbWbWVb/Ta21hvPu1t2\nd7pOjCWGgQkDGZg4kPyEfHLichgQP4CcuBxy4nOItR7epLtCiN6htWZLVTMvf7GLJz7Z0eEraEqs\nlW+dWsAPZgzrV8PYJUH1htrtsPE/sGkRVKyC0D+dzFFGohp6lnGNVWDS2mOhxdNCWUMZ5Y3llDeV\ns6txF+VN5exs3El9W32X6ybZk4ykFTeAnHjjOTsum4zYDDJiMsiIzcBuPnbvTYgTSWOrm8c+3s7C\nLyvZ03DgcpUEh4VLxucypzif0bnH/3WVkqB6W3M1bF1snLfa+iG4Q+Yjs8RAwRQYPB2GzIDsscbc\nOlGgoa2BnY07KW8qp6Kpgj0te9jdvJs9LXvY07wneLuRriTaEsmMzSQ9Jp3M2Mxg4sqIySDVkUqq\nI5UURwqJtkTMpv7zLU+IY2nLvibuXVRKdVMbG3Y3BsuHZMTxq/OLOHNk1jFs3ZGRBHU0ed1QvtwY\nXLH9I6ja2DEek2IcDiyYCvmTjYRljr5BDH7tp9ZVy+7m3exu2c2eZiN5VTmrqGmtoaq1ihpnDV7d\ns+lhTMpEki2JFEcKyfbkYOIKfZ1kTyLBlkCiLTH4bDPL1DFCdGXj7gZ+9OJatlQ1B8syEuz8bHYh\nl004/i5JkQTVl5qrYMfHRrLa/hE07OoYt8ZB3kQYOMVIWHmn9Mpktn3Br/3Ut9VT7aymurWaamc1\nVc6q4OtaVy11bXXUuepodDd2v8EIHGYHCbaEDonr4CQWa40l1hpLnCXOeG2JJc4aFyyPtcTKSEbR\n7y0u2cvv3i6lbP+BuUAnDU7l9lmFnDIotYs1o4skqGNFa+PcVdknsOsz2Pkp1G47qJKCjEIYMA5y\nxhuP7JMO+y7B0cLj99DQ1kCdy0hYtW211LvqjdeBRNbY1kiTu4kmTxNN7iYa2xp73EPrjt1sJ9YS\nG5bMHGYHdoudGEsMdrM9uNz+2mFxGK/bnwPxDjGzA5vZhtVkxWKyHHffWEX/sq6inp+/tp6tVc3B\n28sUpMZyzyVjOH3E0Zl0oDdJgoomzVUHktXOT42Lhf0H3VJBmSBjZCBpjTMGYWSNhtjj51vR4dBa\n0+ptNZKVO5C8Aq9Dl51eJy2eFlo9rbR4W3B6jGWn14nT48TpdeLXfXcXXKvJGkxYHV6bA8smG1Zz\n4DmkPLSuzWzDYrJgVmbMJjMWZQlbNpvMmJUZi+kQY4Hy0LomZcKkTJiV2bh9ijpQZlImTBjPknyP\nH40uD08s28GjS7cF75N2Um4SC+ZOID81er/w9tsE9buHf8KyrxeSEpPJbXP+BsAvn74MgGun/5LC\nweP559u/Y0v1lwzPmMD15/+CTTvW8NzSewG4+9uvAPCnl35AXWs1pxdeyswpV/Peyhf4ZPO/SXZk\n8pOr/grAr/95BQBzz/g5hYPH88yie9lavYZhGeO57ryfs7l8Lc99ZGz3t9e/HNjufOpd1ZxeeBnn\nnHoViz99iU82/ZskRwY/ueoRAO56+gqsPiffyptMgauKD8s+Yoe/gZFuN9NaXdSYTbwRb0xo+z++\nWMgcxTOtdexTJiYPPo8zpv+A99csYvmmhSQ5MvnRlQ8B8L/PzAHg6ul3MKJgHM+/80e2Vq1hWOZ4\n5s7+KZvL1/LC0j8A8JvrXgDgwVdupb61immFl3L25Cv48PNX+eTrf5MUk8GtVzxovLdnrgFgzvQ7\nGFEwln+9ez9bq9YyLHMc18y6nc3l63jxY2O7v772eQAefuXH1LuqmVZ4Cd+YdDkffv4qyzf9h2RH\nBj+84s/G7+LZbwFw1Rk/DWz3/9hetZYhmeO4ZtZtbC5fx8sf32/8jq99FoBHFv4/6p1VTBt5MWee\nchlLvljI8q9fJykmgxsv+R0tnhYeeHU+HnxMH3cVKanZvL/qZSobtpOakMfYkadTWVPGlzs+woef\nCYVn4/K5WLdjJS5vKwnx6cTFJVPVuIeG1v1opXA4Emj1teJ0N+OPeCVa/2PChMVkQWuN1j5MmHDY\nYjErM862JkwoYm0J2Kx2Wl3NeH1u7GYHifGp+LweGp21KGBA6iBMmKiur8Tv95IUk0pKYiYNTbU0\nOWuwmu0UZBViVma2Va5DAfkZhSTGJlNZtY0WVz1JMWkMzR1Dc0sDZXs3YMJE8YizsFqslGz/HI/X\nRX7aCPKzh1K9v5K9+3cQa0tg3PDTMJlMrNv0CWaTmRH5E0hNSKdy33aaW+pIS8pmaM4o/B4v9fVV\nJMQkkZcxmBhrLFazFbvZjs1sw2ayRX3SXlVWy09e/oqdtcahPwVcMt64CabDGn2Hvo96glJKPQlc\nAFRprcdEiM8Ffobxs2oCvq+1/ioQKwuU+QBvTxtaXFysr7xtAs+6V4IGU2CkXPs35/uH38HsqXM5\n6emTjL1qMJvM+PWBj5X1169n/DPjjQlclVHNrCwMVmls8e9jiBt2OoxfaPskr2ZMXDbicvZueJ+P\nbbUoDRazFb/fjw/jArurCq/il6f+kov/cRLbbWBCYTZZ8Pm9+NEk+mD5/6wH4KR/GpPUWjBjMpnx\n+NxoBd9wxfHg+BsYX/IQ3sD/g91vvLdYrakzm/l1zX7+mJqCF4XXpFBaYzdZuSRrMi/uXR7YrgWL\n2YLb68KvwKThypFzmOgfxO1bfg8Y10cBuDytaAWFpmxevXYxf3xhHs+6V6I0OAKzaLR6Wzv8fE9+\n+qTgdh3WWLw+D27tCf58Jz8/mVaPE63AggmbxUG+P5FN/r0MccO+OCP5tniMqV/sysZlhZdTse4d\nPrbVYtYQY4vH63Xj0sYow7lFc7lj0h3Bn68VMw5rLC6PEw++iD9fh7JjtdhwupvwKTjDncpfb1zK\nKc8W4/Ib8yEm2BIAMLU20WCGa21TeJ2NuNwtuPFh0hBvT+SioRfxXOlzge06sFlttLQ14lNg1nDh\nsEsY5k3ngfLHAYizGu/R6W5BK8hVydx82s94Y8XjrPRtQ2mwWxzG7yAw+/2ZKacyKKeIpzc8hVag\nNFjNNvx+H97A39k5Befw0a6P8Pg8gb9foydk0QoXHmx+8JnNaHSHHmWMJQavx4VHadDGDShDU60K\n3LH5xEi/h06hQPsxo0iOTSfWEktNQwUWFENTiyhIH0bl7s20ttaRkziIaaNnY/OZ2VdVxtCMkZxc\ncApJMclHfVLoV1fv4jevb6QlcNPOQWmx/P6ysZwaZRf89sUt358GHgGe6SS+A5iuta5TSp0LPAZM\nDomfqbWuOdSGjck/DbatBEWHf8B8fzz5WYXGQvuXHQW+wBRG+f44xviNX5JXe4N1dGA5OT6T2XV2\nkmMy2O5b3WGfPvz4tI+TM08jtmYt71h24jnoEF17MpsUM5HtvtX40fhD6qRbwv9AvPiMGy4qyPPH\nMSrzTJh0I97Sh4J12gJJeLDXxsxmN4MsabhC/sa1Uri0F8/md/m2348G/pmciNd34D36FXia95Gf\ncyozPTnoVYZbAAAgAElEQVS8Z90dTDrtdRLijJssFuZMgrKVaHUgMQHk+mPJyRga3F77c/uNG3P9\nsRT5jOsznF5ncLte/Hi9ThLiB3N2nSLFns4rnvUdfg5t2k2br43RaZOx1q7hA+temj3NHeq4vMaH\n+AT7aLbrjXjw4fEcGOqfZg6/hYlLt+HytIGCHF8Mo9ImGeX+A5P1NgUuFxhkTmai28aIgRNp3Lky\nGPcraHQ30upt5Uy3cWx/ia0al9sVfI8+ZXwRGp9zCmdueZ0ltupg8m2vkx2bwwVDLsBTXsHKnX9F\nKzrclmWAz853R36HsSOm8tTGpwDQiuBlAAN8dkb4EvjTjD8ZCTj496vxai9j44pIqKsmxZrOf3T4\nLefPG3weqZX1bK5fy1Lb/rBEdOnwS7lr6l388unLeF1tDls/XyfwrzmL8ONn+kvTw+IZPivT4ybw\nrVl3csnrl4TFs3UcWR4T43Nn8HT1m2HxKQOmUL9zHRr42toSFh+fMZ7RscNZvu0NdljC79eUZUnh\nvJGX8NXW5XzpCm+/1Q/jUseRkpTJe+XvhcWV1iggL7GAnU07w+LayOp4gZrWwMdW4P9wTf0G1tRv\nCNbd0LCH91Yc+BtiB/A5xqFVv/F5lGZJZlz+ZMxOLy0N+yhMH835xdcwIH5A8Mvj4bh8Yj6XjMvl\n7rdKeHfjPsr2O5nz2KcUF6Tw92snkhbfP65p7NEhPqXUIOCtSD2og+qlABu01rmB5TKg+FATVPs5\nKJ8//JbeQPAanINvbwGBb5qB+MHJpT3ePgrM44sQVwfibl/4tUNKKawma4/iB89mDsYhlfaJYNs/\njDu8N2UOxlvbGqGhAvZvMwZg1G7HXLsd2/4d0FhBa4TDEWatsQHYE3Em5UFSPiTnQVIexGdjScrF\nlpQPCQNwRvgWbTaZgxfsBj98Q1hMli7jZmXGEegxNLubw+IWkyUYbwq9xiwk3v6PG2m0oNVk7XG8\noa0hYrx9Vo3u4vWu8IufbWZbj+N1rrqI8fZeV62rNixuN9uD8f2t4fM02s124m3xPYoHP2APirf3\nJruLVzurw+MWO4m2xB7Fq5xVYXGHxRGM72vZFzGeZE9Ca83ult3G0Qvtw6+N5wRbAtlx2WitWVez\nzij3H4hnxmYyNHkoWmuW7FoSLPf5fXj8HgoSCxiXOQ6v38uTG57E2dZCc1sjGtAmRb49h1x/El7l\n5+Wa/9LkamJvUwUevwdlsjIuexy+6mr2uCrZaXaGtd9qskb83IlEaU2MNjEpexpTB52Bv6mZ8TmT\nGZU3tkfrt2vz+liwZBsPf7gFvzZud3/7rEJumj70kLZzNPTJOahDSFD/Dxiptf5uYHkH0IBxiO/v\nWuvHulh3HjAPYODAgRPLy8t7+BZOUG6nMYpw/1ao32kMea/faTzqyiFC8gjjSIaEAZCQDYk5xnPC\nAIjPgrh0iMuA2DSjXpRckCxENPBrP1XOKpweJw3uBmpdxkjWIclDGJM2hjdX/Ysntj9Pm8lPk7cp\neAQiRptJT8yhsqkSP5EH+zi0hWkF00khHkuzi2smzWNw1ohu2/TS5zv51RsbcQcGURRlJ/D8jZNJ\njTt2vamoSVBKqTOBBcBpWuv9gbJcrXWlUioTWAz8UGv9cXf7O25H8UULrY1bjNSXB5LWLiOBNe6G\npr2Bx57wEYadMVmMRBWbHkhc7ckrHeLSjAuWHcnGc0yy8dqeKElNiIA2XxtVLVU4LA4yYjPYVrOF\nX318JztbKmjFc2CmF20cYuxAa3IScpmWMw1TTQPXnvoDCjIi946aXR5ufGY1K7cbvesYq5lnbph0\nzK6diooEpZQaC7wGnKu1Dj8wbNS5C2jWWj/Q3f4kQfUBvx9aa41E1bjHeG7aC027jemenDXQUg0t\n+yHCobDuKXAkHUhYBz/bEw48bPHGDPK2hMBzyHIUzswhRG/SWrPftZ8dDTtItSbjdLfwXuUHPL3x\n6c5WYGTCcM4vvJhT04sZmR3+sfzqqgrufG0dHp/GpOCm6UP58dnDsVr6doqyY56glFIDgQ+B67TW\nK0LK4wCT1rop8Hox8Fut9Tvd7U8SVJTxtoFzfyBh1XR83VINrnporQ88NxjPbYc320QYiyM8idli\njft3WWKMZ2tgOfTRaax9XYcxc73FbvQQo3x4sTjxOD1ONtVt4rPKz1hauZSS/SVY/H7cqmMvy6Jh\nWuJEfj37j2TGZgbLm11eFny0lb8t3YbWkBZnY+H3pzIoPa7P3kNfDDN/AZgBpAP7gN8AVgCt9aNK\nqceBy4D2k0ZerXWxUmoIRq8KjNGC/9Ja/64njZIE1Q/4vEaSaq0LJK+6kCRWD21N4G6GtubA88HL\nzcZEvX1yUa46kKwiPXcas4PFdqCO2WYkO7PFeDZZA89mMFtDyo5k2WJc7K1MRrkygTIftCzJtj/y\n+r2YlZmK2nL+uPb/+Kjio7A6ueZURlkLuOuCh0iMSwbgvY17+d6zq9EYAyjuv3wsl07I65M299sL\ndSVBCbQGjzM8iXlajXJPa8gjsOx1hcQOrhMo87qM1z630TvUkUeLHr9UIFkdnLgOSmqdlUdcJ0J5\n2LoRHh1iZiN5RiwPJNaI5e3bMkWOmUK2G1bek3Z11d5I7eqmzWbrgV78UTwPW+2s5o3N/+FfG56l\nytdxxKhVm7hq1DXccNINpMek89n2Gq5/6ovgdEmXjMvhz1eNO+oXJvfvBLXo9vBg/mQ46XLjdbfx\nn0aITzoQ/+/PwuN5p4TE74iw/ikw5rKexd+5M8L2i0PiP+8kfmnP4u/+InJ89DePIH4KjA5c3/Le\nL8PjucUh8V9FiE/sOp5XbNy5GGDxryOvH4z/ppP4Rcbr9+8Kj+dM6DqeOxGKLgzE/9d41n7jOjXt\nM6adGjzdSF7LHwyUewPPfuMGlgNONma63/DqgfX8XiOhxmdC6hDweYyZ8P1+Y732hyMJErKMeFVp\nx5j2Gx9stjhju017Am1rj/sOJAvtB2+rsU+tAd1HvU1xSMz2joeXbbEHDjPbEzoOLopJOTDgKC4d\nEnKMKdB6kERqWmtYu/tLnlv+F9b5duEJyYspfit3nPxzpo28iMv+tpKt1cblH2cVZfLXaybgsB69\n81J9caHusfN5hFHp3rYDCaTb+N8jxF0H4p89Gh73tIbE/xYh7jyQYLqLf7ogPD7h+pD4XzuJX9qz\n+MpHIsfbE9BhxwMJZsXD3cQfOrx4ewJa/mA38b90Eg8koE/+fHjx9gT1yZ8ix8cbUzPx5T8jx9t/\nfq/Nixw/K5B474pww7kJ18NFDx29+Pjr4MK/GAnungiTiZ50Fcy820h2fyoKjxddDDN+Zqz/99PD\n48NnwZT5RjJ8NvxCXQbPgOLvGNt/9X/C4wOnwNgrjfXfvi08njMBii4wkvKSe8LjWWOMe7FpHfn/\nI2248SVV++CrF8LjSfnGhM3ab9zz7WDxWcYXDL8PKj4PjzuSjTraD/u3hMfbe07tPXlfm/GIcM1c\nj5htxpeexDzjUpCUQZA+HNKGGY/AHJ7pMemcPXQmZw+dSXVzFb9Y8UtW7jEuIq4zefjZuv/l9NoP\nefx/bufvHzax8MtKPiitYs5jn/LotyaSneQ4vPYdZdGdoM79Y3hZxsiex2f/ITyeGRr/fYR4yD/t\nrPuOMH5vhPioA69nRjgll3Uo8Qj/wKHbP+fuCOuP7iYeuv5vu17/7P8Nj4eOKIoUzwqN3xUhftKB\n12dF6EFlh8Yj9MCyx3YdD93+NyL08ELX/0aEHmT2yd3EQ9Y/M0J8QGg8Qg82+xDiMyL0sAeMNXpZ\nJjPMiNCDH3Cy0YMDmB7hCEDOuAO/40jxASfDkMAME9MjHIEYMA5Gnme8rgqf6YKccTDyfON1U/iF\nuh3iES50Z8A4I4GBkQzC1h9/IJ6Y23X8gwh/3znjjS8wfr9xBKG9d9z+KJgG464x4q9cH+jhhsSH\nzzQSuNcNC6YYvdzgoWeX8eXr1JvAWQsvXh2+/5TBxkX1LdVQ/bXRk2+oMB6R2BON/6ncCcE7JmSk\nDuGxmY9R01rD3R/+kiXVy9EKllUuY1nFMnL9Mfzl8v/jd+96WLurntP+8CH/uG5iVN4YMboP8Qkh\nRH/i9xvnpfw+qCs7MIDI1WC8zhgJg6YZg4tevcG4drFx94FLPQqmGRfTV38N+zZE3kdsOgw+3biZ\n6uDpOBMH8OzXz7G5+mve27UYlDEj49WF3+HZRSNwuo1DiD8/byTzzujd2Sf69zkoIYQQRu+rea9x\nU9T4DKNH9fbtUF1qzBzTPiuFLd4YSBQqMc84LVB0EU9vW86fyp5AB05r2TCTXjOFTdVGr/LbUwdx\n10Wj6S2SoIQQ4kTmaYV9JbBnLRScZvTQVjwEX0aY3zshm+qxV/ILTzkrq9cYZVqT5M6hYsdNoO3M\nnTyQey4Z0ysj/CRBCSGE6MhZCzs+hu0fQembxswwHShW5o7hZmsD7vbelE5DVUylpnka3546iF9f\nMAqT6ciSlCQoIYQQndMadq+BbR8al4mseRY2/hu0Hy/wQkYeb6YPoNS1D7QmxR1DxfY7GZqZxls/\nPA37EQxDlwQlhBDi0LxxK6x9PjhhtAeYmzOAUpsx7Zffk4Cz7Htkx+XxwW3TibUd3oDvI01QMt20\nEEKcaC56EH66zbiUw5GMFfjX7j1MbXUZdzG3NhE/7AEctseZcf9HNLl6eOeDXiY9KCGEOJF53cZF\nzU174IsnWOZr4EdZGbhNJtCa9MZc6htuY8ltM0iOtR3SpqUHJYQQ4vBZbDDxephxB9yyhtPjB/HO\nrt3E+3ygFDVJu2lNepZvP7WC5rbwu5gfTZKghBBCGOzx8N3FZIy6lE92VnJ3VQ0xfj/WpLWUx/6Q\n7zz2L+qd7j5rjiQoIYQQBziS4PInMH/3fS4xJfHkHmN0n9cEmxLu54w/P0dTa9+ck5IEJYQQIlze\nKfCj9YwZ/11+2axAa2MGity/MP2Rv+Psg8N9kqCEEEJEZrbCub/nqu99zov2UTj8frTSeDIe5ZsL\nbsLlObr3UpMEJYQQomvWGEZf8hhvO2Nx+P2gFLtTPuWCB3+Hz3/0RoJLghJCCNG9mGQyv/8Z/40r\nZoDHC0pRl/YyN7xwN0frciVJUEIIIXrGZCL9yn/y9qj5XNTUjNukWO15mWsej3Dzyt7Y3VHZqhBC\niH7LOvVmfnPmg6R5jcN9G6zb+NbfI9yA8QhJghJCCHHIbKMv4t0rPiQ2cE7qK/t6fvRchLswHwFJ\nUEIIIQ6LPTGLD897lazAOakPvG/xiye+02vblwQlhBDisMVlFfHGha+S7jWS1JvmL3j4hZ/1yra7\nTVBKqSeVUlVKqQ2dxJVS6iGl1Fal1Dql1ISQ2Gyl1KZArHf7fkIIIaJCbNZo/j3zZVK9PrRS/Kv1\nLRZ/9fYRb7cnPaingdldxM8Fhgce84C/ASilzMBfA/FRwNVKqVFH0lghhBDRKSX/JP45/XGyPV6a\nzSZu//LIe1HdJiit9cdAbRdVLgae0YZPgWSl1ABgErBVa71da+0GXgzUFUII0Q8NGjaVR2Y9h8Wv\n8R3h7eKhd85B5QK7QpYrAmWdlUeklJqnlFqllFpVXV3dC80SQgjR1wrzJ/LDnO+ieuHi3agZJKG1\nfkxrXay1Ls7IyDjWzRFCCHGY/mfWj1gw7o9HvJ3Du9F8R5VAfshyXqDM2km5EEKIfu60cecd8TZ6\nowf1BnBdYDTfqUCD1noP8AUwXCk1WCllA+YE6gohhBDd6rYHpZR6AZgBpCulKoDfYPSO0Fo/CiwC\nzgO2Ak7gO4GYVyl1M/AuYAae1FpvPArvQQghRD/UbYLSWnc5wZI2prGd30lsEUYCE0IIIQ5J1AyS\nEEIIIUJJghJCCBGVJEEJIYSISpKghBBCRCVJUEIIIaKSJCghhBBRSRKUEEKIqCQJSgghRFSSBCWE\nECIqSYISQggRlSRBCSGEiEqSoIQQQkQlSVBCCCGikiQoIYQQUUkSlBBCiKgkCUoIIURUkgQlhBAi\nKkmCEkIIEZUkQQkhhIhKkqCEEEJEJUlQQgghopIkKCGEEFFJEpQQQoio1KMEpZSarZTapJTaqpS6\nI0L8dqXU2sBjg1LKp5RKDcTKlFLrA7FVvf0GhBBC9E+W7ioopczAX4FzgArgC6XUG1rrkvY6Wuv7\ngfsD9S8Efqy1rg3ZzJla65pebbkQQoh+rSc9qEnAVq31dq21G3gRuLiL+lcDL/RG44QQQpy4epKg\ncoFdIcsVgbIwSqlYYDawMKRYA+8rpVYrpeZ1thOl1Dyl1Cql1Krq6uoeNEsIIUR/1tuDJC4Elh90\neO80rfU44FxgvlLqjEgraq0f01oXa62LMzIyerlZQgghjjc9SVCVQH7Icl6gLJI5HHR4T2tdGXiu\nAl7DOGQohBBCdKknCeoLYLhSarBSyoaRhN44uJJSKgmYDrweUhanlEpofw3MBDb0RsOFEEL0b92O\n4tNae5VSNwPvAmbgSa31RqXUTYH4o4Gq3wTe01q3hKyeBbymlGrf17+01u/05hsQQgjRPymt9bFu\nQ5ji4mK9apVcMiWEEMczpdRqrXXx4a4vM0kIIYSISpKghBBCRCVJUEIIIaKSJCghhBBRSRKUEEKI\nqCQJSgghRFSSBCWEECIqSYISQggRlSRBCSGEiEqSoIQQQkQlSVBCCCGikiQoIYQQUUkSlBBCiKgk\nCUoIIURUkgQlhBAiKkmCEkIIEZW6vaNutPH7/VRUVNDS0tJ9ZRGVrFYrmZmZJCYmHuumCCGi2HGX\noGpqalBKUVhYiMkkHcDjjdaa1tZWKisrASRJCSE6ddx9wtfX15OVlSXJ6TillCI2Npbc3FyqqqqO\ndXOEEFHsuPuU9/l8WK3WY90McYRiYmLweDzHuhlCiCh23CUoML6Fi+Ob/A6FEN05LhOUEEKI/k8S\nVB+qq6sjKyuLbdu2HeumHDVvv/0248aNw+/3H+umCCGOcz1KUEqp2UqpTUqprUqpOyLEZyilGpRS\nawOPX/d03RPJvffey3nnncfQoUM7rbN+/XqmT59OTEwMubm5/Pa3v0Vr3Wn9srIylFIRH/fff3+X\n7Vm4cCGjRo3CbrczatQoXnvttW7fw86dO7nwwguJi4sjPT2dW265BbfbHYyff/75mM1mnn/++W63\nJYQQXdJad/kAzMA2YAhgA74CRh1UZwbw1uGsG+kxceJE3ZmSkpJOY9GspaVFJycn62XLlnVap6Gh\nQWdlZekrrrhCr1+/Xr/yyis6Pj5eP/DAA52u4/V69Z49ezo8FixYoJVSevv27Z2ut2LFCm02m/U9\n99yjS0pK9D333KPNZrP+9NNPu9zXmDFj9PTp0/Xq1av1e++9pwcMGKBvvvnmDvUefvhhXVxc3MVP\nw3C8/i6FED0DrNLdfN539ehJgpoCvBuyfCdw50F1OktQ3a4b6dEfE9Qrr7yiU1JStN/v77TOggUL\ndEJCgnY6ncGyu+++W+fk5HS53sHOPvtsfc4553RZ58orr9Rnn312h7KzzjpLz5kzp9N1Fi1apJVS\neufOncGyZ599Vtvtdt3Q0BAsKy8v14DesmVLl204Xn+XQoieOdIE1ZNDfLnArpDlikDZwaYqpdYp\npf6rlBp9iOuilJqnlFqllFpVXV3dg2YdX5YtW8bEiRO7HL22cuVKTj/9dGJiYoJls2bNYvfu3ZSV\nlfVoP9u3b+eDDz5g3rx5XdZbuXIlM2fO7FA2a9YsVqxY0eU6RUVF5Ofnd1inra2N1atXB8sGDhxI\nVlYWS5cu7VGbhRAikt6aSeJLYKDWulkpdR7wH2D4oWxAa/0Y8BhAcXFx5yddIhh0x9thZVdPyue+\nS8celXjZ788/lOYBUF5eTk5OTpd19u7dS15eXoeyrKysYGzw4MHd7ufxxx8nIyODiy++uNt9tW87\ndF979+49pHXS09Mxm81h6+Xk5PQ4qQohRCQ96UFVAvkhy3mBsiCtdaPWujnwehFgVUql92TdE0Vr\naysOhyO4PHr0aOLj44mPj+fcc8/tlX14vV6eeuoprr/++mN+MXNMTAytra3HtA1CiONbT3pQXwDD\nlVKDMZLLHOCa0ApKqWxgn9ZaK6UmYSS+/UB9d+v2hu56NEc73hPp6enU1dUFlxctWhScSaH9kF52\ndjb79u3rsF77cnZ2drf7ePPNN9m7dy/f/e53u63b2b662k92djbLly/vUFZTU4PP5wtbr7a2loyM\njG7bIYQQnem2B6W19gI3A+8CpcDLWuuNSqmblFI3BapdDmxQSn0FPAS0n2mPuO7ReCPRbvz48ZSU\nlASXCwoKGDZsGMOGDSM31zgtN2XKFJYtW4bL5QrWW7x4MTk5OQwaNKjbffzjH/9g+vTpjBgxotu6\nU6ZMYfHixR3KFi9ezNSpU7tcp7S0lIqKig7r2O12Jk6cGCxzuVxs27aNCRMmdNsOIYTo1JGMsDha\nj/44im/dunXaZDLpmpqaTuvU19frrKwsfdVVV+n169frhQsX6oSEhA7DzD/77DNdWFioP/vssw7r\nlpeXa5PJpJ977rketWf58uXabDbr++67T5eWlup7771XWyyWDsPMH374YV1YWBhcbh9mfuaZZ+ov\nv/xSL168WOfk5IQNM1+yZImOj4/XLS0tXbbheP1dCiF6hj4YxSd6wUknncSkSZN48cUXO62TlJTE\n4sWL2b17N8XFxcyfP5/bbruNn/zkJ8E6TqeTTZs24XQ6O6z7xBNPkJSUxGWXXRZx2zNmzGDGjBnB\n5alTp/Liiy/y9NNPM3bsWJ555hleeuklJk+eHKxTU1PDpk2bgstms5m3336b2NhYpk2bxlVXXcVl\nl13GAw880GFfL7zwAnPnziU2NrZHPxshhIhEGUkuuhQXF+tVq1ZFjJWWllJUVNTHLeod77zzDrfe\neislJSWYzeY+3XdBQQE33XQTd95551HdT1VVFUVFRaxatarbUYfH8+9SCNE9pdRqrXXx4a4vPag+\nNHv2bObPn9/hHE5f2LhxI3a7ndtuu+2o76usrIwFCxb0aEi8EEJ05bi7o+7x7pZbbunzfY4ePZrN\nmzf3yb4mTZrEpEmT+mRfQoj+TXpQQgghopIkKCGEEFFJEpQQQoioJAlKCCFEVJIEJYQQIipJghJC\nCBGVJEEJIYSISpKg+lBdXR1ZWVls27btWDflqHn77bcZN24cfr//WDdFCHGckwTVh+69917OO+88\nhg4dGjHucrn49re/zdixY7FarR3mzuvKjTfeyNChQ4mJiQnerLC0tLTb9RYuXMioUaOw2+2MGjWK\n1157rdt1du7cyYUXXkhcXBzp6enccsstuN3uYPz888/HbDbz/PPP96jtQgjRGUlQfcTpdPL4449z\nww03dFrH5/PhcDi4+eabOf/8nt+Dqri4mKeffprS0lLeffddtNacffbZwftNRbJy5Uquuuoq5s6d\ny9q1a5k7dy5XXHEFn332WZftO//882lqamLZsmW88MILvPrqq2FTKH3nO9/hoYce6nH7hRAioiOZ\nCv1oPfrj7TZeeeUVnZKSov1+f4/qz58/X0+fPv2w9vXVV19pQH/99ded1rnyyiv12Wef3aHsrLPO\n0nPmzOlkDa0XLVqklVJ6586dwbJnn31W2+123dDQECwrLy/XgN6yZUuX7Txef5dCiJ5BbrdxfFi2\n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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "lw=2\n", + "fs=14\n", + "fig, (ax1, ax2) = plt.subplots(2,1,figsize=(6,8),sharex=True,)\n", + "# gridspec_kw = {'height_ratios':[2, 1]})\n", + "for M, csm in cosmo.iteritems():\n", + " if M!='LCDM':\n", + " w0, wa = M.strip('()').split(',')\n", + " if float(wa)!=0.0:\n", + " continue\n", + " bg = csm.get_background()\n", + " a = 1./(bg['z']+1)\n", + " H = bg['H [1/Mpc]']\n", + " #grow = bg['grow']\n", + " #grow_prime = bg['grow_prime']\n", + " D = bg['gr.fac. D']\n", + " f = bg['gr.fac. f']\n", + " #grow_interp = interpolate.interp1d(a,grow)\n", + " #p = ax1.semilogx(a,grow/grow[-1]/a,lw=lw,label=M)\n", + " #colour = p[0].get_color()\n", + " \n", + " p=ax1.semilogx(a,D_linder2(a,csm)/a,lw=lw,ls='--',label=M)\n", + " colour = p[0].get_color()\n", + " ax1.semilogx(a,D/a,lw=lw,ls='-',color=colour)\n", + " ax1.semilogx(a,D_hypergeom(a,csm)/a,lw=lw,ls=':',color=colour)\n", + " \n", + " ax2.semilogx(a,D/D_integral2(a,csm),lw=lw,ls='-',color=colour)\n", + " ax2.semilogx(a,D/D_hypergeom(a,csm),lw=lw,ls=':',color=colour)\n", + " ax2.semilogx(a,D/D_linder2(a,csm),lw=lw,ls='--',color=colour)\n", + "\n", + "ax1.set_xlim([1e-3,1]) \n", + "ax2.set_xlabel(r'$a$',fontsize=fs)\n", + "ax1.set_ylim([0,2])\n", + "ax2.set_ylim([0.9,1.3])\n", + "\n", + "lgd1 = ax1.legend(fontsize=fs,ncol=1,loc='lower left')\n", + "# bbox_to_anchor=(1.0, 1.035))\n", + "\n", + "fig.tight_layout()\n", + "fig.subplots_adjust(hspace=0.0)\n", + "fig.savefig('Growthrate_w0.pdf')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.7" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/class/notebooks/.ipynb_checkpoints/Test HMcode2020-checkpoint.ipynb b/class/notebooks/.ipynb_checkpoints/Test HMcode2020-checkpoint.ipynb new file mode 100644 index 00000000..363fcab7 --- /dev/null +++ b/class/notebooks/.ipynb_checkpoints/Test HMcode2020-checkpoint.ipynb @@ -0,0 +1,6 @@ +{ + "cells": [], + "metadata": {}, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/class/notebooks/.ipynb_checkpoints/cambvsclass-checkpoint.ipynb b/class/notebooks/.ipynb_checkpoints/cambvsclass-checkpoint.ipynb new file mode 100644 index 00000000..543b5550 --- /dev/null +++ b/class/notebooks/.ipynb_checkpoints/cambvsclass-checkpoint.ipynb @@ -0,0 +1,521 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "f42fe0e6", + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "import camb\n", + "from scipy.interpolate import interp1d\n", + "from classy import Class\n", + "\n", + "%matplotlib inline\n", + "%matplotlib inline\n", + "%config InlineBackend.figure_format = 'retina'\n", + "plt.rcParams.update({'axes.labelsize' : 20})\n", + "plt.rcParams.update({'axes.grid' : False})" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "3572f79c", + "metadata": {}, + "outputs": [], + "source": [ + "nuFlag=False\n", + "bolt_names = ['h','Omr','Omb','Omcb','ns','Y_p','Neff','smnu','As']\n", + "h=1\n", + "bolt_cosmo = [h,5.042e-5*(0.7/h)**2,0.046*(0.7/h)**2,(0.224+0.046)*(0.7/h)**2,1.0,0.24,3.046,0.06,1e-10*np.exp(3.043)] #this is the choice of Planck TTTEEE in class for nu\n", + "cosmo_dict = dict(zip(bolt_names,bolt_cosmo))\n", + "# cosmo_dict['Omm'] = cosmo_dict['Omcb']+cosmo_dict['smnu']/93.14/cosmo_dict['h']**2\n", + "\n", + "k = np.logspace(-4,np.log10(20),2000)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "beb984ef", + "metadata": {}, + "outputs": [], + "source": [ + "class_ref = {\n", + " 'recombination': 'RECFAST',\n", + " 'tol_ncdm_bg':1.e-10,\n", + " # 'recfast_Nz0':100000,\n", + " 'tol_thermo_integration':1.e-5,\n", + " 'recfast_x_He0_trigger_delta':0.01,\n", + " 'recfast_x_H0_trigger_delta':0.01,\n", + " 'evolver':0,\n", + " 'k_min_tau0':0.002,\n", + " 'k_max_tau0_over_l_max':3.,\n", + " 'k_step_sub':0.015,\n", + " 'k_step_super':0.0001,\n", + " 'k_step_super_reduction':0.1,\n", + " 'start_small_k_at_tau_c_over_tau_h':0.0004,\n", + " 'start_large_k_at_tau_h_over_tau_k':0.05,\n", + " 'tight_coupling_trigger_tau_c_over_tau_h':0.005,\n", + " 'tight_coupling_trigger_tau_c_over_tau_k':0.008,\n", + " 'start_sources_at_tau_c_over_tau_h':0.006,\n", + " 'l_max_g':50,\n", + " 'l_max_pol_g':25,\n", + " 'l_max_ur':50,\n", + " 'l_max_ncdm':50,\n", + " #'tol_perturbations_integration':1.e-6,\n", + " #'perturbations_sampling_stepsize':0.01,\n", + " 'l_logstep':1.026,\n", + " 'l_linstep':25,\n", + " 'hyper_sampling_flat':12.,\n", + " 'hyper_sampling_curved_low_nu':10.,\n", + " 'hyper_sampling_curved_high_nu':10.,\n", + " 'hyper_nu_sampling_step':10.,\n", + " 'hyper_phi_min_abs':1.e-10,\n", + " 'hyper_x_tol':1.e-4,\n", + " 'hyper_flat_approximation_nu':1.e6,\n", + " 'q_linstep':0.20,\n", + " 'q_logstep_spline':20.,\n", + " 'q_logstep_trapzd':0.5,\n", + " 'q_numstep_transition':250,\n", + " 'transfer_neglect_delta_k_S_t0':100.,\n", + " 'transfer_neglect_delta_k_S_t1':100.,\n", + " 'transfer_neglect_delta_k_S_t2':100.,\n", + " 'transfer_neglect_delta_k_S_e':100.,\n", + " 'transfer_neglect_delta_k_V_t1':100.,\n", + " 'transfer_neglect_delta_k_V_t2':100.,\n", + " 'transfer_neglect_delta_k_V_e':100.,\n", + " 'transfer_neglect_delta_k_V_b':100.,\n", + " 'transfer_neglect_delta_k_T_t2':100.,\n", + " 'transfer_neglect_delta_k_T_e':100.,\n", + " 'transfer_neglect_delta_k_T_b':100.,\n", + " 'neglect_CMB_sources_below_visibility':1.e-30,\n", + " 'transfer_neglect_late_source':3000.,\n", + " 'halofit_k_per_decade':3000.,\n", + " 'l_switch_limber':40.,\n", + " 'accurate_lensing':1,\n", + " 'num_mu_minus_lmax':1000.,\n", + " 'delta_l_max':1000.\n", + "}\n", + "\n", + "# additional precision parameters for neutrinos only\n", + "class_ref_nu = {\n", + " 'radiation_streaming_approximation':2,\n", + " 'radiation_streaming_trigger_tau_over_tau_k':240.,\n", + " 'radiation_streaming_trigger_tau_c_over_tau':100.,\n", + " 'ur_fluid_approximation':2,\n", + " 'ur_fluid_trigger_tau_over_tau_k':50.,\n", + " 'ncdm_fluid_approximation':3,\n", + " 'ncdm_fluid_trigger_tau_over_tau_k':51.,\n", + " 'tol_ncdm_synchronous':1.e-10,\n", + " 'tol_ncdm_newtonian':1.e-10,\n", + "}" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "dd878ca2", + "metadata": {}, + "outputs": [], + "source": [ + "def run_camb(cosmo_dict,k,z,nu=False, darkmatter=True):\n", + " cosmo_dict['Omcdm'] = cosmo_dict['Omcb']-cosmo_dict['Omb']\n", + " nonlinear = camb.nonlinear.Halofit()\n", + " if darkmatter:\n", + " nonlinear.set_params(halofit_version='mead2020')#, HMCode_logT_AGN=-20,)\n", + " else:\n", + " nonlinear.set_params(halofit_version='mead2020_feedback',HMCode_logT_AGN=7.8)#, HMCode_logT_AGN=-20,)\n", + " pars = camb.CAMBparams(NonLinearModel =nonlinear)\n", + " pars.set_cosmology(H0=cosmo_dict['h']*100,\n", + " ombh2=cosmo_dict['Omb']*cosmo_dict['h']**2,\n", + " omch2=cosmo_dict['Omcdm']*cosmo_dict['h']**2,\n", + " mnu=cosmo_dict['smnu'] if nuFlag else 0., \n", + " num_massive_neutrinos=1 if nuFlag else 0,\n", + "\n", + " YHe=cosmo_dict['Y_p'],\n", + " omk=0, tau=0.06) #fixed parameters, Planck neutrinos\n", + " pars.set_accuracy(AccuracyBoost=3.0, lAccuracyBoost=3.0, DoLateRadTruncation=False)\n", + " pars.InitPower.set_params(ns=cosmo_dict['ns'],\n", + " As=cosmo_dict['As'])\n", + "\n", + " pars.set_matter_power(redshifts=[0.],kmax=50/cosmo_dict['h'])#, kmax=kmax/h) \n", + " pars.share_delta_neff = True \n", + "\n", + " results = camb.get_results(pars)\n", + " zmin,zmax = 0, 2\n", + " nz=3\n", + " camb_interp = camb.get_matter_power_interpolator(pars,zmin=zmin,zmax=zmax,nz_step=nz,nonlinear=False,kmax=50/cosmo_dict['h'])\n", + " pinterp = camb_interp.P #defaults #takes (z,k) pairs\n", + " camb_interp = camb.get_matter_power_interpolator(pars,zmin=zmin,zmax=zmax,nz_step=nz,nonlinear=True,kmax=50/cosmo_dict['h'])\n", + " pinterp_nonlinear = camb_interp.P #defaults #takes (z,k) pairs\n", + "\n", + " return pinterp(z,k), pinterp_nonlinear(z,k), results\n" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "7c0b8ea7", + "metadata": {}, + "outputs": [], + "source": [ + "#should really just make a private toolbox with these functions somewhere...\n", + "import copy\n", + "def run_class(cosmo_dict_in,k,z,nu=False,pk=False,gauge='synchronous',darkmatter=True):\n", + " cosmo_dict=copy.deepcopy(cosmo_dict_in)\n", + " '''Simple call to boltzmann code using input cosmology parameter vector. k in h/Mpc.'''\n", + " #setup\n", + " if('h' not in cosmo_dict.keys()):\n", + " h = cosmo_dict['H0']/100.\n", + " elif('H0' not in cosmo_dict.keys()):\n", + " cosmo_dict['H0'] = cosmo_dict['h']*100.\n", + " h = cosmo_dict['h']\n", + " if('Omcdm' not in cosmo_dict.keys()):\n", + " cosmo_dict['Omcdm'] = cosmo_dict['Omcb']-cosmo_dict['Omb']\n", + " # cosmo_dict['Omcdm'] = cosmo_dict['Omm']-cosmo_dict['Omb']\n", + " c,G = 2.99792e5,4.30071e-9 \n", + " cosmo_dict['non linear']=\"HMcode2020\"\n", + " if darkmatter:\n", + " None\n", + " else:\n", + " cosmo_dict['hmcode2020log10tagn']=7.8\n", + "\n", + "\n", + " h=cosmo_dict['h']\n", + " if(nu): \n", + " #use Planck single massive neutrino if using neutrinos\n", + " N_ncdm=1\n", + " m_ncdm=0.06 \n", + " else:\n", + " N_ncdm=0\n", + " m_ncdm=0 \n", + " \n", + " N_ur=3.046-N_ncdm\n", + " # N_ur = 3.046\n", + " print(\"Nur: {0:.3f}, Nncdm: {1:.3f}, mncdm: {2:.3f}\".format(N_ur,N_ncdm,m_ncdm))\n", + " \n", + " ceng = Class()\n", + " #gross but don't want to look up how to do it right now\n", + " if(nuFlag): \n", + " ceng.set({'h':h,\n", + " 'omega_b':cosmo_dict['Omb']*h**2,\n", + " 'omega_cdm':cosmo_dict['Omcdm']*h**2,\n", + " #'omega_r':cosmo_dict['Omr']*h**2,\n", + " 'n_s':cosmo_dict['ns'],\n", + " 'A_s':cosmo_dict['As'],\n", + " 'gauge':gauge,\n", + " 'N_ur': 2.0308,\n", + " 'N_ncdm': N_ncdm,\n", + " 'T_ncdm': 0.7133, # IMPORTANT, see page 11 of arxiv:1104.2935\n", + " 'm_ncdm': m_ncdm,\n", + " 'YHe': cosmo_dict['Y_p'],\n", + " 'ncdm_fluid_approximation':3,\n", + " 'z_reio': 7.6711,\n", + " 'non linear':cosmo_dict['non linear']\n", + " })\n", + " if not darkmatter:\n", + " ceng.set({'hmcode2020log10tagn':cosmo_dict['hmcode2020log10tagn']})\n", + " else: \n", + " ceng.set({'h':h,\n", + " 'omega_b':cosmo_dict['Omb']*h**2,\n", + " 'omega_cdm':cosmo_dict['Omcdm']*h**2,\n", + " #'omega_r':cosmo_dict['Omr']*h**2,\n", + " 'n_s':cosmo_dict['ns'],\n", + " 'A_s':cosmo_dict['As'],\n", + " 'gauge':gauge,\n", + " 'N_ur': N_ur,\n", + "# 'N_ncdm': N_ncdm,\n", + "# 'm_ncdm': m_ncdm,\n", + " 'YHe': cosmo_dict['Y_p'],\n", + " 'ncdm_fluid_approximation':3,\n", + " 'z_reio': 7.6711, \n", + " 'non linear':cosmo_dict['non linear']\n", + " })\n", + " if not darkmatter:\n", + " ceng.set({'hmcode2020log10tagn':cosmo_dict['hmcode2020log10tagn']})\n", + " print(m_ncdm)\n", + " print(ceng.pars)\n", + " #need lower z_max ow issues long complaint, need z" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA3gAAAInCAYAAADKwfvYAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAABYlAAAWJQFJUiTwAACTmUlEQVR4nOzdd5icZbnH8e8921t2s9n03gtEIAkdEkhoSpWiiAXxAKIoCiIeCyK2g4qCoAiiFBWlBKRIkRpKCCUJhIT03usm2c328pw/3ndmZ2Zna3ZndnZ/n+uaa2be533K7C5h733Kbc45REREREREJPkFEj0AERERERER6RgK8ERERERERLoJBXgiIiIiIiLdhAI8ERERERGRbkIBnoiIiIiISDehAE9ERERERKSbUIAnIiIiIiLSTSjAExERERER6SYU4ImIiIiIiHQTCvBERERERES6CQV4IiIiIiIi3YQCPBERERERkW4iNdEDEEkWZrYO6AWsT/BQRERERKR7GwGUOOdGtrWiAjyR1uuVlZVVOHHixMJED0REREREuq9ly5ZRUVHRrroK8ERab/3EiRMLFyxYkOhxiIiIiEg3NnXqVBYuXLi+PXW1B09ERERERKSbUIAnIiIiIiLSTSjAExERERER6SYU4ImIiIiIiHQTCvBERERERES6CQV4IiIiIiIi3YQCPBERERERkW5CAZ6IiIiIiEg3oQBPRERERESkm1CAJyIiIiIi0k0owBMREREREekmFOCJiIiIiIh0EwrwREREREREugkFeCIiIiIiIt2EArwkZWZDzOw+M9tqZlVmtt7Mbjez3m1sp9Cvt95vZ6vf7pCO7NvMJpnZo2a208wqzWyFmd1sZlnN1DnOzJ4zs2IzqzCzj8zs22aW0kyds8xsjpntN7MDZvaumV3a+q+IiIiIiEjySk30AKTtzGw08DbQD3gKWA4cBXwLOMPMjnfO7WlFO338dsYBrwIPAxOAy4AzzexY59zag+3bzI72208DZgObgJnAj4FZZjbLOVcVVedc4HGgEngEKAbOBm4DjgcuivF5vgHcCewB/gFUAxcCD5jZZOfc9S19TUREREREkpkCvOR0F16AdY1z7s7gRTP7HXAt8Avgqla080u84O53zrnvhLVzDfB7v58zDqZvf7btfiAbONc597R/PQA8Clzg17slrE4v4F6gDjjJ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DHzLf4iIiIiIxDSsGy/R1B48ERERERHpUYb16b658BTgiYiIiIhIj9Kdl2gqwBMRERERkR6lf69M0lO8UGhPWTUHqmoTPKKOowBPRERERER6lJSAMaR3Q8Lzjd1oH54CPBERERER6XG66z48BXgiIiIiItLjDC5omMHbsq8igSPpWArwRERERESkxxkctkRzy14FeCIiIiIiIklrSO+GJZpb9mmJpoiIiIiISNLSEk0REREREZFuYoiWaIqIiIiIiHQPfXMzQrnw9pbXUNZNcuEpwBMRERERkR4nEDAGFmSG3neXZZoK8EREREREpEeK2IfXTZZpKsATEREREZEeKTzA26wZPBERERERkeTVHXPhKcATEREREZEeqTumSlCAJyIiIiIiPVLkDF73SHauAE9ERERERHqkIQXZodeawRMREREREUliA/IzMfNe7yytorq2PrED6gAK8EREREREpEdKTw3QP8/LheccbNuf/LN4CvBERERERKTHGtLNTtJUgCciIiIiIj1W+EEr3SEXngI8ERERERHpsSJSJWgGT0REREREJHlFpErQDJ6IiIiIiEjyCp/B29wNcuEpwBMRERERkR5rUFiAt31/ZQJH0jEU4ImIiIiISI81MD8z9Hrb/kqccwkczcFTgCciIiIiIj1WXmYauRmpAFTV1rOvvCbBIzo4CvBERERERKRHGxA2i7c1yZOdK8ATEREREZEeLXyZZrLvw1OAJyIiIiIiPVr0PrxkpgBPRERERER6tAH53eckTQV4IiIiIiLSow3SHjwREREREZHuYYD24ImIiIiIiHQPA7VEU0REREREpHsYWBC5RDOZk50rwEtSZnacmT1nZsVmVmFmH5nZt80spR1tTTKzR81sp5lVmtkKM7vZzLKaqdPq/s2swMy+a2YPmdlSM6s1M2dmpzTTvmvF44tRdea0cH9mU/2JiIiISM+Vl5FKTrr3a2xlTT37K5I32XlqogcgbWdm5wKPA5XAI0AxcDZwG3A8cFEb2joaeBVIA2YDm4CZwI+BWWY2yzlXdZD9jwB+7b/eDOwG+rcwtJubuJ4HXAfUAi+1sW5tC32KiIiISA9kZgzIz2TNrjLAS5VQkJ2e4FG1jwK8JGNmvYB7gTrgJOfcfP/6jXiB2oVmdrFz7uFWtJUC3A9kA+c65572rweAR4ELgGuBWw6y/w3AKcAHzrliM3sAuLS5sTnnftLEmL/qv3zGObe9LXVFRERERJoyqCArLMCrYOLAXgkeUftoiWbyuRDoCzwcDK4AnHOVwI/8t19rZVszgInAG8Hgzm+rHrjBf3uVmdnB9O+c2+uce8U5V9zKcTXnSv/5ng5oS0REREQEgAG9ukeyc83gJZ+Z/vMLMcreAMqB48wsI3ppZVvacs6tNbOVwDhgFLCmE/pvEzObCkwB1gMvNnPfZ4GRQDWwDHi1o8ciIiIiIt3LwG6SKkEBXvIZ7z+vjC5wztWa2TrgELygbFl72/KtwgvwxtEQ4HVk/20VnL271zV/tFH08tSdZna1c252azoxswVNFE1oTX0RERERST4DwlIlbN2XvAGelmgmn3z/eX8T5cHrBZ3UVkf232pmlgt8Du+glPuauO0pvMNehgBZeAHZ//ljecTMzujIMYmIiIhI9xGeKmF7SUUCR3JwNIOXAGa2HhjehioPOee+0EnDSRafwztB84lmDle5LerSCuAHZrYVuBMv2Iu1tDS6namxrvsze1PaMmgRERERSQ7hSzS1B0/aag1eioHW2hr2OjhDlh/rxrDr+1rRbnva6sj+2yK4PPPP7aj7F7wUDoebWZ5zrrTjhiUiIiIi3cHAXg1LNLftq8Q5R+RZg8lBAV4COOdmHUT1FcA0vH1xEXvFzCwV73CRWmBtK9vCbyuWsf5z+H67juy/VczscL/PdTRzuEpTnHOVZlYK9AZyAAV4IiIiIhKhV1Yq2ekplFfXUVFTR0lFLfnZaYkeVptpD17yedV/jrWfbDpeTru3W3lqZJNtmdkovCBuA5HBWkf231rB3Hd/aeFwlZjMbDxecFeKl2RdRERERCRCMNl50Nb9ybkPTwFe8pmNF6RcbGbTghfNLBP4uf/2T+EVzCzbzCaY2bCotl7HO+lyupmdE3Z/APiV//buqKCqzf0fDDPLAS6h+cNVMLORZlYY43pfvGTu4OXuq+2osYmIiIhI9xKeC29naXJm2dISzSTjnCsxsyvwAq05ZvYwUAycg5fCYDbwSFS1o4DX8AK6k8LaqjOzy/Bm5Wab2WxgIzALb0nkXLy9awfbP2Z2K1Dkvz3Bf/6umQUPj3nSOfdkjI98MdCLZg5X8c0A7jazt/BmHIuBYcCn8PYFzqcheXunq6+vp7i4mNLSUqqqqmjHxKN0E2ZGRkYGeXl5FBYWEgjo72oiIiJdVf+wAG9HSXIetKIALwk55540sxnAD4ELgExgNXAdcEdbljE65941syOBm4HT8E6q3AD8FLgl1lLLdvZ/IY1PDj0t7PV64MkY9Vp7uMoCvPx3U4Ej8ILCUmAx8Chwj3OuuoU2OkR9fT2bNm2ivLw8Ht1JF+eco7KyksrKSsrKyhg6dKiCPBERkS6qX6+M0OudCvAknpxzc/Fmp1pz7xygySOAnHNLgYs6q3///hFtaT+s3tGtvG8x8OX29NHRiouLKS8vJzU1lQEDBpCTk6Nf6Huw+vp6ysrK2L59O+Xl5RQXF1NUVNRyRREREYm7/nnhM3jJuURTv3WKdLDSUu+QzgEDBpCXl6fgrocLBALk5eUxYMAAoOHnQ0RERLqe7rBEU795inSwqirvrz05OTkJHol0JcGfh+DPh4iIiHQ94Us0dyTpISsK8EQ6WHALombuJFwwUaoO3BEREem6wpdo7tIMnoiINCUY4ImIiEjXFXHISmkV9fXJ94dZBXgiIiIiIiJAZloK+VlpANTWO4rL43IIe4dSgCciIiIiIuLrH74PLwmXaSrAE5Euwcw46aSTEj0MERER6eHCT9LcmYSpEhTgiUinMTPtPRMREZGk0i8vuVMlKNG5iHQJy5YtIzs7O9HDEBERkR4ucolm8s3gKcATkS5hwoQJiR6CiIiISGSy89Lkm8HTEk0R6RJi7cH7yU9+gpkxZ84cZs+ezVFHHUV2djaFhYVcfPHFbNmyJWZbxcXFfP/732fixIlkZWWRn5/PrFmzePHFFxvdu3//fn7zm98wc+ZMhgwZQnp6On379uWcc85h3rx5zY51+/btXH755QwePJiUlBQeeOCBg/0yiIiISIKFz+Dt1BJNEZGOd9ddd/H0009zzjnnMGPGDN59910eeeQRFi1axIcffkhGRsM/xBs2bOCkk05i/fr1nHjiiZxxxhmUlZXxn//8hzPOOIN77rmHK664InT/smXL+OEPf8j06dM588wz6d27Nxs3buTpp5/m+eef55lnnuGMM85oNKbi4mKOOeYYcnNzOf/88wkEAvTv3z8uXw8RERHpPP3CD1kp1RJNEZEO98ILL/D+++8zefLk0LVLLrmEf/3rXzz11FN85jOfCV2/9NJL2bBhA//617+4+OKLQ9f37dvHSSedxDXXXMM555wTCsYmTpzI1q1bKSoqiuhz8+bNHHXUUVx77bUxA7zFixfzxS9+kfvuu4/UVP1TKiIi0l1ELNHUDJ6ItGTE/z6b6CG02vpbzkz0EAC45pprIoI7gCuuuIJ//etfvPfee6EAb9GiRbz++utceOGFEcEdQEFBATfffDPnnXcejz/+OF//+tcByM/Pj9nnkCFDuPDCC7nzzjvZuHEjw4YNiyhPT0/n1ltvVXAnIiLSzfTNbVgZtKu0irp6R0ogeU4F128mItLlTZs2rdG1oUOHArB3797QteCeuf379/OTn/ykUZ1du3YB3rLMcHPnzuX3v/898+bNY+fOnVRXV0eUb9mypVGAN2LECPr169f2DyMiIiJdWnpqgMKcdIrLqql3sOdAVcSyza5OAZ6IdHkFBQWNrgVnzurq6kLX9uzZA8BLL73ESy+91GR7Bw4cCL3+97//zYUXXkhmZiannnoqo0ePJicnh0AgwJw5c3j99depqmq8/n7AgAHt/TgiIiLSxfXLy6C4zPuD744SBXgi0oyusuyxOwout/z973/PNddc06o6N954I+np6cyfP5+JEydGlH31q1/l9ddfj1lPCdxFRES6r/69Mlm+vRTw9uFNJvaWjq5IaRJEpNs45phjAHjzzTdbXWf16tVMmjSpUXBXX1/PW2+91aHjExERkeQQkew8yXLhKcATkW5j2rRpnHjiiTzxxBPcd999Me9ZvHgxO3fuDL0fMWIEq1atYuvWraFrzjl+8pOfsHTp0k4fs4iIiHQ9kSdpJleqBC3RFJFO9+Uvf7nJsrvuuovs7OwO6+uf//wnM2fO5H/+53+44447OProoykoKGDz5s189NFHLFmyhHnz5oUOSLn22mu56qqrOOKII7jgggtIS0tj7ty5LF26lLPPPptnnnmmw8YmIiIiySEiF16SpUpQgCcine7BBx9ssuz222/v0ABvyJAhLFiwgDvvvJPHH3+chx56iLq6OgYMGMCkSZP45je/GZFy4atf/SoZGRncfvvtPPjgg2RlZXHiiSdy//338/jjjyvAExER6YH65TUs0Uy2ZOfmnEv0GESSgpktmDJlypQFCxY0e1/wCP7oPV0i+tkQERFJDgs37uX8u94GYPLgfJ755glx7X/q1KksXLhwoXNualvrag+eiIiIiIhImMgZvORaoqkAT0REREREJExRbkOAt/tANXX1ybPqUXvwREREREREwmSmpfCtWWPJz0qjX68MvG1tyZEDVwGeiIiIiIhIlGtPHZfoIbSLlmiKiIiIiIh0EwrwREREREREugkFeCIicaCUNCIiIhIPCvBEOpiZtwG3vr4+wSORriQY4AV/PkREREQ6gwI8kQ6WkeEdq1tWVpbgkUhXEvx5CP58iIiIiHQGBXgiHSwvLw+A7du3U1paSn19vZbn9VDOOerr6yktLWX79u1Aw8+HiIiISGdQmgSRDlZYWEhZWRnl5eVs3rw50cORLiQ7O5vCwsJED0NERES6MQV4Ih0sEAgwdOhQiouLKS0tpaqqSjN4PZiZkZGRQV5eHoWFhQQCWjghIiIinUcBnkgnCAQCFBUVUVRUlOihiIiIiEgPoj8li4iIiIiIdBMK8ERERERERLoJBXgiIiIiIiLdhAI8ERERERGRbkIBnoiIiIiISDehAE9ERERERKSbUIAnIiIiIiLSTZgSMIu0jpntycrKKpw4cWKihyIiIiIi3diyZcuoqKgods71aWtdBXgirWRm64BewPqwywGgP7ADqI9RrbnyWGVN3T/Bf17e7g/QMVr6vPFsry11W3Nve7+Xbb2u7+XB1e0q38uu8n2Envu9bE+ZvpcdX6+19+p7mZj2usq/r82VdeXvZUd/H9vS5gigxDk3ss09OOf00EOPdj6AQYADBrW1PFZZU/cDC4AFXf3zxrO9ttRtzb3t/V6247q+l93ge9lVvo89+XvZnjJ9LxPzfdT3svt8L9v772uyfi87+vvYWW1GP7QHT0REREREpJtQgCciIiIiItJNKMATOTilwM3+c1vLY5W11F6idfT4Dqa9ttRtzb3t/V629XpXoe+lvped0V48v5ftKdP3suPrtfZefS8T015X+fe1ubKu/L3sjLF1+ufVISsiScDMFgA456YmeixycPS97B70few+9L3sPvS97D70vTw4msETERERERHpJjSDJyIiIiIi0k1oBk9ERERERKSbUIAnIiIiIiLSTSjAExERERER6SYU4ImIiIiIiHQTCvBERERERES6CQV4IiIiIiIi3YQCPJEexsy+b2bOzP6Q6LFI25nZ1Wb2kZmV+I95ZnZmosclbef/t/i+/33cZWbPmNmhiR6XtJ2ZTTezp81si//v65cTPSZpnpl93czWmVmlmS0wsxMTPSZpO/23F5sCPJEexMyO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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "image/png": { + "height": 275, + "width": 444 + }, + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "#newtonian vs synch gauge\n", + "plt.plot(k,pL0/pCAMB - 1, label=\"Linear\")\n", + "plt.xscale('log')\n", + "plt.ylabel(r'$\\frac{P_{\\rm{CLASS}}}{P_{\\rm{CAMB}}} - 1$',fontsize=20)\n", + "plt.xlabel(r'$k \\ h/\\rm{Mpc} $',fontsize=20)\n", + "plt.axhline(0,ls=':',c='k')\n", + "plt.legend()" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "b005ba9e", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "image/png": { + "height": 275, + "width": 431 + }, + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "#newtonian vs synch gauge\n", + "plt.plot(k,pNL0/pCAMB_NL - 1, label=\"NL DM\")\n", + "plt.xscale('log')\n", + "plt.ylabel(r'$\\frac{P_{\\rm{CLASS}}}{P_{\\rm{CAMB}}} - 1$',fontsize=20)\n", + "plt.xlabel(r'$k \\ h/\\rm{Mpc} $',fontsize=20)\n", + "plt.axhline(0,ls=':',c='k')\n", + "plt.legend()" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "fd9e8f36", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA1EAAAInCAYAAAB5idPCAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAABYlAAAWJQFJUiTwAABBv0lEQVR4nO3dd7hcVb3/8fc3hZCEUEIV6T1WpEiJSrsiKCIqXMsVLyBN8AKKVxQVghWvBWxosAAiRbGhVwV+igEBawCFSy+hCKgQwBQSSr6/P/Y+MGdyyuxTpp3363nmmZm91177O9nnED5Za9aOzESSJEmS1JhxrS5AkiRJkjqJIUqSJEmSKjBESZIkSVIFhihJkiRJqsAQJUmSJEkVGKIkSZIkqQJDlCRJkiRVYIiSJEmSpAoMUZIkSZJUgSFKkiRJkiowREmSJElSBYYoSZIkSapgQqsLkOpFxN3AysC8FpciSZKk7rUR8K/M3LjqgYYotaOVJ0+ePH3GjBnTW12IJEmSutPNN9/ME088MaRjDVFqR/NmzJgxfe7cua2uQ5IkSV1q22235dprr503lGP9TpQkSZIkVWCIkiRJkqQKDFGSJEmSVIEhSpIkSZIqMERJkiRJUgWGKEmSJEmqwBAlSZIkSRV4nyhJkiR1hWXLljF//nwWLFjA0qVLycxWl6QmiQgmTZrEtGnTmD59OuPGje5YkSFKkiRJHW/ZsmXcd999LF68uNWlqAUykyVLlrBkyRIWLVrE+uuvP6pByhAlSZKkjjd//nwWL17MhAkTWGeddZg6deqoj0aofSxbtoxFixbx0EMPsXjxYubPn88aa6wxaufzJ0uSJEkdb8GCBQCss846TJs2zQA1xowbN45p06axzjrrAM/9PIza+Ua1d0mSJKkJli5dCsDUqVNbXIlaqef69/w8jBZDlCRJkjpezyISjkCNbREBMOqLivhTJkmSJKkr9ISo0WaIkiRJkqQKDFGSJEmSVIEhSpIkSZIqMERJkiRJXSQiiAg23HBDlixZ0mebjTbaiIjg6aef7vPY4Zg1axYRwaxZs/ptc/bZZxMRHHTQQcM6V6sYoiRJkqQudO+993L66ae3uoyuZIiSJEmSusxqq63G9OnTOfXUU3n44YdbXU7XMURJkiRJXWbKlCl89KMf5fHHH+eUU05pdTkN+dCHPkREcM455/S5f+7cuUQE++yzT5MrW54hSpIkSepCRx99NJtuuimzZ8/m9ttvb3U5gzriiCMYN24cZ555Zp/7Z8+eDcCRRx7ZzLL6NKHVBUiSJEkaeRMnTuTUU0/lgAMO4IQTTuBHP/pRU88/Z86cfheXuP7665fbttFGG7H33nvz85//nBtvvJEXvehFz+5bsGABF1xwAeuvvz577733KFXcOEOUJEmSut5GH/x5q0to2LxTXzdife2///7stNNO/PjHP+aqq67iFa94xYj1PZgrrriCK664otIx7373u/n5z3/O7Nmz+fKXv/zs9vPPP5+FCxfy3//934wfP36kS63M6XySJElSF/v85z8PwPvf//6mnvfkk08mM/t8nHXWWX0es/fee7Pxxhtz7rnnsnjx4me3n3nmmUyYMIFDDz20WeUPyBAlSZIkdbGddtqJ/fffnz/84Q9873vfa3U5Axo3bhxHHHEEjz/++LO1zp07l2uvvZZ99tmHddddt8UVFpzOJ0mSpK43klPkOtGnP/1pLr74Yj70oQ/xxje+sdXlDOiQQw7h5JNPZvbs2Rx88MHPLihxxBFHtLiy5zgSJUmSJHW5zTbbjKOOOoq7776713eN2tGaa6757MjZ1VdfzQUXXMDGG2/Mnnvu2erSnmWIkiRJksaAk046iVVXXZVPfvKTLFy4sNXlDOjd7343AG95y1tYuHAhhx12GOPGtU90cTqfJEmSNAZMnz6dE088kQ984AODtj3ooIP63XfGGWcwZcqUEaxseTNnzuSlL30pf/nLX5g4cSKHHHLIqJ6vKkOUJEmSNEYcc8wxnHHGGcybN2/Aduecc06/+04//fRRD1EABx98MMcddxxveMMbWHvttUf9fFUYoiRJkqQukpn97ps0aRJ33333kI5t1KxZs/q9yW6Pgw46aMDRLoDrrrsOgCOPPHLYNY209plYKEmSJEnAfffdx4UXXsiMGTPYfffdW13OchyJkiRJktQWzj//fG677TYuvPBCli5dysc//nEiotVlLccQJUmSJKktnHnmmVx55ZWsv/76nHbaabz5zW9udUl9MkRJkiRJagtz5sxpdQkN8TtRkiRJklSBIUqSJEmSKjBESZIkSeoKI7FEeyMMUZIkSep4PSu4LVu2rMWVqJV6QtRor+hniJIkSVLHmzRpEgCLFi1qcSVqpZ7r3/PzMFoMUZIkSep4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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "image/png": { + "height": 275, + "width": 424 + }, + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "## newtonian vs synch gauge\n", + "plt.plot(k,np.array(pNL_hy0)/np.array(pNL0) - 1, label=\"NL Hy\")\n", + "plt.xscale('log')\n", + "plt.ylabel(r'$\\frac{P_{\\rm{CLASS}}}{P_{\\rm{CAMB}}} - 1$',fontsize=20)\n", + "plt.xlabel(r'$k \\ h/\\rm{Mpc} $',fontsize=20)\n", + "plt.axhline(0,ls=':',c='k')\n", + "plt.legend()" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "948fff24", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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vYWSZUuQlAcGDx7Mf/3Xf7Ft2zauvPLKtMPpkk996lOEEPjpT3/a7vYFCxYQQuDss8/OcWSSJPW/m/65nEtvfrw5ARo1ZADfedsR/PnDJ3LB8TM4aNJwpowczIGThvGWY6Zxw78dy60fOpGjZ4xsPscjy7fy+mse5IUNO9J6GyXLJEjKEx/84AeZNWsW1157LYsXL047nE69733vo6ysjOuuu67d7ddeey0A73//+3MZliRJ/e62p9fymd8/2bw8b0I1f/7wiZx96KR9jtU9ZMpwfvne4/mPs/anabflm3fx5useYunGnf0dtrLYHU7KE5WVlXz5y1/m/PPP55Of/CS/+93vcnr9e+65p8PiCI899thL1s2YMYNXvepV/PnPf+app57i4IMPbt5WU1PDTTfdxNSpU3nVq17VTxFLkpR7z6+v4aO/fIymHnCHTB7OjRcfy7CBlV06vrwscMmps5k9digf/uWj7KlrZEPNXt7+w39w8/uPt3pcjpgEKS/N+M8/px1Cly398mv67FznnXcexx9/PL///e+5//77OfHEE/vs3J259957uffee7t1zAc+8AH+/Oc/c+211/Ltb3+7ef0vfvELduzYwSc+8QnKy8v7OlRJklKxu7aBD974KLvrGgCYPnowP7nw6C4nQNnOOGgCP7voWC748T/YU9fIqq27uej6f/G7S17G4AF+RO9vdoeT8szXv/51AC677LKcXvfyyy8nxtju4yc/+Um7x7zqVa9i5syZ3HDDDezatat5/XXXXUdFRQXvec97chW+JEn97qu3LWLRuqS8dVVFGd9/x3zG9KKowTEzR3HtO4+isjzpG/fs2ho+cfMTxBg7OVK9ZRIk5Znjjz+e8847j3/84x/86le/SjucfSorK+N973sf27Zta451wYIFPPLII5x99tlMmjQp5QglSeobT67cxvUPvti8fMU5B3HAxGG9Pu8pc8fy+de1dCn/85Nr+NH9L+7jCPUF29qUl/qyi1kh+tKXvsQtt9zCpz71KV7/+tenHc4+XXTRRVx++eVce+21XHjhhc0FEd73vvelHJkkSX2jvqGR//zdE83jgE6aM4a3HD21z87/lmOm8fTq7dzw0DIA/uevizhxzhjmTeh9kqX22RIk5aHZs2dzySWX8OKLL7Yaa5OPxo4d29xy9cADD3DTTTcxc+ZMzjjjjLRD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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "image/png": { + "height": 276, + "width": 416 + }, + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "## newtonian vs synch gauge\n", + "plt.plot(k,pNL_hy0/pCAMB_NL_Hy - 1, label=\"NL Hy\")\n", + "plt.xscale('log')\n", + "plt.ylabel(r'$\\frac{P_{\\rm{CLASS}}}{P_{\\rm{CAMB}}} - 1$',fontsize=20)\n", + "plt.xlabel(r'$k \\ h/\\rm{Mpc} $',fontsize=20)\n", + "plt.axhline(0,ls=':',c='k')\n", + "plt.legend()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1514940d", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "bf36ec47", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.7" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/class/notebooks/.ipynb_checkpoints/cambvsclass-v2-checkpoint.ipynb b/class/notebooks/.ipynb_checkpoints/cambvsclass-v2-checkpoint.ipynb new file mode 100644 index 00000000..6991cb2c --- /dev/null +++ b/class/notebooks/.ipynb_checkpoints/cambvsclass-v2-checkpoint.ipynb @@ -0,0 +1,1272 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "id": "f42fe0e6", + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "import camb\n", + "\n", + "from scipy.interpolate import interp1d\n", + "from classy import Class\n", + "from multiprocessing.pool import Pool\n", + "\n", + "%matplotlib inline\n", + "%matplotlib inline\n", + "%config InlineBackend.figure_format = 'retina'\n", + "plt.rcParams.update({'axes.labelsize' : 20})\n", + "plt.rcParams.update({'axes.grid' : False})\n", + "import seaborn as sns\n", + "sns.color_palette(\"colorblind\")\n", + "plt.style.use(\"MNRAS_Style\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f5a8a3bd", + "metadata": {}, + "outputs": [], + "source": [ + "class_ref = {\n", + " #'recombination': 'RECFAST',\n", + " #'tol_ncdm_bg':1.e-10,\n", + " # 'recfast_Nz0':100000,\n", + " #'tol_thermo_integration':1.e-5,\n", + " #'recfast_x_He0_trigger_delta':0.01,\n", + " #'recfast_x_H0_trigger_delta':0.01,\n", + " #'evolver':0,\n", + " #'k_min_tau0':0.002,\n", + " #'k_max_tau0_over_l_max':3.,\n", + " #'k_step_sub':0.015,\n", + " #'k_step_super':0.0001,\n", + " #'k_step_super_reduction':0.1,\n", + " #'start_small_k_at_tau_c_over_tau_h':0.0004,\n", + " #'start_large_k_at_tau_h_over_tau_k':0.05,\n", + " #'tight_coupling_trigger_tau_c_over_tau_h':0.005,\n", + " #'tight_coupling_trigger_tau_c_over_tau_k':0.008,\n", + " #'start_sources_at_tau_c_over_tau_h':0.006,\n", + " #'l_max_g':50,\n", + " #'l_max_pol_g':25,\n", + " #'l_max_ur':50,\n", + " #'l_max_ncdm':50,\n", + " #'tol_perturbations_integration':1.e-6,\n", + " #'perturbations_sampling_stepsize':0.01,\n", + " #'l_logstep':1.026,\n", + " #'l_linstep':25,\n", + " #'hyper_sampling_flat':12.,\n", + " #'hyper_sampling_curved_low_nu':10.,\n", + " #'hyper_sampling_curved_high_nu':10.,\n", + " #'hyper_nu_sampling_step':10.,\n", + " #'hyper_phi_min_abs':1.e-10,\n", + " #'hyper_x_tol':1.e-4,\n", + " #'hyper_flat_approximation_nu':1.e6,\n", + " #'q_linstep':0.20,\n", + " #'q_logstep_spline':20.,\n", + " #'q_logstep_trapzd':0.5,\n", + " #'q_numstep_transition':250,\n", + " #'transfer_neglect_delta_k_S_t0':100.,\n", + " #'transfer_neglect_delta_k_S_t1':100.,\n", + " #'transfer_neglect_delta_k_S_t2':100.,\n", + " #'transfer_neglect_delta_k_S_e':100.,\n", + " #'transfer_neglect_delta_k_V_t1':100.,\n", + " #'transfer_neglect_delta_k_V_t2':100.,\n", + " #'transfer_neglect_delta_k_V_e':100.,\n", + " #'transfer_neglect_delta_k_V_b':100.,\n", + " #'transfer_neglect_delta_k_T_t2':100.,\n", + " #'transfer_neglect_delta_k_T_e':100.,\n", + " #'transfer_neglect_delta_k_T_b':100.,\n", + " #'neglect_CMB_sources_below_visibility':1.e-30,\n", + " #'transfer_neglect_late_source':3000.,\n", + " #'halofit_k_per_decade':3000.,\n", + " #'l_switch_limber':40.,\n", + " #'accurate_lensing':0,\n", + " #'num_mu_minus_lmax':1000.,\n", + " #'delta_l_max':1000.,\n", + "# 'nonlinear_verbose' : 2\n", + "\n", + "}\n", + "\n", + "# additional precision parameters for neutrinos only\n", + "class_ref_nu = {\n", + " #'radiation_streaming_approximation':2,\n", + " #'radiation_streaming_trigger_tau_over_tau_k':240.,\n", + " #'radiation_streaming_trigger_tau_c_over_tau':100.,\n", + " #'ur_fluid_approximation':2,\n", + " #'ur_fluid_trigger_tau_over_tau_k':50.,\n", + " #'ncdm_fluid_approximation':3,\n", + " #'ncdm_fluid_trigger_tau_over_tau_k':51.,\n", + " #'tol_ncdm_synchronous':1.e-10,\n", + " #'tol_ncdm_newtonian':1.e-10,\n", + "}" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "28f881e4", + "metadata": {}, + "outputs": [], + "source": [ + "# Parameter ranges\n", + "Omega_c_min, Omega_c_max = 0.2, 0.4\n", + "Omega_b_min, Omega_b_max = 0.035, 0.065\n", + "Omega_k_min, Omega_k_max = -0.0001, 0.0001\n", + "h_min, h_max = 0.65, 0.75\n", + "ns_min, ns_max = 0.9, 1.0\n", + "logAs_min, logAs_max = np.log10(5E-10), np.log10(5E-9)\n", + "w0_min, w0_max = -1.3, -0.7\n", + "wa_min, wa_max = -1.73, 1.28\n", + "m_nu_min, m_nu_max = 0., 0.6\n", + "zs = [0.0, 0.5, 1.0]#1.008916e+00]\n", + "zs = np.array(zs)\n", + "nuFlag=True\n", + "k = np.logspace(-3,np.log10(20),2000)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "3572f79c", + "metadata": {}, + "outputs": [], + "source": [ + "def run_camb(cosmo_dict,k,z,nu=False, darkmatter=True, mead='mead2020'):\n", + " camb.camb.set_feedback_level(level=0)\n", + " cosmo_dict['Omcdm'] = cosmo_dict['Omcb']-cosmo_dict['Omb']\n", + " nonlinear = camb.nonlinear.Halofit()\n", + " if darkmatter:\n", + " nonlinear.set_params(halofit_version=mead)#, HMCode_logT_AGN=-20,)\n", + " else:\n", + " nonlinear.set_params(halofit_version=mead+'_feedback',HMCode_logT_AGN=cosmo_dict['TAGN'])#, HMCode_logT_AGN=-20,)\n", + " pars = camb.CAMBparams(NonLinearModel =nonlinear)\n", + " pars.set_cosmology(H0=cosmo_dict['h']*100,\n", + " ombh2=cosmo_dict['Omb']*cosmo_dict['h']**2,\n", + " omch2=cosmo_dict['Omcdm']*cosmo_dict['h']**2,\n", + " mnu=cosmo_dict['smnu'] if nuFlag else 0., \n", + " num_massive_neutrinos=1 if nuFlag else 0,\n", + " YHe=cosmo_dict['Y_p'],\n", + " omk=0, tau=0.06) #fixed parameters, Planck neutrinos\n", + " #pars.set_accuracy(AccuracyBoost=3.0, lAccuracyBoost=3.0, DoLateRadTruncation=False)\n", + " pars.InitPower.set_params(ns=cosmo_dict['ns'],\n", + " As=cosmo_dict['As'])\n", + "\n", + " pars.set_matter_power(redshifts=zs,kmax=50/cosmo_dict['h'])#, kmax=kmax/h) \n", + " pars.share_delta_neff = True \n", + "\n", + " results = camb.get_results(pars)\n", + " camb_interp = camb.get_matter_power_interpolator(pars,nonlinear=False,kmax=50/cosmo_dict['h'])\n", + " pinterp = camb_interp.P #defaults #takes (z,k) pairs\n", + " camb_interp = camb.get_matter_power_interpolator(pars,nonlinear=True,kmax=50/cosmo_dict['h'])\n", + " pinterp_nonlinear = camb_interp.P #defaults #takes (z,k) pairs\n", + "\n", + " return pinterp(z,k), pinterp_nonlinear(z,k), results\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "25528d17", + "metadata": {}, + "outputs": [], + "source": [ + "#should really just make a private toolbox with these functions somewhere...\n", + "import copy\n", + "def run_class(cosmo_dict_in,k,z,nu=False,pk=False,gauge='synchronous',darkmatter=True, mead=\"HMcode2020\"):\n", + " cosmo_dict=copy.deepcopy(cosmo_dict_in)\n", + " '''Simple call to boltzmann code using input cosmology parameter vector. k in h/Mpc.'''\n", + " #setup\n", + " if('h' not in cosmo_dict.keys()):\n", + " h = cosmo_dict['H0']/100.\n", + " elif('H0' not in cosmo_dict.keys()):\n", + " cosmo_dict['H0'] = cosmo_dict['h']*100.\n", + " h = cosmo_dict['h']\n", + " if('Omcdm' not in cosmo_dict.keys()):\n", + " cosmo_dict['Omcdm'] = cosmo_dict['Omcb']-cosmo_dict['Omb']\n", + " # cosmo_dict['Omcdm'] = cosmo_dict['Omm']-cosmo_dict['Omb']\n", + " c,G = 2.99792e5,4.30071e-9 \n", + " cosmo_dict['non linear']=mead\n", + " if darkmatter:\n", + " None\n", + " else:\n", + " cosmo_dict['hmcode2020log10tagn']=cosmo_dict['TAGN']\n", + "\n", + "\n", + " h=cosmo_dict['h']\n", + " if(nu): \n", + " #use Planck single massive neutrino if using neutrinos\n", + " N_ncdm=1\n", + " m_ncdm=cosmo_dict['smnu']\n", + " else:\n", + " N_ncdm=0\n", + " m_ncdm=0 \n", + " if N_ncdm!=0:\n", + " N_ur=2.0308\n", + " else:\n", + " N_ur=3.0440#3.046-N_ncdm\n", + " # N_ur = 3.046\n", + " #print(\"Nur: {0:.3f}, Nncdm: {1:.3f}, mncdm: {2:.3f}\".format(N_ur,N_ncdm,m_ncdm))\n", + " \n", + " ceng = Class()\n", + " #gross but don't want to look up how to do it right now\n", + " if(nuFlag): \n", + " ceng.set({'h':h,\n", + " 'omega_b':cosmo_dict['Omb']*h**2,\n", + " 'omega_cdm':cosmo_dict['Omcdm']*h**2,\n", + " #'omega_r':cosmo_dict['Omr']*h**2,\n", + " 'n_s':cosmo_dict['ns'],\n", + " 'A_s':cosmo_dict['As'],\n", + " 'gauge':gauge,\n", + " #'N_ur': N_ur,\n", + " 'N_eff': 3.046,\n", + " 'N_ncdm': N_ncdm,\n", + " 'T_ncdm': 0.7133, # IMPORTANT, see page 11 of arxiv:1104.2935\n", + " 'm_ncdm': m_ncdm,\n", + " 'YHe': cosmo_dict['Y_p'],\n", + " 'ncdm_fluid_approximation':3,\n", + " 'z_reio': 7.6711,\n", + " 'non linear':cosmo_dict['non linear'],\n", + " 'z_max_pk':1.1,\n", + " 'Omega_k' : 0.\n", + " })\n", + " if not darkmatter:\n", + " ceng.set({'hmcode2020log10tagn':cosmo_dict['hmcode2020log10tagn']})\n", + " else: \n", + " ceng.set({'h':h,\n", + " 'omega_b':cosmo_dict['Omb']*h**2,\n", + " 'omega_cdm':cosmo_dict['Omcdm']*h**2,\n", + " #'omega_r':cosmo_dict['Omr']*h**2,\n", + " 'n_s':cosmo_dict['ns'],\n", + " 'A_s':cosmo_dict['As'],\n", + " 'gauge':gauge,\n", + " 'N_ur': N_ur,\n", + "# 'N_ncdm': N_ncdm,\n", + "# 'm_ncdm': m_ncdm,\n", + " 'YHe': cosmo_dict['Y_p'],\n", + " 'ncdm_fluid_approximation':3,\n", + " 'z_reio': 7.6711, \n", + " 'non linear':cosmo_dict['non linear'],\n", + " 'z_max_pk':1.1,\n", + " 'Omega_k' : 0.\n", + " })\n", + " if not darkmatter:\n", + " ceng.set({'hmcode2020log10tagn':cosmo_dict['hmcode2020log10tagn']})\n", + " #print(m_ncdm)\n", + " #print(ceng.pars)\n", + " #need lower z_max ow issues long complaint, need z3.900000e-02):\n", + " continue\n", + " bolt_names = ['h','Omb','Omcb','ns','Y_p','Neff','smnu','As', 'TAGN']\n", + " \n", + " bolt_cosmo = [h,Omega_b,Omega_c+Omega_b,ns,0.24,3.046,m_nu,10**logAs, TAGN] #this is the choice of Planck TTTEEE in class for nu\n", + " cosmo_dict = dict(zip(bolt_names,bolt_cosmo))\n", + " cosmoall.append(cosmo_dict)\n", + " pool = Pool(24)\n", + " resultall = pool.map(get_result, cosmoall)\n", + " for result in resultall:\n", + " #if result==None:\n", + " # continue\n", + " linearratio.append(result[0])\n", + " HM2020DM.append(result[1])\n", + " HM2020TAGN.append(result[2])\n", + " HM2016.append(result[3])\n", + " HMhalofit.append(result[4])\n", + " cosmorecord.append(result[5])\n", + "\n", + " allresult[z]=[linearratio, HM2020DM,HM2020TAGN,HM2016,HMhalofit,cosmoall,cosmorecord]\n", + " pool.close()" + ] + }, + { + "cell_type": "code", + "execution_count": 152, + "id": "9b8f3214", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[[None, array([0.00060065, 0.00060029, 0.00059992, ..., 0.00084337, 0.00083599,\n", + " 0.00082857]), array([ 3.17738694e-05, 3.15269344e-05, 3.12730922e-05, ...,\n", + " -2.68533123e-03, -2.69309917e-03, -2.70089583e-03]), array([0.00047656, 0.00047629, 0.00047601, ..., 0.00026536, 0.00026178,\n", + " 0.00025814]), None],\n", + " [None, array([0.00060067, 0.00060031, 0.00059994, ..., 0.00989851, 0.00992076,\n", + " 0.00994308]), array([ 3.17566592e-05, 3.15074309e-05, 3.12518099e-05, ...,\n", + " -2.80735722e-04, -2.79650082e-04, -2.78474407e-04]), array([0.00047659, 0.00047631, 0.00047603, ..., 0.02071364, 0.02076004,\n", + " 0.02080653]), None],\n", + " [None, array([0.00060067, 0.00060031, 0.00059994, ..., 0.00946556, 0.00948862,\n", + " 0.00951172]), array([ 3.17566610e-05, 3.15074328e-05, 3.12518118e-05, ...,\n", + " -3.52227926e-04, -3.44840364e-04, -3.37867554e-04]), array([0.00047659, 0.00047631, 0.00047603, ..., 0.0152945 , 0.01525442,\n", + " 0.01521432]), None],\n", + " [None, array([0.00060075, 0.00060039, 0.00060002, ..., 0.01000496, 0.01002671,\n", + " 0.01004852]), array([ 3.18004449e-05, 3.15536063e-05, 3.12998346e-05, ...,\n", + " -1.08256158e-04, -1.06815399e-04, -1.05296005e-04]), array([0.00047649, 0.00047621, 0.00047593, ..., 0.02025996, 0.02030467,\n", + " 0.02034935]), None],\n", + " [None, array([ 0.00016352, 0.00016101, 0.00015847, ..., -0.06615033,\n", + " -0.06615036, -0.06615039]), array([-0.00069529, -0.00069914, -0.00070301, ..., -0.00551531,\n", + " -0.00551545, -0.00551559]), array([-0.0010111 , -0.00101878, -0.00102649, ..., -0.05784729,\n", + " -0.05784564, -0.05784399]), None],\n", + " [{'h': 0.7358597919911383,\n", + " 'Omb': 0.04816635319256157,\n", + " 'Omcb': 0.4029575629037543,\n", + " 'ns': 0.9697368029059363,\n", + " 'Y_p': 0.24,\n", + " 'Neff': 3.046,\n", + " 'smnu': 0.5853734109820535,\n", + " 'As': 6.210797252672101e-10,\n", + " 'TAGN': 8.2},\n", + " {'h': 0.6628113632675546,\n", + " 'Omb': 0.05858192915830862,\n", + " 'Omcb': 0.4108098695563792,\n", + " 'ns': 0.9450385937895567,\n", + " 'Y_p': 0.24,\n", + " 'Neff': 3.046,\n", + " 'smnu': 0.5560589933091611,\n", + " 'As': 1.1742701698247465e-09,\n", + " 'TAGN': 8.2},\n", + " {'h': 0.6943414198827331,\n", + " 'Omb': 0.059682848398124905,\n", + " 'Omcb': 0.38845587241425783,\n", + " 'ns': 0.9227238721784777,\n", + " 'Y_p': 0.24,\n", + " 'Neff': 3.046,\n", + " 'smnu': 0.038290353662505196,\n", + " 'As': 1.7928947328346282e-09,\n", + " 'TAGN': 8.2},\n", + " {'h': 0.7258087740085374,\n", + " 'Omb': 0.05394993197366195,\n", + " 'Omcb': 0.4194761663721784,\n", + " 'ns': 0.9354525968129869,\n", + " 'Y_p': 0.24,\n", + " 'Neff': 3.046,\n", + " 'smnu': 0.5358726727933186,\n", + " 'As': 4.673777448553246e-09,\n", + " 'TAGN': 8.2},\n", + " {'h': 0.6966721003727034,\n", + " 'Omb': 0.04083916123555903,\n", + " 'Omcb': 0.3965158606503114,\n", + " 'ns': 0.9043803765787229,\n", + " 'Y_p': 0.24,\n", + " 'Neff': 3.046,\n", + " 'smnu': 0.40982937194547275,\n", + " 'As': 7.132790960358971e-10,\n", + " 'TAGN': 8.2}],\n", + " [None,\n", + " {'h': 0.6628113632675546,\n", + " 'Omb': 0.05858192915830862,\n", + " 'Omcb': 0.4108098695563792,\n", + " 'ns': 0.9450385937895567,\n", + " 'Y_p': 0.24,\n", + " 'Neff': 3.046,\n", + " 'smnu': 0.5560589933091611,\n", + " 'As': 1.1742701698247465e-09,\n", + " 'TAGN': 8.2,\n", + " 'Omcdm': 0.3522279403980706},\n", + " {'h': 0.6943414198827331,\n", + " 'Omb': 0.059682848398124905,\n", + " 'Omcb': 0.38845587241425783,\n", + " 'ns': 0.9227238721784777,\n", + " 'Y_p': 0.24,\n", + " 'Neff': 3.046,\n", + " 'smnu': 0.038290353662505196,\n", + " 'As': 1.7928947328346282e-09,\n", + " 'TAGN': 8.2,\n", + " 'Omcdm': 0.32877302401613295},\n", + " {'h': 0.7258087740085374,\n", + " 'Omb': 0.05394993197366195,\n", + " 'Omcb': 0.4194761663721784,\n", + " 'ns': 0.9354525968129869,\n", + " 'Y_p': 0.24,\n", + " 'Neff': 3.046,\n", + " 'smnu': 0.5358726727933186,\n", + " 'As': 4.673777448553246e-09,\n", + " 'TAGN': 8.2,\n", + " 'Omcdm': 0.36552623439851645},\n", + " None]]" + ] + }, + "execution_count": 152, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "allresult[0.0]" + ] + }, + { + "cell_type": "code", + "execution_count": 144, + "id": "a6dbd1e8", + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "#import pickle\n", + "#with open(\"/oak/stanford/orgs/kipac/users/chto/lighthouse/analysis/dataanalysis/desy3/datav/cambvsclass.pkl\", 'wb') as f:\n", + "# pickle.dump(allresult, f)" + ] + }, + { + "cell_type": "code", + "execution_count": 145, + "id": "c25e7f39", + "metadata": {}, + "outputs": [], + "source": [ + "from matplotlib.colors import Normalize\n", + "\n", + "norm = Normalize(vmin=0, vmax=0.6, clip=False)\n", + "cmap = plt.get_cmap('rainbow')\n" + ] + }, + { + "cell_type": "code", + "execution_count": 146, + "id": "ff1446a3", + "metadata": {}, + "outputs": [ + { + "ename": "ValueError", + "evalue": "too many values to unpack (expected 6)", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0minum\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mj\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m3\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 5\u001b[0;31m \u001b[0mlinearratio\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mHM2020DM\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mHM2020TAGN\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mHM2016\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mHalofit\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mcosmo\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mallresult\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mzs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mj\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 6\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mi\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlinearratio\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mValueError\u001b[0m: too many values to unpack (expected 6)" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "image/png": { + "height": 583, + "width": 1063 + }, + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "#newtonian vs synch gauge\n", + "fig, axes = plt.subplots(3,5,figsize=(18,10),sharey=True, sharex=True)\n", + "inum=0\n", + "for j in range(3):\n", + " linearratio, HM2020DM,HM2020TAGN,HM2016,Halofit,cosmo = allresult[zs[j]]\n", + " for i in range(len(linearratio)):\n", + "\n", + " try:\n", + " if linearratio[i]==None:\n", + " continue\n", + " except:\n", + " None\n", + " if cosmo[i]['smnu']>0.6:\n", + " continue\n", + " inum+=1\n", + " l1 = linearratio[i]\n", + " H2020 = HM2020DM[i]\n", + " HTagn = HM2020TAGN[i]\n", + " H2016 = HM2016[i]\n", + " if np.max(np.abs(H2020))>0.025:\n", + " print(np.max(np.abs(H2020)),cosmo[i])\n", + " \n", + " axes[j][0].plot(k,H2020, label=\"HMcode2020 DM\", c=cmap(norm(cosmo[i]['smnu'])))\n", + " axes[j][0].set_xscale('log')\n", + " axes[j][0].set_ylabel(r'$\\frac{P_{\\rm{CLASS}}}{P_{\\rm{CAMB}}} - 1$',fontsize=20)\n", + " axes[2][0].set_xlabel(r'$k \\ h/\\rm{Mpc} $',fontsize=20)\n", + " axes[j][0].axhline(0,ls=':',c='k')\n", + " axes[0][0].set_title(\"HMcode2020 DM\")\n", + " axes[j][1].plot(k,HTagn, label=r\"HMcode2020 TAGN ($T_{\\rm{AGN}}=8.2)\", c=cmap(norm(cosmo[i]['smnu'])))\n", + " axes[j][1].set_xscale('log')\n", + " axes[2][1].set_xlabel(r'$k \\ h/\\rm{Mpc} $',fontsize=20)\n", + " axes[j][1].axhline(0,ls=':',c='k')\n", + " axes[0][1].set_title(r\"HMcode2020 $T_{\\rm{AGN}}$ ($T_{\\rm{AGN}}=8.2$)\")\n", + " axes[j][4].plot(k,l1, label=\"Linear\", c=cmap(norm(cosmo[i]['smnu'])))\n", + " axes[j][4].set_xscale('log')\n", + " axes[2][4].set_xlabel(r'$k \\ h/\\rm{Mpc} $',fontsize=20)\n", + " axes[j][4].axhline(0,ls=':',c='k')\n", + " axes[0][4].set_title(\"Linear\")\n", + " \n", + " axes[j][3].plot(k,Halofit, label=\"Halofit\", c=cmap(norm(cosmo[i]['smnu'])))\n", + " axes[j][3].set_xscale('log')\n", + " axes[2][3].set_xlabel(r'$k \\ h/\\rm{Mpc} $',fontsize=20)\n", + " axes[j][3].axhline(0,ls=':',c='k')\n", + " axes[0][3].set_title(\"Halofit\")\n", + " \n", + " axes[j][2].plot(k,H2016, label=\"HMcode2016\", c=cmap(norm(cosmo[i]['smnu'])))\n", + " axes[j][2].set_xscale('log')\n", + " axes[2][2].set_xlabel(r'$k \\ h/\\rm{Mpc} $',fontsize=20)\n", + " axes[j][2].axhline(0,ls=':',c='k')\n", + " axes[0][2].set_title(\"HMcode2016\")\n", + " for i in range(4):\n", + " axes[j][i].set_ylim(-1E-1, 3E-2)\n", + " from matplotlib.cm import ScalarMappable\n", + " \n", + " plt.subplots_adjust(wspace=0.1,hspace=0.1)\n", + " axes[0][0].text(1E-2,2E-2,\"z={0}\".format(zs[0]), size=20)\n", + " axes[1][0].text(1E-2,2E-2,\"z={0}\".format(zs[1]), size=20)\n", + " axes[2][0].text(1E-2,2E-2,\"z={0}\".format(zs[2]), size=20)\n", + "\n", + " sm = ScalarMappable(cmap=cmap, norm = norm)\n", + " cbar_ax = fig.add_axes([0.92, 0.1, 0.02, 0.8]) # left, bottom, width, height\n", + " fig.colorbar(sm, cax=cbar_ax).set_label(r'$m_{\\nu}$(ev)', fontsize=20)\n", + "plt.savefig(\"\")" + ] + }, + { + "cell_type": "code", + "execution_count": 130, + "id": "571fe26f", + "metadata": {}, + "outputs": [], + "source": [ + "ts0,pL0,pNL0,ceng = run_class(cosmo_dict,k,z,nu=nuFlag,pk=True,gauge='synchronous')\n", + "# if ceng.sigma8()<0.616:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "fa0d9686", + "metadata": {}, + "outputs": [], + "source": [ + "ceng.sigma8()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c82f905e", + "metadata": {}, + "outputs": [], + "source": [ + "## newtonian vs synch gauge\n", + "plt.plot(k,np.array(pNL_hy0)/np.array(pNL0) - 1, label=\"NL Hy\")\n", + "plt.xscale('log')\n", + "plt.ylabel(r'$\\frac{P_{\\rm{CLASS}}}{P_{\\rm{CAMB}}} - 1$',fontsize=20)\n", + "plt.xlabel(r'$k \\ h/\\rm{Mpc} $',fontsize=20)\n", + "plt.axhline(0,ls=':',c='k')\n", + "plt.legend()" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "1883262b", + "metadata": {}, + "outputs": [ + { + "ename": "NameError", + "evalue": "name 'pCAMB_NL_Hy' is not defined", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0;31m## newtonian vs synch gauge\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mplot\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mk\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0marray\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mpCAMB_NL_Hy\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m/\u001b[0m\u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0marray\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mpCAMB_NL\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m-\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlabel\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m\"NL Hy\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 3\u001b[0m \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mxscale\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'log'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mylabel\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34mr'$\\frac{P_{\\rm{CLASS}}}{P_{\\rm{CAMB}}} - 1$'\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mfontsize\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m20\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mxlabel\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34mr'$k \\ h/\\rm{Mpc} $'\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mfontsize\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m20\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mNameError\u001b[0m: name 'pCAMB_NL_Hy' is not defined" + ] + } + ], + "source": [ + "## newtonian vs synch gauge\n", + "plt.plot(k,np.array(pCAMB_NL_Hy)/np.array(pCAMB_NL) - 1, label=\"NL Hy\")\n", + "plt.xscale('log')\n", + "plt.ylabel(r'$\\frac{P_{\\rm{CLASS}}}{P_{\\rm{CAMB}}} - 1$',fontsize=20)\n", + "plt.xlabel(r'$k \\ h/\\rm{Mpc} $',fontsize=20)\n", + "plt.axhline(0,ls=':',c='k')\n", + "plt.legend()" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "948fff24", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA14AAAInCAYAAACIgohPAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAABYlAAAWJQFJUiTwAAB/k0lEQVR4nO3dd3hcxfX/8fdRt+Tebdy7AYOxqaYYMB0CJEAoIQUSQiCVNAJffqGEJJCQQBoJpBASeg0QQu+92FTb2Ma99y6rn98fd7VarVbSrqTdq5U+r+fZZ/femTtzpGuBjmbujLk7IiIiIiIikj45YQcgIiIiIiLS0SnxEhERERERSTMlXiIiIiIiImmmxEtERERERCTNlHiJiIiIiIikmRIvERERERGRNFPiJSIiIiIikmZKvERERERERNJMiZeIiIiIiEiaKfESERERERFJMyVeIiIiIiIiaabES0REREREJM3ywg5ApC2Y2WKgO7Ak5FBEREREpOMaAWxz95GpXqjESzqK7l26dOk9ceLE3mEHIiIiIiId09y5c9m1a1eLrlXiJR3FkokTJ/aeOXNm2HGIiIiISAc1depUZs2ataQl1+oZLxERERERkTRT4iUiIiIiIpJmSrxERERERETSTImXiIiIiIhIminxEhERERERSTMlXiIiIiIiImmmxEtERERERCTNlHiJiIiIiIikmRIvERERERGRNFPiJSIiIiIikmZKvERERERERNJMiZeIiIiIiEiaKfESERERERFJMyVeWcrMhpjZP8xslZmVm9kSM7vJzHql2E7vyHVLIu2sirQ7pC37NrPdzew+M1tnZmVmNs/MrjazLqnEKyIiIiKSjfLCDkBSZ2ajgdeB/sAjwCfA/sB3gePM7GB335hEO30i7YwDngfuASYA5wEnmtlB7r6otX2b2QGR9vOBB4DlwJHAT4EZZjbD3ctb8r0QEREREckGGvHKTjcTJD7fcfdT3f0n7n4kcCMwHvh5ku38giDp+q27z4i0cypBEtU/0k+r+jazXOA2oBg43d3PcfdLgQOAB4GDgUtS+NpFRERERLKOuXvYMUgKIiNOnwJLgNHuXhNT1g1YDRjQ3913NtFOV2AdUAMMcvftMWU5wCJgeKSPRS3t28yOBJ4DXnb36XExjAIWAkuBkd6Kf4xmNnPKlClTZs6c2dImUnbjM/O5862l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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "image/png": { + "height": 275, + "width": 431 + }, + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "## newtonian vs synch gauge\n", + "plt.plot(k,pNL_hy0/pCAMB_NL_Hy - 1, label=\"NL Hy\")\n", + "plt.xscale('log')\n", + "plt.ylabel(r'$\\frac{P_{\\rm{CLASS}}}{P_{\\rm{CAMB}}} - 1$',fontsize=20)\n", + "plt.xlabel(r'$k \\ h/\\rm{Mpc} $',fontsize=20)\n", + "plt.axhline(0,ls=':',c='k')\n", + "plt.legend()" + ] + }, + { + "cell_type": "code", + "execution_count": 57, + "id": "1514940d", + "metadata": {}, + "outputs": [], + "source": [ + "cosmo_dict = {'h': 0.5472023608482062, 'Omb': 0.037629497579483036, 'Omcb': 0.30999201969016116, 'ns': 0.9961897664549515, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.6997071338107496, 'As': 4.050892283013098e-09, 'TAGN': 8.2, 'Omcdm': 0.27236252211067813}\n", + "import pyccl as ccl\n", + "\n", + "cosmo = ccl.Cosmology(\n", + " Omega_c=cosmo_dict['Omcb']-cosmo_dict['Omb'],\n", + " Omega_b=cosmo_dict['Omb'],\n", + " h=cosmo_dict['h'],\n", + " A_s=cosmo_dict['As'],\n", + " n_s=cosmo_dict['ns'],\n", + " Neff=cosmo_dict['Neff'],\n", + " Omega_k=0,\n", + " w0=-1,\n", + " wa=0,\n", + " m_nu=0.3,\n", + " #m_nu=cosmo_dict['smnu'],\n", + " transfer_function='boltzmann_class')\n", + "pk_lin_class = ccl.linear_matter_power(cosmo, k, 1)" + ] + }, + { + "cell_type": "code", + "execution_count": 58, + "id": "5b54f4c1", + "metadata": {}, + "outputs": [], + "source": [ + "import pyccl as ccl\n", + "\n", + "cosmo = ccl.Cosmology(\n", + " Omega_c=cosmo_dict['Omcb']-cosmo_dict['Omb'],\n", + " Omega_b=cosmo_dict['Omb'],\n", + " h=cosmo_dict['h'],\n", + " A_s=cosmo_dict['As'],\n", + " n_s=cosmo_dict['ns'],\n", + " Neff=cosmo_dict['Neff'],\n", + " Omega_k=0,\n", + " w0=-1,\n", + " wa=0,\n", + " m_nu=0.3,\n", + " #m_nu=cosmo_dict['smnu'],\n", + " transfer_function='boltzmann_camb')\n", + "pk_lin_camb = ccl.linear_matter_power(cosmo, k, 1)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 59, + "id": "4aac71cf", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Text(0.5, 0, 'k(Mpc/h)')" + ] + }, + "execution_count": 59, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "image/png": { + "height": 271, + "width": 439 + }, + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.semilogx(k, pk_lin_class/pk_lin_camb-1)\n", + "plt.xlim(1E-3, 1E0)\n", + "plt.ylim(-5E-3,5E-3)\n", + "plt.ylabel(\"class/camb-1\")\n", + "plt.xlabel(\"k(Mpc/h)\")" + ] + }, + { + "cell_type": "code", + "execution_count": 60, + "id": "cf0358e8", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 99, + "id": "9b828555", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 101, + "id": "8f97ece0", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 102, + "id": "43890920", + "metadata": {}, + "outputs": [], + "source": [ + "cosmo_dict={'h': 0.5472023608482062,\n", + " 'Omb': 0.037629497579483036,\n", + " 'Omcb': 0.30999201969016116,\n", + " 'ns': 0.9961897664549515,\n", + " 'Y_p': 0.24,\n", + " 'Neff': 3.046,\n", + " 'smnu': 0.6997071338107496,\n", + " 'As': 4.050892283013098e-09,\n", + " 'TAGN': 8.2,\n", + " 'Omcdm': 0.27236252211067813}" + ] + }, + { + "cell_type": "code", + "execution_count": 103, + "id": "f6fa7941", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Note: redshifts have been re-sorted (earliest first)\n" + ] + } + ], + "source": [ + "ts0,pL0,pNL0,ceng = run_class(cosmo_dict,k,0,nu=nuFlag,pk=True,gauge='synchronous')\n", + "pCAMB, pCAMB_NL, camb_results = run_camb(cosmo_dict,k,0,nu=nuFlag, darkmatter=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 104, + "id": "abdb9956", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[]" + ] + }, + "execution_count": 104, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAzAAAAH6CAYAAADY5KngAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAABYlAAAWJQFJUiTwAACaFUlEQVR4nOzddZhc1fkH8O87s+7ZeDburliAJASHUNxdC8WllNIW2lJof8VaKMXdQ9DiEEIIHuLu7slm3Xfm/P6YO7tzbWxnduz7eZ55dq7MuWfCsHvfec97jiilQERERERElAgcse4AERERERFRsBjAEBERERFRwmAAQ0RERERECYMBDBERERERJQwGMERERERElDAYwBARERERUcJgAENERERERAmDAQwRERERESUMBjBERERERJQwGMAQEREREVHCYABDREREREQJgwEMEREREREljLRYd4Dii4ioWPeBiIiIiFKHUkpCOZ8ZGCIiIiIiShjMwJAlpRIvESPiCd7bo++RvlZb2gv1tcGeH8x5gc5p6/F41d79juT12vOzFsprov15szo27p4vUFbbpDvv/esOw9heRX772t74eYvs77Zgz4305y1R8G8pP2/tydv3UDEDQ0REKae6odkUvADAmt1VMegNERGFghkYsuQvIk7ECJ+IyNf2srqQ9hMRUXjCzbL4wwwMERGlnH3VDZb791TVt3NPiIgoVMzAkCVmWYgomZXVNlru31NpHdgQEVF4gqn9CRUzMERElHLKLepfAGBPFQMYIqJ4xwCGiIhSTkWddQCzu5JDyIiI4h2HkFHSaM9hb5G+VlvaC/W1wZ4fzHmBzknWoYjt/b4ieb32/KyF8pr2/ryV1VgPIdtX3QCXW8HpiHzRabj4eYv8+fz9Zo9/SyN/Pj9vkccMDBERpZxymwyMWwGlNRxGRkQUzxjAEBFRyrGrgQl0jIiIYo8BDBERpZxym1nIAPv6GCIiig8MYIiIKOXYDSEDgApmYIiI4hoDGCIiSjmV/gIYZmCIiOIaZyEjopjhrCrUXoyftdpGl+25DGCorfi7jdpTKn7emIEhIqKUopRCTWOz7XEGMERE8Y0BDBERpZSGZjf8fWHJAIaIKL5xCBlZErFfxC0VU5VElDxqGuyzLwBQWc8AhogoUvzdU4aLGRgiIkop/upfAP8F/kREFHvMwJAlZlmIKFkF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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "image/png": { + "height": 253, + "width": 408 + }, + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.semilogx(k, pL0/pCAMB-1)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "9e3154a5", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.7" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/class/notebooks/.ipynb_checkpoints/cl_ST-checkpoint.ipynb b/class/notebooks/.ipynb_checkpoints/cl_ST-checkpoint.ipynb new file mode 100644 index 00000000..4255da1e --- /dev/null +++ b/class/notebooks/.ipynb_checkpoints/cl_ST-checkpoint.ipynb @@ -0,0 +1,199 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# import necessary modules\n", + "# uncomment to get plots displayed in notebook\n", + "%matplotlib inline\n", + "import matplotlib\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "from classy import Class\n", + "from scipy.optimize import fsolve\n", + "from scipy.interpolate import interp1d\n", + "import math" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# esthetic definitions for the plots\n", + "font = {'size' : 16, 'family':'STIXGeneral'}\n", + "axislabelfontsize='large'\n", + "matplotlib.rc('font', **font)\n", + "matplotlib.mathtext.rcParams['legend.fontsize']='medium'\n", + "plt.rcParams[\"figure.figsize\"] = [8.0,6.0]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#############################################\n", + "#\n", + "# Cosmological parameters and other CLASS parameters\n", + "#\n", + "common_settings = {# wich output? ClTT, transfer functions delta_i and theta_i\n", + " 'output':'tCl,pCl,lCl',\n", + " # LambdaCDM parameters\n", + " 'h':0.67556,\n", + " 'omega_b':0.022032,\n", + " 'omega_cdm':0.12038,\n", + " 'A_s':2.215e-9,\n", + " 'tau_reio':0.0925,\n", + " # Take fixed value for primordial Helium (instead of automatic BBN adjustment)\n", + " 'YHe':0.246}\n", + " # other output and precision parameters\n", + " #'l_max_scalars':3000}\n", + "###############\n", + "# \n", + "# call CLASS \n", + "#\n", + "###############\n", + "#\n", + "# scalars only\n", + "#\n", + "M = Class()\n", + "M.set(common_settings)\n", + "M.set({'output':'tCl,pCl','modes':'s','lensing':'no','n_s':0.9619,'l_max_scalars':3000})\n", + "M.compute()\n", + "cls = M.raw_cl(3000)\n", + "M.struct_cleanup()\n", + "M.empty()\n", + "#\n", + "# tensors only\n", + "#\n", + "M = Class()\n", + "M.set(common_settings)\n", + "l_max_tensors = 600\n", + "M.set({'output':'tCl,pCl','modes':'t','lensing':'no','r':0.1,'n_t':0,'l_max_tensors':l_max_tensors})\n", + "# for l_max=600 we can keep default precision\n", + "# for l_max = 3000 we would need to import many high precision settings from the file cl_ref.pre\n", + "#M.set({'output':'tCl,pCl','modes':'t','lensing':'no','r':0.1,'n_t':0,'l_max_tensors':3000})\n", + "#M.set({\n", + "#'recfast_Nz0':100000,\n", + "#'tol_thermo_integration':1.e-5,\n", + "#'recfast_x_He0_trigger_delta':0.01,\n", + "#'recfast_x_H0_trigger_delta':0.01,\n", + "#'evolver':0,\n", + "#'k_min_tau0':0.002,\n", + "#'k_max_tau0_over_l_max':3.,\n", + "#'k_step_sub':0.015,\n", + "#'k_step_super':0.0001,\n", + "#'k_step_super_reduction':0.1,\n", + "#'start_small_k_at_tau_c_over_tau_h':0.0004,\n", + "#'start_large_k_at_tau_h_over_tau_k':0.05,\n", + "#'tight_coupling_trigger_tau_c_over_tau_h':0.005,\n", + "#'tight_coupling_trigger_tau_c_over_tau_k':0.008,\n", + "#'start_sources_at_tau_c_over_tau_h':0.006,\n", + "#'l_max_g':50,\n", + "#'l_max_pol_g':25,\n", + "#'l_max_ur':50,\n", + "#'tol_perturb_integration':1.e-6,\n", + "#'perturb_sampling_stepsize':0.01,\n", + "#'radiation_streaming_approximation':2,\n", + "#'radiation_streaming_trigger_tau_over_tau_k':240.,\n", + "#'radiation_streaming_trigger_tau_c_over_tau':100.,\n", + "#'ur_fluid_approximation':2,\n", + "#'ur_fluid_trigger_tau_over_tau_k':50.,\n", + "#'l_logstep':1.026,\n", + "#'l_linstep':25,\n", + "#'hyper_sampling_flat':12.,\n", + "#'hyper_nu_sampling_step':10.,\n", + "#'hyper_phi_min_abs':1.e-10,\n", + "#'hyper_x_tol':1.e-4,\n", + "#'hyper_flat_approximation_nu':1.e6,\n", + "#'q_linstep':0.20,\n", + "#'q_logstep_spline':20.,\n", + "#'q_logstep_trapzd':0.5,\n", + "#'q_numstep_transition':250,\n", + "#'transfer_neglect_delta_k_T_t2':100.,\n", + "#'transfer_neglect_delta_k_T_e':100.,\n", + "#'transfer_neglect_delta_k_T_b':100.,\n", + "#'neglect_CMB_sources_below_visibility':1.e-30,\n", + "#'transfer_neglect_late_source':3000.\n", + "#})\n", + "M.compute()\n", + "clt = M.raw_cl(l_max_tensors)\n", + "M.struct_cleanup()\n", + "M.empty()\n", + "#\n", + "# scalars + tensors (only in this case we can get the correct lensed ClBB)\n", + "#\n", + "M = Class()\n", + "M.set(common_settings)\n", + "M.set({'output':'tCl,pCl,lCl','modes':'s,t','lensing':'yes','r':0.1,'n_s':0.9619,'n_t':0,'l_max_scalars':3000,'l_max_tensors':l_max_tensors})\n", + "M.compute()\n", + "cl_tot = M.raw_cl(3000)\n", + "cl_lensed = M.lensed_cl(3000)\n", + "M.struct_cleanup()\n", + "M.empty()\n", + "#\n", + "#################\n", + "#\n", + "# start plotting\n", + "#\n", + "#################\n", + "#\n", + "plt.xlim([2,3000])\n", + "plt.ylim([1.e-8,10])\n", + "plt.xlabel(r\"$\\ell$\")\n", + "plt.ylabel(r\"$\\ell (\\ell+1) C_l^{XY} / 2 \\pi \\,\\,\\, [\\times 10^{10}]$\")\n", + "plt.title(r\"$r=0.1$\")\n", + "plt.grid()\n", + "#\n", + "ell = cl_tot['ell']\n", + "ellt = clt['ell']\n", + "factor = 1.e10*ell*(ell+1.)/2./math.pi\n", + "factort = 1.e10*ellt*(ellt+1.)/2./math.pi\n", + "#\n", + "plt.loglog(ell,factor*cls['tt'],'r-',label=r'$\\mathrm{TT(s)}$')\n", + "plt.loglog(ellt,factort*clt['tt'],'r:',label=r'$\\mathrm{TT(t)}$')\n", + "plt.loglog(ell,factor*cls['ee'],'b-',label=r'$\\mathrm{EE(s)}$')\n", + "plt.loglog(ellt,factort*clt['ee'],'b:',label=r'$\\mathrm{EE(t)}$')\n", + "plt.loglog(ellt,factort*clt['bb'],'g:',label=r'$\\mathrm{BB(t)}$')\n", + "plt.loglog(ell,factor*(cl_lensed['bb']-cl_tot['bb']),'g-',label=r'$\\mathrm{BB(lensing)}$')\n", + "plt.legend(loc='right',bbox_to_anchor=(1.4, 0.5))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "plt.savefig('cl_ST.pdf',bbox_inches='tight')" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.7" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/class/notebooks/.ipynb_checkpoints/cltt_terms-checkpoint.ipynb b/class/notebooks/.ipynb_checkpoints/cltt_terms-checkpoint.ipynb new file mode 100644 index 00000000..803687d3 --- /dev/null +++ b/class/notebooks/.ipynb_checkpoints/cltt_terms-checkpoint.ipynb @@ -0,0 +1,151 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# import necessary modules\n", + "# uncomment to get plots displayed in notebook\n", + "%matplotlib inline\n", + "import matplotlib\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "from classy import Class\n", + "from scipy.optimize import fsolve\n", + "from scipy.interpolate import interp1d\n", + "import math" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# esthetic definitions for the plots\n", + "font = {'size' : 16, 'family':'STIXGeneral'}\n", + "axislabelfontsize='large'\n", + "matplotlib.rc('font', **font)\n", + "matplotlib.mathtext.rcParams['legend.fontsize']='medium'\n", + "plt.rcParams[\"figure.figsize\"] = [8.0,6.0]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#############################################\n", + "#\n", + "# Cosmological parameters and other CLASS parameters\n", + "#\n", + "common_settings = {# wich output? ClTT, transfer functions delta_i and theta_i\n", + " 'output':'tCl,pCl,lCl',\n", + " 'lensing':'yes',\n", + " # LambdaCDM parameters\n", + " 'h':0.67556,\n", + " 'omega_b':0.022032,\n", + " 'omega_cdm':0.12038,\n", + " 'A_s':2.215e-9,\n", + " 'n_s':0.9619,\n", + " 'tau_reio':0.0925,\n", + " # Take fixed value for primordial Helium (instead of automatic BBN adjustment)\n", + " 'YHe':0.246,\n", + " # other output and precision parameters\n", + " 'l_max_scalars':5000}\n", + "###############\n", + "# \n", + "# call CLASS \n", + "#\n", + "M = Class()\n", + "M.set(common_settings)\n", + "M.compute()\n", + "cl_tot = M.raw_cl(3000)\n", + "cl_lensed = M.lensed_cl(3000)\n", + "M.struct_cleanup() # clean output\n", + "M.empty() # clean input\n", + "#\n", + "M.set(common_settings) # new input\n", + "M.set({'temperature contributions':'tsw'}) \n", + "M.compute()\n", + "cl_tsw = M.raw_cl(3000) \n", + "M.struct_cleanup()\n", + "M.empty()\n", + "#\n", + "M.set(common_settings)\n", + "M.set({'temperature contributions':'eisw'})\n", + "M.compute()\n", + "cl_eisw = M.raw_cl(3000) \n", + "M.struct_cleanup()\n", + "M.empty()\n", + "#\n", + "M.set(common_settings)\n", + "M.set({'temperature contributions':'lisw'})\n", + "M.compute()\n", + "cl_lisw = M.raw_cl(3000) \n", + "M.struct_cleanup()\n", + "M.empty()\n", + "#\n", + "M.set(common_settings)\n", + "M.set({'temperature contributions':'dop'})\n", + "M.compute()\n", + "cl_dop = M.raw_cl(3000) \n", + "#\n", + "#################\n", + "#\n", + "# start plotting\n", + "#\n", + "#################\n", + "#\n", + "plt.xlim([2,3000])\n", + "plt.xlabel(r\"$\\ell$\")\n", + "plt.ylabel(r\"$\\ell (\\ell+1) C_l^{TT} / 2 \\pi \\,\\,\\, [\\times 10^{10}]$\")\n", + "plt.grid()\n", + "#\n", + "ell = cl_tot['ell']\n", + "factor = 1.e10*ell*(ell+1.)/2./math.pi\n", + "plt.semilogx(ell,factor*cl_tsw['tt'],'c-',label=r'$\\mathrm{T+SW}$')\n", + "plt.semilogx(ell,factor*cl_eisw['tt'],'r-',label=r'$\\mathrm{early-ISW}$')\n", + "plt.semilogx(ell,factor*cl_lisw['tt'],'y-',label=r'$\\mathrm{late-ISW}$')\n", + "plt.semilogx(ell,factor*cl_dop['tt'],'g-',label=r'$\\mathrm{Doppler}$')\n", + "plt.semilogx(ell,factor*cl_tot['tt'],'r-',label=r'$\\mathrm{total}$')\n", + "plt.semilogx(ell,factor*cl_lensed['tt'],'k-',label=r'$\\mathrm{lensed}$')\n", + "#\n", + "plt.legend(loc='right',bbox_to_anchor=(1.4, 0.5))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "plt.savefig('cltt_terms.pdf',bbox_inches='tight')" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.7" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/class/notebooks/.ipynb_checkpoints/one_k-checkpoint.ipynb b/class/notebooks/.ipynb_checkpoints/one_k-checkpoint.ipynb new file mode 100644 index 00000000..50691b09 --- /dev/null +++ b/class/notebooks/.ipynb_checkpoints/one_k-checkpoint.ipynb @@ -0,0 +1,211 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# import necessary modules\n", + "# uncomment to get plots displayed in notebook\n", + "%matplotlib inline\n", + "import matplotlib\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "from classy import Class\n", + "from scipy.optimize import fsolve\n", + "from scipy.interpolate import interp1d\n", + "import math" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# esthetic definitions for the plots\n", + "font = {'size' : 16, 'family':'STIXGeneral'}\n", + "axislabelfontsize='large'\n", + "matplotlib.rc('font', **font)\n", + "matplotlib.mathtext.rcParams['legend.fontsize']='medium'\n", + "plt.rcParams[\"figure.figsize\"] = [8.0,6.0]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#############################################\n", + "#\n", + "# value of k that we want to follow in [1/Mpc]\n", + "#\n", + "k = 0.5 # 1/Mpc\n", + "#\n", + "# Cosmological parameters and other CLASS parameters\n", + "#\n", + "common_settings = {# we need to set the output field to something although\n", + " # the really releveant outpout here will be set with 'k_output_values'\n", + " 'output':'mPk',\n", + " # value of k we want to polot in [1/Mpc]\n", + " 'k_output_values':k,\n", + " # LambdaCDM parameters\n", + " 'h':0.67556,\n", + " 'omega_b':0.022032,\n", + " 'omega_cdm':0.12038,\n", + " 'A_s':2.215e-9,\n", + " 'n_s':0.9619,\n", + " 'tau_reio':0.0925,\n", + " # Take fixed value for primordial Helium (instead of automatic BBN adjustment)\n", + " 'YHe':0.246,\n", + " # other options and settings\n", + " 'compute damping scale':'yes', # needed to output the time of damping scale crossing\n", + " 'gauge':'newtonian'} \n", + "##############\n", + "# \n", + "# call CLASS\n", + "#\n", + "M = Class()\n", + "M.set(common_settings)\n", + "M.compute()\n", + "#\n", + "# load perturbations\n", + "#\n", + "all_k = M.get_perturbations() # this potentially constains scalars/tensors and all k values\n", + "print all_k['scalar'][0].viewkeys()\n", + "# \n", + "one_k = all_k['scalar'][0] # this contains only the scalar perturbations for the requested k values\n", + "# \n", + "tau = one_k['tau [Mpc]']\n", + "Theta0 = 0.25*one_k['delta_g']\n", + "phi = one_k['phi']\n", + "psi = one_k['psi']\n", + "theta_b = one_k['theta_b']\n", + "a = one_k['a']\n", + "# compute related quantitites \n", + "R = 3./4.*M.Omega_b()/M.Omega_g()*a # R = 3/4 * (rho_b/rho_gamma)\n", + "zero_point = -(1.+R)*psi # zero point of oscillations: -(1.+R)*psi\n", + "#\n", + "# get Theta0 oscillation amplitude (for vertical scale of plot)\n", + "#\n", + "Theta0_amp = max(Theta0.max(),-Theta0.min())\n", + "#\n", + "# get the time of decoupling\n", + "#\n", + "quantities = M.get_current_derived_parameters(['tau_rec'])\n", + "# print times.viewkeys()\n", + "tau_rec = quantities['tau_rec']\n", + "#\n", + "# use table of background quantitites to find the time of\n", + "# Hubble crossing (k / (aH)= 2 pi), sound horizon crossing (k * rs = 2pi)\n", + "#\n", + "background = M.get_background() # load background table\n", + "#print background.viewkeys()\n", + "#\n", + "background_tau = background['conf. time [Mpc]'] # read confromal times in background table\n", + "background_z = background['z'] # read redshift\n", + "background_k_over_aH = k/background['H [1/Mpc]']*(1.+background['z']) # read k/aH = k(1+z)/H\n", + "background_k_rs = k * background['comov.snd.hrz.'] # read k * rs\n", + "background_rho_m_over_r =\\\n", + " (background['(.)rho_b']+background['(.)rho_cdm'])\\\n", + " /(background['(.)rho_g']+background['(.)rho_ur']) # read rho_r / rho_m (to find time of equality)\n", + "#\n", + "# define interpolation functions; we want the value of tau when the argument is equal to 2pi (or 1 for equality)\n", + "#\n", + "tau_at_k_over_aH = interp1d(background_k_over_aH,background_tau)\n", + "tau_at_k_rs = interp1d(background_k_rs,background_tau)\n", + "tau_at_rho_m_over_r = interp1d(background_rho_m_over_r,background_tau)\n", + "#\n", + "# finally get these times\n", + "#\n", + "tau_Hubble = tau_at_k_over_aH(2.*math.pi)\n", + "tau_s = tau_at_k_rs(2.*math.pi)\n", + "tau_eq = tau_at_rho_m_over_r(1.)\n", + "#\n", + "#################\n", + "#\n", + "# start plotting\n", + "#\n", + "#################\n", + "# \n", + "plt.xlim([tau[0],tau_rec*1.3])\n", + "plt.ylim([-1.3*Theta0_amp,1.3*Theta0_amp])\n", + "plt.xlabel(r'$\\tau \\,\\,\\, \\mathrm{[Mpc]}$')\n", + "plt.title(r'$\\mathrm{Transfer} (\\tau,k) \\,\\,\\, \\mathrm{for} \\,\\,\\, k=%g \\,\\,\\, [1/\\mathrm{Mpc}]$'%k)\n", + "plt.grid()\n", + "#\n", + "plt.axvline(x=tau_Hubble,color='r')\n", + "plt.axvline(x=tau_s,color='y')\n", + "plt.axvline(x=tau_eq,color='k')\n", + "plt.axvline(x=tau_rec,color='k')\n", + "#\n", + "plt.annotate(r'Hubble cross.',\n", + " xy=(tau_Hubble,1.08*Theta0_amp),\n", + " xytext=(0.15*tau_Hubble,1.18*Theta0_amp),\n", + " arrowprops=dict(facecolor='black', shrink=0.05, width=1, headlength=5, headwidth=5))\n", + "plt.annotate(r'sound hor. cross.',\n", + " xy=(tau_s,-1.0*Theta0_amp),\n", + " xytext=(1.5*tau_s,-1.2*Theta0_amp),\n", + " arrowprops=dict(facecolor='black', shrink=0.05, width=1, headlength=5, headwidth=5))\n", + "plt.annotate(r'eq.',\n", + " xy=(tau_eq,1.08*Theta0_amp),\n", + " xytext=(0.45*tau_eq,1.18*Theta0_amp),\n", + " arrowprops=dict(facecolor='black', shrink=0.05, width=1, headlength=5, headwidth=5))\n", + "plt.annotate(r'rec.',\n", + " xy=(tau_rec,1.08*Theta0_amp),\n", + " xytext=(0.45*tau_rec,1.18*Theta0_amp),\n", + " arrowprops=dict(facecolor='black', shrink=0.05, width=1, headlength=5, headwidth=5))\n", + "#\n", + "# Possibility to add functions one by one, saving between each (for slides)\n", + "#\n", + "plt.semilogx(tau,psi,'y-',label=r'$\\psi$')\n", + "#plt.legend(loc='right',bbox_to_anchor=(1.4, 0.5))\n", + "#plt.savefig('one_k_1.pdf',bbox_inches='tight')\n", + "#\n", + "plt.semilogx(tau,phi,'r-',label=r'$\\phi$')\n", + "#plt.legend(loc='right',bbox_to_anchor=(1.4, 0.5))\n", + "#plt.savefig('one_k_2.pdf',bbox_inches='tight')\n", + "#\n", + "plt.semilogx(tau,zero_point,'k:',label=r'$-(1+R)\\psi$')\n", + "#plt.legend(loc='right',bbox_to_anchor=(1.4, 0.5))\n", + "#plt.savefig('one_k_3.pdf',bbox_inches='tight')\n", + "#\n", + "plt.semilogx(tau,Theta0,'b-',linewidth=2,label=r'$\\Theta_0$')\n", + "#plt.legend(loc='right',bbox_to_anchor=(1.4, 0.5))\n", + "#plt.savefig('one_k_4.pdf',bbox_inches='tight')\n", + "#\n", + "plt.semilogx(tau,Theta0+psi,'c-',linewidth=2,label=r'$\\Theta_0+\\psi$')\n", + "#plt.legend(loc='right',bbox_to_anchor=(1.4, 0.5))\n", + "#plt.savefig('one_k_5.pdf',bbox_inches='tight')\n", + "#\n", + "plt.semilogx(tau,theta_b,'g-',label=r'$\\theta_b$')\n", + "plt.legend(loc='right',bbox_to_anchor=(1.4, 0.5))\n", + "plt.savefig('one_k.pdf',bbox_inches='tight')\n", + "#" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.7" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/class/notebooks/.pdf b/class/notebooks/.pdf new file mode 100644 index 00000000..a28e9c55 Binary files /dev/null and b/class/notebooks/.pdf differ diff --git a/class/notebooks/Growth_with_w.ipynb b/class/notebooks/Growth_with_w.ipynb new file mode 100644 index 00000000..bd5e556f --- /dev/null +++ b/class/notebooks/Growth_with_w.ipynb @@ -0,0 +1,378 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "%matplotlib inline\n", + "import matplotlib\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "from classy import Class\n", + "from scipy import interpolate" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "w0vec = [-0.7, -1.0, -1.3]\n", + "wavec = [-0.2,0.0,0.2]\n", + "#w0vec = [-1.0]\n", + "#wavec = [0.0]\n", + "\n", + "cosmo = {}\n", + "for w0 in w0vec:\n", + " for wa in wavec:\n", + " if w0==-1.0 and wa==0.0:\n", + " M='LCDM'\n", + " else:\n", + " M = '('+str(w0)+','+str(wa)+')'\n", + " cosmo[M] = Class()\n", + " cosmo[M].set({'input_verbose':1,'background_verbose':1,'gauge' : 'Newtonian'})\n", + " if M!='LCDM':\n", + " cosmo[M].set({'Omega_Lambda':0.,'w0_fld':w0,'wa_fld':wa})\n", + " cosmo[M].compute()" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "import scipy\n", + "import scipy.special\n", + "import scipy.integrate\n", + "\n", + "def D_hypergeom(avec,csm):\n", + " bg = csm.get_background()\n", + " Om = csm.Omega0_m()\n", + " if bg.has_key('(.)rho_lambda'):\n", + " Ol = bg['(.)rho_lambda'][-1]/bg['(.)rho_crit'][-1]\n", + " else:\n", + " Ol = bg['(.)rho_fld'][-1]/bg['(.)rho_crit'][-1]\n", + " \n", + " x = Ol/Om*avec**3\n", + " D = avec*scipy.special.hyp2f1(1./3.,1,11./6.,-x)\n", + " D_today = scipy.special.hyp2f1(1./3.,1,11./6.,-Ol/Om)\n", + " return D/D_today\n", + "\n", + "def f_hypergeom(avec,csm):\n", + " bg = csm.get_background()\n", + " Om = csm.Omega0_m()\n", + " if bg.has_key('(.)rho_lambda'):\n", + " Ol = bg['(.)rho_lambda'][-1]/bg['(.)rho_crit'][-1]\n", + " else:\n", + " Ol = bg['(.)rho_fld'][-1]/bg['(.)rho_crit'][-1]\n", + " \n", + " x = Ol/Om*avec**3\n", + " D = avec*scipy.special.hyp2f1(1./3.,1,11./6.,-x)\n", + " f = 1.-6./11.*x*avec/D*scipy.special.hyp2f1(4./3.,2,17./6.,-x)\n", + " return f\n", + "\n", + "def D_integral2(avec,csm):\n", + " bg = csm.get_background()\n", + " Om = csm.Omega0_m()\n", + " if bg.has_key('(.)rho_lambda'):\n", + " Ol = bg['(.)rho_lambda'][-1]/bg['(.)rho_crit'][-1]\n", + " w0 = -1\n", + " wa = 0.0\n", + " else:\n", + " Ol = bg['(.)rho_fld'][-1]/bg['(.)rho_crit'][-1]\n", + " w0 = csm.pars['w0_fld']\n", + " wa = csm.pars['wa_fld']\n", + " D = np.zeros(avec.shape)\n", + " for idx, a in enumerate(avec):\n", + " Hc = a*np.sqrt(Om/a**3 + Ol*a**(-3*(1+w0+wa))*np.exp(-3.*(1.0-a)*wa) )\n", + " Dintegrand2 = lambda a: (a*np.sqrt(Om/a**3 + Ol*a**(-3*(1+w0+wa))*np.exp(-3.*(1.0-a)*wa) ))**(-3)\n", + " I = scipy.integrate.quad(Dintegrand2, 1e-15,a)\n", + " D[idx] = Hc/a*I[0]\n", + " D = D/scipy.integrate.quad(Dintegrand2,1e-15,1)[0]\n", + " return D\n", + "\n", + "def D_integral(avec,csm):\n", + " bg = csm.get_background()\n", + " Om = csm.Omega0_m()\n", + " Ol = bg['(.)rho_lambda'][-1]/bg['(.)rho_crit'][-1]\n", + " Or = 1-Om-Ol\n", + " def Dintegrand(a):\n", + " Hc = np.sqrt(Om/a+Ol*a*a+Or/a/a)\n", + " #print a,Hc\n", + " return Hc**(-3)\n", + " D = np.zeros(avec.shape)\n", + " for idx, a in enumerate(avec):\n", + " #if a<1e-4:\n", + " # continue\n", + " Hc = np.sqrt(Om/a+Ol*a*a+Or/a/a)\n", + " I = scipy.integrate.quad(Dintegrand,1e-15,a,args=())\n", + " D[idx] = Hc/a*I[0]\n", + " D = D/scipy.integrate.quad(Dintegrand,1e-15,1,args=())[0]\n", + " return D\n", + "\n", + "def D_linder(avec,csm):\n", + " bg = csm.get_background()\n", + " if bg.has_key('(.)rho_lambda'):\n", + " Ol = bg['(.)rho_lambda'][-1]/bg['(.)rho_crit'][-1]\n", + " w0 = -1\n", + " wa = 0.0\n", + " else:\n", + " Ol = bg['(.)rho_fld'][-1]/bg['(.)rho_crit'][-1]\n", + " w0 = csm.pars['w0_fld']\n", + " wa = csm.pars['wa_fld']\n", + " \n", + " Om_of_a = (bg['(.)rho_cdm']+bg['(.)rho_b'])/bg['H [1/Mpc]']**2\n", + " gamma = 0.55+0.05*(w0+0.5*wa)\n", + " a_bg = 1./(1.+bg['z'])\n", + " \n", + " integ = (Om_of_a**gamma-1.)/a_bg\n", + " \n", + " integ_interp = interpolate.interp1d(a_bg,integ)\n", + " D = np.zeros(avec.shape)\n", + " amin = min(a_bg)\n", + " amin = 1e-3\n", + " for idx, a in enumerate(avec):\n", + " if a" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "figwidth1 = 4.4 #=0.7*6.3\n", + "figwidth2 = 6.3\n", + "figwidth15 = 0.5*(figwidth1+figwidth2)\n", + "ratio = 8.3/11.7\n", + "figheight1 = figwidth1*ratio\n", + "figheight2 = figwidth2*ratio\n", + "figheight15 = figwidth15*ratio\n", + "\n", + "lw=2\n", + "fs=12\n", + "labelfs=16\n", + "\n", + "fig, (ax1, ax2) = plt.subplots(2,1,figsize=(1.2*figwidth1,figheight1/(3./5.)),sharex=True,\n", + " gridspec_kw = {'height_ratios':[3, 2]})\n", + "\n", + "if False:\n", + " aminexp = -13\n", + " amin = 10**aminexp\n", + " ymin = 10**(aminexp/2.)\n", + " ymax = 10**(-aminexp/2.)\n", + "elif False:\n", + " aminexp = -7\n", + " amin = 10**aminexp\n", + " ymin = 10**(aminexp)\n", + " ymax = 10**(-aminexp)\n", + "else:\n", + " aminexp = -4\n", + " amin = 10**aminexp\n", + " ymin = 10**(aminexp-1)\n", + " ymax = 10**(-aminexp+1)\n", + " \n", + "\n", + "bg = cosmo['LCDM'].get_background()\n", + "\n", + "a = 1./(bg['z']+1)\n", + "H = bg['H [1/Mpc]']\n", + "D = bg['gr.fac. D']\n", + "f = bg['gr.fac. f']\n", + "\n", + "ax1.loglog(a,D,lw=lw,label=r'$D_+^\\mathrm{approx}$')\n", + "ax1.loglog(a,D_hypergeom(a,cosmo['LCDM']),lw=lw,label=r'$D_+^\\mathrm{analytic}$')\n", + "\n", + "ax1.loglog(a,a*ymax,'k--',lw=lw,label=r'$\\propto a$')\n", + "ax1.loglog(a,1./a*ymin,'k:',lw=lw,label=r'$\\propto a^{-1}$')\n", + "\n", + "ax2.semilogx(a,D/D_hypergeom(a,cosmo['LCDM']),lw=lw,label=r'$D_+/D_+^\\mathrm{analytic}$')\n", + "#ax2.semilogx(a,grow/grow[-1]/D_integral(a,cosmo['CDM']),'--',lw=5)\n", + "ax2.semilogx(a,f/f_hypergeom(a,cosmo['LCDM']),lw=lw,label=r'$f/f^{\\,\\mathrm{analytic}}$')\n", + "\n", + "\n", + "draw_vertical_redshift(cosmo['LCDM'], ax1, var='a',z=99,label='$z=99$')\n", + "draw_vertical_redshift(cosmo['LCDM'], ax1, var='a',z=49,label='$z=49$',ls='-')\n", + "draw_vertical_redshift(cosmo['LCDM'], ax2, var='a',z=99,label=None)\n", + "draw_vertical_redshift(cosmo['LCDM'], ax2, var='a',z=49,label=None,ls='-')\n", + "\n", + "lgd1 = ax1.legend(fontsize=fs,ncol=1,loc='upper left',\n", + " bbox_to_anchor=(1.02, 1.035))\n", + "\n", + "#lgd2 = ax2.legend([r'$D_+/D_+^\\mathrm{analytic}$','$z=99$'],\n", + "# fontsize=fs,ncol=1,loc='upper left',\n", + "# bbox_to_anchor=(1.0, 1.08))\n", + "lgd2 = ax2.legend(fontsize=fs,ncol=1,loc='upper left',\n", + " bbox_to_anchor=(1.02, 0.83))\n", + "\n", + "ax1.set_xlim([10**aminexp,1]) \n", + "ax2.set_xlabel(r'$a$',fontsize=fs)\n", + "ax1.set_ylim([ymin,ymax])\n", + "ax2.set_ylim([0.9,1.099])\n", + "\n", + "ax2.axhline(1,color='k')\n", + "\n", + "\n", + "fig.tight_layout()\n", + "fig.subplots_adjust(hspace=0.0)\n", + "fig.savefig('NewtonianGrowthFactor.pdf',bbox_extra_artists=(lgd1,lgd2), bbox_inches='tight')" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\nj/44im/dunXaZDLpmpqaTuvU19frrKwsfdVVV+n169frhQsX6oSEhA7DzD/77DNdWFioP/vssw7r\nlpeXa5PJpJ977rketWf58uXabDbr++67T5eWlup7771XWyyWDsPMH374YV1YWBhcbh9mfuaZZ+ov\nv/xSL168WOfk5IQNM1+yZImOj4/XLS0tXbbheP1dCiF6hj4YxSd6wUknncSkSZN48cUXO62TlJTE\n4sWL2b17N8XFxcyfP5/bbruNn/zkJ8E6TqeTTZs24XQ6O6z7xBNPkJSUxGWXXRZx2zNmzGDGjBnB\n5alTp/Liiy/y9NNPM3bsWJ555hleeuklJk+eHKxTU1PDpk2bgstms5m3336b2NhYpk2bxlVXXcVl\nl13GAw880GFfL7zwAnPnziU2NrZHPxshhIhEGUkuuhQXF+tVq1ZFjJWWllJUVNTHLeod77zzDrfe\neislJSWYzeY+3XdBQQE33XQTd95551HdT1VVFUVFRaxatarbUYfH8+9SCNE9pdRqrXXx4a4vPag+\nNHv2bObPn9/hHE5f2LhxI3a7ndtuu+2o76usrIwFCxb0aEi8EEJ05bi7o+7x7pZbbunzfY4ePZrN\nmzf3yb4mTZrEpEmT+mRfQoj+TXpQQgghopIkKCGEEFFJEpQQQoioJAlKCCFEVJIEJYQQIipJghJC\nCBGVJEEJIYSISpKg+lBdXR1ZWVls27btWDflqHn77bcZN24cfr//WDdFCHGckwTVh+69917OO+88\nhg4dGjHucrn49re/zdixY7FarR3mzuvKjTfeyNChQ4mJiQnerLC0tLTb9RYuXMioUaOw2+2MGjWK\n1157rdt1du7cyYUXXkhcXBzp6enccsstuN3uYPz888/HbDbz/PPP96jtQgjRGUlQfcTpdPL4449z\nww03dFrH5/PhcDi4+eabOf/8nt+Dqri4mKeffprS0lLeffddtNacffbZwftNRbJy5Uquuuoq5s6d\ny9q1a5k7dy5XXHEFn332WZftO//882lqamLZsmW88MILvPrqq2FTKH3nO9/hoYce6nH7hRAioiOZ\nCv1oPfrj7TZeeeUVnZKSov1+f4/qz58/X0+fPv2w9vXVV19pQH/99ded1rnyyiv12Wef3aHsrLPO\n0nPmzOlkDa0XLVqklVJ6586dwbJnn31W2+123dDQECwrLy/XgN6yZUuX7Txef5dCiJ5BbrdxfFi2\n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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "lw=2\n", + "fs=14\n", + "fig, (ax1, ax2) = plt.subplots(2,1,figsize=(6,8),sharex=True,)\n", + "# gridspec_kw = {'height_ratios':[2, 1]})\n", + "for M, csm in cosmo.iteritems():\n", + " if M!='LCDM':\n", + " w0, wa = M.strip('()').split(',')\n", + " if float(wa)!=0.0:\n", + " continue\n", + " bg = csm.get_background()\n", + " a = 1./(bg['z']+1)\n", + " H = bg['H [1/Mpc]']\n", + " #grow = bg['grow']\n", + " #grow_prime = bg['grow_prime']\n", + " D = bg['gr.fac. D']\n", + " f = bg['gr.fac. f']\n", + " #grow_interp = interpolate.interp1d(a,grow)\n", + " #p = ax1.semilogx(a,grow/grow[-1]/a,lw=lw,label=M)\n", + " #colour = p[0].get_color()\n", + " \n", + " p=ax1.semilogx(a,D_linder2(a,csm)/a,lw=lw,ls='--',label=M)\n", + " colour = p[0].get_color()\n", + " ax1.semilogx(a,D/a,lw=lw,ls='-',color=colour)\n", + " ax1.semilogx(a,D_hypergeom(a,csm)/a,lw=lw,ls=':',color=colour)\n", + " \n", + " ax2.semilogx(a,D/D_integral2(a,csm),lw=lw,ls='-',color=colour)\n", + " ax2.semilogx(a,D/D_hypergeom(a,csm),lw=lw,ls=':',color=colour)\n", + " ax2.semilogx(a,D/D_linder2(a,csm),lw=lw,ls='--',color=colour)\n", + "\n", + "ax1.set_xlim([1e-3,1]) \n", + "ax2.set_xlabel(r'$a$',fontsize=fs)\n", + "ax1.set_ylim([0,2])\n", + "ax2.set_ylim([0.9,1.3])\n", + "\n", + "lgd1 = ax1.legend(fontsize=fs,ncol=1,loc='lower left')\n", + "# bbox_to_anchor=(1.0, 1.035))\n", + "\n", + "fig.tight_layout()\n", + "fig.subplots_adjust(hspace=0.0)\n", + "fig.savefig('Growthrate_w0.pdf')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.7" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/class/notebooks/Test HMcode2020.ipynb b/class/notebooks/Test HMcode2020.ipynb new file mode 100644 index 00000000..86a2f81c --- /dev/null +++ b/class/notebooks/Test HMcode2020.ipynb @@ -0,0 +1,1709 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "09ce2608", + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import camb\n", + "import hmcode\n", + "import matplotlib.pyplot as plt\n", + "%matplotlib inline \n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "b59c8aaa", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'/home/groups/risahw/chto/miniconda3/envs/newenv4/lib/python3.9/site-packages/hmcode/__init__.py'" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "hmcode.__file__" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "59fa9372", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.15470606409572227" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "0.022032/(0.12038+0.022032)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "287dce89", + "metadata": {}, + "outputs": [], + "source": [ + "# Ranges\n", + "camb.set_params(verbose=True)\n", + "k_hmcode = np.logspace(-3, 1.5, 100) # Wavenumbers [h/Mpc]\n", + "zs = [ 0.] # Redshifts\n", + "initPower = camb.initialpower.InitialPowerLaw(As=2.215e-9, ns= 0.9619)\n", + "nonlinear = camb.nonlinear.Halofit()\n", + "nonlinear.set_params(halofit_version='mead2020_feedback')#, HMCode_logT_AGN=-20,)\n", + "# Run CAMB\n", + "#omnuh2=0.000644866570625114,\n", + "parameters = camb.CAMBparams(WantCls=False,InitPower=initPower, NonLinearModel =nonlinear, num_nu_massive=1,num_nu_massless=2.044,omnuh2=0.000644866570625114)#,,nu_mass_eigenstates = 1,share_delta_neff=True)\n", + "parameters.set_cosmology(H0=67.556, omch2=0.12038, ombh2=0.022032,omk=0, TCMB=2.725,YHe=0.24, )\n", + "parameters.set_matter_power(redshifts=zs, kmax=100.) # kmax should be much larger than the wavenumber of interest\n", + "results = camb.get_results(parameters)\n", + "\n", + "# HMcode\n", + "Pk_hmcode = hmcode.power(k_hmcode, zs, results)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "fc2cddbe", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "class: \n", + " Params: \n", + " WantCls = False\n", + " WantTransfer = True\n", + " WantScalars = True\n", + " WantTensors = False\n", + " WantVectors = False\n", + " WantDerivedParameters = True\n", + " Want_cl_2D_array = True\n", + " Want_CMB = True\n", + " Want_CMB_lensing = True\n", + " DoLensing = True\n", + " NonLinear = NonLinear_none\n", + " Transfer: \n", + " high_precision = True\n", + " accurate_massive_neutrinos = False\n", + " kmax = 100.0\n", + " k_per_logint = 0\n", + " PK_num_redshifts = 1\n", + " PK_redshifts = [0.0]\n", + " want_zstar = False\n", + " want_zdrag = False\n", + " min_l = 2\n", + " max_l = 2500\n", + " max_l_tensor = 600\n", + " max_eta_k = 5000.0\n", + " max_eta_k_tensor = 1200.0\n", + " ombh2 = 0.022032\n", + " omch2 = 0.12038\n", + " omk = 0.0\n", + " omnuh2 = 0.0006445117284262014\n", + " H0 = 67.556\n", + " TCMB = 2.725\n", + " YHe = 0.24\n", + " num_nu_massless = 2.0293333333333337\n", + " num_nu_massive = 1\n", + " nu_mass_eigenstates = 1\n", + " share_delta_neff = False\n", + " nu_mass_degeneracies = [1.0146666666666666]\n", + " nu_mass_fractions = [1.0]\n", + " nu_mass_numbers = [1]\n", + " InitPower: \n", + " tensor_parameterization = tensor_param_rpivot\n", + " ns = 0.9619\n", + " nrun = 0.0\n", + " nrunrun = 0.0\n", + " nt = -0.0\n", + " ntrun = -0.0\n", + " r = 0.0\n", + " pivot_scalar = 0.05\n", + " pivot_tensor = 0.05\n", + " As = 2.215e-09\n", + " At = 1.0\n", + " Recomb: \n", + " min_a_evolve_Tm = 0.0011098779505118728\n", + " RECFAST_fudge = 1.125\n", + " RECFAST_fudge_He = 0.86\n", + " RECFAST_Heswitch = 6\n", + " RECFAST_Hswitch = True\n", + " AGauss1 = -0.14\n", + " AGauss2 = 0.079\n", + " zGauss1 = 7.28\n", + " zGauss2 = 6.73\n", + " wGauss1 = 0.18\n", + " wGauss2 = 0.33\n", + " Reion: \n", + " Reionization = True\n", + " use_optical_depth = False\n", + " redshift = 10.0\n", + " optical_depth = 0.0\n", + " delta_redshift = 0.5\n", + " fraction = -1.0\n", + " include_helium_fullreion = True\n", + " helium_redshift = 3.5\n", + " helium_delta_redshift = 0.4\n", + " helium_redshiftstart = 5.5\n", + " tau_solve_accuracy_boost = 1.0\n", + " timestep_boost = 1.0\n", + " max_redshift = 50.0\n", + " DarkEnergy: \n", + " w = -1.0\n", + " wa = 0.0\n", + " cs2 = 1.0\n", + " use_tabulated_w = False\n", + " NonLinearModel: \n", + " Min_kh_nonlinear = 0.005\n", + " halofit_version = mead2020_feedback\n", + " HMCode_A_baryon = 3.13\n", + " HMCode_eta_baryon = 0.603\n", + " HMCode_logT_AGN = 7.8\n", + " Accuracy: \n", + " AccuracyBoost = 1.0\n", + " lSampleBoost = 1.0\n", + " lAccuracyBoost = 1.0\n", + " AccuratePolarization = True\n", + " AccurateBB = False\n", + " AccurateReionization = True\n", + " TimeStepBoost = 1.0\n", + " BackgroundTimeStepBoost = 1.0\n", + " IntTolBoost = 1.0\n", + " SourcekAccuracyBoost = 1.0\n", + " IntkAccuracyBoost = 1.0\n", + " TransferkBoost = 1.0\n", + " NonFlatIntAccuracyBoost = 1.0\n", + " BessIntBoost = 1.0\n", + " LensingBoost = 1.0\n", + " NonlinSourceBoost = 1.0\n", + " BesselBoost = 1.0\n", + " LimberBoost = 1.0\n", + " SourceLimberBoost = 1.0\n", + " KmaxBoost = 1.0\n", + " neutrino_q_boost = 1.0\n", + " SourceTerms: \n", + " limber_windows = False\n", + " limber_phi_lmin = 100\n", + " counts_density = True\n", + " counts_redshift = True\n", + " counts_lensing = False\n", + " counts_velocity = True\n", + " counts_radial = False\n", + " counts_timedelay = True\n", + " counts_ISW = True\n", + " counts_potential = True\n", + " counts_evolve = False\n", + " line_phot_dipole = False\n", + " line_phot_quadrupole = False\n", + " line_basic = True\n", + " line_distortions = True\n", + " line_extra = False\n", + " line_reionization = False\n", + " use_21cm_mK = True\n", + " z_outputs = []\n", + " scalar_initial_condition = initial_adiabatic\n", + " InitialConditionVector = []\n", + " OutputNormalization = 1\n", + " Alens = 1.0\n", + " MassiveNuMethod = Nu_best\n", + " DoLateRadTruncation = True\n", + " Evolve_baryon_cs = False\n", + " Evolve_delta_xe = False\n", + " Evolve_delta_Ts = False\n", + " Do21cm = False\n", + " transfer_21cm_cl = False\n", + " Log_lvalues = False\n", + " use_cl_spline_template = True\n", + " SourceWindows = []\n", + " CustomSources: \n", + " num_custom_sources = 0\n", + " c_source_func = None\n", + " custom_source_ell_scales = []\n", + " ThermoDerivedParams = [13.778237951578754, 1090.3607781945418, 144.6205434765629, 1.0431747230735924, 13.863501509167648, 1059.2264944507895, 147.39116572425826, 0.1405167959541272, 0.161268185730211, 3406.384189774261, 0.01039177698287806, 0.8132312476995828, 0.44965233905835805]\n", + " flat = True\n", + " closed = False\n", + " grhocrit = 1.523378082476592e-07\n", + " grhog = 8.248612717308974e-12\n", + " grhor = 1.873320308646176e-12\n", + " grhob = 7.354171810491997e-09\n", + " grhoc = 4.018224412432038e-08\n", + " grhov = 1.0457420730555495e-07\n", + " grhornomass = 3.801591346345974e-12\n", + " grhok = 0.0\n", + " taurst = 205.5044921823356\n", + " dtaurec = 5.137612304558391\n", + " taurend = 600.2736560172848\n", + " tau_maxvis = 280.72217393163606\n", + " adotrad = 2.1564631333758785e-06\n", + " omega_de = 0.686462595914116\n", + " curv = 0.0\n", + " curvature_radius = 1.0\n", + " Ksign = 0.0\n", + " tau0 = 14143.924013172147\n", + " chi0 = 14143.924013172147\n", + " scale = 1.0\n", + " akthom = 3.857710657408332e-07\n", + " fHe = 0.07951538891741466\n", + " Nnow = 0.1879303473896489\n", + " z_eq = 3406.384189774261\n", + " grhormass = [1.9007956731729867e-12, 0.0, 0.0, 0.0, 0.0]\n", + " nu_masses = [356.65897015559267, 0.0, 0.0, 0.0, 0.0]\n", + " num_transfer_redshifts = 1\n", + " transfer_redshifts = [0.0]\n", + " PK_redshifts_index = [1, 0, 0, 0, 0, 0, 0, ...]\n", + " OnlyTransfers = False\n", + " HasScalarTimeSources = False\n", + " " + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "results" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "9eba8dd0", + "metadata": {}, + "outputs": [], + "source": [ + "Pk_nonlin_interp = results.get_matter_power_interpolator(nonlinear=True).P\n", + "Pk_CAMB = np.zeros(len(k_hmcode))\n", + "Pk_CAMB = Pk_nonlin_interp(zs[0], k_hmcode)" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "b1053706", + "metadata": {}, + "outputs": [], + "source": [ + "Pk_nonlin_interp = results.get_matter_power_interpolator(nonlinear=False).P\n", + "Pk_CAMB_lin = np.zeros(len(k_hmcode))\n", + "Pk_CAMB_lin = Pk_nonlin_interp(zs[0], k_hmcode)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "f8f7e7d8", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "class: \n", + " Params: \n", + " WantCls = False\n", + " WantTransfer = True\n", + " WantScalars = True\n", + " WantTensors = False\n", + " WantVectors = False\n", + " WantDerivedParameters = True\n", + " Want_cl_2D_array = True\n", + " Want_CMB = True\n", + " Want_CMB_lensing = True\n", + " DoLensing = True\n", + " NonLinear = NonLinear_none\n", + " Transfer: \n", + " high_precision = True\n", + " accurate_massive_neutrinos = False\n", + " kmax = 100.0\n", + " k_per_logint = 0\n", + " PK_num_redshifts = 1\n", + " PK_redshifts = [0.0]\n", + " want_zstar = False\n", + " want_zdrag = False\n", + " min_l = 2\n", + " max_l = 2500\n", + " max_l_tensor = 600\n", + " max_eta_k = 5000.0\n", + " max_eta_k_tensor = 1200.0\n", + " ombh2 = 0.022032\n", + " omch2 = 0.12038\n", + " omk = 0.0\n", + " omnuh2 = 0.0006445117284262014\n", + " H0 = 67.556\n", + " TCMB = 2.725\n", + " YHe = 0.24\n", + " num_nu_massless = 2.0293333333333337\n", + " num_nu_massive = 1\n", + " nu_mass_eigenstates = 1\n", + " share_delta_neff = False\n", + " nu_mass_degeneracies = [1.0146666666666666]\n", + " nu_mass_fractions = [1.0]\n", + " nu_mass_numbers = [1]\n", + " InitPower: \n", + " tensor_parameterization = tensor_param_rpivot\n", + " ns = 0.9619\n", + " nrun = 0.0\n", + " nrunrun = 0.0\n", + " nt = -0.0\n", + " ntrun = -0.0\n", + " r = 0.0\n", + " pivot_scalar = 0.05\n", + " pivot_tensor = 0.05\n", + " As = 2.215e-09\n", + " At = 1.0\n", + " Recomb: \n", + " min_a_evolve_Tm = 0.0011098779505118728\n", + " RECFAST_fudge = 1.125\n", + " RECFAST_fudge_He = 0.86\n", + " RECFAST_Heswitch = 6\n", + " RECFAST_Hswitch = True\n", + " AGauss1 = -0.14\n", + " AGauss2 = 0.079\n", + " zGauss1 = 7.28\n", + " zGauss2 = 6.73\n", + " wGauss1 = 0.18\n", + " wGauss2 = 0.33\n", + " Reion: \n", + " Reionization = True\n", + " use_optical_depth = False\n", + " redshift = 10.0\n", + " optical_depth = 0.0\n", + " delta_redshift = 0.5\n", + " fraction = -1.0\n", + " include_helium_fullreion = True\n", + " helium_redshift = 3.5\n", + " helium_delta_redshift = 0.4\n", + " helium_redshiftstart = 5.5\n", + " tau_solve_accuracy_boost = 1.0\n", + " timestep_boost = 1.0\n", + " max_redshift = 50.0\n", + " DarkEnergy: \n", + " w = -1.0\n", + " wa = 0.0\n", + " cs2 = 1.0\n", + " use_tabulated_w = False\n", + " NonLinearModel: \n", + " Min_kh_nonlinear = 0.005\n", + " halofit_version = mead2020_feedback\n", + " HMCode_A_baryon = 3.13\n", + " HMCode_eta_baryon = 0.603\n", + " HMCode_logT_AGN = 7.8\n", + " Accuracy: \n", + " AccuracyBoost = 1.0\n", + " lSampleBoost = 1.0\n", + " lAccuracyBoost = 1.0\n", + " AccuratePolarization = True\n", + " AccurateBB = False\n", + " AccurateReionization = True\n", + " TimeStepBoost = 1.0\n", + " BackgroundTimeStepBoost = 1.0\n", + " IntTolBoost = 1.0\n", + " SourcekAccuracyBoost = 1.0\n", + " IntkAccuracyBoost = 1.0\n", + " TransferkBoost = 1.0\n", + " NonFlatIntAccuracyBoost = 1.0\n", + " BessIntBoost = 1.0\n", + " LensingBoost = 1.0\n", + " NonlinSourceBoost = 1.0\n", + " BesselBoost = 1.0\n", + " LimberBoost = 1.0\n", + " SourceLimberBoost = 1.0\n", + " KmaxBoost = 1.0\n", + " neutrino_q_boost = 1.0\n", + " SourceTerms: \n", + " limber_windows = False\n", + " limber_phi_lmin = 100\n", + " counts_density = True\n", + " counts_redshift = True\n", + " counts_lensing = False\n", + " counts_velocity = True\n", + " counts_radial = False\n", + " counts_timedelay = True\n", + " counts_ISW = True\n", + " counts_potential = True\n", + " counts_evolve = False\n", + " line_phot_dipole = False\n", + " line_phot_quadrupole = False\n", + " line_basic = True\n", + " line_distortions = True\n", + " line_extra = False\n", + " line_reionization = False\n", + " use_21cm_mK = True\n", + " z_outputs = []\n", + " scalar_initial_condition = initial_adiabatic\n", + " InitialConditionVector = []\n", + " OutputNormalization = 1\n", + " Alens = 1.0\n", + " MassiveNuMethod = Nu_best\n", + " DoLateRadTruncation = True\n", + " Evolve_baryon_cs = False\n", + " Evolve_delta_xe = False\n", + " Evolve_delta_Ts = False\n", + " Do21cm = False\n", + " transfer_21cm_cl = False\n", + " Log_lvalues = False\n", + " use_cl_spline_template = True\n", + " SourceWindows = []\n", + " CustomSources: \n", + " num_custom_sources = 0\n", + " c_source_func = None\n", + " custom_source_ell_scales = []\n", + " ThermoDerivedParams = [13.778237951578754, 1090.3607781945418, 144.6205434765629, 1.0431747230735924, 13.863501509167648, 1059.2264944507895, 147.39116572425826, 0.1405167959541272, 0.161268185730211, 3406.384189774261, 0.01039177698287806, 0.8132312476995828, 0.44965233905835805]\n", + " flat = True\n", + " closed = False\n", + " grhocrit = 1.523378082476592e-07\n", + " grhog = 8.248612717308974e-12\n", + " grhor = 1.873320308646176e-12\n", + " grhob = 7.354171810491997e-09\n", + " grhoc = 4.018224412432038e-08\n", + " grhov = 1.0457420730555495e-07\n", + " grhornomass = 3.801591346345974e-12\n", + " grhok = 0.0\n", + " taurst = 205.5044921823356\n", + " dtaurec = 5.137612304558391\n", + " taurend = 600.2736560172848\n", + " tau_maxvis = 280.72217393163606\n", + " adotrad = 2.1564631333758785e-06\n", + " omega_de = 0.686462595914116\n", + " curv = 0.0\n", + " curvature_radius = 1.0\n", + " Ksign = 0.0\n", + " tau0 = 14143.924013172147\n", + " chi0 = 14143.924013172147\n", + " scale = 1.0\n", + " akthom = 3.857710657408332e-07\n", + " fHe = 0.07951538891741466\n", + " Nnow = 0.1879303473896489\n", + " z_eq = 3406.384189774261\n", + " grhormass = [1.9007956731729867e-12, 0.0, 0.0, 0.0, 0.0]\n", + " nu_masses = [356.65897015559267, 0.0, 0.0, 0.0, 0.0]\n", + " num_transfer_redshifts = 1\n", + " transfer_redshifts = [0.0]\n", + " PK_redshifts_index = [1, 0, 0, 0, 0, 0, 0, ...]\n", + " OnlyTransfers = False\n", + " HasScalarTimeSources = False\n", + " " + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "results" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "60956d93", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "HMcode parameters\n", + "Halo mass range: 10^0.0 -> 10^18.0 Msun/h\n", + "Omega_m: 0.313\n", + "Neutrino mass fraction: 0.45%\n", + "Linear growth at z=0: 0.787\n", + "\n", + "Redshift: 0.0\n", + "Scale factor: 1.0\n", + "Omega_m(z): 0.313\n", + "Un-normalisaed growth (= a for a << 1): 0.787\n", + "Normalised growth (= 1 at z = 0): 1.0\n", + "Accumulated growth (= a for a << 1): 0.933\n", + "Linear collapse threshold: 1.676\n", + "Virial halo overdensity: 302.6\n", + "Lagrangian radius range: 0.00014 -> 140.0 Mpc/h\n", + "RMS in matter field range: 15.68 -> 0.04282\n", + "Peak height range: 0.1068 -> 39.13\n", + "Non-linear Lagrangian radius: 2.484 Mpc/h\n", + "RMS in matter field at 8 Mpc/h: 0.8407\n", + "RMS in matter displacement field: 6.036 Mpc/h\n", + "Effective index at collapse scale: -1.992\n", + "Two-halo damping wavenumber; kd: 0.06885 h/Mpc\n", + "Two-halo fractional damping; f: 0.229\n", + "Two-halo damping power; nd: 2.853\n", + "One-halo damping wavenumber; k*: 0.06698 h/Mpc\n", + "Halo bloating; eta: 0.1365\n", + "Minimum halo concentration; B: 5.196\n", + "Transition smoothing; alpha: 0.7323\n", + "Rnl: 2.4840925771079587\n", + "\n", + "zform: [13.14794282 13.06409988 12.98058431 12.89739613 12.81452791 12.73198331\n", + " 12.6497585 12.56784465 12.48625048 12.4049669 12.32398849 12.2433201\n", + " 12.1629564 12.08289735 12.00313037 11.92366773 11.84450327 11.76562985\n", + " 11.68704703 11.60874636 11.53074419 11.45301482 11.37557564 11.29840755\n", + " 11.2215305 11.14491278 11.06857542 10.99250708 10.91670739 10.8411763\n", + " 10.76591403 10.69090598 10.61615084 10.54164732 10.46741248 10.39342956\n", + " 10.31969826 10.24619799 10.17294759 10.09994777 10.02717517 9.95465319\n", + " 9.88235647 9.81031166 9.73849132 9.66689425 9.5955193 9.52436548\n", + " 9.45343202 9.38271843 9.31222454 9.24190784 9.17185251 9.10197071\n", + " 9.03230678 8.96286251 8.89358335 8.82452282 8.75568391 8.68700384\n", + " 8.61854552 8.55024159 8.48208392 8.41422981 8.34644321 8.27888135\n", + " 8.21145865 8.14426765 8.0772132 8.01029027 7.94348701 7.87692743\n", + " 7.81048734 7.74430425 7.67809426 7.61214374 7.54630061 7.48073302\n", + " 7.41510342 7.34974962 7.2844961 7.21934157 7.15427987 7.08929808\n", + " 7.02437248 6.95980946 6.8953182 6.83090312 6.76656489 6.70230001\n", + " 6.63809957 6.57394656 6.50981039 6.44618362 6.38213566 6.31863511\n", + " 6.25515425 6.19119811 6.12785175 6.06453793 6.00126132 5.93802241\n", + " 5.87481663 5.81163215 5.74844559 5.68521394 5.6231209 5.560109\n", + " 5.4969828 5.43356696 5.37212488 5.308874 5.2474269 5.18425871\n", + " 5.12296718 5.05970633 4.99874982 4.93499438 4.87463886 4.81365995\n", + " 4.75236366 4.69100262 4.62975744 4.56872675 4.50652852 4.44587088\n", + " 4.38542028 4.32510534 4.26348993 4.20325709 4.14318681 4.0833048\n", + " 4.02224761 3.96264477 3.90330264 3.84401932 3.78351654 3.72444348\n", + " 3.66572558 3.60721237 3.54761664 3.48944434 3.43154866 3.37376032\n", + " 3.31490494 3.25754858 3.20055381 3.14364536 3.08566256 3.02917045\n", + " 2.97302441 2.91699198 2.85998446 2.80436955 2.74908924 2.69401481\n", + " 2.63917605 2.58323345 2.52890256 2.47476329 2.42087269 2.36591117\n", + " 2.31253283 2.25935835 2.20643774 2.15246433 2.10006022 2.04786107\n", + " 1.99591689 1.94294757 1.89152142 1.84030148 1.78933746 1.73736946\n", + " 1.68691743 1.63667055 1.58667676 1.5356953 1.48619751 1.43689899\n", + " 1.38784474 1.33781191 1.28922389 1.24082081 1.19264413 1.14348534\n", + " 1.0957212 1.04811363 1.00069818 0.9522748 0.90517592 0.8581788\n", + " 0.81130847 0.76336101 0.71664072 0.66994607 0.62330431 0.57551414\n", + " 0.52886052 0.48213742 0.43535389 0.38727521 0.34016825 0.29279743\n", + " 0.2451341 0.19586231 0.14724404 0.09796706 0.04794443 0.\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0. 0. ]\n", + "HMcode predictions complete for 1 redshifts\n", + "Total HMcode run time: 0.253s\n" + ] + } + ], + "source": [ + "Pk = hmcode.power(k_hmcode, zs, results, verbose=True)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ef47db63", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "f2a28d4f", + "metadata": {}, + "outputs": [], + "source": [ + "interp, _, k_interp = results.get_matter_power_interpolator(nonlinear=False, \n", + " return_z_k=True,\n", + " extrap_kmax=1E10)\n", + "Pk_lin_interp = interp.P\n", + "kmin = k_interp[0] # Minimum wavenumber used for the CAMB interpolator [h/Mpc]\n" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "0080dcbd", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "7.401267066597939e-05" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "kmin" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "9877ba65", + "metadata": {}, + "outputs": [], + "source": [ + "z=0\n", + "Pk_lin_interp = interp.P\n", + "sigmaV = hmcode.cosmology.sigmaV(0., lambda k: Pk_lin_interp(z, k), kmin=kmin) " + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "8c8c14d4", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "6.035892896293832" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sigmaV" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "812adc25", + "metadata": {}, + "outputs": [], + "source": [ + "from classy import Class" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "a77ded6a", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'/home/groups/risahw/chto/miniconda3/envs/newenv4/lib/python3.9/site-packages/classy.cpython-39-x86_64-linux-gnu.so'" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import classy\n", + "classy.__file__" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "cb60dd8a", + "metadata": {}, + "outputs": [], + "source": [ + "h = 1#0.67556" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "2dfc92c9", + "metadata": {}, + "outputs": [], + "source": [ + "# Ranges\n", + "camb.set_params(verbose=True)\n", + "k_hmcode = np.logspace(-3, 1.5, 100) # Wavenumbers [h/Mpc]\n", + "k = k_hmcode*h #np.logspace(-3,np.log10(30),2000)\n", + "\n", + "\n", + "zs = [ 0.] # Redshifts\n", + "nonlinear = camb.nonlinear.Halofit()\n", + "nonlinear.set_params(halofit_version='mead2020_feedback',HMCode_logT_AGN=7.8)#, HMCode_logT_AGN=-20,)\n", + "pars = camb.CAMBparams(NonLinearModel =nonlinear)\n", + "\n", + "#This function sets up CosmoMC-like settings, with one massive neutrino and helium set using BBN consistency\n", + "pars.set_cosmology(H0=100*h, ombh2 = 0.02225, omch2 = 0.1198, \n", + " tau=0.079, num_massive_neutrinos=1, mnu=0.06,\n", + " standard_neutrino_neff=2.046)\n", + "pars.InitPower.set_params(As=2.2065e-9, ns=0.9645)\n", + "pars.set_for_lmax(4000, max_eta_k=12000, lens_potential_accuracy=4);\n", + "pars.set_accuracy(AccuracyBoost=3, lAccuracyBoost=3, lSampleBoost=3, DoLateRadTruncation=False )\n", + "pars.AccuratePolarization = True\n", + "pars.AccurateReionization = True\n", + "pars.YHe = 0.24\n", + "pars.omegak = 0.\n", + "#pars.set_nonlinear_lensing(True)\n", + "pars.set_matter_power(redshifts=zs, kmax=100.) # kmax should be much larger than the wavenumber of interest\n", + "\n", + "results = camb.get_results(pars)\n", + "\n", + "Pk_nonlin_interp = results.get_matter_power_interpolator(nonlinear=True).P\n", + "Pk_CAMB = Pk_nonlin_interp(zs[0], k_hmcode)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "ced9a5be", + "metadata": {}, + "outputs": [], + "source": [ + "# Ranges\n", + "camb.set_params(verbose=True)\n", + "k_hmcode = np.logspace(-3, 1.5, 100) # Wavenumbers [h/Mpc]\n", + "zs = [ 0.] # Redshifts\n", + "nonlinear = camb.nonlinear.Halofit()\n", + "nonlinear.set_params(halofit_version='mead2020')#, HMCode_logT_AGN=-20,)\n", + "pars = camb.CAMBparams(NonLinearModel =nonlinear,)\n", + "\n", + "#This function sets up CosmoMC-like settings, with one massive neutrino and helium set using BBN consistency\n", + "pars.InitPower.set_params(As=2.100549e-09, ns=0.9645)\n", + "pars.set_cosmology(H0=100*h, ombh2 = 0.02225, omch2 = 0.1198, \n", + " tau=0.06, num_massive_neutrinos=1, mnu=0.06,)\n", + " #nnu =3.046)\n", + "pars.set_for_lmax(4000, max_eta_k=12000, lens_potential_accuracy=4);\n", + "pars.set_accuracy(AccuracyBoost=3, lAccuracyBoost=3, lSampleBoost=3, DoLateRadTruncation=False )\n", + "pars.AccuratePolarization = True\n", + "pars.AccurateReionization = True\n", + "pars.YHe = 0.24\n", + "pars.omegak = 0.\n", + "#pars.set_nonlinear_lensing(True)\n", + "pars.set_matter_power(redshifts=zs, kmax=100.) # kmax should be much larger than the wavenumber of interest\n", + "\n", + "results = camb.get_results(pars)\n", + "\n", + "Pk_nonlin_interp = results.get_matter_power_interpolator(nonlinear=True).P\n", + "\n", + "Pk_CAMB_DMonly = Pk_nonlin_interp(zs[0], k_hmcode)\n", + "Pk_nonlin_interp = results.get_matter_power_interpolator(nonlinear=False).P\n", + "Pk_CAMB_lin = Pk_nonlin_interp(zs[0], k_hmcode)" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "51abf78e", + "metadata": {}, + "outputs": [], + "source": [ + "common_settings = {# wich output? ClTT, transfer functions delta_i and theta_i\n", + "\n", + " 'output': 'mPk',\n", + " 'lensing': 'no',\n", + " 'omega_b' : 0.02225,\n", + " 'omega_cdm' : 0.1198,\n", + " 'h' : h,\n", + " 'A_s' : 2.100549e-09,\n", + " 'tau_reio' : 0.06,\n", + " 'YHe' : 0.24,\n", + " 'non linear':\"HMcode2020\",\n", + "\n", + " #'halofit_k_per_decade' : 3000.,\n", + " #'l_switch_limber' : 40.,\n", + " #'accurate_lensing':1,\n", + " #'num_mu_minus_lmax' : 1000.,\n", + " #'delta_l_max' : 1000.,\n", + "#\n", + " #\"recfast_Nz0\":100000,\n", + " #\"tol_thermo_integration\":1.e-5,\n", + " #\"recfast_x_He0_trigger_delta\" : 0.01,\n", + " #\"recfast_x_H0_trigger_delta\" : 0.01,\n", + " #\"evolver\":0,\n", + " #\"k_min_tau0\":0.002,\n", + " #\"k_max_tau0_over_l_max\":10.,\n", + " #\"k_step_sub\":0.015,\n", + " #\"k_step_super\":0.0001,\n", + " #\"k_step_super_reduction\":0.1,\n", + " #\"start_small_k_at_tau_c_over_tau_h\" : 0.0004,\n", + " #\"start_large_k_at_tau_h_over_tau_k\" : 0.05,\n", + " #\"tight_coupling_trigger_tau_c_over_tau_h\":0.005,\n", + " #\"tight_coupling_trigger_tau_c_over_tau_k\":0.008,\n", + " #\"start_sources_at_tau_c_over_tau_h\" : 0.006,\n", + " #\"l_max_g\":50,\n", + " #\"l_max_pol_g\":25,\n", + " #\"l_max_ur\":50,\n", + " #\"tol_perturb_integration\":1.e-6,\n", + " #\"perturb_sampling_stepsize\":0.01,\n", + " #\"radiation_streaming_approximation\" : 2,\n", + " #\"radiation_streaming_trigger_tau_over_tau_k\" : 240.,\n", + " #\"radiation_streaming_trigger_tau_c_over_tau\" : 100.,\n", + " #\"ur_fluid_approximation\" : 2,\n", + " #\"ur_fluid_trigger_tau_over_tau_k\" : 50.,\n", + " #\"ncdm_fluid_approximation\" : 3,\n", + " #\"ncdm_fluid_trigger_tau_over_tau_k\" : 51.,\n", + " #\"l_logstep\":1.026,\n", + " #\"l_linstep\":25,\n", + " #\"hyper_sampling_flat\" : 12.,\n", + " #\"hyper_sampling_curved_low_nu\" : 10.,\n", + " #\"hyper_sampling_curved_high_nu\" : 10.,\n", + " #\"hyper_nu_sampling_step\" : 10.,\n", + " #\"hyper_phi_min_abs\" : 1.e-10,\n", + " #\"hyper_x_tol\" : 1.e-4,\n", + " #\"hyper_flat_approximation_nu\" : 1.e6,\n", + " #\"q_linstep\":0.20,\n", + " #\"q_logstep_spline\": 20.,\n", + " #\"q_logstep_trapzd\" : 0.5,\n", + " #\"q_numstep_transition\" : 250,\n", + " #\"transfer_neglect_delta_k_S_t0\" : 100.,\n", + " #\"transfer_neglect_delta_k_S_t1\" : 100.,\n", + " #\"transfer_neglect_delta_k_S_t2\" : 100.,\n", + " #\"transfer_neglect_delta_k_S_e\" : 100.,\n", + " #\"transfer_neglect_delta_k_V_t1\" : 100.,\n", + " #\"transfer_neglect_delta_k_V_t2\" : 100.,\n", + " #\"transfer_neglect_delta_k_V_e\" : 100.,\n", + " #\"transfer_neglect_delta_k_V_b\" : 100.,\n", + " #\"transfer_neglect_delta_k_T_t2\" : 100.,\n", + " #\"transfer_neglect_delta_k_T_e\" : 100.,\n", + " #\"transfer_neglect_delta_k_T_b\" : 100.,\n", + " #\"neglect_CMB_sources_below_visibility\" : 1.e-30,\n", + " #\"transfer_neglect_late_source\" : 3000.,\n", + "#\n", + " 'P_k_max_1/Mpc':40,\n", + " 'hmcode2020log10tagn':7.8,\n", + " 'N_ur':2.046,\n", + " 'N_ncdm':1,\n", + " 'm_ncdm' : 0.06\n", + "}\n", + "cosmo = Class()\n", + "cosmo.set(common_settings)\n", + "cosmo.compute()\n", + "pkclass = np.array([cosmo.pk(ki,0) for ki in k])\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "id": "97101ce2", + "metadata": {}, + "source": [ + "# " + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "166f4d10", + "metadata": {}, + "outputs": [ + { + "ename": "NameError", + "evalue": "name 'h' is not defined", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0;34m'omega_b'\u001b[0m \u001b[0;34m:\u001b[0m \u001b[0;36m0.02225\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 6\u001b[0m \u001b[0;34m'omega_cdm'\u001b[0m \u001b[0;34m:\u001b[0m \u001b[0;36m0.1198\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 7\u001b[0;31m \u001b[0;34m'h'\u001b[0m \u001b[0;34m:\u001b[0m \u001b[0mh\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 8\u001b[0m \u001b[0;34m'A_s'\u001b[0m \u001b[0;34m:\u001b[0m \u001b[0;36m2.100549e-09\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 9\u001b[0m \u001b[0;34m'n_s'\u001b[0m \u001b[0;34m:\u001b[0m \u001b[0;36m0.9645\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mNameError\u001b[0m: name 'h' is not defined" + ] + } + ], + "source": [ + "common_settings = {# wich output? ClTT, transfer functions delta_i and theta_i\n", + "\n", + " 'output': 'mPk',\n", + " 'lensing': 'no',\n", + " 'omega_b' : 0.02225,\n", + " 'omega_cdm' : 0.1198,\n", + " 'h' : h,\n", + " 'A_s' : 2.100549e-09,\n", + " 'n_s' : 0.9645,\n", + " 'tau_reio' : 0.06,\n", + " 'YHe' : 0.24,\n", + " 'non linear':\"HMcode2020\",\n", + "\n", + " #'halofit_k_per_decade' : 3000.,\n", + " 'l_switch_limber' : 40.,\n", + " 'accurate_lensing':1,\n", + " 'num_mu_minus_lmax' : 1000.,\n", + " 'delta_l_max' : 1000.,\n", + "\n", + " \"recfast_Nz0\":100000,\n", + " \"tol_thermo_integration\":1.e-5,\n", + " \"recfast_x_He0_trigger_delta\" : 0.01,\n", + " \"recfast_x_H0_trigger_delta\" : 0.01,\n", + " \"evolver\":0,\n", + " \"k_min_tau0\":0.002,\n", + " \"k_max_tau0_over_l_max\":10.,\n", + " \"k_step_sub\":0.015,\n", + " \"k_step_super\":0.0001,\n", + " \"k_step_super_reduction\":0.1,\n", + " \"start_small_k_at_tau_c_over_tau_h\" : 0.0004,\n", + " \"start_large_k_at_tau_h_over_tau_k\" : 0.05,\n", + " \"tight_coupling_trigger_tau_c_over_tau_h\":0.005,\n", + " \"tight_coupling_trigger_tau_c_over_tau_k\":0.008,\n", + " \"start_sources_at_tau_c_over_tau_h\" : 0.006,\n", + " \"l_max_g\":50,\n", + " \"l_max_pol_g\":25,\n", + " \"l_max_ur\":50,\n", + " \"tol_perturb_integration\":1.e-6,\n", + " \"perturb_sampling_stepsize\":0.01,\n", + " \"radiation_streaming_approximation\" : 2,\n", + " \"radiation_streaming_trigger_tau_over_tau_k\" : 240.,\n", + " \"radiation_streaming_trigger_tau_c_over_tau\" : 100.,\n", + " \"ur_fluid_approximation\" : 2,\n", + " \"ur_fluid_trigger_tau_over_tau_k\" : 50.,\n", + " \"ncdm_fluid_approximation\" : 3,\n", + " \"ncdm_fluid_trigger_tau_over_tau_k\" : 51.,\n", + " \"l_logstep\":1.026,\n", + " \"l_linstep\":25,\n", + " \"hyper_sampling_flat\" : 12.,\n", + " \"hyper_sampling_curved_low_nu\" : 10.,\n", + " \"hyper_sampling_curved_high_nu\" : 10.,\n", + " \"hyper_nu_sampling_step\" : 10.,\n", + " \"hyper_phi_min_abs\" : 1.e-10,\n", + " \"hyper_x_tol\" : 1.e-4,\n", + " \"hyper_flat_approximation_nu\" : 1.e6,\n", + " \"q_linstep\":0.20,\n", + " \"q_logstep_spline\": 20.,\n", + " \"q_logstep_trapzd\" : 0.5,\n", + " \"q_numstep_transition\" : 250,\n", + " \"transfer_neglect_delta_k_S_t0\" : 100.,\n", + " \"transfer_neglect_delta_k_S_t1\" : 100.,\n", + " \"transfer_neglect_delta_k_S_t2\" : 100.,\n", + " \"transfer_neglect_delta_k_S_e\" : 100.,\n", + " \"transfer_neglect_delta_k_V_t1\" : 100.,\n", + " \"transfer_neglect_delta_k_V_t2\" : 100.,\n", + " \"transfer_neglect_delta_k_V_e\" : 100.,\n", + " \"transfer_neglect_delta_k_V_b\" : 100.,\n", + " \"transfer_neglect_delta_k_T_t2\" : 100.,\n", + " \"transfer_neglect_delta_k_T_e\" : 100.,\n", + " \"transfer_neglect_delta_k_T_b\" : 100.,\n", + " \"neglect_CMB_sources_below_visibility\" : 1.e-30,\n", + " \"transfer_neglect_late_source\" : 3000.,\n", + " 'P_k_max_1/Mpc':40,\n", + " #'hmcode2020log10tagn':7.8\n", + " 'T_ncdm': 0.7133, # IMPORTANT, see page 11 of arxiv:1104.2935\n", + " 'N_ur':2.0308,\n", + " 'N_ncdm':1,\n", + " 'm_ncdm' : 0.06,\n", + " 'ncdm_fluid_approximation':3,\n", + " #'nonlinear_verbose' = 2\n", + "}\n", + "cosmo = Class()\n", + "cosmo.set(common_settings)\n", + "cosmo.compute()\n", + "pkclass_dm = np.array([cosmo.pk(ki,0) for ki in k])\n", + "pkclass_lin = np.array([cosmo.pk_lin(ki,0) for ki in k])\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "01959bae", + "metadata": {}, + "outputs": [ + { + "ename": "NameError", + "evalue": "name 'np' is not defined", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mpkclass_lin\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0marray\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mcosmo\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpk_lin\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mki\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mki\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mk\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;31mNameError\u001b[0m: name 'np' is not defined" + ] + } + ], + "source": [ + "pkclass_lin = np.array([cosmo.pk_lin(ki,0) for ki in k])\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "c3242ee8", + "metadata": {}, + "outputs": [ + { + "ename": "NameError", + "evalue": "name 'pkclass_lin' is not defined", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mpkamod\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mpkclass_lin\u001b[0m\u001b[0;34m+\u001b[0m\u001b[0;36m0.919\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mpkclass_dm\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0mpkclass_lin\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;31mNameError\u001b[0m: name 'pkclass_lin' is not defined" + ] + } + ], + "source": [ + "pkamod = pkclass_lin+0.919*(pkclass_dm-pkclass_lin)" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "5712f582", + "metadata": {}, + "outputs": [ + { + "ename": "NameError", + "evalue": "name 'pkclass_lin' is not defined", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msemilogx\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mk\u001b[0m\u001b[0;34m/\u001b[0m\u001b[0mh\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mpkclass_lin\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0mh\u001b[0m\u001b[0;34m**\u001b[0m\u001b[0;36m3\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m/\u001b[0m\u001b[0mPk_CAMB_lin\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlabel\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m\"linear\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;31mNameError\u001b[0m: name 'pkclass_lin' is not defined" + ] + } + ], + "source": [ + "plt.semilogx(k/h,(pkclass_lin*h**3)/Pk_CAMB_lin-1, label=\"linear\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "3dd10424", + "metadata": {}, + "outputs": [], + "source": [ + "plt.loglog(k/h,Pk_CAMB, label=\"camb\")\n", + "plt.loglog(k/h,(pkclass*h**3))\n", + "plt.legend()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "9f0e2a5f", + "metadata": {}, + "outputs": [], + "source": [ + "plt.loglog(k/h,Pk_CAMB_DMonly, label=\"camb dm\")\n", + "plt.loglog(k/h,(pkclass_dm*h**3))\n", + "plt.legend()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "21ad8815", + "metadata": {}, + "outputs": [], + "source": [ + "cosmo = Class()\n", + "cosmo.set(common_settings)\n", + "cosmo.compute()\n", + "pkclass = np.array([cosmo.pk(ki,0) for ki in k])" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "id": "116b1f42", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[]" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.semilogx(k/h,(pkclass*h**3)/(pkclass_dm*h**3)-1, label=\"hmcode class\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "id": "c4bf5ea1", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[]" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.semilogx(k/h,(Pk_CAMB)/(Pk_CAMB_DMonly)-1, label=\"hmcode class\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "id": "be1f0f30", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[]" + ] + }, + "execution_count": 28, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAY8AAAD8CAYAAACPWyg8AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAAsTAAALEwEAmpwYAAA2PElEQVR4nO3deXhU5dn48e+dyU4WsgdISEJIWGQRCKugKChorahVC1q1dXtdavdWbd/WWlvb/vp2eW2rVm1V3qq4Yd1FFHBFIew7SdgSSEgI2ReyPb8/coJJmISEmeRkZu7Pdc2VmTPPOXPnOHjn2cUYg1JKKdUbfnYHoJRSyvNo8lBKKdVrmjyUUkr1miYPpZRSvabJQymlVK9p8lBKKdVr/nYH0B9iY2NNamqq3WEopZRH2bBhwzFjTJyz93wieaSmppKdnW13GEop5VFE5GBX72mzlVJKqV7T5KGUUqrXNHkopZTqNU0eSimlek2Th1JKqV7T5KGUUqrXNHkopc5IfWMzm/PLaWpusTsUZQOfmOehlHKvNXuK+cVrOzh0vJYhkcFcO204i6cNJy48yO7QVD/RmodSqsdKq09w13Mb+eZT6/F3CA9ePo6R8WH8ceVezvndKv6wYje1DU12h6n6gdY8lFI9sv9YDd98ah2FFfX84MJM/uu8EQT5O7h+Rgp5JdX8bVUuf1+dx/KNh/nvr4zlkvGJiIjdYas+ojUPpdRpbTxUxtce/Yyq+iaW3TaD78zLIMjfcfL99Lgw/vz1s3np9plEhgRw13MbufPZjZTVNNgYtepLmjyUUt36aG8J1z7xOeHB/iy/YxaTh0d1WXZqajRv3j2bexaO5v1dR1n4vx/xcU5JP0ar+osmD6VUl/JKqrnr2Y2kxYax/I5ZpMYOOu05/g4/7pibzqt3nkNYkD/X/3Md7+882g/Rqv6kyUMp5VRVfSO3Lc0mwN+PJ26YQkxY70ZSjRsWyZt3z2FE3CD+sGIPLS2mjyJVdtDkoZQ6RUuL4QcvbuFAaS1/v3YySVGhZ3SdkEAH352XwZ6jVby9vdDNUSo7afJQSp3iyU/2sXLnUX52yRhmpse4dK1LJwxlZHwY//t+Ds1a+/AamjyUUh3UNjTx6Jo8zsuM41vnpLp8PYef8L35GeQUV/PWNq19eAtNHkqpDpaty6estpHvzBvptnkal4wbwqiEcP73/b1a+/ASmjyUUic1NLXwxMf7mJYWzZSUaLdd18+qfeSV1PDUp/vddl1lH00eSqmTXtt8mMKKeu6Ym+72ay84K5ELxybw67d28WJ2vtuvr/qXJg+lFNA6wuqxD/MYOySCuZlxbr++n5/w1yWTmJMRy72vbOX1LUfc/hmq/2jyUEoB8N7Oo+SV1HDH3PQ+W5MqOMDB49dnkZUSzfdf2Mynucf65HNU39PkoZQC4B8f5ZESE8rF4xL79HNCAh3885tZJEYE87dVuX36WarvaPJQSrHxUBmbDpVz0zlp+Dv6/n8L4cEBXDt9OGv3lbKvpLrPP0+5nyYPpRRPfXqA8GB/rpqS1G+fefWUJBx+wgvrtfPcE7kleYjIQhHZIyK5InKvk/eDROQF6/0vRCS13Xv3Wcf3iMiC011TRJ4Wkf0istl6nO2O30EpX3WkvI63txWyeGoyg4L6b4uf+Ihg5o+J5+UNBTQ06Va2nsbl5CEiDuDvwMXAWGCJiIztVOxmoMwYMxL4M/B769yxwGLgLGAh8IiIOHpwzR8bY862Hptd/R2U8mVL1x7EGMONs1L7/bOXTBtOaU0DK3XVXY/jjprHNCDXGLPPGNMALAMWdSqzCHjGev4yME9ah3MsApYZY04YY/YDudb1enJNpZSLahuaeH7dIRaOSzzjxQ9dMScjjmGDQ1i2/lC/f7ZyjTuSxzCgfaNlgXXMaRljTBNQAcR0c+7prvkbEdkqIn8WEafrRIvIbSKSLSLZJSW6GY1Szryy8TAVdY3cdE6aLZ/v8BO+PjWZj3OOcai01pYY1JnxxA7z+4DRwFQgGrjHWSFjzOPGmCxjTFZcnPsnPCnl6YwxLP3sABOSIpmS0vXugH3tmqxk/ASWrj1gWwyq99yRPA4Dye1eJ1nHnJYREX8gEijt5twur2mMKTStTgBP0drEpZTqpY2HyskprubaacP7bFJgTyRGBnPl5CSWrj2otQ8P4o7ksR7IEJE0EQmktQP89U5lXgdutJ5fBawyxhjr+GJrNFYakAGs6+6aIjLE+inA5cB2N/wOSvmcF9fnExro4NKJQ+0OhR8vGIW/Q3jo7V12h6J6yOXkYfVhfBtYAewCXjTG7BCRX4nIZVaxfwIxIpIL/AC41zp3B/AisBN4F7jLGNPc1TWtaz0rItuAbUAs8GtXfwelfE31iSbe2HqEr04YSlg/Ds/tSkJEMHfOTefdHUWszSu1OxzVA9JaAfBuWVlZJjs72+4wlBowlq07xL3Lt7H8zllMHm5ff0d79Y3NzPvjh0SGBPDG3bNx+NnXlKZaicgGY0yWs/c8scNcKeWiZevzyUwIY1LyYLtDOSk4wMG9F49mZ2ElL+mS7QOeJg+lfMzuoko255fz9an2dpQ7c+mEIZydPJi/rsqlsVlnnQ9kmjyU8jEvrM8n0OHHFZM6T8eyn4jw7fNHcri8jje36n4fA5kmD6V8SHOL4Y0tR7hwbALRgwLtDsepC0bHMyohnEfX5NGi+50PWJo8lPIh6/Yf51h1A5dOGGJ3KF3y8xPumJvO3qPVrNpdbHc4qguaPJTyIW9vKyQkwMHcUfF2h9KtSycMISkqhEfW5OILI0I9kSYPpXxEc4vh3R1FnD86jpBAh93hdMvf4cd/nTuCjYfKWbf/uN3hKCc0eSjlIzYcLKOk6gQXjxu4TVbtXZ2VTGxYII9/tM/uUJQTmjyU8hFvbyskyN+P80cP7CarNsEBDpZMG87qPcUcKa+zOxzViSYPpXxAS4vh3e1FnJcZNyCWI+mpa7KSMcCLOmlwwNHkoZQP2JRfTlFlPZeM94wmqzbJ0aHMyYjjxfX5NOuw3QFFk4dSPuCdbYUEOvy4YIxnNFm1t2RqMkcq6vlor27qNpBo8lDKyxljeGd7EbMzYokIDrA7nF6bPzaB2LAgnlunW9UOJJo8lPJyWwsqOFxex8XjEu0O5YwEOPy4akoSq3YXc7Sy3u5wlEWTh1Je7p3tRfj7CReOTbA7lDO2eGoyzS1GV9sdQDR5KOXFjDG8u72QmekxDA4dmGtZ9URq7CDOGRnDvz8/RH1js93hKDR5KOXVdhdVcaC0loUe2mTV3l1zR1JUWc8y7fsYEDR5KOXF3tlehAhcNNbzk8fM9Bimp0Xz9zV51DVo7cNumjyU8mLvbi9kamo0ceFBdofiMhHhBxdmUlJ1gme/OGh3OD5Pk4dSXiq3uJq9R6u5xAuarNpMHxHD7JGxPLomj5oTTXaH49M0eSjlpd7dXgjAQg9ZCLGnvn9hJqU1DSxdq7UPO2nyUMpLvbO9iEnDB5MYGWx3KG41JSWKuaPieOLjfTryykaaPJTyQsdrGthxpJL5Yzx3bkd3bp0zguM1Dby1tdDuUHyWJg+lvNCGg2UATE2NtjmSvjErPYb0uEEsXXvA7lB8liYPpbxQ9oHjBDiECUmRdofSJ0SEG2elsqWggs355XaH45M0eSjlhbIPljFuWCTBAQN7u1lXXDk5ibAgf5Z+dsDuUHySJg+lvEx9YzPbCiq8tsmqTViQP1+bPIw3txZyrPqE3eH4HLckDxFZKCJ7RCRXRO518n6QiLxgvf+FiKS2e+8+6/geEVlwumuKSJp1jVzrmp67YI9SfWD74QoamluYkhJldyh97vqZqTQ0t/DCel0wsb+5nDxExAH8HbgYGAssEZGxnYrdDJQZY0YCfwZ+b507FlgMnAUsBB4REcdprvl74M/WtcqsayulLNlWZ7kvJI+R8WHMHhnLs58fpEV3GuxX7qh5TANyjTH7jDENwDJgUacyi4BnrOcvA/NERKzjy4wxJ4wx+4Fc63pOr2mdc4F1DaxrXu6G30Epr5F9oIy02EHEhnn+kiQ9cXVWEkcq6ll34LjdofgUdySPYUD7OmOBdcxpGWNME1ABxHRzblfHY4By6xpdfRYAInKbiGSLSHZJiW5fqXyDMYYNB4+T5QO1jjYXjk0gJMDBG1uO2B2KT/HaDnNjzOPGmCxjTFZcXJzd4SjVL/JKaiirbSQr1XeSR2igP/PHJvD2tkIam1vsDsdnuCN5HAaS271Oso45LSMi/kAkUNrNuV0dLwUGW9fo6rPcxhhDk34ZlQfZcLC16WZKinePtOrssolDKatt5JPcY3aH4jPckTzWAxnWKKhAWjvAX+9U5nXgRuv5VcAqY4yxji+2RmOlARnAuq6uaZ2z2roG1jVfc8Pv4NSB0lomP7iSO/69gefXHeJweV1ffZRSbpF9oIyo0ADS4wbZHUq/Ojczlohgf2266kf+py/SPWNMk4h8G1gBOIB/GWN2iMivgGxjzOvAP4H/E5Fc4DityQCr3IvATqAJuMsY0wzg7JrWR94DLBORXwObrGv3CQEuHjeED/eW8M72IgDGD4vkqxOH8JUJQxk2OKSvPlqpM7LhYBlTUqJoHVviO4L8HSwcl8jb24qob2z26smRA4W0/jHv3bKyskx2dvYZn2+MIae4mtW7i3l7WyFbCiqA1qGQl00cysXjE4kP966VS5XnOV7TwOQHV3LPwtHcMTfd7nD63Sc5x/jGP7/g0esmc/F471qG3i4issEYk+XsPZdrHr5ARMhMCCczIZz/Oi+dg6U1vLm1kDe2HOH+13fwwBs7mDcmgVtmpzEtLdrn/upTA8OWgnIAJg0fbGscdpmZHkNsWBBvbD2iyaMfaPI4Aykxg7jr/JHcdf5Ico5W8Z/Nh3nui0Os3HmU8cMiufXcEVwyLhF/h9cOZlMD0Jb8cvyktWnVFzn8hK+MT2TZ+nzKaxsYHKqLT/Ql/b+bizISwvnxgtGsvW8eD10xnpqGJr7z/Cbm/elDnv3ioG5Wo/rN5vxyMuLDGRTku38TLp42nBNNLbyYrcuV9DVNHm4SHODg2unDef/75/HYN6YwOCSAn726nXl//JDXtxzBF/qWlH2MMWzJL2dism/WOtqMGRLBtLRolq49SLMuV9KnNHm4mZ+fsHBcIv+56xz+ffN0IkMC+M7zm7jy0c/YdKjM7vCUl8o/XkdZbSMTkwfbHYrtvjkrlYKyOlbtLrY7FK+myaOPiAizM2J54+7Z/L+rJlBQVscVj3zGPS9vpVSXj1ZuttnqLJ+YNNjWOAaCi8YmMCQymGd0n48+pcmjjzn8hGuykln9o7ncdu4IXtlYwAV//JDn1x3SpizlNlvyywkO8GNUYrjdodjO3+HHN2ak8EnuMXKLq+wOx2tp8ugnYUH+/PSSMbz93TmMTgznvuXbuOWZbEqqtBaiXLc5v5xxQyMJ0BF+ACyemkygvx/PfHbQ7lC8ln7T+llmQjjP3zqDX1w6lo9zj7HwLx/xwa6jdoelPFhjcwvbD1dof0c7MWFBfHXCUF7ZWED1iabTn6B6TZOHDfz8hJtmp/Hm3bNJiAjm5meyefDNnTQ06SKMqvf2FFVxoqlFk0cn104fTm1DM+9sK7Q7FK+kycNGmQnhvHrXLL45K5V/frKfq/+xlvzjtXaHpTxM28zys7WzvIPJwweTGhPK8o19tvC2T9PkYbMgfwe/vOwsHvvGZPaVVPOVhz/m4xzdvEr13Jb8cqIHBZIcrQt1ticiXDk5ibX7Siko0z/K3E2TxwCxcNwQ3rp7DkMiQ/jmU+t5+tP9OhpL9cjm/HImJkXqmmpOXDGpdaPR1zbrUu3upsljABkeE8ord87i/FHx/PKNnfz01e26M5pyasPB4zz16X7uW76VnOJq7e/oQnJ0KNNSo1m+sUD/GHMzTR4DTFiQP49fP4U756bz/LpD3Lo0mxodLaLa2VVYydceXcsDb+zk3e1FzEiL4asTh9od1oB15eRh5JXUsNXaSkG5hyaPAcjPT/jJwtH89srxfLS3hMWPf67zQdRJO45UAvDaXeew8ecX8vxtM0iPC7M5qoHrkglDCPT3Y/nGArtD8SqaPAawJdOG88QNWeQUV/G1Rz9j/7Eau0NSA0BOcRWBDj/OGhqh/Rw9EBEcwIVjE3h9yxEdDu9GmjwGuHljEnj+1hlUn2jiqkc/Y6s1LFP5rpyj1YyIG6T7xfTC1yYPo6y2URdLdCP99nmAScOjePn2mYQEOlj8+Od8uFeH8vqynOIqMhJ0DaveODcjjrjwIF7eoPt8uIsmDw8xIi6M5XfMIjVmEDc/vZ53t+usWV9U29BE/vE6MuO1j6M3/B1+XDl5GKv3lFBcVW93OF5Bk4cHiY8I5oX/msGEpEi+/dwmVuwosjsk1c9yi6sByEjQ5NFbV09JprnF8J9NOuPcHTR5eJjw4ACeuWka44ZF8u3nNrJypy6q6EtyjrYlD2226q2R8WFMGj6Yl7J1zoc7aPLwQOHBASy9eRpjh0Rw57MbeF8TiM/Ya420SokOtTsUj3T1lGRyiqvZonM+XKbJw0NFBAew9ObpjBkSwR3PbtBl3X1Ero60csmlE4cQHODHS9nace4q/QZ6sMiQAP7vpumMTozgjn9vZNVuTSDebm9xFSO1s/yMRQQHsPCsRF7fcoT6xma7w/Fomjw8XGRoAP++eTqjEsO5/f828lnuMbtDUn2ktqGJgrI6MrW/wyXXZCVTVd/Em1t1xKIrNHl4gbYEkhITyp3PbdQ9QbxUXnENxkCG1jxcMjM9hoz4MJ7Slatd4lLyEJFoEVkpIjnWz6guyt1olckRkRvbHZ8iIttEJFdEHhZrrYWurisic0WkQkQ2W49fuBK/N4kMDeCJG7JoaTG6mKKXyimuAnSklatEhG+dk8aOI5WsP1Bmdzgey9Wax73AB8aYDOAD63UHIhIN3A9MB6YB97dLMo8CtwIZ1mNhD677sTHmbOvxKxfj9yqpsYP427WT2Xu0ih+9tIWWFv2rypvsPVpNgENIidGRVq66YtIwBocG8K9P9tsdisdyNXksAp6xnj8DXO6kzAJgpTHmuDGmDFgJLBSRIUCEMeZz01p3XNru/J5cVzlxbmYc9108hne2F/G31bl2h6PcKOdoFSNiwwjQkVYuCwl0sGTacN7bWaTNvGfI1W9hgjGmrdepCEhwUmYY0H5cXIF1bJj1vPPx0113pohsEZF3ROSsrgITkdtEJFtEsktKfGstqFvmpHHFpGH8aeVenUToRXKKqxmpM8vd5oaZKYgIS9cesDsUj3Ta5CEi74vIdiePRe3LWbUHt7eTdLruRiDFGDMR+Cvwn27Oe9wYk2WMyYqLi3N3WAOaiPDbK8czflgk339h88klLZTnqmtoJr+slsx47e9wlyGRIVw8LpFl6/O1j/AMnDZ5GGPmG2PGOXm8Bhy1mp+wfjpb7/gwkNzudZJ17LD1vPNxurquMabSGFNtPX8bCBCR2F78vj4jOMDBP66fQnCAH7ctzaairtHukJQLcourW0daac3DrW6anUZVfRPL1uukwd5ytdnqdaBt9NSNwGtOyqwALhKRKKuj/CJghdUsVSkiM6xRVje0O9/pdUUksd2IrGlW/KUu/g5ea+jgEB65bgqHjtfywOs77A5HuWDr4XIAxg6JsDcQLzN5eBTT06J54qN9ulFUL7maPH4HXCgiOcB86zUikiUiTwIYY44DDwLrrcevrGMAdwJPArlAHvBOd9cFrgK2i8gW4GFgsdGB2t2alhbN7eels3zTYZ1A6ME2HCwjNixQR1r1gbvOH0lRZT2vbtJtantDfOH/vVlZWSY7O9vuMGxT39jMgr98hJ8I73x3DsEBDrtDUr009w+ryUwI5/EbsuwOxesYY7jsb59SVd/IBz+ci8NPt/ZtIyIbjDFOv3Q65s8HBAc4+PXl49h/rIZH1uTZHY7qpZKqExworSUr1ekcXOUiEeGu89M5UFrLW9t0yZKe0uThI+ZkxHH52UN5dE0uudZMZeUZNh5qnQU9JUWTR1+5aGwiI+PDeGR1ri5Z0kOaPHzIf186ltBAf3700lYam7Vz0FNsPFhGoMOPs4ZG2h2K1/LzE+6cm87uoipW73E2aFR1psnDh8SGBfHQFePZnF/Owx/k2B2O6qHsg2WMT4rUvqo+9tWJQ0mICOLfnx+yOxSPoMnDx3xlwhCumpLE31fnsm7/8dOfoGx1oqmZbQUV2mTVDwIcflyTlcyaPcUcLq+zO5wBT5OHD/rlZWeRFBXK91/YrJMHB7jthytpaG5h8nBNHv3h61OTMcALOmnwtDR5+KCwIH/+svhsiirreeANnTw4kG08qJ3l/SkpKpTzMuN4Yf0hmrRfsFuaPHzU5OFR3HFeOss3HubDvb61cKQnyT54nJSYUOLCg+wOxWdcO204RytPsHqP/rvojiYPH/btC0YyIm4QP12+TReGG4CMMWw4WM4UbbLqVxeMjichIojnvjhodygDmiYPHxYc4OD3X5vA4fI6/vjeXrvDUZaKukYOltawZm8Jx6pPMEUnB/Yrf4cfX89KZs3eEu0474YmDx83NTWab8wYzlOf7WfTId2S025vbytk4gPvcd4f1vCtp9YDMD0t2uaofM81U1sXAl+2ToftdkWTh+KehaNJjAjmJy9vpb6x2e5wfNqHe0qICPbnf66eyBM3ZPHWd2YzUvfw6HdJUaGcPyqeZevzdUJtFzR5KMKDA3joyvHkFFfzvzp50Fab8suYkhLFVVOSuHBsgs4qt9H1M1IoqTrBezt0N05nNHkoAM4fFc/Xs5L5x4d5bM4vtzscn1RZ30hOcTWTtIN8QDg3M46kqBD+/bl2nDujyUOd9LNLx5AYEcwPX9yszVc22JpfgTEwafhgu0NRgMNPuHb6cNbuK9XFRJ3Q5KFOiggO4Hdfm0BeSQ1/Xqmjr/rbpkNliMDE5MF2h6Is12QlE+AQXe/KCU0eqoNzM+NYPDWZJz/Zz/bDFXaH41M25ZczMi6MiOAAu0NRltiwIC4eN4RXNhZQ26BzodrT5KFOcd/FY4gKDeSnr26juUX3NugPxhg2HSrTNawGoG/MSKGqvonXNh+xO5QBRZOHOkVkaAC/+OpYthZUsHTtAbvD8QkHSmspq23U/o4BaGpqFOOGRfD31bk0NOmw3TaaPJRTX50whPMy4/ifFXsorNBZtn2tbYKmjrQaeESEHy8YTUFZHc/rpMGTNHkop0SEX18+jmZjuP81XXm3r206VE5YkD8j48PsDkU5cW5GLNPTovnrqlxdB86iyUN1KTk6lO/Oy+S9nUdZtVsnSrnquS8O8d//2eb0vU35ZUxMjsThJ/0cleoJEeEnC0dzrPoET3263+5wBgRNHqpbN89OY2R8GPe/vkPnfrjow73FvJRdcMoghLqGZnYVVjEpWZusBrIpKVFcODaBf3y4j7KaBrvDsZ0mD9WtQH8/Hlw0jvzjdTyyJs/ucDxaZV0TJ5paONJppdZthytobjHaWe4BfnTRKKobmnhkTa7dodhOk4c6rZnpMSw6eyiPfZjH/mM1dofjsSrrW7f8zS2p7nC8rbP8bJ0cOOCNSgznyklJPPPZQfKP19odjq00eage+dklYwhy+PGL17ZjjM79OBNtySOvuGPy2FlYybDBIcSE6W6BnuCHF2UiAn/y8VUYNHmoHomPCOZHC0bxcc4xXt102O5wPFJlXesonbySjrW3XYWVjE7UZdc9xdDBIdw0O41XNx326VUYXEoeIhItIitFJMf66bTHT0RutMrkiMiN7Y5PEZFtIpIrIg+LiFjHrxaRHSLSIiJZna51n1V+j4gscCV+1TvXz0ghKyWKB97YSXFVvd3heBRjDFVtNY92zVb1jc3kldQwZkiEXaGpM3DH3HSiQgN46O1dPlsTd7XmcS/wgTEmA/jAet2BiEQD9wPTgWnA/e2SzKPArUCG9VhoHd8OXAl81OlaY4HFwFlW2UdExOHi76B6yM9P+P1VE6hrbObn/9Hmq96oaWimbZDVvnbJI7e4muYWo8nDw0QEB/CdeRl8llfKh3tL7A7HFq4mj0XAM9bzZ4DLnZRZAKw0xhw3xpQBK4GFIjIEiDDGfG5a/y+0tO18Y8wuY8yeLj5vmTHmhDFmP5BLa0JS/SQ9Lozvz89kxY6jvL2tyO5wPEZlXWutY0TcII5VN1Be2zrUc2dhJQBjhmizlae5bnoKKTGh/OrNnZxo8r1h7K4mjwRjTKH1vAhIcFJmGJDf7nWBdWyY9bzz8e50da1TiMhtIpItItklJb75l0FfuXVOGuOHRfKL17af7ARW3Wu7T21zOdr6PXYVVhIS4CAlZpBtsakzE+jvx68WjWNfSQ2PrPa9YeynTR4i8r6IbHfyWNS+nFV7GDDtGMaYx40xWcaYrLi4OLvD8Sr+Dj8eumI8pTUNPKZzP3qkrbP8bGsuR1u/x+7CKjITw3VmuYc6LzOOyyYO5dE1eeR2GkXn7U6bPIwx840x45w8XgOOWs1PWD+LnVziMJDc7nWSdeyw9bzz8e50dS3Vz8YnRbLo7KH885P9p0x6U6dqa7YaOySCQIcfeSXVGGPYVVTJWG2y8mg/v3QswQF+/PTVbbT40BYGrjZbvQ60jZ66EXjNSZkVwEUiEmV1lF8ErLCauypFZIY1yuqGLs7v/HmLRSRIRNJo7WRf5+LvoM7Qjy4ahQH++J5vj3fvibZmq+hBgaTGhpJXXENRZT3ltY3aWe7h4sKD+NlXxrBu/3Fe2pB/+hO8hKvJ43fAhSKSA8y3XiMiWSLyJIAx5jjwILDeevzKOgZwJ/AkrR3fecA71vlXiEgBMBN4S0RWWNfaAbwI7ATeBe4yxvheT9UAkRwdyrdmpbJ8UwE7j1TaHc6A1lbziAj2Jz0ujH0l1ew62VmuycPTXZOVzNTUKP7nvb0+swacS8nDGFNqjJlnjMmwmreOW8ezjTG3tCv3L2PMSOvxVLvj2VYTWLox5ttWvwnGmFeNMUnGmCBjTIIxZkG7c35jlR9ljHnHlfiV6+48fySRIQH89h3fHe/eE1X1rX0e4cEBpMeFcfB4LVvyWyeY6QRBzycifG9+JiVVJ3xmEq3OMFcuiQwJ4DsXZPBxzjHe26nLtnelsr6RkAAHgf5+pMcPornFsGJHEcnRIYTrnuVeYVZ6DOOHRfKPD/N8YvtmTR7KZdfPTGF0Yji/fH2HbpTThcq6JiJC/IHWuTIAu4uqGJ2oTVbeQkS4Y246B0prWbHD++dAafJQLgtw+PGbK8ZRWFHPX97XznNnKusbT9YwRsR9uVug9nd4lwVnJZIWO4hH1+R5fTOuJg/lFlNSolkyLZl/fXpAO8+dqKxvJCK4teYRFuRPYkQwgA7T9TIOP+G2c0ew7XAFn+WV2h1On9LkodzmnoWjiQwJ4Gf/8a3x7j3R2mz1Zd9GenzrjHKteXifKycPIz48yOs3jNLkodxmcGgg//2VMWw6VM5jH+nM8/aq6huJaNcxftbQSGIGBZIcFWpjVKovBPk7uHl2Gp/mlrIlv9zucPqMJg/lVldMGsZXxg/hj+/tZaO1Q56CyvovO8wBvjc/gzfuno2fLkvila6bkUJEsL9X1z40eSi3EhEeunI8QyKD+c7zm6io04UTjTFU1nWseYQG+jN0cIiNUam+FBbkzzfPSWPFjqPkHK2yO5w+oclDuV1kSAAPL5lEYUU9P12+zetHnQDc8e8NPNrFIpF1jc00tRidz+FjvjUrldBAR5ffC0+nyUP1icnDo/jhRZm8ta2Qj3OO2R1OnzpaWc8724t4c+sRp++3rajbvtlKeb+oQYFcO204r205Qv7xWrvDcTtNHqrP3Dw7jehBgTy/7pDdofSpD/e07hezu6jK6bpGbYsiRmjNw+fcMmcEDhH+tirX62rgmjxUnwnyd3DVlCRW7jzq1Xuer97TuhNBc4thx5GKU95v27u8/VBd5RsSI4NZMi2ZF7LzWfLE5ycXw/QGmjxUn1o8NZmmFsNL2QWnL+yBGptb+CTnGBeMjgdgc/6pyeNks1WwNlv5op9fOpYHLx/HnqIqvvLwx9z/2nYam1vsDstlmjxUnxoRF8bMETEsW3/IKycObjxYRtWJJq7JSmJIZLDTcf2VWvPwaf4OP66fkcKaH53P9TNSeGbtQW5bmk1dg2cv3a7JQ/W5JdOHk3+8jk/zvK/jfM3eEvz9hHNGxjIhKZKtBeWnlGnbyyNcax4+LTI0gAcWjeO3V45nzd4SbvjXFx49lF2Th+pzC85KICo0wCs7ztfsKWFKShThwQFMTB7MgdJaymsbOpSprG9rttKah4Il04bz1yWT2JxfzrVPfM6JJs+sgWjyUH2ureP8vR1HeXF9PlsLyqlt8Pyl24sq6tlVWMncUa39HWcnDQZgS0HHfo/KukYC/f0IDnD0d4hqgLp0wlD+umQSO45U8twXnvlHlSYP1S++MSOFwaEB/OSVrVz2t08Z/8v3+DTXs5uxPtzbOspq7qg4AMYlRSLCKf0elfVNWutQp1hwViIzR8Tw99W5HrkPjiYP1S9SYgbx+X3zWPXD83j0uskYY/hi//HTnziArdlTQmJE8MltZCOsLWZPTR6NOkFQnUJE+PHCURyrbuDpzw7YHU6vafJQ/cbf4ceIuDAuHj+E5OhQ8oqr7Q7JJWv3lTInIxaRLxc3nJg0mC0FFR0mhHVe10qpNpOHRzF/TAKPfZh3Sl/ZQKfJQ9liZFwYuR6cPCrqGimvbSQjIazD8bOTIzlWfYIjFV9Oiqysb9KRVqpLP1qQSfWJJv7x0T67Q+kVTR7KFiPjw9h/rIZmD537UVDWulZRUqf9OCa0dZq3a7qqqmvUOR6qS6MTI1g0cShPfbqf/cdq7A6nxzR5KFukx4XR0NzisQvGFZTVAZAU1XFZ9dFDwgl0+HVIHpX12myluvfjhaMJCXBw69Lsk8vZDHSaPJQt0uNbm3s8tenqy+TRseYR5O9g7NAINhz8ciOszhtBKdXZsMEh/P26yew/VsP3lm32iBq5Jg9li5FtyaPEU5NHLaGBDqJCT61RTB8RzZaCcuoamqlvbKahqUVrHuq0ZqXH8otLx/LB7mL++N4eu8M5LU0eyhaRIQHEhQd57IirgrI6kqJCOoy0ajNzRAyNzYYNB8t0XSvVKzfMTGHx1GQeWZN3crXmgUqTh7LNyLgwD6551J3SZNVmamo0Dj9h7b5juqKu6hUR4YFFZ5ERH8ZPl28b0P0fLiUPEYkWkZUikmP9jOqi3I1WmRwRubHd8Skisk1EckXkYbH+jBORq0Vkh4i0iEhWu/KpIlInIputx2OuxK/slR4/iNziao/cJKegrPaUzvI2g4L8mZAUydq8Ut0ISvVakL+D/3fVBI5W1vPQ27vtDqdLrtY87gU+MMZkAB9YrzsQkWjgfmA6MA24v12SeRS4FciwHgut49uBK4GPnHxmnjHmbOtxu4vxKxuNjAujqr6JkqoTdofSKxV1jVTVN3WZPKC16WprQQVF1nwP7TBXvTFpeBS3zBnB8+sODdhlfFxNHouAZ6znzwCXOymzAFhpjDlujCkDVgILRWQIEGGM+dy0/um5tO18Y8wuY8zA7zFSLhkZ37qsh6c1XR3uYqRVezPTY2hqMaza3dpurTUP1Vs/uDCTtNhB3PPK1gHZfOVq8kgwxhRaz4uABCdlhgH57V4XWMeGWc87Hz+dNBHZJCIfisicrgqJyG0iki0i2SUlJT24rOpvbSOuPK3T/MsJgl3XPLJSoglwCB/sOgpoh7nqveCA1uarwop6rnvyC0qrB1YN/bTJQ0TeF5HtTh6L2pezag993XhdCAw3xkwCfgA8JyIRzgoaYx43xmQZY7Li4uL6OCx1JhIigggL8ve4uR5dzfFoLyTQwdnJgymr1T4Pdeampkbz+PVT2Hu0iqsfWzugJtWeNnkYY+YbY8Y5ebwGHLWan7B+OhtbdhhIbvc6yTp22Hre+Xh3sZwwxpRazzcAeUDm6X4HNTCJCOlxgzyu2aqgrK7LOR7tzRwRA4C/nxAcoAMb1ZmZNyaBZ2+ZzrHqE1z12GcDZgkTV7/RrwNto6duBF5zUmYFcJGIRFkd5RcBK6zmrkoRmWGNsrqhi/NPEpE4EXFYz0fQ2snuWauJqQ7S48PIK3b+j6GspmFA7rLWNtLK2RyP9mZYySMiJOC0ZZXqzpSUaF66fRYNTS3c+exG6hvt/3fhavL4HXChiOQA863XiEiWiDwJYIw5DjwIrLcev7KOAdwJPAnk0lqLeMc6/woRKQBmAm+JyAqr/LnAVhHZDLwM3N7uWsoDjYwPo6iy/pQOwe2HK5j9+1U88MZOmyLrWndzPNqbnBJFoMNP53gotxiVGM4fr5nIrsJKHnp7l93h4NK32mpCmufkeDZwS7vX/wL+1UW5cU6Ovwq86uT4K8ArrsSsBpaRcVaneUkNZycPBlr/sv/W0+upaWhmxfYiHlw0Doef+/9yP1Ray73Lt3KkvI6y2kaamlt4+Y5ZjBnitBvtpIKyWrJSnU5p6iA4wMH0EdE0NLW4K2Tl4y4YncDNs9P45yf7mZUey8JxibbFog2xylZtCyQ+98VB9h6toqK2kW8+tZ76xma+c8FISmsa2NxpZz53+d27u9icX86EpMFcNnEodY3NvLOtsNtzKuoaqTzNHI/2/vL1s/nrkknuCFcpAO5ZOJoJSZH85OUttnaga/JQtkqNGcSs9BhezC7goj9/xMzffcDB0hr+cf0Ubp4zAoefsGr3Ubd/7s4jlby9rYhbZqfx8JJJPHj5OCYmD+bDnO4nZPVkjkd7MWFBxEcEuxyvUm0C/f3465JJGAO3Ls2mupv9z7/YV8rRyvou33eFJg9lK4ef8NytM/j8vnk8ePk4ZqXH8vDiScxKjyUyJICpqVF8sMv9C8T9+f29hAf7c/PsESePnZcZx9aCcspqut4OtCdzPJTqaykxg/jbdZPZe7SK7y3b5HQJ98Plddz2fxv4yctb+yQGTR5qQEiMDOb6GSk8eWMWF48fcvL4vNEJ7C6qOvk/bXfYVlDByp1HuXXOCCLbDbc9NzMOY+DjbpaDOFzeWvMYNliTh7LXeZlx/PKys3h/VzG/f7fjGlhNzS18f9lmmppbeOCys/rk8zV5qAHtgjHxAKze7b7ax59W7mFwaADfOie1w/GJSYOJDAngo71dr0hQUFZHSICD6EGBbotHqTN1w8xUbpyZwuMf7eOht3edbML666pc1h04zm+uGE9q7KA++WwdQ6gGtBGxg0iNCeWD3cVcPzPV5ettzi9n9Z4SfrJwFOGdZn07/ITZGbF8tLcEY4zTuRk9neOhVH/5+aVjqW9s4fGP9vHqpsMsmZrM31bncuXkYVw+qScrPp0ZrXmoAU1EuGB0Ap/llVLb0HXHYE+9u70Ifz/hhi4S0XkZcRRXnWB3UZXT99s2gVJqoPB3+PH7qyaw/M5ZDB0cwsOrckmJGcSDi06ZBeFWmjzUgDd/TDwNTS18cpqRUD3x+b5SJiYPJizIeaV7TmYsQJdNVz2dIKhUf5s8PIpX75jFEzdksfSmaQzq4jvuLpo81ICXlRpNeJA/z6075HRUSU/VnGhi2+EKZoyI7rLMkMgQRiWE81HOqcljd1ElFXWNZCaGn3EMSvUlPz/hwrEJJEf3/R84mjzUgBfo78d352ewZk8JP3ppyxknkOyDZTS3GKanxXRb7tzMWNbvLzulmeyl7AICHMJX2o0GU8pXafJQHuGWOSP48YJRvLrpMD8+wwTy+b5S/P2EKSndLy1yXmY8Dc0trNnzZe2jsbmF/2w6zLzRCTrSSik0eSgPctf5I/nhhZks33SY357BwnBf7CtlQlLkaduCp4+IJi12EH9euZem5tZ1qdbsKaG0poGrs5K6PVcpX6HJQ3mUu+dl8NWJQ3kxO//k/9h7ouZEE1sLKk4uk96dAIcf9ywcRU5xNS9taN3s8qXsfGLDgjgvUzcWUwo0eSgPdPG4RCrrm9jUiwUTNxwso6nFML0HyQNgwVmJZKVE8aeVe8k/Xsuq3cVcOXkY/g79J6MUaPJQHmh2RiwOP+nVrPPP95Xi8BOyTtPf0UZEuO+SMZRUneDGf62jqcVw1RRtslKqjSYP5XEiggPISoli9Z6ulxHp7Iv9x3vU39HelJQoLhmfyL5jNUxMiiQzQYfoKtVGk4fySOePjmdXYSVFFadfbrq2oYkt+eWnHaLrzD0LRxMa6OC6GSlnEqZSXkuTh/JI549qXTBxzZ7TN1219Xd0NzmwKykxg9j48wu5WpuslOpAk4fySJkJYQyNDGZ1D5LHO9uLCPT3Iyu198kDWreT1YUQlepIk4fySCLC3NHxfJJzrNs9wo/XNLB8YwFXnD2sy/WslFK9p8lDeazzR8VT09BM9oHjXZZ57ouD1De2cPOctH6MTCnvp8lDeaxZ6TEEOvy6bLpqaGph6dqDzMmI1ZFSSrmZJg/lsQYF+TN9RDSvbT5CZX3jKe+/ufUIxVUnuGXOCCdnK6VcoclDebQfXJjJseoTPPjGzg7HjTE8+fF+MuLDODcj1qbolPJemjyUR5s0PIrbz0vnpQ0FrNp99OTxNXtL2FlYyc2z03SklFJ9QJOH8njfnZ/BqIRw7n1lG/nHa3ngjR3c8kw2wwaH9Okezkr5Mk0eyuMF+Tv44zUTKa1p4Lw/rObpzw6weGoyb949m+AAh93hKeWVXEoeIhItIitFJMf66XTVORG50SqTIyI3tjs+RUS2iUiuiDwsVvuCiPxBRHaLyFYReVVEBrc75z6r/B4RWeBK/Mp7jBsWyc8uGcPsjDje+PZsfnPFeKJ00yal+oyrNY97gQ+MMRnAB9brDkQkGrgfmA5MA+5vl2QeBW4FMqzHQuv4SmCcMWYCsBe4z7rWWGAxcJZV9hER0T8tFQA3zU5j6U3TGDcs0u5QlPJ6riaPRcAz1vNngMudlFkArDTGHDfGlNGaGBaKyBAgwhjzuTHGAEvbzjfGvGeMadtA+nOgbWGhRcAyY8wJY8x+IJfWhKSUUqofuZo8EowxhdbzIiDBSZlhQH671wXWsWHW887HO7sJeOc01zqFiNwmItkikl1S0vOlu5VSSp3eaRf7EZH3gUQnb/2s/QtjjBER467ArM/+GdAEPNvbc40xjwOPA2RlZbk1LqWU8nWnTR7GmPldvSciR0VkiDGm0GqGcrZOxGFgbrvXScAa63hSp+OH2137m8ClwDyrWavtWsldnaOUUqp/uNps9TrQNnrqRuA1J2VWABeJSJTVUX4RsMJq7qoUkRnWKKsb2s4XkYXAT4DLjDG1nT5vsYgEiUgarZ3s61z8HZRSSvWSq8njd8CFIpIDzLdeIyJZIvIkgDHmOPAgsN56/Mo6BnAn8CStHd95fNm38TcgHFgpIptF5DHrWjuAF4GdwLvAXcaYZhd/B6WUUr0kX7YIea+srCyTnZ1tdxhKKeVRRGSDMSbL2Xs6w1wppVSv+UTNQ0RKgHKgot3hyG5ed34vFjjmxpA6X9/V8t297+y9nhzr6n64+150FY8rZbsq09PjvXk90L8b3ZXxtu9GT8p78r8VO74bKcaYOKdnGmN84gE83tPXTt7L7stYXC3f3fvO3uvJsa7uh7vvRW/vR0/KdlWmp8d7+V0Z0N+N3t4PT/5u9KS8J/9bsfu70fnhS81Wb/Tidef3+joWV8t3976z93pybKDej56U7apMT4/39rU7ufu70V0Zb/tu9KS8J/9bsfu70YFPNFu5SkSyTRedRr5G70VHej++pPeiI2+/H75U83DF43YHMIDovehI78eX9F505NX3Q2seSimlek1rHkoppXpNk4dSSqle0+ShlFKq1zR5uEBExojIYyLysojcYXc8dhORy0XkCRF5QUQusjseu4nICBH5p4i8bHcsdhCRQSLyjPWduM7ueOzmbd8Hn00eIvIvESkWke2dji+09kfPFZFTttVtzxizyxhzO3ANcE5fxtvX3HQ//mOMuRW4Hfh6X8bb19x0P/YZY27u20j7Vy/vy5XAy9Z34rJ+D7Yf9OZ+eNv3wWeTB/A0X+6ZDoC1H/rfgYuBscASERkrIuNF5M1Oj3jrnMuAt4C3+zd8t3saN9wPy39b53myp3Hf/fAmT9PD+0LrfjttO3966+rXT9Pz++FVTrsZlLcyxnwkIqmdDk8Dco0x+wBEZBmwyBjzW1o3pnJ2ndeB10XkLeC5Pgy5T7njflj7svwOeMcYs7GPQ+5T7vp+eJve3Bdat4lOAjbjpX+o9vJ+7Ozn8PqUV/4HdUGP90gHEJG5IvKwiPwDz695ONOr+wHcTeu+LleJyO19GZhNevv9iLH2opkkIvf1dXA26uq+LAe+JiKP0vfLmAwkTu+Ht30ffLbm4Q7GmDW0bqmrAGPMw8DDdscxUBhjSmnt//FJxpga4Ft2xzFQeNv3QWseHeke6R3p/ehI74dzel868on7ocmjo/VAhoikiUggsJjWfdN9ld6PjvR+OKf3pSOfuB8+mzxE5HlgLTBKRApE5GZjTBPwbWAFsAt40bTum+719H50pPfDOb0vHfny/dCFEZVSSvWaz9Y8lFJKnTlNHkoppXpNk4dSSqle0+ShlFKq1zR5KKWU6jVNHkoppXpNk4dSSqle0+ShlFKq1zR5KKWU6rX/D/zyyqiA5ApmAAAAAElFTkSuQmCC\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.semilogx(k/h,(pkclass_dm*h**3)/(Pk_CAMB_DMonly)-1, label=\"hmcode class\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "id": "d60a26e9", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Text(0.5, 0, '')" + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYIAAAD8CAYAAAB6paOMAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAAsTAAALEwEAmpwYAAAg1ElEQVR4nO3deXzU9Z3H8ddnZjIJCYEQEiIEJBwhXFrUiOtZQRA8VtzqtrZdpdbWdVt7e9Z2e9ldtd1a7Wotaqvb3a62tl3xRESp1lo1UBTkCodCkCMCgZCQYzLf/WMmGGJCEmYmvznez4e/x/x+39/3N/PJzx955/eb32HOOUREJHP5vC5ARES8pSAQEclwCgIRkQynIBARyXAKAhGRDKcgEBHJcAGvCzgaRUVFrqyszOsyRERSyrJly953zhV3bk/JICgrK6OqqsrrMkREUoqZvdtVuw4NiYhkOAWBiEiGUxCIiGQ4BYGISIaLSxCY2VwzW2dmG8zspi7mZ5vZo9H5r5lZWYd5N0fb15nZnHjUIyIivRdzEJiZH7gHOA+YDHzSzCZ36nYVsNc5Nx64E7g9uuxk4DJgCjAXuDf6fiIi0k/icfrodGCDc24TgJk9AswDVnfoMw/4bnT8MeA/zcyi7Y8455qBzWa2Ifp+r8ahrg9ZvmUv79c3Y2ZYtM0sMgAYRvQ/fGaRebS/AhZp/2Aekfc61H74cj7f4e2HBl/HafD5IuN+M8wHfjP8vsj7fDBuXf5MIiKxikcQlAJbO0zXAKd018c5FzKzfcDQaPtfOy1b2tWHmNnVwNUAxx577FEV+rMl1by4rvaolvVax1BoHwI+w+/zRV+NgP/wdr+Pw+Zn+a3H6YDP98G4PzIv4PMdeu8sv49gwEe2P9LWHnzZAT+DB2RRkJvFwOxApL/ZoZAzwO838oIB/D6FmkgySZkLypxzC4AFAJWVlUf1NJ3vXjSFbzSFaH8Wj8N1GAfnXPQ10hJ2kfGO7e3LhJ2LTkfGiba1hd2h92pfvs05wmGHw9EW5tB42BHpH10u3OE9Oo5Hpj8YD3Voa22LvHekLUybg1BbONLuOrSHHS2hMK1tbYfeI9QWPmw8FB1vbQsTaot8Rms4TLyfXZQX9JOXHSA36GdAMPLaHiJDcoMMHpB1aMjPCTCo/TUn8jowO6A9JJE4ikcQbANGdZgeGW3rqk+NmQWAwcDuXi4bN6OH5iXqrdNae9CEwmFaQ47mtjZaQpGwaA/Cgy1t7D/YSt3BVg40hw4t0x6Y7UF2oDnEgaYQB5pDHGxto7GljcaWEDv3N7FuRz17G1tobGk7Yj0+g0HRoCgYkEVxfjalBQMYUTCA0UNzGVc8kNFD8wgGdFKcSG/EIwjeAMrNbAyRX+KXAZ/q1GchMJ/Isf9LgRecc87MFgK/MbOfACOAcuD1ONQkceTzGUGfEcQHQYCshH5eSyjM/qZW9h1spb4pRH1TK/sPRl7rm0LsO9jK/qZW6hojwVOz9yCvb97D/qbQoffw+4yyoblMHjGYycMHMXF4PuOLB1JaMACfDk2JHCbmIIge878WWAT4gV865942s+8DVc65hcCDwK+jXwbvIRIWRPv9lsgXyyHgi865I/85KGkvGPBRNDCbooHZfVquvqmVd3c3srH2ABt2HWDdjnqWv7uXJ95871CfAVl+Rg/NZeSQyB5EyaAcCvOCDMkNMnRgkJL8HIYNyiYnSyevSeawVHx4fWVlpdNN56S36hpbWL8zEg4bdh3gnd0NvFd3kPfqDh62F9FR0cAgE48ZxOQRg5g0PJ/JwwcztjiPLL8ON0nqMrNlzrnKzu0p82WxyNEqyA0yfUwh08cUfmheY0uIvY2t7G1oYXdDCzv3N7FzXxNb9zayZns9D/3lHVpCYQCCfh9jivJoaQtT19hCQ3MbowoHMHnEYKaMGETRwGzygn5yswNk+SNnWAV8Rn5OgCG5QQpyg4edMeWcozkUpqUt8oV8dsBHdsCHmRGOflEfDn9Qa+TsLJ++KJe4UxBIRssNBsgNBigtGNDl/Na2MJtqG1izfT9rtu9nY+0BBgQDDB4QWW5TbQPL3tlz2OGn7phBwGeHzjZrC3e9N+4z6GYWfp+RG/STnx2gOD+b4vwcjhmcTfmwfCqOyaeiJJ8hecHe/vgigIJA5Iiy/L7IL9hj8rn4hC4vcQFg38FW9jW20tASorElREvog9Nv65tCh/Y4WkLhQxcjBvy+Q3sBAM2hMM2hMOGwIxDdo2i/TgMiwXGwpY2GlhD7D4aoPdBMzd5GXtu8m/oOh7gqSvI5fXwRZ5YXcfr4Ip09JT1SEIjEQft1D15wzrFzfzPrdtazats+Xt24m/9+7V1++cpmhuRmMW9aKZeeNJKppYM9qU+Sn74sFklDTa1tvLpxN79fXsNzq3fSEgrzd2ML+dqsCZwydqjX5YlHuvuyWEEgkub2Nbby2PIa7vvTRmrrmzl9/FBuPm+S9hAyUHdBoIOHImlucG4WV50xhpdvmMG3LpjE2u31zLvnFW5/di1NrbpsRxQEIhkjJ8vP584cywvfOJtLTizl50s3cv5dL/O3LXu9Lk08piAQyTCDc7O449KP8N9XnUJLW5iP/+JVfvPaFq/LEg8pCEQy1BnlRTz5pTM4bVwR3/zjSm7+w1s0h3SoKBMpCEQyWEFukF9+5mS+OGMc//v6Vq548HUONHd92w1JXwoCkQzn9xnXz5nIXZdNo+rdvVz+4GvsO9jqdVnSjxQEIgLAvGml3POpE1m1bR+fuv+v7Glo8bok6ScKAhE5ZO7UY7j/iko27DrApx94jfom7RlkAgWBiBzm7IphLLiikuqd9Vzz38sO3X1V0peCQEQ+5KMTirn9kuN5ZcNurvvdm4S7ux2qpAXddE5EunTJSSPZVd/M7c+uZXhBDjefN8nrkiRBFAQi0q1rPjqW9+oO8os/bWLqiMH8/UdGeF2SJIAODYlIt8yMb184mcrRQ7jx92+xfme91yVJAigIROSIggEf9376RPKyA/zzr5exX2cSpR0FgYj0aNigHO751Ils3dPI9b97k1S8fb10T0EgIr0yfUwhN86dyKK3d/Lbqq1elyNxpCAQkV676owxnDZuKN97YjXv7m7wuhyJEwWBiPSaz2f8+B8/gt9nfO3RFYTadLFZOlAQiEifjCgYwK0XT2X5ljru+9NGr8uROFAQiEifXfSREVx4/HDuWlLNuh06pTTVxRQEZlZoZovNrDr6OqSbfvOjfarNbH6H9qVmts7MVkSHYbHUIyL9w8z43kVTGJgd4Mbfv0WbbkGR0mLdI7gJWOKcKweWRKcPY2aFwHeAU4DpwHc6BcannXPTosOuGOsRkX4ydGA2//r3k1mxtY5fv/qO1+VIDGINgnnAw9Hxh4GLu+gzB1jsnNvjnNsLLAbmxvi5IpIELp5WylkTirlj0Tq21R30uhw5SrEGQYlzbnt0fAdQ0kWfUqDjScc10bZ2v4oeFvq2mVmM9YhIPzIzfnjxVJyDb/1xpS40S1E9BoGZPW9mq7oY5nXs5yJbQF+3gk87544DzowOlx+hjqvNrMrMqmpra/v4MSKSKKMKc/nGuRN4cV0tz63e6XU5chR6DALn3Czn3NQuhseBnWY2HCD62tUx/m3AqA7TI6NtOOfaX+uB3xD5DqG7OhY45yqdc5XFxcW9/flEpB/MP62MCSUD+cGTq2lqbfO6HOmjWA8NLQTazwKaDzzeRZ9FwLlmNiT6JfG5wCIzC5hZEYCZZQEXAqtirEdEPJDl9/Hdi6ZQszdyy2pJLbEGwW3AbDOrBmZFpzGzSjN7AMA5twf4AfBGdPh+tC2bSCC8Bawgspdwf4z1iIhHThtXxAXHDefepRuo2dvodTnSB5aKX+5UVla6qqoqr8sQkU621R3knP9YyoyKYfz8n07yuhzpxMyWOecqO7frymIRiZvSggF88ezxPLNqB69u3O11OdJLCgIRiavPnzWW0oIB3PrUal1xnCIUBCISVzlZfm6YW8Hb7+3n98trvC5HekFBICJxd9FHRnDCsQX8eNE6GppDXpcjPVAQiEjcmRnfumAyu+qb+YVuVZ30FAQikhAnjR7ChccPZ8HLm9i+T/chSmYKAhFJmBvnTiQchp88t97rUuQIFAQikjCjCnO54tTR/H55DWt37Pe6HOmGgkBEEurameMZmB3g9mfWel2KdENBICIJVZAb5AszxvPiulr+svF9r8uRLigIRCThPnNaGSMG53DbM2sJ6yKzpKMgEJGEy8ny8/VzK3irZh9Prtze8wLSrxQEItIv/uGEUiYek89/PLeOllDY63KkAwWBiPQLv8+4ce5E3t3dyCNvbPG6HOlAQSAi/ebsimJOGVPI3UuqOaBbTyQNBYGI9Bsz46bzJvL+gRYeeFlPMksWCgIR6VcnHDuE86Yew4KXNlFb3+x1OYKCQEQ8cN2cCppDYX72QrXXpQgKAhHxwLjigVx28ih+89oWNr/f4HU5GU9BICKe+MqscoIBHz9apFtPeE1BICKeGJafw+fPHMvTK3fwty17vS4noykIRMQznz9rLEUDg/z7M2txTree8IqCQEQ8MzA7wFfOKef1zXtYsmaX1+VkLAWBiHjqsunHMrYoj9ueXUuoTbee8IKCQEQ8leX3ccPciWzYdYDfVtV4XU5GUhCIiOfmTCmhcvQQ7nx+PQ269US/UxCIiOfMjJvPn0RtfTP369YT/S6mIDCzQjNbbGbV0dch3fR71szqzOzJTu1jzOw1M9tgZo+aWTCWekQkdZ00egjnHxe59cSu+iavy8kose4R3AQscc6VA0ui0135EXB5F+23A3c658YDe4GrYqxHRFLYDXMm0hIKc+fi9V6XklFiDYJ5wMPR8YeBi7vq5JxbAtR3bDMzA2YCj/W0vIhkhrKiPC4/dTSPvrGVdTvqe15A4iLWIChxzrU/d24HUNKHZYcCdc659m+GaoDS7jqb2dVmVmVmVbW1tUdXrYgkvS/PLGdgdoB/f2aN16VkjB6DwMyeN7NVXQzzOvZzkcsCE3ZpoHNugXOu0jlXWVxcnKiPERGPDckL8qWZ5SxdV8vL1fqjrz/0GATOuVnOualdDI8DO81sOED0tS+XBu4GCswsEJ0eCWzr6w8gIunnitNGM6pwAD98ag1tYd16ItFiPTS0EJgfHZ8PPN7bBaN7EC8Clx7N8iKSvrIDfm6cO5G1O+p5bNlWr8tJe7EGwW3AbDOrBmZFpzGzSjN7oL2Tmb0M/A44x8xqzGxOdNaNwNfNbAOR7wwejLEeEUkTFxw3nBOPLeDHz+kis0SzVLzjX2VlpauqqvK6DBFJsOVb9vKxe//Cl88p5+uzJ3hdTsozs2XOucrO7bqyWESS1onHDuHC44ez4KWNbN930Oty0paCQESS2o1zJxJ28ONFusgsURQEIpLURhXm8tnTx/D75TWsrNnndTlpSUEgIknvCzPGMTQvyK1PrdaTzBJAQSAiSW9QThZfnVXOa3qSWUIoCEQkJVw2/VjGFufxb8+soVVPMosrBYGIpIQsv4+bz5vEptoGHnlDF5nFk4JARFLGrEnDOGVMIT9dvJ76plavy0kbCgIRSRlmxi0XTGJ3Qws/X7rR63LShoJARFLK8SMLmDdtBA/+ebMuMosTBYGIpJzrzq3AOfQkszhREIhIyhlVmMvlp47msWU1epJZHCgIRCQlXTtjPHnZAW5/dq3XpaQ8BYGIpKQheUG+cPZ4Xli7i1c37va6nJSmIBCRlHXl6WUMH5zDbc+s0a0nYqAgEJGUlZPl52uzJ/BmzT4Wvb3D63JSloJARFLax04oZfywgfxo0TpCuvXEUVEQiEhKC/h9XHduBRtrG/jD8m1el5OSFAQikvLmTCnhI6MKuPP59TS1tnldTspREIhIyjMzbpxbwfZ9Tfz61Xe9LiflKAhEJC2cNq6IM8uLuGfpBt2Qro8UBCKSNq6fU0FdYysP/nmz16WkFAWBiKSN40cWMGdKCQ+8vJm9DS1el5MyFAQikla+cW4FDS0h7ntJt6nuLQWBiKSVCSX5XDytlIf/8g679jd5XU5KUBCISNr56qxyQm2Oe17c4HUpKSGmIDCzQjNbbGbV0dch3fR71szqzOzJTu0PmdlmM1sRHabFUo+ICMDooXn8Y+Uo/vf1rWyr08NrehLrHsFNwBLnXDmwJDrdlR8Bl3cz73rn3LTosCLGekREAPjSzPEA/OcL2ivoSaxBMA94ODr+MHBxV52cc0sAPT1CRPrNiIIBfHL6KH5XtZUtuxu9LiepxRoEJc657dHxHUDJUbzHD83sLTO708yyY6xHROSQL8wYj89n/OyFaq9LSWo9BoGZPW9mq7oY5nXs5yI3A+/rDcFvBiYCJwOFwI1HqONqM6sys6ra2to+foyIZKKSQTn80ymj+cPftrH5/Qavy0laPQaBc26Wc25qF8PjwE4zGw4Qfd3Vlw93zm13Ec3Ar4DpR+i7wDlX6ZyrLC4u7svHiEgGu+bssWT5jbue14PuuxProaGFwPzo+Hzg8b4s3CFEjMj3C6tirEdE5DDD8nO44tQyFr75Hht2HfC6nKQUaxDcBsw2s2pgVnQaM6s0swfaO5nZy8DvgHPMrMbM5kRn/Y+ZrQRWAkXArTHWIyLyIf981lhysvzcvUTfFXQlEMvCzrndwDldtFcBn+swfWY3y8+M5fNFRHpj6MBsrji1jF+8tJEvzRxPeUm+1yUlFV1ZLCIZ4eqzxpKb5ecu7RV8iIJARDJCYV6Q+aeV8dTK7azbocuaOlIQiEjG+PyZY8kLBrhric4g6khBICIZY0hekCtPL+PplTtYs32/1+UkDQWBiGSUz50xlvycAHcu1l5BOwWBiGSUwblZfO6MsTy3eicra/Z5XU5SUBCISMa58owyBg/I4qe62hhQEIhIBhqUk8XVZ41lydpd/G3LXq/L8ZyCQEQy0mdOK6MwL8idz+u6AgWBiGSkvOwA13x0LC+tr+WNd/Z4XY6nFAQikrEu/7syivOz+dGidUTupJ+ZFAQikrEGBP18aeZ4Xt+8h5er3/e6HM8oCEQko33i5FGUFgzgx89l7l6BgkBEMlp2wM9XzinnrZp9LF690+tyPKEgEJGM97ETSxlblMdPFq8nHM68vQIFgYhkvIDfx1dnT2DtjnoWvvme1+X0OwWBiAhw4XHDmTR8ED9ZvJ6WUNjrcvqVgkBEBPD5jBvmVLBlTyOPVm31upx+pSAQEYk6u6KYk8uGcPeSahpbQl6X028UBCIiUWbGDXMnUlvfzEN/ecfrcvqNgkBEpIOTywqZOXEY9y3dyL7GVq/L6RcKAhGRTq6fU0F9c4h7/7TB61L6hYJARKSTScMH8Q/TSvnVK+/wXt1Br8tJOAWBiEgXvjZ7Ajgy4uE1CgIRkS6MKszlilNH89iyGtbvrPe6nIRSEIiIdOOLM8aTFwxwx7PrvC4loRQEIiLdGJIX5Jqzx/H8mp1p/fCamILAzArNbLGZVUdfh3TRZ5qZvWpmb5vZW2b2iQ7zxpjZa2a2wcweNbNgLPWIiMTbZ08fQ8mgbP7t6TVpe5vqWPcIbgKWOOfKgSXR6c4agSucc1OAucBPzawgOu924E7n3HhgL3BVjPWIiMTVgKCfb8yu4G9b6nhm1Q6vy0mIWINgHvBwdPxh4OLOHZxz651z1dHx94BdQLGZGTATeOxIy4uIeO2Sk0ZSUZLPHc+uTcsb0sUaBCXOue3R8R1AyZE6m9l0IAhsBIYCdc659ht61AClR1j2ajOrMrOq2traGMsWEek9v8+46fyJvLO7kd+89q7X5cRdj0FgZs+b2aouhnkd+7nIwbNuD6CZ2XDg18CVzrk+R6pzboFzrtI5V1lcXNzXxUVEYnL2hGJOGzeUu1/YwP6m9Lr1RI9B4Jyb5Zyb2sXwOLAz+gu+/Rf9rq7ew8wGAU8Btzjn/hpt3g0UmFkgOj0S2BbrDyQikghmxjfPn8SehhZ+vnSj1+XEVayHhhYC86Pj84HHO3eIngn0R+C/nHPt3we070G8CFx6pOVFRJLF1NLB/MMJpTz4581sS6NbT8QaBLcBs82sGpgVncbMKs3sgWifjwNnAZ8xsxXRYVp03o3A181sA5HvDB6MsR4RkYS6bk4FBvzo2bVelxI3lornxVZWVrqqqiqvyxCRDHXHs2u5d+lGFl57OsePLPC6nF4zs2XOucrO7bqyWESkj/7l7HEMzQty61PpcZGZgkBEpI/yc7L46uwJvL55D8+t3ul1OTFTEIiIHIVPnjyK8cMGcvsza2ltS+2LzBQEIiJHIeD38c3zJ7Lp/Qb+56+pfZGZgkBE5CjNqBjG6eOHcteSavYdTN2LzBQEIiJHqf0is7qDrdzzYuo+31hBICISgykjBnPJiSN56JV32Lqn0etyjoqCQEQkRtedW4HfZ9yWoheZKQhERGJ0zOAcrj5rLE+9tZ1l7+71upw+UxCIiMTBP390LMPys/nBk6tT7iIzBYGISBzkBgNcN6eCFVvreOKt7T0vkEQUBCIicXLJiSOZPHwQtz+zlqbWNq/L6TUFgYhInPh9xrcumMS2uoP88pXNXpfTawoCEZE4Om18EbMmlXDvixvZVd/kdTm9oiAQEYmzWy6YRHOojZ88t97rUnpFQSAiEmdjivK44tQyHq3aytvv7fO6nB4pCEREEuDLM8spGJCVEqeTKghERBJgcG4WX589gb9uSv5nFigIREQS5JPTj6V82ED+7ek1NIeS93RSBYGISIIE/D6+feFk3t3dyEOvvON1Od1SEIiIJNBZE4qZOXEYP3thA7X1zV6X0yUFgYhIgt1ywSSaWtv4yeJ1XpfSJQWBiEiCjSseyBWnlvHIG8l5OqmCQESkH3zlnHIGJ+nppAoCEZF+MDg3i29ETydd9PYOr8s5jIJARKSffHL6sVSU5PPDp9ck1d1JYwoCMys0s8VmVh19HdJFn2lm9qqZvW1mb5nZJzrMe8jMNpvZiugwLZZ6RESSWfvppFv3JNfdSWPdI7gJWOKcKweWRKc7awSucM5NAeYCPzWzgg7zr3fOTYsOK2KsR0QkqZ1RXsTsySXc88IGdu1PjruTxhoE84CHo+MPAxd37uCcW++cq46OvwfsAopj/FwRkZR1y/mTaGkLc8ei5DidNNYgKHHOtT+TbQdQcqTOZjYdCAIbOzT/MHrI6E4zyz7CslebWZWZVdXW1sZYtoiId8qK8vjsGWN4bFkNb26t87qcnoPAzJ43s1VdDPM69nOR86G6PSfKzIYDvwaudM6Fo803AxOBk4FC4MbulnfOLXDOVTrnKouLtUMhIqnt2hnjKRqYzfeeeNvz00l7DALn3Czn3NQuhseBndFf8O2/6Hd19R5mNgh4CrjFOffXDu+93UU0A78CpsfjhxIRSXb5OVncMLeC5Vvq+L8V2zytJdZDQwuB+dHx+cDjnTuYWRD4I/BfzrnHOs1rDxEj8v3CqhjrERFJGZeeOJLjRw7mtmfW0tAc8qyOWIPgNmC2mVUDs6LTmFmlmT0Q7fNx4CzgM12cJvo/ZrYSWAkUAbfGWI+ISMrw+Yzv/P0Udu5v5t6lGzyrw7w+NnU0KisrXVVVlddliIjExVcf+RtPr9zBc187i7KivIR9jpktc85Vdm7XlcUiIh67+fxJZPmNHzy52pPPVxCIiHisZFAOXz6nnCVrd7FkTf8/1lJBICKSBK48fQzjivP43hOr+/0+RAoCEZEkEAz4+N5FU9myp5H7X9rUr5+tIBARSRJnlBdx/nHHcM/SDdTsbey3z1UQiIgkkVsumIxh3Prkmn77TAWBiEgSKS0YwLUzx/Ps2zt4aX3/3FdNQSAikmQ+d+YYyobm8t2Fb9MSCve8QIwUBCIiSSY74Oc7F01h0/sNPPjnxD/ARkEgIpKEZlQMY9akEn72QjU79iX2ATYKAhGRJPWvF04m1Oa4Y9HahH6OgkBEJEkdOzSXz54xhj8s38aKBD7ARkEgIpLEvjhjHEUDs/l+Ah9goyAQEUli+TlZXD9nAsu31PHEW9t7XuAoKAhERJLcpSeNYsqIQdz29BoOtsT/PkQKAhGRJOf3Gf964WQc8M7uhri/fyDu7ygiInF3ytih/On6GQQD8f/7XXsEIiIpIhEhAAoCEZGMpyAQEclwCgIRkQynIBARyXAKAhGRDKcgEBHJcAoCEZEMZ4m6iVEimdk+oLpT82BgXxfjnaeLgPfjWE7nz4pH/+769La9L9PJvj6ONL+reb1p625bife66K6eWPrHuj7Sads4Up94/FvpPC/Z10dvto3RzrniD811zqXcACw4Ulvn+Z3mVSW6llj7d9ent+19mU729XGk+T1tB738+RO2LpJxfaTTtnGkPvH4t9LFvKReH33dNjoOqXpo6Ike2jrP76p/ImuJtX93fXrb3tfpeIr3+jjS/J62g+7ajrStxFuyrY902jaO1Cce/1bSfds4JCUPDcXCzKqcc5Ve15EstD4+oHVxOK2Pw6Xz+kjVPYJYLPC6gCSj9fEBrYvDaX0cLm3XR8btEYiIyOEycY9AREQ6UBCIiGQ4BYGISIZTEHRgZpPM7D4ze8zM/sXrerxkZheb2f1m9qiZnet1PV4zs7Fm9qCZPeZ1LV4xszwzezi6XXza63q8lG7bQ9oEgZn90sx2mdmqTu1zzWydmW0ws5uO9B7OuTXOuWuAjwOnJ7LeRIrTuvg/59zngWuATySy3kSL0/rY5Jy7KrGV9r8+rpuPAY9Ft4uL+r3YBOvLuki37SFtggB4CJjbscHM/MA9wHnAZOCTZjbZzI4zsyc7DcOiy1wEPAU83b/lx9VDxGFdRH0rulwqe4j4rY908xC9XDfASGBrtFtbP9bYXx6i9+siraTNw+udcy+ZWVmn5unABufcJgAzewSY55z7d+DCbt5nIbDQzJ4CfpPAkhMmHuvCzAy4DXjGObc8wSUnVLy2jXTUl3UD1BAJgxWk1x+RQJ/Xxep+Li+h0u5/ZielfPAXDEQ25NLuOpvZ2WZ2t5n9gtTeI+hKn9YF8CVgFnCpmV2TyMI80tdtY6iZ3QecYGY3J7o4j3W3bv4AXGJmPyfxt19IFl2ui3TbHtJmjyAenHNLgaUel5EUnHN3A3d7XUeycM7tJvJ9ScZyzjUAV3pdRzJIt+0h3fcItgGjOkyPjLZlIq2Lw2l9dE/r5gMZsS7SPQjeAMrNbIyZBYHLgIUe1+QVrYvDaX10T+vmAxmxLtImCMzsf4FXgQozqzGzq5xzIeBaYBGwBvitc+5tL+vsD1oXh9P66J7WzQcyeV3opnMiIhkubfYIRETk6CgIREQynIJARCTDKQhERDKcgkBEJMMpCEREMpyCQEQkwykIREQynIJARCTD/T8QS5bNPnFzKwAAAABJRU5ErkJggg==\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.semilogx(k/h,(pkclass*h**3)/Pk_CAMB-1, label=\"hmcode class\")\n", + "plt.xlabel(\"\")" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "id": "6cc67d86", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[]" + ] + }, + "execution_count": 30, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "#plt.ylim(-2.5E-3,1E-3)\n", + "#plt.semilogx(k/h,Pk_hmcode[0]/Pk_CAMB-1, label=\"hmcode class\")" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "id": "38b0b927", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'output': 'mPk',\n", + " 'lensing': 'no',\n", + " 'omega_b': 0.02225,\n", + " 'omega_cdm': 0.1198,\n", + " 'h': 1,\n", + " 'A_s': 2.100549e-09,\n", + " 'n_s': 0.9645,\n", + " 'tau_reio': 0.06,\n", + " 'YHe': 0.24,\n", + " 'non linear': 'HMcode2020',\n", + " 'l_switch_limber': 40.0,\n", + " 'accurate_lensing': 1,\n", + " 'num_mu_minus_lmax': 1000.0,\n", + " 'delta_l_max': 1000.0,\n", + " 'recfast_Nz0': 100000,\n", + " 'tol_thermo_integration': 1e-05,\n", + " 'recfast_x_He0_trigger_delta': 0.01,\n", + " 'recfast_x_H0_trigger_delta': 0.01,\n", + " 'evolver': 0,\n", + " 'k_min_tau0': 0.002,\n", + " 'k_max_tau0_over_l_max': 10.0,\n", + " 'k_step_sub': 0.015,\n", + " 'k_step_super': 0.0001,\n", + " 'k_step_super_reduction': 0.1,\n", + " 'start_small_k_at_tau_c_over_tau_h': 0.0004,\n", + " 'start_large_k_at_tau_h_over_tau_k': 0.05,\n", + " 'tight_coupling_trigger_tau_c_over_tau_h': 0.005,\n", + " 'tight_coupling_trigger_tau_c_over_tau_k': 0.008,\n", + " 'start_sources_at_tau_c_over_tau_h': 0.006,\n", + " 'l_max_g': 50,\n", + " 'l_max_pol_g': 25,\n", + " 'l_max_ur': 50,\n", + " 'tol_perturb_integration': 1e-06,\n", + " 'perturb_sampling_stepsize': 0.01,\n", + " 'radiation_streaming_approximation': 2,\n", + " 'radiation_streaming_trigger_tau_over_tau_k': 240.0,\n", + " 'radiation_streaming_trigger_tau_c_over_tau': 100.0,\n", + " 'ur_fluid_approximation': 2,\n", + " 'ur_fluid_trigger_tau_over_tau_k': 50.0,\n", + " 'ncdm_fluid_approximation': 3,\n", + " 'ncdm_fluid_trigger_tau_over_tau_k': 51.0,\n", + " 'l_logstep': 1.026,\n", + " 'l_linstep': 25,\n", + " 'hyper_sampling_flat': 12.0,\n", + " 'hyper_sampling_curved_low_nu': 10.0,\n", + " 'hyper_sampling_curved_high_nu': 10.0,\n", + " 'hyper_nu_sampling_step': 10.0,\n", + " 'hyper_phi_min_abs': 1e-10,\n", + " 'hyper_x_tol': 0.0001,\n", + " 'hyper_flat_approximation_nu': 1000000.0,\n", + " 'q_linstep': 0.2,\n", + " 'q_logstep_spline': 20.0,\n", + " 'q_logstep_trapzd': 0.5,\n", + " 'q_numstep_transition': 250,\n", + " 'transfer_neglect_delta_k_S_t0': 100.0,\n", + " 'transfer_neglect_delta_k_S_t1': 100.0,\n", + " 'transfer_neglect_delta_k_S_t2': 100.0,\n", + " 'transfer_neglect_delta_k_S_e': 100.0,\n", + " 'transfer_neglect_delta_k_V_t1': 100.0,\n", + " 'transfer_neglect_delta_k_V_t2': 100.0,\n", + " 'transfer_neglect_delta_k_V_e': 100.0,\n", + " 'transfer_neglect_delta_k_V_b': 100.0,\n", + " 'transfer_neglect_delta_k_T_t2': 100.0,\n", + " 'transfer_neglect_delta_k_T_e': 100.0,\n", + " 'transfer_neglect_delta_k_T_b': 100.0,\n", + " 'neglect_CMB_sources_below_visibility': 1e-30,\n", + " 'transfer_neglect_late_source': 3000.0,\n", + " 'P_k_max_1/Mpc': 40,\n", + " 'T_ncdm': 0.7133,\n", + " 'N_ur': 2.0308,\n", + " 'N_ncdm': 1,\n", + " 'm_ncdm': 0.06}" + ] + }, + "execution_count": 32, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "common_settings" + ] + }, + { + "cell_type": "code", + "execution_count": 59, + "id": "9c678930", + "metadata": {}, + "outputs": [], + "source": [ + "common_settings = {# wich output? ClTT, transfer functions delta_i and theta_i\n", + "\n", + " 'output': 'mPk',\n", + " 'lensing': 'no',\n", + " 'omega_b' : 0.02225,\n", + " 'omega_cdm' : 0.1198,\n", + " 'h' : h,\n", + " 'A_s' : 2.100549e-09,\n", + " 'tau_reio' : 0.06,\n", + " 'YHe' : 0.24,\n", + " 'non linear':\"HMcode2020\",\n", + "\n", + " #'halofit_k_per_decade' : 3000.,\n", + " #'l_switch_limber' : 40.,\n", + " #'accurate_lensing':1,\n", + " #'num_mu_minus_lmax' : 1000.,\n", + " #'delta_l_max' : 1000.,\n", + "#\n", + " #\"recfast_Nz0\":100000,\n", + " #\"tol_thermo_integration\":1.e-5,\n", + " #\"recfast_x_He0_trigger_delta\" : 0.01,\n", + " #\"recfast_x_H0_trigger_delta\" : 0.01,\n", + " #\"evolver\":0,\n", + " #\"k_min_tau0\":0.002,\n", + " #\"k_max_tau0_over_l_max\":10.,\n", + " #\"k_step_sub\":0.015,\n", + " #\"k_step_super\":0.0001,\n", + " #\"k_step_super_reduction\":0.1,\n", + " #\"start_small_k_at_tau_c_over_tau_h\" : 0.0004,\n", + " #\"start_large_k_at_tau_h_over_tau_k\" : 0.05,\n", + " #\"tight_coupling_trigger_tau_c_over_tau_h\":0.005,\n", + " #\"tight_coupling_trigger_tau_c_over_tau_k\":0.008,\n", + " #\"start_sources_at_tau_c_over_tau_h\" : 0.006,\n", + " #\"l_max_g\":50,\n", + " #\"l_max_pol_g\":25,\n", + " #\"l_max_ur\":50,\n", + " #\"tol_perturb_integration\":1.e-6,\n", + " #\"perturb_sampling_stepsize\":0.01,\n", + " #\"radiation_streaming_approximation\" : 2,\n", + " #\"radiation_streaming_trigger_tau_over_tau_k\" : 240.,\n", + " #\"radiation_streaming_trigger_tau_c_over_tau\" : 100.,\n", + " #\"ur_fluid_approximation\" : 2,\n", + " #\"ur_fluid_trigger_tau_over_tau_k\" : 50.,\n", + " #\"ncdm_fluid_approximation\" : 3,\n", + " #\"ncdm_fluid_trigger_tau_over_tau_k\" : 51.,\n", + " #\"l_logstep\":1.026,\n", + " #\"l_linstep\":25,\n", + " #\"hyper_sampling_flat\" : 12.,\n", + " #\"hyper_sampling_curved_low_nu\" : 10.,\n", + " #\"hyper_sampling_curved_high_nu\" : 10.,\n", + " #\"hyper_nu_sampling_step\" : 10.,\n", + " #\"hyper_phi_min_abs\" : 1.e-10,\n", + " #\"hyper_x_tol\" : 1.e-4,\n", + " #\"hyper_flat_approximation_nu\" : 1.e6,\n", + " #\"q_linstep\":0.20,\n", + " #\"q_logstep_spline\": 20.,\n", + " #\"q_logstep_trapzd\" : 0.5,\n", + " #\"q_numstep_transition\" : 250,\n", + " #\"transfer_neglect_delta_k_S_t0\" : 100.,\n", + " #\"transfer_neglect_delta_k_S_t1\" : 100.,\n", + " #\"transfer_neglect_delta_k_S_t2\" : 100.,\n", + " #\"transfer_neglect_delta_k_S_e\" : 100.,\n", + " #\"transfer_neglect_delta_k_V_t1\" : 100.,\n", + " #\"transfer_neglect_delta_k_V_t2\" : 100.,\n", + " #\"transfer_neglect_delta_k_V_e\" : 100.,\n", + " #\"transfer_neglect_delta_k_V_b\" : 100.,\n", + " #\"transfer_neglect_delta_k_T_t2\" : 100.,\n", + " #\"transfer_neglect_delta_k_T_e\" : 100.,\n", + " #\"transfer_neglect_delta_k_T_b\" : 100.,\n", + " #\"neglect_CMB_sources_below_visibility\" : 1.e-30,\n", + " #\"transfer_neglect_late_source\" : 3000.,\n", + "#\n", + " 'P_k_max_1/Mpc':40,\n", + " 'N_ur':2.046,\n", + " 'N_ncdm':1,\n", + " 'm_ncdm' : 0.06\n", + "}" + ] + }, + { + "cell_type": "code", + "execution_count": 60, + "id": "f2c0d7ad", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'output': 'mPk',\n", + " 'lensing': 'no',\n", + " 'omega_b': 0.02225,\n", + " 'omega_cdm': 0.1198,\n", + " 'h': 1,\n", + " 'A_s': 2.100549e-09,\n", + " 'tau_reio': 0.06,\n", + " 'YHe': 0.24,\n", + " 'non linear': 'HMcode2020',\n", + " 'P_k_max_1/Mpc': 40,\n", + " 'N_ur': 2.046,\n", + " 'N_ncdm': 1,\n", + " 'm_ncdm': 0.06}" + ] + }, + "execution_count": 60, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "common_settings" + ] + }, + { + "cell_type": "code", + "execution_count": 61, + "id": "adfafe42", + "metadata": {}, + "outputs": [], + "source": [ + "cosmo = Class()\n", + "cosmo.set(common_settings)\n", + "cosmo.compute()\n", + "pkclass_dm = np.array([cosmo.pk(ki,0) for ki in k])\n" + ] + }, + { + "cell_type": "code", + "execution_count": 62, + "id": "b6e67785", + "metadata": {}, + "outputs": [], + "source": [ + "pdict = {}\n", + "from copy import deepcopy as copy\n", + "for Tagn in np.linspace(7.8,8.4,10):\n", + " common_settings_in=copy(common_settings)\n", + " common_settings_in['hmcode2020log10tagn']=Tagn\n", + " cosmo = Class()\n", + " cosmo.set(common_settings_in)\n", + " cosmo.compute()\n", + " pkclass = np.array([cosmo.pk(ki,0) for ki in k])\n", + " pdict[Tagn]=pkclass" + ] + }, + { + "cell_type": "code", + "execution_count": 64, + "id": "518b9952", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 64, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "for Tagn in np.linspace(7.8,8.4,10):\n", + " plt.semilogx(k/h,1-(pdict[Tagn]*h**3)/(pkclass_dm*h**3), label=\"Tagn={0:.2f}\".format(Tagn))\n", + "plt.ylabel(\"slope\")\n", + "plt.xlabel(\"k(h/Mpc)\")\n", + "plt.legend()\n", + "#plt.ylim(0,3)\n", + "#plt.ylim(5E-3, 2E-1)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 66, + "id": "f6068972", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + ":2: RuntimeWarning: invalid value encountered in log\n", + " dy = np.gradient(np.log(1-(pdict[Tagn]*h**3)/(pkclass_dm*h**3)))\n", + ":2: RuntimeWarning: invalid value encountered in log\n", + " dy = np.gradient(np.log(1-(pdict[Tagn]*h**3)/(pkclass_dm*h**3)))\n", + ":2: RuntimeWarning: invalid value encountered in log\n", + " dy = np.gradient(np.log(1-(pdict[Tagn]*h**3)/(pkclass_dm*h**3)))\n", + ":2: RuntimeWarning: invalid value encountered in log\n", + " dy = np.gradient(np.log(1-(pdict[Tagn]*h**3)/(pkclass_dm*h**3)))\n", + ":2: RuntimeWarning: invalid value encountered in log\n", + " dy = np.gradient(np.log(1-(pdict[Tagn]*h**3)/(pkclass_dm*h**3)))\n", + ":2: RuntimeWarning: invalid value encountered in log\n", + " dy = np.gradient(np.log(1-(pdict[Tagn]*h**3)/(pkclass_dm*h**3)))\n", + ":2: RuntimeWarning: invalid value encountered in log\n", + " dy = np.gradient(np.log(1-(pdict[Tagn]*h**3)/(pkclass_dm*h**3)))\n", + ":2: RuntimeWarning: invalid value encountered in log\n", + " dy = np.gradient(np.log(1-(pdict[Tagn]*h**3)/(pkclass_dm*h**3)))\n", + ":2: RuntimeWarning: invalid value encountered in log\n", + " dy = np.gradient(np.log(1-(pdict[Tagn]*h**3)/(pkclass_dm*h**3)))\n", + ":2: RuntimeWarning: invalid value encountered in log\n", + " dy = np.gradient(np.log(1-(pdict[Tagn]*h**3)/(pkclass_dm*h**3)))\n" + ] + }, + { + "data": { + "text/plain": [ + "(0.0, 3.0)" + ] + }, + "execution_count": 66, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "for Tagn in np.linspace(7.8,8.4,10):\n", + " dy = np.gradient(np.log(1-(pdict[Tagn]*h**3)/(pkclass_dm*h**3)))\n", + " dx = np.gradient(np.log(k/h))\n", + " plt.semilogx(k/h,dy/dx, label=\"Tagn={0:.2f}\".format(Tagn))\n", + "plt.ylabel(\"slope\")\n", + "plt.xlabel(\"k(h/Mpc)\")\n", + "plt.legend()\n", + "plt.ylim(0,3)\n", + "#plt.ylim(5E-3, 2E-1)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "48113239", + "metadata": {}, + "outputs": [], + "source": [ + "import astropy" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "d53af585", + "metadata": {}, + "outputs": [], + "source": [ + "from astropy.cosmology import Planck15\n", + "import numpy as np" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "5d241522", + "metadata": {}, + "outputs": [ + { + "data": { + "text/latex": [ + "$2.0765818 \\; \\mathrm{\\frac{Mpc^{3}}{sr}}$" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "x=np.linspace(0,2,200)\n", + "def integrand(z):\n", + " return Planck15.differential_comoving_volume(z)*(5000)*(np.pi/180)**2/(4*np.pi)\n", + "from scipy.integrate import trapz\n", + "trapz(integrand(x),x)/1E9*0.7**3" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "413c74be", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.7" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/class/notebooks/Thomas_PPF.ipynb b/class/notebooks/Thomas_PPF.ipynb new file mode 100644 index 00000000..47850661 --- /dev/null +++ b/class/notebooks/Thomas_PPF.ipynb @@ -0,0 +1,432 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "%matplotlib inline\n", + "import matplotlib\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "from classy import Class" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "k_out = [5e-5, 5e-4, 5e-3]\n", + "models = ['PPF1','PPF2','FLD1','FLD1S']\n", + "w0 = {'PPF1':-0.7,'PPF2':-1.15,'FLD1':-0.7,'FLD1S':-0.7}\n", + "wa = {'PPF1':0.,'PPF2':0.5,'FLD1':0.,'FLD1S':0.}\n", + "omega_cdm = {'PPF1':0.104976,'PPF2':0.120376,'FLD1':0.104976,'FLD1S':0.104976}\n", + "omega_b = 0.022\n", + "##Omega_cdm = {'PPF1':0.26,'PPF2':0.21,'FLD1':0.26,'FLD1S':0.26}\n", + "##Omega_b = 0.05\n", + "h = {'PPF1':0.64,'PPF2':0.74,'FLD1':0.64,'FLD1S':0.64}\n", + "cosmo = {}\n", + "\n", + "for M in models:\n", + " use_ppf = 'yes'\n", + " gauge = 'Newtonian'\n", + " if 'FLD' in M:\n", + " use_ppf = 'no'\n", + " if 'S' in M:\n", + " gauge = 'Synchronous'\n", + " \n", + " cosmo[M] = Class()\n", + " \n", + " cosmo[M].set({'output':'tCl Mpk dTk vTk','k_output_values':str(k_out).strip('[]'),\n", + " 'h':h[M],\n", + " 'omega_b':omega_b,'omega_cdm':omega_cdm[M],\n", + " ##'Omega_b':Omega_b,'omega_cdm':Omega_cdm[M],\n", + " 'cs2_fld':1.,\n", + " 'w0_fld':w0[M],'wa_fld':wa[M],'Omega_Lambda':0.,'gauge':gauge,\n", + " 'use_ppf':use_ppf})\n", + " cosmo[M].compute()" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "(6e-11, 1e-09)" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYQAAAECCAYAAAD+VKAWAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3XdclvX+x/HXlz1FRAERlaU4cAGuTEEzxW2llZhm2tKs\ntDq/OnWydU6ao6XnVJYezZkjc6BouU0cqLgXIjIcIArIhpvr94fEaVgi3HBxw+f5eNwP5eK6rvt9\nw+399lrfS2mahhBCCGGmdwAhhBDVgxSCEEIIQApBCCFECSkEIYQQgBSCEEKIElIIQgghACkEIYQQ\nJaQQhBBCADoXglKqlVJqhVLqC6XUMD2zCCFEbVfuQlBKzVdKpSilTvxuephS6qxSKlYp9cZdVtMP\nmK1p2nhgdHmzCCGEqDhV3qErlFI9gCzgW03TAkqmmQPngAeBJOAgMAIwB6b+bhVjS/58B8gB7tM0\nrVu5wgghhKgwi/IuqGnaLqWU1+8mdwJiNU2LA1BKLQeGaJo2FRj4J6t6oaRIvi9vFiGEEBVX7kL4\nE42AxF99nQR0/rOZSwrlTcAemPEn8zwLPAtgb28f1KJFCyNFFUKI2uHQoUPXNU1rcLf5jF0I90TT\ntHhKPuz/Yp65wFyA4OBgLTo6ugqSCSFEzaGUulSW+Yx9llEy0PhXX3uWTBNCCFHNGbsQDgLNlFLe\nSikr4HFgnZGfQwghRCWoyGmny4AowF8plaSUGqdpWhEwEdgMnAZWaJp20jhRhRBCVKaKnGU04k+m\nbwQ2ljvRPSosLCQpKYm8vLyqespqy8bGBk9PTywtLfWOIoQwQboeVDaGpKQkHB0d8fLyQimldxzd\naJpGWloaSUlJeHt76x1HCGGCTH4so7y8PFxcXGp1GQAopXBxcZEtJSFEuZlEISilBiml5mZkZPzZ\n96s4UfUkPwchREWYRCFomrZe07RnnZyc9I5yR+bm5rRv356AgACGDx9OTk5Omab/8oiPjyctLY2e\nPXvi4ODAxIkT9Xw5QohayiQKobqztbUlJiaGEydOYGVlxZdfflmm6b88vLy8sLGx4YMPPmDmzJl6\nvhQhRC0mhWBk3bt3JzY2tszTf2Fvb8/999+PjY1NZcYTQog/ZfJnGf3GpEkQE2PcdbZvD59+WqZZ\ni4qK2LRpE2FhYX85PTc3l/bt2wPg7e3NmjVrjJtZCCHKoWYVgk5+/QHfvXt3xo0b95fTf9llJIQQ\n1UnNKoQy/k/e2P7sA14++IUQpkSOIQghRDVRbDBQbDDo9vw1awvBxHl5eZGZmUlBQQE//PADW7Zs\noVWrVnrHEkJUgsKcXLb/cz4Jm69jleyOS3ojbApsMZgZSHdIJdM9gXpdFH0/ehp7t/pVkskkCkEp\nNQgY5Ofnp3eUO8rKyjLK9Pj4eGNFEkJUUzfjElg/fj72Ua1wudUaT4s8rrif50qrw5jbF1NcBFqa\nLS5JzXFe6MK2734mvecRhi97BRunOpWazSQKQdO09cD64ODgZ/TOIoQQ5VGUl8/qJ2dgvaEVTXJC\nueh5DKvRifR6+0ns3cL+MH+xwcCOf35D6n9z8NkUyve+qwmY3YC2I/7sbsQVJ8cQhBCikp3buJMl\nvt/gtuJ+MpyuYv15Mk8lvsSgOa/+6e4gM3Nzer3zHGPjJ5P7ylHsc+ty+Ulztrwxp9JymsQWghBC\nmKo1T3+E9aI21FdNuf7EXkYteB0zc/PS7xsMBi5dukR8fDyFhYU4ODjQrFkzXF1dS+fpN+tlEocd\nZueQI7jPaMHajBkM+eJvRs8qhSCEEJWgKC+fbx+Yis/eUOI9TnL/gnb4PfgmcPs+LuvWrWPp0qVs\n3bqVOw3c2bJlS4YPH86ECRNwc3OjcddA+u+tx7qQCBrNbc8297n0eucvb0l/z2SXkRBCGFlm0lUW\ntp6Nz95QYtvt5vFTo/B78H4KCgqYM2cOXl5eDBs2jH379jF8+HDmzZvHtm3b2Lt3Lxs3bmTGjBk0\nbNiQDz74gKZNmzJlyhTy8vKo5+fFwO39SHVOJneqB8eXRxg3uKZpJvMICgrSfu/UqVN/mFabyc9D\nCH2lnr2gLWj4b+0n9ZO2dOh7pdO3bNmi+fn5aYAWEhKirV27VisqKvrLdZ07d04LDw/XAC0gIEA7\nf/68pmmaduHHn7W1tmu0xfXnaVlXU++aCYjWyvAZK1sIRmCM4a9//PFHgoKCaNOmDUFBQWzbtk3P\nlySEKIcrR04Sef82PK41I/u5I4xYM4WsrCwmTJhAnz59MDc3Z8OGDWzfvp3Bgwdj/qtjCXfSrFkz\nlixZwqZNm7h8+TIdO3Zk//79+PS+D6uJiTS67sOy/v8x3gsoS2tUl0d13UKwt7cv/Xt4eLg2a9as\nMk//xeHDh7Xk5GRN0zTt+PHjmoeHR7myVIefhxC10dVjp7UlLvO1TRabtM2vz9Y0TdNiY2O11q1b\na0op7ZVXXtFycnLKvf64uDjN19dXc3R01Pbu3atpmqZ9E/yutp3t2s6p8/5yWWQLQR/lHf66Q4cO\neHh4ANC6dWtyc3PJz8+vtJxCCOO5GZfA5gd3UT+9EVb/SKDPtIn89NNPdOzYkcuXL7N582ZmzZqF\nra1tuZ/D29ubnTt34u7uzsCBA4mNjWX4mue4XucqyTPMyb2RXuHXYRJnGZX1SuVJkyYZfTC59u3b\n82kVD3+9evVqAgMDsba2NsIrEEJUpuxr11nbYx2eqS0oePkkfd55mUWLFvHUU0/RsmVL1q5di4+P\nj1Geq1GjRmzatIlOnToxePBg9u3bh+PzqVhPb8OqkZ8yatO7FVq/SWwhaNX8Fpq/fMAHBwfTpEmT\nPwx//fvpv75j2u/L4OTJk7z++ut89dVXVf46hBD3pjAnl+VdF9IkuRVZYw/T/+OXmT17NqNHjyY0\nNJS9e/carQx+4evry6pVqzh37hwvvvgifT96kQteh3HeHkTKyXMVW3lZ9itVl4cpHEOoyPTExESt\nWbNm2p49e8qdpTr8PISoDQxFRdrX7d/XtrNdW/bI+5qmadqHH36oAdrQoUO13NzcSn3+KVOmaIC2\ncuVK7dB/v9e2slX7pvM7d5wXOYZgWtLT0xkwYADTpk2jW7duescRQtzF0sH/xC+mO3Fdd/D4qrf5\n5JNPePPNNxk5ciQrV66s9Nvh/uMf/6Bjx46MHz8er8EhxLWOonH0fSTsiS73OqUQqok5c+YQGxvL\n+++/X3o6akpKit6xhBB3EPHSJ3hs7E6s3wGe3PkW33zzDa+88gqPPPIICxYswMKi8g/PWlpa8vXX\nX3Pjxg3efvttenzUDfNic358bUO516lub02YhuDgYC06+rftd/r0aVq2bKlToupHfh5CVK7or1dy\nfYIjKS6XeOjIQ0Ts3EZ4eDh9+/Zl7dq1WFlZVWmel1++fdzi0KFDRIdH0iiuHR1jmtOg5f9OwlFK\nHdI0Lfhu65ItBCGEKKNrx88Q/5qBbNtMHljXlegzJxk1ahTdu3dn9erVVV4GAO+99x7Ozs689dZb\nBL3eArsCOyJeWFyudUkhCCFEGRTl5RMxMJI62fXw+Gcht+pY8fDDD9O8eXPWrl2LnZ2dLrnq1q3L\n66+/zqZNm8ht5soFr8M4HWhDXkbmPa9LCkEIIcrg2wem4pPQnvThB/Eb0Yf+/ftjZWVFREQEdevW\n1TXbxIkTcXd356233qLRcEucs13Y/H/3fuq6FIIQQtzF+gmz8Nkbyvl2uxj831cZMmQIV65cYd26\ndXh5eekdDzs7O95880127tyJbb82pDpd4cbGez/LSQpBCCH+wrFlGzCf15IE9zOM3Poi48ePJyoq\nikWLFtG5c2e945UaN24cLi4ufPr5Z+R2Pot3UhuOLbu3M46kEIQQ4k/cupLCyYlpFFjmEbIikAXf\nLWPBggVMmTKFYcOG6R3vN+zs7JgwYQJr166l2QudKTAv4MCsQ/e0DpMoBKXUIKXU3DvdVag6uNNw\n1jt27GDgwD/eDDs0NBR/f3/atm1LixYtmDhxIunp/xuUauzYsbi6uhIQEFCVL0EIcQff9fsKtxuN\ncXw1hSSzQl5++WUGDBjAO++8o3e0O3rhhRewsrLi203rSPA9guupduTfyirz8iZRCFo1H8vo12MT\nxcTE3HWf4pIlSzh27BjHjh3D2tqaIUOGlH5vzJgxREZGVnJiIcTdrJ84C7+j3YnvuouWzw1m2LBh\neHl5sXjxYszMqudHp5ubG+Hh4SxatIj6fc2pk1uXre/MK/Py1fNV1RJWVlZMnz6dhIQEjh49CkCP\nHj2oV6+ezsmEqN0ubouCec1IdDvHsLUTGT58OLdu3WLNmjW6n1F0N8899xzZ2dlcaWZDht1NLm/I\nK/OyJjH8dVlNipxEzFUjD3/t3p5Pw/56+Ou7DWf9V8zNzWnXrh1nzpyhXbt2FcoqhKi4orx8do4+\nhGuxD8FfevP+R9PYu3cv3333nUnsyu3UqRNt2rRh/rcLea7lQJrEdC3zsrKFYAR/NZx1WZjS8CFC\n1HRLBk7FKzmAnMdiSLAtZtasWUyYMIFHH31U72hlopTi2WefJTo6Gse+jlgZyn71dI3aQrjb/+Sr\nI4PBwPHjx2X8ISGqgZ8//hbPbd2J9Y9iwLQxdAgMJCAggJkzZ+od7Z6MHDmSv/3tb+xIO0dPJ3co\n4/k4NaoQTE1hYSFvvfUWjRs3pm3btnrHEaJWuxEbz+X3LMExhaHrHmfUuHFkZGTw008/VejWl3pw\ndnZm6NChrFy1iqAW7rC/bMvJLqNKtHXrVjw9PUsfUVFRwO32btu2LQEBAWRnZ7N27drSZUaMGEHX\nrl05e/Ysnp6ezJtX9jMEhBDlU2ww8P3AZdS75YrHO4UsiviByMhIZs2aZRLHDe4kPDyctLQ0iu46\nxun/yBaCEWRl/fE839DQUHJzc/8wfceOHX+5rmXLlhkrlhCijNY8NR2/s1251GsHbUIH83qXLgwZ\nMoTx48frHa3c+vbti7OzM7tvlP22mlIIQoha7czardh+146LjU7w0Hcv0rnbfbi6ujJv3jyUUnrH\nKzcrKyuGDRvG0qVLy7yM7DISQtRaeRmZHHzuAgazIkK/DeLV1/+P8+fPs2jRIlxcXPSOV2Hh4eFk\nZ2eXeX4pBCFErbW038c0vtYcxp3n4PVE5s+fz5tvvknPnj31jmYUPXr0wM3NrczzSyEIIWqlre98\niVdUD2Lb7qbNa4/w7LPP0qVLl2o7TlF5mJmZ/WZonLvOX4lZhBCiWrpy5CSZs+pzrV4iwzaMIzw8\nHE3TWLp0KZaWlnrHM6qhQ4eWeV6TKITqPtqpEMJ0FBsMbBy2Cfu8OjSf4cjHX39JVFQUX375Jd7e\n3nrHM7pevXqVeV6TKITqPtppVQx/vW/fPjp37kz79u1p2bIl7777bmW/LCFqpO+G/QvfuGBS+0eR\n7Veff/3rX4wZM4YRI0boHa1SWFtbl3lekyiE6q4qhr9+8sknmTt3LjExMZw4ccJkxlURojo5svAH\nXNZ34YLXYfrOm8DIkSPx9fVl9uzZekerFqQQdHQvw1+npKTQsGFD4PYWSatWrao0qxCmLvvadU6/\nmk6OTRZhK3vz7HPPce3aNZYtW4aDg4Pe8aqFGnVh2vlJ58mKKfvdgcrCob0DzT5t9pfzVMXw15Mn\nT8bf35/Q0FDCwsJ48sknsbG595toC1FbLev3H/zSelD45ik2HEplzZo1zJw5k6CgIL2jVRs1qhD0\n8ssuo/Iqy/DXU6ZMYeTIkWzZsoWlS5eybNmyuw6DIYS4LWLSJ/gd6cGFzjvoEj6cwcHB9OnTh8mT\nJ+sdrVqpUYVwt//JV0f3Mvy1r68v48eP55lnnqFBgwakpaXViKsphahMl3YfoPgrHxJdz/PI2gn0\neLA3derUYeHChdX2Vph6kZ+GjgoLC/n73/9epuGvIyIiSrckzp8/j7m5ebW/lZ8QeivKy2db+H4s\nDVYE/rsxb//zA44fP86CBQtwd3fXO161I4VQiYw5/PWiRYvw9/enffv2jBo1iiVLlmBubq7L6xLC\nVCwdPBXvpDbcGnaYOOtC5syZw+TJk+nXr5/e0aolZUq3bwwODtaio6N/M+306dNyt7FfkZ+HELdF\nfb6E7MluxPsdIuyncNp36ECTJk2Iioq6p3PzawKl1CFN0+56Z4QadQxBCCEAbsYlkDhFYWafxuAf\nHmHEmDHk5uaybNmyWlcG90J2GQkhapzVAxfjkumG29u5zF+7im3btjF79mz8/f31jlatyRaCEKJG\nWT16Kn6n7yM+dAetQvrzdrdnePTRR3nqqaf0jlbt1YhC0DTNpO9sZCymdDxIiMpwavUW7Ja3J77R\nCQZ/9wIdu3ahUaNGfPXVV/IZUQYmXwg2Njal5+PX5l+4pmmkpaXJ1cui1sq9kc7h8Qk4mTcgdElH\nXnplMvHx8ezatUtO0S4jky8ET09PkpKSSE1N1TuK7mxsbPD09NQ7hhC6WNr3M3xTQ8iZFMOuSxks\nWbKE9957j27duukdzWSYfCFYWlrWyDHMhRBlt+nVz/CNDiE2aCfdn3+cR4OCCAkJ4a233tI7mkkx\niUJQSg0CBvn5+ekdRQhRzVzafYDCL7y4Uf8CD//wDA8MGoCNjY1cvFkOJnHaaXW/QY4QQh+/DE1h\nVWRF+y8a8e70acTExLBw4UIaNWqkdzyTYxKFIIQQd7JkQMnQFMMPE2uZz+zZs5k8eTIDBgzQO5pJ\nMoldRkII8Xu7ZyzAc3t3Yv2jePBfIwkMCiIwMJCpU6fqHc1kSSEIIUzO1aOnSfnADkOdawxZ/xiP\njB5NQUEBy5cvl6EpKkAKQQhhUory8tk4eDOeOa1wnpPOnMUL2b17N4sXL6ZZM9O7J0p1IscQhBAm\nZXG/qfgktOfGQ/vJbuHKBx98wJgxYxg5cqTe0UyebCEIIUzG1ilf0mRHD2Jb7mXg508TFBxM8+bN\nmT17tt7RagQpBCGESbi0+wBZs9zIqZfII5FPMnzUKG7cuMHGjRtxcHDQO16NIIUghKj28m9lseOx\naFwLvfGZZ8Un33zF1q1bmT9/Pu3atdM7Xo0hxxCEENXe4gdn0vRKK/JGHyPJyYwPPviAsWPHypDW\nRiZbCEKIam3Dix/juz+U2A67ePDtJwkMDKRt27bMmTNH72g1jhSCEKLaOr3mR9TXzUl0O8ewiOfo\nO3QwRUVFrFq1CltbW73j1ThSCEKIaik9PomYpy9jb1aXLgtb8vaH/+TAgQOsXr1arjeoJHIMQQhR\n7RgKC1nVexmuNz1xeP0a0TeSmDNnDq+88goPP/yw3vFqLNlCEEJUO4v6/Au/C6EkD9xJ6yFDGHjf\nfXTr1o1p06bpHa1Gk0IQQlQrGyd/iteOUGJb7mXwN8/TqXNn6tWrx6pVq7C0tNQ7Xo0mhSCEqDZO\nrNgE/2lGout5hv84lodGjODq1avs3r0bd3d3vePVeFIIQohq4UZsPCeev46thQPdlrTmnRnT2L59\nOwsXLqRjx456x6sV5KCyEEJ3hTm5rHnwexqke+D0Zhq7k8/z2Wef8fLLLzN69Gi949UasoUghNDd\nwh7T8YsP4eqw3fj2CeO57t3p2bMnM2bM0DtarSKFIITQ1bKH3sfvUAgXOu4k7NOn6dy5M+7u7qxY\nsUIOIlcxKQQhhG62vPlvXNd244L3IYZtepGeD/YmIyODn3/+mfr16+sdr9YxiWMISqlBSqm5GRkZ\nekcRQhjJ0cXrKfy4KVddLvHQ1uGMeXocR48eZfny5bRt21bveLWSSRSCpmnrNU171snJSe8oQggj\nuBx9nHMvZFFgkc9937Vk2hdz+OGHH/jkk08YMGCA3vFqLZMoBCFEzZGZdJWfBu6lTk493D/MY2vc\nSWbMmMGECRN48cUX9Y5Xq8kxBCFElSnMyWVljyV4pbQnb+IxcgPaMb5vX8LCwvjss89QSukdsVaT\nQhBCVIlig4GFXWbhd/F+rj6ym1ZPD6F79+74+/uzfPlyLCzk40hv8hsQQlSJb3t/gN/xUC5238ED\nH4+la9euODo6snHjRuT4YPUghSCEqHQrHv/n7QHrWv/MkFUT6BESQnZ2Nnv27KFJkyZ6xxMlpBCE\nEJUq8rXPcVnRlbimRxi+7Tn6PzSEuLg4tmzZQkBAgN7xxK9IIQghKs2uafPhs+ZcbhDHkO2PMPqZ\ncURFRbFixQpCQkL0jid+RwpBCFEpDnzxHVnvuJFRJ4VeGzvz5rR/sW7dOj7//HOGDRumdzxxB1II\nQgijO7ZsA1dftaHA5hZdVjfn8xVLmDt3Lm+88YZca1CNSSEIIYzqXMQOYp/NQ5kpAr5twJI9PzF9\n+nSef/55PvzwQ73jib8ghSCEMJpLuw9wdOQVbIrsaDwXIi8e5+2332bUqFH8+9//lgvPqjkpBCGE\nUSTtj2Hv0DM45bpQb1YmhwpymDx5Mg8//DDz58/HzExGyqnupBCEEBWWtD+G3f2PUfdWA+zeu0x8\nfXueCX+GsLAwli5dKlchmwipbCFEhdwug6OlZXDF254nnniC7t27s3r1aqytrfWOKMpICkEIUW7J\nB46VlIErdu9dJrmpLSNHjqRbt25ERERgZ2end0RxD6QQhBDlknzgGLv6HcH5liu2714msbE1o0aN\nokePHmzcuBEHBwe9I4p7JIUghLhnCXuiS8vA5t3LJHhaMnr0aEJDQ4mIiMDe3l7viKIc5EiPEOKe\nnNu4k5jwZJxyG2Dz7mXiPcwZO2YMvXr1Yt26dbKbyITJFoIQosyOLdvAicdSsc23x3nGTY475vDU\nU0/Ru3dv1q9fL2Vg4qQQhBBlcuCL74gfZ0BpCs+v4KeMOF566SWGDh3KunXrsLW11TuiqCApBCHE\nXe2cOo/rkxzIt8yhxdK6LD66iylTpjB69GhWrlyJjY2N3hGFEUghCCH+0ubXZ5M3xZMMhzQC13gx\nc+1SPv74Y1588UX++9//ykVnNYgUghDiT60M/xcWM1qR6pzIfRvb8MYXHzN//nymTJnCZ599JsNR\n1DBS7UKIPyg2GPj2gQ/w2hlKXJMYev3wAE+9+jLbt2/nk08+YdKkSXpHFJVACkEI8Rv5t7JYdN9n\n+J24fQ/knisfYeDwYZw7d45FixbxxBNP6B1RVBIpBCFEqfT4JL4PXYnfpW5c7LGDoE8G06P3A2Rl\nZREZGUmvXr30jigqkRSCEAKAuJ/2EjXiNE3T2pLy2B48x3UjJDQUJycn9uzZQ5s2bfSOKCqZHBES\nQvDzx99ybOhV6t5yw/B/p0kLcaF///54e3sTFRUlZVBLSCEIUct9P2Ya2f/nToFFHg2/MfB9+gkm\nTJhAnz592LVrF56ennpHFFXEJApBKTVIKTU3IyND7yhC1BiGwkLmd3uXegu7kNzwLAFrvXj5q5l8\n9dVXvPHGG6xbtw4nJye9Y4oqZBLHEDRNWw+sDw4OfkbvLELUBDfjEvj+we/wjQsltu1u2szpSdjI\nx0lNTWXp0qWMGDFC74hCByZRCEII4zm6eD2nX0rHKz2Q5MG7sH/Uj559++Di4sKePXsICgrSO6LQ\niUnsMhJCGMcPT3/ElbEW2BTYY/Z+HMdb5hD+xEgCAwOJjo6WMqjlpBCEqAXyMjL5Jvg96s7rzLUG\nF2m6vA7vb13KRx99xHPPPce2bdtwc3PTO6bQmewyEqKGS9h9kO2PReN3JYQLHXfi+89uDBgzmvT0\ndBYuXMjo0aP1jiiqCSkEIWqwzf83m7x/e+Ja6EX6MwfIaOFI7/5heHt7ExkZSdu2bfWOKKoR2WUk\nRA2UeyOdeZ3exXpGG7Ls0qn7ZRaLbxzg1VdfZfDgwURHR0sZiD+QLQQhapiTKyM58kISvqmhxAbu\nwvefnQmf8DyJiYnMnDmTV155BaWU3jFFNSSFIEQNUWwwsDJ8Kk5rgqhj0YCsl4+Q7Kzx/KABNGnS\nhN27d9O1a1e9Y4pqzKR2GeWmppF98DBkZekdRYhqJWFPNP/1+wy3Ffdzxe08DRaaMS16Ne+++y7h\n4eHExMRIGYi7MqkthKIEKw52yuSm/WZu2V+jwOE6ZnWysHMxUK+RDY383fEO9MeuuR94eoKVld6R\nhahUxQYDa5+bicWSljQqakXy4F0U9XMj7Onb9yxYsmQJ4eHhOqcUpsKkCsHQIJdLnfZReFVhnmZP\nnRt+OMc3wLLYEoDUksdN+yPcsttEgV0qZg4Z2DvnU8/Nkka+9fEK8MGumS80bgzu7mBurutrEqK8\nrsacYsOj6/E735kE9zM0eb8ui1bvZfP4zYSGhjJ//ny8vb31jilMiNI0Te8MZRYcHKxFR0f/ZlpR\nYRFJsUkkHoklNSaBW7EZFCYXY55qi326M84Z9UsL4xc37a+TaX+VQutrmNnewL5OLvVcFI2a1sWr\nRRPsfL3BywtatQK5gbioZooNBn4YNx2LFS2xzbfn8gM/k/+QO39743WKioqYPn0648ePl/sdi1JK\nqUOapgXfdT5TL4S7KS2MkwmkHk/m1pk0ChOLME+xxv5GXeplNMCi+Lcf+jftr5PhcBmD/Rkaed6i\nU2hz6oX1hqAg2Q0ldHUuYgd7JsTgk9CeBPczNHzDlo8jlxMZGUlISAjz58/Hx8dH75iimpFCKKOi\nwiISzyWSeCqR1LMp3Dpzg6JLBVgm2uCR2BTLYksMysBllwsUOB7DveFNOt7vg2u/B6BzZ7C1NWoe\nIe6kMDuH5Y9Mp8HWLhSbGUjvH01239tbBYWFhUybNo0XXnhBtgrEHdXIQnB2dtZeffVVAgMDCQoK\nqvSxV7Iysji44SCXIs7DfvC45IWVwYpiirniEkeu4zHcXFPp2K0p7mG94L77wMGhUjOJ2mf39P9y\naWYxnqm+XPCJxvvdprwz93P27NlDjx49mD9/Pr6+vnrHFNVYjSwEGxsbLT8/v/RrDw8PgoKCCAwM\nLC0JDw+PSrvoJicrh+iN0VzccI7ifcU0vNgEmyIbAC7Xu0iO41Ea1L9KUCcPPPv3gvvvh7p1KyWL\nqPnid+zjp+e343e2KzccUlEjL3KwXjozZ87E0dGRGTNmMGbMGNkqEHdVIwshODhY27ZtGzExMRw+\nfJhDhw7TEw8wAAASHUlEQVRx+PBhzpw5Q3FxMQCurq6lJfHLn02aNKmUksjLzeNQ5CEubDhL0d5C\n3OMaY1dgB8DVuglk1TlKvXrJBAbWx2vYAOjZE2xsjJ5D1CzZ166zcsRs3Pd0wazYnOT79uIyvhWT\n//F34uLiGD16NDNnzqRBgwZ6RxUmosYWwp2OIWRnZ3P06NHSgjh06BCnTp3CYDAA4OLi8putiMDA\nQHx8fIxeEoUFhRzacojzEWcp2J2Le2xj7PPtgdtbEHlO+2neLIsuw3tiMXgQuLoa9fmFaSs2GNgw\n8RMKlnpSP9Od2GYH8HvLm0/XLGHt2rU0b96cL774gl69eukdVZiYWlUId5Kbm8uxY8c4fPhwaUmc\nOHGCwsJCAJycnP5QEs2aNTPq5ndRYREx22I4s+4khVvyaXLBF3PNnEzbdFLq78fVPZ7uYS1xfvRh\naN0aZHyZWmv7e1+R+AU0ueZPcv046o3PY3tePJ9++ilWVla8+eabvPrqq1hbW+sdVZigWl8Id5Kf\nn8+JEyd+s7vp2LFj/HJcwsHBgQ4dOhAYGEhwcDC9evXCw8PDWPG5fvU6exbt4frqZNyONsExz5FC\ns0ISXY9i7XyUjl2caB4+FHr0kNNba4kD/1nGiY+u4ZPQnjTHFIoGnCO9uwtT3nuXlJQUxowZw4cf\nfkjDhg31jipMmBRCGRUWFnLq1Knf7G46evQoubm5AAQEBNC3b1/69OlD9+7dsTXSaaaFBYVE/RDF\n+WWnsP/ZEffURgBccY4n13k/zZrn0PXxB7AYNBDq1TPKc4rq4+CX33F0ZgJ+FzqSaZtBRs8Y6oxu\nxbvTPiQmJoZu3brx6aefEhx813/DQtyVFEIFFBUVcfz4cX788Ue2bNnC7t27KSgowNramh49epQW\nREBAgNGOQ5yJPsOhhfsp2JxH4wu+WBRbkGmbQUqD/bh5JNDjoQ44PT4cmjQxyvMJfUR9sohTn6fg\nGx9ElvUtrnc5hNuEtnw4+xP27NmDl5cXU6dO5bHHHpMhqoXRSCEYUXZ2Nrt27WLLli1s2bKFU6dO\nAdCwYUP69OlDnz596N27N65GOkh849oNdi/aRerqpNu7lnLrUGBeQKLbIRxcT9PtwaZ4Pvn47aE1\n5EOj2is2GNg25SsSFhfgk9CeWzYZ3Oh2hKYvBjP1P7PZsmULDRs25B//+AdPP/00VrK7UBiZFEIl\nSkxMLN16+PHHH7lx4wYAgYGBpQXRrVs3o/zDLiwo5Ofvf+bCopPUiapPg5tuFFNMouspVP0jBHV1\novW44bevmpbz0auV3LSbRLz8H/I3e9Doujfp9jfIvP8YzV7twYwv5rBmzRpcXFx44403mDBhAnZ2\ndnpHFjWUFEIVMRgMHD58uHTrYe/evRQVFWFvb09oaCh9+vShb9++NG/evMK7AIqLizm66yhHvzmI\n+XZLGl++PZLl1boJ5NTfj3+7YrqMHYz5A71AzkbRTVLUYba+tZY6B9rinO1Ccv2LWIddpd6IDnz8\nnzlERETg6OjIa6+9xqRJk6hTp47ekUUNJ4Wgk8zMTHbs2FFaEOfPnwfA29ubgQMHMmDAAEJCQrAx\nwgVqcSfi2Pf1LvI25tEkzg+LYgtu2qeRVv8A7r7Xuf/hTtQd/pBc71AFDAUFbHv3ay6tzMYrLhCL\nYgvimsbgOcqa3MCGTJ85g71791K/fn1eeuklXnjhBerJyQKiikghVBMXL15k8+bNREREsHXrVnJz\nc7G3t6d3794MHDiQ/v37G+XU1utXr7N73nbSVl2l4Wkf7PPt/3dKa8NzBIa40XLsoxAQIMcdjOjS\njn3s/NcmbA7645rhQaZtOqntjhL8SidiclKYPn06p06domnTprz22muMHTtWdg2JKieFUA3l5uay\nfft2IiIi2LBhAwkJCcDtYw8DBgxg4MCBBAcHV/jiuPy8fKLW7OXC4hPYHXCm4XVPAK7VTSSrwWG8\n2hTRbXQfbPo+KENplMP1MxfY9s5Ssvc60TQpADPMiG90Aqd+uQT97SEWrfyOL7/8kqSkJNq0acPr\nr7/Oo48+iqWl5d1XLkQlkEKo5jRN4+TJk2zYsIGIiAj27t1LcXExrq6u9O/fnwEDBtCnTx+j7F8+\nd+Qc0fN2k/djPp4X/LAyWJFjlcMV1yPYNkwi4H43AkYOwqxDBzkw/ScyLiay66NlXPtJo0l8B6wM\nVlyrm0xu+1g6vtyNW+4OzJkzh5UrV1JQUEDv3r2ZNGkS/fv3l9NHhe6kEExMWloamzdvZsOGDURG\nRnLz5k0sLCzo0aMH/fr1o1+/frRq1arCHy6ZNzPZs3gHl1fE4XTCnQbp7gCk293geoOj1GmSSvve\nvjR/4iGozTda0TTOrdtK9Dd7yDvmhGdya6wMVqTb3yCt1Qlaj/Gn+WO9WblqFV9//TWHDh3C0dGR\nMWPGMGHCBFq0aKH3KxCilBSCCSsqKiIqKqp019LJkycB8PT0JCwsjLCwMB544AHqGmFo7XMx5zi6\nJIqMrTdxOd8E56zbBzpT61wmo8EJnL1u0bJbU1o8/CBmAQE1+h7U6bEXOfjNBhK2X8cu1oeGN5oC\ncNU5kezmF/EZ2Iiukx5n5897WLBgAWvWrCE/P5+AgAAmTJjAE088gaOjo86vQog/kkKoQZKSkti8\neTORkZH8+OOPZGRkYG5uTteuXUsLokOHDhU+9lBcXMzJn09wfHEUuXvycYvzxiHv9gfcLZtMUuud\nxcz1Mg1bWtG+fxBu/Xub7rAamkbynoMcXrSdlMM5WCV64pHqg7lmfvtgvOcprNtnEvhMd1oMCOHY\nsWMsX76cRYsWkZycTL169QgPD2fMmDEEBgbKbiFRrUkh1FBFRUXs27ePyMhIIiMjOXToEAANGjSg\nb9++pVsP7u7uFX+uwiJO/nyCsz9Ek7kvA9uL9WmY0hgzbhfPNackbtW9iLlLOs5NFE3be9Kid2ds\nO7SD6nQmTXExVw8c4eTan7l8OJX8SzY4XmuKW/rtg+15FnlccY8F3zQahzak4zODqePhxpEjR1i5\nciWrVq0iNjYWc3NzwsLCGDNmDIMGDZKRR4XJkEKoJVJSUtiyZQuRkZFs3ryZ69evA+Dv709ISAih\noaGEhIQYbdTW9OvpHFm/j8SNpyk4oahzzZX6N91LS8KgDKQ6JZPllIRyysS6bhF1GlrSwLs+Hm28\naBTUBguvpsa9cE7TyL98lcT9R7lyIp60C9fJTMqj4Ko1ljfrUTfDA6cc59LZbzikctM1AasWOfj2\nb07gkwOxcbCnsLCQ/fv3s379elatWkVcXBzm5ub06tWL4cOHM3ToULkpjTBJUgi1UHFxMYcPH2bH\njh3s2LGD3bt3k5mZCYCfn19pOYSEhNC4cWOjPW92ZjZn9p0gYdtJ0o9dxxBvgX1KfepluGFd9NsP\nfoMykGF/gzyrWxRYZ2OwykGzzkPZFmBmXYwyA8xAmYMyA2WmKC7k9qPIDK3QDAotUHk2WOTZY5Xn\ngF1+HRxznEpL6Rc37dPIqHuVogYZ2HhqNOzckNYPh+De6n/3H75w4ULpRYTbtm0jMzMTCwsLevfu\nzbBhwxg6dCguLi5G+1kJoQcpBIHBYCAmJoadO3eyc+dOdu3aRXp6OgA+Pj7cf//9BAcHExwcTLt2\n7Yx+wVRxcTGpyakknYgjJSaOjHOp5CTlUZxmBtmWWORaY5lni02+PbZ5DtgU2PzhQ730tSgDhRYF\nFJoXUmhRQJ7NLfJtszHY5YJ9AeZ1NewbWVPXrx5ubbxo0qUtzg1/+795TdO4dOkS+/fvZ+fOnWzZ\nsoULFy4A0LRp09JRbHv16oWzs/OdYghhkqQQxB8YDAaOHz/Ojh072LlzJ1FRUVy7dg0Ac3NzWrdu\nTVBQUGlJtG3b1ihDbNyL4uJiDEUGigqLKCoqothQjJ2DHZZW935RV3p6OgcPHmT//v3s37+fAwcO\nkJKSAoC9vT09e/YsHWuqWbNmcmBY1FhSCOKuNE3j8uXLREdH/+bxy3EICwsL/P398ff3p3nz5r/5\ne3XajVJYWEhsbCynTp3i5MmTnDp1iqNHj3LmzJnSefz9/encuXPpo23btnLlsKg1pBBEuWiaRmJi\nYmk5nDx5krNnz3LhwgWKiopK53NxcaF58+Z4eXnh4eGBh4cHDRs2LP27h4cH9vb2Fc5TUFBAamoq\n165dIyUlhWvXrnH58mUuXrzIhQsXiIuLIyEhgeLi4tJlvL29CQgIoFOnTnTu3Jng4GDZBSRqNSkE\nYVRFRUVcvHiRc+fOcfbs2dI/ExMTSU5OJi8v7w/LWFpa4uDggL29/W8eNjY2aJqGpmkUFxeXPgoK\nCsjKyiIrK4vs7GyysrLuuF64fZqtr68vPj4++Pr60qxZM1q3bo2/v79RikiImkQKQVQZTdPIyMjg\n8uXLv3mkp6eXfrBnZ2eXPvLz8zEzM0MphZmZWenfrayscHBwKC0RBwcHHB0dcXV1xdXVFTc3t9KH\ng4OD3i9bCJNR1kKwqIowomZTSlG3bl3q1q1Lq1at9I4jhCgnGdpSCCEEIIUghBCihBSCEEIIQApB\nCCFECSkEIYQQgBSCEEKIElVWCEopH6XUPKXUql9Ns1dKLVRKfa2UGllVWYQQQvxRmQpBKTVfKZWi\nlDrxu+lhSqmzSqlYpdQbf7UOTdPiNE0b97vJDwOrNE17Bhh8T8mFEEIYVVkvTFsAzAG+/WWCUsoc\n+DfwIJAEHFRKrQPMgam/W36spmkpd1ivJ3C85O+GsscWQghhbGUqBE3TdimlvH43uRMQq2laHIBS\najkwRNO0qcDAMj5/ErdLIQY5niGEELqqyIdwIyDxV18nlUy7I6WUi1LqS6CDUurvJZO/Bx5RSn0B\nrP+T5Z5VSkUrpaJTU1MrEFcIIcRfqbKxjDRNSwOe/920bOCpuyw3F5gLtwe3q7SAQghRy1VkCyEZ\n+PWNeT1LpgkhhDBBFSmEg0AzpZS3UsoKeBxYZ5xYQgghqlpZTztdBkQB/kqpJKXUOE3TioCJwGbg\nNLBC07STlRdVCCFEZSrrWUYj/mT6RmCjURMJIYTQhZzqKYQQApBCEEIIUcIkCkEpNUgpNTcjI0Pv\nKEIIUWOZRCFomrZe07RnnZyc9I4ihBA1lkkUghBCiMonhSCEEAKQQhBCCFFCCkEIIQQghSCEEKKE\nFIIQQghACkEIIUQJkygEuTBNCCEqn0kUglyYJoQQlc8kCkEIIUTlk0IQQggBSCEIIYQoIYUghBAC\nkEIQQghRQgpBCCEEIIUghBCihBSCEEIIwEQKQa5UFkKIymcShSBXKgshROUziUIQQghR+aQQhBBC\nAFIIQgghSkghCCGEAKQQhBBClJBCEEIIAUghCCGEKCGFIIQQApBCEEIIUUIKQQghBAAWegcoC6XU\nIGAQkKOUOl1FT+sEGHPwpIqs716XLev8ZZnvbvP81ffrA9fLkKO6Mfbvviqfq7zrK89y8j6rmKp8\nnzUr01yappnMA5hrqs9VkfXd67Jlnb8s891tnr/6PhBd1e8RvX9Xej9XeddXnuXkfVa9fvfGeC5T\n22W03oSfqyLru9dlyzp/Wea72zxV+TupKrXxfVae5eR9VjHV7n2mStpDCKNTSkVrmhasdw5Rs8n7\nzHhMbQtBmJa5egcQtYK8z4xEthCEEEIAsoUghBCihBSCEEIIQApBCCFECSkEUWWUUj5KqXlKqVV6\nZxE1k1JqqFLqa6XUd0qpPnrnMTVSCKJClFLzlVIpSqkTv5seppQ6q5SKVUq9AaBpWpymaeP0SSpM\n1T2+x37QNO0Z4HngMT3ymjIpBFFRC4CwX09QSpkD/wb6Aa2AEUqpVlUfTdQQC7j399g/Sr4v7oEU\ngqgQTdN2ATd+N7kTEFuyRVAALAeGVHk4USPcy3tM3fYRsEnTtMNVndXUSSGIytAISPzV10lAI6WU\ni1LqS6CDUurv+kQTNcQd32PAi0BvYJhS6nk9gpkykxjtVNQMmqalcXvfrhCVQtO0z4HP9c5hqmQL\nQVSGZKDxr772LJkmhLHIe6wSSCGIynAQaKaU8lZKWQGPA+t0ziRqFnmPVQIpBFEhSqllQBTgr5RK\nUkqN0zStCJgIbAZOAys0TTupZ05huuQ9VnVkcDshhBCAbCEIIYQoIYUghBACkEIQQghRQgpBCCEE\nIIUghBCihBSCEEIIQApBCCFECSkEIYQQgBSCEEKIEv8PfxoOi5AoSfsAAAAASUVORK5CYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "colours = ['r','k','g','m']\n", + "for i,M in enumerate(models):\n", + " cl = cosmo[M].raw_cl()\n", + " l = cl['ell']\n", + " \n", + " plt.loglog(l,cl['tt']*l*(l+1)/(2.*np.pi),label=M,color=colours[i])\n", + "plt.legend(loc='upper left')\n", + "\n", + "plt.xlim([2,300])\n", + "#plt.xlim([20,300])\n", + "\n", + "plt.ylim([6e-11,1e-9])" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "(0.3, 0.63)" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\nxUAppRTwf2aQmjpMi6dzAAAAAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "for M in ['PPF1','FLD1']:\n", + " csm = cosmo[M]\n", + " pt = csm.get_perturbations()\n", + " pts = pt['scalar']\n", + " for i,k in enumerate(k_out):\n", + " ptk = pts[i]\n", + " a = ptk['a']\n", + " phi = ptk['phi']\n", + " psi = ptk['psi']\n", + " if 'FLD' in M:\n", + " ls = ':'\n", + " lw=5\n", + " else:\n", + " ls = '-'\n", + " lw=1\n", + " plt.semilogx(a,0.5*(phi+psi),label=M+' '+'$k='+str(k)+'Mpc^{-1}$',ls=ls,lw=lw)\n", + "plt.legend(loc='lower left')\n", + "plt.xlim([1e-2,1])\n", + "plt.ylim([0.3,0.63])" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "515 514\n", + "512 512\n", + "541 540\n", + "562 569\n", + "537 544\n", + "550 551\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAiwAAAE2CAYAAABC0smJAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3XtclVW++PHP2lful81doJAQRFASdRonTUrHxIwsSy3K\njBk9XuaW2elM88vRRg3POHWOWZOWnpwZzTNTzug0SoNFjp1xSjRNBkUdQQUBucNms9m35/cHaCqb\nzcWNoK3368VL9nrWWns9PAv3l/WsZy2hKAqSJEmSJEkDmaq/GyBJkiRJktQVGbBIkiRJkjTgyYBF\nkiRJkqQBTwYskiRJkiQNeDJgkSRJkiRpwJMBiyRJkiRJA16XAYsQYrMQ4qIQoqCT40IIsU4IcVoI\n8ZUQIrU9PVoIkSeEKBRC/FMI8eMryhiEELlCiFPt/wa675QkSZIkSbrVdGeE5V1giovj6cCQ9q/5\nwK/b023Ac4qiDAO+DSwWQgxrP/YfwMeKogwBPm5/LUmSJEmS5FSXAYuiKH8Dal1keQj4jdLmH0CA\nECJCUZRyRVEOt9fRBBwHIq8os6X9+y3A9N6egCRJkiRJtz6NG+qIBM5f8bq0Pa38UoIQIgYYCXze\nnhSmKMql4xVAWGeVCyHm0zZyg7e396ihQ4e6ocmSdGs7dOhQtaIoIf3djs4EBwcrMTEx/d0MSRrw\nBvrv8o3kjoDFJSGED/AB8BNFURqvPa4oiiKE6HR/AEVRNgIbAUaPHq3k5+f3WVsl6VYhhDjb321w\nJSYmBvm7LEldG+i/yzeSO54SKgOir3gd1Z6GEEJLW7CyVVGUHVfkqRRCRLTniQAuuqEdkiRJkiTd\notwRsOwC5rQ/LfRtoEFRlHIhhAA2AccVRXnVSZmn279/GtjphnZIkiRJknSL6vKWkBDiPSANCBZC\nlAI/B7QAiqK8BewGpgKnARPwTHvRu4GngGNCiCPtaS8qirIbyAZ+L4T4HnAWmOmuE5IkSZIk6dbT\nZcCiKMrjXRxXgMVO0j8DRCdlaoCJ3WyjJEnfAFarldLSUsxmc383RZIGjNzc3OFHjx4t6e923AAO\noMBms31/1KhRTqeJ9PmkW0mSpO4oLS3F19eXmJgY2u4oS5Jkt9ttycnJ1f3djr7mcDhEVVXVsIqK\nineADGd55NL8kiQNCGazmaCgIBmsSNI3kEqlUkJCQhqA5E7z3MD2SJIkuSSDFUn65lKpVAou4hIZ\nsEiSJEmSNODJgEWSJEmSpAFPTrqVJOmmoigKZksLllYzCNBotHjqvVCp1P3dNEmS+pAcYZEkacBr\nNjZysaKEpgsncFz4Cs+aIvyNZ/FvOot33WlE+Ve0XiigvvwkFytKMJo67ALSbSUlJUydOpWEhATi\n4+N55ZVX3HgmPZeTk0NCQgJxcXFkZ2d3mi8rK4vQ0FCSkzuds3iVVatWkZSUxIgRI7jzzjv5/PPP\nuy7UA+vWrSMxMZHMzEy31jtQ9HU/uXTd09PTPV988cVwZ3nef/99v5iYmOTbbrstubM81xJCjJo3\nb17UpdfLli0LW7JkySB3tRtg5cqVobGxsUkZGRmD3VmvDFgkSRqwjA31VJUXo28oJtRRhw4bDSpv\nLqoCqFQZqFQZuKgKpEblRytavB1mQh11+NT/C9OFQqoqijG1NHf7/RwOBzNmzGDBggUUFRVx7Ngx\n8vPz2bhxYx+eZefsdjuLFy9mz549FBYW8t5771FYWOg079y5c8nJyelWvQcOHODDDz/k8OHDfPXV\nV+zdu5fo6OiuC/bAm2++SW5uLlu3bnVrvQNBX/eTK6/7zp07Wz744APDoUOHPK7MY7PZePbZZ2/b\nvXv3yZMnT/7TWR5ndDqdsnv37sDy8vI+u8OyadOmkNzc3JO7du0qdme9MmCRJGnAURSFi2XnUTVf\nIESpp0XoqVQFowlLxBARR2j4YMLCbycs/HZCw2MIjrgDn/AhmHRhVBJMlfBHoBDiqMej9hQNF05S\nVXWBtnUuO/fRRx8RExNDRkbbMhB6vZ7169ezdu3aG3HaHXzxxRfExcURGxuLTqdj9uzZ7NzpfCeT\ne+65B4PB0K16y8vLCQ4ORq/XAxAcHMygQZ3/kV1SUsLQoUPJzMwkMTGRRx99FJPJ1Gn6ggULOHPm\nDOnp6bz22ms9P/EBrq/7ybXX/ZFHHql9//33A67M8+mnn3rffvvtrcOGDbN4eHgozvI4o1arlTlz\n5lStXr06rDttKSoq0g0ePDgpIyNjcGxsbNKUKVNim5qaVJ2lP/HEE7eVlpbq09PTh6xYsSK0tz8D\nZ+QcFkmSBpyf/v4gZy42IlCwCg1arRmoA0q7XYfDYcdusyFwoKaKpBAtS++pp1ntQ3BIFCpVx7/X\njh8/TkpKylVpERERNDY2YrFY0Ol0nb7f+PHjaWpq6pC+du1aJk2a1O12X6msrOyqkY+oqCi33LqZ\nPHkyL7/8MvHx8UyaNIlZs2YxYcIEl2WKiorYtGkTd999N1lZWbz55ps8+uijTtPfeustcnJyyMvL\nIzg4+Lrb25n6P/8Ly4Xuj6B1h26QNwEP3uEyT1/3EyfX3fL555/7XJn//PnzusjISIurPJ15/vnn\nLw4fPjxp+fLlFd3JX1JS4rFhw4aSyZMnNz/22GMxv/zlL0MyMzPrnKVv27bt3L59+/z37dt3MiIi\nwtad+rtLjrBIkjTgeHh6YkeFTa1Hq+1ylNsplUqNVqdHo/PELnS0oEeLnVB7DZaKQiorzuJwOK4q\no1arMRqNV6UpioLJZEKj0ZCVldXp++3fv58jR450+OosWJk0aRLJyckdvjobQXEnHx8fDh06xMaN\nGwkJCWHWrFm8++67LstER0dz9913A/Dkk0/y2WefuUy/ld3IftIXDAaD47HHHqvJzs7u1ghIeHi4\nZfLkyc0ATz31VM3f//53H1fpfUWOsEiSNOAszxjeJ/UaG+upMzXg72gizFFLS4WRRpUvoWHRCCFI\nS0sjMzOTNWvWXF7ELjc3l9TUVMxmM/7+/uTl5ZGTk8OKFSvw8Pg6mOrpCMvevXu7bG9kZCTnz5+/\n/Lq0tJTIyMjenHoHarWatLQ00tLSGD58OFu2bGHu3Lmd5r92Ub9LrztLvxG6GgnpK33dT5xc96tG\nUwCio6MtZWVlOld5XPnpT39amZqaOmz27NldLvs/UK69HGGRJOkbw8cvgLDw21ECBlOpCkSFgzBH\nDaby41ysLCUlJYWRI0eybNkyACorK1myZAmrV6/m8OHDfPnllxQVFbFmzZqrPoSgb/5yHjNmDKdO\nnaK4uBiLxcL27dsvz5vorokTJ1JWVnZVWlFREadOnbr8+siRI9x+++0u6zl37hwHDhwAYNu2bYwb\nN85l+q2sr/vJtdd9x44dhhkzZtRfWc+ECROaS0pKPE6cOKEzm83i2jxjx46NLy4u1nZ2DmFhYfYH\nH3ywbtu2bV3esysvL9ft3bvXG2Dr1q2G73znO0ZX6X1FBiySJH3jeHp5ExYeg8N/MBdVgegUGyG2\nKn7+4lK++OILVq5cySeffMLChQs5e/YsixYt4uDBg9x11114e3vfsHZqNBrWr1/P/fffT2JiIjNn\nziQpKeny8alTp3LhwgUAHn/8ccaOHUtRURFRUVFs2rQJh8PB6dOnO0zGNRqNPP300wwbNowRI0ZQ\nWFjI8uXLXbYlISGBN954g8TEROrq6li4cKHL9FtZdnY2+fn5fdZPrrzuGRkZntOnT68dPXq0GWDC\nhAlxJSUlWq1Wy69+9atzU6ZMiR8yZEjSlXnsdjtnz57Vh4SEuJxD8rOf/ayivr6+yzstMTEx5tdf\nfz00NjY2qb6+XrN06dIqV+l9RXQ1a34gGT16tJKfn9/fzZCkAU8IcUhRlNH93Y7OOPtdPn78OImJ\nif3SnsaGOqymGgyOJixCQ73Kj7Dwq0cc5s2bx4YNG3jppZeYMmUK48eP75e29kRBQQGbN2/m1Vdf\nva56SkpKmDZtGgUFBd1K/yZzdz8pKCgwJScnH+9JmYMHD3ps2LAh+J133un+LPVOFBUV6aZNmzbk\n1KlT/+xO+vU6evRocEpKSoyzY3IOiyRJ33h+/oHgH0hlxXkCHPWEOWqpKncQFHb75aeJ3n77baBt\nwbWbRXJy8nUHK1LPDIR+MmbMGPOYMWOuO1gZaGTAIkmS1C4sPBqzOYiG2vOEKPVUVyr4B0Wi1en7\nu2k3RE1NDRMnTuyQ/vHHHzsdRYmJiZGjK7eIiooKdVpaWsK16Z9++mmRs1GUhIQEi7tHV7oiAxZJ\nkqQreHh4oQm9g/qqMwQrDdTUKPgFRaN1sbbGrSIoKIgjR470dzOkfhAeHm4/ceKE82WUBwg56VaS\nJOkaGo0G37A7qBU+BCmNNNWcw25z6xpYkiT1kAxYJEmSnFCr1ASE3UGN8MWgNFFbda6/myRJ32gy\nYJEkSeqESqUiIHQwDXgR7GigslwGLZLUX2TAIkmS5IJarUYXEEmr0BHkqONiRVnXhSRJcjsZsEiS\nJHXB08sHk75tQVA/Rx11NX26PpYkSU7IgEWSJKkbDEFh1GgM6BQr2tZqmo0d94ORJKnvyIBFkiSp\nm8LCoqlWB+KDGWtTOS3Nzf3dJEn6xugyYBFCbBZCXBRCOF0dSLRZJ4Q4LYT4SgiR2lVZIcRyIUSZ\nEOJI+9fU6z8VSZKkvhcaHkOV8CdAacbSUEpTQ11/N0mSvhG6M8LyLjDFxfF0YEj713zg190s+5qi\nKHe2f+3uRjskSZL6XElJCVOnTiUhIYH4+HheeeWVDnlCImKpEgH4Y0LVXM7F8r5bBT0nJ4eEhATi\n4uLIzs7uNF9WVhahoaEkJyd3q95Vq1aRlJTEiBEjuPPOO/n8889d5l+3bh2JiYlkZmbi4+PjNM/y\n5ctZu3Ztt97/ZtedfnI9Ll339PR0zxdffDHcWZ7333/fLyYmJvm2225L7izPtYQQo+bNmxd16fWy\nZcvClixZMshVmZUrV4bGxsYmZWRkDPby8hrpLM+SJUsGLVu2LKw7beitLgMWRVH+BtS6yPIQ8Bul\nzT+AACFERDfLSpIkDRgOh4MZM2awYMECioqKOHbsGPn5+WzcuLFD3pCIwVSqDHgoVgyOGi5WlNBY\nV+PW9tjtdhYvXsyePXsoLCzkvffeo7DQ+WKkc+fOJScnp1v1HjhwgA8//JDDhw/z1VdfsXfvXqKj\no12WefPNN8nNzWXr1q09Po9bTU/6SW9ced137tzZ8sEHHxgOHTrkcWUem83Gs88+e9vu3btPnjx5\n8p/O8jij0+mU3bt3B5aXl3d7pftNmzaF5Obmnty1a1dxb87HXdyxNH8kcP6K16XtaeVdlPuhEGIO\nkA88pyiK03FVIcR82kZuuO22266/tZIkDXx7/gMqjrm3zvDhkN75CAXARx99RExMDBkZGQDo9XrW\nr1/PhAkTmD9/fof8YeG3U1fnhbalmlBHHeYWIxdbm1ArWgxhEQjV9U0T/OKLL4iLiyM2NhaA2bNn\ns3PnToYNG9Yh7z333ENJSUm36i0vLyc4OBi9vm2PpODgYJf5FyxYwJkzZ0hPTycrK+uqY6tWrWLL\nli2EhoYSHR3NqFGjutUGd9izZw8VFRVurTM8PJz09HSXeXraT3rqyuteUFDAI488Uvv+++8HjBo1\n6vLJfvrpp963335767BhwyyA0zzOqNVqZc6cOVWrV68Oe/3117t8Rv+JJ564rbS0VJ+enj4kMzOz\n+spjL7zwQvj//u//BgcFBVkHDRpkGTlypKm359wd/TXp9tdALHAnbYHNrzrLqCjKRkVRRiuKMjok\nJORGtU+SpG+g48ePk5KSclVaREQEjY2NWCwWp2UCA0PwjhjKtx/5N+767qNMnng/902ayIjhSSQn\nJbFj+3tYzL37f7ysrOyqkY+oqCjKyq5/HZjJkydz/vx54uPjWbRoEfv27XOZ/6233mLQoEHk5eXx\n7LPPXk4/dOgQ27dv58iRI+zevZuDBw9ed9tuBr3pJ5eMHz+eO++8s8PX3r17L+dxct0tZWVlV21m\ndf78eV1kZKTFVZ7OPP/88xd37NhhqKmpUXeVd9u2bedCQ0Ot+/btO/nzn//84qX0/fv3e/3xj380\nHDt2rDA3N/fU0aNHvbvz3tfDHSMsZcCVY4lR7WmdUhSl8tL3Qoi3gQ/d0A5Jkm4VXYyE9BW1Wo3R\naLwqTVEUTCYTGo2GrKwsNm/e3KGcEIJ//OMLFEWhuvoCOqsRX6UFlVCwKmpMtaXUq3Qodg0aRcHL\nEMCDGQ87HR1YtWoVDz30UJ+dI4CPjw+HDh1i//795OXlMWvWLLKzs5k7d26P6tm/fz8PP/wwXl5e\nAJdHHG6UrkZC+kpv+wm0/cz6m8FgcDz22GM12dnZoZ6eno7e1JGXl+czderUel9fXwfA5MmT693b\nyo7cEbDsAn4ghNgO3AU0KIri8naQECLiijwPA3J/ckmS+l1aWhqZmZmsWbMGIQQAubm5pKamYjab\n8ff3Jy8vj5ycHFasWIGHx9dTBsaPH09T09drsyiKgt1uY+VLz/PAuFT8Hc0goFVoMDWY2fq7TQib\nGpXDgc7XCx//IFQqcVV7IiMjOX/+6zvupaWlREZGuuVc1Wo1aWlppKWlMXz4cLZs2dLjgOWbyp39\n5JK1a9cyadIkwOl1v2o0BSA6OvqqERVneVz56U9/Wpmamjps9uzZ1V3nHhi681jze8ABIEEIUSqE\n+J4QYoEQYkF7lt3AGeA08DawyFXZ9kP/KYQ4JoT4CrgX+HqMUZIkqZ+kpKQwcuRIli1bBkBlZSVL\nlixh9erVHD58mC+//JKioiLWrFlz1YcQtP3lfOTIkctfR48epaDgn0yfNRfNoOE0+sVQpQ6kFS1+\nDhNhjlpCVVV4a5qwmuu5ePE8F0vLqD57lvqLF7DabIwZM4ZTp05RXFyMxWJh+/btPR7FmDhxYofb\nSEVFRZw6dery6yNHjnD77bf3+Od1zz338Kc//YmWlhaampr485//3OM6bkbu7CeXvi4FK0CH675j\nxw7DjBkzrhrBmDBhQnNJSYnHiRMndGazWVybZ+zYsfHFxcXazs4hLCzM/uCDD9Zt27bN9QSmTtx3\n333G3bt3BxiNRlFXV6fKzc0N6E09PdHlCIuiKI93cVwBFvekrKIoT3WrdZIkSTdQdnY2+fn5/O53\nv+Pee+9l/fr1nD17lkWLFvH0009z11134e3d81v1Qgj8fALBJxAAu8NOvbEOm6kJD4eZQIcRlVBQ\nBLRo9ZjsemqqytFYVax66SW+O2kiDgW+973vkZSUdLneqVOn8s477zBo0CAef/xxPv30U6qrq4mK\nimLFihU888wznD59GoPBcFV7jEYjP/zhD6mvr0ej0RAXF9erJ1xSU1OZNWsWKSkphIaGMmbMmB7X\ncTPqq35yiUajYf369dx///2YTCbPzMzMC6NHjzYDTJgwIW7Lli1nY2JirL/61a/OTZkyJd5ut/PE\nE09UX8pjt9s5e/asPiQkxObqfX72s59VbNmypVeTQ8eNG2d6+OGHa5OTk5OCgoKsI0aM6PNVFEVb\nvHFzGD16tJKfn9/fzZCkAU8IcUhRlNH93Y7OOPtdPn78OImJif3Uoq7NmzePDRs28NJLLzFlyhTG\njx/vtrptditNTXU4zEY8HGa8lFaEAJuiwqjyxCz0CLsWjU0BxYTGyxMfQzhqjeu/OQsKCti8eTOv\nvvqq29oquebuflJQUGBKTk4+3pMyBw8e9NiwYUPwO++803cLBPWRo0ePBqekpMQ4OyYDFkm6BcmA\n5eZmsbbS1FiDxmLE29GCRjhwKIJm4YFJ5YHi0KGxCVS2FhSNFb1fIN5+wdf9GLU08PQmYLmZuQpY\n3DHpVpKkW5gQYjMwDbioKEqHZVSFEJnAC4AAmoCFiqIcvbGtvLXotHqCgtoWH7Xb7dQ11aCYm/Bx\nmPB1tOBQwKjxwqTTozh8UZocWOrKwNGE8NDjFRCC3ssXhOjina5WU1PDxIkTO6R//PHHBAUFueXc\npIGpoqJCnZaWlnBt+qeffloUHh5u7482XUsGLJIkdeVdYD3wm06OFwMTFEWpE0KkAxtpe2JQcgO1\nWk1gQCgQiqIo1DfV4jDV42Nvxs9hwqEImtSemLQeKA5/tA41zVVNtFjLcWjsqD298A4MQ6P37PK9\ngoKCOHLkSN+flDTghIeH20+cOOF8GeUBQgYskiS5pCjK34QQMS6O//2Kl/+gbS0mqQ8IIQjwCwK/\nIBwOB3VNNdDSgI/dhL/DhF1R0aj2okWjR9H6oEWNYlFoPncBRWnBoVOj8fbFJzAUlaZba4xJ0oAh\nAxZJktzpe8AeZwfkNhvupVKpCPQPAf8Q7A47tQ3VqMyN+DmaCRRGWoWWRuGFWaVDaDxRKV5oHOBo\ntGKqOoVNq+DQadB4++IdEIpa0+kTsJI0IMiARZIktxBC3EtbwDLO2XFFUTbSdruI0aNH3zyz/W8C\napUaQ2AYEIbF2kpdQxUeliZClAYAjHjQrPakVWixeGoQHgY0ikBts6G62ERrZR1WDdh1aoSnF17+\nQeg9ne/IPJApioK5pZlWYwOO1haEzQYOB+JSbxMg1GrUeg88/YNQe9185/hNJgMWSZKumxBiBPAO\nkK4oinu3LJZ6RKfVExzcdlfOaGqitakGH3sTYY467IqgSeWFWeWJ1a7GqlNh1vqhQYXK7kDXYkLb\n3ISjugmjGmwagV2rRqX3QO8TgKePH0L0/5NINpuNFmM9VpMRxdKKymZDbVPQ2EEooG/PpwAOFSjt\nc4+FAmqHA4xWLDVN2NWAjwfe4bchtPIW2UAnAxZJkq6LEOI2YAfwlKIoJ/u7PdLXfLx88fHyRVEU\n6hqrwdSAn6OZANFMq9DSpPLGoXjgcCjYNGDx9UKteKNyCFR2C9qWJvStNjAaocaISYBdDXaNwKFR\nI7Ra1DoPtB7e6L18UKvd95Fis1oxmxqxmo04WlsRNhsqm4La3haYaPj6A8yuApsGzDoViqZtBEXr\n5YPe0w+1WnN5+Xybw47J3ILZWIfS0ozebEPfYKal8SQE+uAZcfvlvNLAIwMWSZJcat9iIw0IFkKU\nAj8HtACKorwFLAOCgDfb/7O3DeQ1YL6JhBCX57tYbVbq6ivxtDQR7Khve0Ra5UWrxgeVVYsNB1aV\nA9QaLNpA1KhQKSAcrQhbMyqbA41VQWO2ATagBajDQlvg4FBdGtUQKCrR9mi1SqB83Zj2bxRwKAhF\nAQWEoiAcCioHqO2gUkBN2xe0jZLY2oMlq4cKdDo0Hl54+gTg2Y0noAA0KjV+Xj74td8KstptVFeV\n4tFoxKPWSHPzcbwHxyHkhOQBSQYskiS51I3tOb4PfP8GNUe6TlqN9vIto6bmeqxNtfjajfhZTVhQ\n06TxxdMzEEeLHavNhh0HNpUCKi0qdSBqvQo0GrQ+HlitJuzmFhxWC9htYHegsrcFIer2f4XSFnx0\nRhHgEO3/qsChFti0AtQq0GjR6D3Qefvh4enj9tEPrVpDRHgMJkMr9eX/IqDJgen0Sbxi4xA6j64r\nkG4oGbBIkiR9Q/l6B4B3AHa7jZr6i+haGzHY6qGpnmbhid3Dj0D/UFqNZlpNLdiwY8WO1W7HVN+K\nGoEaPVqdD57+3ug89E7fR3E4UBQFRVFAcaCgIIQK1RW3a/qTl06PPnoo5eWnMdRZaD5zGu87EhBa\n+eTUQNL/s6ckSZIGkJKSEqZOnUpCQgLx8fG88sor/dqenJwcEhISiIuLIzs7u9N8WVlZhIaGkpzc\nYTFip4QQPPfccwCo1Rr+53+28auN2zEZ4qjVBKDDSlBrJUplIa2tF9EHehIaGU54eBi+Om/0aBAI\nLNhptpuprq2hoqyc6rJK6itqMBtbAFi3bh3DkpJ4as4c1BoNaq0OjVaPWqMdEMHKJWqVikGDhlAb\nqEVlA1PJKVxtXdPX/eTSdU9PT/d88cUXw53leeyxx2IMBkPKkCFDkq49FhkZOTw+Pn7Y0KFDhyUn\nJ3e558ULL7wQHhcXl3SpzCeffNL73Rs7sXLlytDY2NikjIyMwb0pLwMWSZKkdg6HgxkzZrBgwQKK\nioo4duwY+fn5vdrJ2B3sdjuLFy9mz549FBYW8t5771FY6Hwx0rlz55KTk9PtuvV6PTt27KC6uvqq\ndG9PX4LCBqMJT6LWM4IWoSfQ1oBX7Skay4uob6rGJ8iXoMhQQiPDCQsNxUfnhV7RoGoPYEyOVmob\n66goK+f1dev4/e+2s3H9Wzgcjuv6efQ1lRCER8RR76tC1erAXHrGab6+7idXXvedO3e2fPDBB4ZD\nhw51uEeVlZVVvWvXrlOd1bNv376TJ06cKCwoKHC5F9HevXu9P/roo4Bjx44Vnjx5sjAvL+9kbGys\nxR3ncqVNmzaF5Obmnty1a1dxb8rLW0KSJA04a75Yw4naE26tc6hhKC986wWXeT766CNiYmLIyMgA\n2j7U169fz4QJE5g/f75b29MdX3zxBXFxccTGxgIwe/Zsdu7cybBhwzrkveeeeygpKel23RqNhvnz\n5/Paa6+xatWqDsdVKhWGwHAIDKfZ1MSpf37J7McfYdSIRA4dO8GQoUP5ze+20lDXwJQpUxg1ahSH\nDx9m2LBh/Pq/30CtUrPkP57j7LlzzHxyNrNmzWL+vPloUKFGhUarxcvPG61H7ye4njz5C5qM7t0X\n0NcnkciY52m2nMaroQV7YANqH/+r8vR1P7nyuhcUFPDII4/Uvv/++wGjRo2quDJfenq6saio6Lpn\nCJeVlWkNBoPN09NTAYiIiLC5yl9UVKSbMmXKkOHDh5sKCgq84uPjW/7whz+UXLhwQeMs3dfX1/HE\nE0/cVlpaqk9PTx+SmZlZ/fOf//xiT9spR1gkSZLaHT9+nJSUlKvSIiIiaGxsxGJx/Qfn+PHjufPO\nOzt87d27t9ftKSsrIzo6+vLrqKgoysrKel3ftRYvXszWrVtpaGhwmc/by5eAkNso+lcJmd+bx+F9\nHxLireXttb+g4WIJRUVFLFq0iOPHj+Pv789vtv+OoEEhbPntbxg0aBB/3ZPDjxf8AB1qFBRasdFs\na6Gqtpq+ClckAAAgAElEQVSKsnKqyiqpK6+mpbEZxdH/awp66zywBgWhCGgpK+1wa6iv+4mT624p\nKyvrcWBy7733xiclJSWuXbs22FW+6dOnN164cEEXExOT/OSTT972l7/8pcsV9UpKSjx+8IMfXDxz\n5sw/fX19Hb/85S9DXKVv27btXGhoqHXfvn0nexOsgBxhkSRpAOpqJKSvqNVqjEbjVWmKomAymdBo\nNGRlZbF582anZffv39+j95o0aRIVFRUd0letWsVDDz3Uo7p6y8/Pjzlz5rBu3To8Pbt+NDg6Opqp\nDzwMwPQn57Jh/Rs8+sAkogeFM3xwMHUNVWRmZvL666+zdOnSy+U8fbwJDP76M9PaasHU2IzNYm17\nCgkHVsVOi9ECTQ1tozBCjd5Dj5e/Nyq1ukNbAOLjX7rOn0DnwgPDuWCsx9Box3qxDF3Y11tk3ch+\n0lufffbZicGDB1vLyso09913X3xSUpI5PT3d6Cyvv7+/o6CgoDAnJ8f3448/9n366afvWLZsWemP\nfvSjTheBDA8Pt0yePLkZ4KmnnqpZt25daGZmZp2zdKDSHeckAxZJkqR2aWlpZGZmsmbNmssTQnNz\nc0lNTcVsNuPv709eXh45OTmsWLECD4+vpxWMHz+epqamDnWuXbuWSZMmdUjvzshLZGQk58+fv/y6\ntLSUyMjI3pxap37yk5+QmprKM88802XeKyfJ+nj5o/P0xRI4GEWo8FLMaJpLaa05i9Xait1hR61y\nHmho9Tr8Q74eMHA4HLQ0NNPaYsau2LELBRtWWs1WGluMbbeQUKHV6fAO8EGt7fuPLiEE3iHRWEwl\naGrr0YYMQqjabkr0dT9xct11kZGRPZpTMnjwYGt7XbYHHnig/sCBA96dBSzQdotw2rRpTdOmTWsa\nMWJEy29/+9sgVwHLtROmL73uLN0d5C0hSZKkdikpKYwcOZJly5YBUFlZyZIlS1i9ejWHDx/myy+/\npKioiDVr1lz1IQRtfzkfOXKkw5ezYKW7xowZw6lTpyguLsZisbB9+/bL8ya6a+LEiS5vIxkMBmbO\nnMmmTZu6rOvcuXMcOHAAgG3btjFu3Dg89J6Ull3gwJlGqrXB/OFPH3LfqERsFYVUV53vosY2KpUK\n70BfDINCCIkKJ2xQOAb/QLxUenSoof02ktFqovLiRS6WVVBbXk2rydyt+nsrwNMHo48WlR1aL5Ze\nTu/rfnLtdd+xY4dhxowZ9d1td2Njo6qurk516fu8vDy/ESNGtACMHTs2vri4+KrntY8ePao/duzY\n5WfSv/zyS8+oqCiXAVJ5eblu79693gBbt241fOc73zG6SncHGbBIkiS1y87OJj8/n5UrV/LJJ5+w\ncOFCzp49y6JFizh48CB33XUX3t5uf9qzUxqNhvXr13P//feTmJjIzJkzSUr6+gnWqVOncuHCBQAe\nf/xxxo4dS1FREVFRUWzatAmHw8Hp06cxGAwu3+e5557r8LSQMwkJCbzxxhskJiZSV1fHwoULL6dv\n2LCB8fdMpsEMM+cvxo6aYGs12K3UVJdht9u7fd5CCDy8PQkIDyI4MoywyAhCgoPx1nigRY0DBbNi\noaaulotlFdSVV2NttXa7/p7wC46mVQP2usbLc1n6up9ced0zMjI8p0+fXjt69GgzwIQJE+JKSkq0\nAA8++ODgcePGDS0uLtaHhYWNeO2114IBSktLNd/+9reHJiQkDEtNTU2cPHly/aOPPtpot9s5e/as\nPiQk5KpJtY2Njeo5c+YMvuOOO5Li4+OHnThxwnPNmjUXXLUxJibG/Prrr4fGxsYm1dfXa5YuXVrl\nKt0dhKvnzAea0aNHK/n5+f3dDEka8IQQhwby8vjOfpePHz9OYmKXy0X0m3nz5rFhwwZeeuklpkyZ\nwvjx4/u7SV0qKChg8+bNvPrqq9ddV0lJCdOmTaOgoKBb6YqiUFdfiUdLLV60YkFDozaAQMMg1J3M\nSekuRVEwNRgxN7dgxY5DtC3vr0WNt483Xv7u3YW57PwJDA02NOHBaIOdLolymbv7SUFBgSk5Odkt\nj0IdPHjQY8OGDcHvvPNOade5O1dUVKSbNm3akFOnTv2zO+k9cfTo0eCUlJQYZ8fkHBZJkqRuePvt\ntwGcPgI8UCUnJ7slWOkNIQSGwHCUgDBq2wOXYGs1rZUN1HsEYQgM7/X8BiEE3gG+eAe0bexorG3E\nbDZjxU59cyNGoxFvb2+8A3zdci4ehgjsTeex19Z0GbAM5H4yZswY85gxY64rWOlPMmCRJEmSLqup\nqWHixIkd0j/++OMOoygAMTExTtMvuTJwqamrxNtcTZC5gubyeqw+IQT4uXzitktCCHyD/PHFn1aT\nGWNdIxZsNDQ3YWo24Rfoj97r+vYFMnj5Uemlwt/owNHciMrb77rqu1lUVFSo09LSEq5N//TTT4uc\njaIkJCRYrmd0pSsyYJEkSZIuCwoK4siRI26vVwhBkCEcuyOE6poL+Fvq8Daep6G5Fl1gFJ4eXtf9\nHnovD/ReHljMFhpr6rBgp7auFo9GHQFhQdc1ouPwCwBjLS1VFXh/QwKW8PBw+4kTJ5wvrdwP5KRb\nSZIk6YZRq9QEh0SjhA6lVu2Pr8OEruYU1VXn3bZ0v85DR3BkGAHefqhQ0eKwUHWhEpul9xNzg/1D\nMekBk8XlHkNS3+kyYBFCbBZCXBRCOB3zE23WCSFOCyG+EkKkdlVWCGEQQuQKIU61/xt4/aciSZIk\n3Sx0Wh2GsFiaAwbTInQEW6tpqThBQ1Ot297DK8CHkIhQ9IoWGw6qq6oxNTX3rr1qDa0eGlQOsNe7\n7cEXqQe6M8LyLjDFxfF0YEj713zg190o+x/Ax4qiDAE+bn8tSZIkfcP4evvjHTGUGl0oesWKb+NZ\naipL3DbaolKpCIoMwUfrhQI0NDZgrG/sVV0a/xAcAsy1na6nJvWhLgMWRVH+BrgKeR8CfqO0+QcQ\nIISI6KLsQ8CW9u+3ANN71GpJkiTpliGEICg4EltIPEaVF0H2OloqijCaOq4I21t+oQH4e/siEDQ2\nGzHW9TxoCfYJxKQHldmO4uj+ujKSe7hjDkskcOVyhqXtaa6EKYpS3v59BRDWWUYhxHwhRL4QIr+q\nSg7DSZIk3ao8dJ74hsdTowvBQ2nFs+4MNTUu1y/rEa8AHwL8AlAhaDIZMTX2bBFWlUqFxUOHUMBe\nL0dZbrR+n3SrtM1e6nQGk6IoGxVFGa0oyuiQkJAb2DJJkiTpRmsbbYnCbLgDs9AS1FpJbcW/sLtp\nRMPD1xM/Hz9A0NDUSGtLz5b31/gZUASYG9w310bqHncELGVA9BWvo9rTXKm8dNuo/d9ebTUtSZIk\n3Zq8PX3xCIunTuWLwdFIS8VJWlpNbqnby98bXw9vFKC+tg5HD4KhIO9AWnQgzDb5tNAN5o6AZRcw\np/1poW8DDVfc7nFV5un2758GdrqhHZIkSdetpKSEqVOnkpCQQHx8PK+88kq/ticnJ4eEhATi4uLI\nzs7uNF9WVhahoaEkJyd3q14hBM8999zl12vXrmX58uUuy6xbt47ExEQyMzPx8XG+/P3y5ctZu3Zt\nt9rQFbVaQ2B4HDW6ELyUVtQ1/6KpucEtdfsE+eGl0mMXCjXlXe+jdIlGrcai13D+XBlT75/cZ/3k\n0nVPT0/3fPHFF50ur/vYY4/FGAyGlCFDhiRdeywyMnJ4fHz8sKFDhw5LTk7ucs+LF154ITwuLi7p\nUplPPvnE5WZIK1euDI2NjU3KyMgY7OXlNdJZniVLlgxatmxZp1M+eqo7jzW/BxwAEoQQpUKI7wkh\nFgghFrRn2Q2cAU4DbwOLXJVtP5QNfFcIcQqY1P5akiSpXzkcDmbMmMGCBQsoKiri2LFj5Ofns3Hj\nxn5pj91uZ/HixezZs4fCwkLee+89Cgudr+M1d+5ccnJyul23Xq9nx44d3dr08JI333yT3Nxctm7d\n2u0y7hAUHEWjbzRCUfCsL6GuwT3zGf3DDegUDVZhp7G6rtvlHJ6+PP7ss2TNerRP+smV133nzp0t\nH3zwgeHQoUMdluvNysqq3rVr16nO6tm3b9/JEydOFBYUFLjci2jv3r3eH330UcCxY8cKT548WZiX\nl3cyNjbW5W7NmzZtCsnNzT25a9eu4u6f2fXpzlNCjyuKEqEoilZRlChFUTYpivKWoihvtR9XFEVZ\nrCjKHYqiDFcUJd9V2fb0GkVRJiqKMkRRlEmKosibgZIk9buPPvqImJgYMjIygLYP9fXr17ttxKCn\nvvjiC+Li4oiNjUWn0zF79mx27nQ+IH3PPfd0uSvzlTQaDfPnz+e1117rVv4FCxZw5swZ0tPTO5RZ\ntWoV8fHxjBs3jqKiom63oScC/IJoDYzBLlT4G8uore1qIL9rQggCggNRKYLmVjM2a/cWlvviwCGi\noyKZMn4c4P5+cu11f+SRR2rff//9gGvzpaenG6/debk3ysrKtAaDwebp6akARERE2GJiYjr9YTzx\nxBO3lZaW6tPT04esWLEi9MpjL7zwQnhMTEzyqFGjEk6dOqW/3rZdSS7NL0nSgFOxejWtx0+4tU59\n4lDCX3zRZZ7jx4+TkpJyVVpERASNjY1YLBZ0Ol2nZcePH09TU8fHcNeuXcukSZN61eaysjKio7+e\nIhgVFcXnn3/eq7qcWbx4MSNGjODf//3fu8z71ltvkZOTQ15eHsHBwbz00ksAHDp0iO3bt3PkyBFs\nNhupqamMGjXKbW28ko+XH2Z1HOaaMwS0VLD0WBP/svVuuf0r2S127Iodcb6WkUH+/GJIlMv8xadP\nk5iUgNqioNhtCLXGrf3EyXW3fP755z3egvree++NV6vVyjPPPFO1dOnSTofSpk+f3vjKK68MiomJ\nSR43blzj448/XvvAAw90+gjVtm3bzu3bt89/3759JyMiImxr1qyJBNi/f7/XH//4R8OxY8cKrVYr\nd95557CRI0e6Z+IRMmCRJEm6TK1WYzRe/f+0oiiYTCY0Gg1ZWVls3rzZadn9+/f36L0mTZpERUVF\nh/RVq1bx0EMP9aiu3vLz82POnDmsW7cOT0/PXtWxf/9+Hn74Yby82vYCujQ61Vc89J60hsRhrvoX\nHrZmbFYdGm3nAUJ3qHVqHK0OFBSs3Vi+X61W02RuRQD2hlo0htA+6ye99dlnn50YPHiwtaysTHPf\nfffFJyUlmdPT050GIf7+/o6CgoLCnJwc348//tj36aefvmPZsmWlP/rRj3r07HZeXp7P1KlT6319\nfR0AkydPrnfHuVwiAxZJkgacrkZC+kpaWhqZmZmsWbPm8kZ5ubm5pKamYjab8ff3Jy8vj5ycHFas\nWIGHx9fTCno6wrJ3794u2xMZGcn5818vc1VaWkpkZFfLXPXMT37yE1JTU3nmmWfcWm9f0mv1WELu\n4EX+hYfSSr13MIaA65vb2Wo0U9tQh4q2INXVRolpaWn8esNbOBb9CHNjPT6GULf2EyfXXRcZGely\nTsm1Bg8ebG2vy/bAAw/UHzhwwLuzgAXabhFOmzatadq0aU0jRoxo+e1vfxvU04Clr/X7OiySJEkD\nRUpKCiNHjmTZsmUAVFZWsmTJElavXs3hw4f58ssvKSoqYs2aNVd9CEHbX85Hjhzp8NXb20EAY8aM\n4dSpUxQXF2OxWNi+fXuPRzAmTpxIWVnnK00YDAZmzpzJpk2betXGe+65hz/96U+0tLTQ1NTEn//8\n517V01M6rR51SCytQod/czn1jdf32ar38UCPFrtQaKxxPQE3JSWFUamp/PzX68FscXs/ufa679ix\nwzBjxoxuj1Y0Njaq6urqVJe+z8vL8xsxYkQLwNixY+OLi4u1V+Y/evSo/tixY5fnm3z55ZeeUVFR\nPQqQAO677z7j7t27A4xGo6irq1Pl5uZ2mHdzPWTAIkmS1C47O5v8/HxWrlzJJ598wsKFCzl79iyL\nFi3i4MGD3HXXXXh7u3za0600Gg3r16/n/vvvJzExkZkzZ5KU9PUTrFOnTuXChbaVYB9//HHGjh1L\nUVERUVFRbNq0CYfDwenTp7ucjPvcc8/16GmhK6WmpjJr1ixSUlJIT09nzJgxvaqnN/RaDxRDDHah\nxrupDKPp+h559g9pm4Db0trqco2V7OxsDh86zK9+vZH9//c5C//t39zaT6687hkZGZ7Tp0+vHT16\ntBlgwoQJcSUlJVqABx98cPC4ceOGFhcX68PCwka89tprwQClpaWab3/720MTEhKGpaamJk6ePLn+\n0UcfbbTb7Zw9e1Z/7UTdxsZG9Zw5cwbfcccdSfHx8cNOnDjhuWbNmh4vMTxu3DjTww8/XJucnJw0\nadKkISNGjOjdTpOdEDfTwjejR49W8vPzu84oSd9wQohDiqKM7u92dMbZ7/Lx48dJTOxyuYh+M2/e\nPDZs2MBLL73ElClTGD9+fH83qUsFBQVs3ryZV199tb+b0qeamhvwrC/BLtSIkCHotL1/OKXuQjUt\nWPDWeeAf7DrQu3DhNIG1ZjQRIWiD2m5JubufFBQUmJKTk10+ltxdBw8e9NiwYUPwO++8U+qO+vrC\n0aNHg1NSUmKcHfvmBCymWijNh8H3gLbD4+ySdEuRAYv0TVPXcJEAYxlNwguf8CGoVL27gWCz2Khu\n37cubFC4y7ksFxuq8T1fgd1Xh8/t8b16v664M2C5GbgKWG79SbeKAsf+gOUv/46utQ6LRwjae36M\nGJ0Fuhs3tCtJknQzqKmpYeLEiR3SP/74Y4KCgvqhRd0T6B9KTauZIFsNNVXnCAqL6VU9Gp0GndBi\nxoKxrhFfg3+nef29/WnRVKBu7d76LTebiooKdVpaWsK16Z9++mlReHj4Dd+u+tYOWGqLse56Fm1J\nHv90xLHFkcmjzXmM++v/o/XTtWi+sxj1t/8NPDrvkJIkSd8kQUFBHDlypL+b0SuGkGgaKswYbHXU\n1nliCOzdk0O+gX601tbQ0mLCl84/H/QaLQ06gU+LguJwIHo5qjNQhYeH20+cOOF8aeV+cGv9dC+x\n2+D//hv7G9/GUnKA5ba5fPKd3/KL/7ecCxn/yw+9/pPPWgaj/nQVrWuHYcn9RdstI0mSJOmmJYTA\nK2QwrUKHr6my15slaj116FBjQ8FsanGZ167VIBRwuGmPI6lzt17AUnYY+4Y0yF3GJ5Yk/s33TWYs\neJnnpgzD10PLzDHR/PfS+SiP/y//HrSej1uHofu/tVjWDsP04YvQVNnfZyBJkiT1klajpdU3AjUO\nrDXne72jsqdX25QBY32j64xevgC0Nrp1jTTJiVsnYGk1Qs5PUd6ZSO3FUhZan+WrcW+y6cfTGR51\n9ZCeSiWYNCyM//zhU4TP+z0rojex25qK/uCbWF9NpuGDZ6FhwE6iliRJklzw9zVQpw3EDxO1Nb37\nv9wzwAstaqyKHYfD0Wk+L29/7Cqwt7geiZGu360xh+XkRzg+XIKqsZTf2Sbxx6Dv8/LM75Ac2fXc\nlNTbAkn93qOcqZrCf338N24r3MD0r7ZgO/Yb6lO+T/BDr8Atdl9SkiTpVhcYHI2xwkRAay0mswEv\nj549ZCGEQKfSYlXsNNXWd/qIs6/eizot6K2dBzWSe9zcn8RNlfCHubBtJiWNMNO6nKp7VrP9h/d3\nK1i5UmyID8/Nnkra87/nf0bt4C+MI/joW1T85pm2OTGSJEnSTUOlUqH4D0KgYKvr3SiLt8EPoQha\nW1s7fx8hsGlVqO2g2Hq8OKzUAzdnwOJwwKF3cawfg7XwL/zSOpMf+a9j2aIslkxOQKfp/WmF+OqZ\nn5HGuOf+l994Pkl4yZ8o3zQLbJ13WEmSJGng8fX2p04TgJ9ioqa2vMflNXrN5cm3VkvnwYijffNF\ne5Ocx9KXbr6ApeokvPsA/PnHHLZEkd6ajTrteXb88N4ej6q4EuTrwfQf/xebfRcQcWEv5W89BBa3\nrjIsSZIk9bGA4Gha0OFrrsZm7/l6KXqdBwhoqu38KSDVpYm3xo6bGkruc3MFLE0VKG/dTXPpMZ63\nzucl/2z+a/GjLPlu/HWNqnTGz0PL4z9czduGpYRW/YOKN9KhRUbQkiRJNwu1Wk2LVwg6bDTUdL4J\nZGe8DD6oFRVWF1MDfLz8sanB4eLWkXT9brKApZwcx13ca/4lkffOY+cPxrl1VMUZT52apxf9jM2D\nfo6hvoDK17+LYrzYp+8pSVL/KSkpYerUqSQkJBAfH88rr7zi1vpzcnJISEggLi6O7OzsXue51qpV\nq0hKSmLEiBHceeedfP755+5sNuvWrSMxMZHMzEy31nsjGAJCacSLAGs9JnPPRspVahUa1NhRsFwR\nkFzZT0YOH8GaTe+gcuPE20t9ID093fPFF18Md5bnscceizEYDClDhgxJuvZYZGTk8Pj4+GFDhw4d\nlpyc3OWeF0KIUfPmzYu69HrZsmVhS5YsGXR9Z9HRypUrQ2NjY5MyMjIG97TsTRWwlCjhrAt4gf/5\nwVR+MqlvRlWc0WlUZM37Cb+LXYNfcwnVr0/EUXf+hry3JPU3IcRmIcRFIURBJ8eHCiEOCCFahRBL\nb3T73MnhcDBjxgwWLFhAUVERx44dIz8/n40bN7qlfrvdzuLFi9mzZw+FhYW89957FBYW9jjPtQ4c\nOMCHH37I4cOH+eqrr9i7dy/R0dFuafMlb775Jrm5uWzdutWt9d4oKv9wBAqWuh5vQoxerwcBxrq2\nNVmc9ZMj//wn/7P9Dyi261+m/8o+sHPnzpYPPvjAcOjQoQ6b4GVlZVXv2rXrVGf17Nu37+SJEycK\nCwoKutyLSKfTKbt37w4sLy/v06eHN23aFJKbm3ty165dxT0te1MFLJ6+gez6wd0kDbrxS+mrVYJn\n5nyf94etQ2+uov6NiVirTt/wdkhSP3gXmOLieC3wI2DtDWlNH/roo4+IiYkhIyMDaPugWr9+PWvX\nuufUvvjiC+Li4oiNjUWn0zF79mx27tzZ4zzXKi8vJzg4uO2DFQgODmbQIOd/HJeUlDB06FAyMzNJ\nTEzk0UcfxWQyuTy2YMECzpw5Q3p6Oq+99pobfhI3no+3P/VqP/wdRoymnq1K6xV49W0hZ/1k5arl\n/PeWLdiN17/i7bV94JFHHql9//33A67Nl56ebgwJCXHLY6xqtVqZM2dO1erVq7u1n0FRUZFu8ODB\nSRkZGYNjY2OTpkyZEtvU1KTqLB3giSeeuK20tFSfnp4+ZMWKFaE9beNNtQ5LmJ8HWvWNibGsrW2L\nAGn1npfThBA8OXM2v/+zD5MOLaT5re/imbULfeTwG9ImSeoPiqL8TQgR4+L4ReCiEOIBd73n/t+f\npPq80V3VARAc7cP4ma531D1+/DgpKSlXpUVERNDY2IjFYkGn03Vadvz48TQ1dZx0uXbtWiZNmgRA\nWVnZVSMfUVFRHW7ddCfPtSZPnszLL79MfHw8kyZNYtasWUyYMKHT/EVFRWzatIm7776brKws3nzz\nTZYuXdrpsbfeeoucnBzy8vIIDg522ZYbacWf/0nhhS5Wor2Cw2FHZWvBTh1qnafTPMMG+fHzB6++\nw9J2W0hFKzasVqvTfhJ+eyyNRiNNddUEBnT+M+plP7F8/vnnPt0+0Xb33ntvvFqtVp555pmqpUuX\nVneV//nnn784fPjwpOXLl1d0p/6SkhKPDRs2lEyePLn5sccei/nlL38ZkpmZWecs/eWXX67ctm3b\nuX379vnv27fvZERERI8DrZtqhKWvGRuq+dtv1/DhnEl89a1UvvrWKP7y/akc3rMFe3tkLYRgVsaD\nfDbuN5htCuZND2C5eLKfWy5JA58QYr4QIl8IkV9VVdXfzXFKrVZjNF4dKCmKgslkQqPRkJWV1WnZ\n/fv3c+TIkQ5flz6E+pKPjw+HDh1i48aNhISEMGvWLN59991O80dHR3P33XcD8OSTT/LZZ59169jN\nTqVSY2ufkWLv4fpaWo0OBDTXNTrtJ55efrSYzahs9gHRTz777LMTJ06cKPzrX/966u233w7ds2dP\nlwGPwWBwPPbYYzXZ2dndGv0IDw+3TJ48uRngqaeeqvn73//u4yr9et1UIyx9oaaihKN/fAfzJ/uI\nPF5NiA08vAQXvhWDsNkZ9EUxnp9l84XfL6kbn8SQmd8j7lvf5aHv3sce7W/5Vt7jNG7MIPBHn6L2\nczovSpIkQFGUjcBGgNGjR7vc4KWrkZC+kpaWRmZmJmvWrEEIAUBubi6pqamYzWb8/f3Jy8sjJyeH\nFStW4OHx9bSC7vzlHBkZyfnzX89/Ky0tJTIy8qr83cnjjFqtJi0tjbS0NIYPH86WLVuYO3eu07yX\nzs3Za1fHBpprR0K6w2xpQVt1kmaVJ34R3e9n3oG+NFe1YLFanfaTA3/bz4hhiZibTX3RT3SRkZE9\nWpVu8ODB1va6bA888ED9gQMHvNPT07sctvzpT39amZqaOmz27Nldjsh01lf6qg99I0dYSv91lI/W\n/picB++i/N50Iv77A/zP1XH+vkRM//0iIz//kgff3sO0//kr8Z99RuULT1J7WwDRe77C9vSP2Zc2\nkr/+YgF3Rvmzf8ybeFprufjraShmuVunJN3MUlJSGDlyJMuWLQOgsrKSJUuWsHr1ag4fPsyXX35J\nUVERa9asuepDCLr3l/OYMWM4deoUxcXFWCwWtm/ffnkeRHfzTJw4kbKyqx/PLSoq4tSpr+deHjly\nhNtvv73T8zx37hwHDhwAYNu2bYwbN65bx24FHjpP6tW++DqaMZq6fztJrVOjRYUdByOGD+/QT5Y+\nt5SfPv9jjh077vZ+smPHDsOMGTO6vaZGY2Ojqq6uTnXp+7y8PL8RI0a0AIwdOza+uLhY21nZsLAw\n+4MPPli3bdu2Lu/9lZeX6/bu3esNsHXrVsN3vvMdo6v06/WNCViMjTXs/sU8cr+bStMDs7ntnb/i\n2WDm3EOpKJv+k7EHvmLauh2Muv8ptFr95XI+fkGkPfMzHnj/M8L3fsi5f0un1VND9NZ91E+bhcdv\nfiepJfAAACAASURBVMX74UsINp2h9Ncz5Iq4knQTy87OJj8/n5UrV/LJJ5+wcOFCzp49y6JFizh4\n8CB33XUX3t4925PmShqNhvXr13P//feTmJjIzJkzSUpqGyWYOnUqFy5ccJnH4XBw+vRpDIar97Ux\nGo08/fTTDBs2jBEjRlBYWMjy5cs7bUdCQgJvvPEGiYmJ1NXVsXDhwm4du1V4BoSiILA29myJCo3Q\noAh4+eWXnfaTF5av4vCxAr41aqTb+klGRobn9OnTa0ePHm0GmDBhQlxJSYkW4MEHHxw8bty4ocXF\nxfqwsLAR/5+9e4+LuswbPv65ZoYZzignQUARERQQTFFzNw+VearsnLrtWrllB7etbPdut31y7WDp\n3t51b7lbuZtPtft03G23wxamZWllKiomoqgpKiiKCHI+zVzPHyCCDDDAwDD4fb9evIDrun6/+Y6/\nwfnO9bsOzz//fDBAbm6u6dJLLx0eHx+fMHr06BHTpk0rvvnmm0usVitHjhyxtDdQ93e/+11+cXFx\nu3dgoqOjq1588cXQmJiYxOLiYtOvfvWrgrbKu0q1t/W2UmoNcA1wSmudZKdeAX8EZgEVwB1a6x0N\ndTMa6ozAX7XWyxvKlwJ3A+eexGNa60/aCzY1NVWnp6c79swu8NE9VxP71SGOR3lTNzGVuOt/xpDk\nzn9yOLx3C3v+vorID9OpMyoypiZyl+9nHAmbzuCFb8uGicKllFLbtdapTjrXW8AUIBg4Cfwe8ADQ\nWr+slAoD0gF/wAaUAQla61Y/vtr7W967dy8jRrS7XITL3H333bzyyis8/vjjzJgxg4kTJ/Z4DJmZ\nmaxZs4bnnnuu0+fIycnhmmuuITOz5Sz1tur6muITB/C3lVMdHIeXxduhY6pKKjlTWoRZGQke2HIy\nTX5+Dr/9xa/406rnWfbiy055nWRmZlYkJSW1Oy3ZEdu2bfN85ZVXgv/61792bnOlJrKzs83XXHPN\nsAMHDuxxpNxRu3btCk5JSYm2V+fIGJbXgFXAG63UzwSGNXyNB14CxiuljMCfgKuAXGCbUupDrfW5\nBQWe11r3yDTIHeveJParQxyelcys595xyjmHjBjPkGXjOThnI4d+9RA//jiT9+JjmZ60jiNvPsDg\n21ZBL773K4SjtNbz2qnPByLbatMX/OUvfwHqF2hzlaSkpC4lK+I8o18I6mwZlcUn8Rrg2BpmFj9P\nTKUG6rT9BeKM3n78eelSrNVVLn2dtGbs2LFVY8eO7XKy4irtJiztTWkErgPe0PVdNd8ppfoppcKB\naOCg1voQgFLq7Ya2ba+A5GQ1VRWcfXoFlf2MTF76Z6efPzZ5EoM++obPnr6X4f/cSmZeOJ6l/0b5\nhTHoused/nhCCOGIwsJCrrzyyhbln3/+eas9KNHR0RdF7wqAn28/Skq88a8roc5ah8nY/ud3pRRG\nDNQ1TG/28Gg+FMTXy5daI6iari8e11vk5+cbp0yZEn9h+ZdffpltrxclPj6+prO9K+1xxiyhCKDp\nsq+5DWX2ysc3+f0BpdR86ruSH9FaF9k7uVJqIbAQYNCgQR0Obv0ffsmQkzWUPLUIH/+gDh/vCLPF\ni2ueep1d096n5rGl9P/Mnz0nXqfOEkDMjF92y2MKIURbgoKCyMjIcHUYvVqtdz9MFccpLMonKNix\nTkIPk5lqax0VZ0sJCG4+lsjTZKbcBJ51zlui39XCwsKs+/bt69GOhta4aqDFS0AMMAo4AfxPaw21\n1qu11qla69SQkJAOPUjO3q0MfPcbckYNYPwtv+hSwI5ImXgjqZ98SdblsUTv9uDYk39m1z/+u9sf\nVwghRMcF+odQhQdeNY7PFvLy9wENNdUtZxkrpbCaFEYraJvVmaEKnJOw5AFNN62IbChrrRyt9Umt\ntVVrbQP+AoxzQhzN2Gw2sh57CG2AUc+ucvbpW+XrF8hNL33Eod/dhaVaUffkGr5+9f/02OMLIYRw\njDIYKDP54001JaVnHDrG5GnChAEr9ies2Ez1Ny50pXNXahbOSVg+BOarepcCZ7XWJ4BtwDCl1BCl\nlBmY29CWhjEu59wAOP2m6cY3nmXI3iJO/2w64UNaTG7qdlf/7BEqVjxLUQD0X/lPPnv6LtqbkSWE\nEKJn+fULxaoVtvJCh9qfG8diU5raGju9LJb6dVdqylouDie6pt2EpWFK42YgXimVq5T6uVLqXqXU\nvQ1NPgEOAQep7y25H0BrXQf8AlgL7AXe1VqfG4jzB6XUbqXU98DlwMPOfFJFp/PwXPUmJyK9uPyh\nPzjz1B1yxdTrMTz9v/wQo4n6+zd8es/VjXsUCSGEcD2L2ZMSgw9+1nLqHNxp2cNUv6dURUnLXhST\nlx8AtVUVzgtSAI7NEmpvSqMGFrVS9wn1Cc2F5T9zNMDO2LTkPoaW2wh44SlMHq1vVtYTrpg8nc9q\nnmff/32Q4RsPs+Hmyxm/5h8EhPT5WaBCCOEWtFcAxooyzpw9RWBQ+9sgePp5U1ZUQY2dHhYfT1/q\njKBrnbKJsmiiz61ulvHlewz94gBHrkpgxI+ctnlsl0y7aibGW5/g6ORKwg6d5fvrZ3Fk97euDksI\nIQTQzz+Yau2BpdqxwbceXh54YMRq5za/p8mjfmpzH5op1Fv0qYSlpqaSwieXUeJnZNITL7k6nGau\nvW4u5T9eTPW0EsyVtRT87C52rX3T1WEJIcRFz2AwUGrywYcqKqraHyyrlMKAwoamrq6uRV3jTCEZ\nt+hUfSphWb/yYQYer4aHf45vf4d2x+4xSimu/+kDHIu7k9Bppyn1AcPDT7Fx9ZOuDk0IIS56Fr/6\ndbqqStrdpBigfqE5BZV2xrHYTEaUBi3jWJyqzyQsRw5sZ+BbX3FkZAiXznvI1eHYZTAorl34JN8P\nmEPK5fkcjTIR8txbrP3t7disMmdfiN4gJyeHWbNmER8fT1xcHM8++6xTz5+WlkZ8fDyxsbEsX768\n020utGzZMhITE0lOTmbUqFFs2bKl1bYvvPACI0aM4LbbbgPA19fXbrulS5eycmWP7KDicn7e/pTh\niU9dmUM9I/kFp/jZz37GJWNTW7xOdMMGurUVnZ8pdO41MHPmTK/HHnsszF6bW265JTowMDBl2LBh\niRfWRUREjIyLi0sYPnx4QlJSUrubdCmlxtx9992NgyuXLFkyYPHixQPbOubpp58OjYmJSZw9e/YQ\nb2/vS+y1Wbx48cAlS5a03HipE5yx0q3Laa3Z/diDRAIjn30B1c17+FitNg7tzGNH2gbKTp/E7O2D\nxdsHT19fvPx88Pb3w6efP/6hgQxKCMPkYWw81sNoYPqi/+XzF6uYOv49PuofS+K/trI2dwZXvPIv\nLN72/+MQQnQ/m83GTTfdxO9//3tmz55NdXU1P/nJT1i9ejULFy7s8vmtViuLFi1i3bp1REZGMnbs\nWGbPnk1CQkKH2lxo8+bNfPzxx+zYsQOLxcLp06ftDgg9589//jPr168nMlIG/zdV5eGDb20hpRVn\n8fPp12o7m83GT+64jQd/8UumT5tGv+DAZq8To5cPUE5tZTmWTsTR9DVQXFxcOW/evMCbbrqpeMyY\nMVVN2y1YsOD0gw8+eOrOO++0uxnSV199tT88PNyh0b9ms1l/8skn/U+cOJHv6DGvvvpqyPr16/cP\nHTq0trWExZn6RMKy8c2VDN1dSO7tVzIqdlS3PIa2aY4fOMP2TzeRs+sbaisOAO1fU4NHGEGRScT/\naALJl1+Cl58ZT7OJK37xMhteqObG+A/5R9AoRn6ey6YbL2f0/32PwPDobnkOQoi2rV27lujoaGbP\nng2AxWJh1apVTJ482SkJy9atW4mNjSUmJgaAuXPn8sEHHzRLRhxpc6ETJ04QHByMxVL/9hgcHNxq\n23vvvZdDhw4xc+ZMFixYwMMPN19VYtmyZbz++uuEhoYSFRXFmDFjOv183Y23XxC6sJDasiJoI2E5\n9zqZNW0GtVgxm83NXieenr7Y1ClsbSSNbWn6GsjMzOTGG288849//KPfmDFj8pu2mzlzZll2drZT\npsIajUY9f/78gmeeeWbAiy++mNde+5/85CeDcnNzLTNnzhx22223NbuP9uijj4a98847wUFBQbUD\nBw6sueSSS5xyb8ztE5biohN4/PE18sM9uXyx87suT+eWsnPtdg5s+YrKkj2gKzCavBhyyUTGXjeT\niLh4aiorqa4op7qinMrSMsqKSigvLqEw9wRHvt9BweH1FBxezzdv+eEXPIKY0WMZd91kJj7wKl/8\n70+5NWQt/771coa8n03WjdcS+fJLRKdc5vTnIoS72PDaak4dOeTUc4YOjuHyO9pOOvbu3UtKSkqz\nsvDwcEpKSqipqcFsbv29YeLEiZSWtrwFsHLlSqZOnQpAXl4eUVHnFwCPjIxscevGkTYXmjZtGk8+\n+SRxcXFMnTqVOXPmMHnyZLttX375ZdLS0tiwYUOLxGb79u28/fbbZGRkUFdXx+jRo3t3wvLpbyB/\nt9NO5w3U+EXg86NforVutbf+3OvEiJEaZaW6srLZ68Tb7EmpCYy1LWcKdfJ1UrNly5YOd79ffvnl\ncUajUd95550Fv/rVr9odnPPrX//61MiRIxOXLl2a317bN9988+hXX30VcK4XZ8WKFREAmzZt8v7X\nv/4VuHv37qza2lpGjRqVIAlLg42/v5+hJTb47yWYGlYYdIY9Gw/y7T8+pLRgF9pWCMpI2NBkRs+c\nzrDx4zE12aXT09cXz1buAcPPKTtzhl2ff83+7zZTlLeTjLSt7PrsdcKGTST15v/mq/9Uc331Bj67\n62b8/7aZwvkLKVr+Gy6ZOd9pz0cI0T6j0UhZWfNBlFprKioqMJlMLFiwgDVr1tg9dtOmTT0Rol2+\nvr5s376dTZs2sWHDBubMmcPy5cu54447OnSeTZs2ccMNN+Dt7Q3Q2NN0MbEaPPCits3bQudeJx5m\nM5W1NVSWVWDx8mp8ndx111384bFH8KhpORamp14nX3/99b4hQ4bU5uXlma644oq4xMTEqpkzZ7Y5\nBSowMNB2yy23FC5fvjzUy8urU/OyN2zY4Dtr1qxiPz8/G8C0adOKO3Mee9w6Yfn+638zdN0+jlwR\nz6zJNzjtvHu/Ocjalx5H20oJGBBDytSbSbpiCl6+fp06n29gID++ZTY/vmU2tTXVZG7YzLYPP+BE\n9qd8tOwzfINTKPQewA36Xb65ex6Vb31L8CPP8mXOQabcJ7OIxMWnvZ6Q7jJlyhRuu+02VqxY0fjp\net26dYwePZqqqioCAgLYsGEDaWlpPPHEE3h6nv+Q5Mgn54iICI4dO7+JfW5uLhERzRcqc6SNPUaj\nkSlTpjBlyhRGjhzJ66+/3uGExe3MdGxAckfoqnJ04f42bwude508/cTTqDNl1NXWtXidfLVtK9+u\n28TTL/yx2XtHJ18n5oiIiA7dXxoyZEhtw7nqrr766uLNmzf7tJewAPz2t789OXr06IS5c+c6Nl2q\nB7ntLKGa2ipOLn2CUh8DE5962Wnnzcs+RdqfnwWquGXJH7jrhRcYO/vaTicrF/IwW7hk+hQW/ul5\n5j71RwbGX0pZ4fccPnqcPx66FdPeY/jNTeXYsAAG/PE9Pn1kLnU11U55bCFE21JSUrjkkktYsmQJ\nACdPnmTx4sU888wz7Nixg507d5Kdnc2KFSuaJStQ/8k5IyOjxde5NyGAsWPHcuDAAQ4fPkxNTQ1v\nv/12i16M9tpceeWV5OU1H2KQnZ3NgQMHGn/PyMhg8ODBHX7+kyZN4t///jeVlZWUlpby0Ucfdfgc\n7s7b04dy5YWPtbzV2ULnXidPLnsSI0byC061eJ0czDnK04sXY9bNZ4B25nXy/vvvB950000O91SU\nlJQYioqKDOd+3rBhg39ycnIlwIQJE+IOHz7s0dqxAwYMsF577bVFb775ZusDodpwxRVXlH3yySf9\nysrKVFFRkWHdunWtDwbqILdNWNY//ysic6uwPjAfvyC7M746rOhkGf989hlsdaeYcf+vGZTY+iA3\nZ4iIG8q8J3/LPS+/xoiJN6GtZ/kmHzZ/o6hLnED2lFii/7OLL26aTOFx597PF0K0tHz5ctLT03n6\n6af54osvuO+++zhy5Aj3338/27ZtY/z48fj4+HT6/CaTiVWrVjF9+nRGjBjBrbfeSmJi/YzUWbNm\ncfz48Tbb2Gw2Dh48SGBgYLPzlpWVcfvtt5OQkEBycjJZWVksXbq0w/GNHj2aOXPmkJKSwsyZMxk7\ndmynn6s7qzJ5Y6GW8kr705LPvU6WLVvGN998zaO//U2L14m3fwAANRUd37W56Wtg9uzZXtdff/2Z\n1NTUKoDJkyfH5uTkeABce+21Qy677LLhhw8ftgwYMCD5+eefDwbIzc01XXrppcPj4+MTRo8ePWLa\ntGnFN998c4nVauXIkSOWkJCQNmeM/O53v8svLi7u1B2Yyy67rOKGG244k5SUlDh16tRhycnJ5Z05\njz3KnVbiS01N1enp6Rw7tIuC6+dSEBvEVf/YiMHQ9byrorSa1371LJXF6Uy4eQE/uuVGJ0TcMTUV\nlax/7R32bfwIravxMEcSPCiChA/eptJb4f/fT5HoxFtfou9SSm3XWqe6Oo7WnPtbbmrv3r2MGNHu\nchEuc/fdd/PKK6/w+OOPM2PGDCZOnNjjMWRmZrJmzRqee+65Hn/si0lpRQl+xT9QaAokKLTtnqri\n44VUUE0/P3+8/XwbXyeP/NevuHpkCuMv/xF+g4Z1OpbMzMyKpKSkvZ0+QRPbtm3zfOWVV4L/+te/\n5jrjfN1h165dwSkpKdH26twuYdm2bRsfz5vMoMwCgv7xdyKHd30Ee12NlTd++2eKctcy/LJZXP3A\n/U6ItvMqS8v4f79fQunxw9h0LSbPIYQXFjP80A5O3z2LKQ+ucEqSJvouSViE6DytNVUnsrBhwGdg\n26/J8sJSzlaX4mU003/A+bsoFTXV2A4ewGYx4j+0869rZyYs7qCthMXtBt1+/e7/EptRwLGfTCLF\nCcmKzab554r3KMpdy8C4McxadK8TouwaLz9ffv4//8Mnb/4Z28b/cOBsLsd8ajl+yWSG/Seftd9e\nwdg/vkrwwKGuDlUI0UsVFhZy5ZVXtij//PPPCQoKckFE7kMpRYXBi0DrWWpqqzF7tL78m8XXC1VV\n2mJPIS8PM2eNYHTzTRDz8/ONU6ZMib+w/Msvv8wOCwvr0SXa3SphsVrrMDz3KqcGWLj8v/63y+fT\nWrP2lfXkZr5NQOgQbn78MVQv6blQSnH1bYvYFptMwkd3sbcghv1n89kXVIOHYQQVdy0lYsGPufRm\n1ydYQojeJygoiIyMDFeH4baUlx+q/CxlJYUEBrW+Qr3RbMSIARvN71YopagzKkx2pja7k7CwMOu+\nffuyXB0HuNmg29LjRwg8ayVwye/w8PTq8vm++9dOsr5ajcUngJ88/RQe5s4soty9xo6fiPm+zxkY\nVcF9sV8RHh5GHSfJ8Sti6z938cZdD1J0st1FCYUQQnRAgF8gtdqIqabtQbP1OzcbsKLRunlvis2k\nMNpAWx1a6V60w60SFktJFTmTYhl55S1dPlfW14fY/N7zGI0w78mn8Q5w2swrp4uKiCT+kbV8HXIT\nP+n3HtfH7ScqcRy1+iQFpT/wxsNP887vV1JbI38UQgjhDEaDkTKDFz62Smy2tm/rGJUBFFRVNNvq\nB22qv4lhq3TaRJmLmlslLDYD/GjZS10+z7F9Bax9+Q9oXcINjz5OUGRU+we5mI+XJ1N/+QqbJryK\nl6rgJutzTJk6mIHDU7Fa88nd9yV/uvMBPnrhDepqZedn4Z7caRKA6PvqPLwxKhul5UVttvPwqN+y\nobq88oKK+rV6OjO1+WJks9kU0Gp26FYJCwOCCQjp2u6iZ06U8a/l/42tNper7volg5OTnRRc91NK\nMXH6zaj7N/ON71WMyV3DZR7/ZPo9c+gfEoWt7iT7v3mXF2+/k38/91eqy6vaP6kQvYSnpyeFhYWS\ntIhew8e3P1pDXSvrsZxj8fECDbUXDLyt37UZ6qor7R0mmrDZbKqgoCAAyGytjVsNuvUJHNCl48vP\nVvPOEy9SW5lF6rXzSJ7acgS9OwgLHcCAX73Lxv/8nSHpT5G48R7UkB+jblvE5r+8R0l5DT9s+Ter\ntqYROiSVKfNvI2pE7+9FEhe3yMhIcnNzKSgocHUoQjSqKS5CU8SpwtaTDq01ZWdL0WhOnz3TWF5d\nVwsFBegzCs+y2k49fn5+vslqtXZq1Vk3YwMy6+rq7mqtgdutw3Lh2g2Oqq228rfHXqUo90Nix17O\n7EcWt7oTpzs5W1pG+jvPMP7YGizUkBV6Nbbhs8j8v/+htNpEpeE0YMDTbwgJk6Yy4cYr8fT1dnXY\nopu54zosQvRG/2/lbdxa+iklD+0lqH/rH5pf/90q8oxF/Gbp7xrXyaqqrWHdtBT8TCamrOvcrtK9\n/W+5J7nXLaEu+PrdTRTlfkxoTBLXPPRgn0hWAAL8fLnyrmc4s2Azm/tfy/BTn5K88T5SUitInX8p\ng3zMBFb5UV16nB3/eYU/3fVT1iz+PVs+2EhNdYf20hJCiIuOLSYVD2Xlq41vttnO2+hFjcHKyWNH\nG8s8PcwUBRjwLJEJEc5wUSQsWmv2fPUJBqOFWx9fgtHkVnfCHDJo8BAmPfQ6pxZs4+vQecQUfcO4\n7Y+SGpND9Owohg42MaTIgG9dP4rydvP1m3/gxdt/yl8ffJwv//4xZwuctgO4EEL0GZdPuplKbcbw\nw+Y22/XrV7+/074tzYdglPtb8C3VaNnEtsv63ju3HUd251Fdms3glElYvPv27ZCowUOIWvQSp08/\nxfa1rzLwh7e4/NhL1HoZybriElRtAAP2ncVa4EeBnydn87PY/tFOtn/0CmbvCEJjkogZlUzCpNH4\nBPi6+ukIIYRLRQZHsckQz8jStm/pRI2IhS27yD/UfJue6v4BGG2V1B7MwJwwvjtD7fMuioTlu3+l\nAVYm3HStq0PpMcHBwUy+7VG07dfs3r6Rs9veYcip9aSQDsPgh9iBZJQPJORIBZbTgZz2D+IspeRm\nppGbmcbGvytMllD6hQ1lQEwMUYlxRCfHSRIjhLjo7O+fwMQz75BzbC/RUfb3BRo8YRhe35kpKb9g\nCvOACCCfk99/R5QkLF3SbsKilFoDXAOc0lon2alXwB+BWUAFcIfWekdD3YyGOiPwV6318obyQOAd\nIBrIAW7VWrc90b2TairrOLF/M17+4QyM6/yOme5KGQyMHDsFxk7BarWRtetbzmSux+f4t0zne3wT\nK6mxwZayUPLP+GLKN6FqIyn29adU13L6yFZOH/mWPRsazmcMwOITQsCASIIGRhAYEU7IoIEMiInA\n29+7z4wNEkKIc/zixsF377D12/eInrPEbhuvfp74Wz2poPmtH+/oRGA7x7N3IXM1u8aRHpbXgFXA\nG63UzwSGNXyNB14CxiuljMCfgKuAXGCbUupDrXUW8Bvgc631cqXUbxp+f7QrT6Q1O9J2YKs7ScKk\nn170b6ZGo4GE0ZfB6MsAqK6pZk/GNxTv/QLPgj2k9jtI1OAcbLb9HCj3Ir/EQkmRF7psADZCKLd4\nU2E2UG09ycmSQ5w8cMH6PsoTg8ETg8kTk9kLk8ULs5cPnj7eePr54dMvAL+gQHz69cfL1w9PX288\nfTyxeHti9rJg9jLLLtRCiF5n+mU3Urr5/2A51vbeTD7awmlTGTarFYPRCMDAxB9j4w3K8o62eaxo\nX7sJi9Z6o1Iquo0m1wFv6Pr50d8ppfoppcKp7z05qLU+BKCUeruhbVbD9ykNx78OfEk3JSzff/EZ\nYGDs7BndcXq3ZjFbSBx3BYy7orGssqKcY/t3UnEsE+/TOfiVHMW7PA+/mj1QU0pJpZUzFR6UlXlQ\nVRlKja0ftfhShwWrwUStEeqstdTUVFBVWg10dKCZgfoOOQP1Oa+h/mcUoEAB+tz3+m/1Gn5SqqFt\nk7LGn9uewu+8dLajZ3KfpQWEuBgF+AayyTiMhPJ9bbbz8fDGSgGH9+1jaGIiAKOikzjsB9bT3XIT\n4aLijDEsEcCxJr/nNpTZKz93A2+A1vpEw8/5QKuT25VSC4GFAIMGDepQYAXHiikt2EVIdDI+vXiv\noN7Ey9uHuFGXwajL7NbXVFdRfDqf0sLjVBSforayFFt1KbbqcmyVpdSUn6Gi5DQ1VRXUVddQV11N\nXY0Ra7UHVqsHtjoTWI1obcCmFVob0RiwodDaACh0Q3JR/zbe8F1rUIrGZYN0s2/nC7VuOEI3qbWf\nEDgvTXDkTBpnpkRCiJ51yD+eicXvcTT/IIPCYu22CQoJhYIjHNiW1ZiwRAYEkh4AAWdl5fGucvmg\nW621Vkq1+j++1no1sBrqF5vqyLm/e/8L0JWMvXZWF6MU55gtnoRGRBMaEe3qUEQbFr/zlqtDEKJP\nMQ8dA9vfY+u3/2TQjfZvCEQnj4DPt3Eq72Sz8hJ/E+HHZC2WrnLGgIE8aDaWKLKhrLVygJMNt41o\n+H7KCXE0Y62zcXjnRkxmP+InyMhsIYQQnTflx9dTpT0wHNnZapuBl0TiZ/OitLKiWXnlubVYLigX\nHeOMhOVDYL6qdylwtuF2zzZgmFJqiFLKDMxtaHvumNsbfr4d+MAJcTSTvfkQtZU/EDNmYuPgJyGE\nEKIzwgPD2WkYRlxp6+NYzL5m/G2eVKrm+wbVBAZiQFG5f3t3h9mntZuwKKXeAjYD8UqpXKXUz5VS\n9yql7m1o8glwCDgI/AW4H0BrXQf8AlgL7AXe1VrvaThmOXCVUuoAMLXhd6dK/08aoJlw4zXOPrUQ\nQoiL0AHfYYyw5lBUfLLVNl7agwpDHXV155MWQ1gkAEd2fdPtMfZljswSmtdOvQYWtVL3CfUJzYXl\nhUC3bZVcVlTF6SNb8QuKJriDA3WFEM11ZS0mIfoSW9RIjFkf8M3mf3DNTLtve3ibvbFpzZH9de5y\nKwAAIABJREFUBxiakACAb8xIYDMFBzKxv+yccESfXPRi28ffoW1nSLlquqtDEaIveA1oa12Apmsx\nLaR+LSYh+pxLx8/EqhXlP7R+a6dfYBAAh3ZkN5ZFJU6kzgBVx/NaO0w4oM8lLFpr9m76HGXwYNT0\nbuvEEeKiobXeCJxpo0njWkxa6++Ac2sxCdGnDB+cxAEVScTZg622iRgeA0BB7vnbRimD4zntDxSe\n7e4Q+7Q+l7Ac23uKyrN7GBg3ps9vdChEL9HaWkzNKKUWKqXSlVLpBQUFPRacEM601xJDUu1BbDar\n3fpBqTF4ag/Kyssby4K8/SjyV1iKZcfmruhzCcuWf68Dahh3/dWuDkUI0YTWerXWOlVrnRoSEuLq\ncITolDOBw+hHOTuyNtmt9+rvhZ/Nk0rdfKZQib8RnxKb3WOEY/pUwlJTVUfe3m8xewcyJCXF1eEI\ncbFoa80lIfqU0PixABzctb7VNt42M+WG5glLpb8nPhVgk7VYOq1PJSzfb8jCWnOU4T+6AiWb6AnR\nU1pbi0mIPmfy2FmUaC+887NabeNlsFBjsHI6//yfQW3/+u1hqva3vYGiaF2felfftfYzAMZdP9PF\nkQjRd3R2LSYh+iJ/H3++Nwwltrz1gbf+vgEAHNxxPqkxhA4EIG/35u4NsA9z+V5CzlKYV0rxyR30\nHzicgJBW91IUQnRQV9ZiEqIvOuQTw4TSjygrK8LXt3+L+tBBkZC9l+MHzo9F9x2cAGzl5A+ZDOvB\nWPuSPtPDsvWDTWArYcws6V0RQgjRfWrCh2NUmu/SP7RbHz0mHoNWFBedn8YcljABgIoTuT0SY1/U\nJxIWq9XGwW1fYjB6kjD5MleHI4QQog9LGHU5AEXZ39mt7x8TiL/2pqKuqrEsKTqRYm+wnSnqkRj7\noj6RsBzcdoyaimwGp0zAw2xxdThCCCH6sPHDx3NUh9Cv6Ae79UaTAV+bmQpV11gW4RfIGX8wna2y\ne4xoX59IWNI/XgdYufQG2ehQCCFE9zIajewzRTOsKqfVNl7aTKWhlprq+gRFKUWpnwHPUvsLzon2\nuX3CUn62mpOHt+DlH0b4sDhXhyOEEOIicMJ3ENGc5OSZ43brvc3eaAVHDpzvhanwM+NbqtE2WUCu\nM9w+YdmRloGuO8HIK66iftNYIYQQonupgfUfkNN3pNmtD+gfCMCRXQcay2oCfLHUKmynjnZ/gH2Q\nWycsWmv2fLkelIExs2RnZiGEED1j+MiJAJQe2mG3PmzoIABO551qLNOBwQCcyrQ/WFe0za0TluMH\nzlBetIvQISPxDujn6nCEEEJcJMbEjydPB9H/jP2Bt5GjYvDQxmabIFoi6ndyPpq1vUdi7GvcOmHZ\n+sGXoCsYe61sdCiEEKLnGI0m9pkGE1udY7feN9wHX+1JlbWmsSwwdjQAxcfsJzmibW6bsNRU1XFk\n99eYzL4MGzfO1eEIIYS4yOT6DGaI7QRnS860qDMYDHjbPKhU52cFDU2YQK0R6goKejLMPsNtE5as\nrw9irf6BYeMmYTT1mR0GhBBCuIm6AbEYlGbbzk/s1ns2TG2uq63fuTk+bBBn/MBQVNaTYfYZbpuw\n7Px0HWBj3PVyO0gIIUTPG5pwKQCFB9Pt1nuZvbApzdH99Rslmk0mzvopzKU1dtuLtrllwnLmRBlF\nx9PxCx5McNRgV4cjhBDiIjQh8cec1P3wL7S/c3NA//qNEY98f76+zM+IT6msw9IZbpmwbP9kK9pW\nyCXTZ7g6FCGEEBcpi9mLvcbBDKnMsVsfNiQKgILck41llf4W/MpA10gvS0e5XcJis9rI/vZLlMFE\n8tQrXB2OEEKIi1iuVyQxtuNUVle0qBs0ahhGbaCs7PyYldp+/hg0VB7O6skw+wS3S1gO7cqnunwP\nkSNSsXj7uDocIYQQF7GaoMGYlZUde75qUecX4Yuf9qSyydRmQ0g4AMe+39xjMfYVbpewbPvwc9DV\njL1OBtsKIYRwreCYZABy929pUVc/tdlMZZNdm30iYgE49UNmzwTYhziUsCilZiilspVSB5VSv7FT\n318p9S+l1PdKqa1KqaQmdQ8qpTKVUnuUUg81KV+qlMpTSmU0fM1qLw6bVZN/8DvM3v2JHpni6HMU\nQgghusX4lMup1iaMJ+0PvPXSHlQYarFa65OWkOGpAJQfl/2EOqrdhEUpZQT+BMwEEoB5SqmEC5o9\nBmRorZOB+cAfG45NAu4GxgEpwDVKqdgmxz2vtR7V8GV/InsTlaWV2GqPkDDxSpTB7TqHhBBC9DED\n+ofxgxrIgDL7CYi3hzc2pcnLyQEgLjaVSjNYzxT2YJR9gyPv+uOAg1rrQ1rrGuBt4LoL2iQAXwBo\nrfcB0UqpAcAIYIvWukJrXQd8BdzY2WArSkoASL1GZgcJIYToHQ55RBFbe8xunZ+fP3B+1+bBgQM4\n4wuGs+V224vWOZKwRABNr0RuQ1lTu2hIRJRS44DBQCSQCUxUSgUppbyBWUBUk+MeaLiNtEYp1d/e\ngyulFiql0pVS6ba6SgIj4wkIDXPoyQkhhBDd7ZRfJOGc4WRhy6QlOKJ+kO2po/VTmw0GA6V+Cs/S\n2h6NsS9w1n2V5UA/pVQG8ACwE7BqrfcCK4DPgDQgAzi3scJLQAwwCjgB/I+9E2utV2utU7XWqWBl\nzKyZTgpZCCGE6DoVWr8L885dn7eoi0yJQWkoPVvaWFbua8S7TPdYfH2FIwlLHs17RSIbyhpprUu0\n1ndqrUdRP4YlBDjUUPeq1nqM1noSUATsbyg/qbW2aq1twF+ov/XUNqUYcdllDoQshBBC9IyY4WMB\nKD68q0Vd0NAQfLQnVbXVjWXVfl74loOuqW7RXrTOkYRlGzBMKTVEKWUG5gIfNm2glOrXUAdwF7BR\na13SUBfa8H0Q9beN3mz4PbzJKW6g/vZRm7x8/fCweDoQshBCCNEzxo+YQKH2w7foUIs6o9mIt82D\nKs5Pba5rWDyu4tDungzT7bW7zbHWuk4p9QtgLWAE1mit9yil7m2of5n6wbWvK6U0sAf4eZNT/FMp\nFQTUAou01sUN5X9QSo0CNJAD3NNeLP4hoQ4/MSGEEKIneFq82WmIIqrC/sBbT+1BibGy8ff6xePy\nOLJ7CwkN05xF+9pNWAAaphx/ckHZy01+3gzEtXLsxFbKf+Z4mEIIIUTvdcQSyeyqr9A2K8pgbFbn\nqcxUGeqoLC/Hy8cH78hYIJ1ThzK5cI0Q0TpZzEQIIYToopJ+UXhTTfYPO1rUeVm8ADiyt35qc+jw\nVL5OUJxSxS3aitZJwiKEEEJ0kW/kMAD2Zn3dos4/MBCA3KwcAIbHjeOF64wcCqls0Va0ThIWIYQQ\noouSEyYAUH0iu0Vd2JBIAM6crF/dNiIgCItNU1RzpucC7AMkYRFCCCG6aMTgkRzXgQScbTnwNjJl\nKEZtoLysDKhfPC7YZqTMKKvddoQkLEIIIUQXGY1GDhkiiKrOa1HnF+6Lj7ZQaa1pLBtm8cdisPVk\niG7PoVlCQgghhGhbnmc4oyu/wmazYmgyU8hgMOBt86BCnV8o7sWffAkXzCYSbZMeFiGEEMIJSgMi\n6mcK5WS0qPPUHlQazi8eJ8lKx0nCIoQQQjiBZ3gsAPv3ftOyzmChVlkpPiMDbTtLEhYhhBDCCeLj\n61etrczb36LO28sHgCO7W84iEo6RhEUIIYRwgpShoynQAfidPdqirl9wEADH99tfvl+0TxIWIYQQ\nwgnMHmYOGiKIqGo5U2jgsGgAik7LLaHOkoRFCCGEcJJcczgx1jy0rfmU5bDEKDy0kcpKWd22syRh\nEUIIIZyk2H8g/lSSe+JAs3KfEG98tIUqW62LInN/krAIIYQQTmIaMASAPXs2NitXSuFpM1GtrK4I\nq0+QhEUIIYRwkiGxowAoOZbVos6iPahSdS3KhWMkYRFCtEkpNUMpla2UOqiU+o2d+v5KqX8ppb5X\nSm1VSiW5Ik4heoOx8eMo0V5YilvOBvI0mKkxWCktLnJBZO5PEhYhRKuUUkbgT8BMIAGYp5RKuKDZ\nY0CG1joZmA/8sWejFKL38PHy47AKJ6Qyv0Wdt5c3ADm7D/Z0WH2CJCxCiLaMAw5qrQ9prWuAt4Hr\nLmiTAHwBoLXeB0QrpQb0bJhC9B65HgMYXHeiRbl/YCAAJw7m9nRIfYIkLEKItkQATfu2cxvKmtoF\n3AiglBoHDAYiLzyRUmqhUipdKZVeUFDQTeEK4XqFXmFEcJqzZWeblYdG1//pFBfIWiydIQmLEKKr\nlgP9lFIZwAPATqDFVAit9WqtdarWOjUkJKSnYxSix9T1r8/XM/c331MoKjkGpRUVFRWuCMvtScIi\nhGhLHhDV5PfIhrJGWusSrfWdWutR1I9hCQEO9VyIQvQu/SPiAMg7tLNZuW+YLz7aTHVdtSvCcnuS\nsAgh2rINGKaUGqKUMgNzgQ+bNlBK9WuoA7gL2Ki1LunhOIXoNZISLgXAeupIs3KDwYCX9qCqZQek\ncIDJ1QEIIXovrXWdUuoXwFrACKzRWu9RSt3bUP8yMAJ4XSmlgT3Az10WsBC9QEx4LCd0IAGlx1vU\nWWwmyozSw9IZkrAIIdqktf4E+OSCspeb/LwZiOvpuITorYxGAzmGMAZWt5wpZDF4UKVqqa2pwcNs\ntnO0aI3cEhJCCCGc7Lh5ANG2Ey02QfQye6MVHMv+wUWRuS+HEpaurHSplHpQKZWplNqjlHqoSXmg\nUmqdUupAw/f+znlKQgghhGud9Q2nH+XkFzZf8dbX3x+AvD05LojKvbWbsHRlpcuGxOVu6hefSgGu\nUUrFNhzzG+BzrfUw4POG34UQQgi3p4IHAZC5d1Oz8uCI+jUVC/NlLaKOcqSHpSsrXY4AtmitK7TW\ndcBXNCww1XCO1xt+fh24vkvPRAghhOglwgePAODM0eabIEYmDgWgrKSsx2Nyd44kLF1Z6TITmKiU\nClJKeQOzOL+mwwCt9bkRSfmA3aW8ZXVMIYQQ7mbU8AnUaCOmwqPNykNiQ/HUHlTWykyhjnLWoFu7\nK11qrfcCK4DPgDQgA/srYGpA2zuxrI4phBDC3YQFDuAoAwisaD5TyOhhxNtmplrXuigy9+XItGaH\nVroE7gRQSingMA0rXWqtXwVebah7hvoeGoCTSqlwrfUJpVQ4cKoLz0MIIYToVY6Ywoiqablrs6c2\nUaIqXRCRe3Okh6VLK10qpUIbvg+i/rbRmw3tPgRub/j5duCDrjwRIYQQojc5aRnAYFs+2lrXrNyi\nPag01GG7YMqzaFu7PSxOWOnyn0qpIKAWWKS1Lm4oXw68q5T6OXAEuLUzT6C2tpbc3Fyqqqo6c7gQ\nfdK6detG7tq1K6eDh9mAzLq6urvGjBkjPZ5CdFGFfxiWijoOHN3DsCEpjeUWkxmrslF4Ip+QiIEu\njNC9OLTSbVdWutRaT2ylvBC40uFIW5Gbm4ufnx/R0dHU340SQlit1rqkpKTTHTnGZrOpgoKChPz8\n/L8Cs7spNCEuGuaQwZAP+/dvaZaw+Pj4QgUc3f2DJCwd4PYr3VZVVREUFCTJihBdZDAYdEhIyFkg\nqd3GQoh2DY5OBKAk/2Cz8oDgIABOHW05vkW0zu0TFkCSFSGcxGAwaPrI/wtCuNqo4eOp1h54FOU2\nKw+LjQSgpLDY3mGiFfIfkxBCCNENAnwCOEYI/SuaDwmLGjmEIJsvVLZY5UO0QXZrFkIIIbpJrjGU\ngbXNExav/t7MqkzhFLIYakdID4uT5OTkMGvWLOLj44mLi+PZZ591aTxpaWnEx8cTGxvL8uXLW223\nYMECQkNDSUpybNjCsmXLSExMJDk5mVGjRrFlyxZnhdxrdPe1dOTaOHr9mlJK8cgjjzT+vmTJkgGL\nFy+WEX1CuNApSyiDbPktpjBXeVjw8h/ioqjckyQsTmCz2bjpppu49957yc7OZvfu3aSnp7N69WqX\nxGO1Wlm0aBGffvopWVlZvPXWW2RlZdlte8cdd5CWlubQeTdv3szHH3/Mjh07+P7771m/fj1RUVHt\nH+hGuvtaOnJtOnL9mrJYLLz//vucPt2hyUFCiG5U7huKj6om58T+ZuWm2cPwu3qoi6JyT5KwOMHa\ntWuJjo5m9uz6maAWi4VVq1axcuVKl8SzdetWYmNjiYmJwWw2M3fuXD74wP66fJMmTSIwMNCh8544\ncYLg4GAsFgsAwcHBDBzYtz7Ad/e1dOTadOT6NWUymVi4cCHPP/+8U2IVQnSdMbj+Q92+A9ualcdf\nGs7Q0aGuCMlt9akxLE98tIes4yVOPWfCQH9+f21im2327t1LSkpKs7Lw8HBKSkqoqanBbDa3ciRM\nnDiR0tLSFuUrV65k6tSpnYo5Ly+vWc9HZGSkU27dTJs2jSeffJK4uDimTp3KnDlzmDx5cpfPa0/+\nM89QvXefU89pGTGcsMcea7NNd19LR65NV67fokWLSE5O5pprrnGovRCie4VFxcNeOJub7epQ3F6f\nSlhcxWg0UlbWfKtwrTUVFRWYTCYWLFjAmjVr7B67adOmDj3W1KlTyc9vOXd/2bJlXHfddR06V0f5\n+vqyfft2Nm3axIYNG5gzZw7Lly/njjvu6NbH7Uk9eS27g7+/P/Pnz+dvf/ubR3BwsKvDEeKilxQ3\nHutahSrKa7+xaFOfSlja6wnpLlOmTOG2225jxYoVjWvCrFu3jtGjR1NVVUVAQAAbNmwgLS2NJ554\nAk9Pz8ZjO9rDsn79+nbjiYiI4NixY42/5+bmEhER0Zmn1oLRaGTKlClMmTKFkSNH8vrrr3dLwtJe\nT0h36e5r6ci16er1e+ihh0hKSjLNmzdPbvkK4WIDgweSSxAB5SddHYrb61MJi6ukpKRwySWXsGTJ\nEp566ilOnjzJ4sWLWb16NTt27GDnzp3Ex8ezYsWKFsd2x6fysWPHcuDAAQ4fPkxERARvv/02b775\nZvsHNnHllVfyxhtvNHujzM7OxmAwMGzYMAAyMjIYPHiwU2N3te6+lo5cm/ba2Ls2TQUGBnLVVVfV\nvfnmm8Hz5s0r7OA/gRDCyY4aBhBeIwlLV8knMCdYvnw56enpPP3003zxxRfcd999HDlyhPvvv59t\n27Yxfvx4fHx8eiwek8nEqlWrmD59OiNGjODWW28lMfF879OsWbM4fvw4APPmzWPChAlkZ2cTGRnJ\nq6++is1m4+DBgy0G45aVlXH77beTkJBAcnIyWVlZLF26tMeeV0/o7mvZ1rU5d13aatPatbnQnXfe\nWVtcXCwfSIToBU6aQ4iyScLSVUpr7eoYHJaamqrT09Oble3du5cRI0a4KKL23X333bzyyis8/vjj\nzJgxg4kT7e4F2atkZmayZs0annvuOVeH0qv0hmvp6LXJzMysSEpK2tuZx9i1a1dwSkpKdGeOdZS9\nv2Uh+qrXXribO868y+mHsgnuF9ahY5VS27XWqd0UmluRhEWIPkgSFiF6jzV/W8qCH57nqxmvMfnS\nGzp0rCQs58ktISGEEKIbBYbHAHDyaPsLQIrWScIihBBCdKMRcWMAsBYea6elaIskLEIIIUQ3GhY5\nnAIdgF/pcVeH4tYkYRFCCCG6kcFg5KgKJbRadmfuCklYhBBCiG523COUSKtMbe4KSViEEEKIblbk\nFUqYPkNlZVn7jYVdkrAIIYQQ3aym3wAMSpN5cFv7jYVdkrAIIYQQ3cw3pH4bk9yc710cifuShEUI\nIYToZtHR9dtrVJ7KcW0gbkwSFifJyclh1qxZxMfHExcXx7PPPuvSeNLS0oiPjyc2Npbly5e32m7B\nggWEhoaSlJTk0HmVUjzyyCONv69cubLP7SfU3dfSkWvT1nWJjo5m5MiRjBo1itTU9hfAfPTRR8Ni\nY2MT4+LiEoYPH57wxRdf9NzGVkIIAJKHpVKlPfAokYG3nSUJixPYbDZuuukm7r33XrKzs9m9ezfp\n6emsXr3aJfFYrVYWLVrEp59+SlZWFm+99RZZWfZXWLzjjjtIS0tz+NwWi4X333+f06dPOyvcXqW7\nr6Wj16a967JhwwYyMjJob3n79evX+6xdu7bf7t27s/bv35+1YcOG/TExMTVdfiJCiA7x9vQhlxD6\nV55ydShuy6GERSk1QymVrZQ6qJT6jZ36/kqpfymlvldKbVVKJTWpe1gptUcplamUeksp5dlQvlQp\nlaeUymj4muW8p9Wz1q5dS3R0NLNnzwbq39RXrVrFypUrXRLP1q1biY2NJSYmBrPZzNy5c/nggw/s\ntp00aVK7O/82ZTKZWLhwIc8//7yzwu1VuvtaOnptOnpdWpOXl+cRGBhY5+XlpQHCw8ProqOja7t8\nYiFEhx03hhBWK2uxdFa7288rpYzAn4CrgFxgm1LqQ61104+FjwEZWusblFLDG9pfqZSKAH4JJGit\nK5VS7wJzgdcajntea+28d/VPfwP5u512OgDCRsLM1m+pQP0GjCkpKc3KwsPDKSkpoaamBrPZ3Oqx\nEydOpLS0tEX5ypUrmTp1aqdCzsvLIyoqqvH3yMhItmzZ0qlz2bNo0SKSk5P5r//6L6ed80Kb3t3P\n6WPOnf4XHOXLxFvj2mzT3dfSGddGKcXUqVMxGo3cc889LFy4sNW2119/fcmzzz47MDo6Oumyyy4r\nmTdv3pmrr75a5lUK4QIF5mCSqw6itUYp5epw3E67CQswDjiotT4EoJR6G7gOaJqwJADLAbTW+5RS\n0UqpAU0ew0spVQt4A31ubWKj0UhZWfP3AK01FRUVmEwmFixYwJo1a+weu2nTpg491tSpU8nPz29R\nvmzZMq677roOnauz/P39mT9/Pi+88AJeXl498pg9pSevZWd9/fXXREREcOrUKa666iqGDx/OpEmT\n7LYNCAiwZWZmZqWlpfl9/vnnfrfffvvQJUuW5P7yl78s7JFghRCNyryD6VdVzokzxwkPinB1OG7H\nkYQlAmi6Y1MuMP6CNruAG4FNSqlxwGAgUmu9XSm1EjgKVAKfaa0/a3LcA0qp+UA68IjWuujCB1dK\nLQQWAgwaNKjtSNvpCekuU6ZM4bbbbmPFihWNWfO6desYPXo0VVVVBAQEsGHDBtLS0njiiSfw9PRs\nPLajPSzr169vN56IiAiOHTt/yXJzc4mIcO4fx0MPPcTo0aO58847nXrec9rrCeku3X0tnXFtzrUP\nDQ3lhhtuYOvWra0mLFB/G++aa64pveaaa0qTk5Mr//a3vwVJwiKEC/QfCGdg34EthAfd6Opo3I6z\nBt0uB/oppTKAB4CdgFUp1Z/63pghwEDARyn104ZjXgJigFHACeB/7J1Ya71aa52qtU4NCQlxUrjO\nlZKSwiWXXMKSJUsAOHnyJIsXL+aZZ55hx44d7Ny5k+zsbFasWNHsDQ7qP5VnZGS0+Ors7SCAsWPH\ncuDAAQ4fPkxNTQ1vv/1245gMR1155ZXk5eW1Wh8YGMitt97Kq6++2uk4e6PuvpZdvTbl5eWNSVF5\neTmfffZZ40wie9ds165dlt27d1vO/b5z506vyMhIGXQrhAsEhA0B4FRutosjcU+OJCx5QFST3yMb\nyhpprUu01ndqrUcB84EQ4BAwFTistS7QWtcC7wM/ajjmpNbaqrW2AX+h/taTW1q+fDnp6ek8/fTT\nfPHFF9x3330cOXKE+++/n23btjF+/Hh8fHpuJqnJZGLVqlVMnz6dESNGcOutt5KYmNhYP2vWLI4f\nr78zN2/ePCZMmEB2djaRkZG8+uqr2Gw2Dh482O6gz0ceeaTPzRbq7mvZ1rVp77pAfQJ12WWXkZKS\nwrhx47j66quZMWNGq9espKTEOH/+/CFDhw5NjIuLS9i3b5/XihUrOnRb1oFB9wFKqY+UUrsaBth3\nT7ebEG5u2NBLAKgrbP3DoGiD1rrNL+pvGx2ivpfETP3tn8QL2vQDzA0/3w280fDzeGAP9WNXFPA6\n8EBDXXiT4x8G3m4vljFjxugLZWVltSjrTe666y5ttVr1Y489pjdu3OjqcByye/du/fDDD7s6jF6n\nN1/LC6/Z7t27y7XW6Z35ysjIyNHn/zaNwA/U94ae+/tP0M3//h8DVjT8HAKcOff/QWtf9v6Whejr\namtr9dklA/Q/V97s8DFAum7nvfFi+Wp3DIvWuk4p9QtgbcN/Xmu01nuUUvc21L8MjABeV0rphgTl\n5w11W5RS/wB2AHXU3yo6t6DFH5RSowAN5AD3OJJguZu//OUvQP2gWHeRlJTEc8895+owep3efC27\n8Zo5MuheA36qftCPL/UJS113BCOEOzOZTOSpEIKqZGpzZzgy6Bat9SfAJxeUvdzk582A3VGSWuvf\nA7+3U/6zDkUqhHAFRwbdrwI+pH4GoB8wR9ff6m2mQwPoheijThiDiayTxeM6Q1a6FUJ01XQgg/qB\n9aOAVUop/wsbaTcYQC9EdzttCSHSVoC2tcjpRTskYRFCtKXdQffAncD7DbfcDwKHgeE9FJ8QbqXC\nNwRvVU1O/gFXh+J2JGERQrRlGzBMKTVEKWWmfqXqDy9ocxS4EqBhwch46gfqCyEuoALr11Haf6Dt\nfcBESw6NYRFCXJwcHHT/FPCaUmo39bMBH9Va96357kI4SXD4UNgHZ04cdHUobkcSFiFEmxwYdH8c\nmNbTcQnhjhKGpcIG0Gf63C413U5uCQkhhBA9ZHDYEAq1H75lJ10dituRhEUIIYToIQaDgVwVQnCN\nrMXSUZKwCCGEED0o3yOE8DoZ5tVRkrA4SU5ODrNmzSI+Pp64uDieffZZp54/LS2N+Ph4YmNjWb7c\n/q7UjrS50LJly0hMTCQ5OZlRo0axZcsWZ4btlnrDtVywYAGhoaGNGxs2FR0dzciRIxk1ahSpqant\nPp5Saszdd98dee73JUuWDFi8ePHALjwFIUQXnLEEM1Cfpq6u1tWhuBVJWJzAZrNx0003ce+995Kd\nnc3u3btJT09n9erV7R/sAKvVyqJFi/j000/JysrirbfeIisrq8NtLrR582Y+/vhjduwg6I1NAAAK\n40lEQVTYwffff8/69euJiopq85i+rjdcS4A77riDtLS0Vs+zYcMGMjIySE9vf2qk2WzWn3zySf8T\nJ07IIHsheoEqv1Asqo4DR3a5OhS3IgmLE6xdu5bo6Ghmz54NgMViYdWqVaxcudIp59+6dSuxsbHE\nxMRgNpuZO3cuH3zwQYfbXOjEiRMEBwdjsVgACA4OZuDAi/uDd2+4lgCTJk1qd7dsRxmNRj1//vyC\nZ555ZoBTTiiE6BJzUH2H5w+HJGHpiD71iWvF1hXsO7PPqeccHjicR8c92mabvXv3kpKS0qwsPDyc\nkpISampqMJvNrR47ceJESktLW5SvXLmSqVOnApCXl9es5yMyMrLFrRtH2lxo2rRpPPnkk8TFxTF1\n6lTmzJnD5MmT2zymp2x4bTWnjjh37bHQwTFcfsfCNtv0hmvZHqUUU6dOxWg0cs8997BwYdvPCeDX\nv/71qZEjRyYuXbo0v0MPJoRwugGR8ZAJJfmyvmJH9KmExVWMRiNlZWXNyrTWVFRUYDKZWLBgAWvW\nrLF77KZNm3oiRLt8fX3Zvn07mzZtYsOGDcyZM4fly5dzxx13uCwmV3OHa/n1118TERHBqVOnuOqq\nqxg+fDiTJk1q85jAwEDbLbfcUrh8+fJQLy8v2cRECBcaGT8e0sBUetbVobiVPpWwtNcT0l2mTJnC\n/2/v/mOrOus4jr8/oZgqicicNEu7ACaLtgMqhB+ZjqQJRurmfi8IolsMsoxFTdwfZji3bMkyIZol\nToxjCpZoGC7LXKbTCRlb3B9GfhYt1AoZwXUM6MjQrJMg9OsfvZTu9se9t/f23nNPP6/kpj3nee7t\n9/s8h9Mvp/eeZ9WqVWzYsAFJAOzcuZP58+dz7tw5pk6dyquvvsrLL7/Mo48+Sm1t7cBz8/lfeX19\nPW++eXnB3O7uburr6z/QP58+w5k0aRItLS20tLQwZ84ctm7dmoiCJdeVkPGShLnM5VL/6dOnc9tt\nt7F79+6cBQvAunXrTs2fP79pxYoV/niCWQXVTZvOqZjGlF7fi6UQfg9LCTQ3NzNv3jwefvhhAE6d\nOsX999/P448/zv79+zlw4ABdXV1s2LDhA7/goP9/5e3t7UMel37BASxcuJAjR45w7Ngxzp8/z/bt\n2wfeY5Fvn6VLl/LWWx9cs66rq4sjRy4vwNXe3s6MGTNKNi7VKAlzOZre3t6Boqi3t5cdO3YMfJJo\nuDkerK6u7uJNN9307rZt267M+wea2bg4XTOdhv+5YCmEC5YSWL9+PXv37uWxxx5j165drF27luPH\nj3PfffexZ88eFi9ezJQpU8b8+jU1NWzcuJFly5bR2NjI8uXLufbaawG44YYbOHHixKh9+vr6OHr0\n6JA3cb733nvcfffdNDU1MXfuXA4fPswjjzwy5jjTIAlzCbBy5Uquu+46urq6aGhoYPPmzUB/AXX9\n9dfT3NzMokWLuPHGG2ltbR1xjrM9+OCDJ8+ePZuqK6tm1ejqmZ+mqfZspcOoKoqISseQtwULFkT2\nxzg7OztpbGysUES5rVmzhk2bNvHQQw/R2trKkiVLyh5DR0cHW7Zs4Yknnij7z06TJMzlSLLnuKOj\n4/3Zs2d3juW1Dh48eGVzc/PMUsaXbbh/y2YTyrHXofc0zL5j1G6S9kVE7hsuTQAuWMxSyAWLWTq4\nYLnMfxIyMzOzxHPBYmZmZonngsXMzMwSLxUFSzW9D8csyfr6+gT4xnJmljhVX7DU1tZy5swZFy1m\nRerr61NPT89UoKPSsZiZZav6+zE0NDTQ3d1NT09PpUMxS4yTJ0/WXLx4sdAbxPUBHRcuXPjGeMRk\nZlaMqi9YJk+ezKxZsyodhlmiNDU1/d0fhTSzNMnrT0KSWiV1SToq6YFh2qdJ+q2kv0naLWn2oLbv\nSDokqUPSM5JqM/uvkLRT0pHM12mlS8vMzMzSJGfBImkS8FPgi0ATsFJSU1a37wHtETEXuAv4cea5\n9cC3gQURMRuYBKzIPOcB4JWIuAZ4JbNtZmZmNkQ+V1gWAUcj4o2IOA9sB27J6tME7AKIiH8AMyXV\nZdpqgA9LqgE+ApzI7L8F2Jr5fitw65izMDMzs1TL5z0s9cCbg7a7gcVZfQ4CtwOvS1oEzAAaImKf\npB8B/wL+C+yIiB2Z59RFxNuZ708CdQxD0j3APZnNc5IO5RHzSKYC/y5x/9H6FNqWz74rgXdyxFRK\nhY5Zsa9R7JiP1j6RxvyaUgQyXvbt2/eOpON5di/mmMg1v9ntw7Vd+lrMcTCeOWRv5/q+mvMYvG88\n8yjk3J3v9ljnYkaO9okjIkZ9AHcCvxi0/TVgY1afjwK/BNqBXwF7gM8A0+i/8vIJYDLwAvDVzHPO\nZr3Gu3nE8nSuPqV8fj79R+tTaFs++4C9xYzBeI9Zsa9R7JiP1u4xr85HMcdErvkdZq6HtA36Oubj\nYDxzGC2nEfKp2jyy9o1bHoWcu/PdLvVcTMRHPldY3gKuHrTdkNk3ICL+A3wdQJKAY8AbwDLgWET0\nZNqeBz4L/Bo4JemqiHhb0lXA6Txi+V0efUr5/Hz6j9an0LZ895VTKX5+Ia9R7JiP1u4xr07FHBO5\n5je7fbi2cs1HMcftSDmNlutYVDqPUh3XYz2HDNeW73ap52LCyblac+a9J/8EltJfqOwBvhIRhwb1\n+RjwfkScl7QGWBIRd0laDGwBFtL/J6E2+ivKn0j6IXAmItZnPnl0RUR8t/QppoukveGPq5aVx9wg\nPceB80iONORQTjmvsETEBUnfBP5E/6d8tkTEIUn3ZtqfAhqBrZICOASszrT9VdJzwH7gAnAAeDrz\n0uuBZyWtBo4Dy0uaWXo9nbuLlZjH3CA9x4HzSI405FA2Oa+wmJmZmVVa1a8lZGZmZunngsXMzMwS\nzwWLmZmZJZ4LFjMzM0s8FyxVTtInJW3OfBrLykDSrZJ+Luk3kr5Q6Xis8iQ1SnpK0nOS1lY6nrFK\nw7FdzedESVMkbc3MwapKx5M0LlgSSNIWSacldWTtH7JqdvSv8bS6MpGmR4Fj/kJErAHuBb5ciXit\ndAqZ+5FERGdE3Ev/7Rk+N57xjqREeVT02C5RDok6JxaY0+3Ac5k5uLnswSacC5ZkagNaB+/Ic9Vs\nG7s2Ch/z72farbq1kefcS5oj6fdZj+mZ59wMvAT8obzhD2ijBHlkVOrYbqN0OSRFG/mfWxq4vHbf\nxTLGWBXyuTW/lVlE/FnSzKzdA6tmA0i6tGr24fJGl06FjLmkTvpvfPjHiNhf1kCt5AqZ+4j4AfCl\nEV7nReBFSS8B28Yv4uGVIg9JooLHdqnmIkkKPJ9301+0tOMLCkN4QKrHcKtm10v6uKSngHmS1lUm\ntNQadsyBbwGfB+68dMdnS52R5n5YklokPSlpE5W7wjKcgvIgmcd2oXNRDefEkXJ6HrhD0s/wekND\n+ApLlYuIM/T/vdnKJCKeBJ6sdByWHBHxGvBahcMoWhqO7Wo+J0ZEL5mFhG0oX2GpHjlXzbaS85hP\nXGmZ+zTkkYYcsqUxp3HngqV67AGukTRL0oeAFcCLFY4p7TzmE1da5j4NeaQhh2xpzGncuWBJIEnP\nAH8BPiWpW9LqiLgAXFo1uxN4NiIOVTLONPGYT1xpmfs05JGGHLKlMadK8WrNZmZmlni+wmJmZmaJ\n54LFzMzMEs8Fi5mZmSWeCxYzMzNLPBcsZmZmlnguWMzMzCzxXLCYmZlZ4rlgMTMzs8T7PwcD+a5C\nIUkrAAAAAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "#kminclosed = sqrt(-8*Omega_k)*(70/3e5) Mpc^(-1)\n", + "\n", + "k_out = [1e-3] #[1e-4, 1e-3, 1e-2]\n", + "#models = ['PPF1','PPF2','FLD1']\n", + "models = ['PPF1','FLD1']\n", + "w0 = {'PPF1':-0.7,'PPF2':-1.15,'FLD1':-0.7,'FLD1S':-0.7}\n", + "wa = {'PPF1':0.,'PPF2':0.5,'FLD1':0.,'FLD1S':0.}\n", + "omega_cdm = {'PPF1':0.104976,'PPF2':0.120376,'FLD1':0.104976,'FLD1S':0.104976}\n", + "omega_b = 0.022\n", + "##Omega_cdm = {'PPF1':0.26,'PPF2':0.21,'FLD1':0.26,'FLD1S':0.26}\n", + "##Omega_b = 0.05\n", + "h = {'PPF1':0.64,'PPF2':0.74,'FLD1':0.64}\n", + "\n", + "fig, axes = plt.subplots(1,2,figsize=(8,5))\n", + "for Omega_K in [-0.1, 0.0, 0.15]:\n", + " for gauge in ['Synchronous','Newtonian']:\n", + " cosmo = {}\n", + " for M in models:\n", + " use_ppf = 'yes'\n", + " if 'FLD' in M:\n", + " use_ppf = 'no'\n", + " \n", + " cosmo[M] = Class()\n", + " \n", + " cosmo[M].set({'output':'tCl Mpk dTk vTk','k_output_values':str(k_out).strip('[]'),\n", + " 'h':h[M],\n", + " 'omega_b':omega_b,'omega_cdm':omega_cdm[M],'Omega_k':Omega_K,\n", + " ##'Omega_b':Omega_b,'omega_cdm':Omega_cdm[M],\n", + " 'cs2_fld':1.,\n", + " 'w0_fld':w0[M],'wa_fld':wa[M],'Omega_Lambda':0.,'gauge':gauge,\n", + " 'use_ppf':use_ppf,'hyper_sampling_curved_low_nu':10.0})\n", + " cosmo[M].compute()\n", + " \n", + " label = r'$\\Omega_k='+str(Omega_K)+'$, '+gauge[0]\n", + " clfld = cosmo['FLD1'].raw_cl()\n", + " clppf = cosmo['PPF1'].raw_cl()\n", + " \n", + " axes[0].semilogx(clfld['ell'][2:],clppf['tt'][2:]/clfld['tt'][2:],label=label)\n", + " \n", + " ptfld = cosmo['FLD1'].get_perturbations()['scalar']\n", + " ptppf = cosmo['PPF1'].get_perturbations()['scalar']\n", + " for i,k in enumerate(k_out):\n", + " ptkfld = ptfld[i]\n", + " a = ptkfld['a']\n", + " phi_plus_phi_fld = ptkfld['phi']+ptkfld['psi']\n", + " ptkppf = ptppf[i]\n", + " phi_plus_phi_ppf = ptkppf['phi']+ptkppf['psi']\n", + " axes[1].semilogx(ptkppf['a'],phi_plus_phi_ppf,label=label+'_ppf')\n", + " axes[1].semilogx(ptkfld['a'],phi_plus_phi_fld,label=label+'_fld')\n", + " print len(ptkppf['a']),len(ptkfld['a'])\n", + " \n", + " axes[0].legend(loc='lower left',ncol=2)\n", + " axes[0].set_xlim([2,300])\n", + " axes[0].set_ylim([0.98,1.02])\n", + "\n", + " axes[1].legend(loc='upper left',ncol=2)\n", + " axes[1].set_xlim([1e-2,1])\n", + " axes[1].autoscale()\n", + "# axes[1].set_ylim([0.0,0.2])\n", + " \n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\n8s7BZwrS5vvOPeg81RV3bQu9OuvWraNPnz58++23JCYmVjnPwIED+fHHH38xferUqQwePBiAFi1a\nsG3bT6dY5OTk0KLFL06xqFZWVlb50YnGjRuzYMECli5dyo033sgJJ5zA6tWradeuHcnJyQCsXLmS\nHj16ALBq1Sr69esX8Lak/qnoRQSo+roYpQVf9uf7gfurWC4b6BGOTIGUcjTLyMhgwIABXHbZZQwb\nNoyPPvqII4888mfzBDKi79OnD1988QVffvklLVq0YM6cOcyePTvgHJmZmeVF//vf/56mTZuSmJhI\nVlYWY8aMISMjg61bt5Kfn09xcTGTJ0/mgQceAOCoo44iIyOjfF25ublEy/kX8SIqPqMXEYk2o0eP\npn///mzYsIG0tLQqv1KWkZFB165dad++Pffffz8jRoygsLAw6G0lJSUxbdo0zjzzTDp16sSIESPo\n0qULAOeccw47duyoMVNWVlb5Z/FDhgwp/whh7dq1dOnShYyMDC688EJOPPFE+vTpw1VXXcVJJ50E\nHDiT/+uvv6ZLly707NmTJUuWBL+zJKws2LM7vdS7d2+3fPlyr2OIRDwzWxHpF66p6ud53bp1NZ7I\nJd445ZRTmDFjBh06dKi3berfwk/q+vOsEb2IiNRo06ZNtGvXzusYUkv6jF5ERGqUk5PjdQSpA43o\nRUREYpiKXkREJIap6EVERGJYVBS9LoErIiJSO1FR9M65t5xzE5s0aeJ1FBERkagSFUUvIiIitaOi\nFxERiWEqehERkRimohcREYlhKnoREalX2dnZTJgwgeHDh3sdJS6o6EVEKklMTKRnz57lj82bN9Oo\nUaMa5+3SpQs9evTgoYceoqSkpPz18ePH07x58/K7w1Vl4cKFXH755XXOvWDBAjp06EDbtm257777\nqp2vukxPPfUUZsaiRYvKp02fPh0z44MPPqhzvjLp6elV3s1PwkNFLyJSSYMGDVi1alX5o3Xr1ged\nd82aNXzwwQfMnz+fKVOmlL8+duxYFixYUOP2MjIyOP744+uUubi4mGuuuYb58+ezdu1aXnzxRdau\nXVvlvNVlysrKokePHqxfvx6AvLw8Zs6cSWpqKt27dw86U1ZWFkOGDPnZY+fOnUGvR+pGRS8iEiLN\nmzdnxowZTJs2jbJbgA8aNIgjjjiixuXKin7//v2MHTuW2267jWBvIb506VLatm1Leno6fr+fUaNG\n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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\nJcOHDy8t+scee4yLL76YuLg4jjjiCODAPe2HDRtGr169aNmyJe+//z4A27dvZ/DgwRx33HF06NCB\nxYsX07VrV957773fPJo1a1atv5fUnopeRMLXZ/fCHY1//6jtvAexb9++0sP2gwYNqtayqampFBYW\nVmvkunLlSpo1a0b//v0588wzueeeezCz0tf79u37m1MJJY+PP/64dJ5t27bRokWL0ucpKSls27at\nWtnXrFnD0KFDWbt2Lb/88guvvfYaJ5100m8O8aenp5OamsrixYuZPn06kydPpqCggHPPPZcxY8bw\nzTffsHz58irvJb9z504mTJjAN998w7333lutjFJ9uk2tiEg5JYfj60J+fj6ZmZmMGDGCp59+mj59\n+vxunoULF4Y8x9atW2nSpAmpqans2LGDBx98kGuuuYbvvvuOrl27ApCbm0t2djaTJk0CoFOnTvz8\n88/MmjWLjh07MmDAAAAaNGhQ5baaNGnCU089Fdq/kJRS0YuIBFFmZibx8fEBH6Jes2YNPXv25Kef\nfiI+Pr7Cefr27cvu3bt/N/2hhx7izDPPBKB58+Zs3bq19LWsrCyaN28ecO6MjIzSQm/UqBHz5s1j\n8eLFXH/99Rx//PEArFq1irZt25KYmAjA8uXL6d69OytWrODEE08MeFtStyKi6M3sAuCCNm3aeB1F\nRKRS2dnZTJgwgYkTJ/7m0HtV0tPTOemkk7j00ksZNGgQn376aen58BKBjOh79uzJ+vXr+f7772ne\nvDkzZ87k1VdfDTj7ypUrS4v+xhtvpEmTJsTHx5ORkcGoUaNKs27ZsoXc3FwKCwuZNGkSDzzwAN98\n8w3p6eml68rOziY5OTngbUtoRcQ5et3URkS8lpOTQ0pKSunjkUceAf5zPr9z586ceeaZnH322aWH\ntuHAh9f69OnDunXrSElJ+d3XytLT0+nSpQvt2rXj/vvvZ+jQoeTn51c7X0JCAlOmTKF///507NiR\noUOH0rlzZwDOO+88tm/fXmWmjIyM0nPxAwYMKD2FsHr16tL1pKenc9FFF9G7d2969uzJlVdeyckn\nn8zo0aP597//TefOnenRoweLFi2qdn4JHavuJzu9lJaW5pYuXep1DJGwZ2bLnHNpXueoSkU/z2vW\nrKnyQ1zirdNOO41p06bRvn37kG9L/xb+o7Y/zxExohcREe9t3LiRtm3beh1DqikiztGLiIj3srKy\nvI4gNaARvYiISBRT0YuIiEQxFb2IiEgUU9GLSFiJpG8CSWjo30BwqehFJGwkJiayc+dO/aKPYc45\ndu7cWXr1Pak9fepeRMJGSkoKWVlZZGdnex1FPJSYmEhKSorXMaKGil5EwobP56N169ZexxCJKjp0\nLyIAmNk5ZrbOzDaY2c0VvD7QzFaa2QozW2pmpwS6rIh4R0UvIphZPDAVOBfoBIwws07lZvsE6O6c\n6wGMBZ6txrIi4hEVvYgA9AI2OOcynXN5wExgYNkZnHN73H8+JZcEuECXFRHvRMQ5+pLb1AI5Zram\nlqtrDOwK4rwHm6ey1yuaHui0psCPB8kVTNXZZ8FYvrb7vTr7vLLp5adF2j6v7gXJmwNbyzzPAnqX\nn8nMBgH3As2A86uzbPHy44HxxU/3m9mqauYMhtru29qsJ9Blavp7pbLXAv23X9f/zqvKUlfr8eo9\nqWx6RdNqdxch51zEPIBpdbmOQOY92DyVvV7R9GpMWxpJ+726y9d2v1dnnwe632Ngnw8Bni3z/DJg\nShXznwp8XJNlvdqnwdq3tVlPoMvU9PdKZa8F+m/fq/fEy/fFq/ekOu9Vbd+XSDt0/24dryOQeQ82\nT2WvVzQ90Gl1rbYZqrt8bfd7dfZ5ZdO93u91vc+3AS3KPE8pnlYh59wXQKqZNa3usmEgWO9tTdYT\n6DI1/b1S2WvV/Znwglfvi1fvSWXTg/6eRNT96OUAM1vqwvxe49Em2ve5mSUA3wFncKCklwAjnXPf\nlpmnDbDROefM7HgO/EJKAeIPtmwl24zqfRqJ9J6Ep9q+LxFxjl5+Z5rXAWJQVO9z51yBmU0EPuRA\ncT/vnPvWzCYUv/4UMBi43MzygX3AMHdgpFDhsgFsNqr3aYTSexKeavW+aEQvIiISxSLtHL2IiIhU\ng4peREQkiqnoRUREopiKXkREJIqp6COcmaWa2XNm9qbXWWKJmf3BzJ4xs9fM7Gyv80Qb7d/wo981\n4cHMkszspeKfj0sCWUZFH4bM7Hkz21H+8qAV3SHMHbi++DhvkkaXau73Wc65K4AJwDAv8oar6uzH\nymj/BleQ3hP9rgmRar4/FwFvFv98XBjI+lX04elF4JyyE3SHsDrxItXf738tfl3+40UC3I9m1tXM\n3iv3aFZmUe3f4HiR4L0nEnwvEvjvnhT+c2+JwkBWrgvmhCHn3Bdm1qrc5NI7hAGYWckdwlbXbbro\nVZ39XnxzpfuAuc655XUaNMxVZz865+4FBpRfh5kZ2r9BE4z3REKnmr/zszhQ9isIcLCuEX3kqOgO\nYc3NrImZPQUcZ2a3eBMtqlW434FrgDOBISVXj5MqVbYfK6P9G3rVek/0u6bOVfb+vA0MNrMnCfC6\n+BrRRzjn3E4OnMeUOuScewx4zOsc0Ur7N/zod014cM7tBcZUZxmN6CNHpN0hLFpovweH9mP40XsS\n3oL2/qjoI8cSoK2ZtTYzPzAcmONxplig/R4c2o/hR+9JeAva+6OiD0NmNgNYBLQ3sywzG+ecKwBK\n7hC2Bng9wDuESYC034ND+zH86D0Jb6F+f3T3OhERkSimEb2IiEgUU9GLiIhEMRW9iIhIFFPRi4iI\nRDEVvYiISBRT0YuIiEQxFb2IiEgUU9GLiIhEsf8P0HF1v9LS7skAAAAASUVORK5CYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAfoAAAE4CAYAAACzNTH2AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3XlcVXX+x/HXB5BwN3GpxATS3JUSLS1ts7LJMnNJKnMr\nx1In+zU1TU01LZMtTtOipWR7uTS22KZWllNNTooL4q6ZJTqTSIm5oALf3x8iEQFe4MK59/J+Ph73\nIffcs7w5l3vfnnPPPcecc4iIiEhoCvM6gIiIiFQeFb2IiEgIU9GLiIiEMBW9iIhICFPRi4iIhDAV\nvYiISAhT0YuIiIQwFb2IiEgI87Tozaydmb1hZs+a2UAvs4iIiISiche9mb1gZjvNbHWR4X3MbIOZ\nbTazO44xm0uAp51zNwLXlTeLiIiIFM/KewpcM+sF7AVecc51yB8WDmwELgTSgaVAEhAOTCwyi5H5\n/94L7Ad6OOfOKlcYERERKVZEeSd0zn1uZrFFBncDNjvntgCY2Sygn3NuItC3hFmNzf8PwlvFPWhm\no4HRALVr1+7Spk2b8kYWqTaWLVu2yznX2OscpWnUqJGLjY31OoZIwKvo67ncRV+CZsC2QvfTgTNK\nGjn/Pwp3ArWBx4obxzmXDCQDJCYmupSUFD9FFQldZvad1xmOJTY2Fr2eRY6toq9nfxd9mTjntpK/\ntS4iIiL+5++j7rcDzQvdj8kfJiIiIh7wd9EvBVqZWZyZRQJDgHf9vAwRERHxUbl33ZvZTOBcoJGZ\npQP3OueeN7NxwAKOHGn/gnNujV+SluDw4cOkp6eTnZ1dmYsJKFFRUcTExFCjRg2vo4iISICryFH3\nSSUM/xD4sNyJyig9PZ26desSGxuLmVXVYj3jnCMzM5P09HTi4uK8jiMiIgEu6E+Bm52dTXR0dLUo\neQAzIzo6ulrtwRARkfIL+qIHqk3JH1Xdfl8RESm/kCh6ERERKV5QFL2ZXWZmyVlZWV5HKVZ4eDgJ\nCQl06NCBQYMGsX//fp+GH71t3bqVzMxMzjvvPOrUqcO4ceO8/HVERCSEBEXRO+fec86Nrl+/vtdR\nilWzZk1WrlzJ6tWriYyMZOrUqT4NP3qLjY0lKiqKBx54gEmTJnn5q4iISIgJiqIPJj179mTz5s0+\nDz+qdu3anH322URFRVVmPBERqWY8PQWu302YACtX+neeCQnwxBM+jZqTk8O8efPo06dPqcMPHDhA\nQkICAHFxcbz99tv+zSwiIpIvtIreI4WLu2fPnowaNarU4Ud33YuIiFS20Cp6H7e8/a2k4lahi4iI\n1/QZvYiISAgLrS36IBcbG8uePXs4dOgQ77zzDh999BHt2rXzOpaIiAQxFb0f7N271y/Dt27d6q9I\nIiIigHbdi4iIhDQVvUgAy8vJYd/OnV7HEJEgpqIXCUAbFyzgqpNPplaNGtRp2pRWkZFMHzYMl5fn\ndTQRCTJBUfSBfq57EX+ac+utdO7ThwXbtjGqQwf+duGFND7uOG545RVGtm5NXk5OpSzXzPqY2QYz\n22xmd5QwzrlmttLM1pjZv8oyrYh4IyiKPtDPdS/iLzPHj+eqxx+nS926rFuxgilpadz50Ud8+dNP\n3N2zJy9t3sw9557r9+WaWTgwBbgEaAckmVm7IuM0AJ4BLnfOtQcG+TqtiHgnKIpepDr4+vnnGTF5\nMj3r1+ejLVs4Mf+sigBhERHct2gRI1q1YuK//83i5GR/L74bsNk5t8U5dwiYBfQrMs7VwFvOue8B\nnHM7yzCtiHhERe8HxV12dtGiRfTt2/c345577rm0bt2aTp060aZNG8aNG8fu3bsLHh85ciRNmjSh\nQ4cOVfkriMf2pKcz6Pe/p1lEBG8uXUqtRo1+M46FhfHEp58SEx7O2AkT/L0LvxmwrdD99PxhhZ0K\nHG9mi8xsmZldV4ZpATCz0WaWYmYpGRkZfoouIqVR0ftBcZedLc3rr7/OqlWrWLVqFccddxz9+v2y\n8TN8+HDmz59fyYkl0Nzauzfbc3OZmZxMdKtWJY5XLyaGB6+/nhUHDvDm7bdXYULgyHk3ugCXAhcD\nd5vZqWWZgXMu2TmX6JxLbNy4cWVkFJEiVPQeioyM5NFHH+X7778nNTUVgF69etGwYUOPk0lV+uzx\nx5m+YQO3nXEG3UaMOOb4Vz/1FG0iI3lk2jR/HoW/HWhe6H5M/rDC0oEFzrl9zrldwOdAZx+nFRGP\nhNSZ8SZMmOD3i8gkJCTwxDEullORy86Gh4fTuXNn1q9fT+fOnSuUVYJP7qFD3HLXXbQID+evPu7J\nCY+MZHz//oydPZslL77IGflXRaygpUArM4vjSEkP4chn8oXNBSabWQQQCZwB/ANY78O0IuIRbdH7\nQeFd9+W5trxzrhJSSTB4ZcwYUrOzefimm4hq0MDn6YY+/jh1gWceesgvOZxzOcA4YAGwDnjDObfG\nzMaY2Zj8cdYB84FVwBJgunNudUnT+iWYiFRYSG3RH2vLOxDl5uaSlpZG27ZtvY4iVWz/rl385eWX\nOaN2ba4q499u3ZNOYkibNsxYv55nd+0q9uC9snLOfQh8WGTY1CL3HwMe82VaEQkM2qL30OHDh/nz\nn/9M8+bN6dSpk9dxpIpN//3v2ZGXx6MTJ2JhZX8pDrn+evYBH06c6P9wIhIyVPSVaOHChcTExBTc\nFi9eDMA111xDp06d6NChA/v27WPu3LkF0yQlJdG9e3c2bNhATEwMzz//vFfxpRId2ruXx+bOpWe9\nevQaP75c8zhn/HiahoUxa/ZsP6cTkVASUrvuvVLcZWfPPfdcDhw48JvhixYtKnVeM2fO9FcsCWCv\njB1Lem4u0yvwFbnwyEj6t2nDq2vXcnDPHo6rV8+PCUUkVGiLXqSK5WRn8/CMGXSpVYuL/vznCs3r\nkiuuYB/w5bRp/gknIiEnKIpeF7WRUPLOXXfxTU4Od44dW67P5gs7f/x4IoH5b7zhn3AiEnKCouiP\ndVGb6vb1tOr2+4aap59/ntiICPo9+GCF51XnhBPoefzxzEtL80MyEQlFQVH0pYmKiiIzM7PalJ9z\njszMTKKioryOIuWwas4cPs/K4qaLLiI8MtIv87y4e3fWHDzIf/18sigRCQ1BfzBeTEwM6enpVKcL\nZERFRRETE+N1DCmHyXffTU1g1FNP+W2e5wwcCB9+yJevvMKgQle8ExGBECj6GjVqEBcX53UMkWP6\n8ZtveG39eq5p3ZqGp5zit/medtVV1Bo5ki8WLjxygXgRkUKCfte9SLB4ccIEDgDj7r/fr/OtUasW\nZx5/PF9s2uTX+YpIaFDRi1QBl5fHtAULOLtePToPHuz3+ffs1IlVBw6Q9f33fp+3iAQ3Fb1IFfhi\nyhQ2HT7MDVddVSnz73nppeQBi195pVLmLyLBS0UvUgVeePJJ6gID/PCVuuJ0u+YaDFjy6aeVMn8R\nCV4qepFKtic9nX9+8w1JbdpQu0mTSllG3ZNOonVkJMvWrauU+YtI8FLRi1Sy2XfeyX5g5B//WKnL\nSWzWjJSdOyt1GSISfFT0IpXs+bfeov1xx9FtxIhKXU5iQgI78vJ04hwR+RUVvUglWjN3Ll/v28eo\nPn0qfF77Y+nSuzcAy956q1KXIyLBRUUvUolefOABagDXTpxY6ctKuPJKwoCUzz+v9GWJSPBQ0YtU\nktxDh5ixYgW/O+EEGrdtW+nLq3PCCbSOjGTFhg2VviwRCR5BUfS6TK0Eo88nT+a/eXlck5RUZcvs\n2LQpq3ftqrLliUjgC4qiP9ZlakUC0YzkZOoAff/ylypbZodWrdiSk1NlyxORwBcURS8SbA7u2cOc\njRvpHx9PzYYNq2y5Hbt1q7JliUhwUNGLVIIFjzzCbudIGjasSpfbIf/IexGRo1T0IpVgxquv0siM\n3pV8kpyi4nr2pGaVLlFEAp2KXsTP9v7vf7y7bRuD27enRq1aVbrs8MhI2lfxMkUksKnoRfxs7v33\ncwBIuvFGT5bf4aSTPFmuiAQmFb2In82YM4eTw8PpMXq0J8tv37q1J8sVkcCkohfxo10bNvBRRgZD\nunQhLCLCkwyndu7syXJFJDCp6EX8aM5995EDXH3rrZ5laH322Z4tW0QCj4pexI9mfPAB7Y47jk4D\nB3qWIf6cczxbtogEHhW9iJ9s+/prvtizh6Szz670K9WVpqqP9BeRwKaiF/GTWfffD0DSnXd6nERE\n5BcqehE/mfHZZ3SrXZtTzj/f6yjlYmZ9zGyDmW02szuKefxcM8sys5X5t3sKPbbVzNLyh6dUbXIR\nKY03hwWLhJh177/PygMHeKJ/f6+jlIuZhQNTgAuBdGCpmb3rnFtbZNQvnHN9S5jNec45XTpPJMBo\ni17ED2Y++ihhwOB77jnmuAGqG7DZObfFOXcImAX08ziTiPiBil6kglxeHjMWL+a844/nxIQEr+OU\nVzNgW6H76fnDiuphZqvMbJ6ZtS803AGfmNkyMyvxTEFmNtrMUswsJSMjwz/JRaRUQVH0ZnaZmSVn\nZWV5HUXkN1JefZVvcnK4ul/IbwAvB052znUCngbeKfTY2c65BOASYKyZ9SpuBs65ZOdconMusXHj\nxpWfWESCo+idc+8550bXr1/f6ygivzHjySeJBK7861+9jlIR24Hmhe7H5A8r4Jzb45zbm//zh0AN\nM2uUf397/r87gbc58lGAiASAoCh6kUCVe+gQs1JT+d2JJ9KgRQuv41TEUqCVmcWZWSQwBHi38Ahm\ndoKZWf7P3Tjy/pFpZrXNrG7+8NrARcDqKk0vIiXSUfciFfCvp5/mf3l5JF11lddRKsQ5l2Nm44AF\nQDjwgnNujZmNyX98KjAQuNHMcoADwBDnnDOzpsDb+f8HiABmOOfme/KLiMhvqOhFKmBGcjJ1gL53\n3eV1lArL3x3/YZFhUwv9PBmYXMx0WwBdSUckQGnXvUg5HdyzhzkbN9I/Pp5ajRp5HUdEpFgqepFy\nmv/ww2QBScOGeR1FRKREKnqRcprx2ms0MqP3H//odRQRkRKp6EXK4ecdO3hv2zYGtWunq8WJSEBT\n0YuUw9wHHuAAcPVNN3kdRUSkVCp6kXKY8eabnBweTo/RJZ7tVUQkIKjoRcooY906PsrIYEiXLoRF\n6BuqIhLYVPQiZTTn/vvJBZL+7/+8jiIickwqepEyev2DD2h33HF0HjTI6ygiIsekohcpg61ffsm/\nf/6Zq3v2xML08hGRwKd3KpEymPXggwBcfffdHicREfGNil6kDF5ftIjudeoQ16vYy62LiAQcFb2I\nj9LefJPVBw9yzSWXeB1FRMRnKnoRH82YNIlwYNC993odRUTEZyp6ER/k5eQwY+lSLmrcmCbt23sd\nR0TEZyp6ER98lZzM97m5XD1ggNdRRETKREUv4oPXp0yhJnCFdtuLSJAJiqI3s8vMLDkrK8vrKFIN\nHdq7lzfWraPfySdT54QTvI4jIlImQVH0zrn3nHOj69ev73UUqYY+njSJH53jmmHDvI4iIlJmQVH0\nIl56/aWXaGjGRbff7nUUEZEyU9GLlGLv//7H3O++Y3DbtkTWqeN1HBGRMlPRi5Ri7v33sx+4+sYb\nvY4iIlIuKnqRUrw8ezaxERGcNWaM11FERMpFRS9SgvSlS/nkxx+5rkcPwiIivI4jIlIuKnqRErx2\n99044Dp9d15EgpiKXqQYLi+Plz/7jLPr1eOU88/3Oo6ISLmp6EWKsfTll1l/6BDDrrjC6ygiIhWi\nohcpxsuPP04UMOiBB7yOIiJSISp6kSIO7tnDzDVr6N+iBfVPPtnrOCIiFaKiFyni/Qce4CfnGHbD\nDV5HERGpMBW9SBEvv/oqJ4WF0fu227yOIiJSYSp6kUJ+WL2aD3/4gWsTEwmPjPQ6johIhanoRQqZ\n8Ze/kAsMu+sur6NUOTPrY2YbzGyzmd1RzOPnmlmWma3Mv93j67Qi4h2d7kskn8vL48UFC0isVYt2\nl1/udZwqZWbhwBTgQiAdWGpm7zrn1hYZ9QvnXN9yTisiHtAWvUi+JS++SFp2NtdXz+/OdwM2O+e2\nOOcOAbOAflUwrYhUMhW9SL7nHn2UWkDSI494HcULzYBthe6n5w8rqoeZrTKzeWbWvozTYmajzSzF\nzFIyMjL8kVtEjkFFLwL8vGMHszZuZEirVtSLifE6TqBaDpzsnOsEPA28U9YZOOeSnXOJzrnExo0b\n+z2giPyWil4EmHXHHewDbrj9dq+jeGU70LzQ/Zj8YQWcc3ucc3vzf/4QqGFmjXyZVkS8o6IXAZ57\n6y3aH3ccZ4wc6XUUrywFWplZnJlFAkOAdwuPYGYnmJnl/9yNI+8fmb5MKyLe0VH3Uu2lvvEGS/ft\n44n+/bGw6vl/X+dcjpmNAxYA4cALzrk1ZjYm//GpwEDgRjPLAQ4AQ5xzDih2Wk9+ERH5DRW9VHvP\nPfggxwFDH3vM6yieyt8d/2GRYVML/TwZmOzrtCISGKrn5otIvv27dvFaWhoDWrSg4SmneB1HRMTv\nVPRSrc25806ygBsmTPA6iohIpVDRS7X27MyZnFqjBuf84Q9eRxERqRQqeqm2lr32Gv/Zu5eb+vat\ntgfhiUjoC4p3NzO7zMySs7KyvI4iIWTK/fdTCxj2j394HUVEpNIERdE7595zzo2uX7++11EkRGRu\n2sTMTZsY2rYtDVq08DqOiEilCYqiF/G3F2+5hWxg7AMPeB1FRKRSqeil2snLyeHZBQvoWa8eHQcM\n8DqOiEilUtFLtTP/b39jS04OY0eM8DqKiEilU9FLtTN5yhRODAuj/9/+5nUUEZFKp6KXamXzwoXM\nz8hgdM+eRNau7XUcEZFKp6KXauXJW24hAvj9E094HUVEpEqo6KXa+Onbb3khLY2rTzmFExMSvI4j\nIlIlVPRSbTw3diz7gVsmTvQ6iohIlVHRS7VweP9+nlqwgAuOP57OgwZ5HUdEpMroevRSLfzzttvY\nnpdH8s03ex1FRKRKaYteQp7Ly+PvL75Im8hI+tx1l9dxRESqlIpeQt4XU6aw/MABbhk0iLAI7cQS\nkepFRS8h77EHHyTajKFPPeV1FBGRKqeil5C2as4c3t+5k5vPO4+aDRt6HUdEpMqp6CWkPfzHP1IH\nGDd9utdRREQ8oaKXkLV54UJmf/cdN3XrxvFxcV7HERHxhIpeQtaj48ZRA7jluee8jiIi4hkVvYSk\n7SkpvLx+PSPbt+eETp28jiMi4hkVvYSkx8eMIRe47ZlnvI4iIuIpFb2EnMxNm5i2bBlXx8cT16uX\n13FERDylopeQ8/jw4ewH/vT4415HERHxnIpeQsquDRt48quvGNy8Oe379fM6joiI51T0ElIeu+46\nDgD36rN5ERFARS8h5IfVq5m8ZAlXx8XRtm9fr+OIiAQEFb2EjEeGDeMgcM+0aV5HEREJGCp6CQk7\nli/n2eXLGdqyJa0uvNDrOCIiAUNFLyFh4vDh5AB36yx45WZmfcxsg5ltNrM7Shmvq5nlmNnAQsO2\nmlmama00s5SqSSwivtDFuSXoffPpp0xLS2NkmzbEn3uu13GCkpmFA1OAC4F0YKmZveucW1vMeI8A\nHxUzm/Occ7sqPayIlIm26CXo3TV8ODWAv86c6XWUYNYN2Oyc2+KcOwTMAor7fuJ44E1gZ1WGE5Hy\nU9FLUFvy4ovM3raNW3v25MSEBK/jBLNmwLZC99PzhxUws2ZAf+DZYqZ3wCdmtszMRpe0EDMbbWYp\nZpaSkZHhh9giciwqeglaLi+P22+5hcZm3DZrltdxqoMngD855/KKeexs51wCcAkw1syKPfewcy7Z\nOZfonEts3LhxZWYVkXz6jF6C1gd//Sv/yspi8qBB1D3pJK/jBLvtQPNC92PyhxWWCMwyM4BGwO/M\nLMc5945zbjuAc26nmb3NkY8CPq/82CJyLNqil6CUk53Nnx59lFY1ajD6pZe8jhMKlgKtzCzOzCKB\nIcC7hUdwzsU552Kdc7HAHOAm59w7ZlbbzOoCmFlt4CJgddXGF5GSaItegtKLo0ez9uBB/nnrrdSo\nVcvrOEHPOZdjZuOABUA48IJzbo2Zjcl/fGopkzcF3s7f0o8AZjjn5ld2ZhHxjTnnvM7gs8TERJeS\noq/oVne7v/uOU+PiaFWnDl/u3o2FacdUUWa2zDmX6HWO0uj1LOKbir6etUUvQeevV1zBLueYP3Wq\nSl5E5Bj0LilBZc3cuUxeuZLRbdty+tVXex1HRCTgBUXRm9llZpaclZXldRTxkMvL4+YRI6hnxoNv\nv+11HBGRoBAURe+ce885N7p+/fpeRxEPvX3HHSz86SceGDiQRq1bex1HRCQoBEXRi+zftYv/e/xx\nOkZF8ftXXvE6johI0NDBeBIUHhkwgO9yc1n0978TERXldRwRkaChLXoJeGvffZeJn3/ONbGxnHPz\nzV7HEREJKip6CWh5OTnccO211DXjHx9+6HUcEZGgo133EtCmDR3KVz//zEvXX0/jtm29jiMiEnS0\nRS8Ba3tKCn+aNYsLGjbkumnTvI4jIhKUVPQSsMZffjmHgalvvKEz4ImIlJN23UtAmn3zzbz93//y\ncJ8+tLzgAq/jiIgELW0mScDZsWwZNz79NGfUrs2tOgOeiEiFqOgloLi8PEZefDHZzvHKm2/qO/Mi\nIhWkXfcSUKZdcw0LMjOZPHgwp158sddxRESCXlBt0e9Ys4Z/TZjAwaVLITfX6zjiZ5s+/phbZ83i\nwuhobpo50+s4IiIhIaiK/r/Z2Zz75JM06NaNC6OimNi6NV/feCM5n34KBw54HU8qICc7m2FXXkmk\nGS/On6+j7EVE/CSo3k0TEhJ4d/p0xlx8MTvr1ePOjRs5c+pUGl5wAZfVrs0/4uJYNWIEeXPnwo8/\neh1XyuDeCy5g8d69PDN2LM0SE72OIyISMsw553UGnyUmJrqUlJSC+xkZGSx67z0+/ec/Wfj112z6\n6ScAGgHnAeefeCLn9+pFq0svxXr1gpNPBjNvwkuJPpo4kT533snIU09l+oYNXscJCWa2zDkX0P9j\nKvp6FpHiVfT1HNRFX9S2bdv4bMECPn3zTRYuXkx6VhYAzYDzgfOPP54rhg+nwV13QXR01YSWUv13\nxQo6d+lC08hIvk5Pp1ajRl5HCgkqepHQUdHXc1Dtuj+W5s2bc9311/PSvHl8/9NPbNq0iWnPPstZ\nF13E/Dp1GPHTT8T+4x88cNJJ7LntNu3e91juoUNcc/757HOON+bMUcmLiFSCkCr6wsyMli1bMnrM\nGGYvWMD/srJYsmQJ551/PvccOkTspEk8dOKJ/Hz77ZC/y1+q1t3nnstnu3fzzPXX07ZvX6/jiIiE\npJAt+qLCwsLo2rUrby9cSEpKCmedcw53HTpE3GOP8eiJJ7Lvz3+G3bu9jlltzL75ZiYuXszotm0Z\n9txzXscREQlZ1aboC+vSpQvvLVrE119/TdezzuJPBw8S//DDPH7iiey/6y4VfiVbOWsWI556irPq\n1ePpJUu8jiMiEtKqZdEf1a1bN+Z9+SVfffUVnc88k1uzsznloYd46qSTyL77bsg/mE/8J2PdOq64\n9lqiw8N589//JrJOHa8jiYiEtGpd9Ed1796djxYv5vPPP6dNYiI3HzjAKQ8+yDMnnkjOs89CXp7X\nEUPCwawsBnXvzg+5ubz94os07dDB60giIiFPRV9Iz549+WzpUj799FPiExIYe+AAiTfdxH8SEiAt\nzet4QS3v8GGGdujAv7KyeGHcOBKHDvU6kohItaCiL8Z5553H58uX8+acOWQ2bEiPtDTGdO7MTxMm\nwP79XscLOi4vjwmJifwzPZ1Jl11G0tNPex1JRKTaUNGXwMy4csAA1m7dyi033sh0oM2TT/Jaixa4\nDz/0Ol5QefTSS3l61Sr+r0sXbn33Xa/jiIhUKyr6Y6hbty5/f+YZUpYvJ7ZtW4bu2sUFl17Khksu\ngf/+1+t4Ae/l66/njvnzSWrRgsf+8x+v44iIVDsqeh8lJCTwVVoazz79NMujoug0fz73xsaS/eST\nOlivBDPGjmXk88/Tu2FDXlq9mrCICK8jiYhUOyr6MggPD2fMuHFs2LqVQZdfzv2HDtFhwgQWduoE\n69d7HS+gzP7DHxj6zDP0atCAuRs26Gt0IiIeUdGXQ9OmTXlt7lw++fhjrGlTeq9Zw6j27fnxL3+B\nw4e9jue52X/4A9c8/TRn16/P+xs26Bz2IiIeUtFXwAW9e7Pq22+5Y/x4XnaOtn/7G2+0aoVbvtzr\naJ55dsgQkp5+mrPq1+eD9eup3aSJ15HER2bWx8w2mNlmM7ujlPG6mlmOmQ0s67QiUvVU9BVUs2ZN\nJj71FCnLl9P8lFO46rvv6NelC+ljx0J2ttfxqozLy+PB88/nptmz6XvCCcz/9lvqnHCC17HER2YW\nDkwBLgHaAUlm1q6E8R4BPirrtCLiDRW9nyQkJPCf9euZdP/9fBIeTrtnnuGZFi3I+9e/vI5W6Q7v\n28fYDh24+7PPGHrKKby5ZQs1jz/e61hSNt2Azc65Lc65Q8AsoF8x440H3gR2lmNaEfGAit6PIiIi\nuPXuu1m9cSNnnn46Y3fu5Kxzz2VFv36wa5fX8SrFj5s20ScmhmfXreO2M87gpQ0bqFGzptexpOya\nAdsK3U/PH1bAzJoB/YFnyzptoXmMNrMUM0vJyMiocGgROTYVfSWIj49nQUoKrzz3HFtq1SLx3XcZ\nHxPD7smTQ+qreOvfe48z2rXjy927eWn0aB79z38ICw/3OpZUnieAPznnyv1H7JxLds4lOucSGzdu\n7MdoIlISFX0lMTOGXn89G7Zv58akJJ45eJA248fzatu2uGA/b75zvDJqFImXX86evDw+S05m2LRp\nXqeSitkONC90PyZ/WGGJwCwz2woMBJ4xsyt8nFZEPKKir2QNGjRg8owZLF26lBZxcVy3cSPndupE\n2vDhQXnd+5/T0xkaF8ewF16gS4MGLPv6a3rccIPXsaTilgKtzCzOzCKBIcCvzlfsnItzzsU652KB\nOcBNzrl3fJlWRLyjoq8ipycmsnjzZpIff5zVxx1HwssvM6JpU76/5x44eNDreD754okn6BIXx4zv\nvuOv55/mAYxJAAAU50lEQVTPpz/8QExiotexxA+ccznAOGABsA54wzm3xszGmNmY8kxb2ZlFxDfm\nnPM6g88SExNdSkqK1zEqLDMzk4cmTGDy669jzjG2Xj3ufOwxoq+/HsIC7/9eO1et4vZ+/Xh561ZO\njojg1SefpNdNN3kdS0phZsuccwH9v7BQeT2LVLaKvp4Dr1WqgejoaP7+6qts2rqVpAsv5Ik9e4j/\n/e/5W/PmZL32WsAcsHd4716mDhpEm86dmbF1K38++2zW/u9/KnkRkSCiovfQySefzIsffcSqVas4\n7/TT+cuOHcQMHcot0dF8+9BDnp1w59Du3Tw3ZAitGzTgxjlzSGjYkNR583joiy+oHR3tSSYRESkf\nFX0AaN+xI+8sW8ayr7/mirPPZvLu3bS86y4GNmjAFyNHkrd5c5Xk2JeezpQrrqBldDSjZ8+mUa1a\nvHvffSzMyKBtnz5VkkFERPxLRR9ATu/WjVe/+IKt27Zxe1ISC3Nz6fXii8S2asWtJ57Ikltuwe3Y\n4ddl5u7bx78nTeL3LVtyYvPmjJs7l5Pr1WP+pEl8nZXFZffcgwXgcQMiIuIbHYwXwPbu3ctbzz3H\nP597jgXr13PYOVoA5zVoQI/OnTnr0ktpM2gQYS1agJlP83QHDrD5vff46u23+ddXX/H+99+TAdQE\nBrVuzQ23385ZI0ZgPs5PApMOxhMJHRV9Pavog8Tu3buZO3Uq77zyCl9u3syu/Mvh1gdahoVxSt26\nnHLCCTSKjua4qCiOi4oiD9idlcXuPXvYnpnJhl27WH/oEFn582wQFkaf+Hj6DRjA7269lXo6U1nI\nUNGLhA4VfTXknGPTunX8e9YsUv71LzZv3cqWXbvYun8/OcWMHwE0rVGD1g0b0qZ5czp36cJZQ4bQ\ntlcvwrRbPiSp6EVCR0VfzxH+DCNVw8w4tV07Tr3/fkYUGp6Tk8O+ffs4ePAgB7OzCQsLo8Hxx1Or\nVi3tihcRqaZU9CEkIiKC+vXrex1DREQCiPbbioiIhDAVvYiISAhT0YuIiIQwFb2IiEgIU9GLiIiE\nMBW9iIhICFPRi4iIhDAVvYiISAhT0YuIiIQwFb2IiEgIU9GLiIiEMBW9iIhICFPRi4iIhDAVvYiI\nSAirsqI3s3gze97M5hQaVtvMXjaz58zsmqrKIiIiUl34VPRm9oKZ7TSz1UWG9zGzDWa22czuKG0e\nzrktzrlRRQZfCcxxzt0AXF6m5CIiInJMET6O9xIwGXjl6AAzCwemABcC6cBSM3sXCAcmFpl+pHNu\nZzHzjQHS8n/O9T22iIiI+MKnonfOfW5msUUGdwM2O+e2AJjZLKCfc24i0NfH5adzpOxXouMFRKq9\nw4cPk56eTnZ2ttdRxENRUVHExMRQo0YNr6OEBF+36IvTDNhW6H46cEZJI5tZNPA34DQz+3P+fwje\nAiab2aXAeyVMNxoYDXDyySdXIK6IBLr09HTq1q1LbGwsZuZ1HPGAc47MzEzS09OJi4vzOk5IqEjR\nl4lzLhMYU2TYPmDEMaZLBpIBEhMTXaUFFBHPZWdnq+SrOTMjOjqajIwMr6OEjIrsLt8ONC90PyZ/\nmIhIuankRX8D/lWRol8KtDKzODOLBIYA7/onloiIiPiDr1+vmwksBlqbWbqZjXLO5QDjgAXAOuAN\n59yayosqIiIiZeXrUfdJJQz/EPjQr4lExBNm1gd4kiNfkZ3unHu4yOP9gAeAPCAHmOCc+zL/sa3A\nzxz5mmyOcy6xCqOLSCn0lTYRKXxejEuAdkCSmbUrMtpCoLNzLgEYCUwv8vh5zrkElbyUZsuWLYwa\nNYqBAwd6HaXaUNGLCBQ6L4Zz7hAwC+hXeATn3F7n3NFvvtQGQvZbMOHh4SQkJNChQwcGDRrE/v37\nfRp+9LZ161ZGjhxJkyZN6NChQ6nLWrhwIUOHDq1w5vnz59O6dWtatmzJww8/XOw4pWWaNm0aZsai\nRYsKhk2ZMgUz4+OPP65wvqPi4+N5/vnn/TY/OTYVvYhA8efFaFZ0JDPrb2brgQ84slV/lAM+MbNl\n+ee+KJaZjTazFDNLCeSvT9WsWZOVK1eyevVqIiMjmTp1qk/Dj95iY2MZPnw48+fPP+ayUlNTOe20\n0yqUNzc3l7FjxzJv3jzWrl3LzJkzWbt27W/GKy1TWloanTt3Zv369QDs37+f6dOn07hxYzp16lTm\nTGlpafTt2/dXt507iztBqlQ2Fb2I+Mw597Zzrg1wBUc+rz/q7Pxd+pcAY82sVwnTJzvnEp1ziY0b\nN66CxBXXs2dPNm/e7PPwo3r16kXDhg2POf+jRX/w4EGGDx/OnXfeyS87TnyzZMkSWrZsSXx8PJGR\nkQwZMoS5c+eWKdOqVasYMmRIQdE/9dRTDBo0iLCwMJo2bUpSUhJXXXUV3bp1o0WLFnzwwQcF0+7Y\nsYMBAwZw2mmn0aZNG5YsWULHjh15//33f3Vr0qRJmX4v8Y+gKHozu8zMkrOysryOIhKqynReDOfc\n50C8mTXKv789/9+dwNsc+Sgg6OXk5DBv3jw6duxY6vADBw4U7Lbv379/mZaxatUqmjRpwsUXX0zv\n3r156KGHfvU98p49e/7qY4Gjt08++aRgnO3bt9O8+S9PX0xMDNu3l+20JuvWrWPw4MGsX7+e3bt3\nM3v2bHr06FGwmz81NZX4+HiWLFnC66+/zn333VewLi655BJGjBjBihUrWL58OW3bti1xOZmZmYwZ\nM4YVK1YwcWLRy6JIZaiyM+NVhHPuPeC9xMTEG7zOIhKiCs6LwZGCHwJcXXgEM2sJfOOcc2Z2OnAc\nkGlmtYEw59zP+T9fBNxftfH962hxw5GiHTVqVKnDj+66L6vDhw+zZcsWkpKSmDZtGt27d//NOF98\n8UV5fw2fbdu2jejoaOLj49m5cyePPfYY48ePZ+PGjXTs2JHs7GwyMjK49957AWjXrh0//fQTAO+8\n8w5t27alb98jlzipVatWqcuKjo4u+MhDqkZQFL2IVC7nXI6ZHT0vRjjwgnNujZmNyX98KjAAuM7M\nDgMHgKvyS78p8Hb+VmgEMMM5d+wPp30Qe8cHxx6pjLY+fOkxxympuMtb6CVZt24dXbt25ccffyQ8\nPLzYcXr27MnPP//8m+GTJk2id+/eADRr1oxt2345xCI9PZ1mzX5ziEWJ0tLSCvZO1K1bl/nz57Nk\nyRImTJjA6aefzurVq2nVqhVRUVEALF++nM6dOwOwcuVKzjzzTJ+XJVVPRS8iQPHnxcgv+KM/PwI8\nUsx0W4DOlZHJl1IOZqmpqfTo0YNrr72W/v378+mnn9K0adNfjePLFn3Xrl3ZtGkT3377Lc2aNWPW\nrFnMmDHD5xyrVq0qKPrbbruN6OhowsPDSUtLY9iwYaSmpvL999+TnZ1Nbm4u9957L48++igAJ5xw\nAqmpqQXzysjIIFiOv6guguIzehGRYJOUlET37t3ZsGEDMTExxX6lLDU1lQ4dOnDqqafyyCOPMHjw\nYA4fPlzmZUVERDB58mQuvvhi2rZty+DBg2nfvj0Av/vd79ixY0epmdLS0go+i+/bt2/BRwhr166l\nffv2pKamcuWVV3LGGWfQtWtXbrzxRs466yzgyJH8P/zwA+3btychIYHFixeXfWVJpbKyHt3ppcTE\nRJeSkuJ1DJGAZ2bLAv3ENcW9ntetW1fqgVzijXPOOYfk5GRat25dZcvU38IvKvp61ha9iIiU6ptv\nvqFVq1Zex5By0mf0IiJSqvT0dK8jSAVoi15ERCSEqehFRERCmIpeREQkhAVF0esUuCIiIuUTFEXv\nnHvPOTe6fv36XkcREREJKkFR9CIiIlI+KnoREZEQpqIXEREJYSp6ERGREKaiFxGRKrVlyxZGjRrF\nwIEDvY5SLajoRUSKCA8PJyEhoeC2detW6tSpU+q47du3p3Pnzvz9738nLy+v4PGRI0fSpEmTgqvD\nFWfhwoUMHTq0wrnnz59P69atadmyJQ8//HCJ45WUadq0aZgZixYtKhg2ZcoUzIyPP/64wvmOio+P\nL/ZqflI5VPQiIkXUrFmTlStXFtxiY2OPOe6aNWv4+OOPmTdvHvfdd1/B48OHD2f+/PmlLi81NZXT\nTjutQplzc3MZO3Ys8+bNY+3atcycOZO1a9cWO25JmdLS0ujcuTPr168HYP/+/UyfPp3GjRvTqVOn\nMmdKS0ujb9++v7rt3LmzzPORilHRi4j4SZMmTUhOTmby5MkcvQR4r169aNiwYanTHS36gwcPMnz4\ncO68807KegnxJUuW0LJlS+Lj44mMjGTIkCHMnTu32HFLyrRq1SqGDBlSUPRPPfUUgwYNIiwsjKZN\nmwJHrml/1VVX0a1bN1q0aMEHH3wAwI4dOxgwYACnnXYabdq0YcmSJXTs2JH333//V7cmTZqU6feS\nilPRi0jg+mwi/LX+b28VHfcYDhw4ULDbvn///mWaNj4+ntzc3DJtua5atYomTZpw8cUX07t3bx56\n6CHMrODxnj17/uqjhKO3Tz75pGCc7du307x584L7MTExbN++vUzZ161bx+DBg1m/fj27d+9m9uzZ\n9OjR41e7+FNTU4mPj2fJkiW8/vrr3HfffeTk5HDJJZcwYsQIVqxYwfLly0u9lnxmZiZjxoxhxYoV\nTJw4sUwZpex0mVoRkSKO7o6vCocPH2bLli0kJSUxbdo0unfv/ptxvvjii0rPsW3bNqKjo4mPj2fn\nzp089thjjB8/no0bN9KxY0cAsrOzycjI4N577wWgXbt2/PTTT7zzzju0bduWvn37AlCrVq1SlxUd\nHc3UqVMr9xeSAip6ERE/2rJlC+Hh4T7vol63bh1du3blxx9/JDw8vNhxevbsyc8///yb4ZMmTaJ3\n794ANGvWjG3bthU8lp6eTrNmzXzOnZaWVlDodevWZf78+SxZsoQJEyZw+umnA7B69WpatWpFVFQU\nAMuXL6dz586sXLmSM8880+dlSdUKiqI3s8uAy1q2bOl1FBGREmVkZDBmzBjGjRv3q13vpUlNTaVH\njx5ce+219O/fn08//bTg8/CjfNmi79q1K5s2beLbb7+lWbNmzJo1ixkzZvicfdWqVQVFf9tttxEd\nHU14eDhpaWkMGzasIOv3339PdnY2ubm53HvvvTz66KOsWLGC1NTUgnllZGTQuHFjn5ctlSsoPqPX\nRW1ExGv79+8nJiam4Pb4448Dv3ye3759e3r37s1FF11UsGsbjhy81r17dzZs2EBMTMxvvlaWmppK\nhw4dOPXUU3nkkUcYPHgwhw8fLnO+iIgIJk+ezMUXX0zbtm0ZPHgw7du3B+B3v/sdO3bsKDVTWlpa\nwWfxffv2LfgIYe3atQXzSU1N5corr+SMM86ga9eu3HjjjZx11lkMHz6cH374gfbt25OQkMDixYvL\nnF8qj5X1yE4vJSYmupSUFK9jiAQ8M1vmnEv0Okdpins9r1u3rtSDuMRb55xzDsnJybRu3brSl6W/\nhV9U9PUcFFv0IiLivW+++YZWrVp5HUPKKCg+oxcREe+lp6d7HUHKQVv0IiIiIUxFLyIiEsJU9CIi\nIiFMRS8iASWYvgkklUN/A/6loheRgBEVFUVmZqbe6Ksx5xyZmZkFZ9+TitNR9yISMGJiYkhPTycj\nI8PrKOKhqKgoYmJivI4RMlT0IhIwatSoQVxcnNcxREKKdt2LCABm1sfMNpjZZjO7o5jH+5nZKjNb\naWYpZna2r9OKiHdU9CKCmYUDU4BLgHZAkpm1KzLaQqCzcy4BGAlML8O0IuIRFb2IAHQDNjvntjjn\nDgGzgH6FR3DO7XW/HCVXG3C+Tisi3gmKz+iPXqYW2G9m6yo4u/pAlh/HPdY4JT1e3HBfhzUCdh0j\nlz+VZZ35Y/qKrveyrPOShhcdFmzrvKwnJG8GbCt0Px04o+hIZtYfmAg0AS4ty7T5048GRuffPWhm\nq8uY0x8qum4rMh9fpynv+0pJj/n6t1/Vf+elZamq+Xj1nJQ0vLhhFbuKkHMuaG5AclXOw5dxjzVO\nSY8XN7wMw1KCab2XdfqKrveyrHNf13s1WOcDgemF7g8FJpcyfi/gk/JM69U69de6rch8fJ2mvO8r\nJT3m69++V8+Jl8+LV89JWZ6rij4vwbbr/r0qnocv4x5rnJIeL264r8OqWkUzlHX6iq73sqzzkoZ7\nvd6rep1vB5oXuh+TP6xYzrnPgXgza1TWaQOAv57b8szH12nK+75S0mNlfU14wavnxavnpKThfn9O\ngup69HKEmaW4AL/WeKgJ9XVuZhHARuACjpT0UuBq59yaQuO0BL5xzjkzO50jb0gxQPixpi1hmSG9\nToORnpPAVNHnJSg+o5ffSPY6QDUU0uvcOZdjZuOABRwp7hecc2vMbEz+41OBAcB1ZnYYOABc5Y5s\nKRQ7rQ+LDel1GqT0nASmCj0v2qIXEREJYcH2Gb2IiIiUgYpeREQkhKnoRUREQpiKXkREJISp6IOc\nmcWb2fNmNsfrLNWJmV1hZs+Z2Wwzu8jrPKFG6zfw6L0mMJhZbTN7Of/1cY0v06joA5CZvWBmO4ue\nHrS4K4S5I+cXH+VN0tBSxvX+jnPuBmAMcJUXeQNVWdZjSbR+/ctPz4neaypJGZ+fK4E5+a+Py32Z\nv4o+ML0E9Ck8QFcIqxIvUfb1/pf8x+UXL+HjejSzjmb2fpFbk0KTav36x0v47zkR/3sJ3997Yvjl\n2hK5vsxcJ8wJQM65z80stsjggiuEAZjZ0SuEra3adKGrLOs9/+JKDwPznHPLqzRogCvLenTOTQT6\nFp2HmRlav37jj+dEKk8Z3/PTOVL2K/FxY11b9MGjuCuENTOzaDObCpxmZn/2JlpIK3a9A+OB3sDA\no2ePk1KVtB5LovVb+cr0nOi9psqV9Py8BQwws2fx8bz42qIPcs65TI58jilVyDn3FPCU1zlCldZv\n4NF7TWBwzu0DRpRlGm3RB49gu0JYqNB69w+tx8Cj5ySw+e35UdEHj6VAKzOLM7NIYAjwrseZqgOt\nd//Qegw8ek4Cm9+eHxV9ADKzmcBioLWZpZvZKOdcDnD0CmHrgDd8vEKY+Ejr3T+0HgOPnpPAVtnP\nj65eJyIiEsK0RS8iIhLCVPQiIiIhTEUvIiISwlT0IiIiIUxFLyIiEsJU9CIiIiFMRS8iIhLCVPQi\nIiIh7P8BJJGMD7Xz0moAAAAASUVORK5CYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\njwnRq3w/AAAAAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\nA9bp9lYmHoCEAAAAAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\niEgY+/95f/Y1B7A/iQAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "colours = ['r','k','g','m']\n", + "\n", + "k_out = [1e-1] #[1e-4, 1e-3, 1e-2]\n", + "#models = ['PPF1','PPF2','FLD1']\n", + "models = ['PPF1','FLD1']\n", + "w0 = {'PPF1':-0.7,'PPF2':-1.15,'FLD1':-0.7,'FLD1S':-0.7}\n", + "wa = {'PPF1':0.,'PPF2':0.5,'FLD1':0.,'FLD1S':0.}\n", + "omega_cdm = {'PPF1':0.104976,'PPF2':0.120376,'FLD1':0.104976,'FLD1S':0.104976}\n", + "omega_b = 0.022\n", + "##Omega_cdm = {'PPF1':0.26,'PPF2':0.21,'FLD1':0.26,'FLD1S':0.26}\n", + "##Omega_b = 0.05\n", + "h = {'PPF1':0.64,'PPF2':0.74,'FLD1':0.64}\n", + "\n", + "\n", + "for Omega_K in [-0.1, 0.0, 0.15]:\n", + " for ppfgauge in ['Synchronous','Newtonian']:\n", + " cosmo = {}\n", + " for M in models:\n", + " use_ppf = 'yes'\n", + " gauge = ppfgauge\n", + " if 'FLD' in M:\n", + " use_ppf = 'no'\n", + " \n", + " cosmo[M] = Class()\n", + " \n", + " cosmo[M].set({'output':'tCl Mpk dTk vTk','k_output_values':str(k_out).strip('[]'),\n", + " 'h':h[M],\n", + " 'omega_b':omega_b,'omega_cdm':omega_cdm[M],'Omega_k':Omega_K,\n", + " ##'Omega_b':Omega_b,'omega_cdm':Omega_cdm[M],\n", + " 'cs2_fld':1.,\n", + " 'w0_fld':w0[M],'wa_fld':wa[M],'Omega_Lambda':0.,'gauge':gauge,\n", + " 'use_ppf':use_ppf,'hyper_sampling_curved_low_nu':6.1})\n", + " cosmo[M].compute()\n", + " \n", + " fig, axes = plt.subplots(1,2,figsize=(8,5))\n", + " for j,M in enumerate(models):\n", + " cl = cosmo[M].raw_cl()\n", + " l = cl['ell']\n", + " axes[0].loglog(l,cl['tt']*l*(l+1)/(2.*np.pi),label=M,color=colours[j])\n", + " \n", + " csm = cosmo[M]\n", + " pt = csm.get_perturbations()\n", + " pts = pt['scalar']\n", + " for i,k in enumerate(k_out):\n", + " ptk = pts[i]\n", + " a = ptk['a']\n", + " phi = ptk['phi']\n", + " psi = ptk['psi']\n", + " if 'FLD' in M:\n", + " ls = ':'\n", + " lw=5\n", + " else:\n", + " ls = '-'\n", + " lw=1\n", + " axes[1].semilogx(a,0.5*(phi+psi),label=M+' '+'$k='+str(k)+'Mpc^{-1}$',ls=ls,lw=lw)\n", + "\n", + " axes[0].legend(loc='upper left')\n", + " axes[0].set_xlim([2,300])\n", + " axes[0].set_ylim([6e-11,1e-9])\n", + "\n", + " axes[1].legend(loc='lower left')\n", + " axes[1].set_xlim([1e-2,1])\n", + " axes[1].set_ylim([0.3,0.63])\n", + " \n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.104976\n", + "0.120376\n" + ] + } + ], + "source": [ + "print 0.31*0.64**2-0.022\n", + "print 0.26*0.74**2-0.022" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.13" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/class/notebooks/cambvsclass-v2.ipynb b/class/notebooks/cambvsclass-v2.ipynb new file mode 100644 index 00000000..184c495b --- /dev/null +++ b/class/notebooks/cambvsclass-v2.ipynb @@ -0,0 +1,1200 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "f42fe0e6", + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "import camb\n", + "\n", + "from scipy.interpolate import interp1d\n", + "from classy import Class\n", + "from multiprocessing.pool import Pool\n", + "\n", + "%matplotlib inline\n", + "%matplotlib inline\n", + "%config InlineBackend.figure_format = 'retina'\n", + "plt.rcParams.update({'axes.labelsize' : 20})\n", + "plt.rcParams.update({'axes.grid' : False})\n", + "import seaborn as sns\n", + "sns.color_palette(\"colorblind\")\n", + "plt.style.use(\"MNRAS_Style\")" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "f5a8a3bd", + "metadata": {}, + "outputs": [], + "source": [ + "class_ref = {\n", + " #'recombination': 'RECFAST',\n", + " #'tol_ncdm_bg':1.e-10,\n", + " # 'recfast_Nz0':100000,\n", + " #'tol_thermo_integration':1.e-5,\n", + " #'recfast_x_He0_trigger_delta':0.01,\n", + " #'recfast_x_H0_trigger_delta':0.01,\n", + " #'evolver':0,\n", + " #'k_min_tau0':0.002,\n", + " #'k_max_tau0_over_l_max':3.,\n", + " #'k_step_sub':0.015,\n", + " #'k_step_super':0.0001,\n", + " #'k_step_super_reduction':0.1,\n", + " #'start_small_k_at_tau_c_over_tau_h':0.0004,\n", + " #'start_large_k_at_tau_h_over_tau_k':0.05,\n", + " #'tight_coupling_trigger_tau_c_over_tau_h':0.005,\n", + " #'tight_coupling_trigger_tau_c_over_tau_k':0.008,\n", + " #'start_sources_at_tau_c_over_tau_h':0.006,\n", + " #'l_max_g':50,\n", + " #'l_max_pol_g':25,\n", + " #'l_max_ur':50,\n", + " #'l_max_ncdm':50,\n", + " #'tol_perturbations_integration':1.e-6,\n", + " #'perturbations_sampling_stepsize':0.01,\n", + " #'l_logstep':1.026,\n", + " #'l_linstep':25,\n", + " #'hyper_sampling_flat':12.,\n", + " #'hyper_sampling_curved_low_nu':10.,\n", + " #'hyper_sampling_curved_high_nu':10.,\n", + " #'hyper_nu_sampling_step':10.,\n", + " #'hyper_phi_min_abs':1.e-10,\n", + " #'hyper_x_tol':1.e-4,\n", + " #'hyper_flat_approximation_nu':1.e6,\n", + " #'q_linstep':0.20,\n", + " #'q_logstep_spline':20.,\n", + " #'q_logstep_trapzd':0.5,\n", + " #'q_numstep_transition':250,\n", + " #'transfer_neglect_delta_k_S_t0':100.,\n", + " #'transfer_neglect_delta_k_S_t1':100.,\n", + " #'transfer_neglect_delta_k_S_t2':100.,\n", + " #'transfer_neglect_delta_k_S_e':100.,\n", + " #'transfer_neglect_delta_k_V_t1':100.,\n", + " #'transfer_neglect_delta_k_V_t2':100.,\n", + " #'transfer_neglect_delta_k_V_e':100.,\n", + " #'transfer_neglect_delta_k_V_b':100.,\n", + " #'transfer_neglect_delta_k_T_t2':100.,\n", + " #'transfer_neglect_delta_k_T_e':100.,\n", + " #'transfer_neglect_delta_k_T_b':100.,\n", + " #'neglect_CMB_sources_below_visibility':1.e-30,\n", + " #'transfer_neglect_late_source':3000.,\n", + " #'halofit_k_per_decade':3000.,\n", + " #'l_switch_limber':40.,\n", + " #'accurate_lensing':0,\n", + " #'num_mu_minus_lmax':1000.,\n", + " #'delta_l_max':1000.,\n", + "# 'nonlinear_verbose' : 2\n", + "\n", + "}\n", + "\n", + "# additional precision parameters for neutrinos only\n", + "class_ref_nu = {\n", + " #'radiation_streaming_approximation':2,\n", + " #'radiation_streaming_trigger_tau_over_tau_k':240.,\n", + " #'radiation_streaming_trigger_tau_c_over_tau':100.,\n", + " #'ur_fluid_approximation':2,\n", + " #'ur_fluid_trigger_tau_over_tau_k':50.,\n", + " #'ncdm_fluid_approximation':3,\n", + " #'ncdm_fluid_trigger_tau_over_tau_k':51.,\n", + " #'tol_ncdm_synchronous':1.e-10,\n", + " #'tol_ncdm_newtonian':1.e-10,\n", + "}" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "id": "28f881e4", + "metadata": {}, + "outputs": [], + "source": [ + "# Parameter ranges\n", + "Omega_m_min, Omega_m_max = 0.1,0.6\n", + "Omega_b_min, Omega_b_max = 0.03, 0.07\n", + "Omega_k_min, Omega_k_max = -0.0001, 0.0001\n", + "h_min, h_max = 0.58, 0.8\n", + "ns_min, ns_max = 0.93, 1.0\n", + "logAs_min, logAs_max = np.log10(5E-10), np.log10(5E-9)\n", + "w0_min, w0_max = -2, -1/3\n", + "wa_min, wa_max = -0.001,0.001\n", + "m_nu_min, m_nu_max = 0., 0.6\n", + "zs = [0.0, 0.5, 1.0]#1.008916e+00]\n", + "zs = np.array(zs)\n", + "nuFlag=True\n", + "k = np.logspace(-3,np.log10(20),2000)" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "id": "3572f79c", + "metadata": {}, + "outputs": [], + "source": [ + "def run_camb(cosmo_dict,k,z,nu=False, darkmatter=True, mead='mead2020'):\n", + " camb.camb.set_feedback_level(level=0)\n", + " cosmo_dict['Omcdm'] = cosmo_dict['Omcb']-cosmo_dict['Omb']\n", + " nonlinear = camb.nonlinear.Halofit()\n", + " if darkmatter:\n", + " nonlinear.set_params(halofit_version=mead)#, HMCode_logT_AGN=-20,)\n", + " else:\n", + " nonlinear.set_params(halofit_version=mead+'_feedback',HMCode_logT_AGN=cosmo_dict['TAGN'])#, HMCode_logT_AGN=-20,)\n", + " pars = camb.CAMBparams(NonLinearModel =nonlinear)\n", + " pars.set_cosmology(H0=cosmo_dict['h']*100,\n", + " ombh2=cosmo_dict['Omb']*cosmo_dict['h']**2,\n", + " omch2=cosmo_dict['Omcdm']*cosmo_dict['h']**2,\n", + " mnu=cosmo_dict['smnu'] if nuFlag else 0., \n", + " num_massive_neutrinos=1 if nuFlag else 0,\n", + " YHe=cosmo_dict['Y_p'],\n", + " omk=0, tau=0.06) #fixed parameters, Planck neutrinos\n", + " #pars.set_accuracy(AccuracyBoost=3.0, lAccuracyBoost=3.0, DoLateRadTruncation=False)\n", + " pars.InitPower.set_params(ns=cosmo_dict['ns'],\n", + " As=cosmo_dict['As'])\n", + "\n", + " pars.set_matter_power(redshifts=zs,kmax=50/cosmo_dict['h'])#, kmax=kmax/h) \n", + " pars.share_delta_neff = True \n", + "\n", + " results = camb.get_results(pars)\n", + " camb_interp = camb.get_matter_power_interpolator(pars,nonlinear=False,kmax=50/cosmo_dict['h'])\n", + " pinterp = camb_interp.P #defaults #takes (z,k) pairs\n", + " camb_interp = camb.get_matter_power_interpolator(pars,nonlinear=True,kmax=50/cosmo_dict['h'])\n", + " pinterp_nonlinear = camb_interp.P #defaults #takes (z,k) pairs\n", + "\n", + " return pinterp(z,k), pinterp_nonlinear(z,k), results\n" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "id": "25528d17", + "metadata": {}, + "outputs": [], + "source": [ + "#should really just make a private toolbox with these functions somewhere...\n", + "import copy\n", + "def run_class(cosmo_dict_in,k,z,nu=False,pk=False,gauge='synchronous',darkmatter=True, mead=\"HMcode2020\"):\n", + " cosmo_dict=copy.deepcopy(cosmo_dict_in)\n", + " '''Simple call to boltzmann code using input cosmology parameter vector. k in h/Mpc.'''\n", + " #setup\n", + " if('h' not in cosmo_dict.keys()):\n", + " h = cosmo_dict['H0']/100.\n", + " elif('H0' not in cosmo_dict.keys()):\n", + " cosmo_dict['H0'] = cosmo_dict['h']*100.\n", + " h = cosmo_dict['h']\n", + " if('Omcdm' not in cosmo_dict.keys()):\n", + " cosmo_dict['Omcdm'] = cosmo_dict['Omcb']-cosmo_dict['Omb']\n", + " # cosmo_dict['Omcdm'] = cosmo_dict['Omm']-cosmo_dict['Omb']\n", + " c,G = 2.99792e5,4.30071e-9 \n", + " cosmo_dict['non linear']=mead\n", + " if darkmatter:\n", + " None\n", + " else:\n", + " cosmo_dict['hmcode2020log10tagn']=cosmo_dict['TAGN']\n", + "\n", + "\n", + " h=cosmo_dict['h']\n", + " if(nu): \n", + " #use Planck single massive neutrino if using neutrinos\n", + " N_ncdm=1\n", + " m_ncdm=cosmo_dict['smnu']\n", + " else:\n", + " N_ncdm=0\n", + " m_ncdm=0 \n", + " if N_ncdm!=0:\n", + " N_ur=2.0308\n", + " else:\n", + " N_ur=3.0440#3.046-N_ncdm\n", + " # N_ur = 3.046\n", + " #print(\"Nur: {0:.3f}, Nncdm: {1:.3f}, mncdm: {2:.3f}\".format(N_ur,N_ncdm,m_ncdm))\n", + " \n", + " ceng = Class()\n", + " #gross but don't want to look up how to do it right now\n", + " if(nuFlag): \n", + " ceng.set({'h':h,\n", + " 'omega_b':cosmo_dict['Omb']*h**2,\n", + " 'omega_cdm':cosmo_dict['Omcdm']*h**2,\n", + " #'omega_r':cosmo_dict['Omr']*h**2,\n", + " 'n_s':cosmo_dict['ns'],\n", + " 'A_s':cosmo_dict['As'],\n", + " 'gauge':gauge,\n", + " #'N_ur': N_ur,\n", + " 'N_eff': 3.046,\n", + " 'N_ncdm': N_ncdm,\n", + " 'T_ncdm': 0.7133, # IMPORTANT, see page 11 of arxiv:1104.2935\n", + " 'm_ncdm': m_ncdm,\n", + " 'YHe': cosmo_dict['Y_p'],\n", + " 'ncdm_fluid_approximation':3,\n", + " 'z_reio': 7.6711,\n", + " 'non linear':cosmo_dict['non linear'],\n", + " 'z_max_pk':1.1,\n", + " 'Omega_k' : 0.\n", + " })\n", + " if not darkmatter:\n", + " ceng.set({'hmcode2020log10tagn':cosmo_dict['hmcode2020log10tagn']})\n", + " else: \n", + " ceng.set({'h':h,\n", + " 'omega_b':cosmo_dict['Omb']*h**2,\n", + " 'omega_cdm':cosmo_dict['Omcdm']*h**2,\n", + " #'omega_r':cosmo_dict['Omr']*h**2,\n", + " 'n_s':cosmo_dict['ns'],\n", + " 'A_s':cosmo_dict['As'],\n", + " 'gauge':gauge,\n", + " 'N_ur': N_ur,\n", + "# 'N_ncdm': N_ncdm,\n", + "# 'm_ncdm': m_ncdm,\n", + " 'YHe': cosmo_dict['Y_p'],\n", + " 'ncdm_fluid_approximation':3,\n", + " 'z_reio': 7.6711, \n", + " 'non linear':cosmo_dict['non linear'],\n", + " 'z_max_pk':1.1,\n", + " 'Omega_k' : 0.\n", + " })\n", + " if not darkmatter:\n", + " ceng.set({'hmcode2020log10tagn':cosmo_dict['hmcode2020log10tagn']})\n", + " #print(m_ncdm)\n", + " #print(ceng.pars)\n", + " #need lower z_max ow issues long complaint, need z3.900000e-02):\n", + " continue\n", + " bolt_names = ['h','Omb','Omcb','ns','Y_p','Neff','smnu','As', 'TAGN']\n", + " \n", + " bolt_cosmo = [h,Omega_b,Omega_m,ns,0.24,3.046,m_nu,10**logAs, TAGN] #this is the choice of Planck TTTEEE in class for nu\n", + " cosmo_dict = dict(zip(bolt_names,bolt_cosmo))\n", + " cosmoall.append(cosmo_dict)\n", + " pool = Pool(32)\n", + " resultall = pool.map(get_result, cosmoall)\n", + " for result in resultall:\n", + " #if result==None:\n", + " # continue\n", + " linearratio.append(result[0])\n", + " HM2020DM.append(result[1])\n", + " HM2020TAGN.append(result[2])\n", + " HM2016.append(result[3])\n", + " HMhalofit.append(result[4])\n", + " cosmorecord.append(result[5])\n", + "\n", + " allresult[z]=[linearratio, HM2020DM,HM2020TAGN,HM2016,HMhalofit,cosmoall,cosmorecord]\n", + " pool.close()" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "9b8f3214", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "7" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "len(allresult[zs[j]])" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "a6dbd1e8", + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "#import pickle\n", + "#with open(\"/oak/stanford/orgs/kipac/users/chto/lighthouse/analysis/dataanalysis/desy3/datav/cambvsclass.pkl\", 'wb') as f:\n", + "# pickle.dump(allresult, f)" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "c25e7f39", + "metadata": {}, + "outputs": [], + "source": [ + "from matplotlib.colors import Normalize\n", + "\n", + "norm = Normalize(vmin=0, vmax=0.6, clip=False)\n", + "cmap = plt.get_cmap('rainbow')\n" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "id": "fb9cb65d", + "metadata": {}, + "outputs": [], + "source": [ + " linearratio, HM2020DM,HM2020TAGN,HM2016,Halofit,_,cosmo = allresult[zs[j]]\n" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "id": "895f06cd", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([0.00060065, 0.00060029, 0.00059992, ..., 0.00084337, 0.00083599,\n", + " 0.00082857])" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "linearratio[1]" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "id": "5e23fe63", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([ 0.00016352, 0.00016101, 0.00015847, ..., -0.06615033,\n", + " -0.06615036, -0.06615039])" + ] + }, + "execution_count": 28, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "Halofit[1]" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "id": "ff1446a3", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAACXcAAATiCAYAAAD7kELsAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAABYlAAAWJQFJUiTwAAEAAElEQVR4nOzdd5wcdf3H8ddnr18uvfdCCQmh9x46CIiAKBYUUBQVG/b6w4K9i4qigIiKSu+dUAOEQCCEEAgppPdcLtdv9/v74zt7O7u39fpd3s/HY7I7u9+Z+e7mdr4z8/3M52vOOURERERERERERERERERERERERKR3ifR0BURERERERERERERERERERERERKQtBXeJiIiIiIiIiIiIiIiIiIiIiIj0QgruEhERERERERERERERERERERER6YUU3CUiIiIiIiIiIiIiIiIiIiIiItILKbhLRERERERERERERERERERERESkF1Jwl4iIiIiIiIiIiIiIiIiIiIiISC+k4C4REREREREREREREREREREREZFeSMFdIiIiIiIiIiIiIiIiIiIiIiIivZCCu0RERERERERERERERERERERERHohBXeJiIiIiIiIiIiIiIiIiIiIiIj0QgruEhERERERERERERERERERERER6YUU3CUiIiIiIiIiIiIiIiIiIiIiItILKbhLRERERERERERERERERERERESkF1Jwl4iIiIiIiIiIiIiIiIiIiIjILs7MhpvZy2bWYmYumGJmtsbMTuuC7V1tZtuDbbjQ1Gxmb5vZVZ29zb7InHM9XQcREREREREREREREREREREREekhZnYmcBdgwUsbgAZgIonkUX9xzn2yE7a1L/AcUBG8tDWYqoBRoe3hnLM2K9jFKLhLRERERERERERERERERERERGQXZWaTgeX4wK4YMN05tzT0/iZgRDD7RefcbzqwranAUnwA11JglnOuMaXMQmAWKLgLFNwlIiIiIiIiIiIiIiIiIiIiIrLLMrNVwIRg9iLn3N9T3h8I7Ahmo8654g5sqxoYBGxyzo3KUi6Gj2va5YO7IrmLiIiIiIiIiIiIiIiIiIiIiIhIf2Nm+5AI7GpKDewCcM7VAK8Hs0VmdkM7t/VdfGAXwInZyjrnIgrs8hTcJSIiIiIiUiAzKzazz5vZmJ6ui/R9ZvZdMxvc0/UQERERERER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S/oaBXeJiIiIiIiIiIiIiIiIiIiIyC5BwV3S1xT3dAVERERERERERERERERERERERLpVUaSnayCSF/2lioiIiIiIiIiIiIiIiIiIiIiI9ELK3CUi0onMbB/g68DuwGBgLTAf+IZzrqUH6zUB+B6wFzAC2AAsBL7lnNveU/USERERERERERERERERERGRzMw519N1EBHp88zsQ8BfgMosxZYB+zvnarqnVmBmRwP34APNMtkIHOWcW9o9tRIRERERERERERERERER6Rlm5gDckPKerkqnsO0NADjnrIerIl1EwV0iIh1kZvcDp4VecviMXdXAOGBI6L0Y8H7n3C3dUK8/Ap9KeXk9sBkYDYxMee8bzrmfdHW9RERERERERERERERERER6Smtw1/CKnq5Kp7At9YCCu/ozBXfJLie+oxYRkf6htx2oqp0REelfelM7ozZGRKR/URsjIiJdRW2MiIh0ld7UxnSEgrukr4n0dAVERERERERERERERERERERERESkreKeroBIT1HWOumoyspK6uvrW+eXLl3KbrvtlrH8qaeeykMPPdQ6f/HFF3Pdddfl3I6ZD7DO92923LhxrFu3rnX+7rvv5swzz8xY/mtf+xo/+9nPWucPPfRQnn/++by2JZJOoX+zHd1Ob6V2RvqK7vrNinQWtTP6vUrfoTZG+hq1Mfq9St+hNkb6GrUx+r1K36E2RvoatTEiuwYNyyi7nNYUi/rblw745S9/yZe//OXW+VGjRrFhw4asy1RXVzNkyJDW+UgkQjQazbmtQg7K5syZw/HHH986X15enhSAlkkkEkla/5YtWxg2bFjO5UTS6e4Tid6WYlbtjPQ1umAlfc2u3M6ojZG+Rm2M9DVqY/R7lb5DbYz0NWpj9HuVvkNtjPQ1u3Ib0xEallH6Gg3LKCLSDj//+c+T5i+55JKcywwePJjBgwe3zsdiMf70pz91ar2uuOKKpPnjjjsur+WmTZuWNP/5z3++0+okIiIiIiIiIiIiIiIiItLrFEX6xyT9nv6XRUTaITVL11e+8pW8lps1a1bS/C9+8YtOqxPAwoULk+YvvfTSvJY76aSTkubvuuuuTquTiIiIiIiIiIiIiIiIiIiItI+Cu0RECnTTTTclzUcikbyHMDz33HOT5leuXNlp9dq0aRMtLS1Jr5133nl5LZuaqWvHjh2dVi8RERERERERERERERERERFpHwV3iUiXKS4uxsw6NF1++eU9/THauOOOO5Lmy8rK8l72nHPOSZqPRqOdUSUArr/++qT5SCT/XfyMGTPavLZ48eIO10lERERERERERERERERERETaT8FdItKr7b777j1dhTZeeeWVpPmqqqq8l506dWqb1x577LEO1wng4YcfTpovKSkpaHkzS5q/8cYbO1wnEREREREREREREREREZFeqSjSPybp9/S/LCJd7phjjsE5l3VauXJlm+CiadOm8YUvfKHN+gYNGtThjGC5pmOPPTbj59m0aVPS/NChQzv0/aQGZbXXihUrkuYrKysLWr64uDhp/uWXX+5olUREREREREREREREREREpINsXU3GSfo/BXeJSK8wY8YMnHOt82VlZbz55ps9WKPMmpubk+bLy8sLWj41iG3jxo0drhNAXV1d0nyhmbtSh3Gsrq7ucJ1ERERERERERERERERERESk/YpzFxER6Vr77LNPm8Ckl19+maKioh6qUXYtLS1J82VlZQUtb2ZJgWxbtmzplHo1NDQkzadm4solNbirpkZR3iIiIiIiIiIiIiIiIiIiPc2NHZjxPWXv6v8U3CUiXeZ973sfK1as4JJLLslY5rOf/SyvvfZa0mu///3vmTFjRsZlduzY0Wl1bI9YLJY0357grrDOCqJKDTorNLgrNZiuvr6+w3USERERERERERERERERERGR9lNwl4h0mX/9619Z37/vvvu4+uqrk14788wzufzyy7uyWh2WmuGqsbGxoOXDWbsABg7MHGVdiNRgrtRgr1yi0WjSfEVFRYfrJCIiIiIiIiIiIiIiIiLSKxVZ7jIivUAkdxERkc63detWzjrrrKTXxowZw913391DNcpfahBVR4O7hg0b1uE6AZSXlyfNFxrclZqRbMCAAR2uk4iIiIiIiIiIiIiIiIiIiLSfMneJSI/YbbfdkoKJiouLWbZsWQ/WKH8lJSVJ8w0NDQUtnxrcNXLkyILKZ1JZWZk039zcXFC9UoO7hgwZUtDyInH5/s2KSO+g36z0NfqbFek79HuVvkZ/syJ9h36v0tfob1ak79DvVfoa/c2K7BqUuUtEut3RRx/N9u3bk1576qmn+swwgKnBWKmfpVAnnXRSh5aPmzJlStJ8XV1dQcunZvraf//9O1gjERERERERERERERERERER6QgFd4lIt/re977HM888k/TalVdeyeGHH573OgYNGoSZdel07LHHZtz+fvvtlzRfU1OTd92XL1/e5rWTTz457+WzSV1PoZm7UiP7L7zwwg7XSURERERERERERERERESkVyqK9I9J+j39L4tIt3nuuee48sork1476qij+L//+7+eqVA7vec970mab2xszHvZ22+/PWm+qKioM6oEwMUXX5w0nzrMYjaLFy9u89qsWbM6XCcRERERERERERERERERERFpPwV3iUi3qK+v55hjjkl6bciQITz99NM9VKP2+/CHP5w0H4vFqK6uzmvZ1OCuSZMmdVq9Ro4cSXFxcdbtZfL73/8+aX7QoEGdVi8RERERERERERERERERERFpHwV3iUi3mDp1Ki0tLa3zkUiEt99+u13r2rFjB865Lp2efPLJrHUYPXp00vwvfvGLvOq+cOHCpPkrrriisA+fQ2q2rb/+9a95Lffwww8nzZ955pmdVicRERERERERERERERERERFpHwV3iUiXO/PMM9mwYUPSa3fffTfDhg3LuMxpp51GeXk5++23X1dXr12++MUvJs1fe+21OZfZuXNnUoYvM+Pyyy/v1Hr9+te/Tpp/7LHH8louNdAuNZOXiIiIiIiIiIiIiIiIiIiIdD8Fd4lIl/r973/Pvffem/Ta5z73Od71rndlXe6NN96gsbGR5cuXd2X12u1rX/saFRUVrfMbNmzIWdfzzz8/af7CCy/MuZ1oNMp5553HzJkz+c53vpOz/OzZsxkzZkzrfENDA/fdd1/WZb71rW/hnGudP/jgg7MG3omIiIiIiIiIiIiIiIiI9HlF1j8m6fcs3KEvsiswMwegv/2ut3jxYmbOnJn02qxZs9oMTZjOlClTWLlyJQMHDmTHjh1dVcUOufHGG/noRz/aOj927FjWrl2btuzy5cuZNm1a63xJSQlNTU05t1FZWUl9fX3r/CGHHMILL7yQdZkFCxZwwAEHtM5XVFRQV1eXtmx9fT1VVVXEYjHAZxPbsWMHVVVVOesm0mOcg2fuw445M5h1veqoVe2MiEj/YOabl97UzqiNERHpH9TGiIhIV1EbIyIiXaU3tjEd0do+TRva01XpFLZsG9B//n+kLWXuEpEuEY1GkwKMAMrLy3n44YdZv359zikajfZQzfP3kY98hPPOO691ft26deyzzz5t6r5gwQL2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H/rQlPbAwED22WefGT339NNPn9JevXr1nMUFAAAAAAAAAPQXxV3AvBkaGkopZVbbi170ok7/Mbbxmc98Zkp7yZIlM37ub//2b09pj46OzkVIAAAAAAAAAEAfUtwFdLVjjjmm0yFs42c/+9mU9sqVK2f83COPPHKbvm9+85uzjmk63/3ud3P3u989y5cvz8DAwJaiucHBwSxfvjwnn3xyPve5z83b9QEAAAAAAAC60ejAQF9s9D8/ZWDenXbaaam17nBbvXp1SilTnnfUUUflJS95yTbn22OPPWY9I9jOtvvf//7T/nmuv/76Ke299957Vn8/X/va12b1/OlcdtllOfXUU3P22Wdnw4YNqbVuOTY2NpYNGzbkpz/9aR7/+Mdn1apV+c53vjMvcQAAAAAAAAAAu0dxF9AVTjjhhCnFR0uWLMn555/fwYimNzw8PKW9dOnSXXr+1kVs11133axj2p7xv8/ly5fnqU99ar785S/nxhtvzJlnnpnnPe952WOPPbaMXbt2bR7wgAfkL//yL+clFgAAAAAAAABg1ynuAjrupJNOyvr166f0nX322RkcHOxQRDs2MjIypb1kyZJdev7WxV033njjrGOazotf/OKsW7cuH/nIR/Lwhz88++yzT0455ZS8613vyq233poXvOAFU8a/7nWvy/vf//55iwcAAAAAAAAAmLmhTgcA9K8nP/nJufTSS/Pc5z532jF/8id/kl/+8pdT+t761rfmhBNOmPY5t91225zFuDvGxsamtGdb3LVmzZpZxzTZKaeckrPPPjsvetGL8td//dc7HPsf//EfueSSS/LlL395S9/v//7v59nPfvacxgQAAAAAAADQTca2+twWupXiLmDefOQjH9nh8f/93//N2972til9j3nMY/KiF71oPsOatYGBqZMebtq0aZeeP3n5ySRZtWrVrGOa7Etf+tIujx8cHNxStDY2NpanPOUp+ehHPzqncQEAAAAAAAAAu8ayjEBH3HTTTXnsYx87pe+ggw7K5z//+Q5FNHNDQ1PrYmdb3LXPPvvMOqbZOumkk6a0v/CFL3QoEgAAAAAAAABgnOIuoCOOPvroKcsbDg0N5eKLL+5gRDO3aNGiKe2NGzfu0vO3Lu7af//9dzp+6+fMtcc//vFT2uvWrZvX69Hf2vGaBeaO31l6jdcs9A6/r/Qar1noHX5f6TVes9A7/L7Sa7xmYWFQ3AW03amnnppbbrllSt8ZZ5yRZcuWdSagXbR1MdbWf5Zd9ZCHPGRWz58Lj370o7fpu/XWWzsQCQAAAAAAAAAwTnEX0Favec1r8t3vfndK36tf/erc5z73mfE59thjj5RS5nW7//3vP+3173KXu0xpr1mzZsaxX3LJJdv0PfShD53x8+fL8ccfv03fWWed1YFIAAAAAAAAAObfWCl9sdH/FHcBbfODH/wgr371q6f0nXLKKfnbv/3bzgS0m57whCdMaW/atGnGz/30pz89pT04ODgXIc3aTTfdtE3ffvvt14FIAAAAAAAAAIBxQ50OAFgYNmzYkNNOO21K31577ZUzzzyzQxHtvqc//el5xjOesaU9NjaWW2+9NXvuuedOn7t1cddhhx02p7Gdc8452bhxY44++uhtlo/ckV/84hfb9N35zneey9AAAAAAAAAA2A2nHvQXnQ6BDjJzF9AWRx55ZEZGRra0BwYGctFFF+3WuW677bbUWud1+853vrPDGA488MAp7Te84Q0zin3rIqqXvexlu/aH34m73e1uue9975tHPOIRu/S8j3zkI1PaAwPSAwAAAAAAAAB0Wqm1djoGaKtSSk0Sr/32ecxjHpMvfvGLU/q++MUv5lGPetS0z3nEIx6Rb33rWzn++OPzs5/9bL5D3GX//M//nFe+8pVb2gceeGCuueaaHT5n7dq1WbVq1ZZ2KSVjY2NzGldpral8wAEH5Nprr53x8/bbb7/ceOONW9qHHHJIrrzyyjmNDeba+Ou91tpVi4nLMwD9oRvzjBwD0B/kGADmixwDwHzpxhwzG+P56YzrZjaBR7c77YCXJ+mfnw/bMjULMK/e+ta3blPY9ad/+qc7LOxKkl//+tfZtGlTLrnkkvkMb7e94hWvyLJly7a0r7322p3G+qQnPWlKe/LSjtMZHR3NE5/4xJx44ol51ateNeP4rrvuumzevHlGY88666wphV1J8uY3v3nG1wIAAAAAAAAA5oeZu1hwfEukfc4777yceOKJU/rudKc7bbM04fYcccQRWb16dVatWpXbbrttvkKclQ9+8IN51rOetaV98MEH56qrrtru2EsuuSRHHXXUlvaiRYtmVHy1fPnybNiwYUv7nve8Z370ox9NO368aj6Z2d/15s2bs9dee025xkxmIYNu0K3fEpFnAPpDN+YZ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Nvan5C4REREREREREREREZE5tqznMXTlzmpa1zfwI4qlfQtUIxERERERWQyU3CUiIiIiIiIiIiIiIjLHnHOsW/lcfK+jYW3E3sNfIIoqC1YvEREREZHTjXPuYefc3Qtdj+Ol5C4REREREREREREREZF5kAq6WLfy2qZ1lWo/B49+e4FqJCIiIiJyWjoDuHChK3G8goWugIiIiIiIiIiIiIiIyOmip/NclnZfxsDIrWPrBkZupavjbHo6z1vAmomIiIicXiLnFroKssCccxkzKy90PY5FPXeJiIiIiIiIiIiIiIjMozXLn0k6tbxp3f7DX6VaG1mgGomIiIiInJZKzrmdzrmnLXRFZrKokrucc93OuWc0vDILXScREREREREREREREZET4XlpNqx6AY23acKowL7DX8bMFq5iIiIiIiKnn83A95xzeefcPy50ZaayqJK7gHOAbwHfTF6rF7Y6IiIiIiIiIiIiIiIiJy6XWceqpVc2rcsXH+bo0C8WpD4iIiIiIqehm4D60xUdwP/nnIuccz9xzq1awHo1WWzJXXUa+FRERERERERERERERBa1FUueSEd2c9O6vv7vUywfXKAaiYiIiJw+DNcWLzl5Zna5mXnAfwHlZLUDrgAOOef2OedetGAVTCzW5C6RU+acm/YlIiKtYTGfqxdz3UVETheL9Vy9WOstInI6Wazn6sVab5HFzDmPDauej+dlx9YZIXv7Pk8UVRewZtKqFuu5erHWW0TkdKJztZzOzOyNZpYFXgAcaNi0Dvisc67knHv/wtROyV0iIiIiIiIiIiIiIiILJhX0sm7FNU3rKtUjHDz67QWqkYiIiIhI23sP8HcTV5rZF81sHbAauIHxIRszwG8mQzbe6pzbOn9VVXKXnMbMbNqXiIi0hsV8rl7MdRcROV0s1nP1Yq23iMjpZLGeqxdrvUXaQW/XhSzpvqRp3cDILQzn71+YCknLWqzn6sVabxGR04nO1XI6MbO3mNmfzLC9z8yemAzZ+C9AMdnkgEuB7c65w865189DdZXcJSIiIiIiIiIiIiIistDWLH8W6dSypnX7D3+Fam14gWokIiIiIiJm9ntm1gE8C9jTsGkF8AHnXGWu66DkLhERERERERERERERkQXme2k2rHohjbduwqjIvr4vqccMERERkTkQOa8tXjJv7gOOTLE+NdcHDub6ACIiIiIiIiIiIiIiInJsucw6Vi27ir7+74+ty5d2cHToBlYseeIC1kxEREREFtJbvBcvdBVOW8651wDvBlYuVB2UwiciIiIiIiIiIiIiItIiVvQ+kc7s1qZ1h/qvp1jev0A1EhERERFpL865651zXz1GmY8nQy5+mOkTuyLgJ7Ncvcl1WUxd+TrnHgX8Mlk0YKuZ7V7AKski5JwzQN1Yi4gscs45AMzMLXBVmijOiIi0h1aMM4oxIiLtQTFGRI5HtTbMw3vfRxgVx9alU8s4Y/1v4XvpBayZtDLFGBERmSutGGNORT0+/Vv02YWuyqyo9+rVLr+f+dDwHcVNWH8B8BngwmPsYhR4j5n92dzUsJl67hIREREREREREREREWkhqaCHdSt/tWldpdrPgSNfU5KMiIiIyCyJcG3xklPnnPsd51w/cA8zJ3ZtA55gZt3zldgFSu4SERERERERERERERFpOT2d57O0+7KmdUOjdzEwcvMC1UhEREREpL04577onKsC7wWWTlOsCnwBSJnZOWb283mrYELJXSIiIiIiIiIiIiIiIi1ozfKryaRWNa07eOTbFEv7FqhGIiIiIiJt5XlAMM22I8BvmlnazF5oZrX5q1YzJXeJiIiIiIiIiIiIiIi0IM9LsXH1i/FcemydEbKn77PUwuIC1kxEREREpC0ZcAtwhpmtNLP/XugKgZK7REREREREREREREREWlYmvYJ1K69tWletDbGv7wuYRQtUKxERERGRtlIC/tPMPDN7tJntWOgKNZquazERERERERERERERERFpAb1dF1Io7aZ/+KaxdaPFh+gb+AGrlz1tAWsmIiIisnhFuIWugiy83cBvm9k3FroiM1HPXSIiIiIiIiIiIiIiIi1u9fJnkMtsaFp3ZPCnDI3es0A1EhERERFZ3Mxsc6sndoGSu0RERERERERERERERFqe53w2rn4xgd/ZtH7f4S9TKh9coFqJiIiIiMhcU3KXiIiIiIiIiIiIiIjIIpAKeti4+iW4hts7ZlV2HfwE1drwAtZMRERERGRReQHwnIWuxPFScpeIiIiIiIiIiIiIiMgi0ZHdxJoVz25aVwtH2H3wk4RReYFqJSIiIrL4RLi2eMmJM7MvThyO0TnX4Zz7S+fcrc65Xc65oxO2P9o5d+n81jSm5C4REREREREREREREZFFZFnPo1jW89imdaXKQfYe+jxm0QLVSkRERERk8XHOPcM5dwDIA28HLgU2AcsmFH0bcKtzruic+735rKOSu0RERERERERERERERBaZNcufSXfHOU3rRovbOHD0m5jZAtVKRERERGTxcM59Dvg2sOYE3pYF/sk5d8/c1GoyJXeJiIiIiIiIiIiIiIgsMs55rF/1QrLptU3rB4Zv5vDgjxeoViIiIiIii0OS2PXCE3jLDUBjN7kXOOcemN1aTU3JXSIiIiIiIiIiIiIiIouQ76XZtOblpPyepvWHB37IkcGfL1CtRERERERam3PuaqZO7CoBQ1O9x8z+w8x84K+Aele55zjn/nBuajlusSV3jQA/S143EP9QRURERERERERERERETkupoJtNa1+J5zJN6w/1f4f+4VsWqFYiIiIirS90ri1eclI+3jBfBf7EzJyZ5cxsyUxvNLN3AOuBMFn1l3NTxXGLKrnLzB40syc1vPoWuk4iIiIiIiIiIiIiIiILKZtexea1r8C5VNP6A0e+xsDI7QtTKRERERGRFuScywDLksVhM0ub2d+dyD7M7ADwimQx65w7dzbrONGiSu4SERERERERERERERGRyTqym9i05mU45zet33/4yxwdummBaiUiIiIi0nL+vGH+ESe7EzP7DFBOFt92SjU6BiV3iYiIiIiIiIiIiIiItIGu3BlsXPViJt7+OXj0mxwZ/NnCVEpEREREpLU8MZkOmdmuU9zXnmR66SnuZ0bBXO5cpJW5GcaeNbN5rImIiExnpnN1q1OcERFpfYs1zijGiIi0PsUYEVlI3Z3nsnH1i9h76HMY0dj6Q/3foxYWWL3s6Yv2PCWKMSIiMncWa4w5FRGn32cWAFYl032zsK/hZNo7C/ualnruEhERERERERERERERaSM9neezcc3Lca75Gf+jQzewt+9zRFF1gWomIiIiIrLg6uOYz8aX4iXJtDYL+5qWkrvktGVm075ERKQ1LOZz9WKuu4jI6WKxnqsXa71FRE4ni/VcvVjrLSJT6+44i81rXonn0k3rh/P3svPAR6jWRheoZnIqFuu5erHWW0TkdKJztZxG+pLphlnY1/pkemgW9jUtJXeJiIiIiIiIiIiIiIi0oc7cFrasfTWB39m0vljex/Z97ydf3LVANRMRERERWTA3JdPlzrlVM5acgXPuRUAmWfz+KddqBkruEhERERERERER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DBERERERERERERERERERERERkRPhHbvIrLkCuM3Mdk9Y/1bixK7/MLOtZnYh8GLAB940j/UTERERERERERERERERERERERHBxT7knNvnnCs750LnXDVZfvt81WM+k7u2AjdNsf5qoAL8aX2FmX0B+CnwpPmpmoiIiIiIiIiIiIiIiIiIiIicLgzXFi+ZUxFwHbAOSBPnWQXJ8l865yrOudfOdSXmM7lrJdDfuMI5txzYDNxoZiMTyt8GrJ+PiiU/7BN9leejbiIiIiIiIiIiIiIiIiIiIiIisqCqQBkIG9algA865743lwcO5nLnE1SBVRPWXZ5Mb56i/OjcVqdJQFy//fN4TBERERERERERERERERERERERaU1DwJ+a2X82rnTOnQt8BTgnWfU059yDZnbOxB3MhvlM7noQuNo555lZlKy7BjDghinKrwMOzFPdasTZdAPA/wIfN7PBeTq2iIiIiIiIiIiIiIiIiIiIiIi0EDNbMs36B4BznXPPBT4P+MDZzrm9ZrZhtusxn8Myfh7YCHzZOXetc+73gNcR99D1rSnKPxF4aJ7qtgH4IyAH/Duw3zn3MefcVfN0fBERERERERERERERERERERGZJxGuLV6ycMzsy8BS4h6+ANY752a9I6v5TO76V+Au4DnAF4F3A2ngr8ws31jQOfdo4Czgu/NRMTPrM7N3m9n5wJOBzwDPA77nnHvYOfdnzrlZz6wTEREREREREREREREREREREZHFycxGkh6+7k1WrXHO7Z7NY8xbcpeZFYh743oHcU9dnwCeZ2b/NEXxy4AvE49POa/M7Kdmdh2wFngjcBR4F7DDOfd159yZ810nERERERERERERERERERERERFpTWZ2IXB7srjROXfnbO3bmdls7WvWOedWmtnhY5SJADMzfw7rcQXwSWAd8Hwzm/ekM5k9zjkDaOV/+yIicmzOxd3MmllL9TerOCMi0h5aMc4oxoiItAfFGBERmSuKMSIiMldaMcacinp8+iP79kJXZVb8vXsm0D6/n8XCOZcBfoW4o6sLgS3ASmBNvcxs/U6C2djJbHPOXQ38BvEQjrkFrMeTgV8HXgh0AA8BOxeqPiIiIiIiIiIiIiIiIiIiIiIiMvecc/8GXABsBJYDXUCaeRwpEVooucs5t4k4keo6YAPggCMLUI+1SR1eC5wJlIDPA/9rZj+a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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "image/png": { + "height": 625, + "width": 1211 + }, + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "#newtonian vs synch gauge\n", + "fig, axes = plt.subplots(3,5,figsize=(18,10),sharey=True, sharex=True)\n", + "inum=0\n", + "for j in range(3):\n", + " linearratio, HM2020DM,HM2020TAGN,HM2016,Halofit,_,cosmo = allresult[zs[j]]\n", + " for i in range(len(linearratio)):\n", + "\n", + " try:\n", + " if linearratio[i]==None:\n", + " continue\n", + " except:\n", + " None\n", + " if cosmo[i]['smnu']>0.6:\n", + " continue\n", + " inum+=1\n", + " l1 = linearratio[i]\n", + " H2020 = HM2020DM[i]\n", + " HTagn = HM2020TAGN[i]\n", + " H2016 = HM2016[i]\n", + " HHalofit=Halofit[i]\n", + "\n", + " if np.max(np.abs(H2020))>0.025:\n", + " print(np.max(np.abs(H2020)),cosmo[i])\n", + "\n", + " axes[j][0].plot(k,H2020, label=\"HMcode2020 DM\", c=cmap(norm(cosmo[i]['smnu'])))\n", + " axes[j][0].set_xscale('log')\n", + " axes[j][0].set_ylabel(r'$\\frac{P_{\\rm{CLASS}}}{P_{\\rm{CAMB}}} - 1$',fontsize=20)\n", + " axes[2][0].set_xlabel(r'$k \\ h/\\rm{Mpc} $',fontsize=20)\n", + " axes[j][0].axhline(0,ls=':',c='k')\n", + " axes[0][0].set_title(\"HMcode2020 DM\")\n", + " axes[j][1].plot(k,HTagn, label=r\"HMcode2020 TAGN ($T_{\\rm{AGN}}=8.2)\", c=cmap(norm(cosmo[i]['smnu'])))\n", + " axes[j][1].set_xscale('log')\n", + " axes[2][1].set_xlabel(r'$k \\ h/\\rm{Mpc} $',fontsize=20)\n", + " axes[j][1].axhline(0,ls=':',c='k')\n", + " axes[0][1].set_title(r\"HMcode2020 $T_{\\rm{AGN}}$ ($T_{\\rm{AGN}}=8.2$)\")\n", + " axes[j][4].plot(k,l1, label=\"Linear\", c=cmap(norm(cosmo[i]['smnu'])))\n", + " axes[j][4].set_xscale('log')\n", + " axes[2][4].set_xlabel(r'$k \\ h/\\rm{Mpc} $',fontsize=20)\n", + " axes[j][4].axhline(0,ls=':',c='k')\n", + " axes[0][4].set_title(\"Linear\")\n", + " \n", + " axes[j][3].plot(k,HHalofit, label=\"Halofit\", c=cmap(norm(cosmo[i]['smnu'])))\n", + " axes[j][3].set_xscale('log')\n", + " axes[2][3].set_xlabel(r'$k \\ h/\\rm{Mpc} $',fontsize=20)\n", + " axes[j][3].axhline(0,ls=':',c='k')\n", + " axes[0][3].set_title(\"Halofit\")\n", + " \n", + " axes[j][2].plot(k,H2016, label=\"HMcode2016\", c=cmap(norm(cosmo[i]['smnu'])))\n", + " axes[j][2].set_xscale('log')\n", + " axes[2][2].set_xlabel(r'$k \\ h/\\rm{Mpc} $',fontsize=20)\n", + " axes[j][2].axhline(0,ls=':',c='k')\n", + " axes[0][2].set_title(\"HMcode2016\")\n", + " for i in range(4):\n", + " axes[j][i].set_ylim(-1E-1, 3E-2)\n", + " from matplotlib.cm import ScalarMappable\n", + " \n", + " plt.subplots_adjust(wspace=0.1,hspace=0.1)\n", + " axes[0][0].text(1E-2,2E-2,\"z={0}\".format(zs[0]), size=20)\n", + " axes[1][0].text(1E-2,2E-2,\"z={0}\".format(zs[1]), size=20)\n", + " axes[2][0].text(1E-2,2E-2,\"z={0}\".format(zs[2]), size=20)\n", + "\n", + " sm = ScalarMappable(cmap=cmap, norm = norm)\n", + " cbar_ax = fig.add_axes([0.92, 0.1, 0.02, 0.8]) # left, bottom, width, height\n", + " fig.colorbar(sm, cax=cbar_ax).set_label(r'$m_{\\nu}$(ev)', fontsize=20)\n", + "plt.savefig(\"\")" + ] + }, + { + "cell_type": "code", + "execution_count": 130, + "id": "571fe26f", + "metadata": {}, + "outputs": [], + "source": [ + "ts0,pL0,pNL0,ceng = run_class(cosmo_dict,k,z,nu=nuFlag,pk=True,gauge='synchronous')\n", + "# if ceng.sigma8()<0.616:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "fa0d9686", + "metadata": {}, + "outputs": [], + "source": [ + "ceng.sigma8()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c82f905e", + "metadata": {}, + "outputs": [], + "source": [ + "## newtonian vs synch gauge\n", + "plt.plot(k,np.array(pNL_hy0)/np.array(pNL0) - 1, label=\"NL Hy\")\n", + "plt.xscale('log')\n", + "plt.ylabel(r'$\\frac{P_{\\rm{CLASS}}}{P_{\\rm{CAMB}}} - 1$',fontsize=20)\n", + "plt.xlabel(r'$k \\ h/\\rm{Mpc} $',fontsize=20)\n", + "plt.axhline(0,ls=':',c='k')\n", + "plt.legend()" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "1883262b", + "metadata": {}, + "outputs": [ + { + "ename": "NameError", + "evalue": "name 'pCAMB_NL_Hy' is not defined", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0;31m## newtonian vs synch gauge\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mplot\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mk\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0marray\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mpCAMB_NL_Hy\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m/\u001b[0m\u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0marray\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mpCAMB_NL\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m-\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlabel\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m\"NL Hy\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 3\u001b[0m \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mxscale\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'log'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mylabel\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34mr'$\\frac{P_{\\rm{CLASS}}}{P_{\\rm{CAMB}}} - 1$'\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mfontsize\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m20\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mxlabel\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34mr'$k \\ h/\\rm{Mpc} $'\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mfontsize\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m20\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mNameError\u001b[0m: name 'pCAMB_NL_Hy' is not defined" + ] + } + ], + "source": [ + "## newtonian vs synch gauge\n", + "plt.plot(k,np.array(pCAMB_NL_Hy)/np.array(pCAMB_NL) - 1, label=\"NL Hy\")\n", + "plt.xscale('log')\n", + "plt.ylabel(r'$\\frac{P_{\\rm{CLASS}}}{P_{\\rm{CAMB}}} - 1$',fontsize=20)\n", + "plt.xlabel(r'$k \\ h/\\rm{Mpc} $',fontsize=20)\n", + "plt.axhline(0,ls=':',c='k')\n", + "plt.legend()" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "948fff24", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA14AAAInCAYAAACIgohPAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAABYlAAAWJQFJUiTwAAB/k0lEQVR4nO3dd3hcxfX/8fdRt+Tebdy7AYOxqaYYMB0CJEAoIQUSQiCVNAJffqGEJJCQQBoJpBASeg0QQu+92FTb2Ma99y6rn98fd7VarVbSrqTdq5U+r+fZZ/femTtzpGuBjmbujLk7IiIiIiIikj45YQcgIiIiIiLS0SnxEhERERERSTMlXiIiIiIiImmmxEtERERERCTNlHiJiIiIiIikmRIvERERERGRNFPiJSIiIiIikmZKvERERERERNJMiZeIiIiIiEiaKfESERERERFJMyVeIiIiIiIiaabES0REREREJM3ywg5ApC2Y2WKgO7Ak5FBEREREpOMaAWxz95GpXqjESzqK7l26dOk9ceLE3mEHIiIiIiId09y5c9m1a1eLrlXiJR3FkokTJ/aeOXNm2HGIiIiISAc1depUZs2ataQl1+oZLxERERERkTRT4iUiIiIiIpJmSrxERERERETSTImXiIiIiIhIminxEhERERERSTMlXiIiIiIiImmmxEtERERERCTNlHiJiIiIiIikmRIvERERERGRNFPiJSIiIiIikmZKvERERERERNJMiZeIiIiIiEiaKfESERERERFJMyVeWcrMhpjZP8xslZmVm9kSM7vJzHql2E7vyHVLIu2sirQ7pC37NrPdzew+M1tnZmVmNs/MrjazLqnEKyIiIiKSjfLCDkBSZ2ajgdeB/sAjwCfA/sB3gePM7GB335hEO30i7YwDngfuASYA5wEnmtlB7r6otX2b2QGR9vOBB4DlwJHAT4EZZjbD3ctb8r0QEREREckGGvHKTjcTJD7fcfdT3f0n7n4kcCMwHvh5ku38giDp+q27z4i0cypBEtU/0k+r+jazXOA2oBg43d3PcfdLgQOAB4GDgUtS+NpFRERERLKOuXvYMUgKIiNOnwJLgNHuXhNT1g1YDRjQ3913NtFOV2AdUAMMcvftMWU5wCJgeKSPRS3t28yOBJ4DXnb36XExjAIWAkuBkd6Kf4xmNnPKlClTZs6c2dImUnbjM/O5862l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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "image/png": { + "height": 275, + "width": 431 + }, + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "## newtonian vs synch gauge\n", + "plt.plot(k,pNL_hy0/pCAMB_NL_Hy - 1, label=\"NL Hy\")\n", + "plt.xscale('log')\n", + "plt.ylabel(r'$\\frac{P_{\\rm{CLASS}}}{P_{\\rm{CAMB}}} - 1$',fontsize=20)\n", + "plt.xlabel(r'$k \\ h/\\rm{Mpc} $',fontsize=20)\n", + "plt.axhline(0,ls=':',c='k')\n", + "plt.legend()" + ] + }, + { + "cell_type": "code", + "execution_count": 57, + "id": "1514940d", + "metadata": {}, + "outputs": [], + "source": [ + "cosmo_dict = {'h': 0.5472023608482062, 'Omb': 0.037629497579483036, 'Omcb': 0.30999201969016116, 'ns': 0.9961897664549515, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.6997071338107496, 'As': 4.050892283013098e-09, 'TAGN': 8.2, 'Omcdm': 0.27236252211067813}\n", + "import pyccl as ccl\n", + "\n", + "cosmo = ccl.Cosmology(\n", + " Omega_c=cosmo_dict['Omcb']-cosmo_dict['Omb'],\n", + " Omega_b=cosmo_dict['Omb'],\n", + " h=cosmo_dict['h'],\n", + " A_s=cosmo_dict['As'],\n", + " n_s=cosmo_dict['ns'],\n", + " Neff=cosmo_dict['Neff'],\n", + " Omega_k=0,\n", + " w0=-1,\n", + " wa=0,\n", + " m_nu=0.3,\n", + " #m_nu=cosmo_dict['smnu'],\n", + " transfer_function='boltzmann_class')\n", + "pk_lin_class = ccl.linear_matter_power(cosmo, k, 1)" + ] + }, + { + "cell_type": "code", + "execution_count": 58, + "id": "5b54f4c1", + "metadata": {}, + "outputs": [], + "source": [ + "import pyccl as ccl\n", + "\n", + "cosmo = ccl.Cosmology(\n", + " Omega_c=cosmo_dict['Omcb']-cosmo_dict['Omb'],\n", + " Omega_b=cosmo_dict['Omb'],\n", + " h=cosmo_dict['h'],\n", + " A_s=cosmo_dict['As'],\n", + " n_s=cosmo_dict['ns'],\n", + " Neff=cosmo_dict['Neff'],\n", + " Omega_k=0,\n", + " w0=-1,\n", + " wa=0,\n", + " m_nu=0.3,\n", + " #m_nu=cosmo_dict['smnu'],\n", + " transfer_function='boltzmann_camb')\n", + "pk_lin_camb = ccl.linear_matter_power(cosmo, k, 1)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 59, + "id": "4aac71cf", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Text(0.5, 0, 'k(Mpc/h)')" + ] + }, + "execution_count": 59, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "image/png": { + "height": 271, + "width": 439 + }, + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.semilogx(k, pk_lin_class/pk_lin_camb-1)\n", + "plt.xlim(1E-3, 1E0)\n", + "plt.ylim(-5E-3,5E-3)\n", + "plt.ylabel(\"class/camb-1\")\n", + "plt.xlabel(\"k(Mpc/h)\")" + ] + }, + { + "cell_type": "code", + "execution_count": 60, + "id": "cf0358e8", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 99, + "id": "9b828555", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 101, + "id": "8f97ece0", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 102, + "id": "43890920", + "metadata": {}, + "outputs": [], + "source": [ + "cosmo_dict={'h': 0.5472023608482062,\n", + " 'Omb': 0.037629497579483036,\n", + " 'Omcb': 0.30999201969016116,\n", + " 'ns': 0.9961897664549515,\n", + " 'Y_p': 0.24,\n", + " 'Neff': 3.046,\n", + " 'smnu': 0.6997071338107496,\n", + " 'As': 4.050892283013098e-09,\n", + " 'TAGN': 8.2,\n", + " 'Omcdm': 0.27236252211067813}" + ] + }, + { + "cell_type": "code", + "execution_count": 103, + "id": "f6fa7941", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Note: redshifts have been re-sorted (earliest first)\n" + ] + } + ], + "source": [ + "ts0,pL0,pNL0,ceng = run_class(cosmo_dict,k,0,nu=nuFlag,pk=True,gauge='synchronous')\n", + "pCAMB, pCAMB_NL, camb_results = run_camb(cosmo_dict,k,0,nu=nuFlag, darkmatter=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 104, + "id": "abdb9956", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[]" + ] + }, + "execution_count": 104, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAzAAAAH6CAYAAADY5KngAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAABYlAAAWJQFJUiTwAACaFUlEQVR4nOzddZhc1fkH8O87s+7ZeDburliAJASHUNxdC8WllNIW2lJof8VaKMXdQ9DiEEIIHuLu7slm3Xfm/P6YO7tzbWxnduz7eZ55dq7MuWfCsHvfec97jiilQERERERElAgcse4AERERERFRsBjAEBERERFRwmAAQ0RERERECYMBDBERERERJQwGMERERERElDAYwBARERERUcJgAENERERERAmDAQwRERERESUMBjBERERERJQwGMAQEREREVHCYABDREREREQJgwEMEREREREljLRYd4Dii4ioWPeBiIiIiFKHUkpCOZ8ZGCIiIiIiShjMwJAlpRIvESPiCd7bo++RvlZb2gv1tcGeH8x5gc5p6/F41d79juT12vOzFsprov15szo27p4vUFbbpDvv/esOw9heRX772t74eYvs77Zgz4305y1R8G8pP2/tydv3UDEDQ0REKae6odkUvADAmt1VMegNERGFghkYsuQvIk7ECJ+IyNf2srqQ9hMRUXjCzbL4wwwMERGlnH3VDZb791TVt3NPiIgoVMzAkCVmWYgomZXVNlru31NpHdgQEVF4gqn9CRUzMERElHLKLepfAGBPFQMYIqJ4xwCGiIhSTkWddQCzu5JDyIiI4h2HkFHSaM9hb5G+VlvaC/W1wZ4fzHmBzknWoYjt/b4ieb32/KyF8pr2/ryV1VgPIdtX3QCXW8HpiHzRabj4eYv8+fz9Zo9/SyN/Pj9vkccMDBERpZxymwyMWwGlNRxGRkQUzxjAEBFRyrGrgQl0jIiIYo8BDBERpZxym1nIAPv6GCIiig8MYIiIKOXYDSEDgApmYIiI4hoDGCIiSjmV/gIYZmCIiOIaZyEjopjhrCrUXoyftdpGl+25DGCorfi7jdpTKn7emIEhIqKUopRCTWOz7XEGMERE8Y0BDBERpZSGZjf8fWHJAIaIKL5xCBlZErFfxC0VU5VElDxqGuyzLwBQWc8AhogoUvzdU4aLGRgiIkop/upfAP8F/kREFHvMwJAlZlmIKFkF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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "image/png": { + "height": 253, + "width": 408 + }, + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.semilogx(k, pL0/pCAMB-1)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "9e3154a5", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.7" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/class/notebooks/cambvsclass.ipynb b/class/notebooks/cambvsclass.ipynb new file mode 100644 index 00000000..d82bc2cf --- /dev/null +++ b/class/notebooks/cambvsclass.ipynb @@ -0,0 +1,825 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "f42fe0e6", + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "import camb\n", + "from scipy.interpolate import interp1d\n", + "from classy import Class\n", + "\n", + "%matplotlib inline\n", + "%matplotlib inline\n", + "%config InlineBackend.figure_format = 'retina'\n", + "plt.rcParams.update({'axes.labelsize' : 20})\n", + "plt.rcParams.update({'axes.grid' : False})" + ] + }, + { + "cell_type": "markdown", + "id": "b57bd5c9", + "metadata": {}, + "source": [ + "https://github.com/xzackli/Cosmology-Notebooks/blob/master/camb_v_class_2022.ipynb" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "3572f79c", + "metadata": {}, + "outputs": [], + "source": [ + "nuFlag=True\n", + "bolt_names = ['h','Omr','Omb','Omcb','ns','Y_p','Neff','smnu','As']\n", + "h=0.55\n", + "bolt_cosmo = [h,5.042e-5*(0.7/h)**2,0.046*(0.7/h)**2,(0.224+0.046)*(0.7/h)**2,1.0,0.24,3.046,0.1,1e-10*np.exp(3.043)] #this is the choice of Planck TTTEEE in class for nu\n", + "cosmo_dict = dict(zip(bolt_names,bolt_cosmo))\n", + "# cosmo_dict['Omm'] = cosmo_dict['Omcb']+cosmo_dict['smnu']/93.14/cosmo_dict['h']**2\n", + "\n", + "k = np.logspace(-4,np.log10(20),2000)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "343c105e", + "metadata": {}, + "outputs": [], + "source": [ + "cosmo_dict={'h': 0.5222271667627512, 'Omb': 0.0602597963311839, 'Omcb': 0.27467162574577264, 'ns': 0.9280611436133656, 'Y_p': 0.24, 'Neff': 3.046, 'smnu': 0.1729944451915938, 'As': 1.0791952989168323e-09, 'TAGN': 7.2, 'Omcdm': 0.21441182941458875}" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "beb984ef", + "metadata": {}, + "outputs": [], + "source": [ + "class_ref = {\n", + " 'recombination': 'RECFAST',\n", + " 'tol_ncdm_bg':1.e-10,\n", + " # 'recfast_Nz0':100000,\n", + " 'tol_thermo_integration':1.e-5,\n", + " 'recfast_x_He0_trigger_delta':0.01,\n", + " 'recfast_x_H0_trigger_delta':0.01,\n", + " 'evolver':0,\n", + " 'k_min_tau0':0.002,\n", + " 'k_max_tau0_over_l_max':3.,\n", + " 'k_step_sub':0.015,\n", + " 'k_step_super':0.0001,\n", + " 'k_step_super_reduction':0.1,\n", + " 'start_small_k_at_tau_c_over_tau_h':0.0004,\n", + " 'start_large_k_at_tau_h_over_tau_k':0.05,\n", + " 'tight_coupling_trigger_tau_c_over_tau_h':0.005,\n", + " 'tight_coupling_trigger_tau_c_over_tau_k':0.008,\n", + " 'start_sources_at_tau_c_over_tau_h':0.006,\n", + " 'l_max_g':50,\n", + " 'l_max_pol_g':25,\n", + " 'l_max_ur':50,\n", + " 'l_max_ncdm':50,\n", + " #'tol_perturbations_integration':1.e-6,\n", + " #'perturbations_sampling_stepsize':0.01,\n", + " 'l_logstep':1.026,\n", + " 'l_linstep':25,\n", + " 'hyper_sampling_flat':12.,\n", + " 'hyper_sampling_curved_low_nu':10.,\n", + " 'hyper_sampling_curved_high_nu':10.,\n", + " 'hyper_nu_sampling_step':10.,\n", + " 'hyper_phi_min_abs':1.e-10,\n", + " 'hyper_x_tol':1.e-4,\n", + " 'hyper_flat_approximation_nu':1.e6,\n", + " 'q_linstep':0.20,\n", + " 'q_logstep_spline':20.,\n", + " 'q_logstep_trapzd':0.5,\n", + " 'q_numstep_transition':250,\n", + " 'transfer_neglect_delta_k_S_t0':100.,\n", + " 'transfer_neglect_delta_k_S_t1':100.,\n", + " 'transfer_neglect_delta_k_S_t2':100.,\n", + " 'transfer_neglect_delta_k_S_e':100.,\n", + " 'transfer_neglect_delta_k_V_t1':100.,\n", + " 'transfer_neglect_delta_k_V_t2':100.,\n", + " 'transfer_neglect_delta_k_V_e':100.,\n", + " 'transfer_neglect_delta_k_V_b':100.,\n", + " 'transfer_neglect_delta_k_T_t2':100.,\n", + " 'transfer_neglect_delta_k_T_e':100.,\n", + " 'transfer_neglect_delta_k_T_b':100.,\n", + " 'neglect_CMB_sources_below_visibility':1.e-30,\n", + " 'transfer_neglect_late_source':3000.,\n", + " 'halofit_k_per_decade':3000.,\n", + " 'l_switch_limber':40.,\n", + " 'accurate_lensing':1,\n", + " 'num_mu_minus_lmax':1000.,\n", + " 'delta_l_max':1000.,\n", + " 'nonlinear_verbose' : 2, \n", + " 'z_infinity':10\n", + "\n", + "}\n", + "\n", + "# additional precision parameters for neutrinos only\n", + "class_ref_nu = {\n", + " 'radiation_streaming_approximation':2,\n", + " 'radiation_streaming_trigger_tau_over_tau_k':240.,\n", + " 'radiation_streaming_trigger_tau_c_over_tau':100.,\n", + " 'ur_fluid_approximation':2,\n", + " 'ur_fluid_trigger_tau_over_tau_k':50.,\n", + " 'ncdm_fluid_approximation':3,\n", + " 'ncdm_fluid_trigger_tau_over_tau_k':51.,\n", + " 'tol_ncdm_synchronous':1.e-10,\n", + " 'tol_ncdm_newtonian':1.e-10,\n", + "}" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "dd878ca2", + "metadata": {}, + "outputs": [], + "source": [ + "def run_camb(cosmo_dict,k,z,nu=False, darkmatter=True, mead='mead2020'):\n", + " camb.camb.set_feedback_level(level=2)\n", + " cosmo_dict['Omcdm'] = cosmo_dict['Omcb']-cosmo_dict['Omb']\n", + " nonlinear = camb.nonlinear.Halofit()\n", + " if darkmatter:\n", + " nonlinear.set_params(halofit_version=mead)#, HMCode_logT_AGN=-20,)\n", + " else:\n", + " nonlinear.set_params(halofit_version=mead+'_feedback',HMCode_logT_AGN=cosmo_dict['TAGN'])#, HMCode_logT_AGN=-20,)\n", + " pars = camb.CAMBparams(NonLinearModel =nonlinear)\n", + " pars.set_cosmology(H0=cosmo_dict['h']*100,\n", + " ombh2=cosmo_dict['Omb']*cosmo_dict['h']**2,\n", + " omch2=cosmo_dict['Omcdm']*cosmo_dict['h']**2,\n", + " mnu=cosmo_dict['smnu'] if nuFlag else 0., \n", + " num_massive_neutrinos=1 if nuFlag else 0,\n", + "\n", + " YHe=cosmo_dict['Y_p'],\n", + " omk=0, tau=0.06) #fixed parameters, Planck neutrinos\n", + " pars.set_accuracy(AccuracyBoost=3.0, lAccuracyBoost=3.0, DoLateRadTruncation=False)\n", + " pars.InitPower.set_params(ns=cosmo_dict['ns'],\n", + " As=cosmo_dict['As'])\n", + "\n", + " pars.set_matter_power(redshifts=[z],kmax=50/cosmo_dict['h'])#, kmax=kmax/h) \n", + " pars.share_delta_neff = True \n", + "\n", + " results = camb.get_results(pars)\n", + " zmin,zmax = z,z\n", + " nz=1\n", + " camb_interp = camb.get_matter_power_interpolator(pars,zmin=zmin,zmax=zmax,nz_step=nz,nonlinear=False,kmax=50/cosmo_dict['h'])\n", + " pinterp = camb_interp.P #defaults #takes (z,k) pairs\n", + " camb_interp = camb.get_matter_power_interpolator(pars,zmin=zmin,zmax=zmax,nz_step=nz,nonlinear=True,kmax=50/cosmo_dict['h'])\n", + " pinterp_nonlinear = camb_interp.P #defaults #takes (z,k) pairs\n", + "\n", + " return pinterp(z,k), pinterp_nonlinear(z,k), results\n" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "7c0b8ea7", + "metadata": {}, + "outputs": [], + "source": [ + "#should really just make a private toolbox with these functions somewhere...\n", + "import copy\n", + "def run_class(cosmo_dict_in,k,z,nu=False,pk=False,gauge='synchronous',darkmatter=True, mead=\"HMcode2020\"):\n", + " cosmo_dict=copy.deepcopy(cosmo_dict_in)\n", + " '''Simple call to boltzmann code using input cosmology parameter vector. k in h/Mpc.'''\n", + " #setup\n", + " if('h' not in cosmo_dict.keys()):\n", + " h = cosmo_dict['H0']/100.\n", + " elif('H0' not in cosmo_dict.keys()):\n", + " cosmo_dict['H0'] = cosmo_dict['h']*100.\n", + " h = cosmo_dict['h']\n", + " if('Omcdm' not in cosmo_dict.keys()):\n", + " cosmo_dict['Omcdm'] = cosmo_dict['Omcb']-cosmo_dict['Omb']\n", + " # cosmo_dict['Omcdm'] = cosmo_dict['Omm']-cosmo_dict['Omb']\n", + " c,G = 2.99792e5,4.30071e-9 \n", + " cosmo_dict['non linear']=mead\n", + " if darkmatter:\n", + " None\n", + " else:\n", + " cosmo_dict['hmcode2020log10tagn']=7.8\n", + "\n", + "\n", + " h=cosmo_dict['h']\n", + " if(nu): \n", + " #use Planck single massive neutrino if using neutrinos\n", + " N_ncdm=1\n", + " m_ncdm=cosmo_dict['smnu']\n", + " else:\n", + " N_ncdm=0\n", + " m_ncdm=0 \n", + " \n", + " N_ur=3.046-N_ncdm\n", + " # N_ur = 3.046\n", + " print(\"Nur: {0:.3f}, Nncdm: {1:.3f}, mncdm: {2:.3f}\".format(N_ur,N_ncdm,m_ncdm))\n", + " \n", + " ceng = Class()\n", + " #gross but don't want to look up how to do it right now\n", + " if(nuFlag): \n", + " ceng.set({'h':h,\n", + " 'omega_b':cosmo_dict['Omb']*h**2,\n", + " 'omega_cdm':cosmo_dict['Omcdm']*h**2,\n", + " #'omega_r':cosmo_dict['Omr']*h**2,\n", + " 'n_s':cosmo_dict['ns'],\n", + " 'A_s':cosmo_dict['As'],\n", + " 'gauge':gauge,\n", + " 'N_ur': 2.0308,\n", + " 'N_ncdm': N_ncdm,\n", + " 'T_ncdm': 0.7133, # IMPORTANT, see page 11 of arxiv:1104.2935\n", + " 'm_ncdm': m_ncdm,\n", + " 'YHe': cosmo_dict['Y_p'],\n", + " 'ncdm_fluid_approximation':3,\n", + " 'z_reio': 7.6711,\n", + " 'non linear':cosmo_dict['non linear'],\n", + " #'z_pk': z,\n", + " 'z_max_pk':2\n", + " })\n", + " if not darkmatter:\n", + " ceng.set({'hmcode2020log10tagn':cosmo_dict['hmcode2020log10tagn']})\n", + " else: \n", + " ceng.set({'h':h,\n", + " 'omega_b':cosmo_dict['Omb']*h**2,\n", + " 'omega_cdm':cosmo_dict['Omcdm']*h**2,\n", + " #'omega_r':cosmo_dict['Omr']*h**2,\n", + " 'n_s':cosmo_dict['ns'],\n", + " 'A_s':cosmo_dict['As'],\n", + " 'gauge':gauge,\n", + " 'N_ur': N_ur,\n", + "# 'N_ncdm': N_ncdm,\n", + "# 'm_ncdm': m_ncdm,\n", + " 'YHe': cosmo_dict['Y_p'],\n", + " 'ncdm_fluid_approximation':3,\n", + " 'z_reio': 7.6711, \n", + " 'non linear':cosmo_dict['non linear'],\n", + " # 'z_pk': z+0.1,\n", + " })\n", + " if not darkmatter:\n", + " ceng.set({'hmcode2020log10tagn':cosmo_dict['hmcode2020log10tagn']})\n", + " print(m_ncdm)\n", + " print(ceng.pars)\n", + " #need lower z_max ow issues long complaint, need z Parameters at redshift z = 0.000000e+00:\n", + " ==================================\n", + " Parameters at redshift z = 1.008916e+00:\n", + " fnu: 1.805822e-02\n", + " sigd [Mpc/h]: 1.974188e+00\n", + " sigd100 [Mpc/h]: 9.949791e-01\n", + " sigma8: 2.378447e-01\n", + " sigma8 cc: 2.378447e-01\n", + " nu min: 8.755116e-01\n", + " nu max: 1.099371e+02\n", + " r_v min [Mpc/h]: 2.520156e-04\n", + " r_v max [Mpc/h]: 2.520156e+01\n", + " r_nl [Mpc/h]: 3.290248e-02\n", + " k_nl [h/Mpc]: 3.039285e+01\n", + " sigma_nl: 9.999996e-01\n", + " neff: -2.619297e+00\n", + " c min: 5.196000e+00\n", + " c max: 6.057967e+00\n", + " Dv: 2.019308e+02\n", + " dc: 1.682642e+00\n", + " g: 4.716504e-01\n", + " G: 4.908571e-01\n", + " eta: 2.161861e-01\n", + " k*: 2.406559e-01\n", + " Abary: 5.196000e+00\n", + " sigma_disp: 1.974188e+00\n", + " alpha: 5.447781e-01\n", + " kd (h/Mpc): 2.722796e-01\n", + " 2halo f: 6.986323e-02\n", + " ksize, kmin, kmax: 149, 1.984343e-07, 9.959319e+01" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "id": "d36ec6d8", + "metadata": {}, + "outputs": [], + "source": [ + "pCAMB, pCAMB_NL, camb_results = run_camb(cosmo_dict,k,z,nu=nuFlag, darkmatter=True)\n", + "#pCAMB, pCAMB_NL_Hy, camb_results = run_camb(cosmo_dict,k,z,nu=nuFlag, darkmatter=False)" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "id": "132b990f", + "metadata": {}, + "outputs": [], + "source": [ + "pCAMB, pCAMB_NL_Hy, camb_results = run_camb(cosmo_dict,k,z,nu=nuFlag, darkmatter=False)" + ] + }, + { + "cell_type": "markdown", + "id": "1772dc70", + "metadata": {}, + "source": [ + "WRITE_PARAMETERS: at this redshift\n", + " ==================================\n", + " z: 0.00000\n", + " Dv: 493.00146\n", + " dc: 1.66737\n", + " eta: 0.13674\n", + " k*: 0.06736\n", + " A: 5.19600\n", + " fdamp: 0.22779\n", + " alpha: 0.69330\n", + " GROWTH: Solving growth equation\n", + " GROWTH: ODE done\n", + " GROWTH: Unnormalised g(a=1): 0.636393249034882\n", + " GROWTH: Accumulated G(a=1): 0.864072216027356\n", + " GROWTH: Done\n", + "\n", + " LINEAR POWER: Filling linear power HM_tables\n", + " LINEAR POWER: k_min: 1.000000000000000E-003\n", + " LINEAR POWER: k_max: 100.000000000000\n", + " LINEAR POWER: nk: 512\n", + " LINEAR POWER: z of input: 0.000000000000000E+000\n", + " LINEAR POWER: Delta2_min: 6.003104760469995E-007\n", + " LINEAR POWER: Delta2_max: 18.3881964281764\n", + " LINEAR POWER: sigma_8: 0.835929213772295\n", + " LINEAR POWER: Done\n", + "\n", + " SIGTAB: Filling sigma interpolation table\n", + " SIGTAB: R_min: 9.999999747378752E-005\n", + " SIGTAB: R_max: 1000.00000000000\n", + " SIGTAB: Values: 64\n", + " SIGTAB: sigma_min: 2.533793116562932E-003\n", + " SIGTAB: sigma_max: 16.0818172377472\n", + " SIGTAB: Done\n", + "\n", + " INIT_WIGGLE: Starting\n", + " INIT_WIGGLE: kmin [h/Mpc]: 4.999999888241290E-003\n", + " INIT_WIGGLE: kmax [h/Mpc]: 5.00000000000000\n", + " INIT_WIGGLE: nk: 512\n", + " INIT_WIGGLE: Splitting into wiggle and broad-band\n", + " INIT_WIGGLE: Isolating wiggle\n", + " INIT_WIGGLE: Initialising interpolator\n", + " INIT_WIGGLE: Done\n", + " HALOMOD: Filling look-up HM_tables\n", + " HALOMOD: HM_tables being filled at redshift: 0.000000000000000E+000\n", + " HALOMOD: sigv [Mpc/h]: 7.00395290680539\n", + " HALOMOD: sigv100 [Mpc/h]: 3.60403186675978\n", + " HALOMOD: sig8(z): 0.835929213772295\n", + " HALOMOD: cold sig8(z): 0.835929213772295\n", + " HALOMOD: M_min [log10(Msun/h)]: 0.000000000000000E+000\n", + " HALOMOD: M_max [log10(Msun/h)]: 17.9999999931845\n", + " HALOMOD: m, r, nu, sig, sigf HM_tables filled\n", + " HALOMOD: rv HM_tables filled\n", + " HALOMOD: nu min: 0.113990947250776\n", + " HALOMOD: nu max: 41.9350235664729\n", + " HALOMOD: sig min: 3.976074624562467E-002\n", + " HALOMOD: sig max: 14.6271951505295\n", + " HALOMOD: R_v min [Mpc/h]: 2.362725886259391E-005\n", + " HALOMOD: R_v max [Mpc/h]: 23.6272684671526\n", + " HALOMOD: r_nl [Mpc/h]: 2.14590683514100\n", + " HALOMOD: k_nl [h/Mpc]: 0.466003455333741\n", + " HALOMOD: n_eff: -2.10839791857899\n", + " HALOMOD: c HM_tables filled\n", + " HALOMOD: c min [Msun/h]: 5.20552106893297\n", + " HALOMOD: c max [Msun/h]: 90.5349065194655\n", + " HALOMOD: Done" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a4a43b99", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "75e82d24", + "metadata": {}, + "outputs": [], + "source": [ + "pCAMB, pCAMB_NL_hmcode2016, camb_results = run_camb(cosmo_dict,k,z,nu=nuFlag, darkmatter=True, mead=\"mead2016\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "id": "047f69f5", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 38, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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ItKVKTiLv1f84xx/r7AgM8vHm/pXAbzdQj1vA5XALL9caD0peIk9Qtvb07Zf9o+R+6Xhp+kfj5e2P3Kz6wzg33gjZv8ATnfO1bfwnmKZ4R9XNfuUiIiIiEgXpuAszpxzK4HngZHAhRG3r8UbHbrPOVceuGhmE80sLNOgc64Mbx1XLk33ObvIr/85P939HreNtw5sKXCYmR0f0qcU4Pf+6e2hUxX95B+PAycAfwfOikzdH8nMpke5lmJmPwMOArYTJZ2/iIiIiEh3oYQgiXEB8CZwk5kdhRf8zMDbh2w5cFXE80v9o0VcvxI4ArjczPYD3sXbMPoEYCtNA7A2t+2cqzezs/BG0B4xs0eAtXgp8afj7Y3254g2bgeOwQuoNgBXh+xRHTDfOTc/5Pw9M1uCl/xjA95atlnA3nijed92zu2O8n5ERERERLoFBWcJ4Jxb6Y8U/RJvuuAxwCbgRuDaKGnmY9Wzw8wOAq4BTgQOBXYAdwNXO+fWd0Tbzrl3zOwAvNG1OUA+3lTGXwK/c85VRxQZ5R/7Alc38xbmh7z+I3Ag3qbXRUADXhB4K3B96AigiIiIiEh3ZG1InCfSpZnZwqlTp05duDDWHtUiIiIiIu0zbdo0Fi1atCjW9k7N0ZozERERERGRJKDgTEREREREJAkoOBMREREREUkCCs5ERERERESSgIIzERERERGRJKDgTEREREREJAkoOBMREREREUkCCs5ERERERESSgIIzERERERGRJKDgTEREREREJAkoOBMREREREUkCCs5ERERERESSgIIzERERERGRJKDgTEREREREJAkoOBMREREREUkCCs5ERERERESSgIIzERERERGRJKDgTEREREREJAkoOBMREREREUkCCs5ERERERESSgIIzERERERGRJKDgTEREREREJAkoOBMREREREUkCCs5ERERERESSgIIzERERERGRJKDgTEREREREJAkoOBMREREREUkCCs5ERERERESSgIIzERERERGRJKDgTEREREREJAkoOBMREREREUkCCs5ERERERESSgIIzERERERGRJKDgTEREREREJAkoOBMREREREUkCCs5ERERERESSgIIzERERERGRJKDgLEHMbKiZ3WVmG82s2sxWm9kNZta7jfUU+eVW+/Vs9Osd2pFtm9lkM3vYzLaaWZWZfWZm15pZdjNlDjaz/5lZsZlVmtlHZvZDM0ttpsxXzWy+mZWYWZmZvWNmZ7T+OyIiIiIi0jWlJboDPZGZjQHeBPoDTwDLgAOBS4G5ZjbLObejFfX08esZD7wM/AuYCJwFHGtmBznnVrW3bTOb4defDjwCrAOOBK4GjjKzo5xz1RFlTgAeBaqAh4Bi4Djgz8As4BtR3s9FwM3ADuCfQA1wMnCPmU1xzv2ope+JiIiIiEhXpZGzxLgNLzi6xDl3onPup865I/EClwnAda2s5zd4gdn1zrmj/HpOxAu0+vvttKttf5TrbiAHONk59y3n3E+AGXjB1yzgsogyBcBfgXrgCOfc2c65/wP2A94CTjazUyPKjAT+iBfETXfOXeicuwzYB1gJXGFmB7Xy+yIiIiIi0uUoOIszf+RqDrAauDXi9jVAOXC6meW2UE8ecLr//LyI27cAa4CjzWx0O9s+HJgEvOacezJw0TnXAPzYPz3fzCykzMlAP+Bfzrn3Q8pUAT/3T38Q0f73gEzgFufc6pAyO/GCUIDzERERERHpphScxd9s//i8H+AEOedKgQV4o1QzW6hnJpANLPDLhdbTADwX0d6etn2kf3w2sgP+lMnlwAhgdGvKAK8BFcDBZpbZyjLPRDwjIiIiItLtKDiLvwn+cXmM+yv84/hOqCfhZZxzdcAXeOsdR7eyzCa8Ub2hZpYTox9BZrYw2hcwcdOmTZgZZsa8efOalL3iiiuC9//0pz81uX/eeecF7995551N7n/rW98K3n/ggQea3D/uuOOC95966qkm94844ojg/fnz5ze5P23atOD9hQsXNrk/fvz44P3ly5v+yAYPHhy8v3Hjxib38/Pzg/dLS0ub3A/cCx8o9ZSWlgbv5efnN7m/cePG4P3Bgwc3ub98+fLg/fHjm/7nv3DhwuD9adOmNbk/f/784P0jjjiiyf2nnnoqeP+4445rcv+BBx4I3v/Wt77V5P6dd94ZvH/eeec1uf+nP/0peP+KK65ocn/evHn6b0//7em/Pf23F0b/7em/Pf231z3/21u5cmWTa62l4Cz+Cv1jSYz7geu9OqGe7lCmMMZ9EREREZEuTdkapdtxzjX9iAdvRA2YGufuiIiIiIi0ijnnEt2HHsXM/gD8CPiRc67JOKqZ3QJcCFzgnPtLM/VciJf44xbn3MVR7v8I+APw//zsinvUtpn9Gy/Bx8nOuUejlPkvcCxwjHPuGf/ae8B0vKyLTeYBmNkSYC9gsnNuqX9tG9AX6BttGwEzKwNygVznXEWs70tzzGzh1KlTp0abmiAiIiIi0hGmTZvGokWLFsUaMGiOpjXG32f+MdaasnH+MdYar/bUk/AyZpYGjALqgFWtLDMILzBbv6eBmYiIiIhIslNwFn+v+Mc5Zhb2/TezfLx9wyqAt1uo522gEpjllwutJwUvZX5oe3va9sv+cW5kB8xL0z8eL23/qtaUAQ7Dywj5ZsTG1c2V+UrEMyIiIiIi3Y6Cszhzzq0EngdG4k0hDHUt3gjRfc658sBFM5toZhMj6ikD7vOfnxdRz0V+/c/56e73uG3gVWApcJiZHR/SpxTg9/7p7S58fuwjwHbgVDObHlImC/i1fxo5ZfNuoBq4yLwNqQNlegNXBtpBRERERKSb0pqzBDBvM+g3gf7AE3jBzwxgNt70wIND112ZmQNwzllEPX38esbjjSq9i7dh9AnAVr+elRFl2tS2X2aGX386XuC1FjgKb13ZAuCoiFEwzOxE/9kq4F9AMXA8Xsr8R4BvRgR0mNnFwE3ADuAhoAZvvdtQ4E/OuR/F+p62htaciYiIiEhn05qzLsYPmKYD9+AFRlcAY4AbgZnREmLEqGcHcBBeQDPWr2cG3ijUtMjAbE/bds69AxyAF8zNAS7DS2n/S+DLkYGZX+Y/wOF4m05/HbgYqAUuB06NDMz8MjfjBXCfAN8FzgM2A2e2NzATEREREUl2GjmTHkMjZyIiIiLS2TRyJiIiIiIi0sUpOBMREREREUkCCs5ERERERESSgIIzERERERGRJKDgTEREREREJAkoOBMREREREUkCCs5ERERERESSgIIzERERERGRJKDgTEREREREJAkoOBMREREREUkC5pxLdB9E4sLMdmRnZxdNmjQp0V0RERERkW5q6dKlVFZWFjvn+rS1rIIz6THM7AugAFgdcjkFGABsARoiiuzJvWjXJ/rHZe16Ax2jufcUz/raUq41z7b0THf7WXb0z7E9dSb7zzLW8/pZtq9cZ/4s23q9u/4s21NfV/xZJsvPEXruz7K7/a6ExP0sRwK7nXOj2tyCc05f+uqxX8BgwAGDO+JetOvAQmBhot9rS+8pnvW1pVxrnm3pme72s+zon2N3/lk28/PVzzJJf5Z7cL1b/izbU19X/Fkmy8+xJ/8s9+SefpYd/6U1ZyIiIiIiIklAwZmIiIiIiEgSUHAmPV0pcK1/7Ih7zZVJBh3dvz2try3lWvNsS890t59lZ/Stu/4sk/nnCPpZtuX/vZ72s2xPffpZtk9P/Vl2t9+VkFw/y1ZRQhCRTmZmCwGcc9MS3RdpH/0suw/9LLsP/Sy7B/0cuw/9LNtHI2ciIiIiIiJJQCNnIiIiIiIiSUAjZyIiIiIiIklAwZmI/P/27jxYlqo+4Pj3J0tAVtnEpyLKrgJPFkEQARURFIO4gAqEKCQG99IqxFgiaiTuUgoqVZEUi2KIUcACoVBfCsQVefAIi6CAC4hsD1ll++WP7vH19Ju5s9+ZN/P9VHXd7jOnu38zp/re+5tz+rQkSZImgMmZJEmSJE0AkzNJkiRJmgAmZ5IkSZI0AUzOJEmSJGkCmJxJK5CIODYiMiK+PO5Y1LuIeEdEXBURfymXn0TEq8Ydl3pXXou/KNvxjog4LyKeP+641LuIeElEnBsRfyx/vx4x7pjUWUQcHRE3RcTDEXF5ROwx7pjUO6+/5ZmcSSuIiNgV+CfgqnHHor79ATgG2AHYCfgh8N2I2G6sUakfewEnA7sBLwUeAy6OiPXGGZT6siZwNfAe4KExx6IuRMTBwInAJ4EXAJcBF0TEJmMNTP3w+qvxIdTSCiAi1gF+BRwJHAdcnZnvHG9UGoaIuBs4NjO/Nu5Y1L+IWBO4FzgwM88bdzzqT0TcD7wzM/9z3LGovYj4GXBVZh5VKbsB+O/MPHZ8kWkQXn8Fe86kmoh4fUR8KSIuKYcsZUSc0WGfZ0TE1yPi1oj4a0TcHBFfjIinDCmsUyj+6PxoSMebCRPalo3zrBQRh1B8a3jZMI89jSa5LUtrUfxNvWcEx54qK0BbakCjbOOIWBXYEbiodoiLKHqyNURer/Nv5XEHIE2gDwPbA/dTDEPbeq7KEbEZxT/XGwHnANcBL6Toon9lROyemXf1G0xEHAVsDhza7zFm2ES1ZXmObYGfAKuVcb02M5cMcswZMXFtWXMisJiibTW3SW9LDW6UbbwBsBJwe+0wtwMvH9Yb0N94vc63zHRxcakswN7AFkBQ3FeSwBlz1L+wrPOuWvnny/Kv1so/UZbPtexV1t0KuAPYqrL/IuDL4/6cVoRlktqyss+qFMn2jsAJwJ3A88f9WU36MoltWTvmrcBzxv05rQjLhLfl/cAR4/6MVvRllG0MLCjLXlKr+xHg+nG/92lbRn291up4/WV6z5k0l4jYC/gRcGZmLtdzVX5DdCNwM7BZZj5ReW0t4DaKX2gbZeYDZfkGFN/8zeV3mflgOWvRqcDjlddWovgF9wSwRmb+tZ/3NmvG3ZZzxHUxcEtmvq2X9zPLJqktI+ILwCHA3pl5XZ9vaWZNUluW+3rPy5ANu43LYY0PAm/KzLMrdU+i+KJrz9G9m9k2iuu1tr/XHw5rlAa1d/nzouovIYDMvC8ifgy8AtgV+EFZfidFb0k3vgv8slZ2KnADxSxVj/QXtloYdVu28yTg7wY8hprNS1tGxInAwZiYjdK4rkvNn57aODMfiYjLgX2AsyvV9wG+PR8Bq62er1ctzwlBpMFsVf78dZvXbyh/btnPwTNzaWZeXV2AB4C7y227vodnpG0JEBH/HhF7RMSmEbFtRJxAMUzkzH6PqZbmoy1PAv4ReDNwT0RsXC5r9ntMtTQfbblmRCyMiIUU/xdtUm47Lfv86KeNPw8cERFHRsQ25RclC4CvjihGdafntvT6W57JmTSYdcqf97Z5vVG+7uhD0YDmoy03Bs4Arqf41nBnYL/MvGCAY2p589GWR1PM0PgDiqE6jeUDAxxTy5uPttwJuKJcVgeOL9c/NsAx1b2e2zgzvwW8l2KyisXAi4H9M/OWkUSobvVzvXr91TisUVrBZOZe445B/cnMI8Ydg4YjM2PcMWg4MnMRxX0wWoFk5skUD4LXCszrb3n2nEmDaXwLtE6b1xvlS0cfigZkW04P23J62JbTzzaeHrblEJicSYO5vvzZ7n6HLcqf7cZfa3LYltPDtpwetuX0s42nh205BCZn0mB+VP58RUQ0XU/ltLG7U0z5+9P5Dkw9sy2nh205PWzL6WcbTw/bcghMzqQBZOZvgIuATYF31F4+HlgDOL3V8zw0WWzL6WFbTg/bcvrZxtPDthwOH0It1UTEgcCB5ebGwL7Ab4FLyrI7M/MDlfqbAZcBGwHnANcCu1A87+PXwG6Zedd8xK5mtuX0sC2nh205/Wzj6WFbzj+TM6kmIj4KHDdHlVsyc9PaPs+kmPb1lcD6FFNqfwc4PjPvGU2k6sS2nB625fSwLaefbTw9bMv5Z3ImSZIkSRPAe84kSZIkaQKYnEmSJEnSBDA5kyRJkqQJYHImSZIkSRPA5EySJEmSJoDJmSRJkiRNAJMzSZIkSZoAJmeSJEmSNAFMziRJkiRpApicSZIkSdIEMDmTJEmSpAlgciZJkiRJE8DkTJIkSZImgMmZJEmSJE0AkzNJkoCIuDQislyWTFg8V487HknS6JmcSZJmXkQEsH2laPGYQgHmP56IWD0iHqgkg2+ovLZppby6/CEi+vo/IiKOaXPMzw7vXUnSisfkTJIk2AJYs7K9eExxNMx3PC8HnlyuPwJ8v4t9ng68tM/zHd7nfpI01UzOJEmCF9S2F48jiIr5jueAyvqizLyvy/16TrIiYifgub3uJ0mzwORMkqTlk6ErxhLFMvOWnJVDKF9dKTqvwy6PVtYPiog1ejxlNaF7tG0tSZpBJmeSJDUnQ7/PzLvHFkmhGs+tmXnnCM+1M/C0yva5HeovAh4q19cAXtftiSJiFeBNlaLzu91XkmaByZkkSc3J0OJxBVExn/FUhzRemZm/61D/L8A5le3DejjX/sAG5fpjwDd62FeSpp7JmSRppkXE04ENK0WLxxQKMJZ4XlNZ7zSkseG0yvpLy5i7UR3SeCHw5y73k6SZsPK4A5AkacxWqMlAImJ1YHdgG2Btip6s/wMuzcxHejlRRGwCbFcp6jSkseEi4HbgqRRf9B4KfKrDuZ5C871tp3cfaXciYn2Kz+YZwFrAbcAVmTnwc+siYiVgR4qZNDekGNJ5H3AzRY/jLYOeQ5JMziRJs67nyUAiYgHFkLw9K8UXA2/OzDuGHM/i8pxPB44H3gys3mK/WyPi/Zl5Vg/nqvaa3Qb8spudMvPxiPgG8L6y6DA6JGfAIcCq5fq9FEMjd+0+VIiII4BTK0V7Z+aiiNgc+ATw2so5qvtdA3wwM7vtGazuuznwYeBAYJ056t0InA18JTN/3+t5JAkc1ihJUjUZujczb5qrckS8giJhaiRmTwAfB/YdQmJWj+d+4DcRcRRwDfA2WidmAAuAb0bEW3s4VzU5+15mZg/7Voc2Pi8iduxQvzqk8ezMfLiHc7UVES+jSKgPpkViVnoucG5EnFTOTtnNcSMiPg5cC/wDcyRmpc2BY4H3dxW4JLVgz5kkadYtrKxf2a5SOazteIp/wBtfbt4FvCUzLxxRPEuAfwU+Viu7sVzfEnhebf8vRMR3MvOeuU4SEWvR3PPX7ZBGADJzcUQsAbYtiw4HLm9zri1p7iU7rVW9PmwNfJplD+y+C/gFsJQiWd2V5oTtaIrp+98710HLtj4LeH2Ll6+n+PzvpRhWugVFO3SV9EnSXOw5kyTNrIhYF3h2pWhxm3pPA35AkSg1/nb+DNhhmIlZi3g2p0jMEvga8KzM3C4zDyqX5wP7UNz/1bA28PddnO6VLEtcHqR4f72qJlmHRES7L32rvWY3AZf2ca5WTqC4t+w+4J+Bp2Xmfpn5pszck+IRAV+t7fOeiNi3w3E/RnNilsDXgedk5taZ+erMfEtmHpCZW1PMQHkkRWIoSX0zOZMkzbKFte3l7jeLiH1oHsYI8CXgJV1MOz9oPBtSPFPsNZn59lbny8yLgbd3OE4r1Sn0L87Mh9rWbO9M4PFyfSOKhK9JOYzw0ErR6T0On5zLusDDwKsy85TMbHqodWbenZn/QtHjWXVSRLT8HygidqboHW14DDg0M9/WbshreZ7/yMwXUiSMktQXkzNJ0ixrOzNiRKxU3nP0fYrEA4oemoMz8929zozYZzxZnu97HfY7v6zbMOf9UeWwvf0rRT1PlAGQmbdRTITScHiLansCz6psD2tIY8OnMvOSDnWOp7lXazNaJJKlD9E8RPHfMrPr57Fl5u2da0lSayZnkqRZVk2GHqWYdKM6jPHDLPtbeTWwc2b+1zzFA3BKlzMMPkrRw9Nwf4f6uwPrl+tJn8lZqZpsHVAOzayqJmyXZeZvBjhX3UPA5zpVKnvqPlErfku9XkRsRPOQ0NuBTw4SoCT1wuRMkjTLqsnQNZn5SJthjKcDu2Tm9fMYz2MUs0B2YwGwSmX7jx3qV4c0/nzA3p7vUPQoAqwGvLHxQkQ8meZ7t4bda3ZBZt7XuVpRl+KZcA0valFnT5p7zU4bUQ+pJLVkciZJmkkRsRrFbH8NS1oMY/wr8PbMPDwzH5zneC7MzE5JVsM2te1OSWR1Cv1Bes0o71X7dqXosMr6aykm7IDisxx2r2PXE3CU96NVZ+N8dvlg7KpdatudhktK0lCZnEmSZtW2ND9S5nU0D2O8CdgtM782pngublexhYW17bkeCbAVxdTvDT1Nod9GtUds94hozDhZHdL4vU7T+/eh1yGSN9a2N6ptb1zbvrbH40vSQEzOJEmzqn5/V/XhzncBO2Xmr8YYz0972HeHyvq9FIllO9UhjTdn5pIeztPOIqAxk2QAh0fEAuBllTrDHtIIzcMUu3FvbXvd2vb6te2lPR5fkgZiciZJmlXVZOhxinuSGtYHPjK/4SwXz1U97FtNzhZ3mKp+aEMaG8rznVEpOoxi+vyVyu07aP58VxTDmvJfkrpiciZJmlULK+vXA28ALq+UvSci3jeueLq9xy0i1gS2qBQt96y2St31gN0qRcMY0thQ7RnbjOZnhZ1VfwbZkKzdY/36IwaW1rbvrm2v2+PxJWkgJmeSpJlTPoB4u0rRFZn5APBq4JZK+Wcj4qBxxNPD7gtp/ns+11DMV7GsN+svwP/2cJ45lTNZ/rxStG5lfRRDGqFIAnuxeW37z7XtP9W26xOtSNJImZxJkmbRVsCTK9u/AsjMP1E8nHlpWf4k4MyI2I3RahlPl3aobc+V2FWHNH5/BL1ZrZKwazLzl0M+T8PO3VaMiFWA7StFN7WYoOQnte09+g1MkvphciZJmkX1yTf+ltBk5jUUMzc2EpfVgHMjYgtGp208XagmZw8D17WqFBGrAvtWioY5pLHhLJZ9bg2nj+A8DftFxFqdqxV1aR4GWU/EoOhJfKKyfXiZ1EnSvDA5kyTNojmTocz8IXBkpWh94IKI2HAc8XRQTc6WZOZjbertxbJnjj3GCCboyMy7KJ4VtkdlOXnY56lYHXh/p0oRERSPSag6s14vM+8Avlsp2hj44ADxSVJPTM4kSbOomgzdlJlL6xUy8zTg+ErRZsB5EbF6ve58xNNK+eDq6n1RcyV11Sn0f5yZ9ckvhiIzr8jMSytLr9Pd9+qYiHhxhzrH0TwE8rcUDxtv5QSaZ2n8SEQc3G0wEfHUbutKUp3JmSRpFlWTobb3d2XmR2m+j2oX4BvlBB7zHk8L29H84Oq59q0mZ0OZQn8CLKUYdnp+RBxVH4IYEU+JiJMpkrOqozPzCVoo74/7ZKVoZeCbEXFKRGzaap+IWC8i3hoRP6d5lkpJ6snKnatIkjQ9ImITYL1KUachhEcCzwT2LrcPBL4IvHtM8VR1NRlIRGwPPKtSNIr7zcbhQ8BnKIZrngKcUCZIS4EFwIuAVWv7nJiZF3Y47nHA1hT3HkLxYO2jgKMi4lrgRorZLtemeIzBliz7wvuyAd6PpBlnciZJmjX1+7vm7KnKzEfL6fR/DDy3LH5XRNySmZ+b73hqqsnZ48CSNvWqvWbXZeYNPZxjkl0LHAT8D7AGxb2B+81R/ytAx2fXZebjEfFGiiGOH6B5pNE2OMW+pBFxWKMkadb0PPlGeQ/Y/jQ/B+szEfGGccTTZt/rMvOhNvWqU+hPy5BGADLzImBH4NssP1Nkw7XAazLz6MzMNnXqx30iM48BtgW+BTzQYZfrKe5R/FRXgUtSC9Hl7yhJkrQCioiNgVsphuYB7JGZl44xpL5FxBHAqZWivTNzUeX1DYDdgWdQDHX8E8UDxq8cwrlXBXYDNgU2BFahGNp4E3BlZv5h0HNIksMaJUmabgewLDG7k9bP95oKmXkncM6Ijv0IsGgUx5akBoc1SpI03apDGs/PzMfHFokkaU72nEmSNN0uAS4v16fqfjNJmjYmZ5IkTbHM/PS4Y5AkdcdhjZIkSZI0AUzOJEmSJGkCmJxJkiRJ0gQwOZMkSZKkCeBDqCVJkiRpAthzJkmSJEkTwORMkiRJkiaAyZkkSZIkTQCTM0mSJEmaACZnkiRJkjQBTM4kSZIkaQKYnEmSJEnSBDA5kyRJkqQJYHImSZIkSRPA5EySJEmSJoDJmSRJkiRNAJMzSZIkSZoAJmeSJEmSNAFMziRJkiRpApicSZIkSdIE+H/5rOqRvFYmywAAAABJRU5ErkJggg==\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "image/png": { + "height": 279, + "width": 435 + }, + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "#newtonian vs synch gauge\n", + "plt.plot(k,pL0/pCAMB - 1, label=\"Linear\")\n", + "plt.xscale('log')\n", + "plt.ylabel(r'$\\frac{P_{\\rm{CLASS}}}{P_{\\rm{CAMB}}} - 1$',fontsize=20)\n", + "plt.xlabel(r'$k \\ h/\\rm{Mpc} $',fontsize=20)\n", + "plt.axhline(0,ls=':',c='k')\n", + "plt.legend()" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "519631be", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[]" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "image/png": { + "height": 249, + "width": 379 + }, + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.loglog(k, pNL0)" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "id": "bcba396d", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 39, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA00AAAInCAYAAABEG7KkAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAABYlAAAWJQFJUiTwAAB99UlEQVR4nO3dd3wcxfnH8c+jatmWu+Xeu00xtsF0bMDYQABTQggJNUAIEHpCAvmBIaSQhJYAIUAgCSX0XmyHYjA21YCxce+9N1my+vz+2NXpdJJO/fZO+r5fr3vtze7s7HNaS9ajmZ0x5xwiIiIiIiJSuaSgAxAREREREYlnSppERERERESiUNIkIiIiIiIShZImERERERGRKJQ0iYiIiIiIRKGkSUREREREJAolTSIiIiIiIlEoaRIREREREYlCSZOIiIiIiEgUSppERERERESiUNIkIiIiIiIShZImERERERGRKFKCDkDEzFYCbYBVAYciIiIiIk1XX2CPc65fbU9U0iTxoE1GRkaHYcOGdQg6EBERERFpmhYuXMi+ffvqdK6SJokHq4YNG9Zhzpw5QcchIiIiIk3U6NGj+eqrr1bV5Vw90yQiIiIiIhKFkiYREREREZEolDSJiIiIiIhEoaRJREREREQkCiVNIiIiIiIiUShpEhERERERiUJJk4iIiIiISBRap0kSSklJCTt27CA7O5v8/Hycc0GHJCI1YGakp6eTmZlJhw4dSErS3+xERCRxKGmShFFSUsLatWvJzc0NOhQRqSXnHHl5eeTl5ZGTk0OvXr2UOImISMJQ0iQJY8eOHeTm5pKSkkLXrl1p1aqVfukSSRAlJSXk5OSwadMmcnNz2bFjB506dQo6LBERkRrRb5ySMLKzswHo2rUrmZmZSphEEkhSUhKZmZl07doVKPt+FhERSQT6rVMSRn5+PgCtWrUKOBIRqavS79/S72cREZFEoKRJEkbppA/qYRJJXGYGoElcREQkoei3TxERiZnSpElERCSRKGkSERERERGJQkmTiIiIiIhIFJpyXEQSxqpVq+jXrx8XXHAB//rXv4IOR0REElBhcQmfrdjB+4u2sHjzHjbsymNfQTEAbTJS6NQ6nRHd2zC6T3vGDcmiRWpywBFLPFBPk0gCMrNqnw3p27cvZsaqVasq3W9mvP/++1Wef9FFF4XqTZkypQGijh/r16/nb3/7GyeeeCJ9+/YlPT2djh07MmHCBF5++eWo57755puMGzeOtm3b0rp1a8aOHcu///3vSuvOmjWLX/7ylxx88MF07tyZ9PR0+vXrxyWXXMKyZcuqvMa+ffu47bbbGDJkCC1atCArK4uzzz6bhQsX1upzTpkyJXQPzYykpCTatGlDnz59OOmkk7jrrrtYv359peeuWrUqdF7r1q2rnCLcOceAAQNCdWfMmFGrGEVEYiWvsJjHZq7gyLve58f//IzHZ61k1rLtrNyWw6Y9eWzak8eSzXuZvXw7j85cyeVPfcXo3/6PX744l5XbcoIOXwKmpEmkmUpJSeGxxx6r9NiePXt4/vnnSUlpmp3Rf/vb37j66qtZvHgx48eP5/rrr2fixInMnDmTM888k+uvv77S8x544AFOOeUU5s+fz49//GMuvfRSNmzYwIUXXsiNN95Yof6ZZ57J3XffTYsWLfjRj37Ez3/+c7p3784///lPRo4cySeffFLhnPz8fCZMmMAdd9xBmzZtuOaaazj++ON55ZVXGDNmDJ999lmtP+8xxxzDbbfdxq233spPf/pTjjrqKBYuXMivfvUrBgwYwB//+Mcqz01JSSEnJ4f//ve/lR5/7733WLFiRZP9tyIiTcOHS7Zywr0fcedbC9m8p+ZLHuQUFPP8l+s47u4Z3PTit+zKLWjEKCWe6X85kWbqe9/7Hi+//DLbt2+nY8eO5Y49/fTT5Obmcvrpp/PKK68EFGHjOeSQQ5gxYwbHHHNMuf0LFy7k0EMP5d577+VHP/oRo0ePDh1btWoVN954Ix06dODLL7+kb9++ANx6660cfPDB3H333Zx55pkcdthhoXOuu+46zjvvPLp3717uOr///e+55ZZbuOyyy5g3b165Y/fccw+zZs3irLPO4rnnngtNsf+DH/yAyZMnc/HFFzNv3rxaTb0/bty4Cr2FzjlefvllLrvsMn79618D8Ktf/arCuaNHj2b16tU8+uijXHbZZRWOP/roo6Snp3Psscfyzjvv1DgmEZFYyC0o4tbXvuPFOevK7e+cmc7J+3fjsAEd6depFa3TU3DA7txC1uzIZe66XUybv4kVfg9TiYPnvlzLe4s2c+fk/Zm0X9cAPo0EST1NIs3UpZdeSn5+Pk8++WSFY48++ii9evVi0qRJVZ6fm5vLXXfdxZgxY8jMzKR169YMGzaMq6++ms2bN5eru3HjRq688kr69u1LWloanTt35owzzmDOnDmVtp2dnc31119Pz549adGiBUOHDuWee+6hpKQkajx/+MMfGDlyJK1ataJ169YcdthhlfaQnHHGGRUSJoBhw4bxgx/8AKDCMLPHH3+c/Px8rrrqqlDCBNC+fXtuvvlmAB5++OFy59x0000VEqbS/RkZGcyfP5/t27eH9jvnQm386U9/KpcYnXbaaRx11FEsWLCADz/8sMqvQ02ZGWeeeSYvvvgiAHfccQcbN26sUC8lJYWLLrqIL7/8krlz55Y7tm3bNl599VXOPPNMOnToUO+YREQa0vpd+5j84KxyCVPbjFTuOG0EM385nimnjmDiiK4M7pJJ93YZ9GiXwfDubZi0X1dumjSU9244hud/ehhHDuwUOn/b3gIuf2oOv397IUXFVf+fJE2PkiaRZmrChAn07du3whC9OXPm8PXXX3PxxRdX2Zuxc+dODj/8cH71q1+xd+9eLr74Yn72s58xbNgwnnjiiXLP3qxcuZIxY8bw0EMPMWDAAG644QYmTpzIW2+9xeGHH86bb75Zru38/HyOO+447r33Xjp16sQ111zDMcccw29/+1uuu+66SuPZtWsXRx55JDfffDPJyclcfPHFXHDBBWzdupVzzz2X3/zmNzX+uqSmpgJUGG5W+vxXZYnkiSeeWK5Odcws1H5yctkDxsuXL2fNmjUMHjyYfv361fs6NTF+/HiOPPJI9u3bV+XzXJdccglmxqOPPlpu/7///W8KCgq49NJLGyweEZGGsHp7Dmc//AlLNu8N7TvlwO68d8MxnH9Y3xpN7mBmHNKvA09dMpZHzx9D1zYtQsce+WgFF//7S3Lyixolfok/Gp4nksCiTdCwa9euqOeaGT/5yU/4v//7Pz755JPQsLJHH32UpKQkLr74YqZPn17puVdeeSVz587l8ssv58EHHyyXXO3du5fi4uJQ+fLLL2fDhg3ceeed3HLLLaH9V1xxBUcffTQXXHABq1evpnXr1gDcfffdfPHFF5xxxhm88MILobZ/9atflRsuF+7aa6/l66+/5q677uKXv/xlaH9eXh6TJ0/m97//PWeddRYjR46M+jXZs2cPL730EmbGCSecUO7Y4sWLARg8eHCF87p160arVq1Yt24dubm5tGzZMup1XnjhBbKzszn00ENp165dja4B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EZ+ISK0oaRIRkXgSnqSsdM7tiqzgnPsPcHvYrgHAG2aWEVk3FvFUxl8QN/y5m2jJVvhU47Occ5GTHjQI59zXzrmPw161nRa8tm4ysyOrqXMb5YfyrcBbxLgyf6D8rHm3mtkPahqMmXWpaV0RkUhKmkREJJ6EJylVPj/knJtC+ed0xgLP+BM3xDyeShxA+QVxo50bnjQ1yFTjcWAX3vDJt83s0sihdGbW3swewkuawl3hnCuhEv7zV78P25UC/NfMHjGzvpWdY2YdzOxiM/uc8rMGiojUSkr1VURERBqfmfUGOoTtqm4o3CVAL2C8X54M3AdcHVA84Wo0CYSZHQj0CdvVGM8zBeFm4M94ww4fAf7gJy67gO7AYUBaxDn3O+emVdPubcBQvGfbwFuw91LgUjNbCCzDm32wDd5074Mp+wPx7Hp8HhFp5pQ0iYhIvIh8fihqz45zrtCfdnwWMNzf/XMzW+2cuzvW8UQIT5qKgXlV1AvvZVrknFtai2vEs4XAGcDLQCu8Z89OjFL/70C1a28554rN7Gy8oXo3Un7EzDA0FbmINBINzxMRkXhR60kX/GeMTqL8Oj5/NrPvBxFPFecucs7tq6Je+FTjTWVoHgDOuenAaOAlKs7cV2ohcKpz7grnnKuiTmS7Jc65m4D9geeAnGpOWYz3DNxdNQpcRKQSVsOfUSIiItKAzKwrsAFviBnAUc65jwMMqc7M7ELgibBd451zM8KOdwKOAHriDdnbhLdw8dwGuHYacDjQF+gMpOIN0VsJzHXOravvNURENDxPREQkGKdQljBto/L1iZoE59w24LVGarsAmNEYbYuIlNLwPBERkWCED8172zlXHFgkIiISlXqaREREgjETmOO/b1LPM4mINDVKmkRERALgnPtT0DGIiEjNaHieiIiIiIhIFEqaREREREREolDSJCIiIiIiEoWSJhERERERkSi0uK2IiIiIiEgU6mkSERERERGJQkmTiIiIiIhIFEqaREREREREolDSJCIiIiIiEoWSJhERERERkSiUNImIiIiIiEShpElERERERCQKJU0iIiIiIiJRKGkSERERERGJQkmTiIiIiIhIFEqaREREREREolDSJCIiIiIiEoWSJhERERERkSiUNImIiIiIiEShpElERERERCSK/wfAXcmzwQuTwQAAAABJRU5ErkJggg==\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "image/png": { + "height": 275, + "width": 422 + }, + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "#newtonian vs synch gauge\n", + "plt.plot(k,pNL0/pCAMB_NL - 1, label=\"HMcode2020 DM\")\n", + "plt.xscale('log')\n", + "plt.ylabel(r'$\\frac{P_{\\rm{CLASS}}}{P_{\\rm{CAMB}}} - 1$',fontsize=20)\n", + "plt.xlabel(r'$k \\ h/\\rm{Mpc} $',fontsize=20)\n", + "plt.axhline(0,ls=':',c='k')\n", + "plt.legend()\n", + "### newtonian vs synch gauge\n", + "#plt.plot(k,pNL_hy0/pCAMB_NL_Hy - 1, label=\"HMcode2020 TAGN\")\n", + "#plt.xscale('log')\n", + "#plt.ylabel(r'$\\frac{P_{\\rm{CLASS}}}{P_{\\rm{CAMB}}} - 1$',fontsize=20)\n", + "#plt.xlabel(r'$k \\ h/\\rm{Mpc} $',fontsize=20)\n", + "#plt.axhline(0,ls=':',c='k')\n", + "#plt.legend()\n", + "##newtonian vs synch gauge\n", + "#plt.plot(k,pL0/pCAMB - 1, label=\"Linear\")\n", + "#plt.xscale('log')\n", + "#plt.ylabel(r'$\\frac{P_{\\rm{CLASS}}}{P_{\\rm{CAMB}}} - 1$',fontsize=20)\n", + "#plt.xlabel(r'$k \\ h/\\rm{Mpc} $',fontsize=20)\n", + "#plt.axhline(0,ls=':',c='k')\n", + "#plt.legend()\n", + "#\n", + "#plt.plot(k,pNL0_HMcode2016/pCAMB_NL_hmcode2016 - 1, label=\"HMcode2016\")\n", + "#plt.xscale('log')\n", + "#plt.ylabel(r'$\\frac{P_{\\rm{CLASS}}}{P_{\\rm{CAMB}}} - 1$',fontsize=20)\n", + "#plt.xlabel(r'$k \\ h/\\rm{Mpc} $',fontsize=20)\n", + "#plt.axhline(0,ls=':',c='k')\n", + "#plt.legend()" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "fac4996d", + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA14AAAInCAYAAACIgohPAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAABYlAAAWJQFJUiTwAAB8BUlEQVR4nO3dd5xcdfX/8dfZkt4b6Z0UIJQECCSUUKWjAoqoCEgTRUD4ilgoigoqoj9FaQooVXpRihBCCwJJ6KT33jZlk002W87vj3t3d2bZMrO7M3dm9v18POYxt9+ze2eTPfv5fM7H3B0RERERERFJnbyoAxAREREREcl1SrxERERERERSTImXiIiIiIhIiinxEhERERERSTElXiIiIiIiIimmxEtERERERCTFlHiJiIiIiIikmBIvERERERGRFFPiJSIiIiIikmJKvERERERERFJMiZeIiIiIiEiKKfESERERERFJsYKoAxBpCWa2GOgCLIk4FBERERHJXUOBre4+LNkTlXhJrujSvn37HmPHju0RdSAiIiIikptmz57Njh07mnSuEi/JFUvGjh3bY+bMmVHHISIiIiI5asKECcyaNWtJU87VGC8REREREZEUU+IlIiIiIiKSYkq8REREREREUkyJl4iIiIiISIop8RIREREREUkxJV4iIiIiIiIppsRLREREREQkxZR4iYiIiIiIpJgSLxERERERkRRT4iUiIiIiIpJiSrxERERERERSTImXiIiIiIhIiinxylJmNtDM/m5mq8ys1MyWmNkfzKx7ktfpEZ63JLzOqvC6A1vy3ma2h5n9y8zWmdlOM5trZjeYWftk4hURERERyUYFUQcgyTOzEcB0oA/wNDAHOBC4DDjOzCa7+8YErtMzvM4oYCrwMDAGOBc40cwOdvdFzb23mU0Mr18IPAYsB44ErgWOMrOj3L20Kd8LEREREZFsoBav7PQXgsTn++7+RXf/kbsfCdwKjAZ+meB1fkWQdP3e3Y8Kr/NFgiSqT3ifZt3bzPKBe4AOwOnufpa7Xw1MBB4HJgNXJPG1i4iIiIhkHXP3qGOQJIQtTguAJcAId6+M2dcZWA0Y0MfdtzdwnU7AOqAS6OfuxTH78oBFwJDwHouaem8zOxJ4BXjd3Q+vFcNwYCGwFBjmzfgwmtnM8ePHj585c2ZTLyEiIiIi0qAJEyYwa9asWe4+Idlz1dUw+xwRvr8Um/gAuHuxmb0FHAscRJDw1OcgoH14neLYHe5eaWYvAheG96vqbtiUex8Zvr9QOwB3X2Rm8wha3aqSsKzx+//O44H/LU3oWLNkrpz4wYleN5nbJ37NqONM6pua4DVb9jhI/PuU3DUTPC6JiyZ8ZLbESbSf5WQk+vUneuu8PMjPy6MwzyjINwrz8yjIMwry8yjMNwry8oLtVe/5ebQrzKdjm3zat8mnY9sCOrTJp0Obqvd8OrUtoFuHNnTrUEhhvjrLiIg0hRKv7DM6fJ9Xz/75BMnPKBpOvBK5DuF1mnPvRM4ZFb4aTbzMrL4mrTGrV6+u/gXmuuuu4/rrr4874Morr+T3v/89AL/73e+48sor4/ZfeOGF3HXXXQDccccdXHjhhXH7zzrrLB566CEAHnjgAUq67MvG7buq96977AZ2LHwPgN6n/YwOIyfGnb/mwR9RuvwTAHb72q9oN3jvuP2r772MXWuDb0Hfb/2Btn1Hxu1feeeFlG9aBUD/C+6gsMeAuP0rbjubim1FAAy45D4KOveM27/s1jPwXTsAGHT5v8hr2yFu/9KbT6peHnL1c3H7KktLWP6HrwBgbdoz+IpH4/aXF29k5V++BUB+px4M/O4/4vaXFa1k1V0XAVDQvT8DLrwzbn/pmgWsue9yANrsNoJ+5/wxbv/OZR+x9qEfA9B20F70PeumuP0lC95h/eO/AKD9iAPoc/p1cfu3fzaNDc/+DoAOYw+n9yn/F7e/+IMXKHrxzwB02ucL9Dzu0rj9W999gk2v/h2Azgd8kR5Hnh+3f/ObD7DlreCz0XXy1+h2yNfj9hdNvZvi954CoPsR59HlwC/H7d/4wp/Y9uGLAPT4wvfovO9xcfvXP/NbSma/BkCvk6+i4x5T4vbrs6fPHqTvs9e5bQHdOhbSvUMbZt19DSs/fBOAS351B8ccdyJ9urRlty7t6NO5LScfdwyvvRac/+qrrzJlypS464d/OQZgxowZTJgQ/wfkUaNGMX9+8N/R3LlzGTVqVNz+/v37s3r1agBWrlxJ//794/Z37tyZbdu2Bd/LrVvp3Llz3P7YpLd2p4vi4mK6dOkCQKdOnSgujvsbJatWrWLAgOBnoV+/fqxatSpu/7x58xg9OvgvcPfdd2fevPj/BmfOnMn+++8PwPjx46ndY2PatGkccUTw987DDz+cadOmxe1/9tlnOeWUUwA46aSTePbZZ+P2P/jgg3z968Hn4Wtf+xoPPvhg3P4777yTiy4KfjYuuOAC7rwz/mfjlltu4aqrrgLgBz/4Abfcckvc/uuvv54bbrgBSM//uWeddVbc/pNPPpnnngv+vXjmmWc4+eST4/ZPmTJFnz302UvFZ2/hwqa3Eyjxyj5dw/ct9eyv2t4tBddJ1zkiIpKhikvLKS4tZ3nRDoq21dRFenTmCv695YO4Y9cvKapevu3VBbxf1p9BPTowqHt7BvWIT8BFRHKdEi/JKvX1pw1bwsanM5bLjxnFxVNGVK9//cO/8FL4R5Bbv7IvXzjhaACq/pD1xbe6M315sHz7NyYw+dC4IW8c/WIXPlobLP/jvAPYZ7/4L+fgxzqwaFOw/NjFBzNi5O5x+/e+rw1rgz+u8Z/vH0LffsFf36r+jjbitnyqGuhevWoKnWr99a3vzTXL/7vmqLh924qL2f0PwXKHNvm8fc2RcfvXrF7F+LAUS69ObeL2u8PCBfM5LPjjEoN6dODNH8Wf/9EH3Tj+vmB5dN/OPF9r//Q3C/hK8Mcn9hvcnUevPiJu/39f2MF5jwfLk0f24p5wf9X3/qnH1vH98A9yx+zRhz/9MP78B+5bzDXBH/05eZ/+3Fxr/523fcSNrwbLX91/ED/7v/j9t1ZO5w9vBcvnThrGFeF+D7/7N259kbuDBikumTKSC747Je78H616jIc/DJavPHYUZ50dv/+y+ffxzOxg+Scn7sGpp8XvP//925gafvZ+9aVxHPWFKXF/QT3rjW68E372fv+VfTlo8qFx55/yfGc+DT97t39jPHvts1/c/qMfbc+S8LN377kHMGxE/Gdv8r1tWBd+9h656GB269uPmk8e7Pvnms/eM5dOplOnms+eO4yK+ez994rD4q69bVsx4/8QLLcvzOelWvvXrlnNYeFnr0fHNtX7q778xQvnc3z42RvQvT0vXh5//icfduL08LM3sk8nHr88/nvz7nT4VvjZ23tgN+67LH7/qy9t47vhZ2/isJ785bJDif3j9XNPruHq8LM3ZXRvfvv9+PP/df8Cbgg/e8ft1Zfrv39I3P57b3+f34WfvS/tN4D/uzR+/192vcFfw8/eWQcO5pJLD6HSnbIKp7yiklvX/5tHws/eaRMGcepZ+1Fe4ZRVVFJe6dw5uzvTPqyJb9ykoezYVcH2XeXs2FXBy1PbsCy8V8c2+ZhBMqNxKyprDn5j/nreK50ft3/Nqpq/yf3z7SWsLOjHmL6dGdaro7o0ikjOUXGNLGNmvwWuAq5y91vq2P9n4LvAJe7+1wau813gz8Cf3f3SOvZfBfwW+E1YhbBJ9zazR4HTCSoaPl7HOc8BJwInuPvzjX39DXw9Kq4hIpJilZXO1p1lbCopY1PJLjaX7KJoexkbtpWydutO1hWXsm7rTtZuLWVd8U52llU2ftE6tMnPY68BXZgwpHv46kHvzm1b+KsREUmeimu0LnPD91H17K/6U3R9Y6qac510nSMiIhkoL8/CIhttGEbHBo91d7buLGd98U5Wbd7Jik07WL6phOVFJSzftIMVRSVx42Rj7aqoZNayzcxatpm73lgMwNh+XTh8VG+mjO7NhCHd1SImIllHiVf2CTudcKyZ5dVR0n0yUAL8r5Hr/A/YAUw2s851lJM/ttb9mnrvqcBPgOOAX8cGEJaTH0VQTj5uomYREcluZkbX9oV0bV/IyD6d6zxme2k5izdsZ/66Yuau2ca8tcXMXVPMys07Pnfs7NVbmb16K7e/tpBObQs4ZGQvjhzThymje9OnS7tUfzkiIs2mxCvLuPtCM3uJIDH6LvCnmN03AB2BO2Ln8DKzMeG5c2Kus83M/klQMv56ILbky/eAocCLVXN4NfXewGvAbOAwMzvF3Z8JY8oDqkZ23N6cObxERCQ7dWxbwF4DurLXgK5x2zduK2XWss3MXLqJmUuL+GD5Zsoqav6b2FZazgufruGFT9cAsNeALhw5ug9TxvRhn4HdyM9LQd1/EZFm0hivLBROZDwd6AM8TZDYTCSYZ2seMMndN8Yc7wDubrWu0zO8ziiClql3gbHAqQSTK09y94W1zknq3uE5E8PrFwKPAcuAo4D9gbeAo9y9lGbQGC8Rkdy1rbSc6Qs28Nq89Uybu77OFrEqPTq24ZCRvdhvcDf2HtiNPft3oV1hfhqjFZFc1pwxXkq8spSZDQJ+TtCFryewGngSuMHdN9U6ts7EK9zXA7gO+CLQD9gIPA9c6+4rmnvvmHP2IGgVOwLoTNC98CHgJnev/3/QBCnxEhFpHdydheu38eqc9Uyds473lhRRXln/7zIFecao3TozbkBX9hrYlXEDujKmb2clYyLSJEq8pNVT4iUi0jpt3VnGm/M3MHXOOqbNXc+GbY13oCjIM8b068yRo/twzB592WtAl7gJbUVE6qOqhiIiItIqdWlXyAnj+nHCuH5UVjqfrtrKjKVFfLRiCx8u38yiDds/d055pfPJyq18snIr/2/qAob37si3Dh7KaRMG0qmtfjUSkdTQvy4iIiKSE/LyjHEDuzJuYE2xji07yvh01RY+WbmFj1du5ZOVW1hcKxlbtH471z3zKbe+PI/vHTGSbx48hLYF6oooIi1LiZeIiIjkrK7tC5k0oheTRvSq3rZlRxnTF2zgpc/W8t/P1rKttByAzSVl3Pjv2dzz1hJ+dPwYTtq7n7ogikiLUeIlIiIirUrX9oUcP64fx4/rx7bScp6ctYI731jE8qKg1tPKzTu49KH3+efbS7n25D0+V+5eRKQpNO27iIiItFqd2hbwzYOH8soPpnD9yXvQo2Ob6n3vLini5D+/yTVPfJRQ0Q4RkYYo8RIREZFWr01BHudMHsarV03h/EOGURBOwuwOD727nCN+O407XlvI1p1lEUcqItlKiZeIiIhIqGv7Qn560h68eMVhTBndu3p7cWk5v35+DhN/+QpXP/YR7y4uorKB+cNERGrTGC8RERGRWkb07sS95x7Iq3PW8YvnPqsuS7+jrIJHZiznkRnLGdi9PV/abwBf2m8Aw3t3ijhiEcl0SrxERERE6nHEmD5MHtmLR2Ys54H/LWXOmuLqfSs27eBPUxfwp6kL2GdQNy49YiRHje2jSogiUid1NRQRERFpQJuCPL550BCev+xQHv/OJM6aOJgu7eL/dv3h8s2c/48ZnHfve6wvViEOEfk8JV4iIiIiCTAzJgzpzq++NI73fno0t39jPMfusRuF+TUtXK/OXc/xf3yDdxZtjDBSEclESrxEREREktS2IJ/j9urHnWfvz9vXHMVZEwdT1cNww7ZSvvm3d3nuo1XRBikiGUWJl4iIiEgz9OrUll99aRz/OO9AenUK5gHbVVHJpQ+9z9/fXBxxdCKSKZR4iYiIiLSAQ3fvzZOXTGZ4745AMAfYz5/7jF/++zOVnhcRJV4iIiIiLWVQjw48fvEkJgzpXr3trjcWc9kjH1BaXhFhZCISNSVeIiIiIi2oe8c2PHD+RI7dY7fqbc9+uIoz7/wfSzdujzAyEYmSEi8RERGRFtauMJ+/fmMC3zxoSPW295dt5oQ/vsH9/1uqrocirZASLxEREZEUyM8zfn7qnvz4hDEU5AUlD7fvquCnT33CV+98mwXrtkUcoYikkxIvERERkRQxMy48bARPXDKpuugGwHtLNnHCH9/g/70yn13llRFGKCLposRLREREJMX2HtiN/3z/UL57xIjq1q9dFZX8/r/zOOXPb7K8qCTiCEUk1ZR4iYiIiKRBu8J8/u8LY3j20kPYZ2DX6u1z1hRz+u3Tmb+2OMLoRCTVlHiJiIiIpNHYfl144pLJ/OykPWhTEPwqtnZrKWfd/Y5avkRymBIvERERkTTLzzO+fcgw7j3nADq2yQdgfXEp37rnXTZt3xVxdCKSCkq8RERERCIyaWQv/nbOAbTJD34lW7R+O9++7z12lmmyZZFco8RLREREJEIHDe/JrV/dFwtqbjBr2WYufeh9yitU7VAklyjxEhEREYnYiXv349qT9qhe/+9na7n2mU9x10TLIrlCiZeIiIhIBjh38jAuOnx49fqD7yzjhmc/o7JSyZdILlDiJSIiIpIhrv7CGL6034Dq9XunL+Gqxz5Ut0ORHKDES0RERCRD5OUZN5+2Nyfu3a962xOzVnLx/bNUcEMkyynxEhEREckgbQry+H9n7seZBwyq3vby7LWc/bd32bKjLMLIRKQ5lHiJiIiIZJj8POPXXx4XN+br3SVFfP3u/1G8U8mXSDZS4iUiIiKSgcyMa44fy49PGFO97ZOVW7n4/pnsKteYL5Fso8RLREREJINdeNgIfvWlcdXrby3YyHXPfBphRCLSFEq8RERERDLcWRMHc+Uxo6rXH3p3GY/OWB5hRCKSLCVeIiIiIlnge0eO5JR9+lev//SpT/h01ZYIIxKRZCjxEhEREckCZkHBjd37dAKgtLySi++fyeaSXRFHJiKJUOIlIiIikiU6ti3g9m9OoGObfACWF+3g0ofe1wTLIllAiZeIiIhIFhnRuxO3fGXf6vU35m/gNy/OjS4gEUmIEi8RERGRLHPcXn35/lG7V6/f+foinnx/RYQRiUhjlHiJiIiIZKHLj9qdo8f2qV6/+rGPmbl0U4QRiUhDlHiJiIiIZKG8POPWr+5bXWxjV0UlF/1zBis2lUQcmYjURYmXiIiISJbq3K6Qv33rALp3KARgw7ZdnH/fDLaXlkccmYjUpsRLREREJIsN7tmB278xgcJ8A2DOmmIue/gDKis94shEJJYSryxkZpPM7D9mVmRmO8zsIzO73Mzym3CtPczsX2a2zsx2mtlcM7vBzNrXcezuZna1mU01s+VmtsvM1prZ02Z2RD3XP8fMvIHXxU35HoiIiEiNicN78ssvjqtef3n2Wv762sIIIxKR2gqiDkCSY2anAo8DO4FHgCLgZOBWYDJwRhLXmghMBQqBx4DlwJHAtcBRZnaUu5fGnPIL4KvAZ8B/wnuPBk4BTjGzy9z9/9Vzu6eBD+rYPiPReEVERKR+XzlgEPPWFnP3m4sB+P1/53HwiJ6MH9w94shEBJR4ZRUz6wLcBVQAU9x9Rrj9ZwQJ1Olmdqa7P5zAtfKBe4AOwKnu/ky4PQ/4F3AacAVwU8xpLwA3u/v7ta51OPBf4Ldm9qi7r67jlk+5+73JfL0iIiKSnB8dP4ZZyzYxa9lmKiqd7z/0Pv+57FC6tCuMOjSRVk9dDbPL6UBv4OGqpAvA3XcCPw1Xv5PgtQ4HxgKvVyVd4bUqgR+GqxebmcXsu7d20hVufw2YBrQBJiX81YiIiEiLKsjP449n7kfndsHf1lds2sGPn/gYd433EomaEq/scmT4/kId+14HSoBJZta2Oddy90XAPGAIMDzB2MrC9/rKKO0bjkP7kZl908wGJnhdERERScKgHh246ct7V68/99FqHp2pyZVFoqauhtlldPg+r/YOdy83s8XAngTJ0uymXis0HxgVvhocnWtmQ4CjCBK/1+s57LJa6xVmdjdwedhilxAzm1nPrjGJXkNERCTXnbh3P96YP4iH31sOwHVPf8qEId0Z0btTxJGJtF5q8couXcP3LfXsr9reLV3XClvXHgDaAte7+6ZahywGLiVI9DoC/YGvAEuAi4C/JxCriIiIJOnak/dgRO+OAOwoq+DSB9+ntLwi4qhEWi8lXmlmZksaKa9e+3V/1DHXJyzQ8U+CaoqPAL+rfYy7v+buf3b3ee5e4u6r3f1R4AhgE/A1M9sn0Xu6+4S6XsCclvmqREREckOHNgX86WvjaVMQ/Lr32eqt3Pz83IijEmm9lHil30JgbhKvVTHnVrVCdaVuVds3JxBHs64VJl33E5Sv/xfwDU9i5K67LycoSQ9wWKLniYiISOL26N+Fn5wwtnr9728tZuqctRFGJNJ6aYxXmrn7Uc04fS6wP8G4q7ixTmZWAAwjKG6xKMFrEV6rLruH758bA2ZmhQTdC88AHgTOdvem9F1YH753bMK5IiIikoCzDx7CG/PX8/LsdQBc9ehHvHDZofTp0i7iyERaF7V4ZZep4ftxdew7jGBOrum1Jj1O+lpmNpwgIVtKrSTOzNoAjxIkXf8AvtnEpAtgYvieSKIoIiIiTWBm/Ob0fditS1D0uGj7Lq5RiXmRtFPilV0eAzYAZ5rZ/lUbzawdcGO4+tfYE8ysg5mNMbPBta71GkHlw8PM7JSY4/OAm8PV22O7D4aFNJ4ETgX+BpwbzvtVr9g4Y+9hZtcAB4dfT13l8UVERKSF9OjYhlu/sm/1+itz1qnEvEiaqathFnH3rWZ2AUECNs3MHgaKgFMIqgY+RlDkItaBwKsEidaUmGtVmNm5BC1fj5nZY8AygrLw+wNvAbfWutbtwAkEydJK4NqY+ZWrTHP3aTHr75nZJ8CH4TldCYpx7EVQfv7r7r41qW+EiIiIJG3SyF6cM2ko905fAsDPn/2MySN7MaBb+2gDE2kllHhlGXd/yswOB34CnAa0AxYAPwD+X5IFLt4xswOAG4Bjgc4E3Qt/DtxUR5fFYeF7L+DaBi49LWb5dwTJ35FAD6CSIMG7Dfh9OFmziIiIpMHVx43htXnrWbxhO9tKy7n6sY/4x3kHkpf3uT+kikgLU+KVhdz9LYKWp0SOnQbU+6+pu39GMF4rkWtNSeS4Wuf8X7LniIiISGq0b5PP787YmzNuf5tKhzcXbOCBd5byzYOHRh2aSM7TGC8RERGRVmTCkB5ccNjw6vVfPz+H5UUlEUYk0joo8RIRERFpZa44ehS79+kEQMmuCq5+/CNVORRJMSVeIiIiIq1Mu8J8fnvGPlQN7Zq+cCMPvrss2qBEcpwSLxEREZFWaN9B3eK6HP7q37NZsUldDkVSRYmXiIiISCt1xdGjGN67IwDbd1VoYmWRFFLiJSIiItJKtSvM57en70PVtJxvzN/Av2YsjzYokRylxEtERESkFZswpDvfnjysev3G52azesuOCCMSyU1KvERERERauSuPHc3Qnh0AKC4tV5dDkRRQ4iUiIiLSyrVvk89vYrocTpu7nsdnrYw2KJEco8RLRERERDhwWA++dfDQ6vWfP/sp64p3RheQSI5R4iUiIiIiAPzwuNEM7hF0Ody6s5yfP/tZxBGJ5A4lXiIiIiICQIc2Bfz6y+Oq15/7aDWvzl0XYUQiuUOJl4iIiIhUmzyyF1/eb0D1+k+f/ISSXeURRiSSG5R4iYiIiEicn5w4lm4dCgFYuXkHf3x5fsQRiWQ/JV4iIiIiEqdnp7b8+ISx1et3v7mYT1dtiTAikeynxEtEREREPueMCQOZOKwHABWVzo+f+JiKSs3tJdJUSrxERERE5HPMjF99eRxt8oNfFz9csYX7/7c04qhEspcSLxERERGp04jenbjkiBHV6799cS5rtmhuL5GmUOIlIiIiIvX6zpQRjOjdEYBtpeVc98wnEUckkp2UeImIiIhIvdoW5POrL9XM7fXip2t5ZfbaCCMSyU5KvERERESkQROH9+Qr+w+sXr/h2c/YWVYRYUQi2UeJl4iIiIg06urjxtC1fTC317KiEu54bVHEEYlkFyVeIiIiItKonp3actUXRlev/2XaApYXlUQYkUh2UeIlIiIiIgk568DB7DWgCwCl5ZX8/LnPIo5IJHso8RIRERGRhOTnGTecslf1+n8/W8urc9ZFGJFI9lDiJSIiIiIJmzCke1yhjeuf/VSFNkQSoMRLRERERJJy9XFj6NKuAIClG0u463UV2hBpjBIvEREREUlK7UIbt01bwIpNKrQh0hAlXiIiIiKStK9PHMIe/YJCGzvLKrnxudkRRySS2ZR4iYiIiEjS8vOMX3xxz+r1Fz5dw/8WbYwwIpHMpsRLRERERJpkwpAefHHf/tXrv3juMyoqPcKIRDKXEi8RERERabIfHjeGdoXBr5SfrtrK4zNXRByRSGZS4iUiIiIiTda/W3suOmxE9fpvXpzLttLyCCMSyUxKvERERESkWS46fDh9u7QDYMO2Uv7y6oKIIxLJPEq8RERERKRZOrQp4Orja8rL3/3mYpYXqby8SCwlXiIiIiLSbKfuM4B9BnUDYFd5JTc9PyfagEQyjBIvEREREWm2vDzjupP3qF7/98ereXdxUYQRiWQWJV4iIiIi0iLGD+7OqTHl5X/+3KdUqry8CKDES0RERERa0NXHjaFtQfAr5icrt/Lcx6sjjkgkMyjxEhEREZEW079be847ZFj1+u9enMuu8soIIxLJDEq8RERERKRFXXz4CLp1KARgWVEJD7yzNOKIRKKnxEtEREREWlTX9oV874iR1et/mrqA4p1lEUYkEj0lXiIiIiLS4r558BAGdGsPQNH2Xdz5+qKIIxKJlhIvEREREWlxbQvyufLYUdXrd7+xmHVbd0YYkUi0lHhlITObZGb/MbMiM9thZh+Z2eVmlt+Ea+1hZv8ys3VmttPM5prZDWbWvo5jh5qZN/B6uIH7fMvM3jWzbWa2xcymmdlJycYrIiIi2eOL+w5gbL8uAOwoq+APr8yPOCKR6BREHYAkx8xOBR4HdgKPAEXAycCtwGTgjCSuNRGYChQCjwHLgSOBa4GjzOwody+t49QPgafq2P5JPff5HXAlsAK4C2gDnAk8a2aXuvufE41ZREREskdenvGj48fwrb+/C8Aj7y3n24cMY0TvThFHJpJ+SryyiJl1IUhcKoAp7j4j3P4zggTqdDM7093rbXmKuVY+cA/QATjV3Z8Jt+cB/wJOA64Abqrj9A/c/foEY55EkHQtBA5w903h9t8CM4Hfmdlz7r4kkeuJiIhIdjls915MGtGT6Qs3UlHp3Prfefz5rPFRhyWSdupqmF1OB3oDD1clXQDuvhP4abj6nQSvdTgwFni9KukKr1UJ/DBcvdjMrJkxXxy+/7Iq6QrvswS4DWgLnNvMe4iIiEiGMjOuPm5M9fpzH61mzpqtEUYkEg0lXtnlyPD9hTr2vQ6UAJPMrG1zruXui4B5wBBgeB3n9jezi8zsx+H73k2M+flax4iIiEgO2mdQN44e26d6/db/zoswGpFoqKthdhkdvn/uXyt3LzezxcCeBMnS7KZeKzQfGBW+Ftbad0z4qmZm04BvufuymG0dgQHANndfXc89CO+REDObWc+uMfVsFxERkQxwxTGjeHn2OgBe/HQtn6zcwl4DukYclUj6qMUru1T967Slnv1V27ul6FolwC+ACUD38HU48CowBXglTLZSEa+IiIhksT37d+X4vfpWr/9erV7SyijxSjMzW9JISfbar/ujjrmKu69z92vdfZa7bw5frwPHAu8AI4HzUxzDhLpewJxU3ldERESa74pjRlE1enzqnHXMWrap4RNEcogSr/RbCMxN4rUq5tyqFqL62uWrtm9OII4Wu5a7lwN3h6uHpeIeIiIikv1G7daZk/fuX72usV7SmmiMV5q5+1HNOH0usD/BmKi4sU5mVgAMA8qBRQleC+ofX7V7+J7ov4jrw/fqrobuvt3MVgIDzKxfHeO8kr2HiIiIZLnLjt6d5z5aRaXDG/M38O7iIg4c1iPqsERSLmdbvMxsNzObGr5eiTqeFjI1fD+ujn2HEczJNb2eSY8TvpaZDSdIyJaSWBIHcFD4Xvv4hmI+vtYxIiIikuNG9O7El/YbWL3+h5f191dpHXI28QLaERR8qHrlgseADcCZZrZ/1UYzawfcGK7+NfYEM+tgZmPMbHCta71GUPnwMDM7Jeb4PODmcPV2d/eYfePD/XHM7CiCyZYBao9Juz18/4mZdY85ZyjwXaCUYCJnERERaSUuO2p38vOCwV7TF27UWC9pFXI58co57r4VuADIB6aZ2d1m9hvgA+BggsTskVqnHUiQYP2j1rUqCCYuLgEeM7MHzewmgiIZpwNvAbfWutbvgeVm9qiZ3Rq+XgFeJpgI+WfuPr3WfaaH540APgrPuQ2YAfQArgonUxYREZFWYnDPDpy6b81Yr9umLogwGpH0UOKVZdz9KYIS7q8DpwGXAmXAD4AzY1uoErjWO8ABwNMElQmvICh48XPgmDq6LP4TeD885wLgEoJxWv8CDnP3G6mDu19JkOStAS4EzgY+BU529z8nGq+IiIjkjkumjKyucPjKnHV8uqq+2WdEcoOKa2Qhd38LOCHBY6cB1sD+z4AzErzW34C/JXJsHefeC9zblHNFREQk94zs04nj9+rLfz5eA8BfXl3IbV8fH3FUIqmjFi8RERERicQlU0ZWL//nk9UsWLctwmhEUivtLV5mdnaabtUrTfcRERERkSbYa0BXjhjdm1fnrscd/jptIbd8ZZ+owxJJiSi6Gt4LJDwOqZmcBrrZiYiIiEi0vnfk7rw6N5gO9KkPVnL50bszqEeHiKMSaXlRdjW0NLxEREREJINNGNKdg4f3BKCi0rnj9YURRySSGlEmXulq9RIRERGRDPa9I2vGej06YwVF23dFGI1IakTR1XAXUBgur6CJVfIS0A24LEXXFhEREZEWMmlET/bs34VPV22ltLyS+/+3lO8ftXvUYYm0qCgSr4+A/cPlTu5+QypuYmZDUOIlIiIikvHMjAsPG85lD38AwD/eXsKFhw2nXWF+tIGJtKAouhq+F7Pc1cz05wwRERGRVu6Ecf3o17UdABu27eKp91dGHJFIy4o68QI4IIIYRERERCSDFObncd7kYdXrd72xiMpKlQSQ3BFF4vVu+F71k6TES0RERET46oGD6NQ2GAmzcP12ps1bF3FEIi0nisRrNhA7LXmqEy/9qUREREQkC3RpV8jXDhxUvX7X64sjjEYy1YJ1xSxYt42N20qpyKJW0bQnXu7uwExq5tra18xSGYfm8xIRERHJEudMHkZ+XvDr29uLNvLJyi0RRySZ5ponPubo37/GhBtf5t3FRVGHk7Co5vH6M/DH8HUX0L2lb+DuS909L3ypJI6IiIhIFhjQrT0njutXvX7f9CXRBSMZKXaetx4d20QYSXIiSbzc/XF3vyLmtTGKOEREREQk85w7eWj18tMfrmKTJlSWGJtLyqqXu3csbODIzBJVi5eIiIiISJ32HdSNvQd2BWBXeSWPzFgecUSSKSornU0lNYl4t/Zq8RIRERERaRIz4+yDh1av//PtpVlVREFSZ+vOMqo+Cp3bFtCmIHvSmeyJVERERERajZP27kf3DkE3spWbdzB1jkrLC2yK6WbYLYu6GYISLxERERHJQO0K8znzwMHV6/94e0l0wUjGiCus0SF7uhmCEi8RERERyVBfnziYsLI8b8zfwIJ12xo+QXLe5tjxXUq8RERERESab2D3Dhw9drfq9fv/tzTCaCQTZGspeVDiJSIiIiIZ7FuThlYvPzZzBdtLy6MLRiIXW0q+WweN8RIRERERaRGTRvRkeO+OAGwrLeffH62OOCKJUlGJxniJiIiIiLQ4M+NrB9QU2Xj4vWURRiNRi51Mu5u6GoqIiIiItJwvjx9AYX5QZWPWss3MW1sccUQSlU1q8RIRERERSY2endpy7B59q9cfeletXq3Vpu01Y7y6a4yXiIiIiEjLOvPAQdXLT76/kp1lFRFGI1HZuL20erlHJ7V4iYiIiIi0qMkjejGwe3sgqGz34qdrIo5IoqBy8iIiIiIiKZSXZ3x1/5pWL3U3bH0qKp3NO2K7GirxShkz62xmx8a82kYdk4iIiIikxxn7DyIvqLHB/xYVsXjD9mgDkrTaVLIL92C5a/tCCvOzKpXJrsQLGAW8ADwfvnZr+HARERERyRV9u7bjyDF9qtefmLUiwmgk3WK7GfbMsm6GkH2JVxWLOgARERERSb/TJ9R0N3xi1koqKz3CaCSdNm7L3vFdkL2Jl4iIiIi0QkeM6U23sIz4ys07eGdxUcQRSbpkc2ENUOIlIiIiIlmkbUE+J+/dv3pd3Q1bj6KYUvI9s6yUPCjxEhEREZEs8+XxA6qX//Pxanbs0pxercFGtXiJiIiIiKTPvoO6Mbx3RwC276rgpc80p1drEN/VMPuKmyvxEhEREZGsYmacNn5g9frjs1ZGGI2ky0ZVNRQRERERSa8v7lfT3fDN+etZu3VnhNFIOhSpqqGIiIiISHoN6Naeg4f3BKDS4cn31eqV61TVUEREREQkArFFNp7+YFWEkUg6xHU1VFVDEREREZH0OG6vvrQpCH6dnb16KwvWbYs4IkkVd2dTiVq8RERERETSrnO7Qo4c3ad6/bmP1OqVq7buKKei0gHo1LaAtgX5EUeUPCVeIiIiIpK1Tt6nZjLlZz9chbtHGI2kysaYyZOzsbULlHiJiIiISBY7ckwfOrQJWj8Wrt/OnDXFEUckqZDthTVAiZeIiIiIZLH2bfI5euxu1evPfqjuhrko2+fwAiVeWcnMJpnZf8ysyMx2mNlHZna5mSXd2dXM9jCzf5nZOjPbaWZzzewGM2tfx7H3mpk38nql1jnnNHL8xc35XoiIiIjEdTf8SN0Nc1EutHgVRB2AJMfMTgUeB3YCjwBFwMnArcBk4IwkrjURmAoUAo8By4EjgWuBo8zsKHcvjTnlKWBJPZf7JjAceL6e/U8DH9SxfUai8YqIiIjU5bBRvejcroDineUsL9rBhyu2sO+gblGHJS0oLvHKwlLyoMQrq5hZF+AuoAKY4u4zwu0/I0igTjezM9394QSulQ/cA3QATnX3Z8LtecC/gNOAK4Cbqs5x96cIkq/a1+oG/BDYBdxbzy2fcvf69omIiIg0WduCfL6wZ18em7kCgOc+XKXEK8ds3KauhpJepwO9gYerki4Ad98J/DRc/U6C1zocGAu8XpV0hdeqJEiiAC42M0vgWt8E2gNPuPuGBO8vIiIi0mJiuxs+99FqKivV3TCXFMVVNWwbYSRNpxav7HJk+P5CHfteB0qASWbWtlYXwaSu5e6LzGweMIqg++DCRq51Qfh+ZwPH7GtmlwPtgJXAq+6+opHrfo6Zzaxn15hkryUiIiK5Y9KInvTo2Iai7btYs3UnH6zYzPjB3aMOS1rIxrgxXoURRtJ0avHKLqPD93m1d7h7ObCYIJke3pxrheaH76MauoiZHQyMA+a5+6sNHHoZwTi0XwP/AJaY2e1m1i6BWEVEREQaVJifxzEx1Q1f/GRNhNFIS4svrpGdLV5KvLJL1/B9Sz37q7Z3S+O1Lgzf76pn/2LgUoJEryPQH/gKQZGOi4C/Nx5qDXefUNcLmJPMdURERCT3HLdX3+rlFz5do+qGOaRI5eQlWWa2JIGS7LGv+6OOuT5m1pUgiaq3qIa7v+buf3b3ee5e4u6r3f1R4AhgE/A1M9snbUGLiIhIzpo0sied2gYjaZZuLNFkyjnC3Wt1NczOxEtjvNJvIUEp+ETFzgJY1QrVta4DY7ZvTuC6LXGtbxBURXw42aIa7r7czP4DfB04DPgwmfNFREREamtbkM+RY/rwTDiJ8gufrGFsvy4RRyXNtX1XBbvKKwFoW5BHhzZJT12bEbIt8SoG3opZTyaByQjuflQzTp8L7E8w7iquyISZFQDDgHJgUYLXgvrHcO0evtc3BgxqimrckcD96rI+fO/YxPNFRERE4nxhz77VideLn67himMaHK4uWaCoVin5xIpuZ56s6moYdlc7NOa1LuqY0mxq+H5cHfsOI2h9mp5ARcMGr2VmwwkSsqXUk8SFky/vQ1BUY1oC96vLxPA9kURRREREpFFTRvemTUHwK+6cNcUs3rA94oikuTbElJLv2Sk7C2tAliVewmPABuBMM9u/amNYGfDGcPWvsSeYWQczG2Nmg2td6zVgNnCYmZ0Sc3wecHO4ervXPyq1qqhGQyXkiY0z9h5mdg1wcPj11FUeX0RERCRpHdsWcNjuvavXX/xU1Q2z3YbimsSrV6fsHN8FSryyirtvJejelw9MM7O7zew3wAcEScxjwCO1TjuQIMH6R61rVQDnEsz99ZiZPWhmNwHvEEzU/BZB+ffPMbMuwFeBUuC+RsJ+z8w+NrP7zexmM7udYDzXr8J7fz38ukRERERaRGx1QyVe2W9DTFfDXmrxknRx96eAwwkmTD6NoFR7GfAD4MwGWqjqutY7wAHA08CxwBUERTV+DhzTQJfFrxOMy3oygaIavwOKCCZsvgw4GygEbgPGuftLicYrIiIikoijx/YhPy8YB/T+ss2s2ZJ1ZQEkxoZtMS1enbM38cq24hoCuPtbwAkJHjsNqHcEort/BpyR5P3/Sq0ujQ0c+3/JXFtERESkubp1aMPBw3vy5oLg78P//WwN3zx4aLRBSZPFJV5q8RIRERERyRzH7rlb9fIrc1pbPbbcEp94aYyXiIiIiEjGOGJ0n+rl6Qs3UrKrPMJopDk2FNeM8eqtFi8RERERkcwxqEcHRu/WGYBd5ZW8Ob+xYemSqXJljJcSLxERERHJSUeNrWn1emW2uhtmq/Ua4yUiIiIikrliE6+pc9dRWZlw8WfJEDvLKijeGXQTzc8zurUvjDiiplPiJSIiIiI5ad9B3enRMSjGsL64lE9WbYk4IknWxu0147t6dmxDXl69xboznhIvEREREclJ+XnGlNG9q9dfVnfDrLOhODe6GYISLxERERHJYUeNqSkrP3XO2ggjkabIlcIaoMRLRERERHLYoaN6URB2T/tk5VbWbNkZcUSSjPXFuTGHFyjxEhEREZEc1qVdIROH96hen6rJlLNKbItXNs/hBTmQeJlZpZlpRjwRERERqdOR6m6YtTZsqymuoTFemSF7y5uIiIiISEodOaamrPz0hRvZVV4ZYTSSjLg5vDqrq6GIiIiISMYa1qsjg3t0AKBkVwUzlhZFHJEkKraqYe9O7SKMpPkyJvEyswIz2y98Ze/MaCIiIiKScQ4fVVNW/rV56yOMRJKxQS1eyTOzYWZ2npmNqmPfKcBKYEb4Wm1mX0lXbCIiIiKS2+ISr7lKvLKFxng1zQXAnUBcDU8zGw08AvQGlgFzgO7AA2a2XxrjExEREZEcdfCInhTmB2UB5qwpZu1WlZXPdLvKK9myowyAPIPuHdTilahDgPfdfVmt7ZcDbYHb3H2Yu+8JnAHkA99LY3wiIiIikqM6ti1g/yE1ZeVfV3fDjLdxe003wx4d25Kfl9319NKZeA0D3q1j+3HALuDHVRvc/QngTeDQ9IQGZtbRzL5lZlea2eEx2w8wsxfNrMjMNpvZ02Y2Nl1xiYiIiEjLOEzjvLLKhuLYbobZ3doF6U28egNxJWTMrCcwBHjH3YtrHf8+MCAdgZlZD2Am8HfgN8BUM7vRzPYBXgWOAboBXYCTgdfNbGA6YhMRERGRlhE7zuvNBRuoqPQIo5HGxE2e3Dm7x3dBehOvMqBPrW0Tw/cZdRy/LbXhxLkaGAXMAm4lSPquBG4E1hEkXl0IksT/B/QMzxERERGRLDG2X+fqX+A3l5Tx0YrN0QYkDVpXXDMOr3eWF9aA9CZe84DjzCz2nicBDkyv4/j+wOp0BEbQirUIONjdrwIOApYDJwCXuvsr7r7N3Ze7++UECdoX0hSbiIiIiLQAM+Ow3dXdMFus2xrT4tVFiVcyHgcGAU+b2Slm9gPgPIKWrRfqOH4ysCBNsQ0FXnD3coDw/aVwX11J4VuAuhqKiIiIZJnDR9ckXiqwkdnWxUyevFvn7J48GaAgjff6A/BV4ESCliQAA37i7ttjDzSz/YGRwB1piq0dUPsnbwOAu2+q4/gigkqMIiIiIpJFDh3ZCzNwhw+Wb2ZLSRldOxRGHZbUIbbkfx+1eCXO3UsIWrGuI2jhehD4orvfUsfh44GngWfSFR9Bl8eG1kVEREQky3Xv2Ia9B3QFoNLh7UUbI45I6hPb4tVHLV7JcfdtwC8SOO5OgsmWRURERERa1KSRvfhwxRYA3lqwgeP26htxRFKX9XGJV/a3eKU18cpwZ5vZITHrwwHM7KU6jh2enpBEREREpKUdMrIXf522EIC3Fm6IOBqpi7vHJ1450NUwYxIvMysAxoWrn7h7WZpDGE7dCdXR9RyvrogiIiIiWWjCkO60KchjV3kli9ZvZ82WnfTtmv1d2XLJ5pIydlVUAtC5bQEd2mRM2tJkafsKzGwYcATwprvPq7XvFOAuoFe4aZOZXeLu/0pTeMPSdB8RERERiVi7wnz2H9Kd6QuD8V1vLdjAaRNUsDqTrI2dwysHWrsgvS1eFwA/pFarkpmNBh4hqBK4FCgBxgAPmNl8d38/1YG5+9JU30NEREREMsfkkb2UeGWw2Dm8cmF8F6R3Hq9DgPfdfVmt7ZcTJF23ufswd98TOAPIB76XxvhEREREpJWYPLJX9fJbCzfgrlEkmSTXKhpCehOvYcC7dWw/DtgF/Lhqg7s/AbwJHJqe0ERERESkNRk3oCud2wWdv9ZuLWXh+u2NnCHptC6mq6FavJLXm2Di4Wpm1hMYArzj7sW1jn8fGJCOwMxsVxNepY1fWUREREQyUX6ecdDwntXr01XdMKPEdjXcrYtavJJVBvSptW1i+D6jjuO3pTacOAUEVQpXJvFalcb4RERERKSFTR5Rk3i9tUCJVybJtVLykN7iGvOA48wsz90rw20nESQ80+s4vj+wOk2xlQOFwCbgb8AD7r45TfcWERERkQgcsnvNOK+3F26kotLJz7MII5Iqa7fGVDVUV8OkPQ4MAp42s1PM7AfAeQQtWy/UcfxkYEGaYhsIXA20B/4ErDKz+83siDTdX0RERETSbETvTtXjh7buLOeTlVsijkiqqLhG8/wB+Bg4EXgS+C3QBvi5u8eNZjSz/YGRwH/TEZi7r3P337r7WOAw4F/AF4GXzWyhmf3EzFRjVERERCSHmNnnqhtK9Nw9vrhGjnQ1TFvi5e4lBK1Y1xG0cD0IfNHdb6nj8PHA08Az6Yqviru/6e7nAP2AS4CNwC+AxWb2bzMbke6YRERERCQ1YhOv6Qs2RhiJVCkuLWdnWTAyqX1hPp3bpnN0VOqk9atw920ESUxjx90J3GlmvVMfVb0xFAN3AHeY2SHAQwSl7/cEFkYVl4iIiIi0nEkxBTZmLt3ErvJK2hSks1OY1BY3eXKXtpjlxri7jPxUmdlxZvYYUHuy5XTHcZiZ3UfQQjeAIOFaEmVMIiIiItJy+ndrz6Ae7QHYUVbBxys3RxuQsG5r7s3hBRmUeJnZYDO7wcyWAv8GvgzUntsrHXH0M7NrzGwe8CpwOvAEcIS7j3L3j9Idk4iIiIikzsRhNa1e/1tU1MCRkg65WFgDIk68zKzQzL5iZi8Ci4CfEpSRf54g4emfpjjyzexLZvYcsBT4JbAF+C7Qz93PdvfX0hGLiIiIiKRX7ETK7yxW4hW1XCwlD2ke41XFzPYAzge+AfQEDJgDjAHucfcL0xzSKqAXUAT8Bfibu3+c5hhEREREJAITh/WoXp6xpIiyikoK8zOmY1irsyYm8erXNXdavNKWeJlZR+BMgoTrQIJkqwj4K3Cfu79nZpUNXCKVegNlwGfAHsAtCQzic3f/QqoDExEREZHUGtSjAwO6tWfl5h2U7Krgk5Vb2G9w96jDarXWbKlJvPoq8WqS1UBHoAJ4DrgPeNbdy9IYQ0MKgUOTON5TFUhjzGwSQbfMgwgmfZ4P/B34k7tXJHGdbxMkwfsC48Jr/dLdf9rIeScBVwH7AfnAp8Bf3P2+Bs75FkHXzT0IPgPvA79z9+cSjVdEREQkVSYO78ETs1YCwTgvJV7RiW3x6ttFiVdTdAIqgf8H/N7dV6Xx3o0ZFnUAiTKzU4HHgZ3AIwSthicDtxLMk3ZGEpe7BegKbCLobtnoHGVm9j3gTwTzm90P7CIYj3evmY1z96vqOOd3wJXACuAugomzzwSeNbNL3f3PScQsIiIi0uIOGtazOvF6Z/FGvjNFU7dGJbbFq1/X9hFG0rLSmXjdDnwNuAK4zMymErR6PenuO9IYx+e4+9Jkz4lijjEz60KQuFQAU9x9Rrj9Z8BU4HQzO9PdH07wkmcCs919qZmdA9zTyP2HAr8jSPb2d/cl4fafA+8BV5rZ4+7+dsw5kwiSroXAAe6+Kdz+W2Am8Dsze67qWiIiIiJRmDg8dpzXJsorKinQOK+0q6j0+KqGXXKnuEbaPk3ufgnQDzgXmA4cA/wTWGNmfzezI9IVS3NEPMfY6QTj0R6uSroA3H0nQddDgO8kejF3fyHJpPM8oC3w59hEKUymfhWuXlzrnKr1X1YlXeE5S4Dbwuudm0QMIiIiIi1ucI8O1YUctpWW8+mqrRFH1Dpt2FZKRWUwoqdHxza0K8yPOKKWk9Y03t13uvs/3P1wYBRB68l24BzgZYJxU3uY2e7pjKsxmTLHGHBk+P5CHfteB0qASWaWqj8NNHT/52sd05xzRERERNLKzOKqG76zeGOE0bReq7fk5vguiHAeL3df4O5XA4MIEpnnCcaATQLmmNkbZhZZS0imzDFWy+jwfV7tHe5eDiwm6D46PIL7ryZIogeaWQeormQ5ANgW7q9tfvg+KtEAzGxmXS+CqQhEREREmmxi7Hxemkg5Erla0RAimscrVliF7yngKTPrT9Dt7FyCQhGTaGTcUUvLwDnGYnUN37fUs79qe7cI798xPK4kweMhdfGKiIiIJCx2IuV3FxdRUenk5zU6xZC0oDVbako/5FrilVEjBt19lbv/0t1HAkcDiRaJaBYz62hm3zazt4GPgcsJvjd/BSa6+x4teK8lZuZJvO5vqXvnAnefUNeLIDkWERERabKhPTvQp3MwYqO4tJzZqzXOK93WbK0prNEvx7oaRt7i1YADCIpxpEM65xhbSFAKPlGxZferWoi61nVgzPbNScaUqC1Ar/A+dXV8rt3CFXW8IiIiIgkzMyYO78mzHwa/fv1v0Ub2GlDfrzGSCrEtXrvlWItXJideY4DD03SvtM0x5u5HNeP0ucD+BGOiZsbuMLMCgvnIygnGpKXCXILEaxTwduwOM+tHkLyucPcSAHffbmYrgQFm1q+OcV5VRVQ+N2ZMREREJAoHDe8Rk3gVcf6hqRo6L3VZHTeHV24lXhnV1TBCtxNUKbwCWGpmL5rZWWaWaTO2TQ3fj6tj32FAB2C6u5fWsT/V9z++1jHNOUdEREQkErGVDWcuLcLdI4ym9Vm7VYlXTsuiOcYeAzYAZ5rZ/lUbzawdcGO4+tfYE8ysg5mNMbPBLXD/e4BS4HvhZMpV9+gO/Dhcvb3WOVXrPwmPqzpnKPDd8HppLaAiIiIiUp8RvTvRvUMhAJtKyli4fnvEEbUe7h7X4rVbjo3xUuIVyoY5xtx9K3ABkA9MM7O7zew3wAfAwQSJ2SO1TjsQmA38o/b1zOx8M7vXzO4lqOQIcHLVNjP7Ua37Lwb+D+gBzDCz28zsVuAjYARwi7u/Xeuc6cDvw/0fmdmtZnYbMCO8zlWxkzGLiIiIRMnMmDCkptVrxhKVlU+XLTvKKC2vBKBT2wI6tyuMOKKWpcSrDpk8x5i7P0Uw9u114DTgUqAM+AFwpifXHn4I8K3wNTnctnfMts91D3T3PwGnAJ8CZwMXAmuAc9z9qnpivpKgNXFNePzZ4fknu/ufk4hXREREJOUOGFrdSYf3lmyKMJLWJb61q22EkaRGJhfXiFymzTEWE9dbwAkJHjuNYC6yuvadQ9Cil+z9nwWeTfKce4F7k72XiIiISLrtPzSmxWupWrzSZU1cYY1MK7XQfGlLvMzspSRPabG5s1pCWOnwl8Avzewo4LyIQxIRERGRFNhrQBfaFuRRWl7J0o0lrNu6kz45Nt4oE62JKayRa5MnQ3pbvI5uwjkZWUbG3V8BXok6DhERERFpeW0L8tlnUDfeXRy0ds1YuokTxqVretnWK7arYd8cTHTTmXgNS+O9kmZmdxEUrbiovomTzawNcAdQ6u4XpzM+EREREUmfA4Z2r0683ltSpMQrDVZvrpk8WS1ezeDuS9N1r2SZ2RcJug5eWF/SBeDuu8zsdeBuM/uPuz+TrhhFREREJH0OGNoDWAjADBXYSItVW2oSrwHdc2+Ml6oaBr4GrCWx4g/3EVTn+2YqAxIRERGR6Iwf0h0Ly5N9umoL20rLow2oFVi5KSbx6qbEq1nM7K5wQuJ6i/KbWRszu8fMak/Em0oTgVfCKoYNcvdKgvFdB6Q8KhERERGJRJd2hYzp2wWASocPlm2ONqAcV1nprIoZ49VfiVfTxXTne6ux7nwEc1RdYGanpCm8vsCyJI5fAeyWolhEREREJAPEz+elsvKptHH7LnaFkyd3bV9Ip7a5N+tVOlu8Mrk73y4gmVna2hBMWiwiIiIiOUrzeaXPypjCGrnY2gXpTbwyuTvfSmDvJI4fR9DqJSIiIiI5KrbF6/1lmymrqIwwmty2anPs+K7cq2gI6U28Mrk732vAFDMb0diB4TFHhOeIiIiISI7q17V9dZGHkl0VzF69NeKIctcqtXi1qEzuzncbwRxej5pZn/oOMrPewKME37e/pCk2EREREYlI/DgvlZVPlRU5XtEQ0pt4ZWx3Pnf/GLgZ2Bf41MxuNLMjzWxU+DrCzG4EPg2PuTk8R0RERERyWNw4LxXYSJnW0OKVznIhrwHnmdkId1/Y0IEx3fn+lpbIAHf/sZntAn4MXBO+4sICyoEb3P2GdMUlIiIiItE5ICbxem/JJtwdq5rgS1pM7OTJuZp4pbPFK+O787n79cBo4JfANGBO+JoG/AIYraRLREREpPXYvU8nurQL2io2bCtlycaSiCPKTbGTJw/snpuJV9pavNz9YzO7GfgRQXe+O4Cp1HQnHAAcBVwI9AJ+3dzufGZ2OHA2MIYg6VtNMEfYA+6+rp44FwPXNue+IiIiIpIb8vKM/Yf2YOqc4FfHmUs3MaxXx4ijyi0lu8rZVBKUdijMN3p3SqYsRPZI68xk6ezOZ2Y/B35Sx65TgOvN7Ep3v7s59xARERGR3DdhSPe4xOv0CQMjjii3xI7v6tu1HXl5udmVM+1TQrv79WZ2H3AuMJmgzDwEEya/Cdwbtjo1mZkdAfwUcIJkrrbOwB1mZu5+V3PuJSIiIiK5bfzgmsqGs5aqsmFLW7l5Z/VyrlY0hBZKvJLt0peG7nzfiVm+A7g7jGkAcDJwOdAJuNXMXnD35SmMRURERESy2D6DupKfZ1RUOvPWFbN1Zxld2hVGHVbOaA0VDaEFimuEXfqmAucABwEHEHTn+x0w38zOb+49muAggtauh9z9O+4+091Xuft77n4tQUtbMdAeuDiC+EREREQkS3RoU8DYfp0BcIcPlm2ONqAcs7IVzOEFzUy8Yrr0QdClr/arqkvfBc25TxNUVU18sK6dYdGOmwhiPCVdQYmIiIhIdpoQ091wprobtqjYFi8lXvWr3aXvAGAgMBG4EdhGkNzcamaDmnmvZLQJ35c1cMwT4fsYM2uX4nhEREREJIuNHxIzzmuZEq+WtGKTuhomItO79FU2sK+qgEceQfl6EREREZE6xRbYeH/ZZioqPcJocsvyTTVzow3u0SHCSFKruYlX1nbpc/ddMaudIgtERERERDLewO7t6dM5mF9qW2k589cVRxxRbigtr2DN1qCqoZlavBqS6V36Ep0EoNlFRkREREQkd5kZE4ZonFdLW7lpBx42Hvbr0o42Bbn7a3lLfWWZ2qVvhpnNNLO7zex7ZjbZzNS6JSIiIiJJU+LV8pbHjO8alMPdDCENEyi7+y6z6oandCY9BrQF9g1f1SGZ2SLgg5htudumKSIiIiItYj9NpNzilhXVjO9S4pWYTOvS901gv/C1D9AjZp8BI4ERBIVBAN41s+XAR+Hrw/B9nrtr5KSIiIiIsNeALrTJz2NXRSVLNpawcVspPTu1jTqsrLYiNvHqrsQrETPM7DPgfYKWpPeBD919WwtdPynu/gDwQNW6mQ0maPXaL+Z9cK3TBgODgBNjtu0Mv64P3T2KiaBFREREJEO0Lchn3MCu1d0MZy3bzDF77BZxVNktrqJhz9zuhNYSiVfGd+lz92UEBUCeqdpmZt35fDI2mvjvSXtgAjAeUOIlIiIi0spNGNK9OvGauXSTEq9mWqYWr4RlbZc+d98EvBq+goDN2gLjiE/GxgG5/SkQERERkYSM1zivFrW8SMU1EpJrXfrcvRSYEb4AsKAyyKioYhIRERGRzDF+SLfq5Q9XbGZXeWVOl0BPpS07ytiyowyAtgV59M7x8XItWtUwF7v0hS1xc6OOQ0RERESi16dzOwb1aM/yoh2Ullcye/VW9hnULeqwstLymG6GA7u3Jy8v0Xp92Skd5eTVpU9EREREcsaEwd2ru8jNXLpJiVcTrYgtrJHj3QwhfeXd47h7qbvPcPe73P277j4J6ALsEUU8IiIiIiKJiptIeZnGeTVVaxrfBWlo8UpUU7v0ubs61YqIiIhI2mgi5ZbRmioaQkQtXiIiIiIi2WpM3850aJMPwOotO1m1eUcjZ0hdYufwag0tXkq8RERERESSUJCfx74x47pmqbthk8S1ePXI7cmTQYmXiIiIiEjS4sZ5qbth0sorKuOqGg7p2THCaNJDiZeIiIiISJI0kXLzrN6yk7IKB6B357Z0apsxpSdSRomXiIiIiEiS9hvcrXr501Vb2VlWEV0wWWjxhu3Vy0N75v74LlDiJSIiIiKStG4d2jCyTycAyiudj1ZsiTii7LJkY2zilfvdDEGJl4iIiIhIk0wYrHFeTRXX4tVLiZeIiIiIiNRj/JBu1ctKvJKzdGNNYQ21eImIiIiISL1iKxvOWrYJd48wmuyyJK7FS2O8JIOZ2SQz+4+ZFZnZDjP7yMwuN7P8JK/zbTO7w8zeMbMSM3Mzu7GB4/c1s+vN7C0zW21mu8xspZk9ZGbj6znn+vC69b2OS/brFxEREYna8F6d6Nq+EICi7bviWnGkfuUVlXFzeLWWFq/cr9uYg8zsVOBxYCfwCFAEnAzcCkwGzkjicrcAXYFNwCpgRCPH3w5MBGYCTwDbgH2BM4HTzeyr7v5EPefeByypY/uCJOIVERERyQh5ecb4wd14de56AGYs3dRqxis1x8rNOyivDFoH+3RuS8dWUEoelHhlHTPrAtwFVABT3H1GuP1nwFSC5OdMd384wUueCcx296Vmdg5wTyPHPwB8w93jkiUz+zpwP3CnmT3n7rvqOPded5+WYFwiIiIiGW/CkO7VidfMpZs4fcLAiCPKfEta4fguUFfDbHQ60Bt4uCrpAnD3ncBPw9XvJHoxd3/B3Zcmcfyfaidd4fYHgPlAT2BcotcTERERyWbjh2gi5WS1xvFdoBavbHRk+P5CHfteB0qASWbW1t1L0xcWAGXhe3k9+w8xs/2BfIIuh6+4+4Z0BCYiIiKSCvsO6kZ+nlFR6cxbV8yWHWXV476kbq2xlDwo8cpGo8P3ebV3uHu5mS0G9gSGA7PTFZSZHQTsAawEPqnnsF/UWi81s98C13qCZYDMbGY9u8YkFKiIiIhIC+rQpoA9+nXh45VbcIf3l21iyug+UYeV0Za2wsmTQV0Ns1HX8L2+6dGrtndLfSgBM+sB/CNcvcLdK2od8iFwHkEy2B4YAlwAbCboHvnL9EQqIiIi0vImqLthUjTGS9LGzJY0Ul699uv+qGOuj5l1BJ4Gdgd+4+6P1j7G3Z9093vcfbG773T3Ze5+N3ACQffEq8ysVyL3c/cJdb2AOS34ZYmIiIgkLHac18xlSrwaUlZRyfLYUvIa4yUptpCgFHyiVsUsV7Voda3rwJjtm5OMKWlh0vVv4BDg9+5+dTLnu/ssM3uXoAT+wcCzLR+liIiISGrFtnh9sGwz5RWVFOSrfaMuSzdury4l379rOzq0aT3pSOv5SjOIux/VjNPnAvsDowjm0qpmZgXAMILiFouacY9GmVlngqTrUIKWrqSSrhjrw/fW084sIiIiOWVAt/b069qO1Vt2sn1XBXPWFLPXgPr+Rt66LVhXM75rRJ9OEUaSfkrFs8/U8P24OvYdBnQApqeyoqGZdQVeIki6ftnUpMvMCoHx4WpKE0URERGRVIorK6/uhvVauH5b9fKI3kq8JLM9BmwAzgxLswNgZu2AG8PVv8aeYGYdzGyMmQ1u7s3NrDvwMnAQcJ27/7SR4zub2eg6trcB/gAMJhifNaP2MSIiIiLZYsLgmHFeKrBRr4XrahKvka2sxUtdDbOMu281swsIErBpZvYwUAScQlBq/jHgkVqnHQi8CrwGTIndYWbnE4zRAhgZvp9sZlXTrs9x95tiTnmCoKvjQiDPzK6vI8yn3P2DcLknMNvMZhCUt19NMAH0EQTdIjcAX3P3ykS+fhEREZFMFDvOS4lX/RasV+IlWcTdnzKzw4GfAKcB7YAFwA+A/5fonFihQ4Bv1dq2d/iCIFmLTbyGhe8jgOvqueYS4INwuQj4M0Hy9wWgB7CLIHG7maAox7ok4hURERHJOHv070K7wjx2llWyYtMO1m7dyW5d2kUdVkZx97gWr9bW1VCJV5Zy97cIyrEncuw0wOrZdw5wThL3HZroseHxW4HvJ3OOiIiISLYpzM9jn4HdeGdxERC0ep0wrl/EUWWWNVuD4iMAXdsX0qtTm4gjSi+N8RIRERERaQHqbtiwhbEVDXt3xKzOdoGcpcRLRERERKQFxCZeM5R4fc6CdcXVy61tfBco8RIRERERaRHjYyobfrpyCzvLKiKMJvO05sIaoMRLRERERKRFdO/YhhG9OwJQXul8tGJLxBFllviuhkq8RERERESkiTTOq35q8RIRERERkRYRn3gVRRhJZtmyo4z1xaUAtCnIY2D3DhFHlH5KvEREREREWsiEIT2ql2cu3URy06vmrnlrawprjOjdify81lXREJR4iYiIiIi0mOG9OtKtQyEAm0rKWLxheyNntA5z1tQkXmP6do4wkugo8RIRERERaSF5eRZX3VDjvAJz12ytXh6txEtERERERJpLBTY+b25Mi5cSLxERERERaTYlXvHcXV0NUeIlIiIiItKi9hnYrbp4xPx129hSUhZxRNFavWUnxTvLAejSroC+XdpFHFE0lHiJiIiIiLSg9m3y2bN/l+r1Wctad6vX3LjWri6Ytb6KhqDES0RERESkxam7YY3ZKqwBKPESEREREWlxSrxqqLBGQImXiIiIiEgLi028Pli+mbKKygijidZcFdYAlHiJiIiIiLS4fl3bM6BbewB2lFXw6aqtjZyRm8oqKlm4flv1+iglXiIiIiIi0pImDutRvfzu4o0RRhKdReu3U1bhAAzo1p4u7Qojjig6SrxERERERFLgwLjEqyjCSKLz6aot1cutuZshKPESEREREUmJA2olXpWVHmE00fhkZU0Xy70GdI0wkugp8RIRERERSYHhvTrSq1MbALbuLGfu2uJGzsg9n8S0eCnxEhERERGRFmdmrbq7YWWl81lMUZFxSrxERERERCQVDhzaehOvpUUlbCstB6BXpzbs1qVtxBFFS4mXiIiIiEiKHDisZ/XyO4uLcG8947w+WVnTzXDP/l0xswijiZ4SLxERERGRFBndtzNd2hUAsGFbKYs3bI84ovSJH9/VJcJIMoMSLxERERGRFMnPMw6I6W743pLW090wtsVrr/6te3wXKPESEREREUmp2AIb77SScV7urlLytSjxEhERERFJodZY2XDFph1s2VEGQJd2BQzs3j7iiKKnxEtEREREJIX2GtCV9oX5QJCQrNy8I+KIUi+um+EAFdYAJV4iIiIiIilVmJ/HhCHdq9ffawWtXh8s31y9PG6guhmCEi8RERERkZSLH+e1McJI0uP9ZZurl8cP7l7/ga2IEi8RERERkRSbGJN4vb0wtxOvsopKPlq5uXp9v0HdIoslkyjxEhERERFJsX0Hd6NdYfCr95KNJTk9zmvummJ2llUCMKBbe/p0aRdxRJlBiZeIiIiISIq1LciPm89r+oINEUaTWu8v21S9vN/gbtEFkmGUeImIiIiIpMHBI3pWL+dyd8PY8V37aXxXNSVeIiIiIiJpMHlEr+rltxZuwN0jjCZ1ZqnFq05KvERERERE0mDP/l3o3K4AgLVbS1m0YXvEEbW8ou27WLKxBIA2+Xns2b9LxBFlDiVeIiIiIiJpUJCfx8RhNd0Np+dgd8MPlte0du05oAttC/IjjCazKPESEREREUmTySNjEq8cLLAxc2lN4rWvysjHUeIlIiIiIpImk2LGeb29aCOVlbk1zuudRUXVy7FVHEWJl4iIiIhI2ozarRO9OrUBYHNJGZ+t3hpxRC1nx64KPlyxuXr9wGFKvGIp8RIRERERSRMz4+DYVq8cGuf1/rJNlFUELXgj+3SiV6e2EUeUWZR4iYiIiIik0aSY+bzezKFxXv9bXNPNcKJauz5HiVcWMrNJZvYfMysysx1m9pGZXW5mSZWNMbNvm9kdZvaOmZWYmZvZjQ0cPyU8pr7XTfWcl29mV4Rx7gjj/o+ZTUr2axcRERHJdoeMrGnxemfxRnaWVUQYTct5Z1FN691Bw3s2cGTrVBB1AJIcMzsVeBzYCTwCFAEnA7cCk4EzkrjcLUBXYBOwChiR4HmvAdPq2P5mHfEa8DBwOjAX+DPQA/gq8LqZnebuTycRs4iIiEhWG9SjA8N7d2TR+u3sLKvk3cVFHDaqd9RhNcvOsgreX765en3icLV41abEK4uYWRfgLqACmOLuM8LtPwOmAqeb2Znu/nCClzwTmO3uS83sHOCeBM+b5u7XJ3GP04HpwFHuvjOM+XaCRO0uM5vq7sUJXk9EREQk6x0+qjeL1gcTKL82b33WJ14fLt/MrvJKAIb36kifzu0ijijzqKthdjkd6A08XJV0AYTJzE/D1e8kejF3f8Hdl7ZsiJ9TFc9Pq5Ku8N7vEbTY9Sb4ukRERERajcNjEq3X5q2PMJKW8U7s+C61dtVJiVd2OTJ8f6GOfa8DJcAkM0t1CZmRZvY9M/uxmZ1nZrvXdZCZtQMmhXG9Ucchz4fvR9axT0RERCRnHTS8J20Lgl/FF6zbxsrNOyKOqHlii4RMHKbxXXVRV8PsMjp8n1d7h7uXm9liYE9gODA7hXF8PXxVM7PHgQvcfVPM5hFAPrDI3cvruM788H1Uojc2s5n17BqT6DVEREREotauMJ8Dh/XgjflBwvL6vPV87cDBEUfVNNtKy5m1tOZXwMkxxUOkhlq8skvX8H1LPfurtndL0f3XAz8CxgGdCboJHg+8D5wGPGtmsZ+pqOMVERERyVhx3Q3nZm93w7cXbqS8Mpi/a49+XejdWfN31UWJV5qZ2ZJGSrLXft0fdcxV3P1Td7/Z3T9x923uvsHdXwCmAIsJqiqenOIYJtT1Auak8r4iIiIiLW3K6JrE660FGyirqIwwmqZ7PWaM2qGj1NpVH3U1TL+FBKXgE7UqZrmqhahrXQfGbN+cZEzN4u5bzexB4CfAYUBVefiMjFdEREQkE4zo3YkB3dqzcvMOisPuehOzcP6rN+bXJF6H757d1RlTSYlXmrn7Uc04fS6wP8GYqLixTmZWAAwDyoFFzbhHU1X9xHWM2baQoPT9cDMrqGOcV1VRjs+NWRMRERHJdWbGYaN689C7ywB4de76rEu8lm0sYcnGEgDaF+YzYWj3iCPKXOpqmF2mhu/H1bHvMKADMN3dS9MXUrWDwvfqpC8sHz89jOvQOs45PnyfWsc+ERERkZx31Jg+1cv//WxNhJE0zWvz1lUvHzS8B20L8iOMJrMp8coujwEbgDPNbP+qjWHZ9hvD1b/GnmBmHcxsjJk1u0xO7D1rbf8G8FVgF/CvWrur4rkxjLPqnAPCc9YDjzc3NhEREZFsdMjuvWhXGPxKvnD9dhat3xZxRMl5eXZN4pXtk0CnmroaZpFwLNUFBAnYNDN7GCgCTiEoNf8YwaTEsQ4EXgVeIyiCUc3MzgcOCVdHhu8nm9nAcHmOu98Uc8pjZlYOzABWAO2AA8J7lAMXufuSWvd/GPgywSTJ75vZs0BPgqQrn6AE/dYkvg0iIiIiOaNdYT6H7t6b/362FoCXZ6/lwt6dIo4qMdtKy3l74cbq9WP22C3CaDKfWryyjLs/BRxOMGHyacClQBnwA+BMd/ckLncI8K3wNTnctnfMttpdGv9KTfXC7wLnA72Ae4H93f3eOuJ14GthfOVhvF8O4z/M3Z+ufY6IiIhIaxKbsFQlYNng9Xnr2RVWYhzbrwsDu3eIOKLMphavLOTubwEnJHjsNMDq2XcOcE4S970ZuDnR42POKwduDV8iIiIiEuOoMX0wA3eYuXQTG7eV0rNT5s+F9XJMkqjWrsapxUtEREREJEI9O7VlwuCgGmClw9Q56xo5I3rlFZVMnVsT5zFjlXg1RomXiIiIiEjEsq274btLithcUgZA3y7t2GtAl4gjynxKvEREREREInZ0TOL12rz1bCutPf1pZnnuo9XVy8fuuRtmdY5skRhKvEREREREIjaidyfG9O0MQGl5Ja/MztxWr7KKSp7/uCbxOnmf/hFGkz2UeImIiIiIZICT9u5Xvfzsh6sbODJa0xduZFPYzbBf13bV49OkYUq8REREREQywEl717QcvTZvHVt2lEUYTf2e/XBV9fKJ4/qRl6duholQ4iUiIiIikgGG9urIuAFdASircF76dE3EEX3ezrIKXoyJS90ME6fES0REREQkQ8R2N4wtYJEp/vvZWop3BoU/BvfowN4Du0YcUfZQ4iUiIiIikiFOjEm83lqwgaLtuyKM5vP+NWN59fJp4weqmmESCqIOQCTdKisrKSoqori4mNLSUtw96pAkTcyMtm3b0rlzZ3r06EFenv72JCIimWVg9w7sN7gb7y/bTHml89xHqzj74KFRhwXAys07eHPBBgDM4LQJAyKOKLvotw5pVSorK1m+fDnr169n586dSrpaGXdn586drF+/nuXLl1NZWRl1SCIiIp/z5f1qEprYFqaoPT5zBVW/Oh0yshcDu3eINqAsoxYvaVWKioooKSmhoKCAvn370rFjR7V6tCKVlZVs376dNWvWUFJSQlFREb169Yo6LBERkTin7DuAG/89m9LySj5ZuZVPV21hz/7RjqWqqPS4JPCM/QdFGE120m+c0qoUFxcD0LdvXzp37qykq5XJy8ujc+fO9O3bF6j5PIiIiGSSru0LOW6vvtXrj85YEWE0galz1rFi0w4AunUo5Ng9dos4ouyj3zqlVSktLQWgY8eOEUciUap6/lWfBxERkUzzlZgWpSffX8nOsooIo4F7py+uXj7zgMG0K8yPMJrspMRLWpWqMV1q6WrdqiowaYyfiIhkqoOH92Rg9/YAbNlRFjd3VrrNXVPMWws2ApCfZ3zz4CGRxZLN9NuniLQ6Kn0rIiKZLi/P4lq97pu+JLJYYlu7vrDnbgzo1j6yWLKZEi8RERERkQx05oGDKMwP/lg4a9lmPly+Oe0xrNmyk8dnrqxeP2fSsLTHkCuUeImIiIiIZKA+ndtx8t79q9fveWtxA0enxp2vL2JXRTD9yvjB3ThgaPe0x5ArlHiJiIiIiGSocyfXtDD9++PVrNmyM2333ritlAffXVq9fumRu6u7fjMo8RJppcwMM2PIkCHs3Fn3P+JDhw7FzCgvL6/z3Oa4/vrrMTOuv/76eo+59957MTPOOeecZt1LREQkW40b2JX9hwStTGUVzp2vL0rbve98fRE7y4LWrj37d2HK6N5pu3cuUuIl0sotW7aMP/zhD1GHISIiIvW45IgR1csPvLOUdcWpb/VasamEe2IKenzviJFq7WomJV4irVj37t3p0aMHN910Exs2bIg6HBEREanDEaP7sNeALgCUlldy9xupH+v1+5fmsas8aO3aZ2DXuAmdpWmUeIm0Yh06dOBnP/sZW7Zs4YYbbog6nIRcc801mBn33XdfnftnzpyJmXHSSSelOTIREZHUMDO+f+Tu1ev/fHspa7emrtXr4xVbePKDmkqG15wwVq1dLUCJl0gr993vfpcRI0Zwxx13MH/+/KjDadRFF11EXl4ed955Z53777jjDgAuvvjidIYlIiKSUsfssRt79AtavXaUVfDbF+em5D7lFZX8+MmPcQ/Wjx7bh4OG90zJvVqbgqgDEJFoFRYWctNNN3HGGWdw9dVX88QTT6T1/tOmTau3wMYHH3zwuW1Dhw7l+OOP59///jeffPIJe+21V/W+4uJiHnroIQYNGsTxxx+foohFRETSz8z4yYlj+frd7wDw2MwVfOvgoYwb2LVF73Pf20v5eOUWANoU5PHjE8a26PVbMyVeIjGG/ujfUYeQsCU3ndhi1zr99NM5+OCDefLJJ3nzzTc55JBDWuzajXnttdd47bXXkjrnO9/5Dv/+97+54447+NOf/lS9/cEHH2Tbtm383//9H/n5+S0dqoiISKQmj+zF0WN34+XZawG47plPePTiSeTntUw3wKUbt3PLSzUtaZceMZLhvTu1yLVFXQ1FJHTLLbcAcNVVV6X1vtdddx3uXufrnnvuqfOc448/nmHDhvHPf/6TkpKS6u133nknBQUFnH/++ekKX0REJK1+cuJYCvODRGvWss3cF1N5sDlKyyv43oPvU7KrAoDd+3TiosNHNHKWJEOJl4gAcPDBB3P66afzzjvv8Mgjj0QdToPy8vK46KKL2LJlS3WsM2fOZNasWZx00kn0798/4ghFRERSY1ivjnxnysjq9d+8OIeF67c1+7o3PT+nuothYb5xy1f2oU2BUoWWpK6GIjFasvteNvr1r3/N008/zTXXXMOXvvSlqMNp0Hnnncd1113HHXfcwbnnnltdVOOiiy6KODIREZHU+t4RI3np0zXMWVPMzrJKLv7nTJ767mQ6tm3ar/YPvrOMe95aUr3+o+PHsvfAbi0TrFRTGisi1UaOHMkll1zC4sWL48ZOZaLevXtXt9C99dZbPPTQQwwbNoxjjz026tBERERSqk1BHrd8ZR/ahi1S89dt4wf/+oDyisqkr/XCJ2v42dOfVK8fPXY3zps8tKVClRhKvEQkzrXXXku3bt345S9/ybZtze+6kErf+c53APjqV7/Ktm3buOCCC8jL0z9rIiKS+/bs35Vffmlc9fqLn67lh49/REWlJ3yNp95fyXcfnFV9zl4DuvDHM/fVnF0poq6GIhKnR48e/PjHP+aHP/xho8eec8459e77y1/+QocOHVowss+bPHky++yzDx9++CGFhYWcd955Kb2fiIhIJjl9wkDmrN7K3W8uBuCJWSvZXFLGH87cly7tCus9b1d5Jb99cQ53vbG4etvQnh34+7cOaHJ3RWmcvrMi8jnf//73+ctf/sKSJUsaPO6+++6rd98f/vCHlCdeAOeeey6XX345p556KrvttlvK7yciIpJJfnLiWLaVlvPwe8sBmDpnHcfd+jpXHz+GE8f1oyC/pidIWUUl//1sLb99cS6LN2yv3j5qt07c/+2J9OnSLu3xtybmnnhzpEimMrOZ48ePHz9z5swGj5s9ezYAY8dqMsBccc4553Dffffx8ssvc9RRRyV8nj4LIiKSKyornd+8OJfbX1sYt71XpzbsP6QHPTq1YeO2UmYs2cTG7bvijjl6bB9uOWNfunaov4VMakyYMIFZs2bNcvcJyZ6rFi8RyVrLly/n4YcfZuzYsRx55JFRhyMiIhKJvDzjR8ePYdyArlz79CfVydWGbbt44dM1dZ7TuV0BVx4zirMPHkpeC03ALA1T4iUiWefBBx9k3rx5PPzww5SWlvKLX/xCA4FFRKTVO3Hvfhwyshd/e3MRD767jA3bdn3umN6d2/LV/QdxzuSh9OrUNoIoWy8lXiKSde68805ef/11Bg0axK233sppp50WdUgiIiIZoWuHQn5w7GguP3oUn63eyvx1xRTvLKdLu0JG7daZ0X07k68Wrkgo8RKRrDNt2rSoQxAREcloeXnGXgO6steArlGHIiFNeCMiIiIiIpJiSrxERERERERSTImXiLQ6mkZDRERE0k2Jl7QqVZXvKisrI45EolSVeKkSooiIiKSLEi9pVdq2Dcqmbt++vZEjJZdVPf+qz4OIiIhIqinxklalc+fOAKxZs4bi4mIqKyvV7ayVcHcqKyspLi5mzZpgMsmqz4OIiIhIqqmcfJYys0nAT4GDgPbAfODvwJ/cvSKJ63wbOBDYFxgXXuuX7v7Teo6fBhzeyGX/7u7fjjnneuC6Bo4/3t1fSDTm5ujRowfbt2+npKSEFStWpOOWkqE6dOhAjx49og5DREREWgklXlnIzE4FHgd2Ao8ARcDJwK3AZOCMJC53C9AV2ASsAkY0cvy9wLR69l0K9ACer2f/fcCSOrYvaOSeLSYvL49BgwZRVFREcXExpaWlavFqRcyMtm3b0rlzZ3r06EFenhr9RUREJD2UeGUZM+sC3AVUAFPcfUa4/WfAVOB0MzvT3R9O8JJnArPdfamZnQPc09DB7n5vPXGNJmjVWgs8Xc/p97r7tATjSpm8vDx69epFr169og5FRERERFoJ/bk3+5wO9AYerkq6ANx9J0HXQ4DvJHoxd3/B3Ze2QFwXhu/3uHtZC1xPRERERCRnqMUr+xwZvtc1Jup1oASYZGZt3b00HQGZWVvgbMAJWuPqc4iZ7Q/kE3Q5fMXdN6Q+QhERERGRaCnxyj6jw/d5tXe4e7mZLQb2BIYDs9MU05eBXsB/3X1RA8f9otZ6qZn9FrjWExxoZWYz69k1JpHzRURERESioK6G2adr+L6lnv1V27ulPpRqVd0M76xn/4fAeQTJYHtgCHABsJmge+QvUxyfiIiIiEik1OIVATNbQpB8JOoBd/9GisJpFjPbHZhCA0U13P3JWpuWAXeb2Szgf8BVZvb7RLoduvuEeuKYCYxPInQRERERkbRR4hWNhQSl4BO1Kma5qkWra10HxmzfnGRMTdXkohruPsvM3iUogX8w8GxLByciIiIikgmUeEXA3Y9qxulzgf2BUUDceCczKwCGAeVAQ2OtWoSZtQG+ReNFNRqyPnzv2CJBiYiIiIhkICVe2Wcq8HXgOOChWvsOAzoAr6epouGXCErbN1ZUo05mVkhN98DmJopDZ8+ezYQJdfZEFBERERFpttmzZwMMbcq5Sryyz2PAzcCZZvanmAmU2wE3hsf8NfYEM+sADAZK3H1ZC8ZS1c3wjvoOMLPOQH93n1trexvg1jCuOcCMOk5PxtYdO3Ywa9asJeF6HrAbwdizyjqOb2h/ffvq2l5VTXFOM+NvCY19zem6XjLnJXJsa3uWLf0cm3PNTHmWyW7P1WfZnOtl47PMlOcIrfdZ5tq/r5A5zzLZ8/QsPy+qZzkU2NqkO7i7Xln2Ar5I0J1wG3A38BuCHwAHHgWs1vFTwn3T6rjW+cC94evN8LgPY7b9qJ4YRoYfyjVAYQOxDg2Pexe4D7gJ+BtBC5cTdDXcNwXfo/7h9fsnu7++fXVtJ+juOTPqz0QiX3O6rpfMeYkc29qeZUs/x1x4lk3YnpPPsjnXy8ZnmSnPsTU/y1z79zWTnmWy5+lZZu6zTOalFq8s5O5PmdnhwE+A04B2wALgB8D/8/DTk6BDCMZpxdo7fAG8RpAs1XYBYDReVKMI+DNwIPAFoAewi6DAyM3A7919XRLxioiIiIhkHSVeWcrd3wJOSPDYaQRJUl37zgHOacL9rwauTuC4rcD3k72+iIiIiEgu0QTKkquKgRvC92T317evsWtGraXja+r1kjkvkWNb27NMRWzZ/iyz8TlC5vxMJnuunuXntdZnmWv/vkLmPMtkz9Oz/LxMeZYJs+R6pYlIrHDiZryeiZ0le+hZ5g49y9yg55g79Cxzh55l86jFS0REREREJMXU4iUiIiIiIpJiavESERERERFJMSVeIiIiIiIiKabES0REREREJMWUeImIiIiIiKSYEi8REREREZEUU+IlIiIiIiKSYkq8RDKEmV1jZm5mf446FkmemX3XzD4ys63h620zOzHquCR54c/ie+FzXG9mz5rZXlHHJckzs8PM7BkzWxn++3pO1DFJ48zsEjNbbGY7zWymmR0adUySHP3s1U2Jl0gGMLODgAuBj6KORZpsBXA1MB7YH5gKPGVme0calTTFFOAvwCTgSKAceNnMekQZlDRJJ+AT4DJgR8SxSALM7KvAH4FfAfsB04HnzWxwpIFJsvSzVwdNoCwSMTPrCswCzgeuAz5x9+9FG5W0BDMrAq5x9zuijkWazsw6AVuAL7r7s1HHI01jZtuA77n7vVHHIvUzs3eAj9z9gpht84HH3P2a6CKTptLPXg21eEmrYmanm9mfzOyNsBuRm9n9jZwz0Mz+bmarzKzUzJaY2R/MrHsLhXUnwX8or7bQ9VqFDH2WVffJN7MzCf7iN70lr52LMvlZhjoT/H+5KQXXzilZ8CylmVL5jM2sDTABeKnWJV4iaIGWFqKf1WgURB2ASJr9FNgH2EbQNWxMQweb2QiCX5z7AE8Dc4ADCZrOjzOzye6+sanBmNkFwEjgG029RiuWUc8yvMc44G2gXRjXl9z94+Zcs5XIuGdZyx+BDwierTQs05+lNF8qn3EvIB9YW+sya4GjW+oLEEA/q9Fwd730ajUv4Ahgd8AIxnE4cH8Dx78YHnNpre2/D7ffXmv7jeH2hl5TwmNHA+uB0THnTwP+HPX3KRtemfQsY85pQ5BITwB+DWwA9or6e5Xpr0x8lrWuuQoYHvX3KRteGf4stwHnRP09yvZXKp8x0D/cdlitY68F5kb9tefSK9U/q7WO0c9e+NIYL2m1zGwK8CrwgLt/rsUp/OvOAmAJMMLdK2P2dQZWE/yD1cfdt4fbexH8xa4hy9y9JKzwcw9QEbMvn+AfsEqgo7uXNuVra22ifpYNxPUysNTdv53M19OaZdKzNLNbgTOBI9x9ThO/pFYrk55leK7GmbSwln7GYVfDEuBr7v5ozLG3EfwR6/DUfTWtVyp+Vmudr5+9kLoaitTviPD9pdh/ZADcvdjM3gKOBQ4CXgm3byBo5UjEU8CMWtvuAeYTVHPa1bSwpQ6pfpb1yQPaNvMaEi8tz9LM/gh8FSVdqRTVz6WkT1LP2N13mdlM4Bjg0ZjDjwEeT0fAUqekf1albiquIVK/0eH7vHr2zw/fRzXl4u6+2d0/iX0B24GicF3N0S0npc8SwMxuMrNDzWyomY0zs18TdN94oKnXlDql41neBpwLnAVsMrO+4atTU68pdUrHs+xkZvua2b4Ev/MMDtdVmjw9mvKMfw+cY2bnm9nY8I8g/YHbUxSjNC7p56ifvbop8RKpX9fwfUs9+6u2d0t9KNJM6XiWfYH7gbkEf/E7ADje3Z9vxjXl89LxLC8hqGT4CkEXmqrXVc24pnxeOp7l/sD74as9cEO4/PNmXFMSl/QzdvdHgMsJij98ABwCnODuS1MSoSSiKT+r+tmrg7oaimQQd58SdQzSNO5+TtQxSMtwd4s6BmkZ7j6NYOyJZBF3/wvBJOaSpfSzVze1eInUr+ovOF3r2V+1fXPqQ5Fm0rPMHXqWuUPPMvfpGecGPccWosRLpH5zw/f6xhfsHr7X1+dZMoeeZe7Qs8wdepa5T884N+g5thAlXiL1ezV8P9bM4n5WwvKpkwnK3v4v3YFJ0vQsc4eeZe7Qs8x9esa5Qc+xhSjxEqmHuy8EXgKGAt+ttfsGoCPwz7rmrJDMomeZO/Qsc4eeZe7TM84Neo4tRxMoS6tiZl8Evhiu9gW+ACwC3gi3bXD3q2KOHwFMB/oATwOzgYkEc1rMAya5+8Z0xC7x9Cxzh55l7tCzzH16xrlBzzEaSrykVTGz64HrGjhkqbsPrXXOIILyp8cBPQnKSj8J3ODum1ITqTRGzzJ36FnmDj3L3KdnnBv0HKOhxEtERERERCTFNMZLREREREQkxZR4iYiIiIiIpJgSLxERERERkRRT4iUiIiIiIpJiSrxERERERERSTImXiIiIiIhIiinxEhERERERSTElXiIiIiIiIimmxEtERERERCTFlHiJiIiIiIikmBIvERERERGRFFPiJSIiIiIikmJKvERERERERFJMiZeIiIiIiEiKKfESEZGcZ2ZvmpmHr48zLJ5Poo5HRERST4mXiIjkNDMzYJ+YTR9EFAqQ/njMrL2ZbY9J9M6I2Tc0Znvsa4WZNel3BDO7up5r/q7lvioRkeyjxEtERHLd7kCnmPUPIoqjSrrjORroEC7vAl5I4JwBwJFNvN/ZTTxPRCSnKfESEZFct1+t9Q+iCCJGuuM5OWZ5mrsXJ3he0gmUme0P7JHseSIirYESLxERyXW1E533I4miRtoSr7Bb40kxm55t5JSymOUvm1nHJG8Zm6yV1XuUiEgrpMRLRERyXWyis9zdiyKLJBAbzyp335DCex0A9ItZf6aR46cBO8LljsBpid7IzAqBr8Vs+k+i54qItAZKvEREJNfFJjofRBVEjHTGE9vN8EN3X9bI8VuBp2PWv5nEvU4AeoXL5cCDSZwrIpLzlHiJiEjOMrMBQO+YTR9EFAoQSTynxCw31s2wyj9ilo8MY05EbDfDF4F1CZ4nItIqFEQdgIiISAplVWENM2sPTAbGAl0IWqA+Bd50913J3MjMBgN7x2xqrJthlZeAtcBuBH+g/QZwcyP36k78WLJ/Jh5pYsysJ8H3ZiDQGVgNvO/uzZ6XzczygQkEFSd7E3SzLAaWELQULm3uPURElHiJiEguS7qwhpn1J+gmd3jM5peBs9x9fQvH80F4zwHADcBZQPs6zltlZle6+8NJ3Cu2tWs1MCORk9y9wsweBK4IN32TRhIv4EygTbi8haC74kGJhwpmdg5wT8ymI9x9mpmNBG4EvhRzj9jzPgN+5O6JtujFnjsS+CnwRaBrA8ctAB4F/uruy5O9j4gIqKuhiIjktthEZ4u7L27oYDM7liAZqkq6KoFfAF9ogaSrdjzbgIVmdgHwGfBt6k66APoDD5nZeUncKzbxes7dPYlzY7sb7mlmExo5Prab4aPuvjOJe9XLzI4iSJa/Sh1JV2gP4Bkzuy2s4pjIdc3MfgHMBr5FA0lXaCRwDXBlQoGLiNRBLV4iIpLL9o1Z/rC+g8KuZjcQ/HJd9UfJjcDX3f3FFMXzMfAT4Oe1ti0Il0cBe9Y6/1Yze9LdNzV0EzPrTHyLXaLdDAFw9w/M7GNgXLjpbGBmPfcaRXzr1j/qOq4JxgC/oWay6Y3Ae8BmgkT0IOKTsUsISthf3tBFw2f9MHB6HbvnEnz/txB09dyd4DkklNCJiDRELV4iIpKTzKwbMCxm0wf1HNcPeIUgCar6f/EdYHxLJl11xDOSIOly4A5giLvv7e5fDl97AccQjLeq0gU4NYHbHUdNUlJC8PUlKzaBOtPM6vtjbWxr12LgzSbcqy6/JhjLVQxcBPRz9+Pd/WvufjhBmfzba51zmZl9oZHr/pz4pMuBvwPD3X2Mu5/k7l9395PdfQxBpcbzCZI+EZEmU+IlIiK5at9a658b32VmxxDftRDgT8BhCZReb248vQnmzDrF3S+u637u/jJwcSPXqUtsGfmX3X1HvUfW7wGgIlzuQ5DMxQm79n0jZtM/k+zS2JBuwE7gRHe/093jJmR29yJ3/w5BS2Ws28yszt9vzOwAglbNKuXAN9z92/V1Qw3v8zd3P5AgGRQRaRIlXiIikqvqrSBoZvnhGJ8XCJIKCFpWvuru30+2gmAT4/Hwfs81ct5/wmOrNDgeKexKd0LMpqSLTgC4+2qCoiJVzq7jsMOBITHrLdXNsMrN7v5GI8fcQHxr1AjqSBJDPya+2+Av3T3h+cbcfW3jR4mI1E2Jl4iI5KrYRKeMoIBFbNfCn1Lz/+AnwAHu/q80xQNwZ4KV+MoIWmaqbGvk+MlAz3DZaWLiFYpNpE4Ou0vGik3Gprv7wmbcq7YdwC2NHRS2sN1Ya/PXax9nZn2I76a5FvhVcwIUEUmGEi8REclVsYnOZ+6+q56uhf8EJrr73DTGU05QLTER/YHCmPWVjRwf283w3Wa20jxJ0BII0A74StUOM+tA/Fiplm7tet7dixs/LDiWYM6zKgfXcczhxLd2/SNFLZsiInVS4iUiIjnHzNoRVMWr8nEdXQtLgYvd/Wx3L0lzPC+6e2MJVJWxtdYbSxBjy8g3p7WLcGzY4zGbvhmz/CWC4hcQfC9burUw4WIW4fiv2KqVw8JJnWNNrLXeWBdGEZEWpcRLRERy0Tjip0w5jfiuhYuBSe5+R0TxvFzfgXXYt9Z6Q2XxRxOUP6+SVBn5esS2ZE02s6rKjLHdDJ9rrMR9EyTbbXFBrfU+tdb71lqfneT1RUSaRYmXiIjkotrjqWInJt4I7O/usyKM539JnDs+ZnkLQdJYn9huhkvc/eMk7lOfaUBVxUUDzjaz/sBRMce0dDdDiO86mIgttda71VrvWWt9c5LXFxFpFiVeIiKSi2ITnQqCMUBVegLXpjecz8XzURLnxiZeHzRSrr3FuhlWCe93f8ymbxKUkM8P19cT//3NFi1V9l5EJCFKvEREJBftG7M8FzgDmBmz7TIzuyKqeBIdU2ZmnYDdYzZ9bi6ymGN7AJNiNrVEN8MqsS1aI4ifC+vh2nNstZAuSR5fu8z+5lrrRbXWuyV5fRGRZlHiJSIiOSWcPHfvmE3vu/t24CRgacz235nZl6OIJ4nT9yX+/+qGukeeSE0r1FbgtSTu06Cw4uO7MZu6xSynopshBAleMkbWWl9Xa31NrfXaRUtERFJKiZeIiOSa0UCHmPVZAO6+hmBi4c3h9jzgATObRGrVGU+Cxtdabyhpi+1m+EIKWqHqSrA+c/cZLXyfKgckeqCZFQL7xGxaXEexj7drrR/a1MBERJpCiZeIiOSa2oUsqpMVd/+MoMJhVVLSDnjGzHYndeqNJwGxiddOYE5dB5lZG+ALMZtaspthlYep+b5V+WcK7lPleDPr3PhhwbHEd02snWRB0AJYGbN+dpiwiYikhRIvERHJNQ0mOu4+FTg/ZlNP4Hkz6x1FPI2ITbw+dvfyeo6bQs2cWuWkoNiFu28kmAvr0JjXX1r6PjHaA1c2dpCZGcFUAbEeqH2cu68HnorZ1Bf4UTPiExFJihIvERHJNbGJzmJ331z7AHf/B3BDzKYRwLNm1r72semIpy7hpMux45AaSthiy8i/5e61C0m0CHd/393fjHklW/I9WVeb2SGNHHMd8d0SFxFMlF2XXxNfzfBaM/tqosGY2W6JHisiUpsSLxERyTWxiU6946nc/Xrixy1NBB4Mi2GkPZ467E38pMsNnRubeLVIGfkMsJmgK+h/zOyC2t0Czay7mf2FIPGKdYm7V1KHcDzar2I2FQAPmdmdZja0rnPMrIeZnWdm7xJfzVFEJCkFjR8iIiKSHcxsMNAjZlNj3frOBwYBR4TrXwT+AHw/onhiJVRYw8z2AYbEbErF+K4o/Bj4LUEXyjuBX4fJz2agP3Aw0KbWOX909xcbue51wBiCsX4QTAp9AXCBmc0GFhBUhexCUMp/FDV/qJ7ejK9HRFo5JV4iIpJLao+narCFyd3LwpLybwF7hJsvNbOl7n5LuuOpJTbxqgA+rue42NauOe4+P4l7ZLLZwJeBJ4COBGPxjm/g+L8Cjc7N5u4VZvYVgm6HVxHf+2csKjMvIimiroYiIpJLki5kEY65OoH4eZ5+a2ZnRBFPPefOcfcd9RwXW0Y+V7oZAuDuLwETgMf5fEXFKrOBU9z9Enf3eo6pfd1Kd78aGAc8Amxv5JS5BGMCb04ocBGROliC/0aJiIhIhjGzvsAqgu5yAIe6+5sRhtRkZnYOcE/MpiPcfVrM/l7AZGAgQffDNQSTY3/YAvduA0wChgK9gUKC7oaLgQ/dfUVz7yEioq6GIiIi2etkapKuDdQ9f1VOcPcNwNMpuvYuYFoqri0iUkVdDUVERLJXbDfD/7h7RWSRiIhIg9TiJSIikr3eAGaGyzk1vktEJNco8RIREclS7v6bqGMQEZHEqKuhiIiIiIhIiinxEhERERERSTElXiIiIiIiIimmxEtERERERCTFNIGyiIiIiIhIiqnFS0REREREJMWUeImIiIiIiKSYEi8REREREZEUU+IlIiIiIiKSYkq8REREREREUkyJl4iIiIiISIop8RIREREREUkxJV4iIiIiIiIppsRLREREREQkxZR4iYiIiIiIpJgSLxERERERkRRT4iUiIiIiIpJiSrxERERERERSTImXiIiIiIhIiinxEhERERERSbH/DyJPxQ9rQ+YCAAAAAElFTkSuQmCC\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "image/png": { + "height": 275, + "width": 431 + }, + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "## newtonian vs synch gauge\n", + "plt.plot(k,np.array(pNL_hy0)/np.array(pNL0) - 1, label=\"NL Hy\")\n", + "plt.xscale('log')\n", + "plt.ylabel(r'$\\frac{P_{\\rm{CLASS}}}{P_{\\rm{CAMB}}} - 1$',fontsize=20)\n", + "plt.xlabel(r'$k \\ h/\\rm{Mpc} $',fontsize=20)\n", + "plt.axhline(0,ls=':',c='k')\n", + "plt.legend()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "75df5ef5", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5e92e60f", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.7" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/class/notebooks/cl_ST.ipynb b/class/notebooks/cl_ST.ipynb new file mode 100644 index 00000000..4255da1e --- /dev/null +++ b/class/notebooks/cl_ST.ipynb @@ -0,0 +1,199 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# import necessary modules\n", + "# uncomment to get plots displayed in notebook\n", + "%matplotlib inline\n", + "import matplotlib\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "from classy import Class\n", + "from scipy.optimize import fsolve\n", + "from scipy.interpolate import interp1d\n", + "import math" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# esthetic definitions for the plots\n", + "font = {'size' : 16, 'family':'STIXGeneral'}\n", + "axislabelfontsize='large'\n", + "matplotlib.rc('font', **font)\n", + "matplotlib.mathtext.rcParams['legend.fontsize']='medium'\n", + "plt.rcParams[\"figure.figsize\"] = [8.0,6.0]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#############################################\n", + "#\n", + "# Cosmological parameters and other CLASS parameters\n", + "#\n", + "common_settings = {# wich output? ClTT, transfer functions delta_i and theta_i\n", + " 'output':'tCl,pCl,lCl',\n", + " # LambdaCDM parameters\n", + " 'h':0.67556,\n", + " 'omega_b':0.022032,\n", + " 'omega_cdm':0.12038,\n", + " 'A_s':2.215e-9,\n", + " 'tau_reio':0.0925,\n", + " # Take fixed value for primordial Helium (instead of automatic BBN adjustment)\n", + " 'YHe':0.246}\n", + " # other output and precision parameters\n", + " #'l_max_scalars':3000}\n", + "###############\n", + "# \n", + "# call CLASS \n", + "#\n", + "###############\n", + "#\n", + "# scalars only\n", + "#\n", + "M = Class()\n", + "M.set(common_settings)\n", + "M.set({'output':'tCl,pCl','modes':'s','lensing':'no','n_s':0.9619,'l_max_scalars':3000})\n", + "M.compute()\n", + "cls = M.raw_cl(3000)\n", + "M.struct_cleanup()\n", + "M.empty()\n", + "#\n", + "# tensors only\n", + "#\n", + "M = Class()\n", + "M.set(common_settings)\n", + "l_max_tensors = 600\n", + "M.set({'output':'tCl,pCl','modes':'t','lensing':'no','r':0.1,'n_t':0,'l_max_tensors':l_max_tensors})\n", + "# for l_max=600 we can keep default precision\n", + "# for l_max = 3000 we would need to import many high precision settings from the file cl_ref.pre\n", + "#M.set({'output':'tCl,pCl','modes':'t','lensing':'no','r':0.1,'n_t':0,'l_max_tensors':3000})\n", + "#M.set({\n", + "#'recfast_Nz0':100000,\n", + "#'tol_thermo_integration':1.e-5,\n", + "#'recfast_x_He0_trigger_delta':0.01,\n", + "#'recfast_x_H0_trigger_delta':0.01,\n", + "#'evolver':0,\n", + "#'k_min_tau0':0.002,\n", + "#'k_max_tau0_over_l_max':3.,\n", + "#'k_step_sub':0.015,\n", + "#'k_step_super':0.0001,\n", + "#'k_step_super_reduction':0.1,\n", + "#'start_small_k_at_tau_c_over_tau_h':0.0004,\n", + "#'start_large_k_at_tau_h_over_tau_k':0.05,\n", + "#'tight_coupling_trigger_tau_c_over_tau_h':0.005,\n", + "#'tight_coupling_trigger_tau_c_over_tau_k':0.008,\n", + "#'start_sources_at_tau_c_over_tau_h':0.006,\n", + "#'l_max_g':50,\n", + "#'l_max_pol_g':25,\n", + "#'l_max_ur':50,\n", + "#'tol_perturb_integration':1.e-6,\n", + "#'perturb_sampling_stepsize':0.01,\n", + "#'radiation_streaming_approximation':2,\n", + "#'radiation_streaming_trigger_tau_over_tau_k':240.,\n", + "#'radiation_streaming_trigger_tau_c_over_tau':100.,\n", + "#'ur_fluid_approximation':2,\n", + "#'ur_fluid_trigger_tau_over_tau_k':50.,\n", + "#'l_logstep':1.026,\n", + "#'l_linstep':25,\n", + "#'hyper_sampling_flat':12.,\n", + "#'hyper_nu_sampling_step':10.,\n", + "#'hyper_phi_min_abs':1.e-10,\n", + "#'hyper_x_tol':1.e-4,\n", + "#'hyper_flat_approximation_nu':1.e6,\n", + "#'q_linstep':0.20,\n", + "#'q_logstep_spline':20.,\n", + "#'q_logstep_trapzd':0.5,\n", + "#'q_numstep_transition':250,\n", + "#'transfer_neglect_delta_k_T_t2':100.,\n", + "#'transfer_neglect_delta_k_T_e':100.,\n", + "#'transfer_neglect_delta_k_T_b':100.,\n", + "#'neglect_CMB_sources_below_visibility':1.e-30,\n", + "#'transfer_neglect_late_source':3000.\n", + "#})\n", + "M.compute()\n", + "clt = M.raw_cl(l_max_tensors)\n", + "M.struct_cleanup()\n", + "M.empty()\n", + "#\n", + "# scalars + tensors (only in this case we can get the correct lensed ClBB)\n", + "#\n", + "M = Class()\n", + "M.set(common_settings)\n", + "M.set({'output':'tCl,pCl,lCl','modes':'s,t','lensing':'yes','r':0.1,'n_s':0.9619,'n_t':0,'l_max_scalars':3000,'l_max_tensors':l_max_tensors})\n", + "M.compute()\n", + "cl_tot = M.raw_cl(3000)\n", + "cl_lensed = M.lensed_cl(3000)\n", + "M.struct_cleanup()\n", + "M.empty()\n", + "#\n", + "#################\n", + "#\n", + "# start plotting\n", + "#\n", + "#################\n", + "#\n", + "plt.xlim([2,3000])\n", + "plt.ylim([1.e-8,10])\n", + "plt.xlabel(r\"$\\ell$\")\n", + "plt.ylabel(r\"$\\ell (\\ell+1) C_l^{XY} / 2 \\pi \\,\\,\\, [\\times 10^{10}]$\")\n", + "plt.title(r\"$r=0.1$\")\n", + "plt.grid()\n", + "#\n", + "ell = cl_tot['ell']\n", + "ellt = clt['ell']\n", + "factor = 1.e10*ell*(ell+1.)/2./math.pi\n", + "factort = 1.e10*ellt*(ellt+1.)/2./math.pi\n", + "#\n", + "plt.loglog(ell,factor*cls['tt'],'r-',label=r'$\\mathrm{TT(s)}$')\n", + "plt.loglog(ellt,factort*clt['tt'],'r:',label=r'$\\mathrm{TT(t)}$')\n", + "plt.loglog(ell,factor*cls['ee'],'b-',label=r'$\\mathrm{EE(s)}$')\n", + "plt.loglog(ellt,factort*clt['ee'],'b:',label=r'$\\mathrm{EE(t)}$')\n", + "plt.loglog(ellt,factort*clt['bb'],'g:',label=r'$\\mathrm{BB(t)}$')\n", + "plt.loglog(ell,factor*(cl_lensed['bb']-cl_tot['bb']),'g-',label=r'$\\mathrm{BB(lensing)}$')\n", + "plt.legend(loc='right',bbox_to_anchor=(1.4, 0.5))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "plt.savefig('cl_ST.pdf',bbox_inches='tight')" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.7" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/class/notebooks/cltt_terms.ipynb b/class/notebooks/cltt_terms.ipynb new file mode 100644 index 00000000..90f64356 --- /dev/null +++ b/class/notebooks/cltt_terms.ipynb @@ -0,0 +1,156 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# import necessary modules\n", + "# uncomment to get plots displayed in notebook\n", + "%matplotlib inline\n", + "import matplotlib\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "from classy import Class\n", + "from scipy.optimize import fsolve\n", + "from scipy.interpolate import interp1d\n", + "import math" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# esthetic definitions for the plots\n", + "font = {'size' : 16, 'family':'STIXGeneral'}\n", + "axislabelfontsize='large'\n", + "matplotlib.rc('font', **font)\n", + "matplotlib.mathtext.rcParams['legend.fontsize']='medium'\n", + "plt.rcParams[\"figure.figsize\"] = [8.0,6.0]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#############################################\n", + "#\n", + "# Cosmological parameters and other CLASS parameters\n", + "#\n", + "common_settings = {# wich output? ClTT, transfer functions delta_i and theta_i\n", + " 'output':'tCl,pCl,lCl',\n", + " 'lensing':'yes',\n", + " # LambdaCDM parameters\n", + " 'h':0.67556,\n", + " 'omega_b':0.022032,\n", + " 'omega_cdm':0.12038,\n", + " 'A_s':2.215e-9,\n", + " 'n_s':0.9619,\n", + " 'tau_reio':0.0925,\n", + " # Take fixed value for primordial Helium (instead of automatic BBN adjustment)\n", + " 'YHe': 0.2457089991568521\n", + " # other output and precision parameters\n", + " 'l_max_scalars':5000,\n", + "\n", + " 'omega_ncdm': 0.000644866570625114, \n", + " 'N_ncdm': 1,\n", + " 'N_ur': 2.0328, \n", + " }\n", + "###############\n", + "# \n", + "# call CLASS \n", + "#\n", + "M = Class()\n", + "M.set(common_settings)\n", + "M.compute()\n", + "cl_tot = M.raw_cl(3000)\n", + "cl_lensed = M.lensed_cl(3000)\n", + "M.struct_cleanup() # clean output\n", + "M.empty() # clean input\n", + "#\n", + "M.set(common_settings) # new input\n", + "M.set({'temperature contributions':'tsw'}) \n", + "M.compute()\n", + "cl_tsw = M.raw_cl(3000) \n", + "M.struct_cleanup()\n", + "M.empty()\n", + "#\n", + "M.set(common_settings)\n", + "M.set({'temperature contributions':'eisw'})\n", + "M.compute()\n", + "cl_eisw = M.raw_cl(3000) \n", + "M.struct_cleanup()\n", + "M.empty()\n", + "#\n", + "M.set(common_settings)\n", + "M.set({'temperature contributions':'lisw'})\n", + "M.compute()\n", + "cl_lisw = M.raw_cl(3000) \n", + "M.struct_cleanup()\n", + "M.empty()\n", + "#\n", + "M.set(common_settings)\n", + "M.set({'temperature contributions':'dop'})\n", + "M.compute()\n", + "cl_dop = M.raw_cl(3000) \n", + "#\n", + "#################\n", + "#\n", + "# start plotting\n", + "#\n", + "#################\n", + "#\n", + "plt.xlim([2,3000])\n", + "plt.xlabel(r\"$\\ell$\")\n", + "plt.ylabel(r\"$\\ell (\\ell+1) C_l^{TT} / 2 \\pi \\,\\,\\, [\\times 10^{10}]$\")\n", + "plt.grid()\n", + "#\n", + "ell = cl_tot['ell']\n", + "factor = 1.e10*ell*(ell+1.)/2./math.pi\n", + "plt.semilogx(ell,factor*cl_tsw['tt'],'c-',label=r'$\\mathrm{T+SW}$')\n", + "plt.semilogx(ell,factor*cl_eisw['tt'],'r-',label=r'$\\mathrm{early-ISW}$')\n", + "plt.semilogx(ell,factor*cl_lisw['tt'],'y-',label=r'$\\mathrm{late-ISW}$')\n", + "plt.semilogx(ell,factor*cl_dop['tt'],'g-',label=r'$\\mathrm{Doppler}$')\n", + "plt.semilogx(ell,factor*cl_tot['tt'],'r-',label=r'$\\mathrm{total}$')\n", + "plt.semilogx(ell,factor*cl_lensed['tt'],'k-',label=r'$\\mathrm{lensed}$')\n", + "#\n", + "plt.legend(loc='right',bbox_to_anchor=(1.4, 0.5))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "plt.savefig('cltt_terms.pdf',bbox_inches='tight')" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.7" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/class/notebooks/distances.ipynb b/class/notebooks/distances.ipynb new file mode 100644 index 00000000..84f66065 --- /dev/null +++ b/class/notebooks/distances.ipynb @@ -0,0 +1,169 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false, + "deletable": true, + "editable": true + }, + "outputs": [], + "source": [ + "# import necessary modules\n", + "# uncomment to get plots displayed in notebook\n", + "%matplotlib inline\n", + "import matplotlib\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "from classy import Class" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true, + "deletable": true, + "editable": true + }, + "outputs": [], + "source": [ + "font = {'size' : 20, 'family':'STIXGeneral'}\n", + "axislabelfontsize='large'\n", + "matplotlib.rc('font', **font)\n", + "matplotlib.mathtext.rcParams['legend.fontsize']='medium'" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false, + "deletable": true, + "editable": true + }, + "outputs": [], + "source": [ + "#Lambda CDM\n", + "LCDM = Class()\n", + "LCDM.set({'Omega_cdm':0.25,'Omega_b':0.05})\n", + "LCDM.compute()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false, + "deletable": true, + "editable": true + }, + "outputs": [], + "source": [ + "#Einstein-de Sitter\n", + "CDM = Class()\n", + "CDM.set({'Omega_cdm':0.95,'Omega_b':0.05})\n", + "CDM.compute()\n", + "\n", + "# Just to cross-check that Omega_Lambda is negligible \n", + "# (but not exactly zero because we neglected radiation)\n", + "derived = CDM.get_current_derived_parameters(['Omega0_lambda'])\n", + "print derived\n", + "print \"Omega_Lambda =\",derived['Omega0_lambda']" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false, + "deletable": true, + "editable": true + }, + "outputs": [], + "source": [ + "#Get background quantities and recover their names:\n", + "baLCDM = LCDM.get_background()\n", + "baCDM = CDM.get_background()\n", + "baCDM.viewkeys()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false, + "deletable": true, + "editable": true + }, + "outputs": [], + "source": [ + "#Get H_0 in order to plot the distances in this unit\n", + "fLCDM = LCDM.Hubble(0)\n", + "fCDM = CDM.Hubble(0)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false, + "deletable": true, + "editable": true + }, + "outputs": [], + "source": [ + "namelist = ['lum. dist.','comov. dist.','ang.diam.dist.']\n", + "colours = ['b','g','r']\n", + "for name in namelist:\n", + " idx = namelist.index(name)\n", + " plt.loglog(baLCDM['z'],fLCDM*baLCDM[name],colours[idx]+'-')\n", + "plt.legend(namelist,loc='upper left')\n", + "for name in namelist:\n", + " idx = namelist.index(name)\n", + " plt.loglog(baCDM['z'],fCDM*baCDM[name],colours[idx]+'--')\n", + "plt.xlim([0.07, 10])\n", + "plt.ylim([0.08, 20])\n", + "\n", + "plt.xlabel(r\"$z$\")\n", + "plt.ylabel(r\"$\\mathrm{Distance}\\times H_0$\")\n", + "plt.tight_layout()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false, + "deletable": true, + "editable": true + }, + "outputs": [], + "source": [ + "plt.savefig('distances.pdf')" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.13" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/class/notebooks/many_times.ipynb b/class/notebooks/many_times.ipynb new file mode 100644 index 00000000..e8b61653 --- /dev/null +++ b/class/notebooks/many_times.ipynb @@ -0,0 +1,342 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "# import necessary modules\n", + "# uncomment to get plots displayed in notebook\n", + "%matplotlib inline\n", + "import matplotlib\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "from classy import Class\n", + "from scipy.optimize import fsolve\n", + "from scipy.interpolate import interp1d\n", + "import math" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "# esthetic definitions for the plots\n", + "font = {'size' : 16, 'family':'STIXGeneral'}\n", + "axislabelfontsize='large'\n", + "matplotlib.rc('font', **font)\n", + "matplotlib.mathtext.rcParams['legend.fontsize']='medium'\n", + "plt.rcParams[\"figure.figsize\"] = [8.0,6.0]" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "in a next run with the same values of tau, you may decrease z_max_pk from 46000 to 45512.80656212521\n", + "grid size: 1021 2199 (2199, 1021)\n", + "> Plotting Theta_0\n", + "> Done\n", + "> Plotting phi\n", + "> Done\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "#############################################\n", + "#\n", + "# User settings controlling the figure aspect\n", + "#\n", + "z_max_pk = 46000 # highest redshift involved\n", + "k_per_decade = 400 # number of k values, controls final resolution\n", + "k_min_tau0 = 40. # this value controls the minimum k value in the figure (it is k_min * tau0)\n", + "P_k_max_inv_Mpc =1.0 # this value is directly the maximum k value in the figure in Mpc\n", + "tau_num_early = 2000 # number of conformal time values before recombination, controls final resolution\n", + "tau_num_late = 200 # number of conformal time values after recombination, controls final resolution\n", + "tau_ini = 10. # first value of conformal time in Mpc\n", + "tau_label_Hubble = 20. # value of time at which we want to place the label on Hubble crossing\n", + "tau_label_ks = 40. # value of time at which we want to place the label on sound horizon crossing\n", + "tau_label_kd = 230. # value of time at which we want to place the label on damping scale crossing\n", + "#\n", + "# Cosmological parameters and other CLASS parameters\n", + "#\n", + "common_settings = {# which output? transfer functions only\n", + " 'output':'mTk',\n", + " # LambdaCDM parameters\n", + " 'h':0.67556,\n", + " 'omega_b':0.022032,\n", + " 'omega_cdm':0.12038,\n", + " 'A_s':2.215e-9,\n", + " 'n_s':0.9619,\n", + " 'tau_reio':0.0925,\n", + " # Take fixed value for primordial Helium (instead of automatic BBN adjustment)\n", + " 'YHe':0.246,\n", + " # other output and precision parameters\n", + " 'z_max_pk':z_max_pk,\n", + " # to get a larger z_max in recfast, \n", + " # we must increase both recfast_z_initial \n", + " # and the number of sampled values recfast_Nz0\n", + " # (in order to keep the same stepzize asd in the default: Delta z = 0.5)\n", + " 'recfast_Nz0':z_max_pk*2.,\n", + " 'recfast_z_initial':z_max_pk+1.,\n", + " #'k_step_sub':'0.01',\n", + " 'k_per_decade_for_pk':k_per_decade,\n", + " 'k_per_decade_for_bao':k_per_decade,\n", + " 'k_min_tau0':k_min_tau0, # this value controls the minimum k value in the figure\n", + " 'perturb_sampling_stepsize':'0.05',\n", + " 'P_k_max_1/Mpc':P_k_max_inv_Mpc,\n", + " 'compute damping scale':'yes', # needed to output and plot Silk damping scale\n", + " 'gauge':'newtonian'}\n", + "\n", + "###############\n", + "# \n", + "# call CLASS \n", + "#\n", + "###############\n", + "M = Class()\n", + "M.set(common_settings)\n", + "M.compute()\n", + "#\n", + "# define conformal time sampling array\n", + "#\n", + "times = M.get_current_derived_parameters(['tau_rec','conformal_age'])\n", + "tau_rec=times['tau_rec']\n", + "tau_0 = times['conformal_age']\n", + "tau1 = np.logspace(math.log10(tau_ini),math.log10(tau_rec),tau_num_early)\n", + "tau2 = np.logspace(math.log10(tau_rec),math.log10(tau_0),tau_num_late)[1:]\n", + "tau2[-1] *= 0.999 # this tiny shift avoids interpolation errors\n", + "tau = np.concatenate((tau1,tau2))\n", + "tau_num = len(tau)\n", + "#\n", + "# use table of background and thermodynamics quantitites to define some functions \n", + "# returning some characteristic scales\n", + "# (of Hubble crossing, sound horizon crossing, etc.) at different time\n", + "#\n", + "background = M.get_background() # load background table\n", + "#print background.viewkeys()\n", + "thermodynamics = M.get_thermodynamics() # load thermodynamics table\n", + "#print thermodynamics.viewkeys() \n", + "#\n", + "background_tau = background['conf. time [Mpc]'] # read conformal times in background table\n", + "background_z = background['z'] # read redshift\n", + "background_aH = 2.*math.pi*background['H [1/Mpc]']/(1.+background['z'])/M.h() # read 2pi * aH in [h/Mpc]\n", + "background_ks = 2.*math.pi/background['comov.snd.hrz.']/M.h() # read 2pi/(comoving sound horizon) in [h/Mpc]\n", + "background_rho_m_over_r =\\\n", + " (background['(.)rho_b']+background['(.)rho_cdm'])\\\n", + " /(background['(.)rho_g']+background['(.)rho_ur']) # read rho_r / rho_m (to find time of equality)\n", + "background_rho_l_over_m =\\\n", + " background['(.)rho_lambda']\\\n", + " /(background['(.)rho_b']+background['(.)rho_cdm']) # read rho_m / rho_lambda (to find time of equality)\n", + "thermodynamics_tau = thermodynamics['conf. time [Mpc]'] # read confromal times in thermodynamics table\n", + "thermodynamics_kd = 2.*math.pi/thermodynamics['r_d']/M.h() # read 2pi(comoving diffusion scale) in [h/Mpc]\n", + "#\n", + "# define a bunch of interpolation functions based on previous quantities\n", + "#\n", + "background_z_at_tau = interp1d(background_tau,background_z)\n", + "background_aH_at_tau = interp1d(background_tau,background_aH)\n", + "background_ks_at_tau = interp1d(background_tau,background_ks)\n", + "background_tau_at_mr = interp1d(background_rho_m_over_r,background_tau)\n", + "background_tau_at_lm = interp1d(background_rho_l_over_m,background_tau)\n", + "thermodynamics_kd_at_tau = interp1d(thermodynamics_tau, thermodynamics_kd)\n", + "#\n", + "# infer arrays of characteristic quantitites calculated at values of conformal time in tau array\n", + "#\n", + "aH = background_aH_at_tau(tau) \n", + "ks = background_ks_at_tau(tau)\n", + "kd = thermodynamics_kd_at_tau(tau)\n", + "#\n", + "# infer times of R/M and M/Lambda equalities\n", + "#\n", + "tau_eq = background_tau_at_mr(1.)\n", + "tau_lambda = background_tau_at_lm(1.)\n", + "#\n", + "# check and inform user whether intiial arbitrary choice of z_max_pk was OK\n", + "max_z_needed = background_z_at_tau(tau[0])\n", + "if max_z_needed > z_max_pk:\n", + " print ('you must increase the value of z_max_pk to at least ',max_z_needed)\n", + " () + 1 # this strange line is just a trick to stop the script execution there\n", + "else:\n", + " print ('in a next run with the same values of tau, you may decrease z_max_pk from ',z_max_pk,' to ',max_z_needed)\n", + "#\n", + "# get transfer functions at each time and build arrays Theta0(tau,k) and phi(tau,k)\n", + "#\n", + "for i in range(tau_num):\n", + " one_time = M.get_transfer(background_z_at_tau(tau[i])) # transfer functions at each time tau\n", + " if i ==0: # if this is the first time in the loop: create the arrays (k, Theta0, phi)\n", + " k = one_time['k (h/Mpc)']\n", + " k_num = len(k)\n", + " Theta0 = np.zeros((tau_num,k_num))\n", + " phi = np.zeros((tau_num,k_num))\n", + " Theta0[i,:] = 0.25*one_time['d_g'][:]\n", + " phi[i,:] = one_time['phi'][:]\n", + "#\n", + "# find the global extra of Theta0(tau,k) and phi(tau,k), used to define color code later\n", + "#\n", + "Theta_amp = max(Theta0.max(),-Theta0.min()) \n", + "phi_amp = max(phi.max(),-phi.min()) \n", + "#\n", + "# reshaping of (k,tau) necessary to call the function 'pcolormesh'\n", + "#\n", + "K,T = np.meshgrid(k,tau)\n", + "#\n", + "# inform user of the size of the grids (related to the figure resolution)\n", + "#\n", + "print ('grid size:',len(k),len(tau),Theta0.shape)\n", + "#\n", + "#################\n", + "#\n", + "# start plotting\n", + "#\n", + "#################\n", + "#\n", + "fig = plt.figure(figsize=(18,8)) \n", + "#\n", + "# plot Theta0(k,tau)\n", + "#\n", + "ax_Theta = fig.add_subplot(121)\n", + "print ('> Plotting Theta_0')\n", + "fig_Theta = ax_Theta.pcolormesh(K,T,Theta0,cmap='coolwarm',vmin=-Theta_amp, vmax=Theta_amp) #,shading='gouraud')\n", + "print ('> Done')\n", + "#\n", + "# plot lines (characteristic times and scales)\n", + "#\n", + "ax_Theta.axhline(y=tau_rec,color='k',linestyle='-')\n", + "ax_Theta.axhline(y=tau_eq,color='k',linestyle='-')\n", + "ax_Theta.axhline(y=tau_lambda,color='k',linestyle='-')\n", + "ax_Theta.plot(aH,tau,'r-',linewidth=2)\n", + "ax_Theta.plot(ks,tau,color='#FFFF33',linestyle='-',linewidth=2)\n", + "ax_Theta.plot(kd,tau,'b-',linewidth=2)\n", + "#\n", + "# dealing with labels\n", + "#\n", + "ax_Theta.set_title(r'$\\Theta_0$')\n", + "ax_Theta.text(1.5*k[0],0.9*tau_rec,r'$\\mathrm{rec.}$')\n", + "ax_Theta.text(1.5*k[0],0.9*tau_eq,r'$\\mathrm{R/M} \\,\\, \\mathrm{eq.}$')\n", + "ax_Theta.text(1.5*k[0],0.9*tau_lambda,r'$\\mathrm{M/L} \\,\\, \\mathrm{eq.}$')\n", + "ax_Theta.annotate(r'$\\mathrm{Hubble} \\,\\, \\mathrm{cross.}$',\n", + " xy=(background_aH_at_tau(tau_label_Hubble),tau_label_Hubble),\n", + " xytext=(0.1*background_aH_at_tau(tau_label_Hubble),0.8*tau_label_Hubble),\n", + " arrowprops=dict(facecolor='black', shrink=0.05, width=1, headlength=5, headwidth=5))\n", + "ax_Theta.annotate(r'$\\mathrm{sound} \\,\\, \\mathrm{horizon} \\,\\, \\mathrm{cross.}$',\n", + " xy=(background_ks_at_tau(tau_label_ks),tau_label_ks),\n", + " xytext=(0.07*background_aH_at_tau(tau_label_ks),0.8*tau_label_ks),\n", + " arrowprops=dict(facecolor='black', shrink=0.05, width=1, headlength=5, headwidth=5))\n", + "ax_Theta.annotate(r'$\\mathrm{damping} \\,\\, \\mathrm{scale} \\,\\, \\mathrm{cross.}$',\n", + " xy=(thermodynamics_kd_at_tau(tau_label_kd),tau_label_kd),\n", + " xytext=(0.2*thermodynamics_kd_at_tau(tau_label_kd),2.0*tau_label_kd),\n", + " arrowprops=dict(facecolor='black', shrink=0.05, width=1, headlength=5, headwidth=5))\n", + "#\n", + "# dealing with axes\n", + "#\n", + "ax_Theta.set_xlim(k[0],k[-1])\n", + "ax_Theta.set_xscale('log')\n", + "ax_Theta.set_yscale('log')\n", + "ax_Theta.set_xlabel(r'$k \\,\\,\\, \\mathrm{[h/Mpc]}$')\n", + "ax_Theta.set_ylabel(r'$\\tau \\,\\,\\, \\mathrm{[Mpc]}$')\n", + "ax_Theta.invert_yaxis()\n", + "#\n", + "# color legend\n", + "#\n", + "fig.colorbar(fig_Theta)\n", + "#\n", + "# plot phi(k,tau)\n", + "#\n", + "ax_phi = fig.add_subplot(122)\n", + "ax_phi.set_xlim(k[0],k[-1])\n", + "#ax_phi.pcolor(K,T,phi,cmap='coolwarm')\n", + "print ('> Plotting phi')\n", + "fig_phi = ax_phi.pcolormesh(K,T,phi,cmap='coolwarm',vmin=-0., vmax=phi_amp)\n", + "print ('> Done')\n", + "#\n", + "# plot lines (characteristic times and scales)\n", + "#\n", + "ax_phi.axhline(y=tau_rec,color='k',linestyle='-')\n", + "ax_phi.axhline(y=tau_eq,color='k',linestyle='-')\n", + "ax_phi.axhline(y=tau_lambda,color='k',linestyle='-')\n", + "ax_phi.plot(aH,tau,'r-',linewidth=2)\n", + "ax_phi.plot(ks,tau,color='#FFFF33',linestyle='-',linewidth=2)\n", + "#\n", + "# dealing with labels\n", + "#\n", + "ax_phi.set_title(r'$\\phi$')\n", + "ax_phi.text(1.5*k[0],0.9*tau_rec,r'$\\mathrm{rec.}$')\n", + "ax_phi.text(1.5*k[0],0.9*tau_eq,r'$\\mathrm{R/M} \\,\\, \\mathrm{eq.}$')\n", + "ax_phi.text(1.5*k[0],0.9*tau_lambda,r'$\\mathrm{M/L} \\,\\, \\mathrm{eq.}$')\n", + "ax_phi.annotate(r'$\\mathrm{Hubble} \\,\\, \\mathrm{cross.}$',\n", + " xy=(background_aH_at_tau(tau_label_Hubble),tau_label_Hubble),\n", + " xytext=(0.1*background_aH_at_tau(tau_label_Hubble),0.8*tau_label_Hubble),\n", + " arrowprops=dict(facecolor='black', shrink=0.05, width=1, headlength=5, headwidth=5))\n", + "ax_phi.annotate(r'$\\mathrm{sound} \\,\\, \\mathrm{horizon} \\,\\, \\mathrm{cross.}$',\n", + " xy=(background_ks_at_tau(tau_label_ks),tau_label_ks),\n", + " xytext=(0.07*background_aH_at_tau(tau_label_ks),0.8*tau_label_ks),\n", + " arrowprops=dict(facecolor='black', shrink=0.05, width=1, headlength=5, headwidth=5))\n", + "#\n", + "# dealing with axes\n", + "#\n", + "ax_phi.set_xscale('log')\n", + "ax_phi.set_yscale('log')\n", + "ax_phi.set_xlabel(r'$k \\,\\,\\, \\mathrm{[h/Mpc]}$')\n", + "ax_phi.set_ylabel(r'$\\tau \\,\\,\\, \\mathrm{[Mpc]}$')\n", + "ax_phi.invert_yaxis()\n", + "#\n", + "# color legend\n", + "#\n", + "fig.colorbar(fig_phi)\n", + "#\n", + "# produce the PDF\n", + "#\n", + "#plt.show()\n", + "plt.savefig('many_times.png',dpi=300)\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.6" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/class/notebooks/neutrinohierarchy.ipynb b/class/notebooks/neutrinohierarchy.ipynb new file mode 100644 index 00000000..deaab14b --- /dev/null +++ b/class/notebooks/neutrinohierarchy.ipynb @@ -0,0 +1,189 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false, + "deletable": true, + "editable": true + }, + "outputs": [], + "source": [ + "# import necessary modules\n", + "# uncomment to get plots displayed in notebook\n", + "%matplotlib inline\n", + "import matplotlib\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "from classy import Class\n", + "from scipy.optimize import fsolve" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false, + "deletable": true, + "editable": true + }, + "outputs": [], + "source": [ + "# esthetic definitions for the plots\n", + "font = {'size' : 16, 'family':'STIXGeneral'}\n", + "axislabelfontsize='large'\n", + "matplotlib.rc('font', **font)\n", + "matplotlib.mathtext.rcParams['legend.fontsize']='medium'" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true, + "deletable": true, + "editable": true + }, + "outputs": [], + "source": [ + "# a function returning the three masses given the Delta m^2, the total mass, and the hierarchy (e.g. 'IN' or 'IH')\n", + "# taken from a piece of MontePython written by Thejs Brinckmann\n", + "def get_masses(delta_m_squared_atm, delta_m_squared_sol, sum_masses, hierarchy):\n", + " # any string containing letter 'n' will be considered as refering to normal hierarchy\n", + " if 'n' in hierarchy.lower():\n", + " # Normal hierarchy massive neutrinos. Calculates the individual\n", + " # neutrino masses from M_tot_NH and deletes M_tot_NH\n", + " #delta_m_squared_atm=2.45e-3\n", + " #delta_m_squared_sol=7.50e-5\n", + " m1_func = lambda m1, M_tot, d_m_sq_atm, d_m_sq_sol: M_tot**2. + 0.5*d_m_sq_sol - d_m_sq_atm + m1**2. - 2.*M_tot*m1 - 2.*M_tot*(d_m_sq_sol+m1**2.)**0.5 + 2.*m1*(d_m_sq_sol+m1**2.)**0.5\n", + " m1,opt_output,success,output_message = fsolve(m1_func,sum_masses/3.,(sum_masses,delta_m_squared_atm,delta_m_squared_sol),full_output=True)\n", + " m1 = m1[0]\n", + " m2 = (delta_m_squared_sol + m1**2.)**0.5\n", + " m3 = (delta_m_squared_atm + 0.5*(m2**2. + m1**2.))**0.5\n", + " return m1,m2,m3\n", + " else:\n", + " # Inverted hierarchy massive neutrinos. Calculates the individual\n", + " # neutrino masses from M_tot_IH and deletes M_tot_IH\n", + " #delta_m_squared_atm=-2.45e-3\n", + " #delta_m_squared_sol=7.50e-5\n", + " delta_m_squared_atm = -delta_m_squared_atm\n", + " m1_func = lambda m1, M_tot, d_m_sq_atm, d_m_sq_sol: M_tot**2. + 0.5*d_m_sq_sol - d_m_sq_atm + m1**2. - 2.*M_tot*m1 - 2.*M_tot*(d_m_sq_sol+m1**2.)**0.5 + 2.*m1*(d_m_sq_sol+m1**2.)**0.5\n", + " m1,opt_output,success,output_message = fsolve(m1_func,sum_masses/3.,(sum_masses,delta_m_squared_atm,delta_m_squared_sol),full_output=True)\n", + " m1 = m1[0]\n", + " m2 = (delta_m_squared_sol + m1**2.)**0.5\n", + " m3 = (delta_m_squared_atm + 0.5*(m2**2. + m1**2.))**0.5\n", + " return m1,m2,m3" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false, + "deletable": true, + "editable": true + }, + "outputs": [], + "source": [ + "# test of this function, returning the 3 masses for total mass of 0.1eV\n", + "m1,m2,m3 = get_masses(2.45e-3,7.50e-5,0.1,'NH')\n", + "print 'NH:',m1,m2,m3,m1+m2+m3\n", + "m1,m2,m3 = get_masses(2.45e-3,7.50e-5,0.1,'IH')\n", + "print 'IH:',m1,m2,m3,m1+m2+m3" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false, + "deletable": true, + "editable": true + }, + "outputs": [], + "source": [ + "# The goal of this cell is to compute the ratio of P(k) for NH and IH with the same total mass\n", + "commonsettings = {'N_ur':0,\n", + " 'N_ncdm':3,\n", + " 'output':'mPk',\n", + " 'P_k_max_1/Mpc':3.0,\n", + " # The next line should be uncommented fgor higher precision (but significantly slower running)\n", + " 'ncdm_fluid_approximation':3,\n", + " # You may uncomment this line to get more info on the ncdm sector from Class:\n", + " 'background_verbose':1\n", + " }\n", + "\n", + "# array of k values in 1/Mpc\n", + "kvec = np.logspace(-4,np.log10(3),100)\n", + "# array for storing legend\n", + "legarray = []\n", + "\n", + "# loop over total mass values\n", + "for sum_masses in [0.1, 0.115, 0.13]:\n", + " # normal hierarchy\n", + " [m1, m2, m3] = get_masses(2.45e-3,7.50e-5, sum_masses, 'NH')\n", + " NH = Class()\n", + " NH.set(commonsettings)\n", + " NH.set({'m_ncdm':str(m1)+','+str(m2)+','+str(m3)})\n", + " NH.compute()\n", + " # inverted hierarchy\n", + " [m1, m2, m3] = get_masses(2.45e-3,7.50e-5, sum_masses, 'IH')\n", + " IH = Class()\n", + " IH.set(commonsettings)\n", + " IH.set({'m_ncdm':str(m1)+','+str(m2)+','+str(m3)})\n", + " IH.compute()\n", + " pkNH = []\n", + " pkIH = []\n", + " for k in kvec:\n", + " pkNH.append(NH.pk(k,0.))\n", + " pkIH.append(IH.pk(k,0.))\n", + " NH.struct_cleanup()\n", + " IH.struct_cleanup()\n", + " # extract h value to convert k from 1/Mpc to h/Mpc\n", + " h = NH.h()\n", + " plt.semilogx(kvec/h,1-np.array(pkNH)/np.array(pkIH))\n", + " legarray.append(r'$\\Sigma m_i = '+str(sum_masses)+'$eV')\n", + "plt.axhline(0,color='k')\n", + "plt.xlim(kvec[0]/h,kvec[-1]/h)\n", + "plt.xlabel(r'$k [h \\mathrm{Mpc}^{-1}]$')\n", + "plt.ylabel(r'$1-P(k)^\\mathrm{NH}/P(k)^\\mathrm{IH}$')\n", + "plt.legend(legarray) " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false, + "deletable": true, + "editable": true + }, + "outputs": [], + "source": [ + "plt.savefig('neutrinohierarchy.pdf')" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.13" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/class/notebooks/one_k.ipynb b/class/notebooks/one_k.ipynb new file mode 100644 index 00000000..50691b09 --- /dev/null +++ b/class/notebooks/one_k.ipynb @@ -0,0 +1,211 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# import necessary modules\n", + "# uncomment to get plots displayed in notebook\n", + "%matplotlib inline\n", + "import matplotlib\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "from classy import Class\n", + "from scipy.optimize import fsolve\n", + "from scipy.interpolate import interp1d\n", + "import math" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# esthetic definitions for the plots\n", + "font = {'size' : 16, 'family':'STIXGeneral'}\n", + "axislabelfontsize='large'\n", + "matplotlib.rc('font', **font)\n", + "matplotlib.mathtext.rcParams['legend.fontsize']='medium'\n", + "plt.rcParams[\"figure.figsize\"] = [8.0,6.0]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#############################################\n", + "#\n", + "# value of k that we want to follow in [1/Mpc]\n", + "#\n", + "k = 0.5 # 1/Mpc\n", + "#\n", + "# Cosmological parameters and other CLASS parameters\n", + "#\n", + "common_settings = {# we need to set the output field to something although\n", + " # the really releveant outpout here will be set with 'k_output_values'\n", + " 'output':'mPk',\n", + " # value of k we want to polot in [1/Mpc]\n", + " 'k_output_values':k,\n", + " # LambdaCDM parameters\n", + " 'h':0.67556,\n", + " 'omega_b':0.022032,\n", + " 'omega_cdm':0.12038,\n", + " 'A_s':2.215e-9,\n", + " 'n_s':0.9619,\n", + " 'tau_reio':0.0925,\n", + " # Take fixed value for primordial Helium (instead of automatic BBN adjustment)\n", + " 'YHe':0.246,\n", + " # other options and settings\n", + " 'compute damping scale':'yes', # needed to output the time of damping scale crossing\n", + " 'gauge':'newtonian'} \n", + "##############\n", + "# \n", + "# call CLASS\n", + "#\n", + "M = Class()\n", + "M.set(common_settings)\n", + "M.compute()\n", + "#\n", + "# load perturbations\n", + "#\n", + "all_k = M.get_perturbations() # this potentially constains scalars/tensors and all k values\n", + "print all_k['scalar'][0].viewkeys()\n", + "# \n", + "one_k = all_k['scalar'][0] # this contains only the scalar perturbations for the requested k values\n", + "# \n", + "tau = one_k['tau [Mpc]']\n", + "Theta0 = 0.25*one_k['delta_g']\n", + "phi = one_k['phi']\n", + "psi = one_k['psi']\n", + "theta_b = one_k['theta_b']\n", + "a = one_k['a']\n", + "# compute related quantitites \n", + "R = 3./4.*M.Omega_b()/M.Omega_g()*a # R = 3/4 * (rho_b/rho_gamma)\n", + "zero_point = -(1.+R)*psi # zero point of oscillations: -(1.+R)*psi\n", + "#\n", + "# get Theta0 oscillation amplitude (for vertical scale of plot)\n", + "#\n", + "Theta0_amp = max(Theta0.max(),-Theta0.min())\n", + "#\n", + "# get the time of decoupling\n", + "#\n", + "quantities = M.get_current_derived_parameters(['tau_rec'])\n", + "# print times.viewkeys()\n", + "tau_rec = quantities['tau_rec']\n", + "#\n", + "# use table of background quantitites to find the time of\n", + "# Hubble crossing (k / (aH)= 2 pi), sound horizon crossing (k * rs = 2pi)\n", + "#\n", + "background = M.get_background() # load background table\n", + "#print background.viewkeys()\n", + "#\n", + "background_tau = background['conf. time [Mpc]'] # read confromal times in background table\n", + "background_z = background['z'] # read redshift\n", + "background_k_over_aH = k/background['H [1/Mpc]']*(1.+background['z']) # read k/aH = k(1+z)/H\n", + "background_k_rs = k * background['comov.snd.hrz.'] # read k * rs\n", + "background_rho_m_over_r =\\\n", + " (background['(.)rho_b']+background['(.)rho_cdm'])\\\n", + " /(background['(.)rho_g']+background['(.)rho_ur']) # read rho_r / rho_m (to find time of equality)\n", + "#\n", + "# define interpolation functions; we want the value of tau when the argument is equal to 2pi (or 1 for equality)\n", + "#\n", + "tau_at_k_over_aH = interp1d(background_k_over_aH,background_tau)\n", + "tau_at_k_rs = interp1d(background_k_rs,background_tau)\n", + "tau_at_rho_m_over_r = interp1d(background_rho_m_over_r,background_tau)\n", + "#\n", + "# finally get these times\n", + "#\n", + "tau_Hubble = tau_at_k_over_aH(2.*math.pi)\n", + "tau_s = tau_at_k_rs(2.*math.pi)\n", + "tau_eq = tau_at_rho_m_over_r(1.)\n", + "#\n", + "#################\n", + "#\n", + "# start plotting\n", + "#\n", + "#################\n", + "# \n", + "plt.xlim([tau[0],tau_rec*1.3])\n", + "plt.ylim([-1.3*Theta0_amp,1.3*Theta0_amp])\n", + "plt.xlabel(r'$\\tau \\,\\,\\, \\mathrm{[Mpc]}$')\n", + "plt.title(r'$\\mathrm{Transfer} (\\tau,k) \\,\\,\\, \\mathrm{for} \\,\\,\\, k=%g \\,\\,\\, [1/\\mathrm{Mpc}]$'%k)\n", + "plt.grid()\n", + "#\n", + "plt.axvline(x=tau_Hubble,color='r')\n", + "plt.axvline(x=tau_s,color='y')\n", + "plt.axvline(x=tau_eq,color='k')\n", + "plt.axvline(x=tau_rec,color='k')\n", + "#\n", + "plt.annotate(r'Hubble cross.',\n", + " xy=(tau_Hubble,1.08*Theta0_amp),\n", + " xytext=(0.15*tau_Hubble,1.18*Theta0_amp),\n", + " arrowprops=dict(facecolor='black', shrink=0.05, width=1, headlength=5, headwidth=5))\n", + "plt.annotate(r'sound hor. cross.',\n", + " xy=(tau_s,-1.0*Theta0_amp),\n", + " xytext=(1.5*tau_s,-1.2*Theta0_amp),\n", + " arrowprops=dict(facecolor='black', shrink=0.05, width=1, headlength=5, headwidth=5))\n", + "plt.annotate(r'eq.',\n", + " xy=(tau_eq,1.08*Theta0_amp),\n", + " xytext=(0.45*tau_eq,1.18*Theta0_amp),\n", + " arrowprops=dict(facecolor='black', shrink=0.05, width=1, headlength=5, headwidth=5))\n", + "plt.annotate(r'rec.',\n", + " xy=(tau_rec,1.08*Theta0_amp),\n", + " xytext=(0.45*tau_rec,1.18*Theta0_amp),\n", + " arrowprops=dict(facecolor='black', shrink=0.05, width=1, headlength=5, headwidth=5))\n", + "#\n", + "# Possibility to add functions one by one, saving between each (for slides)\n", + "#\n", + "plt.semilogx(tau,psi,'y-',label=r'$\\psi$')\n", + "#plt.legend(loc='right',bbox_to_anchor=(1.4, 0.5))\n", + "#plt.savefig('one_k_1.pdf',bbox_inches='tight')\n", + "#\n", + "plt.semilogx(tau,phi,'r-',label=r'$\\phi$')\n", + "#plt.legend(loc='right',bbox_to_anchor=(1.4, 0.5))\n", + "#plt.savefig('one_k_2.pdf',bbox_inches='tight')\n", + "#\n", + "plt.semilogx(tau,zero_point,'k:',label=r'$-(1+R)\\psi$')\n", + "#plt.legend(loc='right',bbox_to_anchor=(1.4, 0.5))\n", + "#plt.savefig('one_k_3.pdf',bbox_inches='tight')\n", + "#\n", + "plt.semilogx(tau,Theta0,'b-',linewidth=2,label=r'$\\Theta_0$')\n", + "#plt.legend(loc='right',bbox_to_anchor=(1.4, 0.5))\n", + "#plt.savefig('one_k_4.pdf',bbox_inches='tight')\n", + "#\n", + "plt.semilogx(tau,Theta0+psi,'c-',linewidth=2,label=r'$\\Theta_0+\\psi$')\n", + "#plt.legend(loc='right',bbox_to_anchor=(1.4, 0.5))\n", + "#plt.savefig('one_k_5.pdf',bbox_inches='tight')\n", + "#\n", + "plt.semilogx(tau,theta_b,'g-',label=r'$\\theta_b$')\n", + "plt.legend(loc='right',bbox_to_anchor=(1.4, 0.5))\n", + "plt.savefig('one_k.pdf',bbox_inches='tight')\n", + "#" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.7" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/class/notebooks/one_time.ipynb b/class/notebooks/one_time.ipynb new file mode 100644 index 00000000..20ae6741 --- /dev/null +++ b/class/notebooks/one_time.ipynb @@ -0,0 +1,321 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": true, + "deletable": true, + "editable": true + }, + "outputs": [], + "source": [ + "# import necessary modules\n", + "# uncomment to get plots displayed in notebook\n", + "%matplotlib inline\n", + "import matplotlib\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "from classy import Class\n", + "from scipy.optimize import fsolve\n", + "from scipy.interpolate import interp1d\n", + "import math" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false, + "deletable": true, + "editable": true + }, + "outputs": [], + "source": [ + "# esthetic definitions for the plots\n", + "font = {'size' : 16, 'family':'STIXGeneral'}\n", + "axislabelfontsize='large'\n", + "matplotlib.rc('font', **font)\n", + "matplotlib.mathtext.rcParams['legend.fontsize']='medium'\n", + "plt.rcParams[\"figure.figsize\"] = [8.0,6.0]" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false, + "deletable": true, + "editable": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "dict_keys(['phi', 'psi', 't_cdm', 't_b', 'd_tot', 't_g', 'd_ur', 'd_cdm', 'd_b', 't_tot', 't_ur', 'd_g', 'k (h/Mpc)'])\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAArMAAAL0CAYAAAAfur/PAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xd4VFX6wPHvmcmkV0ILNSDSBEHA0FQQcAUFsbA2VKzr\nurrsKoq6Lu7aVtCVHyCsYu+7YAEUUAQlWOlITyD0TkivM5OZ9/fHJCEJSQjJJJPA+3me+8zcc+49\n98zkZPLmzLnnGBFBKaWUUkqphsji6woopZRSSilVXRrMKqWUUkqpBkuDWaWUUkop1WBpMKuUUkop\npRosDWaVUkoppVSDpcGsUkoppZRqsDSYVUoppZRSDZYGs0oppZRSqsHSYFapc5Ax5p/GGDHG+NWg\njPcKyxBjTHx1yzbGxBhj3MaYS4wxd5Yos2M5xw4qkT+sunU/TX3+XuIaB2vjGkoppbxHg1mlVE0c\nBfoDf6pBGaOBZOCXEmlZwO3lHDuuMK82vYvnNS2u5esopZTyAg1mlVI1YReRlSKyrQZlXAt8JSLu\nEmlfALcZY0xRgjEmCBgDfF6Da52WiBwSkZV4AmyllFL1nAazSikAjDHDjTHZxpiZxhhvfDa0M8Ys\nKixznzHm6bLlGmPCgcuB+WXO/RBoC1xSIu06PJ9ZpwSzJYY2dDfGLDfG5Bpjjhhjni3nmj2MMfOM\nMSnGmDxjTKIx5kkvvF6llFI+oMGsUgpjzB3Al8BkEXmoTC9pdc0DvsfT8zofeAbPMIGSrgIcwLIy\n6fuAHyg91OCOwjKzK7nm/MKyrgU+ASYBTxdlGmPigF+B84CHgauBqUCrqr8spZRS9Um1b/5QSp0d\njDETgReAB0TkLS8W/YqIvFv4fJkxZghwC54xqUWuBZaISH45538AvGKMGQ9EAcOAEae55psiMrnw\n+beFPb8TjDHTRCQd+DeQAvQTkdzC474/41emlFKq3tCeWaXObf+Hp8d0jJcDWYBFZfa3AG2Kdowx\n/niC07JDDIp8CgQAo4CxeG42++4015xbZv9/QCjQzRgTDAwEPi4RyCqllGrgtGdWqXPbLXiCzLJf\n83tDapl9OxBYYn8IEAwsLO9kEckyxszHM9QgFk8Q6i5xT1h5jlWw3xLYg+cfeJ1uSymlziLaM6vU\nuW0ont7Sr40xoXV87WuBFYVf/1fkAzzjWrsXPj+dZhXsHwLSADeewFYppdRZQoNZpc5tW4HBwPnU\nYUBbOOXWNVQ8xKDIUjxDB14Xka1VKPrGMvs347lhbHPh0IKf8Ez5FXSGVVZKKVVP6TADpc5xIrLd\nGDMYWA4sMcYMF5HaXpigLxDDaYJZEXHhGQpRVfcVTsW1BrgSuBf4p4hkFOY/CqwAfjXGvIJnyEF7\noKeI/PnMXoJSSqn6QHtmlVKISCIwCM/crkWzANSma4F1IuLt8aujgSvwTDN2G/A88FxRpoiswXMT\n2AHgVTyrfD2GjqNVSqkGy4iIr+uglGqAjDHv4Rmi0AGQwl7Uqp6bAHwkIs97qS7/BP4B2ESkoIZl\nGcAKvA0MFRGdg1YppeoxHWaglKqJtoATz1f3g6t6koh0rq0KecFTnOzNPeTLiiillDo9DWaVUtX1\nT2Bm4fPaHmNbl94Gvil87vBlRZRSSp2eDjNQSinVIBhjGgFRIrLL13VRStUfegOYUkqpes8Y0wnP\nCnCX+7ouSqn6RYNZ5XXGGIsx5iljzMfGmNWFf4SUKsUYE2SMmW2M2WCM2WSM6enrOqn6q3DGjY2+\nrodSqv7RYFYBYIyJ8WJxnYCZIjIWmANc5cWylQ95uZ1cAzwmIhcB84BnvFi28jEvtxWllKqQ3gB2\njjPGDACeAFoBvcrkheKZpzMJCAVaAxNFJKeyMkVke+H5gXiWSn3W+zVXdak22gkwT0SKbrBaDbTw\naqWVT9RSW1FKqQppz+w5zBgTBuzC809NeW1hLpAiIjNFZDJwAnijimWHAH8EhgN3eafGyhdqq52U\nCGQBLgNe8EJ1lQ/VpK0YYy42xqwsb6uzF6CUapB0NgNVNPl9TxHpWSLtEuBHoGuJntYOQCLQFQjH\ns4LSKUSkX4lywoGlItK31l6AqhO11U6MMUOBLBFZXasvQNWZ6rSVwjGxVSn3JxF5qzbqrZRqmHSY\ngarI5YCj6I8OgIgkGWMcwHARmQ70q/Dsk+zA5lqqo/K9GrUTY8xlQLKIbCoclhItIrpQwdmp0raC\nJ6itkDHmfOBCwG2MWSAiybVaW6VUg6HBrKpISyCtnPRUILayE40xV+O5medlIAj4m7crp+qNmrST\n64BZQKpnBVkMZcZYqrNKtdsKgIjsRNuHUqocGsyqitjxLFNalgVP0FEhEVkELKqNSql6pybtZB6e\nWQzUuaHabUUppSqjN4CpihwAIstJbwTsq+O6qPpL24mqKm0rSqlaocGsqshiINQY06YowRjTGfAv\nzFMKtJ2oqtO2opSqFRrMKgBr2QQR2QZ8C4wtkXwj8HVV7jpWZyVtJ6qqtK0opeqMTs11DjPGBAEj\ngelABPAHPNNoHS/MjwSmALvxjGk7D8+KTem+qbHyBW0nqqq0rSilfEGDWaWUUkop1WDpMAOllFJK\nKdVgaTCrlFJKKaUaLA1mlVJKKaVUg6XBrFJKKaWUarA0mFVKKaWUUg2WBrNKKaWUUqrB0mBWKaWU\nUko1WBrMqjNijPmDr+ugGgZtK6oqtJ0opWpKg9kyjDGjfFHGmZxT1WNPd1xl+ZXkNYg/PN74OdZ2\n+dUtw9ttpZbaCTSAtlLb7cRb19DPFN9rCJ8p1S2nLn4PlKpNGsyeyhu/1NUp40zOqeqxpzuusvyG\n/uFW2/X3VTs50/Oqcqy2k/p/Df1M8b2G8JlS3XIa+s9GneN0OdsywsPDpWPHjjUqIyMjg4iIiFo7\np6rHnu64yvIryjt48CCtWrWqUj19qTo/g7ouv7pleLut1EY7gYbRVmq7nXjrGuWWkZjoeezUqcbX\nLXtsbq6n7ODgTpUedybX1M+Uuim/OuWsW7cuU0Rq9xdBqVrk5+sK1DcdO3Zk7dq1vq5GvRUfH8/g\nwYN9XQ3VAGhbqWVF7218vNeL3rDBU/ZFF3m/7LK0nfieMWanr+ugVE3oMAOllFJKKdVgaTCrlFJK\nKaUarAYZzBpjYnxdB6WUUkop5XsNasysMWYA8ATQCuhVyXGhwPNAEhAKtAYmikhOXdRTKaWUUkrV\njQbTM2uMCQN24QnAT1fvuUCKiMwUkcnACeCNWq6iUkoppZSqYw0mmBWRLBE5Bhyv7DhjzCXACOCz\nEskfAjcbY8qfw0YppZRSSjVIDSaYPQOXAw4R2V6UICJJgAMY7rNaKaWUUkopr2tQY2arqCWQVk56\nKhBb3gmFa4P/AaBZs2bE18K8jWeL7OxsfX/UKVwuF9u3b6djx474+/sDpdtKefllpaWlkZKSQocO\nHeqq2g1az/R0AH6rld9HT9l18bte258pTqeTnTt30rVr13Lz09PTSU1NpX379rVWB6VULRORBrUB\n7wG/VZI/HThQTvoRYNrpyu/du7eoii1fvtzXVVBesHLlShk1apQAMmDAAFm6dKmIiGRmZsqbb74p\noaGhAsiUKVPk2LFjlZaVnJwsY8eOFUCSk5OL04vaSkX5JX388ccSFhYm48aN88rrOycMGuTZasH6\n9YNk/fraKbus2vxM2bt3r4wYMULatm1bbv6yZcskKipKHnzwwVqrQ0MArJV68PddN92qu52NwwwO\nAJHlpDcC9tVxXZSql/r27cuf//xnAO666y6GDRsGQFhYGPfeey89evSgRYsWTJw4kaZNm1ZaVuPG\njbnnnnuqnQ9w66230rNnzzN8FUpVrm3bttx4440V5g8dOpTu3bvXYY2UUrXhbAxmFwOhxpg2RQnG\nmM6Af2GeUgqw2WwA+PmdOtrIz8+vOL8qjDE1ygewWM7GjyNV31WlbSql6reGOGbWWjbBGDMecInI\nLBHZZoz5FhgLvFh4yI3A1yKSWIf1VOqskJWVxaRJk5g+fTp79uwhKiqKN954g4kTJ7J8+XIGDx5c\nfOyCBQuYMmUKycnJXHzxxfTq1Yvw8PBy80eOHMmsWbNK5Ze0Y8cO3nnnHRwOB/Hx8dx333088MAD\n5R6bmprK1KlTady4MRs2bMBmszFjxgw2b97MBx98QH5+PhdddFHx67jjjjv48MMP2bNnD2FhYSxf\nvpzhw4fzwAMPYIxh//79TJs2jb59+/Lll1/SpEkTpk2bhtPp5IknnqBPnz4kJiaycOFC1q5d69X3\n+2wxbdo0QkJCcDqdPPvssyQkJBAZGUl+fj5TpkwhOjqajIwM5s+fz5QpUxgyZAgJCQnccMMNNGnS\nhPj4eBISEnjooYdISkpi79697Ny5k5deeomkpCTuv/9+ZsyYwY4dO5g1axY33XQTALm5uUycOJHo\n6Giio6OrNB7X5XIxceJEFi1aRHZ2Nh9++CGXXXYZAIcOHWLq1Kl06dKF7du3s3v3bl555RXat2/P\n0qVL+fjjj2nZsiVut5vXXnuNL774giFDhlR6PbfbzfTp03E4HGRlZbFy5Upmz56N1Wrl/fffZ+HC\nhUydOpWxY8cyYsQIZs+ezapVq/jss89o164dq1evJiIighdeeIHQ0NBK22VFPwelziq+HudQ1Q0I\nAn4PHAZy8ASrTQvz5gNflDg2EpgNPI5nkYU3gciqXEfHzFZOx8yePZYvXy6AxMXFyU033VRqa9Kk\nSalxhkXH7tmzR0RE9uzZI0BxeyjKf+mll6SgoEB+/vlnCQkJkdtuu63C/PDw8OJ8EZFBgwYVj5m1\n2+1y5ZVXit1uFxGRzz//XABZvXr1Ka/D4XDIxRdfLJs2bRIRkdTUVAkNDZU5c+ZIQUGBjBw5Utq2\nbStbt26VL7/8UrZt2yZvv/22DBs2rLiMEydOSGRkpPz73/8WEZFHHnlEpkyZIiIiLpdLXn/9dRER\n+fLLL2XEiBHF582aNau6b3/N1eMxsxkZGRIRESFOp1NEPGOi09LSRETk9ttvl+eff7742FdeeUWs\nVqusWrVKRETGjRsng0q8rn/84x+l2uLEiROlUaNGsnLlShEReeihhyQ2NrY4//bbby/+2YmI/POf\n/6xwzKyIp9316NFD9u/fLyIiI0eOlCFDhoiISG5urnTs2FF++umn4uMnTZokrVq1kvT0dHE4HHLh\nhRdKjx495MCBA/LJJ5/IwYMHT/v+PPTQQ6XazsCBA+WBBx4Ql8slL7/8svj5+cn8+fNlw4YNsmTJ\nEtm2bZvExMRIRkaGiIi43W4ZNGiQjBo1SkQqbpeV/RxKQsfM6tbAN59XoL5tGsxWToPZs0dRgPnu\nu++ekjdo0KBqBbNF+SIiN954o/j5+YnD4Sg3f8KECcX5RdcsCmY///xz6dmzp7z44ovy4osvytNP\nPy1Dhw6VTz/99JS6zps3T7p3714qLS0tTdxut4h4gqPLLrusVH7Xrl3lhRdeKJU2fvx4iYmJERGR\n//znPxIaGipvvvmmuFwuKSgoEBGRzZs3i5+fnzzyyCOSkZFRnO4T9TiYdTgc0rJlSxk+fLjs2rVL\nXC6XuN1uOX78uADy888/Fx+7fPlyufDCC+WWW24RkdMHs2X33377bTHGiIjIzp07BZCdO3cW57/7\n7runDWZL3ng4adIkad++vYiIzJ07V/z9/YvbkojnnyVAZs+eXXz+HXfcUeX3Jjk5WaxWq6SkpBSn\n5eTkSH5+fnF9gVLX/NOf/iRXXHFFqXK++OILASQxMbHCdlnRz6EsDWZ1a+ibDlJTStWK8847j4KC\nAlJSUsrN79GjR4X5SUlJdOjQgSeeeIInnniCZ555hmXLljFmzJhTjk1ISDhl3GNkZGSptLL5+/bt\nIysrq1Rax44dOXr0KE6nkz/+8Y889thjPPjgg/Tq1YuNGzcC0K1bNz777DM++ugjzj//fD799NOq\nvRnnGJvNxtKlSzl69ChdunRh0qRJuN1u9u3z3INb3nu/f//+al3LYrEgIgBs2rQJgODg4GrX3WKx\n4HK5AE87cTqd2O324vyoqCgaN25cqr5nMu42KSkJl8tV6pzg4GACAgJKHVcyv6L2CrB///4K22VF\nPwelzjYazCqlzlhR8FAZp9NJ06ZNK5wNweFwVJjftGlTfvnll1JBBMBPP/10yrExMTFs3769OFAq\nkphY8RD5Dh06sHXr1lJpeXl5tGvXDpvNxt69e3n66adJTEykVatWDB06lPz8fPbu3cvo0aNJSkri\nrrvu4tZbb2XlypUVXudclZ2dTZMmTVi3bh1vvPEGr776Ki+//DLnnXcexphy3/tOncpfoLEqba1I\n0fjrsuVXV4cOHRARtm3bViq9svqeTkxMDABff/11qfTTtdcdO3bgdDpL1QGgU6dOFbbLin4OSp1t\nNJhV6hzlcDgATgkYwfOHsuQfziZNmgAU31SydOlS4NQetqIeLYCff/6Z5557rtQsBSXz58+fXyrf\n7XYXBy5XXXUVWVlZ3HDDDWzbto3Dhw/z9NNPk5OTc0pdR44cSVhYGKNHj2bFihXs2rWL559/vrhn\nq+hrqJKefPJJFi1aREJCQnHawoULmTRpEgCzZs0iOzub2NhYPvjgA3JycigoKCA+Pp5ff/2VsLAw\nJk+eTLdu3cjIyABgxowZzJo165T6nYtOnDjBm2++icViYdy4cdx5551kZGQQFRXF/fffz8yZM4vb\nX3Z2NmvWrOGxxx4DPG1t586dZGZmkp6ezurVq8nJySnuUSzbs1jUpkSEAQMG0KpVK5555hmys7MB\nT899VlYW6YWLTJTldrtLlelyuYr3r776ai688EJeeeWV4vzly5fTqlUrfv/73xdft2z72rhxI/fe\ne+8pvx/gmS5s8ODBjB8/nv/+97/s2bOHDz74gO3btxeXV/IR4C9/+Qv5+fm89957xWlfffUV48aN\no3Xr1hW2y4p+DgDLli1j/PjxpX4nlWqwfD3Oob5tOma2cjpm9uzw888/yzXXXCOA9O3bV7755hsR\n8dwwMmvWLAkICDhl0YQ//elPEhYWJpdddpmsWLFCunXrJi+88IKkp6dLRkaG3HbbbXLVVVfJU089\nJX/961/lySefLL5eefkffPBBcf6cOXMkPDxcOnfuLCtWrBARkRUrVkivXr0kODhYLrjgApk7d26F\nr2fNmjXSr18/CQkJkT59+siPP/4oIiLx8fFy/vnnS1RUlHz22WfF4xJFRD755BMZMWKE/Otf/5IJ\nEybIa6+9Vpw3btw4ufTSS+Wtt96SJ598Uj755BMR8YxnbNOmjbz66qsyffp0eeKJJ4rPGT16tFx3\n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\nMxs2mpsRbS3atGljKy4urvUPJjIykmHDhhUvW7YsoaysTMXExJyUtX3vr0wMjwAAIABJREFUvfeS\nAc4777xigBtvvLHT1KlTj9911115H374YcK0adO67tmzZ7PJw0TM5ORkR91ANzIyUqenp1fXFwDX\nZLfbycnJib700kvzAVatWhUDcOaZZ5YBZGdnJ5x++um1apUKCwsjkpOT/fYPzx+tuX7AKDHwpQyg\nwMP+fCCroROVUiZgMPCMj8ckhAgTa4qLg1Yv69IhOppCm8296IC/NJqZdXZWaG6v2TK73asFE6Bl\nZQbuYLaRc+vW2saazX5/joXwVq9evSqqq6vV7t27a/3mePfddx85ceJExMyZMzPqnrNjx46ol156\nqf2wYcNKxo8fX3ro0KGIDRs2xN12223HAS6//PIigGXLlvml/MK16Mjhw4ejwMjEdujQoSolJcX+\nzjvvJG7atCn22muvzat5zoEDB6K6detW4Y/xgI8zs053AR8ppUqAjzA6F9T6rUJr3dT2C5WAp8+F\nTBiTyhpyE/Cs1npDfQcopW5yHkdqairZ2dlNHN6po6SkRJ4f4ZVQea2cAPYBFxw7FtTxFjm/f/j9\n95z0v5cPLceYyLDhhx88vnkedn7/ZuNGmrNQumtShDfPpes/hm1795K9d2+Dx65zff/hByL49eO4\nFevWefzPwWWF6x7r1lGJ8Z/G7kOHyD50qIGzhAgMV2Z12bJlsd26dXN/NHPJJZcU33333QeffPLJ\njP3790dfc801x9u0aWP76aefYubNm5eelJRke+utt/YA7N69OyolJaU6OjraHWtlZGRU7t27N8qb\nTGtTRUREcOGFFxa+++677ex2O2vXro2zWCyOKVOmdF64cGHbqVOnHrv22mvdP0teXp553759lttv\nvz3X12Nxj8kP19zk/D4Hz+UGuhn3PYDREaGuNvz63nkSpdQYwKK1frahi2utF2BMJmPo0KF67Nix\nTRzeqSM7Oxt5foQ3QuW18lV+PmzcyKQBAxjbpk3QxlGdn8/fN24kc9AgxiR5ervzjX9s2UKnkhLG\njRjh8fFKhwOWLiU+K4uxWVlNvn7Mhg20t9sZe/rpXh0flZ1NamYmY7t1a/C4T3ftIubQIc4dMwaA\nxOJiWLOG7n37MjYlpd7zdh06BDt2cO4ZZ5BpsZC8ahWJcXGM7dvX659JCH/p2bNnVf/+/Us//fTT\n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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "#############################################\n", + "#\n", + "# Cosmological parameters and other CLASS parameters\n", + "#\n", + "common_settings = {# wich output? ClTT, transfer functions delta_i and theta_i\n", + " 'output':'tCl,mTk,vTk',\n", + " # LambdaCDM parameters\n", + " 'h':0.67556,\n", + " 'omega_b':0.022032,\n", + " 'omega_cdm':0.12038,\n", + " 'A_s':2.215e-9,\n", + " 'n_s':0.9619,\n", + " 'tau_reio':0.0925,\n", + " # Take fixed value for primordial Helium (instead of automatic BBN adjustment)\n", + " 'YHe':0.246,\n", + " # other output and precision parameters\n", + " 'l_max_scalars':5000,\n", + " 'P_k_max_1/Mpc':10.0,\n", + " 'gauge':'newtonian'}\n", + "###############\n", + "#\n", + "# call CLASS a first time just to compute z_rec (will compute transfer functions at default: z=0)\n", + "#\n", + "M = Class()\n", + "M.set(common_settings)\n", + "M.compute()\n", + "derived = M.get_current_derived_parameters(['z_rec','tau_rec','conformal_age'])\n", + "#print derived.viewkeys()\n", + "z_rec = derived['z_rec']\n", + "z_rec = int(1000.*z_rec)/1000. # round down at 4 digits after coma\n", + "M.struct_cleanup() # clean output\n", + "M.empty() # clean input\n", + "#\n", + "# call CLASS again (will compute transfer functions at inout value z_rec)\n", + "#\n", + "M = Class()\n", + "M.set(common_settings)\n", + "M.set({'z_pk':z_rec})\n", + "M.compute()\n", + "#\n", + "# load transfer functions at recombination\n", + "#\n", + "one_time = M.get_transfer(z_rec)\n", + "print one_time.viewkeys()\n", + "k = one_time['k (h/Mpc)']\n", + "Theta0 = 0.25*one_time['d_g']\n", + "phi = one_time['phi']\n", + "psi = one_time['psi']\n", + "theta_b = one_time['t_b']\n", + "# compute related quantitites\n", + "R = 3./4.*M.Omega_b()/M.Omega_g()/(1+z_rec) # R = 3/4 * (rho_b/rho_gamma) at z_rec\n", + "zero_point = -(1.+R)*psi # zero point of oscillations: -(1.+R)*psi\n", + "#\n", + "# get Theta0 oscillation amplitude (for vertical scale of plot)\n", + "#\n", + "Theta0_amp = max(Theta0.max(),-Theta0.min())\n", + "#\n", + "# use table of background quantitites to find the wavenumbers corresponding to\n", + "# Hubble crossing (k = 2 pi a H), sound horizon crossing (k = 2pi / rs)\n", + "#\n", + "background = M.get_background() # load background table\n", + "#print background.viewkeys()\n", + "#\n", + "background_tau = background['conf. time [Mpc]'] # read confromal times in background table\n", + "background_z = background['z'] # read redshift\n", + "background_kh = 2.*math.pi*background['H [1/Mpc]']/(1.+background['z'])/M.h() # read kh = 2pi aH = 2pi H/(1+z) converted to [h/Mpc]\n", + "background_ks = 2.*math.pi/background['comov.snd.hrz.']/M.h() # read ks = 2pi/rs converted to [h/Mpc]\n", + "#\n", + "# define interpolation functions; we want the value of tau when the argument is equal to 2pi\n", + "#\n", + "kh_at_tau = interp1d(background_tau,background_kh)\n", + "ks_at_tau = interp1d(background_tau,background_ks)\n", + "#\n", + "# finally get these scales\n", + "#\n", + "tau_rec = derived['tau_rec']\n", + "kh = kh_at_tau(tau_rec)\n", + "ks = ks_at_tau(tau_rec)\n", + "#\n", + "#################\n", + "#\n", + "# start plotting\n", + "#\n", + "#################\n", + "#\n", + "fig, (ax_Tk, ax_Tk2, ax_Cl) = plt.subplots(3,sharex=True,figsize=(8,12))\n", + "fig.subplots_adjust(hspace=0)\n", + "##################\n", + "#\n", + "# first figure with transfer functions\n", + "#\n", + "##################\n", + "ax_Tk.set_xlim([3.e-4,0.5])\n", + "ax_Tk.set_ylim([-1.1*Theta0_amp,1.1*Theta0_amp])\n", + "ax_Tk.tick_params(axis='x',which='both',bottom='off',top='on',labelbottom='off',labeltop='on')\n", + "ax_Tk.set_xlabel(r'$\\mathrm{k} \\,\\,\\, \\mathrm{[h/Mpc]}$')\n", + "ax_Tk.set_ylabel(r'$\\mathrm{Transfer}(\\tau_\\mathrm{dec},k)$')\n", + "ax_Tk.xaxis.set_label_position('top')\n", + "ax_Tk.grid()\n", + "#\n", + "ax_Tk.axvline(x=kh,color='r')\n", + "ax_Tk.axvline(x=ks,color='y')\n", + "#\n", + "ax_Tk.annotate(r'Hubble cross.',\n", + " xy=(kh,0.8*Theta0_amp),\n", + " xytext=(0.15*kh,0.9*Theta0_amp),\n", + " arrowprops=dict(facecolor='black', shrink=0.05, width=1, headlength=5, headwidth=5))\n", + "ax_Tk.annotate(r'sound hor. cross.',\n", + " xy=(ks,0.8*Theta0_amp),\n", + " xytext=(1.3*ks,0.9*Theta0_amp),\n", + " arrowprops=dict(facecolor='black', shrink=0.05, width=1, headlength=5, headwidth=5))\n", + "#\n", + "ax_Tk.semilogx(k,psi,'y-',label=r'$\\psi$')\n", + "ax_Tk.semilogx(k,phi,'r-',label=r'$\\phi$')\n", + "ax_Tk.semilogx(k,zero_point,'k:',label=r'$-(1+R)\\psi$')\n", + "ax_Tk.semilogx(k,Theta0,'b-',label=r'$\\Theta_0$')\n", + "ax_Tk.semilogx(k,(Theta0+psi),'c',label=r'$\\Theta_0+\\psi$')\n", + "ax_Tk.semilogx(k,theta_b,'g-',label=r'$\\theta_b$')\n", + "#\n", + "ax_Tk.legend(loc='right',bbox_to_anchor=(1.4, 0.5))\n", + "#######################\n", + "#\n", + "# second figure with transfer functions squared\n", + "#\n", + "#######################\n", + "ax_Tk2.set_xlim([3.e-4,0.5])\n", + "ax_Tk2.tick_params(axis='x',which='both',bottom='off',top='off',labelbottom='off',labeltop='off')\n", + "ax_Tk2.set_ylabel(r'$\\mathrm{Transfer}(\\tau_\\mathrm{dec},k)^2$')\n", + "ax_Tk2.grid()\n", + "#\n", + "ax_Tk2.semilogx(k,(Theta0+psi)**2,'c',label=r'$(\\Theta_0+\\psi)^2$')\n", + "#\n", + "ax_Tk2.legend(loc='right',bbox_to_anchor=(1.4, 0.5))\n", + "########################\n", + "#\n", + "# third figure with all contributions to Cls\n", + "#\n", + "# For that we will need to call CLASS again for each contribution (TSW, earlyISW, lateISW, Doppler, total)\n", + "# Note that there is another contribution from polarisation: we don't plot it individually because it is\n", + "# too small to be seen, however it is included by default in the total.\n", + "#\n", + "# After each step we will save the figure (to get intermediate figures for the slides)\n", + "#\n", + "#########################\n", + "# presentation settings\n", + "ax_Cl.set_xlim([3.e-4,0.5])\n", + "ax_Cl.set_ylim([0.,8.])\n", + "ax_Cl.set_xlabel(r'$\\ell/(\\tau_0-\\tau_{rec}) \\,\\,\\, \\mathrm{[h/Mpc]}$')\n", + "ax_Cl.set_ylabel(r'$\\ell (\\ell+1) C_l^{TT} / 2 \\pi \\,\\,\\, [\\times 10^{10}]$')\n", + "ax_Cl.tick_params(axis='x',which='both',bottom='on',top='off',labelbottom='on',labeltop='off')\n", + "ax_Cl.grid()\n", + "#\n", + "# the x-axis will show l/(tau_0-tau_rec), so we need (tau_0-tau_rec) in units of [Mpc/h]\n", + "#\n", + "tau_0_minus_tau_rec_hMpc = (derived['conformal_age']-derived['tau_rec'])*M.h()\n", + "#\n", + "# save the total Cl's (we will plot them in the last step)\n", + "#\n", + "cl_tot = M.raw_cl(5000)\n", + "#\n", + "# call CLASS with TSW, then plot and save\n", + "#\n", + "M.struct_cleanup() # clean output\n", + "M.empty() # clean input\n", + "M.set(common_settings) # new input\n", + "M.set({'temperature contributions':'tsw'})\n", + "M.compute()\n", + "cl = M.raw_cl(5000)\n", + "#\n", + "ax_Cl.semilogx(cl['ell']/tau_0_minus_tau_rec_hMpc,1.e10*cl['ell']*(cl['ell']+1.)*cl['tt']/2./math.pi,'c-',label=r'$\\mathrm{T+SW}$')\n", + "#\n", + "ax_Cl.legend(loc='right',bbox_to_anchor=(1.4, 0.5))\n", + "fig.savefig('one_time_with_cl_1.pdf',bbox_inches='tight')\n", + "#\n", + "# call CLASS with early ISW, plot; call CLASS with late ISW, plot; then save\n", + "#\n", + "M.struct_cleanup()\n", + "M.empty()\n", + "M.set(common_settings)\n", + "M.set({'temperature contributions':'eisw'})\n", + "M.compute()\n", + "cl = M.raw_cl(5000)\n", + "#\n", + "ax_Cl.semilogx(cl['ell']/tau_0_minus_tau_rec_hMpc,1.e10*cl['ell']*(cl['ell']+1.)*cl['tt']/2./math.pi,'r-',label=r'$\\mathrm{early} \\,\\, \\mathrm{ISW}$')\n", + "#\n", + "M.struct_cleanup()\n", + "M.empty()\n", + "M.set(common_settings)\n", + "M.set({'temperature contributions':'lisw'})\n", + "M.compute()\n", + "cl = M.raw_cl(5000)\n", + "#\n", + "ax_Cl.semilogx(cl['ell']/tau_0_minus_tau_rec_hMpc,1.e10*cl['ell']*(cl['ell']+1.)*cl['tt']/2./math.pi,'y-',label=r'$\\mathrm{late} \\,\\, \\mathrm{ISW}$')\n", + "#\n", + "ax_Cl.legend(loc='right',bbox_to_anchor=(1.4, 0.5))\n", + "fig.savefig('one_time_with_cl_2.pdf',bbox_inches='tight')\n", + "#\n", + "# call CLASS with Doppler, then plot and save\n", + "#\n", + "M.struct_cleanup()\n", + "M.empty()\n", + "M.set(common_settings)\n", + "M.set({'temperature contributions':'dop'})\n", + "M.compute()\n", + "cl = M.raw_cl(5000)\n", + "#\n", + "ax_Cl.semilogx(cl['ell']/tau_0_minus_tau_rec_hMpc,1.e10*cl['ell']*(cl['ell']+1.)*cl['tt']/2./math.pi,'g-',label=r'$\\mathrm{Doppler}$')\n", + "#\n", + "ax_Cl.legend(loc='right',bbox_to_anchor=(1.4, 0.5))\n", + "fig.savefig('one_time_with_cl_3.pdf',bbox_inches='tight')\n", + "#\n", + "# plot the total Cls that had been stored, and save\n", + "#\n", + "ax_Cl.semilogx(cl_tot['ell']/tau_0_minus_tau_rec_hMpc,1.e10*cl_tot['ell']*(cl_tot['ell']+1.)*cl_tot['tt']/2./math.pi,'k-',label=r'$\\mathrm{Total}$')\n", + "#\n", + "ax_Cl.legend(loc='right',bbox_to_anchor=(1.4, 0.5))\n", + "fig.savefig('one_time_with_cl_tot.pdf',bbox_inches='tight')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.13" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/class/notebooks/thermo.ipynb b/class/notebooks/thermo.ipynb new file mode 100644 index 00000000..a4cefd48 --- /dev/null +++ b/class/notebooks/thermo.ipynb @@ -0,0 +1,147 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false, + "deletable": true, + "editable": true + }, + "outputs": [], + "source": [ + "# import necessary modules\n", + "# uncomment to get plots displayed in notebook\n", + "%matplotlib inline\n", + "import matplotlib\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "from classy import Class\n", + "from scipy.optimize import fsolve\n", + "from scipy.interpolate import interp1d\n", + "import math" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false, + "deletable": true, + "editable": true + }, + "outputs": [], + "source": [ + "# esthetic definitions for the plots\n", + "font = {'size' : 16, 'family':'STIXGeneral'}\n", + "axislabelfontsize='large'\n", + "matplotlib.rc('font', **font)\n", + "matplotlib.mathtext.rcParams['legend.fontsize']='medium'\n", + "plt.rcParams[\"figure.figsize\"] = [8.0,6.0]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false, + "deletable": true, + "editable": true + }, + "outputs": [], + "source": [ + "common_settings = {'output' : 'tCl',\n", + " # LambdaCDM parameters\n", + " 'h':0.67556,\n", + " 'omega_b':0.022032,\n", + " 'omega_cdm':0.12038,\n", + " 'A_s':2.215e-9,\n", + " 'n_s':0.9619,\n", + " 'tau_reio':0.0925,\n", + " # Take fixed value for primordial Helium (instead of automatic BBN adjustment)\n", + " 'YHe':0.246,\n", + " 'thermodynamics_verbose':1\n", + " } \n", + "##############\n", + "# \n", + "# call CLASS\n", + "#\n", + "###############\n", + "M = Class()\n", + "M.set(common_settings)\n", + "M.compute()\n", + "derived = M.get_current_derived_parameters(['tau_rec','conformal_age'])\n", + "thermo = M.get_thermodynamics()\n", + "print thermo.viewkeys()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false, + "deletable": true, + "editable": true + }, + "outputs": [], + "source": [ + "tau = thermo['conf. time [Mpc]']\n", + "g = thermo['g [Mpc^-1]']\n", + "# to make the reionisation peak visible, rescale g by 100 for late times\n", + "g[:500] *= 100\n", + "#################\n", + "#\n", + "# start plotting\n", + "#\n", + "#################\n", + "# \n", + "plt.xlim([1.e2,derived['conformal_age']])\n", + "plt.xlabel(r'$\\tau \\,\\,\\, \\mathrm{[Mpc]}$')\n", + "plt.ylabel(r'$\\mathrm{visibility} \\,\\,\\, g \\,\\,\\, [\\mathrm{Mpc}^{-1}]$')\n", + "plt.axvline(x=derived['tau_rec'],color='k')\n", + "# The conformal time at reionisation could be extracted from the code.\n", + "# But we know it because it is part of the standard output\n", + "# when thermodynamics_verbose=1\n", + "plt.axvline(x=4255.316282,color='k')\n", + "#\n", + "# Print functions one by one, saving between each (for slides)\n", + "#\n", + "plt.semilogx(tau,g,'r',label=r'$\\psi$')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true, + "deletable": true, + "editable": true + }, + "outputs": [], + "source": [ + "plt.savefig('thermo.pdf',bbox_inches='tight')" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.13" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/class/notebooks/varying_neff.ipynb b/class/notebooks/varying_neff.ipynb new file mode 100644 index 00000000..96790df9 --- /dev/null +++ b/class/notebooks/varying_neff.ipynb @@ -0,0 +1,270 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false, + "deletable": true, + "editable": true + }, + "outputs": [], + "source": [ + "# import necessary modules\n", + "# uncomment to get plots displayed in notebook\n", + "%matplotlib inline\n", + "import matplotlib\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "from classy import Class\n", + "from scipy.optimize import fsolve\n", + "import math" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false, + "deletable": true, + "editable": true + }, + "outputs": [], + "source": [ + "############################################\n", + "#\n", + "# Varying parameter (others fixed to default)\n", + "#\n", + "var_name = 'N_ur'\n", + "var_array = np.linspace(3.046,5.046,5)\n", + "var_num = len(var_array)\n", + "var_legend = r'$N_\\mathrm{eff}$'\n", + "var_figname = 'neff'\n", + "#\n", + "# Constraints to be matched\n", + "#\n", + "# As explained in the \"Neutrino cosmology\" book, CUP, Lesgourgues et al., section 5.3, the goal is to vary\n", + "# - omega_cdm by a factor alpha = (1 + coeff*Neff)/(1 + coeff*3.046)\n", + "# - h by a factor sqrt*(alpha)\n", + "# in order to keep a fixed z_equality(R/M) and z_equality(M/Lambda)\n", + "#\n", + "# coefficient such that omega_r = omega_gamma (1 + coeff*Neff),\n", + "# i.e. such that omega_ur = omega_gamma * coeff * Neff:\n", + "# coeff = omega_ur/omega_gamma/Neff_standard\n", + "coeff = 1.710730e-05/2.472979e-05/3.046\n", + "print \"coeff=\",coeff\n", + "#\n", + "#############################################\n", + "#\n", + "# Fixed settings\n", + "#\n", + "common_settings = {'output':'tCl,pCl,lCl,mPk',\n", + " 'lensing':'yes',\n", + " # fixed LambdaCDM parameters\n", + " 'omega_b':0.022032,\n", + " 'A_s':2.215e-9,\n", + " 'n_s':0.9619,\n", + " 'tau_reio':0.0925,\n", + " # Take fixed value for primordial Helium (instead of automatic BBN adjustment)\n", + " 'YHe':0.246,\n", + " # other output and precision parameters\n", + " 'P_k_max_1/Mpc':3.0,\n", + " 'l_switch_limber':9} \n", + "#\n", + "##############################################\n", + "#\n", + "# loop over varying parameter values\n", + "#\n", + "M = {}\n", + "#\n", + "for i, N_ur in enumerate(var_array):\n", + " #\n", + " # rescale omega_cdm and h\n", + " #\n", + " alpha = (1.+coeff*N_ur)/(1.+coeff*3.046)\n", + " omega_cdm = (0.022032 + 0.12038)*alpha - 0.022032\n", + " h = 0.67556*math.sqrt(alpha)\n", + " print ' * Compute with %s=%e, %s=%e, %s=%e'%('N_ur',N_ur,'omega_cdm',omega_cdm,'h',h)\n", + " #\n", + " # call CLASS\n", + " #\n", + " M[i] = Class()\n", + " M[i].set(common_settings)\n", + " M[i].set({'N_ur':N_ur})\n", + " M[i].set({'omega_cdm':omega_cdm})\n", + " M[i].set({'h':h})\n", + " M[i].compute()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false, + "deletable": true, + "editable": true + }, + "outputs": [], + "source": [ + "# esthetic definitions for the plots\n", + "font = {'size' : 24, 'family':'STIXGeneral'}\n", + "axislabelfontsize='large'\n", + "matplotlib.rc('font', **font)\n", + "matplotlib.mathtext.rcParams['legend.fontsize']='medium'\n", + "plt.rcParams[\"figure.figsize\"] = [8.0,6.0]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false, + "deletable": true, + "editable": true, + "scrolled": true + }, + "outputs": [], + "source": [ + "#############################################\n", + "#\n", + "# extract spectra and plot them\n", + "#\n", + "#############################################\n", + "kvec = np.logspace(-4,np.log10(3),1000) # array of kvec in h/Mpc\n", + "twopi = 2.*math.pi\n", + "#\n", + "# Create figures\n", + "#\n", + "fig_Pk, ax_Pk = plt.subplots()\n", + "fig_TT, ax_TT = plt.subplots()\n", + "#\n", + "# loop over varying parameter values\n", + "#\n", + "ll = {}\n", + "clM = {}\n", + "clTT = {}\n", + "pkM = {}\n", + "legarray = []\n", + "\n", + "for i, N_ur in enumerate(var_array):\n", + " #\n", + " alpha = (1.+0.2271*N_ur)/(1.+0.2271*3.046)\n", + " h = 0.67556*math.sqrt(alpha) # this is h\n", + " #\n", + " # deal with colors and legends\n", + " #\n", + " if i == 0:\n", + " var_color = 'k'\n", + " var_alpha = 1.\n", + " else:\n", + " var_color = plt.cm.Reds(0.8*i/(var_num-1))\n", + " #\n", + " # get Cls\n", + " #\n", + " clM[i] = M[i].lensed_cl(2500)\n", + " ll[i] = clM[i]['ell'][2:]\n", + " clTT[i] = clM[i]['tt'][2:]\n", + " #\n", + " # store P(k) for common k values\n", + " #\n", + " pkM[i] = []\n", + " # The function .pk(k,z) wants k in 1/Mpc so we must convert kvec for each case with the right h \n", + " khvec = kvec*h # This is k in 1/Mpc\n", + " for kh in khvec:\n", + " pkM[i].append(M[i].pk(kh,0.)*h**3) \n", + " # \n", + " # plot P(k)\n", + " #\n", + " if i == 0:\n", + " ax_Pk.semilogx(kvec,np.array(pkM[i])/np.array(pkM[0]),\n", + " color=var_color,#alpha=var_alpha,\n", + " linestyle='-')\n", + " else:\n", + " ax_Pk.semilogx(kvec,np.array(pkM[i])/np.array(pkM[0]),\n", + " color=var_color,#alpha=var_alpha,\n", + " linestyle='-',\n", + " label=r'$\\Delta N_\\mathrm{eff}=%g$'%(N_ur-3.046))\n", + " #\n", + " # plot C_l^TT\n", + " #\n", + " if i == 0:\n", + " ax_TT.semilogx(ll[i],clTT[i]/clTT[0],\n", + " color=var_color,alpha=var_alpha,linestyle='-')\n", + " else: \n", + " ax_TT.semilogx(ll[i],clTT[i]/clTT[0],\n", + " color=var_color,alpha=var_alpha,linestyle='-',\n", + " label=r'$\\Delta N_\\mathrm{eff}=%g$'%(N_ur-3.046))\n", + "#\n", + "# output of P(k) figure\n", + "#\n", + "ax_Pk.set_xlim([1.e-3,3.])\n", + "ax_Pk.set_ylim([0.98,1.20])\n", + "ax_Pk.set_xlabel(r'$k \\,\\,\\,\\, [h^{-1}\\mathrm{Mpc}]$')\n", + "ax_Pk.set_ylabel(r'$P(k)/P(k)[N_\\mathrm{eff}=3.046]$')\n", + "ax_Pk.legend(loc='upper left')\n", + "fig_Pk.tight_layout()\n", + "fig_Pk.savefig('ratio-%s-Pk.pdf' % var_figname)\n", + "#\n", + "# output of C_l^TT figure\n", + "# \n", + "ax_TT.set_xlim([2,2500])\n", + "ax_TT.set_ylim([0.850,1.005])\n", + "ax_TT.set_xlabel(r'$\\mathrm{Multipole} \\,\\,\\,\\, \\ell$')\n", + "ax_TT.set_ylabel(r'$C_\\ell^\\mathrm{TT}/C_\\ell^\\mathrm{TT}(N_\\mathrm{eff}=3.046)$')\n", + "ax_TT.legend(loc='lower left')\n", + "fig_TT.tight_layout()\n", + "fig_TT.savefig('ratio-%s-cltt.pdf' % var_figname)\n", + "#\n", + "# output of C_l^EE figure\n", + "# \n", + "#ax_EE.set_xlim([2,2500])\n", + "#ax_EE.set_xlabel(r'$\\ell$')\n", + "#ax_EE.set_ylabel(r'$[\\ell(\\ell+1)/2\\pi] C_\\ell^\\mathrm{EE}$')\n", + "#ax_EE.legend(legarray,loc='lower right')\n", + "#fig_EE.tight_layout()\n", + "#fig_EE.savefig('spectra_%s_clee.pdf' % var_figname)\n", + "#\n", + "# output of C_l^pp figure\n", + "# \n", + "#ax_PP.set_xlim([10,2500])\n", + "#ax_PP.set_xlabel(r'$\\ell$')\n", + "#ax_PP.set_ylabel(r'$[\\ell^2(\\ell+1)^2/2\\pi] C_\\ell^\\mathrm{\\phi \\phi}$')\n", + "#ax_PP.legend(legarray)\n", + "#fig_PP.tight_layout()\n", + "#fig_PP.savefig('spectra_%s_clpp.pdf' % var_figname)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true, + "deletable": true, + "editable": true + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.13" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/class/notebooks/varying_pann.ipynb b/class/notebooks/varying_pann.ipynb new file mode 100644 index 00000000..25115d73 --- /dev/null +++ b/class/notebooks/varying_pann.ipynb @@ -0,0 +1,225 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false, + "deletable": true, + "editable": true + }, + "outputs": [], + "source": [ + "# import necessary modules\n", + "# uncomment to get plots displayed in notebook\n", + "%matplotlib inline\n", + "import matplotlib\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "from classy import Class\n", + "from scipy.optimize import fsolve\n", + "import math" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false, + "deletable": true, + "editable": true + }, + "outputs": [], + "source": [ + "# esthetic definitions for the plots\n", + "font = {'size' : 16, 'family':'STIXGeneral'}\n", + "axislabelfontsize='large'\n", + "matplotlib.rc('font', **font)\n", + "matplotlib.mathtext.rcParams['legend.fontsize']='medium'\n", + "plt.rcParams[\"figure.figsize\"] = [8.0,6.0]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false, + "deletable": true, + "editable": true + }, + "outputs": [], + "source": [ + "############################################\n", + "#\n", + "# Varying parameter (others fixed to default)\n", + "#\n", + "var_name = 'annihilation'\n", + "var_array = np.linspace(0,1.e-5,5)\n", + "var_num = len(var_array)\n", + "var_legend = r'$p_\\mathrm{ann}$'\n", + "var_figname = 'pann'\n", + "#\n", + "#############################################\n", + "#\n", + "# Fixed settings\n", + "#\n", + "common_settings = {'output':'tCl,pCl,lCl,mPk',\n", + " 'lensing':'yes',\n", + " # LambdaCDM parameters\n", + " 'h':0.67556,\n", + " 'omega_b':0.022032,\n", + " 'omega_cdm':0.12038,\n", + " 'A_s':2.215e-9,\n", + " 'n_s':0.9619,\n", + " 'tau_reio':0.0925,\n", + " # Take fixed value for primordial Helium (instead of automatic BBN adjustment)\n", + " 'YHe':0.246,\n", + " # other output and precision parameters\n", + " 'P_k_max_1/Mpc':3.0,\n", + " 'l_switch_limber':9}\n", + " #'background_verbose':1} \n", + "#\n", + "# arrays for output\n", + "#\n", + "kvec = np.logspace(-4,np.log10(3),1000)\n", + "legarray = []\n", + "twopi = 2.*math.pi\n", + "#\n", + "# Create figures\n", + "#\n", + "fig_Pk, ax_Pk = plt.subplots()\n", + "fig_TT, ax_TT = plt.subplots()\n", + "fig_EE, ax_EE = plt.subplots()\n", + "fig_PP, ax_PP = plt.subplots()\n", + "#\n", + "# loop over varying parameter values\n", + "#\n", + "for i,var in enumerate(var_array):\n", + " #\n", + " print ' * Compute with %s=%e'%(var_name,var)\n", + " #\n", + " # deal with colors and legends\n", + " #\n", + " if i == 0:\n", + " var_color = 'k'\n", + " var_alpha = 1.\n", + " legarray.append(r'ref. $\\Lambda CDM$')\n", + " else:\n", + " var_color = 'r'\n", + " var_alpha = 1.*i/(var_num-1.)\n", + " if i == var_num-1:\n", + " legarray.append(var_legend) \n", + " # \n", + " # call CLASS\n", + " #\n", + " M = Class()\n", + " M.set(common_settings)\n", + " M.set({var_name:var})\n", + " M.compute()\n", + " #\n", + " # get Cls\n", + " #\n", + " clM = M.lensed_cl(2500)\n", + " ll = clM['ell'][2:]\n", + " clTT = clM['tt'][2:]\n", + " clEE = clM['ee'][2:]\n", + " clPP = clM['pp'][2:]\n", + " #\n", + " # get P(k) for common k values\n", + " #\n", + " pkM = []\n", + " for k in kvec:\n", + " pkM.append(M.pk(k,0.))\n", + " # \n", + " # plot P(k)\n", + " #\n", + " ax_Pk.loglog(kvec,np.array(pkM),color=var_color,alpha=var_alpha,linestyle='-')\n", + " #\n", + " # plot C_l^TT\n", + " #\n", + " ax_TT.semilogx(ll,clTT*ll*(ll+1)/twopi,color=var_color,alpha=var_alpha,linestyle='-')\n", + " #\n", + " # plot Cl EE \n", + " #\n", + " ax_EE.loglog(ll,clEE*ll*(ll+1)/twopi,color=var_color,alpha=var_alpha,linestyle='-')\n", + " #\n", + " # plot Cl phiphi\n", + " #\n", + " ax_PP.loglog(ll,clPP*ll*(ll+1)*ll*(ll+1)/twopi,color=var_color,alpha=var_alpha,linestyle='-')\n", + " #\n", + " # reset CLASS\n", + " #\n", + " M.struct_cleanup()\n", + " M.empty() \n", + "#\n", + "# output of P(k) figure\n", + "#\n", + "ax_Pk.set_xlim([1.e-4,3.])\n", + "ax_Pk.set_xlabel(r'$k \\,\\,\\,\\, [h/\\mathrm{Mpc}]$')\n", + "ax_Pk.set_ylabel(r'$P(k) \\,\\,\\,\\, [\\mathrm{Mpc}/h]^3$')\n", + "ax_Pk.legend(legarray)\n", + "fig_Pk.tight_layout()\n", + "fig_Pk.savefig('spectra_%s_Pk.pdf' % var_figname)\n", + "#\n", + "# output of C_l^TT figure\n", + "# \n", + "ax_TT.set_xlim([2,2500])\n", + "ax_TT.set_xlabel(r'$\\ell$')\n", + "ax_TT.set_ylabel(r'$[\\ell(\\ell+1)/2\\pi] C_\\ell^\\mathrm{TT}$')\n", + "ax_TT.legend(legarray)\n", + "fig_TT.tight_layout()\n", + "fig_TT.savefig('spectra_%s_cltt.pdf' % var_figname)\n", + "#\n", + "# output of C_l^EE figure\n", + "# \n", + "ax_EE.set_xlim([2,2500])\n", + "ax_EE.set_xlabel(r'$\\ell$')\n", + "ax_EE.set_ylabel(r'$[\\ell(\\ell+1)/2\\pi] C_\\ell^\\mathrm{EE}$')\n", + "ax_EE.legend(legarray)\n", + "fig_EE.tight_layout()\n", + "fig_EE.savefig('spectra_%s_clee.pdf' % var_figname)\n", + "#\n", + "# output of C_l^pp figure\n", + "# \n", + "ax_PP.set_xlim([10,2500])\n", + "ax_PP.set_xlabel(r'$\\ell$')\n", + "ax_PP.set_ylabel(r'$[\\ell^2(\\ell+1)^2/2\\pi] C_\\ell^\\mathrm{\\phi \\phi}$')\n", + "ax_PP.legend(legarray)\n", + "fig_PP.tight_layout()\n", + "fig_PP.savefig('spectra_%s_clpp.pdf' % var_figname)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true, + "deletable": true, + "editable": true + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.13" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/class/notebooks/warmup.ipynb b/class/notebooks/warmup.ipynb new file mode 100644 index 00000000..30fb48ec --- /dev/null +++ b/class/notebooks/warmup.ipynb @@ -0,0 +1,163 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# import classy module\n", + "from classy import Class" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# create instance of the class \"Class\"\n", + "LambdaCDM = Class()\n", + "# pass input parameters\n", + "LambdaCDM.set({'omega_b':0.022032,'omega_cdm':0.12038,'h':0.67556,'A_s':2.215e-9,'n_s':0.9619,'tau_reio':0.0925})\n", + "LambdaCDM.set({'output':'tCl,pCl,lCl,mPk','lensing':'yes','P_k_max_1/Mpc':3.0})\n", + "# run class\n", + "LambdaCDM.compute()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# get all C_l output\n", + "cls = LambdaCDM.lensed_cl(2500)\n", + "# To check the format of cls\n", + "cls.viewkeys()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "ll = cls['ell'][2:]\n", + "clTT = cls['tt'][2:]\n", + "clEE = cls['ee'][2:]\n", + "clPP = cls['pp'][2:]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# uncomment to get plots displayed in notebook\n", + "%matplotlib inline\n", + "import matplotlib.pyplot as plt\n", + "from math import pi" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# plot C_l^TT\n", + "plt.figure(1)\n", + "plt.xscale('log');plt.yscale('linear');plt.xlim(2,2500)\n", + "plt.xlabel(r'$\\ell$')\n", + "plt.ylabel(r'$[\\ell(\\ell+1)/2\\pi] C_\\ell^\\mathrm{TT}$')\n", + "plt.plot(ll,clTT*ll*(ll+1)/2./pi,'r-')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "plt.savefig('warmup_cltt.pdf')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# get P(k) at redhsift z=0\n", + "import numpy as np\n", + "kk = np.logspace(-4,np.log10(3),1000) # k in h/Mpc\n", + "Pk = [] # P(k) in (Mpc/h)**3\n", + "h = LambdaCDM.h() # get reduced Hubble for conversions to 1/Mpc\n", + "for k in kk:\n", + " Pk.append(LambdaCDM.pk(k*h,0.)*h**3) # function .pk(k,z)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# plot P(k)\n", + "plt.figure(2)\n", + "plt.xscale('log');plt.yscale('log');plt.xlim(kk[0],kk[-1])\n", + "plt.xlabel(r'$k \\,\\,\\,\\, [h/\\mathrm{Mpc}]$')\n", + "plt.ylabel(r'$P(k) \\,\\,\\,\\, [\\mathrm{Mpc}/h]^3$')\n", + "plt.plot(kk,Pk,'b-')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "plt.savefig('warmup_pk.pdf')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# optional: clear content of LambdaCDM (to reuse it for another model)\n", + "LambdaCDM.struct_cleanup()\n", + "# optional: reset parameters to default\n", + "LambdaCDM.empty()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.6" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/class/ode_example b/class/ode_example new file mode 100755 index 00000000..6c14c11d Binary files /dev/null and b/class/ode_example differ diff --git a/class/pk_ref.pre b/class/pk_ref.pre new file mode 100644 index 00000000..770418cd --- /dev/null +++ b/class/pk_ref.pre @@ -0,0 +1,82 @@ +# this file achieves maximum precision for the CMB: each ClTT and ClEE, lensed and unlensed, are stable at the 0.01% level + +tol_ncdm_bg = 1.e-10 + +recfast_Nz0=100000 +tol_thermo_integration=1.e-5 + +recfast_x_He0_trigger_delta = 0.01 +recfast_x_H0_trigger_delta = 0.01 + +evolver=0 + +k_min_tau0=0.002 +k_max_tau0_over_l_max=3. +k_step_sub=0.015 +k_step_super=0.0001 +k_step_super_reduction=0.1 + +start_small_k_at_tau_c_over_tau_h = 0.0004 +start_large_k_at_tau_h_over_tau_k = 0.05 +tight_coupling_trigger_tau_c_over_tau_h=0.005 +tight_coupling_trigger_tau_c_over_tau_k=0.008 +start_sources_at_tau_c_over_tau_h = 0.006 + +l_max_g=50 +l_max_pol_g=25 +l_max_ur=150 +l_max_ncdm=50 + +tol_perturb_integration=1.e-6 +perturb_sampling_stepsize=0.01 + +radiation_streaming_approximation = 2 +radiation_streaming_trigger_tau_over_tau_k = 240. +radiation_streaming_trigger_tau_c_over_tau = 100. + +ur_fluid_approximation = 2 +ur_fluid_trigger_tau_over_tau_k = 50. + +ncdm_fluid_approximation = 3 +ncdm_fluid_trigger_tau_over_tau_k = 51. + +tol_ncdm_synchronous = 1.e-10 +tol_ncdm_newtonian = 1.e-10 + +l_logstep=1.026 +l_linstep=25 + +hyper_sampling_flat = 12. +hyper_sampling_curved_low_nu = 10. +hyper_sampling_curved_high_nu = 10. +hyper_nu_sampling_step = 10. +hyper_phi_min_abs = 1.e-10 +hyper_x_tol = 1.e-4 +hyper_flat_approximation_nu = 1.e6 + +q_linstep=0.20 +q_logstep_spline= 20. +q_logstep_trapzd = 0.5 +q_numstep_transition = 250 + +transfer_neglect_delta_k_S_t0 = 100. +transfer_neglect_delta_k_S_t1 = 100. +transfer_neglect_delta_k_S_t2 = 100. +transfer_neglect_delta_k_S_e = 100. +transfer_neglect_delta_k_V_t1 = 100. +transfer_neglect_delta_k_V_t2 = 100. +transfer_neglect_delta_k_V_e = 100. +transfer_neglect_delta_k_V_b = 100. +transfer_neglect_delta_k_T_t2 = 100. +transfer_neglect_delta_k_T_e = 100. +transfer_neglect_delta_k_T_b = 100. + +neglect_CMB_sources_below_visibility = 1.e-30 +transfer_neglect_late_source = 3000. + +halofit_k_per_decade = 3000. + +l_switch_limber = 40. +accurate_lensing=1 +num_mu_minus_lmax = 1000. +delta_l_max = 1000. \ No newline at end of file diff --git a/class/plot_CLASS_output.m b/class/plot_CLASS_output.m new file mode 100644 index 00000000..ddf8c338 --- /dev/null +++ b/class/plot_CLASS_output.m @@ -0,0 +1,186 @@ +function plot_CLASS_output(datafiles,varargin) +% plot_CLASS_output(datafiles,selection,options) +% plot_CLASS_output(datafiles,selection) +% plot_CLASS_output(datafiles,options) +% plot_CLASS_output(datafiles) +% Thomas Tram, 12th of March 2014. thomas.tram@epfl.ch +% Small plot utility for plotting background, thermodynamics and +% perturbations files. (Compatibility with other files may be added later.) +% Examples: +% +% plot_CLASS_output('c:\class\test_background.dat') +% plots every column of data in the background file +% 'c:\class\test_background.dat' and saves the plot in myplot.eps. +% +% +% plot_CLASS_output('c:\class\test_background.dat',{'cdm','ur','crit'}) +% plots every mention of either 'cdm', 'ur' or 'crit' in the column titles. +% +% +% plot_CLASS_output('c:\class\test_perturbations_k0_s.dat',{'delta'}) +% plots every mention of 'delta' in the column titles. Convenient for +% plotting the density perturbations of all species. +% +% +% plot_CLASS_output({'c:\class\model1_background.dat','c:\class\model2_background.dat'},{'rho'}) +% plots all mentions of rho in the files listed in the first cell array. +% +% +% plot_CLASS_output('c:\class\test_perturbations_k0_s.dat',{'delta'},options) +% options follows the usual MATLAB convention of +% ...,paramname1,paramval1, paramname2, paramval2,... +% +% Names: Values: +% ---------------------------------------------------------------------- +% EpsFilename Filename for output +% xvariable 'a' or 'z' (will convert one from the other) +% xscale 'log' or 'linear' +% yscale 'log' or 'linear' +% xlim [xmin xmax] + +if mod(nargin,2)==0 + opt = cell2struct(varargin(3:2:end),lower(varargin(2:2:end)),2); + if ischar(varargin{1}) + opt.selection = varargin(1); + else + opt.selection = varargin{1}; + end +else + opt = cell2struct(varargin(2:2:end),lower(varargin(1:2:end)),2); + opt.selection = 'all'; +end +%Filename for saving plot: +if isfield(opt,'epsfilename'); + epsfilename = opt.epsfilename; +else + epsfilename = 'myplot'; +end + +%================================================================= +close all + +if ischar(datafiles) + datafiles = {datafiles}; +end + + +linestyles = {'-','--',':','-.'}; +legendcell = {}; + +xmin = inf; +xmax = -inf; +for fileidx = 1:length(datafiles) + linestyle = linestyles{mod(fileidx-1,length(linestyles))+1}; + datafile = datafiles{fileidx}; + + %Find column titles: + fid = fopen(datafile); + titleline = 0; + tline = fgetl(fid); + while tline(1)=='#' + titleline = titleline+1; + tline_old = tline; + tline = fgetl(fid); + end + fclose(fid); + +% S=importdata(datafile); +% data = S.data; +% titlestring = S.textdata{titleline}; + titlestring = tline_old; + S = importdata(datafile,' ',titleline); + data = S.data; + + %remove leading # + titlestring = titlestring(2:end); + colonidx = [find(titlestring==':'),length(titlestring)+1]; + for j=1:(length(colonidx)-1) + cellnames{j} = strtrim(titlestring(colonidx(j)+1:colonidx(j+1)-3)); + end + + %Determine independent variable: + x = data(:,1); + xlab = cellnames{1}; + xscale = 'linear'; + + if (~isempty(strfind(cellnames{1},'z'))) + xscale = 'log'; + %First column is z + if (~isfield(opt,'xvariable')) || (~strcmp(opt.xvariable,'z')) + %if the field is empty or the field is not 'z' change to scale factor a + x = 1./(x+1); + xlab = 'a'; + end + end + + if (~isempty(strfind(cellnames{1},'a'))) + xscale = 'log'; + %First column is a + if (isfield(opt,'xvariable')) && (strcmp(opt.xvariable,'z')) + %Change to z + x = 1./x-1; + xlab = 'z'; + end + end + + if isfield(opt,'xscale') + xscale = opt.xscale; + end + + + if strcmp(opt.selection,'all') + indices = 2:length(cellnames); + else + tmp = []; + for i=1:length(opt.selection) + tmp2=strfind(cellnames,opt.selection{i}); + for j=1:length(tmp2) + if ~isempty(tmp2{j}) + tmp = [tmp,j]; + end + end + end + indices = unique(tmp); + end + + if isempty(indices) + thenames = ''; + for i=1:length(opt.selection) + thenames = [thenames,opt.selection{i},', ']; + end + error(['No indices corresponding to the name(s) {',thenames,'} were found!']) + end + + xmin = min(xmin,min(x)); + xmax = max(xmax,max(x)); + if isfield(opt,'xlim') + %We need to restrict plotting: + xl = opt.xlim; + mask = (x>=xl(1))&(x<=xl(2)); + else + mask = true(size(x)); + end + + %semilogy(tau,data(:,indices)) + loglog(x(mask),abs(data(mask,indices)),'LineWidth',2,'LineStyle',linestyle) + + hold on + legendcell = [legendcell,cellnames(indices)]; +end + +legend(legendcell,'Interpreter','none','Location','best') +yl = ylim; +%Fixes x label when y values go to 0 in log plot: +ylim([max(1e-100,yl(1)),yl(2)]) +xlabel(xlab) +set(gca,'xscale',xscale); +if isfield(opt,'yscale') + set(gca,'yscale',opt.yscale); +end +if isfield(opt,'xlim') + xlim(opt.xlim) +else + xlim([xmin,xmax]) +end + +saveas(gcf,[epsfilename,'.eps'],'epsc2') \ No newline at end of file diff --git a/class/psd_FD_single.dat b/class/psd_FD_single.dat new file mode 100644 index 00000000..90a33b4a --- /dev/null +++ b/class/psd_FD_single.dat @@ -0,0 +1,100 @@ + 0.0000000e+000 4.0314418e-003 + 1.2121212e-001 3.7874107e-003 + 2.4242424e-001 3.5451614e-003 + 3.6363636e-001 3.3064240e-003 + 4.8484848e-001 3.0728285e-003 + 6.0606061e-001 2.8458621e-003 + 7.2727273e-001 2.6268350e-003 + 8.4848485e-001 2.4168557e-003 + 9.6969697e-001 2.2168165e-003 + 1.0909091e+000 2.0273889e-003 + 1.2121212e+000 1.8490284e-003 + 1.3333333e+000 1.6819863e-003 + 1.4545455e+000 1.5263281e-003 + 1.5757576e+000 1.3819553e-003 + 1.6969697e+000 1.2486299e-003 + 1.8181818e+000 1.1259993e-003 + 1.9393939e+000 1.0136210e-003 + 2.0606061e+000 9.1098552e-004 + 2.1818182e+000 8.1753726e-004 + 2.3030303e+000 7.3269281e-004 + 2.4242424e+000 6.5585650e-004 + 2.5454545e+000 5.8643326e-004 + 2.6666667e+000 5.2383885e-004 + 2.7878788e+000 4.6750783e-004 + 2.9090909e+000 4.1689940e-004 + 3.0303030e+000 3.7150144e-004 + 3.1515152e+000 3.3083316e-004 + 3.2727273e+000 2.9444641e-004 + 3.3939394e+000 2.6192609e-004 + 3.5151515e+000 2.3288982e-004 + 3.6363636e+000 2.0698701e-004 + 3.7575758e+000 1.8389754e-004 + 3.8787879e+000 1.6333015e-004 + 4.0000000e+000 1.4502072e-004 + 4.1212121e+000 1.2873034e-004 + 4.2424242e+000 1.1424347e-004 + 4.3636364e+000 1.0136608e-004 + 4.4848485e+000 8.9923795e-005 + 4.6060606e+000 7.9760183e-005 + 4.7272727e+000 7.0735118e-005 + 4.8484848e+000 6.2723239e-005 + 4.9696970e+000 5.5612518e-005 + 5.0909091e+000 4.9302948e-005 + 5.2121212e+000 4.3705328e-005 + 5.3333333e+000 3.8740163e-005 + 5.4545455e+000 3.4336653e-005 + 5.5757576e+000 3.0431782e-005 + 5.6969697e+000 2.6969493e-005 + 5.8181818e+000 2.3899944e-005 + 5.9393939e+000 2.1178837e-005 + 6.0606061e+000 1.8766816e-005 + 6.1818182e+000 1.6628928e-005 + 6.3030303e+000 1.4734139e-005 + 6.4242424e+000 1.3054902e-005 + 6.5454545e+000 1.1566771e-005 + 6.6666667e+000 1.0248056e-005 + 6.7878788e+000 9.0795173e-006 + 6.9090909e+000 8.0440884e-006 + 7.0303030e+000 7.1266354e-006 + 7.1515152e+000 6.3137388e-006 + 7.2727273e+000 5.5935005e-006 + 7.3939394e+000 4.9553726e-006 + 7.5151515e+000 4.3900052e-006 + 7.6363636e+000 3.8891104e-006 + 7.7575758e+000 3.4453427e-006 + 7.8787879e+000 3.0521921e-006 + 8.0000000e+000 2.7038891e-006 + 8.1212121e+000 2.3953211e-006 + 8.2424242e+000 2.1219577e-006 + 8.3636364e+000 1.8797842e-006 + 8.4848485e+000 1.6652437e-006 + 8.6060606e+000 1.4751843e-006 + 8.7272727e+000 1.3068135e-006 + 8.8484848e+000 1.1576570e-006 + 8.9696970e+000 1.0255226e-006 + 9.0909091e+000 9.0846835e-007 + 9.2121212e+000 8.0477343e-007 + 9.3333333e+000 7.1291348e-007 + 9.4545455e+000 6.3153795e-007 + 9.5757576e+000 5.5945039e-007 + 9.6969697e+000 4.9559083e-007 + 9.8181818e+000 4.3902025e-007 + 9.9393939e+000 3.8890677e-007 + 1.0060606e+001 3.4451341e-007 + 1.0181818e+001 3.0518733e-007 + 1.0303030e+001 2.7035015e-007 + 1.0424242e+001 2.3948953e-007 + 1.0545455e+001 2.1215157e-007 + 1.0666667e+001 1.8793419e-007 + 1.0787879e+001 1.6648120e-007 + 1.0909091e+001 1.4747706e-007 + 1.1030303e+001 1.3064224e-007 + 1.1151515e+001 1.1572912e-007 + 1.1272727e+001 1.0251835e-007 + 1.1393939e+001 9.0815608e-008 + 1.1515152e+001 8.0448749e-008 + 1.1636364e+001 7.1265286e-008 + 1.1757576e+001 6.3130135e-008 + 1.1878788e+001 5.5923630e-008 + 1.2000000e+001 4.9539765e-008 diff --git a/class/python/README b/class/python/README new file mode 100644 index 00000000..f7a4910c --- /dev/null +++ b/class/python/README @@ -0,0 +1,15 @@ +To use this python wrapper for class, you should first compile class with 'make all', not just 'make class': this is important in order to create libraries. Be sure that you did not remove the -fPIC compiling flag in the Makefile, important for compatibility between OpenMP and the python wrapper. + +Check that the command 'python' points towards a version of python > 2.7 but < 3.0. Then, execute: + +> python setup.py build +> python setup.py install --user + +(it's really 'user', not your own user name). + +You can check that these steps worked by typing + +> python +>>> from classy import Class + +If python does not complain, the Class module has been correctly installed in your python distribution. You can now import it and use its functions from your python codes. \ No newline at end of file diff --git a/class/python/autosetup.py b/class/python/autosetup.py new file mode 100644 index 00000000..832c5496 --- /dev/null +++ b/class/python/autosetup.py @@ -0,0 +1,52 @@ +from distutils.core import setup +from distutils.extension import Extension +from Cython.Distutils import build_ext + +import numpy as nm +import os +import subprocess as sbp +import os.path as osp + +# Recover the gcc compiler +GCCPATH_STRING = sbp.Popen( + ['gcc', '-print-libgcc-file-name'], + stdout=sbp.PIPE).communicate()[0] +GCCPATH = osp.normpath(osp.dirname(GCCPATH_STRING)).decode() + +liblist = ["class"] +MVEC_STRING = sbp.Popen( + ['gcc', '-lmvec'], + stderr=sbp.PIPE).communicate()[1] +if b"mvec" not in MVEC_STRING: + liblist += ["mvec","m"] + +# define absolute paths +root_folder = os.path.join(os.path.dirname(os.path.abspath(__file__)), "..") +include_folder = os.path.join(root_folder, "include") +classy_folder = os.path.join(root_folder, "python") + +# Recover the CLASS version +with open(os.path.join(include_folder, 'common.h'), 'r') as v_file: + for line in v_file: + if line.find("_VERSION_") != -1: + # get rid of the " and the v + VERSION = line.split()[-1][2:-1] + break + +# Define cython extension and fix Python version +classy_ext = Extension("classy", [os.path.join(classy_folder, "classy.pyx")], + include_dirs=[nm.get_include(), include_folder], + libraries=liblist, + library_dirs=[root_folder, GCCPATH], +import six +classy_ext.cython_directives = {'language_level': "3" if six.PY3 else "2"} + +setup( + name='classy', + version=VERSION, + description='Python interface to the Cosmological Boltzmann code CLASS', + url='http://www.class-code.net', + cmdclass={'build_ext': build_ext}, + ext_modules=[classy_ext], + #data_files=[('bbn', ['../bbn/sBBN.dat'])] +) diff --git a/class/python/cclassy.pxd b/class/python/cclassy.pxd new file mode 100644 index 00000000..9a48f944 --- /dev/null +++ b/class/python/cclassy.pxd @@ -0,0 +1,461 @@ +# Bunch of declarations from C to python. The idea here is to define only the +# quantities that will be used, for input, output or intermediate manipulation, +# by the python wrapper. For instance, in the precision structure, the only +# item used here is its error message. That is why nothing more is defined from +# this structure. The rest is internal in Class. +# If, for whatever reason, you need an other, existing parameter from Class, +# remember to add it inside this cdef. + +DEF _MAX_NUMBER_OF_K_FILES_ = 30 +DEF _MAXTITLESTRINGLENGTH_ = 8000 +DEF _FILENAMESIZE_ = 256 +DEF _LINE_LENGTH_MAX_ = 1024 + +cdef extern from "class.h": + + cdef char[10] _VERSION_ + + ctypedef char FileArg[40] + + ctypedef char* ErrorMsg + + ctypedef char FileName[_FILENAMESIZE_] + + cdef enum linear_or_logarithmic: + linear + logarithmic + + cdef enum file_format: + class_format + camb_format + + cdef enum non_linear_method: + nl_none + nl_halofit + nl_HMcode + + cdef enum pk_outputs: + pk_linear + pk_nonlinear + + cdef enum out_sigmas: + out_sigma + out_sigma_prime + out_sigma_disp + + cdef struct precision: + ErrorMsg error_message + + cdef struct background: + ErrorMsg error_message + int bg_size + int index_bg_ang_distance + int index_bg_lum_distance + int index_bg_conf_distance + int index_bg_a + int index_bg_H + int index_bg_D + int index_bg_f + int index_bg_Omega_m + short long_info + short inter_normal + short has_ncdm + double T_cmb + double h + double H0 + double age + double conformal_age + double * m_ncdm_in_eV + double Neff + double Omega0_g + double Omega0_b + double Omega0_idr + double T_idr + double Omega0_idm_dr + double Omega0_cdm + double Omega0_dcdm + double Omega0_ncdm_tot + double Omega0_lambda + double Omega0_fld + double w0_fld + double wa_fld + double cs2_fld + double Omega0_ur + double Omega0_dcdmdr + double Omega0_dr + double Omega0_scf + double Omega0_k + int bt_size + double Omega0_m + double Omega0_r + double Omega0_de + double a_eq + double H_eq + double z_eq + double tau_eq + + cdef struct thermo: + ErrorMsg error_message + int th_size + int index_th_xe + int index_th_Tb + short inter_normal + double tau_reio + double z_reio + double z_rec + double tau_rec + double rs_rec + double ds_rec + double da_rec + double z_star + double tau_star + double rs_star + double ds_star + double ra_star + double da_star + double rd_star + double z_d + double tau_d + double ds_d + double rs_d + double YHe + double n_e + double a_idm_dr + double b_idr + double nindex_idm_dr + double m_idm + + int tt_size + + cdef struct perturbs: + ErrorMsg error_message + short has_scalars + short has_vectors + short has_tensors + + short has_density_transfers + short has_velocity_transfers + + int has_pk_matter + int l_lss_max + + int store_perturbations + int k_output_values_num + double k_output_values[_MAX_NUMBER_OF_K_FILES_] + double k_max_for_pk + int index_k_output_values[_MAX_NUMBER_OF_K_FILES_] + char scalar_titles[_MAXTITLESTRINGLENGTH_] + char vector_titles[_MAXTITLESTRINGLENGTH_] + char tensor_titles[_MAXTITLESTRINGLENGTH_] + int number_of_scalar_titles + int number_of_vector_titles + int number_of_tensor_titles + + + double * scalar_perturbations_data[_MAX_NUMBER_OF_K_FILES_] + double * vector_perturbations_data[_MAX_NUMBER_OF_K_FILES_] + double * tensor_perturbations_data[_MAX_NUMBER_OF_K_FILES_] + int size_scalar_perturbation_data[_MAX_NUMBER_OF_K_FILES_] + int size_vector_perturbation_data[_MAX_NUMBER_OF_K_FILES_] + int size_tensor_perturbation_data[_MAX_NUMBER_OF_K_FILES_] + + double * alpha_idm_dr + double * beta_idr + + int * k_size + int * ic_size + int index_md_scalars + + cdef struct transfers: + ErrorMsg error_message + + cdef struct primordial: + ErrorMsg error_message + double k_pivot + double A_s + double n_s + double alpha_s + double beta_s + double r + double n_t + double alpha_t + double V0 + double V1 + double V2 + double V3 + double V4 + double f_cdi + double n_cdi + double c_ad_cdi + double n_ad_cdi + double f_nid + double n_nid + double c_ad_nid + double n_ad_nid + double f_niv + double n_niv + double c_ad_niv + double n_ad_niv + double phi_min + double phi_max + int lnk_size + + cdef struct spectra: + ErrorMsg error_message + int has_tt + int has_te + int has_ee + int has_bb + int has_pp + int has_tp + int has_dd + int has_td + int has_ll + int has_dl + int has_tl + int l_max_tot + int ** l_max_ct + int ct_size + int * ic_size + int * ic_ic_size + int md_size + int d_size + int non_diag + int index_ct_tt + int index_ct_te + int index_ct_ee + int index_ct_bb + int index_ct_pp + int index_ct_tp + int index_ct_dd + int index_ct_td + int index_ct_pd + int index_ct_ll + int index_ct_dl + int index_ct_tl + int * l_size + int index_md_scalars + + cdef struct output: + ErrorMsg error_message + + cdef struct lensing: + int has_tt + int has_ee + int has_te + int has_bb + int has_pp + int has_tp + int has_dd + int has_td + int has_ll + int has_dl + int has_tl + int index_lt_tt + int index_lt_te + int index_lt_ee + int index_lt_bb + int index_lt_pp + int index_lt_tp + int index_lt_dd + int index_lt_td + int index_lt_ll + int index_lt_dl + int index_lt_tl + int * l_max_lt + int lt_size + int has_lensed_cls + int l_lensed_max + int l_unlensed_max + ErrorMsg error_message + + cdef struct nonlinear: + short has_pk_matter + int method + int ic_size + int ic_ic_size + int k_size + int ln_tau_size + int tau_size + int index_tau_min_nl + double * k + double * ln_tau + double * tau + double ** ln_pk_l + double ** ln_pk_nl + double * sigma8 + int has_pk_m + int has_pk_cb + int index_pk_m + int index_pk_cb + int index_pk_total + int index_pk_cluster + ErrorMsg error_message + + cdef struct file_content: + char * filename + int size + FileArg * name + FileArg * value + short * read + + void lensing_free(void*) + void spectra_free(void*) + void transfer_free(void*) + void primordial_free(void*) + void perturb_free(void*) + void thermodynamics_free(void*) + void background_free(void*) + void nonlinear_free(void*) + + cdef int _FAILURE_ + cdef int _FALSE_ + cdef int _TRUE_ + + int input_init(void*, void*, void*, void*, void*, void*, void*, void*, void*, + void*, void*, char*) + int background_init(void*,void*) + int thermodynamics_init(void*,void*,void*) + int perturb_init(void*,void*,void*,void*) + int primordial_init(void*,void*,void*) + int nonlinear_init(void*,void*,void*,void*,void*,void*) + int transfer_init(void*,void*,void*,void*,void*,void*) + int spectra_init(void*,void*,void*,void*,void*,void*,void*) + int lensing_init(void*,void*,void*,void*,void*) + + int background_tau_of_z(void* pba, double z,double* tau) + int background_at_tau(void* pba, double tau, short return_format, short inter_mode, int * last_index, double *pvecback) + int background_output_titles(void * pba, char titles[_MAXTITLESTRINGLENGTH_]) + int background_output_data(void *pba, int number_of_titles, double *data) + + int thermodynamics_at_z(void * pba, void * pth, double z, short inter_mode, int * last_index, double *pvecback, double *pvecthermo) + int thermodynamics_output_titles(void * pba, void *pth, char titles[_MAXTITLESTRINGLENGTH_]) + int thermodynamics_output_data(void *pba, void *pth, int number_of_titles, double *data) + + int perturb_output_data(void *pba,void *ppt, file_format output_format, double z, int number_of_titles, double *data) + int perturb_output_firstline_and_ic_suffix(void *ppt, int index_ic, char first_line[_LINE_LENGTH_MAX_], FileName ic_suffix) + int perturb_output_titles(void *pba, void *ppt, file_format output_format, char titles[_MAXTITLESTRINGLENGTH_]) + + int primordial_output_titles(void * ppt, void *ppm, char titles[_MAXTITLESTRINGLENGTH_]) + int primordial_output_data(void *ppt, void *ppm, int number_of_titles, double *data) + + int spectra_cl_at_l(void* psp,double l,double * cl,double * * cl_md,double * * cl_md_ic) + int lensing_cl_at_l(void * ple,int l,double * cl_lensed) + + int spectra_pk_at_z( + void * pba, + void * psp, + int mode, + double z, + double * output_tot, + double * output_ic, + double * output_cb_tot, + double * output_cb_ic + ) + + int spectra_pk_at_k_and_z( + void* pba, + void * ppm, + void * psp, + double k, + double z, + double * pk, + double * pk_ic, + double * pk_cb, + double * pk_cb_ic) + + int spectra_pk_nl_at_k_and_z( + void* pba, + void * ppm, + void * psp, + double k, + double z, + double * pk, + double * pk_cb) + + int spectra_pk_nl_at_z( + void * pba, + void * psp, + int mode, + double z, + double * output_tot, + double * output_cb_tot) + + int nonlinear_pk_at_k_and_z( + void * pba, + void * ppm, + void * pnl, + int pk_output, + double k, + double z, + int index_pk, + double * out_pk, + double * out_pk_ic) + + int nonlinear_pk_tilt_at_k_and_z( + void * pba, + void * ppm, + void * pnl, + int pk_output, + double k, + double z, + int index_pk, + double * pk_tilt) + + int nonlinear_sigmas_at_z( + void * ppr, + void * pba, + void * pnl, + double R, + double z, + int index_pk, + int sigma_output, + double * result) + + int nonlinear_pks_at_kvec_and_zvec( + void * pba, + void * pnl, + int pk_output, + double * kvec, + int kvec_size, + double * zvec, + int zvec_size, + double * out_pk, + double * out_pk_cb) + + int nonlinear_hmcode_sigma8_at_z(void* pba, void* pnl, double z, double* sigma_8, double* sigma_8_cb) + int nonlinear_hmcode_sigmadisp_at_z(void* pba, void* pnl, double z, double* sigma_disp, double* sigma_disp_cb) + int nonlinear_hmcode_sigmadisp100_at_z(void* pba, void* pnl, double z, double* sigma_disp_100, double* sigma_disp_100_cb) + int nonlinear_hmcode_sigmaprime_at_z(void* pba, void* pnl, double z, double* sigma_prime, double* sigma_prime_cb) + int nonlinear_hmcode_window_nfw(void* pnl, double k, double rv, double c, double* window_nfw) + + int nonlinear_k_nl_at_z(void* pba, void* pnl, double z, double* k_nl, double* k_nl_cb) + + int spectra_firstline_and_ic_suffix(void *ppt, int index_ic, char first_line[_LINE_LENGTH_MAX_], FileName ic_suffix) + + int spectra_sigma( + void * pba, + void * ppm, + void * psp, + double R, + double z, + double * sigma) + + int spectra_sigma_cb( + void * pba, + void * ppm, + void * psp, + double R, + double z, + double * sigma_cb) + + int spectra_fast_pk_at_kvec_and_zvec( + void * pba, + void * psp, + double * kvec, + int kvec_size, + double * zvec, + int zvec_size, + double * pk_tot_out, + double * pk_cb_tot_out, + int nonlinear) diff --git a/class/python/classy.egg-info/PKG-INFO b/class/python/classy.egg-info/PKG-INFO new file mode 100644 index 00000000..7ba9cee9 --- /dev/null +++ b/class/python/classy.egg-info/PKG-INFO @@ -0,0 +1,5 @@ +Metadata-Version: 2.1 +Name: classy +Version: 2.9.3 +Summary: Python interface to the Cosmological Boltzmann code CLASS +Home-page: http://www.class-code.net diff --git a/class/python/classy.egg-info/SOURCES.txt b/class/python/classy.egg-info/SOURCES.txt new file mode 100644 index 00000000..b6166f2f --- /dev/null +++ b/class/python/classy.egg-info/SOURCES.txt @@ -0,0 +1,7 @@ +README +setup.py +/home/users/chto/code/cosmolike_core/class/python/../python/classy.pyx +classy.egg-info/PKG-INFO +classy.egg-info/SOURCES.txt +classy.egg-info/dependency_links.txt +classy.egg-info/top_level.txt \ No newline at end of file diff --git a/class/python/classy.egg-info/dependency_links.txt b/class/python/classy.egg-info/dependency_links.txt new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/class/python/classy.egg-info/dependency_links.txt @@ -0,0 +1 @@ + diff --git a/class/python/classy.egg-info/top_level.txt b/class/python/classy.egg-info/top_level.txt new file mode 100644 index 00000000..c07da3e0 --- /dev/null +++ b/class/python/classy.egg-info/top_level.txt @@ -0,0 +1 @@ +classy diff --git a/class/python/classy.pyx b/class/python/classy.pyx new file mode 100644 index 00000000..0eda5890 --- /dev/null +++ b/class/python/classy.pyx @@ -0,0 +1,2120 @@ +""" +.. module:: classy + :synopsis: Python wrapper around CLASS +.. moduleauthor:: Karim Benabed +.. moduleauthor:: Benjamin Audren +.. moduleauthor:: Julien Lesgourgues + +This module defines a class called Class. It is used with Monte Python to +extract cosmological parameters. + +# JL 14.06.2017: TODO: check whether we should free somewhere the allocated fc.filename and titles, data (4 times) + +""" +from math import exp,log +import numpy as np +cimport numpy as np +from libc.stdlib cimport * +from libc.stdio cimport * +from libc.string cimport * +import cython +cimport cython + +# Nils : Added for python 3.x and python 2.x compatibility +import sys +def viewdictitems(d): + if sys.version_info >= (3,0): + return d.items() + else: + return d.viewitems() + +ctypedef np.float_t DTYPE_t +ctypedef np.int_t DTYPE_i + +# Import the .pxd containing definitions +from cclassy cimport * + +DEF _MAXTITLESTRINGLENGTH_ = 8000 + +__version__ = _VERSION_.decode("utf-8") + +# Implement a specific Exception (this might not be optimally designed, nor +# even acceptable for python standards. It, however, does the job). +# The idea is to raise either an AttributeError if the problem happened while +# reading the parameters (in the normal Class, this would just return a line in +# the unused_parameters file), or a NameError in other cases. This allows +# MontePython to handle things differently. +class CosmoError(Exception): + def __init__(self, message=""): + self.message = message.decode() if isinstance(message,bytes) else message + + def __str__(self): + return '\n\nError in Class: ' + self.message + + +class CosmoSevereError(CosmoError): + """ + Raised when Class failed to understand one or more input parameters. + + This case would not raise any problem in Class default behaviour. However, + for parameter extraction, one has to be sure that all input parameters were + understood, otherwise the wrong cosmological model would be selected. + """ + pass + + +class CosmoComputationError(CosmoError): + """ + Raised when Class could not compute the cosmology at this point. + + This will be caught by the parameter extraction code to give an extremely + unlikely value to this point + """ + pass + + +cdef class Class: + """ + Class wrapping, creates the glue between C and python + + The actual Class wrapping, the only class we will call from MontePython + (indeed the only one we will import, with the command: + from classy import Class + + """ + # List of used structures, defined in the header file. They have to be + # "cdefined", because they correspond to C structures + cdef precision pr + cdef background ba + cdef thermo th + cdef perturbs pt + cdef primordial pm + cdef nonlinear nl + cdef transfers tr + cdef spectra sp + cdef output op + cdef lensing le + cdef file_content fc + + cpdef int computed # Flag to see if classy has already computed with the given pars + cpdef int allocated # Flag to see if classy structs are allocated already + cpdef object _pars # Dictionary of the parameters + cpdef object ncp # Keeps track of the structures initialized, in view of cleaning. + + # Defining two new properties to recover, respectively, the parameters used + # or the age (set after computation). Follow this syntax if you want to + # access other quantities. Alternatively, you can also define a method, and + # call it (see _T_cmb method, at the very bottom). + property pars: + def __get__(self): + return self._pars + property state: + def __get__(self): + return True + property Omega_nu: + def __get__(self): + return self.ba.Omega0_ncdm_tot + property nonlinear_method: + def __get__(self): + return self.nl.method + + def set_default(self): + _pars = { + "output":"tCl mPk",} + self.set(**_pars) + + def __cinit__(self, default=False): + cpdef char* dumc + self.allocated = False + self.computed = False + self._pars = {} + self.fc.size=0 + self.fc.filename = malloc(sizeof(char)*30) + assert(self.fc.filename!=NULL) + dumc = "NOFILE" + sprintf(self.fc.filename,"%s",dumc) + self.ncp = set() + if default: self.set_default() + + def __dealloc__(self): + if self.allocated: + self.struct_cleanup() + self.empty() + # Reset all the fc to zero if its not already done + if self.fc.size !=0: + self.fc.size=0 + free(self.fc.name) + free(self.fc.value) + free(self.fc.read) + free(self.fc.filename) + + # Set up the dictionary + def set(self,*pars,**kars): + oldpars = self._pars.copy() + if len(pars)==1: + self._pars.update(dict(pars[0])) + elif len(pars)!=0: + raise CosmoSevereError("bad call") + self._pars.update(kars) + if viewdictitems(self._pars) <= viewdictitems(oldpars): + return # Don't change the computed states, if the new dict was already contained in the previous dict + self.computed=False + return True + + def empty(self): + self._pars = {} + self.computed = False + + # Create an equivalent of the parameter file. Non specified values will be + # taken at their default (in Class) + def _fillparfile(self): + cdef char* dumc + + if self.fc.size!=0: + free(self.fc.name) + free(self.fc.value) + free(self.fc.read) + self.fc.size = len(self._pars) + self.fc.name = malloc(sizeof(FileArg)*len(self._pars)) + assert(self.fc.name!=NULL) + + self.fc.value = malloc(sizeof(FileArg)*len(self._pars)) + assert(self.fc.value!=NULL) + + self.fc.read = malloc(sizeof(short)*len(self._pars)) + assert(self.fc.read!=NULL) + + # fill parameter file + i = 0 + for kk in self._pars: + + dumcp = kk.encode() + dumc = dumcp + sprintf(self.fc.name[i],"%s",dumc) + dumcp = str(self._pars[kk]).encode() + dumc = dumcp + sprintf(self.fc.value[i],"%s",dumc) + self.fc.read[i] = _FALSE_ + i+=1 + + # Called at the end of a run, to free memory + def struct_cleanup(self): + if(self.allocated != True): + return + if "lensing" in self.ncp: + lensing_free(&self.le) + if "spectra" in self.ncp: + spectra_free(&self.sp) + if "transfer" in self.ncp: + transfer_free(&self.tr) + if "nonlinear" in self.ncp: + nonlinear_free(&self.nl) + if "primordial" in self.ncp: + primordial_free(&self.pm) + if "perturb" in self.ncp: + perturb_free(&self.pt) + if "thermodynamics" in self.ncp: + thermodynamics_free(&self.th) + if "background" in self.ncp: + background_free(&self.ba) + self.allocated = False + self.computed = False + + def _check_task_dependency(self, level): + """ + Fill the level list with all the needed modules + + .. warning:: + + the ordering of modules is obviously dependent on CLASS module order + in the main.c file. This has to be updated in case of a change to + this file. + + Parameters + ---------- + + level : list + list of strings, containing initially only the last module required. + For instance, to recover all the modules, the input should be + ['lensing'] + + """ + if "distortions" in level: + if "lensing" not in level: + level.append("lensing") + if "lensing" in level: + if "spectra" not in level: + level.append("spectra") + if "spectra" in level: + if "transfer" not in level: + level.append("transfer") + if "transfer" in level: + if "nonlinear" not in level: + level.append("nonlinear") + if "nonlinear" in level: + if "primordial" not in level: + level.append("primordial") + if "primordial" in level: + if "perturb" not in level: + level.append("perturb") + if "perturb" in level: + if "thermodynamics" not in level: + level.append("thermodynamics") + if "thermodynamics" in level: + if "background" not in level: + level.append("background") + if len(level)!=0 : + if "input" not in level: + level.append("input") + return level + + def _pars_check(self, key, value, contains=False, add=""): + val = "" + if key in self._pars: + val = self._pars[key] + if contains: + if value in val: + return True + else: + if value==val: + return True + if add: + sep = " " + if isinstance(add,str): + sep = add + + if contains and val: + self.set({key:val+sep+value}) + else: + self.set({key:value}) + return True + return False + + def compute(self, level=["lensing"]): + """ + compute(level=["lensing"]) + + Main function, execute all the _init methods for all desired modules. + This is called in MontePython, and this ensures that the Class instance + of this class contains all the relevant quantities. Then, one can deduce + Pk, Cl, etc... + + Parameters + ---------- + level : list + list of the last module desired. The internal function + _check_task_dependency will then add to this list all the + necessary modules to compute in order to initialize this last + one. The default last module is "lensing". + + .. warning:: + + level default value should be left as an array (it was creating + problem when casting as a set later on, in _check_task_dependency) + + """ + cdef ErrorMsg errmsg + + # Append to the list level all the modules necessary to compute. + level = self._check_task_dependency(level) + + # Check if this function ran before (self.computed should be true), and + # if no other modules were requested, i.e. if self.ncp contains (or is + # equivalent to) level. If it is the case, simply stop the execution of + # the function. + if self.computed and self.ncp.issuperset(level): + return + + # Check if already allocated to prevent memory leaks + if self.allocated: + self.struct_cleanup() + + # Otherwise, proceed with the normal computation. + self.computed = False + + # Equivalent of writing a parameter file + self._fillparfile() + + # self.ncp will contain the list of computed modules (under the form of + # a set, instead of a python list) + self.ncp=set() + # Up until the empty set, all modules are allocated + # (And then we successively keep track of the ones we allocate additionally) + self.allocated = True + + # -------------------------------------------------------------------- + # Check the presence for all CLASS modules in the list 'level'. If a + # module is found in level, executure its "_init" method. + # -------------------------------------------------------------------- + # The input module should raise a CosmoSevereError, because + # non-understood parameters asked to the wrapper is a problematic + # situation. + if "input" in level: + if input_init(&self.fc, &self.pr, &self.ba, &self.th, + &self.pt, &self.tr, &self.pm, &self.sp, + &self.nl, &self.le, &self.op, errmsg) == _FAILURE_: + raise CosmoSevereError(errmsg) + self.ncp.add("input") + # This part is done to list all the unread parameters, for debugging + problem_flag = False + problematic_parameters = [] + for i in range(self.fc.size): + if self.fc.read[i] == _FALSE_: + problem_flag = True + problematic_parameters.append(self.fc.name[i].decode()) + if problem_flag: + raise CosmoSevereError( + "Class did not read input parameter(s): %s\n" % ', '.join( + problematic_parameters)) + + # The following list of computation is straightforward. If the "_init" + # methods fail, call `struct_cleanup` and raise a CosmoComputationError + # with the error message from the faulty module of CLASS. + if "background" in level: + if background_init(&(self.pr), &(self.ba)) == _FAILURE_: + self.struct_cleanup() + raise CosmoComputationError(self.ba.error_message) + self.ncp.add("background") + + if "thermodynamics" in level: + if thermodynamics_init(&(self.pr), &(self.ba), + &(self.th)) == _FAILURE_: + self.struct_cleanup() + raise CosmoComputationError(self.th.error_message) + self.ncp.add("thermodynamics") + + if "perturb" in level: + if perturb_init(&(self.pr), &(self.ba), + &(self.th), &(self.pt)) == _FAILURE_: + self.struct_cleanup() + raise CosmoComputationError(self.pt.error_message) + self.ncp.add("perturb") + + if "primordial" in level: + if primordial_init(&(self.pr), &(self.pt), + &(self.pm)) == _FAILURE_: + self.struct_cleanup() + raise CosmoComputationError(self.pm.error_message) + self.ncp.add("primordial") + + if "nonlinear" in level: + if nonlinear_init(&self.pr, &self.ba, &self.th, + &self.pt, &self.pm, &self.nl) == _FAILURE_: + self.struct_cleanup() + raise CosmoComputationError(self.nl.error_message) + self.ncp.add("nonlinear") + + if "transfer" in level: + if transfer_init(&(self.pr), &(self.ba), &(self.th), + &(self.pt), &(self.nl), &(self.tr)) == _FAILURE_: + self.struct_cleanup() + raise CosmoComputationError(self.tr.error_message) + self.ncp.add("transfer") + + if "spectra" in level: + if spectra_init(&(self.pr), &(self.ba), &(self.pt), + &(self.pm), &(self.nl), &(self.tr), + &(self.sp)) == _FAILURE_: + self.struct_cleanup() + raise CosmoComputationError(self.sp.error_message) + self.ncp.add("spectra") + + if "lensing" in level: + if lensing_init(&(self.pr), &(self.pt), &(self.sp), + &(self.nl), &(self.le)) == _FAILURE_: + self.struct_cleanup() + raise CosmoComputationError(self.le.error_message) + self.ncp.add("lensing") + + self.computed = True + + # At this point, the cosmological instance contains everything needed. The + # following functions are only to output the desired numbers + return + + def raw_cl(self, lmax=-1, nofail=False): + """ + raw_cl(lmax=-1, nofail=False) + + Return a dictionary of the primary C_l + + Parameters + ---------- + lmax : int, optional + Define the maximum l for which the C_l will be returned + (inclusively). This number will be checked against the maximum l + at which they were actually computed by CLASS, and an error will + be raised if the desired lmax is bigger than what CLASS can + give. + nofail: bool, optional + Check and enforce the computation of the spectra module + beforehand, with the desired lmax. + + Returns + ------- + cl : dict + Dictionary that contains the power spectrum for 'tt', 'te', etc... The + index associated with each is defined wrt. Class convention, and are non + important from the python point of view. It also returns now the + ell array. + """ + cdef int lmaxR + cdef double *rcl = calloc(self.sp.ct_size,sizeof(double)) + + # Quantities for tensor modes + cdef double **cl_md = calloc(self.sp.md_size, sizeof(double*)) + for index_md in range(self.sp.md_size): + cl_md[index_md] = calloc(self.sp.ct_size, sizeof(double)) + + # Quantities for isocurvature modes + cdef double **cl_md_ic = calloc(self.sp.md_size, sizeof(double*)) + for index_md in range(self.sp.md_size): + cl_md_ic[index_md] = calloc(self.sp.ct_size*self.sp.ic_ic_size[index_md], sizeof(double)) + + # Define a list of integers, refering to the flags and indices of each + # possible output Cl. It allows for a clear and concise way of looping + # over them, checking if they are defined or not. + has_flags = [ + (self.sp.has_tt, self.sp.index_ct_tt, 'tt'), + (self.sp.has_ee, self.sp.index_ct_ee, 'ee'), + (self.sp.has_te, self.sp.index_ct_te, 'te'), + (self.sp.has_bb, self.sp.index_ct_bb, 'bb'), + (self.sp.has_pp, self.sp.index_ct_pp, 'pp'), + (self.sp.has_tp, self.sp.index_ct_tp, 'tp'),] + spectra = [] + + for flag, index, name in has_flags: + if flag: + spectra.append(name) + + if not spectra: + raise CosmoSevereError("No Cl computed") + lmaxR = self.sp.l_max_tot + if lmax == -1: + lmax = lmaxR + if lmax > lmaxR: + if nofail: + self._pars_check("l_max_scalars",lmax) + self.compute(["lensing"]) + else: + raise CosmoSevereError("Can only compute up to lmax=%d"%lmaxR) + + # Initialise all the needed Cls arrays + cl = {} + for elem in spectra: + cl[elem] = np.zeros(lmax+1, dtype=np.double) + + # Recover for each ell the information from CLASS + for ell from 2<=ell calloc(self.le.lt_size,sizeof(double)) + + # Define a list of integers, refering to the flags and indices of each + # possible output Cl. It allows for a clear and concise way of looping + # over them, checking if they are defined or not. + has_flags = [ + (self.le.has_tt, self.le.index_lt_tt, 'tt'), + (self.le.has_ee, self.le.index_lt_ee, 'ee'), + (self.le.has_te, self.le.index_lt_te, 'te'), + (self.le.has_bb, self.le.index_lt_bb, 'bb'), + (self.le.has_pp, self.le.index_lt_pp, 'pp'), + (self.le.has_tp, self.le.index_lt_tp, 'tp'),] + spectra = [] + + for flag, index, name in has_flags: + if flag: + spectra.append(name) + + if not spectra: + raise CosmoSevereError("No lensed Cl computed") + lmaxR = self.le.l_lensed_max + + if lmax == -1: + lmax = lmaxR + if lmax > lmaxR: + if nofail: + self._pars_check("l_max_scalars",lmax) + self.compute(["lensing"]) + else: + raise CosmoSevereError("Can only compute up to lmax=%d"%lmaxR) + + cl = {} + # Simple Cls, for temperature and polarisation, are not so big in size + for elem in spectra: + cl[elem] = np.zeros(lmax+1, dtype=np.double) + for ell from 2<=ell calloc(self.sp.ct_size,sizeof(double)) + + # Quantities for tensor modes + cdef double **cl_md = calloc(self.sp.md_size, sizeof(double*)) + for index_md in range(self.sp.md_size): + cl_md[index_md] = calloc(self.sp.ct_size, sizeof(double)) + + # Quantities for isocurvature modes + cdef double **cl_md_ic = calloc(self.sp.md_size, sizeof(double*)) + for index_md in range(self.sp.md_size): + cl_md_ic[index_md] = calloc(self.sp.ct_size*self.sp.ic_ic_size[index_md], sizeof(double)) + + lmaxR = self.pt.l_lss_max + has_flags = [ + (self.sp.has_dd, self.sp.index_ct_dd, 'dd'), + (self.sp.has_td, self.sp.index_ct_td, 'td'), + (self.sp.has_ll, self.sp.index_ct_ll, 'll'), + (self.sp.has_dl, self.sp.index_ct_dl, 'dl'), + (self.sp.has_tl, self.sp.index_ct_tl, 'tl')] + spectra = [] + + for flag, index, name in has_flags: + if flag: + spectra.append(name) + l_max_flag = self.sp.l_max_ct[self.sp.index_md_scalars][index] + if l_max_flag < lmax and lmax > 0: + raise CosmoSevereError( + "the %s spectrum was computed until l=%i " % ( + name.upper(), l_max_flag) + + "but you asked a l=%i" % lmax) + + if not spectra: + raise CosmoSevereError("No density Cl computed") + if lmax == -1: + lmax = lmaxR + if lmax > lmaxR: + if nofail: + self._pars_check("l_max_lss",lmax) + self._pars_check("output",'nCl') + self.compute() + else: + raise CosmoSevereError("Can only compute up to lmax=%d"%lmaxR) + + cl = {} + + # For density Cls, the size is bigger (different redshfit bins) + # computes the size, given the number of correlations needed to be computed + size = (self.sp.d_size*(self.sp.d_size+1)-(self.sp.d_size-self.sp.non_diag)* + (self.sp.d_size-1-self.sp.non_diag))/2; + for elem in ['dd', 'll', 'dl']: + if elem in spectra: + cl[elem] = {} + for index in range(size): + cl[elem][index] = np.zeros( + lmax+1, dtype=np.double) + for elem in ['td', 'tl']: + if elem in spectra: + cl[elem] = np.zeros(lmax+1, dtype=np.double) + + for ell from 2<=ell calloc(self.ba.bg_size,sizeof(double)) + + i = 0 + for redshift in z_array: + if background_tau_of_z(&self.ba,redshift,&tau)==_FAILURE_: + raise CosmoSevereError(self.ba.error_message) + + if background_at_tau(&self.ba,tau,self.ba.long_info,self.ba.inter_normal,&last_index,pvecback)==_FAILURE_: + raise CosmoSevereError(self.ba.error_message) + + # store r + r[i] = pvecback[self.ba.index_bg_conf_distance] + # store dz/dr = H + dzdr[i] = pvecback[self.ba.index_bg_H] + + i += 1 + + free(pvecback) + return r[:],dzdr[:] + + def luminosity_distance(self, z): + """ + luminosity_distance(z) + """ + cdef double tau=0.0 + cdef int last_index = 0 # junk + pvecback = calloc(self.ba.bg_size,sizeof(double)) + + if background_tau_of_z(&self.ba, z, &tau)==_FAILURE_: + raise CosmoSevereError(self.ba.error_message) + + if background_at_tau(&self.ba, tau, self.ba.long_info, + self.ba.inter_normal, &last_index, pvecback)==_FAILURE_: + raise CosmoSevereError(self.ba.error_message) + lum_distance = pvecback[self.ba.index_bg_lum_distance] + free(pvecback) + return lum_distance + + # Gives the total matter pk for a given (k,z) + def pk(self,double k,double z): + """ + Gives the total matter pk (in Mpc**3) for a given k (in 1/Mpc) and z (will be non linear if requested to Class, linear otherwise) + + .. note:: + + there is an additional check that output contains `mPk`, + because otherwise a segfault will occur + + """ + cdef double pk + + if (self.pt.has_pk_matter == _FALSE_): + raise CosmoSevereError("No power spectrum computed. You must add mPk to the list of outputs.") + + if (self.nl.method == nl_none): + if nonlinear_pk_at_k_and_z(&self.ba,&self.pm,&self.nl,pk_linear,k,z,self.nl.index_pk_m,&pk,NULL)==_FAILURE_: + raise CosmoSevereError(self.nl.error_message) + else: + if nonlinear_pk_at_k_and_z(&self.ba,&self.pm,&self.nl,pk_nonlinear,k,z,self.nl.index_pk_m,&pk,NULL)==_FAILURE_: + raise CosmoSevereError(self.nl.error_message) + + return pk + + # Gives the cdm+b pk for a given (k,z) + def pk_cb(self,double k,double z): + """ + Gives the cdm+b pk (in Mpc**3) for a given k (in 1/Mpc) and z (will be non linear if requested to Class, linear otherwise) + + .. note:: + + there is an additional check that output contains `mPk`, + because otherwise a segfault will occur + + """ + cdef double pk_cb + + if (self.pt.has_pk_matter == _FALSE_): + raise CosmoSevereError("No power spectrum computed. You must add mPk to the list of outputs.") + if (self.nl.has_pk_cb == _FALSE_): + raise CosmoSevereError("P_cb not computed (probably because there are no massive neutrinos) so you cannot ask for it") + + if (self.nl.method == nl_none): + if nonlinear_pk_at_k_and_z(&self.ba,&self.pm,&self.nl,pk_linear,k,z,self.nl.index_pk_cb,&pk_cb,NULL)==_FAILURE_: + raise CosmoSevereError(self.nl.error_message) + else: + if nonlinear_pk_at_k_and_z(&self.ba,&self.pm,&self.nl,pk_nonlinear,k,z,self.nl.index_pk_cb,&pk_cb,NULL)==_FAILURE_: + raise CosmoSevereError(self.nl.error_message) + + return pk_cb + + # Gives the total matter pk for a given (k,z) + def pk_lin(self,double k,double z): + """ + Gives the linear total matter pk (in Mpc**3) for a given k (in 1/Mpc) and z + + .. note:: + + there is an additional check that output contains `mPk`, + because otherwise a segfault will occur + + """ + cdef double pk_lin + + if (self.pt.has_pk_matter == _FALSE_): + raise CosmoSevereError("No power spectrum computed. You must add mPk to the list of outputs.") + + if nonlinear_pk_at_k_and_z(&self.ba,&self.pm,&self.nl,pk_linear,k,z,self.nl.index_pk_m,&pk_lin,NULL)==_FAILURE_: + raise CosmoSevereError(self.nl.error_message) + + return pk_lin + + # Gives the cdm+b pk for a given (k,z) + def pk_cb_lin(self,double k,double z): + """ + Gives the linear cdm+b pk (in Mpc**3) for a given k (in 1/Mpc) and z + + .. note:: + + there is an additional check that output contains `mPk`, + because otherwise a segfault will occur + + """ + cdef double pk_cb_lin + + if (self.pt.has_pk_matter == _FALSE_): + raise CosmoSevereError("No power spectrum computed. You must add mPk to the list of outputs.") + + if (self.nl.has_pk_cb == _FALSE_): + raise CosmoSevereError("P_cb not computed by CLASS (probably because there are no massive neutrinos)") + + if nonlinear_pk_at_k_and_z(&self.ba,&self.pm,&self.nl,pk_linear,k,z,self.nl.index_pk_cb,&pk_cb_lin,NULL)==_FAILURE_: + raise CosmoSevereError(self.nl.error_message) + + return pk_cb_lin + + def get_pk(self, np.ndarray[DTYPE_t,ndim=3] k, np.ndarray[DTYPE_t,ndim=1] z, int k_size, int z_size, int mu_size): + """ Fast function to get the power spectrum on a k and z array """ + cdef np.ndarray[DTYPE_t, ndim=3] pk = np.zeros((k_size,z_size,mu_size),'float64') + cdef int index_k, index_z, index_mu + + for index_k in xrange(k_size): + for index_z in xrange(z_size): + for index_mu in xrange(mu_size): + pk[index_k,index_z,index_mu] = self.pk(k[index_k,index_z,index_mu],z[index_z]) + return pk + + def get_pk_cb(self, np.ndarray[DTYPE_t,ndim=3] k, np.ndarray[DTYPE_t,ndim=1] z, int k_size, int z_size, int mu_size): + """ Fast function to get the power spectrum on a k and z array """ + cdef np.ndarray[DTYPE_t, ndim=3] pk_cb = np.zeros((k_size,z_size,mu_size),'float64') + cdef int index_k, index_z, index_mu + + for index_k in xrange(k_size): + for index_z in xrange(z_size): + for index_mu in xrange(mu_size): + pk_cb[index_k,index_z,index_mu] = self.pk_cb(k[index_k,index_z,index_mu],z[index_z]) + return pk_cb + + def get_pk_lin(self, np.ndarray[DTYPE_t,ndim=3] k, np.ndarray[DTYPE_t,ndim=1] z, int k_size, int z_size, int mu_size): + """ Fast function to get the linear power spectrum on a k and z array """ + cdef np.ndarray[DTYPE_t, ndim=3] pk = np.zeros((k_size,z_size,mu_size),'float64') + cdef int index_k, index_z, index_mu + + for index_k in xrange(k_size): + for index_z in xrange(z_size): + for index_mu in xrange(mu_size): + pk[index_k,index_z,index_mu] = self.pk_lin(k[index_k,index_z,index_mu],z[index_z]) + return pk + + def get_pk_cb_lin(self, np.ndarray[DTYPE_t,ndim=3] k, np.ndarray[DTYPE_t,ndim=1] z, int k_size, int z_size, int mu_size): + """ Fast function to get the linear power spectrum on a k and z array """ + cdef np.ndarray[DTYPE_t, ndim=3] pk_cb = np.zeros((k_size,z_size,mu_size),'float64') + cdef int index_k, index_z, index_mu + + for index_k in xrange(k_size): + for index_z in xrange(z_size): + for index_mu in xrange(mu_size): + pk_cb[index_k,index_z,index_mu] = self.pk_cb_lin(k[index_k,index_z,index_mu],z[index_z]) + return pk_cb + + def get_pk_and_k_and_z(self, nonlinear=True, only_clustering_species = False): + """ + Returns a grid of matter power spectrum values and the z and k + at which it has been fully computed. Useful for creating interpolators. + + Parameters + ---------- + nonlinear : bool + Whether the returned power spectrum values are linear or non-linear (default) + nonlinear : bool + Whether the returned power spectrum is for galaxy clustering and excludes massive neutrinos, or always includes evrything (default) + """ + cdef np.ndarray[DTYPE_t,ndim=2] pk_at_k_z = np.zeros((self.nl.k_size, self.nl.ln_tau_size),'float64') + cdef np.ndarray[DTYPE_t,ndim=1] k = np.zeros((self.nl.k_size),'float64') + cdef np.ndarray[DTYPE_t,ndim=1] z = np.zeros((self.nl.ln_tau_size),'float64') + cdef int index_k, index_tau, index_pk + cdef double z_max_nonlinear, z_max_requested + + # consistency checks + + if self.nl.has_pk_matter == False: + raise CosmoSevereError("You ask classy to return an array of P(k,z) values, but the input parameters sent to CLASS did not require any P(k,z) calculations; add 'mPk' in 'output'") + + if nonlinear == True and self.nl.method == nl_none: + raise CosmoSevereError("You ask classy to return an array of nonlinear P(k,z) values, but the input parameters sent to CLASS did not require any non-linear P(k,z) calculations; add e.g. 'halofit' or 'HMcode' in 'nonlinear'") + + # check wich type of P(k) to return (total or clustering only, i.e. without massive neutrino contribution) + if (only_clustering_species == True): + index_pk = self.nl.index_pk_cluster + else: + index_pk = self.nl.index_pk_total + + # get list of redshfits + + if self.nl.ln_tau_size == 1: + raise CosmoSevereError("You ask classy to return an array of P(k,z) values, but the input parameters sent to CLASS did not require any P(k,z) calculations for z>0; pass either a list of z in 'z_pk' or one non-zero value in 'z_max_pk'") + else: + for index_tau in xrange(self.nl.ln_tau_size): + if index_tau == self.nl.ln_tau_size-1: + z[index_tau] = 0. + else: + z[index_tau] = self.z_of_tau(np.exp(self.nl.ln_tau[index_tau])) + + # check consitency of the list of redshifts + + if nonlinear == True: + z_max_nonlinear = self.z_of_tau(self.nl.tau[self.nl.index_tau_min_nl]) + z_max_requested = z[0] + if ((self.nl.tau_size - self.nl.ln_tau_size) < self.nl.index_tau_min_nl): + raise CosmoSevereError("get_pk_and_k_and_z() is trying to return P(k,z) up to z_max=%e (to encompass your requested maximum value of z); but the input parameters sent to CLASS were such that the non-linear P(k,z) could only be consistently computed up to z=%e; increase the input parameter 'P_k_max_h/Mpc' or 'P_k_max_1/Mpc', or increase the precision parameters 'halofit_min_k_max' and/or 'hmcode_min_k_max', or decrease your requested z_max"%(z_max_requested,z_max_nonlinear)) + + # get list of k + + for index_k in xrange(self.nl.k_size): + k[index_k] = self.nl.k[index_k] + + # get P(k,z) array + + for index_tau in xrange(self.nl.ln_tau_size): + for index_k in xrange(self.nl.k_size): + if nonlinear == True: + pk_at_k_z[index_k, index_tau] = np.exp(self.nl.ln_pk_nl[index_pk][index_tau * self.nl.k_size + index_k]) + else: + pk_at_k_z[index_k, index_tau] = np.exp(self.nl.ln_pk_l[index_pk][index_tau * self.nl.k_size + index_k]) + + return pk_at_k_z, k, z + + # Gives sigma(R,z) for a given (R,z) + def sigma(self,double R,double z): + """ + Gives sigma (total matter) for a given R and z + (R is the radius in units of Mpc, so if R=8/h this will be the usual sigma8(z) + + .. note:: + + there is an additional check to verify whether output contains `mPk`, + and whether k_max > ... + because otherwise a segfault will occur + + """ + cdef double sigma + + if (self.pt.has_pk_matter == _FALSE_): + raise CosmoSevereError("No power spectrum computed. In order to get sigma(R,z) you must add mPk to the list of outputs.") + + if (self.pt.k_max_for_pk < self.ba.h): + raise CosmoSevereError("In order to get sigma(R,z) you must set 'P_k_max_h/Mpc' to 1 or bigger, in order to have k_max > 1 h/Mpc.") + + if nonlinear_sigmas_at_z(&self.pr,&self.ba,&self.nl,R,z,self.nl.index_pk_m,out_sigma,&sigma)==_FAILURE_: + raise CosmoSevereError(self.nl.error_message) + + return sigma + + # Gives sigma_cb(R,z) for a given (R,z) + def sigma_cb(self,double R,double z): + """ + Gives sigma (cdm+b) for a given R and z + (R is the radius in units of Mpc, so if R=8/h this will be the usual sigma8(z) + + .. note:: + + there is an additional check to verify whether output contains `mPk`, + and whether k_max > ... + because otherwise a segfault will occur + + """ + cdef double sigma_cb + + if (self.pt.has_pk_matter == _FALSE_): + raise CosmoSevereError("No power spectrum computed. In order to get sigma(R,z) you must add mPk to the list of outputs.") + + if (self.nl.has_pk_cb == _FALSE_): + raise CosmoSevereError("sigma_cb not computed by CLASS (probably because there are no massive neutrinos)") + + if (self.pt.k_max_for_pk < self.ba.h): + raise CosmoSevereError("In order to get sigma(R,z) you must set 'P_k_max_h/Mpc' to 1 or bigger, in order to have k_max > 1 h/Mpc.") + + if nonlinear_sigmas_at_z(&self.pr,&self.ba,&self.nl,R,z,self.nl.index_pk_cb,out_sigma,&sigma_cb)==_FAILURE_: + raise CosmoSevereError(self.nl.error_message) + + return sigma_cb + + # Gives effective logarithmic slope of P_L(k,z) (total matter) for a given (k,z) + def pk_tilt(self,double k,double z): + """ + Gives effective logarithmic slope of P_L(k,z) (total matter) for a given k and z + (k is the wavenumber in units of 1/Mpc, z is the redshift, the output is dimensionless) + + .. note:: + + there is an additional check to verify whether output contains `mPk` and whether k is in the right range + + """ + cdef double pk_tilt + + if (self.pt.has_pk_matter == _FALSE_): + raise CosmoSevereError("No power spectrum computed. In order to get pk_tilt(k,z) you must add mPk to the list of outputs.") + + if (k < self.nl.k[1] or k > self.nl.k[self.nl.k_size-2]): + raise CosmoSevereError("In order to get pk_tilt at k=%e 1/Mpc, you should compute P(k,z) in a wider range of k's"%k) + + if nonlinear_pk_tilt_at_k_and_z(&self.ba,&self.pm,&self.nl,pk_linear,k,z,self.nl.index_pk_total,&pk_tilt)==_FAILURE_: + raise CosmoSevereError(self.nl.error_message) + + return pk_tilt + + #calculates the hmcode window_function of the Navarrow Frenk White Profile + def nonlinear_hmcode_window_nfw(self,double k,double rv,double c): + """ + Gives window_nfw for a given wavevector k, virial radius rv and concentration c + + """ + cdef double window_nfw + + + if nonlinear_hmcode_window_nfw(&self.nl,k,rv,c,&window_nfw)==_FAILURE_: + raise CosmoSevereError(self.sp.error_message) + + return window_nfw + + def age(self): + self.compute(["background"]) + return self.ba.age + + def h(self): + return self.ba.h + + def n_s(self): + return self.pm.n_s + + def tau_reio(self): + return self.th.tau_reio + + def Omega_m(self): + return self.ba.Omega0_m + + def Omega_r(self): + return self.ba.Omega0_r + + def theta_s_100(self): + return 100.*self.th.rs_rec/self.th.da_rec/(1.+self.th.z_rec) + + def theta_star_100(self): + return 100.*self.th.rs_star/self.th.da_star/(1.+self.th.z_star) + + def Omega_Lambda(self): + return self.ba.Omega0_lambda + + def Omega_g(self): + return self.ba.Omega0_g + + def Omega_b(self): + return self.ba.Omega0_b + + def omega_b(self): + return self.ba.Omega0_b * self.ba.h * self.ba.h + + def Neff(self): + return self.ba.Neff + + def k_eq(self): + self.compute(["background"]) + return self.ba.a_eq*self.ba.H_eq + + def sigma8(self): + self.compute(["nonlinear"]) + return self.nl.sigma8[self.nl.index_pk_m] + + #def neff(self): + # self.compute(["spectra"]) + # return self.sp.neff + + def sigma8_cb(self): + self.compute(["nonlinear"]) + return self.nl.sigma8[self.nl.index_pk_cb] + + def rs_drag(self): + self.compute(["thermodynamics"]) + return self.th.rs_d + + def z_reio(self): + self.compute(["thermodynamics"]) + return self.th.z_reio + + def angular_distance(self, z): + """ + angular_distance(z) + + Return the angular diameter distance (exactly, the quantity defined by Class + as index_bg_ang_distance in the background module) + + Parameters + ---------- + z : float + Desired redshift + """ + cdef double tau + cdef int last_index #junk + cdef double * pvecback + + pvecback = calloc(self.ba.bg_size,sizeof(double)) + + if background_tau_of_z(&self.ba,z,&tau)==_FAILURE_: + raise CosmoSevereError(self.ba.error_message) + + if background_at_tau(&self.ba,tau,self.ba.long_info,self.ba.inter_normal,&last_index,pvecback)==_FAILURE_: + raise CosmoSevereError(self.ba.error_message) + + D_A = pvecback[self.ba.index_bg_ang_distance] + + free(pvecback) + + return D_A + + def scale_independent_growth_factor(self, z): + """ + scale_independent_growth_factor(z) + + Return the scale invariant growth factor D(a) for CDM perturbations + (exactly, the quantity defined by Class as index_bg_D in the background module) + + Parameters + ---------- + z : float + Desired redshift + """ + cdef double tau + cdef int last_index #junk + cdef double * pvecback + + pvecback = calloc(self.ba.bg_size,sizeof(double)) + + if background_tau_of_z(&self.ba,z,&tau)==_FAILURE_: + raise CosmoSevereError(self.ba.error_message) + + if background_at_tau(&self.ba,tau,self.ba.long_info,self.ba.inter_normal,&last_index,pvecback)==_FAILURE_: + raise CosmoSevereError(self.ba.error_message) + + D = pvecback[self.ba.index_bg_D] + + free(pvecback) + + return D + + def scale_independent_growth_factor_f(self, z): + """ + scale_independent_growth_factor_f(z) + + Return the scale invariant growth factor f(z)=d ln D / d ln a for CDM perturbations + (exactly, the quantity defined by Class as index_bg_f in the background module) + + Parameters + ---------- + z : float + Desired redshift + """ + cdef double tau + cdef int last_index #junk + cdef double * pvecback + + pvecback = calloc(self.ba.bg_size,sizeof(double)) + + if background_tau_of_z(&self.ba,z,&tau)==_FAILURE_: + raise CosmoSevereError(self.ba.error_message) + + if background_at_tau(&self.ba,tau,self.ba.long_info,self.ba.inter_normal,&last_index,pvecback)==_FAILURE_: + raise CosmoSevereError(self.ba.error_message) + + f = pvecback[self.ba.index_bg_f] + + free(pvecback) + + return f + + def z_of_tau(self, tau): + """ + Redshift corresponding to a given conformal time. + + Parameters + ---------- + tau : float + Conformal time + """ + cdef double z + cdef int last_index #junk + cdef double * pvecback + + pvecback = calloc(self.ba.bg_size,sizeof(double)) + + if background_at_tau(&self.ba,tau,self.ba.long_info,self.ba.inter_normal,&last_index,pvecback)==_FAILURE_: + raise CosmoSevereError(self.ba.error_message) + + z = 1./pvecback[self.ba.index_bg_a]-1. + + free(pvecback) + + return z + + def Hubble(self, z): + """ + Hubble(z) + + Return the Hubble rate (exactly, the quantity defined by Class as index_bg_H + in the background module) + + Parameters + ---------- + z : float + Desired redshift + """ + cdef double tau + cdef int last_index #junk + cdef double * pvecback + + pvecback = calloc(self.ba.bg_size,sizeof(double)) + + if background_tau_of_z(&self.ba,z,&tau)==_FAILURE_: + raise CosmoSevereError(self.ba.error_message) + + if background_at_tau(&self.ba,tau,self.ba.long_info,self.ba.inter_normal,&last_index,pvecback)==_FAILURE_: + raise CosmoSevereError(self.ba.error_message) + + H = pvecback[self.ba.index_bg_H] + + free(pvecback) + + return H + + def Om_m(self, z): + """ + Omega_m(z) + + Return the matter density fraction (exactly, the quantity defined by Class as index_bg_Omega_m + in the background module) + + Parameters + ---------- + z : float + Desired redshift + """ + cdef double tau + cdef int last_index #junk + cdef double * pvecback + + pvecback = calloc(self.ba.bg_size,sizeof(double)) + + if background_tau_of_z(&self.ba,z,&tau)==_FAILURE_: + raise CosmoSevereError(self.ba.error_message) + + if background_at_tau(&self.ba,tau,self.ba.long_info,self.ba.inter_normal,&last_index,pvecback)==_FAILURE_: + raise CosmoSevereError(self.ba.error_message) + + Om_m = pvecback[self.ba.index_bg_Omega_m] + + free(pvecback) + + return Om_m + + + def ionization_fraction(self, z): + """ + ionization_fraction(z) + + Return the ionization fraction for a given redshift z + + Parameters + ---------- + z : float + Desired redshift + """ + cdef double tau + cdef int last_index #junk + cdef double * pvecback + cdef double * pvecthermo + + pvecback = calloc(self.ba.bg_size,sizeof(double)) + pvecthermo = calloc(self.th.th_size,sizeof(double)) + + if background_tau_of_z(&self.ba,z,&tau)==_FAILURE_: + raise CosmoSevereError(self.ba.error_message) + + if background_at_tau(&self.ba,tau,self.ba.long_info,self.ba.inter_normal,&last_index,pvecback)==_FAILURE_: + raise CosmoSevereError(self.ba.error_message) + + if thermodynamics_at_z(&self.ba,&self.th,z,self.th.inter_normal,&last_index,pvecback,pvecthermo) == _FAILURE_: + raise CosmoSevereError(self.th.error_message) + + xe = pvecthermo[self.th.index_th_xe] + + free(pvecback) + free(pvecthermo) + + return xe + + def baryon_temperature(self, z): + """ + baryon_temperature(z) + + Give the baryon temperature for a given redshift z + + Parameters + ---------- + z : float + Desired redshift + """ + cdef double tau + cdef int last_index #junk + cdef double * pvecback + cdef double * pvecthermo + + pvecback = calloc(self.ba.bg_size,sizeof(double)) + pvecthermo = calloc(self.th.th_size,sizeof(double)) + + if background_tau_of_z(&self.ba,z,&tau)==_FAILURE_: + raise CosmoSevereError(self.ba.error_message) + + if background_at_tau(&self.ba,tau,self.ba.long_info,self.ba.inter_normal,&last_index,pvecback)==_FAILURE_: + raise CosmoSevereError(self.ba.error_message) + + if thermodynamics_at_z(&self.ba,&self.th,z,self.th.inter_normal,&last_index,pvecback,pvecthermo) == _FAILURE_: + raise CosmoSevereError(self.th.error_message) + + Tb = pvecthermo[self.th.index_th_Tb] + + free(pvecback) + free(pvecthermo) + + return Tb + + def T_cmb(self): + """ + Return the CMB temperature + """ + return self.ba.T_cmb + + # redundent with a previous Omega_m() funciton, + # but we leave it not to break compatibility + def Omega0_m(self): + """ + Return the sum of Omega0 for all non-relativistic components + """ + return self.ba.Omega0_m + + def get_background(self): + """ + Return an array of the background quantities at all times. + + Parameters + ---------- + + Returns + ------- + background : dictionary containing background. + """ + cdef char *titles + cdef double* data + titles = calloc(_MAXTITLESTRINGLENGTH_,sizeof(char)) + + if background_output_titles(&self.ba, titles)==_FAILURE_: + raise CosmoSevereError(self.ba.error_message) + + tmp = titles + tmp = str(tmp.decode()) + names = tmp.split("\t")[:-1] + number_of_titles = len(names) + timesteps = self.ba.bt_size + + data = malloc(sizeof(double)*timesteps*number_of_titles) + + if background_output_data(&self.ba, number_of_titles, data)==_FAILURE_: + raise CosmoSevereError(self.ba.error_message) + + background = {} + + for i in range(number_of_titles): + background[names[i]] = np.zeros(timesteps, dtype=np.double) + for index in range(timesteps): + background[names[i]][index] = data[index*number_of_titles+i] + + free(titles) + free(data) + return background + + def get_thermodynamics(self): + """ + Return the thermodynamics quantities. + + Returns + ------- + thermodynamics : dictionary containing thermodynamics. + """ + cdef char *titles + cdef double* data + + titles = calloc(_MAXTITLESTRINGLENGTH_,sizeof(char)) + + if thermodynamics_output_titles(&self.ba, &self.th, titles)==_FAILURE_: + raise CosmoSevereError(self.th.error_message) + + tmp = titles + tmp = str(tmp.decode()) + names = tmp.split("\t")[:-1] + number_of_titles = len(names) + timesteps = self.th.tt_size + + data = malloc(sizeof(double)*timesteps*number_of_titles) + + if thermodynamics_output_data(&self.ba, &self.th, number_of_titles, data)==_FAILURE_: + raise CosmoSevereError(self.th.error_message) + + thermodynamics = {} + + for i in range(number_of_titles): + thermodynamics[names[i]] = np.zeros(timesteps, dtype=np.double) + for index in range(timesteps): + thermodynamics[names[i]][index] = data[index*number_of_titles+i] + + free(titles) + free(data) + return thermodynamics + + def get_primordial(self): + """ + Return the primordial scalar and/or tensor spectrum depending on 'modes'. + 'output' must be set to something, e.g. 'tCl'. + + Returns + ------- + primordial : dictionary containing k-vector and primordial scalar and tensor P(k). + """ + cdef char *titles + cdef double* data + + titles = calloc(_MAXTITLESTRINGLENGTH_,sizeof(char)) + + if primordial_output_titles(&self.pt, &self.pm, titles)==_FAILURE_: + raise CosmoSevereError(self.pm.error_message) + + tmp = titles + names = tmp.split("\t")[:-1] + tmp = str(tmp.decode()) + number_of_titles = len(names) + timesteps = self.pm.lnk_size + + data = malloc(sizeof(double)*timesteps*number_of_titles) + + if primordial_output_data(&self.pt, &self.pm, number_of_titles, data)==_FAILURE_: + raise CosmoSevereError(self.pm.error_message) + + primordial = {} + + for i in range(number_of_titles): + primordial[names[i]] = np.zeros(timesteps, dtype=np.double) + for index in range(timesteps): + primordial[names[i]][index] = data[index*number_of_titles+i] + + free(titles) + free(data) + return primordial + + + @cython.returns(dict) + @cython.initializedcheck(False) + @cython.boundscheck(False) + @cython.cdivision(True) + @cython.ccall + def get_perturbations(self): + """ + Return scalar, vector and/or tensor perturbations as arrays for requested + k-values. + + .. note:: + + you need to specify both 'k_output_values', and have some + perturbations computed, for instance by setting 'output' to 'tCl'. + + Returns + ------- + perturbations : dict of array of dicts + perturbations['scalar'] is an array of length 'k_output_values' of + dictionary containing scalar perturbations. + Similar for perturbations['vector'] and perturbations['tensor']. + """ + + perturbations = {} + + if self.pt.k_output_values_num<1: + return perturbations + + cdef: + Py_ssize_t j + Py_ssize_t i + Py_ssize_t number_of_titles + Py_ssize_t timesteps + list names + list tmparray + dict tmpdict + double[:,::1] data_mv + double ** thedata + int * thesizes + + # Doing the exact same thing 3 times, for scalar, vector and tensor. Sorry + # for copy-and-paste here, but I don't know what else to do. + for mode in ['scalar','vector','tensor']: + if mode=='scalar' and self.pt.has_scalars: + thetitles = self.pt.scalar_titles + thedata = self.pt.scalar_perturbations_data + thesizes = self.pt.size_scalar_perturbation_data + elif mode=='vector' and self.pt.has_vectors: + thetitles = self.pt.vector_titles + thedata = self.pt.vector_perturbations_data + thesizes = self.pt.size_vector_perturbation_data + elif mode=='tensor' and self.pt.has_tensors: + thetitles = self.pt.tensor_titles + thedata = self.pt.tensor_perturbations_data + thesizes = self.pt.size_tensor_perturbation_data + else: + continue + thetitles = str(thetitles.decode()) + names = thetitles.split("\t")[:-1] + number_of_titles = len(names) + tmparray = [] + if number_of_titles != 0: + for j in range(self.pt.k_output_values_num): + timesteps = thesizes[j]//number_of_titles + tmpdict={} + data_mv = thedata[j] + for i in range(number_of_titles): + tmpdict[names[i]] = np.asarray(data_mv[:,i]) + tmparray.append(tmpdict) + perturbations[mode] = tmparray + + return perturbations + + def get_transfer(self, z=0., output_format='class'): + """ + Return the density and/or velocity transfer functions for all initial + conditions today. You must include 'mTk' and/or 'vCTk' in the list of + 'output'. The transfer functions can also be computed at higher redshift z + provided that 'z_pk' has been set and that 0calloc(_MAXTITLESTRINGLENGTH_,sizeof(char)) + + if perturb_output_titles(&self.ba,&self.pt, outf, titles)==_FAILURE_: + raise CosmoSevereError(self.pt.error_message) + + tmp = titles + tmp = str(tmp.decode()) + names = tmp.split("\t")[:-1] + number_of_titles = len(names) + timesteps = self.pt.k_size[index_md] + + size_ic_data = timesteps*number_of_titles; + ic_num = self.pt.ic_size[index_md]; + + data = malloc(sizeof(double)*size_ic_data*ic_num) + + if perturb_output_data(&self.ba, &self.pt, outf, z, number_of_titles, data)==_FAILURE_: + raise CosmoSevereError(self.pt.error_message) + + transfers = {} + + for index_ic in range(ic_num): + if perturb_output_firstline_and_ic_suffix(&self.pt, index_ic, ic_info, ic_suffix)==_FAILURE_: + raise CosmoSevereError(self.pt.error_message) + ic_key = ic_suffix + + tmpdict = {} + for i in range(number_of_titles): + tmpdict[names[i]] = np.zeros(timesteps, dtype=np.double) + for index in range(timesteps): + tmpdict[names[i]][index] = data[index_ic*size_ic_data+index*number_of_titles+i] + + if ic_num==1: + transfers = tmpdict + else: + transfers[ic_key] = tmpdict + + free(titles) + free(data) + + return transfers + + def get_current_derived_parameters(self, names): + """ + get_current_derived_parameters(names) + + Return a dictionary containing an entry for all the names defined in the + input list. + + Parameters + ---------- + names : list + Derived parameters that can be asked from Monte Python, or + elsewhere. + + Returns + ------- + derived : dict + + .. warning:: + + This method used to take as an argument directly the data class from + Monte Python. To maintain compatibility with this old feature, a + check is performed to verify that names is indeed a list. If not, it + returns a TypeError. The old version of this function, when asked + with the new argument, will raise an AttributeError. + + """ + if type(names) != type([]): + raise TypeError("Deprecated") + + derived = {} + for name in names: + if name == 'h': + value = self.ba.h + elif name == 'H0': + value = self.ba.h*100 + elif name == 'Omega0_lambda' or name == 'Omega_Lambda': + value = self.ba.Omega0_lambda + elif name == 'Omega0_fld': + value = self.ba.Omega0_fld + elif name == 'age': + value = self.ba.age + elif name == 'conformal_age': + value = self.ba.conformal_age + elif name == 'm_ncdm_in_eV': + value = self.ba.m_ncdm_in_eV[0] + elif name == 'm_ncdm_tot': + value = self.ba.Omega0_ncdm_tot*self.ba.h*self.ba.h*93.14 + elif name == 'Neff': + value = self.ba.Neff + elif name == 'Omega_m': + value = self.ba.Omega0_m + elif name == 'omega_m': + value = self.ba.Omega0_m*self.ba.h**2 + elif name == 'xi_idr': + value = self.ba.T_idr/self.ba.T_cmb + elif name == 'N_dg': + value = self.ba.Omega0_idr/self.ba.Omega0_g*8./7.*pow(11./4.,4./3.) + elif name == 'Gamma_0_nadm': + value = self.th.a_idm_dr*(4./3.)*(self.ba.h*self.ba.h*self.ba.Omega0_idr) + elif name == 'a_dark': + value = self.th.a_idm_dr + elif name == 'tau_reio': + value = self.th.tau_reio + elif name == 'z_reio': + value = self.th.z_reio + elif name == 'z_rec': + value = self.th.z_rec + elif name == 'tau_rec': + value = self.th.tau_rec + elif name == 'rs_rec': + value = self.th.rs_rec + elif name == 'rs_rec_h': + value = self.th.rs_rec*self.ba.h + elif name == 'ds_rec': + value = self.th.ds_rec + elif name == 'ds_rec_h': + value = self.th.ds_rec*self.ba.h + elif name == 'ra_rec': + value = self.th.da_rec*(1.+self.th.z_rec) + elif name == 'ra_rec_h': + value = self.th.da_rec*(1.+self.th.z_rec)*self.ba.h + elif name == 'da_rec': + value = self.th.da_rec + elif name == 'da_rec_h': + value = self.th.da_rec*self.ba.h + elif name == 'z_star': + value = self.th.z_star + elif name == 'tau_star': + value = self.th.tau_star + elif name == 'rs_star': + value = self.th.rs_star + elif name == 'ds_star': + value = self.th.ds_star + elif name == 'ra_star': + value = self.th.ra_star + elif name == 'da_star': + value = self.th.da_star + elif name == 'rd_star': + value = self.th.rd_star + elif name == 'z_d': + value = self.th.z_d + elif name == 'tau_d': + value = self.th.tau_d + elif name == 'ds_d': + value = self.th.ds_d + elif name == 'ds_d_h': + value = self.th.ds_d*self.ba.h + elif name == 'rs_d': + value = self.th.rs_d + elif name == 'rs_d_h': + value = self.th.rs_d*self.ba.h + elif name == '100*theta_s': + value = 100.*self.th.rs_rec/self.th.da_rec/(1.+self.th.z_rec) + elif name == '100*theta_star': + value = 100.*self.th.rs_star/self.th.da_star/(1.+self.th.z_star) + elif name == 'YHe': + value = self.th.YHe + elif name == 'n_e': + value = self.th.n_e + elif name == 'A_s': + value = self.pm.A_s + elif name == 'ln10^{10}A_s': + value = log(1.e10*self.pm.A_s) + elif name == 'n_s': + value = self.pm.n_s + elif name == 'alpha_s': + value = self.pm.alpha_s + elif name == 'beta_s': + value = self.pm.beta_s + elif name == 'r': + # This is at the pivot scale + value = self.pm.r + elif name == 'r_0002': + # at k_pivot = 0.002/Mpc + value = self.pm.r*(0.002/self.pm.k_pivot)**( + self.pm.n_t-self.pm.n_s-1+0.5*self.pm.alpha_s*log( + 0.002/self.pm.k_pivot)) + elif name == 'n_t': + value = self.pm.n_t + elif name == 'alpha_t': + value = self.pm.alpha_t + elif name == 'V_0': + value = self.pm.V0 + elif name == 'V_1': + value = self.pm.V1 + elif name == 'V_2': + value = self.pm.V2 + elif name == 'V_3': + value = self.pm.V3 + elif name == 'V_4': + value = self.pm.V4 + elif name == 'epsilon_V': + eps1 = self.pm.r*(1./16.-0.7296/16.*(self.pm.r/8.+self.pm.n_s-1.)) + eps2 = -self.pm.n_s+1.-0.7296*self.pm.alpha_s-self.pm.r*(1./8.+1./8.*(self.pm.n_s-1.)*(-0.7296-1.5))-(self.pm.r/8.)**2*(-0.7296-1.) + value = eps1*((1.-eps1/3.+eps2/6.)/(1.-eps1/3.))**2 + elif name == 'eta_V': + eps1 = self.pm.r*(1./16.-0.7296/16.*(self.pm.r/8.+self.pm.n_s-1.)) + eps2 = -self.pm.n_s+1.-0.7296*self.pm.alpha_s-self.pm.r*(1./8.+1./8.*(self.pm.n_s-1.)*(-0.7296-1.5))-(self.pm.r/8.)**2*(-0.7296-1.) + eps23 = 1./8.*(self.pm.r**2/8.+(self.pm.n_s-1.)*self.pm.r-8.*self.pm.alpha_s) + value = (2.*eps1-eps2/2.-2./3.*eps1**2+5./6.*eps1*eps2-eps2**2/12.-eps23/6.)/(1.-eps1/3.) + elif name == 'ksi_V^2': + eps1 = self.pm.r*(1./16.-0.7296/16.*(self.pm.r/8.+self.pm.n_s-1.)) + eps2 = -self.pm.n_s+1.-0.7296*self.pm.alpha_s-self.pm.r*(1./8.+1./8.*(self.pm.n_s-1.)*(-0.7296-1.5))-(self.pm.r/8.)**2*(-0.7296-1.) + eps23 = 1./8.*(self.pm.r**2/8.+(self.pm.n_s-1.)*self.pm.r-8.*self.pm.alpha_s) + value = 2.*(1.-eps1/3.+eps2/6.)*(2.*eps1**2-3./2.*eps1*eps2+eps23/4.)/(1.-eps1/3.)**2 + elif name == 'exp_m_2_tau_As': + value = exp(-2.*self.th.tau_reio)*self.pm.A_s + elif name == 'phi_min': + value = self.pm.phi_min + elif name == 'phi_max': + value = self.pm.phi_max + elif name == 'sigma8': + value = self.nl.sigma8[self.nl.index_pk_m] + elif name == 'sigma8_cb': + value = self.nl.sigma8[self.nl.index_pk_cb] + elif name == 'k_eq': + value = self.ba.a_eq*self.ba.H_eq + + else: + raise CosmoSevereError("%s was not recognized as a derived parameter" % name) + derived[name] = value + return derived + + def nonlinear_scale(self, np.ndarray[DTYPE_t,ndim=1] z, int z_size): + """ + nonlinear_scale(z, z_size) + + Return the nonlinear scale for all the redshift specified in z, of size + z_size + + Parameters + ---------- + z : numpy array + Array of requested redshifts + z_size : int + Size of the redshift array + """ + cdef int index_z + cdef np.ndarray[DTYPE_t, ndim=1] k_nl = np.zeros(z_size,'float64') + cdef np.ndarray[DTYPE_t, ndim=1] k_nl_cb = np.zeros(z_size,'float64') + #cdef double *k_nl + #k_nl = calloc(z_size,sizeof(double)) + for index_z in range(z_size): + if nonlinear_k_nl_at_z(&self.ba,&self.nl,z[index_z],&k_nl[index_z],&k_nl_cb[index_z]) == _FAILURE_: + raise CosmoSevereError(self.nl.error_message) + + return k_nl + + def nonlinear_scale_cb(self, np.ndarray[DTYPE_t,ndim=1] z, int z_size): + """ + +make nonlinear_scale_cb(z, z_size) + + Return the nonlinear scale for all the redshift specified in z, of size + + z_size + + Parameters + ---------- + z : numpy array + Array of requested redshifts + z_size : int + Size of the redshift array + """ + cdef int index_z + cdef np.ndarray[DTYPE_t, ndim=1] k_nl = np.zeros(z_size,'float64') + cdef np.ndarray[DTYPE_t, ndim=1] k_nl_cb = np.zeros(z_size,'float64') + #cdef double *k_nl + #k_nl = calloc(z_size,sizeof(double)) + if (self.ba.Omega0_ncdm_tot == 0.): + raise CosmoSevereError( + "No massive neutrinos. You must use pk, rather than pk_cb." + ) + for index_z in range(z_size): + if nonlinear_k_nl_at_z(&self.ba,&self.nl,z[index_z],&k_nl[index_z],&k_nl_cb[index_z]) == _FAILURE_: + raise CosmoSevereError(self.nl.error_message) + + return k_nl_cb + + def nonlinear_hmcode_sigma8(self, np.ndarray[DTYPE_t,ndim=1] z, int z_size): + """ + nonlinear_hmcode_sigma8(z, z_size) + + Return sigma_8 for all the redshift specified in z, of size + + """ + cdef int index_z + + cdef np.ndarray[DTYPE_t, ndim=1] sigma_8 = np.zeros(z_size,'float64') + cdef np.ndarray[DTYPE_t, ndim=1] sigma_8_cb = np.zeros(z_size,'float64') + +# for index_z in range(z_size): +# if nonlinear_hmcode_sigma8_at_z(&self.ba,&self.nl,z[index_z],&sigma_8[index_z],&sigma_8_cb[index_z]) == _FAILURE_: +# raise CosmoSevereError(self.nl.error_message) + + return sigma_8 + + def nonlinear_hmcode_sigma8_cb(self, np.ndarray[DTYPE_t,ndim=1] z, int z_size): + """ + nonlinear_hmcode_sigma8(z, z_size) + + Return sigma_8 for all the redshift specified in z, of size + + """ + cdef int index_z + + cdef np.ndarray[DTYPE_t, ndim=1] sigma_8 = np.zeros(z_size,'float64') + cdef np.ndarray[DTYPE_t, ndim=1] sigma_8_cb = np.zeros(z_size,'float64') + +# for index_z in range(z_size): +# if nonlinear_hmcode_sigma8_at_z(&self.ba,&self.nl,z[index_z],&sigma_8[index_z],&sigma_8_cb[index_z]) == _FAILURE_: +# raise CosmoSevereError(self.nl.error_message) + + return sigma_8_cb + + def nonlinear_hmcode_sigmadisp(self, np.ndarray[DTYPE_t,ndim=1] z, int z_size): + """ + nonlinear_hmcode_sigmadisp(z, z_size) + + Return sigma_disp for all the redshift specified in z, of size + z_size + + Parameters + ---------- + z : numpy array + Array of requested redshifts + z_size : int + Size of the redshift array + """ + cdef int index_z + cdef np.ndarray[DTYPE_t, ndim=1] sigma_disp = np.zeros(z_size,'float64') + cdef np.ndarray[DTYPE_t, ndim=1] sigma_disp_cb = np.zeros(z_size,'float64') + +# for index_z in range(z_size): +# if nonlinear_hmcode_sigmadisp_at_z(&self.ba,&self.nl,z[index_z],&sigma_disp[index_z],&sigma_disp_cb[index_z]) == _FAILURE_: +# raise CosmoSevereError(self.nl.error_message) + + return sigma_disp + + def nonlinear_hmcode_sigmadisp_cb(self, np.ndarray[DTYPE_t,ndim=1] z, int z_size): + """ + nonlinear_hmcode_sigmadisp(z, z_size) + + Return sigma_disp for all the redshift specified in z, of size + z_size + + Parameters + ---------- + z : numpy array + Array of requested redshifts + z_size : int + Size of the redshift array + """ + cdef int index_z + cdef np.ndarray[DTYPE_t, ndim=1] sigma_disp = np.zeros(z_size,'float64') + cdef np.ndarray[DTYPE_t, ndim=1] sigma_disp_cb = np.zeros(z_size,'float64') + +# for index_z in range(z_size): +# if nonlinear_hmcode_sigmadisp_at_z(&self.ba,&self.nl,z[index_z],&sigma_disp[index_z],&sigma_disp_cb[index_z]) == _FAILURE_: +# raise CosmoSevereError(self.nl.error_message) + + return sigma_disp_cb + + def nonlinear_hmcode_sigmadisp100(self, np.ndarray[DTYPE_t,ndim=1] z, int z_size): + """ + nonlinear_hmcode_sigmadisp100(z, z_size) + + Return sigma_disp_100 for all the redshift specified in z, of size + z_size + + Parameters + ---------- + z : numpy array + Array of requested redshifts + z_size : int + Size of the redshift array + """ + cdef int index_z + cdef np.ndarray[DTYPE_t, ndim=1] sigma_disp_100 = np.zeros(z_size,'float64') + cdef np.ndarray[DTYPE_t, ndim=1] sigma_disp_100_cb = np.zeros(z_size,'float64') + +# for index_z in range(z_size): +# if nonlinear_hmcode_sigmadisp100_at_z(&self.ba,&self.nl,z[index_z],&sigma_disp_100[index_z],&sigma_disp_100_cb[index_z]) == _FAILURE_: +# raise CosmoSevereError(self.nl.error_message) + + return sigma_disp_100 + + def nonlinear_hmcode_sigmadisp100_cb(self, np.ndarray[DTYPE_t,ndim=1] z, int z_size): + """ + nonlinear_hmcode_sigmadisp100(z, z_size) + + Return sigma_disp_100 for all the redshift specified in z, of size + z_size + + Parameters + ---------- + z : numpy array + Array of requested redshifts + z_size : int + Size of the redshift array + """ + cdef int index_z + cdef np.ndarray[DTYPE_t, ndim=1] sigma_disp_100 = np.zeros(z_size,'float64') + cdef np.ndarray[DTYPE_t, ndim=1] sigma_disp_100_cb = np.zeros(z_size,'float64') + +# for index_z in range(z_size): +# if nonlinear_hmcode_sigmadisp100_at_z(&self.ba,&self.nl,z[index_z],&sigma_disp_100[index_z],&sigma_disp_100_cb[index_z]) == _FAILURE_: +# raise CosmoSevereError(self.nl.error_message) + + return sigma_disp_100_cb + + def nonlinear_hmcode_sigmaprime(self, np.ndarray[DTYPE_t,ndim=1] z, int z_size): + """ + nonlinear_hmcode_sigmaprime(z, z_size) + + Return sigma_disp for all the redshift specified in z, of size + z_size + + Parameters + ---------- + z : numpy array + Array of requested redshifts + z_size : int + Size of the redshift array + """ + cdef int index_z + cdef np.ndarray[DTYPE_t, ndim=1] sigma_prime = np.zeros(z_size,'float64') + cdef np.ndarray[DTYPE_t, ndim=1] sigma_prime_cb = np.zeros(z_size,'float64') + +# for index_z in range(z_size): +# if nonlinear_hmcode_sigmaprime_at_z(&self.ba,&self.nl,z[index_z],&sigma_prime[index_z],&sigma_prime_cb[index_z]) == _FAILURE_: +# raise CosmoSevereError(self.nl.error_message) + + return sigma_prime + + def nonlinear_hmcode_sigmaprime_cb(self, np.ndarray[DTYPE_t,ndim=1] z, int z_size): + """ + nonlinear_hmcode_sigmaprime(z, z_size) + + Return sigma_disp for all the redshift specified in z, of size + z_size + + Parameters + ---------- + z : numpy array + Array of requested redshifts + z_size : int + Size of the redshift array + """ + cdef int index_z + cdef np.ndarray[DTYPE_t, ndim=1] sigma_prime = np.zeros(z_size,'float64') + cdef np.ndarray[DTYPE_t, ndim=1] sigma_prime_cb = np.zeros(z_size,'float64') + +# for index_z in range(z_size): +# if nonlinear_hmcode_sigmaprime_at_z(&self.ba,&self.nl,z[index_z],&sigma_prime[index_z],&sigma_prime_cb[index_z]) == _FAILURE_: +# raise CosmoSevereError(self.nl.error_message) + + return sigma_prime_cb + + def __call__(self, ctx): + """ + Function to interface with CosmoHammer + + Parameters + ---------- + ctx : context + Contains several dictionaries storing data and cosmological + information + + """ + data = ctx.get('data') # recover data from the context + + # If the module has already been called once, clean-up + if self.state: + self.struct_cleanup() + + # Set the module to the current values + self.set(data.cosmo_arguments) + self.compute(["lensing"]) + + # Compute the derived paramter value and store them + params = ctx.getData() + self.get_current_derived_parameters( + data.get_mcmc_parameters(['derived'])) + for elem in data.get_mcmc_parameters(['derived']): + data.mcmc_parameters[elem]['current'] /= \ + data.mcmc_parameters[elem]['scale'] + params[elem] = data.mcmc_parameters[elem]['current'] + + ctx.add('boundary', True) + # Store itself into the context, to be accessed by the likelihoods + ctx.add('cosmo', self) + + def get_pk_array(self, np.ndarray[DTYPE_t,ndim=1] k, np.ndarray[DTYPE_t,ndim=1] z, int k_size, int z_size, nonlinear): + """ Fast function to get the power spectrum on a k and z array """ + cdef np.ndarray[DTYPE_t, ndim=1] pk = np.zeros(k_size*z_size,'float64') + cdef np.ndarray[DTYPE_t, ndim=1] pk_cb = np.zeros(k_size*z_size,'float64') + + if nonlinear == 0: + nonlinear_pks_at_kvec_and_zvec(&self.ba, &self.nl, pk_linear, k.data, k_size, z.data, z_size, pk.data, pk_cb.data) + + else: + nonlinear_pks_at_kvec_and_zvec(&self.ba, &self.nl, pk_nonlinear, k.data, k_size, z.data, z_size, pk.data, pk_cb.data) + + return pk + + def get_pk_cb_array(self, np.ndarray[DTYPE_t,ndim=1] k, np.ndarray[DTYPE_t,ndim=1] z, int k_size, int z_size, nonlinear): + """ Fast function to get the power spectrum on a k and z array """ + cdef np.ndarray[DTYPE_t, ndim=1] pk = np.zeros(k_size*z_size,'float64') + cdef np.ndarray[DTYPE_t, ndim=1] pk_cb = np.zeros(k_size*z_size,'float64') + + if nonlinear == 0: + nonlinear_pks_at_kvec_and_zvec(&self.ba, &self.nl, pk_linear, k.data, k_size, z.data, z_size, pk.data, pk_cb.data) + + else: + nonlinear_pks_at_kvec_and_zvec(&self.ba, &self.nl, pk_nonlinear, k.data, k_size, z.data, z_size, pk.data, pk_cb.data) + + return pk_cb + + def Omega0_k(self): + """ Curvature contribution """ + return self.ba.Omega0_k + + def Omega0_cdm(self): + return self.ba.Omega0_cdm diff --git a/class/python/extract_errors.py b/class/python/extract_errors.py new file mode 100644 index 00000000..643d7b5a --- /dev/null +++ b/class/python/extract_errors.py @@ -0,0 +1,51 @@ +# From the dumped stdout and stderr of a nosetests test_class.py, extract all +# the failed steps. +# Usage: python extract_errors.py output +from __future__ import print_function +import sys +import os + + +def main(path): + """ + Create a shorter file containing only the errors from nosetests + + """ + assert os.path.isfile(path) is True + + trimmed_path = path + '_errors' + destination = open(trimmed_path, 'w') + contains_error = False + with open(path, 'r') as source: + text = source.readlines() + start = 0 + for index, line in enumerate(text): + if line.find('------------------') != -1: + if text[index+2].find('----------------') != -1: + stop = index-1 + # Check that an error is contained + if stop > 0: + for i in range(start, stop+1): + if text[i].startswith('E'): + contains_error = True + if contains_error: + print('Found an error') + for i in range(start, stop+1): + print(text[i], end=' ') + destination.write(text[i]) + start = index + contains_error = False + elif text[index+2].find('=================') != -1: + break + else: + pass + destination.close() + + +if __name__ == "__main__": + print(sys.argv) + if len(sys.argv) != 2: + print('Please specify the output file to analyse') + exit() + else: + main(sys.argv[-1]) diff --git a/class/python/interface_generator.py b/class/python/interface_generator.py new file mode 100644 index 00000000..8570c7fa --- /dev/null +++ b/class/python/interface_generator.py @@ -0,0 +1,486 @@ +""" +Automatically reads header files to generate an interface +""" +from __future__ import division, print_function +import sys +import logging +try: + from collections import OrderedDict as od +except ImportError: + try: + from ordereddict import OrderedDict as od + except ImportError: + raise ImportError( + "If you are running with Python v2.5 or 2.6" + " you need to manually install the ordereddict" + " package.") +try: + import colorlog +except ImportError: + raise ImportError( + "You have to install the colorlog module" + " with pip, or easy-install.") + +SPACING = ' ' +NAMING_CONVENTION = { + 'precision': {'python': 'precision', + 'function': 'precision'}, + 'background': {'python': 'background', + 'function': 'background'}, + 'thermo': {'python': 'thermodynamics', + 'function': 'thermodynamics'}, + 'perturbs': {'python': 'perturbations', + 'function': 'perturb'}, + 'transfers': {'python': 'transfer', + 'function': 'transfer'}, + 'primordial': {'python': 'primordial', + 'function': 'primordial'}, + 'spectra': {'python': 'spectra', + 'function': 'spectra'}, + 'lensing': {'python': 'lensing', + 'function': 'lensing'}, + 'nonlinear': {'python': 'nonlinear', + 'function': 'nonlinear'}, + 'output': {'python': 'output', + 'function': 'output'}, + } + + +def main(): + # create logger + logger = create_logger() + + # Recover all sub-header files + main_header = '../include/class.h' + headers = [] + + with open(main_header, 'r') as header_file: + in_modules = False + for line in header_file: + if in_modules: + if line.strip() == '': + in_modules = False + continue + if line.find('common') == -1 and line.find('input') == -1: + headers.append( + '../include/%s' % line.split()[-1].strip('"')) + if line.find('class modules') != -1: + in_modules = True + + logger.info('Extracted the following headers: %s', ', '.join(headers)) + output = 'classy.pyx' + logger.info('Creating %s', output) + structs = od() + output_file = open(output, 'w') + write_imports(output_file) + output_file.write('cdef extern from "class.h":\n') + + # First write the first non automatic bits + output_file.write( + SPACING+'ctypedef char FileArg[40]\n' + + SPACING+'ctypedef char* ErrorMsg\n' + + SPACING+'cdef struct precision:\n' + + 2*SPACING+'ErrorMsg error_message\n\n' + + SPACING+'cdef int _FAILURE_\n' + + SPACING+'cdef int _FALSE_\n' + + SPACING+'cdef int _TRUE_\n') + + for header in headers: + extract_headers(header, structs, output_file, logger) + logger.info("Finished extracting headers") + for struct_name, struct in structs.items(): + create_wrapper_class(struct_name, struct, output_file, logger) + + return + + +def extract_headers(header, structs, output_file, logger): + """toto""" + # Initialise the two flags controlling the exploration of the main + # structure + in_struct, main_struct_finished = False, False + # Flags for exploring enums (only the ones before the struct) + in_enum = False + # flag dealing with extracting docstrings + comment_partially_recovered = False + # Flag keeping track of multiple variables + multiple_var = False + # Flag recovering the functions + in_function_definitions, in_function, in_init = False, False, False + with open(header, 'r') as header_file: + logger.info("reading %s" % header) + for line in header_file: + # First case, recover the enums + if not main_struct_finished and not in_struct: + if line.find("enum ") != -1 and line.find("{") != -1: + enum_members = [] + if line.find(";") == -1: + in_enum = True + enum_name = line.strip("enum").strip().strip('{') + else: + in_enum = False + line = line.strip("enum").strip().strip(';') + enum_name, enum_sign = line.split(' ', 1) + enum_sign = enum_sign.strip('}').strip('{') + for elem in enum_sign.split(','): + enum_members.append(elem.strip()) + output_file.write( + SPACING + 'cdef enum %s:\n' % enum_name) + for elem in enum_members: + output_file.write(2*SPACING + elem + '\n') + output_file.write('\n') + elif in_enum: + if line.find('};') != -1: + in_enum = False + output_file.write( + SPACING + 'cdef enum %s:\n' % enum_name) + for elem in enum_members: + output_file.write(2*SPACING + elem + '\n') + output_file.write('\n') + else: + if line.strip() != '': + enum_members.append(line.split()[0].strip().strip(',')) + if line.find("struct ") != -1 and not main_struct_finished: + in_struct = True + # Recover the name + logger.debug("in struct: %s" % line) + struct_name = line.strip().split()[1] + logger.debug("struct name: %s" % struct_name) + structs[struct_name] = {} + structs[struct_name].update( + NAMING_CONVENTION[struct_name]) + output_file.write("%scdef struct %s:\n" % ( + SPACING, struct_name)) + continue + elif in_struct: + if line.find("};\n") != -1: + output_file.write('\n') + in_struct, main_struct_finished = False, True + else: + # if the line is not empty or does not contain only a + # comment: + if line.strip() == '' or line.strip()[:2] == '/*': + continue + logger.debug( + "potentially non empty line: %s" % line.strip()) + #elif line.find('/**') != -1 or line.find('*/') != -1: + #continue + if line.find(';') == -1 and not comment_partially_recovered: + logger.debug("--> Discarded") + continue + elif line.find(';') != -1 and not comment_partially_recovered: + var_doc = '' + var_part, begin_comment = line.strip().split(';', 1) + var_doc += begin_comment.strip()[4:].strip() + # 2 things can happen: there can be arrays, and there + # can be several variables defined in one line... + # If array, slightly more complex + if var_part.find('*') != -1: + # if no comma is found, it means it is a single + # variable: good ! + if var_part.find(',') == -1: + # remove if commented (starts with /*) + if var_part[:2] in ['/*', '//']: + continue + multiple_var = False + var_type, var_stars, var_name = var_part.strip().split() + structs[struct_name][var_name] = [ + var_type, var_stars] + else: + # Count how many variables are defined + multiple_var = True + all_vars = [elem.strip() for elem in + var_part.split('*')[-1].split(',')] + var_type, var_stars = (var_part.strip(). + split()[:2]) + for var in all_vars: + structs[struct_name][var] = [ + var_type, var_stars] + else: + # Again check for more than one variable + var_stars = '' + if var_part.find(',') == -1: + multiple_var = False + var_type, var_name = var_part.strip().split(' ', 1) + # Check if enum + if var_type == 'enum': + enum_name, var_name = var_name.split() + var_type += ' '+enum_name + structs[struct_name][var_name] = [ + var_type, var_stars] + else: + multiple_var = True + all_vars = [elem.strip() for elem in + var_part.split()[2:].split(',')] + var_type = (var_part.strip().split()[0]) + for var in all_vars: + structs[struct_name][var] = [ + var_type, var_stars] + # If the comment is finished, pass + if var_doc[-2:] != '*/': + comment_partially_recovered = True + else: + var_doc = var_doc[:-2].replace('\\f$', '$').strip() + structs[struct_name][var_name].append(var_doc) + logger.debug( + "extracted the variable %s, " % var_name + + "of type %s, with docstring: %s" % ( + ''.join([var_stars, var_type]), var_doc)) + + if not multiple_var: + output_file.write(2*SPACING+' '.join( + [elem for elem in [var_type, var_stars, var_name] + if elem])+'\n') + else: + for var in all_vars: + output_file.write(2*SPACING+' '.join( + [elem for elem in [var_type, var_stars, var] + if elem])+'\n') + + if comment_partially_recovered: + logger.debug("--> Accepted") + var_doc += ' '+line.strip() + if var_doc[-2:] == '*/': + comment_partially_recovered = False + var_doc = var_doc[:-2].replace('\\f$', '$').strip() + structs[struct_name][var_name].append(var_doc) + logger.debug( + "extracted the variable %s, " % var_name + + "of type %s, with docstring: %s" % ( + ''.join([var_stars, var_type]), var_doc)) + + elif main_struct_finished: + if line.find('extern "C"') != -1: + in_function_definitions = True + if not in_function_definitions: + continue + else: + if line.find('(') != -1: + in_function = True + logger.debug("Found a function") + func_type, func_name = line.split('(')[0].strip().split() + logger.debug('%s %s' % (func_name, func_type)) + func_param = [] + + if func_name == structs[struct_name]['function']+'_init': + logger.info("found the init function") + in_init = True + structs[struct_name]['init'] = [func_name] + output_file.write(SPACING+'%s %s(' % ( + func_type, func_name)) + elif in_function: + # recover the signature of the function + line = line.strip().strip(',') + if line.find('struct') != -1: + if in_init: + name = line.split('*')[0].strip()[7:] + structs[struct_name]['init'].append(name) + func_param.append('void *') + elif line.find('*') != -1: + # Taking into account with or without spaces + temp = ''.join(line.strip(',').split()) + last_star = len(temp)-temp[::-1].find('*') + func_param.append(temp[:last_star]) + elif line.find(')') == -1: + if line != '': + func_param.append(line.split()[0]) + else: + logger.debug('signature extracted') + in_function = False + if in_init: + in_init = False + output_file.write(', '.join(func_param) + ')\n') + + elif line.find('}') != -1: + output_file.write('\n') + in_function_definitions = False + #print line.strip() + + +def create_wrapper_class(struct_name, struct, of, logger): + """TODO""" + of.write('# Defining wrapper around struct %s\n' % struct_name) + of.write('cdef class %s:\n' % ( + NAMING_CONVENTION[struct_name]['python'].capitalize())) + + ## recover the number of additional arguments: + init_name, argument_names = struct['init'][0], struct['init'][1:] + + for companion in argument_names: + of.write(SPACING+'cdef %s _%s\n' % (companion, companion)) + #logger.info("structure: %s, python name: %s" % ( + #companion, NAMING_CONVENTION[companion]['python'])) + of.write('\n') + + # Define the array variables for all needed + array_variables = [] + variables = [] + for key, value in struct.items(): + if key != 'init': + if value[1]: + array_variables.append(key) + variables.append(key) + of.write(SPACING+'cdef np.ndarray %s_arr\n' % key) + else: + variables.append(key) + of.write('\n') + + # write the init + of.write(SPACING+'def __init__(self') + for companion in argument_names: + of.write(", %s py_%s" % ( + NAMING_CONVENTION[companion]['python'].capitalize(), companion)) + of.write('):\n\n') + + # pointing the pointers where they belong + for companion in argument_names: + of.write(2*SPACING+"self._%s = py_%s._%s\n" % ( + companion, companion, companion)) + + # Writing the call to structname_init() + of.write(2*SPACING+'%s_init(\n' % struct_name) + for companion in argument_names: + of.write(3*SPACING+'&(self._%s),\n' % companion) + of.write(3*SPACING+'&(self._%s))\n\n' % struct_name) + + #of.write(2*SPACING+'%s_init(&(self._%s))\n\n' % ( + #struct_name, struct_name)) + for array in array_variables: + of.write(2*SPACING+'# Wrapping %s\n' % array) + of.write(2*SPACING+'%s_wrapper = ArrayWrapper()\n' % array) + of.write( + 2*SPACING+"%s_wrapper.set_data(%d, '%s', " + " self._%s.%s)\n" % ( + array, 2, struct[array].strip('*'), struct_name, array)) + of.write( + 2*SPACING+'self.%s_arr = np.array(%s_wrapper, ' + 'copy=False)\n' % ( + array, array)) + of.write(2*SPACING+'self.%s_arr.base = ' + ' %s_wrapper\n' % ( + array, array)) + of.write(2*SPACING+'Py_INCREF(%s_wrapper)\n\n' % array) + #raise NotImplementedError('multiple init are not supported') + + # Write the properties + for key in variables: + of.write(SPACING+'property %s:\n' % key) + if key not in array_variables: + of.write(2*SPACING+'def __get__(self):\n') + of.write(3*SPACING+'return self._%s.%s\n' % (struct_name, key)) + of.write(2*SPACING+'def __set__(self, rhs):\n') + of.write(3*SPACING+'self._%s.%s = rhs\n' % (struct_name, key)) + else: + of.write(2*SPACING+'def __get__(self):\n') + of.write(3*SPACING+'return self.%s_arr\n' % key) + of.write(2*SPACING+'def __set__(self, rhs):\n') + of.write(3*SPACING+'self.%s_arr[:] = rhs\n' % key) + of.write('\n') + + # Add blank lines + of.write('\n\n') + + +def write_imports(output_file): + """TODO""" + a = '''# Author: Gael Varoquaux +# License: BSD +from libc.stdlib cimport free +from cpython cimport PyObject, Py_INCREF + +# Import the Python-level symbols of numpy +import numpy as np + +# Import the C-level symbols of numpy +cimport numpy as np + +# Numpy must be initialized. When using numpy from C or Cython you must +# _always_ do that, or you will have segfaults +np.import_array() + +cdef class ArrayWrapper: + cdef void* data_ptr + cdef int size + cdef int type + + cdef set_data(self, int size, char* type, void* data_ptr): + """ Set the data of the array + + This cannot be done in the constructor as it must recieve C-level + arguments. + + Parameters: + ----------- + size: int + Length of the array. + data_ptr: void* + Pointer to the data + + """ + self.data_ptr = data_ptr + self.size = size + if type.find('int') != -1: + self.type = np.NPY_INT + elif type.find('float') != -1: + self.type = np.NPY_FLOAT + elif type.find('double') != -1: + self.type = np.NPY_DOUBLE + elif type.find('long') != -1: + self.type = np.NPY_LONG + + def __array__(self): + """ Here we use the __array__ method, that is called when numpy + tries to get an array from the object.""" + cdef np.npy_intp shape[1] + shape[0] = self.size + # Create a 1D array, of length 'size' + ndarray = np.PyArray_SimpleNewFromData(1, shape, + self.type, self.data_ptr) + return ndarray + + def __dealloc__(self): + """ Frees the array. This is called by Python when all the + references to the object are gone. """ + free(self.data_ptr)\n\n''' + output_file.write(a) + + +def create_logger(): + """Nothing""" + + logger = logging.getLogger('simple_example') + #logger.setLevel(logging.DEBUG) + logger.setLevel(logging.INFO) + + # create console handler and set level to debug + console_handler = logging.StreamHandler() + #console_handler.setLevel(logging.DEBUG) + console_handler.setLevel(logging.INFO) + + # create formatter + #formatter = logging.Formatter( + #"%(asctime)s %(module)s: L%(lineno) 4s %(funcName) 15s" + #" | %(levelname) -10s --> %(message)s") + formatter = colorlog.ColoredFormatter( + "%(asctime)s %(module)s: L%(lineno) 4s %(blue)s%(funcName) 15s%(reset)s" + " | %(log_color)s%(levelname) -10s --> %(message)s%(reset)s", + datefmt=None, + reset=True, + log_colors={ + 'DEBUG': 'cyan', + 'INFO': 'green', + 'WARNING': 'yellow', + 'ERROR': 'red', + 'CRITICAL': 'red', + }) + + # add formatter to console_handler + console_handler.setFormatter(formatter) + + # add console_handler to logger + logger.addHandler(console_handler) + + return logger + +if __name__ == "__main__": + sys.exit(main()) diff --git a/class/python/setup.py b/class/python/setup.py new file mode 100644 index 00000000..ef81bf06 --- /dev/null +++ b/class/python/setup.py @@ -0,0 +1,53 @@ +from distutils.core import setup +from distutils.extension import Extension +from Cython.Distutils import build_ext + +import numpy as nm +import os +import subprocess as sbp +import os.path as osp + +# Recover the gcc compiler +GCCPATH_STRING = sbp.Popen( + ['gcc', '-print-libgcc-file-name'], + stdout=sbp.PIPE).communicate()[0] +GCCPATH = osp.normpath(osp.dirname(GCCPATH_STRING)).decode() + +liblist = ["class", 'gsl', 'gslcblas'] +MVEC_STRING = sbp.Popen( + ['gcc', '-lmvec'], + stderr=sbp.PIPE).communicate()[1] +if b"mvec" not in MVEC_STRING: + liblist += ["mvec","m"] + +# define absolute paths +root_folder = os.path.join(os.path.dirname(os.path.abspath(__file__)), "..") +include_folder = os.path.join(root_folder, "include") +classy_folder = os.path.join(root_folder, "python") + +# Recover the CLASS version +with open(os.path.join(include_folder, 'common.h'), 'r') as v_file: + for line in v_file: + if line.find("_VERSION_") != -1: + # get rid of the " and the v + VERSION = line.split()[-1][2:-1] + break + +# Define cython extension and fix Python version +classy_ext = Extension("classy", [os.path.join(classy_folder, "classy.pyx")], + include_dirs=[nm.get_include(), include_folder], + libraries=liblist, + library_dirs=[root_folder, GCCPATH], + extra_link_args=['-lgomp']) +import six +classy_ext.cython_directives = {'language_level': "3" if six.PY3 else "2"} + +setup( + name='classy', + version=VERSION, + description='Python interface to the Cosmological Boltzmann code CLASS', + url='http://www.class-code.net', + cmdclass={'build_ext': build_ext}, + ext_modules=[classy_ext], + #data_files=[('bbn', ['../bbn/sBBN.dat'])] +) diff --git a/class/python/test_class.py b/class/python/test_class.py new file mode 100644 index 00000000..74cecb96 --- /dev/null +++ b/class/python/test_class.py @@ -0,0 +1,548 @@ +""" +.. module:: test_class + :synopsis: python script for testing CLASS using nose +.. moduleauthor:: Benjamin Audren +.. credits:: Benjamin Audren, Thomas Tram +.. version:: 1.0 + +This is a python script for testing CLASS and its wrapper Classy using nose. +To run the test suite, type +nosetests test_class.py +If you want to extract the problematic input parameters at a later stage, +you should type +nosetests test_class.py 1>stdoutfile 2>stderrfile +and then use the python script extract_errors.py on the stderrfile. + +When adding a new input parameter to CLASS (by modifying input.c), you +should also include tests of this new input. You will be in one of the +two cases: +1: The new input is supposed to be compatible with any existing input. + This is the standard case when adding a new species for instance. +2: The new input is incompatible with one of the existing inputs. This + would be the case if you have added (or just want to test) some other + value of an already defined parameter. (Maybe you have allowed for + negative mass neutrinos and you want to test CLASS using a negative mass.) + +In case 1, you must add an entry in the CLASS_INPUT dictionary: +CLASS_INPUT['Mnu'] = ( + [{'N_eff': 0.0, 'N_ncdm': 1, 'm_ncdm': 0.06, 'deg_ncdm': 3.0}, + {'N_eff': 1.5, 'N_ncdm': 1, 'm_ncdm': 0.03, 'deg_ncdm': 1.5}], + 'normal') +The key 'Mnu' is not being used in the code, so its purpose is just to +describe the entry to the reader. +the value is a 2-tuple where the first entry [{},{},...,{}] is an array of +dictionaries containg the actual input to CLASS. The second entry is a keyword +which can be either 'normal' or 'power'. It tells the script how this input +will be combined with other inputs. + +What does 'normal' and 'power' mean? +If an entry has the 'power' keyword, it will be combined with any other entry. +If an entry has the 'normal' keyword, it will not be combined with any other +entry having the 'normal' keyword, but it will be combined with all entries +carrying the 'power keyword. +Beware that the number of tests grow a lot when using the 'power' keyword. + +In case 2, you should find the relevant entry and just add a new dictionary +to the array. E.g. if you want to test some negative mass model you should add +{'N_ncdm': 1, 'm_ncdm': -0.1, 'deg_ncdm': 1.0} + +How are default parameters handled? +Any input array implicitly contains the empty dictionary. That means that if +Omega_k:0.0 is the default value, writing +CLASS_INPUT['Curvature'] = ( + [{'Omega_k': 0.01}, + {'Omega_k': -0.01}], + 'normal') +will test the default value Omega_k=0.0 along with the two specified models. + +How to deal with inconsistent input? +Sometimes a specific feature requires the presence of another input parameter. +For instance, if we ask for tensor modes we must have temperature and/or +polarisation in the output. If not, CLASS is supposed to fail during the +evaluation of the input module and return an error message. This fail is the +correct behaviour of CLASS. To implement such a case, modify the function +test_incompatible_input(self) + +Comparing output: When the flag 'COMPARE_OUTPUT' is set to true, the code will +rerun CLASS for each case under Newtonian gauge and then compare Cl's and +matter power spectrum. If the two are not close enough, it will generate a +PDF plot of this and save it in the 'fail' folder. +""" +from __future__ import print_function +from classy import Class +from classy import CosmoSevereError +import itertools +import sys +import shutil +import os +import numpy as np +from math import log10 +import matplotlib.pyplot as plt +import unittest +from nose_parameterized import parameterized + +# To avoid testing for differences between synchronous and Newtonian gauge, set +# this flag to False +COMPARE_OUTPUT = True + +# Dictionary of models to test the wrapper against. Each of these scenario will +# be run against all the possible output choices (nothing, tCl, mPk, etc...), +# with or without non-linearities. +# Never input the default value, as this will be **automatically** tested +# against. Indeed, when not specifying a field, CLASS takes the default input. +CLASS_INPUT = {} + +#CLASS_INPUT['Mnu'] = ( +# [{'N_eff': 0.0, 'N_ncdm': 1, 'm_ncdm': 0.06, 'deg_ncdm': 3.0}, +# {'N_eff': 1.5, 'N_ncdm': 1, 'm_ncdm': 0.03, 'deg_ncdm': 1.5}], +# 'normal') + +#CLASS_INPUT['Curvature'] = ( +# [{'Omega_k': 0.01}, +# {'Omega_k': -0.01}], +# 'normal') + +CLASS_INPUT['Isocurvature_modes'] = ( + [{'ic': 'ad,nid,cdi', 'c_ad_cdi': -0.5}], + 'normal') + +#CLASS_INPUT['Scalar_field'] = ( + #[{'Omega_scf': 0.1, 'attractor_ic_scf': 'yes', + #'scf_parameters': '10, 0, 0, 0'}], + #'normal') + +CLASS_INPUT['Inflation'] = ( + [{'P_k_ini type': 'inflation_V'}, + {'P_k_ini type': 'inflation_H'}, + {'P_k_ini type': 'inflation_V_end'}], + 'normal') + +CLASS_INPUT['modes'] = ( + [{'modes': 't'}, + {'modes': 's, t'}], + 'power') + +CLASS_INPUT['Tensor_method'] = ( + [{'tensor method': 'exact'}, + {'tensor method': 'photons'}], + 'power') + +CLASS_INPUT['Output_spectra'] = ( + [{'output': 'mPk', 'P_k_max_1/Mpc': 10}, + {'output': 'tCl'}, + {'output': 'tCl pCl lCl'}, + {'output': 'mPk tCl lCl', 'P_k_max_1/Mpc': 10}, + {'output': 'nCl sCl'}, + {'output': 'tCl pCl lCl nCl sCl'}], + 'power') + +CLASS_INPUT['Nonlinear'] = ( + [{'non linear': 'halofit'}], + 'power') + +CLASS_INPUT['Lensing'] = ( + [{'lensing': 'yes'}], + 'power') + +# Let's kill the machine (replace all 'normal' flags with power', uncomment at +# you own risk) +# for k, v in CLASS_INPUT.iteritems(): +# models, state = v +# CLASS_INPUT[k] = (models, 'power') + +INPUTPOWER = [] +INPUTNORMAL = [{}] +for key, value in list(CLASS_INPUT.items()): + models, state = value + if state == 'power': + INPUTPOWER.append([{}]+models) + else: + INPUTNORMAL.extend(models) + + PRODPOWER = list(itertools.product(*INPUTPOWER)) + + DICTARRAY = [] + for normelem in INPUTNORMAL: + for powelem in PRODPOWER: # itertools.product(*modpower): + temp_dict = normelem.copy() + for elem in powelem: + temp_dict.update(elem) + DICTARRAY.append(temp_dict) + + +TUPLE_ARRAY = [] +for e in DICTARRAY: + TUPLE_ARRAY.append((e, )) + + +def powerset(iterable): + xs = list(iterable) + # note we return an iterator rather than a list + return itertools.chain.from_iterable( + itertools.combinations(xs, n) for n in range(1, len(xs)+1)) + + +class TestClass(unittest.TestCase): + """ + Testing Class and its wrapper classy on different cosmologies + + To run it, do + ~] nosetest test_class.py + + It will run many times Class, on different cosmological scenarios, and + everytime testing for different output possibilities (none asked, only mPk, + etc..) + + """ + @classmethod + def setUpClass(self): + self.faulty_figs_path = os.path.join( + os.path.sep.join(os.path.realpath(__file__).split( + os.path.sep)[:-1]), + 'faulty_figs') + + if os.path.isdir(self.faulty_figs_path): + shutil.rmtree(self.faulty_figs_path) + + os.mkdir(self.faulty_figs_path) + + @classmethod + def tearDownClass(self): + pass + + def setUp(self): + """ + set up data used in the tests. + setUp is called before each test function execution. + """ + self.cosmo = Class() + self.cosmo_newt = Class() + + self.verbose = { + 'input_verbose': 1, + 'background_verbose': 1, + 'thermodynamics_verbose': 1, + 'perturbations_verbose': 1, + 'transfer_verbose': 1, + 'primordial_verbose': 1, + 'spectra_verbose': 1, + 'nonlinear_verbose': 1, + 'lensing_verbose': 1, + 'output_verbose': 1} + self.scenario = {} + + def tearDown(self): + self.cosmo.struct_cleanup() + self.cosmo.empty() + self.cosmo_newt.struct_cleanup() + self.cosmo_newt.empty() + del self.scenario + + def poormansname(self, somedict): + string = "_".join( + [k+'='+str(v) + for k, v in list(somedict.items())]) + string = string.replace('/', '%') + string = string.replace(',', '') + string = string.replace(' ', '') + return string + + @parameterized.expand(TUPLE_ARRAY) + def test_0wrapper_implementation(self, inputdict): + """Create a few instances based on different cosmologies""" + self.scenario.update(inputdict) + + self.name = self.poormansname(inputdict) + + sys.stderr.write('\n\n---------------------------------\n') + sys.stderr.write('| Test case %s |\n' % self.name) + sys.stderr.write('---------------------------------\n') + for key, value in list(self.scenario.items()): + sys.stderr.write("%s = %s\n" % (key, value)) + sys.stdout.write("%s = %s\n" % (key, value)) + sys.stderr.write("\n") + + setting = self.cosmo.set( + dict(list(self.verbose.items())+list(self.scenario.items()))) + self.assertTrue(setting, "Class failed to initialize with input dict") + + cl_dict = { + 'tCl': ['tt'], + 'lCl': ['pp'], + 'pCl': ['ee', 'bb']} + density_cl_list = ['nCl', 'sCl'] + + # 'lensing' is always set to yes. Therefore, trying to compute 'tCl' or + # 'pCl' will fail except if we also ask for 'lCl'. The flag + # 'should_fail' stores this status. + sys.stderr.write('Should') + should_fail = self.test_incompatible_input() + if should_fail: + sys.stderr.write(' fail...\n') + else: + sys.stderr.write(' not fail...\n') + + if not should_fail: + self.cosmo.compute() + else: + self.assertRaises(CosmoSevereError, self.cosmo.compute) + return + + self.assertTrue( + self.cosmo.state, + "Class failed to go through all __init__ methods") + if self.cosmo.state: + print('--> Class is ready') + # Depending + if 'output' in list(self.scenario.keys()): + # Positive tests of raw cls + output = self.scenario['output'] + for elem in output.split(): + if elem in list(cl_dict.keys()): + for cl_type in cl_dict[elem]: + sys.stderr.write( + '--> testing raw_cl for %s\n' % cl_type) + cl = self.cosmo.raw_cl(100) + self.assertIsNotNone(cl, "raw_cl returned nothing") + self.assertEqual( + np.shape(cl[cl_type])[0], 101, + "raw_cl returned wrong size") + # TODO do the same for lensed if 'lCl' is there, and for + # density cl + if elem == 'mPk': + sys.stderr.write('--> testing pk function\n') + pk = self.cosmo.pk(0.1, 0) + self.assertIsNotNone(pk, "pk returned nothing") + # Negative tests of output functions + if not any([elem in list(cl_dict.keys()) for elem in output.split()]): + sys.stderr.write('--> testing absence of any Cl\n') + self.assertRaises(CosmoSevereError, self.cosmo.raw_cl, 100) + if 'mPk' not in output.split(): + sys.stderr.write('--> testing absence of mPk\n') + self.assertRaises(CosmoSevereError, self.cosmo.pk, 0.1, 0) + + if COMPARE_OUTPUT: + # Now, compute with Newtonian gauge, and compare the results + self.cosmo_newt.set( + dict(list(self.verbose.items())+list(self.scenario.items()))) + self.cosmo_newt.set({'gauge': 'newtonian'}) + self.cosmo_newt.compute() + # Check that the computation worked + self.assertTrue( + self.cosmo_newt.state, + "Class failed to go through all __init__ methods in Newtonian gauge") + + self.compare_output(self.cosmo, self.cosmo_newt) + + def test_incompatible_input(self): + + should_fail = False + + # If we have tensor modes, we must have one tensor observable, + # either tCl or pCl. + if has_tensor(self.scenario): + if 'output' not in list(self.scenario.keys()): + should_fail = True + else: + output = self.scenario['output'].split() + if 'tCl' not in output and 'pCl' not in output: + should_fail = True + + # If we have specified lensing, we must have lCl in output, + # otherwise lensing will not be read (which is an error). + if 'lensing' in list(self.scenario.keys()): + if 'output' not in list(self.scenario.keys()): + should_fail = True + else: + output = self.scenario['output'].split() + if 'lCl' not in output: + should_fail = True + elif 'tCl' not in output and 'pCl' not in output: + should_fail = True + + # If we have specified a tensor method, we must have tensors. + if 'tensor method' in list(self.scenario.keys()): + if not has_tensor(self.scenario): + should_fail = True + + # If we have specified non linear, we must have some form of + # perturbations output. + if 'non linear' in list(self.scenario.keys()): + if 'output' not in list(self.scenario.keys()): + should_fail = True + + # If we ask for Cl's of lensing potential, we must have scalar modes. + if 'output' in list(self.scenario.keys()) and 'lCl' in self.scenario['output'].split(): + if 'modes' in list(self.scenario.keys()) and self.scenario['modes'].find('s') == -1: + should_fail = True + + # If we specify initial conditions (for scalar modes), we must have + # perturbations and scalar modes. + if 'ic' in list(self.scenario.keys()): + if 'modes' in list(self.scenario.keys()) and self.scenario['modes'].find('s') == -1: + should_fail = True + if 'output' not in list(self.scenario.keys()): + should_fail = True + + # If we use inflation module, we must have scalar modes, + # tensor modes, no vector modes and we should only have adiabatic IC: + if 'P_k_ini type' in list(self.scenario.keys()) and self.scenario['P_k_ini type'].find('inflation') != -1: + if 'modes' not in list(self.scenario.keys()): + should_fail = True + else: + if self.scenario['modes'].find('s') == -1: + should_fail = True + if self.scenario['modes'].find('v') != -1: + should_fail = True + if self.scenario['modes'].find('t') == -1: + should_fail = True + if 'ic' in list(self.scenario.keys()) and self.scenario['ic'].find('i') != -1: + should_fail = True + + + return should_fail + + def compare_output(self, reference, candidate): + sys.stderr.write('\n\n---------------------------------\n') + sys.stderr.write('| Comparing synch and Newt: |\n') + sys.stderr.write('---------------------------------\n') + + for elem in ['raw_cl', 'lensed_cl', 'density_cl']: + # Try to get the elem, but if they were not computed, a + # CosmoComputeError should be raised. In this case, ignore the + # whole block. + try: + to_test = getattr(candidate, elem)() + except CosmoSevereError: + continue + ref = getattr(reference, elem)() + for key, value in list(ref.items()): + if key != 'ell': + sys.stderr.write('--> testing equality of %s %s\n' % ( + elem, key)) + # For all self spectra, try to compare allclose + if key[0] == key[1]: + # If it is a 'dd' or 'll', it is a dictionary. + if isinstance(value, dict): + for subkey in list(value.keys()): + try: + np.testing.assert_allclose( + value[subkey], to_test[key][subkey], + rtol=1e-03, atol=1e-20) + except AssertionError: + self.cl_faulty_plot(elem+"_"+key, + value[subkey][2:], + to_test[key][subkey][2:]) + except TypeError: + self.cl_faulty_plot(elem+"_"+key, + value[subkey][2:], + to_test[key][subkey][2:]) + else: + try: + np.testing.assert_allclose( + value, to_test[key], rtol=1e-03, atol=1e-20) + except AssertionError: + self.cl_faulty_plot(elem+"_"+key, + value[2:], to_test[key][2:]) + except TypeError: + self.cl_faulty_plot(elem+"_"+key, + value[2:], to_test[key][2:]) + # For cross-spectra, as there can be zero-crossing, we + # instead compare the difference. + else: + # First, we multiply each array by the biggest value + norm = max( + np.abs(value).max(), np.abs(to_test[key]).max()) + value *= norm + to_test[key] *= norm + try: + np.testing.assert_array_almost_equal( + value, to_test[key], decimal=3) + except AssertionError: + self.cl_faulty_plot(elem+"_"+key, + value[2:], to_test[key][2:]) + + if 'output' in list(self.scenario.keys()): + if self.scenario['output'].find('mPk') != -1: + sys.stderr.write('--> testing equality of Pk') + k = np.logspace( + -2, log10(self.scenario['P_k_max_1/Mpc'])) + reference_pk = np.array( + [reference.pk(elem, 0) for elem in k]) + candidate_pk = np.array( + [candidate.pk(elem, 0) for elem in k]) + try: + np.testing.assert_allclose( + reference_pk, candidate_pk, rtol=5e-03, atol=1e-20) + except AssertionError: + self.pk_faulty_plot(k, reference_pk, candidate_pk) + + def cl_faulty_plot(self, cl_type, reference, candidate): + path = os.path.join(self.faulty_figs_path, self.name) + + fig = plt.figure() + ax_lin = plt.subplot(211) + ax_log = plt.subplot(212) + ell = np.arange(max(np.shape(candidate)))+2 + ax_lin.plot(ell, 1-candidate/reference) + ax_log.loglog(ell, abs(1-candidate/reference)) + + ax_lin.set_xlabel('l') + ax_log.set_xlabel('l') + ax_lin.set_ylabel('1-candidate/reference') + ax_log.set_ylabel('abs(1-candidate/reference)') + + ax_lin.set_title(self.name) + ax_log.set_title(self.name) + + ax_lin.legend([cl_type]) + ax_log.legend([cl_type]) + + fig.savefig(path+'_'+cl_type+'.pdf') + + # Store parameters (contained in self.scenario) to text file + parameters = dict(list(self.verbose.items())+list(self.scenario.items())) + with open(path+'.ini', 'w') as param_file: + for key, value in list(parameters.items()): + param_file.write(key+" = "+str(value)+'\n') + + def pk_faulty_plot(self, k, reference, candidate): + path = os.path.join(self.faulty_figs_path, self.name) + + fig = plt.figure() + ax_lin = plt.subplot(211) + ax_log = plt.subplot(212) + ax_lin.plot(k, 1-candidate/reference) + ax_log.loglog(k, abs(1-candidate/reference)) + + ax_lin.set_xlabel('k') + ax_log.set_xlabel('k') + ax_lin.set_ylabel('1-candidate/reference') + ax_log.set_ylabel('abs(1-candidate/reference)') + + ax_lin.set_title(self.name) + ax_log.set_title(self.name) + + ax_lin.legend('$P_k$') + ax_log.legend('$P_k$') + + fig.savefig(path+'_'+'pk'+'.pdf') + + # Store parameters (contained in self.scenario) to text file + parameters = dict(list(self.verbose.items())+list(self.scenario.items())) + with open(path+'.ini', 'w') as param_file: + for key, value in list(parameters.items()): + param_file.write(key+" = "+str(value)+'\n') + + +def has_tensor(input_dict): + if 'modes' in list(input_dict.keys()): + if input_dict['modes'].find('t') != -1: + return True + else: + return False + return False + +if __name__ == '__main__': + toto = TestClass() + unittest.main() diff --git a/class/scripts/cl_ST.py b/class/scripts/cl_ST.py new file mode 100644 index 00000000..4011b038 --- /dev/null +++ b/class/scripts/cl_ST.py @@ -0,0 +1,159 @@ + +# coding: utf-8 + +# In[ ]: + +# import necessary modules +# uncomment to get plots displayed in notebook +#%matplotlib inline +import matplotlib +import matplotlib.pyplot as plt +import numpy as np +from classy import Class +from scipy.optimize import fsolve +from scipy.interpolate import interp1d +import math + + +# In[ ]: + +# esthetic definitions for the plots +font = {'size' : 16, 'family':'STIXGeneral'} +axislabelfontsize='large' +matplotlib.rc('font', **font) +matplotlib.mathtext.rcParams['legend.fontsize']='medium' +plt.rcParams["figure.figsize"] = [8.0,6.0] + + +# In[ ]: + +############################################# +# +# Cosmological parameters and other CLASS parameters +# +common_settings = {# wich output? ClTT, transfer functions delta_i and theta_i + 'output':'tCl,pCl,lCl', + # LambdaCDM parameters + 'h':0.67556, + 'omega_b':0.022032, + 'omega_cdm':0.12038, + 'A_s':2.215e-9, + 'tau_reio':0.0925, + # Take fixed value for primordial Helium (instead of automatic BBN adjustment) + 'YHe':0.246} + # other output and precision parameters + #'l_max_scalars':3000} +############### +# +# call CLASS +# +############### +# +# scalars only +# +M = Class() +M.set(common_settings) +M.set({'output':'tCl,pCl','modes':'s','lensing':'no','n_s':0.9619,'l_max_scalars':3000}) +M.compute() +cls = M.raw_cl(3000) +M.struct_cleanup() +M.empty() +# +# tensors only +# +M = Class() +M.set(common_settings) +l_max_tensors = 600 +M.set({'output':'tCl,pCl','modes':'t','lensing':'no','r':0.1,'n_t':0,'l_max_tensors':l_max_tensors}) +# for l_max=600 we can keep default precision +# for l_max = 3000 we would need to import many high precision settings from the file cl_ref.pre +#M.set({'output':'tCl,pCl','modes':'t','lensing':'no','r':0.1,'n_t':0,'l_max_tensors':3000}) +#M.set({ +#'recfast_Nz0':100000, +#'tol_thermo_integration':1.e-5, +#'recfast_x_He0_trigger_delta':0.01, +#'recfast_x_H0_trigger_delta':0.01, +#'evolver':0, +#'k_min_tau0':0.002, +#'k_max_tau0_over_l_max':3., +#'k_step_sub':0.015, +#'k_step_super':0.0001, +#'k_step_super_reduction':0.1, +#'start_small_k_at_tau_c_over_tau_h':0.0004, +#'start_large_k_at_tau_h_over_tau_k':0.05, +#'tight_coupling_trigger_tau_c_over_tau_h':0.005, +#'tight_coupling_trigger_tau_c_over_tau_k':0.008, +#'start_sources_at_tau_c_over_tau_h':0.006, +#'l_max_g':50, +#'l_max_pol_g':25, +#'l_max_ur':50, +#'tol_perturb_integration':1.e-6, +#'perturb_sampling_stepsize':0.01, +#'radiation_streaming_approximation':2, +#'radiation_streaming_trigger_tau_over_tau_k':240., +#'radiation_streaming_trigger_tau_c_over_tau':100., +#'ur_fluid_approximation':2, +#'ur_fluid_trigger_tau_over_tau_k':50., +#'l_logstep':1.026, +#'l_linstep':25, +#'hyper_sampling_flat':12., +#'hyper_nu_sampling_step':10., +#'hyper_phi_min_abs':1.e-10, +#'hyper_x_tol':1.e-4, +#'hyper_flat_approximation_nu':1.e6, +#'q_linstep':0.20, +#'q_logstep_spline':20., +#'q_logstep_trapzd':0.5, +#'q_numstep_transition':250, +#'transfer_neglect_delta_k_T_t2':100., +#'transfer_neglect_delta_k_T_e':100., +#'transfer_neglect_delta_k_T_b':100., +#'neglect_CMB_sources_below_visibility':1.e-30, +#'transfer_neglect_late_source':3000. +#}) +M.compute() +clt = M.raw_cl(l_max_tensors) +M.struct_cleanup() +M.empty() +# +# scalars + tensors (only in this case we can get the correct lensed ClBB) +# +M = Class() +M.set(common_settings) +M.set({'output':'tCl,pCl,lCl','modes':'s,t','lensing':'yes','r':0.1,'n_s':0.9619,'n_t':0,'l_max_scalars':3000,'l_max_tensors':l_max_tensors}) +M.compute() +cl_tot = M.raw_cl(3000) +cl_lensed = M.lensed_cl(3000) +M.struct_cleanup() +M.empty() +# +################# +# +# start plotting +# +################# +# +plt.xlim([2,3000]) +plt.ylim([1.e-8,10]) +plt.xlabel(r"$\ell$") +plt.ylabel(r"$\ell (\ell+1) C_l^{XY} / 2 \pi \,\,\, [\times 10^{10}]$") +plt.title(r"$r=0.1$") +plt.grid() +# +ell = cl_tot['ell'] +ellt = clt['ell'] +factor = 1.e10*ell*(ell+1.)/2./math.pi +factort = 1.e10*ellt*(ellt+1.)/2./math.pi +# +plt.loglog(ell,factor*cls['tt'],'r-',label=r'$\mathrm{TT(s)}$') +plt.loglog(ellt,factort*clt['tt'],'r:',label=r'$\mathrm{TT(t)}$') +plt.loglog(ell,factor*cls['ee'],'b-',label=r'$\mathrm{EE(s)}$') +plt.loglog(ellt,factort*clt['ee'],'b:',label=r'$\mathrm{EE(t)}$') +plt.loglog(ellt,factort*clt['bb'],'g:',label=r'$\mathrm{BB(t)}$') +plt.loglog(ell,factor*(cl_lensed['bb']-cl_tot['bb']),'g-',label=r'$\mathrm{BB(lensing)}$') +plt.legend(loc='right',bbox_to_anchor=(1.4, 0.5)) + + +# In[ ]: + +plt.savefig('cl_ST.pdf',bbox_inches='tight') diff --git a/class/scripts/cltt_terms.py b/class/scripts/cltt_terms.py new file mode 100644 index 00000000..a5b8891a --- /dev/null +++ b/class/scripts/cltt_terms.py @@ -0,0 +1,111 @@ + +# coding: utf-8 + +# In[ ]: + +# import necessary modules +# uncomment to get plots displayed in notebook +#%matplotlib inline +import matplotlib +import matplotlib.pyplot as plt +import numpy as np +from classy import Class +from scipy.optimize import fsolve +from scipy.interpolate import interp1d +import math + + +# In[ ]: + +# esthetic definitions for the plots +font = {'size' : 16, 'family':'STIXGeneral'} +axislabelfontsize='large' +matplotlib.rc('font', **font) +matplotlib.mathtext.rcParams['legend.fontsize']='medium' +plt.rcParams["figure.figsize"] = [8.0,6.0] + + +# In[ ]: + +############################################# +# +# Cosmological parameters and other CLASS parameters +# +common_settings = {# wich output? ClTT, transfer functions delta_i and theta_i + 'output':'tCl,pCl,lCl', + 'lensing':'yes', + # LambdaCDM parameters + 'h':0.67556, + 'omega_b':0.022032, + 'omega_cdm':0.12038, + 'A_s':2.215e-9, + 'n_s':0.9619, + 'tau_reio':0.0925, + # Take fixed value for primordial Helium (instead of automatic BBN adjustment) + 'YHe':0.246, + # other output and precision parameters + 'l_max_scalars':5000} +############### +# +# call CLASS +# +M = Class() +M.set(common_settings) +M.compute() +cl_tot = M.raw_cl(3000) +cl_lensed = M.lensed_cl(3000) +M.struct_cleanup() # clean output +M.empty() # clean input +# +M.set(common_settings) # new input +M.set({'temperature contributions':'tsw'}) +M.compute() +cl_tsw = M.raw_cl(3000) +M.struct_cleanup() +M.empty() +# +M.set(common_settings) +M.set({'temperature contributions':'eisw'}) +M.compute() +cl_eisw = M.raw_cl(3000) +M.struct_cleanup() +M.empty() +# +M.set(common_settings) +M.set({'temperature contributions':'lisw'}) +M.compute() +cl_lisw = M.raw_cl(3000) +M.struct_cleanup() +M.empty() +# +M.set(common_settings) +M.set({'temperature contributions':'dop'}) +M.compute() +cl_dop = M.raw_cl(3000) +# +################# +# +# start plotting +# +################# +# +plt.xlim([2,3000]) +plt.xlabel(r"$\ell$") +plt.ylabel(r"$\ell (\ell+1) C_l^{TT} / 2 \pi \,\,\, [\times 10^{10}]$") +plt.grid() +# +ell = cl_tot['ell'] +factor = 1.e10*ell*(ell+1.)/2./math.pi +plt.semilogx(ell,factor*cl_tsw['tt'],'c-',label=r'$\mathrm{T+SW}$') +plt.semilogx(ell,factor*cl_eisw['tt'],'r-',label=r'$\mathrm{early-ISW}$') +plt.semilogx(ell,factor*cl_lisw['tt'],'y-',label=r'$\mathrm{late-ISW}$') +plt.semilogx(ell,factor*cl_dop['tt'],'g-',label=r'$\mathrm{Doppler}$') +plt.semilogx(ell,factor*cl_tot['tt'],'r-',label=r'$\mathrm{total}$') +plt.semilogx(ell,factor*cl_lensed['tt'],'k-',label=r'$\mathrm{lensed}$') +# +plt.legend(loc='right',bbox_to_anchor=(1.4, 0.5)) + + +# In[ ]: + +plt.savefig('cltt_terms.pdf',bbox_inches='tight') diff --git a/class/scripts/distances.py b/class/scripts/distances.py new file mode 100644 index 00000000..34fe697d --- /dev/null +++ b/class/scripts/distances.py @@ -0,0 +1,81 @@ + +# coding: utf-8 + +# In[ ]: + +# import necessary modules +# uncomment to get plots displayed in notebook +#%matplotlib inline +import matplotlib +import matplotlib.pyplot as plt +import numpy as np +from classy import Class + + +# In[ ]: + +font = {'size' : 20, 'family':'STIXGeneral'} +axislabelfontsize='large' +matplotlib.rc('font', **font) +matplotlib.mathtext.rcParams['legend.fontsize']='medium' + + +# In[ ]: + +#Lambda CDM +LCDM = Class() +LCDM.set({'Omega_cdm':0.25,'Omega_b':0.05}) +LCDM.compute() + + +# In[ ]: + +#Einstein-de Sitter +CDM = Class() +CDM.set({'Omega_cdm':0.95,'Omega_b':0.05}) +CDM.compute() + +# Just to cross-check that Omega_Lambda is negligible +# (but not exactly zero because we neglected radiation) +derived = CDM.get_current_derived_parameters(['Omega0_lambda']) +print derived +print "Omega_Lambda =",derived['Omega0_lambda'] + + +# In[ ]: + +#Get background quantities and recover their names: +baLCDM = LCDM.get_background() +baCDM = CDM.get_background() +baCDM.viewkeys() + + +# In[ ]: + +#Get H_0 in order to plot the distances in this unit +fLCDM = LCDM.Hubble(0) +fCDM = CDM.Hubble(0) + + +# In[ ]: + +namelist = ['lum. dist.','comov. dist.','ang.diam.dist.'] +colours = ['b','g','r'] +for name in namelist: + idx = namelist.index(name) + plt.loglog(baLCDM['z'],fLCDM*baLCDM[name],colours[idx]+'-') +plt.legend(namelist,loc='upper left') +for name in namelist: + idx = namelist.index(name) + plt.loglog(baCDM['z'],fCDM*baCDM[name],colours[idx]+'--') +plt.xlim([0.07, 10]) +plt.ylim([0.08, 20]) + +plt.xlabel(r"$z$") +plt.ylabel(r"$\mathrm{Distance}\times H_0$") +plt.tight_layout() + + +# In[ ]: + +plt.savefig('distances.pdf') diff --git a/class/scripts/many_times.py b/class/scripts/many_times.py new file mode 100644 index 00000000..cee16705 --- /dev/null +++ b/class/scripts/many_times.py @@ -0,0 +1,265 @@ + +# coding: utf-8 + +# In[ ]: + +# import necessary modules +# uncomment to get plots displayed in notebook +# uncomment to get plots displayed in notebook +#%matplotlib inline +import matplotlib +import matplotlib.pyplot as plt +import numpy as np +from classy import Class +from scipy.optimize import fsolve +from scipy.interpolate import interp1d +import math + + +# In[ ]: + +# esthetic definitions for the plots +font = {'size' : 16, 'family':'STIXGeneral'} +axislabelfontsize='large' +matplotlib.rc('font', **font) +matplotlib.mathtext.rcParams['legend.fontsize']='medium' +plt.rcParams["figure.figsize"] = [8.0,6.0] + + +# In[ ]: + +############################################# +# +# User settings controlling the figure aspect +# +z_max_pk = 46000 # highest redshift involved +k_per_decade = 400 # number of k values, controls final resolution +k_min_tau0 = 40. # this value controls the minimum k value in the figure (it is k_min * tau0) +P_k_max_inv_Mpc =1.0 # this value is directly the maximum k value in the figure in Mpc +tau_num_early = 2000 # number of conformal time values before recombination, controls final resolution +tau_num_late = 200 # number of conformal time values after recombination, controls final resolution +tau_ini = 10. # first value of conformal time in Mpc +tau_label_Hubble = 20. # value of time at which we want to place the label on Hubble crossing +tau_label_ks = 40. # value of time at which we want to place the label on sound horizon crossing +tau_label_kd = 230. # value of time at which we want to place the label on damping scale crossing +# +# Cosmological parameters and other CLASS parameters +# +common_settings = {# which output? transfer functions only + 'output':'mTk', + # LambdaCDM parameters + 'h':0.67556, + 'omega_b':0.022032, + 'omega_cdm':0.12038, + 'A_s':2.215e-9, + 'n_s':0.9619, + 'tau_reio':0.0925, + # Take fixed value for primordial Helium (instead of automatic BBN adjustment) + 'YHe':0.246, + # other output and precision parameters + 'z_max_pk':z_max_pk, + 'recfast_z_initial':z_max_pk, + #'k_step_sub':'0.01', + 'k_per_decade_for_pk':k_per_decade, + 'k_per_decade_for_bao':k_per_decade, + 'k_min_tau0':k_min_tau0, # this value controls the minimum k value in the figure + 'perturb_sampling_stepsize':'0.05', + 'P_k_max_1/Mpc':P_k_max_inv_Mpc, + 'compute damping scale':'yes', # needed to output and plot Silk damping scale + 'gauge':'newtonian'} + +############### +# +# call CLASS +# +############### +M = Class() +M.set(common_settings) +M.compute() +# +# define conformal time sampling array +# +times = M.get_current_derived_parameters(['tau_rec','conformal_age']) +tau_rec=times['tau_rec'] +tau_0 = times['conformal_age'] +tau1 = np.logspace(math.log10(tau_ini),math.log10(tau_rec),tau_num_early) +tau2 = np.logspace(math.log10(tau_rec),math.log10(tau_0),tau_num_late)[1:] +tau2[-1] *= 0.999 # this tiny shift avoids interpolation errors +tau = np.concatenate((tau1,tau2)) +tau_num = len(tau) +# +# use table of background and thermodynamics quantitites to define some functions +# returning some characteristic scales +# (of Hubble crossing, sound horizon crossing, etc.) at different time +# +background = M.get_background() # load background table +#print background.viewkeys() +thermodynamics = M.get_thermodynamics() # load thermodynamics table +#print thermodynamics.viewkeys() +# +background_tau = background['conf. time [Mpc]'] # read conformal times in background table +background_z = background['z'] # read redshift +background_aH = 2.*math.pi*background['H [1/Mpc]']/(1.+background['z'])/M.h() # read 2pi * aH in [h/Mpc] +background_ks = 2.*math.pi/background['comov.snd.hrz.']/M.h() # read 2pi/(comoving sound horizon) in [h/Mpc] +background_rho_m_over_r = (background['(.)rho_b']+background['(.)rho_cdm']) /(background['(.)rho_g']+background['(.)rho_ur']) # read rho_r / rho_m (to find time of equality) +background_rho_l_over_m = background['(.)rho_lambda'] /(background['(.)rho_b']+background['(.)rho_cdm']) # read rho_m / rho_lambda (to find time of equality) +thermodynamics_tau = thermodynamics['conf. time [Mpc]'] # read confromal times in thermodynamics table +thermodynamics_kd = 2.*math.pi/thermodynamics['r_d']/M.h() # read 2pi(comoving diffusion scale) in [h/Mpc] +# +# define a bunch of interpolation functions based on previous quantities +# +background_z_at_tau = interp1d(background_tau,background_z) +background_aH_at_tau = interp1d(background_tau,background_aH) +background_ks_at_tau = interp1d(background_tau,background_ks) +background_tau_at_mr = interp1d(background_rho_m_over_r,background_tau) +background_tau_at_lm = interp1d(background_rho_l_over_m,background_tau) +thermodynamics_kd_at_tau = interp1d(thermodynamics_tau, thermodynamics_kd) +# +# infer arrays of characteristic quantitites calculated at values of conformal time in tau array +# +aH = background_aH_at_tau(tau) +ks = background_ks_at_tau(tau) +kd = thermodynamics_kd_at_tau(tau) +# +# infer times of R/M and M/Lambda equalities +# +tau_eq = background_tau_at_mr(1.) +tau_lambda = background_tau_at_lm(1.) +# +# check and inform user whether intiial arbitrary choice of z_max_pk was OK +max_z_needed = background_z_at_tau(tau[0]) +if max_z_needed > z_max_pk: + print 'you must increase the value of z_max_pk to at least ',max_z_needed + () + 1 # this strange line is just a trick to stop the script execution there +else: + print 'in a next run with the same values of tau, you may decrease z_max_pk from ',z_max_pk,' to ',max_z_needed +# +# get transfer functions at each time and build arrays Theta0(tau,k) and phi(tau,k) +# +for i in range(tau_num): + one_time = M.get_transfer(background_z_at_tau(tau[i])) # transfer functions at each time tau + if i ==0: # if this is the first time in the loop: create the arrays (k, Theta0, phi) + k = one_time['k (h/Mpc)'] + k_num = len(k) + Theta0 = np.zeros((tau_num,k_num)) + phi = np.zeros((tau_num,k_num)) + Theta0[i,:] = 0.25*one_time['d_g'][:] + phi[i,:] = one_time['phi'][:] +# +# find the global extra of Theta0(tau,k) and phi(tau,k), used to define color code later +# +Theta_amp = max(Theta0.max(),-Theta0.min()) +phi_amp = max(phi.max(),-phi.min()) +# +# reshaping of (k,tau) necessary to call the function 'pcolormesh' +# +K,T = np.meshgrid(k,tau) +# +# inform user of the size of the grids (related to the figure resolution) +# +print 'grid size:',len(k),len(tau),Theta0.shape +# +################# +# +# start plotting +# +################# +# +fig = plt.figure(figsize=(18,8)) +# +# plot Theta0(k,tau) +# +ax_Theta = fig.add_subplot(121) +print '> Plotting Theta_0' +fig_Theta = ax_Theta.pcolormesh(K,T,Theta0,cmap='coolwarm',vmin=-Theta_amp, vmax=Theta_amp) #,shading='gouraud') +print '> Done' +# +# plot lines (characteristic times and scales) +# +ax_Theta.axhline(y=tau_rec,color='k',linestyle='-') +ax_Theta.axhline(y=tau_eq,color='k',linestyle='-') +ax_Theta.axhline(y=tau_lambda,color='k',linestyle='-') +ax_Theta.plot(aH,tau,'r-',linewidth=2) +ax_Theta.plot(ks,tau,color='#FFFF33',linestyle='-',linewidth=2) +ax_Theta.plot(kd,tau,'b-',linewidth=2) +# +# dealing with labels +# +ax_Theta.set_title(r'$\Theta_0$') +ax_Theta.text(1.5*k[0],0.9*tau_rec,r'$\mathrm{rec.}$') +ax_Theta.text(1.5*k[0],0.9*tau_eq,r'$\mathrm{R/M} \,\, \mathrm{eq.}$') +ax_Theta.text(1.5*k[0],0.9*tau_lambda,r'$\mathrm{M/L} \,\, \mathrm{eq.}$') +ax_Theta.annotate(r'$\mathrm{Hubble} \,\, \mathrm{cross.}$', + xy=(background_aH_at_tau(tau_label_Hubble),tau_label_Hubble), + xytext=(0.1*background_aH_at_tau(tau_label_Hubble),0.8*tau_label_Hubble), + arrowprops=dict(facecolor='black', shrink=0.05, width=1, headlength=5, headwidth=5)) +ax_Theta.annotate(r'$\mathrm{sound} \,\, \mathrm{horizon} \,\, \mathrm{cross.}$', + xy=(background_ks_at_tau(tau_label_ks),tau_label_ks), + xytext=(0.07*background_aH_at_tau(tau_label_ks),0.8*tau_label_ks), + arrowprops=dict(facecolor='black', shrink=0.05, width=1, headlength=5, headwidth=5)) +ax_Theta.annotate(r'$\mathrm{damping} \,\, \mathrm{scale} \,\, \mathrm{cross.}$', + xy=(thermodynamics_kd_at_tau(tau_label_kd),tau_label_kd), + xytext=(0.2*thermodynamics_kd_at_tau(tau_label_kd),2.0*tau_label_kd), + arrowprops=dict(facecolor='black', shrink=0.05, width=1, headlength=5, headwidth=5)) +# +# dealing with axes +# +ax_Theta.set_xlim(k[0],k[-1]) +ax_Theta.set_xscale('log') +ax_Theta.set_yscale('log') +ax_Theta.set_xlabel(r'$k \,\,\, \mathrm{[h/Mpc]}$') +ax_Theta.set_ylabel(r'$\tau \,\,\, \mathrm{[Mpc]}$') +ax_Theta.invert_yaxis() +# +# color legend +# +fig.colorbar(fig_Theta) +# +# plot phi(k,tau) +# +ax_phi = fig.add_subplot(122) +ax_phi.set_xlim(k[0],k[-1]) +#ax_phi.pcolor(K,T,phi,cmap='coolwarm') +print '> Plotting phi' +fig_phi = ax_phi.pcolormesh(K,T,phi,cmap='coolwarm',vmin=-0., vmax=phi_amp) +print '> Done' +# +# plot lines (characteristic times and scales) +# +ax_phi.axhline(y=tau_rec,color='k',linestyle='-') +ax_phi.axhline(y=tau_eq,color='k',linestyle='-') +ax_phi.axhline(y=tau_lambda,color='k',linestyle='-') +ax_phi.plot(aH,tau,'r-',linewidth=2) +ax_phi.plot(ks,tau,color='#FFFF33',linestyle='-',linewidth=2) +# +# dealing with labels +# +ax_phi.set_title(r'$\phi$') +ax_phi.text(1.5*k[0],0.9*tau_rec,r'$\mathrm{rec.}$') +ax_phi.text(1.5*k[0],0.9*tau_eq,r'$\mathrm{R/M} \,\, \mathrm{eq.}$') +ax_phi.text(1.5*k[0],0.9*tau_lambda,r'$\mathrm{M/L} \,\, \mathrm{eq.}$') +ax_phi.annotate(r'$\mathrm{Hubble} \,\, \mathrm{cross.}$', + xy=(background_aH_at_tau(tau_label_Hubble),tau_label_Hubble), + xytext=(0.1*background_aH_at_tau(tau_label_Hubble),0.8*tau_label_Hubble), + arrowprops=dict(facecolor='black', shrink=0.05, width=1, headlength=5, headwidth=5)) +ax_phi.annotate(r'$\mathrm{sound} \,\, \mathrm{horizon} \,\, \mathrm{cross.}$', + xy=(background_ks_at_tau(tau_label_ks),tau_label_ks), + xytext=(0.07*background_aH_at_tau(tau_label_ks),0.8*tau_label_ks), + arrowprops=dict(facecolor='black', shrink=0.05, width=1, headlength=5, headwidth=5)) +# +# dealing with axes +# +ax_phi.set_xscale('log') +ax_phi.set_yscale('log') +ax_phi.set_xlabel(r'$k \,\,\, \mathrm{[h/Mpc]}$') +ax_phi.set_ylabel(r'$\tau \,\,\, \mathrm{[Mpc]}$') +ax_phi.invert_yaxis() +# +# color legend +# +fig.colorbar(fig_phi) +# +# produce the PDF +# +#plt.show() +plt.savefig('many_times.png',dpi=300) diff --git a/class/scripts/neutrinohierarchy.py b/class/scripts/neutrinohierarchy.py new file mode 100644 index 00000000..e23e06de --- /dev/null +++ b/class/scripts/neutrinohierarchy.py @@ -0,0 +1,118 @@ + +# coding: utf-8 + +# In[1]: + +# import necessary modules +# uncomment to get plots displayed in notebook +#%matplotlib inline +import matplotlib +import matplotlib.pyplot as plt +import numpy as np +from classy import Class +from scipy.optimize import fsolve + + +# In[2]: + +# esthetic definitions for the plots +font = {'size' : 16, 'family':'STIXGeneral'} +axislabelfontsize='large' +matplotlib.rc('font', **font) +matplotlib.mathtext.rcParams['legend.fontsize']='medium' + + +# In[3]: + +# a function returning the three masses given the Delta m^2, the total mass, and the hierarchy (e.g. 'IN' or 'IH') +# taken from a piece of MontePython written by Thejs Brinckmann +def get_masses(delta_m_squared_atm, delta_m_squared_sol, sum_masses, hierarchy): + # any string containing letter 'n' will be considered as refering to normal hierarchy + if 'n' in hierarchy.lower(): + # Normal hierarchy massive neutrinos. Calculates the individual + # neutrino masses from M_tot_NH and deletes M_tot_NH + #delta_m_squared_atm=2.45e-3 + #delta_m_squared_sol=7.50e-5 + m1_func = lambda m1, M_tot, d_m_sq_atm, d_m_sq_sol: M_tot**2. + 0.5*d_m_sq_sol - d_m_sq_atm + m1**2. - 2.*M_tot*m1 - 2.*M_tot*(d_m_sq_sol+m1**2.)**0.5 + 2.*m1*(d_m_sq_sol+m1**2.)**0.5 + m1,opt_output,success,output_message = fsolve(m1_func,sum_masses/3.,(sum_masses,delta_m_squared_atm,delta_m_squared_sol),full_output=True) + m1 = m1[0] + m2 = (delta_m_squared_sol + m1**2.)**0.5 + m3 = (delta_m_squared_atm + 0.5*(m2**2. + m1**2.))**0.5 + return m1,m2,m3 + else: + # Inverted hierarchy massive neutrinos. Calculates the individual + # neutrino masses from M_tot_IH and deletes M_tot_IH + #delta_m_squared_atm=-2.45e-3 + #delta_m_squared_sol=7.50e-5 + delta_m_squared_atm = -delta_m_squared_atm + m1_func = lambda m1, M_tot, d_m_sq_atm, d_m_sq_sol: M_tot**2. + 0.5*d_m_sq_sol - d_m_sq_atm + m1**2. - 2.*M_tot*m1 - 2.*M_tot*(d_m_sq_sol+m1**2.)**0.5 + 2.*m1*(d_m_sq_sol+m1**2.)**0.5 + m1,opt_output,success,output_message = fsolve(m1_func,sum_masses/3.,(sum_masses,delta_m_squared_atm,delta_m_squared_sol),full_output=True) + m1 = m1[0] + m2 = (delta_m_squared_sol + m1**2.)**0.5 + m3 = (delta_m_squared_atm + 0.5*(m2**2. + m1**2.))**0.5 + return m1,m2,m3 + + +# In[4]: + +# test of this function, returning the 3 masses for total mass of 0.1eV +m1,m2,m3 = get_masses(2.45e-3,7.50e-5,0.1,'NH') +print 'NH:',m1,m2,m3,m1+m2+m3 +m1,m2,m3 = get_masses(2.45e-3,7.50e-5,0.1,'IH') +print 'IH:',m1,m2,m3,m1+m2+m3 + + +# In[5]: + +# The goal of this cell is to compute the ratio of P(k) for NH and IH with the same total mass +commonsettings = {'N_ur':0, + 'N_ncdm':3, + 'output':'mPk', + 'P_k_max_1/Mpc':3.0, + # The next line should be uncommented fgor higher precision (but significantly slower running) + 'ncdm_fluid_approximation':3, + # You may uncomment this line to get more info on the ncdm sector from Class: + 'background_verbose':1 + } + +# array of k values in 1/Mpc +kvec = np.logspace(-4,np.log10(3),100) +# array for storing legend +legarray = [] + +# loop over total mass values +for sum_masses in [0.1, 0.115, 0.13]: + # normal hierarchy + [m1, m2, m3] = get_masses(2.45e-3,7.50e-5, sum_masses, 'NH') + NH = Class() + NH.set(commonsettings) + NH.set({'m_ncdm':str(m1)+','+str(m2)+','+str(m3)}) + NH.compute() + # inverted hierarchy + [m1, m2, m3] = get_masses(2.45e-3,7.50e-5, sum_masses, 'IH') + IH = Class() + IH.set(commonsettings) + IH.set({'m_ncdm':str(m1)+','+str(m2)+','+str(m3)}) + IH.compute() + pkNH = [] + pkIH = [] + for k in kvec: + pkNH.append(NH.pk(k,0.)) + pkIH.append(IH.pk(k,0.)) + NH.struct_cleanup() + IH.struct_cleanup() + # extract h value to convert k from 1/Mpc to h/Mpc + h = NH.h() + plt.semilogx(kvec/h,1-np.array(pkNH)/np.array(pkIH)) + legarray.append(r'$\Sigma m_i = '+str(sum_masses)+'$eV') + +plt.axhline(0,color='k') +plt.xlim(kvec[0]/h,kvec[-1]/h) +plt.xlabel(r'$k [h \mathrm{Mpc}^{-1}]$') +plt.ylabel(r'$1-P(k)^\mathrm{NH}/P(k)^\mathrm{IH}$') +plt.legend(legarray) + + +# In[6]: + +plt.savefig('neutrinohierarchy.pdf') diff --git a/class/scripts/one_k.py b/class/scripts/one_k.py new file mode 100644 index 00000000..0306a4cb --- /dev/null +++ b/class/scripts/one_k.py @@ -0,0 +1,173 @@ + +# coding: utf-8 + +# In[ ]: + +# import necessary modules +# uncomment to get plots displayed in notebook +#%matplotlib inline +import matplotlib +import matplotlib.pyplot as plt +import numpy as np +from classy import Class +from scipy.optimize import fsolve +from scipy.interpolate import interp1d +import math + + +# In[ ]: + +# esthetic definitions for the plots +font = {'size' : 16, 'family':'STIXGeneral'} +axislabelfontsize='large' +matplotlib.rc('font', **font) +matplotlib.mathtext.rcParams['legend.fontsize']='medium' +plt.rcParams["figure.figsize"] = [8.0,6.0] + + +# In[ ]: + +############################################# +# +# value of k that we want to follow in [1/Mpc] +# +k = 0.5 # 1/Mpc +# +# Cosmological parameters and other CLASS parameters +# +common_settings = {# we need to set the output field to something although + # the really releveant outpout here will be set with 'k_output_values' + 'output':'mPk', + # value of k we want to polot in [1/Mpc] + 'k_output_values':k, + # LambdaCDM parameters + 'h':0.67556, + 'omega_b':0.022032, + 'omega_cdm':0.12038, + 'A_s':2.215e-9, + 'n_s':0.9619, + 'tau_reio':0.0925, + # Take fixed value for primordial Helium (instead of automatic BBN adjustment) + 'YHe':0.246, + # other options and settings + 'compute damping scale':'yes', # needed to output the time of damping scale crossing + 'gauge':'newtonian'} +############## +# +# call CLASS +# +M = Class() +M.set(common_settings) +M.compute() +# +# load perturbations +# +all_k = M.get_perturbations() # this potentially constains scalars/tensors and all k values +print all_k['scalar'][0].viewkeys() +# +one_k = all_k['scalar'][0] # this contains only the scalar perturbations for the requested k values +# +tau = one_k['tau [Mpc]'] +Theta0 = 0.25*one_k['delta_g'] +phi = one_k['phi'] +psi = one_k['psi'] +theta_b = one_k['theta_b'] +a = one_k['a'] +# compute related quantitites +R = 3./4.*M.Omega_b()/M.Omega_g()*a # R = 3/4 * (rho_b/rho_gamma) +zero_point = -(1.+R)*psi # zero point of oscillations: -(1.+R)*psi +# +# get Theta0 oscillation amplitude (for vertical scale of plot) +# +Theta0_amp = max(Theta0.max(),-Theta0.min()) +# +# get the time of decoupling +# +quantities = M.get_current_derived_parameters(['tau_rec']) +# print times.viewkeys() +tau_rec = quantities['tau_rec'] +# +# use table of background quantitites to find the time of +# Hubble crossing (k / (aH)= 2 pi), sound horizon crossing (k * rs = 2pi) +# +background = M.get_background() # load background table +#print background.viewkeys() +# +background_tau = background['conf. time [Mpc]'] # read confromal times in background table +background_z = background['z'] # read redshift +background_k_over_aH = k/background['H [1/Mpc]']*(1.+background['z']) # read k/aH = k(1+z)/H +background_k_rs = k * background['comov.snd.hrz.'] # read k * rs +background_rho_m_over_r = (background['(.)rho_b']+background['(.)rho_cdm']) /(background['(.)rho_g']+background['(.)rho_ur']) # read rho_r / rho_m (to find time of equality) +# +# define interpolation functions; we want the value of tau when the argument is equal to 2pi (or 1 for equality) +# +tau_at_k_over_aH = interp1d(background_k_over_aH,background_tau) +tau_at_k_rs = interp1d(background_k_rs,background_tau) +tau_at_rho_m_over_r = interp1d(background_rho_m_over_r,background_tau) +# +# finally get these times +# +tau_Hubble = tau_at_k_over_aH(2.*math.pi) +tau_s = tau_at_k_rs(2.*math.pi) +tau_eq = tau_at_rho_m_over_r(1.) +# +################# +# +# start plotting +# +################# +# +plt.xlim([tau[0],tau_rec*1.3]) +plt.ylim([-1.3*Theta0_amp,1.3*Theta0_amp]) +plt.xlabel(r'$\tau \,\,\, \mathrm{[Mpc]}$') +plt.title(r'$\mathrm{Transfer} (\tau,k) \,\,\, \mathrm{for} \,\,\, k=%g \,\,\, [1/\mathrm{Mpc}]$'%k) +plt.grid() +# +plt.axvline(x=tau_Hubble,color='r') +plt.axvline(x=tau_s,color='y') +plt.axvline(x=tau_eq,color='k') +plt.axvline(x=tau_rec,color='k') +# +plt.annotate(r'Hubble cross.', + xy=(tau_Hubble,1.08*Theta0_amp), + xytext=(0.15*tau_Hubble,1.18*Theta0_amp), + arrowprops=dict(facecolor='black', shrink=0.05, width=1, headlength=5, headwidth=5)) +plt.annotate(r'sound hor. cross.', + xy=(tau_s,-1.0*Theta0_amp), + xytext=(1.5*tau_s,-1.2*Theta0_amp), + arrowprops=dict(facecolor='black', shrink=0.05, width=1, headlength=5, headwidth=5)) +plt.annotate(r'eq.', + xy=(tau_eq,1.08*Theta0_amp), + xytext=(0.45*tau_eq,1.18*Theta0_amp), + arrowprops=dict(facecolor='black', shrink=0.05, width=1, headlength=5, headwidth=5)) +plt.annotate(r'rec.', + xy=(tau_rec,1.08*Theta0_amp), + xytext=(0.45*tau_rec,1.18*Theta0_amp), + arrowprops=dict(facecolor='black', shrink=0.05, width=1, headlength=5, headwidth=5)) +# +# Possibility to add functions one by one, saving between each (for slides) +# +plt.semilogx(tau,psi,'y-',label=r'$\psi$') +#plt.legend(loc='right',bbox_to_anchor=(1.4, 0.5)) +#plt.savefig('one_k_1.pdf',bbox_inches='tight') +# +plt.semilogx(tau,phi,'r-',label=r'$\phi$') +#plt.legend(loc='right',bbox_to_anchor=(1.4, 0.5)) +#plt.savefig('one_k_2.pdf',bbox_inches='tight') +# +plt.semilogx(tau,zero_point,'k:',label=r'$-(1+R)\psi$') +#plt.legend(loc='right',bbox_to_anchor=(1.4, 0.5)) +#plt.savefig('one_k_3.pdf',bbox_inches='tight') +# +plt.semilogx(tau,Theta0,'b-',linewidth=2,label=r'$\Theta_0$') +#plt.legend(loc='right',bbox_to_anchor=(1.4, 0.5)) +#plt.savefig('one_k_4.pdf',bbox_inches='tight') +# +plt.semilogx(tau,Theta0+psi,'c-',linewidth=2,label=r'$\Theta_0+\psi$') +#plt.legend(loc='right',bbox_to_anchor=(1.4, 0.5)) +#plt.savefig('one_k_5.pdf',bbox_inches='tight') +# +plt.semilogx(tau,theta_b,'g-',label=r'$\theta_b$') +plt.legend(loc='right',bbox_to_anchor=(1.4, 0.5)) +plt.savefig('one_k.pdf',bbox_inches='tight') +# diff --git a/class/scripts/one_time.py b/class/scripts/one_time.py new file mode 100644 index 00000000..4bbe817e --- /dev/null +++ b/class/scripts/one_time.py @@ -0,0 +1,246 @@ + +# coding: utf-8 + +# In[1]: + +# import necessary modules +# uncomment to get plots displayed in notebook +#%matplotlib inline +import matplotlib +import matplotlib.pyplot as plt +import numpy as np +from classy import Class +from scipy.optimize import fsolve +from scipy.interpolate import interp1d +import math + + +# In[2]: + +# esthetic definitions for the plots +font = {'size' : 16, 'family':'STIXGeneral'} +axislabelfontsize='large' +matplotlib.rc('font', **font) +matplotlib.mathtext.rcParams['legend.fontsize']='medium' +plt.rcParams["figure.figsize"] = [8.0,6.0] + + +# In[3]: + +############################################# +# +# Cosmological parameters and other CLASS parameters +# +common_settings = {# wich output? ClTT, transfer functions delta_i and theta_i + 'output':'tCl,mTk,vTk', + # LambdaCDM parameters + 'h':0.67556, + 'omega_b':0.022032, + 'omega_cdm':0.12038, + 'A_s':2.215e-9, + 'n_s':0.9619, + 'tau_reio':0.0925, + # Take fixed value for primordial Helium (instead of automatic BBN adjustment) + 'YHe':0.246, + # other output and precision parameters + 'l_max_scalars':5000, + 'P_k_max_1/Mpc':10.0, + 'gauge':'newtonian'} +############### +# +# call CLASS a first time just to compute z_rec (will compute transfer functions at default: z=0) +# +M = Class() +M.set(common_settings) +M.compute() +derived = M.get_current_derived_parameters(['z_rec','tau_rec','conformal_age']) +#print derived.viewkeys() +z_rec = derived['z_rec'] +z_rec = int(1000.*z_rec)/1000. # round down at 4 digits after coma +M.struct_cleanup() # clean output +M.empty() # clean input +# +# call CLASS again (will compute transfer functions at inout value z_rec) +# +M = Class() +M.set(common_settings) +M.set({'z_pk':z_rec}) +M.compute() +# +# load transfer functions at recombination +# +one_time = M.get_transfer(z_rec) +print one_time.viewkeys() +k = one_time['k (h/Mpc)'] +Theta0 = 0.25*one_time['d_g'] +phi = one_time['phi'] +psi = one_time['psi'] +theta_b = one_time['t_b'] +# compute related quantitites +R = 3./4.*M.Omega_b()/M.Omega_g()/(1+z_rec) # R = 3/4 * (rho_b/rho_gamma) at z_rec +zero_point = -(1.+R)*psi # zero point of oscillations: -(1.+R)*psi +# +# get Theta0 oscillation amplitude (for vertical scale of plot) +# +Theta0_amp = max(Theta0.max(),-Theta0.min()) +# +# use table of background quantitites to find the wavenumbers corresponding to +# Hubble crossing (k = 2 pi a H), sound horizon crossing (k = 2pi / rs) +# +background = M.get_background() # load background table +#print background.viewkeys() +# +background_tau = background['conf. time [Mpc]'] # read confromal times in background table +background_z = background['z'] # read redshift +background_kh = 2.*math.pi*background['H [1/Mpc]']/(1.+background['z'])/M.h() # read kh = 2pi aH = 2pi H/(1+z) converted to [h/Mpc] +background_ks = 2.*math.pi/background['comov.snd.hrz.']/M.h() # read ks = 2pi/rs converted to [h/Mpc] +# +# define interpolation functions; we want the value of tau when the argument is equal to 2pi +# +kh_at_tau = interp1d(background_tau,background_kh) +ks_at_tau = interp1d(background_tau,background_ks) +# +# finally get these scales +# +tau_rec = derived['tau_rec'] +kh = kh_at_tau(tau_rec) +ks = ks_at_tau(tau_rec) +# +################# +# +# start plotting +# +################# +# +fig, (ax_Tk, ax_Tk2, ax_Cl) = plt.subplots(3,sharex=True,figsize=(8,12)) +fig.subplots_adjust(hspace=0) +################## +# +# first figure with transfer functions +# +################## +ax_Tk.set_xlim([3.e-4,0.5]) +ax_Tk.set_ylim([-1.1*Theta0_amp,1.1*Theta0_amp]) +ax_Tk.tick_params(axis='x',which='both',bottom='off',top='on',labelbottom='off',labeltop='on') +ax_Tk.set_xlabel(r'$\mathrm{k} \,\,\, \mathrm{[h/Mpc]}$') +ax_Tk.set_ylabel(r'$\mathrm{Transfer}(\tau_\mathrm{dec},k)$') +ax_Tk.xaxis.set_label_position('top') +ax_Tk.grid() +# +ax_Tk.axvline(x=kh,color='r') +ax_Tk.axvline(x=ks,color='y') +# +ax_Tk.annotate(r'Hubble cross.', + xy=(kh,0.8*Theta0_amp), + xytext=(0.15*kh,0.9*Theta0_amp), + arrowprops=dict(facecolor='black', shrink=0.05, width=1, headlength=5, headwidth=5)) +ax_Tk.annotate(r'sound hor. cross.', + xy=(ks,0.8*Theta0_amp), + xytext=(1.3*ks,0.9*Theta0_amp), + arrowprops=dict(facecolor='black', shrink=0.05, width=1, headlength=5, headwidth=5)) +# +ax_Tk.semilogx(k,psi,'y-',label=r'$\psi$') +ax_Tk.semilogx(k,phi,'r-',label=r'$\phi$') +ax_Tk.semilogx(k,zero_point,'k:',label=r'$-(1+R)\psi$') +ax_Tk.semilogx(k,Theta0,'b-',label=r'$\Theta_0$') +ax_Tk.semilogx(k,(Theta0+psi),'c',label=r'$\Theta_0+\psi$') +ax_Tk.semilogx(k,theta_b,'g-',label=r'$\theta_b$') +# +ax_Tk.legend(loc='right',bbox_to_anchor=(1.4, 0.5)) +####################### +# +# second figure with transfer functions squared +# +####################### +ax_Tk2.set_xlim([3.e-4,0.5]) +ax_Tk2.tick_params(axis='x',which='both',bottom='off',top='off',labelbottom='off',labeltop='off') +ax_Tk2.set_ylabel(r'$\mathrm{Transfer}(\tau_\mathrm{dec},k)^2$') +ax_Tk2.grid() +# +ax_Tk2.semilogx(k,(Theta0+psi)**2,'c',label=r'$(\Theta_0+\psi)^2$') +# +ax_Tk2.legend(loc='right',bbox_to_anchor=(1.4, 0.5)) +######################## +# +# third figure with all contributions to Cls +# +# For that we will need to call CLASS again for each contribution (TSW, earlyISW, lateISW, Doppler, total) +# Note that there is another contribution from polarisation: we don't plot it individually because it is +# too small to be seen, however it is included by default in the total. +# +# After each step we will save the figure (to get intermediate figures for the slides) +# +######################### +# presentation settings +ax_Cl.set_xlim([3.e-4,0.5]) +ax_Cl.set_ylim([0.,8.]) +ax_Cl.set_xlabel(r'$\ell/(\tau_0-\tau_{rec}) \,\,\, \mathrm{[h/Mpc]}$') +ax_Cl.set_ylabel(r'$\ell (\ell+1) C_l^{TT} / 2 \pi \,\,\, [\times 10^{10}]$') +ax_Cl.tick_params(axis='x',which='both',bottom='on',top='off',labelbottom='on',labeltop='off') +ax_Cl.grid() +# +# the x-axis will show l/(tau_0-tau_rec), so we need (tau_0-tau_rec) in units of [Mpc/h] +# +tau_0_minus_tau_rec_hMpc = (derived['conformal_age']-derived['tau_rec'])*M.h() +# +# save the total Cl's (we will plot them in the last step) +# +cl_tot = M.raw_cl(5000) +# +# call CLASS with TSW, then plot and save +# +M.struct_cleanup() # clean output +M.empty() # clean input +M.set(common_settings) # new input +M.set({'temperature contributions':'tsw'}) +M.compute() +cl = M.raw_cl(5000) +# +ax_Cl.semilogx(cl['ell']/tau_0_minus_tau_rec_hMpc,1.e10*cl['ell']*(cl['ell']+1.)*cl['tt']/2./math.pi,'c-',label=r'$\mathrm{T+SW}$') +# +ax_Cl.legend(loc='right',bbox_to_anchor=(1.4, 0.5)) +fig.savefig('one_time_with_cl_1.pdf',bbox_inches='tight') +# +# call CLASS with early ISW, plot; call CLASS with late ISW, plot; then save +# +M.struct_cleanup() +M.empty() +M.set(common_settings) +M.set({'temperature contributions':'eisw'}) +M.compute() +cl = M.raw_cl(5000) +# +ax_Cl.semilogx(cl['ell']/tau_0_minus_tau_rec_hMpc,1.e10*cl['ell']*(cl['ell']+1.)*cl['tt']/2./math.pi,'r-',label=r'$\mathrm{early} \,\, \mathrm{ISW}$') +# +M.struct_cleanup() +M.empty() +M.set(common_settings) +M.set({'temperature contributions':'lisw'}) +M.compute() +cl = M.raw_cl(5000) +# +ax_Cl.semilogx(cl['ell']/tau_0_minus_tau_rec_hMpc,1.e10*cl['ell']*(cl['ell']+1.)*cl['tt']/2./math.pi,'y-',label=r'$\mathrm{late} \,\, \mathrm{ISW}$') +# +ax_Cl.legend(loc='right',bbox_to_anchor=(1.4, 0.5)) +fig.savefig('one_time_with_cl_2.pdf',bbox_inches='tight') +# +# call CLASS with Doppler, then plot and save +# +M.struct_cleanup() +M.empty() +M.set(common_settings) +M.set({'temperature contributions':'dop'}) +M.compute() +cl = M.raw_cl(5000) +# +ax_Cl.semilogx(cl['ell']/tau_0_minus_tau_rec_hMpc,1.e10*cl['ell']*(cl['ell']+1.)*cl['tt']/2./math.pi,'g-',label=r'$\mathrm{Doppler}$') +# +ax_Cl.legend(loc='right',bbox_to_anchor=(1.4, 0.5)) +fig.savefig('one_time_with_cl_3.pdf',bbox_inches='tight') +# +# plot the total Cls that had been stored, and save +# +ax_Cl.semilogx(cl_tot['ell']/tau_0_minus_tau_rec_hMpc,1.e10*cl_tot['ell']*(cl_tot['ell']+1.)*cl_tot['tt']/2./math.pi,'k-',label=r'$\mathrm{Total}$') +# +ax_Cl.legend(loc='right',bbox_to_anchor=(1.4, 0.5)) +fig.savefig('one_time_with_cl_tot.pdf',bbox_inches='tight') diff --git a/class/scripts/thermo.py b/class/scripts/thermo.py new file mode 100644 index 00000000..3adb2f27 --- /dev/null +++ b/class/scripts/thermo.py @@ -0,0 +1,83 @@ + +# coding: utf-8 + +# In[ ]: + +# import necessary modules +# uncomment to get plots displayed in notebook +#%matplotlib inline +import matplotlib +import matplotlib.pyplot as plt +import numpy as np +from classy import Class +from scipy.optimize import fsolve +from scipy.interpolate import interp1d +import math + + +# In[ ]: + +# esthetic definitions for the plots +font = {'size' : 16, 'family':'STIXGeneral'} +axislabelfontsize='large' +matplotlib.rc('font', **font) +matplotlib.mathtext.rcParams['legend.fontsize']='medium' +plt.rcParams["figure.figsize"] = [8.0,6.0] + + +# In[ ]: + +common_settings = {'output' : 'tCl', + # LambdaCDM parameters + 'h':0.67556, + 'omega_b':0.022032, + 'omega_cdm':0.12038, + 'A_s':2.215e-9, + 'n_s':0.9619, + 'tau_reio':0.0925, + # Take fixed value for primordial Helium (instead of automatic BBN adjustment) + 'YHe':0.246, + 'thermodynamics_verbose':1 + } +############## +# +# call CLASS +# +############### +M = Class() +M.set(common_settings) +M.compute() +derived = M.get_current_derived_parameters(['tau_rec','conformal_age']) +thermo = M.get_thermodynamics() +print thermo.viewkeys() + + +# In[ ]: + +tau = thermo['conf. time [Mpc]'] +g = thermo['g [Mpc^-1]'] +# to make the reionisation peak visible, rescale g by 100 for late times +g[:500] *= 100 +################# +# +# start plotting +# +################# +# +plt.xlim([1.e2,derived['conformal_age']]) +plt.xlabel(r'$\tau \,\,\, \mathrm{[Mpc]}$') +plt.ylabel(r'$\mathrm{visibility} \,\,\, g \,\,\, [\mathrm{Mpc}^{-1}]$') +plt.axvline(x=derived['tau_rec'],color='k') +# The conformal time at reionisation could be extracted from the code. +# But we know it because it is part of the standard output +# when thermodynamics_verbose=1 +plt.axvline(x=4255.316282,color='k') +# +# Print functions one by one, saving between each (for slides) +# +plt.semilogx(tau,g,'r',label=r'$\psi$') + + +# In[ ]: + +plt.savefig('thermo.pdf',bbox_inches='tight') diff --git a/class/scripts/varying_neff.py b/class/scripts/varying_neff.py new file mode 100644 index 00000000..2bf2ac40 --- /dev/null +++ b/class/scripts/varying_neff.py @@ -0,0 +1,203 @@ + +# coding: utf-8 + +# In[ ]: + +# import necessary modules +# uncomment to get plots displayed in notebool +#%matplotlib inline +import matplotlib +import matplotlib.pyplot as plt +import numpy as np +from classy import Class +from scipy.optimize import fsolve +import math + + +# In[ ]: + +############################################ +# +# Varying parameter (others fixed to default) +# +var_name = 'N_ur' +var_array = np.linspace(3.046,5.046,5) +var_num = len(var_array) +var_legend = r'$N_\mathrm{eff}$' +var_figname = 'neff' +# +# Constraints to be matched +# +# As explained in the "Neutrino cosmology" book, CUP, Lesgourgues et al., section 5.3, the goal is to vary +# - omega_cdm by a factor alpha = (1 + coeff*Neff)/(1 + coeff*3.046) +# - h by a factor sqrt*(alpha) +# in order to keep a fixed z_equality(R/M) and z_equality(M/Lambda) +# +# coefficient such that omega_r = omega_gamma (1 + coeff*Neff), +# i.e. such that omega_ur = omega_gamma * coeff * Neff: +# coeff = omega_ur/omega_gamma/Neff_standard +coeff = 1.710730e-05/2.472979e-05/3.046 +print "coeff=",coeff +# +############################################# +# +# Fixed settings +# +common_settings = {'output':'tCl,pCl,lCl,mPk', + 'lensing':'yes', + # fixed LambdaCDM parameters + 'omega_b':0.022032, + 'A_s':2.215e-9, + 'n_s':0.9619, + 'tau_reio':0.0925, + # Take fixed value for primordial Helium (instead of automatic BBN adjustment) + 'YHe':0.246, + # other output and precision parameters + 'P_k_max_1/Mpc':3.0, + 'l_switch_limber':9} +# +############################################## +# +# loop over varying parameter values +# +M = {} +# +for i, N_ur in enumerate(var_array): + # + # rescale omega_cdm and h + # + alpha = (1.+coeff*N_ur)/(1.+coeff*3.046) + omega_cdm = (0.022032 + 0.12038)*alpha - 0.022032 + h = 0.67556*math.sqrt(alpha) + print ' * Compute with %s=%e, %s=%e, %s=%e'%('N_ur',N_ur,'omega_cdm',omega_cdm,'h',h) + # + # call CLASS + # + M[i] = Class() + M[i].set(common_settings) + M[i].set({'N_ur':N_ur}) + M[i].set({'omega_cdm':omega_cdm}) + M[i].set({'h':h}) + M[i].compute() + + +# In[ ]: + +# esthetic definitions for the plots +font = {'size' : 24, 'family':'STIXGeneral'} +axislabelfontsize='large' +matplotlib.rc('font', **font) +matplotlib.mathtext.rcParams['legend.fontsize']='medium' +plt.rcParams["figure.figsize"] = [8.0,6.0] + + +# In[ ]: + +############################################# +# +# extract spectra and plot them +# +############################################# +kvec = np.logspace(-4,np.log10(3),1000) # array of kvec in h/Mpc +twopi = 2.*math.pi +# +# Create figures +# +fig_Pk, ax_Pk = plt.subplots() +fig_TT, ax_TT = plt.subplots() +# +# loop over varying parameter values +# +ll = {} +clM = {} +clTT = {} +pkM = {} +legarray = [] + +for i, N_ur in enumerate(var_array): + # + alpha = (1.+0.2271*N_ur)/(1.+0.2271*3.046) + h = 0.67556*math.sqrt(alpha) # this is h + # + # deal with colors and legends + # + if i == 0: + var_color = 'k' + var_alpha = 1. + else: + var_color = plt.cm.Reds(0.8*i/(var_num-1)) + # + # get Cls + # + clM[i] = M[i].lensed_cl(2500) + ll[i] = clM[i]['ell'][2:] + clTT[i] = clM[i]['tt'][2:] + # + # store P(k) for common k values + # + pkM[i] = [] + # The function .pk(k,z) wants k in 1/Mpc so we must convert kvec for each case with the right h + khvec = kvec*h # This is k in 1/Mpc + for kh in khvec: + pkM[i].append(M[i].pk(kh,0.)*h**3) + # + # plot P(k) + # + if i == 0: + ax_Pk.semilogx(kvec,np.array(pkM[i])/np.array(pkM[0]), + color=var_color,#alpha=var_alpha, + linestyle='-') + else: + ax_Pk.semilogx(kvec,np.array(pkM[i])/np.array(pkM[0]), + color=var_color,#alpha=var_alpha, + linestyle='-', + label=r'$\Delta N_\mathrm{eff}=%g$'%(N_ur-3.046)) + # + # plot C_l^TT + # + if i == 0: + ax_TT.semilogx(ll[i],clTT[i]/clTT[0], + color=var_color,alpha=var_alpha,linestyle='-') + else: + ax_TT.semilogx(ll[i],clTT[i]/clTT[0], + color=var_color,alpha=var_alpha,linestyle='-', + label=r'$\Delta N_\mathrm{eff}=%g$'%(N_ur-3.046)) + +# +# output of P(k) figure +# +ax_Pk.set_xlim([1.e-3,3.]) +ax_Pk.set_ylim([0.98,1.20]) +ax_Pk.set_xlabel(r'$k \,\,\,\, [h^{-1}\mathrm{Mpc}]$') +ax_Pk.set_ylabel(r'$P(k)/P(k)[N_\mathrm{eff}=3.046]$') +ax_Pk.legend(loc='upper left') +fig_Pk.tight_layout() +fig_Pk.savefig('ratio-%s-Pk.pdf' % var_figname) +# +# output of C_l^TT figure +# +ax_TT.set_xlim([2,2500]) +ax_TT.set_ylim([0.850,1.005]) +ax_TT.set_xlabel(r'$\mathrm{Multipole} \,\,\,\, \ell$') +ax_TT.set_ylabel(r'$C_\ell^\mathrm{TT}/C_\ell^\mathrm{TT}(N_\mathrm{eff}=3.046)$') +ax_TT.legend(loc='lower left') +fig_TT.tight_layout() +fig_TT.savefig('ratio-%s-cltt.pdf' % var_figname) +# +# output of C_l^EE figure +# +#ax_EE.set_xlim([2,2500]) +#ax_EE.set_xlabel(r'$\ell$') +#ax_EE.set_ylabel(r'$[\ell(\ell+1)/2\pi] C_\ell^\mathrm{EE}$') +#ax_EE.legend(legarray,loc='lower right') +#fig_EE.tight_layout() +#fig_EE.savefig('spectra_%s_clee.pdf' % var_figname) +# +# output of C_l^pp figure +# +#ax_PP.set_xlim([10,2500]) +#ax_PP.set_xlabel(r'$\ell$') +#ax_PP.set_ylabel(r'$[\ell^2(\ell+1)^2/2\pi] C_\ell^\mathrm{\phi \phi}$') +#ax_PP.legend(legarray) +#fig_PP.tight_layout() +#fig_PP.savefig('spectra_%s_clpp.pdf' % var_figname) diff --git a/class/scripts/varying_pann.py b/class/scripts/varying_pann.py new file mode 100644 index 00000000..4d76c3b1 --- /dev/null +++ b/class/scripts/varying_pann.py @@ -0,0 +1,174 @@ + +# coding: utf-8 + +# In[ ]: + +# import necessary modules +# uncomment to get plots displayed in notebook +#%matplotlib inline +import matplotlib +import matplotlib.pyplot as plt +import numpy as np +from classy import Class +from scipy.optimize import fsolve +import math + + +# In[ ]: + +# esthetic definitions for the plots +font = {'size' : 16, 'family':'STIXGeneral'} +axislabelfontsize='large' +matplotlib.rc('font', **font) +matplotlib.mathtext.rcParams['legend.fontsize']='medium' +plt.rcParams["figure.figsize"] = [8.0,6.0] + + +# In[ ]: + +############################################ +# +# Varying parameter (others fixed to default) +# +var_name = 'annihilation' +var_array = np.linspace(0,1.e-5,5) +var_num = len(var_array) +var_legend = r'$p_\mathrm{ann}$' +var_figname = 'pann' +# +############################################# +# +# Fixed settings +# +common_settings = {'output':'tCl,pCl,lCl,mPk', + 'lensing':'yes', + # LambdaCDM parameters + 'h':0.67556, + 'omega_b':0.022032, + 'omega_cdm':0.12038, + 'A_s':2.215e-9, + 'n_s':0.9619, + 'tau_reio':0.0925, + # Take fixed value for primordial Helium (instead of automatic BBN adjustment) + 'YHe':0.246, + # other output and precision parameters + 'P_k_max_1/Mpc':3.0, + 'l_switch_limber':9} + #'background_verbose':1} +# +# arrays for output +# +kvec = np.logspace(-4,np.log10(3),1000) +legarray = [] +twopi = 2.*math.pi +# +# Create figures +# +fig_Pk, ax_Pk = plt.subplots() +fig_TT, ax_TT = plt.subplots() +fig_EE, ax_EE = plt.subplots() +fig_PP, ax_PP = plt.subplots() +# +# loop over varying parameter values +# +for i,var in enumerate(var_array): + # + print ' * Compute with %s=%e'%(var_name,var) + # + # deal with colors and legends + # + if i == 0: + var_color = 'k' + var_alpha = 1. + legarray.append(r'ref. $\Lambda CDM$') + else: + var_color = 'r' + var_alpha = 1.*i/(var_num-1.) + if i == var_num-1: + legarray.append(var_legend) + # + # call CLASS + # + M = Class() + M.set(common_settings) + M.set({var_name:var}) + M.compute() + # + # get Cls + # + clM = M.lensed_cl(2500) + ll = clM['ell'][2:] + clTT = clM['tt'][2:] + clEE = clM['ee'][2:] + clPP = clM['pp'][2:] + # + # get P(k) for common k values + # + pkM = [] + for k in kvec: + pkM.append(M.pk(k,0.)) + # + # plot P(k) + # + ax_Pk.loglog(kvec,np.array(pkM),color=var_color,alpha=var_alpha,linestyle='-') + # + # plot C_l^TT + # + ax_TT.semilogx(ll,clTT*ll*(ll+1)/twopi,color=var_color,alpha=var_alpha,linestyle='-') + # + # plot Cl EE + # + ax_EE.loglog(ll,clEE*ll*(ll+1)/twopi,color=var_color,alpha=var_alpha,linestyle='-') + # + # plot Cl phiphi + # + ax_PP.loglog(ll,clPP*ll*(ll+1)*ll*(ll+1)/twopi,color=var_color,alpha=var_alpha,linestyle='-') + # + # reset CLASS + # + M.struct_cleanup() + M.empty() +# +# output of P(k) figure +# +ax_Pk.set_xlim([1.e-4,3.]) +ax_Pk.set_xlabel(r'$k \,\,\,\, [h/\mathrm{Mpc}]$') +ax_Pk.set_ylabel(r'$P(k) \,\,\,\, [\mathrm{Mpc}/h]^3$') +ax_Pk.legend(legarray) +fig_Pk.tight_layout() +fig_Pk.savefig('spectra_%s_Pk.pdf' % var_figname) +# +# output of C_l^TT figure +# +ax_TT.set_xlim([2,2500]) +ax_TT.set_xlabel(r'$\ell$') +ax_TT.set_ylabel(r'$[\ell(\ell+1)/2\pi] C_\ell^\mathrm{TT}$') +ax_TT.legend(legarray) +fig_TT.tight_layout() +fig_TT.savefig('spectra_%s_cltt.pdf' % var_figname) +# +# output of C_l^EE figure +# +ax_EE.set_xlim([2,2500]) +ax_EE.set_xlabel(r'$\ell$') +ax_EE.set_ylabel(r'$[\ell(\ell+1)/2\pi] C_\ell^\mathrm{EE}$') +ax_EE.legend(legarray) +fig_EE.tight_layout() +fig_EE.savefig('spectra_%s_clee.pdf' % var_figname) +# +# output of C_l^pp figure +# +ax_PP.set_xlim([10,2500]) +ax_PP.set_xlabel(r'$\ell$') +ax_PP.set_ylabel(r'$[\ell^2(\ell+1)^2/2\pi] C_\ell^\mathrm{\phi \phi}$') +ax_PP.legend(legarray) +fig_PP.tight_layout() +fig_PP.savefig('spectra_%s_clpp.pdf' % var_figname) + + +# In[ ]: + + + + +# In[ ]: diff --git a/class/scripts/warmup.py b/class/scripts/warmup.py new file mode 100644 index 00000000..aebe22cc --- /dev/null +++ b/class/scripts/warmup.py @@ -0,0 +1,93 @@ + +# coding: utf-8 + +# In[ ]: + +# import classy module +from classy import Class + + +# In[ ]: + +# create instance of the class "Class" +LambdaCDM = Class() +# pass input parameters +LambdaCDM.set({'omega_b':0.022032,'omega_cdm':0.12038,'h':0.67556,'A_s':2.215e-9,'n_s':0.9619,'tau_reio':0.0925}) +LambdaCDM.set({'output':'tCl,pCl,lCl,mPk','lensing':'yes','P_k_max_1/Mpc':3.0}) +# run class +LambdaCDM.compute() + + +# In[ ]: + +# get all C_l output +cls = LambdaCDM.lensed_cl(2500) +# To check the format of cls +cls.viewkeys() + + +# In[ ]: + +ll = cls['ell'][2:] +clTT = cls['tt'][2:] +clEE = cls['ee'][2:] +clPP = cls['pp'][2:] + + +# In[ ]: + +# uncomment to get plots displayed in notebook +#%matplotlib inline +import matplotlib.pyplot as plt +from math import pi + + +# In[ ]: + +# plot C_l^TT +plt.figure(1) +plt.xscale('log');plt.yscale('linear');plt.xlim(2,2500) +plt.xlabel(r'$\ell$') +plt.ylabel(r'$[\ell(\ell+1)/2\pi] C_\ell^\mathrm{TT}$') +plt.plot(ll,clTT*ll*(ll+1)/2./pi,'r-') + + +# In[ ]: + +plt.savefig('warmup_cltt.pdf') + + +# In[ ]: + +# get P(k) at redhsift z=0 +import numpy as np +kk = np.logspace(-4,np.log10(3),1000) # k in h/Mpc +Pk = [] # P(k) in (Mpc/h)**3 +h = LambdaCDM.h() # get reduced Hubble for conversions to 1/Mpc +for k in kk: + Pk.append(LambdaCDM.pk(k*h,0.)*h**3) # function .pk(k,z) + + +# In[ ]: + +# plot P(k) +plt.figure(2) +plt.xscale('log');plt.yscale('log');plt.xlim(kk[0],kk[-1]) +plt.xlabel(r'$k \,\,\,\, [h/\mathrm{Mpc}]$') +plt.ylabel(r'$P(k) \,\,\,\, [\mathrm{Mpc}/h]^3$') +plt.plot(kk,Pk,'b-') + + +# In[ ]: + +plt.savefig('warmup_pk.pdf') + + +# In[ ]: + +# optional: clear content of LambdaCDM (to reuse it for another model) +LambdaCDM.struct_cleanup() +# optional: reset parameters to default +LambdaCDM.empty() + +# In[ ]: diff --git a/class/source/.background.c.swp b/class/source/.background.c.swp new file mode 100644 index 00000000..349aec2c Binary files /dev/null and b/class/source/.background.c.swp differ diff --git a/class/source/.input.c.swo b/class/source/.input.c.swo new file mode 100644 index 00000000..93f3475d Binary files /dev/null and b/class/source/.input.c.swo differ diff --git a/class/source/.input.c.swp b/class/source/.input.c.swp new file mode 100644 index 00000000..a9f10659 Binary files /dev/null and b/class/source/.input.c.swp differ diff --git a/class/source/.nonlinear.c.swp b/class/source/.nonlinear.c.swp new file mode 100644 index 00000000..e63980ac Binary files /dev/null and b/class/source/.nonlinear.c.swp differ diff --git a/class/source/.perturbations.c.swp b/class/source/.perturbations.c.swp new file mode 100644 index 00000000..e45e9185 Binary files /dev/null and b/class/source/.perturbations.c.swp differ diff --git a/class/source/background.c b/class/source/background.c old mode 100644 new mode 100755 index 787c2742..b13c0646 --- a/class/source/background.c +++ b/class/source/background.c @@ -254,6 +254,8 @@ int background_functions( /* total density */ double rho_tot; + /* critical density */ + double rho_crit; /* total pressure */ double p_tot; /* total relativistic density */ @@ -266,15 +268,24 @@ int background_functions( double rho_ncdm,p_ncdm,pseudo_p_ncdm; /* index for n_ncdm species */ int n_ncdm; + /* fluid's time-dependent equation of state parameter */ + double w_fld, dw_over_da, integral_fld; /* scale factor */ double a; /* scalar field quantities */ double phi, phi_prime; + /* Since we only know a_prime_over_a after we have rho_tot, + it is not possible to simply sum up p_tot_prime directly. + Instead we sum up dp_dloga = p_prime/a_prime_over_a. The formula is + p_prime = a_prime_over_a * dp_dloga = a_prime_over_a * Sum [ (w_prime/a_prime_over_a -3(1+w)w)rho]. + Note: The scalar field contribution must be added in the end, as an exception!*/ + double dp_dloga; /** - initialize local variables */ a = pvecback_B[pba->index_bi_a]; rho_tot = 0.; p_tot = 0.; + dp_dloga = 0.; rho_r=0.; rho_m=0.; a_rel = a / pba->a_today; @@ -292,6 +303,7 @@ int background_functions( pvecback[pba->index_bg_rho_g] = pba->Omega0_g * pow(pba->H0,2) / pow(a_rel,4); rho_tot += pvecback[pba->index_bg_rho_g]; p_tot += (1./3.) * pvecback[pba->index_bg_rho_g]; + dp_dloga += -(4./3.) * pvecback[pba->index_bg_rho_g]; rho_r += pvecback[pba->index_bg_rho_g]; /* baryons */ @@ -323,6 +335,7 @@ int background_functions( pvecback[pba->index_bg_rho_dr] = pvecback_B[pba->index_bi_rho_dr]; rho_tot += pvecback[pba->index_bg_rho_dr]; p_tot += (1./3.)*pvecback[pba->index_bg_rho_dr]; + dp_dloga += -(4./3.) * pvecback[pba->index_bg_rho_dr]; rho_r += pvecback[pba->index_bg_rho_dr]; } @@ -339,6 +352,7 @@ int background_functions( pvecback[pba->index_bg_p_scf] =(phi_prime*phi_prime/(2*a*a) - V_scf(pba,phi))/3.; // pressure of the scalar field rho_tot += pvecback[pba->index_bg_rho_scf]; p_tot += pvecback[pba->index_bg_p_scf]; + dp_dloga += 0.0; /** <-- This depends on a_prime_over_a, so we cannot add it now! */ //divide relativistic & nonrelativistic (not very meaningful for oscillatory models) rho_r += 3.*pvecback[pba->index_bg_p_scf]; //field pressure contributes radiation rho_m += pvecback[pba->index_bg_rho_scf] - 3.* pvecback[pba->index_bg_p_scf]; //the rest contributes matter @@ -373,6 +387,8 @@ int background_functions( pvecback[pba->index_bg_p_ncdm1+n_ncdm] = p_ncdm; p_tot += p_ncdm; pvecback[pba->index_bg_pseudo_p_ncdm1+n_ncdm] = pseudo_p_ncdm; + /** See e.g. Eq. A6 in 1811.00904. */ + dp_dloga += (pseudo_p_ncdm - 5*p_ncdm); /* (3 p_ncdm1) is the "relativistic" contribution to rho_ncdm1 */ rho_r += 3.* p_ncdm; @@ -390,13 +406,23 @@ int background_functions( p_tot -= pvecback[pba->index_bg_rho_lambda]; } - /* fluid with w=w0+wa(1-a/a0) and constant cs2 */ + /* fluid with w(a) and constant cs2 */ if (pba->has_fld == _TRUE_) { - pvecback[pba->index_bg_rho_fld] = pba->Omega0_fld * pow(pba->H0,2) - / pow(a_rel,3.*(1.+pba->w0_fld+pba->wa_fld)) - * exp(3.*pba->wa_fld*(a_rel-1.)); + + /* get rho_fld from vector of integrated variables */ + pvecback[pba->index_bg_rho_fld] = pvecback_B[pba->index_bi_rho_fld]; + + /* get w_fld from dedicated function */ + class_call(background_w_fld(pba,a,&w_fld,&dw_over_da,&integral_fld), pba->error_message, pba->error_message); + pvecback[pba->index_bg_w_fld] = w_fld; + + // Obsolete: at the beginning, we had here the analytic integral solution corresponding to the case w=w0+w1(1-a/a0): + // pvecback[pba->index_bg_rho_fld] = pba->Omega0_fld * pow(pba->H0,2) / pow(a_rel,3.*(1.+pba->w0_fld+pba->wa_fld)) * exp(3.*pba->wa_fld*(a_rel-1.)); + // But now everthing is integrated numerically for a given w_fld(a) defined in the function background_w_fld. + rho_tot += pvecback[pba->index_bg_rho_fld]; - p_tot += (pba->w0_fld+pba->wa_fld*(1.-a_rel)) * pvecback[pba->index_bg_rho_fld]; + p_tot += w_fld * pvecback[pba->index_bg_rho_fld]; + dp_dloga += (a*dw_over_da-3*(1+w_fld)*w_fld)*pvecback[pba->index_bg_rho_fld]; } /* relativistic neutrinos (and all relativistic relics) */ @@ -404,9 +430,26 @@ int background_functions( pvecback[pba->index_bg_rho_ur] = pba->Omega0_ur * pow(pba->H0,2) / pow(a_rel,4); rho_tot += pvecback[pba->index_bg_rho_ur]; p_tot += (1./3.) * pvecback[pba->index_bg_rho_ur]; + dp_dloga += -(4./3.) * pvecback[pba->index_bg_rho_ur]; rho_r += pvecback[pba->index_bg_rho_ur]; } + /* interacting dark matter */ + if (pba->has_idm_dr == _TRUE_) { + pvecback[pba->index_bg_rho_idm_dr] = pba->Omega0_idm_dr * pow(pba->H0,2) / pow(a_rel,3); + rho_tot += pvecback[pba->index_bg_rho_idm_dr]; + p_tot += 0.; + rho_m += pvecback[pba->index_bg_rho_idm_dr]; + } + + /* interacting dark radiation */ + if (pba->has_idr == _TRUE_) { + pvecback[pba->index_bg_rho_idr] = pba->Omega0_idr * pow(pba->H0,2) / pow(a_rel,4); + rho_tot += pvecback[pba->index_bg_rho_idr]; + p_tot += (1./3.) * pvecback[pba->index_bg_rho_idr]; + rho_r += pvecback[pba->index_bg_rho_idr]; + } + /** - compute expansion rate H from Friedmann equation: this is the only place where the Friedmann equation is assumed. Remember that densities are all expressed in units of \f$ [3c^2/8\pi G] \f$, ie @@ -416,20 +459,38 @@ int background_functions( /** - compute derivative of H with respect to conformal time */ pvecback[pba->index_bg_H_prime] = - (3./2.) * (rho_tot + p_tot) * a + pba->K/a; + /* Total energy density*/ + pvecback[pba->index_bg_rho_tot] = rho_tot; + + /* Total pressure */ + pvecback[pba->index_bg_p_tot] = p_tot; + + /* Derivative of total pressure w.r.t. conformal time */ + pvecback[pba->index_bg_p_tot_prime] = a*pvecback[pba->index_bg_H]*dp_dloga; + if (pba->has_scf == _TRUE_){ + /** The contribution of scf was not added to dp_dloga, add p_scf_prime here: */ + pvecback[pba->index_bg_p_prime_scf] = pvecback[pba->index_bg_phi_prime_scf]* + (-pvecback[pba->index_bg_phi_prime_scf]*pvecback[pba->index_bg_H]/a-2./3.*pvecback[pba->index_bg_dV_scf]); + pvecback[pba->index_bg_p_tot_prime] += pvecback[pba->index_bg_p_prime_scf]; + } + + /** - compute critical density */ + rho_crit = rho_tot-pba->K/a/a; + class_test(rho_crit <= 0., + pba->error_message, + "rho_crit = %e instead of strictly positive",rho_crit); + /** - compute relativistic density to total density ratio */ - pvecback[pba->index_bg_Omega_r] = rho_r / rho_tot; + pvecback[pba->index_bg_Omega_r] = rho_r / rho_crit; /** - compute other quantities in the exhaustive, redundant format */ if (return_format == pba->long_info) { - /** - compute critical density */ - pvecback[pba->index_bg_rho_crit] = rho_tot-pba->K/a/a; - class_test(pvecback[pba->index_bg_rho_crit] <= 0., - pba->error_message, - "rho_crit = %e instead of strictly positive",pvecback[pba->index_bg_rho_crit]); + /** - store critical density */ + pvecback[pba->index_bg_rho_crit] = rho_crit; /** - compute Omega_m */ - pvecback[pba->index_bg_Omega_m] = rho_m / rho_tot; + pvecback[pba->index_bg_Omega_m] = rho_m / rho_crit; /* one can put other variables here */ /* */ @@ -441,6 +502,108 @@ int background_functions( } +/** + * Single place where the fluid equation of state is + * defined. Parameters of the function are passed through the + * background structure. Generalisation to arbitrary functions should + * be simple. + * + * @param pba Input: pointer to background structure + * @param a Input: current value of scale factor + * @param w_fld Output: equation of state parameter w_fld(a) + * @param dw_over_da_fld Output: function dw_fld/da + * @param integral_fld Output: function \f$ \int_{a}^{a_0} da 3(1+w_{fld})/a \f$ + * @return the error status + */ + +int background_w_fld( + struct background * pba, + double a, + double * w_fld, + double * dw_over_da_fld, + double * integral_fld) { + + double Omega_ede = 0.; + double dOmega_ede_over_da = 0.; + double d2Omega_ede_over_da2 = 0.; + double a_eq, Omega_r, Omega_m; + + /** - first, define the function w(a) */ + switch (pba->fluid_equation_of_state) { + case CLP: + *w_fld = pba->w0_fld + pba->wa_fld * (1. - a / pba->a_today); + break; + case EDE: + // Omega_ede(a) taken from eq. (10) in 1706.00730 + Omega_ede = (pba->Omega0_fld - pba->Omega_EDE*(1.-pow(a,-3.*pba->w0_fld))) + /(pba->Omega0_fld+(1.-pba->Omega0_fld)*pow(a,3.*pba->w0_fld)) + + pba->Omega_EDE*(1.-pow(a,-3.*pba->w0_fld)); + + // d Omega_ede / d a taken analytically from the above + dOmega_ede_over_da = - pba->Omega_EDE* 3.*pba->w0_fld*pow(a,-3.*pba->w0_fld-1.)/(pba->Omega0_fld+(1.-pba->Omega0_fld)*pow(a,3.*pba->w0_fld)) + - (pba->Omega0_fld - pba->Omega_EDE*(1.-pow(a,-3.*pba->w0_fld)))*(1.-pba->Omega0_fld)*3.*pba->w0_fld*pow(a,3.*pba->w0_fld-1.)/pow(pba->Omega0_fld+(1.-pba->Omega0_fld)*pow(a,3.*pba->w0_fld),2) + + pba->Omega_EDE*3.*pba->w0_fld*pow(a,-3.*pba->w0_fld-1.); + + // find a_equality (needed because EDE tracks first radiation, then matter) + Omega_r = pba->Omega0_g * (1. + 3.046 * 7./8.*pow(4./11.,4./3.)); // assumes LambdaCDM + eventually massive neutrinos so light that they are relativistic at equality; needs to be generalised later on. + Omega_m = pba->Omega0_b; + if (pba->has_cdm == _TRUE_) Omega_m += pba->Omega0_cdm; + if (pba->has_idm_dr == _TRUE_) Omega_m += pba->Omega0_idm_dr; + if (pba->has_dcdm == _TRUE_) + class_stop(pba->error_message,"Early Dark Energy not compatible with decaying Dark Matter because we omitted to code the calculation of a_eq in that case, but it would not be difficult to add it if necessary, should be a matter of 5 minutes"); + a_eq = Omega_r/Omega_m; // assumes a flat universe with a=1 today + + // w_ede(a) taken from eq. (11) in 1706.00730 + *w_fld = - dOmega_ede_over_da*a/Omega_ede/3./(1.-Omega_ede)+a_eq/3./(a+a_eq); + break; + } + + + /** - then, give the corresponding analytic derivative dw/da (used + by perturbation equations; we could compute it numerically, + but with a loss of precision; as long as there is a simple + analytic expression of the derivative of the previous + function, let's use it! */ + switch (pba->fluid_equation_of_state) { + case CLP: + *dw_over_da_fld = - pba->wa_fld / pba->a_today; + break; + case EDE: + d2Omega_ede_over_da2 = 0.; + *dw_over_da_fld = - d2Omega_ede_over_da2*a/3./(1.-Omega_ede)/Omega_ede + - dOmega_ede_over_da/3./(1.-Omega_ede)/Omega_ede + + dOmega_ede_over_da*dOmega_ede_over_da*a/3./(1.-Omega_ede)/(1.-Omega_ede)/Omega_ede + + a_eq/3./(a+a_eq)/(a+a_eq); + break; + } + + /** - finally, give the analytic solution of the following integral: + \f$ \int_{a}^{a0} da 3(1+w_{fld})/a \f$. This is used in only + one place, in the initial conditions for the background, and + with a=a_ini. If your w(a) does not lead to a simple analytic + solution of this integral, no worry: instead of writing + something here, the best would then be to leave it equal to + zero, and then in background_initial_conditions() you should + implement a numerical calculation of this integral only for + a=a_ini, using for instance Romberg integration. It should be + fast, simple, and accurate enough. */ + switch (pba->fluid_equation_of_state) { + case CLP: + *integral_fld = 3.*((1.+pba->w0_fld+pba->wa_fld)*log(pba->a_today/a) + pba->wa_fld*(a/pba->a_today-1.)); + break; + case EDE: + class_stop(pba->error_message,"EDE implementation not finished: to finish it, read the comments in background.c just before this line\n"); + break; + } + + /** note: of course you can generalise these formulas to anything, + defining new parameters pba->w..._fld. Just remember that so + far, HyRec explicitely assumes that w(a)= w0 + wa (1-a/a0); but + Recfast does not assume anything */ + + return _SUCCESS_; +} + /** * Initialize the background structure, and in particular the * background interpolation table. @@ -460,7 +623,8 @@ int background_init( /** - define local variables */ int n_ncdm; double rho_ncdm_rel,rho_nu_rel; - double Neff; + double Neff, N_dark; + double w_fld, dw_over_da, integral_fld; int filenum=0; /** - in verbose mode, provide some information */ @@ -468,96 +632,89 @@ int background_init( printf("Running CLASS version %s\n",_VERSION_); printf("Computing background\n"); - /* below we want to inform the user about ncdm species*/ - if (pba->N_ncdm > 0) { + /* below we want to inform the user about ncdm species and/or the total N_eff */ + if ((pba->N_ncdm > 0) || (pba->Omega0_idr != 0.)) { + /* contribution of ultra-relativistic species _ur to N_eff */ Neff = pba->Omega0_ur/7.*8./pow(4./11.,4./3.)/pba->Omega0_g; - /* loop over ncdm species */ - for (n_ncdm=0;n_ncdmN_ncdm; n_ncdm++) { - - /* inform if p-s-d read in files */ - if (pba->got_files[n_ncdm] == _TRUE_) { - printf(" -> ncdm species i=%d read from file %s\n",n_ncdm+1,pba->ncdm_psd_files+filenum*_ARGUMENT_LENGTH_MAX_); - filenum++; + /* contribution of ncdm species to N_eff*/ + if (pba->N_ncdm > 0){ + /* loop over ncdm species */ + for (n_ncdm=0;n_ncdmN_ncdm; n_ncdm++) { + + /* inform if p-s-d read in files */ + if (pba->got_files[n_ncdm] == _TRUE_) { + printf(" -> ncdm species i=%d read from file %s\n",n_ncdm+1,pba->ncdm_psd_files+filenum*_ARGUMENT_LENGTH_MAX_); + filenum++; + } + + /* call this function to get rho_ncdm */ + background_ncdm_momenta(pba->q_ncdm_bg[n_ncdm], + pba->w_ncdm_bg[n_ncdm], + pba->q_size_ncdm_bg[n_ncdm], + 0., + pba->factor_ncdm[n_ncdm], + 0., + NULL, + &rho_ncdm_rel, + NULL, + NULL, + NULL); + + /* inform user of the contribution of each species to + radiation density (in relativistic limit): should be + between 1.01 and 1.02 for each active neutrino species; + evaluated as rho_ncdm/rho_nu_rel where rho_nu_rel is the + density of one neutrino in the instantaneous decoupling + limit, i.e. assuming T_nu=(4/11)^1/3 T_gamma (this comes + from the definition of N_eff) */ + rho_nu_rel = 56.0/45.0*pow(_PI_,6)*pow(4.0/11.0,4.0/3.0)*_G_/pow(_h_P_,3)/pow(_c_,7)* + pow(_Mpc_over_m_,2)*pow(pba->T_cmb*_k_B_,4); + + printf(" -> ncdm species i=%d sampled with %d (resp. %d) points for purpose of background (resp. perturbation) integration. In the relativistic limit it gives Delta N_eff = %g\n", + n_ncdm+1, + pba->q_size_ncdm_bg[n_ncdm], + pba->q_size_ncdm[n_ncdm], + rho_ncdm_rel/rho_nu_rel); + + Neff += rho_ncdm_rel/rho_nu_rel; } + } - /* call this function to get rho_ncdm */ - background_ncdm_momenta(pba->q_ncdm_bg[n_ncdm], - pba->w_ncdm_bg[n_ncdm], - pba->q_size_ncdm_bg[n_ncdm], - 0., - pba->factor_ncdm[n_ncdm], - 0., - NULL, - &rho_ncdm_rel, - NULL, - NULL, - NULL); - - /* inform user of the contribution of each species to - radiation density (in relativistic limit): should be - between 1.01 and 1.02 for each active neutrino species; - evaluated as rho_ncdm/rho_nu_rel where rho_nu_rel is the - density of one neutrino in the instantaneous decoupling - limit, i.e. assuming T_nu=(4/11)^1/3 T_gamma (this comes - from the definition of N_eff) */ - rho_nu_rel = 56.0/45.0*pow(_PI_,6)*pow(4.0/11.0,4.0/3.0)*_G_/pow(_h_P_,3)/pow(_c_,7)* - pow(_Mpc_over_m_,2)*pow(pba->T_cmb*_k_B_,4); - - printf(" -> ncdm species i=%d sampled with %d (resp. %d) points for purpose of background (resp. perturbation) integration. In the relativistic limit it gives Delta N_eff = %g\n", - n_ncdm+1, - pba->q_size_ncdm_bg[n_ncdm], - pba->q_size_ncdm[n_ncdm], - rho_ncdm_rel/rho_nu_rel); - - Neff += rho_ncdm_rel/rho_nu_rel; - + /* contribution of interacting dark radiation _idr to N_eff */ + if (pba->Omega0_idr != 0.) { + N_dark = pba->Omega0_idr/7.*8./pow(4./11.,4./3.)/pba->Omega0_g; + Neff += N_dark; + printf(" -> dark radiation Delta Neff %e\n",N_dark); } - printf(" -> total N_eff = %g (sumed over ultra-relativistic and ncdm species)\n",Neff); + printf(" -> total N_eff = %g (sumed over ultra-relativistic species, ncdm and dark radiation)\n",Neff); } } /** - if shooting failed during input, catch the error here */ - class_test(pba->shooting_failed == _TRUE_, - pba->error_message, - "Shooting failed, try optimising input_get_guess(). Error message:\n\n%s", - pba->shooting_error); + class_test_except(pba->shooting_failed == _TRUE_, + pba->error_message, + background_free_input(pba), + "Shooting failed, try optimising input_get_guess(). Error message:\n\n%s", + pba->shooting_error); /** - assign values to all indices in vectors of background quantities with background_indices()*/ class_call(background_indices(pba), pba->error_message, pba->error_message); - /** - control that cosmological parameter values make sense */ - - /* H0 in Mpc^{-1} */ - class_test((pba->H0 < _H0_SMALL_)||(pba->H0 > _H0_BIG_), - pba->error_message, - "H0=%g out of bounds (%gH0,_H0_SMALL_,_H0_BIG_); - - class_test(fabs(pba->h * 1.e5 / _c_ / pba->H0 -1.)>ppr->smallest_allowed_variation, - pba->error_message, - "inconsistency between Hubble and reduced Hubble parameters: you have H0=%f/Mpc=%fkm/s/Mpc, but h=%f",pba->H0,pba->H0/1.e5* _c_,pba->h); - - /* T_cmb in K */ - class_test((pba->T_cmb < _TCMB_SMALL_)||(pba->T_cmb > _TCMB_BIG_), - pba->error_message, - "T_cmb=%g out of bounds (%gT_cmb,_TCMB_SMALL_,_TCMB_BIG_); - - /* H0 in Mpc^{-1} */ - class_test((pba->Omega0_k < _OMEGAK_SMALL_)||(pba->Omega0_k > _OMEGAK_BIG_), - pba->error_message, - "Omegak = %g out of bounds (%gOmega0_k,_OMEGAK_SMALL_,_OMEGAK_BIG_); - /* fluid equation of state */ if (pba->has_fld == _TRUE_) { - class_test(pba->w0_fld+pba->wa_fld>=1./3., + + class_call(background_w_fld(pba,0.,&w_fld,&dw_over_da,&integral_fld), pba->error_message, pba->error_message); + + class_test(w_fld >= 1./3., pba->error_message, - "Your choice for w0_fld+wa_fld=%g is suspicious, there would not be radiation domination at early times\n", - pba->w0_fld+pba->wa_fld); + "Your choice for w(a--->0)=%g is suspicious, since it is bigger than -1/3 there cannot be radiation domination at early times\n", + w_fld); } /* in verbose mode, inform the user about the value of the ncdm @@ -587,6 +744,15 @@ int background_init( pba->error_message, pba->error_message); + /** - this function finds and stores a few derived parameters at radiation-matter equality */ + class_call(background_find_equality(ppr,pba), + pba->error_message, + pba->error_message); + + class_call(background_output_budget(pba), + pba->error_message, + pba->error_message); + return _SUCCESS_; } @@ -602,7 +768,28 @@ int background_init( int background_free( struct background *pba ) { - int err; + + class_call(background_free_noinput(pba), + pba->error_message, + pba->error_message); + + class_call(background_free_input(pba), + pba->error_message, + pba->error_message); + + return _SUCCESS_; +} + +/** + * Free only the memory space NOT allocated through input_read_parameters() + * + * @param pba Input: pointer to background structure (to be freed) + * @return the error status + */ + +int background_free_noinput( + struct background *pba + ) { free(pba->tau_table); free(pba->z_table); @@ -610,11 +797,8 @@ int background_free( free(pba->background_table); free(pba->d2background_dtau2_table); - err = background_free_input(pba); - - return err; + return _SUCCESS_; } - /** * Free pointers inside background structure which were * allocated in input_read_parameters() @@ -628,6 +812,7 @@ int background_free_input( ) { int k; + if (pba->Omega0_ncdm_tot != 0.){ for(k=0; kN_ncdm; k++){ free(pba->q_ncdm[k]); @@ -636,7 +821,9 @@ int background_free_input( free(pba->w_ncdm_bg[k]); free(pba->dlnf0_dlnq_ncdm[k]); } - + free(pba->ncdm_quadrature_strategy); + free(pba->ncdm_input_q_size); + free(pba->ncdm_qmax); free(pba->q_ncdm); free(pba->w_ncdm); free(pba->q_ncdm_bg); @@ -696,6 +883,8 @@ int background_indices( pba->has_lambda = _FALSE_; pba->has_fld = _FALSE_; pba->has_ur = _FALSE_; + pba->has_idr = _FALSE_; + pba->has_idm_dr = _FALSE_; pba->has_curvature = _FALSE_; if (pba->Omega0_cdm != 0.) @@ -722,6 +911,12 @@ int background_indices( if (pba->Omega0_ur != 0.) pba->has_ur = _TRUE_; + if (pba->Omega0_idr != 0.) + pba->has_idr = _TRUE_; + + if (pba->Omega0_idm_dr != 0.) + pba->has_idm_dr = _TRUE_; + if (pba->sgnK != 0) pba->has_curvature = _TRUE_; @@ -769,19 +964,36 @@ int background_indices( class_define_index(pba->index_bg_ddV_scf,pba->has_scf,index_bg,1); class_define_index(pba->index_bg_rho_scf,pba->has_scf,index_bg,1); class_define_index(pba->index_bg_p_scf,pba->has_scf,index_bg,1); + class_define_index(pba->index_bg_p_prime_scf,pba->has_scf,index_bg,1); /* - index for Lambda */ class_define_index(pba->index_bg_rho_lambda,pba->has_lambda,index_bg,1); /* - index for fluid */ class_define_index(pba->index_bg_rho_fld,pba->has_fld,index_bg,1); + class_define_index(pba->index_bg_w_fld,pba->has_fld,index_bg,1); /* - index for ultra-relativistic neutrinos/species */ class_define_index(pba->index_bg_rho_ur,pba->has_ur,index_bg,1); + /* - index for total density */ + class_define_index(pba->index_bg_rho_tot,_TRUE_,index_bg,1); + + /* - index for total pressure */ + class_define_index(pba->index_bg_p_tot,_TRUE_,index_bg,1); + + /* - index for derivative of total pressure */ + class_define_index(pba->index_bg_p_tot_prime,_TRUE_,index_bg,1); + /* - index for Omega_r (relativistic density fraction) */ class_define_index(pba->index_bg_Omega_r,_TRUE_,index_bg,1); + /* - index interacting for dark radiation */ + class_define_index(pba->index_bg_rho_idr,pba->has_idr,index_bg,1); + + /* - index for interacting dark matter */ + class_define_index(pba->index_bg_rho_idm_dr,pba->has_idm_dr,index_bg,1); + /* - put here additional ingredients that you want to appear in the normal vector */ /* */ @@ -840,6 +1052,9 @@ int background_indices( /* -> energy density in DR */ class_define_index(pba->index_bi_rho_dr,pba->has_dr,index_bi,1); + /* -> energy density in fluid */ + class_define_index(pba->index_bi_rho_fld,pba->has_fld,index_bi,1); + /* -> scalar field and its derivative wrt conformal time (Zuma) */ class_define_index(pba->index_bi_phi_scf,pba->has_scf,index_bi,1); class_define_index(pba->index_bi_phi_prime_scf,pba->has_scf,index_bi,1); @@ -853,8 +1068,9 @@ int background_indices( /* -> sound horizon */ class_define_index(pba->index_bi_rs,_TRUE_,index_bi,1); - /* -> integral for growth factor */ - class_define_index(pba->index_bi_growth,_TRUE_,index_bi,1); + /* -> Second order equation for growth factor */ + class_define_index(pba->index_bi_D,_TRUE_,index_bi,1); + class_define_index(pba->index_bi_D_prime,_TRUE_,index_bi,1); /* -> index for conformal time in vector of variables to integrate */ class_define_index(pba->index_bi_tau,_TRUE_,index_bi,1); @@ -955,7 +1171,7 @@ int background_ncdm_distribution( /** Next enter your analytic expression(s) for the p.s.d.'s. If you need different p.s.d.'s for different species, put each - p.s.d inside a condition, like for instance: if (n_ncdm==2) + p.s.d inside a condition, like for instance: if (n_ncdm==2) {*f0=...}. Remember that n_ncdm = 0 refers to the first species. */ @@ -1117,59 +1333,93 @@ int background_ncdm_init( } /* Handle perturbation qsampling: */ - class_alloc(pba->q_ncdm[k],_QUADRATURE_MAX_*sizeof(double),pba->error_message); - class_alloc(pba->w_ncdm[k],_QUADRATURE_MAX_*sizeof(double),pba->error_message); - - class_call(get_qsampling(pba->q_ncdm[k], - pba->w_ncdm[k], - &(pba->q_size_ncdm[k]), - _QUADRATURE_MAX_, - ppr->tol_ncdm, - pbadist.q, - pbadist.tablesize, - background_ncdm_test_function, - background_ncdm_distribution, - &pbadist, - pba->error_message), - pba->error_message, - pba->error_message); - pba->q_ncdm[k]=realloc(pba->q_ncdm[k],pba->q_size_ncdm[k]*sizeof(double)); - pba->w_ncdm[k]=realloc(pba->w_ncdm[k],pba->q_size_ncdm[k]*sizeof(double)); - - - if (pba->background_verbose > 0) - printf("ncdm species i=%d sampled with %d points for purpose of perturbation integration\n", - k+1, - pba->q_size_ncdm[k]); - - /* Handle background q_sampling: */ - class_alloc(pba->q_ncdm_bg[k],_QUADRATURE_MAX_BG_*sizeof(double),pba->error_message); - class_alloc(pba->w_ncdm_bg[k],_QUADRATURE_MAX_BG_*sizeof(double),pba->error_message); - - class_call(get_qsampling(pba->q_ncdm_bg[k], - pba->w_ncdm_bg[k], - &(pba->q_size_ncdm_bg[k]), - _QUADRATURE_MAX_BG_, - ppr->tol_ncdm_bg, - pbadist.q, - pbadist.tablesize, - background_ncdm_test_function, - background_ncdm_distribution, - &pbadist, - pba->error_message), - pba->error_message, - pba->error_message); + if (pba->ncdm_quadrature_strategy[k]==qm_auto){ + /** Automatic q-sampling for this species */ + class_alloc(pba->q_ncdm[k],_QUADRATURE_MAX_*sizeof(double),pba->error_message); + class_alloc(pba->w_ncdm[k],_QUADRATURE_MAX_*sizeof(double),pba->error_message); + + class_call(get_qsampling(pba->q_ncdm[k], + pba->w_ncdm[k], + &(pba->q_size_ncdm[k]), + _QUADRATURE_MAX_, + ppr->tol_ncdm, + pbadist.q, + pbadist.tablesize, + background_ncdm_test_function, + background_ncdm_distribution, + &pbadist, + pba->error_message), + pba->error_message, + pba->error_message); + pba->q_ncdm[k]=realloc(pba->q_ncdm[k],pba->q_size_ncdm[k]*sizeof(double)); + pba->w_ncdm[k]=realloc(pba->w_ncdm[k],pba->q_size_ncdm[k]*sizeof(double)); + + + if (pba->background_verbose > 0) + printf("ncdm species i=%d sampled with %d points for purpose of perturbation integration\n", + k+1, + pba->q_size_ncdm[k]); + + /* Handle background q_sampling: */ + class_alloc(pba->q_ncdm_bg[k],_QUADRATURE_MAX_BG_*sizeof(double),pba->error_message); + class_alloc(pba->w_ncdm_bg[k],_QUADRATURE_MAX_BG_*sizeof(double),pba->error_message); + + class_call(get_qsampling(pba->q_ncdm_bg[k], + pba->w_ncdm_bg[k], + &(pba->q_size_ncdm_bg[k]), + _QUADRATURE_MAX_BG_, + ppr->tol_ncdm_bg, + pbadist.q, + pbadist.tablesize, + background_ncdm_test_function, + background_ncdm_distribution, + &pbadist, + pba->error_message), + pba->error_message, + pba->error_message); - pba->q_ncdm_bg[k]=realloc(pba->q_ncdm_bg[k],pba->q_size_ncdm_bg[k]*sizeof(double)); - pba->w_ncdm_bg[k]=realloc(pba->w_ncdm_bg[k],pba->q_size_ncdm_bg[k]*sizeof(double)); + pba->q_ncdm_bg[k]=realloc(pba->q_ncdm_bg[k],pba->q_size_ncdm_bg[k]*sizeof(double)); + pba->w_ncdm_bg[k]=realloc(pba->w_ncdm_bg[k],pba->q_size_ncdm_bg[k]*sizeof(double)); - /** - in verbose mode, inform user of number of sampled momenta - for background quantities */ - if (pba->background_verbose > 0) - printf("ncdm species i=%d sampled with %d points for purpose of background integration\n", - k+1, - pba->q_size_ncdm_bg[k]); + /** - in verbose mode, inform user of number of sampled momenta + for background quantities */ + if (pba->background_verbose > 0) + printf("ncdm species i=%d sampled with %d points for purpose of background integration\n", + k+1, + pba->q_size_ncdm_bg[k]); + } + else{ + /** Manual q-sampling for this species. Same sampling used for both perturbation and background sampling, since this will usually be a high precision setting anyway */ + pba->q_size_ncdm_bg[k] = pba->ncdm_input_q_size[k]; + pba->q_size_ncdm[k] = pba->ncdm_input_q_size[k]; + class_alloc(pba->q_ncdm_bg[k],pba->q_size_ncdm_bg[k]*sizeof(double),pba->error_message); + class_alloc(pba->w_ncdm_bg[k],pba->q_size_ncdm_bg[k]*sizeof(double),pba->error_message); + class_alloc(pba->q_ncdm[k],pba->q_size_ncdm[k]*sizeof(double),pba->error_message); + class_alloc(pba->w_ncdm[k],pba->q_size_ncdm[k]*sizeof(double),pba->error_message); + class_call(get_qsampling_manual(pba->q_ncdm[k], + pba->w_ncdm[k], + pba->q_size_ncdm[k], + pba->ncdm_qmax[k], + pba->ncdm_quadrature_strategy[k], + pbadist.q, + pbadist.tablesize, + background_ncdm_distribution, + &pbadist, + pba->error_message), + pba->error_message, + pba->error_message); + for (index_q=0; index_qq_size_ncdm[k]; index_q++) { + pba->q_ncdm_bg[k][index_q] = pba->q_ncdm[k][index_q]; + pba->w_ncdm_bg[k][index_q] = pba->w_ncdm[k][index_q]; + } + /** - in verbose mode, inform user of number of sampled momenta + for background quantities */ + if (pba->background_verbose > 0) + printf("ncdm species i=%d sampled with %d points for purpose of background andperturbation integration using the manual method\n", + k+1, + pba->q_size_ncdm[k]); + } class_alloc(pba->dlnf0_dlnq_ncdm[k], pba->q_size_ncdm[k]*sizeof(double), @@ -1271,7 +1521,7 @@ int background_ncdm_momenta( double q2; double factor2; /** Summary: */ - + /** - rescale normalization at given redshift */ factor2 = factor*pow(1+z,4); @@ -1300,7 +1550,7 @@ int background_ncdm_momenta( } /** - adjust normalization */ - if (n!=NULL) *n *= factor2*(1.+z); + if (n!=NULL) *n *= factor2/(1.+z); if (rho!=NULL) *rho *= factor2; if (p!=NULL) *p *= factor2; if (drho_dM!=NULL) *drho_dM *= factor2; @@ -1549,7 +1799,6 @@ int background_solve( pba->Omega0_dr = pvecback_integration[pba->index_bi_rho_dr]/pba->H0/pba->H0; } - /** - allocate background tables */ class_alloc(pba->tau_table,pba->bt_size * sizeof(double),pba->error_message); @@ -1593,11 +1842,10 @@ int background_solve( /* -> compute growth functions (valid in dust universe) */ - /* D = H \int [da/(aH)^3] = H \int [dtau/(aH^2)] = H * growth */ - pvecback[pba->index_bg_D] = pvecback[pba->index_bg_H]*pData[i*pba->bi_size+pba->index_bi_growth]; - - /* f = [dlnD]/[dln a] = 1/(aH) [dlnD]/[dtau] = H'/(aH^2) + 1/(a^2 H^3 growth) */ - pvecback[pba->index_bg_f] = pvecback[pba->index_bg_H_prime]/pvecback[pba->index_bg_a]/pvecback[pba->index_bg_H]/pvecback[pba->index_bg_H] + 1./(pvecback[pba->index_bg_a]*pvecback[pba->index_bg_a]*pvecback[pba->index_bg_H]*pvecback[pba->index_bg_H]*pvecback[pba->index_bg_H]*pData[i*pba->bi_size+pba->index_bi_growth]); + /* Normalise D(z=0)=1 and construct f = D_prime/(aHD) */ + pvecback[pba->index_bg_D] = pData[i*pba->bi_size+pba->index_bi_D]/pData[(pba->bt_size-1)*pba->bi_size+pba->index_bi_D]; + pvecback[pba->index_bg_f] = pData[i*pba->bi_size+pba->index_bi_D_prime]/ + (pData[i*pba->bi_size+pba->index_bi_D]*pvecback[pba->index_bg_a]*pvecback[pba->index_bg_H]); /* -> write in the table */ memcopy_result = memcpy(pba->background_table + i*pba->bg_size,pvecback,pba->bg_size*sizeof(double)); @@ -1634,12 +1882,14 @@ int background_solve( pba->error_message, pba->error_message); - /** - compute remaining "related parameters" - * - so-called "effective neutrino number", computed at earliest + /** - compute remaining "related parameters" */ + + /** - so-called "effective neutrino number", computed at earliest time in interpolation table. This should be seen as a definition: Neff is the equivalent number of instantaneously-decoupled neutrinos accounting for the radiation density, beyond photons */ + pba->Neff = (pba->background_table[pba->index_bg_Omega_r] *pba->background_table[pba->index_bg_rho_crit] -pba->background_table[pba->index_bg_rho_g]) @@ -1652,6 +1902,7 @@ int background_solve( } if (pba->background_verbose > 2) { + printf(" -> pba->Neff = %f\n",pba->Neff); if ((pba->has_dcdm == _TRUE_)&&(pba->has_dr == _TRUE_)){ printf(" Decaying Cold Dark Matter details: (DCDM --> DR)\n"); printf(" -> Omega0_dcdm = %f\n",pba->Omega0_dcdm); @@ -1665,7 +1916,7 @@ int background_solve( printf(" -> Omega_scf = %g, wished %g\n", pvecback[pba->index_bg_rho_scf]/pvecback[pba->index_bg_rho_crit], pba->Omega0_scf); if(pba->has_lambda == _TRUE_) - printf(" -> Omega_Lambda = %g, wished %g\n", + printf(" -> Omega_Lambda = %g, wished %g\n", pvecback[pba->index_bg_rho_lambda]/pvecback[pba->index_bg_rho_crit], pba->Omega0_lambda); printf(" -> parameters: [lambda, alpha, A, B] = \n"); printf(" ["); @@ -1676,6 +1927,11 @@ int background_solve( } } + /** - total matter, radiation, dark energy today */ + pba->Omega0_m = pba->background_table[(pba->bt_size-1)*pba->bg_size+pba->index_bg_Omega_m]; + pba->Omega0_r = pba->background_table[(pba->bt_size-1)*pba->bg_size+pba->index_bg_Omega_r]; + pba->Omega0_de = 1. - (pba->Omega0_m + pba->Omega0_r + pba->Omega0_k); + free(pvecback); free(pvecback_integration); @@ -1711,13 +1967,15 @@ int background_initial_conditions( double f,Omega_rad, rho_rad; int counter,is_early_enough,n_ncdm; double scf_lambda; + double rho_fld_today; + double w_fld,dw_over_da_fld,integral_fld; /** - fix initial value of \f$ a \f$ */ a = ppr->a_ini_over_a_today_default * pba->a_today; /** If we have ncdm species, perhaps we need to start earlier - than the standard value for the species to be relativistic. - This could happen for some WDM models. + than the standard value for the species to be relativistic. + This could happen for some WDM models. */ if (pba->has_ncdm == _TRUE_) { @@ -1729,31 +1987,31 @@ int background_initial_conditions( for (n_ncdm=0; n_ncdmN_ncdm; n_ncdm++) { - class_call(background_ncdm_momenta(pba->q_ncdm_bg[n_ncdm], - pba->w_ncdm_bg[n_ncdm], - pba->q_size_ncdm_bg[n_ncdm], - pba->M_ncdm[n_ncdm], - pba->factor_ncdm[n_ncdm], - pba->a_today/a-1.0, - NULL, - &rho_ncdm, - &p_ncdm, - NULL, - NULL), + class_call(background_ncdm_momenta(pba->q_ncdm_bg[n_ncdm], + pba->w_ncdm_bg[n_ncdm], + pba->q_size_ncdm_bg[n_ncdm], + pba->M_ncdm[n_ncdm], + pba->factor_ncdm[n_ncdm], + pba->a_today/a-1.0, + NULL, + &rho_ncdm, + &p_ncdm, + NULL, + NULL), pba->error_message, pba->error_message); - rho_ncdm_rel_tot += 3.*p_ncdm; - if (fabs(p_ncdm/rho_ncdm-1./3.)>ppr->tol_ncdm_initial_w) - is_early_enough = _FALSE_; + rho_ncdm_rel_tot += 3.*p_ncdm; + if (fabs(p_ncdm/rho_ncdm-1./3.)>ppr->tol_ncdm_initial_w) + is_early_enough = _FALSE_; } if (is_early_enough == _TRUE_) - break; + break; else - a *= _SCALE_BACK_; + a *= _SCALE_BACK_; } class_test(counter == _MAX_IT_, - pba->error_message, - "Search for initial scale factor a such that all ncdm species are relativistic failed."); + pba->error_message, + "Search for initial scale factor a such that all ncdm species are relativistic failed."); } pvecback_integration[pba->index_bi_a] = a; @@ -1762,6 +2020,8 @@ int background_initial_conditions( Omega_rad = pba->Omega0_g; if (pba->has_ur == _TRUE_) Omega_rad += pba->Omega0_ur; + if (pba->has_idr == _TRUE_) + Omega_rad += pba->Omega0_idr; rho_rad = Omega_rad*pow(pba->H0,2)/pow(a/pba->a_today,4); if (pba->has_ncdm == _TRUE_){ /** - We must add the relativistic contribution from NCDM species */ @@ -1778,9 +2038,9 @@ int background_initial_conditions( if (pba->has_dr == _TRUE_){ if (pba->has_dcdm == _TRUE_){ /** - f is the critical density fraction of DR. The exact solution is: - * + * * `f = -Omega_rad+pow(pow(Omega_rad,3./2.)+0.5*pow(a/pba->a_today,6)*pvecback_integration[pba->index_bi_rho_dcdm]*pba->Gamma_dcdm/pow(pba->H0,3),2./3.);` - * + * * but it is not numerically stable for very small f which is always the case. * Instead we use the Taylor expansion of this equation, which is equivalent to * ignoring f(a) in the Hubble rate. @@ -1794,12 +2054,31 @@ int background_initial_conditions( } } + if (pba->has_fld == _TRUE_){ + + /* rho_fld today */ + rho_fld_today = pba->Omega0_fld * pow(pba->H0,2); + + /* integrate rho_fld(a) from a_ini to a_0, to get rho_fld(a_ini) given rho_fld(a0) */ + class_call(background_w_fld(pba,a,&w_fld,&dw_over_da_fld,&integral_fld), pba->error_message, pba->error_message); + + /* Note: for complicated w_fld(a) functions with no simple + analytic integral, this is the place were you should compute + numerically the simple 1d integral [int_{a_ini}^{a_0} 3 + [(1+w_fld)/a] da] (e.g. with the Romberg method?) instead of + calling background_w_fld */ + + /* rho_fld at initial time */ + pvecback_integration[pba->index_bi_rho_fld] = rho_fld_today * exp(integral_fld); + + } + /** - Fix initial value of \f$ \phi, \phi' \f$ * set directly in the radiation attractor => fixes the units in terms of rho_ur - * - * TODO: - * - There seems to be some small oscillation when it starts. - * - Check equations and signs. Sign of phi_prime? + * + * TODO: + * - There seems to be some small oscillation when it starts. + * - Check equations and signs. Sign of phi_prime? * - is rho_ur all there is early on? */ if(pba->has_scf == _TRUE_){ @@ -1810,8 +2089,8 @@ int background_initial_conditions( if (3.*pow(scf_lambda,2)-12. < 0){ /** - --> If there is no attractor solution for scf_lambda, assign some value. Otherwise would give a nan.*/ pvecback_integration[pba->index_bi_phi_scf] = 1./scf_lambda;//seems to the work - if (pba->background_verbose > 0) - printf(" No attractor IC for lambda = %.3e ! \n ",scf_lambda); + if (pba->background_verbose > 0) + printf(" No attractor IC for lambda = %.3e ! \n ",scf_lambda); } pvecback_integration[pba->index_bi_phi_prime_scf] = 2*pvecback_integration[pba->index_bi_a]* sqrt(V_scf(pba,pvecback_integration[pba->index_bi_phi_scf]))*pba->phi_prime_ini_scf; @@ -1832,15 +2111,15 @@ int background_initial_conditions( /* Infer pvecback from pvecback_integration */ class_call(background_functions(pba, pvecback_integration, pba->normal_info, pvecback), - pba->error_message, - pba->error_message); + pba->error_message, + pba->error_message); /* Just checking that our initial time indeed is deep enough in the radiation dominated regime */ class_test(fabs(pvecback[pba->index_bg_Omega_r]-1.) > ppr->tol_initial_Omega_r, - pba->error_message, - "Omega_r = %e, not close enough to 1. Decrease a_ini_over_a_today_default in order to start from radiation domination.", - pvecback[pba->index_bg_Omega_r]); + pba->error_message, + "Omega_r = %e, not close enough to 1. Decrease a_ini_over_a_today_default in order to start from radiation domination.", + pvecback[pba->index_bg_Omega_r]); /** - compute initial proper time, assuming radiation-dominated universe since Big Bang and therefore \f$ t=1/(2H) \f$ (good @@ -1860,18 +2139,94 @@ int background_initial_conditions( /** - compute initial sound horizon, assuming \f$ c_s=1/\sqrt{3} \f$ initially */ pvecback_integration[pba->index_bi_rs] = pvecback_integration[pba->index_bi_tau]/sqrt(3.); - /** - compute initial value of the integral over \f$ d\tau /(aH^2) \f$, - assumed to be proportional to \f$ a^4 \f$ during RD, but with arbitrary - normalization */ - pvecback_integration[pba->index_bi_growth] = 1./(4.*a*a*pvecback[pba->index_bg_H]*pvecback[pba->index_bg_H]*pvecback[pba->index_bg_H]); + /** - set initial value of D and D' in RD. D will be renormalised later, but D' must be correct. */ + pvecback_integration[pba->index_bi_D] = a; + pvecback_integration[pba->index_bi_D_prime] = 2*pvecback_integration[pba->index_bi_D]*pvecback[pba->index_bg_H]; return _SUCCESS_; } +/** + * Find the time of radiation/matter equality and store characteristic + * quantitites at that time in the background structure.. + * + * @param ppr Input: pointer to precision structure + * @param pba Input/Output: pointer to background structure + * @return the error status + */ + +int background_find_equality( + struct precision *ppr, + struct background *pba) { + + double Omega_m_over_Omega_r=0.; + int index_tau_minus = 0; + int index_tau_plus = pba->bt_size-1; + int index_tau_mid = 0; + double tau_minus,tau_plus,tau_mid=0.; + double * pvecback; + + /* first bracket the right tau value between two consecutive indices in the table */ + + while ((index_tau_plus - index_tau_minus) > 1) { + + index_tau_mid = (int)(0.5*(index_tau_plus+index_tau_minus)); + + Omega_m_over_Omega_r = pba->background_table[index_tau_mid*pba->bg_size+pba->index_bg_Omega_m] + /pba->background_table[index_tau_mid*pba->bg_size+pba->index_bg_Omega_r]; + + if (Omega_m_over_Omega_r > 1) + index_tau_plus = index_tau_mid; + else + index_tau_minus = index_tau_mid; + + } + + /* then get a better estimate within this range */ + + tau_minus = pba->tau_table[index_tau_minus]; + tau_plus = pba->tau_table[index_tau_plus]; + + class_alloc(pvecback,pba->bg_size*sizeof(double),pba->error_message); + + while ((tau_plus - tau_minus) > ppr->tol_tau_eq) { + + tau_mid = 0.5*(tau_plus+tau_minus); + + class_call(background_at_tau(pba,tau_mid,pba->long_info,pba->inter_closeby,&index_tau_minus,pvecback), + pba->error_message, + pba->error_message); + + Omega_m_over_Omega_r = pvecback[pba->index_bg_Omega_m]/pvecback[pba->index_bg_Omega_r]; + + if (Omega_m_over_Omega_r > 1) + tau_plus = tau_mid; + else + tau_minus = tau_mid; + + } + + pba->a_eq = pvecback[pba->index_bg_a]; + pba->H_eq = pvecback[pba->index_bg_H]; + pba->z_eq = pba->a_today/pba->a_eq -1.; + pba->tau_eq = tau_mid; + + if (pba->background_verbose > 0) { + printf(" -> radiation/matter equality at z = %f\n",pba->z_eq); + printf(" corresponding to conformal time = %f Mpc\n",pba->tau_eq); + } + + free(pvecback); + + return _SUCCESS_; + +} + + /** * Subroutine for formatting background output - * + * */ int background_output_titles(struct background * pba, @@ -1881,7 +2236,7 @@ int background_output_titles(struct background * pba, /** - Length of the column title should be less than _OUTPUTPRECISION_+6 to be indented correctly, but it can be as long as . */ int n; - char tmp[20]; + char tmp[40]; class_store_columntitle(titles,"z",_TRUE_); class_store_columntitle(titles,"proper time [Gyr]",_TRUE_); @@ -1904,19 +2259,27 @@ int background_output_titles(struct background * pba, } class_store_columntitle(titles,"(.)rho_lambda",pba->has_lambda); class_store_columntitle(titles,"(.)rho_fld",pba->has_fld); + class_store_columntitle(titles,"(.)w_fld",pba->has_fld); class_store_columntitle(titles,"(.)rho_ur",pba->has_ur); + class_store_columntitle(titles,"(.)rho_idr",pba->has_idr); + class_store_columntitle(titles,"(.)rho_idm_dr",pba->has_idm_dr); class_store_columntitle(titles,"(.)rho_crit",_TRUE_); class_store_columntitle(titles,"(.)rho_dcdm",pba->has_dcdm); class_store_columntitle(titles,"(.)rho_dr",pba->has_dr); class_store_columntitle(titles,"(.)rho_scf",pba->has_scf); class_store_columntitle(titles,"(.)p_scf",pba->has_scf); + class_store_columntitle(titles,"(.)p_prime_scf",pba->has_scf); class_store_columntitle(titles,"phi_scf",pba->has_scf); class_store_columntitle(titles,"phi'_scf",pba->has_scf); class_store_columntitle(titles,"V_scf",pba->has_scf); class_store_columntitle(titles,"V'_scf",pba->has_scf); class_store_columntitle(titles,"V''_scf",pba->has_scf); + class_store_columntitle(titles,"(.)rho_tot",_TRUE_); + class_store_columntitle(titles,"(.)p_tot",_TRUE_); + class_store_columntitle(titles,"(.)p_tot_prime",_TRUE_); + class_store_columntitle(titles,"gr.fac. D",_TRUE_); class_store_columntitle(titles,"gr.fac. f",_TRUE_); @@ -1955,19 +2318,27 @@ int background_output_data( } class_store_double(dataptr,pvecback[pba->index_bg_rho_lambda],pba->has_lambda,storeidx); class_store_double(dataptr,pvecback[pba->index_bg_rho_fld],pba->has_fld,storeidx); + class_store_double(dataptr,pvecback[pba->index_bg_w_fld],pba->has_fld,storeidx); class_store_double(dataptr,pvecback[pba->index_bg_rho_ur],pba->has_ur,storeidx); + class_store_double(dataptr,pvecback[pba->index_bg_rho_idr],pba->has_idr,storeidx); + class_store_double(dataptr,pvecback[pba->index_bg_rho_idm_dr],pba->has_idm_dr,storeidx); class_store_double(dataptr,pvecback[pba->index_bg_rho_crit],_TRUE_,storeidx); class_store_double(dataptr,pvecback[pba->index_bg_rho_dcdm],pba->has_dcdm,storeidx); class_store_double(dataptr,pvecback[pba->index_bg_rho_dr],pba->has_dr,storeidx); class_store_double(dataptr,pvecback[pba->index_bg_rho_scf],pba->has_scf,storeidx); class_store_double(dataptr,pvecback[pba->index_bg_p_scf],pba->has_scf,storeidx); + class_store_double(dataptr,pvecback[pba->index_bg_p_prime_scf],pba->has_scf,storeidx); class_store_double(dataptr,pvecback[pba->index_bg_phi_scf],pba->has_scf,storeidx); class_store_double(dataptr,pvecback[pba->index_bg_phi_prime_scf],pba->has_scf,storeidx); class_store_double(dataptr,pvecback[pba->index_bg_V_scf],pba->has_scf,storeidx); class_store_double(dataptr,pvecback[pba->index_bg_dV_scf],pba->has_scf,storeidx); class_store_double(dataptr,pvecback[pba->index_bg_ddV_scf],pba->has_scf,storeidx); + class_store_double(dataptr,pvecback[pba->index_bg_rho_tot],_TRUE_,storeidx); + class_store_double(dataptr,pvecback[pba->index_bg_p_tot],_TRUE_,storeidx); + class_store_double(dataptr,pvecback[pba->index_bg_p_tot_prime],_TRUE_,storeidx); + class_store_double(dataptr,pvecback[pba->index_bg_D],_TRUE_,storeidx); class_store_double(dataptr,pvecback[pba->index_bg_f],_TRUE_,storeidx); } @@ -2016,7 +2387,7 @@ int background_derivs( struct background_parameters_and_workspace * pbpaw; struct background * pba; - double * pvecback; + double * pvecback, a, H, rho_M; pbpaw = parameters_and_workspace; pba = pbpaw->pba; @@ -2027,6 +2398,10 @@ int background_derivs( pba->error_message, error_message); + /** - Short hand notation */ + a = y[pba->index_bi_a]; + H = pvecback[pba->index_bg_H]; + /** - calculate \f$ a'=a^2 H \f$ */ dy[pba->index_bi_a] = y[pba->index_bi_a] * y[pba->index_bi_a] * pvecback[pba->index_bg_H]; @@ -2040,8 +2415,15 @@ int background_derivs( /** - calculate \f$ rs' = c_s \f$*/ dy[pba->index_bi_rs] = 1./sqrt(3.*(1.+3.*pvecback[pba->index_bg_rho_b]/4./pvecback[pba->index_bg_rho_g]))*sqrt(1.-pba->K*y[pba->index_bi_rs]*y[pba->index_bi_rs]); // TBC: curvature correction - /** - calculate growth' \f$ = 1/(aH^2) \f$ */ - dy[pba->index_bi_growth] = 1./(y[pba->index_bi_a] * pvecback[pba->index_bg_H] * pvecback[pba->index_bg_H]); + /** - solve second order growth equation \f$ [D''(\tau)=-aHD'(\tau)+3/2 a^2 \rho_M D(\tau) \f$ */ + rho_M = pvecback[pba->index_bg_rho_b]; + if (pba->has_cdm) + rho_M += pvecback[pba->index_bg_rho_cdm]; + if (pba->has_idm_dr) + rho_M += pvecback[pba->index_bg_rho_idm_dr]; + + dy[pba->index_bi_D] = y[pba->index_bi_D_prime]; + dy[pba->index_bi_D_prime] = -a*H*y[pba->index_bi_D_prime] + 1.5*a*a*rho_M*y[pba->index_bi_D]; if (pba->has_dcdm == _TRUE_){ /** - compute dcdm density \f$ \rho' = -3aH \rho - a \Gamma \rho \f$*/ @@ -2055,6 +2437,11 @@ int background_derivs( y[pba->index_bi_a]*pba->Gamma_dcdm*y[pba->index_bi_rho_dcdm]; } + if (pba->has_fld == _TRUE_) { + /** - Compute fld density \f$ \rho' = -3aH (1+w_{fld}(a)) \rho \f$ */ + dy[pba->index_bi_rho_fld] = -3.*y[pba->index_bi_a]*pvecback[pba->index_bg_H]*(1.+pvecback[pba->index_bg_w_fld])*y[pba->index_bi_rho_fld]; + } + if (pba->has_scf == _TRUE_){ /** - Scalar field equation: \f$ \phi'' + 2 a H \phi' + a^2 dV = 0 \f$ (note H is wrt cosmic time) */ dy[pba->index_bi_phi_scf] = y[pba->index_bi_phi_prime_scf]; @@ -2063,7 +2450,6 @@ int background_derivs( + y[pba->index_bi_a]*dV_scf(pba,y[pba->index_bi_phi_scf])) ; } - return _SUCCESS_; } @@ -2072,27 +2458,27 @@ int background_derivs( * Scalar field potential and its derivatives with respect to the field _scf * For Albrecht & Skordis model: 9908085 * - \f$ V = V_{p_{scf}}*V_{e_{scf}} \f$ - * - \f$ V_e = \exp(-\lambda \phi) \f$ (exponential) - * - \f$ V_p = (\phi - B)^\alpha + A \f$ (polynomial bump) - * - * TODO: + * - \f$ V_e = \exp(-\lambda \phi) \f$ (exponential) + * - \f$ V_p = (\phi - B)^\alpha + A \f$ (polynomial bump) + * + * TODO: * - Add some functionality to include different models/potentials (tuning would be difficult, though) * - Generalize to Kessence/Horndeski/PPF and/or couplings * - A default module to numerically compute the derivatives when no analytic functions are given should be added. * - Numerical derivatives may further serve as a consistency check. - * + * */ -/** - * +/** + * * The units of phi, tau in the derivatives and the potential V are the following: * - phi is given in units of the reduced Planck mass \f$ m_{pl} = (8 \pi G)^{(-1/2)}\f$ * - tau in the derivative is given in units of Mpc. * - the potential \f$ V(\phi) \f$ is given in units of \f$ m_{pl}^2/Mpc^2 \f$. * With this convention, we have * \f$ \rho^{class} = (8 \pi G)/3 \rho^{physical} = 1/(3 m_{pl}^2) \rho^{physical} = 1/3 * [ 1/(2a^2) (\phi')^2 + V(\phi) ] \f$ - and \f$ \rho^{class} \f$ has the proper dimension \f$ Mpc^-2 \f$. - */ + and \f$ \rho^{class} \f$ has the proper dimension \f$ Mpc^-2 \f$. +*/ double V_e_scf(struct background *pba, double phi @@ -2129,12 +2515,12 @@ double ddV_e_scf(struct background *pba, /** parameters and functions for the polynomial coefficient - * \f$ V_p = (\phi - B)^\alpha + A \f$(polynomial bump) - * + * \f$ V_p = (\phi - B)^\alpha + A \f$(polynomial bump) + * * double scf_alpha = 2; - * + * * double scf_B = 34.8; - * + * * double scf_A = 0.01; (values for their Figure 2) */ @@ -2183,7 +2569,7 @@ double V_scf( double dV_scf( struct background *pba, - double phi) { + double phi) { return dV_e_scf(pba,phi)*V_p_scf(pba,phi) + V_e_scf(pba,phi)*dV_p_scf(pba,phi); } @@ -2192,3 +2578,111 @@ double ddV_scf( double phi) { return ddV_e_scf(pba,phi)*V_p_scf(pba,phi) + 2*dV_e_scf(pba,phi)*dV_p_scf(pba,phi) + V_e_scf(pba,phi)*ddV_p_scf(pba,phi); } + +/** + * Function outputting the fractions Omega of the total critical density + * today, and also the reduced fractions omega=Omega*h*h + * + * It also prints the total budgets of non-relativistic, relativistic, + * and other contents, and of the total + * + * @param pba Input: Pointer to background structure + * @return the error status + */ + +int background_output_budget( + struct background* pba + ) { + + double budget_matter, budget_radiation, budget_other,budget_neutrino; + int index_ncdm; + + budget_matter = 0; + budget_radiation = 0; + budget_other = 0; + budget_neutrino = 0; + + //The name for the _class_print_species_ macro can be at most 30 characters total + if(pba->background_verbose > 1){ + + printf(" ---------------------------- Budget equation ----------------------- \n"); + + printf(" ---> Nonrelativistic Species \n"); + _class_print_species_("Bayrons",b); + budget_matter+=pba->Omega0_b; + if(pba->has_cdm){ + _class_print_species_("Cold Dark Matter",cdm); + budget_matter+=pba->Omega0_cdm; + } + if(pba->has_idm_dr){ + _class_print_species_("Interacting Dark Matter - DR ",idm_dr); + budget_matter+=pba->Omega0_idm_dr; + } + if(pba->has_dcdm){ + _class_print_species_("Decaying Cold Dark Matter",dcdm); + budget_matter+=pba->Omega0_dcdm; + } + + + printf(" ---> Relativistic Species \n"); + _class_print_species_("Photons",g); + budget_radiation+=pba->Omega0_g; + if(pba->has_ur){ + _class_print_species_("Ultra-relativistic relics",ur); + budget_radiation+=pba->Omega0_ur; + } + if(pba->has_dr){ + _class_print_species_("Dark Radiation (from decay)",dr); + budget_radiation+=pba->Omega0_dr; + } + if(pba->has_idr){ + _class_print_species_("Interacting Dark Radiation",idr); + budget_radiation+=pba->Omega0_idr; + } + + if(pba->N_ncdm > 0){ + printf(" ---> Massive Neutrino Species \n"); + } + if(pba->N_ncdm > 0){ + for(index_ncdm=0;index_ncdmN_ncdm;++index_ncdm){ + printf("-> %-26s%-4d Omega = %-15g , omega = %-15g\n","Neutrino Species Nr.",index_ncdm+1,pba->Omega0_ncdm[index_ncdm],pba->Omega0_ncdm[index_ncdm]*pba->h*pba->h); + budget_neutrino+=pba->Omega0_ncdm[index_ncdm]; + } + } + + if(pba->has_lambda || pba->has_fld || pba->has_scf || pba->has_curvature){ + printf(" ---> Other Content \n"); + } + if(pba->has_lambda){ + _class_print_species_("Cosmological Constant",lambda); + budget_other+=pba->Omega0_lambda; + } + if(pba->has_fld){ + _class_print_species_("Dark Energy Fluid",fld); + budget_other+=pba->Omega0_fld; + } + if(pba->has_scf){ + _class_print_species_("Scalar Field",scf); + budget_other+=pba->Omega0_scf; + } + if(pba->has_curvature){ + _class_print_species_("Spatial Curvature",k); + budget_other+=pba->Omega0_k; + } + + printf(" ---> Total budgets \n"); + printf(" Radiation Omega = %-15g , omega = %-15g \n",budget_radiation,budget_radiation*pba->h*pba->h); + printf(" Non-relativistic Omega = %-15g , omega = %-15g \n",budget_matter,budget_matter*pba->h*pba->h); + if(pba->N_ncdm > 0){ + printf(" Neutrinos Omega = %-15g , omega = %-15g \n",budget_neutrino,budget_neutrino*pba->h*pba->h); + } + if(pba->has_lambda || pba->has_fld || pba->has_scf || pba->has_curvature){ + printf(" Other Content Omega = %-15g , omega = %-15g \n",budget_other,budget_other*pba->h*pba->h); + } + printf(" TOTAL Omega = %-15g , omega = %-15g \n",budget_radiation+budget_matter+budget_neutrino+budget_other,(budget_radiation+budget_matter+budget_neutrino+budget_other)*pba->h*pba->h); + + printf(" -------------------------------------------------------------------- \n"); + } + + return _SUCCESS_; +} diff --git a/class/source/input.c b/class/source/input.c index ac40b992..9280dda3 100644 --- a/class/source/input.c +++ b/class/source/input.c @@ -3,9 +3,6 @@ * Julien Lesgourgues, 27.08.2010 */ -/* modified for CCL to include sigma_8 following recipe in - https://github.com/lesgourg/class_public/issues/83 */ - #include "input.h" /** @@ -46,7 +43,7 @@ int input_init_from_arguments( char input_file[_ARGUMENT_LENGTH_MAX_]; char precision_file[_ARGUMENT_LENGTH_MAX_]; - char tmp_file[_ARGUMENT_LENGTH_MAX_]; + char tmp_file[_ARGUMENT_LENGTH_MAX_+26]; // 26 is enough to extend the file name [...] with the characters "output/[...]%02d_parameters.ini" (as done below) int i; char extension[5]; @@ -86,7 +83,7 @@ int input_init_from_arguments( strcpy(precision_file,argv[i]); } else { - fprintf(stdout,"Warning: the file %s has an extension different from .ini and .pre, so it has been ignored\n",argv[i]); + fprintf(stdout,"Warning: the file '%s' has an extension different from .ini and .pre, so it has been ignored\n",argv[i]); } } } @@ -226,20 +223,70 @@ int input_init( char param_unused_name[_LINE_LENGTH_MAX_]; struct fzerofun_workspace fzw; + + /** + * Before getting into the assignment of parameters, + * and before the shooting, we want to already fix our precision parameters. + * + * No precision parameter should depend on any input parameter + * + */ + + class_call(input_read_precisions(pfc, + ppr, + pba, + pth, + ppt, + ptr, + ppm, + psp, + pnl, + ple, + pop, + errmsg), + errmsg, + errmsg); + + + /** + * In CLASS, we can do something we call 'shooting', where a variable, + * which is not directly given is calculated by another variable + * through successive runs of class. + * + * This is needed for variables which do not immediately follow from + * other input parameters. An example is theta_s, the angular scale + * of the sound horizon giving us the horizontal peak positions. + * This quantity can only replace the hubble parameter h, if we + * run all the way into class through to thermodynamics to figure out + * how h and theta_s relate numerically. + * + * A default parameter for h is chosen, and then we shoot through + * CLASS, finding what the corresponding theta_s is. We adjust our + * initial h, and shoot again, repeating this process until a + * suitable value for h is found which gives the correct + * 100*theta_s value * * These two arrays must contain the strings of names to be searched - * for and the corresponding new parameter */ + * for and the corresponding new parameter + * The third array contains the module inside of which the old + * parameter is calculated + * + * See input_try_unknown_parameters for the actual shooting + * + */ + char * const target_namestrings[] = {"100*theta_s","Omega_dcdmdr","omega_dcdmdr", "Omega_scf","Omega_ini_dcdm","omega_ini_dcdm","sigma8"}; char * const unknown_namestrings[] = {"h","Omega_ini_dcdm","Omega_ini_dcdm", "scf_shooting_parameter","Omega_dcdmdr","omega_dcdmdr","A_s"}; enum computation_stage target_cs[] = {cs_thermodynamics, cs_background, cs_background, - cs_background, cs_background, cs_background}; + cs_background, cs_background, cs_background, cs_nonlinear}; int input_verbose = 0, int1, aux_flag, shooting_failed=_FALSE_; class_read_int("input_verbose",input_verbose); + if (input_verbose >0) printf("Reading input parameters\n"); /** - Do we need to fix unknown parameters? */ unknown_parameters_size = 0; @@ -255,7 +302,7 @@ int input_init( if (flag1 == _TRUE_){ /** - --> input_auxillary_target_conditions() takes care of the case where for instance Omega_dcdmdr is set to 0.0. - */ + */ class_call(input_auxillary_target_conditions(pfc, index_target, param1, @@ -271,7 +318,12 @@ int input_init( } } - /** - case with unknown parameters */ + /** + * Case with unknown parameters... + * + * Here we start shooting (see above for explanation of shooting) + * + * */ if (unknown_parameters_size > 0) { /* Create file content structure with additional entries */ @@ -307,8 +359,8 @@ int input_init( ¶m1, &flag1, errmsg), - errmsg, - errmsg); + errmsg, + errmsg); // store name of target parameter fzw.target_name[counter] = index_target; @@ -321,6 +373,14 @@ int input_init( } if (unknown_parameters_size == 1){ + if (input_verbose > 0) { + fprintf( + stdout, + "Computing unknown input parameter '%s' using input parameter '%s'\n", + fzw.fc.name[fzw.unknown_parameters_index[0]], + target_namestrings[fzw.target_name[0]] + ); + } /* We can do 1 dimensional root finding */ /* If shooting fails, postpone error to background module to play nice with MontePython. */ class_call_try(input_find_root(&xzero, @@ -334,13 +394,17 @@ int input_init( /* Store xzero */ sprintf(fzw.fc.value[fzw.unknown_parameters_index[0]],"%e",xzero); if (input_verbose > 0) { - fprintf(stdout,"Computing unknown input parameters\n"); - fprintf(stdout," -> found %s = %s\n", + fprintf(stdout," -> found '%s = %s'\n", fzw.fc.name[fzw.unknown_parameters_index[0]], fzw.fc.value[fzw.unknown_parameters_index[0]]); } } else{ + /* We need to do multidimensional root finding */ + + if (input_verbose > 0) { + fprintf(stdout,"Computing unknown input parameters\n"); + } class_alloc(x_inout, sizeof(double)*unknown_parameters_size, errmsg); @@ -364,16 +428,14 @@ int input_init( errmsg), errmsg, pba->shooting_error,shooting_failed=_TRUE_); - if (input_verbose > 0) { - fprintf(stdout,"Computing unknown input parameters\n"); - } + /* Store xzero */ for (counter = 0; counter < unknown_parameters_size; counter++){ sprintf(fzw.fc.value[fzw.unknown_parameters_index[counter]], "%e",x_inout[counter]); if (input_verbose > 0) { - fprintf(stdout," -> found %s = %s\n", + fprintf(stdout," -> found '%s = %s'\n", fzw.fc.name[fzw.unknown_parameters_index[counter]], fzw.fc.value[fzw.unknown_parameters_index[counter]]); } @@ -496,7 +558,44 @@ int input_init( return _SUCCESS_; } +int input_read_precisions( + struct file_content * pfc, + struct precision * ppr, + struct background *pba, + struct thermo *pth, + struct perturbs *ppt, + struct transfers *ptr, + struct primordial *ppm, + struct spectra *psp, + struct nonlinear * pnl, + struct lensing *ple, + struct output *pop, + ErrorMsg errmsg + ) { + /** - set all precision parameters to default values */ + + /** + * Declare initial params to read into + * */ + class_call(input_default_precision(ppr), + errmsg, + errmsg); + + int int1; + int flag1; + double param1; + char string1[_ARGUMENT_LENGTH_MAX_]; + + /** + * Parse all precision parameters + * */ + +#define __PARSE_PRECISION_PARAMETER__ +#include "precisions.h" +#undef __PARSE_PRECISION_PARAMETER__ + return _SUCCESS_; +} int input_read_parameters( struct file_content * pfc, struct precision * ppr, @@ -537,6 +636,7 @@ int input_read_parameters( double f_iso=0.; double n_cor=0.; double c_cor=0.; + double stat_f_idr = 7./8.; double Omega_tot; @@ -551,10 +651,11 @@ int input_read_parameters( double z_max=0.; int bin; + int input_verbose=0; sigma_B = 2. * pow(_PI_,5) * pow(_k_B_,4) / 15. / pow(_h_P_,3) / pow(_c_,2); - /** - set all parameters (input and precision) to default values */ + /** - set all input parameters to default values */ class_call(input_default_params(pba, pth, @@ -568,14 +669,12 @@ int input_read_parameters( errmsg, errmsg); - class_call(input_default_precision(ppr), - errmsg, - errmsg); - /** - if entries passed in file_content structure, carefully read and interpret each of them, and tune the relevant input parameters accordingly*/ + class_read_int("input_verbose",input_verbose); + /** Knowing the gauge from the very beginning is useful (even if this could be a run not requiring perturbations at all: even in that case, knowing the gauge is important e.g. for fixing the @@ -741,6 +840,44 @@ int input_read_parameters( Omega_tot += pba->Omega0_ur; + /** - Omega_0_idr (interacting dark radiation) */ + /* Can take both the ethos parameters, and the NADM parameters */ + + class_read_double("stat_f_idr",stat_f_idr); + + class_call(parser_read_double(pfc,"N_idr",¶m1,&flag1,errmsg), + errmsg, + errmsg); + class_call(parser_read_double(pfc,"N_dg",¶m2,&flag2,errmsg), + errmsg, + errmsg); + class_call(parser_read_double(pfc,"xi_idr",¶m3,&flag3,errmsg), + errmsg, + errmsg); + class_test(class_at_least_two_of_three(flag1,flag2,flag3), + errmsg, + "In input file, you can only enter one of N_idr, N_dg or xi_idr, choose one"); + + if (flag1 == _TRUE_) { + pba->T_idr = pow(param1/stat_f_idr*(7./8.)/pow(11./4.,(4./3.)),(1./4.)) * pba->T_cmb; + if (input_verbose > 1) + printf("You passed N_idr = N_dg = %e, this is equivalent to xi_idr = %e in the ETHOS notation. \n", param2, pba->T_idr/pba->T_cmb); + } + else if (flag2 == _TRUE_) { + pba->T_idr = pow(param2/stat_f_idr*(7./8.)/pow(11./4.,(4./3.)),(1./4.)) * pba->T_cmb; + if (input_verbose > 2) + printf("You passed N_dg = N_idr = %e, this is equivalent to xi_idr = %e in the ETHOS notation. \n", param2, pba->T_idr/pba->T_cmb); + } + else if (flag3 == _TRUE_) { + pba->T_idr = param3 * pba->T_cmb; + if (input_verbose > 1) + printf("You passed xi_idr = %e, this is equivalent to N_idr = N_dg = %e in the NADM notation. \n", param3, stat_f_idr*pow(param3,4.)/(7./8.)*pow(11./4.,(4./3.))); + } + + pba->Omega0_idr = stat_f_idr*pow(pba->T_idr/pba->T_cmb,4.)*pba->Omega0_g; + + Omega_tot += pba->Omega0_idr; + /** - Omega_0_cdm (CDM) */ class_call(parser_read_double(pfc,"Omega_cdm",¶m1,&flag1,errmsg), errmsg, @@ -756,58 +893,232 @@ int input_read_parameters( if (flag2 == _TRUE_) pba->Omega0_cdm = param2/pba->h/pba->h; + if ((ppt->gauge == synchronous) && (pba->Omega0_cdm==0)) pba->Omega0_cdm = ppr->Omega0_cdm_min_synchronous; + Omega_tot += pba->Omega0_cdm; - /** - Omega_0_dcdmdr (DCDM) */ - class_call(parser_read_double(pfc,"Omega_dcdmdr",¶m1,&flag1,errmsg), + /** - Omega_0_icdm_dr (DM interacting with DR) */ + class_call(parser_read_double(pfc,"Omega_idm_dr",¶m1,&flag1,errmsg), errmsg, errmsg); - class_call(parser_read_double(pfc,"omega_dcdmdr",¶m2,&flag2,errmsg), + class_call(parser_read_double(pfc,"omega_idm_dr",¶m2,&flag2,errmsg), errmsg, errmsg); - class_test(((flag1 == _TRUE_) && (flag2 == _TRUE_)), + class_call(parser_read_double(pfc,"f_idm_dr",¶m3,&flag3,errmsg), errmsg, - "In input file, you can only enter one of Omega_dcdmdr or omega_dcdmdr, choose one"); + errmsg); + class_test(class_at_least_two_of_three(flag1,flag2,flag3), + errmsg, + "In input file, you can only enter one of Omega_idm_dr, omega_idm_dr or f_idm_dr, choose one"); + + /* ---> if user passes directly the density of idm_dr */ if (flag1 == _TRUE_) - pba->Omega0_dcdmdr = param1; + pba->Omega0_idm_dr = param1; if (flag2 == _TRUE_) - pba->Omega0_dcdmdr = param2/pba->h/pba->h; - Omega_tot += pba->Omega0_dcdmdr; + pba->Omega0_idm_dr = param2/pba->h/pba->h; + + /* ---> if user passes density of idm_dr as a fraction of the CDM one */ + if (flag3 == _TRUE_) { + class_test((param3 < 0.) || (param3 > 1.), + errmsg, + "The fraction of interacting DM with DR must be between 0 and 1, you asked for f_idm_dr=%e",param3); + class_test((param3 > 0.) && (pba->Omega0_cdm == 0.), + errmsg, + "If you want a fraction of interacting DM with DR, to be consistent, you should not set the fraction of CDM to zero"); + + pba->Omega0_idm_dr = param3 * pba->Omega0_cdm; + /* readjust Omega0_cdm */ + pba->Omega0_cdm -= pba->Omega0_idm_dr; + /* to be consistent, remove same amount from Omega_tot */ + Omega_tot -= pba->Omega0_idm_dr; + /* avoid Omega0_cdm =0 in synchronous gauge */ + if ((ppt->gauge == synchronous) && (pba->Omega0_cdm==0)) { + pba->Omega0_cdm += ppr->Omega0_cdm_min_synchronous; + Omega_tot += ppr->Omega0_cdm_min_synchronous; + pba->Omega0_idm_dr -= ppr->Omega0_cdm_min_synchronous; + } + } + + Omega_tot += pba->Omega0_idm_dr; + + if (pba->Omega0_idm_dr > 0.) { + + class_test(pba->Omega0_idr == 0.0, + errmsg, + "You have requested interacting DM ith DR, this requires a non-zero density of interacting DR. Please set either N_idr or xi_idr"); + + class_call(parser_read_double(pfc,"a_idm_dr",¶m1,&flag1,errmsg), + errmsg, + errmsg); + class_call(parser_read_double(pfc,"a_dark",¶m2,&flag2,errmsg), + errmsg, + errmsg); + class_call(parser_read_double(pfc,"Gamma_0_nadm",¶m3,&flag3,errmsg), + errmsg, + errmsg); + class_test(class_at_least_two_of_three(flag1,flag2,flag3), + errmsg, + "In input file, you can only enter one of a_idm_dr, a_dark or Gamma_0_nadm, choose one"); + + if (flag1 == _TRUE_){ + pth->a_idm_dr = param1; + if (input_verbose > 1) + printf("You passed a_idm_dr = a_dark = %e, this is equivalent to Gamma_0_nadm = %e in the NADM notation. \n", param1, param1*(4./3.)*(pba->h*pba->h*pba->Omega0_idr)); + } + else if (flag2 == _TRUE_){ + pth->a_idm_dr = param2; + if (input_verbose > 1) + printf("You passed a_dark = a_idm_dr = %e, this is equivalent to Gamma_0_nadm = %e in the NADM notation. \n", param2, param2*(4./3.)*(pba->h*pba->h*pba->Omega0_idr)); + } + else if (flag3 == _TRUE_){ + pth->a_idm_dr = param3*(3./4.)/(pba->h*pba->h*pba->Omega0_idr); + if (input_verbose > 1) + printf("You passed Gamma_0_nadm = %e, this is equivalent to a_idm_dr = a_dark = %e in the ETHOS notation. \n", param3, pth->a_idm_dr); + } + + /** - Load the rest of the parameters for idm and idr */ + + if (flag3 == _TRUE_){ /* If the user passed Gamma_0_nadm, assume they want nadm parameterisation*/ + pth->nindex_idm_dr = 0; + ppt->idr_nature = idr_fluid; + if (input_verbose > 1) + printf("NADM requested. Defaulting on nindex_idm_dr = %e and idr_nature = fluid \n", pth->nindex_idm_dr); + } + + else{ + + class_read_double_one_of_two("nindex_dark","nindex_idm_dr",pth->nindex_idm_dr); + + class_call(parser_read_string(pfc,"idr_nature",&string1,&flag1,errmsg), + errmsg, + errmsg); + + if (flag1 == _TRUE_) { + if ((strstr(string1,"free_streaming") != NULL) || (strstr(string1,"Free_Streaming") != NULL) || (strstr(string1,"Free_streaming") != NULL) || (strstr(string1,"FREE_STREAMING") != NULL)) { + ppt->idr_nature = idr_free_streaming; + } + if ((strstr(string1,"fluid") != NULL) || (strstr(string1,"Fluid") != NULL) || (strstr(string1,"FLUID") != NULL)) { + ppt->idr_nature = idr_fluid; + } + } + } + + class_read_double_one_of_two("m_idm","m_dm",pth->m_idm); + + class_read_double_one_of_two("b_dark","b_idr",pth->b_idr); + + /* Read alpha_idm_dr or alpha_dark */ + + class_call(parser_read_list_of_doubles(pfc,"alpha_idm_dr",&entries_read,&(ppt->alpha_idm_dr),&flag1,errmsg), + errmsg, + errmsg); + + /* try with the other syntax */ + if (flag1 == _FALSE_) { + class_call(parser_read_list_of_doubles(pfc,"alpha_dark",&entries_read,&(ppt->alpha_idm_dr),&flag1,errmsg), + errmsg, + errmsg); + } + + if(flag1 == _TRUE_){ + if(entries_read != (ppr->l_max_idr-1)){ + class_realloc(ppt->alpha_idm_dr,ppt->alpha_idm_dr,(ppr->l_max_idr-1)*sizeof(double),errmsg); + for(n=entries_read; n<(ppr->l_max_idr-1); n++) ppt->alpha_idm_dr[n] = ppt->alpha_idm_dr[entries_read-1]; + } + } + else{ + class_alloc(ppt->alpha_idm_dr,(ppr->l_max_idr-1)*sizeof(double),errmsg); + for(n=0; n<(ppr->l_max_idr-1); n++) ppt->alpha_idm_dr[n] = 1.5; + } + + /* Read alpha_idm_dr or alpha_dark */ + + class_call(parser_read_list_of_doubles(pfc,"beta_idr",&entries_read,&(ppt->beta_idr),&flag1,errmsg), + errmsg, + errmsg); + + /* try with the other syntax */ + if (flag1 == _FALSE_) { + class_call(parser_read_list_of_doubles(pfc,"beta_dark",&entries_read,&(ppt->beta_idr),&flag1,errmsg), + errmsg, + errmsg); + } + + if(flag1 == _TRUE_){ + if(entries_read != (ppr->l_max_idr-1)){ + class_realloc(ppt->beta_idr,ppt->beta_idr,(ppr->l_max_idr-1)*sizeof(double),errmsg); + for(n=entries_read; n<(ppr->l_max_idr-1); n++) ppt->beta_idr[n] = ppt->beta_idr[entries_read-1]; + } + } + else{ + class_alloc(ppt->beta_idr,(ppr->l_max_idr-1)*sizeof(double),errmsg); + for(n=0; n<(ppr->l_max_idr-1); n++) ppt->beta_idr[n] = 1.5; + } + } + else { + ppt->alpha_idm_dr = NULL; + ppt->beta_idr = NULL; + } - /** - Read Omega_ini_dcdm or omega_ini_dcdm */ - class_call(parser_read_double(pfc,"Omega_ini_dcdm",¶m1,&flag1,errmsg), + /** - Omega_0_dcdmdr (DCDM) */ + class_call(parser_read_double(pfc,"Omega_dcdmdr",¶m1,&flag1,errmsg), errmsg, errmsg); - class_call(parser_read_double(pfc,"omega_ini_dcdm",¶m2,&flag2,errmsg), + class_call(parser_read_double(pfc,"omega_dcdmdr",¶m2,&flag2,errmsg), errmsg, errmsg); class_test(((flag1 == _TRUE_) && (flag2 == _TRUE_)), errmsg, - "In input file, you can only enter one of Omega_ini_dcdm or omega_ini_dcdm, choose one"); + "In input file, you can only enter one of Omega_dcdmdr or omega_dcdmdr, choose one"); if (flag1 == _TRUE_) - pba->Omega_ini_dcdm = param1; + pba->Omega0_dcdmdr = param1; if (flag2 == _TRUE_) - pba->Omega_ini_dcdm = param2/pba->h/pba->h; + pba->Omega0_dcdmdr = param2/pba->h/pba->h; - /** - Read Gamma in same units as H0, i.e. km/(s Mpc)*/ - class_read_double("Gamma_dcdm",pba->Gamma_dcdm); - /* Convert to Mpc */ - pba->Gamma_dcdm *= (1.e3 / _c_); + if (pba->Omega0_dcdmdr > 0) { + + Omega_tot += pba->Omega0_dcdmdr; + + /** - Read Omega_ini_dcdm or omega_ini_dcdm */ + class_call(parser_read_double(pfc,"Omega_ini_dcdm",¶m1,&flag1,errmsg), + errmsg, + errmsg); + class_call(parser_read_double(pfc,"omega_ini_dcdm",¶m2,&flag2,errmsg), + errmsg, + errmsg); + class_test(((flag1 == _TRUE_) && (flag2 == _TRUE_)), + errmsg, + "In input file, you can only enter one of Omega_ini_dcdm or omega_ini_dcdm, choose one"); + if (flag1 == _TRUE_) + pba->Omega_ini_dcdm = param1; + if (flag2 == _TRUE_) + pba->Omega_ini_dcdm = param2/pba->h/pba->h; + + /** - Read Gamma in same units as H0, i.e. km/(s Mpc)*/ + class_read_double("Gamma_dcdm",pba->Gamma_dcdm); + /* Convert to Mpc */ + pba->Gamma_dcdm *= (1.e3 / _c_); + + } /** - non-cold relics (ncdm) */ class_read_int("N_ncdm",N_ncdm); if ((flag1 == _TRUE_) && (N_ncdm > 0)){ pba->N_ncdm = N_ncdm; - /* Precision parameters for ncdm has to be read now since they are used here:*/ - class_read_double("tol_M_ncdm",ppr->tol_M_ncdm); - class_read_double("tol_ncdm_newtonian",ppr->tol_ncdm_newtonian); - class_read_double("tol_ncdm_synchronous",ppr->tol_ncdm_synchronous); - class_read_double("tol_ncdm_bg",ppr->tol_ncdm_bg); + if (ppt->gauge == synchronous) ppr->tol_ncdm = ppr->tol_ncdm_synchronous; if (ppt->gauge == newtonian) ppr->tol_ncdm = ppr->tol_ncdm_newtonian; + /* Quadrature modes, 0 is qm_auto. */ + class_read_list_of_integers_or_default("Quadrature strategy",pba->ncdm_quadrature_strategy,0,N_ncdm); + /* Number of momentum bins */ + class_read_list_of_integers_or_default("Number of momentum bins",pba->ncdm_input_q_size,-1,N_ncdm); + + /* qmax, if relevant */ + class_read_list_of_doubles_or_default("Maximum q",pba->ncdm_qmax,15,N_ncdm); + /* Read temperatures: */ class_read_list_of_doubles_or_default("T_ncdm",pba->T_ncdm,pba->T_ncdm_default,N_ncdm); @@ -959,7 +1270,7 @@ int input_read_parameters( * 1) set each Omega0 and add to the total for each specified component. * 2) go through the components in order {lambda, fld, scf} and * fill using first unspecified component. - */ + */ /* Step 1 */ if (flag1 == _TRUE_){ @@ -975,14 +1286,31 @@ int input_read_parameters( Omega_tot += pba->Omega0_scf; } /* Step 2 */ - if (flag1 == _FALSE_) //Fill with Lambda + if (flag1 == _FALSE_) { + //Fill with Lambda pba->Omega0_lambda= 1. - pba->Omega0_k - Omega_tot; - else if (flag2 == _FALSE_) // Fill up with fluid + if (input_verbose > 0) printf(" -> matched budget equations by adjusting Omega_Lambda = %e\n",pba->Omega0_lambda); + } + else if (flag2 == _FALSE_) { + // Fill up with fluid pba->Omega0_fld = 1. - pba->Omega0_k - Omega_tot; - else if ((flag3 == _TRUE_) && (param3 < 0.)){ // Fill up with scalar field + if (input_verbose > 0) printf(" -> matched budget equations by adjusting Omega_fld = %e\n",pba->Omega0_fld); + } + else if ((flag3 == _TRUE_) && (param3 < 0.)){ + // Fill up with scalar field pba->Omega0_scf = 1. - pba->Omega0_k - Omega_tot; + if (input_verbose > 0) printf(" -> matched budget equations by adjusting Omega_scf = %e\n",pba->Omega0_scf); } + /* + fprintf(stderr,"%e %e %e %e %e\n", + pba->Omega0_lambda, + pba->Omega0_fld, + pba->Omega0_scf, + pba->Omega0_k, + Omega_tot); + */ + /** - Test that the user have not specified Omega_scf = -1 but left either Omega_lambda or Omega_fld unspecified:*/ class_test(((flag1 == _FALSE_)||(flag2 == _FALSE_)) && ((flag3 == _TRUE_) && (param3 < 0.)), @@ -990,9 +1318,55 @@ int input_read_parameters( "It looks like you want to fulfil the closure relation sum Omega = 1 using the scalar field, so you have to specify both Omega_lambda and Omega_fld in the .ini file"); if (pba->Omega0_fld != 0.) { - class_read_double("w0_fld",pba->w0_fld); - class_read_double("wa_fld",pba->wa_fld); - class_read_double("cs2_fld",pba->cs2_fld); + + class_call(parser_read_string(pfc, + "use_ppf", + &string1, + &flag1, + errmsg), + errmsg, + errmsg); + + if (flag1 == _TRUE_){ + if((strstr(string1,"y") != NULL) || (strstr(string1,"Y") != NULL)){ + pba->use_ppf = _TRUE_; + class_read_double("c_gamma_over_c_fld",pba->c_gamma_over_c_fld); + } + else { + pba->use_ppf = _FALSE_; + } + } + + class_call(parser_read_string(pfc,"fluid_equation_of_state",&string1,&flag1,errmsg), + errmsg, + errmsg); + + if (flag1 == _TRUE_) { + + if ((strstr(string1,"CLP") != NULL) || (strstr(string1,"clp") != NULL)) { + pba->fluid_equation_of_state = CLP; + } + + else if ((strstr(string1,"EDE") != NULL) || (strstr(string1,"ede") != NULL)) { + pba->fluid_equation_of_state = EDE; + } + + else { + class_stop(errmsg,"incomprehensible input '%s' for the field 'fluid_equation_of_state'",string1); + } + } + + if (pba->fluid_equation_of_state == CLP) { + class_read_double("w0_fld",pba->w0_fld); + class_read_double("wa_fld",pba->wa_fld); + class_read_double("cs2_fld",pba->cs2_fld); + } + + if (pba->fluid_equation_of_state == EDE) { + class_read_double("w0_fld",pba->w0_fld); + class_read_double("Omega_EDE",pba->Omega_EDE); + class_read_double("cs2_fld",pba->cs2_fld); + } } /* Additional SCF parameters: */ @@ -1021,8 +1395,8 @@ int input_read_parameters( &string1, &flag1, errmsg), - errmsg, - errmsg); + errmsg, + errmsg); if (flag1 == _TRUE_){ if((strstr(string1,"y") != NULL) || (strstr(string1,"Y") != NULL)){ @@ -1031,8 +1405,8 @@ int input_read_parameters( else{ pba->attractor_ic_scf = _FALSE_; class_test(pba->scf_parameters_size<2, - errmsg, - "Since you are not using attractor initial conditions, you must specify phi and its derivative phi' as the last two entries in scf_parameters. See explanatory.ini for more details."); + errmsg, + "Since you are not using attractor initial conditions, you must specify phi and its derivative phi' as the last two entries in scf_parameters. See explanatory.ini for more details."); pba->phi_ini_scf = pba->scf_parameters[pba->scf_parameters_size-2]; pba->phi_prime_ini_scf = pba->scf_parameters[pba->scf_parameters_size-1]; } @@ -1097,10 +1471,14 @@ int input_read_parameters( pth->reio_parametrization=reio_many_tanh; flag2=_TRUE_; } + if (strcmp(string1,"reio_inter") == 0) { + pth->reio_parametrization=reio_inter; + flag2=_TRUE_; + } class_test(flag2==_FALSE_, errmsg, - "could not identify reionization_parametrization value, check that it is one of 'reio_none', 'reio_camb', 'reio_bins_tanh', 'reio_half_tanh', 'reio_many_tanh'..."); + "could not identify reionization_parametrization value, check that it is one of 'reio_none', 'reio_camb', 'reio_bins_tanh', 'reio_half_tanh', 'reio_many_tanh', 'reio_inter'..."); } /** - reionization parameters if reio_parametrization=reio_camb */ @@ -1121,6 +1499,7 @@ int input_read_parameters( if (flag2 == _TRUE_) { pth->tau_reio=param2; pth->reio_z_or_tau=reio_tau; + } class_read_double("reionization_exponent",pth->reionization_exponent); @@ -1146,6 +1525,13 @@ int input_read_parameters( class_read_double("many_tanh_width",pth->many_tanh_width); } + /** - reionization parameters if reio_parametrization=reio_many_tanh */ + if (pth->reio_parametrization == reio_inter) { + class_read_int("reio_inter_num",pth->reio_inter_num); + class_read_list_of_doubles("reio_inter_z",pth->reio_inter_z,pth->reio_inter_num); + class_read_list_of_doubles("reio_inter_xe",pth->reio_inter_xe,pth->reio_inter_num); + } + /** - energy injection parameters from CDM annihilation/decay */ class_read_double("annihilation",pth->annihilation); @@ -1251,6 +1637,21 @@ int input_read_parameters( if ((strstr(string1,"mPk") != NULL) || (strstr(string1,"MPk") != NULL) || (strstr(string1,"MPK") != NULL)) { ppt->has_pk_matter=_TRUE_; ppt->has_perturbations = _TRUE_; + + /*if (pba->Omega0_ncdm_tot != 0.0){ + class_call(parser_read_string(pfc,"pk_only_cdm_bar",&string1,&flag1,errmsg), + errmsg, + errmsg); + if (flag1 == _TRUE_){ + if((strstr(string1,"y") != NULL) || (strstr(string1,"Y") != NULL)){ + ppt->pk_only_cdm_bar = _TRUE_; + } + else { + ppt->pk_only_cdm_bar = _FALSE_; + } + } + }*/ + } if ((strstr(string1,"mTk") != NULL) || (strstr(string1,"MTk") != NULL) || (strstr(string1,"MTK") != NULL) || @@ -1266,6 +1667,27 @@ int input_read_parameters( } + /* The following lines make sure that if perturbations are not computed, idm_dr and idr parameters are still freed */ + + if(ppt->has_perturbations == _FALSE_) { + + if (ppt->alpha_idm_dr != NULL) + free(ppt->alpha_idm_dr); + + if (ppt->beta_idr != NULL) + free(ppt->beta_idr); + } + + if (ppt->has_density_transfers == _TRUE_) { + class_call(parser_read_string(pfc,"extra metric transfer functions",&string1,&flag1,errmsg), + errmsg, + errmsg); + + if ((flag1 == _TRUE_) && ((strstr(string1,"y") != NULL) || (strstr(string1,"y") != NULL))) { + ppt->has_metricpotential_transfers = _TRUE_; + } + } + if (ppt->has_cl_cmb_temperature == _TRUE_) { class_call(parser_read_string(pfc,"temperature contributions",&string1,&flag1,errmsg), @@ -1367,7 +1789,7 @@ int input_read_parameters( class_test(class_none_of_three(ppt->has_scalars,ppt->has_vectors,ppt->has_tensors), errmsg, - "You wrote: modes=%s. Could not identify any of the modes ('s', 'v', 't') in such input",string1); + "You wrote: modes='%s'. Could not identify any of the modes ('s', 'v', 't') in such input",string1); } if (ppt->has_scalars == _TRUE_) { @@ -1399,7 +1821,7 @@ int input_read_parameters( class_test(ppt->has_ad==_FALSE_ && ppt->has_bi ==_FALSE_ && ppt->has_cdi ==_FALSE_ && ppt->has_nid ==_FALSE_ && ppt->has_niv ==_FALSE_, errmsg, - "You wrote: ic=%s. Could not identify any of the initial conditions ('ad', 'bi', 'cdi', 'nid', 'niv') in such input",string1); + "You wrote: ic='%s'. Could not identify any of the initial conditions ('ad', 'bi', 'cdi', 'nid', 'niv') in such input",string1); } } @@ -1718,6 +2140,10 @@ int input_read_parameters( class_read_double("r",ppm->r); + if (ppt->has_scalars == _FALSE_) { + class_read_double("A_s",ppm->A_s); + } + if (ppm->r <= 0) { ppt->has_tensors = _FALSE_; } @@ -2089,6 +2515,17 @@ int input_read_parameters( } } + /** Do we want density and velocity transfer functions in Nbody gauge? */ + if ((ppt->has_density_transfers == _TRUE_) || (ppt->has_velocity_transfers == _TRUE_)){ + class_call(parser_read_string(pfc,"Nbody gauge transfer functions",&string1,&flag1,errmsg), + errmsg, + errmsg); + + if ((flag1 == _TRUE_) && ((strstr(string1,"y") != NULL) || (strstr(string1,"y") != NULL))) { + ppt->has_Nbody_gauge_transfers = _TRUE_; + } + } + /* deal with selection functions */ if ((ppt->has_cl_number_count == _TRUE_) || (ppt->has_cl_lensing_potential == _TRUE_)) { @@ -2111,7 +2548,7 @@ int input_read_parameters( ppt->selection=dirac; } else { - class_stop(errmsg,"In selection function input: type %s is unclear",string1); + class_stop(errmsg,"In selection function input: type '%s' is unclear",string1); } } @@ -2128,7 +2565,7 @@ int input_read_parameters( class_test(int1 > _SELECTION_NUM_MAX_, errmsg, - "you want to compute density Cl's for %d different bins, hence you should increase _SELECTION_NUM_MAX_ in include/transfer.h to at least this number", + "you want to compute density Cl's for %d different bins, hence you should increase _SELECTION_NUM_MAX_ in include/perturbations.h to at least this number", int1); ppt->selection_num = int1; @@ -2256,8 +2693,9 @@ int input_read_parameters( errmsg); if ((flag1 == _TRUE_)) { - if ((strstr(string1,"analytic") != NULL)) + if ((strstr(string1,"analytic") != NULL)){ ptr->has_nz_analytic = _TRUE_; + } else{ ptr->has_nz_file = _TRUE_; class_read_string("dNdz_selection",ptr->nz_file_name); @@ -2273,8 +2711,9 @@ int input_read_parameters( errmsg); if ((flag1 == _TRUE_)) { - if ((strstr(string1,"analytic") != NULL)) + if ((strstr(string1,"analytic") != NULL)){ ptr->has_nz_evo_analytic = _TRUE_; + } else{ ptr->has_nz_evo_file = _TRUE_; class_read_string("dNdz_evolution",ptr->nz_evo_file_name); @@ -2323,7 +2762,7 @@ int input_read_parameters( for (bin=0; binselection_num; bin++) { - /* the few lines below should be consistent with their counterpart in transfer.c, in transfer_selection_times() */ + /* the few lines below should be consistent with their counterpart in transfer.c, in transfer_selection_times() */ if (ppt->selection==gaussian) { z_max = ppt->selection_mean[bin]+ppt->selection_width[bin]*ppr->selection_cut_at_sigma; } @@ -2341,7 +2780,13 @@ int input_read_parameters( } /* end of z_max section */ - class_read_string("root",pop->root); + class_call(parser_read_string(pfc,"root",&string1,&flag1,errmsg), + errmsg, + errmsg); + if (flag1 == _TRUE_){ + class_test(strlen(string1)>_FILENAMESIZE_-32,errmsg,"Root directory name is too long. Please install in other directory, or increase _FILENAMESIZE_ in common.h"); + strcpy(pop->root,string1); + } class_call(parser_read_string(pfc, "headers", @@ -2368,7 +2813,7 @@ int input_read_parameters( pop->output_format = camb_format; else class_stop(errmsg, - "You wrote: format=%s. Could not identify any of the possible formats ('class', 'CLASS', 'camb', 'CAMB')",string1); + "You wrote: format='%s'. Could not identify any of the possible formats ('class', 'CLASS', 'camb', 'CAMB')",string1); } } @@ -2388,8 +2833,117 @@ int input_read_parameters( if ((strstr(string1,"halofit") != NULL) || (strstr(string1,"Halofit") != NULL) || (strstr(string1,"HALOFIT") != NULL)) { pnl->method=nl_halofit; + ppt->k_max_for_pk = MAX(ppt->k_max_for_pk,MAX(ppr->halofit_min_k_max,ppr->nonlinear_min_k_max)); ppt->has_nl_corrections_based_on_delta_m = _TRUE_; } + if ((strstr(string1,"hmcode") != NULL) || (strstr(string1,"HMCODE") != NULL) || (strstr(string1,"HMcode") != NULL) || (strstr(string1,"Hmcode") != NULL)) { + pnl->method=nl_HMcode; + ppt->k_max_for_pk = MAX(ppt->k_max_for_pk,MAX(ppr->hmcode_min_k_max,ppr->nonlinear_min_k_max)); + ppt->has_nl_corrections_based_on_delta_m = _TRUE_; + class_read_int("extrapolation_method",pnl->extrapolation_method); + + class_call(parser_read_string(pfc, + "feedback model", + &(string1), + &(flag1), + errmsg), + errmsg, + errmsg); + + if (flag1 == _TRUE_) { + + if (strstr(string1,"emu_dmonly") != NULL) { + pnl->feedback = nl_emu_dmonly; + } + if (strstr(string1,"owls_dmonly") != NULL) { + pnl->feedback = nl_owls_dmonly; + } + if (strstr(string1,"owls_ref") != NULL) { + pnl->feedback = nl_owls_ref; + } + if (strstr(string1,"owls_agn") != NULL) { + pnl->feedback = nl_owls_agn; + } + if (strstr(string1,"owls_dblim") != NULL) { + pnl->feedback = nl_owls_dblim; + } + } + + class_call(parser_read_double(pfc,"eta_0",¶m2,&flag2,errmsg), + errmsg, + errmsg); + class_call(parser_read_double(pfc,"c_min",¶m3,&flag3,errmsg), + errmsg, + errmsg); + + class_test(((flag1 == _TRUE_) && ((flag2 == _TRUE_) || (flag3 == _TRUE_))), + errmsg, + "In input file, you cannot enter both a baryonic feedback model and a choice of baryonic feedback parameters, choose one of both methods"); + + if ((flag2 == _TRUE_) && (flag3 == _TRUE_)) { + pnl->feedback = nl_user_defined; + class_read_double("eta_0", pnl->eta_0); + class_read_double("c_min", pnl->c_min); + } + else if ((flag2 == _TRUE_) && (flag3 == _FALSE_)) { + pnl->feedback = nl_user_defined; + class_read_double("eta_0", pnl->eta_0); + pnl->c_min = (0.98 - pnl->eta_0)/0.12; + } + else if ((flag2 == _FALSE_) && (flag3 == _TRUE_)) { + pnl->feedback = nl_user_defined; + class_read_double("c_min", pnl->c_min); + pnl->eta_0 = 0.98 - 0.12*pnl->c_min; + } + + class_call(parser_read_double(pfc,"z_infinity",¶m1,&flag1,errmsg), + errmsg, + errmsg); + + if (flag1 == _TRUE_) { + class_read_double("z_infinity", pnl->z_infinity); + } + } + + + if ((strstr(string1,"hmcode2020") != NULL) || (strstr(string1,"HMCODE2020") != NULL) || (strstr(string1,"HMcode2020") != NULL) || (strstr(string1,"Hmcode2020") != NULL)) { + pnl->method=nl_HMcode_2020; + ppt->k_max_for_pk = MAX(ppt->k_max_for_pk,MAX(ppr->hmcode_min_k_max,ppr->nonlinear_min_k_max)); + ppt->has_nl_corrections_based_on_delta_m = _TRUE_; + class_read_int("extrapolation_method",pnl->extrapolation_method); + + class_call(parser_read_string(pfc, + "feedback model", + &(string1), + &(flag1), + errmsg), + errmsg, + errmsg); + + + class_call(parser_read_double(pfc,"hmcode2020log10tagn",¶m2,&flag2,errmsg), + errmsg, + errmsg); + + class_test(((flag1 == _TRUE_) && ((flag2 == _TRUE_) || (flag3 == _TRUE_))), + errmsg, + "In input file, you cannot enter both a baryonic feedback model and a choice of baryonic feedback parameters, choose one of both methods"); + + if ((flag2 == _TRUE_)){ + pnl->feedback = hmcode2020tagn; + class_read_double("hmcode2020log10tagn", pnl->hmcode2020log10tagn); + } + + class_call(parser_read_double(pfc,"z_infinity",¶m1,&flag1,errmsg), + errmsg, + errmsg); + + if (flag1 == _TRUE_) { + class_read_double("z_infinity", pnl->z_infinity); + } + } + + } @@ -2422,98 +2976,6 @@ int input_read_parameters( class_read_int("output_verbose", pop->output_verbose); - /** (h) all precision parameters */ - - /** - (h.1.) parameters related to the background */ - - class_read_double("a_ini_over_a_today_default",ppr->a_ini_over_a_today_default); - class_read_double("back_integration_stepsize",ppr->back_integration_stepsize); - class_read_double("tol_background_integration",ppr->tol_background_integration); - class_read_double("tol_initial_Omega_r",ppr->tol_initial_Omega_r); - class_read_double("tol_ncdm_initial_w",ppr->tol_ncdm_initial_w); - class_read_double("safe_phi_scf",ppr->safe_phi_scf); - - /** - (h.2.) parameters related to the thermodynamics */ - - class_read_string("sBBN file",ppr->sBBN_file); - - class_read_double("recfast_z_initial",ppr->recfast_z_initial); - - class_read_int("recfast_Nz0",ppr->recfast_Nz0); - class_read_double("tol_thermo_integration",ppr->tol_thermo_integration); - - class_read_int("recfast_Heswitch",ppr->recfast_Heswitch); - class_read_double("recfast_fudge_He",ppr->recfast_fudge_He); - - class_read_int("recfast_Hswitch",ppr->recfast_Hswitch); - class_read_double("recfast_fudge_H",ppr->recfast_fudge_H); - if (ppr->recfast_Hswitch == _TRUE_) { - class_read_double("recfast_delta_fudge_H",ppr->recfast_delta_fudge_H); - class_read_double("recfast_AGauss1",ppr->recfast_AGauss1); - class_read_double("recfast_AGauss2",ppr->recfast_AGauss2); - class_read_double("recfast_zGauss1",ppr->recfast_zGauss1); - class_read_double("recfast_zGauss2",ppr->recfast_zGauss2); - class_read_double("recfast_wGauss1",ppr->recfast_wGauss1); - class_read_double("recfast_wGauss2",ppr->recfast_wGauss2); - } - - class_read_double("recfast_z_He_1",ppr->recfast_z_He_1); - class_read_double("recfast_delta_z_He_1",ppr->recfast_delta_z_He_1); - class_read_double("recfast_z_He_2",ppr->recfast_z_He_2); - class_read_double("recfast_delta_z_He_2",ppr->recfast_delta_z_He_2); - class_read_double("recfast_z_He_3",ppr->recfast_z_He_3); - class_read_double("recfast_delta_z_He_3",ppr->recfast_delta_z_He_3); - class_read_double("recfast_x_He0_trigger",ppr->recfast_x_He0_trigger); - class_read_double("recfast_x_He0_trigger2",ppr->recfast_x_He0_trigger2); - class_read_double("recfast_x_He0_trigger_delta",ppr->recfast_x_He0_trigger_delta); - class_read_double("recfast_x_H0_trigger",ppr->recfast_x_H0_trigger); - class_read_double("recfast_x_H0_trigger2",ppr->recfast_x_H0_trigger2); - class_read_double("recfast_x_H0_trigger_delta",ppr->recfast_x_H0_trigger_delta); - class_read_double("recfast_H_frac",ppr->recfast_H_frac); - - class_read_string("Alpha_inf hyrec file",ppr->hyrec_Alpha_inf_file); - class_read_string("R_inf hyrec file",ppr->hyrec_R_inf_file); - class_read_string("two_photon_tables hyrec file",ppr->hyrec_two_photon_tables_file); - - class_read_double("reionization_z_start_max",ppr->reionization_z_start_max); - class_read_double("reionization_sampling",ppr->reionization_sampling); - class_read_double("reionization_optical_depth_tol",ppr->reionization_optical_depth_tol); - class_read_double("reionization_start_factor",ppr->reionization_start_factor); - - class_read_int("thermo_rate_smoothing_radius",ppr->thermo_rate_smoothing_radius); - - /** - (h.3.) parameters related to the perturbations */ - - class_read_int("evolver",ppr->evolver); - - class_read_double("k_scalar_min_tau0",ppr->k_min_tau0); // obsolete precision parameter: read for compatibility with old precision files - class_read_double("k_scalar_max_tau0_over_l_max",ppr->k_max_tau0_over_l_max); // obsolete precision parameter: read for compatibility with old precision files - class_read_double("k_scalar_step_sub",ppr->k_step_sub); // obsolete precision parameter: read for compatibility with old precision files - class_read_double("k_scalar_step_super",ppr->k_step_super); // obsolete precision parameter: read for compatibility with old precision files - class_read_double("k_scalar_step_transition",ppr->k_step_transition); // obsolete precision parameter: read for compatibility with old precision files - class_read_double("k_scalar_k_per_decade_for_pk",ppr->k_per_decade_for_pk); // obsolete precision parameter: read for compatibility with old precision files - class_read_double("k_scalar_k_per_decade_for_bao",ppr->k_per_decade_for_bao); // obsolete precision parameter: read for compatibility with old precision files - class_read_double("k_scalar_bao_center",ppr->k_bao_center); // obsolete precision parameter: read for compatibility with old precision files - class_read_double("k_scalar_bao_width",ppr->k_bao_width); // obsolete precision parameter: read for compatibility with old precision files - - class_read_double("k_min_tau0",ppr->k_min_tau0); - class_read_double("k_max_tau0_over_l_max",ppr->k_max_tau0_over_l_max); - class_read_double("k_step_sub",ppr->k_step_sub); - class_read_double("k_step_super",ppr->k_step_super); - class_read_double("k_step_transition",ppr->k_step_transition); - class_read_double("k_step_super_reduction",ppr->k_step_super_reduction); - class_read_double("k_per_decade_for_pk",ppr->k_per_decade_for_pk); - class_read_double("k_per_decade_for_bao",ppr->k_per_decade_for_bao); - class_read_double("k_bao_center",ppr->k_bao_center); - class_read_double("k_bao_width",ppr->k_bao_width); - - class_read_double("start_small_k_at_tau_c_over_tau_h",ppr->start_small_k_at_tau_c_over_tau_h); - class_read_double("start_large_k_at_tau_h_over_tau_k",ppr->start_large_k_at_tau_h_over_tau_k); - class_read_double("tight_coupling_trigger_tau_c_over_tau_h",ppr->tight_coupling_trigger_tau_c_over_tau_h); - class_read_double("tight_coupling_trigger_tau_c_over_tau_k",ppr->tight_coupling_trigger_tau_c_over_tau_k); - class_read_double("start_sources_at_tau_c_over_tau_h",ppr->start_sources_at_tau_c_over_tau_h); - - class_read_int("tight_coupling_approximation",ppr->tight_coupling_approximation); if (ppt->has_tensors == _TRUE_) { /** - ---> Include ur and ncdm shear in tensor computation? */ @@ -2535,31 +2997,6 @@ int input_read_parameters( pth->compute_cb2_derivatives = _TRUE_; } - class_read_int("l_max_g",ppr->l_max_g); - class_read_int("l_max_pol_g",ppr->l_max_pol_g); - class_read_int("l_max_dr",ppr->l_max_dr); - class_read_int("l_max_ur",ppr->l_max_ur); - if (pba->N_ncdm>0) - class_read_int("l_max_ncdm",ppr->l_max_ncdm); - class_read_int("l_max_g_ten",ppr->l_max_g_ten); - class_read_int("l_max_pol_g_ten",ppr->l_max_pol_g_ten); - class_read_double("curvature_ini",ppr->curvature_ini); - class_read_double("entropy_ini",ppr->entropy_ini); - class_read_double("gw_ini",ppr->gw_ini); - class_read_double("perturb_integration_stepsize",ppr->perturb_integration_stepsize); - class_read_double("tol_tau_approx",ppr->tol_tau_approx); - class_read_double("tol_perturb_integration",ppr->tol_perturb_integration); - class_read_double("perturb_sampling_stepsize",ppr->perturb_sampling_stepsize); - - class_read_int("radiation_streaming_approximation",ppr->radiation_streaming_approximation); - class_read_double("radiation_streaming_trigger_tau_over_tau_k",ppr->radiation_streaming_trigger_tau_over_tau_k); - class_read_double("radiation_streaming_trigger_tau_c_over_tau",ppr->radiation_streaming_trigger_tau_c_over_tau); - - class_read_int("ur_fluid_approximation",ppr->ur_fluid_approximation); - class_read_int("ncdm_fluid_approximation",ppr->ncdm_fluid_approximation); - class_read_double("ur_fluid_trigger_tau_over_tau_k",ppr->ur_fluid_trigger_tau_over_tau_k); - class_read_double("ncdm_fluid_trigger_tau_over_tau_k",ppr->ncdm_fluid_trigger_tau_over_tau_k); - class_test(ppr->ur_fluid_trigger_tau_over_tau_k==ppr->radiation_streaming_trigger_tau_over_tau_k, errmsg, "please choose different values for precision parameters ur_fluid_trigger_tau_over_tau_k and radiation_streaming_trigger_tau_over_tau_k, in order to avoid switching two approximation schemes at the same time"); @@ -2575,48 +3012,35 @@ int input_read_parameters( "please choose different values for precision parameters ncdm_fluid_trigger_tau_over_tau_k and ur_fluid_trigger_tau_over_tau_k, in order to avoid switching two approximation schemes at the same time"); } + if (pba->Omega0_idr != 0.){ + class_test(ppr->idr_streaming_trigger_tau_over_tau_k==ppr->radiation_streaming_trigger_tau_over_tau_k, + errmsg, + "please choose different values for precision parameters dark_radiation_trigger_tau_over_tau_k and radiation_streaming_trigger_tau_over_tau_k, in order to avoid switching two approximation schemes at the same time"); + + class_test(ppr->idr_streaming_trigger_tau_over_tau_k==ppr->ur_fluid_trigger_tau_over_tau_k, + errmsg, + "please choose different values for precision parameters dark_radiation_trigger_tau_over_tau_k and ur_fluid_trigger_tau_over_tau_k, in order to avoid switching two approximation schemes at the same time"); + + class_test(ppr->idr_streaming_trigger_tau_over_tau_k==ppr->ncdm_fluid_trigger_tau_over_tau_k, + errmsg, + "please choose different values for precision parameters dark_radiation_trigger_tau_over_tau_k and ncdm_fluid_trigger_tau_over_tau_k, in order to avoid switching two approximation schemes at the same time"); + } + - class_read_double("neglect_CMB_sources_below_visibility",ppr->neglect_CMB_sources_below_visibility); - - /** - (h.4.) parameter related to the primordial spectra */ - - class_read_double("k_per_decade_primordial",ppr->k_per_decade_primordial); - class_read_double("primordial_inflation_ratio_min",ppr->primordial_inflation_ratio_min); - class_read_double("primordial_inflation_ratio_max",ppr->primordial_inflation_ratio_max); - class_read_int("primordial_inflation_phi_ini_maxit",ppr->primordial_inflation_phi_ini_maxit); - class_read_double("primordial_inflation_pt_stepsize",ppr->primordial_inflation_pt_stepsize); - class_read_double("primordial_inflation_bg_stepsize",ppr->primordial_inflation_bg_stepsize); - class_read_double("primordial_inflation_tol_integration",ppr->primordial_inflation_tol_integration); - class_read_double("primordial_inflation_attractor_precision_pivot",ppr->primordial_inflation_attractor_precision_pivot); - class_read_double("primordial_inflation_attractor_precision_initial",ppr->primordial_inflation_attractor_precision_initial); - class_read_int("primordial_inflation_attractor_maxit",ppr->primordial_inflation_attractor_maxit); - class_read_double("primordial_inflation_tol_curvature",ppr->primordial_inflation_tol_curvature); - class_read_double("primordial_inflation_aH_ini_target",ppr->primordial_inflation_aH_ini_target); - class_read_double("primordial_inflation_end_dphi",ppr->primordial_inflation_end_dphi); - class_read_double("primordial_inflation_end_logstep",ppr->primordial_inflation_end_logstep); - class_read_double("primordial_inflation_small_epsilon",ppr->primordial_inflation_small_epsilon); - class_read_double("primordial_inflation_small_epsilon_tol",ppr->primordial_inflation_small_epsilon_tol); - class_read_double("primordial_inflation_extra_efolds",ppr->primordial_inflation_extra_efolds); - - /** - (h.5.) parameter related to the transfer functions */ - - class_read_double("l_logstep",ppr->l_logstep); - class_read_int("l_linstep",ppr->l_linstep); - - class_read_double("hyper_x_min",ppr->hyper_x_min); - class_read_double("hyper_sampling_flat",ppr->hyper_sampling_flat); - class_read_double("hyper_sampling_curved_low_nu",ppr->hyper_sampling_curved_low_nu); - class_read_double("hyper_sampling_curved_high_nu",ppr->hyper_sampling_curved_high_nu); - class_read_double("hyper_nu_sampling_step",ppr->hyper_nu_sampling_step); - class_read_double("hyper_phi_min_abs",ppr->hyper_phi_min_abs); - class_read_double("hyper_x_tol",ppr->hyper_x_tol); - class_read_double("hyper_flat_approximation_nu",ppr->hyper_flat_approximation_nu); - - class_read_double("q_linstep",ppr->q_linstep); - class_read_double("q_logstep_spline",ppr->q_logstep_spline); - class_read_double("q_logstep_open",ppr->q_logstep_open); - class_read_double("q_logstep_trapzd",ppr->q_logstep_trapzd); - class_read_double("q_numstep_transition",ppr->q_numstep_transition); + /** + * Here we can place all obsolete (deprecated) names for the precision parameters, + * so they will still get read. + * The new parameter names should be used preferrably + * */ + class_read_double("k_scalar_min_tau0",ppr->k_min_tau0); // obsolete precision parameter: read for compatibility with old precision files + class_read_double("k_scalar_max_tau0_over_l_max",ppr->k_max_tau0_over_l_max); // obsolete precision parameter: read for compatibility with old precision files + class_read_double("k_scalar_step_sub",ppr->k_step_sub); // obsolete precision parameter: read for compatibility with old precision files + class_read_double("k_scalar_step_super",ppr->k_step_super); // obsolete precision parameter: read for compatibility with old precision files + class_read_double("k_scalar_step_transition",ppr->k_step_transition); // obsolete precision parameter: read for compatibility with old precision files + class_read_double("k_scalar_k_per_decade_for_pk",ppr->k_per_decade_for_pk); // obsolete precision parameter: read for compatibility with old precision files + class_read_double("k_scalar_k_per_decade_for_bao",ppr->k_per_decade_for_bao); // obsolete precision parameter: read for compatibility with old precision files + class_read_double("k_scalar_bao_center",ppr->k_bao_center); // obsolete precision parameter: read for compatibility with old precision files + class_read_double("k_scalar_bao_width",ppr->k_bao_width); // obsolete precision parameter: read for compatibility with old precision files class_read_double("k_step_trans_scalars",ppr->q_linstep); // obsolete precision parameter: read for compatibility with old precision files class_read_double("k_step_trans_tensors",ppr->q_linstep); // obsolete precision parameter: read for compatibility with old precision files @@ -2624,22 +3048,6 @@ int input_read_parameters( class_read_double("q_linstep_trans",ppr->q_linstep); // obsolete precision parameter: read for compatibility with old precision files class_read_double("q_logstep_trans",ppr->q_logstep_spline); // obsolete precision parameter: read for compatibility with old precision files - class_read_double("transfer_neglect_delta_k_S_t0",ppr->transfer_neglect_delta_k_S_t0); - class_read_double("transfer_neglect_delta_k_S_t1",ppr->transfer_neglect_delta_k_S_t1); - class_read_double("transfer_neglect_delta_k_S_t2",ppr->transfer_neglect_delta_k_S_t2); - class_read_double("transfer_neglect_delta_k_S_e",ppr->transfer_neglect_delta_k_S_e); - class_read_double("transfer_neglect_delta_k_V_t1",ppr->transfer_neglect_delta_k_V_t1); - class_read_double("transfer_neglect_delta_k_V_t2",ppr->transfer_neglect_delta_k_V_t2); - class_read_double("transfer_neglect_delta_k_V_e",ppr->transfer_neglect_delta_k_V_e); - class_read_double("transfer_neglect_delta_k_V_b",ppr->transfer_neglect_delta_k_V_b); - class_read_double("transfer_neglect_delta_k_T_t2",ppr->transfer_neglect_delta_k_T_t2); - class_read_double("transfer_neglect_delta_k_T_e",ppr->transfer_neglect_delta_k_T_e); - class_read_double("transfer_neglect_delta_k_T_b",ppr->transfer_neglect_delta_k_T_b); - - class_read_double("transfer_neglect_late_source",ppr->transfer_neglect_late_source); - - class_read_double("l_switch_limber",ppr->l_switch_limber); - class_call(parser_read_string(pfc, "l_switch_limber_for_cl_density_over_z", &string1, @@ -2652,30 +3060,6 @@ int input_read_parameters( errmsg, "You passed in input a precision parameter called l_switch_limber_for_cl_density_over_z. This syntax is deprecated since v2.5.0. Please use instead the two precision parameters l_switch_limber_for_nc_local_over_z, l_switch_limber_for_nc_los_over_z, defined in include/common.h, and allowing for better performance."); - class_read_double("l_switch_limber_for_nc_local_over_z",ppr->l_switch_limber_for_nc_local_over_z); - class_read_double("l_switch_limber_for_nc_los_over_z",ppr->l_switch_limber_for_nc_los_over_z); - - class_read_double("selection_cut_at_sigma",ppr->selection_cut_at_sigma); - class_read_double("selection_sampling",ppr->selection_sampling); - class_read_double("selection_sampling_bessel",ppr->selection_sampling_bessel); - class_read_double("selection_sampling_bessel_los",ppr->selection_sampling_bessel_los); - class_read_double("selection_tophat_edge",ppr->selection_tophat_edge); - - /** - (h.6.) parameters related to nonlinear calculations */ - - class_read_double("halofit_dz",ppr->halofit_dz); - class_read_double("halofit_min_k_nonlinear",ppr->halofit_min_k_nonlinear); - class_read_double("halofit_k_per_decade",ppr->halofit_k_per_decade); - class_read_double("halofit_sigma_precision",ppr->halofit_sigma_precision); - - /** - (h.7.) parameter related to lensing */ - - class_read_int("accurate_lensing",ppr->accurate_lensing); - class_read_int("delta_l_max",ppr->delta_l_max); - if (ppr->accurate_lensing == _TRUE_) { - class_read_int("num_mu_minus_lmax",ppr->num_mu_minus_lmax); - class_read_int("tol_gauss_legendre",ppr->tol_gauss_legendre); - } /** (i) Write values in file */ if (ple->has_lensed_cls == _TRUE_) ppt->l_scalar_max+=ppr->delta_l_max; @@ -2746,6 +3130,33 @@ int input_read_parameters( } + /** - (i.5) special steps if we want Halofit with wa_fld non-zero: + so-called "Pk_equal method" of 0810.0190 and 1601.07230 */ + + if ((pnl->method == nl_halofit) && (pba->Omega0_fld != 0.) && (pba->wa_fld != 0.)){ + + class_call(parser_read_string(pfc,"pk_eq",&string1,&flag1,errmsg), + errmsg, + errmsg); + + if ((flag1 == _TRUE_) && ((strstr(string1,"y") != NULL) || (strstr(string1,"Y") != NULL))) { + + pnl->has_pk_eq = _TRUE_; + + } + } + + if (pnl->has_pk_eq == _TRUE_) { + + if (input_verbose > 0) { + printf(" -> since you want to use Halofit with a non-zero wa_fld, calling background module to\n"); + printf(" extract the effective w(tau), Omega_m(tau) parameters required by the Pk_equal method\n"); + } + class_call(input_prepare_pk_eq(ppr,pba,pth,pnl,input_verbose,errmsg), + errmsg, + errmsg); + } + return _SUCCESS_; } @@ -2778,7 +3189,6 @@ int input_default_params( ) { double sigma_B; /* Stefan-Boltzmann constant in \f$ W/m^2/K^4 = Kg/K^4/s^3 \f$*/ - int filenum; sigma_B = 2. * pow(_PI_,5) * pow(_k_B_,4) / 15. / pow(_h_P_,3) / pow(_c_,2); @@ -2805,6 +3215,9 @@ int input_default_params( pba->T_cmb = 2.7255; pba->Omega0_g = (4.*sigma_B/_c_*pow(pba->T_cmb,4.)) / (3.*_c_*_c_*1.e10*pba->h*pba->h/_Mpc_over_m_/_Mpc_over_m_/8./_PI_/_G_); pba->Omega0_ur = 3.046*7./8.*pow(4./11.,4./3.)*pba->Omega0_g; + pba->Omega0_idr = 0.0; + pba->Omega0_idm_dr = 0.0; + pba->T_idr = 0.0; pba->Omega0_b = 0.022032/pow(pba->h,2); pba->Omega0_cdm = 0.12038/pow(pba->h,2); pba->Omega0_dcdmdr = 0.0; @@ -2833,12 +3246,16 @@ int input_default_params( pba->Omega0_k = 0.; pba->K = 0.; pba->sgnK = 0; - pba->Omega0_lambda = 1.-pba->Omega0_k-pba->Omega0_g-pba->Omega0_ur-pba->Omega0_b-pba->Omega0_cdm-pba->Omega0_ncdm_tot-pba->Omega0_dcdmdr; + pba->Omega0_lambda = 1.-pba->Omega0_k-pba->Omega0_g-pba->Omega0_ur-pba->Omega0_b-pba->Omega0_cdm-pba->Omega0_ncdm_tot-pba->Omega0_dcdmdr-pba->Omega0_idm_dr-pba->Omega0_idr; pba->Omega0_fld = 0.; pba->a_today = 1.; - pba->w0_fld=-1.; - pba->wa_fld=0.; - pba->cs2_fld=1.; + pba->use_ppf = _TRUE_; + pba->c_gamma_over_c_fld = 0.4; + pba->fluid_equation_of_state = CLP; + pba->w0_fld = -1.; + pba->wa_fld = 0.; + pba->Omega_EDE = 0.; + pba->cs2_fld = 1.; pba->shooting_failed = _FALSE_; @@ -2875,6 +3292,11 @@ int input_default_params( pth->compute_damping_scale = _FALSE_; + pth->a_idm_dr = 0.; + pth->b_idr = 0.; + pth->nindex_idm_dr = 4.; + pth->m_idm = 1.e11; + /** - perturbation structure */ ppt->has_cl_cmb_temperature = _FALSE_; @@ -2885,6 +3307,7 @@ int input_default_params( ppt->has_pk_matter = _FALSE_; ppt->has_density_transfers = _FALSE_; ppt->has_velocity_transfers = _FALSE_; + ppt->has_metricpotential_transfers = _FALSE_; ppt->has_nl_corrections_based_on_delta_m = _FALSE_; @@ -2893,6 +3316,8 @@ int input_default_params( ppt->has_nc_lens = _FALSE_; ppt->has_nc_gr = _FALSE_; + //ppt->pk_only_cdm_bar=_FALSE_; + ppt->switch_sw = 1; ppt->switch_eisw = 1; ppt->switch_lisw = 1; @@ -2919,21 +3344,16 @@ int input_default_params( ppt->l_vector_max=500; ppt->l_tensor_max=500; ppt->l_lss_max=300; - ppt->k_max_for_pk=0.1; + ppt->k_max_for_pk=1.; ppt->gauge=synchronous; + ppt->idr_nature=idr_free_streaming; + + ppt->has_Nbody_gauge_transfers = _FALSE_; + ppt->k_output_values_num=0; ppt->store_perturbations = _FALSE_; - ppt->number_of_scalar_titles=0; - ppt->number_of_vector_titles=0; - ppt->number_of_tensor_titles=0; - for (filenum = 0; filenum<_MAX_NUMBER_OF_K_FILES_; filenum++){ - ppt->scalar_perturbations_data[filenum] = NULL; - ppt->vector_perturbations_data[filenum] = NULL; - ppt->tensor_perturbations_data[filenum] = NULL; - } - ppt->index_k_output_values=NULL; ppt->three_ceff2_ur=1.; ppt->three_cvis2_ur=1.; @@ -3024,10 +3444,19 @@ int input_default_params( ppm->custom9=0.; ppm->custom10=0.; + /** - nonlinear structure */ + + pnl->method = nl_none; + pnl->extrapolation_method = extrap_max_scaled; + pnl->has_pk_eq = _FALSE_; + + pnl->feedback = nl_emu_dmonly; + pnl->z_infinity = 10.; + /** - transfer structure */ ptr->selection_bias[0]=1.; - ptr->selection_magnification_bias[0]=1.; + ptr->selection_magnification_bias[0]=0.; ptr->lcmb_rescale=1.; ptr->lcmb_pivot=0.1; ptr->lcmb_tilt=0.; @@ -3037,6 +3466,15 @@ int input_default_params( ptr->has_nz_evo_analytic = _FALSE_; ptr->has_nz_evo_file = _FALSE_; + /** - spectra structure */ + + psp->z_max_pk = pop->z_pk[0]; + psp->non_diag=0; + + /** - lensing structure */ + + ple->has_lensed_cls = _FALSE_; + /** - output structure */ pop->z_pk_num = 1; @@ -3049,21 +3487,6 @@ int input_default_params( pop->write_perturbations = _FALSE_; pop->write_primordial = _FALSE_; - /** - spectra structure */ - - psp->z_max_pk = pop->z_pk[0]; - psp->non_diag=0; - - /** - nonlinear structure */ - - /** - lensing structure */ - - ple->has_lensed_cls = _FALSE_; - - /** - nonlinear structure */ - - pnl->method = nl_none; - /** - all verbose parameters */ pba->background_verbose = 0; @@ -3093,252 +3516,21 @@ int input_default_params( int input_default_precision ( struct precision * ppr ) { - /** Initialize presicion parameters for different structures: - * - parameters related to the background - */ - - ppr->a_ini_over_a_today_default = 1.e-14; - ppr->back_integration_stepsize = 7.e-3; - ppr->tol_background_integration = 1.e-2; - - ppr->tol_initial_Omega_r = 1.e-4; - ppr->tol_M_ncdm = 1.e-7; - ppr->tol_ncdm = 1.e-3; - ppr->tol_ncdm_synchronous = 1.e-3; - ppr->tol_ncdm_newtonian = 1.e-5; - ppr->tol_ncdm_bg = 1.e-5; - ppr->tol_ncdm_initial_w=1.e-3; - - /** - * - parameters related to the thermodynamics - */ - - /* for bbn */ - sprintf(ppr->sBBN_file,__CLASSDIR__); - strcat(ppr->sBBN_file,"/bbn/sBBN.dat"); - - /* for recombination */ - - ppr->recfast_z_initial=1.e4; - - ppr->recfast_Nz0=20000; - ppr->tol_thermo_integration=1.e-2; - - ppr->recfast_Heswitch=6; /* from recfast 1.4 */ - ppr->recfast_fudge_He=0.86; /* from recfast 1.4 */ - - ppr->recfast_Hswitch = _TRUE_; /* from recfast 1.5 */ - ppr->recfast_fudge_H = 1.14; /* from recfast 1.4 */ - ppr->recfast_delta_fudge_H = -0.015; /* from recfast 1.5.2 */ - ppr->recfast_AGauss1 = -0.14; /* from recfast 1.5 */ - ppr->recfast_AGauss2 = 0.079; /* from recfast 1.5.2 */ - ppr->recfast_zGauss1 = 7.28; /* from recfast 1.5 */ - ppr->recfast_zGauss2 = 6.73; /* from recfast 1.5.2 */ - ppr->recfast_wGauss1 = 0.18; /* from recfast 1.5 */ - ppr->recfast_wGauss2 = 0.33; /* from recfast 1.5 */ - - ppr->recfast_z_He_1 = 8000.; /* from recfast 1.4 */ - ppr->recfast_delta_z_He_1 = 50.; /* found to be OK on 3.09.10 */ - ppr->recfast_z_He_2 = 5000.; /* from recfast 1.4 */ - ppr->recfast_delta_z_He_2 = 100.; /* found to be OK on 3.09.10 */ - ppr->recfast_z_He_3 = 3500.; /* from recfast 1.4 */ - ppr->recfast_delta_z_He_3 = 50.; /* found to be OK on 3.09.10 */ - ppr->recfast_x_He0_trigger = 0.995; /* raised from 0.99 to 0.995 for smoother Helium */ - ppr->recfast_x_He0_trigger2 = 0.995; /* raised from 0.985 to same as previous one for smoother Helium */ - ppr->recfast_x_He0_trigger_delta = 0.05; /* found to be OK on 3.09.10 */ - ppr->recfast_x_H0_trigger = 0.995; /* raised from 0.99 to 0.995 for smoother Hydrogen */ - ppr->recfast_x_H0_trigger2 = 0.995; /* raised from 0.98 to same as previous one for smoother Hydrogen */ - ppr->recfast_x_H0_trigger_delta = 0.05; /* found to be OK on 3.09.10 */ - - ppr->recfast_H_frac=1.e-3; /* from recfast 1.4 */ - - sprintf(ppr->hyrec_Alpha_inf_file,__CLASSDIR__); - strcat(ppr->hyrec_Alpha_inf_file,"/hyrec/Alpha_inf.dat"); - sprintf(ppr->hyrec_R_inf_file,__CLASSDIR__); - strcat(ppr->hyrec_R_inf_file,"/hyrec/R_inf.dat"); - sprintf(ppr->hyrec_two_photon_tables_file,__CLASSDIR__); - strcat(ppr->hyrec_two_photon_tables_file,"/hyrec/two_photon_tables.dat"); - - /* for reionization */ - - ppr->reionization_z_start_max = 50.; - ppr->reionization_sampling=5.e-2; - ppr->reionization_optical_depth_tol=1.e-4; - ppr->reionization_start_factor=8.; - - /* general */ - - ppr->thermo_rate_smoothing_radius=50; - - /** - * - parameters related to the perturbations - */ - - ppr->evolver = ndf15; - - ppr->k_min_tau0=0.1; - ppr->k_max_tau0_over_l_max=2.4; // very relevant for accuracy of lensed ClTT at highest l's - ppr->k_step_sub=0.05; - ppr->k_step_super=0.002; - ppr->k_step_transition=0.2; - ppr->k_step_super_reduction=0.1; - ppr->k_per_decade_for_pk=10.; - ppr->k_per_decade_for_bao=70.; - ppr->k_bao_center=3.; - ppr->k_bao_width=4.; - - ppr->start_small_k_at_tau_c_over_tau_h = 0.0015; /* decrease to start earlier in time */ - ppr->start_large_k_at_tau_h_over_tau_k = 0.07; /* decrease to start earlier in time */ - ppr->tight_coupling_trigger_tau_c_over_tau_h=0.015; /* decrease to switch off earlier in time */ - ppr->tight_coupling_trigger_tau_c_over_tau_k=0.01; /* decrease to switch off earlier in time */ - ppr->start_sources_at_tau_c_over_tau_h = 0.008; /* decrease to start earlier in time */ - ppr->tight_coupling_approximation=(int)compromise_CLASS; - - ppr->l_max_g=12; - ppr->l_max_pol_g=10; - ppr->l_max_dr=17; - ppr->l_max_ur=17; - ppr->l_max_ncdm=17; - ppr->l_max_g_ten=5; - ppr->l_max_pol_g_ten=5; - - ppr->curvature_ini=1.; /* initial curvature; used to fix adiabatic initial conditions; must remain fixed to one as long as the primordial adiabatic spectrum stands for the curvature power spectrum */ - ppr->entropy_ini=1.; /* initial entropy; used to fix isocurvature initial conditions; must remain fixed to one as long as the primordial isocurvature spectrum stands for an entropy power spectrum */ - //ppr->gw_ini=0.25; /* to match normalization convention for GW in most of literature and ensure standard definition of r */ - ppr->gw_ini=1.; - - ppr->perturb_integration_stepsize=0.5; - - ppr->tol_tau_approx=1.e-10; - ppr->tol_perturb_integration=1.e-5; - ppr->perturb_sampling_stepsize=0.10; - - ppr->radiation_streaming_approximation = rsa_MD_with_reio; - ppr->radiation_streaming_trigger_tau_over_tau_k = 45.; - ppr->radiation_streaming_trigger_tau_c_over_tau = 5.; - - ppr->ur_fluid_approximation = ufa_CLASS; - ppr->ur_fluid_trigger_tau_over_tau_k = 30.; - - ppr->ncdm_fluid_approximation = ncdmfa_CLASS; - ppr->ncdm_fluid_trigger_tau_over_tau_k = 31.; - - ppr->neglect_CMB_sources_below_visibility = 1.e-3; - - /** - * - parameter related to the primordial spectra - */ - - ppr->k_per_decade_primordial = 10.; - - ppr->primordial_inflation_ratio_min=100.; - ppr->primordial_inflation_ratio_max=1/50.; - ppr->primordial_inflation_phi_ini_maxit=10000; - ppr->primordial_inflation_pt_stepsize=0.01; - ppr->primordial_inflation_bg_stepsize=0.005; - ppr->primordial_inflation_tol_integration=1.e-3; - ppr->primordial_inflation_attractor_precision_pivot=0.001; - ppr->primordial_inflation_attractor_precision_initial=0.1; - ppr->primordial_inflation_attractor_maxit=10; - ppr->primordial_inflation_tol_curvature=1.e-3; - ppr->primordial_inflation_aH_ini_target=0.9; - ppr->primordial_inflation_end_dphi=1.e-10; - ppr->primordial_inflation_end_logstep=10.; - ppr->primordial_inflation_small_epsilon=0.1; - ppr->primordial_inflation_small_epsilon_tol=0.01; - ppr->primordial_inflation_extra_efolds=2.; - - /** - * - parameter related to the transfer functions - */ - - ppr->l_logstep=1.12; - ppr->l_linstep=40; - - ppr->hyper_x_min = 1.e-5; - ppr->hyper_sampling_flat = 8.; - ppr->hyper_sampling_curved_low_nu = 6.0; - ppr->hyper_sampling_curved_high_nu = 3.0; - ppr->hyper_nu_sampling_step = 1000.; - ppr->hyper_phi_min_abs = 1.e-10; - ppr->hyper_x_tol = 1.e-4; - ppr->hyper_flat_approximation_nu = 4000.; - - ppr->q_linstep=0.45; - ppr->q_logstep_spline=170.; - ppr->q_logstep_open=6.; - ppr->q_logstep_trapzd=20.; - ppr->q_numstep_transition=250.; - - ppr->transfer_neglect_delta_k_S_t0 = 0.15; - ppr->transfer_neglect_delta_k_S_t1 = 0.04; - ppr->transfer_neglect_delta_k_S_t2 = 0.15; - ppr->transfer_neglect_delta_k_S_e = 0.11; - ppr->transfer_neglect_delta_k_V_t1 = 1.; - ppr->transfer_neglect_delta_k_V_t2 = 1.; - ppr->transfer_neglect_delta_k_V_e = 1.; - ppr->transfer_neglect_delta_k_V_b = 1.; - ppr->transfer_neglect_delta_k_T_t2 = 0.2; - ppr->transfer_neglect_delta_k_T_e = 0.25; - ppr->transfer_neglect_delta_k_T_b = 0.1; - - ppr->transfer_neglect_late_source = 400.; - - ppr->l_switch_limber=10.; - // For density Cl, we recommend not to use the Limber approximation - // at all, and hence to put here a very large number (e.g. 10000); but - // if you have wide and smooth selection functions you may wish to - // use it; then 100 might be OK - ppr->l_switch_limber_for_nc_local_over_z=100.; - // For terms integrated along the line-of-sight involving spherical - // Bessel functions (but not their derivatives), Limber - // approximation works well. High precision can be reached with 2000 - // only. But if you have wide and smooth selection functions you may - // reduce to e.g. 30. - ppr->l_switch_limber_for_nc_los_over_z=30.; - - ppr->selection_cut_at_sigma=5.; - ppr->selection_sampling=50; - ppr->selection_sampling_bessel=20; - ppr->selection_sampling_bessel_los=ppr->selection_sampling_bessel; - ppr->selection_tophat_edge=0.1; - - /** - * - parameters related to spectra module - */ - - /* nothing */ - - /** - * - parameters related to nonlinear module - */ - - ppr->halofit_dz=0.1; - ppr->halofit_min_k_nonlinear=0.0035; - ppr->halofit_k_per_decade = 80.; - ppr->halofit_sigma_precision=0.05; - ppr->halofit_min_k_max=5.; - - /** - * - parameter related to lensing - */ - - ppr->accurate_lensing=_FALSE_; - ppr->num_mu_minus_lmax=70; - ppr->delta_l_max=500; // 750 for 0.2% near l_max, 1000 for 0.1% - /** * - automatic estimate of machine precision */ + ppr->smallest_allowed_variation=DBL_EPSILON; //get_machine_precision(&(ppr->smallest_allowed_variation)); - ppr->smallest_allowed_variation=DBL_EPSILON; class_test(ppr->smallest_allowed_variation < 0, ppr->error_message, "smallest_allowed_variation = %e < 0",ppr->smallest_allowed_variation); - ppr->tol_gauss_legendre = ppr->smallest_allowed_variation; + +#define __ASSIGN_DEFAULT_PRECISION__ +#include "precisions.h" +#undef __ASSIGN_DEFAULT_PRECISION__ return _SUCCESS_; @@ -3497,20 +3689,37 @@ int input_try_unknown_parameters(double * unknown_parameter, struct nonlinear nl; /* for non-linear spectra */ struct lensing le; /* for lensed spectra */ struct output op; /* for output files */ + int i; double rho_dcdm_today, rho_dr_today; struct fzerofun_workspace * pfzw; int input_verbose; int flag; int param; + short compute_sigma8 = _FALSE_; pfzw = (struct fzerofun_workspace *) voidpfzw; - + /** - Read input parameters */ for (i=0; i < unknown_parameters_size; i++) { sprintf(pfzw->fc.value[pfzw->unknown_parameters_index[i]], "%e",unknown_parameter[i]); } + class_call(input_read_precisions(&(pfzw->fc), + &pr, + &ba, + &th, + &pt, + &tr, + &pm, + &sp, + &nl, + &le, + &op, + errmsg), + errmsg, + errmsg); + class_call(input_read_parameters(&(pfzw->fc), &pr, &ba, @@ -3533,81 +3742,114 @@ int input_try_unknown_parameters(double * unknown_parameter, errmsg), errmsg, errmsg); + if (flag == _TRUE_) input_verbose = param; else input_verbose = 0; - // Optimise flags for sigma8 calculation. - pt.k_max_for_pk=1.0; - pt.has_pk_matter=_TRUE_; - pt.has_perturbations = _TRUE_; - pt.has_cl_cmb_temperature = _FALSE_; - pt.has_cls = _FALSE_; - pt.has_cl_cmb_polarization = _FALSE_; - pt.has_cl_cmb_lensing_potential = _FALSE_; - pt.has_cl_number_count = _FALSE_; - pt.has_cl_lensing_potential=_FALSE_; - pt.has_density_transfers=_FALSE_; - pt.has_velocity_transfers=_FALSE_; - - - /** - Do computations */ + + /** - Optimise flags for sigma8 calculation.*/ + for (i=0; i < unknown_parameters_size; i++) { + if (pfzw->target_name[i] == sigma8) { + compute_sigma8 = _TRUE_; + } + } + if (compute_sigma8 == _TRUE_) { + pt.k_max_for_pk=1.0; + pt.has_pk_matter=_TRUE_; + pt.has_perturbations = _TRUE_; + pt.has_cl_cmb_temperature = _FALSE_; + pt.has_cls = _FALSE_; + pt.has_cl_cmb_polarization = _FALSE_; + pt.has_cl_cmb_lensing_potential = _FALSE_; + pt.has_cl_number_count = _FALSE_; + pt.has_cl_lensing_potential=_FALSE_; + pt.has_density_transfers=_FALSE_; + pt.has_velocity_transfers=_FALSE_; + + } + + /** - Shoot forward into class up to required stage */ if (pfzw->required_computation_stage >= cs_background){ if (input_verbose>2) printf("Stage 1: background\n"); ba.background_verbose = 0; - class_call(background_init(&pr,&ba), ba.error_message, errmsg); + class_call(background_init(&pr,&ba), + ba.error_message, + errmsg + ); } if (pfzw->required_computation_stage >= cs_thermodynamics){ - if (input_verbose>2) - printf("Stage 2: thermodynamics\n"); + if (input_verbose>2) + printf("Stage 2: thermodynamics\n"); pr.recfast_Nz0 = 10000; th.thermodynamics_verbose = 0; - class_call(thermodynamics_init(&pr,&ba,&th), th.error_message, errmsg); + class_call_except(thermodynamics_init(&pr,&ba,&th), + th.error_message, + errmsg, + background_free(&ba) + ); } if (pfzw->required_computation_stage >= cs_perturbations){ - if (input_verbose>2) - printf("Stage 3: perturbations\n"); + if (input_verbose>2) + printf("Stage 3: perturbations\n"); pt.perturbations_verbose = 0; - class_call(perturb_init(&pr,&ba,&th,&pt), pt.error_message, errmsg); + class_call_except(perturb_init(&pr,&ba,&th,&pt), + pt.error_message, + errmsg, + thermodynamics_free(&th);background_free(&ba) + ); } if (pfzw->required_computation_stage >= cs_primordial){ if (input_verbose>2) printf("Stage 4: primordial\n"); pm.primordial_verbose = 0; - class_call(primordial_init(&pr,&pt,&pm), pm.error_message, errmsg); + class_call_except(primordial_init(&pr,&pt,&pm), + pm.error_message, + errmsg, + perturb_free(&pt);thermodynamics_free(&th);background_free(&ba) + ); } if (pfzw->required_computation_stage >= cs_nonlinear){ if (input_verbose>2) printf("Stage 5: nonlinear\n"); nl.nonlinear_verbose = 0; - class_call(nonlinear_init(&pr,&ba,&th,&pt,&pm,&nl), nl.error_message, errmsg); + class_call_except(nonlinear_init(&pr,&ba,&th,&pt,&pm,&nl), + nl.error_message, + errmsg, + primordial_free(&pm);perturb_free(&pt);thermodynamics_free(&th);background_free(&ba) + ); } if (pfzw->required_computation_stage >= cs_transfer){ if (input_verbose>2) printf("Stage 6: transfer\n"); tr.transfer_verbose = 0; - class_call(transfer_init(&pr,&ba,&th,&pt,&nl,&tr), tr.error_message, errmsg); + class_call_except(transfer_init(&pr,&ba,&th,&pt,&nl,&tr), + tr.error_message, + errmsg, + nonlinear_free(&nl);primordial_free(&pm);perturb_free(&pt);thermodynamics_free(&th);background_free(&ba) + ); } if (pfzw->required_computation_stage >= cs_spectra){ if (input_verbose>2) printf("Stage 7: spectra\n"); sp.spectra_verbose = 0; - class_call(spectra_init(&pr,&ba,&pt,&pm,&nl,&tr,&sp),sp.error_message, errmsg); + class_call_except(spectra_init(&pr,&ba,&pt,&pm,&nl,&tr,&sp), + sp.error_message, + errmsg, + transfer_free(&tr);nonlinear_free(&nl);primordial_free(&pm);perturb_free(&pt);thermodynamics_free(&th);background_free(&ba) + ); } - + /** - Get the corresponding shoot variable and put into output */ for (i=0; i < pfzw->target_size; i++) { switch (pfzw->target_name[i]) { - case tn_sigma8: - output[i] = sp.sigma8 - pfzw->target_value[i]; - break; case theta_s: output[i] = 100.*th.rs_rec/th.ra_rec-pfzw->target_value[i]; break; @@ -3641,6 +3883,9 @@ int input_try_unknown_parameters(double * unknown_parameter, rho_dr_today = 0.; output[i] = -(rho_dcdm_today+rho_dr_today)/(ba.H0*ba.H0)+ba.Omega0_dcdmdr; break; + case sigma8: + output[i] = nl.sigma8[nl.index_pk_m]-pfzw->target_value[i]; + break; } } @@ -3698,6 +3943,22 @@ int input_get_guess(double *xguess, /* Cheat to read only known parameters: */ pfzw->fc.size -= pfzw->target_size; + + class_call(input_read_precisions(&(pfzw->fc), + &pr, + &ba, + &th, + &pt, + &tr, + &pm, + &sp, + &nl, + &le, + &op, + errmsg), + errmsg, + errmsg); + class_call(input_read_parameters(&(pfzw->fc), &pr, &ba, @@ -3712,6 +3973,7 @@ int input_get_guess(double *xguess, errmsg), errmsg, errmsg); + pfzw->fc.size += pfzw->target_size; /** Summary: */ /** - Here we should write reasonable guesses for the unknown parameters. @@ -3720,11 +3982,6 @@ int input_get_guess(double *xguess, for (index_guess=0; index_guess < pfzw->target_size; index_guess++) { switch (pfzw->target_name[index_guess]) { - case tn_sigma8: - // Assume linear relationship between A_s and sigma8 and fix coefficient according to vanilla LambdaCDM. Should be good enough ... - xguess[index_guess] = 2.43e-9/0.87659*pfzw->target_value[index_guess]; - dxdy[index_guess] = 2.43e-9/0.87659; - break; case theta_s: xguess[index_guess] = 3.54*pow(pfzw->target_value[index_guess],2)-5.455*pfzw->target_value[index_guess]+2.548; dxdy[index_guess] = (7.08*pfzw->target_value[index_guess]-5.455); @@ -3733,7 +3990,7 @@ int input_get_guess(double *xguess, ba.H0 = ba.h * 1.e5 / _c_; break; case Omega_dcdmdr: - Omega_M = ba.Omega0_cdm+ba.Omega0_dcdmdr+ba.Omega0_b; + Omega_M = ba.Omega0_cdm+ba.Omega0_idm_dr+ba.Omega0_dcdmdr+ba.Omega0_b; /* This formula is exact in a Matter + Lambda Universe, but only for Omega_dcdm, not the combined. sqrt_one_minus_M = sqrt(1.0 - Omega_M); @@ -3752,7 +4009,7 @@ int input_get_guess(double *xguess, //printf("x = Omega_ini_guess = %g, dxdy = %g\n",*xguess,*dxdy); break; case omega_dcdmdr: - Omega_M = ba.Omega0_cdm+ba.Omega0_dcdmdr+ba.Omega0_b; + Omega_M = ba.Omega0_cdm+ba.Omega0_idm_dr+ba.Omega0_dcdmdr+ba.Omega0_b; /* This formula is exact in a Matter + Lambda Universe, but only for Omega_dcdm, not the combined. sqrt_one_minus_M = sqrt(1.0 - Omega_M); @@ -3768,16 +4025,16 @@ int input_get_guess(double *xguess, a_decay = pow(1+(gamma*gamma-1.)/Omega_M,-1./3.); xguess[index_guess] = pfzw->target_value[index_guess]/ba.h/ba.h/a_decay; dxdy[index_guess] = 1./a_decay/ba.h/ba.h; - //printf("x = Omega_ini_guess = %g, dxdy = %g\n",*xguess,*dxdy); + //printf("x = Omega_ini_guess = %g, dxdy = %g\n",*xguess,*dxdy); break; case Omega_scf: - /** - This guess is arbitrary, something nice using WKB should be implemented. - * - * - Version 2: use a fit: `xguess[index_guess] = 1.77835*pow(ba.Omega0_scf,-2./7.); - * dxdy[index_guess] = -0.5081*pow(ba.Omega0_scf,-9./7.)`; - * - * - Version 3: use attractor solution */ + /** - This guess is arbitrary, something nice using WKB should be implemented. + * + * - Version 2: use a fit: `xguess[index_guess] = 1.77835*pow(ba.Omega0_scf,-2./7.); + * dxdy[index_guess] = -0.5081*pow(ba.Omega0_scf,-9./7.)`; + * + * - Version 3: use attractor solution */ if (ba.scf_tuning_index == 0){ xguess[index_guess] = sqrt(3.0/ba.Omega0_scf); @@ -3796,7 +4053,7 @@ int input_get_guess(double *xguess, Omega_ini_dcdm -> Omega_dcdmdr and omega_ini_dcdm -> omega_dcdmdr */ Omega0_dcdmdr *=pfzw->target_value[index_guess]; - Omega_M = ba.Omega0_cdm+Omega0_dcdmdr+ba.Omega0_b; + Omega_M = ba.Omega0_cdm+ba.Omega0_idm_dr+Omega0_dcdmdr+ba.Omega0_b; gamma = ba.Gamma_dcdm/ba.H0; if (gamma < 1) a_decay = 1.0; @@ -3809,6 +4066,13 @@ int input_get_guess(double *xguess, //printf("x = Omega_ini_guess = %g, dxdy = %g\n",*xguess,*dxdy); break; + + case sigma8: + /* Assume linear relationship between A_s and sigma8 and fix coefficient + according to vanilla LambdaCDM. Should be good enough... */ + xguess[index_guess] = 2.43e-9/0.87659*pfzw->target_value[index_guess]; + dxdy[index_guess] = 2.43e-9/0.87659; + break; } //printf("xguess = %g\n",xguess[index_guess]); } @@ -3836,17 +4100,19 @@ int input_find_root(double *xzero, class_call(input_get_guess(&x1, &dxdy, pfzw, errmsg), errmsg, errmsg); // printf("x1= %g\n",x1); + class_call(input_fzerofun_1d(x1, pfzw, &f1, errmsg), - errmsg, errmsg); + errmsg, errmsg); + (*fevals)++; //printf("x1= %g, f1= %g\n",x1,f1); dx = 1.5*f1*dxdy; - /** - Do linear hunt for boundaries */ + /** - Then we do a linear hunt for the boundaries */ for (iter=1; iter<=15; iter++){ //x2 = x1 + search_dir*dx; x2 = x1 - dx; @@ -3914,10 +4180,10 @@ int input_auxillary_target_conditions(struct file_content * pfc, ErrorMsg errmsg){ *aux_flag = _TRUE_; /* - double param1; - int int1, flag1; - int input_verbose = 0; - class_read_int("input_verbose",input_verbose); + double param1; + int int1, flag1; + int input_verbose = 0; + class_read_int("input_verbose",input_verbose); */ switch (target_name){ case Omega_dcdmdr: @@ -3938,11 +4204,11 @@ int input_auxillary_target_conditions(struct file_content * pfc, } int compare_integers (const void * elem1, const void * elem2) { - int f = *((int*)elem1); - int s = *((int*)elem2); - if (f > s) return 1; - if (f < s) return -1; - return 0; + int f = *((int*)elem1); + int s = *((int*)elem2); + if (f > s) return 1; + if (f < s) return -1; + return 0; } int compare_doubles(const void *a,const void *b) { @@ -3954,3 +4220,194 @@ int compare_doubles(const void *a,const void *b) { (*x > *y) return 1; return 0; } + + +/** + * Perform preliminary steps fur using the method called Pk_equal, + * described in 0810.0190 and 1601.07230, extending the range of + * validity of HALOFIT from constant w to (w0,wa) models. In that + * case, one must compute here some effective values of w0_eff(z_i) + * and Omega_m_eff(z_i), that will be interpolated later at arbitrary + * redshift in the non-linear module. + * + * Returns table of values [z_i, tau_i, w0_eff_i, Omega_m_eff_i] + * stored in nonlinear structure. + * + * @param ppr Input: pointer to precision structure + * @param pba Input: pointer to background structure + * @param pth Input: pointer to thermodynamics structure + * @param pnl Input/Output: pointer to nonlinear structure + * @param input_verbose Input: verbosity of this input module + * @param errmsg Input/Ouput: error message + */ + +int input_prepare_pk_eq( + struct precision * ppr, + struct background *pba, + struct thermo *pth, + struct nonlinear *pnl, + int input_verbose, + ErrorMsg errmsg + ) { + + /** Summary: */ + + /** - define local variables */ + + double tau_of_z; + double delta_tau; + double error; + double delta_tau_eq; + double * pvecback; + int last_index=0; + int index_pk_eq_z; + int index_eq; + int true_background_verbose; + int true_thermodynamics_verbose; + double true_w0_fld; + double true_wa_fld; + double * z; + + /** - store the true cosmological parameters (w0, wa) somwhere before using temporarily some fake ones in this function */ + + true_background_verbose = pba->background_verbose; + true_thermodynamics_verbose = pth->thermodynamics_verbose; + true_w0_fld = pba->w0_fld; + true_wa_fld = pba->wa_fld; + + /** - the fake calls of the background and thermodynamics module will be done in non-verbose mode */ + + pba->background_verbose = 0; + pth->thermodynamics_verbose = 0; + + /** - allocate indices and arrays for storing the results */ + + pnl->pk_eq_tau_size = 10; + class_alloc(pnl->pk_eq_tau,pnl->pk_eq_tau_size*sizeof(double),errmsg); + class_alloc(z,pnl->pk_eq_tau_size*sizeof(double),errmsg); + + index_eq = 0; + class_define_index(pnl->index_pk_eq_w,_TRUE_,index_eq,1); + class_define_index(pnl->index_pk_eq_Omega_m,_TRUE_,index_eq,1); + pnl->pk_eq_size = index_eq; + class_alloc(pnl->pk_eq_w_and_Omega,pnl->pk_eq_tau_size*pnl->pk_eq_size*sizeof(double),errmsg); + class_alloc(pnl->pk_eq_ddw_and_ddOmega,pnl->pk_eq_tau_size*pnl->pk_eq_size*sizeof(double),errmsg); + + /** - call the background module in order to fill a table of tau_i[z_i] */ + + class_call(background_init(ppr,pba), pba->error_message, errmsg); + for (index_pk_eq_z=0; index_pk_eq_zpk_eq_tau_size; index_pk_eq_z++) { + z[index_pk_eq_z] = exp(log(1.+ppr->pk_eq_z_max)/(pnl->pk_eq_tau_size-1)*index_pk_eq_z)-1.; + class_call(background_tau_of_z(pba,z[index_pk_eq_z],&tau_of_z), + pba->error_message, errmsg); + pnl->pk_eq_tau[index_pk_eq_z] = tau_of_z; + } + class_call(background_free_noinput(pba), pba->error_message, errmsg); + + /** - loop over z_i values. For each of them, we will call the + background and thermodynamics module for fake models. The goal is + to find, for each z_i, and effective w0_eff[z_i] and + Omega_m_eff{z_i], such that: the true model with (w0,wa) and the + equivalent model with (w0_eff[z_i],0) have the same conformal + distance between z_i and z_recombination, namely chi = tau[z_i] - + tau_rec. It is thus necessary to call both the background and + thermodynamics module for each fake model and to re-compute + tau_rec for each of them. Once the eqauivalent model is found we + compute and store Omega_m_effa(z_i) of the equivalent model */ + + for (index_pk_eq_z=0; index_pk_eq_zpk_eq_tau_size; index_pk_eq_z++) { + + if (input_verbose > 2) + printf(" * computing Pk_equal parameters at z=%e\n",z[index_pk_eq_z]); + + /* get chi = (tau[z_i] - tau_rec) in true model */ + + pba->w0_fld = true_w0_fld; + pba->wa_fld = true_wa_fld; + + class_call(background_init(ppr,pba), pba->error_message, errmsg); + class_call(thermodynamics_init(ppr,pba,pth), pth->error_message, errmsg); + + delta_tau = pnl->pk_eq_tau[index_pk_eq_z] - pth->tau_rec; + + /* launch iterations in order to coverge to effective model with wa=0 but the same chi = (tau[z_i] - tau_rec) */ + + pba->wa_fld=0.; + + do { + class_call(background_free_noinput(pba), pba->error_message, errmsg); + class_call(thermodynamics_free(pth), pth->error_message, errmsg); + + class_call(background_init(ppr,pba), pba->error_message, errmsg); + class_call(background_tau_of_z(pba,z[index_pk_eq_z],&tau_of_z), pba->error_message, errmsg); + class_call(thermodynamics_init(ppr,pba,pth), pth->error_message, errmsg); + + delta_tau_eq = tau_of_z - pth->tau_rec; + + error = 1.-delta_tau_eq/delta_tau; + pba->w0_fld = pba->w0_fld*pow(1.+error,10.); + + } + while(fabs(error) > ppr->pk_eq_tol); + + /* Equivalent model found. Store w0(z) in that model. Find Omega_m(z) in that model and store it. */ + + pnl->pk_eq_w_and_Omega[pnl->pk_eq_size*index_pk_eq_z+pnl->index_pk_eq_w] = pba->w0_fld; + + class_alloc(pvecback,pba->bg_size*sizeof(double),pba->error_message); + class_call(background_at_tau(pba, + tau_of_z, + pba->long_info, + pba->inter_normal, + &last_index, + pvecback), + pba->error_message, errmsg); + pnl->pk_eq_w_and_Omega[pnl->pk_eq_size*index_pk_eq_z+pnl->index_pk_eq_Omega_m] = pvecback[pba->index_bg_Omega_m]; + free(pvecback); + + class_call(background_free_noinput(pba), pba->error_message, errmsg); + class_call(thermodynamics_free(pth), pth->error_message, errmsg); + + } + + /** - restore cosmological parameters (w0, wa) to their true values before main call to CLASS modules */ + + pba->background_verbose = true_background_verbose; + pth->thermodynamics_verbose = true_thermodynamics_verbose; + pba->w0_fld = true_w0_fld; + pba->wa_fld = true_wa_fld; + + /* in verbose mode, report the results */ + + if (input_verbose > 1) { + + fprintf(stdout," Effective parameters for Pk_equal:\n"); + + for (index_pk_eq_z=0; index_pk_eq_zpk_eq_tau_size; index_pk_eq_z++) { + + fprintf(stdout," * at z=%e, tau=%e w=%e Omega_m=%e\n", + z[index_pk_eq_z], + pnl->pk_eq_tau[index_pk_eq_z], + pnl->pk_eq_w_and_Omega[pnl->pk_eq_size*index_pk_eq_z+pnl->index_pk_eq_w], + pnl->pk_eq_w_and_Omega[pnl->pk_eq_size*index_pk_eq_z+pnl->index_pk_eq_Omega_m] + ); + } + } + + free(z); + + /** - spline the table for later interpolation */ + + class_call(array_spline_table_lines( + pnl->pk_eq_tau, + pnl->pk_eq_tau_size, + pnl->pk_eq_w_and_Omega, + pnl->pk_eq_size, + pnl->pk_eq_ddw_and_ddOmega, + _SPLINE_NATURAL_, + errmsg), + errmsg,errmsg); + + return _SUCCESS_; + +} diff --git a/class/source/lensing.c b/class/source/lensing.c old mode 100644 new mode 100755 index 1d4e4ad3..94a3bdbd --- a/class/source/lensing.c +++ b/class/source/lensing.c @@ -88,7 +88,7 @@ int lensing_init( struct nonlinear * pnl, struct lensing * ple ) { - + /** Summary: */ /** - Define local variables */ @@ -100,25 +100,25 @@ int lensing_init( double ** d00; /* dmn[index_mu][index_l] */ double ** d11; double ** d2m2; - double ** d22; - double ** d20; + double ** d22 = NULL; + double ** d20 = NULL; double ** d1m1; - double ** d31; - double ** d40; - double ** d3m1; - double ** d3m3; - double ** d4m2; - double ** d4m4; + double ** d31 = NULL; + double ** d40 = NULL; + double ** d3m1 = NULL; + double ** d3m3 = NULL; + double ** d4m2 = NULL; + double ** d4m4 = NULL; double * buf_dxx; /* buffer */ double * Cgl; /* Cgl[index_mu] */ double * Cgl2; /* Cgl2[index_mu] */ double * sigma2; /* sigma[index_mu] */ - double * ksi; /* ksi[index_mu] */ - double * ksiX; /* ksiX[index_mu] */ - double * ksip; /* ksip[index_mu] */ - double * ksim; /* ksim[index_mu] */ + double * ksi = NULL; /* ksi[index_mu] */ + double * ksiX = NULL; /* ksiX[index_mu] */ + double * ksip = NULL; /* ksip[index_mu] */ + double * ksim = NULL; /* ksim[index_mu] */ double fac,fac1; double X_000; @@ -135,9 +135,9 @@ int lensing_init( double ll; double * cl_unlensed; /* cl_unlensed[index_ct] */ double * cl_tt; /* unlensed cl, to be filled to avoid repeated calls to spectra_cl_at_l */ - double * cl_te; /* unlensed cl, to be filled to avoid repeated calls to spectra_cl_at_l */ - double * cl_ee; /* unlensed cl, to be filled to avoid repeated calls to spectra_cl_at_l */ - double * cl_bb; /* unlensed cl, to be filled to avoid repeated calls to spectra_cl_at_l */ + double * cl_te = NULL; /* unlensed cl, to be filled to avoid repeated calls to spectra_cl_at_l */ + double * cl_ee = NULL; /* unlensed cl, to be filled to avoid repeated calls to spectra_cl_at_l */ + double * cl_bb = NULL; /* unlensed cl, to be filled to avoid repeated calls to spectra_cl_at_l */ double * cl_pp; /* potential cl, to be filled to avoid repeated calls to spectra_cl_at_l */ double res,resX,lens; @@ -605,8 +605,12 @@ int lensing_init( if (ple->has_te==_TRUE_ || ple->has_ee==_TRUE_ || ple->has_bb==_TRUE_) { /* X_022 = exp(-(fac-1.)*sigma2[index_mu]); */ X_022 = X_000 * (1+sigma2[index_mu]*(1+0.5*sigma2[index_mu])); /* Order 2 */ - X_p022 = (fac-1.)*X_022; - /* X_242 = 0.25*sqrt4[l] * exp(-(fac-5./2.)*sigma2[index_mu]); */ + X_p022 = -(fac-1.)*X_022; /* Old versions were missing the + minus sign in this line, which introduced a very small error + on the high-l C_l^TE lensed spectrum [credits for bug fix: + Selim Hotinli] */ + + /* X_242 = 0.25*sqrt4[l] * exp(-(fac-5./2.)*sigma2[index_mu]); */ X_242 = 0.25*sqrt4[l] * X_000; /* Order 0 */ if (ple->has_ee==_TRUE_ || ple->has_bb==_TRUE_) { diff --git a/class/source/mead_growth.c b/class/source/mead_growth.c new file mode 100644 index 00000000..a937ca2e --- /dev/null +++ b/class/source/mead_growth.c @@ -0,0 +1,80 @@ +#include +#include +#include +#include + +// Standard libraries for C + +// Parameters +const double a_init = 1e-4; // Initial scale-factor for growth ODE integration + +double _w(double a, double w0, double wa) { + return w0 + (1.0 - a) * wa; +} + +double _X_w(double a, double w0, double wa) { + return pow(a, -3.0 * (1.0 + w0 + wa)) * exp(-3.0 * wa * (1.0 - a)); +} + +double _Hubble2(double a, double omega0m, double omega0w, double omega0k, double w0, double wa) { + // Get Om_c, Om_b, and Om_nu using the CAMB_results object + double Om_m = omega0m; + double Om_w = omega0w; + double Om = 1-omega0k; + double H2 = Om_m * pow(a, -3.0) + Om_w * _X_w(a, w0, wa) + (1.0 - Om) * pow(a, -2.0); + return H2; +} +double _Omega_m(double a, double omega0m, double omega0w, double omega0k, double w0, double wa) { + return omega0m * pow(a, -3.0) / _Hubble2(a, omega0m, omega0w, omega0k, w0, wa); +} + + +double _AH(double a, double omega0m, double omega0w, double w0, double wa) { + // Get Om_c, Om_b, and Om_nu using the CAMB_results object + double Om_m = omega0m; + double Om_w = omega0w; + double AH = -0.5 * (Om_m * pow(a, -3.0) + (1.0 + 3.0 * _w(a, w0, wa)) * Om_w * _X_w(a, w0, wa)); + return AH; +} +typedef struct { + double omega0m; + double omega0w; + double w0; + double wa; + double omega0k; +} Params; + + + + +int meadgrowth(double a, const double y[], double f[], void *params) { + Params *p = (Params *)params; + f[0] = y[1]; + double fv = -(2.+_AH(a, p->omega0m, p->omega0w, p->w0, p->wa)/_Hubble2(a, p->omega0m, p->omega0w, p->omega0k, p->w0, p->wa))*y[1]/a; + double fd = 1.5*_Omega_m(a, p->omega0m, p->omega0w, p->omega0k, p->w0, p->wa)*y[0]/pow(a,2); + f[1] = fv+fd; + return GSL_SUCCESS; +} + +int main() { + Params params = {0.3, 0.7, -1, 0., 0}; + gsl_odeiv2_system sys = {meadgrowth, NULL, 2, ¶ms}; + + gsl_odeiv2_driver *driver = gsl_odeiv2_driver_alloc_y_new(&sys, gsl_odeiv2_step_rk8pd, 1e-6, 1e-6, 0.0); + double a_init=1E-4, a = 1; +//omega0m, double omega0w, double omega0k, double w0, double wa + double f = 1.-_Omega_m(a_init, 3.120461e-01,6.878622e-01, 0.0, -1, 0); + + double y[2] = {pow(a_init,(1.-3.*f/5.)), (1.-3.*f/5.)*pow(a_init,(-3.*f/5.))}; + int status = gsl_odeiv2_driver_apply(driver, &a_init, a, y); + printf("%le \n", a_init); + + if (status != GSL_SUCCESS) { + printf("Error, return value=%d\n", status); + } + + printf("t=%.5e, y(t)=%.5e, y'(t)=%.5e\n", a, y[0], y[1]); + gsl_odeiv2_driver_free(driver); + return 0; +} + diff --git a/class/source/nonlinear.c b/class/source/nonlinear.c old mode 100644 new mode 100755 index f6c4444d..e683280b --- a/class/source/nonlinear.c +++ b/class/source/nonlinear.c @@ -13,690 +13,5616 @@ #include "nonlinear.h" -int nonlinear_k_nl_at_z( - struct background *pba, - struct nonlinear * pnl, - double z, - double * k_nl - ) { +/** + * Return the P(k,z) for a given redshift z and pk type (_m, _cb) + * (linear if pk_output = pk_linear, nonlinear if pk_output = pk_nonlinear) + * + * In the linear case, if there are several initial conditions *and* the + * input pointer out_pk_ic is not set to NULL, the function also + * returns the decomposition into different IC contributions. + * + * Hints on input index_pk: + * + * a. if you want the total matter spectrum P_m(k,z), pass in input + * pnl->index_pk_total + * (this index is always defined) + * + * b. if you want the power spectrum relevant for galaxy or halos, + * given by P_cb if there is non-cold-dark-matter (e.g. massive neutrinos) + * and to P_m otherwise, pass in input + * pnl->index_pk_cluster + * (this index is always defined) + * + * c. there is another possible syntax (use it only if you know what you are doing): + * if pnl->has_pk_m == _TRUE_ you may pass pnl->index_pk_m to get P_m + * if pnl->has_pk_cb == _TRUE_ you may pass pnl->index_pk_cb to get P_cb + * + * Output format: + * + * 1. if mode = logarithmic (most straightforward for the code): + * out_pk = ln(P(k)) + * out_pk_ic[diagonal] = ln(P_ic(k)) + * out_pk_ic[non-diagonal] = cos(correlation angle icxic) + * + * 2. if mode = linear (a conversion is done internally in this function) + * out_pk = P(k) + * out_pk_ic[diagonal] = P_ic(k) + * out_pk_ic[non-diagonal] = P_icxic(k) + * + * @param pba Input: pointer to background structure + * @param pnl Input: pointer to nonlinear structure + * @param mode Input: linear or logarithmic + * @param pk_output Input: linear or nonlinear + * @param z Input: redshift + * @param index_pk Input: index of pk type (_m, _cb) + * @param out_pk Output: P(k) returned as out_pk_l[index_k] + * @param out_pk_ic Output: P_ic(k) returned as out_pk_ic[index_k * pnl->ic_ic_size + index_ic1_ic2] + * @return the error status + */ +int nonlinear_pk_at_z( + struct background * pba, + struct nonlinear *pnl, + enum linear_or_logarithmic mode, + enum pk_outputs pk_output, + double z, + int index_pk, + double * out_pk, // array out_pk[index_k] + double * out_pk_ic // array out_pk_ic[index_k * pnl->ic_ic_size + index_ic1_ic2] + ) { double tau; - - class_call(background_tau_of_z(pba, - z, - &tau), - pba->error_message, - pnl->error_message); - - if (pnl->tau_size == 1) { - *k_nl = pnl->k_nl[0]; - } - else { - class_call(array_interpolate_two(pnl->tau, - 1, - 0, - pnl->k_nl, - 1, - pnl->tau_size, - tau, - k_nl, - 1, - pnl->error_message), - pnl->error_message, - pnl->error_message); - } - - return _SUCCESS_; -} - -int nonlinear_init( - struct precision *ppr, - struct background *pba, - struct thermo *pth, - struct perturbs *ppt, - struct primordial *ppm, - struct nonlinear *pnl - ) { - - int index_ncdm; + double ln_tau; int index_k; - int index_tau; - double *pk_l; - double *pk_nl; - double *lnk_l; - double *lnpk_l; - double *ddlnpk_l; - short print_warning=_FALSE_; - double * pvecback; + int index_ic1; + int index_ic2; + int index_ic1_ic1; + int index_ic2_ic2; + int index_ic1_ic2; int last_index; - double a,z; + short do_ic = _FALSE_; - /** Summary - * - * (a) First deal with the case where non non-linear corrections requested */ + /** - check whether we need the decomposition into contributions from each initial condition */ - if (pnl->method == nl_none) { - if (pnl->nonlinear_verbose > 0) - printf("No non-linear spectra requested. Nonlinear module skipped.\n"); - } + if ((pk_output == pk_linear) && (pnl->ic_size > 1) && (out_pk_ic != NULL)) + do_ic = _TRUE_; - /** (b) Compute for HALOFIT non-linear spectrum */ + /** - case z=0 requiring no interpolation in z */ + if (z == 0) { - else if (pnl->method == nl_halofit) { - if (pnl->nonlinear_verbose > 0) - printf("Computing non-linear matter power spectrum with Halofit (including update Takahashi et al. 2012 and Bird 2014)\n"); + for (index_k=0; index_kk_size; index_k++) { - if (pba->has_ncdm) { - for (index_ncdm=0;index_ncdm < pba->N_ncdm; index_ncdm++){ - if (pba->m_ncdm_in_eV[index_ncdm] > _M_EV_TOO_BIG_FOR_HALOFIT_) - fprintf(stdout,"Warning: Halofit is proved to work for CDM, and also with a small HDM component thanks to Bird et al.'s update. But it sounds like you are running with a WDM component of mass %f eV, which makes the use of Halofit suspicious.\n",pba->m_ncdm_in_eV[index_ncdm]); + if (pk_output == pk_linear) { + out_pk[index_k] = pnl->ln_pk_l[index_pk][(pnl->ln_tau_size-1)*pnl->k_size+index_k]; + + if (do_ic == _TRUE_) { + for (index_ic1_ic2 = 0; index_ic1_ic2 < pnl->ic_ic_size; index_ic1_ic2++) { + out_pk_ic[index_k * pnl->ic_ic_size + index_ic1_ic2] = + pnl->ln_pk_ic_l[index_pk][((pnl->ln_tau_size-1)*pnl->k_size+index_k)*pnl->ic_ic_size+index_ic1_ic2]; + } + } + } + else { + out_pk[index_k] = pnl->ln_pk_nl[index_pk][(pnl->ln_tau_size-1)*pnl->k_size+index_k]; } } + } - /** - copy list of (k,tau) from perturbation module */ + /** - interpolation in z */ + else { - pnl->k_size = ppt->k_size[ppt->index_md_scalars]; - class_alloc(pnl->k,pnl->k_size*sizeof(double),pnl->error_message); - for (index_k=0; index_kk_size; index_k++) - pnl->k[index_k] = ppt->k[ppt->index_md_scalars][index_k]; + class_test(pnl->ln_tau_size == 1, + pnl->error_message, + "You are asking for the matter power spectrum at z=%e but the code was asked to store it only at z=0. You probably forgot to pass the input parameter z_max_pk (see explanatory.ini)",z); - pnl->tau_size = ppt->tau_size; - class_alloc(pnl->tau,pnl->tau_size*sizeof(double),pnl->error_message); - for (index_tau=0; index_tautau_size; index_tau++) - pnl->tau[index_tau] = ppt->tau_sampling[index_tau]; + /** --> get value of contormal time tau */ + class_call(background_tau_of_z(pba, + z, + &tau), + pba->error_message, + pnl->error_message); + + ln_tau = log(tau); + last_index = pnl->ln_tau_size-1; - class_alloc(pnl->nl_corr_density,pnl->tau_size*pnl->k_size*sizeof(double),pnl->error_message); - class_alloc(pnl->k_nl,pnl->tau_size*sizeof(double),pnl->error_message); + /** -> check that tau is in pre-computed table */ - class_alloc(pk_l,pnl->k_size*sizeof(double),pnl->error_message); - class_alloc(pk_nl,pnl->k_size*sizeof(double),pnl->error_message); + if (ln_tau <= pnl->ln_tau[0]) { - class_alloc(lnk_l,pnl->k_size*sizeof(double),pnl->error_message); - class_alloc(lnpk_l,pnl->k_size*sizeof(double),pnl->error_message); - class_alloc(ddlnpk_l,pnl->k_size*sizeof(double),pnl->error_message); + /** --> if ln(tau) much too small, raise an error */ + class_test(ln_tauln_tau[0]-_EPSILON_, + pnl->error_message, + "requested z was not inside of tau tabulation range (Requested ln(tau_=%.10e, Min %.10e). Solution might be to increase input parameter z_max_pk (see explanatory.ini)",ln_tau,pnl->ln_tau[0]); - /** - loop over time */ + /** --> if ln(tau) too small but within tolerance, round it and get right values without interpolating */ + ln_tau = pnl->ln_tau[0]; - for (index_tau = pnl->tau_size-1; index_tau>=0; index_tau--) { + for (index_k = 0 ; index_k < pnl->k_size; index_k++) { + if (pk_output == pk_linear) { + out_pk[index_k] = pnl->ln_pk_l[index_pk][index_k]; + if (do_ic == _TRUE_) { + for (index_ic1_ic2 = 0; index_ic1_ic2 < pnl->ic_ic_size; index_ic1_ic2++) { + out_pk_ic[index_k * pnl->ic_ic_size + index_ic1_ic2] = pnl->ln_pk_ic_l[index_pk][index_k * pnl->ic_ic_size + index_ic1_ic2]; + } + } + } + else { + out_pk[index_k] = pnl->ln_pk_nl[index_pk][index_k]; + } + } + } + + else if (ln_tau >= pnl->ln_tau[pnl->ln_tau_size-1]) { - /* get P_L(k) at this time */ - class_call(nonlinear_pk_l(ppt,ppm,pnl,index_tau,pk_l,lnk_l,lnpk_l,ddlnpk_l), + /** --> if ln(tau) much too large, raise an error */ + class_test(ln_tau>pnl->ln_tau[pnl->ln_tau_size-1]+_EPSILON_, pnl->error_message, - pnl->error_message); + "requested z was not inside of tau tabulation range (Requested ln(tau_=%.10e, Max %.10e) ",ln_tau,pnl->ln_tau[pnl->ln_tau_size-1]); - /* - for (index_k=0; index_kk_size; index_k++) { - fprintf(stdout,"%e %e\n",pnl->k[index_k],pk_l[index_k]); - } - */ + /** --> if ln(tau) too large but within tolerance, round it and get right values without interpolating */ + ln_tau = pnl->ln_tau[pnl->ln_tau_size-1]; - //class_stop(pnl->error_message,"stop here"); - - /* get P_NL(k) at this time */ - if (nonlinear_halofit(ppr, - pba, - ppm, - pnl, - pnl->tau[index_tau], - pk_l, - pk_nl, - lnk_l, - lnpk_l, - ddlnpk_l, - &(pnl->k_nl[index_tau])) == _SUCCESS_) { - - /* - for (index_k=0; index_kk_size; index_k++) { - fprintf(stdout,"%e %e %e\n",pnl->k[index_k],pk_l[index_k],pk_nl[index_k]); + for (index_k = 0 ; index_k < pnl->k_size; index_k++) { + if (pk_output == pk_linear) { + out_pk[index_k] = pnl->ln_pk_l[index_pk][(pnl->ln_tau_size-1) * pnl->k_size + index_k]; + if (do_ic == _TRUE_) { + for (index_ic1_ic2 = 0; index_ic1_ic2 < pnl->ic_ic_size; index_ic1_ic2++) { + out_pk_ic[index_k * pnl->ic_ic_size + index_ic1_ic2] = pnl->ln_pk_ic_l[index_pk][((pnl->ln_tau_size-1) * pnl->k_size + index_k) * pnl->ic_ic_size + index_ic1_ic2]; + } } - fprintf(stdout,"\n\n"); - */ - - for (index_k=0; index_kk_size; index_k++) { - pnl->nl_corr_density[index_tau * pnl->k_size + index_k] = sqrt(pk_nl[index_k]/pk_l[index_k]); + } + else { + out_pk[index_k] = pnl->ln_pk_nl[index_pk][(pnl->ln_tau_size-1) * pnl->k_size + index_k]; } } - else { - /* when Halofit failed, use 1 as the non-linear correction, and print a warning */ - for (index_k=0; index_kk_size; index_k++) { - pnl->nl_corr_density[index_tau * pnl->k_size + index_k] = 1.; - } - if ((pnl->nonlinear_verbose > 0) && (print_warning == _FALSE_)) { - class_alloc(pvecback,pba->bg_size*sizeof(double),pnl->error_message); - class_call(background_at_tau(pba,pnl->tau[index_tau],pba->short_info,pba->inter_normal,&last_index,pvecback), - pba->error_message, + } + + /** -> tau is in pre-computed table: interpolate */ + else { + + if (pk_output == pk_linear) { + + /** --> interpolate P_l(k) at tau from pre-computed array */ + class_call(array_interpolate_spline(pnl->ln_tau, + pnl->ln_tau_size, + pnl->ln_pk_l[index_pk], + pnl->ddln_pk_l[index_pk], + pnl->k_size, + ln_tau, + &last_index, + out_pk, + pnl->k_size, + pnl->error_message), + pnl->error_message, + pnl->error_message); + + /** --> interpolate P_ic_l(k) at tau from pre-computed array */ + if (do_ic == _TRUE_) { + class_call(array_interpolate_spline(pnl->ln_tau, + pnl->ln_tau_size, + pnl->ln_pk_ic_l[index_pk], + pnl->ddln_pk_ic_l[index_pk], + pnl->k_size*pnl->ic_ic_size, + ln_tau, + &last_index, + out_pk_ic, + pnl->k_size*pnl->ic_ic_size, + pnl->error_message), + pnl->error_message, pnl->error_message); - a = pvecback[pba->index_bg_a]; - z = pba->a_today/a-1.; - fprintf(stdout, - " -> [WARNING:] Halofit non-linear corrections could not be computed at redshift z=%5.2f and higher.\n This is probably because k_max is too small for Halofit to be able to compute the scale k_NL at this redshift.\n If non-linear corrections at such high redshift really matter for you,\n just try to increase P_k_max_h/Mpc or P_k_max_1/Mpc until reaching desired z.\n", - z); - free(pvecback); } - print_warning = _TRUE_; } - } + else { - /* - for (index_tau = pnl->tau_size-1; index_tau>=0; index_tau--) { - for (index_k=0; index_kk_size; index_k++) { - fprintf(stdout,"%e %e\n",pnl->k[index_k],pnl->nl_corr_density[index_tau * pnl->k_size + index_k]); + /** --> interpolate P_nl(k) at tau from pre-computed array */ + class_call(array_interpolate_spline(pnl->ln_tau, + pnl->ln_tau_size, + pnl->ln_pk_nl[index_pk], + pnl->ddln_pk_nl[index_pk], + pnl->k_size, + ln_tau, + &last_index, + out_pk, + pnl->k_size, + pnl->error_message), + pnl->error_message, + pnl->error_message); } - fprintf(stdout,"\n\n"); } - */ + } - free(pk_l); - free(pk_nl); + /** - so far, all output stored in logarithmic format. Eventually, convert to linear one. */ - free(lnk_l); - free(lnpk_l); - free(ddlnpk_l); - } + if (mode == linear) { - else { - class_stop(pnl->error_message, - "Your non-linear method variable is set to %d, out of the range defined in nonlinear.h",pnl->method); - } + /** --> loop over k */ + for (index_k=0; index_kk_size; index_k++) { - return _SUCCESS_; -} + /** --> convert total spectrum */ + out_pk[index_k] = exp(out_pk[index_k]); -int nonlinear_free( - struct nonlinear *pnl - ) { + if (do_ic == _TRUE_) { + /** --> convert contribution of each ic (diagonal elements) */ + for (index_ic1=0; index_ic1 < pnl->ic_size; index_ic1++) { + index_ic1_ic1 = index_symmetric_matrix(index_ic1,index_ic1,pnl->ic_size); - if (pnl->method > nl_none) { + out_pk_ic[index_k * pnl->ic_ic_size + index_ic1_ic1] = exp(out_pk_ic[index_k * pnl->ic_ic_size + index_ic1_ic1]); + } + + /** --> convert contribution of each ic (non-diagonal elements) */ + for (index_ic1=0; index_ic1 < pnl->ic_size; index_ic1++) { + for (index_ic2=index_ic1+1; index_ic2 < pnl->ic_size; index_ic2++) { + index_ic1_ic1 = index_symmetric_matrix(index_ic1,index_ic1,pnl->ic_size); + index_ic2_ic2 = index_symmetric_matrix(index_ic2,index_ic2,pnl->ic_size); + index_ic1_ic2 = index_symmetric_matrix(index_ic1,index_ic2,pnl->ic_size); - if (pnl->method == nl_halofit) { - /* free here */ - free(pnl->k); - free(pnl->tau); - free(pnl->nl_corr_density); - free(pnl->k_nl); + /* P_ic1xic2 = cos(angle) * sqrt(P_ic1 * P_ic2) */ + out_pk_ic[index_k * pnl->ic_ic_size + index_ic1_ic2] + = out_pk_ic[index_k * pnl->ic_ic_size + index_ic1_ic2] + *sqrt(out_pk_ic[index_k * pnl->ic_ic_size + index_ic1_ic1] + *out_pk_ic[index_k * pnl->ic_ic_size + index_ic2_ic2]); + } + } + } } } return _SUCCESS_; - } -int nonlinear_pk_l( - struct perturbs *ppt, - struct primordial *ppm, - struct nonlinear *pnl, - int index_tau, - double *pk_l, - double *lnk, - double *lnpk, - double *ddlnpk) { - - int index_md; - int index_k; - int index_ic1,index_ic2,index_ic1_ic2; - double * primordial_pk; - double source_ic1,source_ic2; - - index_md = ppt->index_md_scalars; +/* + * Same as nonlinear_pk_at_z() (see the comments there about + * the input/output format), excepted that we don't pass in input one + * type of P(k) through index_pk. Instead, we get all existing types + * in output. This function is maintained to enhance compatibility + * with old versions, but the use of nonlinear_pk_at_z() should + * be preferred. + * + * @param pba Input: pointer to background structure + * @param pnl Input: pointer to nonlinear structure + * @param mode Input: linear or logarithmic + * @param z Input: redshift + * @param out_pk_l Output: P_m(k) returned as out_pk_l[index_k] + * @param out_pk_ic_l Output: P_m_ic(k) returned as out_pk_ic_l[index_k * pnl->ic_ic_size + index_ic1_ic2] + * @param out_pk_cb_l Output: P_cb(k) returned as out_pk_cb_l[index_k] + * @param out_pk_cb_ic_l Output: P_cb_ic(k) returned as out_pk_cb_ic_l[index_k * pnl->ic_ic_size + index_ic1_ic2] + * @return the error status + */ - class_alloc(primordial_pk,ppm->ic_ic_size[index_md]*sizeof(double),pnl->error_message); +int nonlinear_pks_at_z( + struct background * pba, + struct nonlinear * pnl, + enum linear_or_logarithmic mode, + enum pk_outputs pk_output, + double z, + double * out_pk, // array out_pk[index_k] + double * out_pk_ic, // array out_pk_ic[index_k * pnl->ic_ic_size + index_ic1_ic2] + double * out_pk_cb, // array out_pk_cb[index_k] + double * out_pk_cb_ic // array out_pk_cb_ic[index_k * pnl->ic_ic_size + index_ic1_ic2] + ) { - for (index_k=0; index_kk_size; index_k++) { + if (pnl->has_pk_cb) { - class_call(primordial_spectrum_at_k(ppm, - index_md, - linear, - pnl->k[index_k], - primordial_pk), - ppm->error_message, + class_call(nonlinear_pk_at_z(pba, + pnl, + mode, + pk_output, + z, + pnl->index_pk_cb, + out_pk_cb, + out_pk_cb_ic + ), + pnl->error_message, pnl->error_message); + } - pk_l[index_k] = 0; + if (pnl->has_pk_m) { - /* part diagonal in initial conditions */ - for (index_ic1 = 0; index_ic1 < ppm->ic_size[index_md]; index_ic1++) { + class_call(nonlinear_pk_at_z(pba, + pnl, + mode, + pk_output, + z, + pnl->index_pk_m, + out_pk, + out_pk_ic + ), + pnl->error_message, + pnl->error_message); + } - index_ic1_ic2 = index_symmetric_matrix(index_ic1,index_ic1,ppm->ic_size[index_md]); + return _SUCCESS_; +} + +/** + * Return the P(k,z) for a given (k,z) and pk type (_m, _cb) + * (linear if pk_output = pk_linear, nonlinear if pk_output = pk_nonlinear) + * + * In the linear case, if there are several initial conditions *and* the + * input pointer out_pk_ic is not set to NULL, the function also + * returns the decomposition into different IC contributions. + * + * Hints on input index_pk: + * + * a. if you want the total matter spectrum P_m(k,z), pass in input + * pnl->index_pk_total + * (this index is always defined) + * + * b. if you want the power spectrum relevant for galaxy or halos, + * given by P_cb if there is non-cold-dark-matter (e.g. massive neutrinos) + * and to P_m otherwise, pass in input + * pnl->index_pk_cluster + * (this index is always defined) + * + * c. there is another possible syntax (use it only if you know what you are doing): + * if pnl->has_pk_m == _TRUE_ you may pass pnl->index_pk_m to get P_m + * if pnl->has_pk_cb == _TRUE_ you may pass pnl->index_pk_cb to get P_cb + * + * Output format: + * + * out_pk = P(k) + * out_pk_ic[diagonal] = P_ic(k) + * out_pk_ic[non-diagonal] = P_icxic(k) + * + * @param pba Input: pointer to background structure + * @param ppm Input: pointer to primordial structure + * @param pnl Input: pointer to nonlinear structure + * @param pk_output Input: linear or nonlinear + * @param k Input: wavenumber in 1/Mpc + * @param z Input: redshift + * @param index_pk Input: index of pk type (_m, _cb) + * @param out_pk Output: pointer to P + * @param out_pk_ic Ouput: P_ic returned as out_pk_ic_l[index_ic1_ic2] + * @return the error status + */ - source_ic1 = ppt->sources[index_md] - [index_ic1 * ppt->tp_size[index_md] + ppt->index_tp_delta_m] - [index_tau * ppt->k_size[index_md] + index_k]; +int nonlinear_pk_at_k_and_z( + struct background * pba, + struct primordial * ppm, + struct nonlinear *pnl, + enum pk_outputs pk_output, + double k, + double z, + int index_pk, + double * out_pk, // number *out_pk_l + double * out_pk_ic // array out_pk_ic_l[index_ic_ic] + ) { - pk_l[index_k] += 2.*_PI_*_PI_/pow(pnl->k[index_k],3) - *source_ic1*source_ic1 - *primordial_pk[index_ic1_ic2]; - } + double * out_pk_at_z; + double * out_pk_ic_at_z = NULL; + double * ddout_pk_at_z; + double * ddout_pk_ic_at_z; + int last_index; + int index_ic1; + int index_ic2; + int index_ic1_ic1; + int index_ic2_ic2; + int index_ic1_ic2; + double kmin; + double * pk_primordial_k; + double * pk_primordial_kmin; + short do_ic = _FALSE_; - /* part non-diagonal in initial conditions */ - for (index_ic1 = 0; index_ic1 < ppm->ic_size[index_md]; index_ic1++) { - for (index_ic2 = index_ic1+1; index_ic2 < ppm->ic_size[index_md]; index_ic2++) { + /** - preliminary: check whether we need the decomposition into contributions from each initial condition */ - index_ic1_ic2 = index_symmetric_matrix(index_ic1,index_ic2,ppm->ic_size[index_md]); + if ((pk_output == pk_linear) && (pnl->ic_size > 1) && (out_pk_ic != NULL)) + do_ic = _TRUE_; - if (ppm->is_non_zero[index_md][index_ic1_ic2] == _TRUE_) { + /** - first step: check that k is in valid range [0:kmax] + (the test for z will be done when calling nonlinear_pk_linear_at_z()) */ - source_ic1 = ppt->sources[index_md] - [index_ic1 * ppt->tp_size[index_md] + ppt->index_tp_delta_m] - [index_tau * ppt->k_size[index_md] + index_k]; + class_test((k < 0.) || (k > exp(pnl->ln_k[pnl->k_size-1])), + pnl->error_message, + "k=%e out of bounds [%e:%e]",k,0.,exp(pnl->ln_k[pnl->k_size-1])); - source_ic2 = ppt->sources[index_md] - [index_ic2 * ppt->tp_size[index_md] + ppt->index_tp_delta_m] - [index_tau * ppt->k_size[index_md] + index_k]; + /** - deal with case k = 0 for which P(k) is set to zero + (this non-physical result can be useful for interpolations) */ - pk_l[index_k] += 2.*2.*_PI_*_PI_/pow(pnl->k[index_k],3) - *source_ic1*source_ic2 - *primordial_pk[index_ic1_ic2]; // extra 2 factor (to include the symmetric term ic2,ic1) + if (k == 0.) { + *out_pk = 0.; - } + if (do_ic == _TRUE_) { + for (index_ic1_ic2=0; index_ic1_ic2ic_ic_size; index_ic1_ic2++) { + out_pk_ic[index_ic1_ic2] = 0.; } } - - lnk[index_k] = log(pnl->k[index_k]); - lnpk[index_k] = log(pk_l[index_k]); } - class_call(array_spline_table_columns(lnk, - pnl->k_size, - lnpk, - 1, - ddlnpk, - _SPLINE_NATURAL_, - pnl->error_message), - pnl->error_message, - pnl->error_message); + /** - deal with 0 < k <= kmax */ - free(primordial_pk); + else { - return _SUCCESS_; + class_alloc(out_pk_at_z, + pnl->k_size*sizeof(double), + pnl->error_message); -} + if (do_ic == _TRUE_) { + class_alloc(out_pk_ic_at_z, + pnl->k_size*pnl->ic_ic_size*sizeof(double), + pnl->error_message); + } -int nonlinear_halofit( - struct precision *ppr, - struct background *pba, - struct primordial *ppm, - struct nonlinear *pnl, - double tau, - double *pk_l, - double *pk_nl, - double *lnk_l, - double *lnpk_l, - double *ddlnpk_l, - double *k_nl - ) { + /** - deal with standard case kmin <= k <= kmax */ - double Omega_m,Omega_v,fnu,Omega0_m, w0; + if (k > exp(pnl->ln_k[0])) { - /** Determine non linear ratios (from pk) **/ + /** --> First, get P(k) at the right z (in logarithmic format for more accurate interpolation, and then convert to linear format) */ - int index_k; - double pk_lin,pk_quasi,pk_halo,rk; - double sigma,rknl,rneff,rncur,d1,d2; - double diff,xlogr1,xlogr2,rmid; + class_call(nonlinear_pk_at_z(pba, + pnl, + logarithmic, + pk_output, + z, + index_pk, + out_pk_at_z, + out_pk_ic_at_z + ), + pnl->error_message, + pnl->error_message); - double gam,a,b,c,xmu,xnu,alpha,beta,f1,f2,f3; - double pk_linaa; - double y; - double f1a,f2a,f3a,f1b,f2b,f3b,frac; + /** --> interpolate total spectrum */ - double * pvecback; + class_alloc(ddout_pk_at_z, + pnl->k_size*sizeof(double), + pnl->error_message); - int last_index; - int counter; - double sum1,sum2,sum3; - double anorm; + class_call(array_spline_table_lines(pnl->ln_k, + pnl->k_size, + out_pk_at_z, + 1, + ddout_pk_at_z, + _SPLINE_NATURAL_, + pnl->error_message), + pnl->error_message, + pnl->error_message); - double *integrand_array; - int integrand_size; - int index_ia_k; - int index_ia_pk; - int index_ia_sum1; - int index_ia_ddsum1; - int index_ia_sum2; - int index_ia_ddsum2; - int index_ia_sum3; - int index_ia_ddsum3; - int ia_size; - int index_ia; + class_call(array_interpolate_spline(pnl->ln_k, + pnl->k_size, + out_pk_at_z, + ddout_pk_at_z, + 1, + log(k), + &last_index, + out_pk, + 1, + pnl->error_message), + pnl->error_message, + pnl->error_message); - double k_integrand; - double lnpk_integrand; + free(ddout_pk_at_z); - double x2,R; + // uncomment this part if you prefer a linear interpolation - class_alloc(pvecback,pba->bg_size*sizeof(double),pnl->error_message); + /* + class_call(array_interpolate_linear(pnl->ln_k, + pnl->k_size, + out_pk_at_z, + 1, + log(k), + &last_index, + out_pk, + 1, + pnl->error_message), + pnl->error_message, + pnl->error_message); + */ - Omega0_m = (pba->Omega0_cdm + pba->Omega0_b + pba->Omega0_ncdm_tot + pba->Omega0_dcdm); - w0 = pba->w0_fld; - fnu = pba->Omega0_ncdm_tot/Omega0_m; - anorm = 1./(2*pow(_PI_,2)); + /** --> convert from logarithmic to linear format */ - /* Until the 17.02.2015 the values of k used for integrating sigma(R) quantities needed by Halofit where the same as in the perturbation module. - Since then, we sample these integrals on more values, in order to get more precise integrals (thanks Matteo Zennaro for noticing the need for this). + *out_pk = exp(*out_pk); - We create a temporary integrand_array which columns will be: - - k in 1/Mpc - - just linear P(k) in Mpc**3 - - 1/(2(pi**2)) P(k) k**2 exp(-(kR)**2) - - second derivative of previous line with spline - - 1/(2(pi**2)) P(k) k**2 2 (kR) exp(-(kR)**2) - - second derivative of previous line with spline - - 1/(2(pi**2)) P(k) k**2 4 (kR)(1-kR) exp(-(kR)**2) - - second derivative of previous line with spline - */ + /** --> interpolate each ic component */ - index_ia=0; - class_define_index(index_ia_k, _TRUE_,index_ia,1); - class_define_index(index_ia_pk, _TRUE_,index_ia,1); - class_define_index(index_ia_sum1, _TRUE_,index_ia,1); - class_define_index(index_ia_ddsum1,_TRUE_,index_ia,1); - class_define_index(index_ia_sum2, _TRUE_,index_ia,1); - class_define_index(index_ia_ddsum2,_TRUE_,index_ia,1); - class_define_index(index_ia_sum3, _TRUE_,index_ia,1); - class_define_index(index_ia_ddsum3,_TRUE_,index_ia,1); - ia_size = index_ia; + if (do_ic == _TRUE_) { - integrand_size=(int)(log(pnl->k[pnl->k_size-1]/pnl->k[0])/log(10.)*ppr->halofit_k_per_decade)+1; + class_alloc(ddout_pk_ic_at_z, + pnl->k_size*pnl->ic_ic_size*sizeof(double), + pnl->error_message); - class_alloc(integrand_array,integrand_size*ia_size*sizeof(double),pnl->error_message); + class_call(array_spline_table_lines(pnl->ln_k, + pnl->k_size, + out_pk_ic_at_z, + pnl->ic_ic_size, + ddout_pk_ic_at_z, + _SPLINE_NATURAL_, + pnl->error_message), + pnl->error_message, + pnl->error_message); - /* we fill integrand_array with values of k and P(k) using interpolation */ + class_call(array_interpolate_spline(pnl->ln_k, + pnl->k_size, + out_pk_ic_at_z, + ddout_pk_ic_at_z, + pnl->ic_ic_size, + log(k), + &last_index, + out_pk_ic, + pnl->ic_ic_size, + pnl->error_message), + pnl->error_message, + pnl->error_message); - last_index=0; + free(ddout_pk_ic_at_z); - for (index_k=0; index_k < integrand_size; index_k++) { + /** --> convert each ic component from logarithmic to linear format */ - k_integrand=pnl->k[0]*pow(10.,index_k/ppr->halofit_k_per_decade); + for (index_ic1=0; index_ic1 < pnl->ic_size; index_ic1++) { + index_ic1_ic1 = index_symmetric_matrix(index_ic1,index_ic1,pnl->ic_size); + out_pk_ic[index_ic1_ic1] = exp(out_pk_ic[index_ic1_ic1]); + } + for (index_ic1=0; index_ic1 < pnl->ic_size; index_ic1++) { + for (index_ic2=index_ic1+1; index_ic2 < pnl->ic_size; index_ic2++) { + index_ic1_ic1 = index_symmetric_matrix(index_ic1,index_ic1,pnl->ic_size); + index_ic2_ic2 = index_symmetric_matrix(index_ic2,index_ic2,pnl->ic_size); + index_ic1_ic2 = index_symmetric_matrix(index_ic1,index_ic2,pnl->ic_size); + out_pk_ic[index_ic1_ic2] + = out_pk_ic[index_ic1_ic2]*sqrt(out_pk_ic[index_ic1_ic1]*out_pk_ic[index_ic2_ic2]); + } + } + } + } - class_call(array_interpolate_spline(lnk_l, - pnl->k_size, - lnpk_l, - ddlnpk_l, - 1, - log(k_integrand), - &last_index, - &lnpk_integrand, - 1, - pnl->error_message), - pnl->error_message, - pnl->error_message); + /** --> deal with case 0 < k < kmin that requires extrapolation + * P(k) = [some number] * k * P_primordial(k) + * so + * P(k) = P(kmin) * (k P_primordial(k)) / (kmin P_primordial(kmin)) + * (note that the result is accurate only if kmin is such that [a0 kmin] << H0) + * + * This is accurate for the synchronous gauge; TODO: write + * newtonian gauge case. Also, In presence of isocurvature + * modes, we assumes for simplicity that the mode with + * index_ic1_ic2=0 dominates at small k: exact treatment should be + * written if needed. + */ - integrand_array[index_k*ia_size + index_ia_k] = k_integrand; - integrand_array[index_k*ia_size + index_ia_pk] = exp(lnpk_integrand); + else { - } + /** --> First, get P(k) at the right z (in linear format) */ - class_call(background_at_tau(pba,tau,pba->long_info,pba->inter_normal,&last_index,pvecback), - pba->error_message, - pnl->error_message); + class_call(nonlinear_pk_at_z(pba, + pnl, + linear, + pk_output, + z, + index_pk, + out_pk_at_z, + out_pk_ic_at_z + ), + pnl->error_message, + pnl->error_message); - Omega_m = pvecback[pba->index_bg_Omega_m]; - Omega_v = 1.-pvecback[pba->index_bg_Omega_m]-pvecback[pba->index_bg_Omega_r]; + /* get P(kmin) */ + *out_pk = out_pk_at_z[0]; - /* minimum value of R such that the integral giving sigma_R is converged */ - R=sqrt(-log(ppr->halofit_sigma_precision))/integrand_array[(integrand_size-1)*ia_size + index_ia_k]; + if (do_ic == _TRUE_) { + for (index_ic1_ic2=0; index_ic1_ic2ic_ic_size; index_ic1_ic2++) { + out_pk_ic[index_ic1_ic2] = out_pk_ic_at_z[index_ic1_ic2]; + } + } - /* corresponding value of sigma_R */ - sum1=0.; - for (index_k=0; index_k < integrand_size; index_k++) { - x2 = pow(integrand_array[index_k*ia_size + index_ia_k]*R,2); - integrand_array[index_k*ia_size + index_ia_sum1] = integrand_array[index_k*ia_size + index_ia_pk] - *pow(integrand_array[index_k*ia_size + index_ia_k],2)*anorm*exp(-x2); - } - /* fill in second derivatives */ - class_call(array_spline(integrand_array, - ia_size, - integrand_size, - index_ia_k, - index_ia_sum1, - index_ia_ddsum1, - _SPLINE_EST_DERIV_, - pnl->error_message), - pnl->error_message, - pnl->error_message); - /* integrate */ - class_call(array_integrate_all_spline(integrand_array, - ia_size, - integrand_size, - index_ia_k, - index_ia_sum1, - index_ia_ddsum1, - &sum1, - pnl->error_message), - pnl->error_message, - pnl->error_message); - sigma = sqrt(sum1); + /* compute P_primordial(k) */ - class_test_except(sigma < 1., - pnl->error_message, - free(pvecback);free(integrand_array), - "Your k_max=%g 1/Mpc is too small for Halofit to find the non-linearity scale z_nl at z=%g. Increase input parameter P_k_max_h/Mpc or P_k_max_1/Mpc", - pnl->k[pnl->k_size-1], - pba->a_today/pvecback[pba->index_bg_a]-1.); + class_alloc(pk_primordial_k, + sizeof(double)*pnl->ic_ic_size, + pnl->error_message); - xlogr1 = log(R)/log(10.); + class_call(primordial_spectrum_at_k(ppm, + pnl->index_md_scalars, + linear, + k, + pk_primordial_k), + ppm->error_message, + pnl->error_message); - /* maximum value of R in the bisection algorithm leading to the determination of R_nl */ - R=1./ppr->halofit_min_k_nonlinear; + /* compute P_primordial(kmin) */ - /* corresponding value of sigma_R */ - sum1=0.; - for (index_k=0; index_k < integrand_size; index_k++) { - x2 = pow(integrand_array[index_k*ia_size + index_ia_k]*R,2); - integrand_array[index_k*ia_size + index_ia_sum1] = integrand_array[index_k*ia_size + index_ia_pk] - *pow(integrand_array[index_k*ia_size + index_ia_k],2)*anorm*exp(-x2); + kmin = exp(pnl->ln_k[0]); + + class_alloc(pk_primordial_kmin, + sizeof(double)*pnl->ic_ic_size, + pnl->error_message); + + class_call(primordial_spectrum_at_k(ppm, + pnl->index_md_scalars, + linear, + kmin, + pk_primordial_kmin), + ppm->error_message, + pnl->error_message); + + /* finally, infer P(k) */ + + *out_pk *= (k*pk_primordial_k[0]/kmin/pk_primordial_kmin[0]); + + if (do_ic == _TRUE_) { + for (index_ic1_ic2=0; index_ic1_ic2ic_ic_size; index_ic1_ic2++) { + out_pk_ic[index_ic1_ic2] *= (k*pk_primordial_k[index_ic1_ic2] + /kmin/pk_primordial_kmin[index_ic1_ic2]); + } + } + + free(pk_primordial_k); + free(pk_primordial_kmin); + } + + free(out_pk_at_z); + if (do_ic == _TRUE_) { + free(out_pk_ic_at_z); + } } - /* fill in second derivatives */ - class_call(array_spline(integrand_array, - ia_size, - integrand_size, - index_ia_k, - index_ia_sum1, - index_ia_ddsum1, - _SPLINE_EST_DERIV_, - pnl->error_message), - pnl->error_message, - pnl->error_message); - /* integrate */ - class_call(array_integrate_all_spline(integrand_array, - ia_size, - integrand_size, - index_ia_k, - index_ia_sum1, - index_ia_ddsum1, - &sum1, - pnl->error_message), - pnl->error_message, - pnl->error_message); - sigma = sqrt(sum1); - class_test_except(sigma > 1., - pnl->error_message, - free(pvecback);free(integrand_array), - "Your input value for the precision parameter halofit_min_k_nonlinear=%e is too large, the non-linear wavenumber k_nl must be smaller than that", - ppr->halofit_min_k_nonlinear); + return _SUCCESS_; +} - xlogr2 = log(R)/log(10.); +/* + * Same as nonlinear_pk_at_k_and_z() (see the comments there about + * the input/output format), excepted that we don't pass in input one + * type of P(k) through index_pk. Instead, we get all existing types + * in output. This function is maintained to enhance compatibility + * with old versions, but the use of nonlinear_pk_at_k_and_z() should + * be preferred. + * + * @param pba Input: pointer to background structure + * @param ppm Input: pointer to primordial structure + * @param pnl Input: pointer to nonlinear structure + * @param k Input: wavenumber + * @param z Input: redshift + * @param out_pk_l Output: P_m(k) returned as out_pk_l[index_k] + * @param out_pk_ic_l Output: P_m_ic(k) returned as out_pk_ic_l[index_k * pnl->ic_ic_size + index_ic1_ic2] + * @param out_pk_cb_l Output: P_cb(k) returned as out_pk_cb_l[index_k] + * @param out_pk_cb_ic_l Output: P_cb_ic(k) returned as out_pk_cb_ic_l[index_k * pnl->ic_ic_size + index_ic1_ic2] + * @return the error status + */ - counter = 0; - do { - rmid = pow(10,(xlogr2+xlogr1)/2.0); - counter ++; +int nonlinear_pks_at_k_and_z( + struct background * pba, + struct primordial * ppm, + struct nonlinear *pnl, + enum pk_outputs pk_output, + double k, + double z, + double * out_pk, // number P_m(k) + double * out_pk_ic, // array P_m_ic(k) of index [index_ic1_ic2] + double * out_pk_cb, // number P_cb(k) + double * out_pk_cb_ic // array P__cb_ic(k)of index [index_ic1_ic2] + ) { - /* in original halofit, this is the function wint() */ - sum1=0.; - sum2=0.; - sum3=0.; - - for (index_k=0; index_k < integrand_size; index_k++) { - x2 = pow(integrand_array[index_k*ia_size + index_ia_k],2)*rmid*rmid; - integrand_array[index_k*ia_size + index_ia_sum1] = integrand_array[index_k*ia_size + index_ia_pk] - *pow(integrand_array[index_k*ia_size + index_ia_k],2)*anorm*exp(-x2); - integrand_array[index_k*ia_size + index_ia_sum2] = integrand_array[index_k*ia_size + index_ia_pk] - *pow(integrand_array[index_k*ia_size + index_ia_k],2)*anorm*2.*x2*exp(-x2); - integrand_array[index_k*ia_size + index_ia_sum3] = integrand_array[index_k*ia_size + index_ia_pk] - *pow(integrand_array[index_k*ia_size + index_ia_k],2)*anorm*4.*x2*(1.-x2)*exp(-x2); - } - - /* fill in second derivatives */ - class_call(array_spline(integrand_array, - ia_size, - integrand_size, - index_ia_k, - index_ia_sum1, - index_ia_ddsum1, - _SPLINE_NATURAL_, - pnl->error_message), - pnl->error_message, - pnl->error_message); + if (pnl->has_pk_cb) { - class_call(array_spline(integrand_array, - ia_size, - integrand_size, - index_ia_k, - index_ia_sum2, - index_ia_ddsum2, - _SPLINE_NATURAL_, - pnl->error_message), + class_call(nonlinear_pk_at_k_and_z(pba, + ppm, + pnl, + pk_output, + k, + z, + pnl->index_pk_cb, + out_pk_cb, + out_pk_cb_ic + ), pnl->error_message, pnl->error_message); + } + if (pnl->has_pk_m) { - class_call(array_spline(integrand_array, - ia_size, - integrand_size, - index_ia_k, - index_ia_sum3, - index_ia_ddsum3, - _SPLINE_NATURAL_, - pnl->error_message), + class_call(nonlinear_pk_at_k_and_z(pba, + ppm, + pnl, + pk_output, + k, + z, + pnl->index_pk_m, + out_pk, + out_pk_ic + ), pnl->error_message, pnl->error_message); + } - /* integrate */ - class_call(array_integrate_all_spline(integrand_array, - ia_size, - integrand_size, - index_ia_k, - index_ia_sum1, - index_ia_ddsum1, - &sum1, - pnl->error_message), - pnl->error_message, - pnl->error_message); + return _SUCCESS_; +} - class_call(array_integrate_all_spline(integrand_array, - ia_size, - integrand_size, - index_ia_k, - index_ia_sum2, - index_ia_ddsum2, - &sum2, - pnl->error_message), +/** + * Return the P(k,z) for a grid of (k_i,z_j) passed in input, + * for all available pk types (_m, _cb), + * either linear or nonlinear depending on input. + * + * If there are several initial conditions, this function is not + * designed to return individual contributions. + * + * The main goal of this routine is speed. Unlike + * nonlinear_pk_at_k_and_z(), it performs no extrapolation when an + * input k_i falls outside the pre-computed range [kmin,kmax]: in that + * case, it just returns P(k,z)=0 for such a k_i + * + * @param pba Input: pointer to background structure + * @param pnl Input: pointer to nonlinear structure + * @param pk_output Input: pk_linear or pk_nonlinear + * @param kvec Input: array of wavenumbers in ascending order (in 1/Mpc) + * @param kvec_size Input: size of array of wavenumbers + * @param zvec Input: array of redshifts in arbitrary order + * @param zvec_size Input: size of array of redshifts + * @param out_pk Output: P(k_i,z_j) for total matter (if available) in Mpc**3 + * @param out_pk_cb Output: P_cb(k_i,z_j) for cdm+baryons (if available) in Mpc**3 + * @return the error status + */ + +int nonlinear_pks_at_kvec_and_zvec( + struct background * pba, + struct nonlinear * pnl, + enum pk_outputs pk_output, + double * kvec, // kvec[index_kvec] + int kvec_size, + double * zvec, // zvec[index_zvec] + int zvec_size, + double * out_pk, // output_pk[index_zvec*kvec_size+index_kvec], + // already allocated + //(or NULL if user knows there is no _m output) + double * out_pk_cb // output_pk[index_zvec*kvec_size+index_kvec], + //already allocated + //(or NULL if user knows there is no _cb output) + ) { + + /** Summary: */ + + /** - define local variables */ + + int index_k, index_kvec, index_zvec; + double * ln_kvec; + double * ln_pk_table = NULL; + double * ddln_pk_table = NULL; + double * ln_pk_cb_table = NULL; + double * ddln_pk_cb_table = NULL; + double h, a, b; + + /** - Allocate arrays */ + + class_alloc(ln_kvec, sizeof(double)*kvec_size, + pnl->error_message); + + if (pnl->has_pk_m) { + class_alloc(ln_pk_table, sizeof(double)*pnl->k_size*zvec_size, + pnl->error_message); + class_alloc(ddln_pk_table, sizeof(double)*pnl->k_size*zvec_size, + pnl->error_message); + } + if (pnl->has_pk_cb) { + class_alloc(ln_pk_cb_table, sizeof(double)*pnl->k_size*zvec_size, + pnl->error_message); + class_alloc(ddln_pk_cb_table, sizeof(double)*pnl->k_size*zvec_size, + pnl->error_message); + } + + /** - Construct table of log(P(k_n,z_j)) for pre-computed wavenumbers but requested redshifts: */ + + for (index_zvec=0; index_zvechas_pk_m) { + class_call(nonlinear_pk_at_z(pba, + pnl, + logarithmic, + pk_output, + zvec[index_zvec], + pnl->index_pk_m, + &(ln_pk_table[index_zvec * pnl->k_size]), + NULL), + pnl->error_message, + pnl->error_message); + } + if (pnl->has_pk_cb) { + class_call(nonlinear_pk_at_z(pba, + pnl, + logarithmic, + pk_output, + zvec[index_zvec], + pnl->index_pk_cb, + &(ln_pk_cb_table[index_zvec * pnl->k_size]), + NULL), + pnl->error_message, + pnl->error_message); + } + } + + /** - Spline it for interpolation along k */ + + if (pnl->has_pk_m) { + + class_call(array_spline_table_columns2(pnl->ln_k, + pnl->k_size, + ln_pk_table, + zvec_size, + ddln_pk_table, + _SPLINE_NATURAL_, + pnl->error_message), pnl->error_message, pnl->error_message); + } + if (pnl->has_pk_cb) { - class_call(array_integrate_all_spline(integrand_array, - ia_size, - integrand_size, - index_ia_k, - index_ia_sum3, - index_ia_ddsum3, - &sum3, - pnl->error_message), + class_call(array_spline_table_columns2(pnl->ln_k, + pnl->k_size, + ln_pk_cb_table, + zvec_size, + ddln_pk_cb_table, + _SPLINE_NATURAL_, + pnl->error_message), pnl->error_message, pnl->error_message); + } - sigma = sqrt(sum1); - d1 = -sum2/sum1; - d2 = -sum2*sum2/sum1/sum1 - sum3/sum1; - /* in original halofit, this is the end of the function wint() */ + /** - Construct ln(kvec): */ - diff = sigma - 1.0; + for (index_kvec=0; index_kvec0.001){ - xlogr1=log10(rmid); + /** - Loop over first k values. If k= pnl->ln_k[0]) + break; + + /* deal with khas_pk_m) out_pk[index_zvec*kvec_size+index_kvec] = 0.; + if (pnl->has_pk_cb) out_pk_cb[index_zvec*kvec_size+index_kvec] = 0.; + /* (If needed, one could add instead some extrapolation here) */ } - else if (diff < -0.001) { - xlogr2 = log10(rmid); + } + + /** - Deal with case kmin<=k<=kmax. For better performance, do not + loop through kvec, but through pre-computed k values. */ + + for (index_k=0; index_k < (pnl->k_size-1); index_k++){ + + /** --> Loop through k_i's that fall in interval [k_n,k_n+1] */ + + while ((index_kvec < kvec_size) && (ln_kvec[index_kvec] <= pnl->ln_k[index_k+1])){ + + /** --> for each of them, perform spine interpolation */ + + h = pnl->ln_k[index_k+1]-pnl->ln_k[index_k]; + b = (ln_kvec[index_kvec] - pnl->ln_k[index_k])/h; + a = 1.-b; + + for (index_zvec = 0; index_zvec < zvec_size; index_zvec++) { + + if (pnl->has_pk_m) { + + out_pk[index_zvec*kvec_size+index_kvec] = + exp( + a * ln_pk_table[index_zvec * pnl->k_size + index_k] + + b * ln_pk_table[index_zvec * pnl->k_size + index_k+1] + + ((a*a*a-a) * ddln_pk_table[index_zvec * pnl->k_size + index_k] + +(b*b*b-b) * ddln_pk_table[index_zvec * pnl->k_size + index_k+1]) + *h*h/6.0 + ); + } + if (pnl->has_pk_cb) { + + out_pk_cb[index_zvec*kvec_size+index_kvec] = + exp( + a * ln_pk_cb_table[index_zvec * pnl->k_size + index_k] + + b * ln_pk_cb_table[index_zvec * pnl->k_size + index_k+1] + + ((a*a*a-a) * ddln_pk_cb_table[index_zvec * pnl->k_size + index_k] + +(b*b*b-b) * ddln_pk_cb_table[index_zvec * pnl->k_size + index_k+1]) + *h*h/6.0 + ); + } + } + index_kvec++; } + } - class_test_except(counter > _MAX_IT_, - pnl->error_message, - free(pvecback);free(integrand_array), - "could not converge within maximum allowed number of iterations"); + /** - Loop over possible remaining k values with k > kmax, to fill output with zeros. */ - } while (fabs(diff) > 0.001); + while (index_kvec < kvec_size) { - rknl = 1./rmid; - rneff = -3.-d1; - rncur = -d2; + for (index_zvec = 0; index_zvec < zvec_size; index_zvec++) { + if (pnl->has_pk_m) out_pk[index_zvec*kvec_size+index_kvec] = 0.; + if (pnl->has_pk_cb) out_pk_cb[index_zvec*kvec_size+index_kvec] = 0.; + /* (If needed, one could add instead some extrapolation here) */ + } + index_kvec++; + } - *k_nl = rknl; + free(ln_kvec); + if (pnl->has_pk_m) { + free(ln_pk_table); + free(ddln_pk_table); + } + if (pnl->has_pk_cb) { + free(ln_pk_cb_table); + free(ddln_pk_cb_table); + } - //fprintf(stderr,"Here\n"); + return _SUCCESS_; +} - for (index_k = 0; index_k < pnl->k_size; index_k++){ +/** + * Return the logarithmic slope of P(k,z) for a given (k,z), a given pk type (_m, _cb) + * (computed with linear P_L if pk_output = pk_linear, nonlinear P_NL if pk_output = pk_nonlinear) + * + * @param pba Input: pointer to background structure + * @param ppm Input: pointer to primordial structure + * @param pnl Input: pointer to nonlinear structure + * @param pk_output Input: linear or nonlinear + * @param k Input: wavenumber in 1/Mpc + * @param z Input: redshift + * @param index_pk Input: index of pk type (_m, _cb) + * @param n_eff Output: logarithmic slope of P(k,z) + * @return the error status + */ - rk = pnl->k[index_k]; +int nonlinear_pk_tilt_at_k_and_z( + struct background * pba, + struct primordial * ppm, + struct nonlinear * pnl, + enum pk_outputs pk_output, + double k, + double z, + int index_pk, + double * pk_tilt + ) { - if (rk > ppr->halofit_min_k_nonlinear) { + double dlnk; + double out_pk1,out_pk2; - pk_lin = pk_l[index_k]*pow(pnl->k[index_k],3)*anorm; + /* typical step dln(k) on which we believe that out results are not + dominated by numerical errors and that the P(k,z) is slowly + varying */ - /* in original halofit, this is the beginning of the function halofit() */ + dlnk = pnl->ln_k[pnl->k_size-1] - pnl->ln_k[pnl->k_size-2]; - /*SPB11: Standard halofit underestimates the power on the smallest - * scales by a factor of two. Add an extra correction from the - * simulations in Bird, Viel,Haehnelt 2011 which partially accounts for - * this.*/ - /*SPB14: This version of halofit is an updated version of the fit to the massive neutrinos - * based on the results of Takahashi 2012, (arXiv:1208.2701). - */ - gam=0.1971-0.0843*rneff+0.8460*rncur; - a=1.5222+2.8553*rneff+2.3706*rneff*rneff+0.9903*rneff*rneff*rneff+ 0.2250*rneff*rneff*rneff*rneff-0.6038*rncur+0.1749*Omega_v*(1.+w0); - a=pow(10,a); - b=pow(10, (-0.5642+0.5864*rneff+0.5716*rneff*rneff-1.5474*rncur+0.2279*Omega_v*(1.+w0))); - c=pow(10, 0.3698+2.0404*rneff+0.8161*rneff*rneff+0.5869*rncur); - xmu=0.; - xnu=pow(10,5.2105+3.6902*rneff); - alpha=fabs(6.0835+1.3373*rneff-0.1959*rneff*rneff-5.5274*rncur); - beta=2.0379-0.7354*rneff+0.3157*pow(rneff,2)+1.2490*pow(rneff,3)+0.3980*pow(rneff,4)-0.1682*rncur + fnu*(1.081 + 0.395*pow(rneff,2)); + class_call(nonlinear_pk_at_k_and_z(pba, + ppm, + pnl, + pk_output, + k/(1.+dlnk), + z, + index_pk, + &out_pk1, + NULL), + pnl->error_message, + pnl->error_message); - if(fabs(1-Omega_m)>0.01) { /*then omega evolution */ - f1a=pow(Omega_m,(-0.0732)); - f2a=pow(Omega_m,(-0.1423)); - f3a=pow(Omega_m,(0.0725)); - f1b=pow(Omega_m,(-0.0307)); - f2b=pow(Omega_m,(-0.0585)); - f3b=pow(Omega_m,(0.0743)); - frac=Omega_v/(1.-Omega_m); - f1=frac*f1b + (1-frac)*f1a; - f2=frac*f2b + (1-frac)*f2a; - f3=frac*f3b + (1-frac)*f3a; - } - else { - f1=1.; - f2=1.; - f3=1.; - } + class_call(nonlinear_pk_at_k_and_z(pba, + ppm, + pnl, + pk_output, + k*(1.+dlnk), + z, + index_pk, + &out_pk2, + NULL), + pnl->error_message, + pnl->error_message); - y=(rk/rknl); - pk_halo = a*pow(y,f1*3.)/(1.+b*pow(y,f2)+pow(f3*c*y,3.-gam)); - pk_halo=pk_halo/(1+xmu*pow(y,-1)+xnu*pow(y,-2))*(1+fnu*(0.977-18.015*(Omega0_m-0.3))); - // rk is in 1/Mpc, 47.48and 1.5 in Mpc**-2, so we need an h**2 here (Credits Antonio J. Cuesta) - pk_linaa=pk_lin*(1+fnu*47.48*pow(rk/pba->h,2)/(1+1.5*pow(rk/pba->h,2))); - pk_quasi=pk_lin*pow((1+pk_linaa),beta)/(1+pk_linaa*alpha)*exp(-y/4.0-pow(y,2)/8.0); + /* logarithmic derivative: n_eff = (logPk2 - logPk1)/(logk2-logk1) */ - pk_nl[index_k] = (pk_halo+pk_quasi)/pow(pnl->k[index_k],3)/anorm; + *pk_tilt = (log(out_pk2)-log(out_pk1))/(2.*log(1.+dlnk)); - /* in original halofit, this is the end of the function halofit() */ + return _SUCCESS_; + +} + +/** + * This routine computes the variance of density fluctuations in a + * sphere of radius R at redshift z, sigma(R,z), or other similar derived + * quantitites, for one given pk type (_m, _cb). + * + * The integral is performed until the maximum value of k_max defined + * in the perturbation module. Here there is not automatic checking + * that k_max is large enough for the result to be well + * converged. E.g. to get an accurate sigma8 at R = 8 Mpc/h, the user + * should pass at least about P_k_max_h/Mpc = 1. + * + * @param ppr Input: pointer to precision structure + * @param pba Input: pointer to background structure + * @param pnl Input: pointer to nonlinear structure + * @param R Input: radius in Mpc + * @param z Input: redshift + * @param index_pk Input: type of pk (_m, _cb) + * @param sigma_output Input: quantity to be computed (sigma, sigma', ...) + * @param result Output: result + * @return the error status + */ + +int nonlinear_sigmas_at_z( + struct precision * ppr, + struct background * pba, + struct nonlinear * pnl, + double R, + double z, + int index_pk, + enum out_sigmas sigma_output, + double * result + ) { + + double * out_pk; + double * ddout_pk; + + /** - allocate temporary array for P(k,z) as a function of k */ + + class_alloc(out_pk, pnl->k_size*sizeof(double), pnl->error_message); + class_alloc(ddout_pk, pnl->k_size*sizeof(double), pnl->error_message); + + /** - get P(k,z) as a function of k, for the right z */ + + class_call(nonlinear_pk_at_z(pba, + pnl, + logarithmic, + pk_linear, + z, + index_pk, + out_pk, + NULL), + pnl->error_message, + pnl->error_message); + + /** - spline it along k */ + + class_call(array_spline_table_columns(pnl->ln_k, + pnl->k_size, + out_pk, + 1, + ddout_pk, + _SPLINE_EST_DERIV_, + pnl->error_message), + pnl->error_message, + pnl->error_message); + + /** - calll the function computing the sigmas */ + + class_call(nonlinear_sigmas(pnl, + R, + out_pk, + ddout_pk, + pnl->k_size, + ppr->sigma_k_per_decade, + sigma_output, + result), + pnl->error_message, + pnl->error_message); + + /** - free allocated arrays */ + + free(out_pk); + free(ddout_pk); + + return _SUCCESS_; +} + +/** + * Return the value of the non-linearity wavenumber k_nl for a given redshift z + * + * @param pba Input: pointer to background structure + * @param pnl Input: pointer to nonlinear structure + * @param z Input: redshift + * @param k_nl Output: k_nl value + * @param k_nl_cb Ouput: k_nl value of the cdm+baryon part only, if there is ncdm + * @return the error status + */ + +int nonlinear_k_nl_at_z( + struct background *pba, + struct nonlinear * pnl, + double z, + double * k_nl, + double * k_nl_cb + ) { + + double tau; + + /** - convert input redshift into a conformal time */ + + class_call(background_tau_of_z(pba, + z, + &tau), + pba->error_message, + pnl->error_message); + + /** - interpolate the precomputed k_nl array at the needed valuetime */ + + if (pnl->has_pk_m == _TRUE_) { + + if (pnl->tau_size == 1) { + *k_nl = pnl->k_nl[pnl->index_pk_m][0]; + } + else { + class_call(array_interpolate_two(pnl->tau, + 1, + 0, + pnl->k_nl[pnl->index_pk_m], + 1, + pnl->tau_size, + tau, + k_nl, + 1, + pnl->error_message), + pnl->error_message, + pnl->error_message); + } + } + + /** - if needed, do the same for the baryon part only */ + + if (pnl->has_pk_cb) { + + if (pnl->tau_size == 1) { + *k_nl_cb = pnl->k_nl[pnl->index_pk_cb][0]; } else { - pk_nl[index_k] = pk_l[index_k]; + class_call(array_interpolate_two(pnl->tau, + 1, + 0, + pnl->k_nl[pnl->index_pk_cb], + 1, + pnl->tau_size, + tau, + k_nl_cb, + 1, + pnl->error_message), + pnl->error_message, + pnl->error_message); } } - free(pvecback); - free(integrand_array); + /* otherwise, return the same for k_nl_cb as for k_nl */ + + else{ + *k_nl_cb = *k_nl; + } + return _SUCCESS_; } + +/** + * Initialize the nonlinear structure, and in particular the + * nl_corr_density and k_nl interpolation tables. + * + * @param ppr Input: pointer to precision structure + * @param pba Input: pointer to background structure + * @param pth Input: pointer to therodynamics structure + * @param ppt Input: pointer to perturbation structure + * @param ppm Input: pointer to primordial structure + * @param pnl Input/Output: pointer to initialized nonlinear structure + * @return the error status + */ + +int nonlinear_init( + struct precision *ppr, + struct background *pba, + struct thermo *pth, + struct perturbs *ppt, + struct primordial *ppm, + struct nonlinear *pnl + ) { + + int index_ncdm; + int index_k; + int index_tau; + int index_tau_sources; + int index_tau_late; + int index_pk; + + double **pk_nl; + double **lnpk_l; + double **ddlnpk_l; + + short nl_corr_not_computable_at_this_k = _FALSE_; + + double * pvecback; + int last_index; + double a,z; + + struct nonlinear_workspace nw; + struct nonlinear_workspace * pnw; + + /** - preliminary tests */ + + /** --> This module only makes sense for dealing with scalar + perturbations, so it should do nothing if there are no + scalars */ + if (ppt->has_scalars == _FALSE_) { + pnl->method = nl_none; + printf("No scalar modes requested. Nonlinear module skipped.\n"); + return _SUCCESS_; + } + + /** --> Nothing to be done if we don't want the matter power spectrum */ + + pnl->has_pk_matter = ppt->has_pk_matter; + + if ((pnl->has_pk_matter == _FALSE_) && (pnl->method == nl_none)) { + if (pnl->nonlinear_verbose > 0) + printf("No Fourier spectra nor nonlinear corrections requested. Nonlinear module skipped.\n"); + return _SUCCESS_; + } + else { + if (pnl->nonlinear_verbose > 0) + printf("Computing linear Fourier spectra.\n"); + } + + /** --> check applicability of Halofit and HMcode */ + if (pnl->method > nl_none) { + + if (pba->has_ncdm) { + for (index_ncdm=0;index_ncdm < pba->N_ncdm; index_ncdm++){ + if (pba->m_ncdm_in_eV[index_ncdm] > _M_EV_TOO_BIG_FOR_HALOFIT_) + fprintf(stdout,"Warning: Halofit and HMcode are proved to work for CDM, and also with a small HDM component. But it sounds like you are running with a WDM component of mass %f eV, which makes the use of Halofit suspicious.\n",pba->m_ncdm_in_eV[index_ncdm]); + } + } + if (pba->has_idm_dr){ + fprintf(stdout,"Warning: Halofit and HMcode are proved to work for CDM, and also with a small HDM component. But you have requested interacting dark matter (idm_dr), which makes the use of Halofit or HMCode unreliable.\n"); + } + } + + /** - define indices in nonlinear structure (and allocate some arrays in the structure) */ + + class_call(nonlinear_indices(ppr,pba,ppt,ppm,pnl), + pnl->error_message, + pnl->error_message); + + /** - get the linear power spectrum at each time */ + + for (index_tau=0; index_tauln_tau_size;index_tau++) { + + /* If the user only wants z=0, then pnl->ln_tau_size=1 and we go + only through index_tau=0. However we must pick up the last + value of the source, index_tau_sources = ppt->tau_size-1. If + the user wants several values of z, they correspond to the last + ppt->ln_tau_size values of the sources (those that were also + part of the array ppt->late_sources in the perturbation + module). In all cases, the following formula gives the + correspondance between index_tau in the current array and in + the sources array: + */ + + index_tau_sources = ppt->tau_size-ppt->ln_tau_size+index_tau; + + /** --> loop over required pk types (_m, _cb) */ + + for (index_pk=0; index_pkpk_size; index_pk++) { + + /** --> get the linear power spectrum for this time and this type */ + + class_call(nonlinear_pk_linear( + pba, + ppt, + ppm, + pnl, + index_pk, + index_tau_sources, + pnl->k_size, + &(pnl->ln_pk_l[index_pk][index_tau * pnl->k_size]), + &(pnl->ln_pk_ic_l[index_pk][index_tau * pnl->k_size * pnl->ic_ic_size]) + ), + pnl->error_message, + pnl->error_message); + + + /** --> if interpolation of \f$P(k,\tau)\f$ will be needed (as a + function of tau), compute array of second derivatives in view of + spline interpolation */ + + if (pnl->ln_tau_size > 1) { + + class_call(array_spline_table_lines(pnl->ln_tau, + pnl->ln_tau_size, + pnl->ln_pk_l[index_pk], + pnl->k_size, + pnl->ddln_pk_l[index_pk], + _SPLINE_EST_DERIV_, + pnl->error_message), + pnl->error_message, + pnl->error_message); + + class_call(array_spline_table_lines(pnl->ln_tau, + pnl->ln_tau_size, + pnl->ln_pk_ic_l[index_pk], + pnl->k_size*pnl->ic_ic_size, + pnl->ddln_pk_ic_l[index_pk], + _SPLINE_EST_DERIV_, + pnl->error_message), + pnl->error_message, + pnl->error_message); + } + } + } + + /** - compute and store sigma8 (variance of density fluctuations in + spheres of radius 8/h Mpc at z=0, always computed by + convention using the linear power spectrum) */ + + for (index_pk=0; index_pkpk_size; index_pk++) { + + class_call(nonlinear_sigmas_at_z(ppr, + pba, + pnl, + 8./pba->h, + 0., + index_pk, + out_sigma, + &(pnl->sigma8[index_pk])), + pnl->error_message, + pnl->error_message); + } + + if (pnl->nonlinear_verbose>0) { + + if (pnl->has_pk_m == _TRUE_) + fprintf(stdout," -> sigma8=%g for total matter (computed till k = %g h/Mpc)\n", + pnl->sigma8[pnl->index_pk_m], + pnl->k[pnl->k_size-1]/pba->h); + + if (pnl->has_pk_cb == _TRUE_) + fprintf(stdout," -> sigma8=%g for baryons+cdm (computed till k = %g h/Mpc)\n", + pnl->sigma8[pnl->index_pk_cb], + pnl->k[pnl->k_size-1]/pba->h); + } + + /** - get the non-linear power spectrum at each time */ + + /** --> First deal with the case where non non-linear corrections requested */ + + if (pnl->method == nl_none) { + if (pnl->nonlinear_verbose > 0) + printf("No non-linear spectra requested. Nonlinear calculations skipped.\n"); + } + + /** --> Then go through common preliminary steps to the HALOFIT and HMcode methods */ + else if ((pnl->method == nl_halofit) || ((pnl->method == nl_HMcode)) || ((pnl->method == nl_HMcode_2020))) { + + if ((pnl->nonlinear_verbose > 0) && (pnl->method == nl_halofit)) + printf("Computing non-linear matter power spectrum with Halofit (including update Takahashi et al. 2012 and Bird 2014)\n"); + + if ((pnl->nonlinear_verbose > 0) && (pnl->method == nl_HMcode)) + printf("Computing non-linear matter power spectrum with HMcode \n"); + if ((pnl->nonlinear_verbose > 0) && (pnl->method == nl_HMcode_2020)) + printf("Computing non-linear matter power spectrum with HMcode2020 \n"); + + + /** --> allocate temporary arrays for spectra at each given time/redshift */ + + class_alloc(pk_nl, + pnl->k_size*sizeof(double), + pnl->error_message); + + class_alloc(lnpk_l, + pnl->k_size*sizeof(double), + pnl->error_message); + + class_alloc(ddlnpk_l, + pnl->k_size*sizeof(double), + pnl->error_message); + + for (index_pk=0; index_pkpk_size; index_pk++){ + class_alloc(pk_nl[index_pk],pnl->k_size*sizeof(double),pnl->error_message); + class_alloc(lnpk_l[index_pk],pnl->k_size_extra*sizeof(double),pnl->error_message); + class_alloc(ddlnpk_l[index_pk],pnl->k_size_extra*sizeof(double),pnl->error_message); + } + + /** --> Then go through preliminary steps specific to HMcode */ + + if (pnl->method == nl_HMcode){ + + pnw = &nw; + + class_call(nonlinear_hmcode_workspace_init(ppm, ppr,pba,pnl,pnw), + pnl->error_message, + pnl->error_message); + + class_call(nonlinear_hmcode_dark_energy_correction(ppr,pba,pnl,pnw), + pnl->error_message, + pnl->error_message); + + class_call(nonlinear_hmcode_baryonic_feedback(pnl), + pnl->error_message, + pnl->error_message); + } + + + if (pnl->method == nl_HMcode_2020){ + + pnw = &nw; + + class_call(nonlinear_hmcode_workspace_init(ppm, ppr,pba,pnl,pnw), + pnl->error_message, + pnl->error_message); + + class_call(nonlinear_hmcode_dark_energy_correction(ppr,pba,pnl,pnw), + pnl->error_message, + pnl->error_message); + + } + + + + + /** --> Loop over decreasing time/growing redhsift. For each + time/redshift, compute P_NL(k,z) using either Halofit or + HMcode */ + + /* this flag will become _TRUE_ at the minimum redshift such that + the non-lienar corrections cannot be consistently computed */ + nl_corr_not_computable_at_this_k = _FALSE_; + + /* this index will refer to the value of time corresponding to + that redhsift */ + pnl->index_tau_min_nl = 0; + + for (index_tau = pnl->tau_size-1; index_tau>=0; index_tau--) { + + /* loop over index_pk, defined such that it is ensured + * that index_pk starts at index_pk_cb when neutrinos are + * included. This is necessary for hmcode, since the sigmatable + * needs to be filled for sigma_cb only. Thus, when HMcode + * evalutes P_m_nl, it needs both P_m_l and P_cb_l. */ + + for (index_pk=0; index_pkpk_size; index_pk++) { + + /* get P_L(k) at this time */ + class_call(nonlinear_pk_linear( + pba, + ppt, + ppm, + pnl, + index_pk, + index_tau, + pnl->k_size_extra, + lnpk_l[index_pk], + NULL + ), + pnl->error_message, + pnl->error_message); + + /* spline P_L(k) at this time along k */ + class_call(array_spline_table_columns( + pnl->ln_k, + pnl->k_size_extra, + lnpk_l[index_pk], + 1, + ddlnpk_l[index_pk], + _SPLINE_NATURAL_, + pnl->error_message), + pnl->error_message, + pnl->error_message); + + /* if we are still in a range of time where P_NL(k) should be computable */ + if (nl_corr_not_computable_at_this_k == _FALSE_) { + + /* get P_NL(k) at this time with Halofit */ + if (pnl->method == nl_halofit) { + + class_call(nonlinear_halofit( + ppr, + pba, + ppt, + ppm, + pnl, + index_pk, + pnl->tau[index_tau], + pk_nl[index_pk], + lnpk_l[index_pk], + ddlnpk_l[index_pk], + &(pnl->k_nl[index_pk][index_tau]), + &nl_corr_not_computable_at_this_k), + pnl->error_message, + pnl->error_message); + + } + + /* get P_NL(k) at this time with HMcode */ + else if (pnl->method == nl_HMcode) { + /* (preliminary step: fill table of sigma's, only for _cb if there is both _cb and _m) */ + if (index_pk == 0) { + class_call(nonlinear_hmcode_fill_sigtab(ppr, + pba, + ppt, + ppm, + pnl, + index_tau, + lnpk_l[index_pk], + ddlnpk_l[index_pk], + pnw), + pnl->error_message, pnl->error_message); + } + + class_call(nonlinear_hmcode(ppr, + pba, + ppt, + ppm, + pnl, + index_pk, + index_tau, + pnl->tau[index_tau], + pk_nl[index_pk], + lnpk_l, + ddlnpk_l, + &(pnl->k_nl[index_pk][index_tau]), + &nl_corr_not_computable_at_this_k, + pnw), + pnl->error_message, + pnl->error_message); + } + + + else if (pnl->method == nl_HMcode_2020) { + /* (preliminary step: fill table of sigma's, only for _cb if there is both _cb and _m) */ + if (index_pk == pnl->index_pk_cb) { + class_call(nonlinear_hmcode_fill_sigtab(ppr, + pba, + ppt, + ppm, + pnl, + index_tau, + lnpk_l[index_pk], + ddlnpk_l[index_pk], + pnw), + pnl->error_message, pnl->error_message); + } + + class_call(nonlinear_hmcode2020(ppr, + pba, + ppt, + ppm, + pnl, + index_pk, + index_tau, + pnl->tau[index_tau], + pk_nl[index_pk], + lnpk_l, + ddlnpk_l, + &(pnl->k_nl[index_pk][index_tau]), + &nl_corr_not_computable_at_this_k, + pnw), + pnl->error_message, + pnl->error_message); + } + + + /* infer and store R_NL=(P_NL/P_L)^1/2 */ + if (nl_corr_not_computable_at_this_k == _FALSE_) { + for (index_k=0; index_kk_size; index_k++) { + pnl->nl_corr_density[index_pk][index_tau * pnl->k_size + index_k] = sqrt(pk_nl[index_pk][index_k]/exp(lnpk_l[index_pk][index_k])); + } + } + + /* otherwise we met the first problematic value of time */ + else { + + /* store the index of that value */ + pnl->index_tau_min_nl = MIN(pnl->tau_size-1,index_tau+1); //this MIN() ensures that index_tau_min_nl is never out of bounds + + /* store R_NL=1 for that time */ + for (index_k=0; index_kk_size; index_k++) { + pnl->nl_corr_density[index_pk][index_tau * pnl->k_size + index_k] = 1.; + } + + /* send a warning to inform user about the corresponding value of redshift */ + if (pnl->nonlinear_verbose > 0) { + class_alloc(pvecback,pba->bg_size*sizeof(double),pnl->error_message); + class_call(background_at_tau(pba,pnl->tau[index_tau],pba->short_info,pba->inter_normal,&last_index,pvecback), + pba->error_message, + pnl->error_message); + a = pvecback[pba->index_bg_a]; + z = pba->a_today/a-1.; + fprintf(stdout, + " -> [WARNING:] Non-linear corrections could not be computed at redshift z=%5.2f and higher.\n This is because k_max is too small for the algorithm (Halofit or HMcode) to be able to compute the scale k_NL at this redshift.\n If non-linear corrections at such high redshift really matter for you,\n just try to increase one of the parameters P_k_max_h/Mpc or P_k_max_1/Mpc or halofit_min_k_max (the code will take the max of these parameters) until reaching desired z.\n",z); + + free(pvecback); + } + } + } + + /* if we are still in a range of time where P_NL(k) should NOT be computable */ + else { + /* store R_NL=1 for that time */ + for (index_k=0; index_kk_size; index_k++) { + pnl->nl_corr_density[index_pk][index_tau * pnl->k_size + index_k] = 1.; + } + + } + + /** --> fill the array of nonlinear power spectra (only if we + are at a late time where P(k) and T(k) are supposed to + be stored, i.e., such that z(tau < z_max_pk) */ + + if (index_tau >= pnl->tau_size - pnl->ln_tau_size) { + + index_tau_late = index_tau - (pnl->tau_size - pnl->ln_tau_size); + + for (index_k=0; index_kk_size; index_k++) { + pnl->ln_pk_nl[index_pk][index_tau_late * pnl->k_size + index_k] = pnl->ln_pk_l[index_pk][index_tau_late * pnl->k_size + index_k] + 2.*log(pnl->nl_corr_density[index_pk][index_tau * pnl->k_size + index_k]); + } + } + + } // end loop over index_pk + } //end loop over index_tau + + + /** --> spline the array of nonlinear power spectrum */ + + if (pnl->ln_tau_size > 1) { + for (index_pk=0; index_pkpk_size; index_pk++) { + + class_call(array_spline_table_lines(pnl->ln_tau, + pnl->ln_tau_size, + pnl->ln_pk_nl[index_pk], + pnl->k_size, + pnl->ddln_pk_nl[index_pk], + _SPLINE_EST_DERIV_, + pnl->error_message), + pnl->error_message, + pnl->error_message); + } + } + + /* --> free temporary arrays */ + + for (index_pk=0; index_pkpk_size; index_pk++){ + free(pk_nl[index_pk]); + free(lnpk_l[index_pk]); + free(ddlnpk_l[index_pk]); + } + + free(pk_nl); + free(lnpk_l); + free(ddlnpk_l); + + /** --> free the nonlinear workspace */ + + if (pnl->method == nl_HMcode) { + + class_call(nonlinear_hmcode_workspace_free(pnl,pnw), + pnl->error_message, + pnl->error_message); + } + + if (pnl->method == nl_HMcode_2020) { + + class_call(nonlinear_hmcode_workspace_free(pnl,pnw), + pnl->error_message, + pnl->error_message); + } + + + + } + + /** - if the nl_method could not be identified */ + else { + class_stop(pnl->error_message, + "Your non-linear method variable is set to %d, out of the range defined in nonlinear.h",pnl->method); + } + + return _SUCCESS_; +} + +/** + * Free all memory space allocated by nonlinear_init(). + * + * + * @param pnl Input: pointer to nonlineard structure (to be freed) + * @return the error status + */ + +int nonlinear_free( + struct nonlinear *pnl + ) { + int index_pk; + + if ((pnl->has_pk_matter == _TRUE_) || (pnl->method > nl_none)) { + + free(pnl->k); + free(pnl->ln_k); + free(pnl->ln_tau); + + for (index_pk=0; index_pkpk_size; index_pk++) { + free(pnl->ln_pk_ic_l[index_pk]); + free(pnl->ln_pk_l[index_pk]); + if (pnl->ln_tau_size>1) { + free(pnl->ddln_pk_ic_l[index_pk]); + free(pnl->ddln_pk_l[index_pk]); + } + } + free(pnl->ln_pk_ic_l); + free(pnl->ln_pk_l); + + free (pnl->sigma8); + + if (pnl->ln_tau_size>1) { + free(pnl->ddln_pk_ic_l); + free(pnl->ddln_pk_l); + } + } + + if (pnl->method > nl_none) { + + free(pnl->tau); + for(index_pk=0;index_pkpk_size;index_pk++){ + free(pnl->nl_corr_density[index_pk]); + free(pnl->k_nl[index_pk]); + free(pnl->ln_pk_nl[index_pk]); + if (pnl->ln_tau_size > 1) + free(pnl->ddln_pk_nl[index_pk]); + } + free(pnl->nl_corr_density); + free(pnl->k_nl); + free(pnl->ln_pk_nl); + if (pnl->ln_tau_size > 1) + free(pnl->ddln_pk_nl); + } + + if (pnl->has_pk_eq == _TRUE_) { + free(pnl->pk_eq_tau); + free(pnl->pk_eq_w_and_Omega); + free(pnl->pk_eq_ddw_and_ddOmega); + } + + return _SUCCESS_; +} + +/** + * Define indices in the nonlinear array, and when possible, allocate + * arrays in this structure given the index sizes found here + * + * @param ppr Input: pointer to precision structure + * @param pba Input: pointer to background structure + * @param ppt Input: pointer to perturbation structure + * @param ppm Input: pointer to primordial structure + * @param pnl Input/Output: pointer to nonlinear structure + * @return the error status +*/ + +int nonlinear_indices( + struct precision *ppr, + struct background *pba, + struct perturbs * ppt, + struct primordial * ppm, + struct nonlinear * pnl + ) { + + int index_ic1_ic2; + int index_pk; + + /** - define indices for initial conditions (and allocate related arrays) */ + pnl->index_md_scalars = ppt->index_md_scalars; + pnl->ic_size = ppm->ic_size[pnl->index_md_scalars]; + pnl->ic_ic_size = ppm->ic_ic_size[pnl->index_md_scalars]; + class_alloc(pnl->is_non_zero,sizeof(short)*pnl->ic_ic_size,pnl->error_message); + for (index_ic1_ic2=0; index_ic1_ic2 < pnl->ic_ic_size; index_ic1_ic2++) + pnl->is_non_zero[index_ic1_ic2] = ppm->is_non_zero[pnl->index_md_scalars][index_ic1_ic2]; + + /** - define flags indices for pk types (_m, _cb). Note: due to some + dependencies in HMcode, when pnl->index_pk_cb exists, it must + come first (e.g. the calculation of the non-linear P_m depends on + sigma_cb so the cb-related quantitites must be evaluated + first) */ + + pnl->has_pk_m = _TRUE_; + if (pba->has_ncdm == _TRUE_) { + pnl->has_pk_cb = _TRUE_; + } + else { + pnl->has_pk_cb = _FALSE_; + } + + index_pk = 0; + class_define_index(pnl->index_pk_cb, pnl->has_pk_cb, index_pk,1); + class_define_index(pnl->index_pk_m, pnl->has_pk_m, index_pk,1); + pnl->pk_size = index_pk; + + /* and two redundent but useful indices: */ + + if (pnl->has_pk_cb == _TRUE_) { + pnl->index_pk_total = pnl->index_pk_m; + pnl->index_pk_cluster = pnl->index_pk_cb; + } + else { + pnl->index_pk_total = pnl->index_pk_m; + pnl->index_pk_cluster = pnl->index_pk_m; + } + + /** - get list of k values */ + + class_call(nonlinear_get_k_list(ppr,ppt,pnl), + pnl->error_message, + pnl->error_message); + + /** - get list of tau values */ + + class_call(nonlinear_get_tau_list(ppt,pnl), + pnl->error_message, + pnl->error_message); + + /** - given previous indices, we can allocate the array of linear power spectrum values */ + + class_alloc(pnl->ln_pk_ic_l,pnl->pk_size*sizeof(double*),pnl->error_message); + class_alloc(pnl->ln_pk_l ,pnl->pk_size*sizeof(double*),pnl->error_message); + + for (index_pk=0; index_pkpk_size; index_pk++) { + class_alloc(pnl->ln_pk_ic_l[index_pk],pnl->ln_tau_size*pnl->k_size*pnl->ic_ic_size*sizeof(double*),pnl->error_message); + class_alloc(pnl->ln_pk_l[index_pk] ,pnl->ln_tau_size*pnl->k_size*sizeof(double*),pnl->error_message); + } + + /** - if interpolation of \f$P(k,\tau)\f$ will be needed (as a function of tau), + compute also the array of second derivatives in view of spline interpolation */ + + if (pnl->ln_tau_size > 1) { + + class_alloc(pnl->ddln_pk_ic_l,pnl->pk_size*sizeof(double*),pnl->error_message); + class_alloc(pnl->ddln_pk_l ,pnl->pk_size*sizeof(double*),pnl->error_message); + + for (index_pk=0; index_pkpk_size; index_pk++) { + class_alloc(pnl->ddln_pk_ic_l[index_pk],pnl->ln_tau_size*pnl->k_size*pnl->ic_ic_size*sizeof(double*),pnl->error_message); + class_alloc(pnl->ddln_pk_l[index_pk] ,pnl->ln_tau_size*pnl->k_size*sizeof(double*),pnl->error_message); + } + } + + /** - array of sigma8 values */ + + class_alloc(pnl->sigma8,pnl->pk_size*sizeof(double*),pnl->error_message); + + /** - if non-linear computations needed, allocate array of + non-linear correction ratio R_nl(k,z), k_nl(z) and P_nl(k,z) + for each P(k) type */ + + if (pnl->method > nl_none) { + + class_alloc(pnl->k_nl, + pnl->pk_size*sizeof(double *), + pnl->error_message); + + class_alloc(pnl->nl_corr_density, + pnl->pk_size*sizeof(double *), + pnl->error_message); + + class_alloc(pnl->ln_pk_nl,pnl->pk_size*sizeof(double*),pnl->error_message); + if (pnl->ln_tau_size > 1) + class_alloc(pnl->ddln_pk_nl,pnl->pk_size*sizeof(double*),pnl->error_message); + + for (index_pk=0; index_pkpk_size; index_pk++){ + class_alloc(pnl->k_nl[index_pk],pnl->tau_size*sizeof(double),pnl->error_message); + class_alloc(pnl->nl_corr_density[index_pk],pnl->tau_size*pnl->k_size*sizeof(double),pnl->error_message); + class_alloc(pnl->ln_pk_nl[index_pk],pnl->ln_tau_size*pnl->k_size*sizeof(double*),pnl->error_message); + if (pnl->ln_tau_size > 1) + class_alloc(pnl->ddln_pk_nl[index_pk],pnl->ln_tau_size*pnl->k_size*sizeof(double*),pnl->error_message); + } + } + + return _SUCCESS_; +} + +/** + * Copy list of k from perturbation module, and extended it if + * necessary to larger k for extrapolation (currently this + * extrapolation is required only by HMcode) + * + * @param ppr Input: pointer to precision structure + * @param ppt Input: pointer to perturbation structure + * @param pnl Input/Output: pointer to nonlinear structure + * @return the error status +*/ + +int nonlinear_get_k_list( + struct precision *ppr, + struct perturbs * ppt, + struct nonlinear * pnl + ) { + + double k=0; + double k_max,exponent; + int index_k; + + pnl->k_size = ppt->k_size[pnl->index_md_scalars]; + k_max = ppt->k[pnl->index_md_scalars][pnl->k_size-1]; + + /** - if k extrapolation necessary, compute number of required extra values */ + if (pnl->method == nl_HMcode){ + index_k=0; + while(k < ppr->hmcode_max_k_extra && index_k < _MAX_NUM_EXTRAPOLATION_){ + index_k++; + k = k_max * pow(10,(double)index_k/ppr->k_per_decade_for_pk); + } + class_test(index_k == _MAX_NUM_EXTRAPOLATION_, + pnl->error_message, + "could not reach extrapolated value k = %.10e starting from k = %.10e with k_per_decade of %.10e in _MAX_NUM_INTERPOLATION_=%i steps", + ppr->hmcode_max_k_extra,k_max,ppr->k_per_decade_for_pk,_MAX_NUM_EXTRAPOLATION_ + ); + pnl->k_size_extra = pnl->k_size+index_k; + } + /** - otherwise, same number of values as in perturbation module */ + else { + pnl->k_size_extra = pnl->k_size; + } + + /** - allocate array of k */ + class_alloc(pnl->k, pnl->k_size_extra*sizeof(double),pnl->error_message); + class_alloc(pnl->ln_k,pnl->k_size_extra*sizeof(double),pnl->error_message); + + /** - fill array of k (not extrapolated) */ + for (index_k=0; index_kk_size; index_k++) { + k = ppt->k[pnl->index_md_scalars][index_k]; + pnl->k[index_k] = k; + pnl->ln_k[index_k] = log(k); + } + + /** - fill additional values of k (extrapolated) */ + for (index_k=pnl->k_size; index_kk_size_extra; index_k++) { + exponent = (double)(index_k-(pnl->k_size-1))/ppr->k_per_decade_for_pk; + pnl->k[index_k] = k * pow(10,exponent); + pnl->ln_k[index_k] = log(k) + exponent*log(10.); + } + + return _SUCCESS_; +} + +/** + * Copy list of tau from perturbation module + * + * @param ppt Input: pointer to perturbation structure + * @param pnl Input/Output: pointer to nonlinear structure + * @return the error status +*/ + +int nonlinear_get_tau_list( + struct perturbs * ppt, + struct nonlinear * pnl + ) { + + int index_tau; + + /** -> for linear calculations: only late times are considered, given the value z_max_pk inferred from the ionput */ + pnl->ln_tau_size = ppt->ln_tau_size; + + if (ppt->ln_tau_size > 1) { + + class_alloc(pnl->ln_tau,pnl->ln_tau_size*sizeof(double),pnl->error_message); + + for (index_tau=0; index_tauln_tau_size;index_tau++) { + pnl->ln_tau[index_tau] = ppt->ln_tau[index_tau]; + } + } + + /** -> for non-linear calculations: we wills store a correction factor for all times */ + if (pnl->method > nl_none) { + + pnl->tau_size = ppt->tau_size; + + class_alloc(pnl->tau,pnl->tau_size*sizeof(double),pnl->error_message); + + for (index_tau=0; index_tautau_size; index_tau++) { + pnl->tau[index_tau] = ppt->tau_sampling[index_tau]; + } + } + return _SUCCESS_; +} + +/** + * Get sources for a given wavenumber (and for a given time, type, ic, + * mode...) either directly from precomputed valkues (computed ain + * perturbation module), or by analytic extrapolation + * + * @param pba Input: pointer to background structure + * @param ppt Input: pointer to perturbation structure + * @param pnl Input: pointer to nonlinear structure + * @param index_k Input: index of required k value + * @param index_ic Input: index of required ic value + * @param index_tp Input: index of required tp value + * @param index_tau Input: index of required tau value + * @param sources Input: array containing the original sources + * @param source Output: desired value of source + * @return the error status + */ + +int nonlinear_get_source( + struct background * pba, + struct perturbs * ppt, + struct nonlinear * pnl, + int index_k, + int index_ic, + int index_tp, + int index_tau, + double ** sources, + double * source + ) { + + double k,k_max,k_previous; + double source_max,source_previous; + double scaled_factor; + + /** - use precomputed values */ + if (index_k < pnl->k_size) { + *source = sources[index_ic * ppt->tp_size[pnl->index_md_scalars] + index_tp][index_tau * pnl->k_size + index_k]; + } + /** - extrapolate **/ + else { + + k = pnl->k[index_k]; + + /** + * --> Get last source and k, which are used in (almost) all methods + */ + k_max = pnl->k[pnl->k_size-1]; + source_max = sources[index_ic * ppt->tp_size[pnl->index_md_scalars] + index_tp][index_tau * pnl->k_size + pnl->k_size - 1]; + + /** + * --> Get previous source and k, which are used in best methods + */ + k_previous = pnl->k[pnl->k_size-2]; + source_previous = sources[index_ic * ppt->tp_size[pnl->index_md_scalars] + index_tp][index_tau * pnl->k_size + pnl->k_size - 2]; + + switch(pnl->extrapolation_method){ + /** + * --> Extrapolate by assuming the source to vanish Has terrible + * discontinuity + */ + case extrap_zero: + { + *source=0.0; + break; + } + /** + * --> Extrapolate starting from the maximum value, assuming growth ~ ln(k) + * Has a terrible bend in log slope, discontinuity only in derivative + */ + case extrap_only_max: + { + *source = source_max*(log(k)/log(k_max)); + break; + } + /** + * --> Extrapolate starting from the maximum value, assuming + * growth ~ ln(k) Here we use k in h/Mpc instead of 1/Mpc as it + * is done in the CAMB implementation of HMcode Has a terrible + * bend in log slope, discontinuity only in derivative + */ + case extrap_only_max_units: + { + *source = source_max*(log(k/pba->h)/log(k_max/pba->h)); + break; + } + /** + * --> Extrapolate assuming source ~ ln(a*k) where a is obtained + * from the data at k_0 Mostly continuous derivative, quite good + */ + case extrap_max_scaled: + { + scaled_factor = exp((source_previous*log(k_max)-source_max*log(k_previous))/(source_max-source_previous)); + *source = source_max*(log(scaled_factor*k)/log(scaled_factor*k_max)); + break; + } + /** + * --> Extrapolate assuming source ~ ln(e+a*k) where a is + * estimated like is done in original HMCode + */ + case extrap_hmcode: + { + scaled_factor = 1.8/(13.41*pba->a_eq*pba->H_eq); + *source = source_max*(log(_E_+scaled_factor*k)/log(_E_+scaled_factor*k_max)); + break; + } + /** + * --> If the user has a complicated model and wants to + * interpolate differently, they can define their interpolation + * here and switch to using it instead + */ + case extrap_user_defined: + { + class_stop(pnl->error_message,"Method of source extrapolation 'user_defined' was not yet defined."); + break; + } + } + } + return _SUCCESS_; +} + +/** + * This routine computes all the components of the matter power + * spectrum P(k), given the source functions and the primordial + * spectra, at a given time within the pre-computed table of sources + * (= Fourier transfer functions) of the perturbation module, for a + * given type (total matter _m or baryon+CDM _cb), and for the same + * array of k values as in the pre-computed table. + * + * If the input array of k values pnl->ln_k contains wavemumbers + * larger than those of the pre-computed table, the sources will be + * extrapolated analytically. + * + * On the opther hand, if the primordial spectrum has sharp features + * and needs to be sampled on a finer grid than the sources, this + * function has to be modified to capture the features. + * + * There are two output arrays, because we consider: + * + * - the total matter (_m) or CDM+baryon (_cb) power spectrum + * + * - in the quantitites labelled _ic, the splitting of one of these + * spectra in different modes for different initial conditions. If the + * pointer ln_pk_ic is NULL in input, the function will ignore this + * part; thus, to get the result, one should allocate the array before + * calling the function. Then the convention is the following: + * + * -- the index_ic1_ic2 labels ordered pairs (index_ic1, index_ic2) + * (since the primordial spectrum is symmetric in (index_ic1, + * index_ic2)). + * + * -- for diagonal elements (index_ic1 = index_ic2) this + * arrays contains ln[P(k)] where P(k) is positive by construction. + * + * -- for non-diagonal elements this arrays contains the k-dependent + * cosine of the correlation angle, namely P(k)_(index_ic1, + * index_ic2)/sqrt[P(k)_index_ic1 P(k)_index_ic2]. E.g. for fully + * correlated or anti-correlated initial conditions, this non-diagonal + * element is independent on k, and equal to +1 or -1. + * + * @param pba Input: pointer to background structure + * @param ppt Input: pointer to perturbation structure + * @param ppm Input: pointer to primordial structure + * @param pnl Input: pointer to nonlinear structure + * @param index_pk Input: index of required P(k) type (_m, _cb) + * @param index_tau Input: index of time + * @param k_size Input: wavenumber array size + * @param lnpk Output: log of matter power spectrum for given type/time, for all wavenumbers + * @param lnpk_ic Output: log of matter power spectrum for given type/time, for all wavenumbers and initial conditions + * @return the error status + */ + +int nonlinear_pk_linear( + struct background *pba, + struct perturbs *ppt, + struct primordial *ppm, + struct nonlinear *pnl, + int index_pk, + int index_tau, + int k_size, + double * lnpk, //lnpk[index_k] + double * lnpk_ic //lnpk[index_k * pnl->ic_ic_size + index_ic1_ic2] + ) { + + int index_k; + int index_tp; + int index_ic1,index_ic2,index_ic1_ic1,index_ic1_ic2,index_ic2_ic2; + double * primordial_pk; + double pk; + double * pk_ic; + double source_ic1; + double source_ic2; + double cosine_correlation; + + /** - allocate temporary vector where the primordial spectrum will be stored */ + + class_alloc(primordial_pk,pnl->ic_ic_size*sizeof(double),pnl->error_message); + + class_alloc(pk_ic,pnl->ic_ic_size*sizeof(double),pnl->error_message); + + if ((pnl->has_pk_m == _TRUE_) && (index_pk == pnl->index_pk_m)) { + index_tp = ppt->index_tp_delta_m; + } + else if ((pnl->has_pk_cb == _TRUE_) && (index_pk == pnl->index_pk_cb)) { + index_tp = ppt->index_tp_delta_cb; + } + else { + class_stop(pnl->error_message,"P(k) is set neither to total matter nor to cold dark matter + baryons"); + } + + /** - loop over k values */ + + for (index_k=0; index_k get primordial spectrum */ + class_call(primordial_spectrum_at_k(ppm,pnl->index_md_scalars,logarithmic,pnl->ln_k[index_k],primordial_pk), + ppm->error_message, + pnl->error_message); + + /** --> initialize a local variable for P_m(k) and P_cb(k) to zero */ + pk = 0.; + + /** --> here we recall the relations relevant for the nomalization fo the power spectrum: + For adiabatic modes, the curvature primordial spectrum thnat we just read was: + P_R(k) = 1/(2pi^2) k^3 + Thus the primordial curvature correlator is given by: + = (2pi^2) k^-3 P_R(k) + So the delta_m correlator reads: + P(k) = = (source_m)^2 = (2pi^2) k^-3 (source_m)^2 P_R(k) + + For isocurvature or cross adiabatic-isocurvature parts, + one would just replace one or two 'R' by 'S_i's */ + + /** --> get contributions to P(k) diagonal in the initial conditions */ + for (index_ic1 = 0; index_ic1 < pnl->ic_size; index_ic1++) { + + index_ic1_ic1 = index_symmetric_matrix(index_ic1,index_ic1,pnl->ic_size); + + class_call(nonlinear_get_source(pba, + ppt, + pnl, + index_k, + index_ic1, + index_tp, + index_tau, + ppt->sources[pnl->index_md_scalars], + &source_ic1), + pnl->error_message, + pnl->error_message); + + pk_ic[index_ic1_ic1] = 2.*_PI_*_PI_/exp(3.*pnl->ln_k[index_k]) + *source_ic1*source_ic1 + *exp(primordial_pk[index_ic1_ic1]); + + pk += pk_ic[index_ic1_ic1]; + + if (lnpk_ic != NULL) { + lnpk_ic[index_k * pnl->ic_ic_size + index_ic1_ic1] = log(pk_ic[index_ic1_ic1]); + } + } + + /** --> get contributions to P(k) non-diagonal in the initial conditions */ + for (index_ic1 = 0; index_ic1 < pnl->ic_size; index_ic1++) { + for (index_ic2 = index_ic1+1; index_ic2 < pnl->ic_size; index_ic2++) { + + index_ic1_ic2 = index_symmetric_matrix(index_ic1,index_ic2,pnl->ic_size); + index_ic1_ic1 = index_symmetric_matrix(index_ic1,index_ic1,pnl->ic_size); + index_ic2_ic2 = index_symmetric_matrix(index_ic2,index_ic2,pnl->ic_size); + + if (pnl->is_non_zero[index_ic1_ic2] == _TRUE_) { + + class_call(nonlinear_get_source(pba, + ppt, + pnl, + index_k, + index_ic1, + index_tp, + index_tau, + ppt->sources[pnl->index_md_scalars], + &source_ic1), + pnl->error_message, + pnl->error_message); + + class_call(nonlinear_get_source(pba, + ppt, + pnl, + index_k, + index_ic2, + index_tp, + index_tau, + ppt->sources[pnl->index_md_scalars], + &source_ic2), + pnl->error_message, + pnl->error_message); + + cosine_correlation = primordial_pk[index_ic1_ic2]*SIGN(source_ic1)*SIGN(source_ic2); + + pk_ic[index_ic1_ic2] = cosine_correlation * sqrt(pk_ic[index_ic1_ic1]*pk_ic[index_ic2_ic2]); + + pk += 2.*pk_ic[index_ic1_ic2]; + + if (lnpk_ic != NULL) { + lnpk_ic[index_k * pnl->ic_ic_size + index_ic1_ic2] = cosine_correlation; + } + } + else { + if (lnpk_ic != NULL) { + lnpk_ic[index_k * pnl->ic_ic_size + index_ic1_ic2] = 0.; + } + } + } + } + + lnpk[index_k] = log(pk); + } + + free(primordial_pk); + free(pk_ic); + + return _SUCCESS_; + +} + +/** + * Calculate intermediate quantities for hmcode (sigma, sigma', ...) + * for a given scale R and a given input P(k). + * + * This function has several differences w.r.t. the standard external + * function non_linear_sigma (format of input, of output, integration + * stepsize, management of extrapolation at large k, ...) and is + * overall more precise for sigma(R). + * + * @param pnl Input: pointer to nonlinear structure + * @param R Input: scale at which to compute sigma + * @param lnpk_l Input: array of ln(P(k)) + * @param ddlnpk_l Input: its spline along k + * @param k_size Input: dimension of array lnpk_l, normally pnl->k_size, but inside hmcode it its increased by extrapolation to pnl->k_extra_size + * @param k_per_decade Input: logarithmic step for the integral (recommended: pass ppr->sigma_k_per_decade) + * @param sigma_output Input: quantity to be computed (sigma, sigma', ...) + * @param result Output: result + * @return the error status + */ + +int nonlinear_sigmas( + struct nonlinear * pnl, + double R, + double * lnpk_l, + double * ddlnpk_l, + int k_size, + double k_per_decade, + enum out_sigmas sigma_output, + double * result + ) { + double pk, lnpk; + + double * array_for_sigma; + int index_num; + int index_x; + int index_y; + int index_ddy; + int i=0; + int integrand_size; + int last_index=0; + + double k,W,W_prime,x,t; + + /** - allocate temporary array for an integral over y(x) */ + + class_define_index(index_x, _TRUE_,i,1); // index for x + class_define_index(index_y, _TRUE_,i,1); // index for integrand + class_define_index(index_ddy,_TRUE_,i,1); // index for its second derivative (spline method) + index_num=i; // number of columns in the array + + integrand_size=(int)(log(pnl->k[k_size-1]/pnl->k[0])/log(10.)*k_per_decade)+1; + class_alloc(array_for_sigma, + integrand_size*index_num*sizeof(double), + pnl->error_message); + + /** - fill the array with values of k and of the integrand */ + + for (i=0; ik[0]*pow(10.,i/k_per_decade); + + if (i==0) { + pk = exp(lnpk_l[0]); + } + else { + class_call(array_interpolate_spline( + pnl->ln_k, + k_size, + lnpk_l, + ddlnpk_l, + 1, + log(k), + &last_index, + &lnpk, + 1, + pnl->error_message), + pnl->error_message, + pnl->error_message); + + pk = exp(lnpk); + } + + t = 1./(1.+k); + if (i == (integrand_size-1)) k *= 0.9999999; // to prevent rounding error leading to k being bigger than maximum value + x=k*R; + + switch (sigma_output) { + + case out_sigma: + if (x<0.01) + W = 1.-x*x/10.; + else + W = 3./x/x/x*(sin(x)-x*cos(x)); + array_for_sigma[(integrand_size-1-i)*index_num+index_x] = t; + array_for_sigma[(integrand_size-1-i)*index_num+index_y] = k*k*k*pk*W*W/(t*(1.-t)); + break; + + case out_sigma_prime: + if (x<0.01) { + W = 1.-x*x/10.; + W_prime = -0.2*x; + } + else { + W = 3./x/x/x*(sin(x)-x*cos(x)); + W_prime = 3./x/x*sin(x)-9./x/x/x/x*(sin(x)-x*cos(x)); + } + array_for_sigma[(integrand_size-1-i)*index_num+index_x] = t; + array_for_sigma[(integrand_size-1-i)*index_num+index_y] = k*k*k*pk*2.*k*W*W_prime/(t*(1.-t)); + break; + + case out_sigma_disp: + if (x<0.01) + W = 1.-x*x/10.; + else + W = 3./x/x/x*(sin(x)-x*cos(x)); + array_for_sigma[(integrand_size-1-i)*index_num+index_x] = k; + array_for_sigma[(integrand_size-1-i)*index_num+index_y] = -pk*W*W; + break; + } + } + + /** - spline the integrand */ + + class_call(array_spline(array_for_sigma, + index_num, + integrand_size, + index_x, + index_y, + index_ddy, + _SPLINE_EST_DERIV_, + pnl->error_message), + pnl->error_message, + pnl->error_message); + + /** - integrate */ + + class_call(array_integrate_all_trapzd_or_spline(array_for_sigma, + index_num, + integrand_size, + 0, //integrand_size-1, + index_x, + index_y, + index_ddy, + result, + pnl->error_message), + pnl->error_message, + pnl->error_message); + + /** - preperly normalize the final result */ + + switch (sigma_output) { + + case out_sigma: + *result = sqrt(*result/(2.*_PI_*_PI_)); + break; + + case out_sigma_prime: + *result = *result/(2.*_PI_*_PI_); + break; + + case out_sigma_disp: + *result = sqrt(*result/(2.*_PI_*_PI_*3.)); + break; + } + + /** - free allocated array */ + + free(array_for_sigma); + + return _SUCCESS_; +} + +/** + * This routine computes the variance of density fluctuations in a + * sphere of radius R at redshift z, sigma(R,z) for one given pk type (_m, _cb). + * + * Try to use instead nonlinear_sigmas_at_z(). This function is just + * maintained for compatibility with the deprecated function + * spectra_sigma() + * + * The integral is performed until the maximum value of k_max defined + * in the perturbation module. Here there is not automatic checking + * that k_max is large enough for the result to be well + * converged. E.g. to get an accurate sigma8 at R = 8 Mpc/h, the user + * should pass at least about P_k_max_h/Mpc = 1. + * + * @param pba Input: pointer to background structure + * @param pnl Input: pointer to nonlinear structure + * @param R Input: radius in Mpc + * @param z Input: redshift + * @param index_pk Input: type of pk (_m, _cb) + * @param k_per_decade Input: logarithmic step for the integral (recommended: pass ppr->sigma_k_per_decade) + * @param result Output: result + * @return the error status + */ + +int nonlinear_sigma_at_z( + struct background * pba, + struct nonlinear * pnl, + double R, + double z, + int index_pk, + double k_per_decade, + double * result + ) { + + double * out_pk; + double * ddout_pk; + + /** - allocate temporary array for P(k,z) as a function of k */ + + class_alloc(out_pk, pnl->k_size*sizeof(double), pnl->error_message); + class_alloc(ddout_pk, pnl->k_size*sizeof(double), pnl->error_message); + + /** - get P(k,z) as a function of k, for the right z */ + + class_call(nonlinear_pk_at_z(pba, + pnl, + logarithmic, + pk_linear, + z, + index_pk, + out_pk, + NULL), + pnl->error_message, + pnl->error_message); + + /** - spline it along k */ + + class_call(array_spline_table_columns(pnl->ln_k, + pnl->k_size, + out_pk, + 1, + ddout_pk, + _SPLINE_EST_DERIV_, + pnl->error_message), + pnl->error_message, + pnl->error_message); + + /** - calll the function computing the sigmas */ + + class_call(nonlinear_sigmas(pnl, + R, + out_pk, + ddout_pk, + pnl->k_size, + k_per_decade, + out_sigma, + result), + pnl->error_message, + pnl->error_message); + + /** - free allocated arrays */ + + free(out_pk); + free(ddout_pk); + + return _SUCCESS_; +} + +/** + * Calculation of the nonlinear matter power spectrum with Halofit + * (includes Takahashi 2012 + Bird 2013 revisions). + * + * At high redshift it is possible that the non-linear corrections are + * so small that they can be computed only by going to very large + * wavenumbers. Thius, for some combination of (z, k_max), the + * calculation is not possible. In this case a _FALSE_ will be + * returned in the flag halofit_found_k_max. + * + * @param ppr Input: pointer to precision structure + * @param pba Input: pointer to background structure + * @param ppt Input: pointer to perturbation structure + * @param ppm Input: pointer to primordial structure + * @param pnl Input: pointer to nonlinear structure + * @param index_pk Input: index of component are we looking at (total matter or cdm+baryons?) + * @param tau Input: conformal time at which we want to do the calculation + * @param pk_nl Output: non linear spectrum at the relevant time + * @param lnpk_l Input: array of log(P(k)_linear) + * @param ddlnpk_l Input: array of second derivative of log(P(k)_linear) wrt k, for spline interpolation + * @param k_nl Output: non-linear wavenumber + * @param nl_corr_not_computable_at_this_k Ouput: flag concerning the status of the calculation (_TRUE_ if not possible) + * @return the error status + */ + +int nonlinear_halofit( + struct precision *ppr, + struct background *pba, + struct perturbs *ppt, + struct primordial *ppm, + struct nonlinear *pnl, + int index_pk, + double tau, + double *pk_nl, + double *lnpk_l, + double *ddlnpk_l, + double *k_nl, + short * nl_corr_not_computable_at_this_k + ) { + + double Omega_m,Omega_v,fnu,w0, dw_over_da_fld, integral_fld; + + /** Determine non linear ratios (from pk) **/ + + int index_k; + double pk_lin,pk_quasi,pk_halo,rk; + double sigma,rknl,rneff,rncur,d1,d2; + double diff,xlogr1,xlogr2,rmid; + + double gam,a,b,c,xmu,xnu,alpha,beta,f1,f2,f3; + double pk_linaa; + double y; + double f1a,f2a,f3a,f1b,f2b,f3b,frac; + + double * pvecback; + + int last_index=0; + int counter; + double sum1,sum2,sum3; + double anorm; + + double *integrand_array; + int integrand_size; + int index_ia_k; + int index_ia_pk; + int index_ia_sum; + int index_ia_ddsum; + /* + int index_ia_sum2; + int index_ia_ddsum2; + int index_ia_sum3; + int index_ia_ddsum3; + */ + int ia_size; + int index_ia; + + double k_integrand; + double lnpk_integrand; + + double R; + + double * w_and_Omega; + + class_alloc(pvecback,pba->bg_size*sizeof(double),pnl->error_message); + + if ((pnl->has_pk_m == _TRUE_) && (index_pk == pnl->index_pk_m)) { + fnu = pba->Omega0_ncdm_tot/pba->Omega0_m; + } + else if ((pnl->has_pk_cb == _TRUE_) && (index_pk == pnl->index_pk_cb)) { + fnu = 0.; + } + else { + class_stop(pnl->error_message,"P(k) is set neither to total matter nor to cold dark matter + baryons"); + } + + if (pnl->has_pk_eq == _FALSE_) { + + /* default method to compute w0 = w_fld today, Omega_m(tau) and Omega_v=Omega_DE(tau), + all required by HALFIT fitting formulas */ + + class_call(background_w_fld(pba,pba->a_today,&w0,&dw_over_da_fld,&integral_fld), pba->error_message, pnl->error_message); + + class_call(background_at_tau(pba,tau,pba->long_info,pba->inter_normal,&last_index,pvecback), + pba->error_message, + pnl->error_message); + + Omega_m = pvecback[pba->index_bg_Omega_m]; + Omega_v = 1.-pvecback[pba->index_bg_Omega_m]-pvecback[pba->index_bg_Omega_r]; + + } + else { + + /* alternative method called Pk_equal, described in 0810.0190 and + 1601.07230, extending the range of validity of + HALOFIT from constant w to (w0,wa) models. In that + case, some effective values of w0(tau_i) and + Omega_m(tau_i) have been pre-computed in the + input module, and we just ned to interpolate + within tabulated arrays, to get them at the + current tau value. */ + + class_alloc(w_and_Omega,pnl->pk_eq_size*sizeof(double),pnl->error_message); + + class_call(array_interpolate_spline( + pnl->pk_eq_tau, + pnl->pk_eq_tau_size, + pnl->pk_eq_w_and_Omega, + pnl->pk_eq_ddw_and_ddOmega, + pnl->pk_eq_size, + tau, + &last_index, + w_and_Omega, + pnl->pk_eq_size, + pnl->error_message), + pnl->error_message, + pnl->error_message); + + w0 = w_and_Omega[pnl->index_pk_eq_w]; + Omega_m = w_and_Omega[pnl->index_pk_eq_Omega_m]; + Omega_v = 1.-Omega_m; + + free(w_and_Omega); + } + + anorm = 1./(2*pow(_PI_,2)); + + /* Until the 17.02.2015 the values of k used for integrating sigma(R) quantities needed by Halofit where the same as in the perturbation module. + Since then, we sample these integrals on more values, in order to get more precise integrals (thanks Matteo Zennaro for noticing the need for this). + + We create a temporary integrand_array which columns will be: + - k in 1/Mpc + - just linear P(k) in Mpc**3 + - 1/(2(pi**2)) P(k) k**2 exp(-(kR)**2) or 1/(2(pi**2)) P(k) k**2 2 (kR) exp(-(kR)**2) or 1/(2(pi**2)) P(k) k**2 4 (kR)(1-kR) exp(-(kR)**2) + - second derivative of previous line with spline + */ + + index_ia=0; + class_define_index(index_ia_k, _TRUE_,index_ia,1); + class_define_index(index_ia_pk, _TRUE_,index_ia,1); + class_define_index(index_ia_sum, _TRUE_,index_ia,1); + class_define_index(index_ia_ddsum, _TRUE_,index_ia,1); + ia_size = index_ia; + + integrand_size=(int)(log(pnl->k[pnl->k_size-1]/pnl->k[0])/log(10.)*ppr->halofit_k_per_decade)+1; + + class_alloc(integrand_array,integrand_size*ia_size*sizeof(double),pnl->error_message); + + + /* we fill integrand_array with values of k and P(k) using interpolation */ + + last_index=0; + + for (index_k=0; index_k < integrand_size; index_k++) { + + k_integrand=pnl->k[0]*pow(10.,index_k/ppr->halofit_k_per_decade); + + if (index_k ==0 ) { + lnpk_integrand = lnpk_l[0]; + } + else { + + class_call(array_interpolate_spline( + pnl->ln_k, + pnl->k_size, + lnpk_l, + ddlnpk_l, + 1, + log(k_integrand), + &last_index, + &lnpk_integrand, + 1, + pnl->error_message), + pnl->error_message, + pnl->error_message); + } + + integrand_array[index_k*ia_size + index_ia_k] = k_integrand; + integrand_array[index_k*ia_size + index_ia_pk] = exp(lnpk_integrand); + + } + + class_call(background_at_tau(pba,tau,pba->long_info,pba->inter_normal,&last_index,pvecback), + pba->error_message, + pnl->error_message); + + Omega_m = pvecback[pba->index_bg_Omega_m]; + Omega_v = 1.-pvecback[pba->index_bg_Omega_m]-pvecback[pba->index_bg_Omega_r]; + + // for debugging: + //printf("Call Halofit at z=%e\n",pba->a_today/pvecback[pba->index_bg_a]-1.); + + /* minimum value of R such that the integral giving sigma_R is + converged. The parameter halofit_sigma_precision should be + understood as follows: we trust our calculation of sigma(R) as + long as the integral reaches a value k_max such that the factor + exp(-(Rk_max)**2) is already as low as halofit_sigma_precisio, + shoing that the integreal is converged. In practise this + condition is tested only for R_max, the highest value of R in our + bisection algorithm. Hence a smaller value of + halofit_sigma_precision will lead to a more precise halofit + result at the *highest* redshift at which halofit can make + computations, at the expense of requiring a larger k_max; but + this parameter is not relevant for the precision on P_nl(k,z) at + other redshifts, so there is normally no need to change i + */ + + R=sqrt(-log(ppr->halofit_sigma_precision))/integrand_array[(integrand_size-1)*ia_size + index_ia_k]; + + class_call(nonlinear_halofit_integrate( + pnl, + integrand_array, + integrand_size, + ia_size, + index_ia_k, + index_ia_pk, + index_ia_sum, + index_ia_ddsum, + R, + halofit_integral_one, + &sum1 + ), + pnl->error_message, + pnl->error_message); + + sigma = sqrt(sum1); + + /* the following error should not stop the code: it will arrive + inevitably at some large redshift, and then the code should not + stop, but just give up computing P_NL(k,z). This is why we have a + special error handling here (using class_test_except and free() + commands to avoid memory leaks, and calling this whole function + not through a class_call) */ + + /* + class_test_except(sigma < 1., + pnl->error_message, + free(pvecback);free(integrand_array), + "Your k_max=%g 1/Mpc is too small for Halofit to find the non-linearity scale z_nl at z=%g. Increase input parameter P_k_max_h/Mpc or P_k_max_1/Mpc", + pnl->k[pnl->k_size-1], + pba->a_today/pvecback[pba->index_bg_a]-1.); + */ + + if (sigma < 1.) { + * nl_corr_not_computable_at_this_k = _TRUE_; + free(pvecback); + free(integrand_array); + return _SUCCESS_; + } + else { + * nl_corr_not_computable_at_this_k = _FALSE_; + } + + xlogr1 = log(R)/log(10.); + + /* maximum value of R in the bisection algorithm leading to the + determination of R_nl. For this value we can make a + conservaitive guess: 1/halofit_min_k_nonlinear, where + halofit_min_k_nonlinear is the minimum value of k at which we ask + halofit to give us an estimate of P_nl(k,z). By assumption we + treat all smaller k's as linear, so we know that + sigma(1/halofit_min_k_nonlinear) must be <<1 (and if it is not + the test below will alert us) */ + + R=1./ppr->halofit_min_k_nonlinear; + + /* corresponding value of sigma_R */ + class_call(nonlinear_halofit_integrate( + pnl, + integrand_array, + integrand_size, + ia_size, + index_ia_k, + index_ia_pk, + index_ia_sum, + index_ia_ddsum, + R, + halofit_integral_one, + &sum1 + ), + pnl->error_message, + pnl->error_message); + + sigma = sqrt(sum1); + + class_test(sigma > 1., + pnl->error_message, + "Your input value for the precision parameter halofit_min_k_nonlinear=%e is too large, such that sigma(R=1/halofit_min_k_nonlinear)=% > 1. For self-consistency, it should have been <1. Decrease halofit_min_k_nonlinear", + ppr->halofit_min_k_nonlinear,sigma); + + xlogr2 = log(R)/log(10.); + + counter = 0; + do { + rmid = pow(10,(xlogr2+xlogr1)/2.0); + counter ++; + + class_call(nonlinear_halofit_integrate( + pnl, + integrand_array, + integrand_size, + ia_size, + index_ia_k, + index_ia_pk, + index_ia_sum, + index_ia_ddsum, + rmid, + halofit_integral_one, + &sum1 + ), + pnl->error_message, + pnl->error_message); + + sigma = sqrt(sum1); + + diff = sigma - 1.0; + + if (diff > ppr->halofit_tol_sigma){ + xlogr1=log10(rmid); + } + else if (diff < -ppr->halofit_tol_sigma) { + xlogr2 = log10(rmid); + } + + /* The first version of this test woukld let the code continue: */ + /* + class_test_except(counter > _MAX_IT_, + pnl->error_message, + free(pvecback);free(integrand_array), + "could not converge within maximum allowed number of iterations"); + */ + /* ... but in this situation it sounds better to make it stop and return an error! */ + class_test(counter > _MAX_IT_, + pnl->error_message, + "could not converge within maximum allowed number of iterations"); + + } while (fabs(diff) > ppr->halofit_tol_sigma); + + /* evaluate all the other integrals at R=rmid */ + + class_call(nonlinear_halofit_integrate( + pnl, + integrand_array, + integrand_size, + ia_size, + index_ia_k, + index_ia_pk, + index_ia_sum, + index_ia_ddsum, + rmid, + halofit_integral_two, + &sum2 + ), + pnl->error_message, + pnl->error_message); + + class_call(nonlinear_halofit_integrate( + pnl, + integrand_array, + integrand_size, + ia_size, + index_ia_k, + index_ia_pk, + index_ia_sum, + index_ia_ddsum, + rmid, + halofit_integral_three, + &sum3 + ), + pnl->error_message, + pnl->error_message); + + sigma = sqrt(sum1); + d1 = -sum2/sum1; + d2 = -sum2*sum2/sum1/sum1 - sum3/sum1; + + rknl = 1./rmid; + rneff = -3.-d1; + rncur = -d2; + + *k_nl = rknl; + + for (index_k = 0; index_k < pnl->k_size; index_k++){ + + rk = pnl->k[index_k]; + + if (rk > ppr->halofit_min_k_nonlinear) { + + pk_lin = exp(lnpk_l[index_k])*pow(pnl->k[index_k],3)*anorm; + + /* in original halofit, this is the beginning of the function halofit() */ + + /*SPB11: Standard halofit underestimates the power on the smallest + * scales by a factor of two. Add an extra correction from the + * simulations in Bird, Viel,Haehnelt 2011 which partially accounts for + * this.*/ + /*SPB14: This version of halofit is an updated version of the fit to the massive neutrinos + * based on the results of Takahashi 2012, (arXiv:1208.2701). + */ + gam=0.1971-0.0843*rneff+0.8460*rncur; + a=1.5222+2.8553*rneff+2.3706*rneff*rneff+0.9903*rneff*rneff*rneff+ 0.2250*rneff*rneff*rneff*rneff-0.6038*rncur+0.1749*Omega_v*(1.+w0); + a=pow(10,a); + b=pow(10, (-0.5642+0.5864*rneff+0.5716*rneff*rneff-1.5474*rncur+0.2279*Omega_v*(1.+w0))); + c=pow(10, 0.3698+2.0404*rneff+0.8161*rneff*rneff+0.5869*rncur); + xmu=0.; + xnu=pow(10,5.2105+3.6902*rneff); + alpha=fabs(6.0835+1.3373*rneff-0.1959*rneff*rneff-5.5274*rncur); + beta=2.0379-0.7354*rneff+0.3157*pow(rneff,2)+1.2490*pow(rneff,3)+0.3980*pow(rneff,4)-0.1682*rncur + fnu*(1.081 + 0.395*pow(rneff,2)); + + if(fabs(1-Omega_m)>0.01) { /*then omega evolution */ + f1a=pow(Omega_m,(-0.0732)); + f2a=pow(Omega_m,(-0.1423)); + f3a=pow(Omega_m,(0.0725)); + f1b=pow(Omega_m,(-0.0307)); + f2b=pow(Omega_m,(-0.0585)); + f3b=pow(Omega_m,(0.0743)); + frac=Omega_v/(1.-Omega_m); + f1=frac*f1b + (1-frac)*f1a; + f2=frac*f2b + (1-frac)*f2a; + f3=frac*f3b + (1-frac)*f3a; + } + else { + f1=1.; + f2=1.; + f3=1.; + } + + y=(rk/rknl); + pk_halo = a*pow(y,f1*3.)/(1.+b*pow(y,f2)+pow(f3*c*y,3.-gam)); + pk_halo=pk_halo/(1+xmu*pow(y,-1)+xnu*pow(y,-2))*(1+fnu*(0.977-18.015*(pba->Omega0_m-0.3))); + // rk is in 1/Mpc, 47.48and 1.5 in Mpc**-2, so we need an h**2 here (Credits Antonio J. Cuesta) + pk_linaa=pk_lin*(1+fnu*47.48*pow(rk/pba->h,2)/(1+1.5*pow(rk/pba->h,2))); + pk_quasi=pk_lin*pow((1+pk_linaa),beta)/(1+pk_linaa*alpha)*exp(-y/4.0-pow(y,2)/8.0); + + pk_nl[index_k] = (pk_halo+pk_quasi)/pow(pnl->k[index_k],3)/anorm; + + /* in original halofit, this is the end of the function halofit() */ + } + else { + pk_nl[index_k] = exp(lnpk_l[index_k]); + } + } + + free(pvecback); + free(integrand_array); + return _SUCCESS_; +} + +/** + * Internal routione of Halofit. In original Halofit, this is + * equivalent to the function wint(). It performs convolutions of the + * linear spectrum with two window functions. + * + * @param pnl Input: pointer to non linear structure + * @param integrand_array Input: array with k, P_L(k) values + * @param integrand_size Input: one dimension of that array + * @param ia_size Input: other dimension of that array + * @param index_ia_k Input: index for k + * @param index_ia_pk Input: index for pk + * @param index_ia_sum Input: index for the result + * @param index_ia_ddsum Input: index for its spline + * @param R Input: radius + * @param type Input: which window function to use + * @param sum Output: result of the integral + * @return the error status + */ + +int nonlinear_halofit_integrate( + struct nonlinear *pnl, + double * integrand_array, + int integrand_size, + int ia_size, + int index_ia_k, + int index_ia_pk, + int index_ia_sum, + int index_ia_ddsum, + double R, + enum halofit_integral_type type, + double * sum + ) { + + double k,pk,x2,integrand; + int index_k; + double anorm = 1./(2*pow(_PI_,2)); + + for (index_k=0; index_k < integrand_size; index_k++) { + k = integrand_array[index_k*ia_size + index_ia_k]; + pk = integrand_array[index_k*ia_size + index_ia_pk]; + x2 = k*k*R*R; + + integrand = pk*k*k*anorm*exp(-x2); + if (type == halofit_integral_two) integrand *= 2.*x2; + if (type == halofit_integral_three) integrand *= 4.*x2*(1.-x2); + + integrand_array[index_k*ia_size + index_ia_sum] = integrand; + } + + /* fill in second derivatives */ + class_call(array_spline(integrand_array, + ia_size, + integrand_size, + index_ia_k, + index_ia_sum, + index_ia_ddsum, + _SPLINE_NATURAL_, + pnl->error_message), + pnl->error_message, + pnl->error_message); + + /* integrate */ + class_call(array_integrate_all_spline(integrand_array, + ia_size, + integrand_size, + index_ia_k, + index_ia_sum, + index_ia_ddsum, + sum, + pnl->error_message), + pnl->error_message, + pnl->error_message); + + return _SUCCESS_; +} + +/** + * Computes the nonlinear correction on the linear power spectrum via + * the method presented in Mead et al. 1505.07833 + * + * @param ppr Input: pointer to precision structure + * @param pba Input: pointer to background structure + * @param ppt Input: pointer to perturbation structure + * @param ppm Input: pointer to primordial structure + * @param pnl Input: pointer to nonlinear structure + * @param index_pk Input: index of the pk type, either index_m or index_cb + * @param index_tau Input: index of tau, at which to compute the nl correction + * @param tau Input: tau, at which to compute the nl correction + * @param pk_nl Output:nonlinear power spectrum + * @param lnpk_l Input: logarithm of the linear power spectrum for both index_m and index_cb + * @param ddlnpk_l Input: spline of the logarithm of the linear power spectrum for both index_m and index_cb + * @param nl_corr_not_computable_at_this_k Ouput: was the computation doable? + * @param k_nl Output: nonlinear scale for index_m and index_cb + * @param pnw Input/Output: pointer to nonlinear workspace + * @return the error status + */ + +int nonlinear_hmcode( + struct precision *ppr, + struct background *pba, + struct perturbs *ppt, + struct primordial *ppm, + struct nonlinear *pnl, + int index_pk, + int index_tau, + double tau, + double *pk_nl, + double **lnpk_l, + double **ddlnpk_l, + double *k_nl, + short * nl_corr_not_computable_at_this_k, + struct nonlinear_workspace * pnw + ) { + + /* integers */ + int index_mass, i, ng, nsig; + int index_k, index_ncol; + int last_index=0; + int index_pk_cb; + int counter, index_nl; + + int index_nu, index_cut; + int index_y; + int index_ddy; + + /* Background parameters */ + double Omega_m,fnu,Omega0_m; + double z_at_tau; + double rho_crit_today_in_msun_mpc3; + double growth; + double anorm; + + /* temporary numbers */ + double m, r, nu, sig, sigf; + double diff, r1, r2; + + /* HMcode parameters */ + double mmin, mmax, nu_min; + + double sigma_disp, sigma_disp100, sigma8; + double delta_c, Delta_v; + double fraction; + + double sigma_nl, nu_nl, r_nl; + double sigma_prime; + double dlnsigdlnR; + double n_eff; + double alpha; + + double z_form, g_form; + + double eta; + double gst, window_nfw; + double nu_cut; + double fac, k_star, fdamp; + double pk_lin, pk_2h, pk_1h; + + /* data fields */ + double * pvecback; + double * conc; + double * mass; + double * sigma_r; + double * sigmaf_r; + double * r_virial; + double * r_real; + double * nu_arr; + + double * p1h_integrand; + + + /** include precision parameters that control the number of entries in the growth and sigma tables */ + ng = ppr->n_hmcode_tables; + nsig = ppr->n_hmcode_tables; + + /** Compute background quantitites today */ + + Omega0_m = pba->Omega0_m; + fnu = pba->Omega0_ncdm_tot/Omega0_m; + + /** If index_pk_cb, choose Omega0_cb as the matter density parameter. + * If index_pk_m, choose Omega0_cbn as the matter density parameter. */ + if (index_pk==pnl->index_pk_cb){ + Omega0_m = Omega0_m - pba->Omega0_ncdm_tot; + } + + anorm = 1./(2*pow(_PI_,2)); + + /** Call all the relevant background parameters at this tau */ + class_alloc(pvecback,pba->bg_size*sizeof(double),pnl->error_message); + + class_call(background_at_tau(pba,tau,pba->long_info,pba->inter_normal,&last_index,pvecback), + pba->error_message, + pnl->error_message); + + Omega_m = pvecback[pba->index_bg_Omega_m];//TBC (i.e. check if for P_cb here we should use Omega_cb) here the total time varying Omega_m is used for delta_c and for Delta_v according to the Mead fit of the Massara simulations. + + growth = pvecback[pba->index_bg_D]; + + z_at_tau = 1./pvecback[pba->index_bg_a]-1.; + + /* The number below is the critical density today, rho_c = 3 * H0^2 / 8*pi*G, in units of M_sun over Mpc^3 */ + rho_crit_today_in_msun_mpc3 = 3.*pow(1.e5*pba->h, 2)/8./_PI_/_G_*_Mpc_over_m_/_M_SUN_; + + free(pvecback); + + /** Test whether pk_cb has to be taken into account (only if we have massive neutrinos)*/ + if (pba->has_ncdm==_TRUE_){ + index_pk_cb = pnl->index_pk_cb; + } + else { + index_pk_cb = index_pk; + } + + + /** Get sigma(R=8 Mpc/h), sigma_disp(R=0), sigma_disp(R=100 Mpc/h) and write them into pnl structure */ + + class_call(nonlinear_sigmas(pnl, + 8./pba->h, + lnpk_l[index_pk],ddlnpk_l[index_pk], + pnl->k_size_extra, + ppr->sigma_k_per_decade, + out_sigma, + &sigma8), + pnl->error_message, + pnl->error_message); + + class_call(nonlinear_sigmas(pnl, + 0., + lnpk_l[index_pk],ddlnpk_l[index_pk], + pnl->k_size_extra, + ppr->sigma_k_per_decade, + out_sigma_disp, + &sigma_disp), + pnl->error_message, + pnl->error_message); + + class_call(nonlinear_sigmas(pnl, + 100./pba->h, + lnpk_l[index_pk],ddlnpk_l[index_pk], + pnl->k_size_extra, + ppr->sigma_k_per_decade, + out_sigma_disp, + &sigma_disp100), + pnl->error_message, + pnl->error_message); + + pnw->sigma_8[index_pk][index_tau] = sigma8; + pnw->sigma_disp[index_pk][index_tau] = sigma_disp; + pnw->sigma_disp_100[index_pk][index_tau] = sigma_disp100; + + /** Initialisation steps for the 1-Halo Power Integral */ + mmin=ppr->mmin_for_p1h_integral/pba->h; //Minimum mass for integration; (unit conversion from m[Msun/h] to m[Msun] ) + mmax=ppr->mmax_for_p1h_integral/pba->h; //Maximum mass for integration; + + class_alloc(mass,ppr->nsteps_for_p1h_integral*sizeof(double),pnl->error_message); + class_alloc(r_real,ppr->nsteps_for_p1h_integral*sizeof(double),pnl->error_message); + class_alloc(r_virial,ppr->nsteps_for_p1h_integral*sizeof(double),pnl->error_message); + class_alloc(sigma_r,ppr->nsteps_for_p1h_integral*sizeof(double),pnl->error_message); + class_alloc(sigmaf_r,ppr->nsteps_for_p1h_integral*sizeof(double),pnl->error_message); + class_alloc(nu_arr,ppr->nsteps_for_p1h_integral*sizeof(double),pnl->error_message); + + // Linear theory density perturbation threshold for spherical collapse + delta_c = 1.59+0.0314*log(sigma8); //Mead et al. (2015; arXiv 1505.07833) + delta_c = delta_c*(1.+0.0123*log10(Omega_m)); //Nakamura & Suto (1997) fitting formula for LCDM models (as in Mead 2016) + delta_c = delta_c*(1.+0.262*fnu); //Mead et al. (2016; arXiv 1602.02154) neutrino addition + + // virialized overdensity + Delta_v=418.*pow(Omega_m, -0.352); //Mead et al. (2015; arXiv 1505.07833) + Delta_v=Delta_v*(1.+0.916*fnu); //Mead et al. (2016; arXiv 1602.02154) neutrino addition + + // mass or radius fraction respectively + fraction = pow(0.01, 1./3.); + + /* Fill the arrays needed for the P1H Integral: mass, r_real, r_virial, nu_arr, sigma_r, sigmaf_r + * The P1H Integral is an integral over nu=delta_c/sigma(M), where M is connected to R via R=(3M)/(4*pi*rho_m). + * The Integrand is M*Window^2{nu(M)*k, Rv(M), c(M)}*f(nu) with the window being the fouriertransformed + * NFW profile, Rv = R/Delta_v^(1/3) and Sheth-Thormen halo mass function f. + * The halo concentration-mass-relation c(M) will be found later. */ + + for (index_mass=0;index_massnsteps_for_p1h_integral;index_mass++){ + + m = exp(log(mmin)+log(mmax/mmin)*(index_mass)/(ppr->nsteps_for_p1h_integral-1)); + r = pow((3.*m/(4.*_PI_*rho_crit_today_in_msun_mpc3*Omega0_m)), (1./3.)); + mass[index_mass] = m; + r_real[index_mass] = r; + r_virial[index_mass] = r_real[index_mass]/pow(Delta_v, 1./3.); + + class_call(array_interpolate_spline(pnw->rtab, + nsig, + pnw->stab, + pnw->ddstab, + 1, + r, + &last_index, + &sig, + 1, + pnl->error_message), + pnl->error_message, pnl->error_message); + + class_call(array_interpolate_spline(pnw->rtab, + nsig, + pnw->stab, + pnw->ddstab, + 1, + r*fraction, + &last_index, + &sigf, + 1, + pnl->error_message), + pnl->error_message, pnl->error_message); + + nu=delta_c/sig; + sigma_r[index_mass] = sig; + sigmaf_r[index_mass] = sigf; + nu_arr[index_mass] = nu; + } + + /** find nonlinear scales k_nl and r_nl and the effective spectral index n_eff */ + nu_nl = 1.; + nu_min = nu_arr[0]; + + /* stop calculating the nonlinear correction if the nonlinear scale is not reached in the table: */ + if (nu_min > nu_nl) { + if (pnl->nonlinear_verbose>0) fprintf(stdout, " -> [WARNING:] the minimum mass in the mass-table is too large to find the nonlinear scale at this redshift.\n Decrease mmin_for_p1h_integral\n"); + * nl_corr_not_computable_at_this_k = _TRUE_; + free(mass); + free(r_real); + free(r_virial); + free(sigma_r); + free(sigmaf_r); + free(nu_arr); + return _SUCCESS_; + } + + /* make a first guess for the nonlinear scale */ + class_call(array_interpolate_two_arrays_one_column( + nu_arr, + r_real, + 1, + 0, + ppr->nsteps_for_p1h_integral, + nu_nl, + &r_nl, + pnl->error_message), + pnl->error_message, pnl->error_message); + + class_call(array_search_bisect(ppr->nsteps_for_p1h_integral,nu_arr,nu_nl,&index_nl,pnl->error_message), pnl->error_message, pnl->error_message); + + r1 = r_real[index_nl-1]; + r2 = r_real[index_nl+2]; + + /* // for debugging: (if it happens that r_nl is not between r1 and r2, which should never be the case) + fprintf(stdout, "%e %e %e %e\n", r1, nu_arr[index_nl-1], r2, nu_arr[index_nl+2]); + */ + + /* do bisectional iteration between r1 and r2 to find the precise value of r_nl */ + counter = 0; + do { + r_nl = (r1+r2)/2.; + counter ++; + + class_call(nonlinear_sigmas(pnl, + r_nl, + lnpk_l[index_pk_cb],ddlnpk_l[index_pk_cb], + pnl->k_size_extra, + ppr->sigma_k_per_decade, + out_sigma, + &sigma_nl), + pnl->error_message, pnl->error_message); + + diff = sigma_nl - delta_c; + + if (diff > ppr->hmcode_tol_sigma){ + r1=r_nl; + } + else if (diff < -ppr->hmcode_tol_sigma) { + r2 = r_nl; + } + + class_test(counter > _MAX_IT_, + pnl->error_message, + "could not converge within maximum allowed number of iterations"); + + } while (fabs(diff) > ppr->hmcode_tol_sigma); + + if (pnl->nonlinear_verbose>5){ + fprintf(stdout, "number of iterations for r_nl at z = %e: %d\n", z_at_tau, counter); + } + *k_nl = 1./r_nl; + + if (*k_nl > pnl->k[pnl->k_size-1]) { + * nl_corr_not_computable_at_this_k = _TRUE_; + free(mass); + free(r_real); + free(r_virial); + free(sigma_r); + free(sigmaf_r); + free(nu_arr); + return _SUCCESS_; + } + else { + * nl_corr_not_computable_at_this_k = _FALSE_; + } + + /* call sigma_prime function at r_nl to find the effective spectral index n_eff */ + + class_call(nonlinear_sigmas(pnl, + r_nl, + lnpk_l[index_pk_cb],ddlnpk_l[index_pk_cb], + pnl->k_size_extra, + ppr->sigma_k_per_decade, + out_sigma_prime, + &sigma_prime), + pnl->error_message, + pnl->error_message); + + dlnsigdlnR = r_nl*pow(sigma_nl, -2)*sigma_prime; + n_eff = -3.- dlnsigdlnR; + alpha = 3.24*pow(1.85, n_eff); + + pnw->sigma_prime[index_pk][index_tau] = sigma_prime; + + /** Calculate halo concentration-mass relation conc(mass) (Bullock et al. 2001) */ + class_alloc(conc,ppr->nsteps_for_p1h_integral*sizeof(double),pnl->error_message); + + for (index_mass=0;index_massnsteps_for_p1h_integral;index_mass++){ + //find growth rate at formation + g_form = delta_c*growth/sigmaf_r[index_mass]; + if (g_form > 1.) g_form = 1.; + + // + class_call(array_interpolate_two_arrays_one_column( + pnw->growtable, + pnw->ztable, + 1, + 0, + ng, + g_form, + &z_form, + pnl->error_message), + pnl->error_message, pnl->error_message); + if (z_form < z_at_tau){ + conc[index_mass] = pnl->c_min; + } else { + conc[index_mass] = pnl->c_min*(1.+z_form)/(1.+z_at_tau)*pnw->dark_energy_correction; + } + } + + + /** Compute the nonlinear correction */ + eta = pnl->eta_0 - 0.3*sigma8; // halo bloating parameter + k_star=0.584/sigma_disp; // Damping wavenumber of the 1-halo term at very large scales; + fdamp = 0.0095*pow(sigma_disp100*pba->h, 1.37); // Damping factor for 2-halo term + if (fdamp<1.e-3) fdamp=1.e-3; + if (fdamp>0.99) fdamp=0.99; + + /* the 1h integral contains the halo mass function proportional to exp(-nu^2). + * To save time, the integration loop cuts, when nu exceeds a large value, + * where the integrand is 0 anyhow. This cut index is found here. */ + nu_cut = 10.; + if (nu_cut < nu_arr[ppr->nsteps_for_p1h_integral-1]){ + class_call(array_search_bisect(ppr->nsteps_for_p1h_integral,nu_arr,nu_cut,&index_cut,pnl->error_message), pnl->error_message, pnl->error_message); + } + else { + index_cut = ppr->nsteps_for_p1h_integral; + } + + i=0; + index_nu=i; + i++; + index_y=i; + i++; + index_ddy=i; + i++; + index_ncol=i; + + for (index_k = 0; index_k < pnl->k_size; index_k++){ + + class_alloc(p1h_integrand,index_cut*index_ncol*sizeof(double),pnl->error_message); + + pk_lin = exp(lnpk_l[index_pk][index_k])*pow(pnl->k[index_k],3)*anorm; //convert P_k to Delta_k^2 + + for (index_mass=0; index_massk[index_k], + r_virial[index_mass], + conc[index_mass], + &window_nfw), + pnl->error_message, pnl->error_message); + //get the value of the halo mass function + class_call(nonlinear_hmcode_halomassfunction( + nu_arr[index_mass], + &gst), + pnl->error_message, pnl->error_message); + + p1h_integrand[index_mass*index_ncol+index_nu] = nu_arr[index_mass]; + + p1h_integrand[index_mass*index_ncol+index_y] = mass[index_mass]*gst*pow(window_nfw, 2.); + //if ((tau==pba->conformal_age) && (index_k == 0)) { + //fprintf(stdout, "%d %e %e\n", index_cut, p1h_integrand[index_mass*index_ncol+index_nu], p1h_integrand[index_mass*index_ncol+index_y]); + //} + } + class_call(array_spline(p1h_integrand, + index_ncol, + index_cut, + index_nu, + index_y, + index_ddy, + _SPLINE_EST_DERIV_, + pnl->error_message), + pnl->error_message, + pnl->error_message); + + class_call(array_integrate_all_trapzd_or_spline( + p1h_integrand, + index_ncol, + index_cut, + index_cut-1, //0 or n-1 + index_nu, + index_y, + index_ddy, + &pk_1h, + pnl->error_message), + pnl->error_message, + pnl->error_message); + + + if (pow(pnl->k[index_k]/k_star, 2)>7.){ + fac = 0.; //prevents problems if (k/k*)^2 is large + } + else{ + fac=exp(-pow((pnl->k[index_k]/k_star), 2.)); + } + + pk_1h = pk_1h*anorm*pow(pnl->k[index_k],3)*(1.-fac)/(rho_crit_today_in_msun_mpc3*Omega0_m); // dimensionless power + + if (fdamp==0){ + pk_2h=pk_lin; + }else{ + pk_2h=pk_lin*(1.-fdamp*pow(tanh(pnl->k[index_k]*sigma_disp/sqrt(fdamp)), 2.)); //dimensionless power + } + if (pk_2h<0.) pk_2h=0.; + pk_nl[index_k] = pow((pow(pk_1h, alpha) + pow(pk_2h, alpha)), (1./alpha))/pow(pnl->k[index_k],3)/anorm; //converted back to P_k + + free(p1h_integrand); + } + + // print parameter values + if ((pnl->nonlinear_verbose > 1 && tau==pba->conformal_age) || pnl->nonlinear_verbose > 3){ + fprintf(stdout, " -> Parameters at redshift z = %e:\n", z_at_tau); + fprintf(stdout, " fnu: %e\n", fnu); + fprintf(stdout, " sigd [Mpc/h]: %e\n", sigma_disp*pba->h); + fprintf(stdout, " sigd100 [Mpc/h]: %e\n", sigma_disp100*pba->h); + fprintf(stdout, " sigma8: %e\n", sigma8); + fprintf(stdout, " nu min: %e\n", nu_arr[0]); + fprintf(stdout, " nu max: %e\n", nu_arr[ppr->nsteps_for_p1h_integral-1]); + fprintf(stdout, " r_v min [Mpc/h]: %e\n", r_virial[0]*pba->h); + fprintf(stdout, " r_v max [Mpc/h]: %e\n", r_virial[ppr->nsteps_for_p1h_integral-1]*pba->h); + fprintf(stdout, " r_nl [Mpc/h]: %e\n", r_nl*pba->h); + fprintf(stdout, " k_nl [h/Mpc]: %e\n", *k_nl/pba->h); + fprintf(stdout, " sigma_nl: %e\n", sigma_nl/delta_c); + fprintf(stdout, " neff: %e\n", n_eff); + fprintf(stdout, " c min: %e\n", conc[ppr->nsteps_for_p1h_integral-1]); + fprintf(stdout, " c max: %e\n", conc[0]); + fprintf(stdout, " Dv: %e\n", Delta_v); + fprintf(stdout, " dc: %e\n", delta_c); + fprintf(stdout, " eta: %e\n", eta); + fprintf(stdout, " k*: %e\n", k_star/pba->h); + fprintf(stdout, " Abary: %e\n", pnl->c_min); + fprintf(stdout, " fdamp: %e\n", fdamp); + fprintf(stdout, " alpha: %e\n", alpha); + fprintf(stdout, " ksize, kmin, kmax: %d, %e, %e\n", pnl->k_size, pnl->k[0]/pba->h, pnl->k[pnl->k_size-1]/pba->h); + + } + + free(conc); + free(mass); + free(r_real); + free(r_virial); + free(sigma_r); + free(sigmaf_r); + free(nu_arr); + + return _SUCCESS_; +} + +/** + * allocate and fill arrays of nonlinear workspace (currently used only by HMcode) + * + * @param ppr Input: pointer to precision structure + * @param pba Input: pointer to background structure + * @param pnl Input: pointer to nonlinear structure + * @param pnw Output: pointer to nonlinear workspace + * @return the error status + */ + +int nonlinear_hmcode_workspace_init( + struct primordial *ppm, + struct precision *ppr, + struct background *pba, + struct nonlinear *pnl, + struct nonlinear_workspace * pnw + ){ + + int ng; + int index_pk; + + /** - allocate arrays of the nonlinear workspace */ + + class_alloc(pnw->rtab,ppr->n_hmcode_tables*sizeof(double),pnl->error_message); + class_alloc(pnw->stab,ppr->n_hmcode_tables*sizeof(double),pnl->error_message); + class_alloc(pnw->ddstab,ppr->n_hmcode_tables*sizeof(double),pnl->error_message); + + ng = ppr->n_hmcode_tables; + + class_alloc(pnw->growtable, ng*sizeof(double),pnl->error_message); + class_alloc(pnw->intgrowtable, ppr->n_hmcode_mead_growth_tables*sizeof(double),pnl->error_message); + class_alloc(pnw->ztable,ng*sizeof(double),pnl->error_message); + class_alloc(pnw->scaletable,ng*sizeof(double),pnl->error_message); + class_alloc(pnw->meadscaletable,ppr->n_hmcode_mead_growth_tables*sizeof(double),pnl->error_message); + class_alloc(pnw->meadgrowtable,ppr->n_hmcode_mead_growth_tables*sizeof(double),pnl->error_message); + class_alloc(pnw->dark_energy_correction_hmcode2020_table,ng*sizeof(double),pnl->error_message); + class_alloc(pnw->tautable,ng*sizeof(double),pnl->error_message); + + class_alloc(pnw->sigma_8,pnl->pk_size*sizeof(double *),pnl->error_message); + class_alloc(pnw->sigma_disp,pnl->pk_size*sizeof(double *),pnl->error_message); + class_alloc(pnw->sigma_disp_100,pnl->pk_size*sizeof(double *),pnl->error_message); + class_alloc(pnw->sigma_prime,pnl->pk_size*sizeof(double *),pnl->error_message); + + for (index_pk=0; index_pkpk_size; index_pk++){ + class_alloc(pnw->sigma_8[index_pk],pnl->tau_size*sizeof(double),pnl->error_message); + class_alloc(pnw->sigma_disp[index_pk],pnl->tau_size*sizeof(double),pnl->error_message); + class_alloc(pnw->sigma_disp_100[index_pk],pnl->tau_size*sizeof(double),pnl->error_message); + class_alloc(pnw->sigma_prime[index_pk],pnl->tau_size*sizeof(double),pnl->error_message); + } + + /** - fill table with scale independent growth factor */ + + class_call(nonlinear_hmcode_fill_growtab(ppr,pba,pnl,pnw), + pnl->error_message, + pnl->error_message); + + class_call(nonlinear_hmcode_fill_meadgrowtab(ppr,pba,pnl,pnw), + pnl->error_message, + pnl->error_message); + + /** --fill table with G(a)=int_0^a g(a')/a' da' */ + + class_call(nonlinear_hmcode_fill_intgrowtab(ppr,pba,pnl,pnw), + pnl->error_message, + pnl->error_message); + class_call(fill_Pk_wiggle_table(ppm, ppr,pba,pnl,pnw), pnl->error_message, pnl->error_message); + + return _SUCCESS_; +} + +/** + * deallocate arrays in the nonlinear worksapce (currently used only + * by HMcode) + * + * @param pnl Input: pointer to nonlinear structure + * @param pnw Input: pointer to nonlinear workspace + * @return the error status + */ + +int nonlinear_hmcode_workspace_free( + struct nonlinear *pnl, + struct nonlinear_workspace * pnw + ) { + int index_pk; + + free(pnw->rtab); + free(pnw->stab); + free(pnw->ddstab); + + free(pnw->growtable); + free(pnw->meadgrowtable); + free(pnw->meadscaletable); + free(pnw->intgrowtable); + free(pnw->ztable); + free(pnw->scaletable); + free(pnw->tautable); + + for (index_pk=0; index_pkpk_size; index_pk++){ + free(pnw->sigma_8[index_pk]); + free(pnw->sigma_disp[index_pk]); + free(pnw->sigma_disp_100[index_pk]); + free(pnw->sigma_prime[index_pk]); + } + + free(pnw->sigma_8); + free(pnw->sigma_disp); + free(pnw->sigma_disp_100); + free(pnw->sigma_prime); + free(pnw->dark_energy_correction_hmcode2020_table); + free(pnw->Pk_wiggle_tab); + free(pnw->lnk_wiggle_tab); + + return _SUCCESS_; +} + +/** + * set the HMcode dark energy correction (if w is not -1) + * + * @param ppr Input: pointer to precision structure + * @param pba Input: pointer to background structure + * @param pnl Input: pointer to nonlinear structure + * @param pnw Output: pointer to nonlinear workspace + * @return the error status + */ + +int nonlinear_hmcode_dark_energy_correction( + struct precision *ppr, + struct background *pba, + struct nonlinear *pnl, + struct nonlinear_workspace * pnw + ) { + int last_index, index_scalefactor; + double * pvecback; + double tau_growth; + double g_lcdm,g_wcdm; + double g_lcdm_z, g_wcdm_z; + double w0,dw_over_da_fld,integral_fld; + + /** - if there is dynamical Dark Energy (w is not -1) modeled as a fluid */ + + if (pba->has_fld==_TRUE_){ + + class_alloc(pvecback,pba->bg_size*sizeof(double),pnl->error_message); + + class_call(background_tau_of_z( + pba, + pnl->z_infinity, + &tau_growth + ), + pba->error_message, + pnl->error_message); + + class_call(background_at_tau(pba,tau_growth,pba->long_info,pba->inter_normal,&last_index,pvecback), + pba->error_message, + pnl->error_message); + + class_call(background_w_fld(pba,pba->a_today,&w0,&dw_over_da_fld,&integral_fld), + pba->error_message, + pnl->error_message); + + class_call(nonlinear_hmcode_growint(ppr,pba,pnl,1./(1.+pnl->z_infinity),-1.,0.,&g_lcdm), + pnl->error_message, pnl->error_message); + + class_call(nonlinear_hmcode_growint(ppr,pba,pnl,1./(1.+pnl->z_infinity),w0,dw_over_da_fld*(-1.),&g_wcdm), + pnl->error_message, + pnl->error_message); + + free(pvecback); + + pnw->dark_energy_correction = pow(g_wcdm/g_lcdm, 1.5); + for (index_scalefactor=0;index_scalefactor< ppr->n_hmcode_tables;index_scalefactor++){ + class_call(nonlinear_hmcode_growint(ppr,pba,pnl,pnw->scaletable[index_scalefactor],-1.,0.,&g_lcdm_z), + pnl->error_message, pnl->error_message); + + class_call(nonlinear_hmcode_growint(ppr,pba,pnl,pnw->scaletable[index_scalefactor],w0,dw_over_da_fld*(-1.),&g_wcdm_z), + pnl->error_message, + pnl->error_message); + + pnw->dark_energy_correction_hmcode2020_table[index_scalefactor] = g_wcdm/g_lcdm*g_lcdm_z/g_wcdm_z; + } + } + else { + pnw->dark_energy_correction = 1.; + for (index_scalefactor=0;index_scalefactor< ppr->n_hmcode_tables;index_scalefactor++){ + pnw->dark_energy_correction_hmcode2020_table[index_scalefactor] = 1.; + } + } + + return _SUCCESS_; +} + +/** + * set the HMcode baryonic feedback parameters according to the chosen feedback model + * + * @param pnl Output: pointer to nonlinear structure + * @return the error status + */ + +int nonlinear_hmcode_baryonic_feedback( + struct nonlinear *pnl + ) { + + switch (pnl->feedback) { + + case nl_emu_dmonly: + { + pnl->eta_0 = 0.603; + pnl->c_min = 3.13; + break; + } + + case nl_owls_dmonly: + { + pnl->eta_0 = 0.64; + pnl->c_min = 3.43; + break; + } + + case nl_owls_ref: + { + pnl->eta_0 = 0.68; + pnl->c_min = 3.91; + break; + } + + case nl_owls_agn: + { + pnl->eta_0 = 0.76; + pnl->c_min = 2.32; + break; + } + + case nl_owls_dblim: + { + pnl->eta_0 = 0.70; + pnl->c_min = 3.01; + break; + } + + case nl_user_defined: + { + /* eta_0 and c_min already passed in input */ + break; + } + } + return _SUCCESS_; +} + +/** + * Function that fills pnw->rtab, pnw->stab and pnw->ddstab with (r, + * sigma, ddsigma) logarithmically spaced in r. Called by + * nonlinear_init at for all tau to account for scale-dependant growth + * before nonlinear_hmcode is called + * + * @param ppr Input: pointer to precision structure + * @param pba Input: pointer to background structure + * @param ppt Input: pointer to perturbation structure + * @param ppm Input: pointer to primordial structure + * @param pnl Input: pointer to nonlinear structure + * @param index_tau Input: index of tau, at which to compute the nl correction + * @param lnpk_l Input: logarithm of the linear power spectrum for either index_m or index_cb + * @param ddlnpk_l Input: spline of the logarithm of the linear power spectrum for either index_m or index_cb + * @param pnw Output: pointer to nonlinear workspace + * @return the error status + */ + +int nonlinear_hmcode_fill_sigtab( + struct precision * ppr, + struct background * pba, + struct perturbs * ppt, + struct primordial * ppm, + struct nonlinear * pnl, + int index_tau, + double *lnpk_l, + double *ddlnpk_l, + struct nonlinear_workspace * pnw + ) { + + double r; + double rmin, rmax; + double sig; + double * sigtab; + int i, index_r, index_sig, index_ddsig, index_n, nsig; + + rmin = ppr->rmin_for_sigtab/pba->h; + rmax = ppr->rmax_for_sigtab/pba->h; + nsig = ppr->n_hmcode_tables; + + i=0; + index_r=i; + i++; + index_sig=i; + i++; + index_ddsig=i; + i++; + index_n=i; + + class_alloc((sigtab),(nsig*index_n*sizeof(double)),pnl->error_message); + + for (i=0;ik_size_extra, + ppr->sigma_k_per_decade, + out_sigma, + &sig), + pnl->error_message, + pnl->error_message); + + sigtab[i*index_n+index_r]=r; + sigtab[i*index_n+index_sig]=sig; + } + + class_call(array_spline(sigtab, + index_n, + nsig, + index_r, + index_sig, + index_ddsig, + _SPLINE_EST_DERIV_, + pnl->error_message), + pnl->error_message, + pnl->error_message); + if (index_tau == pnl->tau_size-1){ + for (i=0;irtab[i] = sigtab[i*index_n+index_r]; + pnw->stab[i] = sigtab[i*index_n+index_sig]; + pnw->ddstab[i] = sigtab[i*index_n+index_ddsig]; + } + } + else{ + for (i=0;istab[i] = sigtab[i*index_n+index_sig]; + pnw->ddstab[i] = sigtab[i*index_n+index_ddsig]; + } + } + + free(sigtab); + + return _SUCCESS_; +} + + +/** + * Function that fills pnw->tautable and pnw->growtable with (tau, D(tau)) + * linearly spaced in scalefactor a. + * Called by nonlinear_init at before the loop over tau + * + * @param ppr Input: pointer to precision structure + * @param pba Input: pointer to background structure (will provide the scale independent growth factor) + * @param pnl Input/Output: pointer to nonlinear structure + * @param pnw Output: pointer to nonlinear workspace + * @return the error status + */ + +int nonlinear_hmcode_fill_growtab( + struct precision * ppr, + struct background * pba, + struct nonlinear * pnl, + struct nonlinear_workspace * pnw + ){ + + double z, ainit, amax, scalefactor, tau_growth; + int index_scalefactor, last_index, ng; + double * pvecback; + + ng = ppr->n_hmcode_tables; + ainit = ppr->ainit_for_growtab; + amax = ppr->amax_for_growtab; + + last_index = 0; + + class_alloc(pvecback,pba->bg_size*sizeof(double),pnl->error_message); + + for (index_scalefactor=0;index_scalefactorztable[index_scalefactor] = z; + pnw->scaletable[index_scalefactor] = scalefactor; + + class_call(background_tau_of_z( + pba, + z, + &tau_growth + ), + pba->error_message, pnl->error_message); + + pnw->tautable[index_scalefactor] = tau_growth; + + class_call(background_at_tau(pba,tau_growth,pba->long_info,pba->inter_normal,&last_index,pvecback), + pba->error_message, + pnl->error_message); + + pnw->growtable[index_scalefactor] = pvecback[pba->index_bg_D]; + + } + class_call(background_tau_of_z( + pba, + 0, + &tau_growth + ), + pba->error_message, pnl->error_message); + + + class_call(background_at_tau(pba,tau_growth,pba->long_info,pba->inter_normal,&last_index,pvecback), + pba->error_message, + pnl->error_message); + + free(pvecback); + + return _SUCCESS_; +} + + + + + + + +/** + * Function that fills pnw->tautable and pnw->meadgrowtable with (tau, D(tau)) + double *meadgrowtable; + * linearly spaced in scalefactor a. + * Called by nonlinear_init at before the loop over tau + * + * @param ppr Input: pointer to precision structure + * @param pba Input: pointer to background structure (will provide the scale independent growth factor) + * @param pnl Input/Output: pointer to nonlinear structure + * @param pnw Output: pointer to nonlinear workspace + * @return the error status + */ +/**auxiliary function +*/ +double _w(double a, double w0, double wa) { + return w0 + (1.0 - a) * wa; +} + +double _X_w(double a, double w0, double wa) { + return pow(a, -3.0 * (1.0 + w0 + wa)) * exp(-3.0 * wa * (1.0 - a)); +} + +double _Hubble2(double a, double omega0m, double omega0w, double omega0k, double w0, double wa) { + // Get Om_c, Om_b, and Om_nu using the CAMB_results object + double Om_m = omega0m; + double Om_w = omega0w; + double Om = 1-omega0k; + double H2 = Om_m * pow(a, -3.0) + Om_w * _X_w(a, w0, wa) + (1.0 - Om) * pow(a, -2.0); + return H2; +} +double _Omega_m(double a, double omega0m, double omega0w, double omega0k, double w0, double wa) { + return omega0m * pow(a, -3.0) / _Hubble2(a, omega0m, omega0w, omega0k, w0, wa); +} + + +double _AH(double a, double omega0m, double omega0w, double w0, double wa) { + // Get Om_c, Om_b, and Om_nu using the CAMB_results object + double Om_m = omega0m; + double Om_w = omega0w; + double AH = -0.5 * (Om_m * pow(a, -3.0) + (1.0 + 3.0 * _w(a, w0, wa)) * Om_w * _X_w(a, w0, wa)); + return AH; +} + + +int meadgrowth_func(double a, const double y[], double f[], void *params) { + ParamsMeadGrowth *p = (ParamsMeadGrowth *)params; + f[0] = y[1]; + double fv = -(2.+_AH(a, p->omega0m, p->omega0w, p->w0, p->wa)/_Hubble2(a, p->omega0m, p->omega0w, p->omega0k, p->w0, p->wa))*y[1]/a; + double fd = 1.5*_Omega_m(a, p->omega0m, p->omega0w, p->omega0k, p->w0, p->wa)*y[0]/pow(a,2); + f[1] = fv+fd; + return GSL_SUCCESS; +} + + + +//End +int nonlinear_hmcode_fill_meadgrowtab( + struct precision * ppr, + struct background * pba, + struct nonlinear * pnl, + struct nonlinear_workspace * pnw + ){ + + double z, ainit, amax, scalefactor, tau_growth; + double a_init_mead=1E-4; + int index_scalefactor, last_index, ng; + double f; + double y[2]; + int status; + + ng = ppr->n_hmcode_mead_growth_tables; + ainit = ppr->ainit_for_growtab; + amax = ppr->amax_for_growtab; + + ParamsMeadGrowth params = {pba->Omega0_m, pba->Omega0_de, pba->w0_fld, pba->wa_fld, pba->Omega0_k}; // omega0m; +// printf("%le %le %le %le %le\n\n\n", pba->Omega0_m, pba->Omega0_de, pba->w0_fld, pba->wa_fld, pba->Omega0_k); + gsl_odeiv2_system sys = {meadgrowth_func, NULL, 2, ¶ms}; + gsl_odeiv2_driver *driver = gsl_odeiv2_driver_alloc_y_new(&sys, gsl_odeiv2_step_rk8pd, 1e-6, 1e-6, 0.0); + f = 1.-_Omega_m(a_init_mead, pba->Omega0_m, pba->Omega0_de,pba->Omega0_k, pba->w0_fld, pba->wa_fld); + y[0] = pow(a_init_mead,(1.-3.*f/5.)); + y[1] = (1.-3.*f/5.)*pow(a_init_mead,(-3.*f/5.)); + + + for (index_scalefactor=0;index_scalefactormeadscaletable[index_scalefactor] = a_init_mead; + pnw->meadgrowtable[index_scalefactor] = y[0]; + } + return _SUCCESS_; +} + + + + + + + + + + +/** + * Function that fill pnw->intgrowtable with (G(a)=int_0^a g(a')/a' da') + * linearly spaced in scalefactor a. + * Called by nonlinear_init at before the loop over tau + * + * @param ppr Input: pointer to precision structure + * @param pba Input: pointer to background structure (will provide the scale independent growth factor) + * @param pnl Input/Output: pointer to nonlinear structure + * @param pnw Output: pointer to nonlinear workspace + * @return the error status + */ + +typedef struct{ + struct nonlinear_workspace * pnw; + struct precision * ppr; + struct nonlinear *pnl; +} IntParam; + +double integrand(double a, void *params){ + if (a==0) return 1; + IntParam *p = ( IntParam *)params; + double growth; + + class_call(array_interpolate_cubic_equal(p->pnw->meadscaletable[0], + p->pnw->meadscaletable[1]-p->pnw->meadscaletable[0], + p->pnw->meadgrowtable, + p->ppr->n_hmcode_mead_growth_tables, + a, + &growth, + p->pnl->error_message), + p->pnl->error_message, p->pnl->error_message); + return growth/a; +} + +int nonlinear_hmcode_fill_intgrowtab( + struct precision * ppr, + struct background * pba, + struct nonlinear * pnl, + struct nonlinear_workspace * pnw + ){ + double z, ainit, amax, scalefactor, tau_growth; + int index_scalefactor, last_index, ng; + double intg; + double result, error; + + ng = ppr->n_hmcode_mead_growth_tables; + ainit = ppr->ainit_for_growtab; + amax = ppr->amax_for_growtab; + IntParam intparam = {pnw, ppr, pnl}; + + + gsl_integration_workspace *workspace = gsl_integration_workspace_alloc(1000); + + gsl_function F; + F.function = &integrand; + F.params = &intparam; + double growth; + + for (index_scalefactor=0;index_scalefactormeadscaletable[index_scalefactor], 0, 1e-6, 1000, workspace, &result, &error); + class_call(array_interpolate_cubic_equal(pnw->meadscaletable[0], + pnw->meadscaletable[1]-pnw->meadscaletable[0], + pnw->meadgrowtable, + ppr->n_hmcode_mead_growth_tables, + ainit, + &growth, + pnl->error_message), + pnl->error_message, pnl->error_message); + + + + + result += growth; + pnw->intgrowtable[index_scalefactor] = result; + } + gsl_integration_workspace_free(workspace); + return _SUCCESS_; +} + + + +/** + * This function finds the scale independent growth factor by + * integrating the approximate relation d(lnD)/d(lna) = + * Omega_m(z)^gamma by Linder & Cahn 2007 + * + * @param ppr Input: pointer to precision structure + * @param pba Input: pointer to background structure + * @param pnl Input: pointer to nonlinear structure + * @param a Input: scalefactor + * @param w0 Input: dark energy equation of state today + * @param wa Input: dark energy equation of state varying with a: w=w0+(1-a)wa + * @param growth Output: scale independent growth factor at a + * @return the error status + */ + +int nonlinear_hmcode_growint( + struct precision * ppr, + struct background * pba, + struct nonlinear * pnl, + double a, + double w0, + double wa, + double * growth + ){ + + double z, ainit, amax, scalefactor, gamma, X_de, Hubble2, Omega_m; + int i, index_scalefactor, index_a, index_growth, index_ddgrowth, index_gcol, ng; // index_scalefactor is a running index while index_a is a column index + double * pvecback; + double * integrand; + + ng = 1024; // number of growth values (stepsize of the integral), should not be hardcoded and replaced by a precision parameter + ainit = a; + amax = 1.; + + i=0; + index_a = i; + i++; + index_growth = i; + i++; + index_ddgrowth = i; + i++; + index_gcol = i; + + class_alloc(integrand,ng*index_gcol*sizeof(double),pnl->error_message); + class_alloc(pvecback,pba->bg_size*sizeof(double),pnl->error_message); + + if (ainit == amax) { + *growth = 1.; + } + else { + + for (index_scalefactor=0;index_scalefactorOmega0_m*pow((1.+z), 3.) + pba->Omega0_k*pow((1.+z), 2.) + pba->Omega0_de*X_de); + Omega_m = (pba->Omega0_m*pow((1.+z), 3.))/Hubble2; + /* Samuel brieden: TBC: check that the matching between the + background quantity and this fitting formula improves by + using Omega_cb (as it is done in background). Carefull: + Hubble remains with Omega0_m */ + + if (w0 == -1.){ + gamma = 0.55; + } + else if (w0 < -1.){ + gamma = 0.55+0.02*(1+w0); + } + else { + gamma = 0.55+0.05*(1+w0); + } + integrand[index_scalefactor*index_gcol+index_a] = scalefactor; + integrand[index_scalefactor*index_gcol+index_growth]= -pow(Omega_m, gamma)/scalefactor; + } + + class_call(array_spline(integrand, + index_gcol, + ng, + index_a, + index_growth, + index_ddgrowth, + _SPLINE_EST_DERIV_, + pnl->error_message), + pnl->error_message, + pnl->error_message); + + class_call(array_integrate_all_trapzd_or_spline(integrand, + index_gcol, + ng, + 0, //ng-1, + index_a, + index_growth, + index_ddgrowth, + growth, + pnl->error_message), + pnl->error_message, + pnl->error_message); + + *growth = exp(*growth); + + } + //fprintf(stdout, "%e %e \n", a, *growth); + free(pvecback); + free(integrand); + + return _SUCCESS_; +} + +/** + * This is the fourier transform of the NFW density profile. + * + * @param pnl Input: pointer to nonlinear structure + * @param k Input: wave vector + * @param rv Input: virial radius + * @param c Input: concentration = rv/rs (with scale radius rs) + * @param window_nfw Output: Window Function of the NFW profile + * @return the error status + */ + +int nonlinear_hmcode_window_nfw( + struct nonlinear * pnl, + double k, + double rv, + double c, + double *window_nfw + ){ + double si1, si2, ci1, ci2, ks; + double p1, p2, p3; + + ks = k*rv/c; + + class_call(sine_integral( + ks*(1.+c), + &si2, + pnl->error_message + ), + pnl->error_message, pnl->error_message); + + class_call(sine_integral( + ks, + &si1, + pnl->error_message + ), + pnl->error_message, pnl->error_message); + + class_call(cosine_integral( + ks*(1.+c), + &ci2, + pnl->error_message + ), + pnl->error_message, pnl->error_message); + + class_call(cosine_integral( + ks, + &ci1, + pnl->error_message + ), + pnl->error_message, pnl->error_message); + + p1=cos(ks)*(ci2-ci1); + p2=sin(ks)*(si2-si1); + p3=sin(ks*c)/(ks*(1.+c)); + + *window_nfw=p1+p2-p3; + *window_nfw=*window_nfw/(log(1.+c)-c/(1.+c)); + + return _SUCCESS_; +} + +/** + * This is the Sheth-Tormen halo mass function (1999, MNRAS, 308, 119) + * + * @param nu Input: the \f$ \nu \f$ parameter that depends on the halo mass via \f$ \nu(M) = \delta_c/\sigma(M) \f$ + * @param hmf Output: Value of the halo mass function at this \f$ \nu \f$ + * @return the error status + */ + +int nonlinear_hmcode_halomassfunction( + double nu, + double * hmf + ){ + + double p, q, A; + + p=0.3; + q=0.707; + A=0.21616; + + *hmf=A*(1.+(pow(q*nu*nu, -p)))*exp(-q*nu*nu/2.); + + return _SUCCESS_; +} + +/** + * Compute sigma8(z) + * + * @param pba Input: pointer to background structure + * @param pnl Input: pointer to nonlinear structure + * @param z Input: redshift + * @param sigma_8 Output: sigma8(z) + * @param sigma_8_cb Output: sigma8_cb(z) + * @param pnw Output: pointer to nonlinear workspace + * @return the error status + */ + +int nonlinear_hmcode_sigma8_at_z( + struct background *pba, + struct nonlinear * pnl, + double z, + double * sigma_8, + double * sigma_8_cb, + struct nonlinear_workspace * pnw + ) { + + double tau; + + class_call(background_tau_of_z(pba, + z, + &tau), + pba->error_message, + pnl->error_message); + + if (pnl->tau_size == 1) { + *sigma_8 = pnw->sigma_8[pnl->index_pk_m][0]; + } + else { + class_call(array_interpolate_two(pnl->tau, + 1, + 0, + pnw->sigma_8[pnl->index_pk_m], + 1, + pnl->tau_size, + tau, + sigma_8, + 1, + pnl->error_message), + pnl->error_message, + pnl->error_message); + } + + + if (pba->has_ncdm){ + + if (pnl->tau_size == 1) { + *sigma_8_cb = pnw->sigma_8[pnl->index_pk_cb][0]; + } + else { + class_call(array_interpolate_two(pnl->tau, + 1, + 0, + pnw->sigma_8[pnl->index_pk_cb], + 1, + pnl->tau_size, + tau, + sigma_8_cb, + 1, + pnl->error_message), + pnl->error_message, + pnl->error_message); + } + + } + else{ + *sigma_8_cb = *sigma_8; + } + + + + return _SUCCESS_; +} + +/** + * Compute sigmadisp(z) + * + * @param pba Input: pointer to background structure + * @param pnl Input: pointer to nonlinear structure + * @param z Input: redshift + * @param sigma_disp Output: sigmadisp(z) + * @param sigma_disp_cb Output: sigmadisp_cb(z) + * @param pnw Output: pointer to nonlinear workspace + * @return the error status + */ + +int nonlinear_hmcode_sigmadisp_at_z( + struct background *pba, + struct nonlinear * pnl, + double z, + double * sigma_disp, + double * sigma_disp_cb, + struct nonlinear_workspace * pnw + ) { + + double tau; + + class_call(background_tau_of_z(pba, + z, + &tau), + pba->error_message, + pnl->error_message); + + if (pnl->tau_size == 1) { + *sigma_disp = pnw->sigma_disp[pnl->index_pk_m][0]; + } + else { + class_call(array_interpolate_two(pnl->tau, + 1, + 0, + pnw->sigma_disp[pnl->index_pk_m], + 1, + pnl->tau_size, + tau, + sigma_disp, + 1, + pnl->error_message), + pnl->error_message, + pnl->error_message); + } + + if (pba->has_ncdm){ + + if (pnl->tau_size == 1) { + *sigma_disp_cb = pnw->sigma_disp[pnl->index_pk_cb][0]; + } + else { + class_call(array_interpolate_two(pnl->tau, + 1, + 0, + pnw->sigma_disp[pnl->index_pk_cb], + 1, + pnl->tau_size, + tau, + sigma_disp_cb, + 1, + pnl->error_message), + pnl->error_message, + pnl->error_message); + } + + } + else{ + *sigma_disp_cb = *sigma_disp; + } + + + + return _SUCCESS_; +} + +/** + * Compute sigmadisp100(z) + * + * @param pba Input: pointer to background structure + * @param pnl Input: pointer to nonlinear structure + * @param z Input: redshift + * @param sigma_disp_100 Output: sigmadisp100(z) + * @param sigma_disp_100_cb Output: sigmadisp100_cb(z) + * @param pnw Output: pointer to nonlinear workspace + * @return the error status + */ + +int nonlinear_hmcode_sigmadisp100_at_z( + struct background *pba, + struct nonlinear * pnl, + double z, + double * sigma_disp_100, + double * sigma_disp_100_cb, + struct nonlinear_workspace * pnw + ) { + + double tau; + + class_call(background_tau_of_z(pba, + z, + &tau), + pba->error_message, + pnl->error_message); + + if (pnl->tau_size == 1) { + *sigma_disp_100 = pnw->sigma_disp_100[pnl->index_pk_m][0]; + } + else { + class_call(array_interpolate_two(pnl->tau, + 1, + 0, + pnw->sigma_disp_100[pnl->index_pk_m], + 1, + pnl->tau_size, + tau, + sigma_disp_100, + 1, + pnl->error_message), + pnl->error_message, + pnl->error_message); + } + + if (pba->has_ncdm){ + + if (pnl->tau_size == 1) { + *sigma_disp_100_cb = pnw->sigma_disp_100[pnl->index_pk_cb][0]; + } + else { + class_call(array_interpolate_two(pnl->tau, + 1, + 0, + pnw->sigma_disp_100[pnl->index_pk_cb], + 1, + pnl->tau_size, + tau, + sigma_disp_100_cb, + 1, + pnl->error_message), + pnl->error_message, + pnl->error_message); + } + + } + else{ + *sigma_disp_100_cb = *sigma_disp_100; + } + + + return _SUCCESS_; +} + +/** + * Compute sigma'(z) + * + * @param pba Input: pointer to background structure + * @param pnl Input: pointer to nonlinear structure + * @param z Input: redshift + * @param sigma_prime Output: sigma'(z) + * @param sigma_prime_cb Output: sigma'_cb(z) + * @param pnw Output: pointer to nonlinear workspace + * @return the error status + */ + +int nonlinear_hmcode_sigmaprime_at_z( + struct background *pba, + struct nonlinear * pnl, + double z, + double * sigma_prime, + double * sigma_prime_cb, + struct nonlinear_workspace * pnw + ) { + + double tau; + + class_call(background_tau_of_z(pba, + z, + &tau), + pba->error_message, + pnl->error_message); + + if (pnl->tau_size == 1) { + *sigma_prime = pnw->sigma_prime[pnl->index_pk_m][0]; + } + else { + class_call(array_interpolate_two(pnl->tau, + 1, + 0, + pnw->sigma_prime[pnl->index_pk_m], + 1, + pnl->tau_size, + tau, + sigma_prime, + 1, + pnl->error_message), + pnl->error_message, + pnl->error_message); + } + + if (pba->has_ncdm){ + + if (pnl->tau_size == 1) { + *sigma_prime_cb = pnw->sigma_prime[pnl->index_pk_cb][0]; + } + else { + class_call(array_interpolate_two(pnl->tau, + 1, + 0, + pnw->sigma_prime[pnl->index_pk_cb], + 1, + pnl->tau_size, + tau, + sigma_prime_cb, + 1, + pnl->error_message), + pnl->error_message, + pnl->error_message); + } + + } + else{ + *sigma_prime_cb = *sigma_prime; + } + + + return _SUCCESS_; +} + + + +/*++++++++++++++++++++++++++++++++++++++++* +* 2Halo Terms HMcode * +*++++++++++++++++++++++++++++++++++++++++*/ + +double Tk_EH_nowiggle(double k, double h, double wm, double wb, double T_CMB) { +//astro-ph:9709112 +// These only needs to be calculated once + double rb = wb/wm; // Baryon ratio + double e = exp(1.); // e + double s = 44.5 * log(9.83/wm) / sqrt(1. + 10. * pow(wb, 0.75)); // Equation (26) + double alpha = 1. - 0.328 * log(431. * wm) * rb + 0.38 * log(22.3 * wm) * pow(rb, 2); // Equation (31) +// Functions of k + double Gamma = (wm/h) * (alpha + (1. - alpha) / (1. + pow(0.43 * k * s , 4))); // Equation (30) + double q = (k/h) * pow(T_CMB/2.7, 2) / Gamma; // Equation (28) + double L = log(2. * e + 1.8 * q); // Equation (29) + double C = 14.2 + 731. / (1. + 62.5 * q); // Equation (29) + double Tk_nw = L / (L + C * pow(q, 2)); // Equation (29) +return Tk_nw; +} + +void smooth_array_Gaussian(double *x, double *f, int n, double sigma) { + int i, j; + double *ff, weight, total; + int nsig=3; + if (sigma != 0.) { + ff = (double *)malloc(n * sizeof(double)); + // Save the original input array + for (i = 0; i < n; i++) { + ff[i] = f[i]; + } + // Delete the original array + for (i = 0; i < n; i++) { + f[i] = 0.; + } + // Apply Gaussian smoothing + for (i = 0; i < n; i++) { + total = 0.; + if (fabs(x[i] - x[0]) < nsig * sigma || fabs(x[i] - x[n-1]) < nsig * sigma) { + f[i] = ff[i]; + } else { + for (j = 0; j < n; j++) { + weight = exp(-pow(x[i] - x[j], 2) / (2. * pow(sigma, 2))); + f[i] = f[i] + ff[j] * weight; + total = total + weight; + } + f[i] = f[i] / total; + } + } + + free(ff); + } +} + + +/** + * fill HMcode wiggle powerspectra + * + * @param ppm Input: pointer to primordial structure + * @param ppr Input: pointer to precision structure + * @param pba Input: pointer to background structure + * @param pnl Input: pointer to nonlinear structure + * @param pnw Output: pointer to nonlinear workspace + * @return the error status + */ + +int fill_Pk_wiggle_table( + struct primordial * ppm, + struct precision *ppr, + struct background *pba, + struct nonlinear *pnl, + struct nonlinear_workspace * pnw + ) { + double logkmin_wiggle = ppr->logkmin_wiggle+log(pba->h); + double logkmax_wiggle = ppr->logkmax_wiggle+log(pba->h); + static double sigma = 0.25; + double dlnk = (logkmax_wiggle-logkmin_wiggle)/(ppr->nk_wiggle-1); + double *Pk_nowiggle; + double *Pk_ratio; + double *pklin; + int kin; + double lnki; + class_alloc(Pk_nowiggle,ppr->nk_wiggle*sizeof(double),pnl->error_message); + class_alloc(pklin,ppr->nk_wiggle*sizeof(double),pnl->error_message); + class_alloc(Pk_ratio,ppr->nk_wiggle*sizeof(double),pnl->error_message); + class_alloc(pnw->Pk_wiggle_tab, ppr->nk_wiggle*sizeof(double),pnl->error_message); + class_alloc(pnw->lnk_wiggle_tab,ppr->nk_wiggle*sizeof(double),pnl->error_message); + lnki = logkmin_wiggle; + double norm = 1; + class_call(nonlinear_pk_at_k_and_z(pba, + ppm, + pnl, + pk_linear, + ppr->knorm_nowiggle*pba->h, + 0, + pnl->index_pk_m, + &norm, + NULL + ), + pnl->error_message, + pnl->error_message); + norm /= (pow(ppr->knorm_nowiggle*pba->h, ppm->n_s) * pow(Tk_EH_nowiggle(ppr->knorm_nowiggle*pba->h, pba->h, pba->Omega0_m*pba->h*pba->h, pba->Omega0_b*pba->h*pba->h, pba->T_cmb), 2)); + + for (kin=0; kinnk_wiggle; kin++, lnki += dlnk) { + Pk_nowiggle[kin]= pow(exp(lnki), ppm->n_s) * pow(Tk_EH_nowiggle(exp(lnki), pba->h, pba->Omega0_m*pba->h*pba->h, pba->Omega0_b*pba->h*pba->h, pba->T_cmb), 2)*norm; + class_call(nonlinear_pk_at_k_and_z(pba, + ppm, + pnl, + pk_linear, + exp(lnki), + 0, + pnl->index_pk_m, + &pklin[kin], + NULL + ), + pnl->error_message, + pnl->error_message); + Pk_ratio[kin] = pklin[kin]/Pk_nowiggle[kin]; + pnw->lnk_wiggle_tab[kin] = lnki; + } + smooth_array_Gaussian(pnw->lnk_wiggle_tab, Pk_ratio, ppr->nk_wiggle, sigma); + for (kin=0; kinnk_wiggle; kin++) { + pnw->Pk_wiggle_tab[kin] = pklin[kin]-Pk_ratio[kin]*Pk_nowiggle[kin]; + } + free(Pk_nowiggle); + free(Pk_ratio); + free(pklin); + return _SUCCESS_; +} + + +/////Starting HMcode2020 //// +double _f_Mead(double x, double y, double p10, double p11, double p12, double p13) { + return p10 + p11 * (1-x) + p12 * (1-x) * (1-x) + p13 * (1-y); +} + +double dc_Mead(double a, double Om_m, double f_nu, double g, double G) { + double p10 = -0.0069, p11 = -0.0208, p12 = 0.0312, p13 = 0.0021; + double p20 = 0.0001, p21 = -0.0647, p22 = -0.0417, p23 = 0.0646; + double a1 = 1; + double dc0 = (3./20.)*pow(12.*M_PI, 2./3.); + double dc_Mead = dc0 * (1. + pow(log10(Om_m), a1) * _f_Mead(g/a, G/a, p10, p11, p12, p13) + _f_Mead(g/a, G/a, p20, p21, p22, p23)) * (1. - 0.041 * f_nu); + return dc_Mead; +} + +double Dv_Mead(double a, double Om_m, double f_nu, double g, double G) { + /* + Delta_v fitting function from Mead (2017; 1606.05345) + All input parameters should be evaluated as functions of a/z + */ + // See Appendix A of Mead (2017) for naming convention + double p30 = -0.79, p31 = -10.17, p32 = 2.51, p33 = 6.51; + double p40 = -1.89, p41 = 0.38, p42 = 18.8, p43 = -15.87; + double a3 = 1, a4 = 2; + double Dv0 = 18.0 * M_PI*M_PI; + + // Halo virial overdensity + double Dv = 1.0; + Dv = Dv + _f_Mead(g / a, G / a, p30, p31, p32, p33) * pow(log10(Om_m), a3); + Dv = Dv + _f_Mead(g / a, G / a, p40, p41, p42, p43) * pow(log10(Om_m), a4); + Dv = Dv * Dv0 * (1.0 + 0.763 * f_nu); + return Dv; +} + + + + + + +/** + * Computes the nonlinear correction on the linear power spectrum via + * the method presented in Mead et al. 2009.01858 + * + * @param ppr Input: pointer to precision structure + * @param pba Input: pointer to background structure + * @param ppt Input: pointer to perturbation structure + * @param ppm Input: pointer to primordial structure + * @param pnl Input: pointer to nonlinear structure + * @param index_pk Input: index of the pk type, either index_m or index_cb + * @param index_tau Input: index of tau, at which to compute the nl correction + * @param tau Input: tau, at which to compute the nl correction + * @param pk_nl Output:nonlinear power spectrum + * @param lnpk_l Input: logarithm of the linear power spectrum for both index_m and index_cb + * @param ddlnpk_l Input: spline of the logarithm of the linear power spectrum for both index_m and index_cb + * @param nl_corr_not_computable_at_this_k Ouput: was the computation doable? + * @param k_nl Output: nonlinear scale for index_m and index_cb + * @param pnw Input/Output: pointer to nonlinear workspace + * @return the error status + */ + +int nonlinear_hmcode2020_auxiliary( + struct precision *ppr, + struct background *pba, + struct perturbs *ppt, + struct primordial *ppm, + struct nonlinear *pnl, + int index_pk, + int index_tau, + double tau, + double *pk_nl, + double **lnpk_l, + double **ddlnpk_l, + double *k_nl, + short * nl_corr_not_computable_at_this_k, + struct nonlinear_workspace * pnw, + int imead, + double * result + ){ + + /* integers */ + int index_mass, i, ng, nsig; + int index_k, index_ncol; + int last_index=0; + int index_pk_cb; + int counter, index_nl; + + int index_nu, index_cut; + int index_y; + int index_ddy; + + /* Background parameters */ + double Omega_m,fnu,Omega0_m, Omega0_b,Omega0_c, Omega_b, Omega_c, rho_bar; + double z_at_tau; + double rho_crit_today_in_msun_mpc3; + double growth; + double intgrowth; + double meadgrowth; + double anorm; + + /* temporary numbers */ + double m, r, nu, sig, sigf, fg, fstar, Mb; + double diff, r1, r2; + + /* HMcode parameters */ + double mmin, mmax, nu_min; + double dark_energy_correction; + + double sigma_disp, sigma_disp100, sigma8, sigma8cc, gnorm; + double delta_c, Delta_v; + double fraction; + + double sigma_nl, nu_nl, r_nl; + double sigma_prime; + double dlnsigdlnR; + double n_eff; + double alpha; + + double z_form, g_form; + + double eta; + double gst, window_nfw; + double nu_cut; + double fac, k_star, fdamp, nd, f, kd; + double pk_lin, pk_2h, pk_1h, pk_wiggle; + + /* data fields */ + double * pvecback; + double * conc; + double * mass; + double * sigma_r; + double * sigmaf_r; + double * r_virial; + double * r_real; + double * nu_arr; + + double * p1h_integrand; + + + /** include precision parameters that control the number of entries in the growth and sigma tables */ + ng = ppr->n_hmcode_tables; + nsig = ppr->n_hmcode_tables; + + /** Compute background quantitites today */ + + Omega0_m = pba->Omega0_m; + Omega0_b = pba->Omega0_b; + Omega0_c = pba->Omega0_cdm; + fnu = pba->Omega0_ncdm_tot/Omega0_m; + + /** If index_pk_cb, choose Omega0_cb as the matter density parameter. + * If index_pk_m, choose Omega0_cbn as the matter density parameter. */ + if (index_pk==pnl->index_pk_cb){ + Omega0_m = Omega0_m - pba->Omega0_ncdm_tot; + } + + anorm = 1./(2*pow(_PI_,2)); + + /** Call all the relevant background parameters at this tau */ + class_alloc(pvecback,pba->bg_size*sizeof(double),pnl->error_message); + + + + class_call(background_at_tau(pba,tau,pba->long_info,pba->inter_normal,&last_index,pvecback), + pba->error_message, + pnl->error_message); + + + + + + + + Omega_m = pvecback[pba->index_bg_Omega_m];//TBC (i.e. check if for P_cb here we should use Omega_cb) here the total time varying Omega_m is used for delta_c and for Delta_v according to the Mead fit of the Massara simulations. + Omega_c = pvecback[pba->index_bg_rho_cdm]/pvecback[pba->index_bg_rho_crit]; + Omega_b = pvecback[pba->index_bg_rho_b]/pvecback[pba->index_bg_rho_crit]; + rho_bar = pvecback[pba->index_bg_rho_crit]*Omega_m; + + growth = pvecback[pba->index_bg_D]; + + z_at_tau = 1./pvecback[pba->index_bg_a]-1.; + class_call(array_interpolate_two_arrays_one_column(pnw->meadscaletable, + pnw->intgrowtable, + 1, + 0, + ppr->n_hmcode_mead_growth_tables, + pvecback[pba->index_bg_a], + &intgrowth, + pnl->error_message), + pnl->error_message, pnl->error_message); + class_call(array_interpolate_two_arrays_one_column(pnw->meadscaletable, + pnw->meadgrowtable, + 1, + 0, + ppr->n_hmcode_mead_growth_tables, + pvecback[pba->index_bg_a], + &meadgrowth, + pnl->error_message), + pnl->error_message, pnl->error_message); + + + + + + if (imead==5){ + double theta_tagn = pnl->hmcode2020log10tagn-7.8; + double B_0 = 3.44-0.496 * theta_tagn; + double B_z = -0.0671-0.0371 * theta_tagn; + pnl->c_min = B_0*pow(10, z_at_tau*B_z); + fstar = (0.01*(2.01-0.30*theta_tagn))*pow(10, z_at_tau*(0.409+0.0224*theta_tagn)); + if(fstar>Omega0_b/Omega0_m) fstar = Omega0_b/Omega0_m; + Mb = pow(10, 13.87+1.81*theta_tagn+z_at_tau*(-0.108+0.195*theta_tagn))/pba->h; // unit Msun + } + else if (imead==4){ + pnl->c_min =4; + } + else{ + pnl->c_min = 5.196; + } + + + + + /* The number below is the critical density today, rho_c = 3 * H0^2 / 8*pi*G, in units of M_sun over Mpc^3 */ + rho_crit_today_in_msun_mpc3 = 3.*pow(1.e5*pba->h, 2)/8./_PI_/_G_*_Mpc_over_m_/_M_SUN_; + + + /** Test whether pk_cb has to be taken into account (only if we have massive neutrinos)*/ + if (pba->has_ncdm==_TRUE_){ + index_pk_cb = pnl->index_pk_cb; + } + else { + index_pk_cb = index_pk; + } + + + /** Get sigma(R=8 Mpc/h), sigma_disp(R=0), sigma_disp(R=100 Mpc/h) and write them into pnl structure */ + + class_call(nonlinear_sigmas(pnl, + 8./pba->h, + lnpk_l[index_pk],ddlnpk_l[index_pk], + pnl->k_size_extra, + ppr->sigma_k_per_decade, + out_sigma, + &sigma8), + pnl->error_message, + pnl->error_message); + + class_call(nonlinear_sigmas(pnl, + 8./pba->h, + lnpk_l[index_pk_cb],ddlnpk_l[index_pk_cb], + pnl->k_size_extra, + ppr->sigma_k_per_decade, + out_sigma, + &sigma8cc), + pnl->error_message, pnl->error_message); + + + class_call(nonlinear_sigmas(pnl, + 0., + lnpk_l[index_pk],ddlnpk_l[index_pk], + pnl->k_size_extra, + ppr->sigma_k_per_decade, + out_sigma_disp, + &sigma_disp), + pnl->error_message, + pnl->error_message); + + class_call(nonlinear_sigmas(pnl, + 100./pba->h, + lnpk_l[index_pk],ddlnpk_l[index_pk], + pnl->k_size_extra, + ppr->sigma_k_per_decade, + out_sigma_disp, + &sigma_disp100), + pnl->error_message, + pnl->error_message); + + pnw->sigma_8[index_pk][index_tau] = sigma8; + pnw->sigma_disp[index_pk][index_tau] = sigma_disp; + pnw->sigma_disp_100[index_pk][index_tau] = sigma_disp100; + + /** Initialisation steps for the 1-Halo Power Integral */ + mmin=ppr->mmin_for_p1h_integral/pba->h; //Minimum mass for integration; (unit conversion from m[Msun/h] to m[Msun] ) + mmax=ppr->mmax_for_p1h_integral/pba->h; //Maximum mass for integration; + + class_alloc(mass,ppr->nsteps_for_p1h_integral*sizeof(double),pnl->error_message); + class_alloc(r_real,ppr->nsteps_for_p1h_integral*sizeof(double),pnl->error_message); + class_alloc(r_virial,ppr->nsteps_for_p1h_integral*sizeof(double),pnl->error_message); + class_alloc(sigma_r,ppr->nsteps_for_p1h_integral*sizeof(double),pnl->error_message); + class_alloc(sigmaf_r,ppr->nsteps_for_p1h_integral*sizeof(double),pnl->error_message); + class_alloc(nu_arr,ppr->nsteps_for_p1h_integral*sizeof(double),pnl->error_message); + + // Linear theory density perturbation threshold for spherical collapse + //delta_c = 1.59+0.0314*log(sigma8); //Mead et al. (2015; arXiv 1505.07833) + //delta_c = delta_c*(1.+0.0123*log10(Omega_m)); //Nakamura & Suto (1997) fitting formula for LCDM models (as in Mead 2016) + //delta_c = delta_c*(1.+0.262*fnu); //Mead et al. (2016; arXiv 1602.02154) neutrino addition + delta_c = dc_Mead(pvecback[pba->index_bg_a], Omega_m, fnu, meadgrowth, intgrowth);//1.66737;//dc_Mead(pvecback[pba->index_bg_a], Omega_m, fnu, meadgrowth, intgrowth); // Mead et al. (2017; arXiv 1606.05345) + //printf("%le %le %le %le %le %le \n", pvecback[pba->index_bg_a], Omega_m, delta_c, fnu, meadgrowth,intgrowth); + + // virialized overdensity + //Delta_v=418.*pow(Omega_m, -0.352); //Mead et al. (2015; arXiv 1505.07833) + //Delta_v=Delta_v*(1.+0.916*fnu); //Mead et al. (2016; arXiv 1602.02154) neutrino addition + Delta_v= Dv_Mead(pvecback[pba->index_bg_a], Omega_m, fnu, meadgrowth, intgrowth);//Dv_Mead(pvecback[pba->index_bg_a], Omega_m, fnu, meadgrowth, intgrowth); + //printf("%le %le %le %le %le %le \n", pvecback[pba->index_bg_a], Omega_m, Delta_v, fnu, meadgrowth,intgrowth); + + // mass or radius fraction respectively + fraction = pow(0.01, 1./3.); + + /* Fill the arrays needed for the P1H Integral: mass, r_real, r_virial, nu_arr, sigma_r, sigmaf_r + * The P1H Integral is an integral over nu=delta_c/sigma(M), where M is connected to R via R=(3M)/(4*pi*rho_m). + * The Integrand is M*Window^2{nu(M)*k, Rv(M), c(M)}*f(nu) with the window being the fouriertransformed + * NFW profile, Rv = R/Delta_v^(1/3) and Sheth-Thormen halo mass function f. + * The halo concentration-mass-relation c(M) will be found later. */ + + for (index_mass=0;index_massnsteps_for_p1h_integral;index_mass++){ + + m = exp(log(mmin)+log(mmax/mmin)*(index_mass)/(ppr->nsteps_for_p1h_integral-1)); + r = pow((3.*m/(4.*_PI_*rho_crit_today_in_msun_mpc3*Omega0_m)), (1./3.)); + mass[index_mass] = m; + r_real[index_mass] = r; + r_virial[index_mass] = r_real[index_mass]/pow(Delta_v, 1./3.); + + class_call(array_interpolate_spline(pnw->rtab, + nsig, + pnw->stab, + pnw->ddstab, + 1, + r, + &last_index, + &sig, + 1, + pnl->error_message), + pnl->error_message, pnl->error_message); + + class_call(array_interpolate_spline(pnw->rtab, + nsig, + pnw->stab, + pnw->ddstab, + 1, + r*fraction, + &last_index, + &sigf, + 1, + pnl->error_message), + pnl->error_message, pnl->error_message); + + nu=delta_c/sig; + sigma_r[index_mass] = sig; + sigmaf_r[index_mass] = sigf; + nu_arr[index_mass] = nu; + } + + /** find nonlinear scales k_nl and r_nl and the effective spectral index n_eff */ + nu_nl = 1.; + nu_min = nu_arr[0]; + + /* stop calculating the nonlinear correction if the nonlinear scale is not reached in the table: */ + if (nu_min > nu_nl) { + if (pnl->nonlinear_verbose>0) fprintf(stdout, " -> [WARNING:] the minimum mass in the mass-table is too large to find the nonlinear scale at this redshift.\n Decrease mmin_for_p1h_integral\n"); + * nl_corr_not_computable_at_this_k = _TRUE_; + free(mass); + free(r_real); + free(r_virial); + free(sigma_r); + free(sigmaf_r); + free(nu_arr); + return _SUCCESS_; + } + + /* make a first guess for the nonlinear scale */ + class_call(array_interpolate_two_arrays_one_column( + nu_arr, + r_real, + 1, + 0, + ppr->nsteps_for_p1h_integral, + nu_nl, + &r_nl, + pnl->error_message), + pnl->error_message, pnl->error_message); + + class_call(array_search_bisect(ppr->nsteps_for_p1h_integral,nu_arr,nu_nl,&index_nl,pnl->error_message), pnl->error_message, pnl->error_message); + + r1 = r_real[index_nl-1]; + r2 = r_real[index_nl+2]; + + /* // for debugging: (if it happens that r_nl is not between r1 and r2, which should never be the case) + fprintf(stdout, "%e %e %e %e\n", r1, nu_arr[index_nl-1], r2, nu_arr[index_nl+2]); + */ + + /* do bisectional iteration between r1 and r2 to find the precise value of r_nl */ + counter = 0; + do { + r_nl = (r1+r2)/2.; + counter ++; + + class_call(nonlinear_sigmas(pnl, + r_nl, + lnpk_l[index_pk_cb],ddlnpk_l[index_pk_cb], + pnl->k_size_extra, + ppr->sigma_k_per_decade, + out_sigma, + &sigma_nl), + pnl->error_message, pnl->error_message); + + diff = sigma_nl - delta_c; + + if (diff > ppr->hmcode_tol_sigma){ + r1=r_nl; + } + else if (diff < -ppr->hmcode_tol_sigma) { + r2 = r_nl; + } + + class_test(counter > _MAX_IT_, + pnl->error_message, + "could not converge within maximum allowed number of iterations"); + + } while (fabs(diff) > ppr->hmcode_tol_sigma); + + if (pnl->nonlinear_verbose>5){ + fprintf(stdout, "number of iterations for r_nl at z = %e: %d\n", z_at_tau, counter); + } + *k_nl = 1./r_nl; + + if (*k_nl > pnl->k[pnl->k_size-1]) { + * nl_corr_not_computable_at_this_k = _TRUE_; + free(mass); + free(r_real); + free(r_virial); + free(sigma_r); + free(sigmaf_r); + free(nu_arr); + return _SUCCESS_; + } + else { + * nl_corr_not_computable_at_this_k = _FALSE_; + } + + /* call sigma_prime function at r_nl to find the effective spectral index n_eff */ + + class_call(nonlinear_sigmas(pnl, + r_nl, + lnpk_l[index_pk_cb],ddlnpk_l[index_pk_cb], + pnl->k_size_extra, + ppr->sigma_k_per_decade, + out_sigma_prime, + &sigma_prime), + pnl->error_message, + pnl->error_message); + + dlnsigdlnR = r_nl*pow(sigma_nl, -2)*sigma_prime; + n_eff = -3.- dlnsigdlnR; + pnw->sigma_prime[index_pk][index_tau] = sigma_prime; + + + /** Compute the nonlinear correction */ + if ((imead==5)||(imead==4)){ + eta = 0; + f = 0; + alpha=1.; + } + else{ + eta = 0.1281*pow(sigma8cc, -0.3644);; // halo bloating parameter table 2 of 2009.01858 (Mead) + f = 0.2696*pow(sigma8cc, 0.9403); + alpha = 1.875* pow(1.603, n_eff); + } + k_star = 0.05618*pow(sigma8cc, -1.013)*pba->h; //table 2 of 2009.01858 (Mead) in Mpc + nd = 2.853; + kd = 0.05699*pow(sigma8cc, -1.089)*pba->h; //Mpc + + + + /** Calculate halo concentration-mass relation conc(mass) (Bullock et al. 2001) */ + class_alloc(conc,ppr->nsteps_for_p1h_integral*sizeof(double),pnl->error_message); + + for (index_mass=0;index_massnsteps_for_p1h_integral;index_mass++){ + //find growth rate at formation + g_form = delta_c*growth/sigmaf_r[index_mass]; + if (g_form > 1.) g_form = 1.; + + // + class_call(array_interpolate_two_arrays_one_column( + pnw->growtable, + pnw->ztable, + 1, + 0, + ng, + g_form, + &z_form, + pnl->error_message), + pnl->error_message, pnl->error_message); + if (z_form < z_at_tau){ + z_form = z_at_tau; + } + // conc[index_mass] = pnl->c_min; + //} else { + + class_call(array_interpolate_two_arrays_one_column( + pnw->ztable, + pnw->dark_energy_correction_hmcode2020_table, + 1, + 0, + ng, + z_at_tau, + &dark_energy_correction, + pnl->error_message), + pnl->error_message, pnl->error_message); + + + + + + + conc[index_mass] = pnl->c_min*(1.+z_form)/(1.+z_at_tau)*dark_energy_correction; + //} + } + + + + // growth factor + + /* the 1h integral contains the halo mass function proportional to exp(-nu^2). + * To save time, the integration loop cuts, when nu exceeds a large value, + * where the integrand is 0 anyhow. This cut index is found here. */ + nu_cut = 10.; + if (nu_cut < nu_arr[ppr->nsteps_for_p1h_integral-1]){ + class_call(array_search_bisect(ppr->nsteps_for_p1h_integral,nu_arr,nu_cut,&index_cut,pnl->error_message), pnl->error_message, pnl->error_message); + } + else { + index_cut = ppr->nsteps_for_p1h_integral; + } + + i=0; + index_nu=i; + i++; + index_y=i; + i++; + index_ddy=i; + i++; + index_ncol=i; + + for (index_k = 0; index_k < pnl->k_size; index_k++){ + + class_alloc(p1h_integrand,index_cut*index_ncol*sizeof(double),pnl->error_message); + + pk_lin = exp(lnpk_l[index_pk][index_k])*pow(pnl->k[index_k],3)*anorm; //convert P_k to Delta_k^2 + if (log(pnl->k[index_k])>ppr->logkmax_wiggle+log(pba->h)) pk_wiggle=0; + else if (log(pnl->k[index_k])logkmin_wiggle+log(pba->h)) pk_wiggle=0; + else{ + + class_call(array_interpolate_two_arrays_one_column(pnw->lnk_wiggle_tab, + pnw->Pk_wiggle_tab, + 1, + 0, + ppr->nk_wiggle, + log(pnl->k[index_k]), + &pk_wiggle, + pnl->error_message), + pnl->error_message, pnl->error_message); + + + + pk_wiggle *= growth*growth; // growth factor + pk_wiggle *= pow(pnl->k[index_k],3)*anorm; // P_k to Delta_k^2 + } + for (index_mass=0; index_massk[index_k], + r_virial[index_mass], + conc[index_mass], + &window_nfw), + pnl->error_message, pnl->error_message); + + if (imead==5){ + fg = (Omega0_b/Omega0_m-fstar)/(1+pow(mass[index_mass]/Mb, -2)); //eq 24 in Mead 2009.01858 + window_nfw = window_nfw*(Omega0_c/Omega0_m+fg) + fstar; + // if ((pnl->k[index_k]>9)&&(pvecback[pba->index_bg_a]>0.99)) + // printf("Tagn %le, %le %le %le %le %le %le %le \n\n\n " , pnl->k[index_k], log10(mass[index_mass]), pnl->hmcode2020log10tagn, Omega_b, Omega_m, Omega_c, window_nfw*(Omega_c/Omega_m+fg), fstar); + } + else{ + window_nfw*= (1-fnu); + } + + + + + //get the value of the halo mass function + class_call(nonlinear_hmcode_halomassfunction( + nu_arr[index_mass], + &gst), + pnl->error_message, pnl->error_message); + + p1h_integrand[index_mass*index_ncol+index_nu] = nu_arr[index_mass]; + + p1h_integrand[index_mass*index_ncol+index_y] = mass[index_mass]*gst*pow(window_nfw, 2.); + //if ((tau==pba->conformal_age) && (index_k == 0)) { + //fprintf(stdout, "%d %e %e\n", index_cut, p1h_integrand[index_mass*index_ncol+index_nu], p1h_integrand[index_mass*index_ncol+index_y]); + //} + } + class_call(array_spline(p1h_integrand, + index_ncol, + index_cut, + index_nu, + index_y, + index_ddy, + _SPLINE_EST_DERIV_, + pnl->error_message), + pnl->error_message, + pnl->error_message); + + class_call(array_integrate_all_trapzd_or_spline( + p1h_integrand, + index_ncol, + index_cut, + index_cut-1, //0 or n-1 + index_nu, + index_y, + index_ddy, + &pk_1h, + pnl->error_message), + pnl->error_message, + pnl->error_message); + + + fac = 1/(1+pow(pnl->k[index_k]/k_star,-4)); + + pk_1h = pk_1h*anorm*pow(pnl->k[index_k],3)*(fac)/(rho_crit_today_in_msun_mpc3*Omega0_m); // dimensionless power + + + fdamp = 1-exp(-1*pnl->k[index_k]*pnl->k[index_k]*sigma_disp*sigma_disp); + if (fdamp<1.e-3) fdamp=1.e-3; + if (fdamp>0.99) fdamp=0.99; + if((imead==4)||(imead==5)){ + pk_2h=pk_lin; + } + else{ + + if (fdamp==0){ + pk_2h=pk_lin; + }else{ + pk_2h= pk_lin - fdamp*pk_wiggle; + } + if (pk_2h<0.) pk_2h=0.; + + pk_2h *= 1-f/(1+pow(pnl->k[index_k]/kd, -1*nd)); + } + result[index_k] =pow((pow(pk_1h, alpha) + pow(pk_2h, alpha)), (1./alpha))/pow(pnl->k[index_k],3)/anorm; + + free(p1h_integrand); + } + + // print parameter values + if ((pnl->nonlinear_verbose > 1 ) || pnl->nonlinear_verbose > 3){ + fprintf(stdout, " -> Parameters at redshift z = %e:\n", z_at_tau); + fprintf(stdout, " fnu: %e\n", fnu); + fprintf(stdout, " sigd [Mpc/h]: %e\n", sigma_disp*pba->h); + fprintf(stdout, " sigd100 [Mpc/h]: %e\n", sigma_disp100*pba->h); + fprintf(stdout, " sigma8: %e\n", sigma8); + fprintf(stdout, " sigma8 cc: %e\n", sigma8cc); + fprintf(stdout, " nu min: %e\n", nu_arr[0]); + fprintf(stdout, " nu max: %e\n", nu_arr[ppr->nsteps_for_p1h_integral-1]); + fprintf(stdout, " r_v min [Mpc/h]: %e\n", r_virial[0]*pba->h); + fprintf(stdout, " r_v max [Mpc/h]: %e\n", r_virial[ppr->nsteps_for_p1h_integral-1]*pba->h); + fprintf(stdout, " r_nl [Mpc/h]: %e\n", r_nl*pba->h); + fprintf(stdout, " k_nl [h/Mpc]: %e\n", *k_nl/pba->h); + fprintf(stdout, " sigma_nl: %e\n", sigma_nl/delta_c); + fprintf(stdout, " neff: %e\n", n_eff); + fprintf(stdout, " c min: %e\n", conc[ppr->nsteps_for_p1h_integral-1]); + fprintf(stdout, " c max: %e\n", conc[0]); + fprintf(stdout, " Dv: %e\n", Delta_v); + fprintf(stdout, " dc: %e\n", delta_c); + fprintf(stdout, " g: %e\n", meadgrowth); + fprintf(stdout, " G: %e\n", intgrowth); + fprintf(stdout, " eta: %e\n", eta); + fprintf(stdout, " k*: %e\n", k_star/pba->h); + fprintf(stdout, " Abary: %e\n", pnl->c_min); + fprintf(stdout, " sigma_disp: %e\n", sigma_disp*pba->h); + fprintf(stdout, " alpha: %e\n", alpha); + fprintf(stdout, " kd (h/Mpc): %e\n", kd/pba->h); + fprintf(stdout, " 2halo f: %e\n", f); + fprintf(stdout, " ksize, kmin, kmax: %d, %e, %e\n", pnl->k_size, pnl->k[0]/pba->h, pnl->k[pnl->k_size-1]/pba->h); + } + free(conc); + free(mass); + free(r_real); + free(r_virial); + free(sigma_r); + free(sigmaf_r); + free(nu_arr); + free(pvecback); + return _SUCCESS_; + + + +} + +int nonlinear_hmcode2020( + struct precision *ppr, + struct background *pba, + struct perturbs *ppt, + struct primordial *ppm, + struct nonlinear *pnl, + int index_pk, + int index_tau, + double tau, + double *pk_nl, + double **lnpk_l, + double **ddlnpk_l, + double *k_nl, + short * nl_corr_not_computable_at_this_k, + struct nonlinear_workspace * pnw + ){ + double * result; + int index_k; + class_alloc(result, sizeof(double)*pnl->k_size, + pnl->error_message); + if (pnl->feedback==hmcode2020tagn){ + double * result1, *result2; + class_alloc(result1, sizeof(double)*pnl->k_size, + pnl->error_message); + class_alloc(result2, sizeof(double)*pnl->k_size, + pnl->error_message); + nonlinear_hmcode2020_auxiliary(ppr, pba, ppt, ppm, pnl, index_pk, index_tau, tau, pk_nl, lnpk_l,ddlnpk_l,k_nl,nl_corr_not_computable_at_this_k,pnw,3, result); + nonlinear_hmcode2020_auxiliary(ppr, pba, ppt, ppm, pnl, index_pk, index_tau, tau, pk_nl, lnpk_l,ddlnpk_l,k_nl,nl_corr_not_computable_at_this_k,pnw,4, result1); + nonlinear_hmcode2020_auxiliary(ppr, pba, ppt, ppm, pnl, index_pk, index_tau, tau, pk_nl, lnpk_l,ddlnpk_l,k_nl,nl_corr_not_computable_at_this_k,pnw,5, result2); + + for (index_k = 0; index_k < pnl->k_size; index_k++){ + pk_nl[index_k] = result[index_k]*result2[index_k]/result1[index_k]; + } + free(result1); + free(result2); + } + else{ + nonlinear_hmcode2020_auxiliary(ppr, pba, ppt, ppm, pnl, index_pk, index_tau, tau, pk_nl, lnpk_l,ddlnpk_l,k_nl,nl_corr_not_computable_at_this_k,pnw,3, result); + for (index_k = 0; index_k < pnl->k_size; index_k++){ + pk_nl[index_k] = result[index_k]; + } + } + free(result); + return _SUCCESS_; +} + + + + diff --git a/class/source/nonlinear_hmcode.c b/class/source/nonlinear_hmcode.c new file mode 100644 index 00000000..6ef593dd --- /dev/null +++ b/class/source/nonlinear_hmcode.c @@ -0,0 +1,639 @@ +/** + * Computes the nonlinear correction on the linear power spectrum via + * the method presented in Mead et al. 2009.01858 + * + * @param ppr Input: pointer to precision structure + * @param pba Input: pointer to background structure + * @param ppt Input: pointer to perturbation structure + * @param ppm Input: pointer to primordial structure + * @param pnl Input: pointer to nonlinear structure + * @param index_pk Input: index of the pk type, either index_m or index_cb + * @param index_tau Input: index of tau, at which to compute the nl correction + * @param tau Input: tau, at which to compute the nl correction + * @param pk_nl Output:nonlinear power spectrum + * @param lnpk_l Input: logarithm of the linear power spectrum for both index_m and index_cb + * @param ddlnpk_l Input: spline of the logarithm of the linear power spectrum for both index_m and index_cb + * @param nl_corr_not_computable_at_this_k Ouput: was the computation doable? + * @param k_nl Output: nonlinear scale for index_m and index_cb + * @param pnw Input/Output: pointer to nonlinear workspace + * @return the error status + */ + +int nonlinear_hmcode2020( + struct precision *ppr, + struct background *pba, + struct perturbs *ppt, + struct primordial *ppm, + struct nonlinear *pnl, + int index_pk, + int index_tau, + double tau, + double *pk_nl, + double **lnpk_l, + double **ddlnpk_l, + double *k_nl, + short * nl_corr_not_computable_at_this_k, + struct nonlinear_workspace * pnw + ) { + /* integers */ + int index_mass, i, ng, nsig; + int index_k, index_ncol; + int last_index=0; + int index_pk_cb; + int counter, index_nl; + + int index_nu, index_cut; + int index_y; + int index_ddy; + + /* Background parameters */ + double Omega_m,fnu,Omega0_m Omega0_b,Omega0_c; + double z_at_tau; + double rho_crit_today_in_msun_mpc3; + double growth; + double intgrowth; + double anorm; + + /* temporary numbers */ + double m, r, nu, sig, sigf; + double diff, r1, r2; + + /* HMcode parameters */ + double mmin, mmax, nu_min; + double dark_energy_correction; + + double sigma_disp, sigma_disp100, sigma8, sigma8cc; + double delta_c, Delta_v; + double fraction; + + double sigma_nl, nu_nl, r_nl; + double sigma_prime; + double dlnsigdlnR; + double n_eff; + double alpha; + + double z_form, g_form; + + double eta; + double gst, window_nfw; + double nu_cut; + double fac, k_star, fdamp, nd, f, kd; + double pk_lin, pk_2h, pk_1h, pk_wiggle; + + /* data fields */ + double * pvecback; + double * conc; + double * mass; + double * sigma_r; + double * sigmaf_r; + double * r_virial; + double * r_real; + double * nu_arr; + + double * p1h_integrand; + + + /** include precision parameters that control the number of entries in the growth and sigma tables */ + ng = ppr->n_hmcode_tables; + nsig = ppr->n_hmcode_tables; + + /** Compute background quantitites today */ + + Omega0_m = pba->Omega0_m; + Omega0_b = pba->Omega0_b; + Omega0_c = pba->Omega0_cdm; + fnu = pba->Omega0_ncdm_tot/Omega0_m; + + /** If index_pk_cb, choose Omega0_cb as the matter density parameter. + * If index_pk_m, choose Omega0_cbn as the matter density parameter. */ + if (index_pk==pnl->index_pk_cb){ + Omega0_m = Omega0_m - pba->Omega0_ncdm_tot; + } + + anorm = 1./(2*pow(_PI_,2)); + + /** Call all the relevant background parameters at this tau */ + class_alloc(pvecback,pba->bg_size*sizeof(double),pnl->error_message); + + class_call(background_at_tau(pba,tau,pba->long_info,pba->inter_normal,&last_index,pvecback), + pba->error_message, + pnl->error_message); + + Omega_m = pvecback[pba->index_bg_Omega_m];//TBC (i.e. check if for P_cb here we should use Omega_cb) here the total time varying Omega_m is used for delta_c and for Delta_v according to the Mead fit of the Massara simulations. + + growth = pvecback[pba->index_bg_D]; + + z_at_tau = 1./pvecback[pba->index_bg_a]-1.; + class_call(array_interpolate_two_arrays_one_column(pnw->ztable, + pnw->intgrowtable, + 1, + 0, + z_at_tau, + &intgrowth, + pnl->error_message), + pnl->error_message, pnl->error_message); + + + + if (pnl->feedback==hmcode2020tagn){ + double theta_tagn = pnl->hmcode2020log10tagn-7.8; + double B_0 = 3.44-0.496 * theta_tagn; + double B_z = -0.0671-0.0371 * theta_tagn; + pnl->c_min = B_0*pow(10, z_at_tau*B_z); + double fstar = (0.01*(2.01-0.030*theta_tagn))*pow(10, z_at_tau*(0.409+0.0224*theta_tagn)); + if(ftar>Omega0_b/Omega0_m) ftar = Omega0_b/Omega0_m; + double Mb = pow(10, 13.87+1.81*theta_tagn+z_at_tau*(-0.108+0.195*theta_tagn))/pba->h; // unit Msun + + } + else{ + pnl->c_min = 5.196; + } + + + + + /* The number below is the critical density today, rho_c = 3 * H0^2 / 8*pi*G, in units of M_sun over Mpc^3 */ + rho_crit_today_in_msun_mpc3 = 3.*pow(1.e5*pba->h, 2)/8./_PI_/_G_*_Mpc_over_m_/_M_SUN_; + + free(pvecback); + + /** Test whether pk_cb has to be taken into account (only if we have massive neutrinos)*/ + if (pba->has_ncdm==_TRUE_){ + index_pk_cb = pnl->index_pk_cb; + } + else { + index_pk_cb = index_pk; + } + + + /** Get sigma(R=8 Mpc/h), sigma_disp(R=0), sigma_disp(R=100 Mpc/h) and write them into pnl structure */ + + class_call(nonlinear_sigmas(pnl, + 8./pba->h, + lnpk_l[index_pk],ddlnpk_l[index_pk], + pnl->k_size_extra, + ppr->sigma_k_per_decade, + out_sigma, + &sigma8), + pnl->error_message, + pnl->error_message); + + class_call(nonlinear_sigmas(pnl, + 8./pba->h, + lnpk_l[index_pk_cb],ddlnpk_l[index_pk_cb], + pnl->k_size_extra, + ppr->sigma_k_per_decade, + out_sigma, + &sigma8cc), + pnl->error_message, pnl->error_message); + + + class_call(nonlinear_sigmas(pnl, + 0., + lnpk_l[index_pk],ddlnpk_l[index_pk], + pnl->k_size_extra, + ppr->sigma_k_per_decade, + out_sigma_disp, + &sigma_disp), + pnl->error_message, + pnl->error_message); + + class_call(nonlinear_sigmas(pnl, + 100./pba->h, + lnpk_l[index_pk],ddlnpk_l[index_pk], + pnl->k_size_extra, + ppr->sigma_k_per_decade, + out_sigma_disp, + &sigma_disp100), + pnl->error_message, + pnl->error_message); + + pnw->sigma_8[index_pk][index_tau] = sigma8; + pnw->sigma_disp[index_pk][index_tau] = sigma_disp; + pnw->sigma_disp_100[index_pk][index_tau] = sigma_disp100; + + /** Initialisation steps for the 1-Halo Power Integral */ + mmin=ppr->mmin_for_p1h_integral/pba->h; //Minimum mass for integration; (unit conversion from m[Msun/h] to m[Msun] ) + mmax=ppr->mmax_for_p1h_integral/pba->h; //Maximum mass for integration; + + class_alloc(mass,ppr->nsteps_for_p1h_integral*sizeof(double),pnl->error_message); + class_alloc(r_real,ppr->nsteps_for_p1h_integral*sizeof(double),pnl->error_message); + class_alloc(r_virial,ppr->nsteps_for_p1h_integral*sizeof(double),pnl->error_message); + class_alloc(sigma_r,ppr->nsteps_for_p1h_integral*sizeof(double),pnl->error_message); + class_alloc(sigmaf_r,ppr->nsteps_for_p1h_integral*sizeof(double),pnl->error_message); + class_alloc(nu_arr,ppr->nsteps_for_p1h_integral*sizeof(double),pnl->error_message); + + // Linear theory density perturbation threshold for spherical collapse + //delta_c = 1.59+0.0314*log(sigma8); //Mead et al. (2015; arXiv 1505.07833) + //delta_c = delta_c*(1.+0.0123*log10(Omega_m)); //Nakamura & Suto (1997) fitting formula for LCDM models (as in Mead 2016) + //delta_c = delta_c*(1.+0.262*fnu); //Mead et al. (2016; arXiv 1602.02154) neutrino addition + delta_c = dc_Mead(pvecback[pba->index_bg_a], Omega_m, fnu, growth, intgrowth); // Mead et al. (2017; arXiv 1606.05345) + + // virialized overdensity + //Delta_v=418.*pow(Omega_m, -0.352); //Mead et al. (2015; arXiv 1505.07833) + //Delta_v=Delta_v*(1.+0.916*fnu); //Mead et al. (2016; arXiv 1602.02154) neutrino addition + Delta_v= Dv_Mead(pvecback[pba->index_bg_a], Omega_m, fnu, growth, intgrowt); + + // mass or radius fraction respectively + fraction = pow(0.01, 1./3.); + + /* Fill the arrays needed for the P1H Integral: mass, r_real, r_virial, nu_arr, sigma_r, sigmaf_r + * The P1H Integral is an integral over nu=delta_c/sigma(M), where M is connected to R via R=(3M)/(4*pi*rho_m). + * The Integrand is M*Window^2{nu(M)*k, Rv(M), c(M)}*f(nu) with the window being the fouriertransformed + * NFW profile, Rv = R/Delta_v^(1/3) and Sheth-Thormen halo mass function f. + * The halo concentration-mass-relation c(M) will be found later. */ + + for (index_mass=0;index_massnsteps_for_p1h_integral;index_mass++){ + + m = exp(log(mmin)+log(mmax/mmin)*(index_mass)/(ppr->nsteps_for_p1h_integral-1)); + r = pow((3.*m/(4.*_PI_*rho_crit_today_in_msun_mpc3*Omega0_m)), (1./3.)); + mass[index_mass] = m; + r_real[index_mass] = r; + r_virial[index_mass] = r_real[index_mass]/pow(Delta_v, 1./3.); + + class_call(array_interpolate_spline(pnw->rtab, + nsig, + pnw->stab, + pnw->ddstab, + 1, + r, + &last_index, + &sig, + 1, + pnl->error_message), + pnl->error_message, pnl->error_message); + + class_call(array_interpolate_spline(pnw->rtab, + nsig, + pnw->stab, + pnw->ddstab, + 1, + r*fraction, + &last_index, + &sigf, + 1, + pnl->error_message), + pnl->error_message, pnl->error_message); + + nu=delta_c/sig; + sigma_r[index_mass] = sig; + sigmaf_r[index_mass] = sigf; + nu_arr[index_mass] = nu; + } + + /** find nonlinear scales k_nl and r_nl and the effective spectral index n_eff */ + nu_nl = 1.; + nu_min = nu_arr[0]; + + /* stop calculating the nonlinear correction if the nonlinear scale is not reached in the table: */ + if (nu_min > nu_nl) { + if (pnl->nonlinear_verbose>0) fprintf(stdout, " -> [WARNING:] the minimum mass in the mass-table is too large to find the nonlinear scale at this redshift.\n Decrease mmin_for_p1h_integral\n"); + * nl_corr_not_computable_at_this_k = _TRUE_; + free(mass); + free(r_real); + free(r_virial); + free(sigma_r); + free(sigmaf_r); + free(nu_arr); + return _SUCCESS_; + } + + /* make a first guess for the nonlinear scale */ + class_call(array_interpolate_two_arrays_one_column( + nu_arr, + r_real, + 1, + 0, + ppr->nsteps_for_p1h_integral, + nu_nl, + &r_nl, + pnl->error_message), + pnl->error_message, pnl->error_message); + + class_call(array_search_bisect(ppr->nsteps_for_p1h_integral,nu_arr,nu_nl,&index_nl,pnl->error_message), pnl->error_message, pnl->error_message); + + r1 = r_real[index_nl-1]; + r2 = r_real[index_nl+2]; + + /* // for debugging: (if it happens that r_nl is not between r1 and r2, which should never be the case) + fprintf(stdout, "%e %e %e %e\n", r1, nu_arr[index_nl-1], r2, nu_arr[index_nl+2]); + */ + + /* do bisectional iteration between r1 and r2 to find the precise value of r_nl */ + counter = 0; + do { + r_nl = (r1+r2)/2.; + counter ++; + + class_call(nonlinear_sigmas(pnl, + r_nl, + lnpk_l[index_pk_cb],ddlnpk_l[index_pk_cb], + pnl->k_size_extra, + ppr->sigma_k_per_decade, + out_sigma, + &sigma_nl), + pnl->error_message, pnl->error_message); + + diff = sigma_nl - delta_c; + + if (diff > ppr->hmcode_tol_sigma){ + r1=r_nl; + } + else if (diff < -ppr->hmcode_tol_sigma) { + r2 = r_nl; + } + + class_test(counter > _MAX_IT_, + pnl->error_message, + "could not converge within maximum allowed number of iterations"); + + } while (fabs(diff) > ppr->hmcode_tol_sigma); + + if (pnl->nonlinear_verbose>5){ + fprintf(stdout, "number of iterations for r_nl at z = %e: %d\n", z_at_tau, counter); + } + *k_nl = 1./r_nl; + + if (*k_nl > pnl->k[pnl->k_size-1]) { + * nl_corr_not_computable_at_this_k = _TRUE_; + free(mass); + free(r_real); + free(r_virial); + free(sigma_r); + free(sigmaf_r); + free(nu_arr); + return _SUCCESS_; + } + else { + * nl_corr_not_computable_at_this_k = _FALSE_; + } + + /* call sigma_prime function at r_nl to find the effective spectral index n_eff */ + + class_call(nonlinear_sigmas(pnl, + r_nl, + lnpk_l[index_pk_cb],ddlnpk_l[index_pk_cb], + pnl->k_size_extra, + ppr->sigma_k_per_decade, + out_sigma_prime, + &sigma_prime), + pnl->error_message, + pnl->error_message); + + dlnsigdlnR = r_nl*pow(sigma_nl, -2)*sigma_prime; + n_eff = -3.- dlnsigdlnR; + alpha = 1.875* pow(1.603, n_eff); + pnw->sigma_prime[index_pk][index_tau] = sigma_prime; + + + /** Compute the nonlinear correction */ + eta = 0.1281*pow(sigma8cc, -0.3644);; // halo bloating parameter table 2 of 2009.01858 (Mead) + k_star = 0.05618*pow(sigma8cc, -1.013); //table 2 of 2009.01858 (Mead) + nd = 2.853; + kd = 0.05699*pow(sigma8cc, -1.089); + f = 0.2696*pow(sigma8cc, 0.9403); + + + + /** Calculate halo concentration-mass relation conc(mass) (Bullock et al. 2001) */ + class_alloc(conc,ppr->nsteps_for_p1h_integral*sizeof(double),pnl->error_message); + + for (index_mass=0;index_massnsteps_for_p1h_integral;index_mass++){ + //find growth rate at formation + g_form = delta_c*growth/sigmaf_r[index_mass]; + if (g_form > 1.) g_form = 1.; + + // + class_call(array_interpolate_two_arrays_one_column( + pnw->growtable, + pnw->ztable, + 1, + 0, + ng, + g_form, + &z_form, + pnl->error_message), + pnl->error_message, pnl->error_message); + if (z_form < z_at_tau){ + conc[index_mass] = pnl->c_min; + } else { + + class_call(array_interpolate_two_arrays_one_column( + pnw->ztable, + pnw->dark_energy_correction_hmcode2020_table, + 1, + 0, + ng, + z_at_tau, + &dark_energy_correction, + pnl->error_message), + + + + + + + conc[index_mass] = pnl->c_min*(1.+z_form)/(1.+z_at_tau)*dark_energy_correction; + } + } + + + + // growth factor + + /* the 1h integral contains the halo mass function proportional to exp(-nu^2). + * To save time, the integration loop cuts, when nu exceeds a large value, + * where the integrand is 0 anyhow. This cut index is found here. */ + nu_cut = 10.; + if (nu_cut < nu_arr[ppr->nsteps_for_p1h_integral-1]){ + class_call(array_search_bisect(ppr->nsteps_for_p1h_integral,nu_arr,nu_cut,&index_cut,pnl->error_message), pnl->error_message, pnl->error_message); + } + else { + index_cut = ppr->nsteps_for_p1h_integral; + } + + i=0; + index_nu=i; + i++; + index_y=i; + i++; + index_ddy=i; + i++; + index_ncol=i; + + for (index_k = 0; index_k < pnl->k_size; index_k++){ + + class_alloc(p1h_integrand,index_cut*index_ncol*sizeof(double),pnl->error_message); + + pk_lin = exp(lnpk_l[index_pk][index_k])*pow(pnl->k[index_k],3)*anorm; //convert P_k to Delta_k^2 + + class_call(array_interpolate_two_arrays_one_column(pnw->lnk_wiggle_tab, + pnw->Pk_wiggle_tab, + 1, + 0, + log(pnl->k[index_k]), + &pk_wiggle, + pnl->error_message), + pnl->error_message, pnl->error_message); + + + + + pk_wiggle *= growth*growth; // growth factor + pk_wiggle *= pow(pnl->k[index_k],3)*anorm; // P_k to Delta_k^2 + + for (index_mass=0; index_massk[index_k], + r_virial[index_mass], + conc[index_mass], + &window_nfw), + pnl->error_message, pnl->error_message); + + if (pnl->feedback==hmcode2020tagn){ + fg = (Omega0_b/Omega0_m-fstar)/(1+pow(mass[index_mass]/Mb, -2)); //eq 24 in Mead 2009.01858 + window_nfw = window_nfw*(Omega0_c/Omega0_m+fg) + fstar; + } + + + + + //get the value of the halo mass function + class_call(nonlinear_hmcode_halomassfunction( + nu_arr[index_mass], + &gst), + pnl->error_message, pnl->error_message); + + p1h_integrand[index_mass*index_ncol+index_nu] = nu_arr[index_mass]; + + p1h_integrand[index_mass*index_ncol+index_y] = mass[index_mass]*gst*pow(window_nfw, 2.); + //if ((tau==pba->conformal_age) && (index_k == 0)) { + //fprintf(stdout, "%d %e %e\n", index_cut, p1h_integrand[index_mass*index_ncol+index_nu], p1h_integrand[index_mass*index_ncol+index_y]); + //} + } + class_call(array_spline(p1h_integrand, + index_ncol, + index_cut, + index_nu, + index_y, + index_ddy, + _SPLINE_EST_DERIV_, + pnl->error_message), + pnl->error_message, + pnl->error_message); + + class_call(array_integrate_all_trapzd_or_spline( + p1h_integrand, + index_ncol, + index_cut, + index_cut-1, //0 or n-1 + index_nu, + index_y, + index_ddy, + &pk_1h, + pnl->error_message), + pnl->error_message, + pnl->error_message); + + + fac = 1/(1+pow(pnl->k[index_k]/k_star,-4)); + + pk_1h = pk_1h*anorm*pow(pnl->k[index_k],3)*(fac)/(rho_crit_today_in_msun_mpc3*Omega0_m); // dimensionless power + + + fdamp = exp(-1*pnl->k[index_k]*pnl->k[index_k]*sigma_disp*sigma_disp)-1; + if (fdamp<1.e-3) fdamp=1.e-3; + if (fdamp>0.99) fdamp=0.99; + + if (fdamp==0){ + pk_2h=pk_lin; + }else{ + pk_2h= pk_lin + fdamp*pk_wiggle; + } + if (pk_2h<0.) pk_2h=0.; + + pk_2h *= 1-f/(1+pow(pnl->k[index_k]/kd, -1*nd)); + + + pk_nl[index_k] = pow((pow(pk_1h, alpha) + pow(pk_2h, alpha)), (1./alpha))/pow(pnl->k[index_k],3)/anorm; //converted back to P_k + + free(p1h_integrand); + } + + // print parameter values + if ((pnl->nonlinear_verbose > 1 && tau==pba->conformal_age) || pnl->nonlinear_verbose > 3){ + fprintf(stdout, " -> Parameters at redshift z = %e:\n", z_at_tau); + fprintf(stdout, " fnu: %e\n", fnu); + fprintf(stdout, " sigd [Mpc/h]: %e\n", sigma_disp*pba->h); + fprintf(stdout, " sigd100 [Mpc/h]: %e\n", sigma_disp100*pba->h); + fprintf(stdout, " sigma8: %e\n", sigma8); + fprintf(stdout, " nu min: %e\n", nu_arr[0]); + fprintf(stdout, " nu max: %e\n", nu_arr[ppr->nsteps_for_p1h_integral-1]); + fprintf(stdout, " r_v min [Mpc/h]: %e\n", r_virial[0]*pba->h); + fprintf(stdout, " r_v max [Mpc/h]: %e\n", r_virial[ppr->nsteps_for_p1h_integral-1]*pba->h); + fprintf(stdout, " r_nl [Mpc/h]: %e\n", r_nl*pba->h); + fprintf(stdout, " k_nl [h/Mpc]: %e\n", *k_nl/pba->h); + fprintf(stdout, " sigma_nl: %e\n", sigma_nl/delta_c); + fprintf(stdout, " neff: %e\n", n_eff); + fprintf(stdout, " c min: %e\n", conc[ppr->nsteps_for_p1h_integral-1]); + fprintf(stdout, " c max: %e\n", conc[0]); + fprintf(stdout, " Dv: %e\n", Delta_v); + fprintf(stdout, " dc: %e\n", delta_c); + fprintf(stdout, " eta: %e\n", eta); + fprintf(stdout, " k*: %e\n", k_star/pba->h); + fprintf(stdout, " Abary: %e\n", pnl->c_min); + fprintf(stdout, " fdamp: %e\n", fdamp); + fprintf(stdout, " alpha: %e\n", alpha); + fprintf(stdout, " ksize, kmin, kmax: %d, %e, %e\n", pnl->k_size, pnl->k[0]/pba->h, pnl->k[pnl->k_size-1]/pba->h); + } + free(conc); + free(mass); + free(r_real); + free(r_virial); + free(sigma_r); + free(sigmaf_r); + free(nu_arr); + + return _SUCCESS_; +} + +double _f_Mead(double x, double y, double p10, double p11, double p12, double p13) { + return p10 + p11 * x + p12 * x * x + p13 * y; +} + +double dc_Mead(double a, double Om_m, double f_nu, double g, double G) { + double p10 = -0.0069, p11 = -0.0208, p12 = 0.0312, p13 = 0.0021; + double p20 = 0.0001, p21 = -0.0647, p22 = -0.0417, p23 = 0.0646; + double a1 = 1; + double dc0 = 1; + double dc_Mead = dc0 * (1. + log10(Om_m) * a1 * _f_Mead(g/a, G/a, p10, p11, p12, p13) + _f_Mead(g/a, G/a, p20, p21, p22, p23)) * (1. - 0.041 * f_nu); + return dc_Mead; +} + +double Dv_Mead(double a, double Om_m, double f_nu, double g, double G) { + /* + Delta_v fitting function from Mead (2017; 1606.05345) + All input parameters should be evaluated as functions of a/z + */ + // See Appendix A of Mead (2017) for naming convention + double p30 = -0.79, p31 = -10.17, p32 = 2.51, p33 = 6.51; + double p40 = -1.89, p41 = 0.38, p42 = 18.8, p43 = -15.87; + double a3 = 1, a4 = 2; + double Dv0 = 18.0 * pow(Om_m, 0.45); + + // Halo virial overdensity + double Dv = 1.0; + Dv = Dv + _f_Mead(g / a, G / a, p30, p31, p32, p33) * log10(Om_m) * a3; + Dv = Dv + _f_Mead(g / a, G / a, p40, p41, p42, p43) * log10(Om_m) * a4; + Dv = Dv * Dv0 * (1.0 + 0.763 * f_nu); + return Dv; +} + + + + + + + diff --git a/class/source/output.c b/class/source/output.c old mode 100644 new mode 100755 index 779c0bde..24f7408d --- a/class/source/output.c +++ b/class/source/output.c @@ -144,14 +144,16 @@ int output_init( if (ppt->has_pk_matter == _TRUE_) { - class_call(output_pk(pba,ppt,psp,pop), + class_call(output_pk(pba,ppt,pnl,pop,pk_linear), pop->error_message, pop->error_message); if (pnl->method != nl_none) { - class_call(output_pk_nl(pba,ppt,psp,pop), - pop->error_message, - pop->error_message); + + class_call(output_pk(pba,ppt,pnl,pop,pk_nonlinear), + pop->error_message, + pop->error_message); + } } @@ -159,9 +161,10 @@ int output_init( if ((ppt->has_density_transfers == _TRUE_) || (ppt->has_velocity_transfers == _TRUE_)) { - class_call(output_tk(pba,ppt,psp,pop), + class_call(output_tk(pba,ppt,pop), pop->error_message, pop->error_message); + } /** - deal with background quantities */ @@ -590,434 +593,296 @@ int output_cl( } /** - * This routines writes the output in files for Fourier matter power spectra P(k)'s. + * This routines writes the output in files for Fourier matter power spectra P(k)'s + * (linear or non-linear) * - * @param pba Input: pointer to background structure (needed for calling spectra_pk_at_z()) - * @param ppt Input: pointer perturbation structure - * @param psp Input: pointer to spectra structure - * @param pop Input: pointer to output structure + * @param pba Input: pointer to background structure (needed for calling spectra_pk_at_z()) + * @param ppt Input: pointer perturbation structure + * @param pnl Input: pointer to nonlinear structure + * @param pop Input: pointer to output structure + * @param pk_output Input: pk_linear or pk_nonlinear */ int output_pk( struct background * pba, struct perturbs * ppt, - struct spectra * psp, - struct output * pop + struct nonlinear * pnl, + struct output * pop, + enum pk_outputs pk_output ) { /** Summary: */ /** - define local variables */ - FILE ** out_ic=NULL; /* array of pointers to files with argument - out_ic[index_ic1_ic2] - (will contain P(k)'s for each pair of initial conditions) */ - - FILE * out; /* (will contain total P(k) summed eventually over initial conditions) */ + FILE ** out_pk_ic = NULL; /* out_pk_ic[index_ic1_ic2] is a pointer to a file with P(k) for each pair of ic */ + FILE * out_pk; /* out_pk[index_pk] is a pointer to a file with total P(k) summed over ic */ - double * pk_ic=NULL; /* array with argument - pk_ic[index_k * psp->ic_ic_size[index_md] + index_ic1_ic2] */ + double * ln_pk_ic = NULL; /* array ln_pk_ic[index_k * pnl->ic_ic_size + index_ic1_ic2] */ + double * ln_pk; /* array ln_pk[index_k] */ - double * pk_tot; /* array with argument - pk_tot[index_k] */ - - int index_md; int index_ic1,index_ic2; int index_ic1_ic2=0; int index_k; int index_z; + int index_pk; FileName file_name; - FileName redshift_suffix; - char first_line[_LINE_LENGTH_MAX_]; - index_md=ppt->index_md_scalars; + char redshift_suffix[7]; // 7 is enough to write "z%d_" as long as there are at most 10'000 bins + char type_suffix[9]; // 6 is enough to write "pk_cb_nl" plus closing character \0 + char first_line[_LINE_LENGTH_MAX_]; + short do_ic = _FALSE_; - for (index_z = 0; index_z < pop->z_pk_num; index_z++) { + /** - preliminary: check whether we need to output the decomposition into contributions from each initial condition */ - /** - first, check that requested redshift z_pk is consistent */ + if ((pk_output == pk_linear) && (pnl->ic_size > 1)) + do_ic = _TRUE_; - class_test((pop->z_pk[index_z] > psp->z_max_pk), - pop->error_message, - "P(k,z) computed up to z=%f but requested at z=%f. Must increase z_max_pk in precision file.",psp->z_max_pk,pop->z_pk[index_z]); - - if (pop->z_pk_num == 1) - redshift_suffix[0]='\0'; - else - sprintf(redshift_suffix,"z%d_",index_z+1); + /** - allocate arrays to store the P(k) */ - /** - second, open only the relevant files and write a heading in each of them */ - - sprintf(file_name,"%s%s%s",pop->root,redshift_suffix,"pk.dat"); + class_alloc(ln_pk, + pnl->k_size*sizeof(double), + pop->error_message); - class_call(output_open_pk_file(pba, - psp, - pop, - &out, - file_name, - "", - pop->z_pk[index_z] - ), - pop->error_message, - pop->error_message); + if (do_ic == _TRUE_) { - class_alloc(pk_tot, - psp->ln_k_size*sizeof(double), + class_alloc(ln_pk_ic, + pnl->k_size*pnl->ic_ic_size*sizeof(double), pop->error_message); - if (psp->ic_size[index_md] > 1) { - - class_alloc(out_ic, - psp->ic_ic_size[index_md]*sizeof(FILE *), - pop->error_message); - - class_alloc(pk_ic, - psp->ln_k_size*psp->ic_ic_size[index_md]*sizeof(double), - pop->error_message); - - for (index_ic1 = 0; index_ic1 < ppt->ic_size[index_md]; index_ic1++) { - - for (index_ic2 = index_ic1; index_ic2 < ppt->ic_size[index_md]; index_ic2++) { - - if ((ppt->has_ad == _TRUE_) && - (index_ic1 == ppt->index_ic_ad) && (index_ic2 == ppt->index_ic_ad)) { + /** - allocate pointer to output files */ - sprintf(file_name,"%s%s%s",pop->root,redshift_suffix,"pk_ad.dat"); - strcpy(first_line,"for adiabatic (AD) mode "); - } - - if ((ppt->has_bi == _TRUE_) && - (index_ic1 == ppt->index_ic_bi) && (index_ic2 == ppt->index_ic_bi)) { - - sprintf(file_name,"%s%s%s",pop->root,redshift_suffix,"pk_bi.dat"); - strcpy(first_line,"for baryon isocurvature (BI) mode "); - } - - if ((ppt->has_cdi == _TRUE_) && - (index_ic1 == ppt->index_ic_cdi) && (index_ic2 == ppt->index_ic_cdi)) { - - sprintf(file_name,"%s%s%s",pop->root,redshift_suffix,"pk_cdi.dat"); - strcpy(first_line,"for CDM isocurvature (CDI) mode "); - } + class_alloc(out_pk_ic, + pnl->ic_ic_size*sizeof(FILE *), + pop->error_message); + } - if ((ppt->has_nid == _TRUE_) && - (index_ic1 == ppt->index_ic_nid) && (index_ic2 == ppt->index_ic_nid)) { + /** - loop over pk type (_cb, _m) */ - sprintf(file_name,"%s%s%s",pop->root,redshift_suffix,"pk_nid.dat"); - strcpy(first_line,"for neutrino density isocurvature (NID) mode "); - } + for (index_pk=0; index_pkpk_size; index_pk++) { - if ((ppt->has_niv == _TRUE_) && - (index_ic1 == ppt->index_ic_niv) && (index_ic2 == ppt->index_ic_niv)) { + if ((pnl->has_pk_m == _TRUE_) && (index_pk == pnl->index_pk_m)) { + if (pk_output == pk_linear) + sprintf(type_suffix,"pk"); + else + sprintf(type_suffix,"pk_nl"); + } + if ((pnl->has_pk_cb == _TRUE_) && (index_pk == pnl->index_pk_cb)) { + if (pk_output == pk_linear) + sprintf(type_suffix,"pk_cb"); + else + sprintf(type_suffix,"pk_cb_nl"); + } - sprintf(file_name,"%s%s%s",pop->root,redshift_suffix,"pk_niv.dat"); - strcpy(first_line,"for neutrino velocity isocurvature (NIV) mode "); - } + /** - loop over z */ - if ((ppt->has_ad == _TRUE_) && - (ppt->has_bi == _TRUE_) && (index_ic1 == ppt->index_ic_ad) && (index_ic2 == ppt->index_ic_bi)) { + for (index_z = 0; index_z < pop->z_pk_num; index_z++) { - sprintf(file_name,"%s%s%s",pop->root,redshift_suffix,"pk_ad_bi.dat"); - strcpy(first_line,"for cross ADxBI mode "); - } + /** - first, check that requested redshift z_pk is consistent */ - if ((ppt->has_ad == _TRUE_) && (ppt->has_cdi == _TRUE_) && - (index_ic1 == ppt->index_ic_ad) && (index_ic2 == ppt->index_ic_cdi)) { + class_test((pop->z_pk[index_z] > ppt->z_max_pk), + pop->error_message, + "P(k,z) computed up to z=%f but requested at z=%f. Must increase z_max_pk in precision file.",ppt->z_max_pk,pop->z_pk[index_z]); - sprintf(file_name,"%s%s%s",pop->root,redshift_suffix,"pk_ad_cdi.dat"); - strcpy(first_line,"for cross ADxCDI mode "); - } + if (pop->z_pk_num == 1) + redshift_suffix[0]='\0'; + else + sprintf(redshift_suffix,"z%d_",index_z+1); - if ((ppt->has_ad == _TRUE_) && (ppt->has_nid == _TRUE_) && - (index_ic1 == ppt->index_ic_ad) && (index_ic2 == ppt->index_ic_nid)) { + /** - second, open only the relevant files and write a header in each of them */ - sprintf(file_name,"%s%s%s",pop->root,redshift_suffix,"pk_ad_nid.dat"); - strcpy(first_line,"for scalar cross ADxNID mode "); - } + sprintf(file_name,"%s%s%s%s",pop->root,redshift_suffix,type_suffix,".dat"); - if ((ppt->has_ad == _TRUE_) && (ppt->has_niv == _TRUE_) && - (index_ic1 == ppt->index_ic_ad) && (index_ic2 == ppt->index_ic_niv)) { + class_call(output_open_pk_file(pba, + pnl, + pop, + &out_pk, + file_name, + "", + pop->z_pk[index_z] + ), + pop->error_message, + pop->error_message); - sprintf(file_name,"%s%s%s",pop->root,redshift_suffix,"pk_ad_niv.dat"); - strcpy(first_line,"for cross ADxNIV mode "); - } + if (do_ic == _TRUE_) { - if ((ppt->has_bi == _TRUE_) && (ppt->has_cdi == _TRUE_) && - (index_ic1 == ppt->index_ic_bi) && (index_ic2 == ppt->index_ic_cdi)) { + for (index_ic1 = 0; index_ic1 < pnl->ic_size; index_ic1++) { - sprintf(file_name,"%s%s%s",pop->root,redshift_suffix,"pk_bi_cdi.dat"); - strcpy(first_line,"for cross BIxCDI mode "); - } + for (index_ic2 = index_ic1; index_ic2 < pnl->ic_size; index_ic2++) { - if ((ppt->has_bi == _TRUE_) && (ppt->has_nid == _TRUE_) && - (index_ic1 == ppt->index_ic_bi) && (index_ic2 == ppt->index_ic_nid)) { + if ((ppt->has_ad == _TRUE_) && (index_ic1 == ppt->index_ic_ad) && (index_ic2 == ppt->index_ic_ad)) { + sprintf(file_name,"%s%s%s%s",pop->root,redshift_suffix,type_suffix,"_ad.dat"); + strcpy(first_line,"for adiabatic (AD) mode "); + } - sprintf(file_name,"%s%s%s",pop->root,redshift_suffix,"pk_bi_nid.dat"); - strcpy(first_line,"for cross BIxNID mode "); - } + if ((ppt->has_bi == _TRUE_) && (index_ic1 == ppt->index_ic_bi) && (index_ic2 == ppt->index_ic_bi)) { + sprintf(file_name,"%s%s%s%s",pop->root,redshift_suffix,type_suffix,"_bi.dat"); + strcpy(first_line,"for baryon isocurvature (BI) mode "); + } - if ((ppt->has_bi == _TRUE_) && (ppt->has_niv == _TRUE_) && - (index_ic1 == ppt->index_ic_bi) && (index_ic2 == ppt->index_ic_niv)) { + if ((ppt->has_cdi == _TRUE_) && (index_ic1 == ppt->index_ic_cdi) && (index_ic2 == ppt->index_ic_cdi)) { + sprintf(file_name,"%s%s%s%s",pop->root,redshift_suffix,type_suffix,"_cdi.dat"); + strcpy(first_line,"for CDM isocurvature (CDI) mode "); + } - sprintf(file_name,"%s%s%s",pop->root,redshift_suffix,"pk_bi_niv.dat"); - strcpy(first_line,"for cross BIxNIV mode "); - } + if ((ppt->has_nid == _TRUE_) && (index_ic1 == ppt->index_ic_nid) && (index_ic2 == ppt->index_ic_nid)) { + sprintf(file_name,"%s%s%s%s",pop->root,redshift_suffix,type_suffix,"_nid.dat"); + strcpy(first_line,"for neutrino density isocurvature (NID) mode "); + } - if ((ppt->has_cdi == _TRUE_) && (ppt->has_nid == _TRUE_) && - (index_ic1 == ppt->index_ic_cdi) && (index_ic2 == ppt->index_ic_nid)) { + if ((ppt->has_niv == _TRUE_) && (index_ic1 == ppt->index_ic_niv) && (index_ic2 == ppt->index_ic_niv)) { + sprintf(file_name,"%s%s%s%s",pop->root,redshift_suffix,type_suffix,"_niv.dat"); + strcpy(first_line,"for neutrino velocity isocurvature (NIV) mode "); + } - sprintf(file_name,"%s%s%s",pop->root,redshift_suffix,"pk_cdi_nid.dat"); - strcpy(first_line,"for cross CDIxNID mode "); - } + if ((ppt->has_ad == _TRUE_) && (ppt->has_bi == _TRUE_) && (index_ic1 == ppt->index_ic_ad) && (index_ic2 == ppt->index_ic_bi)) { + sprintf(file_name,"%s%s%s%s",pop->root,redshift_suffix,type_suffix,"_ad_bi.dat"); + strcpy(first_line,"for cross ADxBI mode "); + } - if ((ppt->has_cdi == _TRUE_) && (ppt->has_niv == _TRUE_) && - (index_ic1 == ppt->index_ic_cdi) && (index_ic2 == ppt->index_ic_niv)) { + if ((ppt->has_ad == _TRUE_) && (ppt->has_cdi == _TRUE_) && (index_ic1 == ppt->index_ic_ad) && (index_ic2 == ppt->index_ic_cdi)) { + sprintf(file_name,"%s%s%s%s",pop->root,redshift_suffix,type_suffix,"_ad_cdi.dat"); + strcpy(first_line,"for cross ADxCDI mode "); + } - sprintf(file_name,"%s%s%s",pop->root,redshift_suffix,"pk_cdi_niv.dat"); - strcpy(first_line,"for cross CDIxNIV mode "); - } + if ((ppt->has_ad == _TRUE_) && (ppt->has_nid == _TRUE_) && (index_ic1 == ppt->index_ic_ad) && (index_ic2 == ppt->index_ic_nid)) { + sprintf(file_name,"%s%s%s%s",pop->root,redshift_suffix,type_suffix,"_ad_nid.dat"); + strcpy(first_line,"for scalar cross ADxNID mode "); + } - if ((ppt->has_nid == _TRUE_) && (ppt->has_niv == _TRUE_) && - (index_ic1 == ppt->index_ic_nid) && (index_ic2 == ppt->index_ic_niv)) { + if ((ppt->has_ad == _TRUE_) && (ppt->has_niv == _TRUE_) && (index_ic1 == ppt->index_ic_ad) && (index_ic2 == ppt->index_ic_niv)) { + sprintf(file_name,"%s%s%s%s",pop->root,redshift_suffix,type_suffix,"_ad_niv.dat"); + strcpy(first_line,"for cross ADxNIV mode "); + } - sprintf(file_name,"%s%s%s",pop->root,redshift_suffix,"pk_nid_niv.dat"); - strcpy(first_line,"for cross NIDxNIV mode "); - } + if ((ppt->has_bi == _TRUE_) && (ppt->has_cdi == _TRUE_) && (index_ic1 == ppt->index_ic_bi) && (index_ic2 == ppt->index_ic_cdi)) { + sprintf(file_name,"%s%s%s%s",pop->root,redshift_suffix,type_suffix,"_bi_cdi.dat"); + strcpy(first_line,"for cross BIxCDI mode "); + } - index_ic1_ic2 = index_symmetric_matrix(index_ic1,index_ic2,psp->ic_size[index_md]); + if ((ppt->has_bi == _TRUE_) && (ppt->has_nid == _TRUE_) && (index_ic1 == ppt->index_ic_bi) && (index_ic2 == ppt->index_ic_nid)) { + sprintf(file_name,"%s%s%s%s",pop->root,redshift_suffix,type_suffix,"_bi_nid.dat"); + strcpy(first_line,"for cross BIxNID mode "); + } - if (psp->is_non_zero[index_md][index_ic1_ic2] == _TRUE_) { + if ((ppt->has_bi == _TRUE_) && (ppt->has_niv == _TRUE_) && (index_ic1 == ppt->index_ic_bi) && (index_ic2 == ppt->index_ic_niv)) { + sprintf(file_name,"%s%s%s%s",pop->root,redshift_suffix,type_suffix,"_bi_niv.dat"); + strcpy(first_line,"for cross BIxNIV mode "); + } - class_call(output_open_pk_file(pba, - psp, - pop, - &(out_ic[index_ic1_ic2]), - file_name, - first_line, - pop->z_pk[index_z] - ), - pop->error_message, - pop->error_message); - } - } - } - } + if ((ppt->has_cdi == _TRUE_) && (ppt->has_nid == _TRUE_) && (index_ic1 == ppt->index_ic_cdi) && (index_ic2 == ppt->index_ic_nid)) { + sprintf(file_name,"%s%s%s%s",pop->root,redshift_suffix,type_suffix,"_cdi_nid.dat"); + strcpy(first_line,"for cross CDIxNID mode "); + } - /** - third, compute P(k) for each k (if several ic's, compute it for each ic and compute also the total); if z_pk = 0, this is done by directly reading inside the pre-computed table; if not, this is done by interpolating the table at the correct value of tau. */ + if ((ppt->has_cdi == _TRUE_) && (ppt->has_niv == _TRUE_) && (index_ic1 == ppt->index_ic_cdi) && (index_ic2 == ppt->index_ic_niv)) { + sprintf(file_name,"%s%s%s%s",pop->root,redshift_suffix,type_suffix,"_cdi_niv.dat"); + strcpy(first_line,"for cross CDIxNIV mode "); + } - /* if z_pk = 0, no interpolation needed */ + if ((ppt->has_nid == _TRUE_) && (ppt->has_niv == _TRUE_) && (index_ic1 == ppt->index_ic_nid) && (index_ic2 == ppt->index_ic_niv)) { + sprintf(file_name,"%s%s%s%s",pop->root,redshift_suffix,type_suffix,"_nid_niv.dat"); + strcpy(first_line,"for cross NIDxNIV mode "); + } - if (pop->z_pk[index_z] == 0.) { + index_ic1_ic2 = index_symmetric_matrix(index_ic1,index_ic2,pnl->ic_size); - for (index_k=0; index_kln_k_size; index_k++) { + if (pnl->is_non_zero[index_ic1_ic2] == _TRUE_) { - if (psp->ic_size[index_md] == 1) { - pk_tot[index_k] = exp(psp->ln_pk[(psp->ln_tau_size-1) * psp->ln_k_size + index_k]); - } - else { - pk_tot[index_k] = 0.; - for (index_ic1=0; index_ic1 < psp->ic_size[index_md]; index_ic1++) { - index_ic1_ic2 = index_symmetric_matrix(index_ic1,index_ic1,psp->ic_size[index_md]); - pk_ic[index_k * psp->ic_ic_size[index_md] + index_ic1_ic2] = exp(psp->ln_pk[((psp->ln_tau_size-1) * psp->ln_k_size + index_k) * psp->ic_ic_size[index_md] + index_ic1_ic2]); - pk_tot[index_k] += pk_ic[index_k * psp->ic_ic_size[index_md] + index_ic1_ic2]; - } - for (index_ic1=0; index_ic1 < psp->ic_size[index_md]; index_ic1++) { - for (index_ic2 = index_ic1+1; index_ic2 < psp->ic_size[index_md]; index_ic2++) { - pk_ic[index_k * psp->ic_ic_size[index_md] + index_symmetric_matrix(index_ic1,index_ic2,psp->ic_size[index_md])] = - psp->ln_pk[index_k * psp->ic_ic_size[index_md] + index_symmetric_matrix(index_ic1,index_ic2,psp->ic_size[index_md])] - *sqrt(pk_ic[index_k * psp->ic_ic_size[index_md] + index_symmetric_matrix(index_ic1,index_ic1,psp->ic_size[index_md])] * - pk_ic[index_k * psp->ic_ic_size[index_md] + index_symmetric_matrix(index_ic2,index_ic2,psp->ic_size[index_md])]); - pk_tot[index_k] += 2.*pk_ic[index_k * psp->ic_ic_size[index_md] + index_ic1_ic2]; + class_call(output_open_pk_file(pba, + pnl, + pop, + &(out_pk_ic[index_ic1_ic2]), + file_name, + first_line, + pop->z_pk[index_z] + ), + pop->error_message, + pop->error_message); } } } } - } - /* if 0 <= z_pk <= z_max_pk, interpolation needed, */ - else { + /** - third, compute P(k) for each k */ - class_call(spectra_pk_at_z(pba, - psp, - linear, - pop->z_pk[index_z], - pk_tot, - pk_ic), - psp->error_message, + class_call(nonlinear_pk_at_z(pba, + pnl, + logarithmic, + pk_output, + pop->z_pk[index_z], + index_pk, + ln_pk, + ln_pk_ic + ), + pnl->error_message, pop->error_message); - } - /** - fourth, write in files */ + /** - fourth, write in files */ - for (index_k=0; index_kln_k_size; index_k++) { + for (index_k=0; index_kk_size; index_k++) { - class_call(output_one_line_of_pk(out, - exp(psp->ln_k[index_k])/pba->h, - pk_tot[index_k]*pow(pba->h,3)), - pop->error_message, - pop->error_message); + class_call(output_one_line_of_pk(out_pk, + exp(pnl->ln_k[index_k])/pba->h, + exp(ln_pk[index_k])*pow(pba->h,3) + ), + pop->error_message, + pop->error_message); - if (psp->ic_size[index_md] > 1) { + if (do_ic == _TRUE_) { - for (index_ic1_ic2 = 0; index_ic1_ic2 < psp->ic_ic_size[index_md]; index_ic1_ic2++) { + for (index_ic1_ic2 = 0; index_ic1_ic2 < pnl->ic_ic_size; index_ic1_ic2++) { - if (psp->is_non_zero[index_md][index_ic1_ic2] == _TRUE_) { + if (pnl->is_non_zero[index_ic1_ic2] == _TRUE_) { - class_call(output_one_line_of_pk(out_ic[index_ic1_ic2], - exp(psp->ln_k[index_k])/pba->h, - pk_ic[index_k * psp->ic_ic_size[index_md] + index_ic1_ic2]*pow(pba->h,3)), - pop->error_message, - pop->error_message); + class_call(output_one_line_of_pk(out_pk_ic[index_ic1_ic2], + exp(pnl->ln_k[index_k])/pba->h, + exp(ln_pk_ic[index_k * pnl->ic_ic_size + index_ic1_ic2])*pow(pba->h,3)), + pop->error_message, + pop->error_message); + } } } - } - } + } /* end loop over k */ - /** - fifth, free memory and close files */ + /** - fifth, close files */ - free(pk_tot); - fclose(out); + fclose(out_pk); - if (psp->ic_size[index_md] > 1) { - for (index_ic1_ic2 = 0; index_ic1_ic2 < psp->ic_ic_size[index_md]; index_ic1_ic2++) { - if (psp->is_non_zero[index_md][index_ic1_ic2] == _TRUE_) { - fclose(out_ic[index_ic1_ic2]); + if (do_ic == _TRUE_) { + for (index_ic1_ic2 = 0; index_ic1_ic2 < pnl->ic_ic_size; index_ic1_ic2++) { + if (pnl->is_non_zero[index_ic1_ic2] == _TRUE_) { + fclose(out_pk_ic[index_ic1_ic2]); + } } } - free(out_ic); - free(pk_ic); - } - - } - - return _SUCCESS_; - -} -/** - * This routines writes the output in files for Fourier non-linear matter power spectra P(k)'s. - * - * @param pba Input: pointer to background structure (needed for calling spectra_pk_at_z()) - * @param ppt Input: pointer perturbation structure - * @param psp Input: pointer to spectra structure - * @param pop Input: pointer to output structure - */ - -int output_pk_nl( - struct background * pba, - struct perturbs * ppt, - struct spectra * psp, - struct output * pop - ) { - - /** Summary: */ - - /** - define local variables */ - - FILE * out; /* (will contain total P(k) summed eventually over initial conditions) */ - - double * pk_tot; /* array with argument pk_tot[index_k] */ - - int index_k; - int index_z; - - FileName file_name; - FileName redshift_suffix; - - for (index_z = 0; index_z < pop->z_pk_num; index_z++) { - - /** - first, check that requested redshift z_pk is consistent */ - - class_test((pop->z_pk[index_z] > psp->z_max_pk), - pop->error_message, - "P(k,z) computed up to z=%f but requested at z=%f. Must increase z_max_pk in precision file.",psp->z_max_pk,pop->z_pk[index_z]); - - if (pop->z_pk_num == 1) - redshift_suffix[0]='\0'; - else - sprintf(redshift_suffix,"z%d_",index_z+1); - - /** - second, open only the relevant files, and write a heading in each of them */ + } /* end loop over index_z */ - sprintf(file_name,"%s%s%s",pop->root,redshift_suffix,"pk_nl.dat"); - - class_call(output_open_pk_file(pba, - psp, - pop, - &out, - file_name, - "", - pop->z_pk[index_z] - ), - pop->error_message, - pop->error_message); - - class_alloc(pk_tot, - psp->ln_k_size*sizeof(double), - pop->error_message); - - /** - third, compute P(k) for each k (if several ic's, compute it for each ic and compute also the total); if z_pk = 0, this is done by directly reading inside the pre-computed table; if not, this is done by interpolating the table at the correct value of tau. */ - - /* if z_pk = 0, no interpolation needed */ - - if (pop->z_pk[index_z] == 0.) { - - for (index_k=0; index_kln_k_size; index_k++) { - - pk_tot[index_k] = exp(psp->ln_pk_nl[(psp->ln_tau_size-1) * psp->ln_k_size + index_k]); - - } - } - - /* if 0 <= z_pk <= z_max_pk, interpolation needed, */ - else { - - class_call(spectra_pk_nl_at_z(pba, - psp, - linear, - pop->z_pk[index_z], - pk_tot), - psp->error_message, - pop->error_message); - } - - /** - fourth, write in files */ - - for (index_k=0; index_kln_k_size; index_k++) { - - class_call(output_one_line_of_pk(out, - exp(psp->ln_k[index_k])/pba->h, - pk_tot[index_k]*pow(pba->h,3)), - pop->error_message, - pop->error_message); - - } - - /** - fifth, free memory and close files */ - - fclose(out); - free(pk_tot); + } /* end loop over index_pk */ + /* free arrays and pointers */ + free(ln_pk); + if (pk_output == pk_linear) { + free(ln_pk_ic); + free(out_pk_ic); } return _SUCCESS_; - } - /** * This routines writes the output in files for matter transfer functions \f$ T_i(k)\f$'s. * * @param pba Input: pointer to background structure (needed for calling spectra_pk_at_z()) * @param ppt Input: pointer perturbation structure - * @param psp Input: pointer to spectra structure * @param pop Input: pointer to output structure */ int output_tk( struct background * pba, struct perturbs * ppt, - struct spectra * psp, struct output * pop ) { @@ -1037,9 +902,10 @@ int output_tk( double z; FileName file_name; - FileName redshift_suffix; + char redshift_suffix[7]; // 7 is enough to write "z%d_" as long as there are at most 10'000 bins char first_line[_LINE_LENGTH_MAX_]; - FileName ic_suffix; + char ic_suffix[4]; // 4 is enough to write "ad", "bi", "cdi", "nid", "niv", ... + index_md=ppt->index_md_scalars; @@ -1055,13 +921,13 @@ int output_tk( } - class_call(spectra_output_tk_titles(pba,ppt,pop->output_format,titles), + class_call(perturb_output_titles(pba,ppt,pop->output_format,titles), pba->error_message, pop->error_message); number_of_titles = get_number_of_titles(titles); - size_data = number_of_titles*psp->ln_k_size; + size_data = number_of_titles*ppt->k_size[index_md]; - class_alloc(data, sizeof(double)*psp->ic_size[index_md]*size_data, pop->error_message); + class_alloc(data, sizeof(double)*ppt->ic_size[index_md]*size_data, pop->error_message); for (index_z = 0; index_z < pop->z_pk_num; index_z++) { @@ -1069,9 +935,9 @@ int output_tk( /** - first, check that requested redshift z_pk is consistent */ - class_test((pop->z_pk[index_z] > psp->z_max_pk), + class_test((pop->z_pk[index_z] > ppt->z_max_pk), pop->error_message, - "T_i(k,z) computed up to z=%f but requested at z=%f. Must increase z_max_pk in precision file.",psp->z_max_pk,pop->z_pk[index_z]); + "T_i(k,z) computed up to z=%f but requested at z=%f. Must increase z_max_pk in precision file.",ppt->z_max_pk,pop->z_pk[index_z]); if (pop->z_pk_num == 1) redshift_suffix[0]='\0'; @@ -1080,21 +946,20 @@ int output_tk( /** - second, open only the relevant files, and write a heading in each of them */ - class_call(spectra_output_tk_data(pba, + class_call(perturb_output_data(pba, ppt, - psp, pop->output_format, pop->z_pk[index_z], number_of_titles, data ), - psp->error_message, + ppt->error_message, pop->error_message); for (index_ic = 0; index_ic < ppt->ic_size[index_md]; index_ic++) { - class_call(spectra_firstline_and_ic_suffix(ppt, index_ic, first_line, ic_suffix), - pop->error_message, pop->error_message); + class_call(perturb_output_firstline_and_ic_suffix(ppt, index_ic, first_line, ic_suffix), + ppt->error_message, pop->error_message); if ((ppt->has_ad == _TRUE_) && (ppt->ic_size[index_md] == 1) ) sprintf(file_name,"%s%s%s",pop->root,redshift_suffix,"tk.dat"); @@ -1106,8 +971,8 @@ int output_tk( if (pop->write_header == _TRUE_) { if (pop->output_format == class_format) { fprintf(tkfile,"# Transfer functions T_i(k) %sat redshift z=%g\n",first_line,z); - fprintf(tkfile,"# for k=%g to %g h/Mpc,\n",exp(psp->ln_k[0])/pba->h,exp(psp->ln_k[psp->ln_k_size-1])/pba->h); - fprintf(tkfile,"# number of wavenumbers equal to %d\n",psp->ln_k_size); + fprintf(tkfile,"# for k=%g to %g h/Mpc,\n",ppt->k[index_md][0]/pba->h,ppt->k[index_md][ppt->k_size[index_md]-1]/pba->h); + fprintf(tkfile,"# number of wavenumbers equal to %d\n",ppt->k_size[index_md]); if (ppt->has_density_transfers == _TRUE_) { fprintf(tkfile,"# d_i stands for (delta rho_i/rho_i)(k,z) with above normalization \n"); fprintf(tkfile,"# d_tot stands for (delta rho_tot/rho_tot)(k,z) with rho_Lambda NOT included in rho_tot\n"); @@ -1123,8 +988,8 @@ int output_tk( else if (pop->output_format == camb_format) { fprintf(tkfile,"# Rescaled matter transfer functions [-T_i(k)/k^2] %sat redshift z=%g\n",first_line,z); - fprintf(tkfile,"# for k=%g to %g h/Mpc,\n",exp(psp->ln_k[0])/pba->h,exp(psp->ln_k[psp->ln_k_size-1])/pba->h); - fprintf(tkfile,"# number of wavenumbers equal to %d\n",psp->ln_k_size); + fprintf(tkfile,"# for k=%g to %g h/Mpc,\n",ppt->k[index_md][0]/pba->h,ppt->k[index_md][ppt->k_size[index_md]-1]/pba->h); + fprintf(tkfile,"# number of wavenumbers equal to %d\n",ppt->k_size[index_md]); fprintf(tkfile,"# T_i stands for (delta rho_i/rho_i)(k,z) with above normalization \n"); fprintf(tkfile,"# The rescaling factor [-1/k^2] with k in 1/Mpc is here to match the CMBFAST/CAMB output convention\n"); fprintf(tkfile,"#\n"); @@ -1138,7 +1003,7 @@ int output_tk( titles, data+index_ic*size_data, size_data); - + /** - free memory and close files */ fclose(tkfile); @@ -1207,7 +1072,7 @@ int output_thermodynamics( struct background * pba, struct thermo * pth, struct output * pop - ) { + ) { FileName file_name; FILE * thermofile; @@ -1234,15 +1099,25 @@ int output_thermodynamics( if (pop->write_header == _TRUE_) { fprintf(thermofile,"# Table of selected thermodynamics quantities\n"); fprintf(thermofile,"# The following notation is used in column titles:\n"); - fprintf(thermofile,"# x_e = electron ionization fraction\n"); - fprintf(thermofile,"# -kappa = optical depth\n"); - fprintf(thermofile,"# kappa' = Thomson scattering rate, prime denotes conformal time derivatives\n"); - fprintf(thermofile,"# g = kappa' e^-kappa = visibility function \n"); - fprintf(thermofile,"# Tb = baryon temperature \n"); - fprintf(thermofile,"# c_b^2 = baryon sound speed squared \n"); - fprintf(thermofile,"# tau_d = baryon drag optical depth \n"); - if (pth->compute_damping_scale == _TRUE_) { - fprintf(thermofile,"# r_d = simplest analytic approximation to photon comoving damping scale \n"); + fprintf(thermofile,"# x_e = electron ionization fraction\n"); + fprintf(thermofile,"# -kappa = optical depth\n"); + fprintf(thermofile,"# kappa' = Thomson scattering rate, prime denotes conformal time derivatives\n"); + fprintf(thermofile,"# g = kappa' e^-kappa = visibility function \n"); + fprintf(thermofile,"# Tb = baryon temperature \n"); + fprintf(thermofile,"# w_b = baryon equation of state parameter \n"); + fprintf(thermofile,"# c_b^2 = baryon sound speed squared \n"); + fprintf(thermofile,"# tau_d = baryon drag optical depth \n"); + if (pth->compute_damping_scale == _TRUE_) + fprintf(thermofile,"# r_d = approximate comoving value of photon damping scale \n"); + if(pba->has_idm_dr == _TRUE_) { + fprintf(thermofile,"# dmu_idm_dr = scattering rate of idr with idm_dr (i.e. idr opacity to idm_dr scattering) (units 1/Mpc)\n"); + fprintf(thermofile,"# ddmu_idm_dr = derivative of this rate\n"); + fprintf(thermofile,"# tau_idm_dr = optical depth of idm_dr (due to interactions with idr) \n"); + fprintf(thermofile,"# tau_idr = optical depth of idr (due to self-interactions) \n"); + fprintf(thermofile,"# g_idm_dr = visibility function of idm_idr \n"); + fprintf(thermofile,"# c_idm_dr^2 = interacting dark matter squared sound speed \n"); + fprintf(thermofile,"# T_idm_dr = temperature of DM interacting with DR \n"); + fprintf(thermofile,"# dmu_idr = idr self-interaction rate \n"); } } @@ -1371,7 +1246,7 @@ int output_print_data(FILE *out, char *pch; /** Summary*/ - + /** - First we print the titles */ fprintf(out,"#"); @@ -1420,7 +1295,7 @@ int output_open_cl_file( int lmax ) { /** Summary */ - + int index_d1,index_d2; int colnum = 1; char tmp[60]; //A fixed number here is ok, since it should just correspond to the largest string which is printed to tmp. @@ -1428,7 +1303,7 @@ int output_open_cl_file( class_open(*clfile,filename,"w",pop->error_message); if (pop->write_header == _TRUE_) { - + /** - First we deal with the entries that are dependent of format type */ if (pop->output_format == class_format) { @@ -1446,6 +1321,26 @@ int output_open_cl_file( } fprintf(*clfile,"# -> if you don't want to see such a header, set 'headers' to 'no' in input file\n"); + + if (psp->has_pp == _TRUE_) { + if (pop->output_format == class_format) { + fprintf(*clfile,"# -> for CMB lensing (phi), these are C_l^phi-phi for the lensing potential.\n"); + } + if (pop->output_format == camb_format) { + fprintf(*clfile,"# -> for CMB lensing (d), these are C_l^dd for the deflection field.\n"); + } + } + + if (psp->has_ll == _TRUE_) { + fprintf(*clfile,"# -> for galaxy lensing (lens[i]), these are C_l^phi-phi for the lensing potential.\n"); + } + + if (psp->has_pp == _TRUE_ || psp->has_ll == _TRUE_) { + fprintf(*clfile,"# Remember the conversion factors:\n"); + fprintf(*clfile,"# C_l^dd (deflection) = l(l+1) C_l^phi-phi\n"); + fprintf(*clfile,"# C_l^gg (shear/convergence) = 1/4 (l(l+1))^2 C_l^phi-phi\n"); + } + fprintf(*clfile,"#\n"); if (0==1){ @@ -1610,7 +1505,7 @@ int output_one_line_of_cl( * a heading with some general information concerning its content. * * @param pba Input: pointer to background structure (needed for h) - * @param psp Input: pointer to spectra structure + * @param pnl Input: pointer to nonlinear structure * @param pop Input: pointer to output structure * @param pkfile Output: returned pointer to file pointer * @param filename Input: name of the file @@ -1621,7 +1516,7 @@ int output_one_line_of_cl( int output_open_pk_file( struct background * pba, - struct spectra * psp, + struct nonlinear * pnl, struct output * pop, FILE * * pkfile, FileName filename, @@ -1635,9 +1530,9 @@ int output_open_pk_file( if (pop->write_header == _TRUE_) { fprintf(*pkfile,"# Matter power spectrum P(k) %sat redshift z=%g\n",first_line,z); fprintf(*pkfile,"# for k=%g to %g h/Mpc,\n", - exp(psp->ln_k[0])/pba->h, - exp(psp->ln_k[psp->ln_k_size-1])/pba->h); - fprintf(*pkfile,"# number of wavenumbers equal to %d\n",psp->ln_k_size); + exp(pnl->ln_k[0])/pba->h, + exp(pnl->ln_k[pnl->k_size-1])/pba->h); + fprintf(*pkfile,"# number of wavenumbers equal to %d\n",pnl->k_size); fprintf(*pkfile,"#"); class_fprintf_columntitle(*pkfile,"k (h/Mpc)",_TRUE_,colnum); diff --git a/class/source/perturbations.c b/class/source/perturbations.c index 5149a3b4..046f001a 100644 --- a/class/source/perturbations.c +++ b/class/source/perturbations.c @@ -36,7 +36,7 @@ * @param ppt Input: pointer to perturbation structure containing interpolation tables * @param index_md Input: index of requested mode * @param index_ic Input: index of requested initial condition - * @param index_type Input: index of requested source function type + * @param index_tp Input: index of requested source function type * @param tau Input: any value of conformal time * @param psource Output: vector (already allocated) of source function as a function of k * @return the error status @@ -46,29 +46,388 @@ int perturb_sources_at_tau( struct perturbs * ppt, int index_md, int index_ic, - int index_type, + int index_tp, double tau, double * psource ) { - /** Summary: */ + /** - define local variables */ + + int last_index; + double logtau; + + logtau = log(tau); + /** - interpolate in pre-computed table contained in ppt */ - class_call(array_interpolate_two_bis(ppt->tau_sampling, - 1, - 0, - ppt->sources[index_md][index_ic*ppt->tp_size[index_md]+index_type], - ppt->k_size[index_md], - ppt->tau_size, - tau, - psource, - ppt->k_size[index_md], - ppt->error_message), - ppt->error_message, - ppt->error_message); + /** - linear interpolation at early times (z>z_max_pk), available, + but actually never used by default version of CLASS */ + + if ((logtau < ppt->ln_tau[0]) || (ppt->ln_tau_size <= 1)) { + + class_call(array_interpolate_two_bis(ppt->tau_sampling, + 1, + 0, + ppt->sources[index_md][index_ic*ppt->tp_size[index_md]+index_tp], + ppt->k_size[index_md], + ppt->tau_size, + tau, + psource, + ppt->k_size[index_md], + ppt->error_message), + ppt->error_message, + ppt->error_message); + } + + /** - more accurate spline interpolation at late times (zln_tau, + ppt->ln_tau_size, + ppt->late_sources[index_md][index_ic * ppt->tp_size[index_md] + index_tp], + ppt->ddlate_sources[index_md][index_ic*ppt->tp_size[index_md] + index_tp], + ppt->k_size[index_md], + logtau, + &last_index, + psource, + ppt->k_size[index_md], + ppt->error_message), + ppt->error_message, + ppt->error_message); + } + + return _SUCCESS_; +} + +/** + * Function called by the output module or the wrappers, which returns all + * the source functions \f$ S^{X} (k, \tau) \f$ at a given conformal + * time tau corresponding to the input redshift z. + * + * @param pba Input: pointer to background structure + * @param ppt Input: pointer to perturbation structure + * @param output_format Input: choice of ordering and normalisation for the output quantities + * @param z Input: redshift + * @param number_of_titles Input: number of requested source functions (found in perturb_output_titles) + * @param data Output: vector of all source functions for all k values and initial conditions (previously allocated with the right size) + * @return the error status + */ + +int perturb_output_data( + struct background * pba, + struct perturbs * ppt, + enum file_format output_format, + double z, + int number_of_titles, + double *data + ) { + + int n_ncdm; + double k, k_over_h, k2; + double * tkfull=NULL; /* array with argument + pk_ic[(index_k * psp->ic_size[index_md] + index_ic)*psp->tr_size+index_tr] */ + double *tk; + double *dataptr; + + double * pvecsources; + + double tau; + + int index_md = ppt->index_md_scalars; + int index_ic; + int index_k; + int index_tp; + int storeidx; + + if (ppt->k_size[index_md]*ppt->ic_size[index_md]*ppt->tp_size[index_md] > 0) { + class_alloc(tkfull, + ppt->k_size[index_md]*ppt->ic_size[index_md]*ppt->tp_size[index_md]*sizeof(double), + ppt->error_message); + } + + /** - compute \f$T_i(k)\f$ for each k (if several ic's, compute it for each ic; if z_pk = 0, this is done by directly reading inside the pre-computed table; if not, this is done by interpolating the table at the correct value of tau. */ + + /* if z_pk = 0, no interpolation needed */ + + if (z == 0.) { + + for (index_k=0; index_kk_size[index_md]; index_k++) { + for (index_tp=0; index_tptp_size[index_md]; index_tp++) { + for (index_ic=0; index_icic_size[index_md]; index_ic++) { + tkfull[(index_k * ppt->ic_size[index_md] + index_ic) * ppt->tp_size[index_md] + index_tp] + = ppt->sources[index_md][index_ic * ppt->tp_size[index_md] + index_tp][(ppt->tau_size-1) * ppt->k_size[index_md] + index_k]; + } + } + } + } + + /* if 0 <= z_pk <= z_max_pk, interpolation needed, */ + else { + + /* check the time corresponding to the highest redshift requested in output plus one */ + class_call(background_tau_of_z(pba, + z, + &tau), + pba->error_message, + ppt->error_message); + + class_test(log(tau) < ppt->ln_tau[0], + "Asking sources at a z bigger than z_max_pk, something probably went wrong\n", + ppt->error_message); + + class_alloc(pvecsources, + ppt->k_size[index_md]*sizeof(double), + ppt->error_message); + + for (index_k=0; index_kk_size[index_md]; index_k++) { + for (index_tp=0; index_tptp_size[index_md]; index_tp++) { + for (index_ic=0; index_icic_size[index_md]; index_ic++) { + class_call(perturb_sources_at_tau(ppt, + index_md, + index_ic, + index_tp, + tau, + pvecsources), + ppt->error_message, + ppt->error_message); + + tkfull[(index_k * ppt->ic_size[index_md] + index_ic) * ppt->tp_size[index_md] + index_tp] = + pvecsources[index_k]; + } + } + } + free(pvecsources); + } + + /** - store data */ + + for (index_ic = 0; index_ic < ppt->ic_size[index_md]; index_ic++) { + + for (index_k=0; index_kk_size[index_md]; index_k++) { + + storeidx = 0; + dataptr = data+index_ic*(ppt->k_size[index_md]*number_of_titles)+index_k*number_of_titles; + tk = &(tkfull[(index_k * ppt->ic_size[index_md] + index_ic) * ppt->tp_size[index_md]]); + k = ppt->k[index_md][index_k]; + k2 = k*k; + k_over_h = k/pba->h; + + class_store_double(dataptr, k_over_h, _TRUE_,storeidx); + + /* indices for species associated with a velocity transfer function in Fourier space */ + + if (output_format == class_format) { + + if (ppt->has_density_transfers == _TRUE_) { + class_store_double(dataptr,tk[ppt->index_tp_delta_g],ppt->has_source_delta_g,storeidx); + class_store_double(dataptr,tk[ppt->index_tp_delta_b],ppt->has_source_delta_b,storeidx); + class_store_double(dataptr,tk[ppt->index_tp_delta_cdm],ppt->has_source_delta_cdm,storeidx); + class_store_double(dataptr,tk[ppt->index_tp_delta_idm_dr],ppt->has_source_delta_idm_dr,storeidx); + class_store_double(dataptr,tk[ppt->index_tp_delta_fld],ppt->has_source_delta_fld,storeidx); + class_store_double(dataptr,tk[ppt->index_tp_delta_ur],ppt->has_source_delta_ur,storeidx); + class_store_double(dataptr,tk[ppt->index_tp_delta_idr],ppt->has_source_delta_idr,storeidx); + if (pba->has_ncdm == _TRUE_){ + for (n_ncdm = 0; n_ncdm < pba->N_ncdm; n_ncdm++){ + class_store_double(dataptr,tk[ppt->index_tp_delta_ncdm1+n_ncdm],ppt->has_source_delta_ncdm,storeidx); + } + } + class_store_double(dataptr,tk[ppt->index_tp_delta_dcdm],ppt->has_source_delta_dcdm,storeidx); + class_store_double(dataptr,tk[ppt->index_tp_delta_dr],ppt->has_source_delta_dr,storeidx); + class_store_double(dataptr,tk[ppt->index_tp_delta_scf],ppt->has_source_delta_scf,storeidx); + class_store_double(dataptr,tk[ppt->index_tp_delta_tot],ppt->has_source_delta_tot,storeidx); + class_store_double(dataptr,tk[ppt->index_tp_phi],ppt->has_source_phi,storeidx); + class_store_double(dataptr,tk[ppt->index_tp_psi],ppt->has_source_psi,storeidx); + class_store_double(dataptr,tk[ppt->index_tp_phi_prime],ppt->has_source_phi_prime,storeidx); + class_store_double(dataptr,tk[ppt->index_tp_h],ppt->has_source_h,storeidx); + class_store_double(dataptr,tk[ppt->index_tp_h_prime],ppt->has_source_h_prime,storeidx); + class_store_double(dataptr,tk[ppt->index_tp_eta],ppt->has_source_eta,storeidx); + class_store_double(dataptr,tk[ppt->index_tp_eta_prime],ppt->has_source_eta_prime,storeidx); + class_store_double(dataptr,tk[ppt->index_tp_H_T_Nb_prime],ppt->has_source_H_T_Nb_prime,storeidx); + class_store_double(dataptr,tk[ppt->index_tp_k2gamma_Nb],ppt->has_source_k2gamma_Nb,storeidx); + } + if (ppt->has_velocity_transfers == _TRUE_) { + + class_store_double(dataptr,tk[ppt->index_tp_theta_g],ppt->has_source_theta_g,storeidx); + class_store_double(dataptr,tk[ppt->index_tp_theta_b],ppt->has_source_theta_b,storeidx); + class_store_double(dataptr,tk[ppt->index_tp_theta_cdm],ppt->has_source_theta_cdm,storeidx); + class_store_double(dataptr,tk[ppt->index_tp_theta_idm_dr],ppt->has_source_theta_idm_dr,storeidx); + class_store_double(dataptr,tk[ppt->index_tp_theta_fld],ppt->has_source_theta_fld,storeidx); + class_store_double(dataptr,tk[ppt->index_tp_theta_ur],ppt->has_source_theta_ur,storeidx); + class_store_double(dataptr,tk[ppt->index_tp_theta_idr],ppt->has_source_theta_idr,storeidx); + if (pba->has_ncdm == _TRUE_){ + for (n_ncdm = 0; n_ncdm < pba->N_ncdm; n_ncdm++){ + class_store_double(dataptr,tk[ppt->index_tp_theta_ncdm1+n_ncdm],ppt->has_source_theta_ncdm,storeidx); + } + } + class_store_double(dataptr,tk[ppt->index_tp_theta_dcdm],ppt->has_source_theta_dcdm,storeidx); + class_store_double(dataptr,tk[ppt->index_tp_theta_dr],ppt->has_source_theta_dr,storeidx); + class_store_double(dataptr,tk[ppt->index_tp_theta_scf],ppt->has_source_theta_scf,storeidx); + class_store_double(dataptr,tk[ppt->index_tp_theta_tot],ppt->has_source_theta_tot,storeidx); + + } + + } + else if (output_format == camb_format) { + + /* rescale and reorder the matter transfer functions following the CMBFAST/CAMB convention */ + class_store_double_or_default(dataptr,-tk[ppt->index_tp_delta_cdm]/k2,ppt->has_source_delta_cdm,storeidx,0.0); + class_store_double_or_default(dataptr,-tk[ppt->index_tp_delta_idm_dr]/k2,ppt->has_source_delta_idm_dr,storeidx,0.0); + class_store_double_or_default(dataptr,-tk[ppt->index_tp_delta_b]/k2,ppt->has_source_delta_b,storeidx,0.0); + class_store_double_or_default(dataptr,-tk[ppt->index_tp_delta_g]/k2,ppt->has_source_delta_g,storeidx,0.0); + class_store_double_or_default(dataptr,-tk[ppt->index_tp_delta_ur]/k2,ppt->has_source_delta_ur,storeidx,0.0); + class_store_double_or_default(dataptr,-tk[ppt->index_tp_delta_idr]/k2,ppt->has_source_delta_idr,storeidx,0.0); + class_store_double_or_default(dataptr,-tk[ppt->index_tp_delta_ncdm1]/k2,ppt->has_source_delta_ncdm,storeidx,0.0); + class_store_double_or_default(dataptr,-tk[ppt->index_tp_delta_tot]/k2,_TRUE_,storeidx,0.0); + } + } + } + + //Necessary because the size could be zero (if ppt->tp_size is zero) + if (tkfull != NULL) + free(tkfull); + + return _SUCCESS_; +} + +/** + * Fill array of strings with the name of the requested 'mTk, vTk' functions + * (transfer functions as a function of wavenumber for fixed times). + * + * @param pba Input: pointer to the background structure + * @param ppt Input: pointer to the perturbation structure + * @param output_format Input: flag for the format + * @param titles Output: name strings + * @return the error status + */ + +int perturb_output_titles( + struct background *pba, + struct perturbs *ppt, + enum file_format output_format, + char titles[_MAXTITLESTRINGLENGTH_] + ){ + int n_ncdm; + char tmp[40]; + + if (output_format == class_format) { + class_store_columntitle(titles,"k (h/Mpc)",_TRUE_); + if (ppt->has_density_transfers == _TRUE_) { + class_store_columntitle(titles,"d_g",_TRUE_); + class_store_columntitle(titles,"d_b",_TRUE_); + class_store_columntitle(titles,"d_cdm",pba->has_cdm); + class_store_columntitle(titles,"d_idm_dr",pba->has_idm_dr); + class_store_columntitle(titles,"d_fld",pba->has_fld); + class_store_columntitle(titles,"d_ur",pba->has_ur); + class_store_columntitle(titles,"d_idr",pba->has_idr); + if (pba->has_ncdm == _TRUE_) { + for (n_ncdm=0; n_ncdm < pba->N_ncdm; n_ncdm++) { + sprintf(tmp,"d_ncdm[%d]",n_ncdm); + class_store_columntitle(titles,tmp,_TRUE_); + } + } + class_store_columntitle(titles,"d_dcdm",pba->has_dcdm); + class_store_columntitle(titles,"d_dr",pba->has_dr); + class_store_columntitle(titles,"d_scf",pba->has_scf); + class_store_columntitle(titles,"d_tot",_TRUE_); + class_store_columntitle(titles,"phi",ppt->has_source_phi); + class_store_columntitle(titles,"psi",ppt->has_source_psi); + class_store_columntitle(titles,"phi_prime",ppt->has_source_phi_prime); + class_store_columntitle(titles,"h",ppt->has_source_h); + class_store_columntitle(titles,"h_prime",ppt->has_source_h_prime); + class_store_columntitle(titles,"eta",ppt->has_source_eta); + class_store_columntitle(titles,"eta_prime",ppt->has_source_eta_prime); + class_store_columntitle(titles,"H_T_Nb_prime",ppt->has_source_H_T_Nb_prime); + class_store_columntitle(titles,"k2gamma_Nb",ppt->has_source_k2gamma_Nb); + } + if (ppt->has_velocity_transfers == _TRUE_) { + class_store_columntitle(titles,"t_g",_TRUE_); + class_store_columntitle(titles,"t_b",_TRUE_); + class_store_columntitle(titles,"t_cdm",((pba->has_cdm == _TRUE_) && (ppt->gauge != synchronous))); + class_store_columntitle(titles,"t_idm_dr",pba->has_idm_dr); + class_store_columntitle(titles,"t_fld",pba->has_fld); + class_store_columntitle(titles,"t_ur",pba->has_ur); + class_store_columntitle(titles,"t_idr",pba->has_idr); + if (pba->has_ncdm == _TRUE_) { + for (n_ncdm=0; n_ncdm < pba->N_ncdm; n_ncdm++) { + sprintf(tmp,"t_ncdm[%d]",n_ncdm); + class_store_columntitle(titles,tmp,_TRUE_); + } + } + class_store_columntitle(titles,"t_dcdm",pba->has_dcdm); + class_store_columntitle(titles,"t_dr",pba->has_dr); + class_store_columntitle(titles,"t__scf",pba->has_scf); + class_store_columntitle(titles,"t_tot",_TRUE_); + } + } + + else if (output_format == camb_format) { + + class_store_columntitle(titles,"k (h/Mpc)",_TRUE_); + class_store_columntitle(titles,"-T_cdm/k2",_TRUE_); + class_store_columntitle(titles,"-T_idm_dr/k2",_TRUE_); + class_store_columntitle(titles,"-T_b/k2",_TRUE_); + class_store_columntitle(titles,"-T_g/k2",_TRUE_); + class_store_columntitle(titles,"-T_ur/k2",_TRUE_); + class_store_columntitle(titles,"-T_idr/k2",_TRUE_); + class_store_columntitle(titles,"-T_ncdm/k2",_TRUE_); + class_store_columntitle(titles,"-T_tot/k2",_TRUE_); + + } + + return _SUCCESS_; +} + +/** + * Fill strings that will be used when writing the transfer functions + * and the spectra in files (in the file names and in the comment at the beginning of each file). + * + * @param ppt Input: pointer to the perturbation structure + * @param index_ic Input: index of the initial condition + * @param first_line Output: line of comment + * @param ic_suffix Output: suffix for the output file name + * @return the error status + * + */ + +int perturb_output_firstline_and_ic_suffix( + struct perturbs *ppt, + int index_ic, + char first_line[_LINE_LENGTH_MAX_], + FileName ic_suffix + ){ + + first_line[0]='\0'; + ic_suffix[0]='\0'; + + if ((ppt->has_ad == _TRUE_) && (index_ic == ppt->index_ic_ad)) { + strcpy(ic_suffix,"ad"); + strcpy(first_line,"for adiabatic (AD) mode (normalized to initial curvature=1) "); + } + + if ((ppt->has_bi == _TRUE_) && (index_ic == ppt->index_ic_bi)) { + strcpy(ic_suffix,"bi"); + strcpy(first_line,"for baryon isocurvature (BI) mode (normalized to initial entropy=1)"); + } + + if ((ppt->has_cdi == _TRUE_) && (index_ic == ppt->index_ic_cdi)) { + strcpy(ic_suffix,"cdi"); + strcpy(first_line,"for CDM isocurvature (CDI) mode (normalized to initial entropy=1)"); + } + + if ((ppt->has_nid == _TRUE_) && (index_ic == ppt->index_ic_nid)) { + strcpy(ic_suffix,"nid"); + strcpy(first_line,"for neutrino density isocurvature (NID) mode (normalized to initial entropy=1)"); + } + if ((ppt->has_niv == _TRUE_) && (index_ic == ppt->index_ic_niv)) { + strcpy(ic_suffix,"niv"); + strcpy(first_line,"for neutrino velocity isocurvature (NIV) mode (normalized to initial entropy=1)"); + } return _SUCCESS_; } @@ -112,8 +471,12 @@ int perturb_init( int index_ic; /* running index for wavenumbers */ int index_k; + /* running index for type of perturbation */ + int index_tp; /* pointer to one struct perturb_workspace per thread (one if no openmp) */ struct perturb_workspace ** pppw; + /* background quantities */ + double w_fld_ini, w_fld_0,dw_over_da_fld,integral_fld; /* number of threads (always one if no openmp) */ int number_of_threads=1; /* index of the thread (always 0 if no openmp) */ @@ -160,6 +523,13 @@ int perturb_init( ppt->error_message, "your radiation_streaming_approximation is set to %d, out of range defined in perturbations.h",ppr->radiation_streaming_approximation); + if (pba->has_idr == _TRUE_){ + class_test ((ppr->idr_streaming_approximation < rsa_idr_none) || + (ppr->idr_streaming_approximation > rsa_idr_MD), + ppt->error_message, + "your idr_radiation_streaming_approximation is set to %d, out of range defined in perturbations.h",ppr->idr_streaming_approximation); + } + if (pba->has_ur == _TRUE_) { class_test ((ppr->ur_fluid_approximation < ufa_mb) || @@ -174,21 +544,37 @@ int perturb_init( (ppr->ncdm_fluid_approximation > ncdmfa_none), ppt->error_message, "your ncdm_fluid_approximation is set to %d, out of range defined in perturbations.h",ppr->ncdm_fluid_approximation); + + if (ppt->has_nc_density == _TRUE_) { + if (ppt->perturbations_verbose > 0) { + fprintf(stdout," -> [WARNING:] You request the number count Cl's in presence of non-cold dark matter.\n Like in all previous CLASS and CLASSgal versions, this will be inferred from the total matter density,\n but it could make much more sense physically to compute it from the CDM+baryon density only.\n To get the latter behavior you would just need to change one line in transfer.c:\n search there for a comment starting with 'use here delta_cb'\n"); + } + } + } if (pba->has_fld == _TRUE_) { - class_test(pba->w0_fld+pba->wa_fld >= 0., - ppt->error_message, - "So far, the fluid is meant to be negligible at early time, and not to be important for defining the initial conditions of other species. You are using parameters for which this assumption may break down, so maybe it's the case to fully implement the fluid in the initial condition routine"); + /* check values of w_fld at initial time and today */ + class_call(background_w_fld(pba, 0., &w_fld_ini,&dw_over_da_fld,&integral_fld), pba->error_message, ppt->error_message); + class_call(background_w_fld(pba,pba->a_today,&w_fld_0,&dw_over_da_fld,&integral_fld), pba->error_message, ppt->error_message); - class_test((pba->w0_fld==-1.) && (pba->wa_fld==0.), + class_test(w_fld_ini >= 0., ppt->error_message, - "Your choice of a fluid with (w0,wa)=(-1,0) is not valid due to instabilities in the unphysical perturbations of such a fluid. Try instead with a plain cosmological constant"); + "The fluid is meant to be negligible at early time, and unimportant for defining the initial conditions of other species. You are using parameters for which this assumption may break down, since at early times you have w_fld(a--->0) = %e >= 0",w_fld_ini); - class_test(((pba->w0_fld + pba->wa_fld +1.0)*(pba->w0_fld+1.0)) < 0.0, - ppt->error_message, - "w crosses -1 between the infinite past and today, and this would lead to divergent perturbation equations for the fluid."); + if (pba->use_ppf == _FALSE_) { + + class_test((w_fld_ini +1.0)*(w_fld_0+1.0) <= 0.0, + ppt->error_message, + "w crosses -1 between the infinite past and today, and this would lead to divergent perturbation equations for the fluid perturbations. Try to switch to PPF scheme: use_ppf = yes"); + + /* the next check is meaningful at least for w(a) = w0 + wa*(1-a/a0); for general formulas and with use_ppf=no, you may prefer to comment it out... */ + class_test((w_fld_0 == -1.) && (dw_over_da_fld == 0.), + ppt->error_message, + "Your choice of a fluid with (w0,wa)=(-1,0) is not valid due to instabilities in the unphysical perturbations of such a fluid. Try instead with a plain cosmological constant or with PPF scheme: use_ppf = yes"); + + } } @@ -232,6 +618,20 @@ int perturb_init( } } + class_test((pba->h > _h_BIG_) || (pba->h < _h_SMALL_), + ppt->error_message, + "Your value of pba->h=%e is out of the bounds [%e , %e] and could cause a crash of the perturbation ODE integration. If you want to force this barrier, you may comment it out in perturbation.c", + pba->h, + _h_SMALL_, + _h_BIG_); + + class_test((pba->Omega0_b*pba->h*pba->h < _omegab_SMALL_) || (pba->Omega0_b*pba->h*pba->h > _omegab_BIG_), + ppt->error_message, + "Your value of omega_b=%e is out of the bounds [%e , %e] and could cause a crash of the perturbation ODE integration. If you want to force this barrier, you may comment it out in perturbation.c", + pba->Omega0_b*pba->h*pba->h, + _omegab_SMALL_, + _omegab_BIG_); + /** - initialize all indices and lists in perturbs structure using perturb_indices_of_perturbs() */ class_call(perturb_indices_of_perturbs(ppr, @@ -250,7 +650,7 @@ int perturb_init( ppt->z_max_pk, pth->z_rec); - class_test(ppt->has_source_delta_m == _TRUE_, + class_test(ppt->has_source_delta_m == _TRUE_, ppt->error_message, "You requested a very high z_pk=%e, higher than z_rec=%e. This works very well when you ask only transfer functions, e.g. with 'output=mTk' or 'output=mTk,vTk'. But if you need the total matter (e.g. with 'mPk', 'dCl', etc.) there is an issue with the calculation of delta_m at very early times. By default, delta_m is a gauge-invariant variable (the density fluctuation in comoving gauge) and this quantity is hard to get accurately at very early times. The solution is to define delta_m as the density fluctuation in the current gauge, synchronous or newtonian. For the moment this must be done manually by commenting the line 'ppw->delta_m += 3. *ppw->pvecback[pba->index_bg_a]*ppw->pvecback[pba->index_bg_H] * ppw->theta_m/k2;' in perturb_sources(). In the future there will be an option for doing it in an easier way.", ppt->z_max_pk, @@ -270,12 +670,12 @@ int perturb_init( ppt->error_message, ppt->error_message); - /** - if we want to store perturbations, write titles and allocate storage */ - class_call(perturb_prepare_output(pba,ppt), + /** - if we want to store perturbations for given k values, write titles and allocate storage */ + + class_call(perturb_prepare_k_output(pba,ppt), ppt->error_message, ppt->error_message); - /** - create an array of workspaces in multi-thread case */ #ifdef _OPENMP @@ -299,9 +699,9 @@ int perturb_init( sz = sizeof(struct perturb_workspace); -#pragma omp parallel \ - shared(pppw,ppr,pba,pth,ppt,index_md,abort,number_of_threads) \ - private(thread) \ +#pragma omp parallel \ + shared(pppw,ppr,pba,pth,ppt,index_md,abort,number_of_threads) \ + private(thread) \ num_threads(number_of_threads) { @@ -333,11 +733,10 @@ int perturb_init( for (index_ic = 0; index_ic < ppt->ic_size[index_md]; index_ic++) { - if (ppt->perturbations_verbose > 1) + if (ppt->perturbations_verbose > 1) { printf("Evolving ic %d/%d\n",index_ic+1,ppt->ic_size[index_md]); - - if (ppt->perturbations_verbose > 1) - printf("evolving %d wavenumbers\n",ppt->k_size[index_md]); + printf("evolving %d wavenumbers\n",ppt->k_size[index_md]); + } abort = _FALSE_; @@ -392,7 +791,7 @@ int perturb_init( } /* end of loop over wavenumbers */ #ifdef _OPENMP - if (ppt->perturbations_verbose>1) + if (ppt->perturbations_verbose>2) printf("In %s: time spent in parallel region (loop over k's) = %e s for thread %d\n", __func__,tspent,omp_get_thread_num()); #endif @@ -405,9 +804,9 @@ int perturb_init( abort = _FALSE_; -#pragma omp parallel \ - shared(pppw,ppt,index_md,abort,number_of_threads) \ - private(thread) \ +#pragma omp parallel \ + shared(pppw,ppt,index_md,abort,number_of_threads) \ + private(thread) \ num_threads(number_of_threads) { @@ -428,6 +827,49 @@ int perturb_init( free(pppw); + /** - spline the source array with respect to the time variable */ + + if (ppt->ln_tau_size > 1) { + + for (index_md = 0; index_md < ppt->md_size; index_md++) { + + for (index_ic = 0; index_ic < ppt->ic_size[index_md]; index_ic++) { + + abort = _FALSE_; + +#pragma omp parallel \ + shared(ppt,index_md,index_ic,abort,number_of_threads) \ + private(index_tp) \ + num_threads(number_of_threads) + + { + +#pragma omp for schedule (dynamic) + + for (index_tp = 0; index_tp < ppt->tp_size[index_md]; index_tp++) { + + class_call_parallel(array_spline_table_lines(ppt->ln_tau, + ppt->ln_tau_size, + ppt->late_sources[index_md][index_ic * ppt->tp_size[index_md] + index_tp], + ppt->k_size[index_md], + ppt->ddlate_sources[index_md][index_ic*ppt->tp_size[index_md] + index_tp], + _SPLINE_EST_DERIV_, + ppt->error_message), + ppt->error_message, + ppt->error_message); + + } + + } /* end of parallel region */ + + if (abort == _TRUE_) return _FAILURE_; + + } /* end of loop over initial condition */ + + } /* end of loop over mode */ + + } + return _SUCCESS_; } @@ -445,7 +887,7 @@ int perturb_free( struct perturbs * ppt ) { - int index_md,index_ic,index_type; + int index_md,index_ic,index_tp; int filenum; if (ppt->has_perturbations == _TRUE_) { @@ -454,21 +896,26 @@ int perturb_free( for (index_ic = 0; index_ic < ppt->ic_size[index_md]; index_ic++) { - for (index_type = 0; index_type < ppt->tp_size[index_md]; index_type++) { + for (index_tp = 0; index_tp < ppt->tp_size[index_md]; index_tp++) { - free(ppt->sources[index_md][index_ic*ppt->tp_size[index_md]+index_type]); + free(ppt->sources[index_md][index_ic*ppt->tp_size[index_md]+index_tp]); + if (ppt->ln_tau_size > 1) + free(ppt->ddlate_sources[index_md][index_ic*ppt->tp_size[index_md]+index_tp]); } - } free(ppt->sources[index_md]); + free(ppt->late_sources[index_md]); + free(ppt->ddlate_sources[index_md]); free(ppt->k[index_md]); } free(ppt->tau_sampling); + if (ppt->ln_tau_size > 1) + free(ppt->ln_tau); free(ppt->tp_size); @@ -483,6 +930,14 @@ int perturb_free( free(ppt->k_size); free(ppt->sources); + free(ppt->late_sources); + free(ppt->ddlate_sources); + + if (ppt->alpha_idm_dr != NULL) + free(ppt->alpha_idm_dr); + + if (ppt->beta_idr != NULL) + free(ppt->beta_idr); /** Stuff related to perturbations output: */ @@ -530,6 +985,7 @@ int perturb_indices_of_perturbs( int index_md; int index_ic; int index_type_common; + int filenum; /** - count modes (scalar, vector, tensor) and assign corresponding indices */ @@ -553,7 +1009,23 @@ int perturb_indices_of_perturbs( /** - allocate array of arrays of source functions for each mode, ppt->source[index_md] */ - class_alloc(ppt->sources,ppt->md_size * sizeof(double *),ppt->error_message); + class_alloc(ppt->sources, ppt->md_size * sizeof(double *),ppt->error_message); + class_alloc(ppt->late_sources, ppt->md_size * sizeof(double *),ppt->error_message); + class_alloc(ppt->ddlate_sources,ppt->md_size * sizeof(double *),ppt->error_message); + + /** - initialize variables for the output of k values */ + + ppt->index_k_output_values=NULL; + + ppt->number_of_scalar_titles=0; + ppt->number_of_vector_titles=0; + ppt->number_of_tensor_titles=0; + + for (filenum = 0; filenum<_MAX_NUMBER_OF_K_FILES_; filenum++){ + ppt->scalar_perturbations_data[filenum] = NULL; + ppt->vector_perturbations_data[filenum] = NULL; + ppt->tensor_perturbations_data[filenum] = NULL; + } /** - initialization of all flags to false (will eventually be set to true later) */ @@ -563,6 +1035,8 @@ int perturb_indices_of_perturbs( ppt->has_source_t = _FALSE_; ppt->has_source_p = _FALSE_; ppt->has_source_delta_m = _FALSE_; + ppt->has_source_delta_cb = _FALSE_; + ppt->has_source_delta_tot = _FALSE_; ppt->has_source_delta_g = _FALSE_; ppt->has_source_delta_b = _FALSE_; ppt->has_source_delta_cdm = _FALSE_; @@ -571,8 +1045,12 @@ int perturb_indices_of_perturbs( ppt->has_source_delta_scf = _FALSE_; ppt->has_source_delta_dr = _FALSE_; ppt->has_source_delta_ur = _FALSE_; + ppt->has_source_delta_idr = _FALSE_; + ppt->has_source_delta_idm_dr = _FALSE_; ppt->has_source_delta_ncdm = _FALSE_; ppt->has_source_theta_m = _FALSE_; + ppt->has_source_theta_cb = _FALSE_; + ppt->has_source_theta_tot = _FALSE_; ppt->has_source_theta_g = _FALSE_; ppt->has_source_theta_b = _FALSE_; ppt->has_source_theta_cdm = _FALSE_; @@ -581,11 +1059,19 @@ int perturb_indices_of_perturbs( ppt->has_source_theta_scf = _FALSE_; ppt->has_source_theta_dr = _FALSE_; ppt->has_source_theta_ur = _FALSE_; + ppt->has_source_theta_idr = _FALSE_; + ppt->has_source_theta_idm_dr = _FALSE_; ppt->has_source_theta_ncdm = _FALSE_; ppt->has_source_phi = _FALSE_; ppt->has_source_phi_prime = _FALSE_; ppt->has_source_phi_plus_psi = _FALSE_; ppt->has_source_psi = _FALSE_; + ppt->has_source_h = _FALSE_; + ppt->has_source_h_prime = _FALSE_; + ppt->has_source_eta = _FALSE_; + ppt->has_source_eta_prime = _FALSE_; + ppt->has_source_H_T_Nb_prime = _FALSE_; + ppt->has_source_k2gamma_Nb = _FALSE_; /** - source flags and indices, for sources that all modes have in common (temperature, polarization, ...). For temperature, the @@ -643,10 +1129,15 @@ int perturb_indices_of_perturbs( if ((ppt->has_pk_matter == _TRUE_) || (ppt->has_nl_corrections_based_on_delta_m)) { ppt->has_lss = _TRUE_; ppt->has_source_delta_m = _TRUE_; + + if (pba->has_ncdm == _TRUE_){ + ppt->has_source_delta_cb = _TRUE_; + } } if (ppt->has_density_transfers == _TRUE_) { ppt->has_lss = _TRUE_; + ppt->has_source_delta_tot = _TRUE_; ppt->has_source_delta_g = _TRUE_; ppt->has_source_delta_b = _TRUE_; if (pba->has_cdm == _TRUE_) @@ -659,6 +1150,10 @@ int perturb_indices_of_perturbs( ppt->has_source_delta_scf = _TRUE_; if (pba->has_ur == _TRUE_) ppt->has_source_delta_ur = _TRUE_; + if (pba->has_idr == _TRUE_) + ppt->has_source_delta_idr = _TRUE_; + if (pba->has_idm_dr == _TRUE_) + ppt->has_source_delta_idm_dr = _TRUE_; if (pba->has_dr == _TRUE_) ppt->has_source_delta_dr = _TRUE_; if (pba->has_ncdm == _TRUE_) @@ -673,6 +1168,7 @@ int perturb_indices_of_perturbs( if (ppt->has_velocity_transfers == _TRUE_) { ppt->has_lss = _TRUE_; + ppt->has_source_theta_tot = _TRUE_; ppt->has_source_theta_g = _TRUE_; ppt->has_source_theta_b = _TRUE_; if ((pba->has_cdm == _TRUE_) && (ppt->gauge != synchronous)) @@ -685,6 +1181,10 @@ int perturb_indices_of_perturbs( ppt->has_source_theta_scf = _TRUE_; if (pba->has_ur == _TRUE_) ppt->has_source_theta_ur = _TRUE_; + if (pba->has_idr == _TRUE_) + ppt->has_source_theta_idr = _TRUE_; + if (pba->has_idm_dr == _TRUE_) + ppt->has_source_theta_idm_dr = _TRUE_; if (pba->has_dr == _TRUE_) ppt->has_source_theta_dr = _TRUE_; if (pba->has_ncdm == _TRUE_) @@ -698,7 +1198,13 @@ int perturb_indices_of_perturbs( } if (ppt->has_nc_rsd == _TRUE_) { ppt->has_source_theta_m = _TRUE_; + if (pba->has_ncdm == _TRUE_) + /* we may not need theta_cb at all, rsd always defined for + the total matter, but at least this is made + available */ + ppt->has_source_theta_cb = _TRUE_; } + if (ppt->has_nc_lens == _TRUE_) { ppt->has_source_phi_plus_psi = _TRUE_; } @@ -710,20 +1216,52 @@ int perturb_indices_of_perturbs( } } + if ( ppt->has_metricpotential_transfers == _TRUE_ ) { + if (ppt->gauge == newtonian) { + ppt->has_source_phi = _TRUE_; + ppt->has_source_psi = _TRUE_; + ppt->has_source_phi_prime = _TRUE_; + } + if (ppt->gauge == synchronous) { + ppt->has_source_h = _TRUE_; + ppt->has_source_h_prime = _TRUE_; + ppt->has_source_eta = _TRUE_; + ppt->has_source_eta_prime = _TRUE_; + } + ppt->has_source_H_T_Nb_prime = _TRUE_; + ppt->has_source_k2gamma_Nb = _TRUE_; + } + + if (ppt->has_Nbody_gauge_transfers == _TRUE_){ + if (ppt->gauge == synchronous) { + ppt->has_source_h_prime = _TRUE_; + ppt->has_source_eta_prime = _TRUE_; + } + ppt->has_source_H_T_Nb_prime = _TRUE_; + /** gamma is not neccessary for converting output to Nbody gauge but is included anyway. */ + ppt->has_source_k2gamma_Nb = _TRUE_; + } + index_type = index_type_common; class_define_index(ppt->index_tp_t0, ppt->has_source_t, index_type,1); class_define_index(ppt->index_tp_t1, ppt->has_source_t, index_type,1); class_define_index(ppt->index_tp_delta_m, ppt->has_source_delta_m, index_type,1); + class_define_index(ppt->index_tp_delta_cb, ppt->has_source_delta_cb, index_type,1); + class_define_index(ppt->index_tp_delta_tot, ppt->has_source_delta_tot, index_type,1); class_define_index(ppt->index_tp_delta_g, ppt->has_source_delta_g, index_type,1); class_define_index(ppt->index_tp_delta_b, ppt->has_source_delta_b, index_type,1); class_define_index(ppt->index_tp_delta_cdm, ppt->has_source_delta_cdm, index_type,1); class_define_index(ppt->index_tp_delta_dcdm, ppt->has_source_delta_dcdm,index_type,1); class_define_index(ppt->index_tp_delta_fld, ppt->has_source_delta_fld, index_type,1); class_define_index(ppt->index_tp_delta_scf, ppt->has_source_delta_scf, index_type,1); - class_define_index(ppt->index_tp_delta_dr, ppt->has_source_delta_dr, index_type,1); + class_define_index(ppt->index_tp_delta_dr, ppt->has_source_delta_dr, index_type,1); class_define_index(ppt->index_tp_delta_ur, ppt->has_source_delta_ur, index_type,1); + class_define_index(ppt->index_tp_delta_idr, ppt->has_source_delta_idr, index_type,1); + class_define_index(ppt->index_tp_delta_idm_dr, ppt->has_source_delta_idm_dr, index_type,1); class_define_index(ppt->index_tp_delta_ncdm1,ppt->has_source_delta_ncdm,index_type,pba->N_ncdm); class_define_index(ppt->index_tp_theta_m, ppt->has_source_theta_m, index_type,1); + class_define_index(ppt->index_tp_theta_cb, ppt->has_source_theta_cb, index_type,1); + class_define_index(ppt->index_tp_theta_tot, ppt->has_source_theta_tot, index_type,1); class_define_index(ppt->index_tp_theta_g, ppt->has_source_theta_g, index_type,1); class_define_index(ppt->index_tp_theta_b, ppt->has_source_theta_b, index_type,1); class_define_index(ppt->index_tp_theta_cdm, ppt->has_source_theta_cdm, index_type,1); @@ -732,11 +1270,19 @@ int perturb_indices_of_perturbs( class_define_index(ppt->index_tp_theta_scf, ppt->has_source_theta_scf, index_type,1); class_define_index(ppt->index_tp_theta_dr, ppt->has_source_theta_dr, index_type,1); class_define_index(ppt->index_tp_theta_ur, ppt->has_source_theta_ur, index_type,1); + class_define_index(ppt->index_tp_theta_idr, ppt->has_source_theta_idr, index_type,1); + class_define_index(ppt->index_tp_theta_idm_dr, ppt->has_source_theta_idm_dr, index_type,1); class_define_index(ppt->index_tp_theta_ncdm1,ppt->has_source_theta_ncdm,index_type,pba->N_ncdm); class_define_index(ppt->index_tp_phi, ppt->has_source_phi, index_type,1); class_define_index(ppt->index_tp_phi_prime, ppt->has_source_phi_prime, index_type,1); class_define_index(ppt->index_tp_phi_plus_psi,ppt->has_source_phi_plus_psi,index_type,1); class_define_index(ppt->index_tp_psi, ppt->has_source_psi, index_type,1); + class_define_index(ppt->index_tp_h, ppt->has_source_h, index_type,1); + class_define_index(ppt->index_tp_h_prime, ppt->has_source_h_prime, index_type,1); + class_define_index(ppt->index_tp_eta, ppt->has_source_eta, index_type,1); + class_define_index(ppt->index_tp_eta_prime, ppt->has_source_eta_prime, index_type,1); + class_define_index(ppt->index_tp_H_T_Nb_prime,ppt->has_source_H_T_Nb_prime,index_type,1); + class_define_index(ppt->index_tp_k2gamma_Nb, ppt->has_source_k2gamma_Nb,index_type,1); ppt->tp_size[index_md] = index_type; class_test(index_type == 0, @@ -770,9 +1316,9 @@ int perturb_indices_of_perturbs( ppt->tp_size[index_md] = index_type; /* - class_test(index_type == 0, - ppt->error_message, - "inconsistent input: you asked for vectors, so you should have at least one non-zero vector source type (temperature or polarization). Please adjust your input."); + class_test(index_type == 0, + ppt->error_message, + "inconsistent input: you asked for vectors, so you should have at least one non-zero vector source type (temperature or polarization). Please adjust your input."); */ /** - --> initial conditions for vectors*/ @@ -793,9 +1339,9 @@ int perturb_indices_of_perturbs( ppt->tp_size[index_md] = index_type; /* - class_test(index_type == 0, - ppt->error_message, - "inconsistent input: you asked for tensors, so you should have at least one non-zero tensor source type (temperature or polarization). Please adjust your input."); + class_test(index_type == 0, + ppt->error_message, + "inconsistent input: you asked for tensors, so you should have at least one non-zero tensor source type (temperature or polarization). Please adjust your input."); */ /** - --> only one initial condition for tensors*/ @@ -812,6 +1358,14 @@ int perturb_indices_of_perturbs( ppt->ic_size[index_md] * ppt->tp_size[index_md] * sizeof(double *), ppt->error_message); + class_alloc(ppt->late_sources[index_md], + ppt->ic_size[index_md] * ppt->tp_size[index_md] * sizeof(double *), + ppt->error_message); + + class_alloc(ppt->ddlate_sources[index_md], + ppt->ic_size[index_md] * ppt->tp_size[index_md] * sizeof(double *), + ppt->error_message); + } return _SUCCESS_; @@ -845,8 +1399,9 @@ int perturb_timesampling_for_sources( int counter; int index_md; - int index_type; + int index_tp; int index_ic; + int index_tau; int last_index_back; int last_index_thermo; int first_index_back; @@ -1179,17 +1734,80 @@ int perturb_timesampling_for_sources( free(pvecback); free(pvecthermo); + /** - check the maximum redshift z_max_pk at which the Fourier + transfer functions \f$ T_i(k,z)\f$ should be computable by + interpolation. If it is equal to zero, only \f$ T_i(k,z=0)\f$ + needs to be computed. If it is higher, we will store a table of + log(tau) in the relevant time range, generously encompassing the + range 0z_max_pk < 0, + ppt->error_message, + "asked for negative redshift z=%e",ppt->z_max_pk); + + /* if z_max_pk=0, there is just one value to store */ + if (ppt->z_max_pk == 0.) { + ppt->ln_tau_size=1; + } + + /* if z_max_pk>0, store several values (with a comfortable margin above z_max_pk) in view of interpolation */ + else{ + /* find the first relevant value of tau (last value in the table tau_sampling before tau(z_max)) and infer the number of values of tau at which P(k) must be stored */ + + class_call(background_tau_of_z(pba,ppt->z_max_pk,&tau_lower), + pba->error_message, + ppt->error_message); + + index_tau=0; + class_test((tau_lower <= ppt->tau_sampling[index_tau]), + ppt->error_message, + "you asked for zmax=%e, i.e. taumin=%e, smaller than or equal to the first possible value =%e; it should be strictly bigger for a successfull interpolation",ppt->z_max_pk,tau_lower,ppt->tau_sampling[0]); + + while (ppt->tau_sampling[index_tau] < tau_lower){ + index_tau++; + } + index_tau --; + class_test(index_tau<0, + ppt->error_message, + "by construction, this should never happen, a bug must have been introduced somewhere"); + + /* whenever possible, take a few more values in to avoid boundary effects in the interpolation */ + if (index_tau>0) index_tau--; + if (index_tau>0) index_tau--; + if (index_tau>0) index_tau--; + if (index_tau>0) index_tau--; + ppt->ln_tau_size=ppt->tau_size-index_tau; + + /* allocate and fill array of log(tau) */ + class_alloc(ppt->ln_tau,ppt->ln_tau_size * sizeof(double),ppt->error_message); + + for (index_tau=0; index_tauln_tau_size; index_tau++) { + ppt->ln_tau[index_tau]=log(ppt->tau_sampling[index_tau-ppt->ln_tau_size+ppt->tau_size]); + } + } + /** - loop over modes, initial conditions and types. For each of them, allocate array of source functions. */ for (index_md = 0; index_md < ppt->md_size; index_md++) { for (index_ic = 0; index_ic < ppt->ic_size[index_md]; index_ic++) { - for (index_type = 0; index_type < ppt->tp_size[index_md]; index_type++) { + for (index_tp = 0; index_tp < ppt->tp_size[index_md]; index_tp++) { - class_alloc(ppt->sources[index_md][index_ic*ppt->tp_size[index_md]+index_type], + class_alloc(ppt->sources[index_md][index_ic*ppt->tp_size[index_md]+index_tp], ppt->k_size[index_md] * ppt->tau_size * sizeof(double), ppt->error_message); + if (ppt->ln_tau_size > 1) { + /* late_sources is just a pointer to the end of sources (starting from the relevant time index) */ + ppt->late_sources[index_md][index_ic*ppt->tp_size[index_md]+index_tp] = &(ppt->sources[index_md] + [index_ic * ppt->tp_size[index_md] + index_tp] + [(ppt->tau_size-ppt->ln_tau_size) * ppt->k_size[index_md]]); + + class_alloc(ppt->ddlate_sources[index_md][index_ic*ppt->tp_size[index_md]+index_tp], + ppt->k_size[index_md] * ppt->ln_tau_size * sizeof(double), + ppt->error_message); + } } } } @@ -1209,11 +1827,11 @@ int perturb_timesampling_for_sources( */ int perturb_get_k_list( - struct precision * ppr, - struct background * pba, - struct thermo * pth, - struct perturbs * ppt - ) { + struct precision * ppr, + struct background * pba, + struct thermo * pth, + struct perturbs * ppt + ) { int index_k, index_k_output, index_mode; double k,k_min=0.,k_rec,step,tau1; double * k_max_cmb; @@ -1327,12 +1945,9 @@ int perturb_get_k_list( /* find k_max: */ - if ((ppt->has_pk_matter == _TRUE_) || (ppt->has_density_transfers == _TRUE_) || (ppt->has_velocity_transfers == _TRUE_)) + if ((ppt->has_pk_matter == _TRUE_) || (ppt->has_density_transfers == _TRUE_) || (ppt->has_velocity_transfers == _TRUE_) || (ppt->has_nl_corrections_based_on_delta_m == _TRUE_)) k_max = MAX(k_max,ppt->k_max_for_pk); - if (ppt->has_nl_corrections_based_on_delta_m == _TRUE_) - k_max = MAX(k_max,ppr->halofit_min_k_max); - /** - --> test that result for k_min, k_max make sense */ class_test(k_min<0., @@ -1358,10 +1973,21 @@ int perturb_get_k_list( K=0, K<0, K>0 */ /* allocate array with, for the moment, the largest possible size */ - class_alloc(ppt->k[ppt->index_md_scalars], - ((int)((k_max_cmb[ppt->index_md_scalars]-k_min)/k_rec/MIN(ppr->k_step_super,ppr->k_step_sub))+ - (int)(MAX(ppr->k_per_decade_for_pk,ppr->k_per_decade_for_bao)*log(k_max/k_min)/log(10.))+3) - *sizeof(double),ppt->error_message); + + /* the following is a boost on k_per_decade_for_pk for the interacting idm-idr cases (relevant for large k and a_idm_dr) */ + if((pba->has_idm_dr==_TRUE_)&&(pth->nindex_idm_dr>=2)){ + class_alloc(ppt->k[ppt->index_md_scalars], + ((int)((k_max_cmb[ppt->index_md_scalars]-k_min)/k_rec/MIN(ppr->k_step_super,ppr->k_step_sub))+ + (int)(MAX(ppr->k_per_decade_for_pk*ppr->idmdr_boost_k_per_decade_for_pk*pth->nindex_idm_dr,ppr->k_per_decade_for_bao)*log(k_max/k_min)/log(10.))+3) + *sizeof(double),ppt->error_message); + } + + else{ + class_alloc(ppt->k[ppt->index_md_scalars], + ((int)((k_max_cmb[ppt->index_md_scalars]-k_min)/k_rec/MIN(ppr->k_step_super,ppr->k_step_sub))+ + (int)(MAX(ppr->k_per_decade_for_pk,ppr->k_per_decade_for_bao)*log(k_max/k_min)/log(10.))+3) + *sizeof(double),ppt->error_message); + } /* first value */ @@ -1433,10 +2059,16 @@ int perturb_get_k_list( /* values until k_max */ while (k < k_max) { - - k *= pow(10.,1./(ppr->k_per_decade_for_pk - +(ppr->k_per_decade_for_bao-ppr->k_per_decade_for_pk) - *(1.-tanh(pow((log(k)-log(ppr->k_bao_center*k_rec))/log(ppr->k_bao_width),4))))); + if((pba->has_idm_dr==_TRUE_)&&(pth->nindex_idm_dr>=2)){ + k *= pow(10.,1./(ppr->k_per_decade_for_pk*ppr->idmdr_boost_k_per_decade_for_pk*pth->nindex_idm_dr + +(ppr->k_per_decade_for_bao-ppr->k_per_decade_for_pk*ppr->idmdr_boost_k_per_decade_for_pk*pth->nindex_idm_dr) + *(1.-tanh(pow((log(k)-log(ppr->k_bao_center*k_rec))/log(ppr->k_bao_width),4))))); + } + else{ + k *= pow(10.,1./(ppr->k_per_decade_for_pk + +(ppr->k_per_decade_for_bao-ppr->k_per_decade_for_pk) + *(1.-tanh(pow((log(k)-log(ppr->k_bao_center*k_rec))/log(ppr->k_bao_width),4))))); + } ppt->k[ppt->index_md_scalars][index_k] = k; index_k++; @@ -1719,7 +2351,8 @@ int perturb_get_k_list( } /** - If user asked for k_output_values, add those to all k lists: */ - if (ppt->k_output_values_num>0){ + if (ppt->k_output_values_num > 0) { + /* Allocate storage */ class_alloc(ppt->index_k_output_values,sizeof(double)*ppt->md_size*ppt->k_output_values_num,ppt->error_message); @@ -1779,13 +2412,13 @@ int perturb_get_k_list( /* For testing, can be useful to print the k list in a file: - FILE * out=fopen("output/k","w"); + FILE * out=fopen("output/k","w"); - for (index_k=0; index_k < ppt->k_size[0]; index_k++) { + for (index_k=0; index_k < ppt->k_size[0]; index_k++) { - fprintf(out,"%e\n",ppt->k[0][index_k],pba->K); + fprintf(out,"%e\n",ppt->k[0][index_k],pba->K); - } + } fclose(out); */ @@ -1851,6 +2484,7 @@ int perturb_workspace_init( if (_scalars_) { ppw->max_l_max = MAX(ppr->l_max_g, ppr->l_max_pol_g); if (pba->has_ur == _TRUE_) ppw->max_l_max = MAX(ppw->max_l_max, ppr->l_max_ur); + if ((pba->has_idr == _TRUE_) && (ppt->idr_nature == idr_free_streaming)) ppw->max_l_max = MAX(ppw->max_l_max, ppr->l_max_idr); if (pba->has_ncdm == _TRUE_) ppw->max_l_max = MAX(ppw->max_l_max, ppr->l_max_ncdm); if (pba->has_dr == _TRUE_) ppw->max_l_max = MAX(ppw->max_l_max, ppr->l_max_dr); } @@ -1940,6 +2574,8 @@ int perturb_workspace_init( class_define_index(ppw->index_ap_ufa,pba->has_ur,index_ap,1); class_define_index(ppw->index_ap_ncdmfa,pba->has_ncdm,index_ap,1); + class_define_index(ppw->index_ap_tca_idm_dr,pba->has_idm_dr,index_ap,1); + class_define_index(ppw->index_ap_rsa_idr,pba->has_idr,index_ap,1); } @@ -1956,6 +2592,12 @@ int perturb_workspace_init( ppw->approx[ppw->index_ap_tca]=(int)tca_on; ppw->approx[ppw->index_ap_rsa]=(int)rsa_off; + + if (pba->has_idr == _TRUE_) + ppw->approx[ppw->index_ap_rsa_idr]=(int)rsa_idr_off; + if (pba->has_idm_dr == _TRUE_) + ppw->approx[ppw->index_ap_tca_idm_dr]=(int)tca_idm_dr_on; + if (pba->has_ur == _TRUE_) { ppw->approx[ppw->index_ap_ufa]=(int)ufa_off; } @@ -2080,7 +2722,7 @@ int perturb_solve( int tau_actual_size; /* running index over types (temperature, etc) */ - int index_type; + int index_tp; /* Fourier mode */ double k; @@ -2328,11 +2970,6 @@ int perturb_solve( if (ppt->index_k_output_values[index_md*ppt->k_output_values_num+index_ikout] == index_k){ ppw->index_ikout = index_ikout; perhaps_print_variables = perturb_print_variables; - /* class_call(perturb_prepare_output_file( - pba,ppt,ppw,index_ikout,index_md), - ppt->error_message, - ppt->error_message); - */ } } @@ -2417,9 +3054,9 @@ int perturb_solve( the last integrated time tau_max and tau_today. */ for (index_tau = tau_actual_size; index_tau < ppt->tau_size; index_tau++) { - for (index_type = 0; index_type < ppt->tp_size[index_md]; index_type++) { + for (index_tp = 0; index_tp < ppt->tp_size[index_md]; index_tp++) { ppt->sources[index_md] - [index_ic * ppt->tp_size[index_md] + index_type] + [index_ic * ppt->tp_size[index_md] + index_tp] [index_tau * ppt->k_size[index_md] + index_k] = 0.; } } @@ -2440,9 +3077,18 @@ int perturb_solve( return _SUCCESS_; } -int perturb_prepare_output(struct background * pba, - struct perturbs * ppt){ +/** + * Fill array of strings with the name of the 'k_output_values' + * functions (transfer functions as a function of time, for fixed + * values of k). + * + * @param pba Input: pointer to the background structure + * @param ppt Input/Output: pointer to the perturbation structure + * @return the error status + */ +int perturb_prepare_k_output(struct background * pba, + struct perturbs * ppt){ int n_ncdm; char tmp[40]; @@ -2475,6 +3121,14 @@ int perturb_prepare_output(struct background * pba, class_store_columntitle(ppt->scalar_titles,"delta_ur",pba->has_ur); class_store_columntitle(ppt->scalar_titles,"theta_ur",pba->has_ur); class_store_columntitle(ppt->scalar_titles,"shear_ur",pba->has_ur); + /* Interacting dark radiation */ + class_store_columntitle(ppt->scalar_titles,"delta_idr",pba->has_idr); + class_store_columntitle(ppt->scalar_titles,"theta_idr",pba->has_idr); + if ((pba->has_idr == _TRUE_)&&(ppt->idr_nature == idr_free_streaming)) + class_store_columntitle(ppt->scalar_titles,"shear_idr",_TRUE_); + /* Interacting dark matter */ + class_store_columntitle(ppt->scalar_titles,"delta_idm_dr",pba->has_idm_dr); + class_store_columntitle(ppt->scalar_titles,"theta_idm_dr",pba->has_idm_dr); /* Cold dark matter */ class_store_columntitle(ppt->scalar_titles,"delta_cdm",pba->has_cdm); class_store_columntitle(ppt->scalar_titles,"theta_cdm",pba->has_cdm); @@ -2501,6 +3155,10 @@ int perturb_prepare_output(struct background * pba, /* Scalar field scf */ class_store_columntitle(ppt->scalar_titles, "delta_scf", pba->has_scf); class_store_columntitle(ppt->scalar_titles, "theta_scf", pba->has_scf); + /** Fluid */ + class_store_columntitle(ppt->scalar_titles, "delta_rho_fld", pba->has_fld); + class_store_columntitle(ppt->scalar_titles, "rho_plus_p_theta_fld", pba->has_fld); + class_store_columntitle(ppt->scalar_titles, "delta_p_fld", pba->has_fld); ppt->number_of_scalar_titles = get_number_of_titles(ppt->scalar_titles); @@ -2544,7 +3202,6 @@ int perturb_prepare_output(struct background * pba, } - /** * For a given mode and wavenumber, find the number of intervals of * time between tau_ini and tau_end such that the approximation @@ -2856,6 +3513,18 @@ int perturb_find_approximation_switches( (interval_approx[index_switch][ppw->index_ap_rsa]==(int)rsa_on)) fprintf(stdout,"Mode k=%e: will switch on radiation streaming approximation at tau=%e\n",k,interval_limit[index_switch]); + if (pba->has_idr == _TRUE_){ + if ((interval_approx[index_switch-1][ppw->index_ap_rsa_idr]==(int)rsa_idr_off) && + (interval_approx[index_switch][ppw->index_ap_rsa_idr]==(int)rsa_idr_on)) + fprintf(stdout,"Mode k=%e: will switch on dark radiation streaming approximation at tau=%e\n",k,interval_limit[index_switch]); + } + + if (pba->has_idm_dr == _TRUE_){ + if ((interval_approx[index_switch-1][ppw->index_ap_tca_idm_dr]==(int)tca_idm_dr_on) && + (interval_approx[index_switch][ppw->index_ap_tca_idm_dr]==(int)tca_idm_dr_off)) + fprintf(stdout,"Mode k=%e: will switch off dark tight-coupling approximation at tau=%e\n",k,interval_limit[index_switch]); + } + if (pba->has_ur == _TRUE_) { if ((interval_approx[index_switch-1][ppw->index_ap_ufa]==(int)ufa_off) && (interval_approx[index_switch][ppw->index_ap_ufa]==(int)ufa_on)) { @@ -3007,6 +3676,12 @@ int perturb_vector_init( "ppr->l_max_ur should be at least 4, i.e. we must integrate at least over neutrino/relic density, velocity, shear, third and fourth momentum"); } + if (pba->has_idr == _TRUE_){ + class_test(((ppr->l_max_idr < 4)&&(ppt->idr_nature == idr_free_streaming)), + ppt->error_message, + "ppr->l_max_idr should be at least 4, i.e. we must integrate at least over interacting dark radiation density, velocity, shear, third and fourth momentum"); + } + /* photons */ if (ppw->approx[ppw->index_ap_rsa] == (int)rsa_off) { /* if radiation streaming approximation is off */ @@ -3044,6 +3719,10 @@ int perturb_vector_init( class_define_index(ppv->index_pt_delta_cdm,pba->has_cdm,index_pt,1); /* cdm density */ class_define_index(ppv->index_pt_theta_cdm,pba->has_cdm && (ppt->gauge == newtonian),index_pt,1); /* cdm velocity */ + /* idm_dr */ + class_define_index(ppv->index_pt_delta_idm_dr,pba->has_idm_dr,index_pt,1); /* idm_dr density */ + class_define_index(ppv->index_pt_theta_idm_dr,pba->has_idm_dr,index_pt,1); /* idm_dr velocity */ + /* dcdm */ class_define_index(ppv->index_pt_delta_dcdm,pba->has_dcdm,index_pt,1); /* dcdm density */ @@ -3057,8 +3736,13 @@ int perturb_vector_init( /* fluid */ - class_define_index(ppv->index_pt_delta_fld,pba->has_fld,index_pt,1); /* fluid density */ - class_define_index(ppv->index_pt_theta_fld,pba->has_fld,index_pt,1); /* fluid velocity */ + if (pba->use_ppf == _FALSE_) { + class_define_index(ppv->index_pt_delta_fld,pba->has_fld,index_pt,1); /* fluid density */ + class_define_index(ppv->index_pt_theta_fld,pba->has_fld,index_pt,1); /* fluid velocity */ + } + else { + class_define_index(ppv->index_pt_Gamma_fld,pba->has_fld,index_pt,1); /* Gamma variable of PPF scheme */ + } /* scalar field */ @@ -3085,6 +3769,23 @@ int perturb_vector_init( } } + /* interacting dark radiation */ + + if (pba->has_idr == _TRUE_){ + if(ppw->approx[ppw->index_ap_rsa_idr]==(int)rsa_idr_off) { + class_define_index(ppv->index_pt_delta_idr,_TRUE_,index_pt,1); /* density of interacting dark radiation */ + class_define_index(ppv->index_pt_theta_idr,_TRUE_,index_pt,1); /* velocity of interacting dark radiation */ + if (ppt->idr_nature == idr_free_streaming){ + if ((pba->has_idm_dr == _FALSE_)||((pba->has_idm_dr == _TRUE_)&&(ppw->approx[ppw->index_ap_tca_idm_dr] == (int)tca_idm_dr_off))){ + class_define_index(ppv->index_pt_shear_idr,_TRUE_,index_pt,1); /* shear of interacting dark radiation */ + ppv->l_max_idr = ppr->l_max_idr; + class_define_index(ppv->index_pt_l3_idr,_TRUE_,index_pt,ppv->l_max_idr-2); /* additional momenta in Boltzmann hierarchy (beyond l=0,1,2,3) */ + } + } + } + } + + /* non-cold dark matter */ if (pba->has_ncdm == _TRUE_) { @@ -3288,6 +3989,22 @@ int perturb_vector_init( } } + if (pba->has_idr == _TRUE_) { + + /* we don't need interacting dark radiation multipoles + above l=2 (but they are defined only when rsa_idr + and tca_idm_dr are off) */ + + if (ppw->approx[ppw->index_ap_rsa_idr] == (int)rsa_idr_off){ + if (ppt->idr_nature == idr_free_streaming){ + if ((pba->has_idm_dr == _FALSE_)||((pba->has_idm_dr == _TRUE_)&&(ppw->approx[ppw->index_ap_tca_idm_dr] == (int)tca_idm_dr_off))){ + for (index_pt=ppv->index_pt_l3_idr; index_pt <= ppv->index_pt_delta_idr+ppv->l_max_idr; index_pt++) + ppv->used_in_sources[index_pt]=_FALSE_; + } + } + } + } + if (pba->has_ncdm == _TRUE_) { /* we don't need ncdm multipoles above l=2 (but they are @@ -3349,6 +4066,14 @@ int perturb_vector_init( ppt->error_message, "scalar initial conditions assume radiation streaming approximation turned off"); + if (pba->has_idr == _TRUE_) { + class_test(ppw->approx[ppw->index_ap_rsa_idr] == (int)rsa_idr_on, + ppt->error_message, + "scalar initial conditions assume dark radiation approximation turned off"); + + } + + /* we do not need to do a check for tca_idm_dr, as the initial conditions are consistent with any tca_idm_dr */ if (pba->has_ur == _TRUE_) { @@ -3421,6 +4146,12 @@ int perturb_vector_init( ppt->error_message, "at tau=%g: the tight-coupling approximation can be switched off, not on",tau); + if (pba->has_idm_dr == _TRUE_){ + class_test((pa_old[ppw->index_ap_tca] == (int)tca_idm_dr_off) && (ppw->approx[ppw->index_ap_tca] == (int)tca_idm_dr_on), + ppt->error_message, + "at tau=%g: the dark tight-coupling approximation can be switched off, not on",tau); + } + /** - ---> (a.2.) some variables (b, cdm, fld, ...) are not affected by any approximation. They need to be reconducted whatever the approximation switching is. We treat them here. Below @@ -3443,6 +4174,16 @@ int perturb_vector_init( } } + if (pba->has_idm_dr == _TRUE_) { + + ppv->y[ppv->index_pt_delta_idm_dr] = + ppw->pv->y[ppw->pv->index_pt_delta_idm_dr]; + + ppv->y[ppv->index_pt_theta_idm_dr] = + ppw->pv->y[ppw->pv->index_pt_theta_idm_dr]; + } + + if (pba->has_dcdm == _TRUE_) { ppv->y[ppv->index_pt_delta_dcdm] = @@ -3460,11 +4201,17 @@ int perturb_vector_init( if (pba->has_fld == _TRUE_) { - ppv->y[ppv->index_pt_delta_fld] = - ppw->pv->y[ppw->pv->index_pt_delta_fld]; + if (pba->use_ppf == _FALSE_) { + ppv->y[ppv->index_pt_delta_fld] = + ppw->pv->y[ppw->pv->index_pt_delta_fld]; - ppv->y[ppv->index_pt_theta_fld] = - ppw->pv->y[ppw->pv->index_pt_theta_fld]; + ppv->y[ppv->index_pt_theta_fld] = + ppw->pv->y[ppw->pv->index_pt_theta_fld]; + } + else { + ppv->y[ppv->index_pt_Gamma_fld] = + ppw->pv->y[ppw->pv->index_pt_Gamma_fld]; + } } if (pba->has_scf == _TRUE_) { @@ -3506,11 +4253,10 @@ int perturb_vector_init( approximation is switched off) */ ppv->y[ppv->index_pt_shear_g] = ppw->tca_shear_g; - ppv->y[ppv->index_pt_l3_g] = 6./7.*k/ppw->pvecthermo[pth->index_th_dkappa]*ppw->s_l[3]*ppv->y[ppv->index_pt_shear_g]; /* second-order tight-coupling approximation for l=3 */ - - ppv->y[ppv->index_pt_pol0_g] = 2.5*ppv->y[ppv->index_pt_shear_g]; /* first-order tight-coupling approximation for polarization, l=0 */ + ppv->y[ppv->index_pt_l3_g] = 6./7.*k/ppw->pvecthermo[pth->index_th_dkappa]*ppw->s_l[3]*ppv->y[ppv->index_pt_shear_g]; /* second-order tight-coupling approximation for l=3 */ + ppv->y[ppv->index_pt_pol0_g] = 2.5*ppv->y[ppv->index_pt_shear_g]; /* first-order tight-coupling approximation for polarization, l=0 */ ppv->y[ppv->index_pt_pol1_g] = k/ppw->pvecthermo[pth->index_th_dkappa]*(5.-2.*ppw->s_l[2])/6.*ppv->y[ppv->index_pt_shear_g]; /* second-order tight-coupling approximation for polarization, l=1 */ - ppv->y[ppv->index_pt_pol2_g] = 0.5*ppv->y[ppv->index_pt_shear_g]; /* first-order tight-coupling approximation for polarization, l=2 */ + ppv->y[ppv->index_pt_pol2_g] = 0.5*ppv->y[ppv->index_pt_shear_g]; /* first-order tight-coupling approximation for polarization, l=2 */ ppv->y[ppv->index_pt_pol3_g] = k/ppw->pvecthermo[pth->index_th_dkappa]*3.*ppw->s_l[3]/14.*ppv->y[ppv->index_pt_shear_g]; /* second-order tight-coupling approximation for polarization, l=3 */ if (pba->has_ur == _TRUE_) { @@ -3536,6 +4282,34 @@ int perturb_vector_init( } } + if (pba->has_idr == _TRUE_){ + + if (ppw->approx[ppw->index_ap_rsa_idr]==(int)rsa_idr_off){ + + ppv->y[ppv->index_pt_delta_idr] = + ppw->pv->y[ppw->pv->index_pt_delta_idr]; + + ppv->y[ppv->index_pt_theta_idr] = + ppw->pv->y[ppw->pv->index_pt_theta_idr]; + + if (ppt->idr_nature == idr_free_streaming){ + + if ((pba->has_idm_dr == _FALSE_)||((pba->has_idm_dr == _TRUE_)&&(ppw->approx[ppw->index_ap_tca_idm_dr] == (int)tca_idm_dr_off))){ + + ppv->y[ppv->index_pt_shear_idr] = + ppw->pv->y[ppw->pv->index_pt_shear_idr]; + + ppv->y[ppv->index_pt_l3_idr] = + ppw->pv->y[ppw->pv->index_pt_l3_idr]; + + for (l=4; l <= ppv->l_max_idr; l++) + ppv->y[ppv->index_pt_delta_idr+l] = + ppw->pv->y[ppw->pv->index_pt_delta_idr+l]; + } + } + } + } + if (pba->has_ncdm == _TRUE_) { index_pt = 0; for(n_ncdm = 0; n_ncdm < ppv->N_ncdm; n_ncdm++){ @@ -3569,7 +4343,6 @@ int perturb_vector_init( ppw->pv->y[ppw->pv->index_pt_perturbed_recombination_delta_chi]; } - /* -- case of switching on radiation streaming approximation. Provide correct initial conditions to new set of variables */ @@ -3579,6 +4352,34 @@ int perturb_vector_init( if (ppt->perturbations_verbose>2) fprintf(stdout,"Mode k=%e: switch on radiation streaming approximation at tau=%e with Omega_r=%g\n",k,tau,ppw->pvecback[pba->index_bg_Omega_r]); + if (pba->has_idr == _TRUE_){ + + if (ppw->approx[ppw->index_ap_rsa_idr]==(int)rsa_idr_off){ + + ppv->y[ppv->index_pt_delta_idr] = + ppw->pv->y[ppw->pv->index_pt_delta_idr]; + + ppv->y[ppv->index_pt_theta_idr] = + ppw->pv->y[ppw->pv->index_pt_theta_idr]; + + if (ppt->idr_nature == idr_free_streaming){ + + if ((pba->has_idm_dr == _FALSE_)||((pba->has_idm_dr == _TRUE_)&&(ppw->approx[ppw->index_ap_tca_idm_dr] == (int)tca_idm_dr_off))){ + + ppv->y[ppv->index_pt_shear_idr] = + ppw->pv->y[ppw->pv->index_pt_shear_idr]; + + ppv->y[ppv->index_pt_l3_idr] = + ppw->pv->y[ppw->pv->index_pt_l3_idr]; + + for (l=4; l <= ppv->l_max_idr; l++) + ppv->y[ppv->index_pt_delta_idr+l] = + ppw->pv->y[ppw->pv->index_pt_delta_idr+l]; + } + } + } + } + if (pba->has_ncdm == _TRUE_) { index_pt = 0; for(n_ncdm = 0; n_ncdm < ppv->N_ncdm; n_ncdm++){ @@ -3593,16 +4394,235 @@ int perturb_vector_init( } } - /* -- case of switching on ur fluid - approximation. Provide correct initial conditions to new set - of variables */ + /* -- case of switching on ur fluid + approximation. Provide correct initial conditions to new set + of variables */ + + if (pba->has_ur == _TRUE_) { + + if ((pa_old[ppw->index_ap_ufa] == (int)ufa_off) && (ppw->approx[ppw->index_ap_ufa] == (int)ufa_on)) { + + if (ppt->perturbations_verbose>2) + fprintf(stdout,"Mode k=%e: switch on ur fluid approximation at tau=%e\n",k,tau); + + if (ppw->approx[ppw->index_ap_rsa] == (int)rsa_off) { + + ppv->y[ppv->index_pt_delta_g] = + ppw->pv->y[ppw->pv->index_pt_delta_g]; + + ppv->y[ppv->index_pt_theta_g] = + ppw->pv->y[ppw->pv->index_pt_theta_g]; + } + + if ((ppw->approx[ppw->index_ap_tca] == (int)tca_off) && (ppw->approx[ppw->index_ap_rsa] == (int)rsa_off)) { + + ppv->y[ppv->index_pt_shear_g] = + ppw->pv->y[ppw->pv->index_pt_shear_g]; + + ppv->y[ppv->index_pt_l3_g] = + ppw->pv->y[ppw->pv->index_pt_l3_g]; + + for (l = 4; l <= ppw->pv->l_max_g; l++) { + + ppv->y[ppv->index_pt_delta_g+l] = + ppw->pv->y[ppw->pv->index_pt_delta_g+l]; + } + + ppv->y[ppv->index_pt_pol0_g] = + ppw->pv->y[ppw->pv->index_pt_pol0_g]; + + ppv->y[ppv->index_pt_pol1_g] = + ppw->pv->y[ppw->pv->index_pt_pol1_g]; + + ppv->y[ppv->index_pt_pol2_g] = + ppw->pv->y[ppw->pv->index_pt_pol2_g]; + + ppv->y[ppv->index_pt_pol3_g] = + ppw->pv->y[ppw->pv->index_pt_pol3_g]; + + for (l = 4; l <= ppw->pv->l_max_pol_g; l++) { + + ppv->y[ppv->index_pt_pol0_g+l] = + ppw->pv->y[ppw->pv->index_pt_pol0_g+l]; + } + + } + + if (ppw->approx[ppw->index_ap_rsa] == (int)rsa_off) { + + ppv->y[ppv->index_pt_delta_ur] = + ppw->pv->y[ppw->pv->index_pt_delta_ur]; + + ppv->y[ppv->index_pt_theta_ur] = + ppw->pv->y[ppw->pv->index_pt_theta_ur]; + + ppv->y[ppv->index_pt_shear_ur] = + ppw->pv->y[ppw->pv->index_pt_shear_ur]; + } + + if (pba->has_idr == _TRUE_){ + + if (ppw->approx[ppw->index_ap_rsa_idr]==(int)rsa_idr_off){ + + ppv->y[ppv->index_pt_delta_idr] = + ppw->pv->y[ppw->pv->index_pt_delta_idr]; + + ppv->y[ppv->index_pt_theta_idr] = + ppw->pv->y[ppw->pv->index_pt_theta_idr]; + + if (ppt->idr_nature == idr_free_streaming){ + + if ((pba->has_idm_dr == _FALSE_)||((pba->has_idm_dr == _TRUE_)&&(ppw->approx[ppw->index_ap_tca_idm_dr] == (int)tca_idm_dr_off))){ + + ppv->y[ppv->index_pt_shear_idr] = + ppw->pv->y[ppw->pv->index_pt_shear_idr]; + + ppv->y[ppv->index_pt_l3_idr] = + ppw->pv->y[ppw->pv->index_pt_l3_idr]; + + for (l=4; l <= ppv->l_max_idr; l++) + ppv->y[ppv->index_pt_delta_idr+l] = + ppw->pv->y[ppw->pv->index_pt_delta_idr+l]; + } + } + } + } + + if (pba->has_ncdm == _TRUE_) { + index_pt = 0; + for(n_ncdm = 0; n_ncdm < ppv->N_ncdm; n_ncdm++){ + for(index_q=0; index_q < ppv->q_size_ncdm[n_ncdm]; index_q++){ + for(l=0; l<=ppv->l_max_ncdm[n_ncdm]; l++){ + /* This is correct even when ncdmfa == off, since ppv->l_max_ncdm and + ppv->q_size_ncdm is updated.*/ + ppv->y[ppv->index_pt_psi0_ncdm1+index_pt] = + ppw->pv->y[ppw->pv->index_pt_psi0_ncdm1+index_pt]; + index_pt++; + } + } + } + } + } + } + + /* Case of switching on rsa for interacting dark radiation */ + if (pba->has_idr == _TRUE_) { + if ((pa_old[ppw->index_ap_rsa_idr] == (int)rsa_idr_off) && (ppw->approx[ppw->index_ap_rsa_idr] == (int)rsa_idr_on)) { + + if (ppt->perturbations_verbose>2) + fprintf(stdout,"Mode k=%e: switch on dark radiation approximation at tau=%e\n",k,tau); + + if (ppw->approx[ppw->index_ap_rsa] == (int)rsa_off) { + + ppv->y[ppv->index_pt_delta_g] = + ppw->pv->y[ppw->pv->index_pt_delta_g]; + + ppv->y[ppv->index_pt_theta_g] = + ppw->pv->y[ppw->pv->index_pt_theta_g]; + } + + if ((ppw->approx[ppw->index_ap_tca] == (int)tca_off) && (ppw->approx[ppw->index_ap_rsa] == (int)rsa_off)) { + + ppv->y[ppv->index_pt_shear_g] = + ppw->pv->y[ppw->pv->index_pt_shear_g]; + + ppv->y[ppv->index_pt_l3_g] = + ppw->pv->y[ppw->pv->index_pt_l3_g]; + + for (l = 4; l <= ppw->pv->l_max_g; l++) { + + ppv->y[ppv->index_pt_delta_g+l] = + ppw->pv->y[ppw->pv->index_pt_delta_g+l]; + } + + ppv->y[ppv->index_pt_pol0_g] = + ppw->pv->y[ppw->pv->index_pt_pol0_g]; + + ppv->y[ppv->index_pt_pol1_g] = + ppw->pv->y[ppw->pv->index_pt_pol1_g]; + + ppv->y[ppv->index_pt_pol2_g] = + ppw->pv->y[ppw->pv->index_pt_pol2_g]; + + ppv->y[ppv->index_pt_pol3_g] = + ppw->pv->y[ppw->pv->index_pt_pol3_g]; + + for (l = 4; l <= ppw->pv->l_max_pol_g; l++) { + + ppv->y[ppv->index_pt_pol0_g+l] = + ppw->pv->y[ppw->pv->index_pt_pol0_g+l]; + } + + } + + if (pba->has_ur == _TRUE_) { + + if (ppw->approx[ppw->index_ap_rsa] == (int)rsa_off) { + + + ppv->y[ppv->index_pt_delta_ur] = + ppw->pv->y[ppw->pv->index_pt_delta_ur]; + + ppv->y[ppv->index_pt_theta_ur] = + ppw->pv->y[ppw->pv->index_pt_theta_ur]; + + ppv->y[ppv->index_pt_shear_ur] = + ppw->pv->y[ppw->pv->index_pt_shear_ur]; + + if (ppw->approx[ppw->index_ap_ufa] == (int)ufa_off) { + + ppv->y[ppv->index_pt_l3_ur] = + ppw->pv->y[ppw->pv->index_pt_l3_ur]; + + for (l=4; l <= ppv->l_max_ur; l++) + ppv->y[ppv->index_pt_delta_ur+l] = + ppw->pv->y[ppw->pv->index_pt_delta_ur+l]; + + } + } + } + + if (pba->has_ncdm == _TRUE_) { + index_pt = 0; + for(n_ncdm = 0; n_ncdm < ppv->N_ncdm; n_ncdm++){ + for(index_q=0; index_q < ppv->q_size_ncdm[n_ncdm]; index_q++){ + for(l=0; l<=ppv->l_max_ncdm[n_ncdm]; l++){ + /* This is correct even when ncdmfa == off, since ppv->l_max_ncdm and + ppv->q_size_ncdm is updated.*/ + ppv->y[ppv->index_pt_psi0_ncdm1+index_pt] = + ppw->pv->y[ppw->pv->index_pt_psi0_ncdm1+index_pt]; + index_pt++; + } + } + } + } + + } + } + + if (pba->has_idm_dr == _TRUE_) { - if (pba->has_ur == _TRUE_) { + /* Case of switching off interacting dark radiation tight coupling approximation */ - if ((pa_old[ppw->index_ap_ufa] == (int)ufa_off) && (ppw->approx[ppw->index_ap_ufa] == (int)ufa_on)) { + if ((pa_old[ppw->index_ap_tca_idm_dr] == (int)tca_idm_dr_on) && (ppw->approx[ppw->index_ap_tca_idm_dr] == (int)tca_idm_dr_off)) { if (ppt->perturbations_verbose>2) - fprintf(stdout,"Mode k=%e: switch on ur fluid approximation at tau=%e\n",k,tau); + fprintf(stdout,"Mode k=%e: switch off dark tight coupling approximation at tau=%e\n",k,tau); + + if (ppw->approx[ppw->index_ap_rsa] == (int)rsa_idr_off) { + + ppv->y[ppv->index_pt_delta_idr] = + ppw->pv->y[ppw->pv->index_pt_delta_idr]; + + ppv->y[ppv->index_pt_theta_idr] = + ppw->pv->y[ppw->pv->index_pt_theta_idr]; + + /* idr is always free streaming if tca_idm_dr is on */ + if (ppt->idr_nature == idr_free_streaming){ + ppv->y[ppv->index_pt_shear_idr] = ppw->tca_shear_idm_dr; + ppv->y[ppv->index_pt_l3_idr] = 6./7.*k*ppv->y[ppv->index_pt_shear_idr]/ppw->pvecthermo[pth->index_th_dmu_idm_dr]/ppt->alpha_idm_dr[1]; + } + } if (ppw->approx[ppw->index_ap_rsa] == (int)rsa_off) { @@ -3647,16 +4667,31 @@ int perturb_vector_init( } - if (ppw->approx[ppw->index_ap_rsa] == (int)rsa_off) { + if (pba->has_ur == _TRUE_) { - ppv->y[ppv->index_pt_delta_ur] = - ppw->pv->y[ppw->pv->index_pt_delta_ur]; + if (ppw->approx[ppw->index_ap_rsa] == (int)rsa_off) { - ppv->y[ppv->index_pt_theta_ur] = - ppw->pv->y[ppw->pv->index_pt_theta_ur]; - ppv->y[ppv->index_pt_shear_ur] = - ppw->pv->y[ppw->pv->index_pt_shear_ur]; + ppv->y[ppv->index_pt_delta_ur] = + ppw->pv->y[ppw->pv->index_pt_delta_ur]; + + ppv->y[ppv->index_pt_theta_ur] = + ppw->pv->y[ppw->pv->index_pt_theta_ur]; + + ppv->y[ppv->index_pt_shear_ur] = + ppw->pv->y[ppw->pv->index_pt_shear_ur]; + + if (ppw->approx[ppw->index_ap_ufa] == (int)ufa_off) { + + ppv->y[ppv->index_pt_l3_ur] = + ppw->pv->y[ppw->pv->index_pt_l3_ur]; + + for (l=4; l <= ppv->l_max_ur; l++) + ppv->y[ppv->index_pt_delta_ur+l] = + ppw->pv->y[ppw->pv->index_pt_delta_ur+l]; + + } + } } if (pba->has_ncdm == _TRUE_) { @@ -3665,7 +4700,7 @@ int perturb_vector_init( for(index_q=0; index_q < ppv->q_size_ncdm[n_ncdm]; index_q++){ for(l=0; l<=ppv->l_max_ncdm[n_ncdm]; l++){ /* This is correct even when ncdmfa == off, since ppv->l_max_ncdm and - ppv->q_size_ncdm is updated.*/ + ppv->q_size_ncdm is updated.*/ ppv->y[ppv->index_pt_psi0_ncdm1+index_pt] = ppw->pv->y[ppw->pv->index_pt_psi0_ncdm1+index_pt]; index_pt++; @@ -3757,6 +4792,34 @@ int perturb_vector_init( } } + if (pba->has_idr == _TRUE_){ + if (ppw->approx[ppw->index_ap_rsa_idr] == (int)rsa_idr_off){ + + ppv->y[ppv->index_pt_delta_idr] = + ppw->pv->y[ppw->pv->index_pt_delta_idr]; + + ppv->y[ppv->index_pt_theta_idr] = + ppw->pv->y[ppw->pv->index_pt_theta_idr]; + + if (ppt->idr_nature == idr_free_streaming){ + + if ((pba->has_idm_dr == _FALSE_)||((pba->has_idm_dr == _TRUE_)&&(ppw->approx[ppw->index_ap_tca_idm_dr] == (int)tca_idm_dr_off))){ + + ppv->y[ppv->index_pt_shear_idr] = + ppw->pv->y[ppw->pv->index_pt_shear_idr]; + + ppv->y[ppv->index_pt_l3_idr] = + ppw->pv->y[ppw->pv->index_pt_l3_idr]; + + for (l=4; l <= ppv->l_max_idr; l++) + ppv->y[ppv->index_pt_delta_idr+l] = + ppw->pv->y[ppw->pv->index_pt_delta_idr+l]; + } + } + } + } + + a = ppw->pvecback[pba->index_bg_a]; index_pt = ppw->pv->index_pt_psi0_ncdm1; for(n_ncdm = 0; n_ncdm < ppv->N_ncdm; n_ncdm++){ @@ -4015,6 +5078,7 @@ int perturb_initial_conditions(struct precision * ppr, /** --> Declare local variables */ double a,a_prime_over_a; + double w_fld,dw_over_da_fld,integral_fld; double delta_ur=0.,theta_ur=0.,shear_ur=0.,l3_ur=0.,eta=0.,delta_cdm=0.,alpha, alpha_prime; double delta_dr=0; double q,epsilon,k2; @@ -4062,6 +5126,10 @@ int perturb_initial_conditions(struct precision * ppr, rho_m += ppw->pvecback[pba->index_bg_rho_cdm]; } + if (pba->has_idm_dr == _TRUE_) { + rho_m += ppw->pvecback[pba->index_bg_rho_idm_dr]; + } + if (pba->has_dcdm == _TRUE_) { rho_m += ppw->pvecback[pba->index_bg_rho_dcdm]; } @@ -4076,6 +5144,11 @@ int perturb_initial_conditions(struct precision * ppr, rho_nu += ppw->pvecback[pba->index_bg_rho_ur]; } + if (pba->has_idr == _TRUE_) { + rho_r += ppw->pvecback[pba->index_bg_rho_idr]; + rho_nu += ppw->pvecback[pba->index_bg_rho_idr]; + } + if (pba->has_ncdm == _TRUE_) { for(n_ncdm=0; n_ncdmN_ncdm; n_ncdm++){ rho_r += ppw->pvecback[pba->index_bg_rho_ncdm1 + n_ncdm]; @@ -4161,21 +5234,29 @@ int perturb_initial_conditions(struct precision * ppr, /* cdm velocity vanishes in the synchronous gauge */ } + /* interacting dark matter */ + if (pba->has_idm_dr == _TRUE_) { + ppw->pv->y[ppw->pv->index_pt_delta_idm_dr] = 3./4.*ppw->pv->y[ppw->pv->index_pt_delta_g]; /* idm_dr density */ + } + if (pba->has_dcdm == _TRUE_) { ppw->pv->y[ppw->pv->index_pt_delta_dcdm] = 3./4.*ppw->pv->y[ppw->pv->index_pt_delta_g]; /* dcdm density */ /* dcdm velocity velocity vanishes initially in the synchronous gauge */ } - /* fluid (assumes wa=0, if this is not the case the fluid will catch anyway the attractor solution) */ if (pba->has_fld == _TRUE_) { - ppw->pv->y[ppw->pv->index_pt_delta_fld] = - ktau_two/4.*(1.+pba->w0_fld+pba->wa_fld)*(4.-3.*pba->cs2_fld)/(4.-6.*(pba->w0_fld+pba->wa_fld)+3.*pba->cs2_fld) * ppr->curvature_ini * s2_squared; /* from 1004.5509 */ //TBC: curvature + class_call(background_w_fld(pba,a,&w_fld,&dw_over_da_fld,&integral_fld), pba->error_message, ppt->error_message); - ppw->pv->y[ppw->pv->index_pt_theta_fld] = - k*ktau_three/4.*pba->cs2_fld/(4.-6.*(pba->w0_fld+pba->wa_fld)+3.*pba->cs2_fld) * ppr->curvature_ini * s2_squared; /* from 1004.5509 */ //TBC:curvature + if (pba->use_ppf == _FALSE_) { + ppw->pv->y[ppw->pv->index_pt_delta_fld] = - ktau_two/4.*(1.+w_fld)*(4.-3.*pba->cs2_fld)/(4.-6.*w_fld+3.*pba->cs2_fld) * ppr->curvature_ini * s2_squared; /* from 1004.5509 */ //TBC: curvature + ppw->pv->y[ppw->pv->index_pt_theta_fld] = - k*ktau_three/4.*pba->cs2_fld/(4.-6.*w_fld+3.*pba->cs2_fld) * ppr->curvature_ini * s2_squared; /* from 1004.5509 */ //TBC:curvature + } + /* if use_ppf == _TRUE_, y[ppw->pv->index_pt_Gamma_fld] will be automatically set to zero, and this is what we want (although one could probably work out some small nonzero initial conditions: TODO) */ } if (pba->has_scf == _TRUE_) { @@ -4186,30 +5267,30 @@ int perturb_initial_conditions(struct precision * ppr, * delta_phi_prime \f$ = a^2/\phi' \f$ (delta_rho_phi + V'delta_phi), * and assume theta, delta_rho as for perfect fluid * with \f$ c_s^2 = 1 \f$ and w = 1/3 (ASSUMES radiation TRACKING) - */ + */ ppw->pv->y[ppw->pv->index_pt_phi_scf] = 0.; /* a*a/k/k/ppw->pvecback[pba->index_bg_phi_prime_scf]*k*ktau_three/4.*1./(4.-6.*(1./3.)+3.*1.) * (ppw->pvecback[pba->index_bg_rho_scf] + ppw->pvecback[pba->index_bg_p_scf])* ppr->curvature_ini * s2_squared; */ ppw->pv->y[ppw->pv->index_pt_phi_prime_scf] = 0.; /* delta_fld expression * rho_scf with the w = 1/3, c_s = 1 - a*a/ppw->pvecback[pba->index_bg_phi_prime_scf]*( - ktau_two/4.*(1.+1./3.)*(4.-3.*1.)/(4.-6.*(1/3.)+3.*1.)*ppw->pvecback[pba->index_bg_rho_scf] - ppw->pvecback[pba->index_bg_dV_scf]*ppw->pv->y[ppw->pv->index_pt_phi_scf])* ppr->curvature_ini * s2_squared; */ + a*a/ppw->pvecback[pba->index_bg_phi_prime_scf]*( - ktau_two/4.*(1.+1./3.)*(4.-3.*1.)/(4.-6.*(1/3.)+3.*1.)*ppw->pvecback[pba->index_bg_rho_scf] - ppw->pvecback[pba->index_bg_dV_scf]*ppw->pv->y[ppw->pv->index_pt_phi_scf])* ppr->curvature_ini * s2_squared; */ } /* all relativistic relics: ur, early ncdm, dr */ - if ((pba->has_ur == _TRUE_) || (pba->has_ncdm == _TRUE_) || (pba->has_dr == _TRUE_)) { + if ((pba->has_ur == _TRUE_) || (pba->has_ncdm == _TRUE_) || (pba->has_dr == _TRUE_) || (pba->has_idr == _TRUE_)) { delta_ur = ppw->pv->y[ppw->pv->index_pt_delta_g]; /* density of ultra-relativistic neutrinos/relics */ - theta_ur = - k*ktau_three/36./(4.*fracnu+15.) * (4.*fracnu+11.+12.*s2_squared-3.*(8.*fracnu*fracnu+50.*fracnu+275.)/20./(2.*fracnu+15.)*tau*om) * ppr->curvature_ini * s2_squared; /* velocity of ultra-relativistic neutrinos/relics */ //TBC + /* velocity of ultra-relativistic neutrinos/relics */ //TBC + theta_ur = - k*ktau_three/36./(4.*fracnu+15.) * (4.*fracnu+11.+12.*s2_squared-3.*(8.*fracnu*fracnu+50.*fracnu+275.)/20./(2.*fracnu+15.)*tau*om) * ppr->curvature_ini * s2_squared; shear_ur = ktau_two/(45.+12.*fracnu) * (3.*s2_squared-1.) * (1.+(4.*fracnu-5.)/4./(2.*fracnu+15.)*tau*om) * ppr->curvature_ini;//TBC /s2_squared; /* shear of ultra-relativistic neutrinos/relics */ //TBC:0 l3_ur = ktau_three*2./7./(12.*fracnu+45.)* ppr->curvature_ini;//TBC if (pba->has_dr == _TRUE_) delta_dr = delta_ur; - } /* synchronous metric perturbation eta */ @@ -4232,6 +5313,10 @@ int perturb_initial_conditions(struct precision * ppr, if ((ppt->has_cdi == _TRUE_) && (index_ic == ppt->index_ic_cdi)) { + class_test((pba->has_idr == _TRUE_), + ppt->error_message, + "only adiabatic ic in presence of interacting dark radiation"); + class_test(pba->has_cdm == _FALSE_, ppt->error_message, "not consistent to ask for CDI in absence of CDM!"); @@ -4260,6 +5345,10 @@ int perturb_initial_conditions(struct precision * ppr, if ((ppt->has_bi == _TRUE_) && (index_ic == ppt->index_ic_bi)) { + class_test((pba->has_idr == _TRUE_), + ppt->error_message, + "only adiabatic ic in presence of interacting dark radiation"); + ppw->pv->y[ppw->pv->index_pt_delta_g] = ppr->entropy_ini*fracb*om*tau*(-2./3.+om*tau/4.); ppw->pv->y[ppw->pv->index_pt_theta_g] = -ppr->entropy_ini*fracb*om*ktau_two/12.; @@ -4292,6 +5381,10 @@ int perturb_initial_conditions(struct precision * ppr, ppt->error_message, "not consistent to ask for NID in absence of ur or ncdm species!"); + class_test((pba->has_idr == _TRUE_), + ppt->error_message, + "only adiabatic ic in presence of interacting dark radiation"); + ppw->pv->y[ppw->pv->index_pt_delta_g] = ppr->entropy_ini*fracnu/fracg*(-1.+ktau_two/6.); ppw->pv->y[ppw->pv->index_pt_theta_g] = -ppr->entropy_ini*fracnu/fracg*k*k*tau*(1./4.-fracb/fracg*3./16.*om*tau); @@ -4320,6 +5413,10 @@ int perturb_initial_conditions(struct precision * ppr, ppt->error_message, "not consistent to ask for NIV in absence of ur or ncdm species!"); + class_test((pba->has_idr == _TRUE_), + ppt->error_message, + "only adiabatic ic in presence of interacting dark radiation"); + ppw->pv->y[ppw->pv->index_pt_delta_g] = ppr->entropy_ini*k*tau*fracnu/fracg* (1. - 3./16.*fracb*(2.+fracg)/fracg*om*tau); /* small diff wrt camb */ @@ -4377,6 +5474,8 @@ int perturb_initial_conditions(struct precision * ppr, delta_cdm = ppw->pv->y[ppw->pv->index_pt_delta_cdm]; else if (pba->has_dcdm == _TRUE_) delta_cdm = ppw->pv->y[ppw->pv->index_pt_delta_dcdm]; + else if (pba->has_idm_dr == _TRUE_) + delta_cdm = ppw->pv->y[ppw->pv->index_pt_delta_idm_dr]; else delta_cdm=0.; @@ -4401,22 +5500,31 @@ int perturb_initial_conditions(struct precision * ppr, ppw->pv->y[ppw->pv->index_pt_theta_cdm] = k*k*alpha; } + if (pba->has_idm_dr == _TRUE_){ + ppw->pv->y[ppw->pv->index_pt_delta_idm_dr] -= 3.*a_prime_over_a*alpha; + ppw->pv->y[ppw->pv->index_pt_theta_idm_dr] = k*k*alpha; + /* comment on idm_dr initial conditions: theta_idm_dr is set later, together with theta_idr, if the tight coupling is on */ + } + if (pba->has_dcdm == _TRUE_) { ppw->pv->y[ppw->pv->index_pt_delta_dcdm] += (-3.*a_prime_over_a - a*pba->Gamma_dcdm)*alpha; ppw->pv->y[ppw->pv->index_pt_theta_dcdm] = k*k*alpha; } /* fluid */ - if (pba->has_fld == _TRUE_) { - ppw->pv->y[ppw->pv->index_pt_delta_fld] += 3*(1.+pba->w0_fld+pba->wa_fld)*a_prime_over_a*alpha; + if ((pba->has_fld == _TRUE_) && (pba->use_ppf == _FALSE_)) { + + class_call(background_w_fld(pba,a,&w_fld,&dw_over_da_fld,&integral_fld), pba->error_message, ppt->error_message); + + ppw->pv->y[ppw->pv->index_pt_delta_fld] -= 3*(1.+w_fld)*a_prime_over_a*alpha; ppw->pv->y[ppw->pv->index_pt_theta_fld] += k*k*alpha; } /* scalar field: check */ if (pba->has_scf == _TRUE_) { alpha_prime = 0.0; - /* - 2. * a_prime_over_a * alpha + eta - - 4.5 * (a2/k2) * ppw->rho_plus_p_shear; */ + /* - 2. * a_prime_over_a * alpha + eta + - 4.5 * (a2/k2) * ppw->rho_plus_p_shear; */ ppw->pv->y[ppw->pv->index_pt_phi_scf] += alpha*ppw->pvecback[pba->index_bg_phi_prime_scf]; ppw->pv->y[ppw->pv->index_pt_phi_prime_scf] += @@ -4425,7 +5533,7 @@ int perturb_initial_conditions(struct precision * ppr, +ppw->pvecback[pba->index_bg_phi_prime_scf]*alpha_prime); } - if ((pba->has_ur == _TRUE_) || (pba->has_ncdm == _TRUE_) || (pba->has_dr == _TRUE_)) { + if ((pba->has_ur == _TRUE_) || (pba->has_ncdm == _TRUE_) || (pba->has_dr == _TRUE_) || (pba->has_idr == _TRUE_)) { delta_ur -= 4.*a_prime_over_a*alpha; theta_ur += k*k*alpha; @@ -4452,6 +5560,21 @@ int perturb_initial_conditions(struct precision * ppr, } + if (pba->has_idr == _TRUE_){ + + ppw->pv->y[ppw->pv->index_pt_delta_idr] = delta_ur; + ppw->pv->y[ppw->pv->index_pt_theta_idr] = theta_ur; + if (ppt->idr_nature == idr_free_streaming){ + if ((pba->has_idm_dr == _FALSE_)||((pba->has_idm_dr == _TRUE_)&&(ppw->approx[ppw->index_ap_tca_idm_dr] == (int)tca_idm_dr_off))){ + ppw->pv->y[ppw->pv->index_pt_shear_idr] = shear_ur; + ppw->pv->y[ppw->pv->index_pt_l3_idr] = l3_ur; + } + } + } + if (pba->has_idm_dr == _TRUE_){ + ppw->pv->y[ppw->pv->index_pt_theta_idm_dr] = theta_ur; + } + if (pba->has_ncdm == _TRUE_) { idx = ppw->pv->index_pt_psi0_ncdm1; for (n_ncdm=0; n_ncdm < pba->N_ncdm; n_ncdm++){ @@ -4497,111 +5620,111 @@ int perturb_initial_conditions(struct precision * ppr, if (_tensors_) { /** tensor initial conditions take into account the fact that - scalar (resp. tensor) \f$ C_l\f$'s are related to the real space - power spectrum of curvature (resp. of the tensor part of - metric perturbations) + scalar (resp. tensor) \f$ C_l\f$'s are related to the real space + power spectrum of curvature (resp. of the tensor part of + metric perturbations) - \f[ \ \ \sum_{ij} \f] + \f[ \ \ \sum_{ij} \f] - In momentum space it is conventional to use the modes R(k) - and h(k) where the quantity h obeying to the equation of - propagation: + In momentum space it is conventional to use the modes R(k) + and h(k) where the quantity h obeying to the equation of + propagation: - \f[ h'' + \frac{2a'}{a} h + [k2+2K] h = 12\pi Ga2 (\rho+p) \sigma = 8\pi Ga2 p \pi \f] + \f[ h'' + \frac{2a'}{a} h + [k2+2K] h = 12\pi Ga2 (\rho+p) \sigma = 8\pi Ga2 p \pi \f] - and the power spectra in real space and momentum space are related through: + and the power spectra in real space and momentum space are related through: - \f[ = \int \frac{dk}{k} \left[ \frac{k^3}{2\pi^2} \right] = \int \frac{dk}{k} \mathcal{P}_R(k) \f] - \f[\sum_{ij} = \frac{dk}{k} \left[ \frac{k^3}{2\pi^2} F\left(\frac{k^2}{K}\right) \right] = \int \frac{dk}{k} F\left(\frac{k^2}{K}\right) \mathcal{P}_h(k) \f] + \f[ = \int \frac{dk}{k} \left[ \frac{k^3}{2\pi^2} \right] = \int \frac{dk}{k} \mathcal{P}_R(k) \f] + \f[\sum_{ij} = \frac{dk}{k} \left[ \frac{k^3}{2\pi^2} F\left(\frac{k^2}{K}\right) \right] = \int \frac{dk}{k} F\left(\frac{k^2}{K}\right) \mathcal{P}_h(k) \f] - where \f$ \mathcal{P}_R\f$ and \f$ \mathcal{P}_h\f$ are the dimensionless spectrum of - curvature R, and F is a function of k2/K, where K is the curvature - parameter. F is equal to one in flat space (K=0), and coming - from the contraction of the laplacian eigentensor \f$ Q_{ij}\f$ with - itself. We will give F explicitly below. + where \f$ \mathcal{P}_R\f$ and \f$ \mathcal{P}_h\f$ are the dimensionless spectrum of + curvature R, and F is a function of k2/K, where K is the curvature + parameter. F is equal to one in flat space (K=0), and coming + from the contraction of the laplacian eigentensor \f$ Q_{ij}\f$ with + itself. We will give F explicitly below. - Similarly the scalar (S) and tensor (T) \f$ C_l\f$'s are given by + Similarly the scalar (S) and tensor (T) \f$ C_l\f$'s are given by - \f[ C_l^S = 4\pi \int \frac{dk}{k} [\Delta_l^S(q)]^2 \mathcal{P}_R(k) \f] - \f[ C_l^T = 4\pi \int \frac{dk}{k} [\Delta_l^T(q)]^2 F\left(\frac{k^2}{K}\right) \mathcal{P}_h(k) \f] + \f[ C_l^S = 4\pi \int \frac{dk}{k} [\Delta_l^S(q)]^2 \mathcal{P}_R(k) \f] + \f[ C_l^T = 4\pi \int \frac{dk}{k} [\Delta_l^T(q)]^2 F\left(\frac{k^2}{K}\right) \mathcal{P}_h(k) \f] - The usual convention for the tensor-to-scalar ratio - \f$ r = A_t / A_s \f$ at pivot scale - = 16 epsilon in single-field inflation - is such that for constant \f$ \mathcal{P}_R(k)\f$ and \f$ \mathcal{P}_h(k)\f$, + The usual convention for the tensor-to-scalar ratio + \f$ r = A_t / A_s \f$ at pivot scale + = 16 epsilon in single-field inflation + is such that for constant \f$ \mathcal{P}_R(k)\f$ and \f$ \mathcal{P}_h(k)\f$, - \f[ r = 6 \frac{\mathcal{P}_h(k)}{\mathcal{P}_R(k)} \f] + \f[ r = 6 \frac{\mathcal{P}_h(k)}{\mathcal{P}_R(k)} \f] - so + so - \f[ \mathcal{P}_h(k) = \frac{\mathcal{P}_R(k) r}{6} = \frac{A_s r}{6} = \frac{A_t}{6} \f] + \f[ \mathcal{P}_h(k) = \frac{\mathcal{P}_R(k) r}{6} = \frac{A_s r}{6} = \frac{A_t}{6} \f] - A priori it would make sense to say that for a power-law - primordial spectrum there is an extra factor \f$ (k/k_{pivot})^{n_t} \f$ - (and eventually running and so on and so forth...) + A priori it would make sense to say that for a power-law + primordial spectrum there is an extra factor \f$ (k/k_{pivot})^{n_t} \f$ + (and eventually running and so on and so forth...) - However it has been shown that the minimal models of - inflation in a negatively curved bubble lead to - \f$ \mathcal{P}_h(k)=\tanh(\pi*\nu/2)\f$. In open models it is customary to - define the tensor tilt in a non-flat universe as a deviation - from this behavior rather than from true scale-invariance in - the above sense. + However it has been shown that the minimal models of + inflation in a negatively curved bubble lead to + \f$ \mathcal{P}_h(k)=\tanh(\pi*\nu/2)\f$. In open models it is customary to + define the tensor tilt in a non-flat universe as a deviation + from this behavior rather than from true scale-invariance in + the above sense. - Hence we should have + Hence we should have - \f[ \mathcal{P}_h(k) = \frac{A_t}{6} [ \tanh(\pi*\frac{\nu}{2})] (k/k_{pivot})^{(n_t+...)}\f] + \f[ \mathcal{P}_h(k) = \frac{A_t}{6} [ \tanh(\pi*\frac{\nu}{2})] (k/k_{pivot})^{(n_t+...)}\f] - where the brackets \f[ [...] \f] mean "if K<0" + where the brackets \f[ [...] \f] mean "if K<0" - Then + Then - \f[ C_l^T = 4\pi \int \frac{dk}{k} [\Delta_l^T(q)]^2 F\left(\frac{k^2}{K}\right) \frac{A_t}{6} [\tanh(\pi*\frac{\nu}{2})] (k/k_{pivot})^{(n_t+...)} \f] + \f[ C_l^T = 4\pi \int \frac{dk}{k} [\Delta_l^T(q)]^2 F\left(\frac{k^2}{K}\right) \frac{A_t}{6} [\tanh(\pi*\frac{\nu}{2})] (k/k_{pivot})^{(n_t+...)} \f] - In the code, it is then a matter of choice to write: + In the code, it is then a matter of choice to write: - - In the primordial module: \f$ \mathcal{P}_h(k) = \frac{A_t}{6} \tanh{(\pi*\frac{\nu}{2})} (k/k^*)^{n_T}\f$ - - In the perturbation initial conditions: \f$ h = 1\f$ - - In the spectra module: \f$ C_l^T = \frac{4}{\pi} \int \frac{dk}{k} [\Delta_l^T(q)]^2 F\left(\frac{k^2}{K}\right) \mathcal{P}_h(k) \f$ + - In the primordial module: \f$ \mathcal{P}_h(k) = \frac{A_t}{6} \tanh{(\pi*\frac{\nu}{2})} (k/k^*)^{n_T}\f$ + - In the perturbation initial conditions: \f$ h = 1\f$ + - In the spectra module: \f$ C_l^T = \frac{4}{\pi} \int \frac{dk}{k} [\Delta_l^T(q)]^2 F\left(\frac{k^2}{K}\right) \mathcal{P}_h(k) \f$ - or: + or: - - In the primordial module: \f$ \mathcal{P}_h(k) = A_t (k/k^*)^{n_T} \f$ - - In the perturbation initial conditions: \f$ h = \sqrt{[F\left(\frac{k^2}{K}\right) / 6] \tanh{(\pi*\frac{\nu}{2})}} \f$ - - In the spectra module: \f$ C_l^T = \frac{4}{\pi} \int \frac{dk}{k} [\Delta_l^T(q)]^2 \mathcal{P}_h(k) \f$ + - In the primordial module: \f$ \mathcal{P}_h(k) = A_t (k/k^*)^{n_T} \f$ + - In the perturbation initial conditions: \f$ h = \sqrt{[F\left(\frac{k^2}{K}\right) / 6] \tanh{(\pi*\frac{\nu}{2})}} \f$ + - In the spectra module: \f$ C_l^T = \frac{4}{\pi} \int \frac{dk}{k} [\Delta_l^T(q)]^2 \mathcal{P}_h(k) \f$ - We choose this last option, such that the primordial and - spectra module differ minimally in flat and non-flat space. Then we must impose + We choose this last option, such that the primordial and + spectra module differ minimally in flat and non-flat space. Then we must impose - \f[ h = \sqrt{\left(\frac{F}{6}\right) \tanh{(\pi*\frac{\nu}{2})}} \f] + \f[ h = \sqrt{\left(\frac{F}{6}\right) \tanh{(\pi*\frac{\nu}{2})}} \f] - The factor F is found to be given by: + The factor F is found to be given by: - \f[ \sum_{ij} = \int \frac{dk}{k} \frac{k2(k2-K)}{(k2+3K)(k2+2K)} \mathcal{P}_h(k) \f] + \f[ \sum_{ij} = \int \frac{dk}{k} \frac{k2(k2-K)}{(k2+3K)(k2+2K)} \mathcal{P}_h(k) \f] - Introducing as usual \f$ q2 = k2 - 3K \f$ and using qdq = kdk this gives + Introducing as usual \f$ q2 = k2 - 3K \f$ and using qdq = kdk this gives - \f[ \sum_{ij} = \int \frac{dk}{k} \frac{(q2-3K)(q2-4K)}{q2(q2-K)} \mathcal{P}_h(k) \f] + \f[ \sum_{ij} = \int \frac{dk}{k} \frac{(q2-3K)(q2-4K)}{q2(q2-K)} \mathcal{P}_h(k) \f] - Using qdq = kdk this is equivalent to + Using qdq = kdk this is equivalent to - \f[ \sum_{ij} = \int \frac{dq}{q} \frac{q2-4K}{q2-K} \mathcal{P}_h(k(q)) \f] + \f[ \sum_{ij} = \int \frac{dq}{q} \frac{q2-4K}{q2-K} \mathcal{P}_h(k(q)) \f] - Finally, introducing \f$ \nu=q/\sqrt{|K|}\f$ and sgnK=SIGN(k)\f$=\pm 1\f$, this could also be written + Finally, introducing \f$ \nu=q/\sqrt{|K|}\f$ and sgnK=SIGN(k)\f$=\pm 1\f$, this could also be written - \f[ \sum_{ij} = \int \frac{d\nu}{\nu} \frac{(\nu2-4sgnK)}{(\nu2-sgnK)} \mathcal{P}_h(k(\nu)) \f] + \f[ \sum_{ij} = \int \frac{d\nu}{\nu} \frac{(\nu2-4sgnK)}{(\nu2-sgnK)} \mathcal{P}_h(k(\nu)) \f] - Equation (43,44) of Hu, Seljak, White, Zaldarriaga is - equivalent to absorbing the above factor - \f$ (\nu2-4sgnK)/(\nu2-sgnK)\f$ in the definition of the primordial - spectrum. Since the initial condition should be written in terms of k rather than nu, they should read + Equation (43,44) of Hu, Seljak, White, Zaldarriaga is + equivalent to absorbing the above factor + \f$ (\nu2-4sgnK)/(\nu2-sgnK)\f$ in the definition of the primordial + spectrum. Since the initial condition should be written in terms of k rather than nu, they should read - \f[ h = \sqrt{ [k2(k2-K)]/[(k2+3K)(k2+2K)] / 6 * \tanh{(\pi*\frac{\nu}{2})} } \f] + \f[ h = \sqrt{ [k2(k2-K)]/[(k2+3K)(k2+2K)] / 6 * \tanh{(\pi*\frac{\nu}{2})} } \f] - We leave the freedom to multiply by an arbitrary number - ppr->gw_ini. The standard convention corresponding to - standard definitions of r, \f$ A_T\f$, \f$ n_T\f$ is however ppr->gw_ini=1. - * - */ + We leave the freedom to multiply by an arbitrary number + ppr->gw_ini. The standard convention corresponding to + standard definitions of r, \f$ A_T\f$, \f$ n_T\f$ is however ppr->gw_ini=1. + * + */ if (index_ic == ppt->index_ic_ten) { ppw->pv->y[ppw->pv->index_pt_gw] = ppr->gw_ini/_SQRT6_; @@ -4757,6 +5880,32 @@ int perturb_approximations( } + if(pba->has_idm_dr == _TRUE_){ + + if(ppw->pvecthermo[pth->index_th_dmu_idm_dr] == 0.){ + ppw->approx[ppw->index_ap_tca_idm_dr] = (int)tca_idm_dr_off; + } + else{ + + class_test(1./ppw->pvecthermo[pth->index_th_dmu_idm_dr] < 0., + ppt->error_message, + "negative tau_idm_dr=1/dmu_idm_dr=%e at z=%e, conformal time=%e.\n", + 1./ppw->pvecthermo[pth->index_th_dmu_idm_dr], + 1./ppw->pvecback[pba->index_bg_a]-1., + tau); + + if ((1./tau_h/ppw->pvecthermo[pth->index_th_dmu_idm_dr] < ppr->idm_dr_tight_coupling_trigger_tau_c_over_tau_h) && + (1./tau_k/ppw->pvecthermo[pth->index_th_dmu_idm_dr] < ppr->idm_dr_tight_coupling_trigger_tau_c_over_tau_k) && + (pth->nindex_idm_dr>=2) && (ppt->idr_nature == idr_free_streaming)) { + ppw->approx[ppw->index_ap_tca_idm_dr] = (int)tca_idm_dr_on; + } + else{ + ppw->approx[ppw->index_ap_tca_idm_dr] = (int)tca_idm_dr_off; + //printf("tca_idm_dr_off = %d\n",tau); + } + } + } + /** - --> (c) free-streaming approximations */ if ((tau/tau_k > ppr->radiation_streaming_trigger_tau_over_tau_k) && @@ -4769,6 +5918,37 @@ int perturb_approximations( ppw->approx[ppw->index_ap_rsa] = (int)rsa_off; } + /* interacting dark radiation free streaming approximation*/ + if (pba->has_idr == _TRUE_){ + + if(pba->has_idm_dr==_TRUE_){ + + if ((tau/tau_k > ppr->idr_streaming_trigger_tau_over_tau_k) && + ((tau > pth->tau_idr_free_streaming) && (pth->nindex_idm_dr>=2)) && + (ppr->idr_streaming_approximation != rsa_idr_none)){ + + ppw->approx[ppw->index_ap_rsa_idr] = (int)rsa_idr_on; + } + + else{ + ppw->approx[ppw->index_ap_rsa_idr] = (int)rsa_idr_off; + } + } + + else{ + if ((tau/tau_k > ppr->idr_streaming_trigger_tau_over_tau_k) && + (tau > pth->tau_idr_free_streaming) && + (ppr->idr_streaming_approximation != rsa_idr_none)){ + + ppw->approx[ppw->index_ap_rsa_idr] = (int)rsa_idr_on; + } + + else{ + ppw->approx[ppw->index_ap_rsa_idr] = (int)rsa_idr_off; + } + } + } + if (pba->has_ur == _TRUE_) { if ((tau/tau_k > ppr->ur_fluid_trigger_tau_over_tau_k) && @@ -5056,6 +6236,7 @@ int perturb_einstein( double k2,a,a2,a_prime_over_a; double s2_squared; double shear_g = 0.; + double shear_idr = 0.; /** - define wavenumber and scale factor related quantities */ @@ -5105,8 +6286,15 @@ int perturb_einstein( class_call(perturb_rsa_delta_and_theta(ppr,pba,pth,ppt,k,y,a_prime_over_a,ppw->pvecthermo,ppw), ppt->error_message, ppt->error_message); + } + + if ((pba->has_idr)&&(ppw->approx[ppw->index_ap_rsa_idr] == (int)rsa_idr_on)){ + class_call(perturb_rsa_idr_delta_and_theta(ppr,pba,pth,ppt,k,y,a_prime_over_a,ppw->pvecthermo,ppw), + ppt->error_message, + ppt->error_message); } + } /* synchronous gauge */ @@ -5125,16 +6313,16 @@ int perturb_einstein( class_call(perturb_rsa_delta_and_theta(ppr,pba,pth,ppt,k,y,a_prime_over_a,ppw->pvecthermo,ppw), ppt->error_message, ppt->error_message); + } - /* update total theta given rsa approximation results */ - - ppw->rho_plus_p_theta += 4./3.*ppw->pvecback[pba->index_bg_rho_g]*ppw->rsa_theta_g; + if ((pba->has_idr==_TRUE_)&&(ppw->approx[ppw->index_ap_rsa_idr] == (int)rsa_idr_on)) { - if (pba->has_ur == _TRUE_) { + class_call(perturb_rsa_idr_delta_and_theta(ppr,pba,pth,ppt,k,y,a_prime_over_a,ppw->pvecthermo,ppw), + ppt->error_message, + ppt->error_message); - ppw->rho_plus_p_theta += 4./3.*ppw->pvecback[pba->index_bg_rho_ur]*ppw->rsa_theta_ur; + ppw->rho_plus_p_theta += 4./3.*ppw->pvecback[pba->index_bg_rho_idr]*ppw->rsa_theta_idr; - } } /* second equation involving total velocity */ @@ -5159,6 +6347,13 @@ int perturb_einstein( } + if ((pba->has_idm_dr == _TRUE_)&&(ppw->approx[ppw->index_ap_tca_idm_dr] == (int)tca_idm_dr_on)){ + + shear_idr = 0.5*8./15./ppw->pvecthermo[pth->index_th_dmu_idm_dr]/ppt->alpha_idm_dr[0]*(y[ppw->pv->index_pt_theta_idr]+k2*ppw->pvecmetric[ppw->index_mt_alpha]); + + ppw->rho_plus_p_shear += 4./3.*ppw->pvecback[pba->index_bg_rho_idr]*shear_idr; + } + /* fourth equation involving total shear */ ppw->pvecmetric[ppw->index_mt_alpha_prime] = //TBC - 2. * a_prime_over_a * ppw->pvecmetric[ppw->index_mt_alpha] @@ -5184,10 +6379,18 @@ int perturb_einstein( // of decaying dark matter. } + if (ppt->has_source_delta_cb == _TRUE_) { + ppw->delta_cb += 3. *ppw->pvecback[pba->index_bg_a]*ppw->pvecback[pba->index_bg_H] * ppw->theta_cb/k2;//check gauge transformation + } + if (ppt->has_source_theta_m == _TRUE_) { if (ppt->gauge == synchronous) { ppw->theta_m += ppw->pvecmetric[ppw->index_mt_alpha]*k2; - + } + } + if (ppt->has_source_theta_cb == _TRUE_){ + if (ppt->gauge == synchronous) { + ppw->theta_cb += ppw->pvecmetric[ppw->index_mt_alpha]*k2; //check gauge transformation } } } @@ -5245,13 +6448,20 @@ int perturb_total_stress_energy( /** - define local variables */ - double a,a2; + double a,a2,a_prime_over_a,k2; + double rho_m=0.; + double delta_rho_m=0.; + double rho_plus_p_m=0.; + double rho_plus_p_theta_m=0.; double delta_g=0.; double theta_g=0.; double shear_g=0.; double delta_ur=0.; double theta_ur=0.; double shear_ur=0.; + double delta_idr=0.; + double theta_idr=0.; + double shear_idr=0.; double rho_delta_ncdm=0.; double rho_plus_p_theta_ncdm=0.; double rho_plus_p_shear_ncdm=0.; @@ -5260,17 +6470,28 @@ int perturb_total_stress_energy( double rho_plus_p_ncdm; int index_q,n_ncdm,idx; double epsilon,q,q2,cg2_ncdm,w_ncdm,rho_ncdm_bg,p_ncdm_bg,pseudo_p_ncdm; - double rho_m,delta_rho_m,rho_plus_p_m,rho_plus_p_theta_m; - double w; + double w_fld,dw_over_da_fld,integral_fld; double gwncdm; double rho_relativistic; double rho_dr_over_f; double delta_rho_scf, delta_p_scf, psi; + /** Variables used for FLD and PPF */ + double c_gamma_k_H_square; + double Gamma_prime_plus_a_prime_over_a_Gamma, s2sq=1.; + double w_prime_fld, ca2_fld; + double alpha, alpha_prime, metric_euler; + double rho_t, p_t, rho_t_prime, p_t_prime; + double rho_fld, p_fld, rho_fld_prime, p_fld_prime; + double X, Y, Z, X_prime, Y_prime, Z_prime; + double Gamma_fld, S, S_prime, theta_t, theta_t_prime, rho_plus_p_theta_fld_prime; + double delta_p_b_over_rho_b; /** - wavenumber and scale factor related quantities */ a = ppw->pvecback[pba->index_bg_a]; a2 = a * a; + a_prime_over_a = ppw->pvecback[pba->index_bg_H]*a; + k2 = k*k; /** - for scalar modes */ @@ -5346,38 +6567,103 @@ int perturb_total_stress_energy( } + /** - ---> (a.3.) baryon pressure perturbation */ + + if ((ppt->has_perturbed_recombination == _TRUE_) &&(ppw->approx[ppw->index_ap_tca] == (int)tca_off)) { + delta_p_b_over_rho_b = ppw->pvecthermo[pth->index_th_wb]*(y[ppw->pv->index_pt_delta_b]+ y[ppw->pv->index_pt_perturbed_recombination_delta_temp]); + } + else { + delta_p_b_over_rho_b = ppw->pvecthermo[pth->index_th_cb2]*y[ppw->pv->index_pt_delta_b]; + } + + /** - ---> (a.4.) interacting dark radiation */ + + if (pba->has_idr == _TRUE_) { + if (ppw->approx[ppw->index_ap_rsa_idr] == (int)rsa_idr_off) { + delta_idr = y[ppw->pv->index_pt_delta_idr]; + theta_idr = y[ppw->pv->index_pt_theta_idr]; + + if (ppt->idr_nature == idr_free_streaming){ + if((pba->has_idm_dr == _TRUE_)&&(ppw->approx[ppw->index_ap_tca_idm_dr] == (int)tca_idm_dr_on)){ + if(ppt->gauge == newtonian) + shear_idr = 0.5*(8./15./ppw->pvecthermo[pth->index_th_dmu_idm_dr]/ppt->alpha_idm_dr[0]*(y[ppw->pv->index_pt_theta_idr])); + else + shear_idr = 0.; /* this is set in perturb_einstein, so here it's set to 0 */ + } + else{ + shear_idr = y[ppw->pv->index_pt_shear_idr]; + } + } + } + else{ + delta_idr = 0.; + theta_idr = 0.; + shear_idr = 0.; + } + } + /** - --> (b) compute the total density, velocity and shear perturbations */ /* photon and baryon contribution */ ppw->delta_rho = ppw->pvecback[pba->index_bg_rho_g]*delta_g - + ppw->pvecback[pba->index_bg_rho_b]*y[ppw->pv->index_pt_delta_b]; + + ppw->pvecback[pba->index_bg_rho_b]*y[ppw->pv->index_pt_delta_b]; // contribution to total perturbed stress-energy ppw->rho_plus_p_theta = 4./3.*ppw->pvecback[pba->index_bg_rho_g]*theta_g - + ppw->pvecback[pba->index_bg_rho_b]*y[ppw->pv->index_pt_theta_b]; - ppw->rho_plus_p_shear = 4./3.*ppw->pvecback[pba->index_bg_rho_g]*shear_g; + + ppw->pvecback[pba->index_bg_rho_b]*y[ppw->pv->index_pt_theta_b]; // contribution to total perturbed stress-energy + ppw->rho_plus_p_shear = 4./3.*ppw->pvecback[pba->index_bg_rho_g]*shear_g; // contribution to total perturbed stress-energy ppw->delta_p = 1./3.*ppw->pvecback[pba->index_bg_rho_g]*delta_g - + ppw->pvecthermo[pth->index_th_cb2]*ppw->pvecback[pba->index_bg_rho_b]*y[ppw->pv->index_pt_delta_b]; + + ppw->pvecback[pba->index_bg_rho_b]*delta_p_b_over_rho_b; // contribution to total perturbed stress-energy + ppw->rho_plus_p_tot = 4./3. * ppw->pvecback[pba->index_bg_rho_g] + ppw->pvecback[pba->index_bg_rho_b]; + + if (ppt->has_source_delta_m == _TRUE_) { + delta_rho_m = ppw->pvecback[pba->index_bg_rho_b]*y[ppw->pv->index_pt_delta_b]; // contribution to delta rho_matter + rho_m = ppw->pvecback[pba->index_bg_rho_b]; + } + if ((ppt->has_source_delta_m == _TRUE_) || (ppt->has_source_theta_m == _TRUE_)) { + rho_plus_p_theta_m = ppw->pvecback[pba->index_bg_rho_b]*y[ppw->pv->index_pt_theta_b]; // contribution to [(rho+p)theta]_matter + rho_plus_p_m = ppw->pvecback[pba->index_bg_rho_b]; + } /* cdm contribution */ if (pba->has_cdm == _TRUE_) { - ppw->delta_rho = ppw->delta_rho + ppw->pvecback[pba->index_bg_rho_cdm]*y[ppw->pv->index_pt_delta_cdm]; + ppw->delta_rho += ppw->pvecback[pba->index_bg_rho_cdm]*y[ppw->pv->index_pt_delta_cdm]; // contribution to total perturbed stress-energy if (ppt->gauge == newtonian) - ppw->rho_plus_p_theta = ppw->rho_plus_p_theta + ppw->pvecback[pba->index_bg_rho_cdm]*y[ppw->pv->index_pt_theta_cdm]; + ppw->rho_plus_p_theta = ppw->rho_plus_p_theta + ppw->pvecback[pba->index_bg_rho_cdm]*y[ppw->pv->index_pt_theta_cdm]; // contribution to total perturbed stress-energy + + ppw->rho_plus_p_tot += ppw->pvecback[pba->index_bg_rho_cdm]; + + if (ppt->has_source_delta_m == _TRUE_) { + delta_rho_m += ppw->pvecback[pba->index_bg_rho_cdm]*y[ppw->pv->index_pt_delta_cdm]; // contribution to delta rho_matter + rho_m += ppw->pvecback[pba->index_bg_rho_cdm]; + } + if ((ppt->has_source_delta_m == _TRUE_) || (ppt->has_source_theta_m == _TRUE_)) { + if (ppt->gauge == newtonian) + rho_plus_p_theta_m += ppw->pvecback[pba->index_bg_rho_cdm]*y[ppw->pv->index_pt_theta_cdm]; // contribution to [(rho+p)theta]_matter + rho_plus_p_m += ppw->pvecback[pba->index_bg_rho_cdm]; + } + } + + /* idm_dr contribution */ + if (pba->has_idm_dr == _TRUE_) { + ppw->delta_rho += ppw->pvecback[pba->index_bg_rho_idm_dr]*y[ppw->pv->index_pt_delta_idm_dr]; + ppw->rho_plus_p_theta += ppw->pvecback[pba->index_bg_rho_idm_dr]*y[ppw->pv->index_pt_theta_idm_dr]; + ppw->rho_plus_p_tot += ppw->pvecback[pba->index_bg_rho_idm_dr]; } /* dcdm contribution */ if (pba->has_dcdm == _TRUE_) { ppw->delta_rho += ppw->pvecback[pba->index_bg_rho_dcdm]*y[ppw->pv->index_pt_delta_dcdm]; ppw->rho_plus_p_theta += ppw->pvecback[pba->index_bg_rho_dcdm]*y[ppw->pv->index_pt_theta_dcdm]; - } - - /* fluid contribution */ - if (pba->has_fld == _TRUE_) { - w = pba->w0_fld + pba->wa_fld * (1. - a / pba->a_today); + ppw->rho_plus_p_tot += ppw->pvecback[pba->index_bg_rho_dcdm]; - ppw->delta_rho += ppw->pvecback[pba->index_bg_rho_fld]*y[ppw->pv->index_pt_delta_fld]; - ppw->rho_plus_p_theta += (1.+w)*ppw->pvecback[pba->index_bg_rho_fld]*y[ppw->pv->index_pt_theta_fld]; - ppw->delta_p = ppw->delta_p + pba->cs2_fld * ppw->pvecback[pba->index_bg_rho_fld]*y[ppw->pv->index_pt_delta_fld]; + if (ppt->has_source_delta_m == _TRUE_) { + delta_rho_m += ppw->pvecback[pba->index_bg_rho_dcdm]*y[ppw->pv->index_pt_delta_dcdm]; // contribution to delta rho_matter + rho_m += ppw->pvecback[pba->index_bg_rho_dcdm]; + } + if ((ppt->has_source_delta_m == _TRUE_) || (ppt->has_source_theta_m == _TRUE_)) { + rho_plus_p_theta_m += ppw->pvecback[pba->index_bg_rho_dcdm]*y[ppw->pv->index_pt_theta_dcdm]; // contribution to [(rho+p)theta]_matter + rho_plus_p_m += ppw->pvecback[pba->index_bg_rho_dcdm]; + } } /* ultra-relativistic decay radiation */ @@ -5393,6 +6679,8 @@ int perturb_total_stress_energy( ppw->rho_plus_p_theta += 4./3.*3./4*k*rho_dr_over_f*y[ppw->pv->index_pt_F0_dr+1]; ppw->rho_plus_p_shear += 2./3.*rho_dr_over_f*y[ppw->pv->index_pt_F0_dr+2]; ppw->delta_p += 1./3.*rho_dr_over_f*y[ppw->pv->index_pt_F0_dr]; + + ppw->rho_plus_p_tot += 4./3. * ppw->pvecback[pba->index_bg_rho_dr]; } /* ultra-relativistic neutrino/relics contribution */ @@ -5402,8 +6690,29 @@ int perturb_total_stress_energy( ppw->rho_plus_p_theta = ppw->rho_plus_p_theta + 4./3.*ppw->pvecback[pba->index_bg_rho_ur]*theta_ur; ppw->rho_plus_p_shear = ppw->rho_plus_p_shear + 4./3.*ppw->pvecback[pba->index_bg_rho_ur]*shear_ur; ppw->delta_p += 1./3.*ppw->pvecback[pba->index_bg_rho_ur]*delta_ur; + + ppw->rho_plus_p_tot += 4./3. * ppw->pvecback[pba->index_bg_rho_ur]; } + /* interacting dark radiation */ + if (pba->has_idr == _TRUE_) { + ppw->delta_rho += ppw->pvecback[pba->index_bg_rho_idr]*delta_idr; + ppw->rho_plus_p_theta += 4./3.*ppw->pvecback[pba->index_bg_rho_idr]*theta_idr; + if (ppt->idr_nature==idr_free_streaming) + ppw->rho_plus_p_shear += 4./3.*ppw->pvecback[pba->index_bg_rho_idr]*shear_idr; + ppw->delta_p += 1./3. * ppw->pvecback[pba->index_bg_rho_idr]*delta_idr; + ppw->rho_plus_p_tot += 4./3. * ppw->pvecback[pba->index_bg_rho_idr]; + } + + /* infer delta_cb abd theta_cb (perturbations from CDM and baryons) before adding ncdm */ + if ((ppt->has_source_delta_m == _TRUE_) && (ppt->has_source_delta_cb == _TRUE_)) + ppw->delta_cb = delta_rho_m/rho_m; + + if (((ppt->has_source_delta_m == _TRUE_) || (ppt->has_source_theta_m == _TRUE_)) && + ((ppt->has_source_delta_cb == _TRUE_) || (ppt->has_source_theta_cb == _TRUE_))) + ppw->theta_cb = rho_plus_p_theta_m/rho_plus_p_m; + + /* non-cold dark matter contribution */ if (pba->has_ncdm == _TRUE_) { idx = ppw->pv->index_pt_psi0_ncdm1; @@ -5427,6 +6736,9 @@ int perturb_total_stress_energy( ppw->rho_plus_p_theta += rho_plus_p_ncdm*y[idx+1]; ppw->rho_plus_p_shear += rho_plus_p_ncdm*y[idx+2]; ppw->delta_p += cg2_ncdm*rho_ncdm_bg*y[idx]; + + ppw->rho_plus_p_tot += rho_plus_p_ncdm; + idx += ppw->pv->l_max_ncdm[n_ncdm]+1; } } @@ -5471,6 +6783,21 @@ int perturb_total_stress_energy( ppw->rho_plus_p_theta += rho_plus_p_theta_ncdm; ppw->rho_plus_p_shear += rho_plus_p_shear_ncdm; ppw->delta_p += delta_p_ncdm; + + ppw->rho_plus_p_tot += ppw->pvecback[pba->index_bg_rho_ncdm1+n_ncdm]+ppw->pvecback[pba->index_bg_p_ncdm1+n_ncdm]; + } + } + if (ppt->has_source_delta_m == _TRUE_) { + for(n_ncdm=0; n_ncdm < pba->N_ncdm; n_ncdm++){ + delta_rho_m += ppw->pvecback[pba->index_bg_rho_ncdm1+n_ncdm]*ppw->delta_ncdm[n_ncdm]; // contribution to delta rho_matter + rho_m += ppw->pvecback[pba->index_bg_rho_ncdm1+n_ncdm]; + } + } + if ((ppt->has_source_delta_m == _TRUE_) || (ppt->has_source_theta_m == _TRUE_)) { + for(n_ncdm=0; n_ncdm < pba->N_ncdm; n_ncdm++){ + rho_plus_p_theta_m += (ppw->pvecback[pba->index_bg_rho_ncdm1+n_ncdm]+ppw->pvecback[pba->index_bg_p_ncdm1+n_ncdm]) + *ppw->theta_ncdm[n_ncdm]; // contribution to [(rho+p)theta]_matter + rho_plus_p_m += (ppw->pvecback[pba->index_bg_rho_ncdm1+n_ncdm]+ppw->pvecback[pba->index_bg_p_ncdm1+n_ncdm]); } } } @@ -5511,86 +6838,124 @@ int perturb_total_stress_energy( ppw->delta_p += delta_p_scf; - } - - - /* store delta_m in the current gauge. In perturb_einstein, this - will be transformed later on into the gauge-independent variable D - = delta_m - 2H'/H \theta_m/k^2 . */ - - if (ppt->has_source_delta_m == _TRUE_) { - - /* include baryons and cold dark matter */ + ppw->rho_plus_p_tot += ppw->pvecback[pba->index_bg_rho_scf]+ppw->pvecback[pba->index_bg_p_scf]; - delta_rho_m = ppw->pvecback[pba->index_bg_rho_b]*y[ppw->pv->index_pt_delta_b]; - rho_m = ppw->pvecback[pba->index_bg_rho_b]; - - if (pba->has_cdm == _TRUE_) { - delta_rho_m += ppw->pvecback[pba->index_bg_rho_cdm]*y[ppw->pv->index_pt_delta_cdm]; - rho_m += ppw->pvecback[pba->index_bg_rho_cdm]; - } - - /* include decaying cold dark matter */ - - if (pba->has_dcdm == _TRUE_) { - delta_rho_m += ppw->pvecback[pba->index_bg_rho_dcdm]*y[ppw->pv->index_pt_delta_dcdm]; - rho_m += ppw->pvecback[pba->index_bg_rho_dcdm]; - } + } - /* include any other species non-relativistic today (like ncdm species) */ + /* add your extra species here */ - if (pba->has_ncdm == _TRUE_) { + /* fluid contribution */ + if (pba->has_fld == _TRUE_) { - for(n_ncdm=0; n_ncdm < pba->N_ncdm; n_ncdm++){ + class_call(background_w_fld(pba,a,&w_fld,&dw_over_da_fld,&integral_fld), pba->error_message, ppt->error_message); + w_prime_fld = dw_over_da_fld * a_prime_over_a * a; - delta_rho_m += ppw->pvecback[pba->index_bg_rho_ncdm1+n_ncdm]*ppw->delta_ncdm[n_ncdm]; - rho_m += ppw->pvecback[pba->index_bg_rho_ncdm1+n_ncdm]; - } + if (pba->use_ppf == _FALSE_) { + ppw->delta_rho_fld = ppw->pvecback[pba->index_bg_rho_fld]*y[ppw->pv->index_pt_delta_fld]; + ppw->rho_plus_p_theta_fld = (1.+w_fld)*ppw->pvecback[pba->index_bg_rho_fld]*y[ppw->pv->index_pt_theta_fld]; + ca2_fld = w_fld - w_prime_fld / 3. / (1.+w_fld) / a_prime_over_a; + /** We must gauge transform the pressure perturbation from the fluid rest-frame to the gauge we are working in */ + ppw->delta_p_fld = pba->cs2_fld * ppw->delta_rho_fld + (pba->cs2_fld-ca2_fld)*(3*a_prime_over_a*ppw->rho_plus_p_theta_fld/k/k); } + else { + s2sq = ppw->s_l[2]*ppw->s_l[2]; + c_gamma_k_H_square = pow(pba->c_gamma_over_c_fld*k/a_prime_over_a,2)*pba->cs2_fld; + /** The equation is too stiff for Runge-Kutta when c_gamma_k_H_square is large. + Use the asymptotic solution Gamma=Gamma'=0 in that case. + */ + if (c_gamma_k_H_square > ppr->c_gamma_k_H_square_max) + Gamma_fld = 0.; + else + Gamma_fld = y[ppw->pv->index_pt_Gamma_fld]; + + if (ppt->gauge == synchronous){ + alpha = (y[ppw->pv->index_pt_eta]+1.5*a2/k2/s2sq*(ppw->delta_rho+3*a_prime_over_a/k2*ppw->rho_plus_p_theta)-Gamma_fld)/a_prime_over_a; + alpha_prime = -2. * a_prime_over_a * alpha + y[ppw->pv->index_pt_eta] - 4.5 * (a2/k2) * ppw->rho_plus_p_shear; + metric_euler = 0.; + } + else{ + alpha = 0.; + alpha_prime = 0.; + metric_euler = k2*y[ppw->pv->index_pt_phi] - 4.5*a2*ppw->rho_plus_p_shear; + } + ppw->S_fld = ppw->pvecback[pba->index_bg_rho_fld]*(1.+w_fld)*1.5*a2/k2/a_prime_over_a* + (ppw->rho_plus_p_theta/ppw->rho_plus_p_tot+k2*alpha); + // note that the last terms in the ratio do not include fld, that's correct, it's the whole point of the PPF scheme + /** We must now check the stiffenss criterion again and set Gamma_prime_fld accordingly. */ + if (c_gamma_k_H_square > ppr->c_gamma_k_H_square_max){ + ppw->Gamma_prime_fld = 0.; + } + else{ + ppw->Gamma_prime_fld = a_prime_over_a*(ppw->S_fld/(1.+c_gamma_k_H_square) - (1.+c_gamma_k_H_square)*Gamma_fld); + } + Gamma_prime_plus_a_prime_over_a_Gamma = ppw->Gamma_prime_fld+a_prime_over_a*Gamma_fld; + // delta and theta in both gauges gauge: + ppw->rho_plus_p_theta_fld = ppw->pvecback[pba->index_bg_rho_fld]*(1.+w_fld)*ppw->rho_plus_p_theta/ppw->rho_plus_p_tot- + k2*2./3.*a_prime_over_a/a2/(1+4.5*a2/k2/s2sq*ppw->rho_plus_p_tot)* + (ppw->S_fld-Gamma_prime_plus_a_prime_over_a_Gamma/a_prime_over_a); + ppw->delta_rho_fld = -2./3.*k2*s2sq/a2*Gamma_fld-3*a_prime_over_a/k2*ppw->rho_plus_p_theta_fld; + + /** Now construct the pressure perturbation, see 1903.xxxxx. */ + /** Construct energy density and pressure for DE (_fld) and the rest (_t). + Also compute derivatives. */ + rho_fld = ppw->pvecback[pba->index_bg_rho_fld]; + p_fld = w_fld*rho_fld; + rho_fld_prime = -3*a_prime_over_a*(rho_fld+p_fld); + p_fld_prime = w_prime_fld*rho_fld-3*a_prime_over_a*(1+w_fld)*p_fld; + rho_t = ppw->pvecback[pba->index_bg_rho_tot] - rho_fld; + p_t = ppw->pvecback[pba->index_bg_p_tot] - p_fld; + rho_t_prime = -3*a_prime_over_a*(rho_t+p_t); + p_t_prime = ppw->pvecback[pba->index_bg_p_tot_prime]-p_fld_prime; + /** Compute background quantities X,Y,Z and their derivatives. */ + X = c_gamma_k_H_square; + X_prime = -2*X*(a_prime_over_a + ppw->pvecback[pba->index_bg_H_prime]/ppw->pvecback[pba->index_bg_H]); + Y = 4.5*a2/k2/s2sq*(rho_t+p_t); + Y_prime = Y*(2.*a_prime_over_a+(rho_t_prime+p_t_prime)/(rho_t+p_t)); + Z = 2./3.*k2*ppw->pvecback[pba->index_bg_H]/a; + Z_prime = Z*(ppw->pvecback[pba->index_bg_H_prime]/ppw->pvecback[pba->index_bg_H] - a_prime_over_a); + /** Construct theta_t and its derivative from the Euler equation */ + theta_t = ppw->rho_plus_p_theta/ppw->rho_plus_p_tot; + theta_t_prime = -a_prime_over_a*theta_t-(p_t_prime*theta_t-k2*ppw->delta_p +k2*ppw->rho_plus_p_shear)/ppw->rho_plus_p_tot+metric_euler; + S = ppw->S_fld; + S_prime = -Z_prime/Z*S+1./Z*(rho_fld_prime+p_fld_prime)*(theta_t+k2*alpha)+1./Z*(rho_fld+p_fld)*(theta_t_prime+k2*alpha_prime); + /** Analytic derivative of the equation for ppw->rho_plus_p_theta_fld above. */ + rho_plus_p_theta_fld_prime = Z_prime*(S-1./(1.+Y)*(S/(1.+1./X)+Gamma_fld*X)) + + Z*(S_prime + Y_prime/(1.+Y*Y+2*Y)*(S/(1.+1./X)+Gamma_fld*X)- + 1./(1.+Y)*(S_prime/(1.+1./X)+S*X_prime/(1.+X*X+2*X)+ppw->Gamma_prime_fld*X+Gamma_fld*X_prime))- + k2*alpha_prime*(rho_fld+p_fld)-k2*alpha*(rho_fld_prime+p_fld_prime); + + /** We can finally compute the pressure perturbation using the Euler equation for theta_fld */ + ppw->delta_p_fld = (rho_plus_p_theta_fld_prime+4*a_prime_over_a* ppw->rho_plus_p_theta_fld - (rho_fld+p_fld)*metric_euler)/k2; + } + + ppw->delta_rho += ppw->delta_rho_fld; + ppw->rho_plus_p_theta += ppw->rho_plus_p_theta_fld; + ppw->delta_p += ppw->delta_p_fld; + + ppw->rho_plus_p_tot += (1.+w_fld)*ppw->pvecback[pba->index_bg_rho_fld]; + + } + + /* don't add more species here, add them before the fluid contribution: because of the PPF scheme, the fluid must be the last one! */ - /* infer delta_m */ + /* store delta_m in the current gauge. In perturb_einstein, this + will be transformed later on into the gauge-independent variable D + = delta_m + 3 a H \theta_m/k^2 . */ + if (ppt->has_source_delta_m == _TRUE_) ppw->delta_m = delta_rho_m/rho_m; - } - /* store theta_m in the current gauge. In perturb_einstein, this will be transformed later on into the gauge-independent variable - Theta . Note that computing theta_m is necessary also if we want - the delta_m source only, because the gauge-invariant delta_m - involves theta_m in the current gauge. */ - - if ((ppt->has_source_delta_m == _TRUE_) || (ppt->has_source_theta_m == _TRUE_)) { - - /* include baryons and cold dark matter */ - - rho_plus_p_theta_m = ppw->pvecback[pba->index_bg_rho_b]*y[ppw->pv->index_pt_theta_b]; - rho_plus_p_m = ppw->pvecback[pba->index_bg_rho_b]; - - if (pba->has_cdm == _TRUE_) { - if (ppt->gauge == newtonian) - rho_plus_p_theta_m += ppw->pvecback[pba->index_bg_rho_cdm]*y[ppw->pv->index_pt_theta_cdm]; - rho_plus_p_m += ppw->pvecback[pba->index_bg_rho_cdm]; - } - - if (pba->has_dcdm == _TRUE_) { - rho_plus_p_theta_m += ppw->pvecback[pba->index_bg_rho_dcdm]*y[ppw->pv->index_pt_theta_dcdm]; - rho_plus_p_m += ppw->pvecback[pba->index_bg_rho_dcdm]; - } - - /* include any other species non-relativistic today (like ncdm species) */ - - if (pba->has_ncdm == _TRUE_) { - for(n_ncdm=0; n_ncdm < pba->N_ncdm; n_ncdm++){ - rho_plus_p_theta_m += (ppw->pvecback[pba->index_bg_rho_ncdm1+n_ncdm]+ppw->pvecback[pba->index_bg_p_ncdm1+n_ncdm])*ppw->theta_ncdm[n_ncdm]; - rho_plus_p_m += (ppw->pvecback[pba->index_bg_rho_ncdm1+n_ncdm]+ppw->pvecback[pba->index_bg_p_ncdm1+n_ncdm]); - } - } - - /* infer theta_m */ + Theta . Note that computing theta_m is necessary also if we want + the delta_m source only, because the gauge-invariant delta_m + involves theta_m in the current gauge. */ + if ((ppt->has_source_delta_m == _TRUE_) || (ppt->has_source_theta_m == _TRUE_)) ppw->theta_m = rho_plus_p_theta_m/rho_plus_p_m; - } + + /* could include Lambda contribution to rho_tot (not done to match CMBFAST/CAMB definition) */ + } /** - for vector modes */ @@ -5738,7 +7103,7 @@ int perturb_sources( /** - define local variables */ double P; - int index_type; + int index_tp; struct perturb_parameters_and_workspace * pppaw; struct precision * ppr; @@ -5758,10 +7123,14 @@ int perturb_sources( double delta_g, delta_rho_scf, rho_plus_p_theta_scf; double a_prime_over_a=0.; /* (a'/a) */ double a_prime_over_a_prime=0.; /* (a'/a)' */ + double w_fld,dw_over_da_fld,integral_fld; int switch_isw = 1; double a_rel, a2_rel, f_dr; + double H_T_Nb_prime=0., rho_tot; + double theta_over_k2,theta_shift; + /** - rename structure fields (just to avoid heavy notations) */ pppaw = parameters_and_workspace; @@ -5805,11 +7174,8 @@ int perturb_sources( a_rel = ppw->pvecback[pba->index_bg_a]/pba->a_today; a2_rel = a_rel * a_rel; - /* derived background quantities, useful only in synchronous gauge */ - if (ppt->gauge == synchronous) { - a_prime_over_a = pvecback[pba->index_bg_a] * pvecback[pba->index_bg_H]; /* (a'/a)=aH */ - a_prime_over_a_prime = pvecback[pba->index_bg_H_prime] * pvecback[pba->index_bg_a] + pow(pvecback[pba->index_bg_H] * pvecback[pba->index_bg_a],2); /* (a'/a)' = aH'+(aH)^2 */ - } + a_prime_over_a = pvecback[pba->index_bg_a] * pvecback[pba->index_bg_H]; /* (a'/a)=aH */ + a_prime_over_a_prime = pvecback[pba->index_bg_H_prime] * pvecback[pba->index_bg_a] + pow(pvecback[pba->index_bg_H] * pvecback[pba->index_bg_a],2); /* (a'/a)' = aH'+(aH)^2 */ /** - for scalars */ if (_scalars_) { @@ -5932,6 +7298,34 @@ int perturb_sources( /* now, non-CMB sources */ + if ((ppt->has_Nbody_gauge_transfers == _TRUE_) || (ppt->has_source_H_T_Nb_prime == _TRUE_) || (ppt->has_source_k2gamma_Nb == _TRUE_)) { + + /* H_T_prime in N-body gauge. (H_T=3zeta where zeta is the comoving curvature perturbation.). + See equation A.5 in 1811.00904.*/ + H_T_Nb_prime = 3*a_prime_over_a/ppw->rho_plus_p_tot*(-ppw->delta_p+ + pvecback[pba->index_bg_p_tot_prime]*ppw->rho_plus_p_theta/ppw->rho_plus_p_tot/k/k+ + ppw->rho_plus_p_shear); + if (ppt->has_source_H_T_Nb_prime == _TRUE_) { + _set_source_(ppt->index_tp_H_T_Nb_prime) = H_T_Nb_prime; + } + + /** gamma in N-body gauge. Eq. A.2 in 1811.00904 gives k2gamma = + (a'/a)H_T' + k2(phi-psi) - H_T''. The last term is cubersome + to calculate (one would need finite derivatives) but usually + small. Here we only compute an approximate k2gamma without + this last term. If needed, the term could be restored: you + can see how T. Tram did it in a previous commit + beec79548877e1e43403d1f4de5ddee6741a3c16 (28.02.2019) - then + it had to go to spectra.c, now it could stay in this + module. Later this feature was removed for simplicity. Note + that to compute the transfer functions in the N-body gauge + we do not need k2gamma anyway. */ + + if (ppt->has_source_k2gamma_Nb == _TRUE_){ + _set_source_(ppt->index_tp_k2gamma_Nb) = -a_prime_over_a*H_T_Nb_prime+9./2.*a2_rel*ppw->rho_plus_p_shear; + } + } + /* Bardeen potential -PHI_H = phi in Newtonian gauge */ if (ppt->has_source_phi == _TRUE_) { @@ -5980,34 +7374,88 @@ int perturb_sources( a_prime_over_a * pvecmetric[ppw->index_mt_alpha] + pvecmetric[ppw->index_mt_alpha_prime]; } - /* total matter over density (gauge-invariant, defined as in arXiv:1307.1459) */ + /* the metric potentials h and eta in synchronous gauge */ + if (ppt->gauge == synchronous) { + + /* cdm is always on in synchronous gauge, see error message above that checks gauge and has_cdm */ + if (ppt->has_source_h == _TRUE_) + _set_source_(ppt->index_tp_h) = - 2 * y[ppw->pv->index_pt_delta_cdm]; + + if (ppt->has_source_h_prime == _TRUE_) + _set_source_(ppt->index_tp_h_prime) = pvecmetric[ppw->index_mt_h_prime]; + + if (ppt->has_source_eta == _TRUE_) + _set_source_(ppt->index_tp_eta) = y[ppw->pv->index_pt_eta]; + + if (ppt->has_source_eta_prime == _TRUE_) + _set_source_(ppt->index_tp_eta_prime) = dy[ppw->pv->index_pt_eta]; + + } + + /* total matter overdensity (gauge-invariant, defined as in arXiv:1307.1459) */ if (ppt->has_source_delta_m == _TRUE_) { _set_source_(ppt->index_tp_delta_m) = ppw->delta_m; } + /* cdm and baryon over density */ + if (ppt->has_source_delta_cb == _TRUE_) { + _set_source_(ppt->index_tp_delta_cb) = ppw->delta_cb; + } + + /* compute the corrections that have to be applied to each (delta_i, theta_i) in N-body gauge */ + if (ppt->has_Nbody_gauge_transfers == _TRUE_){ + theta_over_k2 = ppw->rho_plus_p_theta/ppw->rho_plus_p_tot/k/k; + theta_shift = H_T_Nb_prime; + if (ppt->gauge == synchronous) theta_shift += pvecmetric[ppw->index_mt_alpha]*k*k; + } + else{ + theta_over_k2 = 0.; + theta_shift = 0.; + } + + /* delta_tot */ + if (ppt->has_source_delta_tot == _TRUE_) { + + /** We follow the (debatable) CMBFAST/CAMB convention of not including rho_lambda in rho_tot */ + if (pba->has_lambda == _TRUE_){ + rho_tot = pvecback[pba->index_bg_rho_tot] - pvecback[pba->index_bg_rho_lambda]; + } + else{ + rho_tot = pvecback[pba->index_bg_rho_tot]; + } + + _set_source_(ppt->index_tp_delta_tot) = ppw->delta_rho/rho_tot + + 3*a_prime_over_a*(1+pvecback[pba->index_bg_p_tot]/pvecback[pba->index_bg_rho_tot])*theta_over_k2; + } + /* delta_g */ if (ppt->has_source_delta_g == _TRUE_) { - _set_source_(ppt->index_tp_delta_g) = delta_g; + _set_source_(ppt->index_tp_delta_g) = delta_g + + 4.*a_prime_over_a*theta_over_k2; // N-body gauge correction } /* delta_baryon */ if (ppt->has_source_delta_b == _TRUE_) { - _set_source_(ppt->index_tp_delta_b) = y[ppw->pv->index_pt_delta_b]; + _set_source_(ppt->index_tp_delta_b) = y[ppw->pv->index_pt_delta_b] + + 3.*a_prime_over_a*theta_over_k2; // N-body gauge correction } /* delta_cdm */ if (ppt->has_source_delta_cdm == _TRUE_) { - _set_source_(ppt->index_tp_delta_cdm) = y[ppw->pv->index_pt_delta_cdm]; + _set_source_(ppt->index_tp_delta_cdm) = y[ppw->pv->index_pt_delta_cdm] + + 3.*a_prime_over_a*theta_over_k2; // N-body gauge correction } /* delta_dcdm */ if (ppt->has_source_delta_dcdm == _TRUE_) { - _set_source_(ppt->index_tp_delta_dcdm) = y[ppw->pv->index_pt_delta_dcdm]; + _set_source_(ppt->index_tp_delta_dcdm) = y[ppw->pv->index_pt_delta_dcdm] + + (3.*a_prime_over_a+a_rel*pba->Gamma_dcdm)*theta_over_k2; // N-body gauge correction; } /* delta_fld */ if (ppt->has_source_delta_fld == _TRUE_) { - _set_source_(ppt->index_tp_delta_fld) = y[ppw->pv->index_pt_delta_fld]; + _set_source_(ppt->index_tp_delta_fld) = ppw->delta_rho_fld/pvecback[pba->index_bg_rho_fld] + + 3.*a_prime_over_a*(1.+pvecback[pba->index_bg_w_fld])*theta_over_k2; // N-body gauge correction } /* delta_scf */ @@ -6015,13 +7463,15 @@ int perturb_sources( if (ppt->gauge == synchronous){ delta_rho_scf = 1./3.* (1./a2_rel*ppw->pvecback[pba->index_bg_phi_prime_scf]*y[ppw->pv->index_pt_phi_prime_scf] - + ppw->pvecback[pba->index_bg_dV_scf]*y[ppw->pv->index_pt_phi_scf]); + + ppw->pvecback[pba->index_bg_dV_scf]*y[ppw->pv->index_pt_phi_scf]) + + 3.*a_prime_over_a*(1.+pvecback[pba->index_bg_p_scf]/pvecback[pba->index_bg_rho_scf])*theta_over_k2; // N-body gauge correction } else{ delta_rho_scf = 1./3.* (1./a2_rel*ppw->pvecback[pba->index_bg_phi_prime_scf]*y[ppw->pv->index_pt_phi_prime_scf] + ppw->pvecback[pba->index_bg_dV_scf]*y[ppw->pv->index_pt_phi_scf] - - 1./a2_rel*pow(ppw->pvecback[pba->index_bg_phi_prime_scf],2)*ppw->pvecmetric[ppw->index_mt_psi]); + - 1./a2_rel*pow(ppw->pvecback[pba->index_bg_phi_prime_scf],2)*ppw->pvecmetric[ppw->index_mt_psi]) + + 3.*a_prime_over_a*(1.+pvecback[pba->index_bg_p_scf]/pvecback[pba->index_bg_rho_scf])*theta_over_k2; // N-body gauge correction } _set_source_(ppt->index_tp_delta_scf) = delta_rho_scf/pvecback[pba->index_bg_rho_scf]; } @@ -6029,83 +7479,154 @@ int perturb_sources( /* delta_dr */ if (ppt->has_source_delta_dr == _TRUE_) { f_dr = pow(a2_rel/pba->H0,2)*pvecback[pba->index_bg_rho_dr]; - _set_source_(ppt->index_tp_delta_dr) = y[ppw->pv->index_pt_F0_dr]/f_dr; + _set_source_(ppt->index_tp_delta_dr) = y[ppw->pv->index_pt_F0_dr]/f_dr + + 4.*a_prime_over_a*theta_over_k2; // N-body gauge correction } /* delta_ur */ if (ppt->has_source_delta_ur == _TRUE_) { if (ppw->approx[ppw->index_ap_rsa]==(int)rsa_off) - _set_source_(ppt->index_tp_delta_ur) = y[ppw->pv->index_pt_delta_ur]; + _set_source_(ppt->index_tp_delta_ur) = y[ppw->pv->index_pt_delta_ur] + + 4.*a_prime_over_a*theta_over_k2; // N-body gauge correction else - _set_source_(ppt->index_tp_delta_ur) = ppw->rsa_delta_ur; + _set_source_(ppt->index_tp_delta_ur) = ppw->rsa_delta_ur + + 4.*a_prime_over_a*theta_over_k2; // N-body gauge correction + } + + /* delta_idr */ + if (ppt->has_source_delta_idr == _TRUE_) { + if (ppw->approx[ppw->index_ap_rsa_idr]==(int)rsa_idr_off) + _set_source_(ppt->index_tp_delta_idr) = y[ppw->pv->index_pt_delta_idr] + + 4.*a_prime_over_a*theta_over_k2; // N-body gauge correction + else + _set_source_(ppt->index_tp_delta_idr) = ppw->rsa_delta_idr + + 4.*a_prime_over_a*theta_over_k2; // N-body gauge correction + } + + /* delta_idm_dr */ + if (ppt->has_source_delta_idm_dr == _TRUE_) { + _set_source_(ppt->index_tp_delta_idm_dr) = y[ppw->pv->index_pt_delta_idm_dr] + + 3.*a_prime_over_a*theta_over_k2; // N-body gauge correction } /* delta_ncdm1 */ if (ppt->has_source_delta_ncdm == _TRUE_) { - for (index_type = ppt->index_tp_delta_ncdm1; index_type < ppt->index_tp_delta_ncdm1+pba->N_ncdm; index_type++) { - _set_source_(index_type) = ppw->delta_ncdm[index_type - ppt->index_tp_delta_ncdm1]; + for (index_tp = ppt->index_tp_delta_ncdm1; index_tp < ppt->index_tp_delta_ncdm1+pba->N_ncdm; index_tp++) { + _set_source_(index_tp) = ppw->delta_ncdm[index_tp - ppt->index_tp_delta_ncdm1] + + 3.*a_prime_over_a*(1+pvecback[index_tp - ppt->index_tp_delta_ncdm1 + pba->index_bg_p_ncdm1] + /pvecback[index_tp - ppt->index_tp_delta_ncdm1 + pba->index_bg_rho_ncdm1])*theta_over_k2; // N-body gauge correction } } - /* total velocity (gauge-invariant, defined as in arXiv:1307.1459) */ + /* total velocity */ + if (ppt->has_source_theta_tot == _TRUE_) { + _set_source_(ppt->index_tp_theta_tot) = ppw->rho_plus_p_theta/(pvecback[pba->index_bg_rho_tot]+pvecback[pba->index_bg_p_tot]) + + theta_shift; // N-body gauge correction + } + + /* total matter velocity (gauge-invariant, defined as in arXiv:1307.1459) */ if (ppt->has_source_theta_m == _TRUE_) { _set_source_(ppt->index_tp_theta_m) = ppw->theta_m; } + /* cdm and baryon velocity */ + if (ppt->has_source_theta_cb == _TRUE_) { + _set_source_(ppt->index_tp_theta_cb) = ppw->theta_cb; + } + + /* total velocity */ + if (ppt->has_source_theta_tot == _TRUE_) { + _set_source_(ppt->index_tp_theta_tot) = ppw->rho_plus_p_theta/ppw->rho_plus_p_tot + + theta_shift; // N-body gauge correction + } + /* theta_g */ if (ppt->has_source_theta_g == _TRUE_) { if (ppw->approx[ppw->index_ap_rsa]==(int)rsa_off) - _set_source_(ppt->index_tp_theta_g) = y[ppw->pv->index_pt_theta_g]; + _set_source_(ppt->index_tp_theta_g) = y[ppw->pv->index_pt_theta_g] + + theta_shift; // N-body gauge correction else - _set_source_(ppt->index_tp_theta_g) = ppw->rsa_theta_g; + _set_source_(ppt->index_tp_theta_g) = ppw->rsa_theta_g + + theta_shift; // N-body gauge correction } /* theta_baryon */ if (ppt->has_source_theta_b == _TRUE_) { - _set_source_(ppt->index_tp_theta_b) = y[ppw->pv->index_pt_theta_b]; + _set_source_(ppt->index_tp_theta_b) = y[ppw->pv->index_pt_theta_b] + + theta_shift; // N-body gauge correction } /* theta_cdm */ if (ppt->has_source_theta_cdm == _TRUE_) { - _set_source_(ppt->index_tp_theta_cdm) = y[ppw->pv->index_pt_theta_cdm]; + _set_source_(ppt->index_tp_theta_cdm) = y[ppw->pv->index_pt_theta_cdm] + + theta_shift; // N-body gauge correction + } + + /* theta_idm_dr */ + if (ppt->has_source_theta_idm_dr == _TRUE_) { + _set_source_(ppt->index_tp_theta_idm_dr) = y[ppw->pv->index_pt_theta_idm_dr] + + theta_shift; // N-body gauge correction } /* theta_dcdm */ if (ppt->has_source_theta_dcdm == _TRUE_) { - _set_source_(ppt->index_tp_theta_dcdm) = y[ppw->pv->index_pt_theta_dcdm]; + _set_source_(ppt->index_tp_theta_dcdm) = y[ppw->pv->index_pt_theta_dcdm] + + theta_shift; // N-body gauge correction } /* theta_fld */ if (ppt->has_source_theta_fld == _TRUE_) { - _set_source_(ppt->index_tp_theta_fld) = y[ppw->pv->index_pt_theta_fld]; + + class_call(background_w_fld(pba,a_rel*pba->a_today,&w_fld,&dw_over_da_fld,&integral_fld), pba->error_message, ppt->error_message); + + _set_source_(ppt->index_tp_theta_fld) = ppw->rho_plus_p_theta_fld/(1.+w_fld)/pvecback[pba->index_bg_rho_fld] + + theta_shift; // N-body gauge correction } /* theta_scf */ if (ppt->has_source_theta_scf == _TRUE_) { + rho_plus_p_theta_scf = 1./3.* k*k/a2_rel*ppw->pvecback[pba->index_bg_phi_prime_scf]*y[ppw->pv->index_pt_phi_scf]; - _set_source_(ppt->index_tp_theta_scf) = rho_plus_p_theta_scf/ - (pvecback[pba->index_bg_rho_scf]+pvecback[pba->index_bg_p_scf]); + + _set_source_(ppt->index_tp_theta_scf) = rho_plus_p_theta_scf/(pvecback[pba->index_bg_rho_scf]+pvecback[pba->index_bg_p_scf]) + + theta_shift; // N-body gauge correction } /* theta_dr */ if (ppt->has_source_theta_dr == _TRUE_) { + f_dr = pow(a2_rel/pba->H0,2)*pvecback[pba->index_bg_rho_dr]; - _set_source_(ppt->index_tp_theta_dr) = 3./4.*k*y[ppw->pv->index_pt_F0_dr+1]/f_dr; + + _set_source_(ppt->index_tp_theta_dr) = 3./4.*k*y[ppw->pv->index_pt_F0_dr+1]/f_dr + + theta_shift; // N-body gauge correction } /* theta_ur */ if (ppt->has_source_theta_ur == _TRUE_) { if (ppw->approx[ppw->index_ap_rsa]==(int)rsa_off) - _set_source_(ppt->index_tp_theta_ur) = y[ppw->pv->index_pt_theta_ur]; + _set_source_(ppt->index_tp_theta_ur) = y[ppw->pv->index_pt_theta_ur] + + theta_shift; // N-body gauge correction + else + _set_source_(ppt->index_tp_theta_ur) = ppw->rsa_theta_ur + + theta_shift; // N-body gauge correction + } + + /* theta_idr */ + if (ppt->has_source_theta_idr == _TRUE_) { + if (ppw->approx[ppw->index_ap_rsa_idr]==(int)rsa_idr_off) + _set_source_(ppt->index_tp_theta_idr) = y[ppw->pv->index_pt_theta_idr] + + theta_shift; // N-body gauge correction else - _set_source_(ppt->index_tp_theta_ur) = ppw->rsa_theta_ur; + _set_source_(ppt->index_tp_theta_idr) = ppw->rsa_theta_idr + + theta_shift; // N-body gauge correction } /* theta_ncdm1 */ if (ppt->has_source_theta_ncdm == _TRUE_) { - for (index_type = ppt->index_tp_theta_ncdm1; index_type < ppt->index_tp_theta_ncdm1+pba->N_ncdm; index_type++) { - _set_source_(index_type) = ppw->theta_ncdm[index_type - ppt->index_tp_theta_ncdm1]; + for (index_tp = ppt->index_tp_theta_ncdm1; index_tp < ppt->index_tp_theta_ncdm1+pba->N_ncdm; index_tp++) { + _set_source_(index_tp) = ppw->theta_ncdm[index_tp - ppt->index_tp_theta_ncdm1] + + theta_shift; // N-body gauge correction } } } @@ -6187,20 +7708,24 @@ int perturb_print_variables(double tau, /** - define local variables */ double k; int index_md; - //struct precision * ppr; + + struct precision * ppr; struct background * pba; struct thermo * pth; struct perturbs * ppt; struct perturb_workspace * ppw; double * pvecback; + double * pvecthermo; double * pvecmetric; double delta_g,theta_g,shear_g,l4_g,pol0_g,pol1_g,pol2_g,pol4_g; double delta_b,theta_b; double delta_cdm=0.,theta_cdm=0.; + double delta_idm_dr=0.,theta_idm_dr=0.; double delta_dcdm=0.,theta_dcdm=0.; double delta_dr=0.,theta_dr=0.,shear_dr=0., f_dr=1.0; double delta_ur=0.,theta_ur=0.,shear_ur=0.,l4_ur=0.; + double delta_idr=0., theta_idr=0., shear_idr=0.; double delta_rho_scf=0., rho_plus_p_theta_scf=0.; double delta_scf=0., theta_scf=0.; /** - ncdm sector begins */ @@ -6227,14 +7752,51 @@ int perturb_print_variables(double tau, pppaw = parameters_and_workspace; k = pppaw->k; index_md = pppaw->index_md; - //ppr = pppaw->ppr; + + ppr = pppaw->ppr; pba = pppaw->pba; pth = pppaw->pth; ppt = pppaw->ppt; ppw = pppaw->ppw; pvecback = ppw->pvecback; + pvecthermo = ppw->pvecthermo; pvecmetric = ppw->pvecmetric; + /** - update background/thermo quantities in this point */ + + class_call(background_at_tau(pba, + tau, + pba->normal_info, + pba->inter_closeby, + &(ppw->last_index_back), + pvecback), + pba->error_message, + error_message); + + class_call(thermodynamics_at_z(pba, + pth, + 1./pvecback[pba->index_bg_a]-1., + pth->inter_closeby, + &(ppw->last_index_thermo), + pvecback, + pvecthermo), + pth->error_message, + error_message); + + /** - update metric perturbations in this point */ + + class_call(perturb_einstein(ppr, + pba, + pth, + ppt, + index_md, + k, + tau, + y, + ppw), + ppt->error_message, + error_message); + a = pvecback[pba->index_bg_a]; a2 = a*a; H = pvecback[pba->index_bg_H]; @@ -6267,11 +7829,11 @@ int perturb_print_variables(double tau, if (ppw->approx[ppw->index_ap_rsa]==(int)rsa_off) { if (ppw->approx[ppw->index_ap_tca]==(int)tca_on) { shear_g = ppw->tca_shear_g; - //l3_g = 6./7.*k/ppw->pvecthermo[pth->index_th_dkappa]*ppw->tca_shear_g; + //l3_g = 6./7.*k/pvecthermo[pth->index_th_dkappa]*ppw->tca_shear_g; pol0_g = 2.5*ppw->tca_shear_g; - pol1_g = 7./12.*6./7.*k/ppw->pvecthermo[pth->index_th_dkappa]*ppw->tca_shear_g; + pol1_g = 7./12.*6./7.*k/pvecthermo[pth->index_th_dkappa]*ppw->tca_shear_g; pol2_g = 0.5*ppw->tca_shear_g; - //pol3_g = 0.25*6./7.*k/ppw->pvecthermo[pth->index_th_dkappa]*ppw->tca_shear_g; + //pol3_g = 0.25*6./7.*k/pvecthermo[pth->index_th_dkappa]*ppw->tca_shear_g; } else { shear_g = y[ppw->pv->index_pt_shear_g]; @@ -6307,6 +7869,34 @@ int perturb_print_variables(double tau, delta_b = y[ppw->pv->index_pt_delta_b]; theta_b = y[ppw->pv->index_pt_theta_b]; + /* interacting dark radiation */ + if (pba->has_idr == _TRUE_) { + if (ppw->approx[ppw->index_ap_rsa_idr] == (int)rsa_idr_off) { + delta_idr = y[ppw->pv->index_pt_delta_idr]; + theta_idr = y[ppw->pv->index_pt_theta_idr]; + + if(ppt->idr_nature == idr_free_streaming){ + if((pba->has_idm_dr == _TRUE_)&&(ppw->approx[ppw->index_ap_tca_idm_dr] == (int)tca_idm_dr_on)){ + shear_idr = ppw->tca_shear_idm_dr; + } + else{ + shear_idr = y[ppw->pv->index_pt_shear_idr]; + } + } + } + else{ + delta_idr = ppw->rsa_delta_idr; + theta_idr = ppw->rsa_theta_idr; + shear_idr = 0.; + } + } + + /* interacting dark matter */ + if (pba->has_idm_dr == _TRUE_) { + delta_idm_dr = y[ppw->pv->index_pt_delta_idm_dr]; + theta_idm_dr = y[ppw->pv->index_pt_theta_idm_dr]; + } + if (pba->has_cdm == _TRUE_) { delta_cdm = y[ppw->pv->index_pt_delta_cdm]; @@ -6390,11 +7980,6 @@ int perturb_print_variables(double tau, (ppw->pvecback[pba->index_bg_rho_ncdm1+n_ncdm]+ppw->pvecback[pba->index_bg_p_ncdm1+n_ncdm]); delta_p_over_delta_rho_ncdm[n_ncdm] = delta_p_ncdm/rho_delta_ncdm; - if (delta_p_over_delta_rho_ncdm[n_ncdm] < -0.5){ - FILE * fid = fopen("integrand.dat","w"); - - fclose(fid); - } } } } @@ -6406,6 +7991,7 @@ int perturb_print_variables(double tau, } + if (pba->has_dr == _TRUE_) { f_dr = pow(pvecback[pba->index_bg_a]*pvecback[pba->index_bg_a]/pba->H0,2)*pvecback[pba->index_bg_rho_dr]; delta_dr = y[ppw->pv->index_pt_F0_dr]/f_dr; @@ -6450,6 +8036,11 @@ int perturb_print_variables(double tau, theta_ur += k*k*alpha; } + if (pba->has_idr == _TRUE_) { + delta_idr -= 4. * pvecback[pba->index_bg_H]*pvecback[pba->index_bg_a]*alpha; + theta_idr += k*k*alpha; + } + if (pba->has_dr == _TRUE_) { delta_dr += (-4.*a*H+a*pba->Gamma_dcdm*pvecback[pba->index_bg_rho_dcdm]/pvecback[pba->index_bg_rho_dr])*alpha; @@ -6461,9 +8052,14 @@ int perturb_print_variables(double tau, theta_cdm += k*k*alpha; } + if (pba->has_idm_dr == _TRUE_) { + delta_idm_dr -= 3. * pvecback[pba->index_bg_H]*pvecback[pba->index_bg_a]*alpha; + theta_idm_dr += k*k*alpha; + } + if (pba->has_ncdm == _TRUE_) { for(n_ncdm=0; n_ncdm < pba->N_ncdm; n_ncdm++){ - /** - --> Do gauge transformation of delta, deltaP/rho (?) and theta using -= 3aH(1+w_ncdm) alpha for delta. */ + /** - --> TODO: gauge transformation of delta, deltaP/rho (?) and theta using -= 3aH(1+w_ncdm) alpha for delta. */ } } @@ -6516,6 +8112,14 @@ int perturb_print_variables(double tau, class_store_double(dataptr, delta_ur, pba->has_ur, storeidx); class_store_double(dataptr, theta_ur, pba->has_ur, storeidx); class_store_double(dataptr, shear_ur, pba->has_ur, storeidx); + /* Interacting dark radiation */ + class_store_double(dataptr, delta_idr, pba->has_idr, storeidx); + class_store_double(dataptr, theta_idr, pba->has_idr, storeidx); + if ((pba->has_idr==_TRUE_) && (ppt->idr_nature == idr_free_streaming)) + class_store_double(dataptr, shear_idr, _TRUE_, storeidx); + /* Interacting dark matter */ + class_store_double(dataptr, delta_idm_dr, pba->has_idm_dr, storeidx); + class_store_double(dataptr, theta_idm_dr, pba->has_idm_dr, storeidx); /* Cold dark matter */ class_store_double(dataptr, delta_cdm, pba->has_cdm, storeidx); class_store_double(dataptr, theta_cdm, pba->has_cdm, storeidx); @@ -6538,7 +8142,10 @@ int perturb_print_variables(double tau, /* Scalar field scf*/ class_store_double(dataptr, delta_scf, pba->has_scf, storeidx); class_store_double(dataptr, theta_scf, pba->has_scf, storeidx); - + /** Fluid */ + class_store_double(dataptr, ppw->delta_rho_fld, pba->has_fld, storeidx); + class_store_double(dataptr, ppw->rho_plus_p_theta_fld, pba->has_fld, storeidx); + class_store_double(dataptr, ppw->delta_p_fld, pba->has_fld, storeidx); //fprintf(ppw->perturb_output_file,"\n"); } @@ -6556,10 +8163,10 @@ int perturb_print_variables(double tau, pol4_g = y[ppw->pv->index_pt_pol0_g+4]; } else { - delta_g = -4./3.*ppw->pv->y[ppw->pv->index_pt_gwdot]/ppw->pvecthermo[pth->index_th_dkappa]; //TBC + delta_g = -4./3.*ppw->pv->y[ppw->pv->index_pt_gwdot]/pvecthermo[pth->index_th_dkappa]; //TBC shear_g = 0.; l4_g = 0.; - pol0_g = 1./3.*ppw->pv->y[ppw->pv->index_pt_gwdot]/ppw->pvecthermo[pth->index_th_dkappa]; //TBC + pol0_g = 1./3.*ppw->pv->y[ppw->pv->index_pt_gwdot]/pvecthermo[pth->index_th_dkappa]; //TBC pol2_g = 0.; pol4_g = 0.; } @@ -6671,7 +8278,7 @@ int perturb_print_variables(double tau, return _SUCCESS_; - } +} /** * Compute derivative of all perturbations to be integrated @@ -6729,7 +8336,8 @@ int perturb_derivs(double tau, /* short-cut notations for the perturbations */ double delta_g=0.,theta_g=0.,shear_g=0.; double delta_b,theta_b; - double cb2,cs2,ca2; + double delta_idr=0., theta_idr=0.; + double cb2,cs2,ca2,delta_p_b_over_rho_b; double metric_continuity=0.,metric_euler=0.,metric_shear=0.,metric_ufa_class=0.; /* perturbed recombination (just to simplify the notation) */ @@ -6745,7 +8353,7 @@ int perturb_derivs(double tau, double P0,P1,P2; /* for use with fluid (fld): */ - double w,w_prime; + double w_fld,dw_over_da_fld,w_prime_fld,integral_fld; /* for use with non-cold dark matter (ncdm): */ int index_q,n_ncdm,idx; @@ -6759,6 +8367,8 @@ int perturb_derivs(double tau, /* for use with dcdm and dr */ double f_dr, fprime_dr; + double Sinv=0., dmu_idm_dr=0., dmu_idr=0., tca_slip_idm_dr=0.; + /** - rename the fields of the input structure (just to avoid heavy notations) */ pppaw = parameters_and_workspace; @@ -6819,6 +8429,12 @@ int perturb_derivs(double tau, a_prime_over_a = pvecback[pba->index_bg_H] * a; R = 4./3. * pvecback[pba->index_bg_rho_g]/pvecback[pba->index_bg_rho_b]; + if((pba->has_idm_dr==_TRUE_)){ + Sinv = 4./3. * pvecback[pba->index_bg_rho_idr]/ pvecback[pba->index_bg_rho_idm_dr]; + dmu_idm_dr = pvecthermo[pth->index_th_dmu_idm_dr]; + dmu_idr = pth->b_idr/pth->a_idm_dr*pba->Omega0_idr/pba->Omega0_idm_dr*dmu_idm_dr; + } + /** - Compute 'generalised cotK function of argument \f$ \sqrt{|K|}*\tau \f$, for closing hierarchy. (see equation 2.34 in arXiv:1305.3261): */ if (pba->has_curvature == _FALSE_){ @@ -6842,15 +8458,26 @@ int perturb_derivs(double tau, delta_g = y[pv->index_pt_delta_g]; theta_g = y[pv->index_pt_theta_g]; } + + if (pba->has_idr == _TRUE_){ + if (ppw->approx[ppw->index_ap_rsa_idr] == (int)rsa_idr_off){ + delta_idr = y[pv->index_pt_delta_idr]; + theta_idr = y[pv->index_pt_theta_idr]; + } + } + delta_b = y[pv->index_pt_delta_b]; theta_b = y[pv->index_pt_theta_b]; cb2 = pvecthermo[pth->index_th_cb2]; + delta_p_b_over_rho_b = cb2*delta_b; /* for baryons, (delta p)/rho with Ma & Bertschinger approximation: sound speed = adiabatic sound speed */ /** - --> (b) perturbed recombination **/ if ((ppt->has_perturbed_recombination == _TRUE_)&&(ppw->approx[ppw->index_ap_tca]==(int)tca_off)){ delta_temp= y[ppw->pv->index_pt_perturbed_recombination_delta_temp]; + delta_p_b_over_rho_b = pvecthermo[pth->index_th_wb]*(delta_b+delta_temp); /* for baryons, (delta p)/rho with sound speed from arXiv:0707.2727 */ + delta_chi= y[ppw->pv->index_pt_perturbed_recombination_delta_chi]; chi=pvecthermo[pth->index_th_xe]; @@ -6885,19 +8512,19 @@ int perturb_derivs(double tau, /** - --> (c) compute metric-related quantities (depending on gauge; additional gauges can be coded below) - - Each continuity equation contains a term in (theta+metric_continuity) with - metric_continuity = (h_prime/2) in synchronous gauge, (-3 phi_prime) in newtonian gauge + - Each continuity equation contains a term in (theta+metric_continuity) with + metric_continuity = (h_prime/2) in synchronous gauge, (-3 phi_prime) in newtonian gauge - - Each Euler equation contains a source term metric_euler with - metric_euler = 0 in synchronous gauge, (k2 psi) in newtonian gauge + - Each Euler equation contains a source term metric_euler with + metric_euler = 0 in synchronous gauge, (k2 psi) in newtonian gauge - - Each shear derivative equation contains a source term metric_shear equal to - metric_shear = (h_prime+6eta_prime)/2 in synchronous gauge, 0 in newtonian gauge + - Each shear derivative equation contains a source term metric_shear equal to + metric_shear = (h_prime+6eta_prime)/2 in synchronous gauge, 0 in newtonian gauge - - metric_shear_prime is the derivative of metric_shear + - metric_shear_prime is the derivative of metric_shear - - In the ufa_class approximation, the leading-order source term is (h_prime/2) in synchronous gauge, - (-3 (phi_prime+psi_prime)) in newtonian gauge: we approximate the later by (-6 phi_prime) */ + - In the ufa_class approximation, the leading-order source term is (h_prime/2) in synchronous gauge, + (-3 (phi_prime+psi_prime)) in newtonian gauge: we approximate the later by (-6 phi_prime) */ if (ppt->gauge == synchronous) { @@ -6924,9 +8551,14 @@ int perturb_derivs(double tau, theta_g = ppw->rsa_theta_g; } - /** - --> (e) BEGINNING OF ACTUAL SYSTEM OF EQUATIONS OF EVOLUTION */ + if (pba->has_idr == _TRUE_){ + if (ppw->approx[ppw->index_ap_rsa_idr] == (int)rsa_idr_on){ + delta_idr = ppw->rsa_delta_idr; + theta_idr = ppw->rsa_theta_idr; + } + } - /* Note concerning perturbed recombination: $cb2*delta_b$ must be replaced everywhere by $cb2*(delta_b+delta_temp)$. If perturbed recombination is not required, delta_temp is equal to zero. */ + /** - --> (e) BEGINNING OF ACTUAL SYSTEM OF EQUATIONS OF EVOLUTION */ /** - ---> photon temperature density */ @@ -6950,7 +8582,7 @@ int perturb_derivs(double tau, dy[pv->index_pt_theta_b] = - a_prime_over_a*theta_b + metric_euler - + k2*cb2*(delta_b+delta_temp) + + k2*delta_p_b_over_rho_b + R*pvecthermo[pth->index_th_dkappa]*(theta_g-theta_b); } @@ -6965,7 +8597,7 @@ int perturb_derivs(double tau, /* perturbed recombination has an impact **/ dy[pv->index_pt_theta_b] = (-a_prime_over_a*theta_b - +k2*(cb2*(delta_b+delta_temp)+R*(delta_g/4.-s2_squared*ppw->tca_shear_g)) + +k2*(delta_p_b_over_rho_b+R*(delta_g/4.-s2_squared*ppw->tca_shear_g)) +R*ppw->tca_slip)/(1.+R) +metric_euler; @@ -7058,7 +8690,7 @@ int perturb_derivs(double tau, /* perturbed recombination has an impact **/ dy[pv->index_pt_theta_g] = - -(dy[pv->index_pt_theta_b]+a_prime_over_a*theta_b-cb2*k2*(delta_b+delta_temp))/R + -(dy[pv->index_pt_theta_b]+a_prime_over_a*theta_b-k2*delta_p_b_over_rho_b)/R +k2*(0.25*delta_g-s2_squared*ppw->tca_shear_g)+(1.+R)/R*metric_euler; } } @@ -7080,7 +8712,36 @@ int perturb_derivs(double tau, if (ppt->gauge == synchronous) { dy[pv->index_pt_delta_cdm] = -metric_continuity; /* cdm density */ } + } + + /** - ---> idr */ + if (pba->has_idr == _TRUE_){ + if (ppw->approx[ppw->index_ap_rsa_idr] == (int)rsa_idr_off) { + dy[pv->index_pt_delta_idr] = -4./3.*(theta_idr + metric_continuity); + } + } + + /** - ---> idm_dr */ + if (pba->has_idm_dr == _TRUE_){ + + dy[pv->index_pt_delta_idm_dr] = -(y[pv->index_pt_theta_idm_dr]+metric_continuity); /* idm_dr density */ + + if (ppw->approx[ppw->index_ap_tca_idm_dr] == (int)tca_idm_dr_off) { + + dy[pv->index_pt_theta_idm_dr] = - a_prime_over_a*y[pv->index_pt_theta_idm_dr] + metric_euler; /* idm_dr velocity */ + dy[pv->index_pt_theta_idm_dr] -= (Sinv*dmu_idm_dr*(y[pv->index_pt_theta_idm_dr] - theta_idr) - k2*pvecthermo[pth->index_th_cidm_dr2]*y[pv->index_pt_delta_idm_dr]); + } + else{ + + tca_slip_idm_dr = (pth->nindex_idm_dr-2./(1.+Sinv))*a_prime_over_a*(y[pv->index_pt_theta_idm_dr]-theta_idr) + 1./(1.+Sinv)/dmu_idm_dr* + (-(pvecback[pba->index_bg_H_prime] * a + 2. * a_prime_over_a * a_prime_over_a) *y[pv->index_pt_theta_idm_dr] - a_prime_over_a * + (.5*k2*delta_idr + metric_euler) + k2*(pvecthermo[pth->index_th_cidm_dr2]*dy[pv->index_pt_delta_idm_dr] - 1./4.*dy[pv->index_pt_delta_idr])); + ppw->tca_shear_idm_dr = 0.5*8./15./dmu_idm_dr/ppt->alpha_idm_dr[0]*(y[pv->index_pt_theta_idm_dr]+metric_shear); + + dy[pv->index_pt_theta_idm_dr] = 1./(1.+Sinv)*(- a_prime_over_a*y[pv->index_pt_theta_idm_dr] + k2*pvecthermo[pth->index_th_cidm_dr2]* + y[pv->index_pt_delta_idm_dr] + k2*Sinv*(delta_idr/4. - ppw->tca_shear_idm_dr)) + metric_euler + Sinv/(1.+Sinv)*tca_slip_idm_dr; + } } /* perturbed recombination */ @@ -7088,11 +8749,13 @@ int perturb_derivs(double tau, if((ppt->has_perturbed_recombination == _TRUE_)&&(ppw->approx[ppw->index_ap_tca] == (int)tca_off)){ - // alpha * n_H is in inverse seconds, so we have to multiply it by Mpc_in_sec + /* alpha * n_H is in inverse seconds, so we have to multiply it by Mpc_in_sec */ dy[ppw->pv->index_pt_perturbed_recombination_delta_chi] = - alpha_rec* a * chi*n_H *(delta_alpha_rec + delta_chi + delta_b) * _Mpc_over_m_ / _c_ ; - // see the documentation for this formula - dy[ppw->pv->index_pt_perturbed_recombination_delta_temp] = 2./3. * dy[ppw->pv->index_pt_delta_b] - a * Compton_CR * pow(pba->T_cmb/a, 4) * chi / (1.+chi+fHe) * ( (1.-pba->T_cmb*pba->a_today/a/pvecthermo[pth->index_th_Tb])*(delta_g + delta_chi*(1.+fHe)/(1.+chi+fHe)) + pba->T_cmb*pba->a_today/a/pvecthermo[pth->index_th_Tb] *(delta_temp - 1./4. * delta_g) ); + /* see the documentation for this formula */ + dy[ppw->pv->index_pt_perturbed_recombination_delta_temp] = 2./3. * dy[ppw->pv->index_pt_delta_b] - a * Compton_CR + * pow(pba->T_cmb/a, 4) * chi / (1.+chi+fHe) * ( (1.-pba->T_cmb*pba->a_today/a/pvecthermo[pth->index_th_Tb])*(delta_g + delta_chi*(1.+fHe)/(1.+chi+fHe)) + + pba->T_cmb*pba->a_today/a/pvecthermo[pth->index_th_Tb] *(delta_temp - 1./4. * delta_g) ); } @@ -7153,27 +8816,34 @@ int perturb_derivs(double tau, if (pba->has_fld == _TRUE_) { - /** - ----> factors w, w_prime, adiabatic sound speed ca2 (all three background-related), - plus actual sound speed in the fluid rest frame cs2 */ + if (pba->use_ppf == _FALSE_){ - w = pba->w0_fld + pba->wa_fld * (1. - a / pba->a_today); - w_prime = - pba->wa_fld * a / pba->a_today * a_prime_over_a; - ca2 = w - w_prime / 3. / (1.+w) / a_prime_over_a; - cs2 = pba->cs2_fld; + /** - ----> factors w, w_prime, adiabatic sound speed ca2 (all three background-related), + plus actual sound speed in the fluid rest frame cs2 */ - /** - ----> fluid density */ + class_call(background_w_fld(pba,a,&w_fld,&dw_over_da_fld,&integral_fld), pba->error_message, ppt->error_message); + w_prime_fld = dw_over_da_fld * a_prime_over_a * a; - dy[pv->index_pt_delta_fld] = - -(1+w)*(y[pv->index_pt_theta_fld]+metric_continuity) - -3.*(cs2-w)*a_prime_over_a*y[pv->index_pt_delta_fld] - -9.*(1+w)*(cs2-ca2)*a_prime_over_a*a_prime_over_a*y[pv->index_pt_theta_fld]/k2; + ca2 = w_fld - w_prime_fld / 3. / (1.+w_fld) / a_prime_over_a; + cs2 = pba->cs2_fld; - /** - ----> fluid velocity */ + /** - ----> fluid density */ - dy[pv->index_pt_theta_fld] = /* fluid velocity */ - -(1.-3.*cs2)*a_prime_over_a*y[pv->index_pt_theta_fld] - +cs2*k2/(1.+w)*y[pv->index_pt_delta_fld] - +metric_euler; + dy[pv->index_pt_delta_fld] = + -(1+w_fld)*(y[pv->index_pt_theta_fld]+metric_continuity) + -3.*(cs2-w_fld)*a_prime_over_a*y[pv->index_pt_delta_fld] + -9.*(1+w_fld)*(cs2-ca2)*a_prime_over_a*a_prime_over_a*y[pv->index_pt_theta_fld]/k2; + + /** - ----> fluid velocity */ + + dy[pv->index_pt_theta_fld] = /* fluid velocity */ + -(1.-3.*cs2)*a_prime_over_a*y[pv->index_pt_theta_fld] + +cs2*k2/(1.+w_fld)*y[pv->index_pt_delta_fld] + +metric_euler; + } + else { + dy[pv->index_pt_Gamma_fld] = ppw->Gamma_prime_fld; /* Gamma variable of PPF formalism */ + } } @@ -7192,6 +8862,57 @@ int perturb_derivs(double tau, - (k2 + a2*pvecback[pba->index_bg_ddV_scf])*y[pv->index_pt_phi_scf]; //checked } + /** - ---> interacting dark radiation */ + if (pba->has_idr == _TRUE_){ + + if (ppw->approx[ppw->index_ap_rsa_idr] == (int)rsa_idr_off) { + + if ((pba->has_idm_dr == _FALSE_)||((pba->has_idm_dr == _TRUE_)&&(ppw->approx[ppw->index_ap_tca_idm_dr] == (int)tca_idm_dr_off))) { + + /** - ----> idr velocity */ + if(ppt->idr_nature == idr_free_streaming) + dy[pv->index_pt_theta_idr] = k2*(y[pv->index_pt_delta_idr]/4.-s2_squared*y[pv->index_pt_shear_idr]) + metric_euler; + else + dy[pv->index_pt_theta_idr] = k2/4. * y[pv->index_pt_delta_idr] + metric_euler; + + if (pba->has_idm_dr == _TRUE_) + dy[pv->index_pt_theta_idr] += dmu_idm_dr*(y[pv->index_pt_theta_idm_dr]-y[pv->index_pt_theta_idr]); + + if(ppt->idr_nature == idr_free_streaming){ + + /** - ----> exact idr shear */ + l = 2; + dy[pv->index_pt_shear_idr] = 0.5*(8./15.*(y[pv->index_pt_theta_idr]+metric_shear)-3./5.*k*s_l[3]/s_l[2]*y[pv->index_pt_shear_idr+1]); + if (pba->has_idm_dr == _TRUE_) + dy[pv->index_pt_shear_idr]-= (ppt->alpha_idm_dr[l-2]*dmu_idm_dr + ppt->beta_idr[l-2]*dmu_idr)*y[pv->index_pt_shear_idr]; + + /** - ----> exact idr l=3 */ + l = 3; + dy[pv->index_pt_l3_idr] = k/(2.*l+1.)*(l*2.*s_l[l]*s_l[2]*y[pv->index_pt_shear_idr]-(l+1.)*s_l[l+1]*y[pv->index_pt_l3_idr+1]); + if (pba->has_idm_dr == _TRUE_) + dy[pv->index_pt_l3_idr]-= (ppt->alpha_idm_dr[l-2]*dmu_idm_dr + ppt->beta_idr[l-2]*dmu_idr)*y[pv->index_pt_l3_idr]; + + /** - ----> exact idr l>3 */ + for (l = 4; l < pv->l_max_idr; l++) { + dy[pv->index_pt_delta_idr+l] = k/(2.*l+1)*(l*s_l[l]*y[pv->index_pt_delta_idr+l-1]-(l+1.)*s_l[l+1]*y[pv->index_pt_delta_idr+l+1]); + if (pba->has_idm_dr == _TRUE_) + dy[pv->index_pt_delta_idr+l]-= (ppt->alpha_idm_dr[l-2]*dmu_idm_dr + ppt->beta_idr[l-2]*dmu_idr)*y[pv->index_pt_delta_idr+l]; + } + + /** - ----> exact idr lmax_dr */ + l = pv->l_max_idr; + dy[pv->index_pt_delta_idr+l] = k*(s_l[l]*y[pv->index_pt_delta_idr+l-1]-(1.+l)*cotKgen*y[pv->index_pt_delta_idr+l]); + if (pba->has_idm_dr == _TRUE_) + dy[pv->index_pt_delta_idr+l]-= (ppt->alpha_idm_dr[l-2]*dmu_idm_dr + ppt->beta_idr[l-2]*dmu_idr)*y[pv->index_pt_delta_idr+l]; + } + } + else{ + dy[pv->index_pt_theta_idr] = 1./(1.+Sinv)*(- a_prime_over_a*y[pv->index_pt_theta_idm_dr] + k2*pvecthermo[pth->index_th_cidm_dr2]*y[pv->index_pt_delta_idm_dr] + + k2*Sinv*(1./4.*y[pv->index_pt_delta_idr] - ppw->tca_shear_idm_dr)) + metric_euler - 1./(1.+Sinv)*tca_slip_idm_dr; + + } + } + } /** - ---> ultra-relativistic neutrino/relics (ur) */ @@ -7735,6 +9456,15 @@ int perturb_derivs(double tau, return _SUCCESS_; } +/** + * Compute the baryon-photon slip (theta_g - theta_b)' and the photon + * shear in the tight-coupling approximation + * + * @param y Input: vector of perturbations + * @param parameters_and_workspace Input/Output: in input, fixed parameters (e.g. indices); in output, slip and shear + * @param error_message Output: error message + */ + int perturb_tca_slip_and_shear(double * y, void * parameters_and_workspace, ErrorMsg error_message @@ -7773,9 +9503,6 @@ int perturb_tca_slip_and_shear(double * y, double cb2; double metric_continuity=0.,metric_euler=0.,metric_shear=0.,metric_shear_prime=0.; - /* perturbed recombination */ - double delta_temp=0.; - /* for use with curvature */ double s2_squared; @@ -7814,11 +9541,9 @@ int perturb_tca_slip_and_shear(double * y, delta_b = y[pv->index_pt_delta_b]; theta_b = y[pv->index_pt_theta_b]; cb2 = pvecthermo[pth->index_th_cb2]; - - /* perturbed recombination */ - if ((ppt->has_perturbed_recombination == _TRUE_) && (ppw->approx[ppw->index_ap_tca] == (int)tca_off) ){ - delta_temp = y[pv->index_pt_perturbed_recombination_delta_temp]; - } + /* during TCA one can show that sound speed = adiabatic sound speed, + so no need to take into account corrections from perturbed + recombination here */ /** - --> (b) define short-cut notations used only in tight-coupling approximation */ tau_c = 1./pvecthermo[pth->index_th_dkappa]; /* inverse of opacity */ @@ -7836,19 +9561,19 @@ int perturb_tca_slip_and_shear(double * y, /** - --> (c) compute metric-related quantities (depending on gauge; additional gauges can be coded below) - - Each continuity equation contains a term in (theta+metric_continuity) with - metric_continuity = (h_prime/2) in synchronous gauge, (-3 phi_prime) in newtonian gauge + - Each continuity equation contains a term in (theta+metric_continuity) with + metric_continuity = (h_prime/2) in synchronous gauge, (-3 phi_prime) in newtonian gauge - - Each Euler equation contains a source term metric_euler with - metric_euler = 0 in synchronous gauge, (k2 psi) in newtonian gauge + - Each Euler equation contains a source term metric_euler with + metric_euler = 0 in synchronous gauge, (k2 psi) in newtonian gauge - - Each shear derivative equation contains a source term metric_shear equal to - metric_shear = (h_prime+6eta_prime)/2 in synchronous gauge, 0 in newtonian gauge + - Each shear derivative equation contains a source term metric_shear equal to + metric_shear = (h_prime+6eta_prime)/2 in synchronous gauge, 0 in newtonian gauge - - metric_shear_prime is the derivative of metric_shear + - metric_shear_prime is the derivative of metric_shear - - In the ufa_class approximation, the leading-order source term is (h_prime/2) in synchronous gauge, - (-3 (phi_prime+psi_prime)) in newtonian gauge: we approximate the later by (-6 phi_prime) */ + - In the ufa_class approximation, the leading-order source term is (h_prime/2) in synchronous gauge, + (-3 (phi_prime+psi_prime)) in newtonian gauge: we approximate the later by (-6 phi_prime) */ if (ppt->gauge == synchronous) { @@ -7916,8 +9641,7 @@ int perturb_tca_slip_and_shear(double * y, was already consistently included in CAMB) */ /** - ---> intermediate quantities for 2nd order tca: zero order for theta_b' = theta_g' */ - /** - ----> perturbed recombination has an impact **/ - theta_prime = (-a_prime_over_a*theta_b+k2*(cb2*(delta_b+delta_temp)+R/4.*delta_g))/(1.+R) + metric_euler; + theta_prime = (-a_prime_over_a*theta_b+k2*(cb2*delta_b+R/4.*delta_g))/(1.+R) + metric_euler; /** - ---> intermediate quantities for 2nd order tca: shear_g_prime at first order in tight-coupling */ shear_g_prime=16./45.*(tau_c*(theta_prime+metric_shear_prime)+dtau_c*(theta_g+metric_shear)); @@ -7957,9 +9681,8 @@ int perturb_tca_slip_and_shear(double * y, +( a_primeprime_over_a*a_prime_over_a*((2.-3.*cb2)*R-2.)*theta_b/(1.+R) +a_prime_over_a*k2*(1.-3.*cb2)*theta_b/3./(1.+R) - /* perturbed recombination has an impact (next two lines) */ - +a_primeprime_over_a*k2*cb2*(delta_b+delta_temp)/(1.+R) - +k2*k2*(3.*cb2-1.)*cb2*(delta_b+delta_temp)/3./(1.+R) + +a_primeprime_over_a*k2*cb2*delta_b/(1.+R) + +k2*k2*(3.*cb2-1.)*cb2*delta_b/3./(1.+R) +k2*k2*R*(3.*cb2-1.)*delta_g/12./(1.+R) +a_primeprime_over_a*k2*(2.+3.*R)*delta_g/4./(1.+R) +a_prime_over_a*a_prime_over_a*k2*((2.-3.*cb2)*R-1.)*delta_g/2./(1.+R) @@ -8033,6 +9756,23 @@ int perturb_tca_slip_and_shear(double * y, } +/** + * Compute the density delta and velocity theta of photons and + * ultra-relativistic neutrinos in the radiation streaming + * approximation + * + * @param ppr Input: pointer to precision structure + * @param pba Input: pointer to background structure + * @param pth Input: pointer to thermodynamics structure + * @param ppt Input: pointer to perturbation structure + * @param k Input: wavenumber + * @param y Input: vector of perturbations + * @param a_prime_over_a Input: a'/a + * @param pvecthermo Input: vector of thermodynamics quantites + * @param ppw Input/Output: in input, fixed parameters (e.g. indices); in output, delta and theta + * @param error_message Output: error message + */ + int perturb_rsa_delta_and_theta( struct precision * ppr, struct background * pba, @@ -8050,47 +9790,47 @@ int perturb_rsa_delta_and_theta( k2 = k*k; + class_test(ppw->approx[ppw->index_ap_rsa] == (int)rsa_off, + "this function should not have been called now, bug was introduced", + ppt->error_message, + ppt->error_message); + // formulas below TBC for curvaturema /* newtonian gauge */ if (ppt->gauge == newtonian) { - if (ppw->approx[ppw->index_ap_rsa] == (int)rsa_on) { - - if (ppr->radiation_streaming_approximation == rsa_null) { - ppw->rsa_delta_g = 0.; - ppw->rsa_theta_g = 0.; - } - else { + if (ppr->radiation_streaming_approximation == rsa_null) { + ppw->rsa_delta_g = 0.; + ppw->rsa_theta_g = 0.; + } + else { + ppw->rsa_delta_g = -4.*y[ppw->pv->index_pt_phi]; + ppw->rsa_theta_g = 6.*ppw->pvecmetric[ppw->index_mt_phi_prime]; + } - ppw->rsa_delta_g = -4.*y[ppw->pv->index_pt_phi]; + if (ppr->radiation_streaming_approximation == rsa_MD_with_reio) { - ppw->rsa_theta_g = 6.*ppw->pvecmetric[ppw->index_mt_phi_prime]; - } + ppw->rsa_delta_g += + -4./k2*ppw->pvecthermo[pth->index_th_dkappa]*y[ppw->pv->index_pt_theta_b]; - if (ppr->radiation_streaming_approximation == rsa_MD_with_reio) { + ppw->rsa_theta_g += + 3./k2*(ppw->pvecthermo[pth->index_th_ddkappa]*y[ppw->pv->index_pt_theta_b] + +ppw->pvecthermo[pth->index_th_dkappa]* + (-a_prime_over_a*y[ppw->pv->index_pt_theta_b] + +ppw->pvecthermo[pth->index_th_cb2]*k2*y[ppw->pv->index_pt_delta_b] + +k2*y[ppw->pv->index_pt_phi])); + } - ppw->rsa_delta_g += - -4./k2*ppw->pvecthermo[pth->index_th_dkappa]*y[ppw->pv->index_pt_theta_b]; + if (pba->has_ur == _TRUE_) { - ppw->rsa_theta_g += - 3./k2*(ppw->pvecthermo[pth->index_th_ddkappa]*y[ppw->pv->index_pt_theta_b] - +ppw->pvecthermo[pth->index_th_dkappa]* - (-a_prime_over_a*y[ppw->pv->index_pt_theta_b] - +ppw->pvecthermo[pth->index_th_cb2]*k2*y[ppw->pv->index_pt_delta_b] - +k2*y[ppw->pv->index_pt_phi])); + if (ppr->radiation_streaming_approximation == rsa_null) { + ppw->rsa_delta_ur = 0.; + ppw->rsa_theta_ur = 0.; } - - if (pba->has_ur == _TRUE_) { - - if (ppr->radiation_streaming_approximation == rsa_null) { - ppw->rsa_delta_ur = 0.; - ppw->rsa_theta_ur = 0.; - } - else { - ppw->rsa_delta_ur = -4.*y[ppw->pv->index_pt_phi]; - ppw->rsa_theta_ur = 6.*ppw->pvecmetric[ppw->index_mt_phi_prime]; - } + else { + ppw->rsa_delta_ur = -4.*y[ppw->pv->index_pt_phi]; + ppw->rsa_theta_ur = 6.*ppw->pvecmetric[ppw->index_mt_phi_prime]; } } } @@ -8098,47 +9838,117 @@ int perturb_rsa_delta_and_theta( /* synchronous gauge */ if (ppt->gauge == synchronous) { - if (ppw->approx[ppw->index_ap_rsa] == (int)rsa_on) { + if (ppr->radiation_streaming_approximation == rsa_null) { + ppw->rsa_delta_g = 0.; + ppw->rsa_theta_g = 0.; + } + else { + + ppw->rsa_delta_g = 4./k2*(a_prime_over_a*ppw->pvecmetric[ppw->index_mt_h_prime] + -k2*y[ppw->pv->index_pt_eta]); + ppw->rsa_theta_g = -0.5*ppw->pvecmetric[ppw->index_mt_h_prime]; + } + + if (ppr->radiation_streaming_approximation == rsa_MD_with_reio) { + + ppw->rsa_delta_g += + -4./k2*ppw->pvecthermo[pth->index_th_dkappa]*(y[ppw->pv->index_pt_theta_b]+0.5*ppw->pvecmetric[ppw->index_mt_h_prime]); + + ppw->rsa_theta_g += + 3./k2*(ppw->pvecthermo[pth->index_th_ddkappa]* + (y[ppw->pv->index_pt_theta_b] + +0.5*ppw->pvecmetric[ppw->index_mt_h_prime]) + +ppw->pvecthermo[pth->index_th_dkappa]* + (-a_prime_over_a*y[ppw->pv->index_pt_theta_b] + + ppw->pvecthermo[pth->index_th_cb2]*k2*y[ppw->pv->index_pt_delta_b] + -a_prime_over_a*ppw->pvecmetric[ppw->index_mt_h_prime] + +k2*y[ppw->pv->index_pt_eta])); + } + + if (pba->has_ur == _TRUE_) { if (ppr->radiation_streaming_approximation == rsa_null) { - ppw->rsa_delta_g = 0.; - ppw->rsa_theta_g = 0.; + ppw->rsa_delta_ur = 0.; + ppw->rsa_theta_ur = 0.; } else { - - ppw->rsa_delta_g = 4./k2*(a_prime_over_a*ppw->pvecmetric[ppw->index_mt_h_prime] - -k2*y[ppw->pv->index_pt_eta]); - ppw->rsa_theta_g = -0.5*ppw->pvecmetric[ppw->index_mt_h_prime]; + ppw->rsa_delta_ur = 4./k2*(a_prime_over_a*ppw->pvecmetric[ppw->index_mt_h_prime] + -k2*y[ppw->pv->index_pt_eta]); + ppw->rsa_theta_ur = -0.5*ppw->pvecmetric[ppw->index_mt_h_prime]; } + } + } - if (ppr->radiation_streaming_approximation == rsa_MD_with_reio) { + /* update total delta and theta given rsa approximation results */ - ppw->rsa_delta_g += - -4./k2*ppw->pvecthermo[pth->index_th_dkappa]*(y[ppw->pv->index_pt_theta_b]+0.5*ppw->pvecmetric[ppw->index_mt_h_prime]); + ppw->delta_rho += ppw->pvecback[pba->index_bg_rho_g]*ppw->rsa_delta_g; + ppw->delta_p += 1./3.*ppw->pvecback[pba->index_bg_rho_g]*ppw->rsa_delta_g; + ppw->rho_plus_p_theta += 4./3.*ppw->pvecback[pba->index_bg_rho_g]*ppw->rsa_theta_g; - ppw->rsa_theta_g += - 3./k2*(ppw->pvecthermo[pth->index_th_ddkappa]* - (y[ppw->pv->index_pt_theta_b] - +0.5*ppw->pvecmetric[ppw->index_mt_h_prime]) - +ppw->pvecthermo[pth->index_th_dkappa]* - (-a_prime_over_a*y[ppw->pv->index_pt_theta_b] - + ppw->pvecthermo[pth->index_th_cb2]*k2*y[ppw->pv->index_pt_delta_b] - -a_prime_over_a*ppw->pvecmetric[ppw->index_mt_h_prime] - +k2*y[ppw->pv->index_pt_eta])); - } + if (pba->has_ur == _TRUE_) { + ppw->delta_rho += ppw->pvecback[pba->index_bg_rho_ur]*ppw->rsa_delta_ur; + ppw->delta_p += 1./3.*ppw->pvecback[pba->index_bg_rho_ur]*ppw->rsa_delta_ur; + ppw->rho_plus_p_theta += 4./3.*ppw->pvecback[pba->index_bg_rho_ur]*ppw->rsa_theta_ur; + } - if (pba->has_ur == _TRUE_) { + return _SUCCESS_; + +} + +/** + * Compute the density delta and velocity theta of interacting dark + * radiation in its streaming approximation + * + * @param ppr Input: pointer to precision structure + * @param pba Input: pointer to background structure + * @param pth Input: pointer to thermodynamics structure + * @param ppt Input: pointer to perturbation structure + * @param k Input: wavenumber + * @param y Input: vector of perturbations + * @param a_prime_over_a Input: a'/a + * @param pvecthermo Input: vector of thermodynamics quantites + * @param ppw Input/Output: in input, fixed parameters (e.g. indices); in output, delta and theta + * @param error_message Output: error message + */ + +int perturb_rsa_idr_delta_and_theta( + struct precision * ppr, + struct background * pba, + struct thermo * pth, + struct perturbs * ppt, + double k, + double * y, + double a_prime_over_a, + double * pvecthermo, + struct perturb_workspace * ppw + ) { + /* - define local variables */ + + double k2; + + k2 = k*k; + + // formulas below TBC for curvaturema + + /* newtonian gauge */ + if (ppt->gauge == newtonian) { + + if (ppw->approx[ppw->index_ap_rsa_idr] == (int)rsa_idr_on) { + + ppw->rsa_delta_idr = -4.*y[ppw->pv->index_pt_phi]; + ppw->rsa_theta_idr = 6.*ppw->pvecmetric[ppw->index_mt_phi_prime]; + + } + } + + if (ppt->gauge == synchronous) { + + if (ppw->approx[ppw->index_ap_rsa_idr] == (int)rsa_idr_on) { + + ppw->rsa_delta_idr = 4./k2*(a_prime_over_a*ppw->pvecmetric[ppw->index_mt_h_prime] + -k2*y[ppw->pv->index_pt_eta]); + ppw->rsa_theta_idr = -0.5*ppw->pvecmetric[ppw->index_mt_h_prime]; - if (ppr->radiation_streaming_approximation == rsa_null) { - ppw->rsa_delta_ur = 0.; - ppw->rsa_theta_ur = 0.; - } - else { - ppw->rsa_delta_ur = 4./k2*(a_prime_over_a*ppw->pvecmetric[ppw->index_mt_h_prime] - -k2*y[ppw->pv->index_pt_eta]); - ppw->rsa_theta_ur = -0.5*ppw->pvecmetric[ppw->index_mt_h_prime]; - } - } } } diff --git a/class/source/primordial.c b/class/source/primordial.c old mode 100644 new mode 100755 index 41613131..83bcc860 --- a/class/source/primordial.c +++ b/class/source/primordial.c @@ -458,11 +458,11 @@ int primordial_init( /** - expression for alpha_s comes from: - `ns_2 = (lnpk_plus-lnpk_pivot)/(dlnk)+1` + `ns_2 = (lnpk_plus-lnpk_pivot)/(dlnk)+1` - `ns_1 = (lnpk_pivot-lnpk_minus)/(dlnk)+1` + `ns_1 = (lnpk_pivot-lnpk_minus)/(dlnk)+1` - `alpha_s = dns/dlnk = (ns_2-ns_1)/dlnk = (lnpk_plus-lnpk_pivot-lnpk_pivot+lnpk_minus)/(dlnk)/(dlnk)` + `alpha_s = dns/dlnk = (ns_2-ns_1)/dlnk = (lnpk_plus-lnpk_pivot-lnpk_pivot+lnpk_minus)/(dlnk)/(dlnk)` **/ @@ -485,8 +485,8 @@ int primordial_init( /** - expression for beta_s: - `ppm->beta_s = (alpha_plus-alpha_minus)/dlnk = (lnpk_plusplus-2.*lnpk_plus+lnpk_pivot - - (lnpk_pivot-2.*lnpk_minus+lnpk_minusminus)/pow(dlnk,3)` + `ppm->beta_s = (alpha_plus-alpha_minus)/dlnk = (lnpk_plusplus-2.*lnpk_plus+lnpk_pivot - + (lnpk_pivot-2.*lnpk_minus+lnpk_minusminus)/pow(dlnk,3)` **/ /* Simplification of the beta_s expression: */ @@ -1433,9 +1433,9 @@ int primordial_inflation_solve_inflation( else if (ppm->behavior == analytical) { class_call_except(primordial_inflation_analytic_spectra(ppt, - ppm, - ppr, - y_ini), + ppm, + ppr, + y_ini), ppm->error_message, ppm->error_message, free(y);free(y_ini);free(dy)); @@ -1649,7 +1649,7 @@ int primordial_inflation_spectra( tspent += tstop-tstart; #endif - } + } #ifdef _OPENMP if (ppm->primordial_verbose>1) @@ -1708,7 +1708,7 @@ int primordial_inflation_one_wavenumber( y[ppm->index_in_dphi] = y_ini[ppm->index_in_dphi]; /** - evolve the background until the relevant initial time for - integrating perturbations */ + integrating perturbations */ class_call(primordial_inflation_evolve_background(ppm, ppr, y, @@ -1722,7 +1722,7 @@ int primordial_inflation_one_wavenumber( ppm->error_message); /** - evolve the background/perturbation equations from this time and - until some time after Horizon crossing */ + until some time after Horizon crossing */ class_call(primordial_inflation_one_k(ppm, ppr, k, @@ -2700,7 +2700,7 @@ int primordial_inflation_find_phi_pivot( case N_star: - class_call(primordial_inflation_evolve_background(ppm, + class_call(primordial_inflation_evolve_background(ppm, ppr, y, dy, @@ -2893,7 +2893,7 @@ int primordial_inflation_find_phi_pivot( case N_star: - class_call(primordial_inflation_evolve_background(ppm, + class_call(primordial_inflation_evolve_background(ppm, ppr, y, dy, diff --git a/class/source/spectra.c b/class/source/spectra.c old mode 100644 new mode 100755 index fdc6344f..3cedcde6 --- a/class/source/spectra.c +++ b/class/source/spectra.c @@ -1,79 +1,19 @@ /** @file spectra.c Documented spectra module * - * Julien Lesgourgues, 25.08.2010 + * Julien Lesgourgues, 1.11.2019 * - * This module computes the anisotropy and Fourier power spectra - * \f$ C_l^{X}, P(k), ... \f$'s given the transfer and Bessel functions - * (for anisotropy spectra), the source functions (for Fourier spectra) - * and the primordial spectra. + * This module computes the harmonic power spectra \f$ C_l^{X} \f$'s + * given the transfer functions and the primordial spectra. * * The following functions can be called from other modules: * * -# spectra_init() at the beginning (but after transfer_init()) - * -# spectra_cl_at_l() at any time for computing \f$ C_l \f$ at any l - * -# spectra_spectrum_at_z() at any time for computing P(k) at any z - * -# spectra_spectrum_at_k_and z() at any time for computing P at any k and z + * -# spectra_cl_at_l() at any time for computing individual \f$ C_l \f$'s at any l * -# spectra_free() at the end */ #include "spectra.h" - - -int spectra_bandpower(struct spectra * psp, - int l1, - int l2, - double * TT_II, - double * TT_RI, - double * TT_RR - ) { - - int l; - int index_md; - double * cl_tot; - double ** cl_md; - double ** cl_md_ic; - - class_alloc(cl_tot,psp->ct_size*sizeof(double),psp->error_message); - class_alloc(cl_md,psp->md_size*sizeof(double*),psp->error_message); - class_alloc(cl_md_ic,psp->md_size*sizeof(double*),psp->error_message); - for (index_md=0;index_mdmd_size; index_md++) { - class_alloc(cl_md[index_md],psp->ct_size*sizeof(double),psp->error_message); - class_alloc(cl_md_ic[index_md],psp->ct_size*psp->ic_ic_size[index_md]*sizeof(double),psp->error_message); - } - - *TT_RR=0.; - *TT_RI=0.; - *TT_II=0.; - - for (l=l1; l<=l2; l++) { - - class_call(spectra_cl_at_l(psp, - (double)l, - cl_tot, - cl_md, - cl_md_ic), - psp->error_message, - psp->error_message); - - *TT_RR += (double)(2*l+1)*cl_md_ic[psp->index_md_scalars][index_symmetric_matrix(0,0,psp->ic_size[psp->index_md_scalars])*psp->ct_size+psp->index_ct_tt]; - *TT_RI += (double)(2*l+1)*cl_md_ic[psp->index_md_scalars][index_symmetric_matrix(0,1,psp->ic_size[psp->index_md_scalars])*psp->ct_size+psp->index_ct_tt]*2.; - *TT_II += (double)(2*l+1)*cl_md_ic[psp->index_md_scalars][index_symmetric_matrix(1,1,psp->ic_size[psp->index_md_scalars])*psp->ct_size+psp->index_ct_tt]; - - } - - for (index_md=0;index_mdmd_size; index_md++) { - free(cl_md[index_md]); - free(cl_md_ic[index_md]); - } - free(cl_tot); - free(cl_md); - free(cl_md_ic); - - return _SUCCESS_; - -} - /** * Anisotropy power spectra \f$ C_l\f$'s for all types, modes and initial conditions. * @@ -306,203 +246,116 @@ int spectra_cl_at_l( } /** - * Matter power spectrum for arbitrary redshift and for all initial conditions. - * - * This routine evaluates the matter power spectrum at a given value of z by - * interpolating in the pre-computed table (if several values of z have been stored) - * or by directly reading it (if it only contains values at z=0 and we want P(k,z=0)) - * - * - * Can be called in two modes: linear or logarithmic. - * - * - linear: returns P(k) (units: \f$ Mpc^3\f$) - * - * - logarithmic: returns \f$\ln{P(k)}\f$ - * - * One little subtlety: in case of several correlated initial conditions, - * the cross-correlation spectrum can be negative. Then, in logarithmic mode, - * the non-diagonal elements contain the cross-correlation angle \f$ P_{12}/\sqrt{P_{11} P_{22}}\f$ - * (from -1 to 1) instead of \f$\ln{P_{12}}\f$ - * - * This function can be - * called from whatever module at whatever time, provided that - * spectra_init() has been called before, and spectra_free() has not - * been called yet. + * This routine initializes the spectra structure (in particular, + * computes table of anisotropy and Fourier spectra \f$ C_l^{X}, P(k), ... \f$) * - * @param pba Input: pointer to background structure (used for converting z into tau) - * @param psp Input: pointer to spectra structure (containing pre-computed table) - * @param mode Input: linear or logarithmic - * @param z Input: redshift - * @param output_tot Output: total matter power spectrum P(k) in \f$ Mpc^3 \f$ (linear mode), or its logarithms (logarithmic mode) - * @param output_ic Output: for each pair of initial conditions, matter power spectra P(k) in \f$ Mpc^3 \f$ (linear mode), or their logarithms and cross-correlation angles (logarithmic mode) + * @param ppr Input: pointer to precision structure + * @param pba Input: pointer to background structure (will provide H, Omega_m at redshift of interest) + * @param ppt Input: pointer to perturbation structure + * @param ptr Input: pointer to transfer structure + * @param ppm Input: pointer to primordial structure + * @param pnl Input: pointer to nonlinear structure + * @param psp Output: pointer to initialized spectra structure * @return the error status */ -int spectra_pk_at_z( - struct background * pba, - struct spectra * psp, - enum linear_or_logarithmic mode, - double z, - double * output_tot, /* array with argument output_tot[index_k] (must be already allocated) */ - double * output_ic /* array with argument output_tot[index_k * psp->ic_ic_size[index_md] + index_ic1_ic2] (must be already allocated only if more than one initial condition) */ - ) { +int spectra_init( + struct precision * ppr, + struct background * pba, + struct perturbs * ppt, + struct primordial * ppm, + struct nonlinear * pnl, + struct transfers * ptr, + struct spectra * psp + ) { /** Summary: */ - /** - define local variables */ - - int index_md; - int last_index; - int index_k; - double tau,ln_tau; - int index_ic1,index_ic2,index_ic1_ic2; - - index_md = psp->index_md_scalars; + /** - check that we really want to compute at least one spectrum */ - /** - first step: convert z into \f$\ln{\tau}\f$ */ + if (ppt->has_cls == _FALSE_) { + psp->md_size = 0; + if (psp->spectra_verbose > 0) + printf("No spectra requested. Spectra module skipped.\n"); + return _SUCCESS_; + } + else { + if (psp->spectra_verbose > 0) + printf("Computing unlensed harmonic spectra\n"); + } - class_call(background_tau_of_z(pba,z,&tau), - pba->error_message, - psp->error_message); + /** - initialize indices and allocate some of the arrays in the + spectra structure */ - class_test(tau <= 0., + class_call(spectra_indices(pba,ppt,ptr,ppm,psp), psp->error_message, - "negative or null value of conformal time: cannot interpolate"); - - ln_tau = log(tau); - - /** - second step: for both modes (linear or logarithmic), store the spectrum in logarithmic format in the output array(s) */ + psp->error_message); - /** - --> (a) if only values at tau=tau_today are stored and we want \f$ P(k,z=0)\f$, no need to interpolate */ + /** - deal with \f$ C_l\f$'s, if any */ - if (psp->ln_tau_size == 1) { + if (ppt->has_cls == _TRUE_) { - class_test(z != 0., + class_call(spectra_cls(pba,ppt,ptr,ppm,psp), psp->error_message, - "asked z=%e but only P(k,z=0) has been tabulated",z); + psp->error_message); - for (index_k=0; index_kln_k_size; index_k++) - if (psp->ic_size[index_md] == 1) { - output_tot[index_k] = psp->ln_pk[index_k]; - } - else { - for (index_ic1_ic2 = 0; index_ic1_ic2 < psp->ic_ic_size[index_md]; index_ic1_ic2++) { - output_ic[index_k * psp->ic_ic_size[index_md] + index_ic1_ic2] = - psp->ln_pk[index_k * psp->ic_ic_size[index_md] + index_ic1_ic2]; - } - } } - - /** - --> (b) if several values of tau have been stored, use interpolation routine to get spectra at correct redshift */ - else { - - if (psp->ic_ic_size[index_md] == 1) { - - class_call(array_interpolate_spline(psp->ln_tau, - psp->ln_tau_size, - psp->ln_pk, - psp->ddln_pk, - psp->ln_k_size, - ln_tau, - &last_index, - output_tot, - psp->ln_k_size, - psp->error_message), - psp->error_message, - psp->error_message); - - } - else { - - class_call(array_interpolate_spline(psp->ln_tau, - psp->ln_tau_size, - psp->ln_pk, - psp->ddln_pk, - psp->ic_ic_size[index_md]*psp->ln_k_size, - ln_tau, - &last_index, - output_ic, - psp->ic_ic_size[index_md]*psp->ln_k_size, - psp->error_message), - psp->error_message, - psp->error_message); - } + psp->ct_size=0; } - /** - third step: if there are several initial conditions, compute the total P(k) and set back all uncorrelated coefficients to exactly zero. Check positivity of total P(k). */ - - if (psp->ic_size[index_md] > 1) { - for (index_k=0; index_kln_k_size; index_k++) { - output_tot[index_k] = 0.; - for (index_ic1=0; index_ic1 < psp->ic_size[index_md]; index_ic1++) { - for (index_ic2 = index_ic1; index_ic2 < psp->ic_size[index_md]; index_ic2++) { - index_ic1_ic2 = index_symmetric_matrix(index_ic1,index_ic2,psp->ic_size[index_md]); - if (index_ic1 == index_ic2) { - output_tot[index_k] += exp(output_ic[index_k * psp->ic_ic_size[index_md] + index_ic1_ic2]); - } - else { - if (psp->is_non_zero[index_md][index_ic1_ic2] == _TRUE_) { - output_tot[index_k] += - 2. * output_ic[index_k * psp->ic_ic_size[index_md] + index_ic1_ic2] * - sqrt(exp(output_ic[index_k * psp->ic_ic_size[index_md] + index_symmetric_matrix(index_ic1,index_ic1,psp->ic_size[index_md])]) * - exp(output_ic[index_k * psp->ic_ic_size[index_md] + index_symmetric_matrix(index_ic2,index_ic2,psp->ic_size[index_md])])); - } - else - output_ic[index_k * psp->ic_ic_size[index_md] + index_ic1_ic2] = 0.; - } - } - } - - class_test(output_tot[index_k] <= 0., - psp->error_message, - "for k=%e, z=%e, the matrix of initial condition amplitudes was not positive definite, hence P(k)_total=%e results negative", - exp(psp->ln_k[index_k]),z,output_tot[index_k]); + /** - a pointer to the nonlinear structure is stored in the spectra + structure. This odd, unusual and unelegant feature has been + introduced in v2.8 in order to keep in use some deprecated + functions spectra_pk_...() that are now pointing at new + function nonlinear_pk_...(). In the future, if the deprecated + functions are removed, it will be possible to remove also this + pointer. */ - } - } + psp->pnl = pnl; - /** - fourth step: depending on requested mode (linear or logarithmic), apply necessary transformation to the output arrays */ + return _SUCCESS_; +} - /** - --> (a) linear mode: if only one initial condition, convert output_pk to linear format; if several initial conditions, convert output_ic to linear format, output_tot is already in this format */ +/** + * This routine frees all the memory space allocated by spectra_init(). + * + * To be called at the end of each run, only when no further calls to + * spectra_cls_at_l(), spectra_pk_at_z(), spectra_pk_at_k_and_z() are needed. + * + * @param psp Input: pointer to spectra structure (which fields must be freed) + * @return the error status + */ - if (mode == linear) { +int spectra_free( + struct spectra * psp + ) { - if (psp->ic_size[index_md] == 1) { - for (index_k=0; index_kln_k_size; index_k++) { - output_tot[index_k] = exp(output_tot[index_k]); - } - } + int index_md; - else { - for (index_k=0; index_kln_k_size; index_k++) { - for (index_ic1=0; index_ic1 < psp->ic_size[index_md]; index_ic1++) { - index_ic1_ic2 = index_symmetric_matrix(index_ic1,index_ic1,psp->ic_size[index_md]); - output_ic[index_k * psp->ic_ic_size[index_md] + index_ic1_ic2] = exp(output_ic[index_k * psp->ic_ic_size[index_md] + index_ic1_ic2]); - } - for (index_ic1=0; index_ic1 < psp->ic_size[index_md]; index_ic1++) { - for (index_ic2 = index_ic1+1; index_ic2 < psp->ic_size[index_md]; index_ic2++) { + if (psp->md_size > 0) { + if (psp->ct_size > 0) { - output_ic[index_k * psp->ic_ic_size[index_md] + index_symmetric_matrix(index_ic1,index_ic2,psp->ic_size[index_md])] = - output_ic[index_k * psp->ic_ic_size[index_md] + index_symmetric_matrix(index_ic1,index_ic2,psp->ic_size[index_md])] - *sqrt(output_ic[index_k * psp->ic_ic_size[index_md] + index_symmetric_matrix(index_ic1,index_ic1,psp->ic_size[index_md])] * - output_ic[index_k * psp->ic_ic_size[index_md] + index_symmetric_matrix(index_ic2,index_ic2,psp->ic_size[index_md])]); - } - } + for (index_md = 0; index_md < psp->md_size; index_md++) { + free(psp->l_max_ct[index_md]); + free(psp->cl[index_md]); + free(psp->ddcl[index_md]); } + free(psp->l); + free(psp->l_size); + free(psp->l_max_ct); + free(psp->l_max); + free(psp->cl); + free(psp->ddcl); } - } - /** - --> (b) logarithmic mode: if only one initial condition, nothing to be done; if several initial conditions, convert output_tot to logarithmic format, output_ic is already in this format */ + for (index_md=0; index_md < psp->md_size; index_md++) + free(psp->is_non_zero[index_md]); - else { + free(psp->is_non_zero); + free(psp->ic_size); + free(psp->ic_ic_size); - if (psp->ic_size[index_md] > 1) { - for (index_k=0; index_kln_k_size; index_k++) { - /* we have already checked above that output_tot was positive */ - output_tot[index_k] = log(output_tot[index_k]); - } - } } return _SUCCESS_; @@ -510,2993 +363,1300 @@ int spectra_pk_at_z( } /** - * Matter power spectrum for arbitrary wavenumber, redshift and initial condition. - * - * This routine evaluates the matter power spectrum at a given value of k and z by - * interpolating in a table of all P(k)'s computed at this z by spectra_pk_at_z() (when kmin <= k <= kmax), - * or eventually by using directly the primordial spectrum (when 0 <= k < kmin): - * the latter case is an approximation, valid when kmin << comoving Hubble scale today. - * Returns zero when k=0. Returns an error when k<0 or k > kmax. - * - * This function can be - * called from whatever module at whatever time, provided that - * spectra_init() has been called before, and spectra_free() has not - * been called yet. + * This routine defines indices and allocates tables in the spectra structure * - * @param pba Input: pointer to background structure (used for converting z into tau) - * @param ppm Input: pointer to primordial structure (used only in the case 0 < k < kmin) - * @param psp Input: pointer to spectra structure (containing pre-computed table) - * @param k Input: wavenumber in 1/Mpc - * @param z Input: redshift - * @param pk_tot Output: total matter power spectrum P(k) in \f$ Mpc^3 \f$ - * @param pk_ic Output: for each pair of initial conditions, matter power spectra P(k) in \f$ Mpc^3\f$ + * @param pba Input: pointer to background structure + * @param ppt Input: pointer to perturbation structure + * @param ptr Input: pointer to transfers structure + * @param ppm Input: pointer to primordial structure + * @param psp Input/output: pointer to spectra structure * @return the error status */ -int spectra_pk_at_k_and_z( - struct background * pba, - struct primordial * ppm, - struct spectra * psp, - double k, - double z, - double * pk_tot, /* pointer to a single number (must be already allocated) */ - double * pk_ic /* array of argument pk_ic[index_ic1_ic2] (must be already allocated only if several initial conditions) */ - ) { - - /** Summary: */ - - /** - define local variables */ +int spectra_indices( + struct background * pba, + struct perturbs * ppt, + struct transfers * ptr, + struct primordial * ppm, + struct spectra * psp + ){ + int index_ct; int index_md; - int index_k; - int last_index; - int index_ic1,index_ic2,index_ic1_ic2; + int index_ic1_ic2; - double * spectrum_at_z = NULL; - double * spectrum_at_z_ic = NULL; - double * spline; - double * pk_primordial_k = NULL; - double kmin; - double * pk_primordial_kmin = NULL; + psp->md_size = ppt->md_size; + if (ppt->has_scalars == _TRUE_) + psp->index_md_scalars = ppt->index_md_scalars; - index_md = psp->index_md_scalars; + class_alloc(psp->ic_size, + sizeof(int)*psp->md_size, + psp->error_message); - /** - first step: check that k is in valid range [0:kmax] (the test for z will be done when calling spectra_pk_at_z()) */ + class_alloc(psp->ic_ic_size, + sizeof(int)*psp->md_size, + psp->error_message); - class_test((k < 0.) || (k > exp(psp->ln_k[psp->ln_k_size-1])), - psp->error_message, - "k=%e out of bounds [%e:%e]",k,0.,exp(psp->ln_k[psp->ln_k_size-1])); + class_alloc(psp->is_non_zero, + sizeof(short *)*psp->md_size, + psp->error_message); - /** - deal with case 0 <= k < kmin */ + for (index_md=0; index_md < psp->md_size; index_md++) { + psp->ic_size[index_md] = ppm->ic_size[index_md]; + psp->ic_ic_size[index_md] = ppm->ic_ic_size[index_md]; + class_alloc(psp->is_non_zero[index_md], + sizeof(short)*psp->ic_ic_size[index_md], + psp->error_message); + for (index_ic1_ic2=0; index_ic1_ic2 < psp->ic_ic_size[index_md]; index_ic1_ic2++) + psp->is_non_zero[index_md][index_ic1_ic2] = ppm->is_non_zero[index_md][index_ic1_ic2]; + } - if (k < exp(psp->ln_k[0])) { + if (ppt->has_cls == _TRUE_) { - /** - --> (a) subcase k=0: then P(k)=0 */ + /* types of C_l's relevant for both scalars and tensors: TT, EE, TE */ - if (k == 0.) { - if (psp->ic_size[index_md] == 1) { - *pk_tot=0.; - } - else { - for (index_ic1_ic2 = 0; index_ic1_ic2 < psp->ic_ic_size[index_md]; index_ic1_ic2++) { - pk_ic[index_ic1_ic2] = 0.; - } - } - } + index_ct=0; - /** - --> (b) subcase 0has_cl_cmb_temperature == _TRUE_) { + psp->has_tt = _TRUE_; + psp->index_ct_tt=index_ct; + index_ct++; + } + else { + psp->has_tt = _FALSE_; + } + if (ppt->has_cl_cmb_polarization == _TRUE_) { + psp->has_ee = _TRUE_; + psp->index_ct_ee=index_ct; + index_ct++; + } else { + psp->has_ee = _FALSE_; + } - /* compute P(k,z) which contains P(kmin,z)*/ - class_alloc(spectrum_at_z, - psp->ln_k_size*sizeof(double), - psp->error_message); - if (psp->ic_size[index_md] > 1) { - class_alloc(spectrum_at_z_ic, - sizeof(double)*psp->ic_ic_size[index_md]*psp->ln_k_size, - psp->error_message); - } - class_call(spectra_pk_at_z(pba, - psp, - linear, - z, - spectrum_at_z, - spectrum_at_z_ic), - psp->error_message, - psp->error_message); - - /* compute P_primordial(k) */ - class_alloc(pk_primordial_k, - sizeof(double)*psp->ic_ic_size[index_md], - psp->error_message); - class_call(primordial_spectrum_at_k(ppm, - index_md, - linear, - k, - pk_primordial_k), - ppm->error_message,psp->error_message); - - /* compute P_primordial(kmin) */ - kmin = exp(psp->ln_k[0]); - class_alloc(pk_primordial_kmin, - sizeof(double)*psp->ic_ic_size[index_md], - psp->error_message); - class_call(primordial_spectrum_at_k(ppm, - index_md, - linear, - kmin, - pk_primordial_kmin), - ppm->error_message, - psp->error_message); - - /* apply above analytic approximation for P(k) */ - index_k=0; - if (psp->ic_size[index_md] == 1) { - index_ic1_ic2 = 0; - *pk_tot = spectrum_at_z[index_k] - *k*pk_primordial_k[index_ic1_ic2] - /kmin/pk_primordial_kmin[index_ic1_ic2]; - } - else { - for (index_ic1_ic2 = 0; index_ic1_ic2 < psp->ic_ic_size[index_md]; index_ic1_ic2++) { - pk_ic[index_ic1_ic2] = spectrum_at_z_ic[index_ic1_ic2] - *k*pk_primordial_k[index_ic1_ic2] - /kmin/pk_primordial_kmin[index_ic1_ic2]; - } - } - - free(spectrum_at_z); - if (psp->ic_size[index_md] > 1) - free(spectrum_at_z_ic); - free(pk_primordial_k); - free(pk_primordial_kmin); + if ((ppt->has_cl_cmb_temperature == _TRUE_) && + (ppt->has_cl_cmb_polarization == _TRUE_)) { + psp->has_te = _TRUE_; + psp->index_ct_te=index_ct; + index_ct++; + } + else { + psp->has_te = _FALSE_; + } + if (ppt->has_cl_cmb_polarization == _TRUE_) { + psp->has_bb = _TRUE_; + psp->index_ct_bb=index_ct; + index_ct++; } - } - - /** - deal with case kmin <= k <= kmax */ - - else { - - /* compute P(k,z) (in logarithmic format for more accurate interpolation) */ - class_alloc(spectrum_at_z, - psp->ln_k_size*sizeof(double), - psp->error_message); - if (psp->ic_size[index_md] > 1) { - class_alloc(spectrum_at_z_ic, - sizeof(double)*psp->ic_ic_size[index_md]*psp->ln_k_size, - psp->error_message); + else { + psp->has_bb = _FALSE_; } - class_call(spectra_pk_at_z(pba, - psp, - logarithmic, - z, - spectrum_at_z, - spectrum_at_z_ic), - psp->error_message, - psp->error_message); - - /* get its second derivatives with spline, then interpolate, then convert to linear format */ - - class_alloc(spline, - sizeof(double)*psp->ic_ic_size[index_md]*psp->ln_k_size, - psp->error_message); - - if (psp->ic_size[index_md] == 1) { - - class_call(array_spline_table_lines(psp->ln_k, - psp->ln_k_size, - spectrum_at_z, - 1, - spline, - _SPLINE_NATURAL_, - psp->error_message), - psp->error_message, - psp->error_message); - - class_call(array_interpolate_spline(psp->ln_k, - psp->ln_k_size, - spectrum_at_z, - spline, - 1, - log(k), - &last_index, - pk_tot, - 1, - psp->error_message), - psp->error_message, - psp->error_message); - *pk_tot = exp(*pk_tot); + /* types of C_l's relevant only for scalars: phi-phi, T-phi, E-phi, d-d, T-d */ + if ((ppt->has_cl_cmb_lensing_potential == _TRUE_) && (ppt->has_scalars == _TRUE_)) { + psp->has_pp = _TRUE_; + psp->index_ct_pp=index_ct; + index_ct++; } else { - - class_call(array_spline_table_lines(psp->ln_k, - psp->ln_k_size, - spectrum_at_z_ic, - psp->ic_ic_size[index_md], - spline, - _SPLINE_NATURAL_, - psp->error_message), - psp->error_message, - psp->error_message); - - class_call(array_interpolate_spline(psp->ln_k, - psp->ln_k_size, - spectrum_at_z_ic, - spline, - psp->ic_ic_size[index_md], - log(k), - &last_index, - pk_ic, - psp->ic_ic_size[index_md], - psp->error_message), - psp->error_message, - psp->error_message); - - for (index_ic1 = 0; index_ic1 < psp->ic_size[index_md]; index_ic1++) { - index_ic1_ic2 = index_symmetric_matrix(index_ic1,index_ic1,psp->ic_size[index_md]); - pk_ic[index_ic1_ic2] = exp(pk_ic[index_ic1_ic2]); - } - for (index_ic1 = 0; index_ic1 < psp->ic_size[index_md]; index_ic1++) { - for (index_ic2 = index_ic1+1; index_ic2 < psp->ic_size[index_md]; index_ic2++) { - index_ic1_ic2 = index_symmetric_matrix(index_ic1,index_ic2,psp->ic_size[index_md]); - if (psp->is_non_zero[index_md][index_ic1_ic2] == _TRUE_) { - pk_ic[index_ic1_ic2] = pk_ic[index_ic1_ic2]* - sqrt(pk_ic[index_symmetric_matrix(index_ic1,index_ic1,psp->ic_size[index_md])]* - pk_ic[index_symmetric_matrix(index_ic2,index_ic2,psp->ic_size[index_md])]); - } - else { - pk_ic[index_ic1_ic2] = 0.; - } - } - } - free(spectrum_at_z_ic); + psp->has_pp = _FALSE_; } - free(spectrum_at_z); - free(spline); - } - - /** - last step: if more than one condition, sum over pk_ic to get pk_tot, and set back coefficients of non-correlated pairs to exactly zero. */ - - if (psp->ic_size[index_md] > 1) { - - *pk_tot = 0.; - - for (index_ic1 = 0; index_ic1 < psp->ic_size[index_md]; index_ic1++) { - for (index_ic2 = index_ic1; index_ic2 < psp->ic_size[index_md]; index_ic2++) { - index_ic1_ic2 = index_symmetric_matrix(index_ic1,index_ic2,psp->ic_size[index_md]); - - if (psp->is_non_zero[index_md][index_ic1_ic2] == _TRUE_) { - - if (index_ic1 == index_ic2) - *pk_tot += pk_ic[index_ic1_ic2]; - else - *pk_tot += 2.*pk_ic[index_ic1_ic2]; - } - else { - pk_ic[index_ic1_ic2] = 0.; - } - } + if ((ppt->has_cl_cmb_temperature == _TRUE_) && (ppt->has_cl_cmb_lensing_potential == _TRUE_) && (ppt->has_scalars == _TRUE_)) { + psp->has_tp = _TRUE_; + psp->index_ct_tp=index_ct; + index_ct++; + } + else { + psp->has_tp = _FALSE_; } - class_test(*pk_tot <= 0., - psp->error_message, - "for k=%e, the matrix of initial condition amplitudes was not positive definite, hence P(k)_total results negative",k); - - } + psp->ct_size = index_ct; - return _SUCCESS_; + if ((ppt->has_cl_cmb_polarization == _TRUE_) && (ppt->has_cl_cmb_lensing_potential == _TRUE_) && (ppt->has_scalars == _TRUE_)) { + psp->has_ep = _TRUE_; + psp->index_ct_ep=index_ct; + index_ct++; + } + else { + psp->has_ep = _FALSE_; + } -} + if ((ppt->has_scalars == _TRUE_) && + ((ppt->has_cl_number_count == _TRUE_) || (ppt->has_cl_lensing_potential == _TRUE_))) + psp->d_size=ppt->selection_num; + else + psp->d_size=0; -/** - * Non-linear total matter power spectrum for arbitrary redshift. - * - * This routine evaluates the non-linear matter power spectrum at a given value of z by - * interpolating in the pre-computed table (if several values of z have been stored) - * or by directly reading it (if it only contains values at z=0 and we want P(k,z=0)) - * - * - * Can be called in two modes: linear or logarithmic. - * - * - linear: returns P(k) (units: Mpc^3) - * - * - logarithmic: returns ln(P(k)) - * - * This function can be - * called from whatever module at whatever time, provided that - * spectra_init() has been called before, and spectra_free() has not - * been called yet. - * - * @param pba Input: pointer to background structure (used for converting z into tau) - * @param psp Input: pointer to spectra structure (containing pre-computed table) - * @param mode Input: linear or logarithmic - * @param z Input: redshift - * @param output_tot Output: total matter power spectrum P(k) in \f$ Mpc^3\f$ (linear mode), or its logarithms (logarithmic mode) - * @return the error status - */ + if ((ppt->has_cl_number_count == _TRUE_) && (ppt->has_scalars == _TRUE_)) { + psp->has_dd = _TRUE_; + psp->index_ct_dd=index_ct; + index_ct+=(psp->d_size*(psp->d_size+1)-(psp->d_size-psp->non_diag)*(psp->d_size-1-psp->non_diag))/2; + } + else { + psp->has_dd = _FALSE_; + } -int spectra_pk_nl_at_z( - struct background * pba, - struct spectra * psp, - enum linear_or_logarithmic mode, - double z, - double * output_tot /* array with argument output_tot[index_k] (must be already allocated) */ - ) { + /* the computation of C_l^Td would require a very good sampling of + transfer functions over a wide range, and a huge computation + time. In the current version, we prefer to switch it off, rather + than either slowing down the code considerably, or producing + very inaccurate spectra. - /** Summary: */ + if ((ppt->has_cl_cmb_temperature == _TRUE_) && (ppt->has_cl_number_count == _TRUE_) && (ppt->has_scalars == _TRUE_)) { + psp->has_td = _TRUE_; + psp->index_ct_td=index_ct; + index_ct+=psp->d_size; + } + else { + psp->has_td = _FALSE_; + } + */ + psp->has_td = _FALSE_; - /** - define local variables */ + if ((ppt->has_cl_cmb_lensing_potential == _TRUE_) && (ppt->has_cl_number_count == _TRUE_) && (ppt->has_scalars == _TRUE_)) { + psp->has_pd = _TRUE_; + psp->index_ct_pd=index_ct; + index_ct+=psp->d_size; + } + else { + psp->has_pd = _FALSE_; + } - int last_index; - int index_k; - double tau,ln_tau; + psp->has_td = _FALSE_; - /** - first step: convert z into ln(tau) */ + if ((ppt->has_cl_lensing_potential == _TRUE_) && (ppt->has_scalars == _TRUE_)) { + psp->has_ll = _TRUE_; + psp->index_ct_ll=index_ct; + index_ct+=(psp->d_size*(psp->d_size+1)-(psp->d_size-psp->non_diag)*(psp->d_size-1-psp->non_diag))/2; + } + else { + psp->has_ll = _FALSE_; + } - class_call(background_tau_of_z(pba,z,&tau), - pba->error_message, - psp->error_message); + /* the computation of C_l^Tl would require a very good sampling of + transfer functions over a wide range, and a huge computation + time. In the current version, we prefer to switch it off, rather + than either slowing down the code considerably, or producing + very inaccurate spectra. - class_test(tau <= 0., - psp->error_message, - "negative or null value of conformal time: cannot interpolate"); + if ((ppt->has_cl_cmb_temperature == _TRUE_) && (ppt->has_cl_lensing_potential == _TRUE_) && (ppt->has_scalars == _TRUE_)) { + psp->has_tl = _TRUE_; + psp->index_ct_tl=index_ct; + index_ct+=psp->d_size; + } + else { + psp->has_tl = _FALSE_; + } + */ + psp->has_tl = _FALSE_; - ln_tau = log(tau); + if ((ppt->has_cl_number_count == _TRUE_) && (ppt->has_cl_lensing_potential == _TRUE_) && (ppt->has_scalars == _TRUE_)) { + psp->has_dl = _TRUE_; + psp->index_ct_dl=index_ct; + index_ct += psp->d_size*psp->d_size - (psp->d_size-psp->non_diag)*(psp->d_size-1-psp->non_diag); + } + else { + psp->has_dl = _FALSE_; + } - /** - second step: for both modes (linear or logarithmic), store the spectrum in logarithmic format in the output array(s) */ + psp->ct_size = index_ct; - /** - --> (a) if only values at tau=tau_today are stored and we want P(k,z=0), no need to interpolate */ + /* infer from input quantities the l_max for each mode and type, + l_max_ct[index_md][index_type]. Maximize it over index_ct, and + then over index_md. */ - if (psp->ln_tau_size == 1) { + class_alloc(psp->l_max,sizeof(int*)*psp->md_size,psp->error_message); + class_alloc(psp->l_max_ct,sizeof(int*)*psp->md_size,psp->error_message); + for (index_md=0; index_mdmd_size; index_md++) { + class_calloc(psp->l_max_ct[index_md],psp->ct_size,sizeof(int),psp->error_message); + } - class_test(z != 0., - psp->error_message, - "asked z=%e but only P(k,z=0) has been tabulated",z); + if (ppt->has_scalars == _TRUE_) { - for (index_k=0; index_kln_k_size; index_k++) { - output_tot[index_k] = psp->ln_pk_nl[index_k]; - } - } + /* spectra computed up to l_scalar_max */ - /** - --> (b) if several values of tau have been stored, use interpolation routine to get spectra at correct redshift */ + if (psp->has_tt == _TRUE_) psp->l_max_ct[ppt->index_md_scalars][psp->index_ct_tt] = ppt->l_scalar_max; + if (psp->has_ee == _TRUE_) psp->l_max_ct[ppt->index_md_scalars][psp->index_ct_ee] = ppt->l_scalar_max; + if (psp->has_te == _TRUE_) psp->l_max_ct[ppt->index_md_scalars][psp->index_ct_te] = ppt->l_scalar_max; + if (psp->has_pp == _TRUE_) psp->l_max_ct[ppt->index_md_scalars][psp->index_ct_pp] = ppt->l_scalar_max; + if (psp->has_tp == _TRUE_) psp->l_max_ct[ppt->index_md_scalars][psp->index_ct_tp] = ppt->l_scalar_max; + if (psp->has_ep == _TRUE_) psp->l_max_ct[ppt->index_md_scalars][psp->index_ct_ep] = ppt->l_scalar_max; - else { + /* spectra computed up to l_lss_max */ - class_call(array_interpolate_spline(psp->ln_tau, - psp->ln_tau_size, - psp->ln_pk_nl, - psp->ddln_pk_nl, - psp->ln_k_size, - ln_tau, - &last_index, - output_tot, - psp->ln_k_size, - psp->error_message), - psp->error_message, - psp->error_message); - } + if (psp->has_dd == _TRUE_) + for (index_ct=psp->index_ct_dd; + index_ctindex_ct_dd+(psp->d_size*(psp->d_size+1)-(psp->d_size-psp->non_diag)*(psp->d_size-1-psp->non_diag))/2; + index_ct++) + psp->l_max_ct[ppt->index_md_scalars][index_ct] = ppt->l_lss_max; - /** - fourth step: eventually convert to linear format */ + if (psp->has_td == _TRUE_) + for (index_ct=psp->index_ct_td; + index_ctindex_ct_td+psp->d_size; + index_ct++) + psp->l_max_ct[ppt->index_md_scalars][index_ct] = MIN(ppt->l_scalar_max,ppt->l_lss_max); - if (mode == linear) { - for (index_k=0; index_kln_k_size; index_k++) { - output_tot[index_k] = exp(output_tot[index_k]); - } - } + if (psp->has_pd == _TRUE_) + for (index_ct=psp->index_ct_pd; + index_ctindex_ct_pd+psp->d_size; + index_ct++) + psp->l_max_ct[ppt->index_md_scalars][index_ct] = MIN(ppt->l_scalar_max,ppt->l_lss_max); - return _SUCCESS_; + if (psp->has_ll == _TRUE_) + for (index_ct=psp->index_ct_ll; + index_ctindex_ct_ll+(psp->d_size*(psp->d_size+1)-(psp->d_size-psp->non_diag)*(psp->d_size-1-psp->non_diag))/2; + index_ct++) + psp->l_max_ct[ppt->index_md_scalars][index_ct] = ppt->l_lss_max; -} + if (psp->has_tl == _TRUE_) + for (index_ct=psp->index_ct_tl; + index_ctindex_ct_tl+psp->d_size; + index_ct++) + psp->l_max_ct[ppt->index_md_scalars][index_ct] = MIN(ppt->l_scalar_max,ppt->l_lss_max); -/** - * Non-linear total matter power spectrum for arbitrary wavenumber and redshift. - * - * This routine evaluates the matter power spectrum at a given value of k and z by - * interpolating in a table of all P(k)'s computed at this z by spectra_pk_nl_at_z() (when kmin <= k <= kmax), - * or eventually by using directly the primordial spectrum (when 0 <= k < kmin): - * the latter case is an approximation, valid when kmin << comoving Hubble scale today. - * Returns zero when k=0. Returns an error when k<0 or k > kmax. - * - * This function can be - * called from whatever module at whatever time, provided that - * spectra_init() has been called before, and spectra_free() has not - * been called yet. - * - * @param pba Input: pointer to background structure (used for converting z into tau) - * @param ppm Input: pointer to primordial structure (used only in the case 0 < k < kmin) - * @param psp Input: pointer to spectra structure (containing pre-computed table) - * @param k Input: wavenumber in 1/Mpc - * @param z Input: redshift - * @param pk_tot Output: total matter power spectrum P(k) in \f$ Mpc^3\f$ - * @return the error status - */ - -int spectra_pk_nl_at_k_and_z( - struct background * pba, - struct primordial * ppm, - struct spectra * psp, - double k, - double z, - double * pk_tot /* pointer to a single number (must be already allocated) */ - ) { - - /** Summary: */ - - /** - define local variables */ - - int index_md; - int last_index; - - double * spectrum_at_z = NULL; - double * spline; - - index_md = psp->index_md_scalars; - - /** - check that k is in valid range [0:kmax] (the test for z will be done when calling spectra_pk_at_z()) */ - - class_test((k < exp(psp->ln_k[0])) || (k > exp(psp->ln_k[psp->ln_k_size-1])), - psp->error_message, - "k=%e out of bounds [%e:%e]",k,0.,exp(psp->ln_k[psp->ln_k_size-1])); - - /** - compute P(k,z) (in logarithmic format for more accurate interpolation) */ - class_alloc(spectrum_at_z, - psp->ln_k_size*sizeof(double), - psp->error_message); - - class_call(spectra_pk_nl_at_z(pba, - psp, - logarithmic, - z, - spectrum_at_z), - psp->error_message, - psp->error_message); - - /** - get its second derivatives with spline, then interpolate, then convert to linear format */ - - class_alloc(spline, - sizeof(double)*psp->ic_ic_size[index_md]*psp->ln_k_size, - psp->error_message); - - class_call(array_spline_table_lines(psp->ln_k, - psp->ln_k_size, - spectrum_at_z, - 1, - spline, - _SPLINE_NATURAL_, - psp->error_message), - psp->error_message, - psp->error_message); - - class_call(array_interpolate_spline(psp->ln_k, - psp->ln_k_size, - spectrum_at_z, - spline, - 1, - log(k), - &last_index, - pk_tot, - 1, - psp->error_message), - psp->error_message, - psp->error_message); - - *pk_tot = exp(*pk_tot); - - free(spectrum_at_z); - free(spline); - - return _SUCCESS_; - -} - - -/** - * Matter transfer functions \f$ T_i(k) \f$ for arbitrary redshift and for all - * initial conditions. - * - * This routine evaluates the matter transfer functions at a given value of z by - * interpolating in the pre-computed table (if several values of z have been stored) - * or by directly reading it (if it only contains values at z=0 and we want \f$ T_i(k,z=0)\f$) - * - * - * This function can be - * called from whatever module at whatever time, provided that - * spectra_init() has been called before, and spectra_free() has not - * been called yet. - * - * @param pba Input: pointer to background structure (used for converting z into tau) - * @param psp Input: pointer to spectra structure (containing pre-computed table) - * @param z Input: redshift - * @param output Output: matter transfer functions - * @return the error status - */ - -int spectra_tk_at_z( - struct background * pba, - struct spectra * psp, - double z, - double * output /* array with argument output[(index_k*psp->ic_size[index_md]+index_ic)*psp->tr_size+index_tr] (must be already allocated) */ - ) { - - /** Summary: */ - - /** - define local variables */ - - int index_md; - int last_index; - int index_k; - int index_tr; - double tau,ln_tau; - int index_ic; - - index_md = psp->index_md_scalars; - - /** - first step: convert z into ln(tau) */ - - class_call(background_tau_of_z(pba,z,&tau), - pba->error_message, - psp->error_message); - - class_test(tau <= 0., - psp->error_message, - "negative or null value of conformal time: cannot interpolate"); - - ln_tau = log(tau); - - /** - second step: store the matter transfer functions in the output array */ - - /** - --> (a) if only values at tau=tau_today are stored and we want \f$ T_i(k,z=0)\f$, no need to interpolate */ - - if (psp->ln_tau_size == 1) { - - class_test(z != 0., - psp->error_message, - "asked z=%e but only T_i(k,z=0) has been tabulated",z); - - for (index_k=0; index_kln_k_size; index_k++) - for (index_tr=0; index_trtr_size; index_tr++) - for (index_ic = 0; index_ic < psp->ic_size[index_md]; index_ic++) - output[(index_k*psp->ic_size[index_md]+index_ic)*psp->tr_size+index_tr] - = psp->matter_transfer[(index_k*psp->ic_size[index_md]+index_ic)*psp->tr_size+index_tr]; - - } - - /** - --> (b) if several values of tau have been stored, use interpolation routine to get spectra at correct redshift */ - - else { - - class_call(array_interpolate_spline(psp->ln_tau, - psp->ln_tau_size, - psp->matter_transfer, - psp->ddmatter_transfer, - psp->ic_size[index_md]*psp->tr_size*psp->ln_k_size, - ln_tau, - &last_index, - output, - psp->ic_size[index_md]*psp->tr_size*psp->ln_k_size, - psp->error_message), - psp->error_message, - psp->error_message); - - } - - return _SUCCESS_; - -} - -/** - * Matter transfer functions \f$ T_i(k)\f$ for arbitrary wavenumber, redshift - * and initial condition. - * - * This routine evaluates the matter transfer functions at a given - * value of k and z by interpolating in a table of all \f$ T_i(k,z)\f$'s - * computed at this z by spectra_tk_at_z() (when kmin <= k <= kmax). - * Returns an error when k kmax. - * - * This function can be called from whatever module at whatever time, - * provided that spectra_init() has been called before, and - * spectra_free() has not been called yet. - * - * @param pba Input: pointer to background structure (used for converting z into tau) - * @param psp Input: pointer to spectra structure (containing pre-computed table) - * @param k Input: wavenumber in 1/Mpc - * @param z Input: redshift - * @param output Output: matter transfer functions - * @return the error status - */ - -int spectra_tk_at_k_and_z( - struct background * pba, - struct spectra * psp, - double k, - double z, - double * output /* array with argument output[index_ic*psp->tr_size+index_tr] (must be already allocated) */ - ) { - - /** Summary: */ - - /** - define local variables */ - - int index_md; - int last_index; - double * tks_at_z; - double * ddtks_at_z; - - index_md = psp->index_md_scalars; - - /** - check that k is in valid range [0:kmax] (the test for z will be done when calling spectra_tk_at_z()) */ - - class_test((k < 0.) || (k > exp(psp->ln_k[psp->ln_k_size-1])), - psp->error_message, - "k=%e out of bounds [%e:%e]",k,0.,exp(psp->ln_k[psp->ln_k_size-1])); - - /** - compute T_i(k,z) */ - - class_alloc(tks_at_z, - psp->ln_k_size*psp->tr_size*psp->ic_size[index_md]*sizeof(double), - psp->error_message); - - class_call(spectra_tk_at_z(pba, - psp, - z, - tks_at_z), - psp->error_message, - psp->error_message); - - /** - get its second derivatives w.r.t. k with spline, then interpolate */ - - class_alloc(ddtks_at_z, - psp->ln_k_size*psp->tr_size*psp->ic_size[index_md]*sizeof(double), - psp->error_message); - - class_call(array_spline_table_lines(psp->ln_k, - psp->ln_k_size, - tks_at_z, - psp->tr_size*psp->ic_size[index_md], - ddtks_at_z, - _SPLINE_NATURAL_, - psp->error_message), - psp->error_message, - psp->error_message); - - class_call(array_interpolate_spline(psp->ln_k, - psp->ln_k_size, - tks_at_z, - ddtks_at_z, - psp->tr_size*psp->ic_size[index_md], - log(k), - &last_index, - output, - psp->tr_size*psp->ic_size[index_md], - psp->error_message), - psp->error_message, - psp->error_message); - - free(tks_at_z); - free(ddtks_at_z); - - return _SUCCESS_; - -} - -/** - * This routine initializes the spectra structure (in particular, - * computes table of anisotropy and Fourier spectra \f$ C_l^{X}, P(k), ... \f$) - * - * @param ppr Input: pointer to precision structure - * @param pba Input: pointer to background structure (will provide H, Omega_m at redshift of interest) - * @param ppt Input: pointer to perturbation structure - * @param ptr Input: pointer to transfer structure - * @param ppm Input: pointer to primordial structure - * @param pnl Input: pointer to nonlinear structure - * @param psp Output: pointer to initialized spectra structure - * @return the error status - */ - -int spectra_init( - struct precision * ppr, - struct background * pba, - struct perturbs * ppt, - struct primordial * ppm, - struct nonlinear *pnl, - struct transfers * ptr, - struct spectra * psp - ) { - - /** Summary: */ - - double TT_II,TT_RI,TT_RR; - int l1,l2; - - /** - check that we really want to compute at least one spectrum */ - - if ((ppt->has_cls == _FALSE_) && - (ppt->has_pk_matter == _FALSE_) && - (ppt->has_density_transfers == _FALSE_) && - (ppt->has_velocity_transfers == _FALSE_)) { - psp->md_size = 0; - if (psp->spectra_verbose > 0) - printf("No spectra requested. Spectra module skipped.\n"); - return _SUCCESS_; - } - else { - if (psp->spectra_verbose > 0) - printf("Computing unlensed linear spectra\n"); - } - - /** - initialize indices and allocate some of the arrays in the - spectra structure */ - - class_call(spectra_indices(pba,ppt,ptr,ppm,psp), - psp->error_message, - psp->error_message); - - /** - deal with \f$ C_l\f$'s, if any */ - - if (ppt->has_cls == _TRUE_) { - - class_call(spectra_cls(pba,ppt,ptr,ppm,psp), - psp->error_message, - psp->error_message); - - } - else { - psp->ct_size=0; - } - - /** - deal with \f$ P(k,\tau)\f$ and \f$ T_i(k,\tau)\f$ */ - - if ((ppt->has_pk_matter == _TRUE_) || (ppt->has_density_transfers == _TRUE_) || (ppt->has_velocity_transfers == _TRUE_)) { - - class_call(spectra_k_and_tau(pba,ppt,psp), - psp->error_message, - psp->error_message); - - if (ppt->has_pk_matter == _TRUE_) { - - class_call(spectra_pk(pba,ppt,ppm,pnl,psp), - psp->error_message, - psp->error_message); - - } - else { - psp->ln_pk=NULL; - } - - if ((ppt->has_density_transfers == _TRUE_) || (ppt->has_velocity_transfers == _TRUE_)) { - - class_call(spectra_matter_transfers(pba,ppt,psp), - psp->error_message, - psp->error_message); - } - else { - psp->matter_transfer=NULL; - } - - } - else { - psp->ln_k_size=0; - } - - /* if there is one isocurvature mode, compute and store in the psp - structure the isocurvature contribution to some bandpowers in - different ranges of l, and the contribution to the primordial - spectrum at different wavenumbers (used in the Planck - analysis) */ - - if ((ppt->has_scalars == _TRUE_) && (ppt->has_cls == _TRUE_) && (ppt->ic_size[ppt->index_md_scalars] == 2)) { - - l1=2; - l2=20; - - class_call(spectra_bandpower(psp,l1,l2,&TT_II,&TT_RI,&TT_RR), - psp->error_message, - psp->error_message); - - class_test(TT_II+TT_RI+TT_RR==0., - psp->error_message, - "should never happen"); - - psp->alpha_II_2_20=TT_II/(TT_II+TT_RI+TT_RR); - psp->alpha_RI_2_20=TT_RI/(TT_II+TT_RI+TT_RR); - psp->alpha_RR_2_20=TT_RR/(TT_II+TT_RI+TT_RR); - - l1=21; - l2=200; - - class_call(spectra_bandpower(psp,l1,l2,&TT_II,&TT_RI,&TT_RR), - psp->error_message, - psp->error_message); - - class_test(TT_II+TT_RI+TT_RR==0., - psp->error_message, - "should never happen"); - - psp->alpha_II_21_200=TT_II/(TT_II+TT_RI+TT_RR); - psp->alpha_RI_21_200=TT_RI/(TT_II+TT_RI+TT_RR); - psp->alpha_RR_21_200=TT_RR/(TT_II+TT_RI+TT_RR); - - l1=201; - l2=2500; - - class_call(spectra_bandpower(psp,l1,l2,&TT_II,&TT_RI,&TT_RR), - psp->error_message, - psp->error_message); - - class_test(TT_II+TT_RI+TT_RR==0., - psp->error_message, - "should never happen"); - - psp->alpha_II_201_2500=TT_II/(TT_II+TT_RI+TT_RR); - psp->alpha_RI_201_2500=TT_RI/(TT_II+TT_RI+TT_RR); - psp->alpha_RR_201_2500=TT_RR/(TT_II+TT_RI+TT_RR); - - l1=2; - l2=2500; - - class_call(spectra_bandpower(psp,l1,l2,&TT_II,&TT_RI,&TT_RR), - psp->error_message, - psp->error_message); - - class_test(TT_II+TT_RI+TT_RR==0., - psp->error_message, - "should never happen"); - - psp->alpha_II_2_2500=TT_II/(TT_II+TT_RI+TT_RR); - psp->alpha_RI_2_2500=TT_RI/(TT_II+TT_RI+TT_RR); - psp->alpha_RR_2_2500=TT_RR/(TT_II+TT_RI+TT_RR); - - if (ppt->has_cdi==_TRUE_) { - - psp->alpha_kp=ppm->f_cdi*ppm->f_cdi - /(1.+ppm->f_cdi*ppm->f_cdi); - - psp->alpha_k1=ppm->f_cdi*ppm->f_cdi*exp((ppm->n_cdi-ppm->n_s)*log(0.002/ppm->k_pivot)) - /(1.+ppm->f_cdi*ppm->f_cdi*exp((ppm->n_cdi-ppm->n_s)*log(0.002/ppm->k_pivot))); - - psp->alpha_k2=ppm->f_cdi*ppm->f_cdi*exp((ppm->n_cdi-ppm->n_s)*log(0.1/ppm->k_pivot)) - /(1.+ppm->f_cdi*ppm->f_cdi*exp((ppm->n_cdi-ppm->n_s)*log(0.1/ppm->k_pivot))); - } - - if (ppt->has_nid==_TRUE_) { - - psp->alpha_kp=ppm->f_nid*ppm->f_nid - /(1.+ppm->f_nid*ppm->f_nid); - - psp->alpha_k1=ppm->f_nid*ppm->f_nid*exp((ppm->n_nid-ppm->n_s)*log(0.002/ppm->k_pivot)) - /(1.+ppm->f_nid*ppm->f_nid*exp((ppm->n_nid-ppm->n_s)*log(0.002/ppm->k_pivot))); - - psp->alpha_k2=ppm->f_nid*ppm->f_nid*exp((ppm->n_nid-ppm->n_s)*log(0.1/ppm->k_pivot)) - /(1.+ppm->f_nid*ppm->f_nid*exp((ppm->n_nid-ppm->n_s)*log(0.1/ppm->k_pivot))); - } - - if (ppt->has_niv==_TRUE_) { - - psp->alpha_kp=ppm->f_niv*ppm->f_niv - /(1.+ppm->f_niv*ppm->f_niv); - - psp->alpha_k1=ppm->f_niv*ppm->f_niv*exp((ppm->n_niv-ppm->n_s)*log(0.002/ppm->k_pivot)) - /(1.+ppm->f_niv*ppm->f_niv*exp((ppm->n_niv-ppm->n_s)*log(0.002/ppm->k_pivot))); - - psp->alpha_k2=ppm->f_niv*ppm->f_niv*exp((ppm->n_niv-ppm->n_s)*log(0.1/ppm->k_pivot)) - /(1.+ppm->f_niv*ppm->f_niv*exp((ppm->n_niv-ppm->n_s)*log(0.1/ppm->k_pivot))); - } - } - - return _SUCCESS_; -} - -/** - * This routine frees all the memory space allocated by spectra_init(). - * - * To be called at the end of each run, only when no further calls to - * spectra_cls_at_l(), spectra_pk_at_z(), spectra_pk_at_k_and_z() are needed. - * - * @param psp Input: pointer to spectra structure (which fields must be freed) - * @return the error status - */ - -int spectra_free( - struct spectra * psp - ) { - - int index_md; - - if (psp->md_size > 0) { - - if (psp->ct_size > 0) { - - for (index_md = 0; index_md < psp->md_size; index_md++) { - free(psp->l_max_ct[index_md]); - free(psp->cl[index_md]); - free(psp->ddcl[index_md]); - } - free(psp->l); - free(psp->l_size); - free(psp->l_max_ct); - free(psp->l_max); - free(psp->cl); - free(psp->ddcl); - } - - if (psp->ln_k_size > 0) { - - free(psp->ln_tau); - free(psp->ln_k); - - if (psp->ln_pk != NULL) { - - free(psp->ln_pk); - - if (psp->ln_tau_size > 1) { - free(psp->ddln_pk); - } - - if (psp->ln_pk_nl != NULL) { - - free(psp->ln_pk_nl); - - if (psp->ln_tau_size > 1) { - free(psp->ddln_pk_nl); - } - } - } - - if (psp->matter_transfer != NULL) { - - free(psp->matter_transfer); - if (psp->ln_tau_size > 1) { - free(psp->ddmatter_transfer); - } - } - } - } - - for (index_md=0; index_md < psp->md_size; index_md++) - free(psp->is_non_zero[index_md]); - free(psp->is_non_zero); - free(psp->ic_size); - free(psp->ic_ic_size); - - return _SUCCESS_; - -} - -/** - * This routine defines indices and allocates tables in the spectra structure - * - * @param pba Input: pointer to background structure - * @param ppt Input: pointer to perturbation structure - * @param ptr Input: pointer to transfers structure - * @param ppm Input: pointer to primordial structure - * @param psp Input/output: pointer to spectra structure - * @return the error status - */ - -int spectra_indices( - struct background * pba, - struct perturbs * ppt, - struct transfers * ptr, - struct primordial * ppm, - struct spectra * psp - ){ - - int index_ct; - int index_md; - int index_ic1_ic2; - int index_tr; - - psp->md_size = ppt->md_size; - if (ppt->has_scalars == _TRUE_) - psp->index_md_scalars = ppt->index_md_scalars; - - class_alloc(psp->ic_size, - sizeof(int)*psp->md_size, - psp->error_message); - - class_alloc(psp->ic_ic_size, - sizeof(int)*psp->md_size, - psp->error_message); - - class_alloc(psp->is_non_zero, - sizeof(short *)*psp->md_size, - psp->error_message); - - for (index_md=0; index_md < psp->md_size; index_md++) { - psp->ic_size[index_md] = ppm->ic_size[index_md]; - psp->ic_ic_size[index_md] = ppm->ic_ic_size[index_md]; - class_alloc(psp->is_non_zero[index_md], - sizeof(short)*psp->ic_ic_size[index_md], - psp->error_message); - for (index_ic1_ic2=0; index_ic1_ic2 < psp->ic_ic_size[index_md]; index_ic1_ic2++) - psp->is_non_zero[index_md][index_ic1_ic2] = ppm->is_non_zero[index_md][index_ic1_ic2]; - } - - if (ppt->has_cls == _TRUE_) { - - /* types of C_l's relevant for both scalars and tensors: TT, EE, TE */ - - index_ct=0; - - if (ppt->has_cl_cmb_temperature == _TRUE_) { - psp->has_tt = _TRUE_; - psp->index_ct_tt=index_ct; - index_ct++; - } - else { - psp->has_tt = _FALSE_; - } - - if (ppt->has_cl_cmb_polarization == _TRUE_) { - psp->has_ee = _TRUE_; - psp->index_ct_ee=index_ct; - index_ct++; - } - else { - psp->has_ee = _FALSE_; - } - - if ((ppt->has_cl_cmb_temperature == _TRUE_) && - (ppt->has_cl_cmb_polarization == _TRUE_)) { - psp->has_te = _TRUE_; - psp->index_ct_te=index_ct; - index_ct++; - } - else { - psp->has_te = _FALSE_; - } - - if (ppt->has_cl_cmb_polarization == _TRUE_) { - psp->has_bb = _TRUE_; - psp->index_ct_bb=index_ct; - index_ct++; - } - else { - psp->has_bb = _FALSE_; - } - - /* types of C_l's relevant only for scalars: phi-phi, T-phi, E-phi, d-d, T-d */ - - if ((ppt->has_cl_cmb_lensing_potential == _TRUE_) && (ppt->has_scalars == _TRUE_)) { - psp->has_pp = _TRUE_; - psp->index_ct_pp=index_ct; - index_ct++; - } - else { - psp->has_pp = _FALSE_; - } - - if ((ppt->has_cl_cmb_temperature == _TRUE_) && (ppt->has_cl_cmb_lensing_potential == _TRUE_) && (ppt->has_scalars == _TRUE_)) { - psp->has_tp = _TRUE_; - psp->index_ct_tp=index_ct; - index_ct++; - } - else { - psp->has_tp = _FALSE_; - } - - psp->ct_size = index_ct; - - if ((ppt->has_cl_cmb_polarization == _TRUE_) && (ppt->has_cl_cmb_lensing_potential == _TRUE_) && (ppt->has_scalars == _TRUE_)) { - psp->has_ep = _TRUE_; - psp->index_ct_ep=index_ct; - index_ct++; - } - else { - psp->has_ep = _FALSE_; - } - - if ((ppt->has_scalars == _TRUE_) && - ((ppt->has_cl_number_count == _TRUE_) || (ppt->has_cl_lensing_potential == _TRUE_))) - psp->d_size=ppt->selection_num; - else - psp->d_size=0; - - if ((ppt->has_cl_number_count == _TRUE_) && (ppt->has_scalars == _TRUE_)) { - psp->has_dd = _TRUE_; - psp->index_ct_dd=index_ct; - index_ct+=(psp->d_size*(psp->d_size+1)-(psp->d_size-psp->non_diag)*(psp->d_size-1-psp->non_diag))/2; - } - else { - psp->has_dd = _FALSE_; - } - - /* the computation of C_l^Td would require a very good sampling of - transfer functions over a wide range, and a huge computation - time. In the current version, we prefer to switch it off, rather - than either slowing down the code considerably, or producing - very inaccurate spectra. - - if ((ppt->has_cl_cmb_temperature == _TRUE_) && (ppt->has_cl_number_count == _TRUE_) && (ppt->has_scalars == _TRUE_)) { - psp->has_td = _TRUE_; - psp->index_ct_td=index_ct; - index_ct+=psp->d_size; - } - else { - psp->has_td = _FALSE_; - } - */ - psp->has_td = _FALSE_; - - if ((ppt->has_cl_cmb_lensing_potential == _TRUE_) && (ppt->has_cl_number_count == _TRUE_) && (ppt->has_scalars == _TRUE_)) { - psp->has_pd = _TRUE_; - psp->index_ct_pd=index_ct; - index_ct+=psp->d_size; - } - else { - psp->has_pd = _FALSE_; - } - - psp->has_td = _FALSE_; - - if ((ppt->has_cl_lensing_potential == _TRUE_) && (ppt->has_scalars == _TRUE_)) { - psp->has_ll = _TRUE_; - psp->index_ct_ll=index_ct; - index_ct+=(psp->d_size*(psp->d_size+1)-(psp->d_size-psp->non_diag)*(psp->d_size-1-psp->non_diag))/2; - } - else { - psp->has_ll = _FALSE_; - } - - /* the computation of C_l^Tl would require a very good sampling of - transfer functions over a wide range, and a huge computation - time. In the current version, we prefer to switch it off, rather - than either slowing down the code considerably, or producing - very inaccurate spectra. - - if ((ppt->has_cl_cmb_temperature == _TRUE_) && (ppt->has_cl_lensing_potential == _TRUE_) && (ppt->has_scalars == _TRUE_)) { - psp->has_tl = _TRUE_; - psp->index_ct_tl=index_ct; - index_ct+=psp->d_size; - } - else { - psp->has_tl = _FALSE_; - } - */ - psp->has_tl = _FALSE_; - - if ((ppt->has_cl_number_count == _TRUE_) && (ppt->has_cl_lensing_potential == _TRUE_) && (ppt->has_scalars == _TRUE_)) { - psp->has_dl = _TRUE_; - psp->index_ct_dl=index_ct; - index_ct += psp->d_size*psp->d_size - (psp->d_size-psp->non_diag)*(psp->d_size-1-psp->non_diag); - } - else { - psp->has_dl = _FALSE_; - } - - psp->ct_size = index_ct; - - /* infer from input quantities the l_max for each mode and type, - l_max_ct[index_md][index_type]. Maximize it over index_ct, and - then over index_md. */ - - class_alloc(psp->l_max,sizeof(int*)*psp->md_size,psp->error_message); - class_alloc(psp->l_max_ct,sizeof(int*)*psp->md_size,psp->error_message); - for (index_md=0; index_mdmd_size; index_md++) { - class_calloc(psp->l_max_ct[index_md],psp->ct_size,sizeof(int),psp->error_message); - } - - if (ppt->has_scalars == _TRUE_) { - - /* spectra computed up to l_scalar_max */ - - if (psp->has_tt == _TRUE_) psp->l_max_ct[ppt->index_md_scalars][psp->index_ct_tt] = ppt->l_scalar_max; - if (psp->has_ee == _TRUE_) psp->l_max_ct[ppt->index_md_scalars][psp->index_ct_ee] = ppt->l_scalar_max; - if (psp->has_te == _TRUE_) psp->l_max_ct[ppt->index_md_scalars][psp->index_ct_te] = ppt->l_scalar_max; - if (psp->has_pp == _TRUE_) psp->l_max_ct[ppt->index_md_scalars][psp->index_ct_pp] = ppt->l_scalar_max; - if (psp->has_tp == _TRUE_) psp->l_max_ct[ppt->index_md_scalars][psp->index_ct_tp] = ppt->l_scalar_max; - if (psp->has_ep == _TRUE_) psp->l_max_ct[ppt->index_md_scalars][psp->index_ct_ep] = ppt->l_scalar_max; - - /* spectra computed up to l_lss_max */ - - if (psp->has_dd == _TRUE_) - for (index_ct=psp->index_ct_dd; - index_ctindex_ct_dd+(psp->d_size*(psp->d_size+1)-(psp->d_size-psp->non_diag)*(psp->d_size-1-psp->non_diag))/2; - index_ct++) - psp->l_max_ct[ppt->index_md_scalars][index_ct] = ppt->l_lss_max; - - if (psp->has_td == _TRUE_) - for (index_ct=psp->index_ct_td; - index_ctindex_ct_td+psp->d_size; - index_ct++) - psp->l_max_ct[ppt->index_md_scalars][index_ct] = MIN(ppt->l_scalar_max,ppt->l_lss_max); - - if (psp->has_pd == _TRUE_) - for (index_ct=psp->index_ct_pd; - index_ctindex_ct_pd+psp->d_size; - index_ct++) - psp->l_max_ct[ppt->index_md_scalars][index_ct] = MIN(ppt->l_scalar_max,ppt->l_lss_max); - - if (psp->has_ll == _TRUE_) - for (index_ct=psp->index_ct_ll; - index_ctindex_ct_ll+(psp->d_size*(psp->d_size+1)-(psp->d_size-psp->non_diag)*(psp->d_size-1-psp->non_diag))/2; - index_ct++) - psp->l_max_ct[ppt->index_md_scalars][index_ct] = ppt->l_lss_max; - - if (psp->has_tl == _TRUE_) - for (index_ct=psp->index_ct_tl; - index_ctindex_ct_tl+psp->d_size; - index_ct++) - psp->l_max_ct[ppt->index_md_scalars][index_ct] = MIN(ppt->l_scalar_max,ppt->l_lss_max); - - if (psp->has_dl == _TRUE_) - for (index_ct=psp->index_ct_dl; - index_ct < psp->index_ct_dl+(psp->d_size*psp->d_size - (psp->d_size-psp->non_diag)*(psp->d_size-1-psp->non_diag)); - index_ct++) - psp->l_max_ct[ppt->index_md_scalars][index_ct] = ppt->l_lss_max; - - } - if (ppt->has_tensors == _TRUE_) { - - /* spectra computed up to l_tensor_max */ - - if (psp->has_tt == _TRUE_) psp->l_max_ct[ppt->index_md_tensors][psp->index_ct_tt] = ppt->l_tensor_max; - if (psp->has_ee == _TRUE_) psp->l_max_ct[ppt->index_md_tensors][psp->index_ct_ee] = ppt->l_tensor_max; - if (psp->has_te == _TRUE_) psp->l_max_ct[ppt->index_md_tensors][psp->index_ct_te] = ppt->l_tensor_max; - if (psp->has_bb == _TRUE_) psp->l_max_ct[ppt->index_md_tensors][psp->index_ct_bb] = ppt->l_tensor_max; - } - - /* maximizations */ - psp->l_max_tot = 0.; - for (index_md=0; index_md < psp->md_size; index_md++) { - psp->l_max[index_md] = 0.; - for (index_ct=0.; index_ctct_size; index_ct++) - psp->l_max[index_md] = MAX(psp->l_max[index_md],psp->l_max_ct[index_md][index_ct]); - psp->l_max_tot = MAX(psp->l_max_tot,psp->l_max[index_md]); - } - } - - /* indices for species associated with a matter transfer function in Fourier space */ - - index_tr=0; - class_define_index(psp->index_tr_delta_g,ppt->has_source_delta_g,index_tr,1); - class_define_index(psp->index_tr_delta_b,ppt->has_source_delta_b,index_tr,1); - class_define_index(psp->index_tr_delta_cdm,ppt->has_source_delta_cdm,index_tr,1); - class_define_index(psp->index_tr_delta_dcdm,ppt->has_source_delta_dcdm,index_tr,1); - class_define_index(psp->index_tr_delta_scf,ppt->has_source_delta_scf,index_tr,1); - class_define_index(psp->index_tr_delta_fld,ppt->has_source_delta_fld,index_tr,1); - class_define_index(psp->index_tr_delta_ur,ppt->has_source_delta_ur,index_tr,1); - class_define_index(psp->index_tr_delta_dr,ppt->has_source_delta_dr,index_tr,1); - class_define_index(psp->index_tr_delta_ncdm1,ppt->has_source_delta_ncdm,index_tr,pba->N_ncdm); - class_define_index(psp->index_tr_delta_tot,ppt->has_density_transfers,index_tr,1); - class_define_index(psp->index_tr_phi,ppt->has_source_phi,index_tr,1); - class_define_index(psp->index_tr_psi,ppt->has_source_psi,index_tr,1); - - /* indices for species associated with a velocity transfer function in Fourier space */ - - class_define_index(psp->index_tr_theta_g,ppt->has_source_theta_g,index_tr,1); - class_define_index(psp->index_tr_theta_b,ppt->has_source_theta_b,index_tr,1); - class_define_index(psp->index_tr_theta_cdm,ppt->has_source_theta_cdm,index_tr,1); - class_define_index(psp->index_tr_theta_dcdm,ppt->has_source_theta_dcdm,index_tr,1); - class_define_index(psp->index_tr_theta_scf,ppt->has_source_theta_scf,index_tr,1); - class_define_index(psp->index_tr_theta_fld,ppt->has_source_theta_fld,index_tr,1); - class_define_index(psp->index_tr_theta_ur,ppt->has_source_theta_ur,index_tr,1); - class_define_index(psp->index_tr_theta_dr,ppt->has_source_theta_dr,index_tr,1); - class_define_index(psp->index_tr_theta_ncdm1,ppt->has_source_theta_ncdm,index_tr,pba->N_ncdm); - class_define_index(psp->index_tr_theta_tot,ppt->has_velocity_transfers,index_tr,1); - - psp->tr_size = index_tr; - - return _SUCCESS_; - -} - -/** - * This routine computes a table of values for all harmonic spectra \f$ C_l \f$'s, - * given the transfer functions and primordial spectra. - * - * @param pba Input: pointer to background structure - * @param ppt Input: pointer to perturbation structure - * @param ptr Input: pointer to transfers structure - * @param ppm Input: pointer to primordial structure - * @param psp Input/Output: pointer to spectra structure - * @return the error status - */ - -int spectra_cls( - struct background * pba, - struct perturbs * ppt, - struct transfers * ptr, - struct primordial * ppm, - struct spectra * psp - ) { - - /** Summary: */ - - /** - define local variables */ - - int index_md; - int index_ic1,index_ic2,index_ic1_ic2; - int index_l; - int index_ct; - int cl_integrand_num_columns; - - double * cl_integrand; /* array with argument cl_integrand[index_k*cl_integrand_num_columns+1+psp->index_ct] */ - double * transfer_ic1; /* array with argument transfer_ic1[index_tt] */ - double * transfer_ic2; /* idem */ - double * primordial_pk; /* array with argument primordial_pk[index_ic_ic]*/ - - /* This code can be optionally compiled with the openmp option for parallel computation. - Inside parallel regions, the use of the command "return" is forbidden. - For error management, instead of "return _FAILURE_", we will set the variable below - to "abort = _TRUE_". This will lead to a "return _FAILURE_" jus after leaving the - parallel region. */ - int abort; - -#ifdef _OPENMP - /* instrumentation times */ - double tstart, tstop; -#endif - - /** - allocate pointers to arrays where results will be stored */ - - class_alloc(psp->l_size,sizeof(int)*psp->md_size,psp->error_message); - class_alloc(psp->cl,sizeof(double *)*psp->md_size,psp->error_message); - class_alloc(psp->ddcl,sizeof(double *)*psp->md_size,psp->error_message); - - psp->l_size_max = ptr->l_size_max; - class_alloc(psp->l,sizeof(double)*psp->l_size_max,psp->error_message); - - /** - store values of l */ - for (index_l=0; index_l < psp->l_size_max; index_l++) { - psp->l[index_l] = (double)ptr->l[index_l]; - } - - /** - loop over modes (scalar, tensors, etc). For each mode: */ - - for (index_md = 0; index_md < psp->md_size; index_md++) { - - /** - --> (a) store number of l values for this mode */ - - psp->l_size[index_md] = ptr->l_size[index_md]; - - /** - --> (b) allocate arrays where results will be stored */ - - class_alloc(psp->cl[index_md],sizeof(double)*psp->l_size[index_md]*psp->ct_size*psp->ic_ic_size[index_md],psp->error_message); - class_alloc(psp->ddcl[index_md],sizeof(double)*psp->l_size[index_md]*psp->ct_size*psp->ic_ic_size[index_md],psp->error_message); - cl_integrand_num_columns = 1+psp->ct_size*2; /* one for k, ct_size for each type, ct_size for each second derivative of each type */ - - /** - --> (c) loop over initial conditions */ - - for (index_ic1 = 0; index_ic1 < psp->ic_size[index_md]; index_ic1++) { - for (index_ic2 = index_ic1; index_ic2 < psp->ic_size[index_md]; index_ic2++) { - index_ic1_ic2 = index_symmetric_matrix(index_ic1,index_ic2,psp->ic_size[index_md]); - - /* non-diagonal coefficients should be computed only if non-zero correlation */ - if (psp->is_non_zero[index_md][index_ic1_ic2] == _TRUE_) { - - /* initialize error management flag */ - abort = _FALSE_; - - /* beginning of parallel region */ - -#pragma omp parallel \ - shared(ptr,ppm,index_md,psp,ppt,cl_integrand_num_columns,index_ic1,index_ic2,abort) \ - private(tstart,cl_integrand,primordial_pk,transfer_ic1,transfer_ic2,index_l,tstop) - - { - -#ifdef _OPENMP - tstart = omp_get_wtime(); -#endif - - class_alloc_parallel(cl_integrand, - ptr->q_size*cl_integrand_num_columns*sizeof(double), - psp->error_message); - - class_alloc_parallel(primordial_pk, - psp->ic_ic_size[index_md]*sizeof(double), - psp->error_message); - - class_alloc_parallel(transfer_ic1, - ptr->tt_size[index_md]*sizeof(double), - psp->error_message); - - class_alloc_parallel(transfer_ic2, - ptr->tt_size[index_md]*sizeof(double), - psp->error_message); - -#pragma omp for schedule (dynamic) - - /** - ---> loop over l values defined in the transfer module. - For each l, compute the \f$ C_l\f$'s for all types (TT, TE, ...) - by convolving primordial spectra with transfer functions. - This elementary task is assigned to spectra_compute_cl() */ - - for (index_l=0; index_l < ptr->l_size[index_md]; index_l++) { - -#pragma omp flush(abort) - - class_call_parallel(spectra_compute_cl(pba, - ppt, - ptr, - ppm, - psp, - index_md, - index_ic1, - index_ic2, - index_l, - cl_integrand_num_columns, - cl_integrand, - primordial_pk, - transfer_ic1, - transfer_ic2), - psp->error_message, - psp->error_message); - - } /* end of loop over l */ - -#ifdef _OPENMP - tstop = omp_get_wtime(); - if (psp->spectra_verbose > 1) - printf("In %s: time spent in parallel region (loop over l's) = %e s for thread %d\n", - __func__,tstop-tstart,omp_get_thread_num()); -#endif - free(cl_integrand); - - free(primordial_pk); - - free(transfer_ic1); - - free(transfer_ic2); - - } /* end of parallel region */ - - if (abort == _TRUE_) return _FAILURE_; - - } - else { - - /* set non-diagonal coefficients to zero if pair of ic's uncorrelated */ - - for (index_l=0; index_l < ptr->l_size[index_md]; index_l++) { - for (index_ct=0; index_ctct_size; index_ct++) { - psp->cl[index_md] - [(index_l * psp->ic_ic_size[index_md] + index_ic1_ic2) * psp->ct_size + index_ct] - = 0.; - } - } - } - } - } - - /** - --> (d) now that for a given mode, all possible \f$ C_l\f$'s have been computed, - compute second derivative of the array in which they are stored, - in view of spline interpolation. */ - - class_call(array_spline_table_lines(psp->l, - psp->l_size[index_md], - psp->cl[index_md], - psp->ic_ic_size[index_md]*psp->ct_size, - psp->ddcl[index_md], - _SPLINE_EST_DERIV_, - psp->error_message), - psp->error_message, - psp->error_message); - } - - return _SUCCESS_; - -} - -/** - * This routine computes the \f$ C_l\f$'s for a given mode, pair of initial conditions - * and multipole, but for all types (TT, TE...), by convolving the - * transfer functions with the primordial spectra. - * - * @param pba Input: pointer to background structure - * @param ppt Input: pointer to perturbation structure - * @param ptr Input: pointer to transfers structure - * @param ppm Input: pointer to primordial structure - * @param psp Input/Output: pointer to spectra structure (result stored here) - * @param index_md Input: index of mode under consideration - * @param index_ic1 Input: index of first initial condition in the correlator - * @param index_ic2 Input: index of second initial condition in the correlator - * @param index_l Input: index of multipole under consideration - * @param cl_integrand_num_columns Input: number of columns in cl_integrand - * @param cl_integrand Input: an allocated workspace - * @param primordial_pk Input: table of primordial spectrum values - * @param transfer_ic1 Input: table of transfer function values for first initial condition - * @param transfer_ic2 Input: table of transfer function values for second initial condition - * @return the error status - */ - -int spectra_compute_cl( - struct background * pba, - struct perturbs * ppt, - struct transfers * ptr, - struct primordial * ppm, - struct spectra * psp, - int index_md, - int index_ic1, - int index_ic2, - int index_l, - int cl_integrand_num_columns, - double * cl_integrand, - double * primordial_pk, - double * transfer_ic1, - double * transfer_ic2 - ) { - - int index_q; - int index_tt; - int index_ct; - int index_d1,index_d2; - double k; - double clvalue; - int index_ic1_ic2; - double transfer_ic1_temp=0.; - double transfer_ic2_temp=0.; - double * transfer_ic1_nc=NULL; - double * transfer_ic2_nc=NULL; - double factor; - int index_q_spline=0; - - index_ic1_ic2 = index_symmetric_matrix(index_ic1,index_ic2,psp->ic_size[index_md]); - - if (ppt->has_cl_number_count == _TRUE_) { - class_alloc(transfer_ic1_nc,psp->d_size*sizeof(double),psp->error_message); - class_alloc(transfer_ic2_nc,psp->d_size*sizeof(double),psp->error_message); - } - - for (index_q=0; index_q < ptr->q_size; index_q++) { - - //q = ptr->q[index_q]; - k = ptr->k[index_md][index_q]; - - cl_integrand[index_q*cl_integrand_num_columns+0] = k; - - class_call(primordial_spectrum_at_k(ppm,index_md,linear,k,primordial_pk), - ppm->error_message, - psp->error_message); - - /* above routine checks that k>0: no possible division by zero below */ - - for (index_tt=0; index_tt < ptr->tt_size[index_md]; index_tt++) { - - transfer_ic1[index_tt] = - ptr->transfer[index_md] - [((index_ic1 * ptr->tt_size[index_md] + index_tt) - * ptr->l_size[index_md] + index_l) - * ptr->q_size + index_q]; - - if (index_ic1 == index_ic2) { - transfer_ic2[index_tt] = transfer_ic1[index_tt]; - } - else { - transfer_ic2[index_tt] = ptr->transfer[index_md] - [((index_ic2 * ptr->tt_size[index_md] + index_tt) - * ptr->l_size[index_md] + index_l) - * ptr->q_size + index_q]; - } - } - - /* define combinations of transfer functions */ - - if (ppt->has_cl_cmb_temperature == _TRUE_) { - - if (_scalars_) { - - transfer_ic1_temp = transfer_ic1[ptr->index_tt_t0] + transfer_ic1[ptr->index_tt_t1] + transfer_ic1[ptr->index_tt_t2]; - transfer_ic2_temp = transfer_ic2[ptr->index_tt_t0] + transfer_ic2[ptr->index_tt_t1] + transfer_ic2[ptr->index_tt_t2]; - - } - - if (_vectors_) { - - transfer_ic1_temp = transfer_ic1[ptr->index_tt_t1] + transfer_ic1[ptr->index_tt_t2]; - transfer_ic2_temp = transfer_ic2[ptr->index_tt_t1] + transfer_ic2[ptr->index_tt_t2]; - - } - - if (_tensors_) { - - transfer_ic1_temp = transfer_ic1[ptr->index_tt_t2]; - transfer_ic2_temp = transfer_ic2[ptr->index_tt_t2]; - - } - } - - if (ppt->has_cl_number_count == _TRUE_) { - - for (index_d1=0; index_d1d_size; index_d1++) { - - transfer_ic1_nc[index_d1] = 0.; - transfer_ic2_nc[index_d1] = 0.; - - if (ppt->has_nc_density == _TRUE_) { - transfer_ic1_nc[index_d1] += transfer_ic1[ptr->index_tt_density+index_d1]; - transfer_ic2_nc[index_d1] += transfer_ic2[ptr->index_tt_density+index_d1]; - } - - if (ppt->has_nc_rsd == _TRUE_) { - transfer_ic1_nc[index_d1] - += transfer_ic1[ptr->index_tt_rsd+index_d1] - + transfer_ic1[ptr->index_tt_d0+index_d1] - + transfer_ic1[ptr->index_tt_d1+index_d1]; - transfer_ic2_nc[index_d1] - += transfer_ic2[ptr->index_tt_rsd+index_d1] - + transfer_ic2[ptr->index_tt_d0+index_d1] - + transfer_ic2[ptr->index_tt_d1+index_d1]; - } - - if (ppt->has_nc_lens == _TRUE_) { - transfer_ic1_nc[index_d1] += - psp->l[index_l]*(psp->l[index_l]+1.)*transfer_ic1[ptr->index_tt_nc_lens+index_d1]; - transfer_ic2_nc[index_d1] += - psp->l[index_l]*(psp->l[index_l]+1.)*transfer_ic2[ptr->index_tt_nc_lens+index_d1]; - } - - if (ppt->has_nc_gr == _TRUE_) { - transfer_ic1_nc[index_d1] - += transfer_ic1[ptr->index_tt_nc_g1+index_d1] - + transfer_ic1[ptr->index_tt_nc_g2+index_d1] - + transfer_ic1[ptr->index_tt_nc_g3+index_d1] - + transfer_ic1[ptr->index_tt_nc_g4+index_d1] - + transfer_ic1[ptr->index_tt_nc_g5+index_d1]; - transfer_ic2_nc[index_d1] - += transfer_ic2[ptr->index_tt_nc_g1+index_d1] - + transfer_ic2[ptr->index_tt_nc_g2+index_d1] - + transfer_ic2[ptr->index_tt_nc_g3+index_d1] - + transfer_ic2[ptr->index_tt_nc_g4+index_d1] - + transfer_ic2[ptr->index_tt_nc_g5+index_d1]; - } - - } - } - - /* integrand of Cl's */ - - /* note: we must integrate - - C_l = int [4 pi dk/k calP(k) Delta1_l(q) Delta2_l(q)] - - where calP(k) is the dimensionless - power spectrum equal to a constant in the scale-invariant case, - and to P(k) = A_s k^(ns-1) otherwise and q=sqrt(k2+K) (scalars) - or sqrt(k2+2K) (vectors) or sqrt(k2+3K) (tensors) - - In the literature, people often rewrite the integral in terms - of q and absorb the Jacobian of the change of variables in a redefinition of the primodial - spectrum. Let us illustrate this for scalars: - - dk/k = kdk/k2 = qdq/k2 = dq/q * (q/k)^2 = dq/q * [q2/(q2-K)] = q2dq * 1/[q(q2-K)] - - This factor 1/[q(q2-K)] is commonly absorbed in the definition of calP. Then one would have - - C_l = int [4 pi q2 dq {A_s k^(ns-1)/[q(q2-K)]} Delta1_l(q) Delta2_l(q)] - - Sometimes in the literature, the factor (k2-3K)=(q2-4K) present - in the initial conditions of scalar transfer functions (if - normalized to curvature R=1) is also absorbed in the definition - of the power spectrum. Then the curvature power spectrum reads - - calP = (q2-4K)/[q(q2-K)] * (k/k)^ns - - In CLASS we prefer to define calP = (k/k)^ns like in the flat - case, to have the factor (q2-4K) in the initialk conditions, - and the factor 1/[q(q2-K)] doesn't need to be there since we - integrate over dk/k. - - For tensors, the change of variable described above gives a slightly different result: - - dk/k = kdk/k2 = qdq/k2 = dq/q * (q/k)^2 = dq/q * [q2/(q2-3K)] = q2dq * 1/[q(q2-3K)] - - But for tensors there are extra curvature-related correction factors to - take into account. See the comments in the perturbation module, - related to initial conditions for tensors. - - */ - - factor = 4. * _PI_ / k; - - if (psp->has_tt == _TRUE_) - cl_integrand[index_q*cl_integrand_num_columns+1+psp->index_ct_tt]= - primordial_pk[index_ic1_ic2] - * transfer_ic1_temp - * transfer_ic2_temp - * factor; - - if (psp->has_ee == _TRUE_) - cl_integrand[index_q*cl_integrand_num_columns+1+psp->index_ct_ee]= - primordial_pk[index_ic1_ic2] - * transfer_ic1[ptr->index_tt_e] - * transfer_ic2[ptr->index_tt_e] - * factor; - - if (psp->has_te == _TRUE_) - cl_integrand[index_q*cl_integrand_num_columns+1+psp->index_ct_te]= - primordial_pk[index_ic1_ic2] - * 0.5*(transfer_ic1_temp * transfer_ic2[ptr->index_tt_e] + - transfer_ic1[ptr->index_tt_e] * transfer_ic2_temp) - * factor; - - if (_tensors_ && (psp->has_bb == _TRUE_)) - cl_integrand[index_q*cl_integrand_num_columns+1+psp->index_ct_bb]= - primordial_pk[index_ic1_ic2] - * transfer_ic1[ptr->index_tt_b] - * transfer_ic2[ptr->index_tt_b] - * factor; - - if (_scalars_ && (psp->has_pp == _TRUE_)) - cl_integrand[index_q*cl_integrand_num_columns+1+psp->index_ct_pp]= - primordial_pk[index_ic1_ic2] - * transfer_ic1[ptr->index_tt_lcmb] - * transfer_ic2[ptr->index_tt_lcmb] - * factor; - - if (_scalars_ && (psp->has_tp == _TRUE_)) - cl_integrand[index_q*cl_integrand_num_columns+1+psp->index_ct_tp]= - primordial_pk[index_ic1_ic2] - * 0.5*(transfer_ic1_temp * transfer_ic2[ptr->index_tt_lcmb] + - transfer_ic1[ptr->index_tt_lcmb] * transfer_ic2_temp) - * factor; - - if (_scalars_ && (psp->has_ep == _TRUE_)) - cl_integrand[index_q*cl_integrand_num_columns+1+psp->index_ct_ep]= - primordial_pk[index_ic1_ic2] - * 0.5*(transfer_ic1[ptr->index_tt_e] * transfer_ic2[ptr->index_tt_lcmb] + - transfer_ic1[ptr->index_tt_lcmb] * transfer_ic2[ptr->index_tt_e]) - * factor; - - if (_scalars_ && (psp->has_dd == _TRUE_)) { - index_ct=0; - for (index_d1=0; index_d1d_size; index_d1++) { - for (index_d2=index_d1; index_d2<=MIN(index_d1+psp->non_diag,psp->d_size-1); index_d2++) { - cl_integrand[index_q*cl_integrand_num_columns+1+psp->index_ct_dd+index_ct]= - primordial_pk[index_ic1_ic2] - * transfer_ic1_nc[index_d1] - * transfer_ic2_nc[index_d2] - * factor; - index_ct++; - } - } - } - - if (_scalars_ && (psp->has_td == _TRUE_)) { - for (index_d1=0; index_d1d_size; index_d1++) { - cl_integrand[index_q*cl_integrand_num_columns+1+psp->index_ct_td+index_d1]= - primordial_pk[index_ic1_ic2] - * 0.5*(transfer_ic1_temp * transfer_ic2_nc[index_d1] + - transfer_ic1_nc[index_d1] * transfer_ic2_temp) - * factor; - } - } - - if (_scalars_ && (psp->has_pd == _TRUE_)) { - for (index_d1=0; index_d1d_size; index_d1++) { - cl_integrand[index_q*cl_integrand_num_columns+1+psp->index_ct_pd+index_d1]= - primordial_pk[index_ic1_ic2] - * 0.5*(transfer_ic1[ptr->index_tt_lcmb] * transfer_ic2_nc[index_d1] + - transfer_ic1_nc[index_d1] * transfer_ic2[ptr->index_tt_lcmb]) - * factor; - } - } - - if (_scalars_ && (psp->has_ll == _TRUE_)) { - index_ct=0; - for (index_d1=0; index_d1d_size; index_d1++) { - for (index_d2=index_d1; index_d2<=MIN(index_d1+psp->non_diag,psp->d_size-1); index_d2++) { - cl_integrand[index_q*cl_integrand_num_columns+1+psp->index_ct_ll+index_ct]= - primordial_pk[index_ic1_ic2] - * transfer_ic1[ptr->index_tt_lensing+index_d1] - * transfer_ic2[ptr->index_tt_lensing+index_d2] - * factor; - index_ct++; - } - } - } - - if (_scalars_ && (psp->has_tl == _TRUE_)) { - for (index_d1=0; index_d1d_size; index_d1++) { - cl_integrand[index_q*cl_integrand_num_columns+1+psp->index_ct_tl+index_d1]= - primordial_pk[index_ic1_ic2] - * 0.5*(transfer_ic1_temp * transfer_ic2[ptr->index_tt_lensing+index_d1] + - transfer_ic1[ptr->index_tt_lensing+index_d1] * transfer_ic2_temp) - * factor; - } - } - - if (_scalars_ && (psp->has_dl == _TRUE_)) { - index_ct=0; - for (index_d1=0; index_d1d_size; index_d1++) { - for (index_d2=MAX(index_d1-psp->non_diag,0); index_d2<=MIN(index_d1+psp->non_diag,psp->d_size-1); index_d2++) { - cl_integrand[index_q*cl_integrand_num_columns+1+psp->index_ct_dl+index_ct]= - primordial_pk[index_ic1_ic2] - * transfer_ic1_nc[index_d1] * transfer_ic2[ptr->index_tt_lensing+index_d2] - * factor; - index_ct++; - } - } - } - } - - for (index_ct=0; index_ctct_size; index_ct++) { - - /* treat null spectra (C_l^BB of scalars, C_l^pp of tensors, etc. */ - - if ((_scalars_ && (psp->has_bb == _TRUE_) && (index_ct == psp->index_ct_bb)) || - (_tensors_ && (psp->has_pp == _TRUE_) && (index_ct == psp->index_ct_pp)) || - (_tensors_ && (psp->has_tp == _TRUE_) && (index_ct == psp->index_ct_tp)) || - (_tensors_ && (psp->has_ep == _TRUE_) && (index_ct == psp->index_ct_ep)) || - (_tensors_ && (psp->has_dd == _TRUE_) && (index_ct == psp->index_ct_dd)) || - (_tensors_ && (psp->has_td == _TRUE_) && (index_ct == psp->index_ct_td)) || - (_tensors_ && (psp->has_pd == _TRUE_) && (index_ct == psp->index_ct_pd)) || - (_tensors_ && (psp->has_ll == _TRUE_) && (index_ct == psp->index_ct_ll)) || - (_tensors_ && (psp->has_tl == _TRUE_) && (index_ct == psp->index_ct_tl)) || - (_tensors_ && (psp->has_dl == _TRUE_) && (index_ct == psp->index_ct_dl)) - ) { - - psp->cl[index_md] - [(index_l * psp->ic_ic_size[index_md] + index_ic1_ic2) * psp->ct_size + index_ct] = 0.; - - } - /* for non-zero spectra, integrate over q */ - else { - - /* spline the integrand over the whole range of k's */ - - class_call(array_spline(cl_integrand, - cl_integrand_num_columns, - ptr->q_size, - 0, - 1+index_ct, - 1+psp->ct_size+index_ct, - _SPLINE_EST_DERIV_, - psp->error_message), - psp->error_message, - psp->error_message); - - /* Technical point: we will now do a spline integral over the - whole range of k's, excepted in the closed (K>0) case. In - that case, it is a bad idea to spline over the values of k - corresponding to nuindex_q_flat_approximation, to tell the integration - routine that below this index, it should treat the integral - as a trapezoidal one. For testing, one is free to set - index_q_spline to 0, to enforce spline integration - everywhere, or to (ptr->q_size-1), to enforce trapezoidal - integration everywhere. */ - - if (pba->sgnK == 1) { - index_q_spline = ptr->index_q_flat_approximation; - } - - class_call(array_integrate_all_trapzd_or_spline(cl_integrand, - cl_integrand_num_columns, - ptr->q_size, - index_q_spline, - 0, - 1+index_ct, - 1+psp->ct_size+index_ct, - &clvalue, - psp->error_message), - psp->error_message, - psp->error_message); - - /* in the closed case, instead of an integral, we have a - discrete sum. In practice, this does not matter: the previous - routine does give a correct approximation of the discrete - sum, both in the trapezoidal and spline regions. The only - error comes from the first point: the previous routine - assumes a weight for the first point which is too small - compared to what it would be in the an actual discrete - sum. The line below correct this problem in an exact way. - */ - - if (pba->sgnK == 1) { - clvalue += cl_integrand[1+index_ct] * ptr->q[0]/ptr->k[0][0]*sqrt(pba->K)/2.; - } - - /* we have the correct C_l now. We can store it in the transfer structure. */ - - psp->cl[index_md] - [(index_l * psp->ic_ic_size[index_md] + index_ic1_ic2) * psp->ct_size + index_ct] - = clvalue; - - } - } - - if (ppt->has_cl_number_count == _TRUE_) { - free(transfer_ic1_nc); - free(transfer_ic2_nc); - } - - return _SUCCESS_; - -} - -/** - * This routine computes the values of k and tau at which the matter - * power spectra \f$ P(k,\tau)\f$ and the matter transfer functions \f$ T_i(k,\tau)\f$ - * will be stored. - * - * @param pba Input: pointer to background structure (for z to tau conversion) - * @param ppt Input: pointer to perturbation structure (contain source functions) - * @param psp Input/Output: pointer to spectra structure - * @return the error status - */ - -int spectra_k_and_tau( - struct background * pba, - struct perturbs * ppt, - struct spectra * psp - ) { - - /** Summary: */ - - /** - define local variables */ - - int index_k; - int index_tau; - double tau_min; - - /** - check the presence of scalar modes */ - - class_test((ppt->has_scalars == _FALSE_), - psp->error_message, - "you cannot ask for matter power spectrum since you turned off scalar modes"); - - /** - check the maximum redshift z_max_pk at which \f$P(k,z)\f$ and \f$ T_i(k,z)\f$ should be - computable by interpolation. If it is equal to zero, only \f$ P(k,z=0)\f$ - needs to be computed. If it is higher, we will store in a table - various P(k,tau) at several values of tau generously encompassing - the range 0z_max_pk < 0), - psp->error_message, - "asked for negative redshift z=%e",psp->z_max_pk); - - /* if z_max_pk=0, there is just one value to store */ - if (psp->z_max_pk == 0.) { - psp->ln_tau_size=1; - } - - /* if z_max_pk>0, store several values (with a comfortable margin above z_max_pk) in view of interpolation */ - else{ - - /* find the first relevant value of tau (last value in the table tau_ampling before tau(z_max)) and infer the number of values of tau at which P(k) must be stored */ - - class_call(background_tau_of_z(pba,psp->z_max_pk,&tau_min), - pba->error_message, - psp->error_message); - - index_tau=0; - class_test((tau_min <= ppt->tau_sampling[index_tau]), - psp->error_message, - "you asked for zmax=%e, i.e. taumin=%e, smaller than or equal to the first possible value =%e; it should be strictly bigger for a successfull interpolation",psp->z_max_pk,tau_min,ppt->tau_sampling[0]); - - while (ppt->tau_sampling[index_tau] < tau_min){ - index_tau++; - } - index_tau --; - class_test(index_tau<0, - psp->error_message, - "by construction, this should never happen, a bug must have been introduced somewhere"); - - /* whenever possible, take a few more values in to avoid boundary effects in the interpolation */ - if (index_tau>0) index_tau--; - if (index_tau>0) index_tau--; - if (index_tau>0) index_tau--; - if (index_tau>0) index_tau--; - psp->ln_tau_size=ppt->tau_size-index_tau; - - } - - /** - allocate and fill table of tau values at which \f$P(k,\tau)\f$ and \f$T_i(k,\tau)\f$ are stored */ - - class_alloc(psp->ln_tau,sizeof(double)*psp->ln_tau_size,psp->error_message); - - for (index_tau=0; index_tauln_tau_size; index_tau++) { - psp->ln_tau[index_tau]=log(ppt->tau_sampling[index_tau-psp->ln_tau_size+ppt->tau_size]); - } - - /** - allocate and fill table of k values at which \f$ P(k,\tau)\f$ is stored */ - - psp->ln_k_size = ppt->k_size[ppt->index_md_scalars]; - class_alloc(psp->ln_k,sizeof(double)*psp->ln_k_size,psp->error_message); - - for (index_k=0; index_kln_k_size; index_k++) { - class_test(ppt->k[ppt->index_md_scalars][index_k] <= 0., - psp->error_message, - "stop to avoid segmentation fault"); - psp->ln_k[index_k]=log(ppt->k[ppt->index_md_scalars][index_k]); - } - - return _SUCCESS_; -} - -/** - * This routine computes a table of values for all matter power spectra P(k), - * given the source functions and primordial spectra. - * - * @param pba Input: pointer to background structure (will provide H, Omega_m at redshift of interest) - * @param ppt Input: pointer to perturbation structure (contain source functions) - * @param ppm Input: pointer to primordial structure - * @param pnl Input: pointer to nonlinear structure - * @param psp Input/Output: pointer to spectra structure - * @return the error status - */ - -int spectra_pk( - struct background * pba, - struct perturbs * ppt, - struct primordial * ppm, - struct nonlinear *pnl, - struct spectra * psp - ) { - - /** Summary: */ - - /** - define local variables */ - - int index_md; - int index_ic1,index_ic2,index_ic1_ic2; - int index_k; - int index_tau; - double * primordial_pk; /* array with argument primordial_pk[index_ic_ic] */ - double source_ic1; - double source_ic2; - double ln_pk_tot; - - /** - check the presence of scalar modes */ - - class_test((ppt->has_scalars == _FALSE_), - psp->error_message, - "you cannot ask for matter power spectrum since you turned off scalar modes"); - - index_md = psp->index_md_scalars; - - /** - allocate temporary vectors where the primordial spectrum and the background quantities will be stored */ - - class_alloc(primordial_pk,psp->ic_ic_size[index_md]*sizeof(double),psp->error_message); - - /** - allocate and fill array of \f$P(k,\tau)\f$ values */ - - class_alloc(psp->ln_pk, - sizeof(double)*psp->ln_tau_size*psp->ln_k_size*psp->ic_ic_size[index_md], - psp->error_message); - - if (pnl->method != nl_none) { - class_alloc(psp->ln_pk_nl, - sizeof(double)*psp->ln_tau_size*psp->ln_k_size, - psp->error_message); - } - else { - psp->ln_pk_nl = NULL; - } - - for (index_tau=0 ; index_tau < psp->ln_tau_size; index_tau++) { - for (index_k=0; index_kln_k_size; index_k++) { - - class_call(primordial_spectrum_at_k(ppm,index_md,logarithmic,psp->ln_k[index_k],primordial_pk), - ppm->error_message, - psp->error_message); - - ln_pk_tot =0; - - /* curvature primordial spectrum: - P_R(k) = 1/(2pi^2) k^3 - so, primordial curvature correlator: - = (2pi^2) k^-3 P_R(k) - so, delta_m correlator: - P(k) = = (2pi^2) k^-3 (source_m)^2 P_R(k) - - For isocurvature or cross adiabatic-isocurvature parts, - replace one or two 'R' by 'S_i's */ - - /* part diagonal in initial conditions */ - for (index_ic1 = 0; index_ic1 < psp->ic_size[index_md]; index_ic1++) { - - index_ic1_ic2 = index_symmetric_matrix(index_ic1,index_ic1,psp->ic_size[index_md]); - - source_ic1 = ppt->sources[index_md] - [index_ic1 * ppt->tp_size[index_md] + ppt->index_tp_delta_m] - [(index_tau-psp->ln_tau_size+ppt->tau_size) * ppt->k_size[index_md] + index_k]; - - psp->ln_pk[(index_tau * psp->ln_k_size + index_k)* psp->ic_ic_size[index_md] + index_ic1_ic2] = - log(2.*_PI_*_PI_/exp(3.*psp->ln_k[index_k]) - *source_ic1*source_ic1 - *exp(primordial_pk[index_ic1_ic2])); - - ln_pk_tot += psp->ln_pk[(index_tau * psp->ln_k_size + index_k)* psp->ic_ic_size[index_md] + index_ic1_ic2]; - - } - - /* part non-diagonal in initial conditions */ - for (index_ic1 = 0; index_ic1 < psp->ic_size[index_md]; index_ic1++) { - for (index_ic2 = index_ic1+1; index_ic2 < psp->ic_size[index_md]; index_ic2++) { - - index_ic1_ic2 = index_symmetric_matrix(index_ic1,index_ic2,psp->ic_size[index_md]); - - if (psp->is_non_zero[index_md][index_ic1_ic2] == _TRUE_) { - - source_ic1 = ppt->sources[index_md] - [index_ic1 * ppt->tp_size[index_md] + ppt->index_tp_delta_m] - [(index_tau-psp->ln_tau_size+ppt->tau_size) * ppt->k_size[index_md] + index_k]; - - source_ic2 = ppt->sources[index_md] - [index_ic2 * ppt->tp_size[index_md] + ppt->index_tp_delta_m] - [(index_tau-psp->ln_tau_size+ppt->tau_size) * ppt->k_size[index_md] + index_k]; - - psp->ln_pk[(index_tau * psp->ln_k_size + index_k)* psp->ic_ic_size[index_md] + index_ic1_ic2] = - primordial_pk[index_ic1_ic2]*SIGN(source_ic1)*SIGN(source_ic2); - - ln_pk_tot += psp->ln_pk[(index_tau * psp->ln_k_size + index_k)* psp->ic_ic_size[index_md] + index_ic1_ic2]; - - } - else { - psp->ln_pk[(index_tau * psp->ln_k_size + index_k)* psp->ic_ic_size[index_md] + index_ic1_ic2] = 0.; - } - } - } - - /* if non-linear corrections required, compute the total non-linear matter power spectrum */ - - if (pnl->method != nl_none) { - - psp->ln_pk_nl[index_tau * psp->ln_k_size + index_k] = - ln_pk_tot - + 2.*log(pnl->nl_corr_density[(index_tau-psp->ln_tau_size+ppt->tau_size) * ppt->k_size[index_md] + index_k]); - - } - } - } - - /**- if interpolation of \f$P(k,\tau)\f$ will be needed (as a function of tau), - compute array of second derivatives in view of spline interpolation */ - - if (psp->ln_tau_size > 1) { - - class_alloc(psp->ddln_pk,sizeof(double)*psp->ln_tau_size*psp->ln_k_size*psp->ic_ic_size[index_md],psp->error_message); - - class_call(array_spline_table_lines(psp->ln_tau, - psp->ln_tau_size, - psp->ln_pk, - psp->ic_ic_size[index_md]*psp->ln_k_size, - psp->ddln_pk, - _SPLINE_EST_DERIV_, - psp->error_message), - psp->error_message, - psp->error_message); - - } - - /* compute sigma8 (mean variance today in sphere of radius 8/h Mpc */ - - class_call(spectra_sigma(pba,ppm,psp,8./pba->h,0.,&(psp->sigma8)), - psp->error_message, - psp->error_message); - - if (psp->spectra_verbose>0) - fprintf(stdout," -> sigma8=%g (computed till k = %g h/Mpc)\n", - psp->sigma8, - exp(psp->ln_k[psp->ln_k_size-1])/pba->h); - - /**- if interpolation of \f$ P_{NL}(k,\tau)\f$ will be needed (as a function of tau), - compute array of second derivatives in view of spline interpolation */ - - if (pnl->method != nl_none) { - if (psp->ln_tau_size > 1) { - - class_alloc(psp->ddln_pk_nl,sizeof(double)*psp->ln_tau_size*psp->ln_k_size*psp->ic_ic_size[index_md],psp->error_message); - - class_call(array_spline_table_lines(psp->ln_tau, - psp->ln_tau_size, - psp->ln_pk_nl, - psp->ln_k_size, - psp->ddln_pk_nl, - _SPLINE_EST_DERIV_, - psp->error_message), - psp->error_message, - psp->error_message); - - } - } - - free (primordial_pk); - - return _SUCCESS_; -} - -/** - * This routine computes sigma(R) given P(k) (does not check that k_max is large - * enough) - * - * @param pba Input: pointer to background structure - * @param ppm Input: pointer to primordial structure - * @param psp Input: pointer to spectra structure - * @param z Input: redshift - * @param R Input: radius in Mpc - * @param sigma Output: variance in a sphere of radius R (dimensionless) - */ - -int spectra_sigma( - struct background * pba, - struct primordial * ppm, - struct spectra * psp, - double R, - double z, - double * sigma - ) { - - double pk; - double * pk_ic = NULL; - - double * array_for_sigma; - int index_num; - int index_k; - int index_y; - int index_ddy; - int i; - - double k,W,x; - - if (psp->ic_ic_size[psp->index_md_scalars]>1) - class_alloc(pk_ic, - psp->ic_ic_size[psp->index_md_scalars]*sizeof(double), - psp->error_message); - - i=0; - index_k=i; - i++; - index_y=i; - i++; - index_ddy=i; - i++; - index_num=i; - - class_alloc(array_for_sigma, - psp->ln_k_size*index_num*sizeof(double), - psp->error_message); - - for (i=0;iln_k_size;i++) { - k=exp(psp->ln_k[i]); - if (i == (psp->ln_k_size-1)) k *= 0.9999999; // to prevent rounding error leading to k being bigger than maximum value - x=k*R; - W=3./x/x/x*(sin(x)-x*cos(x)); - class_call(spectra_pk_at_k_and_z(pba,ppm,psp,k,z,&pk,pk_ic), - psp->error_message, - psp->error_message); - array_for_sigma[i*index_num+index_k]=k; - array_for_sigma[i*index_num+index_y]=k*k*pk*W*W; - } - - class_call(array_spline(array_for_sigma, - index_num, - psp->ln_k_size, - index_k, - index_y, - index_ddy, - _SPLINE_EST_DERIV_, - psp->error_message), - psp->error_message, - psp->error_message); + if (psp->has_dl == _TRUE_) + for (index_ct=psp->index_ct_dl; + index_ct < psp->index_ct_dl+(psp->d_size*psp->d_size - (psp->d_size-psp->non_diag)*(psp->d_size-1-psp->non_diag)); + index_ct++) + psp->l_max_ct[ppt->index_md_scalars][index_ct] = ppt->l_lss_max; - class_call(array_integrate_all_spline(array_for_sigma, - index_num, - psp->ln_k_size, - index_k, - index_y, - index_ddy, - sigma, - psp->error_message), - psp->error_message, - psp->error_message); + } + if (ppt->has_tensors == _TRUE_) { - free(array_for_sigma); + /* spectra computed up to l_tensor_max */ - if (psp->ic_ic_size[psp->index_md_scalars]>1) - free(pk_ic); + if (psp->has_tt == _TRUE_) psp->l_max_ct[ppt->index_md_tensors][psp->index_ct_tt] = ppt->l_tensor_max; + if (psp->has_ee == _TRUE_) psp->l_max_ct[ppt->index_md_tensors][psp->index_ct_ee] = ppt->l_tensor_max; + if (psp->has_te == _TRUE_) psp->l_max_ct[ppt->index_md_tensors][psp->index_ct_te] = ppt->l_tensor_max; + if (psp->has_bb == _TRUE_) psp->l_max_ct[ppt->index_md_tensors][psp->index_ct_bb] = ppt->l_tensor_max; + } - *sigma = sqrt(*sigma/(2.*_PI_*_PI_)); + /* maximizations */ + psp->l_max_tot = 0.; + for (index_md=0; index_md < psp->md_size; index_md++) { + psp->l_max[index_md] = 0.; + for (index_ct=0.; index_ctct_size; index_ct++) + psp->l_max[index_md] = MAX(psp->l_max[index_md],psp->l_max_ct[index_md][index_ct]); + psp->l_max_tot = MAX(psp->l_max_tot,psp->l_max[index_md]); + } + } return _SUCCESS_; } /** - * This routine computes a table of values for all matter power spectra P(k), - * given the source functions and primordial spectra. + * This routine computes a table of values for all harmonic spectra \f$ C_l \f$'s, + * given the transfer functions and primordial spectra. * - * @param pba Input: pointer to background structure (will provide density of each species) - * @param ppt Input: pointer to perturbation structure (contain source functions) + * @param pba Input: pointer to background structure + * @param ppt Input: pointer to perturbation structure + * @param ptr Input: pointer to transfers structure + * @param ppm Input: pointer to primordial structure * @param psp Input/Output: pointer to spectra structure * @return the error status */ -int spectra_matter_transfers( - struct background * pba, - struct perturbs * ppt, - struct spectra * psp - ) { +int spectra_cls( + struct background * pba, + struct perturbs * ppt, + struct transfers * ptr, + struct primordial * ppm, + struct spectra * psp + ) { /** Summary: */ /** - define local variables */ int index_md; - int index_ic; - int index_k; - int index_tau; - int last_index_back; - double * pvecback_sp_long; /* array with argument pvecback_sp_long[pba->index_bg] */ - double delta_i,theta_i,rho_i; - double delta_rho_tot,rho_tot; - double rho_plus_p_theta_tot,rho_plus_p_tot; - int n_ncdm; - - /** - check the presence of scalar modes */ - - class_test((ppt->has_scalars == _FALSE_), - psp->error_message, - "you cannot ask for matter power spectrum since you turned off scalar modes"); - - index_md = psp->index_md_scalars; - - /** - allocate and fill array of \f$ T_i(k,\tau)\f$ values */ - - class_alloc(psp->matter_transfer,sizeof(double)*psp->ln_tau_size*psp->ln_k_size*psp->ic_size[index_md]*psp->tr_size,psp->error_message); - - /** - allocate temporary vectors where the background quantities will be stored */ - - class_alloc(pvecback_sp_long,pba->bg_size*sizeof(double),psp->error_message); - - for (index_tau=0 ; index_tau < psp->ln_tau_size; index_tau++) { - - class_call(background_at_tau(pba, - ppt->tau_sampling[index_tau-psp->ln_tau_size+ppt->tau_size], - /* for this last argument we could have passed - exp(psp->ln_tau[index_tau]) but we would then loose - precision in the exp(log(x)) operation) */ - pba->long_info, - pba->inter_normal, - &last_index_back, - pvecback_sp_long), - pba->error_message, - psp->error_message); - - for (index_k=0; index_kln_k_size; index_k++) { - - for (index_ic = 0; index_ic < psp->ic_size[index_md]; index_ic++) { - - delta_rho_tot=0.; - rho_tot=0.; - rho_plus_p_theta_tot=0.; - rho_plus_p_tot=0.; - - /* T_g(k,tau) */ - - rho_i = pvecback_sp_long[pba->index_bg_rho_g]; + int index_ic1,index_ic2,index_ic1_ic2; + int index_l; + int index_ct; + int cl_integrand_num_columns; - if (ppt->has_source_delta_g == _TRUE_) { + double * cl_integrand; /* array with argument cl_integrand[index_k*cl_integrand_num_columns+1+psp->index_ct] */ + double * transfer_ic1; /* array with argument transfer_ic1[index_tt] */ + double * transfer_ic2; /* idem */ + double * primordial_pk; /* array with argument primordial_pk[index_ic_ic]*/ - delta_i = ppt->sources[index_md] - [index_ic * ppt->tp_size[index_md] + ppt->index_tp_delta_g] - [(index_tau-psp->ln_tau_size+ppt->tau_size) * ppt->k_size[index_md] + index_k]; + /* This code can be optionally compiled with the openmp option for parallel computation. + Inside parallel regions, the use of the command "return" is forbidden. + For error management, instead of "return _FAILURE_", we will set the variable below + to "abort = _TRUE_". This will lead to a "return _FAILURE_" jus after leaving the + parallel region. */ + int abort; - psp->matter_transfer[((index_tau*psp->ln_k_size + index_k) * psp->ic_size[index_md] + index_ic) * psp->tr_size + psp->index_tr_delta_g] = delta_i; +#ifdef _OPENMP + /* instrumentation times */ + double tstart, tstop; +#endif - delta_rho_tot += rho_i * delta_i; + /** - allocate pointers to arrays where results will be stored */ - rho_tot += rho_i; + class_alloc(psp->l_size,sizeof(int)*psp->md_size,psp->error_message); + class_alloc(psp->cl,sizeof(double *)*psp->md_size,psp->error_message); + class_alloc(psp->ddcl,sizeof(double *)*psp->md_size,psp->error_message); - } + psp->l_size_max = ptr->l_size_max; + class_alloc(psp->l,sizeof(double)*psp->l_size_max,psp->error_message); - if (ppt->has_source_theta_g == _TRUE_) { + /** - store values of l */ + for (index_l=0; index_l < psp->l_size_max; index_l++) { + psp->l[index_l] = (double)ptr->l[index_l]; + } - theta_i = ppt->sources[index_md] - [index_ic * ppt->tp_size[index_md] + ppt->index_tp_theta_g] - [(index_tau-psp->ln_tau_size+ppt->tau_size) * ppt->k_size[index_md] + index_k]; + /** - loop over modes (scalar, tensors, etc). For each mode: */ - psp->matter_transfer[((index_tau*psp->ln_k_size + index_k) * psp->ic_size[index_md] + index_ic) * psp->tr_size + psp->index_tr_theta_g] = theta_i; + for (index_md = 0; index_md < psp->md_size; index_md++) { - rho_plus_p_theta_tot += 4./3. * rho_i * theta_i; + /** - --> (a) store number of l values for this mode */ - rho_plus_p_tot += 4./3. * rho_i; + psp->l_size[index_md] = ptr->l_size[index_md]; - } + /** - --> (b) allocate arrays where results will be stored */ - /* T_b(k,tau) */ + class_alloc(psp->cl[index_md],sizeof(double)*psp->l_size[index_md]*psp->ct_size*psp->ic_ic_size[index_md],psp->error_message); + class_alloc(psp->ddcl[index_md],sizeof(double)*psp->l_size[index_md]*psp->ct_size*psp->ic_ic_size[index_md],psp->error_message); + cl_integrand_num_columns = 1+psp->ct_size*2; /* one for k, ct_size for each type, ct_size for each second derivative of each type */ - rho_i = pvecback_sp_long[pba->index_bg_rho_b]; + /** - --> (c) loop over initial conditions */ - if (ppt->has_source_delta_b == _TRUE_) { + for (index_ic1 = 0; index_ic1 < psp->ic_size[index_md]; index_ic1++) { + for (index_ic2 = index_ic1; index_ic2 < psp->ic_size[index_md]; index_ic2++) { + index_ic1_ic2 = index_symmetric_matrix(index_ic1,index_ic2,psp->ic_size[index_md]); - delta_i = ppt->sources[index_md] - [index_ic * ppt->tp_size[index_md] + ppt->index_tp_delta_b] - [(index_tau-psp->ln_tau_size+ppt->tau_size) * ppt->k_size[index_md] + index_k]; + /* non-diagonal coefficients should be computed only if non-zero correlation */ + if (psp->is_non_zero[index_md][index_ic1_ic2] == _TRUE_) { - psp->matter_transfer[((index_tau*psp->ln_k_size + index_k) * psp->ic_size[index_md] + index_ic) * psp->tr_size + psp->index_tr_delta_b] = delta_i; + /* initialize error management flag */ + abort = _FALSE_; - delta_rho_tot += rho_i * delta_i; + /* beginning of parallel region */ - } +#pragma omp parallel \ + shared(ptr,ppm,index_md,psp,ppt,cl_integrand_num_columns,index_ic1,index_ic2,abort) \ + private(tstart,cl_integrand,primordial_pk,transfer_ic1,transfer_ic2,index_l,tstop) - rho_tot += rho_i; + { - if (ppt->has_source_theta_b == _TRUE_) { +#ifdef _OPENMP + tstart = omp_get_wtime(); +#endif - theta_i = ppt->sources[index_md] - [index_ic * ppt->tp_size[index_md] + ppt->index_tp_theta_b] - [(index_tau-psp->ln_tau_size+ppt->tau_size) * ppt->k_size[index_md] + index_k]; + class_alloc_parallel(cl_integrand, + ptr->q_size*cl_integrand_num_columns*sizeof(double), + psp->error_message); - psp->matter_transfer[((index_tau*psp->ln_k_size + index_k) * psp->ic_size[index_md] + index_ic) * psp->tr_size + psp->index_tr_theta_b] = theta_i; + class_alloc_parallel(primordial_pk, + psp->ic_ic_size[index_md]*sizeof(double), + psp->error_message); - rho_plus_p_theta_tot += rho_i * theta_i; + class_alloc_parallel(transfer_ic1, + ptr->tt_size[index_md]*sizeof(double), + psp->error_message); - } + class_alloc_parallel(transfer_ic2, + ptr->tt_size[index_md]*sizeof(double), + psp->error_message); - rho_plus_p_tot += rho_i; +#pragma omp for schedule (dynamic) - /* T_cdm(k,tau) */ + /** - ---> loop over l values defined in the transfer module. + For each l, compute the \f$ C_l\f$'s for all types (TT, TE, ...) + by convolving primordial spectra with transfer functions. + This elementary task is assigned to spectra_compute_cl() */ - if (pba->has_cdm == _TRUE_) { + for (index_l=0; index_l < ptr->l_size[index_md]; index_l++) { - rho_i = pvecback_sp_long[pba->index_bg_rho_cdm]; +#pragma omp flush(abort) - if (ppt->has_source_delta_cdm == _TRUE_) { + class_call_parallel(spectra_compute_cl(pba, + ppt, + ptr, + ppm, + psp, + index_md, + index_ic1, + index_ic2, + index_l, + cl_integrand_num_columns, + cl_integrand, + primordial_pk, + transfer_ic1, + transfer_ic2), + psp->error_message, + psp->error_message); - delta_i = ppt->sources[index_md] - [index_ic * ppt->tp_size[index_md] + ppt->index_tp_delta_cdm] - [(index_tau-psp->ln_tau_size+ppt->tau_size) * ppt->k_size[index_md] + index_k]; + } /* end of loop over l */ - psp->matter_transfer[((index_tau*psp->ln_k_size + index_k) * psp->ic_size[index_md] + index_ic) * psp->tr_size + psp->index_tr_delta_cdm] = delta_i; +#ifdef _OPENMP + tstop = omp_get_wtime(); + if (psp->spectra_verbose > 1) + printf("In %s: time spent in parallel region (loop over l's) = %e s for thread %d\n", + __func__,tstop-tstart,omp_get_thread_num()); +#endif + free(cl_integrand); - delta_rho_tot += rho_i * delta_i; + free(primordial_pk); - } + free(transfer_ic1); - rho_tot += rho_i; + free(transfer_ic2); - if (ppt->has_source_theta_cdm == _TRUE_) { + } /* end of parallel region */ - theta_i = ppt->sources[index_md] - [index_ic * ppt->tp_size[index_md] + ppt->index_tp_theta_cdm] - [(index_tau-psp->ln_tau_size+ppt->tau_size) * ppt->k_size[index_md] + index_k]; + if (abort == _TRUE_) return _FAILURE_; - psp->matter_transfer[((index_tau*psp->ln_k_size + index_k) * psp->ic_size[index_md] + index_ic) * psp->tr_size + psp->index_tr_theta_cdm] = theta_i; + } + else { - rho_plus_p_theta_tot += rho_i * theta_i; + /* set non-diagonal coefficients to zero if pair of ic's uncorrelated */ + for (index_l=0; index_l < ptr->l_size[index_md]; index_l++) { + for (index_ct=0; index_ctct_size; index_ct++) { + psp->cl[index_md] + [(index_l * psp->ic_ic_size[index_md] + index_ic1_ic2) * psp->ct_size + index_ct] + = 0.; + } } - - rho_plus_p_tot += rho_i; - } + } + } - /* T_dcdm(k,tau) */ + /** - --> (d) now that for a given mode, all possible \f$ C_l\f$'s have been computed, + compute second derivative of the array in which they are stored, + in view of spline interpolation. */ - if (pba->has_dcdm == _TRUE_) { + class_call(array_spline_table_lines(psp->l, + psp->l_size[index_md], + psp->cl[index_md], + psp->ic_ic_size[index_md]*psp->ct_size, + psp->ddcl[index_md], + _SPLINE_EST_DERIV_, + psp->error_message), + psp->error_message, + psp->error_message); + } - rho_i = pvecback_sp_long[pba->index_bg_rho_dcdm]; + return _SUCCESS_; - if (ppt->has_source_delta_dcdm == _TRUE_) { +} - delta_i = ppt->sources[index_md] - [index_ic * ppt->tp_size[index_md] + ppt->index_tp_delta_dcdm] - [(index_tau-psp->ln_tau_size+ppt->tau_size) * ppt->k_size[index_md] + index_k]; +/** + * This routine computes the \f$ C_l\f$'s for a given mode, pair of initial conditions + * and multipole, but for all types (TT, TE...), by convolving the + * transfer functions with the primordial spectra. + * + * @param pba Input: pointer to background structure + * @param ppt Input: pointer to perturbation structure + * @param ptr Input: pointer to transfers structure + * @param ppm Input: pointer to primordial structure + * @param psp Input/Output: pointer to spectra structure (result stored here) + * @param index_md Input: index of mode under consideration + * @param index_ic1 Input: index of first initial condition in the correlator + * @param index_ic2 Input: index of second initial condition in the correlator + * @param index_l Input: index of multipole under consideration + * @param cl_integrand_num_columns Input: number of columns in cl_integrand + * @param cl_integrand Input: an allocated workspace + * @param primordial_pk Input: table of primordial spectrum values + * @param transfer_ic1 Input: table of transfer function values for first initial condition + * @param transfer_ic2 Input: table of transfer function values for second initial condition + * @return the error status + */ - psp->matter_transfer[((index_tau*psp->ln_k_size + index_k) * psp->ic_size[index_md] + index_ic) * psp->tr_size + psp->index_tr_delta_dcdm] = delta_i; +int spectra_compute_cl( + struct background * pba, + struct perturbs * ppt, + struct transfers * ptr, + struct primordial * ppm, + struct spectra * psp, + int index_md, + int index_ic1, + int index_ic2, + int index_l, + int cl_integrand_num_columns, + double * cl_integrand, + double * primordial_pk, + double * transfer_ic1, + double * transfer_ic2 + ) { - delta_rho_tot += rho_i * delta_i; + int index_q; + int index_tt; + int index_ct; + int index_d1,index_d2; + double k; + double clvalue; + int index_ic1_ic2; + double transfer_ic1_temp=0.; + double transfer_ic2_temp=0.; + double * transfer_ic1_nc=NULL; + double * transfer_ic2_nc=NULL; + double factor; + int index_q_spline=0; - } + index_ic1_ic2 = index_symmetric_matrix(index_ic1,index_ic2,psp->ic_size[index_md]); - rho_tot += rho_i; + if (ppt->has_cl_number_count == _TRUE_) { + class_alloc(transfer_ic1_nc,psp->d_size*sizeof(double),psp->error_message); + class_alloc(transfer_ic2_nc,psp->d_size*sizeof(double),psp->error_message); + } - if (ppt->has_source_theta_dcdm == _TRUE_) { + for (index_q=0; index_q < ptr->q_size; index_q++) { - theta_i = ppt->sources[index_md] - [index_ic * ppt->tp_size[index_md] + ppt->index_tp_theta_dcdm] - [(index_tau-psp->ln_tau_size+ppt->tau_size) * ppt->k_size[index_md] + index_k]; + //q = ptr->q[index_q]; + k = ptr->k[index_md][index_q]; - psp->matter_transfer[((index_tau*psp->ln_k_size + index_k) * psp->ic_size[index_md] + index_ic) * psp->tr_size + psp->index_tr_theta_dcdm] = theta_i; + cl_integrand[index_q*cl_integrand_num_columns+0] = k; - rho_plus_p_theta_tot += rho_i * theta_i; + class_call(primordial_spectrum_at_k(ppm,index_md,linear,k,primordial_pk), + ppm->error_message, + psp->error_message); - } + /* above routine checks that k>0: no possible division by zero below */ - rho_plus_p_tot += rho_i; + for (index_tt=0; index_tt < ptr->tt_size[index_md]; index_tt++) { - } + transfer_ic1[index_tt] = + ptr->transfer[index_md] + [((index_ic1 * ptr->tt_size[index_md] + index_tt) + * ptr->l_size[index_md] + index_l) + * ptr->q_size + index_q]; - /* T_scf(k,tau) */ + if (index_ic1 == index_ic2) { + transfer_ic2[index_tt] = transfer_ic1[index_tt]; + } + else { + transfer_ic2[index_tt] = ptr->transfer[index_md] + [((index_ic2 * ptr->tt_size[index_md] + index_tt) + * ptr->l_size[index_md] + index_l) + * ptr->q_size + index_q]; + } + } - if (pba->has_scf == _TRUE_) { + /* define combinations of transfer functions */ - rho_i = pvecback_sp_long[pba->index_bg_rho_scf]; + if (ppt->has_cl_cmb_temperature == _TRUE_) { - if (ppt->has_source_delta_scf == _TRUE_) { + if (_scalars_) { - delta_i = ppt->sources[index_md] - [index_ic * ppt->tp_size[index_md] + ppt->index_tp_delta_scf] - [(index_tau-psp->ln_tau_size+ppt->tau_size) * ppt->k_size[index_md] + index_k]; + transfer_ic1_temp = transfer_ic1[ptr->index_tt_t0] + transfer_ic1[ptr->index_tt_t1] + transfer_ic1[ptr->index_tt_t2]; + transfer_ic2_temp = transfer_ic2[ptr->index_tt_t0] + transfer_ic2[ptr->index_tt_t1] + transfer_ic2[ptr->index_tt_t2]; - psp->matter_transfer[((index_tau*psp->ln_k_size + index_k) * psp->ic_size[index_md] + index_ic) * psp->tr_size + psp->index_tr_delta_scf] = delta_i; + } - delta_rho_tot += rho_i * delta_i; + if (_vectors_) { - } + transfer_ic1_temp = transfer_ic1[ptr->index_tt_t1] + transfer_ic1[ptr->index_tt_t2]; + transfer_ic2_temp = transfer_ic2[ptr->index_tt_t1] + transfer_ic2[ptr->index_tt_t2]; - rho_tot += rho_i; + } - if (ppt->has_source_theta_scf == _TRUE_) { + if (_tensors_) { - theta_i = ppt->sources[index_md] - [index_ic * ppt->tp_size[index_md] + ppt->index_tp_theta_scf] - [(index_tau-psp->ln_tau_size+ppt->tau_size) * ppt->k_size[index_md] + index_k]; + transfer_ic1_temp = transfer_ic1[ptr->index_tt_t2]; + transfer_ic2_temp = transfer_ic2[ptr->index_tt_t2]; - psp->matter_transfer[((index_tau*psp->ln_k_size + index_k) * psp->ic_size[index_md] + index_ic) * psp->tr_size + psp->index_tr_theta_scf] = theta_i; + } + } - rho_plus_p_theta_tot += (rho_i + pvecback_sp_long[pba->index_bg_p_scf]) * theta_i; + if (ppt->has_cl_number_count == _TRUE_) { - } + for (index_d1=0; index_d1d_size; index_d1++) { - rho_plus_p_tot += (rho_i + pvecback_sp_long[pba->index_bg_p_scf]); + transfer_ic1_nc[index_d1] = 0.; + transfer_ic2_nc[index_d1] = 0.; + if (ppt->has_nc_density == _TRUE_) { + transfer_ic1_nc[index_d1] += transfer_ic1[ptr->index_tt_density+index_d1]; + transfer_ic2_nc[index_d1] += transfer_ic2[ptr->index_tt_density+index_d1]; } + if (ppt->has_nc_rsd == _TRUE_) { + transfer_ic1_nc[index_d1] + += transfer_ic1[ptr->index_tt_rsd+index_d1] + + transfer_ic1[ptr->index_tt_d0+index_d1] + + transfer_ic1[ptr->index_tt_d1+index_d1]; + transfer_ic2_nc[index_d1] + += transfer_ic2[ptr->index_tt_rsd+index_d1] + + transfer_ic2[ptr->index_tt_d0+index_d1] + + transfer_ic2[ptr->index_tt_d1+index_d1]; + } - /* T_fld(k,tau) */ + if (ppt->has_nc_lens == _TRUE_) { + transfer_ic1_nc[index_d1] += + psp->l[index_l]*(psp->l[index_l]+1.)*transfer_ic1[ptr->index_tt_nc_lens+index_d1]; + transfer_ic2_nc[index_d1] += + psp->l[index_l]*(psp->l[index_l]+1.)*transfer_ic2[ptr->index_tt_nc_lens+index_d1]; + } - if (pba->has_fld == _TRUE_) { + if (ppt->has_nc_gr == _TRUE_) { + transfer_ic1_nc[index_d1] + += transfer_ic1[ptr->index_tt_nc_g1+index_d1] + + transfer_ic1[ptr->index_tt_nc_g2+index_d1] + + transfer_ic1[ptr->index_tt_nc_g3+index_d1] + + transfer_ic1[ptr->index_tt_nc_g4+index_d1] + + transfer_ic1[ptr->index_tt_nc_g5+index_d1]; + transfer_ic2_nc[index_d1] + += transfer_ic2[ptr->index_tt_nc_g1+index_d1] + + transfer_ic2[ptr->index_tt_nc_g2+index_d1] + + transfer_ic2[ptr->index_tt_nc_g3+index_d1] + + transfer_ic2[ptr->index_tt_nc_g4+index_d1] + + transfer_ic2[ptr->index_tt_nc_g5+index_d1]; + } - rho_i = pvecback_sp_long[pba->index_bg_rho_fld]; + } + } - if (ppt->has_source_delta_fld == _TRUE_) { + /* integrand of Cl's */ - delta_i = ppt->sources[index_md] - [index_ic * ppt->tp_size[index_md] + ppt->index_tp_delta_fld] - [(index_tau-psp->ln_tau_size+ppt->tau_size) * ppt->k_size[index_md] + index_k]; + /* note: we must integrate - psp->matter_transfer[((index_tau*psp->ln_k_size + index_k) * psp->ic_size[index_md] + index_ic) * psp->tr_size + psp->index_tr_delta_fld] = delta_i; + C_l = int [4 pi dk/k calP(k) Delta1_l(q) Delta2_l(q)] - delta_rho_tot += rho_i * delta_i; + where calP(k) is the dimensionless + power spectrum equal to a constant in the scale-invariant case, + and to P(k) = A_s k^(ns-1) otherwise and q=sqrt(k2+K) (scalars) + or sqrt(k2+2K) (vectors) or sqrt(k2+3K) (tensors) - } + In the literature, people often rewrite the integral in terms + of q and absorb the Jacobian of the change of variables in a redefinition of the primodial + spectrum. Let us illustrate this for scalars: - rho_tot += rho_i; + dk/k = kdk/k2 = qdq/k2 = dq/q * (q/k)^2 = dq/q * [q2/(q2-K)] = q2dq * 1/[q(q2-K)] - if (ppt->has_source_theta_fld == _TRUE_) { + This factor 1/[q(q2-K)] is commonly absorbed in the definition of calP. Then one would have - theta_i = ppt->sources[index_md] - [index_ic * ppt->tp_size[index_md] + ppt->index_tp_theta_fld] - [(index_tau-psp->ln_tau_size+ppt->tau_size) * ppt->k_size[index_md] + index_k]; + C_l = int [4 pi q2 dq {A_s k^(ns-1)/[q(q2-K)]} Delta1_l(q) Delta2_l(q)] - psp->matter_transfer[((index_tau*psp->ln_k_size + index_k) * psp->ic_size[index_md] + index_ic) * psp->tr_size + psp->index_tr_theta_fld] = theta_i; + Sometimes in the literature, the factor (k2-3K)=(q2-4K) present + in the initial conditions of scalar transfer functions (if + normalized to curvature R=1) is also absorbed in the definition + of the power spectrum. Then the curvature power spectrum reads - rho_plus_p_theta_tot += (1. + pba->w0_fld + pba->wa_fld * (1. - pvecback_sp_long[pba->index_bg_a] / pba->a_today)) * rho_i * theta_i; + calP = (q2-4K)/[q(q2-K)] * (k/k)^ns - } + In CLASS we prefer to define calP = (k/k)^ns like in the flat + case, to have the factor (q2-4K) in the initialk conditions, + and the factor 1/[q(q2-K)] doesn't need to be there since we + integrate over dk/k. - rho_plus_p_tot += (1. + pba->w0_fld + pba->wa_fld * (1. - pvecback_sp_long[pba->index_bg_a] / pba->a_today)) * rho_i; + For tensors, the change of variable described above gives a slightly different result: - } + dk/k = kdk/k2 = qdq/k2 = dq/q * (q/k)^2 = dq/q * [q2/(q2-3K)] = q2dq * 1/[q(q2-3K)] - /* T_ur(k,tau) */ + But for tensors there are extra curvature-related correction factors to + take into account. See the comments in the perturbation module, + related to initial conditions for tensors. - if (pba->has_ur == _TRUE_) { + */ - rho_i = pvecback_sp_long[pba->index_bg_rho_ur]; + factor = 4. * _PI_ / k; - if (ppt->has_source_delta_ur == _TRUE_) { + if (psp->has_tt == _TRUE_) + cl_integrand[index_q*cl_integrand_num_columns+1+psp->index_ct_tt]= + primordial_pk[index_ic1_ic2] + * transfer_ic1_temp + * transfer_ic2_temp + * factor; - delta_i = ppt->sources[index_md] - [index_ic * ppt->tp_size[index_md] + ppt->index_tp_delta_ur] - [(index_tau-psp->ln_tau_size+ppt->tau_size) * ppt->k_size[index_md] + index_k]; + if (psp->has_ee == _TRUE_) + cl_integrand[index_q*cl_integrand_num_columns+1+psp->index_ct_ee]= + primordial_pk[index_ic1_ic2] + * transfer_ic1[ptr->index_tt_e] + * transfer_ic2[ptr->index_tt_e] + * factor; - psp->matter_transfer[((index_tau*psp->ln_k_size + index_k) * psp->ic_size[index_md] + index_ic) * psp->tr_size + psp->index_tr_delta_ur] = delta_i; + if (psp->has_te == _TRUE_) + cl_integrand[index_q*cl_integrand_num_columns+1+psp->index_ct_te]= + primordial_pk[index_ic1_ic2] + * 0.5*(transfer_ic1_temp * transfer_ic2[ptr->index_tt_e] + + transfer_ic1[ptr->index_tt_e] * transfer_ic2_temp) + * factor; - delta_rho_tot += rho_i * delta_i; + if (_tensors_ && (psp->has_bb == _TRUE_)) + cl_integrand[index_q*cl_integrand_num_columns+1+psp->index_ct_bb]= + primordial_pk[index_ic1_ic2] + * transfer_ic1[ptr->index_tt_b] + * transfer_ic2[ptr->index_tt_b] + * factor; - } + if (_scalars_ && (psp->has_pp == _TRUE_)) + cl_integrand[index_q*cl_integrand_num_columns+1+psp->index_ct_pp]= + primordial_pk[index_ic1_ic2] + * transfer_ic1[ptr->index_tt_lcmb] + * transfer_ic2[ptr->index_tt_lcmb] + * factor; - rho_tot += rho_i; + if (_scalars_ && (psp->has_tp == _TRUE_)) + cl_integrand[index_q*cl_integrand_num_columns+1+psp->index_ct_tp]= + primordial_pk[index_ic1_ic2] + * 0.5*(transfer_ic1_temp * transfer_ic2[ptr->index_tt_lcmb] + + transfer_ic1[ptr->index_tt_lcmb] * transfer_ic2_temp) + * factor; - if (ppt->has_source_theta_ur == _TRUE_) { + if (_scalars_ && (psp->has_ep == _TRUE_)) + cl_integrand[index_q*cl_integrand_num_columns+1+psp->index_ct_ep]= + primordial_pk[index_ic1_ic2] + * 0.5*(transfer_ic1[ptr->index_tt_e] * transfer_ic2[ptr->index_tt_lcmb] + + transfer_ic1[ptr->index_tt_lcmb] * transfer_ic2[ptr->index_tt_e]) + * factor; - theta_i = ppt->sources[index_md] - [index_ic * ppt->tp_size[index_md] + ppt->index_tp_theta_ur] - [(index_tau-psp->ln_tau_size+ppt->tau_size) * ppt->k_size[index_md] + index_k]; + if (_scalars_ && (psp->has_dd == _TRUE_)) { + index_ct=0; + for (index_d1=0; index_d1d_size; index_d1++) { + for (index_d2=index_d1; index_d2<=MIN(index_d1+psp->non_diag,psp->d_size-1); index_d2++) { + cl_integrand[index_q*cl_integrand_num_columns+1+psp->index_ct_dd+index_ct]= + primordial_pk[index_ic1_ic2] + * transfer_ic1_nc[index_d1] + * transfer_ic2_nc[index_d2] + * factor; + index_ct++; + } + } + } - psp->matter_transfer[((index_tau*psp->ln_k_size + index_k) * psp->ic_size[index_md] + index_ic) * psp->tr_size + psp->index_tr_theta_ur] = theta_i; + if (_scalars_ && (psp->has_td == _TRUE_)) { + for (index_d1=0; index_d1d_size; index_d1++) { + cl_integrand[index_q*cl_integrand_num_columns+1+psp->index_ct_td+index_d1]= + primordial_pk[index_ic1_ic2] + * 0.5*(transfer_ic1_temp * transfer_ic2_nc[index_d1] + + transfer_ic1_nc[index_d1] * transfer_ic2_temp) + * factor; + } + } - rho_plus_p_theta_tot += 4./3. * rho_i * theta_i; + if (_scalars_ && (psp->has_pd == _TRUE_)) { + for (index_d1=0; index_d1d_size; index_d1++) { + cl_integrand[index_q*cl_integrand_num_columns+1+psp->index_ct_pd+index_d1]= + primordial_pk[index_ic1_ic2] + * 0.5*(transfer_ic1[ptr->index_tt_lcmb] * transfer_ic2_nc[index_d1] + + transfer_ic1_nc[index_d1] * transfer_ic2[ptr->index_tt_lcmb]) + * factor; + } + } - } + if (_scalars_ && (psp->has_ll == _TRUE_)) { + index_ct=0; + for (index_d1=0; index_d1d_size; index_d1++) { + for (index_d2=index_d1; index_d2<=MIN(index_d1+psp->non_diag,psp->d_size-1); index_d2++) { + cl_integrand[index_q*cl_integrand_num_columns+1+psp->index_ct_ll+index_ct]= + primordial_pk[index_ic1_ic2] + * transfer_ic1[ptr->index_tt_lensing+index_d1] + * transfer_ic2[ptr->index_tt_lensing+index_d2] + * factor; + index_ct++; + } + } + } - rho_plus_p_tot += 4./3. * rho_i; + if (_scalars_ && (psp->has_tl == _TRUE_)) { + for (index_d1=0; index_d1d_size; index_d1++) { + cl_integrand[index_q*cl_integrand_num_columns+1+psp->index_ct_tl+index_d1]= + primordial_pk[index_ic1_ic2] + * 0.5*(transfer_ic1_temp * transfer_ic2[ptr->index_tt_lensing+index_d1] + + transfer_ic1[ptr->index_tt_lensing+index_d1] * transfer_ic2_temp) + * factor; + } + } + if (_scalars_ && (psp->has_dl == _TRUE_)) { + index_ct=0; + for (index_d1=0; index_d1d_size; index_d1++) { + for (index_d2=MAX(index_d1-psp->non_diag,0); index_d2<=MIN(index_d1+psp->non_diag,psp->d_size-1); index_d2++) { + cl_integrand[index_q*cl_integrand_num_columns+1+psp->index_ct_dl+index_ct]= + primordial_pk[index_ic1_ic2] + * transfer_ic1_nc[index_d1] * transfer_ic2[ptr->index_tt_lensing+index_d2] + * factor; + index_ct++; } + } + } + } - /* T_dr(k,tau) */ - - if (pba->has_dr == _TRUE_) { + for (index_ct=0; index_ctct_size; index_ct++) { - rho_i = pvecback_sp_long[pba->index_bg_rho_dr]; + /* treat null spectra (C_l^BB of scalars, C_l^pp of tensors, etc. */ - if (ppt->has_source_delta_dr == _TRUE_) { + if ((_scalars_ && (psp->has_bb == _TRUE_) && (index_ct == psp->index_ct_bb)) || + (_tensors_ && (psp->has_pp == _TRUE_) && (index_ct == psp->index_ct_pp)) || + (_tensors_ && (psp->has_tp == _TRUE_) && (index_ct == psp->index_ct_tp)) || + (_tensors_ && (psp->has_ep == _TRUE_) && (index_ct == psp->index_ct_ep)) || + (_tensors_ && (psp->has_dd == _TRUE_) && (index_ct == psp->index_ct_dd)) || + (_tensors_ && (psp->has_td == _TRUE_) && (index_ct == psp->index_ct_td)) || + (_tensors_ && (psp->has_pd == _TRUE_) && (index_ct == psp->index_ct_pd)) || + (_tensors_ && (psp->has_ll == _TRUE_) && (index_ct == psp->index_ct_ll)) || + (_tensors_ && (psp->has_tl == _TRUE_) && (index_ct == psp->index_ct_tl)) || + (_tensors_ && (psp->has_dl == _TRUE_) && (index_ct == psp->index_ct_dl)) + ) { - delta_i = ppt->sources[index_md] - [index_ic * ppt->tp_size[index_md] + ppt->index_tp_delta_dr] - [(index_tau-psp->ln_tau_size+ppt->tau_size) * ppt->k_size[index_md] + index_k]; + psp->cl[index_md] + [(index_l * psp->ic_ic_size[index_md] + index_ic1_ic2) * psp->ct_size + index_ct] = 0.; - psp->matter_transfer[((index_tau*psp->ln_k_size + index_k) * psp->ic_size[index_md] + index_ic) * psp->tr_size + psp->index_tr_delta_dr] = delta_i; + } + /* for non-zero spectra, integrate over q */ + else { - delta_rho_tot += rho_i * delta_i; + /* spline the integrand over the whole range of k's */ - } + class_call(array_spline(cl_integrand, + cl_integrand_num_columns, + ptr->q_size, + 0, + 1+index_ct, + 1+psp->ct_size+index_ct, + _SPLINE_EST_DERIV_, + psp->error_message), + psp->error_message, + psp->error_message); - rho_tot += rho_i; + /* Technical point: we will now do a spline integral over the + whole range of k's, excepted in the closed (K>0) case. In + that case, it is a bad idea to spline over the values of k + corresponding to nuindex_q_flat_approximation, to tell the integration + routine that below this index, it should treat the integral + as a trapezoidal one. For testing, one is free to set + index_q_spline to 0, to enforce spline integration + everywhere, or to (ptr->q_size-1), to enforce trapezoidal + integration everywhere. */ - if (ppt->has_source_theta_dr == _TRUE_) { + if (pba->sgnK == 1) { + index_q_spline = ptr->index_q_flat_approximation; + } - theta_i = ppt->sources[index_md] - [index_ic * ppt->tp_size[index_md] + ppt->index_tp_theta_dr] - [(index_tau-psp->ln_tau_size+ppt->tau_size) * ppt->k_size[index_md] + index_k]; + class_call(array_integrate_all_trapzd_or_spline(cl_integrand, + cl_integrand_num_columns, + ptr->q_size, + index_q_spline, + 0, + 1+index_ct, + 1+psp->ct_size+index_ct, + &clvalue, + psp->error_message), + psp->error_message, + psp->error_message); - psp->matter_transfer[((index_tau*psp->ln_k_size + index_k) * psp->ic_size[index_md] + index_ic) * psp->tr_size + psp->index_tr_theta_dr] = theta_i; + /* in the closed case, instead of an integral, we have a + discrete sum. In practice, this does not matter: the previous + routine does give a correct approximation of the discrete + sum, both in the trapezoidal and spline regions. The only + error comes from the first point: the previous routine + assumes a weight for the first point which is too small + compared to what it would be in the an actual discrete + sum. The line below correct this problem in an exact way. + */ - rho_plus_p_theta_tot += 4./3. * rho_i * theta_i; + if (pba->sgnK == 1) { + clvalue += cl_integrand[1+index_ct] * ptr->q[0]/ptr->k[0][0]*sqrt(pba->K)/2.; + } - } + /* we have the correct C_l now. We can store it in the transfer structure. */ - rho_plus_p_tot += 4./3. * rho_i; + psp->cl[index_md] + [(index_l * psp->ic_ic_size[index_md] + index_ic1_ic2) * psp->ct_size + index_ct] + = clvalue; - } + } + } - /* T_ncdm_i(k,tau) */ + if (ppt->has_cl_number_count == _TRUE_) { + free(transfer_ic1_nc); + free(transfer_ic2_nc); + } - if (pba->has_ncdm == _TRUE_) { + return _SUCCESS_; - for (n_ncdm=0; n_ncdm < pba->N_ncdm; n_ncdm++) { +} - rho_i = pvecback_sp_long[pba->index_bg_rho_ncdm1+n_ncdm]; + /* deprecated functions (since v2.8) */ - if (ppt->has_source_delta_ncdm == _TRUE_) { +/** + * Matter power spectrum for arbitrary redshift and for all initial conditions. + * + * This function is deprecated since v2.8. Try using nonlinear_pk_at_z() instead. + * + * @param pba Input: pointer to background structure (used for converting z into tau) + * @param psp Input: pointer to spectra structure (containing pre-computed table) + * @param mode Input: linear or logarithmic + * @param z Input: redshift + * @param output_tot Output: total matter power spectrum P(k) in \f$ Mpc^3 \f$ (linear mode), or its logarithms (logarithmic mode) + * @param output_ic Output: for each pair of initial conditions, matter power spectra P(k) in \f$ Mpc^3 \f$ (linear mode), or their logarithms and cross-correlation angles (logarithmic mode) + * @param output_cb_tot Output: CDM+baryon power spectrum P_cb(k) in \f$ Mpc^3 \f$ (linear mode), or its logarithms (logarithmic mode) + * @param output_cb_ic Output: for each pair of initial conditions, CDM+baryon power spectra P_cb(k) in \f$ Mpc^3 \f$ (linear mode), or their logarithms and cross-correlation angles (logarithmic mode) + * @return the error status + */ - delta_i = ppt->sources[index_md] - [index_ic * ppt->tp_size[index_md] + ppt->index_tp_delta_ncdm1+n_ncdm] - [(index_tau-psp->ln_tau_size+ppt->tau_size) * ppt->k_size[index_md] + index_k]; +int spectra_pk_at_z( + struct background * pba, + struct spectra * psp, + enum linear_or_logarithmic mode, + double z, + double * output_tot, /* array with argument output_tot[index_k] (must be already allocated) */ + double * output_ic, /* array with argument output_tot[index_k * psp->ic_ic_size[index_md] + index_ic1_ic2] (must be already allocated only if more than one initial condition) */ + double * output_cb_tot, /* same as output_tot for the baryon+CDM only */ + double * output_cb_ic /* same as output_ic for the baryon+CDM only */ + ) { - psp->matter_transfer[((index_tau*psp->ln_k_size + index_k) * psp->ic_size[index_md] + index_ic) * psp->tr_size + psp->index_tr_delta_ncdm1+n_ncdm] = delta_i; + fprintf(stderr," -> [WARNING:] You are calling the function spectra_pk_at_z() which is deprecated since v2.8. Try using nonlinear_pk_at_z() instead.\n"); - delta_rho_tot += rho_i * delta_i; + class_call(nonlinear_pks_at_z( + pba, + psp->pnl, + mode, + pk_linear, + z, + output_tot, + output_ic, + output_cb_tot, + output_cb_ic + ), + psp->pnl->error_message, + psp->error_message); - } + return _SUCCESS_; - rho_tot += rho_i; +} - if (ppt->has_source_theta_ncdm == _TRUE_) { +/** + * Matter power spectrum for arbitrary wavenumber, redshift and initial condition. + * + * This function is deprecated since v2.8. Try using nonlinear_pk_linear_at_k_and_z() instead. + * + * @param pba Input: pointer to background structure (used for converting z into tau) + * @param ppm Input: pointer to primordial structure (used only in the case 0 < k < kmin) + * @param psp Input: pointer to spectra structure (containing pre-computed table) + * @param k Input: wavenumber in 1/Mpc + * @param z Input: redshift + * @param pk_tot Output: total matter power spectrum P(k) in \f$ Mpc^3 \f$ + * @param pk_ic Output: for each pair of initial conditions, matter power spectra P(k) in \f$ Mpc^3\f$ + * @param pk_cb_tot Output: b+CDM power spectrum P(k) in \f$ Mpc^3 \f$ + * @param pk_cb_ic Output: for each pair of initial conditions, b+CDM power spectra P(k) in \f$ Mpc^3\f$ + * @return the error status + */ - theta_i = ppt->sources[index_md] - [index_ic * ppt->tp_size[index_md] + ppt->index_tp_theta_ncdm1+n_ncdm] - [(index_tau-psp->ln_tau_size+ppt->tau_size) * ppt->k_size[index_md] + index_k]; +int spectra_pk_at_k_and_z( + struct background * pba, + struct primordial * ppm, + struct spectra * psp, + double k, + double z, + double * pk_tot, /* pointer to a single number (must be already allocated) */ + double * pk_ic, /* array of argument pk_ic[index_ic1_ic2] + (must be already allocated only if several initial conditions) */ + double * pk_cb_tot, /* same as pk_tot for baryon+CDM part only */ + double * pk_cb_ic /* same as pk_ic for baryon+CDM part only */ + ) { - psp->matter_transfer[((index_tau*psp->ln_k_size + index_k) * psp->ic_size[index_md] + index_ic) * psp->tr_size + psp->index_tr_theta_ncdm1+n_ncdm] = theta_i; + fprintf(stderr," -> [WARNING:] You are calling the function spectra_pk_at_k_and_z() which is deprecated since v2.8. Try using nonlinear_pk_linear_at_k_and_z() instead.\n"); - rho_plus_p_theta_tot += (rho_i + pvecback_sp_long[pba->index_bg_p_ncdm1+n_ncdm]) * theta_i; + class_call(nonlinear_pks_at_k_and_z(pba, + ppm, + psp->pnl, + pk_linear, + k, + z, + pk_tot, + pk_ic, + pk_cb_tot, + pk_cb_ic), + psp->pnl->error_message, + psp->error_message); - } + return _SUCCESS_; +} - rho_plus_p_tot += (rho_i + pvecback_sp_long[pba->index_bg_p_ncdm1+n_ncdm]); +/** + * Non-linear total matter power spectrum for arbitrary redshift. + * + * This function is deprecated since v2.8. Try using nonlinear_pk_at_z() instead. + * + * @param pba Input: pointer to background structure (used for converting z into tau) + * @param psp Input: pointer to spectra structure (containing pre-computed table) + * @param mode Input: linear or logarithmic + * @param z Input: redshift + * @param output_tot Output: total matter power spectrum P(k) in \f$ Mpc^3\f$ (linear mode), or its logarithms (logarithmic mode) + * @param output_cb_tot Output: b+CDM power spectrum P(k) in \f$ Mpc^3\f$ (linear mode), or its logarithms (logarithmic mode) + * @return the error status + */ - } +int spectra_pk_nl_at_z( + struct background * pba, + struct spectra * psp, + enum linear_or_logarithmic mode, + double z, + double * output_tot, /* array with argument output_tot[index_k] (must be already allocated) */ + double * output_cb_tot + ) { - } + fprintf(stderr," -> [WARNING:] You are calling the function spectra_pk_nl_at_z() which is deprecated since v2.8. Try using nonlinear_pk_at_z() instead.\n"); - if (ppt->has_source_phi == _TRUE_) { + class_call(nonlinear_pks_at_z(pba, + psp->pnl, + mode, + pk_nonlinear, + z, + output_tot, + NULL, + output_cb_tot, + NULL + ), + psp->pnl->error_message, + psp->error_message); - psp->matter_transfer[((index_tau*psp->ln_k_size + index_k) * psp->ic_size[index_md] + index_ic) * psp->tr_size + psp->index_tr_phi] = ppt->sources[index_md] - [index_ic * ppt->tp_size[index_md] + ppt->index_tp_phi] - [(index_tau-psp->ln_tau_size+ppt->tau_size) * ppt->k_size[index_md] + index_k]; + return _SUCCESS_; - } +} - if (ppt->has_source_psi == _TRUE_) { +/** + * Non-linear total matter power spectrum for arbitrary wavenumber and redshift. + * + * This function is deprecated since v2.8. Try using nonlinear_pk_at_k_and_z() instead. + * + * @param pba Input: pointer to background structure (used for converting z into tau) + * @param ppm Input: pointer to primordial structure (used only in the case 0 < k < kmin) + * @param psp Input: pointer to spectra structure (containing pre-computed table) + * @param k Input: wavenumber in 1/Mpc + * @param z Input: redshift + * @param pk_tot Output: total matter power spectrum P(k) in \f$ Mpc^3\f$ + * @param pk_cb_tot Output: b+CDM power spectrum P(k) in \f$ Mpc^3\f$ + * @return the error status + */ - psp->matter_transfer[((index_tau*psp->ln_k_size + index_k) * psp->ic_size[index_md] + index_ic) * psp->tr_size + psp->index_tr_psi] = ppt->sources[index_md] - [index_ic * ppt->tp_size[index_md] + ppt->index_tp_psi] - [(index_tau-psp->ln_tau_size+ppt->tau_size) * ppt->k_size[index_md] + index_k]; +int spectra_pk_nl_at_k_and_z( + struct background * pba, + struct primordial * ppm, + struct spectra * psp, + double k, + double z, + double * pk_tot, /* pointer to a single number (must be already allocated) */ + double * pk_cb_tot /* same as pk_tot for baryon+CDM only */ + ) { - } + fprintf(stderr," -> [WARNING:] You are calling the function spectra_pk_nl_at_k_and_z() which is deprecated since v2.8. Try using nonlinear_pk_at_k_and_z() instead.\n"); - /* could include homogeneous component in rho_tot if uncommented (leave commented to match CMBFAST/CAMB definition) */ + class_call(nonlinear_pks_at_k_and_z(pba, + ppm, + psp->pnl, + pk_nonlinear, + k, + z, + pk_tot, + NULL, + pk_cb_tot, + NULL + ), + psp->pnl->error_message, + psp->error_message); - /* if (pba->has_lambda == _TRUE_) { */ + return _SUCCESS_; - /* rho_i = pvecback_sp_long[pba->index_bg_rho_lambda]; */ +} - /* rho_tot += rho_i; */ - /* } */ +/** + * Return the P(k,z) for a grid of (k_i,z_j) passed in input, + * for all available pk types (_m, _cb), + * either linear or nonlinear depending on input. + * + * This function is deprecated since v2.8. Try using nonlinear_pks_at_kvec_and_zvec() instead. + * + * @param pba Input: pointer to background structure + * @param psp Input: pointer to spectra structure + * @param kvec Input: array of wavenumbers in ascending order (in 1/Mpc) + * @param kvec_size Input: size of array of wavenumbers + * @param zvec Input: array of redshifts in arbitrary order + * @param zvec_size Input: size of array of redshifts + * @param pk_tot_out Output: P(k_i,z_j) for total matter (if available) in Mpc**3 + * @param pk_cb_tot_out Output: P_cb(k_i,z_j) for cdm+baryons (if available) in Mpc**3 + * @param nonlinear Input: _TRUE_ or _FALSE_ (to output nonlinear or linear P(k,z)) + * @return the error status + */ - /* T_tot(k,tau) */ +int spectra_fast_pk_at_kvec_and_zvec( + struct background * pba, + struct spectra * psp, + double * kvec, + int kvec_size, + double * zvec, + int zvec_size, + double * pk_tot_out, // pk_tot_out[index_zvec*kvec_size+index_kvec], + // already allocated + //(or NULL if user knows there is no _m output) + double * pk_cb_tot_out, // idem + int nonlinear + ) { + enum pk_outputs pk_output; + + fprintf(stderr," -> [WARNING:] You are calling the function spectra_fast_pks_at_kvec_and_zvec() which is deprecated since v2.8. Try using nonlinear_pk_at_kvec_and_zvec() instead.\n"); + + if (nonlinear == _TRUE_) + pk_output = pk_nonlinear; + else + pk_output = pk_linear; + + class_call(nonlinear_pks_at_kvec_and_zvec( + pba, + psp->pnl, + pk_output, + kvec, + kvec_size, + zvec, + zvec_size, + pk_tot_out, + pk_cb_tot_out), + psp->pnl->error_message, + psp->error_message); - if (ppt->has_density_transfers == _TRUE_) { + return _SUCCESS_; +} - psp->matter_transfer[((index_tau*psp->ln_k_size + index_k) * psp->ic_size[index_md] + index_ic) * psp->tr_size + psp->index_tr_delta_tot] = delta_rho_tot/rho_tot; +/** + * This routine computes sigma(R) given P(k) for total matter power + * spectrum (does not check that k_max is large enough) + * + * This function is deprecated since v2.8. Try using nonlinear_sigmas_at_z() instead. + * + * @param pba Input: pointer to background structure + * @param ppm Input: pointer to primordial structure + * @param psp Input: pointer to spectra structure + * @param R Input: radius in Mpc + * @param z Input: redshift + * @param sigma Output: variance in a sphere of radius R (dimensionless) + * @return the error status + */ - } +int spectra_sigma( + struct background * pba, + struct primordial * ppm, + struct spectra * psp, + double R, + double z, + double * sigma + ) { - if (ppt->has_velocity_transfers == _TRUE_) { + fprintf(stderr," -> [WARNING:] You are calling the function spectra_sigma() which is deprecated since v2.8. Try using nonlinear_sigmas_at_z() instead.\n"); - psp->matter_transfer[((index_tau*psp->ln_k_size + index_k) * psp->ic_size[index_md] + index_ic) * psp->tr_size + psp->index_tr_theta_tot] = rho_plus_p_theta_tot/rho_plus_p_tot; + if (psp->pnl->has_pk_m) { - } + class_call(nonlinear_sigma_at_z(pba, + psp->pnl, + R, + z, + psp->pnl->index_pk_m, + 80., // hardcoded, yes, but the function is deprecated... + sigma), + psp->pnl->error_message, + psp->error_message); - } - } } - /**- if interpolation of \f$ P(k,\tau)\f$ will be needed (as a function of tau), - compute array of second derivatives in view of spline interpolation */ - - if (psp->ln_tau_size > 1) { + return _SUCCESS_; +} - class_alloc(psp->ddmatter_transfer,sizeof(double)*psp->ln_tau_size*psp->ln_k_size*psp->ic_size[index_md]*psp->tr_size,psp->error_message); +/** + * This routine computes sigma(R) given P(k) for baryon+cdm power + * spectrum (does not check that k_max is large enough) + * + * This function is deprecated since v2.8. Try using nonlinear_sigmas_at_z() instead. + * + * @param pba Input: pointer to background structure + * @param ppm Input: pointer to primordial structure + * @param psp Input: pointer to spectra structure + * @param R Input: radius in Mpc + * @param z Input: redshift + * @param sigma_cb Output: variance in a sphere of radius R (dimensionless) + * @return the error status + */ - class_call(array_spline_table_lines(psp->ln_tau, - psp->ln_tau_size, - psp->matter_transfer, - psp->ic_size[index_md]*psp->ln_k_size*psp->tr_size, - psp->ddmatter_transfer, - _SPLINE_EST_DERIV_, - psp->error_message), - psp->error_message, +int spectra_sigma_cb( + struct background * pba, + struct primordial * ppm, + struct spectra * psp, + double R, + double z, + double * sigma_cb + ) { + + fprintf(stderr," -> [WARNING:] You are calling the function spectra_sigma_cb() which is deprecated since v2.8. Try using nonlinear_sigmas_at_z() instead.\n"); + + if (psp->pnl->has_pk_cb) { + + class_call(nonlinear_sigma_at_z(pba, + psp->pnl, + R, + z, + psp->pnl->index_pk_cb, + 80., // hardcoded, yes, but the function is deprecated... + sigma_cb), + psp->pnl->error_message, psp->error_message); - } - free (pvecback_sp_long); - return _SUCCESS_; } -int spectra_output_tk_titles(struct background *pba, - struct perturbs *ppt, - enum file_format output_format, - char titles[_MAXTITLESTRINGLENGTH_] - ){ - int n_ncdm; - char tmp[40]; - - if (output_format == class_format) { - class_store_columntitle(titles,"k (h/Mpc)",_TRUE_); - if (ppt->has_density_transfers == _TRUE_) { - class_store_columntitle(titles,"d_g",_TRUE_); - class_store_columntitle(titles,"d_b",_TRUE_); - class_store_columntitle(titles,"d_cdm",pba->has_cdm); - class_store_columntitle(titles,"d_fld",pba->has_fld); - class_store_columntitle(titles,"d_ur",pba->has_ur); - if (pba->has_ncdm == _TRUE_) { - for (n_ncdm=0; n_ncdm < pba->N_ncdm; n_ncdm++) { - sprintf(tmp,"d_ncdm[%d]",n_ncdm); - class_store_columntitle(titles,tmp,_TRUE_); - } - } - class_store_columntitle(titles,"d_dcdm",pba->has_dcdm); - class_store_columntitle(titles,"d_dr",pba->has_dr); - class_store_columntitle(titles,"d_scf",pba->has_scf); - class_store_columntitle(titles,"d_tot",_TRUE_); - class_store_columntitle(titles,"phi",ppt->has_source_phi); - class_store_columntitle(titles,"psi",ppt->has_source_psi); - } - if (ppt->has_velocity_transfers == _TRUE_) { - class_store_columntitle(titles,"t_g",_TRUE_); - class_store_columntitle(titles,"t_b",_TRUE_); - class_store_columntitle(titles,"t_cdm",((pba->has_cdm == _TRUE_) && (ppt->gauge != synchronous))); - class_store_columntitle(titles,"t_fld",pba->has_fld); - class_store_columntitle(titles,"t_ur",pba->has_ur); - if (pba->has_ncdm == _TRUE_) { - for (n_ncdm=0; n_ncdm < pba->N_ncdm; n_ncdm++) { - sprintf(tmp,"t_ncdm[%d]",n_ncdm); - class_store_columntitle(titles,tmp,_TRUE_); - } - } - class_store_columntitle(titles,"t_dcdm",pba->has_dcdm); - class_store_columntitle(titles,"t_dr",pba->has_dr); - class_store_columntitle(titles,"t__scf",pba->has_scf); - class_store_columntitle(titles,"t_tot",_TRUE_); - } - } + /* deprecated functions (since v2.1) */ + +/** + * Obsolete function, superseeded by perturb_sources_at_tau() + * (at the time of the switch, this function was anyway never used anywhere) + * + * @param pba Input: pointer to background structure (used for converting z into tau) + * @param psp Input: pointer to spectra structure (containing pre-computed table) + * @param z Input: redshift + * @param output Output: matter transfer functions + * @return the error status + */ - else if (output_format == camb_format) { +int spectra_tk_at_z( + struct background * pba, + struct spectra * psp, + double z, + double * output /* array with argument output[(index_k*psp->ic_size[index_md]+index_ic)*psp->tr_size+index_tr] (must be already allocated) */ + ) { - class_store_columntitle(titles,"k (h/Mpc)",_TRUE_); - class_store_columntitle(titles,"-T_cdm/k2",_TRUE_); - class_store_columntitle(titles,"-T_b/k2",_TRUE_); - class_store_columntitle(titles,"-T_g/k2",_TRUE_); - class_store_columntitle(titles,"-T_ur/k2",_TRUE_); - class_store_columntitle(titles,"-T_ncdm/k2",_TRUE_); - class_store_columntitle(titles,"-T_tot/k2",_TRUE_); - } + class_stop(psp->error_message, + "The function spectra_tk_at_z() is obsolete, use instead perturb_sources_at_tau(), it does the same"); return _SUCCESS_; } -int spectra_output_tk_data( +/** + * Obsolete function, superseeded by perturb_sources_at_tau() + * (at the time of the switch, this function was anyway never used anywhere) + * + * @param pba Input: pointer to background structure (used for converting z into tau) + * @param psp Input: pointer to spectra structure (containing pre-computed table) + * @param k Input: wavenumber in 1/Mpc + * @param z Input: redshift + * @param output Output: matter transfer functions + * @return the error status + */ + +int spectra_tk_at_k_and_z( struct background * pba, - struct perturbs * ppt, struct spectra * psp, - enum file_format output_format, + double k, double z, - int number_of_titles, - double *data + double * output /* array with argument output[index_ic*psp->tr_size+index_tr] (must be already allocated) */ ) { - int n_ncdm; - double k, k_over_h, k2; - double * tkfull=NULL; /* array with argument - pk_ic[(index_k * psp->ic_size[index_md] + index_ic)*psp->tr_size+index_tr] */ - double *tk; - double *dataptr; - - int index_md=0; - int index_ic; - int index_k; - int index_tr; - int storeidx; - - if (psp->ln_k_size*psp->ic_size[index_md]*psp->tr_size > 0){ - class_alloc(tkfull, - psp->ln_k_size*psp->ic_size[index_md]*psp->tr_size*sizeof(double), - psp->error_message); - } - - /** - compute \f$T_i(k)\f$ for each k (if several ic's, compute it for each ic; if z_pk = 0, this is done by directly reading inside the pre-computed table; if not, this is done by interpolating the table at the correct value of tau. */ - - /* if z_pk = 0, no interpolation needed */ - - if (z == 0.) { - - for (index_k=0; index_kln_k_size; index_k++) { - for (index_tr=0; index_trtr_size; index_tr++) { - for (index_ic=0; index_icic_size[index_md]; index_ic++) { - tkfull[(index_k * psp->ic_size[index_md] + index_ic) * psp->tr_size + index_tr] = psp->matter_transfer[(((psp->ln_tau_size-1)*psp->ln_k_size + index_k) * psp->ic_size[index_md] + index_ic) * psp->tr_size + index_tr]; - } - } - } - } - - /* if 0 <= z_pk <= z_max_pk, interpolation needed, */ - else { - - class_call(spectra_tk_at_z(pba, - psp, - z, - tkfull), - psp->error_message, - psp->error_message); - } - - /** - store data */ - - for (index_ic = 0; index_ic < psp->ic_size[index_md]; index_ic++) { - - for (index_k=0; index_kln_k_size; index_k++) { - - storeidx = 0; - dataptr = data+index_ic*(psp->ln_k_size*number_of_titles)+index_k*number_of_titles; - tk = &(tkfull[(index_k * psp->ic_size[index_md] + index_ic) * psp->tr_size]); - k = exp(psp->ln_k[index_k]); - k2 = k*k; - k_over_h = k/pba->h; - - class_store_double(dataptr, k_over_h, _TRUE_,storeidx); + class_stop(psp->error_message, + "The function spectra_tk_at_k_and_z() is obsolete, use instead perturb_sources_at_tau(), it does the same provided that you interpolate its output at some wavenumber k"); - /* indices for species associated with a velocity transfer function in Fourier space */ - - if (output_format == class_format) { - - if (ppt->has_density_transfers == _TRUE_) { - - class_store_double(dataptr,tk[psp->index_tr_delta_g],ppt->has_source_delta_g,storeidx); - class_store_double(dataptr,tk[psp->index_tr_delta_b],ppt->has_source_delta_b,storeidx); - class_store_double(dataptr,tk[psp->index_tr_delta_cdm],ppt->has_source_delta_cdm,storeidx); - class_store_double(dataptr,tk[psp->index_tr_delta_fld],ppt->has_source_delta_fld,storeidx); - class_store_double(dataptr,tk[psp->index_tr_delta_ur],ppt->has_source_delta_ur,storeidx); - if (pba->has_ncdm == _TRUE_){ - for (n_ncdm = 0; n_ncdm < pba->N_ncdm; n_ncdm++){ - class_store_double(dataptr,tk[psp->index_tr_delta_ncdm1+n_ncdm],ppt->has_source_delta_ncdm,storeidx); - } - } - class_store_double(dataptr,tk[psp->index_tr_delta_dcdm],ppt->has_source_delta_dcdm,storeidx); - class_store_double(dataptr,tk[psp->index_tr_delta_dr],ppt->has_source_delta_dr,storeidx); - class_store_double(dataptr,tk[psp->index_tr_delta_scf],ppt->has_source_delta_scf,storeidx); - class_store_double(dataptr,tk[psp->index_tr_delta_tot],_TRUE_,storeidx); - class_store_double(dataptr,tk[psp->index_tr_phi],ppt->has_source_phi,storeidx); - class_store_double(dataptr,tk[psp->index_tr_psi],ppt->has_source_psi,storeidx); - } - if (ppt->has_velocity_transfers == _TRUE_) { - - class_store_double(dataptr,tk[psp->index_tr_theta_g],ppt->has_source_theta_g,storeidx); - class_store_double(dataptr,tk[psp->index_tr_theta_b],ppt->has_source_theta_b,storeidx); - class_store_double(dataptr,tk[psp->index_tr_theta_cdm],ppt->has_source_theta_cdm,storeidx); - class_store_double(dataptr,tk[psp->index_tr_theta_fld],ppt->has_source_theta_fld,storeidx); - class_store_double(dataptr,tk[psp->index_tr_theta_ur],ppt->has_source_theta_ur,storeidx); - if (pba->has_ncdm == _TRUE_){ - for (n_ncdm = 0; n_ncdm < pba->N_ncdm; n_ncdm++){ - class_store_double(dataptr,tk[psp->index_tr_theta_ncdm1+n_ncdm],ppt->has_source_theta_ncdm,storeidx); - } - } - class_store_double(dataptr,tk[psp->index_tr_theta_dcdm],ppt->has_source_theta_dcdm,storeidx); - class_store_double(dataptr,tk[psp->index_tr_theta_dr],ppt->has_source_theta_dr,storeidx); - class_store_double(dataptr,tk[psp->index_tr_theta_scf],ppt->has_source_theta_scf,storeidx); - class_store_double(dataptr,tk[psp->index_tr_theta_tot],_TRUE_,storeidx); - - } - - } - else if (output_format == camb_format) { - - /* rescale and reorder the matter transfer functions following the CMBFAST/CAMB convention */ - class_store_double_or_default(dataptr,-tk[psp->index_tr_delta_cdm]/k2,ppt->has_source_delta_cdm,storeidx,0.0); - class_store_double_or_default(dataptr,-tk[psp->index_tr_delta_b]/k2,ppt->has_source_delta_b,storeidx,0.0); - class_store_double_or_default(dataptr,-tk[psp->index_tr_delta_g]/k2,ppt->has_source_delta_g,storeidx,0.0); - class_store_double_or_default(dataptr,-tk[psp->index_tr_delta_ur]/k2,ppt->has_source_delta_ur,storeidx,0.0); - class_store_double_or_default(dataptr,-tk[psp->index_tr_delta_ncdm1]/k2,ppt->has_source_delta_ncdm,storeidx,0.0); - class_store_double_or_default(dataptr,-tk[psp->index_tr_delta_tot]/k2,_TRUE_,storeidx,0.0); - } - } - } - - //Necessary because the size could be zero (if psp->tr_size is zero) - if (tkfull != NULL) - free(tkfull); + return _SUCCESS_; - return _SUCCESS_; } - int spectra_firstline_and_ic_suffix(struct perturbs *ppt, - int index_ic, - char first_line[_LINE_LENGTH_MAX_], - FileName ic_suffix){ - - first_line[0]='\0'; - ic_suffix[0]='\0'; - - - if ((ppt->has_ad == _TRUE_) && (index_ic == ppt->index_ic_ad)) { - strcpy(ic_suffix,"ad"); - strcpy(first_line,"for adiabatic (AD) mode (normalized to initial curvature=1) "); - } - - if ((ppt->has_bi == _TRUE_) && (index_ic == ppt->index_ic_bi)) { - strcpy(ic_suffix,"bi"); - strcpy(first_line,"for baryon isocurvature (BI) mode (normalized to initial entropy=1)"); - } - - if ((ppt->has_cdi == _TRUE_) && (index_ic == ppt->index_ic_cdi)) { - strcpy(ic_suffix,"cdi"); - strcpy(first_line,"for CDM isocurvature (CDI) mode (normalized to initial entropy=1)"); - } - - if ((ppt->has_nid == _TRUE_) && (index_ic == ppt->index_ic_nid)) { - strcpy(ic_suffix,"nid"); - strcpy(first_line,"for neutrino density isocurvature (NID) mode (normalized to initial entropy=1)"); - } - - if ((ppt->has_niv == _TRUE_) && (index_ic == ppt->index_ic_niv)) { - strcpy(ic_suffix,"niv"); - strcpy(first_line,"for neutrino velocity isocurvature (NIV) mode (normalized to initial entropy=1)"); - } - return _SUCCESS_; -} + /* end deprecated functions */ diff --git a/class/source/tags b/class/source/tags new file mode 100644 index 00000000..142ec8c1 --- /dev/null +++ b/class/source/tags @@ -0,0 +1,2412 @@ +!_TAG_FILE_FORMAT 2 /extended format; --format=1 will not append ;" to lines/ +!_TAG_FILE_SORTED 1 /0=unsorted, 1=sorted, 2=foldcase/ +!_TAG_PROGRAM_AUTHOR Darren Hiebert /dhiebert@users.sourceforge.net/ +!_TAG_PROGRAM_NAME Exuberant Ctags // +!_TAG_PROGRAM_URL http://ctags.sourceforge.net /official site/ +!_TAG_PROGRAM_VERSION 5.8 // +A_s ../include/primordial.h /^ double A_s; \/**< usual scalar amplitude = curvature power spectrum at pivot scale *\/$/;" m struct:primordial +Ai ../include/sparse.h /^ int *Ai; \/* Ai[0..(maxnz-1)]. Contains the row indices of the entries. *\/$/;" m struct:sparse_matrix +Ap ../include/sparse.h /^ int *Ap; \/* Ap[0..ncols]. Ap[k+1]-Ap[k] is the number of entries in the k'th column. *\/$/;" m struct:sparse_matrix +Ax ../include/sparse.h /^ double *Ax; \/* Ax[0..(maxnz-1)]. Contains the values of the entries. *\/$/;" m struct:sparse_matrix +BB ../cpp/Engine.hh /^ enum cltype {TT=0,EE,TE,BB,PP,TP,EP}; \/\/P stands for phi (lensing potential)$/;" e enum:Engine::cltype +Bfact ../include/thermodynamics.h /^ double Bfact; \/**< defined as in RECFAST *\/$/;" m struct:recombination +CB1 ../include/thermodynamics.h /^ double CB1; \/**< defined as in RECFAST *\/$/;" m struct:recombination +CB1_He1 ../include/thermodynamics.h /^ double CB1_He1; \/**< defined as in RECFAST *\/$/;" m struct:recombination +CB1_He2 ../include/thermodynamics.h /^ double CB1_He2; \/**< defined as in RECFAST *\/$/;" m struct:recombination +CDB ../include/thermodynamics.h /^ double CDB; \/**< defined as in RECFAST *\/$/;" m struct:recombination +CDB_He ../include/thermodynamics.h /^ double CDB_He; \/**< defined as in RECFAST *\/$/;" m struct:recombination +CF1_from_Gegenbauer ../tools/hyperspherical.c /^int CF1_from_Gegenbauer(int l,$/;" f +CFLAGS ../cpp/Makefile /^CFLAGS = -O2 -fopenmp -I..\/include$/;" m +CK ../include/thermodynamics.h /^ double CK; \/**< defined as in RECFAST *\/$/;" m struct:recombination +CK_He ../include/thermodynamics.h /^ double CK_He; \/**< defined as in RECFAST *\/$/;" m struct:recombination +CL ../include/thermodynamics.h /^ double CL; \/**< defined as in RECFAST *\/$/;" m struct:recombination +CLASSMODULES ../cpp/Makefile /^CLASSMODULES = ..\/build\/arrays.o ..\/build\/background.o ..\/build\/common.o \\$/;" m +CLP ../include/background.h /^enum equation_of_state {CLP,EDE};$/;" e enum:equation_of_state +CL_He ../include/thermodynamics.h /^ double CL_He; \/**< defined as in RECFAST *\/$/;" m struct:recombination +CR ../include/thermodynamics.h /^ double CR; \/**< defined as in RECFAST *\/$/;" m struct:recombination +CT ../include/thermodynamics.h /^ double CT; \/**< defined as in RECFAST *\/$/;" m struct:recombination +CXX ../cpp/Makefile /^CXX = g++$/;" m +Ci ../include/evolver_ndf15.h /^ int *Ci; \/* Stores the row indices of the spJ+spJ' sparsity pattern. *\/$/;" m struct:jacobian +ClassEngine ../cpp/ClassEngine.cc /^ClassEngine::ClassEngine(const ClassParams& pars, bool verbose): cl(0),dofree(true){$/;" f class:ClassEngine +ClassEngine ../cpp/ClassEngine.cc /^ClassEngine::ClassEngine(const ClassParams& pars,const string & precision_file, bool verbose): cl(0),dofree(true){$/;" f class:ClassEngine +ClassEngine ../cpp/ClassEngine.hh /^class ClassEngine : public Engine$/;" c +ClassEngine_hh ../cpp/ClassEngine.hh 17;" d +ClassParams ../cpp/ClassEngine.hh /^ ClassParams( const ClassParams& o):pars(o.pars){};$/;" f class:ClassParams +ClassParams ../cpp/ClassEngine.hh /^ ClassParams(){};$/;" f class:ClassParams +ClassParams ../cpp/ClassEngine.hh /^class ClassParams{$/;" c +ClosedModY ../tools/hyperspherical.c /^int ClosedModY(int l, int beta, double *y, int * phisign, int * dphisign){$/;" f +Cp ../include/evolver_ndf15.h /^ int *Cp; \/* Stores the column pointers of the spJ+spJ' sparsity pattern. *\/$/;" m struct:jacobian +Difmax ../include/evolver_ndf15.h /^ double * Difmax;$/;" m struct:numjac_workspace +EDE ../include/background.h /^enum equation_of_state {CLP,EDE};$/;" e enum:equation_of_state +EE ../cpp/Engine.hh /^ enum cltype {TT=0,EE,TE,BB,PP,TP,EP}; \/\/P stands for phi (lensing potential)$/;" e enum:Engine::cltype +EP ../cpp/Engine.hh /^ enum cltype {TT=0,EE,TE,BB,PP,TP,EP}; \/\/P stands for phi (lensing potential)$/;" e enum:Engine::cltype +Engine ../cpp/Engine.cc /^Engine::Engine():_lmax(-1)$/;" f class:Engine +Engine ../cpp/Engine.hh /^class Engine$/;" c +Engine_hh ../cpp/Engine.hh 17;" d +ErrorMsg ../include/common.h /^typedef char ErrorMsg[_ERRORMSGSIZE_]; \/**< Generic error messages (there is such a field in each structure) *\/$/;" t +FileArg ../include/parser.h /^typedef char FileArg[_ARGUMENT_LENGTH_MAX_];$/;" t +FileName ../include/common.h /^typedef char FileName[_FILENAMESIZE_];$/;" t +Fscale ../include/evolver_ndf15.h /^ double * Fscale;$/;" m struct:numjac_workspace +Gamma_dcdm ../include/background.h /^ double Gamma_dcdm; \/**< \\f$ \\Gamma_{dcdm} \\f$: decay constant for decaying cold dark matter *\/$/;" m struct:background +Gamma_prime_fld ../include/perturbations.h /^ double Gamma_prime_fld; \/**< Gamma_prime in PPF scheme (equivalent to eq. 14 in 0808.3125) *\/$/;" m struct:perturb_workspace +H ../include/primordial.h /^ double H;$/;" m struct:primordial_inflation_parameters_and_workspace +H0 ../include/background.h /^ double H0; \/**< \\f$ H_0 \\f$: Hubble parameter (in fact, [\\f$H_0\/c\\f$]) in \\f$ Mpc^{-1} \\f$ *\/$/;" m struct:background +H0 ../include/primordial.h /^ double H0; \/**< one parameter of the function H(phi) *\/$/;" m struct:primordial +H0 ../include/thermodynamics.h /^ double H0; \/**< defined as in RECFAST *\/$/;" m struct:recombination +H1 ../include/primordial.h /^ double H1; \/**< one parameter of the function H(phi) *\/$/;" m struct:primordial +H2 ../include/primordial.h /^ double H2; \/**< one parameter of the function H(phi) *\/$/;" m struct:primordial +H3 ../include/primordial.h /^ double H3; \/**< one parameter of the function H(phi) *\/$/;" m struct:primordial +H4 ../include/primordial.h /^ double H4; \/**< one parameter of the function H(phi) *\/$/;" m struct:primordial +HERMITE3 ../include/transfer.h /^enum Hermite_Interpolation_Order {HERMITE3, HERMITE4, HERMITE6};$/;" e enum:Hermite_Interpolation_Order +HERMITE4 ../include/transfer.h /^enum Hermite_Interpolation_Order {HERMITE3, HERMITE4, HERMITE6};$/;" e enum:Hermite_Interpolation_Order +HERMITE6 ../include/transfer.h /^enum Hermite_Interpolation_Order {HERMITE3, HERMITE4, HERMITE6};$/;" e enum:Hermite_Interpolation_Order +HERMITE_DO_D2PHI ../tools/hyperspherical.c 1468;" d file: +HERMITE_DO_D2PHI ../tools/hyperspherical.c 1481;" d file: +HERMITE_DO_D2PHI ../tools/hyperspherical.c 1494;" d file: +HERMITE_DO_D2PHI ../tools/hyperspherical.c 1495;" d file: +HERMITE_DO_D2PHI ../tools/hyperspherical.c 1508;" d file: +HERMITE_DO_D2PHI ../tools/hyperspherical.c 1523;" d file: +HERMITE_DO_D2PHI ../tools/hyperspherical.c 1525;" d file: +HERMITE_DO_D2PHI ../tools/hyperspherical.c 1538;" d file: +HERMITE_DO_D2PHI ../tools/hyperspherical.c 1540;" d file: +HERMITE_DO_D2PHI ../tools/hyperspherical.c 1555;" d file: +HERMITE_DO_D2PHI ../tools/hyperspherical.c 1558;" d file: +HERMITE_DO_D2PHI ../tools/hyperspherical.c 1570;" d file: +HERMITE_DO_D2PHI ../tools/hyperspherical.c 1583;" d file: +HERMITE_DO_D2PHI ../tools/hyperspherical.c 1596;" d file: +HERMITE_DO_D2PHI ../tools/hyperspherical.c 1597;" d file: +HERMITE_DO_D2PHI ../tools/hyperspherical.c 1610;" d file: +HERMITE_DO_D2PHI ../tools/hyperspherical.c 1625;" d file: +HERMITE_DO_D2PHI ../tools/hyperspherical.c 1627;" d file: +HERMITE_DO_D2PHI ../tools/hyperspherical.c 1640;" d file: +HERMITE_DO_D2PHI ../tools/hyperspherical.c 1642;" d file: +HERMITE_DO_D2PHI ../tools/hyperspherical.c 1657;" d file: +HERMITE_DO_D2PHI ../tools/hyperspherical.c 1660;" d file: +HERMITE_DO_D2PHI ../tools/hyperspherical.c 1672;" d file: +HERMITE_DO_D2PHI ../tools/hyperspherical.c 1685;" d file: +HERMITE_DO_D2PHI ../tools/hyperspherical.c 1698;" d file: +HERMITE_DO_D2PHI ../tools/hyperspherical.c 1699;" d file: +HERMITE_DO_D2PHI ../tools/hyperspherical.c 1712;" d file: +HERMITE_DO_D2PHI ../tools/hyperspherical.c 1727;" d file: +HERMITE_DO_D2PHI ../tools/hyperspherical.c 1729;" d file: +HERMITE_DO_D2PHI ../tools/hyperspherical.c 1742;" d file: +HERMITE_DO_D2PHI ../tools/hyperspherical.c 1744;" d file: +HERMITE_DO_D2PHI ../tools/hyperspherical.c 1759;" d file: +HERMITE_DO_D2PHI ../tools/hyperspherical.c 1762;" d file: +HERMITE_DO_DPHI ../tools/hyperspherical.c 1467;" d file: +HERMITE_DO_DPHI ../tools/hyperspherical.c 1480;" d file: +HERMITE_DO_DPHI ../tools/hyperspherical.c 1482;" d file: +HERMITE_DO_DPHI ../tools/hyperspherical.c 1493;" d file: +HERMITE_DO_DPHI ../tools/hyperspherical.c 1507;" d file: +HERMITE_DO_DPHI ../tools/hyperspherical.c 1510;" d file: +HERMITE_DO_DPHI ../tools/hyperspherical.c 1522;" d file: +HERMITE_DO_DPHI ../tools/hyperspherical.c 1537;" d file: +HERMITE_DO_DPHI ../tools/hyperspherical.c 1539;" d file: +HERMITE_DO_DPHI ../tools/hyperspherical.c 1554;" d file: +HERMITE_DO_DPHI ../tools/hyperspherical.c 1557;" d file: +HERMITE_DO_DPHI ../tools/hyperspherical.c 1569;" d file: +HERMITE_DO_DPHI ../tools/hyperspherical.c 1582;" d file: +HERMITE_DO_DPHI ../tools/hyperspherical.c 1584;" d file: +HERMITE_DO_DPHI ../tools/hyperspherical.c 1595;" d file: +HERMITE_DO_DPHI ../tools/hyperspherical.c 1609;" d file: +HERMITE_DO_DPHI ../tools/hyperspherical.c 1612;" d file: +HERMITE_DO_DPHI ../tools/hyperspherical.c 1624;" d file: +HERMITE_DO_DPHI ../tools/hyperspherical.c 1639;" d file: +HERMITE_DO_DPHI ../tools/hyperspherical.c 1641;" d file: +HERMITE_DO_DPHI ../tools/hyperspherical.c 1656;" d file: +HERMITE_DO_DPHI ../tools/hyperspherical.c 1659;" d file: +HERMITE_DO_DPHI ../tools/hyperspherical.c 1671;" d file: +HERMITE_DO_DPHI ../tools/hyperspherical.c 1684;" d file: +HERMITE_DO_DPHI ../tools/hyperspherical.c 1686;" d file: +HERMITE_DO_DPHI ../tools/hyperspherical.c 1697;" d file: +HERMITE_DO_DPHI ../tools/hyperspherical.c 1711;" d file: +HERMITE_DO_DPHI ../tools/hyperspherical.c 1714;" d file: +HERMITE_DO_DPHI ../tools/hyperspherical.c 1726;" d file: +HERMITE_DO_DPHI ../tools/hyperspherical.c 1741;" d file: +HERMITE_DO_DPHI ../tools/hyperspherical.c 1743;" d file: +HERMITE_DO_DPHI ../tools/hyperspherical.c 1758;" d file: +HERMITE_DO_DPHI ../tools/hyperspherical.c 1761;" d file: +HERMITE_DO_PHI ../tools/hyperspherical.c 1466;" d file: +HERMITE_DO_PHI ../tools/hyperspherical.c 1469;" d file: +HERMITE_DO_PHI ../tools/hyperspherical.c 1479;" d file: +HERMITE_DO_PHI ../tools/hyperspherical.c 1492;" d file: +HERMITE_DO_PHI ../tools/hyperspherical.c 1506;" d file: +HERMITE_DO_PHI ../tools/hyperspherical.c 1509;" d file: +HERMITE_DO_PHI ../tools/hyperspherical.c 1521;" d file: +HERMITE_DO_PHI ../tools/hyperspherical.c 1524;" d file: +HERMITE_DO_PHI ../tools/hyperspherical.c 1536;" d file: +HERMITE_DO_PHI ../tools/hyperspherical.c 1553;" d file: +HERMITE_DO_PHI ../tools/hyperspherical.c 1556;" d file: +HERMITE_DO_PHI ../tools/hyperspherical.c 1568;" d file: +HERMITE_DO_PHI ../tools/hyperspherical.c 1571;" d file: +HERMITE_DO_PHI ../tools/hyperspherical.c 1581;" d file: +HERMITE_DO_PHI ../tools/hyperspherical.c 1594;" d file: +HERMITE_DO_PHI ../tools/hyperspherical.c 1608;" d file: +HERMITE_DO_PHI ../tools/hyperspherical.c 1611;" d file: +HERMITE_DO_PHI ../tools/hyperspherical.c 1623;" d file: +HERMITE_DO_PHI ../tools/hyperspherical.c 1626;" d file: +HERMITE_DO_PHI ../tools/hyperspherical.c 1638;" d file: +HERMITE_DO_PHI ../tools/hyperspherical.c 1655;" d file: +HERMITE_DO_PHI ../tools/hyperspherical.c 1658;" d file: +HERMITE_DO_PHI ../tools/hyperspherical.c 1670;" d file: +HERMITE_DO_PHI ../tools/hyperspherical.c 1673;" d file: +HERMITE_DO_PHI ../tools/hyperspherical.c 1683;" d file: +HERMITE_DO_PHI ../tools/hyperspherical.c 1696;" d file: +HERMITE_DO_PHI ../tools/hyperspherical.c 1710;" d file: +HERMITE_DO_PHI ../tools/hyperspherical.c 1713;" d file: +HERMITE_DO_PHI ../tools/hyperspherical.c 1725;" d file: +HERMITE_DO_PHI ../tools/hyperspherical.c 1728;" d file: +HERMITE_DO_PHI ../tools/hyperspherical.c 1740;" d file: +HERMITE_DO_PHI ../tools/hyperspherical.c 1757;" d file: +HERMITE_DO_PHI ../tools/hyperspherical.c 1760;" d file: +HIS ../include/transfer.h /^ HyperInterpStruct HIS; \/**< structure containing all hyperspherical bessel functions (flat case) or all hyperspherical bessel functions for a given value of beta=q\/sqrt(|K|) (non-flat case). HIS = Hyperspherical Interpolation Structure. *\/$/;" m struct:transfer_workspace +HIS_allocated ../include/transfer.h /^ int HIS_allocated; \/**< flag specifying whether the previous structure has been allocated *\/$/;" m struct:transfer_workspace +H_eq ../include/background.h /^ double H_eq; \/**< Hubble rate at radiation\/matter equality [Mpc^-1] *\/$/;" m struct:background +H_frac ../include/thermodynamics.h /^ double H_frac; \/**< defined as in RECFAST *\/$/;" m struct:recombination +Hermite_Interpolation_Order ../include/transfer.h /^enum Hermite_Interpolation_Order {HERMITE3, HERMITE4, HERMITE6};$/;" g +HyperInterpStruct ../include/hyperspherical.h /^} HyperInterpStruct;$/;" t typeref:struct:HypersphericalInterpolationStructure +HypersphericalExplicit ../tools/hyperspherical.c /^int HypersphericalExplicit(int K,int l, double beta,double x, double *Phi){$/;" f +HypersphericalInterpolationStructure ../include/hyperspherical.h /^typedef struct HypersphericalInterpolationStructure{$/;" s +I ../include/quadrature.h /^ double I; \/* Estimate of integral *\/$/;" m struct:adaptive_integration_tree_node +K ../include/background.h /^ double K; \/**< \\f$ K \\f$: Curvature parameter \\f$ K=-\\Omega0_k*a_{today}^2*H_0^2\\f$; *\/$/;" m struct:background +K ../include/hermite3_interpolation_csource.h /^int K = pHIS->K;$/;" v +K ../include/hermite4_interpolation_csource.h /^int K = pHIS->K;$/;" v +K ../include/hermite6_interpolation_csource.h /^int K, l, j, nx, current_border_idx=0;$/;" v +K ../include/hyperspherical.h /^ int K;$/;" m struct:WKB_parameters +K ../include/hyperspherical.h /^ int K; \/\/Sign of the curvature, (0,-1,1)$/;" m struct:HypersphericalInterpolationStructure +K ../include/transfer.h /^ double K; \/**< curvature parameter (see background module for details) *\/$/;" m struct:transfer_workspace +K ../tools/hermite3_interpolation_csource.h /^int K = pHIS->K;$/;" v +K ../tools/hermite4_interpolation_csource.h /^int K = pHIS->K;$/;" v +K ../tools/hermite6_interpolation_csource.h /^int K, l, j, nx, current_border_idx=0;$/;" v +L ../include/sparse.h /^ sp_mat *L; \/*L and U is the factors of the decomposed matrix.*\/$/;" m struct:sparse_numerical +LU ../include/evolver_ndf15.h /^ double **LU;$/;" m struct:jacobian +LUw ../include/evolver_ndf15.h /^ double *LUw;$/;" m struct:jacobian +MAX ../include/common.h 72;" d +MIN ../include/common.h 71;" d +M_ncdm ../include/background.h /^ double * M_ncdm; \/**< vector of masses of non-cold relic:$/;" m struct:background +N ../include/primordial.h /^ double N;$/;" m struct:primordial_inflation_parameters_and_workspace +NC_RSD ../include/transfer.h /^ NC_RSD} radial_function_type;$/;" e enum:__anon2 +NRSIGN ../include/common.h 74;" d +N_ncdm ../include/background.h /^ int N_ncdm; \/**< Number of distinguishable ncdm species *\/$/;" m struct:background +N_ncdm ../include/perturbations.h /^ int N_ncdm; \/**< number of distinct non-cold-dark-matter (ncdm) species *\/$/;" m struct:perturb_vector +N_star ../include/primordial.h /^ N_star,$/;" e enum:phi_pivot_methods +Neff ../include/background.h /^ double Neff; \/**< so-called "effective neutrino number", computed at earliest time in interpolation table *\/$/;" m struct:background +Nnow ../include/thermodynamics.h /^ double Nnow; \/**< defined as in RECFAST *\/$/;" m struct:recombination +Numerical ../include/evolver_ndf15.h /^ sp_num *Numerical; \/*Stores the LU decomposition.*\/$/;" m struct:jacobian +Omega0_b ../include/background.h /^ double Omega0_b; \/**< \\f$ \\Omega_{0 b} \\f$: baryons *\/$/;" m struct:background +Omega0_cdm ../include/background.h /^ double Omega0_cdm; \/**< \\f$ \\Omega_{0 cdm} \\f$: cold dark matter *\/$/;" m struct:background +Omega0_dcdm ../include/background.h /^ double Omega0_dcdm; \/**< \\f$ \\Omega_{0 dcdm} \\f$: decaying cold dark matter *\/$/;" m struct:background +Omega0_dcdmdr ../include/background.h /^ double Omega0_dcdmdr; \/**< \\f$ \\Omega_{0 dcdm}+\\Omega_{0 dr} \\f$: decaying cold dark matter (dcdm) decaying to dark radiation (dr) *\/$/;" m struct:background +Omega0_de ../include/background.h /^ double Omega0_de; \/**< total dark energy density today, currently defined as 1 - Omega0_m - Omega0_r - Omega0_k *\/$/;" m struct:background +Omega0_dr ../include/background.h /^ double Omega0_dr; \/**< \\f$ \\Omega_{0 dr} \\f$: decay radiation *\/$/;" m struct:background +Omega0_fld ../include/background.h /^ double Omega0_fld; \/**< \\f$ \\Omega_{0 de} \\f$: fluid *\/$/;" m struct:background +Omega0_g ../include/background.h /^ double Omega0_g; \/**< \\f$ \\Omega_{0 \\gamma} \\f$: photons *\/$/;" m struct:background +Omega0_idm_dr ../include/background.h /^ double Omega0_idm_dr; \/**< \\f$ \\Omega_{0 idm_dr} \\f$: dark matter interacting with dark radiation *\/$/;" m struct:background +Omega0_idr ../include/background.h /^ double Omega0_idr; \/**< \\f$ \\Omega_{0 idr} \\f$: interacting dark radiation *\/$/;" m struct:background +Omega0_k ../include/background.h /^ double Omega0_k; \/**< \\f$ \\Omega_{0_k} \\f$: curvature contribution *\/$/;" m struct:background +Omega0_lambda ../include/background.h /^ double Omega0_lambda; \/**< \\f$ \\Omega_{0_\\Lambda} \\f$: cosmological constant *\/$/;" m struct:background +Omega0_m ../include/background.h /^ double Omega0_m; \/**< total non-relativistic matter today *\/$/;" m struct:background +Omega0_ncdm ../include/background.h /^ double * Omega0_ncdm, Omega0_ncdm_tot; \/**< Omega0_ncdm for each species and for the total Omega0_ncdm *\/$/;" m struct:background +Omega0_ncdm_tot ../include/background.h /^ double * Omega0_ncdm, Omega0_ncdm_tot; \/**< Omega0_ncdm for each species and for the total Omega0_ncdm *\/$/;" m struct:background +Omega0_r ../include/background.h /^ double Omega0_r; \/**< total ultra-relativistic radiation today *\/$/;" m struct:background +Omega0_scf ../include/background.h /^ double Omega0_scf; \/**< \\f$ \\Omega_{0 scf} \\f$: scalar field *\/$/;" m struct:background +Omega0_ur ../include/background.h /^ double Omega0_ur; \/**< \\f$ \\Omega_{0 \\nu r} \\f$: ultra-relativistic neutrinos *\/$/;" m struct:background +Omega_EDE ../include/background.h /^ double Omega_EDE; \/**< \\f$ wa_{DE} \\f$: Early Dark Energy density parameter *\/$/;" m struct:background +Omega_dcdmdr ../include/input.h /^enum target_names {theta_s, Omega_dcdmdr, omega_dcdmdr, Omega_scf, Omega_ini_dcdm, omega_ini_dcdm, sigma8};$/;" e enum:target_names +Omega_ini_dcdm ../include/background.h /^ double Omega_ini_dcdm; \/**< \\f$ \\Omega_{ini,dcdm} \\f$: rescaled initial value for dcdm density (see 1407.2418 for definitions) *\/$/;" m struct:background +Omega_ini_dcdm ../include/input.h /^enum target_names {theta_s, Omega_dcdmdr, omega_dcdmdr, Omega_scf, Omega_ini_dcdm, omega_ini_dcdm, sigma8};$/;" e enum:target_names +Omega_scf ../include/input.h /^enum target_names {theta_s, Omega_dcdmdr, omega_dcdmdr, Omega_scf, Omega_ini_dcdm, omega_ini_dcdm, sigma8};$/;" e enum:target_names +PP ../cpp/Engine.hh /^ enum cltype {TT=0,EE,TE,BB,PP,TP,EP}; \/\/P stands for phi (lensing potential)$/;" e enum:Engine::cltype +PhiWKB_minus_phiminabs ../tools/hyperspherical.c /^double PhiWKB_minus_phiminabs(double x, void *param){$/;" f +Phi_l ../include/hermite3_interpolation_csource.h /^double *Phi_l, *dPhi_l;$/;" v +Phi_l ../include/hermite4_interpolation_csource.h /^double *Phi_l, *dPhi_l;$/;" v +Phi_l ../include/hermite6_interpolation_csource.h /^double *Phi_l, *dPhi_l;$/;" v +Phi_l ../tools/hermite3_interpolation_csource.h /^double *Phi_l, *dPhi_l;$/;" v +Phi_l ../tools/hermite4_interpolation_csource.h /^double *Phi_l, *dPhi_l;$/;" v +Phi_l ../tools/hermite6_interpolation_csource.h /^double *Phi_l, *dPhi_l;$/;" v +Rowmax ../include/evolver_ndf15.h /^ int * Rowmax;$/;" m struct:numjac_workspace +SCALAR_POLARISATION_E ../include/transfer.h /^ SCALAR_POLARISATION_E,$/;" e enum:__anon2 +SCALAR_TEMPERATURE_0 ../include/transfer.h /^typedef enum {SCALAR_TEMPERATURE_0,$/;" e enum:__anon2 +SCALAR_TEMPERATURE_1 ../include/transfer.h /^ SCALAR_TEMPERATURE_1,$/;" e enum:__anon2 +SCALAR_TEMPERATURE_2 ../include/transfer.h /^ SCALAR_TEMPERATURE_2,$/;" e enum:__anon2 +SIGN ../include/common.h 73;" d +SPFLIP ../include/sparse.h 59;" d +SPMARK ../include/sparse.h 62;" d +SPMARKED ../include/sparse.h 61;" d +SPUNFLIP ../include/sparse.h 60;" d +S_fld ../include/perturbations.h /^ double S_fld; \/**< S quantity sourcing Gamma_prime evolution in PPF scheme (equivalent to eq. 15 in 0808.3125) *\/$/;" m struct:perturb_workspace +TE ../cpp/Engine.hh /^ enum cltype {TT=0,EE,TE,BB,PP,TP,EP}; \/\/P stands for phi (lensing potential)$/;" e enum:Engine::cltype +TENSOR_POLARISATION_B ../include/transfer.h /^ TENSOR_POLARISATION_B,$/;" e enum:__anon2 +TENSOR_POLARISATION_E ../include/transfer.h /^ TENSOR_POLARISATION_E,$/;" e enum:__anon2 +TENSOR_TEMPERATURE_2 ../include/transfer.h /^ TENSOR_TEMPERATURE_2,$/;" e enum:__anon2 +TINY ../include/evolver_ndf15.h 6;" d +TP ../cpp/Engine.hh /^ enum cltype {TT=0,EE,TE,BB,PP,TP,EP}; \/\/P stands for phi (lensing potential)$/;" e enum:Engine::cltype +TT ../cpp/Engine.hh /^ enum cltype {TT=0,EE,TE,BB,PP,TP,EP}; \/\/P stands for phi (lensing potential)$/;" e enum:Engine::cltype +T_cmb ../include/background.h /^ double T_cmb; \/**< \\f$ T_{cmb} \\f$: current CMB temperature in Kelvins *\/$/;" m struct:background +T_idr ../include/background.h /^ double T_idr; \/**< \\f$ T_{idr} \\f$: current temperature of interacting dark radiation in Kelvins *\/$/;" m struct:background +T_ncdm ../include/background.h /^ double * T_ncdm,T_ncdm_default; \/**< list of 1st parameters in$/;" m struct:background +T_ncdm_default ../include/background.h /^ double * T_ncdm,T_ncdm_default; \/**< list of 1st parameters in$/;" m struct:background +Tcmb ../cpp/ClassEngine.hh /^ inline double Tcmb() const {return ba.T_cmb;}$/;" f class:ClassEngine +Tnow ../include/thermodynamics.h /^ double Tnow; \/**< defined as in RECFAST *\/$/;" m struct:recombination +U ../include/sparse.h /^ sp_mat *U;$/;" m struct:sparse_numerical +V ../include/primordial.h /^ double V;$/;" m struct:primordial_inflation_parameters_and_workspace +V0 ../include/primordial.h /^ double V0; \/**< one parameter of the function V(phi) *\/$/;" m struct:primordial +V1 ../include/primordial.h /^ double V1; \/**< one parameter of the function V(phi) *\/$/;" m struct:primordial +V2 ../include/primordial.h /^ double V2; \/**< one parameter of the function V(phi) *\/$/;" m struct:primordial +V3 ../include/primordial.h /^ double V3; \/**< one parameter of the function V(phi) *\/$/;" m struct:primordial +V4 ../include/primordial.h /^ double V4; \/**< one parameter of the function V(phi) *\/$/;" m struct:primordial +VECTOR_POLARISATION_B ../include/transfer.h /^ VECTOR_POLARISATION_B,$/;" e enum:__anon2 +VECTOR_POLARISATION_E ../include/transfer.h /^ VECTOR_POLARISATION_E,$/;" e enum:__anon2 +VECTOR_TEMPERATURE_1 ../include/transfer.h /^ VECTOR_TEMPERATURE_1,$/;" e enum:__anon2 +VECTOR_TEMPERATURE_2 ../include/transfer.h /^ VECTOR_TEMPERATURE_2,$/;" e enum:__anon2 +V_e_scf background.c /^double V_e_scf(struct background *pba,$/;" f +V_p_scf background.c /^double V_p_scf($/;" f +V_scf background.c /^double V_scf($/;" f +WKB_parameters ../include/hyperspherical.h /^struct WKB_parameters{$/;" s +YHe ../include/thermodynamics.h /^ double YHe; \/**< \\f$ Y_{He} \\f$: primordial helium fraction *\/$/;" m struct:thermo +YHe ../include/thermodynamics.h /^ double YHe; \/**< defined as in RECFAST *\/$/;" m struct:recombination +_A2P_s_ ../include/thermodynamics.h 678;" d +_A2P_t_ ../include/thermodynamics.h 679;" d +_ARGUMENT_LENGTH_MAX_ ../include/parser.h 7;" d +_BBN_ ../include/thermodynamics.h 644;" d +_COLUMNWIDTH_ ../include/common.h 61;" d +_DELIMITER_ ../include/common.h 65;" d +_EPSILON_ ../include/common.h 57;" d +_ERRCON_ ../include/dei_rkck.h 91;" d +_ERRORMSGSIZE_ ../include/common.h 27;" d +_E_ ../include/common.h 45;" d +_FAILURE_ ../include/common.h 25;" d +_FALSE_ ../include/common.h 22;" d +_FILENAMESIZE_ ../include/common.h 30;" d +_GT_END_ ../include/growTable.h 12;" d +_GT_FACTOR_ ../include/growTable.h 11;" d +_GT_INITSIZE_ ../include/growTable.h 10;" d +_G_ ../include/background.h 575;" d +_Gyr_over_Mpc_ ../include/background.h 572;" d +_HIS_BYTE_ALIGNMENT_ ../include/hyperspherical.h 16;" d +_HUGE_ ../include/common.h 55;" d +_HYPER_BLOCK_ ../include/hyperspherical.h 13;" d +_HYPER_CHUNK_ ../include/hyperspherical.h 14;" d +_HYPER_OVERFLOW_ ../include/hyperspherical.h 9;" d +_HYPER_SAFETY_ ../include/hyperspherical.h 11;" d +_K_PER_DECADE_PRIMORDIAL_MIN_ ../include/primordial.h 528;" d +_LINE_LENGTH_MAX_ ../include/parser.h 6;" d +_L_H_alpha_ ../include/thermodynamics.h 673;" d +_L_H_ion_ ../include/thermodynamics.h 672;" d +_L_He1_ion_ ../include/thermodynamics.h 674;" d +_L_He2St_ion_ ../include/thermodynamics.h 682;" d +_L_He2_ion_ ../include/thermodynamics.h 675;" d +_L_He_2Pt_ ../include/thermodynamics.h 680;" d +_L_He_2St_ ../include/thermodynamics.h 681;" d +_L_He_2p_ ../include/thermodynamics.h 677;" d +_L_He_2s_ ../include/thermodynamics.h 676;" d +_Lambda_ ../include/thermodynamics.h 670;" d +_Lambda_He_ ../include/thermodynamics.h 671;" d +_MAXSTP_ ../include/dei_rkck.h 86;" d +_MAXTITLESTRINGLENGTH_ ../include/common.h 63;" d +_MAX_IT_ ../include/common.h 47;" d +_MAX_NUMBER_OF_K_FILES_ ../include/perturbations.h 83;" d +_MAX_NUM_EXTRAPOLATION_ ../include/nonlinear.h 13;" d +_MIN_NUMBER_OF_LAGUERRE_POINTS_ ../include/quadrature.h 4;" d +_M_EV_TOO_BIG_FOR_HALOFIT_ ../include/nonlinear.h 9;" d +_M_SUN_ ../include/nonlinear.h 11;" d +_Mpc_over_m_ ../include/background.h 569;" d +_NUM_TARGETS_ ../include/input.h 140;" d +_ONE_OVER_HYPER_OVERFLOW_ ../include/hyperspherical.h 10;" d +_OUTPUTPRECISION_ ../include/common.h 59;" d +_PGROW_ ../include/dei_rkck.h 89;" d +_PIHALF_ ../include/common.h 35;" d +_PI_ ../include/common.h 33;" d +_PSD_DERIVATIVE_EXP_MAX_ ../include/background.h 610;" d +_PSD_DERIVATIVE_EXP_MIN_ ../include/background.h 609;" d +_PSHRNK_ ../include/dei_rkck.h 90;" d +_QUADRATURE_MAX_ ../include/common.h 49;" d +_QUADRATURE_MAX_BG_ ../include/common.h 51;" d +_RECFAST_INTEG_SIZE_ ../include/thermodynamics.h 668;" d +_RKCK_a2_ ../include/dei_rkck.h 93;" d +_RKCK_a3_ ../include/dei_rkck.h 94;" d +_RKCK_a4_ ../include/dei_rkck.h 95;" d +_RKCK_a5_ ../include/dei_rkck.h 96;" d +_RKCK_a6_ ../include/dei_rkck.h 97;" d +_RKCK_b21_ ../include/dei_rkck.h 98;" d +_RKCK_b31_ ../include/dei_rkck.h 99;" d +_RKCK_b32_ ../include/dei_rkck.h 100;" d +_RKCK_b41_ ../include/dei_rkck.h 101;" d +_RKCK_b42_ ../include/dei_rkck.h 102;" d +_RKCK_b43_ ../include/dei_rkck.h 103;" d +_RKCK_b51_ ../include/dei_rkck.h 104;" d +_RKCK_b52_ ../include/dei_rkck.h 105;" d +_RKCK_b53_ ../include/dei_rkck.h 106;" d +_RKCK_b54_ ../include/dei_rkck.h 107;" d +_RKCK_b61_ ../include/dei_rkck.h 108;" d +_RKCK_b62_ ../include/dei_rkck.h 109;" d +_RKCK_b63_ ../include/dei_rkck.h 110;" d +_RKCK_b64_ ../include/dei_rkck.h 111;" d +_RKCK_b65_ ../include/dei_rkck.h 112;" d +_RKCK_c1_ ../include/dei_rkck.h 113;" d +_RKCK_c3_ ../include/dei_rkck.h 114;" d +_RKCK_c4_ ../include/dei_rkck.h 115;" d +_RKCK_c6_ ../include/dei_rkck.h 116;" d +_RKCK_dc1_ ../include/dei_rkck.h 118;" d +_RKCK_dc3_ ../include/dei_rkck.h 119;" d +_RKCK_dc4_ ../include/dei_rkck.h 120;" d +_RKCK_dc5_ ../include/dei_rkck.h 117;" d +_RKCK_dc6_ ../include/dei_rkck.h 121;" d +_SAFETY_ ../include/dei_rkck.h 88;" d +_SCALE_BACK_ ../include/background.h 605;" d +_SELECTION_NUM_MAX_ ../include/perturbations.h 72;" d +_SPLINE_EST_DERIV_ ../include/arrays.h 11;" d +_SPLINE_NATURAL_ ../include/arrays.h 10;" d +_SQRT2_ ../include/common.h 39;" d +_SQRT6_ ../include/common.h 41;" d +_SQRT_PI_ ../include/common.h 43;" d +_SUCCESS_ ../include/common.h 24;" d +_SVN_VERSION_ ../include/svnversion.h 1;" d +_TINY_ ../include/dei_rkck.h 87;" d +_TOLVAR_ ../include/common.h 53;" d +_TRIG_PRECISSION_ ../include/hyperspherical.h 12;" d +_TRUE_ ../include/common.h 21;" d +_TWOPI_ ../include/common.h 37;" d +_TWO_OVER_THREE_ ../include/hyperspherical.h 15;" d +_T_0_ ../include/thermodynamics.h 698;" d +_T_1_ ../include/thermodynamics.h 701;" d +_VERSION_ ../include/common.h 18;" d +_YHE_BIG_ ../include/thermodynamics.h 713;" d +_YHE_SMALL_ ../include/thermodynamics.h 714;" d +_Z_PK_NUM_MAX_ ../include/output.h 14;" d +_Z_REC_MAX_ ../include/thermodynamics.h 715;" d +_Z_REC_MIN_ ../include/thermodynamics.h 716;" d +__ALLOCATE_PRECISION_PARAMETER__ ../include/common.h 354;" d +__ALLOCATE_PRECISION_PARAMETER__ ../include/common.h 356;" d +__ARRAYS__ ../include/arrays.h 6;" d +__ASSIGN_DEFAULT_PRECISION__ input.c 3490;" d file: +__ASSIGN_DEFAULT_PRECISION__ input.c 3492;" d file: +__BACKGROUND__ ../include/background.h 4;" d +__CLASSDIR__ ../include/common.h 68;" d +__CLASS__ ../include/class.h 2;" d +__COMMON__ ../include/common.h 16;" d +__DEI__ ../include/dei_rkck.h 2;" d +__EVO__ ../include/evolver_ndf15.h 2;" d +__EVO__ ../include/evolver_rkck.h 2;" d +__GROWTABLE__ ../include/growTable.h 6;" d +__HYPERSPHERICAL__ ../include/hyperspherical.h 6;" d +__INPUT__ ../include/input.h 4;" d +__LENSING__ ../include/lensing.h 4;" d +__NONLINEAR__ ../include/nonlinear.h 7;" d +__OUTPUT__ ../include/output.h 4;" d +__PARSER__ ../include/parser.h 2;" d +__PARSE_PRECISION_PARAMETER__ input.c 593;" d file: +__PARSE_PRECISION_PARAMETER__ input.c 595;" d file: +__PERTURBATIONS__ ../include/perturbations.h 4;" d +__PRIMORDIAL__ ../include/primordial.h 4;" d +__QSS__ ../include/quadrature.h 2;" d +__SPA__ ../include/sparse.h 2;" d +__SPECTRA__ ../include/spectra.h 4;" d +__THERMODYNAMICS__ ../include/thermodynamics.h 4;" d +__TRANSFER__ ../include/transfer.h 4;" d +__TRIGONOMETRIC_INTEGRALS__ ../include/trigonometric_integrals.h 6;" d +_aH_ ../include/primordial.h /^ _aH_,$/;" e enum:target_quantity +_a_ ../include/primordial.h /^ _a_$/;" e enum:target_quantity +_a_PPB_ ../include/thermodynamics.h 694;" d +_a_VF_ ../include/thermodynamics.h 699;" d +_a_trip_ ../include/thermodynamics.h 702;" d +_b_PPB_ ../include/thermodynamics.h 695;" d +_b_VF_ ../include/thermodynamics.h 700;" d +_b_trip_ ../include/thermodynamics.h 703;" d +_c_ ../include/background.h 574;" d +_c_PPB_ ../include/thermodynamics.h 696;" d +_class_print_species_ ../include/background.h 14;" d +_d_PPB_ ../include/thermodynamics.h 697;" d +_eV_ ../include/background.h 576;" d +_end_inflation_ ../include/primordial.h /^ _end_inflation_,$/;" e enum:target_quantity +_errmsg ../cpp/ClassEngine.hh /^ ErrorMsg _errmsg; \/* for error messages *\/$/;" m class:ClassEngine +_f_Mead nonlinear_hmcode.c /^double _f_Mead(double x, double y, double p10, double p11, double p12, double p13) {$/;" f +_get_bin_integrated_ncl_ ../include/transfer.h 44;" d +_get_bin_nonintegrated_ncl_ ../include/transfer.h 28;" d +_h_BIG_ ../include/background.h 592;" d +_h_P_ ../include/background.h 580;" d +_h_SMALL_ ../include/background.h 593;" d +_index_tt_in_range_ ../include/transfer.h 13;" d +_integrated_ncl_ ../include/transfer.h 15;" d +_k_B_ ../include/background.h 579;" d +_lmax ../cpp/Engine.hh /^ int _lmax;$/;" m class:Engine +_m_H_ ../include/thermodynamics.h 656;" d +_m_e_ ../include/thermodynamics.h 654;" d +_m_p_ ../include/thermodynamics.h 655;" d +_nonintegrated_ncl_ ../include/transfer.h 20;" d +_not4_ ../include/thermodynamics.h 657;" d +_omegab_BIG_ ../include/background.h 594;" d +_omegab_SMALL_ ../include/background.h 595;" d +_phi_ ../include/primordial.h /^ _phi_,$/;" e enum:target_quantity +_scalars_ ../include/perturbations.h 10;" d +_set_source_ ../include/perturbations.h 14;" d +_sigma_ ../include/thermodynamics.h 658;" d +_sigma_He_2Ps_ ../include/thermodynamics.h 683;" d +_sigma_He_2Pt_ ../include/thermodynamics.h 684;" d +_tensors_ ../include/perturbations.h 12;" d +_vectors_ ../include/perturbations.h 11;" d +_zeta3_ ../include/background.h 612;" d +_zeta5_ ../include/background.h 613;" d +a ../include/hermite3_interpolation_csource.h /^double a[3]={0.,0.};$/;" v +a ../include/hermite4_interpolation_csource.h /^double a[3]={0.,0.,0.};$/;" v +a ../tools/hermite3_interpolation_csource.h /^double a[3]={0.,0.};$/;" v +a ../tools/hermite4_interpolation_csource.h /^double a[3]={0.,0.,0.};$/;" v +a1 ../include/hermite6_interpolation_csource.h /^double a1=0, a2=0, a3=0, a4=0, a5=0;$/;" v +a1 ../tools/hermite6_interpolation_csource.h /^double a1=0, a2=0, a3=0, a4=0, a5=0;$/;" v +a2 ../include/hermite6_interpolation_csource.h /^double a1=0, a2=0, a3=0, a4=0, a5=0;$/;" v +a2 ../include/primordial.h /^ double a2;$/;" m struct:primordial_inflation_parameters_and_workspace +a2 ../tools/hermite6_interpolation_csource.h /^double a1=0, a2=0, a3=0, a4=0, a5=0;$/;" v +a3 ../include/hermite6_interpolation_csource.h /^double a1=0, a2=0, a3=0, a4=0, a5=0;$/;" v +a3 ../tools/hermite6_interpolation_csource.h /^double a1=0, a2=0, a3=0, a4=0, a5=0;$/;" v +a4 ../include/hermite6_interpolation_csource.h /^double a1=0, a2=0, a3=0, a4=0, a5=0;$/;" v +a4 ../tools/hermite6_interpolation_csource.h /^double a1=0, a2=0, a3=0, a4=0, a5=0;$/;" v +a5 ../include/hermite6_interpolation_csource.h /^double a1=0, a2=0, a3=0, a4=0, a5=0;$/;" v +a5 ../tools/hermite6_interpolation_csource.h /^double a1=0, a2=0, a3=0, a4=0, a5=0;$/;" v +aH ../include/primordial.h /^ double aH;$/;" m struct:primordial_inflation_parameters_and_workspace +a_eq ../include/background.h /^ double a_eq; \/**< scale factor at radiation\/matter equality *\/$/;" m struct:background +a_idm_dr ../include/thermodynamics.h /^ double a_idm_dr; \/**< strength of the coupling between interacting dark matter and interacting dark radiation (idm-idr) *\/$/;" m struct:thermo +a_today ../include/background.h /^ double a_today; \/**< scale factor today (arbitrary and irrelevant for most purposes) *\/$/;" m struct:background +absFdelRm ../include/evolver_ndf15.h /^ double * absFdelRm;$/;" m struct:numjac_workspace +absFvalue ../include/evolver_ndf15.h /^ double * absFvalue;$/;" m struct:numjac_workspace +absFvalueRm ../include/evolver_ndf15.h /^ double * absFvalueRm;$/;" m struct:numjac_workspace +adaptive_integration_tree_node ../include/quadrature.h /^typedef struct adaptive_integration_tree_node{$/;" s +add ../cpp/ClassEngine.hh /^ template unsigned add(const string& key,const T& val){$/;" f class:ClassParams +adjust_stepsize ../tools/evolver_ndf15.c /^int adjust_stepsize(double **dif, double abshdivabshlast, int neq,int k){$/;" f +age ../include/background.h /^ double age; \/**< age in Gyears *\/$/;" m struct:background +airy_cheb_approx ../tools/hyperspherical.c /^double airy_cheb_approx(double z){$/;" f +ak2 ../include/dei_rkck.h /^ double * ak2;$/;" m struct:generic_integrator_workspace +ak3 ../include/dei_rkck.h /^ double * ak3;$/;" m struct:generic_integrator_workspace +ak4 ../include/dei_rkck.h /^ double * ak4;$/;" m struct:generic_integrator_workspace +ak5 ../include/dei_rkck.h /^ double * ak5;$/;" m struct:generic_integrator_workspace +ak6 ../include/dei_rkck.h /^ double * ak6;$/;" m struct:generic_integrator_workspace +alpha_ad_bi ../include/primordial.h /^ double alpha_ad_bi; \/**< ADxBI cross-correlation running *\/$/;" m struct:primordial +alpha_ad_cdi ../include/primordial.h /^ double alpha_ad_cdi; \/**< ADxCDI cross-correlation running *\/$/;" m struct:primordial +alpha_ad_nid ../include/primordial.h /^ double alpha_ad_nid; \/**< ADxNID cross-correlation running *\/$/;" m struct:primordial +alpha_ad_niv ../include/primordial.h /^ double alpha_ad_niv; \/**< ADxNIV cross-correlation running *\/$/;" m struct:primordial +alpha_bi ../include/primordial.h /^ double alpha_bi; \/**< BI running *\/$/;" m struct:primordial +alpha_bi_cdi ../include/primordial.h /^ double alpha_bi_cdi; \/**< BIxCDI cross-correlation running *\/$/;" m struct:primordial +alpha_bi_nid ../include/primordial.h /^ double alpha_bi_nid; \/**< BIxNIV cross-correlation running *\/$/;" m struct:primordial +alpha_bi_niv ../include/primordial.h /^ double alpha_bi_niv; \/**< BIxNIV cross-correlation running *\/$/;" m struct:primordial +alpha_cdi ../include/primordial.h /^ double alpha_cdi; \/**< CDI running *\/$/;" m struct:primordial +alpha_cdi_nid ../include/primordial.h /^ double alpha_cdi_nid; \/**< CDIxNID cross-correlation running *\/$/;" m struct:primordial +alpha_cdi_niv ../include/primordial.h /^ double alpha_cdi_niv; \/**< CDIxNIV cross-correlation running *\/$/;" m struct:primordial +alpha_idm_dr ../include/perturbations.h /^ double * alpha_idm_dr; \/**< Angular contribution to collisional term at l>=2 for idm_fr-idr *\/$/;" m struct:perturbs +alpha_nid ../include/primordial.h /^ double alpha_nid; \/**< NID running *\/$/;" m struct:primordial +alpha_nid_niv ../include/primordial.h /^ double alpha_nid_niv; \/**< NIDxNIV cross-correlation running *\/$/;" m struct:primordial +alpha_niv ../include/primordial.h /^ double alpha_niv; \/**< NIV running *\/$/;" m struct:primordial +alpha_s ../include/primordial.h /^ double alpha_s; \/**< usual scalar running *\/$/;" m struct:primordial +alpha_t ../include/primordial.h /^ double alpha_t; \/**< usual tensor running *\/$/;" m struct:primordial +amplitude ../include/primordial.h /^ double ** amplitude; \/**< all amplitudes in matrix form: amplitude[index_md][index_ic1_ic2] *\/$/;" m struct:primordial +analytic_Pk ../include/primordial.h /^ analytic_Pk,$/;" e enum:primordial_spectrum_type +analytical ../include/primordial.h /^ analytical$/;" e enum:inflation_module_behavior +angular_rescaling ../include/thermodynamics.h /^ double angular_rescaling; \/**< [ratio ra_rec \/ (tau0-tau_rec)]: gives CMB rescaling in angular space relative to flat model (=1 for curvature K=0) *\/$/;" m struct:thermo +angular_rescaling ../include/transfer.h /^ double angular_rescaling; \/**< correction between l and k space due to curvature (= comoving angular diameter distance to recombination \/ comoving radius to recombination) *\/$/;" m struct:transfers +annihilation ../include/thermodynamics.h /^ double annihilation; \/**< parameter describing CDM annihilation (f \/ m_cdm, see e.g. 0905.0003) *\/$/;" m struct:recombination +annihilation ../include/thermodynamics.h /^ double annihilation; \/**< parameter describing CDM annihilation (f \/ m_cdm, see e.g. 0905.0003) *\/$/;" m struct:thermo +annihilation_f_halo ../include/thermodynamics.h /^ double annihilation_f_halo; \/**< takes the contribution of DM annihilation in halos into account*\/$/;" m struct:recombination +annihilation_f_halo ../include/thermodynamics.h /^ double annihilation_f_halo; \/**< takes the contribution of DM annihilation in halos into account*\/$/;" m struct:thermo +annihilation_variation ../include/thermodynamics.h /^ double annihilation_variation; \/**< if this parameter is non-zero,$/;" m struct:recombination +annihilation_variation ../include/thermodynamics.h /^ double annihilation_variation; \/**< if this parameter is non-zero,$/;" m struct:thermo +annihilation_z ../include/thermodynamics.h /^ double annihilation_z; \/**< if annihilation_variation is non-zero,$/;" m struct:recombination +annihilation_z ../include/thermodynamics.h /^ double annihilation_z; \/**< if annihilation_variation is non-zero,$/;" m struct:thermo +annihilation_z_halo ../include/thermodynamics.h /^ double annihilation_z_halo; \/**< characteristic redshift for DM annihilation in halos*\/$/;" m struct:recombination +annihilation_z_halo ../include/thermodynamics.h /^ double annihilation_z_halo; \/**< characteristic redshift for DM annihilation in halos*\/$/;" m struct:thermo +annihilation_zmax ../include/thermodynamics.h /^ double annihilation_zmax; \/**< if annihilation_variation is non-zero,$/;" m struct:recombination +annihilation_zmax ../include/thermodynamics.h /^ double annihilation_zmax; \/**< if annihilation_variation is non-zero,$/;" m struct:thermo +annihilation_zmin ../include/thermodynamics.h /^ double annihilation_zmin; \/**< if annihilation_variation is non-zero,$/;" m struct:recombination +annihilation_zmin ../include/thermodynamics.h /^ double annihilation_zmin; \/**< if annihilation_variation is non-zero,$/;" m struct:thermo +ap_size ../include/perturbations.h /^ int ap_size; \/**< number of relevant approximations for a given mode *\/$/;" m struct:perturb_workspace +app_over_a ../include/primordial.h /^ double app_over_a;$/;" m struct:primordial_inflation_parameters_and_workspace +approx ../include/perturbations.h /^ int * approx; \/**< array of approximation flags holding at a given time: approx[index_ap] *\/$/;" m struct:perturb_workspace +array_derive ../tools/arrays.c /^int array_derive($/;" f +array_derive1_order2_table_line_to_line ../tools/arrays.c /^int array_derive1_order2_table_line_to_line($/;" f +array_derive2_order2_table_line_to_line ../tools/arrays.c /^int array_derive2_order2_table_line_to_line($/;" f +array_derive_spline ../tools/arrays.c /^int array_derive_spline($/;" f +array_derive_spline_table_line_to_line ../tools/arrays.c /^int array_derive_spline_table_line_to_line($/;" f +array_derive_two ../tools/arrays.c /^int array_derive_two($/;" f +array_integrate ../tools/arrays.c /^int array_integrate($/;" f +array_integrate_all ../tools/arrays.c /^int array_integrate_all($/;" f +array_integrate_all_spline ../tools/arrays.c /^int array_integrate_all_spline($/;" f +array_integrate_all_trapzd_or_spline ../tools/arrays.c /^int array_integrate_all_trapzd_or_spline($/;" f +array_integrate_ratio ../tools/arrays.c /^int array_integrate_ratio($/;" f +array_integrate_spline_table_line_to_line ../tools/arrays.c /^int array_integrate_spline_table_line_to_line($/;" f +array_interpolate ../tools/arrays.c /^int array_interpolate($/;" f +array_interpolate_cubic_equal ../tools/arrays.c /^int array_interpolate_cubic_equal($/;" f +array_interpolate_equal ../tools/arrays.c /^int array_interpolate_equal($/;" f +array_interpolate_extrapolate_logspline_loglinear_one_column ../tools/arrays.c /^int array_interpolate_extrapolate_logspline_loglinear_one_column($/;" f +array_interpolate_extrapolate_spline_one_column ../tools/arrays.c /^int array_interpolate_extrapolate_spline_one_column($/;" f +array_interpolate_growing_closeby ../tools/arrays.c /^int array_interpolate_growing_closeby($/;" f +array_interpolate_linear ../tools/arrays.c /^int array_interpolate_linear($/;" f +array_interpolate_logspline ../tools/arrays.c /^int array_interpolate_logspline($/;" f +array_interpolate_one_growing_closeby ../tools/arrays.c /^int array_interpolate_one_growing_closeby($/;" f +array_interpolate_parabola ../tools/arrays.c /^int array_interpolate_parabola(double x1,$/;" f +array_interpolate_spline ../tools/arrays.c /^int array_interpolate_spline($/;" f +array_interpolate_spline_growing_closeby ../tools/arrays.c /^int array_interpolate_spline_growing_closeby($/;" f +array_interpolate_spline_growing_hunt ../tools/arrays.c /^int array_interpolate_spline_growing_hunt($/;" f +array_interpolate_spline_one_column ../tools/arrays.c /^int array_interpolate_spline_one_column($/;" f +array_interpolate_two ../tools/arrays.c /^int array_interpolate_two($/;" f +array_interpolate_two_arrays_one_column ../tools/arrays.c /^int array_interpolate_two_arrays_one_column($/;" f +array_interpolate_two_bis ../tools/arrays.c /^int array_interpolate_two_bis($/;" f +array_logspline_table_lines ../tools/arrays.c /^int array_logspline_table_lines($/;" f +array_logspline_table_one_column ../tools/arrays.c /^int array_logspline_table_one_column($/;" f +array_search_bisect ../tools/arrays.c /^int array_search_bisect($/;" f +array_smooth ../tools/arrays.c /^int array_smooth(double * array,$/;" f +array_smooth_trg ../tools/arrays.c /^int array_smooth_trg(double * array,$/;" f +array_spline ../tools/arrays.c /^int array_spline($/;" f +array_spline_table_columns ../tools/arrays.c /^int array_spline_table_columns($/;" f +array_spline_table_columns2 ../tools/arrays.c /^int array_spline_table_columns2($/;" f +array_spline_table_line_to_line ../tools/arrays.c /^int array_spline_table_line_to_line($/;" f +array_spline_table_lines ../tools/arrays.c /^int array_spline_table_lines($/;" f +array_spline_table_one_column ../tools/arrays.c /^int array_spline_table_one_column($/;" f +array_trapezoidal_convolution ../tools/arrays.c /^int array_trapezoidal_convolution($/;" f +array_trapezoidal_integral ../tools/arrays.c /^int array_trapezoidal_integral($/;" f +array_trapezoidal_mweights ../tools/arrays.c /^int array_trapezoidal_mweights($/;" f +array_trapezoidal_weights ../tools/arrays.c /^int array_trapezoidal_weights($/;" f +attractor_ic_scf ../include/background.h /^ short attractor_ic_scf; \/**< whether the scalar field has attractor initial conditions *\/$/;" m struct:background +b ../include/hermite3_interpolation_csource.h /^double b[3]={0.,0.};$/;" v +b ../include/hermite4_interpolation_csource.h /^double b[3]={0.,0.,0.};$/;" v +b ../tools/hermite3_interpolation_csource.h /^double b[3]={0.,0.};$/;" v +b ../tools/hermite4_interpolation_csource.h /^double b[3]={0.,0.,0.};$/;" v +b1 ../include/hermite6_interpolation_csource.h /^double b1=0, b2=0, b3=0, b4=0, b5=0;$/;" v +b1 ../tools/hermite6_interpolation_csource.h /^double b1=0, b2=0, b3=0, b4=0, b5=0;$/;" v +b2 ../include/hermite6_interpolation_csource.h /^double b1=0, b2=0, b3=0, b4=0, b5=0;$/;" v +b2 ../tools/hermite6_interpolation_csource.h /^double b1=0, b2=0, b3=0, b4=0, b5=0;$/;" v +b3 ../include/hermite6_interpolation_csource.h /^double b1=0, b2=0, b3=0, b4=0, b5=0;$/;" v +b3 ../tools/hermite6_interpolation_csource.h /^double b1=0, b2=0, b3=0, b4=0, b5=0;$/;" v +b4 ../include/hermite6_interpolation_csource.h /^double b1=0, b2=0, b3=0, b4=0, b5=0;$/;" v +b4 ../tools/hermite6_interpolation_csource.h /^double b1=0, b2=0, b3=0, b4=0, b5=0;$/;" v +b5 ../include/hermite6_interpolation_csource.h /^double b1=0, b2=0, b3=0, b4=0, b5=0;$/;" v +b5 ../tools/hermite6_interpolation_csource.h /^double b1=0, b2=0, b3=0, b4=0, b5=0;$/;" v +b_idr ../include/thermodynamics.h /^ double b_idr; \/**< strength of the self coupling for interacting dark radiation (idr-idr) *\/$/;" m struct:thermo +ba ../cpp/ClassEngine.hh /^ struct background ba; \/* for cosmological background *\/$/;" m class:ClassEngine typeref:struct:ClassEngine::background +background ../include/background.h /^struct background$/;" s +background_at_tau background.c /^int background_at_tau($/;" f +background_derivs background.c /^int background_derivs($/;" f +background_find_equality background.c /^int background_find_equality($/;" f +background_free background.c /^int background_free($/;" f +background_free_input background.c /^int background_free_input($/;" f +background_free_noinput background.c /^int background_free_noinput($/;" f +background_functions background.c /^int background_functions($/;" f +background_indices background.c /^int background_indices($/;" f +background_init background.c /^int background_init($/;" f +background_initial_conditions background.c /^int background_initial_conditions($/;" f +background_ncdm_M_from_Omega background.c /^int background_ncdm_M_from_Omega($/;" f +background_ncdm_distribution background.c /^int background_ncdm_distribution($/;" f +background_ncdm_init background.c /^int background_ncdm_init($/;" f +background_ncdm_momenta background.c /^int background_ncdm_momenta($/;" f +background_ncdm_test_function background.c /^int background_ncdm_test_function($/;" f +background_output_budget background.c /^int background_output_budget($/;" f +background_output_data background.c /^int background_output_data($/;" f +background_output_titles background.c /^int background_output_titles(struct background * pba,$/;" f +background_parameters_and_workspace ../include/background.h /^struct background_parameters_and_workspace {$/;" s +background_parameters_for_distributions ../include/background.h /^struct background_parameters_for_distributions {$/;" s +background_solve background.c /^int background_solve($/;" f +background_table ../include/background.h /^ double * background_table; \/**< table background_table[index_tau*pba->bg_size+pba->index_bg] with all other quantities (array of size bg_size*bt_size) **\/$/;" m struct:background +background_tau_of_z background.c /^int background_tau_of_z($/;" f +background_verbose ../include/background.h /^ short background_verbose; \/**< flag regulating the amount of information sent to standard output (none if set to zero) *\/$/;" m struct:background +background_w_fld background.c /^int background_w_fld($/;" f +backward ../include/primordial.h /^ backward,$/;" e enum:integration_direction +behavior ../include/primordial.h /^ enum inflation_module_behavior behavior; \/**< Specifies if the inflation module computes the primordial spectrum numerically (default) or analytically*\/$/;" m struct:primordial typeref:enum:primordial::inflation_module_behavior +beta ../include/hermite3_interpolation_csource.h /^double beta = pHIS->beta;$/;" v +beta ../include/hermite4_interpolation_csource.h /^double beta = pHIS->beta;$/;" v +beta ../include/hermite6_interpolation_csource.h /^double beta, beta2, *xvec, *sinK, *cotK;$/;" v +beta ../include/hyperspherical.h /^ double beta;$/;" m struct:WKB_parameters +beta ../include/hyperspherical.h /^ double beta;$/;" m struct:HypersphericalInterpolationStructure +beta ../tools/hermite3_interpolation_csource.h /^double beta = pHIS->beta;$/;" v +beta ../tools/hermite4_interpolation_csource.h /^double beta = pHIS->beta;$/;" v +beta ../tools/hermite6_interpolation_csource.h /^double beta, beta2, *xvec, *sinK, *cotK;$/;" v +beta2 ../include/hermite3_interpolation_csource.h /^double beta2 = beta*beta;$/;" v +beta2 ../include/hermite4_interpolation_csource.h /^double beta2 = beta*beta;$/;" v +beta2 ../include/hermite6_interpolation_csource.h /^double beta, beta2, *xvec, *sinK, *cotK;$/;" v +beta2 ../tools/hermite3_interpolation_csource.h /^double beta2 = beta*beta;$/;" v +beta2 ../tools/hermite4_interpolation_csource.h /^double beta2 = beta*beta;$/;" v +beta2 ../tools/hermite6_interpolation_csource.h /^double beta, beta2, *xvec, *sinK, *cotK;$/;" v +beta_idr ../include/perturbations.h /^ double * beta_idr; \/**< Angular contribution to collisional term at l>=2 for idr-idr *\/$/;" m struct:perturbs +beta_s ../include/primordial.h /^ double beta_s; \/**< running of running *\/$/;" m struct:primordial +bg_size ../include/background.h /^ int bg_size; \/**< size of background vector in the "long format" *\/$/;" m struct:background +bg_size_normal ../include/background.h /^ int bg_size_normal; \/**< size of background vector in the "normal format" *\/$/;" m struct:background +bg_size_short ../include/background.h /^ int bg_size_short; \/**< size of background vector in the "short format" *\/$/;" m struct:background +bi_B_size ../include/background.h /^ int bi_B_size; \/**< Number of {B} parameters *\/$/;" m struct:background +bi_size ../include/background.h /^ int bi_size; \/**< Number of {B}+{C} parameters *\/$/;" m struct:background +binned_reio_num ../include/thermodynamics.h /^ int binned_reio_num; \/**< with how many bins do we want to describe reionization? *\/$/;" m struct:thermo +binned_reio_step_sharpness ../include/thermodynamics.h /^ double binned_reio_step_sharpness; \/**< sharpness of tanh() step interpolating between binned values *\/$/;" m struct:thermo +binned_reio_xe ../include/thermodynamics.h /^ double * binned_reio_xe; \/**< imposed \\f$ X_e(z)\\f$ value at center of each bin *\/$/;" m struct:thermo +binned_reio_z ../include/thermodynamics.h /^ double * binned_reio_z; \/**< central z value for each bin *\/$/;" m struct:thermo +bt_size ../include/background.h /^ int bt_size; \/**< number of lines (i.e. time-steps) in the array *\/$/;" m struct:background +buffer ../include/growTable.h /^ void* buffer; \/**< stack of data *\/$/;" m struct:__anon1 +burn_tree ../tools/quadrature.c /^int burn_tree(qss_node *node){$/;" f +c ../include/hermite3_interpolation_csource.h /^double c[3]={0.,0.};$/;" v +c ../include/hermite4_interpolation_csource.h /^double c[3]={0.,0.,0.};$/;" v +c ../tools/hermite3_interpolation_csource.h /^double c[3]={0.,0.};$/;" v +c ../tools/hermite4_interpolation_csource.h /^double c[3]={0.,0.,0.};$/;" v +c1 ../include/hermite6_interpolation_csource.h /^double c1=0, c2=0, c3=0, c4=0, c5=0;$/;" v +c1 ../tools/hermite6_interpolation_csource.h /^double c1=0, c2=0, c3=0, c4=0, c5=0;$/;" v +c2 ../include/hermite6_interpolation_csource.h /^double c1=0, c2=0, c3=0, c4=0, c5=0;$/;" v +c2 ../tools/hermite6_interpolation_csource.h /^double c1=0, c2=0, c3=0, c4=0, c5=0;$/;" v +c3 ../include/hermite6_interpolation_csource.h /^double c1=0, c2=0, c3=0, c4=0, c5=0;$/;" v +c3 ../tools/hermite6_interpolation_csource.h /^double c1=0, c2=0, c3=0, c4=0, c5=0;$/;" v +c4 ../include/hermite6_interpolation_csource.h /^double c1=0, c2=0, c3=0, c4=0, c5=0;$/;" v +c4 ../tools/hermite6_interpolation_csource.h /^double c1=0, c2=0, c3=0, c4=0, c5=0;$/;" v +c5 ../include/hermite6_interpolation_csource.h /^double c1=0, c2=0, c3=0, c4=0, c5=0;$/;" v +c5 ../tools/hermite6_interpolation_csource.h /^double c1=0, c2=0, c3=0, c4=0, c5=0;$/;" v +c_ad_bi ../include/primordial.h /^ double c_ad_bi; \/**< ADxBI cross-correlation at pivot scale, from -1 to 1 *\/$/;" m struct:primordial +c_ad_cdi ../include/primordial.h /^ double c_ad_cdi; \/**< ADxCDI cross-correlation at pivot scale, from -1 to 1 *\/$/;" m struct:primordial +c_ad_nid ../include/primordial.h /^ double c_ad_nid; \/**< ADxNID cross-correlation at pivot scale, from -1 to 1 *\/$/;" m struct:primordial +c_ad_niv ../include/primordial.h /^ double c_ad_niv; \/**< ADxNIV cross-correlation at pivot scale, from -1 to 1 *\/$/;" m struct:primordial +c_bi_cdi ../include/primordial.h /^ double c_bi_cdi; \/**< BIxCDI cross-correlation at pivot scale, from -1 to 1 *\/$/;" m struct:primordial +c_bi_nid ../include/primordial.h /^ double c_bi_nid; \/**< BIxNIV cross-correlation at pivot scale, from -1 to 1 *\/$/;" m struct:primordial +c_bi_niv ../include/primordial.h /^ double c_bi_niv; \/**< BIxNIV cross-correlation at pivot scale, from -1 to 1 *\/$/;" m struct:primordial +c_cdi_nid ../include/primordial.h /^ double c_cdi_nid; \/**< CDIxNID cross-correlation at pivot scale, from -1 to 1 *\/$/;" m struct:primordial +c_cdi_niv ../include/primordial.h /^ double c_cdi_niv; \/**< CDIxNIV cross-correlation at pivot scale, from -1 to 1 *\/$/;" m struct:primordial +c_gamma_over_c_fld ../include/background.h /^ double c_gamma_over_c_fld; \/**< ppf parameter defined in eq. (16) of 0808.3125 [astro-ph] *\/$/;" m struct:background +c_min ../include/nonlinear.h /^ double c_min; \/** for HMcode: minimum concentration in Bullock 2001 mass-concentration relation *\/$/;" m struct:nonlinear +c_nid_niv ../include/primordial.h /^ double c_nid_niv; \/**< NIDxNIV cross-correlation at pivot scale, from -1 to 1 *\/$/;" m struct:primordial +calc_C ../tools/evolver_ndf15.c /^int calc_C(struct jacobian *jac){$/;" f +call_perturb_sources_at_tau ../cpp/ClassEngine.cc /^void ClassEngine::call_perturb_sources_at_tau($/;" f class:ClassEngine +camb_format ../include/common.h /^enum file_format {class_format,camb_format};$/;" e enum:file_format +cheb ../tools/hyperspherical.c /^double cheb(double x, int n, const double A[]){$/;" f +chi ../include/transfer.h /^ double * chi; \/**< chi[index_tau]: value of argument of bessel$/;" m struct:transfer_workspace +chi_at_phimin ../include/hyperspherical.h /^ double * chi_at_phimin; \/\/ vector x_min[index-l] below which neglect Bessels$/;" m struct:HypersphericalInterpolationStructure +cl ../cpp/ClassEngine.hh /^ double * cl;$/;" m class:ClassEngine +cl ../include/spectra.h /^ double ** cl; \/**< table of anisotropy spectra for each mode, multipole, pair of initial conditions and types, cl[index_md][(index_l * psp->ic_ic_size[index_md] + index_ic1_ic2) * psp->ct_size + index_ct] *\/$/;" m struct:spectra +cl_lens ../include/lensing.h /^ double * cl_lens; \/**< table of anisotropy spectra for each$/;" m struct:lensing +class_alloc ../include/common.h 135;" d +class_alloc_message ../include/common.h 131;" d +class_alloc_parallel ../include/common.h 146;" d +class_at_least_two_of_three ../include/input.h 66;" d +class_build_error_string ../include/common.h 84;" d +class_call ../include/common.h 114;" d +class_call_except ../include/common.h 97;" d +class_call_message ../include/common.h 93;" d +class_call_parallel ../include/common.h 118;" d +class_call_try ../include/common.h 106;" d +class_calloc ../include/common.h 160;" d +class_define_index ../include/common.h 237;" d +class_format ../include/common.h /^enum file_format {class_format,camb_format};$/;" e enum:file_format +class_fprintf_columntitle ../include/common.h 274;" d +class_fprintf_double ../include/common.h 248;" d +class_fprintf_double_or_default ../include/common.h 255;" d +class_fprintf_int ../include/common.h 265;" d +class_fzero_ridder input.c /^int class_fzero_ridder(int (*func)(double x, void *param, double *y, ErrorMsg error_message),$/;" f +class_main ../cpp/ClassEngine.cc /^int ClassEngine::class_main($/;" f class:ClassEngine +class_none_of_three ../include/input.h 71;" d +class_open ../include/common.h 228;" d +class_precision_parameter ../include/precision_macros.h 10;" d +class_precision_parameter ../include/precision_macros.h 14;" d +class_precision_parameter ../include/precision_macros.h 6;" d +class_precision_parameter ../include/precisions.h 496;" d +class_protect_fprintf ../tools/common.c /^void class_protect_fprintf(FILE* stream, char* tpl,...) {$/;" f +class_protect_memcpy ../tools/common.c /^void* class_protect_memcpy(void* dest, void* from, size_t sz) {$/;" f +class_protect_sprintf ../tools/common.c /^void class_protect_sprintf(char* dest, char* tpl,...) {$/;" f +class_read_double ../include/input.h 20;" d +class_read_double_one_of_two ../include/input.h 48;" d +class_read_int ../include/input.h 30;" d +class_read_list_of_doubles ../include/input.h 107;" d +class_read_list_of_doubles_or_default ../include/input.h 75;" d +class_read_list_of_integers ../include/input.h 120;" d +class_read_list_of_integers_or_default ../include/input.h 91;" d +class_read_string ../include/input.h 39;" d +class_realloc ../include/common.h 171;" d +class_stop ../include/common.h 219;" d +class_store_columntitle ../include/common.h 284;" d +class_store_double ../include/common.h 294;" d +class_store_double_or_default ../include/common.h 302;" d +class_string_parameter ../include/precision_macros.h 20;" d +class_string_parameter ../include/precision_macros.h 25;" d +class_string_parameter ../include/precision_macros.h 29;" d +class_string_parameter ../include/precisions.h 497;" d +class_test ../include/common.h 200;" d +class_test_except ../include/common.h 192;" d +class_test_message ../include/common.h 183;" d +class_test_parallel ../include/common.h 207;" d +class_type_parameter ../include/precision_macros.h 35;" d +class_type_parameter ../include/precision_macros.h 39;" d +class_type_parameter ../include/precision_macros.h 43;" d +class_type_parameter ../include/precisions.h 498;" d +class_version input.c /^int class_version($/;" f +cleanup_generic_integrator ../tools/dei_rkck.c /^int cleanup_generic_integrator(struct generic_integrator_workspace * pgi){$/;" f +closed ../include/background.h /^enum spatial_curvature {flat,open,closed};$/;" e enum:spatial_curvature +cltype ../cpp/Engine.hh /^ enum cltype {TT=0,EE,TE,BB,PP,TP,EP}; \/\/P stands for phi (lensing potential)$/;" g class:Engine +cnzmax ../include/evolver_ndf15.h /^ int cnzmax;$/;" m struct:jacobian +coef1 ../tools/hyperspherical.c /^double coef1(double z){$/;" f +coef2 ../tools/hyperspherical.c /^double coef2(double z){$/;" f +coef3 ../tools/hyperspherical.c /^double coef3(double z){$/;" f +coef4 ../tools/hyperspherical.c /^double coef4(double z){$/;" f +col_group ../include/evolver_ndf15.h /^ int *col_group; \/* Column grouping. Groups go from 0 to max_group*\/$/;" m struct:jacobian +col_wi ../include/evolver_ndf15.h /^ int *col_wi; \/* Workarray for column grouping*\/$/;" m struct:jacobian +column_grouping ../tools/sparse.c /^int column_grouping(sp_mat *G, int *col_g, int *filled){$/;" f +command ../include/primordial.h /^ char* command; \/**< string with the command for calling 'external_Pk' *\/$/;" m struct:primordial +compare_doubles input.c /^int compare_doubles(const void *a,const void *b) {$/;" f +compare_integers input.c /^int compare_integers (const void * elem1, const void * elem2) {$/;" f +compromise_CLASS ../include/perturbations.h /^enum tca_method {first_order_MB,first_order_CAMB,first_order_CLASS,second_order_CRS,second_order_CLASS,compromise_CLASS};$/;" e enum:tca_method +computation_stage ../include/input.h /^enum computation_stage {cs_background, cs_thermodynamics, cs_perturbations,$/;" g +computeCls ../cpp/ClassEngine.cc /^int ClassEngine::computeCls(){$/;" f class:ClassEngine +compute_Hermite ../tools/quadrature.c /^int compute_Hermite(double *x, double *w, int N, int alpha, double *b, double *c){$/;" f +compute_Laguerre ../tools/quadrature.c /^int compute_Laguerre(double *x, double *w, int N, double alpha, double *b, double *c,int totalweight){$/;" f +compute_cb2_derivatives ../include/thermodynamics.h /^ short compute_cb2_derivatives; \/**< do we want to include in computation derivatives of baryon sound speed? *\/$/;" m struct:thermo +compute_damping_scale ../include/thermodynamics.h /^ short compute_damping_scale; \/**< do we want to compute the simplest analytic approximation to the photon damping (or diffusion) scale? *\/$/;" m struct:thermo +conformal ../include/primordial.h /^ conformal,$/;" e enum:time_definition +conformal_age ../include/background.h /^ double conformal_age; \/**< conformal age in Mpc *\/$/;" m struct:background +cosine_integral ../tools/trigonometric_integrals.c /^int cosine_integral($/;" f +cotK ../include/hermite3_interpolation_csource.h /^double *cotK = pHIS->cotK;$/;" v +cotK ../include/hermite4_interpolation_csource.h /^double *cotK = pHIS->cotK;$/;" v +cotK ../include/hermite6_interpolation_csource.h /^double beta, beta2, *xvec, *sinK, *cotK;$/;" v +cotK ../include/hyperspherical.h /^ double *cotK; \/\/Vector of cot_K(xvec)$/;" m struct:HypersphericalInterpolationStructure +cotK ../tools/hermite3_interpolation_csource.h /^double *cotK = pHIS->cotK;$/;" v +cotK ../tools/hermite4_interpolation_csource.h /^double *cotK = pHIS->cotK;$/;" v +cotK ../tools/hermite6_interpolation_csource.h /^double beta, beta2, *xvec, *sinK, *cotK;$/;" v +cotKgen ../include/transfer.h /^ double * cotKgen; \/**< cotKgen[index_tau]: useful trigonometric function *\/$/;" m struct:transfer_workspace +cotKm ../include/hermite3_interpolation_csource.h /^double cotKm=0,sinKm=0;$/;" v +cotKm ../include/hermite4_interpolation_csource.h /^double cotKm=0,cotKp=0,sinKm=0,sinKp=0;$/;" v +cotKm ../include/hermite6_interpolation_csource.h /^double cotKm=0,cotKp=0,sinKm=0,sinKp=0, sinKm2, sinKp2;$/;" v +cotKm ../tools/hermite3_interpolation_csource.h /^double cotKm=0,sinKm=0;$/;" v +cotKm ../tools/hermite4_interpolation_csource.h /^double cotKm=0,cotKp=0,sinKm=0,sinKp=0;$/;" v +cotKm ../tools/hermite6_interpolation_csource.h /^double cotKm=0,cotKp=0,sinKm=0,sinKp=0, sinKm2, sinKp2;$/;" v +cotKp ../include/hermite3_interpolation_csource.h /^double cotKp=0,sinKp=0;$/;" v +cotKp ../include/hermite4_interpolation_csource.h /^double cotKm=0,cotKp=0,sinKm=0,sinKp=0;$/;" v +cotKp ../include/hermite6_interpolation_csource.h /^double cotKm=0,cotKp=0,sinKm=0,sinKp=0, sinKm2, sinKp2;$/;" v +cotKp ../tools/hermite3_interpolation_csource.h /^double cotKp=0,sinKp=0;$/;" v +cotKp ../tools/hermite4_interpolation_csource.h /^double cotKm=0,cotKp=0,sinKm=0,sinKp=0;$/;" v +cotKp ../tools/hermite6_interpolation_csource.h /^double cotKm=0,cotKp=0,sinKm=0,sinKp=0, sinKm2, sinKp2;$/;" v +cs2_fld ../include/background.h /^ double cs2_fld; \/**< \\f$ c^2_{s~DE} \\f$: sound speed of the fluid$/;" m struct:background +cs_background ../include/input.h /^enum computation_stage {cs_background, cs_thermodynamics, cs_perturbations,$/;" e enum:computation_stage +cs_nonlinear ../include/input.h /^ cs_primordial, cs_nonlinear, cs_transfer, cs_spectra};$/;" e enum:computation_stage +cs_perturbations ../include/input.h /^enum computation_stage {cs_background, cs_thermodynamics, cs_perturbations,$/;" e enum:computation_stage +cs_primordial ../include/input.h /^ cs_primordial, cs_nonlinear, cs_transfer, cs_spectra};$/;" e enum:computation_stage +cs_spectra ../include/input.h /^ cs_primordial, cs_nonlinear, cs_transfer, cs_spectra};$/;" e enum:computation_stage +cs_thermodynamics ../include/input.h /^enum computation_stage {cs_background, cs_thermodynamics, cs_perturbations,$/;" e enum:computation_stage +cs_transfer ../include/input.h /^ cs_primordial, cs_nonlinear, cs_transfer, cs_spectra};$/;" e enum:computation_stage +cscKgen ../include/transfer.h /^ double * cscKgen; \/**< cscKgen[index_tau]: useful trigonometric function *\/$/;" m struct:transfer_workspace +csz ../include/growTable.h /^ long csz; \/**< real size *\/$/;" m struct:__anon1 +ct_size ../include/spectra.h /^ int ct_size; \/**< number of \\f$ C_l \\f$ types requested *\/$/;" m struct:spectra +cubature_order_eleven ../tools/quadrature.c /^int cubature_order_eleven($/;" f +current_border_idx ../include/hermite3_interpolation_csource.h /^int j, nx, current_border_idx=0;$/;" v +current_border_idx ../include/hermite4_interpolation_csource.h /^int j, nx, current_border_idx=0;$/;" v +current_border_idx ../include/hermite6_interpolation_csource.h /^int K, l, j, nx, current_border_idx=0;$/;" v +current_border_idx ../tools/hermite3_interpolation_csource.h /^int j, nx, current_border_idx=0;$/;" v +current_border_idx ../tools/hermite4_interpolation_csource.h /^int j, nx, current_border_idx=0;$/;" v +current_border_idx ../tools/hermite6_interpolation_csource.h /^int K, l, j, nx, current_border_idx=0;$/;" v +custom1 ../include/primordial.h /^ double custom1; \/**< one parameter of the primordial computed in 'external_Pk' *\/$/;" m struct:primordial +custom10 ../include/primordial.h /^ double custom10; \/**< one parameter of the primordial computed in 'external_Pk' *\/$/;" m struct:primordial +custom2 ../include/primordial.h /^ double custom2; \/**< one parameter of the primordial computed in 'external_Pk' *\/$/;" m struct:primordial +custom3 ../include/primordial.h /^ double custom3; \/**< one parameter of the primordial computed in 'external_Pk' *\/$/;" m struct:primordial +custom4 ../include/primordial.h /^ double custom4; \/**< one parameter of the primordial computed in 'external_Pk' *\/$/;" m struct:primordial +custom5 ../include/primordial.h /^ double custom5; \/**< one parameter of the primordial computed in 'external_Pk' *\/$/;" m struct:primordial +custom6 ../include/primordial.h /^ double custom6; \/**< one parameter of the primordial computed in 'external_Pk' *\/$/;" m struct:primordial +custom7 ../include/primordial.h /^ double custom7; \/**< one parameter of the primordial computed in 'external_Pk' *\/$/;" m struct:primordial +custom8 ../include/primordial.h /^ double custom8; \/**< one parameter of the primordial computed in 'external_Pk' *\/$/;" m struct:primordial +custom9 ../include/primordial.h /^ double custom9; \/**< one parameter of the primordial computed in 'external_Pk' *\/$/;" m struct:primordial +d2background_dtau2_table ../include/background.h /^ double * d2background_dtau2_table; \/**< table d2background_dtau2_table[index_tau*pba->bg_size+pba->index_bg] with values of \\f$ d^2 b_i \/ d\\tau^2 \\f$ (conformal time) *\/$/;" m struct:background +d2f0 ../include/background.h /^ double *d2f0;$/;" m struct:background_parameters_for_distributions +d2tau_dz2_table ../include/background.h /^ double * d2tau_dz2_table; \/**< vector d2tau_dz2_table[index_tau] with values of \\f$ d^2 \\tau \/ dz^2 \\f$ (conformal time) *\/$/;" m struct:background +d2thermodynamics_dz2_table ../include/thermodynamics.h /^ double * d2thermodynamics_dz2_table; \/**< table d2thermodynamics_dz2_table[index_z*pth->tt_size+pba->index_th] with values of \\f$ d^2 t_i \/ dz^2 \\f$ (array of size th_size*tt_size) *\/$/;" m struct:thermo +d2ym ../include/hermite3_interpolation_csource.h /^double d2ym = 0, d3yp=0;$/;" v +d2ym ../include/hermite4_interpolation_csource.h /^double d2ym = 0, d2yp=0;$/;" v +d2ym ../include/hermite6_interpolation_csource.h /^double ym=0, yp=0, dym=0, dyp=0, d2ym=0, d2yp=0, x, z, z2, z3, z4, z5;$/;" v +d2ym ../tools/hermite3_interpolation_csource.h /^double d2ym = 0, d3yp=0;$/;" v +d2ym ../tools/hermite4_interpolation_csource.h /^double d2ym = 0, d2yp=0;$/;" v +d2ym ../tools/hermite6_interpolation_csource.h /^double ym=0, yp=0, dym=0, dyp=0, d2ym=0, d2yp=0, x, z, z2, z3, z4, z5;$/;" v +d2yp ../include/hermite3_interpolation_csource.h /^double d2yp=0;$/;" v +d2yp ../include/hermite4_interpolation_csource.h /^double d2ym = 0, d2yp=0;$/;" v +d2yp ../include/hermite6_interpolation_csource.h /^double ym=0, yp=0, dym=0, dyp=0, d2ym=0, d2yp=0, x, z, z2, z3, z4, z5;$/;" v +d2yp ../tools/hermite3_interpolation_csource.h /^double d2yp=0;$/;" v +d2yp ../tools/hermite4_interpolation_csource.h /^double d2ym = 0, d2yp=0;$/;" v +d2yp ../tools/hermite6_interpolation_csource.h /^double ym=0, yp=0, dym=0, dyp=0, d2ym=0, d2yp=0, x, z, z2, z3, z4, z5;$/;" v +d3ym ../include/hermite4_interpolation_csource.h /^double d3ym=0, d3yp=0;$/;" v +d3ym ../include/hermite6_interpolation_csource.h /^double d3ym = 0, d3yp=0;$/;" v +d3ym ../tools/hermite4_interpolation_csource.h /^double d3ym=0, d3yp=0;$/;" v +d3ym ../tools/hermite6_interpolation_csource.h /^double d3ym = 0, d3yp=0;$/;" v +d3yp ../include/hermite3_interpolation_csource.h /^double d2ym = 0, d3yp=0;$/;" v +d3yp ../include/hermite4_interpolation_csource.h /^double d3ym=0, d3yp=0;$/;" v +d3yp ../include/hermite6_interpolation_csource.h /^double d3ym = 0, d3yp=0;$/;" v +d3yp ../tools/hermite3_interpolation_csource.h /^double d2ym = 0, d3yp=0;$/;" v +d3yp ../tools/hermite4_interpolation_csource.h /^double d3ym=0, d3yp=0;$/;" v +d3yp ../tools/hermite6_interpolation_csource.h /^double d3ym = 0, d3yp=0;$/;" v +d4ym ../include/hermite6_interpolation_csource.h /^double d4ym=0, d4yp=0;$/;" v +d4ym ../tools/hermite6_interpolation_csource.h /^double d4ym=0, d4yp=0;$/;" v +d4yp ../include/hermite6_interpolation_csource.h /^double d4ym=0, d4yp=0;$/;" v +d4yp ../tools/hermite6_interpolation_csource.h /^double d4ym=0, d4yp=0;$/;" v +dH ../include/primordial.h /^ double dH;$/;" m struct:primordial_inflation_parameters_and_workspace +dPhi_l ../include/hermite3_interpolation_csource.h /^double *Phi_l, *dPhi_l;$/;" v +dPhi_l ../include/hermite4_interpolation_csource.h /^double *Phi_l, *dPhi_l;$/;" v +dPhi_l ../include/hermite6_interpolation_csource.h /^double *Phi_l, *dPhi_l;$/;" v +dPhi_l ../tools/hermite3_interpolation_csource.h /^double *Phi_l, *dPhi_l;$/;" v +dPhi_l ../tools/hermite4_interpolation_csource.h /^double *Phi_l, *dPhi_l;$/;" v +dPhi_l ../tools/hermite6_interpolation_csource.h /^double *Phi_l, *dPhi_l;$/;" v +dV ../include/primordial.h /^ double dV;$/;" m struct:primordial_inflation_parameters_and_workspace +dV_e_scf background.c /^double dV_e_scf(struct background *pba,$/;" f +dV_p_scf background.c /^double dV_p_scf($/;" f +dV_scf background.c /^double dV_scf($/;" f +d_size ../include/spectra.h /^ int d_size; \/**< number of bins for which density Cl's are computed *\/$/;" m struct:spectra +da_rec ../include/thermodynamics.h /^ double da_rec; \/**< physical angular diameter distance to recombination *\/$/;" m struct:thermo +da_star ../include/thermodynamics.h /^ double da_star; \/**< physical angular diameter distance to z_star *\/$/;" m struct:thermo +dark_energy_correction ../include/nonlinear.h /^ double dark_energy_correction; \/** this is the ratio [g_wcdm(z_infinity)\/g_lcdm(z_infinity)]^1.5$/;" m struct:nonlinear_workspace +dc_Mead nonlinear_hmcode.c /^double dc_Mead(double a, double Om_m, double f_nu, double g, double G) {$/;" f +ddH ../include/primordial.h /^ double ddH;$/;" m struct:primordial_inflation_parameters_and_workspace +ddV ../include/primordial.h /^ double ddV;$/;" m struct:primordial_inflation_parameters_and_workspace +ddV_e_scf background.c /^double ddV_e_scf(struct background *pba,$/;" f +ddV_p_scf background.c /^double ddV_p_scf($/;" f +ddV_scf background.c /^double ddV_scf($/;" f +ddcl ../include/spectra.h /^ double ** ddcl; \/**< second derivatives of previous table with respect to l, in view of spline interpolation *\/$/;" m struct:spectra +ddcl_lens ../include/lensing.h /^ double * ddcl_lens; \/**< second derivatives for interpolation *\/$/;" m struct:lensing +dddH ../include/primordial.h /^ double dddH;$/;" m struct:primordial_inflation_parameters_and_workspace +ddlate_sources ../include/perturbations.h /^ double *** ddlate_sources; \/**< Pointer towards the splined source interpolation table with second derivatives with respect to time$/;" m struct:perturbs +ddln_pk_ic_l ../include/nonlinear.h /^ double ** ddln_pk_ic_l; \/**< second derivative of above array with respect to log(tau), for spline interpolation. So:$/;" m struct:nonlinear +ddln_pk_l ../include/nonlinear.h /^ double ** ddln_pk_l; \/**< second derivative of above array with respect to log(tau), for spline interpolation. *\/$/;" m struct:nonlinear +ddln_pk_nl ../include/nonlinear.h /^ double ** ddln_pk_nl; \/**< second derivative of above array with respect to log(tau), for spline interpolation. *\/$/;" m struct:nonlinear +ddlnpk ../include/primordial.h /^ double ** ddlnpk; \/**< second derivative of above array, for spline interpolation. So:$/;" m struct:primordial +ddstab ../include/nonlinear.h /^ double * ddstab; \/** Splined sigma *\/$/;" m struct:nonlinear_workspace +decay ../include/thermodynamics.h /^ double decay; \/**< parameter describing CDM decay (f\/tau, see e.g. 1109.6322)*\/$/;" m struct:recombination +decay ../include/thermodynamics.h /^ double decay; \/**< parameter describing CDM decay (f\/tau, see e.g. 1109.6322)*\/$/;" m struct:thermo +deg_ncdm ../include/background.h /^ double * deg_ncdm, deg_ncdm_default; \/**< vector of degeneracy parameters in factor$/;" m struct:background +deg_ncdm_default ../include/background.h /^ double * deg_ncdm, deg_ncdm_default; \/**< vector of degeneracy parameters in factor$/;" m struct:background +del ../include/evolver_ndf15.h /^ double *del;$/;" m struct:numjac_workspace +delta_bc_squared ../include/common.h /^ delta_bc_squared, \/**< delta_bc includes contribution of baryons and cdm only to (delta rho) and to rho *\/$/;" e enum:pk_def +delta_cb ../include/perturbations.h /^ double delta_cb; \/**< relative density perturbation of only cdm and baryon *\/$/;" m struct:perturb_workspace +delta_m ../include/perturbations.h /^ double delta_m; \/**< relative density perturbation of all non-relativistic species *\/$/;" m struct:perturb_workspace +delta_m_squared ../include/common.h /^ delta_m_squared, \/**< normal definition (delta_m includes all non-relativistic species at late times) *\/$/;" e enum:pk_def +delta_ncdm ../include/perturbations.h /^ double * delta_ncdm; \/**< relative density perturbation of each ncdm species *\/$/;" m struct:perturb_workspace +delta_p ../include/perturbations.h /^ double delta_p; \/**< total pressure perturbation (gives Tii) *\/$/;" m struct:perturb_workspace +delta_p_fld ../include/perturbations.h /^ double delta_p_fld; \/**< pressure perturbation of fluid, very non-trivial in PPF scheme *\/$/;" m struct:perturb_workspace +delta_rho ../include/perturbations.h /^ double delta_rho; \/**< total density perturbation (gives delta Too) *\/$/;" m struct:perturb_workspace +delta_rho_fld ../include/perturbations.h /^ double delta_rho_fld; \/**< density perturbation of fluid, not so trivial in PPF scheme *\/$/;" m struct:perturb_workspace +delta_tot_from_poisson_squared ../include/common.h /^ delta_tot_from_poisson_squared \/**< use delta_tot inferred from gravitational potential through Poisson equation *\/$/;" e enum:pk_def +delta_tot_squared ../include/common.h /^ delta_tot_squared, \/**< delta_tot includes all species contributions to (delta rho), and only non-relativistic contributions to rho *\/$/;" e enum:pk_def +delta_x ../include/hyperspherical.h /^ double delta_x; \/\/x-spacing. (xvec is uniformly spaced)$/;" m struct:HypersphericalInterpolationStructure +deltax ../include/hermite3_interpolation_csource.h /^double xmin, xmax, deltax;$/;" v +deltax ../include/hermite4_interpolation_csource.h /^double xmin, xmax, deltax;$/;" v +deltax ../include/hermite6_interpolation_csource.h /^double xmin, xmax, deltax, deltax2, lxlp1;$/;" v +deltax ../tools/hermite3_interpolation_csource.h /^double xmin, xmax, deltax;$/;" v +deltax ../tools/hermite4_interpolation_csource.h /^double xmin, xmax, deltax;$/;" v +deltax ../tools/hermite6_interpolation_csource.h /^double xmin, xmax, deltax, deltax2, lxlp1;$/;" v +deltax2 ../include/hermite6_interpolation_csource.h /^double xmin, xmax, deltax, deltax2, lxlp1;$/;" v +deltax2 ../tools/hermite6_interpolation_csource.h /^double xmin, xmax, deltax, deltax2, lxlp1;$/;" v +dfdy ../include/evolver_ndf15.h /^ double **dfdy;$/;" m struct:jacobian +dfsr ../tools/sparse.c /^void dfsr(int j, sp_mat *G, int *top, int *xik, int *pinv){$/;" f +dirac ../include/perturbations.h /^enum selection_type {gaussian,tophat,dirac};$/;" e enum:selection_type +dlnf0_dlnq_ncdm ../include/background.h /^ double ** dlnf0_dlnq_ncdm; \/**< Pointers to vectors of logarithmic derivatives of p-s-d *\/$/;" m struct:background +dofree ../cpp/ClassEngine.hh /^ bool dofree;$/;" m class:ClassEngine +dphi ../include/hyperspherical.h /^ double *dphi; \/\/Same as phivec, but containing derivatives.$/;" m struct:HypersphericalInterpolationStructure +dphisign ../include/hermite3_interpolation_csource.h /^int phisign = 1, dphisign = 1;$/;" v +dphisign ../include/hermite4_interpolation_csource.h /^int phisign = 1, dphisign = 1;$/;" v +dphisign ../include/hermite6_interpolation_csource.h /^int phisign = 1, dphisign = 1;$/;" v +dphisign ../tools/hermite3_interpolation_csource.h /^int phisign = 1, dphisign = 1;$/;" v +dphisign ../tools/hermite4_interpolation_csource.h /^int phisign = 1, dphisign = 1;$/;" v +dphisign ../tools/hermite6_interpolation_csource.h /^int phisign = 1, dphisign = 1;$/;" v +ds_d ../include/thermodynamics.h /^ double ds_d; \/**< physical sound horizon at baryon drag *\/$/;" m struct:thermo +ds_rec ../include/thermodynamics.h /^ double ds_rec; \/**< physical sound horizon at recombination *\/$/;" m struct:thermo +ds_star ../include/thermodynamics.h /^ double ds_star; \/**< physical sound horizon at z_star *\/$/;" m struct:thermo +dsign ../include/dei_rkck.h 84;" d +dy ../include/perturbations.h /^ double * dy; \/**< time-derivative of the same vector *\/$/;" m struct:perturb_vector +dydx ../include/dei_rkck.h /^ double * dydx;$/;" m struct:generic_integrator_workspace +dym ../include/hermite3_interpolation_csource.h /^double dym=0;$/;" v +dym ../include/hermite4_interpolation_csource.h /^double ym=0, yp=0, dym=0, dyp=0, x;$/;" v +dym ../include/hermite6_interpolation_csource.h /^double ym=0, yp=0, dym=0, dyp=0, d2ym=0, d2yp=0, x, z, z2, z3, z4, z5;$/;" v +dym ../tools/hermite3_interpolation_csource.h /^double dym=0;$/;" v +dym ../tools/hermite4_interpolation_csource.h /^double ym=0, yp=0, dym=0, dyp=0, x;$/;" v +dym ../tools/hermite6_interpolation_csource.h /^double ym=0, yp=0, dym=0, dyp=0, d2ym=0, d2yp=0, x, z, z2, z3, z4, z5;$/;" v +dyp ../include/hermite3_interpolation_csource.h /^double yp=0, dyp=0, x;$/;" v +dyp ../include/hermite4_interpolation_csource.h /^double ym=0, yp=0, dym=0, dyp=0, x;$/;" v +dyp ../include/hermite6_interpolation_csource.h /^double ym=0, yp=0, dym=0, dyp=0, d2ym=0, d2yp=0, x, z, z2, z3, z4, z5;$/;" v +dyp ../tools/hermite3_interpolation_csource.h /^double yp=0, dyp=0, x;$/;" v +dyp ../tools/hermite4_interpolation_csource.h /^double ym=0, yp=0, dym=0, dyp=0, x;$/;" v +dyp ../tools/hermite6_interpolation_csource.h /^double ym=0, yp=0, dym=0, dyp=0, d2ym=0, d2yp=0, x, z, z2, z3, z4, z5;$/;" v +eisw_lisw_split_z ../include/perturbations.h /^ double eisw_lisw_split_z; \/**< at which redshift do we define the cut between eisw and lisw ?*\/$/;" m struct:perturbs +equation_of_state ../include/background.h /^enum equation_of_state {CLP,EDE};$/;" g +eqvec ../tools/evolver_ndf15.c /^void eqvec(double *datavec,double *emptyvec, int n){$/;" f +err ../include/quadrature.h /^ double err; \/* Estimated error *\/$/;" m struct:adaptive_integration_tree_node +error_message ../include/background.h /^ ErrorMsg error_message; \/**< zone for writing error messages *\/$/;" m struct:background +error_message ../include/common.h /^ ErrorMsg error_message; \/**< zone for writing error messages *\/$/;" m struct:precision +error_message ../include/dei_rkck.h /^ ErrorMsg error_message;$/;" m struct:generic_integrator_workspace +error_message ../include/growTable.h /^ ErrorMsg error_message; \/**< error message slot *\/$/;" m struct:__anon1 +error_message ../include/lensing.h /^ ErrorMsg error_message; \/**< zone for writing error messages *\/$/;" m struct:lensing +error_message ../include/nonlinear.h /^ ErrorMsg error_message; \/**< zone for writing error messages *\/$/;" m struct:nonlinear +error_message ../include/output.h /^ ErrorMsg error_message; \/**< zone for writing error messages *\/$/;" m struct:output +error_message ../include/perturbations.h /^ ErrorMsg error_message; \/**< zone for writing error messages *\/$/;" m struct:perturbs +error_message ../include/primordial.h /^ ErrorMsg error_message; \/**< zone for writing error messages *\/$/;" m struct:primordial +error_message ../include/spectra.h /^ ErrorMsg error_message; \/**< zone for writing error messages *\/$/;" m struct:spectra +error_message ../include/thermodynamics.h /^ ErrorMsg error_message; \/**< zone for writing error messages *\/$/;" m struct:thermo +error_message ../include/transfer.h /^ ErrorMsg error_message; \/**< zone for writing error messages *\/$/;" m struct:transfers +eta_0 ../include/nonlinear.h /^ double eta_0; \/** for HMcode: halo bloating parameter *\/$/;" m struct:nonlinear +evolve_tensor_ncdm ../include/perturbations.h /^ short evolve_tensor_ncdm; \/**< will we evolve ncdm tensor perturbations (if we have ncdm species and we use the exact method) ? *\/$/;" m struct:perturbs +evolve_tensor_ur ../include/perturbations.h /^ short evolve_tensor_ur; \/**< will we evolve ur tensor perturbations (either because we have ur species, or we have ncdm species with massless approximation) ? *\/$/;" m struct:perturbs +evolver_ndf15 ../tools/evolver_ndf15.c /^int evolver_ndf15($/;" f +evolver_rk ../tools/evolver_rkck.c /^int evolver_rk(int (*derivs)(double x,$/;" f +evolver_type ../include/common.h /^enum evolver_type {$/;" g +external_Pk ../include/primordial.h /^ external_Pk$/;" e enum:primordial_spectrum_type +extrap_hmcode ../include/nonlinear.h /^enum source_extrapolation {extrap_zero,extrap_only_max,extrap_only_max_units,extrap_max_scaled,extrap_hmcode,extrap_user_defined};$/;" e enum:source_extrapolation +extrap_max_scaled ../include/nonlinear.h /^enum source_extrapolation {extrap_zero,extrap_only_max,extrap_only_max_units,extrap_max_scaled,extrap_hmcode,extrap_user_defined};$/;" e enum:source_extrapolation +extrap_only_max ../include/nonlinear.h /^enum source_extrapolation {extrap_zero,extrap_only_max,extrap_only_max_units,extrap_max_scaled,extrap_hmcode,extrap_user_defined};$/;" e enum:source_extrapolation +extrap_only_max_units ../include/nonlinear.h /^enum source_extrapolation {extrap_zero,extrap_only_max,extrap_only_max_units,extrap_max_scaled,extrap_hmcode,extrap_user_defined};$/;" e enum:source_extrapolation +extrap_user_defined ../include/nonlinear.h /^enum source_extrapolation {extrap_zero,extrap_only_max,extrap_only_max_units,extrap_max_scaled,extrap_hmcode,extrap_user_defined};$/;" e enum:source_extrapolation +extrap_zero ../include/nonlinear.h /^enum source_extrapolation {extrap_zero,extrap_only_max,extrap_only_max_units,extrap_max_scaled,extrap_hmcode,extrap_user_defined};$/;" e enum:source_extrapolation +extrapolation_method ../include/nonlinear.h /^ enum source_extrapolation extrapolation_method; \/**< method for analytical extrapolation of sources beyond pre-computed range *\/$/;" m struct:nonlinear typeref:enum:nonlinear::source_extrapolation +f0 ../include/background.h /^ double *f0;$/;" m struct:background_parameters_for_distributions +f1 ../include/thermodynamics.h 46;" d +f2 ../include/thermodynamics.h 47;" d +fHe ../include/thermodynamics.h /^ double fHe; \/**< defined as in RECFAST *\/$/;" m struct:recombination +f_bi ../include/primordial.h /^ double f_bi; \/**< baryon isocurvature (BI) entropy-to-curvature ratio \\f$ S_{bi}\/R \\f$*\/$/;" m struct:primordial +f_cdi ../include/primordial.h /^ double f_cdi; \/**< CDM isocurvature (CDI) entropy-to-curvature ratio \\f$ S_{cdi}\/R \\f$*\/$/;" m struct:primordial +f_nid ../include/primordial.h /^ double f_nid; \/**< neutrino density isocurvature (NID) entropy-to-curvature ratio \\f$ S_{nid}\/R \\f$*\/$/;" m struct:primordial +f_niv ../include/primordial.h /^ double f_niv; \/**< neutrino velocity isocurvature (NIV) entropy-to-curvature ratio \\f$ S_{niv}\/R \\f$*\/$/;" m struct:primordial +factor_ncdm ../include/background.h /^ double * factor_ncdm; \/**< List of normalization factors for calculating energy density etc.*\/$/;" m struct:background +fc ../cpp/ClassEngine.hh /^ struct file_content fc;$/;" m class:ClassEngine typeref:struct:ClassEngine::file_content +fc ../include/input.h /^ struct file_content fc;$/;" m struct:fzerofun_workspace typeref:struct:fzerofun_workspace::file_content +feedback ../include/nonlinear.h /^ enum hmcode_baryonic_feedback_model feedback; \/** to choose between different baryonic feedback models$/;" m struct:nonlinear typeref:enum:nonlinear::hmcode_baryonic_feedback_model +ffdel ../include/evolver_ndf15.h /^ double * ffdel;$/;" m struct:numjac_workspace +file_content ../include/parser.h /^struct file_content {$/;" s +file_exists input.c /^int file_exists(const char *fname){$/;" f +file_format ../include/common.h /^enum file_format {class_format,camb_format};$/;" g +filename ../include/parser.h /^ char * filename;$/;" m struct:file_content +first_order_CAMB ../include/perturbations.h /^enum tca_method {first_order_MB,first_order_CAMB,first_order_CLASS,second_order_CRS,second_order_CLASS,compromise_CLASS};$/;" e enum:tca_method +first_order_CLASS ../include/perturbations.h /^enum tca_method {first_order_MB,first_order_CAMB,first_order_CLASS,second_order_CRS,second_order_CLASS,compromise_CLASS};$/;" e enum:tca_method +first_order_MB ../include/perturbations.h /^enum tca_method {first_order_MB,first_order_CAMB,first_order_CLASS,second_order_CRS,second_order_CLASS,compromise_CLASS};$/;" e enum:tca_method +flat ../include/background.h /^enum spatial_curvature {flat,open,closed};$/;" e enum:spatial_curvature +fluid_equation_of_state ../include/background.h /^ enum equation_of_state fluid_equation_of_state; \/**< parametrisation scheme for fluid equation of state *\/$/;" m struct:background typeref:enum:background::equation_of_state +forward ../include/primordial.h /^ forward$/;" e enum:integration_direction +freeStructs ../cpp/ClassEngine.cc /^ClassEngine::freeStructs(){$/;" f class:ClassEngine +freeze ../include/growTable.h /^ int freeze; \/**< if set to _TRUE_ no data can be added *\/$/;" m struct:__anon1 +fu ../include/thermodynamics.h /^ double fu; \/**< defined as in RECFAST *\/$/;" m struct:recombination +fzero_Newton ../tools/evolver_ndf15.c /^int fzero_Newton(int (*func)(double *x,$/;" f +fzero_ridder ../tools/hyperspherical.c /^int fzero_ridder(double (*func)(double, void *),$/;" f +fzerofun_workspace ../include/input.h /^struct fzerofun_workspace {$/;" s +gauge ../include/perturbations.h /^ enum possible_gauges gauge; \/**< gauge in which to perform this calculation *\/$/;" m struct:perturbs typeref:enum:perturbs::possible_gauges +gaussian ../include/perturbations.h /^enum selection_type {gaussian,tophat,dirac};$/;" e enum:selection_type +generic_integrator ../tools/dei_rkck.c /^int generic_integrator(int (*derivs)(double x, double y[], double yprime[], void * parameters_and_workspace, ErrorMsg error_message),$/;" f +generic_integrator_workspace ../include/dei_rkck.h /^struct generic_integrator_workspace$/;" s +getCl ../cpp/ClassEngine.cc /^ClassEngine::getCl(Engine::cltype t,const long &l){$/;" f class:ClassEngine +getCls ../cpp/ClassEngine.cc /^ClassEngine::getCls(const std::vector& lvec, \/\/input $/;" f class:ClassEngine +getLensing ../cpp/ClassEngine.cc /^ClassEngine::getLensing(const std::vector& lvec, \/\/input $/;" f class:ClassEngine +getTauReio ../cpp/ClassEngine.hh /^ double getTauReio() const {return th.tau_reio;}$/;" f class:ClassEngine +getTk ../cpp/ClassEngine.cc /^ClassEngine::getTk( double z, $/;" f class:ClassEngine +get_Az ../cpp/ClassEngine.cc /^double ClassEngine::get_Az(double z)$/;" f class:ClassEngine +get_CF1 ../tools/hyperspherical.c /^int get_CF1(int K,int l,double beta, double cotK, double *CF, int *isign){$/;" f +get_Da ../cpp/ClassEngine.cc /^double ClassEngine::get_Da(double z)$/;" f class:ClassEngine +get_Dv ../cpp/ClassEngine.cc /^double ClassEngine::get_Dv(double z)$/;" f class:ClassEngine +get_Fz ../cpp/ClassEngine.cc /^double ClassEngine::get_Fz(double z)$/;" f class:ClassEngine +get_Hz ../cpp/ClassEngine.cc /^double ClassEngine::get_Hz(double z)$/;" f class:ClassEngine +get_f ../cpp/ClassEngine.cc /^double ClassEngine::get_f(double z)$/;" f class:ClassEngine +get_integral ../tools/quadrature.c /^double get_integral(qss_node *node, int level){$/;" f +get_leaf_x_and_w ../tools/quadrature.c /^int get_leaf_x_and_w(qss_node *node, int *ind, double *x, double *w,int isindefinite){$/;" f +get_machine_precision input.c /^int get_machine_precision(double * smallest_allowed_variation) {$/;" f +get_number_of_titles ../tools/common.c /^int get_number_of_titles(char * titlestring){$/;" f +get_qsampling ../tools/quadrature.c /^int get_qsampling(double *x,$/;" f +get_qsampling_manual ../tools/quadrature.c /^int get_qsampling_manual(double *x,$/;" f +get_sigma8 ../cpp/ClassEngine.cc /^double ClassEngine::get_sigma8(double z)$/;" f class:ClassEngine +get_value_at_small_phi ../tools/hyperspherical.c /^double get_value_at_small_phi(int K,int l,double beta,double Phi){$/;" f +gk_adapt ../tools/quadrature.c /^int gk_adapt($/;" f +gk_quad ../tools/quadrature.c /^int gk_quad(int (*test)(void * params_for_function, double q, double *psi),$/;" f +got_files ../include/background.h /^ int * got_files; \/**< list of flags for each species, set to true if$/;" m struct:background +growTable ../include/growTable.h /^} growTable;$/;" t typeref:struct:__anon1 +growtable ../include/nonlinear.h /^ double * growtable;$/;" m struct:nonlinear_workspace +gt_add ../tools/growTable.c /^int gt_add($/;" f +gt_free ../tools/growTable.c /^int gt_free(growTable* self) {$/;" f +gt_getPtr ../tools/growTable.c /^int gt_getPtr($/;" f +gt_getSize ../tools/growTable.c /^int gt_getSize($/;" f +gt_init ../tools/growTable.c /^int gt_init($/;" f +gt_retrieve ../tools/growTable.c /^int gt_retrieve($/;" f +gt_retrieveAll ../tools/growTable.c /^int gt_retrieveAll($/;" f +gw_source ../include/perturbations.h /^ double gw_source; \/**< stress-energy source term in Einstein's tensor equations (gives Tij[tensor]) *\/$/;" m struct:perturb_workspace +h ../include/background.h /^ double h; \/**< reduced Hubble parameter *\/$/;" m struct:background +halofit_integral_one ../include/nonlinear.h /^enum halofit_integral_type {halofit_integral_one, halofit_integral_two, halofit_integral_three};$/;" e enum:halofit_integral_type +halofit_integral_three ../include/nonlinear.h /^enum halofit_integral_type {halofit_integral_one, halofit_integral_two, halofit_integral_three};$/;" e enum:halofit_integral_type +halofit_integral_two ../include/nonlinear.h /^enum halofit_integral_type {halofit_integral_one, halofit_integral_two, halofit_integral_three};$/;" e enum:halofit_integral_type +halofit_integral_type ../include/nonlinear.h /^enum halofit_integral_type {halofit_integral_one, halofit_integral_two, halofit_integral_three};$/;" g +has_Nbody_gauge_transfers ../include/perturbations.h /^ short has_Nbody_gauge_transfers; \/**< should we convert density and velocity transfer functions to Nbody gauge? *\/$/;" m struct:perturbs +has_ad ../include/perturbations.h /^ short has_ad; \/**< do we need adiabatic mode? *\/$/;" m struct:perturbs +has_bb ../include/lensing.h /^ int has_bb; \/**< do we want \\f$ C_l^{BB}\\f$? (B = B-polarization) *\/$/;" m struct:lensing +has_bb ../include/spectra.h /^ int has_bb; \/**< do we want \\f$ C_l^{BB}\\f$? (B = B-polarization) *\/$/;" m struct:spectra +has_bi ../include/perturbations.h /^ short has_bi; \/**< do we need isocurvature bi mode? *\/$/;" m struct:perturbs +has_cdi ../include/perturbations.h /^ short has_cdi; \/**< do we need isocurvature cdi mode? *\/$/;" m struct:perturbs +has_cdm ../include/background.h /^ short has_cdm; \/**< presence of cold dark matter? *\/$/;" m struct:background +has_cl_cmb_lensing_potential ../include/perturbations.h /^ short has_cl_cmb_lensing_potential; \/**< do we need \\f$ C_l \\f$'s for CMB lensing potential? *\/$/;" m struct:perturbs +has_cl_cmb_polarization ../include/perturbations.h /^ short has_cl_cmb_polarization; \/**< do we need \\f$ C_l \\f$'s for CMB polarization? *\/$/;" m struct:perturbs +has_cl_cmb_temperature ../include/perturbations.h /^ short has_cl_cmb_temperature; \/**< do we need \\f$ C_l \\f$'s for CMB temperature? *\/$/;" m struct:perturbs +has_cl_lensing_potential ../include/perturbations.h /^ short has_cl_lensing_potential; \/**< do we need \\f$ C_l \\f$'s for galaxy lensing potential? *\/$/;" m struct:perturbs +has_cl_number_count ../include/perturbations.h /^ short has_cl_number_count; \/**< do we need \\f$ C_l \\f$'s for density number count? *\/$/;" m struct:perturbs +has_cls ../include/perturbations.h /^ short has_cls; \/**< do we need any harmonic space spectrum \\f$ C_l \\f$ (and hence Bessel functions, transfer functions, ...)? *\/$/;" m struct:perturbs +has_cls ../include/transfer.h /^ short has_cls; \/**< copy of same flag in perturbation structure *\/$/;" m struct:transfers +has_cmb ../include/perturbations.h /^ short has_cmb; \/**< do we need CMB-related sources (temperature, polarization) ? *\/$/;" m struct:perturbs +has_curvature ../include/background.h /^ short has_curvature; \/**< presence of global spatial curvature? *\/$/;" m struct:background +has_dcdm ../include/background.h /^ short has_dcdm; \/**< presence of decaying cold dark matter? *\/$/;" m struct:background +has_dd ../include/lensing.h /^ int has_dd; \/**< do we want \\f$ C_l^{dd}\\f$? (d = matter density) *\/$/;" m struct:lensing +has_dd ../include/spectra.h /^ int has_dd; \/**< do we want \\f$ C_l^{dd}\\f$? (d = density) *\/$/;" m struct:spectra +has_density_transfers ../include/perturbations.h /^ short has_density_transfers; \/**< do we need to output individual matter density transfer functions? *\/$/;" m struct:perturbs +has_dl ../include/spectra.h /^ int has_dl; \/**< do we want \\f$ C_l^{dl}\\f$? *\/$/;" m struct:spectra +has_dr ../include/background.h /^ short has_dr; \/**< presence of relativistic decay radiation? *\/$/;" m struct:background +has_ee ../include/lensing.h /^ int has_ee; \/**< do we want lensed \\f$ C_l^{EE}\\f$? (E = E-polarization) *\/$/;" m struct:lensing +has_ee ../include/spectra.h /^ int has_ee; \/**< do we want \\f$ C_l^{EE}\\f$? (E = E-polarization) *\/$/;" m struct:spectra +has_ep ../include/spectra.h /^ int has_ep; \/**< do we want \\f$ C_l^{E\\phi}\\f$? *\/$/;" m struct:spectra +has_fld ../include/background.h /^ short has_fld; \/**< presence of fluid with constant w and cs2? *\/$/;" m struct:background +has_grouping ../include/evolver_ndf15.h /^ int has_grouping;$/;" m struct:jacobian +has_idm_dr ../include/background.h /^ short has_idm_dr; \/**< presence of dark matter interacting with dark radiation? *\/$/;" m struct:background +has_idr ../include/background.h /^ short has_idr; \/**< presence of interacting dark radiation? *\/$/;" m struct:background +has_lambda ../include/background.h /^ short has_lambda; \/**< presence of cosmological constant? *\/$/;" m struct:background +has_lensed_cls ../include/lensing.h /^ short has_lensed_cls; \/**< do we need to compute lensed \\f$ C_l\\f$'s at all ? *\/$/;" m struct:lensing +has_ll ../include/lensing.h /^ int has_ll; \/**< do we want \\f$ C_l^{ll}\\f$? (l = lensing potential) *\/$/;" m struct:lensing +has_ll ../include/spectra.h /^ int has_ll; \/**< do we want \\f$ C_l^{ll}\\f$? (l = galaxy lensing potential) *\/$/;" m struct:spectra +has_lss ../include/perturbations.h /^ short has_lss; \/**< do we need LSS-related sources (lensing potential, ...) ? *\/$/;" m struct:perturbs +has_metricpotential_transfers ../include/perturbations.h /^ short has_metricpotential_transfers;\/**< do we need to output individual transfer functions for scalar metric perturbations? *\/$/;" m struct:perturbs +has_nc_density ../include/perturbations.h /^ short has_nc_density; \/**< in dCl, do we want density terms ? *\/$/;" m struct:perturbs +has_nc_gr ../include/perturbations.h /^ short has_nc_gr; \/**< in dCl, do we want gravity terms ? *\/$/;" m struct:perturbs +has_nc_lens ../include/perturbations.h /^ short has_nc_lens; \/**< in dCl, do we want lensing terms ? *\/$/;" m struct:perturbs +has_nc_rsd ../include/perturbations.h /^ short has_nc_rsd; \/**< in dCl, do we want redshift space distortion terms ? *\/$/;" m struct:perturbs +has_ncdm ../include/background.h /^ short has_ncdm; \/**< presence of non-cold dark matter? *\/$/;" m struct:background +has_nid ../include/perturbations.h /^ short has_nid; \/**< do we need isocurvature nid mode? *\/$/;" m struct:perturbs +has_niv ../include/perturbations.h /^ short has_niv; \/**< do we need isocurvature niv mode? *\/$/;" m struct:perturbs +has_nl_corrections_based_on_delta_m ../include/perturbations.h /^ short has_nl_corrections_based_on_delta_m; \/**< do we want to compute non-linear corrections with an algorithm relying on delta_m (like halofit)? *\/$/;" m struct:perturbs +has_nz_analytic ../include/transfer.h /^ short has_nz_analytic; \/**< Use analytic form for dN\/dz (selection function) distribution? *\/$/;" m struct:transfers +has_nz_evo_analytic ../include/transfer.h /^ short has_nz_evo_analytic; \/**< Use analytic form for dN\/dz (evolution function) distribution? *\/$/;" m struct:transfers +has_nz_evo_file ../include/transfer.h /^ short has_nz_evo_file; \/**< Has dN\/dz (evolution function) input file? *\/$/;" m struct:transfers +has_nz_file ../include/transfer.h /^ short has_nz_file; \/**< Has dN\/dz (selection function) input file? *\/$/;" m struct:transfers +has_on_the_spot ../include/thermodynamics.h /^ short has_on_the_spot; \/**< flag to specify if we want to use the on-the-spot approximation **\/$/;" m struct:recombination +has_on_the_spot ../include/thermodynamics.h /^ short has_on_the_spot; \/**< flag to specify if we want to use the on-the-spot approximation **\/$/;" m struct:thermo +has_pattern ../include/evolver_ndf15.h /^ int has_pattern;$/;" m struct:jacobian +has_pd ../include/spectra.h /^ int has_pd; \/**< do we want \\f$ C_l^{\\phi d}\\f$? *\/$/;" m struct:spectra +has_perturbations ../include/perturbations.h /^ short has_perturbations; \/**< do we need to compute perturbations at all ? *\/$/;" m struct:perturbs +has_perturbed_recombination ../include/perturbations.h /^ short has_perturbed_recombination;$/;" m struct:perturbs +has_pk_cb ../include/nonlinear.h /^ short has_pk_cb; \/**< do we want spectra for cdm+baryons? *\/$/;" m struct:nonlinear +has_pk_eq ../include/nonlinear.h /^ short has_pk_eq; \/**< flag: will we use the pk_eq method? *\/$/;" m struct:nonlinear +has_pk_m ../include/nonlinear.h /^ short has_pk_m; \/**< do we want spectra for total matter? *\/$/;" m struct:nonlinear +has_pk_matter ../include/nonlinear.h /^ short has_pk_matter; \/**< do we need matter Fourier spectrum? *\/$/;" m struct:nonlinear +has_pk_matter ../include/perturbations.h /^ short has_pk_matter; \/**< do we need matter Fourier spectrum? *\/$/;" m struct:perturbs +has_pp ../include/lensing.h /^ int has_pp; \/**< do we want \\f$ C_l^{\\phi\\phi}\\f$? (\\f$ \\phi \\f$ = CMB lensing potential) *\/$/;" m struct:lensing +has_pp ../include/spectra.h /^ int has_pp; \/**< do we want \\f$ C_l^{\\phi\\phi}\\f$? (\\f$ \\phi \\f$ = CMB lensing potential) *\/$/;" m struct:spectra +has_scalars ../include/perturbations.h /^ short has_scalars; \/**< do we need scalars? *\/$/;" m struct:perturbs +has_scf ../include/background.h /^ short has_scf; \/**< presence of a scalar field? *\/$/;" m struct:background +has_source_H_T_Nb_prime ../include/perturbations.h /^ short has_source_H_T_Nb_prime;\/**< do we need source for metric fluctuation H_T_Nb'? *\/$/;" m struct:perturbs +has_source_delta_b ../include/perturbations.h /^ short has_source_delta_b; \/**< do we need source for delta of baryons? *\/$/;" m struct:perturbs +has_source_delta_cb ../include/perturbations.h /^ short has_source_delta_cb; \/**< do we ALSO need source for delta of ONLY cdm and baryon? *\/$/;" m struct:perturbs +has_source_delta_cdm ../include/perturbations.h /^ short has_source_delta_cdm; \/**< do we need source for delta of cold dark matter? *\/$/;" m struct:perturbs +has_source_delta_dcdm ../include/perturbations.h /^ short has_source_delta_dcdm; \/**< do we need source for delta of DCDM? *\/$/;" m struct:perturbs +has_source_delta_dr ../include/perturbations.h /^ short has_source_delta_dr; \/**< do we need source for delta of decay radiation? *\/$/;" m struct:perturbs +has_source_delta_fld ../include/perturbations.h /^ short has_source_delta_fld; \/**< do we need source for delta of dark energy? *\/$/;" m struct:perturbs +has_source_delta_g ../include/perturbations.h /^ short has_source_delta_g; \/**< do we need source for delta of gammas? *\/$/;" m struct:perturbs +has_source_delta_idm_dr ../include/perturbations.h /^ short has_source_delta_idm_dr;\/**< do we need source for delta of interacting dark matter (with dr)? *\/$/;" m struct:perturbs +has_source_delta_idr ../include/perturbations.h /^ short has_source_delta_idr; \/**< do we need source for delta of interacting dark radiation? *\/$/;" m struct:perturbs +has_source_delta_m ../include/perturbations.h /^ short has_source_delta_m; \/**< do we need source for delta of total matter? *\/$/;" m struct:perturbs +has_source_delta_ncdm ../include/perturbations.h /^ short has_source_delta_ncdm; \/**< do we need source for delta of all non-cold dark matter species (e.g. massive neutrinos)? *\/$/;" m struct:perturbs +has_source_delta_scf ../include/perturbations.h /^ short has_source_delta_scf; \/**< do we need source for delta from scalar field? *\/$/;" m struct:perturbs +has_source_delta_tot ../include/perturbations.h /^ short has_source_delta_tot; \/**< do we need source for delta total? *\/$/;" m struct:perturbs +has_source_delta_ur ../include/perturbations.h /^ short has_source_delta_ur; \/**< do we need source for delta of ultra-relativistic neutrinos\/relics? *\/$/;" m struct:perturbs +has_source_eta ../include/perturbations.h /^ short has_source_eta; \/**< do we need source for metric fluctuation eta? *\/$/;" m struct:perturbs +has_source_eta_prime ../include/perturbations.h /^ short has_source_eta_prime; \/**< do we need source for metric fluctuation eta'? *\/$/;" m struct:perturbs +has_source_h ../include/perturbations.h /^ short has_source_h; \/**< do we need source for metric fluctuation h? *\/$/;" m struct:perturbs +has_source_h_prime ../include/perturbations.h /^ short has_source_h_prime; \/**< do we need source for metric fluctuation h'? *\/$/;" m struct:perturbs +has_source_k2gamma_Nb ../include/perturbations.h /^ short has_source_k2gamma_Nb; \/**< do we need source for metric fluctuation gamma in Nbody gauge? *\/$/;" m struct:perturbs +has_source_p ../include/perturbations.h /^ short has_source_p; \/**< do we need source for CMB polarization? *\/$/;" m struct:perturbs +has_source_phi ../include/perturbations.h /^ short has_source_phi; \/**< do we need source for metric fluctuation phi? *\/$/;" m struct:perturbs +has_source_phi_plus_psi ../include/perturbations.h /^ short has_source_phi_plus_psi;\/**< do we need source for metric fluctuation (phi+psi)? *\/$/;" m struct:perturbs +has_source_phi_prime ../include/perturbations.h /^ short has_source_phi_prime; \/**< do we need source for metric fluctuation phi'? *\/$/;" m struct:perturbs +has_source_psi ../include/perturbations.h /^ short has_source_psi; \/**< do we need source for metric fluctuation psi? *\/$/;" m struct:perturbs +has_source_t ../include/perturbations.h /^ short has_source_t; \/**< do we need source for CMB temperature? *\/$/;" m struct:perturbs +has_source_theta_b ../include/perturbations.h /^ short has_source_theta_b; \/**< do we need source for theta of baryons? *\/$/;" m struct:perturbs +has_source_theta_cb ../include/perturbations.h /^ short has_source_theta_cb; \/**< do we ALSO need source for theta of ONLY cdm and baryon? *\/$/;" m struct:perturbs +has_source_theta_cdm ../include/perturbations.h /^ short has_source_theta_cdm; \/**< do we need source for theta of cold dark matter? *\/$/;" m struct:perturbs +has_source_theta_dcdm ../include/perturbations.h /^ short has_source_theta_dcdm; \/**< do we need source for theta of DCDM? *\/$/;" m struct:perturbs +has_source_theta_dr ../include/perturbations.h /^ short has_source_theta_dr; \/**< do we need source for theta of ultra-relativistic neutrinos\/relics? *\/$/;" m struct:perturbs +has_source_theta_fld ../include/perturbations.h /^ short has_source_theta_fld; \/**< do we need source for theta of dark energy? *\/$/;" m struct:perturbs +has_source_theta_g ../include/perturbations.h /^ short has_source_theta_g; \/**< do we need source for theta of gammas? *\/$/;" m struct:perturbs +has_source_theta_idm_dr ../include/perturbations.h /^ short has_source_theta_idm_dr;\/**< do we need source for theta of interacting dark matter (with dr)? *\/$/;" m struct:perturbs +has_source_theta_idr ../include/perturbations.h /^ short has_source_theta_idr; \/**< do we need source for theta of interacting dark radiation? *\/$/;" m struct:perturbs +has_source_theta_m ../include/perturbations.h /^ short has_source_theta_m; \/**< do we need source for theta of total matter? *\/$/;" m struct:perturbs +has_source_theta_ncdm ../include/perturbations.h /^ short has_source_theta_ncdm; \/**< do we need source for theta of all non-cold dark matter species (e.g. massive neutrinos)? *\/$/;" m struct:perturbs +has_source_theta_scf ../include/perturbations.h /^ short has_source_theta_scf; \/**< do we need source for theta of scalar field? *\/$/;" m struct:perturbs +has_source_theta_tot ../include/perturbations.h /^ short has_source_theta_tot; \/**< do we need source for theta total? *\/$/;" m struct:perturbs +has_source_theta_ur ../include/perturbations.h /^ short has_source_theta_ur; \/**< do we need source for theta of ultra-relativistic neutrinos\/relics? *\/$/;" m struct:perturbs +has_td ../include/lensing.h /^ int has_td; \/**< do we want \\f$ C_l^{Td}\\f$? *\/$/;" m struct:lensing +has_td ../include/spectra.h /^ int has_td; \/**< do we want \\f$ C_l^{Td}\\f$? *\/$/;" m struct:spectra +has_te ../include/lensing.h /^ int has_te; \/**< do we want lensed \\f$ C_l^{TE}\\f$? *\/$/;" m struct:lensing +has_te ../include/spectra.h /^ int has_te; \/**< do we want \\f$ C_l^{TE}\\f$? *\/$/;" m struct:spectra +has_tensors ../include/perturbations.h /^ short has_tensors; \/**< do we need tensors? *\/$/;" m struct:perturbs +has_tl ../include/lensing.h /^ int has_tl; \/**< do we want \\f$ C_l^{Tl}\\f$? *\/$/;" m struct:lensing +has_tl ../include/spectra.h /^ int has_tl; \/**< do we want \\f$ C_l^{Tl}\\f$? *\/$/;" m struct:spectra +has_tp ../include/lensing.h /^ int has_tp; \/**< do we want \\f$ C_l^{T\\phi}\\f$? *\/$/;" m struct:lensing +has_tp ../include/spectra.h /^ int has_tp; \/**< do we want \\f$ C_l^{T\\phi}\\f$? *\/$/;" m struct:spectra +has_tt ../include/lensing.h /^ int has_tt; \/**< do we want lensed \\f$ C_l^{TT}\\f$? (T = temperature) *\/$/;" m struct:lensing +has_tt ../include/spectra.h /^ int has_tt; \/**< do we want \\f$ C_l^{TT}\\f$? (T = temperature) *\/$/;" m struct:spectra +has_ur ../include/background.h /^ short has_ur; \/**< presence of ultra-relativistic neutrinos\/relics? *\/$/;" m struct:background +has_vectors ../include/perturbations.h /^ short has_vectors; \/**< do we need vectors? *\/$/;" m struct:perturbs +has_velocity_transfers ../include/perturbations.h /^ short has_velocity_transfers; \/**< do we need to output individual matter velocity transfer functions? *\/$/;" m struct:perturbs +helium_fullreio_redshift ../include/thermodynamics.h /^ double helium_fullreio_redshift; \/**< redshift for of helium reionization *\/$/;" m struct:thermo +helium_fullreio_width ../include/thermodynamics.h /^ double helium_fullreio_width; \/**< width of helium reionization *\/$/;" m struct:thermo +higgs_inflation ../include/primordial.h /^ higgs_inflation$/;" e enum:potential_shape +hmcode_baryonic_feedback_model ../include/nonlinear.h /^enum hmcode_baryonic_feedback_model {nl_emu_dmonly, nl_owls_dmonly, nl_owls_ref, nl_owls_agn, nl_owls_dblim, nl_user_defined};$/;" g +hyperspherical_HIS_create ../tools/hyperspherical.c /^int hyperspherical_HIS_create(int K,$/;" f +hyperspherical_HIS_free ../tools/hyperspherical.c /^int hyperspherical_HIS_free(HyperInterpStruct *pHIS,$/;" f +hyperspherical_HIS_size ../tools/hyperspherical.c /^size_t hyperspherical_HIS_size(int nl, int nx){$/;" f +hyperspherical_Hermite3_interpolation_vector_Phi ../tools/hyperspherical.c /^int hyperspherical_Hermite3_interpolation_vector_Phi(HyperInterpStruct *pHIS,$/;" f +hyperspherical_Hermite3_interpolation_vector_Phid2Phi ../tools/hyperspherical.c /^int hyperspherical_Hermite3_interpolation_vector_Phid2Phi(HyperInterpStruct *pHIS,$/;" f +hyperspherical_Hermite3_interpolation_vector_PhidPhi ../tools/hyperspherical.c /^int hyperspherical_Hermite3_interpolation_vector_PhidPhi(HyperInterpStruct *pHIS,$/;" f +hyperspherical_Hermite3_interpolation_vector_PhidPhid2Phi ../tools/hyperspherical.c /^int hyperspherical_Hermite3_interpolation_vector_PhidPhid2Phi(HyperInterpStruct *pHIS,$/;" f +hyperspherical_Hermite3_interpolation_vector_d2Phi ../tools/hyperspherical.c /^int hyperspherical_Hermite3_interpolation_vector_d2Phi(HyperInterpStruct *pHIS,$/;" f +hyperspherical_Hermite3_interpolation_vector_dPhi ../tools/hyperspherical.c /^int hyperspherical_Hermite3_interpolation_vector_dPhi(HyperInterpStruct *pHIS,$/;" f +hyperspherical_Hermite3_interpolation_vector_dPhid2Phi ../tools/hyperspherical.c /^int hyperspherical_Hermite3_interpolation_vector_dPhid2Phi(HyperInterpStruct *pHIS,$/;" f +hyperspherical_Hermite4_interpolation_vector_Phi ../tools/hyperspherical.c /^int hyperspherical_Hermite4_interpolation_vector_Phi(HyperInterpStruct *pHIS,$/;" f +hyperspherical_Hermite4_interpolation_vector_Phid2Phi ../tools/hyperspherical.c /^int hyperspherical_Hermite4_interpolation_vector_Phid2Phi(HyperInterpStruct *pHIS,$/;" f +hyperspherical_Hermite4_interpolation_vector_PhidPhi ../tools/hyperspherical.c /^int hyperspherical_Hermite4_interpolation_vector_PhidPhi(HyperInterpStruct *pHIS,$/;" f +hyperspherical_Hermite4_interpolation_vector_PhidPhid2Phi ../tools/hyperspherical.c /^int hyperspherical_Hermite4_interpolation_vector_PhidPhid2Phi(HyperInterpStruct *pHIS,$/;" f +hyperspherical_Hermite4_interpolation_vector_d2Phi ../tools/hyperspherical.c /^int hyperspherical_Hermite4_interpolation_vector_d2Phi(HyperInterpStruct *pHIS,$/;" f +hyperspherical_Hermite4_interpolation_vector_dPhi ../tools/hyperspherical.c /^int hyperspherical_Hermite4_interpolation_vector_dPhi(HyperInterpStruct *pHIS,$/;" f +hyperspherical_Hermite4_interpolation_vector_dPhid2Phi ../tools/hyperspherical.c /^int hyperspherical_Hermite4_interpolation_vector_dPhid2Phi(HyperInterpStruct *pHIS,$/;" f +hyperspherical_Hermite6_interpolation_vector_Phi ../tools/hyperspherical.c /^int hyperspherical_Hermite6_interpolation_vector_Phi(HyperInterpStruct *pHIS,$/;" f +hyperspherical_Hermite6_interpolation_vector_Phid2Phi ../tools/hyperspherical.c /^int hyperspherical_Hermite6_interpolation_vector_Phid2Phi(HyperInterpStruct *pHIS,$/;" f +hyperspherical_Hermite6_interpolation_vector_PhidPhi ../tools/hyperspherical.c /^int hyperspherical_Hermite6_interpolation_vector_PhidPhi(HyperInterpStruct *pHIS,$/;" f +hyperspherical_Hermite6_interpolation_vector_PhidPhid2Phi ../tools/hyperspherical.c /^int hyperspherical_Hermite6_interpolation_vector_PhidPhid2Phi(HyperInterpStruct *pHIS,$/;" f +hyperspherical_Hermite6_interpolation_vector_d2Phi ../tools/hyperspherical.c /^int hyperspherical_Hermite6_interpolation_vector_d2Phi(HyperInterpStruct *pHIS,$/;" f +hyperspherical_Hermite6_interpolation_vector_dPhi ../tools/hyperspherical.c /^int hyperspherical_Hermite6_interpolation_vector_dPhi(HyperInterpStruct *pHIS,$/;" f +hyperspherical_Hermite6_interpolation_vector_dPhid2Phi ../tools/hyperspherical.c /^int hyperspherical_Hermite6_interpolation_vector_dPhid2Phi(HyperInterpStruct *pHIS,$/;" f +hyperspherical_Hermite_interpolation_vector ../tools/hyperspherical.c /^int hyperspherical_Hermite_interpolation_vector(HyperInterpStruct *pHIS,$/;" f +hyperspherical_WKB ../tools/hyperspherical.c /^int hyperspherical_WKB(int K,int l,double beta,double y, double *Phi){$/;" f +hyperspherical_WKB_vec ../tools/hyperspherical.c /^ int hyperspherical_WKB_vec(int l,$/;" f +hyperspherical_backwards_recurrence ../tools/hyperspherical.c /^int hyperspherical_backwards_recurrence(int K,$/;" f +hyperspherical_backwards_recurrence_chunk ../tools/hyperspherical.c /^int hyperspherical_backwards_recurrence_chunk(int K,$/;" f +hyperspherical_forwards_recurrence ../tools/hyperspherical.c /^int hyperspherical_forwards_recurrence(int K,$/;" f +hyperspherical_forwards_recurrence_chunk ../tools/hyperspherical.c /^int hyperspherical_forwards_recurrence_chunk(int K,$/;" f +hyperspherical_get_xmin ../tools/hyperspherical.c /^int hyperspherical_get_xmin(HyperInterpStruct *pHIS,$/;" f +hyperspherical_get_xmin_from_Airy ../tools/hyperspherical.c /^int hyperspherical_get_xmin_from_Airy(int K,$/;" f +hyperspherical_get_xmin_from_approx ../tools/hyperspherical.c /^int hyperspherical_get_xmin_from_approx(int K,$/;" f +hyperspherical_update_pointers ../tools/hyperspherical.c /^int hyperspherical_update_pointers(HyperInterpStruct *pHIS_local,$/;" f +hyrec ../include/thermodynamics.h /^ hyrec$/;" e enum:recombination_algorithm +ic_ic_size ../include/nonlinear.h /^ int ic_ic_size; \/**< for a given mode, ic_ic_size[index_md] = number of pairs of (index_ic1, index_ic2) with index_ic2 >= index_ic1; this number is just N(N+1)\/2 where N = ic_size[index_md] *\/$/;" m struct:nonlinear +ic_ic_size ../include/primordial.h /^ int * ic_ic_size; \/**< number of ordered pairs of (index_ic1, index_ic2); this number is just N(N+1)\/2 where N = ic_size[index_md] *\/$/;" m struct:primordial +ic_ic_size ../include/spectra.h /^ int * ic_ic_size; \/**< for a given mode, ic_ic_size[index_md] = number of pairs of (index_ic1, index_ic2) with index_ic2 >= index_ic1; this number is just N(N+1)\/2 where N = ic_size[index_md] *\/$/;" m struct:spectra +ic_size ../include/nonlinear.h /^ int ic_size; \/**< for a given mode, ic_size[index_md] = number of initial conditions included in computation *\/$/;" m struct:nonlinear +ic_size ../include/perturbations.h /^ int * ic_size; \/**< for a given mode, ic_size[index_md] = number of initial conditions included in computation *\/$/;" m struct:perturbs +ic_size ../include/primordial.h /^ int * ic_size; \/**< for a given mode, ic_size[index_md] = number of initial conditions included in computation *\/$/;" m struct:primordial +ic_size ../include/spectra.h /^ int * ic_size; \/**< for a given mode, ic_size[index_md] = number of initial conditions included in computation *\/$/;" m struct:spectra +idr_fluid ../include/perturbations.h /^enum idr_method {idr_free_streaming,idr_fluid}; \/* for the idm-idr case *\/$/;" e enum:idr_method +idr_free_streaming ../include/perturbations.h /^enum idr_method {idr_free_streaming,idr_fluid}; \/* for the idm-idr case *\/$/;" e enum:idr_method +idr_method ../include/perturbations.h /^enum idr_method {idr_free_streaming,idr_fluid}; \/* for the idm-idr case *\/$/;" g +idr_nature ../include/perturbations.h /^ int idr_nature; \/**< Nature of the interacting dark radiation (free streaming or fluid) *\/$/;" m struct:perturbs +in_bg_size ../include/primordial.h /^ int in_bg_size; \/**< size of vector of background quantities only *\/$/;" m struct:primordial +in_size ../include/primordial.h /^ int in_size; \/**< full size of vector *\/$/;" m struct:primordial +index_ap_ncdmfa ../include/perturbations.h /^ int index_ap_ncdmfa; \/**< index for ncdm fluid approximation *\/$/;" m struct:perturb_workspace +index_ap_rsa ../include/perturbations.h /^ int index_ap_rsa; \/**< index for radiation streaming approximation *\/$/;" m struct:perturb_workspace +index_ap_rsa_idr ../include/perturbations.h /^ int index_ap_rsa_idr; \/**< index for dark radiation streaming approximation *\/$/;" m struct:perturb_workspace +index_ap_tca ../include/perturbations.h /^ int index_ap_tca; \/**< index for tight-coupling approximation *\/$/;" m struct:perturb_workspace +index_ap_tca_idm_dr ../include/perturbations.h /^ int index_ap_tca_idm_dr; \/**< index for dark tight-coupling approximation (idm-idr) *\/$/;" m struct:perturb_workspace +index_ap_ufa ../include/perturbations.h /^ int index_ap_ufa; \/**< index for ur fluid approximation *\/$/;" m struct:perturb_workspace +index_bg_D ../include/background.h /^ int index_bg_D; \/**< scale independent growth factor D(a) for CDM perturbations *\/$/;" m struct:background +index_bg_H ../include/background.h /^ int index_bg_H; \/**< Hubble parameter in \\f$Mpc^{-1}\\f$ *\/$/;" m struct:background +index_bg_H_prime ../include/background.h /^ int index_bg_H_prime; \/**< its derivative w.r.t. conformal time *\/$/;" m struct:background +index_bg_Omega_m ../include/background.h /^ int index_bg_Omega_m; \/**< non-relativistic density fraction (\\f$ \\Omega_b + \\Omega_cdm + \\Omega_{\\nu nr} \\f$) *\/$/;" m struct:background +index_bg_Omega_r ../include/background.h /^ int index_bg_Omega_r; \/**< relativistic density fraction (\\f$ \\Omega_{\\gamma} + \\Omega_{\\nu r} \\f$) *\/$/;" m struct:background +index_bg_V_scf ../include/background.h /^ int index_bg_V_scf; \/**< scalar field potential V *\/$/;" m struct:background +index_bg_a ../include/background.h /^ int index_bg_a; \/**< scale factor *\/$/;" m struct:background +index_bg_ang_distance ../include/background.h /^ int index_bg_ang_distance; \/**< angular diameter distance in Mpc *\/$/;" m struct:background +index_bg_conf_distance ../include/background.h /^ int index_bg_conf_distance; \/**< conformal distance (from us) in Mpc *\/$/;" m struct:background +index_bg_dV_scf ../include/background.h /^ int index_bg_dV_scf; \/**< scalar field potential derivative V' *\/$/;" m struct:background +index_bg_ddV_scf ../include/background.h /^ int index_bg_ddV_scf; \/**< scalar field potential second derivative V'' *\/$/;" m struct:background +index_bg_f ../include/background.h /^ int index_bg_f; \/**< corresponding velocity growth factor [dlnD]\/[dln a] *\/$/;" m struct:background +index_bg_lum_distance ../include/background.h /^ int index_bg_lum_distance; \/**< luminosity distance in Mpc *\/$/;" m struct:background +index_bg_p_ncdm1 ../include/background.h /^ int index_bg_p_ncdm1; \/**< pressure of first ncdm species (others contiguous) *\/$/;" m struct:background +index_bg_p_prime_scf ../include/background.h /^ int index_bg_p_prime_scf; \/**< scalar field pressure *\/$/;" m struct:background +index_bg_p_scf ../include/background.h /^ int index_bg_p_scf; \/**< scalar field pressure *\/$/;" m struct:background +index_bg_p_tot ../include/background.h /^ int index_bg_p_tot; \/**< Total pressure *\/$/;" m struct:background +index_bg_p_tot_prime ../include/background.h /^ int index_bg_p_tot_prime; \/**< Conf. time derivative of total pressure *\/$/;" m struct:background +index_bg_phi_prime_scf ../include/background.h /^ int index_bg_phi_prime_scf; \/**< scalar field derivative wrt conformal time *\/$/;" m struct:background +index_bg_phi_scf ../include/background.h /^ int index_bg_phi_scf; \/**< scalar field value *\/$/;" m struct:background +index_bg_pseudo_p_ncdm1 ../include/background.h /^ int index_bg_pseudo_p_ncdm1;\/**< another statistical momentum useful in ncdma approximation *\/$/;" m struct:background +index_bg_rho_b ../include/background.h /^ int index_bg_rho_b; \/**< baryon density *\/$/;" m struct:background +index_bg_rho_cdm ../include/background.h /^ int index_bg_rho_cdm; \/**< cdm density *\/$/;" m struct:background +index_bg_rho_crit ../include/background.h /^ int index_bg_rho_crit; \/**< critical density *\/$/;" m struct:background +index_bg_rho_dcdm ../include/background.h /^ int index_bg_rho_dcdm; \/**< dcdm density *\/$/;" m struct:background +index_bg_rho_dr ../include/background.h /^ int index_bg_rho_dr; \/**< dr density *\/$/;" m struct:background +index_bg_rho_fld ../include/background.h /^ int index_bg_rho_fld; \/**< fluid density *\/$/;" m struct:background +index_bg_rho_g ../include/background.h /^ int index_bg_rho_g; \/**< photon density *\/$/;" m struct:background +index_bg_rho_idm_dr ../include/background.h /^ int index_bg_rho_idm_dr; \/**< density of dark matter interacting with dark radiation *\/$/;" m struct:background +index_bg_rho_idr ../include/background.h /^ int index_bg_rho_idr; \/**< density of interacting dark radiation *\/$/;" m struct:background +index_bg_rho_lambda ../include/background.h /^ int index_bg_rho_lambda; \/**< cosmological constant density *\/$/;" m struct:background +index_bg_rho_ncdm1 ../include/background.h /^ int index_bg_rho_ncdm1; \/**< density of first ncdm species (others contiguous) *\/$/;" m struct:background +index_bg_rho_scf ../include/background.h /^ int index_bg_rho_scf; \/**< scalar field energy density *\/$/;" m struct:background +index_bg_rho_tot ../include/background.h /^ int index_bg_rho_tot; \/**< Total density *\/$/;" m struct:background +index_bg_rho_ur ../include/background.h /^ int index_bg_rho_ur; \/**< relativistic neutrinos\/relics density *\/$/;" m struct:background +index_bg_rs ../include/background.h /^ int index_bg_rs; \/**< comoving sound horizon in Mpc *\/$/;" m struct:background +index_bg_time ../include/background.h /^ int index_bg_time; \/**< proper (cosmological) time in Mpc *\/$/;" m struct:background +index_bg_w_fld ../include/background.h /^ int index_bg_w_fld; \/**< fluid equation of state *\/$/;" m struct:background +index_bi_D ../include/background.h /^ int index_bi_D; \/**< {C} scale independent growth factor D(a) for CDM perturbations. *\/$/;" m struct:background +index_bi_D_prime ../include/background.h /^ int index_bi_D_prime; \/**< {C} D satisfies \\f$ [D''(\\tau)=-aHD'(\\tau)+3\/2 a^2 \\rho_M D(\\tau) \\f$ *\/$/;" m struct:background +index_bi_a ../include/background.h /^ int index_bi_a; \/**< {B} scale factor *\/$/;" m struct:background +index_bi_phi_prime_scf ../include/background.h /^ int index_bi_phi_prime_scf; \/**< {B} scalar field derivative wrt conformal time *\/$/;" m struct:background +index_bi_phi_scf ../include/background.h /^ int index_bi_phi_scf; \/**< {B} scalar field value *\/$/;" m struct:background +index_bi_rho_dcdm ../include/background.h /^ int index_bi_rho_dcdm;\/**< {B} dcdm density *\/$/;" m struct:background +index_bi_rho_dr ../include/background.h /^ int index_bi_rho_dr; \/**< {B} dr density *\/$/;" m struct:background +index_bi_rho_fld ../include/background.h /^ int index_bi_rho_fld; \/**< {B} fluid density *\/$/;" m struct:background +index_bi_rs ../include/background.h /^ int index_bi_rs; \/**< {C} sound horizon *\/$/;" m struct:background +index_bi_tau ../include/background.h /^ int index_bi_tau; \/**< {C} conformal time in Mpc *\/$/;" m struct:background +index_bi_time ../include/background.h /^ int index_bi_time; \/**< {C} proper (cosmological) time in Mpc *\/$/;" m struct:background +index_ct_bb ../include/spectra.h /^ int index_ct_bb; \/**< index for type \\f$ C_l^{BB} \\f$*\/$/;" m struct:spectra +index_ct_dd ../include/spectra.h /^ int index_ct_dd; \/**< first index for type \\f$ C_l^{dd} \\f$((d_size*d_size-(d_size-non_diag)*(d_size-non_diag-1)\/2) values) *\/$/;" m struct:spectra +index_ct_dl ../include/spectra.h /^ int index_ct_dl; \/**< first index for type \\f$ C_l^{dl} \\f$(d_size values) *\/$/;" m struct:spectra +index_ct_ee ../include/spectra.h /^ int index_ct_ee; \/**< index for type \\f$ C_l^{EE} \\f$*\/$/;" m struct:spectra +index_ct_ep ../include/spectra.h /^ int index_ct_ep; \/**< index for type \\f$ C_l^{E\\phi} \\f$*\/$/;" m struct:spectra +index_ct_ll ../include/spectra.h /^ int index_ct_ll; \/**< first index for type \\f$ C_l^{ll} \\f$((d_size*d_size-(d_size-non_diag)*(d_size-non_diag-1)\/2) values) *\/$/;" m struct:spectra +index_ct_pd ../include/spectra.h /^ int index_ct_pd; \/**< first index for type \\f$ C_l^{pd} \\f$(d_size values) *\/$/;" m struct:spectra +index_ct_pp ../include/spectra.h /^ int index_ct_pp; \/**< index for type \\f$ C_l^{\\phi\\phi} \\f$*\/$/;" m struct:spectra +index_ct_td ../include/spectra.h /^ int index_ct_td; \/**< first index for type \\f$ C_l^{Td} \\f$(d_size values) *\/$/;" m struct:spectra +index_ct_te ../include/spectra.h /^ int index_ct_te; \/**< index for type \\f$ C_l^{TE} \\f$*\/$/;" m struct:spectra +index_ct_tl ../include/spectra.h /^ int index_ct_tl; \/**< first index for type \\f$ C_l^{Tl} \\f$(d_size values) *\/$/;" m struct:spectra +index_ct_tp ../include/spectra.h /^ int index_ct_tp; \/**< index for type \\f$ C_l^{T\\phi} \\f$*\/$/;" m struct:spectra +index_ct_tt ../include/spectra.h /^ int index_ct_tt; \/**< index for type \\f$ C_l^{TT} \\f$*\/$/;" m struct:spectra +index_helium_fullreio_fraction ../include/thermodynamics.h /^ int index_helium_fullreio_fraction; \/**< helium full reionization fraction inferred from primordial helium fraction *\/$/;" m struct:reionization +index_helium_fullreio_redshift ../include/thermodynamics.h /^ int index_helium_fullreio_redshift; \/**< helium full reionization redshift *\/$/;" m struct:reionization +index_helium_fullreio_width ../include/thermodynamics.h /^ int index_helium_fullreio_width; \/**< a width defining the duration of helium full reionization in the reio_camb scheme *\/$/;" m struct:reionization +index_ic ../include/perturbations.h /^ int index_ic; \/**< index of initial condition (adiabatic\/isocurvature(s)\/...) *\/$/;" m struct:perturb_parameters_and_workspace +index_ic_ad ../include/perturbations.h /^ int index_ic_ad; \/**< index value for adiabatic *\/$/;" m struct:perturbs +index_ic_bi ../include/perturbations.h /^ int index_ic_bi; \/**< index value for baryon isocurvature *\/$/;" m struct:perturbs +index_ic_cdi ../include/perturbations.h /^ int index_ic_cdi; \/**< index value for CDM isocurvature *\/$/;" m struct:perturbs +index_ic_nid ../include/perturbations.h /^ int index_ic_nid; \/**< index value for neutrino density isocurvature *\/$/;" m struct:perturbs +index_ic_niv ../include/perturbations.h /^ int index_ic_niv; \/**< index value for neutrino velocity isocurvature *\/$/;" m struct:perturbs +index_ic_ten ../include/perturbations.h /^ int index_ic_ten; \/**< index value for unique possibility for tensors *\/$/;" m struct:perturbs +index_ikout ../include/perturbations.h /^ int index_ikout; \/**< index for output k value (when k_output_values is set) *\/$/;" m struct:perturb_workspace +index_in_a ../include/primordial.h /^ int index_in_a; \/**< scale factor *\/$/;" m struct:primordial +index_in_ah_im ../include/primordial.h /^ int index_in_ah_im; \/**< tensor perturbation (imaginary part) *\/$/;" m struct:primordial +index_in_ah_re ../include/primordial.h /^ int index_in_ah_re; \/**< tensor perturbation (real part) *\/$/;" m struct:primordial +index_in_dah_im ../include/primordial.h /^ int index_in_dah_im; \/**< tensor perturbation (imaginary part, time derivative) *\/$/;" m struct:primordial +index_in_dah_re ../include/primordial.h /^ int index_in_dah_re; \/**< tensor perturbation (real part, time derivative) *\/$/;" m struct:primordial +index_in_dksi_im ../include/primordial.h /^ int index_in_dksi_im; \/**< Mukhanov variable (imaginary part, time derivative) *\/$/;" m struct:primordial +index_in_dksi_re ../include/primordial.h /^ int index_in_dksi_re; \/**< Mukhanov variable (real part, time derivative) *\/$/;" m struct:primordial +index_in_dphi ../include/primordial.h /^ int index_in_dphi; \/**< its time derivative *\/$/;" m struct:primordial +index_in_ksi_im ../include/primordial.h /^ int index_in_ksi_im; \/**< Mukhanov variable (imaginary part) *\/$/;" m struct:primordial +index_in_ksi_re ../include/primordial.h /^ int index_in_ksi_re; \/**< Mukhanov variable (real part) *\/$/;" m struct:primordial +index_in_phi ../include/primordial.h /^ int index_in_phi; \/**< inflaton vev *\/$/;" m struct:primordial +index_k ../include/perturbations.h /^ int index_k; \/**< index of wavenumber *\/$/;" m struct:perturb_parameters_and_workspace +index_k_output_values ../include/perturbations.h /^ int * index_k_output_values; \/**< List of indices corresponding to k-values close to k_output_values for each mode.$/;" m struct:perturbs +index_lt_bb ../include/lensing.h /^ int index_lt_bb; \/**< index for type \\f$ C_l^{BB} \\f$*\/$/;" m struct:lensing +index_lt_dd ../include/lensing.h /^ int index_lt_dd; \/**< index for type \\f$ C_l^{dd} \\f$*\/$/;" m struct:lensing +index_lt_ee ../include/lensing.h /^ int index_lt_ee; \/**< index for type \\f$ C_l^{EE} \\f$*\/$/;" m struct:lensing +index_lt_ll ../include/lensing.h /^ int index_lt_ll; \/**< index for type \\f$ C_l^{dd} \\f$*\/$/;" m struct:lensing +index_lt_pp ../include/lensing.h /^ int index_lt_pp; \/**< index for type \\f$ C_l^{\\phi\\phi} \\f$*\/$/;" m struct:lensing +index_lt_td ../include/lensing.h /^ int index_lt_td; \/**< index for type \\f$ C_l^{Td} \\f$*\/$/;" m struct:lensing +index_lt_te ../include/lensing.h /^ int index_lt_te; \/**< index for type \\f$ C_l^{TE} \\f$*\/$/;" m struct:lensing +index_lt_tl ../include/lensing.h /^ int index_lt_tl; \/**< index for type \\f$ C_l^{Td} \\f$*\/$/;" m struct:lensing +index_lt_tp ../include/lensing.h /^ int index_lt_tp; \/**< index for type \\f$ C_l^{T\\phi} \\f$*\/$/;" m struct:lensing +index_lt_tt ../include/lensing.h /^ int index_lt_tt; \/**< index for type \\f$ C_l^{TT} \\f$*\/$/;" m struct:lensing +index_md ../include/perturbations.h /^ int index_md; \/**< index of mode (scalar\/...\/vector\/tensor) *\/$/;" m struct:perturb_parameters_and_workspace +index_md_scalars ../include/nonlinear.h /^ int index_md_scalars; \/**< set equal to psp->index_md_scalars$/;" m struct:nonlinear +index_md_scalars ../include/perturbations.h /^ int index_md_scalars; \/**< index value for scalars *\/$/;" m struct:perturbs +index_md_scalars ../include/spectra.h /^ int index_md_scalars; \/**< index for scalar modes *\/$/;" m struct:spectra +index_md_tensors ../include/perturbations.h /^ int index_md_tensors; \/**< index value for tensors *\/$/;" m struct:perturbs +index_md_vectors ../include/perturbations.h /^ int index_md_vectors; \/**< index value for vectors *\/$/;" m struct:perturbs +index_mt_V_prime ../include/perturbations.h /^ int index_mt_V_prime; \/**< derivative of Newtonian gauge vector metric perturbation V *\/$/;" m struct:perturb_workspace +index_mt_alpha ../include/perturbations.h /^ int index_mt_alpha; \/**< \\f$ \\alpha = (h' + 6 \\eta') \/ (2 k^2) \\f$ in synchronous gauge *\/$/;" m struct:perturb_workspace +index_mt_alpha_prime ../include/perturbations.h /^ int index_mt_alpha_prime; \/**< \\f$ \\alpha'\\f$ wrt conf. time) in synchronous gauge *\/$/;" m struct:perturb_workspace +index_mt_eta_prime ../include/perturbations.h /^ int index_mt_eta_prime; \/**< eta' (wrt conf. time) in synchronous gauge *\/$/;" m struct:perturb_workspace +index_mt_gw_prime_prime ../include/perturbations.h /^ int index_mt_gw_prime_prime;\/**< second derivative wrt conformal time of gravitational wave field, often called h *\/$/;" m struct:perturb_workspace +index_mt_h_prime ../include/perturbations.h /^ int index_mt_h_prime; \/**< h' (wrt conf. time) in synchronous gauge *\/$/;" m struct:perturb_workspace +index_mt_h_prime_prime ../include/perturbations.h /^ int index_mt_h_prime_prime; \/**< h'' (wrt conf. time) in synchronous gauge *\/$/;" m struct:perturb_workspace +index_mt_hv_prime_prime ../include/perturbations.h /^ int index_mt_hv_prime_prime;\/**< Second derivative of Synchronous gauge vector metric perturbation \\f$ h_v\\f$ *\/$/;" m struct:perturb_workspace +index_mt_phi_prime ../include/perturbations.h /^ int index_mt_phi_prime; \/**< (d phi\/d conf.time) in longitudinal gauge *\/$/;" m struct:perturb_workspace +index_mt_psi ../include/perturbations.h /^ int index_mt_psi; \/**< psi in longitudinal gauge *\/$/;" m struct:perturb_workspace +index_pk_cb ../include/nonlinear.h /^ int index_pk_cb; \/**< index of pk for cold dark matter plus baryons (defined only when has_pk_cb is TRUE *\/$/;" m struct:nonlinear +index_pk_cluster ../include/nonlinear.h /^ int index_pk_cluster; \/**< equal to index_pk_cb if it exists, otherwise to index_pk_m$/;" m struct:nonlinear +index_pk_eq_Omega_m ../include/nonlinear.h /^ int index_pk_eq_Omega_m; \/**< index of Omega_m in table pk_eq_w_and_Omega *\/$/;" m struct:nonlinear +index_pk_eq_w ../include/nonlinear.h /^ int index_pk_eq_w; \/**< index of w in table pk_eq_w_and_Omega *\/$/;" m struct:nonlinear +index_pk_m ../include/nonlinear.h /^ int index_pk_m; \/**< index of pk for matter (defined only when has_pk_m is TRUE) *\/$/;" m struct:nonlinear +index_pk_total ../include/nonlinear.h /^ int index_pk_total; \/**< always equal to index_pk_m$/;" m struct:nonlinear +index_pt_F0_dr ../include/perturbations.h /^ int index_pt_F0_dr;$/;" m struct:perturb_vector +index_pt_Gamma_fld ../include/perturbations.h /^ int index_pt_Gamma_fld; \/**< unique dark energy dynamical variable in PPF case *\/$/;" m struct:perturb_vector +index_pt_V ../include/perturbations.h /^ int index_pt_V; \/**< vector metric perturbation V in Newtonian gauge *\/$/;" m struct:perturb_vector +index_pt_delta_b ../include/perturbations.h /^ int index_pt_delta_b; \/**< baryon density *\/$/;" m struct:perturb_vector +index_pt_delta_cdm ../include/perturbations.h /^ int index_pt_delta_cdm; \/**< cdm density *\/$/;" m struct:perturb_vector +index_pt_delta_dcdm ../include/perturbations.h /^ int index_pt_delta_dcdm; \/**< dcdm density *\/$/;" m struct:perturb_vector +index_pt_delta_fld ../include/perturbations.h /^ int index_pt_delta_fld; \/**< dark energy density in true fluid case *\/$/;" m struct:perturb_vector +index_pt_delta_g ../include/perturbations.h /^ int index_pt_delta_g; \/**< photon density *\/$/;" m struct:perturb_vector +index_pt_delta_idm_dr ../include/perturbations.h /^ int index_pt_delta_idm_dr;\/**< idm_dr density *\/$/;" m struct:perturb_vector +index_pt_delta_idr ../include/perturbations.h /^ int index_pt_delta_idr; \/**< density of interacting dark radiation *\/$/;" m struct:perturb_vector +index_pt_delta_ur ../include/perturbations.h /^ int index_pt_delta_ur; \/**< density of ultra-relativistic neutrinos\/relics *\/$/;" m struct:perturb_vector +index_pt_eta ../include/perturbations.h /^ int index_pt_eta; \/**< synchronous gauge metric perturbation eta*\/$/;" m struct:perturb_vector +index_pt_gw ../include/perturbations.h /^ int index_pt_gw; \/**< tensor metric perturbation h (gravitational waves) *\/$/;" m struct:perturb_vector +index_pt_gwdot ../include/perturbations.h /^ int index_pt_gwdot; \/**< its time-derivative *\/$/;" m struct:perturb_vector +index_pt_hv_prime ../include/perturbations.h /^ int index_pt_hv_prime; \/**< vector metric perturbation h_v' in synchronous gauge *\/$/;" m struct:perturb_vector +index_pt_l3_g ../include/perturbations.h /^ int index_pt_l3_g; \/**< photon l=3 *\/$/;" m struct:perturb_vector +index_pt_l3_idr ../include/perturbations.h /^ int index_pt_l3_idr; \/**< l=3 of interacting dark radiation *\/$/;" m struct:perturb_vector +index_pt_l3_ur ../include/perturbations.h /^ int index_pt_l3_ur; \/**< l=3 of ultra-relativistic neutrinos\/relics *\/$/;" m struct:perturb_vector +index_pt_perturbed_recombination_delta_chi ../include/perturbations.h /^ int index_pt_perturbed_recombination_delta_chi; \/**< Inionization fraction perturbation *\/$/;" m struct:perturb_vector +index_pt_perturbed_recombination_delta_temp ../include/perturbations.h /^ int index_pt_perturbed_recombination_delta_temp; \/**< Gas temperature perturbation *\/$/;" m struct:perturb_vector +index_pt_phi ../include/perturbations.h /^ int index_pt_phi; \/**< newtonian gauge metric perturbation phi *\/$/;" m struct:perturb_vector +index_pt_phi_prime_scf ../include/perturbations.h /^ int index_pt_phi_prime_scf; \/**< scalar field velocity *\/$/;" m struct:perturb_vector +index_pt_phi_scf ../include/perturbations.h /^ int index_pt_phi_scf; \/**< scalar field density *\/$/;" m struct:perturb_vector +index_pt_pol0_g ../include/perturbations.h /^ int index_pt_pol0_g; \/**< photon polarization, l=0 *\/$/;" m struct:perturb_vector +index_pt_pol1_g ../include/perturbations.h /^ int index_pt_pol1_g; \/**< photon polarization, l=1 *\/$/;" m struct:perturb_vector +index_pt_pol2_g ../include/perturbations.h /^ int index_pt_pol2_g; \/**< photon polarization, l=2 *\/$/;" m struct:perturb_vector +index_pt_pol3_g ../include/perturbations.h /^ int index_pt_pol3_g; \/**< photon polarization, l=3 *\/$/;" m struct:perturb_vector +index_pt_psi0_ncdm1 ../include/perturbations.h /^ int index_pt_psi0_ncdm1; \/**< first multipole of perturbation of first ncdm species, Psi_0 *\/$/;" m struct:perturb_vector +index_pt_shear_g ../include/perturbations.h /^ int index_pt_shear_g; \/**< photon shear *\/$/;" m struct:perturb_vector +index_pt_shear_idr ../include/perturbations.h /^ int index_pt_shear_idr; \/**< shear of interacting dark radiation *\/$/;" m struct:perturb_vector +index_pt_shear_ur ../include/perturbations.h /^ int index_pt_shear_ur; \/**< shear of ultra-relativistic neutrinos\/relics *\/$/;" m struct:perturb_vector +index_pt_theta_b ../include/perturbations.h /^ int index_pt_theta_b; \/**< baryon velocity *\/$/;" m struct:perturb_vector +index_pt_theta_cdm ../include/perturbations.h /^ int index_pt_theta_cdm; \/**< cdm velocity *\/$/;" m struct:perturb_vector +index_pt_theta_dcdm ../include/perturbations.h /^ int index_pt_theta_dcdm; \/**< dcdm velocity *\/$/;" m struct:perturb_vector +index_pt_theta_fld ../include/perturbations.h /^ int index_pt_theta_fld; \/**< dark energy velocity in true fluid case *\/$/;" m struct:perturb_vector +index_pt_theta_g ../include/perturbations.h /^ int index_pt_theta_g; \/**< photon velocity *\/$/;" m struct:perturb_vector +index_pt_theta_idm_dr ../include/perturbations.h /^ int index_pt_theta_idm_dr;\/**< idm_dr velocity *\/$/;" m struct:perturb_vector +index_pt_theta_idr ../include/perturbations.h /^ int index_pt_theta_idr; \/**< velocity of interacting dark radiation *\/$/;" m struct:perturb_vector +index_pt_theta_ur ../include/perturbations.h /^ int index_pt_theta_ur; \/**< velocity of ultra-relativistic neutrinos\/relics *\/$/;" m struct:perturb_vector +index_q_flat_approximation ../include/transfer.h /^ int index_q_flat_approximation; \/**< index of the first q value using the flat rescaling approximation *\/$/;" m struct:transfers +index_re_Tb ../include/thermodynamics.h /^ int index_re_Tb; \/**< baryon temperature \\f$ T_b \\f$ *\/$/;" m struct:recombination +index_re_Tb ../include/thermodynamics.h /^ int index_re_Tb; \/**< baryon temperature \\f$ T_b \\f$ *\/$/;" m struct:reionization +index_re_cb2 ../include/thermodynamics.h /^ int index_re_cb2; \/**< squared baryon adiabatic sound speed \\f$ c_b^2 \\f$ *\/$/;" m struct:recombination +index_re_cb2 ../include/thermodynamics.h /^ int index_re_cb2; \/**< squared baryon adiabatic sound speed \\f$ c_b^2 \\f$ *\/$/;" m struct:reionization +index_re_d3kappadz3 ../include/thermodynamics.h /^ int index_re_d3kappadz3; \/**< second derivative of previous quantity with respect to redshift *\/$/;" m struct:reionization +index_re_dkappadtau ../include/thermodynamics.h /^ int index_re_dkappadtau; \/**< Thomson scattering rate \\f$ d \\kappa \/ d \\tau \\f$ (units 1\/Mpc) *\/$/;" m struct:recombination +index_re_dkappadtau ../include/thermodynamics.h /^ int index_re_dkappadtau; \/**< Thomson scattering rate \\f$ d \\kappa \/ d \\tau\\f$ (units 1\/Mpc) *\/$/;" m struct:reionization +index_re_dkappadz ../include/thermodynamics.h /^ int index_re_dkappadz; \/**< Thomson scattering rate with respect to redshift \\f$ d \\kappa \/ d z\\f$ (units 1\/Mpc) *\/$/;" m struct:reionization +index_re_wb ../include/thermodynamics.h /^ int index_re_wb; \/**< baryon equation of state parameter \\f$ w_b \\f$ *\/$/;" m struct:recombination +index_re_wb ../include/thermodynamics.h /^ int index_re_wb; \/**< baryon equation of state parameter \\f$ w_b \\f$ *\/$/;" m struct:reionization +index_re_xe ../include/thermodynamics.h /^ int index_re_xe; \/**< ionization fraction \\f$ x_e \\f$ *\/$/;" m struct:recombination +index_re_xe ../include/thermodynamics.h /^ int index_re_xe; \/**< ionization fraction \\f$ x_e \\f$ *\/$/;" m struct:reionization +index_re_z ../include/thermodynamics.h /^ int index_re_z; \/**< redshift \\f$ z \\f$ *\/$/;" m struct:recombination +index_re_z ../include/thermodynamics.h /^ int index_re_z; \/**< redshift \\f$ z \\f$ *\/$/;" m struct:reionization +index_reco_when_reio_start ../include/thermodynamics.h /^ int index_reco_when_reio_start; \/**< index of line in recombination table corresponding to first line of reionization table*\/$/;" m struct:reionization +index_reio_exponent ../include/thermodynamics.h /^ int index_reio_exponent; \/**< an exponent used in the function x_e(z) in the reio_camb scheme *\/$/;" m struct:reionization +index_reio_first_xe ../include/thermodynamics.h /^ int index_reio_first_xe; \/**< ionization fraction at redshift first_z (inferred from recombination code) *\/$/;" m struct:reionization +index_reio_first_z ../include/thermodynamics.h /^ int index_reio_first_z; \/**< redshift at which we start to impose reionization function *\/$/;" m struct:reionization +index_reio_redshift ../include/thermodynamics.h /^ int index_reio_redshift; \/**< hydrogen reionization redshift *\/$/;" m struct:reionization +index_reio_start ../include/thermodynamics.h /^ int index_reio_start; \/**< redshift above which hydrogen reionization neglected *\/$/;" m struct:reionization +index_reio_step_sharpness ../include/thermodynamics.h /^ int index_reio_step_sharpness; \/**< sharpness of tanh jump *\/$/;" m struct:reionization +index_reio_width ../include/thermodynamics.h /^ int index_reio_width; \/**< a width defining the duration of hydrogen reionization in the reio_camb scheme *\/$/;" m struct:reionization +index_reio_xe_after ../include/thermodynamics.h /^ int index_reio_xe_after; \/**< ionization fraction after full reionization *\/$/;" m struct:reionization +index_reio_xe_before ../include/thermodynamics.h /^ int index_reio_xe_before; \/**< ionization fraction at redshift 'reio_start' *\/$/;" m struct:reionization +index_symmetric_matrix ../include/common.h 75;" d +index_tau_min_nl ../include/nonlinear.h /^ int index_tau_min_nl; \/**< index of smallest value of tau at which nonlinear corrections have been computed$/;" m struct:nonlinear +index_th_Tb ../include/thermodynamics.h /^ int index_th_Tb; \/**< baryon temperature \\f$ T_b \\f$ *\/$/;" m struct:thermo +index_th_Tidm_dr ../include/thermodynamics.h /^ int index_th_Tidm_dr; \/**< temperature of DM interacting with DR \\f$ T_{idm_dr} \\f$ *\/$/;" m struct:thermo +index_th_cb2 ../include/thermodynamics.h /^ int index_th_cb2; \/**< squared baryon adiabatic sound speed \\f$ c_b^2 \\f$ *\/$/;" m struct:thermo +index_th_cidm_dr2 ../include/thermodynamics.h /^ int index_th_cidm_dr2; \/**< interacting dark matter squared sound speed \\f$ c_{dm}^2 \\f$ *\/$/;" m struct:thermo +index_th_dcb2 ../include/thermodynamics.h /^ int index_th_dcb2; \/**< derivative wrt conformal time of squared baryon sound speed \\f$ d [c_b^2] \/ d \\tau \\f$ (only computed if some non-minimal tight-coupling schemes is requested) *\/$/;" m struct:thermo +index_th_ddcb2 ../include/thermodynamics.h /^ int index_th_ddcb2; \/**< second derivative wrt conformal time of squared baryon sound speed \\f$ d^2 [c_b^2] \/ d \\tau^2 \\f$ (only computed if some non0-minimal tight-coupling schemes is requested) *\/$/;" m struct:thermo +index_th_dddkappa ../include/thermodynamics.h /^ int index_th_dddkappa; \/**< scattering rate second derivative \\f$ d^3 \\kappa \/ d \\tau^3 \\f$ *\/$/;" m struct:thermo +index_th_dddmu_idm_dr ../include/thermodynamics.h /^ int index_th_dddmu_idm_dr; \/**< second derivative of this scattering rate *\/$/;" m struct:thermo +index_th_ddg ../include/thermodynamics.h /^ int index_th_ddg; \/**< visibility function second derivative \\f$ (d^2 g \/ d \\tau^2) \\f$ *\/$/;" m struct:thermo +index_th_ddkappa ../include/thermodynamics.h /^ int index_th_ddkappa; \/**< scattering rate derivative \\f$ d^2 \\kappa \/ d \\tau^2 \\f$ *\/$/;" m struct:thermo +index_th_ddmu_idm_dr ../include/thermodynamics.h /^ int index_th_ddmu_idm_dr; \/**< derivative of this scattering rate *\/$/;" m struct:thermo +index_th_dg ../include/thermodynamics.h /^ int index_th_dg; \/**< visibility function derivative \\f$ (d g \/ d \\tau) \\f$ *\/$/;" m struct:thermo +index_th_dkappa ../include/thermodynamics.h /^ int index_th_dkappa; \/**< Thomson scattering rate \\f$ d \\kappa \/ d \\tau\\f$ (units 1\/Mpc) *\/$/;" m struct:thermo +index_th_dmu_idm_dr ../include/thermodynamics.h /^ int index_th_dmu_idm_dr; \/**< scattering rate of idr with idm_dr (i.e. idr opacity to idm_dr scattering) (units 1\/Mpc) *\/$/;" m struct:thermo +index_th_dmu_idr ../include/thermodynamics.h /^ int index_th_dmu_idr; \/**< idr self-interaction rate *\/$/;" m struct:thermo +index_th_exp_m_kappa ../include/thermodynamics.h /^ int index_th_exp_m_kappa; \/**< \\f$ exp^{-\\kappa} \\f$ *\/$/;" m struct:thermo +index_th_g ../include/thermodynamics.h /^ int index_th_g; \/**< visibility function \\f$ g = (d \\kappa \/ d \\tau) * exp^{-\\kappa} \\f$ *\/$/;" m struct:thermo +index_th_g_idm_dr ../include/thermodynamics.h /^ int index_th_g_idm_dr; \/**< visibility function of idm_idr *\/$/;" m struct:thermo +index_th_r_d ../include/thermodynamics.h /^ int index_th_r_d; \/**< simple analytic approximation to the photon comoving damping scale *\/$/;" m struct:thermo +index_th_rate ../include/thermodynamics.h /^ int index_th_rate; \/**< maximum variation rate of \\f$ exp^{-\\kappa}\\f$, g and \\f$ (d g \/ d \\tau) \\f$, used for computing integration step in perturbation module *\/$/;" m struct:thermo +index_th_tau_d ../include/thermodynamics.h /^ int index_th_tau_d; \/**< Baryon drag optical depth *\/$/;" m struct:thermo +index_th_tau_idm_dr ../include/thermodynamics.h /^ int index_th_tau_idm_dr; \/**< optical depth of idm_dr (due to interactions with idr) *\/$/;" m struct:thermo +index_th_tau_idr ../include/thermodynamics.h /^ int index_th_tau_idr; \/**< optical depth of idr (due to self-interactions) *\/$/;" m struct:thermo +index_th_wb ../include/thermodynamics.h /^ int index_th_wb; \/**< baryon equation of state parameter \\f$ w_b = k_B T_b \/ \\mu \\f$ *\/$/;" m struct:thermo +index_th_xe ../include/thermodynamics.h /^ int index_th_xe; \/**< ionization fraction \\f$ x_e \\f$ *\/$/;" m struct:thermo +index_tp_H_T_Nb_prime ../include/perturbations.h /^ int index_tp_H_T_Nb_prime; \/**< index value for metric fluctuation H_T_Nb' *\/$/;" m struct:perturbs +index_tp_delta_b ../include/perturbations.h /^ int index_tp_delta_b; \/**< index value for delta of baryons *\/$/;" m struct:perturbs +index_tp_delta_cb ../include/perturbations.h /^ int index_tp_delta_cb; \/**< index value for delta cb *\/$/;" m struct:perturbs +index_tp_delta_cdm ../include/perturbations.h /^ int index_tp_delta_cdm; \/**< index value for delta of cold dark matter *\/$/;" m struct:perturbs +index_tp_delta_dcdm ../include/perturbations.h /^ int index_tp_delta_dcdm;\/**< index value for delta of DCDM *\/$/;" m struct:perturbs +index_tp_delta_dr ../include/perturbations.h /^ int index_tp_delta_dr; \/**< index value for delta of decay radiation *\/$/;" m struct:perturbs +index_tp_delta_fld ../include/perturbations.h /^ int index_tp_delta_fld; \/**< index value for delta of dark energy *\/$/;" m struct:perturbs +index_tp_delta_g ../include/perturbations.h /^ int index_tp_delta_g; \/**< index value for delta of gammas *\/$/;" m struct:perturbs +index_tp_delta_idm_dr ../include/perturbations.h /^ int index_tp_delta_idm_dr;\/**< index value for delta of interacting dark matter (with dr)*\/$/;" m struct:perturbs +index_tp_delta_idr ../include/perturbations.h /^ int index_tp_delta_idr; \/**< index value for delta of interacting dark radiation *\/$/;" m struct:perturbs +index_tp_delta_m ../include/perturbations.h /^ int index_tp_delta_m; \/**< index value for matter density fluctuation *\/$/;" m struct:perturbs +index_tp_delta_ncdm1 ../include/perturbations.h /^ int index_tp_delta_ncdm1; \/**< index value for delta of first non-cold dark matter species (e.g. massive neutrinos) *\/$/;" m struct:perturbs +index_tp_delta_scf ../include/perturbations.h /^ int index_tp_delta_scf; \/**< index value for delta of scalar field *\/$/;" m struct:perturbs +index_tp_delta_tot ../include/perturbations.h /^ int index_tp_delta_tot; \/**< index value for total density fluctuation *\/$/;" m struct:perturbs +index_tp_delta_ur ../include/perturbations.h /^ int index_tp_delta_ur; \/**< index value for delta of ultra-relativistic neutrinos\/relics *\/$/;" m struct:perturbs +index_tp_eta ../include/perturbations.h /^ int index_tp_eta; \/**< index value for metric fluctuation eta *\/$/;" m struct:perturbs +index_tp_eta_prime ../include/perturbations.h /^ int index_tp_eta_prime; \/**< index value for metric fluctuation eta' *\/$/;" m struct:perturbs +index_tp_h ../include/perturbations.h /^ int index_tp_h; \/**< index value for metric fluctuation h *\/$/;" m struct:perturbs +index_tp_h_prime ../include/perturbations.h /^ int index_tp_h_prime; \/**< index value for metric fluctuation h' *\/$/;" m struct:perturbs +index_tp_k2gamma_Nb ../include/perturbations.h /^ int index_tp_k2gamma_Nb; \/**< index value for metric fluctuation gamma times k^2 in Nbody gauge *\/$/;" m struct:perturbs +index_tp_p ../include/perturbations.h /^ int index_tp_p; \/**< index value for polarization *\/$/;" m struct:perturbs +index_tp_perturbed_recombination_delta_chi ../include/perturbations.h /^ int index_tp_perturbed_recombination_delta_chi; \/**< Inionization fraction perturbation *\/$/;" m struct:perturbs +index_tp_perturbed_recombination_delta_temp ../include/perturbations.h /^ int index_tp_perturbed_recombination_delta_temp; \/**< Gas temperature perturbation *\/$/;" m struct:perturbs +index_tp_phi ../include/perturbations.h /^ int index_tp_phi; \/**< index value for metric fluctuation phi *\/$/;" m struct:perturbs +index_tp_phi_plus_psi ../include/perturbations.h /^ int index_tp_phi_plus_psi; \/**< index value for metric fluctuation phi+psi *\/$/;" m struct:perturbs +index_tp_phi_prime ../include/perturbations.h /^ int index_tp_phi_prime; \/**< index value for metric fluctuation phi' *\/$/;" m struct:perturbs +index_tp_psi ../include/perturbations.h /^ int index_tp_psi; \/**< index value for metric fluctuation psi *\/$/;" m struct:perturbs +index_tp_t0 ../include/perturbations.h /^ int index_tp_t0; \/**< index value for temperature (j=0 term) *\/$/;" m struct:perturbs +index_tp_t1 ../include/perturbations.h /^ int index_tp_t1; \/**< index value for temperature (j=1 term) *\/$/;" m struct:perturbs +index_tp_t2 ../include/perturbations.h /^ int index_tp_t2; \/**< index value for temperature (j=2 term) *\/$/;" m struct:perturbs +index_tp_theta_b ../include/perturbations.h /^ int index_tp_theta_b; \/**< index value for theta of baryons *\/$/;" m struct:perturbs +index_tp_theta_cb ../include/perturbations.h /^ int index_tp_theta_cb; \/**< index value for theta cb *\/$/;" m struct:perturbs +index_tp_theta_cdm ../include/perturbations.h /^ int index_tp_theta_cdm; \/**< index value for theta of cold dark matter *\/$/;" m struct:perturbs +index_tp_theta_dcdm ../include/perturbations.h /^ int index_tp_theta_dcdm; \/**< index value for theta of DCDM *\/$/;" m struct:perturbs +index_tp_theta_dr ../include/perturbations.h /^ int index_tp_theta_dr; \/**< index value for F1 of decay radiation *\/$/;" m struct:perturbs +index_tp_theta_fld ../include/perturbations.h /^ int index_tp_theta_fld; \/**< index value for theta of dark energy *\/$/;" m struct:perturbs +index_tp_theta_g ../include/perturbations.h /^ int index_tp_theta_g; \/**< index value for theta of gammas *\/$/;" m struct:perturbs +index_tp_theta_idm_dr ../include/perturbations.h /^ int index_tp_theta_idm_dr;\/**< index value for theta of interacting dark matter (with dr)*\/$/;" m struct:perturbs +index_tp_theta_idr ../include/perturbations.h /^ int index_tp_theta_idr; \/**< index value for theta of interacting dark radiation *\/$/;" m struct:perturbs +index_tp_theta_m ../include/perturbations.h /^ int index_tp_theta_m; \/**< index value for matter velocity fluctuation *\/$/;" m struct:perturbs +index_tp_theta_ncdm1 ../include/perturbations.h /^ int index_tp_theta_ncdm1; \/**< index value for theta of first non-cold dark matter species (e.g. massive neutrinos) *\/$/;" m struct:perturbs +index_tp_theta_scf ../include/perturbations.h /^ int index_tp_theta_scf; \/**< index value for theta of scalar field *\/$/;" m struct:perturbs +index_tp_theta_tot ../include/perturbations.h /^ int index_tp_theta_tot; \/**< index value for total velocity fluctuation *\/$/;" m struct:perturbs +index_tp_theta_ur ../include/perturbations.h /^ int index_tp_theta_ur; \/**< index value for theta of ultra-relativistic neutrinos\/relics *\/$/;" m struct:perturbs +index_tt_b ../include/transfer.h /^ int index_tt_b; \/**< index for transfer type = B-polarization *\/$/;" m struct:transfers +index_tt_d0 ../include/transfer.h /^ int index_tt_d0; \/**< index for first bin of transfer type = doppler effect for of number count (j=0 term) *\/$/;" m struct:transfers +index_tt_d1 ../include/transfer.h /^ int index_tt_d1; \/**< index for first bin of transfer type = doppler effect for of number count (j=1 term) *\/$/;" m struct:transfers +index_tt_density ../include/transfer.h /^ int index_tt_density; \/**< index for first bin of transfer type = matter density *\/$/;" m struct:transfers +index_tt_e ../include/transfer.h /^ int index_tt_e; \/**< index for transfer type = E-polarization *\/$/;" m struct:transfers +index_tt_lcmb ../include/transfer.h /^ int index_tt_lcmb; \/**< index for transfer type = CMB lensing *\/$/;" m struct:transfers +index_tt_lensing ../include/transfer.h /^ int index_tt_lensing; \/**< index for first bin of transfer type = galaxy lensing *\/$/;" m struct:transfers +index_tt_nc_g1 ../include/transfer.h /^ int index_tt_nc_g1; \/**< index for first bin of transfer type = gravity term G1 for of number count *\/$/;" m struct:transfers +index_tt_nc_g2 ../include/transfer.h /^ int index_tt_nc_g2; \/**< index for first bin of transfer type = gravity term G2 for of number count *\/$/;" m struct:transfers +index_tt_nc_g3 ../include/transfer.h /^ int index_tt_nc_g3; \/**< index for first bin of transfer type = gravity term G3 for of number count *\/$/;" m struct:transfers +index_tt_nc_g4 ../include/transfer.h /^ int index_tt_nc_g4; \/**< index for first bin of transfer type = gravity term G3 for of number count *\/$/;" m struct:transfers +index_tt_nc_g5 ../include/transfer.h /^ int index_tt_nc_g5; \/**< index for first bin of transfer type = gravity term G3 for of number count *\/$/;" m struct:transfers +index_tt_nc_lens ../include/transfer.h /^ int index_tt_nc_lens; \/**< index for first bin of transfer type = lensing for of number count *\/$/;" m struct:transfers +index_tt_rsd ../include/transfer.h /^ int index_tt_rsd; \/**< index for first bin of transfer type = redshift space distortion of number count *\/$/;" m struct:transfers +index_tt_t0 ../include/transfer.h /^ int index_tt_t0; \/**< index for transfer type = temperature (j=0 term) *\/$/;" m struct:transfers +index_tt_t1 ../include/transfer.h /^ int index_tt_t1; \/**< index for transfer type = temperature (j=1 term) *\/$/;" m struct:transfers +index_tt_t2 ../include/transfer.h /^ int index_tt_t2; \/**< index for transfer type = temperature (j=2 term) *\/$/;" m struct:transfers +inflation_H ../include/primordial.h /^ inflation_H,$/;" e enum:primordial_spectrum_type +inflation_V ../include/primordial.h /^ inflation_V,$/;" e enum:primordial_spectrum_type +inflation_V_end ../include/primordial.h /^ inflation_V_end,$/;" e enum:primordial_spectrum_type +inflation_module_behavior ../include/primordial.h /^enum inflation_module_behavior {$/;" g +initialise_HIS_cache ../include/transfer.h /^ short initialise_HIS_cache; \/**< only true if we are using CLASS for setting up a cache of HIS structures *\/$/;" m struct:transfers +initialize_generic_integrator ../tools/dei_rkck.c /^int initialize_generic_integrator($/;" f +initialize_jacobian ../tools/evolver_ndf15.c /^int initialize_jacobian(struct jacobian *jac, int neq, ErrorMsg error_message){$/;" f +initialize_numjac_workspace ../tools/evolver_ndf15.c /^int initialize_numjac_workspace(struct numjac_workspace * nj_ws,int neq, ErrorMsg error_message){$/;" f +input_auxillary_target_conditions input.c /^int input_auxillary_target_conditions(struct file_content * pfc,$/;" f +input_default_params input.c /^int input_default_params($/;" f +input_default_precision input.c /^int input_default_precision ( struct precision * ppr ) {$/;" f +input_find_root input.c /^int input_find_root(double *xzero,$/;" f +input_fzerofun_1d input.c /^int input_fzerofun_1d(double input,$/;" f +input_get_guess input.c /^int input_get_guess(double *xguess,$/;" f +input_init input.c /^int input_init($/;" f +input_init_from_arguments input.c /^int input_init_from_arguments($/;" f +input_pprpba ../include/input.h /^struct input_pprpba {$/;" s +input_prepare_pk_eq input.c /^int input_prepare_pk_eq($/;" f +input_read_parameters input.c /^int input_read_parameters($/;" f +input_read_precisions input.c /^int input_read_precisions($/;" f +input_try_unknown_parameters input.c /^int input_try_unknown_parameters(double * unknown_parameter,$/;" f +integrate ../include/primordial.h /^ enum integration_direction integrate;$/;" m struct:primordial_inflation_parameters_and_workspace typeref:enum:primordial_inflation_parameters_and_workspace::integration_direction +integrated_growth nonlinear_hmcode.c /^double integrated_growth(double a){$/;" f +integration_direction ../include/primordial.h /^enum integration_direction {$/;" g +inter_closeby ../include/background.h /^ short inter_closeby; \/**< flag for calling background_at_eta and find position in interpolation table starting from previous position in previous call *\/$/;" m struct:background +inter_closeby ../include/thermodynamics.h /^ short inter_closeby; \/**< flag for calling thermodynamics_at_z and find position in interpolation table starting from previous position in previous call *\/$/;" m struct:thermo +inter_mode ../include/perturbations.h /^ short inter_mode; \/**< flag defining the method used for interpolation background\/thermo quantities tables *\/$/;" m struct:perturb_workspace +inter_normal ../include/background.h /^ short inter_normal; \/**< flag for calling background_at_eta and find position in interpolation table normally *\/$/;" m struct:background +inter_normal ../include/thermodynamics.h /^ short inter_normal; \/**< flag for calling thermodynamics_at_z and find position in interpolation table normally *\/$/;" m struct:thermo +interp_from_dif ../tools/evolver_ndf15.c /^int interp_from_dif(double tinterp,$/;" f +interp_from_difold ../tools/evolver_ndf15.c /^int interp_from_difold(double tinterp,double tnew,double *ynew,double h,double **dif,int k, double *yinterp,$/;" f +interpolated_sources ../include/transfer.h /^ double * interpolated_sources; \/**< interpolated_sources[index_tau]:$/;" m struct:transfer_workspace +is_non_zero ../include/nonlinear.h /^ short * is_non_zero; \/**< for a given mode, is_non_zero[index_md][index_ic1_ic2] is set to true if the pair of initial conditions (index_ic1, index_ic2) are statistically correlated, or to false if they are uncorrelated *\/$/;" m struct:nonlinear +is_non_zero ../include/primordial.h /^ short ** is_non_zero; \/**< is_non_zero[index_md][index_ic1_ic2] set to false if pair$/;" m struct:primordial +is_non_zero ../include/spectra.h /^ short ** is_non_zero; \/**< for a given mode, is_non_zero[index_md][index_ic1_ic2] is set to true if the pair of initial conditions (index_ic1, index_ic2) are statistically correlated, or to false if they are uncorrelated *\/$/;" m struct:spectra +j ../include/hermite3_interpolation_csource.h /^int j, nx, current_border_idx=0;$/;" v +j ../include/hermite4_interpolation_csource.h /^int j, nx, current_border_idx=0;$/;" v +j ../include/hermite6_interpolation_csource.h /^int K, l, j, nx, current_border_idx=0;$/;" v +j ../tools/hermite3_interpolation_csource.h /^int j, nx, current_border_idx=0;$/;" v +j ../tools/hermite4_interpolation_csource.h /^int j, nx, current_border_idx=0;$/;" v +j ../tools/hermite6_interpolation_csource.h /^int K, l, j, nx, current_border_idx=0;$/;" v +jacobian ../include/evolver_ndf15.h /^struct jacobian{$/;" s +jacvec ../include/evolver_ndf15.h /^ double *jacvec; \/*Stores experience gained from subsequent calls *\/$/;" m struct:jacobian +k ../include/nonlinear.h /^ double * k; \/**< k[index_k] = list of k values *\/$/;" m struct:nonlinear +k ../include/perturbations.h /^ double ** k; \/**< k[index_md][index_k] = list of values *\/$/;" m struct:perturbs +k ../include/perturbations.h /^ double k; \/**< current value of wavenumber in 1\/Mpc *\/$/;" m struct:perturb_parameters_and_workspace +k ../include/primordial.h /^ double k;$/;" m struct:primordial_inflation_parameters_and_workspace +k ../include/transfer.h /^ double ** k; \/**< list of wavenumber values for each requested mode, k[index_md][index_q]. In flat universes k=q. In non-flat universes q and k differ through q2 = k2 + K(1+m), where m=0,1,2 for scalar, vector, tensor. q should be used throughout the transfer module, excepted when interpolating or manipulating the source functions S(k,tau): for a given value of q this should be done in k(q). *\/$/;" m struct:transfers +k_max ../include/perturbations.h /^ double k_max; \/**< maximum value (over all modes) *\/$/;" m struct:perturbs +k_max_for_pk ../include/perturbations.h /^ double k_max_for_pk; \/**< maximum value of k in 1\/Mpc in P(k) (if \\f$ C_l \\f$'s also requested, overseeded by value kmax inferred from l_scalar_max if it is bigger) *\/$/;" m struct:perturbs +k_min ../include/perturbations.h /^ double k_min; \/**< minimum value (over all modes) *\/$/;" m struct:perturbs +k_nl ../include/nonlinear.h /^ double ** k_nl; \/**< wavenumber at which non-linear corrections become important,$/;" m struct:nonlinear +k_output_values ../include/perturbations.h /^ double k_output_values[_MAX_NUMBER_OF_K_FILES_]; \/**< List of k values where perturbation output is requested. *\/$/;" m struct:perturbs +k_output_values_num ../include/perturbations.h /^ int k_output_values_num; \/**< Number of perturbation outputs (default=0) *\/$/;" m struct:perturbs +k_pivot ../include/primordial.h /^ double k_pivot; \/**< pivot scale in \\f$ Mpc^{-1} \\f$ *\/$/;" m struct:primordial +k_size ../include/nonlinear.h /^ int k_size; \/**< k_size = total number of k values *\/$/;" m struct:nonlinear +k_size ../include/perturbations.h /^ int * k_size; \/**< k_size[index_md] = total number of k$/;" m struct:perturbs +k_size_cl ../include/perturbations.h /^ int * k_size_cl; \/**< k_size_cl[index_md] number of k values used$/;" m struct:perturbs +k_size_cmb ../include/perturbations.h /^ int * k_size_cmb; \/**< k_size_cmb[index_md] number of k values used$/;" m struct:perturbs +k_size_extra ../include/nonlinear.h /^ int k_size_extra;\/** total number of k values of extrapolated k array (high k)*\/$/;" m struct:nonlinear +key ../cpp/ClassEngine.hh /^ inline string key(const unsigned& i) const {return pars[i].first;}$/;" f class:ClassParams +ksi_ncdm ../include/background.h /^ double * ksi_ncdm, ksi_ncdm_default; \/**< list of 2nd parameters in$/;" m struct:background +ksi_ncdm_default ../include/background.h /^ double * ksi_ncdm, ksi_ncdm_default; \/**< list of 2nd parameters in$/;" m struct:background +l ../include/hermite3_interpolation_csource.h /^int l = pHIS->l[lnum];$/;" v +l ../include/hermite4_interpolation_csource.h /^int l = pHIS->l[lnum];$/;" v +l ../include/hermite6_interpolation_csource.h /^int K, l, j, nx, current_border_idx=0;$/;" v +l ../include/hyperspherical.h /^ int l;$/;" m struct:WKB_parameters +l ../include/hyperspherical.h /^ int *l; \/\/Vector of l values stored$/;" m struct:HypersphericalInterpolationStructure +l ../include/lensing.h /^ double * l; \/**< table of multipole values l[index_l] *\/$/;" m struct:lensing +l ../include/spectra.h /^ double * l; \/**< list of multipole values l[index_l] *\/$/;" m struct:spectra +l ../include/transfer.h /^ int * l; \/**< list of multipole values l[index_l] *\/$/;" m struct:transfers +l ../tools/hermite3_interpolation_csource.h /^int l = pHIS->l[lnum];$/;" v +l ../tools/hermite4_interpolation_csource.h /^int l = pHIS->l[lnum];$/;" v +l ../tools/hermite6_interpolation_csource.h /^int K, l, j, nx, current_border_idx=0;$/;" v +l_lensed_max ../include/lensing.h /^ int l_lensed_max; \/**< last multipole at which lensed spectra are computed *\/$/;" m struct:lensing +l_lss_max ../include/perturbations.h /^ int l_lss_max; \/**< maximum l value for LSS \\f$ C_l \\f$'s (density and lensing potential in bins) *\/$/;" m struct:perturbs +l_max ../include/spectra.h /^ int * l_max; \/**< last multipole (given as an input) at which$/;" m struct:spectra +l_max_ct ../include/spectra.h /^ int ** l_max_ct; \/**< last multipole (given as an input) at which$/;" m struct:spectra +l_max_dr ../include/perturbations.h /^ int l_max_dr; \/**< max momentum in Boltzmann hierarchy for dr) *\/$/;" m struct:perturb_vector +l_max_g ../include/perturbations.h /^ int l_max_g; \/**< max momentum in Boltzmann hierarchy (at least 3) *\/$/;" m struct:perturb_vector +l_max_idr ../include/perturbations.h /^ int l_max_idr; \/**< max momentum in Boltzmann hierarchy (at least 3) for interacting dark radiation *\/$/;" m struct:perturb_vector +l_max_lt ../include/lensing.h /^ int * l_max_lt; \/**< last multipole (given as an input) at which$/;" m struct:lensing +l_max_ncdm ../include/perturbations.h /^ int* l_max_ncdm; \/**< mutipole l at which Boltzmann hierarchy is truncated (for each ncdm species) *\/$/;" m struct:perturb_vector +l_max_pol_g ../include/perturbations.h /^ int l_max_pol_g; \/**< max momentum in Boltzmann hierarchy (at least 3) *\/$/;" m struct:perturb_vector +l_max_scalars ../cpp/ClassEngine.hh /^ inline int l_max_scalars() const {return _lmax;}$/;" f class:ClassEngine +l_max_tot ../include/spectra.h /^ int l_max_tot; \/**< last multipole (given as an input) at which$/;" m struct:spectra +l_max_ur ../include/perturbations.h /^ int l_max_ur; \/**< max momentum in Boltzmann hierarchy (at least 3) *\/$/;" m struct:perturb_vector +l_scalar_max ../include/perturbations.h /^ int l_scalar_max; \/**< maximum l value for CMB scalars \\f$ C_l \\f$'s *\/$/;" m struct:perturbs +l_size ../include/hyperspherical.h /^ int l_size; \/\/Number of l values$/;" m struct:HypersphericalInterpolationStructure +l_size ../include/lensing.h /^ int l_size; \/**< number of l values *\/$/;" m struct:lensing +l_size ../include/spectra.h /^ int * l_size; \/**< number of multipole values for each requested mode, l_size[index_md] *\/$/;" m struct:spectra +l_size ../include/transfer.h /^ int * l_size; \/**< number of multipole values for each requested mode, l_size[index_md] *\/$/;" m struct:transfers +l_size ../include/transfer.h /^ int l_size; \/**< number of l values *\/$/;" m struct:transfer_workspace +l_size_max ../include/spectra.h /^ int l_size_max; \/**< greatest of all l_size[index_md] *\/$/;" m struct:spectra +l_size_max ../include/transfer.h /^ int l_size_max; \/**< greatest of all l_size[index_md] *\/$/;" m struct:transfers +l_size_tt ../include/transfer.h /^ int ** l_size_tt; \/**< number of multipole values for which we effectively compute the transfer function,l_size_tt[index_md][index_tt] *\/$/;" m struct:transfers +l_tensor_max ../include/perturbations.h /^ int l_tensor_max; \/**< maximum l value for CMB tensors \\f$ C_l \\f$'s *\/$/;" m struct:perturbs +l_unlensed_max ../include/lensing.h /^ int l_unlensed_max; \/**< last multipole in all calculations (same as in spectra module)*\/$/;" m struct:lensing +l_vector_max ../include/perturbations.h /^ int l_vector_max; \/**< maximum l value for CMB vectors \\f$ C_l \\f$'s *\/$/;" m struct:perturbs +last_index ../include/background.h /^ int last_index;$/;" m struct:background_parameters_for_distributions +last_index_back ../include/perturbations.h /^ int last_index_back; \/**< the background interpolation function background_at_tau() keeps memory of the last point called through this index *\/$/;" m struct:perturb_workspace +last_index_thermo ../include/perturbations.h /^ int last_index_thermo; \/**< the thermodynamics interpolation function thermodynamics_at_z() keeps memory of the last point called through this index *\/$/;" m struct:perturb_workspace +late_sources ../include/perturbations.h /^ double *** late_sources; \/**< Pointer towards the source interpolation table$/;" m struct:perturbs +lcmb_pivot ../include/transfer.h /^ double lcmb_pivot; \/**< if lcmb_tilt non-zero, corresponding pivot$/;" m struct:transfers +lcmb_rescale ../include/transfer.h /^ double lcmb_rescale; \/**< normally set to one, can be used$/;" m struct:transfers +lcmb_tilt ../include/transfer.h /^ double lcmb_tilt; \/**< normally set to zero, can be used$/;" m struct:transfers +le ../cpp/ClassEngine.hh /^ struct lensing le; \/* for lensed spectra *\/$/;" m class:ClassEngine typeref:struct:ClassEngine::lensing +leaf_childs ../include/quadrature.h /^ int leaf_childs;\/* Number of leafs under current node. 1 means that the node is a leaf. *\/$/;" m struct:adaptive_integration_tree_node +leaf_count ../tools/quadrature.c /^int leaf_count(qss_node *node){$/;" f +left ../include/quadrature.h /^ struct adaptive_integration_tree_node *left, *right; \/* Pointer to left child. *\/$/;" m struct:adaptive_integration_tree_node typeref:struct:adaptive_integration_tree_node::adaptive_integration_tree_node +left_border ../include/hermite3_interpolation_csource.h /^double left_border, right_border, next_border;$/;" v +left_border ../include/hermite4_interpolation_csource.h /^double left_border, right_border, next_border;$/;" v +left_border ../include/hermite6_interpolation_csource.h /^double left_border, right_border, next_border;$/;" v +left_border ../tools/hermite3_interpolation_csource.h /^double left_border, right_border, next_border;$/;" v +left_border ../tools/hermite4_interpolation_csource.h /^double left_border, right_border, next_border;$/;" v +left_border ../tools/hermite6_interpolation_csource.h /^double left_border, right_border, next_border;$/;" v +lensing ../include/lensing.h /^struct lensing {$/;" s +lensing_addback_cl_ee_bb lensing.c /^int lensing_addback_cl_ee_bb($/;" f +lensing_addback_cl_te lensing.c /^int lensing_addback_cl_te($/;" f +lensing_addback_cl_tt lensing.c /^int lensing_addback_cl_tt($/;" f +lensing_cl_at_l lensing.c /^int lensing_cl_at_l($/;" f +lensing_d00 lensing.c /^int lensing_d00($/;" f +lensing_d11 lensing.c /^int lensing_d11($/;" f +lensing_d1m1 lensing.c /^int lensing_d1m1($/;" f +lensing_d20 lensing.c /^int lensing_d20($/;" f +lensing_d22 lensing.c /^int lensing_d22($/;" f +lensing_d2m2 lensing.c /^int lensing_d2m2($/;" f +lensing_d31 lensing.c /^int lensing_d31($/;" f +lensing_d3m1 lensing.c /^int lensing_d3m1($/;" f +lensing_d3m3 lensing.c /^int lensing_d3m3($/;" f +lensing_d40 lensing.c /^int lensing_d40($/;" f +lensing_d4m2 lensing.c /^int lensing_d4m2($/;" f +lensing_d4m4 lensing.c /^int lensing_d4m4($/;" f +lensing_free lensing.c /^int lensing_free($/;" f +lensing_indices lensing.c /^int lensing_indices($/;" f +lensing_init lensing.c /^int lensing_init($/;" f +lensing_lensed_cl_ee_bb lensing.c /^int lensing_lensed_cl_ee_bb($/;" f +lensing_lensed_cl_te lensing.c /^int lensing_lensed_cl_te($/;" f +lensing_lensed_cl_tt lensing.c /^int lensing_lensed_cl_tt($/;" f +lensing_verbose ../include/lensing.h /^ short lensing_verbose; \/**< flag regulating the amount of information sent to standard output (none if set to zero) *\/$/;" m struct:lensing +linear ../include/primordial.h /^ linear,$/;" e enum:linear_or_logarithmic +linear_or_logarithmic ../include/primordial.h /^enum linear_or_logarithmic {$/;" g +lmax ../cpp/Engine.hh /^ inline int lmax() {return _lmax;}$/;" f class:Engine +ln_aH_ratio ../include/primordial.h /^ ln_aH_ratio,$/;" e enum:phi_pivot_methods +ln_aH_ratio_auto ../include/primordial.h /^ ln_aH_ratio_auto$/;" e enum:phi_pivot_methods +ln_k ../include/nonlinear.h /^ double * ln_k; \/**< ln_k[index_k] = list of log(k) values *\/$/;" m struct:nonlinear +ln_pk_ic_l ../include/nonlinear.h /^ double ** ln_pk_ic_l; \/**< Matter power spectrum (linear).$/;" m struct:nonlinear +ln_pk_l ../include/nonlinear.h /^ double ** ln_pk_l; \/**< Total matter power spectrum summed over initial conditions (linear).$/;" m struct:nonlinear +ln_pk_nl ../include/nonlinear.h /^ double ** ln_pk_nl; \/**< Total matter power spectrum summed over initial conditions (nonlinear).$/;" m struct:nonlinear +ln_tau ../include/nonlinear.h /^ double * ln_tau; \/**< log(tau) array, only needed if user wants$/;" m struct:nonlinear +ln_tau ../include/perturbations.h /^ double * ln_tau; \/**< log of the arrau tau_sampling, covering only the final time range required for the output of$/;" m struct:perturbs +ln_tau_size ../include/nonlinear.h /^ int ln_tau_size; \/**< number of values in this array *\/$/;" m struct:nonlinear +ln_tau_size ../include/perturbations.h /^ int ln_tau_size; \/**< number of values in this array *\/$/;" m struct:perturbs +lnk ../include/primordial.h /^ double * lnk; \/**< list of ln(k) values lnk[index_k] *\/$/;" m struct:primordial +lnk_size ../include/primordial.h /^ int lnk_size; \/**< number of ln(k) values *\/$/;" m struct:primordial +lnpk ../include/primordial.h /^ double ** lnpk; \/**< depends on indices index_md, index_ic1, index_ic2, index_k as:$/;" m struct:primordial +logarithmic ../include/primordial.h /^ logarithmic$/;" e enum:linear_or_logarithmic +logj ../include/evolver_ndf15.h /^ int * logj;$/;" m struct:numjac_workspace +long_info ../include/background.h /^ short long_info; \/**< flag for calling background_at_eta and return all information *\/$/;" m struct:background +lt_size ../include/lensing.h /^ int lt_size; \/**< number of \\f$ C_l\\f$ types requested *\/$/;" m struct:lensing +lubksb ../tools/evolver_ndf15.c /^int lubksb(double **a, int n, int *indx, double b[]){$/;" f +ludcmp ../tools/evolver_ndf15.c /^int ludcmp(double **a, int n, int *indx, double *d, double *vv){$/;" f +luidx ../include/evolver_ndf15.h /^ int *luidx;$/;" m struct:jacobian +lxlp1 ../include/hermite3_interpolation_csource.h /^double lxlp1 = l*(l+1.0);$/;" v +lxlp1 ../include/hermite4_interpolation_csource.h /^double lxlp1 = l*(l+1.0);$/;" v +lxlp1 ../include/hermite6_interpolation_csource.h /^double xmin, xmax, deltax, deltax2, lxlp1;$/;" v +lxlp1 ../tools/hermite3_interpolation_csource.h /^double lxlp1 = l*(l+1.0);$/;" v +lxlp1 ../tools/hermite4_interpolation_csource.h /^double lxlp1 = l*(l+1.0);$/;" v +lxlp1 ../tools/hermite6_interpolation_csource.h /^double xmin, xmax, deltax, deltax2, lxlp1;$/;" v +m_idm ../include/thermodynamics.h /^ double m_idm; \/**< interacting dark matter mass *\/$/;" m struct:thermo +m_ncdm_in_eV ../include/background.h /^ double * m_ncdm_in_eV; \/**< list of ncdm masses in eV (inferred from M_ncdm and other parameters above) *\/$/;" m struct:background +main ../cpp/testKlass.cc /^int main(int argc,char** argv){$/;" f +many_tanh_num ../include/thermodynamics.h /^ int many_tanh_num; \/**< with how many jumps do we want to describe reionization? *\/$/;" m struct:thermo +many_tanh_width ../include/thermodynamics.h /^ double many_tanh_width; \/**< sharpness of tanh() steps *\/$/;" m struct:thermo +many_tanh_xe ../include/thermodynamics.h /^ double * many_tanh_xe; \/**< imposed \\f$ X_e(z)\\f$ value at the end of each jump (ie at later times)*\/$/;" m struct:thermo +many_tanh_z ../include/thermodynamics.h /^ double * many_tanh_z; \/**< central z value for each tanh jump *\/$/;" m struct:thermo +max_group ../include/evolver_ndf15.h /^ int max_group; \/*Number of columngroups -1 *\/$/;" m struct:jacobian +max_l_max ../include/perturbations.h /^ int max_l_max; \/**< maximum l_max for any multipole *\/$/;" m struct:perturb_workspace +max_nonzero ../include/evolver_ndf15.h /^ int max_nonzero; \/*Maximal number of non-zero entries to be considered sparse *\/$/;" m struct:jacobian +maxnz ../include/sparse.h /^ int maxnz; \/* Maximum number of non-zero entries*\/$/;" m struct:sparse_matrix +md_size ../include/perturbations.h /^ int md_size; \/**< number of modes included in computation *\/$/;" m struct:perturbs +md_size ../include/primordial.h /^ int md_size; \/**< number of modes included in computation *\/$/;" m struct:primordial +md_size ../include/spectra.h /^ int md_size; \/**< number of modes (scalar, tensor, ...) included in computation *\/$/;" m struct:spectra +md_size ../include/transfer.h /^ int md_size; \/**< number of modes included in computation *\/$/;" m struct:transfers +method ../include/nonlinear.h /^ enum non_linear_method method; \/**< method for computing non-linear corrections (none, Halogit, etc.) *\/$/;" m struct:nonlinear typeref:enum:nonlinear::non_linear_method +mt_size ../include/perturbations.h /^ int mt_size; \/**< size of metric perturbation vector *\/$/;" m struct:perturb_workspace +n ../include/dei_rkck.h /^ int n;$/;" m struct:generic_integrator_workspace +n ../include/sparse.h /^ int n; \/*Matrix assumed square, [nxn] *\/$/;" m struct:sparse_numerical +n_ad_bi ../include/primordial.h /^ double n_ad_bi; \/**< ADxBI cross-correlation tilt *\/$/;" m struct:primordial +n_ad_cdi ../include/primordial.h /^ double n_ad_cdi; \/**< ADxCDI cross-correlation tilt *\/$/;" m struct:primordial +n_ad_nid ../include/primordial.h /^ double n_ad_nid; \/**< ADxNID cross-correlation tilt *\/$/;" m struct:primordial +n_ad_niv ../include/primordial.h /^ double n_ad_niv; \/**< ADxNIV cross-correlation tilt *\/$/;" m struct:primordial +n_bi ../include/primordial.h /^ double n_bi; \/**< BI tilt *\/$/;" m struct:primordial +n_bi_cdi ../include/primordial.h /^ double n_bi_cdi; \/**< BIxCDI cross-correlation tilt *\/$/;" m struct:primordial +n_bi_nid ../include/primordial.h /^ double n_bi_nid; \/**< BIxNIV cross-correlation tilt *\/$/;" m struct:primordial +n_bi_niv ../include/primordial.h /^ double n_bi_niv; \/**< BIxNIV cross-correlation tilt *\/$/;" m struct:primordial +n_cdi ../include/primordial.h /^ double n_cdi; \/**< CDI tilt *\/$/;" m struct:primordial +n_cdi_nid ../include/primordial.h /^ double n_cdi_nid; \/**< CDIxNID cross-correlation tilt *\/$/;" m struct:primordial +n_cdi_niv ../include/primordial.h /^ double n_cdi_niv; \/**< CDIxNIV cross-correlation tilt *\/$/;" m struct:primordial +n_e ../include/thermodynamics.h /^ double n_e; \/**< total number density of electrons today (free or not) *\/$/;" m struct:thermo +n_ncdm ../include/background.h /^ int n_ncdm;$/;" m struct:background_parameters_for_distributions +n_nid ../include/primordial.h /^ double n_nid; \/**< NID tilt *\/$/;" m struct:primordial +n_nid_niv ../include/primordial.h /^ double n_nid_niv; \/**< NIDxNIV cross-correlation tilt *\/$/;" m struct:primordial +n_niv ../include/primordial.h /^ double n_niv; \/**< NIV tilt *\/$/;" m struct:primordial +n_s ../include/primordial.h /^ double n_s; \/**< usual scalar tilt = [curvature power spectrum tilt at pivot scale -1] *\/$/;" m struct:primordial +n_t ../include/primordial.h /^ double n_t; \/**< usual tensor tilt = [GW power spectrum tilt at pivot scale] *\/$/;" m struct:primordial +name ../include/parser.h /^ FileArg * name; \/**< list of (size) names *\/$/;" m struct:file_content +natural ../include/primordial.h /^ natural,$/;" e enum:potential_shape +ncdm_input_q_size ../include/background.h /^ int * ncdm_input_q_size; \/**< Vector of numbers of q bins *\/$/;" m struct:background +ncdm_psd_files ../include/background.h /^ char * ncdm_psd_files; \/**< list of filenames for tabulated p-s-d *\/$/;" m struct:background +ncdm_psd_parameters ../include/background.h /^ double * ncdm_psd_parameters; \/**< list of parameters for specifying\/modifying$/;" m struct:background +ncdm_qmax ../include/background.h /^ double * ncdm_qmax; \/**< Vector of maximum value of q *\/$/;" m struct:background +ncdm_quadrature_method ../include/quadrature.h /^enum ncdm_quadrature_method {qm_auto, qm_Laguerre, qm_trapz_indefinite, qm_trapz};$/;" g +ncdm_quadrature_strategy ../include/background.h /^ int * ncdm_quadrature_strategy; \/**< Vector of integers according to quadrature strategy. *\/$/;" m struct:background +ncdmfa_CLASS ../include/perturbations.h /^enum ncdmfa_method {ncdmfa_mb,ncdmfa_hu,ncdmfa_CLASS,ncdmfa_none};$/;" e enum:ncdmfa_method +ncdmfa_flags ../include/perturbations.h /^enum ncdmfa_flags {ncdmfa_off, ncdmfa_on};$/;" g +ncdmfa_hu ../include/perturbations.h /^enum ncdmfa_method {ncdmfa_mb,ncdmfa_hu,ncdmfa_CLASS,ncdmfa_none};$/;" e enum:ncdmfa_method +ncdmfa_mb ../include/perturbations.h /^enum ncdmfa_method {ncdmfa_mb,ncdmfa_hu,ncdmfa_CLASS,ncdmfa_none};$/;" e enum:ncdmfa_method +ncdmfa_method ../include/perturbations.h /^enum ncdmfa_method {ncdmfa_mb,ncdmfa_hu,ncdmfa_CLASS,ncdmfa_none};$/;" g +ncdmfa_none ../include/perturbations.h /^enum ncdmfa_method {ncdmfa_mb,ncdmfa_hu,ncdmfa_CLASS,ncdmfa_none};$/;" e enum:ncdmfa_method +ncdmfa_off ../include/perturbations.h /^enum ncdmfa_flags {ncdmfa_off, ncdmfa_on};$/;" e enum:ncdmfa_flags +ncdmfa_on ../include/perturbations.h /^enum ncdmfa_flags {ncdmfa_off, ncdmfa_on};$/;" e enum:ncdmfa_flags +ncols ../include/sparse.h /^ int ncols; \/* Number of columns *\/$/;" m struct:sparse_matrix +ndf15 ../include/common.h /^ ndf15 \/* stiff integrator *\/$/;" e enum:evolver_type +neglect_late_source ../include/transfer.h /^ short neglect_late_source; \/**< flag stating whether we use the time cut approximation for the wavenumber at hand *\/$/;" m struct:transfer_workspace +new_jacobian ../include/evolver_ndf15.h /^ int new_jacobian; \/* True if sp_ludcmp has not been run on the current jacobian. *\/$/;" m struct:jacobian +new_linearisation ../tools/evolver_ndf15.c /^int new_linearisation(struct jacobian *jac,double hinvGak,int neq,ErrorMsg error_message){$/;" f +newtonian ../include/perturbations.h /^ newtonian, \/**< newtonian (or longitudinal) gauge *\/$/;" e enum:possible_gauges +next_border ../include/hermite3_interpolation_csource.h /^double left_border, right_border, next_border;$/;" v +next_border ../include/hermite4_interpolation_csource.h /^double left_border, right_border, next_border;$/;" v +next_border ../include/hermite6_interpolation_csource.h /^double left_border, right_border, next_border;$/;" v +next_border ../tools/hermite3_interpolation_csource.h /^double left_border, right_border, next_border;$/;" v +next_border ../tools/hermite4_interpolation_csource.h /^double left_border, right_border, next_border;$/;" v +next_border ../tools/hermite6_interpolation_csource.h /^double left_border, right_border, next_border;$/;" v +nindex_idm_dr ../include/thermodynamics.h /^ double nindex_idm_dr; \/**< temperature dependence of the interaction between dark matter and dark radiation *\/$/;" m struct:thermo +nl ../cpp/ClassEngine.hh /^ struct nonlinear nl; \/* for non-linear spectra *\/$/;" m class:ClassEngine typeref:struct:ClassEngine::nonlinear +nl_HMcode ../include/nonlinear.h /^enum non_linear_method {nl_none,nl_halofit,nl_HMcode};$/;" e enum:non_linear_method +nl_corr_density ../include/nonlinear.h /^ double ** nl_corr_density; \/**< nl_corr_density[index_pk][index_tau * ppt->k_size + index_k] *\/$/;" m struct:nonlinear +nl_emu_dmonly ../include/nonlinear.h /^enum hmcode_baryonic_feedback_model {nl_emu_dmonly, nl_owls_dmonly, nl_owls_ref, nl_owls_agn, nl_owls_dblim, nl_user_defined};$/;" e enum:hmcode_baryonic_feedback_model +nl_halofit ../include/nonlinear.h /^enum non_linear_method {nl_none,nl_halofit,nl_HMcode};$/;" e enum:non_linear_method +nl_none ../include/nonlinear.h /^enum non_linear_method {nl_none,nl_halofit,nl_HMcode};$/;" e enum:non_linear_method +nl_owls_agn ../include/nonlinear.h /^enum hmcode_baryonic_feedback_model {nl_emu_dmonly, nl_owls_dmonly, nl_owls_ref, nl_owls_agn, nl_owls_dblim, nl_user_defined};$/;" e enum:hmcode_baryonic_feedback_model +nl_owls_dblim ../include/nonlinear.h /^enum hmcode_baryonic_feedback_model {nl_emu_dmonly, nl_owls_dmonly, nl_owls_ref, nl_owls_agn, nl_owls_dblim, nl_user_defined};$/;" e enum:hmcode_baryonic_feedback_model +nl_owls_dmonly ../include/nonlinear.h /^enum hmcode_baryonic_feedback_model {nl_emu_dmonly, nl_owls_dmonly, nl_owls_ref, nl_owls_agn, nl_owls_dblim, nl_user_defined};$/;" e enum:hmcode_baryonic_feedback_model +nl_owls_ref ../include/nonlinear.h /^enum hmcode_baryonic_feedback_model {nl_emu_dmonly, nl_owls_dmonly, nl_owls_ref, nl_owls_agn, nl_owls_dblim, nl_user_defined};$/;" e enum:hmcode_baryonic_feedback_model +nl_user_defined ../include/nonlinear.h /^enum hmcode_baryonic_feedback_model {nl_emu_dmonly, nl_owls_dmonly, nl_owls_ref, nl_owls_agn, nl_owls_dblim, nl_user_defined};$/;" e enum:hmcode_baryonic_feedback_model +non_diag ../include/spectra.h /^ int non_diag; \/**< sets the number of cross-correlation spectra$/;" m struct:spectra +non_linear_method ../include/nonlinear.h /^enum non_linear_method {nl_none,nl_halofit,nl_HMcode};$/;" g +nonlinear ../include/nonlinear.h /^struct nonlinear {$/;" s +nonlinear_free nonlinear.c /^int nonlinear_free($/;" f +nonlinear_get_k_list nonlinear.c /^int nonlinear_get_k_list($/;" f +nonlinear_get_source nonlinear.c /^int nonlinear_get_source($/;" f +nonlinear_get_tau_list nonlinear.c /^int nonlinear_get_tau_list($/;" f +nonlinear_halofit nonlinear.c /^int nonlinear_halofit($/;" f +nonlinear_halofit_integrate nonlinear.c /^int nonlinear_halofit_integrate($/;" f +nonlinear_hmcode nonlinear.c /^int nonlinear_hmcode($/;" f +nonlinear_hmcode2020 nonlinear_hmcode.c /^int nonlinear_hmcode2020($/;" f +nonlinear_hmcode_baryonic_feedback nonlinear.c /^int nonlinear_hmcode_baryonic_feedback($/;" f +nonlinear_hmcode_dark_energy_correction nonlinear.c /^int nonlinear_hmcode_dark_energy_correction($/;" f +nonlinear_hmcode_fill_growtab nonlinear.c /^int nonlinear_hmcode_fill_growtab($/;" f +nonlinear_hmcode_fill_sigtab nonlinear.c /^int nonlinear_hmcode_fill_sigtab($/;" f +nonlinear_hmcode_growint nonlinear.c /^int nonlinear_hmcode_growint($/;" f +nonlinear_hmcode_halomassfunction nonlinear.c /^int nonlinear_hmcode_halomassfunction($/;" f +nonlinear_hmcode_sigma8_at_z nonlinear.c /^int nonlinear_hmcode_sigma8_at_z($/;" f +nonlinear_hmcode_sigmadisp100_at_z nonlinear.c /^int nonlinear_hmcode_sigmadisp100_at_z($/;" f +nonlinear_hmcode_sigmadisp_at_z nonlinear.c /^int nonlinear_hmcode_sigmadisp_at_z($/;" f +nonlinear_hmcode_sigmaprime_at_z nonlinear.c /^int nonlinear_hmcode_sigmaprime_at_z($/;" f +nonlinear_hmcode_window_nfw nonlinear.c /^int nonlinear_hmcode_window_nfw($/;" f +nonlinear_hmcode_workspace_free nonlinear.c /^int nonlinear_hmcode_workspace_free($/;" f +nonlinear_hmcode_workspace_init nonlinear.c /^int nonlinear_hmcode_workspace_init($/;" f +nonlinear_indices nonlinear.c /^int nonlinear_indices($/;" f +nonlinear_init nonlinear.c /^int nonlinear_init($/;" f +nonlinear_k_nl_at_z nonlinear.c /^int nonlinear_k_nl_at_z($/;" f +nonlinear_pk_at_k_and_z nonlinear.c /^int nonlinear_pk_at_k_and_z($/;" f +nonlinear_pk_at_z nonlinear.c /^int nonlinear_pk_at_z($/;" f +nonlinear_pk_linear nonlinear.c /^int nonlinear_pk_linear($/;" f +nonlinear_pk_tilt_at_k_and_z nonlinear.c /^int nonlinear_pk_tilt_at_k_and_z($/;" f +nonlinear_pks_at_k_and_z nonlinear.c /^int nonlinear_pks_at_k_and_z($/;" f +nonlinear_pks_at_kvec_and_zvec nonlinear.c /^int nonlinear_pks_at_kvec_and_zvec($/;" f +nonlinear_pks_at_z nonlinear.c /^int nonlinear_pks_at_z($/;" f +nonlinear_sigma_at_z nonlinear.c /^int nonlinear_sigma_at_z($/;" f +nonlinear_sigmas nonlinear.c /^int nonlinear_sigmas($/;" f +nonlinear_sigmas_at_z nonlinear.c /^int nonlinear_sigmas_at_z($/;" f +nonlinear_verbose ../include/nonlinear.h /^ short nonlinear_verbose; \/**< amount of information written in standard output *\/$/;" m struct:nonlinear +nonlinear_workspace ../include/nonlinear.h /^struct nonlinear_workspace {$/;" s +normal_info ../include/background.h /^ short normal_info; \/**< flag for calling background_at_eta and return medium information *\/$/;" m struct:background +nrows ../include/sparse.h /^ int nrows; \/* Number of rows *\/$/;" m struct:sparse_matrix +numCls ../cpp/ClassEngine.hh /^ inline int numCls() const {return sp.ct_size;};$/;" f class:ClassEngine +number_of_scalar_titles ../include/perturbations.h /^ int number_of_scalar_titles; \/**< number of titles\/columns in scalar perturbation output files *\/$/;" m struct:perturbs +number_of_tensor_titles ../include/perturbations.h /^ int number_of_tensor_titles; \/**< number of titles\/columns in tensor perturbation output files*\/$/;" m struct:perturbs +number_of_vector_titles ../include/perturbations.h /^ int number_of_vector_titles; \/**< number of titles\/columns in vector perturbation output files*\/$/;" m struct:perturbs +numerical ../include/primordial.h /^ numerical,$/;" e enum:inflation_module_behavior +numjac ../tools/evolver_ndf15.c /^int numjac($/;" f +numjac_workspace ../include/evolver_ndf15.h /^struct numjac_workspace{$/;" s +nx ../include/hermite3_interpolation_csource.h /^int j, nx, current_border_idx=0;$/;" v +nx ../include/hermite4_interpolation_csource.h /^int j, nx, current_border_idx=0;$/;" v +nx ../include/hermite6_interpolation_csource.h /^int K, l, j, nx, current_border_idx=0;$/;" v +nx ../tools/hermite3_interpolation_csource.h /^int j, nx, current_border_idx=0;$/;" v +nx ../tools/hermite4_interpolation_csource.h /^int j, nx, current_border_idx=0;$/;" v +nx ../tools/hermite6_interpolation_csource.h /^int K, l, j, nx, current_border_idx=0;$/;" v +nz_ddnz ../include/transfer.h /^ double * nz_ddnz; \/**< second derivatives in splined selection function*\/$/;" m struct:transfers +nz_evo_dd_dlog_nz ../include/transfer.h /^ double * nz_evo_dd_dlog_nz; \/**< second derivatives in splined log of evolution function *\/$/;" m struct:transfers +nz_evo_dlog_nz ../include/transfer.h /^ double * nz_evo_dlog_nz; \/**< log of tabulated values of evolution function *\/$/;" m struct:transfers +nz_evo_file_name ../include/transfer.h /^ FileName nz_evo_file_name; \/**< dN\/dz (evolution function) input file name *\/$/;" m struct:transfers +nz_evo_nz ../include/transfer.h /^ double * nz_evo_nz; \/**< input tabulated values of evolution function *\/$/;" m struct:transfers +nz_evo_size ../include/transfer.h /^ int nz_evo_size; \/**< number of redshift values in input tabulated evolution function *\/$/;" m struct:transfers +nz_evo_z ../include/transfer.h /^ double * nz_evo_z; \/**< redshift values in input tabulated evolution function *\/$/;" m struct:transfers +nz_file_name ../include/transfer.h /^ FileName nz_file_name; \/**< dN\/dz (selection function) input file name *\/$/;" m struct:transfers +nz_nz ../include/transfer.h /^ double * nz_nz; \/**< input tabulated values of selection function *\/$/;" m struct:transfers +nz_size ../include/transfer.h /^ int nz_size; \/**< number of redshift values in input tabulated selection function *\/$/;" m struct:transfers +nz_z ../include/transfer.h /^ double * nz_z; \/**< redshift values in input tabulated selection function *\/$/;" m struct:transfers +omega_dcdmdr ../include/input.h /^enum target_names {theta_s, Omega_dcdmdr, omega_dcdmdr, Omega_scf, Omega_ini_dcdm, omega_ini_dcdm, sigma8};$/;" e enum:target_names +omega_ini_dcdm ../include/input.h /^enum target_names {theta_s, Omega_dcdmdr, omega_dcdmdr, Omega_scf, Omega_ini_dcdm, omega_ini_dcdm, sigma8};$/;" e enum:target_names +op ../cpp/ClassEngine.hh /^ struct output op; \/* for output files *\/$/;" m class:ClassEngine typeref:struct:ClassEngine::output +open ../include/background.h /^enum spatial_curvature {flat,open,closed};$/;" e enum:spatial_curvature +out_sigma ../include/nonlinear.h /^enum out_sigmas {out_sigma,out_sigma_prime,out_sigma_disp};$/;" e enum:out_sigmas +out_sigma_disp ../include/nonlinear.h /^enum out_sigmas {out_sigma,out_sigma_prime,out_sigma_disp};$/;" e enum:out_sigmas +out_sigma_prime ../include/nonlinear.h /^enum out_sigmas {out_sigma,out_sigma_prime,out_sigma_disp};$/;" e enum:out_sigmas +out_sigmas ../include/nonlinear.h /^enum out_sigmas {out_sigma,out_sigma_prime,out_sigma_disp};$/;" g +output ../include/output.h /^struct output {$/;" s +output_background output.c /^int output_background($/;" f +output_cl output.c /^int output_cl($/;" f +output_format ../include/output.h /^ enum file_format output_format; \/**< which format for output files (definitions, order of columns, etc.) *\/$/;" m struct:output typeref:enum:output::file_format +output_init output.c /^int output_init($/;" f +output_one_line_of_cl output.c /^int output_one_line_of_cl($/;" f +output_one_line_of_pk output.c /^int output_one_line_of_pk($/;" f +output_open_cl_file output.c /^int output_open_cl_file($/;" f +output_open_pk_file output.c /^int output_open_pk_file($/;" f +output_perturbations output.c /^int output_perturbations($/;" f +output_pk output.c /^int output_pk($/;" f +output_primordial output.c /^int output_primordial($/;" f +output_print_data output.c /^int output_print_data(FILE *out,$/;" f +output_thermodynamics output.c /^int output_thermodynamics($/;" f +output_tk output.c /^int output_tk($/;" f +output_total_cl_at_l output.c /^int output_total_cl_at_l($/;" f +output_verbose ../include/output.h /^ short output_verbose; \/**< flag regulating the amount of information sent to standard output (none if set to zero) *\/$/;" m struct:output +p ../include/sparse.h /^ int *p; \/*Row permutation. *\/$/;" m struct:sparse_numerical +pBIS ../include/transfer.h /^ HyperInterpStruct * pBIS; \/**< pointer to structure containing all the spherical bessel functions of the flat case (used even in the non-flat case, for approximation schemes). pBIS = pointer to Bessel Interpolation Structure. *\/$/;" m struct:transfer_workspace +parNames ../cpp/ClassEngine.hh /^ std::vector parNames;$/;" m class:ClassEngine +pars ../cpp/ClassEngine.hh /^ std::vector > pars;$/;" m class:ClassParams +parser_cat ../tools/parser.c /^int parser_cat($/;" f +parser_free ../tools/parser.c /^int parser_free($/;" f +parser_init ../tools/parser.c /^int parser_init($/;" f +parser_read_double ../tools/parser.c /^int parser_read_double($/;" f +parser_read_double_and_position ../tools/parser.c /^int parser_read_double_and_position($/;" f +parser_read_file ../tools/parser.c /^int parser_read_file($/;" f +parser_read_int ../tools/parser.c /^int parser_read_int($/;" f +parser_read_line ../tools/parser.c /^int parser_read_line($/;" f +parser_read_list_of_doubles ../tools/parser.c /^int parser_read_list_of_doubles($/;" f +parser_read_list_of_integers ../tools/parser.c /^int parser_read_list_of_integers($/;" f +parser_read_list_of_strings ../tools/parser.c /^int parser_read_list_of_strings($/;" f +parser_read_string ../tools/parser.c /^int parser_read_string($/;" f +pba ../include/background.h /^ struct background * pba;$/;" m struct:background_parameters_and_workspace typeref:struct:background_parameters_and_workspace::background +pba ../include/background.h /^ struct background * pba;$/;" m struct:background_parameters_for_distributions typeref:struct:background_parameters_for_distributions::background +pba ../include/input.h /^ struct background * pba;$/;" m struct:input_pprpba typeref:struct:input_pprpba::background +pba ../include/perturbations.h /^ struct background * pba; \/**< pointer to the background structure *\/$/;" m struct:perturb_parameters_and_workspace typeref:struct:perturb_parameters_and_workspace::background +pba ../include/thermodynamics.h /^ struct background * pba;$/;" m struct:thermodynamics_parameters_and_workspace typeref:struct:thermodynamics_parameters_and_workspace::background +perturb_approximations perturbations.c /^int perturb_approximations($/;" f +perturb_derivs perturbations.c /^int perturb_derivs(double tau,$/;" f +perturb_einstein perturbations.c /^int perturb_einstein($/;" f +perturb_find_approximation_number perturbations.c /^int perturb_find_approximation_number($/;" f +perturb_find_approximation_switches perturbations.c /^int perturb_find_approximation_switches($/;" f +perturb_free perturbations.c /^int perturb_free($/;" f +perturb_get_k_list perturbations.c /^int perturb_get_k_list($/;" f +perturb_indices_of_perturbs perturbations.c /^int perturb_indices_of_perturbs($/;" f +perturb_init perturbations.c /^int perturb_init($/;" f +perturb_initial_conditions perturbations.c /^int perturb_initial_conditions(struct precision * ppr,$/;" f +perturb_output_data perturbations.c /^int perturb_output_data($/;" f +perturb_output_file ../include/perturbations.h /^ FILE * perturb_output_file; \/**< filepointer to output file*\/$/;" m struct:perturb_workspace +perturb_output_firstline_and_ic_suffix perturbations.c /^int perturb_output_firstline_and_ic_suffix($/;" f +perturb_output_titles perturbations.c /^int perturb_output_titles($/;" f +perturb_parameters_and_workspace ../include/perturbations.h /^struct perturb_parameters_and_workspace {$/;" s +perturb_prepare_k_output perturbations.c /^int perturb_prepare_k_output(struct background * pba,$/;" f +perturb_print_variables perturbations.c /^int perturb_print_variables(double tau,$/;" f +perturb_rsa_delta_and_theta perturbations.c /^int perturb_rsa_delta_and_theta($/;" f +perturb_rsa_idr_delta_and_theta perturbations.c /^int perturb_rsa_idr_delta_and_theta($/;" f +perturb_solve perturbations.c /^int perturb_solve($/;" f +perturb_sources perturbations.c /^int perturb_sources($/;" f +perturb_sources_at_tau perturbations.c /^int perturb_sources_at_tau($/;" f +perturb_tca_slip_and_shear perturbations.c /^int perturb_tca_slip_and_shear(double * y,$/;" f +perturb_timesampling_for_sources perturbations.c /^int perturb_timesampling_for_sources($/;" f +perturb_timescale perturbations.c /^int perturb_timescale($/;" f +perturb_total_stress_energy perturbations.c /^int perturb_total_stress_energy($/;" f +perturb_vector ../include/perturbations.h /^struct perturb_vector$/;" s +perturb_vector_free perturbations.c /^int perturb_vector_free($/;" f +perturb_vector_init perturbations.c /^int perturb_vector_init($/;" f +perturb_workspace ../include/perturbations.h /^struct perturb_workspace$/;" s +perturb_workspace_free perturbations.c /^int perturb_workspace_free ($/;" f +perturb_workspace_init perturbations.c /^int perturb_workspace_init($/;" f +perturbations_verbose ../include/perturbations.h /^ short perturbations_verbose; \/**< flag regulating the amount of information sent to standard output (none if set to zero) *\/$/;" m struct:perturbs +perturbs ../include/perturbations.h /^struct perturbs$/;" s +phi ../include/hyperspherical.h /^ double *phi; \/\/array of size nl*nx. [y_{l1}(x1) t_{l1}(x2)...]$/;" m struct:HypersphericalInterpolationStructure +phi_end ../include/primordial.h /^ double phi_end; \/**< value of inflaton at the end of inflation *\/$/;" m struct:primordial +phi_ini_scf ../include/background.h /^ double phi_ini_scf; \/**< \\f$ \\phi(t_0) \\f$: scalar field initial value *\/$/;" m struct:background +phi_max ../include/primordial.h /^ double phi_max; \/**< in inflationary module, value of phi when \\f$ k_{max}=aH \\f$*\/$/;" m struct:primordial +phi_min ../include/primordial.h /^ double phi_min; \/**< in inflationary module, value of phi when \\f$ k_{min}=aH \\f$*\/$/;" m struct:primordial +phi_pivot ../include/primordial.h /^ double phi_pivot; \/**< in inflationary module, value of$/;" m struct:primordial +phi_pivot_method ../include/primordial.h /^ enum phi_pivot_methods phi_pivot_method; \/**< flag for method used to define and find the pivot scale *\/$/;" m struct:primordial typeref:enum:primordial::phi_pivot_methods +phi_pivot_methods ../include/primordial.h /^enum phi_pivot_methods {$/;" g +phi_pivot_target ../include/primordial.h /^ double phi_pivot_target; \/**< For each of the above methods, critical value to be reached between pivot and end of inflation (N_star, [aH]ratio, etc.) *\/$/;" m struct:primordial +phi_prime_ini_scf ../include/background.h /^ double phi_prime_ini_scf; \/**< \\f$ d\\phi(t_0)\/d\\tau \\f$: scalar field initial derivative wrt conformal time *\/$/;" m struct:background +phi_stop ../include/primordial.h /^ double phi_stop; \/**< in inflationary module, value of phi at the end of inflation *\/$/;" m struct:primordial +phiminabs ../include/hyperspherical.h /^ double phiminabs;$/;" m struct:WKB_parameters +phisign ../include/hermite3_interpolation_csource.h /^int phisign = 1, dphisign = 1;$/;" v +phisign ../include/hermite4_interpolation_csource.h /^int phisign = 1, dphisign = 1;$/;" v +phisign ../include/hermite6_interpolation_csource.h /^int phisign = 1, dphisign = 1;$/;" v +phisign ../tools/hermite3_interpolation_csource.h /^int phisign = 1, dphisign = 1;$/;" v +phisign ../tools/hermite4_interpolation_csource.h /^int phisign = 1, dphisign = 1;$/;" v +phisign ../tools/hermite6_interpolation_csource.h /^int phisign = 1, dphisign = 1;$/;" v +pinv ../include/sparse.h /^ int *pinv; \/*Inverse row permutation. *\/$/;" m struct:sparse_numerical +pk_def ../include/common.h /^enum pk_def {$/;" g +pk_eq_ddw_and_ddOmega ../include/nonlinear.h /^ double * pk_eq_ddw_and_ddOmega; \/**< table of second derivatives *\/$/;" m struct:nonlinear +pk_eq_size ../include/nonlinear.h /^ int pk_eq_size; \/**< number of indices in table pk_eq_w_and_Omega *\/$/;" m struct:nonlinear +pk_eq_tau ../include/nonlinear.h /^ double * pk_eq_tau; \/**< table of time values *\/$/;" m struct:nonlinear +pk_eq_tau_size ../include/nonlinear.h /^ int pk_eq_tau_size; \/**< number of times (and raws in table pk_eq_w_and_Omega) *\/$/;" m struct:nonlinear +pk_eq_w_and_Omega ../include/nonlinear.h /^ double * pk_eq_w_and_Omega; \/**< table of background quantites *\/$/;" m struct:nonlinear +pk_linear ../include/nonlinear.h /^enum pk_outputs {pk_linear,pk_nonlinear};$/;" e enum:pk_outputs +pk_nonlinear ../include/nonlinear.h /^enum pk_outputs {pk_linear,pk_nonlinear};$/;" e enum:pk_outputs +pk_outputs ../include/nonlinear.h /^enum pk_outputs {pk_linear,pk_nonlinear};$/;" g +pk_size ../include/nonlinear.h /^ int pk_size; \/**< k_size = total number of pk *\/$/;" m struct:nonlinear +pm ../cpp/ClassEngine.hh /^ struct primordial pm; \/* for primordial spectra *\/$/;" m class:ClassEngine typeref:struct:ClassEngine::primordial +pnl ../include/spectra.h /^ struct nonlinear * pnl; \/**< a pointer to the nonlinear structure is$/;" m struct:spectra typeref:struct:spectra::nonlinear +polynomial ../include/primordial.h /^ polynomial,$/;" e enum:potential_shape +possible_gauges ../include/perturbations.h /^enum possible_gauges {$/;" g +potential ../include/primordial.h /^ enum potential_shape potential;$/;" m struct:primordial typeref:enum:primordial::potential_shape +potential_shape ../include/primordial.h /^enum potential_shape {$/;" g +ppm ../include/primordial.h /^ struct primordial * ppm;$/;" m struct:primordial_inflation_parameters_and_workspace typeref:struct:primordial_inflation_parameters_and_workspace::primordial +ppr ../include/input.h /^ struct precision * ppr;$/;" m struct:input_pprpba typeref:struct:input_pprpba::precision +ppr ../include/perturbations.h /^ struct precision * ppr; \/**< pointer to the precision structure *\/$/;" m struct:perturb_parameters_and_workspace typeref:struct:perturb_parameters_and_workspace::precision +ppr ../include/thermodynamics.h /^ struct precision * ppr;$/;" m struct:thermodynamics_parameters_and_workspace typeref:struct:thermodynamics_parameters_and_workspace::precision +ppt ../include/perturbations.h /^ struct perturbs * ppt; \/**< pointer to the precision structure *\/$/;" m struct:perturb_parameters_and_workspace typeref:struct:perturb_parameters_and_workspace::perturbs +ppw ../include/perturbations.h /^ struct perturb_workspace * ppw; \/**< workspace defined above *\/$/;" m struct:perturb_parameters_and_workspace typeref:struct:perturb_parameters_and_workspace::perturb_workspace +pr ../cpp/ClassEngine.hh /^ struct precision pr; \/* for precision parameters *\/$/;" m class:ClassEngine typeref:struct:ClassEngine::precision +precision ../include/common.h /^struct precision$/;" s +preco ../include/thermodynamics.h /^ struct recombination * preco;$/;" m struct:thermodynamics_parameters_and_workspace typeref:struct:thermodynamics_parameters_and_workspace::recombination +primordial ../include/primordial.h /^struct primordial {$/;" s +primordial_analytic_spectrum primordial.c /^int primordial_analytic_spectrum($/;" f +primordial_analytic_spectrum_init primordial.c /^int primordial_analytic_spectrum_init($/;" f +primordial_external_spectrum_init primordial.c /^int primordial_external_spectrum_init($/;" f +primordial_free primordial.c /^int primordial_free($/;" f +primordial_get_lnk_list primordial.c /^int primordial_get_lnk_list($/;" f +primordial_indices primordial.c /^int primordial_indices($/;" f +primordial_inflation_analytic_spectra primordial.c /^int primordial_inflation_analytic_spectra($/;" f +primordial_inflation_check_hubble primordial.c /^int primordial_inflation_check_hubble($/;" f +primordial_inflation_check_potential primordial.c /^int primordial_inflation_check_potential($/;" f +primordial_inflation_derivs primordial.c /^int primordial_inflation_derivs($/;" f +primordial_inflation_evolve_background primordial.c /^int primordial_inflation_evolve_background($/;" f +primordial_inflation_find_attractor primordial.c /^int primordial_inflation_find_attractor($/;" f +primordial_inflation_find_phi_pivot primordial.c /^int primordial_inflation_find_phi_pivot($/;" f +primordial_inflation_get_epsilon primordial.c /^int primordial_inflation_get_epsilon($/;" f +primordial_inflation_hubble primordial.c /^int primordial_inflation_hubble($/;" f +primordial_inflation_indices primordial.c /^int primordial_inflation_indices($/;" f +primordial_inflation_one_k primordial.c /^int primordial_inflation_one_k($/;" f +primordial_inflation_one_wavenumber primordial.c /^int primordial_inflation_one_wavenumber($/;" f +primordial_inflation_parameters_and_workspace ../include/primordial.h /^struct primordial_inflation_parameters_and_workspace {$/;" s +primordial_inflation_potential primordial.c /^int primordial_inflation_potential($/;" f +primordial_inflation_solve_inflation primordial.c /^int primordial_inflation_solve_inflation($/;" f +primordial_inflation_spectra primordial.c /^int primordial_inflation_spectra($/;" f +primordial_init primordial.c /^int primordial_init($/;" f +primordial_output_data primordial.c /^int primordial_output_data(struct perturbs * ppt,$/;" f +primordial_output_titles primordial.c /^int primordial_output_titles(struct perturbs * ppt,$/;" f +primordial_spec_type ../include/primordial.h /^ enum primordial_spectrum_type primordial_spec_type; \/**< type of primordial spectrum (simple analytic from, integration of inflationary perturbations, etc.) *\/$/;" m struct:primordial typeref:enum:primordial::primordial_spectrum_type +primordial_spectrum_at_k primordial.c /^int primordial_spectrum_at_k($/;" f +primordial_spectrum_type ../include/primordial.h /^enum primordial_spectrum_type {$/;" g +primordial_verbose ../include/primordial.h /^ short primordial_verbose; \/**< flag regulating the amount of information sent to standard output (none if set to zero) *\/$/;" m struct:primordial +printFC ../cpp/ClassEngine.cc /^void ClassEngine::printFC() {$/;" f class:ClassEngine +proper ../include/primordial.h /^ proper$/;" e enum:time_definition +pt ../cpp/ClassEngine.hh /^ struct perturbs pt; \/* for source functions *\/$/;" m class:ClassEngine typeref:struct:ClassEngine::perturbs +pt_size ../include/perturbations.h /^ int pt_size; \/**< size of perturbation vector *\/$/;" m struct:perturb_vector +pth ../include/perturbations.h /^ struct thermo * pth; \/**< pointer to the thermodynamics structure *\/$/;" m struct:perturb_parameters_and_workspace typeref:struct:perturb_parameters_and_workspace::thermo +pv ../include/perturbations.h /^ struct perturb_vector * pv; \/**< pointer to vector of integrated$/;" m struct:perturb_workspace typeref:struct:perturb_workspace::perturb_vector +pvecback ../include/background.h /^ double * pvecback;$/;" m struct:background_parameters_and_workspace +pvecback ../include/perturbations.h /^ double * pvecback; \/**< background quantities *\/$/;" m struct:perturb_workspace +pvecback ../include/thermodynamics.h /^ double * pvecback;$/;" m struct:thermodynamics_parameters_and_workspace +pvecmetric ../include/perturbations.h /^ double * pvecmetric; \/**< metric quantities *\/$/;" m struct:perturb_workspace +pvecthermo ../include/perturbations.h /^ double * pvecthermo; \/**< thermodynamics quantities *\/$/;" m struct:perturb_workspace +q ../include/background.h /^ double *q;$/;" m struct:background_parameters_for_distributions +q ../include/sparse.h /^ int *q; \/* Column permutation *\/$/;" m struct:sparse_numerical +q ../include/transfer.h /^ double * q; \/**< list of wavenumber values, q[index_q] *\/$/;" m struct:transfers +q_ncdm ../include/background.h /^ double ** q_ncdm; \/**< Pointers to vectors of perturbation sampling in q *\/$/;" m struct:background +q_ncdm_bg ../include/background.h /^ double ** q_ncdm_bg; \/**< Pointers to vectors of background sampling in q *\/$/;" m struct:background +q_size ../include/transfer.h /^ size_t q_size; \/**< number of wavenumber values *\/$/;" m struct:transfers +q_size_ncdm ../include/background.h /^ int * q_size_ncdm; \/**< Size of the q_ncdm arrays *\/$/;" m struct:background +q_size_ncdm ../include/perturbations.h /^ int* q_size_ncdm; \/**< number of discrete momenta (for each ncdm species) *\/$/;" m struct:perturb_vector +q_size_ncdm_bg ../include/background.h /^ int * q_size_ncdm_bg; \/**< Size of the q_ncdm_bg arrays *\/$/;" m struct:background +qm_Laguerre ../include/quadrature.h /^enum ncdm_quadrature_method {qm_auto, qm_Laguerre, qm_trapz_indefinite, qm_trapz};$/;" e enum:ncdm_quadrature_method +qm_auto ../include/quadrature.h /^enum ncdm_quadrature_method {qm_auto, qm_Laguerre, qm_trapz_indefinite, qm_trapz};$/;" e enum:ncdm_quadrature_method +qm_trapz ../include/quadrature.h /^enum ncdm_quadrature_method {qm_auto, qm_Laguerre, qm_trapz_indefinite, qm_trapz};$/;" e enum:ncdm_quadrature_method +qm_trapz_indefinite ../include/quadrature.h /^enum ncdm_quadrature_method {qm_auto, qm_Laguerre, qm_trapz_indefinite, qm_trapz};$/;" e enum:ncdm_quadrature_method +qss_node ../include/quadrature.h /^} qss_node;$/;" t typeref:struct:adaptive_integration_tree_node +quadrature_gauss_legendre ../tools/quadrature.c /^int quadrature_gauss_legendre($/;" f +quadrature_in_rectangle ../tools/quadrature.c /^int quadrature_in_rectangle($/;" f +r ../include/primordial.h /^ double r; \/**< usual tensor to scalar ratio of power spectra, \\f$ r=A_T\/A_S=P_h\/P_R \\f$*\/$/;" m struct:primordial +ra_rec ../include/thermodynamics.h /^ double ra_rec; \/**< conformal angular diameter distance to recombination *\/$/;" m struct:thermo +ra_star ../include/thermodynamics.h /^ double ra_star; \/**< conformal angular diameter distance to z_star *\/$/;" m struct:thermo +radial_function_type ../include/transfer.h /^ NC_RSD} radial_function_type;$/;" t typeref:enum:__anon2 +rd_rec ../include/thermodynamics.h /^ double rd_rec; \/**< comoving photon damping scale at recombination *\/$/;" m struct:thermo +rd_star ../include/thermodynamics.h /^ double rd_star; \/**< comoving photon damping scale at z_star *\/$/;" m struct:thermo +re_size ../include/thermodynamics.h /^ int re_size; \/**< size of this vector *\/$/;" m struct:recombination +re_size ../include/thermodynamics.h /^ int re_size; \/**< size of this vector *\/$/;" m struct:reionization +reachr ../tools/sparse.c /^int reachr(sp_mat *G, sp_mat *B,int k, int *xik,int *pinv){$/;" f +read ../include/parser.h /^ short * read; \/**< set to _TRUE_ if this parameter is effectively read *\/$/;" m struct:file_content +recfast ../include/thermodynamics.h /^ recfast,$/;" e enum:recombination_algorithm +recombination ../include/thermodynamics.h /^ enum recombination_algorithm recombination; \/**< recombination code *\/$/;" m struct:thermo typeref:enum:thermo::recombination_algorithm +recombination ../include/thermodynamics.h /^struct recombination {$/;" s +recombination_algorithm ../include/thermodynamics.h /^enum recombination_algorithm {$/;" g +recombination_table ../include/thermodynamics.h /^ double * recombination_table; \/**< table recombination_table[index_z*preco->re_size+index_re] with all other quantities (array of size preco->rt_size*preco->re_size) *\/$/;" m struct:recombination +reduce_tree ../tools/quadrature.c /^int reduce_tree(qss_node *node, int level){$/;" f +reio_bins_tanh ../include/thermodynamics.h /^ reio_bins_tanh, \/**< binned reionization history with tanh inteprolation between bins *\/$/;" e enum:reionization_parametrization +reio_camb ../include/thermodynamics.h /^ reio_camb, \/**< reionization parameterized like in CAMB *\/$/;" e enum:reionization_parametrization +reio_half_tanh ../include/thermodynamics.h /^ reio_half_tanh, \/**< half a tanh, instead of the full tanh *\/$/;" e enum:reionization_parametrization +reio_inter ../include/thermodynamics.h /^ reio_inter \/**< linear interpolation between specified points *\/$/;" e enum:reionization_parametrization +reio_inter_num ../include/thermodynamics.h /^ int reio_inter_num; \/**< with how many jumps do we want to describe reionization? *\/$/;" m struct:thermo +reio_inter_xe ../include/thermodynamics.h /^ double * reio_inter_xe; \/**< discrete \\f$ X_e(z)\\f$ values *\/$/;" m struct:thermo +reio_inter_z ../include/thermodynamics.h /^ double * reio_inter_z; \/**< discrete z values *\/$/;" m struct:thermo +reio_many_tanh ../include/thermodynamics.h /^ reio_many_tanh, \/**< similar to reio_camb but with more than one tanh *\/$/;" e enum:reionization_parametrization +reio_none ../include/thermodynamics.h /^ reio_none, \/**< no reionization *\/$/;" e enum:reionization_parametrization +reio_num_params ../include/thermodynamics.h /^ int reio_num_params; \/**< length of vector reionization_parameters *\/$/;" m struct:reionization +reio_num_z ../include/thermodynamics.h /^ int reio_num_z; \/**< number of reionization jumps *\/$/;" m struct:reionization +reio_parametrization ../include/thermodynamics.h /^ enum reionization_parametrization reio_parametrization; \/**< reionization scheme *\/$/;" m struct:thermo typeref:enum:thermo::reionization_parametrization +reio_tau ../include/thermodynamics.h /^ reio_tau \/**< input = tau *\/$/;" e enum:reionization_z_or_tau +reio_z ../include/thermodynamics.h /^ reio_z, \/**< input = redshift *\/$/;" e enum:reionization_z_or_tau +reio_z_or_tau ../include/thermodynamics.h /^ enum reionization_z_or_tau reio_z_or_tau; \/**< is the input parameter the reionization redshift or optical depth? *\/$/;" m struct:thermo typeref:enum:thermo::reionization_z_or_tau +reionization ../include/thermodynamics.h /^struct reionization {$/;" s +reionization_exponent ../include/thermodynamics.h /^ double reionization_exponent; \/**< shape of H reionization *\/$/;" m struct:thermo +reionization_optical_depth ../include/thermodynamics.h /^ double reionization_optical_depth; \/**< reionization optical depth inferred from reionization history *\/$/;" m struct:reionization +reionization_parameters ../include/thermodynamics.h /^ double * reionization_parameters; \/**< vector containing all reionization parameters necessary to compute xe(z) *\/$/;" m struct:reionization +reionization_parametrization ../include/thermodynamics.h /^enum reionization_parametrization {$/;" g +reionization_table ../include/thermodynamics.h /^ double * reionization_table; \/**< table reionization_table[index_z*preio->re_size+index_re] with all other quantities (array of size preio->rt_size*preio->re_size) *\/$/;" m struct:reionization +reionization_width ../include/thermodynamics.h /^ double reionization_width; \/**< width of H reionization *\/$/;" m struct:thermo +reionization_z_or_tau ../include/thermodynamics.h /^enum reionization_z_or_tau {$/;" g +repeated_pattern ../include/evolver_ndf15.h /^ int repeated_pattern;$/;" m struct:jacobian +required_computation_stage ../include/input.h /^ enum computation_stage required_computation_stage;$/;" m struct:fzerofun_workspace typeref:enum:fzerofun_workspace::computation_stage +rho_plus_p_shear ../include/perturbations.h /^ double rho_plus_p_shear; \/**< total (rho+p)*shear (gives delta Tij) *\/$/;" m struct:perturb_workspace +rho_plus_p_theta ../include/perturbations.h /^ double rho_plus_p_theta; \/**< total (rho+p)*theta perturbation (gives delta Toi) *\/$/;" m struct:perturb_workspace +rho_plus_p_theta_fld ../include/perturbations.h /^ double rho_plus_p_theta_fld; \/**< velocity divergence of fluid, not so trivial in PPF scheme *\/$/;" m struct:perturb_workspace +rho_plus_p_tot ../include/perturbations.h /^ double rho_plus_p_tot; \/**< total (rho+p) (used to infer theta_tot from rho_plus_p_theta) *\/$/;" m struct:perturb_workspace +right ../include/quadrature.h /^ struct adaptive_integration_tree_node *left, *right; \/* Pointer to left child. *\/$/;" m struct:adaptive_integration_tree_node typeref:struct:adaptive_integration_tree_node:: +right_border ../include/hermite3_interpolation_csource.h /^double left_border, right_border, next_border;$/;" v +right_border ../include/hermite4_interpolation_csource.h /^double left_border, right_border, next_border;$/;" v +right_border ../include/hermite6_interpolation_csource.h /^double left_border, right_border, next_border;$/;" v +right_border ../tools/hermite3_interpolation_csource.h /^double left_border, right_border, next_border;$/;" v +right_border ../tools/hermite4_interpolation_csource.h /^double left_border, right_border, next_border;$/;" v +right_border ../tools/hermite6_interpolation_csource.h /^double left_border, right_border, next_border;$/;" v +rk ../include/common.h /^ rk, \/* Runge-Kutta integrator *\/$/;" e enum:evolver_type +rkck ../tools/dei_rkck.c /^int rkck($/;" f +rkqs ../tools/dei_rkck.c /^int rkqs(double *x, double htry, double eps,$/;" f +root ../include/output.h /^ char root[_FILENAMESIZE_-32]; \/**< root for all file names *\/$/;" m struct:output +rs_d ../include/thermodynamics.h /^ double rs_d; \/**< comoving sound horizon at baryon drag *\/$/;" m struct:thermo +rs_drag ../cpp/ClassEngine.hh /^ inline double rs_drag() const {return th.rs_d;} $/;" f class:ClassEngine +rs_rec ../include/thermodynamics.h /^ double rs_rec; \/**< comoving sound horizon at recombination *\/$/;" m struct:thermo +rs_star ../include/thermodynamics.h /^ double rs_star; \/**< comoving sound horizon at z_star *\/$/;" m struct:thermo +rsa_MD ../include/perturbations.h /^enum rsa_method {rsa_null,rsa_MD,rsa_MD_with_reio,rsa_none};$/;" e enum:rsa_method +rsa_MD_with_reio ../include/perturbations.h /^enum rsa_method {rsa_null,rsa_MD,rsa_MD_with_reio,rsa_none};$/;" e enum:rsa_method +rsa_delta_g ../include/perturbations.h /^ double rsa_delta_g; \/**< photon density in radiation streaming approximation *\/$/;" m struct:perturb_workspace +rsa_delta_idr ../include/perturbations.h /^ double rsa_delta_idr; \/**< interacting dark radiation density in dark radiation streaming approximation *\/$/;" m struct:perturb_workspace +rsa_delta_ur ../include/perturbations.h /^ double rsa_delta_ur; \/**< photon density in radiation streaming approximation *\/$/;" m struct:perturb_workspace +rsa_flags ../include/perturbations.h /^enum rsa_flags {rsa_off, rsa_on};$/;" g +rsa_idr_MD ../include/perturbations.h /^enum rsa_idr_method {rsa_idr_none,rsa_idr_MD}; \/* for the idm-idr case *\/$/;" e enum:rsa_idr_method +rsa_idr_flags ../include/perturbations.h /^enum rsa_idr_flags {rsa_idr_off, rsa_idr_on};$/;" g +rsa_idr_method ../include/perturbations.h /^enum rsa_idr_method {rsa_idr_none,rsa_idr_MD}; \/* for the idm-idr case *\/$/;" g +rsa_idr_none ../include/perturbations.h /^enum rsa_idr_method {rsa_idr_none,rsa_idr_MD}; \/* for the idm-idr case *\/$/;" e enum:rsa_idr_method +rsa_idr_off ../include/perturbations.h /^enum rsa_idr_flags {rsa_idr_off, rsa_idr_on};$/;" e enum:rsa_idr_flags +rsa_idr_on ../include/perturbations.h /^enum rsa_idr_flags {rsa_idr_off, rsa_idr_on};$/;" e enum:rsa_idr_flags +rsa_method ../include/perturbations.h /^enum rsa_method {rsa_null,rsa_MD,rsa_MD_with_reio,rsa_none};$/;" g +rsa_none ../include/perturbations.h /^enum rsa_method {rsa_null,rsa_MD,rsa_MD_with_reio,rsa_none};$/;" e enum:rsa_method +rsa_null ../include/perturbations.h /^enum rsa_method {rsa_null,rsa_MD,rsa_MD_with_reio,rsa_none};$/;" e enum:rsa_method +rsa_off ../include/perturbations.h /^enum rsa_flags {rsa_off, rsa_on};$/;" e enum:rsa_flags +rsa_on ../include/perturbations.h /^enum rsa_flags {rsa_off, rsa_on};$/;" e enum:rsa_flags +rsa_theta_g ../include/perturbations.h /^ double rsa_theta_g; \/**< photon velocity in radiation streaming approximation *\/$/;" m struct:perturb_workspace +rsa_theta_idr ../include/perturbations.h /^ double rsa_theta_idr; \/**< interacting dark radiation velocity in dark radiation streaming approximation *\/$/;" m struct:perturb_workspace +rsa_theta_ur ../include/perturbations.h /^ double rsa_theta_ur; \/**< photon velocity in radiation streaming approximation *\/$/;" m struct:perturb_workspace +rt_size ../include/thermodynamics.h /^ int rt_size; \/**< number of lines (redshift steps) in the table *\/$/;" m struct:reionization +rt_size ../include/thermodynamics.h /^ int rt_size; \/**< number of lines (redshift steps) in the table *\/$/;" m struct:recombination +rtab ../include/nonlinear.h /^ double * rtab; \/** List of R values *\/$/;" m struct:nonlinear_workspace +running ../include/primordial.h /^ double ** running; \/**< all runnings in matrix form: running[index_md][index_ic1_ic2] *\/$/;" m struct:primordial +s_l ../include/perturbations.h /^ double * s_l; \/**< array of freestreaming coefficients \\f$ s_l = \\sqrt{1-K*(l^2-1)\/k^2} \\f$*\/$/;" m struct:perturb_workspace +scalar_perturbations_data ../include/perturbations.h /^ double * scalar_perturbations_data[_MAX_NUMBER_OF_K_FILES_]; \/**< Array of double pointers to perturbation output for scalars *\/$/;" m struct:perturbs +scalar_titles ../include/perturbations.h /^ char scalar_titles[_MAXTITLESTRINGLENGTH_]; \/**< _DELIMITER_ separated string of titles for scalar perturbation output files. *\/$/;" m struct:perturbs +scf_parameters ../include/background.h /^ double * scf_parameters; \/**< list of parameters describing the scalar field potential *\/$/;" m struct:background +scf_parameters_size ../include/background.h /^ int scf_parameters_size; \/**< size of scf_parameters *\/$/;" m struct:background +scf_tuning_index ../include/background.h /^ int scf_tuning_index; \/**< index in scf_parameters used for tuning *\/$/;" m struct:background +second_order_CLASS ../include/perturbations.h /^enum tca_method {first_order_MB,first_order_CAMB,first_order_CLASS,second_order_CRS,second_order_CLASS,compromise_CLASS};$/;" e enum:tca_method +second_order_CRS ../include/perturbations.h /^enum tca_method {first_order_MB,first_order_CAMB,first_order_CLASS,second_order_CRS,second_order_CLASS,compromise_CLASS};$/;" e enum:tca_method +selection ../include/perturbations.h /^ enum selection_type selection; \/**< type of selection functions *\/$/;" m struct:perturbs typeref:enum:perturbs::selection_type +selection_bias ../include/transfer.h /^ double selection_bias[_SELECTION_NUM_MAX_]; \/**< light-to-mass bias in the transfer function of density number count *\/$/;" m struct:transfers +selection_delta_tau ../include/perturbations.h /^ double selection_delta_tau; \/**< used in presence of selection functions (for matter density, cosmic shear...) *\/$/;" m struct:perturbs +selection_function ../include/perturbations.h /^ double * selection_function; \/**< selection function W(tau), normalized to \\f$ \\int W(tau) dtau=1 \\f$, stored in selection_function[bin*ppt->tau_size+index_tau] *\/$/;" m struct:perturbs +selection_magnification_bias ../include/transfer.h /^ double selection_magnification_bias[_SELECTION_NUM_MAX_]; \/**< magnification bias in the transfer function of density number count *\/$/;" m struct:transfers +selection_max_of_tau_max ../include/perturbations.h /^ double selection_max_of_tau_max; \/**< used in presence of selection functions (for matter density, cosmic shear...) *\/$/;" m struct:perturbs +selection_mean ../include/perturbations.h /^ double selection_mean[_SELECTION_NUM_MAX_]; \/**< centers of selection functions *\/$/;" m struct:perturbs +selection_min_of_tau_min ../include/perturbations.h /^ double selection_min_of_tau_min; \/**< used in presence of selection functions (for matter density, cosmic shear...) *\/$/;" m struct:perturbs +selection_num ../include/perturbations.h /^ int selection_num; \/**< number of selection functions$/;" m struct:perturbs +selection_tau ../include/perturbations.h /^ double * selection_tau; \/**< value of conformal time at the center of each bin *\/$/;" m struct:perturbs +selection_tau_max ../include/perturbations.h /^ double * selection_tau_max; \/**< value of conformal time above which W(tau) is considered to vanish for each bin *\/$/;" m struct:perturbs +selection_tau_min ../include/perturbations.h /^ double * selection_tau_min; \/**< value of conformal time below which W(tau) is considered to vanish for each bin *\/$/;" m struct:perturbs +selection_type ../include/perturbations.h /^enum selection_type {gaussian,tophat,dirac};$/;" g +selection_width ../include/perturbations.h /^ double selection_width[_SELECTION_NUM_MAX_]; \/**< widths of selection functions *\/$/;" m struct:perturbs +sgnK ../include/background.h /^ int sgnK; \/**< K\/|K|: -1, 0 or 1 *\/$/;" m struct:background +sgnK ../include/transfer.h /^ int sgnK; \/**< 0 (flat), 1 (positive curvature, spherical, closed), -1 (negative curvature, hyperbolic, open) *\/$/;" m struct:transfer_workspace +shear_ncdm ../include/perturbations.h /^ double * shear_ncdm; \/**< shear for each ncdm species *\/$/;" m struct:perturb_workspace +shooting_error ../include/background.h /^ ErrorMsg shooting_error; \/**< Error message from shooting failed. *\/$/;" m struct:background +shooting_failed ../include/background.h /^ short shooting_failed; \/**< flag is set to true if shooting failed. *\/$/;" m struct:background +short_info ../include/background.h /^ short short_info; \/**< flag for calling background_at_eta and return little information *\/$/;" m struct:background +sigma8 ../include/input.h /^enum target_names {theta_s, Omega_dcdmdr, omega_dcdmdr, Omega_scf, Omega_ini_dcdm, omega_ini_dcdm, sigma8};$/;" e enum:target_names +sigma8 ../include/nonlinear.h /^ double * sigma8; \/**< sigma8[index_pk] *\/$/;" m struct:nonlinear +sigma_8 ../include/nonlinear.h /^ double ** sigma_8;$/;" m struct:nonlinear_workspace +sigma_disp ../include/nonlinear.h /^ double ** sigma_disp;$/;" m struct:nonlinear_workspace +sigma_disp_100 ../include/nonlinear.h /^ double ** sigma_disp_100;$/;" m struct:nonlinear_workspace +sigma_prime ../include/nonlinear.h /^ double ** sigma_prime;$/;" m struct:nonlinear_workspace +sinK ../include/hermite3_interpolation_csource.h /^double *sinK = pHIS->sinK;$/;" v +sinK ../include/hermite4_interpolation_csource.h /^double *sinK = pHIS->sinK;$/;" v +sinK ../include/hermite6_interpolation_csource.h /^double beta, beta2, *xvec, *sinK, *cotK;$/;" v +sinK ../include/hyperspherical.h /^ double *sinK; \/\/Vector of sin_K(xvec)$/;" m struct:HypersphericalInterpolationStructure +sinK ../tools/hermite3_interpolation_csource.h /^double *sinK = pHIS->sinK;$/;" v +sinK ../tools/hermite4_interpolation_csource.h /^double *sinK = pHIS->sinK;$/;" v +sinK ../tools/hermite6_interpolation_csource.h /^double beta, beta2, *xvec, *sinK, *cotK;$/;" v +sinKm ../include/hermite3_interpolation_csource.h /^double cotKm=0,sinKm=0;$/;" v +sinKm ../include/hermite4_interpolation_csource.h /^double cotKm=0,cotKp=0,sinKm=0,sinKp=0;$/;" v +sinKm ../include/hermite6_interpolation_csource.h /^double cotKm=0,cotKp=0,sinKm=0,sinKp=0, sinKm2, sinKp2;$/;" v +sinKm ../tools/hermite3_interpolation_csource.h /^double cotKm=0,sinKm=0;$/;" v +sinKm ../tools/hermite4_interpolation_csource.h /^double cotKm=0,cotKp=0,sinKm=0,sinKp=0;$/;" v +sinKm ../tools/hermite6_interpolation_csource.h /^double cotKm=0,cotKp=0,sinKm=0,sinKp=0, sinKm2, sinKp2;$/;" v +sinKm2 ../include/hermite3_interpolation_csource.h /^double sinKm2;$/;" v +sinKm2 ../include/hermite4_interpolation_csource.h /^double sinKm2, sinKp2;$/;" v +sinKm2 ../include/hermite6_interpolation_csource.h /^double cotKm=0,cotKp=0,sinKm=0,sinKp=0, sinKm2, sinKp2;$/;" v +sinKm2 ../tools/hermite3_interpolation_csource.h /^double sinKm2;$/;" v +sinKm2 ../tools/hermite4_interpolation_csource.h /^double sinKm2, sinKp2;$/;" v +sinKm2 ../tools/hermite6_interpolation_csource.h /^double cotKm=0,cotKp=0,sinKm=0,sinKp=0, sinKm2, sinKp2;$/;" v +sinKp ../include/hermite3_interpolation_csource.h /^double cotKp=0,sinKp=0;$/;" v +sinKp ../include/hermite4_interpolation_csource.h /^double cotKm=0,cotKp=0,sinKm=0,sinKp=0;$/;" v +sinKp ../include/hermite6_interpolation_csource.h /^double cotKm=0,cotKp=0,sinKm=0,sinKp=0, sinKm2, sinKp2;$/;" v +sinKp ../tools/hermite3_interpolation_csource.h /^double cotKp=0,sinKp=0;$/;" v +sinKp ../tools/hermite4_interpolation_csource.h /^double cotKm=0,cotKp=0,sinKm=0,sinKp=0;$/;" v +sinKp ../tools/hermite6_interpolation_csource.h /^double cotKm=0,cotKp=0,sinKm=0,sinKp=0, sinKm2, sinKp2;$/;" v +sinKp2 ../include/hermite3_interpolation_csource.h /^double sinKp2;$/;" v +sinKp2 ../include/hermite4_interpolation_csource.h /^double sinKm2, sinKp2;$/;" v +sinKp2 ../include/hermite6_interpolation_csource.h /^double cotKm=0,cotKp=0,sinKm=0,sinKp=0, sinKm2, sinKp2;$/;" v +sinKp2 ../tools/hermite3_interpolation_csource.h /^double sinKp2;$/;" v +sinKp2 ../tools/hermite4_interpolation_csource.h /^double sinKm2, sinKp2;$/;" v +sinKp2 ../tools/hermite6_interpolation_csource.h /^double cotKm=0,cotKp=0,sinKm=0,sinKp=0, sinKm2, sinKp2;$/;" v +sine_integral ../tools/trigonometric_integrals.c /^int sine_integral($/;" f +size ../cpp/ClassEngine.hh /^ inline unsigned size() const {return pars.size();}$/;" f class:ClassParams +size ../include/parser.h /^ int size;$/;" m struct:file_content +size_scalar_perturbation_data ../include/perturbations.h /^ int size_scalar_perturbation_data[_MAX_NUMBER_OF_K_FILES_]; \/**< Array of sizes of scalar double pointers *\/$/;" m struct:perturbs +size_tensor_perturbation_data ../include/perturbations.h /^ int size_tensor_perturbation_data[_MAX_NUMBER_OF_K_FILES_]; \/**< Array of sizes of tensor double pointers *\/$/;" m struct:perturbs +size_vector_perturbation_data ../include/perturbations.h /^ int size_vector_perturbation_data[_MAX_NUMBER_OF_K_FILES_]; \/**< Array of sizes of vector double pointers *\/$/;" m struct:perturbs +smallest_allowed_variation ../include/common.h /^ double smallest_allowed_variation; \/**< machine-dependent, assigned automatically by the code *\/$/;" m struct:precision +sort_x_and_w ../tools/quadrature.c /^int sort_x_and_w(double *x, double *w, double *workx, double *workw, int startidx, int endidx){$/;" f +source_extrapolation ../include/nonlinear.h /^enum source_extrapolation {extrap_zero,extrap_only_max,extrap_only_max_units,extrap_max_scaled,extrap_hmcode,extrap_user_defined};$/;" g +sources ../include/perturbations.h /^ double *** sources; \/**< Pointer towards the source interpolation table$/;" m struct:perturbs +sources ../include/transfer.h /^ double * sources; \/**< sources[index_tau]: sources$/;" m struct:transfer_workspace +sp ../cpp/ClassEngine.hh /^ struct spectra sp; \/* for output spectra *\/$/;" m class:ClassEngine typeref:struct:ClassEngine::spectra +spJ ../include/evolver_ndf15.h /^ sp_mat *spJ; \/* Stores the matrix we want to decompose *\/$/;" m struct:jacobian +sp_amd ../tools/sparse.c /^int sp_amd(int *Cp, int *Ci, int n, int nzmax, int *P, int *W){$/;" f +sp_ludcmp ../tools/sparse.c /^int sp_ludcmp(sp_num *N, sp_mat *A, double pivtol){$/;" f +sp_lusolve ../tools/sparse.c /^int sp_lusolve(sp_num *N, double *b, double *x){$/;" f +sp_mat ../include/sparse.h /^} sp_mat;$/;" t typeref:struct:sparse_matrix +sp_mat_alloc ../tools/sparse.c /^int sp_mat_alloc(sp_mat** A, int ncols, int nrows, int maxnz, ErrorMsg error_message){$/;" f +sp_mat_free ../tools/sparse.c /^int sp_mat_free(sp_mat *A){$/;" f +sp_num ../include/sparse.h /^} sp_num;$/;" t typeref:struct:sparse_numerical +sp_num_alloc ../tools/sparse.c /^int sp_num_alloc(sp_num** N, int n, ErrorMsg error_message){$/;" f +sp_num_free ../tools/sparse.c /^int sp_num_free(sp_num *N){$/;" f +sp_refactor ../tools/sparse.c /^int sp_refactor(sp_num *N, sp_mat *A){$/;" f +sp_splsolve ../tools/sparse.c /^int sp_splsolve(sp_mat *G, sp_mat *B, int k, int*xik, int top, double *x, int *pinv){$/;" f +sp_tdfs ../tools/sparse.c /^int sp_tdfs(int j, int k, int *head, const int *next, int *post, int *stack){$/;" f +sp_wclear ../tools/sparse.c /^int sp_wclear(int mark, int lemax, int *w, int n){$/;" f +sparse_matrix ../include/sparse.h /^typedef struct sparse_matrix{$/;" s +sparse_numerical ../include/sparse.h /^typedef struct sparse_numerical{$/;" s +sparse_stuff_initialized ../include/evolver_ndf15.h /^ int sparse_stuff_initialized;$/;" m struct:jacobian +spatial_curvature ../include/background.h /^enum spatial_curvature {flat,open,closed};$/;" g +spectra ../include/spectra.h /^struct spectra {$/;" s +spectra_cl_at_l spectra.c /^int spectra_cl_at_l($/;" f +spectra_cls spectra.c /^int spectra_cls($/;" f +spectra_compute_cl spectra.c /^int spectra_compute_cl($/;" f +spectra_fast_pk_at_kvec_and_zvec spectra.c /^int spectra_fast_pk_at_kvec_and_zvec($/;" f +spectra_free spectra.c /^int spectra_free($/;" f +spectra_indices spectra.c /^int spectra_indices($/;" f +spectra_init spectra.c /^int spectra_init($/;" f +spectra_pk_at_k_and_z spectra.c /^int spectra_pk_at_k_and_z($/;" f +spectra_pk_at_z spectra.c /^int spectra_pk_at_z($/;" f +spectra_pk_nl_at_k_and_z spectra.c /^int spectra_pk_nl_at_k_and_z($/;" f +spectra_pk_nl_at_z spectra.c /^int spectra_pk_nl_at_z($/;" f +spectra_sigma spectra.c /^int spectra_sigma($/;" f +spectra_sigma_cb spectra.c /^int spectra_sigma_cb($/;" f +spectra_tk_at_k_and_z spectra.c /^int spectra_tk_at_k_and_z($/;" f +spectra_tk_at_z spectra.c /^int spectra_tk_at_z($/;" f +spectra_verbose ../include/spectra.h /^ short spectra_verbose; \/**< flag regulating the amount of information sent to standard output (none if set to zero) *\/$/;" m struct:spectra +stab ../include/nonlinear.h /^ double * stab; \/** List of Sigma Values *\/$/;" m struct:nonlinear_workspace +stepmin ../include/dei_rkck.h /^ double stepmin;$/;" m struct:generic_integrator_workspace +store_perturbations ../include/perturbations.h /^ int store_perturbations; \/**< Do we want to store perturbations? *\/$/;" m struct:perturbs +str ../cpp/ClassEngine.cc /^std::string str (const char* s){return string(s);}$/;" f +str ../cpp/ClassEngine.cc /^template<> std::string str (const bool &x){$/;" f +str ../cpp/ClassEngine.cc /^template<> std::string str (const double &x){$/;" f +str ../cpp/ClassEngine.cc /^template<> std::string str (const float &x){$/;" f +str ../cpp/ClassEngine.cc /^template<> std::string str (const std::string &x) {return x;}$/;" f +str ../cpp/ClassEngine.cc /^template std::string str(const T &x){$/;" f +switch_dop ../include/perturbations.h /^ int switch_dop; \/**< in temperature calculation, do we want to include the Doppler term? *\/$/;" m struct:perturbs +switch_eisw ../include/perturbations.h /^ int switch_eisw; \/**< in temperature calculation, do we want to include the early integrated Sachs Wolfe term? *\/$/;" m struct:perturbs +switch_lisw ../include/perturbations.h /^ int switch_lisw; \/**< in temperature calculation, do we want to include the late integrated Sachs Wolfe term? *\/$/;" m struct:perturbs +switch_pol ../include/perturbations.h /^ int switch_pol; \/**< in temperature calculation, do we want to include the polarization-related term? *\/$/;" m struct:perturbs +switch_sw ../include/perturbations.h /^ int switch_sw; \/**< in temperature calculation, do we want to include the intrinsic temperature + Sachs Wolfe term? *\/$/;" m struct:perturbs +synchronous ../include/perturbations.h /^ synchronous \/**< synchronous gauge with \\f$ \\theta_{cdm} = 0 \\f$ by convention *\/$/;" e enum:possible_gauges +sz ../include/growTable.h /^ long sz; \/**< total size *\/$/;" m struct:__anon1 +tablesize ../include/background.h /^ int tablesize;$/;" m struct:background_parameters_for_distributions +target_name ../include/input.h /^ enum target_names * target_name;$/;" m struct:fzerofun_workspace typeref:enum:fzerofun_workspace::target_names +target_names ../include/input.h /^enum target_names {theta_s, Omega_dcdmdr, omega_dcdmdr, Omega_scf, Omega_ini_dcdm, omega_ini_dcdm, sigma8};$/;" g +target_quantity ../include/primordial.h /^enum target_quantity {$/;" g +target_size ../include/input.h /^ int target_size;$/;" m struct:fzerofun_workspace +target_value ../include/input.h /^ double * target_value;$/;" m struct:fzerofun_workspace +tau ../include/nonlinear.h /^ double * tau; \/**< tau[index_tau] = list of time values, covering$/;" m struct:nonlinear +tau0_minus_tau ../include/transfer.h /^ double * tau0_minus_tau; \/**< tau0_minus_tau[index_tau]: values of (tau0 - tau) *\/$/;" m struct:transfer_workspace +tau0_minus_tau_cut ../include/transfer.h /^ double tau0_minus_tau_cut; \/**< critical value of (tau0-tau) in time cut approximation for the wavenumber at hand *\/$/;" m struct:transfer_workspace +tau_cut ../include/thermodynamics.h /^ double tau_cut; \/**< at at which the visibility goes below a fixed fraction of the maximum visibility, used for an approximation in perturbation module *\/$/;" m struct:thermo +tau_d ../include/thermodynamics.h /^ double tau_d; \/**< baryon drag time *\/$/;" m struct:thermo +tau_eq ../include/background.h /^ double tau_eq; \/**< conformal time at radiation\/matter equality [Mpc] *\/$/;" m struct:background +tau_free_streaming ../include/thermodynamics.h /^ double tau_free_streaming; \/**< minimum value of tau at which free-streaming approximation can be switched on *\/$/;" m struct:thermo +tau_idr_free_streaming ../include/thermodynamics.h /^ double tau_idr_free_streaming; \/**< trigger for dark radiation free streaming approximation (idm-idr) *\/$/;" m struct:thermo +tau_ini ../include/thermodynamics.h /^ double tau_ini; \/**< initial conformal time at which thermodynamical variables have been be integrated *\/$/;" m struct:thermo +tau_rec ../include/thermodynamics.h /^ double tau_rec; \/**< conformal time at which the visibility reaches its maximum (= recombination time) *\/$/;" m struct:thermo +tau_reio ../include/thermodynamics.h /^ double tau_reio; \/**< if above set to tau, input value of reionization optical depth *\/$/;" m struct:thermo +tau_sampling ../include/perturbations.h /^ double * tau_sampling; \/**< array of tau values *\/$/;" m struct:perturbs +tau_size ../include/nonlinear.h /^ int tau_size; \/**< tau_size = number of values *\/$/;" m struct:nonlinear +tau_size ../include/perturbations.h /^ int tau_size; \/**< number of values in this array *\/$/;" m struct:perturbs +tau_size ../include/transfer.h /^ int tau_size; \/**< number of discrete time values for a given type *\/$/;" m struct:transfer_workspace +tau_size_max ../include/transfer.h /^ int tau_size_max; \/**< maximum number of discrete time values for all types *\/$/;" m struct:transfer_workspace +tau_star ../include/thermodynamics.h /^ double tau_star;\/**< confirmal time at which photon optical depth crosses one *\/$/;" m struct:thermo +tau_table ../include/background.h /^ double * tau_table; \/**< vector tau_table[index_tau] with values of \\f$ \\tau \\f$ (conformal time) *\/$/;" m struct:background +tautable ../include/nonlinear.h /^ double * tautable;$/;" m struct:nonlinear_workspace +tca_flags ../include/perturbations.h /^enum tca_flags {tca_on, tca_off};$/;" g +tca_idm_dr_flags ../include/perturbations.h /^enum tca_idm_dr_flags {tca_idm_dr_on, tca_idm_dr_off};$/;" g +tca_idm_dr_off ../include/perturbations.h /^enum tca_idm_dr_flags {tca_idm_dr_on, tca_idm_dr_off};$/;" e enum:tca_idm_dr_flags +tca_idm_dr_on ../include/perturbations.h /^enum tca_idm_dr_flags {tca_idm_dr_on, tca_idm_dr_off};$/;" e enum:tca_idm_dr_flags +tca_method ../include/perturbations.h /^enum tca_method {first_order_MB,first_order_CAMB,first_order_CLASS,second_order_CRS,second_order_CLASS,compromise_CLASS};$/;" g +tca_off ../include/perturbations.h /^enum tca_flags {tca_on, tca_off};$/;" e enum:tca_flags +tca_on ../include/perturbations.h /^enum tca_flags {tca_on, tca_off};$/;" e enum:tca_flags +tca_shear_g ../include/perturbations.h /^ double tca_shear_g; \/**< photon shear in tight-coupling approximation *\/$/;" m struct:perturb_workspace +tca_shear_idm_dr ../include/perturbations.h /^ double tca_shear_idm_dr;\/**< interacting dark radiation shear in tight coupling appproximation *\/$/;" m struct:perturb_workspace +tca_slip ../include/perturbations.h /^ double tca_slip; \/**< photon-baryon slip in tight-coupling approximation *\/$/;" m struct:perturb_workspace +tensor_method ../include/perturbations.h /^ enum tensor_methods tensor_method; \/**< way to treat neutrinos in tensor perturbations(neglect, approximate as massless, take exact equations) *\/$/;" m struct:perturbs typeref:enum:perturbs::tensor_methods +tensor_methods ../include/perturbations.h /^enum tensor_methods {tm_photons_only,tm_massless_approximation,tm_exact};$/;" g +tensor_perturbations_data ../include/perturbations.h /^ double * tensor_perturbations_data[_MAX_NUMBER_OF_K_FILES_]; \/**< Array of double pointers to perturbation output for tensors *\/$/;" m struct:perturbs +tensor_titles ../include/perturbations.h /^ char tensor_titles[_MAXTITLESTRINGLENGTH_]; \/**< _DELIMITER_ separated string of titles for tensor perturbation output files. *\/$/;" m struct:perturbs +th ../cpp/ClassEngine.hh /^ struct thermo th; \/* for thermodynamics *\/$/;" m class:ClassEngine typeref:struct:ClassEngine::thermo +th_size ../include/thermodynamics.h /^ int th_size; \/**< size of thermodynamics vector *\/$/;" m struct:thermo +thermo ../include/thermodynamics.h /^struct thermo$/;" s +thermodynamics_at_z thermodynamics.c /^int thermodynamics_at_z($/;" f +thermodynamics_derivs_with_recfast thermodynamics.c /^int thermodynamics_derivs_with_recfast($/;" f +thermodynamics_energy_injection thermodynamics.c /^int thermodynamics_energy_injection($/;" f +thermodynamics_free thermodynamics.c /^int thermodynamics_free($/;" f +thermodynamics_get_xe_before_reionization thermodynamics.c /^int thermodynamics_get_xe_before_reionization($/;" f +thermodynamics_helium_from_bbn thermodynamics.c /^int thermodynamics_helium_from_bbn($/;" f +thermodynamics_indices thermodynamics.c /^int thermodynamics_indices($/;" f +thermodynamics_init thermodynamics.c /^int thermodynamics_init($/;" f +thermodynamics_merge_reco_and_reio thermodynamics.c /^int thermodynamics_merge_reco_and_reio($/;" f +thermodynamics_onthespot_energy_injection thermodynamics.c /^int thermodynamics_onthespot_energy_injection($/;" f +thermodynamics_output_data thermodynamics.c /^int thermodynamics_output_data(struct background * pba,$/;" f +thermodynamics_output_titles thermodynamics.c /^int thermodynamics_output_titles(struct background * pba,$/;" f +thermodynamics_parameters_and_workspace ../include/thermodynamics.h /^struct thermodynamics_parameters_and_workspace {$/;" s +thermodynamics_recombination thermodynamics.c /^int thermodynamics_recombination($/;" f +thermodynamics_recombination_with_hyrec thermodynamics.c /^int thermodynamics_recombination_with_hyrec($/;" f +thermodynamics_recombination_with_recfast thermodynamics.c /^int thermodynamics_recombination_with_recfast($/;" f +thermodynamics_reionization thermodynamics.c /^int thermodynamics_reionization($/;" f +thermodynamics_reionization_function thermodynamics.c /^int thermodynamics_reionization_function($/;" f +thermodynamics_reionization_sample thermodynamics.c /^int thermodynamics_reionization_sample($/;" f +thermodynamics_table ../include/thermodynamics.h /^ double * thermodynamics_table; \/**< table thermodynamics_table[index_z*pth->tt_size+pba->index_th] with all other quantities (array of size th_size*tt_size) *\/$/;" m struct:thermo +thermodynamics_tanh thermodynamics.c /^int thermodynamics_tanh(double x,$/;" f +thermodynamics_verbose ../include/thermodynamics.h /^ short thermodynamics_verbose; \/**< flag regulating the amount of information sent to standard output (none if set to zero) *\/$/;" m struct:thermo +theta_cb ../include/perturbations.h /^ double theta_cb; \/**< velocity divergence theta of only cdm and baryon *\/$/;" m struct:perturb_workspace +theta_m ../include/perturbations.h /^ double theta_m; \/**< velocity divergence theta of all non-relativistic species *\/$/;" m struct:perturb_workspace +theta_ncdm ../include/perturbations.h /^ double * theta_ncdm; \/**< velocity divergence theta of each ncdm species *\/$/;" m struct:perturb_workspace +theta_s ../include/input.h /^enum target_names {theta_s, Omega_dcdmdr, omega_dcdmdr, Omega_scf, Omega_ini_dcdm, omega_ini_dcdm, sigma8};$/;" e enum:target_names +three_ceff2_ur ../include/perturbations.h /^ double three_ceff2_ur;\/**< 3 x effective squared sound speed for the ultrarelativistic perturbations *\/$/;" m struct:perturbs +three_cvis2_ur ../include/perturbations.h /^ double three_cvis2_ur;\/**< 3 x effective viscosity parameter for the ultrarelativistic perturbations *\/$/;" m struct:perturbs +tilt ../include/primordial.h /^ double ** tilt; \/**< all tilts in matrix form: tilt[index_md][index_ic1_ic2] *\/$/;" m struct:primordial +time ../include/primordial.h /^ enum time_definition time;$/;" m struct:primordial_inflation_parameters_and_workspace typeref:enum:primordial_inflation_parameters_and_workspace::time_definition +time_definition ../include/primordial.h /^enum time_definition {$/;" g +tm_exact ../include/perturbations.h /^enum tensor_methods {tm_photons_only,tm_massless_approximation,tm_exact};$/;" e enum:tensor_methods +tm_massless_approximation ../include/perturbations.h /^enum tensor_methods {tm_photons_only,tm_massless_approximation,tm_exact};$/;" e enum:tensor_methods +tm_photons_only ../include/perturbations.h /^enum tensor_methods {tm_photons_only,tm_massless_approximation,tm_exact};$/;" e enum:tensor_methods +tmp ../include/evolver_ndf15.h /^ double * tmp;$/;" m struct:numjac_workspace +tophat ../include/perturbations.h /^enum selection_type {gaussian,tophat,dirac};$/;" e enum:selection_type +topvec ../include/sparse.h /^ int *topvec; \/*topvec[k] holds the first index in xi[k].*\/$/;" m struct:sparse_numerical +tp_size ../include/perturbations.h /^ int * tp_size; \/**< number of types tp_size[index_md] included in computation for each mode *\/$/;" m struct:perturbs +tr ../cpp/ClassEngine.hh /^ struct transfers tr; \/* for transfer functions *\/$/;" m class:ClassEngine typeref:struct:ClassEngine::transfers +transfer ../include/transfer.h /^ double ** transfer; \/**< table of transfer functions for each mode, initial condition, type, multipole and wavenumber, with argument transfer[index_md][((index_ic * ptr->tt_size[index_md] + index_tt) * ptr->l_size[index_md] + index_l) * ptr->q_size + index_q] *\/$/;" m struct:transfers +transfer_can_be_neglected transfer.c /^int transfer_can_be_neglected($/;" f +transfer_compute_for_each_l transfer.c /^int transfer_compute_for_each_l($/;" f +transfer_compute_for_each_q transfer.c /^int transfer_compute_for_each_q($/;" f +transfer_dNdz_analytic transfer.c /^int transfer_dNdz_analytic($/;" f +transfer_f_evo transfer.c /^int transfer_f_evo($/;" f +transfer_free transfer.c /^int transfer_free($/;" f +transfer_free_source_correspondence transfer.c /^int transfer_free_source_correspondence($/;" f +transfer_functions_at_q transfer.c /^int transfer_functions_at_q($/;" f +transfer_get_k_list transfer.c /^int transfer_get_k_list($/;" f +transfer_get_l_list transfer.c /^int transfer_get_l_list($/;" f +transfer_get_lmax transfer.c /^int transfer_get_lmax(int (*get_xmin_generic)(int sgnK,$/;" f +transfer_get_q_list transfer.c /^int transfer_get_q_list($/;" f +transfer_get_source_correspondence transfer.c /^int transfer_get_source_correspondence($/;" f +transfer_global_selection_read transfer.c /^int transfer_global_selection_read($/;" f +transfer_indices_of_transfers transfer.c /^int transfer_indices_of_transfers($/;" f +transfer_init transfer.c /^int transfer_init($/;" f +transfer_integrate transfer.c /^int transfer_integrate($/;" f +transfer_interpolate_sources transfer.c /^int transfer_interpolate_sources($/;" f +transfer_late_source_can_be_neglected transfer.c /^int transfer_late_source_can_be_neglected($/;" f +transfer_lensing_sampling transfer.c /^int transfer_lensing_sampling($/;" f +transfer_limber transfer.c /^int transfer_limber($/;" f +transfer_limber2 transfer.c /^int transfer_limber2($/;" f +transfer_limber_interpolate transfer.c /^int transfer_limber_interpolate($/;" f +transfer_perturbation_copy_sources_and_nl_corrections transfer.c /^int transfer_perturbation_copy_sources_and_nl_corrections($/;" f +transfer_perturbation_source_spline transfer.c /^int transfer_perturbation_source_spline($/;" f +transfer_perturbation_sources_free transfer.c /^int transfer_perturbation_sources_free($/;" f +transfer_perturbation_sources_spline_free transfer.c /^int transfer_perturbation_sources_spline_free($/;" f +transfer_precompute_selection transfer.c /^int transfer_precompute_selection($/;" f +transfer_radial_coordinates transfer.c /^int transfer_radial_coordinates($/;" f +transfer_radial_function transfer.c /^int transfer_radial_function($/;" f +transfer_select_radial_function transfer.c /^int transfer_select_radial_function($/;" f +transfer_selection_compute transfer.c /^int transfer_selection_compute($/;" f +transfer_selection_function transfer.c /^int transfer_selection_function($/;" f +transfer_selection_sampling transfer.c /^int transfer_selection_sampling($/;" f +transfer_selection_times transfer.c /^int transfer_selection_times($/;" f +transfer_source_resample transfer.c /^int transfer_source_resample($/;" f +transfer_source_tau_size transfer.c /^int transfer_source_tau_size($/;" f +transfer_source_tau_size_max transfer.c /^int transfer_source_tau_size_max($/;" f +transfer_sources transfer.c /^int transfer_sources($/;" f +transfer_update_HIS transfer.c /^int transfer_update_HIS($/;" f +transfer_use_limber transfer.c /^int transfer_use_limber($/;" f +transfer_verbose ../include/transfer.h /^ short transfer_verbose; \/**< flag regulating the amount of information sent to standard output (none if set to zero) *\/$/;" m struct:transfers +transfer_workspace ../include/transfer.h /^struct transfer_workspace {$/;" s +transfer_workspace_free transfer.c /^int transfer_workspace_free($/;" f +transfer_workspace_init transfer.c /^int transfer_workspace_init($/;" f +transfers ../include/transfer.h /^struct transfers {$/;" s +trig_order ../include/hyperspherical.h /^ int trig_order; \/\/Order of the interpolation formula for SinK and CosK.$/;" m struct:HypersphericalInterpolationStructure +trust_sparse ../include/evolver_ndf15.h /^ int trust_sparse; \/* Number of times a pattern is repeated (actually included) before we trust it. *\/$/;" m struct:jacobian +tt_size ../include/thermodynamics.h /^ int tt_size; \/**< number of lines (redshift steps) in the tables *\/$/;" m struct:thermo +tt_size ../include/transfer.h /^ int * tt_size; \/**< number of requested transfer types tt_size[index_md] for each mode *\/$/;" m struct:transfers +two_scales ../include/primordial.h /^ two_scales,$/;" e enum:primordial_spectrum_type +ufa_CLASS ../include/perturbations.h /^enum ufa_method {ufa_mb,ufa_hu,ufa_CLASS,ufa_none};$/;" e enum:ufa_method +ufa_flags ../include/perturbations.h /^enum ufa_flags {ufa_off, ufa_on};$/;" g +ufa_hu ../include/perturbations.h /^enum ufa_method {ufa_mb,ufa_hu,ufa_CLASS,ufa_none};$/;" e enum:ufa_method +ufa_mb ../include/perturbations.h /^enum ufa_method {ufa_mb,ufa_hu,ufa_CLASS,ufa_none};$/;" e enum:ufa_method +ufa_method ../include/perturbations.h /^enum ufa_method {ufa_mb,ufa_hu,ufa_CLASS,ufa_none};$/;" g +ufa_none ../include/perturbations.h /^enum ufa_method {ufa_mb,ufa_hu,ufa_CLASS,ufa_none};$/;" e enum:ufa_method +ufa_off ../include/perturbations.h /^enum ufa_flags {ufa_off, ufa_on};$/;" e enum:ufa_flags +ufa_on ../include/perturbations.h /^enum ufa_flags {ufa_off, ufa_on};$/;" e enum:ufa_flags +uninitialize_jacobian ../tools/evolver_ndf15.c /^int uninitialize_jacobian(struct jacobian *jac){$/;" f +uninitialize_numjac_workspace ../tools/evolver_ndf15.c /^int uninitialize_numjac_workspace(struct numjac_workspace * nj_ws){$/;" f +unknown_parameters_index ../include/input.h /^ int * unknown_parameters_index;$/;" m struct:fzerofun_workspace +updateParValues ../cpp/ClassEngine.cc /^bool ClassEngine::updateParValues(const std::vector& par){$/;" f class:ClassEngine +use_ppf ../include/background.h /^ short use_ppf; \/**< flag switching on PPF perturbation equations$/;" m struct:background +use_sparse ../include/evolver_ndf15.h /^ int use_sparse;$/;" m struct:jacobian +used_in_sources ../include/perturbations.h /^ int * used_in_sources; \/**< boolean array specifying which$/;" m struct:perturb_vector +value ../cpp/ClassEngine.hh /^ inline string value(const unsigned& i) const {return pars[i].second;}$/;" f class:ClassParams +value ../include/parser.h /^ FileArg * value; \/**< list of (size) values *\/$/;" m struct:file_content +vector_perturbations_data ../include/perturbations.h /^ double * vector_perturbations_data[_MAX_NUMBER_OF_K_FILES_]; \/**< Array of double pointers to perturbation output for vectors *\/$/;" m struct:perturbs +vector_source_pi ../include/perturbations.h /^ double vector_source_pi; \/**< first stress-energy source term in Einstein's vector equations *\/$/;" m struct:perturb_workspace +vector_source_v ../include/perturbations.h /^ double vector_source_v; \/**< second stress-energy source term in Einstein's vector equations *\/$/;" m struct:perturb_workspace +vector_titles ../include/perturbations.h /^ char vector_titles[_MAXTITLESTRINGLENGTH_]; \/**< _DELIMITER_ separated string of titles for vector perturbation output files. *\/$/;" m struct:perturbs +w ../include/quadrature.h /^ double *w; \/* Pointer to the corresponding weights *\/$/;" m struct:adaptive_integration_tree_node +w ../include/sparse.h /^ double *w; \/* Work array for sp_lu *\/$/;" m struct:sparse_numerical +w0_fld ../include/background.h /^ double w0_fld; \/**< \\f$ w0_{DE} \\f$: current fluid equation of state parameter *\/$/;" m struct:background +w_ncdm ../include/background.h /^ double ** w_ncdm; \/**< Pointers to vectors of corresponding quadrature weights w *\/$/;" m struct:background +w_ncdm_bg ../include/background.h /^ double ** w_ncdm_bg; \/**< Pointers to vectors of corresponding quadrature weights w *\/$/;" m struct:background +w_trapz ../include/transfer.h /^ double * w_trapz; \/**< w_trapz[index_tau]: values of weights in trapezoidal integration (related to time steps) *\/$/;" m struct:transfer_workspace +wa_fld ../include/background.h /^ double wa_fld; \/**< \\f$ wa_{DE} \\f$: fluid equation of state parameter derivative *\/$/;" m struct:background +wamd ../include/sparse.h /^ int *wamd; \/* Work array for sp_amd *\/$/;" m struct:sparse_numerical +writeCls ../cpp/Engine.cc /^Engine::writeCls(std::ostream &of){$/;" f class:Engine +write_background ../include/output.h /^ short write_background; \/**< flag for outputing background evolution in file *\/$/;" m struct:output +write_header ../include/output.h /^ short write_header; \/**< flag stating whether we should write a header in output files *\/$/;" m struct:output +write_perturbations ../include/output.h /^ short write_perturbations; \/**< flag for outputing perturbations of selected wavenumber(s) in file(s) *\/$/;" m struct:output +write_primordial ../include/output.h /^ short write_primordial; \/**< flag for outputing scalar\/tensor primordial spectra in files *\/$/;" m struct:output +write_thermodynamics ../include/output.h /^ short write_thermodynamics; \/**< flag for outputing thermodynamical evolution in file *\/$/;" m struct:output +x ../include/hermite3_interpolation_csource.h /^double yp=0, dyp=0, x;$/;" v +x ../include/hermite4_interpolation_csource.h /^double ym=0, yp=0, dym=0, dyp=0, x;$/;" v +x ../include/hermite6_interpolation_csource.h /^double ym=0, yp=0, dym=0, dyp=0, d2ym=0, d2yp=0, x, z, z2, z3, z4, z5;$/;" v +x ../include/hyperspherical.h /^ double *x; \/\/Pointer to x-values$/;" m struct:HypersphericalInterpolationStructure +x ../include/quadrature.h /^ double *x; \/* Pointer to the abscissas of node *\/$/;" m struct:adaptive_integration_tree_node +x ../tools/hermite3_interpolation_csource.h /^double yp=0, dyp=0, x;$/;" v +x ../tools/hermite4_interpolation_csource.h /^double ym=0, yp=0, dym=0, dyp=0, x;$/;" v +x ../tools/hermite6_interpolation_csource.h /^double ym=0, yp=0, dym=0, dyp=0, d2ym=0, d2yp=0, x, z, z2, z3, z4, z5;$/;" v +x_size ../include/hyperspherical.h /^ int x_size; \/\/Number of x-values$/;" m struct:HypersphericalInterpolationStructure +xi ../include/sparse.h /^ int **xi; \/*xi[k] points to a row of xi, which holds the topological ordered indices.*\/$/;" m struct:sparse_numerical +xjac ../include/evolver_ndf15.h /^ double *xjac; \/*Stores the values of the sparse jacobian. (Same pattern as spJ) *\/$/;" m struct:jacobian +xmax ../include/hermite3_interpolation_csource.h /^double xmin, xmax, deltax;$/;" v +xmax ../include/hermite4_interpolation_csource.h /^double xmin, xmax, deltax;$/;" v +xmax ../include/hermite6_interpolation_csource.h /^double xmin, xmax, deltax, deltax2, lxlp1;$/;" v +xmax ../tools/hermite3_interpolation_csource.h /^double xmin, xmax, deltax;$/;" v +xmax ../tools/hermite4_interpolation_csource.h /^double xmin, xmax, deltax;$/;" v +xmax ../tools/hermite6_interpolation_csource.h /^double xmin, xmax, deltax, deltax2, lxlp1;$/;" v +xmin ../include/hermite3_interpolation_csource.h /^double xmin, xmax, deltax;$/;" v +xmin ../include/hermite4_interpolation_csource.h /^double xmin, xmax, deltax;$/;" v +xmin ../include/hermite6_interpolation_csource.h /^double xmin, xmax, deltax, deltax2, lxlp1;$/;" v +xmin ../tools/hermite3_interpolation_csource.h /^double xmin, xmax, deltax;$/;" v +xmin ../tools/hermite4_interpolation_csource.h /^double xmin, xmax, deltax;$/;" v +xmin ../tools/hermite6_interpolation_csource.h /^double xmin, xmax, deltax, deltax2, lxlp1;$/;" v +xvec ../include/hermite3_interpolation_csource.h /^double *xvec;$/;" v +xvec ../include/hermite4_interpolation_csource.h /^double *xvec;$/;" v +xvec ../include/hermite6_interpolation_csource.h /^double beta, beta2, *xvec, *sinK, *cotK;$/;" v +xvec ../tools/hermite3_interpolation_csource.h /^double *xvec;$/;" v +xvec ../tools/hermite4_interpolation_csource.h /^double *xvec;$/;" v +xvec ../tools/hermite6_interpolation_csource.h /^double beta, beta2, *xvec, *sinK, *cotK;$/;" v +y ../include/dei_rkck.h /^ double * y;$/;" m struct:generic_integrator_workspace +y ../include/perturbations.h /^ double * y; \/**< vector of perturbations to be integrated *\/$/;" m struct:perturb_vector +ydel_Fdel ../include/evolver_ndf15.h /^ double **ydel_Fdel;$/;" m struct:numjac_workspace +yerr ../include/dei_rkck.h /^ double * yerr;$/;" m struct:generic_integrator_workspace +ym ../include/hermite3_interpolation_csource.h /^double ym=0;$/;" v +ym ../include/hermite4_interpolation_csource.h /^double ym=0, yp=0, dym=0, dyp=0, x;$/;" v +ym ../include/hermite6_interpolation_csource.h /^double ym=0, yp=0, dym=0, dyp=0, d2ym=0, d2yp=0, x, z, z2, z3, z4, z5;$/;" v +ym ../tools/hermite3_interpolation_csource.h /^double ym=0;$/;" v +ym ../tools/hermite4_interpolation_csource.h /^double ym=0, yp=0, dym=0, dyp=0, x;$/;" v +ym ../tools/hermite6_interpolation_csource.h /^double ym=0, yp=0, dym=0, dyp=0, d2ym=0, d2yp=0, x, z, z2, z3, z4, z5;$/;" v +yp ../include/hermite3_interpolation_csource.h /^double yp=0, dyp=0, x;$/;" v +yp ../include/hermite4_interpolation_csource.h /^double ym=0, yp=0, dym=0, dyp=0, x;$/;" v +yp ../include/hermite6_interpolation_csource.h /^double ym=0, yp=0, dym=0, dyp=0, d2ym=0, d2yp=0, x, z, z2, z3, z4, z5;$/;" v +yp ../tools/hermite3_interpolation_csource.h /^double yp=0, dyp=0, x;$/;" v +yp ../tools/hermite4_interpolation_csource.h /^double ym=0, yp=0, dym=0, dyp=0, x;$/;" v +yp ../tools/hermite6_interpolation_csource.h /^double ym=0, yp=0, dym=0, dyp=0, d2ym=0, d2yp=0, x, z, z2, z3, z4, z5;$/;" v +yscal ../include/dei_rkck.h /^ double * yscal;$/;" m struct:generic_integrator_workspace +yscale ../include/evolver_ndf15.h /^ double *yscale;$/;" m struct:numjac_workspace +ytemp ../include/dei_rkck.h /^ double * ytemp;$/;" m struct:generic_integrator_workspace +ytempo ../include/dei_rkck.h /^ double * ytempo;$/;" m struct:generic_integrator_workspace +yydel ../include/evolver_ndf15.h /^ double * yydel;$/;" m struct:numjac_workspace +z ../include/hermite3_interpolation_csource.h /^double z[2]={0.,0.};$/;" v +z ../include/hermite4_interpolation_csource.h /^double z[3]={0.,0.,0.};$/;" v +z ../include/hermite6_interpolation_csource.h /^double ym=0, yp=0, dym=0, dyp=0, d2ym=0, d2yp=0, x, z, z2, z3, z4, z5;$/;" v +z ../tools/hermite3_interpolation_csource.h /^double z[2]={0.,0.};$/;" v +z ../tools/hermite4_interpolation_csource.h /^double z[3]={0.,0.,0.};$/;" v +z ../tools/hermite6_interpolation_csource.h /^double ym=0, yp=0, dym=0, dyp=0, d2ym=0, d2yp=0, x, z, z2, z3, z4, z5;$/;" v +z2 ../include/hermite6_interpolation_csource.h /^double ym=0, yp=0, dym=0, dyp=0, d2ym=0, d2yp=0, x, z, z2, z3, z4, z5;$/;" v +z2 ../tools/hermite6_interpolation_csource.h /^double ym=0, yp=0, dym=0, dyp=0, d2ym=0, d2yp=0, x, z, z2, z3, z4, z5;$/;" v +z3 ../include/hermite6_interpolation_csource.h /^double ym=0, yp=0, dym=0, dyp=0, d2ym=0, d2yp=0, x, z, z2, z3, z4, z5;$/;" v +z3 ../tools/hermite6_interpolation_csource.h /^double ym=0, yp=0, dym=0, dyp=0, d2ym=0, d2yp=0, x, z, z2, z3, z4, z5;$/;" v +z4 ../include/hermite6_interpolation_csource.h /^double ym=0, yp=0, dym=0, dyp=0, d2ym=0, d2yp=0, x, z, z2, z3, z4, z5;$/;" v +z4 ../tools/hermite6_interpolation_csource.h /^double ym=0, yp=0, dym=0, dyp=0, d2ym=0, d2yp=0, x, z, z2, z3, z4, z5;$/;" v +z5 ../include/hermite6_interpolation_csource.h /^double ym=0, yp=0, dym=0, dyp=0, d2ym=0, d2yp=0, x, z, z2, z3, z4, z5;$/;" v +z5 ../tools/hermite6_interpolation_csource.h /^double ym=0, yp=0, dym=0, dyp=0, d2ym=0, d2yp=0, x, z, z2, z3, z4, z5;$/;" v +z_d ../include/thermodynamics.h /^ double z_d; \/**< baryon drag redshift *\/$/;" m struct:thermo +z_drag ../cpp/ClassEngine.hh /^ inline double z_drag() const {return th.z_d;}$/;" f class:ClassEngine +z_eq ../include/background.h /^ double z_eq; \/**< redshift at radiation\/matter equality *\/$/;" m struct:background +z_infinity ../include/nonlinear.h /^ double z_infinity; \/** for HMcode: z value at which Dark Energy correction is evaluated needs to be at early times (default *\/$/;" m struct:nonlinear +z_max_pk ../include/perturbations.h /^ double z_max_pk; \/**< when we compute only the matter spectrum \/ transfer functions, but not the CMB, we are sometimes interested to sample source functions at very high redshift, way before recombination. This z_max_pk will then fix the initial sampling time of the sources. *\/$/;" m struct:perturbs +z_max_pk ../include/spectra.h /^ double z_max_pk; \/**< maximum value of z at which matter spectrum P(k,z) will be evaluated; keep fixed to zero if P(k) only needed today *\/$/;" m struct:spectra +z_pk ../include/output.h /^ double z_pk[_Z_PK_NUM_MAX_]; \/**< value(s) of redshift at which P(k,z) and T_i(k,z) should be written *\/$/;" m struct:output +z_pk_num ../include/output.h /^ int z_pk_num; \/**< number of redshift at which P(k,z) and T_i(k,z) should be written *\/$/;" m struct:output +z_rec ../include/thermodynamics.h /^ double z_rec; \/**< z at which the visibility reaches its maximum (= recombination redshift) *\/$/;" m struct:thermo +z_reio ../include/thermodynamics.h /^ double z_reio; \/**< if above set to z, input value of reionization redshift *\/$/;" m struct:thermo +z_star ../include/thermodynamics.h /^ double z_star; \/**< redshift at which photon optical depth crosses one *\/$/;" m struct:thermo +z_table ../include/background.h /^ double * z_table; \/**< vector z_table[index_tau] with values of \\f$ z \\f$ (redshift) *\/$/;" m struct:background +z_table ../include/thermodynamics.h /^ double * z_table; \/**< vector z_table[index_z] with values of redshift (vector of size tt_size) *\/$/;" m struct:thermo +zpp_over_z ../include/primordial.h /^ double zpp_over_z;$/;" m struct:primordial_inflation_parameters_and_workspace +ztable ../include/nonlinear.h /^ double * ztable;$/;" m struct:nonlinear_workspace +~ClassEngine ../cpp/ClassEngine.cc /^ClassEngine::~ClassEngine()$/;" f class:ClassEngine +~Engine ../cpp/Engine.hh /^ virtual ~Engine(){};$/;" f class:Engine diff --git a/class/source/thermodynamics.c b/class/source/thermodynamics.c index 25d69e37..d02dffb9 100644 --- a/class/source/thermodynamics.c +++ b/class/source/thermodynamics.c @@ -155,9 +155,13 @@ int thermodynamics_at_z( /* Calculate Tb */ pvecthermo[pth->index_th_Tb] = pba->T_cmb*(1.+z); - /* Calculate cb2 (cb2 = (k_B/mu) Tb (1-1/3 dlnTb/dlna) = (k_B/mu) Tb (1+1/3 (1+z) dlnTb/dz)) */ + /* Calculate baryon equation of state parameter wb = (k_B/mu) Tb */ /* note that m_H / mu = 1 + (m_H/m_He-1) Y_p + x_e (1-Y_p) */ - pvecthermo[pth->index_th_cb2] = _k_B_ / ( _c_ * _c_ * _m_H_ ) * (1. + (1./_not4_ - 1.) * pth->YHe + x0 * (1.-pth->YHe)) * pba->T_cmb * (1.+z) * 4. / 3.; + pvecthermo[pth->index_th_wb] = _k_B_ / ( _c_ * _c_ * _m_H_ ) * (1. + (1./_not4_ - 1.) * pth->YHe + x0 * (1.-pth->YHe)) * pba->T_cmb * (1.+z); + + /* Calculate baryon adiabatic sound speed cb2 = (k_B/mu) Tb (1-1/3 dlnTb/dlna) = (k_B/mu) Tb (1+1/3 (1+z) dlnTb/dz) */ + /* note that m_H / mu = 1 + (m_H/m_He-1) Y_p + x_e (1-Y_p) */ + pvecthermo[pth->index_th_cb2] = pvecthermo[pth->index_th_wb] * 4. / 3.; /* derivatives of baryon sound speed (only computed if some non-minimal tight-coupling schemes is requested) */ if (pth->compute_cb2_derivatives == _TRUE_) { @@ -172,6 +176,37 @@ int thermodynamics_at_z( /* in this regime, variation rate = dkappa/dtau */ pvecthermo[pth->index_th_rate] = pvecthermo[pth->index_th_dkappa]; + /* quantities related to DM interacting with DR */ + if(pba->has_idm_dr == _TRUE_){ + + /* calculate dmu_idm_dr and approximate its derivatives as zero */ + pvecthermo[pth->index_th_dmu_idm_dr] = pth->a_idm_dr*pow((1.+z)/1.e7,pth->nindex_idm_dr)*pba->Omega0_idm_dr*pow(pba->h,2); + pvecthermo[pth->index_th_ddmu_idm_dr] = -pvecback[pba->index_bg_H] * pth->nindex_idm_dr / (1+z) * pvecthermo[pth->index_th_dmu_idm_dr]; + pvecthermo[pth->index_th_dddmu_idm_dr] = (pvecback[pba->index_bg_H]*pvecback[pba->index_bg_H]/ (1.+z) - pvecback[pba->index_bg_H_prime]) + * pth->nindex_idm_dr / (1.+z) * pvecthermo[pth->index_th_dmu_idm_dr]; + + /* calculate dmu_idr (self interaction) */ + pvecthermo[pth->index_th_dmu_idr] = pth->b_idr*pow((1.+z)/1.e7,pth->nindex_idm_dr)*pba->Omega0_idr*pow(pba->h,2); + + /* extrapolate optical depth of idm_dr and idr */ + pvecthermo[pth->index_th_tau_idm_dr] = pth->thermodynamics_table[(pth->tt_size-1)*pth->th_size+pth->index_th_tau_idm_dr]+ + (pth->thermodynamics_table[(pth->tt_size-1)*pth->th_size+pth->index_th_tau_idm_dr]-pth->thermodynamics_table[(pth->tt_size-2)*pth->th_size+pth->index_th_tau_idm_dr]) + *(z-pth->z_table[pth->tt_size-1])/(pth->z_table[pth->tt_size-1]-pth->z_table[pth->tt_size-2]); + + pvecthermo[pth->index_th_tau_idr] = pth->thermodynamics_table[(pth->tt_size-1)*pth->th_size+pth->index_th_tau_idr]+ + (pth->thermodynamics_table[(pth->tt_size-1)*pth->th_size+pth->index_th_tau_idr]-pth->thermodynamics_table[(pth->tt_size-2)*pth->th_size+pth->index_th_tau_idr]) + *(z-pth->z_table[pth->tt_size-1])/(pth->z_table[pth->tt_size-1]-pth->z_table[pth->tt_size-2]); + + /* extrapolate idm_dr visibility function */ + pvecthermo[pth->index_th_g_idm_dr] = pth->thermodynamics_table[(pth->tt_size-1)*pth->th_size+pth->index_th_g_idm_dr]; + + /* calculate interacting dark matter sound speed */ + pvecthermo[pth->index_th_cidm_dr2] = 4*_k_B_*pba->T_idr*(1.+z)/_eV_/3./pth->m_idm; + + /* calculate interacting dark matter temperature (equal to idr temperature at this redhsift) */ + pvecthermo[pth->index_th_Tidm_dr] = pba->T_idr*(1.+z); + } + } /** - interpolate in table with array_interpolate_spline() (normal @@ -181,7 +216,8 @@ int thermodynamics_at_z( else { /* some very specific cases require linear interpolation because of a break in the derivative of the functions */ - if ((pth->reio_parametrization == reio_half_tanh) && (z < 2*pth->z_reio)) { + if (((pth->reio_parametrization == reio_half_tanh) && (z < 2*pth->z_reio)) + || ((pth->reio_parametrization == reio_inter) && (z < 50.))) { class_call(array_interpolate_linear( pth->z_table, @@ -272,6 +308,8 @@ int thermodynamics_init( double * tau_table_growing; /* conformal time of reionization */ double tau_reio; + /* R = (3./4.)*(rho_b/rho_g) */ + double R; /* structures for storing temporarily information on recombination and reionization */ struct recombination reco; @@ -279,15 +317,17 @@ int thermodynamics_init( struct recombination * preco; struct reionization * preio; - double tau; + double tau,tau_ini; double g_max; int index_tau_max; + double dkappa_ini; - /** - initialize pointers, allocate background vector */ + double z_idm_dr, z_idr, tau_idm_dr, tau_idr, Gamma_heat_idm_dr, dTdz_idm_dr, T_idm_dr, z, T_idr, dz, T_adia, z_adia; - preco=&reco; - preio=&reio; - class_alloc(pvecback,pba->bg_size*sizeof(double),pba->error_message); + double tau_idm_dr_fs=0.; + int index_tau_fs; + int n, N_sub_steps; + double dz_sub_step; if (pth->thermodynamics_verbose > 0) printf("Computing thermodynamics"); @@ -338,9 +378,9 @@ int thermodynamics_init( pth->error_message, "characteristic annihilation redshift cannot be negative"); - class_test((pth->annihilation>0)&&(pba->has_cdm==_FALSE_), + class_test((pth->annihilation>0) && ((pba->has_cdm==_FALSE_)&&(pba->has_idm_dr==_FALSE_)), pth->error_message, - "CDM annihilation effects require the presence of CDM!"); + "CDM annihilation effects require the presence of CDM or IDM!"); class_test((pth->annihilation_f_halo>0) && (pth->recombination==recfast), pth->error_message, @@ -362,9 +402,9 @@ int thermodynamics_init( pth->error_message, "decay parameter cannot be negative"); - class_test((pth->decay>0)&&(pba->has_cdm==_FALSE_), + class_test((pth->decay>0)&&((pba->has_cdm==_FALSE_)&&(pba->has_idm_dr==_FALSE_)), pth->error_message, - "CDM decay effects require the presence of CDM!"); + "CDM decay effects require the presence of CDM or IDM!"); /* tests in order to prevent segmentation fault in the following */ class_test(_not4_ == 0., @@ -374,24 +414,35 @@ int thermodynamics_init( pth->error_message, "stop to avoid division by zero"); + /** - initialize pointers */ + + preco=&reco; + preio=&reio; + /** - assign values to all indices in the structures with thermodynamics_indices()*/ - class_call(thermodynamics_indices(pth,preco,preio), + class_call(thermodynamics_indices(pba,pth,preco,preio), pth->error_message, pth->error_message); + /** - allocate background vector */ + + class_alloc(pvecback,pba->bg_size*sizeof(double),pba->error_message); + /** - solve recombination and store values of \f$ z, x_e, d \kappa / d \tau, T_b, c_b^2 \f$ with thermodynamics_recombination() */ - class_call(thermodynamics_recombination(ppr,pba,pth,preco,pvecback), - pth->error_message, - pth->error_message); + class_call_except(thermodynamics_recombination(ppr,pba,pth,preco,pvecback), + pth->error_message, + pth->error_message, + free(pvecback)); /** - if there is reionization, solve reionization and store values of \f$ z, x_e, d \kappa / d \tau, T_b, c_b^2 \f$ with thermodynamics_reionization()*/ if (pth->reio_parametrization != reio_none) { - class_call(thermodynamics_reionization(ppr,pba,pth,preco,preio,pvecback), - pth->error_message, - pth->error_message); + class_call_except(thermodynamics_reionization(ppr,pba,pth,preco,preio,pvecback), + pth->error_message, + pth->error_message, + free(preco->recombination_table);free(pvecback)); } else { preio->rt_size=0; @@ -401,7 +452,7 @@ int thermodynamics_init( /** - merge tables in recombination and reionization structures into a single table in thermo structure */ - class_call(thermodynamics_merge_reco_and_reio(ppr,pth,preco,preio), + class_call(thermodynamics_merge_reco_and_reio(ppr,pba,pth,preco,preio), pth->error_message, pth->error_message); @@ -423,7 +474,7 @@ int thermodynamics_init( /** - fill missing columns (quantities not computed previously but related) */ - /** - --> baryon drag interaction rate time minus one, -[R * kappa'], stored temporarily in column ddkappa */ + /** - --> minus the baryon drag interaction rate, -dkappa_d/dtau = -[1/R * kappa'], with R = 3 rho_b / 4 rho_gamma, stored temporarily in column ddkappa */ last_index_back = pba->bg_size-1; @@ -438,13 +489,32 @@ int thermodynamics_init( pba->error_message, pth->error_message); + R = 3./4.*pvecback[pba->index_bg_rho_b]/pvecback[pba->index_bg_rho_g]; + pth->thermodynamics_table[index_tau*pth->th_size+pth->index_th_ddkappa] = - -4./3.*pvecback[pba->index_bg_rho_g]/pvecback[pba->index_bg_rho_b] - *pth->thermodynamics_table[index_tau*pth->th_size+pth->index_th_dkappa]; + -1./R*pth->thermodynamics_table[index_tau*pth->th_size+pth->index_th_dkappa]; + + if(pba->has_idm_dr == _TRUE_) { + /* - --> idr interaction rate with idm_dr (i.e. idr opacity to idm_dr scattering) */ + pth->thermodynamics_table[index_tau*pth->th_size+pth->index_th_dmu_idm_dr] = + pth->a_idm_dr*pow((1.+pth->z_table[index_tau])/1.e7,pth->nindex_idm_dr)*pba->Omega0_idm_dr*pow(pba->h,2); + + /* - --> idm_dr interaction rate with idr (i.e. idm_dr opacity + to idr scattering), [Sinv*dmu_idm_dr] with Sinv = (4 + rho_idr) / (3 rho_idm_dr), stored temporarily in + ddmu_idm_dr */ + pth->thermodynamics_table[index_tau*pth->th_size+pth->index_th_ddmu_idm_dr] = + 4./3.*pvecback[pba->index_bg_rho_idr]/pvecback[pba->index_bg_rho_idm_dr] + *pth->thermodynamics_table[index_tau*pth->th_size+pth->index_th_dmu_idm_dr]; + + /* - --> idr self-interaction rate */ + pth->thermodynamics_table[index_tau*pth->th_size+pth->index_th_dmu_idr] = + pth->b_idr*pow((1.+pth->z_table[index_tau])/1.e7,pth->nindex_idm_dr)*pba->Omega0_idr*pow(pba->h,2); + } } - /** - --> second derivative of this rate, -[R * kappa']'', stored temporarily in column dddkappa */ + /** - --> second derivative of this rate, -[1/R * kappa']'', stored temporarily in column dddkappa */ class_call(array_spline_table_line_to_line(tau_table, pth->tt_size, pth->thermodynamics_table, @@ -469,24 +539,99 @@ int thermodynamics_init( pth->error_message); /* the temporary quantities stored in columns ddkappa and dddkappa - will not be used anymore, they will be overwritten */ + will not be used anymore, so they can be overwritten by other + intermediate steps of other computations */ + + if(pba->has_idm_dr == _TRUE_){ + + /** --> second derivative of idm_dr interaction rate (with idr), [Sinv*dmu_idm_dr]'', stored temporarily in column dddmu */ + class_call(array_spline_table_line_to_line(tau_table, + pth->tt_size, + pth->thermodynamics_table, + pth->th_size, + pth->index_th_ddmu_idm_dr, + pth->index_th_dddmu_idm_dr, + _SPLINE_EST_DERIV_, + pth->error_message), + pth->error_message, + pth->error_message); + + /** - --> compute optical depth of idm, tau_idm_dr = [int_{tau_today}^{tau} dtau [Sinv*dmu_idm_dr] ]. + This step gives -tau_idm_dr. The resulty is mutiplied by -1 later on. */ + class_call(array_integrate_spline_table_line_to_line(tau_table, + pth->tt_size, + pth->thermodynamics_table, + pth->th_size, + pth->index_th_ddmu_idm_dr, + pth->index_th_dddmu_idm_dr, + pth->index_th_tau_idm_dr, + pth->error_message), + pth->error_message, + pth->error_message); + + + /** - --> second derivative of idr interaction rate (with idm_dr), [dmu_idm_idr]'', stored temporarily in column dddmu */ + class_call(array_spline_table_line_to_line(tau_table, + pth->tt_size, + pth->thermodynamics_table, + pth->th_size, + pth->index_th_dmu_idm_dr, + pth->index_th_dddmu_idm_dr, + _SPLINE_EST_DERIV_, + pth->error_message), + pth->error_message, + pth->error_message); + + /** - --> compute optical depth of idr, tau_idr = [int_{tau_today}^{tau} dtau [dmu_idm_idr] ]. + This step gives -tau_idr. The resulty is mutiplied by -1 later on. */ + class_call(array_integrate_spline_table_line_to_line(tau_table, + pth->tt_size, + pth->thermodynamics_table, + pth->th_size, + pth->index_th_dmu_idm_dr, + pth->index_th_dddmu_idm_dr, + pth->index_th_tau_idr, + pth->error_message), + pth->error_message, + pth->error_message); + } + + /** - --> compute damping scale: + + r_d = 2pi/k_d = 2pi * [int_{tau_ini}^{tau} dtau (1/kappa') 1/6 (R^2+16/15(1+R))/(1+R)^2]^1/2 + = 2pi * [int_{tau_ini}^{tau} dtau (1/kappa') 1/6 (R^2/(1+R)+16/15)/(1+R)]^1/2 + + which is like in CosmoTherm (CT), but slightly + different from Wayne Hu (WH)'s thesis eq. (5.59): + the factor 16/15 in CT is 4/5 in WH */ - /** - --> compute r_d = [int_{tau_ini}^{tau} dtau [1/kappa'] */ if (pth->compute_damping_scale == _TRUE_) { class_alloc(tau_table_growing,pth->tt_size*sizeof(double),pth->error_message); - /* compute integrand 1/kappa' and store temporarily in column "ddkappa" */ + /* compute integrand and store temporarily in column "ddkappa" */ for (index_tau=0; index_tau < pth->tt_size; index_tau++) { tau_table_growing[index_tau]=tau_table[pth->tt_size-1-index_tau]; + class_call(background_at_tau(pba, + tau_table_growing[index_tau], + pba->normal_info, + pba->inter_closeby, + &last_index_back, + pvecback), + pba->error_message, + pth->error_message); + + R = 3./4.*pvecback[pba->index_bg_rho_b]/pvecback[pba->index_bg_rho_g]; + pth->thermodynamics_table[index_tau*pth->th_size+pth->index_th_ddkappa] = - 1./pth->thermodynamics_table[(pth->tt_size-1-index_tau)*pth->th_size+pth->index_th_dkappa]; + 1./6./pth->thermodynamics_table[(pth->tt_size-1-index_tau)*pth->th_size+pth->index_th_dkappa] + *(R*R/(1+R)+16./15.)/(1.+R); } - /* compute second derivative of integrand 1/kappa' and store temporarily in column "dddkappa" */ + /* compute second derivative of integrand, and store temporarily in column "dddkappa" */ class_call(array_spline_table_line_to_line(tau_table_growing, pth->tt_size, pth->thermodynamics_table, @@ -498,37 +643,39 @@ int thermodynamics_init( pth->error_message, pth->error_message); - /* compute integrated quantity r_d^2 and store temporarily in column "g" */ - class_call(array_integrate_spline_table_line_to_line(tau_table_growing, - pth->tt_size, - pth->thermodynamics_table, - pth->th_size, - pth->index_th_ddkappa, - pth->index_th_dddkappa, - pth->index_th_g, - pth->error_message), - pth->error_message, - pth->error_message); - free(tau_table_growing); + /* compute integral and store temporarily in column "g" */ + class_call(array_integrate_spline_table_line_to_line(tau_table_growing, + pth->tt_size, + pth->thermodynamics_table, + pth->th_size, + pth->index_th_ddkappa, + pth->index_th_dddkappa, + pth->index_th_g, + pth->error_message), + pth->error_message, + pth->error_message); - /* an analytic calculation shows that in the early - radiation-dominated and ionized universe, when kappa' is - proportional to (1+z)^2 and tau is proportional to the scale - factor, r_d^2 is equal to eta/(3 kappa'). So [r_d,ini^2] = - [tau_ini/3/kappa'_ini] should be added to the integral in - order to account for the integration between 0 and tau_ini */ + free(tau_table_growing); - /* compute r_d */ - for (index_tau=0; index_tau < pth->tt_size; index_tau++) { + /* we could now write the result as r_d = 2pi * sqrt(integral), + but we will first better acount for the contribution frokm the tau_ini boundary. + Close to this boundary, R=0 and the integrand is just 16/(15*6)/kappa' + Using kappa' propto 1/a^2 and tau propro a during RD, we get the analytic result: + int_0^{tau_ini} dtau / kappa' = tau_ini / 3 / kappa'_ini + Thus r_d = 2pi * sqrt( 16/(15*6*3) * (tau_ini/ kappa'_ini) * integral) */ - pth->thermodynamics_table[index_tau*pth->th_size+pth->index_th_r_d] = - sqrt(tau_table[pth->tt_size-1]/3./pth->thermodynamics_table[(pth->tt_size-1)*pth->th_size+pth->index_th_dkappa] - +pth->thermodynamics_table[(pth->tt_size-1-index_tau)*pth->th_size+pth->index_th_g]); + tau_ini = tau_table[pth->tt_size-1]; + dkappa_ini = pth->thermodynamics_table[(pth->tt_size-1)*pth->th_size+pth->index_th_dkappa]; - } + for (index_tau=0; index_tau < pth->tt_size; index_tau++) { - } + pth->thermodynamics_table[index_tau*pth->th_size+pth->index_th_r_d] = + 2.*_PI_*sqrt(16./(15.*6.*3.)*tau_ini/dkappa_ini + +pth->thermodynamics_table[(pth->tt_size-1-index_tau)*pth->th_size+pth->index_th_g]); + } + + } // end of damping scale calculation /** - --> second derivative with respect to tau of dkappa (in view of spline interpolation) */ class_call(array_spline_table_line_to_line(tau_table, @@ -595,8 +742,6 @@ int thermodynamics_init( pth->error_message); } - free(tau_table); - /** - --> compute visibility: \f$ g= (d \kappa/d \tau) e^{- \kappa} \f$ */ /* loop on z (decreasing z, increasing time) */ @@ -642,6 +787,20 @@ int thermodynamics_init( +fabs(pth->thermodynamics_table[index_tau*pth->th_size+pth->index_th_dddkappa]/ pth->thermodynamics_table[index_tau*pth->th_size+pth->index_th_dkappa])); + /* - ---> restore correct sign for idm_dr and idr optical depth, and calculate idm_dr visibility function */ + if(pba->has_idm_dr == _TRUE_){ + + /* restore the correct sign for tau_idm_dr */ + pth->thermodynamics_table[index_tau*pth->th_size+pth->index_th_tau_idm_dr] *= -1.; + + /* restore the correct sign for tau_idr */ + pth->thermodynamics_table[index_tau*pth->th_size+pth->index_th_tau_idr] *= -1.; + + /* visibility function for idm_dr : g_idm_dr = [Sinv*dmu_idm_dr] * exp(-tau_idm_dr) */ + pth->thermodynamics_table[index_tau*pth->th_size+pth->index_th_g_idm_dr] = + pth->thermodynamics_table[index_tau*pth->th_size+pth->index_th_ddmu_idm_dr] + * exp(-pth->thermodynamics_table[index_tau*pth->th_size+pth->index_th_tau_idm_dr]); + } } /** - smooth the rate (details of smoothing unimportant: only the @@ -655,6 +814,176 @@ int thermodynamics_init( pth->error_message, pth->error_message); + /* - ---> fill columns for ddmu_idm_dr and dddmu_idm_dr with true values, and compute idm_dr temperature and sound speed */ + if(pba->has_idm_dr == _TRUE_){ + + /** - --> second derivative with respect to tau of dmu_idm_dr (in view of spline interpolation) */ + class_call(array_spline_table_line_to_line(tau_table, + pth->tt_size, + pth->thermodynamics_table, + pth->th_size, + pth->index_th_dmu_idm_dr, + pth->index_th_dddmu_idm_dr, + _SPLINE_EST_DERIV_, + pth->error_message), + pth->error_message, + pth->error_message); + + /** - --> first derivative with respect to tau of dmu_idm_dr (using spline interpolation) */ + class_call(array_derive_spline_table_line_to_line(tau_table, + pth->tt_size, + pth->thermodynamics_table, + pth->th_size, + pth->index_th_dmu_idm_dr, + pth->index_th_dddmu_idm_dr, + pth->index_th_ddmu_idm_dr, + pth->error_message), + pth->error_message, + pth->error_message); + + /** - --> now compute idm_dr temperature and sound speed in various regimes */ + + /* (A) - initial value of T_idm_dr at the maximum z (minimum tau) */ + + z = pth->z_table[pth->tt_size-1]; + + class_call(background_tau_of_z(pba,z,&(tau)), + pba->error_message, + pth->error_message); + + class_call(background_at_tau(pba,tau, pba->short_info, pba->inter_normal, &last_index_back, pvecback), + pba->error_message, + pth->error_message); + + Gamma_heat_idm_dr = 2.*pba->Omega0_idr*pow(pba->h,2)*pth->a_idm_dr*pow((1.+z),(pth->nindex_idm_dr+1.))/pow(1.e7,pth->nindex_idm_dr); + + /* (A1) --> if Gamma is not much smaller than H, set T_idm_dr to T_idm_dr = T_idr = xi*T_gamma (tight coupling solution) */ + if(Gamma_heat_idm_dr > 1.e-3 * pvecback[pba->index_bg_a]*pvecback[pba->index_bg_H]){ + T_idm_dr = pba->T_idr*(1.+z); + dTdz_idm_dr = pba->T_idr; + } + + /* (A2) --> otherwise, if Gamma << H, set initial T_idm_dr to the + approximate analytic solution (Gamma/aH)/(1+(Gamma/aH)*T_idr) + (eq. (A62) in ETHOS I ) */ + else { + T_idr = pba->T_idr*(1.+z); + T_idm_dr = Gamma_heat_idm_dr/(pvecback[pba->index_bg_a]*pvecback[pba->index_bg_H]) + /(1. + Gamma_heat_idm_dr/(pvecback[pba->index_bg_a]*pvecback[pba->index_bg_H]))*T_idr; + dTdz_idm_dr = 2.*T_idm_dr - Gamma_heat_idm_dr/pvecback[pba->index_bg_H] * (T_idr - T_idm_dr); + } + + pth->thermodynamics_table[(pth->tt_size-1)*pth->th_size+pth->index_th_Tidm_dr] = T_idm_dr; + pth->thermodynamics_table[(pth->tt_size-1)*pth->th_size+pth->index_th_cidm_dr2] = _k_B_*T_idm_dr/_eV_/pth->m_idm*(1.+dTdz_idm_dr/3./T_idm_dr); + + /* T_adia and z_adia will be used later. They are defined as "the + last T_idm_dr(z) at which the temperature was evaluated + explicitely, rather than scaled like a^{-2} (decoupled DM + regime)". Here we just initialize them. They will be updated + each time that we recompte T_idm_dr explicitely. */ + T_adia = T_idm_dr; + z_adia = z; + + /* (B) - iterate over growing tau / decreasing z to find other + values. At each new z we need to compute the following + quantities: T_idr, T_idm_dr, Gamma_heat_idm_dr, a, H, dT_idm_dr,/dz, + c_s_idm_dr^2. They all needed to be known from step to step, even + if the final goal is only to store T_idm_dr, c_s_idm^2 */ + for (index_tau=pth->tt_size-2; index_tau>=0; index_tau--) { + + /* (B1) --> tight-coupling solution: Gamma >> H implies T_idm_dr=T_idr=xi*T_gamma */ + if(Gamma_heat_idm_dr > 1.e3 * pvecback[pba->index_bg_a]*pvecback[pba->index_bg_H]){ + z = pth->z_table[index_tau]; + T_idr = pba->T_idr*(1.+z); + T_idm_dr = T_idr; + Gamma_heat_idm_dr = 2.*pba->Omega0_idr*pow(pba->h,2)*pth->a_idm_dr*pow((1.+z),(pth->nindex_idm_dr+1.))/pow(1.e7,pth->nindex_idm_dr); + class_call(background_tau_of_z(pba,z,&(tau)), + pba->error_message, + pth->error_message); + class_call(background_at_tau(pba,tau, pba->short_info, pba->inter_normal, &last_index_back, pvecback), + pba->error_message, + pth->error_message); + dTdz_idm_dr =pba->T_idr; + } + + /* (B2) --> intermediate solution: integrate differential equation equation dT_idm_dr/dz = 2 a T_DM - Gamma/H (T_idr - T_idm_dr) */ + else if (Gamma_heat_idm_dr > 1.e-3 * pvecback[pba->index_bg_a]*pvecback[pba->index_bg_H]) { + + dz = pth->z_table[index_tau+1] - pth->z_table[index_tau]; + + /* (B2a) ----> if dz << H/Gamma the equation is not too stiff and the traditional forward Euler method converges */ + if (dz < pvecback[pba->index_bg_H]/Gamma_heat_idm_dr/10.) { + z = pth->z_table[index_tau]; + T_idr = pba->T_idr*(1.+z); + T_idm_dr -= dTdz_idm_dr*dz; + Gamma_heat_idm_dr = 2.*pba->Omega0_idr*pow(pba->h,2)*pth->a_idm_dr*pow((1.+z),(pth->nindex_idm_dr+1.))/pow(1.e7,pth->nindex_idm_dr); + class_call(background_tau_of_z(pba,z,&(tau)), + pba->error_message, + pth->error_message); + class_call(background_at_tau(pba,tau, pba->short_info, pba->inter_normal, &last_index_back, pvecback), + pba->error_message, + pth->error_message); + dTdz_idm_dr = 2.*pvecback[pba->index_bg_a]*T_idm_dr-Gamma_heat_idm_dr/(pvecback[pba->index_bg_H])*(T_idr-T_idm_dr); + } + + /* (B2b) ----> otherwise, the equation is too stiff and the + traditional forward Euler method diverges with this + stepsize. But we can just decreasee dz to bring it back + well within the convergence radius H/Gamma of the + equation. */ + else { + N_sub_steps = (int)(dz/ (pvecback[pba->index_bg_H]/Gamma_heat_idm_dr/10.))+1; + dz_sub_step = dz/N_sub_steps; + + /* loop over sub-steps */ + for (n=0; nz_table[index_tau]; + + T_idr = pba->T_idr*(1.+z); + T_idm_dr -= dTdz_idm_dr*dz_sub_step; + Gamma_heat_idm_dr = 2.*pba->Omega0_idr*pow(pba->h,2)*pth->a_idm_dr*pow((1.+z),(pth->nindex_idm_dr+1.))/pow(1.e7,pth->nindex_idm_dr); + class_call(background_tau_of_z(pba,z,&(tau)), + pba->error_message, + pth->error_message); + class_call(background_at_tau(pba,tau, pba->short_info, pba->inter_normal, &last_index_back, pvecback), + pba->error_message, + pth->error_message); + dTdz_idm_dr = 2.*pvecback[pba->index_bg_a]*T_idm_dr-Gamma_heat_idm_dr/(pvecback[pba->index_bg_H])*(T_idr-T_idm_dr); + } + } + + /* update T_adia, z_adia */ + T_adia = T_idm_dr; + z_adia = z; + } + + /* (B3) --> decoupled solution: T_idm_dr scales like a^-2 */ + else { + z = pth->z_table[index_tau]; + T_idr = pba->T_idr*(1.+z); + T_idm_dr = T_adia * pow((1.+z)/(1.+z_adia),2); + Gamma_heat_idm_dr = 2.*pba->Omega0_idr*pow(pba->h,2)*pth->a_idm_dr*pow((1.+z),(pth->nindex_idm_dr+1.))/pow(1.e7,pth->nindex_idm_dr); + class_call(background_tau_of_z(pba,z,&(tau)), + pba->error_message, + pth->error_message); + class_call(background_at_tau(pba,tau, pba->short_info, pba->inter_normal, &last_index_back, pvecback), + pba->error_message, + pth->error_message); + dTdz_idm_dr = 2./(1+z)*T_idm_dr; + } + + pth->thermodynamics_table[index_tau*pth->th_size+pth->index_th_Tidm_dr] = T_idm_dr; + pth->thermodynamics_table[index_tau*pth->th_size+pth->index_th_cidm_dr2] = _k_B_*T_idm_dr/_eV_/pth->m_idm*(1.+dTdz_idm_dr/3./T_idm_dr); + } + } + + free(tau_table); + /** - fill tables of second derivatives with respect to z (in view of spline interpolation) */ class_call(array_spline_table_lines(pth->z_table, @@ -730,8 +1059,8 @@ int thermodynamics_init( pba->error_message, pth->error_message); - while (1./pth->thermodynamics_table[(index_tau)*pth->th_size+pth->index_th_dkappa]/tau - < ppr->radiation_streaming_trigger_tau_c_over_tau) { + while ((1./pth->thermodynamics_table[(index_tau)*pth->th_size+pth->index_th_dkappa]/tau < ppr->radiation_streaming_trigger_tau_c_over_tau) + && (index_tau>0)) { index_tau--; @@ -743,6 +1072,90 @@ int thermodynamics_init( pth->tau_free_streaming = tau; + /** - Find interacting dark radiation free-streaming time */ + index_tau_fs = index_tau; + + if(pba->has_idr == _TRUE_) { + + if(pba->has_idm_dr == _TRUE_) { + + if(pth->nindex_idm_dr>=2){ + index_tau=index_tau_fs-1; + /* comment: using index_tau_max (index_tau_fs) instead of pth->tt_size-1 ensures that the switch is always after recombination (free streaming) */ + } + else{ + index_tau=0; + } + + class_call(background_tau_of_z(pba,pth->z_table[index_tau],&tau), + pba->error_message, + pth->error_message); + + while ((1./pth->thermodynamics_table[(index_tau)*pth->th_size+pth->index_th_dmu_idm_dr]/tau + < ppr->idr_streaming_trigger_tau_c_over_tau) && + ((pth->nindex_idm_dr >= 2 && index_tau > 0) || + (pth->nindex_idm_dr < 2 && index_tau < pth->tt_size-1))) { + + if(pth->nindex_idm_dr>=2){ + index_tau--; + } + else{ + index_tau++; + } + + class_call(background_tau_of_z(pba,pth->z_table[index_tau],&tau), + pba->error_message, + pth->error_message); + + } + + tau_idm_dr_fs = tau; + pth->tau_idr_free_streaming = tau; + } + + /* case of idr alone without idm_dr */ + else { + index_tau=index_tau_fs-1; + class_call(background_tau_of_z(pba,pth->z_table[index_tau],&tau), + pba->error_message, + pth->error_message) + tau_idm_dr_fs = tau; + pth->tau_idr_free_streaming = tau; + } + } + + /** - find z_star (when optical depth kappa crosses one, using linear + interpolation) and sound horizon at that time */ + + index_tau=0; + while ((pth->thermodynamics_table[(index_tau)*pth->th_size+pth->index_th_exp_m_kappa] > 1./_E_) && (index_tau < pth->tt_size)) + index_tau++; + + pth->z_star = pth->z_table[index_tau-1]+ + (1./_E_-pth->thermodynamics_table[(index_tau-1)*pth->th_size+pth->index_th_exp_m_kappa]) + /(pth->thermodynamics_table[(index_tau)*pth->th_size+pth->index_th_exp_m_kappa]-pth->thermodynamics_table[(index_tau-1)*pth->th_size+pth->index_th_exp_m_kappa]) + *(pth->z_table[index_tau]-pth->z_table[index_tau-1]); + + class_call(background_tau_of_z(pba,pth->z_star,&(pth->tau_star)), + pba->error_message, + pth->error_message); + + class_call(background_at_tau(pba,pth->tau_star, pba->long_info, pba->inter_normal, &last_index_back, pvecback), + pba->error_message, + pth->error_message); + + pth->rs_star=pvecback[pba->index_bg_rs]; + pth->ds_star=pth->rs_star*pba->a_today/(1.+pth->z_star); + pth->da_star=pvecback[pba->index_bg_ang_distance]; + pth->ra_star=pth->da_star*(1.+pth->z_star)/pba->a_today; + + if (pth->compute_damping_scale == _TRUE_) { + + pth->rd_star = (pth->z_table[index_tau+1]-pth->z_star)/(pth->z_table[index_tau+1]-pth->z_table[index_tau])*pth->thermodynamics_table[(index_tau)*pth->th_size+pth->index_th_r_d] + +(pth->z_star-pth->z_table[index_tau])/(pth->z_table[index_tau+1]-pth->z_table[index_tau])*pth->thermodynamics_table[(index_tau+1)*pth->th_size+pth->index_th_r_d]; + + } + /** - find baryon drag time (when tau_d crosses one, using linear interpolation) and sound horizon at that time */ @@ -766,6 +1179,39 @@ int thermodynamics_init( pth->rs_d=pvecback[pba->index_bg_rs]; pth->ds_d=pth->rs_d*pba->a_today/(1.+pth->z_d); + /** - find idm_dr and idr drag times */ + if(pba->has_idm_dr == _TRUE_){ + + if((pth->thermodynamics_table[(pth->tt_size-1)*pth->th_size+pth->index_th_tau_idm_dr]>1.) && (pth->thermodynamics_table[(pth->tt_size-1)*pth->th_size+pth->index_th_tau_idr]>1.)){ + index_tau=0; + + while ((pth->thermodynamics_table[(index_tau)*pth->th_size+pth->index_th_tau_idm_dr] < 1.) && (index_tau < pth->tt_size-1)) + index_tau++; + + z_idm_dr = pth->z_table[index_tau-1]+(1.-pth->thermodynamics_table[(index_tau-1)*pth->th_size+pth->index_th_tau_idm_dr]) + /(pth->thermodynamics_table[(index_tau)*pth->th_size+pth->index_th_tau_idm_dr]-pth->thermodynamics_table[(index_tau-1)*pth->th_size+pth->index_th_tau_idm_dr]) + *(pth->z_table[index_tau]-pth->z_table[index_tau-1]); + + class_call(background_tau_of_z(pba,z_idm_dr,&(tau_idm_dr)), + pba->error_message, + pth->error_message); + + index_tau=0; + + while ((pth->thermodynamics_table[(index_tau)*pth->th_size+pth->index_th_tau_idr] < 1.) && (index_tau < pth->tt_size-1)) + index_tau++; + + z_idr = pth->z_table[index_tau-1]+ + (1.-pth->thermodynamics_table[(index_tau-1)*pth->th_size+pth->index_th_tau_idr]) + /(pth->thermodynamics_table[(index_tau)*pth->th_size+pth->index_th_tau_idr]-pth->thermodynamics_table[(index_tau-1)*pth->th_size+pth->index_th_tau_idr]) + *(pth->z_table[index_tau]-pth->z_table[index_tau-1]); + + class_call(background_tau_of_z(pba,z_idr,&(tau_idr)), + pba->error_message, + pth->error_message); + } + } + /** - find time above which visibility falls below a given fraction of its maximum */ index_tau=index_tau_max; @@ -781,7 +1227,17 @@ int thermodynamics_init( /** - if verbose flag set to next-to-minimum value, print the main results */ if (pth->thermodynamics_verbose > 0) { - printf(" -> recombination at z = %f\n",pth->z_rec); + + if(pba->has_idm_dr == _TRUE_) { + if((pth->thermodynamics_table[(pth->tt_size-1)*pth->th_size+pth->index_th_tau_idm_dr]>1.) && (pth->thermodynamics_table[(pth->tt_size-1)*pth->th_size+pth->index_th_tau_idr]>1.)){ + printf(" -> idr decouples at tau_idr = %e Mpc\n",tau_idr); + printf(" -> idm_dr decouples at tau_idm_dr = %e Mpc\n",tau_idm_dr); + } + else{ + printf(" -> computation of decoupling time of idm_dr and idr skipped, because z would not be in z_table\n"); + } + } + printf(" -> recombination at z = %f (max of visibility function)\n",pth->z_rec); printf(" corresponding to conformal time = %f Mpc\n",pth->tau_rec); printf(" with comoving sound horizon = %f Mpc\n",pth->rs_rec); printf(" angular diameter distance = %f Mpc\n",pth->da_rec); @@ -790,6 +1246,8 @@ int thermodynamics_init( printf(" and with comoving photon damping scale = %f Mpc\n",pth->rd_rec); printf(" or comoving damping wavenumber k_d = %f 1/Mpc\n",2.*_PI_/pth->rd_rec); } + printf(" Thomson optical depth crosses one at z_* = %f\n",pth->z_star); + printf(" giving an angle 100*theta_* = %f\n",100.*pth->rs_star/pth->ra_star); printf(" -> baryon drag stops at z = %f\n",pth->z_d); printf(" corresponding to conformal time = %f Mpc\n",pth->tau_d); printf(" with comoving sound horizon rs = %f Mpc\n",pth->rs_d); @@ -809,10 +1267,17 @@ int thermodynamics_init( if (pth->reio_parametrization == reio_many_tanh) { printf(" -> many-step reionization gives optical depth = %f\n",pth->tau_reio); } + if (pth->reio_parametrization == reio_inter) { + printf(" -> interpolated reionization history gives optical depth = %f\n",pth->tau_reio); + } if (pth->thermodynamics_verbose > 1) { printf(" -> free-streaming approximation can be turned on as soon as tau=%g Mpc\n", pth->tau_free_streaming); } + if ((pba->has_idr)&&(pth->thermodynamics_verbose > 1)) { + printf(" -> dark free-streaming approximation can be turned on as soon as tau=%g Mpc\n", + tau_idm_dr_fs); + } } free(pvecback); @@ -844,6 +1309,7 @@ int thermodynamics_free( * as well as in vector containing reionization parameters. * * + * @param pba Input: pointer to background structure * @param pth Input/Output: pointer to thermo structure * @param preco Input/Output: pointer to recombination structure * @param preio Input/Output: pointer to reionization structure @@ -851,6 +1317,7 @@ int thermodynamics_free( */ int thermodynamics_indices( + struct background * pba, struct thermo * pth, struct recombination * preco, struct reionization * preio @@ -886,9 +1353,32 @@ int thermodynamics_indices( index++; pth->index_th_Tb = index; index++; + pth->index_th_wb = index; + index++; pth->index_th_cb2 = index; index++; + if(pba->has_idm_dr == _TRUE_){ + pth->index_th_dmu_idm_dr = index; + index++; + pth->index_th_ddmu_idm_dr = index; + index++; + pth->index_th_dddmu_idm_dr = index; + index++; + pth->index_th_tau_idm_dr = index; + index++; + pth->index_th_tau_idr = index; + index++; + pth->index_th_g_idm_dr = index; + index++; + pth->index_th_cidm_dr2 = index; + index++; + pth->index_th_Tidm_dr = index; + index++; + pth->index_th_dmu_idr = index; + index++; + } + /* derivatives of baryon sound speed (only computed if some non-minimal tight-coupling schemes is requested) */ if (pth->compute_cb2_derivatives == _TRUE_) { pth->index_th_dcb2 = index; @@ -919,6 +1409,8 @@ int thermodynamics_indices( index++; preco->index_re_Tb = index; index++; + preco->index_re_wb = index; + index++; preco->index_re_cb2 = index; index++; @@ -934,6 +1426,8 @@ int thermodynamics_indices( index++; preio->index_re_Tb = index; index++; + preio->index_re_wb = index; + index++; preio->index_re_cb2 = index; index++; preio->index_re_dkappadtau = index; @@ -991,7 +1485,6 @@ int thermodynamics_indices( preio->index_reio_step_sharpness = index; index++; - preio->reio_num_params = index; } /* case where x_e(z) has many tanh jumps */ @@ -1010,7 +1503,18 @@ int thermodynamics_indices( preio->index_reio_step_sharpness = index; index++; - preio->reio_num_params = index; + } + + /* case where x_e(z) must be interpolated */ + if (pth->reio_parametrization == reio_inter) { + + preio->reio_num_z=pth->reio_inter_num; + + preio->index_reio_first_z = index; + index+= preio->reio_num_z; + preio->index_reio_first_xe = index; + index+= preio->reio_num_z; + } preio->reio_num_params = index; @@ -1086,8 +1590,8 @@ int thermodynamics_helium_from_bbn( pth->error_message); Neff_bbn = (pvecback[pba->index_bg_Omega_r] - *pvecback[pba->index_bg_rho_crit] - -pvecback[pba->index_bg_rho_g]) + *pvecback[pba->index_bg_rho_crit] + -pvecback[pba->index_bg_rho_g]) /(7./8.*pow(4./11.,4./3.)*pvecback[pba->index_bg_rho_g]); free(pvecback); @@ -1176,25 +1680,29 @@ int thermodynamics_helium_from_bbn( omega_b=pba->Omega0_b*pba->h*pba->h; - class_test(omega_b < omegab[0], - pth->error_message, - "You have asked for an unrealistic small value omega_b = %e. The corresponding value of the primordial helium fraction cannot be found in the interpolation table. If you really want this value, you should fix YHe to a given value rather than to BBN", - omega_b); - - class_test(omega_b > omegab[num_omegab-1], - pth->error_message, - "You have asked for an unrealistic high value omega_b = %e. The corresponding value of the primordial helium fraction cannot be found in the interpolation table. If you really want this value, you should fix YHe to a given value rather than to BBN", - omega_b); - - class_test(DeltaNeff < deltaN[0], - pth->error_message, - "You have asked for an unrealistic small value of Delta N_eff = %e. The corresponding value of the primordial helium fraction cannot be found in the interpolation table. If you really want this value, you should fix YHe to a given value rather than to BBN", - DeltaNeff); - - class_test(DeltaNeff > deltaN[num_deltaN-1], - pth->error_message, - "You have asked for an unrealistic high value of Delta N_eff = %e. The corresponding value of the primordial helium fraction cannot be found in the interpolation table. If you really want this value, you should fix YHe to a given value rather than to BBN", - DeltaNeff); + class_test_except(omega_b < omegab[0], + pth->error_message, + free(omegab);free(deltaN);free(YHe);free(ddYHe);free(YHe_at_deltaN);free(ddYHe_at_deltaN), + "You have asked for an unrealistic small value omega_b = %e. The corresponding value of the primordial helium fraction cannot be found in the interpolation table. If you really want this value, you should fix YHe to a given value rather than to BBN", + omega_b); + + class_test_except(omega_b > omegab[num_omegab-1], + pth->error_message, + free(omegab);free(deltaN);free(YHe);free(ddYHe);free(YHe_at_deltaN);free(ddYHe_at_deltaN), + "You have asked for an unrealistic high value omega_b = %e. The corresponding value of the primordial helium fraction cannot be found in the interpolation table. If you really want this value, you should fix YHe to a given value rather than to BBN", + omega_b); + + class_test_except(DeltaNeff < deltaN[0], + pth->error_message, + free(omegab);free(deltaN);free(YHe);free(ddYHe);free(YHe_at_deltaN);free(ddYHe_at_deltaN), + "You have asked for an unrealistic small value of Delta N_eff = %e. The corresponding value of the primordial helium fraction cannot be found in the interpolation table. If you really want this value, you should fix YHe to a given value rather than to BBN", + DeltaNeff); + + class_test_except(DeltaNeff > deltaN[num_deltaN-1], + pth->error_message, + free(omegab);free(deltaN);free(YHe);free(ddYHe);free(YHe_at_deltaN);free(ddYHe_at_deltaN), + "You have asked for an unrealistic high value of Delta N_eff = %e. The corresponding value of the primordial helium fraction cannot be found in the interpolation table. If you really want this value, you should fix YHe to a given value rather than to BBN", + DeltaNeff); /** - interpolate in one dimension (along deltaN) */ class_call(array_interpolate_spline(deltaN, @@ -1296,7 +1804,7 @@ int thermodynamics_onthespot_energy_injection( +pow(log((preco->annihilation_zmin+1.)/(preco->annihilation_zmax+1.)),2))); } - rho_cdm_today = pow(pba->H0*_c_/_Mpc_over_m_,2)*3/8./_PI_/_G_*pba->Omega0_cdm*_c_*_c_; /* energy density in J/m^3 */ + rho_cdm_today = pow(pba->H0*_c_/_Mpc_over_m_,2)*3/8./_PI_/_G_*(pba->Omega0_idm_dr+pba->Omega0_cdm)*_c_*_c_; /* energy density in J/m^3 */ u_min = (1+z)/(1+preco->annihilation_z_halo); @@ -1349,7 +1857,7 @@ int thermodynamics_energy_injection( nH0 = 3.*preco->H0*preco->H0*pba->Omega0_b/(8.*_PI_*_G_*_m_H_)*(1.-preco->YHe); /* factor = c sigma_T n_H(0) / (H(0) \sqrt(Omega_m)) (dimensionless) */ - factor = _sigma_ * nH0 / pba->H0 * _Mpc_over_m_ / sqrt(pba->Omega0_b+pba->Omega0_cdm); + factor = _sigma_ * nH0 / pba->H0 * _Mpc_over_m_ / sqrt(pba->Omega0_b+pba->Omega0_cdm+pba->Omega0_idm_dr); /* integral over z'(=zp) with step dz */ dz=1.; @@ -1514,14 +2022,14 @@ int thermodynamics_reionization_function( been replaced by the simpler and more robust expression below. - *xe = preio->reionization_parameters[preio->index_reio_first_xe+i] - +0.5*(tanh((2.*(z-preio->reionization_parameters[preio->index_reio_first_z+i]) - /(preio->reionization_parameters[preio->index_reio_first_z+i+1] - -preio->reionization_parameters[preio->index_reio_first_z+i])-1.) - /preio->reionization_parameters[preio->index_reio_step_sharpness]) - /tanh(1./preio->reionization_parameters[preio->index_reio_step_sharpness])+1.) - *(preio->reionization_parameters[preio->index_reio_first_xe+i+1] - -preio->reionization_parameters[preio->index_reio_first_xe+i]); + *xe = preio->reionization_parameters[preio->index_reio_first_xe+i] + +0.5*(tanh((2.*(z-preio->reionization_parameters[preio->index_reio_first_z+i]) + /(preio->reionization_parameters[preio->index_reio_first_z+i+1] + -preio->reionization_parameters[preio->index_reio_first_z+i])-1.) + /preio->reionization_parameters[preio->index_reio_step_sharpness]) + /tanh(1./preio->reionization_parameters[preio->index_reio_step_sharpness])+1.) + *(preio->reionization_parameters[preio->index_reio_first_xe+i+1] + -preio->reionization_parameters[preio->index_reio_first_xe+i]); */ /* compute the central redshift value of the tanh jump */ @@ -1591,6 +2099,54 @@ int thermodynamics_reionization_function( } + /** - implementation of reio_inter */ + + if (pth->reio_parametrization == reio_inter) { + + /** - --> case z > z_reio_start */ + + if (z > preio->reionization_parameters[preio->index_reio_first_z+preio->reio_num_z-1]) { + *xe = preio->reionization_parameters[preio->index_reio_first_xe+preio->reio_num_z-1]; + class_stop(pth->error_message,"Check: is it normal that we are here?"); + } + + else { + + i=0; + while (preio->reionization_parameters[preio->index_reio_first_z+i+1] < z) i++; + + double z_min = preio->reionization_parameters[preio->index_reio_first_z+i]; + double z_max = preio->reionization_parameters[preio->index_reio_first_z+i+1]; + + class_test(zerror_message, + ""); + + class_test(z>z_max, + pth->error_message, + ""); + + double x=(z-preio->reionization_parameters[preio->index_reio_first_z+i]) + /(preio->reionization_parameters[preio->index_reio_first_z+i+1] + -preio->reionization_parameters[preio->index_reio_first_z+i]); + + *xe = preio->reionization_parameters[preio->index_reio_first_xe+i] + + x*(preio->reionization_parameters[preio->index_reio_first_xe+i+1] + -preio->reionization_parameters[preio->index_reio_first_xe+i]); + + class_test(*xe<0., + pth->error_message, + "%e %e %e\n", + x, + preio->reionization_parameters[preio->index_reio_first_xe+i], + preio->reionization_parameters[preio->index_reio_first_xe+i+1]); + + } + + return _SUCCESS_; + + } + class_test(0 == 0, pth->error_message, "value of reio_parametrization=%d unclear",pth->reio_parametrization); @@ -1668,6 +2224,7 @@ int thermodynamics_reionization( double z_sup,z_mid,z_inf; double tau_sup,tau_mid,tau_inf; int bin; + int point; double xe_input,xe_actual; /** - allocate the vector of parameters defining the function \f$ X_e(z) \f$ */ @@ -1785,9 +2342,10 @@ int thermodynamics_reionization( tau_sup=preio->reionization_optical_depth; - class_test(tau_sup < pth->tau_reio, - pth->error_message, - "parameters are such that reionization cannot start after z_start_max"); + class_test_except(tau_sup < pth->tau_reio, + pth->error_message, + free(preio->reionization_parameters);free(preio->reionization_table), + "parameters are such that reionization cannot start after z_start_max"); /* lower value */ @@ -1861,6 +2419,8 @@ int thermodynamics_reionization( } + /** - (b) if reionization implemented with reio_bins_tanh scheme */ + if (pth->reio_parametrization == reio_bins_tanh) { /* this algorithm requires at least two bin centers (i.e. at least @@ -1894,7 +2454,7 @@ int thermodynamics_reionization( preio->reionization_parameters[preio->index_reio_first_z+preio->reio_num_z-1] = preio->reionization_parameters[preio->index_reio_first_z+preio->reio_num_z-2] +2.*(preio->reionization_parameters[preio->index_reio_first_z+preio->reio_num_z-2] - -preio->reionization_parameters[preio->index_reio_first_z+preio->reio_num_z-3]); + -preio->reionization_parameters[preio->index_reio_first_z+preio->reio_num_z-3]); /* copy this value in reio_start */ preio->reionization_parameters[preio->index_reio_start] = preio->reionization_parameters[preio->index_reio_first_z+preio->reio_num_z-1]; @@ -1917,9 +2477,9 @@ int thermodynamics_reionization( /* check it's not too small */ /* 6.06.2015: changed this test to simply imposing that the first z is at least zero */ /* - class_test(preio->reionization_parameters[preio->index_reio_first_z] < 0, - pth->error_message, - "final redshift for reionization = %e, you must change the binning or redefine the way in which the code extrapolates below the first value of z_i",preio->reionization_parameters[preio->index_reio_first_z]); + class_test(preio->reionization_parameters[preio->index_reio_first_z] < 0, + pth->error_message, + "final redshift for reionization = %e, you must change the binning or redefine the way in which the code extrapolates below the first value of z_i",preio->reionization_parameters[preio->index_reio_first_z]); */ if (preio->reionization_parameters[preio->index_reio_first_z] < 0) { preio->reionization_parameters[preio->index_reio_first_z] = 0.; @@ -1951,6 +2511,8 @@ int thermodynamics_reionization( } + /** - (c) if reionization implemented with reio_many_tanh scheme */ + if (pth->reio_parametrization == reio_many_tanh) { /* this algorithm requires at least one jump centers */ @@ -2066,6 +2628,97 @@ int thermodynamics_reionization( } + /** - (d) if reionization implemented with reio_inter scheme */ + + if (pth->reio_parametrization == reio_inter) { + + /* this parametrization requires at least one point (z,xe) */ + class_test(pth->reio_inter_num<1, + pth->error_message, + "current implementation of reio_inter requires at least one point (z,xe)"); + + /* this parametrization requires that the first z value is zero */ + class_test(pth->reio_inter_z[0] != 0., + pth->error_message, + "For reio_inter scheme, the first value of reio_inter_z[...] should always be zero, you passed %e", + pth->reio_inter_z[0]); + + /* check that z input can be interpreted by the code */ + for (point=1; pointreio_inter_num; point++) { + class_test(pth->reio_inter_z[point-1]>=pth->reio_inter_z[point], + pth->error_message, + "value of reionization bin centers z_i expected to be passed in growing order, unlike: %e, %e", + pth->reio_inter_z[point-1], + pth->reio_inter_z[point]); + } + + /* this parametrization requires that the last x_i value is zero + (the code will substitute it with the value that one would get in + absence of reionization, as compute by the recombination code) */ + class_test(pth->reio_inter_xe[pth->reio_inter_num-1] != 0., + pth->error_message, + "For reio_inter scheme, the last value of reio_inter_xe[...] should always be zero, you passed %e", + pth->reio_inter_xe[pth->reio_inter_num-1]); + + /* copy here the (z,xe) values passed in input. */ + + for (point=0; pointreio_num_z; point++) { + + preio->reionization_parameters[preio->index_reio_first_z+point] = pth->reio_inter_z[point]; + + /* check that xe input can be interpreted by the code */ + xe_input = pth->reio_inter_xe[point]; + if (xe_input >= 0.) { + xe_actual = xe_input; + } + //-1 means "after hydrogen + first helium recombination" + else if ((xe_input<-0.9) && (xe_input>-1.1)) { + xe_actual = 1. + pth->YHe/(_not4_*(1.-pth->YHe)); + } + //-2 means "after hydrogen + second helium recombination" + else if ((xe_input<-1.9) && (xe_input>-2.1)) { + xe_actual = 1. + 2.*pth->YHe/(_not4_*(1.-pth->YHe)); + } + //other negative number is nonsense + else { + class_stop(pth->error_message, + "Your entry for reio_inter_xe[%d] is %e, this makes no sense (either positive or 0,-1,-2)", + point,pth->reio_inter_xe[point]); + } + + preio->reionization_parameters[preio->index_reio_first_xe+point] = xe_actual; + } + + /* copy highest redshift in reio_start */ + preio->reionization_parameters[preio->index_reio_start] = preio->reionization_parameters[preio->index_reio_first_z+preio->reio_num_z-1]; + + /* check it's not too big */ + class_test(preio->reionization_parameters[preio->index_reio_start] > ppr->reionization_z_start_max, + pth->error_message, + "starting redshift for reionization = %e, reionization_z_start_max = %e, you must change the binning or increase reionization_z_start_max", + preio->reionization_parameters[preio->index_reio_start], + ppr->reionization_z_start_max); + + /* infer xe before reio */ + class_call(thermodynamics_get_xe_before_reionization(ppr, + pth, + preco, + preio->reionization_parameters[preio->index_reio_first_z+preio->reio_num_z-1], + &(preio->reionization_parameters[preio->index_reio_first_xe+preio->reio_num_z-1])), + pth->error_message, + pth->error_message); + + /* fill reionization table */ + class_call(thermodynamics_reionization_sample(ppr,pba,pth,preco,preio,pvecback), + pth->error_message, + pth->error_message); + + pth->tau_reio=preio->reionization_optical_depth; + + return _SUCCESS_; + + } + class_test(0 == 0, pth->error_message, "value of reio_z_or_tau=%d unclear",pth->reio_z_or_tau); @@ -2190,8 +2843,11 @@ int thermodynamics_reionization_sample( /** - --> after recombination, Tb scales like (1+z)**2. Compute constant factor Tb/(1+z)**2. */ //Tba2 = Tb/(1+z)/(1+z); - /** - --> get baryon sound speed */ - reio_vector[preio->index_re_cb2] = 5./3. * _k_B_ / ( _c_ * _c_ * _m_H_ ) * (1. + (1./_not4_ - 1.) * Yp + xe * (1.-Yp)) * Tb; + /** - --> get baryon equation of state */ + reio_vector[preio->index_re_wb] = _k_B_ / ( _c_ * _c_ * _m_H_ ) * (1. + (1./_not4_ - 1.) * Yp + xe * (1.-Yp)) * Tb; + + /** - --> get baryon adiabatic sound speed */ + reio_vector[preio->index_re_cb2] = 5./3. * reio_vector[preio->index_re_wb]; /** - --> store these values in growing table */ class_call(gt_add(&gTable,_GT_END_,(void *) reio_vector,sizeof(double)*(preio->re_size)), @@ -2373,10 +3029,16 @@ int thermodynamics_reionization_sample( preio->reionization_table[(i-1)*preio->re_size+preio->index_re_Tb] = preio->reionization_table[i*preio->re_size+preio->index_re_Tb]-dTdz*dz; - /** - --> get baryon sound speed */ + /** - --> get baryon equation of state */ + + preio->reionization_table[(i-1)*preio->re_size+preio->index_re_wb] = + _k_B_/ ( _c_ * _c_ * mu) + * preio->reionization_table[(i-1)*preio->re_size+preio->index_re_Tb]; - preio->reionization_table[(i-1)*preio->re_size+preio->index_re_cb2] = _k_B_/ ( _c_ * _c_ * mu) - * preio->reionization_table[(i-1)*preio->re_size+preio->index_re_Tb] + /** - --> get baryon adiabatic sound speed */ + + preio->reionization_table[(i-1)*preio->re_size+preio->index_re_cb2] = + preio->reionization_table[(i-1)*preio->re_size+preio->index_re_wb] *(1.+(1+z)/3.*dTdz/preio->reionization_table[(i-1)*preio->re_size+preio->index_re_Tb]); } @@ -2485,16 +3147,18 @@ int thermodynamics_recombination_with_hyrec( int buf_size; double tau; int last_index_back; + double w_fld,dw_over_da_fld,integral_fld; /** - Fill hyrec parameter structure */ param.T0 = pba->T_cmb; param.obh2 = pba->Omega0_b*pba->h*pba->h; - param.omh2 = (pba->Omega0_b+pba->Omega0_cdm+pba->Omega0_ncdm_tot)*pba->h*pba->h; + param.omh2 = (pba->Omega0_b+pba->Omega0_cdm+pba->Omega0_idm_dr+pba->Omega0_ncdm_tot)*pba->h*pba->h; param.okh2 = pba->Omega0_k*pba->h*pba->h; param.odeh2 = (pba->Omega0_lambda+pba->Omega0_fld)*pba->h*pba->h; - param.w0 = pba->w0_fld; - param.wa = pba->wa_fld; + class_call(background_w_fld(pba,pba->a_today,&w_fld,&dw_over_da_fld,&integral_fld), pba->error_message, pth->error_message); + param.w0 = w_fld; + param.wa = -dw_over_da_fld*pba->a_today; param.Y = pth->YHe; param.Nnueff = pba->Neff; param.nH0 = 11.223846333047*param.obh2*(1.-param.Y); /* number density of hydrogen today in m-3 */ @@ -2643,6 +3307,7 @@ int thermodynamics_recombination_with_hyrec( /* get (xe,Tm) by interpolating in pre-computed tables */ + class_call(array_interpolate_cubic_equal(-log(1.+param.zstart), param.dlna, xe_output, @@ -2699,10 +3364,15 @@ int thermodynamics_recombination_with_hyrec( /* Tb */ *(preco->recombination_table+(Nz-i-1)*preco->re_size+preco->index_re_Tb)=Tm; + /* wb = (k_B/mu) Tb */ + *(preco->recombination_table+(Nz-i-1)*preco->re_size+preco->index_re_wb) + = _k_B_ / ( _c_ * _c_ * _m_H_ ) * (1. + (1./_not4_ - 1.) * pth->YHe + xe * (1.-pth->YHe)) * Tm; + /* cb2 = (k_B/mu) Tb (1-1/3 dlnTb/dlna) = (k_B/mu) Tb (1+1/3 (1+z) dlnTb/dz) with (1+z)dlnTb/dz= - [dlnTb/dlna] */ *(preco->recombination_table+(Nz-i-1)*preco->re_size+preco->index_re_cb2) - = _k_B_ / ( _c_ * _c_ * _m_H_ ) * (1. + (1./_not4_ - 1.) * pth->YHe + xe * (1.-pth->YHe)) * Tm * (1. - rec_dTmdlna(xe, Tm, pba->T_cmb*(1.+z), Hz, param.fHe, param.nH0*pow((1+z),3)*1e-6, energy_injection_rate(¶m,z)) / Tm / 3.); + = *(preco->recombination_table+(Nz-i-1)*preco->re_size+preco->index_re_wb) + * (1. - rec_dTmdlna(xe, Tm, pba->T_cmb*(1.+z), Hz, param.fHe, param.nH0*pow((1+z),3)*1e-6, energy_injection_rate(¶m,z)) / Tm / 3.); /* dkappa/dtau = a n_e x_e sigma_T = a^{-2} n_e(today) x_e sigma_T (in units of 1/Mpc) */ *(preco->recombination_table+(Nz-i-1)*preco->re_size+preco->index_re_dkappadtau) @@ -3108,9 +3778,14 @@ int thermodynamics_recombination_with_recfast( pth->error_message, pth->error_message); + /* wb = (k_B/mu) Tb = (k_B/mu) Tb */ + *(preco->recombination_table+(Nz-i-1)*preco->re_size+preco->index_re_wb) + = _k_B_ / ( _c_ * _c_ * _m_H_ ) * (1. + (1./_not4_ - 1.) * preco->YHe + x0 * (1.-preco->YHe)) * y[2]; + /* cb2 = (k_B/mu) Tb (1-1/3 dlnTb/dlna) = (k_B/mu) Tb (1+1/3 (1+z) dlnTb/dz) */ *(preco->recombination_table+(Nz-i-1)*preco->re_size+preco->index_re_cb2) - = _k_B_ / ( _c_ * _c_ * _m_H_ ) * (1. + (1./_not4_ - 1.) * preco->YHe + x0 * (1.-preco->YHe)) * y[2] * (1. + (1.+zend) * dy[2] / y[2] / 3.); + = *(preco->recombination_table+(Nz-i-1)*preco->re_size+preco->index_re_wb) + * (1. + (1.+zend) * dy[2] / y[2] / 3.); /* dkappa/dtau = a n_e x_e sigma_T = a^{-2} n_e(today) x_e sigma_T (in units of 1/Mpc) */ *(preco->recombination_table+(Nz-i-1)*preco->re_size+preco->index_re_dkappadtau) @@ -3349,6 +4024,9 @@ int thermodynamics_derivs_with_recfast( /* evolution of hydrogen ionisation fraction: */ + // JL: test for debugginf reio_inter + //fprintf(stdout,"%e %e %e %e\n",z,Tmat,K*_Lambda_*n,K*Rup*n); + dy[0] = (x*x_H*n*Rdown - Rup*(1.-x_H)*exp(-preco->CL/Tmat)) * C / (Hz*(1.+z)) /* Peeble's equation with fudged factors */ -energy_rate*chi_ion_H/n*(1./_L_H_ion_+(1.-C)/_L_H_alpha_)/(_h_P_*_c_*Hz*(1.+z)); /* energy injection (neglect fraction going to helium) */ @@ -3427,6 +4105,7 @@ int thermodynamics_derivs_with_recfast( int thermodynamics_merge_reco_and_reio( struct precision * ppr, + struct background * pba, struct thermo * pth, struct recombination * preco, struct reionization * preio @@ -3436,6 +4115,7 @@ int thermodynamics_merge_reco_and_reio( /** - define local variables */ int i,index_th,index_re; + double x0; /** - first, a little check that the two tables match each other and can be merged */ @@ -3450,6 +4130,9 @@ int thermodynamics_merge_reco_and_reio( pth->tt_size = ppr->recfast_Nz0 + preio->rt_size - preio->index_reco_when_reio_start - 1; + /** - add more points to start earlier in presence of interacting DM */ + + if(pba->has_idm_dr == _TRUE_) pth->tt_size += ppr->thermo_Nz1_idm_dr + ppr->thermo_Nz2_idm_dr - 1; /** - allocate arrays in thermo structure */ @@ -3468,6 +4151,8 @@ int thermodynamics_merge_reco_and_reio( preio->reionization_table[i*preio->re_size+preio->index_re_dkappadtau]; pth->thermodynamics_table[i*pth->th_size+pth->index_th_Tb]= preio->reionization_table[i*preio->re_size+preio->index_re_Tb]; + pth->thermodynamics_table[i*pth->th_size+pth->index_th_wb]= + preio->reionization_table[i*preio->re_size+preio->index_re_wb]; pth->thermodynamics_table[i*pth->th_size+pth->index_th_cb2]= preio->reionization_table[i*preio->re_size+preio->index_re_cb2]; } @@ -3482,10 +4167,43 @@ int thermodynamics_merge_reco_and_reio( preco->recombination_table[index_re*preco->re_size+preco->index_re_dkappadtau]; pth->thermodynamics_table[index_th*pth->th_size+pth->index_th_Tb]= preco->recombination_table[index_re*preco->re_size+preco->index_re_Tb]; + pth->thermodynamics_table[index_th*pth->th_size+pth->index_th_wb]= + preco->recombination_table[index_re*preco->re_size+preco->index_re_wb]; pth->thermodynamics_table[index_th*pth->th_size+pth->index_th_cb2]= preco->recombination_table[index_re*preco->re_size+preco->index_re_cb2]; } + /** - add more points at larger redshift in presence of interacting + DM. This is necessary because the value of integrated + quantitites like tau_idm_dr or tau_idr will then be computed + exactly up to high redshift. With extrapolations in + thermodynamics_at_z() we could not obtain this. */ + + if(pba->has_idm_dr == _TRUE_){ + + for (i=0; ithermo_Nz2_idm_dr+ppr->thermo_Nz1_idm_dr-1; i++){ + + /* with an intermediate step Delta z = (thermo_z_initial_idm_dr-recfast_z_initial)/thermo_Nz1_idm_dr/thermo_Nz1_idm_dr */ + if (ithermo_Nz2_idm_dr-1) { + index_th=i+preio->rt_size+ppr->recfast_Nz0 - preio->index_reco_when_reio_start - 1; + pth->z_table[index_th]= ppr->recfast_z_initial + ((double)i+1.) * (ppr->thermo_z_initial_idm_dr - ppr->recfast_z_initial) / (double)ppr->thermo_Nz1_idm_dr / (double)ppr->thermo_Nz2_idm_dr; + } + /* with a large step Delta z = (thermo_z_initial_idm_dr-recfast_z_initial)/thermo_Nz1_idm_dr */ + else { + index_th=(i-ppr->thermo_Nz2_idm_dr+1)+preio->rt_size+ppr->recfast_Nz0 - preio->index_reco_when_reio_start - 1 + ppr->thermo_Nz2_idm_dr - 1; + pth->z_table[index_th]= ppr->recfast_z_initial + ((double)(i-ppr->thermo_Nz2_idm_dr+1)+1.) * (ppr->thermo_z_initial_idm_dr - ppr->recfast_z_initial) / (double)ppr->thermo_Nz1_idm_dr; + } + /* same extrapolation formulas as in thermodynamics_at_z() */ + x0=pth->thermodynamics_table[(preio->rt_size+ppr->recfast_Nz0 - preio->index_reco_when_reio_start - 2)*pth->th_size+pth->index_th_xe]; + pth->thermodynamics_table[index_th*pth->th_size+pth->index_th_xe]=x0; + pth->thermodynamics_table[index_th*pth->th_size+pth->index_th_dkappa]=(1.+pth->z_table[index_th]) * (1.+pth->z_table[index_th]) * pth->n_e * x0 * _sigma_ * _Mpc_over_m_; + pth->thermodynamics_table[index_th*pth->th_size+pth->index_th_Tb]=pba->T_cmb*(1.+pth->z_table[index_th]); + pth->thermodynamics_table[index_th*pth->th_size+pth->index_th_wb]=_k_B_ / ( _c_ * _c_ * _m_H_ ) * (1. + (1./_not4_ - 1.) * pth->YHe + x0 * (1.-pth->YHe)) * pba->T_cmb * (1.+pth->z_table[index_th]); + pth->thermodynamics_table[index_th*pth->th_size+pth->index_th_cb2]=pth->thermodynamics_table[index_th*pth->th_size+pth->index_th_wb] * 4./3.; + } + + } + /** - free the temporary structures */ free(preco->recombination_table); @@ -3516,11 +4234,24 @@ int thermodynamics_output_titles(struct background * pba, //class_store_columntitle(titles,"g'",_TRUE_); //class_store_columntitle(titles,"g''",_TRUE_); class_store_columntitle(titles,"Tb [K]",_TRUE_); + class_store_columntitle(titles,"w_b",_TRUE_); class_store_columntitle(titles,"c_b^2",_TRUE_); class_store_columntitle(titles,"tau_d",_TRUE_); - //class_store_columntitle(titles,"max. rate",_TRUE_,colnum); + //class_store_columntitle(titles,"max. rate",_TRUE_); class_store_columntitle(titles,"r_d",pth->compute_damping_scale); + if(pba->has_idm_dr == _TRUE_){ + class_store_columntitle(titles,"dmu_idm_dr",_TRUE_); + //class_store_columntitle(titles,"ddmu_idm_dr",_TRUE_); + //class_store_columntitle(titles,"dddmu_idm_dr",_TRUE_); + class_store_columntitle(titles,"tau_idm_dr",_TRUE_); + class_store_columntitle(titles,"tau_idr",_TRUE_); + class_store_columntitle(titles,"g_idm_dr [Mpc^-1]",_TRUE_); + class_store_columntitle(titles,"c_idm_dr^2",_TRUE_); + class_store_columntitle(titles,"T_idm_dr",_TRUE_); + class_store_columntitle(titles,"dmu_idr",_TRUE_); + } + return _SUCCESS_; } @@ -3564,11 +4295,23 @@ int thermodynamics_output_data(struct background * pba, //class_store_double(dataptr,pvecthermo[pth->index_th_dg],_TRUE_,storeidx); //class_store_double(dataptr,pvecthermo[pth->index_th_ddg],_TRUE_,storeidx); class_store_double(dataptr,pvecthermo[pth->index_th_Tb],_TRUE_,storeidx); + class_store_double(dataptr,pvecthermo[pth->index_th_wb],_TRUE_,storeidx); class_store_double(dataptr,pvecthermo[pth->index_th_cb2],_TRUE_,storeidx); class_store_double(dataptr,pvecthermo[pth->index_th_tau_d],_TRUE_,storeidx); //class_store_double(dataptr,pvecthermo[pth->index_th_rate],_TRUE_,storeidx); class_store_double(dataptr,pvecthermo[pth->index_th_r_d],pth->compute_damping_scale,storeidx); + if(pba->has_idm_dr == _TRUE_){ + class_store_double(dataptr,pvecthermo[pth->index_th_dmu_idm_dr],_TRUE_,storeidx); + //class_store_double(dataptr,pvecthermo[pth->index_th_ddmu_idm_dr],_TRUE_,storeidx); + //class_store_double(dataptr,pvecthermo[pth->index_th_dddmu_idm_dr],_TRUE_,storeidx); + class_store_double(dataptr,pvecthermo[pth->index_th_tau_idm_dr],_TRUE_,storeidx); + class_store_double(dataptr,pvecthermo[pth->index_th_tau_idr],_TRUE_,storeidx); + class_store_double(dataptr,pvecthermo[pth->index_th_g_idm_dr],_TRUE_,storeidx); + class_store_double(dataptr,pvecthermo[pth->index_th_cidm_dr2],_TRUE_,storeidx); + class_store_double(dataptr,pvecthermo[pth->index_th_Tidm_dr],_TRUE_,storeidx); + class_store_double(dataptr,pvecthermo[pth->index_th_dmu_idr],_TRUE_,storeidx); + } } return _SUCCESS_; @@ -3583,5 +4326,4 @@ int thermodynamics_tanh(double x, *result = before + (after-before)*(tanh((x-center)/width)+1.)/2.; - return _SUCCESS_; -} + return _SUCCESS_;} diff --git a/class/source/transfer.c b/class/source/transfer.c old mode 100644 new mode 100755 index 01cf0ce2..74908420 --- a/class/source/transfer.c +++ b/class/source/transfer.c @@ -292,14 +292,25 @@ int transfer_init( ptr->error_message, ptr->error_message); + /** - precompute window function for integrated nCl/sCl quantities*/ + double* window; + class_call(transfer_precompute_selection(ppr, + pba, + ppt, + ptr, + tau_rec, + tau_size_max, + &(window)), + ptr->error_message, + ptr->error_message); + /* (a.3.) workspace, allocated in a parallel zone since in openmp - version there is one workspace per thread */ + version there is one workspace per thread */ /* initialize error management flag */ abort = _FALSE_; /* beginning of parallel region */ - #pragma omp parallel \ shared(tau_size_max,ptr,ppr,pba,ppt,tp_of_tt,tau_rec,sources_spline,abort,BIS,tau0) \ private(ptw,index_q,tstart,tstop,tspent) @@ -311,6 +322,8 @@ int transfer_init( /* allocate workspace */ + ptw = NULL; + class_call_parallel(transfer_workspace_init(ptr, ppr, &ptw, @@ -356,6 +369,7 @@ int transfer_init( tau_rec, sources, sources_spline, + window, ptw), ptr->error_message, ptr->error_message); @@ -386,6 +400,7 @@ int transfer_init( if (abort == _TRUE_) return _FAILURE_; /** - finally, free arrays allocated outside parallel zone */ + free(window); class_call(transfer_perturbation_sources_spline_free(ppt,ptr,sources_spline), ptr->error_message, @@ -643,7 +658,9 @@ int transfer_perturbation_copy_sources_and_nl_corrections( if ((pnl->method != nl_none) && (_scalars_) && (((ppt->has_source_delta_m == _TRUE_) && (index_tp == ppt->index_tp_delta_m)) || + ((ppt->has_source_delta_cb == _TRUE_) && (index_tp == ppt->index_tp_delta_cb)) || ((ppt->has_source_theta_m == _TRUE_) && (index_tp == ppt->index_tp_theta_m)) || + ((ppt->has_source_theta_cb == _TRUE_) && (index_tp == ppt->index_tp_theta_cb)) || ((ppt->has_source_phi == _TRUE_) && (index_tp == ppt->index_tp_phi)) || ((ppt->has_source_phi_prime == _TRUE_) && (index_tp == ppt->index_tp_phi_prime)) || ((ppt->has_source_phi_plus_psi == _TRUE_) && (index_tp == ppt->index_tp_phi_plus_psi)) || @@ -655,13 +672,25 @@ int transfer_perturbation_copy_sources_and_nl_corrections( for (index_tau=0; index_tautau_size; index_tau++) { for (index_k=0; index_kk_size[index_md]; index_k++) { - sources[index_md] - [index_ic * ppt->tp_size[index_md] + index_tp] - [index_tau * ppt->k_size[index_md] + index_k] = - ppt->sources[index_md] - [index_ic * ppt->tp_size[index_md] + index_tp] - [index_tau * ppt->k_size[index_md] + index_k] - * pnl->nl_corr_density[index_tau * ppt->k_size[index_md] + index_k]; + if (((ppt->has_source_delta_cb == _TRUE_) && (index_tp == ppt->index_tp_delta_cb)) || + ((ppt->has_source_theta_cb == _TRUE_) && (index_tp == ppt->index_tp_theta_cb))){ + sources[index_md] + [index_ic * ppt->tp_size[index_md] + index_tp] + [index_tau * ppt->k_size[index_md] + index_k] = + ppt->sources[index_md] + [index_ic * ppt->tp_size[index_md] + index_tp] + [index_tau * ppt->k_size[index_md] + index_k] + * pnl->nl_corr_density[pnl->index_pk_cb][index_tau * ppt->k_size[index_md] + index_k]; + } + else{ + sources[index_md] + [index_ic * ppt->tp_size[index_md] + index_tp] + [index_tau * ppt->k_size[index_md] + index_k] = + ppt->sources[index_md] + [index_ic * ppt->tp_size[index_md] + index_tp] + [index_tau * ppt->k_size[index_md] + index_k] + * pnl->nl_corr_density[pnl->index_pk_m][index_tau * ppt->k_size[index_md] + index_k]; + } } } } @@ -736,6 +765,8 @@ int transfer_perturbation_sources_free( if ((pnl->method != nl_none) && (_scalars_) && (((ppt->has_source_delta_m == _TRUE_) && (index_tp == ppt->index_tp_delta_m)) || ((ppt->has_source_theta_m == _TRUE_) && (index_tp == ppt->index_tp_theta_m)) || + ((ppt->has_source_delta_cb == _TRUE_) && (index_tp == ppt->index_tp_delta_cb)) || + ((ppt->has_source_theta_cb == _TRUE_) && (index_tp == ppt->index_tp_theta_cb)) || ((ppt->has_source_phi == _TRUE_) && (index_tp == ppt->index_tp_phi)) || ((ppt->has_source_phi_prime == _TRUE_) && (index_tp == ppt->index_tp_phi_prime)) || ((ppt->has_source_phi_plus_psi == _TRUE_) && (index_tp == ppt->index_tp_phi_plus_psi)) || @@ -1245,7 +1276,7 @@ int transfer_get_k_list( if (ptr->k[index_md][0] < ppt->k[index_md][0]){ /* If ptr->k[index_md][0] < ppt->k[index_md][0] at the level of rounding, - adjust first value of k_list to avoid interpolation errors: */ + adjust first value of k_list to avoid interpolation errors: */ if ((ppt->k[index_md][0]-ptr->k[index_md][0]) < 10.*DBL_EPSILON){ ptr->k[index_md][0] = ppt->k[index_md][0]; } @@ -1259,12 +1290,12 @@ int transfer_get_k_list( } /* - class_test(ptr->k[index_md][0] < ppt->k[index_md][0], - ptr->error_message, - "bug in k_list calculation: in perturbation module k_min=%e, in transfer module k_min[mode=%d]=%e, interpolation impossible", - ppt->k[0][0], - index_md, - ptr->k[index_md][0]); + class_test(ptr->k[index_md][0] < ppt->k[index_md][0], + ptr->error_message, + "bug in k_list calculation: in perturbation module k_min=%e, in transfer module k_min[mode=%d]=%e, interpolation impossible", + ppt->k[0][0], + index_md, + ptr->k[index_md][0]); */ class_test(ptr->k[index_md][ptr->q_size-1] > ppt->k[0][ppt->k_size_cl[0]-1], ptr->error_message, @@ -1295,7 +1326,7 @@ int transfer_get_source_correspondence( struct transfers * ptr, int ** tp_of_tt ) { -/** Summary: */ + /** Summary: */ /** - running index on modes */ int index_md; @@ -1329,6 +1360,8 @@ int transfer_get_source_correspondence( tp_of_tt[index_md][index_tt]=ppt->index_tp_phi_plus_psi; if (_index_tt_in_range_(ptr->index_tt_density, ppt->selection_num, ppt->has_nc_density)) + /* use here delta_cb rather than delta_m if density number counts calculated only for cold dark matter + baryon */ + /* (this important comment is referenced in a WARNING message in perturbations.c) */ tp_of_tt[index_md][index_tt]=ppt->index_tp_delta_m; if (_index_tt_in_range_(ptr->index_tt_rsd, ppt->selection_num, ppt->has_nc_rsd)) @@ -1519,14 +1552,7 @@ int transfer_source_tau_size( } /* density Cl's */ - if ((_index_tt_in_range_(ptr->index_tt_density, ppt->selection_num, ppt->has_nc_density)) || - (_index_tt_in_range_(ptr->index_tt_rsd, ppt->selection_num, ppt->has_nc_rsd)) || - (_index_tt_in_range_(ptr->index_tt_d0, ppt->selection_num, ppt->has_nc_rsd)) || - (_index_tt_in_range_(ptr->index_tt_d1, ppt->selection_num, ppt->has_nc_rsd)) || - (_index_tt_in_range_(ptr->index_tt_nc_g1, ppt->selection_num, ppt->has_nc_gr)) || - (_index_tt_in_range_(ptr->index_tt_nc_g2, ppt->selection_num, ppt->has_nc_gr)) || - (_index_tt_in_range_(ptr->index_tt_nc_g3, ppt->selection_num, ppt->has_nc_gr)) - ) { + if (_nonintegrated_ncl_) { /* bin number associated to particular redshift bin and selection function */ if (_index_tt_in_range_(ptr->index_tt_density, ppt->selection_num, ppt->has_nc_density)) @@ -1583,18 +1609,14 @@ int transfer_source_tau_size( We need to cut the interval (tau_max-tau_min) in pieces of size [Delta tau]=2pi/k_max. This gives the number below. */ - *tau_size=MAX(*tau_size,(int)((tau_max-tau_min)/((tau0-tau_mean)/l_limber))*ppr->selection_sampling_bessel); + *tau_size=MAX(*tau_size,(int)((tau_max-tau_min)/((tau0-tau_mean)/MIN(l_limber,ppt->l_lss_max)))*ppr->selection_sampling_bessel); } } /* galaxy lensing Cl's, differs from density Cl's since the source function will spread from the selection function region up to tau0 */ - if ((_index_tt_in_range_(ptr->index_tt_lensing, ppt->selection_num, ppt->has_cl_lensing_potential)) || - (_index_tt_in_range_(ptr->index_tt_nc_lens, ppt->selection_num, ppt->has_nc_lens)) || - (_index_tt_in_range_(ptr->index_tt_nc_g4, ppt->selection_num, ppt->has_nc_gr)) || - (_index_tt_in_range_(ptr->index_tt_nc_g5, ppt->selection_num, ppt->has_nc_gr)) - ) { + if (_integrated_ncl_) { /* bin number associated to particular redshift bin and selection function */ if (_index_tt_in_range_(ptr->index_tt_lensing, ppt->selection_num, ppt->has_cl_lensing_potential)) @@ -1629,7 +1651,7 @@ int transfer_source_tau_size( if(_index_tt_in_range_(ptr->index_tt_nc_g5, ppt->selection_num, ppt->has_nc_gr)) { /* Even if G5 is integrated along the line-of-sight, we do not apply the same Limber criteria as for the other integrated terms, because here we have the derivative of the Bessel. */ l_limber=ppr->l_switch_limber_for_nc_local_over_z*ppt->selection_mean[bin]; - *tau_size=MAX(*tau_size,(int)((tau0-tau_min)/((tau0-tau_mean)/2./l_limber))*ppr->selection_sampling_bessel); + *tau_size=MAX(*tau_size,(int)((tau0-tau_min)/((tau0-tau_mean)/2./MIN(l_limber,ppt->l_lss_max)))*ppr->selection_sampling_bessel); } else { l_limber=ppr->l_switch_limber_for_nc_los_over_z*ppt->selection_mean[bin]; @@ -1641,7 +1663,7 @@ int transfer_source_tau_size( We need to cut the interval (tau_0-tau_min) in pieces of size [Delta tau]=2pi/k_max. This gives the number below. */ - *tau_size=MAX(*tau_size,(int)((tau0-tau_min)/((tau0-tau_mean)/2./l_limber))*ppr->selection_sampling_bessel_los); + *tau_size=MAX(*tau_size,(int)((tau0-tau_min)/((tau0-tau_mean)/2./MIN(l_limber,ppt->l_lss_max)))*ppr->selection_sampling_bessel_los); } } } @@ -1667,6 +1689,7 @@ int transfer_compute_for_each_q( double tau_rec, double *** pert_sources, double *** pert_sources_spline, + double * window, struct transfer_workspace * ptw ) { @@ -1684,8 +1707,8 @@ int transfer_compute_for_each_q( int index_l; /** - we deal with workspaces, i.e. with contiguous memory zones (one - per thread) containing various fields used by the integration - routine */ + per thread) containing various fields used by the integration + routine */ /* - first workspace field: perturbation source interpolated from perturbation structure */ double * interpolated_sources; @@ -1785,6 +1808,8 @@ int transfer_compute_for_each_q( index_md, index_tt, sources, + window, + tau_size_max, tau0_minus_tau, w_trapz, tau_size), @@ -2049,6 +2074,8 @@ int transfer_interpolate_sources( * @param index_md Input: index of mode * @param index_tt Input: index of type of (transfer) source * @param sources Output: transfer source + * @param window Input: window functions for each type and time + * @param tau_size_max Input: number of times at wich window fucntions are sampled * @param tau0_minus_tau Output: values of (tau0-tau) at which source are sample * @param w_trapz Output: trapezoidal weights for integration over tau * @param tau_size_out Output: pointer to size of previous two arrays, converted to double @@ -2066,6 +2093,8 @@ int transfer_sources( int index_md, int index_tt, double * sources, + double * window, + int tau_size_max, double * tau0_minus_tau, double * w_trapz, int * tau_size_out @@ -2087,52 +2116,19 @@ int transfer_sources( /* minimum tau index kept in transfer sources */ int index_tau_min; - /* for calling background_at_eta */ - int last_index; - double * pvecback = NULL; - /* conformal time */ double tau, tau0; - /* geometrical quantities */ - double sinKgen_source=0.; - double sinKgen_source_to_lens=0.; - double cotKgen_source=0.; - double cscKgen_lens=0.; - /* rescaling factor depending on the background at a given time */ double rescaling=0.; /* flag: is there any difference between the perturbation and transfer source? */ short redefine_source; - /* array of selection function values at different times */ - double * selection; - - /* array of time sampling for lensing source selection function */ - double * tau0_minus_tau_lensing_sources; - - /* trapezoidal weights for lensing source selection function */ - double * w_trapz_lensing_sources; - - /* index running on time in previous two arrays */ - int index_tau_sources; - - /* number of time values in previous two arrays */ - int tau_sources_size; - - /* source evolution factor */ - double f_evo = 0.; - - /* when the selection function is multiplied by a function dNdz */ - double z; - double dNdz; - double dln_dNdz_dz; - /** - in which cases are perturbation and transfer sources are different? - I.e., in which case do we need to multiply the sources by some - background and/or window function, and eventually to resample it, - or redefine its time limits? */ + I.e., in which case do we need to multiply the sources by some + background and/or window function, and eventually to resample it, + or redefine its time limits? */ redefine_source = _FALSE_; @@ -2143,21 +2139,7 @@ int transfer_sources( redefine_source = _TRUE_; /* number count Cl's */ - if ((_index_tt_in_range_(ptr->index_tt_density, ppt->selection_num, ppt->has_nc_density)) || - (_index_tt_in_range_(ptr->index_tt_rsd, ppt->selection_num, ppt->has_nc_rsd)) || - (_index_tt_in_range_(ptr->index_tt_d0, ppt->selection_num, ppt->has_nc_rsd)) || - (_index_tt_in_range_(ptr->index_tt_d1, ppt->selection_num, ppt->has_nc_rsd)) || - (_index_tt_in_range_(ptr->index_tt_nc_lens, ppt->selection_num, ppt->has_nc_lens))|| - (_index_tt_in_range_(ptr->index_tt_nc_g1, ppt->selection_num, ppt->has_nc_gr)) || - (_index_tt_in_range_(ptr->index_tt_nc_g2, ppt->selection_num, ppt->has_nc_gr)) || - (_index_tt_in_range_(ptr->index_tt_nc_g3, ppt->selection_num, ppt->has_nc_gr)) || - (_index_tt_in_range_(ptr->index_tt_nc_g4, ppt->selection_num, ppt->has_nc_gr)) || - (_index_tt_in_range_(ptr->index_tt_nc_g5, ppt->selection_num, ppt->has_nc_gr)) - ) - redefine_source = _TRUE_; - - /* galaxy lensing potential */ - if ((ppt->has_cl_lensing_potential == _TRUE_) && (index_tt >= ptr->index_tt_lensing) && (index_tt < ptr->index_tt_lensing+ppt->selection_num)) + if (_nonintegrated_ncl_ || _integrated_ncl_) redefine_source = _TRUE_; } @@ -2166,7 +2148,7 @@ int transfer_sources( tau0 = pba->conformal_age; /** - case where we need to redefine by a window function (or any - function of the background and of k) */ + function of the background and of k) */ if (redefine_source == _TRUE_) { class_call(transfer_source_tau_size(ppr, @@ -2250,44 +2232,11 @@ int transfer_sources( ptr->error_message); } - /* density source: redefine the time sampling, multiply by - coefficient of Poisson equation, and multiply by selection - function */ - - if ((_index_tt_in_range_(ptr->index_tt_density, ppt->selection_num, ppt->has_nc_density)) || - (_index_tt_in_range_(ptr->index_tt_rsd, ppt->selection_num, ppt->has_nc_rsd)) || - (_index_tt_in_range_(ptr->index_tt_d0, ppt->selection_num, ppt->has_nc_rsd)) || - (_index_tt_in_range_(ptr->index_tt_d1, ppt->selection_num, ppt->has_nc_rsd)) || - (_index_tt_in_range_(ptr->index_tt_nc_g1, ppt->selection_num, ppt->has_nc_gr)) || - (_index_tt_in_range_(ptr->index_tt_nc_g2, ppt->selection_num, ppt->has_nc_gr)) || - (_index_tt_in_range_(ptr->index_tt_nc_g3, ppt->selection_num, ppt->has_nc_gr)) - ) { - - /* bin number associated to particular redshift bin and selection function */ - if (_index_tt_in_range_(ptr->index_tt_density, ppt->selection_num, ppt->has_nc_density)) - bin = index_tt - ptr->index_tt_density; - - if (_index_tt_in_range_(ptr->index_tt_rsd, ppt->selection_num, ppt->has_nc_rsd)) - bin = index_tt - ptr->index_tt_rsd; - - if (_index_tt_in_range_(ptr->index_tt_d0, ppt->selection_num, ppt->has_nc_rsd)) - bin = index_tt - ptr->index_tt_d0; - - if (_index_tt_in_range_(ptr->index_tt_d1, ppt->selection_num, ppt->has_nc_rsd)) - bin = index_tt - ptr->index_tt_d1; - - if (_index_tt_in_range_(ptr->index_tt_nc_g1, ppt->selection_num, ppt->has_nc_gr)) - bin = index_tt - ptr->index_tt_nc_g1; + /* Non-integrated contributions to dCl/nCl need selection time sampling*/ - if (_index_tt_in_range_(ptr->index_tt_nc_g2, ppt->selection_num, ppt->has_nc_gr)) - bin = index_tt - ptr->index_tt_nc_g2; - - if (_index_tt_in_range_(ptr->index_tt_nc_g3, ppt->selection_num, ppt->has_nc_gr)) - bin = index_tt - ptr->index_tt_nc_g3; + if (_nonintegrated_ncl_) { - /* allocate temporary arrays for storing sources and for calling background */ - class_alloc(selection,tau_size*sizeof(double),ptr->error_message); - class_alloc(pvecback,pba->bg_size*sizeof(double),ptr->error_message); + _get_bin_nonintegrated_ncl_(index_tt) /* redefine the time sampling */ class_call(transfer_selection_sampling(ppr, @@ -2327,110 +2276,9 @@ int transfer_sources( ptr->error_message, ptr->error_message); - /* compute values of selection function at sampled values of tau */ - class_call(transfer_selection_compute(ppr, - pba, - ppt, - ptr, - selection, - tau0_minus_tau, - w_trapz, - tau_size, - pvecback, - tau0, - bin), - ptr->error_message, - ptr->error_message); - /* loop over time and rescale */ for (index_tau = 0; index_tau < tau_size; index_tau++) { - /* conformal time */ - tau = tau0 - tau0_minus_tau[index_tau]; - - /* geometrical quantity */ - switch (pba->sgnK){ - case 1: - cotKgen_source = sqrt(pba->K)/ptr->k[index_md][index_q] - *cos(tau0_minus_tau[index_tau]*sqrt(pba->K)) - /sin(tau0_minus_tau[index_tau]*sqrt(pba->K)); - break; - case 0: - cotKgen_source = 1./(ptr->k[index_md][index_q]*tau0_minus_tau[index_tau]); - break; - case -1: - cotKgen_source = sqrt(-pba->K)/ptr->k[index_md][index_q] - *cosh(tau0_minus_tau[index_tau]*sqrt(-pba->K)) - /sinh(tau0_minus_tau[index_tau]*sqrt(-pba->K)); - break; - } - - /* corresponding background quantities */ - class_call(background_at_tau(pba, - tau, - pba->long_info, - pba->inter_normal, - &last_index, - pvecback), - pba->error_message, - ptr->error_message); - - /* Source evolution, used by number counf rsd and number count gravity terms */ - - if ((_index_tt_in_range_(ptr->index_tt_d0, ppt->selection_num, ppt->has_nc_rsd)) || - (_index_tt_in_range_(ptr->index_tt_d1, ppt->selection_num, ppt->has_nc_rsd)) || - (_index_tt_in_range_(ptr->index_tt_nc_g2, ppt->selection_num, ppt->has_nc_gr))) { - - if((ptr->has_nz_evo_file == _TRUE_) || (ptr->has_nz_evo_analytic == _TRUE_)){ - - f_evo = 2./pvecback[pba->index_bg_H]/pvecback[pba->index_bg_a]/tau0_minus_tau[index_tau] - + pvecback[pba->index_bg_H_prime]/pvecback[pba->index_bg_H]/pvecback[pba->index_bg_H]/pvecback[pba->index_bg_a]; - - z = pba->a_today/pvecback[pba->index_bg_a]-1.; - - if (ptr->has_nz_evo_file ==_TRUE_) { - - class_test((znz_evo_z[0]) || (z>ptr->nz_evo_z[ptr->nz_evo_size-1]), - ptr->error_message, - "Your input file for the selection function only covers the redshift range [%f : %f]. However, your input for the selection function requires z=%f", - ptr->nz_evo_z[0], - ptr->nz_evo_z[ptr->nz_evo_size-1], - z); - - - class_call(array_interpolate_spline( - ptr->nz_evo_z, - ptr->nz_evo_size, - ptr->nz_evo_dlog_nz, - ptr->nz_evo_dd_dlog_nz, - 1, - z, - &last_index, - &dln_dNdz_dz, - 1, - ptr->error_message), - ptr->error_message, - ptr->error_message); - - } - else { - - class_call(transfer_dNdz_analytic(ptr, - z, - &dNdz, - &dln_dNdz_dz), - ptr->error_message, - ptr->error_message); - } - - f_evo -= dln_dNdz_dz/pvecback[pba->index_bg_a]; - } - else { - f_evo = 0.; - } - - } - /* matter density source = [- (dz/dtau) W(z)] * delta_m(k,tau) = W(tau) delta_m(k,tau) with @@ -2441,146 +2289,24 @@ int transfer_sources( regulated anyway by Bessel). */ - if (_index_tt_in_range_(ptr->index_tt_density, ppt->selection_num, ppt->has_nc_density)) - rescaling = ptr->selection_bias[bin]*selection[index_tau]; - - /* redshift space distortion source = - [- (dz/dtau) W(z)] * (k/H) * theta(k,tau) */ - - if (_index_tt_in_range_(ptr->index_tt_rsd, ppt->selection_num, ppt->has_nc_rsd)) - rescaling = selection[index_tau]/pvecback[pba->index_bg_H]/pvecback[pba->index_bg_a]; + rescaling = window[index_tt*tau_size_max+index_tau]; if (_index_tt_in_range_(ptr->index_tt_d0, ppt->selection_num, ppt->has_nc_rsd)) - rescaling = (f_evo-3.)*selection[index_tau]*pvecback[pba->index_bg_H]*pvecback[pba->index_bg_a] - /ptr->k[index_md][index_q]/ptr->k[index_md][index_q]; + rescaling *= 1./ptr->k[index_md][index_q]/ptr->k[index_md][index_q]; // Factor from original ClassGAL paper ( arXiv 1307.1459 ) if (_index_tt_in_range_(ptr->index_tt_d1, ppt->selection_num, ppt->has_nc_rsd)) - - rescaling = selection[index_tau]*(1. - +pvecback[pba->index_bg_H_prime] - /pvecback[pba->index_bg_a] - /pvecback[pba->index_bg_H] - /pvecback[pba->index_bg_H] - +(2.-5.*ptr->selection_magnification_bias[bin]) - // /tau0_minus_tau[index_tau] // in flat space - *cotKgen_source*ptr->k[index_md][index_q] // in general case - /pvecback[pba->index_bg_a] - /pvecback[pba->index_bg_H] - +5.*ptr->selection_magnification_bias[bin] - -f_evo - )/ptr->k[index_md][index_q]; - - if (_index_tt_in_range_(ptr->index_tt_nc_g1, ppt->selection_num, ppt->has_nc_gr)) - - rescaling = selection[index_tau]; - - if (_index_tt_in_range_(ptr->index_tt_nc_g2, ppt->selection_num, ppt->has_nc_gr)) - - rescaling = -selection[index_tau]*(3. - +pvecback[pba->index_bg_H_prime] - /pvecback[pba->index_bg_a] - /pvecback[pba->index_bg_H] - /pvecback[pba->index_bg_H] - +(2.-5.*ptr->selection_magnification_bias[bin]) - // /tau0_minus_tau[index_tau] // in flat space - *cotKgen_source*ptr->k[index_md][index_q] // in general case - /pvecback[pba->index_bg_a] - /pvecback[pba->index_bg_H] - -f_evo - ); - - if (_index_tt_in_range_(ptr->index_tt_nc_g3, ppt->selection_num, ppt->has_nc_gr)) - rescaling = selection[index_tau]/pvecback[pba->index_bg_a]/pvecback[pba->index_bg_H]; + rescaling *= 1./ptr->k[index_md][index_q]; // Factor from original ClassGAL paper ( arXiv 1307.1459 ) sources[index_tau] *= rescaling; - } - - /* deallocate temporary arrays */ - free(pvecback); - free(selection); } + /* End normal contributions */ - /* lensing potential: eliminate early times, and multiply by selection - function */ + /* Integrated contributions to dCl/nCl/sCl need integrated selection time sampling */ - if ((_index_tt_in_range_(ptr->index_tt_lensing, ppt->selection_num, ppt->has_cl_lensing_potential)) || - (_index_tt_in_range_(ptr->index_tt_nc_lens, ppt->selection_num, ppt->has_nc_lens)) || - (_index_tt_in_range_(ptr->index_tt_nc_g4, ppt->selection_num, ppt->has_nc_gr)) || - (_index_tt_in_range_(ptr->index_tt_nc_g5, ppt->selection_num, ppt->has_nc_gr)) - ) { + if (_integrated_ncl_) { - /* bin number associated to particular redshift bin and selection function */ - if (_index_tt_in_range_(ptr->index_tt_lensing, ppt->selection_num, ppt->has_cl_lensing_potential)) - bin = index_tt - ptr->index_tt_lensing; - - if (_index_tt_in_range_(ptr->index_tt_nc_lens, ppt->selection_num, ppt->has_nc_lens)) - bin = index_tt - ptr->index_tt_nc_lens; - - if (_index_tt_in_range_(ptr->index_tt_nc_g4, ppt->selection_num, ppt->has_nc_gr)) - bin = index_tt - ptr->index_tt_nc_g4; - - if (_index_tt_in_range_(ptr->index_tt_nc_g5, ppt->selection_num, ppt->has_nc_gr)) - bin = index_tt - ptr->index_tt_nc_g5; - - /* allocate temporary arrays for storing sources and for calling background */ - class_alloc(pvecback, - pba->bg_size*sizeof(double), - ptr->error_message); - - /* dirac case */ - if (ppt->selection == dirac) { - tau_sources_size=1; - } - /* other cases (gaussian, tophat...) */ - else { - tau_sources_size=ppr->selection_sampling; - } - - class_alloc(selection, - tau_sources_size*sizeof(double), - ptr->error_message); - - class_alloc(tau0_minus_tau_lensing_sources, - tau_sources_size*sizeof(double), - ptr->error_message); - - class_alloc(w_trapz_lensing_sources, - tau_sources_size*sizeof(double), - ptr->error_message); - - /* time sampling for source selection function */ - class_call(transfer_selection_sampling(ppr, - pba, - ppt, - ptr, - bin, - tau0_minus_tau_lensing_sources, - tau_sources_size), - ptr->error_message, - ptr->error_message); - - /* Compute trapezoidal weights for integration over tau */ - class_call(array_trapezoidal_mweights(tau0_minus_tau_lensing_sources, - tau_sources_size, - w_trapz_lensing_sources, - ptr->error_message), - ptr->error_message, - ptr->error_message); - - /* compute values of selection function at sampled values of tau */ - class_call(transfer_selection_compute(ppr, - pba, - ppt, - ptr, - selection, - tau0_minus_tau_lensing_sources, - w_trapz_lensing_sources, - tau_sources_size, - pvecback, - tau0, - bin), - ptr->error_message, - ptr->error_message); + _get_bin_integrated_ncl_(index_tt) /* redefine the time sampling */ class_call(transfer_lensing_sampling(ppr, @@ -2629,179 +2355,14 @@ int transfer_sources( regulated anyway by Bessel). */ - if (index_tau == tau_size-1) { - rescaling=0.; - } - else { - - rescaling = 0.; - - - for (index_tau_sources=0; - index_tau_sources < tau_sources_size; - index_tau_sources++) { - - switch (pba->sgnK){ - case 1: - sinKgen_source = ptr->k[index_md][index_q]*sin(tau0_minus_tau_lensing_sources[index_tau_sources]*sqrt(pba->K))/sqrt(pba->K); - sinKgen_source_to_lens = ptr->k[index_md][index_q]*sin((tau0_minus_tau[index_tau]-tau0_minus_tau_lensing_sources[index_tau_sources])*sqrt(pba->K))/sqrt(pba->K); - cotKgen_source = cos(tau0_minus_tau_lensing_sources[index_tau_sources]*sqrt(pba->K))/sinKgen_source; - cscKgen_lens = sqrt(pba->K)/ptr->k[index_md][index_q]/sin(sqrt(pba->K)*tau0_minus_tau[index_tau]); - break; - case 0: - sinKgen_source = ptr->k[index_md][index_q]*tau0_minus_tau_lensing_sources[index_tau_sources]; - sinKgen_source_to_lens = ptr->k[index_md][index_q]*(tau0_minus_tau[index_tau]-tau0_minus_tau_lensing_sources[index_tau_sources]); - cotKgen_source = 1./(ptr->k[index_md][index_q]*tau0_minus_tau_lensing_sources[index_tau_sources]); - cscKgen_lens = 1./(ptr->k[index_md][index_q]*tau0_minus_tau[index_tau]); - break; - case -1: - sinKgen_source = ptr->k[index_md][index_q]*sinh(tau0_minus_tau_lensing_sources[index_tau_sources]*sqrt(-pba->K))/sqrt(-pba->K); - sinKgen_source_to_lens = ptr->k[index_md][index_q]*sinh((tau0_minus_tau[index_tau]-tau0_minus_tau_lensing_sources[index_tau_sources])*sqrt(-pba->K))/sqrt(-pba->K); - cotKgen_source = cosh(tau0_minus_tau_lensing_sources[index_tau_sources]*sqrt(-pba->K))/sinKgen_source; - cscKgen_lens = sqrt(-pba->K)/ptr->k[index_md][index_q]/sinh(sqrt(-pba->K)*tau0_minus_tau[index_tau]); - break; - } - - - /* condition for excluding from the sum the sources located in z=zero */ - if ((tau0_minus_tau_lensing_sources[index_tau_sources] > 0.) && (tau0_minus_tau_lensing_sources[index_tau_sources]-tau0_minus_tau[index_tau] > 0.)) { - - if (_index_tt_in_range_(ptr->index_tt_lensing, ppt->selection_num, ppt->has_cl_lensing_potential)) { - - rescaling += - // *(tau0_minus_tau[index_tau]-tau0_minus_tau_lensing_sources[index_tau_sources]) - // /tau0_minus_tau[index_tau] - // /tau0_minus_tau_lensing_sources[index_tau_sources] - ptr->k[index_md][index_q] - *sinKgen_source_to_lens - *cscKgen_lens - /sinKgen_source - * selection[index_tau_sources] - * w_trapz_lensing_sources[index_tau_sources]; - } - - if (_index_tt_in_range_(ptr->index_tt_nc_lens, ppt->selection_num, ppt->has_nc_lens)) { - - rescaling -= - (2.-5.*ptr->selection_magnification_bias[bin])/2. - // *(tau0_minus_tau[index_tau]-tau0_minus_tau_lensing_sources[index_tau_sources]) - // /tau0_minus_tau[index_tau] - // /tau0_minus_tau_lensing_sources[index_tau_sources] - *ptr->k[index_md][index_q] - *sinKgen_source_to_lens - *cscKgen_lens - /sinKgen_source - * selection[index_tau_sources] - * w_trapz_lensing_sources[index_tau_sources]; - } - - if (_index_tt_in_range_(ptr->index_tt_nc_g4, ppt->selection_num, ppt->has_nc_gr)) { - - rescaling += - (2.-5.*ptr->selection_magnification_bias[bin]) - // /tau0_minus_tau_lensing_sources[index_tau_sources] - * cotKgen_source*ptr->k[index_md][index_q] - * selection[index_tau_sources] - * w_trapz_lensing_sources[index_tau_sources]; - - } - - if (_index_tt_in_range_(ptr->index_tt_nc_g5, ppt->selection_num, ppt->has_nc_gr)) { - - /* background quantities at time tau_lensing_source */ - - class_call(background_at_tau(pba, - tau0-tau0_minus_tau_lensing_sources[index_tau_sources], - pba->long_info, - pba->inter_normal, - &last_index, - pvecback), - pba->error_message, - ptr->error_message); - - /* Source evolution at time tau_lensing_source */ - - if ((ptr->has_nz_evo_file == _TRUE_) || (ptr->has_nz_evo_analytic == _TRUE_)) { - - f_evo = 2./pvecback[pba->index_bg_H]/pvecback[pba->index_bg_a]*cotKgen_source*ptr->k[index_md][index_q] - + pvecback[pba->index_bg_H_prime]/pvecback[pba->index_bg_H]/pvecback[pba->index_bg_H]/pvecback[pba->index_bg_a]; - - z = pba->a_today/pvecback[pba->index_bg_a]-1.; - - if (ptr->has_nz_evo_file == _TRUE_) { - - class_test((znz_evo_z[0]) || (z>ptr->nz_evo_z[ptr->nz_evo_size-1]), - ptr->error_message, - "Your input file for the selection function only covers the redshift range [%f : %f]. However, your input for the selection function requires z=%f", - ptr->nz_evo_z[0], - ptr->nz_evo_z[ptr->nz_evo_size-1], - z); - - class_call(array_interpolate_spline( - ptr->nz_evo_z, - ptr->nz_evo_size, - ptr->nz_evo_dlog_nz, - ptr->nz_evo_dd_dlog_nz, - 1, - z, - &last_index, - &dln_dNdz_dz, - 1, - ptr->error_message), - ptr->error_message, - ptr->error_message); - - } - else { - - class_call(transfer_dNdz_analytic(ptr, - z, - &dNdz, - &dln_dNdz_dz), - ptr->error_message, - ptr->error_message); - } - - f_evo -= dln_dNdz_dz/pvecback[pba->index_bg_a]; - } - else { - f_evo = 0.; - } - - rescaling += - (1. - + pvecback[pba->index_bg_H_prime] - /pvecback[pba->index_bg_a] - /pvecback[pba->index_bg_H] - /pvecback[pba->index_bg_H] - + (2.-5.*ptr->selection_magnification_bias[bin]) - // /tau0_minus_tau_lensing_sources[index_tau_sources] - * cotKgen_source*ptr->k[index_md][index_q] - /pvecback[pba->index_bg_a] - /pvecback[pba->index_bg_H] - + 5.*ptr->selection_magnification_bias[bin] - - f_evo) - * ptr->k[index_md][index_q] - * selection[index_tau_sources] - * w_trapz_lensing_sources[index_tau_sources]; - } - - } - } - } - /* copy from input array to output array */ - sources[index_tau] *= rescaling; + sources[index_tau] *= window[index_tt*tau_size_max+index_tau]; + if (_index_tt_in_range_(ptr->index_tt_nc_g5, ppt->selection_num, ppt->has_nc_gr)) + sources[index_tau] *= ptr->k[index_md][index_q]; // Factor from chi derivative of d/dchi j_ell(k*chi)= d/d(kchi) j_ell(k chi) * k = k * j_ell'(kchi) } - - /* deallocate temporary arrays */ - free(pvecback); - free(selection); - free(tau0_minus_tau_lensing_sources); - free(w_trapz_lensing_sources); - } + /* End integrated contributions */ } } @@ -2832,7 +2393,7 @@ int transfer_sources( } /** - return tau_size value that will be stored in the workspace (the - workspace wants a double) */ + workspace wants a double) */ *tau_size_out = tau_size; @@ -3014,7 +2575,8 @@ int transfer_dNdz_analytic( double z0,alpha,beta; - z0 = 0.55; + //Euclid IST dNdz, do not change this! + z0 = 0.9/pow(2.,1./2.); alpha = 2.0; beta = 1.5; @@ -4475,7 +4037,7 @@ int transfer_radial_function( factor = 1.0; for (j=0; jindex_md_scalars; + int index_tt; + + /* allocate temporary arrays for storing selections, weights, times, and output; and for calling background */ + class_alloc(tau0_minus_tau,tau_size_max*sizeof(double),ptr->error_message); + class_alloc(selection,tau_size_max*sizeof(double),ptr->error_message); + class_alloc(w_trapz,tau_size_max*sizeof(double),ptr->error_message); + class_alloc((*window),tau_size_max*ptr->tt_size[index_md]*sizeof(double),ptr->error_message); + class_alloc(pvecback,pba->bg_size*sizeof(double),ptr->error_message); + + /* conformal time today */ + tau0 = pba->conformal_age; + + /* Loop through different types to be precomputed */ + for (index_tt = 0; index_tt < ptr->tt_size[index_md]; index_tt++) { + + /* First set the corresponding tau size */ + class_call(transfer_source_tau_size(ppr, + pba, + ppt, + ptr, + tau_rec, + tau0, + index_md, + index_tt, + &tau_size), + ptr->error_message, + ptr->error_message); + + /* Start with non-integrated contributions */ + if (_nonintegrated_ncl_) { + + _get_bin_nonintegrated_ncl_(index_tt) + + /* redefine the time sampling */ + class_call(transfer_selection_sampling(ppr, + pba, + ppt, + ptr, + bin, + tau0_minus_tau, + tau_size), + ptr->error_message, + ptr->error_message); + + class_test(tau0 - tau0_minus_tau[0] > ppt->tau_sampling[ppt->tau_size-1], + ptr->error_message, + "this should not happen, there was probably a rounding error, if this error occurred, then this must be coded more carefully"); + + /* Compute trapezoidal weights for integration over tau */ + class_call(array_trapezoidal_mweights(tau0_minus_tau, + tau_size, + w_trapz, + ptr->error_message), + ptr->error_message, + ptr->error_message); + + /* compute values of selection function at sampled values of tau */ + class_call(transfer_selection_compute(ppr, + pba, + ppt, + ptr, + selection, + tau0_minus_tau, + w_trapz, + tau_size, + pvecback, + tau0, + bin), + ptr->error_message, + ptr->error_message); + + /* loop over time and rescale */ + for (index_tau = 0; index_tau < tau_size; index_tau++) { + + /* conformal time */ + tau = tau0 - tau0_minus_tau[index_tau]; + + /* geometrical quantity */ + switch (pba->sgnK){ + case 1: + cotKgen_source = sqrt(pba->K) + *cos(tau0_minus_tau[index_tau]*sqrt(pba->K)) + /sin(tau0_minus_tau[index_tau]*sqrt(pba->K)); + break; + case 0: + cotKgen_source = 1./(tau0_minus_tau[index_tau]); + break; + case -1: + cotKgen_source = sqrt(-pba->K) + *cosh(tau0_minus_tau[index_tau]*sqrt(-pba->K)) + /sinh(tau0_minus_tau[index_tau]*sqrt(-pba->K)); + break; + } + + /* corresponding background quantities */ + class_call(background_at_tau(pba, + tau, + pba->long_info, + pba->inter_normal, + &last_index, + pvecback), + pba->error_message, + ptr->error_message); + + /* Source evolution, used by nCl doppler and nCl gravity terms */ + + if ((_index_tt_in_range_(ptr->index_tt_d0, ppt->selection_num, ppt->has_nc_rsd)) || + (_index_tt_in_range_(ptr->index_tt_d1, ppt->selection_num, ppt->has_nc_rsd)) || + (_index_tt_in_range_(ptr->index_tt_nc_g2, ppt->selection_num, ppt->has_nc_gr))) + { + class_call(transfer_f_evo(pba,ptr,pvecback,last_index,cotKgen_source,&f_evo), + ptr->error_message, + ptr->error_message); + /* Error in old CLASS 2.6.3 : Number count evolution did not respect curvature */ + } + + /* matter density source = [- (dz/dtau) W(z)] * delta_m(k,tau) + = W(tau) delta_m(k,tau) + with + delta_m = total matter perturbation (defined in gauge-independent way, see arXiv 1307.1459) + W(z) = redshift space selection function = dN/dz + W(tau) = same wrt conformal time = dN/dtau + (in tau = tau_0, set source = 0 to avoid division by zero; + regulated anyway by Bessel). + */ + + if (_index_tt_in_range_(ptr->index_tt_density, ppt->selection_num, ppt->has_nc_density)) + rescaling = ptr->selection_bias[bin]*selection[index_tau]; + + /* redshift space distortion source = - [- (dz/dtau) W(z)] * (k/H) * theta(k,tau) */ + + if (_index_tt_in_range_(ptr->index_tt_rsd, ppt->selection_num, ppt->has_nc_rsd)) + rescaling = selection[index_tau]/pvecback[pba->index_bg_H]/pvecback[pba->index_bg_a]; + + if (_index_tt_in_range_(ptr->index_tt_d0, ppt->selection_num, ppt->has_nc_rsd)) + rescaling = (f_evo-3.)*selection[index_tau]*pvecback[pba->index_bg_H]*pvecback[pba->index_bg_a]; + + if (_index_tt_in_range_(ptr->index_tt_d1, ppt->selection_num, ppt->has_nc_rsd)) + + rescaling = selection[index_tau]*(1. + +pvecback[pba->index_bg_H_prime] + /pvecback[pba->index_bg_a] + /pvecback[pba->index_bg_H] + /pvecback[pba->index_bg_H] + +(2.-5.*ptr->selection_magnification_bias[bin]) + // /tau0_minus_tau[index_tau] // in flat space + *cotKgen_source // in general case + /pvecback[pba->index_bg_a] + /pvecback[pba->index_bg_H] + +5.*ptr->selection_magnification_bias[bin] + -f_evo + ); + + if (_index_tt_in_range_(ptr->index_tt_nc_g1, ppt->selection_num, ppt->has_nc_gr)) + + rescaling = selection[index_tau]; + + if (_index_tt_in_range_(ptr->index_tt_nc_g2, ppt->selection_num, ppt->has_nc_gr)) + + rescaling = -selection[index_tau]*(3. + +pvecback[pba->index_bg_H_prime] + /pvecback[pba->index_bg_a] + /pvecback[pba->index_bg_H] + /pvecback[pba->index_bg_H] + +(2.-5.*ptr->selection_magnification_bias[bin]) + // /tau0_minus_tau[index_tau] // in flat space + *cotKgen_source // in general case + /pvecback[pba->index_bg_a] + /pvecback[pba->index_bg_H] + -f_evo + ); + + if (_index_tt_in_range_(ptr->index_tt_nc_g3, ppt->selection_num, ppt->has_nc_gr)) + rescaling = selection[index_tau]/pvecback[pba->index_bg_a]/pvecback[pba->index_bg_H]; + + /* finally store in array */ + (*window)[index_tt*tau_size_max+index_tau] = rescaling; + } + } + /* End non-integrated contribution */ + + /* Now deal with integrated contributions */ + if (_integrated_ncl_) { + + _get_bin_integrated_ncl_(index_tt) + + /* dirac case */ + if (ppt->selection == dirac) { + tau_sources_size=1; + } + /* other cases (gaussian, tophat...) */ + else { + tau_sources_size=ppr->selection_sampling; + } + + class_alloc(tau0_minus_tau_lensing_sources, + tau_sources_size*sizeof(double), + ptr->error_message); + + class_alloc(w_trapz_lensing_sources, + tau_sources_size*sizeof(double), + ptr->error_message); + + /* time sampling for source selection function */ + class_call(transfer_selection_sampling(ppr, + pba, + ppt, + ptr, + bin, + tau0_minus_tau_lensing_sources, + tau_sources_size), + ptr->error_message, + ptr->error_message); + + /* Compute trapezoidal weights for integration over tau */ + class_call(array_trapezoidal_mweights(tau0_minus_tau_lensing_sources, + tau_sources_size, + w_trapz_lensing_sources, + ptr->error_message), + ptr->error_message, + ptr->error_message); + + /* compute values of selection function at sampled values of tau */ + class_call(transfer_selection_compute(ppr, + pba, + ppt, + ptr, + selection, + tau0_minus_tau_lensing_sources, + w_trapz_lensing_sources, + tau_sources_size, + pvecback, + tau0, + bin), + ptr->error_message, + ptr->error_message); + + /* redefine the time sampling */ + class_call(transfer_lensing_sampling(ppr, + pba, + ppt, + ptr, + bin, + tau0, + tau0_minus_tau, + tau_size), + ptr->error_message, + ptr->error_message); + + /* Compute trapezoidal weights for integration over tau */ + class_call(array_trapezoidal_mweights(tau0_minus_tau, + tau_size, + w_trapz, + ptr->error_message), + ptr->error_message, + ptr->error_message); + + /* loop over time and rescale */ + for (index_tau = 0; index_tau < tau_size; index_tau++) { + + /* lensing source = - W(tau) (phi(k,tau) + psi(k,tau)) Heaviside(tau-tau_rec) + with + psi,phi = metric perturbation in newtonian gauge (phi+psi = Phi_A-Phi_H of Bardeen) + W = (tau-tau_rec)/(tau_0-tau)/(tau_0-tau_rec) + H(x) = Heaviside + (in tau = tau_0, set source = 0 to avoid division by zero; + regulated anyway by Bessel). + */ + + if (index_tau == tau_size-1) { + rescaling=0.; + } + else { + + rescaling = 0.; + + for (index_tau_sources=0; + index_tau_sources < tau_sources_size; + index_tau_sources++) { + + switch (pba->sgnK){ + case 1: + sinKgen_source = sin(tau0_minus_tau_lensing_sources[index_tau_sources]*sqrt(pba->K))/sqrt(pba->K); + sinKgen_source_to_lens = sin((tau0_minus_tau[index_tau]-tau0_minus_tau_lensing_sources[index_tau_sources])*sqrt(pba->K))/sqrt(pba->K); + cotKgen_source = cos(tau0_minus_tau_lensing_sources[index_tau_sources]*sqrt(pba->K))/sinKgen_source; + cscKgen_lens = sqrt(pba->K)/sin(sqrt(pba->K)*tau0_minus_tau[index_tau]); + break; + case 0: + sinKgen_source = tau0_minus_tau_lensing_sources[index_tau_sources]; + sinKgen_source_to_lens = (tau0_minus_tau[index_tau]-tau0_minus_tau_lensing_sources[index_tau_sources]); + cotKgen_source = 1./(tau0_minus_tau_lensing_sources[index_tau_sources]); + cscKgen_lens = 1./(tau0_minus_tau[index_tau]); + break; + case -1: + sinKgen_source = sinh(tau0_minus_tau_lensing_sources[index_tau_sources]*sqrt(-pba->K))/sqrt(-pba->K); + sinKgen_source_to_lens = sinh((tau0_minus_tau[index_tau]-tau0_minus_tau_lensing_sources[index_tau_sources])*sqrt(-pba->K))/sqrt(-pba->K); + cotKgen_source = cosh(tau0_minus_tau_lensing_sources[index_tau_sources]*sqrt(-pba->K))/sinKgen_source; + cscKgen_lens = sqrt(-pba->K)/sinh(sqrt(-pba->K)*tau0_minus_tau[index_tau]); + break; + } + + /* condition for excluding from the sum the sources located in z=zero */ + if ((tau0_minus_tau_lensing_sources[index_tau_sources] > 0.) && (tau0_minus_tau_lensing_sources[index_tau_sources]-tau0_minus_tau[index_tau] > 0.)) { + + if (_index_tt_in_range_(ptr->index_tt_lensing, ppt->selection_num, ppt->has_cl_lensing_potential)) { + + rescaling += + // *(tau0_minus_tau[index_tau]-tau0_minus_tau_lensing_sources[index_tau_sources]) + // /tau0_minus_tau[index_tau] + // /tau0_minus_tau_lensing_sources[index_tau_sources] + sinKgen_source_to_lens + *cscKgen_lens + /sinKgen_source + * selection[index_tau_sources] + * w_trapz_lensing_sources[index_tau_sources]; + } + + if (_index_tt_in_range_(ptr->index_tt_nc_lens, ppt->selection_num, ppt->has_nc_lens)) { + + rescaling -= + (2.-5.*ptr->selection_magnification_bias[bin])/2. + // *(tau0_minus_tau[index_tau]-tau0_minus_tau_lensing_sources[index_tau_sources]) + // /tau0_minus_tau[index_tau] + // /tau0_minus_tau_lensing_sources[index_tau_sources] + *sinKgen_source_to_lens + *cscKgen_lens + /sinKgen_source + * selection[index_tau_sources] + * w_trapz_lensing_sources[index_tau_sources]; + } + + if (_index_tt_in_range_(ptr->index_tt_nc_g4, ppt->selection_num, ppt->has_nc_gr)) { + + rescaling += + (2.-5.*ptr->selection_magnification_bias[bin]) + // /tau0_minus_tau_lensing_sources[index_tau_sources] + * cotKgen_source + * selection[index_tau_sources] + * w_trapz_lensing_sources[index_tau_sources]; + + } + + if (_index_tt_in_range_(ptr->index_tt_nc_g5, ppt->selection_num, ppt->has_nc_gr)) { + + /* background quantities at time tau_lensing_source */ + + class_call(background_at_tau(pba, + tau0-tau0_minus_tau_lensing_sources[index_tau_sources], + pba->long_info, + pba->inter_normal, + &last_index, + pvecback), + pba->error_message, + ptr->error_message); + + /* Source evolution at time tau_lensing_source */ + + class_call(transfer_f_evo(pba,ptr,pvecback,last_index,cotKgen_source,&f_evo), + ptr->error_message, + ptr->error_message); + + + rescaling += + (1. + + pvecback[pba->index_bg_H_prime] + /pvecback[pba->index_bg_a] + /pvecback[pba->index_bg_H] + /pvecback[pba->index_bg_H] + + (2.-5.*ptr->selection_magnification_bias[bin]) + // /tau0_minus_tau_lensing_sources[index_tau_sources] + * cotKgen_source + /pvecback[pba->index_bg_a] + /pvecback[pba->index_bg_H] + + 5.*ptr->selection_magnification_bias[bin] + - f_evo) + * selection[index_tau_sources] + * w_trapz_lensing_sources[index_tau_sources]; + } + } + } + } + + /* Finally store integrated result for later use */ + (*window)[index_tt*tau_size_max+index_tau] = rescaling; + } + + /* deallocate temporary arrays */ + free(tau0_minus_tau_lensing_sources); + free(w_trapz_lensing_sources); + } + /* End integrated contribution */ + } + + /* deallocate temporary arrays */ + free(selection); + free(tau0_minus_tau); + free(w_trapz); + free(pvecback); + return _SUCCESS_; +} + +int transfer_f_evo( + struct background* pba, + struct transfers * ptr, + double* pvecback, + int last_index, + double cotKgen, /* Should be FILLED with values of corresponding time */ + double* f_evo + ){ + /* Allocate temporary variables for calculation of f_evo */ + double z; + double dNdz; + double dln_dNdz_dz; + double temp_f_evo; + + if ((ptr->has_nz_evo_file == _TRUE_) || (ptr->has_nz_evo_analytic == _TRUE_)){ + + temp_f_evo = 2./pvecback[pba->index_bg_H]/pvecback[pba->index_bg_a]*cotKgen + + pvecback[pba->index_bg_H_prime]/pvecback[pba->index_bg_H]/pvecback[pba->index_bg_H]/pvecback[pba->index_bg_a]; + + z = pba->a_today/pvecback[pba->index_bg_a]-1.; + + if (ptr->has_nz_evo_file ==_TRUE_) { + + class_test((znz_evo_z[0]) || (z>ptr->nz_evo_z[ptr->nz_evo_size-1]), + ptr->error_message, + "Your input file for the selection function only covers the redshift range [%f : %f]. However, your input for the selection function requires z=%f", + ptr->nz_evo_z[0], + ptr->nz_evo_z[ptr->nz_evo_size-1], + z); + + + class_call(array_interpolate_spline( + ptr->nz_evo_z, + ptr->nz_evo_size, + ptr->nz_evo_dlog_nz, + ptr->nz_evo_dd_dlog_nz, + 1, + z, + &last_index, + &dln_dNdz_dz, + 1, + ptr->error_message), + ptr->error_message, + ptr->error_message); + + } + else { + + class_call(transfer_dNdz_analytic(ptr, + z, + &dNdz, + &dln_dNdz_dz), + ptr->error_message, + ptr->error_message); + } + + temp_f_evo -= dln_dNdz_dz/pvecback[pba->index_bg_a]; + } + else { + temp_f_evo = 0.; + } + + /* after obtaining f_evo, store it in output */ + *f_evo = temp_f_evo; + + return _SUCCESS_; +} diff --git a/class/test/chi2.c b/class/test/chi2.c new file mode 100755 index 00000000..85aeff03 --- /dev/null +++ b/class/test/chi2.c @@ -0,0 +1,310 @@ +/** @file class.c + * Julien Lesgourgues, 20.04.2010 + */ + +#include "stdio.h" +#include "stdlib.h" +#include "math.h" +#include "string.h" +#include "float.h" + +#define _PI_ 3.14159 + +int chi2_simple( + double ** cl1, + double ** cl2, + int lmax, + double * chi2); + +int chi2_planck( + double ** cl1, + double ** cl2, + double ** nl, + int lmax, + double * chi2); + +int noise_planck( + double ** nl, + int lmax + ); + +int main(int argc, char **argv) { + + int i,l_max,l; + + double parameter_initial,parameter_logstep; + double * parameter; + int param_num; + + double *** cl; + double ** noise; + double chi2,chi2_bis; + double percentage,max_percentage; + int max_l; + int ref_run; + + double * param; + + FILE * output; + char filename[200]; + char results_name[200]; + char junk_string[200]; + int l_read; + + /*******************************/ + + l_max = 3000; + + cl=malloc(2*sizeof(double**)); + for (i=0; i<2; i++) { + cl[i]=malloc((l_max+1)*sizeof(double*)); + for (l=2; l <= l_max; l++) { + cl[i][l]=malloc(3*sizeof(double)); + } + } + + noise=calloc((l_max+1),sizeof(double*)); + for (l=2; l <= l_max; l++) { + noise[l]=calloc(3,sizeof(double)); + } + + sprintf(filename,"output/chi2pl0.1_cl_lensed.dat"); + + /* read file and fill cl[param_num] */ + output = fopen(filename,"r"); + fprintf(stderr,"Read reference in file %s\n",filename); + fgets(junk_string,200,output); + // fprintf(stderr,"%s\n",junk_string); + fgets(junk_string,200,output); + // fprintf(stderr,"%s\n",junk_string); + fgets(junk_string,200,output); + // fprintf(stderr,"%s\n",junk_string); + fgets(junk_string,200,output); + fgets(junk_string,200,output); + fgets(junk_string,200,output); + fgets(junk_string,200,output); + // fprintf(stderr,"%s\n",junk_string); + //fgets(junk_string,200,output); + //fgets(junk_string,200,output); + //fgets(junk_string,200,output); + float cl_read; + for (l=2; l <= l_max; l++) { + fscanf(output,"%d",&l_read); + //fprintf(stderr,"%d\n",l_read); + fscanf(output,"%e",&cl_read); + //fprintf(stderr," %e\n",cl_read); + cl[0][l][0]=(double)cl_read*2.*_PI_/l/(l+1); + // fprintf(stderr,"%d %e\n",l_read,cl[ref_run][l][sp.index_ct_tt]); + fscanf(output,"%e",&cl_read); + cl[0][l][1]=(double)cl_read*2.*_PI_/l/(l+1); + fscanf(output,"%e",&cl_read); + cl[0][l][2]=(double)cl_read*2.*_PI_/l/(l+1); + //fprintf(stderr," %e %d\n",cl_read,sp.index_ct_te); + fscanf(output,"%e",&cl_read); + fscanf(output,"%e",&cl_read); + fscanf(output,"%e",&cl_read); + fscanf(output,"%e",&cl_read); + if (l_read != l) { + printf("l_read != l: %d %d\n",l_read,l); + } + } + + fclose(output); + + sprintf(filename,"output/cl_ref_cl_lensed.dat"); + + /* read file and fill cl[param_num] */ + output = fopen(filename,"r"); + fprintf(stderr,"Read degraded precision in file %s\n",filename); + fgets(junk_string,200,output); + //fprintf(stderr,"%s\n",junk_string); + fgets(junk_string,200,output); + // fprintf(stderr,"%s\n",junk_string); + fgets(junk_string,200,output); + // fprintf(stderr,"%s\n",junk_string); + fgets(junk_string,200,output); + // fprintf(stderr,"%s\n",junk_string); + fgets(junk_string,200,output); + fgets(junk_string,200,output); + fgets(junk_string,200,output); + //float cl_read; + //fprintf(stderr,"get here\n"); + for (l=2; l <= l_max; l++) { + fscanf(output,"%d",&l_read); + // fprintf(stderr,"%d",l_read); + fscanf(output,"%e",&cl_read); + // fprintf(stderr," %e\n",cl_read); + cl[1][l][0]=(double)cl_read*2.*_PI_/l/(l+1); + // fprintf(stderr,"%d %e\n",l_read,cl[ref_run][l][sp.index_ct_tt]); + fscanf(output,"%e",&cl_read); + cl[1][l][1]=(double)cl_read*2.*_PI_/l/(l+1); + fscanf(output,"%e",&cl_read); + cl[1][l][2]=(double)cl_read*2.*_PI_/l/(l+1); + //fprintf(stderr," %e %d\n",cl_read,sp.index_ct_te); + fscanf(output,"%e",&cl_read); + fscanf(output,"%e",&cl_read); + fscanf(output,"%e",&cl_read); + fscanf(output,"%e",&cl_read); + //fscanf(output,"%e",&cl_read); + if (l_read != l) { + printf("l_read != l: %d %d\n",l_read,l); + } + } + + fclose(output); + + fprintf(stderr,"get here\n"); + + + + noise_planck(noise,l_max); + + fprintf(stderr,"get here\n"); + + chi2_planck(cl[0],cl[1],noise,l_max,&chi2); + + fprintf(stderr,"get here\n"); + + fprintf(stderr,"chi2=%2g \n",chi2); + + return 0; + +} + +int chi2_simple( + double ** cl1, + double ** cl2, + int lmax, + double * chi2) { + + int l; + + *chi2=0.; + for (l=2; l <= lmax; l++) { + *chi2 += + pow(((cl1[l][0]-cl2[l][0]) + /cl2[l][0]),2) + + pow(((cl1[l][2]-cl2[l][2]) + /cl2[l][2]),2) + + pow(((cl1[l][1]-cl2[l][1]) + /cl2[l][1]),2); + } + + return 0; + +} + +int chi2_planck( + double ** cl1, /* treated as 'theoretical spectrum' */ + double ** cl2, /* treated as 'observed spectrum' */ + double ** nl, + int lmax, + double * chi2) { + + int l; + double fsky=0.8; + double clTT_th,clEE_th,clTE_th; + double clTT_obs,clEE_obs,clTE_obs; + double det_mixed,det_th,det_obs; + double factor; + + *chi2=0.; + for (l=2; l <= lmax; l++) { + +/* if (psp->ct_size == 1) { */ + if (0==1) { + + *chi2 += fsky*(2.*l+1.)*((cl2[l][0]+nl[l][0])/ + (cl1[l][0]+nl[l][0])+ + log((cl1[l][0]+nl[l][0])/(cl2[l][0]+nl[l][0]))-1.); + +/* *chi2 += fsky*(2.*l+1.)*((cl2[l][0])/ */ +/* (cl1[l][0])+ */ +/* log((cl1[l][0])/(cl2[l][0]))-1.); */ + + +/* factor=l*(l+1.)/2./_PI_; */ +/* printf("%d %e %e %e\n",l,factor*cl1[l][0],factor*cl2[l][0],factor*nl[l][0]); */ + + } + else { + + clTT_th = cl1[l][0]+nl[l][0]; + clEE_th = cl1[l][1]+nl[l][1]; + clTE_th = cl1[l][2]; + + clTT_obs = cl2[l][0]+nl[l][0]; + clEE_obs = cl2[l][1]+nl[l][1]; + clTE_obs = cl2[l][2]; + + //printf("%e %e %e %e %e %e\n",clTT_th,clTT_obs,clEE_th,clEE_obs,clTE_th,clTE_obs); + + det_mixed = 0.5*(clTT_th*clEE_obs+clTT_obs*clEE_th)-clTE_th*clTE_obs; + + det_th = clTT_th*clEE_th-clTE_th*clTE_th; + + det_obs = clTT_obs*clEE_obs-clTE_obs*clTE_obs; + + *chi2 += fsky*(2.*l+1.)*(2.*(det_mixed/det_th-1.)+log(det_th/det_obs)); + } + } + + return 0; + +} + +int noise_planck( + double ** nl, + int lmax + ) { + + int num_channel,channel,l; + double * theta, * deltaT, * deltaP; + double Tcmb = 2.726; + + num_channel=3; + + theta=malloc(num_channel*sizeof(double)); + deltaT=malloc(num_channel*sizeof(double)); + deltaP=malloc(num_channel*sizeof(double)); + + /* 100 GHz*/ + theta[0]=9.5/3437.75; /* converted from arcmin to radian */ + deltaT[0]=(6.8e-6/Tcmb); /* converted from K to dimensionless */ + deltaP[0]=(10.9e-6/Tcmb); /* converted from K to dimensionless */ + + /* 143 GHz*/ + theta[1]=7.1/3437.75; + deltaT[1]=(6.0e-6/Tcmb); + deltaP[1]=(11.4e-6/Tcmb); + + /* 217 GHz*/ + theta[2]=5.0/3437.75; + deltaT[2]=(13.1e-6/Tcmb); + deltaP[2]=(26.7e-6/Tcmb); + + for (l=2; l<=lmax; l++) { + + for (channel=0; channel%s\n",errmsg); + return _FAILURE_; + } + + if (background_init(&pr,&ba) == _FAILURE_) { + printf("\n\nError running background_init \n=>%s\n",ba.error_message); + return _FAILURE_; + } + + if (thermodynamics_init(&pr,&ba,&th) == _FAILURE_) { + printf("\n\nError in thermodynamics_init \n=>%s\n",th.error_message); + return _FAILURE_; + } + + if (perturb_init(&pr,&ba,&th,&pt) == _FAILURE_) { + printf("\n\nError in perturb_init \n=>%s\n",pt.error_message); + return _FAILURE_; + } + + if (bessel_init(&pr,&bs) == _FAILURE_) { + printf("\n\nError in bessel_init \n =>%s\n",bs.error_message); + return _FAILURE_; + } + + if (transfer_init(&pr,&ba,&th,&pt,&bs,&tr) == _FAILURE_) { + printf("\n\nError in transfer_init \n=>%s\n",tr.error_message); + return _FAILURE_; + } + + if (primordial_init(&pr,&pt,&pm) == _FAILURE_) { + printf("\n\nError in primordial_init \n=>%s\n",pm.error_message); + return _FAILURE_; + } + + if (spectra_init(&pr,&ba,&pt,&tr,&pm,&sp) == _FAILURE_) { + printf("\n\nError in spectra_init \n=>%s\n",sp.error_message); + return _FAILURE_; + } + + if (nonlinear_init(&pr,&ba,&th,&pm,&sp,&nl) == _FAILURE_) { + printf("\n\nError in nonlinear_init \n=>%s\n",nl.error_message); + return _FAILURE_; + } + + /* read model with appropriate lensing potential */ + + sprintf(filename,"output/lensing_cl.dat"); + + output = fopen(filename,"r"); + fprintf(stderr,"Read reference in file %s\n",filename); + + fgets(junk_string,200,output); + fgets(junk_string,200,output); + fgets(junk_string,200,output); + fgets(junk_string,200,output); + fgets(junk_string,200,output); + fgets(junk_string,200,output); + fgets(junk_string,200,output); + + index_l=0; + + for (l=2; l <= sp.l_max_tot; l++) { + fscanf(output,"%d",&l_read); // l + if (l_read != l) { + printf("l_read != l: %d %d\n",l_read,l); + } + + fscanf(output,"%e",&cl_read); // TT + fscanf(output,"%e",&cl_read); // TE + fscanf(output,"%e",&cl_read); // EE + fscanf(output,"%e",&cl_read); // BB + fscanf(output,"%e",&cl_read); // phiphi + + if (l == (int)sp.l[index_l]) { + + factor = l*(l+1)/2./_PI_; + + sp.cl[sp.index_md_scalars][index_l*sp.ct_size+sp.index_ct_pp]=cl_read/factor; + index_l++; + + } + + fscanf(output,"%e",&cl_read); // Tphi + fscanf(output,"%e",&cl_read); // Ephi + } + + fclose(output); + + /* spline the spectra (redundent excepted for the new phiphi column) */ + + class_call(array_spline_table_lines(sp.l, + sp.l_size[sp.index_md_scalars], + sp.cl[sp.index_md_scalars], + sp.ic_ic_size[sp.index_md_scalars]*sp.ct_size, + sp.ddcl[sp.index_md_scalars], + _SPLINE_EST_DERIV_, + sp.error_message), + sp.error_message, + sp.error_message); + + /* carry on the calculation */ + + if (lensing_init(&pr,&pt,&sp,&nl,&le) == _FAILURE_) { + printf("\n\nError in lensing_init \n=>%s\n",le.error_message); + return _FAILURE_; + } + + if (output_init(&ba,&pt,&sp,&nl,&le,&op) == _FAILURE_) { + printf("\n\nError in output_init \n=>%s\n",op.error_message); + return _FAILURE_; + } + + /****** all calculations done, now free the structures ******/ + + if (lensing_free(&le) == _FAILURE_) { + printf("\n\nError in lensing_free \n=>%s\n",le.error_message); + return _FAILURE_; + } + + if (nonlinear_free(&nl) == _FAILURE_) { + printf("\n\nError in nonlinear_free \n=>%s\n",nl.error_message); + return _FAILURE_; + } + + if (spectra_free(&sp) == _FAILURE_) { + printf("\n\nError in spectra_free \n=>%s\n",sp.error_message); + return _FAILURE_; + } + + if (primordial_free(&pm) == _FAILURE_) { + printf("\n\nError in primordial_free \n=>%s\n",pm.error_message); + return _FAILURE_; + } + + if (transfer_free(&tr) == _FAILURE_) { + printf("\n\nError in transfer_free \n=>%s\n",tr.error_message); + return _FAILURE_; + } + + if (bessel_free(&bs) == _FAILURE_) { + printf("\n\nError in bessel_free \n=>%s\n",bs.error_message); + return _FAILURE_; + } + + if (perturb_free(&pt) == _FAILURE_) { + printf("\n\nError in perturb_free \n=>%s\n",pt.error_message); + return _FAILURE_; + } + + if (thermodynamics_free(&th) == _FAILURE_) { + printf("\n\nError in thermodynamics_free \n=>%s\n",th.error_message); + return _FAILURE_; + } + + if (background_free(&ba) == _FAILURE_) { + printf("\n\nError in background_free \n=>%s\n",ba.error_message); + return _FAILURE_; + } + + return _SUCCESS_; + +} diff --git a/class/test/test_2D_quadrature.c b/class/test/test_2D_quadrature.c new file mode 100644 index 00000000..da90a475 --- /dev/null +++ b/class/test/test_2D_quadrature.c @@ -0,0 +1,33 @@ +#include "common.h" +#include "quadrature.h" + +int main(){ + double I,fxy; + int i,n; + double *x,*y,*w; + ErrorMsg error_message; + + n=2; + + class_call(quadrature_in_rectangle(-2.0,2.0,1.0,4.0,&n,&x,&y,&w,error_message), + error_message, + error_message); + + + for(i=0,I=0.0; i%s\n",errmsg); + return _FAILURE_; + } + + if (background_init(&pr,&ba) == _FAILURE_) { + printf("\n\nError running background_init \n=>%s\n",ba.error_message); + return _FAILURE_; + } + + /****** here you can output the evolution of any background + quanitity you are interested in ******/ + + int index_tau; + + for (index_tau=0; index_tau%s\n",ba.error_message); + return _FAILURE_; + } + + return _SUCCESS_; + +} diff --git a/class/test/test_bessel.c b/class/test/test_bessel.c new file mode 100755 index 00000000..5080f093 --- /dev/null +++ b/class/test/test_bessel.c @@ -0,0 +1,85 @@ +/** @file class.c + * Julien Lesgourgues, 18.04.2010 + */ + +#include "class.h" + +main(int argc, char **argv) { + + struct precision pr; /* for precision parameters */ + struct background ba; /* for cosmological background */ + struct thermo th; /* for thermodynamics */ + struct perturbs pt; /* for source functions */ + struct bessels bs; /* for bessel functions */ + struct transfers tr; /* for transfer functions */ + struct primordial pm; /* for primordial spectra */ + struct spectra sp; /* for output spectra */ + struct nonlinear nl; /* for non-linear spectra */ + struct lensing le; /* for lensed spectra */ + struct output op; /* for output files */ + ErrorMsg errmsg; + + if (input_init_from_arguments(argc, argv,&pr,&ba,&th,&pt,&bs,&tr,&pm,&sp,&nl,&le,&op,errmsg) == _FAILURE_) { + printf("\n\nError running input_init_from_arguments \n=>%s\n",errmsg); + return _FAILURE_; + } + + /* + if (background_init(&pr,&ba) == _FAILURE_) { + printf("\n\nError running background_init \n=>%s\n",ba.error_message); + return _FAILURE_; + } + + if (thermodynamics_init(&pr,&ba,&th) == _FAILURE_) { + printf("\n\nError in thermodynamics_init \n=>%s\n",th.error_message); + return _FAILURE_; + } + + if (perturb_init(&pr,&ba,&th,&pt) == _FAILURE_) { + printf("\n\nError in perturb_init \n=>%s\n",pt.error_message); + return _FAILURE_; + } + */ + + if (bessel_init(&pr,&bs) == _FAILURE_) { + printf("\n\nError in bessel_init \n =>%s\n",bs.error_message); + return _FAILURE_; + } + + /****** here you could output the bessel functions ******/ + + int index_l=10; + int index_x; + for (index_x=0; index_x%s\n",bs.error_message); + return _FAILURE_; + } + + /* + if (perturb_free(&pt) == _FAILURE_) { + printf("\n\nError in perturb_free \n=>%s\n",pt.error_message); + return _FAILURE_; + } + + if (thermodynamics_free(&th) == _FAILURE_) { + printf("\n\nError in thermodynamics_free \n=>%s\n",th.error_message); + return _FAILURE_; + } + + if (background_free(&ba) == _FAILURE_) { + printf("\n\nError in background_free \n=>%s\n",ba.error_message); + return _FAILURE_; + } + */ + +} diff --git a/class/test/test_degeneracy.c b/class/test/test_degeneracy.c new file mode 100755 index 00000000..9637f98b --- /dev/null +++ b/class/test/test_degeneracy.c @@ -0,0 +1,710 @@ +/** @file class.c + * Julien Lesgourgues, 20.04.2010 + */ +#include "class.h" +#include +#include +#define TINy 1.0e-1 +#define NMAX 100000 +#define GET_PSUM \ + for (j=0;j%s\n",errmsg); + return _FAILURE_; + } + + class_assuming_bessels_computed(&pr,&ba,&th,&pt,&bs,&tr,&pm,&sp,&nl,&le,&op,cl,errmsg); + chi2_planck(&sp,cl,cl_ref,noise,&chi2); + + for (l=2; l <= l_max; l++) { + free(cl[l]); + } + free(cl); + /*fprintf(stderr,"here, YHe = %s, h = %s, omega_c = %s, n_s = %s, A_s = %s, chi2 = %e\n",fc.value[4],fc.value[5],fc.value[6],fc.value[8],fc.value[9],chi2);*/ + + /*fprintf(stderr,"YHe:%e, h:%e, omega_cdm:%e, chi2:%e\n",param[0],param[1],param[2],chi2);*/ + return chi2; +} + +void amoeba(double **p,double y[],int ndim,double ftol, double (*funk)(double [])){ + + double amotry(double **p,double y[], double psum[], int ndim, double (*funk)(double []),int ihi,double fac); + int i,ihi,ilo,inhi,j,mpts=ndim+1; + int k; + double rtol,sum,swap,ysave,ytry,*psum; + psum = calloc(ndim,sizeof(double)); + int nfunk=0; + GET_PSUM + for (;;) { + ilo=0; + /*First we must determine which point is the highest (worst), next-highest, and lowest (best), by looping over the points in the simplex.*/ + ihi = y[0]>y[1] ? (inhi=1,0) : (inhi=0,1); + for (i=0;i y[ihi]) { + inhi=ihi; + ihi=i; + } + else if (y[i] > y[inhi] && i != ihi) inhi=i; + } + rtol=fabs(y[ihi]-y[ilo]); //Compute the fractional range from highest to lowest and return if satisfactory. + /*fprintf(stderr,"--> y[ihi]:%e y[ilo]:%e rtol %e\n\n",y[ihi],y[ilo],rtol);*/ + if (rtol < ftol) { //If returning, put best point and value in slot 1. + SWAP(y[0],y[ilo]); + for (i=0;i= NMAX) fprintf(stderr,"NMAX exceeded\n"); + nfunk += 2; + //Begin a new iteration. First extrapolate by a factor −1 through the face of the simplex across from the high point, i.e., reflect the simplex from the high point. + + ytry=amotry(p,y,psum,ndim,funk,ihi,-1.0); + if (ytry <= y[ilo]){ + //Gives a result better than the best point, so try an additional extrapolation by a factor 2. + /*fprintf(stderr,"is better, going twice as far\n");*/ + ytry=amotry(p,y,psum,ndim,funk,ihi,2.0);} + else if (ytry >= y[inhi]) { + /*fprintf(stderr,"is worse, trying half\n");*/ + //The reflected point is worse than the second-highest, so look for an intermediate lower point, i.e., do a one-dimensional contraction. + ysave=y[ihi]; + ytry=amotry(p,y,psum,ndim,funk,ihi,0.5); + if (ytry >= ysave) { //Can’t seem to get rid of that high point. Better + for (k=0;k%s\n",errmsg); + return _FAILURE_; + } + noise_planck(&ba,&th,&sp,noise); + class_assuming_bessels_computed(&pr,&ba,&th,&pt,&bs,&tr,&pm,&sp,&nl,&le,&op,cl_ref,errmsg); + double alpha; + double random_number; + + // Looping on all values of parameter + for (i=0; i%s\n",errmsg); + return _FAILURE_; + } + + class_assuming_bessels_computed(&pr,&ba,&th,&pt,&bs,&tr,&pm,&sp,&nl,&le,&op,cl,errmsg); + chi2_planck(&sp,cl,cl_ref,noise,&chi2[k]); + + } + amoeba(p,chi2,ndim,ftol,get_chi2); + if (j==0){ + storage = (chi2[0]+chi2[1]+chi2[2]+chi2[3]+chi2[4]+chi2[5])/6.; + } + fprintf(stderr,"run %d, chi2:%f\n",j,(chi2[0]+chi2[1]+chi2[2]+chi2[3]+chi2[4]+chi2[5])/6.); + if ((chi2[0]+chi2[1]+chi2[2]+chi2[3]+chi2[4]+chi2[5])/6. < storage){ + storage = (chi2[0]+chi2[1]+chi2[2]+chi2[3]+chi2[4]+chi2[5])/6.; + } + if (j==4){ + fprintf(stderr,"final chi2: %f\n",storage); + } + // Initialization of the simplex method, compute ndim+1 points. + } + + + + + + fprintf(stdout,"%e %e %e %e %e %e %e\n",parameter[i],(p[0][0]+p[1][0]+p[2][0]+p[3][0]+p[4][0]+p[5][0])/6., + (p[0][1]+p[1][1]+p[2][1]+p[3][1]+p[4][1]+p[5][1])/6., + (p[0][2]+p[1][2]+p[2][2]+p[3][2]+p[4][1]+p[5][1])/6., + (p[0][3]+p[1][3]+p[2][3]+p[3][3]+p[4][3]+p[5][3])/6., + (p[0][4]+p[1][4]+p[2][4]+p[3][4]+p[4][4]+p[5][4])/6., + storage); + } + /*fprintf(stdout,"%e %e %e %e %e\n",parameter[i],(p[0][0]+p[1][0]+p[2][0]+p[3][0])/4.,*/ + /*(p[0][1]+p[1][1]+p[2][1]+p[3][1])/4.,*/ + /*(p[0][2]+p[1][2]+p[2][2]+p[3][2])/4.,*/ + /*chi2[0]);*/ + /*fprintf(stdout,"%e %e %e\n",parameter[i],(p[0][0]+p[1][0])/2.,chi2[0]);*/ + return _SUCCESS_; + + } + + +int class_assuming_bessels_computed( + struct precision * ppr, + struct background * pba, + struct thermo * pth, + struct perturbs * ppt, + struct bessels * pbs, + struct transfers * ptr, + struct primordial * ppm, + struct spectra * psp, + struct nonlinear * pnl, + struct lensing * ple, + struct output * pop, + double ** cl, + ErrorMsg errmsg) { + + int l; + double ** junk1; + double ** junk2; + + if (background_init(ppr,pba) == _FAILURE_) { + printf("\n\nError running background_init \n=>%s\n",pba->error_message); + return _FAILURE_; + } + /*fprintf(stderr,"h = %e, omga_c = %e, omega_b = %e, Omega_Lambda = %e, Omega_ur = %e, z_eq = %e\n",pba->h,pba->Omega0_cdm*pba->h*pba->h,pba->Omega0_b*pba->h*pba->h,pba->Omega0_lambda,pba->Omega0_ur,(pba->Omega0_b+pba->Omega0_cdm)/(pba->Omega0_g+pba->Omega0_ur));*/ + + if (thermodynamics_init(ppr,pba,pth) == _FAILURE_) { + printf("\n\nError in thermodynamics_init \n=>%s\n",pth->error_message); + return _FAILURE_; + } + + if (perturb_init(ppr,pba,pth,ppt) == _FAILURE_) { + printf("\n\nError in perturb_init \n=>%s\n",ppt->error_message); + return _FAILURE_; + } + + if (bessel_init(&pr,&bs) == _FAILURE_) { + printf("\n\nError in bessel_init \n =>%s\n",bs.error_message); + return _FAILURE_; + } + + if (transfer_init(ppr,pba,pth,ppt,pbs,ptr) == _FAILURE_) { + printf("\n\nError in transfer_init \n=>%s\n",ptr->error_message); + return _FAILURE_; + } + + if (primordial_init(ppr,ppt,ppm) == _FAILURE_) { + printf("\n\nError in primordial_init \n=>%s\n",ppm->error_message); + return _FAILURE_; + } + + if (spectra_init(ppr,pba,ppt,ptr,ppm,psp) == _FAILURE_) { + printf("\n\nError in spectra_init \n=>%s\n",psp->error_message); + return _FAILURE_; + } + + if (nonlinear_init(ppr,pba,pth,ppt,pbs,ptr,ppm,psp,pnl) == _FAILURE_) { + printf("\n\nError in nonlinear_init \n=>%s\n",psp->error_message); + return _FAILURE_; + } + + if (lensing_init(ppr,ppt,psp,pnl,ple) == _FAILURE_) { + printf("\n\nError in lensing_init \n=>%s\n",ple->error_message); + return _FAILURE_; + } + + for (l=2; l <= l_max; l++) { + + if (output_total_cl_at_l(psp,ple,pop,(double)l,cl[l]) == _FAILURE_) { + printf("\n\nError in spectra_cl_at_l \n=>%s\n",psp->error_message); + return _FAILURE_;} + } + + + /****** done ******/ + + if (lensing_free(ple) == _FAILURE_) { + printf("\n\nError in spectra_free \n=>%s\n",ple->error_message); + return _FAILURE_; + } + + if (nonlinear_free(pnl) == _FAILURE_) { + printf("\n\nError in nonlinear_free \n=>%s\n",psp->error_message); + return _FAILURE_; + } + + if (spectra_free(psp) == _FAILURE_) { + printf("\n\nError in spectra_free \n=>%s\n",psp->error_message); + return _FAILURE_; + } + + if (primordial_free(ppm) == _FAILURE_) { + printf("\n\nError in primordial_free \n=>%s\n",ppm->error_message); + return _FAILURE_; + } + + if (transfer_free(ptr) == _FAILURE_) { + printf("\n\nError in transfer_free \n=>%s\n",ptr->error_message); + return _FAILURE_; + } + + if (bessel_free(&bs) == _FAILURE_) { + printf("\n\nError in bessel_free \n=>%s\n",bs.error_message); + return _FAILURE_; + } + + if (perturb_free(ppt) == _FAILURE_) { + printf("\n\nError in perturb_free \n=>%s\n",ppt->error_message); + return _FAILURE_; + } + + if (thermodynamics_free(pth) == _FAILURE_) { + printf("\n\nError in thermodynamics_free \n=>%s\n",pth->error_message); + return _FAILURE_; + } + + if (background_free(pba) == _FAILURE_) { + printf("\n\nError in background_free \n=>%s\n",pba->error_message); + return _FAILURE_; + } + + return _SUCCESS_; + +} + +int chi2_simple( + struct spectra * psp, + double ** cl1, + double ** cl2, + double * chi2) { + + int l; + + *chi2=0.; + for (l=2; l <= l_max; l++) { + *chi2 += + pow(((cl1[l][psp->index_ct_tt]-cl2[l][psp->index_ct_tt]) + /cl2[l][psp->index_ct_tt]),2) + + pow(((cl1[l][psp->index_ct_te]-cl2[l][psp->index_ct_te]) + /cl2[l][psp->index_ct_te]),2) + + pow(((cl1[l][psp->index_ct_ee]-cl2[l][psp->index_ct_ee]) + /cl2[l][psp->index_ct_ee]),2); + } + + return _SUCCESS_; + +} + +int chi2_planck( + struct spectra * psp, + double ** cl1, /* treated as 'theoretical spectrum' */ + double ** cl2, /* treated as 'observed spectrum' */ + double ** noise, + double * chi2) { + + int l; + double fsky=0.65; + double clTT_th,clEE_th,clTE_th; + double clTT_obs,clEE_obs,clTE_obs; + double det_mixed,det_th,det_obs; + double factor; + + *chi2=0.; + for (l=2; l <= l_max; l++) { + +/* if (psp->ct_size == 1) { */ + if (0==1) { + + *chi2 += fsky*(2.*l+1.)*((cl2[l][0]+noise[l][0])/ + (cl1[l][0]+noise[l][0])+ + log((cl1[l][0]+noise[l][0])/(cl2[l][0]+noise[l][0]))-1.); + +/* *chi2 += fsky*(2.*l+1.)*((cl2[l][0])/ */ +/* (cl1[l][0])+ */ +/* log((cl1[l][0])/(cl2[l][0]))-1.); */ + + +/* factor=l*(l+1.)/2./_PI_; */ +/* printf("%d %e %e %e\n",l,factor*cl1[l][0],factor*cl2[l][0],factor*noise[l][0]); */ + + } + else { + + clTT_th = cl1[l][psp->index_ct_tt]+noise[l][psp->index_ct_tt]; + clEE_th = cl1[l][psp->index_ct_ee]+noise[l][psp->index_ct_ee]; + clTE_th = cl1[l][psp->index_ct_te]; + + clTT_obs = cl2[l][psp->index_ct_tt]+noise[l][psp->index_ct_tt]; + clEE_obs = cl2[l][psp->index_ct_ee]+noise[l][psp->index_ct_ee]; + clTE_obs = cl2[l][psp->index_ct_te]; + + det_mixed = 0.5*(clTT_th*clEE_obs+clTT_obs*clEE_th)-clTE_th*clTE_obs; + + det_th = clTT_th*clEE_th-clTE_th*clTE_th; + + det_obs = clTT_obs*clEE_obs-clTE_obs*clTE_obs; + + *chi2 += fsky*(2.*l+1.)*(2.*(det_mixed/det_th-1.)+log(det_th/det_obs)); + } + } + + return _SUCCESS_; + +} + +int noise_planck( + struct background * pba, + struct thermo * pth, + struct spectra * psp, + double ** noise + ) { + + int num_channel,channel,l; + double * theta, * deltaT, * deltaP; + + num_channel=3; + + theta=malloc(num_channel*sizeof(double)); + deltaT=malloc(num_channel*sizeof(double)); + deltaP=malloc(num_channel*sizeof(double)); + + /* 100 GHz*/ + theta[0]=9.5/3437.75; /* converted from arcmin to radian */ + deltaT[0]=(6.8e-6/pba->T_cmb); /* converted from K to dimensionless */ + deltaP[0]=(10.9e-6/pba->T_cmb); /* converted from K to dimensionless */ + + /* 143 GHz*/ + theta[1]=7.1/3437.75; + deltaT[1]=(6.0e-6/pba->T_cmb); + deltaP[1]=(11.4e-6/pba->T_cmb); + + /* 217 GHz*/ + theta[2]=5.0/3437.75; + deltaT[2]=(13.1e-6/pba->T_cmb); + deltaP[2]=(26.7e-6/pba->T_cmb); + + for (l=2; l<=l_max; l++) { + + for (channel=0; channelhas_tt) { + noise[l][psp->index_ct_tt] += + pow((exp(-l*(l+1.)*theta[channel]*theta[channel]/16./log(2.)) + /theta[channel]/deltaT[channel]),2); + } + if (psp->has_ee) { + noise[l][psp->index_ct_ee] += + pow((exp(-l*(l+1.)*theta[channel]*theta[channel]/16./log(2.)) + /theta[channel]/deltaP[channel]),2); + } + } + + if (psp->has_tt) { + noise[l][psp->index_ct_tt] = 1./noise[l][psp->index_ct_tt]; + } + if (psp->has_ee) { + noise[l][psp->index_ct_ee] = 1./noise[l][psp->index_ct_ee]; + } + } + + free(theta); + free(deltaT); + free(deltaP); + + return _SUCCESS_; + +} + diff --git a/class/test/test_hyperspherical.c b/class/test/test_hyperspherical.c new file mode 100644 index 00000000..76af5667 --- /dev/null +++ b/class/test/test_hyperspherical.c @@ -0,0 +1,157 @@ +#include "common.h" +#include "hyperspherical.h" + + +int main(){ + + int sgnK; + double nu; + int *lvec; + int l_size; + int index_l, index_x, index_nu; + double xmax, sampling, supersampling; + double *xvec, *Phi, *nuvec; + int nu_size; + double dx; + double Inum; + double Iexact, l; + FILE * outnum, *outexact, *out; + double maxerr; + + HyperInterpStruct HIS; + ErrorMsg error_message; + + sgnK = 1; + + switch(sgnK){ + case 0: + outnum = fopen("I_num.dat","w"); + outexact = fopen("I_exact.dat","w"); + case -1: + outnum = fopen("I_num_open.dat","w"); + outexact = fopen("I_exact.dat","w"); + case 1: + outnum = fopen("I_num_closed.dat","w"); + outexact = fopen("I_exact.dat","w"); +} + + + l_size = 400; + int l_size_in = l_size; + nu_size = 100; + + nu = 10.0; + + lvec = malloc(sizeof(int)*l_size); + out = fopen("lvec.dat","w"); + for (index_l=0; index_l=nu){ + l_size = k-1; + break; + } + } + } + + + sampling = 6.0; + + class_call(hyperspherical_HIS_create(sgnK, + nu, + l_size, + lvec, + 1e-6, + xmax, + sampling, + lvec[l_size-1]+1, + 1e-20, + &HIS, + error_message), + error_message, + error_message); + + supersampling = 100*HIS.x_size; + xvec = malloc(sizeof(double)*supersampling); + Phi = malloc(sizeof(double)*supersampling); + + for (index_x=0; index_xerror_message, + errmsg); + + class_call(thermodynamics_init(ppr,pba,pth), + pth->error_message, + errmsg); + + class_call(perturb_init(ppr,pba,pth,ppt), + ppt->error_message, + errmsg); + + class_call(primordial_init(ppr,ppt,ppm), + ppm->error_message, + errmsg); + + class_call(nonlinear_init(ppr,pba,pth,ppt,ppm,pnl), + pnl->error_message, + errmsg); + + class_call(transfer_init(ppr,pba,pth,ppt,pnl,ptr), + ptr->error_message, + errmsg); + + class_call(spectra_init(ppr,pba,ppt,ppm,pnl,ptr,psp), + psp->error_message, + errmsg); + + class_call(lensing_init(ppr,ppt,psp,pnl,ple), + ple->error_message, + errmsg); + + /****** write the Cl values in the input array cl[l] *******/ + + for (l=2; l <= l_max; l++) { + + class_call(output_total_cl_at_l(psp,ple,pop,(double)l,cl[l]), + psp->error_message, + errmsg); + } + + /****** all calculations done, now free the structures ******/ + + class_call(lensing_free(ple), + ple->error_message, + errmsg); + + class_call(spectra_free(psp), + psp->error_message, + errmsg); + + class_call(transfer_free(ptr), + ptr->error_message, + errmsg); + + class_call(nonlinear_free(pnl), + pnl->error_message, + errmsg); + + class_call(primordial_free(ppm), + ppm->error_message, + errmsg); + + class_call(perturb_free(ppt), + ppt->error_message, + errmsg); + + class_call(thermodynamics_free(pth), + pth->error_message, + errmsg); + + class_call(background_free(pba), + pba->error_message, + errmsg); + + return _SUCCESS_; + +} + +int main() { + + struct precision pr; /* for precision parameters */ + struct background ba; /* for cosmological background */ + struct thermo th; /* for thermodynamics */ + struct perturbs pt; /* for source functions */ + struct transfers tr; /* for transfer functions */ + struct primordial pm; /* for primordial spectra */ + struct spectra sp; /* for output spectra */ + struct nonlinear nl; /* for non-linear spectra */ + struct lensing le; /* for lensed spectra */ + struct output op; /* for output files */ + ErrorMsg errmsg; /* for error messages */ + + int i; + int l,l_max; + int num_ct_max=7; + double ** cl; + struct file_content fc; + + /* choose a value of l_max in C_l's */ + l_max=3000; + + /* all parameters for which we don't want to keep default values + should be passed to the code through a file_content + structure. Create such a structure with the size you need: 9 in + this exemple */ + parser_init(&fc,10,"",errmsg); + + /* assign values to these 9 parameters. Some will be fixed, some + will be varied in the loop. */ + strcpy(fc.name[0],"output"); + strcpy(fc.value[0],"tCl,pCl,lCl"); + + strcpy(fc.name[1],"l_max_scalars"); + sprintf(fc.value[1],"%d",l_max); + + strcpy(fc.name[2],"lensing"); + sprintf(fc.value[2],"yes"); + + strcpy(fc.name[3],"H0"); + sprintf(fc.value[3],"%e",72.); + + strcpy(fc.name[4],"omega_b"); + sprintf(fc.value[4],"%e",0.024); + + strcpy(fc.name[5],"omega_cdm"); + sprintf(fc.value[5],"%e",0.05); + + strcpy(fc.name[6],"z_reio"); + sprintf(fc.value[6],"%e",10.); + + strcpy(fc.name[7],"A_s"); + sprintf(fc.value[7],"%e",2.3e-9); + + strcpy(fc.name[8],"n_s"); + sprintf(fc.value[8],"%e",1.); + + strcpy(fc.name[9],"T_cmb"); + sprintf(fc.value[9],"%e",2.726); + + /* allocate the array where calculated Cl's will be written (we + could add another array with P(k), or extract other results from + the code - here we assume that we are interested in the C_l's + only */ + cl=malloc((l_max+1)*sizeof(double*)); + for (l=0;l<=l_max;l++) + cl[l]=malloc(num_ct_max*sizeof(double)); + + /* now, loop over values of some of these parameters: in this + exemple, omega_b */ + for (i=0; i<=10; i++) { + + /* assign one value to omega_b */ + sprintf(fc.value[4],"%e",0.01+i*0.002); + printf("#run with omega_b = %s\n",fc.value[4]); + + /* calls class and return the C_l's*/ + if (class(&fc,&pr,&ba,&th,&pt,&pm,&nl,&tr,&sp,&le,&op,l_max,cl,errmsg) == _FAILURE_) { + printf("\n\nError in class \n=>%s\n",errmsg); + return _FAILURE_; + } + + /* print the lensed C_l^TT, C_l^EE, C_l^TE's for this run */ + for (l=2;l<=l_max;l++) { + fprintf(stdout,"%d %e %e %e\n", + l, + cl[l][sp.index_ct_tt], + cl[l][sp.index_ct_ee], + cl[l][sp.index_ct_te]); + } + fprintf(stdout,"\n"); + } + + for (l=0;lerror_message, + errmsg); + + class_call(thermodynamics_init(ppr,pba,pth), + pth->error_message, + errmsg); + + class_call(perturb_init(ppr,pba,pth,ppt), + ppt->error_message, + errmsg); + + class_call(primordial_init(ppr,ppt,ppm), + ppm->error_message, + errmsg); + + class_call(nonlinear_init(ppr,pba,pth,ppt,ppm,pnl), + pnl->error_message, + errmsg); + + class_call(transfer_init(ppr,pba,pth,ppt,pnl,ptr), + ptr->error_message, + errmsg); + + class_call(spectra_init(ppr,pba,ppt,ppm,pnl,ptr,psp), + psp->error_message, + errmsg); + + class_call(lensing_init(ppr,ppt,psp,pnl,ple), + ple->error_message, + errmsg); + + /****** write the Cl values in the input array cl[l] *******/ + + for (l=2; l <= l_max; l++) { + + class_call(output_total_cl_at_l(psp,ple,pop,(double)l,cl[l]), + psp->error_message, + errmsg); + } + + /****** all calculations done, now free the structures ******/ + + class_call(lensing_free(ple), + ple->error_message, + errmsg); + + class_call(spectra_free(psp), + psp->error_message, + errmsg); + + class_call(transfer_free(ptr), + ptr->error_message, + errmsg); + + class_call(nonlinear_free(pnl), + pnl->error_message, + errmsg); + + class_call(primordial_free(ppm), + ppm->error_message, + errmsg); + + class_call(perturb_free(ppt), + ppt->error_message, + errmsg); + + class_call(thermodynamics_free(pth), + pth->error_message, + errmsg); + + class_call(background_free(pba), + pba->error_message, + errmsg); + + return _SUCCESS_; + +} + +int main() { + + /* shared variable that will be common to all CLASS instances */ + int i; + int l,l_max; + int num_ct_max=7; + int num_loops=10; + + struct file_content fc; + ErrorMsg errmsg_parser; + + int total_number_of_threads; + int number_of_class_instances; + int number_of_threads_inside_class; + + int index_ct_tt; + int index_ct_ee; + int index_ct_te; + + /* dealing with the openMP part (number of instances, number of + threads per instance...) */ + +#ifdef _OPENMP + + /* Determine the number of threads, class instances and nested + threads */ + total_number_of_threads = omp_get_max_threads(); + + /* User-fixed number of CLASS instances to be run in parallel (Total + number of threads should be dividable by this number) */ + number_of_class_instances=2; + + if ((total_number_of_threads % number_of_class_instances) != 0) + printf("The total number of threads, %d, is not a mutiple of the requested number of CLASS instances, %d\n",total_number_of_threads,number_of_class_instances); + number_of_threads_inside_class = total_number_of_threads/number_of_class_instances; + + /* inferred number of threads per instance */ + printf("# Total number of available threads = %d, used to run\n", + total_number_of_threads); + printf("# -> %d CLASS executables in parallel\n", + number_of_class_instances); + printf("# -> %d threads inside each CLASS executables\n", + number_of_threads_inside_class); + + /* Turn on nested parallelism */ + omp_set_nested(1); +#endif + + /* choose a value of l_max in C_l's */ + l_max=3000; + + /* all parameters for which we don't want to keep default values + should be passed to the code through a file_content + structure. Create such a structure with the size you need: 10 in + this exemple */ + parser_init(&fc,10,"",errmsg_parser); + + /* assign values to these 9 parameters. Some will be fixed, some + will be varied in the loop. */ + strcpy(fc.name[0],"output"); + strcpy(fc.value[0],"tCl,pCl,lCl"); + + strcpy(fc.name[1],"l_max_scalars"); + sprintf(fc.value[1],"%d",l_max); + + strcpy(fc.name[2],"lensing"); + sprintf(fc.value[2],"yes"); + + strcpy(fc.name[3],"H0"); + sprintf(fc.value[3],"%e",72.); + + strcpy(fc.name[4],"omega_b"); + sprintf(fc.value[4],"%e",0.024); + + strcpy(fc.name[5],"omega_cdm"); + sprintf(fc.value[5],"%e",0.05); + + strcpy(fc.name[6],"z_reio"); + sprintf(fc.value[6],"%e",10.); + + strcpy(fc.name[7],"A_s"); + sprintf(fc.value[7],"%e",2.3e-9); + + strcpy(fc.name[8],"n_s"); + sprintf(fc.value[8],"%e",1.); + + strcpy(fc.name[9],"perturbations_verbose"); + sprintf(fc.value[9],"%d",0); // Trick: set to 2 to cross-check actual number of threads per CLASS instance + + /* Create an array of Cl's where all results will be stored for each parameter value in the loop */ + double *** cl; + cl = malloc(num_loops*sizeof(double**)); + + /* Create one thread for each instance of CLASS */ +#pragma omp parallel num_threads(number_of_class_instances) + { + + /* set the number of threads inside each CLASS instance */ +#ifdef _OPENMP + omp_set_num_threads(number_of_threads_inside_class); +#endif + + /* for each thread/instance, create all CLASS input/output + structures (these variables are being declared insode the + parallel zone, hence they are openMP private variables) */ + + struct precision pr; /* for precision parameters */ + struct background ba; /* for cosmological background */ + struct thermo th; /* for thermodynamics */ + struct perturbs pt; /* for source functions */ + struct transfers tr; /* for transfer functions */ + struct primordial pm; /* for primordial spectra */ + struct spectra sp; /* for output spectra */ + struct nonlinear nl; /* for non-linear spectra */ + struct lensing le; /* for lensed spectra */ + struct output op; /* for output files */ + ErrorMsg errmsg; /* for error messages */ + + struct file_content fc_local; + int j,iam; + + /* copy the shared file content into the local file content used by each instance */ + parser_init(&fc_local,fc.size,"",errmsg); + for (j=0; j < fc.size; j++) { + strcpy(fc_local.value[j],fc.value[j]); + strcpy(fc_local.name[j],fc.name[j]); + fc_local.read[j]=fc.read[j]; + } + + /* loop over (num_loops) values of some parameters: in this exemple, omega_b */ +#pragma omp for schedule(static,1) + for (i=0; i<=num_loops; i++) { + +#ifdef _OPENMP + iam=omp_get_thread_num(); +#else + iam=0; +#endif + + /* assign one value to omega_b */ + sprintf(fc_local.value[4],"%e",0.01+i*0.002); + + printf("# %d\tthread=%d : running with omega_b = %s\n",i,iam,fc_local.value[4]); + + /* allocate the array where the Cl's calculated by one instance + will be written (we could add another array with P(k), or + extract other results from the code - here we assume that we + are interested in the C_l's only */ + cl[i]=malloc((l_max+1)*sizeof(double*)); + for (l=0;l<=l_max;l++) + cl[i][l]=malloc(num_ct_max*sizeof(double)); + + /* calls class and return the C_l's*/ + if (class(&fc_local,&pr,&ba,&th,&pt,&pm,&nl,&tr,&sp,&le,&op,l_max,cl[i],errmsg) == _FAILURE_) { + printf("\n\nError in class \n=>%s\n",errmsg); + //return _FAILURE_; + } + + /* if this is the first call, extract dynamically the value of indices used in the output */ + if ((i==0) && (iam==0)) { + index_ct_tt=sp.index_ct_tt; + index_ct_te=sp.index_ct_te; + index_ct_ee=sp.index_ct_ee; + } + + } // end of loop over parameters + } // end parallel zone + + /* write in file the lensed C_l^TT, C_l^EE, C_l^TE's obtained in all runs */ + + FILE * out=fopen("output/test_loops_omp.dat","w"); + + for (i=0; i%s\n",errmsg); + return _FAILURE_; + } + + if (background_init(&pr,&ba) == _FAILURE_) { + printf("\n\nError running background_init \n=>%s\n",ba.error_message); + return _FAILURE_; + } + + if (thermodynamics_init(&pr,&ba,&th) == _FAILURE_) { + printf("\n\nError in thermodynamics_init \n=>%s\n",th.error_message); + return _FAILURE_; + } + + if (perturb_init(&pr,&ba,&th,&pt) == _FAILURE_) { + printf("\n\nError in perturb_init \n=>%s\n",pt.error_message); + return _FAILURE_; + } + + if (primordial_init(&pr,&pt,&pm) == _FAILURE_) { + printf("\n\nError in primordial_init \n=>%s\n",pm.error_message); + return _FAILURE_; + } + + if (nonlinear_init(&pr,&ba,&th,&pt,&pm,&nl) == _FAILURE_) { + printf("\n\nError in nonlinear_init \n=>%s\n",nl.error_message); + return _FAILURE_; + } + + /****** output the transfer functions ******/ + + double z,k_nl,k; + FILE * output; + double * pvecback; + int index_tau,index_k; + int junk; + double r_nl; + + if (nl.method == nl_halofit) { + + printf("Non-linear scale k_NL found by halofit:\n"); + + z=0.; + if (nonlinear_k_nl_at_z(&ba,&nl,z,&k_nl) == _FAILURE_) { + printf("\n\nError in nonlinear_k_nl_at_z \n=>%s\n",nl.error_message); + return _FAILURE_; + } + printf(" z=%f k_nl=%e\n",z,k_nl); + + z=0.5; + if (nonlinear_k_nl_at_z(&ba,&nl,z,&k_nl) == _FAILURE_) { + printf("\n\nError in nonlinear_k_nl_at_z \n=>%s\n",nl.error_message); + return _FAILURE_; + } + printf(" z=%f k_nl=%e\n",z,k_nl); + + z=1.0; + if (nonlinear_k_nl_at_z(&ba,&nl,z,&k_nl) == _FAILURE_) { + printf("\n\nError in nonlinear_k_nl_at_z \n=>%s\n",nl.error_message); + return _FAILURE_; + } + printf(" z=%f k_nl=%e\n",z,k_nl); + + printf("Non-linear correction factor r_nl=sqrt(P_nl/P_l) written in file with columns (z, k, r_nl\n"); + + output=fopen("output/r_nl.dat","w"); + + pvecback=malloc(ba.bg_size_short*sizeof(double)); + + for (index_tau=0; index_tau%s\n",ba.error_message); + return _FAILURE_; + } + + z=ba.a_today/pvecback[ba.index_bg_a]-1.; + + for (index_k=0; index_k%s\n",nl.error_message); + return _FAILURE_; + } + + if (primordial_free(&pm) == _FAILURE_) { + printf("\n\nError in primordial_free \n=>%s\n",pm.error_message); + return _FAILURE_; + } + + if (perturb_free(&pt) == _FAILURE_) { + printf("\n\nError in perturb_free \n=>%s\n",pt.error_message); + return _FAILURE_; + } + + if (thermodynamics_free(&th) == _FAILURE_) { + printf("\n\nError in thermodynamics_free \n=>%s\n",th.error_message); + return _FAILURE_; + } + + if (background_free(&ba) == _FAILURE_) { + printf("\n\nError in background_free \n=>%s\n",ba.error_message); + return _FAILURE_; + } + + return _SUCCESS_; + +} diff --git a/class/test/test_optimize.c b/class/test/test_optimize.c new file mode 100755 index 00000000..04ef2514 --- /dev/null +++ b/class/test/test_optimize.c @@ -0,0 +1,641 @@ +/** @file class.c + * Julien Lesgourgues, 20.04.2010 + */ + +#include "class.h" + +int class( + struct precision * ppr, + struct background * pba, + struct thermo * pth, + struct perturbs * ppt, + struct bessels * pbs, + struct transfers * ptr, + struct primordial * ppm, + struct spectra * psp, + struct nonlinear * pnl, + struct lensing *ple, + struct output * pop, + int l_max, + double ** cl, + ErrorMsg errmsg); + +int class_assuming_bessels_computed( + struct precision * ppr, + struct background * pba, + struct thermo * pth, + struct perturbs * ppt, + struct bessels * pbs, + struct transfers * ptr, + struct primordial * ppm, + struct spectra * psp, + struct nonlinear * pnl, + struct lensing *ple, + struct output * pop, + int l_max, + double ** cl, + ErrorMsg errmsg); + +int chi2_simple( + struct spectra * psp, + double ** cl1, + double ** cl2, + int lmax, + double * chi2); + +int chi2_planck( + struct spectra * psp, + double ** cl1, + double ** cl2, + double ** nl, + int lmax, + double * chi2); + +int noise_planck( + struct background * pba, + struct thermo * pth, + struct spectra * psp, + double ** nl, + int lmax + ); + +int main(int argc, char **argv) { + + struct precision pr; /* for precision parameters */ + struct background ba; /* for cosmological background */ + struct thermo th; /* for thermodynamics */ + struct perturbs pt; /* for source functions */ + struct bessels bs; /* for bessel functions */ + struct transfers tr; /* for transfer functions */ + struct primordial pm; /* for primordial spectra */ + struct spectra sp; /* for output spectra */ + struct nonlinear nl; /* for non-linear spectra */ + struct lensing le; /* for lensed spectra */ + struct output op; /* for output files */ + + ErrorMsg errmsg; + + int i,l_max,l; + + double parameter_initial,parameter_logstep; + double * parameter; + int param_num; + + double *** cl; + double ** noise; + double chi2,chi2_bis; + double percentage,max_percentage; + int max_l; + int ref_run; + + double * param; + + FILE * output; + FILE * results; + char filename[60]; + char results_name[60]; + char junk_string[120]; + int l_read; + +/*******************************/ + + param = &(pr.perturb_sampling_stepsize); + //param = &(pr.radiation_streaming_trigger_tau_over_tau_k); + //param = &(pr.radiation_streaming_trigger_tau_c_over_tau); + + parameter_initial=0.15; + parameter_logstep=1.1; + + param_num=10; + ref_run=-1; + + /* if ref_run<0, the reference is taken in the following external file: */ + + sprintf(filename,"output/cl_ref_cl_lensed.dat"); + +/*******************************************************/ + + if (input_init_from_arguments(argc,argv,&pr,&ba,&th,&pt,&bs,&tr,&pm,&sp,&nl,&le,&op,errmsg) == _FAILURE_) { + printf("\n\nError running input_init_from_arguments \n=>%s\n",errmsg); + return _FAILURE_; + } + + //l_max = pt.l_scalar_max; + l_max=3000; + + class_alloc(parameter,param_num*sizeof(double),errmsg); + + class_calloc(noise,(l_max+1),sizeof(double*),errmsg); + for (l=2; l <= l_max; l++) { + class_calloc(noise[l],2,sizeof(double),errmsg); + } + + + if (ref_run >= param_num) { + fprintf(stderr,"ref_run=%d out of allowed range\n",ref_run); + return _FAILURE_; + } + + else if (ref_run >= 0) { + class_alloc(cl,param_num*sizeof(double**),errmsg); + for (i=0; i%s\n",bs.error_message); + return _FAILURE_; + } + + for (i=0; i%s\n",bs.error_message); + return _FAILURE_; + } + + noise_planck(&ba,&th,&sp,noise,l_max); + + for (i=0; i10.) { + fprintf(stderr,"parameter=%e BAD: chi2=%e \n", + parameter[i],chi2); + } + else { + fprintf(stderr,"parameter=%e OK : chi2=%e \n", + parameter[i],chi2); + } + } + + return _SUCCESS_; + +} + + +int class( + struct precision * ppr, + struct background * pba, + struct thermo * pth, + struct perturbs * ppt, + struct bessels * pbs, + struct transfers * ptr, + struct primordial * ppm, + struct spectra * psp, + struct nonlinear * pnl, + struct lensing *ple, + struct output * pop, + int l_max, + double ** cl, + ErrorMsg errmsg) { + + int l; + double ** junk1; + double ** junk2; + + if (background_init(ppr,pba) == _FAILURE_) { + printf("\n\nError running background_init \n=>%s\n",pba->error_message); + return _FAILURE_; + } + + if (thermodynamics_init(ppr,pba,pth) == _FAILURE_) { + printf("\n\nError in thermodynamics_init \n=>%s\n",pth->error_message); + return _FAILURE_; + } + + if (perturb_init(ppr,pba,pth,ppt) == _FAILURE_) { + printf("\n\nError in perturb_init \n=>%s\n",ppt->error_message); + return _FAILURE_; + } + + if (bessel_init(ppr,pbs) == _FAILURE_) { + printf("\n\nError in bessel_init \n =>%s\n",pbs->error_message); + return _FAILURE_; + } + + if (transfer_init(ppr,pba,pth,ppt,pbs,ptr) == _FAILURE_) { + printf("\n\nError in transfer_init \n=>%s\n",ptr->error_message); + return _FAILURE_; + } + + if (primordial_init(ppr,ppt,ppm) == _FAILURE_) { + printf("\n\nError in primordial_init \n=>%s\n",ppm->error_message); + return _FAILURE_; + } + + if (spectra_init(ppr,pba,ppt,ptr,ppm,psp) == _FAILURE_) { + printf("\n\nError in spectra_init \n=>%s\n",psp->error_message); + return _FAILURE_; + } + + if (nonlinear_init(ppr,pba,pth,ppm,psp,pnl) == _FAILURE_) { + printf("\n\nError in nonlinear_init \n=>%s\n",pnl->error_message); + return _FAILURE_; + } + + if (lensing_init(ppr,ppt,psp,pnl,ple) == _FAILURE_) { + printf("\n\nError in lensing_init \n=>%s\n",ple->error_message); + return _FAILURE_; + } + + for (l=2; l <= l_max; l++) { + + if (output_total_cl_at_l(psp,ple,pop,(double)l,cl[l]) == _FAILURE_) { + printf("\n\nError in spectra_cl_at_l \n=>%s\n",psp->error_message); + return _FAILURE_; + } + + } + + /****** done ******/ + + if (lensing_free(ple) == _FAILURE_) { + printf("\n\nError in spectra_free \n=>%s\n",ple->error_message); + return _FAILURE_; + } + + if (nonlinear_free(pnl) == _FAILURE_) { + printf("\n\nError in nonlinear_free \n=>%s\n",pnl->error_message); + return _FAILURE_; + } + + if (spectra_free(psp) == _FAILURE_) { + printf("\n\nError in spectra_free \n=>%s\n",psp->error_message); + return _FAILURE_; + } + + if (primordial_free(ppm) == _FAILURE_) { + printf("\n\nError in primordial_free \n=>%s\n",ppm->error_message); + return _FAILURE_; + } + + if (transfer_free(ptr) == _FAILURE_) { + printf("\n\nError in transfer_free \n=>%s\n",ptr->error_message); + return _FAILURE_; + } + + if (bessel_free(pbs) == _FAILURE_) { + printf("\n\nError in bessel_free \n=>%s\n",pbs->error_message); + return _FAILURE_; + } + + if (perturb_free(ppt) == _FAILURE_) { + printf("\n\nError in perturb_free \n=>%s\n",ppt->error_message); + return _FAILURE_; + } + + if (thermodynamics_free(pth) == _FAILURE_) { + printf("\n\nError in thermodynamics_free \n=>%s\n",pth->error_message); + return _FAILURE_; + } + + if (background_free(pba) == _FAILURE_) { + printf("\n\nError in background_free \n=>%s\n",pba->error_message); + return _FAILURE_; + } + + return _SUCCESS_; + +} + +int class_assuming_bessels_computed( + struct precision * ppr, + struct background * pba, + struct thermo * pth, + struct perturbs * ppt, + struct bessels * pbs, + struct transfers * ptr, + struct primordial * ppm, + struct spectra * psp, + struct nonlinear * pnl, + struct lensing * ple, + struct output * pop, + int l_max, + double ** cl, + ErrorMsg errmsg) { + + int l; + double ** junk1; + double ** junk2; + + if (background_init(ppr,pba) == _FAILURE_) { + printf("\n\nError running background_init \n=>%s\n",pba->error_message); + return _FAILURE_; + } + + if (thermodynamics_init(ppr,pba,pth) == _FAILURE_) { + printf("\n\nError in thermodynamics_init \n=>%s\n",pth->error_message); + return _FAILURE_; + } + + if (perturb_init(ppr,pba,pth,ppt) == _FAILURE_) { + printf("\n\nError in perturb_init \n=>%s\n",ppt->error_message); + return _FAILURE_; + } + + if (transfer_init(ppr,pba,pth,ppt,pbs,ptr) == _FAILURE_) { + printf("\n\nError in transfer_init \n=>%s\n",ptr->error_message); + return _FAILURE_; + } + + if (primordial_init(ppr,ppt,ppm) == _FAILURE_) { + printf("\n\nError in primordial_init \n=>%s\n",ppm->error_message); + return _FAILURE_; + } + + if (spectra_init(ppr,pba,ppt,ptr,ppm,psp) == _FAILURE_) { + printf("\n\nError in spectra_init \n=>%s\n",psp->error_message); + return _FAILURE_; + } + + if (nonlinear_init(ppr,pba,pth,ppm,psp,pnl) == _FAILURE_) { + printf("\n\nError in nonlinear_init \n=>%s\n",pnl->error_message); + return _FAILURE_; + } + + if (lensing_init(ppr,ppt,psp,pnl,ple) == _FAILURE_) { + printf("\n\nError in lensing_init \n=>%s\n",ple->error_message); + return _FAILURE_; + } + + for (l=2; l <= l_max; l++) { + + if (output_total_cl_at_l(psp,ple,pop,(double)l,cl[l]) == _FAILURE_) { + printf("\n\nError in spectra_cl_at_l \n=>%s\n",psp->error_message); + return _FAILURE_; + } + + //fprintf(stderr,"%d %e %e %e\n",l,cl[l][0],cl[l][1],cl[l][2]); + + } + + /****** done ******/ + + if (lensing_free(ple) == _FAILURE_) { + printf("\n\nError in spectra_free \n=>%s\n",ple->error_message); + return _FAILURE_; + } + + if (nonlinear_free(pnl) == _FAILURE_) { + printf("\n\nError in nonlinear_free \n=>%s\n",pnl->error_message); + return _FAILURE_; + } + + if (spectra_free(psp) == _FAILURE_) { + printf("\n\nError in spectra_free \n=>%s\n",psp->error_message); + return _FAILURE_; + } + + if (primordial_free(ppm) == _FAILURE_) { + printf("\n\nError in primordial_free \n=>%s\n",ppm->error_message); + return _FAILURE_; + } + + if (transfer_free(ptr) == _FAILURE_) { + printf("\n\nError in transfer_free \n=>%s\n",ptr->error_message); + return _FAILURE_; + } + + if (perturb_free(ppt) == _FAILURE_) { + printf("\n\nError in perturb_free \n=>%s\n",ppt->error_message); + return _FAILURE_; + } + + if (thermodynamics_free(pth) == _FAILURE_) { + printf("\n\nError in thermodynamics_free \n=>%s\n",pth->error_message); + return _FAILURE_; + } + + if (background_free(pba) == _FAILURE_) { + printf("\n\nError in background_free \n=>%s\n",pba->error_message); + return _FAILURE_; + } + + return _SUCCESS_; + +} + +int chi2_simple( + struct spectra * psp, + double ** cl1, + double ** cl2, + int lmax, + double * chi2) { + + int l; + + *chi2=0.; + for (l=2; l <= lmax; l++) { + *chi2 += + pow(((cl1[l][psp->index_ct_tt]-cl2[l][psp->index_ct_tt]) + /cl2[l][psp->index_ct_tt]),2) + + pow(((cl1[l][psp->index_ct_te]-cl2[l][psp->index_ct_te]) + /cl2[l][psp->index_ct_te]),2) + + pow(((cl1[l][psp->index_ct_ee]-cl2[l][psp->index_ct_ee]) + /cl2[l][psp->index_ct_ee]),2); + } + + return _SUCCESS_; + +} + +int chi2_planck( + struct spectra * psp, + double ** cl1, /* treated as 'theoretical spectrum' */ + double ** cl2, /* treated as 'observed spectrum' */ + double ** nl, + int lmax, + double * chi2) { + + int l; + double fsky=0.8; + double clTT_th,clEE_th,clTE_th; + double clTT_obs,clEE_obs,clTE_obs; + double det_mixed,det_th,det_obs; + double factor; + + *chi2=0.; + for (l=2; l <= lmax; l++) { + +/* if (psp->ct_size == 1) { */ + if (0==1) { + + *chi2 += fsky*(2.*l+1.)*((cl2[l][0]+nl[l][0])/ + (cl1[l][0]+nl[l][0])+ + log((cl1[l][0]+nl[l][0])/(cl2[l][0]+nl[l][0]))-1.); + + //fprintf(stderr,"%d %e %e %e\n",l,cl1[l][0],cl1[l][1],cl1[l][2]); + //fprintf(stderr,"%d %e %e %e\n",l,cl2[l][0],cl2[l][1],cl2[l][2]); + //fprintf(stderr,"%d %e %e\n",l,nl[l][0],nl[l][1]); + +/* *chi2 += fsky*(2.*l+1.)*((cl2[l][0])/ */ +/* (cl1[l][0])+ */ +/* log((cl1[l][0])/(cl2[l][0]))-1.); */ + + +/* factor=l*(l+1.)/2./_PI_; */ +/* printf("%d %e %e %e\n",l,factor*cl1[l][0],factor*cl2[l][0],factor*nl[l][0]); */ + + } + else { + + clTT_th = cl1[l][psp->index_ct_tt]+nl[l][psp->index_ct_tt]; + clEE_th = cl1[l][psp->index_ct_ee]+nl[l][psp->index_ct_ee]; + clTE_th = cl1[l][psp->index_ct_te]; + + clTT_obs = cl2[l][psp->index_ct_tt]+nl[l][psp->index_ct_tt]; + clEE_obs = cl2[l][psp->index_ct_ee]+nl[l][psp->index_ct_ee]; + clTE_obs = cl2[l][psp->index_ct_te]; + + //printf("%e %e %e %e %e %e\n",clTT_th,clTT_obs,clEE_th,clEE_obs,clTE_th,clTE_obs); + + det_mixed = 0.5*(clTT_th*clEE_obs+clTT_obs*clEE_th)-clTE_th*clTE_obs; + + det_th = clTT_th*clEE_th-clTE_th*clTE_th; + + det_obs = clTT_obs*clEE_obs-clTE_obs*clTE_obs; + + *chi2 += fsky*(2.*l+1.)*(2.*(det_mixed/det_th-1.)+log(det_th/det_obs)); + } + } + + return _SUCCESS_; + +} + +int noise_planck( + struct background * pba, + struct thermo * pth, + struct spectra * psp, + double ** nl, + int lmax + ) { + + int num_channel,channel,l; + double * theta, * deltaT, * deltaP; + + num_channel=3; + + theta=malloc(num_channel*sizeof(double)); + deltaT=malloc(num_channel*sizeof(double)); + deltaP=malloc(num_channel*sizeof(double)); + + /* 100 GHz*/ + theta[0]=9.5/3437.75; /* converted from arcmin to radian */ + deltaT[0]=(6.8e-6/pba->Tcmb); /* converted from K to dimensionless */ + deltaP[0]=(10.9e-6/pba->Tcmb); /* converted from K to dimensionless */ + + /* 143 GHz*/ + theta[1]=7.1/3437.75; + deltaT[1]=(6.0e-6/pba->Tcmb); + deltaP[1]=(11.4e-6/pba->Tcmb); + + /* 217 GHz*/ + theta[2]=5.0/3437.75; + deltaT[2]=(13.1e-6/pba->Tcmb); + deltaP[2]=(26.7e-6/pba->Tcmb); + + for (l=2; l<=lmax; l++) { + + for (channel=0; channelhas_tt) { + nl[l][0] += + pow((exp(-l*(l+1.)*theta[channel]*theta[channel]/16./log(2.)) + /theta[channel]/deltaT[channel]),2); + } + if (psp->has_ee) { + nl[l][1] += + pow((exp(-l*(l+1.)*theta[channel]*theta[channel]/16./log(2.)) + /theta[channel]/deltaP[channel]),2); + } + } + + if (psp->has_tt) { + nl[l][0] = 1./nl[l][0]; + } + if (psp->has_ee) { + nl[l][1] = 1./nl[l][1]; + } + + //fprintf(stderr,"%d %e %e\n",l,nl[l][0],nl[l][1]); + + } + + free(theta); + free(deltaT); + free(deltaP); + + return _SUCCESS_; + +} diff --git a/class/test/test_optimize_1D.c b/class/test/test_optimize_1D.c new file mode 100755 index 00000000..7249d0c2 --- /dev/null +++ b/class/test/test_optimize_1D.c @@ -0,0 +1,595 @@ +/** @file class.c + * Julien Lesgourgues, 20.04.2010 + */ + +#include "class.h" + +int class( + struct precision * ppr, + struct background * pba, + struct thermo * pth, + struct perturbs * ppt, + struct bessels * pbs, + struct transfers * ptr, + struct primordial * ppm, + struct spectra * psp, + struct lensing *ple, + struct output * pop, + int l_max, + double ** cl, + ErrorMsg errmsg); + +int class_assuming_bessels_computed( + struct precision * ppr, + struct background * pba, + struct thermo * pth, + struct perturbs * ppt, + struct bessels * pbs, + struct transfers * ptr, + struct primordial * ppm, + struct spectra * psp, + struct lensing *ple, + struct output * pop, + int l_max, + double ** cl, + ErrorMsg errmsg); + +int chi2_simple( + struct spectra * psp, + double ** cl1, + double ** cl2, + int lmax, + double * chi2); + +int chi2_planck( + struct spectra * psp, + double ** cl1, + double ** cl2, + double ** nl, + int lmax, + double * chi2); + +int noise_planck( + struct background * pba, + struct thermo * pth, + struct spectra * psp, + double ** nl, + int lmax + ); + +int main(int argc, char **argv) { + + struct precision pr; /* for precision parameters */ + struct background ba; /* for cosmological background */ + struct thermo th; /* for thermodynamics */ + struct perturbs pt; /* for source functions */ + struct bessels bs; /* for bessel functions */ + struct transfers tr; /* for transfer functions */ + struct primordial pm; /* for primordial spectra */ + struct spectra sp; /* for output spectra */ + struct lensing le; /* for lensed spectra */ + struct output op; /* for output files */ + struct spectra_nl nl; /* for calculation of non-linear spectra */ + + ErrorMsg errmsg; + + int i,l_max,l; + + struct file_content fc; + + double parameter_initial,parameter_logstep; + double * parameter; + int param_num; + + double *** cl; + double ** noise; + double chi2,chi2_bis; + double percentage,max_percentage; + int max_l; + int ref_run; + + l_max=2500; + + parser_init(&fc,4,errmsg); + + strcpy(fc.name[0],"output"); + strcpy(fc.value[0],"tCl,pCl"); + + strcpy(fc.name[1],"l_max_scalars"); + sprintf(fc.value[1],"%d",l_max); + +/* strcpy(fc.name[2],"perturbations_verbose"); */ +/* sprintf(fc.value[2],"%d",2); */ + +/*******************************************************/ + + strcpy(fc.name[2],"lensing"); + strcpy(fc.value[2],"no"); + + strcpy(fc.name[3],"transfer_cut_threshold_cl"); + + parameter_initial=1.e-7; + parameter_logstep=1.3; + + param_num=30; + ref_run=0; + +/*******************************************************/ + + class_alloc(cl,param_num*sizeof(double**),errmsg); + class_alloc(parameter,param_num*sizeof(double),errmsg); + for (i=0; i%s\n",errmsg); + return _FAILURE_; + } + + if (i==0) { + + if (bessel_init(&pr,&bs) == _FAILURE_) { + printf("\n\nError in bessel_init \n =>%s\n",bs.error_message); + return _FAILURE_; + } + } + + + /* class(&pr,&ba,&th,&pt,&bs,&tr,&pm,&sp,&le,&op,l_max,cl[i],errmsg); */ + class_assuming_bessels_computed(&pr,&ba,&th,&pt,&bs,&tr,&pm,&sp,&le,&op,l_max,cl[i],errmsg); + + +/* for (l=2; l <= 2500; l++) */ +/* printf("%d %e %e %e\n",l, */ + /* (l*(l+1)/2./_PI_)*cl[i][l][0], */ /* here cl is the dimensionless C_l */ + /* (l*(l+1)/2./_PI_)*cl[i][l][1], */ /* multiply by pow((th.Tcmb*1.e6),2) for muK */ +/* (l*(l+1)/2./_PI_)*cl[i][l][2]); */ + +/* printf("\n"); */ + + } + + if (bessel_free(&bs) == _FAILURE_) { + printf("\n\nError in bessel_free \n=>%s\n",bs.error_message); + return _FAILURE_; + } + +/* for (i=0; i max_percentage) { */ +/* max_percentage = percentage; */ +/* max_l = l; */ +/* } */ +/* } */ + +/* chi2_simple(cl[i],cl[param_num-1],2500,&chi2_bis); */ + +/* fprintf(stderr,"parameter=%e chi2=%e (%e) l=%d percentage=%g\n", */ +/* parameter[i],chi2,chi2_bis,max_l,max_percentage); */ +/* } */ + + noise_planck(&ba,&th,&sp,noise,l_max); + +/* for (l=2;l<=l_max;l++) { */ +/* printf("%d %e %e %e %e %e %e\n",l, */ +/* (l*(l+1)/2./_PI_)*cl[0][l][0]*pow(th.Tcmb*1.e6,2), */ +/* (l*(l+1)/2./_PI_)*cl[0][l][1]*pow(th.Tcmb*1.e6,2), */ +/* (l*(l+1)/2./_PI_)*cl[0][l][2]*pow(th.Tcmb*1.e6,2), */ +/* (l*(l+1)/2./_PI_)*noise[l][0]*pow(th.Tcmb*1.e6,2), */ +/* (l*(l+1)/2./_PI_)*noise[l][1]*pow(th.Tcmb*1.e6,2), */ +/* (l*(l+1)/2./_PI_)*noise[l][2]*pow(th.Tcmb*1.e6,2)); */ +/* } */ + + for (i=0; i0.1) { + fprintf(stderr,"parameter=%e BAD: chi2=%2g \n", + parameter[i],chi2); + } + else { + fprintf(stderr,"parameter=%e OK : chi2=%e \n", + parameter[i],chi2); + } + } + + return _SUCCESS_; + +} + + +int class( + struct precision * ppr, + struct background * pba, + struct thermo * pth, + struct perturbs * ppt, + struct bessels * pbs, + struct transfers * ptr, + struct primordial * ppm, + struct spectra * psp, + struct lensing *ple, + struct output * pop, + int l_max, + double ** cl, + ErrorMsg errmsg) { + + int l; + double ** junk1; + double ** junk2; + + if (background_init(ppr,pba) == _FAILURE_) { + printf("\n\nError running background_init \n=>%s\n",pba->error_message); + return _FAILURE_; + } + + if (thermodynamics_init(ppr,pba,pth) == _FAILURE_) { + printf("\n\nError in thermodynamics_init \n=>%s\n",pth->error_message); + return _FAILURE_; + } + + if (perturb_init(ppr,pba,pth,ppt) == _FAILURE_) { + printf("\n\nError in perturb_init \n=>%s\n",ppt->error_message); + return _FAILURE_; + } + + if (bessel_init(ppr,pbs) == _FAILURE_) { + printf("\n\nError in bessel_init \n =>%s\n",pbs->error_message); + return _FAILURE_; + } + + if (transfer_init(ppr,pba,pth,ppt,pbs,ptr) == _FAILURE_) { + printf("\n\nError in transfer_init \n=>%s\n",ptr->error_message); + return _FAILURE_; + } + + if (primordial_init(ppr,ppt,ppm) == _FAILURE_) { + printf("\n\nError in primordial_init \n=>%s\n",ppm->error_message); + return _FAILURE_; + } + + if (spectra_init(pba,ppt,ptr,ppm,psp) == _FAILURE_) { + printf("\n\nError in spectra_init \n=>%s\n",psp->error_message); + return _FAILURE_; + } + + if (lensing_init(ppr,ppt,psp,pnl,ple) == _FAILURE_) { + printf("\n\nError in lensing_init \n=>%s\n",ple->error_message); + return _FAILURE_; + } + + for (l=2; l <= l_max; l++) { + + if (output_total_cl_at_l(psp,ple,pop,(double)l,cl[l]) == _FAILURE_) { + printf("\n\nError in spectra_cl_at_l \n=>%s\n",psp->error_message); + return _FAILURE_; + } + + } + + /****** done ******/ + + if (spectra_free(psp) == _FAILURE_) { + printf("\n\nError in spectra_free \n=>%s\n",psp->error_message); + return _FAILURE_; + } + + if (primordial_free(ppm) == _FAILURE_) { + printf("\n\nError in primordial_free \n=>%s\n",ppm->error_message); + return _FAILURE_; + } + + if (transfer_free(ptr) == _FAILURE_) { + printf("\n\nError in transfer_free \n=>%s\n",ptr->error_message); + return _FAILURE_; + } + + if (bessel_free(pbs) == _FAILURE_) { + printf("\n\nError in bessel_free \n=>%s\n",pbs->error_message); + return _FAILURE_; + } + + if (perturb_free(ppt) == _FAILURE_) { + printf("\n\nError in perturb_free \n=>%s\n",ppt->error_message); + return _FAILURE_; + } + + if (thermodynamics_free(pth) == _FAILURE_) { + printf("\n\nError in thermodynamics_free \n=>%s\n",pth->error_message); + return _FAILURE_; + } + + if (background_free(pba) == _FAILURE_) { + printf("\n\nError in background_free \n=>%s\n",pba->error_message); + return _FAILURE_; + } + + return _SUCCESS_; + +} + +int class_assuming_bessels_computed( + struct precision * ppr, + struct background * pba, + struct thermo * pth, + struct perturbs * ppt, + struct bessels * pbs, + struct transfers * ptr, + struct primordial * ppm, + struct spectra * psp, + struct lensing * ple, + struct output * pop, + int l_max, + double ** cl, + ErrorMsg errmsg) { + + int l; + double ** junk1; + double ** junk2; + + if (background_init(ppr,pba) == _FAILURE_) { + printf("\n\nError running background_init \n=>%s\n",pba->error_message); + return _FAILURE_; + } + + if (thermodynamics_init(ppr,pba,pth) == _FAILURE_) { + printf("\n\nError in thermodynamics_init \n=>%s\n",pth->error_message); + return _FAILURE_; + } + + if (perturb_init(ppr,pba,pth,ppt) == _FAILURE_) { + printf("\n\nError in perturb_init \n=>%s\n",ppt->error_message); + return _FAILURE_; + } + + if (transfer_init(ppr,pba,pth,ppt,pbs,ptr) == _FAILURE_) { + printf("\n\nError in transfer_init \n=>%s\n",ptr->error_message); + return _FAILURE_; + } + + if (primordial_init(ppr,ppt,ppm) == _FAILURE_) { + printf("\n\nError in primordial_init \n=>%s\n",ppm->error_message); + return _FAILURE_; + } + + if (spectra_init(pba,ppt,ptr,ppm,psp) == _FAILURE_) { + printf("\n\nError in spectra_init \n=>%s\n",psp->error_message); + return _FAILURE_; + } + + if (lensing_init(ppr,ppt,psp,pnl,ple) == _FAILURE_) { + printf("\n\nError in lensing_init \n=>%s\n",ple->error_message); + return _FAILURE_; + } + + for (l=2; l <= l_max; l++) { + + if (output_total_cl_at_l(psp,ple,pop,(double)l,cl[l]) == _FAILURE_) { + printf("\n\nError in spectra_cl_at_l \n=>%s\n",psp->error_message); + return _FAILURE_; + } + + } + + /****** done ******/ + + if (lensing_free(ple) == _FAILURE_) { + printf("\n\nError in spectra_free \n=>%s\n",ple->error_message); + return _FAILURE_; + } + + if (spectra_free(psp) == _FAILURE_) { + printf("\n\nError in spectra_free \n=>%s\n",psp->error_message); + return _FAILURE_; + } + + if (primordial_free(ppm) == _FAILURE_) { + printf("\n\nError in primordial_free \n=>%s\n",ppm->error_message); + return _FAILURE_; + } + + if (transfer_free(ptr) == _FAILURE_) { + printf("\n\nError in transfer_free \n=>%s\n",ptr->error_message); + return _FAILURE_; + } + + if (perturb_free(ppt) == _FAILURE_) { + printf("\n\nError in perturb_free \n=>%s\n",ppt->error_message); + return _FAILURE_; + } + + if (thermodynamics_free(pth) == _FAILURE_) { + printf("\n\nError in thermodynamics_free \n=>%s\n",pth->error_message); + return _FAILURE_; + } + + if (background_free(pba) == _FAILURE_) { + printf("\n\nError in background_free \n=>%s\n",pba->error_message); + return _FAILURE_; + } + + return _SUCCESS_; + +} + +int chi2_simple( + struct spectra * psp, + double ** cl1, + double ** cl2, + int lmax, + double * chi2) { + + int l; + + *chi2=0.; + for (l=2; l <= lmax; l++) { + *chi2 += + pow(((cl1[l][psp->index_ct_tt]-cl2[l][psp->index_ct_tt]) + /cl2[l][psp->index_ct_tt]),2) + + pow(((cl1[l][psp->index_ct_te]-cl2[l][psp->index_ct_te]) + /cl2[l][psp->index_ct_te]),2) + + pow(((cl1[l][psp->index_ct_ee]-cl2[l][psp->index_ct_ee]) + /cl2[l][psp->index_ct_ee]),2); + } + + return _SUCCESS_; + +} + +int chi2_planck( + struct spectra * psp, + double ** cl1, /* treated as 'theoretical spectrum' */ + double ** cl2, /* treated as 'observed spectrum' */ + double ** nl, + int lmax, + double * chi2) { + + int l; + double fsky=0.8; + double clTT_th,clEE_th,clTE_th; + double clTT_obs,clEE_obs,clTE_obs; + double det_mixed,det_th,det_obs; + double factor; + + *chi2=0.; + for (l=2; l <= lmax; l++) { + +/* if (psp->ct_size == 1) { */ + if (0==1) { + + *chi2 += fsky*(2.*l+1.)*((cl2[l][0]+nl[l][0])/ + (cl1[l][0]+nl[l][0])+ + log((cl1[l][0]+nl[l][0])/(cl2[l][0]+nl[l][0]))-1.); + +/* *chi2 += fsky*(2.*l+1.)*((cl2[l][0])/ */ +/* (cl1[l][0])+ */ +/* log((cl1[l][0])/(cl2[l][0]))-1.); */ + + +/* factor=l*(l+1.)/2./_PI_; */ +/* printf("%d %e %e %e\n",l,factor*cl1[l][0],factor*cl2[l][0],factor*nl[l][0]); */ + + } + else { + + clTT_th = cl1[l][psp->index_ct_tt]+nl[l][psp->index_ct_tt]; + clEE_th = cl1[l][psp->index_ct_ee]+nl[l][psp->index_ct_ee]; + clTE_th = cl1[l][psp->index_ct_te]; + + clTT_obs = cl2[l][psp->index_ct_tt]+nl[l][psp->index_ct_tt]; + clEE_obs = cl2[l][psp->index_ct_ee]+nl[l][psp->index_ct_ee]; + clTE_obs = cl2[l][psp->index_ct_te]; + + det_mixed = 0.5*(clTT_th*clEE_obs+clTT_obs*clEE_th)-clTE_th*clTE_obs; + + det_th = clTT_th*clEE_th-clTE_th*clTE_th; + + det_obs = clTT_obs*clEE_obs-clTE_obs*clTE_obs; + + *chi2 += fsky*(2.*l+1.)*(2.*(det_mixed/det_th-1.)+log(det_th/det_obs)); + } + } + + return _SUCCESS_; + +} + +int noise_planck( + struct background * pba, + struct thermo * pth, + struct spectra * psp, + double ** nl, + int lmax + ) { + + int num_channel,channel,l; + double * theta, * deltaT, * deltaP; + + num_channel=3; + + theta=malloc(num_channel*sizeof(double)); + deltaT=malloc(num_channel*sizeof(double)); + deltaP=malloc(num_channel*sizeof(double)); + + /* 100 GHz*/ + theta[0]=9.5/3437.75; /* converted from arcmin to radian */ + deltaT[0]=(6.8e-6/pba->Tcmb); /* converted from K to dimensionless */ + deltaP[0]=(10.9e-6/pba->Tcmb); /* converted from K to dimensionless */ + + /* 143 GHz*/ + theta[1]=7.1/3437.75; + deltaT[1]=(6.0e-6/pba->Tcmb); + deltaP[1]=(11.4e-6/pba->Tcmb); + + /* 217 GHz*/ + theta[2]=5.0/3437.75; + deltaT[2]=(13.1e-6/pba->Tcmb); + deltaP[2]=(26.7e-6/pba->Tcmb); + + for (l=2; l<=lmax; l++) { + + for (channel=0; channelhas_tt) { + nl[l][psp->index_ct_tt] += + pow((exp(-l*(l+1.)*theta[channel]*theta[channel]/16./log(2.)) + /theta[channel]/deltaT[channel]),2); + } + if (psp->has_ee) { + nl[l][psp->index_ct_ee] += + pow((exp(-l*(l+1.)*theta[channel]*theta[channel]/16./log(2.)) + /theta[channel]/deltaP[channel]),2); + } + } + + if (psp->has_tt) { + nl[l][psp->index_ct_tt] = 1./nl[l][psp->index_ct_tt]; + } + if (psp->has_ee) { + nl[l][psp->index_ct_ee] = 1./nl[l][psp->index_ct_ee]; + } + } + + free(theta); + free(deltaT); + free(deltaP); + + return _SUCCESS_; + +} diff --git a/class/test/test_pbc.c b/class/test/test_pbc.c new file mode 100755 index 00000000..ae439e98 --- /dev/null +++ b/class/test/test_pbc.c @@ -0,0 +1,196 @@ +/** @file class.c + * Julien Lesgourgues, 20.04.2010 + */ + +#include "class.h" + +int main(int argc, char **argv) { + + struct precision pr; /* for precision parameters */ + struct background ba; /* for cosmological background */ + struct thermo th; /* for thermodynamics */ + struct perturbs pt; /* for source functions */ + struct bessels bs; /* for bessel functions */ + struct transfers tr; /* for transfer functions */ + struct primordial pm; /* for primordial spectra */ + struct spectra sp; /* for output spectra */ + struct lensing le; /* for lensing spectra */ + struct output op; /* for output files */ + struct spectra_nl nl; /* for calculation of non-linear spectra */ + ErrorMsg errmsg; + + if (input_init_from_arguments(argc, argv,&pr,&ba,&th,&pt,&bs,&tr,&pm,&sp,&le,&op,&nl,errmsg) == _FAILURE_) { + printf("\n\nError running input_init_from_arguments \n=>%s\n",errmsg); + return _FAILURE_; + } + + if (background_init(&pr,&ba) == _FAILURE_) { + printf("\n\nError running background_init \n=>%s\n",ba.error_message); + return _FAILURE_; + } + + if (thermodynamics_init(&pr,&ba,&th) == _FAILURE_) { + printf("\n\nError in thermodynamics_init \n=>%s\n",th.error_message); + return _FAILURE_; + } + + if (perturb_init(&pr,&ba,&th,&pt) == _FAILURE_) { + printf("\n\nError in perturb_init \n=>%s\n",pt.error_message); + return _FAILURE_; + } + + if (bessel_init(&pr,&bs) == _FAILURE_) { + printf("\n\nError in bessel_init \n =>%s\n",bs.error_message); + return _FAILURE_; + } + + if (transfer_init(&pr,&ba,&th,&pt,&bs,&tr) == _FAILURE_) { + printf("\n\nError in transfer_init \n=>%s\n",tr.error_message); + return _FAILURE_; + } + + if (primordial_init(&pr,&pt,&pm) == _FAILURE_) { + printf("\n\nError in primordial_init \n=>%s\n",pm.error_message); + return _FAILURE_; + } + + if (spectra_init(&ba,&pt,&tr,&pm,&sp) == _FAILURE_) { + printf("\n\nError in spectra_init \n=>%s\n",sp.error_message); + return _FAILURE_; + } + + if (output_init(&ba,&pt,&sp,&op) == _FAILURE_) { + printf("\n\nError in output_init \n=>%s\n",op.error_message); + return _FAILURE_; + } + + /****** done ******/ + + int index_mode=0; + int index_eta; + int index_ic=0; + int index_k; + double delta_rho_bc,rho_bc; + double delta_i,rho_i; + double P_bc; + int last_index_back; + double * pvecback_long; + double k,pk; + FILE * output; + double z,eta; + double * tki; + + if(pt.has_matter_transfers == _FALSE_) { + printf("You need to switch on mTk calculation for this code\n"); + return _FAILURE_; + } + + output=fopen("output/Pcb.dat","w"); + + class_alloc(pvecback_long,sizeof(double)*ba.bg_size,errmsg); + class_alloc(tki,sizeof(double)*sp.ln_k_size*sp.tr_size,errmsg); + + z=0.; + + if(background_eta_of_z(&ba,z,&eta) == _FAILURE_) { + printf("\n\nError running background_eta_of_z \n=>%s\n",ba.error_message); + return _FAILURE_; + } + + if(background_at_eta(&ba, + eta, + long_info, + normal, + &last_index_back, + pvecback_long) == _FAILURE_) { + printf("\n\nError running background_at_eta \n=>%s\n",ba.error_message); + return _FAILURE_; + } + + if (spectra_tk_at_z(&ba,&sp,z,tki) == _FAILURE_) { + printf("\n\nError in spectra_tk_at_z \n=>%s\n",sp.error_message); + return _FAILURE_; + } + + for (index_k=0; index_k%s\n",pm.error_message); + return _FAILURE_; + } + + P_bc=pk*pow(delta_rho_bc/rho_bc,2)*2.*_PI_*_PI_/k/k/k; + + fprintf(output,"%e %e\n",k,P_bc); + + } + + /******************/ + + if (spectra_free(&sp) == _FAILURE_) { + printf("\n\nError in spectra_free \n=>%s\n",sp.error_message); + return _FAILURE_; + } + + if (primordial_free(&pm) == _FAILURE_) { + printf("\n\nError in primordial_free \n=>%s\n",pm.error_message); + return _FAILURE_; + } + + if (transfer_free(&tr) == _FAILURE_) { + printf("\n\nError in transfer_free \n=>%s\n",tr.error_message); + return _FAILURE_; + } + + if (bessel_free(&bs) == _FAILURE_) { + printf("\n\nError in bessel_free \n=>%s\n",bs.error_message); + return _FAILURE_; + } + + if (perturb_free(&pt) == _FAILURE_) { + printf("\n\nError in perturb_free \n=>%s\n",pt.error_message); + return _FAILURE_; + } + + if (thermodynamics_free(&th) == _FAILURE_) { + printf("\n\nError in thermodynamics_free \n=>%s\n",th.error_message); + return _FAILURE_; + } + + if (background_free(&ba) == _FAILURE_) { + printf("\n\nError in background_free \n=>%s\n",ba.error_message); + return _FAILURE_; + } + + return _SUCCESS_; + +} diff --git a/class/test/test_perturbations.c b/class/test/test_perturbations.c new file mode 100755 index 00000000..3ea594ea --- /dev/null +++ b/class/test/test_perturbations.c @@ -0,0 +1,101 @@ +/** @file class.c + * Julien Lesgourgues, 17.04.2011 + */ + +/* this main runs only the background, thermodynamics and perturbation part */ + +#include "class.h" + +int main(int argc, char **argv) { + + struct precision pr; /* for precision parameters */ + struct background ba; /* for cosmological background */ + struct thermo th; /* for thermodynamics */ + struct perturbs pt; /* for source functions */ + struct transfers tr; /* for transfer functions */ + struct primordial pm; /* for primordial spectra */ + struct spectra sp; /* for output spectra */ + struct nonlinear nl; /* for non-linear spectra */ + struct lensing le; /* for lensed spectra */ + struct output op; /* for output files */ + ErrorMsg errmsg; /* for error messages */ + + if (input_init_from_arguments(argc, argv,&pr,&ba,&th,&pt,&tr,&pm,&sp,&nl,&le,&op,errmsg) == _FAILURE_) { + printf("\n\nError running input_init_from_arguments \n=>%s\n",errmsg); + return _FAILURE_; + } + + if (background_init(&pr,&ba) == _FAILURE_) { + printf("\n\nError running background_init \n=>%s\n",ba.error_message); + return _FAILURE_; + } + + if (thermodynamics_init(&pr,&ba,&th) == _FAILURE_) { + printf("\n\nError in thermodynamics_init \n=>%s\n",th.error_message); + return _FAILURE_; + } + + if (perturb_init(&pr,&ba,&th,&pt) == _FAILURE_) { + printf("\n\nError in perturb_init \n=>%s\n",pt.error_message); + return _FAILURE_; + } + + if (pt.has_perturbations == _TRUE_) { + + /*********************************************************************/ + /* here you can output the source function S(k,tau) of your choice */ + /*********************************************************************/ + + FILE * output; + int index_k,index_tau; + + /* choose a mode (scalar, tensor, ...) */ + int index_md=pt.index_md_scalars; + + /* choose a type (temperature, polarization, grav. pot., ...) */ + int index_type=pt.index_tp_t0; + + /* choose an initial condition (ad, bi, cdi, nid, niv, ...) */ + int index_ic=pt.index_ic_ad; + + output=fopen("output/source.dat","w"); + fprintf(output,"# k tau S\n"); + + for (index_k=0; index_k < pt.k_size[index_md]; index_k++) { + for (index_tau=0; index_tau < pt.tau_size; index_tau++) { + + fprintf(output,"%e %e %e\n", + pt.k[index_md][index_k], + pt.tau_sampling[index_tau], + pt.sources[index_md] + [index_ic * pt.tp_size[index_md] + index_type] + [index_tau * pt.k_size[index_md] + index_k] + ); + } + fprintf(output,"\n"); + } + + fclose(output); + + } + + /****** all calculations done, now free the structures ******/ + + if (perturb_free(&pt) == _FAILURE_) { + printf("\n\nError in perturb_free \n=>%s\n",pt.error_message); + return _FAILURE_; + } + + if (thermodynamics_free(&th) == _FAILURE_) { + printf("\n\nError in thermodynamics_free \n=>%s\n",th.error_message); + return _FAILURE_; + } + + if (background_free(&ba) == _FAILURE_) { + printf("\n\nError in background_free \n=>%s\n",ba.error_message); + return _FAILURE_; + } + + return _SUCCESS_; + +} diff --git a/class/test/test_spectra.c b/class/test/test_spectra.c new file mode 100755 index 00000000..0190332d --- /dev/null +++ b/class/test/test_spectra.c @@ -0,0 +1,125 @@ +/** @file test_spectra.c + * + * Julien Lesgourgues, 26.08.2010 + * + * main intended for computing power spectra, not using the output module. + * + */ + +#include "class.h" + +int main(int argc, char **argv) { + + struct precision pr; /* for precision parameters */ + struct background ba; /* for cosmological background */ + struct thermo th; /* for thermodynamics */ + struct perturbs pt; /* for source functions */ + struct primordial pm; /* for primordial spectra */ + struct nonlinear nl; /* for non-linear spectra */ + struct transfers tr; /* for transfer functions */ + struct spectra sp; /* for output spectra */ + struct lensing le; /* for lensed spectra */ + struct output op; /* for output files */ + ErrorMsg errmsg; /* for error messages */ + + if (input_init_from_arguments(argc, argv,&pr,&ba,&th,&pt,&tr,&pm,&sp,&nl,&le,&op,errmsg) == _FAILURE_) { + printf("\n\nError running input_init_from_arguments \n=>%s\n",errmsg); + return _FAILURE_; + } + + if (background_init(&pr,&ba) == _FAILURE_) { + printf("\n\nError running background_init \n=>%s\n",ba.error_message); + return _FAILURE_; + } + + if (thermodynamics_init(&pr,&ba,&th) == _FAILURE_) { + printf("\n\nError in thermodynamics_init \n=>%s\n",th.error_message); + return _FAILURE_; + } + + if (perturb_init(&pr,&ba,&th,&pt) == _FAILURE_) { + printf("\n\nError in perturb_init \n=>%s\n",pt.error_message); + return _FAILURE_; + } + + if (primordial_init(&pr,&pt,&pm) == _FAILURE_) { + printf("\n\nError in primordial_init \n=>%s\n",pm.error_message); + return _FAILURE_; + } + + if (nonlinear_init(&pr,&ba,&th,&pt,&pm,&nl) == _FAILURE_) { + printf("\n\nError in nonlinear_init \n=>%s\n",nl.error_message); + return _FAILURE_; + } + + if (transfer_init(&pr,&ba,&th,&pt,&nl,&tr) == _FAILURE_) { + printf("\n\nError in transfer_init \n=>%s\n",tr.error_message); + return _FAILURE_; + } + + if (spectra_init(&pr,&ba,&pt,&pm,&nl,&tr,&sp) == _FAILURE_) { + printf("\n\nError in spectra_init \n=>%s\n",sp.error_message); + return _FAILURE_; + } + + /****** output Cls ******/ + + FILE * output; + int index_mode=0; + int index_ic1_ic2=0; + int index_ct=0; + int index_l; + + if (pt.has_cmb == _TRUE_) { + + output=fopen("output/testing_cls.dat","w"); + + for (index_l=0; index_l < sp.l_size[index_mode]; index_l++) + fprintf(output,"%g %g\n", + sp.l[index_l], + sp.cl[index_mode][(index_l * sp.ic_ic_size[index_mode] + index_ic1_ic2) * sp.ct_size + index_ct]); + + fclose(output); + + } + + /****************************/ + + if (spectra_free(&sp) == _FAILURE_) { + printf("\n\nError in spectra_free \n=>%s\n",sp.error_message); + return _FAILURE_; + } + + if (transfer_free(&tr) == _FAILURE_) { + printf("\n\nError in transfer_free \n=>%s\n",tr.error_message); + return _FAILURE_; + } + + if (nonlinear_free(&nl) == _FAILURE_) { + printf("\n\nError in nonlinear_free \n=>%s\n",nl.error_message); + return _FAILURE_; + } + + if (primordial_free(&pm) == _FAILURE_) { + printf("\n\nError in primordial_free \n=>%s\n",pm.error_message); + return _FAILURE_; + } + + if (perturb_free(&pt) == _FAILURE_) { + printf("\n\nError in perturb_free \n=>%s\n",pt.error_message); + return _FAILURE_; + } + + if (thermodynamics_free(&th) == _FAILURE_) { + printf("\n\nError in thermodynamics_free \n=>%s\n",th.error_message); + return _FAILURE_; + } + + if (background_free(&ba) == _FAILURE_) { + printf("\n\nError in background_free \n=>%s\n",ba.error_message); + return _FAILURE_; + } + + return _SUCCESS_; + +} diff --git a/class/test/test_thermodynamics.c b/class/test/test_thermodynamics.c new file mode 100755 index 00000000..4b4ee25d --- /dev/null +++ b/class/test/test_thermodynamics.c @@ -0,0 +1,134 @@ +/** @file class.c + * Julien Lesgourgues, 17.04.2011 + */ + +/* th main runs only the background and thermodynamics parts */ + +#include "class.h" + +int main(int argc, char **argv) { + + struct precision pr; /* for precision parameters */ + struct background ba; /* for cosmological background */ + struct thermo th; /* for thermodynamics */ + struct perturbs pt; /* for source functions */ + struct transfers tr; /* for transfer functions */ + struct primordial pm; /* for primordial spectra */ + struct spectra sp; /* for output spectra */ + struct nonlinear nl; /* for non-linear spectra */ + struct lensing le; /* for lensed sepctra */ + struct output op; /* for output files */ + ErrorMsg errmsg; /* for error message */ + + if (input_init_from_arguments(argc, argv,&pr,&ba,&th,&pt,&tr,&pm,&sp,&nl,&le,&op,errmsg) == _FAILURE_) { + printf("\n\nError running input_init_from_arguments \n=>%s\n",errmsg); + return _FAILURE_; + } + + if (background_init(&pr,&ba) == _FAILURE_) { + printf("\n\nError running background_init \n=>%s\n",ba.error_message); + return _FAILURE_; + } + + if (thermodynamics_init(&pr,&ba,&th) == _FAILURE_) { + printf("\n\nError in thermodynamics_init \n=>%s\n",th.error_message); + return _FAILURE_; + } + + /********************************************/ + /***** output thermodynamics quantities *****/ + /********************************************/ + + int i; + double tau; + double z; + int last_index; + double pvecback[30]; + double pvecthermo[30]; + + printf("#1: redshift z\n"); + printf("#2: conformal time tau\n"); + printf("#3: electron ionization fraction x_e\n"); + printf("#4: Thomson scattering rate kappa'\n"); + printf("#5: Thomson scattering rate derivative kappa''\n"); + printf("#6: Thomson scattering rate derivative kappa'''\n"); + printf("#7: exponential of optical depth e^-kappa\n"); + printf("#8: visibility function g = kappa' e^-kappa \n"); + printf("#9: derivative of visibility function g' \n"); + printf("#10: second derivative of visibility function g'' \n"); + printf("#11: squared baryon temperature\n"); + printf("#12: squared baryon sound speed c_b^2 \n"); + printf("#13: baryon drag optical depth tau_d \n"); + printf("#14: variation rate \n"); + + /* first, quantities stored in table */ + + for (i=0; i < th.tt_size; i++) { + + background_tau_of_z(&ba,th.z_table[i],&tau); + + printf("%.10e %.10e %.10e %.10e %.10e %.10e %.10e %.10e %.10e %.10e %.10e %.10e %.10e %.10e\n", + th.z_table[i], + tau, + th.thermodynamics_table[i*th.th_size+th.index_th_xe], + th.thermodynamics_table[i*th.th_size+th.index_th_dkappa], + th.thermodynamics_table[i*th.th_size+th.index_th_ddkappa], + th.thermodynamics_table[i*th.th_size+th.index_th_dddkappa], + th.thermodynamics_table[i*th.th_size+th.index_th_exp_m_kappa], + th.thermodynamics_table[i*th.th_size+th.index_th_g], + th.thermodynamics_table[i*th.th_size+th.index_th_dg], + th.thermodynamics_table[i*th.th_size+th.index_th_ddg], + th.thermodynamics_table[i*th.th_size+th.index_th_Tb], + th.thermodynamics_table[i*th.th_size+th.index_th_cb2], + th.thermodynamics_table[i*th.th_size+th.index_th_tau_d], + th.thermodynamics_table[i*th.th_size+th.index_th_rate] + ); + + } + + /* the function thermodynamics_at_z knows how to extrapolate at + redshifts above the maximum redshift in the table. Here we add to + the previous output a few more points at higher redshift. */ + + for (z = th.z_table[th.tt_size-1]; z < 1000*th.z_table[th.tt_size-1]; z *= 2.) { + + background_tau_of_z(&ba,z,&tau); + + background_at_tau(&ba,tau,ba.normal_info,ba.inter_normal,&last_index,pvecback); + + thermodynamics_at_z(&ba,&th,z,th.inter_normal,&last_index,pvecback,pvecthermo); + + printf("%.10e %.10e %.10e %.10e %.10e %.10e %.10e %.10e %.10e %.10e %.10e %.10e %.10e %.10e\n", + z, + tau, + pvecthermo[th.index_th_xe], + pvecthermo[th.index_th_dkappa], + pvecthermo[th.index_th_ddkappa], + pvecthermo[th.index_th_dddkappa], + pvecthermo[th.index_th_exp_m_kappa], + pvecthermo[th.index_th_g], + pvecthermo[th.index_th_dg], + pvecthermo[th.index_th_ddg], + pvecthermo[th.index_th_Tb], + pvecthermo[th.index_th_cb2], + pvecthermo[th.index_th_tau_d], + pvecthermo[th.index_th_rate] + ); + + } + + /****** all calculations done, now free the structures ******/ + + if (thermodynamics_free(&th) == _FAILURE_) { + printf("\n\nError in thermodynamics_free \n=>%s\n",th.error_message); + return _FAILURE_; + } + + if (background_free(&ba) == _FAILURE_) { + printf("\n\nError in background_free \n=>%s\n",ba.error_message); + return _FAILURE_; + } + + return _SUCCESS_; + +} diff --git a/class/test/test_timing.c b/class/test/test_timing.c new file mode 100755 index 00000000..4e8d6739 --- /dev/null +++ b/class/test/test_timing.c @@ -0,0 +1,155 @@ +/** @file class.c + * Julien Lesgourgues, 20.04.2010 + */ + +#include "class.h" +#include + +int main(int argc, char **argv) { + + struct precision pr; /* for precision parameters */ + struct background ba; /* for cosmological background */ + struct thermo th; /* for thermodynamics */ + struct perturbs pt; /* for source functions */ + struct bessels bs; /* for bessel functions */ + struct transfers tr; /* for transfer functions */ + struct primordial pm; /* for primordial spectra */ + struct spectra sp; /* for output spectra */ + struct nonlinear nl; /* for non-linear spectra */ + struct lensing le; /* for lensed spectra */ + struct output op; /* for output files */ + ErrorMsg errmsg; + + double start_perturb, end_perturb; + double cpu_time_perturb; + double start_other, end_other; + double cpu_time_other; + double start_lensing, end_lensing; + double cpu_time_lensing; + + if (input_init_from_arguments(argc, argv,&pr,&ba,&th,&pt,&bs,&tr,&pm,&sp,&nl,&le,&op,errmsg) == _FAILURE_) { + printf("\n\nError running input_init_from_arguments \n=>%s\n",errmsg); + return _FAILURE_; + } + + start_other = omp_get_wtime(); + + if (background_init(&pr,&ba) == _FAILURE_) { + printf("\n\nError running background_init \n=>%s\n",ba.error_message); + return _FAILURE_; + } + + if (thermodynamics_init(&pr,&ba,&th) == _FAILURE_) { + printf("\n\nError in thermodynamics_init \n=>%s\n",th.error_message); + return _FAILURE_; + } + + start_perturb = omp_get_wtime(); + + if (perturb_init(&pr,&ba,&th,&pt) == _FAILURE_) { + printf("\n\nError in perturb_init \n=>%s\n",pt.error_message); + return _FAILURE_; + } + + end_perturb = omp_get_wtime(); + + cpu_time_perturb = (end_perturb-start_perturb); + + printf("time in perturb=%4.3f s\n",cpu_time_perturb); + + if (bessel_init(&pr,&bs) == _FAILURE_) { + printf("\n\nError in bessel_init \n =>%s\n",bs.error_message); + return _FAILURE_; + } + + if (transfer_init(&pr,&ba,&th,&pt,&bs,&tr) == _FAILURE_) { + printf("\n\nError in transfer_init \n=>%s\n",tr.error_message); + return _FAILURE_; + } + + if (primordial_init(&pr,&pt,&pm) == _FAILURE_) { + printf("\n\nError in primordial_init \n=>%s\n",pm.error_message); + return _FAILURE_; + } + + if (spectra_init(&pr,&ba,&pt,&tr,&pm,&sp) == _FAILURE_) { + printf("\n\nError in spectra_init \n=>%s\n",sp.error_message); + return _FAILURE_; + } + + if (nonlinear_init(&pr,&ba,&th,&pm,&sp,&nl) == _FAILURE_) { + printf("\n\nError in nonlinear_init \n=>%s\n",nl.error_message); + return _FAILURE_; + } + + end_other = omp_get_wtime(); + start_lensing = end_other; + + if (lensing_init(&pr,&pt,&sp,&nl,&le) == _FAILURE_) { + printf("\n\nError in lensing_init \n=>%s\n",le.error_message); + return _FAILURE_; + } + + end_lensing = omp_get_wtime(); + + cpu_time_other = (end_other-start_other); + cpu_time_lensing = (end_lensing-start_lensing); + printf("time in other = %4.3f s\n",cpu_time_other); + printf("time in lensing = %4.3f s\n",cpu_time_lensing); + + + if (output_init(&ba,&pt,&sp,&nl,&le,&op) == _FAILURE_) { + printf("\n\nError in output_init \n=>%s\n",op.error_message); + return _FAILURE_; + } + + /****** done ******/ + + if (lensing_free(&le) == _FAILURE_) { + printf("\n\nError in lensing_free \n=>%s\n",le.error_message); + return _FAILURE_; + } + + if (nonlinear_free(&nl) == _FAILURE_) { + printf("\n\nError in nonlinear_free \n=>%s\n",nl.error_message); + return _FAILURE_; + } + + if (spectra_free(&sp) == _FAILURE_) { + printf("\n\nError in spectra_free \n=>%s\n",sp.error_message); + return _FAILURE_; + } + + if (primordial_free(&pm) == _FAILURE_) { + printf("\n\nError in primordial_free \n=>%s\n",pm.error_message); + return _FAILURE_; + } + + if (transfer_free(&tr) == _FAILURE_) { + printf("\n\nError in transfer_free \n=>%s\n",tr.error_message); + return _FAILURE_; + } + + if (bessel_free(&bs) == _FAILURE_) { + printf("\n\nError in bessel_free \n=>%s\n",bs.error_message); + return _FAILURE_; + } + + if (perturb_free(&pt) == _FAILURE_) { + printf("\n\nError in perturb_free \n=>%s\n",pt.error_message); + return _FAILURE_; + } + + if (thermodynamics_free(&th) == _FAILURE_) { + printf("\n\nError in thermodynamics_free \n=>%s\n",th.error_message); + return _FAILURE_; + } + + if (background_free(&ba) == _FAILURE_) { + printf("\n\nError in background_free \n=>%s\n",ba.error_message); + return _FAILURE_; + } + + return _SUCCESS_; + +} diff --git a/class/test/test_transfer.c b/class/test/test_transfer.c new file mode 100755 index 00000000..d3804aa7 --- /dev/null +++ b/class/test/test_transfer.c @@ -0,0 +1,170 @@ +/** @file class.c + * Julien Lesgourgues, 17.04.2011 + */ + +/* this main only runs the modules up to the transfer one */ + +#include "class.h" + +int main(int argc, char **argv) { + + struct precision pr; /* for precision parameters */ + struct background ba; /* for cosmological background */ + struct thermo th; /* for thermodynamics */ + struct perturbs pt; /* for source functions */ + struct transfers tr; /* for transfer functions */ + struct primordial pm; /* for primordial spectra */ + struct spectra sp; /* for output spectra */ + struct nonlinear nl; /* for non-linear spectra */ + struct lensing le; /* for lensed spectra */ + struct output op; /* for output files */ + ErrorMsg errmsg; /* for error messages */ + + if (input_init_from_arguments(argc, argv,&pr,&ba,&th,&pt,&tr,&pm,&sp,&nl,&le,&op,errmsg) == _FAILURE_) { + printf("\n\nError running input_init_from_arguments \n=>%s\n",errmsg); + return _FAILURE_; + } + + if (background_init(&pr,&ba) == _FAILURE_) { + printf("\n\nError running background_init \n=>%s\n",ba.error_message); + return _FAILURE_; + } + + if (thermodynamics_init(&pr,&ba,&th) == _FAILURE_) { + printf("\n\nError in thermodynamics_init \n=>%s\n",th.error_message); + return _FAILURE_; + } + + if (perturb_init(&pr,&ba,&th,&pt) == _FAILURE_) { + printf("\n\nError in perturb_init \n=>%s\n",pt.error_message); + return _FAILURE_; + } + + if (primordial_init(&pr,&pt,&pm) == _FAILURE_) { + printf("\n\nError in primordial_init \n=>%s\n",pm.error_message); + return _FAILURE_; + } + + if (nonlinear_init(&pr,&ba,&th,&pt,&pm,&nl) == _FAILURE_) { + printf("\n\nError in nonlinear_init \n=>%s\n",nl.error_message); + return _FAILURE_; + } + + if (transfer_init(&pr,&ba,&th,&pt,&nl,&tr) == _FAILURE_) { + printf("\n\nError in transfer_init \n=>%s\n",tr.error_message); + return _FAILURE_; + } + + /****** output the transfer functions ******/ + + printf("Output of transfer functions (l, q, k, nu, Delta)\n"); + printf("(in flat space, q=k and nu=inf) \n"); + + /* 1) select the mode, initial condition, type and multipole of the + function you want to plot: */ + + int index_mode=pt.index_md_scalars; + int index_ic =pt.index_ic_ad; + int index_type=tr.index_tt_t0; + + /* 2) here is an illustration of how to output the transfer + functions at some (k,l)'s of your choice */ + + /* + int index_l = 0; + double q=3.6e-4; + double transfer; + + if (transfer_functions_at_q(&tr, + index_mode, + index_ic, + index_type, + index_l, + q, + &transfer + ) == _FAILURE_) { + printf("\n\nError in transfer_function_at_k \n=>%s\n",tr.error_message); + return _FAILURE_; + } + + printf("%d %e %e\n",tr.l[index_l],q,transfer); + */ + + /* 3) here you can output the full tabulated arrays for all k and l's*/ + + int index_q; + int index_l; + double transfer; + FILE * output; + + output=fopen("output/test.trsf","w"); + + for (index_l=0; index_l%s\n",tr.error_message); + return _FAILURE_; + } + + if (nonlinear_free(&nl) == _FAILURE_) { + printf("\n\nError in nonlinear_free \n=>%s\n",nl.error_message); + return _FAILURE_; + } + + if (primordial_free(&pm) == _FAILURE_) { + printf("\n\nError in primordial_free \n=>%s\n",pm.error_message); + return _FAILURE_; + } + + if (perturb_free(&pt) == _FAILURE_) { + printf("\n\nError in perturb_free \n=>%s\n",pt.error_message); + return _FAILURE_; + } + + if (thermodynamics_free(&th) == _FAILURE_) { + printf("\n\nError in thermodynamics_free \n=>%s\n",th.error_message); + return _FAILURE_; + } + + if (background_free(&ba) == _FAILURE_) { + printf("\n\nError in background_free \n=>%s\n",ba.error_message); + return _FAILURE_; + } + + return _SUCCESS_; + +} diff --git a/class/test/test_trg.c b/class/test/test_trg.c new file mode 100755 index 00000000..b55495ac --- /dev/null +++ b/class/test/test_trg.c @@ -0,0 +1,122 @@ +/** @file test_trg.c + * + */ + +#include "precision.h" +#include "background.h" +#include "thermodynamics.h" +#include "perturbations.h" +#include "bessel.h" +#include "transfer.h" +#include "primordial.h" +#include "spectra.h" +#include "output.h" +#include "trg.h" + +main(int argc, char **argv) { + + struct precision pr; /* for precision parameters */ + struct background ba; /* for cosmological background */ + struct thermo th; /* for thermodynamics */ + struct perturbs pt; /* for source functions */ + struct bessels bs; /* for bessel functions */ + struct transfers tr; /* for transfer functions */ + struct primordial pm; /* for primordial spectra */ + struct output op; + struct lensing le; + struct spectra sp; /* for output spectra */ + struct spectra_nl nl; /* for calculation of non-linear spectra */ + + ErrorMsg errmsg; + + if (input_init_from_arguments(argc, argv,&pr,&ba,&th,&pt,&bs,&tr,&pm,&sp,&le,&op,&nl,errmsg) == _FAILURE_) { + printf("\n\nError running input_init_from_arguments \n=>%s\n",errmsg); + return _FAILURE_; + } + + if (background_init(&pr,&ba) == _FAILURE_) { + printf("\n\nError running background_init \n=>%s\n",ba.error_message); + return _FAILURE_; + } + + if (thermodynamics_init(&pr,&ba,&th) == _FAILURE_) { + printf("\n\nError in thermodynamics_init \n=>%s\n",th.error_message); + return _FAILURE_; + } + + if (perturb_init(&pr,&ba,&th,&pt) == _FAILURE_) { + printf("\n\nError in perturb_init \n=>%s\n",pt.error_message); + return _FAILURE_; + } + + if (bessel_init(&pr,&bs) == _FAILURE_) { + printf("\n\nError in bessel_init \n =>%s\n",bs.error_message); + return _FAILURE_; + } + + if (transfer_init(&pr,&ba,&th,&pt,&bs,&tr) == _FAILURE_) { + printf("\n\nError in transfer_init \n=>%s\n",tr.error_message); + return _FAILURE_; + } + + if (primordial_init(&pr,&pt,&pm) == _FAILURE_) { + printf("\n\nError in transfer_init \n=>%s\n",pm.error_message); + return _FAILURE_; + } + + if (spectra_init(&ba,&pt,&tr,&pm,&sp) == _FAILURE_) { + printf("\n\nError in spectra_init \n=>%s\n",sp.error_message); + return _FAILURE_; + } + + if (trg_init(&pr,&ba,&th,&pm,&sp,&nl) == _FAILURE_) { + printf("\n\nError in trg_init \n=>%s\n",nl.error_message); + return _FAILURE_; + } + + /****** done ******/ + + + if (trg_free(&nl) == _FAILURE_) { + printf("\n\nError in trg_free \n=>%s\n",nl.error_message); + return _FAILURE_; + } + + if (spectra_free(&sp) == _FAILURE_) { + printf("\n\nError in spectra_free \n=>%s\n",sp.error_message); + return _FAILURE_; + } + + if (primordial_free(&pm) == _FAILURE_) { + printf("\n\nError in primordial_free \n=>%s\n",pm.error_message); + return _FAILURE_; + } + + if (transfer_free(&tr) == _FAILURE_) { + printf("\n\nError in transfer_free \n=>%s\n",tr.error_message); + return _FAILURE_; + } + + if (bessel_free(&bs) == _FAILURE_) { + printf("\n\nError in bessel_free \n=>%s\n",bs.error_message); + return _FAILURE_; + } + + if (perturb_free(&pt) == _FAILURE_) { + printf("\n\nError in perturb_free \n=>%s\n",pt.error_message); + return _FAILURE_; + } + + if (thermodynamics_free(&th) == _FAILURE_) { + printf("\n\nError in thermodynamics_free \n=>%s\n",th.error_message); + return _FAILURE_; + } + + if (background_free(&ba) == _FAILURE_) { + printf("\n\nError in background_free \n=>%s\n",ba.error_message); + return _FAILURE_; + } + + return _SUCCESS_; + +} diff --git a/class/tools/.arrays.c.swp b/class/tools/.arrays.c.swp new file mode 100644 index 00000000..505d38cd Binary files /dev/null and b/class/tools/.arrays.c.swp differ diff --git a/class/tools/arrays.c b/class/tools/arrays.c old mode 100644 new mode 100755 index c27cdc1e..9acd80bf --- a/class/tools/arrays.c +++ b/class/tools/arrays.c @@ -589,6 +589,7 @@ int array_spline_table_lines( return _FAILURE_; } + if (x_size==2) spline_mode = _SPLINE_NATURAL_; // in the case of only 2 x-values, only the natural spline method is appropriate, for _SPLINE_EST_DERIV_ at least 3 x-values are needed. index_x=0; @@ -749,6 +750,7 @@ int array_logspline_table_lines( return _FAILURE_; } + if (x_size==2) spline_mode = _SPLINE_NATURAL_; // in the case of only 2 x-values, only the natural spline method is appropriate, for _SPLINE_EST_DERIV_ at least 3 x-values are needed. index_x=0; @@ -910,6 +912,8 @@ int array_spline_table_columns( return _FAILURE_; } + if (x_size==2) spline_mode = _SPLINE_NATURAL_; // in the case of only 2 x-values, only the natural spline method is appropriate, for _SPLINE_EST_DERIV_ at least 3 x-values are needed. + index_x=0; if (spline_mode == _SPLINE_NATURAL_) { @@ -1079,6 +1083,8 @@ int array_spline_table_columns2( return _FAILURE_; } + if (x_size==2) spline_mode = _SPLINE_NATURAL_; // in the case of only 2 x-values, only the natural spline method is appropriate, for _SPLINE_EST_DERIV_ 3 x-values are needed. + #pragma omp parallel \ shared(x,x_size,y_array,y_size,ddy_array,spline_mode,p,qn,un,u) \ private(index_y,index_x,sig,dy_first,dy_last) @@ -1201,6 +1207,8 @@ int array_spline_table_one_column( return _FAILURE_; } + if (x_size==2) spline_mode = _SPLINE_NATURAL_; // in the case of only 2 x-values, only the natural spline method is appropriate, for _SPLINE_EST_DERIV_ at least 3 x-values are needed. + /************************************************/ index_x=0; @@ -1334,6 +1342,8 @@ int array_logspline_table_one_column( return _FAILURE_; } + if (x_size==2) spline_mode = _SPLINE_NATURAL_; // in the case of only 2 x-values, only the natural spline method is appropriate, for _SPLINE_EST_DERIV_ at least 3 x-values are needed. + /************************************************/ index_x=0; @@ -1750,6 +1760,72 @@ int array_interpolate_spline( return _SUCCESS_; } + /** + * Get the y[i] for which y[i]>c + * + * Called by nonlinear_HMcode() + */ +int array_search_bisect( + int n_lines, + double * __restrict__ array, + double c, + int * __restrict__ last_index, + ErrorMsg errmsg) { + + int inf,sup,mid; + + inf=0; + sup=n_lines-1; + + if (array[inf] < array[sup]){ + + if (c < array[inf]) { + sprintf(errmsg,"%s(L:%d) : c=%e < y_min=%e",__func__,__LINE__,c,array[inf]); + return _FAILURE_; + } + + if (c > array[sup]) { + sprintf(errmsg,"%s(L:%d) : c=%e > y_max=%e",__func__,__LINE__,c,array[sup]); + return _FAILURE_; + } + + while (sup-inf > 1) { + + mid=(int)(0.5*(inf+sup)); + if (c < array[mid]) {sup=mid;} + else {inf=mid;} + + } + + } + + else { + + if (c < array[sup]) { + sprintf(errmsg,"%s(L:%d) : x=%e < x_min=%e",__func__,__LINE__,c,array[sup]); + return _FAILURE_; + } + + if (c > array[inf]) { + sprintf(errmsg,"%s(L:%d) : x=%e > x_max=%e",__func__,__LINE__,c,array[inf]); + return _FAILURE_; + } + + while (sup-inf > 1) { + + mid=(int)(0.5*(inf+sup)); + if (c > array[mid]) {sup=mid;} + else {inf=mid;} + + } + + } + + *last_index = inf; + + return _SUCCESS_; +} + /** * interpolate to get y_i(x), when x and y_i are in different arrays * @@ -2642,17 +2718,18 @@ int array_interpolate_two_arrays_one_column( int inf,sup,mid; double weight; + double epsilon=1e-9; inf=0; sup=n_lines-1; if (array_x[inf] < array_x[sup]){ - class_test(x < array_x[inf], + class_test(x < array_x[inf]-epsilon, errmsg, "x=%e < x_min=%e",x,array_x[inf]); - class_test(x > array_x[sup], + class_test(x > array_x[sup]+epsilon, errmsg, "x=%e > x_max=%e",x,array_x[sup]); @@ -2668,11 +2745,11 @@ int array_interpolate_two_arrays_one_column( else { - class_test(x < array_x[sup], + class_test(x < array_x[sup]-epsilon, errmsg, "x=%e < x_min=%e",x,array_x[sup]); - class_test(x > array_x[inf], + class_test(x > array_x[inf]+epsilon, errmsg, "x=%e > x_max=%e",x,array_x[inf]); diff --git a/class/tools/dei_rkck.c b/class/tools/dei_rkck.c old mode 100644 new mode 100755 diff --git a/class/tools/evolver_ndf15.c b/class/tools/evolver_ndf15.c old mode 100644 new mode 100755 index f5937636..790ced55 --- a/class/tools/evolver_ndf15.c +++ b/class/tools/evolver_ndf15.c @@ -301,6 +301,9 @@ int evolver_ndf15( done = _FALSE_; at_hmin = _FALSE_; while (done==_FALSE_){ + /**class_test(stepstat[2] > 1e5, error_message, + "Too many steps in evolver! Current stepsize:%g, in interval: [%g:%g]\n", + absh,t0,tfinal);*/ hmin = minimum_variation; maxtmp = MAX(hmin,absh); absh = MIN(hmax, maxtmp); @@ -659,6 +662,13 @@ int evolver_ndf15( error_message, error_message); + if (print_variables!=NULL){ + /** If we are printing variables, we must store the final point */ + class_call((*print_variables)(tnew,ynew+1,f0+1, + parameters_and_workspace_for_derivs,error_message), + error_message,error_message); + } + if (verbose > 0){ printf("\n End of evolver. Next=%d, t=%e and tnew=%e.",next,t,tnew); printf("\n Statistics: [%d %d %d %d %d %d] \n",stepstat[0],stepstat[1], diff --git a/class/tools/evolver_rkck.c b/class/tools/evolver_rkck.c old mode 100644 new mode 100755 diff --git a/class/tools/growTable.c b/class/tools/growTable.c old mode 100644 new mode 100755 diff --git a/class/tools/hyperspherical.c b/class/tools/hyperspherical.c old mode 100644 new mode 100755 diff --git a/class/tools/parser.c b/class/tools/parser.c index e830fc5f..f7912e18 100644 --- a/class/tools/parser.c +++ b/class/tools/parser.c @@ -93,7 +93,9 @@ int parser_read_line( char * left; char * right; - /* check that there is an '=' */ + /* check that there is an '=' (if you want the role of '=' to be + played by ':' you only need to substitute it in the next line and + recompile) */ pequal=strchr(line,'='); if (pequal == NULL) {*is_data = _FALSE_; return _SUCCESS_;} @@ -109,13 +111,24 @@ int parser_read_line( while (left[0]==' ') { left++; } + /* Ignore any of " ' */ + if(left[0]=='\'' || left[0]=='\"'){ + left++; + } right=pequal-1; while (right[0]==' ') { right--; } + if(right[0]=='\'' || right[0]=='\"'){ + right--; + } - if (right-left < 0) {*is_data = _FALSE_; return _SUCCESS_;} + /* deal with missing variable names */ + + class_test(right-left < 0, + errmsg, + "Syntax error in the input line '%s': no name passed on the left of the '=' sign",line); class_test(right-left+1 >= _ARGUMENT_LENGTH_MAX_, errmsg, @@ -184,7 +197,7 @@ int parser_read_int( class_test(sscanf(pfc->value[index],"%d",value) != 1, errmsg, - "could not read value of parameter %s in file %s\n",name,pfc->filename); + "could not read value of parameter '%s' in file '%s'\n",name,pfc->filename); /* if parameter read correctly, set 'found' flag to true, as well as the flag associated with this parameter in the file_content structure */ @@ -198,7 +211,7 @@ int parser_read_int( for (i=index+1; i < pfc->size; i++) { class_test(strcmp(pfc->name[i],name) == 0, errmsg, - "multiple entry of parameter %s in file %s\n",name,pfc->filename); + "multiple entry of parameter '%s' in file '%s'\n",name,pfc->filename); } /* if everything proceeded normally, return with 'found' flag equal to true */ @@ -236,7 +249,7 @@ int parser_read_double( class_test(sscanf(pfc->value[index],"%lg",value) != 1, errmsg, - "could not read value of parameter %s in file %s\n",name,pfc->filename); + "could not read value of parameter '%s' in file '%s'\n",name,pfc->filename); /* if parameter read correctly, set 'found' flag to true, as well as the flag associated with this parameter in the file_content structure */ @@ -250,7 +263,7 @@ int parser_read_double( for (i=index+1; i < pfc->size; i++) { class_test(strcmp(pfc->name[i],name) == 0, errmsg, - "multiple entry of parameter %s in file %s\n",name,pfc->filename); + "multiple entry of parameter '%s' in file '%s'\n",name,pfc->filename); } /* if everything proceeded normally, return with 'found' flag equal to true */ @@ -289,7 +302,7 @@ int parser_read_double_and_position( class_test(sscanf(pfc->value[index],"%lg",value) != 1, errmsg, - "could not read value of parameter %s in file %s\n",name,pfc->filename); + "could not read value of parameter '%s' in file '%s'\n",name,pfc->filename); /* if parameter read correctly, set 'found' flag to true, as well as the flag associated with this parameter in the file_content structure */ @@ -303,7 +316,7 @@ int parser_read_double_and_position( for (i=index+1; i < pfc->size; i++) { class_test(strcmp(pfc->name[i],name) == 0, errmsg, - "multiple entry of parameter %s in file %s\n",name,pfc->filename); + "multiple entry of parameter '%s' in file '%s'\n",name,pfc->filename); } /* if everything proceeded normally, return with 'found' flag equal to true */ @@ -355,7 +368,7 @@ int parser_read_string( for (i=index+1; i < pfc->size; i++) { class_test(strcmp(pfc->name[i],name) == 0, errmsg, - "multiple entry of parameter %s in file %s\n",name,pfc->filename); + "multiple entry of parameter '%s' in file '%s'\n",name,pfc->filename); } /* if everything proceeded normally, return with 'found' flag equal to true */ @@ -426,7 +439,7 @@ int parser_read_list_of_doubles( } class_test(sscanf(string_with_one_value,"%lg",&(list[i-1])) != 1, errmsg, - "could not read %dth value of list of parameters %s in file %s\n", + "could not read %dth value of list of parameters '%s' in file '%s'\n", i, name, pfc->filename); @@ -445,7 +458,7 @@ int parser_read_list_of_doubles( for (i=index+1; i < pfc->size; i++) { class_test(strcmp(pfc->name[i],name) == 0, errmsg, - "multiple entry of parameter %s in file %s\n",name,pfc->filename); + "multiple entry of parameter '%s' in file '%s'\n",name,pfc->filename); } /* if everything proceeded normally, return with 'found' flag equal to true */ @@ -516,7 +529,7 @@ int parser_read_list_of_integers( } class_test(sscanf(string_with_one_value,"%d",&(list[i-1])) != 1, errmsg, - "could not read %dth value of list of parameters %s in file %s\n", + "could not read %dth value of list of parameters '%s' in file '%s'\n", i, name, pfc->filename); @@ -535,7 +548,7 @@ int parser_read_list_of_integers( for (i=index+1; i < pfc->size; i++) { class_test(strcmp(pfc->name[i],name) == 0, errmsg, - "multiple entry of parameter %s in file %s\n",name,pfc->filename); + "multiple entry of parameter '%s' in file '%s'\n",name,pfc->filename); } /* if everything proceeded normally, return with 'found' flag equal to true */ @@ -619,7 +632,7 @@ int parser_read_list_of_strings( for (i=index+1; i < pfc->size; i++) { class_test(strcmp(pfc->name[i],name) == 0, errmsg, - "multiple entry of parameter %s in file %s\n",name,pfc->filename); + "multiple entry of parameter '%s' in file '%s'\n",name,pfc->filename); } /* if everything proceeded normally, return with 'found' flag equal to true */ return _SUCCESS_; diff --git a/class/tools/quadrature.c b/class/tools/quadrature.c index 4c728889..053cd040 100644 --- a/class/tools/quadrature.c +++ b/class/tools/quadrature.c @@ -5,6 +5,60 @@ /******************************************/ #include "quadrature.h" +int get_qsampling_manual(double *x, + double *w, + int N, + double qmax, + enum ncdm_quadrature_method method, + double *qvec, + int qsiz, + int (*function)(void * params_for_function, double q, double *f0), + void * params_for_function, + ErrorMsg errmsg) { + + double y, h, t; + double *b, *c; + int i; + switch (method){ + case (qm_auto) : + return _FAILURE_; + case (qm_Laguerre) : + /* Allocate storage for Laguerre coefficients: */ + class_alloc(b,N*sizeof(double),errmsg); + class_alloc(c,N*sizeof(double),errmsg); + compute_Laguerre(x,w,N,0.0,b,c,_TRUE_); + for (i=0; i - nonsymmetric and generalized + eigensystems, B-splines, sparse matrices, linear and nonlinear least squares +Rhys Ulerich (rhys.ulerich@gmail.com) - multisets +Pavel Holoborodko - fixed order Gauss-Legendre quadrature +Pedro Gonnet - CQUAD integration routines. diff --git a/gsl-2.5/BUGS b/gsl-2.5/BUGS new file mode 100644 index 00000000..e69de29b diff --git a/gsl-2.5/COPYING b/gsl-2.5/COPYING new file mode 100644 index 00000000..94a9ed02 --- /dev/null +++ b/gsl-2.5/COPYING @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + 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 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/gsl-2.5/ChangeLog b/gsl-2.5/ChangeLog new file mode 100644 index 00000000..e6ae1f32 --- /dev/null +++ b/gsl-2.5/ChangeLog @@ -0,0 +1,944 @@ +2012-10-25 Rhys Ulerich + + * templates_on.h: undef complex for MSVC + Thank you to Victor Zverovich + for reporting the problem and providing the patch + +2012-06-04 Rhys Ulerich + + * cdf/beta.c: Update FSF address + * cdf/betainv.c: Update FSF address + * cdf/chisq.c: Update FSF address + * cdf/chisqinv.c: Update FSF address + * cdf/fdist.c: Update FSF address + * cdf/fdistinv.c: Update FSF address + * cdf/gamma.c: Update FSF address + * cdf/gammainv.c: Update FSF address + * cdf/gauss.c: Update FSF address + * cdf/gaussinv.c: Update FSF address + * cdf/geometric.c: Update FSF address + * cdf/gsl_cdf.h: Update FSF address + * cdf/hypergeometric.c: Update FSF address + * cdf/nbinomial.c: Update FSF address + * cdf/poisson.c: Update FSF address + * cdf/tdist.c: Update FSF address + * cdf/tdistinv.c: Update FSF address + * cdf/test.c: Update FSF address + * contrib/wigner.c: Update FSF address + * contrib/wigner.h: Update FSF address + * histogram/calloc_range.c: Update FSF address + * histogram/calloc_range2d.c: Update FSF address + * histogram/copy.c: Update FSF address + * histogram/copy2d.c: Update FSF address + * histogram/maxval.c: Update FSF address + * histogram/maxval2d.c: Update FSF address + * histogram/oper.c: Update FSF address + * histogram/oper2d.c: Update FSF address + * histogram/stat.c: Update FSF address + * histogram/stat2d.c: Update FSF address + * mdate-sh: Update FSF address + * randist/discrete.c: Update FSF address + * randist/gausszig.c: Update FSF address + * rng/gfsr4.c: Update FSF address + * rng/mt.c: Update FSF address + * utils/getopt.c: Update FSF address + * utils/getopt.h: Update FSF address + * utils/getopt1.c: Update FSF address + * utils/strerror.c: Update FSF address + * utils/system.h: Update FSF address + * utils/xmalloc.c: Update FSF address + * utils/xstrdup.c: Update FSF address + +2011-12-01 Rhys Ulerich + + * doc/integration.texi: Clarify that integration workspaces may be + reused multiple times following discussion on gsl-help mailing + list. Documentation ambiguity raised by Denes Molnar. + +2011-04-13 Brian Gough + + * gsl_nan.h (GSL_NEGZERO): define negative zero as explicitly + floating point, same for positive zero. + +2011-04-01 Rhys Ulerich + + * doc/bspline.texi: Correct valid index range for Greville abscissae + +2011-01-31 Peter Johansson + + * gsl.pc.in (GSL_CBLAS_LIB): allow user to choose cblas via + pkg-config + +2010-08-06 Brian Gough + + * ode-initval2: added Tuomo Keskitalo's new ode branch with a + gsl_odeiv2 prefix which is intended to be the new default. Will + retain gsl_odeiv for binary compatibility but old interface will + be deprecated. + +2010-05-25 Peter Johansson + + * configure.ac: added variable GSL_LIBM from macro AC_CHECK_LIBM + * Makefile.am: added GSL_LIBM in edit substitution + * gsl-config.in: using variable $GSL_LIBM rather than hard-coded -libm + * gsl.pc.in: using variable $GSL_LIBM rather than hard-coded -libm + +2010-04-24 Brian Gough + + * configure.ac: added macro for substituting isfinite by + gsl_finite when needed. + +2010-04-10 Giuseppe Scrivano + + * utils/memcpy.c (memcpy): Use the standand method signature. + + * utils/memmove.c (memmove): Likewise. + +2010-01-18 Brian Gough + + * gsl_version.h.in, configure.ac: added GSL_MAJOR_VERSION and + GSL_MINOR_VERSION macros + +2009-07-09 Brian Gough + + * configure.ac: added RETURN_IF_NULL macro to handle null argument + in free() type functions. + +2009-05-09 Brian Gough + + * configure.ac: improve tests for C99 inline, and don't test when + inline is not available + + * gsl_inline.h: added test for HAVE_C99_INLINE + +2009-04-10 Brian Gough + + * Makefile.am: generate gsl-config gsl.pc from Makefile instead + of configure, to allow make install prefix=... + +2008-09-26 Brian Gough + + * configure.ac: handle test for SSE in cross-compilation (fall + back to checking if the ldmxcsr instruction compiles) + +2008-07-03 Brian Gough + + * Makefile.am: added gsl_inline.h and build.h + + * gsl_mode.h gsl_pow_int.h: use new inline declarations + + * gsl_minmax.h: new header file for minmax functions, use new + inline declarations + + * gsl_math.h: moved minmax functions to separate header file + + * configure.ac: test for C99 inline as well + + * build.h gsl_inline.h: added new header to handle GNU-style and + C99 inlines + +2008-03-17 Brian Gough + + * configure.ac: remove hack to disable search for Fortran, Java, + C++ required with earlier versions of autoconf + +2007-09-01 Brian Gough + + * gsl.m4: changed default name to AX_PATH_GSL + +2007-08-22 Brian Gough + + * configure.ac: started moving definitions out of + acconfig.h (deprecated) + +2007-07-30 Brian Gough + + * configure.ac: check ieeefp.h for isfinite + +2007-04-23 Brian Gough + + * acconfig.h (finite): don't redefine finite in terms of isfinite, + which causes problems with system headers, use gsl_finite instead. + +2007-04-17 Brian Gough + + * configure.ac: use an actual floating point number instead of an + integer for testing long double I/O. + +2007-01-09 Brian Gough + + * gsl_math.h (M_PI_4): corrected typo in higher digits of M_PI_4 + (at ~1e-20) + +2006-11-02 Brian Gough + + * templates_on.h templates_off.h: added UNSIGNED definition for + detecting types without negative values + +2006-02-15 Brian Gough + + * configure.ac: restrict darwin IEEE detection to powerpc, because + new x86 macs are different. + + * removed automatic addition of compilation flags on alpha, + these should be specified on the command-line through CFLAGS. + +2006-01-07 Brian Gough + + * templates_on.h: added an FP=1 definition for the floating point + types, FP is undefined for integer types. + +2005-08-05 Brian Gough + + * gsl/Makefile.am: need to remove makefile with later versions of + automake + +2005-04-05 Brian Gough + + * configure.ac: added ieeefp.h test for solaris + +2005-01-13 Brian Gough + + * configure.ac: added case for 86_64 in IEEE arithmetic interface + detection + +2004-10-26 Brian Gough + + * test_gsl_histogram.sh: trim \r from test output for + compatibility with Cygwin. + +2004-07-29 Brian Gough + + * modified all makefiles to use TESTS=$(check_programs) + to get correct EXEEXT behavior + +2004-07-23 Brian Gough + + * added wavelet/ directory + +2004-05-28 Brian Gough + + * configure.ac: ran configure script through Autoconf's autoupdate + to use latest macro names + +2004-05-17 Brian Gough + + * gsl.m4: fix m4 quoting of first argument to AC_DEFUN + +2004-03-17 Brian Gough + + * gsl/Makefile.am (header-links): use test -r instead of test -e + (to avoid problem on Solaris as described in autoconf + documentation) + +2003-12-20 Brian Gough + + * configure.ac: define _GNU_SOURCE when looking for fenv.h + +2003-06-17 Brian Gough + + * configure.ac: converted configure.in to autoconf 2.5x, involved + extensive renaming macros of HAVE_... to HAVE_DECL_.. and changing + usage from #ifdef HAVE to #if HAVE + +2003-06-16 Brian Gough + + * gsl/Makefile.am (header-links): added a test for the existing + file to avoid spurious error messages when making the symlinks + +2003-06-12 Brian Gough + + * configure.in: Tidying up, removed old test for bug in gcc 2.95 + on PPC, removed OS/2 warning, removed references to clock function + since benchmark programs are not shipped + +2003-03-06 Brian Gough + + * gsl_types.h: changed from internal macro _DLL to GSL_DLL + +2003-02-09 Brian Gough + + * configure.in: added [] quotes in AC_TRY_COMPILE to protect + nested macros + +2002-11-24 Brian Gough + + * configure.in: check for presence of non-ansi functions in header + files before running AC_CHECK_FUNCS to look in libraries, to + support compilation with -ansi. + +Fri Sep 6 15:00:40 2002 Brian Gough + + * acconfig.h (GSL_RANGE_CHECK_OFF): turned range checking off in + acconfig.h as it overwrites config.h.in + +Wed Aug 7 22:34:36 2002 Brian Gough + + * config.h.in: fixed RANGE_CHECK_ON to GSL_RANGE_CHECK_ON + +Sun Jul 14 12:48:50 2002 Brian Gough + + * INSTALL: merged the MACHINES file into the installation notes. + +Fri Jun 14 22:09:52 2002 Brian Gough + + * gsl_types.h: define GSL_VAR macro as ANSI C 'export' or + '__declspec(dllexport/dllimport)' depending on platform + + * changed 'export' to GSL_VAR macro throughout to make it easier + to build nonstandard shared libraries such as DLLs + +Sun May 19 22:24:00 2002 Brian Gough + + * configure.in: changed AM_PROG_LIBTOOL to AC_PROG_LIBTOOL, + use AC_SEARCH_LIBS to find math library + +Sat May 11 22:27:52 2002 Brian Gough + + * configure.in (ac_cv_func_printf_longdouble): fixed ieee + comparisons test so it actually works + (ac_cv_c_ieee_comparisons): added a test for denormalized values + +Fri Apr 26 19:53:31 2002 Brian Gough + + * Makefile.am (EXTRA_DIST): removed KNOWN-PROBLEMS + +Sun Feb 10 21:28:29 2002 Brian Gough + + * BUGS: added a list of known but unfixed bugs. + +2002-02-07 Mark Galassi + + * THANKS: added Karsten Howes . + +Wed Jan 16 16:55:25 2002 Brian Gough + + * configure.in acconfig.h: check whether IEEE comparisons work for + Inf, NaN and define HAVE_IEEE_COMPARISONS + +Tue Jan 8 21:38:23 2002 Brian Gough + + * config.h (GSL_RANGE_CHECK_OFF): turn off range checking when + building the library, still on by default when compiling user + applications + +Mon Nov 19 21:40:30 2001 Brian Gough + + * standardised all files to #include for exported header + files rather than having some as #include "...", to simplify build + procedure + +Fri Oct 19 15:19:45 2001 Brian Gough + + * gsl-histogram.c (main): use gsl_histogram_alloc instead of + calloc + +Wed Oct 3 11:06:51 2001 Brian Gough + + * removed auto-expanding RCS tokens from comments as they + interfere with making patches + + * configure.in: check for isinf(), finite(), isnan() as + macros. Also check for isfinite() as an alternative to finite(). + +Sat Sep 29 18:04:35 2001 Brian Gough + + * gsl.m4: cleaned up arguments to GSL_CONFIG + +Wed Sep 19 17:41:13 2001 Brian Gough + + * gsl-histogram.c (main): turn off the display of mean and + standard deviation it is too confusing because it is not the mean + of the data itself. + +Tue Sep 18 20:08:39 2001 Brian Gough + + * test_gsl_histogram.sh: modified the expected test output to + account for the mean,sigma lines now produced + +Wed Sep 12 13:39:55 2001 Brian Gough + + * gsl-histogram.c (main): print out the mean and standard + deviation as comments + +Sun Sep 9 22:57:11 2001 Brian Gough + + * configure.in: print out a warning for OS/2 telling the user to + run an extra script + +Fri Sep 7 14:32:01 2001 Brian Gough + + * gsl.pc.in: added pkg-config file + + * configure.in: avoid clobbering any LIBS specified, by not + putting -lm in front of them. This allows the user to specify an + alternate math library for the configure script. + (ac_cv_func_printf_longdouble): added generation of gsl.pc for + pkg-config + +Thu Sep 6 21:08:10 2001 Brian Gough + + * configure.in: added an option to specify an alternative math + library + +Tue Sep 4 09:41:37 2001 Brian Gough + + * gsl.spec.in: autogenerate gsl.spec from gsl.spec.in + +Sun Aug 26 17:19:24 2001 Brian Gough + + * acconfig.h: fixed incorrect #ifdef for HAVE_FINITE (Henry + Sobotka) + +Sat Aug 25 10:25:41 2001 Brian Gough + + * gsl_math.h: moved includes to beginning of file to avoid + redefinition errors on OS/2 + +Tue Aug 21 23:54:45 2001 Brian Gough + + * gsl_nan.h (GSL_POSINF): removed incorrect use of _FPCLASS.. for + MSVC, these are flags not numerical values. + +Thu Aug 9 22:51:00 2001 Brian Gough + + * config.h.in: added a macro for discarding a pointer, used to + suppress warnings from gcc about unused parameters + +Sun Aug 5 20:35:09 2001 Brian Gough + + * configure.in: move PPC bug test to beginning of configure + script, to save waiting for it to appear at the end + +Sat Jul 14 21:13:55 2001 Brian Gough + + * gsl_nan.h: use C99X macro INFINITY where available + +Fri Jul 13 21:31:01 2001 Brian Gough + + * templates_on.h: added macros for unqualified views, needed for + initialization of views + +Mon Jul 9 11:22:16 2001 Brian Gough + + * configure.in: made check for extended precision registers + independent of test for os ieee interface type + +Sun Jul 1 22:44:00 2001 Brian Gough + + * templates_on.h templates_off.h: modified to support views + +Wed Jun 27 12:15:19 2001 Brian Gough + + * configure.in: work around case of broken log1p in OpenBSD + +Mon Jun 25 10:21:17 2001 Brian Gough + + * configure.in: catch case of openbsd, which is not supported yet + in ieee directory + +Mon Jun 18 22:31:26 2001 Brian Gough + + * configure.in (GSL_CFLAGS): now just uses includedir for + gsl-config.in + +Wed Jun 6 18:10:18 2001 Brian Gough + + * removed explicit dependencies from Makefile.am's since automake + now handles these automatically + +Tue May 29 12:40:08 2001 Brian Gough + + * configure.in: added missing wildcard to end of hpux11* to match + different versions of hpux11, e.g. hpux11.2. + +Tue May 22 10:38:59 2001 Brian Gough + + * gsl.m4: try to make C-code compatible with C++, also changed + return() to exit() as mentioned in the autoconf documentation. + +2001-05-21 Mark Galassi + + * config.guess, config.sub: removed these auto-generated files + from CVS since they are built for developers by autogen.sh. + +Tue May 15 10:59:43 2001 Brian Gough + + * autogen.sh: upgraded to latest libtool and automake + +Tue May 1 12:19:01 2001 Brian Gough + + * gsl_nan.h (GSL_NAN): added definitions for Microsoft Visual C++ + +Mon Apr 30 13:46:39 2001 Brian Gough + + * gsl_math.h: split out gsl_pow_int.h and gsl_nan.h + +Wed Mar 21 14:16:29 2001 Brian Gough + + * gsl-config.in (Usage): allow user to specify an external blas + library through an environment variable + +2000-12-14 Mark Galassi + + * gsl.spec, configure.in: upped the version to 0.7+ since the + release has been made. + +2000-10-26 Mark Galassi + + * ltconfig, ltmain.sh: removed these auto-generated files. + +2000-10-26 Mark Galassi + + * stamp-h.in: removed this file because it is auto-generated. + + * scripts/mkknownproblems.sh: fixed it so it's slightly better, + but it still assumes that you run it out of $(srcdir)/scripts. + + * scripts/knownproblems.pl: put in a more standard path for perl. + + * AUTHORS: some changes and additions. + + * KNOWN-PROBLEMS: updated the list of known problems. + +2000-10-04 Mark Galassi + + * NEWS, configure.in, gsl.spec: upped the version to 0.7 as we are + about to release. + +Thu Jul 20 20:20:04 2000 Brian Gough + + * gsl.m4: changed \? to \{0,1\} in the sed commands to allow for + SGI sed (from Steve ROBBINS ) + +Sun Jul 9 19:34:03 2000 Brian Gough + + * gsl.m4: modified to accept x.y version numbers as the first + argument in addition to x.y.z version numbers + +Mon Jun 12 22:18:27 2000 Brian Gough + + * Makefile.am (SUBLIBS): added missing complex lib to top-level + SUBLIBS + +Sun Jun 11 17:39:18 2000 Brian Gough + + * gsl.spec (BuildRoot): fixed directory for install, it is now + /usr/lib/ instead of /usr/lib/gsl/ + +Tue Jun 6 20:02:02 2000 Brian Gough + + * acconfig.h, configure.in: use HAVE_X86LINUX_IEEE_INTEFACE for + x86 instead of generic HAVE_LINUX_IEEE_INTEFACE + +2000-06-02 Mark Galassi + + * gsl.spec: added gsl.m4 to the list of files. + + * NEWS: added a mention of gsl.m4. + + * gsl.spec: small changes to fix the installation of doc files. + + * Makefile.am: added some files (like MACHINES, KNOWN-PROBLEMS, + ...) to the distribution. + + * gsl.spec, configure.in, KNOWN-PROBLEMS: upped the version number + to 0.6. Also: gsl.spec now installes files like MACHINES, + KNOWN-PROBLEMS, NEWS,... into the package's %doc file list. + +Sun May 28 12:03:36 2000 Brian Gough + + * gsl/Makefile.am (header-links): use configurable macro variable + $(LN_S) instead of explicit "ln -s" + +Mon May 15 19:16:31 2000 Brian Gough + + * added ieee mode setting to all tests, so that they can be run in + double-precision even on extended precision architectures + +2000-05-14 Steve Robbins + + * acconfig.h: + * configure.in: look in both and /usr/include/float.h, + to find FP_RND_RN, as some versions of GCC don't copy these + symbols into the `fixed' header. + +Thu May 11 12:47:19 2000 Brian Gough + + * gsl_math.h (GSL_POSZERO): added macros for IEEE signed zeros, +0 + and -0. They don't do anything useful yet, but use the macro so + that will be possible to work around compilers that don't + understand the difference between the constants -0 and +0. + +Wed May 10 11:30:15 2000 Brian Gough + + * gsl_math.h (GSL_POSINF): make use of HUGE_VAL which is actually + +Inf when IEEE is available, and can be detected by the NAN being + defined (it is only defined on IEEE machines) + (GSL_NEGINF): as for GSL_POSINF + +Fri May 5 11:20:50 2000 Brian Gough + + * split out gsl_test code from err/ directory into test/ directory + +Thu May 4 12:14:42 2000 Brian Gough + + * added GPL headers throughout + +Mon May 1 22:11:32 2000 Brian Gough + + * modified all the makefiles to compile test programs as "test", + for simpler automated builds + +Tue Apr 11 14:51:59 2000 Brian Gough + + * eigen/eigen_sort.c (gsl_eigen_sort_impl): updated occurrence of + gsl_matrix_swap_cols to gsl_matrix_swap_columns + + * gsl.m4, Makefile.am: added gsl.m4 macros for autoconf + support + +2000-04-03 Mark Galassi + + * gsl-config.in, configure.in (GSL_CFLAGS): replaced my gsl-config + script with Christopher Gabriel's, which is simpler. + + * autogen.sh: changed this into a no-brainer which does not invoke + configure. + +Mon Apr 3 15:43:25 2000 Brian Gough + + * applied patch from C M Murphy to fix up + missing consts in header files. + +Sat Apr 1 20:12:34 2000 Brian Gough + + * gsl_math.h: added some missing extra constants from BSD + (e.g. M_PI_2) + +Wed Mar 15 11:16:14 2000 Brian Gough + + * added a directory for complex number support, complex/ + +Tue Mar 14 10:28:43 2000 Brian Gough + + * added support for including headers in C++ programs using + __BEGIN_DECLS and __END_DECLS macros + +Sat Mar 11 11:18:33 2000 Brian Gough + + * templates_on.h: added a definition for ONE, to match ZERO + + * Changed matrix struct element dim2 to tda throughout + +Mon Mar 6 19:48:27 2000 Brian Gough + + * gsl_version.h: added simple release-number based support for + accessing the version number at compile-time and run-time. This is + not a complete solution but it will do for now, as libtool + interface numbers are too complicated to worry about at the + moment due to other problems with libtool. + +Thu Mar 2 20:52:50 2000 Brian Gough + + * templates_on.h (ATOMIC_IO): added an internal type for IO, for + the cases where it isn't possible to read and write a type + directly as text (e.g. char) + +2000-02-23 Mark Galassi + + * Makefile.am, gsl.spec: added a gsl.spec. Seems to work. + + * gsl-config.in: overhauled gsl-config.in; should work better now. + +Tue Feb 15 18:55:05 2000 Brian Gough + + * added directory for permutation objects, permutation/ + +Sun Dec 5 14:20:43 1999 Brian Gough + + * added multidimensional minimisation directory, multimin/ + +1999-12-03 Mark Galassi + + * configure.in: upped the version to 0.5+, so that snaphots built + out of CVS will not be confused with the 0.5 release. + + * AUTHORS, README, HACKING: changed my email address. + + * README: updated with some of Brian's suggestions. + + * configure.in, NEWS: fixed the new version to 0.5. + +Tue Oct 19 11:15:16 1999 Brian Gough + + * added the eigen value directory, eigen/ + +1999-08-30 Mark Galassi + + * gsl-config.in: started adding this script, for now cannibalized + from gnome-config. + +Fri Aug 20 11:10:54 1999 Brian Gough + + * support for IEEE on Tru64 from Tim Mooney + +Mon Aug 16 21:10:23 1999 Brian Gough + + * added the minimization directory, min/ + +Fri Aug 6 11:15:58 1999 Brian Gough + + * configure.in: removed need to configure for rand() and RAND_MAX + by providing a simple random number generator in the directories + that used rand(). + +1999-08-05 Mark Galassi + + * Makefile.am: put the THANKS file into the distribution. + + * autogen.sh: added the --add-missing option to automake. I'm + surprised it was not already there. + + * configure.in: added a + to the version, indicating that any + snapshots made from anonymous CVS in this state should be + interpreted as "after 0.4.1 and before the next version", and no + other promises. + + * THANKS: added this THANKS file. We appreciate all patches from + people on the net, even those which are too small to warrant + adding the author to the AUTHORS file. The THANKS file should + include everyone who sent in patches. They should also be + mentioned in the ChangeLog entry. + +Sat May 8 21:06:31 1999 Brian Gough + + * configure.in: now check for "extern inline" using a modified + version of AC_C_INLINE, since we use "extern inline" but only + checked for "inline", and some compilers only support the latter. + +Sun Apr 11 20:40:35 1999 Brian Gough + + * libraries and include files are now installed in pkglibdir and + pkgincludedir (e.g. /usr/local/lib/gsl/ and + /usr/local/include/gsl/ by default) + + * libraries are now built and installed separately + +Mon Mar 1 15:41:25 1999 Brian Gough + + * gsl_math.h: renamed gsl_fdf to gsl_function_fdf, so that it will + be more obvious what it is + +Sun Feb 28 20:37:31 1999 Brian Gough + + * gsl_mode.h: added prototype for GSL_MODE_PREC(mt) + +Tue Feb 23 14:18:39 1999 Brian Gough + + * gsl_math.h (GSL_FDF_EVAL_F): improved names of macros + +Sat Feb 20 12:14:07 1999 Brian Gough + + * split out polynomial root finding algorithms into a new poly/ + directory + +1999-02-25 Mark Galassi + + * configure.in: upped the version to 0.4.1; this is ready for + tagging. + +1999-02-06 Mark Galassi + + * NEWS: udpated in occasion of the imminent 0.4.1 release. + +Sun Feb 14 20:47:07 1999 Brian Gough + + * Makefile.am: added gsl_mode.h to include_HEADERS + +Mon Feb 8 18:39:35 1999 Brian Gough + + * added new type gsl_function for arbitrary functions with + parameters, and gsl_fdf for functions and their derivatives + +Mon Feb 8 18:39:35 1999 Brian Gough + + * gsl_complex.h: added GSL_SET_REAL(&z,x) and GSL_SET_IMAG(&z,y), + changed GSL_COMPLEX_SET(z,x,y) to GSL_SET_COMPLEX(&z,x,y) to match. + +1999-01-03 Mark Galassi + + * Makefile.am, autogen.sh: improved autogen.sh, based on the gtk+ + autogen.sh. Added it to Makefile.am's EXTRA_DIST list. + +1999-01-02 Mark Galassi + + * configure.in: introduced a test for hypot(), in case a system + does not have it. + +1999-01-03 Mark Galassi + + * autogen.sh: added this simple script which calls aclocal, + automake --add-missind and autoconf, followed by ./configure with + all the arguments. + + * configure, Makefile.in, */Makefile.in: removed these + auto-generated files. + +Fri Dec 11 16:50:27 1998 Brian Gough + + * AUTHORS: corrected the spelling of Gerard Jungman's name (it's + either Gerard or Jerry, but not Gerry) + +1998-12-05 Mark Galassi + + * configure.in: made the version be 0.4after so it's clear that + snapshots will be post-0.4. + + * HACKING: updated a bit to work with the new CVS repository. + +Mon Nov 23 16:09:21 1998 Brian Gough + + * gsl_config.h: removed, it was an unnecessary hack just for + defining macros. Autoconf's config.h should be used by the + programmer instead. + +Sat Nov 21 20:39:14 1998 Brian Gough + + * texinfo.tex: removed, this is a duplicate and shouldn't be + needed in the top-level directory (it is in docs) + + * move any included headers in _source.c files into the master + file that includes the _source.c, since this saves time when + compiling + + * config.h.in: standardized on HAVE_PRINTF_LONGDOUBLE + +Fri Nov 20 15:14:53 1998 Brian Gough + + * replaced DBL_EPSILON, DBL_MAX, ... by GSL_DBL_EPSILON, + GSL_DBL_MAX, ... + + * added sys directory for miscellaneous gsl system functions like + max and min + +Thu Nov 19 22:46:43 1998 Brian Gough + + * config.h.in: removed MAX and MIN + +Wed Nov 18 10:40:18 1998 Brian Gough + + * gsl_math.h: added prototypes for inline functions GSL_MAX_INT + etc + +Tue Nov 10 20:05:27 1998 Brian Gough + + * gsl_math.h: moved the MAX(a,b) and MIN(a,b) to gsl_math.h and + renamed them GSL_MAX(a,b) and GSL_MIN(a,b) to avoid inevitable + conflicts with system macros. + +Mon Nov 9 21:08:10 1998 Brian Gough + + * config.h: added MAX(a,b) and MIN(a,b) macros since we use these + everywhere. We assume that if they are defined by the system then + they do actually work. + +1998-11-06 + + * configure.in: add -mieee on alpha platforms, also check for both + scanf and printf working with long double + +1998-08-31 James Theiler + + * Makefile.am (SUBDIRS): added utils directory + + * configure.in (AC_OUTPUT): added utils/Makefile + + * configure.in (AC_REPLACE_FUNCS): added strtol, strtoul; removed + strerror since it's already hardcoded into the err/ directory + +1998-08-30 Mark Galassi + + * configure.in: upped release number to 0.4; about to tag and make + the release. + +1998-08-20 Mark Galassi + + * configure.in: upped version to 0.4-interim as we prepare for a + 0.4 snapshot. + + * NEWS: now refers to 0.4 instead of 0.3g. Also "commented out" + (smile) the note that says "we need to do a better job with the + news file", since it looks quite good now! + +1998-08-19 Mark Galassi + + * doc/Makefile.am (EXTRA_DIST): added ran-exppow.tex, + rand-levy.tex, rand-gumbel.tex and rand-bernoulli.tex to + EXTRA_DIST. Now they are included in the distribution and a "make + distcheck" goes further. + +Thu Jul 30 16:12:05 1998 Brian Gough + + * Makefile.am: now using a script to write the AR commands + explicitly, this should be more portable + +Tue Jul 28 23:07:04 1998 Brian Gough + + * Makefile.am: new style single build of libgsl.a + +Fri Jul 10 19:57:49 1998 Brian Gough + + * configure.in: removed AC_FUNC_ALLOCA since we don't use alloca + (it is not ansi) + +Sun Jun 28 14:31:31 1998 Brian Gough + + * replaced the random/ directory by the rng/ directory and made + minor changes in randist/, siman/ to accommodate it + +Tue Jun 23 19:49:22 1998 Brian Gough + + * added a top-level file gsl_config.h for detecting features when + users include the library headers. Currently it just turns on + HAVE_INLINE if you are using GCC or C++. + +1998-05-16 Mark Galassi + + * configure.in: Brian fixed the error where libgslerr.a was not + being installed in the 0.3e release, so I just bumped it up to + 0.3f to make a new release. + +1998-05-14 Mark Galassi + + * configure.in: upped the version to 0.3e, and this time I might + actually make the public snapshot! + +Wed Apr 8 18:30:48 1998 Brian Gough + + * Now using the automake variable check_PROGRAMS everywhere for + the testing programs (no need to build them unless we do make + check) + +Mon Apr 6 15:09:08 1998 Brian Gough + + * added matrix and vector subdirectories + +Wed Mar 18 10:27:27 1998 Brian Gough + + * gsl_complex.h: the typedef for 'complex' has been renamed to + gsl_complex, to avoid conflicts with C++ bindings and libstdc++ + +1998-02-09 Mark Galassi + + * configure.in: 0.3b is now released, so I upped the version + number to 0.3c-interim. + +1998-02-09 Mark Galassi + + * configure.in: upped version number to 0.3b + +1998-01-30 Mark Galassi + + * AUTHORS: added Gerry Jungman to the authors list. + diff --git a/gsl-2.5/INSTALL b/gsl-2.5/INSTALL new file mode 100644 index 00000000..20998407 --- /dev/null +++ b/gsl-2.5/INSTALL @@ -0,0 +1,370 @@ +Installation Instructions +************************* + +Copyright (C) 1994-1996, 1999-2002, 2004-2013 Free Software Foundation, +Inc. + + Copying and distribution of this file, with or without modification, +are permitted in any medium without royalty provided the copyright +notice and this notice are preserved. This file is offered as-is, +without warranty of any kind. + +Basic Installation +================== + + Briefly, the shell command `./configure && make && make install' +should configure, build, and install this package. The following +more-detailed instructions are generic; see the `README' file for +instructions specific to this package. Some packages provide this +`INSTALL' file but do not implement all of the features documented +below. The lack of an optional feature in a given package is not +necessarily a bug. More recommendations for GNU packages can be found +in *note Makefile Conventions: (standards)Makefile Conventions. + + The `configure' shell script attempts to guess correct values for +various system-dependent variables used during compilation. It uses +those values to create a `Makefile' in each directory of the package. +It may also create one or more `.h' files containing system-dependent +definitions. Finally, it creates a shell script `config.status' that +you can run in the future to recreate the current configuration, and a +file `config.log' containing compiler output (useful mainly for +debugging `configure'). + + It can also use an optional file (typically called `config.cache' +and enabled with `--cache-file=config.cache' or simply `-C') that saves +the results of its tests to speed up reconfiguring. Caching is +disabled by default to prevent problems with accidental use of stale +cache files. + + If you need to do unusual things to compile the package, please try +to figure out how `configure' could check whether to do them, and mail +diffs or instructions to the address given in the `README' so they can +be considered for the next release. If you are using the cache, and at +some point `config.cache' contains results you don't want to keep, you +may remove or edit it. + + The file `configure.ac' (or `configure.in') is used to create +`configure' by a program called `autoconf'. You need `configure.ac' if +you want to change it or regenerate `configure' using a newer version +of `autoconf'. + + The simplest way to compile this package is: + + 1. `cd' to the directory containing the package's source code and type + `./configure' to configure the package for your system. + + Running `configure' might take a while. While running, it prints + some messages telling which features it is checking for. + + 2. Type `make' to compile the package. + + 3. Optionally, type `make check' to run any self-tests that come with + the package, generally using the just-built uninstalled binaries. + + 4. Type `make install' to install the programs and any data files and + documentation. When installing into a prefix owned by root, it is + recommended that the package be configured and built as a regular + user, and only the `make install' phase executed with root + privileges. + + 5. Optionally, type `make installcheck' to repeat any self-tests, but + this time using the binaries in their final installed location. + This target does not install anything. Running this target as a + regular user, particularly if the prior `make install' required + root privileges, verifies that the installation completed + correctly. + + 6. You can remove the program binaries and object files from the + source code directory by typing `make clean'. To also remove the + files that `configure' created (so you can compile the package for + a different kind of computer), type `make distclean'. There is + also a `make maintainer-clean' target, but that is intended mainly + for the package's developers. If you use it, you may have to get + all sorts of other programs in order to regenerate files that came + with the distribution. + + 7. Often, you can also type `make uninstall' to remove the installed + files again. In practice, not all packages have tested that + uninstallation works correctly, even though it is required by the + GNU Coding Standards. + + 8. Some packages, particularly those that use Automake, provide `make + distcheck', which can by used by developers to test that all other + targets like `make install' and `make uninstall' work correctly. + This target is generally not run by end users. + +Compilers and Options +===================== + + Some systems require unusual options for compilation or linking that +the `configure' script does not know about. Run `./configure --help' +for details on some of the pertinent environment variables. + + You can give `configure' initial values for configuration parameters +by setting variables in the command line or in the environment. Here +is an example: + + ./configure CC=c99 CFLAGS=-g LIBS=-lposix + + *Note Defining Variables::, for more details. + +Compiling For Multiple Architectures +==================================== + + You can compile the package for more than one kind of computer at the +same time, by placing the object files for each architecture in their +own directory. To do this, you can use GNU `make'. `cd' to the +directory where you want the object files and executables to go and run +the `configure' script. `configure' automatically checks for the +source code in the directory that `configure' is in and in `..'. This +is known as a "VPATH" build. + + With a non-GNU `make', it is safer to compile the package for one +architecture at a time in the source code directory. After you have +installed the package for one architecture, use `make distclean' before +reconfiguring for another architecture. + + On MacOS X 10.5 and later systems, you can create libraries and +executables that work on multiple system types--known as "fat" or +"universal" binaries--by specifying multiple `-arch' options to the +compiler but only a single `-arch' option to the preprocessor. Like +this: + + ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ + CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ + CPP="gcc -E" CXXCPP="g++ -E" + + This is not guaranteed to produce working output in all cases, you +may have to build one architecture at a time and combine the results +using the `lipo' tool if you have problems. + +Installation Names +================== + + By default, `make install' installs the package's commands under +`/usr/local/bin', include files under `/usr/local/include', etc. You +can specify an installation prefix other than `/usr/local' by giving +`configure' the option `--prefix=PREFIX', where PREFIX must be an +absolute file name. + + You can specify separate installation prefixes for +architecture-specific files and architecture-independent files. If you +pass the option `--exec-prefix=PREFIX' to `configure', the package uses +PREFIX as the prefix for installing programs and libraries. +Documentation and other data files still use the regular prefix. + + In addition, if you use an unusual directory layout you can give +options like `--bindir=DIR' to specify different values for particular +kinds of files. Run `configure --help' for a list of the directories +you can set and what kinds of files go in them. In general, the +default for these options is expressed in terms of `${prefix}', so that +specifying just `--prefix' will affect all of the other directory +specifications that were not explicitly provided. + + The most portable way to affect installation locations is to pass the +correct locations to `configure'; however, many packages provide one or +both of the following shortcuts of passing variable assignments to the +`make install' command line to change installation locations without +having to reconfigure or recompile. + + The first method involves providing an override variable for each +affected directory. For example, `make install +prefix=/alternate/directory' will choose an alternate location for all +directory configuration variables that were expressed in terms of +`${prefix}'. Any directories that were specified during `configure', +but not in terms of `${prefix}', must each be overridden at install +time for the entire installation to be relocated. The approach of +makefile variable overrides for each directory variable is required by +the GNU Coding Standards, and ideally causes no recompilation. +However, some platforms have known limitations with the semantics of +shared libraries that end up requiring recompilation when using this +method, particularly noticeable in packages that use GNU Libtool. + + The second method involves providing the `DESTDIR' variable. For +example, `make install DESTDIR=/alternate/directory' will prepend +`/alternate/directory' before all installation names. The approach of +`DESTDIR' overrides is not required by the GNU Coding Standards, and +does not work on platforms that have drive letters. On the other hand, +it does better at avoiding recompilation issues, and works well even +when some directory options were not specified in terms of `${prefix}' +at `configure' time. + +Optional Features +================= + + If the package supports it, you can cause programs to be installed +with an extra prefix or suffix on their names by giving `configure' the +option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. + + Some packages pay attention to `--enable-FEATURE' options to +`configure', where FEATURE indicates an optional part of the package. +They may also pay attention to `--with-PACKAGE' options, where PACKAGE +is something like `gnu-as' or `x' (for the X Window System). The +`README' should mention any `--enable-' and `--with-' options that the +package recognizes. + + For packages that use the X Window System, `configure' can usually +find the X include and library files automatically, but if it doesn't, +you can use the `configure' options `--x-includes=DIR' and +`--x-libraries=DIR' to specify their locations. + + Some packages offer the ability to configure how verbose the +execution of `make' will be. For these packages, running `./configure +--enable-silent-rules' sets the default to minimal output, which can be +overridden with `make V=1'; while running `./configure +--disable-silent-rules' sets the default to verbose, which can be +overridden with `make V=0'. + +Particular systems +================== + + On HP-UX, the default C compiler is not ANSI C compatible. If GNU +CC is not installed, it is recommended to use the following options in +order to use an ANSI C compiler: + + ./configure CC="cc -Ae -D_XOPEN_SOURCE=500" + +and if that doesn't work, install pre-built binaries of GCC for HP-UX. + + HP-UX `make' updates targets which have the same time stamps as +their prerequisites, which makes it generally unusable when shipped +generated files such as `configure' are involved. Use GNU `make' +instead. + + On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot +parse its `' header file. The option `-nodtk' can be used as +a workaround. If GNU CC is not installed, it is therefore recommended +to try + + ./configure CC="cc" + +and if that doesn't work, try + + ./configure CC="cc -nodtk" + + On Solaris, don't put `/usr/ucb' early in your `PATH'. This +directory contains several dysfunctional programs; working variants of +these programs are available in `/usr/bin'. So, if you need `/usr/ucb' +in your `PATH', put it _after_ `/usr/bin'. + + On Haiku, software installed for all users goes in `/boot/common', +not `/usr/local'. It is recommended to use the following options: + + ./configure --prefix=/boot/common + +Specifying the System Type +========================== + + There may be some features `configure' cannot figure out +automatically, but needs to determine by the type of machine the package +will run on. Usually, assuming the package is built to be run on the +_same_ architectures, `configure' can figure that out, but if it prints +a message saying it cannot guess the machine type, give it the +`--build=TYPE' option. TYPE can either be a short name for the system +type, such as `sun4', or a canonical name which has the form: + + CPU-COMPANY-SYSTEM + +where SYSTEM can have one of these forms: + + OS + KERNEL-OS + + See the file `config.sub' for the possible values of each field. If +`config.sub' isn't included in this package, then this package doesn't +need to know the machine type. + + If you are _building_ compiler tools for cross-compiling, you should +use the option `--target=TYPE' to select the type of system they will +produce code for. + + If you want to _use_ a cross compiler, that generates code for a +platform different from the build platform, you should specify the +"host" platform (i.e., that on which the generated programs will +eventually be run) with `--host=TYPE'. + +Sharing Defaults +================ + + If you want to set default values for `configure' scripts to share, +you can create a site shell script called `config.site' that gives +default values for variables like `CC', `cache_file', and `prefix'. +`configure' looks for `PREFIX/share/config.site' if it exists, then +`PREFIX/etc/config.site' if it exists. Or, you can set the +`CONFIG_SITE' environment variable to the location of the site script. +A warning: not all `configure' scripts look for a site script. + +Defining Variables +================== + + Variables not defined in a site shell script can be set in the +environment passed to `configure'. However, some packages may run +configure again during the build, and the customized values of these +variables may be lost. In order to avoid this problem, you should set +them in the `configure' command line, using `VAR=value'. For example: + + ./configure CC=/usr/local2/bin/gcc + +causes the specified `gcc' to be used as the C compiler (unless it is +overridden in the site shell script). + +Unfortunately, this technique does not work for `CONFIG_SHELL' due to +an Autoconf limitation. Until the limitation is lifted, you can use +this workaround: + + CONFIG_SHELL=/bin/bash ./configure CONFIG_SHELL=/bin/bash + +`configure' Invocation +====================== + + `configure' recognizes the following options to control how it +operates. + +`--help' +`-h' + Print a summary of all of the options to `configure', and exit. + +`--help=short' +`--help=recursive' + Print a summary of the options unique to this package's + `configure', and exit. The `short' variant lists options used + only in the top level, while the `recursive' variant lists options + also present in any nested packages. + +`--version' +`-V' + Print the version of Autoconf used to generate the `configure' + script, and exit. + +`--cache-file=FILE' + Enable the cache: use and save the results of the tests in FILE, + traditionally `config.cache'. FILE defaults to `/dev/null' to + disable caching. + +`--config-cache' +`-C' + Alias for `--cache-file=config.cache'. + +`--quiet' +`--silent' +`-q' + Do not print messages saying which checks are being made. To + suppress all normal output, redirect it to `/dev/null' (any error + messages will still be shown). + +`--srcdir=DIR' + Look for the package's source code in directory DIR. Usually + `configure' can determine that directory automatically. + +`--prefix=DIR' + Use DIR as the installation prefix. *note Installation Names:: + for more details, including other options available for fine-tuning + the installation locations. + +`--no-create' +`-n' + Run the configure checks, but stop before creating any output + files. + +`configure' also accepts some other, not widely useful, options. Run +`configure --help' for more details. diff --git a/gsl-2.5/Makefile b/gsl-2.5/Makefile new file mode 100644 index 00000000..c5935353 --- /dev/null +++ b/gsl-2.5/Makefile @@ -0,0 +1,1570 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + + +# AUTOMAKE_OPTIONS = readme-alpha + + + + + + +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/gsl +pkgincludedir = $(includedir)/gsl +pkglibdir = $(libdir)/gsl +pkglibexecdir = $(libexecdir)/gsl +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = x86_64-unknown-linux-gnu +host_triplet = x86_64-unknown-linux-gnu +bin_PROGRAMS = gsl-randist$(EXEEXT) gsl-histogram$(EXEEXT) +subdir = . +DIST_COMMON = INSTALL NEWS README AUTHORS ChangeLog \ + $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/configure $(am__configure_deps) \ + $(srcdir)/config.h.in mkinstalldirs $(srcdir)/gsl_version.h.in \ + $(srcdir)/gsl.spec.in depcomp $(noinst_HEADERS) \ + $(pkginclude_HEADERS) test-driver COPYING THANKS TODO \ + config.guess config.sub install-sh mdate-sh missing ltmain.sh +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ + configure.lineno config.status.lineno +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = config.h +CONFIG_CLEAN_FILES = gsl_version.h gsl.spec +CONFIG_CLEAN_VPATH_FILES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)" \ + "$(DESTDIR)$(bindir)" "$(DESTDIR)$(m4datadir)" \ + "$(DESTDIR)$(pkgconfigdir)" "$(DESTDIR)$(pkgincludedir)" +LTLIBRARIES = $(lib_LTLIBRARIES) +am__DEPENDENCIES_1 = +libgsl_la_DEPENDENCIES = $(am__DEPENDENCIES_1) $(SUBLIBS) +am_libgsl_la_OBJECTS = version.lo +libgsl_la_OBJECTS = $(am_libgsl_la_OBJECTS) +AM_V_lt = $(am__v_lt_$(V)) +am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) +am__v_lt_0 = --silent +am__v_lt_1 = +libgsl_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(libgsl_la_LDFLAGS) $(LDFLAGS) -o $@ +PROGRAMS = $(bin_PROGRAMS) +am_gsl_histogram_OBJECTS = gsl-histogram.$(OBJEXT) +gsl_histogram_OBJECTS = $(am_gsl_histogram_OBJECTS) +gsl_histogram_DEPENDENCIES = libgsl.la cblas/libgslcblas.la +am_gsl_randist_OBJECTS = gsl-randist.$(OBJEXT) +gsl_randist_OBJECTS = $(am_gsl_randist_OBJECTS) +gsl_randist_DEPENDENCIES = libgsl.la cblas/libgslcblas.la +SCRIPTS = $(bin_SCRIPTS) +AM_V_P = $(am__v_P_$(V)) +am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY)) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_$(V)) +am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_$(V)) +am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I. +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_$(V)) +am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_$(V)) +am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libgsl_la_SOURCES) $(gsl_histogram_SOURCES) \ + $(gsl_randist_SOURCES) +DIST_SOURCES = $(libgsl_la_SOURCES) $(gsl_histogram_SOURCES) \ + $(gsl_randist_SOURCES) +RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ + ctags-recursive dvi-recursive html-recursive info-recursive \ + install-data-recursive install-dvi-recursive \ + install-exec-recursive install-html-recursive \ + install-info-recursive install-pdf-recursive \ + install-ps-recursive install-recursive installcheck-recursive \ + installdirs-recursive pdf-recursive ps-recursive \ + tags-recursive uninstall-recursive +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +DATA = $(m4data_DATA) $(pkgconfig_DATA) +HEADERS = $(noinst_HEADERS) $(pkginclude_HEADERS) +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +am__recursive_targets = \ + $(RECURSIVE_TARGETS) \ + $(RECURSIVE_CLEAN_TARGETS) \ + $(am__extra_recursive_targets) +AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ + cscope check recheck distdir dist dist-all distcheck +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) \ + $(LISP)config.h.in +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +CSCOPE = cscope +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = .test +LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +DIST_SUBDIRS = $(SUBDIRS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +distdir = $(PACKAGE)-$(VERSION) +top_distdir = $(distdir) +am__remove_distdir = \ + if test -d "$(distdir)"; then \ + find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ + && rm -rf "$(distdir)" \ + || { sleep 5 && rm -rf "$(distdir)"; }; \ + else :; fi +am__post_remove_distdir = $(am__remove_distdir) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" +DIST_ARCHIVES = $(distdir).tar.gz +GZIP_ENV = --best +DIST_TARGETS = dist-gzip +distuninstallcheck_listfiles = find . -type f -print +am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ + | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' +distcleancheck_listfiles = find . -type f -print +ACLOCAL = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing aclocal-1.13 +AMTAR = $${TAR-tar} +AM_DEFAULT_VERBOSITY = 1 +AR = ar +AS = as +AUTOCONF = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing autoconf +AUTOHEADER = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing autoheader +AUTOMAKE = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing automake-1.13 +AWK = gawk +CC = gcc +CCDEPMODE = depmode=gcc3 +CFLAGS = -g -O2 +CPP = gcc -E +CPPFLAGS = +CYGPATH_W = echo +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +DLLTOOL = false +DSYMUTIL = +DUMPBIN = +ECHO_C = +ECHO_N = -n +ECHO_T = +EGREP = /usr/bin/grep -E +EXEEXT = +FGREP = /usr/bin/grep -F +GREP = /usr/bin/grep +GSLCBLAS_LDFLAGS = +GSL_CFLAGS = -I${prefix}/include +GSL_LDFLAGS = +GSL_LIBADD = +GSL_LIBM = -lm +GSL_LIBS = -L${exec_prefix}/lib -lgsl +GSL_LT_CBLAS_VERSION = 0:0:0 +GSL_LT_VERSION = 24:0:1 +GSL_MAJOR_VERSION = 2 +GSL_MINOR_VERSION = 5 +HAVE_AIX_IEEE_INTERFACE = +HAVE_DARWIN86_IEEE_INTERFACE = +HAVE_DARWIN_IEEE_INTERFACE = +HAVE_FREEBSD_IEEE_INTERFACE = +HAVE_GNUM68K_IEEE_INTERFACE = +HAVE_GNUPPC_IEEE_INTERFACE = +HAVE_GNUSPARC_IEEE_INTERFACE = +HAVE_GNUX86_IEEE_INTERFACE = +HAVE_HPUX11_IEEE_INTERFACE = +HAVE_HPUX_IEEE_INTERFACE = +HAVE_IRIX_IEEE_INTERFACE = +HAVE_NETBSD_IEEE_INTERFACE = +HAVE_OPENBSD_IEEE_INTERFACE = +HAVE_OS2EMX_IEEE_INTERFACE = +HAVE_SOLARIS_IEEE_INTERFACE = +HAVE_SUNOS4_IEEE_INTERFACE = +HAVE_TRU64_IEEE_INTERFACE = +INSTALL = /usr/bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = $(install_sh) -c -s +LD = /usr/bin/ld -m elf_x86_64 +LDFLAGS = +LIBM = -lm +LIBOBJS = +LIBS = -lm +LIBTOOL = $(SHELL) $(top_builddir)/libtool +LIPO = +LN_S = ln -s +LTLIBOBJS = +MAINT = # +MAKEINFO = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing makeinfo +MANIFEST_TOOL = : +MKDIR_P = /usr/bin/mkdir -p +NM = /usr/bin/nm -B +NMEDIT = +OBJDUMP = objdump +OBJEXT = o +OTOOL = +OTOOL64 = +PACKAGE = gsl +PACKAGE_BUGREPORT = +PACKAGE_NAME = gsl +PACKAGE_STRING = gsl 2.5 +PACKAGE_TARNAME = gsl +PACKAGE_URL = +PACKAGE_VERSION = 2.5 +PATH_SEPARATOR = : +RANLIB = ranlib +SED = /usr/bin/sed +SET_MAKE = +SHELL = /bin/sh +STRIP = strip +VERSION = 2.5 +abs_builddir = /home/groups/kipac/chto/package/gsl/gsl-2.5 +abs_srcdir = /home/groups/kipac/chto/package/gsl/gsl-2.5 +abs_top_builddir = /home/groups/kipac/chto/package/gsl/gsl-2.5 +abs_top_srcdir = /home/groups/kipac/chto/package/gsl/gsl-2.5 +ac_ct_AR = ar +ac_ct_CC = gcc +ac_ct_DUMPBIN = +am__include = include +am__leading_dot = . +am__quote = +am__tar = $${TAR-tar} chof - "$$tardir" +am__untar = $${TAR-tar} xf - +bindir = ${exec_prefix}/bin +build = x86_64-unknown-linux-gnu +build_alias = +build_cpu = x86_64 +build_os = linux-gnu +build_vendor = unknown +builddir = . +datadir = ${datarootdir} +datarootdir = ${prefix}/share +docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} +dvidir = ${docdir} +exec_prefix = ${prefix} +host = x86_64-unknown-linux-gnu +host_alias = +host_cpu = x86_64 +host_os = linux-gnu +host_vendor = unknown +htmldir = ${docdir} +includedir = ${prefix}/include +infodir = ${datarootdir}/info +install_sh = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/install-sh +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +localedir = ${datarootdir}/locale +localstatedir = ${prefix}/var +mandir = ${datarootdir}/man +mkdir_p = $(MKDIR_P) +oldincludedir = /usr/include +pdfdir = ${docdir} +prefix = /home/groups/kipac/chto/package/gsl/gsl_lib +program_transform_name = s,x,x, +psdir = ${docdir} +sbindir = ${exec_prefix}/sbin +sharedstatedir = ${prefix}/com +srcdir = . +sysconfdir = ${prefix}/etc +target_alias = +top_build_prefix = +top_builddir = . +top_srcdir = . +SUBDIRS = gsl utils sys test err const complex cheb block vector matrix permutation combination multiset sort ieee-utils cblas blas linalg eigen specfunc dht qrng rng randist fft poly fit multifit multifit_nlinear multilarge multilarge_nlinear filter movstat rstat statistics siman sum integration interpolation histogram ode-initval ode-initval2 roots multiroots min multimin monte ntuple diff deriv cdf wavelet bspline spblas spmatrix splinalg doc +SUBLIBS = block/libgslblock.la blas/libgslblas.la \ + bspline/libgslbspline.la complex/libgslcomplex.la \ + cheb/libgslcheb.la dht/libgsldht.la diff/libgsldiff.la \ + deriv/libgslderiv.la eigen/libgsleigen.la err/libgslerr.la \ + fft/libgslfft.la filter/libgslfilter.la fit/libgslfit.la \ + histogram/libgslhistogram.la ieee-utils/libgslieeeutils.la \ + integration/libgslintegration.la \ + interpolation/libgslinterpolation.la linalg/libgsllinalg.la \ + matrix/libgslmatrix.la min/libgslmin.la monte/libgslmonte.la \ + multifit/libgslmultifit.la \ + multifit_nlinear/libgslmultifit_nlinear.la \ + multilarge/libgslmultilarge.la \ + multilarge_nlinear/libgslmultilarge_nlinear.la \ + multimin/libgslmultimin.la multiroots/libgslmultiroots.la \ + ntuple/libgslntuple.la ode-initval/libgslodeiv.la \ + ode-initval2/libgslodeiv2.la permutation/libgslpermutation.la \ + combination/libgslcombination.la multiset/libgslmultiset.la \ + poly/libgslpoly.la qrng/libgslqrng.la randist/libgslrandist.la \ + rng/libgslrng.la roots/libgslroots.la siman/libgslsiman.la \ + sort/libgslsort.la specfunc/libgslspecfunc.la \ + movstat/libgslmovstat.la rstat/libgslrstat.la \ + statistics/libgslstatistics.la sum/libgslsum.la \ + sys/libgslsys.la test/libgsltest.la utils/libutils.la \ + vector/libgslvector.la cdf/libgslcdf.la \ + wavelet/libgslwavelet.la spmatrix/libgslspmatrix.la \ + spblas/libgslspblas.la splinalg/libgslsplinalg.la +pkginclude_HEADERS = gsl_math.h gsl_pow_int.h gsl_nan.h gsl_machine.h gsl_mode.h gsl_precision.h gsl_types.h gsl_version.h gsl_minmax.h gsl_inline.h +bin_SCRIPTS = gsl-config +pkgconfigdir = $(libdir)/pkgconfig +pkgconfig_DATA = gsl.pc +CLEANFILES = gsl.pc gsl-config +EXTRA_DIST = autogen.sh gsl-config.in gsl.pc.in configure.ac THANKS BUGS gsl.spec.in gsl.m4 test_gsl_histogram.sh pkgconfig.test +lib_LTLIBRARIES = libgsl.la +libgsl_la_SOURCES = version.c +libgsl_la_LIBADD = $(GSL_LIBADD) $(SUBLIBS) +libgsl_la_LDFLAGS = $(GSL_LDFLAGS) -version-info $(GSL_LT_VERSION) +noinst_HEADERS = templates_on.h templates_off.h build.h +m4datadir = $(datadir)/aclocal +m4data_DATA = gsl.m4 +gsl_randist_SOURCES = gsl-randist.c +gsl_randist_LDADD = libgsl.la cblas/libgslcblas.la +gsl_histogram_SOURCES = gsl-histogram.c +gsl_histogram_LDADD = libgsl.la cblas/libgslcblas.la +check_SCRIPTS = test_gsl_histogram.sh pkgconfig.test +TESTS = test_gsl_histogram.sh pkgconfig.test + +#bin_PROGRAMS = main dummy +#dummy_SOURCES = version.c +#dummy_LDADD = $(SUBLIBS) +#main_SOURCES = version.c env.c +#main_LDADD = libgsl.la +edit = $(SED) \ + -e 's|@prefix[@]|$(prefix)|g' \ + -e 's|@exec_prefix[@]|$(exec_prefix)|g' \ + -e 's|@libdir[@]|$(libdir)|g' \ + -e 's|@includedir[@]|$(includedir)|g' \ + -e 's|@GSL_CFLAGS[@]|$(GSL_CFLAGS)|g' \ + -e 's|@GSL_LIBM[@]|$(GSL_LIBM)|g' \ + -e 's|@GSL_LIBS[@]|$(GSL_LIBS)|g' \ + -e 's|@LIBS[@]|$(LIBS)|g' \ + -e 's|@VERSION[@]|$(VERSION)|g' + +all: config.h + $(MAKE) $(AM_MAKEFLAGS) all-recursive + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +am--refresh: Makefile + @: +$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + echo ' cd $(srcdir) && $(AUTOMAKE) --gnu'; \ + $(am__cd) $(srcdir) && $(AUTOMAKE) --gnu \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + echo ' $(SHELL) ./config.status'; \ + $(SHELL) ./config.status;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + $(SHELL) ./config.status --recheck + +$(top_srcdir)/configure: # $(am__configure_deps) + $(am__cd) $(srcdir) && $(AUTOCONF) +$(ACLOCAL_M4): # $(am__aclocal_m4_deps) + $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) +$(am__aclocal_m4_deps): + +config.h: stamp-h1 + @if test ! -f $@; then rm -f stamp-h1; else :; fi + @if test ! -f $@; then $(MAKE) $(AM_MAKEFLAGS) stamp-h1; else :; fi + +stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status + @rm -f stamp-h1 + cd $(top_builddir) && $(SHELL) ./config.status config.h +$(srcdir)/config.h.in: # $(am__configure_deps) + ($(am__cd) $(top_srcdir) && $(AUTOHEADER)) + rm -f stamp-h1 + touch $@ + +distclean-hdr: + -rm -f config.h stamp-h1 +gsl_version.h: $(top_builddir)/config.status $(srcdir)/gsl_version.h.in + cd $(top_builddir) && $(SHELL) ./config.status $@ +gsl.spec: $(top_builddir)/config.status $(srcdir)/gsl.spec.in + cd $(top_builddir) && $(SHELL) ./config.status $@ + +install-libLTLIBRARIES: $(lib_LTLIBRARIES) + @$(NORMAL_INSTALL) + @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ + list2=; for p in $$list; do \ + if test -f $$p; then \ + list2="$$list2 $$p"; \ + else :; fi; \ + done; \ + test -z "$$list2" || { \ + echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ + } + +uninstall-libLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ + for p in $$list; do \ + $(am__strip_dir) \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \ + done + +clean-libLTLIBRARIES: + -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) + @list='$(lib_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libgsl.la: $(libgsl_la_OBJECTS) $(libgsl_la_DEPENDENCIES) $(EXTRA_libgsl_la_DEPENDENCIES) + $(AM_V_CCLD)$(libgsl_la_LINK) -rpath $(libdir) $(libgsl_la_OBJECTS) $(libgsl_la_LIBADD) $(LIBS) +install-binPROGRAMS: $(bin_PROGRAMS) + @$(NORMAL_INSTALL) + @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ + fi; \ + for p in $$list; do echo "$$p $$p"; done | \ + sed 's/$(EXEEXT)$$//' | \ + while read p p1; do if test -f $$p \ + || test -f $$p1 \ + ; then echo "$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n;h' \ + -e 's|.*|.|' \ + -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ + sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) files[d] = files[d] " " $$1; \ + else { print "f", $$3 "/" $$4, $$1; } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ + $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-binPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ + -e 's/$$/$(EXEEXT)/' \ + `; \ + test -n "$$list" || exit 0; \ + echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(bindir)" && rm -f $$files + +clean-binPROGRAMS: + @list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +gsl-histogram$(EXEEXT): $(gsl_histogram_OBJECTS) $(gsl_histogram_DEPENDENCIES) $(EXTRA_gsl_histogram_DEPENDENCIES) + @rm -f gsl-histogram$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(gsl_histogram_OBJECTS) $(gsl_histogram_LDADD) $(LIBS) + +gsl-randist$(EXEEXT): $(gsl_randist_OBJECTS) $(gsl_randist_DEPENDENCIES) $(EXTRA_gsl_randist_DEPENDENCIES) + @rm -f gsl-randist$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(gsl_randist_OBJECTS) $(gsl_randist_LDADD) $(LIBS) +install-binSCRIPTS: $(bin_SCRIPTS) + @$(NORMAL_INSTALL) + @list='$(bin_SCRIPTS)'; test -n "$(bindir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n' \ + -e 'h;s|.*|.|' \ + -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) { files[d] = files[d] " " $$1; \ + if (++n[d] == $(am__install_max)) { \ + print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ + else { print "f", d "/" $$4, $$1 } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(bindir)$$dir'"; \ + $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-binSCRIPTS: + @$(NORMAL_UNINSTALL) + @list='$(bin_SCRIPTS)'; test -n "$(bindir)" || exit 0; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 's,.*/,,;$(transform)'`; \ + dir='$(DESTDIR)$(bindir)'; $(am__uninstall_files_from_dir) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +include ./$(DEPDIR)/gsl-histogram.Po +include ./$(DEPDIR)/gsl-randist.Po +include ./$(DEPDIR)/version.Plo + +.c.o: + $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# $(AM_V_CC)source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(COMPILE) -c $< + +.c.obj: + $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# $(AM_V_CC)source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: + $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +# $(AM_V_CC)source='$<' object='$@' libtool=yes \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool config.lt +install-m4dataDATA: $(m4data_DATA) + @$(NORMAL_INSTALL) + @list='$(m4data_DATA)'; test -n "$(m4datadir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(m4datadir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(m4datadir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(m4datadir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(m4datadir)" || exit $$?; \ + done + +uninstall-m4dataDATA: + @$(NORMAL_UNINSTALL) + @list='$(m4data_DATA)'; test -n "$(m4datadir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(m4datadir)'; $(am__uninstall_files_from_dir) +install-pkgconfigDATA: $(pkgconfig_DATA) + @$(NORMAL_INSTALL) + @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgconfigdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgconfigdir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgconfigdir)" || exit $$?; \ + done + +uninstall-pkgconfigDATA: + @$(NORMAL_UNINSTALL) + @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgconfigdir)'; $(am__uninstall_files_from_dir) +install-pkgincludeHEADERS: $(pkginclude_HEADERS) + @$(NORMAL_INSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \ + done + +uninstall-pkgincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir) + +# This directory's subdirectories are mostly independent; you can cd +# into them and run 'make' without going through this Makefile. +# To change the values of 'make' variables: instead of editing Makefiles, +# (1) if the variable is set in 'config.status', edit 'config.status' +# (which will cause the Makefiles to be regenerated when you run 'make'); +# (2) otherwise, pass the desired values on the 'make' command line. +$(am__recursive_targets): + @fail=; \ + if $(am__make_keepgoing); then \ + failcom='fail=yes'; \ + else \ + failcom='exit 1'; \ + fi; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-recursive +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-recursive + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscope: cscope.files + test ! -s cscope.files \ + || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS) +clean-cscope: + -rm -f cscope.files +cscope.files: clean-cscope cscopelist +cscopelist: cscopelist-recursive + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + -rm -f cscope.out cscope.in.out cscope.po.out cscope.files + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + else \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_SCRIPTS) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +test_gsl_histogram.sh.log: test_gsl_histogram.sh + @p='test_gsl_histogram.sh'; \ + b='test_gsl_histogram.sh'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +#.test$(EXEEXT).log: +# @p='$<'; \ +# $(am__set_b); \ +# $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +# --log-file $$b.log --trs-file $$b.trs \ +# $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +# "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + $(am__remove_distdir) + test -d "$(distdir)" || mkdir "$(distdir)" + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + $(am__make_dryrun) \ + || test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ + distdir) \ + || exit 1; \ + fi; \ + done + -test -n "$(am__skip_mode_fix)" \ + || find "$(distdir)" -type d ! -perm -755 \ + -exec chmod u+rwx,go+rx {} \; -o \ + ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ + || chmod -R a+r "$(distdir)" +dist-gzip: distdir + tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz + $(am__post_remove_distdir) + +dist-bzip2: distdir + tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 + $(am__post_remove_distdir) + +dist-lzip: distdir + tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz + $(am__post_remove_distdir) + +dist-xz: distdir + tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz + $(am__post_remove_distdir) + +dist-tarZ: distdir + tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z + $(am__post_remove_distdir) + +dist-shar: distdir + shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz + $(am__post_remove_distdir) + +dist-zip: distdir + -rm -f $(distdir).zip + zip -rq $(distdir).zip $(distdir) + $(am__post_remove_distdir) + +dist dist-all: + $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:' + $(am__post_remove_distdir) + +# This target untars the dist file and tries a VPATH configuration. Then +# it guarantees that the distribution is self-contained by making another +# tarfile. +distcheck: dist + case '$(DIST_ARCHIVES)' in \ + *.tar.gz*) \ + GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\ + *.tar.bz2*) \ + bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ + *.tar.lz*) \ + lzip -dc $(distdir).tar.lz | $(am__untar) ;;\ + *.tar.xz*) \ + xz -dc $(distdir).tar.xz | $(am__untar) ;;\ + *.tar.Z*) \ + uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ + *.shar.gz*) \ + GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\ + *.zip*) \ + unzip $(distdir).zip ;;\ + esac + chmod -R a-w $(distdir) + chmod u+w $(distdir) + mkdir $(distdir)/_build $(distdir)/_inst + chmod a-w $(distdir) + test -d $(distdir)/_build || exit 0; \ + dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ + && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ + && am__cwd=`pwd` \ + && $(am__cd) $(distdir)/_build \ + && ../configure --srcdir=.. --prefix="$$dc_install_base" \ + $(AM_DISTCHECK_CONFIGURE_FLAGS) \ + $(DISTCHECK_CONFIGURE_FLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) dvi \ + && $(MAKE) $(AM_MAKEFLAGS) check \ + && $(MAKE) $(AM_MAKEFLAGS) install \ + && $(MAKE) $(AM_MAKEFLAGS) installcheck \ + && $(MAKE) $(AM_MAKEFLAGS) uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ + distuninstallcheck \ + && chmod -R a-w "$$dc_install_base" \ + && ({ \ + (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ + distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ + } || { rm -rf "$$dc_destdir"; exit 1; }) \ + && rm -rf "$$dc_destdir" \ + && $(MAKE) $(AM_MAKEFLAGS) dist \ + && rm -rf $(DIST_ARCHIVES) \ + && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ + && cd "$$am__cwd" \ + || exit 1 + $(am__post_remove_distdir) + @(echo "$(distdir) archives ready for distribution: "; \ + list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ + sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' +distuninstallcheck: + @test -n '$(distuninstallcheck_dir)' || { \ + echo 'ERROR: trying to run $@ with an empty' \ + '$$(distuninstallcheck_dir)' >&2; \ + exit 1; \ + }; \ + $(am__cd) '$(distuninstallcheck_dir)' || { \ + echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \ + exit 1; \ + }; \ + test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \ + || { echo "ERROR: files left after uninstall:" ; \ + if test -n "$(DESTDIR)"; then \ + echo " (check DESTDIR support)"; \ + fi ; \ + $(distuninstallcheck_listfiles) ; \ + exit 1; } >&2 +distcleancheck: distclean + @if test '$(srcdir)' = . ; then \ + echo "ERROR: distcleancheck can only run from a VPATH build" ; \ + exit 1 ; \ + fi + @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ + || { echo "ERROR: files left in build directory after distclean:" ; \ + $(distcleancheck_listfiles) ; \ + exit 1; } >&2 +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_SCRIPTS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-recursive +all-am: Makefile $(LTLIBRARIES) $(PROGRAMS) $(SCRIPTS) $(DATA) \ + $(HEADERS) config.h +install-binPROGRAMS: install-libLTLIBRARIES + +installdirs: installdirs-recursive +installdirs-am: + for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)" "$(DESTDIR)$(bindir)" "$(DESTDIR)$(m4datadir)" "$(DESTDIR)$(pkgconfigdir)" "$(DESTDIR)$(pkgincludedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-binPROGRAMS clean-generic clean-libLTLIBRARIES \ + clean-libtool mostlyclean-am + +distclean: distclean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-hdr distclean-libtool distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +html-am: + +info: info-recursive + +info-am: + +install-data-am: install-m4dataDATA install-pkgconfigDATA \ + install-pkgincludeHEADERS + +install-dvi: install-dvi-recursive + +install-dvi-am: + +install-exec-am: install-binPROGRAMS install-binSCRIPTS \ + install-libLTLIBRARIES + +install-html: install-html-recursive + +install-html-am: + +install-info: install-info-recursive + +install-info-am: + +install-man: + +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -rf $(top_srcdir)/autom4te.cache + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: uninstall-binPROGRAMS uninstall-binSCRIPTS \ + uninstall-libLTLIBRARIES uninstall-m4dataDATA \ + uninstall-pkgconfigDATA uninstall-pkgincludeHEADERS + +.MAKE: $(am__recursive_targets) all check-am install-am install-strip + +.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \ + am--refresh check check-TESTS check-am clean clean-binPROGRAMS \ + clean-cscope clean-generic clean-libLTLIBRARIES clean-libtool \ + cscope cscopelist-am ctags ctags-am dist dist-all dist-bzip2 \ + dist-gzip dist-lzip dist-shar dist-tarZ dist-xz dist-zip \ + distcheck distclean distclean-compile distclean-generic \ + distclean-hdr distclean-libtool distclean-tags distcleancheck \ + distdir distuninstallcheck dvi dvi-am html html-am info \ + info-am install install-am install-binPROGRAMS \ + install-binSCRIPTS install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am \ + install-libLTLIBRARIES install-m4dataDATA install-man \ + install-pdf install-pdf-am install-pkgconfigDATA \ + install-pkgincludeHEADERS install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am recheck tags tags-am \ + uninstall uninstall-am uninstall-binPROGRAMS \ + uninstall-binSCRIPTS uninstall-libLTLIBRARIES \ + uninstall-m4dataDATA uninstall-pkgconfigDATA \ + uninstall-pkgincludeHEADERS + + +gsl-config gsl.pc: Makefile + @rm -f $@ $@.tmp + @$(edit) '$(srcdir)/$@.in' >>$@.tmp + @chmod a-w $@.tmp + @mv $@.tmp $@ + @echo creating $@ + +gsl-config: $(srcdir)/gsl-config.in +gsl.pc: $(srcdir)/gsl.pc.in + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gsl-2.5/Makefile.am b/gsl-2.5/Makefile.am new file mode 100644 index 00000000..9a8af40e --- /dev/null +++ b/gsl-2.5/Makefile.am @@ -0,0 +1,66 @@ +## Process this file with automake to produce Makefile.in + +# AUTOMAKE_OPTIONS = readme-alpha + +SUBDIRS = gsl utils sys test err const complex cheb block vector matrix permutation combination multiset sort ieee-utils cblas blas linalg eigen specfunc dht qrng rng randist fft poly fit multifit multifit_nlinear multilarge multilarge_nlinear filter movstat rstat statistics siman sum integration interpolation histogram ode-initval ode-initval2 roots multiroots min multimin monte ntuple diff deriv cdf wavelet bspline spblas spmatrix splinalg doc + +SUBLIBS = block/libgslblock.la blas/libgslblas.la bspline/libgslbspline.la complex/libgslcomplex.la cheb/libgslcheb.la dht/libgsldht.la diff/libgsldiff.la deriv/libgslderiv.la eigen/libgsleigen.la err/libgslerr.la fft/libgslfft.la filter/libgslfilter.la fit/libgslfit.la histogram/libgslhistogram.la ieee-utils/libgslieeeutils.la integration/libgslintegration.la interpolation/libgslinterpolation.la linalg/libgsllinalg.la matrix/libgslmatrix.la min/libgslmin.la monte/libgslmonte.la multifit/libgslmultifit.la multifit_nlinear/libgslmultifit_nlinear.la multilarge/libgslmultilarge.la multilarge_nlinear/libgslmultilarge_nlinear.la multimin/libgslmultimin.la multiroots/libgslmultiroots.la ntuple/libgslntuple.la ode-initval/libgslodeiv.la ode-initval2/libgslodeiv2.la permutation/libgslpermutation.la combination/libgslcombination.la multiset/libgslmultiset.la poly/libgslpoly.la qrng/libgslqrng.la randist/libgslrandist.la rng/libgslrng.la roots/libgslroots.la siman/libgslsiman.la sort/libgslsort.la specfunc/libgslspecfunc.la movstat/libgslmovstat.la rstat/libgslrstat.la statistics/libgslstatistics.la sum/libgslsum.la sys/libgslsys.la test/libgsltest.la utils/libutils.la vector/libgslvector.la cdf/libgslcdf.la wavelet/libgslwavelet.la spmatrix/libgslspmatrix.la spblas/libgslspblas.la splinalg/libgslsplinalg.la + +pkginclude_HEADERS = gsl_math.h gsl_pow_int.h gsl_nan.h gsl_machine.h gsl_mode.h gsl_precision.h gsl_types.h gsl_version.h gsl_minmax.h gsl_inline.h + +bin_SCRIPTS = gsl-config + +pkgconfigdir = $(libdir)/pkgconfig +pkgconfig_DATA= gsl.pc + +CLEANFILES = gsl.pc gsl-config + +EXTRA_DIST = autogen.sh gsl-config.in gsl.pc.in configure.ac THANKS BUGS gsl.spec.in gsl.m4 test_gsl_histogram.sh pkgconfig.test + +lib_LTLIBRARIES = libgsl.la +libgsl_la_SOURCES = version.c +libgsl_la_LIBADD = $(GSL_LIBADD) $(SUBLIBS) +libgsl_la_LDFLAGS = $(GSL_LDFLAGS) -version-info $(GSL_LT_VERSION) +noinst_HEADERS = templates_on.h templates_off.h build.h + +m4datadir = $(datadir)/aclocal +m4data_DATA = gsl.m4 + +bin_PROGRAMS = gsl-randist gsl-histogram + +gsl_randist_SOURCES = gsl-randist.c +gsl_randist_LDADD = libgsl.la cblas/libgslcblas.la + +gsl_histogram_SOURCES = gsl-histogram.c +gsl_histogram_LDADD = libgsl.la cblas/libgslcblas.la + +check_SCRIPTS = test_gsl_histogram.sh pkgconfig.test +TESTS = test_gsl_histogram.sh pkgconfig.test + +#bin_PROGRAMS = main dummy +#dummy_SOURCES = version.c +#dummy_LDADD = $(SUBLIBS) +#main_SOURCES = version.c env.c +#main_LDADD = libgsl.la + +edit = $(SED) \ + -e 's|@prefix[@]|$(prefix)|g' \ + -e 's|@exec_prefix[@]|$(exec_prefix)|g' \ + -e 's|@libdir[@]|$(libdir)|g' \ + -e 's|@includedir[@]|$(includedir)|g' \ + -e 's|@GSL_CFLAGS[@]|$(GSL_CFLAGS)|g' \ + -e 's|@GSL_LIBM[@]|$(GSL_LIBM)|g' \ + -e 's|@GSL_LIBS[@]|$(GSL_LIBS)|g' \ + -e 's|@LIBS[@]|$(LIBS)|g' \ + -e 's|@VERSION[@]|$(VERSION)|g' + +gsl-config gsl.pc: Makefile + @rm -f $@ $@.tmp + @$(edit) '$(srcdir)/$@.in' >>$@.tmp + @chmod a-w $@.tmp + @mv $@.tmp $@ + @echo creating $@ + +gsl-config: $(srcdir)/gsl-config.in +gsl.pc: $(srcdir)/gsl.pc.in + diff --git a/gsl-2.5/Makefile.in b/gsl-2.5/Makefile.in new file mode 100644 index 00000000..527c604c --- /dev/null +++ b/gsl-2.5/Makefile.in @@ -0,0 +1,1570 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# AUTOMAKE_OPTIONS = readme-alpha + + + + + +VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +bin_PROGRAMS = gsl-randist$(EXEEXT) gsl-histogram$(EXEEXT) +subdir = . +DIST_COMMON = INSTALL NEWS README AUTHORS ChangeLog \ + $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/configure $(am__configure_deps) \ + $(srcdir)/config.h.in mkinstalldirs $(srcdir)/gsl_version.h.in \ + $(srcdir)/gsl.spec.in depcomp $(noinst_HEADERS) \ + $(pkginclude_HEADERS) test-driver COPYING THANKS TODO \ + config.guess config.sub install-sh mdate-sh missing ltmain.sh +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ + configure.lineno config.status.lineno +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = config.h +CONFIG_CLEAN_FILES = gsl_version.h gsl.spec +CONFIG_CLEAN_VPATH_FILES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)" \ + "$(DESTDIR)$(bindir)" "$(DESTDIR)$(m4datadir)" \ + "$(DESTDIR)$(pkgconfigdir)" "$(DESTDIR)$(pkgincludedir)" +LTLIBRARIES = $(lib_LTLIBRARIES) +am__DEPENDENCIES_1 = +libgsl_la_DEPENDENCIES = $(am__DEPENDENCIES_1) $(SUBLIBS) +am_libgsl_la_OBJECTS = version.lo +libgsl_la_OBJECTS = $(am_libgsl_la_OBJECTS) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +libgsl_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(libgsl_la_LDFLAGS) $(LDFLAGS) -o $@ +PROGRAMS = $(bin_PROGRAMS) +am_gsl_histogram_OBJECTS = gsl-histogram.$(OBJEXT) +gsl_histogram_OBJECTS = $(am_gsl_histogram_OBJECTS) +gsl_histogram_DEPENDENCIES = libgsl.la cblas/libgslcblas.la +am_gsl_randist_OBJECTS = gsl-randist.$(OBJEXT) +gsl_randist_OBJECTS = $(am_gsl_randist_OBJECTS) +gsl_randist_DEPENDENCIES = libgsl.la cblas/libgslcblas.la +SCRIPTS = $(bin_SCRIPTS) +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libgsl_la_SOURCES) $(gsl_histogram_SOURCES) \ + $(gsl_randist_SOURCES) +DIST_SOURCES = $(libgsl_la_SOURCES) $(gsl_histogram_SOURCES) \ + $(gsl_randist_SOURCES) +RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ + ctags-recursive dvi-recursive html-recursive info-recursive \ + install-data-recursive install-dvi-recursive \ + install-exec-recursive install-html-recursive \ + install-info-recursive install-pdf-recursive \ + install-ps-recursive install-recursive installcheck-recursive \ + installdirs-recursive pdf-recursive ps-recursive \ + tags-recursive uninstall-recursive +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +DATA = $(m4data_DATA) $(pkgconfig_DATA) +HEADERS = $(noinst_HEADERS) $(pkginclude_HEADERS) +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +am__recursive_targets = \ + $(RECURSIVE_TARGETS) \ + $(RECURSIVE_CLEAN_TARGETS) \ + $(am__extra_recursive_targets) +AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ + cscope check recheck distdir dist dist-all distcheck +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) \ + $(LISP)config.h.in +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +CSCOPE = cscope +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = @EXEEXT@ .test +LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +DIST_SUBDIRS = $(SUBDIRS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +distdir = $(PACKAGE)-$(VERSION) +top_distdir = $(distdir) +am__remove_distdir = \ + if test -d "$(distdir)"; then \ + find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ + && rm -rf "$(distdir)" \ + || { sleep 5 && rm -rf "$(distdir)"; }; \ + else :; fi +am__post_remove_distdir = $(am__remove_distdir) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" +DIST_ARCHIVES = $(distdir).tar.gz +GZIP_ENV = --best +DIST_TARGETS = dist-gzip +distuninstallcheck_listfiles = find . -type f -print +am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ + | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' +distcleancheck_listfiles = find . -type f -print +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +GSLCBLAS_LDFLAGS = @GSLCBLAS_LDFLAGS@ +GSL_CFLAGS = @GSL_CFLAGS@ +GSL_LDFLAGS = @GSL_LDFLAGS@ +GSL_LIBADD = @GSL_LIBADD@ +GSL_LIBM = @GSL_LIBM@ +GSL_LIBS = @GSL_LIBS@ +GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ +GSL_LT_VERSION = @GSL_LT_VERSION@ +GSL_MAJOR_VERSION = @GSL_MAJOR_VERSION@ +GSL_MINOR_VERSION = @GSL_MINOR_VERSION@ +HAVE_AIX_IEEE_INTERFACE = @HAVE_AIX_IEEE_INTERFACE@ +HAVE_DARWIN86_IEEE_INTERFACE = @HAVE_DARWIN86_IEEE_INTERFACE@ +HAVE_DARWIN_IEEE_INTERFACE = @HAVE_DARWIN_IEEE_INTERFACE@ +HAVE_FREEBSD_IEEE_INTERFACE = @HAVE_FREEBSD_IEEE_INTERFACE@ +HAVE_GNUM68K_IEEE_INTERFACE = @HAVE_GNUM68K_IEEE_INTERFACE@ +HAVE_GNUPPC_IEEE_INTERFACE = @HAVE_GNUPPC_IEEE_INTERFACE@ +HAVE_GNUSPARC_IEEE_INTERFACE = @HAVE_GNUSPARC_IEEE_INTERFACE@ +HAVE_GNUX86_IEEE_INTERFACE = @HAVE_GNUX86_IEEE_INTERFACE@ +HAVE_HPUX11_IEEE_INTERFACE = @HAVE_HPUX11_IEEE_INTERFACE@ +HAVE_HPUX_IEEE_INTERFACE = @HAVE_HPUX_IEEE_INTERFACE@ +HAVE_IRIX_IEEE_INTERFACE = @HAVE_IRIX_IEEE_INTERFACE@ +HAVE_NETBSD_IEEE_INTERFACE = @HAVE_NETBSD_IEEE_INTERFACE@ +HAVE_OPENBSD_IEEE_INTERFACE = @HAVE_OPENBSD_IEEE_INTERFACE@ +HAVE_OS2EMX_IEEE_INTERFACE = @HAVE_OS2EMX_IEEE_INTERFACE@ +HAVE_SOLARIS_IEEE_INTERFACE = @HAVE_SOLARIS_IEEE_INTERFACE@ +HAVE_SUNOS4_IEEE_INTERFACE = @HAVE_SUNOS4_IEEE_INTERFACE@ +HAVE_TRU64_IEEE_INTERFACE = @HAVE_TRU64_IEEE_INTERFACE@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBM = @LIBM@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +SUBDIRS = gsl utils sys test err const complex cheb block vector matrix permutation combination multiset sort ieee-utils cblas blas linalg eigen specfunc dht qrng rng randist fft poly fit multifit multifit_nlinear multilarge multilarge_nlinear filter movstat rstat statistics siman sum integration interpolation histogram ode-initval ode-initval2 roots multiroots min multimin monte ntuple diff deriv cdf wavelet bspline spblas spmatrix splinalg doc +SUBLIBS = block/libgslblock.la blas/libgslblas.la \ + bspline/libgslbspline.la complex/libgslcomplex.la \ + cheb/libgslcheb.la dht/libgsldht.la diff/libgsldiff.la \ + deriv/libgslderiv.la eigen/libgsleigen.la err/libgslerr.la \ + fft/libgslfft.la filter/libgslfilter.la fit/libgslfit.la \ + histogram/libgslhistogram.la ieee-utils/libgslieeeutils.la \ + integration/libgslintegration.la \ + interpolation/libgslinterpolation.la linalg/libgsllinalg.la \ + matrix/libgslmatrix.la min/libgslmin.la monte/libgslmonte.la \ + multifit/libgslmultifit.la \ + multifit_nlinear/libgslmultifit_nlinear.la \ + multilarge/libgslmultilarge.la \ + multilarge_nlinear/libgslmultilarge_nlinear.la \ + multimin/libgslmultimin.la multiroots/libgslmultiroots.la \ + ntuple/libgslntuple.la ode-initval/libgslodeiv.la \ + ode-initval2/libgslodeiv2.la permutation/libgslpermutation.la \ + combination/libgslcombination.la multiset/libgslmultiset.la \ + poly/libgslpoly.la qrng/libgslqrng.la randist/libgslrandist.la \ + rng/libgslrng.la roots/libgslroots.la siman/libgslsiman.la \ + sort/libgslsort.la specfunc/libgslspecfunc.la \ + movstat/libgslmovstat.la rstat/libgslrstat.la \ + statistics/libgslstatistics.la sum/libgslsum.la \ + sys/libgslsys.la test/libgsltest.la utils/libutils.la \ + vector/libgslvector.la cdf/libgslcdf.la \ + wavelet/libgslwavelet.la spmatrix/libgslspmatrix.la \ + spblas/libgslspblas.la splinalg/libgslsplinalg.la +pkginclude_HEADERS = gsl_math.h gsl_pow_int.h gsl_nan.h gsl_machine.h gsl_mode.h gsl_precision.h gsl_types.h gsl_version.h gsl_minmax.h gsl_inline.h +bin_SCRIPTS = gsl-config +pkgconfigdir = $(libdir)/pkgconfig +pkgconfig_DATA = gsl.pc +CLEANFILES = gsl.pc gsl-config +EXTRA_DIST = autogen.sh gsl-config.in gsl.pc.in configure.ac THANKS BUGS gsl.spec.in gsl.m4 test_gsl_histogram.sh pkgconfig.test +lib_LTLIBRARIES = libgsl.la +libgsl_la_SOURCES = version.c +libgsl_la_LIBADD = $(GSL_LIBADD) $(SUBLIBS) +libgsl_la_LDFLAGS = $(GSL_LDFLAGS) -version-info $(GSL_LT_VERSION) +noinst_HEADERS = templates_on.h templates_off.h build.h +m4datadir = $(datadir)/aclocal +m4data_DATA = gsl.m4 +gsl_randist_SOURCES = gsl-randist.c +gsl_randist_LDADD = libgsl.la cblas/libgslcblas.la +gsl_histogram_SOURCES = gsl-histogram.c +gsl_histogram_LDADD = libgsl.la cblas/libgslcblas.la +check_SCRIPTS = test_gsl_histogram.sh pkgconfig.test +TESTS = test_gsl_histogram.sh pkgconfig.test + +#bin_PROGRAMS = main dummy +#dummy_SOURCES = version.c +#dummy_LDADD = $(SUBLIBS) +#main_SOURCES = version.c env.c +#main_LDADD = libgsl.la +edit = $(SED) \ + -e 's|@prefix[@]|$(prefix)|g' \ + -e 's|@exec_prefix[@]|$(exec_prefix)|g' \ + -e 's|@libdir[@]|$(libdir)|g' \ + -e 's|@includedir[@]|$(includedir)|g' \ + -e 's|@GSL_CFLAGS[@]|$(GSL_CFLAGS)|g' \ + -e 's|@GSL_LIBM[@]|$(GSL_LIBM)|g' \ + -e 's|@GSL_LIBS[@]|$(GSL_LIBS)|g' \ + -e 's|@LIBS[@]|$(LIBS)|g' \ + -e 's|@VERSION[@]|$(VERSION)|g' + +all: config.h + $(MAKE) $(AM_MAKEFLAGS) all-recursive + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +am--refresh: Makefile + @: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + echo ' cd $(srcdir) && $(AUTOMAKE) --gnu'; \ + $(am__cd) $(srcdir) && $(AUTOMAKE) --gnu \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + echo ' $(SHELL) ./config.status'; \ + $(SHELL) ./config.status;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + $(SHELL) ./config.status --recheck + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + $(am__cd) $(srcdir) && $(AUTOCONF) +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) +$(am__aclocal_m4_deps): + +config.h: stamp-h1 + @if test ! -f $@; then rm -f stamp-h1; else :; fi + @if test ! -f $@; then $(MAKE) $(AM_MAKEFLAGS) stamp-h1; else :; fi + +stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status + @rm -f stamp-h1 + cd $(top_builddir) && $(SHELL) ./config.status config.h +$(srcdir)/config.h.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + ($(am__cd) $(top_srcdir) && $(AUTOHEADER)) + rm -f stamp-h1 + touch $@ + +distclean-hdr: + -rm -f config.h stamp-h1 +gsl_version.h: $(top_builddir)/config.status $(srcdir)/gsl_version.h.in + cd $(top_builddir) && $(SHELL) ./config.status $@ +gsl.spec: $(top_builddir)/config.status $(srcdir)/gsl.spec.in + cd $(top_builddir) && $(SHELL) ./config.status $@ + +install-libLTLIBRARIES: $(lib_LTLIBRARIES) + @$(NORMAL_INSTALL) + @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ + list2=; for p in $$list; do \ + if test -f $$p; then \ + list2="$$list2 $$p"; \ + else :; fi; \ + done; \ + test -z "$$list2" || { \ + echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ + } + +uninstall-libLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ + for p in $$list; do \ + $(am__strip_dir) \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \ + done + +clean-libLTLIBRARIES: + -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) + @list='$(lib_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libgsl.la: $(libgsl_la_OBJECTS) $(libgsl_la_DEPENDENCIES) $(EXTRA_libgsl_la_DEPENDENCIES) + $(AM_V_CCLD)$(libgsl_la_LINK) -rpath $(libdir) $(libgsl_la_OBJECTS) $(libgsl_la_LIBADD) $(LIBS) +install-binPROGRAMS: $(bin_PROGRAMS) + @$(NORMAL_INSTALL) + @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ + fi; \ + for p in $$list; do echo "$$p $$p"; done | \ + sed 's/$(EXEEXT)$$//' | \ + while read p p1; do if test -f $$p \ + || test -f $$p1 \ + ; then echo "$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n;h' \ + -e 's|.*|.|' \ + -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ + sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) files[d] = files[d] " " $$1; \ + else { print "f", $$3 "/" $$4, $$1; } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ + $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-binPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ + -e 's/$$/$(EXEEXT)/' \ + `; \ + test -n "$$list" || exit 0; \ + echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(bindir)" && rm -f $$files + +clean-binPROGRAMS: + @list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +gsl-histogram$(EXEEXT): $(gsl_histogram_OBJECTS) $(gsl_histogram_DEPENDENCIES) $(EXTRA_gsl_histogram_DEPENDENCIES) + @rm -f gsl-histogram$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(gsl_histogram_OBJECTS) $(gsl_histogram_LDADD) $(LIBS) + +gsl-randist$(EXEEXT): $(gsl_randist_OBJECTS) $(gsl_randist_DEPENDENCIES) $(EXTRA_gsl_randist_DEPENDENCIES) + @rm -f gsl-randist$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(gsl_randist_OBJECTS) $(gsl_randist_LDADD) $(LIBS) +install-binSCRIPTS: $(bin_SCRIPTS) + @$(NORMAL_INSTALL) + @list='$(bin_SCRIPTS)'; test -n "$(bindir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n' \ + -e 'h;s|.*|.|' \ + -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) { files[d] = files[d] " " $$1; \ + if (++n[d] == $(am__install_max)) { \ + print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ + else { print "f", d "/" $$4, $$1 } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(bindir)$$dir'"; \ + $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-binSCRIPTS: + @$(NORMAL_UNINSTALL) + @list='$(bin_SCRIPTS)'; test -n "$(bindir)" || exit 0; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 's,.*/,,;$(transform)'`; \ + dir='$(DESTDIR)$(bindir)'; $(am__uninstall_files_from_dir) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gsl-histogram.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gsl-randist.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/version.Plo@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool config.lt +install-m4dataDATA: $(m4data_DATA) + @$(NORMAL_INSTALL) + @list='$(m4data_DATA)'; test -n "$(m4datadir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(m4datadir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(m4datadir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(m4datadir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(m4datadir)" || exit $$?; \ + done + +uninstall-m4dataDATA: + @$(NORMAL_UNINSTALL) + @list='$(m4data_DATA)'; test -n "$(m4datadir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(m4datadir)'; $(am__uninstall_files_from_dir) +install-pkgconfigDATA: $(pkgconfig_DATA) + @$(NORMAL_INSTALL) + @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgconfigdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgconfigdir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgconfigdir)" || exit $$?; \ + done + +uninstall-pkgconfigDATA: + @$(NORMAL_UNINSTALL) + @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgconfigdir)'; $(am__uninstall_files_from_dir) +install-pkgincludeHEADERS: $(pkginclude_HEADERS) + @$(NORMAL_INSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \ + done + +uninstall-pkgincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir) + +# This directory's subdirectories are mostly independent; you can cd +# into them and run 'make' without going through this Makefile. +# To change the values of 'make' variables: instead of editing Makefiles, +# (1) if the variable is set in 'config.status', edit 'config.status' +# (which will cause the Makefiles to be regenerated when you run 'make'); +# (2) otherwise, pass the desired values on the 'make' command line. +$(am__recursive_targets): + @fail=; \ + if $(am__make_keepgoing); then \ + failcom='fail=yes'; \ + else \ + failcom='exit 1'; \ + fi; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-recursive +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-recursive + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscope: cscope.files + test ! -s cscope.files \ + || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS) +clean-cscope: + -rm -f cscope.files +cscope.files: clean-cscope cscopelist +cscopelist: cscopelist-recursive + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + -rm -f cscope.out cscope.in.out cscope.po.out cscope.files + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + else \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_SCRIPTS) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +test_gsl_histogram.sh.log: test_gsl_histogram.sh + @p='test_gsl_histogram.sh'; \ + b='test_gsl_histogram.sh'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +@am__EXEEXT_TRUE@.test$(EXEEXT).log: +@am__EXEEXT_TRUE@ @p='$<'; \ +@am__EXEEXT_TRUE@ $(am__set_b); \ +@am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +@am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ +@am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +@am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + $(am__remove_distdir) + test -d "$(distdir)" || mkdir "$(distdir)" + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + $(am__make_dryrun) \ + || test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ + distdir) \ + || exit 1; \ + fi; \ + done + -test -n "$(am__skip_mode_fix)" \ + || find "$(distdir)" -type d ! -perm -755 \ + -exec chmod u+rwx,go+rx {} \; -o \ + ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ + || chmod -R a+r "$(distdir)" +dist-gzip: distdir + tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz + $(am__post_remove_distdir) + +dist-bzip2: distdir + tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 + $(am__post_remove_distdir) + +dist-lzip: distdir + tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz + $(am__post_remove_distdir) + +dist-xz: distdir + tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz + $(am__post_remove_distdir) + +dist-tarZ: distdir + tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z + $(am__post_remove_distdir) + +dist-shar: distdir + shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz + $(am__post_remove_distdir) + +dist-zip: distdir + -rm -f $(distdir).zip + zip -rq $(distdir).zip $(distdir) + $(am__post_remove_distdir) + +dist dist-all: + $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:' + $(am__post_remove_distdir) + +# This target untars the dist file and tries a VPATH configuration. Then +# it guarantees that the distribution is self-contained by making another +# tarfile. +distcheck: dist + case '$(DIST_ARCHIVES)' in \ + *.tar.gz*) \ + GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\ + *.tar.bz2*) \ + bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ + *.tar.lz*) \ + lzip -dc $(distdir).tar.lz | $(am__untar) ;;\ + *.tar.xz*) \ + xz -dc $(distdir).tar.xz | $(am__untar) ;;\ + *.tar.Z*) \ + uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ + *.shar.gz*) \ + GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\ + *.zip*) \ + unzip $(distdir).zip ;;\ + esac + chmod -R a-w $(distdir) + chmod u+w $(distdir) + mkdir $(distdir)/_build $(distdir)/_inst + chmod a-w $(distdir) + test -d $(distdir)/_build || exit 0; \ + dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ + && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ + && am__cwd=`pwd` \ + && $(am__cd) $(distdir)/_build \ + && ../configure --srcdir=.. --prefix="$$dc_install_base" \ + $(AM_DISTCHECK_CONFIGURE_FLAGS) \ + $(DISTCHECK_CONFIGURE_FLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) dvi \ + && $(MAKE) $(AM_MAKEFLAGS) check \ + && $(MAKE) $(AM_MAKEFLAGS) install \ + && $(MAKE) $(AM_MAKEFLAGS) installcheck \ + && $(MAKE) $(AM_MAKEFLAGS) uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ + distuninstallcheck \ + && chmod -R a-w "$$dc_install_base" \ + && ({ \ + (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ + distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ + } || { rm -rf "$$dc_destdir"; exit 1; }) \ + && rm -rf "$$dc_destdir" \ + && $(MAKE) $(AM_MAKEFLAGS) dist \ + && rm -rf $(DIST_ARCHIVES) \ + && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ + && cd "$$am__cwd" \ + || exit 1 + $(am__post_remove_distdir) + @(echo "$(distdir) archives ready for distribution: "; \ + list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ + sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' +distuninstallcheck: + @test -n '$(distuninstallcheck_dir)' || { \ + echo 'ERROR: trying to run $@ with an empty' \ + '$$(distuninstallcheck_dir)' >&2; \ + exit 1; \ + }; \ + $(am__cd) '$(distuninstallcheck_dir)' || { \ + echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \ + exit 1; \ + }; \ + test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \ + || { echo "ERROR: files left after uninstall:" ; \ + if test -n "$(DESTDIR)"; then \ + echo " (check DESTDIR support)"; \ + fi ; \ + $(distuninstallcheck_listfiles) ; \ + exit 1; } >&2 +distcleancheck: distclean + @if test '$(srcdir)' = . ; then \ + echo "ERROR: distcleancheck can only run from a VPATH build" ; \ + exit 1 ; \ + fi + @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ + || { echo "ERROR: files left in build directory after distclean:" ; \ + $(distcleancheck_listfiles) ; \ + exit 1; } >&2 +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_SCRIPTS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-recursive +all-am: Makefile $(LTLIBRARIES) $(PROGRAMS) $(SCRIPTS) $(DATA) \ + $(HEADERS) config.h +install-binPROGRAMS: install-libLTLIBRARIES + +installdirs: installdirs-recursive +installdirs-am: + for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)" "$(DESTDIR)$(bindir)" "$(DESTDIR)$(m4datadir)" "$(DESTDIR)$(pkgconfigdir)" "$(DESTDIR)$(pkgincludedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-binPROGRAMS clean-generic clean-libLTLIBRARIES \ + clean-libtool mostlyclean-am + +distclean: distclean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-hdr distclean-libtool distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +html-am: + +info: info-recursive + +info-am: + +install-data-am: install-m4dataDATA install-pkgconfigDATA \ + install-pkgincludeHEADERS + +install-dvi: install-dvi-recursive + +install-dvi-am: + +install-exec-am: install-binPROGRAMS install-binSCRIPTS \ + install-libLTLIBRARIES + +install-html: install-html-recursive + +install-html-am: + +install-info: install-info-recursive + +install-info-am: + +install-man: + +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -rf $(top_srcdir)/autom4te.cache + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: uninstall-binPROGRAMS uninstall-binSCRIPTS \ + uninstall-libLTLIBRARIES uninstall-m4dataDATA \ + uninstall-pkgconfigDATA uninstall-pkgincludeHEADERS + +.MAKE: $(am__recursive_targets) all check-am install-am install-strip + +.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \ + am--refresh check check-TESTS check-am clean clean-binPROGRAMS \ + clean-cscope clean-generic clean-libLTLIBRARIES clean-libtool \ + cscope cscopelist-am ctags ctags-am dist dist-all dist-bzip2 \ + dist-gzip dist-lzip dist-shar dist-tarZ dist-xz dist-zip \ + distcheck distclean distclean-compile distclean-generic \ + distclean-hdr distclean-libtool distclean-tags distcleancheck \ + distdir distuninstallcheck dvi dvi-am html html-am info \ + info-am install install-am install-binPROGRAMS \ + install-binSCRIPTS install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am \ + install-libLTLIBRARIES install-m4dataDATA install-man \ + install-pdf install-pdf-am install-pkgconfigDATA \ + install-pkgincludeHEADERS install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am recheck tags tags-am \ + uninstall uninstall-am uninstall-binPROGRAMS \ + uninstall-binSCRIPTS uninstall-libLTLIBRARIES \ + uninstall-m4dataDATA uninstall-pkgconfigDATA \ + uninstall-pkgincludeHEADERS + + +gsl-config gsl.pc: Makefile + @rm -f $@ $@.tmp + @$(edit) '$(srcdir)/$@.in' >>$@.tmp + @chmod a-w $@.tmp + @mv $@.tmp $@ + @echo creating $@ + +gsl-config: $(srcdir)/gsl-config.in +gsl.pc: $(srcdir)/gsl.pc.in + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gsl-2.5/NEWS b/gsl-2.5/NEWS new file mode 100644 index 00000000..69800eb9 --- /dev/null +++ b/gsl-2.5/NEWS @@ -0,0 +1,1867 @@ +* What is new in gsl-2.5: + +** doc bug fix in binomial distribution figure (Damien Desfontaines) + +** added Wishart distribution (Timothée Flutre) + +** added new module for digital filtering (gsl_filter); current filters include: + Gaussian filter + median filter + recursive median filter + impulse detection filter + +** added new module for moving window statistics (gsl_movstat) + +** added statistics functions: + gsl_stats_median() + gsl_stats_select() + gsl_stats_mad() + gsl_stats_mad0() + gsl_stats_Sn_from_sorted_data() + gsl_stats_Qn_from_sorted_data() + gsl_stats_gastwirth_from_sorted_data() + gsl_stats_trmean_from_sorted_data() + +** added Romberg integration (gsl_integration_romberg) + +** bug fix in deprecated functions gsl_multifit_wlinear_svd and + gsl_multifit_wlinear_usvd (reported by Vlad Koli) + +** documention corrected to state that gsl_sf_legendre functions do + not include Condon-Shortley phase by default + +** bug fix in exponential fitting example when using larger number + of points (reported by Anna Russo) + +** changed internal workspace inside gsl_spmatrix to a union to + avoid casting (suggested by Manuel Schmitz) + +** bug fixes in ode-initval2 for very rare solver crashing cases: + #52230 in msadams (reported by Michael Kaufman) and + #52336 in msbdf (reported by Andrew Benson). As a fix, + the maximum scaling of controlled step length was decreased + from 5.0 to 4.9. + +** add histogram2d figure to manual (was missing in 2.4) + +** bug fix in gsl_spmatrix_add for duplicate input arguments + (reported by Alfredo Correa) + +** add support for negative arguments nu in gsl_sf_bessel_Jnu and + gsl_sf_bessel_Ynu (Konrad Griessinger) + +** better texinfo documentation for gsl_sf_hyperg functions + +** fix vector and matrix fread/fwrite testing on windows systems + when tmpfile() fails + +** fix for rstat/test.c on PPC64 (reported by Adam Majer) + +* What was new in gsl-2.4: + +** migrated documentation to Sphinx software, which has built-in + support for latex equations and figures in HTML output + +** add const to declaration of appropriate gsl_rstat routines + +** bug fix for #45730: change gsl_sf_sin/cos to libm sin/cos + +** fix Cholesky documentation regarding upper triangle on output + +** added routines to compute integrals with fixed-point quadrature, + based on IQPACK (Konrad Griessinger) + +** added routines for Hermite polynomials, gsl_sf_hermite_* + (Konrad Griessinger) + +** added new nonlinear least squares example for fitting + a Gaussian to data + +** deprecated routines: + gsl_sf_coupling_6j_INCORRECT + gsl_sf_coupling_6j_INCORRECT_e + +** deprecated routine 'gsl_linalg_hessenberg' (replaced + by gsl_linalg_hessenberg_decomp) + +** removed routines which were deprecated in v2.1: + gsl_bspline_deriv_alloc + gsl_bspline_deriv_free + +** changed COD expression to Q R Z^T instead of Q R Z to + be consistent with standard texts + +** added check for nz == 0 in gsl_spmatrix_get + (reported by Manuel Schmitz) + +** permit zero-dimension blocks, vectors, matrics, subvectors, + submatrices, and views of the above (bug #49988) + +** added routine gsl_linalg_COD_lssolve2 for regularized + least squares problems + +* What was new in gsl-2.3: + +** bug fix in documentation for gsl_linalg_LU_refine + (bug #49728, Joey De Pauw) + +** added gsl_multifit_linear_tsvd and gsl_multifit_wlinear_tsvd + to give user more control over cutoff for truncated SVD + +** added routines for Generalized Cross Validation for + regularized linear least squares + +** improved rstat example program and added documentation for + gsl_rstat_sd_mean (Jonathan Leto) + +** added function gsl_multifit_linear_rank + +** bug fix in nonlinear least squares when using data weights with + finite-difference Jacobian + +** add 2D subspace method for large systems (multilarge_nlinear) + +** bug fix in gsl_ran_beta for small parameters + (bug #47646, Yu Liu) + +** bug fix in gsl_complex_tan for negative imaginary arguments + (bug #47347, Yu Liu) + +** doc bug fix: value of golden ratio + +** fixed scaling issue in 2D subspace nonlinear least squares + method + +** optimize dogleg methods to calculate Gauss-Newton point + only when needed + +* What was new in gsl-2.2.1: + +** reverted gsl_linalg_cholesky_decomp to its previous behavior + so it is backward compatible; new cholesky routine is + gsl_linalg_cholesky_decomp1 + +* What was new in gsl-2.2: + +** updated gsl_linalg_cholesky_invert to use Level-2 BLAS + and added function gsl_linalg_pcholesky_invert + +** added functions gsl_linalg_tri_*_invert for inverting + triangular matrices + +** fix GSL_EIGEN_SORT_VAL_{ASC,DESC} for nonsymmetric + eigensystems (Victor Zverovich) + +** added complete orthogonal decomposition routines + (gsl_linalg_COD) + +** bug fix where median calculation wasn't reset in + gsl_rstat_reset(); added gsl_rstat_quantile_reset() function + (reported by Pedro Donato) + +** added multivariate Gaussian random distribution + gsl_ran_multivariate_gaussian (Timothée Flutre) + +** added functions to estimate the 1-norm reciprocal condition + number for various matrix factorizations: + * gsl_linalg_cholesky_rcond + * gsl_linalg_QRPT_rcond + +** added functions gsl_linalg_QRPT_{lssolve,lssolve2} to + compute least squares solutions with the QRPT decomposition + +** added function gsl_permute_matrix() + +** added modified Cholesky factorization (gsl_linalg_mcholesky) + to handle symmetric indefinite matrices + +** added pivoted Cholesky factorization (gsl_linalg_pcholesky) + for ill-conditioned matrices + +** rewrote (real) Cholesky decomposition to use + a Level-2 blas algorithm instead of Level-1. Flop + count is about the same but the code is much simpler + and easier to follow + +** completely rewritten nonlinear least squares module, + including support for large problems; the user may + now control the linear solver used, the trust region + updating strategy, and the scaling method. In addition, + support has been added for the geodesic acceleration + step (Transtrum 2011) which can speed up convergence + on a wide class of problems. + +** added gsl_rstat_rms() for root mean square + +** optimized lmniel nonlinear least squares solver + (bug #46369) + +** improved precision in Bessel K0/K1 near x = 2 + (Pavel Holoborodko, bug #47401) + +** added support for compressed row storage sparse + matrices (Alexis Tantet) + +** bug fix in convergence check of hypergeometric 2F1 + function (bug #45926) + +** added gsl_multilarge_linear_lcurve() to compute + the L-curve for large linear systems + +** updated multilarge normal equations method to use + new Cholesky scaling for better numerical stability + +** added scaling to Cholesky routines to reduce the + condition number prior to factorization + +* What was new in gsl-2.1: + +** added test suite for example programs + +** bug fix when compiling with #undef GSL_DISABLE_DEPRECATED + +** bug fix in setting libtool age versioning + +** bug fix in gsl_multifit_wlinear() + +** added gsl_multifit_linear_rcond() to compute reciprocal + condition number of least squares matrix + +** added gsl_multilarge module for large linear least squares + systems + +* What was new in gsl-2.0: + +** fixed bug #43258 for hypergeometric functions (Raymond Rogers) + +** added L-curve analysis routines for linear Tikhonov regression + +** add running statistics module + +** added bilinear and bicubic interpolation (David Zaslavsky) + +** added function gsl_multifit_robust_residuals to compute robust + fit residuals + +** added Steffen monotonic interpolation method (Jean-François Caron) + +** added new nonlinear least squares solver 'lmniel' suitable for + systems with large numbers of data + +** nonlinear least squares solver now tracks the number of function + and Jacobian evaluations, see example program for details + +** the 'fdf' field of gsl_multifit_function_fdf is now deprecated + and does not need to be specified for nonlinear least squares + problems + +** added extensive test suite to nonlinear least squares module, + resulting in a few minor bug fixes; the routine + gsl_multifit_fdfsolver_driver has been rewritten (with API change) + to handle the various error codes of the lmsder iterate + routine, resulting in a high level caller which is highly robust + for a wide class of problems + +** added support for sparse matrices, including a GMRES + iterative linear solver + +** added routines gsl_linalg_givens and gsl_linalg_givens_gv + for Givens rotations + +** added Tikhonov (ridge) regularization to least squares module + (linear and nonlinear) + +** removed unused argument 'n' from gsl_sf_ellint_D + +** merged bspline_deriv_workspace into bspline_workspace to simplify + bspline API; the functions + gsl_bspline_deriv_alloc + gsl_bspline_deriv_free + are now deprecated and will be removed in a future release. + +** merged ALF extension into GSL for associated Legendre functions; + api has changed; consequently the functions: + gsl_sf_legendre_Plm_array + gsl_sf_legendre_Plm_deriv_array + gsl_sf_legendre_sphPlm_array + gsl_sf_legendre_sphPlm_deriv_array + gsl_sf_legendre_array_size + are now deprecated and will be removed in a future release. + +** added function gsl_multifit_robust_weights to allow user to + access the various weighting functions + +* What was new in gsl-1.16: + +** fixed error in gsl_rng_fwrite where uninitialized padding + bytes were being written (bug #39104) + +** fixed error in gsl_block_alloc where padding bytes were not + properly initialized (bugs #39101,#39102,#39103) + +** fixed error in ntuple/test.c where padding bytes were not + properly initialized (bug #39105) + +** fixed triangle selection bug in gsl_sf_coupling_6j_e and + gsl_sf_coupling_9j_e (bugs #39466 and #29606) (Håkan Johansson and + Alexey Illarionov) + +** added higher level wrapper routine gsl_multifit_fdfsolver_driver + +** converted gsl_multifit_linear_residuals to use dgemv to improve + efficiency (bug #39153) + +** added functions gsl_stats_spearman and gsl_sort_vector2 to compute + Spearman rank correlation + +** added function gsl_poly_dd_hermite_init for Hermite interpolation + +** Added support for robust linear least squares + +** Added function gsl_linalg_SV_leverage for computing statistical + leverages from SVD decomposition + +** Added support for approximating the Jacobian of nonlinear least + squares fits using forward finite differences + +** Extended gsl_sf_coupling_3j to allow larger range and to handle + the special case (ja jb jc; 0 0 0)=0 when ja+jb+jc is odd + +** Fixed gsl_sf_mathieu_se_array to return zero when the order is zero + [bug #33679]. + +** Fixed overflow in gsl_sf_lncosh for large negative x (x<-354). + +** Improved gsl_ran_negative_binomial_pdf to avoid underflow/overflow + for large arguments. + +** Multisets now allow k strictly greater than n. + +** Fixed gsl_matrix_complex_fwrite/fread failure for noncontiguous + matrices (Matthias Sitte). + +* What was new in gsl-1.15: + +** Added Tuomo Keskitalo's new ode branch ode-initval2 with a + gsl_odeiv2 prefix. This provides proper support for implicit + solvers. It is intended to be the new default for differential + equations. The existing gsl_odeiv routines will be retained for + binary compatibility but their interface will be deprecated. + +** Added new gsl_integrate_cquad routines for robust integration of + difficult functions using the doubly-adaptive CQUAD algorithm + (Pedro Gonnet). + +** Added error checking to CBLAS functions (José Luis García Pallero) + +** Added a new function gsl_integration_glfixed_point to return + ordered Gauss-Legendre points and weights contained within a + gsl_integration_glfixed_table [bug #32237]. + +** Added a new function gsl_interp_type_min_size to return the size of + an interpolation type. + +** Added a function gsl_pow_uint(x,n) to compute x^n for unsigned + exponents (needed when n exceeds the range of signed integers). + +** Added new routine gsl_linalg_complex_cholesky_invert to handle the + matrix inversion for complex Cholesky decompositions (Huan Wu). + +** Added the functions gsl_vector_equal(x,y) and gsl_matrix_equal(x,y) + for testing equality of two vectors or matrices. + +** Added function gsl_eigen_nonsymmv_params to control the balancing + transformation for eigenvector calculations. Balancing is now + turned off by default for gsl_eigen_nonsymmv. + +** It is now possible to choose an alternative cblas library via + pkg-config using the GSL_CBLAS_LIB environment variable or + the pkg-config --define-variable option. + +** The jacobi method gsl_eigen_jacobi now uses the norm of the + off-diagonal elements for its convergence criterion, as in + algorithm 8.4.3 of Golub and van Loan. + +** The newton multiroot solvers now return an error when a singular + jacobian is detected. + +** The interpolation functions now return NaN and when x is out of range, + instead of extrapolating. + +** The gsl_multimin_fdfsolver multidimensional minimisers now return + GSL_ENOPROG immediately if the generated trial point does not + differ from the initial point (to machine precision), avoiding + unnecessary further iterations. + +** Extended the range of gsl_sf_bessel_lnKnu_e by rescaling + intermediate results to avoid internal overflows [bug #31528]. + +** Improved the result of gsl_sf_atanint_e for large arguments by + adding the first order 1/x correction term. [bug #29562] + +** Fixed the gsl_rng_ranlxs generators to enforce a maximum seed value + of 2^31-1. Larger seed values corrupted the random number state + and caused out of range values to be returned. + +** Fixed gsl_ran_chisq_pdf(x,nu) to return correct result of 1/2 + instead of 0 when x=0 and nu=2, and +inf when x=0 and nu<2. + +** Fixed gsl_pow_int(x,n) to avoid an infinite loop when n=INT_MIN due + to wrapping of signed integers. + +** Fixed gsl_sf_hyperg_2F1(a,b,c,x) to avoid returning NaN for + arguments |a|>10. [bug #24812] + +** Avoid spurious underflow return code in gsl_sf_beta_inc_e when + intermediate underflow does not affect the result. [bug #30933] + +** Avoid segfault in Chebyshev series derivatives gsl_cheb_calc_deriv + for n=1. [bug #29139] + +* What was new in gsl-1.14: + +** Upgraded to latest libtool, autoconf and automake (libtool-2.2.6b, + autoconf-2.65, automake-1.11.1). Fixes security hole in 'make + dist' (see Automake CVE-2009-4029). + +** Added support for "multisets", which are similar to permutations + and combinations. A multiset is an array of k integers in the + range 0 to n-1 where each value may occur more than once. Multisets + can be used to iterate over the indices of a k-th order symmetric + tensor in n-space. (Rhys Ulerich) + +** Added gsl_integrate_glfixed routines for performing fixed order + Gauss-Legendre integration + (Pavel Holoborodko, Konstantin Holoborodko, Rhys Ulerich) + +** In the LMDER multi-dimensional fitting routines, the return code + GSL_ENOPROG is now used instead of GSL_CONTINUE for the case where + 10 or more attempts to find a suitable trial step have been made + without success. [bug #25383] + +** The confluent hypergeometric function gsl_sf_hyperg_U (a,b,x) has + been extended to support x < 0 for cases not involving + singularities in 1F1(a,b,x). [bug #27859] + +** The F-distribution gsl_ran_fdist_pdf now avoids unnecessary + underflow and overflow and handles cases where n > 248. [bug + #28500] + +** The SVD routines now use a scaled version of the implicit QR method + and compute the shift more reliably for values at the limit of + double precision, avoiding potential NaNs. [bug #28767] + +** A compile time error is emitted if the configuration stage prevents + the functions gsl_isnan and gsl_finite from being defined. + +** Added missing dereference in GSL_VECTOR_COMPLEX when not using + GSL_RANGE_CHECK [bug #28017] + +** Improved the range of gsl_sf_hyperg1F1(a,b,x) when a<0,b>0. [bug + #28718] + +** Added macros GSL_MAJOR_VERSION and GSL_MINOR_VERSION in + + +** Improved gsl_eigen_symmv and gsl_eigen_symm to avoid a potential + infinite loop when the tridiagonalised matrix contains very small + values. [bug #28096] + +** Added functions gsl_multifit_linear_usvd and + gsl_multifit_wlinear_usvd for multilinear fitting without + column-scaling of the fit matrix. + +* What was new in gsl-1.13: + +** Upgraded to latest autoconf and automake (autoconf-2.64, + automake-1.11) + +** Fixed the rk4 and bspline allocators to avoid invalid free() + calls under out of memory conditions. [bug #27194, #27236] + +** Fixed a bug in gsl_multimin_fminimizer_nmsimplex2 where the center + and size of the simplex were not updated on contract-by-best steps, + causing failures in convergence. [bug #27180] + +** Added new functions to set MISER and VEGAS Monte Carlo integration + parameters, and to examine VEGAS chi-squared value and intermediate + results. + +** Added the function gsl_bspline_greville_abscissa to compute + Greville abscissae for B-splines. + +** The cumulative distribution functions gsl_cdf_gumbel1_{P,Q} should + now handle a larger range of parameters without underflow and + overflow. + +** The header file gsl_const_cgs.h no longer defines values for + electromagnetic units. Applications should use gsl_const_cgsm.h + instead to obtain the values in the CGS-Magnetic system. The + previous values for these units given in gsl_const_cgs.h were + ill-defined as the type of CGS electromagnetic system was + unspecified (the values were a mixture of CGS units with the Ampere + of the MSKA system). The affected constants are + GSL_CONST_CGS_BOHR_MAGNETON, GSL_CONST_CGS_ELECTRON_CHARGE, + GSL_CONST_CGS_ELECTRON_MAGNETIC_MOMENT, GSL_CONST_CGS_FARADAY, + GSL_CONST_CGS_GAUSS, GSL_CONST_CGS_NUCLEAR_MAGNETON, + GSL_CONST_CGS_PROTON_MAGNETIC_MOMENT, and GSL_CONST_CGS_ROENTGEN. + +** The Pochhammer functions gsl_sf_poch(a,x) and gsl_sf_lnpoch(a,x) now + handle the special cases where a and a+x are zero or negative + integers. + +** The confluent hypergeometric function gsl_sf_hyperg_U (a,b,x) now + handles some cases where x=0. The case where 1+a-b is a negative + integer no longer returns an error [bug #22859] and the incorrect + termination of the series in certain cases is fixed [bug #26706]. + +** Added a new function gsl_poly_eval_derivs to evaluate a polynomial + and its derivatives simultaneously. + +** Added a new univariate minimisation algorithm + gsl_min_fminimizer_quad_golden which is a variant of Brent's + algorithm with safeguarded step-length adjustment. + +** Added a new Nelder-Mead minimiser gsl_multimin_fminimizer_nmsimplex2rand + which uses a randomly oriented simplex rather than one fixed on + the coordinate axes [bug #25077] + +** The texinfo file now uses the dircategory "Software libraries" from + the Free Software Directory, as recommended in the Texinfo manual. + +** The function gsl_ran_exponential now includes zero in its output + range. [bug #25039] + +** All functions for freeing allocated memory now accept a NULL + pointer, following the standard C convention for free(). [bug + #25319] + +** The function gsl_sum_levin_u_accel now handles the special case + c_0 + 0 + 0 + 0 + .... that occurs when summing power series + c_n*x^n with x=0. [bug #26807] + +** The functions gsl_linalg_LU_solve, gsl_linalg_LU_svx, + gsl_linalg_LU_refine, gsl_linalg_LU_invert and their complex + equivalents now return an error for singular matrices. + +** The multifit LMDER hybrid solvers now check the return code of the + user-supplied function in the gsl_multifit_fdfsolver_set + method. [bug #26871] + +** Improved the implementation of gsl_ran_discrete_preproc to avoid + internal errors due to inconsistencies from excess precision on + some platforms. [bug #26502] + +** Corrected gsl_sf_hyperg_2F1(a,b,c,x) to not give a domain error in + the case where c is a negative integer and the series terminates + with a finite result. + +** The C99 inline keyword is now supported, in addition to the + previously supported GNU-style inline. + +** Modified gsl_poly_complex_solve_cubic and gsl_poly_solve_cubic to + avoid returning NaNs in cases where excess precision causes a + change in the number of roots. + +** Fixed incorrect length check in gsl_blas_drotm. [bug #26503] + +** Fixed gsl_odeiv_step_gear2 to restore y on step failure + +** gsl_odeiv_evolve_apply now restores the correct value of t on step + failures [bug #26255]. + +** Using make install prefix=DIR now puts correct paths in package + config files gsl-config and gsl.pc + +** Modified gsl_monte_vegas to work around pow() function inaccuracies + on MinGW [bug #25413]. + +** Increased the number of terms in gsl_sf_mathieu_a and + gsl_sf_mathieu_b to improve convergence in difficult regions [bug + #25075] + +* What was new in gsl-1.12: + +** Upgraded to latest libtool, autoconf and automake (libtool-2.2.6, + autoconf-2.63, automake-1.10.2) + +** Improved the convergence of gsl_sf_gamma_inc_P for x/a ~=~ 1 and + large x,a. Fixes problems with large arguments in cdf functions + such as gsl_cdf_chisq_Pinv(x,nu) [bug 24704]. + +** Fixed gsl_ran_gamma_knuth to handle the case of a >= UINT_MAX [bug + #24897] + +** Added gsl_bspline_eval_deriv to compute bspline derivatives + (Rhys Ulerich) + +** Added a faster simplex mininimser gsl_multimin_fminimizer_nmsimplex2 + which is O(N) instead of O(N^2) [bug #24418] + +** Improved the original chi-squared formula in gsl_monte_vegas to + avoid catastrophic cancellation [bug #24510]. The previous formula + could return incorrect or negative values for relative errors < + 1e-8, which could occur when integrating very smooth functions. + +** Added new auxiliary functions gsl_cheb_order, gsl_cheb_size, + gsl_cheb_coeffs for Chebyshev series [bug #21830] + +** Updated license of the reference manual to GNU FDL version 1.3. + +** Fixed a bug where the gsl_isinf function would return +1 for -Inf + on systems where isinf(-Inf) returns the non-standard value +1. + [bug #24489] + +** Added missing functions gsl_vector_complex_{isnonneg,add,sub,mul, + div,scale,add_constant} and gsl_matrix_complex_float_isnonneg [bug + #22478] + +** Cross compilation should now work for x86 hosts. + +** Fixed a bug in gsl_interp_accel_find() where values lying on the + upper boundary between interpolation points could return the index + from the lower side. [bug #24211] + +** Fixed gsl_linalg_solve_cyc_tridiag so that its output respects the + solution vector's stride. Previously the x_stride value was ignored + causing the output to be incorrect for non-unit stride. [bug #24162] + +** Corrected a bug in the series calculation of gsl_sf_ellint_Kcomp + for k close to 1. [bug #24146] + +** Extended gsl_linalg_QRPT_update to handle rectangular matrices. + Corrected definition of the update formula in the manual for + both gsl_linalg_QR_update and gsl_linalg_QRPT_update. + +** Added routine gsl_linalg_cholesky_invert + +** Fixed a bug the simplex algorithm which caused the second highest + point to be incorrectly equal to the first when the first value was + the highest, which could cause suboptimal convergence. [bug #23192] + +** Fixed a problem with convergence for inverse gamma and chisq + distribitions, gsl_cdf_gamma_{P,Q}inv and gsl_cdf_chisq_{P,Q}inv. + [bug #23101] + +** Improved the handling of constant regions in Vegas by eliminating + spurious excess precision when computing box variances. + +** Fixed a potential division by zero in gsl_monte_miser when the + left/right weight factors decrease below 1. + +** Fixed incorrect dimensions check in gsl_matrix_sub{row,column} + +* What was new in gsl-1.11: + +** The GSL repository and bug database are now hosted at Savannah + http://savannah.gnu.org/projects/gsl/ + +** Upgraded to latest libtool, autoconf and automake (libtool-2.2, + autoconf-2.61, automake-1.10.1) + +** Fixed underflow in ODE adaptive step size controller that could + cause step size to decrease to zero (bug #21933). + +** Improved the handling of the asymptotic regime in gsl_sf_bessel_jl. + +** Improved the handling of large arguments in cumulative distribution + functions using the incomplete beta function, such as gsl_cdf_fdist_P. + +** Fixed overflow bug in gsl_cdf_hypergeometric_{P,Q} for large + arguments (bug #22293). + +** gsl_ran_gaussian_ziggurat now handles generators with different + ranges explicitly, to minimise the number of function calls + required (bug #21820). Also fixes bug #22446 (rng limit in + gsl_ran_chisq()). + +** Added missing error terms in gsl_sf_exp_mult_e10_e to prevent + the error being underestimated (bug #22041). + +** Updated some constants to the CODATA 2006 values. + +** The hypergeometric function gsl_sf_hyperg_2F1 now handles the case + where x==1. + +** Fixed a bug in the brent minimiser which prevented optimal convergence. + +** Added functions for evaluating complex polynomials + +** The convergence condition for gsl_multiroots_test_delta now accepts + dxi == 0. + +** Improved functions gsl_ldexp and gsl_frexp to handle the full range + of double precision numbers in all cases. + +** Added new quasi random generators gsl_qrng_halton and + gsl_qrng_reversehalton which support dimensions up to 1229. + +** Added function gsl_multifit_linear_residuals for computing the + residuals of the fit + +* What was new in gsl-1.10: + +** License updated to GNU GPL version 3. + +** Added support for generalized eigensystems + +** Added function gsl_stats_correlation to compute Pearson correlation +of two datasets + +** Added the new function gsl_sf_expint(n,x) for computing the n-th +order exponential integral. + +** Added functions gsl_vector_isnonneg and gsl_matrix_isnonneg. + +** Added functions gsl_matrix_subrow and gsl_matrix_subcolumn + +** Extended Cholesky routines to complex matrices + +** Added support in gsl_ieee_set_mode for controlling SSE exceptions +and rounding through the MXCSR control word on x86 processors. + +** The autoconf macro AM_PATH_GSL has been renamed to AX_PATH_GSL, to +avoid conflicts with the autoconf namespace. + +** Improved handling of underflow in gsl_eigen_symm. + +** The function gsl_multiroot_fdjacobian now returns the error code +GSL_ESING if any of the columns of the computed jacobian matrix are +zero. This may occur if the step size of the derivative is too small. + +** Extended the function gsl_sf_beta_inc(a,b,x) to handle cases where +a<0 or b<0. + +** Fixed the round-off error estimate in gsl_deriv_{central,backwards, +forward} to correctly account for numerical error in the step-size h. + +** Fixed gsl_cdf_beta_Pinv, gsl_cdf_gamma_Pinv, gsl_cdf_beta_Pinv to +avoid returning spurious values for large parameters when the +iteration did not converge. If the iteration cannot converge, GSL_NAN +is returned. + +** gsl_ran_dirichlet now handles smaller values of alpha[] without +underflow, avoiding a NaN in the returned value. + +** The SVD routines now avoid underflow in the Schur decomposition for +matrices with extremely small values pi/2 and phi < 0. The angular argument is now +valid for all phi. Also added the complete elliptic integral +gsl_sf_ellint_Pcomp. + +** Added a new BFGS minimisation method gsl_multimin_fdfminimizer_vector_bfgs2 +based on the algorithm given by R.Fletcher in "Practical Methods of +Optimisation" (Second edition). This requires substantially fewer +function and gradient evaluations, and supercedes the existing BFGS +minimiser. + +** The beta functions gsl_sf_beta_e(a,b) and gsl_sf_lnbeta_e(a,b) now +handle negative arguments a,b. Added new function gsl_sf_lnbeta_sgn_e +for computing magnitude and sign of negative beta values, analagous to +gsl_sf_lngamma_sgn_e. + +** gsl_cheb_eval_mode now uses the same error estimate as +gsl_cheb_eval_err. + +** Improved gsl_sf_legendre_sphPlm_e to avoid underflow with large +arguments. + +** Added updated Knuth generator, gsl_rng_knuthran2002, from 9th +printing of "The Art of Computer Programming". Fixes various +weaknesses in the earlier version gsl_rng_knuthran. See +http://www-cs-faculty.stanford.edu/~knuth/news02.htm + +** The functions gsl_multifit_fsolver_set, gsl_multifit_fdfsolver_set +and gsl_multiroot_fsolver_set, gsl_multiroot_fdfsolver_set now have a +const qualifier for the input vector x, reflecting their actual usage. + +** gsl_sf_expint_E2(x) now returns the correct value 1 for x==0, +instead of NaN. + +** The gsl_ran_gamma function now uses the Marsaglia-Tsang fast gamma +method of gsl_ran_gamma_mt by default. + +** The matrix and vector min/max functions now always propagate any +NaNs in their input. + +** Prevented NaN occuring for extreme parameters in +gsl_cdf_fdist_{P,Q}inv and gsl_cdf_beta_{P,Q}inv + +** Corrected error estimates for the angular reduction functions +gsl_sf_angle_restrict_symm_err and gsl_sf_angle_restrict_pos_err. +Fixed gsl_sf_angle_restrict_pos to avoid possibility of returning +small negative values. Errors are now reported for out of range +negative arguments as well as positive. These functions now return +NaN when there would be significant loss of precision. + +** Corrected an error in the higher digits of M_PI_4 (this was beyond +the limit of double precision, so double precision results are not +affected). + +** gsl_root_test_delta now always returns success if two iterates are +the same, x1==x0. + +** A Japanese translation of the reference manual is now available +from the GSL webpage at http://www.gnu.org/software/gsl/ thanks to +Daisuke TOMINAGA. + +** Added new functions for basis splines, see the "Basis Splines" +chapter in the GSL Reference Manual for details. + +** Added new functions for testing the sign of vectors and matrices, +gsl_vector_ispos, gsl_vector_isneg, gsl_matrix_ispos and +gsl_matrix_isneg. + +** Fixed a bug in gsl_sf_lnpoch_e and gsl_sf_lnpoch_sgn_e which caused +the incorrect value 1.0 instead of 0.0 to be returned for x==0. + +** Fixed cancellation error in gsl_sf_laguerre_n for n > 1e7 so that +larger arguments can be calculated without loss of precision. + +** Improved gsl_sf_zeta_e to return exactly zero for negative even +integers, avoiding less accurate trigonometric reduction. + +** Fixed a bug in gsl_sf_zetam1_int_e where 0 was returned instead of +-1 for negative even integer arguments. + +** When the differential equation solver gsl_odeiv_apply encounters a +singularity it returns the step-size which caused the error code from +the user-defined function, as opposed to leaving the step-size +unchanged. + +** Added support for nonsymmetric eigensystems + +** Added Mathieu functions + +* What was new in gsl-1.8: + +** Added an error check to trap multifit calls with fewer observations +than parameters. Previously calling the multifit routines with n

100*l*l to +satisfy he requirement x>>l*l in the asymptotic expansion. + +** The scaled bessel function gsl_sf_bessel_In_scaled now handles +larger arguments x > 1e7 correctly for n < 150 using the uniform +asymptotic expansion instead of the continued fraction expansion. + +** The functions gsl_stats_min/max now return NaN if the data contains +NaN. Similarly, the functions gsl_stats_min/max_index return the index +of the first occurring NaN in the data when it contains a NaN. + +** Fixed an invalid memory access that caused incorrect results for +the special case in periodic cubic spline interpolation of 3 points. + +** Added Debye functions for n=5 and n=6 + +** Added the missing functions gsl_spline_name() and +gsl_spline_min_size() + +** The function gsl_rng_uniform_int(r,n) now returns an error for n=0, +which can occur when passing an unsigned integer value of 2^32. + +* What was new in gsl-1.7: + +** Switched gsl_randist_binomial to use the faster binomial random +variate TPE algorithm by default. The previous binomial variate +algorithm is available as gsl_randist_binomial_knuth. This will +result in a different sequence of binomial variates in programs using +this function. + +** Improved the algorithm for gsl_sf_elljac_e to avoid cancellation +errors near quarter periods. + +** Fixed the branch selection in gsl_sf_gamma_inc_Q_e to avoid +inaccurate results for large a,x where x~=~a. + +** The multilinear fitting functions now have forms which accept a +user-specified tolerance for the SVD cutoff and return the +corresponding effective rank of the design matrix. + +** The quadratic solvers in poly/ now handle linear equations +gracefully (i.e. quadratrics with a leading coefficient of zero). + +** The output of "make check" now only shows test failures by default, +to reduce the amount of output. Set the environment variable +GSL_TEST_VERBOSE=1 to display all the output. To assist debugging, +the test number of each failure is shown in square brackets at the +line-end [NNNN]. + +** Fixed bugs in gsl_linalg_SV_decomp_jacobi which caused +incorrect results for some input matrices. + +** Bessel, coulomb, dilogarithm and legendre_H3d functions now use +hypot internally to avoid overflow when computing terms like +sqrt(1+x*x). + +** The 'Usage' chapter of the reference manual now explains how to +handle deprecated functions using the GSL_DISABLE_DEPRECATED macro. + +** The conflicting enum definitions for 'forward' and 'backward' in +gsl_ftt.h and gsl_wavelet.h are deprecated. User code should switch +to the new definitions gsl_fft_forward, gsl_fft_backward, +gsl_wavelet_forward and gsl_wavelet_backward. Selectively define +GSL_DISABLE_DEPRECATED before including the headers to use the new +definitions on either or both modules. + +** Fixed an error in the the brent minimisation algorithm. Iterations +should now follow Brent's original description correctly. + +** The bound coulomb function gsl_sf_hydrogenicR_e no longer reports +an underflow for exact zeroes of the wavefunction. + +** gsl_linalg_SV_decomp_jacobi now reports an error for the +unimplemented case M>N) use the LQ decomposition, +solving the transpose of the original system. This allows more +efficient memory access, and is useful for solving large least-squares +problems. + +** Fixed a bug in the SYRK and HERK blas functions gsl_blas_{s,d,c,z}syrk +and gsl_blas_{c,z}herk which caused invalid memory access for non-square +matrices. + +** Fixed a bug in gsl_swap_vectors which caused it to return incorrect +results when swapping vectors with different strides. + +** Corrected the error estimate for gsl_cheb_eval_n_err to use +evaluation order instead of the approximation order. + +** Improved the reliability of the gsl_sf_gamma_inc family of +functions. + +** Equal abscissae are now handled gracefully in the cspline and +periodic cspline interpolations. + +** Removed potential cancellation error in calculation of uniform +histogram ranges. + +** Improved numerical stability of integration for akima and cspline +interpolation. + +** Differential equation solvers now handle error codes returned from +user-defined functions. + +** Improved error estimates in ode-initval solvers, and provide exact +derivatives on output. Added new semi-implicit ode-initval solver, +gsl_odeiv_step_rk2simp. + +** Added missing function definition for gsl_sf_psi_1. + +** Fixed the function gsl_sf_expint_Ei_scaled to call +gsl_sf_expint_Ei_scaled_e instead of gsl_sf_expint_Ei_e. + +** Added cumulative distribution function for exponential power +distribution. + +** The functions gsl_cdf_beta_P and gsl_cdf_beta_Q now return +consistent results of 0 or 1 for out of range values, x<0 and x>1, +rather than 0 for left and right tails simultaneously. + +** The Jacobi eigensolvers gsl_eigen_jacobi and gsl_eigen_jacobi_invert +have new implementations from Golub and Van Loan. + +** The standard output and standard error streams are now flushed by +the default error handler before the program aborts, in order to +ensure that error messages are properly displayed on some platforms. + +* What was new in gsl-1.5: + +** Multifit routines now handle iterations where |f| is already +minimised to zero, without division by zero. + +** Fixed the singular value tolerance test in the multifit covariance +calculation from < to <= to match the original MINPACK code. + +** The macro HAVE_INLINE is now tested with #ifdef instead of #if as +in versions prior to 1.4, to match the documentation, and the macro +GSL_RANGE_CHECK_OFF now works correctly. An alternative macro +GSL_RANGE_CHECK={0,1} can be used to control range-checking. + +** Fixed a potential array overflow in gsl_ran_landau. + +** Fixed a small discrepancy in the tolerance calculation of the +one-dimensional brent minimiser. + +** Numerical derivatives should now be calculated using the +gsl_deriv_forward, gsl_deriv_central and gsl_deriv_backward functions, +which accept a step-size argument in addition to the position x. The +original gsl_diff functions (without the step-size) are deprecated. + +** Corrected documentation for gsl_ran_hypergeometric_pdf() + +** The tridiagonal matrix solvers gsl_linalg_solve_symm_tridiag, +gsl_linalg_solve_tridiag, gsl_linalg_solve_symm_cyc_tridiag, +gsl_linalg_solve_cyc_tridiag now use the GSL_ERROR macro to report +errors, instead of simply returning an error code. The arguments to +these functions must now use exact lengths with no additional +elements. For cyclic systems all vectors must be of length N, for +tridiagonal systems the offdiagonal elements must be of length N-1. + +** The singular value decomposition routines gsl_linalg_SV_decomp and +gsl_linalg_SV_decomp_mod now handle the SVD of a column vector (N=1, +arbitrary M), which can occur in linear fitting. + +** Restored missing header files gsl_const_mks.h and gsl_const_cgs.h. +The incorrect values of the electrical units for gsl_const_cgs +(VACUUM_PERMEABILITY and VACUUM_PERMITTIVITY) have been removed. + +** Fixed gsl_linalg_SV_decomp() to avoid an infinite loop when +computing the SVD of matrices containing Inf and Nan. + +** Fixed gsl_linalg_balance_columns() to avoid an infinite loop when +rescaling matrices containing Inf and NaN. + +** Fixed header file to include declarations for +error codes in inline versions of gsl_sf_log functions + +** Fixed header file to include new MKSA and CGSM +header files. + +** Added Stefan-Boltzmann constant and Thomson cross section to +physical constants + +* What was new in gsl-1.4: + +** Added cumulative distribution functions and their inverses for the +continuous random distributions including: gaussian, lognormal, gamma, +beta, cauchy, laplace, chisq, exponential, gumbel, weibull, +F-distribution, t-distribution, logistic, pareto and rayleigh. + +** Added faster binomial random variates using the TPE rejection +algorithm, in the function gsl_randist_binomial_tpe. + +** Added new functions gsl_rng_fwrite and gsl_rnd_fread for storing +the state of random number generators in a file. + +** Added a new function gsl_combination_memcpy() + +** Corrected values of electrical constants in CGS units. To take +account of different electrical systems of units the values are now +prefixed by GSL_CONST_MKSA (for the SI Metre, Kilogram, Second, Ampere +system) or GSL_CONST_CGSM (for the Centimetre, Gram, Second, Magnetic +system with the Gauss as the fundamental unit of magnetic field +strength). The previous GSL_CONST_MKS and GSL_CONST_CGS prefixes have +been removed, as have the permeability and permittivity constants in +the CGS system since this uses different defining equations. + +** Fixed bugs in the random number generators gsl_rng_fishman18, +gsl_rng_fishman2x, and gsl_rng_knuthran2 which caused them to return +incorrect results. Minor corrections were made to the parameters in +the other Knuth generators borosh13, coveyou, fishman20, lecuyer21, +and waterman14. + +** Fixed a missing transpose bug in the gsl_linalg_QR_QRsolve +and gsl_linalg_QRPT_QRsolve routines which were computing the +solution to Q^T R x = b instead of Q R x = b. + +** Fixed gsl_sf_gammainv to return zero instead of a domain +error for arguments corresponding to singularities in gamma. + +** Fixed a bug in the simplex minimization algorithm which +caused it to fail to find the second highest point correctly +when searching the set of simplex points. + +** Fixed a bug in the conjugate gradient minimizers conjugate_pr, +conjugate_fr and vector_bgfs which caused the search +directions to be updated incorrectly. + +** Fixed a bug in gsl_sf_psi_1_int(1) which caused it to +return the incorrect sign for psi(1,1). + +** Fixed the simulated annealing routine gsl_siman_solve to use the +parameter iters_fixed_T for the number of iterations at fixed +temperature instead of n_tries. + +** Fixed a bug in gsl_combination_valid which caused it to return the +incorrect status. + +** Fixed a bug in gsl_permutation_canonical_to_linear which caused the +output to always be zero, and the input permutation to be incorrectly +replaced by the output. + +** Fixed a bug is gsl_ran_discrete which could cause uninitialised +data to be returned for some distributions. + +** Fixed the dependencies for gsl_chebyshev.h to include gsl_math.h. + +** Fixed a bug in gsl_complex_arccsc_real which caused it to return +the incorrect sign for the imaginary part when -110. + +** Improved the accuracy of gsl_sf_coupling_3j for large arguments. + +** Improved the performance of gsl_sf_choose(m,n) by separating the +calculations for small and large arguments. + +** On platforms without IEEE comparisons gsl_{isnan,isinf,finite} will +fall back to the system versions of isnan, isinf and finite if +available. + +** gsl_linalg_householder_hv now uses BLAS routines internally + +** The script configure.in is now compatible with autoconf-2.50 and +later. + +** Reduced the memory usage of the multifit algorithms from MxM to MxN +for large M by performing the QR decomposition of the Jacobian +in-place. + +** IEEE modes now use the C99 fenv.h functions when platform spectific +functions are not available. + +* What was new in gsl-1.3: + +** Changed interface for gsl_sf_coupling_6j...(...). The old functions +actually calculated 6j for a permutation of the arguments (that +related to Racah W). This was incorrect and not consistent with +the documentation. The new versions calculate < {a,b,c}, {d,e,f} >, +as stated in the documentation. The old versions are still available +as gsl_sf_coupling_6j_INCORRECT...(...), though they are deprecated +and will be removed at some point in the future. + +** Added new functions for computing Em(x)=exp(-x)*Ei(x), the modified +(scaled) form of the exponential integral, gsl_sf_expint_E1_scaled, +gsl_sf_expint_E2_scaled, gsl_sf_expint_Ei_scaled. + +** Fixed compilation problems with gcc -ansi and other ANSI compilers. + +** Fixed uninitialized memory access in the Niederreiter quasi-random +number generator. + +** Fixed the eigenvalue routines to prevent an infinite loop for Inf +or NaN entries in matrix. + +** Fixed a bug in the multifit and multiroots allocation routines +which cause them to fail to report some out of memory conditions. + +** Fixed a bug in the seeding for the random number generator +gsl_rng_taus2 which affected a small number of seeds. + +** Modified the complex householder transforms to avoid division by +zero, which could cause NaNs to be returned by the gsl_eigen_hermv +eigenvalue decomposition. + +** The Nelder-Mead simplex algorithm for multidimensional +minimisation has been added. + +** The random number distributions now include the Dirichlet and +Multinomial distributions. + +** Added a new function gsl_fcmp for approximate comparison of +floating point numbers using Knuth's algorithm. + +** Added new functions gsl_ldexp and gsl_frexp as portable +alternatives to ldexp() and frexp(). + +** Fixed a bug in gsl_linalg_bidiag_unpack_B which was returning +incorrect results for the superdiagonal. + +** Fixed a bug in the acceptance condition for simulated annealing + +** Ordinary differential equations can now be solved using a different +absolute error for each component with gsl_odeiv_control_scaled_new(). + +** Upgraded to libtool-1.4.3 + +* What was new in gsl-1.2: + +** Added new functions for combining permutations, converting between +cyclic and linear representations, and counting cycles and inversions. + +** New multiroot functions now allow access to the current values of f +and dx. + +** The default error handler now outputs a explanatory message before +aborting. + +** Extended gsl_linalg_SV_decomp to handle exact zeroes in the +singular values, and added tests for 3x3 matrices. + +** Fixed a bug in gsl_linalg_SV_decomp which caused singular values to +be sorted incorrectly. + +** Fixed a bug in gsl_linalg_solv_symm_cyc_tridiag which caused it to +produce incorrect results. + +** Added nonsymmetric tridiagonal solvers gsl_linalg_solve_tridiag and +gsl_linalg_solve_cyc_tridiag. + +** The declarations used to export static objects can now be +controlled through a macro GSL_VAR and the header file +. + +** The simulated annealing routine gsl_siman_solve now keeps track of +the best solution so far. + +** The values of the physical constants have been updated to the +CODATA 1998 recommendations. + +** Added new physical constants, newton, dyne, joule, erg and +power-of-ten prefixes, Mega, Giga, Tera, etc. + +** The error estimate for the elliptic function gsl_sf_ellint_Kcomp_e +has been improved to take account of numerical cancellation for small +arguments. + +** The domain of gsl_sf_psi_1piy has been extended to negative y. + +** Fixed memory leak in the Chebyshev module. + +** The seeding procedure of mt19937 has been updated to the latest +version from Makoto Matsumoto and Takuji Nishimura (Jan 2002). The +original seeding procedure is available through the generator +gsl_rng_mt19937_1999. + +** A new random number generator gsl_rng_taus2 has been added to +correct flaws in the seeding procedure of gsl_rng_taus, as described +in an erratum to the original paper of P. L'Ecuyer. + +** Added missing declaration for the generator gsl_rng_mt_19937_1998. + +** Added missing quasi-random number generator function gsl_qrng_init. + +** Removed unnecessary endpoint subtraction in chebyshev-based +QUADPACK routines to avoid possible loss of precision. + +** Fixed bug in gsl_interp_cspline_periodic which caused a +discontinuity in the derivative near the boundary. + +** The function gsl_min_fminimizer_minimum has been renamed to +gsl_min_fminimizer_x_minimum for consistency (the old function name is +still available but is deprecated). Additional functions have been +added for accessing the function values at the minimum and endpoints +of the bounding interval. + +** The KNOWN-PROBLEMS file of "make check" failures has been replaced +by a BUGS file, since we now require "make check" to work correctly +for stable releases. + +* What was new in gsl-1.1.1: + +** Fixes to histogram2d stat functions + +** Added missing prototypes for complex LU determinant functions + +** Improved error handling in multifit routines + +** Added check to avoid division by zero for rank-deficient matrix in +multifit iteration + +* What was new in gsl-1.1: + +** The permutation module now includes a copy function +gsl_permutation_memcpy + +** The implementation of gsl_sf_gamma_inc has been improved and now +avoids problems caused by internal singularities which occurred in the +series expansion for some combinations of parameters. + +** IEEE comparisons of infinities and NaNs are tested during the +configure stage and the functions gsl_isnan, gsl_isinf and gsl_finite +are only compiled on platforms which support the necessary tests. + +** The histogram routines now include a sum function, +gsl_histogram_sum for computing the total bin sum, and additional +statistics functions for 2d histograms. + +** Internal error checking of user-defined functions has been improved +in the multiroots functions. + +** Constants now include the Bohr Radius and Vacuum Permittivity. + +** Range checking is now turned off when building the library, but is +still on by default when compiling user applications. + +** A combinations directory has been added for generating combinations (n,k). + +** The gamma function now returns exact values for integer arguments. + +** Fixed bugs in gsl_sf_hyperg_1F1_int and gsl_sf_hyperg_1F1. + +** Fixed internal error handling in gsl_sf_laguerre_n to allow +recovery from overflow. + +** Several routines for handling divided difference polynomials have +been added to the poly/ directory. + +** The interpolation routines now include polynomial interpolation, +based on divided-differences. + +** Added new random number generators from Knuth's Seminumerical +Algorithms, 3rd Edition: borosh13, coveyou, fishman18, fishman20, +fishman2x, knuthran, knuthran2, lecuyer21, waterman14. + +** Changed divisor in random number generator gfsr4 from 2^32-1 to +2^32 to prevent exact value of 1.0 from being returned, as specified +in the documentation. + +* What was new in gsl-1.0: + +** First general release. + +** Increased the maximum number of iterations in gsl_poly_complex_solve() +from 30 to 60. + +* What was new in gsl-0.9.4: + +** Reorganized the multmin functions to use the same interface as the +other iterative solvers. + +** Added histogram _alloc functions for consistency, in addition to the +existing _calloc functions. + +** Renamed all the gsl_multimin functions to be consistent with the +rest of the library. An underscore has been removed from _minimizer +in all the function names. + +** Renamed the function gsl_sf_coulomb_CL_list to gsl_sf_coulomb_CL_array + +** A bug in the multimin functions where the function parameters +(params) were omitted has been fixed. + +** A bug in the nonlinear minimization routines has been fixed, which +could prevent the algorithms from converging. Additional tests from +the NIST reference datasets have been added and these now agree with +MINPACK. + +** All the physical constants and conversion factors are now defined as +real numbers to avoid potential problems with integer arithmetic. + +** The ODE evolution routines now allow for negative step sizes, and +integrating backwards as well as forwards. + +** The implicit Burlisch-Stoer ODE algorithm 'bsimp' now detects +singularities and forces a reduction in step size, preventing runaway +instabilities. + +** Fixed a bug in the ODE evolution function gsl_odeiv_evolve_apply +which could cause an erroneous value to be returned if the step size +is reduced on the last step. + +* What was new in gsl-0.9.3: + +** Routines for complex LU decomposition are now available, allowing +the solution of systems of equations with complex coefficients. + +** Matrix views of vectors now correctly require a unit stride for the +original vector. + +** Permutations can now be applied to complex arrays and vectors. + +** gsl_sf_pow_int now handles the case x = 0, n < 0 + +** The static versions of inline functions can now be hidden by +defining the preprocessor macro HIDE_INLINE_STATIC. This is needed +for some compilers. + +** The original seeding procedure of mt19937 is available through the +generator gsl_rng_mt19937_1998. The seeding procedure was flawed, but +is available for compatibility. + +** Added missing functions gsl_complex_div_real and +gsl_complex_div_imag. + +** Missing functions for constant vector and matrix views have now been +added. + +** Statistical calculations for histograms are now available, and the +gsl-histogram command also displays the histogram mean and standard +deviation. + +** The behavior of GSL_IEEE_MODE for denormalized exceptions has been +fixed on Openbsd and Netbsd. + +** A pkg-config file gsl.pc is included in the distribution + +** The reference manual can now be printed in @smallbook format without +overflow. + +* What was new in gsl-0.9.2: + +** Vector and matrix views are now compliant with the ANSI standard. + +** Added Lambert functions gsl_sf_lambert_W0, gsl_sf_lambert_Wm1. + +** The reference manual now uses the GNU Free Documentation License. + +** Fixed a couple of bugs in the SVD routines. + +** Macros for Infinity and Nan now work correctly with Microsoft Visual +C++, and a bug in the config.h file for the finite() function has been +fixed. + +** Redundant entries in the test suite for the complex math functions +have been removed, making the distribution size smaller. + +** Installed programs gsl-randist and gsl-histogram now use shared +libraries. + +* What was new in gsl-0.9.1: + +** The single precision ffts now uses float throughout, rather than +mixing float and double. + +** The random number distributions now include the Landau distribution. + +** The fft function interface has been reorganized, with workspaces +separate from wavetables to eliminate unnecessary recomputation of +trigonometric factors. + +** The gsl_interval type has been eliminated and replaced by two double +arguments for simplicity. + +** The order of the arguments to the minimization routines is no more +logical, with function values assocatied with x-values. + +** Modified initialization of vector and matrix views to work with the +SunPro compiler. + +** Renamed gsl_Efunc_t to gsl_siman_Efunc_t, in accordance with +namespace conventions. + +** Improved accuracy and fixed bugs in gsl_sf_hyperg_1F1, +gsl_sf_bessel_I0_scaled, gsl_sf_erfc, gsl_sf_log_erfc, +gsl_sf_legendre_Q0 and gsl_sf_legendre_Q1, and gsl_sf_zeta. + +** Improved IEEE compliance of special functions, overflows now return +Inf and domain errors return NaN. + +** Improved checking for underflows in special functions when using +extended precision registers + +* What was new in gsl-0.9: + +** There is a new system of vector and matrix views. Any code using +vector and matrix views will need to be updated. + +** The order of arguments of the view functions involving strides have +been changed to be consistent with the rest of the library. + +** The ode solvers have been reorganized. + +** There are new eigensystem routines for real symmetric and complex +hermitian matrices. + +** The linear algebra directory now includes functions for computing +symmetric tridiagonal decompositions and bidiagonal decompositions. + +** The svd routines now include the Golub-Reinsch and Modified +Golub-Reinsch algorithms in addition to the Jacobi algorithm. + +** The interpolation directory has been reorganized and a higher-level +"spline" interface has been added which simplifies the handling of +interpolation arguments. + +** IEEE support is now available on OpenBSD. + +* What was new in gsl-0.8: + +** The build process now uses the latest libtool and automake. + +** The library should now compile with Microsoft Visual C++. + +** Portable versions of the isinf, isnan and finite functions are +available as gsl_isinf(x), gsl_isnan(x) and gsl_finite(x). + +** The definitions of GSL_POSINF, GSL_NEGINF and GSL_NAN no longer +cause divisions by zero during compilation. + +** The gsl_interp_obj has been renamed to gsl_interp. + +** The poly_eval and pow_int functions have been moved from the +specfunc directory to the poly and sys directories. + +** The Chebyshev functions are now available as an independent module +in their own directory. + +** The error handling conventions have been unified across the +library. This simplifies the use of the special functions. + +** A full CBLAS implementation is now included for systems where ATLAS +has not been installed. The CBLAS library can also be used +independently of GSL. The organisation of the BLAS directories has been +simplified. + +** IEEE support for HPUX-11, NetBSD, Apple Darwin and OS/2 are now +included. + +** The library now includes implementations of log1p, expm1, hypot, +acosh, asinh, atanh for platforms which do not provide them. + +** The convention for alloc and set functions has changed so that they +are orthogonal. After allocating an object it is now necessary to +initialize it. + +** There is a new module for estimating numerical derivatives of functions + +** There is a new module for handling data with ntuples + +** The histogram lookup functions are now optimized for the case of +uniform bins, and include an inline binary search for speed. + +** The Chebyschev coefficients for the QAWO algorithm are now +precomputed in a table for efficiency, rather than being computed on +the fly. + +** There are several new sorting functions for selecting the k-th +smallest or largest elements of a dataset. + +** Iterator functions are now available for permutations, +gsl_permutation_next and gsl_permutation_prev. + +** The function gsl_complex_xy has been renamed gsl_complex_rect + +** The API for simulated annealing has been changed to support search +spaces in which the points cannot be represented as contiguous-memory +data structures. gsl_siman_solve() now takes three extra arguments: a +copy constructor, a copy function and a destructor, allowing +gsl_siman_solve() to do its work with linked data structures. If all +three of these function pointers are NULL, then the traditioanl +approach of using malloc(), memcpy(), and free() with the element size +is used. + +* What was new in gsl-0.7: + +** Linux/PowerPC should now be well supported. + +** Header files for common physical constants have been added. + +** Functions linear and nonlinear regression in one or more dimensions +are now available. + +** Vector and matrix views now have access to the address of the +underlying block for compatibility with VSIPL (www.vsipl.org). + +** There is a new library for generating low-discrepancy quasi-random +sequences. + +** The seeding procedure of the default random number generator +MT19937 has been updated to match the 10/99 release of the original +code. This fixes a weakness which occurred for seeds which were +powers of 2. + +** The blas library libgslblasnative has been renamed libgslblas to avoid +confusion with system blas library + +* What was new in gsl-0.6: + +** The library is now installed as a single shared or static libgsl +file using libtool. + +** The gsl-config script now works. There is also a gsl.m4 file which +people can use in their configure scripts. + +** All header files are now in installed as pkginclude headers in a +gsl/ subdirectory. + +** The header files now use extern "C" to allow them to be included in +C++ programs + +** For consistency the following functions have been renamed, + + gsl_vector_copy (dest, src) is now gsl_vector_memcpy (dest, src) + gsl_rng_cpy (dest, src) is now gsl_rng_memcpy (dest, src) + gsl_matrix_copy_row (v,m,i) is now gsl_matrix_get_row (v,m,i) + gsl_matrix_copy_col (v,m,j) is now gsl_matrix_get_col (v,m,j) + gsl_vector_swap is now gsl_vector_swap_elements + gsl_vector_swap_cols is now gsl_vector_swap_columns + gsl_vector_swap_row_col is now gsl_vector_swap_row_column + +and the vector/matrix view allocation functions have been simplified. + +** A new sort directory has been added for sorting objects and vectors. + +** A permutation directory has been added for manipulating permutations + +** Statistics functions now support a stride argument for generality, and +also support weighted samples and a covariance function. + +** The names of the statistics functions have been reorganized for +improved clarity. Consult manual for details. + +** The environment variable GSL_IEEE_MODE now uses "," as a separator +instead of ";" + +** The autogen.sh script, mostly for use by developers who use the CVS +repository, now does not run configure. + +** The histogram directory now has additional functions for copying +and comparing histograms, performing arithmetic on histograms and +finding maximum and minimum values. Corresponding functions have been +added for vectors and matrices. + +** The linear algebra directory supports additional methods, including +rectangular QR, rectangular QRPT and Cholesky decomposition. + +** Complex arithmetic (+,-,*,/) and complex elementary functions +(sqrt, log, exp, sin, cos, tan, arcsin, arccos, arctan, sinh, cosh, +tanh, arcsinh, arccosh, arctanh) are now supported. + +** Multidimensional minimization methods are now available. + +** The special functions directory now includes a routine for +computing the value of the incomplete beta function. + +* Was new in gsl-0.5: + +** There is now a KNOWN-PROBLEMS file which lists compilation problems +and test failures which are known to the developers. + +** Many improvements have been made to the special functions directory. + +** The extrapolations from the Levin u-transform are now more reliable. + +** Linear algebra and Eigensystem routines are now available. + +** ODE solvers are now available. + +** Multidimensional root finding algorithms are available. + +** Minimization now keeps track of function values. + +** Matrices and vectors now use a BLAS compatible format, and have a +separate memory handling layer (gsl_block). + +** Roots of general polynomials can now be found using gsl_poly_complex_solve + +** IEEE modes support on Sparclinux, Tru64, AIX and IRIX + +** We have added the second generation RANLUX generators RANLXS and RANLXD + +** Minimization algorithms are available (one-dimensional) + +** Documentation now works out of the box with the standard Texinfo. + +** Full reimplementation of the QUADPACK integration library + +** Introduced THANKS file. +We appreciate all patches from people on the net, even those which are +too small to warrant adding the author to the AUTHORS file. The +THANKS file should include everyone who sent in patches. They should +also be mentioned in the ChangeLog entry. + +* What was new in gsl-0.4.1: + +** Two changes not making their way into the documentation +A couple of things are not getting into the docs, so here are the +errata: +*** The FFT routines now take a stride parameter. Passing 1 for the +stride will make them behave as documented. +*** The complex numbers are now an opaque type, and no assumptions can +be made about the format in which they are stored (they are not stored +as a simple structure anymore, since that is not portable). The type +is now gsl_complex (or gsl_complex_long_double or gsl_complex_float), +and the macros to access them are + GSL_REAL(z) + GSL_IMAG(z) + GSL_COMPLEX_P_REAL(zp) + GSL_COMPLEX_P_IMAG(zp) + GSL_COMPLEX_EQ(z1,z2) + GSL_SET_COMPLEX(zp,x,y) + GSL_SET_REAL(zp,x) + GSL_SET_IMAG(zp,y) + +This change in the complex number API makes it important that you +start working with 0.4.1 or later. + +** 0.4.1 is being released in occasion of the Red Hat 6.0 release. +The specfunc module is still in an alpha state; if you run "make +check" in the specfunc directory you will see that some tests still +fail. + +** Most Alpha specific problems have been fixed. In particular the +random number generators rand48 and ranf now work on the Alpha + +** Additional random number distributions: + Rayleigh distribution + n-dimensional spherical distribution + (ie, points at random on an n-dimensional sphere) + Gaussian tail distribution + (ie, choosing values from a gaussian distribution subject to a + constraint that they be larger than some fixed value, eg 5 sigmas) + Walker's algorithm for arbitrary discrete distributions + +* What was new in gsl-0.4: + +** A single libgsl.a file is built in the top level directory and +installed, instead of separate .a files for each subdirectory. + +** The parts of the complex struct gsl_complex, .real and .imag, are +not supported anymore. The macros GSL_REAL(z) and GSL_IMAG(z) do the +same job. All complex numbers are considered as packed arrays of +floating point numbers, for portability since the layout of structs or +arrays of structs is not guaranteed. + +** The interface for matrices and vectors has changed. Vectors now +support strides, and can be used to access rows and columns of a +matrix. Many more types are available (float, double, long double, +int, long, short, char, signed and unsigned, plus complex floats, +doubles and long doubles) due to improvements in our preprocessor +template system. + +** The random number generators have a completely new thread-safe +interface and have moved from the random directory to the rng +directory. Any program using random numbers will have to be +updated. You can also choose generators and seeds using the +environment variables GSL_RNG_TYPE and GSL_RNG_SEED. + +** Some additional random number distributions have been added in the +randist directory. The available distributiosn are: bernoulli, beta, +binomial, cauchy, chisq, erlang, exponential, fdist, flat, gamma, +gauss, geometric, levy, logistic, lognormal, nbinomial, pareto, +poisson, sphere, tdist, twosidedexp, weibull. + +** The FFT interface has be extended to support strides, but the +implementation hasn't been finished for all the cases yet, The FFT +allocation functions now return a pointer to a newly allocated +wavetable struct, instead of taking the pointer to an existing struct +as an argument. + + e.g. status = gsl_fft_wavetable_alloc(n, w) + is now w = gsl_fft_wavetable_alloc(n) in accordance with usual practice + +** The statistics directory now works with all the builtin +types. It has a new function for computing the lag1-autocorrelation and +an extra set of numerical accuracy tests from NIST as part of 'make +check'. + +** The simulated annealing routines no longer set the random number +seed with the time of day. You'll need to reseed the generator +yourself if you want subsequent runs to use different random numbers. + +** Work is in progress on a reimplementation of QUADPACK in the +`integration' subdirectory, but it is not finished yet. + +** Work is in progress on reimplementations of the VEGAS and +MISER Monte Carlo algorithms in the monte' subdirectory. They work +just fine, but the code is still evolving. + +** Work has started on a portable blas system in the `blas' +subdirectory. + +** You can now set the IEEE arithmetic mode for your programs from the +environment variable GSL_IEEE_MODE by calling the function +gsl_ieee_env_setup(). Currently this only works with the Linux kernel, +HP-UX, SunOS4 and Solaris. + +** There are some simple spline interpolation functions in the `interp' +subdir. + +** The NEWS file now uses outline mode, like the Emacs NEWS file + + +* This covers changes made *after* the gsl-0.2 snapshot + +** Added several new modules: histogram, integration, matrix, specfunc +and vectors. + +** Changed libgsl_statisctics.a to libgslstatistics.a and +libgsl_siman.a to libgslsiman.a, since most of the packages don't have +the underscore. Users will have to remove the old files, unless they +do a "make uninstall" on the previous release before they install this +new one. + +** Changes to the random number suite +Incorporated the gauss, poisson and exponential distributions in +the standard libgslrandom.a + + +Local variables: +mode: outline +paragraph-separate: "[ ]*$" +end: diff --git a/gsl-2.5/README b/gsl-2.5/README new file mode 100644 index 00000000..69ebe860 --- /dev/null +++ b/gsl-2.5/README @@ -0,0 +1,81 @@ +GSL - GNU Scientific Library +============================ + +This is GSL, the GNU Scientific Library, a collection of numerical +routines for scientific computing. + +GSL is free software, you can redistribute it and/or modify it under +the terms of the GNU General Public License. + +The GNU General Public License does not permit this software to be +redistributed in proprietary programs. + +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. + +Availability +============ + +The current stable version of GSL is always available from ftp.gnu.org +in the directory /pub/gnu/gsl. + +A list of mirror sites can be found at http://www.gnu.org/order/ftp.html + +Installation +============ + +GSL follows the standard GNU installation procedure. Please consult +the INSTALL file in this distribution for more detailed instructions. + +For information about specific platforms and compilers see the +"Compilation Notes" section in the INSTALL file. + +More information about GSL +========================== + +The project homepage is http://www.gnu.org/software/gsl/ + +See the NEWS file for recent changes to the library. + +The GSL Manual has been published and can be ordered from most +bookstores. The publication details are, + + GNU Scientific Library Reference Manual - Revised Second Edition, + M. Galassi et al, ISBN 0954161734 (620 pages, paperback). + +The money raised from sales of the manual helps support the +development of GSL. + +A Japanese translation of the reference manual is available from the +GSL website above (thanks to Daisuke TOMINAGA). + +Reporting Bugs +============== + +A list of known bugs can be found in the BUGS file. Details of +compilation problems can be found in the INSTALL file. + +If you find a bug which is not listed in these files please report it +to bug-gsl@gnu.org. + +All bug reports should include: + + The version number of GSL, and where you obtained it. + The hardware and operating system + The compiler used, including version number and compilation options + A description of the bug behaviour + A short program which reproducibly exercises the bug + +It is useful if you can check whether the same problem occurs when the +library is compiled without optimization. Thank you. + +Any errors or omissions in the manual can also be reported to the +same address. + +Contributing to GSL +=================== + +If you are interested in participating in GSL development, please see +the webpage at http://www.gnu.org/software/gsl/ + diff --git a/gsl-2.5/THANKS b/gsl-2.5/THANKS new file mode 100644 index 00000000..d6342f58 --- /dev/null +++ b/gsl-2.5/THANKS @@ -0,0 +1,513 @@ +* Jim McElwaine for very useful comments and discussions + about the dilogarithm and related functions. + +* Simone Piccardi for extensions to the +histogram routines, and providing the ntuple code + +* Nelson H. F. Beebe for references and testing +the software on many different platforms. + +* Tim Mooney for IEEE support for +Tru64, AIX, IRIX, fixes for odes, and testing + +* Thomas Walter for heapsort +routines, cholesky decomposition, bug reports and useful suggestions + +* Jorma Olavi Tähtinen for complex arithmetic +functions + +* Barak Pearlmutter + +* Frederick W. Wheeler + +* Bernd Petrovitsch + +* Jacek Pliszka for bug report + +* Michele Clark for bug report + +* Jeffrey Russell Horner for information on CBLAS + +* Rahul V. Herwadkar for testing + +* Trond Bo for bug report + +* Jan Kasprzak for bug report + +* David Kaelbling for testing + +* Mark Levedahl for bug report + +* David Billinghurst for testing + +* Jean-Bernard ADDOR for bug report + +* Fabrice Rossi bug reports and suggestions + +* Paul Walmsley for bug report and patch for + fixing matmult. + +* Dave Morrison for advice on build procedure and + various patches, the diff/ numerical differentiation routines, + multmin documentation, and Landau distribution + +* Brett Viren for debugging qpsrt.c. + +* Christopher Gabriel contributed the + gsl-config and gsl.m4 we use. + +* C M Murphy patch to fix up consts in header files + +* Bracy H. Elton for correcting a reference in the FFT Algorithms document + +* Tadhg O'Meara for finding a bug in gsl-randist + +* Steve Robbins patch to work around FP_RND + problems on Tru64, testing and other patches., bug fix for nm_simplex + algorithm. + +* John Fisher testing on powerpc linux + and support for fp-ppclinux.c + +* OKUJI Yoshinori for a patch for fp-x86linux.c for libc5 + +* Pablo Bianucci for patches to complex matrix/vectors + +* Toby White for several patches and +improvements to the design, OpenBSD support + +* Bill Brower for bug report on gsl.m4 + +* Vladimir Kushnir for ieee support for FreeBSD + +* F J Franklin for test reports and debugging + +* Keith Briggs for bug reports and code for +the skewed Levy alpha-stable variates gsl_ran_levy_skew + +* Vince for permutation iterator functions + +* Henry Sobotka for ieee support for OS/2 and bug fixes + +* Remy Bruno for bug fix + +* M. Lavasani for bug reports and testing on HPUX11 + +* Jason Beegan for NetBSD support + +* Zeger Knops for bug fix + +* Rodney Sparapani for Darwin support + +* Ramin Nakisa for bug reports + +* Achim Gaedke for bug reports and +suggestions, additional histogram code, PyGSL python interface, 2d +histogram statistics, bug fixes for simulated annealing + +* Eric Rose for bug report and useful tip on casting + +* M Joonas Pihlaja for bug reports + +* Albert Chin for bug reports, patches, and +providing HP-UX platforms for testing + +* Asterio Gonzalez for a bug report for multmin + +* Carlo Perassi for implementing the random number +generators in Knuth's Seminumerical Algorithms, 3rd Ed. + +* Dan, Ho-Jin for divided differences interpolation +routines + +* Stefan Koch for useful bug reports and +fixes for the special functions + +* Szymon Jaroszewicz for the combinations modules and + bug reports + +* Theis Peter Hansen fixed unchecked status values in +multiroots + +* Jungemann Markus documentation fixes + +* Hans E. Plesser (hans dot plesser at itf dot nlh dot no) more +reliable implementation of gamma_inc, multifit bug fixes + +* Arin Chaudhuri documentation bug reports + +* Karsten Howes siman bug fix + +* Vladimir Savichev bug reports + +* Jochen Küpper doc bug fixes, additional +constants + +* John Ketchum for bug reports for the blas library + +* Nicolas Darnis additional permutation functions + +* Jeff Spirko patch for 1d minimization + +* David Necas (Yeti) bug reports and patches +for linear algebra, interpolation, additional tridiagonal solvers + +* for bug report + +* Christian T. Steigies for documentation bug report + +* Atakan Gurkan for bug reports and patches for the +random number generators. + +* David Ronis for bug reports and +patches + +* Christian T. Steigies for a documentation fix + +* Teun Burgers improvements to configure script + +* Olivier Andrieu bug report for Chebyschev +memory leak + +* Hiroshi Imamura extension to psi(1+iy) + +* Taliver Heath keep track of best solution +in siman_solve. + +* Trevor Blackwell bug report test case for +SVD d_n = 0, bug fix to mt19937 generator + +* Nicolas Bock documentation bug report + +* Alan Aspuru-Guzik documentation bug report + +* Peter S. Christopher bug fix for +simulated annealing + +* Gene Carter build shared libraries on MacOS X + +* Fabian Jakobs fixed a bug in +gsl_linalg_bidiag_unpack_B, and documentation bug-fix for blas + +* Gavin Crooks documentation bug fix, +dirichlet distribution, multinomial distribution + +* Gert Van den Eynde gsl_ldexp, gsl_frexp, gsl_fcmp + +* Reinhold Bader , fixes for Hitachi SR8000 + +* Slaven Peles , build options for +Compaq cc, doc bug fix + +* David Favis-Mortlock bug report for +gsl_rng_taus2 seeding + +* Alexander Babansky documentation bug report for Ei(x) + +* Tiago de Paula Peixoto bug report for multifit +memory allocation + +* Adam Johansen bug report for eigenvalue routines + +* Wolfgang Hoermann bug report for niederreiter qrng + +* Jerome Houdayer bug report for taus seeding + +* Conrad Curry bug and documentation reports + +* Erik Schnetter documentation bug reports + +* Maarten De Munck bug fix for vector/matrix get + +* Axel Hutt bug fix for QAWC integration, +documentation bug fix + +* Martin Jansche various bug reports + +* Gregory Soyez documentation bug report + +* Attilio Rivoldini bug report for CBLAS tests + +* W.M. Vissers bug report for +gsl_complex_arccsc_real + +* Paolo Redaelli bug report for chebyshev +functions + +* Andrew Howard bug report for gsl_ran_discrete + +* Heiko Bauke bug reports and patches +for random number generators + +* Vincent Sacksteder bug reports for MSVC7 + +* Peter Verveer improvement to memory +usage of MINPACK routines + +* Mario Pernici bug fix for +gsl_combination_valid and new function gsl_permutation_memcpy, +doc fix for bessel functions, bug fix for gsl_sf_psi_1_int, +bug report for gsl_permutation_canonical_to_linear, linalg +QRPT bug reports and fixes, and many other corrections. + +* Fabio Brugnara provided a much-needed bug +fix for the conjugate gradient algorithm multidimensional +minimisers. + +* Krzysztof Pachucki bug report for gsl_sf_hypergU_int + +* Carsten Svaneborg documentation bug report + +* Liguo Song documentation bug report + +* Carlo Ferrigno bug report for CGS units + +* Giulio Bottazzi many useful bug reports + +* Olaf Lenz rng frwite/fread, bug reports + +* Jamie Lokier for testing + +* Grant Lythe documentation bug report + +* Jussi Piitulainen documentation bug report + +* Aaron Schweiger bug report for SVD/column balancing + +* Carlo Ferrigno bug report about const problems + +* Jussi Piitulainen documenation bug report for +gsl_ran_hypergeometric_pdf + +* Bas Zoetekouw documentation bug report + +* Paul Sydney bug report and patch for min/brent.c + +* Alexei Podtelezhnikov patch for sphere.c + +* Neil Bushong documentation typo bug report + +* Brad Bell documentation bug report + +* Andreas Schneider <1@c07.de> bug report for R250 + +* Luigi Ballabio fix m4 quoting in gsl.m4 + +* Zbigniew Koza documentation bug fix for odes + +* James Scott fix for linalg tests on MSVC + +* Rémi Butel fixes for multimin overflow +conditions + +* Andris Pavenis Makefile fix for EXEEXT + +* Daniel Webb bug report for potential cspline +division by zero + +* Ewald Stamp bugfix for vector/swap_source.c + +* Joerg Wensch LQ decompositions + +* Jason Stover patch for cdf/beta.c, +inverse cumulative distributions, discrete cumulative distributions + +* Ralph Menikoff bug report for gsl_sf_expint_scaled + +* Yoshiki documentation bug report + +* Nigel Lowry documentation proofreading + +* Giulio Bottazzi cdf for exponential power +distribution, bug reports + +* Tuomo Keskitalo many improvements to ode-initval + +* Britton Kerin documentation bug reports + +* Patricio Rojo patch for numerical +instability in interpolation integrate function + +* Damir Herman improved accuracy of +histogram range calculations + +* John Salmon bug report for gsl_cheb_eval_n_err + +* Dirk Eddelbuettel for bug reports and testing, and +maintaining the Debian package for GSL. + +* Jari Häkkinen for svd bug reports, rng bug reports + +* Marco Canini patch for IXP2400 Xscale + +* Ben Klemens bug report for sorting vectors +with NANs + +* Peter Brommer bug report and patch +for Brent minimisation algorithm. + +* Gabriel Withington typo in docs + +* Stewart V. Wright patch for missing +spline functions + +* Richard Mathar additional Debye +functions n=5,6, handle case x==1 in 2F1. + +* Stefan Jahn bug fix for periodic cubic splines with n=3 + +* Yoram Burak bug report for scaled bessel function In_scaled + +* Mario Santos bug report for spherical bessel function + +* Vincent Plagnol bug report for gsl_randist_binomial_pdf + +* John Houck bug report for gsl_sf_synchrotron_1 + +* Jochen Voss ziggurat gaussian generator + +* John D Lamb Marsaglia-Tsang gamma generator, bug reports + +* Giulio Bottazzi improved exponential +power distribution and gsl_multifit_linear_est + +* Charles Karney added Leva bounds to gaussian ratio method generator + +* Torquil Sorenson documentation bug fixes for FFTs + +* Yajun Wang - bug report for multifit n

- patch for Macos X on Intel + +* Lowell Johnson - implementation of mathieu functions + +* Brian Gladman - useful bug reports + +* B. Lazarov - compilation bug report for randist + +* Harald Moseby - special functions bug reports + +* Neil Harvey - bug report for beta pdf + +* Felipe G. Nievinski - documentation bug report + +* Daisuke TOMINAGA - Japanese translation of manual and numerous corrections + +* Andoline Bucciolini - documentation bug for BLAS + +* Daniel Falster bug report for fdist_Pinv + +* Giancarlo Marra bug report for M_PI_4 + +* Alan Irwin for sample implementation of +improved BFGS algorithm. + +* Lionel Barnett for pointing out an +error in the elliptic integrals + +* Ed Smith-Rowland <3dw4rd@verizon.net> patch for laguerre polynomials + +* Katrin Wolff bug report for Lambert W function + +* "Heikki Orsila " cleaning up siman code + +* Eugene Loh bug report for gsl_log1p + +* Richard Smith bug report and suggestions for +correct use of isfinite + +* Marco Lombardi bug report for svd + +* I J Wilson bug report for dirichlet +function + +* Justin Lenzo bug reports for +vector/matrix tests. + +* Sebastian Queißer bug report for +gsl_cdf_beta_Pinv + +* Andries Brouwer bug report for +underflow in symmetric eigenvalues + +* Mingxi Wu bug report for multinomial pdf + +* Chris Mihelich bug reports and suggestions for +gsl_ldexp and gsl_frexp + +* Frank Reininghaus complex polynomial +evaluation and ode improvements + +* Jason Coy optimisation for dwt.c + +* Richard Guenther bug reports + +* Stijn van Dongen bug fix for overflow in + gsl_cdf_hypergeometric_{P,Q} + +* Claude Dion documentation bug reports + +* Michael Kuklik bug report for simplex + +* Paul Accisano, bug report and fix for cyclic solver + +* Thomas Weber bug and patch for interp + accelerator + +* Lori A. Pritchett-Sheats bug report for vegas chisq. + +* Frank Wang bug report for gsl_ran_gamma_knuth. + +* Peter Johansson fix for make install prefix=PREFIX + +* Taneli Kalvas bug report for odes + +* Marco Maggi bug fix for gsl_blas_drotm + +* Mateus Araújo Santos - bug fix for LM set + +* James Howse - quad_golden minimisation algorithm + +* Marc JOURDAIN - polynomial derivatives function + +* Andrew Steiner - for bug reports + +* Ettl Martin - bug report, rk4 memory + +* Yevgeniy Naumovich - bspline allocators fix + +* Huan Wu - gsl_linalg_complex_cholesky_invert + +* Ralf Wildenhues - numerous proofreading corrections + +* Thomas Tanner - bug report for gsl_sf_beta_inc + +* Sam Mason - bug fix for gsl_pow_int + +* José Luis García Pallero - error checking for GSL cblas + +* Teemu Ikonen patch for gsl_ran_chisq_pdf + +* Evgeny Kurbatov - patch for error + handling in interpolation routines + +* Michel Kern - fix for singular Jacobian in + Newton solver + +* Nikolay Simakov - bug report for gsl_eigen_jacobi + +* Jim Ward - numerous bug reports and useful suggestions + +* Josh Neil & Curt Hash - patch for negative binomial + +* Maximilian Treiber - bug report for gsl_sf_lncosh + +* Martin Landriau bug report for 3j coupling + +* Grigory I. Rubtsov - extend range of 3j + +* Matthias Sitte - bug report and patch for + failing complex matrix IO routines + +* Raymond Rogers - bug fixes for confluent + hypergeometric functions diff --git a/gsl-2.5/TODO b/gsl-2.5/TODO new file mode 100644 index 00000000..9b800510 --- /dev/null +++ b/gsl-2.5/TODO @@ -0,0 +1,207 @@ +# -*- org -*- +#+TITLE: GSL TODO File + +* Main Todo Items + +We are looking for volunteers to do the following tasks. +Consult the TODO files in each directory first for specific +requirements. + +** Document LQ linalg functions +** 1st-line support on the mailing lists (e.g. checking that bugs are +reproducible, and that all relevant information is supplied) + +** Modified Ei(x) function (see specfunc/TODO) + +** Quasi-random number distributions + +** ODE algorithms from RKSUITE + +** Incomplete Fermi-Dirac functions + +** Spheroidal wave functions + +** Weierstrass elliptic functions + +** Complex Bessel Functions + +** Additional volunteers with access to a good library to get copies of +papers for other developers. + +** Estimates of condition numbers for linear solvers + +** Sine and Cosine Transforms from FFTPACK (Alok Singhal ) + +** Cubature, e.g as provided by Cubpack. (Gert Van den Eynde + ?) + +** Fresnel Integrals ("Juergen J. Zach" ) + +** Cumulative Distribution functions for discrete random distributions + +* Changes for Release 2.0 + +Break binary compatibility, but keep source compatibility. + +** Add a 'void *' to all workspaces, to allow for future changes. + +** Disable deprecated functions + +** Fix up the workspace_alloc functions so they have consistent names + (add functions where needed, don't remove) + +** Standardize function names, in particular VERB vs NOUN (e.g. _invert +vs _inverse). Also adopt a convection for functions which can operate +in place vs use of workspace (e.g linalg_solve functions). + +** gsl_roots doesn't store function value, so testing the residual requires function to be recomputed +Generally all the iterative routines should follow a consistent approach +to outputting everything that is necessary for the next iteration + +** gsl_roots - consider having two returns from solvers - GSL_SUCCESS +if a root has been found or GSL_CONTINUE if further iterations may +be needed. + +** mathieu functions - bring functional interfaces into line with GSL +conventions for special functions. + +** rewriting the spherical Bessel routines (there are +around 3 separate bug reports for these) + +** the nonlinear least squares Levenberg-Marquardt solver should be +rewritten from scratch - the current version is filled with goto +statements, and while its supposed to be based on MINPACK, I've found +numerous examples where GSL fails to converge when MINPACK succeeds, so +something was not implemented correctly. + +** import 2D interpolation code; 3d or nd linear interpolation? + +* Other tasks + +** Remove use of long double internally, e.g. as an accumulator in +loops. It introduces variation between platforms which is undesirable. +It should be replaced with a preprocessor variable ACC_DOUBLE so +that the user can compile the library with the old long double +behavior if desired. + +** Use BLAS internally as much as possible, to take advantage of +speed improvements on large-scale systems. There may be some +instances where a simple for() loop is preferred since there's a +function-call overhead in calling BLAS routines. + +** More tests. We should (at least) have a test for every error +condition. Use GCOV to improve coverage. + +** Annotate the header files with GAMS classifications. See if they +can be included in the GAMs website. + +** Make the return value EINVAL vs EDOM consistent for invalid +parameters. EDOM means a domain error (i.e. float or mathematically +undefined), EINVAL means invalid (i.e. zero length) + +** Change return 0 to return GSL_SUCCESS, and return -1 to GSL_FAILURE +throughout, where appropriate. Similarly change any if(...) checks of +return values to use == GSL_SUCCESS, if they are checking for zero. +N.B. want to be careful about accidentally omitting error conditions +if using something like == GSL_FAILURE when function returns a +different error code. + +** Make sure that all #defines are fully wrapped in ()'s, especially +the outermost layer which may have been missed. Everything should be +of the form #define foo(x) (....) so there is no possibility of bad +parsing. Need a perl script to check this! + +** Eliminate use of volatile where it has been used to force rounding +(integration/). It is better to write the code to avoid dependence on +rounding. + +** Constant objects (like gsl_roots_fsolver_brent) ought to have +constant pointers (const gsl_roots_fsolver_type * const +gsl_roots_fsolver_brent) + +** PyGSL -- python bindings for GSL, see http://pygsl.sf.net/ + + +** From Goose + ASCII import + Categorical Sets + Kernel Density Estimation + Shampine Polynomial Regression + Bootstrapping, Jacknife + Descriptive: Range, Trimmed Mean, Winsorized Mean, Moments + Harmonic mean, RMS, Durbin-Watson, AR1 independence + Autocorr, Autocorr_z, Cramer vos Mises, Anderson-Darling + Spearman-rho, Kendall-tau, EDF_D_both EDF_D_plus, + EDF_D_minus, EDF_D, EDF_kuiper_V, pooled mean + pooled var, + Tests: kolmogorov_smirnov + Moving average, Exponential moving average + wilcoxon_statistic, wilcoxon_noties_cdf, wilcoxon_general_cdf + Cochran Q test, KruskalWallis, McNemar, spearman_Rocc + + +* Wishlist or vague ideas + +** An example chapter on how to link GSL code with GNU Guile, and Python + +We could also provide g-wrap wrappers for guile, or swig.i files and +swig demos so that swig can be run more easily. + +** Provide an interface to LAPACK, as for BLAS? Clarify the license +for LAPACK first, their web page is vague on what the license terms +are. Some parts of LAPACK are included in octave so maybe the Octave +maintainers will know more. + +** Public domain or free texts which could be distributed with GSL: + +Abramowitz and Stegun, "Handbook of Mathematical Functions" appears to +be public domain. + +SEPT/02: See online images at http://members.fortunecity.com/aands/ + +Devroye's book on Random Variates (1st ed) is/was in the public +domain. + + +** Investigate complex support in GCC: Operations like sin(z) silently +convert argument to double, losing the imaginary part. This is +mentioned in CEPHES documentation in 1998 with a patch to generate a +warning. What happened? (Does it now work with gcc-3.0?) + +** Go through the matrix and vector functions systematically and decide +what should be provided outside of BLAS. + +** Change from gsl-ref.texi to gsl.texi since it is the main file? +Also, put under dir section "Math" (which seems to be the appropriate +one for Debian, as Octave, Gnuplot etc are in that) + +** Remove error stream stuff?? It is hardly used. + +** Extend histogram routines as described in recent discussion + +** Check that there are no conflicts when linking with Lapack. CBLAS, ATLAS + +** Make a sorted datatype for the median and quantile functions so that +the user can be prevented from passing unsorted data, which is not +checked for. + +** Optimization/error for dest == src as appropriate + +** Provide a run-time expression evaluator for interactive programs +where the user can provide formulas as strings. Keith Briggs +recommended formulc2.22 which he had found useful in several projects. +http://www.cs.brandeis.edu/~hhelf/formu/formulc.html. It is LGPL. +Alternatively, the source code for GDB contains yacc grammars and +evaluators for expressions in various languages, so that would be +another way to go. It would have the advantage of following the +language standards. If I was going to write something from scratch I +would think about using that as a base, as the full set of operators +are already included with the correct precedence rules. Being able to +evaluate C and Fortran expressions could be useful. + +** We should have an index mapping type object which handles elements +of size_t for vectors and matrices, or at least vectors and matrices +of size_t in addition to long, int, etc. + + + diff --git a/gsl-2.5/aclocal.m4 b/gsl-2.5/aclocal.m4 new file mode 100644 index 00000000..b4c2a8d4 --- /dev/null +++ b/gsl-2.5/aclocal.m4 @@ -0,0 +1,9666 @@ +# generated automatically by aclocal 1.13.4 -*- Autoconf -*- + +# Copyright (C) 1996-2013 Free Software Foundation, Inc. + +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])]) +m4_ifndef([AC_AUTOCONF_VERSION], + [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl +m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],, +[m4_warning([this file was generated for autoconf 2.69. +You have another version of autoconf. It may work, but is not guaranteed to. +If you have problems, you may need to regenerate the build system entirely. +To do so, use the procedure documented by the package, typically 'autoreconf'.])]) + +# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- +# +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, +# 2006, 2007, 2008, 2009, 2010, 2011 Free Software +# Foundation, Inc. +# Written by Gordon Matzigkeit, 1996 +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. + +m4_define([_LT_COPYING], [dnl +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, +# 2006, 2007, 2008, 2009, 2010, 2011 Free Software +# Foundation, Inc. +# Written by Gordon Matzigkeit, 1996 +# +# This file is part of GNU Libtool. +# +# GNU Libtool 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. +# +# As a special exception to the GNU General Public License, +# if you distribute this file as part of a program or library that +# is built using GNU Libtool, you may include this file under the +# same distribution terms that you use for the rest of that program. +# +# GNU Libtool 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 GNU Libtool; see the file COPYING. If not, a copy +# can be downloaded from http://www.gnu.org/licenses/gpl.html, or +# obtained by writing to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +]) + +# serial 57 LT_INIT + + +# LT_PREREQ(VERSION) +# ------------------ +# Complain and exit if this libtool version is less that VERSION. +m4_defun([LT_PREREQ], +[m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1, + [m4_default([$3], + [m4_fatal([Libtool version $1 or higher is required], + 63)])], + [$2])]) + + +# _LT_CHECK_BUILDDIR +# ------------------ +# Complain if the absolute build directory name contains unusual characters +m4_defun([_LT_CHECK_BUILDDIR], +[case `pwd` in + *\ * | *\ *) + AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;; +esac +]) + + +# LT_INIT([OPTIONS]) +# ------------------ +AC_DEFUN([LT_INIT], +[AC_PREREQ([2.58])dnl We use AC_INCLUDES_DEFAULT +AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl +AC_BEFORE([$0], [LT_LANG])dnl +AC_BEFORE([$0], [LT_OUTPUT])dnl +AC_BEFORE([$0], [LTDL_INIT])dnl +m4_require([_LT_CHECK_BUILDDIR])dnl + +dnl Autoconf doesn't catch unexpanded LT_ macros by default: +m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl +m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl +dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4 +dnl unless we require an AC_DEFUNed macro: +AC_REQUIRE([LTOPTIONS_VERSION])dnl +AC_REQUIRE([LTSUGAR_VERSION])dnl +AC_REQUIRE([LTVERSION_VERSION])dnl +AC_REQUIRE([LTOBSOLETE_VERSION])dnl +m4_require([_LT_PROG_LTMAIN])dnl + +_LT_SHELL_INIT([SHELL=${CONFIG_SHELL-/bin/sh}]) + +dnl Parse OPTIONS +_LT_SET_OPTIONS([$0], [$1]) + +# This can be used to rebuild libtool when needed +LIBTOOL_DEPS="$ltmain" + +# Always use our own libtool. +LIBTOOL='$(SHELL) $(top_builddir)/libtool' +AC_SUBST(LIBTOOL)dnl + +_LT_SETUP + +# Only expand once: +m4_define([LT_INIT]) +])# LT_INIT + +# Old names: +AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT]) +AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_PROG_LIBTOOL], []) +dnl AC_DEFUN([AM_PROG_LIBTOOL], []) + + +# _LT_CC_BASENAME(CC) +# ------------------- +# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. +m4_defun([_LT_CC_BASENAME], +[for cc_temp in $1""; do + case $cc_temp in + compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; + distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` +]) + + +# _LT_FILEUTILS_DEFAULTS +# ---------------------- +# It is okay to use these file commands and assume they have been set +# sensibly after `m4_require([_LT_FILEUTILS_DEFAULTS])'. +m4_defun([_LT_FILEUTILS_DEFAULTS], +[: ${CP="cp -f"} +: ${MV="mv -f"} +: ${RM="rm -f"} +])# _LT_FILEUTILS_DEFAULTS + + +# _LT_SETUP +# --------- +m4_defun([_LT_SETUP], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +AC_REQUIRE([_LT_PREPARE_SED_QUOTE_VARS])dnl +AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl + +_LT_DECL([], [PATH_SEPARATOR], [1], [The PATH separator for the build system])dnl +dnl +_LT_DECL([], [host_alias], [0], [The host system])dnl +_LT_DECL([], [host], [0])dnl +_LT_DECL([], [host_os], [0])dnl +dnl +_LT_DECL([], [build_alias], [0], [The build system])dnl +_LT_DECL([], [build], [0])dnl +_LT_DECL([], [build_os], [0])dnl +dnl +AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([LT_PATH_LD])dnl +AC_REQUIRE([LT_PATH_NM])dnl +dnl +AC_REQUIRE([AC_PROG_LN_S])dnl +test -z "$LN_S" && LN_S="ln -s" +_LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl +dnl +AC_REQUIRE([LT_CMD_MAX_LEN])dnl +_LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl +_LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl +dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_CHECK_SHELL_FEATURES])dnl +m4_require([_LT_PATH_CONVERSION_FUNCTIONS])dnl +m4_require([_LT_CMD_RELOAD])dnl +m4_require([_LT_CHECK_MAGIC_METHOD])dnl +m4_require([_LT_CHECK_SHAREDLIB_FROM_LINKLIB])dnl +m4_require([_LT_CMD_OLD_ARCHIVE])dnl +m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl +m4_require([_LT_WITH_SYSROOT])dnl + +_LT_CONFIG_LIBTOOL_INIT([ +# See if we are running on zsh, and set the options which allow our +# commands through without removal of \ escapes INIT. +if test -n "\${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST +fi +]) +if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST +fi + +_LT_CHECK_OBJDIR + +m4_require([_LT_TAG_COMPILER])dnl + +case $host_os in +aix3*) + # AIX sometimes has problems with the GCC collect2 program. For some + # reason, if we set the COLLECT_NAMES environment variable, the problems + # vanish in a puff of smoke. + if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES + fi + ;; +esac + +# Global variables: +ofile=libtool +can_build_shared=yes + +# All known linkers require a `.a' archive for static linking (except MSVC, +# which needs '.lib'). +libext=a + +with_gnu_ld="$lt_cv_prog_gnu_ld" + +old_CC="$CC" +old_CFLAGS="$CFLAGS" + +# Set sane defaults for various variables +test -z "$CC" && CC=cc +test -z "$LTCC" && LTCC=$CC +test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS +test -z "$LD" && LD=ld +test -z "$ac_objext" && ac_objext=o + +_LT_CC_BASENAME([$compiler]) + +# Only perform the check for file, if the check method requires it +test -z "$MAGIC_CMD" && MAGIC_CMD=file +case $deplibs_check_method in +file_magic*) + if test "$file_magic_cmd" = '$MAGIC_CMD'; then + _LT_PATH_MAGIC + fi + ;; +esac + +# Use C for the default configuration in the libtool script +LT_SUPPORTED_TAG([CC]) +_LT_LANG_C_CONFIG +_LT_LANG_DEFAULT_CONFIG +_LT_CONFIG_COMMANDS +])# _LT_SETUP + + +# _LT_PREPARE_SED_QUOTE_VARS +# -------------------------- +# Define a few sed substitution that help us do robust quoting. +m4_defun([_LT_PREPARE_SED_QUOTE_VARS], +[# Backslashify metacharacters that are still active within +# double-quoted strings. +sed_quote_subst='s/\([["`$\\]]\)/\\\1/g' + +# Same as above, but do not quote variable references. +double_quote_subst='s/\([["`\\]]\)/\\\1/g' + +# Sed substitution to delay expansion of an escaped shell variable in a +# double_quote_subst'ed string. +delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' + +# Sed substitution to delay expansion of an escaped single quote. +delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' + +# Sed substitution to avoid accidental globbing in evaled expressions +no_glob_subst='s/\*/\\\*/g' +]) + +# _LT_PROG_LTMAIN +# --------------- +# Note that this code is called both from `configure', and `config.status' +# now that we use AC_CONFIG_COMMANDS to generate libtool. Notably, +# `config.status' has no value for ac_aux_dir unless we are using Automake, +# so we pass a copy along to make sure it has a sensible value anyway. +m4_defun([_LT_PROG_LTMAIN], +[m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl +_LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir']) +ltmain="$ac_aux_dir/ltmain.sh" +])# _LT_PROG_LTMAIN + + + +# So that we can recreate a full libtool script including additional +# tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS +# in macros and then make a single call at the end using the `libtool' +# label. + + +# _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS]) +# ---------------------------------------- +# Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later. +m4_define([_LT_CONFIG_LIBTOOL_INIT], +[m4_ifval([$1], + [m4_append([_LT_OUTPUT_LIBTOOL_INIT], + [$1 +])])]) + +# Initialize. +m4_define([_LT_OUTPUT_LIBTOOL_INIT]) + + +# _LT_CONFIG_LIBTOOL([COMMANDS]) +# ------------------------------ +# Register COMMANDS to be passed to AC_CONFIG_COMMANDS later. +m4_define([_LT_CONFIG_LIBTOOL], +[m4_ifval([$1], + [m4_append([_LT_OUTPUT_LIBTOOL_COMMANDS], + [$1 +])])]) + +# Initialize. +m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS]) + + +# _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS]) +# ----------------------------------------------------- +m4_defun([_LT_CONFIG_SAVE_COMMANDS], +[_LT_CONFIG_LIBTOOL([$1]) +_LT_CONFIG_LIBTOOL_INIT([$2]) +]) + + +# _LT_FORMAT_COMMENT([COMMENT]) +# ----------------------------- +# Add leading comment marks to the start of each line, and a trailing +# full-stop to the whole comment if one is not present already. +m4_define([_LT_FORMAT_COMMENT], +[m4_ifval([$1], [ +m4_bpatsubst([m4_bpatsubst([$1], [^ *], [# ])], + [['`$\]], [\\\&])]m4_bmatch([$1], [[!?.]$], [], [.]) +)]) + + + + + +# _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?]) +# ------------------------------------------------------------------- +# CONFIGNAME is the name given to the value in the libtool script. +# VARNAME is the (base) name used in the configure script. +# VALUE may be 0, 1 or 2 for a computed quote escaped value based on +# VARNAME. Any other value will be used directly. +m4_define([_LT_DECL], +[lt_if_append_uniq([lt_decl_varnames], [$2], [, ], + [lt_dict_add_subkey([lt_decl_dict], [$2], [libtool_name], + [m4_ifval([$1], [$1], [$2])]) + lt_dict_add_subkey([lt_decl_dict], [$2], [value], [$3]) + m4_ifval([$4], + [lt_dict_add_subkey([lt_decl_dict], [$2], [description], [$4])]) + lt_dict_add_subkey([lt_decl_dict], [$2], + [tagged?], [m4_ifval([$5], [yes], [no])])]) +]) + + +# _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION]) +# -------------------------------------------------------- +m4_define([_LT_TAGDECL], [_LT_DECL([$1], [$2], [$3], [$4], [yes])]) + + +# lt_decl_tag_varnames([SEPARATOR], [VARNAME1...]) +# ------------------------------------------------ +m4_define([lt_decl_tag_varnames], +[_lt_decl_filter([tagged?], [yes], $@)]) + + +# _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..]) +# --------------------------------------------------------- +m4_define([_lt_decl_filter], +[m4_case([$#], + [0], [m4_fatal([$0: too few arguments: $#])], + [1], [m4_fatal([$0: too few arguments: $#: $1])], + [2], [lt_dict_filter([lt_decl_dict], [$1], [$2], [], lt_decl_varnames)], + [3], [lt_dict_filter([lt_decl_dict], [$1], [$2], [$3], lt_decl_varnames)], + [lt_dict_filter([lt_decl_dict], $@)])[]dnl +]) + + +# lt_decl_quote_varnames([SEPARATOR], [VARNAME1...]) +# -------------------------------------------------- +m4_define([lt_decl_quote_varnames], +[_lt_decl_filter([value], [1], $@)]) + + +# lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...]) +# --------------------------------------------------- +m4_define([lt_decl_dquote_varnames], +[_lt_decl_filter([value], [2], $@)]) + + +# lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...]) +# --------------------------------------------------- +m4_define([lt_decl_varnames_tagged], +[m4_assert([$# <= 2])dnl +_$0(m4_quote(m4_default([$1], [[, ]])), + m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]), + m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))]) +m4_define([_lt_decl_varnames_tagged], +[m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])]) + + +# lt_decl_all_varnames([SEPARATOR], [VARNAME1...]) +# ------------------------------------------------ +m4_define([lt_decl_all_varnames], +[_$0(m4_quote(m4_default([$1], [[, ]])), + m4_if([$2], [], + m4_quote(lt_decl_varnames), + m4_quote(m4_shift($@))))[]dnl +]) +m4_define([_lt_decl_all_varnames], +[lt_join($@, lt_decl_varnames_tagged([$1], + lt_decl_tag_varnames([[, ]], m4_shift($@))))dnl +]) + + +# _LT_CONFIG_STATUS_DECLARE([VARNAME]) +# ------------------------------------ +# Quote a variable value, and forward it to `config.status' so that its +# declaration there will have the same value as in `configure'. VARNAME +# must have a single quote delimited value for this to work. +m4_define([_LT_CONFIG_STATUS_DECLARE], +[$1='`$ECHO "$][$1" | $SED "$delay_single_quote_subst"`']) + + +# _LT_CONFIG_STATUS_DECLARATIONS +# ------------------------------ +# We delimit libtool config variables with single quotes, so when +# we write them to config.status, we have to be sure to quote all +# embedded single quotes properly. In configure, this macro expands +# each variable declared with _LT_DECL (and _LT_TAGDECL) into: +# +# ='`$ECHO "$" | $SED "$delay_single_quote_subst"`' +m4_defun([_LT_CONFIG_STATUS_DECLARATIONS], +[m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames), + [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])]) + + +# _LT_LIBTOOL_TAGS +# ---------------- +# Output comment and list of tags supported by the script +m4_defun([_LT_LIBTOOL_TAGS], +[_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl +available_tags="_LT_TAGS"dnl +]) + + +# _LT_LIBTOOL_DECLARE(VARNAME, [TAG]) +# ----------------------------------- +# Extract the dictionary values for VARNAME (optionally with TAG) and +# expand to a commented shell variable setting: +# +# # Some comment about what VAR is for. +# visible_name=$lt_internal_name +m4_define([_LT_LIBTOOL_DECLARE], +[_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], + [description])))[]dnl +m4_pushdef([_libtool_name], + m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl +m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])), + [0], [_libtool_name=[$]$1], + [1], [_libtool_name=$lt_[]$1], + [2], [_libtool_name=$lt_[]$1], + [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl +m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl +]) + + +# _LT_LIBTOOL_CONFIG_VARS +# ----------------------- +# Produce commented declarations of non-tagged libtool config variables +# suitable for insertion in the LIBTOOL CONFIG section of the `libtool' +# script. Tagged libtool config variables (even for the LIBTOOL CONFIG +# section) are produced by _LT_LIBTOOL_TAG_VARS. +m4_defun([_LT_LIBTOOL_CONFIG_VARS], +[m4_foreach([_lt_var], + m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)), + [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])]) + + +# _LT_LIBTOOL_TAG_VARS(TAG) +# ------------------------- +m4_define([_LT_LIBTOOL_TAG_VARS], +[m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames), + [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])]) + + +# _LT_TAGVAR(VARNAME, [TAGNAME]) +# ------------------------------ +m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])]) + + +# _LT_CONFIG_COMMANDS +# ------------------- +# Send accumulated output to $CONFIG_STATUS. Thanks to the lists of +# variables for single and double quote escaping we saved from calls +# to _LT_DECL, we can put quote escaped variables declarations +# into `config.status', and then the shell code to quote escape them in +# for loops in `config.status'. Finally, any additional code accumulated +# from calls to _LT_CONFIG_LIBTOOL_INIT is expanded. +m4_defun([_LT_CONFIG_COMMANDS], +[AC_PROVIDE_IFELSE([LT_OUTPUT], + dnl If the libtool generation code has been placed in $CONFIG_LT, + dnl instead of duplicating it all over again into config.status, + dnl then we will have config.status run $CONFIG_LT later, so it + dnl needs to know what name is stored there: + [AC_CONFIG_COMMANDS([libtool], + [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])], + dnl If the libtool generation code is destined for config.status, + dnl expand the accumulated commands and init code now: + [AC_CONFIG_COMMANDS([libtool], + [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])]) +])#_LT_CONFIG_COMMANDS + + +# Initialize. +m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT], +[ + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +sed_quote_subst='$sed_quote_subst' +double_quote_subst='$double_quote_subst' +delay_variable_subst='$delay_variable_subst' +_LT_CONFIG_STATUS_DECLARATIONS +LTCC='$LTCC' +LTCFLAGS='$LTCFLAGS' +compiler='$compiler_DEFAULT' + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +\$[]1 +_LTECHO_EOF' +} + +# Quote evaled strings. +for var in lt_decl_all_varnames([[ \ +]], lt_decl_quote_varnames); do + case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in + *[[\\\\\\\`\\"\\\$]]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done + +# Double-quote double-evaled strings. +for var in lt_decl_all_varnames([[ \ +]], lt_decl_dquote_varnames); do + case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in + *[[\\\\\\\`\\"\\\$]]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done + +_LT_OUTPUT_LIBTOOL_INIT +]) + +# _LT_GENERATED_FILE_INIT(FILE, [COMMENT]) +# ------------------------------------ +# Generate a child script FILE with all initialization necessary to +# reuse the environment learned by the parent script, and make the +# file executable. If COMMENT is supplied, it is inserted after the +# `#!' sequence but before initialization text begins. After this +# macro, additional text can be appended to FILE to form the body of +# the child script. The macro ends with non-zero status if the +# file could not be fully written (such as if the disk is full). +m4_ifdef([AS_INIT_GENERATED], +[m4_defun([_LT_GENERATED_FILE_INIT],[AS_INIT_GENERATED($@)])], +[m4_defun([_LT_GENERATED_FILE_INIT], +[m4_require([AS_PREPARE])]dnl +[m4_pushdef([AS_MESSAGE_LOG_FD])]dnl +[lt_write_fail=0 +cat >$1 <<_ASEOF || lt_write_fail=1 +#! $SHELL +# Generated by $as_me. +$2 +SHELL=\${CONFIG_SHELL-$SHELL} +export SHELL +_ASEOF +cat >>$1 <<\_ASEOF || lt_write_fail=1 +AS_SHELL_SANITIZE +_AS_PREPARE +exec AS_MESSAGE_FD>&1 +_ASEOF +test $lt_write_fail = 0 && chmod +x $1[]dnl +m4_popdef([AS_MESSAGE_LOG_FD])])])# _LT_GENERATED_FILE_INIT + +# LT_OUTPUT +# --------- +# This macro allows early generation of the libtool script (before +# AC_OUTPUT is called), incase it is used in configure for compilation +# tests. +AC_DEFUN([LT_OUTPUT], +[: ${CONFIG_LT=./config.lt} +AC_MSG_NOTICE([creating $CONFIG_LT]) +_LT_GENERATED_FILE_INIT(["$CONFIG_LT"], +[# Run this file to recreate a libtool stub with the current configuration.]) + +cat >>"$CONFIG_LT" <<\_LTEOF +lt_cl_silent=false +exec AS_MESSAGE_LOG_FD>>config.log +{ + echo + AS_BOX([Running $as_me.]) +} >&AS_MESSAGE_LOG_FD + +lt_cl_help="\ +\`$as_me' creates a local libtool stub from the current configuration, +for use in further configure time tests before the real libtool is +generated. + +Usage: $[0] [[OPTIONS]] + + -h, --help print this help, then exit + -V, --version print version number, then exit + -q, --quiet do not print progress messages + -d, --debug don't remove temporary files + +Report bugs to ." + +lt_cl_version="\ +m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl +m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION]) +configured by $[0], generated by m4_PACKAGE_STRING. + +Copyright (C) 2011 Free Software Foundation, Inc. +This config.lt script is free software; the Free Software Foundation +gives unlimited permision to copy, distribute and modify it." + +while test $[#] != 0 +do + case $[1] in + --version | --v* | -V ) + echo "$lt_cl_version"; exit 0 ;; + --help | --h* | -h ) + echo "$lt_cl_help"; exit 0 ;; + --debug | --d* | -d ) + debug=: ;; + --quiet | --q* | --silent | --s* | -q ) + lt_cl_silent=: ;; + + -*) AC_MSG_ERROR([unrecognized option: $[1] +Try \`$[0] --help' for more information.]) ;; + + *) AC_MSG_ERROR([unrecognized argument: $[1] +Try \`$[0] --help' for more information.]) ;; + esac + shift +done + +if $lt_cl_silent; then + exec AS_MESSAGE_FD>/dev/null +fi +_LTEOF + +cat >>"$CONFIG_LT" <<_LTEOF +_LT_OUTPUT_LIBTOOL_COMMANDS_INIT +_LTEOF + +cat >>"$CONFIG_LT" <<\_LTEOF +AC_MSG_NOTICE([creating $ofile]) +_LT_OUTPUT_LIBTOOL_COMMANDS +AS_EXIT(0) +_LTEOF +chmod +x "$CONFIG_LT" + +# configure is writing to config.log, but config.lt does its own redirection, +# appending to config.log, which fails on DOS, as config.log is still kept +# open by configure. Here we exec the FD to /dev/null, effectively closing +# config.log, so it can be properly (re)opened and appended to by config.lt. +lt_cl_success=: +test "$silent" = yes && + lt_config_lt_args="$lt_config_lt_args --quiet" +exec AS_MESSAGE_LOG_FD>/dev/null +$SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false +exec AS_MESSAGE_LOG_FD>>config.log +$lt_cl_success || AS_EXIT(1) +])# LT_OUTPUT + + +# _LT_CONFIG(TAG) +# --------------- +# If TAG is the built-in tag, create an initial libtool script with a +# default configuration from the untagged config vars. Otherwise add code +# to config.status for appending the configuration named by TAG from the +# matching tagged config vars. +m4_defun([_LT_CONFIG], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +_LT_CONFIG_SAVE_COMMANDS([ + m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl + m4_if(_LT_TAG, [C], [ + # See if we are running on zsh, and set the options which allow our + # commands through without removal of \ escapes. + if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST + fi + + cfgfile="${ofile}T" + trap "$RM \"$cfgfile\"; exit 1" 1 2 15 + $RM "$cfgfile" + + cat <<_LT_EOF >> "$cfgfile" +#! $SHELL + +# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. +# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: +# NOTE: Changes made to this file will be lost: look at ltmain.sh. +# +_LT_COPYING +_LT_LIBTOOL_TAGS + +# ### BEGIN LIBTOOL CONFIG +_LT_LIBTOOL_CONFIG_VARS +_LT_LIBTOOL_TAG_VARS +# ### END LIBTOOL CONFIG + +_LT_EOF + + case $host_os in + aix3*) + cat <<\_LT_EOF >> "$cfgfile" +# AIX sometimes has problems with the GCC collect2 program. For some +# reason, if we set the COLLECT_NAMES environment variable, the problems +# vanish in a puff of smoke. +if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES +fi +_LT_EOF + ;; + esac + + _LT_PROG_LTMAIN + + # We use sed instead of cat because bash on DJGPP gets confused if + # if finds mixed CR/LF and LF-only lines. Since sed operates in + # text mode, it properly converts lines to CR/LF. This bash problem + # is reportedly fixed, but why not run on old versions too? + sed '$q' "$ltmain" >> "$cfgfile" \ + || (rm -f "$cfgfile"; exit 1) + + _LT_PROG_REPLACE_SHELLFNS + + mv -f "$cfgfile" "$ofile" || + (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") + chmod +x "$ofile" +], +[cat <<_LT_EOF >> "$ofile" + +dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded +dnl in a comment (ie after a #). +# ### BEGIN LIBTOOL TAG CONFIG: $1 +_LT_LIBTOOL_TAG_VARS(_LT_TAG) +# ### END LIBTOOL TAG CONFIG: $1 +_LT_EOF +])dnl /m4_if +], +[m4_if([$1], [], [ + PACKAGE='$PACKAGE' + VERSION='$VERSION' + TIMESTAMP='$TIMESTAMP' + RM='$RM' + ofile='$ofile'], []) +])dnl /_LT_CONFIG_SAVE_COMMANDS +])# _LT_CONFIG + + +# LT_SUPPORTED_TAG(TAG) +# --------------------- +# Trace this macro to discover what tags are supported by the libtool +# --tag option, using: +# autoconf --trace 'LT_SUPPORTED_TAG:$1' +AC_DEFUN([LT_SUPPORTED_TAG], []) + + +# C support is built-in for now +m4_define([_LT_LANG_C_enabled], []) +m4_define([_LT_TAGS], []) + + +# LT_LANG(LANG) +# ------------- +# Enable libtool support for the given language if not already enabled. +AC_DEFUN([LT_LANG], +[AC_BEFORE([$0], [LT_OUTPUT])dnl +m4_case([$1], + [C], [_LT_LANG(C)], + [C++], [_LT_LANG(CXX)], + [Go], [_LT_LANG(GO)], + [Java], [_LT_LANG(GCJ)], + [Fortran 77], [_LT_LANG(F77)], + [Fortran], [_LT_LANG(FC)], + [Windows Resource], [_LT_LANG(RC)], + [m4_ifdef([_LT_LANG_]$1[_CONFIG], + [_LT_LANG($1)], + [m4_fatal([$0: unsupported language: "$1"])])])dnl +])# LT_LANG + + +# _LT_LANG(LANGNAME) +# ------------------ +m4_defun([_LT_LANG], +[m4_ifdef([_LT_LANG_]$1[_enabled], [], + [LT_SUPPORTED_TAG([$1])dnl + m4_append([_LT_TAGS], [$1 ])dnl + m4_define([_LT_LANG_]$1[_enabled], [])dnl + _LT_LANG_$1_CONFIG($1)])dnl +])# _LT_LANG + + +m4_ifndef([AC_PROG_GO], [ +# NOTE: This macro has been submitted for inclusion into # +# GNU Autoconf as AC_PROG_GO. When it is available in # +# a released version of Autoconf we should remove this # +# macro and use it instead. # +m4_defun([AC_PROG_GO], +[AC_LANG_PUSH(Go)dnl +AC_ARG_VAR([GOC], [Go compiler command])dnl +AC_ARG_VAR([GOFLAGS], [Go compiler flags])dnl +_AC_ARG_VAR_LDFLAGS()dnl +AC_CHECK_TOOL(GOC, gccgo) +if test -z "$GOC"; then + if test -n "$ac_tool_prefix"; then + AC_CHECK_PROG(GOC, [${ac_tool_prefix}gccgo], [${ac_tool_prefix}gccgo]) + fi +fi +if test -z "$GOC"; then + AC_CHECK_PROG(GOC, gccgo, gccgo, false) +fi +])#m4_defun +])#m4_ifndef + + +# _LT_LANG_DEFAULT_CONFIG +# ----------------------- +m4_defun([_LT_LANG_DEFAULT_CONFIG], +[AC_PROVIDE_IFELSE([AC_PROG_CXX], + [LT_LANG(CXX)], + [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])]) + +AC_PROVIDE_IFELSE([AC_PROG_F77], + [LT_LANG(F77)], + [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])]) + +AC_PROVIDE_IFELSE([AC_PROG_FC], + [LT_LANG(FC)], + [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])]) + +dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal +dnl pulling things in needlessly. +AC_PROVIDE_IFELSE([AC_PROG_GCJ], + [LT_LANG(GCJ)], + [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], + [LT_LANG(GCJ)], + [AC_PROVIDE_IFELSE([LT_PROG_GCJ], + [LT_LANG(GCJ)], + [m4_ifdef([AC_PROG_GCJ], + [m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])]) + m4_ifdef([A][M_PROG_GCJ], + [m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])]) + m4_ifdef([LT_PROG_GCJ], + [m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])]) + +AC_PROVIDE_IFELSE([AC_PROG_GO], + [LT_LANG(GO)], + [m4_define([AC_PROG_GO], defn([AC_PROG_GO])[LT_LANG(GO)])]) + +AC_PROVIDE_IFELSE([LT_PROG_RC], + [LT_LANG(RC)], + [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])]) +])# _LT_LANG_DEFAULT_CONFIG + +# Obsolete macros: +AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)]) +AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)]) +AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)]) +AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)]) +AU_DEFUN([AC_LIBTOOL_RC], [LT_LANG(Windows Resource)]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_CXX], []) +dnl AC_DEFUN([AC_LIBTOOL_F77], []) +dnl AC_DEFUN([AC_LIBTOOL_FC], []) +dnl AC_DEFUN([AC_LIBTOOL_GCJ], []) +dnl AC_DEFUN([AC_LIBTOOL_RC], []) + + +# _LT_TAG_COMPILER +# ---------------- +m4_defun([_LT_TAG_COMPILER], +[AC_REQUIRE([AC_PROG_CC])dnl + +_LT_DECL([LTCC], [CC], [1], [A C compiler])dnl +_LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl +_LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl +_LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC +])# _LT_TAG_COMPILER + + +# _LT_COMPILER_BOILERPLATE +# ------------------------ +# Check for compiler boilerplate output or warnings with +# the simple compiler test code. +m4_defun([_LT_COMPILER_BOILERPLATE], +[m4_require([_LT_DECL_SED])dnl +ac_outfile=conftest.$ac_objext +echo "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$RM conftest* +])# _LT_COMPILER_BOILERPLATE + + +# _LT_LINKER_BOILERPLATE +# ---------------------- +# Check for linker boilerplate output or warnings with +# the simple link test code. +m4_defun([_LT_LINKER_BOILERPLATE], +[m4_require([_LT_DECL_SED])dnl +ac_outfile=conftest.$ac_objext +echo "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$RM -r conftest* +])# _LT_LINKER_BOILERPLATE + +# _LT_REQUIRED_DARWIN_CHECKS +# ------------------------- +m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[ + case $host_os in + rhapsody* | darwin*) + AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:]) + AC_CHECK_TOOL([NMEDIT], [nmedit], [:]) + AC_CHECK_TOOL([LIPO], [lipo], [:]) + AC_CHECK_TOOL([OTOOL], [otool], [:]) + AC_CHECK_TOOL([OTOOL64], [otool64], [:]) + _LT_DECL([], [DSYMUTIL], [1], + [Tool to manipulate archived DWARF debug symbol files on Mac OS X]) + _LT_DECL([], [NMEDIT], [1], + [Tool to change global to local symbols on Mac OS X]) + _LT_DECL([], [LIPO], [1], + [Tool to manipulate fat objects and archives on Mac OS X]) + _LT_DECL([], [OTOOL], [1], + [ldd/readelf like tool for Mach-O binaries on Mac OS X]) + _LT_DECL([], [OTOOL64], [1], + [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4]) + + AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod], + [lt_cv_apple_cc_single_mod=no + if test -z "${LT_MULTI_MODULE}"; then + # By default we will add the -single_module flag. You can override + # by either setting the environment variable LT_MULTI_MODULE + # non-empty at configure time, or by adding -multi_module to the + # link flags. + rm -rf libconftest.dylib* + echo "int foo(void){return 1;}" > conftest.c + echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ +-dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD + $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ + -dynamiclib -Wl,-single_module conftest.c 2>conftest.err + _lt_result=$? + # If there is a non-empty error log, and "single_module" + # appears in it, assume the flag caused a linker warning + if test -s conftest.err && $GREP single_module conftest.err; then + cat conftest.err >&AS_MESSAGE_LOG_FD + # Otherwise, if the output was created with a 0 exit code from + # the compiler, it worked. + elif test -f libconftest.dylib && test $_lt_result -eq 0; then + lt_cv_apple_cc_single_mod=yes + else + cat conftest.err >&AS_MESSAGE_LOG_FD + fi + rm -rf libconftest.dylib* + rm -f conftest.* + fi]) + + AC_CACHE_CHECK([for -exported_symbols_list linker flag], + [lt_cv_ld_exported_symbols_list], + [lt_cv_ld_exported_symbols_list=no + save_LDFLAGS=$LDFLAGS + echo "_main" > conftest.sym + LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" + AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], + [lt_cv_ld_exported_symbols_list=yes], + [lt_cv_ld_exported_symbols_list=no]) + LDFLAGS="$save_LDFLAGS" + ]) + + AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load], + [lt_cv_ld_force_load=no + cat > conftest.c << _LT_EOF +int forced_loaded() { return 2;} +_LT_EOF + echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&AS_MESSAGE_LOG_FD + $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD + echo "$AR cru libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD + $AR cru libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD + echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD + $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD + cat > conftest.c << _LT_EOF +int main() { return 0;} +_LT_EOF + echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD + $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err + _lt_result=$? + if test -s conftest.err && $GREP force_load conftest.err; then + cat conftest.err >&AS_MESSAGE_LOG_FD + elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then + lt_cv_ld_force_load=yes + else + cat conftest.err >&AS_MESSAGE_LOG_FD + fi + rm -f conftest.err libconftest.a conftest conftest.c + rm -rf conftest.dSYM + ]) + case $host_os in + rhapsody* | darwin1.[[012]]) + _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; + darwin1.*) + _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; + darwin*) # darwin 5.x on + # if running on 10.5 or later, the deployment target defaults + # to the OS version, if on x86, and 10.4, the deployment + # target defaults to 10.4. Don't you love it? + case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in + 10.0,*86*-darwin8*|10.0,*-darwin[[91]]*) + _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; + 10.[[012]]*) + _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; + 10.*) + _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; + esac + ;; + esac + if test "$lt_cv_apple_cc_single_mod" = "yes"; then + _lt_dar_single_mod='$single_module' + fi + if test "$lt_cv_ld_exported_symbols_list" = "yes"; then + _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' + else + _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' + fi + if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then + _lt_dsymutil='~$DSYMUTIL $lib || :' + else + _lt_dsymutil= + fi + ;; + esac +]) + + +# _LT_DARWIN_LINKER_FEATURES([TAG]) +# --------------------------------- +# Checks for linker and compiler features on darwin +m4_defun([_LT_DARWIN_LINKER_FEATURES], +[ + m4_require([_LT_REQUIRED_DARWIN_CHECKS]) + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_automatic, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported + if test "$lt_cv_ld_force_load" = "yes"; then + _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' + m4_case([$1], [F77], [_LT_TAGVAR(compiler_needs_object, $1)=yes], + [FC], [_LT_TAGVAR(compiler_needs_object, $1)=yes]) + else + _LT_TAGVAR(whole_archive_flag_spec, $1)='' + fi + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined" + case $cc_basename in + ifort*) _lt_dar_can_shared=yes ;; + *) _lt_dar_can_shared=$GCC ;; + esac + if test "$_lt_dar_can_shared" = "yes"; then + output_verbose_link_cmd=func_echo_all + _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" + _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" + _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" + _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" + m4_if([$1], [CXX], +[ if test "$lt_cv_apple_cc_single_mod" != "yes"; then + _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}" + _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}" + fi +],[]) + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi +]) + +# _LT_SYS_MODULE_PATH_AIX([TAGNAME]) +# ---------------------------------- +# Links a minimal program and checks the executable +# for the system default hardcoded library path. In most cases, +# this is /usr/lib:/lib, but when the MPI compilers are used +# the location of the communication and MPI libs are included too. +# If we don't find anything, use the default library path according +# to the aix ld manual. +# Store the results from the different compilers for each TAGNAME. +# Allow to override them for all tags through lt_cv_aix_libpath. +m4_defun([_LT_SYS_MODULE_PATH_AIX], +[m4_require([_LT_DECL_SED])dnl +if test "${lt_cv_aix_libpath+set}" = set; then + aix_libpath=$lt_cv_aix_libpath +else + AC_CACHE_VAL([_LT_TAGVAR([lt_cv_aix_libpath_], [$1])], + [AC_LINK_IFELSE([AC_LANG_PROGRAM],[ + lt_aix_libpath_sed='[ + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\([^ ]*\) *$/\1/ + p + } + }]' + _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + # Check for a 64-bit object if we didn't find anything. + if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then + _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + fi],[]) + if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then + _LT_TAGVAR([lt_cv_aix_libpath_], [$1])="/usr/lib:/lib" + fi + ]) + aix_libpath=$_LT_TAGVAR([lt_cv_aix_libpath_], [$1]) +fi +])# _LT_SYS_MODULE_PATH_AIX + + +# _LT_SHELL_INIT(ARG) +# ------------------- +m4_define([_LT_SHELL_INIT], +[m4_divert_text([M4SH-INIT], [$1 +])])# _LT_SHELL_INIT + + + +# _LT_PROG_ECHO_BACKSLASH +# ----------------------- +# Find how we can fake an echo command that does not interpret backslash. +# In particular, with Autoconf 2.60 or later we add some code to the start +# of the generated configure script which will find a shell with a builtin +# printf (which we can use as an echo command). +m4_defun([_LT_PROG_ECHO_BACKSLASH], +[ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO +ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO + +AC_MSG_CHECKING([how to print strings]) +# Test print first, because it will be a builtin if present. +if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ + test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then + ECHO='print -r --' +elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then + ECHO='printf %s\n' +else + # Use this function as a fallback that always works. + func_fallback_echo () + { + eval 'cat <<_LTECHO_EOF +$[]1 +_LTECHO_EOF' + } + ECHO='func_fallback_echo' +fi + +# func_echo_all arg... +# Invoke $ECHO with all args, space-separated. +func_echo_all () +{ + $ECHO "$*" +} + +case "$ECHO" in + printf*) AC_MSG_RESULT([printf]) ;; + print*) AC_MSG_RESULT([print -r]) ;; + *) AC_MSG_RESULT([cat]) ;; +esac + +m4_ifdef([_AS_DETECT_SUGGESTED], +[_AS_DETECT_SUGGESTED([ + test -n "${ZSH_VERSION+set}${BASH_VERSION+set}" || ( + ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' + ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO + ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO + PATH=/empty FPATH=/empty; export PATH FPATH + test "X`printf %s $ECHO`" = "X$ECHO" \ + || test "X`print -r -- $ECHO`" = "X$ECHO" )])]) + +_LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts]) +_LT_DECL([], [ECHO], [1], [An echo program that protects backslashes]) +])# _LT_PROG_ECHO_BACKSLASH + + +# _LT_WITH_SYSROOT +# ---------------- +AC_DEFUN([_LT_WITH_SYSROOT], +[AC_MSG_CHECKING([for sysroot]) +AC_ARG_WITH([sysroot], +[ --with-sysroot[=DIR] Search for dependent libraries within DIR + (or the compiler's sysroot if not specified).], +[], [with_sysroot=no]) + +dnl lt_sysroot will always be passed unquoted. We quote it here +dnl in case the user passed a directory name. +lt_sysroot= +case ${with_sysroot} in #( + yes) + if test "$GCC" = yes; then + lt_sysroot=`$CC --print-sysroot 2>/dev/null` + fi + ;; #( + /*) + lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` + ;; #( + no|'') + ;; #( + *) + AC_MSG_RESULT([${with_sysroot}]) + AC_MSG_ERROR([The sysroot must be an absolute path.]) + ;; +esac + + AC_MSG_RESULT([${lt_sysroot:-no}]) +_LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl +[dependent libraries, and in which our libraries should be installed.])]) + +# _LT_ENABLE_LOCK +# --------------- +m4_defun([_LT_ENABLE_LOCK], +[AC_ARG_ENABLE([libtool-lock], + [AS_HELP_STRING([--disable-libtool-lock], + [avoid locking (might break parallel builds)])]) +test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes + +# Some flags need to be propagated to the compiler or linker for good +# libtool support. +case $host in +ia64-*-hpux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.$ac_objext` in + *ELF-32*) + HPUX_IA64_MODE="32" + ;; + *ELF-64*) + HPUX_IA64_MODE="64" + ;; + esac + fi + rm -rf conftest* + ;; +*-*-irix6*) + # Find out which ABI we are using. + echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + if test "$lt_cv_prog_gnu_ld" = yes; then + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -melf32bsmip" + ;; + *N32*) + LD="${LD-ld} -melf32bmipn32" + ;; + *64-bit*) + LD="${LD-ld} -melf64bmip" + ;; + esac + else + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -32" + ;; + *N32*) + LD="${LD-ld} -n32" + ;; + *64-bit*) + LD="${LD-ld} -64" + ;; + esac + fi + fi + rm -rf conftest* + ;; + +x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ +s390*-*linux*|s390*-*tpf*|sparc*-*linux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.o` in + *32-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_i386_fbsd" + ;; + x86_64-*linux*) + LD="${LD-ld} -m elf_i386" + ;; + ppc64-*linux*|powerpc64-*linux*) + LD="${LD-ld} -m elf32ppclinux" + ;; + s390x-*linux*) + LD="${LD-ld} -m elf_s390" + ;; + sparc64-*linux*) + LD="${LD-ld} -m elf32_sparc" + ;; + esac + ;; + *64-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_x86_64_fbsd" + ;; + x86_64-*linux*) + LD="${LD-ld} -m elf_x86_64" + ;; + ppc*-*linux*|powerpc*-*linux*) + LD="${LD-ld} -m elf64ppc" + ;; + s390*-*linux*|s390*-*tpf*) + LD="${LD-ld} -m elf64_s390" + ;; + sparc*-*linux*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; + +*-*-sco3.2v5*) + # On SCO OpenServer 5, we need -belf to get full-featured binaries. + SAVE_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -belf" + AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, + [AC_LANG_PUSH(C) + AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) + AC_LANG_POP]) + if test x"$lt_cv_cc_needs_belf" != x"yes"; then + # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf + CFLAGS="$SAVE_CFLAGS" + fi + ;; +*-*solaris*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.o` in + *64-bit*) + case $lt_cv_prog_gnu_ld in + yes*) + case $host in + i?86-*-solaris*) + LD="${LD-ld} -m elf_x86_64" + ;; + sparc*-*-solaris*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + # GNU ld 2.21 introduced _sol2 emulations. Use them if available. + if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then + LD="${LD-ld}_sol2" + fi + ;; + *) + if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then + LD="${LD-ld} -64" + fi + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; +esac + +need_locks="$enable_libtool_lock" +])# _LT_ENABLE_LOCK + + +# _LT_PROG_AR +# ----------- +m4_defun([_LT_PROG_AR], +[AC_CHECK_TOOLS(AR, [ar], false) +: ${AR=ar} +: ${AR_FLAGS=cru} +_LT_DECL([], [AR], [1], [The archiver]) +_LT_DECL([], [AR_FLAGS], [1], [Flags to create an archive]) + +AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file], + [lt_cv_ar_at_file=no + AC_COMPILE_IFELSE([AC_LANG_PROGRAM], + [echo conftest.$ac_objext > conftest.lst + lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&AS_MESSAGE_LOG_FD' + AC_TRY_EVAL([lt_ar_try]) + if test "$ac_status" -eq 0; then + # Ensure the archiver fails upon bogus file names. + rm -f conftest.$ac_objext libconftest.a + AC_TRY_EVAL([lt_ar_try]) + if test "$ac_status" -ne 0; then + lt_cv_ar_at_file=@ + fi + fi + rm -f conftest.* libconftest.a + ]) + ]) + +if test "x$lt_cv_ar_at_file" = xno; then + archiver_list_spec= +else + archiver_list_spec=$lt_cv_ar_at_file +fi +_LT_DECL([], [archiver_list_spec], [1], + [How to feed a file listing to the archiver]) +])# _LT_PROG_AR + + +# _LT_CMD_OLD_ARCHIVE +# ------------------- +m4_defun([_LT_CMD_OLD_ARCHIVE], +[_LT_PROG_AR + +AC_CHECK_TOOL(STRIP, strip, :) +test -z "$STRIP" && STRIP=: +_LT_DECL([], [STRIP], [1], [A symbol stripping program]) + +AC_CHECK_TOOL(RANLIB, ranlib, :) +test -z "$RANLIB" && RANLIB=: +_LT_DECL([], [RANLIB], [1], + [Commands used to install an old-style archive]) + +# Determine commands to create old-style static archives. +old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' +old_postinstall_cmds='chmod 644 $oldlib' +old_postuninstall_cmds= + +if test -n "$RANLIB"; then + case $host_os in + openbsd*) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" + ;; + *) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" + ;; + esac + old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" +fi + +case $host_os in + darwin*) + lock_old_archive_extraction=yes ;; + *) + lock_old_archive_extraction=no ;; +esac +_LT_DECL([], [old_postinstall_cmds], [2]) +_LT_DECL([], [old_postuninstall_cmds], [2]) +_LT_TAGDECL([], [old_archive_cmds], [2], + [Commands used to build an old-style archive]) +_LT_DECL([], [lock_old_archive_extraction], [0], + [Whether to use a lock for old archive extraction]) +])# _LT_CMD_OLD_ARCHIVE + + +# _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, +# [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) +# ---------------------------------------------------------------- +# Check whether the given compiler option works +AC_DEFUN([_LT_COMPILER_OPTION], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_SED])dnl +AC_CACHE_CHECK([$1], [$2], + [$2=no + m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$3" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&AS_MESSAGE_LOG_FD + echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + $2=yes + fi + fi + $RM conftest* +]) + +if test x"[$]$2" = xyes; then + m4_if([$5], , :, [$5]) +else + m4_if([$6], , :, [$6]) +fi +])# _LT_COMPILER_OPTION + +# Old name: +AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], []) + + +# _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, +# [ACTION-SUCCESS], [ACTION-FAILURE]) +# ---------------------------------------------------- +# Check whether the given linker option works +AC_DEFUN([_LT_LINKER_OPTION], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_SED])dnl +AC_CACHE_CHECK([$1], [$2], + [$2=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $3" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&AS_MESSAGE_LOG_FD + $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + $2=yes + fi + else + $2=yes + fi + fi + $RM -r conftest* + LDFLAGS="$save_LDFLAGS" +]) + +if test x"[$]$2" = xyes; then + m4_if([$4], , :, [$4]) +else + m4_if([$5], , :, [$5]) +fi +])# _LT_LINKER_OPTION + +# Old name: +AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], []) + + +# LT_CMD_MAX_LEN +#--------------- +AC_DEFUN([LT_CMD_MAX_LEN], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +# find the maximum length of command line arguments +AC_MSG_CHECKING([the maximum length of command line arguments]) +AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl + i=0 + teststring="ABCD" + + case $build_os in + msdosdjgpp*) + # On DJGPP, this test can blow up pretty badly due to problems in libc + # (any single argument exceeding 2000 bytes causes a buffer overrun + # during glob expansion). Even if it were fixed, the result of this + # check would be larger than it should be. + lt_cv_sys_max_cmd_len=12288; # 12K is about right + ;; + + gnu*) + # Under GNU Hurd, this test is not required because there is + # no limit to the length of command line arguments. + # Libtool will interpret -1 as no limit whatsoever + lt_cv_sys_max_cmd_len=-1; + ;; + + cygwin* | mingw* | cegcc*) + # On Win9x/ME, this test blows up -- it succeeds, but takes + # about 5 minutes as the teststring grows exponentially. + # Worse, since 9x/ME are not pre-emptively multitasking, + # you end up with a "frozen" computer, even though with patience + # the test eventually succeeds (with a max line length of 256k). + # Instead, let's just punt: use the minimum linelength reported by + # all of the supported platforms: 8192 (on NT/2K/XP). + lt_cv_sys_max_cmd_len=8192; + ;; + + mint*) + # On MiNT this can take a long time and run out of memory. + lt_cv_sys_max_cmd_len=8192; + ;; + + amigaos*) + # On AmigaOS with pdksh, this test takes hours, literally. + # So we just punt and use a minimum line length of 8192. + lt_cv_sys_max_cmd_len=8192; + ;; + + netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) + # This has been around since 386BSD, at least. Likely further. + if test -x /sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` + elif test -x /usr/sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` + else + lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs + fi + # And add a safety zone + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + ;; + + interix*) + # We know the value 262144 and hardcode it with a safety zone (like BSD) + lt_cv_sys_max_cmd_len=196608 + ;; + + os2*) + # The test takes a long time on OS/2. + lt_cv_sys_max_cmd_len=8192 + ;; + + osf*) + # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure + # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not + # nice to cause kernel panics so lets avoid the loop below. + # First set a reasonable default. + lt_cv_sys_max_cmd_len=16384 + # + if test -x /sbin/sysconfig; then + case `/sbin/sysconfig -q proc exec_disable_arg_limit` in + *1*) lt_cv_sys_max_cmd_len=-1 ;; + esac + fi + ;; + sco3.2v5*) + lt_cv_sys_max_cmd_len=102400 + ;; + sysv5* | sco5v6* | sysv4.2uw2*) + kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` + if test -n "$kargmax"; then + lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'` + else + lt_cv_sys_max_cmd_len=32768 + fi + ;; + *) + lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` + if test -n "$lt_cv_sys_max_cmd_len"; then + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + else + # Make teststring a little bigger before we do anything with it. + # a 1K string should be a reasonable start. + for i in 1 2 3 4 5 6 7 8 ; do + teststring=$teststring$teststring + done + SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} + # If test is not a shell built-in, we'll probably end up computing a + # maximum length that is only half of the actual maximum length, but + # we can't tell. + while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \ + = "X$teststring$teststring"; } >/dev/null 2>&1 && + test $i != 17 # 1/2 MB should be enough + do + i=`expr $i + 1` + teststring=$teststring$teststring + done + # Only check the string length outside the loop. + lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` + teststring= + # Add a significant safety factor because C++ compilers can tack on + # massive amounts of additional arguments before passing them to the + # linker. It appears as though 1/2 is a usable value. + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` + fi + ;; + esac +]) +if test -n $lt_cv_sys_max_cmd_len ; then + AC_MSG_RESULT($lt_cv_sys_max_cmd_len) +else + AC_MSG_RESULT(none) +fi +max_cmd_len=$lt_cv_sys_max_cmd_len +_LT_DECL([], [max_cmd_len], [0], + [What is the maximum length of a command?]) +])# LT_CMD_MAX_LEN + +# Old name: +AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], []) + + +# _LT_HEADER_DLFCN +# ---------------- +m4_defun([_LT_HEADER_DLFCN], +[AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl +])# _LT_HEADER_DLFCN + + +# _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, +# ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) +# ---------------------------------------------------------------- +m4_defun([_LT_TRY_DLOPEN_SELF], +[m4_require([_LT_HEADER_DLFCN])dnl +if test "$cross_compiling" = yes; then : + [$4] +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +[#line $LINENO "configure" +#include "confdefs.h" + +#if HAVE_DLFCN_H +#include +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +/* When -fvisbility=hidden is used, assume the code has been annotated + correspondingly for the symbols needed. */ +#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) +int fnord () __attribute__((visibility("default"))); +#endif + +int fnord () { return 42; } +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else + { + if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + else puts (dlerror ()); + } + /* dlclose (self); */ + } + else + puts (dlerror ()); + + return status; +}] +_LT_EOF + if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) $1 ;; + x$lt_dlneed_uscore) $2 ;; + x$lt_dlunknown|x*) $3 ;; + esac + else : + # compilation failed + $3 + fi +fi +rm -fr conftest* +])# _LT_TRY_DLOPEN_SELF + + +# LT_SYS_DLOPEN_SELF +# ------------------ +AC_DEFUN([LT_SYS_DLOPEN_SELF], +[m4_require([_LT_HEADER_DLFCN])dnl +if test "x$enable_dlopen" != xyes; then + enable_dlopen=unknown + enable_dlopen_self=unknown + enable_dlopen_self_static=unknown +else + lt_cv_dlopen=no + lt_cv_dlopen_libs= + + case $host_os in + beos*) + lt_cv_dlopen="load_add_on" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; + + mingw* | pw32* | cegcc*) + lt_cv_dlopen="LoadLibrary" + lt_cv_dlopen_libs= + ;; + + cygwin*) + lt_cv_dlopen="dlopen" + lt_cv_dlopen_libs= + ;; + + darwin*) + # if libdl is installed we need to link against it + AC_CHECK_LIB([dl], [dlopen], + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[ + lt_cv_dlopen="dyld" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ]) + ;; + + *) + AC_CHECK_FUNC([shl_load], + [lt_cv_dlopen="shl_load"], + [AC_CHECK_LIB([dld], [shl_load], + [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"], + [AC_CHECK_FUNC([dlopen], + [lt_cv_dlopen="dlopen"], + [AC_CHECK_LIB([dl], [dlopen], + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], + [AC_CHECK_LIB([svld], [dlopen], + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], + [AC_CHECK_LIB([dld], [dld_link], + [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"]) + ]) + ]) + ]) + ]) + ]) + ;; + esac + + if test "x$lt_cv_dlopen" != xno; then + enable_dlopen=yes + else + enable_dlopen=no + fi + + case $lt_cv_dlopen in + dlopen) + save_CPPFLAGS="$CPPFLAGS" + test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + + save_LDFLAGS="$LDFLAGS" + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + + save_LIBS="$LIBS" + LIBS="$lt_cv_dlopen_libs $LIBS" + + AC_CACHE_CHECK([whether a program can dlopen itself], + lt_cv_dlopen_self, [dnl + _LT_TRY_DLOPEN_SELF( + lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, + lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) + ]) + + if test "x$lt_cv_dlopen_self" = xyes; then + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" + AC_CACHE_CHECK([whether a statically linked program can dlopen itself], + lt_cv_dlopen_self_static, [dnl + _LT_TRY_DLOPEN_SELF( + lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, + lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) + ]) + fi + + CPPFLAGS="$save_CPPFLAGS" + LDFLAGS="$save_LDFLAGS" + LIBS="$save_LIBS" + ;; + esac + + case $lt_cv_dlopen_self in + yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; + *) enable_dlopen_self=unknown ;; + esac + + case $lt_cv_dlopen_self_static in + yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; + *) enable_dlopen_self_static=unknown ;; + esac +fi +_LT_DECL([dlopen_support], [enable_dlopen], [0], + [Whether dlopen is supported]) +_LT_DECL([dlopen_self], [enable_dlopen_self], [0], + [Whether dlopen of programs is supported]) +_LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0], + [Whether dlopen of statically linked programs is supported]) +])# LT_SYS_DLOPEN_SELF + +# Old name: +AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], []) + + +# _LT_COMPILER_C_O([TAGNAME]) +# --------------------------- +# Check to see if options -c and -o are simultaneously supported by compiler. +# This macro does not hard code the compiler like AC_PROG_CC_C_O. +m4_defun([_LT_COMPILER_C_O], +[m4_require([_LT_DECL_SED])dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_TAG_COMPILER])dnl +AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], + [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)], + [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&AS_MESSAGE_LOG_FD + echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes + fi + fi + chmod u+w . 2>&AS_MESSAGE_LOG_FD + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* +]) +_LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1], + [Does compiler simultaneously support -c and -o options?]) +])# _LT_COMPILER_C_O + + +# _LT_COMPILER_FILE_LOCKS([TAGNAME]) +# ---------------------------------- +# Check to see if we can do hard links to lock some files if needed +m4_defun([_LT_COMPILER_FILE_LOCKS], +[m4_require([_LT_ENABLE_LOCK])dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +_LT_COMPILER_C_O([$1]) + +hard_links="nottested" +if test "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + AC_MSG_CHECKING([if we can lock with hard links]) + hard_links=yes + $RM conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + AC_MSG_RESULT([$hard_links]) + if test "$hard_links" = no; then + AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe]) + need_locks=warn + fi +else + need_locks=no +fi +_LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?]) +])# _LT_COMPILER_FILE_LOCKS + + +# _LT_CHECK_OBJDIR +# ---------------- +m4_defun([_LT_CHECK_OBJDIR], +[AC_CACHE_CHECK([for objdir], [lt_cv_objdir], +[rm -f .libs 2>/dev/null +mkdir .libs 2>/dev/null +if test -d .libs; then + lt_cv_objdir=.libs +else + # MS-DOS does not allow filenames that begin with a dot. + lt_cv_objdir=_libs +fi +rmdir .libs 2>/dev/null]) +objdir=$lt_cv_objdir +_LT_DECL([], [objdir], [0], + [The name of the directory that contains temporary libtool files])dnl +m4_pattern_allow([LT_OBJDIR])dnl +AC_DEFINE_UNQUOTED(LT_OBJDIR, "$lt_cv_objdir/", + [Define to the sub-directory in which libtool stores uninstalled libraries.]) +])# _LT_CHECK_OBJDIR + + +# _LT_LINKER_HARDCODE_LIBPATH([TAGNAME]) +# -------------------------------------- +# Check hardcoding attributes. +m4_defun([_LT_LINKER_HARDCODE_LIBPATH], +[AC_MSG_CHECKING([how to hardcode library paths into programs]) +_LT_TAGVAR(hardcode_action, $1)= +if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" || + test -n "$_LT_TAGVAR(runpath_var, $1)" || + test "X$_LT_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then + + # We can hardcode non-existent directories. + if test "$_LT_TAGVAR(hardcode_direct, $1)" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" != no && + test "$_LT_TAGVAR(hardcode_minus_L, $1)" != no; then + # Linking always hardcodes the temporary library directory. + _LT_TAGVAR(hardcode_action, $1)=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + _LT_TAGVAR(hardcode_action, $1)=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + _LT_TAGVAR(hardcode_action, $1)=unsupported +fi +AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)]) + +if test "$_LT_TAGVAR(hardcode_action, $1)" = relink || + test "$_LT_TAGVAR(inherit_rpath, $1)" = yes; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi +_LT_TAGDECL([], [hardcode_action], [0], + [How to hardcode a shared library path into an executable]) +])# _LT_LINKER_HARDCODE_LIBPATH + + +# _LT_CMD_STRIPLIB +# ---------------- +m4_defun([_LT_CMD_STRIPLIB], +[m4_require([_LT_DECL_EGREP]) +striplib= +old_striplib= +AC_MSG_CHECKING([whether stripping libraries is possible]) +if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then + test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" + test -z "$striplib" && striplib="$STRIP --strip-unneeded" + AC_MSG_RESULT([yes]) +else +# FIXME - insert some real tests, host_os isn't really good enough + case $host_os in + darwin*) + if test -n "$STRIP" ; then + striplib="$STRIP -x" + old_striplib="$STRIP -S" + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + fi + ;; + *) + AC_MSG_RESULT([no]) + ;; + esac +fi +_LT_DECL([], [old_striplib], [1], [Commands to strip libraries]) +_LT_DECL([], [striplib], [1]) +])# _LT_CMD_STRIPLIB + + +# _LT_SYS_DYNAMIC_LINKER([TAG]) +# ----------------------------- +# PORTME Fill in your ld.so characteristics +m4_defun([_LT_SYS_DYNAMIC_LINKER], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_OBJDUMP])dnl +m4_require([_LT_DECL_SED])dnl +m4_require([_LT_CHECK_SHELL_FEATURES])dnl +AC_MSG_CHECKING([dynamic linker characteristics]) +m4_if([$1], + [], [ +if test "$GCC" = yes; then + case $host_os in + darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; + *) lt_awk_arg="/^libraries:/" ;; + esac + case $host_os in + mingw* | cegcc*) lt_sed_strip_eq="s,=\([[A-Za-z]]:\),\1,g" ;; + *) lt_sed_strip_eq="s,=/,/,g" ;; + esac + lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` + case $lt_search_path_spec in + *\;*) + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` + ;; + *) + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` + ;; + esac + # Ok, now we have the path, separated by spaces, we can step through it + # and add multilib dir if necessary. + lt_tmp_lt_search_path_spec= + lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` + for lt_sys_path in $lt_search_path_spec; do + if test -d "$lt_sys_path/$lt_multi_os_dir"; then + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" + else + test -d "$lt_sys_path" && \ + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" + fi + done + lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' +BEGIN {RS=" "; FS="/|\n";} { + lt_foo=""; + lt_count=0; + for (lt_i = NF; lt_i > 0; lt_i--) { + if ($lt_i != "" && $lt_i != ".") { + if ($lt_i == "..") { + lt_count++; + } else { + if (lt_count == 0) { + lt_foo="/" $lt_i lt_foo; + } else { + lt_count--; + } + } + } + } + if (lt_foo != "") { lt_freq[[lt_foo]]++; } + if (lt_freq[[lt_foo]] == 1) { print lt_foo; } +}'` + # AWK program above erroneously prepends '/' to C:/dos/paths + # for these hosts. + case $host_os in + mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ + $SED 's,/\([[A-Za-z]]:\),\1,g'` ;; + esac + sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` +else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +fi]) +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=".so" +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +case $host_os in +aix3*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}${shared_ext}$major' + ;; + +aix[[4-9]]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[[01]] | aix4.[[01]].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # AIX (on Power*) has no versioning support, so currently we can not hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}${shared_ext}$major' + fi + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + case $host_cpu in + powerpc) + # Since July 2007 AmigaOS4 officially supports .so libraries. + # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + ;; + m68k) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + esac + ;; + +beos*) + library_names_spec='${libname}${shared_ext}' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[[45]]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32* | cegcc*) + version_type=windows + shrext_cmds=".dll" + need_version=no + need_lib_prefix=no + + case $GCC,$cc_basename in + yes,*) + # gcc + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; + fi' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' +m4_if([$1], [],[ + sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"]) + ;; + mingw* | cegcc*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' + ;; + esac + dynamic_linker='Win32 ld.exe' + ;; + + *,cl*) + # Native MSVC + libname_spec='$name' + soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' + library_names_spec='${libname}.dll.lib' + + case $build_os in + mingw*) + sys_lib_search_path_spec= + lt_save_ifs=$IFS + IFS=';' + for lt_path in $LIB + do + IFS=$lt_save_ifs + # Let DOS variable expansion print the short 8.3 style file name. + lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` + sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" + done + IFS=$lt_save_ifs + # Convert to MSYS style. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([[a-zA-Z]]\\):| /\\1|g' -e 's|^ ||'` + ;; + cygwin*) + # Convert to unix form, then to dos form, then back to unix form + # but this time dos style (no spaces!) so that the unix form looks + # like /cygdrive/c/PROGRA~1:/cygdr... + sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` + sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` + sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + ;; + *) + sys_lib_search_path_spec="$LIB" + if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then + # It is most probably a Windows format PATH. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + # FIXME: find the short name or the path components, as spaces are + # common. (e.g. "Program Files" -> "PROGRA~1") + ;; + esac + + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + dynamic_linker='Win32 link.exe' + ;; + + *) + # Assume MSVC wrapper + library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib' + dynamic_linker='Win32 ld.exe' + ;; + esac + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' + soname_spec='${libname}${release}${major}$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' +m4_if([$1], [],[ + sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"]) + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[[23]].*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2.*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[[01]]* | freebsdelf3.[[01]]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \ + freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + *) # from 4.6 on, and DragonFly + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + esac + ;; + +gnu*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +haiku*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + dynamic_linker="$host_os runtime_loader" + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LIBRARY_PATH + shlibpath_overrides_runpath=yes + sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + if test "X$HPUX_IA64_MODE" = X32; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + fi + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555, ... + postinstall_cmds='chmod 555 $lib' + # or fails outright, so override atomically: + install_override_mode=555 + ;; + +interix[[3-9]]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test "$lt_cv_prog_gnu_ld" = yes; then + version_type=linux # correct to gnu/linux during the next big refactor + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +# This must be glibc/ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + + # Some binutils ld are patched to set DT_RUNPATH + AC_CACHE_VAL([lt_cv_shlibpath_overrides_runpath], + [lt_cv_shlibpath_overrides_runpath=no + save_LDFLAGS=$LDFLAGS + save_libdir=$libdir + eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \ + LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\"" + AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], + [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null], + [lt_cv_shlibpath_overrides_runpath=yes])]) + LDFLAGS=$save_LDFLAGS + libdir=$save_libdir + ]) + shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath + + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Add ABI-specific directories to the system library path. + sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /lib /usr/lib" + + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec $lt_ld_extra" + + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +*nto* | *qnx*) + version_type=qnx + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='ldqnx.so' + ;; + +openbsd*) + version_type=sunos + sys_lib_dlsearch_path_spec="/usr/lib" + need_lib_prefix=no + # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. + case $host_os in + openbsd3.3 | openbsd3.3.*) need_version=yes ;; + *) need_version=no ;; + esac + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case $host_os in + openbsd2.[[89]] | openbsd2.[[89]].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi + ;; + +os2*) + libname_spec='$name' + shrext_cmds=".dll" + need_lib_prefix=no + library_names_spec='$libname${shared_ext} $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + +rdos*) + dynamic_linker=no + ;; + +solaris*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.3*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' + soname_spec='$libname${shared_ext}.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=freebsd-elf + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + if test "$with_gnu_ld" = yes; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + +tpf*) + # TPF is a cross-target only. Preferred cross-host = GNU/Linux. + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +uts4*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +AC_MSG_RESULT([$dynamic_linker]) +test "$dynamic_linker" = no && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then + sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" +fi +if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then + sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" +fi + +_LT_DECL([], [variables_saved_for_relink], [1], + [Variables whose values should be saved in libtool wrapper scripts and + restored at link time]) +_LT_DECL([], [need_lib_prefix], [0], + [Do we need the "lib" prefix for modules?]) +_LT_DECL([], [need_version], [0], [Do we need a version for libraries?]) +_LT_DECL([], [version_type], [0], [Library versioning type]) +_LT_DECL([], [runpath_var], [0], [Shared library runtime path variable]) +_LT_DECL([], [shlibpath_var], [0],[Shared library path variable]) +_LT_DECL([], [shlibpath_overrides_runpath], [0], + [Is shlibpath searched before the hard-coded library search path?]) +_LT_DECL([], [libname_spec], [1], [Format of library name prefix]) +_LT_DECL([], [library_names_spec], [1], + [[List of archive names. First name is the real one, the rest are links. + The last name is the one that the linker finds with -lNAME]]) +_LT_DECL([], [soname_spec], [1], + [[The coded name of the library, if different from the real name]]) +_LT_DECL([], [install_override_mode], [1], + [Permission mode override for installation of shared libraries]) +_LT_DECL([], [postinstall_cmds], [2], + [Command to use after installation of a shared archive]) +_LT_DECL([], [postuninstall_cmds], [2], + [Command to use after uninstallation of a shared archive]) +_LT_DECL([], [finish_cmds], [2], + [Commands used to finish a libtool library installation in a directory]) +_LT_DECL([], [finish_eval], [1], + [[As "finish_cmds", except a single script fragment to be evaled but + not shown]]) +_LT_DECL([], [hardcode_into_libs], [0], + [Whether we should hardcode library paths into libraries]) +_LT_DECL([], [sys_lib_search_path_spec], [2], + [Compile-time system search path for libraries]) +_LT_DECL([], [sys_lib_dlsearch_path_spec], [2], + [Run-time system search path for libraries]) +])# _LT_SYS_DYNAMIC_LINKER + + +# _LT_PATH_TOOL_PREFIX(TOOL) +# -------------------------- +# find a file program which can recognize shared library +AC_DEFUN([_LT_PATH_TOOL_PREFIX], +[m4_require([_LT_DECL_EGREP])dnl +AC_MSG_CHECKING([for $1]) +AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, +[case $MAGIC_CMD in +[[\\/*] | ?:[\\/]*]) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD="$MAGIC_CMD" + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR +dnl $ac_dummy forces splitting on constant user-supplied paths. +dnl POSIX.2 word splitting is done only on the output of word expansions, +dnl not every word. This closes a longstanding sh security hole. + ac_dummy="m4_if([$2], , $PATH, [$2])" + for ac_dir in $ac_dummy; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$1; then + lt_cv_path_MAGIC_CMD="$ac_dir/$1" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <<_LT_EOF 1>&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +_LT_EOF + fi ;; + esac + fi + break + fi + done + IFS="$lt_save_ifs" + MAGIC_CMD="$lt_save_MAGIC_CMD" + ;; +esac]) +MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +if test -n "$MAGIC_CMD"; then + AC_MSG_RESULT($MAGIC_CMD) +else + AC_MSG_RESULT(no) +fi +_LT_DECL([], [MAGIC_CMD], [0], + [Used to examine libraries when file_magic_cmd begins with "file"])dnl +])# _LT_PATH_TOOL_PREFIX + +# Old name: +AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], []) + + +# _LT_PATH_MAGIC +# -------------- +# find a file program which can recognize a shared library +m4_defun([_LT_PATH_MAGIC], +[_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) +if test -z "$lt_cv_path_MAGIC_CMD"; then + if test -n "$ac_tool_prefix"; then + _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) + else + MAGIC_CMD=: + fi +fi +])# _LT_PATH_MAGIC + + +# LT_PATH_LD +# ---------- +# find the pathname to the GNU or non-GNU linker +AC_DEFUN([LT_PATH_LD], +[AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +m4_require([_LT_DECL_SED])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_PROG_ECHO_BACKSLASH])dnl + +AC_ARG_WITH([gnu-ld], + [AS_HELP_STRING([--with-gnu-ld], + [assume the C compiler uses GNU ld @<:@default=no@:>@])], + [test "$withval" = no || with_gnu_ld=yes], + [with_gnu_ld=no])dnl + +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + AC_MSG_CHECKING([for ld used by $CC]) + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [[\\/]]* | ?:[[\\/]]*) + re_direlt='/[[^/]][[^/]]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` + while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do + ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + AC_MSG_CHECKING([for GNU ld]) +else + AC_MSG_CHECKING([for non-GNU ld]) +fi +AC_CACHE_VAL(lt_cv_path_LD, +[if test -z "$LD"; then + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 &1 /dev/null 2>&1; then + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + else + # Keep this pattern in sync with the one in func_win32_libid. + lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' + lt_cv_file_magic_cmd='$OBJDUMP -f' + fi + ;; + +cegcc*) + # use the weaker test based on 'objdump'. See mingw*. + lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' + lt_cv_file_magic_cmd='$OBJDUMP -f' + ;; + +darwin* | rhapsody*) + lt_cv_deplibs_check_method=pass_all + ;; + +freebsd* | dragonfly*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + case $host_cpu in + i*86 ) + # Not sure whether the presence of OpenBSD here was a mistake. + # Let's accept both of them until this is cleared up. + lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` + ;; + esac + else + lt_cv_deplibs_check_method=pass_all + fi + ;; + +gnu*) + lt_cv_deplibs_check_method=pass_all + ;; + +haiku*) + lt_cv_deplibs_check_method=pass_all + ;; + +hpux10.20* | hpux11*) + lt_cv_file_magic_cmd=/usr/bin/file + case $host_cpu in + ia64*) + lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' + lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so + ;; + hppa*64*) + [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]'] + lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl + ;; + *) + lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]]\.[[0-9]]) shared library' + lt_cv_file_magic_test_file=/usr/lib/libc.sl + ;; + esac + ;; + +interix[[3-9]]*) + # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$' + ;; + +irix5* | irix6* | nonstopux*) + case $LD in + *-32|*"-32 ") libmagic=32-bit;; + *-n32|*"-n32 ") libmagic=N32;; + *-64|*"-64 ") libmagic=64-bit;; + *) libmagic=never-match;; + esac + lt_cv_deplibs_check_method=pass_all + ;; + +# This must be glibc/ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu) + lt_cv_deplibs_check_method=pass_all + ;; + +netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' + fi + ;; + +newos6*) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=/usr/lib/libnls.so + ;; + +*nto* | *qnx*) + lt_cv_deplibs_check_method=pass_all + ;; + +openbsd*) + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' + fi + ;; + +osf3* | osf4* | osf5*) + lt_cv_deplibs_check_method=pass_all + ;; + +rdos*) + lt_cv_deplibs_check_method=pass_all + ;; + +solaris*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv4 | sysv4.3*) + case $host_vendor in + motorola) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` + ;; + ncr) + lt_cv_deplibs_check_method=pass_all + ;; + sequent) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' + ;; + sni) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" + lt_cv_file_magic_test_file=/lib/libc.so + ;; + siemens) + lt_cv_deplibs_check_method=pass_all + ;; + pc) + lt_cv_deplibs_check_method=pass_all + ;; + esac + ;; + +tpf*) + lt_cv_deplibs_check_method=pass_all + ;; +esac +]) + +file_magic_glob= +want_nocaseglob=no +if test "$build" = "$host"; then + case $host_os in + mingw* | pw32*) + if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then + want_nocaseglob=yes + else + file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[[\1]]\/[[\1]]\/g;/g"` + fi + ;; + esac +fi + +file_magic_cmd=$lt_cv_file_magic_cmd +deplibs_check_method=$lt_cv_deplibs_check_method +test -z "$deplibs_check_method" && deplibs_check_method=unknown + +_LT_DECL([], [deplibs_check_method], [1], + [Method to check whether dependent libraries are shared objects]) +_LT_DECL([], [file_magic_cmd], [1], + [Command to use when deplibs_check_method = "file_magic"]) +_LT_DECL([], [file_magic_glob], [1], + [How to find potential files when deplibs_check_method = "file_magic"]) +_LT_DECL([], [want_nocaseglob], [1], + [Find potential files using nocaseglob when deplibs_check_method = "file_magic"]) +])# _LT_CHECK_MAGIC_METHOD + + +# LT_PATH_NM +# ---------- +# find the pathname to a BSD- or MS-compatible name lister +AC_DEFUN([LT_PATH_NM], +[AC_REQUIRE([AC_PROG_CC])dnl +AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM, +[if test -n "$NM"; then + # Let the user override the test. + lt_cv_path_NM="$NM" +else + lt_nm_to_check="${ac_tool_prefix}nm" + if test -n "$ac_tool_prefix" && test "$build" = "$host"; then + lt_nm_to_check="$lt_nm_to_check nm" + fi + for lt_tmp_nm in $lt_nm_to_check; do + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + tmp_nm="$ac_dir/$lt_tmp_nm" + if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then + # Check to see if the nm accepts a BSD-compat flag. + # Adding the `sed 1q' prevents false positives on HP-UX, which says: + # nm: unknown option "B" ignored + # Tru64's nm complains that /dev/null is an invalid object file + case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in + */dev/null* | *'Invalid file or object type'*) + lt_cv_path_NM="$tmp_nm -B" + break + ;; + *) + case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in + */dev/null*) + lt_cv_path_NM="$tmp_nm -p" + break + ;; + *) + lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but + continue # so that we can try to find one that supports BSD flags + ;; + esac + ;; + esac + fi + done + IFS="$lt_save_ifs" + done + : ${lt_cv_path_NM=no} +fi]) +if test "$lt_cv_path_NM" != "no"; then + NM="$lt_cv_path_NM" +else + # Didn't find any BSD compatible name lister, look for dumpbin. + if test -n "$DUMPBIN"; then : + # Let the user override the test. + else + AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :) + case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in + *COFF*) + DUMPBIN="$DUMPBIN -symbols" + ;; + *) + DUMPBIN=: + ;; + esac + fi + AC_SUBST([DUMPBIN]) + if test "$DUMPBIN" != ":"; then + NM="$DUMPBIN" + fi +fi +test -z "$NM" && NM=nm +AC_SUBST([NM]) +_LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl + +AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface], + [lt_cv_nm_interface="BSD nm" + echo "int some_variable = 0;" > conftest.$ac_ext + (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$ac_compile" 2>conftest.err) + cat conftest.err >&AS_MESSAGE_LOG_FD + (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD) + (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) + cat conftest.err >&AS_MESSAGE_LOG_FD + (eval echo "\"\$as_me:$LINENO: output\"" >&AS_MESSAGE_LOG_FD) + cat conftest.out >&AS_MESSAGE_LOG_FD + if $GREP 'External.*some_variable' conftest.out > /dev/null; then + lt_cv_nm_interface="MS dumpbin" + fi + rm -f conftest*]) +])# LT_PATH_NM + +# Old names: +AU_ALIAS([AM_PROG_NM], [LT_PATH_NM]) +AU_ALIAS([AC_PROG_NM], [LT_PATH_NM]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AM_PROG_NM], []) +dnl AC_DEFUN([AC_PROG_NM], []) + +# _LT_CHECK_SHAREDLIB_FROM_LINKLIB +# -------------------------------- +# how to determine the name of the shared library +# associated with a specific link library. +# -- PORTME fill in with the dynamic library characteristics +m4_defun([_LT_CHECK_SHAREDLIB_FROM_LINKLIB], +[m4_require([_LT_DECL_EGREP]) +m4_require([_LT_DECL_OBJDUMP]) +m4_require([_LT_DECL_DLLTOOL]) +AC_CACHE_CHECK([how to associate runtime and link libraries], +lt_cv_sharedlib_from_linklib_cmd, +[lt_cv_sharedlib_from_linklib_cmd='unknown' + +case $host_os in +cygwin* | mingw* | pw32* | cegcc*) + # two different shell functions defined in ltmain.sh + # decide which to use based on capabilities of $DLLTOOL + case `$DLLTOOL --help 2>&1` in + *--identify-strict*) + lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib + ;; + *) + lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback + ;; + esac + ;; +*) + # fallback: assume linklib IS sharedlib + lt_cv_sharedlib_from_linklib_cmd="$ECHO" + ;; +esac +]) +sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd +test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO + +_LT_DECL([], [sharedlib_from_linklib_cmd], [1], + [Command to associate shared and link libraries]) +])# _LT_CHECK_SHAREDLIB_FROM_LINKLIB + + +# _LT_PATH_MANIFEST_TOOL +# ---------------------- +# locate the manifest tool +m4_defun([_LT_PATH_MANIFEST_TOOL], +[AC_CHECK_TOOL(MANIFEST_TOOL, mt, :) +test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt +AC_CACHE_CHECK([if $MANIFEST_TOOL is a manifest tool], [lt_cv_path_mainfest_tool], + [lt_cv_path_mainfest_tool=no + echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&AS_MESSAGE_LOG_FD + $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out + cat conftest.err >&AS_MESSAGE_LOG_FD + if $GREP 'Manifest Tool' conftest.out > /dev/null; then + lt_cv_path_mainfest_tool=yes + fi + rm -f conftest*]) +if test "x$lt_cv_path_mainfest_tool" != xyes; then + MANIFEST_TOOL=: +fi +_LT_DECL([], [MANIFEST_TOOL], [1], [Manifest tool])dnl +])# _LT_PATH_MANIFEST_TOOL + + +# LT_LIB_M +# -------- +# check for math library +AC_DEFUN([LT_LIB_M], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +LIBM= +case $host in +*-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-pw32* | *-*-darwin*) + # These system don't have libm, or don't need it + ;; +*-ncr-sysv4.3*) + AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") + AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") + ;; +*) + AC_CHECK_LIB(m, cos, LIBM="-lm") + ;; +esac +AC_SUBST([LIBM]) +])# LT_LIB_M + +# Old name: +AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_CHECK_LIBM], []) + + +# _LT_COMPILER_NO_RTTI([TAGNAME]) +# ------------------------------- +m4_defun([_LT_COMPILER_NO_RTTI], +[m4_require([_LT_TAG_COMPILER])dnl + +_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= + +if test "$GCC" = yes; then + case $cc_basename in + nvcc*) + _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -Xcompiler -fno-builtin' ;; + *) + _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' ;; + esac + + _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], + lt_cv_prog_compiler_rtti_exceptions, + [-fno-rtti -fno-exceptions], [], + [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) +fi +_LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1], + [Compiler flag to turn off builtin functions]) +])# _LT_COMPILER_NO_RTTI + + +# _LT_CMD_GLOBAL_SYMBOLS +# ---------------------- +m4_defun([_LT_CMD_GLOBAL_SYMBOLS], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([AC_PROG_AWK])dnl +AC_REQUIRE([LT_PATH_NM])dnl +AC_REQUIRE([LT_PATH_LD])dnl +m4_require([_LT_DECL_SED])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_TAG_COMPILER])dnl + +# Check for command to grab the raw symbol name followed by C symbol from nm. +AC_MSG_CHECKING([command to parse $NM output from $compiler object]) +AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], +[ +# These are sane defaults that work on at least a few old systems. +# [They come from Ultrix. What could be older than Ultrix?!! ;)] + +# Character class describing NM global symbol codes. +symcode='[[BCDEGRST]]' + +# Regexp to match symbols that can be accessed directly from C. +sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' + +# Define system-specific variables. +case $host_os in +aix*) + symcode='[[BCDT]]' + ;; +cygwin* | mingw* | pw32* | cegcc*) + symcode='[[ABCDGISTW]]' + ;; +hpux*) + if test "$host_cpu" = ia64; then + symcode='[[ABCDEGRST]]' + fi + ;; +irix* | nonstopux*) + symcode='[[BCDEGRST]]' + ;; +osf*) + symcode='[[BCDEGQRST]]' + ;; +solaris*) + symcode='[[BDRT]]' + ;; +sco3.2v5*) + symcode='[[DT]]' + ;; +sysv4.2uw2*) + symcode='[[DT]]' + ;; +sysv5* | sco5v6* | unixware* | OpenUNIX*) + symcode='[[ABDT]]' + ;; +sysv4) + symcode='[[DFNSTU]]' + ;; +esac + +# If we're using GNU nm, then use its standard symbol codes. +case `$NM -V 2>&1` in +*GNU* | *'with BFD'*) + symcode='[[ABCDGIRSTW]]' ;; +esac + +# Transform an extracted symbol line into a proper C declaration. +# Some systems (esp. on ia64) link data and code symbols differently, +# so use this general approach. +lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" + +# Transform an extracted symbol line into symbol name and symbol address +lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p'" +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \(lib[[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"lib\2\", (void *) \&\2},/p'" + +# Handle CRLF in mingw tool chain +opt_cr= +case $build_os in +mingw*) + opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp + ;; +esac + +# Try without a prefix underscore, then with it. +for ac_symprfx in "" "_"; do + + # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. + symxfrm="\\1 $ac_symprfx\\2 \\2" + + # Write the raw and C identifiers. + if test "$lt_cv_nm_interface" = "MS dumpbin"; then + # Fake it for dumpbin and say T for any non-static function + # and D for any global variable. + # Also find C++ and __fastcall symbols from MSVC++, + # which start with @ or ?. + lt_cv_sys_global_symbol_pipe="$AWK ['"\ +" {last_section=section; section=\$ 3};"\ +" /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ +" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ +" \$ 0!~/External *\|/{next};"\ +" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ +" {if(hide[section]) next};"\ +" {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ +" {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ +" s[1]~/^[@?]/{print s[1], s[1]; next};"\ +" s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ +" ' prfx=^$ac_symprfx]" + else + lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" + fi + lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" + + # Check to see that the pipe works correctly. + pipe_works=no + + rm -f conftest* + cat > conftest.$ac_ext <<_LT_EOF +#ifdef __cplusplus +extern "C" { +#endif +char nm_test_var; +void nm_test_func(void); +void nm_test_func(void){} +#ifdef __cplusplus +} +#endif +int main(){nm_test_var='a';nm_test_func();return(0);} +_LT_EOF + + if AC_TRY_EVAL(ac_compile); then + # Now try to grab the symbols. + nlist=conftest.nm + if AC_TRY_EVAL(NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) && test -s "$nlist"; then + # Try sorting and uniquifying the output. + if sort "$nlist" | uniq > "$nlist"T; then + mv -f "$nlist"T "$nlist" + else + rm -f "$nlist"T + fi + + # Make sure that we snagged all the symbols we need. + if $GREP ' nm_test_var$' "$nlist" >/dev/null; then + if $GREP ' nm_test_func$' "$nlist" >/dev/null; then + cat <<_LT_EOF > conftest.$ac_ext +/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ +#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) +/* DATA imports from DLLs on WIN32 con't be const, because runtime + relocations are performed -- see ld's documentation on pseudo-relocs. */ +# define LT@&t@_DLSYM_CONST +#elif defined(__osf__) +/* This system does not cope well with relocations in const data. */ +# define LT@&t@_DLSYM_CONST +#else +# define LT@&t@_DLSYM_CONST const +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +_LT_EOF + # Now generate the symbol file. + eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' + + cat <<_LT_EOF >> conftest.$ac_ext + +/* The mapping between symbol names and symbols. */ +LT@&t@_DLSYM_CONST struct { + const char *name; + void *address; +} +lt__PROGRAM__LTX_preloaded_symbols[[]] = +{ + { "@PROGRAM@", (void *) 0 }, +_LT_EOF + $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext + cat <<\_LT_EOF >> conftest.$ac_ext + {0, (void *) 0} +}; + +/* This works around a problem in FreeBSD linker */ +#ifdef FREEBSD_WORKAROUND +static const void *lt_preloaded_setup() { + return lt__PROGRAM__LTX_preloaded_symbols; +} +#endif + +#ifdef __cplusplus +} +#endif +_LT_EOF + # Now try linking the two files. + mv conftest.$ac_objext conftstm.$ac_objext + lt_globsym_save_LIBS=$LIBS + lt_globsym_save_CFLAGS=$CFLAGS + LIBS="conftstm.$ac_objext" + CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" + if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then + pipe_works=yes + fi + LIBS=$lt_globsym_save_LIBS + CFLAGS=$lt_globsym_save_CFLAGS + else + echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD + fi + else + echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD + fi + else + echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD + fi + else + echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD + cat conftest.$ac_ext >&5 + fi + rm -rf conftest* conftst* + + # Do not use the global_symbol_pipe unless it works. + if test "$pipe_works" = yes; then + break + else + lt_cv_sys_global_symbol_pipe= + fi +done +]) +if test -z "$lt_cv_sys_global_symbol_pipe"; then + lt_cv_sys_global_symbol_to_cdecl= +fi +if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then + AC_MSG_RESULT(failed) +else + AC_MSG_RESULT(ok) +fi + +# Response file support. +if test "$lt_cv_nm_interface" = "MS dumpbin"; then + nm_file_list_spec='@' +elif $NM --help 2>/dev/null | grep '[[@]]FILE' >/dev/null; then + nm_file_list_spec='@' +fi + +_LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1], + [Take the output of nm and produce a listing of raw symbols and C names]) +_LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1], + [Transform the output of nm in a proper C declaration]) +_LT_DECL([global_symbol_to_c_name_address], + [lt_cv_sys_global_symbol_to_c_name_address], [1], + [Transform the output of nm in a C name address pair]) +_LT_DECL([global_symbol_to_c_name_address_lib_prefix], + [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1], + [Transform the output of nm in a C name address pair when lib prefix is needed]) +_LT_DECL([], [nm_file_list_spec], [1], + [Specify filename containing input files for $NM]) +]) # _LT_CMD_GLOBAL_SYMBOLS + + +# _LT_COMPILER_PIC([TAGNAME]) +# --------------------------- +m4_defun([_LT_COMPILER_PIC], +[m4_require([_LT_TAG_COMPILER])dnl +_LT_TAGVAR(lt_prog_compiler_wl, $1)= +_LT_TAGVAR(lt_prog_compiler_pic, $1)= +_LT_TAGVAR(lt_prog_compiler_static, $1)= + +m4_if([$1], [CXX], [ + # C++ specific cases for pic, static, wl, etc. + if test "$GXX" = yes; then + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + m68k) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' + ;; + esac + ;; + + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + mingw* | cygwin* | os2* | pw32* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + m4_if([$1], [GCJ], [], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + ;; + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' + ;; + *djgpp*) + # DJGPP does not support shared libraries at all + _LT_TAGVAR(lt_prog_compiler_pic, $1)= + ;; + haiku*) + # PIC is the default for Haiku. + # The "-static" flag exists, but is broken. + _LT_TAGVAR(lt_prog_compiler_static, $1)= + ;; + interix[[3-9]]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + sysv4*MP*) + if test -d /usr/nec; then + _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic + fi + ;; + hpux*) + # PIC is the default for 64-bit PA HP-UX, but not for 32-bit + # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag + # sets the default TLS model and affects inlining. + case $host_cpu in + hppa*64*) + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + ;; + *qnx* | *nto*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + else + case $host_os in + aix[[4-9]]*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + else + _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' + fi + ;; + chorus*) + case $cc_basename in + cxch68*) + # Green Hills C++ Compiler + # _LT_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" + ;; + esac + ;; + mingw* | cygwin* | os2* | pw32* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + m4_if([$1], [GCJ], [], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + ;; + dgux*) + case $cc_basename in + ec++*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + ;; + ghcx*) + # Green Hills C++ Compiler + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + *) + ;; + esac + ;; + freebsd* | dragonfly*) + # FreeBSD uses GNU C++ + ;; + hpux9* | hpux10* | hpux11*) + case $cc_basename in + CC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' + if test "$host_cpu" != ia64; then + _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + fi + ;; + aCC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + ;; + esac + ;; + *) + ;; + esac + ;; + interix*) + # This is c89, which is MS Visual C++ (no shared libs) + # Anyone wants to do a port? + ;; + irix5* | irix6* | nonstopux*) + case $cc_basename in + CC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + # CC pic flag -KPIC is the default. + ;; + *) + ;; + esac + ;; + linux* | k*bsd*-gnu | kopensolaris*-gnu) + case $cc_basename in + KCC*) + # KAI C++ Compiler + _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + ecpc* ) + # old Intel C++ for x86_64 which still supported -KPIC. + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + icpc* ) + # Intel C++, used to be incompatible with GCC. + # ICC 10 doesn't accept -KPIC any more. + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + pgCC* | pgcpp*) + # Portland Group C++ compiler + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + cxx*) + # Compaq C++ + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + _LT_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + xlc* | xlC* | bgxl[[cC]]* | mpixl[[cC]]*) + # IBM XL 8.0, 9.0 on PPC and BlueGene + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + ;; + esac + ;; + esac + ;; + lynxos*) + ;; + m88k*) + ;; + mvs*) + case $cc_basename in + cxx*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' + ;; + *) + ;; + esac + ;; + netbsd*) + ;; + *qnx* | *nto*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' + ;; + osf3* | osf4* | osf5*) + case $cc_basename in + KCC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' + ;; + RCC*) + # Rational C++ 2.4.1 + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + cxx*) + # Digital/Compaq C++ + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + _LT_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + *) + ;; + esac + ;; + psos*) + ;; + solaris*) + case $cc_basename in + CC* | sunCC*) + # Sun C++ 4.2, 5.x and Centerline C++ + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + ;; + gcx*) + # Green Hills C++ Compiler + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + ;; + *) + ;; + esac + ;; + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + lcc*) + # Lucid + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + *) + ;; + esac + ;; + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + case $cc_basename in + CC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + esac + ;; + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + ;; + *) + ;; + esac + ;; + vxworks*) + ;; + *) + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + esac + fi +], +[ + if test "$GCC" = yes; then + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + m68k) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' + ;; + esac + ;; + + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + m4_if([$1], [GCJ], [], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' + ;; + + haiku*) + # PIC is the default for Haiku. + # The "-static" flag exists, but is broken. + _LT_TAGVAR(lt_prog_compiler_static, $1)= + ;; + + hpux*) + # PIC is the default for 64-bit PA HP-UX, but not for 32-bit + # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag + # sets the default TLS model and affects inlining. + case $host_cpu in + hppa*64*) + # +Z the default + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + ;; + + interix[[3-9]]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + enable_shared=no + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic + fi + ;; + + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + + case $cc_basename in + nvcc*) # Cuda Compiler Driver 2.2 + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Xlinker ' + if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then + _LT_TAGVAR(lt_prog_compiler_pic, $1)="-Xcompiler $_LT_TAGVAR(lt_prog_compiler_pic, $1)" + fi + ;; + esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in + aix*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + else + _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' + fi + ;; + + mingw* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + m4_if([$1], [GCJ], [], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + ;; + + hpux9* | hpux10* | hpux11*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + ;; + esac + # Is there a better lt_prog_compiler_static that works with the bundled CC? + _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' + ;; + + irix5* | irix6* | nonstopux*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # PIC (with -KPIC) is the default. + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + + linux* | k*bsd*-gnu | kopensolaris*-gnu) + case $cc_basename in + # old Intel for x86_64 which still supported -KPIC. + ecc*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + # icc used to be incompatible with GCC. + # ICC 10 doesn't accept -KPIC any more. + icc* | ifort*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + # Lahey Fortran 8.1. + lf95*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared' + _LT_TAGVAR(lt_prog_compiler_static, $1)='--static' + ;; + nagfor*) + # NAG Fortran compiler + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + ccc*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # All Alpha code is PIC. + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + xl* | bgxl* | bgf* | mpixl*) + # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [[1-7]].* | *Sun*Fortran*\ 8.[[0-3]]*) + # Sun Fortran 8.3 passes all unrecognized flags to the linker + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='' + ;; + *Sun\ F* | *Sun*Fortran*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + ;; + *Sun\ C*) + # Sun C 5.9 + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + ;; + *Intel*\ [[CF]]*Compiler*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + *Portland\ Group*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + esac + ;; + esac + ;; + + newsos6) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' + ;; + + osf3* | osf4* | osf5*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # All OSF/1 code is PIC. + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + + rdos*) + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + + solaris*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + case $cc_basename in + f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';; + *) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';; + esac + ;; + + sunos4*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec ;then + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + ;; + + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + unicos*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + + uts4*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + *) + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + esac + fi +]) +case $host_os in + # For platforms which do not support PIC, -DPIC is meaningless: + *djgpp*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)= + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])" + ;; +esac + +AC_CACHE_CHECK([for $compiler option to produce PIC], + [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)], + [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_prog_compiler_pic, $1)]) +_LT_TAGVAR(lt_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_cv_prog_compiler_pic, $1) + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then + _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works], + [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)], + [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [], + [case $_LT_TAGVAR(lt_prog_compiler_pic, $1) in + "" | " "*) ;; + *) _LT_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_TAGVAR(lt_prog_compiler_pic, $1)" ;; + esac], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) +fi +_LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1], + [Additional compiler flags for building library objects]) + +_LT_TAGDECL([wl], [lt_prog_compiler_wl], [1], + [How to pass a linker flag through the compiler]) +# +# Check to make sure the static flag actually works. +# +wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\" +_LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], + _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1), + $lt_tmp_static_flag, + [], + [_LT_TAGVAR(lt_prog_compiler_static, $1)=]) +_LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1], + [Compiler flag to prevent dynamic linking]) +])# _LT_COMPILER_PIC + + +# _LT_LINKER_SHLIBS([TAGNAME]) +# ---------------------------- +# See if the linker supports building shared libraries. +m4_defun([_LT_LINKER_SHLIBS], +[AC_REQUIRE([LT_PATH_LD])dnl +AC_REQUIRE([LT_PATH_NM])dnl +m4_require([_LT_PATH_MANIFEST_TOOL])dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_DECL_SED])dnl +m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl +m4_require([_LT_TAG_COMPILER])dnl +AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) +m4_if([$1], [CXX], [ + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] + case $host_os in + aix[[4-9]]*) + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + # Also, AIX nm treats weak defined symbols like other global defined + # symbols, whereas GNU nm marks them as "W". + if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then + _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + else + _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + fi + ;; + pw32*) + _LT_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds" + ;; + cygwin* | mingw* | cegcc*) + case $cc_basename in + cl*) + _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' + ;; + *) + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' + _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] + ;; + esac + ;; + *) + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + ;; + esac +], [ + runpath_var= + _LT_TAGVAR(allow_undefined_flag, $1)= + _LT_TAGVAR(always_export_symbols, $1)=no + _LT_TAGVAR(archive_cmds, $1)= + _LT_TAGVAR(archive_expsym_cmds, $1)= + _LT_TAGVAR(compiler_needs_object, $1)=no + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no + _LT_TAGVAR(export_dynamic_flag_spec, $1)= + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + _LT_TAGVAR(hardcode_automatic, $1)=no + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_direct_absolute, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= + _LT_TAGVAR(hardcode_libdir_separator, $1)= + _LT_TAGVAR(hardcode_minus_L, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported + _LT_TAGVAR(inherit_rpath, $1)=no + _LT_TAGVAR(link_all_deplibs, $1)=unknown + _LT_TAGVAR(module_cmds, $1)= + _LT_TAGVAR(module_expsym_cmds, $1)= + _LT_TAGVAR(old_archive_from_new_cmds, $1)= + _LT_TAGVAR(old_archive_from_expsyms_cmds, $1)= + _LT_TAGVAR(thread_safe_flag_spec, $1)= + _LT_TAGVAR(whole_archive_flag_spec, $1)= + # include_expsyms should be a list of space-separated symbols to be *always* + # included in the symbol list + _LT_TAGVAR(include_expsyms, $1)= + # exclude_expsyms can be an extended regexp of symbols to exclude + # it will be wrapped by ` (' and `)$', so one must not match beginning or + # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', + # as well as any symbol that contains `d'. + _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] + # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out + # platforms (ab)use it in PIC code, but their linkers get confused if + # the symbol is explicitly referenced. Since portable code cannot + # rely on this symbol name, it's probably fine to never include it in + # preloaded symbol tables. + # Exclude shared library initialization/finalization symbols. +dnl Note also adjust exclude_expsyms for C++ above. + extract_expsyms_cmds= + + case $host_os in + cygwin* | mingw* | pw32* | cegcc*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test "$GCC" != yes; then + with_gnu_ld=no + fi + ;; + interix*) + # we just hope/assume this is gcc and not c89 (= MSVC++) + with_gnu_ld=yes + ;; + openbsd*) + with_gnu_ld=no + ;; + esac + + _LT_TAGVAR(ld_shlibs, $1)=yes + + # On some targets, GNU ld is compatible enough with the native linker + # that we're better off using the native interface for both. + lt_use_gnu_ld_interface=no + if test "$with_gnu_ld" = yes; then + case $host_os in + aix*) + # The AIX port of GNU ld has always aspired to compatibility + # with the native linker. However, as the warning in the GNU ld + # block says, versions before 2.19.5* couldn't really create working + # shared libraries, regardless of the interface used. + case `$LD -v 2>&1` in + *\ \(GNU\ Binutils\)\ 2.19.5*) ;; + *\ \(GNU\ Binutils\)\ 2.[[2-9]]*) ;; + *\ \(GNU\ Binutils\)\ [[3-9]]*) ;; + *) + lt_use_gnu_ld_interface=yes + ;; + esac + ;; + *) + lt_use_gnu_ld_interface=yes + ;; + esac + fi + + if test "$lt_use_gnu_ld_interface" = yes; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='${wl}' + + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + runpath_var=LD_RUN_PATH + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then + _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + _LT_TAGVAR(whole_archive_flag_spec, $1)= + fi + supports_anon_versioning=no + case `$LD -v 2>&1` in + *GNU\ gold*) supports_anon_versioning=yes ;; + *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + + # See if GNU ld supports shared libraries. + case $host_os in + aix[[3-9]]*) + # On AIX/PPC, the GNU linker is very broken + if test "$host_cpu" != ia64; then + _LT_TAGVAR(ld_shlibs, $1)=no + cat <<_LT_EOF 1>&2 + +*** Warning: the GNU linker, at least up to release 2.19, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to install binutils +*** 2.20 or above, or modify your PATH so that a non-GNU linker is found. +*** You will then need to restart the configuration process. + +_LT_EOF + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='' + ;; + m68k) + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_minus_L, $1)=yes + ;; + esac + ;; + + beos*) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + cygwin* | mingw* | pw32* | cegcc*) + # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, + # as there is no search path for DLLs. + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=no + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' + _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] + + if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + haiku*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + + interix[[3-9]]*) + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + + gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) + tmp_diet=no + if test "$host_os" = linux-dietlibc; then + case $cc_basename in + diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) + esac + fi + if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ + && test "$tmp_diet" = no + then + tmp_addflag=' $pic_flag' + tmp_sharedflag='-shared' + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag' + ;; + pgf77* | pgf90* | pgf95* | pgfortran*) + # Portland Group f77 and f90 compilers + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + lf95*) # Lahey Fortran 8.1 + _LT_TAGVAR(whole_archive_flag_spec, $1)= + tmp_sharedflag='--shared' ;; + xl[[cC]]* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below) + tmp_sharedflag='-qmkshrobj' + tmp_addflag= ;; + nvcc*) # Cuda Compiler Driver 2.2 + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + _LT_TAGVAR(compiler_needs_object, $1)=yes + ;; + esac + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) # Sun C 5.9 + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + _LT_TAGVAR(compiler_needs_object, $1)=yes + tmp_sharedflag='-G' ;; + *Sun\ F*) # Sun Fortran 8.3 + tmp_sharedflag='-G' ;; + esac + _LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + + if test "x$supports_anon_versioning" = xyes; then + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + fi + + case $cc_basename in + xlf* | bgf* | bgxlf* | mpixlf*) + # IBM XL Fortran 10.1 on PPC cannot create shared libs itself + _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' + if test "x$supports_anon_versioning" = xyes; then + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' + fi + ;; + esac + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris*) + if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then + _LT_TAGVAR(ld_shlibs, $1)=no + cat <<_LT_EOF 1>&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) + case `$LD -v 2>&1` in + *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*) + _LT_TAGVAR(ld_shlibs, $1)=no + cat <<_LT_EOF 1>&2 + +*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not +*** reliably create shared libraries on SCO systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.16.91.0.3 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + ;; + *) + # For security reasons, it is highly recommended that you always + # use absolute paths for naming shared libraries, and exclude the + # DT_RUNPATH tag from executables and libraries. But doing so + # requires that you compile everything twice, which is a pain. + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + + sunos4*) + _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + *) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + + if test "$_LT_TAGVAR(ld_shlibs, $1)" = no; then + runpath_var= + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= + _LT_TAGVAR(export_dynamic_flag_spec, $1)= + _LT_TAGVAR(whole_archive_flag_spec, $1)= + fi + else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=yes + _LT_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + _LT_TAGVAR(hardcode_minus_L, $1)=yes + if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + _LT_TAGVAR(hardcode_direct, $1)=unsupported + fi + ;; + + aix[[4-9]]*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + # Also, AIX nm treats weak defined symbols like other global + # defined symbols, whereas GNU nm marks them as "W". + if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then + _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + else + _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + fi + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) + for ld_flag in $LDFLAGS; do + if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then + aix_use_runtimelinking=yes + break + fi + done + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + _LT_TAGVAR(archive_cmds, $1)='' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' + + if test "$GCC" = yes; then + case $host_os in aix4.[[012]]|aix4.[[012]].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && + strings "$collect2name" | $GREP resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + _LT_TAGVAR(hardcode_direct, $1)=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)= + fi + ;; + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + _LT_TAGVAR(always_export_symbols, $1)=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + _LT_TAGVAR(allow_undefined_flag, $1)='-berok' + # Determine the default libpath from the value encoded in an + # empty executable. + _LT_SYS_MODULE_PATH_AIX([$1]) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' + _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" + _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an + # empty executable. + _LT_SYS_MODULE_PATH_AIX([$1]) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' + _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' + if test "$with_gnu_ld" = yes; then + # We only use this code for GNU lds that support --whole-archive. + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' + else + # Exported symbols can be pulled into shared objects from archives + _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)=yes + # This is similar to how AIX traditionally builds its shared libraries. + _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='' + ;; + m68k) + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_minus_L, $1)=yes + ;; + esac + ;; + + bsdi[[45]]*) + _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic + ;; + + cygwin* | mingw* | pw32* | cegcc*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + case $cc_basename in + cl*) + # Native MSVC + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='@' + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' + _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; + else + sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; + fi~ + $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ + linknames=' + # The linker will not automatically build a static lib if we build a DLL. + # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1,DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols' + # Don't use ranlib + _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' + _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ + lt_tool_outputfile="@TOOL_OUTPUT@"~ + case $lt_outputfile in + *.exe|*.EXE) ;; + *) + lt_outputfile="$lt_outputfile.exe" + lt_tool_outputfile="$lt_tool_outputfile.exe" + ;; + esac~ + if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then + $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; + $RM "$lt_outputfile.manifest"; + fi' + ;; + *) + # Assume MSVC wrapper + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' + # FIXME: Should let the user specify the lib program. + _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + ;; + esac + ;; + + darwin* | rhapsody*) + _LT_DARWIN_LINKER_FEATURES($1) + ;; + + dgux*) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2.*) + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd* | dragonfly*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + hpux9*) + if test "$GCC" = yes; then + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + fi + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(hardcode_direct, $1)=yes + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + ;; + + hpux10*) + if test "$GCC" = yes && test "$with_gnu_ld" = no; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + fi + if test "$with_gnu_ld" = no; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_TAGVAR(hardcode_minus_L, $1)=yes + fi + ;; + + hpux11*) + if test "$GCC" = yes && test "$with_gnu_ld" = no; then + case $host_cpu in + hppa*64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else + case $host_cpu in + hppa*64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + m4_if($1, [], [ + # Older versions of the 11.00 compiler do not understand -b yet + # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) + _LT_LINKER_OPTION([if $CC understands -b], + _LT_TAGVAR(lt_cv_prog_compiler__b, $1), [-b], + [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'], + [_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'])], + [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags']) + ;; + esac + fi + if test "$with_gnu_ld" = no; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + case $host_cpu in + hppa*64*|ia64*) + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + *) + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_TAGVAR(hardcode_minus_L, $1)=yes + ;; + esac + fi + ;; + + irix5* | irix6* | nonstopux*) + if test "$GCC" = yes; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + # Try to use the -exported_symbol ld option, if it does not + # work, assume that -exports_file does not work either and + # implicitly export all symbols. + # This should be the same for all languages, so no per-tag cache variable. + AC_CACHE_CHECK([whether the $host_os linker accepts -exported_symbol], + [lt_cv_irix_exported_symbol], + [save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" + AC_LINK_IFELSE( + [AC_LANG_SOURCE( + [AC_LANG_CASE([C], [[int foo (void) { return 0; }]], + [C++], [[int foo (void) { return 0; }]], + [Fortran 77], [[ + subroutine foo + end]], + [Fortran], [[ + subroutine foo + end]])])], + [lt_cv_irix_exported_symbol=yes], + [lt_cv_irix_exported_symbol=no]) + LDFLAGS="$save_LDFLAGS"]) + if test "$lt_cv_irix_exported_symbol" = yes; then + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' + fi + else + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)='no' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(inherit_rpath, $1)=yes + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + _LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + newsos6) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + *nto* | *qnx*) + ;; + + openbsd*) + if test -f /usr/libexec/ld.so; then + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + else + case $host_os in + openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*) + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + ;; + esac + fi + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + os2*) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' + _LT_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' + ;; + + osf3*) + if test "$GCC" = yes; then + _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)='no' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test "$GCC" = yes; then + _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + else + _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ + $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' + + # Both c and cxx compiler support -rpath directly + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)='no' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + ;; + + solaris*) + _LT_TAGVAR(no_undefined_flag, $1)=' -z defs' + if test "$GCC" = yes; then + wlarc='${wl}' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + else + case `$CC -V 2>&1` in + *"Compilers 5.0"*) + wlarc='' + _LT_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' + ;; + *) + wlarc='${wl}' + _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + ;; + esac + fi + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands `-z linker_flag'. GCC discards it without `$wl', + # but is careful enough not to reorder. + # Supported since Solaris 2.6 (maybe 2.5.1?) + if test "$GCC" = yes; then + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' + else + _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' + fi + ;; + esac + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + + sunos4*) + if test "x$host_vendor" = xsequent; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + sysv4) + case $host_vendor in + sni) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_direct, $1)=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' + _LT_TAGVAR(hardcode_direct, $1)=no + ;; + motorola) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + sysv4.3*) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + _LT_TAGVAR(ld_shlibs, $1)=yes + fi + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) + _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We can NOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' + _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + uts4*) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + *) + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + + if test x$host_vendor = xsni; then + case $host in + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Blargedynsym' + ;; + esac + fi + fi +]) +AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) +test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no + +_LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld + +_LT_DECL([], [libext], [0], [Old archive suffix (normally "a")])dnl +_LT_DECL([], [shrext_cmds], [1], [Shared library suffix (normally ".so")])dnl +_LT_DECL([], [extract_expsyms_cmds], [2], + [The commands to extract the exported symbol list from a shared archive]) + +# +# Do we need to explicitly link libc? +# +case "x$_LT_TAGVAR(archive_cmds_need_lc, $1)" in +x|xyes) + # Assume -lc should be added + _LT_TAGVAR(archive_cmds_need_lc, $1)=yes + + if test "$enable_shared" = yes && test "$GCC" = yes; then + case $_LT_TAGVAR(archive_cmds, $1) in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + AC_CACHE_CHECK([whether -lc should be explicitly linked in], + [lt_cv_]_LT_TAGVAR(archive_cmds_need_lc, $1), + [$RM conftest* + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + if AC_TRY_EVAL(ac_compile) 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) + pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1) + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1) + _LT_TAGVAR(allow_undefined_flag, $1)= + if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) + then + lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=no + else + lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=yes + fi + _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $RM conftest* + ]) + _LT_TAGVAR(archive_cmds_need_lc, $1)=$lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1) + ;; + esac + fi + ;; +esac + +_LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0], + [Whether or not to add -lc for building shared libraries]) +_LT_TAGDECL([allow_libtool_libs_with_static_runtimes], + [enable_shared_with_static_runtimes], [0], + [Whether or not to disallow shared libs when runtime libs are static]) +_LT_TAGDECL([], [export_dynamic_flag_spec], [1], + [Compiler flag to allow reflexive dlopens]) +_LT_TAGDECL([], [whole_archive_flag_spec], [1], + [Compiler flag to generate shared objects directly from archives]) +_LT_TAGDECL([], [compiler_needs_object], [1], + [Whether the compiler copes with passing no objects directly]) +_LT_TAGDECL([], [old_archive_from_new_cmds], [2], + [Create an old-style archive from a shared archive]) +_LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2], + [Create a temporary old-style archive to link instead of a shared archive]) +_LT_TAGDECL([], [archive_cmds], [2], [Commands used to build a shared archive]) +_LT_TAGDECL([], [archive_expsym_cmds], [2]) +_LT_TAGDECL([], [module_cmds], [2], + [Commands used to build a loadable module if different from building + a shared archive.]) +_LT_TAGDECL([], [module_expsym_cmds], [2]) +_LT_TAGDECL([], [with_gnu_ld], [1], + [Whether we are building with GNU ld or not]) +_LT_TAGDECL([], [allow_undefined_flag], [1], + [Flag that allows shared libraries with undefined symbols to be built]) +_LT_TAGDECL([], [no_undefined_flag], [1], + [Flag that enforces no undefined symbols]) +_LT_TAGDECL([], [hardcode_libdir_flag_spec], [1], + [Flag to hardcode $libdir into a binary during linking. + This must work even if $libdir does not exist]) +_LT_TAGDECL([], [hardcode_libdir_separator], [1], + [Whether we need a single "-rpath" flag with a separated argument]) +_LT_TAGDECL([], [hardcode_direct], [0], + [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes + DIR into the resulting binary]) +_LT_TAGDECL([], [hardcode_direct_absolute], [0], + [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes + DIR into the resulting binary and the resulting library dependency is + "absolute", i.e impossible to change by setting ${shlibpath_var} if the + library is relocated]) +_LT_TAGDECL([], [hardcode_minus_L], [0], + [Set to "yes" if using the -LDIR flag during linking hardcodes DIR + into the resulting binary]) +_LT_TAGDECL([], [hardcode_shlibpath_var], [0], + [Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR + into the resulting binary]) +_LT_TAGDECL([], [hardcode_automatic], [0], + [Set to "yes" if building a shared library automatically hardcodes DIR + into the library and all subsequent libraries and executables linked + against it]) +_LT_TAGDECL([], [inherit_rpath], [0], + [Set to yes if linker adds runtime paths of dependent libraries + to runtime path list]) +_LT_TAGDECL([], [link_all_deplibs], [0], + [Whether libtool must link a program against all its dependency libraries]) +_LT_TAGDECL([], [always_export_symbols], [0], + [Set to "yes" if exported symbols are required]) +_LT_TAGDECL([], [export_symbols_cmds], [2], + [The commands to list exported symbols]) +_LT_TAGDECL([], [exclude_expsyms], [1], + [Symbols that should not be listed in the preloaded symbols]) +_LT_TAGDECL([], [include_expsyms], [1], + [Symbols that must always be exported]) +_LT_TAGDECL([], [prelink_cmds], [2], + [Commands necessary for linking programs (against libraries) with templates]) +_LT_TAGDECL([], [postlink_cmds], [2], + [Commands necessary for finishing linking programs]) +_LT_TAGDECL([], [file_list_spec], [1], + [Specify filename containing input files]) +dnl FIXME: Not yet implemented +dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1], +dnl [Compiler flag to generate thread safe objects]) +])# _LT_LINKER_SHLIBS + + +# _LT_LANG_C_CONFIG([TAG]) +# ------------------------ +# Ensure that the configuration variables for a C compiler are suitably +# defined. These variables are subsequently used by _LT_CONFIG to write +# the compiler configuration to `libtool'. +m4_defun([_LT_LANG_C_CONFIG], +[m4_require([_LT_DECL_EGREP])dnl +lt_save_CC="$CC" +AC_LANG_PUSH(C) + +# Source file extension for C test sources. +ac_ext=c + +# Object file extension for compiled C test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="int some_variable = 0;" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(){return(0);}' + +_LT_TAG_COMPILER +# Save the default compiler, since it gets overwritten when the other +# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. +compiler_DEFAULT=$CC + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +if test -n "$compiler"; then + _LT_COMPILER_NO_RTTI($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_SYS_DYNAMIC_LINKER($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + LT_SYS_DLOPEN_SELF + _LT_CMD_STRIPLIB + + # Report which library types will actually be built + AC_MSG_CHECKING([if libtool supports shared libraries]) + AC_MSG_RESULT([$can_build_shared]) + + AC_MSG_CHECKING([whether to build shared libraries]) + test "$can_build_shared" = "no" && enable_shared=no + + # On AIX, shared libraries and static libraries use the same namespace, and + # are all built from PIC. + case $host_os in + aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + + aix[[4-9]]*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; + esac + AC_MSG_RESULT([$enable_shared]) + + AC_MSG_CHECKING([whether to build static libraries]) + # Make sure either enable_shared or enable_static is yes. + test "$enable_shared" = yes || enable_static=yes + AC_MSG_RESULT([$enable_static]) + + _LT_CONFIG($1) +fi +AC_LANG_POP +CC="$lt_save_CC" +])# _LT_LANG_C_CONFIG + + +# _LT_LANG_CXX_CONFIG([TAG]) +# -------------------------- +# Ensure that the configuration variables for a C++ compiler are suitably +# defined. These variables are subsequently used by _LT_CONFIG to write +# the compiler configuration to `libtool'. +m4_defun([_LT_LANG_CXX_CONFIG], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_PATH_MANIFEST_TOOL])dnl +if test -n "$CXX" && ( test "X$CXX" != "Xno" && + ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || + (test "X$CXX" != "Xg++"))) ; then + AC_PROG_CXXCPP +else + _lt_caught_CXX_error=yes +fi + +AC_LANG_PUSH(C++) +_LT_TAGVAR(archive_cmds_need_lc, $1)=no +_LT_TAGVAR(allow_undefined_flag, $1)= +_LT_TAGVAR(always_export_symbols, $1)=no +_LT_TAGVAR(archive_expsym_cmds, $1)= +_LT_TAGVAR(compiler_needs_object, $1)=no +_LT_TAGVAR(export_dynamic_flag_spec, $1)= +_LT_TAGVAR(hardcode_direct, $1)=no +_LT_TAGVAR(hardcode_direct_absolute, $1)=no +_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= +_LT_TAGVAR(hardcode_libdir_separator, $1)= +_LT_TAGVAR(hardcode_minus_L, $1)=no +_LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported +_LT_TAGVAR(hardcode_automatic, $1)=no +_LT_TAGVAR(inherit_rpath, $1)=no +_LT_TAGVAR(module_cmds, $1)= +_LT_TAGVAR(module_expsym_cmds, $1)= +_LT_TAGVAR(link_all_deplibs, $1)=unknown +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds +_LT_TAGVAR(no_undefined_flag, $1)= +_LT_TAGVAR(whole_archive_flag_spec, $1)= +_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no + +# Source file extension for C++ test sources. +ac_ext=cpp + +# Object file extension for compiled C++ test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# No sense in running all these tests if we already determined that +# the CXX compiler isn't working. Some variables (like enable_shared) +# are currently assumed to apply to all compilers on this platform, +# and will be corrupted by setting them based on a non-working compiler. +if test "$_lt_caught_CXX_error" != yes; then + # Code to be used in simple compile tests + lt_simple_compile_test_code="int some_variable = 0;" + + # Code to be used in simple link tests + lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }' + + # ltmain only uses $CC for tagged configurations so make sure $CC is set. + _LT_TAG_COMPILER + + # save warnings/boilerplate of simple test code + _LT_COMPILER_BOILERPLATE + _LT_LINKER_BOILERPLATE + + # Allow CC to be a program name with arguments. + lt_save_CC=$CC + lt_save_CFLAGS=$CFLAGS + lt_save_LD=$LD + lt_save_GCC=$GCC + GCC=$GXX + lt_save_with_gnu_ld=$with_gnu_ld + lt_save_path_LD=$lt_cv_path_LD + if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then + lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx + else + $as_unset lt_cv_prog_gnu_ld + fi + if test -n "${lt_cv_path_LDCXX+set}"; then + lt_cv_path_LD=$lt_cv_path_LDCXX + else + $as_unset lt_cv_path_LD + fi + test -z "${LDCXX+set}" || LD=$LDCXX + CC=${CXX-"c++"} + CFLAGS=$CXXFLAGS + compiler=$CC + _LT_TAGVAR(compiler, $1)=$CC + _LT_CC_BASENAME([$compiler]) + + if test -n "$compiler"; then + # We don't want -fno-exception when compiling C++ code, so set the + # no_builtin_flag separately + if test "$GXX" = yes; then + _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' + else + _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= + fi + + if test "$GXX" = yes; then + # Set up default GNU C++ configuration + + LT_PATH_LD + + # Check if GNU C++ uses GNU ld as the underlying linker, since the + # archiving commands below assume that GNU ld is being used. + if test "$with_gnu_ld" = yes; then + _LT_TAGVAR(archive_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + + # If archive_cmds runs LD, not CC, wlarc should be empty + # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to + # investigate it a little bit more. (MM) + wlarc='${wl}' + + # ancient GNU ld didn't support --whole-archive et. al. + if eval "`$CC -print-prog-name=ld` --help 2>&1" | + $GREP 'no-whole-archive' > /dev/null; then + _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + _LT_TAGVAR(whole_archive_flag_spec, $1)= + fi + else + with_gnu_ld=no + wlarc= + + # A generic and very simple default shared library creation + # command for GNU C++ for the case where it uses the native + # linker, instead of GNU ld. If possible, this setting should + # overridden to take advantage of the native linker features on + # the platform it is being used on. + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + fi + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + + else + GXX=no + with_gnu_ld=no + wlarc= + fi + + # PORTME: fill in a description of your system's C++ link characteristics + AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) + _LT_TAGVAR(ld_shlibs, $1)=yes + case $host_os in + aix3*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + aix[[4-9]]*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) + for ld_flag in $LDFLAGS; do + case $ld_flag in + *-brtl*) + aix_use_runtimelinking=yes + break + ;; + esac + done + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + _LT_TAGVAR(archive_cmds, $1)='' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' + + if test "$GXX" = yes; then + case $host_os in aix4.[[012]]|aix4.[[012]].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && + strings "$collect2name" | $GREP resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + _LT_TAGVAR(hardcode_direct, $1)=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)= + fi + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to + # export. + _LT_TAGVAR(always_export_symbols, $1)=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + _LT_TAGVAR(allow_undefined_flag, $1)='-berok' + # Determine the default libpath from the value encoded in an empty + # executable. + _LT_SYS_MODULE_PATH_AIX([$1]) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' + _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" + _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an + # empty executable. + _LT_SYS_MODULE_PATH_AIX([$1]) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' + _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' + if test "$with_gnu_ld" = yes; then + # We only use this code for GNU lds that support --whole-archive. + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' + else + # Exported symbols can be pulled into shared objects from archives + _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)=yes + # This is similar to how AIX traditionally builds its shared + # libraries. + _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + beos*) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + chorus*) + case $cc_basename in + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + cygwin* | mingw* | pw32* | cegcc*) + case $GXX,$cc_basename in + ,cl* | no,cl*) + # Native MSVC + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='@' + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' + _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + $SED -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; + else + $SED -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; + fi~ + $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ + linknames=' + # The linker will not automatically build a static lib if we build a DLL. + # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + # Don't use ranlib + _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' + _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ + lt_tool_outputfile="@TOOL_OUTPUT@"~ + case $lt_outputfile in + *.exe|*.EXE) ;; + *) + lt_outputfile="$lt_outputfile.exe" + lt_tool_outputfile="$lt_tool_outputfile.exe" + ;; + esac~ + func_to_tool_file "$lt_outputfile"~ + if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then + $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; + $RM "$lt_outputfile.manifest"; + fi' + ;; + *) + # g++ + # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, + # as there is no search path for DLLs. + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=no + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + + if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + darwin* | rhapsody*) + _LT_DARWIN_LINKER_FEATURES($1) + ;; + + dgux*) + case $cc_basename in + ec++*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + ghcx*) + # Green Hills C++ Compiler + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + freebsd2.*) + # C++ shared libraries reported to be fairly broken before + # switch to ELF + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + freebsd-elf*) + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + ;; + + freebsd* | dragonfly*) + # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF + # conventions + _LT_TAGVAR(ld_shlibs, $1)=yes + ;; + + gnu*) + ;; + + haiku*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + + hpux9*) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, + # but as the default + # location of the library. + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + aCC*) + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + ;; + *) + if test "$GXX" = yes; then + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + + hpux10*|hpux11*) + if test $with_gnu_ld = no; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + case $host_cpu in + hppa*64*|ia64*) + ;; + *) + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + ;; + esac + fi + case $host_cpu in + hppa*64*|ia64*) + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + *) + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, + # but as the default + # location of the library. + ;; + esac + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + aCC*) + case $host_cpu in + hppa*64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + ;; + *) + if test "$GXX" = yes; then + if test $with_gnu_ld = no; then + case $host_cpu in + hppa*64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + fi + else + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + + interix[[3-9]]*) + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + irix5* | irix6*) + case $cc_basename in + CC*) + # SGI C++ + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + + # Archives containing C++ object files must be created using + # "CC -ar", where "CC" is the IRIX C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' + ;; + *) + if test "$GXX" = yes; then + if test "$with_gnu_ld" = no; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` -o $lib' + fi + fi + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + esac + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(inherit_rpath, $1)=yes + ;; + + linux* | k*bsd*-gnu | kopensolaris*-gnu) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + + # Archives containing C++ object files must be created using + # "CC -Bstatic", where "CC" is the KAI C++ compiler. + _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' + ;; + icpc* | ecpc* ) + # Intel C++ + with_gnu_ld=yes + # version 8.0 and above of icpc choke on multiply defined symbols + # if we add $predep_objects and $postdep_objects, however 7.1 and + # earlier do not add the objects themselves. + case `$CC -V 2>&1` in + *"Version 7."*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + ;; + *) # Version 8.0 or newer + tmp_idyn= + case $host_cpu in + ia64*) tmp_idyn=' -i_dynamic';; + esac + _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + ;; + esac + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' + ;; + pgCC* | pgcpp*) + # Portland Group C++ compiler + case `$CC -V` in + *pgCC\ [[1-5]].* | *pgcpp\ [[1-5]].*) + _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ + compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' + _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ + $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ + $RANLIB $oldlib' + _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ + $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ + $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' + ;; + *) # Version 6 and above use weak symbols + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' + ;; + esac + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + ;; + cxx*) + # Compaq C++ + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' + + runpath_var=LD_RUN_PATH + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' + ;; + xl* | mpixl* | bgxl*) + # IBM XL 8.0 on PPC, with GNU ld + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + if test "x$supports_anon_versioning" = xyes; then + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + fi + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' + _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + _LT_TAGVAR(compiler_needs_object, $1)=yes + + # Not sure whether something based on + # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 + # would be better. + output_verbose_link_cmd='func_echo_all' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' + ;; + esac + ;; + esac + ;; + + lynxos*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + m88k*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + mvs*) + case $cc_basename in + cxx*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' + wlarc= + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + fi + # Workaround some broken pre-1.5 toolchains + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' + ;; + + *nto* | *qnx*) + _LT_TAGVAR(ld_shlibs, $1)=yes + ;; + + openbsd2*) + # C++ shared libraries are fairly broken + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + openbsd*) + if test -f /usr/libexec/ld.so; then + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + fi + output_verbose_link_cmd=func_echo_all + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + osf3* | osf4* | osf5*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + # Archives containing C++ object files must be created using + # the KAI C++ compiler. + case $host in + osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; + *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;; + esac + ;; + RCC*) + # Rational C++ 2.4.1 + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + cxx*) + case $host in + osf3*) + _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && func_echo_all "${wl}-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + ;; + *) + _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ + echo "-hidden">> $lib.exp~ + $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~ + $RM $lib.exp' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + ;; + esac + + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + ;; + *) + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + case $host in + osf3*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + ;; + esac + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + + else + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + + psos*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + lcc*) + # Lucid + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + solaris*) + case $cc_basename in + CC* | sunCC*) + # Sun C++ 4.2, 5.x and Centerline C++ + _LT_TAGVAR(archive_cmds_need_lc,$1)=yes + _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' + _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands `-z linker_flag'. + # Supported since Solaris 2.6 (maybe 2.5.1?) + _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' + ;; + esac + _LT_TAGVAR(link_all_deplibs, $1)=yes + + output_verbose_link_cmd='func_echo_all' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' + ;; + gcx*) + # Green Hills C++ Compiler + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + + # The C++ compiler must be used to create the archive. + _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' + ;; + *) + # GNU C++ compiler with Solaris linker + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs' + if $CC --version | $GREP -v '^2\.7' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -shared $pic_flag -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + else + # g++ 2.7 appears to require `-G' NOT `-shared' on this + # platform. + _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + fi + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir' + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' + ;; + esac + fi + ;; + esac + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) + _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We can NOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' + _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(old_archive_cmds, $1)='$CC -Tprelink_objects $oldobjs~ + '"$_LT_TAGVAR(old_archive_cmds, $1)" + _LT_TAGVAR(reload_cmds, $1)='$CC -Tprelink_objects $reload_objs~ + '"$_LT_TAGVAR(reload_cmds, $1)" + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + vxworks*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + + AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) + test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no + + _LT_TAGVAR(GCC, $1)="$GXX" + _LT_TAGVAR(LD, $1)="$LD" + + ## CAVEAT EMPTOR: + ## There is no encapsulation within the following macros, do not change + ## the running order or otherwise move them around unless you know exactly + ## what you are doing... + _LT_SYS_HIDDEN_LIBDEPS($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_SYS_DYNAMIC_LINKER($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) + fi # test -n "$compiler" + + CC=$lt_save_CC + CFLAGS=$lt_save_CFLAGS + LDCXX=$LD + LD=$lt_save_LD + GCC=$lt_save_GCC + with_gnu_ld=$lt_save_with_gnu_ld + lt_cv_path_LDCXX=$lt_cv_path_LD + lt_cv_path_LD=$lt_save_path_LD + lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld + lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld +fi # test "$_lt_caught_CXX_error" != yes + +AC_LANG_POP +])# _LT_LANG_CXX_CONFIG + + +# _LT_FUNC_STRIPNAME_CNF +# ---------------------- +# func_stripname_cnf prefix suffix name +# strip PREFIX and SUFFIX off of NAME. +# PREFIX and SUFFIX must not contain globbing or regex special +# characters, hashes, percent signs, but SUFFIX may contain a leading +# dot (in which case that matches only a dot). +# +# This function is identical to the (non-XSI) version of func_stripname, +# except this one can be used by m4 code that may be executed by configure, +# rather than the libtool script. +m4_defun([_LT_FUNC_STRIPNAME_CNF],[dnl +AC_REQUIRE([_LT_DECL_SED]) +AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH]) +func_stripname_cnf () +{ + case ${2} in + .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; + *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; + esac +} # func_stripname_cnf +])# _LT_FUNC_STRIPNAME_CNF + +# _LT_SYS_HIDDEN_LIBDEPS([TAGNAME]) +# --------------------------------- +# Figure out "hidden" library dependencies from verbose +# compiler output when linking a shared library. +# Parse the compiler output and extract the necessary +# objects, libraries and library flags. +m4_defun([_LT_SYS_HIDDEN_LIBDEPS], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +AC_REQUIRE([_LT_FUNC_STRIPNAME_CNF])dnl +# Dependencies to place before and after the object being linked: +_LT_TAGVAR(predep_objects, $1)= +_LT_TAGVAR(postdep_objects, $1)= +_LT_TAGVAR(predeps, $1)= +_LT_TAGVAR(postdeps, $1)= +_LT_TAGVAR(compiler_lib_search_path, $1)= + +dnl we can't use the lt_simple_compile_test_code here, +dnl because it contains code intended for an executable, +dnl not a library. It's possible we should let each +dnl tag define a new lt_????_link_test_code variable, +dnl but it's only used here... +m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF +int a; +void foo (void) { a = 0; } +_LT_EOF +], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF +class Foo +{ +public: + Foo (void) { a = 0; } +private: + int a; +}; +_LT_EOF +], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF + subroutine foo + implicit none + integer*4 a + a=0 + return + end +_LT_EOF +], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF + subroutine foo + implicit none + integer a + a=0 + return + end +_LT_EOF +], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF +public class foo { + private int a; + public void bar (void) { + a = 0; + } +}; +_LT_EOF +], [$1], [GO], [cat > conftest.$ac_ext <<_LT_EOF +package foo +func foo() { +} +_LT_EOF +]) + +_lt_libdeps_save_CFLAGS=$CFLAGS +case "$CC $CFLAGS " in #( +*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; +*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; +*\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;; +esac + +dnl Parse the compiler output and extract the necessary +dnl objects, libraries and library flags. +if AC_TRY_EVAL(ac_compile); then + # Parse the compiler output and extract the necessary + # objects, libraries and library flags. + + # Sentinel used to keep track of whether or not we are before + # the conftest object file. + pre_test_object_deps_done=no + + for p in `eval "$output_verbose_link_cmd"`; do + case ${prev}${p} in + + -L* | -R* | -l*) + # Some compilers place space between "-{L,R}" and the path. + # Remove the space. + if test $p = "-L" || + test $p = "-R"; then + prev=$p + continue + fi + + # Expand the sysroot to ease extracting the directories later. + if test -z "$prev"; then + case $p in + -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; + -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; + -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; + esac + fi + case $p in + =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; + esac + if test "$pre_test_object_deps_done" = no; then + case ${prev} in + -L | -R) + # Internal compiler library paths should come after those + # provided the user. The postdeps already come after the + # user supplied libs so there is no need to process them. + if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then + _LT_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}" + else + _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} ${prev}${p}" + fi + ;; + # The "-l" case would never come before the object being + # linked, so don't bother handling this case. + esac + else + if test -z "$_LT_TAGVAR(postdeps, $1)"; then + _LT_TAGVAR(postdeps, $1)="${prev}${p}" + else + _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} ${prev}${p}" + fi + fi + prev= + ;; + + *.lto.$objext) ;; # Ignore GCC LTO objects + *.$objext) + # This assumes that the test object file only shows up + # once in the compiler output. + if test "$p" = "conftest.$objext"; then + pre_test_object_deps_done=yes + continue + fi + + if test "$pre_test_object_deps_done" = no; then + if test -z "$_LT_TAGVAR(predep_objects, $1)"; then + _LT_TAGVAR(predep_objects, $1)="$p" + else + _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p" + fi + else + if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then + _LT_TAGVAR(postdep_objects, $1)="$p" + else + _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p" + fi + fi + ;; + + *) ;; # Ignore the rest. + + esac + done + + # Clean up. + rm -f a.out a.exe +else + echo "libtool.m4: error: problem compiling $1 test program" +fi + +$RM -f confest.$objext +CFLAGS=$_lt_libdeps_save_CFLAGS + +# PORTME: override above test on systems where it is broken +m4_if([$1], [CXX], +[case $host_os in +interix[[3-9]]*) + # Interix 3.5 installs completely hosed .la files for C++, so rather than + # hack all around it, let's just trust "g++" to DTRT. + _LT_TAGVAR(predep_objects,$1)= + _LT_TAGVAR(postdep_objects,$1)= + _LT_TAGVAR(postdeps,$1)= + ;; + +linux*) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + + # The more standards-conforming stlport4 library is + # incompatible with the Cstd library. Avoid specifying + # it if it's in CXXFLAGS. Ignore libCrun as + # -library=stlport4 depends on it. + case " $CXX $CXXFLAGS " in + *" -library=stlport4 "*) + solaris_use_stlport4=yes + ;; + esac + + if test "$solaris_use_stlport4" != yes; then + _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' + fi + ;; + esac + ;; + +solaris*) + case $cc_basename in + CC* | sunCC*) + # The more standards-conforming stlport4 library is + # incompatible with the Cstd library. Avoid specifying + # it if it's in CXXFLAGS. Ignore libCrun as + # -library=stlport4 depends on it. + case " $CXX $CXXFLAGS " in + *" -library=stlport4 "*) + solaris_use_stlport4=yes + ;; + esac + + # Adding this requires a known-good setup of shared libraries for + # Sun compiler versions before 5.6, else PIC objects from an old + # archive will be linked into the output, leading to subtle bugs. + if test "$solaris_use_stlport4" != yes; then + _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' + fi + ;; + esac + ;; +esac +]) + +case " $_LT_TAGVAR(postdeps, $1) " in +*" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; +esac + _LT_TAGVAR(compiler_lib_search_dirs, $1)= +if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then + _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | ${SED} -e 's! -L! !g' -e 's!^ !!'` +fi +_LT_TAGDECL([], [compiler_lib_search_dirs], [1], + [The directories searched by this compiler when creating a shared library]) +_LT_TAGDECL([], [predep_objects], [1], + [Dependencies to place before and after the objects being linked to + create a shared library]) +_LT_TAGDECL([], [postdep_objects], [1]) +_LT_TAGDECL([], [predeps], [1]) +_LT_TAGDECL([], [postdeps], [1]) +_LT_TAGDECL([], [compiler_lib_search_path], [1], + [The library search path used internally by the compiler when linking + a shared library]) +])# _LT_SYS_HIDDEN_LIBDEPS + + +# _LT_LANG_F77_CONFIG([TAG]) +# -------------------------- +# Ensure that the configuration variables for a Fortran 77 compiler are +# suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to `libtool'. +m4_defun([_LT_LANG_F77_CONFIG], +[AC_LANG_PUSH(Fortran 77) +if test -z "$F77" || test "X$F77" = "Xno"; then + _lt_disable_F77=yes +fi + +_LT_TAGVAR(archive_cmds_need_lc, $1)=no +_LT_TAGVAR(allow_undefined_flag, $1)= +_LT_TAGVAR(always_export_symbols, $1)=no +_LT_TAGVAR(archive_expsym_cmds, $1)= +_LT_TAGVAR(export_dynamic_flag_spec, $1)= +_LT_TAGVAR(hardcode_direct, $1)=no +_LT_TAGVAR(hardcode_direct_absolute, $1)=no +_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= +_LT_TAGVAR(hardcode_libdir_separator, $1)= +_LT_TAGVAR(hardcode_minus_L, $1)=no +_LT_TAGVAR(hardcode_automatic, $1)=no +_LT_TAGVAR(inherit_rpath, $1)=no +_LT_TAGVAR(module_cmds, $1)= +_LT_TAGVAR(module_expsym_cmds, $1)= +_LT_TAGVAR(link_all_deplibs, $1)=unknown +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds +_LT_TAGVAR(no_undefined_flag, $1)= +_LT_TAGVAR(whole_archive_flag_spec, $1)= +_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no + +# Source file extension for f77 test sources. +ac_ext=f + +# Object file extension for compiled f77 test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# No sense in running all these tests if we already determined that +# the F77 compiler isn't working. Some variables (like enable_shared) +# are currently assumed to apply to all compilers on this platform, +# and will be corrupted by setting them based on a non-working compiler. +if test "$_lt_disable_F77" != yes; then + # Code to be used in simple compile tests + lt_simple_compile_test_code="\ + subroutine t + return + end +" + + # Code to be used in simple link tests + lt_simple_link_test_code="\ + program t + end +" + + # ltmain only uses $CC for tagged configurations so make sure $CC is set. + _LT_TAG_COMPILER + + # save warnings/boilerplate of simple test code + _LT_COMPILER_BOILERPLATE + _LT_LINKER_BOILERPLATE + + # Allow CC to be a program name with arguments. + lt_save_CC="$CC" + lt_save_GCC=$GCC + lt_save_CFLAGS=$CFLAGS + CC=${F77-"f77"} + CFLAGS=$FFLAGS + compiler=$CC + _LT_TAGVAR(compiler, $1)=$CC + _LT_CC_BASENAME([$compiler]) + GCC=$G77 + if test -n "$compiler"; then + AC_MSG_CHECKING([if libtool supports shared libraries]) + AC_MSG_RESULT([$can_build_shared]) + + AC_MSG_CHECKING([whether to build shared libraries]) + test "$can_build_shared" = "no" && enable_shared=no + + # On AIX, shared libraries and static libraries use the same namespace, and + # are all built from PIC. + case $host_os in + aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + aix[[4-9]]*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; + esac + AC_MSG_RESULT([$enable_shared]) + + AC_MSG_CHECKING([whether to build static libraries]) + # Make sure either enable_shared or enable_static is yes. + test "$enable_shared" = yes || enable_static=yes + AC_MSG_RESULT([$enable_static]) + + _LT_TAGVAR(GCC, $1)="$G77" + _LT_TAGVAR(LD, $1)="$LD" + + ## CAVEAT EMPTOR: + ## There is no encapsulation within the following macros, do not change + ## the running order or otherwise move them around unless you know exactly + ## what you are doing... + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_SYS_DYNAMIC_LINKER($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) + fi # test -n "$compiler" + + GCC=$lt_save_GCC + CC="$lt_save_CC" + CFLAGS="$lt_save_CFLAGS" +fi # test "$_lt_disable_F77" != yes + +AC_LANG_POP +])# _LT_LANG_F77_CONFIG + + +# _LT_LANG_FC_CONFIG([TAG]) +# ------------------------- +# Ensure that the configuration variables for a Fortran compiler are +# suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to `libtool'. +m4_defun([_LT_LANG_FC_CONFIG], +[AC_LANG_PUSH(Fortran) + +if test -z "$FC" || test "X$FC" = "Xno"; then + _lt_disable_FC=yes +fi + +_LT_TAGVAR(archive_cmds_need_lc, $1)=no +_LT_TAGVAR(allow_undefined_flag, $1)= +_LT_TAGVAR(always_export_symbols, $1)=no +_LT_TAGVAR(archive_expsym_cmds, $1)= +_LT_TAGVAR(export_dynamic_flag_spec, $1)= +_LT_TAGVAR(hardcode_direct, $1)=no +_LT_TAGVAR(hardcode_direct_absolute, $1)=no +_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= +_LT_TAGVAR(hardcode_libdir_separator, $1)= +_LT_TAGVAR(hardcode_minus_L, $1)=no +_LT_TAGVAR(hardcode_automatic, $1)=no +_LT_TAGVAR(inherit_rpath, $1)=no +_LT_TAGVAR(module_cmds, $1)= +_LT_TAGVAR(module_expsym_cmds, $1)= +_LT_TAGVAR(link_all_deplibs, $1)=unknown +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds +_LT_TAGVAR(no_undefined_flag, $1)= +_LT_TAGVAR(whole_archive_flag_spec, $1)= +_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no + +# Source file extension for fc test sources. +ac_ext=${ac_fc_srcext-f} + +# Object file extension for compiled fc test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# No sense in running all these tests if we already determined that +# the FC compiler isn't working. Some variables (like enable_shared) +# are currently assumed to apply to all compilers on this platform, +# and will be corrupted by setting them based on a non-working compiler. +if test "$_lt_disable_FC" != yes; then + # Code to be used in simple compile tests + lt_simple_compile_test_code="\ + subroutine t + return + end +" + + # Code to be used in simple link tests + lt_simple_link_test_code="\ + program t + end +" + + # ltmain only uses $CC for tagged configurations so make sure $CC is set. + _LT_TAG_COMPILER + + # save warnings/boilerplate of simple test code + _LT_COMPILER_BOILERPLATE + _LT_LINKER_BOILERPLATE + + # Allow CC to be a program name with arguments. + lt_save_CC="$CC" + lt_save_GCC=$GCC + lt_save_CFLAGS=$CFLAGS + CC=${FC-"f95"} + CFLAGS=$FCFLAGS + compiler=$CC + GCC=$ac_cv_fc_compiler_gnu + + _LT_TAGVAR(compiler, $1)=$CC + _LT_CC_BASENAME([$compiler]) + + if test -n "$compiler"; then + AC_MSG_CHECKING([if libtool supports shared libraries]) + AC_MSG_RESULT([$can_build_shared]) + + AC_MSG_CHECKING([whether to build shared libraries]) + test "$can_build_shared" = "no" && enable_shared=no + + # On AIX, shared libraries and static libraries use the same namespace, and + # are all built from PIC. + case $host_os in + aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + aix[[4-9]]*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; + esac + AC_MSG_RESULT([$enable_shared]) + + AC_MSG_CHECKING([whether to build static libraries]) + # Make sure either enable_shared or enable_static is yes. + test "$enable_shared" = yes || enable_static=yes + AC_MSG_RESULT([$enable_static]) + + _LT_TAGVAR(GCC, $1)="$ac_cv_fc_compiler_gnu" + _LT_TAGVAR(LD, $1)="$LD" + + ## CAVEAT EMPTOR: + ## There is no encapsulation within the following macros, do not change + ## the running order or otherwise move them around unless you know exactly + ## what you are doing... + _LT_SYS_HIDDEN_LIBDEPS($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_SYS_DYNAMIC_LINKER($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) + fi # test -n "$compiler" + + GCC=$lt_save_GCC + CC=$lt_save_CC + CFLAGS=$lt_save_CFLAGS +fi # test "$_lt_disable_FC" != yes + +AC_LANG_POP +])# _LT_LANG_FC_CONFIG + + +# _LT_LANG_GCJ_CONFIG([TAG]) +# -------------------------- +# Ensure that the configuration variables for the GNU Java Compiler compiler +# are suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to `libtool'. +m4_defun([_LT_LANG_GCJ_CONFIG], +[AC_REQUIRE([LT_PROG_GCJ])dnl +AC_LANG_SAVE + +# Source file extension for Java test sources. +ac_ext=java + +# Object file extension for compiled Java test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="class foo {}" + +# Code to be used in simple link tests +lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }' + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. +_LT_TAG_COMPILER + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +# Allow CC to be a program name with arguments. +lt_save_CC=$CC +lt_save_CFLAGS=$CFLAGS +lt_save_GCC=$GCC +GCC=yes +CC=${GCJ-"gcj"} +CFLAGS=$GCJFLAGS +compiler=$CC +_LT_TAGVAR(compiler, $1)=$CC +_LT_TAGVAR(LD, $1)="$LD" +_LT_CC_BASENAME([$compiler]) + +# GCJ did not exist at the time GCC didn't implicitly link libc in. +_LT_TAGVAR(archive_cmds_need_lc, $1)=no + +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds + +if test -n "$compiler"; then + _LT_COMPILER_NO_RTTI($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) +fi + +AC_LANG_RESTORE + +GCC=$lt_save_GCC +CC=$lt_save_CC +CFLAGS=$lt_save_CFLAGS +])# _LT_LANG_GCJ_CONFIG + + +# _LT_LANG_GO_CONFIG([TAG]) +# -------------------------- +# Ensure that the configuration variables for the GNU Go compiler +# are suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to `libtool'. +m4_defun([_LT_LANG_GO_CONFIG], +[AC_REQUIRE([LT_PROG_GO])dnl +AC_LANG_SAVE + +# Source file extension for Go test sources. +ac_ext=go + +# Object file extension for compiled Go test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="package main; func main() { }" + +# Code to be used in simple link tests +lt_simple_link_test_code='package main; func main() { }' + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. +_LT_TAG_COMPILER + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +# Allow CC to be a program name with arguments. +lt_save_CC=$CC +lt_save_CFLAGS=$CFLAGS +lt_save_GCC=$GCC +GCC=yes +CC=${GOC-"gccgo"} +CFLAGS=$GOFLAGS +compiler=$CC +_LT_TAGVAR(compiler, $1)=$CC +_LT_TAGVAR(LD, $1)="$LD" +_LT_CC_BASENAME([$compiler]) + +# Go did not exist at the time GCC didn't implicitly link libc in. +_LT_TAGVAR(archive_cmds_need_lc, $1)=no + +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds + +if test -n "$compiler"; then + _LT_COMPILER_NO_RTTI($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) +fi + +AC_LANG_RESTORE + +GCC=$lt_save_GCC +CC=$lt_save_CC +CFLAGS=$lt_save_CFLAGS +])# _LT_LANG_GO_CONFIG + + +# _LT_LANG_RC_CONFIG([TAG]) +# ------------------------- +# Ensure that the configuration variables for the Windows resource compiler +# are suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to `libtool'. +m4_defun([_LT_LANG_RC_CONFIG], +[AC_REQUIRE([LT_PROG_RC])dnl +AC_LANG_SAVE + +# Source file extension for RC test sources. +ac_ext=rc + +# Object file extension for compiled RC test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }' + +# Code to be used in simple link tests +lt_simple_link_test_code="$lt_simple_compile_test_code" + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. +_LT_TAG_COMPILER + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +# Allow CC to be a program name with arguments. +lt_save_CC="$CC" +lt_save_CFLAGS=$CFLAGS +lt_save_GCC=$GCC +GCC= +CC=${RC-"windres"} +CFLAGS= +compiler=$CC +_LT_TAGVAR(compiler, $1)=$CC +_LT_CC_BASENAME([$compiler]) +_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes + +if test -n "$compiler"; then + : + _LT_CONFIG($1) +fi + +GCC=$lt_save_GCC +AC_LANG_RESTORE +CC=$lt_save_CC +CFLAGS=$lt_save_CFLAGS +])# _LT_LANG_RC_CONFIG + + +# LT_PROG_GCJ +# ----------- +AC_DEFUN([LT_PROG_GCJ], +[m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ], + [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ], + [AC_CHECK_TOOL(GCJ, gcj,) + test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2" + AC_SUBST(GCJFLAGS)])])[]dnl +]) + +# Old name: +AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([LT_AC_PROG_GCJ], []) + + +# LT_PROG_GO +# ---------- +AC_DEFUN([LT_PROG_GO], +[AC_CHECK_TOOL(GOC, gccgo,) +]) + + +# LT_PROG_RC +# ---------- +AC_DEFUN([LT_PROG_RC], +[AC_CHECK_TOOL(RC, windres,) +]) + +# Old name: +AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([LT_AC_PROG_RC], []) + + +# _LT_DECL_EGREP +# -------------- +# If we don't have a new enough Autoconf to choose the best grep +# available, choose the one first in the user's PATH. +m4_defun([_LT_DECL_EGREP], +[AC_REQUIRE([AC_PROG_EGREP])dnl +AC_REQUIRE([AC_PROG_FGREP])dnl +test -z "$GREP" && GREP=grep +_LT_DECL([], [GREP], [1], [A grep program that handles long lines]) +_LT_DECL([], [EGREP], [1], [An ERE matcher]) +_LT_DECL([], [FGREP], [1], [A literal string matcher]) +dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too +AC_SUBST([GREP]) +]) + + +# _LT_DECL_OBJDUMP +# -------------- +# If we don't have a new enough Autoconf to choose the best objdump +# available, choose the one first in the user's PATH. +m4_defun([_LT_DECL_OBJDUMP], +[AC_CHECK_TOOL(OBJDUMP, objdump, false) +test -z "$OBJDUMP" && OBJDUMP=objdump +_LT_DECL([], [OBJDUMP], [1], [An object symbol dumper]) +AC_SUBST([OBJDUMP]) +]) + +# _LT_DECL_DLLTOOL +# ---------------- +# Ensure DLLTOOL variable is set. +m4_defun([_LT_DECL_DLLTOOL], +[AC_CHECK_TOOL(DLLTOOL, dlltool, false) +test -z "$DLLTOOL" && DLLTOOL=dlltool +_LT_DECL([], [DLLTOOL], [1], [DLL creation program]) +AC_SUBST([DLLTOOL]) +]) + +# _LT_DECL_SED +# ------------ +# Check for a fully-functional sed program, that truncates +# as few characters as possible. Prefer GNU sed if found. +m4_defun([_LT_DECL_SED], +[AC_PROG_SED +test -z "$SED" && SED=sed +Xsed="$SED -e 1s/^X//" +_LT_DECL([], [SED], [1], [A sed program that does not truncate output]) +_LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"], + [Sed that helps us avoid accidentally triggering echo(1) options like -n]) +])# _LT_DECL_SED + +m4_ifndef([AC_PROG_SED], [ +# NOTE: This macro has been submitted for inclusion into # +# GNU Autoconf as AC_PROG_SED. When it is available in # +# a released version of Autoconf we should remove this # +# macro and use it instead. # + +m4_defun([AC_PROG_SED], +[AC_MSG_CHECKING([for a sed that does not truncate output]) +AC_CACHE_VAL(lt_cv_path_SED, +[# Loop through the user's path and test for sed and gsed. +# Then use that list of sed's as ones to test for truncation. +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for lt_ac_prog in sed gsed; do + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then + lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" + fi + done + done +done +IFS=$as_save_IFS +lt_ac_max=0 +lt_ac_count=0 +# Add /usr/xpg4/bin/sed as it is typically found on Solaris +# along with /bin/sed that truncates output. +for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do + test ! -f $lt_ac_sed && continue + cat /dev/null > conftest.in + lt_ac_count=0 + echo $ECHO_N "0123456789$ECHO_C" >conftest.in + # Check for GNU sed and select it if it is found. + if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then + lt_cv_path_SED=$lt_ac_sed + break + fi + while true; do + cat conftest.in conftest.in >conftest.tmp + mv conftest.tmp conftest.in + cp conftest.in conftest.nl + echo >>conftest.nl + $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break + cmp -s conftest.out conftest.nl || break + # 10000 chars as input seems more than enough + test $lt_ac_count -gt 10 && break + lt_ac_count=`expr $lt_ac_count + 1` + if test $lt_ac_count -gt $lt_ac_max; then + lt_ac_max=$lt_ac_count + lt_cv_path_SED=$lt_ac_sed + fi + done +done +]) +SED=$lt_cv_path_SED +AC_SUBST([SED]) +AC_MSG_RESULT([$SED]) +])#AC_PROG_SED +])#m4_ifndef + +# Old name: +AU_ALIAS([LT_AC_PROG_SED], [AC_PROG_SED]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([LT_AC_PROG_SED], []) + + +# _LT_CHECK_SHELL_FEATURES +# ------------------------ +# Find out whether the shell is Bourne or XSI compatible, +# or has some other useful features. +m4_defun([_LT_CHECK_SHELL_FEATURES], +[AC_MSG_CHECKING([whether the shell understands some XSI constructs]) +# Try some XSI features +xsi_shell=no +( _lt_dummy="a/b/c" + test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \ + = c,a/b,b/c, \ + && eval 'test $(( 1 + 1 )) -eq 2 \ + && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ + && xsi_shell=yes +AC_MSG_RESULT([$xsi_shell]) +_LT_CONFIG_LIBTOOL_INIT([xsi_shell='$xsi_shell']) + +AC_MSG_CHECKING([whether the shell understands "+="]) +lt_shell_append=no +( foo=bar; set foo baz; eval "$[1]+=\$[2]" && test "$foo" = barbaz ) \ + >/dev/null 2>&1 \ + && lt_shell_append=yes +AC_MSG_RESULT([$lt_shell_append]) +_LT_CONFIG_LIBTOOL_INIT([lt_shell_append='$lt_shell_append']) + +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + lt_unset=unset +else + lt_unset=false +fi +_LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl + +# test EBCDIC or ASCII +case `echo X|tr X '\101'` in + A) # ASCII based system + # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr + lt_SP2NL='tr \040 \012' + lt_NL2SP='tr \015\012 \040\040' + ;; + *) # EBCDIC based system + lt_SP2NL='tr \100 \n' + lt_NL2SP='tr \r\n \100\100' + ;; +esac +_LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl +_LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl +])# _LT_CHECK_SHELL_FEATURES + + +# _LT_PROG_FUNCTION_REPLACE (FUNCNAME, REPLACEMENT-BODY) +# ------------------------------------------------------ +# In `$cfgfile', look for function FUNCNAME delimited by `^FUNCNAME ()$' and +# '^} FUNCNAME ', and replace its body with REPLACEMENT-BODY. +m4_defun([_LT_PROG_FUNCTION_REPLACE], +[dnl { +sed -e '/^$1 ()$/,/^} # $1 /c\ +$1 ()\ +{\ +m4_bpatsubsts([$2], [$], [\\], [^\([ ]\)], [\\\1]) +} # Extended-shell $1 implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: +]) + + +# _LT_PROG_REPLACE_SHELLFNS +# ------------------------- +# Replace existing portable implementations of several shell functions with +# equivalent extended shell implementations where those features are available.. +m4_defun([_LT_PROG_REPLACE_SHELLFNS], +[if test x"$xsi_shell" = xyes; then + _LT_PROG_FUNCTION_REPLACE([func_dirname], [dnl + case ${1} in + */*) func_dirname_result="${1%/*}${2}" ;; + * ) func_dirname_result="${3}" ;; + esac]) + + _LT_PROG_FUNCTION_REPLACE([func_basename], [dnl + func_basename_result="${1##*/}"]) + + _LT_PROG_FUNCTION_REPLACE([func_dirname_and_basename], [dnl + case ${1} in + */*) func_dirname_result="${1%/*}${2}" ;; + * ) func_dirname_result="${3}" ;; + esac + func_basename_result="${1##*/}"]) + + _LT_PROG_FUNCTION_REPLACE([func_stripname], [dnl + # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are + # positional parameters, so assign one to ordinary parameter first. + func_stripname_result=${3} + func_stripname_result=${func_stripname_result#"${1}"} + func_stripname_result=${func_stripname_result%"${2}"}]) + + _LT_PROG_FUNCTION_REPLACE([func_split_long_opt], [dnl + func_split_long_opt_name=${1%%=*} + func_split_long_opt_arg=${1#*=}]) + + _LT_PROG_FUNCTION_REPLACE([func_split_short_opt], [dnl + func_split_short_opt_arg=${1#??} + func_split_short_opt_name=${1%"$func_split_short_opt_arg"}]) + + _LT_PROG_FUNCTION_REPLACE([func_lo2o], [dnl + case ${1} in + *.lo) func_lo2o_result=${1%.lo}.${objext} ;; + *) func_lo2o_result=${1} ;; + esac]) + + _LT_PROG_FUNCTION_REPLACE([func_xform], [ func_xform_result=${1%.*}.lo]) + + _LT_PROG_FUNCTION_REPLACE([func_arith], [ func_arith_result=$(( $[*] ))]) + + _LT_PROG_FUNCTION_REPLACE([func_len], [ func_len_result=${#1}]) +fi + +if test x"$lt_shell_append" = xyes; then + _LT_PROG_FUNCTION_REPLACE([func_append], [ eval "${1}+=\\${2}"]) + + _LT_PROG_FUNCTION_REPLACE([func_append_quoted], [dnl + func_quote_for_eval "${2}" +dnl m4 expansion turns \\\\ into \\, and then the shell eval turns that into \ + eval "${1}+=\\\\ \\$func_quote_for_eval_result"]) + + # Save a `func_append' function call where possible by direct use of '+=' + sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") + test 0 -eq $? || _lt_function_replace_fail=: +else + # Save a `func_append' function call even when '+=' is not available + sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") + test 0 -eq $? || _lt_function_replace_fail=: +fi + +if test x"$_lt_function_replace_fail" = x":"; then + AC_MSG_WARN([Unable to substitute extended shell functions in $ofile]) +fi +]) + +# _LT_PATH_CONVERSION_FUNCTIONS +# ----------------------------- +# Determine which file name conversion functions should be used by +# func_to_host_file (and, implicitly, by func_to_host_path). These are needed +# for certain cross-compile configurations and native mingw. +m4_defun([_LT_PATH_CONVERSION_FUNCTIONS], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +AC_MSG_CHECKING([how to convert $build file names to $host format]) +AC_CACHE_VAL(lt_cv_to_host_file_cmd, +[case $host in + *-*-mingw* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 + ;; + *-*-cygwin* ) + lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 + ;; + * ) # otherwise, assume *nix + lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 + ;; + esac + ;; + *-*-cygwin* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin + ;; + *-*-cygwin* ) + lt_cv_to_host_file_cmd=func_convert_file_noop + ;; + * ) # otherwise, assume *nix + lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin + ;; + esac + ;; + * ) # unhandled hosts (and "normal" native builds) + lt_cv_to_host_file_cmd=func_convert_file_noop + ;; +esac +]) +to_host_file_cmd=$lt_cv_to_host_file_cmd +AC_MSG_RESULT([$lt_cv_to_host_file_cmd]) +_LT_DECL([to_host_file_cmd], [lt_cv_to_host_file_cmd], + [0], [convert $build file names to $host format])dnl + +AC_MSG_CHECKING([how to convert $build file names to toolchain format]) +AC_CACHE_VAL(lt_cv_to_tool_file_cmd, +[#assume ordinary cross tools, or native build. +lt_cv_to_tool_file_cmd=func_convert_file_noop +case $host in + *-*-mingw* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 + ;; + esac + ;; +esac +]) +to_tool_file_cmd=$lt_cv_to_tool_file_cmd +AC_MSG_RESULT([$lt_cv_to_tool_file_cmd]) +_LT_DECL([to_tool_file_cmd], [lt_cv_to_tool_file_cmd], + [0], [convert $build files to toolchain format])dnl +])# _LT_PATH_CONVERSION_FUNCTIONS + +# Helper functions for option handling. -*- Autoconf -*- +# +# Copyright (C) 2004, 2005, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# Written by Gary V. Vaughan, 2004 +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. + +# serial 7 ltoptions.m4 + +# This is to help aclocal find these macros, as it can't see m4_define. +AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])]) + + +# _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME) +# ------------------------------------------ +m4_define([_LT_MANGLE_OPTION], +[[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])]) + + +# _LT_SET_OPTION(MACRO-NAME, OPTION-NAME) +# --------------------------------------- +# Set option OPTION-NAME for macro MACRO-NAME, and if there is a +# matching handler defined, dispatch to it. Other OPTION-NAMEs are +# saved as a flag. +m4_define([_LT_SET_OPTION], +[m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl +m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]), + _LT_MANGLE_DEFUN([$1], [$2]), + [m4_warning([Unknown $1 option `$2'])])[]dnl +]) + + +# _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET]) +# ------------------------------------------------------------ +# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. +m4_define([_LT_IF_OPTION], +[m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])]) + + +# _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET) +# ------------------------------------------------------- +# Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME +# are set. +m4_define([_LT_UNLESS_OPTIONS], +[m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), + [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option), + [m4_define([$0_found])])])[]dnl +m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3 +])[]dnl +]) + + +# _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST) +# ---------------------------------------- +# OPTION-LIST is a space-separated list of Libtool options associated +# with MACRO-NAME. If any OPTION has a matching handler declared with +# LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about +# the unknown option and exit. +m4_defun([_LT_SET_OPTIONS], +[# Set options +m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), + [_LT_SET_OPTION([$1], _LT_Option)]) + +m4_if([$1],[LT_INIT],[ + dnl + dnl Simply set some default values (i.e off) if boolean options were not + dnl specified: + _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no + ]) + _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no + ]) + dnl + dnl If no reference was made to various pairs of opposing options, then + dnl we run the default mode handler for the pair. For example, if neither + dnl `shared' nor `disable-shared' was passed, we enable building of shared + dnl archives by default: + _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED]) + _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC]) + _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC]) + _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install], + [_LT_ENABLE_FAST_INSTALL]) + ]) +])# _LT_SET_OPTIONS + + + +# _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME) +# ----------------------------------------- +m4_define([_LT_MANGLE_DEFUN], +[[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])]) + + +# LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE) +# ----------------------------------------------- +m4_define([LT_OPTION_DEFINE], +[m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl +])# LT_OPTION_DEFINE + + +# dlopen +# ------ +LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes +]) + +AU_DEFUN([AC_LIBTOOL_DLOPEN], +[_LT_SET_OPTION([LT_INIT], [dlopen]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you +put the `dlopen' option into LT_INIT's first parameter.]) +]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], []) + + +# win32-dll +# --------- +# Declare package support for building win32 dll's. +LT_OPTION_DEFINE([LT_INIT], [win32-dll], +[enable_win32_dll=yes + +case $host in +*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*) + AC_CHECK_TOOL(AS, as, false) + AC_CHECK_TOOL(DLLTOOL, dlltool, false) + AC_CHECK_TOOL(OBJDUMP, objdump, false) + ;; +esac + +test -z "$AS" && AS=as +_LT_DECL([], [AS], [1], [Assembler program])dnl + +test -z "$DLLTOOL" && DLLTOOL=dlltool +_LT_DECL([], [DLLTOOL], [1], [DLL creation program])dnl + +test -z "$OBJDUMP" && OBJDUMP=objdump +_LT_DECL([], [OBJDUMP], [1], [Object dumper program])dnl +])# win32-dll + +AU_DEFUN([AC_LIBTOOL_WIN32_DLL], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +_LT_SET_OPTION([LT_INIT], [win32-dll]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you +put the `win32-dll' option into LT_INIT's first parameter.]) +]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], []) + + +# _LT_ENABLE_SHARED([DEFAULT]) +# ---------------------------- +# implement the --enable-shared flag, and supports the `shared' and +# `disable-shared' LT_INIT options. +# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. +m4_define([_LT_ENABLE_SHARED], +[m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl +AC_ARG_ENABLE([shared], + [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@], + [build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_shared=yes ;; + no) enable_shared=no ;; + *) + enable_shared=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_shared=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac], + [enable_shared=]_LT_ENABLE_SHARED_DEFAULT) + + _LT_DECL([build_libtool_libs], [enable_shared], [0], + [Whether or not to build shared libraries]) +])# _LT_ENABLE_SHARED + +LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])]) +LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])]) + +# Old names: +AC_DEFUN([AC_ENABLE_SHARED], +[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared]) +]) + +AC_DEFUN([AC_DISABLE_SHARED], +[_LT_SET_OPTION([LT_INIT], [disable-shared]) +]) + +AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) +AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AM_ENABLE_SHARED], []) +dnl AC_DEFUN([AM_DISABLE_SHARED], []) + + + +# _LT_ENABLE_STATIC([DEFAULT]) +# ---------------------------- +# implement the --enable-static flag, and support the `static' and +# `disable-static' LT_INIT options. +# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. +m4_define([_LT_ENABLE_STATIC], +[m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl +AC_ARG_ENABLE([static], + [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@], + [build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_static=yes ;; + no) enable_static=no ;; + *) + enable_static=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_static=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac], + [enable_static=]_LT_ENABLE_STATIC_DEFAULT) + + _LT_DECL([build_old_libs], [enable_static], [0], + [Whether or not to build static libraries]) +])# _LT_ENABLE_STATIC + +LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])]) +LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])]) + +# Old names: +AC_DEFUN([AC_ENABLE_STATIC], +[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static]) +]) + +AC_DEFUN([AC_DISABLE_STATIC], +[_LT_SET_OPTION([LT_INIT], [disable-static]) +]) + +AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) +AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AM_ENABLE_STATIC], []) +dnl AC_DEFUN([AM_DISABLE_STATIC], []) + + + +# _LT_ENABLE_FAST_INSTALL([DEFAULT]) +# ---------------------------------- +# implement the --enable-fast-install flag, and support the `fast-install' +# and `disable-fast-install' LT_INIT options. +# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. +m4_define([_LT_ENABLE_FAST_INSTALL], +[m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl +AC_ARG_ENABLE([fast-install], + [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], + [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_fast_install=yes ;; + no) enable_fast_install=no ;; + *) + enable_fast_install=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_fast_install=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac], + [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT) + +_LT_DECL([fast_install], [enable_fast_install], [0], + [Whether or not to optimize for fast installation])dnl +])# _LT_ENABLE_FAST_INSTALL + +LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])]) +LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])]) + +# Old names: +AU_DEFUN([AC_ENABLE_FAST_INSTALL], +[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you put +the `fast-install' option into LT_INIT's first parameter.]) +]) + +AU_DEFUN([AC_DISABLE_FAST_INSTALL], +[_LT_SET_OPTION([LT_INIT], [disable-fast-install]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you put +the `disable-fast-install' option into LT_INIT's first parameter.]) +]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], []) +dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], []) + + +# _LT_WITH_PIC([MODE]) +# -------------------- +# implement the --with-pic flag, and support the `pic-only' and `no-pic' +# LT_INIT options. +# MODE is either `yes' or `no'. If omitted, it defaults to `both'. +m4_define([_LT_WITH_PIC], +[AC_ARG_WITH([pic], + [AS_HELP_STRING([--with-pic@<:@=PKGS@:>@], + [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], + [lt_p=${PACKAGE-default} + case $withval in + yes|no) pic_mode=$withval ;; + *) + pic_mode=default + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for lt_pkg in $withval; do + IFS="$lt_save_ifs" + if test "X$lt_pkg" = "X$lt_p"; then + pic_mode=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac], + [pic_mode=default]) + +test -z "$pic_mode" && pic_mode=m4_default([$1], [default]) + +_LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl +])# _LT_WITH_PIC + +LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])]) +LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])]) + +# Old name: +AU_DEFUN([AC_LIBTOOL_PICMODE], +[_LT_SET_OPTION([LT_INIT], [pic-only]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you +put the `pic-only' option into LT_INIT's first parameter.]) +]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_PICMODE], []) + + +m4_define([_LTDL_MODE], []) +LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive], + [m4_define([_LTDL_MODE], [nonrecursive])]) +LT_OPTION_DEFINE([LTDL_INIT], [recursive], + [m4_define([_LTDL_MODE], [recursive])]) +LT_OPTION_DEFINE([LTDL_INIT], [subproject], + [m4_define([_LTDL_MODE], [subproject])]) + +m4_define([_LTDL_TYPE], []) +LT_OPTION_DEFINE([LTDL_INIT], [installable], + [m4_define([_LTDL_TYPE], [installable])]) +LT_OPTION_DEFINE([LTDL_INIT], [convenience], + [m4_define([_LTDL_TYPE], [convenience])]) + +# ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*- +# +# Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc. +# Written by Gary V. Vaughan, 2004 +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. + +# serial 6 ltsugar.m4 + +# This is to help aclocal find these macros, as it can't see m4_define. +AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])]) + + +# lt_join(SEP, ARG1, [ARG2...]) +# ----------------------------- +# Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their +# associated separator. +# Needed until we can rely on m4_join from Autoconf 2.62, since all earlier +# versions in m4sugar had bugs. +m4_define([lt_join], +[m4_if([$#], [1], [], + [$#], [2], [[$2]], + [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])]) +m4_define([_lt_join], +[m4_if([$#$2], [2], [], + [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])]) + + +# lt_car(LIST) +# lt_cdr(LIST) +# ------------ +# Manipulate m4 lists. +# These macros are necessary as long as will still need to support +# Autoconf-2.59 which quotes differently. +m4_define([lt_car], [[$1]]) +m4_define([lt_cdr], +[m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])], + [$#], 1, [], + [m4_dquote(m4_shift($@))])]) +m4_define([lt_unquote], $1) + + +# lt_append(MACRO-NAME, STRING, [SEPARATOR]) +# ------------------------------------------ +# Redefine MACRO-NAME to hold its former content plus `SEPARATOR'`STRING'. +# Note that neither SEPARATOR nor STRING are expanded; they are appended +# to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked). +# No SEPARATOR is output if MACRO-NAME was previously undefined (different +# than defined and empty). +# +# This macro is needed until we can rely on Autoconf 2.62, since earlier +# versions of m4sugar mistakenly expanded SEPARATOR but not STRING. +m4_define([lt_append], +[m4_define([$1], + m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])]) + + + +# lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...]) +# ---------------------------------------------------------- +# Produce a SEP delimited list of all paired combinations of elements of +# PREFIX-LIST with SUFFIX1 through SUFFIXn. Each element of the list +# has the form PREFIXmINFIXSUFFIXn. +# Needed until we can rely on m4_combine added in Autoconf 2.62. +m4_define([lt_combine], +[m4_if(m4_eval([$# > 3]), [1], + [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl +[[m4_foreach([_Lt_prefix], [$2], + [m4_foreach([_Lt_suffix], + ]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[, + [_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])]) + + +# lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ]) +# ----------------------------------------------------------------------- +# Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited +# by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ. +m4_define([lt_if_append_uniq], +[m4_ifdef([$1], + [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1], + [lt_append([$1], [$2], [$3])$4], + [$5])], + [lt_append([$1], [$2], [$3])$4])]) + + +# lt_dict_add(DICT, KEY, VALUE) +# ----------------------------- +m4_define([lt_dict_add], +[m4_define([$1($2)], [$3])]) + + +# lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE) +# -------------------------------------------- +m4_define([lt_dict_add_subkey], +[m4_define([$1($2:$3)], [$4])]) + + +# lt_dict_fetch(DICT, KEY, [SUBKEY]) +# ---------------------------------- +m4_define([lt_dict_fetch], +[m4_ifval([$3], + m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]), + m4_ifdef([$1($2)], [m4_defn([$1($2)])]))]) + + +# lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE]) +# ----------------------------------------------------------------- +m4_define([lt_if_dict_fetch], +[m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4], + [$5], + [$6])]) + + +# lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...]) +# -------------------------------------------------------------- +m4_define([lt_dict_filter], +[m4_if([$5], [], [], + [lt_join(m4_quote(m4_default([$4], [[, ]])), + lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]), + [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl +]) + +# ltversion.m4 -- version numbers -*- Autoconf -*- +# +# Copyright (C) 2004 Free Software Foundation, Inc. +# Written by Scott James Remnant, 2004 +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. + +# @configure_input@ + +# serial 3337 ltversion.m4 +# This file is part of GNU Libtool + +m4_define([LT_PACKAGE_VERSION], [2.4.2]) +m4_define([LT_PACKAGE_REVISION], [1.3337]) + +AC_DEFUN([LTVERSION_VERSION], +[macro_version='2.4.2' +macro_revision='1.3337' +_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?]) +_LT_DECL(, macro_revision, 0) +]) + +# lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*- +# +# Copyright (C) 2004, 2005, 2007, 2009 Free Software Foundation, Inc. +# Written by Scott James Remnant, 2004. +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. + +# serial 5 lt~obsolete.m4 + +# These exist entirely to fool aclocal when bootstrapping libtool. +# +# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN) +# which have later been changed to m4_define as they aren't part of the +# exported API, or moved to Autoconf or Automake where they belong. +# +# The trouble is, aclocal is a bit thick. It'll see the old AC_DEFUN +# in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us +# using a macro with the same name in our local m4/libtool.m4 it'll +# pull the old libtool.m4 in (it doesn't see our shiny new m4_define +# and doesn't know about Autoconf macros at all.) +# +# So we provide this file, which has a silly filename so it's always +# included after everything else. This provides aclocal with the +# AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything +# because those macros already exist, or will be overwritten later. +# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. +# +# Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here. +# Yes, that means every name once taken will need to remain here until +# we give up compatibility with versions before 1.7, at which point +# we need to keep only those names which we still refer to. + +# This is to help aclocal find these macros, as it can't see m4_define. +AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])]) + +m4_ifndef([AC_LIBTOOL_LINKER_OPTION], [AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])]) +m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP])]) +m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])]) +m4_ifndef([_LT_AC_SHELL_INIT], [AC_DEFUN([_LT_AC_SHELL_INIT])]) +m4_ifndef([_LT_AC_SYS_LIBPATH_AIX], [AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])]) +m4_ifndef([_LT_PROG_LTMAIN], [AC_DEFUN([_LT_PROG_LTMAIN])]) +m4_ifndef([_LT_AC_TAGVAR], [AC_DEFUN([_LT_AC_TAGVAR])]) +m4_ifndef([AC_LTDL_ENABLE_INSTALL], [AC_DEFUN([AC_LTDL_ENABLE_INSTALL])]) +m4_ifndef([AC_LTDL_PREOPEN], [AC_DEFUN([AC_LTDL_PREOPEN])]) +m4_ifndef([_LT_AC_SYS_COMPILER], [AC_DEFUN([_LT_AC_SYS_COMPILER])]) +m4_ifndef([_LT_AC_LOCK], [AC_DEFUN([_LT_AC_LOCK])]) +m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE], [AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])]) +m4_ifndef([_LT_AC_TRY_DLOPEN_SELF], [AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])]) +m4_ifndef([AC_LIBTOOL_PROG_CC_C_O], [AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])]) +m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])]) +m4_ifndef([AC_LIBTOOL_OBJDIR], [AC_DEFUN([AC_LIBTOOL_OBJDIR])]) +m4_ifndef([AC_LTDL_OBJDIR], [AC_DEFUN([AC_LTDL_OBJDIR])]) +m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])]) +m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP], [AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])]) +m4_ifndef([AC_PATH_MAGIC], [AC_DEFUN([AC_PATH_MAGIC])]) +m4_ifndef([AC_PROG_LD_GNU], [AC_DEFUN([AC_PROG_LD_GNU])]) +m4_ifndef([AC_PROG_LD_RELOAD_FLAG], [AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])]) +m4_ifndef([AC_DEPLIBS_CHECK_METHOD], [AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])]) +m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])]) +m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])]) +m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])]) +m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])]) +m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP], [AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])]) +m4_ifndef([LT_AC_PROG_EGREP], [AC_DEFUN([LT_AC_PROG_EGREP])]) +m4_ifndef([LT_AC_PROG_SED], [AC_DEFUN([LT_AC_PROG_SED])]) +m4_ifndef([_LT_CC_BASENAME], [AC_DEFUN([_LT_CC_BASENAME])]) +m4_ifndef([_LT_COMPILER_BOILERPLATE], [AC_DEFUN([_LT_COMPILER_BOILERPLATE])]) +m4_ifndef([_LT_LINKER_BOILERPLATE], [AC_DEFUN([_LT_LINKER_BOILERPLATE])]) +m4_ifndef([_AC_PROG_LIBTOOL], [AC_DEFUN([_AC_PROG_LIBTOOL])]) +m4_ifndef([AC_LIBTOOL_SETUP], [AC_DEFUN([AC_LIBTOOL_SETUP])]) +m4_ifndef([_LT_AC_CHECK_DLFCN], [AC_DEFUN([_LT_AC_CHECK_DLFCN])]) +m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])]) +m4_ifndef([_LT_AC_TAGCONFIG], [AC_DEFUN([_LT_AC_TAGCONFIG])]) +m4_ifndef([AC_DISABLE_FAST_INSTALL], [AC_DEFUN([AC_DISABLE_FAST_INSTALL])]) +m4_ifndef([_LT_AC_LANG_CXX], [AC_DEFUN([_LT_AC_LANG_CXX])]) +m4_ifndef([_LT_AC_LANG_F77], [AC_DEFUN([_LT_AC_LANG_F77])]) +m4_ifndef([_LT_AC_LANG_GCJ], [AC_DEFUN([_LT_AC_LANG_GCJ])]) +m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])]) +m4_ifndef([_LT_AC_LANG_C_CONFIG], [AC_DEFUN([_LT_AC_LANG_C_CONFIG])]) +m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])]) +m4_ifndef([_LT_AC_LANG_CXX_CONFIG], [AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])]) +m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])]) +m4_ifndef([_LT_AC_LANG_F77_CONFIG], [AC_DEFUN([_LT_AC_LANG_F77_CONFIG])]) +m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])]) +m4_ifndef([_LT_AC_LANG_GCJ_CONFIG], [AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])]) +m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])]) +m4_ifndef([_LT_AC_LANG_RC_CONFIG], [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])]) +m4_ifndef([AC_LIBTOOL_CONFIG], [AC_DEFUN([AC_LIBTOOL_CONFIG])]) +m4_ifndef([_LT_AC_FILE_LTDLL_C], [AC_DEFUN([_LT_AC_FILE_LTDLL_C])]) +m4_ifndef([_LT_REQUIRED_DARWIN_CHECKS], [AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS])]) +m4_ifndef([_LT_AC_PROG_CXXCPP], [AC_DEFUN([_LT_AC_PROG_CXXCPP])]) +m4_ifndef([_LT_PREPARE_SED_QUOTE_VARS], [AC_DEFUN([_LT_PREPARE_SED_QUOTE_VARS])]) +m4_ifndef([_LT_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_PROG_ECHO_BACKSLASH])]) +m4_ifndef([_LT_PROG_F77], [AC_DEFUN([_LT_PROG_F77])]) +m4_ifndef([_LT_PROG_FC], [AC_DEFUN([_LT_PROG_FC])]) +m4_ifndef([_LT_PROG_CXX], [AC_DEFUN([_LT_PROG_CXX])]) + +# Copyright (C) 2002-2013 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_AUTOMAKE_VERSION(VERSION) +# ---------------------------- +# Automake X.Y traces this macro to ensure aclocal.m4 has been +# generated from the m4 files accompanying Automake X.Y. +# (This private macro should not be called outside this file.) +AC_DEFUN([AM_AUTOMAKE_VERSION], +[am__api_version='1.13' +dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to +dnl require some minimum version. Point them to the right macro. +m4_if([$1], [1.13.4], [], + [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl +]) + +# _AM_AUTOCONF_VERSION(VERSION) +# ----------------------------- +# aclocal traces this macro to find the Autoconf version. +# This is a private macro too. Using m4_define simplifies +# the logic in aclocal, which can simply ignore this definition. +m4_define([_AM_AUTOCONF_VERSION], []) + +# AM_SET_CURRENT_AUTOMAKE_VERSION +# ------------------------------- +# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. +# This function is AC_REQUIREd by AM_INIT_AUTOMAKE. +AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], +[AM_AUTOMAKE_VERSION([1.13.4])dnl +m4_ifndef([AC_AUTOCONF_VERSION], + [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl +_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) + +# AM_AUX_DIR_EXPAND -*- Autoconf -*- + +# Copyright (C) 2001-2013 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets +# $ac_aux_dir to '$srcdir/foo'. In other projects, it is set to +# '$srcdir', '$srcdir/..', or '$srcdir/../..'. +# +# Of course, Automake must honor this variable whenever it calls a +# tool from the auxiliary directory. The problem is that $srcdir (and +# therefore $ac_aux_dir as well) can be either absolute or relative, +# depending on how configure is run. This is pretty annoying, since +# it makes $ac_aux_dir quite unusable in subdirectories: in the top +# source directory, any form will work fine, but in subdirectories a +# relative path needs to be adjusted first. +# +# $ac_aux_dir/missing +# fails when called from a subdirectory if $ac_aux_dir is relative +# $top_srcdir/$ac_aux_dir/missing +# fails if $ac_aux_dir is absolute, +# fails when called from a subdirectory in a VPATH build with +# a relative $ac_aux_dir +# +# The reason of the latter failure is that $top_srcdir and $ac_aux_dir +# are both prefixed by $srcdir. In an in-source build this is usually +# harmless because $srcdir is '.', but things will broke when you +# start a VPATH build or use an absolute $srcdir. +# +# So we could use something similar to $top_srcdir/$ac_aux_dir/missing, +# iff we strip the leading $srcdir from $ac_aux_dir. That would be: +# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` +# and then we would define $MISSING as +# MISSING="\${SHELL} $am_aux_dir/missing" +# This will work as long as MISSING is not called from configure, because +# unfortunately $(top_srcdir) has no meaning in configure. +# However there are other variables, like CC, which are often used in +# configure, and could therefore not use this "fixed" $ac_aux_dir. +# +# Another solution, used here, is to always expand $ac_aux_dir to an +# absolute PATH. The drawback is that using absolute paths prevent a +# configured tree to be moved without reconfiguration. + +AC_DEFUN([AM_AUX_DIR_EXPAND], +[dnl Rely on autoconf to set up CDPATH properly. +AC_PREREQ([2.50])dnl +# expand $ac_aux_dir to an absolute path +am_aux_dir=`cd $ac_aux_dir && pwd` +]) + +# AM_CONDITIONAL -*- Autoconf -*- + +# Copyright (C) 1997-2013 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_CONDITIONAL(NAME, SHELL-CONDITION) +# ------------------------------------- +# Define a conditional. +AC_DEFUN([AM_CONDITIONAL], +[AC_PREREQ([2.52])dnl + m4_if([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], + [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl +AC_SUBST([$1_TRUE])dnl +AC_SUBST([$1_FALSE])dnl +_AM_SUBST_NOTMAKE([$1_TRUE])dnl +_AM_SUBST_NOTMAKE([$1_FALSE])dnl +m4_define([_AM_COND_VALUE_$1], [$2])dnl +if $2; then + $1_TRUE= + $1_FALSE='#' +else + $1_TRUE='#' + $1_FALSE= +fi +AC_CONFIG_COMMANDS_PRE( +[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then + AC_MSG_ERROR([[conditional "$1" was never defined. +Usually this means the macro was only invoked conditionally.]]) +fi])]) + +# Copyright (C) 1999-2013 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + + +# There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be +# written in clear, in which case automake, when reading aclocal.m4, +# will think it sees a *use*, and therefore will trigger all it's +# C support machinery. Also note that it means that autoscan, seeing +# CC etc. in the Makefile, will ask for an AC_PROG_CC use... + + +# _AM_DEPENDENCIES(NAME) +# ---------------------- +# See how the compiler implements dependency checking. +# NAME is "CC", "CXX", "OBJC", "OBJCXX", "UPC", or "GJC". +# We try a few techniques and use that to set a single cache variable. +# +# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was +# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular +# dependency, and given that the user is not expected to run this macro, +# just rely on AC_PROG_CC. +AC_DEFUN([_AM_DEPENDENCIES], +[AC_REQUIRE([AM_SET_DEPDIR])dnl +AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl +AC_REQUIRE([AM_MAKE_INCLUDE])dnl +AC_REQUIRE([AM_DEP_TRACK])dnl + +m4_if([$1], [CC], [depcc="$CC" am_compiler_list=], + [$1], [CXX], [depcc="$CXX" am_compiler_list=], + [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'], + [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'], + [$1], [UPC], [depcc="$UPC" am_compiler_list=], + [$1], [GCJ], [depcc="$GCJ" am_compiler_list='gcc3 gcc'], + [depcc="$$1" am_compiler_list=]) + +AC_CACHE_CHECK([dependency style of $depcc], + [am_cv_$1_dependencies_compiler_type], +[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named 'D' -- because '-MD' means "put the output + # in D". + rm -rf conftest.dir + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_$1_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` + fi + am__universal=false + m4_case([$1], [CC], + [case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac], + [CXX], + [case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac]) + + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with + # Solaris 10 /bin/sh. + echo '/* dummy */' > sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + # We check with '-c' and '-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle '-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs. + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" + case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; + nosideeffect) + # After this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested. + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + msvc7 | msvc7msys | msvisualcpp | msvcmsys) + # This compiler won't grok '-c -o', but also, the minuso test has + # not run yet. These depmodes are late enough in the game, and + # so weak that their functioning should not be impacted. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; + none) break ;; + esac + if depmode=$depmode \ + source=sub/conftest.c object=$am__obj \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_$1_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_$1_dependencies_compiler_type=none +fi +]) +AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) +AM_CONDITIONAL([am__fastdep$1], [ + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) +]) + + +# AM_SET_DEPDIR +# ------------- +# Choose a directory name for dependency files. +# This macro is AC_REQUIREd in _AM_DEPENDENCIES. +AC_DEFUN([AM_SET_DEPDIR], +[AC_REQUIRE([AM_SET_LEADING_DOT])dnl +AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl +]) + + +# AM_DEP_TRACK +# ------------ +AC_DEFUN([AM_DEP_TRACK], +[AC_ARG_ENABLE([dependency-tracking], [dnl +AS_HELP_STRING( + [--enable-dependency-tracking], + [do not reject slow dependency extractors]) +AS_HELP_STRING( + [--disable-dependency-tracking], + [speeds up one-time build])]) +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' + am__nodep='_no' +fi +AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) +AC_SUBST([AMDEPBACKSLASH])dnl +_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl +AC_SUBST([am__nodep])dnl +_AM_SUBST_NOTMAKE([am__nodep])dnl +]) + +# Generate code to set up dependency tracking. -*- Autoconf -*- + +# Copyright (C) 1999-2013 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + + +# _AM_OUTPUT_DEPENDENCY_COMMANDS +# ------------------------------ +AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], +[{ + # Older Autoconf quotes --file arguments for eval, but not when files + # are listed without --file. Let's play safe and only enable the eval + # if we detect the quoting. + case $CONFIG_FILES in + *\'*) eval set x "$CONFIG_FILES" ;; + *) set x $CONFIG_FILES ;; + esac + shift + for mf + do + # Strip MF so we end up with the name of the file. + mf=`echo "$mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile or not. + # We used to match only the files named 'Makefile.in', but + # some people rename them; so instead we look at the file content. + # Grep'ing the first line is not enough: some people post-process + # each Makefile.in and add a new line on top of each file to say so. + # Grep'ing the whole file is not good either: AIX grep has a line + # limit of 2048, but all sed's we know have understand at least 4000. + if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then + dirpart=`AS_DIRNAME("$mf")` + else + continue + fi + # Extract the definition of DEPDIR, am__include, and am__quote + # from the Makefile without running 'make'. + DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` + test -z "$DEPDIR" && continue + am__include=`sed -n 's/^am__include = //p' < "$mf"` + test -z "$am__include" && continue + am__quote=`sed -n 's/^am__quote = //p' < "$mf"` + # Find all dependency output files, they are included files with + # $(DEPDIR) in their names. We invoke sed twice because it is the + # simplest approach to changing $(DEPDIR) to its actual value in the + # expansion. + for file in `sed -n " + s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do + # Make sure the directory exists. + test -f "$dirpart/$file" && continue + fdir=`AS_DIRNAME(["$file"])` + AS_MKDIR_P([$dirpart/$fdir]) + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" + done + done +} +])# _AM_OUTPUT_DEPENDENCY_COMMANDS + + +# AM_OUTPUT_DEPENDENCY_COMMANDS +# ----------------------------- +# This macro should only be invoked once -- use via AC_REQUIRE. +# +# This code is only required when automatic dependency tracking +# is enabled. FIXME. This creates each '.P' file that we will +# need in order to bootstrap the dependency handling code. +AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], +[AC_CONFIG_COMMANDS([depfiles], + [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], + [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) +]) + +# Do all the work for Automake. -*- Autoconf -*- + +# Copyright (C) 1996-2013 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This macro actually does too much. Some checks are only needed if +# your package does certain things. But this isn't really a big deal. + +# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) +# AM_INIT_AUTOMAKE([OPTIONS]) +# ----------------------------------------------- +# The call with PACKAGE and VERSION arguments is the old style +# call (pre autoconf-2.50), which is being phased out. PACKAGE +# and VERSION should now be passed to AC_INIT and removed from +# the call to AM_INIT_AUTOMAKE. +# We support both call styles for the transition. After +# the next Automake release, Autoconf can make the AC_INIT +# arguments mandatory, and then we can depend on a new Autoconf +# release and drop the old call support. +AC_DEFUN([AM_INIT_AUTOMAKE], +[AC_PREREQ([2.65])dnl +dnl Autoconf wants to disallow AM_ names. We explicitly allow +dnl the ones we care about. +m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl +AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl +AC_REQUIRE([AC_PROG_INSTALL])dnl +if test "`cd $srcdir && pwd`" != "`pwd`"; then + # Use -I$(srcdir) only when $(srcdir) != ., so that make's output + # is not polluted with repeated "-I." + AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl + # test to see if srcdir already configured + if test -f $srcdir/config.status; then + AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) + fi +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi +AC_SUBST([CYGPATH_W]) + +# Define the identity of the package. +dnl Distinguish between old-style and new-style calls. +m4_ifval([$2], +[AC_DIAGNOSE([obsolete], + [$0: two- and three-arguments forms are deprecated.]) +m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl + AC_SUBST([PACKAGE], [$1])dnl + AC_SUBST([VERSION], [$2])], +[_AM_SET_OPTIONS([$1])dnl +dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. +m4_if( + m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]), + [ok:ok],, + [m4_fatal([AC_INIT should be called with package and version arguments])])dnl + AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl + AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl + +_AM_IF_OPTION([no-define],, +[AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package]) + AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl + +# Some tools Automake needs. +AC_REQUIRE([AM_SANITY_CHECK])dnl +AC_REQUIRE([AC_ARG_PROGRAM])dnl +AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}]) +AM_MISSING_PROG([AUTOCONF], [autoconf]) +AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}]) +AM_MISSING_PROG([AUTOHEADER], [autoheader]) +AM_MISSING_PROG([MAKEINFO], [makeinfo]) +AC_REQUIRE([AM_PROG_INSTALL_SH])dnl +AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl +AC_REQUIRE([AC_PROG_MKDIR_P])dnl +# For better backward compatibility. To be removed once Automake 1.9.x +# dies out for good. For more background, see: +# +# +AC_SUBST([mkdir_p], ['$(MKDIR_P)']) +# We need awk for the "check" target. The system "awk" is bad on +# some platforms. +AC_REQUIRE([AC_PROG_AWK])dnl +AC_REQUIRE([AC_PROG_MAKE_SET])dnl +AC_REQUIRE([AM_SET_LEADING_DOT])dnl +_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], + [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], + [_AM_PROG_TAR([v7])])]) +_AM_IF_OPTION([no-dependencies],, +[AC_PROVIDE_IFELSE([AC_PROG_CC], + [_AM_DEPENDENCIES([CC])], + [m4_define([AC_PROG_CC], + m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl +AC_PROVIDE_IFELSE([AC_PROG_CXX], + [_AM_DEPENDENCIES([CXX])], + [m4_define([AC_PROG_CXX], + m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl +AC_PROVIDE_IFELSE([AC_PROG_OBJC], + [_AM_DEPENDENCIES([OBJC])], + [m4_define([AC_PROG_OBJC], + m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl +AC_PROVIDE_IFELSE([AC_PROG_OBJCXX], + [_AM_DEPENDENCIES([OBJCXX])], + [m4_define([AC_PROG_OBJCXX], + m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl +]) +AC_REQUIRE([AM_SILENT_RULES])dnl +dnl The testsuite driver may need to know about EXEEXT, so add the +dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This +dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below. +AC_CONFIG_COMMANDS_PRE(dnl +[m4_provide_if([_AM_COMPILER_EXEEXT], + [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl +]) + +dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not +dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further +dnl mangled by Autoconf and run in a shell conditional statement. +m4_define([_AC_COMPILER_EXEEXT], +m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) + + +# When config.status generates a header, we must update the stamp-h file. +# This file resides in the same directory as the config header +# that is generated. The stamp files are numbered to have different names. + +# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the +# loop where config.status creates the headers, so we can generate +# our stamp files there. +AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], +[# Compute $1's index in $config_headers. +_am_arg=$1 +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $_am_arg | $_am_arg:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) + +# Copyright (C) 2001-2013 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_PROG_INSTALL_SH +# ------------------ +# Define $install_sh. +AC_DEFUN([AM_PROG_INSTALL_SH], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +if test x"${install_sh}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; + *) + install_sh="\${SHELL} $am_aux_dir/install-sh" + esac +fi +AC_SUBST([install_sh])]) + +# Copyright (C) 2003-2013 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# Check whether the underlying file-system supports filenames +# with a leading dot. For instance MS-DOS doesn't. +AC_DEFUN([AM_SET_LEADING_DOT], +[rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null +AC_SUBST([am__leading_dot])]) + +# Add --enable-maintainer-mode option to configure. -*- Autoconf -*- +# From Jim Meyering + +# Copyright (C) 1996-2013 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_MAINTAINER_MODE([DEFAULT-MODE]) +# ---------------------------------- +# Control maintainer-specific portions of Makefiles. +# Default is to disable them, unless 'enable' is passed literally. +# For symmetry, 'disable' may be passed as well. Anyway, the user +# can override the default with the --enable/--disable switch. +AC_DEFUN([AM_MAINTAINER_MODE], +[m4_case(m4_default([$1], [disable]), + [enable], [m4_define([am_maintainer_other], [disable])], + [disable], [m4_define([am_maintainer_other], [enable])], + [m4_define([am_maintainer_other], [enable]) + m4_warn([syntax], [unexpected argument to AM@&t@_MAINTAINER_MODE: $1])]) +AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles]) + dnl maintainer-mode's default is 'disable' unless 'enable' is passed + AC_ARG_ENABLE([maintainer-mode], + [AS_HELP_STRING([--]am_maintainer_other[-maintainer-mode], + am_maintainer_other[ make rules and dependencies not useful + (and sometimes confusing) to the casual installer])], + [USE_MAINTAINER_MODE=$enableval], + [USE_MAINTAINER_MODE=]m4_if(am_maintainer_other, [enable], [no], [yes])) + AC_MSG_RESULT([$USE_MAINTAINER_MODE]) + AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes]) + MAINT=$MAINTAINER_MODE_TRUE + AC_SUBST([MAINT])dnl +] +) + +# Check to see how 'make' treats includes. -*- Autoconf -*- + +# Copyright (C) 2001-2013 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_MAKE_INCLUDE() +# ----------------- +# Check to see how make treats includes. +AC_DEFUN([AM_MAKE_INCLUDE], +[am_make=${MAKE-make} +cat > confinc << 'END' +am__doit: + @echo this is the am__doit target +.PHONY: am__doit +END +# If we don't find an include directive, just comment out the code. +AC_MSG_CHECKING([for style of include used by $am_make]) +am__include="#" +am__quote= +_am_result=none +# First try GNU make style include. +echo "include confinc" > confmf +# Ignore all kinds of additional output from 'make'. +case `$am_make -s -f confmf 2> /dev/null` in #( +*the\ am__doit\ target*) + am__include=include + am__quote= + _am_result=GNU + ;; +esac +# Now try BSD make style include. +if test "$am__include" = "#"; then + echo '.include "confinc"' > confmf + case `$am_make -s -f confmf 2> /dev/null` in #( + *the\ am__doit\ target*) + am__include=.include + am__quote="\"" + _am_result=BSD + ;; + esac +fi +AC_SUBST([am__include]) +AC_SUBST([am__quote]) +AC_MSG_RESULT([$_am_result]) +rm -f confinc confmf +]) + +# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- + +# Copyright (C) 1997-2013 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_MISSING_PROG(NAME, PROGRAM) +# ------------------------------ +AC_DEFUN([AM_MISSING_PROG], +[AC_REQUIRE([AM_MISSING_HAS_RUN]) +$1=${$1-"${am_missing_run}$2"} +AC_SUBST($1)]) + +# AM_MISSING_HAS_RUN +# ------------------ +# Define MISSING if not defined so far and test if it is modern enough. +# If it is, set am_missing_run to use it, otherwise, to nothing. +AC_DEFUN([AM_MISSING_HAS_RUN], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +AC_REQUIRE_AUX_FILE([missing])dnl +if test x"${MISSING+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; + *) + MISSING="\${SHELL} $am_aux_dir/missing" ;; + esac +fi +# Use eval to expand $SHELL +if eval "$MISSING --is-lightweight"; then + am_missing_run="$MISSING " +else + am_missing_run= + AC_MSG_WARN(['missing' script is too old or missing]) +fi +]) + +# Helper functions for option handling. -*- Autoconf -*- + +# Copyright (C) 2001-2013 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_MANGLE_OPTION(NAME) +# ----------------------- +AC_DEFUN([_AM_MANGLE_OPTION], +[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) + +# _AM_SET_OPTION(NAME) +# -------------------- +# Set option NAME. Presently that only means defining a flag for this option. +AC_DEFUN([_AM_SET_OPTION], +[m4_define(_AM_MANGLE_OPTION([$1]), [1])]) + +# _AM_SET_OPTIONS(OPTIONS) +# ------------------------ +# OPTIONS is a space-separated list of Automake options. +AC_DEFUN([_AM_SET_OPTIONS], +[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) + +# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) +# ------------------------------------------- +# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. +AC_DEFUN([_AM_IF_OPTION], +[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) + +# Check to make sure that the build environment is sane. -*- Autoconf -*- + +# Copyright (C) 1996-2013 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_SANITY_CHECK +# --------------- +AC_DEFUN([AM_SANITY_CHECK], +[AC_MSG_CHECKING([whether build environment is sane]) +# Reject unsafe characters in $srcdir or the absolute working directory +# name. Accept space and tab only in the latter. +am_lf=' +' +case `pwd` in + *[[\\\"\#\$\&\'\`$am_lf]]*) + AC_MSG_ERROR([unsafe absolute working directory name]);; +esac +case $srcdir in + *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) + AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);; +esac + +# Do 'set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + am_has_slept=no + for am_try in 1 2; do + echo "timestamp, slept: $am_has_slept" > conftest.file + set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` + if test "$[*]" = "X"; then + # -L didn't work. + set X `ls -t "$srcdir/configure" conftest.file` + fi + if test "$[*]" != "X $srcdir/configure conftest.file" \ + && test "$[*]" != "X conftest.file $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken + alias in your environment]) + fi + if test "$[2]" = conftest.file || test $am_try -eq 2; then + break + fi + # Just in case. + sleep 1 + am_has_slept=yes + done + test "$[2]" = conftest.file + ) +then + # Ok. + : +else + AC_MSG_ERROR([newly created file is older than distributed files! +Check your system clock]) +fi +AC_MSG_RESULT([yes]) +# If we didn't sleep, we still need to ensure time stamps of config.status and +# generated files are strictly newer. +am_sleep_pid= +if grep 'slept: no' conftest.file >/dev/null 2>&1; then + ( sleep 1 ) & + am_sleep_pid=$! +fi +AC_CONFIG_COMMANDS_PRE( + [AC_MSG_CHECKING([that generated files are newer than configure]) + if test -n "$am_sleep_pid"; then + # Hide warnings about reused PIDs. + wait $am_sleep_pid 2>/dev/null + fi + AC_MSG_RESULT([done])]) +rm -f conftest.file +]) + +# Copyright (C) 2009-2013 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_SILENT_RULES([DEFAULT]) +# -------------------------- +# Enable less verbose build rules; with the default set to DEFAULT +# ("yes" being less verbose, "no" or empty being verbose). +AC_DEFUN([AM_SILENT_RULES], +[AC_ARG_ENABLE([silent-rules], [dnl +AS_HELP_STRING( + [--enable-silent-rules], + [less verbose build output (undo: "make V=1")]) +AS_HELP_STRING( + [--disable-silent-rules], + [verbose build output (undo: "make V=0")])dnl +]) +case $enable_silent_rules in @%:@ ((( + yes) AM_DEFAULT_VERBOSITY=0;; + no) AM_DEFAULT_VERBOSITY=1;; + *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);; +esac +dnl +dnl A few 'make' implementations (e.g., NonStop OS and NextStep) +dnl do not support nested variable expansions. +dnl See automake bug#9928 and bug#10237. +am_make=${MAKE-make} +AC_CACHE_CHECK([whether $am_make supports nested variables], + [am_cv_make_support_nested_variables], + [if AS_ECHO([['TRUE=$(BAR$(V)) +BAR0=false +BAR1=true +V=1 +am__doit: + @$(TRUE) +.PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then + am_cv_make_support_nested_variables=yes +else + am_cv_make_support_nested_variables=no +fi]) +if test $am_cv_make_support_nested_variables = yes; then + dnl Using '$V' instead of '$(V)' breaks IRIX make. + AM_V='$(V)' + AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' +else + AM_V=$AM_DEFAULT_VERBOSITY + AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY +fi +AC_SUBST([AM_V])dnl +AM_SUBST_NOTMAKE([AM_V])dnl +AC_SUBST([AM_DEFAULT_V])dnl +AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl +AC_SUBST([AM_DEFAULT_VERBOSITY])dnl +AM_BACKSLASH='\' +AC_SUBST([AM_BACKSLASH])dnl +_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl +]) + +# Copyright (C) 2001-2013 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_PROG_INSTALL_STRIP +# --------------------- +# One issue with vendor 'install' (even GNU) is that you can't +# specify the program used to strip binaries. This is especially +# annoying in cross-compiling environments, where the build's strip +# is unlikely to handle the host's binaries. +# Fortunately install-sh will honor a STRIPPROG variable, so we +# always use install-sh in "make install-strip", and initialize +# STRIPPROG with the value of the STRIP variable (set by the user). +AC_DEFUN([AM_PROG_INSTALL_STRIP], +[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl +# Installed binaries are usually stripped using 'strip' when the user +# run "make install-strip". However 'strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the 'STRIP' environment variable to overrule this program. +dnl Don't test for $cross_compiling = yes, because it might be 'maybe'. +if test "$cross_compiling" != no; then + AC_CHECK_TOOL([STRIP], [strip], :) +fi +INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" +AC_SUBST([INSTALL_STRIP_PROGRAM])]) + +# Copyright (C) 2006-2013 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_SUBST_NOTMAKE(VARIABLE) +# --------------------------- +# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. +# This macro is traced by Automake. +AC_DEFUN([_AM_SUBST_NOTMAKE]) + +# AM_SUBST_NOTMAKE(VARIABLE) +# -------------------------- +# Public sister of _AM_SUBST_NOTMAKE. +AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) + +# Check how to create a tarball. -*- Autoconf -*- + +# Copyright (C) 2004-2013 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_PROG_TAR(FORMAT) +# -------------------- +# Check how to create a tarball in format FORMAT. +# FORMAT should be one of 'v7', 'ustar', or 'pax'. +# +# Substitute a variable $(am__tar) that is a command +# writing to stdout a FORMAT-tarball containing the directory +# $tardir. +# tardir=directory && $(am__tar) > result.tar +# +# Substitute a variable $(am__untar) that extract such +# a tarball read from stdin. +# $(am__untar) < result.tar +# +AC_DEFUN([_AM_PROG_TAR], +[# Always define AMTAR for backward compatibility. Yes, it's still used +# in the wild :-( We should find a proper way to deprecate it ... +AC_SUBST([AMTAR], ['$${TAR-tar}']) + +# We'll loop over all known methods to create a tar archive until one works. +_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' + +m4_if([$1], [v7], + [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], + + [m4_case([$1], + [ustar], + [# The POSIX 1988 'ustar' format is defined with fixed-size fields. + # There is notably a 21 bits limit for the UID and the GID. In fact, + # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343 + # and bug#13588). + am_max_uid=2097151 # 2^21 - 1 + am_max_gid=$am_max_uid + # The $UID and $GID variables are not portable, so we need to resort + # to the POSIX-mandated id(1) utility. Errors in the 'id' calls + # below are definitely unexpected, so allow the users to see them + # (that is, avoid stderr redirection). + am_uid=`id -u || echo unknown` + am_gid=`id -g || echo unknown` + AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format]) + if test $am_uid -le $am_max_uid; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + _am_tools=none + fi + AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format]) + if test $am_gid -le $am_max_gid; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + _am_tools=none + fi], + + [pax], + [], + + [m4_fatal([Unknown tar format])]) + + AC_MSG_CHECKING([how to create a $1 tar archive]) + + # Go ahead even if we have the value already cached. We do so because we + # need to set the values for the 'am__tar' and 'am__untar' variables. + _am_tools=${am_cv_prog_tar_$1-$_am_tools} + + for _am_tool in $_am_tools; do + case $_am_tool in + gnutar) + for _am_tar in tar gnutar gtar; do + AM_RUN_LOG([$_am_tar --version]) && break + done + am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' + am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' + am__untar="$_am_tar -xf -" + ;; + plaintar) + # Must skip GNU tar: if it does not support --format= it doesn't create + # ustar tarball either. + (tar --version) >/dev/null 2>&1 && continue + am__tar='tar chf - "$$tardir"' + am__tar_='tar chf - "$tardir"' + am__untar='tar xf -' + ;; + pax) + am__tar='pax -L -x $1 -w "$$tardir"' + am__tar_='pax -L -x $1 -w "$tardir"' + am__untar='pax -r' + ;; + cpio) + am__tar='find "$$tardir" -print | cpio -o -H $1 -L' + am__tar_='find "$tardir" -print | cpio -o -H $1 -L' + am__untar='cpio -i -H $1 -d' + ;; + none) + am__tar=false + am__tar_=false + am__untar=false + ;; + esac + + # If the value was cached, stop now. We just wanted to have am__tar + # and am__untar set. + test -n "${am_cv_prog_tar_$1}" && break + + # tar/untar a dummy directory, and stop if the command works. + rm -rf conftest.dir + mkdir conftest.dir + echo GrepMe > conftest.dir/file + AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) + rm -rf conftest.dir + if test -s conftest.tar; then + AM_RUN_LOG([$am__untar /dev/null 2>&1 && break + fi + done + rm -rf conftest.dir + + AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) + AC_MSG_RESULT([$am_cv_prog_tar_$1])]) + +AC_SUBST([am__tar]) +AC_SUBST([am__untar]) +]) # _AM_PROG_TAR + diff --git a/gsl-2.5/autogen.sh b/gsl-2.5/autogen.sh new file mode 100755 index 00000000..9995a50f --- /dev/null +++ b/gsl-2.5/autogen.sh @@ -0,0 +1,11 @@ +#! /bin/sh + +# Run this to generate all the auto-generated files needed by the GNU +# configure program +#libtoolize --automake +#aclocal +#autoheader +#automake --add-missing --gnu --force-missing +#autoconf +autoreconf -i -f -v +echo "Now use ./configure --enable-maintainer-mode" diff --git a/gsl-2.5/blas/.deps/blas.Plo b/gsl-2.5/blas/.deps/blas.Plo new file mode 100644 index 00000000..02485771 --- /dev/null +++ b/gsl-2.5/blas/.deps/blas.Plo @@ -0,0 +1,295 @@ +blas.lo: blas.c /usr/include/stdc-predef.h ../config.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_cblas.h ../gsl/gsl_blas_types.h ../gsl/gsl_blas.h \ + ../gsl/gsl_vector.h ../gsl/gsl_vector_complex_long_double.h \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/byteswap.h \ + /usr/include/bits/byteswap-16.h /usr/include/sys/types.h \ + /usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib-float.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_cblas.h: + +../gsl/gsl_blas_types.h: + +../gsl/gsl_blas.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: diff --git a/gsl-2.5/blas/.libs/libgslblas.la b/gsl-2.5/blas/.libs/libgslblas.la new file mode 120000 index 00000000..87a273e8 --- /dev/null +++ b/gsl-2.5/blas/.libs/libgslblas.la @@ -0,0 +1 @@ +../libgslblas.la \ No newline at end of file diff --git a/gsl-2.5/blas/ChangeLog b/gsl-2.5/blas/ChangeLog new file mode 100644 index 00000000..ce72bf1d --- /dev/null +++ b/gsl-2.5/blas/ChangeLog @@ -0,0 +1,77 @@ +2009-04-30 Brian Gough + + * blas.c (gsl_blas_drotm): fix incorrect length check + +2005-04-05 Brian Gough + + * blas.c (gsl_blas_ssyrk): test conformance against size correctly + allowing for transpose + +2004-12-21 Brian Gough + + * blas.c (gsl_blas_ssyrk): corrected K to be A->size2 instead of + A->size1 + (gsl_blas_dsyrk): as above + (gsl_blas_csyrk): as above + (gsl_blas_zsyrk): as above + (gsl_blas_cherk): as above + (gsl_blas_zherk): as above + +Mon Mar 18 19:39:34 2002 Brian Gough + + * blas.c (gsl_blas_zgemv): added missing case of CblasConjTrans to + zgemv and cgemv + +Mon Feb 18 20:01:49 2002 Brian Gough + + * gsl_blas_types.h: removed unneeded header files + +Sat Apr 28 15:25:16 2001 Brian Gough + + * blas.c: cast size_t to int for calls to CBLAS + +Mon Mar 19 17:04:47 2001 Brian Gough + + * split cblas routines out into a separate directory and library + which can be used as a cblas outside gsl + +Tue Sep 19 19:07:44 2000 Brian Gough + + * test_blas_raw.c: added tests for dtbsv + +Sat Sep 16 20:27:18 2000 Brian Gough + + * blas.c: use GSL_ERROR macro to signal errors + +Fri Sep 15 20:04:28 2000 Brian Gough + + * source_iamax_r.h source_iamax_c.h: initialize max index to zero + before loop, so that the result is defined for a null vector + +Mon May 22 12:27:47 2000 Brian Gough + + * Makefile.am (lib_LTLIBRARIES): renamed libgslblasnative.la to + libgslblas.la since "native" is ambiguous (suggests + system-supplied blas). + + * test_blas_raw.c (test_L1): added test to cover for initial + run-in of odd lengths on loop unrolling in saxpy. + +Tue Mar 21 14:22:30 2000 Brian Gough + + * test_blas_raw.c (test_L1): test norms for zero vectors + + * source_nrm2_r.h, source_nrm2_r.h: skip zero elements of array, + as in original BLAS, fixes bug for vectors with leading zeros. + +Tue Mar 7 19:05:43 2000 Brian Gough + + * Makefile.am (noinst_LTLIBRARIES): with libtool blasnative and + blascblas layers need to be installed as additional libraries, not + in libgsl.a. + +Fri Oct 1 15:50:14 1999 Brian Gough + + * blas.c: make use of "trailing dimension" in matrix struct to + support LDA arguments for level 2 BLAS. + diff --git a/gsl-2.5/blas/Makefile b/gsl-2.5/blas/Makefile new file mode 100644 index 00000000..b9e2e924 --- /dev/null +++ b/gsl-2.5/blas/Makefile @@ -0,0 +1,660 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# blas/Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + + + + +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/gsl +pkgincludedir = $(includedir)/gsl +pkglibdir = $(libdir)/gsl +pkglibexecdir = $(libexecdir)/gsl +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = x86_64-unknown-linux-gnu +host_triplet = x86_64-unknown-linux-gnu +subdir = blas +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp \ + $(pkginclude_HEADERS) ChangeLog TODO +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +libgslblas_la_LIBADD = +am_libgslblas_la_OBJECTS = blas.lo +libgslblas_la_OBJECTS = $(am_libgslblas_la_OBJECTS) +AM_V_lt = $(am__v_lt_$(V)) +am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) +am__v_lt_0 = --silent +am__v_lt_1 = +AM_V_P = $(am__v_P_$(V)) +am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY)) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_$(V)) +am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_$(V)) +am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I. -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_$(V)) +am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_$(V)) +am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libgslblas_la_SOURCES) +DIST_SOURCES = $(libgslblas_la_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(pkgincludedir)" +HEADERS = $(pkginclude_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing aclocal-1.13 +AMTAR = $${TAR-tar} +AM_DEFAULT_VERBOSITY = 1 +AR = ar +AS = as +AUTOCONF = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing autoconf +AUTOHEADER = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing autoheader +AUTOMAKE = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing automake-1.13 +AWK = gawk +CC = gcc +CCDEPMODE = depmode=gcc3 +CFLAGS = -g -O2 +CPP = gcc -E +CPPFLAGS = +CYGPATH_W = echo +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +DLLTOOL = false +DSYMUTIL = +DUMPBIN = +ECHO_C = +ECHO_N = -n +ECHO_T = +EGREP = /usr/bin/grep -E +EXEEXT = +FGREP = /usr/bin/grep -F +GREP = /usr/bin/grep +GSLCBLAS_LDFLAGS = +GSL_CFLAGS = -I${prefix}/include +GSL_LDFLAGS = +GSL_LIBADD = +GSL_LIBM = -lm +GSL_LIBS = -L${exec_prefix}/lib -lgsl +GSL_LT_CBLAS_VERSION = 0:0:0 +GSL_LT_VERSION = 24:0:1 +GSL_MAJOR_VERSION = 2 +GSL_MINOR_VERSION = 5 +HAVE_AIX_IEEE_INTERFACE = +HAVE_DARWIN86_IEEE_INTERFACE = +HAVE_DARWIN_IEEE_INTERFACE = +HAVE_FREEBSD_IEEE_INTERFACE = +HAVE_GNUM68K_IEEE_INTERFACE = +HAVE_GNUPPC_IEEE_INTERFACE = +HAVE_GNUSPARC_IEEE_INTERFACE = +HAVE_GNUX86_IEEE_INTERFACE = +HAVE_HPUX11_IEEE_INTERFACE = +HAVE_HPUX_IEEE_INTERFACE = +HAVE_IRIX_IEEE_INTERFACE = +HAVE_NETBSD_IEEE_INTERFACE = +HAVE_OPENBSD_IEEE_INTERFACE = +HAVE_OS2EMX_IEEE_INTERFACE = +HAVE_SOLARIS_IEEE_INTERFACE = +HAVE_SUNOS4_IEEE_INTERFACE = +HAVE_TRU64_IEEE_INTERFACE = +INSTALL = /usr/bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = $(install_sh) -c -s +LD = /usr/bin/ld -m elf_x86_64 +LDFLAGS = +LIBM = -lm +LIBOBJS = +LIBS = -lm +LIBTOOL = $(SHELL) $(top_builddir)/libtool +LIPO = +LN_S = ln -s +LTLIBOBJS = +MAINT = # +MAKEINFO = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing makeinfo +MANIFEST_TOOL = : +MKDIR_P = /usr/bin/mkdir -p +NM = /usr/bin/nm -B +NMEDIT = +OBJDUMP = objdump +OBJEXT = o +OTOOL = +OTOOL64 = +PACKAGE = gsl +PACKAGE_BUGREPORT = +PACKAGE_NAME = gsl +PACKAGE_STRING = gsl 2.5 +PACKAGE_TARNAME = gsl +PACKAGE_URL = +PACKAGE_VERSION = 2.5 +PATH_SEPARATOR = : +RANLIB = ranlib +SED = /usr/bin/sed +SET_MAKE = +SHELL = /bin/sh +STRIP = strip +VERSION = 2.5 +abs_builddir = /home/groups/kipac/chto/package/gsl/gsl-2.5/blas +abs_srcdir = /home/groups/kipac/chto/package/gsl/gsl-2.5/blas +abs_top_builddir = /home/groups/kipac/chto/package/gsl/gsl-2.5 +abs_top_srcdir = /home/groups/kipac/chto/package/gsl/gsl-2.5 +ac_ct_AR = ar +ac_ct_CC = gcc +ac_ct_DUMPBIN = +am__include = include +am__leading_dot = . +am__quote = +am__tar = $${TAR-tar} chof - "$$tardir" +am__untar = $${TAR-tar} xf - +bindir = ${exec_prefix}/bin +build = x86_64-unknown-linux-gnu +build_alias = +build_cpu = x86_64 +build_os = linux-gnu +build_vendor = unknown +builddir = . +datadir = ${datarootdir} +datarootdir = ${prefix}/share +docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} +dvidir = ${docdir} +exec_prefix = ${prefix} +host = x86_64-unknown-linux-gnu +host_alias = +host_cpu = x86_64 +host_os = linux-gnu +host_vendor = unknown +htmldir = ${docdir} +includedir = ${prefix}/include +infodir = ${datarootdir}/info +install_sh = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/install-sh +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +localedir = ${datarootdir}/locale +localstatedir = ${prefix}/var +mandir = ${datarootdir}/man +mkdir_p = $(MKDIR_P) +oldincludedir = /usr/include +pdfdir = ${docdir} +prefix = /home/groups/kipac/chto/package/gsl/gsl_lib +program_transform_name = s,x,x, +psdir = ${docdir} +sbindir = ${exec_prefix}/sbin +sharedstatedir = ${prefix}/com +srcdir = . +sysconfdir = ${prefix}/etc +target_alias = +top_build_prefix = ../ +top_builddir = .. +top_srcdir = .. +noinst_LTLIBRARIES = libgslblas.la +pkginclude_HEADERS = gsl_blas.h gsl_blas_types.h +AM_CPPFLAGS = -I$(top_srcdir) +libgslblas_la_SOURCES = blas.c +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu blas/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu blas/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: # $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): # $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libgslblas.la: $(libgslblas_la_OBJECTS) $(libgslblas_la_DEPENDENCIES) $(EXTRA_libgslblas_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(libgslblas_la_OBJECTS) $(libgslblas_la_LIBADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +include ./$(DEPDIR)/blas.Plo + +.c.o: + $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# $(AM_V_CC)source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(COMPILE) -c $< + +.c.obj: + $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# $(AM_V_CC)source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: + $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +# $(AM_V_CC)source='$<' object='$@' libtool=yes \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-pkgincludeHEADERS: $(pkginclude_HEADERS) + @$(NORMAL_INSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \ + done + +uninstall-pkgincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(LTLIBRARIES) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(pkgincludedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ + mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-pkgincludeHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-pkgincludeHEADERS + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-noinstLTLIBRARIES cscopelist-am ctags \ + ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-pkgincludeHEADERS install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \ + uninstall-pkgincludeHEADERS + + +#check_PROGRAMS = test +#TESTS = test +#test_LDADD = libgslblas.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la +#test_SOURCES = test_blas_raw.c test_cases.c test_cases.h + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gsl-2.5/blas/Makefile.am b/gsl-2.5/blas/Makefile.am new file mode 100644 index 00000000..e58b11d3 --- /dev/null +++ b/gsl-2.5/blas/Makefile.am @@ -0,0 +1,14 @@ +noinst_LTLIBRARIES = libgslblas.la + +pkginclude_HEADERS = gsl_blas.h gsl_blas_types.h + +AM_CPPFLAGS = -I$(top_srcdir) + +libgslblas_la_SOURCES = blas.c + +#check_PROGRAMS = test +#TESTS = test +#test_LDADD = libgslblas.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la +#test_SOURCES = test_blas_raw.c test_cases.c test_cases.h + + diff --git a/gsl-2.5/blas/Makefile.in b/gsl-2.5/blas/Makefile.in new file mode 100644 index 00000000..d674d5a4 --- /dev/null +++ b/gsl-2.5/blas/Makefile.in @@ -0,0 +1,660 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + + +VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = blas +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp \ + $(pkginclude_HEADERS) ChangeLog TODO +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +libgslblas_la_LIBADD = +am_libgslblas_la_OBJECTS = blas.lo +libgslblas_la_OBJECTS = $(am_libgslblas_la_OBJECTS) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libgslblas_la_SOURCES) +DIST_SOURCES = $(libgslblas_la_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(pkgincludedir)" +HEADERS = $(pkginclude_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +GSLCBLAS_LDFLAGS = @GSLCBLAS_LDFLAGS@ +GSL_CFLAGS = @GSL_CFLAGS@ +GSL_LDFLAGS = @GSL_LDFLAGS@ +GSL_LIBADD = @GSL_LIBADD@ +GSL_LIBM = @GSL_LIBM@ +GSL_LIBS = @GSL_LIBS@ +GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ +GSL_LT_VERSION = @GSL_LT_VERSION@ +GSL_MAJOR_VERSION = @GSL_MAJOR_VERSION@ +GSL_MINOR_VERSION = @GSL_MINOR_VERSION@ +HAVE_AIX_IEEE_INTERFACE = @HAVE_AIX_IEEE_INTERFACE@ +HAVE_DARWIN86_IEEE_INTERFACE = @HAVE_DARWIN86_IEEE_INTERFACE@ +HAVE_DARWIN_IEEE_INTERFACE = @HAVE_DARWIN_IEEE_INTERFACE@ +HAVE_FREEBSD_IEEE_INTERFACE = @HAVE_FREEBSD_IEEE_INTERFACE@ +HAVE_GNUM68K_IEEE_INTERFACE = @HAVE_GNUM68K_IEEE_INTERFACE@ +HAVE_GNUPPC_IEEE_INTERFACE = @HAVE_GNUPPC_IEEE_INTERFACE@ +HAVE_GNUSPARC_IEEE_INTERFACE = @HAVE_GNUSPARC_IEEE_INTERFACE@ +HAVE_GNUX86_IEEE_INTERFACE = @HAVE_GNUX86_IEEE_INTERFACE@ +HAVE_HPUX11_IEEE_INTERFACE = @HAVE_HPUX11_IEEE_INTERFACE@ +HAVE_HPUX_IEEE_INTERFACE = @HAVE_HPUX_IEEE_INTERFACE@ +HAVE_IRIX_IEEE_INTERFACE = @HAVE_IRIX_IEEE_INTERFACE@ +HAVE_NETBSD_IEEE_INTERFACE = @HAVE_NETBSD_IEEE_INTERFACE@ +HAVE_OPENBSD_IEEE_INTERFACE = @HAVE_OPENBSD_IEEE_INTERFACE@ +HAVE_OS2EMX_IEEE_INTERFACE = @HAVE_OS2EMX_IEEE_INTERFACE@ +HAVE_SOLARIS_IEEE_INTERFACE = @HAVE_SOLARIS_IEEE_INTERFACE@ +HAVE_SUNOS4_IEEE_INTERFACE = @HAVE_SUNOS4_IEEE_INTERFACE@ +HAVE_TRU64_IEEE_INTERFACE = @HAVE_TRU64_IEEE_INTERFACE@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBM = @LIBM@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +noinst_LTLIBRARIES = libgslblas.la +pkginclude_HEADERS = gsl_blas.h gsl_blas_types.h +AM_CPPFLAGS = -I$(top_srcdir) +libgslblas_la_SOURCES = blas.c +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu blas/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu blas/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libgslblas.la: $(libgslblas_la_OBJECTS) $(libgslblas_la_DEPENDENCIES) $(EXTRA_libgslblas_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(libgslblas_la_OBJECTS) $(libgslblas_la_LIBADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/blas.Plo@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-pkgincludeHEADERS: $(pkginclude_HEADERS) + @$(NORMAL_INSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \ + done + +uninstall-pkgincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(LTLIBRARIES) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(pkgincludedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ + mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-pkgincludeHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-pkgincludeHEADERS + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-noinstLTLIBRARIES cscopelist-am ctags \ + ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-pkgincludeHEADERS install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \ + uninstall-pkgincludeHEADERS + + +#check_PROGRAMS = test +#TESTS = test +#test_LDADD = libgslblas.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la +#test_SOURCES = test_blas_raw.c test_cases.c test_cases.h + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gsl-2.5/blas/TODO b/gsl-2.5/blas/TODO new file mode 100644 index 00000000..21839769 --- /dev/null +++ b/gsl-2.5/blas/TODO @@ -0,0 +1,12 @@ +# -*- org -*- +#+CATEGORY: blas + + +* We need a test suite for this directory! + +* Verify that we support the full CBLAS interface and that the GSL +CBLAS library can be used standalone + +* Check that substituting the Reference Blas, ATLAS, and Intel BLAS +all work correctly + diff --git a/gsl-2.5/blas/blas.c b/gsl-2.5/blas/blas.c new file mode 100644 index 00000000..9ef62a6d --- /dev/null +++ b/gsl-2.5/blas/blas.c @@ -0,0 +1,2190 @@ +/* blas/blas.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2009 Gerard Jungman & Brian + * Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* GSL implementation of BLAS operations for vectors and dense + * matrices. Note that GSL native storage is row-major. */ + +#include +#include +#include +#include +#include +#include +#include + +/* ======================================================================== + * Level 1 + * ======================================================================== + */ + +/* CBLAS defines vector sizes in terms of int. GSL defines sizes in + terms of size_t, so we need to convert these into integers. There + is the possibility of overflow here. FIXME: Maybe this could be + caught */ + +#define INT(X) ((int)(X)) + +int +gsl_blas_sdsdot (float alpha, const gsl_vector_float * X, + const gsl_vector_float * Y, float *result) +{ + if (X->size == Y->size) + { + *result = + cblas_sdsdot (INT (X->size), alpha, X->data, INT (X->stride), Y->data, + INT (Y->stride)); + return GSL_SUCCESS; + } + else + { + GSL_ERROR ("invalid length", GSL_EBADLEN); + } +} + +int +gsl_blas_dsdot (const gsl_vector_float * X, const gsl_vector_float * Y, + double *result) +{ + if (X->size == Y->size) + { + *result = + cblas_dsdot (INT (X->size), X->data, INT (X->stride), Y->data, + INT (Y->stride)); + return GSL_SUCCESS; + } + else + { + GSL_ERROR ("invalid length", GSL_EBADLEN); + } +} + +int +gsl_blas_sdot (const gsl_vector_float * X, const gsl_vector_float * Y, + float *result) +{ + if (X->size == Y->size) + { + *result = + cblas_sdot (INT (X->size), X->data, INT (X->stride), Y->data, + INT (Y->stride)); + return GSL_SUCCESS; + } + else + { + GSL_ERROR ("invalid length", GSL_EBADLEN); + } +} + +int +gsl_blas_ddot (const gsl_vector * X, const gsl_vector * Y, double *result) +{ + if (X->size == Y->size) + { + *result = + cblas_ddot (INT (X->size), X->data, INT (X->stride), Y->data, + INT (Y->stride)); + return GSL_SUCCESS; + } + else + { + GSL_ERROR ("invalid length", GSL_EBADLEN); + } +} + + +int +gsl_blas_cdotu (const gsl_vector_complex_float * X, + const gsl_vector_complex_float * Y, gsl_complex_float * dotu) +{ + if (X->size == Y->size) + { + cblas_cdotu_sub (INT (X->size), X->data, INT (X->stride), Y->data, + INT (Y->stride), GSL_COMPLEX_P (dotu)); + return GSL_SUCCESS; + } + else + { + GSL_ERROR ("invalid length", GSL_EBADLEN); + } +} + + +int +gsl_blas_cdotc (const gsl_vector_complex_float * X, + const gsl_vector_complex_float * Y, gsl_complex_float * dotc) +{ + if (X->size == Y->size) + { + cblas_cdotc_sub (INT (X->size), X->data, INT (X->stride), Y->data, + INT (Y->stride), GSL_COMPLEX_P (dotc)); + return GSL_SUCCESS; + } + else + { + GSL_ERROR ("invalid length", GSL_EBADLEN); + } +} + + +int +gsl_blas_zdotu (const gsl_vector_complex * X, const gsl_vector_complex * Y, + gsl_complex * dotu) +{ + if (X->size == Y->size) + { + cblas_zdotu_sub (INT (X->size), X->data, INT (X->stride), Y->data, + INT (Y->stride), GSL_COMPLEX_P (dotu)); + return GSL_SUCCESS; + } + else + { + GSL_ERROR ("invalid length", GSL_EBADLEN); + } +} + + +int +gsl_blas_zdotc (const gsl_vector_complex * X, const gsl_vector_complex * Y, + gsl_complex * dotc) +{ + if (X->size == Y->size) + { + cblas_zdotc_sub (INT (X->size), X->data, INT (X->stride), Y->data, + INT (Y->stride), GSL_COMPLEX_P (dotc)); + return GSL_SUCCESS; + } + else + { + GSL_ERROR ("invalid length", GSL_EBADLEN); + } +} + +/* Norms of vectors */ + +float +gsl_blas_snrm2 (const gsl_vector_float * X) +{ + return cblas_snrm2 (INT (X->size), X->data, INT (X->stride)); +} + +double +gsl_blas_dnrm2 (const gsl_vector * X) +{ + return cblas_dnrm2 (INT (X->size), X->data, INT (X->stride)); +} + +float +gsl_blas_scnrm2 (const gsl_vector_complex_float * X) +{ + return cblas_scnrm2 (INT (X->size), X->data, INT (X->stride)); +} + +double +gsl_blas_dznrm2 (const gsl_vector_complex * X) +{ + return cblas_dznrm2 (INT (X->size), X->data, INT (X->stride)); +} + +/* Absolute sums of vectors */ + +float +gsl_blas_sasum (const gsl_vector_float * X) +{ + return cblas_sasum (INT (X->size), X->data, INT (X->stride)); +} + +double +gsl_blas_dasum (const gsl_vector * X) +{ + return cblas_dasum (INT (X->size), X->data, INT (X->stride)); +} + +float +gsl_blas_scasum (const gsl_vector_complex_float * X) +{ + return cblas_scasum (INT (X->size), X->data, INT (X->stride)); +} + +double +gsl_blas_dzasum (const gsl_vector_complex * X) +{ + return cblas_dzasum (INT (X->size), X->data, INT (X->stride)); +} + +/* Maximum elements of vectors */ + +CBLAS_INDEX_t +gsl_blas_isamax (const gsl_vector_float * X) +{ + return cblas_isamax (INT (X->size), X->data, INT (X->stride)); +} + +CBLAS_INDEX_t +gsl_blas_idamax (const gsl_vector * X) +{ + return cblas_idamax (INT (X->size), X->data, INT (X->stride)); +} + +CBLAS_INDEX_t +gsl_blas_icamax (const gsl_vector_complex_float * X) +{ + return cblas_icamax (INT (X->size), X->data, INT (X->stride)); +} + +CBLAS_INDEX_t +gsl_blas_izamax (const gsl_vector_complex * X) +{ + return cblas_izamax (INT (X->size), X->data, INT (X->stride)); +} + + +/* Swap vectors */ + +int +gsl_blas_sswap (gsl_vector_float * X, gsl_vector_float * Y) +{ + if (X->size == Y->size) + { + cblas_sswap (INT (X->size), X->data, INT (X->stride), Y->data, + INT (Y->stride)); + return GSL_SUCCESS; + } + else + { + GSL_ERROR ("invalid length", GSL_EBADLEN); + } +} + +int +gsl_blas_dswap (gsl_vector * X, gsl_vector * Y) +{ + if (X->size == Y->size) + { + cblas_dswap (INT (X->size), X->data, INT (X->stride), Y->data, + INT (Y->stride)); + return GSL_SUCCESS; + } + else + { + GSL_ERROR ("invalid length", GSL_EBADLEN); + }; +} + +int +gsl_blas_cswap (gsl_vector_complex_float * X, gsl_vector_complex_float * Y) +{ + if (X->size == Y->size) + { + cblas_cswap (INT (X->size), X->data, INT (X->stride), Y->data, + INT (Y->stride)); + return GSL_SUCCESS; + } + else + { + GSL_ERROR ("invalid length", GSL_EBADLEN); + } +} + +int +gsl_blas_zswap (gsl_vector_complex * X, gsl_vector_complex * Y) +{ + if (X->size == Y->size) + { + cblas_zswap (INT (X->size), X->data, INT (X->stride), Y->data, + INT (Y->stride)); + return GSL_SUCCESS; + } + else + { + GSL_ERROR ("invalid length", GSL_EBADLEN); + } +} + + +/* Copy vectors */ + +int +gsl_blas_scopy (const gsl_vector_float * X, gsl_vector_float * Y) +{ + if (X->size == Y->size) + { + cblas_scopy (INT (X->size), X->data, INT (X->stride), Y->data, + INT (Y->stride)); + return GSL_SUCCESS; + } + else + { + GSL_ERROR ("invalid length", GSL_EBADLEN); + } +} + +int +gsl_blas_dcopy (const gsl_vector * X, gsl_vector * Y) +{ + if (X->size == Y->size) + { + cblas_dcopy (INT (X->size), X->data, INT (X->stride), Y->data, + INT (Y->stride)); + return GSL_SUCCESS; + } + else + { + GSL_ERROR ("invalid length", GSL_EBADLEN); + } +} + +int +gsl_blas_ccopy (const gsl_vector_complex_float * X, + gsl_vector_complex_float * Y) +{ + if (X->size == Y->size) + { + cblas_ccopy (INT (X->size), X->data, INT (X->stride), Y->data, + INT (Y->stride)); + return GSL_SUCCESS; + } + else + { + GSL_ERROR ("invalid length", GSL_EBADLEN); + } +} + +int +gsl_blas_zcopy (const gsl_vector_complex * X, gsl_vector_complex * Y) +{ + if (X->size == Y->size) + { + cblas_zcopy (INT (X->size), X->data, INT (X->stride), Y->data, + INT (Y->stride)); + return GSL_SUCCESS; + } + else + { + GSL_ERROR ("invalid length", GSL_EBADLEN); + } +} + + +/* Compute Y = alpha X + Y */ + +int +gsl_blas_saxpy (float alpha, const gsl_vector_float * X, gsl_vector_float * Y) +{ + if (X->size == Y->size) + { + cblas_saxpy (INT (X->size), alpha, X->data, INT (X->stride), Y->data, + INT (Y->stride)); + return GSL_SUCCESS; + } + else + { + GSL_ERROR ("invalid length", GSL_EBADLEN); + } +} + +int +gsl_blas_daxpy (double alpha, const gsl_vector * X, gsl_vector * Y) +{ + if (X->size == Y->size) + { + cblas_daxpy (INT (X->size), alpha, X->data, INT (X->stride), Y->data, + INT (Y->stride)); + return GSL_SUCCESS; + } + else + { + GSL_ERROR ("invalid length", GSL_EBADLEN); + } +} + +int +gsl_blas_caxpy (const gsl_complex_float alpha, + const gsl_vector_complex_float * X, + gsl_vector_complex_float * Y) +{ + if (X->size == Y->size) + { + cblas_caxpy (INT (X->size), GSL_COMPLEX_P (&alpha), X->data, + INT (X->stride), Y->data, INT (Y->stride)); + return GSL_SUCCESS; + } + else + { + GSL_ERROR ("invalid length", GSL_EBADLEN); + } +} + +int +gsl_blas_zaxpy (const gsl_complex alpha, const gsl_vector_complex * X, + gsl_vector_complex * Y) +{ + if (X->size == Y->size) + { + cblas_zaxpy (INT (X->size), GSL_COMPLEX_P (&alpha), X->data, + INT (X->stride), Y->data, INT (Y->stride)); + return GSL_SUCCESS; + } + else + { + GSL_ERROR ("invalid length", GSL_EBADLEN); + } +} + +/* Generate rotation */ + +int +gsl_blas_srotg (float a[], float b[], float c[], float s[]) +{ + cblas_srotg (a, b, c, s); + return GSL_SUCCESS; +} + +int +gsl_blas_drotg (double a[], double b[], double c[], double s[]) +{ + cblas_drotg (a, b, c, s); + return GSL_SUCCESS; +} + +/* Apply rotation to vectors */ + +int +gsl_blas_srot (gsl_vector_float * X, gsl_vector_float * Y, float c, float s) +{ + if (X->size == Y->size) + { + cblas_srot (INT (X->size), X->data, INT (X->stride), Y->data, + INT (Y->stride), c, s); + return GSL_SUCCESS; + } + else + { + GSL_ERROR ("invalid length", GSL_EBADLEN); + } +} + +int +gsl_blas_drot (gsl_vector * X, gsl_vector * Y, const double c, const double s) +{ + if (X->size == Y->size) + { + cblas_drot (INT (X->size), X->data, INT (X->stride), Y->data, + INT (Y->stride), c, s); + return GSL_SUCCESS; + } + else + { + GSL_ERROR ("invalid length", GSL_EBADLEN); + } +} + + +/* Generate modified rotation */ + +int +gsl_blas_srotmg (float d1[], float d2[], float b1[], float b2, float P[]) +{ + cblas_srotmg (d1, d2, b1, b2, P); + return GSL_SUCCESS; +} + +int +gsl_blas_drotmg (double d1[], double d2[], double b1[], double b2, double P[]) +{ + cblas_drotmg (d1, d2, b1, b2, P); + return GSL_SUCCESS; +} + + +/* Apply modified rotation */ + +int +gsl_blas_srotm (gsl_vector_float * X, gsl_vector_float * Y, const float P[]) +{ + if (X->size == Y->size) + { + cblas_srotm (INT (X->size), X->data, INT (X->stride), Y->data, + INT (Y->stride), P); + return GSL_SUCCESS; + } + else + { + GSL_ERROR ("invalid length", GSL_EBADLEN); + } +} + +int +gsl_blas_drotm (gsl_vector * X, gsl_vector * Y, const double P[]) +{ + if (X->size == Y->size) + { + cblas_drotm (INT (X->size), X->data, INT (X->stride), Y->data, + INT (Y->stride), P); + return GSL_SUCCESS; + } + else + { + GSL_ERROR ("invalid length", GSL_EBADLEN); + } +} + + +/* Scale vector */ + +void +gsl_blas_sscal (float alpha, gsl_vector_float * X) +{ + cblas_sscal (INT (X->size), alpha, X->data, INT (X->stride)); +} + +void +gsl_blas_dscal (double alpha, gsl_vector * X) +{ + cblas_dscal (INT (X->size), alpha, X->data, INT (X->stride)); +} + +void +gsl_blas_cscal (const gsl_complex_float alpha, gsl_vector_complex_float * X) +{ + cblas_cscal (INT (X->size), GSL_COMPLEX_P (&alpha), X->data, + INT (X->stride)); +} + +void +gsl_blas_zscal (const gsl_complex alpha, gsl_vector_complex * X) +{ + cblas_zscal (INT (X->size), GSL_COMPLEX_P (&alpha), X->data, + INT (X->stride)); +} + +void +gsl_blas_csscal (float alpha, gsl_vector_complex_float * X) +{ + cblas_csscal (INT (X->size), alpha, X->data, INT (X->stride)); +} + +void +gsl_blas_zdscal (double alpha, gsl_vector_complex * X) +{ + cblas_zdscal (INT (X->size), alpha, X->data, INT (X->stride)); +} + +/* =========================================================================== + * Level 2 + * =========================================================================== + */ + +/* GEMV */ + +int +gsl_blas_sgemv (CBLAS_TRANSPOSE_t TransA, float alpha, + const gsl_matrix_float * A, const gsl_vector_float * X, + float beta, gsl_vector_float * Y) +{ + const size_t M = A->size1; + const size_t N = A->size2; + + if ((TransA == CblasNoTrans && N == X->size && M == Y->size) + || (TransA == CblasTrans && M == X->size && N == Y->size)) + { + cblas_sgemv (CblasRowMajor, TransA, INT (M), INT (N), alpha, A->data, + INT (A->tda), X->data, INT (X->stride), beta, Y->data, + INT (Y->stride)); + return GSL_SUCCESS; + } + else + { + GSL_ERROR ("invalid length", GSL_EBADLEN); + } +} + + +int +gsl_blas_dgemv (CBLAS_TRANSPOSE_t TransA, double alpha, const gsl_matrix * A, + const gsl_vector * X, double beta, gsl_vector * Y) +{ + const size_t M = A->size1; + const size_t N = A->size2; + + if ((TransA == CblasNoTrans && N == X->size && M == Y->size) + || (TransA == CblasTrans && M == X->size && N == Y->size)) + { + cblas_dgemv (CblasRowMajor, TransA, INT (M), INT (N), alpha, A->data, + INT (A->tda), X->data, INT (X->stride), beta, Y->data, + INT (Y->stride)); + return GSL_SUCCESS; + } + else + { + GSL_ERROR ("invalid length", GSL_EBADLEN); + } +} + + +int +gsl_blas_cgemv (CBLAS_TRANSPOSE_t TransA, const gsl_complex_float alpha, + const gsl_matrix_complex_float * A, + const gsl_vector_complex_float * X, + const gsl_complex_float beta, gsl_vector_complex_float * Y) +{ + const size_t M = A->size1; + const size_t N = A->size2; + + if ((TransA == CblasNoTrans && N == X->size && M == Y->size) + || (TransA == CblasTrans && M == X->size && N == Y->size) + || (TransA == CblasConjTrans && M == X->size && N == Y->size)) + { + cblas_cgemv (CblasRowMajor, TransA, INT (M), INT (N), + GSL_COMPLEX_P (&alpha), A->data, INT (A->tda), X->data, + INT (X->stride), GSL_COMPLEX_P (&beta), Y->data, + INT (Y->stride)); + return GSL_SUCCESS; + } + else + { + GSL_ERROR ("invalid length", GSL_EBADLEN); + } +} + + +int +gsl_blas_zgemv (CBLAS_TRANSPOSE_t TransA, const gsl_complex alpha, + const gsl_matrix_complex * A, const gsl_vector_complex * X, + const gsl_complex beta, gsl_vector_complex * Y) +{ + const size_t M = A->size1; + const size_t N = A->size2; + + if ((TransA == CblasNoTrans && N == X->size && M == Y->size) + || (TransA == CblasTrans && M == X->size && N == Y->size) + || (TransA == CblasConjTrans && M == X->size && N == Y->size)) + { + cblas_zgemv (CblasRowMajor, TransA, INT (M), INT (N), + GSL_COMPLEX_P (&alpha), A->data, INT (A->tda), X->data, + INT (X->stride), GSL_COMPLEX_P (&beta), Y->data, + INT (Y->stride)); + return GSL_SUCCESS; + } + else + { + GSL_ERROR ("invalid length", GSL_EBADLEN); + } +} + + + +/* HEMV */ + +int +gsl_blas_chemv (CBLAS_UPLO_t Uplo, const gsl_complex_float alpha, + const gsl_matrix_complex_float * A, + const gsl_vector_complex_float * X, + const gsl_complex_float beta, gsl_vector_complex_float * Y) +{ + const size_t M = A->size1; + const size_t N = A->size2; + + if (M != N) + { + GSL_ERROR ("matrix must be square", GSL_ENOTSQR); + } + else if (N != X->size || N != Y->size) + { + GSL_ERROR ("invalid length", GSL_EBADLEN); + } + + cblas_chemv (CblasRowMajor, Uplo, INT (N), GSL_COMPLEX_P (&alpha), A->data, + INT (A->tda), X->data, INT (X->stride), GSL_COMPLEX_P (&beta), + Y->data, INT (Y->stride)); + return GSL_SUCCESS; +} + +int +gsl_blas_zhemv (CBLAS_UPLO_t Uplo, const gsl_complex alpha, + const gsl_matrix_complex * A, const gsl_vector_complex * X, + const gsl_complex beta, gsl_vector_complex * Y) +{ + const size_t M = A->size1; + const size_t N = A->size2; + + if (M != N) + { + GSL_ERROR ("matrix must be square", GSL_ENOTSQR); + } + else if (N != X->size || N != Y->size) + { + GSL_ERROR ("invalid length", GSL_EBADLEN); + } + + cblas_zhemv (CblasRowMajor, Uplo, INT (N), GSL_COMPLEX_P (&alpha), A->data, + INT (A->tda), X->data, INT (X->stride), GSL_COMPLEX_P (&beta), + Y->data, INT (Y->stride)); + return GSL_SUCCESS; +} + + +/* SYMV */ + +int +gsl_blas_ssymv (CBLAS_UPLO_t Uplo, float alpha, const gsl_matrix_float * A, + const gsl_vector_float * X, float beta, gsl_vector_float * Y) +{ + const size_t M = A->size1; + const size_t N = A->size2; + + if (M != N) + { + GSL_ERROR ("matrix must be square", GSL_ENOTSQR); + } + else if (N != X->size || N != Y->size) + { + GSL_ERROR ("invalid length", GSL_EBADLEN); + } + + cblas_ssymv (CblasRowMajor, Uplo, INT (N), alpha, A->data, INT (A->tda), + X->data, INT (X->stride), beta, Y->data, INT (Y->stride)); + return GSL_SUCCESS; +} + +int +gsl_blas_dsymv (CBLAS_UPLO_t Uplo, double alpha, const gsl_matrix * A, + const gsl_vector * X, double beta, gsl_vector * Y) +{ + const size_t M = A->size1; + const size_t N = A->size2; + + if (M != N) + { + GSL_ERROR ("matrix must be square", GSL_ENOTSQR); + } + else if (N != X->size || N != Y->size) + { + GSL_ERROR ("invalid length", GSL_EBADLEN); + } + + cblas_dsymv (CblasRowMajor, Uplo, INT (N), alpha, A->data, INT (A->tda), + X->data, INT (X->stride), beta, Y->data, INT (Y->stride)); + return GSL_SUCCESS; +} + + +/* TRMV */ + +int +gsl_blas_strmv (CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t TransA, + CBLAS_DIAG_t Diag, const gsl_matrix_float * A, + gsl_vector_float * X) +{ + const size_t M = A->size1; + const size_t N = A->size2; + + if (M != N) + { + GSL_ERROR ("matrix must be square", GSL_ENOTSQR); + } + else if (N != X->size) + { + GSL_ERROR ("invalid length", GSL_EBADLEN); + } + + cblas_strmv (CblasRowMajor, Uplo, TransA, Diag, INT (N), A->data, + INT (A->tda), X->data, INT (X->stride)); + return GSL_SUCCESS; +} + + +int +gsl_blas_dtrmv (CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t TransA, + CBLAS_DIAG_t Diag, const gsl_matrix * A, gsl_vector * X) +{ + const size_t M = A->size1; + const size_t N = A->size2; + + if (M != N) + { + GSL_ERROR ("matrix must be square", GSL_ENOTSQR); + } + else if (N != X->size) + { + GSL_ERROR ("invalid length", GSL_EBADLEN); + } + + cblas_dtrmv (CblasRowMajor, Uplo, TransA, Diag, INT (N), A->data, + INT (A->tda), X->data, INT (X->stride)); + return GSL_SUCCESS; +} + + +int +gsl_blas_ctrmv (CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t TransA, + CBLAS_DIAG_t Diag, const gsl_matrix_complex_float * A, + gsl_vector_complex_float * X) +{ + const size_t M = A->size1; + const size_t N = A->size2; + + if (M != N) + { + GSL_ERROR ("matrix must be square", GSL_ENOTSQR); + } + else if (N != X->size) + { + GSL_ERROR ("invalid length", GSL_EBADLEN); + } + + cblas_ctrmv (CblasRowMajor, Uplo, TransA, Diag, INT (N), A->data, + INT (A->tda), X->data, INT (X->stride)); + return GSL_SUCCESS; +} + + +int +gsl_blas_ztrmv (CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t TransA, + CBLAS_DIAG_t Diag, const gsl_matrix_complex * A, + gsl_vector_complex * X) +{ + const size_t M = A->size1; + const size_t N = A->size2; + + if (M != N) + { + GSL_ERROR ("matrix must be square", GSL_ENOTSQR); + } + else if (N != X->size) + { + GSL_ERROR ("invalid length", GSL_EBADLEN); + } + + cblas_ztrmv (CblasRowMajor, Uplo, TransA, Diag, INT (N), A->data, + INT (A->tda), X->data, INT (X->stride)); + return GSL_SUCCESS; +} + + +/* TRSV */ + +int +gsl_blas_strsv (CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t TransA, + CBLAS_DIAG_t Diag, const gsl_matrix_float * A, + gsl_vector_float * X) +{ + const size_t M = A->size1; + const size_t N = A->size2; + + if (M != N) + { + GSL_ERROR ("matrix must be square", GSL_ENOTSQR); + } + else if (N != X->size) + { + GSL_ERROR ("invalid length", GSL_EBADLEN); + } + + cblas_strsv (CblasRowMajor, Uplo, TransA, Diag, INT (N), A->data, + INT (A->tda), X->data, INT (X->stride)); + return GSL_SUCCESS; +} + + +int +gsl_blas_dtrsv (CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t TransA, + CBLAS_DIAG_t Diag, const gsl_matrix * A, gsl_vector * X) +{ + const size_t M = A->size1; + const size_t N = A->size2; + + if (M != N) + { + GSL_ERROR ("matrix must be square", GSL_ENOTSQR); + } + else if (N != X->size) + { + GSL_ERROR ("invalid length", GSL_EBADLEN); + } + + cblas_dtrsv (CblasRowMajor, Uplo, TransA, Diag, INT (N), A->data, + INT (A->tda), X->data, INT (X->stride)); + return GSL_SUCCESS; +} + + +int +gsl_blas_ctrsv (CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t TransA, + CBLAS_DIAG_t Diag, const gsl_matrix_complex_float * A, + gsl_vector_complex_float * X) +{ + const size_t M = A->size1; + const size_t N = A->size2; + + if (M != N) + { + GSL_ERROR ("matrix must be square", GSL_ENOTSQR); + } + else if (N != X->size) + { + GSL_ERROR ("invalid length", GSL_EBADLEN); + } + + cblas_ctrsv (CblasRowMajor, Uplo, TransA, Diag, INT (N), A->data, + INT (A->tda), X->data, INT (X->stride)); + return GSL_SUCCESS; +} + + +int +gsl_blas_ztrsv (CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t TransA, + CBLAS_DIAG_t Diag, const gsl_matrix_complex * A, + gsl_vector_complex * X) +{ + const size_t M = A->size1; + const size_t N = A->size2; + + if (M != N) + { + GSL_ERROR ("matrix must be square", GSL_ENOTSQR); + } + else if (N != X->size) + { + GSL_ERROR ("invalid length", GSL_EBADLEN); + } + + cblas_ztrsv (CblasRowMajor, Uplo, TransA, Diag, INT (N), A->data, + INT (A->tda), X->data, INT (X->stride)); + return GSL_SUCCESS; +} + + +/* GER */ + +int +gsl_blas_sger (float alpha, const gsl_vector_float * X, + const gsl_vector_float * Y, gsl_matrix_float * A) +{ + const size_t M = A->size1; + const size_t N = A->size2; + + if (X->size == M && Y->size == N) + { + cblas_sger (CblasRowMajor, INT (M), INT (N), alpha, X->data, + INT (X->stride), Y->data, INT (Y->stride), A->data, + INT (A->tda)); + return GSL_SUCCESS; + } + else + { + GSL_ERROR ("invalid length", GSL_EBADLEN); + } +} + + +int +gsl_blas_dger (double alpha, const gsl_vector * X, const gsl_vector * Y, + gsl_matrix * A) +{ + const size_t M = A->size1; + const size_t N = A->size2; + + if (X->size == M && Y->size == N) + { + cblas_dger (CblasRowMajor, INT (M), INT (N), alpha, X->data, + INT (X->stride), Y->data, INT (Y->stride), A->data, + INT (A->tda)); + return GSL_SUCCESS; + } + else + { + GSL_ERROR ("invalid length", GSL_EBADLEN); + } +} + + +/* GERU */ + +int +gsl_blas_cgeru (const gsl_complex_float alpha, + const gsl_vector_complex_float * X, + const gsl_vector_complex_float * Y, + gsl_matrix_complex_float * A) +{ + const size_t M = A->size1; + const size_t N = A->size2; + + if (X->size == M && Y->size == N) + { + cblas_cgeru (CblasRowMajor, INT (M), INT (N), GSL_COMPLEX_P (&alpha), + X->data, INT (X->stride), Y->data, INT (Y->stride), + A->data, INT (A->tda)); + return GSL_SUCCESS; + } + else + { + GSL_ERROR ("invalid length", GSL_EBADLEN); + } +} + +int +gsl_blas_zgeru (const gsl_complex alpha, const gsl_vector_complex * X, + const gsl_vector_complex * Y, gsl_matrix_complex * A) +{ + const size_t M = A->size1; + const size_t N = A->size2; + + if (X->size == M && Y->size == N) + { + cblas_zgeru (CblasRowMajor, INT (M), INT (N), GSL_COMPLEX_P (&alpha), + X->data, INT (X->stride), Y->data, INT (Y->stride), + A->data, INT (A->tda)); + return GSL_SUCCESS; + } + else + { + GSL_ERROR ("invalid length", GSL_EBADLEN); + } +} + + +/* GERC */ + +int +gsl_blas_cgerc (const gsl_complex_float alpha, + const gsl_vector_complex_float * X, + const gsl_vector_complex_float * Y, + gsl_matrix_complex_float * A) +{ + const size_t M = A->size1; + const size_t N = A->size2; + + if (X->size == M && Y->size == N) + { + cblas_cgerc (CblasRowMajor, INT (M), INT (N), GSL_COMPLEX_P (&alpha), + X->data, INT (X->stride), Y->data, INT (Y->stride), + A->data, INT (A->tda)); + return GSL_SUCCESS; + } + else + { + GSL_ERROR ("invalid length", GSL_EBADLEN); + } +} + + +int +gsl_blas_zgerc (const gsl_complex alpha, const gsl_vector_complex * X, + const gsl_vector_complex * Y, gsl_matrix_complex * A) +{ + const size_t M = A->size1; + const size_t N = A->size2; + + if (X->size == M && Y->size == N) + { + cblas_zgerc (CblasRowMajor, INT (M), INT (N), GSL_COMPLEX_P (&alpha), + X->data, INT (X->stride), Y->data, INT (Y->stride), + A->data, INT (A->tda)); + return GSL_SUCCESS; + } + else + { + GSL_ERROR ("invalid length", GSL_EBADLEN); + } +} + +/* HER */ + +int +gsl_blas_cher (CBLAS_UPLO_t Uplo, float alpha, + const gsl_vector_complex_float * X, + gsl_matrix_complex_float * A) +{ + const size_t M = A->size1; + const size_t N = A->size2; + + if (M != N) + { + GSL_ERROR ("matrix must be square", GSL_ENOTSQR); + } + else if (X->size != N) + { + GSL_ERROR ("invalid length", GSL_EBADLEN); + } + + cblas_cher (CblasRowMajor, Uplo, INT (M), alpha, X->data, INT (X->stride), + A->data, INT (A->tda)); + return GSL_SUCCESS; +} + + +int +gsl_blas_zher (CBLAS_UPLO_t Uplo, double alpha, const gsl_vector_complex * X, + gsl_matrix_complex * A) +{ + const size_t M = A->size1; + const size_t N = A->size2; + + if (M != N) + { + GSL_ERROR ("matrix must be square", GSL_ENOTSQR); + } + else if (X->size != N) + { + GSL_ERROR ("invalid length", GSL_EBADLEN); + } + + cblas_zher (CblasRowMajor, Uplo, INT (N), alpha, X->data, INT (X->stride), + A->data, INT (A->tda)); + return GSL_SUCCESS; +} + + +/* HER2 */ + +int +gsl_blas_cher2 (CBLAS_UPLO_t Uplo, const gsl_complex_float alpha, + const gsl_vector_complex_float * X, + const gsl_vector_complex_float * Y, + gsl_matrix_complex_float * A) +{ + const size_t M = A->size1; + const size_t N = A->size2; + + if (M != N) + { + GSL_ERROR ("matrix must be square", GSL_ENOTSQR); + } + else if (X->size != N || Y->size != N) + { + GSL_ERROR ("invalid length", GSL_EBADLEN); + } + + cblas_cher2 (CblasRowMajor, Uplo, INT (N), GSL_COMPLEX_P (&alpha), X->data, + INT (X->stride), Y->data, INT (Y->stride), A->data, + INT (A->tda)); + return GSL_SUCCESS; +} + + +int +gsl_blas_zher2 (CBLAS_UPLO_t Uplo, const gsl_complex alpha, + const gsl_vector_complex * X, const gsl_vector_complex * Y, + gsl_matrix_complex * A) +{ + const size_t M = A->size1; + const size_t N = A->size2; + + if (M != N) + { + GSL_ERROR ("matrix must be square", GSL_ENOTSQR); + } + else if (X->size != N || Y->size != N) + { + GSL_ERROR ("invalid length", GSL_EBADLEN); + } + + cblas_zher2 (CblasRowMajor, Uplo, INT (N), GSL_COMPLEX_P (&alpha), X->data, + INT (X->stride), Y->data, INT (Y->stride), A->data, + INT (A->tda)); + return GSL_SUCCESS; +} + + +/* SYR */ + +int +gsl_blas_ssyr (CBLAS_UPLO_t Uplo, float alpha, const gsl_vector_float * X, + gsl_matrix_float * A) +{ + const size_t M = A->size1; + const size_t N = A->size2; + + if (M != N) + { + GSL_ERROR ("matrix must be square", GSL_ENOTSQR); + } + else if (X->size != N) + { + GSL_ERROR ("invalid length", GSL_EBADLEN); + } + + cblas_ssyr (CblasRowMajor, Uplo, INT (N), alpha, X->data, INT (X->stride), + A->data, INT (A->tda)); + return GSL_SUCCESS; +} + + +int +gsl_blas_dsyr (CBLAS_UPLO_t Uplo, double alpha, const gsl_vector * X, + gsl_matrix * A) +{ + const size_t M = A->size1; + const size_t N = A->size2; + + if (M != N) + { + GSL_ERROR ("matrix must be square", GSL_ENOTSQR); + } + else if (X->size != N) + { + GSL_ERROR ("invalid length", GSL_EBADLEN); + } + + cblas_dsyr (CblasRowMajor, Uplo, INT (N), alpha, X->data, INT (X->stride), + A->data, INT (A->tda)); + return GSL_SUCCESS; +} + + +/* SYR2 */ + +int +gsl_blas_ssyr2 (CBLAS_UPLO_t Uplo, float alpha, const gsl_vector_float * X, + const gsl_vector_float * Y, gsl_matrix_float * A) +{ + const size_t M = A->size1; + const size_t N = A->size2; + + if (M != N) + { + GSL_ERROR ("matrix must be square", GSL_ENOTSQR); + } + else if (X->size != N || Y->size != N) + { + GSL_ERROR ("invalid length", GSL_EBADLEN); + } + + cblas_ssyr2 (CblasRowMajor, Uplo, INT (N), alpha, X->data, INT (X->stride), + Y->data, INT (Y->stride), A->data, INT (A->tda)); + return GSL_SUCCESS; +} + + +int +gsl_blas_dsyr2 (CBLAS_UPLO_t Uplo, double alpha, const gsl_vector * X, + const gsl_vector * Y, gsl_matrix * A) +{ + const size_t M = A->size1; + const size_t N = A->size2; + + if (M != N) + { + GSL_ERROR ("matrix must be square", GSL_ENOTSQR); + } + else if (X->size != N || Y->size != N) + { + GSL_ERROR ("invalid length", GSL_EBADLEN); + } + + cblas_dsyr2 (CblasRowMajor, Uplo, INT (N), alpha, X->data, INT (X->stride), + Y->data, INT (Y->stride), A->data, INT (A->tda)); + return GSL_SUCCESS; +} + + +/* + * =========================================================================== + * Prototypes for level 3 BLAS + * =========================================================================== + */ + + +/* GEMM */ + +int +gsl_blas_sgemm (CBLAS_TRANSPOSE_t TransA, CBLAS_TRANSPOSE_t TransB, + float alpha, const gsl_matrix_float * A, + const gsl_matrix_float * B, float beta, gsl_matrix_float * C) +{ + const size_t M = C->size1; + const size_t N = C->size2; + const size_t MA = (TransA == CblasNoTrans) ? A->size1 : A->size2; + const size_t NA = (TransA == CblasNoTrans) ? A->size2 : A->size1; + const size_t MB = (TransB == CblasNoTrans) ? B->size1 : B->size2; + const size_t NB = (TransB == CblasNoTrans) ? B->size2 : B->size1; + + if (M == MA && N == NB && NA == MB) /* [MxN] = [MAxNA][MBxNB] */ + { + cblas_sgemm (CblasRowMajor, TransA, TransB, INT (M), INT (N), INT (NA), + alpha, A->data, INT (A->tda), B->data, INT (B->tda), beta, + C->data, INT (C->tda)); + return GSL_SUCCESS; + } + else + { + GSL_ERROR ("invalid length", GSL_EBADLEN); + } +} + + +int +gsl_blas_dgemm (CBLAS_TRANSPOSE_t TransA, CBLAS_TRANSPOSE_t TransB, + double alpha, const gsl_matrix * A, const gsl_matrix * B, + double beta, gsl_matrix * C) +{ + const size_t M = C->size1; + const size_t N = C->size2; + const size_t MA = (TransA == CblasNoTrans) ? A->size1 : A->size2; + const size_t NA = (TransA == CblasNoTrans) ? A->size2 : A->size1; + const size_t MB = (TransB == CblasNoTrans) ? B->size1 : B->size2; + const size_t NB = (TransB == CblasNoTrans) ? B->size2 : B->size1; + + if (M == MA && N == NB && NA == MB) /* [MxN] = [MAxNA][MBxNB] */ + { + cblas_dgemm (CblasRowMajor, TransA, TransB, INT (M), INT (N), INT (NA), + alpha, A->data, INT (A->tda), B->data, INT (B->tda), beta, + C->data, INT (C->tda)); + return GSL_SUCCESS; + } + else + { + GSL_ERROR ("invalid length", GSL_EBADLEN); + } +} + + +int +gsl_blas_cgemm (CBLAS_TRANSPOSE_t TransA, CBLAS_TRANSPOSE_t TransB, + const gsl_complex_float alpha, + const gsl_matrix_complex_float * A, + const gsl_matrix_complex_float * B, + const gsl_complex_float beta, gsl_matrix_complex_float * C) +{ + const size_t M = C->size1; + const size_t N = C->size2; + const size_t MA = (TransA == CblasNoTrans) ? A->size1 : A->size2; + const size_t NA = (TransA == CblasNoTrans) ? A->size2 : A->size1; + const size_t MB = (TransB == CblasNoTrans) ? B->size1 : B->size2; + const size_t NB = (TransB == CblasNoTrans) ? B->size2 : B->size1; + + if (M == MA && N == NB && NA == MB) /* [MxN] = [MAxNA][MBxNB] */ + { + cblas_cgemm (CblasRowMajor, TransA, TransB, INT (M), INT (N), INT (NA), + GSL_COMPLEX_P (&alpha), A->data, INT (A->tda), B->data, + INT (B->tda), GSL_COMPLEX_P (&beta), C->data, + INT (C->tda)); + return GSL_SUCCESS; + } + else + { + GSL_ERROR ("invalid length", GSL_EBADLEN); + } +} + + +int +gsl_blas_zgemm (CBLAS_TRANSPOSE_t TransA, CBLAS_TRANSPOSE_t TransB, + const gsl_complex alpha, const gsl_matrix_complex * A, + const gsl_matrix_complex * B, const gsl_complex beta, + gsl_matrix_complex * C) +{ + const size_t M = C->size1; + const size_t N = C->size2; + const size_t MA = (TransA == CblasNoTrans) ? A->size1 : A->size2; + const size_t NA = (TransA == CblasNoTrans) ? A->size2 : A->size1; + const size_t MB = (TransB == CblasNoTrans) ? B->size1 : B->size2; + const size_t NB = (TransB == CblasNoTrans) ? B->size2 : B->size1; + + if (M == MA && N == NB && NA == MB) /* [MxN] = [MAxNA][MBxNB] */ + { + cblas_zgemm (CblasRowMajor, TransA, TransB, INT (M), INT (N), INT (NA), + GSL_COMPLEX_P (&alpha), A->data, INT (A->tda), B->data, + INT (B->tda), GSL_COMPLEX_P (&beta), C->data, + INT (C->tda)); + return GSL_SUCCESS; + } + else + { + GSL_ERROR ("invalid length", GSL_EBADLEN); + } +} + + +/* SYMM */ + +int +gsl_blas_ssymm (CBLAS_SIDE_t Side, CBLAS_UPLO_t Uplo, float alpha, + const gsl_matrix_float * A, const gsl_matrix_float * B, + float beta, gsl_matrix_float * C) +{ + const size_t M = C->size1; + const size_t N = C->size2; + const size_t MA = A->size1; + const size_t NA = A->size2; + const size_t MB = B->size1; + const size_t NB = B->size2; + + if (MA != NA) + { + GSL_ERROR ("matrix A must be square", GSL_ENOTSQR); + } + + if ((Side == CblasLeft && (M == MA && N == NB && NA == MB)) + || (Side == CblasRight && (M == MB && N == NA && NB == MA))) + { + cblas_ssymm (CblasRowMajor, Side, Uplo, INT (M), INT (N), alpha, + A->data, INT (A->tda), B->data, INT (B->tda), beta, + C->data, INT (C->tda)); + return GSL_SUCCESS; + } + else + { + GSL_ERROR ("invalid length", GSL_EBADLEN); + } + +} + + +int +gsl_blas_dsymm (CBLAS_SIDE_t Side, CBLAS_UPLO_t Uplo, double alpha, + const gsl_matrix * A, const gsl_matrix * B, double beta, + gsl_matrix * C) +{ + const size_t M = C->size1; + const size_t N = C->size2; + const size_t MA = A->size1; + const size_t NA = A->size2; + const size_t MB = B->size1; + const size_t NB = B->size2; + + if (MA != NA) + { + GSL_ERROR ("matrix A must be square", GSL_ENOTSQR); + } + + if ((Side == CblasLeft && (M == MA && N == NB && NA == MB)) + || (Side == CblasRight && (M == MB && N == NA && NB == MA))) + { + cblas_dsymm (CblasRowMajor, Side, Uplo, INT (M), INT (N), alpha, + A->data, INT (A->tda), B->data, INT (B->tda), beta, + C->data, INT (C->tda)); + return GSL_SUCCESS; + } + else + { + GSL_ERROR ("invalid length", GSL_EBADLEN); + } +} + + +int +gsl_blas_csymm (CBLAS_SIDE_t Side, CBLAS_UPLO_t Uplo, + const gsl_complex_float alpha, + const gsl_matrix_complex_float * A, + const gsl_matrix_complex_float * B, + const gsl_complex_float beta, gsl_matrix_complex_float * C) +{ + const size_t M = C->size1; + const size_t N = C->size2; + const size_t MA = A->size1; + const size_t NA = A->size2; + const size_t MB = B->size1; + const size_t NB = B->size2; + + if (MA != NA) + { + GSL_ERROR ("matrix A must be square", GSL_ENOTSQR); + } + + if ((Side == CblasLeft && (M == MA && N == NB && NA == MB)) + || (Side == CblasRight && (M == MB && N == NA && NB == MA))) + { + cblas_csymm (CblasRowMajor, Side, Uplo, INT (M), INT (N), + GSL_COMPLEX_P (&alpha), A->data, INT (A->tda), B->data, + INT (B->tda), GSL_COMPLEX_P (&beta), C->data, + INT (C->tda)); + return GSL_SUCCESS; + } + else + { + GSL_ERROR ("invalid length", GSL_EBADLEN); + } +} + +int +gsl_blas_zsymm (CBLAS_SIDE_t Side, CBLAS_UPLO_t Uplo, + const gsl_complex alpha, const gsl_matrix_complex * A, + const gsl_matrix_complex * B, const gsl_complex beta, + gsl_matrix_complex * C) +{ + const size_t M = C->size1; + const size_t N = C->size2; + const size_t MA = A->size1; + const size_t NA = A->size2; + const size_t MB = B->size1; + const size_t NB = B->size2; + + if (MA != NA) + { + GSL_ERROR ("matrix A must be square", GSL_ENOTSQR); + } + + if ((Side == CblasLeft && (M == MA && N == NB && NA == MB)) + || (Side == CblasRight && (M == MB && N == NA && NB == MA))) + { + cblas_zsymm (CblasRowMajor, Side, Uplo, INT (M), INT (N), + GSL_COMPLEX_P (&alpha), A->data, INT (A->tda), B->data, + INT (B->tda), GSL_COMPLEX_P (&beta), C->data, + INT (C->tda)); + return GSL_SUCCESS; + } + else + { + GSL_ERROR ("invalid length", GSL_EBADLEN); + } +} + + +/* HEMM */ + +int +gsl_blas_chemm (CBLAS_SIDE_t Side, CBLAS_UPLO_t Uplo, + const gsl_complex_float alpha, + const gsl_matrix_complex_float * A, + const gsl_matrix_complex_float * B, + const gsl_complex_float beta, gsl_matrix_complex_float * C) +{ + const size_t M = C->size1; + const size_t N = C->size2; + const size_t MA = A->size1; + const size_t NA = A->size2; + const size_t MB = B->size1; + const size_t NB = B->size2; + + if (MA != NA) + { + GSL_ERROR ("matrix A must be square", GSL_ENOTSQR); + } + + if ((Side == CblasLeft && (M == MA && N == NB && NA == MB)) + || (Side == CblasRight && (M == MB && N == NA && NB == MA))) + { + cblas_chemm (CblasRowMajor, Side, Uplo, INT (M), INT (N), + GSL_COMPLEX_P (&alpha), A->data, INT (A->tda), B->data, + INT (B->tda), GSL_COMPLEX_P (&beta), C->data, + INT (C->tda)); + return GSL_SUCCESS; + } + else + { + GSL_ERROR ("invalid length", GSL_EBADLEN); + } + +} + + +int +gsl_blas_zhemm (CBLAS_SIDE_t Side, CBLAS_UPLO_t Uplo, + const gsl_complex alpha, const gsl_matrix_complex * A, + const gsl_matrix_complex * B, const gsl_complex beta, + gsl_matrix_complex * C) +{ + const size_t M = C->size1; + const size_t N = C->size2; + const size_t MA = A->size1; + const size_t NA = A->size2; + const size_t MB = B->size1; + const size_t NB = B->size2; + + if (MA != NA) + { + GSL_ERROR ("matrix A must be square", GSL_ENOTSQR); + } + + if ((Side == CblasLeft && (M == MA && N == NB && NA == MB)) + || (Side == CblasRight && (M == MB && N == NA && NB == MA))) + { + cblas_zhemm (CblasRowMajor, Side, Uplo, INT (M), INT (N), + GSL_COMPLEX_P (&alpha), A->data, INT (A->tda), B->data, + INT (B->tda), GSL_COMPLEX_P (&beta), C->data, + INT (C->tda)); + return GSL_SUCCESS; + } + else + { + GSL_ERROR ("invalid length", GSL_EBADLEN); + } +} + +/* SYRK */ + +int +gsl_blas_ssyrk (CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t Trans, float alpha, + const gsl_matrix_float * A, float beta, gsl_matrix_float * C) +{ + const size_t M = C->size1; + const size_t N = C->size2; + const size_t J = (Trans == CblasNoTrans) ? A->size1 : A->size2; + const size_t K = (Trans == CblasNoTrans) ? A->size2 : A->size1; + + if (M != N) + { + GSL_ERROR ("matrix C must be square", GSL_ENOTSQR); + } + else if (N != J) + { + GSL_ERROR ("invalid length", GSL_EBADLEN); + } + + cblas_ssyrk (CblasRowMajor, Uplo, Trans, INT (N), INT (K), alpha, A->data, + INT (A->tda), beta, C->data, INT (C->tda)); + return GSL_SUCCESS; +} + + +int +gsl_blas_dsyrk (CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t Trans, double alpha, + const gsl_matrix * A, double beta, gsl_matrix * C) +{ + const size_t M = C->size1; + const size_t N = C->size2; + const size_t J = (Trans == CblasNoTrans) ? A->size1 : A->size2; + const size_t K = (Trans == CblasNoTrans) ? A->size2 : A->size1; + + if (M != N) + { + GSL_ERROR ("matrix C must be square", GSL_ENOTSQR); + } + else if (N != J) + { + GSL_ERROR ("invalid length", GSL_EBADLEN); + } + + cblas_dsyrk (CblasRowMajor, Uplo, Trans, INT (N), INT (K), alpha, A->data, + INT (A->tda), beta, C->data, INT (C->tda)); + return GSL_SUCCESS; + +} + + +int +gsl_blas_csyrk (CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t Trans, + const gsl_complex_float alpha, + const gsl_matrix_complex_float * A, + const gsl_complex_float beta, gsl_matrix_complex_float * C) +{ + const size_t M = C->size1; + const size_t N = C->size2; + const size_t J = (Trans == CblasNoTrans) ? A->size1 : A->size2; + const size_t K = (Trans == CblasNoTrans) ? A->size2 : A->size1; + + if (M != N) + { + GSL_ERROR ("matrix C must be square", GSL_ENOTSQR); + } + else if (N != J) + { + GSL_ERROR ("invalid length", GSL_EBADLEN); + } + + cblas_csyrk (CblasRowMajor, Uplo, Trans, INT (N), INT (K), + GSL_COMPLEX_P (&alpha), A->data, INT (A->tda), + GSL_COMPLEX_P (&beta), C->data, INT (C->tda)); + return GSL_SUCCESS; +} + + +int +gsl_blas_zsyrk (CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t Trans, + const gsl_complex alpha, const gsl_matrix_complex * A, + const gsl_complex beta, gsl_matrix_complex * C) +{ + const size_t M = C->size1; + const size_t N = C->size2; + const size_t J = (Trans == CblasNoTrans) ? A->size1 : A->size2; + const size_t K = (Trans == CblasNoTrans) ? A->size2 : A->size1; + + if (M != N) + { + GSL_ERROR ("matrix C must be square", GSL_ENOTSQR); + } + else if (N != J) + { + GSL_ERROR ("invalid length", GSL_EBADLEN); + } + + cblas_zsyrk (CblasRowMajor, Uplo, Trans, INT (N), INT (K), + GSL_COMPLEX_P (&alpha), A->data, INT (A->tda), + GSL_COMPLEX_P (&beta), C->data, INT (C->tda)); + return GSL_SUCCESS; +} + +/* HERK */ + +int +gsl_blas_cherk (CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t Trans, float alpha, + const gsl_matrix_complex_float * A, float beta, + gsl_matrix_complex_float * C) +{ + const size_t M = C->size1; + const size_t N = C->size2; + const size_t J = (Trans == CblasNoTrans) ? A->size1 : A->size2; + const size_t K = (Trans == CblasNoTrans) ? A->size2 : A->size1; + + if (M != N) + { + GSL_ERROR ("matrix C must be square", GSL_ENOTSQR); + } + else if (N != J) + { + GSL_ERROR ("invalid length", GSL_EBADLEN); + } + + cblas_cherk (CblasRowMajor, Uplo, Trans, INT (N), INT (K), alpha, A->data, + INT (A->tda), beta, C->data, INT (C->tda)); + return GSL_SUCCESS; +} + + +int +gsl_blas_zherk (CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t Trans, double alpha, + const gsl_matrix_complex * A, double beta, + gsl_matrix_complex * C) +{ + const size_t M = C->size1; + const size_t N = C->size2; + const size_t J = (Trans == CblasNoTrans) ? A->size1 : A->size2; + const size_t K = (Trans == CblasNoTrans) ? A->size2 : A->size1; + + if (M != N) + { + GSL_ERROR ("matrix C must be square", GSL_ENOTSQR); + } + else if (N != J) + { + GSL_ERROR ("invalid length", GSL_EBADLEN); + } + + cblas_zherk (CblasRowMajor, Uplo, Trans, INT (N), INT (K), alpha, A->data, + INT (A->tda), beta, C->data, INT (C->tda)); + return GSL_SUCCESS; +} + +/* SYR2K */ + +int +gsl_blas_ssyr2k (CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t Trans, float alpha, + const gsl_matrix_float * A, const gsl_matrix_float * B, + float beta, gsl_matrix_float * C) +{ + const size_t M = C->size1; + const size_t N = C->size2; + const size_t MA = (Trans == CblasNoTrans) ? A->size1 : A->size2; + const size_t NA = (Trans == CblasNoTrans) ? A->size2 : A->size1; + const size_t MB = (Trans == CblasNoTrans) ? B->size1 : B->size2; + const size_t NB = (Trans == CblasNoTrans) ? B->size2 : B->size1; + + if (M != N) + { + GSL_ERROR ("matrix C must be square", GSL_ENOTSQR); + } + else if (N != MA || N != MB || NA != NB) + { + GSL_ERROR ("invalid length", GSL_EBADLEN); + } + + cblas_ssyr2k (CblasRowMajor, Uplo, Trans, INT (N), INT (NA), alpha, A->data, + INT (A->tda), B->data, INT (B->tda), beta, C->data, + INT (C->tda)); + return GSL_SUCCESS; +} + + +int +gsl_blas_dsyr2k (CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t Trans, double alpha, + const gsl_matrix * A, const gsl_matrix * B, double beta, + gsl_matrix * C) +{ + const size_t M = C->size1; + const size_t N = C->size2; + const size_t MA = (Trans == CblasNoTrans) ? A->size1 : A->size2; + const size_t NA = (Trans == CblasNoTrans) ? A->size2 : A->size1; + const size_t MB = (Trans == CblasNoTrans) ? B->size1 : B->size2; + const size_t NB = (Trans == CblasNoTrans) ? B->size2 : B->size1; + + if (M != N) + { + GSL_ERROR ("matrix C must be square", GSL_ENOTSQR); + } + else if (N != MA || N != MB || NA != NB) + { + GSL_ERROR ("invalid length", GSL_EBADLEN); + } + + cblas_dsyr2k (CblasRowMajor, Uplo, Trans, INT (N), INT (NA), alpha, A->data, + INT (A->tda), B->data, INT (B->tda), beta, C->data, + INT (C->tda)); + return GSL_SUCCESS; +} + + +int +gsl_blas_csyr2k (CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t Trans, + const gsl_complex_float alpha, + const gsl_matrix_complex_float * A, + const gsl_matrix_complex_float * B, + const gsl_complex_float beta, gsl_matrix_complex_float * C) +{ + const size_t M = C->size1; + const size_t N = C->size2; + const size_t MA = (Trans == CblasNoTrans) ? A->size1 : A->size2; + const size_t NA = (Trans == CblasNoTrans) ? A->size2 : A->size1; + const size_t MB = (Trans == CblasNoTrans) ? B->size1 : B->size2; + const size_t NB = (Trans == CblasNoTrans) ? B->size2 : B->size1; + + if (M != N) + { + GSL_ERROR ("matrix C must be square", GSL_ENOTSQR); + } + else if (N != MA || N != MB || NA != NB) + { + GSL_ERROR ("invalid length", GSL_EBADLEN); + } + + cblas_csyr2k (CblasRowMajor, Uplo, Trans, INT (N), INT (NA), + GSL_COMPLEX_P (&alpha), A->data, INT (A->tda), B->data, + INT (B->tda), GSL_COMPLEX_P (&beta), C->data, INT (C->tda)); + return GSL_SUCCESS; +} + + + +int +gsl_blas_zsyr2k (CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t Trans, + const gsl_complex alpha, const gsl_matrix_complex * A, + const gsl_matrix_complex * B, const gsl_complex beta, + gsl_matrix_complex * C) +{ + const size_t M = C->size1; + const size_t N = C->size2; + const size_t MA = (Trans == CblasNoTrans) ? A->size1 : A->size2; + const size_t NA = (Trans == CblasNoTrans) ? A->size2 : A->size1; + const size_t MB = (Trans == CblasNoTrans) ? B->size1 : B->size2; + const size_t NB = (Trans == CblasNoTrans) ? B->size2 : B->size1; + + if (M != N) + { + GSL_ERROR ("matrix C must be square", GSL_ENOTSQR); + } + else if (N != MA || N != MB || NA != NB) + { + GSL_ERROR ("invalid length", GSL_EBADLEN); + } + + cblas_zsyr2k (CblasRowMajor, Uplo, Trans, INT (N), INT (NA), + GSL_COMPLEX_P (&alpha), A->data, INT (A->tda), B->data, + INT (B->tda), GSL_COMPLEX_P (&beta), C->data, INT (C->tda)); + return GSL_SUCCESS; +} + +/* HER2K */ + +int +gsl_blas_cher2k (CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t Trans, + const gsl_complex_float alpha, + const gsl_matrix_complex_float * A, + const gsl_matrix_complex_float * B, float beta, + gsl_matrix_complex_float * C) +{ + const size_t M = C->size1; + const size_t N = C->size2; + const size_t MA = (Trans == CblasNoTrans) ? A->size1 : A->size2; + const size_t NA = (Trans == CblasNoTrans) ? A->size2 : A->size1; + const size_t MB = (Trans == CblasNoTrans) ? B->size1 : B->size2; + const size_t NB = (Trans == CblasNoTrans) ? B->size2 : B->size1; + + if (M != N) + { + GSL_ERROR ("matrix C must be square", GSL_ENOTSQR); + } + else if (N != MA || N != MB || NA != NB) + { + GSL_ERROR ("invalid length", GSL_EBADLEN); + } + + cblas_cher2k (CblasRowMajor, Uplo, Trans, INT (N), INT (NA), + GSL_COMPLEX_P (&alpha), A->data, INT (A->tda), B->data, + INT (B->tda), beta, C->data, INT (C->tda)); + return GSL_SUCCESS; + +} + + +int +gsl_blas_zher2k (CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t Trans, + const gsl_complex alpha, const gsl_matrix_complex * A, + const gsl_matrix_complex * B, double beta, + gsl_matrix_complex * C) +{ + const size_t M = C->size1; + const size_t N = C->size2; + const size_t MA = (Trans == CblasNoTrans) ? A->size1 : A->size2; + const size_t NA = (Trans == CblasNoTrans) ? A->size2 : A->size1; + const size_t MB = (Trans == CblasNoTrans) ? B->size1 : B->size2; + const size_t NB = (Trans == CblasNoTrans) ? B->size2 : B->size1; + + if (M != N) + { + GSL_ERROR ("matrix C must be square", GSL_ENOTSQR); + } + else if (N != MA || N != MB || NA != NB) + { + GSL_ERROR ("invalid length", GSL_EBADLEN); + } + + cblas_zher2k (CblasRowMajor, Uplo, Trans, INT (N), INT (NA), + GSL_COMPLEX_P (&alpha), A->data, INT (A->tda), B->data, + INT (B->tda), beta, C->data, INT (C->tda)); + return GSL_SUCCESS; + +} + +/* TRMM */ + +int +gsl_blas_strmm (CBLAS_SIDE_t Side, CBLAS_UPLO_t Uplo, + CBLAS_TRANSPOSE_t TransA, CBLAS_DIAG_t Diag, float alpha, + const gsl_matrix_float * A, gsl_matrix_float * B) +{ + const size_t M = B->size1; + const size_t N = B->size2; + const size_t MA = A->size1; + const size_t NA = A->size2; + + if (MA != NA) + { + GSL_ERROR ("matrix A must be square", GSL_ENOTSQR); + } + + if ((Side == CblasLeft && M == MA) || (Side == CblasRight && N == MA)) + { + cblas_strmm (CblasRowMajor, Side, Uplo, TransA, Diag, INT (M), INT (N), + alpha, A->data, INT (A->tda), B->data, INT (B->tda)); + return GSL_SUCCESS; + } + else + { + GSL_ERROR ("invalid length", GSL_EBADLEN); + } +} + + +int +gsl_blas_dtrmm (CBLAS_SIDE_t Side, CBLAS_UPLO_t Uplo, + CBLAS_TRANSPOSE_t TransA, CBLAS_DIAG_t Diag, double alpha, + const gsl_matrix * A, gsl_matrix * B) +{ + const size_t M = B->size1; + const size_t N = B->size2; + const size_t MA = A->size1; + const size_t NA = A->size2; + + if (MA != NA) + { + GSL_ERROR ("matrix A must be square", GSL_ENOTSQR); + } + + if ((Side == CblasLeft && M == MA) || (Side == CblasRight && N == MA)) + { + cblas_dtrmm (CblasRowMajor, Side, Uplo, TransA, Diag, INT (M), INT (N), + alpha, A->data, INT (A->tda), B->data, INT (B->tda)); + return GSL_SUCCESS; + } + else + { + GSL_ERROR ("invalid length", GSL_EBADLEN); + } +} + + +int +gsl_blas_ctrmm (CBLAS_SIDE_t Side, CBLAS_UPLO_t Uplo, + CBLAS_TRANSPOSE_t TransA, CBLAS_DIAG_t Diag, + const gsl_complex_float alpha, + const gsl_matrix_complex_float * A, + gsl_matrix_complex_float * B) +{ + const size_t M = B->size1; + const size_t N = B->size2; + const size_t MA = A->size1; + const size_t NA = A->size2; + + if (MA != NA) + { + GSL_ERROR ("matrix A must be square", GSL_ENOTSQR); + } + + if ((Side == CblasLeft && M == MA) || (Side == CblasRight && N == MA)) + { + cblas_ctrmm (CblasRowMajor, Side, Uplo, TransA, Diag, INT (M), INT (N), + GSL_COMPLEX_P (&alpha), A->data, INT (A->tda), B->data, + INT (B->tda)); + return GSL_SUCCESS; + } + else + { + GSL_ERROR ("invalid length", GSL_EBADLEN); + } +} + + +int +gsl_blas_ztrmm (CBLAS_SIDE_t Side, CBLAS_UPLO_t Uplo, + CBLAS_TRANSPOSE_t TransA, CBLAS_DIAG_t Diag, + const gsl_complex alpha, const gsl_matrix_complex * A, + gsl_matrix_complex * B) +{ + const size_t M = B->size1; + const size_t N = B->size2; + const size_t MA = A->size1; + const size_t NA = A->size2; + + if (MA != NA) + { + GSL_ERROR ("matrix A must be square", GSL_ENOTSQR); + } + + if ((Side == CblasLeft && M == MA) || (Side == CblasRight && N == MA)) + { + cblas_ztrmm (CblasRowMajor, Side, Uplo, TransA, Diag, INT (M), INT (N), + GSL_COMPLEX_P (&alpha), A->data, INT (A->tda), B->data, + INT (B->tda)); + return GSL_SUCCESS; + } + else + { + GSL_ERROR ("invalid length", GSL_EBADLEN); + } +} + + +/* TRSM */ + +int +gsl_blas_strsm (CBLAS_SIDE_t Side, CBLAS_UPLO_t Uplo, + CBLAS_TRANSPOSE_t TransA, CBLAS_DIAG_t Diag, float alpha, + const gsl_matrix_float * A, gsl_matrix_float * B) +{ + const size_t M = B->size1; + const size_t N = B->size2; + const size_t MA = A->size1; + const size_t NA = A->size2; + + if (MA != NA) + { + GSL_ERROR ("matrix A must be square", GSL_ENOTSQR); + } + + if ((Side == CblasLeft && M == MA) || (Side == CblasRight && N == MA)) + { + cblas_strsm (CblasRowMajor, Side, Uplo, TransA, Diag, INT (M), INT (N), + alpha, A->data, INT (A->tda), B->data, INT (B->tda)); + return GSL_SUCCESS; + } + else + { + GSL_ERROR ("invalid length", GSL_EBADLEN); + } +} + + +int +gsl_blas_dtrsm (CBLAS_SIDE_t Side, CBLAS_UPLO_t Uplo, + CBLAS_TRANSPOSE_t TransA, CBLAS_DIAG_t Diag, double alpha, + const gsl_matrix * A, gsl_matrix * B) +{ + const size_t M = B->size1; + const size_t N = B->size2; + const size_t MA = A->size1; + const size_t NA = A->size2; + + if (MA != NA) + { + GSL_ERROR ("matrix A must be square", GSL_ENOTSQR); + } + + if ((Side == CblasLeft && M == MA) || (Side == CblasRight && N == MA)) + { + cblas_dtrsm (CblasRowMajor, Side, Uplo, TransA, Diag, INT (M), INT (N), + alpha, A->data, INT (A->tda), B->data, INT (B->tda)); + return GSL_SUCCESS; + } + else + { + GSL_ERROR ("invalid length", GSL_EBADLEN); + } +} + + +int +gsl_blas_ctrsm (CBLAS_SIDE_t Side, CBLAS_UPLO_t Uplo, + CBLAS_TRANSPOSE_t TransA, CBLAS_DIAG_t Diag, + const gsl_complex_float alpha, + const gsl_matrix_complex_float * A, + gsl_matrix_complex_float * B) +{ + const size_t M = B->size1; + const size_t N = B->size2; + const size_t MA = A->size1; + const size_t NA = A->size2; + + if (MA != NA) + { + GSL_ERROR ("matrix A must be square", GSL_ENOTSQR); + } + + if ((Side == CblasLeft && M == MA) || (Side == CblasRight && N == MA)) + { + cblas_ctrsm (CblasRowMajor, Side, Uplo, TransA, Diag, INT (M), INT (N), + GSL_COMPLEX_P (&alpha), A->data, INT (A->tda), B->data, + INT (B->tda)); + return GSL_SUCCESS; + } + else + { + GSL_ERROR ("invalid length", GSL_EBADLEN); + } +} + + +int +gsl_blas_ztrsm (CBLAS_SIDE_t Side, CBLAS_UPLO_t Uplo, + CBLAS_TRANSPOSE_t TransA, CBLAS_DIAG_t Diag, + const gsl_complex alpha, const gsl_matrix_complex * A, + gsl_matrix_complex * B) +{ + const size_t M = B->size1; + const size_t N = B->size2; + const size_t MA = A->size1; + const size_t NA = A->size2; + + if (MA != NA) + { + GSL_ERROR ("matrix A must be square", GSL_ENOTSQR); + } + + if ((Side == CblasLeft && M == MA) || (Side == CblasRight && N == MA)) + { + cblas_ztrsm (CblasRowMajor, Side, Uplo, TransA, Diag, INT (M), INT (N), + GSL_COMPLEX_P (&alpha), A->data, INT (A->tda), B->data, + INT (B->tda)); + return GSL_SUCCESS; + } + else + { + GSL_ERROR ("invalid length", GSL_EBADLEN); + } +} diff --git a/gsl-2.5/blas/blas.lo b/gsl-2.5/blas/blas.lo new file mode 100644 index 00000000..37740414 --- /dev/null +++ b/gsl-2.5/blas/blas.lo @@ -0,0 +1,12 @@ +# blas.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/blas.o' + +# Name of the non-PIC object +non_pic_object='blas.o' + diff --git a/gsl-2.5/blas/gsl_blas.h b/gsl-2.5/blas/gsl_blas.h new file mode 100644 index 00000000..7c427149 --- /dev/null +++ b/gsl-2.5/blas/gsl_blas.h @@ -0,0 +1,602 @@ +/* blas/gsl_blas.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* + * Author: G. Jungman + */ +#ifndef __GSL_BLAS_H__ +#define __GSL_BLAS_H__ + +#include +#include + +#include + + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + + +/* ======================================================================== + * Level 1 + * ======================================================================== + */ + +int gsl_blas_sdsdot (float alpha, + const gsl_vector_float * X, + const gsl_vector_float * Y, + float * result + ); + +int gsl_blas_dsdot (const gsl_vector_float * X, + const gsl_vector_float * Y, + double * result + ); + +int gsl_blas_sdot (const gsl_vector_float * X, + const gsl_vector_float * Y, + float * result + ); + +int gsl_blas_ddot (const gsl_vector * X, + const gsl_vector * Y, + double * result + ); + + +int gsl_blas_cdotu (const gsl_vector_complex_float * X, + const gsl_vector_complex_float * Y, + gsl_complex_float * dotu); + +int gsl_blas_cdotc (const gsl_vector_complex_float * X, + const gsl_vector_complex_float * Y, + gsl_complex_float * dotc); + +int gsl_blas_zdotu (const gsl_vector_complex * X, + const gsl_vector_complex * Y, + gsl_complex * dotu); + +int gsl_blas_zdotc (const gsl_vector_complex * X, + const gsl_vector_complex * Y, + gsl_complex * dotc); + + +float gsl_blas_snrm2 (const gsl_vector_float * X); +float gsl_blas_sasum (const gsl_vector_float * X); +double gsl_blas_dnrm2 (const gsl_vector * X); +double gsl_blas_dasum (const gsl_vector * X); +float gsl_blas_scnrm2 (const gsl_vector_complex_float * X); +float gsl_blas_scasum (const gsl_vector_complex_float * X); +double gsl_blas_dznrm2 (const gsl_vector_complex * X); +double gsl_blas_dzasum (const gsl_vector_complex * X); + + +CBLAS_INDEX_t gsl_blas_isamax (const gsl_vector_float * X); +CBLAS_INDEX_t gsl_blas_idamax (const gsl_vector * X); +CBLAS_INDEX_t gsl_blas_icamax (const gsl_vector_complex_float * X); +CBLAS_INDEX_t gsl_blas_izamax (const gsl_vector_complex * X); + + +int gsl_blas_sswap (gsl_vector_float * X, + gsl_vector_float * Y); + +int gsl_blas_scopy (const gsl_vector_float * X, + gsl_vector_float * Y); + +int gsl_blas_saxpy (float alpha, + const gsl_vector_float * X, + gsl_vector_float * Y); + +int gsl_blas_dswap (gsl_vector * X, + gsl_vector * Y); + +int gsl_blas_dcopy (const gsl_vector * X, + gsl_vector * Y); + +int gsl_blas_daxpy (double alpha, + const gsl_vector * X, + gsl_vector * Y); + +int gsl_blas_cswap (gsl_vector_complex_float * X, + gsl_vector_complex_float * Y); + +int gsl_blas_ccopy (const gsl_vector_complex_float * X, + gsl_vector_complex_float * Y); + +int gsl_blas_caxpy (const gsl_complex_float alpha, + const gsl_vector_complex_float * X, + gsl_vector_complex_float * Y); + +int gsl_blas_zswap (gsl_vector_complex * X, + gsl_vector_complex * Y); + +int gsl_blas_zcopy (const gsl_vector_complex * X, + gsl_vector_complex * Y); + +int gsl_blas_zaxpy (const gsl_complex alpha, + const gsl_vector_complex * X, + gsl_vector_complex * Y); + + +int gsl_blas_srotg (float a[], float b[], float c[], float s[]); + +int gsl_blas_srotmg (float d1[], float d2[], float b1[], float b2, float P[]); + +int gsl_blas_srot (gsl_vector_float * X, + gsl_vector_float * Y, + float c, float s); + +int gsl_blas_srotm (gsl_vector_float * X, + gsl_vector_float * Y, + const float P[]); + +int gsl_blas_drotg (double a[], double b[], double c[], double s[]); + +int gsl_blas_drotmg (double d1[], double d2[], double b1[], + double b2, double P[]); + +int gsl_blas_drot (gsl_vector * X, + gsl_vector * Y, + const double c, const double s); + +int gsl_blas_drotm (gsl_vector * X, + gsl_vector * Y, + const double P[]); + + +void gsl_blas_sscal (float alpha, gsl_vector_float * X); +void gsl_blas_dscal (double alpha, gsl_vector * X); +void gsl_blas_cscal (const gsl_complex_float alpha, gsl_vector_complex_float * X); +void gsl_blas_zscal (const gsl_complex alpha, gsl_vector_complex * X); +void gsl_blas_csscal (float alpha, gsl_vector_complex_float * X); +void gsl_blas_zdscal (double alpha, gsl_vector_complex * X); + + +/* =========================================================================== + * Level 2 + * =========================================================================== + */ + +/* + * Routines with standard 4 prefixes (S, D, C, Z) + */ +int gsl_blas_sgemv (CBLAS_TRANSPOSE_t TransA, + float alpha, + const gsl_matrix_float * A, + const gsl_vector_float * X, + float beta, + gsl_vector_float * Y); + +int gsl_blas_strmv (CBLAS_UPLO_t Uplo, + CBLAS_TRANSPOSE_t TransA, CBLAS_DIAG_t Diag, + const gsl_matrix_float * A, + gsl_vector_float * X); + +int gsl_blas_strsv (CBLAS_UPLO_t Uplo, + CBLAS_TRANSPOSE_t TransA, CBLAS_DIAG_t Diag, + const gsl_matrix_float * A, + gsl_vector_float * X); + +int gsl_blas_dgemv (CBLAS_TRANSPOSE_t TransA, + double alpha, + const gsl_matrix * A, + const gsl_vector * X, + double beta, + gsl_vector * Y); + +int gsl_blas_dtrmv (CBLAS_UPLO_t Uplo, + CBLAS_TRANSPOSE_t TransA, CBLAS_DIAG_t Diag, + const gsl_matrix * A, + gsl_vector * X); + +int gsl_blas_dtrsv (CBLAS_UPLO_t Uplo, + CBLAS_TRANSPOSE_t TransA, CBLAS_DIAG_t Diag, + const gsl_matrix * A, + gsl_vector * X); + +int gsl_blas_cgemv (CBLAS_TRANSPOSE_t TransA, + const gsl_complex_float alpha, + const gsl_matrix_complex_float * A, + const gsl_vector_complex_float * X, + const gsl_complex_float beta, + gsl_vector_complex_float * Y); + +int gsl_blas_ctrmv (CBLAS_UPLO_t Uplo, + CBLAS_TRANSPOSE_t TransA, CBLAS_DIAG_t Diag, + const gsl_matrix_complex_float * A, + gsl_vector_complex_float * X); + +int gsl_blas_ctrsv (CBLAS_UPLO_t Uplo, + CBLAS_TRANSPOSE_t TransA, CBLAS_DIAG_t Diag, + const gsl_matrix_complex_float * A, + gsl_vector_complex_float * X); + +int gsl_blas_zgemv (CBLAS_TRANSPOSE_t TransA, + const gsl_complex alpha, + const gsl_matrix_complex * A, + const gsl_vector_complex * X, + const gsl_complex beta, + gsl_vector_complex * Y); + +int gsl_blas_ztrmv (CBLAS_UPLO_t Uplo, + CBLAS_TRANSPOSE_t TransA, CBLAS_DIAG_t Diag, + const gsl_matrix_complex * A, + gsl_vector_complex * X); + +int gsl_blas_ztrsv (CBLAS_UPLO_t Uplo, + CBLAS_TRANSPOSE_t TransA, CBLAS_DIAG_t Diag, + const gsl_matrix_complex * A, + gsl_vector_complex *X); + +/* + * Routines with S and D prefixes only + */ +int gsl_blas_ssymv (CBLAS_UPLO_t Uplo, + float alpha, + const gsl_matrix_float * A, + const gsl_vector_float * X, + float beta, + gsl_vector_float * Y); + +int gsl_blas_sger (float alpha, + const gsl_vector_float * X, + const gsl_vector_float * Y, + gsl_matrix_float * A); + +int gsl_blas_ssyr (CBLAS_UPLO_t Uplo, + float alpha, + const gsl_vector_float * X, + gsl_matrix_float * A); + +int gsl_blas_ssyr2 (CBLAS_UPLO_t Uplo, + float alpha, + const gsl_vector_float * X, + const gsl_vector_float * Y, + gsl_matrix_float * A); + +int gsl_blas_dsymv (CBLAS_UPLO_t Uplo, + double alpha, + const gsl_matrix * A, + const gsl_vector * X, + double beta, + gsl_vector * Y); +int gsl_blas_dger (double alpha, + const gsl_vector * X, + const gsl_vector * Y, + gsl_matrix * A); + +int gsl_blas_dsyr (CBLAS_UPLO_t Uplo, + double alpha, + const gsl_vector * X, + gsl_matrix * A); + +int gsl_blas_dsyr2 (CBLAS_UPLO_t Uplo, + double alpha, + const gsl_vector * X, + const gsl_vector * Y, + gsl_matrix * A); + +/* + * Routines with C and Z prefixes only + */ + +int gsl_blas_chemv (CBLAS_UPLO_t Uplo, + const gsl_complex_float alpha, + const gsl_matrix_complex_float * A, + const gsl_vector_complex_float * X, + const gsl_complex_float beta, + gsl_vector_complex_float * Y); + +int gsl_blas_cgeru (const gsl_complex_float alpha, + const gsl_vector_complex_float * X, + const gsl_vector_complex_float * Y, + gsl_matrix_complex_float * A); + +int gsl_blas_cgerc (const gsl_complex_float alpha, + const gsl_vector_complex_float * X, + const gsl_vector_complex_float * Y, + gsl_matrix_complex_float * A); + +int gsl_blas_cher (CBLAS_UPLO_t Uplo, + float alpha, + const gsl_vector_complex_float * X, + gsl_matrix_complex_float * A); + +int gsl_blas_cher2 (CBLAS_UPLO_t Uplo, + const gsl_complex_float alpha, + const gsl_vector_complex_float * X, + const gsl_vector_complex_float * Y, + gsl_matrix_complex_float * A); + +int gsl_blas_zhemv (CBLAS_UPLO_t Uplo, + const gsl_complex alpha, + const gsl_matrix_complex * A, + const gsl_vector_complex * X, + const gsl_complex beta, + gsl_vector_complex * Y); + +int gsl_blas_zgeru (const gsl_complex alpha, + const gsl_vector_complex * X, + const gsl_vector_complex * Y, + gsl_matrix_complex * A); + +int gsl_blas_zgerc (const gsl_complex alpha, + const gsl_vector_complex * X, + const gsl_vector_complex * Y, + gsl_matrix_complex * A); + +int gsl_blas_zher (CBLAS_UPLO_t Uplo, + double alpha, + const gsl_vector_complex * X, + gsl_matrix_complex * A); + +int gsl_blas_zher2 (CBLAS_UPLO_t Uplo, + const gsl_complex alpha, + const gsl_vector_complex * X, + const gsl_vector_complex * Y, + gsl_matrix_complex * A); + +/* + * =========================================================================== + * Prototypes for level 3 BLAS + * =========================================================================== + */ + +/* + * Routines with standard 4 prefixes (S, D, C, Z) + */ +int gsl_blas_sgemm (CBLAS_TRANSPOSE_t TransA, + CBLAS_TRANSPOSE_t TransB, + float alpha, + const gsl_matrix_float * A, + const gsl_matrix_float * B, + float beta, + gsl_matrix_float * C); + +int gsl_blas_ssymm (CBLAS_SIDE_t Side, CBLAS_UPLO_t Uplo, + float alpha, + const gsl_matrix_float * A, + const gsl_matrix_float * B, + float beta, + gsl_matrix_float * C); + +int gsl_blas_ssyrk (CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t Trans, + float alpha, + const gsl_matrix_float * A, + float beta, + gsl_matrix_float * C); + +int gsl_blas_ssyr2k (CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t Trans, + float alpha, + const gsl_matrix_float * A, + const gsl_matrix_float * B, + float beta, + gsl_matrix_float * C); + +int gsl_blas_strmm (CBLAS_SIDE_t Side, + CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t TransA, + CBLAS_DIAG_t Diag, + float alpha, + const gsl_matrix_float * A, + gsl_matrix_float * B); + +int gsl_blas_strsm (CBLAS_SIDE_t Side, + CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t TransA, + CBLAS_DIAG_t Diag, + float alpha, + const gsl_matrix_float * A, + gsl_matrix_float * B); + +int gsl_blas_dgemm (CBLAS_TRANSPOSE_t TransA, + CBLAS_TRANSPOSE_t TransB, + double alpha, + const gsl_matrix * A, + const gsl_matrix * B, + double beta, + gsl_matrix * C); + +int gsl_blas_dsymm (CBLAS_SIDE_t Side, + CBLAS_UPLO_t Uplo, + double alpha, + const gsl_matrix * A, + const gsl_matrix * B, + double beta, + gsl_matrix * C); + +int gsl_blas_dsyrk (CBLAS_UPLO_t Uplo, + CBLAS_TRANSPOSE_t Trans, + double alpha, + const gsl_matrix * A, + double beta, + gsl_matrix * C); + +int gsl_blas_dsyr2k (CBLAS_UPLO_t Uplo, + CBLAS_TRANSPOSE_t Trans, + double alpha, + const gsl_matrix * A, + const gsl_matrix * B, + double beta, + gsl_matrix * C); + +int gsl_blas_dtrmm (CBLAS_SIDE_t Side, + CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t TransA, + CBLAS_DIAG_t Diag, + double alpha, + const gsl_matrix * A, + gsl_matrix * B); + +int gsl_blas_dtrsm (CBLAS_SIDE_t Side, + CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t TransA, + CBLAS_DIAG_t Diag, + double alpha, + const gsl_matrix * A, + gsl_matrix * B); + +int gsl_blas_cgemm (CBLAS_TRANSPOSE_t TransA, + CBLAS_TRANSPOSE_t TransB, + const gsl_complex_float alpha, + const gsl_matrix_complex_float * A, + const gsl_matrix_complex_float * B, + const gsl_complex_float beta, + gsl_matrix_complex_float * C); + +int gsl_blas_csymm (CBLAS_SIDE_t Side, + CBLAS_UPLO_t Uplo, + const gsl_complex_float alpha, + const gsl_matrix_complex_float * A, + const gsl_matrix_complex_float * B, + const gsl_complex_float beta, + gsl_matrix_complex_float * C); + +int gsl_blas_csyrk (CBLAS_UPLO_t Uplo, + CBLAS_TRANSPOSE_t Trans, + const gsl_complex_float alpha, + const gsl_matrix_complex_float * A, + const gsl_complex_float beta, + gsl_matrix_complex_float * C); + +int gsl_blas_csyr2k (CBLAS_UPLO_t Uplo, + CBLAS_TRANSPOSE_t Trans, + const gsl_complex_float alpha, + const gsl_matrix_complex_float * A, + const gsl_matrix_complex_float * B, + const gsl_complex_float beta, + gsl_matrix_complex_float * C); + +int gsl_blas_ctrmm (CBLAS_SIDE_t Side, + CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t TransA, + CBLAS_DIAG_t Diag, + const gsl_complex_float alpha, + const gsl_matrix_complex_float * A, + gsl_matrix_complex_float * B); + +int gsl_blas_ctrsm (CBLAS_SIDE_t Side, + CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t TransA, + CBLAS_DIAG_t Diag, + const gsl_complex_float alpha, + const gsl_matrix_complex_float * A, + gsl_matrix_complex_float * B); + +int gsl_blas_zgemm (CBLAS_TRANSPOSE_t TransA, + CBLAS_TRANSPOSE_t TransB, + const gsl_complex alpha, + const gsl_matrix_complex * A, + const gsl_matrix_complex * B, + const gsl_complex beta, + gsl_matrix_complex * C); + +int gsl_blas_zsymm (CBLAS_SIDE_t Side, + CBLAS_UPLO_t Uplo, + const gsl_complex alpha, + const gsl_matrix_complex * A, + const gsl_matrix_complex * B, + const gsl_complex beta, + gsl_matrix_complex * C); + +int gsl_blas_zsyrk (CBLAS_UPLO_t Uplo, + CBLAS_TRANSPOSE_t Trans, + const gsl_complex alpha, + const gsl_matrix_complex * A, + const gsl_complex beta, + gsl_matrix_complex * C); + +int gsl_blas_zsyr2k (CBLAS_UPLO_t Uplo, + CBLAS_TRANSPOSE_t Trans, + const gsl_complex alpha, + const gsl_matrix_complex * A, + const gsl_matrix_complex * B, + const gsl_complex beta, + gsl_matrix_complex *C); + +int gsl_blas_ztrmm (CBLAS_SIDE_t Side, + CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t TransA, + CBLAS_DIAG_t Diag, + const gsl_complex alpha, + const gsl_matrix_complex * A, + gsl_matrix_complex * B); + +int gsl_blas_ztrsm (CBLAS_SIDE_t Side, + CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t TransA, + CBLAS_DIAG_t Diag, + const gsl_complex alpha, + const gsl_matrix_complex * A, + gsl_matrix_complex * B); + +/* + * Routines with prefixes C and Z only + */ +int gsl_blas_chemm (CBLAS_SIDE_t Side, + CBLAS_UPLO_t Uplo, + const gsl_complex_float alpha, + const gsl_matrix_complex_float * A, + const gsl_matrix_complex_float * B, + const gsl_complex_float beta, + gsl_matrix_complex_float * C); + +int gsl_blas_cherk (CBLAS_UPLO_t Uplo, + CBLAS_TRANSPOSE_t Trans, + float alpha, + const gsl_matrix_complex_float * A, + float beta, + gsl_matrix_complex_float * C); + +int gsl_blas_cher2k (CBLAS_UPLO_t Uplo, + CBLAS_TRANSPOSE_t Trans, + const gsl_complex_float alpha, + const gsl_matrix_complex_float * A, + const gsl_matrix_complex_float * B, + float beta, + gsl_matrix_complex_float * C); + +int gsl_blas_zhemm (CBLAS_SIDE_t Side, + CBLAS_UPLO_t Uplo, + const gsl_complex alpha, + const gsl_matrix_complex * A, + const gsl_matrix_complex * B, + const gsl_complex beta, + gsl_matrix_complex * C); + +int gsl_blas_zherk (CBLAS_UPLO_t Uplo, + CBLAS_TRANSPOSE_t Trans, + double alpha, + const gsl_matrix_complex * A, + double beta, + gsl_matrix_complex * C); + +int gsl_blas_zher2k (CBLAS_UPLO_t Uplo, + CBLAS_TRANSPOSE_t Trans, + const gsl_complex alpha, + const gsl_matrix_complex * A, + const gsl_matrix_complex * B, + double beta, + gsl_matrix_complex * C); + + +__END_DECLS + +#endif /* __GSL_BLAS_H__ */ diff --git a/gsl-2.5/blas/gsl_blas_types.h b/gsl-2.5/blas/gsl_blas_types.h new file mode 100644 index 00000000..923edb31 --- /dev/null +++ b/gsl-2.5/blas/gsl_blas_types.h @@ -0,0 +1,54 @@ +/* blas/gsl_blas_types.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* + * Author: G. Jungman + */ +/* Based on draft BLAST C interface specification [Jul 7 1998] + */ +#ifndef __GSL_BLAS_TYPES_H__ +#define __GSL_BLAS_TYPES_H__ + +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +typedef CBLAS_INDEX CBLAS_INDEX_t; +typedef enum CBLAS_ORDER CBLAS_ORDER_t; +typedef enum CBLAS_TRANSPOSE CBLAS_TRANSPOSE_t; +typedef enum CBLAS_UPLO CBLAS_UPLO_t; +typedef enum CBLAS_DIAG CBLAS_DIAG_t; +typedef enum CBLAS_SIDE CBLAS_SIDE_t; + +/* typedef gsl_complex COMPLEX; */ + +__END_DECLS + + +#endif /* __GSL_BLAS_TYPES_H__ */ diff --git a/gsl-2.5/blas/libgslblas.la b/gsl-2.5/blas/libgslblas.la new file mode 100644 index 00000000..dcf2333d --- /dev/null +++ b/gsl-2.5/blas/libgslblas.la @@ -0,0 +1,41 @@ +# libgslblas.la - a libtool library file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='' + +# Names of this library. +library_names='' + +# The name of the static archive. +old_library='libgslblas.a' + +# Linker flags that can not go in dependency_libs. +inherited_linker_flags='' + +# Libraries that this one depends upon. +dependency_libs=' -lm' + +# Names of additional weak libraries provided by this library +weak_library_names='' + +# Version information for libgslblas. +current= +age= +revision= + +# Is this an already installed library? +installed=no + +# Should we warn about portability when linking against -modules? +shouldnotlink=no + +# Files to dlopen/dlpreopen +dlopen='' +dlpreopen='' + +# Directory that this library needs to be installed in: +libdir='' diff --git a/gsl-2.5/block/.deps/block.Plo b/gsl-2.5/block/.deps/block.Plo new file mode 100644 index 00000000..f8726880 --- /dev/null +++ b/gsl-2.5/block/.deps/block.Plo @@ -0,0 +1,151 @@ +block.lo: block.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_errno.h /usr/include/stdio.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_types.h ../gsl/gsl_block.h \ + ../gsl/gsl_block_complex_long_double.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_block_complex_float.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_float.h \ + ../gsl/gsl_block_ulong.h ../gsl/gsl_block_long.h ../gsl/gsl_block_uint.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_block_ushort.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_block_uchar.h \ + ../gsl/gsl_block_char.h ../templates_on.h block_source.c \ + ../templates_off.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_block.h: + +../gsl/gsl_block_complex_long_double.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_block_char.h: + +../templates_on.h: + +block_source.c: + +../templates_off.h: diff --git a/gsl-2.5/block/.deps/file.Plo b/gsl-2.5/block/.deps/file.Plo new file mode 100644 index 00000000..d232337c --- /dev/null +++ b/gsl-2.5/block/.deps/file.Plo @@ -0,0 +1,153 @@ +file.lo: file.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdio.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../gsl/gsl_errno.h /usr/include/errno.h \ + /usr/include/bits/errno.h /usr/include/linux/errno.h \ + /usr/include/asm/errno.h /usr/include/asm-generic/errno.h \ + /usr/include/asm-generic/errno-base.h ../gsl/gsl_types.h \ + ../gsl/gsl_block.h ../gsl/gsl_block_complex_long_double.h \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/byteswap.h \ + /usr/include/bits/byteswap-16.h /usr/include/sys/types.h \ + /usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib-float.h \ + ../gsl/gsl_block_complex_double.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_block_double.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_block_long.h ../gsl/gsl_block_uint.h ../gsl/gsl_block_int.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_block_short.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_block_char.h ../templates_on.h \ + fwrite_source.c fprintf_source.c ../templates_off.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_block.h: + +../gsl/gsl_block_complex_long_double.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_block_char.h: + +../templates_on.h: + +fwrite_source.c: + +fprintf_source.c: + +../templates_off.h: diff --git a/gsl-2.5/block/.deps/init.Plo b/gsl-2.5/block/.deps/init.Plo new file mode 100644 index 00000000..a4b164ab --- /dev/null +++ b/gsl-2.5/block/.deps/init.Plo @@ -0,0 +1,162 @@ +init.lo: init.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/string.h \ + /usr/include/xlocale.h /usr/include/bits/string.h \ + /usr/include/bits/string2.h ../gsl/gsl_block.h \ + ../gsl/gsl_block_complex_long_double.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_types.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_block_complex_float.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_float.h \ + ../gsl/gsl_block_ulong.h ../gsl/gsl_block_long.h ../gsl/gsl_block_uint.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_block_ushort.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_block_uchar.h \ + ../gsl/gsl_block_char.h ../templates_on.h init_source.c \ + ../templates_off.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string.h: + +/usr/include/bits/string2.h: + +../gsl/gsl_block.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_block_char.h: + +../templates_on.h: + +init_source.c: + +../templates_off.h: diff --git a/gsl-2.5/block/.deps/test.Po b/gsl-2.5/block/.deps/test.Po new file mode 100644 index 00000000..32dffdbc --- /dev/null +++ b/gsl-2.5/block/.deps/test.Po @@ -0,0 +1,173 @@ +test.o: test.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/fcntl.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/fcntl.h \ + /usr/include/bits/fcntl-linux.h /usr/include/time.h \ + /usr/include/bits/stat.h /usr/include/stdlib.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../gsl/gsl_block.h \ + ../gsl/gsl_block_complex_long_double.h ../gsl/gsl_errno.h \ + /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_types.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_block_complex_float.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_float.h \ + ../gsl/gsl_block_ulong.h ../gsl/gsl_block_long.h ../gsl/gsl_block_uint.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_block_ushort.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_block_uchar.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_ieee_utils.h ../gsl/gsl_test.h \ + ../templates_on.h test_complex_source.c test_complex_io.c \ + ../templates_off.h test_source.c test_io.c + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/fcntl.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/fcntl.h: + +/usr/include/bits/fcntl-linux.h: + +/usr/include/time.h: + +/usr/include/bits/stat.h: + +/usr/include/stdlib.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../gsl/gsl_block.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_ieee_utils.h: + +../gsl/gsl_test.h: + +../templates_on.h: + +test_complex_source.c: + +test_complex_io.c: + +../templates_off.h: + +test_source.c: + +test_io.c: diff --git a/gsl-2.5/block/.libs/libgslblock.la b/gsl-2.5/block/.libs/libgslblock.la new file mode 120000 index 00000000..27d8ed96 --- /dev/null +++ b/gsl-2.5/block/.libs/libgslblock.la @@ -0,0 +1 @@ +../libgslblock.la \ No newline at end of file diff --git a/gsl-2.5/block/ChangeLog b/gsl-2.5/block/ChangeLog new file mode 100644 index 00000000..ee2d5fac --- /dev/null +++ b/gsl-2.5/block/ChangeLog @@ -0,0 +1,49 @@ +2017-01-07 Rhys Ulerich + + * init_source.c: permit zero-length blocks (#49988) + * test_source.c: zero-length for alloc and calloc + * test_complex_source.c: zero-length for alloc and calloc + * test.c: rename trap as alloc_zero_length, add calloc tests + +2009-07-09 Brian Gough + + * init_source.c (FUNCTION): handle NULL argument in free + +2008-07-03 Brian Gough + + * Makefile.am (INCLUDES): remove top_builddir + +2005-05-21 Brian Gough + + * Makefile.am (pkginclude_HEADERS): removed unused file + gsl_block_complex.h + +2004-06-03 Brian Gough + + * gsl_check_range.h: provide backwards-compatible support for + GSL_RANGE_CHECK_OFF and GSL_RANGE_CHECK + +Sat Jul 15 21:45:10 2000 Brian Gough + + * init_source.c (FUNCTION): changed GSL_EDOM to GSL_EINVAL for + invalid size arguments + +Sun May 28 12:22:26 2000 Brian Gough + + * test_complex_source.c (FUNCTION): use binary mode "b" when + reading and writing binary files + + * test_source.c (FUNCTION): use binary mode "b" when reading and + writing binary files + +Thu Mar 2 20:51:23 2000 Brian Gough + + * fprintf_source.c: all input is now done through an ATOMIC_IO + type, since char has to be written/read using a different type + (int). + +Fri Oct 1 15:48:31 1999 Brian Gough + + * this directory handles the memory management for vectors and + matrices + diff --git a/gsl-2.5/block/Makefile b/gsl-2.5/block/Makefile new file mode 100644 index 00000000..0de2bed7 --- /dev/null +++ b/gsl-2.5/block/Makefile @@ -0,0 +1,1030 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# block/Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + + + + +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/gsl +pkgincludedir = $(includedir)/gsl +pkglibdir = $(libdir)/gsl +pkglibexecdir = $(libexecdir)/gsl +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = x86_64-unknown-linux-gnu +host_triplet = x86_64-unknown-linux-gnu +check_PROGRAMS = test$(EXEEXT) +subdir = block +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp \ + $(noinst_HEADERS) $(pkginclude_HEADERS) \ + $(top_srcdir)/test-driver ChangeLog +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +libgslblock_la_LIBADD = +am_libgslblock_la_OBJECTS = init.lo file.lo block.lo +libgslblock_la_OBJECTS = $(am_libgslblock_la_OBJECTS) +AM_V_lt = $(am__v_lt_$(V)) +am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) +am__v_lt_0 = --silent +am__v_lt_1 = +am_test_OBJECTS = test.$(OBJEXT) +test_OBJECTS = $(am_test_OBJECTS) +test_DEPENDENCIES = libgslblock.la ../ieee-utils/libgslieeeutils.la \ + ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la \ + ../utils/libutils.la +AM_V_P = $(am__v_P_$(V)) +am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY)) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_$(V)) +am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_$(V)) +am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I. -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_$(V)) +am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_$(V)) +am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libgslblock_la_SOURCES) $(test_SOURCES) +DIST_SOURCES = $(libgslblock_la_SOURCES) $(test_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(pkgincludedir)" +HEADERS = $(noinst_HEADERS) $(pkginclude_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = .test +LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing aclocal-1.13 +AMTAR = $${TAR-tar} +AM_DEFAULT_VERBOSITY = 1 +AR = ar +AS = as +AUTOCONF = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing autoconf +AUTOHEADER = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing autoheader +AUTOMAKE = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing automake-1.13 +AWK = gawk +CC = gcc +CCDEPMODE = depmode=gcc3 +CFLAGS = -g -O2 +CPP = gcc -E +CPPFLAGS = +CYGPATH_W = echo +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +DLLTOOL = false +DSYMUTIL = +DUMPBIN = +ECHO_C = +ECHO_N = -n +ECHO_T = +EGREP = /usr/bin/grep -E +EXEEXT = +FGREP = /usr/bin/grep -F +GREP = /usr/bin/grep +GSLCBLAS_LDFLAGS = +GSL_CFLAGS = -I${prefix}/include +GSL_LDFLAGS = +GSL_LIBADD = +GSL_LIBM = -lm +GSL_LIBS = -L${exec_prefix}/lib -lgsl +GSL_LT_CBLAS_VERSION = 0:0:0 +GSL_LT_VERSION = 24:0:1 +GSL_MAJOR_VERSION = 2 +GSL_MINOR_VERSION = 5 +HAVE_AIX_IEEE_INTERFACE = +HAVE_DARWIN86_IEEE_INTERFACE = +HAVE_DARWIN_IEEE_INTERFACE = +HAVE_FREEBSD_IEEE_INTERFACE = +HAVE_GNUM68K_IEEE_INTERFACE = +HAVE_GNUPPC_IEEE_INTERFACE = +HAVE_GNUSPARC_IEEE_INTERFACE = +HAVE_GNUX86_IEEE_INTERFACE = +HAVE_HPUX11_IEEE_INTERFACE = +HAVE_HPUX_IEEE_INTERFACE = +HAVE_IRIX_IEEE_INTERFACE = +HAVE_NETBSD_IEEE_INTERFACE = +HAVE_OPENBSD_IEEE_INTERFACE = +HAVE_OS2EMX_IEEE_INTERFACE = +HAVE_SOLARIS_IEEE_INTERFACE = +HAVE_SUNOS4_IEEE_INTERFACE = +HAVE_TRU64_IEEE_INTERFACE = +INSTALL = /usr/bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = $(install_sh) -c -s +LD = /usr/bin/ld -m elf_x86_64 +LDFLAGS = +LIBM = -lm +LIBOBJS = +LIBS = -lm +LIBTOOL = $(SHELL) $(top_builddir)/libtool +LIPO = +LN_S = ln -s +LTLIBOBJS = +MAINT = # +MAKEINFO = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing makeinfo +MANIFEST_TOOL = : +MKDIR_P = /usr/bin/mkdir -p +NM = /usr/bin/nm -B +NMEDIT = +OBJDUMP = objdump +OBJEXT = o +OTOOL = +OTOOL64 = +PACKAGE = gsl +PACKAGE_BUGREPORT = +PACKAGE_NAME = gsl +PACKAGE_STRING = gsl 2.5 +PACKAGE_TARNAME = gsl +PACKAGE_URL = +PACKAGE_VERSION = 2.5 +PATH_SEPARATOR = : +RANLIB = ranlib +SED = /usr/bin/sed +SET_MAKE = +SHELL = /bin/sh +STRIP = strip +VERSION = 2.5 +abs_builddir = /home/groups/kipac/chto/package/gsl/gsl-2.5/block +abs_srcdir = /home/groups/kipac/chto/package/gsl/gsl-2.5/block +abs_top_builddir = /home/groups/kipac/chto/package/gsl/gsl-2.5 +abs_top_srcdir = /home/groups/kipac/chto/package/gsl/gsl-2.5 +ac_ct_AR = ar +ac_ct_CC = gcc +ac_ct_DUMPBIN = +am__include = include +am__leading_dot = . +am__quote = +am__tar = $${TAR-tar} chof - "$$tardir" +am__untar = $${TAR-tar} xf - +bindir = ${exec_prefix}/bin +build = x86_64-unknown-linux-gnu +build_alias = +build_cpu = x86_64 +build_os = linux-gnu +build_vendor = unknown +builddir = . +datadir = ${datarootdir} +datarootdir = ${prefix}/share +docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} +dvidir = ${docdir} +exec_prefix = ${prefix} +host = x86_64-unknown-linux-gnu +host_alias = +host_cpu = x86_64 +host_os = linux-gnu +host_vendor = unknown +htmldir = ${docdir} +includedir = ${prefix}/include +infodir = ${datarootdir}/info +install_sh = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/install-sh +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +localedir = ${datarootdir}/locale +localstatedir = ${prefix}/var +mandir = ${datarootdir}/man +mkdir_p = $(MKDIR_P) +oldincludedir = /usr/include +pdfdir = ${docdir} +prefix = /home/groups/kipac/chto/package/gsl/gsl_lib +program_transform_name = s,x,x, +psdir = ${docdir} +sbindir = ${exec_prefix}/sbin +sharedstatedir = ${prefix}/com +srcdir = . +sysconfdir = ${prefix}/etc +target_alias = +top_build_prefix = ../ +top_builddir = .. +top_srcdir = .. +noinst_LTLIBRARIES = libgslblock.la +pkginclude_HEADERS = gsl_block.h gsl_block_char.h gsl_block_complex_double.h gsl_block_complex_float.h gsl_block_complex_long_double.h gsl_block_double.h gsl_block_float.h gsl_block_int.h gsl_block_long.h gsl_block_long_double.h gsl_block_short.h gsl_block_uchar.h gsl_block_uint.h gsl_block_ulong.h gsl_block_ushort.h gsl_check_range.h +AM_CPPFLAGS = -I$(top_srcdir) +TESTS = $(check_PROGRAMS) +test_LDADD = libgslblock.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la +test_SOURCES = test.c +CLEANFILES = test.txt test.dat +noinst_HEADERS = block_source.c init_source.c fprintf_source.c fwrite_source.c test_complex_source.c test_source.c test_io.c test_complex_io.c +libgslblock_la_SOURCES = init.c file.c block.c +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu block/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu block/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: # $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): # $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libgslblock.la: $(libgslblock_la_OBJECTS) $(libgslblock_la_DEPENDENCIES) $(EXTRA_libgslblock_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(libgslblock_la_OBJECTS) $(libgslblock_la_LIBADD) $(LIBS) + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) $(EXTRA_test_DEPENDENCIES) + @rm -f test$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_OBJECTS) $(test_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +include ./$(DEPDIR)/block.Plo +include ./$(DEPDIR)/file.Plo +include ./$(DEPDIR)/init.Plo +include ./$(DEPDIR)/test.Po + +.c.o: + $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# $(AM_V_CC)source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(COMPILE) -c $< + +.c.obj: + $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# $(AM_V_CC)source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: + $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +# $(AM_V_CC)source='$<' object='$@' libtool=yes \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-pkgincludeHEADERS: $(pkginclude_HEADERS) + @$(NORMAL_INSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \ + done + +uninstall-pkgincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + else \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_PROGRAMS) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +test.log: test$(EXEEXT) + @p='test$(EXEEXT)'; \ + b='test'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +#.test$(EXEEXT).log: +# @p='$<'; \ +# $(am__set_b); \ +# $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +# --log-file $$b.log --trs-file $$b.trs \ +# $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +# "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-am +all-am: Makefile $(LTLIBRARIES) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(pkgincludedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-pkgincludeHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-pkgincludeHEADERS + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES cscopelist-am ctags ctags-am distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-pkgincludeHEADERS \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + recheck tags tags-am uninstall uninstall-am \ + uninstall-pkgincludeHEADERS + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gsl-2.5/block/Makefile.am b/gsl-2.5/block/Makefile.am new file mode 100644 index 00000000..87124f53 --- /dev/null +++ b/gsl-2.5/block/Makefile.am @@ -0,0 +1,19 @@ +noinst_LTLIBRARIES = libgslblock.la + +check_PROGRAMS = test + +pkginclude_HEADERS = gsl_block.h gsl_block_char.h gsl_block_complex_double.h gsl_block_complex_float.h gsl_block_complex_long_double.h gsl_block_double.h gsl_block_float.h gsl_block_int.h gsl_block_long.h gsl_block_long_double.h gsl_block_short.h gsl_block_uchar.h gsl_block_uint.h gsl_block_ulong.h gsl_block_ushort.h gsl_check_range.h + +AM_CPPFLAGS = -I$(top_srcdir) + +TESTS = $(check_PROGRAMS) + +test_LDADD = libgslblock.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la + +test_SOURCES = test.c + +CLEANFILES = test.txt test.dat + +noinst_HEADERS = block_source.c init_source.c fprintf_source.c fwrite_source.c test_complex_source.c test_source.c test_io.c test_complex_io.c + +libgslblock_la_SOURCES = init.c file.c block.c diff --git a/gsl-2.5/block/Makefile.in b/gsl-2.5/block/Makefile.in new file mode 100644 index 00000000..7d930776 --- /dev/null +++ b/gsl-2.5/block/Makefile.in @@ -0,0 +1,1030 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + + +VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +check_PROGRAMS = test$(EXEEXT) +subdir = block +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp \ + $(noinst_HEADERS) $(pkginclude_HEADERS) \ + $(top_srcdir)/test-driver ChangeLog +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +libgslblock_la_LIBADD = +am_libgslblock_la_OBJECTS = init.lo file.lo block.lo +libgslblock_la_OBJECTS = $(am_libgslblock_la_OBJECTS) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +am_test_OBJECTS = test.$(OBJEXT) +test_OBJECTS = $(am_test_OBJECTS) +test_DEPENDENCIES = libgslblock.la ../ieee-utils/libgslieeeutils.la \ + ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la \ + ../utils/libutils.la +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libgslblock_la_SOURCES) $(test_SOURCES) +DIST_SOURCES = $(libgslblock_la_SOURCES) $(test_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(pkgincludedir)" +HEADERS = $(noinst_HEADERS) $(pkginclude_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = @EXEEXT@ .test +LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +GSLCBLAS_LDFLAGS = @GSLCBLAS_LDFLAGS@ +GSL_CFLAGS = @GSL_CFLAGS@ +GSL_LDFLAGS = @GSL_LDFLAGS@ +GSL_LIBADD = @GSL_LIBADD@ +GSL_LIBM = @GSL_LIBM@ +GSL_LIBS = @GSL_LIBS@ +GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ +GSL_LT_VERSION = @GSL_LT_VERSION@ +GSL_MAJOR_VERSION = @GSL_MAJOR_VERSION@ +GSL_MINOR_VERSION = @GSL_MINOR_VERSION@ +HAVE_AIX_IEEE_INTERFACE = @HAVE_AIX_IEEE_INTERFACE@ +HAVE_DARWIN86_IEEE_INTERFACE = @HAVE_DARWIN86_IEEE_INTERFACE@ +HAVE_DARWIN_IEEE_INTERFACE = @HAVE_DARWIN_IEEE_INTERFACE@ +HAVE_FREEBSD_IEEE_INTERFACE = @HAVE_FREEBSD_IEEE_INTERFACE@ +HAVE_GNUM68K_IEEE_INTERFACE = @HAVE_GNUM68K_IEEE_INTERFACE@ +HAVE_GNUPPC_IEEE_INTERFACE = @HAVE_GNUPPC_IEEE_INTERFACE@ +HAVE_GNUSPARC_IEEE_INTERFACE = @HAVE_GNUSPARC_IEEE_INTERFACE@ +HAVE_GNUX86_IEEE_INTERFACE = @HAVE_GNUX86_IEEE_INTERFACE@ +HAVE_HPUX11_IEEE_INTERFACE = @HAVE_HPUX11_IEEE_INTERFACE@ +HAVE_HPUX_IEEE_INTERFACE = @HAVE_HPUX_IEEE_INTERFACE@ +HAVE_IRIX_IEEE_INTERFACE = @HAVE_IRIX_IEEE_INTERFACE@ +HAVE_NETBSD_IEEE_INTERFACE = @HAVE_NETBSD_IEEE_INTERFACE@ +HAVE_OPENBSD_IEEE_INTERFACE = @HAVE_OPENBSD_IEEE_INTERFACE@ +HAVE_OS2EMX_IEEE_INTERFACE = @HAVE_OS2EMX_IEEE_INTERFACE@ +HAVE_SOLARIS_IEEE_INTERFACE = @HAVE_SOLARIS_IEEE_INTERFACE@ +HAVE_SUNOS4_IEEE_INTERFACE = @HAVE_SUNOS4_IEEE_INTERFACE@ +HAVE_TRU64_IEEE_INTERFACE = @HAVE_TRU64_IEEE_INTERFACE@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBM = @LIBM@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +noinst_LTLIBRARIES = libgslblock.la +pkginclude_HEADERS = gsl_block.h gsl_block_char.h gsl_block_complex_double.h gsl_block_complex_float.h gsl_block_complex_long_double.h gsl_block_double.h gsl_block_float.h gsl_block_int.h gsl_block_long.h gsl_block_long_double.h gsl_block_short.h gsl_block_uchar.h gsl_block_uint.h gsl_block_ulong.h gsl_block_ushort.h gsl_check_range.h +AM_CPPFLAGS = -I$(top_srcdir) +TESTS = $(check_PROGRAMS) +test_LDADD = libgslblock.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la +test_SOURCES = test.c +CLEANFILES = test.txt test.dat +noinst_HEADERS = block_source.c init_source.c fprintf_source.c fwrite_source.c test_complex_source.c test_source.c test_io.c test_complex_io.c +libgslblock_la_SOURCES = init.c file.c block.c +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu block/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu block/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libgslblock.la: $(libgslblock_la_OBJECTS) $(libgslblock_la_DEPENDENCIES) $(EXTRA_libgslblock_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(libgslblock_la_OBJECTS) $(libgslblock_la_LIBADD) $(LIBS) + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) $(EXTRA_test_DEPENDENCIES) + @rm -f test$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_OBJECTS) $(test_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/block.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/file.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/init.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test.Po@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-pkgincludeHEADERS: $(pkginclude_HEADERS) + @$(NORMAL_INSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \ + done + +uninstall-pkgincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + else \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_PROGRAMS) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +test.log: test$(EXEEXT) + @p='test$(EXEEXT)'; \ + b='test'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +@am__EXEEXT_TRUE@.test$(EXEEXT).log: +@am__EXEEXT_TRUE@ @p='$<'; \ +@am__EXEEXT_TRUE@ $(am__set_b); \ +@am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +@am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ +@am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +@am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-am +all-am: Makefile $(LTLIBRARIES) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(pkgincludedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-pkgincludeHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-pkgincludeHEADERS + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES cscopelist-am ctags ctags-am distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-pkgincludeHEADERS \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + recheck tags tags-am uninstall uninstall-am \ + uninstall-pkgincludeHEADERS + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gsl-2.5/block/block.c b/gsl-2.5/block/block.c new file mode 100644 index 00000000..a60e0e0a --- /dev/null +++ b/gsl-2.5/block/block.c @@ -0,0 +1,87 @@ +#include +#include +#include + +#define BASE_GSL_COMPLEX_LONG +#include "templates_on.h" +#include "block_source.c" +#include "templates_off.h" +#undef BASE_GSL_COMPLEX_LONG + +#define BASE_GSL_COMPLEX +#include "templates_on.h" +#include "block_source.c" +#include "templates_off.h" +#undef BASE_GSL_COMPLEX + +#define BASE_GSL_COMPLEX_FLOAT +#include "templates_on.h" +#include "block_source.c" +#include "templates_off.h" +#undef BASE_GSL_COMPLEX_FLOAT + +#define BASE_LONG_DOUBLE +#include "templates_on.h" +#include "block_source.c" +#include "templates_off.h" +#undef BASE_LONG_DOUBLE + +#define BASE_DOUBLE +#include "templates_on.h" +#include "block_source.c" +#include "templates_off.h" +#undef BASE_DOUBLE + +#define BASE_FLOAT +#include "templates_on.h" +#include "block_source.c" +#include "templates_off.h" +#undef BASE_FLOAT + +#define BASE_ULONG +#include "templates_on.h" +#include "block_source.c" +#include "templates_off.h" +#undef BASE_ULONG + +#define BASE_LONG +#include "templates_on.h" +#include "block_source.c" +#include "templates_off.h" +#undef BASE_LONG + +#define BASE_UINT +#include "templates_on.h" +#include "block_source.c" +#include "templates_off.h" +#undef BASE_UINT + +#define BASE_INT +#include "templates_on.h" +#include "block_source.c" +#include "templates_off.h" +#undef BASE_INT + +#define BASE_USHORT +#include "templates_on.h" +#include "block_source.c" +#include "templates_off.h" +#undef BASE_USHORT + +#define BASE_SHORT +#include "templates_on.h" +#include "block_source.c" +#include "templates_off.h" +#undef BASE_SHORT + +#define BASE_UCHAR +#include "templates_on.h" +#include "block_source.c" +#include "templates_off.h" +#undef BASE_UCHAR + +#define BASE_CHAR +#include "templates_on.h" +#include "block_source.c" +#include "templates_off.h" +#undef BASE_CHAR diff --git a/gsl-2.5/block/block.lo b/gsl-2.5/block/block.lo new file mode 100644 index 00000000..01ba279d --- /dev/null +++ b/gsl-2.5/block/block.lo @@ -0,0 +1,12 @@ +# block.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/block.o' + +# Name of the non-PIC object +non_pic_object='block.o' + diff --git a/gsl-2.5/block/block_source.c b/gsl-2.5/block/block_source.c new file mode 100644 index 00000000..d654bb15 --- /dev/null +++ b/gsl-2.5/block/block_source.c @@ -0,0 +1,30 @@ +/* block/block_source.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +size_t +FUNCTION(gsl_block,size) (const TYPE(gsl_block) * b) +{ + return b->size ; +} + +ATOMIC * +FUNCTION(gsl_block,data) (const TYPE(gsl_block) * b) +{ + return b->data ; +} diff --git a/gsl-2.5/block/file.c b/gsl-2.5/block/file.c new file mode 100644 index 00000000..f86b5372 --- /dev/null +++ b/gsl-2.5/block/file.c @@ -0,0 +1,102 @@ +#include +#include +#include +#include + +#define BASE_GSL_COMPLEX_LONG +#include "templates_on.h" +#include "fwrite_source.c" +#include "fprintf_source.c" +#include "templates_off.h" +#undef BASE_GSL_COMPLEX_LONG + +#define BASE_GSL_COMPLEX +#include "templates_on.h" +#include "fwrite_source.c" +#include "fprintf_source.c" +#include "templates_off.h" +#undef BASE_GSL_COMPLEX + +#define BASE_GSL_COMPLEX_FLOAT +#include "templates_on.h" +#include "fwrite_source.c" +#include "fprintf_source.c" +#include "templates_off.h" +#undef BASE_GSL_COMPLEX_FLOAT + +#define BASE_LONG_DOUBLE +#include "templates_on.h" +#include "fwrite_source.c" +#include "fprintf_source.c" +#include "templates_off.h" +#undef BASE_LONG_DOUBLE + +#define BASE_DOUBLE +#include "templates_on.h" +#include "fwrite_source.c" +#include "fprintf_source.c" +#include "templates_off.h" +#undef BASE_DOUBLE + +#define BASE_FLOAT +#include "templates_on.h" +#include "fwrite_source.c" +#include "fprintf_source.c" +#include "templates_off.h" +#undef BASE_FLOAT + +#define BASE_ULONG +#include "templates_on.h" +#include "fwrite_source.c" +#include "fprintf_source.c" +#include "templates_off.h" +#undef BASE_ULONG + +#define BASE_LONG +#include "templates_on.h" +#include "fwrite_source.c" +#include "fprintf_source.c" +#include "templates_off.h" +#undef BASE_LONG + +#define BASE_UINT +#include "templates_on.h" +#include "fwrite_source.c" +#include "fprintf_source.c" +#include "templates_off.h" +#undef BASE_UINT + +#define BASE_INT +#include "templates_on.h" +#include "fwrite_source.c" +#include "fprintf_source.c" +#include "templates_off.h" +#undef BASE_INT + +#define BASE_USHORT +#include "templates_on.h" +#include "fwrite_source.c" +#include "fprintf_source.c" +#include "templates_off.h" +#undef BASE_USHORT + +#define BASE_SHORT +#include "templates_on.h" +#include "fwrite_source.c" +#include "fprintf_source.c" +#include "templates_off.h" +#undef BASE_SHORT + +#define BASE_UCHAR +#include "templates_on.h" +#include "fwrite_source.c" +#include "fprintf_source.c" +#include "templates_off.h" +#undef BASE_UCHAR + +#define BASE_CHAR +#include "templates_on.h" +#include "fwrite_source.c" +#include "fprintf_source.c" +#include "templates_off.h" +#undef BASE_CHAR diff --git a/gsl-2.5/block/file.lo b/gsl-2.5/block/file.lo new file mode 100644 index 00000000..1443af7c --- /dev/null +++ b/gsl-2.5/block/file.lo @@ -0,0 +1,12 @@ +# file.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/file.o' + +# Name of the non-PIC object +non_pic_object='file.o' + diff --git a/gsl-2.5/block/fprintf_source.c b/gsl-2.5/block/fprintf_source.c new file mode 100644 index 00000000..33a714d1 --- /dev/null +++ b/gsl-2.5/block/fprintf_source.c @@ -0,0 +1,173 @@ +/* block/fprintf_source.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#if !(USES_LONGDOUBLE && !HAVE_PRINTF_LONGDOUBLE) + +int +FUNCTION (gsl_block, fprintf) (FILE * stream, const TYPE(gsl_block) * b, const char *format) +{ + size_t n = b->size ; + + ATOMIC * data = b->data ; + + size_t i; + + for (i = 0; i < n; i++) + { + int k; + int status; + + for (k = 0; k < MULTIPLICITY; k++) + { + if (k > 0) + { + status = putc (' ', stream); + + if (status == EOF) + { + GSL_ERROR ("putc failed", GSL_EFAILED); + } + } + status = fprintf (stream, + format, + data[MULTIPLICITY * i + k]); + if (status < 0) + { + GSL_ERROR ("fprintf failed", GSL_EFAILED); + } + } + + status = putc ('\n', stream); + + if (status == EOF) + { + GSL_ERROR ("putc failed", GSL_EFAILED); + } + } + + return 0; +} + +int +FUNCTION (gsl_block, fscanf) (FILE * stream, TYPE(gsl_block) * b) +{ + size_t n = b->size ; + + ATOMIC * data = b->data ; + + size_t i; + + for (i = 0; i < n; i++) + { + int k; + for (k = 0; k < MULTIPLICITY; k++) + { + ATOMIC_IO tmp ; + + int status = fscanf (stream, IN_FORMAT, &tmp) ; + + data [MULTIPLICITY * i + k] = tmp; + + + if (status != 1) + { + GSL_ERROR ("fscanf failed", GSL_EFAILED); + } + } + } + + return GSL_SUCCESS; +} + + +int +FUNCTION (gsl_block, raw_fprintf) (FILE * stream, + const ATOMIC * data, + const size_t n, + const size_t stride, + const char *format) +{ + size_t i; + + for (i = 0; i < n; i++) + { + int k; + int status; + + for (k = 0; k < MULTIPLICITY; k++) + { + if (k > 0) + { + status = putc (' ', stream); + + if (status == EOF) + { + GSL_ERROR ("putc failed", GSL_EFAILED); + } + } + status = fprintf (stream, + format, + data[MULTIPLICITY * i * stride + k]); + if (status < 0) + { + GSL_ERROR ("fprintf failed", GSL_EFAILED); + } + } + + status = putc ('\n', stream); + + if (status == EOF) + { + GSL_ERROR ("putc failed", GSL_EFAILED); + } + } + + return 0; +} + +int +FUNCTION (gsl_block, raw_fscanf) (FILE * stream, + ATOMIC * data, + const size_t n, + const size_t stride) +{ + size_t i; + + for (i = 0; i < n; i++) + { + int k; + for (k = 0; k < MULTIPLICITY; k++) + { + ATOMIC_IO tmp; + + int status = fscanf (stream, IN_FORMAT, &tmp) ; + + data [MULTIPLICITY * i * stride + k] = tmp; + + if (status != 1) + { + GSL_ERROR ("fscanf failed", GSL_EFAILED); + } + } + } + + return GSL_SUCCESS; +} + +#endif diff --git a/gsl-2.5/block/fwrite_source.c b/gsl-2.5/block/fwrite_source.c new file mode 100644 index 00000000..2b6e767c --- /dev/null +++ b/gsl-2.5/block/fwrite_source.c @@ -0,0 +1,116 @@ +/* block/fwrite_source.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +int +FUNCTION (gsl_block, fread) (FILE * stream, TYPE(gsl_block) * b) +{ + size_t n = b->size ; + + ATOMIC * data = b->data ; + + size_t items = fread (data, MULTIPLICITY * sizeof (ATOMIC), n, stream); + + if (items != n) + { + GSL_ERROR ("fread failed", GSL_EFAILED); + } + +return 0; +} + +int +FUNCTION (gsl_block, fwrite) (FILE * stream, const TYPE(gsl_block) * b) +{ + size_t n = b->size ; + + ATOMIC * data = b->data ; + + size_t items = fwrite (data, MULTIPLICITY * sizeof (ATOMIC), n, stream); + + if (items != n) + { + GSL_ERROR ("fwrite failed", GSL_EFAILED); + } + + return 0; +} + +int +FUNCTION (gsl_block, raw_fread) (FILE * stream, ATOMIC * data, + const size_t n, const size_t stride) +{ + if (stride == 1) + { + size_t items = fread (data, MULTIPLICITY * sizeof (ATOMIC), n, stream); + + if (items != n) + { + GSL_ERROR ("fread failed", GSL_EFAILED); + } + } + else + { + size_t i; + + for (i = 0; i < n; i++) + { + size_t item = fread (data + MULTIPLICITY * i * stride, + MULTIPLICITY * sizeof (ATOMIC), 1, stream); + if (item != 1) + { + GSL_ERROR ("fread failed", GSL_EFAILED); + } + } + } + + return GSL_SUCCESS; +} + +int +FUNCTION (gsl_block, raw_fwrite) (FILE * stream, const ATOMIC * data, + const size_t n, const size_t stride) +{ + + if (stride == 1) + { + size_t items = fwrite (data, MULTIPLICITY * sizeof (ATOMIC), n, stream); + + if (items != n) + { + GSL_ERROR ("fwrite failed", GSL_EFAILED); + } + } + else + { + size_t i; + + for (i = 0; i < n; i++) + { + size_t item = fwrite (data + MULTIPLICITY * i * stride, + MULTIPLICITY * sizeof (ATOMIC), + 1, stream); + if (item != 1) + { + GSL_ERROR ("fwrite failed", GSL_EFAILED); + } + } + } + + return GSL_SUCCESS; +} diff --git a/gsl-2.5/block/gsl_block.h b/gsl-2.5/block/gsl_block.h new file mode 100644 index 00000000..f1f9ef87 --- /dev/null +++ b/gsl-2.5/block/gsl_block.h @@ -0,0 +1,24 @@ +#ifndef __GSL_BLOCK_H__ +#define __GSL_BLOCK_H__ + +#include +#include +#include + +#include +#include +#include + +#include +#include + +#include +#include + +#include +#include + +#include +#include + +#endif /* __GSL_BLOCK_H__ */ diff --git a/gsl-2.5/block/gsl_block_char.h b/gsl-2.5/block/gsl_block_char.h new file mode 100644 index 00000000..70bf969f --- /dev/null +++ b/gsl-2.5/block/gsl_block_char.h @@ -0,0 +1,65 @@ +/* block/gsl_block_char.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_BLOCK_CHAR_H__ +#define __GSL_BLOCK_CHAR_H__ + +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +struct gsl_block_char_struct +{ + size_t size; + char *data; +}; + +typedef struct gsl_block_char_struct gsl_block_char; + +gsl_block_char *gsl_block_char_alloc (const size_t n); +gsl_block_char *gsl_block_char_calloc (const size_t n); +void gsl_block_char_free (gsl_block_char * b); + +int gsl_block_char_fread (FILE * stream, gsl_block_char * b); +int gsl_block_char_fwrite (FILE * stream, const gsl_block_char * b); +int gsl_block_char_fscanf (FILE * stream, gsl_block_char * b); +int gsl_block_char_fprintf (FILE * stream, const gsl_block_char * b, const char *format); + +int gsl_block_char_raw_fread (FILE * stream, char * b, const size_t n, const size_t stride); +int gsl_block_char_raw_fwrite (FILE * stream, const char * b, const size_t n, const size_t stride); +int gsl_block_char_raw_fscanf (FILE * stream, char * b, const size_t n, const size_t stride); +int gsl_block_char_raw_fprintf (FILE * stream, const char * b, const size_t n, const size_t stride, const char *format); + +size_t gsl_block_char_size (const gsl_block_char * b); +char * gsl_block_char_data (const gsl_block_char * b); + +__END_DECLS + +#endif /* __GSL_BLOCK_CHAR_H__ */ diff --git a/gsl-2.5/block/gsl_block_complex_double.h b/gsl-2.5/block/gsl_block_complex_double.h new file mode 100644 index 00000000..bcf66c08 --- /dev/null +++ b/gsl-2.5/block/gsl_block_complex_double.h @@ -0,0 +1,65 @@ +/* block/gsl_block_complex_double.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_BLOCK_COMPLEX_DOUBLE_H__ +#define __GSL_BLOCK_COMPLEX_DOUBLE_H__ + +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +struct gsl_block_complex_struct +{ + size_t size; + double *data; +}; + +typedef struct gsl_block_complex_struct gsl_block_complex; + +gsl_block_complex *gsl_block_complex_alloc (const size_t n); +gsl_block_complex *gsl_block_complex_calloc (const size_t n); +void gsl_block_complex_free (gsl_block_complex * b); + +int gsl_block_complex_fread (FILE * stream, gsl_block_complex * b); +int gsl_block_complex_fwrite (FILE * stream, const gsl_block_complex * b); +int gsl_block_complex_fscanf (FILE * stream, gsl_block_complex * b); +int gsl_block_complex_fprintf (FILE * stream, const gsl_block_complex * b, const char *format); + +int gsl_block_complex_raw_fread (FILE * stream, double * b, const size_t n, const size_t stride); +int gsl_block_complex_raw_fwrite (FILE * stream, const double * b, const size_t n, const size_t stride); +int gsl_block_complex_raw_fscanf (FILE * stream, double * b, const size_t n, const size_t stride); +int gsl_block_complex_raw_fprintf (FILE * stream, const double * b, const size_t n, const size_t stride, const char *format); + +size_t gsl_block_complex_size (const gsl_block_complex * b); +double * gsl_block_complex_data (const gsl_block_complex * b); + +__END_DECLS + +#endif /* __GSL_BLOCK_COMPLEX_DOUBLE_H__ */ diff --git a/gsl-2.5/block/gsl_block_complex_float.h b/gsl-2.5/block/gsl_block_complex_float.h new file mode 100644 index 00000000..03595dc9 --- /dev/null +++ b/gsl-2.5/block/gsl_block_complex_float.h @@ -0,0 +1,65 @@ +/* block/gsl_block_complex_float.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_BLOCK_COMPLEX_FLOAT_H__ +#define __GSL_BLOCK_COMPLEX_FLOAT_H__ + +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +struct gsl_block_complex_float_struct +{ + size_t size; + float *data; +}; + +typedef struct gsl_block_complex_float_struct gsl_block_complex_float; + +gsl_block_complex_float *gsl_block_complex_float_alloc (const size_t n); +gsl_block_complex_float *gsl_block_complex_float_calloc (const size_t n); +void gsl_block_complex_float_free (gsl_block_complex_float * b); + +int gsl_block_complex_float_fread (FILE * stream, gsl_block_complex_float * b); +int gsl_block_complex_float_fwrite (FILE * stream, const gsl_block_complex_float * b); +int gsl_block_complex_float_fscanf (FILE * stream, gsl_block_complex_float * b); +int gsl_block_complex_float_fprintf (FILE * stream, const gsl_block_complex_float * b, const char *format); + +int gsl_block_complex_float_raw_fread (FILE * stream, float * b, const size_t n, const size_t stride); +int gsl_block_complex_float_raw_fwrite (FILE * stream, const float * b, const size_t n, const size_t stride); +int gsl_block_complex_float_raw_fscanf (FILE * stream, float * b, const size_t n, const size_t stride); +int gsl_block_complex_float_raw_fprintf (FILE * stream, const float * b, const size_t n, const size_t stride, const char *format); + +size_t gsl_block_complex_float_size (const gsl_block_complex_float * b); +float * gsl_block_complex_float_data (const gsl_block_complex_float * b); + +__END_DECLS + +#endif /* __GSL_BLOCK_COMPLEX_FLOAT_H__ */ diff --git a/gsl-2.5/block/gsl_block_complex_long_double.h b/gsl-2.5/block/gsl_block_complex_long_double.h new file mode 100644 index 00000000..eb0c6051 --- /dev/null +++ b/gsl-2.5/block/gsl_block_complex_long_double.h @@ -0,0 +1,65 @@ +/* block/gsl_block_complex_long_double.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_BLOCK_COMPLEX_LONG_DOUBLE_H__ +#define __GSL_BLOCK_COMPLEX_LONG_DOUBLE_H__ + +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +struct gsl_block_complex_long_double_struct +{ + size_t size; + long double *data; +}; + +typedef struct gsl_block_complex_long_double_struct gsl_block_complex_long_double; + +gsl_block_complex_long_double *gsl_block_complex_long_double_alloc (const size_t n); +gsl_block_complex_long_double *gsl_block_complex_long_double_calloc (const size_t n); +void gsl_block_complex_long_double_free (gsl_block_complex_long_double * b); + +int gsl_block_complex_long_double_fread (FILE * stream, gsl_block_complex_long_double * b); +int gsl_block_complex_long_double_fwrite (FILE * stream, const gsl_block_complex_long_double * b); +int gsl_block_complex_long_double_fscanf (FILE * stream, gsl_block_complex_long_double * b); +int gsl_block_complex_long_double_fprintf (FILE * stream, const gsl_block_complex_long_double * b, const char *format); + +int gsl_block_complex_long_double_raw_fread (FILE * stream, long double * b, const size_t n, const size_t stride); +int gsl_block_complex_long_double_raw_fwrite (FILE * stream, const long double * b, const size_t n, const size_t stride); +int gsl_block_complex_long_double_raw_fscanf (FILE * stream, long double * b, const size_t n, const size_t stride); +int gsl_block_complex_long_double_raw_fprintf (FILE * stream, const long double * b, const size_t n, const size_t stride, const char *format); + +size_t gsl_block_complex_long_double_size (const gsl_block_complex_long_double * b); +long double * gsl_block_complex_long_double_data (const gsl_block_complex_long_double * b); + +__END_DECLS + +#endif /* __GSL_BLOCK_COMPLEX_LONG_DOUBLE_H__ */ diff --git a/gsl-2.5/block/gsl_block_double.h b/gsl-2.5/block/gsl_block_double.h new file mode 100644 index 00000000..3a95f4d5 --- /dev/null +++ b/gsl-2.5/block/gsl_block_double.h @@ -0,0 +1,65 @@ +/* block/gsl_block_double.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_BLOCK_DOUBLE_H__ +#define __GSL_BLOCK_DOUBLE_H__ + +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +struct gsl_block_struct +{ + size_t size; + double *data; +}; + +typedef struct gsl_block_struct gsl_block; + +gsl_block *gsl_block_alloc (const size_t n); +gsl_block *gsl_block_calloc (const size_t n); +void gsl_block_free (gsl_block * b); + +int gsl_block_fread (FILE * stream, gsl_block * b); +int gsl_block_fwrite (FILE * stream, const gsl_block * b); +int gsl_block_fscanf (FILE * stream, gsl_block * b); +int gsl_block_fprintf (FILE * stream, const gsl_block * b, const char *format); + +int gsl_block_raw_fread (FILE * stream, double * b, const size_t n, const size_t stride); +int gsl_block_raw_fwrite (FILE * stream, const double * b, const size_t n, const size_t stride); +int gsl_block_raw_fscanf (FILE * stream, double * b, const size_t n, const size_t stride); +int gsl_block_raw_fprintf (FILE * stream, const double * b, const size_t n, const size_t stride, const char *format); + +size_t gsl_block_size (const gsl_block * b); +double * gsl_block_data (const gsl_block * b); + +__END_DECLS + +#endif /* __GSL_BLOCK_DOUBLE_H__ */ diff --git a/gsl-2.5/block/gsl_block_float.h b/gsl-2.5/block/gsl_block_float.h new file mode 100644 index 00000000..f1c3fb35 --- /dev/null +++ b/gsl-2.5/block/gsl_block_float.h @@ -0,0 +1,65 @@ +/* block/gsl_block_float.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_BLOCK_FLOAT_H__ +#define __GSL_BLOCK_FLOAT_H__ + +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +struct gsl_block_float_struct +{ + size_t size; + float *data; +}; + +typedef struct gsl_block_float_struct gsl_block_float; + +gsl_block_float *gsl_block_float_alloc (const size_t n); +gsl_block_float *gsl_block_float_calloc (const size_t n); +void gsl_block_float_free (gsl_block_float * b); + +int gsl_block_float_fread (FILE * stream, gsl_block_float * b); +int gsl_block_float_fwrite (FILE * stream, const gsl_block_float * b); +int gsl_block_float_fscanf (FILE * stream, gsl_block_float * b); +int gsl_block_float_fprintf (FILE * stream, const gsl_block_float * b, const char *format); + +int gsl_block_float_raw_fread (FILE * stream, float * b, const size_t n, const size_t stride); +int gsl_block_float_raw_fwrite (FILE * stream, const float * b, const size_t n, const size_t stride); +int gsl_block_float_raw_fscanf (FILE * stream, float * b, const size_t n, const size_t stride); +int gsl_block_float_raw_fprintf (FILE * stream, const float * b, const size_t n, const size_t stride, const char *format); + +size_t gsl_block_float_size (const gsl_block_float * b); +float * gsl_block_float_data (const gsl_block_float * b); + +__END_DECLS + +#endif /* __GSL_BLOCK_FLOAT_H__ */ diff --git a/gsl-2.5/block/gsl_block_int.h b/gsl-2.5/block/gsl_block_int.h new file mode 100644 index 00000000..2213f470 --- /dev/null +++ b/gsl-2.5/block/gsl_block_int.h @@ -0,0 +1,65 @@ +/* block/gsl_block_int.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_BLOCK_INT_H__ +#define __GSL_BLOCK_INT_H__ + +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +struct gsl_block_int_struct +{ + size_t size; + int *data; +}; + +typedef struct gsl_block_int_struct gsl_block_int; + +gsl_block_int *gsl_block_int_alloc (const size_t n); +gsl_block_int *gsl_block_int_calloc (const size_t n); +void gsl_block_int_free (gsl_block_int * b); + +int gsl_block_int_fread (FILE * stream, gsl_block_int * b); +int gsl_block_int_fwrite (FILE * stream, const gsl_block_int * b); +int gsl_block_int_fscanf (FILE * stream, gsl_block_int * b); +int gsl_block_int_fprintf (FILE * stream, const gsl_block_int * b, const char *format); + +int gsl_block_int_raw_fread (FILE * stream, int * b, const size_t n, const size_t stride); +int gsl_block_int_raw_fwrite (FILE * stream, const int * b, const size_t n, const size_t stride); +int gsl_block_int_raw_fscanf (FILE * stream, int * b, const size_t n, const size_t stride); +int gsl_block_int_raw_fprintf (FILE * stream, const int * b, const size_t n, const size_t stride, const char *format); + +size_t gsl_block_int_size (const gsl_block_int * b); +int * gsl_block_int_data (const gsl_block_int * b); + +__END_DECLS + +#endif /* __GSL_BLOCK_INT_H__ */ diff --git a/gsl-2.5/block/gsl_block_long.h b/gsl-2.5/block/gsl_block_long.h new file mode 100644 index 00000000..0c30aa5e --- /dev/null +++ b/gsl-2.5/block/gsl_block_long.h @@ -0,0 +1,65 @@ +/* block/gsl_block_long.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_BLOCK_LONG_H__ +#define __GSL_BLOCK_LONG_H__ + +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +struct gsl_block_long_struct +{ + size_t size; + long *data; +}; + +typedef struct gsl_block_long_struct gsl_block_long; + +gsl_block_long *gsl_block_long_alloc (const size_t n); +gsl_block_long *gsl_block_long_calloc (const size_t n); +void gsl_block_long_free (gsl_block_long * b); + +int gsl_block_long_fread (FILE * stream, gsl_block_long * b); +int gsl_block_long_fwrite (FILE * stream, const gsl_block_long * b); +int gsl_block_long_fscanf (FILE * stream, gsl_block_long * b); +int gsl_block_long_fprintf (FILE * stream, const gsl_block_long * b, const char *format); + +int gsl_block_long_raw_fread (FILE * stream, long * b, const size_t n, const size_t stride); +int gsl_block_long_raw_fwrite (FILE * stream, const long * b, const size_t n, const size_t stride); +int gsl_block_long_raw_fscanf (FILE * stream, long * b, const size_t n, const size_t stride); +int gsl_block_long_raw_fprintf (FILE * stream, const long * b, const size_t n, const size_t stride, const char *format); + +size_t gsl_block_long_size (const gsl_block_long * b); +long * gsl_block_long_data (const gsl_block_long * b); + +__END_DECLS + +#endif /* __GSL_BLOCK_LONG_H__ */ diff --git a/gsl-2.5/block/gsl_block_long_double.h b/gsl-2.5/block/gsl_block_long_double.h new file mode 100644 index 00000000..639cd815 --- /dev/null +++ b/gsl-2.5/block/gsl_block_long_double.h @@ -0,0 +1,65 @@ +/* block/gsl_block_long_double.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_BLOCK_LONG_DOUBLE_H__ +#define __GSL_BLOCK_LONG_DOUBLE_H__ + +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +struct gsl_block_long_double_struct +{ + size_t size; + long double *data; +}; + +typedef struct gsl_block_long_double_struct gsl_block_long_double; + +gsl_block_long_double *gsl_block_long_double_alloc (const size_t n); +gsl_block_long_double *gsl_block_long_double_calloc (const size_t n); +void gsl_block_long_double_free (gsl_block_long_double * b); + +int gsl_block_long_double_fread (FILE * stream, gsl_block_long_double * b); +int gsl_block_long_double_fwrite (FILE * stream, const gsl_block_long_double * b); +int gsl_block_long_double_fscanf (FILE * stream, gsl_block_long_double * b); +int gsl_block_long_double_fprintf (FILE * stream, const gsl_block_long_double * b, const char *format); + +int gsl_block_long_double_raw_fread (FILE * stream, long double * b, const size_t n, const size_t stride); +int gsl_block_long_double_raw_fwrite (FILE * stream, const long double * b, const size_t n, const size_t stride); +int gsl_block_long_double_raw_fscanf (FILE * stream, long double * b, const size_t n, const size_t stride); +int gsl_block_long_double_raw_fprintf (FILE * stream, const long double * b, const size_t n, const size_t stride, const char *format); + +size_t gsl_block_long_double_size (const gsl_block_long_double * b); +long double * gsl_block_long_double_data (const gsl_block_long_double * b); + +__END_DECLS + +#endif /* __GSL_BLOCK_LONG_DOUBLE_H__ */ diff --git a/gsl-2.5/block/gsl_block_short.h b/gsl-2.5/block/gsl_block_short.h new file mode 100644 index 00000000..97447755 --- /dev/null +++ b/gsl-2.5/block/gsl_block_short.h @@ -0,0 +1,65 @@ +/* block/gsl_block_short.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_BLOCK_SHORT_H__ +#define __GSL_BLOCK_SHORT_H__ + +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +struct gsl_block_short_struct +{ + size_t size; + short *data; +}; + +typedef struct gsl_block_short_struct gsl_block_short; + +gsl_block_short *gsl_block_short_alloc (const size_t n); +gsl_block_short *gsl_block_short_calloc (const size_t n); +void gsl_block_short_free (gsl_block_short * b); + +int gsl_block_short_fread (FILE * stream, gsl_block_short * b); +int gsl_block_short_fwrite (FILE * stream, const gsl_block_short * b); +int gsl_block_short_fscanf (FILE * stream, gsl_block_short * b); +int gsl_block_short_fprintf (FILE * stream, const gsl_block_short * b, const char *format); + +int gsl_block_short_raw_fread (FILE * stream, short * b, const size_t n, const size_t stride); +int gsl_block_short_raw_fwrite (FILE * stream, const short * b, const size_t n, const size_t stride); +int gsl_block_short_raw_fscanf (FILE * stream, short * b, const size_t n, const size_t stride); +int gsl_block_short_raw_fprintf (FILE * stream, const short * b, const size_t n, const size_t stride, const char *format); + +size_t gsl_block_short_size (const gsl_block_short * b); +short * gsl_block_short_data (const gsl_block_short * b); + +__END_DECLS + +#endif /* __GSL_BLOCK_SHORT_H__ */ diff --git a/gsl-2.5/block/gsl_block_uchar.h b/gsl-2.5/block/gsl_block_uchar.h new file mode 100644 index 00000000..58cf789d --- /dev/null +++ b/gsl-2.5/block/gsl_block_uchar.h @@ -0,0 +1,65 @@ +/* block/gsl_block_uchar.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_BLOCK_UCHAR_H__ +#define __GSL_BLOCK_UCHAR_H__ + +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +struct gsl_block_uchar_struct +{ + size_t size; + unsigned char *data; +}; + +typedef struct gsl_block_uchar_struct gsl_block_uchar; + +gsl_block_uchar *gsl_block_uchar_alloc (const size_t n); +gsl_block_uchar *gsl_block_uchar_calloc (const size_t n); +void gsl_block_uchar_free (gsl_block_uchar * b); + +int gsl_block_uchar_fread (FILE * stream, gsl_block_uchar * b); +int gsl_block_uchar_fwrite (FILE * stream, const gsl_block_uchar * b); +int gsl_block_uchar_fscanf (FILE * stream, gsl_block_uchar * b); +int gsl_block_uchar_fprintf (FILE * stream, const gsl_block_uchar * b, const char *format); + +int gsl_block_uchar_raw_fread (FILE * stream, unsigned char * b, const size_t n, const size_t stride); +int gsl_block_uchar_raw_fwrite (FILE * stream, const unsigned char * b, const size_t n, const size_t stride); +int gsl_block_uchar_raw_fscanf (FILE * stream, unsigned char * b, const size_t n, const size_t stride); +int gsl_block_uchar_raw_fprintf (FILE * stream, const unsigned char * b, const size_t n, const size_t stride, const char *format); + +size_t gsl_block_uchar_size (const gsl_block_uchar * b); +unsigned char * gsl_block_uchar_data (const gsl_block_uchar * b); + +__END_DECLS + +#endif /* __GSL_BLOCK_UCHAR_H__ */ diff --git a/gsl-2.5/block/gsl_block_uint.h b/gsl-2.5/block/gsl_block_uint.h new file mode 100644 index 00000000..52cf2cbe --- /dev/null +++ b/gsl-2.5/block/gsl_block_uint.h @@ -0,0 +1,65 @@ +/* block/gsl_block_uint.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_BLOCK_UINT_H__ +#define __GSL_BLOCK_UINT_H__ + +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +struct gsl_block_uint_struct +{ + size_t size; + unsigned int *data; +}; + +typedef struct gsl_block_uint_struct gsl_block_uint; + +gsl_block_uint *gsl_block_uint_alloc (const size_t n); +gsl_block_uint *gsl_block_uint_calloc (const size_t n); +void gsl_block_uint_free (gsl_block_uint * b); + +int gsl_block_uint_fread (FILE * stream, gsl_block_uint * b); +int gsl_block_uint_fwrite (FILE * stream, const gsl_block_uint * b); +int gsl_block_uint_fscanf (FILE * stream, gsl_block_uint * b); +int gsl_block_uint_fprintf (FILE * stream, const gsl_block_uint * b, const char *format); + +int gsl_block_uint_raw_fread (FILE * stream, unsigned int * b, const size_t n, const size_t stride); +int gsl_block_uint_raw_fwrite (FILE * stream, const unsigned int * b, const size_t n, const size_t stride); +int gsl_block_uint_raw_fscanf (FILE * stream, unsigned int * b, const size_t n, const size_t stride); +int gsl_block_uint_raw_fprintf (FILE * stream, const unsigned int * b, const size_t n, const size_t stride, const char *format); + +size_t gsl_block_uint_size (const gsl_block_uint * b); +unsigned int * gsl_block_uint_data (const gsl_block_uint * b); + +__END_DECLS + +#endif /* __GSL_BLOCK_UINT_H__ */ diff --git a/gsl-2.5/block/gsl_block_ulong.h b/gsl-2.5/block/gsl_block_ulong.h new file mode 100644 index 00000000..863ff475 --- /dev/null +++ b/gsl-2.5/block/gsl_block_ulong.h @@ -0,0 +1,65 @@ +/* block/gsl_block_ulong.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_BLOCK_ULONG_H__ +#define __GSL_BLOCK_ULONG_H__ + +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +struct gsl_block_ulong_struct +{ + size_t size; + unsigned long *data; +}; + +typedef struct gsl_block_ulong_struct gsl_block_ulong; + +gsl_block_ulong *gsl_block_ulong_alloc (const size_t n); +gsl_block_ulong *gsl_block_ulong_calloc (const size_t n); +void gsl_block_ulong_free (gsl_block_ulong * b); + +int gsl_block_ulong_fread (FILE * stream, gsl_block_ulong * b); +int gsl_block_ulong_fwrite (FILE * stream, const gsl_block_ulong * b); +int gsl_block_ulong_fscanf (FILE * stream, gsl_block_ulong * b); +int gsl_block_ulong_fprintf (FILE * stream, const gsl_block_ulong * b, const char *format); + +int gsl_block_ulong_raw_fread (FILE * stream, unsigned long * b, const size_t n, const size_t stride); +int gsl_block_ulong_raw_fwrite (FILE * stream, const unsigned long * b, const size_t n, const size_t stride); +int gsl_block_ulong_raw_fscanf (FILE * stream, unsigned long * b, const size_t n, const size_t stride); +int gsl_block_ulong_raw_fprintf (FILE * stream, const unsigned long * b, const size_t n, const size_t stride, const char *format); + +size_t gsl_block_ulong_size (const gsl_block_ulong * b); +unsigned long * gsl_block_ulong_data (const gsl_block_ulong * b); + +__END_DECLS + +#endif /* __GSL_BLOCK_ULONG_H__ */ diff --git a/gsl-2.5/block/gsl_block_ushort.h b/gsl-2.5/block/gsl_block_ushort.h new file mode 100644 index 00000000..24ad7dbf --- /dev/null +++ b/gsl-2.5/block/gsl_block_ushort.h @@ -0,0 +1,65 @@ +/* block/gsl_block_ushort.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_BLOCK_USHORT_H__ +#define __GSL_BLOCK_USHORT_H__ + +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +struct gsl_block_ushort_struct +{ + size_t size; + unsigned short *data; +}; + +typedef struct gsl_block_ushort_struct gsl_block_ushort; + +gsl_block_ushort *gsl_block_ushort_alloc (const size_t n); +gsl_block_ushort *gsl_block_ushort_calloc (const size_t n); +void gsl_block_ushort_free (gsl_block_ushort * b); + +int gsl_block_ushort_fread (FILE * stream, gsl_block_ushort * b); +int gsl_block_ushort_fwrite (FILE * stream, const gsl_block_ushort * b); +int gsl_block_ushort_fscanf (FILE * stream, gsl_block_ushort * b); +int gsl_block_ushort_fprintf (FILE * stream, const gsl_block_ushort * b, const char *format); + +int gsl_block_ushort_raw_fread (FILE * stream, unsigned short * b, const size_t n, const size_t stride); +int gsl_block_ushort_raw_fwrite (FILE * stream, const unsigned short * b, const size_t n, const size_t stride); +int gsl_block_ushort_raw_fscanf (FILE * stream, unsigned short * b, const size_t n, const size_t stride); +int gsl_block_ushort_raw_fprintf (FILE * stream, const unsigned short * b, const size_t n, const size_t stride, const char *format); + +size_t gsl_block_ushort_size (const gsl_block_ushort * b); +unsigned short * gsl_block_ushort_data (const gsl_block_ushort * b); + +__END_DECLS + +#endif /* __GSL_BLOCK_USHORT_H__ */ diff --git a/gsl-2.5/block/gsl_check_range.h b/gsl-2.5/block/gsl_check_range.h new file mode 100644 index 00000000..d110b6b8 --- /dev/null +++ b/gsl-2.5/block/gsl_check_range.h @@ -0,0 +1,57 @@ +/* vector/gsl_check_range.h + * + * Copyright (C) 2003, 2004, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_CHECK_RANGE_H__ +#define __GSL_CHECK_RANGE_H__ + +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +GSL_VAR int gsl_check_range; + +/* Turn range checking on by default, unless the user defines + GSL_RANGE_CHECK_OFF, or defines GSL_RANGE_CHECK to 0 explicitly */ + +#ifdef GSL_RANGE_CHECK_OFF +# ifndef GSL_RANGE_CHECK +# define GSL_RANGE_CHECK 0 +# else +# error "cannot set both GSL_RANGE_CHECK and GSL_RANGE_CHECK_OFF" +# endif +#else +# ifndef GSL_RANGE_CHECK +# define GSL_RANGE_CHECK 1 +# endif +#endif + +__END_DECLS + +#endif /* __GSL_CHECK_RANGE_H__ */ diff --git a/gsl-2.5/block/init.c b/gsl-2.5/block/init.c new file mode 100644 index 00000000..852d2d1a --- /dev/null +++ b/gsl-2.5/block/init.c @@ -0,0 +1,88 @@ +#include +#include +#include +#include + +#define BASE_GSL_COMPLEX_LONG +#include "templates_on.h" +#include "init_source.c" +#include "templates_off.h" +#undef BASE_GSL_COMPLEX_LONG + +#define BASE_GSL_COMPLEX +#include "templates_on.h" +#include "init_source.c" +#include "templates_off.h" +#undef BASE_GSL_COMPLEX + +#define BASE_GSL_COMPLEX_FLOAT +#include "templates_on.h" +#include "init_source.c" +#include "templates_off.h" +#undef BASE_GSL_COMPLEX_FLOAT + +#define BASE_LONG_DOUBLE +#include "templates_on.h" +#include "init_source.c" +#include "templates_off.h" +#undef BASE_LONG_DOUBLE + +#define BASE_DOUBLE +#include "templates_on.h" +#include "init_source.c" +#include "templates_off.h" +#undef BASE_DOUBLE + +#define BASE_FLOAT +#include "templates_on.h" +#include "init_source.c" +#include "templates_off.h" +#undef BASE_FLOAT + +#define BASE_ULONG +#include "templates_on.h" +#include "init_source.c" +#include "templates_off.h" +#undef BASE_ULONG + +#define BASE_LONG +#include "templates_on.h" +#include "init_source.c" +#include "templates_off.h" +#undef BASE_LONG + +#define BASE_UINT +#include "templates_on.h" +#include "init_source.c" +#include "templates_off.h" +#undef BASE_UINT + +#define BASE_INT +#include "templates_on.h" +#include "init_source.c" +#include "templates_off.h" +#undef BASE_INT + +#define BASE_USHORT +#include "templates_on.h" +#include "init_source.c" +#include "templates_off.h" +#undef BASE_USHORT + +#define BASE_SHORT +#include "templates_on.h" +#include "init_source.c" +#include "templates_off.h" +#undef BASE_SHORT + +#define BASE_UCHAR +#include "templates_on.h" +#include "init_source.c" +#include "templates_off.h" +#undef BASE_UCHAR + +#define BASE_CHAR +#include "templates_on.h" +#include "init_source.c" +#include "templates_off.h" +#undef BASE_CHAR diff --git a/gsl-2.5/block/init.lo b/gsl-2.5/block/init.lo new file mode 100644 index 00000000..c1ea778f --- /dev/null +++ b/gsl-2.5/block/init.lo @@ -0,0 +1,12 @@ +# init.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/init.o' + +# Name of the non-PIC object +non_pic_object='init.o' + diff --git a/gsl-2.5/block/init_source.c b/gsl-2.5/block/init_source.c new file mode 100644 index 00000000..56619017 --- /dev/null +++ b/gsl-2.5/block/init_source.c @@ -0,0 +1,75 @@ +/* block/init_source.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007, 2009 Gerard Jungman, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +TYPE (gsl_block) * +FUNCTION (gsl_block, alloc) (const size_t n) +{ + TYPE (gsl_block) * b; + + b = (TYPE (gsl_block) *) malloc (sizeof (TYPE (gsl_block))); + + if (b == 0) + { + GSL_ERROR_VAL ("failed to allocate space for block struct", + GSL_ENOMEM, 0); + } + + b->data = (ATOMIC *) malloc (MULTIPLICITY * n * sizeof (ATOMIC)); + + if (b->data == 0 && n > 0) /* malloc may return NULL when n == 0 */ + { + free (b); /* exception in constructor, avoid memory leak */ + + GSL_ERROR_VAL ("failed to allocate space for block data", + GSL_ENOMEM, 0); + } + + b->size = n; + + return b; +} + +TYPE (gsl_block) * +FUNCTION (gsl_block, calloc) (const size_t n) +{ + size_t i; + + TYPE (gsl_block) * b = FUNCTION (gsl_block, alloc) (n); + + if (b == 0) + return 0; + + /* initialize block to zero; the memset call takes care of padding bytes */ + memset(b->data, 0, MULTIPLICITY * n * sizeof(ATOMIC)); + + for (i = 0; i < MULTIPLICITY * n; i++) + { + b->data[i] = 0; + } + + return b; +} + +void +FUNCTION (gsl_block, free) (TYPE (gsl_block) * b) +{ + RETURN_IF_NULL (b); + free (b->data); + free (b); +} diff --git a/gsl-2.5/block/libgslblock.la b/gsl-2.5/block/libgslblock.la new file mode 100644 index 00000000..38d1c8e7 --- /dev/null +++ b/gsl-2.5/block/libgslblock.la @@ -0,0 +1,41 @@ +# libgslblock.la - a libtool library file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='' + +# Names of this library. +library_names='' + +# The name of the static archive. +old_library='libgslblock.a' + +# Linker flags that can not go in dependency_libs. +inherited_linker_flags='' + +# Libraries that this one depends upon. +dependency_libs=' -lm' + +# Names of additional weak libraries provided by this library +weak_library_names='' + +# Version information for libgslblock. +current= +age= +revision= + +# Is this an already installed library? +installed=no + +# Should we warn about portability when linking against -modules? +shouldnotlink=no + +# Files to dlopen/dlpreopen +dlopen='' +dlpreopen='' + +# Directory that this library needs to be installed in: +libdir='' diff --git a/gsl-2.5/block/test b/gsl-2.5/block/test new file mode 100755 index 00000000..65e593ff Binary files /dev/null and b/gsl-2.5/block/test differ diff --git a/gsl-2.5/block/test-suite.log b/gsl-2.5/block/test-suite.log new file mode 100644 index 00000000..737572e3 --- /dev/null +++ b/gsl-2.5/block/test-suite.log @@ -0,0 +1,14 @@ +=================================== + gsl 2.5: block/test-suite.log +=================================== + +# TOTAL: 1 +# PASS: 1 +# SKIP: 0 +# XFAIL: 0 +# FAIL: 0 +# XPASS: 0 +# ERROR: 0 + +.. contents:: :depth: 2 + diff --git a/gsl-2.5/block/test.c b/gsl-2.5/block/test.c new file mode 100644 index 00000000..fc104175 --- /dev/null +++ b/gsl-2.5/block/test.c @@ -0,0 +1,238 @@ +/* block/test.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include +#include + +int status = 0; + +#ifndef DESC +#define DESC "" +#endif + +#define N 1027 + + +#define BASE_GSL_COMPLEX_LONG +#include "templates_on.h" +#include "test_complex_source.c" +#if HAVE_PRINTF_LONGDOUBLE +#include "test_complex_io.c" +#endif +#include "templates_off.h" +#undef BASE_GSL_COMPLEX_LONG + + +#define BASE_GSL_COMPLEX +#include "templates_on.h" +#include "test_complex_source.c" +#include "test_complex_io.c" +#include "templates_off.h" +#undef BASE_GSL_COMPLEX + +#define BASE_GSL_COMPLEX_FLOAT +#include "templates_on.h" +#include "test_complex_source.c" +#include "test_complex_io.c" +#include "templates_off.h" +#undef BASE_GSL_COMPLEX_FLOAT + +#define BASE_LONG_DOUBLE +#include "templates_on.h" +#include "test_source.c" +#if HAVE_PRINTF_LONGDOUBLE +#include "test_io.c" +#endif +#include "templates_off.h" +#undef BASE_LONG_DOUBLE + +#define BASE_DOUBLE +#include "templates_on.h" +#include "test_source.c" +#include "test_io.c" +#include "templates_off.h" +#undef BASE_DOUBLE + +#define BASE_FLOAT +#include "templates_on.h" +#include "test_source.c" +#include "test_io.c" +#include "templates_off.h" +#undef BASE_FLOAT + +#define BASE_ULONG +#include "templates_on.h" +#include "test_source.c" +#include "test_io.c" +#include "templates_off.h" +#undef BASE_ULONG + +#define BASE_LONG +#include "templates_on.h" +#include "test_source.c" +#include "test_io.c" +#include "templates_off.h" +#undef BASE_LONG + +#define BASE_UINT +#include "templates_on.h" +#include "test_source.c" +#include "test_io.c" +#include "templates_off.h" +#undef BASE_UINT + +#define BASE_INT +#include "templates_on.h" +#include "test_source.c" +#include "test_io.c" +#include "templates_off.h" +#undef BASE_INT + +#define BASE_USHORT +#include "templates_on.h" +#include "test_source.c" +#include "test_io.c" +#include "templates_off.h" +#undef BASE_USHORT + +#define BASE_SHORT +#include "templates_on.h" +#include "test_source.c" +#include "test_io.c" +#include "templates_off.h" +#undef BASE_SHORT + +#define BASE_UCHAR +#include "templates_on.h" +#include "test_source.c" +#include "test_io.c" +#include "templates_off.h" +#undef BASE_UCHAR + +#define BASE_CHAR +#include "templates_on.h" +#include "test_source.c" +#include "test_io.c" +#include "templates_off.h" +#undef BASE_CHAR + +void my_error_handler (const char *reason, const char *file, + int line, int err); + +int +main (void) +{ + gsl_ieee_env_setup (); + + test_func (); + test_float_func (); + test_long_double_func (); + test_ulong_func (); + test_long_func (); + test_uint_func (); + test_int_func (); + test_ushort_func (); + test_short_func (); + test_uchar_func (); + test_char_func (); + test_complex_func (); + test_complex_float_func (); + test_complex_long_double_func (); + + test_text (); + test_float_text (); +#if HAVE_PRINTF_LONGDOUBLE + test_long_double_text (); +#endif + test_ulong_text (); + test_long_text (); + test_uint_text (); + test_int_text (); + test_ushort_text (); + test_short_text (); + test_uchar_text (); + test_char_text (); + test_complex_text (); + test_complex_float_text (); +#if HAVE_PRINTF_LONGDOUBLE + test_complex_long_double_text (); +#endif + + test_binary (); + test_float_binary (); + test_long_double_binary (); + test_ulong_binary (); + test_long_binary (); + test_uint_binary (); + test_int_binary (); + test_ushort_binary (); + test_short_binary (); + test_uchar_binary (); + test_char_binary (); + test_complex_binary (); + test_complex_float_binary (); + test_complex_long_double_binary (); + + gsl_set_error_handler (&my_error_handler); + + test_alloc_zero_length (); + test_float_alloc_zero_length (); + test_long_double_alloc_zero_length (); + test_ulong_alloc_zero_length (); + test_long_alloc_zero_length (); + test_uint_alloc_zero_length (); + test_int_alloc_zero_length (); + test_ushort_alloc_zero_length (); + test_short_alloc_zero_length (); + test_uchar_alloc_zero_length (); + test_char_alloc_zero_length (); + test_complex_alloc_zero_length (); + test_complex_float_alloc_zero_length (); + test_complex_long_double_alloc_zero_length (); + + test_calloc_zero_length (); + test_float_calloc_zero_length (); + test_long_double_calloc_zero_length (); + test_ulong_calloc_zero_length (); + test_long_calloc_zero_length (); + test_uint_calloc_zero_length (); + test_int_calloc_zero_length (); + test_ushort_calloc_zero_length (); + test_short_calloc_zero_length (); + test_uchar_calloc_zero_length (); + test_char_calloc_zero_length (); + test_complex_calloc_zero_length (); + test_complex_float_calloc_zero_length (); + test_complex_long_double_calloc_zero_length (); + + exit (gsl_test_summary ()); +} + +void +my_error_handler (const char *reason, const char *file, int line, int err) +{ + if (0) + printf ("(caught [%s:%d: %s (%d)])\n", file, line, reason, err); + status = 1; +} diff --git a/gsl-2.5/block/test.dat b/gsl-2.5/block/test.dat new file mode 100644 index 00000000..623f3736 Binary files /dev/null and b/gsl-2.5/block/test.dat differ diff --git a/gsl-2.5/block/test.log b/gsl-2.5/block/test.log new file mode 100644 index 00000000..ba050d75 --- /dev/null +++ b/gsl-2.5/block/test.log @@ -0,0 +1 @@ +Completed [210/210] diff --git a/gsl-2.5/block/test.trs b/gsl-2.5/block/test.trs new file mode 100644 index 00000000..3f0f396c --- /dev/null +++ b/gsl-2.5/block/test.trs @@ -0,0 +1,4 @@ +:test-result: PASS +:global-test-result: PASS +:recheck: no +:copy-in-global-log: no diff --git a/gsl-2.5/block/test.txt b/gsl-2.5/block/test.txt new file mode 100644 index 00000000..cb9c93f4 --- /dev/null +++ b/gsl-2.5/block/test.txt @@ -0,0 +1,1027 @@ +0 1 +1 11 +2 21 +3 31 +4 41 +5 51 +6 61 +7 71 +8 81 +9 91 +10 101 +11 111 +12 121 +13 131 +14 141 +15 151 +16 161 +17 171 +18 181 +19 191 +20 201 +21 211 +22 221 +23 231 +24 241 +25 251 +26 261 +27 271 +28 281 +29 291 +30 301 +31 311 +32 321 +33 331 +34 341 +35 351 +36 361 +37 371 +38 381 +39 391 +40 401 +41 411 +42 421 +43 431 +44 441 +45 451 +46 461 +47 471 +48 481 +49 491 +50 501 +51 511 +52 521 +53 531 +54 541 +55 551 +56 561 +57 571 +58 581 +59 591 +60 601 +61 611 +62 621 +63 631 +64 641 +65 651 +66 661 +67 671 +68 681 +69 691 +70 701 +71 711 +72 721 +73 731 +74 741 +75 751 +76 761 +77 771 +78 781 +79 791 +80 801 +81 811 +82 821 +83 831 +84 841 +85 851 +86 861 +87 871 +88 881 +89 891 +90 901 +91 911 +92 921 +93 931 +94 941 +95 951 +96 961 +97 971 +98 981 +99 991 +100 1001 +101 1011 +102 1021 +103 1031 +104 1041 +105 1051 +106 1061 +107 1071 +108 1081 +109 1091 +110 1101 +111 1111 +112 1121 +113 1131 +114 1141 +115 1151 +116 1161 +117 1171 +118 1181 +119 1191 +120 1201 +121 1211 +122 1221 +123 1231 +124 1241 +125 1251 +126 1261 +127 1271 +128 1281 +129 1291 +130 1301 +131 1311 +132 1321 +133 1331 +134 1341 +135 1351 +136 1361 +137 1371 +138 1381 +139 1391 +140 1401 +141 1411 +142 1421 +143 1431 +144 1441 +145 1451 +146 1461 +147 1471 +148 1481 +149 1491 +150 1501 +151 1511 +152 1521 +153 1531 +154 1541 +155 1551 +156 1561 +157 1571 +158 1581 +159 1591 +160 1601 +161 1611 +162 1621 +163 1631 +164 1641 +165 1651 +166 1661 +167 1671 +168 1681 +169 1691 +170 1701 +171 1711 +172 1721 +173 1731 +174 1741 +175 1751 +176 1761 +177 1771 +178 1781 +179 1791 +180 1801 +181 1811 +182 1821 +183 1831 +184 1841 +185 1851 +186 1861 +187 1871 +188 1881 +189 1891 +190 1901 +191 1911 +192 1921 +193 1931 +194 1941 +195 1951 +196 1961 +197 1971 +198 1981 +199 1991 +200 2001 +201 2011 +202 2021 +203 2031 +204 2041 +205 2051 +206 2061 +207 2071 +208 2081 +209 2091 +210 2101 +211 2111 +212 2121 +213 2131 +214 2141 +215 2151 +216 2161 +217 2171 +218 2181 +219 2191 +220 2201 +221 2211 +222 2221 +223 2231 +224 2241 +225 2251 +226 2261 +227 2271 +228 2281 +229 2291 +230 2301 +231 2311 +232 2321 +233 2331 +234 2341 +235 2351 +236 2361 +237 2371 +238 2381 +239 2391 +240 2401 +241 2411 +242 2421 +243 2431 +244 2441 +245 2451 +246 2461 +247 2471 +248 2481 +249 2491 +250 2501 +251 2511 +252 2521 +253 2531 +254 2541 +255 2551 +256 2561 +257 2571 +258 2581 +259 2591 +260 2601 +261 2611 +262 2621 +263 2631 +264 2641 +265 2651 +266 2661 +267 2671 +268 2681 +269 2691 +270 2701 +271 2711 +272 2721 +273 2731 +274 2741 +275 2751 +276 2761 +277 2771 +278 2781 +279 2791 +280 2801 +281 2811 +282 2821 +283 2831 +284 2841 +285 2851 +286 2861 +287 2871 +288 2881 +289 2891 +290 2901 +291 2911 +292 2921 +293 2931 +294 2941 +295 2951 +296 2961 +297 2971 +298 2981 +299 2991 +300 3001 +301 3011 +302 3021 +303 3031 +304 3041 +305 3051 +306 3061 +307 3071 +308 3081 +309 3091 +310 3101 +311 3111 +312 3121 +313 3131 +314 3141 +315 3151 +316 3161 +317 3171 +318 3181 +319 3191 +320 3201 +321 3211 +322 3221 +323 3231 +324 3241 +325 3251 +326 3261 +327 3271 +328 3281 +329 3291 +330 3301 +331 3311 +332 3321 +333 3331 +334 3341 +335 3351 +336 3361 +337 3371 +338 3381 +339 3391 +340 3401 +341 3411 +342 3421 +343 3431 +344 3441 +345 3451 +346 3461 +347 3471 +348 3481 +349 3491 +350 3501 +351 3511 +352 3521 +353 3531 +354 3541 +355 3551 +356 3561 +357 3571 +358 3581 +359 3591 +360 3601 +361 3611 +362 3621 +363 3631 +364 3641 +365 3651 +366 3661 +367 3671 +368 3681 +369 3691 +370 3701 +371 3711 +372 3721 +373 3731 +374 3741 +375 3751 +376 3761 +377 3771 +378 3781 +379 3791 +380 3801 +381 3811 +382 3821 +383 3831 +384 3841 +385 3851 +386 3861 +387 3871 +388 3881 +389 3891 +390 3901 +391 3911 +392 3921 +393 3931 +394 3941 +395 3951 +396 3961 +397 3971 +398 3981 +399 3991 +400 4001 +401 4011 +402 4021 +403 4031 +404 4041 +405 4051 +406 4061 +407 4071 +408 4081 +409 4091 +410 4101 +411 4111 +412 4121 +413 4131 +414 4141 +415 4151 +416 4161 +417 4171 +418 4181 +419 4191 +420 4201 +421 4211 +422 4221 +423 4231 +424 4241 +425 4251 +426 4261 +427 4271 +428 4281 +429 4291 +430 4301 +431 4311 +432 4321 +433 4331 +434 4341 +435 4351 +436 4361 +437 4371 +438 4381 +439 4391 +440 4401 +441 4411 +442 4421 +443 4431 +444 4441 +445 4451 +446 4461 +447 4471 +448 4481 +449 4491 +450 4501 +451 4511 +452 4521 +453 4531 +454 4541 +455 4551 +456 4561 +457 4571 +458 4581 +459 4591 +460 4601 +461 4611 +462 4621 +463 4631 +464 4641 +465 4651 +466 4661 +467 4671 +468 4681 +469 4691 +470 4701 +471 4711 +472 4721 +473 4731 +474 4741 +475 4751 +476 4761 +477 4771 +478 4781 +479 4791 +480 4801 +481 4811 +482 4821 +483 4831 +484 4841 +485 4851 +486 4861 +487 4871 +488 4881 +489 4891 +490 4901 +491 4911 +492 4921 +493 4931 +494 4941 +495 4951 +496 4961 +497 4971 +498 4981 +499 4991 +500 5001 +501 5011 +502 5021 +503 5031 +504 5041 +505 5051 +506 5061 +507 5071 +508 5081 +509 5091 +510 5101 +511 5111 +512 5121 +513 5131 +514 5141 +515 5151 +516 5161 +517 5171 +518 5181 +519 5191 +520 5201 +521 5211 +522 5221 +523 5231 +524 5241 +525 5251 +526 5261 +527 5271 +528 5281 +529 5291 +530 5301 +531 5311 +532 5321 +533 5331 +534 5341 +535 5351 +536 5361 +537 5371 +538 5381 +539 5391 +540 5401 +541 5411 +542 5421 +543 5431 +544 5441 +545 5451 +546 5461 +547 5471 +548 5481 +549 5491 +550 5501 +551 5511 +552 5521 +553 5531 +554 5541 +555 5551 +556 5561 +557 5571 +558 5581 +559 5591 +560 5601 +561 5611 +562 5621 +563 5631 +564 5641 +565 5651 +566 5661 +567 5671 +568 5681 +569 5691 +570 5701 +571 5711 +572 5721 +573 5731 +574 5741 +575 5751 +576 5761 +577 5771 +578 5781 +579 5791 +580 5801 +581 5811 +582 5821 +583 5831 +584 5841 +585 5851 +586 5861 +587 5871 +588 5881 +589 5891 +590 5901 +591 5911 +592 5921 +593 5931 +594 5941 +595 5951 +596 5961 +597 5971 +598 5981 +599 5991 +600 6001 +601 6011 +602 6021 +603 6031 +604 6041 +605 6051 +606 6061 +607 6071 +608 6081 +609 6091 +610 6101 +611 6111 +612 6121 +613 6131 +614 6141 +615 6151 +616 6161 +617 6171 +618 6181 +619 6191 +620 6201 +621 6211 +622 6221 +623 6231 +624 6241 +625 6251 +626 6261 +627 6271 +628 6281 +629 6291 +630 6301 +631 6311 +632 6321 +633 6331 +634 6341 +635 6351 +636 6361 +637 6371 +638 6381 +639 6391 +640 6401 +641 6411 +642 6421 +643 6431 +644 6441 +645 6451 +646 6461 +647 6471 +648 6481 +649 6491 +650 6501 +651 6511 +652 6521 +653 6531 +654 6541 +655 6551 +656 6561 +657 6571 +658 6581 +659 6591 +660 6601 +661 6611 +662 6621 +663 6631 +664 6641 +665 6651 +666 6661 +667 6671 +668 6681 +669 6691 +670 6701 +671 6711 +672 6721 +673 6731 +674 6741 +675 6751 +676 6761 +677 6771 +678 6781 +679 6791 +680 6801 +681 6811 +682 6821 +683 6831 +684 6841 +685 6851 +686 6861 +687 6871 +688 6881 +689 6891 +690 6901 +691 6911 +692 6921 +693 6931 +694 6941 +695 6951 +696 6961 +697 6971 +698 6981 +699 6991 +700 7001 +701 7011 +702 7021 +703 7031 +704 7041 +705 7051 +706 7061 +707 7071 +708 7081 +709 7091 +710 7101 +711 7111 +712 7121 +713 7131 +714 7141 +715 7151 +716 7161 +717 7171 +718 7181 +719 7191 +720 7201 +721 7211 +722 7221 +723 7231 +724 7241 +725 7251 +726 7261 +727 7271 +728 7281 +729 7291 +730 7301 +731 7311 +732 7321 +733 7331 +734 7341 +735 7351 +736 7361 +737 7371 +738 7381 +739 7391 +740 7401 +741 7411 +742 7421 +743 7431 +744 7441 +745 7451 +746 7461 +747 7471 +748 7481 +749 7491 +750 7501 +751 7511 +752 7521 +753 7531 +754 7541 +755 7551 +756 7561 +757 7571 +758 7581 +759 7591 +760 7601 +761 7611 +762 7621 +763 7631 +764 7641 +765 7651 +766 7661 +767 7671 +768 7681 +769 7691 +770 7701 +771 7711 +772 7721 +773 7731 +774 7741 +775 7751 +776 7761 +777 7771 +778 7781 +779 7791 +780 7801 +781 7811 +782 7821 +783 7831 +784 7841 +785 7851 +786 7861 +787 7871 +788 7881 +789 7891 +790 7901 +791 7911 +792 7921 +793 7931 +794 7941 +795 7951 +796 7961 +797 7971 +798 7981 +799 7991 +800 8001 +801 8011 +802 8021 +803 8031 +804 8041 +805 8051 +806 8061 +807 8071 +808 8081 +809 8091 +810 8101 +811 8111 +812 8121 +813 8131 +814 8141 +815 8151 +816 8161 +817 8171 +818 8181 +819 8191 +820 8201 +821 8211 +822 8221 +823 8231 +824 8241 +825 8251 +826 8261 +827 8271 +828 8281 +829 8291 +830 8301 +831 8311 +832 8321 +833 8331 +834 8341 +835 8351 +836 8361 +837 8371 +838 8381 +839 8391 +840 8401 +841 8411 +842 8421 +843 8431 +844 8441 +845 8451 +846 8461 +847 8471 +848 8481 +849 8491 +850 8501 +851 8511 +852 8521 +853 8531 +854 8541 +855 8551 +856 8561 +857 8571 +858 8581 +859 8591 +860 8601 +861 8611 +862 8621 +863 8631 +864 8641 +865 8651 +866 8661 +867 8671 +868 8681 +869 8691 +870 8701 +871 8711 +872 8721 +873 8731 +874 8741 +875 8751 +876 8761 +877 8771 +878 8781 +879 8791 +880 8801 +881 8811 +882 8821 +883 8831 +884 8841 +885 8851 +886 8861 +887 8871 +888 8881 +889 8891 +890 8901 +891 8911 +892 8921 +893 8931 +894 8941 +895 8951 +896 8961 +897 8971 +898 8981 +899 8991 +900 9001 +901 9011 +902 9021 +903 9031 +904 9041 +905 9051 +906 9061 +907 9071 +908 9081 +909 9091 +910 9101 +911 9111 +912 9121 +913 9131 +914 9141 +915 9151 +916 9161 +917 9171 +918 9181 +919 9191 +920 9201 +921 9211 +922 9221 +923 9231 +924 9241 +925 9251 +926 9261 +927 9271 +928 9281 +929 9291 +930 9301 +931 9311 +932 9321 +933 9331 +934 9341 +935 9351 +936 9361 +937 9371 +938 9381 +939 9391 +940 9401 +941 9411 +942 9421 +943 9431 +944 9441 +945 9451 +946 9461 +947 9471 +948 9481 +949 9491 +950 9501 +951 9511 +952 9521 +953 9531 +954 9541 +955 9551 +956 9561 +957 9571 +958 9581 +959 9591 +960 9601 +961 9611 +962 9621 +963 9631 +964 9641 +965 9651 +966 9661 +967 9671 +968 9681 +969 9691 +970 9701 +971 9711 +972 9721 +973 9731 +974 9741 +975 9751 +976 9761 +977 9771 +978 9781 +979 9791 +980 9801 +981 9811 +982 9821 +983 9831 +984 9841 +985 9851 +986 9861 +987 9871 +988 9881 +989 9891 +990 9901 +991 9911 +992 9921 +993 9931 +994 9941 +995 9951 +996 9961 +997 9971 +998 9981 +999 9991 +1000 10001 +1001 10011 +1002 10021 +1003 10031 +1004 10041 +1005 10051 +1006 10061 +1007 10071 +1008 10081 +1009 10091 +1010 10101 +1011 10111 +1012 10121 +1013 10131 +1014 10141 +1015 10151 +1016 10161 +1017 10171 +1018 10181 +1019 10191 +1020 10201 +1021 10211 +1022 10221 +1023 10231 +1024 10241 +1025 10251 +1026 10261 diff --git a/gsl-2.5/block/test_complex_io.c b/gsl-2.5/block/test_complex_io.c new file mode 100644 index 00000000..c3f1fd75 --- /dev/null +++ b/gsl-2.5/block/test_complex_io.c @@ -0,0 +1,64 @@ +/* block/test_complex_io.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +void FUNCTION (test, text) (void); + +void +FUNCTION (test, text) (void) +{ + size_t i; + + { + TYPE (gsl_block) *v = FUNCTION (gsl_block, calloc) (N); + + FILE *f = fopen ("test.txt", "w"); + + for (i = 0; i < N; i++) + { + v->data[2*i] = (ATOMIC)i ; + v->data[2*i + 1] = (ATOMIC)(10*i + 1) ; + }; + + FUNCTION (gsl_block, fprintf) (f, v, OUT_FORMAT); + + fclose (f); + + FUNCTION (gsl_block, free) (v); + } + + { + TYPE (gsl_block) *w = FUNCTION (gsl_block, calloc) (N); + + FILE *f = fopen ("test.txt", "r"); + + FUNCTION (gsl_block, fscanf) (f, w); + + status = 0; + for (i = 0; i < N; i++) + { + if (w->data[2 * i] != (ATOMIC) i || w->data[2 * i + 1] != (ATOMIC) (10*i + 1)) + status = 1; + }; + fclose (f); + + FUNCTION (gsl_block, free) (w); + } + + gsl_test (status, NAME (gsl_block) "_fprintf and fscanf"); +} diff --git a/gsl-2.5/block/test_complex_source.c b/gsl-2.5/block/test_complex_source.c new file mode 100644 index 00000000..25fb8873 --- /dev/null +++ b/gsl-2.5/block/test_complex_source.c @@ -0,0 +1,137 @@ +/* block/test_complex_source.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +void FUNCTION (test, func) (void); +void FUNCTION (test, binary) (void); +void FUNCTION (test, trap) (void); + +void +FUNCTION (test, func) (void) +{ + TYPE (gsl_block) * b; + ATOMIC * data; + size_t i, size; + + b = FUNCTION (gsl_block, alloc) (N); + + gsl_test (b->data == 0, NAME (gsl_block) "_alloc returns valid pointer"); + gsl_test (b->size != N, NAME (gsl_block) "_alloc returns valid size"); + + data = FUNCTION(gsl_block, data) (b); + size = FUNCTION(gsl_block, size) (b); + + gsl_test (data == 0, NAME (gsl_block) "_data returns valid pointer"); + gsl_test (size != N, NAME (gsl_block) "_size returns valid size"); + + FUNCTION (gsl_block, free) (b); /* free whatever is in v */ + + b = FUNCTION (gsl_block, calloc) (N); + + gsl_test (b->data == 0, NAME (gsl_block) "_calloc returns valid pointer"); + gsl_test (b->size != N, NAME (gsl_block) "_calloc returns valid size"); + + data = FUNCTION(gsl_block, data) (b); + size = FUNCTION(gsl_block, size) (b); + + gsl_test (data == 0, NAME (gsl_block) "_data returns valid pointer from calloc"); + gsl_test (size != N, NAME (gsl_block) "_size returns valid size from calloc"); + + status = 0; + + for (i = 0; i < N; i++) + { + if (b->data[2 * i] != 0.0 || b->data[2 * i + 1] != 0.0) + status = 1; + }; + + gsl_test (status, NAME (gsl_block) "_calloc initializes array to zero"); + + FUNCTION (gsl_block, free) (b); +} + +void +FUNCTION (test, binary) (void) +{ + size_t i; + + { + TYPE (gsl_block) * v = FUNCTION (gsl_block, calloc) (N); + + FILE *f = fopen ("test.dat", "wb"); + + for (i = 0; i < N; i++) + { + v->data[2*i] = (ATOMIC)(N - i); + v->data[2*i + 1] = (ATOMIC)(10*(N-i) + 1); + }; + + FUNCTION (gsl_block, fwrite) (f, v); + + fclose (f); + + FUNCTION (gsl_block, free) (v); + } + + { + TYPE (gsl_block) * w = FUNCTION (gsl_block, calloc) (N); + + FILE *f = fopen ("test.dat", "rb"); + + FUNCTION (gsl_block, fread) (f, w); + + status = 0; + for (i = 0; i < N; i++) + { + if (w->data[2 * i] != (ATOMIC) (N - i) || w->data[2 * i + 1] != (ATOMIC) (10*(N - i) + 1)) + status = 1; + }; + fclose (f); + + FUNCTION (gsl_block, free) (w); + } + + gsl_test (status, NAME (gsl_block) "_write and read"); + +} + +void +FUNCTION (test, alloc_zero_length) (void) +{ + TYPE (gsl_block) * b = FUNCTION (gsl_block, alloc) (0); + + gsl_test (b == 0, NAME (gsl_block) "_alloc permits zero length"); + gsl_test (b->size != 0, NAME (gsl_block) "_alloc reflects zero length"); + + FUNCTION (gsl_block, free) (b); +} + +void +FUNCTION (test, calloc_zero_length) (void) +{ + TYPE (gsl_block) * b = FUNCTION (gsl_block, calloc) (0); + + gsl_test (b == 0, NAME (gsl_block) "_calloc permits zero length"); + gsl_test (b->size != 0, NAME (gsl_block) "_calloc reflects zero length"); + + FUNCTION (gsl_block, free) (b); +} + + + + diff --git a/gsl-2.5/block/test_io.c b/gsl-2.5/block/test_io.c new file mode 100644 index 00000000..6f4331f9 --- /dev/null +++ b/gsl-2.5/block/test_io.c @@ -0,0 +1,66 @@ +/* block/test_io.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +void FUNCTION (test, text) (void); + +void +FUNCTION (test, text) (void) +{ + size_t i; + + { + TYPE (gsl_block) * v = FUNCTION (gsl_block, calloc) (N); + + FILE *f = fopen ("test.txt", "w"); + + for (i = 0; i < N; i++) + { + v->data[i] = (ATOMIC) i; + }; + + FUNCTION (gsl_block, fprintf) (f, v, OUT_FORMAT); + + fclose (f); + + FUNCTION (gsl_block, free) (v); + } + + { + TYPE (gsl_block) * w = FUNCTION (gsl_block, calloc) (N); + + FILE *f = fopen ("test.txt", "r"); + + FUNCTION (gsl_block, fscanf) (f, w); + + status = 0; + for (i = 0; i < N; i++) + { + if (w->data[i] != (ATOMIC) i) + status = 1; + }; + + gsl_test (status, NAME (gsl_block) "_fprintf and fscanf"); + + fclose (f); + + FUNCTION (gsl_block, free) (w); + } +} + + diff --git a/gsl-2.5/block/test_source.c b/gsl-2.5/block/test_source.c new file mode 100644 index 00000000..d2afc9d4 --- /dev/null +++ b/gsl-2.5/block/test_source.c @@ -0,0 +1,135 @@ +/* block/test_source.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +void FUNCTION (test, func) (void); +void FUNCTION (test, binary) (void); +void FUNCTION (test, trap) (void); + +void +FUNCTION (test, func) (void) +{ + TYPE (gsl_block) * v; + ATOMIC * data; + size_t i, size; + + v = FUNCTION (gsl_block, alloc) (N); + + gsl_test (v->data == 0, NAME (gsl_block) "_alloc returns valid pointer"); + gsl_test (v->size != N, NAME (gsl_block) "_alloc returns valid size"); + + data = FUNCTION(gsl_block, data) (v); + size = FUNCTION(gsl_block, size) (v); + + gsl_test (data == 0, NAME (gsl_block) "_data returns valid pointer"); + gsl_test (size != N, NAME (gsl_block) "_size returns valid size"); + + + FUNCTION (gsl_block, free) (v); /* free whatever is in v */ + + v = FUNCTION (gsl_block, calloc) (N); + + gsl_test (v->data == 0, NAME (gsl_block) "_calloc returns valid pointer"); + gsl_test (v->size != N, NAME (gsl_block) "_calloc returns valid size"); + + data = FUNCTION(gsl_block, data) (v); + size = FUNCTION(gsl_block, size) (v); + + gsl_test (data == 0, NAME (gsl_block) "_data returns valid pointer from calloc"); + gsl_test (size != N, NAME (gsl_block) "_size returns valid size from calloc"); + + status = 0; + + for (i = 0; i < N; i++) + { + if (v->data[i] != 0.0) + status = 1; + }; + + gsl_test (status, NAME (gsl_block) "_calloc initializes array to zero"); + + FUNCTION (gsl_block, free) (v); /* free whatever is in v */ +} + + +void +FUNCTION (test, binary) (void) +{ + size_t i; + + { + TYPE (gsl_block) * v = FUNCTION (gsl_block, calloc) (N); + + FILE *f = fopen ("test.dat", "wb"); + + for (i = 0; i < N; i++) + { + v->data[i] = (ATOMIC)(N - i); + }; + + FUNCTION (gsl_block, fwrite) (f, v); + + fclose (f); + + FUNCTION (gsl_block, free) (v); + } + + { + TYPE (gsl_block) * w = FUNCTION (gsl_block, calloc) (N); + + FILE *f = fopen ("test.dat", "rb"); + + FUNCTION (gsl_block, fread) (f, w); + + status = 0; + + for (i = 0; i < N; i++) + { + if (w->data[i] != (ATOMIC) (N - i)) + status = 1; + }; + + fclose (f); + + FUNCTION (gsl_block, free) (w); + } + + gsl_test (status, NAME (gsl_block) "_write and read"); +} + +void +FUNCTION (test, alloc_zero_length) (void) +{ + TYPE (gsl_block) * b = FUNCTION (gsl_block, alloc) (0); + + gsl_test (b == 0, NAME (gsl_block) "_alloc permits zero length"); + gsl_test (b->size != 0, NAME (gsl_block) "_alloc reflects zero length"); + + FUNCTION (gsl_block, free) (b); +} + +void +FUNCTION (test, calloc_zero_length) (void) +{ + TYPE (gsl_block) * b = FUNCTION (gsl_block, calloc) (0); + + gsl_test (b == 0, NAME (gsl_block) "_calloc permits zero length"); + gsl_test (b->size != 0, NAME (gsl_block) "_calloc reflects zero length"); + + FUNCTION (gsl_block, free) (b); +} diff --git a/gsl-2.5/bspline/.deps/bspline.Plo b/gsl-2.5/bspline/.deps/bspline.Plo new file mode 100644 index 00000000..c073d3c2 --- /dev/null +++ b/gsl-2.5/bspline/.deps/bspline.Plo @@ -0,0 +1,292 @@ +bspline.lo: bspline.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_errno.h /usr/include/stdio.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_types.h ../gsl/gsl_bspline.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_nan.h ../gsl/gsl_pow_int.h \ + ../gsl/gsl_minmax.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_complex.h \ + ../gsl/gsl_check_range.h ../gsl/gsl_vector_long_double.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_vector_complex.h \ + ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h bspline.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_bspline.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +bspline.h: diff --git a/gsl-2.5/bspline/.deps/greville.Plo b/gsl-2.5/bspline/.deps/greville.Plo new file mode 100644 index 00000000..dd147c11 --- /dev/null +++ b/gsl-2.5/bspline/.deps/greville.Plo @@ -0,0 +1,334 @@ +greville.lo: greville.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_bspline.h /usr/include/stdlib.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_linalg.h ../gsl/gsl_mode.h \ + ../gsl/gsl_permutation.h ../gsl/gsl_blas.h ../gsl/gsl_blas_types.h \ + ../gsl/gsl_cblas.h ../gsl/gsl_statistics.h \ + ../gsl/gsl_statistics_long_double.h ../gsl/gsl_statistics_double.h \ + ../gsl/gsl_statistics_float.h ../gsl/gsl_statistics_ulong.h \ + ../gsl/gsl_statistics_long.h ../gsl/gsl_statistics_uint.h \ + ../gsl/gsl_statistics_int.h ../gsl/gsl_statistics_ushort.h \ + ../gsl/gsl_statistics_short.h ../gsl/gsl_statistics_uchar.h \ + ../gsl/gsl_statistics_char.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_bspline.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_linalg.h: + +../gsl/gsl_mode.h: + +../gsl/gsl_permutation.h: + +../gsl/gsl_blas.h: + +../gsl/gsl_blas_types.h: + +../gsl/gsl_cblas.h: + +../gsl/gsl_statistics.h: + +../gsl/gsl_statistics_long_double.h: + +../gsl/gsl_statistics_double.h: + +../gsl/gsl_statistics_float.h: + +../gsl/gsl_statistics_ulong.h: + +../gsl/gsl_statistics_long.h: + +../gsl/gsl_statistics_uint.h: + +../gsl/gsl_statistics_int.h: + +../gsl/gsl_statistics_ushort.h: + +../gsl/gsl_statistics_short.h: + +../gsl/gsl_statistics_uchar.h: + +../gsl/gsl_statistics_char.h: diff --git a/gsl-2.5/bspline/.deps/test.Po b/gsl-2.5/bspline/.deps/test.Po new file mode 100644 index 00000000..21a4777b --- /dev/null +++ b/gsl-2.5/bspline/.deps/test.Po @@ -0,0 +1,294 @@ +test.o: test.c /usr/include/stdc-predef.h ../config.h ../gsl/gsl_test.h \ + ../gsl/gsl_errno.h /usr/include/stdio.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_types.h ../gsl/gsl_bspline.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_nan.h ../gsl/gsl_pow_int.h \ + ../gsl/gsl_minmax.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_complex.h \ + ../gsl/gsl_check_range.h ../gsl/gsl_vector_long_double.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_vector_complex.h \ + ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_ieee_utils.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_test.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_bspline.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_ieee_utils.h: diff --git a/gsl-2.5/bspline/.libs/libgslbspline.la b/gsl-2.5/bspline/.libs/libgslbspline.la new file mode 120000 index 00000000..b8c4e7f1 --- /dev/null +++ b/gsl-2.5/bspline/.libs/libgslbspline.la @@ -0,0 +1 @@ +../libgslbspline.la \ No newline at end of file diff --git a/gsl-2.5/bspline/.libs/lt-test b/gsl-2.5/bspline/.libs/lt-test new file mode 100755 index 00000000..5fbaa321 Binary files /dev/null and b/gsl-2.5/bspline/.libs/lt-test differ diff --git a/gsl-2.5/bspline/.libs/test b/gsl-2.5/bspline/.libs/test new file mode 100755 index 00000000..896d53b4 Binary files /dev/null and b/gsl-2.5/bspline/.libs/test differ diff --git a/gsl-2.5/bspline/ChangeLog b/gsl-2.5/bspline/ChangeLog new file mode 100644 index 00000000..506c83d0 --- /dev/null +++ b/gsl-2.5/bspline/ChangeLog @@ -0,0 +1,51 @@ +2011-09-21 Rhys Ulerich + + * greville.c (gsl_bspline_knots_greville) Added routine to + initialize breakpoints prescribed by specifying the desired + Greville abscissae + + * test.c Add tests for the new gsl_bspline_knots_greville + +2011-09-20 Rhys Ulerich + + * bspline.c (gsl_bspline_greville_abscissa) Greville-related + logic moved to greville.c in preparation for upcoming + gsl_bspline_knots_greville_abscissae functionality. + +2009-08-12 Brian Gough + + * bspline.c (gsl_bspline_alloc): correct free to gsl_vector_free + for components allocated with gsl_vector_alloc + (gsl_bspline_deriv_alloc): correct free to gsl_matrix_free + for components allocated with gsl_matrix_alloc + +2009-07-21 Brian Gough + + * bspline.c (gsl_bspline_greville_abscissa): added function for + greville abscissae + +2009-07-09 Brian Gough + + * bspline.c (gsl_bspline_free): handle NULL argument in free + (gsl_bspline_deriv_free): handle NULL argument in free + +2008-12-09 Brian Gough + + * bspline.c (gsl_bspline_deriv_alloc): add size to derivative + struct + +2008-12-08 Brian Gough + + * gsl_bspline.h: preserve binary compatibility in workspaces + +2008-07-03 Brian Gough + + * Makefile.am (INCLUDES): use top_srcdir instead of top_builddir + +2006-11-02 Brian Gough + + * added test program + + * initial checkin from P.Alken + + diff --git a/gsl-2.5/bspline/Makefile b/gsl-2.5/bspline/Makefile new file mode 100644 index 00000000..6ddda343 --- /dev/null +++ b/gsl-2.5/bspline/Makefile @@ -0,0 +1,1031 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# bspline/Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + + + + +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/gsl +pkgincludedir = $(includedir)/gsl +pkglibdir = $(libdir)/gsl +pkglibexecdir = $(libexecdir)/gsl +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = x86_64-unknown-linux-gnu +host_triplet = x86_64-unknown-linux-gnu +check_PROGRAMS = test$(EXEEXT) +subdir = bspline +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp \ + $(noinst_HEADERS) $(pkginclude_HEADERS) \ + $(top_srcdir)/test-driver ChangeLog TODO +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +libgslbspline_la_LIBADD = +am_libgslbspline_la_OBJECTS = bspline.lo greville.lo +libgslbspline_la_OBJECTS = $(am_libgslbspline_la_OBJECTS) +AM_V_lt = $(am__v_lt_$(V)) +am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) +am__v_lt_0 = --silent +am__v_lt_1 = +am_test_OBJECTS = test.$(OBJEXT) +test_OBJECTS = $(am_test_OBJECTS) +test_DEPENDENCIES = libgslbspline.la ../linalg/libgsllinalg.la \ + ../permutation/libgslpermutation.la ../blas/libgslblas.la \ + ../matrix/libgslmatrix.la ../vector/libgslvector.la \ + ../block/libgslblock.la ../complex/libgslcomplex.la \ + ../cblas/libgslcblas.la ../ieee-utils/libgslieeeutils.la \ + ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la \ + ../utils/libutils.la ../statistics/libgslstatistics.la +AM_V_P = $(am__v_P_$(V)) +am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY)) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_$(V)) +am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_$(V)) +am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I. -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_$(V)) +am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_$(V)) +am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libgslbspline_la_SOURCES) $(test_SOURCES) +DIST_SOURCES = $(libgslbspline_la_SOURCES) $(test_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(pkgincludedir)" +HEADERS = $(noinst_HEADERS) $(pkginclude_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = .test +LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing aclocal-1.13 +AMTAR = $${TAR-tar} +AM_DEFAULT_VERBOSITY = 1 +AR = ar +AS = as +AUTOCONF = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing autoconf +AUTOHEADER = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing autoheader +AUTOMAKE = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing automake-1.13 +AWK = gawk +CC = gcc +CCDEPMODE = depmode=gcc3 +CFLAGS = -g -O2 +CPP = gcc -E +CPPFLAGS = +CYGPATH_W = echo +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +DLLTOOL = false +DSYMUTIL = +DUMPBIN = +ECHO_C = +ECHO_N = -n +ECHO_T = +EGREP = /usr/bin/grep -E +EXEEXT = +FGREP = /usr/bin/grep -F +GREP = /usr/bin/grep +GSLCBLAS_LDFLAGS = +GSL_CFLAGS = -I${prefix}/include +GSL_LDFLAGS = +GSL_LIBADD = +GSL_LIBM = -lm +GSL_LIBS = -L${exec_prefix}/lib -lgsl +GSL_LT_CBLAS_VERSION = 0:0:0 +GSL_LT_VERSION = 24:0:1 +GSL_MAJOR_VERSION = 2 +GSL_MINOR_VERSION = 5 +HAVE_AIX_IEEE_INTERFACE = +HAVE_DARWIN86_IEEE_INTERFACE = +HAVE_DARWIN_IEEE_INTERFACE = +HAVE_FREEBSD_IEEE_INTERFACE = +HAVE_GNUM68K_IEEE_INTERFACE = +HAVE_GNUPPC_IEEE_INTERFACE = +HAVE_GNUSPARC_IEEE_INTERFACE = +HAVE_GNUX86_IEEE_INTERFACE = +HAVE_HPUX11_IEEE_INTERFACE = +HAVE_HPUX_IEEE_INTERFACE = +HAVE_IRIX_IEEE_INTERFACE = +HAVE_NETBSD_IEEE_INTERFACE = +HAVE_OPENBSD_IEEE_INTERFACE = +HAVE_OS2EMX_IEEE_INTERFACE = +HAVE_SOLARIS_IEEE_INTERFACE = +HAVE_SUNOS4_IEEE_INTERFACE = +HAVE_TRU64_IEEE_INTERFACE = +INSTALL = /usr/bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = $(install_sh) -c -s +LD = /usr/bin/ld -m elf_x86_64 +LDFLAGS = +LIBM = -lm +LIBOBJS = +LIBS = -lm +LIBTOOL = $(SHELL) $(top_builddir)/libtool +LIPO = +LN_S = ln -s +LTLIBOBJS = +MAINT = # +MAKEINFO = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing makeinfo +MANIFEST_TOOL = : +MKDIR_P = /usr/bin/mkdir -p +NM = /usr/bin/nm -B +NMEDIT = +OBJDUMP = objdump +OBJEXT = o +OTOOL = +OTOOL64 = +PACKAGE = gsl +PACKAGE_BUGREPORT = +PACKAGE_NAME = gsl +PACKAGE_STRING = gsl 2.5 +PACKAGE_TARNAME = gsl +PACKAGE_URL = +PACKAGE_VERSION = 2.5 +PATH_SEPARATOR = : +RANLIB = ranlib +SED = /usr/bin/sed +SET_MAKE = +SHELL = /bin/sh +STRIP = strip +VERSION = 2.5 +abs_builddir = /home/groups/kipac/chto/package/gsl/gsl-2.5/bspline +abs_srcdir = /home/groups/kipac/chto/package/gsl/gsl-2.5/bspline +abs_top_builddir = /home/groups/kipac/chto/package/gsl/gsl-2.5 +abs_top_srcdir = /home/groups/kipac/chto/package/gsl/gsl-2.5 +ac_ct_AR = ar +ac_ct_CC = gcc +ac_ct_DUMPBIN = +am__include = include +am__leading_dot = . +am__quote = +am__tar = $${TAR-tar} chof - "$$tardir" +am__untar = $${TAR-tar} xf - +bindir = ${exec_prefix}/bin +build = x86_64-unknown-linux-gnu +build_alias = +build_cpu = x86_64 +build_os = linux-gnu +build_vendor = unknown +builddir = . +datadir = ${datarootdir} +datarootdir = ${prefix}/share +docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} +dvidir = ${docdir} +exec_prefix = ${prefix} +host = x86_64-unknown-linux-gnu +host_alias = +host_cpu = x86_64 +host_os = linux-gnu +host_vendor = unknown +htmldir = ${docdir} +includedir = ${prefix}/include +infodir = ${datarootdir}/info +install_sh = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/install-sh +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +localedir = ${datarootdir}/locale +localstatedir = ${prefix}/var +mandir = ${datarootdir}/man +mkdir_p = $(MKDIR_P) +oldincludedir = /usr/include +pdfdir = ${docdir} +prefix = /home/groups/kipac/chto/package/gsl/gsl_lib +program_transform_name = s,x,x, +psdir = ${docdir} +sbindir = ${exec_prefix}/sbin +sharedstatedir = ${prefix}/com +srcdir = . +sysconfdir = ${prefix}/etc +target_alias = +top_build_prefix = ../ +top_builddir = .. +top_srcdir = .. +noinst_LTLIBRARIES = libgslbspline.la +pkginclude_HEADERS = gsl_bspline.h +AM_CPPFLAGS = -I$(top_srcdir) +libgslbspline_la_SOURCES = bspline.c greville.c +noinst_HEADERS = bspline.h +TESTS = $(check_PROGRAMS) +test_LDADD = libgslbspline.la ../linalg/libgsllinalg.la ../permutation/libgslpermutation.la ../blas/libgslblas.la ../matrix/libgslmatrix.la ../vector/libgslvector.la ../block/libgslblock.la ../complex/libgslcomplex.la ../cblas/libgslcblas.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la ../statistics/libgslstatistics.la +test_SOURCES = test.c +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu bspline/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu bspline/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: # $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): # $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libgslbspline.la: $(libgslbspline_la_OBJECTS) $(libgslbspline_la_DEPENDENCIES) $(EXTRA_libgslbspline_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(libgslbspline_la_OBJECTS) $(libgslbspline_la_LIBADD) $(LIBS) + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) $(EXTRA_test_DEPENDENCIES) + @rm -f test$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_OBJECTS) $(test_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +include ./$(DEPDIR)/bspline.Plo +include ./$(DEPDIR)/greville.Plo +include ./$(DEPDIR)/test.Po + +.c.o: + $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# $(AM_V_CC)source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(COMPILE) -c $< + +.c.obj: + $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# $(AM_V_CC)source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: + $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +# $(AM_V_CC)source='$<' object='$@' libtool=yes \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-pkgincludeHEADERS: $(pkginclude_HEADERS) + @$(NORMAL_INSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \ + done + +uninstall-pkgincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + else \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_PROGRAMS) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +test.log: test$(EXEEXT) + @p='test$(EXEEXT)'; \ + b='test'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +#.test$(EXEEXT).log: +# @p='$<'; \ +# $(am__set_b); \ +# $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +# --log-file $$b.log --trs-file $$b.trs \ +# $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +# "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-am +all-am: Makefile $(LTLIBRARIES) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(pkgincludedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-pkgincludeHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-pkgincludeHEADERS + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES cscopelist-am ctags ctags-am distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-pkgincludeHEADERS \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + recheck tags tags-am uninstall uninstall-am \ + uninstall-pkgincludeHEADERS + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gsl-2.5/bspline/Makefile.am b/gsl-2.5/bspline/Makefile.am new file mode 100644 index 00000000..3f4f9505 --- /dev/null +++ b/gsl-2.5/bspline/Makefile.am @@ -0,0 +1,17 @@ +noinst_LTLIBRARIES = libgslbspline.la + +pkginclude_HEADERS = gsl_bspline.h + +AM_CPPFLAGS = -I$(top_srcdir) + +libgslbspline_la_SOURCES = bspline.c greville.c + +noinst_HEADERS = bspline.h + +check_PROGRAMS = test + +TESTS = $(check_PROGRAMS) + +test_LDADD = libgslbspline.la ../linalg/libgsllinalg.la ../permutation/libgslpermutation.la ../blas/libgslblas.la ../matrix/libgslmatrix.la ../vector/libgslvector.la ../block/libgslblock.la ../complex/libgslcomplex.la ../cblas/libgslcblas.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la ../statistics/libgslstatistics.la + +test_SOURCES = test.c diff --git a/gsl-2.5/bspline/Makefile.in b/gsl-2.5/bspline/Makefile.in new file mode 100644 index 00000000..8b4614ce --- /dev/null +++ b/gsl-2.5/bspline/Makefile.in @@ -0,0 +1,1031 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + + +VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +check_PROGRAMS = test$(EXEEXT) +subdir = bspline +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp \ + $(noinst_HEADERS) $(pkginclude_HEADERS) \ + $(top_srcdir)/test-driver ChangeLog TODO +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +libgslbspline_la_LIBADD = +am_libgslbspline_la_OBJECTS = bspline.lo greville.lo +libgslbspline_la_OBJECTS = $(am_libgslbspline_la_OBJECTS) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +am_test_OBJECTS = test.$(OBJEXT) +test_OBJECTS = $(am_test_OBJECTS) +test_DEPENDENCIES = libgslbspline.la ../linalg/libgsllinalg.la \ + ../permutation/libgslpermutation.la ../blas/libgslblas.la \ + ../matrix/libgslmatrix.la ../vector/libgslvector.la \ + ../block/libgslblock.la ../complex/libgslcomplex.la \ + ../cblas/libgslcblas.la ../ieee-utils/libgslieeeutils.la \ + ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la \ + ../utils/libutils.la ../statistics/libgslstatistics.la +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libgslbspline_la_SOURCES) $(test_SOURCES) +DIST_SOURCES = $(libgslbspline_la_SOURCES) $(test_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(pkgincludedir)" +HEADERS = $(noinst_HEADERS) $(pkginclude_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = @EXEEXT@ .test +LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +GSLCBLAS_LDFLAGS = @GSLCBLAS_LDFLAGS@ +GSL_CFLAGS = @GSL_CFLAGS@ +GSL_LDFLAGS = @GSL_LDFLAGS@ +GSL_LIBADD = @GSL_LIBADD@ +GSL_LIBM = @GSL_LIBM@ +GSL_LIBS = @GSL_LIBS@ +GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ +GSL_LT_VERSION = @GSL_LT_VERSION@ +GSL_MAJOR_VERSION = @GSL_MAJOR_VERSION@ +GSL_MINOR_VERSION = @GSL_MINOR_VERSION@ +HAVE_AIX_IEEE_INTERFACE = @HAVE_AIX_IEEE_INTERFACE@ +HAVE_DARWIN86_IEEE_INTERFACE = @HAVE_DARWIN86_IEEE_INTERFACE@ +HAVE_DARWIN_IEEE_INTERFACE = @HAVE_DARWIN_IEEE_INTERFACE@ +HAVE_FREEBSD_IEEE_INTERFACE = @HAVE_FREEBSD_IEEE_INTERFACE@ +HAVE_GNUM68K_IEEE_INTERFACE = @HAVE_GNUM68K_IEEE_INTERFACE@ +HAVE_GNUPPC_IEEE_INTERFACE = @HAVE_GNUPPC_IEEE_INTERFACE@ +HAVE_GNUSPARC_IEEE_INTERFACE = @HAVE_GNUSPARC_IEEE_INTERFACE@ +HAVE_GNUX86_IEEE_INTERFACE = @HAVE_GNUX86_IEEE_INTERFACE@ +HAVE_HPUX11_IEEE_INTERFACE = @HAVE_HPUX11_IEEE_INTERFACE@ +HAVE_HPUX_IEEE_INTERFACE = @HAVE_HPUX_IEEE_INTERFACE@ +HAVE_IRIX_IEEE_INTERFACE = @HAVE_IRIX_IEEE_INTERFACE@ +HAVE_NETBSD_IEEE_INTERFACE = @HAVE_NETBSD_IEEE_INTERFACE@ +HAVE_OPENBSD_IEEE_INTERFACE = @HAVE_OPENBSD_IEEE_INTERFACE@ +HAVE_OS2EMX_IEEE_INTERFACE = @HAVE_OS2EMX_IEEE_INTERFACE@ +HAVE_SOLARIS_IEEE_INTERFACE = @HAVE_SOLARIS_IEEE_INTERFACE@ +HAVE_SUNOS4_IEEE_INTERFACE = @HAVE_SUNOS4_IEEE_INTERFACE@ +HAVE_TRU64_IEEE_INTERFACE = @HAVE_TRU64_IEEE_INTERFACE@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBM = @LIBM@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +noinst_LTLIBRARIES = libgslbspline.la +pkginclude_HEADERS = gsl_bspline.h +AM_CPPFLAGS = -I$(top_srcdir) +libgslbspline_la_SOURCES = bspline.c greville.c +noinst_HEADERS = bspline.h +TESTS = $(check_PROGRAMS) +test_LDADD = libgslbspline.la ../linalg/libgsllinalg.la ../permutation/libgslpermutation.la ../blas/libgslblas.la ../matrix/libgslmatrix.la ../vector/libgslvector.la ../block/libgslblock.la ../complex/libgslcomplex.la ../cblas/libgslcblas.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la ../statistics/libgslstatistics.la +test_SOURCES = test.c +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu bspline/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu bspline/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libgslbspline.la: $(libgslbspline_la_OBJECTS) $(libgslbspline_la_DEPENDENCIES) $(EXTRA_libgslbspline_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(libgslbspline_la_OBJECTS) $(libgslbspline_la_LIBADD) $(LIBS) + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) $(EXTRA_test_DEPENDENCIES) + @rm -f test$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_OBJECTS) $(test_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bspline.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/greville.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test.Po@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-pkgincludeHEADERS: $(pkginclude_HEADERS) + @$(NORMAL_INSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \ + done + +uninstall-pkgincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + else \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_PROGRAMS) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +test.log: test$(EXEEXT) + @p='test$(EXEEXT)'; \ + b='test'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +@am__EXEEXT_TRUE@.test$(EXEEXT).log: +@am__EXEEXT_TRUE@ @p='$<'; \ +@am__EXEEXT_TRUE@ $(am__set_b); \ +@am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +@am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ +@am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +@am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-am +all-am: Makefile $(LTLIBRARIES) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(pkgincludedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-pkgincludeHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-pkgincludeHEADERS + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES cscopelist-am ctags ctags-am distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-pkgincludeHEADERS \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + recheck tags tags-am uninstall uninstall-am \ + uninstall-pkgincludeHEADERS + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gsl-2.5/bspline/TODO b/gsl-2.5/bspline/TODO new file mode 100644 index 00000000..f39f3f1b --- /dev/null +++ b/gsl-2.5/bspline/TODO @@ -0,0 +1,10 @@ +# -*- org -*- +#+CATEGORY: bspline + +Add functions: + +gsl_bspline_smooth to fit smoothing splines to data more efficiently +than the standard least squares inversion (see pppack l2appr and +smooth.spline() from GNU R) + ++ any other useful functions from pppack diff --git a/gsl-2.5/bspline/bspline.c b/gsl-2.5/bspline/bspline.c new file mode 100644 index 00000000..23c7c3cf --- /dev/null +++ b/gsl-2.5/bspline/bspline.c @@ -0,0 +1,941 @@ +/* bspline/bspline.c + * + * Copyright (C) 2006, 2007, 2008, 2009 Patrick Alken + * Copyright (C) 2008 Rhys Ulerich + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include + +/* + * This module contains routines related to calculating B-splines. + * The algorithms used are described in + * + * [1] Carl de Boor, "A Practical Guide to Splines", Springer + * Verlag, 1978. + * + * The bspline_pppack_* internal routines contain code adapted from + * + * [2] "PPPACK - Piecewise Polynomial Package", + * http://www.netlib.org/pppack/ + * + */ + +#include "bspline.h" + +/* +gsl_bspline_alloc() + Allocate space for a bspline workspace. The size of the +workspace is O(5k + nbreak) + +Inputs: k - spline order (cubic = 4) + nbreak - number of breakpoints + +Return: pointer to workspace +*/ + +gsl_bspline_workspace * +gsl_bspline_alloc (const size_t k, const size_t nbreak) +{ + if (k == 0) + { + GSL_ERROR_NULL ("k must be at least 1", GSL_EINVAL); + } + else if (nbreak < 2) + { + GSL_ERROR_NULL ("nbreak must be at least 2", GSL_EINVAL); + } + else + { + gsl_bspline_workspace *w; + + w = calloc (1, sizeof (gsl_bspline_workspace)); + + if (w == 0) + { + GSL_ERROR_NULL ("failed to allocate space for workspace", + GSL_ENOMEM); + } + + w->k = k; + w->km1 = k - 1; + w->nbreak = nbreak; + w->l = nbreak - 1; + w->n = w->l + k - 1; + + w->knots = gsl_vector_alloc (w->n + k); + if (w->knots == 0) + { + gsl_bspline_free (w); + GSL_ERROR_NULL ("failed to allocate space for knots vector", + GSL_ENOMEM); + } + + w->deltal = gsl_vector_alloc (k); + if (w->deltal == 0) + { + gsl_bspline_free (w); + GSL_ERROR_NULL ("failed to allocate space for deltal vector", + GSL_ENOMEM); + } + + w->deltar = gsl_vector_alloc (k); + if (w->deltar == 0) + { + gsl_bspline_free (w); + GSL_ERROR_NULL ("failed to allocate space for deltar vector", + GSL_ENOMEM); + } + + w->B = gsl_vector_alloc (k); + if (w->B == 0) + { + gsl_bspline_free (w); + GSL_ERROR_NULL + ("failed to allocate space for temporary spline vector", + GSL_ENOMEM); + } + + w->A = gsl_matrix_alloc (k, k); + if (w->A == 0) + { + gsl_bspline_free (w); + GSL_ERROR_NULL + ("failed to allocate space for derivative work matrix", + GSL_ENOMEM); + } + + w->dB = gsl_matrix_alloc (k, k + 1); + if (w->dB == 0) + { + gsl_bspline_free (w); + GSL_ERROR_NULL + ("failed to allocate space for temporary derivative matrix", + GSL_ENOMEM); + } + + return w; + } +} /* gsl_bspline_alloc() */ + +/* +gsl_bspline_free() + Free a gsl_bspline_workspace. + +Inputs: w - workspace to free + +Return: none +*/ + +void +gsl_bspline_free (gsl_bspline_workspace * w) +{ + RETURN_IF_NULL (w); + + if (w->knots) + gsl_vector_free (w->knots); + + if (w->deltal) + gsl_vector_free (w->deltal); + + if (w->deltar) + gsl_vector_free (w->deltar); + + if (w->B) + gsl_vector_free (w->B); + + if (w->A) + gsl_matrix_free(w->A); + + if (w->dB) + gsl_matrix_free(w->dB); + + free (w); +} /* gsl_bspline_free() */ + + +/* Return number of coefficients */ +size_t +gsl_bspline_ncoeffs (gsl_bspline_workspace * w) +{ + return w->n; +} + +/* Return order */ +size_t +gsl_bspline_order (gsl_bspline_workspace * w) +{ + return w->k; +} + +/* Return number of breakpoints */ +size_t +gsl_bspline_nbreak (gsl_bspline_workspace * w) +{ + return w->nbreak; +} + +/* Return the location of the i-th breakpoint*/ +double +gsl_bspline_breakpoint (size_t i, gsl_bspline_workspace * w) +{ + size_t j = i + w->k - 1; + return gsl_vector_get (w->knots, j); +} + +/* +gsl_bspline_knots() + Compute the knots from the given breakpoints: + + knots(1:k) = breakpts(1) + knots(k+1:k+l-1) = breakpts(i), i = 2 .. l + knots(n+1:n+k) = breakpts(l + 1) + +where l is the number of polynomial pieces (l = nbreak - 1) and + n = k + l - 1 +(using matlab syntax for the arrays) + +The repeated knots at the beginning and end of the interval +correspond to the continuity condition there. See pg. 119 +of [1]. + +Inputs: breakpts - breakpoints + w - bspline workspace + +Return: success or error +*/ + +int +gsl_bspline_knots (const gsl_vector * breakpts, gsl_bspline_workspace * w) +{ + if (breakpts->size != w->nbreak) + { + GSL_ERROR ("breakpts vector has wrong size", GSL_EBADLEN); + } + else + { + size_t i; /* looping */ + + for (i = 0; i < w->k; i++) + gsl_vector_set (w->knots, i, gsl_vector_get (breakpts, 0)); + + for (i = 1; i < w->l; i++) + { + gsl_vector_set (w->knots, w->k - 1 + i, + gsl_vector_get (breakpts, i)); + } + + for (i = w->n; i < w->n + w->k; i++) + gsl_vector_set (w->knots, i, gsl_vector_get (breakpts, w->l)); + + return GSL_SUCCESS; + } +} /* gsl_bspline_knots() */ + +/* +gsl_bspline_knots_uniform() + Construct uniformly spaced knots on the interval [a,b] using +the previously specified number of breakpoints. 'a' is the position +of the first breakpoint and 'b' is the position of the last +breakpoint. + +Inputs: a - left side of interval + b - right side of interval + w - bspline workspace + +Return: success or error + +Notes: 1) w->knots is modified to contain the uniformly spaced + knots + + 2) The knots vector is set up as follows (using octave syntax): + + knots(1:k) = a + knots(k+1:k+l-1) = a + i*delta, i = 1 .. l - 1 + knots(n+1:n+k) = b +*/ + +int +gsl_bspline_knots_uniform (const double a, const double b, + gsl_bspline_workspace * w) +{ + size_t i; /* looping */ + double delta; /* interval spacing */ + double x; + + delta = (b - a) / (double) w->l; + + for (i = 0; i < w->k; i++) + gsl_vector_set (w->knots, i, a); + + x = a + delta; + for (i = 0; i < w->l - 1; i++) + { + gsl_vector_set (w->knots, w->k + i, x); + x += delta; + } + + for (i = w->n; i < w->n + w->k; i++) + gsl_vector_set (w->knots, i, b); + + return GSL_SUCCESS; +} /* gsl_bspline_knots_uniform() */ + +/* +gsl_bspline_eval() + Evaluate the basis functions B_i(x) for all i. This is +a wrapper function for gsl_bspline_eval_nonzero() which +formats the output in a nice way. + +Inputs: x - point for evaluation + B - (output) where to store B_i(x) values + the length of this vector is + n = nbreak + k - 2 = l + k - 1 = w->n + w - bspline workspace + +Return: success or error + +Notes: The w->knots vector must be initialized prior to calling + this function (see gsl_bspline_knots()) +*/ + +int +gsl_bspline_eval (const double x, gsl_vector * B, gsl_bspline_workspace * w) +{ + if (B->size != w->n) + { + GSL_ERROR ("vector B not of length n", GSL_EBADLEN); + } + else + { + size_t i; /* looping */ + size_t istart; /* first non-zero spline for x */ + size_t iend; /* last non-zero spline for x, knot for x */ + int error; /* error handling */ + + /* find all non-zero B_i(x) values */ + error = gsl_bspline_eval_nonzero (x, w->B, &istart, &iend, w); + if (error) + return error; + + /* store values in appropriate part of given vector */ + for (i = 0; i < istart; i++) + gsl_vector_set (B, i, 0.0); + + for (i = istart; i <= iend; i++) + gsl_vector_set (B, i, gsl_vector_get (w->B, i - istart)); + + for (i = iend + 1; i < w->n; i++) + gsl_vector_set (B, i, 0.0); + + return GSL_SUCCESS; + } +} /* gsl_bspline_eval() */ + +/* +gsl_bspline_eval_nonzero() + Evaluate all non-zero B-spline functions at point x. +These are the B_i(x) for i in [istart, iend]. +Always B_i(x) = 0 for i < istart and for i > iend. + +Inputs: x - point at which to evaluate splines + Bk - (output) where to store B-spline values (length k) + istart - (output) B-spline function index of + first non-zero basis for given x + iend - (output) B-spline function index of + last non-zero basis for given x. + This is also the knot index corresponding to x. + w - bspline workspace + +Return: success or error + +Notes: 1) the w->knots vector must be initialized before calling + this function + + 2) On output, B contains + + [B_{istart,k}, B_{istart+1,k}, + ..., B_{iend-1,k}, B_{iend,k}] + + evaluated at the given x. +*/ + +int +gsl_bspline_eval_nonzero (const double x, gsl_vector * Bk, size_t * istart, + size_t * iend, gsl_bspline_workspace * w) +{ + if (Bk->size != w->k) + { + GSL_ERROR ("Bk vector length does not match order k", GSL_EBADLEN); + } + else + { + size_t i; /* spline index */ + size_t j; /* looping */ + int flag = 0; /* interval search flag */ + int error = 0; /* error flag */ + + i = bspline_find_interval (x, &flag, w); + error = bspline_process_interval_for_eval (x, &i, flag, w); + if (error) + return error; + + *istart = i - w->k + 1; + *iend = i; + + bspline_pppack_bsplvb (w->knots, w->k, 1, x, *iend, &j, w->deltal, + w->deltar, Bk); + + return GSL_SUCCESS; + } +} /* gsl_bspline_eval_nonzero() */ + +/* +gsl_bspline_deriv_eval() + Evaluate d^j/dx^j B_i(x) for all i, 0 <= j <= nderiv. +This is a wrapper function for gsl_bspline_deriv_eval_nonzero() +which formats the output in a nice way. + +Inputs: x - point for evaluation + nderiv - number of derivatives to compute, inclusive. + dB - (output) where to store d^j/dx^j B_i(x) + values. the size of this matrix is + (n = nbreak + k - 2 = l + k - 1 = w->n) + by (nderiv + 1) + w - bspline derivative workspace + +Return: success or error + +Notes: 1) The w->knots vector must be initialized prior to calling + this function (see gsl_bspline_knots()) + + 2) based on PPPACK's bsplvd +*/ + +int +gsl_bspline_deriv_eval (const double x, const size_t nderiv, + gsl_matrix * dB, gsl_bspline_workspace * w) +{ + if (dB->size1 != w->n) + { + GSL_ERROR ("dB matrix first dimension not of length n", GSL_EBADLEN); + } + else if (dB->size2 < nderiv + 1) + { + GSL_ERROR + ("dB matrix second dimension must be at least length nderiv+1", + GSL_EBADLEN); + } + else + { + size_t i; /* looping */ + size_t j; /* looping */ + size_t istart; /* first non-zero spline for x */ + size_t iend; /* last non-zero spline for x, knot for x */ + int error; /* error handling */ + + /* find all non-zero d^j/dx^j B_i(x) values */ + error = + gsl_bspline_deriv_eval_nonzero (x, nderiv, w->dB, &istart, &iend, w); + if (error) + return error; + + /* store values in appropriate part of given matrix */ + for (j = 0; j <= nderiv; j++) + { + for (i = 0; i < istart; i++) + gsl_matrix_set (dB, i, j, 0.0); + + for (i = istart; i <= iend; i++) + gsl_matrix_set (dB, i, j, gsl_matrix_get (w->dB, i - istart, j)); + + for (i = iend + 1; i < w->n; i++) + gsl_matrix_set (dB, i, j, 0.0); + } + + return GSL_SUCCESS; + } +} /* gsl_bspline_deriv_eval() */ + +/* +gsl_bspline_deriv_eval_nonzero() + At point x evaluate all requested, non-zero B-spline function +derivatives and store them in dB. These are the +d^j/dx^j B_i(x) with i in [istart, iend] and j in [0, nderiv]. +Always d^j/dx^j B_i(x) = 0 for i < istart and for i > iend. + +Inputs: x - point at which to evaluate splines + nderiv - number of derivatives to request, inclusive + dB - (output) where to store dB-spline derivatives + (size k by nderiv + 1) + istart - (output) B-spline function index of + first non-zero basis for given x + iend - (output) B-spline function index of + last non-zero basis for given x. + This is also the knot index corresponding to x. + w - bspline derivative workspace + +Return: success or error + +Notes: 1) the w->knots vector must be initialized before calling + this function + + 2) On output, dB contains + + [[B_{istart, k}, ..., d^nderiv/dx^nderiv B_{istart ,k}], + [B_{istart+1,k}, ..., d^nderiv/dx^nderiv B_{istart+1,k}], + ... + [B_{iend-1, k}, ..., d^nderiv/dx^nderiv B_{iend-1, k}], + [B_{iend, k}, ..., d^nderiv/dx^nderiv B_{iend, k}]] + + evaluated at x. B_{istart, k} is stored in dB(0,0). + Each additional column contains an additional derivative. + + 3) Note that the zero-th column of the result contains the + 0th derivative, which is simply a function evaluation. + + 4) based on PPPACK's bsplvd +*/ + +int +gsl_bspline_deriv_eval_nonzero (const double x, const size_t nderiv, + gsl_matrix * dB, size_t * istart, + size_t * iend, gsl_bspline_workspace * w) +{ + if (dB->size1 != w->k) + { + GSL_ERROR ("dB matrix first dimension not of length k", GSL_EBADLEN); + } + else if (dB->size2 < nderiv + 1) + { + GSL_ERROR + ("dB matrix second dimension must be at least length nderiv+1", + GSL_EBADLEN); + } + else + { + size_t i; /* spline index */ + size_t j; /* looping */ + int flag = 0; /* interval search flag */ + int error = 0; /* error flag */ + size_t min_nderivk; + + i = bspline_find_interval (x, &flag, w); + error = bspline_process_interval_for_eval (x, &i, flag, w); + if (error) + return error; + + *istart = i - w->k + 1; + *iend = i; + + bspline_pppack_bsplvd (w->knots, w->k, x, *iend, + w->deltal, w->deltar, w->A, dB, nderiv); + + /* An order k b-spline has at most k-1 nonzero derivatives + so we need to zero all requested higher order derivatives */ + min_nderivk = GSL_MIN_INT (nderiv, w->k - 1); + for (j = min_nderivk + 1; j <= nderiv; j++) + { + for (i = 0; i < w->k; i++) + gsl_matrix_set (dB, i, j, 0.0); + } + + return GSL_SUCCESS; + } +} /* gsl_bspline_deriv_eval_nonzero() */ + +/**************************************** + * INTERNAL ROUTINES * + ****************************************/ + +/* +bspline_find_interval() + Find knot interval such that t_i <= x < t_{i + 1} +where the t_i are knot values. + +Inputs: x - x value + flag - (output) error flag + w - bspline workspace + +Return: i (index in w->knots corresponding to left limit of interval) + +Notes: The error conditions are reported as follows: + + Condition Return value Flag + --------- ------------ ---- + x < t_0 0 -1 + t_i <= x < t_{i+1} i 0 + t_i < x = t_{i+1} = t_{n+k-1} i 0 + t_{n+k-1} < x l+k-1 +1 +*/ + +static inline size_t +bspline_find_interval (const double x, int *flag, gsl_bspline_workspace * w) +{ + size_t i; + + if (x < gsl_vector_get (w->knots, 0)) + { + *flag = -1; + return 0; + } + + /* find i such that t_i <= x < t_{i+1} */ + for (i = w->k - 1; i < w->k + w->l - 1; i++) + { + const double ti = gsl_vector_get (w->knots, i); + const double tip1 = gsl_vector_get (w->knots, i + 1); + + if (tip1 < ti) + { + GSL_ERROR ("knots vector is not increasing", GSL_EINVAL); + } + + if (ti <= x && x < tip1) + break; + + if (ti < x && x == tip1 && tip1 == gsl_vector_get (w->knots, w->k + w->l + - 1)) + break; + } + + if (i == w->k + w->l - 1) + *flag = 1; + else + *flag = 0; + + return i; +} /* bspline_find_interval() */ + +/* +bspline_process_interval_for_eval() + Consumes an x location, left knot from bspline_find_interval, flag +from bspline_find_interval, and a workspace. Checks that x lies within +the splines' knots, enforces some endpoint continuity requirements, and +avoids divide by zero errors in the underlying bspline_pppack_* functions. +*/ +static inline int +bspline_process_interval_for_eval (const double x, size_t * i, const int flag, + gsl_bspline_workspace * w) +{ + if (flag == -1) + { + GSL_ERROR ("x outside of knot interval", GSL_EINVAL); + } + else if (flag == 1) + { + if (x <= gsl_vector_get (w->knots, *i) + GSL_DBL_EPSILON) + { + *i -= 1; + } + else + { + GSL_ERROR ("x outside of knot interval", GSL_EINVAL); + } + } + + if (gsl_vector_get (w->knots, *i) == gsl_vector_get (w->knots, *i + 1)) + { + GSL_ERROR ("knot(i) = knot(i+1) will result in division by zero", + GSL_EINVAL); + } + + return GSL_SUCCESS; +} /* bspline_process_interval_for_eval */ + +/******************************************************************** + * PPPACK ROUTINES + * + * The routines herein deliberately avoid using the bspline workspace, + * choosing instead to pass all work areas explicitly. This allows + * others to more easily adapt these routines to low memory or + * parallel scenarios. + ********************************************************************/ + +/* +bspline_pppack_bsplvb() + calculates the value of all possibly nonzero b-splines at x of order +jout = max( jhigh , (j+1)*(index-1) ) with knot sequence t. + +Parameters: + t - knot sequence, of length left + jout , assumed to be + nondecreasing. assumption t(left).lt.t(left + 1). + division by zero will result if t(left) = t(left+1) + jhigh - + index - integers which determine the order jout = max(jhigh, + (j+1)*(index-1)) of the b-splines whose values at x + are to be returned. index is used to avoid + recalculations when several columns of the triangular + array of b-spline values are needed (e.g., in bsplpp + or in bsplvd ). precisely, + + if index = 1 , + the calculation starts from scratch and the entire + triangular array of b-spline values of orders + 1,2,...,jhigh is generated order by order , i.e., + column by column . + + if index = 2 , + only the b-spline values of order j+1, j+2, ..., jout + are generated, the assumption being that biatx, j, + deltal, deltar are, on entry, as they were on exit + at the previous call. + + in particular, if jhigh = 0, then jout = j+1, i.e., + just the next column of b-spline values is generated. + x - the point at which the b-splines are to be evaluated. + left - an integer chosen (usually) so that + t(left) .le. x .le. t(left+1). + j - (output) a working scalar for indexing + deltal - (output) a working area which must be of length at least jout + deltar - (output) a working area which must be of length at least jout + biatx - (output) array of length jout, with biatx(i) + containing the value at x of the polynomial of order + jout which agrees with the b-spline b(left-jout+i,jout,t) + on the interval (t(left), t(left+1)) . + +Method: + the recurrence relation + + x - t(i) t(i+j+1) - x + b(i,j+1)(x) = -----------b(i,j)(x) + ---------------b(i+1,j)(x) + t(i+j)-t(i) t(i+j+1)-t(i+1) + + is used (repeatedly) to generate the (j+1)-vector b(left-j,j+1)(x), + ...,b(left,j+1)(x) from the j-vector b(left-j+1,j)(x),..., + b(left,j)(x), storing the new values in biatx over the old. the + facts that + + b(i,1) = 1 if t(i) .le. x .lt. t(i+1) + + and that + + b(i,j)(x) = 0 unless t(i) .le. x .lt. t(i+j) + + are used. the particular organization of the calculations follows + algorithm (8) in chapter x of [1]. + +Notes: + + (1) This is a direct translation of PPPACK's bsplvb routine with + j, deltal, deltar rewritten as input parameters and + utilizing zero-based indexing. + + (2) This routine contains no error checking. Please use routines + like gsl_bspline_eval(). +*/ + +static void +bspline_pppack_bsplvb (const gsl_vector * t, + const size_t jhigh, + const size_t index, + const double x, + const size_t left, + size_t * j, + gsl_vector * deltal, + gsl_vector * deltar, gsl_vector * biatx) +{ + size_t i; /* looping */ + double saved; + double term; + + if (index == 1) + { + *j = 0; + gsl_vector_set (biatx, 0, 1.0); + } + + for ( /* NOP */ ; *j < jhigh - 1; *j += 1) + { + gsl_vector_set (deltar, *j, gsl_vector_get (t, left + *j + 1) - x); + gsl_vector_set (deltal, *j, x - gsl_vector_get (t, left - *j)); + + saved = 0.0; + + for (i = 0; i <= *j; i++) + { + term = gsl_vector_get (biatx, i) / (gsl_vector_get (deltar, i) + + gsl_vector_get (deltal, + *j - i)); + + gsl_vector_set (biatx, i, + saved + gsl_vector_get (deltar, i) * term); + + saved = gsl_vector_get (deltal, *j - i) * term; + } + + gsl_vector_set (biatx, *j + 1, saved); + } + + return; +} /* gsl_bspline_pppack_bsplvb */ + +/* +bspline_pppack_bsplvd() + calculates value and derivs of all b-splines which do not vanish at x + +Parameters: + t - the knot array, of length left+k (at least) + k - the order of the b-splines to be evaluated + x - the point at which these values are sought + left - an integer indicating the left endpoint of the interval + of interest. the k b-splines whose support contains the + interval (t(left), t(left+1)) are to be considered. + it is assumed that t(left) .lt. t(left+1) + division by zero will result otherwise (in bsplvb). + also, the output is as advertised only if + t(left) .le. x .le. t(left+1) . + deltal - a working area which must be of length at least k + deltar - a working area which must be of length at least k + a - an array of order (k,k), to contain b-coeffs of the + derivatives of a certain order of the k b-splines + of interest. + dbiatx - an array of order (k,nderiv). its entry (i,m) contains + value of (m)th derivative of (left-k+i)-th b-spline + of order k for knot sequence t, i=1,...,k, m=0,...,nderiv. + nderiv - an integer indicating that values of b-splines and + their derivatives up to AND INCLUDING the nderiv-th + are asked for. (nderiv is replaced internally by the + integer mhigh in (1,k) closest to it.) + +Method: + values at x of all the relevant b-splines of order k,k-1,..., k+1-nderiv + are generated via bsplvb and stored temporarily in dbiatx. then, the + b-coeffs of the required derivatives of the b-splines of interest are + generated by differencing, each from the preceeding one of lower order, + and combined with the values of b-splines of corresponding order in + dbiatx to produce the desired values . + +Notes: + + (1) This is a direct translation of PPPACK's bsplvd routine with + deltal, deltar rewritten as input parameters (to later feed them + to bspline_pppack_bsplvb) and utilizing zero-based indexing. + + (2) This routine contains no error checking. +*/ + +static void +bspline_pppack_bsplvd (const gsl_vector * t, + const size_t k, + const double x, + const size_t left, + gsl_vector * deltal, + gsl_vector * deltar, + gsl_matrix * a, + gsl_matrix * dbiatx, const size_t nderiv) +{ + int i, ideriv, il, j, jlow, jp1mid, kmm, ldummy, m, mhigh; + double factor, fkmm, sum; + + size_t bsplvb_j; + gsl_vector_view dbcol = gsl_matrix_column (dbiatx, 0); + + mhigh = GSL_MIN_INT (nderiv, k - 1); + bspline_pppack_bsplvb (t, k - mhigh, 1, x, left, &bsplvb_j, deltal, deltar, + &dbcol.vector); + if (mhigh > 0) + { + /* the first column of dbiatx always contains the b-spline + values for the current order. these are stored in column + k-current order before bsplvb is called to put values + for the next higher order on top of it. */ + ideriv = mhigh; + for (m = 1; m <= mhigh; m++) + { + for (j = ideriv, jp1mid = 0; j < (int) k; j++, jp1mid++) + { + gsl_matrix_set (dbiatx, j, ideriv, + gsl_matrix_get (dbiatx, jp1mid, 0)); + } + ideriv--; + bspline_pppack_bsplvb (t, k - ideriv, 2, x, left, &bsplvb_j, deltal, + deltar, &dbcol.vector); + } + + /* at this point, b(left-k+i, k+1-j)(x) is in dbiatx(i,j) + for i=j,...,k-1 and j=0,...,mhigh. in particular, the + first column of dbiatx is already in final form. to obtain + corresponding derivatives of b-splines in subsequent columns, + generate their b-repr. by differencing, then evaluate at x. */ + jlow = 0; + for (i = 0; i < (int) k; i++) + { + for (j = jlow; j < (int) k; j++) + { + gsl_matrix_set (a, j, i, 0.0); + } + jlow = i; + gsl_matrix_set (a, i, i, 1.0); + } + + /* at this point, a(.,j) contains the b-coeffs for the j-th of the + k b-splines of interest here. */ + for (m = 1; m <= mhigh; m++) + { + kmm = k - m; + fkmm = (float) kmm; + il = left; + i = k - 1; + + /* for j=1,...,k, construct b-coeffs of (m)th derivative + of b-splines from those for preceding derivative by + differencing and store again in a(.,j) . the fact that + a(i,j) = 0 for i .lt. j is used. */ + for (ldummy = 0; ldummy < kmm; ldummy++) + { + factor = + fkmm / (gsl_vector_get (t, il + kmm) - + gsl_vector_get (t, il)); + /* the assumption that t(left).lt.t(left+1) makes + denominator in factor nonzero. */ + for (j = 0; j <= i; j++) + { + gsl_matrix_set (a, i, j, factor * (gsl_matrix_get (a, i, j) + - gsl_matrix_get (a, + i - 1, + j))); + } + il--; + i--; + } + + /* for i=1,...,k, combine b-coeffs a(.,i) with b-spline values + stored in dbiatx(.,m) to get value of (m)th derivative + of i-th b-spline (of interest here) at x, and store in + dbiatx(i,m). storage of this value over the value of a + b-spline of order m there is safe since the remaining + b-spline derivatives of the same order do not use this + value due to the fact that a(j,i) = 0 for j .lt. i . */ + for (i = 0; i < (int) k; i++) + { + sum = 0; + jlow = GSL_MAX_INT (i, m); + for (j = jlow; j < (int) k; j++) + { + sum += + gsl_matrix_get (a, j, i) * gsl_matrix_get (dbiatx, j, m); + } + gsl_matrix_set (dbiatx, i, m, sum); + } + } + } + + return; + +} /* bspline_pppack_bsplvd */ diff --git a/gsl-2.5/bspline/bspline.h b/gsl-2.5/bspline/bspline.h new file mode 100644 index 00000000..f80e03e8 --- /dev/null +++ b/gsl-2.5/bspline/bspline.h @@ -0,0 +1,26 @@ +static inline size_t +bspline_find_interval (const double x, int *flag, gsl_bspline_workspace * w); + +static inline int +bspline_process_interval_for_eval (const double x, size_t * i, int flag, + gsl_bspline_workspace * w); + +static void +bspline_pppack_bsplvb (const gsl_vector * t, + const size_t jhigh, + const size_t index, + const double x, + const size_t left, + size_t * j, + gsl_vector * deltal, + gsl_vector * deltar, gsl_vector * biatx); + +static void +bspline_pppack_bsplvd (const gsl_vector * t, + const size_t k, + const double x, + const size_t left, + gsl_vector * deltal, + gsl_vector * deltar, + gsl_matrix * a, + gsl_matrix * dbiatx, const size_t nderiv); diff --git a/gsl-2.5/bspline/bspline.lo b/gsl-2.5/bspline/bspline.lo new file mode 100644 index 00000000..e2be9302 --- /dev/null +++ b/gsl-2.5/bspline/bspline.lo @@ -0,0 +1,12 @@ +# bspline.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/bspline.o' + +# Name of the non-PIC object +non_pic_object='bspline.o' + diff --git a/gsl-2.5/bspline/greville.c b/gsl-2.5/bspline/greville.c new file mode 100644 index 00000000..585a38e9 --- /dev/null +++ b/gsl-2.5/bspline/greville.c @@ -0,0 +1,166 @@ +/* bspline/greville.c + * + * Copyright (C) 2006, 2007, 2008, 2009 Patrick Alken + * Copyright (C) 2008, 2011 Rhys Ulerich + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include +#include + +/* Return the location of the i-th Greville abscissa */ +double +gsl_bspline_greville_abscissa (size_t i, gsl_bspline_workspace *w) +{ + const size_t stride = w->knots->stride; + size_t km1 = w->km1; + double * data = w->knots->data + (i+1)*stride; +#if GSL_RANGE_CHECK + if (GSL_RANGE_COND(i >= gsl_bspline_ncoeffs(w))) + { + GSL_ERROR_VAL ("Greville abscissa index out of range", GSL_EINVAL, 0); + } +#endif + + if (km1 == 0) + { + /* Return interval midpoints in degenerate k = 1 case*/ + km1 = 2; + data -= stride; + } + + return gsl_stats_mean(data, stride, km1); +} + +int +gsl_bspline_knots_greville (const gsl_vector *abscissae, + gsl_bspline_workspace *w, + double *abserr) +{ + /* Limited function: see https://savannah.gnu.org/bugs/index.php?34361 */ + + int s; + + /* Check incoming arguments satisfy mandatory algorithmic assumptions */ + if (w->k < 2) + GSL_ERROR ("w->k must be at least 2", GSL_EINVAL); + else if (abscissae->size < 2) + GSL_ERROR ("abscissae->size must be at least 2", GSL_EINVAL); + else if (w->nbreak != abscissae->size - w->k + 2) + GSL_ERROR ("w->nbreak must equal abscissae->size - w->k + 2", GSL_EINVAL); + + if (w->nbreak == 2) + { + /* No flexibility in abscissae values possible in this degenerate case */ + s = gsl_bspline_knots_uniform ( + gsl_vector_get (abscissae, 0), + gsl_vector_get (abscissae, abscissae->size - 1), w); + } + else + { + double * storage; + gsl_matrix_view A; + gsl_vector_view tau, b, x, r; + size_t i, j; + + /* Constants derived from the B-spline workspace and abscissae details */ + const size_t km2 = w->k - 2; + const size_t M = abscissae->size - 2; + const size_t N = w->nbreak - 2; + const double invkm1 = 1.0 / w->km1; + + /* Allocate working storage and prepare multiple, zero-filled views */ + storage = (double *) calloc (M*N + 2*N + 2*M, sizeof (double)); + if (storage == 0) + GSL_ERROR ("failed to allocate working storage", GSL_ENOMEM); + A = gsl_matrix_view_array (storage, M, N); + tau = gsl_vector_view_array (storage + M*N, N); + b = gsl_vector_view_array (storage + M*N + N, M); + x = gsl_vector_view_array (storage + M*N + N + M, N); + r = gsl_vector_view_array (storage + M*N + N + M + N, M); + + /* Build matrix from interior breakpoints to interior Greville abscissae. + * For example, when w->k = 4 and w->nbreak = 7 the matrix is + * [ 1, 0, 0, 0, 0; + * 2/3, 1/3, 0, 0, 0; + * 1/3, 1/3, 1/3, 0, 0; + * 0, 1/3, 1/3, 1/3, 0; + * 0, 0, 1/3, 1/3, 1/3; + * 0, 0, 0, 1/3, 2/3; + * 0, 0, 0, 0, 1 ] + * but only center formed as first/last breakpoint is known. + */ + for (j = 0; j < N; ++j) + for (i = 0; i <= km2; ++i) + gsl_matrix_set (&A.matrix, i+j, j, invkm1); + + /* Copy interior collocation points from abscissae into b */ + for (i = 0; i < M; ++i) + gsl_vector_set (&b.vector, i, gsl_vector_get (abscissae, i+1)); + + /* Adjust b to account for constraint columns not stored in A */ + for (i = 0; i < km2; ++i) + { + double * const v = gsl_vector_ptr (&b.vector, i); + *v -= (1 - (i+1)*invkm1) * gsl_vector_get (abscissae, 0); + } + for (i = 0; i < km2; ++i) + { + double * const v = gsl_vector_ptr (&b.vector, M - km2 + i); + *v -= (i+1)*invkm1 * gsl_vector_get (abscissae, abscissae->size - 1); + } + + /* Perform linear least squares to determine interior breakpoints */ + s = gsl_linalg_QR_decomp (&A.matrix, &tau.vector) + || gsl_linalg_QR_lssolve (&A.matrix, &tau.vector, + &b.vector, &x.vector, &r.vector); + if (s) + { + free (storage); + return s; + } + + /* "Expand" solution x by adding known first and last breakpoints. */ + x = gsl_vector_view_array_with_stride ( + gsl_vector_ptr (&x.vector, 0) - x.vector.stride, + x.vector.stride, x.vector.size + 2); + gsl_vector_set (&x.vector, 0, gsl_vector_get (abscissae, 0)); + gsl_vector_set (&x.vector, x.vector.size - 1, + gsl_vector_get (abscissae, abscissae->size - 1)); + + /* Finally, initialize workspace knots using the now-known breakpoints */ + s = gsl_bspline_knots (&x.vector, w); + free (storage); + } + + /* Sum absolute errors in the resulting vs requested interior abscissae */ + /* Provided as a fit quality metric which may be monitored by callers */ + if (!s && abserr) + { + size_t i; + *abserr = 0; + for (i = 1; i < abscissae->size - 1; ++i) + *abserr += fabs ( gsl_bspline_greville_abscissa (i, w) + - gsl_vector_get (abscissae, i) ); + } + + return s; +} diff --git a/gsl-2.5/bspline/greville.lo b/gsl-2.5/bspline/greville.lo new file mode 100644 index 00000000..32ce0902 --- /dev/null +++ b/gsl-2.5/bspline/greville.lo @@ -0,0 +1,12 @@ +# greville.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/greville.o' + +# Name of the non-PIC object +non_pic_object='greville.o' + diff --git a/gsl-2.5/bspline/gsl_bspline.h b/gsl-2.5/bspline/gsl_bspline.h new file mode 100644 index 00000000..878fe498 --- /dev/null +++ b/gsl-2.5/bspline/gsl_bspline.h @@ -0,0 +1,108 @@ +/* bspline/gsl_bspline.h + * + * Copyright (C) 2006 Patrick Alken + * Copyright (C) 2008 Rhys Ulerich + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_BSPLINE_H__ +#define __GSL_BSPLINE_H__ + +#include +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +typedef struct +{ + size_t k; /* spline order */ + size_t km1; /* k - 1 (polynomial order) */ + size_t l; /* number of polynomial pieces on interval */ + size_t nbreak; /* number of breakpoints (l + 1) */ + size_t n; /* number of bspline basis functions (l + k - 1) */ + + gsl_vector *knots; /* knots vector */ + gsl_vector *deltal; /* left delta */ + gsl_vector *deltar; /* right delta */ + gsl_vector *B; /* temporary spline results */ + + /* bspline derivative parameters */ + gsl_matrix *A; /* work matrix */ + gsl_matrix *dB; /* temporary derivative results */ +} gsl_bspline_workspace; + +gsl_bspline_workspace * +gsl_bspline_alloc(const size_t k, const size_t nbreak); + +void gsl_bspline_free(gsl_bspline_workspace *w); + +size_t gsl_bspline_ncoeffs(gsl_bspline_workspace * w); +size_t gsl_bspline_order(gsl_bspline_workspace * w); +size_t gsl_bspline_nbreak(gsl_bspline_workspace * w); +double gsl_bspline_breakpoint(size_t i, gsl_bspline_workspace * w); +double gsl_bspline_greville_abscissa(size_t i, gsl_bspline_workspace *w); + +int +gsl_bspline_knots(const gsl_vector *breakpts, gsl_bspline_workspace *w); + +int gsl_bspline_knots_uniform(const double a, const double b, + gsl_bspline_workspace *w); + +int +gsl_bspline_knots_greville(const gsl_vector *abscissae, + gsl_bspline_workspace *w, + double *abserr); + +int +gsl_bspline_eval(const double x, gsl_vector *B, + gsl_bspline_workspace *w); + +int +gsl_bspline_eval_nonzero(const double x, + gsl_vector *Bk, + size_t *istart, + size_t *iend, + gsl_bspline_workspace *w); + +int +gsl_bspline_deriv_eval(const double x, + const size_t nderiv, + gsl_matrix *dB, + gsl_bspline_workspace *w); + +int +gsl_bspline_deriv_eval_nonzero(const double x, + const size_t nderiv, + gsl_matrix *dB, + size_t *istart, + size_t *iend, + gsl_bspline_workspace *w); + +__END_DECLS + +#endif /* __GSL_BSPLINE_H__ */ diff --git a/gsl-2.5/bspline/libgslbspline.la b/gsl-2.5/bspline/libgslbspline.la new file mode 100644 index 00000000..dc69c5b6 --- /dev/null +++ b/gsl-2.5/bspline/libgslbspline.la @@ -0,0 +1,41 @@ +# libgslbspline.la - a libtool library file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='' + +# Names of this library. +library_names='' + +# The name of the static archive. +old_library='libgslbspline.a' + +# Linker flags that can not go in dependency_libs. +inherited_linker_flags='' + +# Libraries that this one depends upon. +dependency_libs=' -lm' + +# Names of additional weak libraries provided by this library +weak_library_names='' + +# Version information for libgslbspline. +current= +age= +revision= + +# Is this an already installed library? +installed=no + +# Should we warn about portability when linking against -modules? +shouldnotlink=no + +# Files to dlopen/dlpreopen +dlopen='' +dlpreopen='' + +# Directory that this library needs to be installed in: +libdir='' diff --git a/gsl-2.5/bspline/test b/gsl-2.5/bspline/test new file mode 100755 index 00000000..b3ed04ab --- /dev/null +++ b/gsl-2.5/bspline/test @@ -0,0 +1,228 @@ +#! /bin/sh + +# test - temporary wrapper script for .libs/test +# Generated by libtool (GNU libtool) 2.4.2 +# +# The test program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s/\([`"$\\]\)/\\\1/g' + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command="(cd /home/groups/kipac/chto/package/gsl/gsl-2.5/bspline; LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LIBRARY_PATH; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; LD_LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/fftw/include:/home/users/chto/lib/fftw/lib:/home/users/chto/lib/healpix/lib:/home/users/chto/lib/namaster/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/include:/home/users/chto/cpp/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LD_LIBRARY_PATH; PATH=/share/software/user/open/curl/7.54.0/bin:/share/software/user/open/libressl/2.5.3/bin:/home/users/chto/lib/cfitsio:/home/users/chto/lib/cfitsio/include:/home/users/chto/lib:/home/users/chto/bin/bin:/home/users/chto/bin:/home/users/chto/.texlive/bin/x86_64-linux:/home/groups/kipac/chto/anaconda2/envs/newenv3/bin:/home/users/chto/.local/bin/include:/home/users/chto/.local/bin/lib:/home/users/chto/.local/bin:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/bin64:/share/software/user/open/fftw/3.3.6/bin:/home/groups/kipac/chto/anaconda2/condabin:/share/software/user/restricted/ifort/2019/bin:/share/software/user/open/gsl/2.3/bin:/share/software/user/srcc/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/dell/srvadmin/bin:/opt/dell/srvadmin/iSM/bin:/home/users/chto/bin; export PATH; gcc -g -O2 -o \$progdir/\$file test.o ./.libs/libgslbspline.a ../linalg/.libs/libgsllinalg.a ../permutation/.libs/libgslpermutation.a ../blas/.libs/libgslblas.a ../matrix/.libs/libgslmatrix.a ../vector/.libs/libgslvector.a ../block/.libs/libgslblock.a ../complex/.libs/libgslcomplex.a ../cblas/.libs/libgslcblas.so ../ieee-utils/.libs/libgslieeeutils.a ../err/.libs/libgslerr.a ../test/.libs/libgsltest.a ../sys/.libs/libgslsys.a ../utils/.libs/libutils.a ../statistics/.libs/libgslstatistics.a -lm -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/cblas/.libs -Wl,-rpath -Wl,/usr/local/lib)" + +# This environment variable determines our operation mode. +if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then + # install mode needs the following variables: + generated_by_libtool_version='2.4.2' + notinst_deplibs=' ../cblas/libgslcblas.la' +else + # When we are sourced in execute mode, $file and $ECHO are already set. + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + file="$0" + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + ECHO="printf %s\\n" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ which is used only on +# windows platforms, and (c) all begin with the string --lt- +# (application programs are unlikely to have options which match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's ../libtool value, followed by no. +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=$0 + shift + for lt_opt + do + case "$lt_opt" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%/[^/]*$%%'` + test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=. + lt_dump_F=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%^.*/%%'` + cat "$lt_dump_D/$lt_dump_F" + exit 0 + ;; + --lt-*) + $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n "$lt_option_debug"; then + echo "test:test:${LINENO}: libtool wrapper (GNU libtool) 2.4.2" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + $ECHO "test:test:${LINENO}: newargv[$lt_dump_args_N]: $lt_arg" + lt_dump_args_N=`expr $lt_dump_args_N + 1` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ + + if test -n "$lt_option_debug"; then + $ECHO "test:test:${LINENO}: newargv[0]: $progdir/$program" 1>&2 + func_lt_dump_args ${1+"$@"} 1>&2 + fi + exec "$progdir/$program" ${1+"$@"} + + $ECHO "$0: cannot exec $program $*" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from $@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case " $* " in + *\ --lt-*) + for lt_wr_arg + do + case $lt_wr_arg in + --lt-*) ;; + *) set x "$@" "$lt_wr_arg"; shift;; + esac + shift + done ;; + esac + func_exec_program_core ${1+"$@"} +} + + # Parse options + func_parse_lt_options "$0" ${1+"$@"} + + # Find the directory that this script lives in. + thisdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + test "x$thisdir" = "x$file" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=`ls -ld "$file" | /usr/bin/sed -n 's/.*-> //p'` + while test -n "$file"; do + destdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + + # If there was a directory component, then change thisdir. + if test "x$destdir" != "x$file"; then + case "$destdir" in + [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;; + *) thisdir="$thisdir/$destdir" ;; + esac + fi + + file=`$ECHO "$file" | /usr/bin/sed 's%^.*/%%'` + file=`ls -ld "$thisdir/$file" | /usr/bin/sed -n 's/.*-> //p'` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no + if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then + # special case for '.' + if test "$thisdir" = "."; then + thisdir=`pwd` + fi + # remove .libs from thisdir + case "$thisdir" in + *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /usr/bin/sed 's%[\\/][^\\/]*$%%'` ;; + .libs ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=`cd "$thisdir" && pwd` + test -n "$absdir" && thisdir="$absdir" + + program=lt-'test' + progdir="$thisdir/.libs" + + if test ! -f "$progdir/$program" || + { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /usr/bin/sed 1q`; \ + test "X$file" != "X$progdir/$program"; }; then + + file="$$-$program" + + if test ! -d "$progdir"; then + mkdir "$progdir" + else + rm -f "$progdir/$file" + fi + + # relink executable if necessary + if test -n "$relink_command"; then + if relink_command_output=`eval $relink_command 2>&1`; then : + else + printf %s\n "$relink_command_output" >&2 + rm -f "$progdir/$file" + exit 1 + fi + fi + + mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null || + { rm -f "$progdir/$program"; + mv -f "$progdir/$file" "$progdir/$program"; } + rm -f "$progdir/$file" + fi + + if test -f "$progdir/$program"; then + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + # Run the actual program with our arguments. + func_exec_program ${1+"$@"} + fi + else + # The program doesn't exist. + $ECHO "$0: error: \`$progdir/$program' does not exist" 1>&2 + $ECHO "This script is just a wrapper for $program." 1>&2 + $ECHO "See the libtool documentation for more information." 1>&2 + exit 1 + fi +fi diff --git a/gsl-2.5/bspline/test-suite.log b/gsl-2.5/bspline/test-suite.log new file mode 100644 index 00000000..d07acf39 --- /dev/null +++ b/gsl-2.5/bspline/test-suite.log @@ -0,0 +1,14 @@ +===================================== + gsl 2.5: bspline/test-suite.log +===================================== + +# TOTAL: 1 +# PASS: 1 +# SKIP: 0 +# XFAIL: 0 +# FAIL: 0 +# XPASS: 0 +# ERROR: 0 + +.. contents:: :depth: 2 + diff --git a/gsl-2.5/bspline/test.c b/gsl-2.5/bspline/test.c new file mode 100644 index 00000000..608a628c --- /dev/null +++ b/gsl-2.5/bspline/test.c @@ -0,0 +1,518 @@ +/* bspline/test.c + * + * Copyright (C) 2006, 2007, 2009 Brian Gough + * Copyright (C) 2008, 2011 Rhys Ulerich + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include + +void +test_bspline(gsl_bspline_workspace * bw) +{ + gsl_vector *B; + gsl_matrix *dB; + size_t i, j; + size_t n = 100; + size_t ncoeffs = gsl_bspline_ncoeffs(bw); + size_t order = gsl_bspline_order(bw); + size_t nbreak = gsl_bspline_nbreak(bw); + double a = gsl_bspline_breakpoint(0, bw); + double b = gsl_bspline_breakpoint(nbreak - 1, bw); + + B = gsl_vector_alloc(ncoeffs); + dB = gsl_matrix_alloc(ncoeffs, 1); + + /* Ensure B-splines form a partition of unity */ + for (i = 0; i < n; i++) + { + double xi = a + (b - a) * (i / (n - 1.0)); + double sum = 0; + gsl_bspline_eval(xi, B, bw); + + for (j = 0; j < ncoeffs; j++) + { + double Bj = gsl_vector_get(B, j); + int s = (Bj < 0 || Bj > 1); + gsl_test(s, + "basis-spline coefficient %u is in range [0,1] for x=%g", + j, xi); + sum += Bj; + } + + gsl_test_rel(sum, 1.0, order * GSL_DBL_EPSILON, + "basis-spline order %u is normalized for x=%g", order, + xi); + } + + /* Ensure B-splines 0th derivatives agree with regular evaluation */ + for (i = 0; i < n; i++) + { + double xi = a + (b - a) * (i / (n - 1.0)); + gsl_bspline_eval(xi, B, bw); + gsl_bspline_deriv_eval(xi, 0, dB, bw); + + for (j = 0; j < ncoeffs; j++) + { + gsl_test_abs(gsl_matrix_get(dB, j, 0), gsl_vector_get(B, j), + GSL_DBL_EPSILON, + "b-spline order %d basis #%d evaluation and 0th derivative consistent for x=%g", + order, j, xi); + } + + } + + gsl_vector_free(B); + gsl_matrix_free(dB); +} + +int +main(int argc, char **argv) +{ + size_t order, breakpoints, i; + + gsl_ieee_env_setup(); + + argc = 0; /* prevent warnings about unused parameters */ + argv = 0; + + for (order = 1; order < 10; order++) + { + for (breakpoints = 2; breakpoints < 100; breakpoints++) + { + double a = -1.23 * order, b = 45.6 * order; + gsl_bspline_workspace *bw = gsl_bspline_alloc(order, breakpoints); + gsl_bspline_knots_uniform(a, b, bw); + test_bspline(bw); + gsl_bspline_free(bw); + } + } + + + for (order = 1; order < 10; order++) + { + for (breakpoints = 2; breakpoints < 100; breakpoints++) + { + double a = -1.23 * order, b = 45.6 * order; + gsl_bspline_workspace *bw = gsl_bspline_alloc(order, breakpoints); + gsl_vector *k = gsl_vector_alloc(breakpoints); + for (i = 0; i < breakpoints; i++) + { + double f, x; + f = sqrt(i / (breakpoints - 1.0)); + x = (1 - f) * a + f * b; + gsl_vector_set(k, i, x); + }; + gsl_bspline_knots(k, bw); + test_bspline(bw); + gsl_vector_free(k); + gsl_bspline_free(bw); + } + } + + /* Spot check known 0th, 1st, 2nd derivative + evaluations for a particular k = 2 case. */ + { + size_t i, j; /* looping */ + + const double xloc[4] = { 0.0, 1.0, 6.0, 7.0}; + const double deriv[4][3] = + { + { -1.0/2.0, 1.0/2.0, 0.0 }, + { -1.0/2.0, 1.0/2.0, 0.0 }, + { 0.0, -1.0/5.0, 1.0/5.0 }, + { 0.0, -1.0/5.0, 1.0/5.0 } + }; + + gsl_bspline_workspace *bw = gsl_bspline_alloc(2, 3); + gsl_matrix *dB = gsl_matrix_alloc(gsl_bspline_ncoeffs(bw), + gsl_bspline_order(bw) + 1); + + gsl_vector *breakpts = gsl_vector_alloc(3); + gsl_vector_set(breakpts, 0, 0.0); + gsl_vector_set(breakpts, 1, 2.0); + gsl_vector_set(breakpts, 2, 7.0); + gsl_bspline_knots(breakpts, bw); + + + for (i = 0; i < 4; ++i) /* at each location */ + { + /* Initialize dB with poison to ensure we overwrite it */ + gsl_matrix_set_all(dB, GSL_NAN); + + gsl_bspline_deriv_eval(xloc[i], gsl_bspline_order(bw), dB, bw); + for (j = 0; j < gsl_bspline_ncoeffs(bw) ; ++j) + { + /* check basis function 1st deriv */ + gsl_test_abs(gsl_matrix_get(dB, j, 1), deriv[i][j], GSL_DBL_EPSILON, + "b-spline k=%d basis #%d derivative %d at x = %f", + gsl_bspline_order(bw), j, 1, xloc[i]); + } + for (j = 0; j < gsl_bspline_ncoeffs(bw); ++j) + { + /* check k order basis function has k-th deriv equal to 0 */ + gsl_test_abs(gsl_matrix_get(dB, j, gsl_bspline_order(bw)), 0.0, + GSL_DBL_EPSILON, + "b-spline k=%d basis #%d derivative %d at x = %f", + gsl_bspline_order(bw), j, gsl_bspline_order(bw), + xloc[i]); + } + } + + gsl_matrix_free(dB); + gsl_bspline_free(bw); + gsl_vector_free(breakpts); + } + + /* Spot check known 0th, 1st, 2nd derivative + evaluations for a particular k = 3 case. */ + { + size_t i, j; /* looping */ + const double xloc[5] = { 0.0, 5.0, 9.0, 12.0, 15.0 }; + const double eval[5][6] = + { + { 4./25., 69./100., 3./ 20. , 0. , 0. , 0. }, + { 0. , 4./21. , 143./210. , 9./70., 0. , 0. }, + { 0. , 0. , 3./ 10. , 7./10., 0. , 0. }, + { 0. , 0. , 0. , 3./4. , 1./4., 0. }, + { 0. , 0. , 0. , 1./3. , 5./9., 1./9. } + }; + const double deriv[5][6] = + { + { -4./25., 3./50., 1./ 10., 0. , 0. , 0. }, + { 0. , -2./21., 1./105., 3./35., 0. , 0. }, + { 0. , 0. , -1./5. , 1./ 5., 0. , 0. }, + { 0. , 0. , 0. , -1./ 6., 1./6. , 0. }, + { 0. , 0. , 0. , -1./ 9., 1./27., 2./27. } + }; + const double deriv2[5][6] = + { + { 2./25., -17./150., 1.0/30.0 , 0.0 , 0. , 0. }, + { 0. , 1./ 42., -11.0/210.0, 1.0/35.0, 0. , 0. }, + { 0. , 0. , 1.0/15.0 ,-11.0/90.0, 1./18. , 0. }, + { 0. , 0. , 0.0 , 1.0/54.0, -7./162., 2./81. }, + { 0. , 0. , 0.0 , 1.0/54.0, -7./162., 2./81. } + }; + + gsl_bspline_workspace *bw = gsl_bspline_alloc(3, 5); + + gsl_matrix *dB = gsl_matrix_alloc(gsl_bspline_ncoeffs(bw), + gsl_bspline_order(bw) + 1); + + gsl_vector *breakpts = gsl_vector_alloc(5); + gsl_vector_set(breakpts, 0, -3.0); + gsl_vector_set(breakpts, 1, 2.0); + gsl_vector_set(breakpts, 2, 9.0); + gsl_vector_set(breakpts, 3, 12.0); + gsl_vector_set(breakpts, 4, 21.0); + gsl_bspline_knots(breakpts, bw); + + for (i = 0; i < 5; ++i) /* at each location */ + { + /* Initialize dB with poison to ensure we overwrite it */ + gsl_matrix_set_all(dB, GSL_NAN); + gsl_bspline_deriv_eval(xloc[i], gsl_bspline_order(bw), dB, bw); + + /* check basis function evaluation */ + for (j = 0; j < gsl_bspline_ncoeffs(bw); ++j) + { + gsl_test_abs(gsl_matrix_get(dB, j, 0), eval[i][j], GSL_DBL_EPSILON, + "b-spline k=%d basis #%d derivative %d at x = %f", + gsl_bspline_order(bw), j, 0, xloc[i]); + } + /* check 1st derivative evaluation */ + for (j = 0; j < gsl_bspline_ncoeffs(bw); ++j) + { + gsl_test_abs(gsl_matrix_get(dB, j, 1), deriv[i][j], GSL_DBL_EPSILON, + "b-spline k=%d basis #%d derivative %d at x = %f", + gsl_bspline_order(bw), j, 1, xloc[i]); + } + /* check 2nd derivative evaluation */ + for (j = 0; j < gsl_bspline_ncoeffs(bw); ++j) + { + gsl_test_abs(gsl_matrix_get(dB, j, 2), deriv2[i][j], GSL_DBL_EPSILON, + "b-spline k=%d basis #%d derivative %d at x = %f", + gsl_bspline_order(bw), j, 2, xloc[i]); + } + } + + gsl_matrix_free(dB); + gsl_bspline_free(bw); + gsl_vector_free(breakpts); + } + + /* Check Greville abscissae functionality on a non-uniform k=1 */ + { + size_t i; /* looping */ + + /* Test parameters */ + const size_t k = 1; + const double bpoint_data[] = { 0.0, 0.2, 0.5, 0.75, 1.0 }; + const size_t nbreak = sizeof(bpoint_data)/sizeof(bpoint_data[0]); + + /* Expected results */ + const double abscissae_data[] = { 0.1, 0.35, 0.625, 0.875 }; + const size_t nabscissae = sizeof(abscissae_data)/sizeof(abscissae_data[0]); + + gsl_vector_const_view bpoints = gsl_vector_const_view_array(bpoint_data, nbreak); + gsl_bspline_workspace *w = gsl_bspline_alloc(k, nbreak); + gsl_bspline_knots((const gsl_vector *) &bpoints, w); + + gsl_test_int(nabscissae, gsl_bspline_ncoeffs(w), + "b-spline k=%d number of abscissae", k); + for (i = 0; i < nabscissae; ++i) + { + gsl_test_abs(gsl_bspline_greville_abscissa(i, w), abscissae_data[i], 2*k*GSL_DBL_EPSILON, + "b-spline k=%d Greville abscissa #%d at x = %f", k, i, abscissae_data[i]); + } + + gsl_bspline_free(w); + } + + /* Check Greville abscissae functionality on a non-uniform k=2 */ + { + size_t i; /* looping */ + + /* Test parameters */ + const size_t k = 2; + const double bpoint_data[] = { 0.0, 0.2, 0.5, 0.75, 1.0 }; + const size_t nbreak = sizeof(bpoint_data)/sizeof(bpoint_data[0]); + + /* Expected results */ + const double abscissae_data[] = { 0.0, 0.2, 0.5, 0.75, 1.0 }; + const size_t nabscissae = sizeof(abscissae_data)/sizeof(abscissae_data[0]); + + gsl_vector_const_view bpoints = gsl_vector_const_view_array(bpoint_data, nbreak); + gsl_bspline_workspace *w = gsl_bspline_alloc(k, nbreak); + gsl_bspline_knots((const gsl_vector *) &bpoints, w); + + gsl_test_int(nabscissae, gsl_bspline_ncoeffs(w), + "b-spline k=%d number of abscissae", k); + for (i = 0; i < nabscissae; ++i) + { + gsl_test_abs(gsl_bspline_greville_abscissa(i, w), abscissae_data[i], 2*k*GSL_DBL_EPSILON, + "b-spline k=%d Greville abscissa #%d at x = %f", k, i, abscissae_data[i]); + } + + gsl_bspline_free(w); + } + + /* Check Greville abscissae functionality on non-uniform k=3 */ + { + size_t i; /* looping */ + + /* Test parameters */ + const size_t k = 3; + const double bpoint_data[] = { 0.0, 0.2, 0.5, 0.75, 1.0 }; + const size_t nbreak = sizeof(bpoint_data)/sizeof(bpoint_data[0]); + + /* Expected results */ + const double abscissae_data[] = { 0.0, 1.0/10.0, 7.0/20.0, + 5.0/ 8.0, 7.0/ 8.0, 1.0 }; + const size_t nabscissae = sizeof(abscissae_data)/sizeof(abscissae_data[0]); + + gsl_vector_const_view bpoints = gsl_vector_const_view_array(bpoint_data, nbreak); + gsl_bspline_workspace *w = gsl_bspline_alloc(k, nbreak); + gsl_bspline_knots((const gsl_vector *) &bpoints, w); + + gsl_test_int(nabscissae, gsl_bspline_ncoeffs(w), + "b-spline k=%d number of abscissae", k); + for (i = 0; i < nabscissae; ++i) + { + gsl_test_abs(gsl_bspline_greville_abscissa(i, w), abscissae_data[i], 2*k*GSL_DBL_EPSILON, + "b-spline k=%d Greville abscissa #%d at x = %f", k, i, abscissae_data[i]); + } + + gsl_bspline_free(w); + } + + /* Check Greville abscissae functionality on non-uniform k=4 */ + { + size_t i; /* looping */ + + /* Test parameters */ + const size_t k = 4; + const double bpoint_data[] = { 0.0, 0.2, 0.5, 0.75, 1.0 }; + const size_t nbreak = sizeof(bpoint_data)/sizeof(bpoint_data[0]); + + /* Expected results */ + const double abscissae_data[] = { 0.0, 1.0/15.0, 7.0/30.0, 29.0/60.0, + 3.0/ 4.0, 11.0/12.0, 1.0 }; + const size_t nabscissae = sizeof(abscissae_data)/sizeof(abscissae_data[0]); + + gsl_vector_const_view bpoints = gsl_vector_const_view_array(bpoint_data, nbreak); + gsl_bspline_workspace *w = gsl_bspline_alloc(k, nbreak); + gsl_bspline_knots((const gsl_vector *) &bpoints, w); + + gsl_test_int(nabscissae, gsl_bspline_ncoeffs(w), + "b-spline k=%d number of abscissae", k); + for (i = 0; i < nabscissae; ++i) + { + gsl_test_abs(gsl_bspline_greville_abscissa(i, w), abscissae_data[i], 2*k*GSL_DBL_EPSILON, + "b-spline k=%d Greville abscissa #%d at x = %f", k, i, abscissae_data[i]); + } + + gsl_bspline_free(w); + } + + /* Knots computed from prescribed Greville abscissae for k = 4 */ + { + size_t i; /* looping */ + + /* Test parameters */ + const size_t k = 4; + const double abscissae_data[] = { 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0 }; + const size_t nabscissae = sizeof(abscissae_data)/sizeof(abscissae_data[0]); + + /* Expected results */ + const double bpoint_data[] = { 1.0, 4.0, 4.0, 4.0, 7.0 }; + const size_t nbreak = sizeof(bpoint_data)/sizeof(bpoint_data[0]); + + /* Compute knots from Greville abscissae */ + double abserr; + gsl_vector_const_view abscissae + = gsl_vector_const_view_array(abscissae_data, nabscissae); + gsl_bspline_workspace *w = gsl_bspline_alloc(k, nbreak); + gsl_bspline_knots_greville(&abscissae.vector, w, &abserr); + + for (i = 0; i < nbreak; ++i) + { + gsl_test_abs(gsl_bspline_breakpoint(i,w), bpoint_data[i], GSL_DBL_EPSILON*50, + "b-spline k=%d knots_greville breakpoint #%d", k, i); + } + gsl_test_abs(abserr, 0.0, GSL_DBL_EPSILON*15, + "b-spline k=%d nbreak=%d knots_greville abserr", k, nbreak); + + gsl_bspline_free(w); + } + + /* Knots computed from prescribed Greville abscissae for k = 8 */ + { + size_t i; /* looping */ + + /* Test parameters */ + const size_t k = 8; + + const double abscissae_data[] = { 1.0, 10.0/7, 13.0/7, 16.0/7, 22.0/7, + 4.0, 34.0/7, 40.0/7, 43.0/7, 46.0/7, 7.0 }; + const size_t nabscissae = sizeof(abscissae_data)/sizeof(abscissae_data[0]); + + /* Expected results */ + const double bpoint_data[] = { 1.0, 4.0, 4.0, 4.0, 7.0 }; + const size_t nbreak = sizeof(bpoint_data)/sizeof(bpoint_data[0]); + + /* Compute knots from Greville abscissae */ + double abserr; + gsl_vector_const_view abscissae + = gsl_vector_const_view_array(abscissae_data, nabscissae); + gsl_bspline_workspace *w = gsl_bspline_alloc(k, nbreak); + gsl_bspline_knots_greville(&abscissae.vector, w, &abserr); + + for (i = 0; i < nbreak; ++i) + { + gsl_test_abs(gsl_bspline_breakpoint(i,w), bpoint_data[i], GSL_DBL_EPSILON*50, + "b-spline k=%d knots_greville breakpoint #%d", k, i); + } + gsl_test_abs(abserr, 0.0, GSL_DBL_EPSILON*15, + "b-spline k=%d nbreak=%d knots_greville abserr", k, nbreak); + + gsl_bspline_free(w); + } + + /* Knots computed from prescribed Greville abscissae for k = 2 */ + /* Not an interesting calculation but checks the k = 2 edge case */ + { + size_t i; /* looping */ + + /* Test parameters */ + const size_t k = 2; + const double abscissae_data[] = { 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0 }; + const size_t nabscissae = sizeof(abscissae_data)/sizeof(abscissae_data[0]); + + /* Expected results */ + const double bpoint_data[] = { 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0 }; + const size_t nbreak = sizeof(bpoint_data)/sizeof(bpoint_data[0]); + + /* Compute knots from Greville abscissae */ + double abserr; + gsl_vector_const_view abscissae + = gsl_vector_const_view_array(abscissae_data, nabscissae); + gsl_bspline_workspace *w = gsl_bspline_alloc(k, nbreak); + gsl_bspline_knots_greville(&abscissae.vector, w, &abserr); + + for (i = 0; i < nbreak; ++i) + { + gsl_test_abs(gsl_bspline_breakpoint(i,w), bpoint_data[i], GSL_DBL_EPSILON, + "b-spline k=%d knots_greville breakpoint #%d", k, i); + } + gsl_test_abs(abserr, 0.0, GSL_DBL_EPSILON, + "b-spline k=%d nbreak=%d knots_greville abserr", k, nbreak); + + gsl_bspline_free(w); + } + + /* Knots computed from prescribed abscissae for edge case when nbreak = 2 */ + { + size_t i; /* looping */ + + /* Test parameters */ + const size_t k = 4; + double abscissae_data[] = { 1.0, 3.0, 5.0, 7.0 }; + const size_t nabscissae = sizeof(abscissae_data)/sizeof(abscissae_data[0]); + + /* Expected results */ + const double bpoint_data[] = { 1.0, 7.0 }; + const size_t nbreak = sizeof(bpoint_data)/sizeof(bpoint_data[0]); + + /* Compute knots from Greville abscissae where abscissae are recoverable */ + double abserr; + gsl_vector_view abscissae + = gsl_vector_view_array(abscissae_data, nabscissae); + gsl_bspline_workspace *w = gsl_bspline_alloc(k, nbreak); + gsl_bspline_knots_greville(&abscissae.vector, w, &abserr); + + /* Check recovery of breakpoints and abscissae */ + for (i = 0; i < nbreak; ++i) + { + gsl_test_abs(gsl_bspline_breakpoint(i,w), bpoint_data[i], GSL_DBL_EPSILON, + "b-spline k=%d knots_greville breakpoint #%d", k, i); + } + gsl_test_abs(abserr, 0.0, GSL_DBL_EPSILON, + "b-spline k=%d nbreak=%d knots_greville abserr", k, nbreak); + + /* Modify interior abscissae so they cannot be recovered with nbreak = 2 */ + /* Then recompute breakpoints and check that abserr is as expected */ + abscissae_data[1] -= 1; + abscissae_data[2] += 1; + gsl_bspline_knots_greville(&abscissae.vector, w, &abserr); + for (i = 0; i < nbreak; ++i) + { + gsl_test_abs(gsl_bspline_breakpoint(i,w), bpoint_data[i], GSL_DBL_EPSILON, + "b-spline k=%d knots_greville breakpoint #%d", k, i); + } + gsl_test_abs(abserr, /* deliberate error */ 2.0, GSL_DBL_EPSILON, + "b-spline k=%d nbreak=%d knots_greville abserr large", k, nbreak); + + gsl_bspline_free(w); + } + + exit(gsl_test_summary()); +} diff --git a/gsl-2.5/bspline/test.log b/gsl-2.5/bspline/test.log new file mode 100644 index 00000000..92c4ef21 --- /dev/null +++ b/gsl-2.5/bspline/test.log @@ -0,0 +1 @@ +Completed [19051366/19051366] diff --git a/gsl-2.5/bspline/test.trs b/gsl-2.5/bspline/test.trs new file mode 100644 index 00000000..3f0f396c --- /dev/null +++ b/gsl-2.5/bspline/test.trs @@ -0,0 +1,4 @@ +:test-result: PASS +:global-test-result: PASS +:recheck: no +:copy-in-global-log: no diff --git a/gsl-2.5/build.h b/gsl-2.5/build.h new file mode 100644 index 00000000..0f18cc03 --- /dev/null +++ b/gsl-2.5/build.h @@ -0,0 +1,37 @@ +/* Compile subsequent inline functions as static functions */ + +#ifdef __GSL_BUILD_H__ +#error build.h must not be included multiple times +#endif + +#define __GSL_BUILD_H__ + +#ifdef COMPILE_INLINE_STATIC +#ifndef HIDE_INLINE_STATIC /* skip if inline functions are hidden */ + +#undef __GSL_INLINE_H__ +#define __GSL_INLINE_H__ /* first, ignore the gsl_inline.h header file */ + +#undef INLINE_DECL +#define INLINE_DECL /* disable inline in declarations */ + +#undef INLINE_FUN +#define INLINE_FUN /* disable inline in definitions */ + +#ifndef HAVE_INLINE /* enable compilation of definitions in .h files */ +#define HAVE_INLINE +#endif + +/* Compile range checking code for inline functions used in the library */ +#undef GSL_RANGE_CHECK +#define GSL_RANGE_CHECK 1 + +/* Use the global variable gsl_check_range to enable/disable range checking at + runtime */ +#undef GSL_RANGE_COND +#define GSL_RANGE_COND(x) (gsl_check_range && (x)) + +#endif +#else +#error must be called with COMPILE_INLINE_STATIC +#endif diff --git a/gsl-2.5/cblas/.deps/caxpy.Plo b/gsl-2.5/cblas/.deps/caxpy.Plo new file mode 100644 index 00000000..b2758b65 --- /dev/null +++ b/gsl-2.5/cblas/.deps/caxpy.Plo @@ -0,0 +1,91 @@ +caxpy.lo: caxpy.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + source_axpy_c.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +source_axpy_c.h: diff --git a/gsl-2.5/cblas/.deps/ccopy.Plo b/gsl-2.5/cblas/.deps/ccopy.Plo new file mode 100644 index 00000000..cd1a4d00 --- /dev/null +++ b/gsl-2.5/cblas/.deps/ccopy.Plo @@ -0,0 +1,91 @@ +ccopy.lo: ccopy.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + source_copy_c.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +source_copy_c.h: diff --git a/gsl-2.5/cblas/.deps/cdotc_sub.Plo b/gsl-2.5/cblas/.deps/cdotc_sub.Plo new file mode 100644 index 00000000..0e8ae07b --- /dev/null +++ b/gsl-2.5/cblas/.deps/cdotc_sub.Plo @@ -0,0 +1,91 @@ +cdotc_sub.lo: cdotc_sub.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + source_dot_c.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +source_dot_c.h: diff --git a/gsl-2.5/cblas/.deps/cdotu_sub.Plo b/gsl-2.5/cblas/.deps/cdotu_sub.Plo new file mode 100644 index 00000000..2a19558e --- /dev/null +++ b/gsl-2.5/cblas/.deps/cdotu_sub.Plo @@ -0,0 +1,91 @@ +cdotu_sub.lo: cdotu_sub.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + source_dot_c.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +source_dot_c.h: diff --git a/gsl-2.5/cblas/.deps/cgbmv.Plo b/gsl-2.5/cblas/.deps/cgbmv.Plo new file mode 100644 index 00000000..0d2038c0 --- /dev/null +++ b/gsl-2.5/cblas/.deps/cgbmv.Plo @@ -0,0 +1,95 @@ +cgbmv.lo: cgbmv.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + error_cblas_l2.h error_cblas.h source_gbmv_c.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +error_cblas_l2.h: + +error_cblas.h: + +source_gbmv_c.h: diff --git a/gsl-2.5/cblas/.deps/cgemm.Plo b/gsl-2.5/cblas/.deps/cgemm.Plo new file mode 100644 index 00000000..0d41639c --- /dev/null +++ b/gsl-2.5/cblas/.deps/cgemm.Plo @@ -0,0 +1,95 @@ +cgemm.lo: cgemm.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + error_cblas_l3.h error_cblas.h source_gemm_c.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +error_cblas_l3.h: + +error_cblas.h: + +source_gemm_c.h: diff --git a/gsl-2.5/cblas/.deps/cgemv.Plo b/gsl-2.5/cblas/.deps/cgemv.Plo new file mode 100644 index 00000000..252930d8 --- /dev/null +++ b/gsl-2.5/cblas/.deps/cgemv.Plo @@ -0,0 +1,95 @@ +cgemv.lo: cgemv.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + error_cblas_l2.h error_cblas.h source_gemv_c.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +error_cblas_l2.h: + +error_cblas.h: + +source_gemv_c.h: diff --git a/gsl-2.5/cblas/.deps/cgerc.Plo b/gsl-2.5/cblas/.deps/cgerc.Plo new file mode 100644 index 00000000..0846e2c2 --- /dev/null +++ b/gsl-2.5/cblas/.deps/cgerc.Plo @@ -0,0 +1,95 @@ +cgerc.lo: cgerc.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + error_cblas_l2.h error_cblas.h source_gerc.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +error_cblas_l2.h: + +error_cblas.h: + +source_gerc.h: diff --git a/gsl-2.5/cblas/.deps/cgeru.Plo b/gsl-2.5/cblas/.deps/cgeru.Plo new file mode 100644 index 00000000..45b54d84 --- /dev/null +++ b/gsl-2.5/cblas/.deps/cgeru.Plo @@ -0,0 +1,95 @@ +cgeru.lo: cgeru.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + error_cblas_l2.h error_cblas.h source_geru.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +error_cblas_l2.h: + +error_cblas.h: + +source_geru.h: diff --git a/gsl-2.5/cblas/.deps/chbmv.Plo b/gsl-2.5/cblas/.deps/chbmv.Plo new file mode 100644 index 00000000..64035ac9 --- /dev/null +++ b/gsl-2.5/cblas/.deps/chbmv.Plo @@ -0,0 +1,95 @@ +chbmv.lo: chbmv.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + error_cblas_l2.h error_cblas.h source_hbmv.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +error_cblas_l2.h: + +error_cblas.h: + +source_hbmv.h: diff --git a/gsl-2.5/cblas/.deps/chemm.Plo b/gsl-2.5/cblas/.deps/chemm.Plo new file mode 100644 index 00000000..c410defb --- /dev/null +++ b/gsl-2.5/cblas/.deps/chemm.Plo @@ -0,0 +1,95 @@ +chemm.lo: chemm.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + error_cblas_l3.h error_cblas.h source_hemm.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +error_cblas_l3.h: + +error_cblas.h: + +source_hemm.h: diff --git a/gsl-2.5/cblas/.deps/chemv.Plo b/gsl-2.5/cblas/.deps/chemv.Plo new file mode 100644 index 00000000..796c3d83 --- /dev/null +++ b/gsl-2.5/cblas/.deps/chemv.Plo @@ -0,0 +1,95 @@ +chemv.lo: chemv.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + error_cblas_l2.h error_cblas.h source_hemv.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +error_cblas_l2.h: + +error_cblas.h: + +source_hemv.h: diff --git a/gsl-2.5/cblas/.deps/cher.Plo b/gsl-2.5/cblas/.deps/cher.Plo new file mode 100644 index 00000000..9e652e29 --- /dev/null +++ b/gsl-2.5/cblas/.deps/cher.Plo @@ -0,0 +1,95 @@ +cher.lo: cher.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + error_cblas_l2.h error_cblas.h source_her.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +error_cblas_l2.h: + +error_cblas.h: + +source_her.h: diff --git a/gsl-2.5/cblas/.deps/cher2.Plo b/gsl-2.5/cblas/.deps/cher2.Plo new file mode 100644 index 00000000..07b436d8 --- /dev/null +++ b/gsl-2.5/cblas/.deps/cher2.Plo @@ -0,0 +1,95 @@ +cher2.lo: cher2.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + error_cblas_l2.h error_cblas.h source_her2.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +error_cblas_l2.h: + +error_cblas.h: + +source_her2.h: diff --git a/gsl-2.5/cblas/.deps/cher2k.Plo b/gsl-2.5/cblas/.deps/cher2k.Plo new file mode 100644 index 00000000..764771d9 --- /dev/null +++ b/gsl-2.5/cblas/.deps/cher2k.Plo @@ -0,0 +1,95 @@ +cher2k.lo: cher2k.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + error_cblas_l3.h error_cblas.h source_her2k.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +error_cblas_l3.h: + +error_cblas.h: + +source_her2k.h: diff --git a/gsl-2.5/cblas/.deps/cherk.Plo b/gsl-2.5/cblas/.deps/cherk.Plo new file mode 100644 index 00000000..c809209d --- /dev/null +++ b/gsl-2.5/cblas/.deps/cherk.Plo @@ -0,0 +1,95 @@ +cherk.lo: cherk.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + error_cblas_l3.h error_cblas.h source_herk.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +error_cblas_l3.h: + +error_cblas.h: + +source_herk.h: diff --git a/gsl-2.5/cblas/.deps/chpmv.Plo b/gsl-2.5/cblas/.deps/chpmv.Plo new file mode 100644 index 00000000..0ccfc2ce --- /dev/null +++ b/gsl-2.5/cblas/.deps/chpmv.Plo @@ -0,0 +1,95 @@ +chpmv.lo: chpmv.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + error_cblas_l2.h error_cblas.h source_hpmv.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +error_cblas_l2.h: + +error_cblas.h: + +source_hpmv.h: diff --git a/gsl-2.5/cblas/.deps/chpr.Plo b/gsl-2.5/cblas/.deps/chpr.Plo new file mode 100644 index 00000000..044e7091 --- /dev/null +++ b/gsl-2.5/cblas/.deps/chpr.Plo @@ -0,0 +1,95 @@ +chpr.lo: chpr.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + error_cblas_l2.h error_cblas.h source_hpr.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +error_cblas_l2.h: + +error_cblas.h: + +source_hpr.h: diff --git a/gsl-2.5/cblas/.deps/chpr2.Plo b/gsl-2.5/cblas/.deps/chpr2.Plo new file mode 100644 index 00000000..d21e497b --- /dev/null +++ b/gsl-2.5/cblas/.deps/chpr2.Plo @@ -0,0 +1,95 @@ +chpr2.lo: chpr2.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + error_cblas_l2.h error_cblas.h source_hpr2.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +error_cblas_l2.h: + +error_cblas.h: + +source_hpr2.h: diff --git a/gsl-2.5/cblas/.deps/cscal.Plo b/gsl-2.5/cblas/.deps/cscal.Plo new file mode 100644 index 00000000..a12f0257 --- /dev/null +++ b/gsl-2.5/cblas/.deps/cscal.Plo @@ -0,0 +1,91 @@ +cscal.lo: cscal.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + source_scal_c.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +source_scal_c.h: diff --git a/gsl-2.5/cblas/.deps/csscal.Plo b/gsl-2.5/cblas/.deps/csscal.Plo new file mode 100644 index 00000000..d78380f9 --- /dev/null +++ b/gsl-2.5/cblas/.deps/csscal.Plo @@ -0,0 +1,91 @@ +csscal.lo: csscal.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + source_scal_c_s.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +source_scal_c_s.h: diff --git a/gsl-2.5/cblas/.deps/cswap.Plo b/gsl-2.5/cblas/.deps/cswap.Plo new file mode 100644 index 00000000..cd5c0e00 --- /dev/null +++ b/gsl-2.5/cblas/.deps/cswap.Plo @@ -0,0 +1,91 @@ +cswap.lo: cswap.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + source_swap_c.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +source_swap_c.h: diff --git a/gsl-2.5/cblas/.deps/csymm.Plo b/gsl-2.5/cblas/.deps/csymm.Plo new file mode 100644 index 00000000..79f41963 --- /dev/null +++ b/gsl-2.5/cblas/.deps/csymm.Plo @@ -0,0 +1,95 @@ +csymm.lo: csymm.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + error_cblas_l3.h error_cblas.h source_symm_c.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +error_cblas_l3.h: + +error_cblas.h: + +source_symm_c.h: diff --git a/gsl-2.5/cblas/.deps/csyr2k.Plo b/gsl-2.5/cblas/.deps/csyr2k.Plo new file mode 100644 index 00000000..29c2a1a5 --- /dev/null +++ b/gsl-2.5/cblas/.deps/csyr2k.Plo @@ -0,0 +1,95 @@ +csyr2k.lo: csyr2k.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + error_cblas_l3.h error_cblas.h source_syr2k_c.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +error_cblas_l3.h: + +error_cblas.h: + +source_syr2k_c.h: diff --git a/gsl-2.5/cblas/.deps/csyrk.Plo b/gsl-2.5/cblas/.deps/csyrk.Plo new file mode 100644 index 00000000..d11f603d --- /dev/null +++ b/gsl-2.5/cblas/.deps/csyrk.Plo @@ -0,0 +1,95 @@ +csyrk.lo: csyrk.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + error_cblas_l3.h error_cblas.h source_syrk_c.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +error_cblas_l3.h: + +error_cblas.h: + +source_syrk_c.h: diff --git a/gsl-2.5/cblas/.deps/ctbmv.Plo b/gsl-2.5/cblas/.deps/ctbmv.Plo new file mode 100644 index 00000000..dc169425 --- /dev/null +++ b/gsl-2.5/cblas/.deps/ctbmv.Plo @@ -0,0 +1,95 @@ +ctbmv.lo: ctbmv.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + error_cblas_l2.h error_cblas.h source_tbmv_c.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +error_cblas_l2.h: + +error_cblas.h: + +source_tbmv_c.h: diff --git a/gsl-2.5/cblas/.deps/ctbsv.Plo b/gsl-2.5/cblas/.deps/ctbsv.Plo new file mode 100644 index 00000000..8c724ad1 --- /dev/null +++ b/gsl-2.5/cblas/.deps/ctbsv.Plo @@ -0,0 +1,97 @@ +ctbsv.lo: ctbsv.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + error_cblas_l2.h error_cblas.h hypot.c source_tbsv_c.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +error_cblas_l2.h: + +error_cblas.h: + +hypot.c: + +source_tbsv_c.h: diff --git a/gsl-2.5/cblas/.deps/ctpmv.Plo b/gsl-2.5/cblas/.deps/ctpmv.Plo new file mode 100644 index 00000000..6b6c49d9 --- /dev/null +++ b/gsl-2.5/cblas/.deps/ctpmv.Plo @@ -0,0 +1,95 @@ +ctpmv.lo: ctpmv.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + error_cblas_l2.h error_cblas.h source_tpmv_c.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +error_cblas_l2.h: + +error_cblas.h: + +source_tpmv_c.h: diff --git a/gsl-2.5/cblas/.deps/ctpsv.Plo b/gsl-2.5/cblas/.deps/ctpsv.Plo new file mode 100644 index 00000000..f17fcf0b --- /dev/null +++ b/gsl-2.5/cblas/.deps/ctpsv.Plo @@ -0,0 +1,97 @@ +ctpsv.lo: ctpsv.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + error_cblas_l2.h error_cblas.h hypot.c source_tpsv_c.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +error_cblas_l2.h: + +error_cblas.h: + +hypot.c: + +source_tpsv_c.h: diff --git a/gsl-2.5/cblas/.deps/ctrmm.Plo b/gsl-2.5/cblas/.deps/ctrmm.Plo new file mode 100644 index 00000000..5adbae12 --- /dev/null +++ b/gsl-2.5/cblas/.deps/ctrmm.Plo @@ -0,0 +1,95 @@ +ctrmm.lo: ctrmm.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + error_cblas_l3.h error_cblas.h source_trmm_c.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +error_cblas_l3.h: + +error_cblas.h: + +source_trmm_c.h: diff --git a/gsl-2.5/cblas/.deps/ctrmv.Plo b/gsl-2.5/cblas/.deps/ctrmv.Plo new file mode 100644 index 00000000..b05e3ce7 --- /dev/null +++ b/gsl-2.5/cblas/.deps/ctrmv.Plo @@ -0,0 +1,95 @@ +ctrmv.lo: ctrmv.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + error_cblas_l2.h error_cblas.h source_trmv_c.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +error_cblas_l2.h: + +error_cblas.h: + +source_trmv_c.h: diff --git a/gsl-2.5/cblas/.deps/ctrsm.Plo b/gsl-2.5/cblas/.deps/ctrsm.Plo new file mode 100644 index 00000000..18b064b4 --- /dev/null +++ b/gsl-2.5/cblas/.deps/ctrsm.Plo @@ -0,0 +1,97 @@ +ctrsm.lo: ctrsm.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + error_cblas_l3.h error_cblas.h hypot.c source_trsm_c.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +error_cblas_l3.h: + +error_cblas.h: + +hypot.c: + +source_trsm_c.h: diff --git a/gsl-2.5/cblas/.deps/ctrsv.Plo b/gsl-2.5/cblas/.deps/ctrsv.Plo new file mode 100644 index 00000000..56717f04 --- /dev/null +++ b/gsl-2.5/cblas/.deps/ctrsv.Plo @@ -0,0 +1,97 @@ +ctrsv.lo: ctrsv.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + error_cblas_l2.h error_cblas.h hypot.c source_trsv_c.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +error_cblas_l2.h: + +error_cblas.h: + +hypot.c: + +source_trsv_c.h: diff --git a/gsl-2.5/cblas/.deps/dasum.Plo b/gsl-2.5/cblas/.deps/dasum.Plo new file mode 100644 index 00000000..46d37566 --- /dev/null +++ b/gsl-2.5/cblas/.deps/dasum.Plo @@ -0,0 +1,91 @@ +dasum.lo: dasum.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + source_asum_r.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +source_asum_r.h: diff --git a/gsl-2.5/cblas/.deps/daxpy.Plo b/gsl-2.5/cblas/.deps/daxpy.Plo new file mode 100644 index 00000000..87eda676 --- /dev/null +++ b/gsl-2.5/cblas/.deps/daxpy.Plo @@ -0,0 +1,91 @@ +daxpy.lo: daxpy.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + source_axpy_r.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +source_axpy_r.h: diff --git a/gsl-2.5/cblas/.deps/dcopy.Plo b/gsl-2.5/cblas/.deps/dcopy.Plo new file mode 100644 index 00000000..fd42942d --- /dev/null +++ b/gsl-2.5/cblas/.deps/dcopy.Plo @@ -0,0 +1,91 @@ +dcopy.lo: dcopy.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + source_copy_r.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +source_copy_r.h: diff --git a/gsl-2.5/cblas/.deps/ddot.Plo b/gsl-2.5/cblas/.deps/ddot.Plo new file mode 100644 index 00000000..e4fbf0b3 --- /dev/null +++ b/gsl-2.5/cblas/.deps/ddot.Plo @@ -0,0 +1,91 @@ +ddot.lo: ddot.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + source_dot_r.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +source_dot_r.h: diff --git a/gsl-2.5/cblas/.deps/dgbmv.Plo b/gsl-2.5/cblas/.deps/dgbmv.Plo new file mode 100644 index 00000000..b7155ae6 --- /dev/null +++ b/gsl-2.5/cblas/.deps/dgbmv.Plo @@ -0,0 +1,95 @@ +dgbmv.lo: dgbmv.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + error_cblas_l2.h error_cblas.h source_gbmv_r.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +error_cblas_l2.h: + +error_cblas.h: + +source_gbmv_r.h: diff --git a/gsl-2.5/cblas/.deps/dgemm.Plo b/gsl-2.5/cblas/.deps/dgemm.Plo new file mode 100644 index 00000000..767822eb --- /dev/null +++ b/gsl-2.5/cblas/.deps/dgemm.Plo @@ -0,0 +1,95 @@ +dgemm.lo: dgemm.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + error_cblas_l3.h error_cblas.h source_gemm_r.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +error_cblas_l3.h: + +error_cblas.h: + +source_gemm_r.h: diff --git a/gsl-2.5/cblas/.deps/dgemv.Plo b/gsl-2.5/cblas/.deps/dgemv.Plo new file mode 100644 index 00000000..cf0091bc --- /dev/null +++ b/gsl-2.5/cblas/.deps/dgemv.Plo @@ -0,0 +1,95 @@ +dgemv.lo: dgemv.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + error_cblas_l2.h error_cblas.h source_gemv_r.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +error_cblas_l2.h: + +error_cblas.h: + +source_gemv_r.h: diff --git a/gsl-2.5/cblas/.deps/dger.Plo b/gsl-2.5/cblas/.deps/dger.Plo new file mode 100644 index 00000000..0cf1c189 --- /dev/null +++ b/gsl-2.5/cblas/.deps/dger.Plo @@ -0,0 +1,95 @@ +dger.lo: dger.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + error_cblas_l2.h error_cblas.h source_ger.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +error_cblas_l2.h: + +error_cblas.h: + +source_ger.h: diff --git a/gsl-2.5/cblas/.deps/dnrm2.Plo b/gsl-2.5/cblas/.deps/dnrm2.Plo new file mode 100644 index 00000000..6b230781 --- /dev/null +++ b/gsl-2.5/cblas/.deps/dnrm2.Plo @@ -0,0 +1,91 @@ +dnrm2.lo: dnrm2.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + source_nrm2_r.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +source_nrm2_r.h: diff --git a/gsl-2.5/cblas/.deps/drot.Plo b/gsl-2.5/cblas/.deps/drot.Plo new file mode 100644 index 00000000..734c57c0 --- /dev/null +++ b/gsl-2.5/cblas/.deps/drot.Plo @@ -0,0 +1,91 @@ +drot.lo: drot.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + source_rot.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +source_rot.h: diff --git a/gsl-2.5/cblas/.deps/drotg.Plo b/gsl-2.5/cblas/.deps/drotg.Plo new file mode 100644 index 00000000..44fcd268 --- /dev/null +++ b/gsl-2.5/cblas/.deps/drotg.Plo @@ -0,0 +1,91 @@ +drotg.lo: drotg.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + source_rotg.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +source_rotg.h: diff --git a/gsl-2.5/cblas/.deps/drotm.Plo b/gsl-2.5/cblas/.deps/drotm.Plo new file mode 100644 index 00000000..a6846bb9 --- /dev/null +++ b/gsl-2.5/cblas/.deps/drotm.Plo @@ -0,0 +1,91 @@ +drotm.lo: drotm.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + source_rotm.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +source_rotm.h: diff --git a/gsl-2.5/cblas/.deps/drotmg.Plo b/gsl-2.5/cblas/.deps/drotmg.Plo new file mode 100644 index 00000000..3c93b68c --- /dev/null +++ b/gsl-2.5/cblas/.deps/drotmg.Plo @@ -0,0 +1,91 @@ +drotmg.lo: drotmg.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + source_rotmg.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +source_rotmg.h: diff --git a/gsl-2.5/cblas/.deps/dsbmv.Plo b/gsl-2.5/cblas/.deps/dsbmv.Plo new file mode 100644 index 00000000..b26300b0 --- /dev/null +++ b/gsl-2.5/cblas/.deps/dsbmv.Plo @@ -0,0 +1,95 @@ +dsbmv.lo: dsbmv.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + error_cblas_l2.h error_cblas.h source_sbmv.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +error_cblas_l2.h: + +error_cblas.h: + +source_sbmv.h: diff --git a/gsl-2.5/cblas/.deps/dscal.Plo b/gsl-2.5/cblas/.deps/dscal.Plo new file mode 100644 index 00000000..9750a698 --- /dev/null +++ b/gsl-2.5/cblas/.deps/dscal.Plo @@ -0,0 +1,91 @@ +dscal.lo: dscal.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + source_scal_r.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +source_scal_r.h: diff --git a/gsl-2.5/cblas/.deps/dsdot.Plo b/gsl-2.5/cblas/.deps/dsdot.Plo new file mode 100644 index 00000000..013e8de7 --- /dev/null +++ b/gsl-2.5/cblas/.deps/dsdot.Plo @@ -0,0 +1,91 @@ +dsdot.lo: dsdot.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + source_dot_r.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +source_dot_r.h: diff --git a/gsl-2.5/cblas/.deps/dspmv.Plo b/gsl-2.5/cblas/.deps/dspmv.Plo new file mode 100644 index 00000000..d995d75c --- /dev/null +++ b/gsl-2.5/cblas/.deps/dspmv.Plo @@ -0,0 +1,95 @@ +dspmv.lo: dspmv.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + error_cblas_l2.h error_cblas.h source_spmv.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +error_cblas_l2.h: + +error_cblas.h: + +source_spmv.h: diff --git a/gsl-2.5/cblas/.deps/dspr.Plo b/gsl-2.5/cblas/.deps/dspr.Plo new file mode 100644 index 00000000..c84c7687 --- /dev/null +++ b/gsl-2.5/cblas/.deps/dspr.Plo @@ -0,0 +1,95 @@ +dspr.lo: dspr.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + error_cblas_l2.h error_cblas.h source_spr.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +error_cblas_l2.h: + +error_cblas.h: + +source_spr.h: diff --git a/gsl-2.5/cblas/.deps/dspr2.Plo b/gsl-2.5/cblas/.deps/dspr2.Plo new file mode 100644 index 00000000..30696a89 --- /dev/null +++ b/gsl-2.5/cblas/.deps/dspr2.Plo @@ -0,0 +1,95 @@ +dspr2.lo: dspr2.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + error_cblas_l2.h error_cblas.h source_spr2.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +error_cblas_l2.h: + +error_cblas.h: + +source_spr2.h: diff --git a/gsl-2.5/cblas/.deps/dswap.Plo b/gsl-2.5/cblas/.deps/dswap.Plo new file mode 100644 index 00000000..0be88665 --- /dev/null +++ b/gsl-2.5/cblas/.deps/dswap.Plo @@ -0,0 +1,91 @@ +dswap.lo: dswap.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + source_swap_r.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +source_swap_r.h: diff --git a/gsl-2.5/cblas/.deps/dsymm.Plo b/gsl-2.5/cblas/.deps/dsymm.Plo new file mode 100644 index 00000000..bac6de20 --- /dev/null +++ b/gsl-2.5/cblas/.deps/dsymm.Plo @@ -0,0 +1,95 @@ +dsymm.lo: dsymm.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + error_cblas_l3.h error_cblas.h source_symm_r.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +error_cblas_l3.h: + +error_cblas.h: + +source_symm_r.h: diff --git a/gsl-2.5/cblas/.deps/dsymv.Plo b/gsl-2.5/cblas/.deps/dsymv.Plo new file mode 100644 index 00000000..6d7528b8 --- /dev/null +++ b/gsl-2.5/cblas/.deps/dsymv.Plo @@ -0,0 +1,95 @@ +dsymv.lo: dsymv.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + error_cblas_l2.h error_cblas.h source_symv.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +error_cblas_l2.h: + +error_cblas.h: + +source_symv.h: diff --git a/gsl-2.5/cblas/.deps/dsyr.Plo b/gsl-2.5/cblas/.deps/dsyr.Plo new file mode 100644 index 00000000..5d55f4ed --- /dev/null +++ b/gsl-2.5/cblas/.deps/dsyr.Plo @@ -0,0 +1,95 @@ +dsyr.lo: dsyr.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + error_cblas_l2.h error_cblas.h source_syr.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +error_cblas_l2.h: + +error_cblas.h: + +source_syr.h: diff --git a/gsl-2.5/cblas/.deps/dsyr2.Plo b/gsl-2.5/cblas/.deps/dsyr2.Plo new file mode 100644 index 00000000..9192ff69 --- /dev/null +++ b/gsl-2.5/cblas/.deps/dsyr2.Plo @@ -0,0 +1,95 @@ +dsyr2.lo: dsyr2.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + error_cblas_l2.h error_cblas.h source_syr2.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +error_cblas_l2.h: + +error_cblas.h: + +source_syr2.h: diff --git a/gsl-2.5/cblas/.deps/dsyr2k.Plo b/gsl-2.5/cblas/.deps/dsyr2k.Plo new file mode 100644 index 00000000..10e9ccb8 --- /dev/null +++ b/gsl-2.5/cblas/.deps/dsyr2k.Plo @@ -0,0 +1,95 @@ +dsyr2k.lo: dsyr2k.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + error_cblas_l3.h error_cblas.h source_syr2k_r.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +error_cblas_l3.h: + +error_cblas.h: + +source_syr2k_r.h: diff --git a/gsl-2.5/cblas/.deps/dsyrk.Plo b/gsl-2.5/cblas/.deps/dsyrk.Plo new file mode 100644 index 00000000..1e9736f9 --- /dev/null +++ b/gsl-2.5/cblas/.deps/dsyrk.Plo @@ -0,0 +1,95 @@ +dsyrk.lo: dsyrk.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + error_cblas_l3.h error_cblas.h source_syrk_r.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +error_cblas_l3.h: + +error_cblas.h: + +source_syrk_r.h: diff --git a/gsl-2.5/cblas/.deps/dtbmv.Plo b/gsl-2.5/cblas/.deps/dtbmv.Plo new file mode 100644 index 00000000..2f610f99 --- /dev/null +++ b/gsl-2.5/cblas/.deps/dtbmv.Plo @@ -0,0 +1,95 @@ +dtbmv.lo: dtbmv.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + error_cblas_l2.h error_cblas.h source_tbmv_r.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +error_cblas_l2.h: + +error_cblas.h: + +source_tbmv_r.h: diff --git a/gsl-2.5/cblas/.deps/dtbsv.Plo b/gsl-2.5/cblas/.deps/dtbsv.Plo new file mode 100644 index 00000000..d7dedabd --- /dev/null +++ b/gsl-2.5/cblas/.deps/dtbsv.Plo @@ -0,0 +1,95 @@ +dtbsv.lo: dtbsv.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + error_cblas_l2.h error_cblas.h source_tbsv_r.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +error_cblas_l2.h: + +error_cblas.h: + +source_tbsv_r.h: diff --git a/gsl-2.5/cblas/.deps/dtpmv.Plo b/gsl-2.5/cblas/.deps/dtpmv.Plo new file mode 100644 index 00000000..96ea10a4 --- /dev/null +++ b/gsl-2.5/cblas/.deps/dtpmv.Plo @@ -0,0 +1,95 @@ +dtpmv.lo: dtpmv.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + error_cblas_l2.h error_cblas.h source_tpmv_r.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +error_cblas_l2.h: + +error_cblas.h: + +source_tpmv_r.h: diff --git a/gsl-2.5/cblas/.deps/dtpsv.Plo b/gsl-2.5/cblas/.deps/dtpsv.Plo new file mode 100644 index 00000000..f02e0ca8 --- /dev/null +++ b/gsl-2.5/cblas/.deps/dtpsv.Plo @@ -0,0 +1,95 @@ +dtpsv.lo: dtpsv.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + error_cblas_l2.h error_cblas.h source_tpsv_r.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +error_cblas_l2.h: + +error_cblas.h: + +source_tpsv_r.h: diff --git a/gsl-2.5/cblas/.deps/dtrmm.Plo b/gsl-2.5/cblas/.deps/dtrmm.Plo new file mode 100644 index 00000000..c9a42906 --- /dev/null +++ b/gsl-2.5/cblas/.deps/dtrmm.Plo @@ -0,0 +1,95 @@ +dtrmm.lo: dtrmm.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + error_cblas_l3.h error_cblas.h source_trmm_r.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +error_cblas_l3.h: + +error_cblas.h: + +source_trmm_r.h: diff --git a/gsl-2.5/cblas/.deps/dtrmv.Plo b/gsl-2.5/cblas/.deps/dtrmv.Plo new file mode 100644 index 00000000..9e5f2cc5 --- /dev/null +++ b/gsl-2.5/cblas/.deps/dtrmv.Plo @@ -0,0 +1,95 @@ +dtrmv.lo: dtrmv.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + error_cblas_l2.h error_cblas.h source_trmv_r.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +error_cblas_l2.h: + +error_cblas.h: + +source_trmv_r.h: diff --git a/gsl-2.5/cblas/.deps/dtrsm.Plo b/gsl-2.5/cblas/.deps/dtrsm.Plo new file mode 100644 index 00000000..59c23c8b --- /dev/null +++ b/gsl-2.5/cblas/.deps/dtrsm.Plo @@ -0,0 +1,95 @@ +dtrsm.lo: dtrsm.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + error_cblas_l3.h error_cblas.h source_trsm_r.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +error_cblas_l3.h: + +error_cblas.h: + +source_trsm_r.h: diff --git a/gsl-2.5/cblas/.deps/dtrsv.Plo b/gsl-2.5/cblas/.deps/dtrsv.Plo new file mode 100644 index 00000000..4268d65a --- /dev/null +++ b/gsl-2.5/cblas/.deps/dtrsv.Plo @@ -0,0 +1,95 @@ +dtrsv.lo: dtrsv.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + error_cblas_l2.h error_cblas.h source_trsv_r.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +error_cblas_l2.h: + +error_cblas.h: + +source_trsv_r.h: diff --git a/gsl-2.5/cblas/.deps/dzasum.Plo b/gsl-2.5/cblas/.deps/dzasum.Plo new file mode 100644 index 00000000..fd00c46c --- /dev/null +++ b/gsl-2.5/cblas/.deps/dzasum.Plo @@ -0,0 +1,91 @@ +dzasum.lo: dzasum.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + source_asum_c.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +source_asum_c.h: diff --git a/gsl-2.5/cblas/.deps/dznrm2.Plo b/gsl-2.5/cblas/.deps/dznrm2.Plo new file mode 100644 index 00000000..917ef9c4 --- /dev/null +++ b/gsl-2.5/cblas/.deps/dznrm2.Plo @@ -0,0 +1,91 @@ +dznrm2.lo: dznrm2.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + source_nrm2_c.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +source_nrm2_c.h: diff --git a/gsl-2.5/cblas/.deps/icamax.Plo b/gsl-2.5/cblas/.deps/icamax.Plo new file mode 100644 index 00000000..403ae134 --- /dev/null +++ b/gsl-2.5/cblas/.deps/icamax.Plo @@ -0,0 +1,91 @@ +icamax.lo: icamax.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + source_iamax_c.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +source_iamax_c.h: diff --git a/gsl-2.5/cblas/.deps/idamax.Plo b/gsl-2.5/cblas/.deps/idamax.Plo new file mode 100644 index 00000000..9c096f24 --- /dev/null +++ b/gsl-2.5/cblas/.deps/idamax.Plo @@ -0,0 +1,91 @@ +idamax.lo: idamax.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + source_iamax_r.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +source_iamax_r.h: diff --git a/gsl-2.5/cblas/.deps/isamax.Plo b/gsl-2.5/cblas/.deps/isamax.Plo new file mode 100644 index 00000000..b318ea66 --- /dev/null +++ b/gsl-2.5/cblas/.deps/isamax.Plo @@ -0,0 +1,91 @@ +isamax.lo: isamax.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + source_iamax_r.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +source_iamax_r.h: diff --git a/gsl-2.5/cblas/.deps/izamax.Plo b/gsl-2.5/cblas/.deps/izamax.Plo new file mode 100644 index 00000000..3ce92911 --- /dev/null +++ b/gsl-2.5/cblas/.deps/izamax.Plo @@ -0,0 +1,91 @@ +izamax.lo: izamax.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + source_iamax_c.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +source_iamax_c.h: diff --git a/gsl-2.5/cblas/.deps/sasum.Plo b/gsl-2.5/cblas/.deps/sasum.Plo new file mode 100644 index 00000000..d91a0f0d --- /dev/null +++ b/gsl-2.5/cblas/.deps/sasum.Plo @@ -0,0 +1,91 @@ +sasum.lo: sasum.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + source_asum_r.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +source_asum_r.h: diff --git a/gsl-2.5/cblas/.deps/saxpy.Plo b/gsl-2.5/cblas/.deps/saxpy.Plo new file mode 100644 index 00000000..ec3e2faf --- /dev/null +++ b/gsl-2.5/cblas/.deps/saxpy.Plo @@ -0,0 +1,91 @@ +saxpy.lo: saxpy.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + source_axpy_r.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +source_axpy_r.h: diff --git a/gsl-2.5/cblas/.deps/scasum.Plo b/gsl-2.5/cblas/.deps/scasum.Plo new file mode 100644 index 00000000..da63bb1e --- /dev/null +++ b/gsl-2.5/cblas/.deps/scasum.Plo @@ -0,0 +1,91 @@ +scasum.lo: scasum.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + source_asum_c.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +source_asum_c.h: diff --git a/gsl-2.5/cblas/.deps/scnrm2.Plo b/gsl-2.5/cblas/.deps/scnrm2.Plo new file mode 100644 index 00000000..19986c67 --- /dev/null +++ b/gsl-2.5/cblas/.deps/scnrm2.Plo @@ -0,0 +1,91 @@ +scnrm2.lo: scnrm2.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + source_nrm2_c.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +source_nrm2_c.h: diff --git a/gsl-2.5/cblas/.deps/scopy.Plo b/gsl-2.5/cblas/.deps/scopy.Plo new file mode 100644 index 00000000..6838238a --- /dev/null +++ b/gsl-2.5/cblas/.deps/scopy.Plo @@ -0,0 +1,91 @@ +scopy.lo: scopy.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + source_copy_r.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +source_copy_r.h: diff --git a/gsl-2.5/cblas/.deps/sdot.Plo b/gsl-2.5/cblas/.deps/sdot.Plo new file mode 100644 index 00000000..ec34f50d --- /dev/null +++ b/gsl-2.5/cblas/.deps/sdot.Plo @@ -0,0 +1,91 @@ +sdot.lo: sdot.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + source_dot_r.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +source_dot_r.h: diff --git a/gsl-2.5/cblas/.deps/sdsdot.Plo b/gsl-2.5/cblas/.deps/sdsdot.Plo new file mode 100644 index 00000000..85f9b925 --- /dev/null +++ b/gsl-2.5/cblas/.deps/sdsdot.Plo @@ -0,0 +1,91 @@ +sdsdot.lo: sdsdot.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + source_dot_r.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +source_dot_r.h: diff --git a/gsl-2.5/cblas/.deps/sgbmv.Plo b/gsl-2.5/cblas/.deps/sgbmv.Plo new file mode 100644 index 00000000..8dbe873e --- /dev/null +++ b/gsl-2.5/cblas/.deps/sgbmv.Plo @@ -0,0 +1,95 @@ +sgbmv.lo: sgbmv.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + error_cblas_l2.h error_cblas.h source_gbmv_r.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +error_cblas_l2.h: + +error_cblas.h: + +source_gbmv_r.h: diff --git a/gsl-2.5/cblas/.deps/sgemm.Plo b/gsl-2.5/cblas/.deps/sgemm.Plo new file mode 100644 index 00000000..612572be --- /dev/null +++ b/gsl-2.5/cblas/.deps/sgemm.Plo @@ -0,0 +1,95 @@ +sgemm.lo: sgemm.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + error_cblas_l3.h error_cblas.h source_gemm_r.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +error_cblas_l3.h: + +error_cblas.h: + +source_gemm_r.h: diff --git a/gsl-2.5/cblas/.deps/sgemv.Plo b/gsl-2.5/cblas/.deps/sgemv.Plo new file mode 100644 index 00000000..5fd65b75 --- /dev/null +++ b/gsl-2.5/cblas/.deps/sgemv.Plo @@ -0,0 +1,95 @@ +sgemv.lo: sgemv.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + error_cblas_l2.h error_cblas.h source_gemv_r.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +error_cblas_l2.h: + +error_cblas.h: + +source_gemv_r.h: diff --git a/gsl-2.5/cblas/.deps/sger.Plo b/gsl-2.5/cblas/.deps/sger.Plo new file mode 100644 index 00000000..6662f7da --- /dev/null +++ b/gsl-2.5/cblas/.deps/sger.Plo @@ -0,0 +1,95 @@ +sger.lo: sger.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + error_cblas_l2.h error_cblas.h source_ger.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +error_cblas_l2.h: + +error_cblas.h: + +source_ger.h: diff --git a/gsl-2.5/cblas/.deps/snrm2.Plo b/gsl-2.5/cblas/.deps/snrm2.Plo new file mode 100644 index 00000000..abc235dc --- /dev/null +++ b/gsl-2.5/cblas/.deps/snrm2.Plo @@ -0,0 +1,91 @@ +snrm2.lo: snrm2.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + source_nrm2_r.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +source_nrm2_r.h: diff --git a/gsl-2.5/cblas/.deps/srot.Plo b/gsl-2.5/cblas/.deps/srot.Plo new file mode 100644 index 00000000..e89031b4 --- /dev/null +++ b/gsl-2.5/cblas/.deps/srot.Plo @@ -0,0 +1,91 @@ +srot.lo: srot.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + source_rot.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +source_rot.h: diff --git a/gsl-2.5/cblas/.deps/srotg.Plo b/gsl-2.5/cblas/.deps/srotg.Plo new file mode 100644 index 00000000..5acd371c --- /dev/null +++ b/gsl-2.5/cblas/.deps/srotg.Plo @@ -0,0 +1,91 @@ +srotg.lo: srotg.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + source_rotg.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +source_rotg.h: diff --git a/gsl-2.5/cblas/.deps/srotm.Plo b/gsl-2.5/cblas/.deps/srotm.Plo new file mode 100644 index 00000000..1e5502c8 --- /dev/null +++ b/gsl-2.5/cblas/.deps/srotm.Plo @@ -0,0 +1,91 @@ +srotm.lo: srotm.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + source_rotm.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +source_rotm.h: diff --git a/gsl-2.5/cblas/.deps/srotmg.Plo b/gsl-2.5/cblas/.deps/srotmg.Plo new file mode 100644 index 00000000..b08a4101 --- /dev/null +++ b/gsl-2.5/cblas/.deps/srotmg.Plo @@ -0,0 +1,91 @@ +srotmg.lo: srotmg.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + source_rotmg.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +source_rotmg.h: diff --git a/gsl-2.5/cblas/.deps/ssbmv.Plo b/gsl-2.5/cblas/.deps/ssbmv.Plo new file mode 100644 index 00000000..19fdc12c --- /dev/null +++ b/gsl-2.5/cblas/.deps/ssbmv.Plo @@ -0,0 +1,95 @@ +ssbmv.lo: ssbmv.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + error_cblas_l2.h error_cblas.h source_sbmv.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +error_cblas_l2.h: + +error_cblas.h: + +source_sbmv.h: diff --git a/gsl-2.5/cblas/.deps/sscal.Plo b/gsl-2.5/cblas/.deps/sscal.Plo new file mode 100644 index 00000000..9141ea28 --- /dev/null +++ b/gsl-2.5/cblas/.deps/sscal.Plo @@ -0,0 +1,91 @@ +sscal.lo: sscal.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + source_scal_r.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +source_scal_r.h: diff --git a/gsl-2.5/cblas/.deps/sspmv.Plo b/gsl-2.5/cblas/.deps/sspmv.Plo new file mode 100644 index 00000000..71b7fd50 --- /dev/null +++ b/gsl-2.5/cblas/.deps/sspmv.Plo @@ -0,0 +1,95 @@ +sspmv.lo: sspmv.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + error_cblas_l2.h error_cblas.h source_spmv.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +error_cblas_l2.h: + +error_cblas.h: + +source_spmv.h: diff --git a/gsl-2.5/cblas/.deps/sspr.Plo b/gsl-2.5/cblas/.deps/sspr.Plo new file mode 100644 index 00000000..49b715f4 --- /dev/null +++ b/gsl-2.5/cblas/.deps/sspr.Plo @@ -0,0 +1,95 @@ +sspr.lo: sspr.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + error_cblas_l2.h error_cblas.h source_spr.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +error_cblas_l2.h: + +error_cblas.h: + +source_spr.h: diff --git a/gsl-2.5/cblas/.deps/sspr2.Plo b/gsl-2.5/cblas/.deps/sspr2.Plo new file mode 100644 index 00000000..6b02cc3f --- /dev/null +++ b/gsl-2.5/cblas/.deps/sspr2.Plo @@ -0,0 +1,95 @@ +sspr2.lo: sspr2.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + error_cblas_l2.h error_cblas.h source_spr2.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +error_cblas_l2.h: + +error_cblas.h: + +source_spr2.h: diff --git a/gsl-2.5/cblas/.deps/sswap.Plo b/gsl-2.5/cblas/.deps/sswap.Plo new file mode 100644 index 00000000..ee9e245a --- /dev/null +++ b/gsl-2.5/cblas/.deps/sswap.Plo @@ -0,0 +1,91 @@ +sswap.lo: sswap.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + source_swap_r.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +source_swap_r.h: diff --git a/gsl-2.5/cblas/.deps/ssymm.Plo b/gsl-2.5/cblas/.deps/ssymm.Plo new file mode 100644 index 00000000..464fe099 --- /dev/null +++ b/gsl-2.5/cblas/.deps/ssymm.Plo @@ -0,0 +1,95 @@ +ssymm.lo: ssymm.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + error_cblas_l3.h error_cblas.h source_symm_r.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +error_cblas_l3.h: + +error_cblas.h: + +source_symm_r.h: diff --git a/gsl-2.5/cblas/.deps/ssymv.Plo b/gsl-2.5/cblas/.deps/ssymv.Plo new file mode 100644 index 00000000..3e72ef12 --- /dev/null +++ b/gsl-2.5/cblas/.deps/ssymv.Plo @@ -0,0 +1,95 @@ +ssymv.lo: ssymv.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + error_cblas_l2.h error_cblas.h source_symv.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +error_cblas_l2.h: + +error_cblas.h: + +source_symv.h: diff --git a/gsl-2.5/cblas/.deps/ssyr.Plo b/gsl-2.5/cblas/.deps/ssyr.Plo new file mode 100644 index 00000000..c2999d9d --- /dev/null +++ b/gsl-2.5/cblas/.deps/ssyr.Plo @@ -0,0 +1,95 @@ +ssyr.lo: ssyr.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + error_cblas_l2.h error_cblas.h source_syr.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +error_cblas_l2.h: + +error_cblas.h: + +source_syr.h: diff --git a/gsl-2.5/cblas/.deps/ssyr2.Plo b/gsl-2.5/cblas/.deps/ssyr2.Plo new file mode 100644 index 00000000..7fb33254 --- /dev/null +++ b/gsl-2.5/cblas/.deps/ssyr2.Plo @@ -0,0 +1,95 @@ +ssyr2.lo: ssyr2.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + error_cblas_l2.h error_cblas.h source_syr2.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +error_cblas_l2.h: + +error_cblas.h: + +source_syr2.h: diff --git a/gsl-2.5/cblas/.deps/ssyr2k.Plo b/gsl-2.5/cblas/.deps/ssyr2k.Plo new file mode 100644 index 00000000..ff9c5e32 --- /dev/null +++ b/gsl-2.5/cblas/.deps/ssyr2k.Plo @@ -0,0 +1,95 @@ +ssyr2k.lo: ssyr2k.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + error_cblas_l3.h error_cblas.h source_syr2k_r.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +error_cblas_l3.h: + +error_cblas.h: + +source_syr2k_r.h: diff --git a/gsl-2.5/cblas/.deps/ssyrk.Plo b/gsl-2.5/cblas/.deps/ssyrk.Plo new file mode 100644 index 00000000..f664b058 --- /dev/null +++ b/gsl-2.5/cblas/.deps/ssyrk.Plo @@ -0,0 +1,95 @@ +ssyrk.lo: ssyrk.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + error_cblas_l3.h error_cblas.h source_syrk_r.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +error_cblas_l3.h: + +error_cblas.h: + +source_syrk_r.h: diff --git a/gsl-2.5/cblas/.deps/stbmv.Plo b/gsl-2.5/cblas/.deps/stbmv.Plo new file mode 100644 index 00000000..2d1d68a6 --- /dev/null +++ b/gsl-2.5/cblas/.deps/stbmv.Plo @@ -0,0 +1,95 @@ +stbmv.lo: stbmv.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + error_cblas_l2.h error_cblas.h source_tbmv_r.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +error_cblas_l2.h: + +error_cblas.h: + +source_tbmv_r.h: diff --git a/gsl-2.5/cblas/.deps/stbsv.Plo b/gsl-2.5/cblas/.deps/stbsv.Plo new file mode 100644 index 00000000..12e57d24 --- /dev/null +++ b/gsl-2.5/cblas/.deps/stbsv.Plo @@ -0,0 +1,95 @@ +stbsv.lo: stbsv.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + error_cblas_l2.h error_cblas.h source_tbsv_r.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +error_cblas_l2.h: + +error_cblas.h: + +source_tbsv_r.h: diff --git a/gsl-2.5/cblas/.deps/stpmv.Plo b/gsl-2.5/cblas/.deps/stpmv.Plo new file mode 100644 index 00000000..5aca7dc5 --- /dev/null +++ b/gsl-2.5/cblas/.deps/stpmv.Plo @@ -0,0 +1,95 @@ +stpmv.lo: stpmv.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + error_cblas_l2.h error_cblas.h source_tpmv_r.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +error_cblas_l2.h: + +error_cblas.h: + +source_tpmv_r.h: diff --git a/gsl-2.5/cblas/.deps/stpsv.Plo b/gsl-2.5/cblas/.deps/stpsv.Plo new file mode 100644 index 00000000..920719ce --- /dev/null +++ b/gsl-2.5/cblas/.deps/stpsv.Plo @@ -0,0 +1,95 @@ +stpsv.lo: stpsv.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + error_cblas_l2.h error_cblas.h source_tpsv_r.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +error_cblas_l2.h: + +error_cblas.h: + +source_tpsv_r.h: diff --git a/gsl-2.5/cblas/.deps/strmm.Plo b/gsl-2.5/cblas/.deps/strmm.Plo new file mode 100644 index 00000000..53de3b7a --- /dev/null +++ b/gsl-2.5/cblas/.deps/strmm.Plo @@ -0,0 +1,95 @@ +strmm.lo: strmm.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + error_cblas_l3.h error_cblas.h source_trmm_r.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +error_cblas_l3.h: + +error_cblas.h: + +source_trmm_r.h: diff --git a/gsl-2.5/cblas/.deps/strmv.Plo b/gsl-2.5/cblas/.deps/strmv.Plo new file mode 100644 index 00000000..c1266c35 --- /dev/null +++ b/gsl-2.5/cblas/.deps/strmv.Plo @@ -0,0 +1,95 @@ +strmv.lo: strmv.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + error_cblas_l2.h error_cblas.h source_trmv_r.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +error_cblas_l2.h: + +error_cblas.h: + +source_trmv_r.h: diff --git a/gsl-2.5/cblas/.deps/strsm.Plo b/gsl-2.5/cblas/.deps/strsm.Plo new file mode 100644 index 00000000..bac34312 --- /dev/null +++ b/gsl-2.5/cblas/.deps/strsm.Plo @@ -0,0 +1,95 @@ +strsm.lo: strsm.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + error_cblas_l3.h error_cblas.h source_trsm_r.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +error_cblas_l3.h: + +error_cblas.h: + +source_trsm_r.h: diff --git a/gsl-2.5/cblas/.deps/strsv.Plo b/gsl-2.5/cblas/.deps/strsv.Plo new file mode 100644 index 00000000..89d6f792 --- /dev/null +++ b/gsl-2.5/cblas/.deps/strsv.Plo @@ -0,0 +1,95 @@ +strsv.lo: strsv.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + error_cblas_l2.h error_cblas.h source_trsv_r.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +error_cblas_l2.h: + +error_cblas.h: + +source_trsv_r.h: diff --git a/gsl-2.5/cblas/.deps/test.Po b/gsl-2.5/cblas/.deps/test.Po new file mode 100644 index 00000000..afb17d3f --- /dev/null +++ b/gsl-2.5/cblas/.deps/test.Po @@ -0,0 +1,165 @@ +test.o: test.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_test.h \ + ../gsl/gsl_ieee_utils.h /usr/include/stdio.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h tests.h \ + tests.c + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_test.h: + +../gsl/gsl_ieee_utils.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +tests.h: + +tests.c: diff --git a/gsl-2.5/cblas/.deps/test_amax.Po b/gsl-2.5/cblas/.deps/test_amax.Po new file mode 100644 index 00000000..17ec0585 --- /dev/null +++ b/gsl-2.5/cblas/.deps/test_amax.Po @@ -0,0 +1,117 @@ +test_amax.o: test_amax.c /usr/include/stdc-predef.h ../gsl/gsl_test.h \ + ../gsl/gsl_ieee_utils.h /usr/include/stdio.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h tests.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_test.h: + +../gsl/gsl_ieee_utils.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +tests.h: diff --git a/gsl-2.5/cblas/.deps/test_asum.Po b/gsl-2.5/cblas/.deps/test_asum.Po new file mode 100644 index 00000000..1582ae59 --- /dev/null +++ b/gsl-2.5/cblas/.deps/test_asum.Po @@ -0,0 +1,117 @@ +test_asum.o: test_asum.c /usr/include/stdc-predef.h ../gsl/gsl_test.h \ + ../gsl/gsl_ieee_utils.h /usr/include/stdio.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h tests.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_test.h: + +../gsl/gsl_ieee_utils.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +tests.h: diff --git a/gsl-2.5/cblas/.deps/test_axpy.Po b/gsl-2.5/cblas/.deps/test_axpy.Po new file mode 100644 index 00000000..c35ea461 --- /dev/null +++ b/gsl-2.5/cblas/.deps/test_axpy.Po @@ -0,0 +1,117 @@ +test_axpy.o: test_axpy.c /usr/include/stdc-predef.h ../gsl/gsl_test.h \ + ../gsl/gsl_ieee_utils.h /usr/include/stdio.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h tests.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_test.h: + +../gsl/gsl_ieee_utils.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +tests.h: diff --git a/gsl-2.5/cblas/.deps/test_copy.Po b/gsl-2.5/cblas/.deps/test_copy.Po new file mode 100644 index 00000000..4a82b9fa --- /dev/null +++ b/gsl-2.5/cblas/.deps/test_copy.Po @@ -0,0 +1,117 @@ +test_copy.o: test_copy.c /usr/include/stdc-predef.h ../gsl/gsl_test.h \ + ../gsl/gsl_ieee_utils.h /usr/include/stdio.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h tests.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_test.h: + +../gsl/gsl_ieee_utils.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +tests.h: diff --git a/gsl-2.5/cblas/.deps/test_dot.Po b/gsl-2.5/cblas/.deps/test_dot.Po new file mode 100644 index 00000000..135c01d6 --- /dev/null +++ b/gsl-2.5/cblas/.deps/test_dot.Po @@ -0,0 +1,117 @@ +test_dot.o: test_dot.c /usr/include/stdc-predef.h ../gsl/gsl_test.h \ + ../gsl/gsl_ieee_utils.h /usr/include/stdio.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h tests.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_test.h: + +../gsl/gsl_ieee_utils.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +tests.h: diff --git a/gsl-2.5/cblas/.deps/test_gbmv.Po b/gsl-2.5/cblas/.deps/test_gbmv.Po new file mode 100644 index 00000000..2f62828d --- /dev/null +++ b/gsl-2.5/cblas/.deps/test_gbmv.Po @@ -0,0 +1,117 @@ +test_gbmv.o: test_gbmv.c /usr/include/stdc-predef.h ../gsl/gsl_test.h \ + ../gsl/gsl_ieee_utils.h /usr/include/stdio.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h tests.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_test.h: + +../gsl/gsl_ieee_utils.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +tests.h: diff --git a/gsl-2.5/cblas/.deps/test_gemm.Po b/gsl-2.5/cblas/.deps/test_gemm.Po new file mode 100644 index 00000000..e030f129 --- /dev/null +++ b/gsl-2.5/cblas/.deps/test_gemm.Po @@ -0,0 +1,117 @@ +test_gemm.o: test_gemm.c /usr/include/stdc-predef.h ../gsl/gsl_test.h \ + ../gsl/gsl_ieee_utils.h /usr/include/stdio.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h tests.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_test.h: + +../gsl/gsl_ieee_utils.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +tests.h: diff --git a/gsl-2.5/cblas/.deps/test_gemv.Po b/gsl-2.5/cblas/.deps/test_gemv.Po new file mode 100644 index 00000000..420f0284 --- /dev/null +++ b/gsl-2.5/cblas/.deps/test_gemv.Po @@ -0,0 +1,117 @@ +test_gemv.o: test_gemv.c /usr/include/stdc-predef.h ../gsl/gsl_test.h \ + ../gsl/gsl_ieee_utils.h /usr/include/stdio.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h tests.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_test.h: + +../gsl/gsl_ieee_utils.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +tests.h: diff --git a/gsl-2.5/cblas/.deps/test_ger.Po b/gsl-2.5/cblas/.deps/test_ger.Po new file mode 100644 index 00000000..f7e17e28 --- /dev/null +++ b/gsl-2.5/cblas/.deps/test_ger.Po @@ -0,0 +1,117 @@ +test_ger.o: test_ger.c /usr/include/stdc-predef.h ../gsl/gsl_test.h \ + ../gsl/gsl_ieee_utils.h /usr/include/stdio.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h tests.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_test.h: + +../gsl/gsl_ieee_utils.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +tests.h: diff --git a/gsl-2.5/cblas/.deps/test_hbmv.Po b/gsl-2.5/cblas/.deps/test_hbmv.Po new file mode 100644 index 00000000..66e90e91 --- /dev/null +++ b/gsl-2.5/cblas/.deps/test_hbmv.Po @@ -0,0 +1,117 @@ +test_hbmv.o: test_hbmv.c /usr/include/stdc-predef.h ../gsl/gsl_test.h \ + ../gsl/gsl_ieee_utils.h /usr/include/stdio.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h tests.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_test.h: + +../gsl/gsl_ieee_utils.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +tests.h: diff --git a/gsl-2.5/cblas/.deps/test_hemm.Po b/gsl-2.5/cblas/.deps/test_hemm.Po new file mode 100644 index 00000000..bf5cf2b2 --- /dev/null +++ b/gsl-2.5/cblas/.deps/test_hemm.Po @@ -0,0 +1,117 @@ +test_hemm.o: test_hemm.c /usr/include/stdc-predef.h ../gsl/gsl_test.h \ + ../gsl/gsl_ieee_utils.h /usr/include/stdio.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h tests.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_test.h: + +../gsl/gsl_ieee_utils.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +tests.h: diff --git a/gsl-2.5/cblas/.deps/test_hemv.Po b/gsl-2.5/cblas/.deps/test_hemv.Po new file mode 100644 index 00000000..cdf14722 --- /dev/null +++ b/gsl-2.5/cblas/.deps/test_hemv.Po @@ -0,0 +1,117 @@ +test_hemv.o: test_hemv.c /usr/include/stdc-predef.h ../gsl/gsl_test.h \ + ../gsl/gsl_ieee_utils.h /usr/include/stdio.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h tests.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_test.h: + +../gsl/gsl_ieee_utils.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +tests.h: diff --git a/gsl-2.5/cblas/.deps/test_her.Po b/gsl-2.5/cblas/.deps/test_her.Po new file mode 100644 index 00000000..ac69dbd1 --- /dev/null +++ b/gsl-2.5/cblas/.deps/test_her.Po @@ -0,0 +1,117 @@ +test_her.o: test_her.c /usr/include/stdc-predef.h ../gsl/gsl_test.h \ + ../gsl/gsl_ieee_utils.h /usr/include/stdio.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h tests.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_test.h: + +../gsl/gsl_ieee_utils.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +tests.h: diff --git a/gsl-2.5/cblas/.deps/test_her2.Po b/gsl-2.5/cblas/.deps/test_her2.Po new file mode 100644 index 00000000..bd13650d --- /dev/null +++ b/gsl-2.5/cblas/.deps/test_her2.Po @@ -0,0 +1,117 @@ +test_her2.o: test_her2.c /usr/include/stdc-predef.h ../gsl/gsl_test.h \ + ../gsl/gsl_ieee_utils.h /usr/include/stdio.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h tests.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_test.h: + +../gsl/gsl_ieee_utils.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +tests.h: diff --git a/gsl-2.5/cblas/.deps/test_her2k.Po b/gsl-2.5/cblas/.deps/test_her2k.Po new file mode 100644 index 00000000..d2ea8357 --- /dev/null +++ b/gsl-2.5/cblas/.deps/test_her2k.Po @@ -0,0 +1,117 @@ +test_her2k.o: test_her2k.c /usr/include/stdc-predef.h ../gsl/gsl_test.h \ + ../gsl/gsl_ieee_utils.h /usr/include/stdio.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h tests.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_test.h: + +../gsl/gsl_ieee_utils.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +tests.h: diff --git a/gsl-2.5/cblas/.deps/test_herk.Po b/gsl-2.5/cblas/.deps/test_herk.Po new file mode 100644 index 00000000..46272efe --- /dev/null +++ b/gsl-2.5/cblas/.deps/test_herk.Po @@ -0,0 +1,117 @@ +test_herk.o: test_herk.c /usr/include/stdc-predef.h ../gsl/gsl_test.h \ + ../gsl/gsl_ieee_utils.h /usr/include/stdio.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h tests.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_test.h: + +../gsl/gsl_ieee_utils.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +tests.h: diff --git a/gsl-2.5/cblas/.deps/test_hpmv.Po b/gsl-2.5/cblas/.deps/test_hpmv.Po new file mode 100644 index 00000000..e01cd0b8 --- /dev/null +++ b/gsl-2.5/cblas/.deps/test_hpmv.Po @@ -0,0 +1,117 @@ +test_hpmv.o: test_hpmv.c /usr/include/stdc-predef.h ../gsl/gsl_test.h \ + ../gsl/gsl_ieee_utils.h /usr/include/stdio.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h tests.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_test.h: + +../gsl/gsl_ieee_utils.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +tests.h: diff --git a/gsl-2.5/cblas/.deps/test_hpr.Po b/gsl-2.5/cblas/.deps/test_hpr.Po new file mode 100644 index 00000000..abe744d7 --- /dev/null +++ b/gsl-2.5/cblas/.deps/test_hpr.Po @@ -0,0 +1,117 @@ +test_hpr.o: test_hpr.c /usr/include/stdc-predef.h ../gsl/gsl_test.h \ + ../gsl/gsl_ieee_utils.h /usr/include/stdio.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h tests.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_test.h: + +../gsl/gsl_ieee_utils.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +tests.h: diff --git a/gsl-2.5/cblas/.deps/test_hpr2.Po b/gsl-2.5/cblas/.deps/test_hpr2.Po new file mode 100644 index 00000000..69608350 --- /dev/null +++ b/gsl-2.5/cblas/.deps/test_hpr2.Po @@ -0,0 +1,117 @@ +test_hpr2.o: test_hpr2.c /usr/include/stdc-predef.h ../gsl/gsl_test.h \ + ../gsl/gsl_ieee_utils.h /usr/include/stdio.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h tests.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_test.h: + +../gsl/gsl_ieee_utils.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +tests.h: diff --git a/gsl-2.5/cblas/.deps/test_nrm2.Po b/gsl-2.5/cblas/.deps/test_nrm2.Po new file mode 100644 index 00000000..9b50444b --- /dev/null +++ b/gsl-2.5/cblas/.deps/test_nrm2.Po @@ -0,0 +1,117 @@ +test_nrm2.o: test_nrm2.c /usr/include/stdc-predef.h ../gsl/gsl_test.h \ + ../gsl/gsl_ieee_utils.h /usr/include/stdio.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h tests.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_test.h: + +../gsl/gsl_ieee_utils.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +tests.h: diff --git a/gsl-2.5/cblas/.deps/test_rot.Po b/gsl-2.5/cblas/.deps/test_rot.Po new file mode 100644 index 00000000..3a45cc7c --- /dev/null +++ b/gsl-2.5/cblas/.deps/test_rot.Po @@ -0,0 +1,117 @@ +test_rot.o: test_rot.c /usr/include/stdc-predef.h ../gsl/gsl_test.h \ + ../gsl/gsl_ieee_utils.h /usr/include/stdio.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h tests.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_test.h: + +../gsl/gsl_ieee_utils.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +tests.h: diff --git a/gsl-2.5/cblas/.deps/test_rotg.Po b/gsl-2.5/cblas/.deps/test_rotg.Po new file mode 100644 index 00000000..92f29223 --- /dev/null +++ b/gsl-2.5/cblas/.deps/test_rotg.Po @@ -0,0 +1,117 @@ +test_rotg.o: test_rotg.c /usr/include/stdc-predef.h ../gsl/gsl_test.h \ + ../gsl/gsl_ieee_utils.h /usr/include/stdio.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h tests.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_test.h: + +../gsl/gsl_ieee_utils.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +tests.h: diff --git a/gsl-2.5/cblas/.deps/test_rotm.Po b/gsl-2.5/cblas/.deps/test_rotm.Po new file mode 100644 index 00000000..e8982525 --- /dev/null +++ b/gsl-2.5/cblas/.deps/test_rotm.Po @@ -0,0 +1,117 @@ +test_rotm.o: test_rotm.c /usr/include/stdc-predef.h ../gsl/gsl_test.h \ + ../gsl/gsl_ieee_utils.h /usr/include/stdio.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h tests.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_test.h: + +../gsl/gsl_ieee_utils.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +tests.h: diff --git a/gsl-2.5/cblas/.deps/test_rotmg.Po b/gsl-2.5/cblas/.deps/test_rotmg.Po new file mode 100644 index 00000000..c5ed7e5c --- /dev/null +++ b/gsl-2.5/cblas/.deps/test_rotmg.Po @@ -0,0 +1,117 @@ +test_rotmg.o: test_rotmg.c /usr/include/stdc-predef.h ../gsl/gsl_test.h \ + ../gsl/gsl_ieee_utils.h /usr/include/stdio.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h tests.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_test.h: + +../gsl/gsl_ieee_utils.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +tests.h: diff --git a/gsl-2.5/cblas/.deps/test_sbmv.Po b/gsl-2.5/cblas/.deps/test_sbmv.Po new file mode 100644 index 00000000..e94e2f6e --- /dev/null +++ b/gsl-2.5/cblas/.deps/test_sbmv.Po @@ -0,0 +1,117 @@ +test_sbmv.o: test_sbmv.c /usr/include/stdc-predef.h ../gsl/gsl_test.h \ + ../gsl/gsl_ieee_utils.h /usr/include/stdio.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h tests.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_test.h: + +../gsl/gsl_ieee_utils.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +tests.h: diff --git a/gsl-2.5/cblas/.deps/test_scal.Po b/gsl-2.5/cblas/.deps/test_scal.Po new file mode 100644 index 00000000..a3e51c0e --- /dev/null +++ b/gsl-2.5/cblas/.deps/test_scal.Po @@ -0,0 +1,117 @@ +test_scal.o: test_scal.c /usr/include/stdc-predef.h ../gsl/gsl_test.h \ + ../gsl/gsl_ieee_utils.h /usr/include/stdio.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h tests.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_test.h: + +../gsl/gsl_ieee_utils.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +tests.h: diff --git a/gsl-2.5/cblas/.deps/test_spmv.Po b/gsl-2.5/cblas/.deps/test_spmv.Po new file mode 100644 index 00000000..7ea87118 --- /dev/null +++ b/gsl-2.5/cblas/.deps/test_spmv.Po @@ -0,0 +1,117 @@ +test_spmv.o: test_spmv.c /usr/include/stdc-predef.h ../gsl/gsl_test.h \ + ../gsl/gsl_ieee_utils.h /usr/include/stdio.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h tests.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_test.h: + +../gsl/gsl_ieee_utils.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +tests.h: diff --git a/gsl-2.5/cblas/.deps/test_spr.Po b/gsl-2.5/cblas/.deps/test_spr.Po new file mode 100644 index 00000000..456ff1b0 --- /dev/null +++ b/gsl-2.5/cblas/.deps/test_spr.Po @@ -0,0 +1,117 @@ +test_spr.o: test_spr.c /usr/include/stdc-predef.h ../gsl/gsl_test.h \ + ../gsl/gsl_ieee_utils.h /usr/include/stdio.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h tests.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_test.h: + +../gsl/gsl_ieee_utils.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +tests.h: diff --git a/gsl-2.5/cblas/.deps/test_spr2.Po b/gsl-2.5/cblas/.deps/test_spr2.Po new file mode 100644 index 00000000..19dee155 --- /dev/null +++ b/gsl-2.5/cblas/.deps/test_spr2.Po @@ -0,0 +1,117 @@ +test_spr2.o: test_spr2.c /usr/include/stdc-predef.h ../gsl/gsl_test.h \ + ../gsl/gsl_ieee_utils.h /usr/include/stdio.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h tests.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_test.h: + +../gsl/gsl_ieee_utils.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +tests.h: diff --git a/gsl-2.5/cblas/.deps/test_swap.Po b/gsl-2.5/cblas/.deps/test_swap.Po new file mode 100644 index 00000000..649f3f24 --- /dev/null +++ b/gsl-2.5/cblas/.deps/test_swap.Po @@ -0,0 +1,117 @@ +test_swap.o: test_swap.c /usr/include/stdc-predef.h ../gsl/gsl_test.h \ + ../gsl/gsl_ieee_utils.h /usr/include/stdio.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h tests.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_test.h: + +../gsl/gsl_ieee_utils.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +tests.h: diff --git a/gsl-2.5/cblas/.deps/test_symm.Po b/gsl-2.5/cblas/.deps/test_symm.Po new file mode 100644 index 00000000..d9a4e2b7 --- /dev/null +++ b/gsl-2.5/cblas/.deps/test_symm.Po @@ -0,0 +1,117 @@ +test_symm.o: test_symm.c /usr/include/stdc-predef.h ../gsl/gsl_test.h \ + ../gsl/gsl_ieee_utils.h /usr/include/stdio.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h tests.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_test.h: + +../gsl/gsl_ieee_utils.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +tests.h: diff --git a/gsl-2.5/cblas/.deps/test_symv.Po b/gsl-2.5/cblas/.deps/test_symv.Po new file mode 100644 index 00000000..8c334b61 --- /dev/null +++ b/gsl-2.5/cblas/.deps/test_symv.Po @@ -0,0 +1,117 @@ +test_symv.o: test_symv.c /usr/include/stdc-predef.h ../gsl/gsl_test.h \ + ../gsl/gsl_ieee_utils.h /usr/include/stdio.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h tests.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_test.h: + +../gsl/gsl_ieee_utils.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +tests.h: diff --git a/gsl-2.5/cblas/.deps/test_syr.Po b/gsl-2.5/cblas/.deps/test_syr.Po new file mode 100644 index 00000000..36ad0ad4 --- /dev/null +++ b/gsl-2.5/cblas/.deps/test_syr.Po @@ -0,0 +1,117 @@ +test_syr.o: test_syr.c /usr/include/stdc-predef.h ../gsl/gsl_test.h \ + ../gsl/gsl_ieee_utils.h /usr/include/stdio.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h tests.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_test.h: + +../gsl/gsl_ieee_utils.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +tests.h: diff --git a/gsl-2.5/cblas/.deps/test_syr2.Po b/gsl-2.5/cblas/.deps/test_syr2.Po new file mode 100644 index 00000000..f4604a9d --- /dev/null +++ b/gsl-2.5/cblas/.deps/test_syr2.Po @@ -0,0 +1,117 @@ +test_syr2.o: test_syr2.c /usr/include/stdc-predef.h ../gsl/gsl_test.h \ + ../gsl/gsl_ieee_utils.h /usr/include/stdio.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h tests.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_test.h: + +../gsl/gsl_ieee_utils.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +tests.h: diff --git a/gsl-2.5/cblas/.deps/test_syr2k.Po b/gsl-2.5/cblas/.deps/test_syr2k.Po new file mode 100644 index 00000000..df07b954 --- /dev/null +++ b/gsl-2.5/cblas/.deps/test_syr2k.Po @@ -0,0 +1,117 @@ +test_syr2k.o: test_syr2k.c /usr/include/stdc-predef.h ../gsl/gsl_test.h \ + ../gsl/gsl_ieee_utils.h /usr/include/stdio.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h tests.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_test.h: + +../gsl/gsl_ieee_utils.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +tests.h: diff --git a/gsl-2.5/cblas/.deps/test_syrk.Po b/gsl-2.5/cblas/.deps/test_syrk.Po new file mode 100644 index 00000000..854e9610 --- /dev/null +++ b/gsl-2.5/cblas/.deps/test_syrk.Po @@ -0,0 +1,117 @@ +test_syrk.o: test_syrk.c /usr/include/stdc-predef.h ../gsl/gsl_test.h \ + ../gsl/gsl_ieee_utils.h /usr/include/stdio.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h tests.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_test.h: + +../gsl/gsl_ieee_utils.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +tests.h: diff --git a/gsl-2.5/cblas/.deps/test_tbmv.Po b/gsl-2.5/cblas/.deps/test_tbmv.Po new file mode 100644 index 00000000..3603307f --- /dev/null +++ b/gsl-2.5/cblas/.deps/test_tbmv.Po @@ -0,0 +1,117 @@ +test_tbmv.o: test_tbmv.c /usr/include/stdc-predef.h ../gsl/gsl_test.h \ + ../gsl/gsl_ieee_utils.h /usr/include/stdio.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h tests.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_test.h: + +../gsl/gsl_ieee_utils.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +tests.h: diff --git a/gsl-2.5/cblas/.deps/test_tbsv.Po b/gsl-2.5/cblas/.deps/test_tbsv.Po new file mode 100644 index 00000000..31bffbec --- /dev/null +++ b/gsl-2.5/cblas/.deps/test_tbsv.Po @@ -0,0 +1,117 @@ +test_tbsv.o: test_tbsv.c /usr/include/stdc-predef.h ../gsl/gsl_test.h \ + ../gsl/gsl_ieee_utils.h /usr/include/stdio.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h tests.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_test.h: + +../gsl/gsl_ieee_utils.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +tests.h: diff --git a/gsl-2.5/cblas/.deps/test_tpmv.Po b/gsl-2.5/cblas/.deps/test_tpmv.Po new file mode 100644 index 00000000..a9cc9763 --- /dev/null +++ b/gsl-2.5/cblas/.deps/test_tpmv.Po @@ -0,0 +1,117 @@ +test_tpmv.o: test_tpmv.c /usr/include/stdc-predef.h ../gsl/gsl_test.h \ + ../gsl/gsl_ieee_utils.h /usr/include/stdio.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h tests.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_test.h: + +../gsl/gsl_ieee_utils.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +tests.h: diff --git a/gsl-2.5/cblas/.deps/test_tpsv.Po b/gsl-2.5/cblas/.deps/test_tpsv.Po new file mode 100644 index 00000000..bb14738d --- /dev/null +++ b/gsl-2.5/cblas/.deps/test_tpsv.Po @@ -0,0 +1,117 @@ +test_tpsv.o: test_tpsv.c /usr/include/stdc-predef.h ../gsl/gsl_test.h \ + ../gsl/gsl_ieee_utils.h /usr/include/stdio.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h tests.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_test.h: + +../gsl/gsl_ieee_utils.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +tests.h: diff --git a/gsl-2.5/cblas/.deps/test_trmm.Po b/gsl-2.5/cblas/.deps/test_trmm.Po new file mode 100644 index 00000000..708ca8e5 --- /dev/null +++ b/gsl-2.5/cblas/.deps/test_trmm.Po @@ -0,0 +1,117 @@ +test_trmm.o: test_trmm.c /usr/include/stdc-predef.h ../gsl/gsl_test.h \ + ../gsl/gsl_ieee_utils.h /usr/include/stdio.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h tests.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_test.h: + +../gsl/gsl_ieee_utils.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +tests.h: diff --git a/gsl-2.5/cblas/.deps/test_trmv.Po b/gsl-2.5/cblas/.deps/test_trmv.Po new file mode 100644 index 00000000..9a24989c --- /dev/null +++ b/gsl-2.5/cblas/.deps/test_trmv.Po @@ -0,0 +1,117 @@ +test_trmv.o: test_trmv.c /usr/include/stdc-predef.h ../gsl/gsl_test.h \ + ../gsl/gsl_ieee_utils.h /usr/include/stdio.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h tests.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_test.h: + +../gsl/gsl_ieee_utils.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +tests.h: diff --git a/gsl-2.5/cblas/.deps/test_trsm.Po b/gsl-2.5/cblas/.deps/test_trsm.Po new file mode 100644 index 00000000..7baf2203 --- /dev/null +++ b/gsl-2.5/cblas/.deps/test_trsm.Po @@ -0,0 +1,117 @@ +test_trsm.o: test_trsm.c /usr/include/stdc-predef.h ../gsl/gsl_test.h \ + ../gsl/gsl_ieee_utils.h /usr/include/stdio.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h tests.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_test.h: + +../gsl/gsl_ieee_utils.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +tests.h: diff --git a/gsl-2.5/cblas/.deps/test_trsv.Po b/gsl-2.5/cblas/.deps/test_trsv.Po new file mode 100644 index 00000000..a69a0e11 --- /dev/null +++ b/gsl-2.5/cblas/.deps/test_trsv.Po @@ -0,0 +1,117 @@ +test_trsv.o: test_trsv.c /usr/include/stdc-predef.h ../gsl/gsl_test.h \ + ../gsl/gsl_ieee_utils.h /usr/include/stdio.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h tests.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_test.h: + +../gsl/gsl_ieee_utils.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +tests.h: diff --git a/gsl-2.5/cblas/.deps/xerbla.Plo b/gsl-2.5/cblas/.deps/xerbla.Plo new file mode 100644 index 00000000..dccbab6e --- /dev/null +++ b/gsl-2.5/cblas/.deps/xerbla.Plo @@ -0,0 +1,92 @@ +xerbla.lo: xerbla.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdio.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_cblas.h cblas.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_cblas.h: + +cblas.h: diff --git a/gsl-2.5/cblas/.deps/zaxpy.Plo b/gsl-2.5/cblas/.deps/zaxpy.Plo new file mode 100644 index 00000000..5f7f80db --- /dev/null +++ b/gsl-2.5/cblas/.deps/zaxpy.Plo @@ -0,0 +1,91 @@ +zaxpy.lo: zaxpy.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + source_axpy_c.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +source_axpy_c.h: diff --git a/gsl-2.5/cblas/.deps/zcopy.Plo b/gsl-2.5/cblas/.deps/zcopy.Plo new file mode 100644 index 00000000..14d094c4 --- /dev/null +++ b/gsl-2.5/cblas/.deps/zcopy.Plo @@ -0,0 +1,91 @@ +zcopy.lo: zcopy.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + source_copy_c.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +source_copy_c.h: diff --git a/gsl-2.5/cblas/.deps/zdotc_sub.Plo b/gsl-2.5/cblas/.deps/zdotc_sub.Plo new file mode 100644 index 00000000..aa766658 --- /dev/null +++ b/gsl-2.5/cblas/.deps/zdotc_sub.Plo @@ -0,0 +1,91 @@ +zdotc_sub.lo: zdotc_sub.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + source_dot_c.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +source_dot_c.h: diff --git a/gsl-2.5/cblas/.deps/zdotu_sub.Plo b/gsl-2.5/cblas/.deps/zdotu_sub.Plo new file mode 100644 index 00000000..3dc872ff --- /dev/null +++ b/gsl-2.5/cblas/.deps/zdotu_sub.Plo @@ -0,0 +1,91 @@ +zdotu_sub.lo: zdotu_sub.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + source_dot_c.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +source_dot_c.h: diff --git a/gsl-2.5/cblas/.deps/zdscal.Plo b/gsl-2.5/cblas/.deps/zdscal.Plo new file mode 100644 index 00000000..2e6bc13f --- /dev/null +++ b/gsl-2.5/cblas/.deps/zdscal.Plo @@ -0,0 +1,91 @@ +zdscal.lo: zdscal.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + source_scal_c_s.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +source_scal_c_s.h: diff --git a/gsl-2.5/cblas/.deps/zgbmv.Plo b/gsl-2.5/cblas/.deps/zgbmv.Plo new file mode 100644 index 00000000..261dd170 --- /dev/null +++ b/gsl-2.5/cblas/.deps/zgbmv.Plo @@ -0,0 +1,95 @@ +zgbmv.lo: zgbmv.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + error_cblas_l2.h error_cblas.h source_gbmv_c.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +error_cblas_l2.h: + +error_cblas.h: + +source_gbmv_c.h: diff --git a/gsl-2.5/cblas/.deps/zgemm.Plo b/gsl-2.5/cblas/.deps/zgemm.Plo new file mode 100644 index 00000000..35b1496c --- /dev/null +++ b/gsl-2.5/cblas/.deps/zgemm.Plo @@ -0,0 +1,95 @@ +zgemm.lo: zgemm.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + error_cblas_l3.h error_cblas.h source_gemm_c.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +error_cblas_l3.h: + +error_cblas.h: + +source_gemm_c.h: diff --git a/gsl-2.5/cblas/.deps/zgemv.Plo b/gsl-2.5/cblas/.deps/zgemv.Plo new file mode 100644 index 00000000..bdbbc6c1 --- /dev/null +++ b/gsl-2.5/cblas/.deps/zgemv.Plo @@ -0,0 +1,95 @@ +zgemv.lo: zgemv.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + error_cblas_l2.h error_cblas.h source_gemv_c.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +error_cblas_l2.h: + +error_cblas.h: + +source_gemv_c.h: diff --git a/gsl-2.5/cblas/.deps/zgerc.Plo b/gsl-2.5/cblas/.deps/zgerc.Plo new file mode 100644 index 00000000..55eb56e4 --- /dev/null +++ b/gsl-2.5/cblas/.deps/zgerc.Plo @@ -0,0 +1,95 @@ +zgerc.lo: zgerc.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + error_cblas_l2.h error_cblas.h source_gerc.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +error_cblas_l2.h: + +error_cblas.h: + +source_gerc.h: diff --git a/gsl-2.5/cblas/.deps/zgeru.Plo b/gsl-2.5/cblas/.deps/zgeru.Plo new file mode 100644 index 00000000..361e54bc --- /dev/null +++ b/gsl-2.5/cblas/.deps/zgeru.Plo @@ -0,0 +1,95 @@ +zgeru.lo: zgeru.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + error_cblas_l2.h error_cblas.h source_geru.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +error_cblas_l2.h: + +error_cblas.h: + +source_geru.h: diff --git a/gsl-2.5/cblas/.deps/zhbmv.Plo b/gsl-2.5/cblas/.deps/zhbmv.Plo new file mode 100644 index 00000000..30808296 --- /dev/null +++ b/gsl-2.5/cblas/.deps/zhbmv.Plo @@ -0,0 +1,95 @@ +zhbmv.lo: zhbmv.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + error_cblas_l2.h error_cblas.h source_hbmv.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +error_cblas_l2.h: + +error_cblas.h: + +source_hbmv.h: diff --git a/gsl-2.5/cblas/.deps/zhemm.Plo b/gsl-2.5/cblas/.deps/zhemm.Plo new file mode 100644 index 00000000..35402675 --- /dev/null +++ b/gsl-2.5/cblas/.deps/zhemm.Plo @@ -0,0 +1,95 @@ +zhemm.lo: zhemm.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + error_cblas_l3.h error_cblas.h source_hemm.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +error_cblas_l3.h: + +error_cblas.h: + +source_hemm.h: diff --git a/gsl-2.5/cblas/.deps/zhemv.Plo b/gsl-2.5/cblas/.deps/zhemv.Plo new file mode 100644 index 00000000..5ff4a53c --- /dev/null +++ b/gsl-2.5/cblas/.deps/zhemv.Plo @@ -0,0 +1,95 @@ +zhemv.lo: zhemv.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + error_cblas_l2.h error_cblas.h source_hemv.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +error_cblas_l2.h: + +error_cblas.h: + +source_hemv.h: diff --git a/gsl-2.5/cblas/.deps/zher.Plo b/gsl-2.5/cblas/.deps/zher.Plo new file mode 100644 index 00000000..04c89b4c --- /dev/null +++ b/gsl-2.5/cblas/.deps/zher.Plo @@ -0,0 +1,95 @@ +zher.lo: zher.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + error_cblas_l2.h error_cblas.h source_her.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +error_cblas_l2.h: + +error_cblas.h: + +source_her.h: diff --git a/gsl-2.5/cblas/.deps/zher2.Plo b/gsl-2.5/cblas/.deps/zher2.Plo new file mode 100644 index 00000000..53fc97a2 --- /dev/null +++ b/gsl-2.5/cblas/.deps/zher2.Plo @@ -0,0 +1,95 @@ +zher2.lo: zher2.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + error_cblas_l2.h error_cblas.h source_her2.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +error_cblas_l2.h: + +error_cblas.h: + +source_her2.h: diff --git a/gsl-2.5/cblas/.deps/zher2k.Plo b/gsl-2.5/cblas/.deps/zher2k.Plo new file mode 100644 index 00000000..39e41bea --- /dev/null +++ b/gsl-2.5/cblas/.deps/zher2k.Plo @@ -0,0 +1,95 @@ +zher2k.lo: zher2k.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + error_cblas_l3.h error_cblas.h source_her2k.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +error_cblas_l3.h: + +error_cblas.h: + +source_her2k.h: diff --git a/gsl-2.5/cblas/.deps/zherk.Plo b/gsl-2.5/cblas/.deps/zherk.Plo new file mode 100644 index 00000000..bed23dc1 --- /dev/null +++ b/gsl-2.5/cblas/.deps/zherk.Plo @@ -0,0 +1,95 @@ +zherk.lo: zherk.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + error_cblas_l3.h error_cblas.h source_herk.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +error_cblas_l3.h: + +error_cblas.h: + +source_herk.h: diff --git a/gsl-2.5/cblas/.deps/zhpmv.Plo b/gsl-2.5/cblas/.deps/zhpmv.Plo new file mode 100644 index 00000000..35c13005 --- /dev/null +++ b/gsl-2.5/cblas/.deps/zhpmv.Plo @@ -0,0 +1,95 @@ +zhpmv.lo: zhpmv.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + error_cblas_l2.h error_cblas.h source_hpmv.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +error_cblas_l2.h: + +error_cblas.h: + +source_hpmv.h: diff --git a/gsl-2.5/cblas/.deps/zhpr.Plo b/gsl-2.5/cblas/.deps/zhpr.Plo new file mode 100644 index 00000000..795e69ae --- /dev/null +++ b/gsl-2.5/cblas/.deps/zhpr.Plo @@ -0,0 +1,95 @@ +zhpr.lo: zhpr.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + error_cblas_l2.h error_cblas.h source_hpr.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +error_cblas_l2.h: + +error_cblas.h: + +source_hpr.h: diff --git a/gsl-2.5/cblas/.deps/zhpr2.Plo b/gsl-2.5/cblas/.deps/zhpr2.Plo new file mode 100644 index 00000000..197a08d4 --- /dev/null +++ b/gsl-2.5/cblas/.deps/zhpr2.Plo @@ -0,0 +1,95 @@ +zhpr2.lo: zhpr2.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + error_cblas_l2.h error_cblas.h source_hpr2.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +error_cblas_l2.h: + +error_cblas.h: + +source_hpr2.h: diff --git a/gsl-2.5/cblas/.deps/zscal.Plo b/gsl-2.5/cblas/.deps/zscal.Plo new file mode 100644 index 00000000..649ef69a --- /dev/null +++ b/gsl-2.5/cblas/.deps/zscal.Plo @@ -0,0 +1,91 @@ +zscal.lo: zscal.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + source_scal_c.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +source_scal_c.h: diff --git a/gsl-2.5/cblas/.deps/zswap.Plo b/gsl-2.5/cblas/.deps/zswap.Plo new file mode 100644 index 00000000..28e917eb --- /dev/null +++ b/gsl-2.5/cblas/.deps/zswap.Plo @@ -0,0 +1,91 @@ +zswap.lo: zswap.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + source_swap_c.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +source_swap_c.h: diff --git a/gsl-2.5/cblas/.deps/zsymm.Plo b/gsl-2.5/cblas/.deps/zsymm.Plo new file mode 100644 index 00000000..e7fb6705 --- /dev/null +++ b/gsl-2.5/cblas/.deps/zsymm.Plo @@ -0,0 +1,95 @@ +zsymm.lo: zsymm.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + error_cblas_l3.h error_cblas.h source_symm_c.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +error_cblas_l3.h: + +error_cblas.h: + +source_symm_c.h: diff --git a/gsl-2.5/cblas/.deps/zsyr2k.Plo b/gsl-2.5/cblas/.deps/zsyr2k.Plo new file mode 100644 index 00000000..1c95658d --- /dev/null +++ b/gsl-2.5/cblas/.deps/zsyr2k.Plo @@ -0,0 +1,95 @@ +zsyr2k.lo: zsyr2k.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + error_cblas_l3.h error_cblas.h source_syr2k_c.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +error_cblas_l3.h: + +error_cblas.h: + +source_syr2k_c.h: diff --git a/gsl-2.5/cblas/.deps/zsyrk.Plo b/gsl-2.5/cblas/.deps/zsyrk.Plo new file mode 100644 index 00000000..408ac8c3 --- /dev/null +++ b/gsl-2.5/cblas/.deps/zsyrk.Plo @@ -0,0 +1,95 @@ +zsyrk.lo: zsyrk.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + error_cblas_l3.h error_cblas.h source_syrk_c.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +error_cblas_l3.h: + +error_cblas.h: + +source_syrk_c.h: diff --git a/gsl-2.5/cblas/.deps/ztbmv.Plo b/gsl-2.5/cblas/.deps/ztbmv.Plo new file mode 100644 index 00000000..4e7e6c65 --- /dev/null +++ b/gsl-2.5/cblas/.deps/ztbmv.Plo @@ -0,0 +1,95 @@ +ztbmv.lo: ztbmv.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + error_cblas_l2.h error_cblas.h source_tbmv_c.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +error_cblas_l2.h: + +error_cblas.h: + +source_tbmv_c.h: diff --git a/gsl-2.5/cblas/.deps/ztbsv.Plo b/gsl-2.5/cblas/.deps/ztbsv.Plo new file mode 100644 index 00000000..3ffd639e --- /dev/null +++ b/gsl-2.5/cblas/.deps/ztbsv.Plo @@ -0,0 +1,97 @@ +ztbsv.lo: ztbsv.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + error_cblas_l2.h error_cblas.h hypot.c source_tbsv_c.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +error_cblas_l2.h: + +error_cblas.h: + +hypot.c: + +source_tbsv_c.h: diff --git a/gsl-2.5/cblas/.deps/ztpmv.Plo b/gsl-2.5/cblas/.deps/ztpmv.Plo new file mode 100644 index 00000000..f12eda8e --- /dev/null +++ b/gsl-2.5/cblas/.deps/ztpmv.Plo @@ -0,0 +1,95 @@ +ztpmv.lo: ztpmv.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + error_cblas_l2.h error_cblas.h source_tpmv_c.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +error_cblas_l2.h: + +error_cblas.h: + +source_tpmv_c.h: diff --git a/gsl-2.5/cblas/.deps/ztpsv.Plo b/gsl-2.5/cblas/.deps/ztpsv.Plo new file mode 100644 index 00000000..679a8e3d --- /dev/null +++ b/gsl-2.5/cblas/.deps/ztpsv.Plo @@ -0,0 +1,97 @@ +ztpsv.lo: ztpsv.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + error_cblas_l2.h error_cblas.h hypot.c source_tpsv_c.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +error_cblas_l2.h: + +error_cblas.h: + +hypot.c: + +source_tpsv_c.h: diff --git a/gsl-2.5/cblas/.deps/ztrmm.Plo b/gsl-2.5/cblas/.deps/ztrmm.Plo new file mode 100644 index 00000000..3d2ff55b --- /dev/null +++ b/gsl-2.5/cblas/.deps/ztrmm.Plo @@ -0,0 +1,95 @@ +ztrmm.lo: ztrmm.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + error_cblas_l3.h error_cblas.h source_trmm_c.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +error_cblas_l3.h: + +error_cblas.h: + +source_trmm_c.h: diff --git a/gsl-2.5/cblas/.deps/ztrmv.Plo b/gsl-2.5/cblas/.deps/ztrmv.Plo new file mode 100644 index 00000000..20534c2e --- /dev/null +++ b/gsl-2.5/cblas/.deps/ztrmv.Plo @@ -0,0 +1,95 @@ +ztrmv.lo: ztrmv.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + error_cblas_l2.h error_cblas.h source_trmv_c.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +error_cblas_l2.h: + +error_cblas.h: + +source_trmv_c.h: diff --git a/gsl-2.5/cblas/.deps/ztrsm.Plo b/gsl-2.5/cblas/.deps/ztrsm.Plo new file mode 100644 index 00000000..cdbd10a6 --- /dev/null +++ b/gsl-2.5/cblas/.deps/ztrsm.Plo @@ -0,0 +1,97 @@ +ztrsm.lo: ztrsm.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + error_cblas_l3.h error_cblas.h hypot.c source_trsm_c.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +error_cblas_l3.h: + +error_cblas.h: + +hypot.c: + +source_trsm_c.h: diff --git a/gsl-2.5/cblas/.deps/ztrsv.Plo b/gsl-2.5/cblas/.deps/ztrsv.Plo new file mode 100644 index 00000000..c76cc46d --- /dev/null +++ b/gsl-2.5/cblas/.deps/ztrsv.Plo @@ -0,0 +1,97 @@ +ztrsv.lo: ztrsv.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cblas.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h cblas.h \ + error_cblas_l2.h error_cblas.h hypot.c source_trsv_c.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cblas.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +cblas.h: + +error_cblas_l2.h: + +error_cblas.h: + +hypot.c: + +source_trsv_c.h: diff --git a/gsl-2.5/cblas/.libs/libgslcblas.la b/gsl-2.5/cblas/.libs/libgslcblas.la new file mode 120000 index 00000000..43526e56 --- /dev/null +++ b/gsl-2.5/cblas/.libs/libgslcblas.la @@ -0,0 +1 @@ +../libgslcblas.la \ No newline at end of file diff --git a/gsl-2.5/cblas/.libs/libgslcblas.lai b/gsl-2.5/cblas/.libs/libgslcblas.lai new file mode 100644 index 00000000..a307bc16 --- /dev/null +++ b/gsl-2.5/cblas/.libs/libgslcblas.lai @@ -0,0 +1,41 @@ +# libgslcblas.la - a libtool library file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='libgslcblas.so.0' + +# Names of this library. +library_names='libgslcblas.so.0.0.0 libgslcblas.so.0 libgslcblas.so' + +# The name of the static archive. +old_library='libgslcblas.a' + +# Linker flags that can not go in dependency_libs. +inherited_linker_flags='' + +# Libraries that this one depends upon. +dependency_libs=' -lm' + +# Names of additional weak libraries provided by this library +weak_library_names='' + +# Version information for libgslcblas. +current=0 +age=0 +revision=0 + +# Is this an already installed library? +installed=yes + +# Should we warn about portability when linking against -modules? +shouldnotlink=no + +# Files to dlopen/dlpreopen +dlopen='' +dlpreopen='' + +# Directory that this library needs to be installed in: +libdir='/usr/local/lib' diff --git a/gsl-2.5/cblas/.libs/libgslcblas.so.0 b/gsl-2.5/cblas/.libs/libgslcblas.so.0 new file mode 120000 index 00000000..f643b024 --- /dev/null +++ b/gsl-2.5/cblas/.libs/libgslcblas.so.0 @@ -0,0 +1 @@ +libgslcblas.so.0.0.0 \ No newline at end of file diff --git a/gsl-2.5/cblas/.libs/libgslcblas.so.0.0.0 b/gsl-2.5/cblas/.libs/libgslcblas.so.0.0.0 new file mode 100755 index 00000000..fd164929 Binary files /dev/null and b/gsl-2.5/cblas/.libs/libgslcblas.so.0.0.0 differ diff --git a/gsl-2.5/cblas/.libs/lt-test b/gsl-2.5/cblas/.libs/lt-test new file mode 100755 index 00000000..1b29c3fa Binary files /dev/null and b/gsl-2.5/cblas/.libs/lt-test differ diff --git a/gsl-2.5/cblas/.libs/test b/gsl-2.5/cblas/.libs/test new file mode 100755 index 00000000..df06d8b8 Binary files /dev/null and b/gsl-2.5/cblas/.libs/test differ diff --git a/gsl-2.5/cblas/ChangeLog b/gsl-2.5/cblas/ChangeLog new file mode 100644 index 00000000..5d500c8d --- /dev/null +++ b/gsl-2.5/cblas/ChangeLog @@ -0,0 +1,40 @@ +2010-10-12 Brian Gough + + * added error checking to selected cblas functions (José Luis + García Pallero) + +2009-06-24 Brian Gough + + * source_scal_c.h source_scal_r.h: remove needless use of OFFSET + macro when incX is known to be positive + +2003-01-21 Brian Gough + + * test.m: skip trans=113 for complex matrix on SYRK tests. + +Tue Feb 19 20:50:27 2002 Brian Gough + + * gsl_cblas.h: added extern "C" + +Mon Jul 2 22:21:00 2001 Brian Gough + + * test.c: added missing #include + +Fri Apr 27 19:53:10 2001 Brian Gough + + * source_tpmv_r.h: moved index declarations to more restricted scope + + * source_rotmg.h: changed declaration y1 to y in order to avoid + confusion with function y0(x) in C library. Also changed x1 to x. + + * source_syr2k_r.h: error where lda was used instead of ldb in + syr2k_r was not picked up by any tests! Now fixed + +Thu Apr 12 16:46:16 2001 Brian Gough + + * all routines now included for Level 1, 2, 3-- passes blas test + suite for numerical results, but no error handling yet + + * split out from blas directory to make an independent blas + library + diff --git a/gsl-2.5/cblas/Makefile b/gsl-2.5/cblas/Makefile new file mode 100644 index 00000000..cf351a6e --- /dev/null +++ b/gsl-2.5/cblas/Makefile @@ -0,0 +1,1317 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# cblas/Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + + + + +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/gsl +pkgincludedir = $(includedir)/gsl +pkglibdir = $(libdir)/gsl +pkglibexecdir = $(libexecdir)/gsl +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = x86_64-unknown-linux-gnu +host_triplet = x86_64-unknown-linux-gnu +check_PROGRAMS = test$(EXEEXT) +subdir = cblas +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp \ + $(noinst_HEADERS) $(pkginclude_HEADERS) \ + $(top_srcdir)/test-driver ChangeLog TODO +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(pkgincludedir)" +LTLIBRARIES = $(lib_LTLIBRARIES) +libgslcblas_la_LIBADD = +am_libgslcblas_la_OBJECTS = sasum.lo saxpy.lo scasum.lo scnrm2.lo \ + scopy.lo sdot.lo sdsdot.lo sgbmv.lo sgemm.lo sgemv.lo sger.lo \ + snrm2.lo srot.lo srotg.lo srotm.lo srotmg.lo ssbmv.lo sscal.lo \ + sspmv.lo sspr.lo sspr2.lo sswap.lo ssymm.lo ssymv.lo ssyr.lo \ + ssyr2.lo ssyr2k.lo ssyrk.lo stbmv.lo stbsv.lo stpmv.lo \ + stpsv.lo strmm.lo strmv.lo strsm.lo strsv.lo dasum.lo daxpy.lo \ + dcopy.lo ddot.lo dgbmv.lo dgemm.lo dgemv.lo dger.lo dnrm2.lo \ + drot.lo drotg.lo drotm.lo drotmg.lo dsbmv.lo dscal.lo dsdot.lo \ + dspmv.lo dspr.lo dspr2.lo dswap.lo dsymm.lo dsymv.lo dsyr.lo \ + dsyr2.lo dsyr2k.lo dsyrk.lo dtbmv.lo dtbsv.lo dtpmv.lo \ + dtpsv.lo dtrmm.lo dtrmv.lo dtrsm.lo dtrsv.lo dzasum.lo \ + dznrm2.lo caxpy.lo ccopy.lo cdotc_sub.lo cdotu_sub.lo cgbmv.lo \ + cgemm.lo cgemv.lo cgerc.lo cgeru.lo chbmv.lo chemm.lo chemv.lo \ + cher.lo cher2.lo cher2k.lo cherk.lo chpmv.lo chpr.lo chpr2.lo \ + cscal.lo csscal.lo cswap.lo csymm.lo csyr2k.lo csyrk.lo \ + ctbmv.lo ctbsv.lo ctpmv.lo ctpsv.lo ctrmm.lo ctrmv.lo ctrsm.lo \ + ctrsv.lo zaxpy.lo zcopy.lo zdotc_sub.lo zdotu_sub.lo zdscal.lo \ + zgbmv.lo zgemm.lo zgemv.lo zgerc.lo zgeru.lo zhbmv.lo zhemm.lo \ + zhemv.lo zher.lo zher2.lo zher2k.lo zherk.lo zhpmv.lo zhpr.lo \ + zhpr2.lo zscal.lo zswap.lo zsymm.lo zsyr2k.lo zsyrk.lo \ + ztbmv.lo ztbsv.lo ztpmv.lo ztpsv.lo ztrmm.lo ztrmv.lo ztrsm.lo \ + ztrsv.lo icamax.lo idamax.lo isamax.lo izamax.lo xerbla.lo +libgslcblas_la_OBJECTS = $(am_libgslcblas_la_OBJECTS) +AM_V_lt = $(am__v_lt_$(V)) +am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) +am__v_lt_0 = --silent +am__v_lt_1 = +libgslcblas_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ + $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ + $(AM_CFLAGS) $(CFLAGS) $(libgslcblas_la_LDFLAGS) $(LDFLAGS) -o \ + $@ +am_test_OBJECTS = test.$(OBJEXT) test_amax.$(OBJEXT) \ + test_asum.$(OBJEXT) test_axpy.$(OBJEXT) test_copy.$(OBJEXT) \ + test_dot.$(OBJEXT) test_gbmv.$(OBJEXT) test_gemm.$(OBJEXT) \ + test_gemv.$(OBJEXT) test_ger.$(OBJEXT) test_hbmv.$(OBJEXT) \ + test_hemm.$(OBJEXT) test_hemv.$(OBJEXT) test_her.$(OBJEXT) \ + test_her2.$(OBJEXT) test_her2k.$(OBJEXT) test_herk.$(OBJEXT) \ + test_hpmv.$(OBJEXT) test_hpr.$(OBJEXT) test_hpr2.$(OBJEXT) \ + test_nrm2.$(OBJEXT) test_rot.$(OBJEXT) test_rotg.$(OBJEXT) \ + test_rotm.$(OBJEXT) test_rotmg.$(OBJEXT) test_sbmv.$(OBJEXT) \ + test_scal.$(OBJEXT) test_spmv.$(OBJEXT) test_spr.$(OBJEXT) \ + test_spr2.$(OBJEXT) test_swap.$(OBJEXT) test_symm.$(OBJEXT) \ + test_symv.$(OBJEXT) test_syr.$(OBJEXT) test_syr2.$(OBJEXT) \ + test_syr2k.$(OBJEXT) test_syrk.$(OBJEXT) test_tbmv.$(OBJEXT) \ + test_tbsv.$(OBJEXT) test_tpmv.$(OBJEXT) test_tpsv.$(OBJEXT) \ + test_trmm.$(OBJEXT) test_trmv.$(OBJEXT) test_trsm.$(OBJEXT) \ + test_trsv.$(OBJEXT) +test_OBJECTS = $(am_test_OBJECTS) +test_DEPENDENCIES = libgslcblas.la ../ieee-utils/libgslieeeutils.la \ + ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la +AM_V_P = $(am__v_P_$(V)) +am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY)) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_$(V)) +am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_$(V)) +am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I. -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_$(V)) +am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_$(V)) +am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libgslcblas_la_SOURCES) $(test_SOURCES) +DIST_SOURCES = $(libgslcblas_la_SOURCES) $(test_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +HEADERS = $(noinst_HEADERS) $(pkginclude_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = .test +LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing aclocal-1.13 +AMTAR = $${TAR-tar} +AM_DEFAULT_VERBOSITY = 1 +AR = ar +AS = as +AUTOCONF = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing autoconf +AUTOHEADER = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing autoheader +AUTOMAKE = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing automake-1.13 +AWK = gawk +CC = gcc +CCDEPMODE = depmode=gcc3 +CFLAGS = -g -O2 +CPP = gcc -E +CPPFLAGS = +CYGPATH_W = echo +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +DLLTOOL = false +DSYMUTIL = +DUMPBIN = +ECHO_C = +ECHO_N = -n +ECHO_T = +EGREP = /usr/bin/grep -E +EXEEXT = +FGREP = /usr/bin/grep -F +GREP = /usr/bin/grep +GSLCBLAS_LDFLAGS = +GSL_CFLAGS = -I${prefix}/include +GSL_LDFLAGS = +GSL_LIBADD = +GSL_LIBM = -lm +GSL_LIBS = -L${exec_prefix}/lib -lgsl +GSL_LT_CBLAS_VERSION = 0:0:0 +GSL_LT_VERSION = 24:0:1 +GSL_MAJOR_VERSION = 2 +GSL_MINOR_VERSION = 5 +HAVE_AIX_IEEE_INTERFACE = +HAVE_DARWIN86_IEEE_INTERFACE = +HAVE_DARWIN_IEEE_INTERFACE = +HAVE_FREEBSD_IEEE_INTERFACE = +HAVE_GNUM68K_IEEE_INTERFACE = +HAVE_GNUPPC_IEEE_INTERFACE = +HAVE_GNUSPARC_IEEE_INTERFACE = +HAVE_GNUX86_IEEE_INTERFACE = +HAVE_HPUX11_IEEE_INTERFACE = +HAVE_HPUX_IEEE_INTERFACE = +HAVE_IRIX_IEEE_INTERFACE = +HAVE_NETBSD_IEEE_INTERFACE = +HAVE_OPENBSD_IEEE_INTERFACE = +HAVE_OS2EMX_IEEE_INTERFACE = +HAVE_SOLARIS_IEEE_INTERFACE = +HAVE_SUNOS4_IEEE_INTERFACE = +HAVE_TRU64_IEEE_INTERFACE = +INSTALL = /usr/bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = $(install_sh) -c -s +LD = /usr/bin/ld -m elf_x86_64 +LDFLAGS = +LIBM = -lm +LIBOBJS = +LIBS = -lm +LIBTOOL = $(SHELL) $(top_builddir)/libtool +LIPO = +LN_S = ln -s +LTLIBOBJS = +MAINT = # +MAKEINFO = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing makeinfo +MANIFEST_TOOL = : +MKDIR_P = /usr/bin/mkdir -p +NM = /usr/bin/nm -B +NMEDIT = +OBJDUMP = objdump +OBJEXT = o +OTOOL = +OTOOL64 = +PACKAGE = gsl +PACKAGE_BUGREPORT = +PACKAGE_NAME = gsl +PACKAGE_STRING = gsl 2.5 +PACKAGE_TARNAME = gsl +PACKAGE_URL = +PACKAGE_VERSION = 2.5 +PATH_SEPARATOR = : +RANLIB = ranlib +SED = /usr/bin/sed +SET_MAKE = +SHELL = /bin/sh +STRIP = strip +VERSION = 2.5 +abs_builddir = /home/groups/kipac/chto/package/gsl/gsl-2.5/cblas +abs_srcdir = /home/groups/kipac/chto/package/gsl/gsl-2.5/cblas +abs_top_builddir = /home/groups/kipac/chto/package/gsl/gsl-2.5 +abs_top_srcdir = /home/groups/kipac/chto/package/gsl/gsl-2.5 +ac_ct_AR = ar +ac_ct_CC = gcc +ac_ct_DUMPBIN = +am__include = include +am__leading_dot = . +am__quote = +am__tar = $${TAR-tar} chof - "$$tardir" +am__untar = $${TAR-tar} xf - +bindir = ${exec_prefix}/bin +build = x86_64-unknown-linux-gnu +build_alias = +build_cpu = x86_64 +build_os = linux-gnu +build_vendor = unknown +builddir = . +datadir = ${datarootdir} +datarootdir = ${prefix}/share +docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} +dvidir = ${docdir} +exec_prefix = ${prefix} +host = x86_64-unknown-linux-gnu +host_alias = +host_cpu = x86_64 +host_os = linux-gnu +host_vendor = unknown +htmldir = ${docdir} +includedir = ${prefix}/include +infodir = ${datarootdir}/info +install_sh = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/install-sh +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +localedir = ${datarootdir}/locale +localstatedir = ${prefix}/var +mandir = ${datarootdir}/man +mkdir_p = $(MKDIR_P) +oldincludedir = /usr/include +pdfdir = ${docdir} +prefix = /home/groups/kipac/chto/package/gsl/gsl_lib +program_transform_name = s,x,x, +psdir = ${docdir} +sbindir = ${exec_prefix}/sbin +sharedstatedir = ${prefix}/com +srcdir = . +sysconfdir = ${prefix}/etc +target_alias = +top_build_prefix = ../ +top_builddir = .. +top_srcdir = .. +lib_LTLIBRARIES = libgslcblas.la +libgslcblas_la_LDFLAGS = $(GSLCBLAS_LDFLAGS) -version-info $(GSL_LT_CBLAS_VERSION) +pkginclude_HEADERS = gsl_cblas.h +AM_CPPFLAGS = -I$(top_srcdir) +libgslcblas_la_SOURCES = sasum.c saxpy.c scasum.c scnrm2.c scopy.c \ + sdot.c sdsdot.c sgbmv.c sgemm.c sgemv.c sger.c snrm2.c srot.c \ + srotg.c srotm.c srotmg.c ssbmv.c sscal.c sspmv.c sspr.c \ + sspr2.c sswap.c ssymm.c ssymv.c ssyr.c ssyr2.c ssyr2k.c \ + ssyrk.c stbmv.c stbsv.c stpmv.c stpsv.c strmm.c strmv.c \ + strsm.c strsv.c dasum.c daxpy.c dcopy.c ddot.c dgbmv.c dgemm.c \ + dgemv.c dger.c dnrm2.c drot.c drotg.c drotm.c drotmg.c dsbmv.c \ + dscal.c dsdot.c dspmv.c dspr.c dspr2.c dswap.c dsymm.c dsymv.c \ + dsyr.c dsyr2.c dsyr2k.c dsyrk.c dtbmv.c dtbsv.c dtpmv.c \ + dtpsv.c dtrmm.c dtrmv.c dtrsm.c dtrsv.c dzasum.c dznrm2.c \ + caxpy.c ccopy.c cdotc_sub.c cdotu_sub.c cgbmv.c cgemm.c \ + cgemv.c cgerc.c cgeru.c chbmv.c chemm.c chemv.c cher.c cher2.c \ + cher2k.c cherk.c chpmv.c chpr.c chpr2.c cscal.c csscal.c \ + cswap.c csymm.c csyr2k.c csyrk.c ctbmv.c ctbsv.c ctpmv.c \ + ctpsv.c ctrmm.c ctrmv.c ctrsm.c ctrsv.c zaxpy.c zcopy.c \ + zdotc_sub.c zdotu_sub.c zdscal.c zgbmv.c zgemm.c zgemv.c \ + zgerc.c zgeru.c zhbmv.c zhemm.c zhemv.c zher.c zher2.c \ + zher2k.c zherk.c zhpmv.c zhpr.c zhpr2.c zscal.c zswap.c \ + zsymm.c zsyr2k.c zsyrk.c ztbmv.c ztbsv.c ztpmv.c ztpsv.c \ + ztrmm.c ztrmv.c ztrsm.c ztrsv.c icamax.c idamax.c isamax.c \ + izamax.c xerbla.c +noinst_HEADERS = tests.c tests.h error_cblas.h error_cblas_l2.h \ + error_cblas_l3.h cblas.h source_asum_c.h source_asum_r.h \ + source_axpy_c.h source_axpy_r.h source_copy_c.h \ + source_copy_r.h source_dot_c.h source_dot_r.h source_gbmv_c.h \ + source_gbmv_r.h source_gemm_c.h source_gemm_r.h \ + source_gemv_c.h source_gemv_r.h source_ger.h source_gerc.h \ + source_geru.h source_hbmv.h source_hemm.h source_hemv.h \ + source_her.h source_her2.h source_her2k.h source_herk.h \ + source_hpmv.h source_hpr.h source_hpr2.h source_iamax_c.h \ + source_iamax_r.h source_nrm2_c.h source_nrm2_r.h source_rot.h \ + source_rotg.h source_rotm.h source_rotmg.h source_sbmv.h \ + source_scal_c.h source_scal_c_s.h source_scal_r.h \ + source_spmv.h source_spr.h source_spr2.h source_swap_c.h \ + source_swap_r.h source_symm_c.h source_symm_r.h source_symv.h \ + source_syr.h source_syr2.h source_syr2k_c.h source_syr2k_r.h \ + source_syrk_c.h source_syrk_r.h source_tbmv_c.h \ + source_tbmv_r.h source_tbsv_c.h source_tbsv_r.h \ + source_tpmv_c.h source_tpmv_r.h source_tpsv_c.h \ + source_tpsv_r.h source_trmm_c.h source_trmm_r.h \ + source_trmv_c.h source_trmv_r.h source_trsm_c.h \ + source_trsm_r.h source_trsv_c.h source_trsv_r.h hypot.c +TESTS = $(check_PROGRAMS) +test_LDADD = libgslcblas.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la +test_SOURCES = test.c test_amax.c test_asum.c test_axpy.c test_copy.c test_dot.c test_gbmv.c test_gemm.c test_gemv.c test_ger.c test_hbmv.c test_hemm.c test_hemv.c test_her.c test_her2.c test_her2k.c test_herk.c test_hpmv.c test_hpr.c test_hpr2.c test_nrm2.c test_rot.c test_rotg.c test_rotm.c test_rotmg.c test_sbmv.c test_scal.c test_spmv.c test_spr.c test_spr2.c test_swap.c test_symm.c test_symv.c test_syr.c test_syr2.c test_syr2k.c test_syrk.c test_tbmv.c test_tbsv.c test_tpmv.c test_tpsv.c test_trmm.c test_trmv.c test_trsm.c test_trsv.c +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu cblas/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu cblas/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: # $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): # $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +install-libLTLIBRARIES: $(lib_LTLIBRARIES) + @$(NORMAL_INSTALL) + @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ + list2=; for p in $$list; do \ + if test -f $$p; then \ + list2="$$list2 $$p"; \ + else :; fi; \ + done; \ + test -z "$$list2" || { \ + echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ + } + +uninstall-libLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ + for p in $$list; do \ + $(am__strip_dir) \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \ + done + +clean-libLTLIBRARIES: + -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) + @list='$(lib_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libgslcblas.la: $(libgslcblas_la_OBJECTS) $(libgslcblas_la_DEPENDENCIES) $(EXTRA_libgslcblas_la_DEPENDENCIES) + $(AM_V_CCLD)$(libgslcblas_la_LINK) -rpath $(libdir) $(libgslcblas_la_OBJECTS) $(libgslcblas_la_LIBADD) $(LIBS) + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) $(EXTRA_test_DEPENDENCIES) + @rm -f test$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_OBJECTS) $(test_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +include ./$(DEPDIR)/caxpy.Plo +include ./$(DEPDIR)/ccopy.Plo +include ./$(DEPDIR)/cdotc_sub.Plo +include ./$(DEPDIR)/cdotu_sub.Plo +include ./$(DEPDIR)/cgbmv.Plo +include ./$(DEPDIR)/cgemm.Plo +include ./$(DEPDIR)/cgemv.Plo +include ./$(DEPDIR)/cgerc.Plo +include ./$(DEPDIR)/cgeru.Plo +include ./$(DEPDIR)/chbmv.Plo +include ./$(DEPDIR)/chemm.Plo +include ./$(DEPDIR)/chemv.Plo +include ./$(DEPDIR)/cher.Plo +include ./$(DEPDIR)/cher2.Plo +include ./$(DEPDIR)/cher2k.Plo +include ./$(DEPDIR)/cherk.Plo +include ./$(DEPDIR)/chpmv.Plo +include ./$(DEPDIR)/chpr.Plo +include ./$(DEPDIR)/chpr2.Plo +include ./$(DEPDIR)/cscal.Plo +include ./$(DEPDIR)/csscal.Plo +include ./$(DEPDIR)/cswap.Plo +include ./$(DEPDIR)/csymm.Plo +include ./$(DEPDIR)/csyr2k.Plo +include ./$(DEPDIR)/csyrk.Plo +include ./$(DEPDIR)/ctbmv.Plo +include ./$(DEPDIR)/ctbsv.Plo +include ./$(DEPDIR)/ctpmv.Plo +include ./$(DEPDIR)/ctpsv.Plo +include ./$(DEPDIR)/ctrmm.Plo +include ./$(DEPDIR)/ctrmv.Plo +include ./$(DEPDIR)/ctrsm.Plo +include ./$(DEPDIR)/ctrsv.Plo +include ./$(DEPDIR)/dasum.Plo +include ./$(DEPDIR)/daxpy.Plo +include ./$(DEPDIR)/dcopy.Plo +include ./$(DEPDIR)/ddot.Plo +include ./$(DEPDIR)/dgbmv.Plo +include ./$(DEPDIR)/dgemm.Plo +include ./$(DEPDIR)/dgemv.Plo +include ./$(DEPDIR)/dger.Plo +include ./$(DEPDIR)/dnrm2.Plo +include ./$(DEPDIR)/drot.Plo +include ./$(DEPDIR)/drotg.Plo +include ./$(DEPDIR)/drotm.Plo +include ./$(DEPDIR)/drotmg.Plo +include ./$(DEPDIR)/dsbmv.Plo +include ./$(DEPDIR)/dscal.Plo +include ./$(DEPDIR)/dsdot.Plo +include ./$(DEPDIR)/dspmv.Plo +include ./$(DEPDIR)/dspr.Plo +include ./$(DEPDIR)/dspr2.Plo +include ./$(DEPDIR)/dswap.Plo +include ./$(DEPDIR)/dsymm.Plo +include ./$(DEPDIR)/dsymv.Plo +include ./$(DEPDIR)/dsyr.Plo +include ./$(DEPDIR)/dsyr2.Plo +include ./$(DEPDIR)/dsyr2k.Plo +include ./$(DEPDIR)/dsyrk.Plo +include ./$(DEPDIR)/dtbmv.Plo +include ./$(DEPDIR)/dtbsv.Plo +include ./$(DEPDIR)/dtpmv.Plo +include ./$(DEPDIR)/dtpsv.Plo +include ./$(DEPDIR)/dtrmm.Plo +include ./$(DEPDIR)/dtrmv.Plo +include ./$(DEPDIR)/dtrsm.Plo +include ./$(DEPDIR)/dtrsv.Plo +include ./$(DEPDIR)/dzasum.Plo +include ./$(DEPDIR)/dznrm2.Plo +include ./$(DEPDIR)/icamax.Plo +include ./$(DEPDIR)/idamax.Plo +include ./$(DEPDIR)/isamax.Plo +include ./$(DEPDIR)/izamax.Plo +include ./$(DEPDIR)/sasum.Plo +include ./$(DEPDIR)/saxpy.Plo +include ./$(DEPDIR)/scasum.Plo +include ./$(DEPDIR)/scnrm2.Plo +include ./$(DEPDIR)/scopy.Plo +include ./$(DEPDIR)/sdot.Plo +include ./$(DEPDIR)/sdsdot.Plo +include ./$(DEPDIR)/sgbmv.Plo +include ./$(DEPDIR)/sgemm.Plo +include ./$(DEPDIR)/sgemv.Plo +include ./$(DEPDIR)/sger.Plo +include ./$(DEPDIR)/snrm2.Plo +include ./$(DEPDIR)/srot.Plo +include ./$(DEPDIR)/srotg.Plo +include ./$(DEPDIR)/srotm.Plo +include ./$(DEPDIR)/srotmg.Plo +include ./$(DEPDIR)/ssbmv.Plo +include ./$(DEPDIR)/sscal.Plo +include ./$(DEPDIR)/sspmv.Plo +include ./$(DEPDIR)/sspr.Plo +include ./$(DEPDIR)/sspr2.Plo +include ./$(DEPDIR)/sswap.Plo +include ./$(DEPDIR)/ssymm.Plo +include ./$(DEPDIR)/ssymv.Plo +include ./$(DEPDIR)/ssyr.Plo +include ./$(DEPDIR)/ssyr2.Plo +include ./$(DEPDIR)/ssyr2k.Plo +include ./$(DEPDIR)/ssyrk.Plo +include ./$(DEPDIR)/stbmv.Plo +include ./$(DEPDIR)/stbsv.Plo +include ./$(DEPDIR)/stpmv.Plo +include ./$(DEPDIR)/stpsv.Plo +include ./$(DEPDIR)/strmm.Plo +include ./$(DEPDIR)/strmv.Plo +include ./$(DEPDIR)/strsm.Plo +include ./$(DEPDIR)/strsv.Plo +include ./$(DEPDIR)/test.Po +include ./$(DEPDIR)/test_amax.Po +include ./$(DEPDIR)/test_asum.Po +include ./$(DEPDIR)/test_axpy.Po +include ./$(DEPDIR)/test_copy.Po +include ./$(DEPDIR)/test_dot.Po +include ./$(DEPDIR)/test_gbmv.Po +include ./$(DEPDIR)/test_gemm.Po +include ./$(DEPDIR)/test_gemv.Po +include ./$(DEPDIR)/test_ger.Po +include ./$(DEPDIR)/test_hbmv.Po +include ./$(DEPDIR)/test_hemm.Po +include ./$(DEPDIR)/test_hemv.Po +include ./$(DEPDIR)/test_her.Po +include ./$(DEPDIR)/test_her2.Po +include ./$(DEPDIR)/test_her2k.Po +include ./$(DEPDIR)/test_herk.Po +include ./$(DEPDIR)/test_hpmv.Po +include ./$(DEPDIR)/test_hpr.Po +include ./$(DEPDIR)/test_hpr2.Po +include ./$(DEPDIR)/test_nrm2.Po +include ./$(DEPDIR)/test_rot.Po +include ./$(DEPDIR)/test_rotg.Po +include ./$(DEPDIR)/test_rotm.Po +include ./$(DEPDIR)/test_rotmg.Po +include ./$(DEPDIR)/test_sbmv.Po +include ./$(DEPDIR)/test_scal.Po +include ./$(DEPDIR)/test_spmv.Po +include ./$(DEPDIR)/test_spr.Po +include ./$(DEPDIR)/test_spr2.Po +include ./$(DEPDIR)/test_swap.Po +include ./$(DEPDIR)/test_symm.Po +include ./$(DEPDIR)/test_symv.Po +include ./$(DEPDIR)/test_syr.Po +include ./$(DEPDIR)/test_syr2.Po +include ./$(DEPDIR)/test_syr2k.Po +include ./$(DEPDIR)/test_syrk.Po +include ./$(DEPDIR)/test_tbmv.Po +include ./$(DEPDIR)/test_tbsv.Po +include ./$(DEPDIR)/test_tpmv.Po +include ./$(DEPDIR)/test_tpsv.Po +include ./$(DEPDIR)/test_trmm.Po +include ./$(DEPDIR)/test_trmv.Po +include ./$(DEPDIR)/test_trsm.Po +include ./$(DEPDIR)/test_trsv.Po +include ./$(DEPDIR)/xerbla.Plo +include ./$(DEPDIR)/zaxpy.Plo +include ./$(DEPDIR)/zcopy.Plo +include ./$(DEPDIR)/zdotc_sub.Plo +include ./$(DEPDIR)/zdotu_sub.Plo +include ./$(DEPDIR)/zdscal.Plo +include ./$(DEPDIR)/zgbmv.Plo +include ./$(DEPDIR)/zgemm.Plo +include ./$(DEPDIR)/zgemv.Plo +include ./$(DEPDIR)/zgerc.Plo +include ./$(DEPDIR)/zgeru.Plo +include ./$(DEPDIR)/zhbmv.Plo +include ./$(DEPDIR)/zhemm.Plo +include ./$(DEPDIR)/zhemv.Plo +include ./$(DEPDIR)/zher.Plo +include ./$(DEPDIR)/zher2.Plo +include ./$(DEPDIR)/zher2k.Plo +include ./$(DEPDIR)/zherk.Plo +include ./$(DEPDIR)/zhpmv.Plo +include ./$(DEPDIR)/zhpr.Plo +include ./$(DEPDIR)/zhpr2.Plo +include ./$(DEPDIR)/zscal.Plo +include ./$(DEPDIR)/zswap.Plo +include ./$(DEPDIR)/zsymm.Plo +include ./$(DEPDIR)/zsyr2k.Plo +include ./$(DEPDIR)/zsyrk.Plo +include ./$(DEPDIR)/ztbmv.Plo +include ./$(DEPDIR)/ztbsv.Plo +include ./$(DEPDIR)/ztpmv.Plo +include ./$(DEPDIR)/ztpsv.Plo +include ./$(DEPDIR)/ztrmm.Plo +include ./$(DEPDIR)/ztrmv.Plo +include ./$(DEPDIR)/ztrsm.Plo +include ./$(DEPDIR)/ztrsv.Plo + +.c.o: + $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# $(AM_V_CC)source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(COMPILE) -c $< + +.c.obj: + $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# $(AM_V_CC)source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: + $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +# $(AM_V_CC)source='$<' object='$@' libtool=yes \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-pkgincludeHEADERS: $(pkginclude_HEADERS) + @$(NORMAL_INSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \ + done + +uninstall-pkgincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + else \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_PROGRAMS) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +test.log: test$(EXEEXT) + @p='test$(EXEEXT)'; \ + b='test'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +#.test$(EXEEXT).log: +# @p='$<'; \ +# $(am__set_b); \ +# $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +# --log-file $$b.log --trs-file $$b.trs \ +# $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +# "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-am +all-am: Makefile $(LTLIBRARIES) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(pkgincludedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-checkPROGRAMS clean-generic clean-libLTLIBRARIES \ + clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-pkgincludeHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: install-libLTLIBRARIES + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-libLTLIBRARIES uninstall-pkgincludeHEADERS + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libLTLIBRARIES \ + clean-libtool cscopelist-am ctags ctags-am distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am \ + install-libLTLIBRARIES install-man install-pdf install-pdf-am \ + install-pkgincludeHEADERS install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am recheck tags tags-am uninstall \ + uninstall-am uninstall-libLTLIBRARIES \ + uninstall-pkgincludeHEADERS + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gsl-2.5/cblas/Makefile.am b/gsl-2.5/cblas/Makefile.am new file mode 100644 index 00000000..12a92c0b --- /dev/null +++ b/gsl-2.5/cblas/Makefile.am @@ -0,0 +1,19 @@ +lib_LTLIBRARIES = libgslcblas.la +libgslcblas_la_LDFLAGS = $(GSLCBLAS_LDFLAGS) -version-info $(GSL_LT_CBLAS_VERSION) + +pkginclude_HEADERS = gsl_cblas.h + +AM_CPPFLAGS = -I$(top_srcdir) + +libgslcblas_la_SOURCES = sasum.c saxpy.c scasum.c scnrm2.c scopy.c sdot.c sdsdot.c sgbmv.c sgemm.c sgemv.c sger.c snrm2.c srot.c srotg.c srotm.c srotmg.c ssbmv.c sscal.c sspmv.c sspr.c sspr2.c sswap.c ssymm.c ssymv.c ssyr.c ssyr2.c ssyr2k.c ssyrk.c stbmv.c stbsv.c stpmv.c stpsv.c strmm.c strmv.c strsm.c strsv.c dasum.c daxpy.c dcopy.c ddot.c dgbmv.c dgemm.c dgemv.c dger.c dnrm2.c drot.c drotg.c drotm.c drotmg.c dsbmv.c dscal.c dsdot.c dspmv.c dspr.c dspr2.c dswap.c dsymm.c dsymv.c dsyr.c dsyr2.c dsyr2k.c dsyrk.c dtbmv.c dtbsv.c dtpmv.c dtpsv.c dtrmm.c dtrmv.c dtrsm.c dtrsv.c dzasum.c dznrm2.c caxpy.c ccopy.c cdotc_sub.c cdotu_sub.c cgbmv.c cgemm.c cgemv.c cgerc.c cgeru.c chbmv.c chemm.c chemv.c cher.c cher2.c cher2k.c cherk.c chpmv.c chpr.c chpr2.c cscal.c csscal.c cswap.c csymm.c csyr2k.c csyrk.c ctbmv.c ctbsv.c ctpmv.c ctpsv.c ctrmm.c ctrmv.c ctrsm.c ctrsv.c zaxpy.c zcopy.c zdotc_sub.c zdotu_sub.c zdscal.c zgbmv.c zgemm.c zgemv.c zgerc.c zgeru.c zhbmv.c zhemm.c zhemv.c zher.c zher2.c zher2k.c zherk.c zhpmv.c zhpr.c zhpr2.c zscal.c zswap.c zsymm.c zsyr2k.c zsyrk.c ztbmv.c ztbsv.c ztpmv.c ztpsv.c ztrmm.c ztrmv.c ztrsm.c ztrsv.c icamax.c idamax.c isamax.c izamax.c xerbla.c + +noinst_HEADERS = tests.c tests.h error_cblas.h error_cblas_l2.h error_cblas_l3.h cblas.h source_asum_c.h source_asum_r.h source_axpy_c.h source_axpy_r.h source_copy_c.h source_copy_r.h source_dot_c.h source_dot_r.h source_gbmv_c.h source_gbmv_r.h source_gemm_c.h source_gemm_r.h source_gemv_c.h source_gemv_r.h source_ger.h source_gerc.h source_geru.h source_hbmv.h source_hemm.h source_hemv.h source_her.h source_her2.h source_her2k.h source_herk.h source_hpmv.h source_hpr.h source_hpr2.h source_iamax_c.h source_iamax_r.h source_nrm2_c.h source_nrm2_r.h source_rot.h source_rotg.h source_rotm.h source_rotmg.h source_sbmv.h source_scal_c.h source_scal_c_s.h source_scal_r.h source_spmv.h source_spr.h source_spr2.h source_swap_c.h source_swap_r.h source_symm_c.h source_symm_r.h source_symv.h source_syr.h source_syr2.h source_syr2k_c.h source_syr2k_r.h source_syrk_c.h source_syrk_r.h source_tbmv_c.h source_tbmv_r.h source_tbsv_c.h source_tbsv_r.h source_tpmv_c.h source_tpmv_r.h source_tpsv_c.h source_tpsv_r.h source_trmm_c.h source_trmm_r.h source_trmv_c.h source_trmv_r.h source_trsm_c.h source_trsm_r.h source_trsv_c.h source_trsv_r.h hypot.c + +check_PROGRAMS = test +TESTS = $(check_PROGRAMS) + +test_LDADD = libgslcblas.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la +test_SOURCES = test.c test_amax.c test_asum.c test_axpy.c test_copy.c test_dot.c test_gbmv.c test_gemm.c test_gemv.c test_ger.c test_hbmv.c test_hemm.c test_hemv.c test_her.c test_her2.c test_her2k.c test_herk.c test_hpmv.c test_hpr.c test_hpr2.c test_nrm2.c test_rot.c test_rotg.c test_rotm.c test_rotmg.c test_sbmv.c test_scal.c test_spmv.c test_spr.c test_spr2.c test_swap.c test_symm.c test_symv.c test_syr.c test_syr2.c test_syr2k.c test_syrk.c test_tbmv.c test_tbsv.c test_tpmv.c test_tpsv.c test_trmm.c test_trmv.c test_trsm.c test_trsv.c + + + diff --git a/gsl-2.5/cblas/Makefile.in b/gsl-2.5/cblas/Makefile.in new file mode 100644 index 00000000..a846889b --- /dev/null +++ b/gsl-2.5/cblas/Makefile.in @@ -0,0 +1,1317 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + + +VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +check_PROGRAMS = test$(EXEEXT) +subdir = cblas +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp \ + $(noinst_HEADERS) $(pkginclude_HEADERS) \ + $(top_srcdir)/test-driver ChangeLog TODO +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(pkgincludedir)" +LTLIBRARIES = $(lib_LTLIBRARIES) +libgslcblas_la_LIBADD = +am_libgslcblas_la_OBJECTS = sasum.lo saxpy.lo scasum.lo scnrm2.lo \ + scopy.lo sdot.lo sdsdot.lo sgbmv.lo sgemm.lo sgemv.lo sger.lo \ + snrm2.lo srot.lo srotg.lo srotm.lo srotmg.lo ssbmv.lo sscal.lo \ + sspmv.lo sspr.lo sspr2.lo sswap.lo ssymm.lo ssymv.lo ssyr.lo \ + ssyr2.lo ssyr2k.lo ssyrk.lo stbmv.lo stbsv.lo stpmv.lo \ + stpsv.lo strmm.lo strmv.lo strsm.lo strsv.lo dasum.lo daxpy.lo \ + dcopy.lo ddot.lo dgbmv.lo dgemm.lo dgemv.lo dger.lo dnrm2.lo \ + drot.lo drotg.lo drotm.lo drotmg.lo dsbmv.lo dscal.lo dsdot.lo \ + dspmv.lo dspr.lo dspr2.lo dswap.lo dsymm.lo dsymv.lo dsyr.lo \ + dsyr2.lo dsyr2k.lo dsyrk.lo dtbmv.lo dtbsv.lo dtpmv.lo \ + dtpsv.lo dtrmm.lo dtrmv.lo dtrsm.lo dtrsv.lo dzasum.lo \ + dznrm2.lo caxpy.lo ccopy.lo cdotc_sub.lo cdotu_sub.lo cgbmv.lo \ + cgemm.lo cgemv.lo cgerc.lo cgeru.lo chbmv.lo chemm.lo chemv.lo \ + cher.lo cher2.lo cher2k.lo cherk.lo chpmv.lo chpr.lo chpr2.lo \ + cscal.lo csscal.lo cswap.lo csymm.lo csyr2k.lo csyrk.lo \ + ctbmv.lo ctbsv.lo ctpmv.lo ctpsv.lo ctrmm.lo ctrmv.lo ctrsm.lo \ + ctrsv.lo zaxpy.lo zcopy.lo zdotc_sub.lo zdotu_sub.lo zdscal.lo \ + zgbmv.lo zgemm.lo zgemv.lo zgerc.lo zgeru.lo zhbmv.lo zhemm.lo \ + zhemv.lo zher.lo zher2.lo zher2k.lo zherk.lo zhpmv.lo zhpr.lo \ + zhpr2.lo zscal.lo zswap.lo zsymm.lo zsyr2k.lo zsyrk.lo \ + ztbmv.lo ztbsv.lo ztpmv.lo ztpsv.lo ztrmm.lo ztrmv.lo ztrsm.lo \ + ztrsv.lo icamax.lo idamax.lo isamax.lo izamax.lo xerbla.lo +libgslcblas_la_OBJECTS = $(am_libgslcblas_la_OBJECTS) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +libgslcblas_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ + $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ + $(AM_CFLAGS) $(CFLAGS) $(libgslcblas_la_LDFLAGS) $(LDFLAGS) -o \ + $@ +am_test_OBJECTS = test.$(OBJEXT) test_amax.$(OBJEXT) \ + test_asum.$(OBJEXT) test_axpy.$(OBJEXT) test_copy.$(OBJEXT) \ + test_dot.$(OBJEXT) test_gbmv.$(OBJEXT) test_gemm.$(OBJEXT) \ + test_gemv.$(OBJEXT) test_ger.$(OBJEXT) test_hbmv.$(OBJEXT) \ + test_hemm.$(OBJEXT) test_hemv.$(OBJEXT) test_her.$(OBJEXT) \ + test_her2.$(OBJEXT) test_her2k.$(OBJEXT) test_herk.$(OBJEXT) \ + test_hpmv.$(OBJEXT) test_hpr.$(OBJEXT) test_hpr2.$(OBJEXT) \ + test_nrm2.$(OBJEXT) test_rot.$(OBJEXT) test_rotg.$(OBJEXT) \ + test_rotm.$(OBJEXT) test_rotmg.$(OBJEXT) test_sbmv.$(OBJEXT) \ + test_scal.$(OBJEXT) test_spmv.$(OBJEXT) test_spr.$(OBJEXT) \ + test_spr2.$(OBJEXT) test_swap.$(OBJEXT) test_symm.$(OBJEXT) \ + test_symv.$(OBJEXT) test_syr.$(OBJEXT) test_syr2.$(OBJEXT) \ + test_syr2k.$(OBJEXT) test_syrk.$(OBJEXT) test_tbmv.$(OBJEXT) \ + test_tbsv.$(OBJEXT) test_tpmv.$(OBJEXT) test_tpsv.$(OBJEXT) \ + test_trmm.$(OBJEXT) test_trmv.$(OBJEXT) test_trsm.$(OBJEXT) \ + test_trsv.$(OBJEXT) +test_OBJECTS = $(am_test_OBJECTS) +test_DEPENDENCIES = libgslcblas.la ../ieee-utils/libgslieeeutils.la \ + ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libgslcblas_la_SOURCES) $(test_SOURCES) +DIST_SOURCES = $(libgslcblas_la_SOURCES) $(test_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +HEADERS = $(noinst_HEADERS) $(pkginclude_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = @EXEEXT@ .test +LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +GSLCBLAS_LDFLAGS = @GSLCBLAS_LDFLAGS@ +GSL_CFLAGS = @GSL_CFLAGS@ +GSL_LDFLAGS = @GSL_LDFLAGS@ +GSL_LIBADD = @GSL_LIBADD@ +GSL_LIBM = @GSL_LIBM@ +GSL_LIBS = @GSL_LIBS@ +GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ +GSL_LT_VERSION = @GSL_LT_VERSION@ +GSL_MAJOR_VERSION = @GSL_MAJOR_VERSION@ +GSL_MINOR_VERSION = @GSL_MINOR_VERSION@ +HAVE_AIX_IEEE_INTERFACE = @HAVE_AIX_IEEE_INTERFACE@ +HAVE_DARWIN86_IEEE_INTERFACE = @HAVE_DARWIN86_IEEE_INTERFACE@ +HAVE_DARWIN_IEEE_INTERFACE = @HAVE_DARWIN_IEEE_INTERFACE@ +HAVE_FREEBSD_IEEE_INTERFACE = @HAVE_FREEBSD_IEEE_INTERFACE@ +HAVE_GNUM68K_IEEE_INTERFACE = @HAVE_GNUM68K_IEEE_INTERFACE@ +HAVE_GNUPPC_IEEE_INTERFACE = @HAVE_GNUPPC_IEEE_INTERFACE@ +HAVE_GNUSPARC_IEEE_INTERFACE = @HAVE_GNUSPARC_IEEE_INTERFACE@ +HAVE_GNUX86_IEEE_INTERFACE = @HAVE_GNUX86_IEEE_INTERFACE@ +HAVE_HPUX11_IEEE_INTERFACE = @HAVE_HPUX11_IEEE_INTERFACE@ +HAVE_HPUX_IEEE_INTERFACE = @HAVE_HPUX_IEEE_INTERFACE@ +HAVE_IRIX_IEEE_INTERFACE = @HAVE_IRIX_IEEE_INTERFACE@ +HAVE_NETBSD_IEEE_INTERFACE = @HAVE_NETBSD_IEEE_INTERFACE@ +HAVE_OPENBSD_IEEE_INTERFACE = @HAVE_OPENBSD_IEEE_INTERFACE@ +HAVE_OS2EMX_IEEE_INTERFACE = @HAVE_OS2EMX_IEEE_INTERFACE@ +HAVE_SOLARIS_IEEE_INTERFACE = @HAVE_SOLARIS_IEEE_INTERFACE@ +HAVE_SUNOS4_IEEE_INTERFACE = @HAVE_SUNOS4_IEEE_INTERFACE@ +HAVE_TRU64_IEEE_INTERFACE = @HAVE_TRU64_IEEE_INTERFACE@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBM = @LIBM@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +lib_LTLIBRARIES = libgslcblas.la +libgslcblas_la_LDFLAGS = $(GSLCBLAS_LDFLAGS) -version-info $(GSL_LT_CBLAS_VERSION) +pkginclude_HEADERS = gsl_cblas.h +AM_CPPFLAGS = -I$(top_srcdir) +libgslcblas_la_SOURCES = sasum.c saxpy.c scasum.c scnrm2.c scopy.c \ + sdot.c sdsdot.c sgbmv.c sgemm.c sgemv.c sger.c snrm2.c srot.c \ + srotg.c srotm.c srotmg.c ssbmv.c sscal.c sspmv.c sspr.c \ + sspr2.c sswap.c ssymm.c ssymv.c ssyr.c ssyr2.c ssyr2k.c \ + ssyrk.c stbmv.c stbsv.c stpmv.c stpsv.c strmm.c strmv.c \ + strsm.c strsv.c dasum.c daxpy.c dcopy.c ddot.c dgbmv.c dgemm.c \ + dgemv.c dger.c dnrm2.c drot.c drotg.c drotm.c drotmg.c dsbmv.c \ + dscal.c dsdot.c dspmv.c dspr.c dspr2.c dswap.c dsymm.c dsymv.c \ + dsyr.c dsyr2.c dsyr2k.c dsyrk.c dtbmv.c dtbsv.c dtpmv.c \ + dtpsv.c dtrmm.c dtrmv.c dtrsm.c dtrsv.c dzasum.c dznrm2.c \ + caxpy.c ccopy.c cdotc_sub.c cdotu_sub.c cgbmv.c cgemm.c \ + cgemv.c cgerc.c cgeru.c chbmv.c chemm.c chemv.c cher.c cher2.c \ + cher2k.c cherk.c chpmv.c chpr.c chpr2.c cscal.c csscal.c \ + cswap.c csymm.c csyr2k.c csyrk.c ctbmv.c ctbsv.c ctpmv.c \ + ctpsv.c ctrmm.c ctrmv.c ctrsm.c ctrsv.c zaxpy.c zcopy.c \ + zdotc_sub.c zdotu_sub.c zdscal.c zgbmv.c zgemm.c zgemv.c \ + zgerc.c zgeru.c zhbmv.c zhemm.c zhemv.c zher.c zher2.c \ + zher2k.c zherk.c zhpmv.c zhpr.c zhpr2.c zscal.c zswap.c \ + zsymm.c zsyr2k.c zsyrk.c ztbmv.c ztbsv.c ztpmv.c ztpsv.c \ + ztrmm.c ztrmv.c ztrsm.c ztrsv.c icamax.c idamax.c isamax.c \ + izamax.c xerbla.c +noinst_HEADERS = tests.c tests.h error_cblas.h error_cblas_l2.h \ + error_cblas_l3.h cblas.h source_asum_c.h source_asum_r.h \ + source_axpy_c.h source_axpy_r.h source_copy_c.h \ + source_copy_r.h source_dot_c.h source_dot_r.h source_gbmv_c.h \ + source_gbmv_r.h source_gemm_c.h source_gemm_r.h \ + source_gemv_c.h source_gemv_r.h source_ger.h source_gerc.h \ + source_geru.h source_hbmv.h source_hemm.h source_hemv.h \ + source_her.h source_her2.h source_her2k.h source_herk.h \ + source_hpmv.h source_hpr.h source_hpr2.h source_iamax_c.h \ + source_iamax_r.h source_nrm2_c.h source_nrm2_r.h source_rot.h \ + source_rotg.h source_rotm.h source_rotmg.h source_sbmv.h \ + source_scal_c.h source_scal_c_s.h source_scal_r.h \ + source_spmv.h source_spr.h source_spr2.h source_swap_c.h \ + source_swap_r.h source_symm_c.h source_symm_r.h source_symv.h \ + source_syr.h source_syr2.h source_syr2k_c.h source_syr2k_r.h \ + source_syrk_c.h source_syrk_r.h source_tbmv_c.h \ + source_tbmv_r.h source_tbsv_c.h source_tbsv_r.h \ + source_tpmv_c.h source_tpmv_r.h source_tpsv_c.h \ + source_tpsv_r.h source_trmm_c.h source_trmm_r.h \ + source_trmv_c.h source_trmv_r.h source_trsm_c.h \ + source_trsm_r.h source_trsv_c.h source_trsv_r.h hypot.c +TESTS = $(check_PROGRAMS) +test_LDADD = libgslcblas.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la +test_SOURCES = test.c test_amax.c test_asum.c test_axpy.c test_copy.c test_dot.c test_gbmv.c test_gemm.c test_gemv.c test_ger.c test_hbmv.c test_hemm.c test_hemv.c test_her.c test_her2.c test_her2k.c test_herk.c test_hpmv.c test_hpr.c test_hpr2.c test_nrm2.c test_rot.c test_rotg.c test_rotm.c test_rotmg.c test_sbmv.c test_scal.c test_spmv.c test_spr.c test_spr2.c test_swap.c test_symm.c test_symv.c test_syr.c test_syr2.c test_syr2k.c test_syrk.c test_tbmv.c test_tbsv.c test_tpmv.c test_tpsv.c test_trmm.c test_trmv.c test_trsm.c test_trsv.c +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu cblas/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu cblas/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +install-libLTLIBRARIES: $(lib_LTLIBRARIES) + @$(NORMAL_INSTALL) + @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ + list2=; for p in $$list; do \ + if test -f $$p; then \ + list2="$$list2 $$p"; \ + else :; fi; \ + done; \ + test -z "$$list2" || { \ + echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ + } + +uninstall-libLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ + for p in $$list; do \ + $(am__strip_dir) \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \ + done + +clean-libLTLIBRARIES: + -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) + @list='$(lib_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libgslcblas.la: $(libgslcblas_la_OBJECTS) $(libgslcblas_la_DEPENDENCIES) $(EXTRA_libgslcblas_la_DEPENDENCIES) + $(AM_V_CCLD)$(libgslcblas_la_LINK) -rpath $(libdir) $(libgslcblas_la_OBJECTS) $(libgslcblas_la_LIBADD) $(LIBS) + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) $(EXTRA_test_DEPENDENCIES) + @rm -f test$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_OBJECTS) $(test_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/caxpy.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ccopy.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cdotc_sub.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cdotu_sub.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cgbmv.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cgemm.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cgemv.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cgerc.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cgeru.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chbmv.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chemm.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chemv.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cher.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cher2.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cher2k.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cherk.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chpmv.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chpr.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chpr2.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cscal.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/csscal.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cswap.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/csymm.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/csyr2k.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/csyrk.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ctbmv.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ctbsv.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ctpmv.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ctpsv.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ctrmm.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ctrmv.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ctrsm.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ctrsv.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dasum.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/daxpy.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dcopy.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ddot.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dgbmv.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dgemm.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dgemv.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dger.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dnrm2.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/drot.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/drotg.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/drotm.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/drotmg.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dsbmv.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dscal.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dsdot.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dspmv.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dspr.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dspr2.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dswap.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dsymm.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dsymv.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dsyr.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dsyr2.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dsyr2k.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dsyrk.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dtbmv.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dtbsv.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dtpmv.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dtpsv.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dtrmm.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dtrmv.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dtrsm.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dtrsv.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dzasum.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dznrm2.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/icamax.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/idamax.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isamax.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/izamax.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sasum.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/saxpy.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/scasum.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/scnrm2.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/scopy.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sdot.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sdsdot.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sgbmv.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sgemm.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sgemv.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sger.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/snrm2.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/srot.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/srotg.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/srotm.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/srotmg.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ssbmv.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sscal.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sspmv.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sspr.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sspr2.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sswap.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ssymm.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ssymv.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ssyr.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ssyr2.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ssyr2k.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ssyrk.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stbmv.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stbsv.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stpmv.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stpsv.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strmm.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strmv.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strsm.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strsv.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_amax.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_asum.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_axpy.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_copy.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_dot.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_gbmv.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_gemm.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_gemv.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_ger.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_hbmv.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_hemm.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_hemv.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_her.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_her2.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_her2k.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_herk.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_hpmv.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_hpr.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_hpr2.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_nrm2.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_rot.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_rotg.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_rotm.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_rotmg.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_sbmv.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_scal.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_spmv.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_spr.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_spr2.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_swap.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_symm.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_symv.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_syr.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_syr2.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_syr2k.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_syrk.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_tbmv.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_tbsv.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_tpmv.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_tpsv.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_trmm.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_trmv.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_trsm.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_trsv.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xerbla.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zaxpy.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zcopy.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zdotc_sub.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zdotu_sub.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zdscal.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zgbmv.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zgemm.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zgemv.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zgerc.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zgeru.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zhbmv.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zhemm.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zhemv.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zher.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zher2.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zher2k.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zherk.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zhpmv.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zhpr.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zhpr2.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zscal.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zswap.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zsymm.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zsyr2k.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zsyrk.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ztbmv.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ztbsv.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ztpmv.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ztpsv.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ztrmm.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ztrmv.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ztrsm.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ztrsv.Plo@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-pkgincludeHEADERS: $(pkginclude_HEADERS) + @$(NORMAL_INSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \ + done + +uninstall-pkgincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + else \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_PROGRAMS) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +test.log: test$(EXEEXT) + @p='test$(EXEEXT)'; \ + b='test'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +@am__EXEEXT_TRUE@.test$(EXEEXT).log: +@am__EXEEXT_TRUE@ @p='$<'; \ +@am__EXEEXT_TRUE@ $(am__set_b); \ +@am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +@am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ +@am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +@am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-am +all-am: Makefile $(LTLIBRARIES) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(pkgincludedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-checkPROGRAMS clean-generic clean-libLTLIBRARIES \ + clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-pkgincludeHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: install-libLTLIBRARIES + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-libLTLIBRARIES uninstall-pkgincludeHEADERS + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libLTLIBRARIES \ + clean-libtool cscopelist-am ctags ctags-am distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am \ + install-libLTLIBRARIES install-man install-pdf install-pdf-am \ + install-pkgincludeHEADERS install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am recheck tags tags-am uninstall \ + uninstall-am uninstall-libLTLIBRARIES \ + uninstall-pkgincludeHEADERS + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gsl-2.5/cblas/TODO b/gsl-2.5/cblas/TODO new file mode 100644 index 00000000..6224220e --- /dev/null +++ b/gsl-2.5/cblas/TODO @@ -0,0 +1,11 @@ +# -*- org -*- +#+CATEGORY: cblas + +use macros so that all complex arithmetic can use native complex types if compiler supports them + +make sure double/float are replaced by BASE everywhere +well... not _everywhere_; internal accumulations should +be done in double always; there's no reason not too, +it's safer and maybe even faster [GJ] + +gbmv_c : use conj*imag instead of having branches form Trans & ConjTrans diff --git a/gsl-2.5/cblas/caxpy.c b/gsl-2.5/cblas/caxpy.c new file mode 100644 index 00000000..842153ec --- /dev/null +++ b/gsl-2.5/cblas/caxpy.c @@ -0,0 +1,12 @@ +#include +#include +#include "cblas.h" + +void +cblas_caxpy (const int N, const void *alpha, const void *X, const int incX, + void *Y, const int incY) +{ +#define BASE float +#include "source_axpy_c.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/caxpy.lo b/gsl-2.5/cblas/caxpy.lo new file mode 100644 index 00000000..41077cbc --- /dev/null +++ b/gsl-2.5/cblas/caxpy.lo @@ -0,0 +1,12 @@ +# caxpy.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/caxpy.o' + +# Name of the non-PIC object +non_pic_object='caxpy.o' + diff --git a/gsl-2.5/cblas/cblas.h b/gsl-2.5/cblas/cblas.h new file mode 100644 index 00000000..b4786718 --- /dev/null +++ b/gsl-2.5/cblas/cblas.h @@ -0,0 +1,34 @@ +#define INDEX int +#define OFFSET(N, incX) ((incX) > 0 ? 0 : ((N) - 1) * (-(incX))) +#define BLAS_ERROR(x) cblas_xerbla(0, __FILE__, x); + +#define CONJUGATE(x) ((x) == CblasConjTrans) +#define TRANSPOSE(x) ((x) == CblasTrans || (x) == CblasConjTrans) +#define UPPER(x) ((x) == CblasUpper) +#define LOWER(x) ((x) == CblasLower) + +/* Handling of packed complex types... */ + +#define REAL(a,i) (((BASE *) a)[2*(i)]) +#define IMAG(a,i) (((BASE *) a)[2*(i)+1]) + +#define REAL0(a) (((BASE *)a)[0]) +#define IMAG0(a) (((BASE *)a)[1]) + +#define CONST_REAL(a,i) (((const BASE *) a)[2*(i)]) +#define CONST_IMAG(a,i) (((const BASE *) a)[2*(i)+1]) + +#define CONST_REAL0(a) (((const BASE *)a)[0]) +#define CONST_IMAG0(a) (((const BASE *)a)[1]) + + +#define GB(KU,KL,lda,i,j) ((KU+1+(i-j))*lda + j) + +#define TRCOUNT(N,i) ((((i)+1)*(2*(N)-(i)))/2) + +/* #define TBUP(N,i,j) */ +/* #define TBLO(N,i,j) */ + +#define TPUP(N,i,j) (TRCOUNT(N,(i)-1)+(j)-(i)) +#define TPLO(N,i,j) (((i)*((i)+1))/2 + (j)) + diff --git a/gsl-2.5/cblas/ccopy.c b/gsl-2.5/cblas/ccopy.c new file mode 100644 index 00000000..c4716dd0 --- /dev/null +++ b/gsl-2.5/cblas/ccopy.c @@ -0,0 +1,12 @@ +#include +#include +#include "cblas.h" + +void +cblas_ccopy (const int N, const void *X, const int incX, void *Y, + const int incY) +{ +#define BASE float +#include "source_copy_c.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/ccopy.lo b/gsl-2.5/cblas/ccopy.lo new file mode 100644 index 00000000..76778b77 --- /dev/null +++ b/gsl-2.5/cblas/ccopy.lo @@ -0,0 +1,12 @@ +# ccopy.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/ccopy.o' + +# Name of the non-PIC object +non_pic_object='ccopy.o' + diff --git a/gsl-2.5/cblas/cdotc_sub.c b/gsl-2.5/cblas/cdotc_sub.c new file mode 100644 index 00000000..7bf646d0 --- /dev/null +++ b/gsl-2.5/cblas/cdotc_sub.c @@ -0,0 +1,14 @@ +#include +#include +#include "cblas.h" + +void +cblas_cdotc_sub (const int N, const void *X, const int incX, const void *Y, + const int incY, void *result) +{ +#define BASE float +#define CONJ_SIGN (-1.0) +#include "source_dot_c.h" +#undef CONJ_SIGN +#undef BASE +} diff --git a/gsl-2.5/cblas/cdotc_sub.lo b/gsl-2.5/cblas/cdotc_sub.lo new file mode 100644 index 00000000..794814f7 --- /dev/null +++ b/gsl-2.5/cblas/cdotc_sub.lo @@ -0,0 +1,12 @@ +# cdotc_sub.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/cdotc_sub.o' + +# Name of the non-PIC object +non_pic_object='cdotc_sub.o' + diff --git a/gsl-2.5/cblas/cdotu_sub.c b/gsl-2.5/cblas/cdotu_sub.c new file mode 100644 index 00000000..4dff0beb --- /dev/null +++ b/gsl-2.5/cblas/cdotu_sub.c @@ -0,0 +1,14 @@ +#include +#include +#include "cblas.h" + +void +cblas_cdotu_sub (const int N, const void *X, const int incX, const void *Y, + const int incY, void *result) +{ +#define BASE float +#define CONJ_SIGN 1.0 +#include "source_dot_c.h" +#undef CONJ_SIGN +#undef BASE +} diff --git a/gsl-2.5/cblas/cdotu_sub.lo b/gsl-2.5/cblas/cdotu_sub.lo new file mode 100644 index 00000000..14f99df9 --- /dev/null +++ b/gsl-2.5/cblas/cdotu_sub.lo @@ -0,0 +1,12 @@ +# cdotu_sub.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/cdotu_sub.o' + +# Name of the non-PIC object +non_pic_object='cdotu_sub.o' + diff --git a/gsl-2.5/cblas/cgbmv.c b/gsl-2.5/cblas/cgbmv.c new file mode 100644 index 00000000..8337128c --- /dev/null +++ b/gsl-2.5/cblas/cgbmv.c @@ -0,0 +1,15 @@ +#include +#include +#include "cblas.h" +#include "error_cblas_l2.h" + +void +cblas_cgbmv (const enum CBLAS_ORDER order, const enum CBLAS_TRANSPOSE TransA, + const int M, const int N, const int KL, const int KU, + const void *alpha, const void *A, const int lda, const void *X, + const int incX, const void *beta, void *Y, const int incY) +{ +#define BASE float +#include "source_gbmv_c.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/cgbmv.lo b/gsl-2.5/cblas/cgbmv.lo new file mode 100644 index 00000000..1b622239 --- /dev/null +++ b/gsl-2.5/cblas/cgbmv.lo @@ -0,0 +1,12 @@ +# cgbmv.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/cgbmv.o' + +# Name of the non-PIC object +non_pic_object='cgbmv.o' + diff --git a/gsl-2.5/cblas/cgemm.c b/gsl-2.5/cblas/cgemm.c new file mode 100644 index 00000000..f1ca0c23 --- /dev/null +++ b/gsl-2.5/cblas/cgemm.c @@ -0,0 +1,16 @@ +#include +#include +#include "cblas.h" +#include "error_cblas_l3.h" + +void +cblas_cgemm (const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TransA, + const enum CBLAS_TRANSPOSE TransB, const int M, const int N, + const int K, const void *alpha, const void *A, const int lda, + const void *B, const int ldb, const void *beta, void *C, + const int ldc) +{ +#define BASE float +#include "source_gemm_c.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/cgemm.lo b/gsl-2.5/cblas/cgemm.lo new file mode 100644 index 00000000..3a9799bc --- /dev/null +++ b/gsl-2.5/cblas/cgemm.lo @@ -0,0 +1,12 @@ +# cgemm.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/cgemm.o' + +# Name of the non-PIC object +non_pic_object='cgemm.o' + diff --git a/gsl-2.5/cblas/cgemv.c b/gsl-2.5/cblas/cgemv.c new file mode 100644 index 00000000..d09ec64b --- /dev/null +++ b/gsl-2.5/cblas/cgemv.c @@ -0,0 +1,15 @@ +#include +#include +#include "cblas.h" +#include "error_cblas_l2.h" + +void +cblas_cgemv (const enum CBLAS_ORDER order, const enum CBLAS_TRANSPOSE TransA, + const int M, const int N, const void *alpha, const void *A, + const int lda, const void *X, const int incX, const void *beta, + void *Y, const int incY) +{ +#define BASE float +#include "source_gemv_c.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/cgemv.lo b/gsl-2.5/cblas/cgemv.lo new file mode 100644 index 00000000..29d53b2b --- /dev/null +++ b/gsl-2.5/cblas/cgemv.lo @@ -0,0 +1,12 @@ +# cgemv.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/cgemv.o' + +# Name of the non-PIC object +non_pic_object='cgemv.o' + diff --git a/gsl-2.5/cblas/cgerc.c b/gsl-2.5/cblas/cgerc.c new file mode 100644 index 00000000..db34ddff --- /dev/null +++ b/gsl-2.5/cblas/cgerc.c @@ -0,0 +1,14 @@ +#include +#include +#include "cblas.h" +#include "error_cblas_l2.h" + +void +cblas_cgerc (const enum CBLAS_ORDER order, const int M, const int N, + const void *alpha, const void *X, const int incX, const void *Y, + const int incY, void *A, const int lda) +{ +#define BASE float +#include "source_gerc.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/cgerc.lo b/gsl-2.5/cblas/cgerc.lo new file mode 100644 index 00000000..d83679d7 --- /dev/null +++ b/gsl-2.5/cblas/cgerc.lo @@ -0,0 +1,12 @@ +# cgerc.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/cgerc.o' + +# Name of the non-PIC object +non_pic_object='cgerc.o' + diff --git a/gsl-2.5/cblas/cgeru.c b/gsl-2.5/cblas/cgeru.c new file mode 100644 index 00000000..de3e5beb --- /dev/null +++ b/gsl-2.5/cblas/cgeru.c @@ -0,0 +1,14 @@ +#include +#include +#include "cblas.h" +#include "error_cblas_l2.h" + +void +cblas_cgeru (const enum CBLAS_ORDER order, const int M, const int N, + const void *alpha, const void *X, const int incX, const void *Y, + const int incY, void *A, const int lda) +{ +#define BASE float +#include "source_geru.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/cgeru.lo b/gsl-2.5/cblas/cgeru.lo new file mode 100644 index 00000000..623b84e6 --- /dev/null +++ b/gsl-2.5/cblas/cgeru.lo @@ -0,0 +1,12 @@ +# cgeru.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/cgeru.o' + +# Name of the non-PIC object +non_pic_object='cgeru.o' + diff --git a/gsl-2.5/cblas/chbmv.c b/gsl-2.5/cblas/chbmv.c new file mode 100644 index 00000000..58c36445 --- /dev/null +++ b/gsl-2.5/cblas/chbmv.c @@ -0,0 +1,15 @@ +#include +#include +#include "cblas.h" +#include "error_cblas_l2.h" + +void +cblas_chbmv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const int N, const int K, const void *alpha, const void *A, + const int lda, const void *X, const int incX, const void *beta, + void *Y, const int incY) +{ +#define BASE float +#include "source_hbmv.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/chbmv.lo b/gsl-2.5/cblas/chbmv.lo new file mode 100644 index 00000000..d3197822 --- /dev/null +++ b/gsl-2.5/cblas/chbmv.lo @@ -0,0 +1,12 @@ +# chbmv.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/chbmv.o' + +# Name of the non-PIC object +non_pic_object='chbmv.o' + diff --git a/gsl-2.5/cblas/chemm.c b/gsl-2.5/cblas/chemm.c new file mode 100644 index 00000000..87b7c655 --- /dev/null +++ b/gsl-2.5/cblas/chemm.c @@ -0,0 +1,15 @@ +#include +#include +#include "cblas.h" +#include "error_cblas_l3.h" + +void +cblas_chemm (const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, + const enum CBLAS_UPLO Uplo, const int M, const int N, + const void *alpha, const void *A, const int lda, const void *B, + const int ldb, const void *beta, void *C, const int ldc) +{ +#define BASE float +#include "source_hemm.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/chemm.lo b/gsl-2.5/cblas/chemm.lo new file mode 100644 index 00000000..7001e282 --- /dev/null +++ b/gsl-2.5/cblas/chemm.lo @@ -0,0 +1,12 @@ +# chemm.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/chemm.o' + +# Name of the non-PIC object +non_pic_object='chemm.o' + diff --git a/gsl-2.5/cblas/chemv.c b/gsl-2.5/cblas/chemv.c new file mode 100644 index 00000000..a501605a --- /dev/null +++ b/gsl-2.5/cblas/chemv.c @@ -0,0 +1,15 @@ +#include +#include +#include "cblas.h" +#include "error_cblas_l2.h" + +void +cblas_chemv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const int N, const void *alpha, const void *A, const int lda, + const void *X, const int incX, const void *beta, void *Y, + const int incY) +{ +#define BASE float +#include "source_hemv.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/chemv.lo b/gsl-2.5/cblas/chemv.lo new file mode 100644 index 00000000..a453d9f8 --- /dev/null +++ b/gsl-2.5/cblas/chemv.lo @@ -0,0 +1,12 @@ +# chemv.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/chemv.o' + +# Name of the non-PIC object +non_pic_object='chemv.o' + diff --git a/gsl-2.5/cblas/cher.c b/gsl-2.5/cblas/cher.c new file mode 100644 index 00000000..42c7e5ba --- /dev/null +++ b/gsl-2.5/cblas/cher.c @@ -0,0 +1,14 @@ +#include +#include +#include "cblas.h" +#include "error_cblas_l2.h" + +void +cblas_cher (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const int N, const float alpha, const void *X, const int incX, + void *A, const int lda) +{ +#define BASE float +#include "source_her.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/cher.lo b/gsl-2.5/cblas/cher.lo new file mode 100644 index 00000000..36f0b582 --- /dev/null +++ b/gsl-2.5/cblas/cher.lo @@ -0,0 +1,12 @@ +# cher.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/cher.o' + +# Name of the non-PIC object +non_pic_object='cher.o' + diff --git a/gsl-2.5/cblas/cher2.c b/gsl-2.5/cblas/cher2.c new file mode 100644 index 00000000..ceb1e681 --- /dev/null +++ b/gsl-2.5/cblas/cher2.c @@ -0,0 +1,14 @@ +#include +#include +#include "cblas.h" +#include "error_cblas_l2.h" + +void +cblas_cher2 (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const int N, const void *alpha, const void *X, const int incX, + const void *Y, const int incY, void *A, const int lda) +{ +#define BASE float +#include "source_her2.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/cher2.lo b/gsl-2.5/cblas/cher2.lo new file mode 100644 index 00000000..7c2cbc55 --- /dev/null +++ b/gsl-2.5/cblas/cher2.lo @@ -0,0 +1,12 @@ +# cher2.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/cher2.o' + +# Name of the non-PIC object +non_pic_object='cher2.o' + diff --git a/gsl-2.5/cblas/cher2k.c b/gsl-2.5/cblas/cher2k.c new file mode 100644 index 00000000..90acff30 --- /dev/null +++ b/gsl-2.5/cblas/cher2k.c @@ -0,0 +1,15 @@ +#include +#include +#include "cblas.h" +#include "error_cblas_l3.h" + +void +cblas_cher2k (const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE Trans, const int N, const int K, + const void *alpha, const void *A, const int lda, const void *B, + const int ldb, const float beta, void *C, const int ldc) +{ +#define BASE float +#include "source_her2k.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/cher2k.lo b/gsl-2.5/cblas/cher2k.lo new file mode 100644 index 00000000..4a3ac4e9 --- /dev/null +++ b/gsl-2.5/cblas/cher2k.lo @@ -0,0 +1,12 @@ +# cher2k.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/cher2k.o' + +# Name of the non-PIC object +non_pic_object='cher2k.o' + diff --git a/gsl-2.5/cblas/cherk.c b/gsl-2.5/cblas/cherk.c new file mode 100644 index 00000000..984450fc --- /dev/null +++ b/gsl-2.5/cblas/cherk.c @@ -0,0 +1,15 @@ +#include +#include +#include "cblas.h" +#include "error_cblas_l3.h" + +void +cblas_cherk (const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE Trans, const int N, const int K, + const float alpha, const void *A, const int lda, + const float beta, void *C, const int ldc) +{ +#define BASE float +#include "source_herk.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/cherk.lo b/gsl-2.5/cblas/cherk.lo new file mode 100644 index 00000000..04652ab2 --- /dev/null +++ b/gsl-2.5/cblas/cherk.lo @@ -0,0 +1,12 @@ +# cherk.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/cherk.o' + +# Name of the non-PIC object +non_pic_object='cherk.o' + diff --git a/gsl-2.5/cblas/chpmv.c b/gsl-2.5/cblas/chpmv.c new file mode 100644 index 00000000..6163d77f --- /dev/null +++ b/gsl-2.5/cblas/chpmv.c @@ -0,0 +1,14 @@ +#include +#include +#include "cblas.h" +#include "error_cblas_l2.h" + +void +cblas_chpmv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const int N, const void *alpha, const void *Ap, const void *X, + const int incX, const void *beta, void *Y, const int incY) +{ +#define BASE float +#include "source_hpmv.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/chpmv.lo b/gsl-2.5/cblas/chpmv.lo new file mode 100644 index 00000000..44da5581 --- /dev/null +++ b/gsl-2.5/cblas/chpmv.lo @@ -0,0 +1,12 @@ +# chpmv.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/chpmv.o' + +# Name of the non-PIC object +non_pic_object='chpmv.o' + diff --git a/gsl-2.5/cblas/chpr.c b/gsl-2.5/cblas/chpr.c new file mode 100644 index 00000000..f5098f3b --- /dev/null +++ b/gsl-2.5/cblas/chpr.c @@ -0,0 +1,14 @@ +#include +#include +#include "cblas.h" +#include "error_cblas_l2.h" + +void +cblas_chpr (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const int N, const float alpha, const void *X, const int incX, + void *Ap) +{ +#define BASE float +#include "source_hpr.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/chpr.lo b/gsl-2.5/cblas/chpr.lo new file mode 100644 index 00000000..5c7aa064 --- /dev/null +++ b/gsl-2.5/cblas/chpr.lo @@ -0,0 +1,12 @@ +# chpr.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/chpr.o' + +# Name of the non-PIC object +non_pic_object='chpr.o' + diff --git a/gsl-2.5/cblas/chpr2.c b/gsl-2.5/cblas/chpr2.c new file mode 100644 index 00000000..9f7a1895 --- /dev/null +++ b/gsl-2.5/cblas/chpr2.c @@ -0,0 +1,14 @@ +#include +#include +#include "cblas.h" +#include "error_cblas_l2.h" + +void +cblas_chpr2 (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const int N, const void *alpha, const void *X, const int incX, + const void *Y, const int incY, void *Ap) +{ +#define BASE float +#include "source_hpr2.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/chpr2.lo b/gsl-2.5/cblas/chpr2.lo new file mode 100644 index 00000000..bfde5bd3 --- /dev/null +++ b/gsl-2.5/cblas/chpr2.lo @@ -0,0 +1,12 @@ +# chpr2.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/chpr2.o' + +# Name of the non-PIC object +non_pic_object='chpr2.o' + diff --git a/gsl-2.5/cblas/cscal.c b/gsl-2.5/cblas/cscal.c new file mode 100644 index 00000000..5a881b91 --- /dev/null +++ b/gsl-2.5/cblas/cscal.c @@ -0,0 +1,11 @@ +#include +#include +#include "cblas.h" + +void +cblas_cscal (const int N, const void *alpha, void *X, const int incX) +{ +#define BASE float +#include "source_scal_c.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/cscal.lo b/gsl-2.5/cblas/cscal.lo new file mode 100644 index 00000000..530a9e66 --- /dev/null +++ b/gsl-2.5/cblas/cscal.lo @@ -0,0 +1,12 @@ +# cscal.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/cscal.o' + +# Name of the non-PIC object +non_pic_object='cscal.o' + diff --git a/gsl-2.5/cblas/csscal.c b/gsl-2.5/cblas/csscal.c new file mode 100644 index 00000000..ef59150e --- /dev/null +++ b/gsl-2.5/cblas/csscal.c @@ -0,0 +1,11 @@ +#include +#include +#include "cblas.h" + +void +cblas_csscal (const int N, const float alpha, void *X, const int incX) +{ +#define BASE float +#include "source_scal_c_s.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/csscal.lo b/gsl-2.5/cblas/csscal.lo new file mode 100644 index 00000000..3fe72458 --- /dev/null +++ b/gsl-2.5/cblas/csscal.lo @@ -0,0 +1,12 @@ +# csscal.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/csscal.o' + +# Name of the non-PIC object +non_pic_object='csscal.o' + diff --git a/gsl-2.5/cblas/cswap.c b/gsl-2.5/cblas/cswap.c new file mode 100644 index 00000000..8e940ec5 --- /dev/null +++ b/gsl-2.5/cblas/cswap.c @@ -0,0 +1,11 @@ +#include +#include +#include "cblas.h" + +void +cblas_cswap (const int N, void *X, const int incX, void *Y, const int incY) +{ +#define BASE float +#include "source_swap_c.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/cswap.lo b/gsl-2.5/cblas/cswap.lo new file mode 100644 index 00000000..92154bb5 --- /dev/null +++ b/gsl-2.5/cblas/cswap.lo @@ -0,0 +1,12 @@ +# cswap.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/cswap.o' + +# Name of the non-PIC object +non_pic_object='cswap.o' + diff --git a/gsl-2.5/cblas/csymm.c b/gsl-2.5/cblas/csymm.c new file mode 100644 index 00000000..eca487df --- /dev/null +++ b/gsl-2.5/cblas/csymm.c @@ -0,0 +1,15 @@ +#include +#include +#include "cblas.h" +#include "error_cblas_l3.h" + +void +cblas_csymm (const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, + const enum CBLAS_UPLO Uplo, const int M, const int N, + const void *alpha, const void *A, const int lda, const void *B, + const int ldb, const void *beta, void *C, const int ldc) +{ +#define BASE float +#include "source_symm_c.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/csymm.lo b/gsl-2.5/cblas/csymm.lo new file mode 100644 index 00000000..21acde7f --- /dev/null +++ b/gsl-2.5/cblas/csymm.lo @@ -0,0 +1,12 @@ +# csymm.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/csymm.o' + +# Name of the non-PIC object +non_pic_object='csymm.o' + diff --git a/gsl-2.5/cblas/csyr2k.c b/gsl-2.5/cblas/csyr2k.c new file mode 100644 index 00000000..0d7a097f --- /dev/null +++ b/gsl-2.5/cblas/csyr2k.c @@ -0,0 +1,15 @@ +#include +#include +#include "cblas.h" +#include "error_cblas_l3.h" + +void +cblas_csyr2k (const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE Trans, const int N, const int K, + const void *alpha, const void *A, const int lda, const void *B, + const int ldb, const void *beta, void *C, const int ldc) +{ +#define BASE float +#include "source_syr2k_c.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/csyr2k.lo b/gsl-2.5/cblas/csyr2k.lo new file mode 100644 index 00000000..507c582f --- /dev/null +++ b/gsl-2.5/cblas/csyr2k.lo @@ -0,0 +1,12 @@ +# csyr2k.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/csyr2k.o' + +# Name of the non-PIC object +non_pic_object='csyr2k.o' + diff --git a/gsl-2.5/cblas/csyrk.c b/gsl-2.5/cblas/csyrk.c new file mode 100644 index 00000000..b3bede5e --- /dev/null +++ b/gsl-2.5/cblas/csyrk.c @@ -0,0 +1,15 @@ +#include +#include +#include "cblas.h" +#include "error_cblas_l3.h" + +void +cblas_csyrk (const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE Trans, const int N, const int K, + const void *alpha, const void *A, const int lda, + const void *beta, void *C, const int ldc) +{ +#define BASE float +#include "source_syrk_c.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/csyrk.lo b/gsl-2.5/cblas/csyrk.lo new file mode 100644 index 00000000..47a59f5a --- /dev/null +++ b/gsl-2.5/cblas/csyrk.lo @@ -0,0 +1,12 @@ +# csyrk.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/csyrk.o' + +# Name of the non-PIC object +non_pic_object='csyrk.o' + diff --git a/gsl-2.5/cblas/ctbmv.c b/gsl-2.5/cblas/ctbmv.c new file mode 100644 index 00000000..97cc4a43 --- /dev/null +++ b/gsl-2.5/cblas/ctbmv.c @@ -0,0 +1,15 @@ +#include +#include +#include "cblas.h" +#include "error_cblas_l2.h" + +void +cblas_ctbmv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, + const int N, const int K, const void *A, const int lda, void *X, + const int incX) +{ +#define BASE float +#include "source_tbmv_c.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/ctbmv.lo b/gsl-2.5/cblas/ctbmv.lo new file mode 100644 index 00000000..4628884c --- /dev/null +++ b/gsl-2.5/cblas/ctbmv.lo @@ -0,0 +1,12 @@ +# ctbmv.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/ctbmv.o' + +# Name of the non-PIC object +non_pic_object='ctbmv.o' + diff --git a/gsl-2.5/cblas/ctbsv.c b/gsl-2.5/cblas/ctbsv.c new file mode 100644 index 00000000..bd2b5f7d --- /dev/null +++ b/gsl-2.5/cblas/ctbsv.c @@ -0,0 +1,17 @@ +#include +#include +#include "cblas.h" +#include "error_cblas_l2.h" + +#include "hypot.c" + +void +cblas_ctbsv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, + const int N, const int K, const void *A, const int lda, void *X, + const int incX) +{ +#define BASE float +#include "source_tbsv_c.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/ctbsv.lo b/gsl-2.5/cblas/ctbsv.lo new file mode 100644 index 00000000..83a7aee2 --- /dev/null +++ b/gsl-2.5/cblas/ctbsv.lo @@ -0,0 +1,12 @@ +# ctbsv.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/ctbsv.o' + +# Name of the non-PIC object +non_pic_object='ctbsv.o' + diff --git a/gsl-2.5/cblas/ctpmv.c b/gsl-2.5/cblas/ctpmv.c new file mode 100644 index 00000000..51405a54 --- /dev/null +++ b/gsl-2.5/cblas/ctpmv.c @@ -0,0 +1,14 @@ +#include +#include +#include "cblas.h" +#include "error_cblas_l2.h" + +void +cblas_ctpmv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, + const int N, const void *Ap, void *X, const int incX) +{ +#define BASE float +#include "source_tpmv_c.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/ctpmv.lo b/gsl-2.5/cblas/ctpmv.lo new file mode 100644 index 00000000..96df214d --- /dev/null +++ b/gsl-2.5/cblas/ctpmv.lo @@ -0,0 +1,12 @@ +# ctpmv.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/ctpmv.o' + +# Name of the non-PIC object +non_pic_object='ctpmv.o' + diff --git a/gsl-2.5/cblas/ctpsv.c b/gsl-2.5/cblas/ctpsv.c new file mode 100644 index 00000000..e68ee3cb --- /dev/null +++ b/gsl-2.5/cblas/ctpsv.c @@ -0,0 +1,16 @@ +#include +#include +#include "cblas.h" +#include "error_cblas_l2.h" + +#include "hypot.c" + +void +cblas_ctpsv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, + const int N, const void *Ap, void *X, const int incX) +{ +#define BASE float +#include "source_tpsv_c.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/ctpsv.lo b/gsl-2.5/cblas/ctpsv.lo new file mode 100644 index 00000000..37bb16c6 --- /dev/null +++ b/gsl-2.5/cblas/ctpsv.lo @@ -0,0 +1,12 @@ +# ctpsv.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/ctpsv.o' + +# Name of the non-PIC object +non_pic_object='ctpsv.o' + diff --git a/gsl-2.5/cblas/ctrmm.c b/gsl-2.5/cblas/ctrmm.c new file mode 100644 index 00000000..b8adbc46 --- /dev/null +++ b/gsl-2.5/cblas/ctrmm.c @@ -0,0 +1,16 @@ +#include +#include +#include "cblas.h" +#include "error_cblas_l3.h" + +void +cblas_ctrmm (const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, + const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, + const enum CBLAS_DIAG Diag, const int M, const int N, + const void *alpha, const void *A, const int lda, void *B, + const int ldb) +{ +#define BASE float +#include "source_trmm_c.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/ctrmm.lo b/gsl-2.5/cblas/ctrmm.lo new file mode 100644 index 00000000..a061bfd7 --- /dev/null +++ b/gsl-2.5/cblas/ctrmm.lo @@ -0,0 +1,12 @@ +# ctrmm.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/ctrmm.o' + +# Name of the non-PIC object +non_pic_object='ctrmm.o' + diff --git a/gsl-2.5/cblas/ctrmv.c b/gsl-2.5/cblas/ctrmv.c new file mode 100644 index 00000000..1e00514e --- /dev/null +++ b/gsl-2.5/cblas/ctrmv.c @@ -0,0 +1,15 @@ +#include +#include +#include "cblas.h" +#include "error_cblas_l2.h" + +void +cblas_ctrmv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, + const int N, const void *A, const int lda, void *X, + const int incX) +{ +#define BASE float +#include "source_trmv_c.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/ctrmv.lo b/gsl-2.5/cblas/ctrmv.lo new file mode 100644 index 00000000..f7043cad --- /dev/null +++ b/gsl-2.5/cblas/ctrmv.lo @@ -0,0 +1,12 @@ +# ctrmv.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/ctrmv.o' + +# Name of the non-PIC object +non_pic_object='ctrmv.o' + diff --git a/gsl-2.5/cblas/ctrsm.c b/gsl-2.5/cblas/ctrsm.c new file mode 100644 index 00000000..e3086a7f --- /dev/null +++ b/gsl-2.5/cblas/ctrsm.c @@ -0,0 +1,18 @@ +#include +#include +#include "cblas.h" +#include "error_cblas_l3.h" + +#include "hypot.c" + +void +cblas_ctrsm (const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, + const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, + const enum CBLAS_DIAG Diag, const int M, const int N, + const void *alpha, const void *A, const int lda, void *B, + const int ldb) +{ +#define BASE float +#include "source_trsm_c.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/ctrsm.lo b/gsl-2.5/cblas/ctrsm.lo new file mode 100644 index 00000000..62b12596 --- /dev/null +++ b/gsl-2.5/cblas/ctrsm.lo @@ -0,0 +1,12 @@ +# ctrsm.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/ctrsm.o' + +# Name of the non-PIC object +non_pic_object='ctrsm.o' + diff --git a/gsl-2.5/cblas/ctrsv.c b/gsl-2.5/cblas/ctrsv.c new file mode 100644 index 00000000..e6f8ca03 --- /dev/null +++ b/gsl-2.5/cblas/ctrsv.c @@ -0,0 +1,17 @@ +#include +#include +#include "cblas.h" +#include "error_cblas_l2.h" + +#include "hypot.c" + +void +cblas_ctrsv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, + const int N, const void *A, const int lda, void *X, + const int incX) +{ +#define BASE float +#include "source_trsv_c.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/ctrsv.lo b/gsl-2.5/cblas/ctrsv.lo new file mode 100644 index 00000000..f2f7cfb3 --- /dev/null +++ b/gsl-2.5/cblas/ctrsv.lo @@ -0,0 +1,12 @@ +# ctrsv.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/ctrsv.o' + +# Name of the non-PIC object +non_pic_object='ctrsv.o' + diff --git a/gsl-2.5/cblas/dasum.c b/gsl-2.5/cblas/dasum.c new file mode 100644 index 00000000..db215c10 --- /dev/null +++ b/gsl-2.5/cblas/dasum.c @@ -0,0 +1,11 @@ +#include +#include +#include "cblas.h" + +double +cblas_dasum (const int N, const double *X, const int incX) +{ +#define BASE double +#include "source_asum_r.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/dasum.lo b/gsl-2.5/cblas/dasum.lo new file mode 100644 index 00000000..15b51502 --- /dev/null +++ b/gsl-2.5/cblas/dasum.lo @@ -0,0 +1,12 @@ +# dasum.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/dasum.o' + +# Name of the non-PIC object +non_pic_object='dasum.o' + diff --git a/gsl-2.5/cblas/daxpy.c b/gsl-2.5/cblas/daxpy.c new file mode 100644 index 00000000..d0fd567a --- /dev/null +++ b/gsl-2.5/cblas/daxpy.c @@ -0,0 +1,12 @@ +#include +#include +#include "cblas.h" + +void +cblas_daxpy (const int N, const double alpha, const double *X, const int incX, + double *Y, const int incY) +{ +#define BASE double +#include "source_axpy_r.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/daxpy.lo b/gsl-2.5/cblas/daxpy.lo new file mode 100644 index 00000000..9ffeac3d --- /dev/null +++ b/gsl-2.5/cblas/daxpy.lo @@ -0,0 +1,12 @@ +# daxpy.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/daxpy.o' + +# Name of the non-PIC object +non_pic_object='daxpy.o' + diff --git a/gsl-2.5/cblas/dcopy.c b/gsl-2.5/cblas/dcopy.c new file mode 100644 index 00000000..5c6ed2e9 --- /dev/null +++ b/gsl-2.5/cblas/dcopy.c @@ -0,0 +1,12 @@ +#include +#include +#include "cblas.h" + +void +cblas_dcopy (const int N, const double *X, const int incX, double *Y, + const int incY) +{ +#define BASE double +#include "source_copy_r.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/dcopy.lo b/gsl-2.5/cblas/dcopy.lo new file mode 100644 index 00000000..5547def2 --- /dev/null +++ b/gsl-2.5/cblas/dcopy.lo @@ -0,0 +1,12 @@ +# dcopy.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/dcopy.o' + +# Name of the non-PIC object +non_pic_object='dcopy.o' + diff --git a/gsl-2.5/cblas/ddot.c b/gsl-2.5/cblas/ddot.c new file mode 100644 index 00000000..e5801f3f --- /dev/null +++ b/gsl-2.5/cblas/ddot.c @@ -0,0 +1,16 @@ +#include +#include +#include "cblas.h" + +double +cblas_ddot (const int N, const double *X, const int incX, const double *Y, + const int incY) +{ +#define INIT_VAL 0.0 +#define ACC_TYPE double +#define BASE double +#include "source_dot_r.h" +#undef ACC_TYPE +#undef BASE +#undef INIT_VAL +} diff --git a/gsl-2.5/cblas/ddot.lo b/gsl-2.5/cblas/ddot.lo new file mode 100644 index 00000000..aaa583d8 --- /dev/null +++ b/gsl-2.5/cblas/ddot.lo @@ -0,0 +1,12 @@ +# ddot.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/ddot.o' + +# Name of the non-PIC object +non_pic_object='ddot.o' + diff --git a/gsl-2.5/cblas/dgbmv.c b/gsl-2.5/cblas/dgbmv.c new file mode 100644 index 00000000..766a4d53 --- /dev/null +++ b/gsl-2.5/cblas/dgbmv.c @@ -0,0 +1,16 @@ +#include +#include +#include "cblas.h" +#include "error_cblas_l2.h" + +void +cblas_dgbmv (const enum CBLAS_ORDER order, const enum CBLAS_TRANSPOSE TransA, + const int M, const int N, const int KL, const int KU, + const double alpha, const double *A, const int lda, + const double *X, const int incX, const double beta, double *Y, + const int incY) +{ +#define BASE double +#include "source_gbmv_r.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/dgbmv.lo b/gsl-2.5/cblas/dgbmv.lo new file mode 100644 index 00000000..01d05755 --- /dev/null +++ b/gsl-2.5/cblas/dgbmv.lo @@ -0,0 +1,12 @@ +# dgbmv.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/dgbmv.o' + +# Name of the non-PIC object +non_pic_object='dgbmv.o' + diff --git a/gsl-2.5/cblas/dgemm.c b/gsl-2.5/cblas/dgemm.c new file mode 100644 index 00000000..c2d93fa3 --- /dev/null +++ b/gsl-2.5/cblas/dgemm.c @@ -0,0 +1,16 @@ +#include +#include +#include "cblas.h" +#include "error_cblas_l3.h" + +void +cblas_dgemm (const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TransA, + const enum CBLAS_TRANSPOSE TransB, const int M, const int N, + const int K, const double alpha, const double *A, const int lda, + const double *B, const int ldb, const double beta, double *C, + const int ldc) +{ +#define BASE double +#include "source_gemm_r.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/dgemm.lo b/gsl-2.5/cblas/dgemm.lo new file mode 100644 index 00000000..5121bade --- /dev/null +++ b/gsl-2.5/cblas/dgemm.lo @@ -0,0 +1,12 @@ +# dgemm.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/dgemm.o' + +# Name of the non-PIC object +non_pic_object='dgemm.o' + diff --git a/gsl-2.5/cblas/dgemv.c b/gsl-2.5/cblas/dgemv.c new file mode 100644 index 00000000..ff8614bd --- /dev/null +++ b/gsl-2.5/cblas/dgemv.c @@ -0,0 +1,15 @@ +#include +#include +#include "cblas.h" +#include "error_cblas_l2.h" + +void +cblas_dgemv (const enum CBLAS_ORDER order, const enum CBLAS_TRANSPOSE TransA, + const int M, const int N, const double alpha, const double *A, + const int lda, const double *X, const int incX, + const double beta, double *Y, const int incY) +{ +#define BASE double +#include "source_gemv_r.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/dgemv.lo b/gsl-2.5/cblas/dgemv.lo new file mode 100644 index 00000000..65557042 --- /dev/null +++ b/gsl-2.5/cblas/dgemv.lo @@ -0,0 +1,12 @@ +# dgemv.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/dgemv.o' + +# Name of the non-PIC object +non_pic_object='dgemv.o' + diff --git a/gsl-2.5/cblas/dger.c b/gsl-2.5/cblas/dger.c new file mode 100644 index 00000000..26de7913 --- /dev/null +++ b/gsl-2.5/cblas/dger.c @@ -0,0 +1,14 @@ +#include +#include +#include "cblas.h" +#include "error_cblas_l2.h" + +void +cblas_dger (const enum CBLAS_ORDER order, const int M, const int N, + const double alpha, const double *X, const int incX, + const double *Y, const int incY, double *A, const int lda) +{ +#define BASE double +#include "source_ger.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/dger.lo b/gsl-2.5/cblas/dger.lo new file mode 100644 index 00000000..fd3854f2 --- /dev/null +++ b/gsl-2.5/cblas/dger.lo @@ -0,0 +1,12 @@ +# dger.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/dger.o' + +# Name of the non-PIC object +non_pic_object='dger.o' + diff --git a/gsl-2.5/cblas/dnrm2.c b/gsl-2.5/cblas/dnrm2.c new file mode 100644 index 00000000..f7d5d838 --- /dev/null +++ b/gsl-2.5/cblas/dnrm2.c @@ -0,0 +1,11 @@ +#include +#include +#include "cblas.h" + +double +cblas_dnrm2 (const int N, const double *X, const int incX) +{ +#define BASE double +#include "source_nrm2_r.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/dnrm2.lo b/gsl-2.5/cblas/dnrm2.lo new file mode 100644 index 00000000..1b788561 --- /dev/null +++ b/gsl-2.5/cblas/dnrm2.lo @@ -0,0 +1,12 @@ +# dnrm2.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/dnrm2.o' + +# Name of the non-PIC object +non_pic_object='dnrm2.o' + diff --git a/gsl-2.5/cblas/drot.c b/gsl-2.5/cblas/drot.c new file mode 100644 index 00000000..15c75db6 --- /dev/null +++ b/gsl-2.5/cblas/drot.c @@ -0,0 +1,12 @@ +#include +#include +#include "cblas.h" + +void +cblas_drot (const int N, double *X, const int incX, double *Y, const int incY, + const double c, const double s) +{ +#define BASE double +#include "source_rot.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/drot.lo b/gsl-2.5/cblas/drot.lo new file mode 100644 index 00000000..9e9e0008 --- /dev/null +++ b/gsl-2.5/cblas/drot.lo @@ -0,0 +1,12 @@ +# drot.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/drot.o' + +# Name of the non-PIC object +non_pic_object='drot.o' + diff --git a/gsl-2.5/cblas/drotg.c b/gsl-2.5/cblas/drotg.c new file mode 100644 index 00000000..bc956589 --- /dev/null +++ b/gsl-2.5/cblas/drotg.c @@ -0,0 +1,11 @@ +#include +#include +#include "cblas.h" + +void +cblas_drotg (double *a, double *b, double *c, double *s) +{ +#define BASE double +#include "source_rotg.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/drotg.lo b/gsl-2.5/cblas/drotg.lo new file mode 100644 index 00000000..b695e24e --- /dev/null +++ b/gsl-2.5/cblas/drotg.lo @@ -0,0 +1,12 @@ +# drotg.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/drotg.o' + +# Name of the non-PIC object +non_pic_object='drotg.o' + diff --git a/gsl-2.5/cblas/drotm.c b/gsl-2.5/cblas/drotm.c new file mode 100644 index 00000000..69d5129d --- /dev/null +++ b/gsl-2.5/cblas/drotm.c @@ -0,0 +1,12 @@ +#include +#include +#include "cblas.h" + +void +cblas_drotm (const int N, double *X, const int incX, double *Y, + const int incY, const double *P) +{ +#define BASE double +#include "source_rotm.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/drotm.lo b/gsl-2.5/cblas/drotm.lo new file mode 100644 index 00000000..390f9de0 --- /dev/null +++ b/gsl-2.5/cblas/drotm.lo @@ -0,0 +1,12 @@ +# drotm.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/drotm.o' + +# Name of the non-PIC object +non_pic_object='drotm.o' + diff --git a/gsl-2.5/cblas/drotmg.c b/gsl-2.5/cblas/drotmg.c new file mode 100644 index 00000000..d9e68bad --- /dev/null +++ b/gsl-2.5/cblas/drotmg.c @@ -0,0 +1,11 @@ +#include +#include +#include "cblas.h" + +void +cblas_drotmg (double *d1, double *d2, double *b1, const double b2, double *P) +{ +#define BASE double +#include "source_rotmg.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/drotmg.lo b/gsl-2.5/cblas/drotmg.lo new file mode 100644 index 00000000..812988b6 --- /dev/null +++ b/gsl-2.5/cblas/drotmg.lo @@ -0,0 +1,12 @@ +# drotmg.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/drotmg.o' + +# Name of the non-PIC object +non_pic_object='drotmg.o' + diff --git a/gsl-2.5/cblas/dsbmv.c b/gsl-2.5/cblas/dsbmv.c new file mode 100644 index 00000000..8fede0a4 --- /dev/null +++ b/gsl-2.5/cblas/dsbmv.c @@ -0,0 +1,15 @@ +#include +#include +#include "cblas.h" +#include "error_cblas_l2.h" + +void +cblas_dsbmv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const int N, const int K, const double alpha, const double *A, + const int lda, const double *X, const int incX, + const double beta, double *Y, const int incY) +{ +#define BASE double +#include "source_sbmv.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/dsbmv.lo b/gsl-2.5/cblas/dsbmv.lo new file mode 100644 index 00000000..ab1fdee8 --- /dev/null +++ b/gsl-2.5/cblas/dsbmv.lo @@ -0,0 +1,12 @@ +# dsbmv.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/dsbmv.o' + +# Name of the non-PIC object +non_pic_object='dsbmv.o' + diff --git a/gsl-2.5/cblas/dscal.c b/gsl-2.5/cblas/dscal.c new file mode 100644 index 00000000..479b121a --- /dev/null +++ b/gsl-2.5/cblas/dscal.c @@ -0,0 +1,11 @@ +#include +#include +#include "cblas.h" + +void +cblas_dscal (const int N, const double alpha, double *X, const int incX) +{ +#define BASE double +#include "source_scal_r.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/dscal.lo b/gsl-2.5/cblas/dscal.lo new file mode 100644 index 00000000..94196575 --- /dev/null +++ b/gsl-2.5/cblas/dscal.lo @@ -0,0 +1,12 @@ +# dscal.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/dscal.o' + +# Name of the non-PIC object +non_pic_object='dscal.o' + diff --git a/gsl-2.5/cblas/dsdot.c b/gsl-2.5/cblas/dsdot.c new file mode 100644 index 00000000..2d3400b6 --- /dev/null +++ b/gsl-2.5/cblas/dsdot.c @@ -0,0 +1,16 @@ +#include +#include +#include "cblas.h" + +double +cblas_dsdot (const int N, const float *X, const int incX, const float *Y, + const int incY) +{ +#define INIT_VAL 0.0 +#define ACC_TYPE double +#define BASE float +#include "source_dot_r.h" +#undef ACC_TYPE +#undef BASE +#undef INIT_VAL +} diff --git a/gsl-2.5/cblas/dsdot.lo b/gsl-2.5/cblas/dsdot.lo new file mode 100644 index 00000000..8f93721c --- /dev/null +++ b/gsl-2.5/cblas/dsdot.lo @@ -0,0 +1,12 @@ +# dsdot.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/dsdot.o' + +# Name of the non-PIC object +non_pic_object='dsdot.o' + diff --git a/gsl-2.5/cblas/dspmv.c b/gsl-2.5/cblas/dspmv.c new file mode 100644 index 00000000..66b4dc86 --- /dev/null +++ b/gsl-2.5/cblas/dspmv.c @@ -0,0 +1,15 @@ +#include +#include +#include "cblas.h" +#include "error_cblas_l2.h" + +void +cblas_dspmv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const int N, const double alpha, const double *Ap, + const double *X, const int incX, const double beta, double *Y, + const int incY) +{ +#define BASE double +#include "source_spmv.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/dspmv.lo b/gsl-2.5/cblas/dspmv.lo new file mode 100644 index 00000000..8eb09086 --- /dev/null +++ b/gsl-2.5/cblas/dspmv.lo @@ -0,0 +1,12 @@ +# dspmv.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/dspmv.o' + +# Name of the non-PIC object +non_pic_object='dspmv.o' + diff --git a/gsl-2.5/cblas/dspr.c b/gsl-2.5/cblas/dspr.c new file mode 100644 index 00000000..f0db80da --- /dev/null +++ b/gsl-2.5/cblas/dspr.c @@ -0,0 +1,14 @@ +#include +#include +#include "cblas.h" +#include "error_cblas_l2.h" + +void +cblas_dspr (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const int N, const double alpha, const double *X, const int incX, + double *Ap) +{ +#define BASE double +#include "source_spr.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/dspr.lo b/gsl-2.5/cblas/dspr.lo new file mode 100644 index 00000000..161396dd --- /dev/null +++ b/gsl-2.5/cblas/dspr.lo @@ -0,0 +1,12 @@ +# dspr.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/dspr.o' + +# Name of the non-PIC object +non_pic_object='dspr.o' + diff --git a/gsl-2.5/cblas/dspr2.c b/gsl-2.5/cblas/dspr2.c new file mode 100644 index 00000000..e10ac866 --- /dev/null +++ b/gsl-2.5/cblas/dspr2.c @@ -0,0 +1,14 @@ +#include +#include +#include "cblas.h" +#include "error_cblas_l2.h" + +void +cblas_dspr2 (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const int N, const double alpha, const double *X, const int incX, + const double *Y, const int incY, double *Ap) +{ +#define BASE double +#include "source_spr2.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/dspr2.lo b/gsl-2.5/cblas/dspr2.lo new file mode 100644 index 00000000..12d95446 --- /dev/null +++ b/gsl-2.5/cblas/dspr2.lo @@ -0,0 +1,12 @@ +# dspr2.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/dspr2.o' + +# Name of the non-PIC object +non_pic_object='dspr2.o' + diff --git a/gsl-2.5/cblas/dswap.c b/gsl-2.5/cblas/dswap.c new file mode 100644 index 00000000..e8401a5f --- /dev/null +++ b/gsl-2.5/cblas/dswap.c @@ -0,0 +1,12 @@ +#include +#include +#include "cblas.h" + +void +cblas_dswap (const int N, double *X, const int incX, double *Y, + const int incY) +{ +#define BASE double +#include "source_swap_r.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/dswap.lo b/gsl-2.5/cblas/dswap.lo new file mode 100644 index 00000000..a8b69e54 --- /dev/null +++ b/gsl-2.5/cblas/dswap.lo @@ -0,0 +1,12 @@ +# dswap.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/dswap.o' + +# Name of the non-PIC object +non_pic_object='dswap.o' + diff --git a/gsl-2.5/cblas/dsymm.c b/gsl-2.5/cblas/dsymm.c new file mode 100644 index 00000000..a57c4765 --- /dev/null +++ b/gsl-2.5/cblas/dsymm.c @@ -0,0 +1,16 @@ +#include +#include +#include "cblas.h" +#include "error_cblas_l3.h" + +void +cblas_dsymm (const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, + const enum CBLAS_UPLO Uplo, const int M, const int N, + const double alpha, const double *A, const int lda, + const double *B, const int ldb, const double beta, double *C, + const int ldc) +{ +#define BASE double +#include "source_symm_r.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/dsymm.lo b/gsl-2.5/cblas/dsymm.lo new file mode 100644 index 00000000..bb9bf759 --- /dev/null +++ b/gsl-2.5/cblas/dsymm.lo @@ -0,0 +1,12 @@ +# dsymm.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/dsymm.o' + +# Name of the non-PIC object +non_pic_object='dsymm.o' + diff --git a/gsl-2.5/cblas/dsymv.c b/gsl-2.5/cblas/dsymv.c new file mode 100644 index 00000000..81311dbf --- /dev/null +++ b/gsl-2.5/cblas/dsymv.c @@ -0,0 +1,15 @@ +#include +#include +#include "cblas.h" +#include "error_cblas_l2.h" + +void +cblas_dsymv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const int N, const double alpha, const double *A, const int lda, + const double *X, const int incX, const double beta, double *Y, + const int incY) +{ +#define BASE double +#include "source_symv.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/dsymv.lo b/gsl-2.5/cblas/dsymv.lo new file mode 100644 index 00000000..e7d0095a --- /dev/null +++ b/gsl-2.5/cblas/dsymv.lo @@ -0,0 +1,12 @@ +# dsymv.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/dsymv.o' + +# Name of the non-PIC object +non_pic_object='dsymv.o' + diff --git a/gsl-2.5/cblas/dsyr.c b/gsl-2.5/cblas/dsyr.c new file mode 100644 index 00000000..790f8299 --- /dev/null +++ b/gsl-2.5/cblas/dsyr.c @@ -0,0 +1,14 @@ +#include +#include +#include "cblas.h" +#include "error_cblas_l2.h" + +void +cblas_dsyr (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const int N, const double alpha, const double *X, const int incX, + double *A, const int lda) +{ +#define BASE double +#include "source_syr.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/dsyr.lo b/gsl-2.5/cblas/dsyr.lo new file mode 100644 index 00000000..eed90f25 --- /dev/null +++ b/gsl-2.5/cblas/dsyr.lo @@ -0,0 +1,12 @@ +# dsyr.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/dsyr.o' + +# Name of the non-PIC object +non_pic_object='dsyr.o' + diff --git a/gsl-2.5/cblas/dsyr2.c b/gsl-2.5/cblas/dsyr2.c new file mode 100644 index 00000000..ce5e005e --- /dev/null +++ b/gsl-2.5/cblas/dsyr2.c @@ -0,0 +1,14 @@ +#include +#include +#include "cblas.h" +#include "error_cblas_l2.h" + +void +cblas_dsyr2 (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const int N, const double alpha, const double *X, const int incX, + const double *Y, const int incY, double *A, const int lda) +{ +#define BASE double +#include "source_syr2.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/dsyr2.lo b/gsl-2.5/cblas/dsyr2.lo new file mode 100644 index 00000000..28bc07fe --- /dev/null +++ b/gsl-2.5/cblas/dsyr2.lo @@ -0,0 +1,12 @@ +# dsyr2.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/dsyr2.o' + +# Name of the non-PIC object +non_pic_object='dsyr2.o' + diff --git a/gsl-2.5/cblas/dsyr2k.c b/gsl-2.5/cblas/dsyr2k.c new file mode 100644 index 00000000..79e6dff4 --- /dev/null +++ b/gsl-2.5/cblas/dsyr2k.c @@ -0,0 +1,16 @@ +#include +#include +#include "cblas.h" +#include "error_cblas_l3.h" + +void +cblas_dsyr2k (const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE Trans, const int N, const int K, + const double alpha, const double *A, const int lda, + const double *B, const int ldb, const double beta, double *C, + const int ldc) +{ +#define BASE double +#include "source_syr2k_r.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/dsyr2k.lo b/gsl-2.5/cblas/dsyr2k.lo new file mode 100644 index 00000000..fb2eefe9 --- /dev/null +++ b/gsl-2.5/cblas/dsyr2k.lo @@ -0,0 +1,12 @@ +# dsyr2k.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/dsyr2k.o' + +# Name of the non-PIC object +non_pic_object='dsyr2k.o' + diff --git a/gsl-2.5/cblas/dsyrk.c b/gsl-2.5/cblas/dsyrk.c new file mode 100644 index 00000000..f244ad7e --- /dev/null +++ b/gsl-2.5/cblas/dsyrk.c @@ -0,0 +1,15 @@ +#include +#include +#include "cblas.h" +#include "error_cblas_l3.h" + +void +cblas_dsyrk (const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE Trans, const int N, const int K, + const double alpha, const double *A, const int lda, + const double beta, double *C, const int ldc) +{ +#define BASE double +#include "source_syrk_r.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/dsyrk.lo b/gsl-2.5/cblas/dsyrk.lo new file mode 100644 index 00000000..610e624e --- /dev/null +++ b/gsl-2.5/cblas/dsyrk.lo @@ -0,0 +1,12 @@ +# dsyrk.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/dsyrk.o' + +# Name of the non-PIC object +non_pic_object='dsyrk.o' + diff --git a/gsl-2.5/cblas/dtbmv.c b/gsl-2.5/cblas/dtbmv.c new file mode 100644 index 00000000..d9559b00 --- /dev/null +++ b/gsl-2.5/cblas/dtbmv.c @@ -0,0 +1,15 @@ +#include +#include +#include "cblas.h" +#include "error_cblas_l2.h" + +void +cblas_dtbmv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, + const int N, const int K, const double *A, const int lda, + double *X, const int incX) +{ +#define BASE double +#include "source_tbmv_r.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/dtbmv.lo b/gsl-2.5/cblas/dtbmv.lo new file mode 100644 index 00000000..177e5ff9 --- /dev/null +++ b/gsl-2.5/cblas/dtbmv.lo @@ -0,0 +1,12 @@ +# dtbmv.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/dtbmv.o' + +# Name of the non-PIC object +non_pic_object='dtbmv.o' + diff --git a/gsl-2.5/cblas/dtbsv.c b/gsl-2.5/cblas/dtbsv.c new file mode 100644 index 00000000..13815f8f --- /dev/null +++ b/gsl-2.5/cblas/dtbsv.c @@ -0,0 +1,15 @@ +#include +#include +#include "cblas.h" +#include "error_cblas_l2.h" + +void +cblas_dtbsv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, + const int N, const int K, const double *A, const int lda, + double *X, const int incX) +{ +#define BASE double +#include "source_tbsv_r.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/dtbsv.lo b/gsl-2.5/cblas/dtbsv.lo new file mode 100644 index 00000000..f45349da --- /dev/null +++ b/gsl-2.5/cblas/dtbsv.lo @@ -0,0 +1,12 @@ +# dtbsv.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/dtbsv.o' + +# Name of the non-PIC object +non_pic_object='dtbsv.o' + diff --git a/gsl-2.5/cblas/dtpmv.c b/gsl-2.5/cblas/dtpmv.c new file mode 100644 index 00000000..6071fe7f --- /dev/null +++ b/gsl-2.5/cblas/dtpmv.c @@ -0,0 +1,14 @@ +#include +#include +#include "cblas.h" +#include "error_cblas_l2.h" + +void +cblas_dtpmv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, + const int N, const double *Ap, double *X, const int incX) +{ +#define BASE double +#include "source_tpmv_r.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/dtpmv.lo b/gsl-2.5/cblas/dtpmv.lo new file mode 100644 index 00000000..64b78128 --- /dev/null +++ b/gsl-2.5/cblas/dtpmv.lo @@ -0,0 +1,12 @@ +# dtpmv.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/dtpmv.o' + +# Name of the non-PIC object +non_pic_object='dtpmv.o' + diff --git a/gsl-2.5/cblas/dtpsv.c b/gsl-2.5/cblas/dtpsv.c new file mode 100644 index 00000000..b68bea28 --- /dev/null +++ b/gsl-2.5/cblas/dtpsv.c @@ -0,0 +1,14 @@ +#include +#include +#include "cblas.h" +#include "error_cblas_l2.h" + +void +cblas_dtpsv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, + const int N, const double *Ap, double *X, const int incX) +{ +#define BASE double +#include "source_tpsv_r.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/dtpsv.lo b/gsl-2.5/cblas/dtpsv.lo new file mode 100644 index 00000000..dc6b50b9 --- /dev/null +++ b/gsl-2.5/cblas/dtpsv.lo @@ -0,0 +1,12 @@ +# dtpsv.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/dtpsv.o' + +# Name of the non-PIC object +non_pic_object='dtpsv.o' + diff --git a/gsl-2.5/cblas/dtrmm.c b/gsl-2.5/cblas/dtrmm.c new file mode 100644 index 00000000..ded31612 --- /dev/null +++ b/gsl-2.5/cblas/dtrmm.c @@ -0,0 +1,16 @@ +#include +#include +#include "cblas.h" +#include "error_cblas_l3.h" + +void +cblas_dtrmm (const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, + const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, + const enum CBLAS_DIAG Diag, const int M, const int N, + const double alpha, const double *A, const int lda, double *B, + const int ldb) +{ +#define BASE double +#include "source_trmm_r.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/dtrmm.lo b/gsl-2.5/cblas/dtrmm.lo new file mode 100644 index 00000000..e6aa491d --- /dev/null +++ b/gsl-2.5/cblas/dtrmm.lo @@ -0,0 +1,12 @@ +# dtrmm.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/dtrmm.o' + +# Name of the non-PIC object +non_pic_object='dtrmm.o' + diff --git a/gsl-2.5/cblas/dtrmv.c b/gsl-2.5/cblas/dtrmv.c new file mode 100644 index 00000000..eede0997 --- /dev/null +++ b/gsl-2.5/cblas/dtrmv.c @@ -0,0 +1,15 @@ +#include +#include +#include "cblas.h" +#include "error_cblas_l2.h" + +void +cblas_dtrmv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, + const int N, const double *A, const int lda, double *X, + const int incX) +{ +#define BASE double +#include "source_trmv_r.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/dtrmv.lo b/gsl-2.5/cblas/dtrmv.lo new file mode 100644 index 00000000..4f05187f --- /dev/null +++ b/gsl-2.5/cblas/dtrmv.lo @@ -0,0 +1,12 @@ +# dtrmv.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/dtrmv.o' + +# Name of the non-PIC object +non_pic_object='dtrmv.o' + diff --git a/gsl-2.5/cblas/dtrsm.c b/gsl-2.5/cblas/dtrsm.c new file mode 100644 index 00000000..a50b5fa3 --- /dev/null +++ b/gsl-2.5/cblas/dtrsm.c @@ -0,0 +1,16 @@ +#include +#include +#include "cblas.h" +#include "error_cblas_l3.h" + +void +cblas_dtrsm (const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, + const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, + const enum CBLAS_DIAG Diag, const int M, const int N, + const double alpha, const double *A, const int lda, double *B, + const int ldb) +{ +#define BASE double +#include "source_trsm_r.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/dtrsm.lo b/gsl-2.5/cblas/dtrsm.lo new file mode 100644 index 00000000..06f5e388 --- /dev/null +++ b/gsl-2.5/cblas/dtrsm.lo @@ -0,0 +1,12 @@ +# dtrsm.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/dtrsm.o' + +# Name of the non-PIC object +non_pic_object='dtrsm.o' + diff --git a/gsl-2.5/cblas/dtrsv.c b/gsl-2.5/cblas/dtrsv.c new file mode 100644 index 00000000..fc069c0a --- /dev/null +++ b/gsl-2.5/cblas/dtrsv.c @@ -0,0 +1,15 @@ +#include +#include +#include "cblas.h" +#include "error_cblas_l2.h" + +void +cblas_dtrsv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, + const int N, const double *A, const int lda, double *X, + const int incX) +{ +#define BASE double +#include "source_trsv_r.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/dtrsv.lo b/gsl-2.5/cblas/dtrsv.lo new file mode 100644 index 00000000..dcba7c81 --- /dev/null +++ b/gsl-2.5/cblas/dtrsv.lo @@ -0,0 +1,12 @@ +# dtrsv.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/dtrsv.o' + +# Name of the non-PIC object +non_pic_object='dtrsv.o' + diff --git a/gsl-2.5/cblas/dzasum.c b/gsl-2.5/cblas/dzasum.c new file mode 100644 index 00000000..7484ede7 --- /dev/null +++ b/gsl-2.5/cblas/dzasum.c @@ -0,0 +1,11 @@ +#include +#include +#include "cblas.h" + +double +cblas_dzasum (const int N, const void *X, const int incX) +{ +#define BASE double +#include "source_asum_c.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/dzasum.lo b/gsl-2.5/cblas/dzasum.lo new file mode 100644 index 00000000..7e00ce64 --- /dev/null +++ b/gsl-2.5/cblas/dzasum.lo @@ -0,0 +1,12 @@ +# dzasum.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/dzasum.o' + +# Name of the non-PIC object +non_pic_object='dzasum.o' + diff --git a/gsl-2.5/cblas/dznrm2.c b/gsl-2.5/cblas/dznrm2.c new file mode 100644 index 00000000..d58ec9f5 --- /dev/null +++ b/gsl-2.5/cblas/dznrm2.c @@ -0,0 +1,11 @@ +#include +#include +#include "cblas.h" + +double +cblas_dznrm2 (const int N, const void *X, const int incX) +{ +#define BASE double +#include "source_nrm2_c.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/dznrm2.lo b/gsl-2.5/cblas/dznrm2.lo new file mode 100644 index 00000000..b809ac6c --- /dev/null +++ b/gsl-2.5/cblas/dznrm2.lo @@ -0,0 +1,12 @@ +# dznrm2.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/dznrm2.o' + +# Name of the non-PIC object +non_pic_object='dznrm2.o' + diff --git a/gsl-2.5/cblas/error_cblas.h b/gsl-2.5/cblas/error_cblas.h new file mode 100644 index 00000000..342bf3b8 --- /dev/null +++ b/gsl-2.5/cblas/error_cblas.h @@ -0,0 +1,87 @@ +/* cblas/error_cblas.h + * + * Copyright (C) 2010 José Luis García Pallero + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __ERROR_CBLAS_H__ +#define __ERROR_CBLAS_H__ + + +#define CHECK_ARGS_X(FUNCTION,VAR,ARGS) do { int VAR = 0 ; \ + CBLAS_ERROR_##FUNCTION ARGS ; \ + if (VAR) cblas_xerbla(pos,__FILE__,""); } while (0) + +#define CHECK_ARGS7(FUNCTION,A1,A2,A3,A4,A5,A6,A7) \ + CHECK_ARGS_X(FUNCTION,pos,(pos,A1,A2,A3,A4,A5,A6,A7)) + +#define CHECK_ARGS8(FUNCTION,A1,A2,A3,A4,A5,A6,A7,A8) \ + CHECK_ARGS_X(FUNCTION,pos,(pos,A1,A2,A3,A4,A5,A6,A7,A8)) + +#define CHECK_ARGS9(FUNCTION,A1,A2,A3,A4,A5,A6,A7,A8,A9) \ + CHECK_ARGS_X(FUNCTION,pos,(pos,A1,A2,A3,A4,A5,A6,A7,A8,A9)) + +#define CHECK_ARGS10(FUNCTION,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10) \ + CHECK_ARGS_X(FUNCTION,pos,(pos,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10)) + +#define CHECK_ARGS11(FUNCTION,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11) \ + CHECK_ARGS_X(FUNCTION,pos,(pos,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11)) + +#define CHECK_ARGS12(FUNCTION,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A12) \ + CHECK_ARGS_X(FUNCTION,pos,(pos,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A12)) + +#define CHECK_ARGS13(FUNCTION,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A12,A13) \ + CHECK_ARGS_X(FUNCTION,pos,(pos,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A12,A13)) + +#define CHECK_ARGS14(FUNCTION,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A12,A13,A14) \ + CHECK_ARGS_X(FUNCTION,pos,(pos,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A12,A13,A14)) + +/* check if CBLAS_ORDER is correct */ +#define CHECK_ORDER(pos,posIfError,order) \ +if(((order)!=CblasRowMajor)&&((order)!=CblasColMajor)) \ + pos = posIfError; + +/* check if CBLAS_TRANSPOSE is correct */ +#define CHECK_TRANSPOSE(pos,posIfError,Trans) \ +if(((Trans)!=CblasNoTrans)&&((Trans)!=CblasTrans)&&((Trans)!=CblasConjTrans)) \ + pos = posIfError; + +/* check if CBLAS_UPLO is correct */ +#define CHECK_UPLO(pos,posIfError,Uplo) \ +if(((Uplo)!=CblasUpper)&&((Uplo)!=CblasLower)) \ + pos = posIfError; + +/* check if CBLAS_DIAG is correct */ +#define CHECK_DIAG(pos,posIfError,Diag) \ +if(((Diag)!=CblasNonUnit)&&((Diag)!=CblasUnit)) \ + pos = posIfError; + +/* check if CBLAS_SIDE is correct */ +#define CHECK_SIDE(pos,posIfError,Side) \ +if(((Side)!=CblasLeft)&&((Side)!=CblasRight)) \ + pos = posIfError; + +/* check if a dimension argument is correct */ +#define CHECK_DIM(pos,posIfError,dim) \ +if((dim)<0) \ + pos = posIfError; + +/* check if a stride argument is correct */ +#define CHECK_STRIDE(pos,posIfError,stride) \ +if((stride)==0) \ + pos = posIfError; + +#endif /* __ERROR_CBLAS_H__ */ diff --git a/gsl-2.5/cblas/error_cblas_l2.h b/gsl-2.5/cblas/error_cblas_l2.h new file mode 100644 index 00000000..480b78d5 --- /dev/null +++ b/gsl-2.5/cblas/error_cblas_l2.h @@ -0,0 +1,239 @@ +/* cblas/error_cblas_l2.h + * + * Copyright (C) 2010 José Luis García Pallero + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __ERROR_CBLAS_L2_H__ +#define __ERROR_CBLAS_L2_H__ +#include +#include "error_cblas.h" +/* + * ============================================================================= + * Prototypes for level 2 BLAS + * ============================================================================= + */ + +/* + * Routines with standard 4 prefixes (S, D, C, Z) + */ + +/* cblas_xgemv() */ +#define CBLAS_ERROR_GEMV(pos,order,TransA,M,N,alpha,A,lda,X,incX,beta,Y,incY) \ +CHECK_ORDER(pos,1,order); \ +CHECK_TRANSPOSE(pos,2,TransA); \ +CHECK_DIM(pos,3,M); \ +CHECK_DIM(pos,4,N); \ +if((order)==CblasRowMajor) { \ + if((lda) +#include "error_cblas.h" + +/* + * ============================================================================= + * Prototypes for level 3 BLAS + * ============================================================================= + */ + +/* + * Routines with standard 4 prefixes (S, D, C, Z) + */ + +/* cblas_xgemm() */ +#define CBLAS_ERROR_GEMM(pos,Order,TransA,TransB,M,N,K,alpha,A,lda,B,ldb,beta,C,ldc) \ +{ \ + enum CBLAS_TRANSPOSE __transF=CblasNoTrans,__transG=CblasNoTrans; \ + if((Order)==CblasRowMajor) { \ + __transF = ((TransA)!=CblasConjTrans) ? (TransA) : CblasTrans; \ + __transG = ((TransB)!=CblasConjTrans) ? (TransB) : CblasTrans; \ + } else { \ + __transF = ((TransB)!=CblasConjTrans) ? (TransB) : CblasTrans; \ + __transG = ((TransA)!=CblasConjTrans) ? (TransA) : CblasTrans; \ + } \ + CHECK_ORDER(pos,1,Order); \ + CHECK_TRANSPOSE(pos,2,TransA); \ + CHECK_TRANSPOSE(pos,3,TransB); \ + CHECK_DIM(pos,4,M); \ + CHECK_DIM(pos,5,N); \ + CHECK_DIM(pos,6,K); \ + if((Order)==CblasRowMajor) { \ + if(__transF==CblasNoTrans) { \ + if((lda) + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +#define __BEGIN_DECLS extern "C" { +#define __END_DECLS } +#else +#define __BEGIN_DECLS /* empty */ +#define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +/* + * Enumerated and derived types + */ +#define CBLAS_INDEX size_t /* this may vary between platforms */ + +enum CBLAS_ORDER {CblasRowMajor=101, CblasColMajor=102}; +enum CBLAS_TRANSPOSE {CblasNoTrans=111, CblasTrans=112, CblasConjTrans=113}; +enum CBLAS_UPLO {CblasUpper=121, CblasLower=122}; +enum CBLAS_DIAG {CblasNonUnit=131, CblasUnit=132}; +enum CBLAS_SIDE {CblasLeft=141, CblasRight=142}; + +/* + * =========================================================================== + * Prototypes for level 1 BLAS functions (complex are recast as routines) + * =========================================================================== + */ +float cblas_sdsdot(const int N, const float alpha, const float *X, + const int incX, const float *Y, const int incY); +double cblas_dsdot(const int N, const float *X, const int incX, const float *Y, + const int incY); +float cblas_sdot(const int N, const float *X, const int incX, + const float *Y, const int incY); +double cblas_ddot(const int N, const double *X, const int incX, + const double *Y, const int incY); + +/* + * Functions having prefixes Z and C only + */ +void cblas_cdotu_sub(const int N, const void *X, const int incX, + const void *Y, const int incY, void *dotu); +void cblas_cdotc_sub(const int N, const void *X, const int incX, + const void *Y, const int incY, void *dotc); + +void cblas_zdotu_sub(const int N, const void *X, const int incX, + const void *Y, const int incY, void *dotu); +void cblas_zdotc_sub(const int N, const void *X, const int incX, + const void *Y, const int incY, void *dotc); + + +/* + * Functions having prefixes S D SC DZ + */ +float cblas_snrm2(const int N, const float *X, const int incX); +float cblas_sasum(const int N, const float *X, const int incX); + +double cblas_dnrm2(const int N, const double *X, const int incX); +double cblas_dasum(const int N, const double *X, const int incX); + +float cblas_scnrm2(const int N, const void *X, const int incX); +float cblas_scasum(const int N, const void *X, const int incX); + +double cblas_dznrm2(const int N, const void *X, const int incX); +double cblas_dzasum(const int N, const void *X, const int incX); + + +/* + * Functions having standard 4 prefixes (S D C Z) + */ +CBLAS_INDEX cblas_isamax(const int N, const float *X, const int incX); +CBLAS_INDEX cblas_idamax(const int N, const double *X, const int incX); +CBLAS_INDEX cblas_icamax(const int N, const void *X, const int incX); +CBLAS_INDEX cblas_izamax(const int N, const void *X, const int incX); + +/* + * =========================================================================== + * Prototypes for level 1 BLAS routines + * =========================================================================== + */ + +/* + * Routines with standard 4 prefixes (s, d, c, z) + */ +void cblas_sswap(const int N, float *X, const int incX, + float *Y, const int incY); +void cblas_scopy(const int N, const float *X, const int incX, + float *Y, const int incY); +void cblas_saxpy(const int N, const float alpha, const float *X, + const int incX, float *Y, const int incY); + +void cblas_dswap(const int N, double *X, const int incX, + double *Y, const int incY); +void cblas_dcopy(const int N, const double *X, const int incX, + double *Y, const int incY); +void cblas_daxpy(const int N, const double alpha, const double *X, + const int incX, double *Y, const int incY); + +void cblas_cswap(const int N, void *X, const int incX, + void *Y, const int incY); +void cblas_ccopy(const int N, const void *X, const int incX, + void *Y, const int incY); +void cblas_caxpy(const int N, const void *alpha, const void *X, + const int incX, void *Y, const int incY); + +void cblas_zswap(const int N, void *X, const int incX, + void *Y, const int incY); +void cblas_zcopy(const int N, const void *X, const int incX, + void *Y, const int incY); +void cblas_zaxpy(const int N, const void *alpha, const void *X, + const int incX, void *Y, const int incY); + + +/* + * Routines with S and D prefix only + */ +void cblas_srotg(float *a, float *b, float *c, float *s); +void cblas_srotmg(float *d1, float *d2, float *b1, const float b2, float *P); +void cblas_srot(const int N, float *X, const int incX, + float *Y, const int incY, const float c, const float s); +void cblas_srotm(const int N, float *X, const int incX, + float *Y, const int incY, const float *P); + +void cblas_drotg(double *a, double *b, double *c, double *s); +void cblas_drotmg(double *d1, double *d2, double *b1, const double b2, double *P); +void cblas_drot(const int N, double *X, const int incX, + double *Y, const int incY, const double c, const double s); +void cblas_drotm(const int N, double *X, const int incX, + double *Y, const int incY, const double *P); + + +/* + * Routines with S D C Z CS and ZD prefixes + */ +void cblas_sscal(const int N, const float alpha, float *X, const int incX); +void cblas_dscal(const int N, const double alpha, double *X, const int incX); +void cblas_cscal(const int N, const void *alpha, void *X, const int incX); +void cblas_zscal(const int N, const void *alpha, void *X, const int incX); +void cblas_csscal(const int N, const float alpha, void *X, const int incX); +void cblas_zdscal(const int N, const double alpha, void *X, const int incX); + +/* + * =========================================================================== + * Prototypes for level 2 BLAS + * =========================================================================== + */ + +/* + * Routines with standard 4 prefixes (S, D, C, Z) + */ +void cblas_sgemv(const enum CBLAS_ORDER order, + const enum CBLAS_TRANSPOSE TransA, const int M, const int N, + const float alpha, const float *A, const int lda, + const float *X, const int incX, const float beta, + float *Y, const int incY); +void cblas_sgbmv(const enum CBLAS_ORDER order, + const enum CBLAS_TRANSPOSE TransA, const int M, const int N, + const int KL, const int KU, const float alpha, + const float *A, const int lda, const float *X, + const int incX, const float beta, float *Y, const int incY); +void cblas_strmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, + const int N, const float *A, const int lda, + float *X, const int incX); +void cblas_stbmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, + const int N, const int K, const float *A, const int lda, + float *X, const int incX); +void cblas_stpmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, + const int N, const float *Ap, float *X, const int incX); +void cblas_strsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, + const int N, const float *A, const int lda, float *X, + const int incX); +void cblas_stbsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, + const int N, const int K, const float *A, const int lda, + float *X, const int incX); +void cblas_stpsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, + const int N, const float *Ap, float *X, const int incX); + +void cblas_dgemv(const enum CBLAS_ORDER order, + const enum CBLAS_TRANSPOSE TransA, const int M, const int N, + const double alpha, const double *A, const int lda, + const double *X, const int incX, const double beta, + double *Y, const int incY); +void cblas_dgbmv(const enum CBLAS_ORDER order, + const enum CBLAS_TRANSPOSE TransA, const int M, const int N, + const int KL, const int KU, const double alpha, + const double *A, const int lda, const double *X, + const int incX, const double beta, double *Y, const int incY); +void cblas_dtrmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, + const int N, const double *A, const int lda, + double *X, const int incX); +void cblas_dtbmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, + const int N, const int K, const double *A, const int lda, + double *X, const int incX); +void cblas_dtpmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, + const int N, const double *Ap, double *X, const int incX); +void cblas_dtrsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, + const int N, const double *A, const int lda, double *X, + const int incX); +void cblas_dtbsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, + const int N, const int K, const double *A, const int lda, + double *X, const int incX); +void cblas_dtpsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, + const int N, const double *Ap, double *X, const int incX); + +void cblas_cgemv(const enum CBLAS_ORDER order, + const enum CBLAS_TRANSPOSE TransA, const int M, const int N, + const void *alpha, const void *A, const int lda, + const void *X, const int incX, const void *beta, + void *Y, const int incY); +void cblas_cgbmv(const enum CBLAS_ORDER order, + const enum CBLAS_TRANSPOSE TransA, const int M, const int N, + const int KL, const int KU, const void *alpha, + const void *A, const int lda, const void *X, + const int incX, const void *beta, void *Y, const int incY); +void cblas_ctrmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, + const int N, const void *A, const int lda, + void *X, const int incX); +void cblas_ctbmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, + const int N, const int K, const void *A, const int lda, + void *X, const int incX); +void cblas_ctpmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, + const int N, const void *Ap, void *X, const int incX); +void cblas_ctrsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, + const int N, const void *A, const int lda, void *X, + const int incX); +void cblas_ctbsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, + const int N, const int K, const void *A, const int lda, + void *X, const int incX); +void cblas_ctpsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, + const int N, const void *Ap, void *X, const int incX); + +void cblas_zgemv(const enum CBLAS_ORDER order, + const enum CBLAS_TRANSPOSE TransA, const int M, const int N, + const void *alpha, const void *A, const int lda, + const void *X, const int incX, const void *beta, + void *Y, const int incY); +void cblas_zgbmv(const enum CBLAS_ORDER order, + const enum CBLAS_TRANSPOSE TransA, const int M, const int N, + const int KL, const int KU, const void *alpha, + const void *A, const int lda, const void *X, + const int incX, const void *beta, void *Y, const int incY); +void cblas_ztrmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, + const int N, const void *A, const int lda, + void *X, const int incX); +void cblas_ztbmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, + const int N, const int K, const void *A, const int lda, + void *X, const int incX); +void cblas_ztpmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, + const int N, const void *Ap, void *X, const int incX); +void cblas_ztrsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, + const int N, const void *A, const int lda, void *X, + const int incX); +void cblas_ztbsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, + const int N, const int K, const void *A, const int lda, + void *X, const int incX); +void cblas_ztpsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, + const int N, const void *Ap, void *X, const int incX); + + +/* + * Routines with S and D prefixes only + */ +void cblas_ssymv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const int N, const float alpha, const float *A, + const int lda, const float *X, const int incX, + const float beta, float *Y, const int incY); +void cblas_ssbmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const int N, const int K, const float alpha, const float *A, + const int lda, const float *X, const int incX, + const float beta, float *Y, const int incY); +void cblas_sspmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const int N, const float alpha, const float *Ap, + const float *X, const int incX, + const float beta, float *Y, const int incY); +void cblas_sger(const enum CBLAS_ORDER order, const int M, const int N, + const float alpha, const float *X, const int incX, + const float *Y, const int incY, float *A, const int lda); +void cblas_ssyr(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const int N, const float alpha, const float *X, + const int incX, float *A, const int lda); +void cblas_sspr(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const int N, const float alpha, const float *X, + const int incX, float *Ap); +void cblas_ssyr2(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const int N, const float alpha, const float *X, + const int incX, const float *Y, const int incY, float *A, + const int lda); +void cblas_sspr2(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const int N, const float alpha, const float *X, + const int incX, const float *Y, const int incY, float *A); + +void cblas_dsymv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const int N, const double alpha, const double *A, + const int lda, const double *X, const int incX, + const double beta, double *Y, const int incY); +void cblas_dsbmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const int N, const int K, const double alpha, const double *A, + const int lda, const double *X, const int incX, + const double beta, double *Y, const int incY); +void cblas_dspmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const int N, const double alpha, const double *Ap, + const double *X, const int incX, + const double beta, double *Y, const int incY); +void cblas_dger(const enum CBLAS_ORDER order, const int M, const int N, + const double alpha, const double *X, const int incX, + const double *Y, const int incY, double *A, const int lda); +void cblas_dsyr(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const int N, const double alpha, const double *X, + const int incX, double *A, const int lda); +void cblas_dspr(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const int N, const double alpha, const double *X, + const int incX, double *Ap); +void cblas_dsyr2(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const int N, const double alpha, const double *X, + const int incX, const double *Y, const int incY, double *A, + const int lda); +void cblas_dspr2(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const int N, const double alpha, const double *X, + const int incX, const double *Y, const int incY, double *A); + + +/* + * Routines with C and Z prefixes only + */ +void cblas_chemv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const int N, const void *alpha, const void *A, + const int lda, const void *X, const int incX, + const void *beta, void *Y, const int incY); +void cblas_chbmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const int N, const int K, const void *alpha, const void *A, + const int lda, const void *X, const int incX, + const void *beta, void *Y, const int incY); +void cblas_chpmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const int N, const void *alpha, const void *Ap, + const void *X, const int incX, + const void *beta, void *Y, const int incY); +void cblas_cgeru(const enum CBLAS_ORDER order, const int M, const int N, + const void *alpha, const void *X, const int incX, + const void *Y, const int incY, void *A, const int lda); +void cblas_cgerc(const enum CBLAS_ORDER order, const int M, const int N, + const void *alpha, const void *X, const int incX, + const void *Y, const int incY, void *A, const int lda); +void cblas_cher(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const int N, const float alpha, const void *X, const int incX, + void *A, const int lda); +void cblas_chpr(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const int N, const float alpha, const void *X, + const int incX, void *A); +void cblas_cher2(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const int N, + const void *alpha, const void *X, const int incX, + const void *Y, const int incY, void *A, const int lda); +void cblas_chpr2(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const int N, + const void *alpha, const void *X, const int incX, + const void *Y, const int incY, void *Ap); + +void cblas_zhemv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const int N, const void *alpha, const void *A, + const int lda, const void *X, const int incX, + const void *beta, void *Y, const int incY); +void cblas_zhbmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const int N, const int K, const void *alpha, const void *A, + const int lda, const void *X, const int incX, + const void *beta, void *Y, const int incY); +void cblas_zhpmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const int N, const void *alpha, const void *Ap, + const void *X, const int incX, + const void *beta, void *Y, const int incY); +void cblas_zgeru(const enum CBLAS_ORDER order, const int M, const int N, + const void *alpha, const void *X, const int incX, + const void *Y, const int incY, void *A, const int lda); +void cblas_zgerc(const enum CBLAS_ORDER order, const int M, const int N, + const void *alpha, const void *X, const int incX, + const void *Y, const int incY, void *A, const int lda); +void cblas_zher(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const int N, const double alpha, const void *X, const int incX, + void *A, const int lda); +void cblas_zhpr(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const int N, const double alpha, const void *X, + const int incX, void *A); +void cblas_zher2(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const int N, + const void *alpha, const void *X, const int incX, + const void *Y, const int incY, void *A, const int lda); +void cblas_zhpr2(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const int N, + const void *alpha, const void *X, const int incX, + const void *Y, const int incY, void *Ap); + +/* + * =========================================================================== + * Prototypes for level 3 BLAS + * =========================================================================== + */ + +/* + * Routines with standard 4 prefixes (S, D, C, Z) + */ +void cblas_sgemm(const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TransA, + const enum CBLAS_TRANSPOSE TransB, const int M, const int N, + const int K, const float alpha, const float *A, + const int lda, const float *B, const int ldb, + const float beta, float *C, const int ldc); +void cblas_ssymm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, + const enum CBLAS_UPLO Uplo, const int M, const int N, + const float alpha, const float *A, const int lda, + const float *B, const int ldb, const float beta, + float *C, const int ldc); +void cblas_ssyrk(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE Trans, const int N, const int K, + const float alpha, const float *A, const int lda, + const float beta, float *C, const int ldc); +void cblas_ssyr2k(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE Trans, const int N, const int K, + const float alpha, const float *A, const int lda, + const float *B, const int ldb, const float beta, + float *C, const int ldc); +void cblas_strmm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, + const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, + const enum CBLAS_DIAG Diag, const int M, const int N, + const float alpha, const float *A, const int lda, + float *B, const int ldb); +void cblas_strsm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, + const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, + const enum CBLAS_DIAG Diag, const int M, const int N, + const float alpha, const float *A, const int lda, + float *B, const int ldb); + +void cblas_dgemm(const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TransA, + const enum CBLAS_TRANSPOSE TransB, const int M, const int N, + const int K, const double alpha, const double *A, + const int lda, const double *B, const int ldb, + const double beta, double *C, const int ldc); +void cblas_dsymm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, + const enum CBLAS_UPLO Uplo, const int M, const int N, + const double alpha, const double *A, const int lda, + const double *B, const int ldb, const double beta, + double *C, const int ldc); +void cblas_dsyrk(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE Trans, const int N, const int K, + const double alpha, const double *A, const int lda, + const double beta, double *C, const int ldc); +void cblas_dsyr2k(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE Trans, const int N, const int K, + const double alpha, const double *A, const int lda, + const double *B, const int ldb, const double beta, + double *C, const int ldc); +void cblas_dtrmm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, + const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, + const enum CBLAS_DIAG Diag, const int M, const int N, + const double alpha, const double *A, const int lda, + double *B, const int ldb); +void cblas_dtrsm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, + const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, + const enum CBLAS_DIAG Diag, const int M, const int N, + const double alpha, const double *A, const int lda, + double *B, const int ldb); + +void cblas_cgemm(const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TransA, + const enum CBLAS_TRANSPOSE TransB, const int M, const int N, + const int K, const void *alpha, const void *A, + const int lda, const void *B, const int ldb, + const void *beta, void *C, const int ldc); +void cblas_csymm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, + const enum CBLAS_UPLO Uplo, const int M, const int N, + const void *alpha, const void *A, const int lda, + const void *B, const int ldb, const void *beta, + void *C, const int ldc); +void cblas_csyrk(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE Trans, const int N, const int K, + const void *alpha, const void *A, const int lda, + const void *beta, void *C, const int ldc); +void cblas_csyr2k(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE Trans, const int N, const int K, + const void *alpha, const void *A, const int lda, + const void *B, const int ldb, const void *beta, + void *C, const int ldc); +void cblas_ctrmm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, + const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, + const enum CBLAS_DIAG Diag, const int M, const int N, + const void *alpha, const void *A, const int lda, + void *B, const int ldb); +void cblas_ctrsm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, + const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, + const enum CBLAS_DIAG Diag, const int M, const int N, + const void *alpha, const void *A, const int lda, + void *B, const int ldb); + +void cblas_zgemm(const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TransA, + const enum CBLAS_TRANSPOSE TransB, const int M, const int N, + const int K, const void *alpha, const void *A, + const int lda, const void *B, const int ldb, + const void *beta, void *C, const int ldc); +void cblas_zsymm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, + const enum CBLAS_UPLO Uplo, const int M, const int N, + const void *alpha, const void *A, const int lda, + const void *B, const int ldb, const void *beta, + void *C, const int ldc); +void cblas_zsyrk(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE Trans, const int N, const int K, + const void *alpha, const void *A, const int lda, + const void *beta, void *C, const int ldc); +void cblas_zsyr2k(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE Trans, const int N, const int K, + const void *alpha, const void *A, const int lda, + const void *B, const int ldb, const void *beta, + void *C, const int ldc); +void cblas_ztrmm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, + const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, + const enum CBLAS_DIAG Diag, const int M, const int N, + const void *alpha, const void *A, const int lda, + void *B, const int ldb); +void cblas_ztrsm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, + const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, + const enum CBLAS_DIAG Diag, const int M, const int N, + const void *alpha, const void *A, const int lda, + void *B, const int ldb); + + +/* + * Routines with prefixes C and Z only + */ +void cblas_chemm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, + const enum CBLAS_UPLO Uplo, const int M, const int N, + const void *alpha, const void *A, const int lda, + const void *B, const int ldb, const void *beta, + void *C, const int ldc); +void cblas_cherk(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE Trans, const int N, const int K, + const float alpha, const void *A, const int lda, + const float beta, void *C, const int ldc); +void cblas_cher2k(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE Trans, const int N, const int K, + const void *alpha, const void *A, const int lda, + const void *B, const int ldb, const float beta, + void *C, const int ldc); + +void cblas_zhemm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, + const enum CBLAS_UPLO Uplo, const int M, const int N, + const void *alpha, const void *A, const int lda, + const void *B, const int ldb, const void *beta, + void *C, const int ldc); +void cblas_zherk(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE Trans, const int N, const int K, + const double alpha, const void *A, const int lda, + const double beta, void *C, const int ldc); +void cblas_zher2k(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE Trans, const int N, const int K, + const void *alpha, const void *A, const int lda, + const void *B, const int ldb, const double beta, + void *C, const int ldc); + +void cblas_xerbla(int p, const char *rout, const char *form, ...); + +__END_DECLS + +#endif /* __GSL_CBLAS_H__ */ diff --git a/gsl-2.5/cblas/hypot.c b/gsl-2.5/cblas/hypot.c new file mode 100644 index 00000000..8f6bb47d --- /dev/null +++ b/gsl-2.5/cblas/hypot.c @@ -0,0 +1,28 @@ +#include + +static double xhypot (const double x, const double y); + +static double xhypot (const double x, const double y) +{ + double xabs = fabs(x) ; + double yabs = fabs(y) ; + double min, max; + + if (xabs < yabs) { + min = xabs ; + max = yabs ; + } else { + min = yabs ; + max = xabs ; + } + + if (min == 0) + { + return max ; + } + + { + double u = min / max ; + return max * sqrt (1 + u * u) ; + } +} diff --git a/gsl-2.5/cblas/icamax.c b/gsl-2.5/cblas/icamax.c new file mode 100644 index 00000000..cf0f3440 --- /dev/null +++ b/gsl-2.5/cblas/icamax.c @@ -0,0 +1,11 @@ +#include +#include +#include "cblas.h" + +CBLAS_INDEX +cblas_icamax (const int N, const void *X, const int incX) +{ +#define BASE float +#include "source_iamax_c.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/icamax.lo b/gsl-2.5/cblas/icamax.lo new file mode 100644 index 00000000..2b6429fc --- /dev/null +++ b/gsl-2.5/cblas/icamax.lo @@ -0,0 +1,12 @@ +# icamax.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/icamax.o' + +# Name of the non-PIC object +non_pic_object='icamax.o' + diff --git a/gsl-2.5/cblas/idamax.c b/gsl-2.5/cblas/idamax.c new file mode 100644 index 00000000..b6372e78 --- /dev/null +++ b/gsl-2.5/cblas/idamax.c @@ -0,0 +1,11 @@ +#include +#include +#include "cblas.h" + +CBLAS_INDEX +cblas_idamax (const int N, const double *X, const int incX) +{ +#define BASE double +#include "source_iamax_r.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/idamax.lo b/gsl-2.5/cblas/idamax.lo new file mode 100644 index 00000000..8be3254b --- /dev/null +++ b/gsl-2.5/cblas/idamax.lo @@ -0,0 +1,12 @@ +# idamax.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/idamax.o' + +# Name of the non-PIC object +non_pic_object='idamax.o' + diff --git a/gsl-2.5/cblas/isamax.c b/gsl-2.5/cblas/isamax.c new file mode 100644 index 00000000..6e7279a3 --- /dev/null +++ b/gsl-2.5/cblas/isamax.c @@ -0,0 +1,11 @@ +#include +#include +#include "cblas.h" + +CBLAS_INDEX +cblas_isamax (const int N, const float *X, const int incX) +{ +#define BASE float +#include "source_iamax_r.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/isamax.lo b/gsl-2.5/cblas/isamax.lo new file mode 100644 index 00000000..f1ad9266 --- /dev/null +++ b/gsl-2.5/cblas/isamax.lo @@ -0,0 +1,12 @@ +# isamax.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/isamax.o' + +# Name of the non-PIC object +non_pic_object='isamax.o' + diff --git a/gsl-2.5/cblas/izamax.c b/gsl-2.5/cblas/izamax.c new file mode 100644 index 00000000..e3ae6752 --- /dev/null +++ b/gsl-2.5/cblas/izamax.c @@ -0,0 +1,11 @@ +#include +#include +#include "cblas.h" + +CBLAS_INDEX +cblas_izamax (const int N, const void *X, const int incX) +{ +#define BASE double +#include "source_iamax_c.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/izamax.lo b/gsl-2.5/cblas/izamax.lo new file mode 100644 index 00000000..ded07a8e --- /dev/null +++ b/gsl-2.5/cblas/izamax.lo @@ -0,0 +1,12 @@ +# izamax.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/izamax.o' + +# Name of the non-PIC object +non_pic_object='izamax.o' + diff --git a/gsl-2.5/cblas/libgslcblas.la b/gsl-2.5/cblas/libgslcblas.la new file mode 100644 index 00000000..ec4b7dea --- /dev/null +++ b/gsl-2.5/cblas/libgslcblas.la @@ -0,0 +1,41 @@ +# libgslcblas.la - a libtool library file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='libgslcblas.so.0' + +# Names of this library. +library_names='libgslcblas.so.0.0.0 libgslcblas.so.0 libgslcblas.so' + +# The name of the static archive. +old_library='libgslcblas.a' + +# Linker flags that can not go in dependency_libs. +inherited_linker_flags='' + +# Libraries that this one depends upon. +dependency_libs=' -lm' + +# Names of additional weak libraries provided by this library +weak_library_names='' + +# Version information for libgslcblas. +current=0 +age=0 +revision=0 + +# Is this an already installed library? +installed=no + +# Should we warn about portability when linking against -modules? +shouldnotlink=no + +# Files to dlopen/dlpreopen +dlopen='' +dlpreopen='' + +# Directory that this library needs to be installed in: +libdir='/usr/local/lib' diff --git a/gsl-2.5/cblas/sasum.c b/gsl-2.5/cblas/sasum.c new file mode 100644 index 00000000..019d925d --- /dev/null +++ b/gsl-2.5/cblas/sasum.c @@ -0,0 +1,11 @@ +#include +#include +#include "cblas.h" + +float +cblas_sasum (const int N, const float *X, const int incX) +{ +#define BASE float +#include "source_asum_r.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/sasum.lo b/gsl-2.5/cblas/sasum.lo new file mode 100644 index 00000000..cd533ba6 --- /dev/null +++ b/gsl-2.5/cblas/sasum.lo @@ -0,0 +1,12 @@ +# sasum.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/sasum.o' + +# Name of the non-PIC object +non_pic_object='sasum.o' + diff --git a/gsl-2.5/cblas/saxpy.c b/gsl-2.5/cblas/saxpy.c new file mode 100644 index 00000000..af08d4df --- /dev/null +++ b/gsl-2.5/cblas/saxpy.c @@ -0,0 +1,12 @@ +#include +#include +#include "cblas.h" + +void +cblas_saxpy (const int N, const float alpha, const float *X, const int incX, + float *Y, const int incY) +{ +#define BASE float +#include "source_axpy_r.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/saxpy.lo b/gsl-2.5/cblas/saxpy.lo new file mode 100644 index 00000000..6b75242d --- /dev/null +++ b/gsl-2.5/cblas/saxpy.lo @@ -0,0 +1,12 @@ +# saxpy.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/saxpy.o' + +# Name of the non-PIC object +non_pic_object='saxpy.o' + diff --git a/gsl-2.5/cblas/scasum.c b/gsl-2.5/cblas/scasum.c new file mode 100644 index 00000000..af874822 --- /dev/null +++ b/gsl-2.5/cblas/scasum.c @@ -0,0 +1,11 @@ +#include +#include +#include "cblas.h" + +float +cblas_scasum (const int N, const void *X, const int incX) +{ +#define BASE float +#include "source_asum_c.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/scasum.lo b/gsl-2.5/cblas/scasum.lo new file mode 100644 index 00000000..24e57c86 --- /dev/null +++ b/gsl-2.5/cblas/scasum.lo @@ -0,0 +1,12 @@ +# scasum.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/scasum.o' + +# Name of the non-PIC object +non_pic_object='scasum.o' + diff --git a/gsl-2.5/cblas/scnrm2.c b/gsl-2.5/cblas/scnrm2.c new file mode 100644 index 00000000..4653c13e --- /dev/null +++ b/gsl-2.5/cblas/scnrm2.c @@ -0,0 +1,11 @@ +#include +#include +#include "cblas.h" + +float +cblas_scnrm2 (const int N, const void *X, const int incX) +{ +#define BASE float +#include "source_nrm2_c.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/scnrm2.lo b/gsl-2.5/cblas/scnrm2.lo new file mode 100644 index 00000000..0896f4df --- /dev/null +++ b/gsl-2.5/cblas/scnrm2.lo @@ -0,0 +1,12 @@ +# scnrm2.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/scnrm2.o' + +# Name of the non-PIC object +non_pic_object='scnrm2.o' + diff --git a/gsl-2.5/cblas/scopy.c b/gsl-2.5/cblas/scopy.c new file mode 100644 index 00000000..423a386d --- /dev/null +++ b/gsl-2.5/cblas/scopy.c @@ -0,0 +1,12 @@ +#include +#include +#include "cblas.h" + +void +cblas_scopy (const int N, const float *X, const int incX, float *Y, + const int incY) +{ +#define BASE float +#include "source_copy_r.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/scopy.lo b/gsl-2.5/cblas/scopy.lo new file mode 100644 index 00000000..4b43499b --- /dev/null +++ b/gsl-2.5/cblas/scopy.lo @@ -0,0 +1,12 @@ +# scopy.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/scopy.o' + +# Name of the non-PIC object +non_pic_object='scopy.o' + diff --git a/gsl-2.5/cblas/sdot.c b/gsl-2.5/cblas/sdot.c new file mode 100644 index 00000000..c65904f8 --- /dev/null +++ b/gsl-2.5/cblas/sdot.c @@ -0,0 +1,16 @@ +#include +#include +#include "cblas.h" + +float +cblas_sdot (const int N, const float *X, const int incX, const float *Y, + const int incY) +{ +#define INIT_VAL 0.0 +#define ACC_TYPE float +#define BASE float +#include "source_dot_r.h" +#undef ACC_TYPE +#undef BASE +#undef INIT_VAL +} diff --git a/gsl-2.5/cblas/sdot.lo b/gsl-2.5/cblas/sdot.lo new file mode 100644 index 00000000..0af06afa --- /dev/null +++ b/gsl-2.5/cblas/sdot.lo @@ -0,0 +1,12 @@ +# sdot.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/sdot.o' + +# Name of the non-PIC object +non_pic_object='sdot.o' + diff --git a/gsl-2.5/cblas/sdsdot.c b/gsl-2.5/cblas/sdsdot.c new file mode 100644 index 00000000..5672ac43 --- /dev/null +++ b/gsl-2.5/cblas/sdsdot.c @@ -0,0 +1,16 @@ +#include +#include +#include "cblas.h" + +float +cblas_sdsdot (const int N, const float alpha, const float *X, const int incX, + const float *Y, const int incY) +{ +#define INIT_VAL alpha +#define ACC_TYPE double +#define BASE float +#include "source_dot_r.h" +#undef ACC_TYPE +#undef BASE +#undef INIT_VAL +} diff --git a/gsl-2.5/cblas/sdsdot.lo b/gsl-2.5/cblas/sdsdot.lo new file mode 100644 index 00000000..f6286deb --- /dev/null +++ b/gsl-2.5/cblas/sdsdot.lo @@ -0,0 +1,12 @@ +# sdsdot.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/sdsdot.o' + +# Name of the non-PIC object +non_pic_object='sdsdot.o' + diff --git a/gsl-2.5/cblas/sgbmv.c b/gsl-2.5/cblas/sgbmv.c new file mode 100644 index 00000000..281d5c75 --- /dev/null +++ b/gsl-2.5/cblas/sgbmv.c @@ -0,0 +1,15 @@ +#include +#include +#include "cblas.h" +#include "error_cblas_l2.h" + +void +cblas_sgbmv (const enum CBLAS_ORDER order, const enum CBLAS_TRANSPOSE TransA, + const int M, const int N, const int KL, const int KU, + const float alpha, const float *A, const int lda, const float *X, + const int incX, const float beta, float *Y, const int incY) +{ +#define BASE float +#include "source_gbmv_r.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/sgbmv.lo b/gsl-2.5/cblas/sgbmv.lo new file mode 100644 index 00000000..986f2da5 --- /dev/null +++ b/gsl-2.5/cblas/sgbmv.lo @@ -0,0 +1,12 @@ +# sgbmv.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/sgbmv.o' + +# Name of the non-PIC object +non_pic_object='sgbmv.o' + diff --git a/gsl-2.5/cblas/sgemm.c b/gsl-2.5/cblas/sgemm.c new file mode 100644 index 00000000..18832328 --- /dev/null +++ b/gsl-2.5/cblas/sgemm.c @@ -0,0 +1,16 @@ +#include +#include +#include "cblas.h" +#include "error_cblas_l3.h" + +void +cblas_sgemm (const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TransA, + const enum CBLAS_TRANSPOSE TransB, const int M, const int N, + const int K, const float alpha, const float *A, const int lda, + const float *B, const int ldb, const float beta, float *C, + const int ldc) +{ +#define BASE float +#include "source_gemm_r.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/sgemm.lo b/gsl-2.5/cblas/sgemm.lo new file mode 100644 index 00000000..2a2c5a81 --- /dev/null +++ b/gsl-2.5/cblas/sgemm.lo @@ -0,0 +1,12 @@ +# sgemm.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/sgemm.o' + +# Name of the non-PIC object +non_pic_object='sgemm.o' + diff --git a/gsl-2.5/cblas/sgemv.c b/gsl-2.5/cblas/sgemv.c new file mode 100644 index 00000000..bbdfeee4 --- /dev/null +++ b/gsl-2.5/cblas/sgemv.c @@ -0,0 +1,15 @@ +#include +#include +#include "cblas.h" +#include "error_cblas_l2.h" + +void +cblas_sgemv (const enum CBLAS_ORDER order, const enum CBLAS_TRANSPOSE TransA, + const int M, const int N, const float alpha, const float *A, + const int lda, const float *X, const int incX, const float beta, + float *Y, const int incY) +{ +#define BASE float +#include "source_gemv_r.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/sgemv.lo b/gsl-2.5/cblas/sgemv.lo new file mode 100644 index 00000000..643b05dd --- /dev/null +++ b/gsl-2.5/cblas/sgemv.lo @@ -0,0 +1,12 @@ +# sgemv.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/sgemv.o' + +# Name of the non-PIC object +non_pic_object='sgemv.o' + diff --git a/gsl-2.5/cblas/sger.c b/gsl-2.5/cblas/sger.c new file mode 100644 index 00000000..4f2da43e --- /dev/null +++ b/gsl-2.5/cblas/sger.c @@ -0,0 +1,14 @@ +#include +#include +#include "cblas.h" +#include "error_cblas_l2.h" + +void +cblas_sger (const enum CBLAS_ORDER order, const int M, const int N, + const float alpha, const float *X, const int incX, const float *Y, + const int incY, float *A, const int lda) +{ +#define BASE float +#include "source_ger.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/sger.lo b/gsl-2.5/cblas/sger.lo new file mode 100644 index 00000000..7807ba93 --- /dev/null +++ b/gsl-2.5/cblas/sger.lo @@ -0,0 +1,12 @@ +# sger.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/sger.o' + +# Name of the non-PIC object +non_pic_object='sger.o' + diff --git a/gsl-2.5/cblas/snrm2.c b/gsl-2.5/cblas/snrm2.c new file mode 100644 index 00000000..76b3d59c --- /dev/null +++ b/gsl-2.5/cblas/snrm2.c @@ -0,0 +1,11 @@ +#include +#include +#include "cblas.h" + +float +cblas_snrm2 (const int N, const float *X, const int incX) +{ +#define BASE float +#include "source_nrm2_r.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/snrm2.lo b/gsl-2.5/cblas/snrm2.lo new file mode 100644 index 00000000..26d440d1 --- /dev/null +++ b/gsl-2.5/cblas/snrm2.lo @@ -0,0 +1,12 @@ +# snrm2.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/snrm2.o' + +# Name of the non-PIC object +non_pic_object='snrm2.o' + diff --git a/gsl-2.5/cblas/source_asum_c.h b/gsl-2.5/cblas/source_asum_c.h new file mode 100644 index 00000000..5b4abb6e --- /dev/null +++ b/gsl-2.5/cblas/source_asum_c.h @@ -0,0 +1,34 @@ +/* blas/source_asum_c.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + BASE r = 0.0; + INDEX i; + INDEX ix = 0; + + if (incX <= 0) { + return 0; + } + + for (i = 0; i < N; i++) { + r += fabs(CONST_REAL(X, ix)) + fabs(CONST_IMAG(X, ix)); + ix += incX; + } + return r; +} diff --git a/gsl-2.5/cblas/source_asum_r.h b/gsl-2.5/cblas/source_asum_r.h new file mode 100644 index 00000000..863619ee --- /dev/null +++ b/gsl-2.5/cblas/source_asum_r.h @@ -0,0 +1,34 @@ +/* blas/source_asum_r.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + BASE r = 0.0; + INDEX i; + INDEX ix = 0; + + if (incX <= 0) { + return 0; + } + + for (i = 0; i < N; i++) { + r += fabs(X[ix]); + ix += incX; + } + return r; +} diff --git a/gsl-2.5/cblas/source_axpy_c.h b/gsl-2.5/cblas/source_axpy_c.h new file mode 100644 index 00000000..fbf543db --- /dev/null +++ b/gsl-2.5/cblas/source_axpy_c.h @@ -0,0 +1,40 @@ +/* blas/source_axpy_c.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + INDEX i; + INDEX ix = OFFSET(N, incX); + INDEX iy = OFFSET(N, incY); + + const BASE alpha_real = CONST_REAL0(alpha); + const BASE alpha_imag = CONST_IMAG0(alpha); + + if (fabs(alpha_real) == 0 && fabs(alpha_imag) == 0) { + return; + } + + for (i = 0; i < N; i++) { + const BASE x_real = CONST_REAL(X, ix); + const BASE x_imag = CONST_IMAG(X, ix); + REAL(Y, iy) += (alpha_real * x_real - alpha_imag * x_imag); + IMAG(Y, iy) += (alpha_real * x_imag + alpha_imag * x_real); + ix += incX; + iy += incY; + } +} diff --git a/gsl-2.5/cblas/source_axpy_r.h b/gsl-2.5/cblas/source_axpy_r.h new file mode 100644 index 00000000..1e8ad7ab --- /dev/null +++ b/gsl-2.5/cblas/source_axpy_r.h @@ -0,0 +1,50 @@ +/* blas/source_axpy_r.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + INDEX i; + + if (alpha == 0.0) { + return; + } + + if (incX == 1 && incY == 1) { + const INDEX m = N % 4; + + for (i = 0; i < m; i++) { + Y[i] += alpha * X[i]; + } + + for (i = m; i + 3 < N; i += 4) { + Y[i] += alpha * X[i]; + Y[i + 1] += alpha * X[i + 1]; + Y[i + 2] += alpha * X[i + 2]; + Y[i + 3] += alpha * X[i + 3]; + } + } else { + INDEX ix = OFFSET(N, incX); + INDEX iy = OFFSET(N, incY); + + for (i = 0; i < N; i++) { + Y[iy] += alpha * X[ix]; + ix += incX; + iy += incY; + } + } +} diff --git a/gsl-2.5/cblas/source_copy_c.h b/gsl-2.5/cblas/source_copy_c.h new file mode 100644 index 00000000..d3248cd1 --- /dev/null +++ b/gsl-2.5/cblas/source_copy_c.h @@ -0,0 +1,31 @@ +/* blas/source_copy_c.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + INDEX i; + INDEX ix = OFFSET(N, incX); + INDEX iy = OFFSET(N, incY); + + for (i = 0; i < N; i++) { + REAL(Y, iy) = CONST_REAL(X, ix); + IMAG(Y, iy) = CONST_IMAG(X, ix); + ix += incX; + iy += incY; + } +} diff --git a/gsl-2.5/cblas/source_copy_r.h b/gsl-2.5/cblas/source_copy_r.h new file mode 100644 index 00000000..ba0abef9 --- /dev/null +++ b/gsl-2.5/cblas/source_copy_r.h @@ -0,0 +1,30 @@ +/* blas/source_copy_r.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + INDEX i; + INDEX ix = OFFSET(N, incX); + INDEX iy = OFFSET(N, incY); + + for (i = 0; i < N; i++) { + Y[iy] = X[ix]; + ix += incX; + iy += incY; + } +} diff --git a/gsl-2.5/cblas/source_dot_c.h b/gsl-2.5/cblas/source_dot_c.h new file mode 100644 index 00000000..fa1aca5c --- /dev/null +++ b/gsl-2.5/cblas/source_dot_c.h @@ -0,0 +1,38 @@ +/* blas/source_dot_c.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + BASE r_real = 0.0; + BASE r_imag = 0.0; + INDEX i; + INDEX ix = OFFSET(N, incX); + INDEX iy = OFFSET(N, incY); + for (i = 0; i < N; i++) { + const BASE x_real = CONST_REAL(X, ix); + const BASE x_imag = CONST_IMAG(X, ix); + const BASE y_real = CONST_REAL(Y, iy); + const BASE y_imag = CONST_IMAG(Y, iy); + r_real += x_real * y_real - CONJ_SIGN * x_imag * y_imag; + r_imag += x_real * y_imag + CONJ_SIGN * x_imag * y_real; + ix += incX; + iy += incY; + } + REAL0(result) = r_real; + IMAG0(result) = r_imag; +} diff --git a/gsl-2.5/cblas/source_dot_r.h b/gsl-2.5/cblas/source_dot_r.h new file mode 100644 index 00000000..b83f85e7 --- /dev/null +++ b/gsl-2.5/cblas/source_dot_r.h @@ -0,0 +1,33 @@ +/* blas/source_dot_r.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + ACC_TYPE r = INIT_VAL; + INDEX i; + INDEX ix = OFFSET(N, incX); + INDEX iy = OFFSET(N, incY); + + for (i = 0; i < N; i++) { + r += X[ix] * Y[iy]; + ix += incX; + iy += incY; + } + + return r; +} diff --git a/gsl-2.5/cblas/source_gbmv_c.h b/gsl-2.5/cblas/source_gbmv_c.h new file mode 100644 index 00000000..3c4d5e49 --- /dev/null +++ b/gsl-2.5/cblas/source_gbmv_c.h @@ -0,0 +1,172 @@ +/* blas/source_gbmv_c.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + INDEX i, j; + INDEX lenX, lenY, L, U; + + const BASE alpha_real = CONST_REAL0(alpha); + const BASE alpha_imag = CONST_IMAG0(alpha); + + const BASE beta_real = CONST_REAL0(beta); + const BASE beta_imag = CONST_IMAG0(beta); + + CHECK_ARGS14(GBMV,order,TransA,M,N,KL,KU,alpha,A,lda,X,incX,beta,Y,incY); + + if (M == 0 || N == 0) + return; + + if ((alpha_real == 0.0 && alpha_imag == 0.0) + && (beta_real == 1.0 && beta_imag == 0.0)) + return; + + if (TransA == CblasNoTrans) { + lenX = N; + lenY = M; + L = KL; + U = KU; + } else { + lenX = M; + lenY = N; + L = KU; + U = KL; + } + + /* form y := beta*y */ + if (beta_real == 0.0 && beta_imag == 0.0) { + INDEX iy = OFFSET(lenY, incY); + for (i = 0; i < lenY; i++) { + REAL(Y, iy) = 0.0; + IMAG(Y, iy) = 0.0; + iy += incY; + } + } else if (!(beta_real == 1.0 && beta_imag == 0.0)) { + INDEX iy = OFFSET(lenY, incY); + for (i = 0; i < lenY; i++) { + const BASE y_real = REAL(Y, iy); + const BASE y_imag = IMAG(Y, iy); + const BASE tmpR = y_real * beta_real - y_imag * beta_imag; + const BASE tmpI = y_real * beta_imag + y_imag * beta_real; + REAL(Y, iy) = tmpR; + IMAG(Y, iy) = tmpI; + iy += incY; + } + } + + if (alpha_real == 0.0 && alpha_imag == 0.0) + return; + + if ((order == CblasRowMajor && TransA == CblasNoTrans) + || (order == CblasColMajor && TransA == CblasTrans)) { + /* form y := alpha*A*x + y */ + INDEX iy = OFFSET(lenY, incY); + for (i = 0; i < lenY; i++) { + BASE dotR = 0.0; + BASE dotI = 0.0; + const INDEX j_min = (i > L ? i - L : 0); + const INDEX j_max = GSL_MIN(lenX, i + U + 1); + INDEX ix = OFFSET(lenX, incX) + j_min * incX; + for (j = j_min; j < j_max; j++) { + const BASE x_real = CONST_REAL(X, ix); + const BASE x_imag = CONST_IMAG(X, ix); + const BASE A_real = CONST_REAL(A, lda * i + (L + j - i)); + const BASE A_imag = CONST_IMAG(A, lda * i + (L + j - i)); + + dotR += A_real * x_real - A_imag * x_imag; + dotI += A_real * x_imag + A_imag * x_real; + ix += incX; + } + + REAL(Y, iy) += alpha_real * dotR - alpha_imag * dotI; + IMAG(Y, iy) += alpha_real * dotI + alpha_imag * dotR; + iy += incY; + } + } else if ((order == CblasRowMajor && TransA == CblasTrans) + || (order == CblasColMajor && TransA == CblasNoTrans)) { + /* form y := alpha*A'*x + y */ + INDEX ix = OFFSET(lenX, incX); + for (j = 0; j < lenX; j++) { + const BASE x_real = CONST_REAL(X, ix); + const BASE x_imag = CONST_IMAG(X, ix); + BASE tmpR = alpha_real * x_real - alpha_imag * x_imag; + BASE tmpI = alpha_real * x_imag + alpha_imag * x_real; + if (!(tmpR == 0.0 && tmpI == 0.0)) { + const INDEX i_min = (j > U ? j - U : 0); + const INDEX i_max = GSL_MIN(lenY, j + L + 1); + INDEX iy = OFFSET(lenY, incY) + i_min * incY; + for (i = i_min; i < i_max; i++) { + const BASE A_real = CONST_REAL(A, lda * j + (U + i - j)); + const BASE A_imag = CONST_IMAG(A, lda * j + (U + i - j)); + REAL(Y, iy) += A_real * tmpR - A_imag * tmpI; + IMAG(Y, iy) += A_real * tmpI + A_imag * tmpR; + iy += incY; + } + } + ix += incX; + } + } else if (order == CblasRowMajor && TransA == CblasConjTrans) { + /* form y := alpha*A^H*x + y */ + INDEX ix = OFFSET(lenX, incX); + for (j = 0; j < lenX; j++) { + const BASE x_real = CONST_REAL(X, ix); + const BASE x_imag = CONST_IMAG(X, ix); + BASE tmpR = alpha_real * x_real - alpha_imag * x_imag; + BASE tmpI = alpha_real * x_imag + alpha_imag * x_real; + if (!(tmpR == 0.0 && tmpI == 0.0)) { + const INDEX i_min = (j > U ? j - U : 0); + const INDEX i_max = GSL_MIN(lenY, j + L + 1); + INDEX iy = OFFSET(lenY, incY) + i_min * incY; + for (i = i_min; i < i_max; i++) { + const BASE A_real = CONST_REAL(A, lda * j + (U + i - j)); + const BASE A_imag = CONST_IMAG(A, lda * j + (U + i - j)); + REAL(Y, iy) += A_real * tmpR - (-A_imag) * tmpI; + IMAG(Y, iy) += A_real * tmpI + (-A_imag) * tmpR; + iy += incY; + } + } + ix += incX; + } + } else if (order == CblasColMajor && TransA == CblasConjTrans) { + /* form y := alpha*A^H*x + y */ + INDEX iy = OFFSET(lenY, incY); + for (i = 0; i < lenY; i++) { + BASE dotR = 0.0; + BASE dotI = 0.0; + const INDEX j_min = (i > L ? i - L : 0); + const INDEX j_max = GSL_MIN(lenX, i + U + 1); + INDEX ix = OFFSET(lenX, incX) + j_min * incX; + for (j = j_min; j < j_max; j++) { + const BASE x_real = CONST_REAL(X, ix); + const BASE x_imag = CONST_IMAG(X, ix); + const BASE A_real = CONST_REAL(A, lda * i + (L + j - i)); + const BASE A_imag = CONST_IMAG(A, lda * i + (L + j - i)); + + dotR += A_real * x_real - (-A_imag) * x_imag; + dotI += A_real * x_imag + (-A_imag) * x_real; + ix += incX; + } + + REAL(Y, iy) += alpha_real * dotR - alpha_imag * dotI; + IMAG(Y, iy) += alpha_real * dotI + alpha_imag * dotR; + iy += incY; + } + } else { + BLAS_ERROR("unrecognized operation"); + } +} diff --git a/gsl-2.5/cblas/source_gbmv_r.h b/gsl-2.5/cblas/source_gbmv_r.h new file mode 100644 index 00000000..3905508c --- /dev/null +++ b/gsl-2.5/cblas/source_gbmv_r.h @@ -0,0 +1,100 @@ +/* blas/source_gbmv_r.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + INDEX i, j; + INDEX lenX, lenY, L, U; + + const int Trans = (TransA != CblasConjTrans) ? TransA : CblasTrans; + + CHECK_ARGS14(GBMV,order,TransA,M,N,KL,KU,alpha,A,lda,X,incX,beta,Y,incY); + + if (M == 0 || N == 0) + return; + + if (alpha == 0.0 && beta == 1.0) + return; + + if (Trans == CblasNoTrans) { + lenX = N; + lenY = M; + L = KL; + U = KU; + } else { + lenX = M; + lenY = N; + L = KU; + U = KL; + } + + /* form y := beta*y */ + if (beta == 0.0) { + INDEX iy = OFFSET(lenY, incY); + for (i = 0; i < lenY; i++) { + Y[iy] = 0; + iy += incY; + } + } else if (beta != 1.0) { + INDEX iy = OFFSET(lenY, incY); + for (i = 0; i < lenY; i++) { + Y[iy] *= beta; + iy += incY; + } + } + + if (alpha == 0.0) + return; + + if ((order == CblasRowMajor && Trans == CblasNoTrans) + || (order == CblasColMajor && Trans == CblasTrans)) { + /* form y := alpha*A*x + y */ + INDEX iy = OFFSET(lenY, incY); + for (i = 0; i < lenY; i++) { + BASE temp = 0.0; + const INDEX j_min = (i > L ? i - L : 0); + const INDEX j_max = GSL_MIN(lenX, i + U + 1); + INDEX jx = OFFSET(lenX, incX) + j_min * incX; + for (j = j_min; j < j_max; j++) { + temp += X[jx] * A[(L - i + j) + i * lda]; + jx += incX; + } + Y[iy] += alpha * temp; + iy += incY; + } + } else if ((order == CblasRowMajor && Trans == CblasTrans) + || (order == CblasColMajor && Trans == CblasNoTrans)) { + /* form y := alpha*A'*x + y */ + INDEX jx = OFFSET(lenX, incX); + for (j = 0; j < lenX; j++) { + const BASE temp = alpha * X[jx]; + if (temp != 0.0) { + const INDEX i_min = (j > U ? j - U : 0); + const INDEX i_max = GSL_MIN(lenY, j + L + 1); + INDEX iy = OFFSET(lenY, incY) + i_min * incY; + for (i = i_min; i < i_max; i++) { + Y[iy] += temp * A[lda * j + (U + i - j)]; + iy += incY; + } + } + jx += incX; + } + } else { + BLAS_ERROR("unrecognized operation"); + } +} diff --git a/gsl-2.5/cblas/source_gemm_c.h b/gsl-2.5/cblas/source_gemm_c.h new file mode 100644 index 00000000..af9bfdb0 --- /dev/null +++ b/gsl-2.5/cblas/source_gemm_c.h @@ -0,0 +1,171 @@ +/* blas/source_gemm_c.h + * + * Copyright (C) 2001, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + INDEX i, j, k; + INDEX n1, n2; + INDEX ldf, ldg; + int conjF, conjG, TransF, TransG; + const BASE *F, *G; + + CHECK_ARGS14(GEMM,Order,TransA,TransB,M,N,K,alpha,A,lda,B,ldb,beta,C,ldc); + + { + const BASE alpha_real = CONST_REAL0(alpha); + const BASE alpha_imag = CONST_IMAG0(alpha); + + const BASE beta_real = CONST_REAL0(beta); + const BASE beta_imag = CONST_IMAG0(beta); + + if ((alpha_real == 0.0 && alpha_imag == 0.0) + && (beta_real == 1.0 && beta_imag == 0.0)) + return; + + if (Order == CblasRowMajor) { + n1 = M; + n2 = N; + F = (const BASE *)A; + ldf = lda; + conjF = (TransA == CblasConjTrans) ? -1 : 1; + TransF = (TransA == CblasNoTrans) ? CblasNoTrans : CblasTrans; + G = (const BASE *)B; + ldg = ldb; + conjG = (TransB == CblasConjTrans) ? -1 : 1; + TransG = (TransB == CblasNoTrans) ? CblasNoTrans : CblasTrans; + } else { + n1 = N; + n2 = M; + F = (const BASE *)B; + ldf = ldb; + conjF = (TransB == CblasConjTrans) ? -1 : 1; + TransF = (TransB == CblasNoTrans) ? CblasNoTrans : CblasTrans; + G = (const BASE *)A; + ldg = lda; + conjG = (TransA == CblasConjTrans) ? -1 : 1; + TransG = (TransA == CblasNoTrans) ? CblasNoTrans : CblasTrans; + } + + /* form y := beta*y */ + if (beta_real == 0.0 && beta_imag == 0.0) { + for (i = 0; i < n1; i++) { + for (j = 0; j < n2; j++) { + REAL(C, ldc * i + j) = 0.0; + IMAG(C, ldc * i + j) = 0.0; + } + } + } else if (!(beta_real == 1.0 && beta_imag == 0.0)) { + for (i = 0; i < n1; i++) { + for (j = 0; j < n2; j++) { + const BASE Cij_real = REAL(C, ldc * i + j); + const BASE Cij_imag = IMAG(C, ldc * i + j); + REAL(C, ldc * i + j) = beta_real * Cij_real - beta_imag * Cij_imag; + IMAG(C, ldc * i + j) = beta_real * Cij_imag + beta_imag * Cij_real; + } + } + } + + if (alpha_real == 0.0 && alpha_imag == 0.0) + return; + + if (TransF == CblasNoTrans && TransG == CblasNoTrans) { + + /* form C := alpha*A*B + C */ + + for (k = 0; k < K; k++) { + for (i = 0; i < n1; i++) { + const BASE Fik_real = CONST_REAL(F, ldf * i + k); + const BASE Fik_imag = conjF * CONST_IMAG(F, ldf * i + k); + const BASE temp_real = alpha_real * Fik_real - alpha_imag * Fik_imag; + const BASE temp_imag = alpha_real * Fik_imag + alpha_imag * Fik_real; + if (!(temp_real == 0.0 && temp_imag == 0.0)) { + for (j = 0; j < n2; j++) { + const BASE Gkj_real = CONST_REAL(G, ldg * k + j); + const BASE Gkj_imag = conjG * CONST_IMAG(G, ldg * k + j); + REAL(C, ldc * i + j) += temp_real * Gkj_real - temp_imag * Gkj_imag; + IMAG(C, ldc * i + j) += temp_real * Gkj_imag + temp_imag * Gkj_real; + } + } + } + } + + } else if (TransF == CblasNoTrans && TransG == CblasTrans) { + + /* form C := alpha*A*B' + C */ + + for (i = 0; i < n1; i++) { + for (j = 0; j < n2; j++) { + BASE temp_real = 0.0; + BASE temp_imag = 0.0; + for (k = 0; k < K; k++) { + const BASE Fik_real = CONST_REAL(F, ldf * i + k); + const BASE Fik_imag = conjF * CONST_IMAG(F, ldf * i + k); + const BASE Gjk_real = CONST_REAL(G, ldg * j + k); + const BASE Gjk_imag = conjG * CONST_IMAG(G, ldg * j + k); + temp_real += Fik_real * Gjk_real - Fik_imag * Gjk_imag; + temp_imag += Fik_real * Gjk_imag + Fik_imag * Gjk_real; + } + REAL(C, ldc * i + j) += alpha_real * temp_real - alpha_imag * temp_imag; + IMAG(C, ldc * i + j) += alpha_real * temp_imag + alpha_imag * temp_real; + } + } + + } else if (TransF == CblasTrans && TransG == CblasNoTrans) { + + for (k = 0; k < K; k++) { + for (i = 0; i < n1; i++) { + const BASE Fki_real = CONST_REAL(F, ldf * k + i); + const BASE Fki_imag = conjF * CONST_IMAG(F, ldf * k + i); + const BASE temp_real = alpha_real * Fki_real - alpha_imag * Fki_imag; + const BASE temp_imag = alpha_real * Fki_imag + alpha_imag * Fki_real; + if (!(temp_real == 0.0 && temp_imag == 0.0)) { + for (j = 0; j < n2; j++) { + const BASE Gkj_real = CONST_REAL(G, ldg * k + j); + const BASE Gkj_imag = conjG * CONST_IMAG(G, ldg * k + j); + REAL(C, ldc * i + j) += temp_real * Gkj_real - temp_imag * Gkj_imag; + IMAG(C, ldc * i + j) += temp_real * Gkj_imag + temp_imag * Gkj_real; + } + } + } + } + + } else if (TransF == CblasTrans && TransG == CblasTrans) { + + for (i = 0; i < n1; i++) { + for (j = 0; j < n2; j++) { + BASE temp_real = 0.0; + BASE temp_imag = 0.0; + for (k = 0; k < K; k++) { + const BASE Fki_real = CONST_REAL(F, ldf * k + i); + const BASE Fki_imag = conjF * CONST_IMAG(F, ldf * k + i); + const BASE Gjk_real = CONST_REAL(G, ldg * j + k); + const BASE Gjk_imag = conjG * CONST_IMAG(G, ldg * j + k); + + temp_real += Fki_real * Gjk_real - Fki_imag * Gjk_imag; + temp_imag += Fki_real * Gjk_imag + Fki_imag * Gjk_real; + } + REAL(C, ldc * i + j) += alpha_real * temp_real - alpha_imag * temp_imag; + IMAG(C, ldc * i + j) += alpha_real * temp_imag + alpha_imag * temp_real; + } + } + + } else { + BLAS_ERROR("unrecognized operation"); + } + } +} diff --git a/gsl-2.5/cblas/source_gemm_r.h b/gsl-2.5/cblas/source_gemm_r.h new file mode 100644 index 00000000..a008d22f --- /dev/null +++ b/gsl-2.5/cblas/source_gemm_r.h @@ -0,0 +1,127 @@ +/* blas/source_gemm_r.h + * + * Copyright (C) 2001, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + INDEX i, j, k; + INDEX n1, n2; + INDEX ldf, ldg; + int TransF, TransG; + const BASE *F, *G; + + CHECK_ARGS14(GEMM,Order,TransA,TransB,M,N,K,alpha,A,lda,B,ldb,beta,C,ldc); + + if (alpha == 0.0 && beta == 1.0) + return; + + if (Order == CblasRowMajor) { + n1 = M; + n2 = N; + F = A; + ldf = lda; + TransF = (TransA == CblasConjTrans) ? CblasTrans : TransA; + G = B; + ldg = ldb; + TransG = (TransB == CblasConjTrans) ? CblasTrans : TransB; + } else { + n1 = N; + n2 = M; + F = B; + ldf = ldb; + TransF = (TransB == CblasConjTrans) ? CblasTrans : TransB; + G = A; + ldg = lda; + TransG = (TransA == CblasConjTrans) ? CblasTrans : TransA; + } + + /* form y := beta*y */ + if (beta == 0.0) { + for (i = 0; i < n1; i++) { + for (j = 0; j < n2; j++) { + C[ldc * i + j] = 0.0; + } + } + } else if (beta != 1.0) { + for (i = 0; i < n1; i++) { + for (j = 0; j < n2; j++) { + C[ldc * i + j] *= beta; + } + } + } + + if (alpha == 0.0) + return; + + if (TransF == CblasNoTrans && TransG == CblasNoTrans) { + + /* form C := alpha*A*B + C */ + + for (k = 0; k < K; k++) { + for (i = 0; i < n1; i++) { + const BASE temp = alpha * F[ldf * i + k]; + if (temp != 0.0) { + for (j = 0; j < n2; j++) { + C[ldc * i + j] += temp * G[ldg * k + j]; + } + } + } + } + + } else if (TransF == CblasNoTrans && TransG == CblasTrans) { + + /* form C := alpha*A*B' + C */ + + for (i = 0; i < n1; i++) { + for (j = 0; j < n2; j++) { + BASE temp = 0.0; + for (k = 0; k < K; k++) { + temp += F[ldf * i + k] * G[ldg * j + k]; + } + C[ldc * i + j] += alpha * temp; + } + } + + } else if (TransF == CblasTrans && TransG == CblasNoTrans) { + + for (k = 0; k < K; k++) { + for (i = 0; i < n1; i++) { + const BASE temp = alpha * F[ldf * k + i]; + if (temp != 0.0) { + for (j = 0; j < n2; j++) { + C[ldc * i + j] += temp * G[ldg * k + j]; + } + } + } + } + + } else if (TransF == CblasTrans && TransG == CblasTrans) { + + for (i = 0; i < n1; i++) { + for (j = 0; j < n2; j++) { + BASE temp = 0.0; + for (k = 0; k < K; k++) { + temp += F[ldf * k + i] * G[ldg * j + k]; + } + C[ldc * i + j] += alpha * temp; + } + } + + } else { + BLAS_ERROR("unrecognized operation"); + } +} diff --git a/gsl-2.5/cblas/source_gemv_c.h b/gsl-2.5/cblas/source_gemv_c.h new file mode 100644 index 00000000..17dd1075 --- /dev/null +++ b/gsl-2.5/cblas/source_gemv_c.h @@ -0,0 +1,160 @@ +/* blas/source_gemv_c.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + INDEX i, j; + INDEX lenX, lenY; + + const BASE alpha_real = CONST_REAL0(alpha); + const BASE alpha_imag = CONST_IMAG0(alpha); + + const BASE beta_real = CONST_REAL0(beta); + const BASE beta_imag = CONST_IMAG0(beta); + + CHECK_ARGS12(GEMV,order,TransA,M,N,alpha,A,lda,X,incX,beta,Y,incY); + + if (M == 0 || N == 0) + return; + + if ((alpha_real == 0.0 && alpha_imag == 0.0) + && (beta_real == 1.0 && beta_imag == 0.0)) + return; + + if (TransA == CblasNoTrans) { + lenX = N; + lenY = M; + } else { + lenX = M; + lenY = N; + } + + /* form y := beta*y */ + + if (beta_real == 0.0 && beta_imag == 0.0) { + INDEX iy = OFFSET(lenY, incY); + for (i = 0; i < lenY; i++) { + REAL(Y, iy) = 0.0; + IMAG(Y, iy) = 0.0; + iy += incY; + } + } else if (!(beta_real == 1.0 && beta_imag == 0.0)) { + INDEX iy = OFFSET(lenY, incY); + for (i = 0; i < lenY; i++) { + const BASE y_real = REAL(Y, iy); + const BASE y_imag = IMAG(Y, iy); + const BASE tmpR = y_real * beta_real - y_imag * beta_imag; + const BASE tmpI = y_real * beta_imag + y_imag * beta_real; + REAL(Y, iy) = tmpR; + IMAG(Y, iy) = tmpI; + iy += incY; + } + } + + if (alpha_real == 0.0 && alpha_imag == 0.0) + return; + + if ((order == CblasRowMajor && TransA == CblasNoTrans) + || (order == CblasColMajor && TransA == CblasTrans)) { + /* form y := alpha*A*x + y */ + INDEX iy = OFFSET(lenY, incY); + for (i = 0; i < lenY; i++) { + BASE dotR = 0.0; + BASE dotI = 0.0; + INDEX ix = OFFSET(lenX, incX); + for (j = 0; j < lenX; j++) { + const BASE x_real = CONST_REAL(X, ix); + const BASE x_imag = CONST_IMAG(X, ix); + const BASE A_real = CONST_REAL(A, lda * i + j); + const BASE A_imag = CONST_IMAG(A, lda * i + j); + + dotR += A_real * x_real - A_imag * x_imag; + dotI += A_real * x_imag + A_imag * x_real; + ix += incX; + } + + REAL(Y, iy) += alpha_real * dotR - alpha_imag * dotI; + IMAG(Y, iy) += alpha_real * dotI + alpha_imag * dotR; + iy += incY; + } + } else if ((order == CblasRowMajor && TransA == CblasTrans) + || (order == CblasColMajor && TransA == CblasNoTrans)) { + /* form y := alpha*A'*x + y */ + INDEX ix = OFFSET(lenX, incX); + for (j = 0; j < lenX; j++) { + BASE x_real = CONST_REAL(X, ix); + BASE x_imag = CONST_IMAG(X, ix); + BASE tmpR = alpha_real * x_real - alpha_imag * x_imag; + BASE tmpI = alpha_real * x_imag + alpha_imag * x_real; + + INDEX iy = OFFSET(lenY, incY); + for (i = 0; i < lenY; i++) { + const BASE A_real = CONST_REAL(A, lda * j + i); + const BASE A_imag = CONST_IMAG(A, lda * j + i); + REAL(Y, iy) += A_real * tmpR - A_imag * tmpI; + IMAG(Y, iy) += A_real * tmpI + A_imag * tmpR; + iy += incY; + } + ix += incX; + } + } else if (order == CblasRowMajor && TransA == CblasConjTrans) { + /* form y := alpha*A^H*x + y */ + INDEX ix = OFFSET(lenX, incX); + for (j = 0; j < lenX; j++) { + BASE x_real = CONST_REAL(X, ix); + BASE x_imag = CONST_IMAG(X, ix); + BASE tmpR = alpha_real * x_real - alpha_imag * x_imag; + BASE tmpI = alpha_real * x_imag + alpha_imag * x_real; + + INDEX iy = OFFSET(lenY, incY); + for (i = 0; i < lenY; i++) { + const BASE A_real = CONST_REAL(A, lda * j + i); + const BASE A_imag = CONST_IMAG(A, lda * j + i); + REAL(Y, iy) += A_real * tmpR - (-A_imag) * tmpI; + IMAG(Y, iy) += A_real * tmpI + (-A_imag) * tmpR; + iy += incY; + } + ix += incX; + } + } else if (order == CblasColMajor && TransA == CblasConjTrans) { + /* form y := alpha*A^H*x + y */ + INDEX iy = OFFSET(lenY, incY); + for (i = 0; i < lenY; i++) { + BASE dotR = 0.0; + BASE dotI = 0.0; + INDEX ix = OFFSET(lenX, incX); + for (j = 0; j < lenX; j++) { + const BASE x_real = CONST_REAL(X, ix); + const BASE x_imag = CONST_IMAG(X, ix); + const BASE A_real = CONST_REAL(A, lda * i + j); + const BASE A_imag = CONST_IMAG(A, lda * i + j); + + dotR += A_real * x_real - (-A_imag) * x_imag; + dotI += A_real * x_imag + (-A_imag) * x_real; + ix += incX; + } + + REAL(Y, iy) += alpha_real * dotR - alpha_imag * dotI; + IMAG(Y, iy) += alpha_real * dotI + alpha_imag * dotR; + iy += incY; + } + } else { + BLAS_ERROR("unrecognized operation"); + } + +} diff --git a/gsl-2.5/cblas/source_gemv_r.h b/gsl-2.5/cblas/source_gemv_r.h new file mode 100644 index 00000000..a2959c5c --- /dev/null +++ b/gsl-2.5/cblas/source_gemv_r.h @@ -0,0 +1,92 @@ +/* blas/source_gemv_r.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + INDEX i, j; + INDEX lenX, lenY; + + const int Trans = (TransA != CblasConjTrans) ? TransA : CblasTrans; + + CHECK_ARGS12(GEMV,order,TransA,M,N,alpha,A,lda,X,incX,beta,Y,incY); + + if (M == 0 || N == 0) + return; + + if (alpha == 0.0 && beta == 1.0) + return; + + if (Trans == CblasNoTrans) { + lenX = N; + lenY = M; + } else { + lenX = M; + lenY = N; + } + + /* form y := beta*y */ + if (beta == 0.0) { + INDEX iy = OFFSET(lenY, incY); + for (i = 0; i < lenY; i++) { + Y[iy] = 0.0; + iy += incY; + } + } else if (beta != 1.0) { + INDEX iy = OFFSET(lenY, incY); + for (i = 0; i < lenY; i++) { + Y[iy] *= beta; + iy += incY; + } + } + + if (alpha == 0.0) + return; + + if ((order == CblasRowMajor && Trans == CblasNoTrans) + || (order == CblasColMajor && Trans == CblasTrans)) { + /* form y := alpha*A*x + y */ + INDEX iy = OFFSET(lenY, incY); + for (i = 0; i < lenY; i++) { + BASE temp = 0.0; + INDEX ix = OFFSET(lenX, incX); + for (j = 0; j < lenX; j++) { + temp += X[ix] * A[lda * i + j]; + ix += incX; + } + Y[iy] += alpha * temp; + iy += incY; + } + } else if ((order == CblasRowMajor && Trans == CblasTrans) + || (order == CblasColMajor && Trans == CblasNoTrans)) { + /* form y := alpha*A'*x + y */ + INDEX ix = OFFSET(lenX, incX); + for (j = 0; j < lenX; j++) { + const BASE temp = alpha * X[ix]; + if (temp != 0.0) { + INDEX iy = OFFSET(lenY, incY); + for (i = 0; i < lenY; i++) { + Y[iy] += temp * A[lda * j + i]; + iy += incY; + } + } + ix += incX; + } + } else { + BLAS_ERROR("unrecognized operation"); + } +} diff --git a/gsl-2.5/cblas/source_ger.h b/gsl-2.5/cblas/source_ger.h new file mode 100644 index 00000000..882c1846 --- /dev/null +++ b/gsl-2.5/cblas/source_ger.h @@ -0,0 +1,50 @@ +/* blas/source_ger.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + INDEX i, j; + + CHECK_ARGS10(SD_GER,order,M,N,alpha,X,incX,Y,incY,A,lda); + + if (order == CblasRowMajor) { + INDEX ix = OFFSET(M, incX); + for (i = 0; i < M; i++) { + const BASE tmp = alpha * X[ix]; + INDEX jy = OFFSET(N, incY); + for (j = 0; j < N; j++) { + A[lda * i + j] += Y[jy] * tmp; + jy += incY; + } + ix += incX; + } + } else if (order == CblasColMajor) { + INDEX jy = OFFSET(N, incY); + for (j = 0; j < N; j++) { + const BASE tmp = alpha * Y[jy]; + INDEX ix = OFFSET(M, incX); + for (i = 0; i < M; i++) { + A[i + lda * j] += X[ix] * tmp; + ix += incX; + } + jy += incY; + } + } else { + BLAS_ERROR("unrecognized operation"); + } +} diff --git a/gsl-2.5/cblas/source_gerc.h b/gsl-2.5/cblas/source_gerc.h new file mode 100644 index 00000000..36ac6793 --- /dev/null +++ b/gsl-2.5/cblas/source_gerc.h @@ -0,0 +1,67 @@ +/* blas/source_gerc.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + INDEX i, j; + + CHECK_ARGS10(CZ_GERC,order,M,N,alpha,X,incX,Y,incY,A,lda); + + { + const BASE alpha_real = CONST_REAL0(alpha); + const BASE alpha_imag = CONST_IMAG0(alpha); + + if (order == CblasRowMajor) { + INDEX ix = OFFSET(M, incX); + for (i = 0; i < M; i++) { + const BASE X_real = CONST_REAL(X, ix); + const BASE X_imag = CONST_IMAG(X, ix); + const BASE tmp_real = alpha_real * X_real - alpha_imag * X_imag; + const BASE tmp_imag = alpha_imag * X_real + alpha_real * X_imag; + INDEX jy = OFFSET(N, incY); + for (j = 0; j < N; j++) { + const BASE Y_real = CONST_REAL(Y, jy); + const BASE Y_imag = -CONST_IMAG(Y, jy); + REAL(A, lda * i + j) += Y_real * tmp_real - Y_imag * tmp_imag; + IMAG(A, lda * i + j) += Y_imag * tmp_real + Y_real * tmp_imag; + jy += incY; + } + ix += incX; + } + } else if (order == CblasColMajor) { + INDEX jy = OFFSET(N, incY); + for (j = 0; j < N; j++) { + const BASE Y_real = CONST_REAL(Y, jy); + const BASE Y_imag = -CONST_IMAG(Y, jy); + const BASE tmp_real = alpha_real * Y_real - alpha_imag * Y_imag; + const BASE tmp_imag = alpha_imag * Y_real + alpha_real * Y_imag; + INDEX ix = OFFSET(M, incX); + for (i = 0; i < M; i++) { + const BASE X_real = CONST_REAL(X, ix); + const BASE X_imag = CONST_IMAG(X, ix); + REAL(A, i + lda * j) += X_real * tmp_real - X_imag * tmp_imag; + IMAG(A, i + lda * j) += X_imag * tmp_real + X_real * tmp_imag; + ix += incX; + } + jy += incY; + } + } else { + BLAS_ERROR("unrecognized operation"); + } + } +} diff --git a/gsl-2.5/cblas/source_geru.h b/gsl-2.5/cblas/source_geru.h new file mode 100644 index 00000000..4ca5ecc2 --- /dev/null +++ b/gsl-2.5/cblas/source_geru.h @@ -0,0 +1,67 @@ +/* blas/source_geru.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + INDEX i, j; + + CHECK_ARGS10(CZ_GERU,order,M,N,alpha,X,incX,Y,incY,A,lda); + + { + const BASE alpha_real = CONST_REAL0(alpha); + const BASE alpha_imag = CONST_IMAG0(alpha); + + if (order == CblasRowMajor) { + INDEX ix = OFFSET(M, incX); + for (i = 0; i < M; i++) { + const BASE X_real = CONST_REAL(X, ix); + const BASE X_imag = CONST_IMAG(X, ix); + const BASE tmp_real = alpha_real * X_real - alpha_imag * X_imag; + const BASE tmp_imag = alpha_imag * X_real + alpha_real * X_imag; + INDEX jy = OFFSET(N, incY); + for (j = 0; j < N; j++) { + const BASE Y_real = CONST_REAL(Y, jy); + const BASE Y_imag = CONST_IMAG(Y, jy); + REAL(A, lda * i + j) += Y_real * tmp_real - Y_imag * tmp_imag; + IMAG(A, lda * i + j) += Y_imag * tmp_real + Y_real * tmp_imag; + jy += incY; + } + ix += incX; + } + } else if (order == CblasColMajor) { + INDEX jy = OFFSET(N, incY); + for (j = 0; j < N; j++) { + const BASE Y_real = CONST_REAL(Y, jy); + const BASE Y_imag = CONST_IMAG(Y, jy); + const BASE tmp_real = alpha_real * Y_real - alpha_imag * Y_imag; + const BASE tmp_imag = alpha_imag * Y_real + alpha_real * Y_imag; + INDEX ix = OFFSET(M, incX); + for (i = 0; i < M; i++) { + const BASE X_real = CONST_REAL(X, ix); + const BASE X_imag = CONST_IMAG(X, ix); + REAL(A, i + lda * j) += X_real * tmp_real - X_imag * tmp_imag; + IMAG(A, i + lda * j) += X_imag * tmp_real + X_real * tmp_imag; + ix += incX; + } + jy += incY; + } + } else { + BLAS_ERROR("unrecognized operation"); + } + } +} diff --git a/gsl-2.5/cblas/source_hbmv.h b/gsl-2.5/cblas/source_hbmv.h new file mode 100644 index 00000000..62cdbaa9 --- /dev/null +++ b/gsl-2.5/cblas/source_hbmv.h @@ -0,0 +1,149 @@ +/* blas/source_hbmv.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + INDEX i, j; + + const int conj = (order == CblasColMajor) ? -1 : 1; + + CHECK_ARGS12(CZ_HBMV,order,Uplo,N,K,alpha,A,lda,X,incX,beta,Y,incY); + + { + const BASE alpha_real = CONST_REAL0(alpha); + const BASE alpha_imag = CONST_IMAG0(alpha); + + const BASE beta_real = CONST_REAL0(beta); + const BASE beta_imag = CONST_IMAG0(beta); + + if (N == 0) + return; + + if ((alpha_real == 0.0 && alpha_imag == 0.0) + && (beta_real == 1.0 && beta_imag == 0.0)) + return; + + /* form y := beta*y */ + if (beta_real == 0.0 && beta_imag == 0.0) { + INDEX iy = OFFSET(N, incY); + for (i = 0; i < N; i++) { + REAL(Y, iy) = 0.0; + IMAG(Y, iy) = 0.0; + iy += incY; + } + } else if (!(beta_real == 1.0 && beta_imag == 0.0)) { + INDEX iy = OFFSET(N, incY); + for (i = 0; i < N; i++) { + const BASE y_real = REAL(Y, iy); + const BASE y_imag = IMAG(Y, iy); + const BASE tmpR = y_real * beta_real - y_imag * beta_imag; + const BASE tmpI = y_real * beta_imag + y_imag * beta_real; + REAL(Y, iy) = tmpR; + IMAG(Y, iy) = tmpI; + iy += incY; + } + } + + if (alpha_real == 0.0 && alpha_imag == 0.0) + return; + + /* form y := alpha*A*x + y */ + + if ((order == CblasRowMajor && Uplo == CblasUpper) + || (order == CblasColMajor && Uplo == CblasLower)) { + INDEX ix = OFFSET(N, incX); + INDEX iy = OFFSET(N, incY); + for (i = 0; i < N; i++) { + BASE x_real = CONST_REAL(X, ix); + BASE x_imag = CONST_IMAG(X, ix); + BASE temp1_real = alpha_real * x_real - alpha_imag * x_imag; + BASE temp1_imag = alpha_real * x_imag + alpha_imag * x_real; + BASE temp2_real = 0.0; + BASE temp2_imag = 0.0; + const INDEX j_min = i + 1; + const INDEX j_max = GSL_MIN(N, i + K + 1); + INDEX jx = OFFSET(N, incX) + j_min * incX; + INDEX jy = OFFSET(N, incY) + j_min * incY; + BASE Aii_real = CONST_REAL(A, lda * i + 0); + /* Aii_imag is zero */ + REAL(Y, iy) += temp1_real * Aii_real; + IMAG(Y, iy) += temp1_imag * Aii_real; + for (j = j_min; j < j_max; j++) { + BASE Aij_real = CONST_REAL(A, lda * i + (j - i)); + BASE Aij_imag = conj * CONST_IMAG(A, lda * i + (j - i)); + REAL(Y, jy) += temp1_real * Aij_real - temp1_imag * (-Aij_imag); + IMAG(Y, jy) += temp1_real * (-Aij_imag) + temp1_imag * Aij_real; + x_real = CONST_REAL(X, jx); + x_imag = CONST_IMAG(X, jx); + temp2_real += x_real * Aij_real - x_imag * Aij_imag; + temp2_imag += x_real * Aij_imag + x_imag * Aij_real; + jx += incX; + jy += incY; + } + REAL(Y, iy) += alpha_real * temp2_real - alpha_imag * temp2_imag; + IMAG(Y, iy) += alpha_real * temp2_imag + alpha_imag * temp2_real; + ix += incX; + iy += incY; + } + } else if ((order == CblasRowMajor && Uplo == CblasLower) + || (order == CblasColMajor && Uplo == CblasUpper)) { + INDEX ix = OFFSET(N, incX); + INDEX iy = OFFSET(N, incY); + for (i = 0; i < N; i++) { + BASE x_real = CONST_REAL(X, ix); + BASE x_imag = CONST_IMAG(X, ix); + BASE temp1_real = alpha_real * x_real - alpha_imag * x_imag; + BASE temp1_imag = alpha_real * x_imag + alpha_imag * x_real; + BASE temp2_real = 0.0; + BASE temp2_imag = 0.0; + const INDEX j_min = (K > i ? 0 : i - K); + const INDEX j_max = i; + INDEX jx = OFFSET(N, incX) + j_min * incX; + INDEX jy = OFFSET(N, incY) + j_min * incY; + + for (j = j_min; j < j_max; j++) { + BASE Aij_real = CONST_REAL(A, i * lda + (K - i + j)); + BASE Aij_imag = conj * CONST_IMAG(A, i * lda + (K - i + j)); + REAL(Y, jy) += temp1_real * Aij_real - temp1_imag * (-Aij_imag); + IMAG(Y, jy) += temp1_real * (-Aij_imag) + temp1_imag * Aij_real; + x_real = CONST_REAL(X, jx); + x_imag = CONST_IMAG(X, jx); + temp2_real += x_real * Aij_real - x_imag * Aij_imag; + temp2_imag += x_real * Aij_imag + x_imag * Aij_real; + jx += incX; + jy += incY; + } + + { + BASE Aii_real = CONST_REAL(A, lda * i + K); + /* Aii_imag is zero */ + REAL(Y, iy) += temp1_real * Aii_real; + IMAG(Y, iy) += temp1_imag * Aii_real; + } + + REAL(Y, iy) += alpha_real * temp2_real - alpha_imag * temp2_imag; + IMAG(Y, iy) += alpha_real * temp2_imag + alpha_imag * temp2_real; + ix += incX; + iy += incY; + } + + } else { + BLAS_ERROR("unrecognized operation"); + } + } +} diff --git a/gsl-2.5/cblas/source_hemm.h b/gsl-2.5/cblas/source_hemm.h new file mode 100644 index 00000000..0a25ccc4 --- /dev/null +++ b/gsl-2.5/cblas/source_hemm.h @@ -0,0 +1,208 @@ +/* blas/source_hemm.h + * + * Copyright (C) 2001, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + INDEX i, j, k; + INDEX n1, n2; + int uplo, side; + + CHECK_ARGS13(HEMM,Order,Side,Uplo,M,N,alpha,A,lda,B,ldb,beta,C,ldc); + + { + const BASE alpha_real = CONST_REAL0(alpha); + const BASE alpha_imag = CONST_IMAG0(alpha); + + const BASE beta_real = CONST_REAL0(beta); + const BASE beta_imag = CONST_IMAG0(beta); + + if ((alpha_real == 0.0 && alpha_imag == 0.0) + && (beta_real == 1.0 && beta_imag == 0.0)) + return; + + if (Order == CblasRowMajor) { + n1 = M; + n2 = N; + uplo = Uplo; + side = Side; + } else { + n1 = N; + n2 = M; + uplo = (Uplo == CblasUpper) ? CblasLower : CblasUpper; + side = (Side == CblasLeft) ? CblasRight : CblasLeft; + } + + /* form y := beta*y */ + if (beta_real == 0.0 && beta_imag == 0.0) { + for (i = 0; i < n1; i++) { + for (j = 0; j < n2; j++) { + REAL(C, ldc * i + j) = 0.0; + IMAG(C, ldc * i + j) = 0.0; + } + } + } else if (!(beta_real == 1.0 && beta_imag == 0.0)) { + for (i = 0; i < n1; i++) { + for (j = 0; j < n2; j++) { + const BASE Cij_real = REAL(C, ldc * i + j); + const BASE Cij_imag = IMAG(C, ldc * i + j); + REAL(C, ldc * i + j) = beta_real * Cij_real - beta_imag * Cij_imag; + IMAG(C, ldc * i + j) = beta_real * Cij_imag + beta_imag * Cij_real; + } + } + } + + if (alpha_real == 0.0 && alpha_imag == 0.0) + return; + + if (side == CblasLeft && uplo == CblasUpper) { + + /* form C := alpha*A*B + C */ + + for (i = 0; i < n1; i++) { + for (j = 0; j < n2; j++) { + const BASE Bij_real = CONST_REAL(B, ldb * i + j); + const BASE Bij_imag = CONST_IMAG(B, ldb * i + j); + const BASE temp1_real = alpha_real * Bij_real - alpha_imag * Bij_imag; + const BASE temp1_imag = alpha_real * Bij_imag + alpha_imag * Bij_real; + BASE temp2_real = 0.0; + BASE temp2_imag = 0.0; + { + const BASE Aii_real = CONST_REAL(A, i * lda + i); + /* const BASE Aii_imag = 0.0; */ + REAL(C, i * ldc + j) += temp1_real * Aii_real; + IMAG(C, i * ldc + j) += temp1_imag * Aii_real; + } + for (k = i + 1; k < n1; k++) { + const BASE Aik_real = CONST_REAL(A, i * lda + k); + const BASE Aik_imag = CONST_IMAG(A, i * lda + k); + const BASE Bkj_real = CONST_REAL(B, ldb * k + j); + const BASE Bkj_imag = CONST_IMAG(B, ldb * k + j); + REAL(C, k * ldc + j) += Aik_real * temp1_real - (-Aik_imag) * temp1_imag; + IMAG(C, k * ldc + j) += Aik_real * temp1_imag + (-Aik_imag) * temp1_real; + temp2_real += Aik_real * Bkj_real - Aik_imag * Bkj_imag; + temp2_imag += Aik_real * Bkj_imag + Aik_imag * Bkj_real; + } + REAL(C, i * ldc + j) += alpha_real * temp2_real - alpha_imag * temp2_imag; + IMAG(C, i * ldc + j) += alpha_real * temp2_imag + alpha_imag * temp2_real; + } + } + + } else if (side == CblasLeft && uplo == CblasLower) { + + /* form C := alpha*A*B + C */ + + for (i = 0; i < n1; i++) { + for (j = 0; j < n2; j++) { + const BASE Bij_real = CONST_REAL(B, ldb * i + j); + const BASE Bij_imag = CONST_IMAG(B, ldb * i + j); + const BASE temp1_real = alpha_real * Bij_real - alpha_imag * Bij_imag; + const BASE temp1_imag = alpha_real * Bij_imag + alpha_imag * Bij_real; + BASE temp2_real = 0.0; + BASE temp2_imag = 0.0; + for (k = 0; k < i; k++) { + const BASE Aik_real = CONST_REAL(A, i * lda + k); + const BASE Aik_imag = CONST_IMAG(A, i * lda + k); + const BASE Bkj_real = CONST_REAL(B, ldb * k + j); + const BASE Bkj_imag = CONST_IMAG(B, ldb * k + j); + REAL(C, k * ldc + j) += Aik_real * temp1_real - (-Aik_imag) * temp1_imag; + IMAG(C, k * ldc + j) += Aik_real * temp1_imag + (-Aik_imag) * temp1_real; + temp2_real += Aik_real * Bkj_real - Aik_imag * Bkj_imag; + temp2_imag += Aik_real * Bkj_imag + Aik_imag * Bkj_real; + } + { + const BASE Aii_real = CONST_REAL(A, i * lda + i); + /* const BASE Aii_imag = 0.0; */ + REAL(C, i * ldc + j) += temp1_real * Aii_real; + IMAG(C, i * ldc + j) += temp1_imag * Aii_real; + } + REAL(C, i * ldc + j) += alpha_real * temp2_real - alpha_imag * temp2_imag; + IMAG(C, i * ldc + j) += alpha_real * temp2_imag + alpha_imag * temp2_real; + } + } + + } else if (side == CblasRight && uplo == CblasUpper) { + + /* form C := alpha*B*A + C */ + + for (i = 0; i < n1; i++) { + for (j = 0; j < n2; j++) { + const BASE Bij_real = CONST_REAL(B, ldb * i + j); + const BASE Bij_imag = CONST_IMAG(B, ldb * i + j); + const BASE temp1_real = alpha_real * Bij_real - alpha_imag * Bij_imag; + const BASE temp1_imag = alpha_real * Bij_imag + alpha_imag * Bij_real; + BASE temp2_real = 0.0; + BASE temp2_imag = 0.0; + { + const BASE Ajj_real = CONST_REAL(A, j * lda + j); + /* const BASE Ajj_imag = 0.0; */ + REAL(C, i * ldc + j) += temp1_real * Ajj_real; + IMAG(C, i * ldc + j) += temp1_imag * Ajj_real; + } + for (k = j + 1; k < n2; k++) { + const BASE Ajk_real = CONST_REAL(A, j * lda + k); + const BASE Ajk_imag = CONST_IMAG(A, j * lda + k); + const BASE Bik_real = CONST_REAL(B, ldb * i + k); + const BASE Bik_imag = CONST_IMAG(B, ldb * i + k); + REAL(C, i * ldc + k) += temp1_real * Ajk_real - temp1_imag * Ajk_imag; + IMAG(C, i * ldc + k) += temp1_real * Ajk_imag + temp1_imag * Ajk_real; + temp2_real += Bik_real * Ajk_real - Bik_imag * (-Ajk_imag); + temp2_imag += Bik_real * (-Ajk_imag) + Bik_imag * Ajk_real; + } + REAL(C, i * ldc + j) += alpha_real * temp2_real - alpha_imag * temp2_imag; + IMAG(C, i * ldc + j) += alpha_real * temp2_imag + alpha_imag * temp2_real; + } + } + + } else if (side == CblasRight && uplo == CblasLower) { + + /* form C := alpha*B*A + C */ + + for (i = 0; i < n1; i++) { + for (j = 0; j < n2; j++) { + const BASE Bij_real = CONST_REAL(B, ldb * i + j); + const BASE Bij_imag = CONST_IMAG(B, ldb * i + j); + const BASE temp1_real = alpha_real * Bij_real - alpha_imag * Bij_imag; + const BASE temp1_imag = alpha_real * Bij_imag + alpha_imag * Bij_real; + BASE temp2_real = 0.0; + BASE temp2_imag = 0.0; + for (k = 0; k < j; k++) { + const BASE Ajk_real = CONST_REAL(A, j * lda + k); + const BASE Ajk_imag = CONST_IMAG(A, j * lda + k); + const BASE Bik_real = CONST_REAL(B, ldb * i + k); + const BASE Bik_imag = CONST_IMAG(B, ldb * i + k); + REAL(C, i * ldc + k) += temp1_real * Ajk_real - temp1_imag * Ajk_imag; + IMAG(C, i * ldc + k) += temp1_real * Ajk_imag + temp1_imag * Ajk_real; + temp2_real += Bik_real * Ajk_real - Bik_imag * (-Ajk_imag); + temp2_imag += Bik_real * (-Ajk_imag) + Bik_imag * Ajk_real; + } + { + const BASE Ajj_real = CONST_REAL(A, j * lda + j); + /* const BASE Ajj_imag = 0.0; */ + REAL(C, i * ldc + j) += temp1_real * Ajj_real; + IMAG(C, i * ldc + j) += temp1_imag * Ajj_real; + } + REAL(C, i * ldc + j) += alpha_real * temp2_real - alpha_imag * temp2_imag; + IMAG(C, i * ldc + j) += alpha_real * temp2_imag + alpha_imag * temp2_real; + } + } + + } else { + BLAS_ERROR("unrecognized operation"); + } + } +} diff --git a/gsl-2.5/cblas/source_hemv.h b/gsl-2.5/cblas/source_hemv.h new file mode 100644 index 00000000..25829406 --- /dev/null +++ b/gsl-2.5/cblas/source_hemv.h @@ -0,0 +1,140 @@ +/* blas/source_hemv.h + * + * Copyright (C) 2001, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + const int conj = (order == CblasColMajor) ? -1 : 1; + INDEX i, j; + + CHECK_ARGS11(CZ_HEMV,order,Uplo,N,alpha,A,lda,X,incX,beta,Y,incY); + + { + const BASE alpha_real = CONST_REAL0(alpha); + const BASE alpha_imag = CONST_IMAG0(alpha); + + const BASE beta_real = CONST_REAL0(beta); + const BASE beta_imag = CONST_IMAG0(beta); + + if ((alpha_real == 0.0 && alpha_imag == 0.0) + && (beta_real == 1.0 && beta_imag == 0.0)) + return; + + /* form y := beta*y */ + if (beta_real == 0.0 && beta_imag == 0.0) { + INDEX iy = OFFSET(N, incY); + for (i = 0; i < N; i++) { + REAL(Y, iy) = 0.0; + IMAG(Y, iy) = 0.0; + iy += incY; + } + } else if (!(beta_real == 1.0 && beta_imag == 0.0)) { + INDEX iy = OFFSET(N, incY); + for (i = 0; i < N; i++) { + const BASE y_real = REAL(Y, iy); + const BASE y_imag = IMAG(Y, iy); + const BASE tmpR = y_real * beta_real - y_imag * beta_imag; + const BASE tmpI = y_real * beta_imag + y_imag * beta_real; + REAL(Y, iy) = tmpR; + IMAG(Y, iy) = tmpI; + iy += incY; + } + } + + if (alpha_real == 0.0 && alpha_imag == 0.0) + return; + + /* form y := alpha*A*x + y */ + + if ((order == CblasRowMajor && Uplo == CblasUpper) + || (order == CblasColMajor && Uplo == CblasLower)) { + INDEX ix = OFFSET(N, incX); + INDEX iy = OFFSET(N, incY); + for (i = 0; i < N; i++) { + BASE x_real = CONST_REAL(X, ix); + BASE x_imag = CONST_IMAG(X, ix); + BASE temp1_real = alpha_real * x_real - alpha_imag * x_imag; + BASE temp1_imag = alpha_real * x_imag + alpha_imag * x_real; + BASE temp2_real = 0.0; + BASE temp2_imag = 0.0; + const INDEX j_min = i + 1; + const INDEX j_max = N; + INDEX jx = OFFSET(N, incX) + j_min * incX; + INDEX jy = OFFSET(N, incY) + j_min * incY; + BASE Aii_real = CONST_REAL(A, lda * i + i); + /* Aii_imag is zero */ + REAL(Y, iy) += temp1_real * Aii_real; + IMAG(Y, iy) += temp1_imag * Aii_real; + for (j = j_min; j < j_max; j++) { + BASE Aij_real = CONST_REAL(A, lda * i + j); + BASE Aij_imag = conj * CONST_IMAG(A, lda * i + j); + REAL(Y, jy) += temp1_real * Aij_real - temp1_imag * (-Aij_imag); + IMAG(Y, jy) += temp1_real * (-Aij_imag) + temp1_imag * Aij_real; + x_real = CONST_REAL(X, jx); + x_imag = CONST_IMAG(X, jx); + temp2_real += x_real * Aij_real - x_imag * Aij_imag; + temp2_imag += x_real * Aij_imag + x_imag * Aij_real; + jx += incX; + jy += incY; + } + REAL(Y, iy) += alpha_real * temp2_real - alpha_imag * temp2_imag; + IMAG(Y, iy) += alpha_real * temp2_imag + alpha_imag * temp2_real; + ix += incX; + iy += incY; + } + } else if ((order == CblasRowMajor && Uplo == CblasLower) + || (order == CblasColMajor && Uplo == CblasUpper)) { + INDEX ix = OFFSET(N, incX) + (N - 1) * incX; + INDEX iy = OFFSET(N, incY) + (N - 1) * incY; + for (i = N; i > 0 && i--;) { + BASE x_real = CONST_REAL(X, ix); + BASE x_imag = CONST_IMAG(X, ix); + BASE temp1_real = alpha_real * x_real - alpha_imag * x_imag; + BASE temp1_imag = alpha_real * x_imag + alpha_imag * x_real; + BASE temp2_real = 0.0; + BASE temp2_imag = 0.0; + const INDEX j_min = 0; + const INDEX j_max = i; + INDEX jx = OFFSET(N, incX) + j_min * incX; + INDEX jy = OFFSET(N, incY) + j_min * incY; + BASE Aii_real = CONST_REAL(A, lda * i + i); + /* Aii_imag is zero */ + REAL(Y, iy) += temp1_real * Aii_real; + IMAG(Y, iy) += temp1_imag * Aii_real; + + for (j = j_min; j < j_max; j++) { + BASE Aij_real = CONST_REAL(A, lda * i + j); + BASE Aij_imag = conj * CONST_IMAG(A, lda * i + j); + REAL(Y, jy) += temp1_real * Aij_real - temp1_imag * (-Aij_imag); + IMAG(Y, jy) += temp1_real * (-Aij_imag) + temp1_imag * Aij_real; + x_real = CONST_REAL(X, jx); + x_imag = CONST_IMAG(X, jx); + temp2_real += x_real * Aij_real - x_imag * Aij_imag; + temp2_imag += x_real * Aij_imag + x_imag * Aij_real; + jx += incX; + jy += incY; + } + REAL(Y, iy) += alpha_real * temp2_real - alpha_imag * temp2_imag; + IMAG(Y, iy) += alpha_real * temp2_imag + alpha_imag * temp2_real; + ix -= incX; + iy -= incY; + } + } else { + BLAS_ERROR("unrecognized operation"); + } + } +} diff --git a/gsl-2.5/cblas/source_her.h b/gsl-2.5/cblas/source_her.h new file mode 100644 index 00000000..9427cd0b --- /dev/null +++ b/gsl-2.5/cblas/source_her.h @@ -0,0 +1,82 @@ +/* blas/source_her.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + INDEX i, j; + const int conj = (order == CblasColMajor) ? -1 : 1; + + CHECK_ARGS8(CZ_HER,order,Uplo,N,alpha,X,incX,A,lda); + + if (alpha == 0.0) + return; + + if ((order == CblasRowMajor && Uplo == CblasUpper) + || (order == CblasColMajor && Uplo == CblasLower)) { + INDEX ix = OFFSET(N, incX); + for (i = 0; i < N; i++) { + const BASE tmp_real = alpha * CONST_REAL(X, ix); + const BASE tmp_imag = alpha * conj * CONST_IMAG(X, ix); + INDEX jx = ix; + + { + const BASE X_real = CONST_REAL(X, jx); + const BASE X_imag = -conj * CONST_IMAG(X, jx); + REAL(A, lda * i + i) += X_real * tmp_real - X_imag * tmp_imag; + IMAG(A, lda * i + i) = 0; + jx += incX; + } + + for (j = i + 1; j < N; j++) { + const BASE X_real = CONST_REAL(X, jx); + const BASE X_imag = -conj * CONST_IMAG(X, jx); + REAL(A, lda * i + j) += X_real * tmp_real - X_imag * tmp_imag; + IMAG(A, lda * i + j) += X_imag * tmp_real + X_real * tmp_imag; + jx += incX; + } + ix += incX; + } + } else if ((order == CblasRowMajor && Uplo == CblasLower) + || (order == CblasColMajor && Uplo == CblasUpper)) { + INDEX ix = OFFSET(N, incX); + for (i = 0; i < N; i++) { + const BASE tmp_real = alpha * CONST_REAL(X, ix); + const BASE tmp_imag = alpha * conj * CONST_IMAG(X, ix); + INDEX jx = OFFSET(N, incX); + for (j = 0; j < i; j++) { + const BASE X_real = CONST_REAL(X, jx); + const BASE X_imag = -conj * CONST_IMAG(X, jx); + REAL(A, lda * i + j) += X_real * tmp_real - X_imag * tmp_imag; + IMAG(A, lda * i + j) += X_imag * tmp_real + X_real * tmp_imag; + jx += incX; + } + + { + const BASE X_real = CONST_REAL(X, jx); + const BASE X_imag = -conj * CONST_IMAG(X, jx); + REAL(A, lda * i + i) += X_real * tmp_real - X_imag * tmp_imag; + IMAG(A, lda * i + i) = 0; + jx += incX; + } + + ix += incX; + } + } else { + BLAS_ERROR("unrecognized operation"); + } +} diff --git a/gsl-2.5/cblas/source_her2.h b/gsl-2.5/cblas/source_her2.h new file mode 100644 index 00000000..eb5382f4 --- /dev/null +++ b/gsl-2.5/cblas/source_her2.h @@ -0,0 +1,119 @@ +/* blas/source_her2.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + INDEX i, j; + const int conj = (order == CblasColMajor) ? -1 : 1; + + CHECK_ARGS10(CZ_HER2,order,Uplo,N,alpha,X,incX,Y,incY,A,lda); + + { + const BASE alpha_real = CONST_REAL0(alpha); + const BASE alpha_imag = CONST_IMAG0(alpha); + + if (alpha_real == 0.0 && alpha_imag == 0.0) + return; + + if ((order == CblasRowMajor && Uplo == CblasUpper) + || (order == CblasColMajor && Uplo == CblasLower)) { + INDEX ix = OFFSET(N, incX); + INDEX iy = OFFSET(N, incY); + for (i = 0; i < N; i++) { + const BASE Xi_real = CONST_REAL(X, ix); + const BASE Xi_imag = CONST_IMAG(X, ix); + /* tmp1 = alpha Xi */ + const BASE tmp1_real = alpha_real * Xi_real - alpha_imag * Xi_imag; + const BASE tmp1_imag = alpha_imag * Xi_real + alpha_real * Xi_imag; + + const BASE Yi_real = CONST_REAL(Y, iy); + const BASE Yi_imag = CONST_IMAG(Y, iy); + /* tmp2 = conj(alpha) Yi */ + const BASE tmp2_real = alpha_real * Yi_real + alpha_imag * Yi_imag; + const BASE tmp2_imag = -alpha_imag * Yi_real + alpha_real * Yi_imag; + + INDEX jx = ix + incX; + INDEX jy = iy + incY; + + /* Aij = alpha*Xi*conj(Yj) + conj(alpha)*Yi*conj(Xj) */ + + REAL(A, lda * i + i) += 2 * (tmp1_real * Yi_real + tmp1_imag * Yi_imag); + IMAG(A, lda * i + i) = 0; + + for (j = i + 1; j < N; j++) { + const BASE Xj_real = CONST_REAL(X, jx); + const BASE Xj_imag = CONST_IMAG(X, jx); + const BASE Yj_real = CONST_REAL(Y, jy); + const BASE Yj_imag = CONST_IMAG(Y, jy); + REAL(A, lda * i + j) += ((tmp1_real * Yj_real + tmp1_imag * Yj_imag) + + (tmp2_real * Xj_real + tmp2_imag * Xj_imag)); + IMAG(A, lda * i + j) += + conj * ((tmp1_imag * Yj_real - tmp1_real * Yj_imag) + + (tmp2_imag * Xj_real - tmp2_real * Xj_imag)); + jx += incX; + jy += incY; + } + ix += incX; + iy += incY; + } + } else if ((order == CblasRowMajor && Uplo == CblasLower) + || (order == CblasColMajor && Uplo == CblasUpper)) { + + INDEX ix = OFFSET(N, incX); + INDEX iy = OFFSET(N, incY); + for (i = 0; i < N; i++) { + const BASE Xi_real = CONST_REAL(X, ix); + const BASE Xi_imag = CONST_IMAG(X, ix); + const BASE tmp1_real = alpha_real * Xi_real - alpha_imag * Xi_imag; + const BASE tmp1_imag = alpha_imag * Xi_real + alpha_real * Xi_imag; + + const BASE Yi_real = CONST_REAL(Y, iy); + const BASE Yi_imag = CONST_IMAG(Y, iy); + const BASE tmp2_real = alpha_real * Yi_real + alpha_imag * Yi_imag; + const BASE tmp2_imag = -alpha_imag * Yi_real + alpha_real * Yi_imag; + + INDEX jx = OFFSET(N, incX); + INDEX jy = OFFSET(N, incY); + + /* Aij = alpha*Xi*conj(Yj) + conj(alpha)*Yi*conj(Xj) */ + + for (j = 0; j < i; j++) { + const BASE Xj_real = CONST_REAL(X, jx); + const BASE Xj_imag = CONST_IMAG(X, jx); + const BASE Yj_real = CONST_REAL(Y, jy); + const BASE Yj_imag = CONST_IMAG(Y, jy); + REAL(A, lda * i + j) += ((tmp1_real * Yj_real + tmp1_imag * Yj_imag) + + (tmp2_real * Xj_real + tmp2_imag * Xj_imag)); + IMAG(A, lda * i + j) += + conj * ((tmp1_imag * Yj_real - tmp1_real * Yj_imag) + + (tmp2_imag * Xj_real - tmp2_real * Xj_imag)); + jx += incX; + jy += incY; + } + + REAL(A, lda * i + i) += 2 * (tmp1_real * Yi_real + tmp1_imag * Yi_imag); + IMAG(A, lda * i + i) = 0; + + ix += incX; + iy += incY; + } + } else { + BLAS_ERROR("unrecognized operation"); + } + } +} diff --git a/gsl-2.5/cblas/source_her2k.h b/gsl-2.5/cblas/source_her2k.h new file mode 100644 index 00000000..f289a7e6 --- /dev/null +++ b/gsl-2.5/cblas/source_her2k.h @@ -0,0 +1,273 @@ +/* blas/source_her2k.h + * + * Copyright (C) 2001, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + INDEX i, j, k; + int uplo, trans; + + CHECK_ARGS13(HER2K,Order,Uplo,Trans,N,K,alpha,A,lda,B,ldb,beta,C,ldc); + + { + const BASE alpha_real = CONST_REAL0(alpha); + BASE alpha_imag = CONST_IMAG0(alpha); + + if (beta == 1.0 && ((alpha_real == 0.0 && alpha_imag == 0.0) || K == 0)) + return; + + if (Order == CblasRowMajor) { + uplo = Uplo; + trans = Trans; + } else { + uplo = (Uplo == CblasUpper) ? CblasLower : CblasUpper; + trans = (Trans == CblasNoTrans) ? CblasConjTrans : CblasNoTrans; + alpha_imag *= -1; /* conjugate alpha */ + } + + /* form C := beta*C */ + + if (beta == 0.0) { + if (uplo == CblasUpper) { + for (i = 0; i < N; i++) { + for (j = i; j < N; j++) { + REAL(C, ldc * i + j) = 0.0; + IMAG(C, ldc * i + j) = 0.0; + } + } + } else { + for (i = 0; i < N; i++) { + for (j = 0; j <= i; j++) { + REAL(C, ldc * i + j) = 0.0; + IMAG(C, ldc * i + j) = 0.0; + } + } + } + } else if (beta != 1.0) { + if (uplo == CblasUpper) { + for (i = 0; i < N; i++) { + REAL(C, ldc * i + i) *= beta; + IMAG(C, ldc * i + i) = 0.0; + for (j = i + 1; j < N; j++) { + REAL(C, ldc * i + j) *= beta; + IMAG(C, ldc * i + j) *= beta; + } + } + } else { + for (i = 0; i < N; i++) { + for (j = 0; j < i; j++) { + REAL(C, ldc * i + j) *= beta; + IMAG(C, ldc * i + j) *= beta; + } + REAL(C, ldc * i + i) *= beta; + IMAG(C, ldc * i + i) = 0.0; + } + } + } else { + for (i = 0; i < N; i++) { + IMAG(C, ldc * i + i) = 0.0; + } + } + + if (alpha_real == 0.0 && alpha_imag == 0.0) + return; + + if (uplo == CblasUpper && trans == CblasNoTrans) { + + for (i = 0; i < N; i++) { + + /* Cii += alpha Aik conj(Bik) + conj(alpha) Bik conj(Aik) */ + { + BASE temp_real = 0.0; + /* BASE temp_imag = 0.0; */ + for (k = 0; k < K; k++) { + const BASE Aik_real = CONST_REAL(A, i * lda + k); + const BASE Aik_imag = CONST_IMAG(A, i * lda + k); + /* temp1 = alpha * Aik */ + const BASE temp1_real = alpha_real * Aik_real - alpha_imag * Aik_imag; + const BASE temp1_imag = alpha_real * Aik_imag + alpha_imag * Aik_real; + const BASE Bik_real = CONST_REAL(B, i * ldb + k); + const BASE Bik_imag = CONST_IMAG(B, i * ldb + k); + temp_real += temp1_real * Bik_real + temp1_imag * Bik_imag; + } + + REAL(C, i * ldc + i) += 2 * temp_real; + IMAG(C, i * ldc + i) = 0.0; + } + + /* Cij += alpha Aik conj(Bjk) + conj(alpha) Bik conj(Ajk) */ + for (j = i + 1; j < N; j++) { + BASE temp_real = 0.0; + BASE temp_imag = 0.0; + for (k = 0; k < K; k++) { + const BASE Aik_real = CONST_REAL(A, i * lda + k); + const BASE Aik_imag = CONST_IMAG(A, i * lda + k); + /* temp1 = alpha * Aik */ + const BASE temp1_real = alpha_real * Aik_real - alpha_imag * Aik_imag; + const BASE temp1_imag = alpha_real * Aik_imag + alpha_imag * Aik_real; + const BASE Bik_real = CONST_REAL(B, i * ldb + k); + const BASE Bik_imag = CONST_IMAG(B, i * ldb + k); + + const BASE Ajk_real = CONST_REAL(A, j * lda + k); + const BASE Ajk_imag = CONST_IMAG(A, j * lda + k); + /* temp2 = alpha * Ajk */ + const BASE temp2_real = alpha_real * Ajk_real - alpha_imag * Ajk_imag; + const BASE temp2_imag = alpha_real * Ajk_imag + alpha_imag * Ajk_real; + const BASE Bjk_real = CONST_REAL(B, j * ldb + k); + const BASE Bjk_imag = CONST_IMAG(B, j * ldb + k); + + /* Cij += alpha * Aik * conj(Bjk) + conj(alpha) * Bik * conj(Ajk) */ + temp_real += ((temp1_real * Bjk_real + temp1_imag * Bjk_imag) + + (Bik_real * temp2_real + Bik_imag * temp2_imag)); + temp_imag += ((temp1_real * (-Bjk_imag) + temp1_imag * Bjk_real) + + (Bik_real * (-temp2_imag) + Bik_imag * temp2_real)); + } + REAL(C, i * ldc + j) += temp_real; + IMAG(C, i * ldc + j) += temp_imag; + } + } + + } else if (uplo == CblasUpper && trans == CblasConjTrans) { + + for (k = 0; k < K; k++) { + for (i = 0; i < N; i++) { + BASE Aki_real = CONST_REAL(A, k * lda + i); + BASE Aki_imag = CONST_IMAG(A, k * lda + i); + BASE Bki_real = CONST_REAL(B, k * ldb + i); + BASE Bki_imag = CONST_IMAG(B, k * ldb + i); + /* temp1 = alpha * conj(Aki) */ + BASE temp1_real = alpha_real * Aki_real - alpha_imag * (-Aki_imag); + BASE temp1_imag = alpha_real * (-Aki_imag) + alpha_imag * Aki_real; + /* temp2 = conj(alpha) * conj(Bki) */ + BASE temp2_real = alpha_real * Bki_real - alpha_imag * Bki_imag; + BASE temp2_imag = -(alpha_real * Bki_imag + alpha_imag * Bki_real); + + /* Cii += alpha * conj(Aki) * Bki + conj(alpha) * conj(Bki) * Aki */ + { + REAL(C, i * lda + i) += 2 * (temp1_real * Bki_real - temp1_imag * Bki_imag); + IMAG(C, i * lda + i) = 0.0; + } + + for (j = i + 1; j < N; j++) { + BASE Akj_real = CONST_REAL(A, k * lda + j); + BASE Akj_imag = CONST_IMAG(A, k * lda + j); + BASE Bkj_real = CONST_REAL(B, k * ldb + j); + BASE Bkj_imag = CONST_IMAG(B, k * ldb + j); + /* Cij += alpha * conj(Aki) * Bkj + conj(alpha) * conj(Bki) * Akj */ + REAL(C, i * lda + j) += (temp1_real * Bkj_real - temp1_imag * Bkj_imag) + + (temp2_real * Akj_real - temp2_imag * Akj_imag); + IMAG(C, i * lda + j) += (temp1_real * Bkj_imag + temp1_imag * Bkj_real) + + (temp2_real * Akj_imag + temp2_imag * Akj_real); + } + } + } + + } else if (uplo == CblasLower && trans == CblasNoTrans) { + + for (i = 0; i < N; i++) { + + /* Cij += alpha Aik conj(Bjk) + conj(alpha) Bik conj(Ajk) */ + + for (j = 0; j < i; j++) { + BASE temp_real = 0.0; + BASE temp_imag = 0.0; + for (k = 0; k < K; k++) { + const BASE Aik_real = CONST_REAL(A, i * lda + k); + const BASE Aik_imag = CONST_IMAG(A, i * lda + k); + /* temp1 = alpha * Aik */ + const BASE temp1_real = alpha_real * Aik_real - alpha_imag * Aik_imag; + const BASE temp1_imag = alpha_real * Aik_imag + alpha_imag * Aik_real; + const BASE Bik_real = CONST_REAL(B, i * ldb + k); + const BASE Bik_imag = CONST_IMAG(B, i * ldb + k); + + const BASE Ajk_real = CONST_REAL(A, j * lda + k); + const BASE Ajk_imag = CONST_IMAG(A, j * lda + k); + /* temp2 = alpha * Ajk */ + const BASE temp2_real = alpha_real * Ajk_real - alpha_imag * Ajk_imag; + const BASE temp2_imag = alpha_real * Ajk_imag + alpha_imag * Ajk_real; + const BASE Bjk_real = CONST_REAL(B, j * ldb + k); + const BASE Bjk_imag = CONST_IMAG(B, j * ldb + k); + + /* Cij += alpha * Aik * conj(Bjk) + conj(alpha) * Bik * conj(Ajk) */ + temp_real += ((temp1_real * Bjk_real + temp1_imag * Bjk_imag) + + (Bik_real * temp2_real + Bik_imag * temp2_imag)); + temp_imag += ((temp1_real * (-Bjk_imag) + temp1_imag * Bjk_real) + + (Bik_real * (-temp2_imag) + Bik_imag * temp2_real)); + } + REAL(C, i * ldc + j) += temp_real; + IMAG(C, i * ldc + j) += temp_imag; + } + + /* Cii += alpha Aik conj(Bik) + conj(alpha) Bik conj(Aik) */ + { + BASE temp_real = 0.0; + /* BASE temp_imag = 0.0; */ + for (k = 0; k < K; k++) { + const BASE Aik_real = CONST_REAL(A, i * lda + k); + const BASE Aik_imag = CONST_IMAG(A, i * lda + k); + /* temp1 = alpha * Aik */ + const BASE temp1_real = alpha_real * Aik_real - alpha_imag * Aik_imag; + const BASE temp1_imag = alpha_real * Aik_imag + alpha_imag * Aik_real; + const BASE Bik_real = CONST_REAL(B, i * ldb + k); + const BASE Bik_imag = CONST_IMAG(B, i * ldb + k); + temp_real += temp1_real * Bik_real + temp1_imag * Bik_imag; + } + + REAL(C, i * ldc + i) += 2 * temp_real; + IMAG(C, i * ldc + i) = 0.0; + } + } + + } else if (uplo == CblasLower && trans == CblasConjTrans) { + + for (k = 0; k < K; k++) { + for (i = 0; i < N; i++) { + BASE Aki_real = CONST_REAL(A, k * lda + i); + BASE Aki_imag = CONST_IMAG(A, k * lda + i); + BASE Bki_real = CONST_REAL(B, k * ldb + i); + BASE Bki_imag = CONST_IMAG(B, k * ldb + i); + /* temp1 = alpha * conj(Aki) */ + BASE temp1_real = alpha_real * Aki_real - alpha_imag * (-Aki_imag); + BASE temp1_imag = alpha_real * (-Aki_imag) + alpha_imag * Aki_real; + /* temp2 = conj(alpha) * conj(Bki) */ + BASE temp2_real = alpha_real * Bki_real - alpha_imag * Bki_imag; + BASE temp2_imag = -(alpha_real * Bki_imag + alpha_imag * Bki_real); + + for (j = 0; j < i; j++) { + BASE Akj_real = CONST_REAL(A, k * lda + j); + BASE Akj_imag = CONST_IMAG(A, k * lda + j); + BASE Bkj_real = CONST_REAL(B, k * ldb + j); + BASE Bkj_imag = CONST_IMAG(B, k * ldb + j); + /* Cij += alpha * conj(Aki) * Bkj + conj(alpha) * conj(Bki) * Akj */ + REAL(C, i * lda + j) += (temp1_real * Bkj_real - temp1_imag * Bkj_imag) + + (temp2_real * Akj_real - temp2_imag * Akj_imag); + IMAG(C, i * lda + j) += (temp1_real * Bkj_imag + temp1_imag * Bkj_real) + + (temp2_real * Akj_imag + temp2_imag * Akj_real); + } + + /* Cii += alpha * conj(Aki) * Bki + conj(alpha) * conj(Bki) * Aki */ + { + REAL(C, i * lda + i) += 2 * (temp1_real * Bki_real - temp1_imag * Bki_imag); + IMAG(C, i * lda + i) = 0.0; + } + } + } + } else { + BLAS_ERROR("unrecognized operation"); + } + } +} diff --git a/gsl-2.5/cblas/source_herk.h b/gsl-2.5/cblas/source_herk.h new file mode 100644 index 00000000..3ff9395b --- /dev/null +++ b/gsl-2.5/cblas/source_herk.h @@ -0,0 +1,163 @@ +/* blas/source_herk.h + * + * Copyright (C) 2001, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + INDEX i, j, k; + int uplo, trans; + + CHECK_ARGS11(HERK,Order,Uplo,Trans,N,K,alpha,A,lda,beta,C,ldc); + + if (beta == 1.0 && (alpha == 0.0 || K == 0)) + return; + + if (Order == CblasRowMajor) { + uplo = Uplo; + trans = Trans; + } else { + uplo = (Uplo == CblasUpper) ? CblasLower : CblasUpper; + trans = (Trans == CblasNoTrans) ? CblasConjTrans : CblasNoTrans; + } + + /* form y := beta*y */ + if (beta == 0.0) { + if (uplo == CblasUpper) { + for (i = 0; i < N; i++) { + for (j = i; j < N; j++) { + REAL(C, ldc * i + j) = 0.0; + IMAG(C, ldc * i + j) = 0.0; + } + } + } else { + for (i = 0; i < N; i++) { + for (j = 0; j <= i; j++) { + REAL(C, ldc * i + j) = 0.0; + IMAG(C, ldc * i + j) = 0.0; + } + } + } + } else if (beta != 1.0) { + if (uplo == CblasUpper) { + for (i = 0; i < N; i++) { + REAL(C, ldc * i + i) *= beta; + IMAG(C, ldc * i + i) = 0; + for (j = i + 1; j < N; j++) { + REAL(C, ldc * i + j) *= beta; + IMAG(C, ldc * i + j) *= beta; + } + } + } else { + for (i = 0; i < N; i++) { + for (j = 0; j < i; j++) { + REAL(C, ldc * i + j) *= beta; + IMAG(C, ldc * i + j) *= beta; + } + REAL(C, ldc * i + i) *= beta; + IMAG(C, ldc * i + i) = 0; + } + } + } else { + /* set imaginary part of Aii to zero */ + for (i = 0; i < N; i++) { + IMAG(C, ldc * i + i) = 0.0; + } + } + + if (alpha == 0.0) + return; + + if (uplo == CblasUpper && trans == CblasNoTrans) { + + for (i = 0; i < N; i++) { + for (j = i; j < N; j++) { + BASE temp_real = 0.0; + BASE temp_imag = 0.0; + for (k = 0; k < K; k++) { + const BASE Aik_real = CONST_REAL(A, i * lda + k); + const BASE Aik_imag = CONST_IMAG(A, i * lda + k); + const BASE Ajk_real = CONST_REAL(A, j * lda + k); + const BASE Ajk_imag = -CONST_IMAG(A, j * lda + k); + temp_real += Aik_real * Ajk_real - Aik_imag * Ajk_imag; + temp_imag += Aik_real * Ajk_imag + Aik_imag * Ajk_real; + } + REAL(C, i * ldc + j) += alpha * temp_real; + IMAG(C, i * ldc + j) += alpha * temp_imag; + } + } + + } else if (uplo == CblasUpper && trans == CblasConjTrans) { + + for (i = 0; i < N; i++) { + for (j = i; j < N; j++) { + BASE temp_real = 0.0; + BASE temp_imag = 0.0; + for (k = 0; k < K; k++) { + const BASE Aki_real = CONST_REAL(A, k * lda + i); + const BASE Aki_imag = -CONST_IMAG(A, k * lda + i); + const BASE Akj_real = CONST_REAL(A, k * lda + j); + const BASE Akj_imag = CONST_IMAG(A, k * lda + j); + temp_real += Aki_real * Akj_real - Aki_imag * Akj_imag; + temp_imag += Aki_real * Akj_imag + Aki_imag * Akj_real; + } + REAL(C, i * ldc + j) += alpha * temp_real; + IMAG(C, i * ldc + j) += alpha * temp_imag; + } + } + + } else if (uplo == CblasLower && trans == CblasNoTrans) { + + for (i = 0; i < N; i++) { + for (j = 0; j <= i; j++) { + BASE temp_real = 0.0; + BASE temp_imag = 0.0; + for (k = 0; k < K; k++) { + const BASE Aik_real = CONST_REAL(A, i * lda + k); + const BASE Aik_imag = CONST_IMAG(A, i * lda + k); + const BASE Ajk_real = CONST_REAL(A, j * lda + k); + const BASE Ajk_imag = -CONST_IMAG(A, j * lda + k); + temp_real += Aik_real * Ajk_real - Aik_imag * Ajk_imag; + temp_imag += Aik_real * Ajk_imag + Aik_imag * Ajk_real; + } + REAL(C, i * ldc + j) += alpha * temp_real; + IMAG(C, i * ldc + j) += alpha * temp_imag; + } + } + + } else if (uplo == CblasLower && trans == CblasConjTrans) { + + for (i = 0; i < N; i++) { + for (j = 0; j <= i; j++) { + BASE temp_real = 0.0; + BASE temp_imag = 0.0; + for (k = 0; k < K; k++) { + const BASE Aki_real = CONST_REAL(A, k * lda + i); + const BASE Aki_imag = -CONST_IMAG(A, k * lda + i); + const BASE Akj_real = CONST_REAL(A, k * lda + j); + const BASE Akj_imag = CONST_IMAG(A, k * lda + j); + temp_real += Aki_real * Akj_real - Aki_imag * Akj_imag; + temp_imag += Aki_real * Akj_imag + Aki_imag * Akj_real; + } + REAL(C, i * ldc + j) += alpha * temp_real; + IMAG(C, i * ldc + j) += alpha * temp_imag; + } + } + + } else { + BLAS_ERROR("unrecognized operation"); + } +} diff --git a/gsl-2.5/cblas/source_hpmv.h b/gsl-2.5/cblas/source_hpmv.h new file mode 100644 index 00000000..cdee41c5 --- /dev/null +++ b/gsl-2.5/cblas/source_hpmv.h @@ -0,0 +1,142 @@ +/* blas/source_hpmv.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + INDEX i, j; + const int conj = (order == CblasColMajor) ? -1 : 1; + + CHECK_ARGS10(CZ_HPMV,order,Uplo,N,alpha,Ap,X,incX,beta,Y,incY); + + { + const BASE alpha_real = CONST_REAL0(alpha); + const BASE alpha_imag = CONST_IMAG0(alpha); + + const BASE beta_real = CONST_REAL0(beta); + const BASE beta_imag = CONST_IMAG0(beta); + + if ((alpha_real == 0.0 && alpha_imag == 0.0) + && (beta_real == 1.0 && beta_imag == 0.0)) + return; + + /* form y := beta*y */ + if (beta_real == 0.0 && beta_imag == 0.0) { + INDEX iy = OFFSET(N, incY); + for (i = 0; i < N; i++) { + REAL(Y, iy) = 0.0; + IMAG(Y, iy) = 0.0; + iy += incY; + } + } else if (!(beta_real == 1.0 && beta_imag == 0.0)) { + INDEX iy = OFFSET(N, incY); + for (i = 0; i < N; i++) { + const BASE y_real = REAL(Y, iy); + const BASE y_imag = IMAG(Y, iy); + const BASE tmpR = y_real * beta_real - y_imag * beta_imag; + const BASE tmpI = y_real * beta_imag + y_imag * beta_real; + REAL(Y, iy) = tmpR; + IMAG(Y, iy) = tmpI; + iy += incY; + } + } + + if (alpha_real == 0.0 && alpha_imag == 0.0) + return; + + /* form y := alpha*A*x + y */ + + if ((order == CblasRowMajor && Uplo == CblasUpper) + || (order == CblasColMajor && Uplo == CblasLower)) { + + INDEX ix = OFFSET(N, incX); + INDEX iy = OFFSET(N, incY); + for (i = 0; i < N; i++) { + BASE x_real = CONST_REAL(X, ix); + BASE x_imag = CONST_IMAG(X, ix); + BASE temp1_real = alpha_real * x_real - alpha_imag * x_imag; + BASE temp1_imag = alpha_real * x_imag + alpha_imag * x_real; + BASE temp2_real = 0.0; + BASE temp2_imag = 0.0; + const INDEX j_min = i + 1; + const INDEX j_max = N; + INDEX jx = OFFSET(N, incX) + j_min * incX; + INDEX jy = OFFSET(N, incY) + j_min * incY; + BASE Aii_real = CONST_REAL(Ap, TPUP(N, i, i)); + /* Aii_imag is zero */ + REAL(Y, iy) += temp1_real * Aii_real; + IMAG(Y, iy) += temp1_imag * Aii_real; + for (j = j_min; j < j_max; j++) { + BASE Aij_real = CONST_REAL(Ap, TPUP(N, i, j)); + BASE Aij_imag = conj * CONST_IMAG(Ap, TPUP(N, i, j)); + REAL(Y, jy) += temp1_real * Aij_real - temp1_imag * (-Aij_imag); + IMAG(Y, jy) += temp1_real * (-Aij_imag) + temp1_imag * Aij_real; + x_real = CONST_REAL(X, jx); + x_imag = CONST_IMAG(X, jx); + temp2_real += x_real * Aij_real - x_imag * Aij_imag; + temp2_imag += x_real * Aij_imag + x_imag * Aij_real; + jx += incX; + jy += incY; + } + REAL(Y, iy) += alpha_real * temp2_real - alpha_imag * temp2_imag; + IMAG(Y, iy) += alpha_real * temp2_imag + alpha_imag * temp2_real; + ix += incX; + iy += incY; + } + } else if ((order == CblasRowMajor && Uplo == CblasLower) + || (order == CblasColMajor && Uplo == CblasUpper)) { + + INDEX ix = OFFSET(N, incX); + INDEX iy = OFFSET(N, incY); + for (i = 0; i < N; i++) { + BASE x_real = CONST_REAL(X, ix); + BASE x_imag = CONST_IMAG(X, ix); + BASE temp1_real = alpha_real * x_real - alpha_imag * x_imag; + BASE temp1_imag = alpha_real * x_imag + alpha_imag * x_real; + BASE temp2_real = 0.0; + BASE temp2_imag = 0.0; + const INDEX j_min = 0; + const INDEX j_max = i; + INDEX jx = OFFSET(N, incX) + j_min * incX; + INDEX jy = OFFSET(N, incY) + j_min * incY; + BASE Aii_real = CONST_REAL(Ap, TPLO(N, i, i)); + /* Aii_imag is zero */ + REAL(Y, iy) += temp1_real * Aii_real; + IMAG(Y, iy) += temp1_imag * Aii_real; + for (j = j_min; j < j_max; j++) { + BASE Aij_real = CONST_REAL(Ap, TPLO(N, i, j)); + BASE Aij_imag = conj * CONST_IMAG(Ap, TPLO(N, i, j)); + REAL(Y, jy) += temp1_real * Aij_real - temp1_imag * (-Aij_imag); + IMAG(Y, jy) += temp1_real * (-Aij_imag) + temp1_imag * Aij_real; + x_real = CONST_REAL(X, jx); + x_imag = CONST_IMAG(X, jx); + temp2_real += x_real * Aij_real - x_imag * Aij_imag; + temp2_imag += x_real * Aij_imag + x_imag * Aij_real; + jx += incX; + jy += incY; + } + REAL(Y, iy) += alpha_real * temp2_real - alpha_imag * temp2_imag; + IMAG(Y, iy) += alpha_real * temp2_imag + alpha_imag * temp2_real; + ix += incX; + iy += incY; + } + + } else { + BLAS_ERROR("unrecognized operation"); + } + } +} diff --git a/gsl-2.5/cblas/source_hpr.h b/gsl-2.5/cblas/source_hpr.h new file mode 100644 index 00000000..8b8b6d56 --- /dev/null +++ b/gsl-2.5/cblas/source_hpr.h @@ -0,0 +1,82 @@ +/* blas/source_hpr.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + INDEX i, j; + const int conj = (order == CblasColMajor) ? -1 : 1; + + CHECK_ARGS7(CZ_HPR,order,Uplo,N,alpha,X,incX,A); + + if (alpha == 0.0) + return; + + if ((order == CblasRowMajor && Uplo == CblasUpper) + || (order == CblasColMajor && Uplo == CblasLower)) { + INDEX ix = OFFSET(N, incX); + for (i = 0; i < N; i++) { + const BASE tmp_real = alpha * CONST_REAL(X, ix); + const BASE tmp_imag = alpha * conj * CONST_IMAG(X, ix); + INDEX jx = ix; + + { + const BASE X_real = CONST_REAL(X, jx); + const BASE X_imag = -conj * CONST_IMAG(X, jx); + REAL(Ap, TPUP(N, i, i)) += X_real * tmp_real - X_imag * tmp_imag; + IMAG(Ap, TPUP(N, i, i)) = 0; + jx += incX; + } + + for (j = i + 1; j < N; j++) { + const BASE X_real = CONST_REAL(X, jx); + const BASE X_imag = -conj * CONST_IMAG(X, jx); + REAL(Ap, TPUP(N, i, j)) += X_real * tmp_real - X_imag * tmp_imag; + IMAG(Ap, TPUP(N, i, j)) += X_imag * tmp_real + X_real * tmp_imag; + jx += incX; + } + ix += incX; + } + } else if ((order == CblasRowMajor && Uplo == CblasLower) + || (order == CblasColMajor && Uplo == CblasUpper)) { + INDEX ix = OFFSET(N, incX); + for (i = 0; i < N; i++) { + const BASE tmp_real = alpha * CONST_REAL(X, ix); + const BASE tmp_imag = alpha * conj * CONST_IMAG(X, ix); + INDEX jx = OFFSET(N, incX); + for (j = 0; j < i; j++) { + const BASE X_real = CONST_REAL(X, jx); + const BASE X_imag = -conj * CONST_IMAG(X, jx); + REAL(Ap, TPLO(N, i, j)) += X_real * tmp_real - X_imag * tmp_imag; + IMAG(Ap, TPLO(N, i, j)) += X_imag * tmp_real + X_real * tmp_imag; + jx += incX; + } + + { + const BASE X_real = CONST_REAL(X, jx); + const BASE X_imag = -conj * CONST_IMAG(X, jx); + REAL(Ap, TPLO(N, i, i)) += X_real * tmp_real - X_imag * tmp_imag; + IMAG(Ap, TPLO(N, i, i)) = 0; + jx += incX; + } + + ix += incX; + } + } else { + BLAS_ERROR("unrecognized operation"); + } +} diff --git a/gsl-2.5/cblas/source_hpr2.h b/gsl-2.5/cblas/source_hpr2.h new file mode 100644 index 00000000..850f5fa3 --- /dev/null +++ b/gsl-2.5/cblas/source_hpr2.h @@ -0,0 +1,119 @@ +/* blas/source_hpr2.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + INDEX i, j; + const int conj = (order == CblasColMajor) ? -1 : 1; + + CHECK_ARGS9(CZ_HPR2,order,Uplo,N,alpha,X,incX,Y,incY,Ap); + + { + const BASE alpha_real = CONST_REAL0(alpha); + const BASE alpha_imag = CONST_IMAG0(alpha); + + if (alpha_real == 0.0 && alpha_imag == 0.0) + return; + + if ((order == CblasRowMajor && Uplo == CblasUpper) + || (order == CblasColMajor && Uplo == CblasLower)) { + INDEX ix = OFFSET(N, incX); + INDEX iy = OFFSET(N, incY); + for (i = 0; i < N; i++) { + const BASE Xi_real = CONST_REAL(X, ix); + const BASE Xi_imag = CONST_IMAG(X, ix); + /* tmp1 = alpha Xi */ + const BASE tmp1_real = alpha_real * Xi_real - alpha_imag * Xi_imag; + const BASE tmp1_imag = alpha_imag * Xi_real + alpha_real * Xi_imag; + + const BASE Yi_real = CONST_REAL(Y, iy); + const BASE Yi_imag = CONST_IMAG(Y, iy); + /* tmp2 = conj(alpha) Yi */ + const BASE tmp2_real = alpha_real * Yi_real + alpha_imag * Yi_imag; + const BASE tmp2_imag = -alpha_imag * Yi_real + alpha_real * Yi_imag; + + INDEX jx = ix + incX; + INDEX jy = iy + incY; + + /* Aij = alpha*Xi*conj(Yj) + conj(alpha)*Yi*conj(Xj) */ + + REAL(Ap, TPUP(N, i, i)) += 2 * (tmp1_real * Yi_real + tmp1_imag * Yi_imag); + IMAG(Ap, TPUP(N, i, i)) = 0; + + for (j = i + 1; j < N; j++) { + const BASE Xj_real = CONST_REAL(X, jx); + const BASE Xj_imag = CONST_IMAG(X, jx); + const BASE Yj_real = CONST_REAL(Y, jy); + const BASE Yj_imag = CONST_IMAG(Y, jy); + REAL(Ap, TPUP(N, i, j)) += ((tmp1_real * Yj_real + tmp1_imag * Yj_imag) + + (tmp2_real * Xj_real + tmp2_imag * Xj_imag)); + IMAG(Ap, TPUP(N, i, j)) += + conj * ((tmp1_imag * Yj_real - tmp1_real * Yj_imag) + + (tmp2_imag * Xj_real - tmp2_real * Xj_imag)); + jx += incX; + jy += incY; + } + ix += incX; + iy += incY; + } + } else if ((order == CblasRowMajor && Uplo == CblasLower) + || (order == CblasColMajor && Uplo == CblasUpper)) { + + INDEX ix = OFFSET(N, incX); + INDEX iy = OFFSET(N, incY); + for (i = 0; i < N; i++) { + const BASE Xi_real = CONST_REAL(X, ix); + const BASE Xi_imag = CONST_IMAG(X, ix); + const BASE tmp1_real = alpha_real * Xi_real - alpha_imag * Xi_imag; + const BASE tmp1_imag = alpha_imag * Xi_real + alpha_real * Xi_imag; + + const BASE Yi_real = CONST_REAL(Y, iy); + const BASE Yi_imag = CONST_IMAG(Y, iy); + const BASE tmp2_real = alpha_real * Yi_real + alpha_imag * Yi_imag; + const BASE tmp2_imag = -alpha_imag * Yi_real + alpha_real * Yi_imag; + + INDEX jx = OFFSET(N, incX); + INDEX jy = OFFSET(N, incY); + + /* Aij = alpha*Xi*conj(Yj) + conj(alpha)*Yi*conj(Xj) */ + + for (j = 0; j < i; j++) { + const BASE Xj_real = CONST_REAL(X, jx); + const BASE Xj_imag = CONST_IMAG(X, jx); + const BASE Yj_real = CONST_REAL(Y, jy); + const BASE Yj_imag = CONST_IMAG(Y, jy); + REAL(Ap, TPLO(N, i, j)) += ((tmp1_real * Yj_real + tmp1_imag * Yj_imag) + + (tmp2_real * Xj_real + tmp2_imag * Xj_imag)); + IMAG(Ap, TPLO(N, i, j)) += + conj * ((tmp1_imag * Yj_real - tmp1_real * Yj_imag) + + (tmp2_imag * Xj_real - tmp2_real * Xj_imag)); + jx += incX; + jy += incY; + } + + REAL(Ap, TPLO(N, i, i)) += 2 * (tmp1_real * Yi_real + tmp1_imag * Yi_imag); + IMAG(Ap, TPLO(N, i, i)) = 0; + + ix += incX; + iy += incY; + } + } else { + BLAS_ERROR("unrecognized operation"); + } + } +} diff --git a/gsl-2.5/cblas/source_iamax_c.h b/gsl-2.5/cblas/source_iamax_c.h new file mode 100644 index 00000000..e4566d47 --- /dev/null +++ b/gsl-2.5/cblas/source_iamax_c.h @@ -0,0 +1,41 @@ +/* blas/source_iamax_c.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + BASE max = 0.0; + INDEX ix = 0; + INDEX i; + CBLAS_INDEX result = 0; + + if (incX <= 0) { + return 0; + } + + for (i = 0; i < N; i++) { + const BASE a = fabs(CONST_REAL(X, ix)) + fabs(CONST_IMAG(X, ix)); + + if (a > max) { + max = a; + result = i; + } + ix += incX; + } + + return result; +} diff --git a/gsl-2.5/cblas/source_iamax_r.h b/gsl-2.5/cblas/source_iamax_r.h new file mode 100644 index 00000000..19bed3a3 --- /dev/null +++ b/gsl-2.5/cblas/source_iamax_r.h @@ -0,0 +1,39 @@ +/* blas/source_iamax_r.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + BASE max = 0.0; + INDEX ix = 0; + INDEX i; + CBLAS_INDEX result = 0; + + if (incX <= 0) { + return 0; + } + + for (i = 0; i < N; i++) { + if (fabs(X[ix]) > max) { + max = fabs(X[ix]); + result = i; + } + ix += incX; + } + + return result; +} diff --git a/gsl-2.5/cblas/source_nrm2_c.h b/gsl-2.5/cblas/source_nrm2_c.h new file mode 100644 index 00000000..9ce29b21 --- /dev/null +++ b/gsl-2.5/cblas/source_nrm2_c.h @@ -0,0 +1,60 @@ +/* blas/source_nrm2_c.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + BASE scale = 0.0; + BASE ssq = 1.0; + INDEX i; + INDEX ix = 0; + + if (N == 0 || incX < 1) { + return 0; + } + + for (i = 0; i < N; i++) { + const BASE x = CONST_REAL(X, ix); + const BASE y = CONST_IMAG(X, ix); + + if (x != 0.0) { + const BASE ax = fabs(x); + + if (scale < ax) { + ssq = 1.0 + ssq * (scale / ax) * (scale / ax); + scale = ax; + } else { + ssq += (ax / scale) * (ax / scale); + } + } + + if (y != 0.0) { + const BASE ay = fabs(y); + + if (scale < ay) { + ssq = 1.0 + ssq * (scale / ay) * (scale / ay); + scale = ay; + } else { + ssq += (ay / scale) * (ay / scale); + } + } + + ix += incX; + } + + return scale * sqrt(ssq); +} diff --git a/gsl-2.5/cblas/source_nrm2_r.h b/gsl-2.5/cblas/source_nrm2_r.h new file mode 100644 index 00000000..b97b9b39 --- /dev/null +++ b/gsl-2.5/cblas/source_nrm2_r.h @@ -0,0 +1,50 @@ +/* blas/source_nrm2_r.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + BASE scale = 0.0; + BASE ssq = 1.0; + INDEX i; + INDEX ix = 0; + + if (N <= 0 || incX <= 0) { + return 0; + } else if (N == 1) { + return fabs(X[0]); + } + + for (i = 0; i < N; i++) { + const BASE x = X[ix]; + + if (x != 0.0) { + const BASE ax = fabs(x); + + if (scale < ax) { + ssq = 1.0 + ssq * (scale / ax) * (scale / ax); + scale = ax; + } else { + ssq += (ax / scale) * (ax / scale); + } + } + + ix += incX; + } + + return scale * sqrt(ssq); +} diff --git a/gsl-2.5/cblas/source_rot.h b/gsl-2.5/cblas/source_rot.h new file mode 100644 index 00000000..6b3f40bd --- /dev/null +++ b/gsl-2.5/cblas/source_rot.h @@ -0,0 +1,32 @@ +/* blas/source_rot.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + INDEX i; + INDEX ix = OFFSET(N, incX); + INDEX iy = OFFSET(N, incY); + for (i = 0; i < N; i++) { + const BASE x = X[ix]; + const BASE y = Y[iy]; + X[ix] = c * x + s * y; + Y[iy] = -s * x + c * y; + ix += incX; + iy += incY; + } +} diff --git a/gsl-2.5/cblas/source_rotg.h b/gsl-2.5/cblas/source_rotg.h new file mode 100644 index 00000000..05026998 --- /dev/null +++ b/gsl-2.5/cblas/source_rotg.h @@ -0,0 +1,46 @@ +/* blas/source_rotg.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + const BASE roe = (fabs(*a) > fabs(*b) ? *a : *b); + const BASE scale = fabs(*a) + fabs(*b); + BASE r, z; + + if (scale != 0.0) { + const BASE aos = *a / scale; + const BASE bos = *b / scale; + r = scale * sqrt(aos * aos + bos * bos); + r = GSL_SIGN(roe) * r; + *c = *a / r; + *s = *b / r; + z = 1.0; + if (fabs(*a) > fabs(*b)) + z = *s; + if (fabs(*b) >= fabs(*a) && *c != 0.0) + z = 1.0 / (*c); + } else { + *c = 1.0; + *s = 0.0; + r = 0.0; + z = 0.0; + } + + *a = r; + *b = z; +} diff --git a/gsl-2.5/cblas/source_rotm.h b/gsl-2.5/cblas/source_rotm.h new file mode 100644 index 00000000..bb14a2c9 --- /dev/null +++ b/gsl-2.5/cblas/source_rotm.h @@ -0,0 +1,58 @@ +/* blas/source_rotm.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + INDEX n; + INDEX i = OFFSET(N, incX); + INDEX j = OFFSET(N, incY); + + BASE h11, h21, h12, h22; + + if (P[0] == -1.0) { + h11 = P[1]; + h21 = P[2]; + h12 = P[3]; + h22 = P[4]; + } else if (P[0] == 0.0) { + h11 = 1.0; + h21 = P[2]; + h12 = P[3]; + h22 = 1.0; + } else if (P[0] == 1.0) { + h11 = P[1]; + h21 = -1.0; + h12 = 1.0; + h22 = P[4]; + } else if (P[0] == -2.0) { + return; + } else { + BLAS_ERROR("unrecognized value of P[0]"); + return; + } + + for (n = 0; n < N; n++) { + const BASE w = X[i]; + const BASE z = Y[j]; + X[i] = h11 * w + h12 * z; + Y[j] = h21 * w + h22 * z; + i += incX; + j += incY; + } + +} diff --git a/gsl-2.5/cblas/source_rotmg.h b/gsl-2.5/cblas/source_rotmg.h new file mode 100644 index 00000000..dd1f9ea5 --- /dev/null +++ b/gsl-2.5/cblas/source_rotmg.h @@ -0,0 +1,162 @@ +/* blas/source_rotmg.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + const BASE G = 4096.0, G2 = G * G; + BASE D1 = *d1, D2 = *d2, x = *b1, y = b2; + BASE h11, h12, h21, h22, u; + + BASE c, s; + + /* case of d1 < 0, appendix A, second to last paragraph */ + + if (D1 < 0.0) { + P[0] = -1; + P[1] = 0; + P[2] = 0; + P[3] = 0; + P[4] = 0; + *d1 = 0; + *d2 = 0; + *b1 = 0; + return; + } + + if (D2 * y == 0.0) { + P[0] = -2; /* case of H = I, page 315 */ + return; + } + + c = fabs(D1 * x * x); + s = fabs(D2 * y * y); + + if (c > s) { + /* case of equation A6 */ + + P[0] = 0.0; + + h11 = 1; + h12 = (D2 * y) / (D1 * x); + h21 = -y / x; + h22 = 1; + + u = 1 - h21 * h12; + + if (u <= 0.0) { /* the case u <= 0 is rejected */ + P[0] = -1; + P[1] = 0; + P[2] = 0; + P[3] = 0; + P[4] = 0; + *d1 = 0; + *d2 = 0; + *b1 = 0; + return; + } + + D1 /= u; + D2 /= u; + x *= u; + } else { + /* case of equation A7 */ + + if (D2 * y * y < 0.0) { + P[0] = -1; + P[1] = 0; + P[2] = 0; + P[3] = 0; + P[4] = 0; + *d1 = 0; + *d2 = 0; + *b1 = 0; + return; + } + + P[0] = 1; + + h11 = (D1 * x) / (D2 * y); + h12 = 1; + h21 = -1; + h22 = x / y; + + u = 1 + h11 * h22; + + D1 /= u; + D2 /= u; + + { + BASE tmp = D2; + D2 = D1; + D1 = tmp; + } + + x = y * u; + } + + /* rescale D1 to range [1/G2,G2] */ + + while (D1 <= 1.0 / G2 && D1 != 0.0) { + P[0] = -1; + D1 *= G2; + x /= G; + h11 /= G; + h12 /= G; + } + + while (D1 >= G2) { + P[0] = -1; + D1 /= G2; + x *= G; + h11 *= G; + h12 *= G; + } + + /* rescale D2 to range [1/G2,G2] */ + + while (fabs(D2) <= 1.0 / G2 && D2 != 0.0) { + P[0] = -1; + D2 *= G2; + h21 /= G; + h22 /= G; + } + + while (fabs(D2) >= G2) { + P[0] = -1; + D2 /= G2; + h21 *= G; + h22 *= G; + } + + *d1 = D1; + *d2 = D2; + *b1 = x; + + if (P[0] == -1.0) { + P[1] = h11; + P[2] = h21; + P[3] = h12; + P[4] = h22; + } else if (P[0] == 0.0) { + P[2] = h21; + P[3] = h12; + } else if (P[0] == 1.0) { + P[1] = h11; + P[4] = h22; + } +} diff --git a/gsl-2.5/cblas/source_sbmv.h b/gsl-2.5/cblas/source_sbmv.h new file mode 100644 index 00000000..3360afe2 --- /dev/null +++ b/gsl-2.5/cblas/source_sbmv.h @@ -0,0 +1,102 @@ +/* blas/source_sbmv.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + INDEX i, j; + + CHECK_ARGS12(SD_SBMV,order,Uplo,N,K,alpha,A,lda,X,incX,beta,Y,incY); + + if (N == 0) + return; + + if (alpha == 0.0 && beta == 1.0) + return; + + /* form y := beta*y */ + if (beta == 0.0) { + INDEX iy = OFFSET(N, incY); + for (i = 0; i < N; i++) { + Y[iy] = 0.0; + iy += incY; + } + } else if (beta != 1.0) { + INDEX iy = OFFSET(N, incY); + for (i = 0; i < N; i++) { + Y[iy] *= beta; + iy += incY; + } + } + + if (alpha == 0.0) + return; + + /* form y := alpha*A*x + y */ + + if ((order == CblasRowMajor && Uplo == CblasUpper) + || (order == CblasColMajor && Uplo == CblasLower)) { + INDEX ix = OFFSET(N, incX); + INDEX iy = OFFSET(N, incY); + + for (i = 0; i < N; i++) { + BASE tmp1 = alpha * X[ix]; + BASE tmp2 = 0.0; + const INDEX j_min = i + 1; + const INDEX j_max = GSL_MIN(N, i + K + 1); + INDEX jx = OFFSET(N, incX) + j_min * incX; + INDEX jy = OFFSET(N, incY) + j_min * incY; + Y[iy] += tmp1 * A[0 + i * lda]; + for (j = j_min; j < j_max; j++) { + BASE Aij = A[(j - i) + i * lda]; + Y[jy] += tmp1 * Aij; + tmp2 += Aij * X[jx]; + jx += incX; + jy += incY; + } + Y[iy] += alpha * tmp2; + ix += incX; + iy += incY; + } + } else if ((order == CblasRowMajor && Uplo == CblasLower) + || (order == CblasColMajor && Uplo == CblasUpper)) { + INDEX ix = OFFSET(N, incX); + INDEX iy = OFFSET(N, incY); + + for (i = 0; i < N; i++) { + BASE tmp1 = alpha * X[ix]; + BASE tmp2 = 0.0; + const INDEX j_min = (i > K) ? i - K : 0; + const INDEX j_max = i; + INDEX jx = OFFSET(N, incX) + j_min * incX; + INDEX jy = OFFSET(N, incY) + j_min * incY; + for (j = j_min; j < j_max; j++) { + BASE Aij = A[(K - i + j) + i * lda]; + Y[jy] += tmp1 * Aij; + tmp2 += Aij * X[jx]; + jx += incX; + jy += incY; + } + Y[iy] += tmp1 * A[K + i * lda] + alpha * tmp2; + ix += incX; + iy += incY; + } + } else { + BLAS_ERROR("unrecognized operation"); + } + +} diff --git a/gsl-2.5/cblas/source_scal_c.h b/gsl-2.5/cblas/source_scal_c.h new file mode 100644 index 00000000..b386d328 --- /dev/null +++ b/gsl-2.5/cblas/source_scal_c.h @@ -0,0 +1,37 @@ +/* blas/source_scal_c.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + INDEX i; + INDEX ix = 0; + const BASE alpha_real = CONST_REAL0(alpha); + const BASE alpha_imag = CONST_IMAG0(alpha); + + if (incX <= 0) { + return; + } + + for (i = 0; i < N; i++) { + const BASE x_real = REAL(X, ix); + const BASE x_imag = IMAG(X, ix); + REAL(X, ix) = x_real * alpha_real - x_imag * alpha_imag; + IMAG(X, ix) = x_real * alpha_imag + x_imag * alpha_real; + ix += incX; + } +} diff --git a/gsl-2.5/cblas/source_scal_c_s.h b/gsl-2.5/cblas/source_scal_c_s.h new file mode 100644 index 00000000..8cecb735 --- /dev/null +++ b/gsl-2.5/cblas/source_scal_c_s.h @@ -0,0 +1,33 @@ +/* blas/source_scal_c_s.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + INDEX i; + INDEX ix = 0; + + if (incX <= 0) { + return; + } + + for (i = 0; i < N; i++) { + REAL(X, ix) *= alpha; + IMAG(X, ix) *= alpha; + ix += incX; + } +} diff --git a/gsl-2.5/cblas/source_scal_r.h b/gsl-2.5/cblas/source_scal_r.h new file mode 100644 index 00000000..81d23007 --- /dev/null +++ b/gsl-2.5/cblas/source_scal_r.h @@ -0,0 +1,32 @@ +/* blas/source_scal_r.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + INDEX i; + INDEX ix = 0; + + if (incX <= 0) { + return; + } + + for (i = 0; i < N; i++) { + X[ix] *= alpha; + ix += incX; + } +} diff --git a/gsl-2.5/cblas/source_spmv.h b/gsl-2.5/cblas/source_spmv.h new file mode 100644 index 00000000..85301e6a --- /dev/null +++ b/gsl-2.5/cblas/source_spmv.h @@ -0,0 +1,102 @@ +/* blas/source_spmv.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + INDEX i, j; + + CHECK_ARGS10(SD_SPMV,order,Uplo,N,alpha,Ap,X,incX,beta,Y,incY); + + if (alpha == 0.0 && beta == 1.0) + return; + + /* form y := beta*y */ + if (beta == 0.0) { + INDEX iy = OFFSET(N, incY); + for (i = 0; i < N; i++) { + Y[iy] = 0.0; + iy += incY; + } + } else if (beta != 1.0) { + INDEX iy = OFFSET(N, incY); + for (i = 0; i < N; i++) { + Y[iy] *= beta; + iy += incY; + } + } + + if (alpha == 0.0) + return; + + /* form y := alpha*A*x + y */ + + if ((order == CblasRowMajor && Uplo == CblasUpper) + || (order == CblasColMajor && Uplo == CblasLower)) { + INDEX ix = OFFSET(N, incX); + INDEX iy = OFFSET(N, incY); + for (i = 0; i < N; i++) { + BASE tmp1 = alpha * X[ix]; + BASE tmp2 = 0.0; + const INDEX j_min = i + 1; + const INDEX j_max = N; + INDEX jx = OFFSET(N, incX) + j_min * incX; + INDEX jy = OFFSET(N, incY) + j_min * incY; + + Y[iy] += tmp1 * Ap[TPUP(N, i, i)]; + + for (j = j_min; j < j_max; j++) { + const BASE apk = Ap[TPUP(N, i, j)]; + Y[jy] += tmp1 * apk; + tmp2 += apk * X[jx]; + jy += incY; + jx += incX; + } + Y[iy] += alpha * tmp2; + ix += incX; + iy += incY; + } + } else if ((order == CblasRowMajor && Uplo == CblasLower) + || (order == CblasColMajor && Uplo == CblasUpper)) { + INDEX ix = OFFSET(N, incX); + INDEX iy = OFFSET(N, incY); + for (i = 0; i < N; i++) { + BASE tmp1 = alpha * X[ix]; + BASE tmp2 = 0.0; + + const INDEX j_min = 0; + const INDEX j_max = i; + INDEX jx = OFFSET(N, incX) + j_min * incX; + INDEX jy = OFFSET(N, incY) + j_min * incY; + + Y[iy] += tmp1 * Ap[TPLO(N, i, i)]; + + for (j = j_min; j < j_max; j++) { + const BASE apk = Ap[TPLO(N, i, j)]; + Y[jy] += tmp1 * apk; + tmp2 += apk * X[jx]; + jy += incY; + jx += incX; + } + Y[iy] += alpha * tmp2; + ix += incX; + iy += incY; + } + } else { + BLAS_ERROR("unrecognized operation"); + } +} diff --git a/gsl-2.5/cblas/source_spr.h b/gsl-2.5/cblas/source_spr.h new file mode 100644 index 00000000..65742fcd --- /dev/null +++ b/gsl-2.5/cblas/source_spr.h @@ -0,0 +1,58 @@ +/* blas/source_spr.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + INDEX i, j; + + CHECK_ARGS7(SD_SPR,order,Uplo,N,alpha,X,incX,Ap); + + if (N == 0) + return; + + if (alpha == 0.0) + return; + + if ((order == CblasRowMajor && Uplo == CblasUpper) + || (order == CblasColMajor && Uplo == CblasLower)) { + INDEX ix = OFFSET(N, incX); + for (i = 0; i < N; i++) { + const BASE tmp = alpha * X[ix]; + INDEX jx = ix; + for (j = i; j < N; j++) { + Ap[TPUP(N, i, j)] += X[jx] * tmp; + jx += incX; + } + ix += incX; + } + } else if ((order == CblasRowMajor && Uplo == CblasLower) + || (order == CblasColMajor && Uplo == CblasUpper)) { + INDEX ix = OFFSET(N, incX); + for (i = 0; i < N; i++) { + const BASE tmp = alpha * X[ix]; + INDEX jx = OFFSET(N, incX); + for (j = 0; j <= i; j++) { + Ap[TPLO(N, i, j)] += X[jx] * tmp; + jx += incX; + } + ix += incX; + } + } else { + BLAS_ERROR("unrecognized operation"); + } +} diff --git a/gsl-2.5/cblas/source_spr2.h b/gsl-2.5/cblas/source_spr2.h new file mode 100644 index 00000000..c92832a3 --- /dev/null +++ b/gsl-2.5/cblas/source_spr2.h @@ -0,0 +1,68 @@ +/* blas/source_spr2.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + INDEX i, j; + + CHECK_ARGS9(SD_SPR2,order,Uplo,N,alpha,X,incX,Y,incY,A); + + if (N == 0) + return; + + if (alpha == 0.0) + return; + + if ((order == CblasRowMajor && Uplo == CblasUpper) + || (order == CblasColMajor && Uplo == CblasLower)) { + INDEX ix = OFFSET(N, incX); + INDEX iy = OFFSET(N, incY); + for (i = 0; i < N; i++) { + const BASE tmp1 = alpha * X[ix]; + const BASE tmp2 = alpha * Y[iy]; + INDEX jx = ix; + INDEX jy = iy; + for (j = i; j < N; j++) { + Ap[TPUP(N, i, j)] += tmp1 * Y[jy] + tmp2 * X[jx]; + jx += incX; + jy += incY; + } + ix += incX; + iy += incY; + } + } else if ((order == CblasRowMajor && Uplo == CblasLower) + || (order == CblasColMajor && Uplo == CblasUpper)) { + INDEX ix = OFFSET(N, incX); + INDEX iy = OFFSET(N, incY); + for (i = 0; i < N; i++) { + const BASE tmp1 = alpha * X[ix]; + const BASE tmp2 = alpha * Y[iy]; + INDEX jx = OFFSET(N, incX); + INDEX jy = OFFSET(N, incY); + for (j = 0; j <= i; j++) { + Ap[TPLO(N, i, j)] += tmp1 * Y[jy] + tmp2 * X[jx]; + jx += incX; + jy += incY; + } + ix += incX; + iy += incY; + } + } else { + BLAS_ERROR("unrecognized operation"); + } +} diff --git a/gsl-2.5/cblas/source_swap_c.h b/gsl-2.5/cblas/source_swap_c.h new file mode 100644 index 00000000..3676d25c --- /dev/null +++ b/gsl-2.5/cblas/source_swap_c.h @@ -0,0 +1,35 @@ +/* blas/source_swap_c.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + INDEX i; + INDEX ix = OFFSET(N, incX); + INDEX iy = OFFSET(N, incY); + + for (i = 0; i < N; i++) { + const BASE tmp_real = REAL(X, ix); + const BASE tmp_imag = IMAG(X, ix); + REAL(X, ix) = REAL(Y, iy); + IMAG(X, ix) = IMAG(Y, iy); + REAL(Y, iy) = tmp_real; + IMAG(Y, iy) = tmp_imag; + ix += incX; + iy += incY; + } +} diff --git a/gsl-2.5/cblas/source_swap_r.h b/gsl-2.5/cblas/source_swap_r.h new file mode 100644 index 00000000..ae522159 --- /dev/null +++ b/gsl-2.5/cblas/source_swap_r.h @@ -0,0 +1,31 @@ +/* blas/source_swap_r.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + INDEX i; + INDEX ix = OFFSET(N, incX); + INDEX iy = OFFSET(N, incY); + for (i = 0; i < N; i++) { + const BASE tmp = X[ix]; + X[ix] = Y[iy]; + Y[iy] = tmp; + ix += incX; + iy += incY; + } +} diff --git a/gsl-2.5/cblas/source_symm_c.h b/gsl-2.5/cblas/source_symm_c.h new file mode 100644 index 00000000..8b1804ae --- /dev/null +++ b/gsl-2.5/cblas/source_symm_c.h @@ -0,0 +1,207 @@ +/* blas/source_symm_c.h + * + * Copyright (C) 2001, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + INDEX i, j, k; + INDEX n1, n2; + int uplo, side; + + CHECK_ARGS13(SYMM,Order,Side,Uplo,M,N,alpha,A,lda,B,ldb,beta,C,ldc); + + { + const BASE alpha_real = CONST_REAL0(alpha); + const BASE alpha_imag = CONST_IMAG0(alpha); + const BASE beta_real = CONST_REAL0(beta); + const BASE beta_imag = CONST_IMAG0(beta); + + if ((alpha_real == 0.0 && alpha_imag == 0.0) + && (beta_real == 1.0 && beta_imag == 0.0)) + return; + + if (Order == CblasRowMajor) { + n1 = M; + n2 = N; + uplo = Uplo; + side = Side; + } else { + n1 = N; + n2 = M; + uplo = (Uplo == CblasUpper) ? CblasLower : CblasUpper; + side = (Side == CblasLeft) ? CblasRight : CblasLeft; + } + + /* form y := beta*y */ + if (beta_real == 0.0 && beta_imag == 0.0) { + for (i = 0; i < n1; i++) { + for (j = 0; j < n2; j++) { + REAL(C, ldc * i + j) = 0.0; + IMAG(C, ldc * i + j) = 0.0; + } + } + } else if (!(beta_real == 1.0 && beta_imag == 0.0)) { + for (i = 0; i < n1; i++) { + for (j = 0; j < n2; j++) { + const BASE Cij_real = REAL(C, ldc * i + j); + const BASE Cij_imag = IMAG(C, ldc * i + j); + REAL(C, ldc * i + j) = beta_real * Cij_real - beta_imag * Cij_imag; + IMAG(C, ldc * i + j) = beta_real * Cij_imag + beta_imag * Cij_real; + } + } + } + + if (alpha_real == 0.0 && alpha_imag == 0.0) + return; + + if (side == CblasLeft && uplo == CblasUpper) { + + /* form C := alpha*A*B + C */ + + for (i = 0; i < n1; i++) { + for (j = 0; j < n2; j++) { + const BASE Bij_real = CONST_REAL(B, ldb * i + j); + const BASE Bij_imag = CONST_IMAG(B, ldb * i + j); + const BASE temp1_real = alpha_real * Bij_real - alpha_imag * Bij_imag; + const BASE temp1_imag = alpha_real * Bij_imag + alpha_imag * Bij_real; + BASE temp2_real = 0.0; + BASE temp2_imag = 0.0; + { + const BASE Aii_real = CONST_REAL(A, i * lda + i); + const BASE Aii_imag = CONST_IMAG(A, i * lda + i); + REAL(C, i * ldc + j) += temp1_real * Aii_real - temp1_imag * Aii_imag; + IMAG(C, i * ldc + j) += temp1_real * Aii_imag + temp1_imag * Aii_real; + } + for (k = i + 1; k < n1; k++) { + const BASE Aik_real = CONST_REAL(A, i * lda + k); + const BASE Aik_imag = CONST_IMAG(A, i * lda + k); + const BASE Bkj_real = CONST_REAL(B, ldb * k + j); + const BASE Bkj_imag = CONST_IMAG(B, ldb * k + j); + REAL(C, k * ldc + j) += Aik_real * temp1_real - Aik_imag * temp1_imag; + IMAG(C, k * ldc + j) += Aik_real * temp1_imag + Aik_imag * temp1_real; + temp2_real += Aik_real * Bkj_real - Aik_imag * Bkj_imag; + temp2_imag += Aik_real * Bkj_imag + Aik_imag * Bkj_real; + } + REAL(C, i * ldc + j) += alpha_real * temp2_real - alpha_imag * temp2_imag; + IMAG(C, i * ldc + j) += alpha_real * temp2_imag + alpha_imag * temp2_real; + } + } + + } else if (side == CblasLeft && uplo == CblasLower) { + + /* form C := alpha*A*B + C */ + + for (i = 0; i < n1; i++) { + for (j = 0; j < n2; j++) { + const BASE Bij_real = CONST_REAL(B, ldb * i + j); + const BASE Bij_imag = CONST_IMAG(B, ldb * i + j); + const BASE temp1_real = alpha_real * Bij_real - alpha_imag * Bij_imag; + const BASE temp1_imag = alpha_real * Bij_imag + alpha_imag * Bij_real; + BASE temp2_real = 0.0; + BASE temp2_imag = 0.0; + for (k = 0; k < i; k++) { + const BASE Aik_real = CONST_REAL(A, i * lda + k); + const BASE Aik_imag = CONST_IMAG(A, i * lda + k); + const BASE Bkj_real = CONST_REAL(B, ldb * k + j); + const BASE Bkj_imag = CONST_IMAG(B, ldb * k + j); + REAL(C, k * ldc + j) += Aik_real * temp1_real - Aik_imag * temp1_imag; + IMAG(C, k * ldc + j) += Aik_real * temp1_imag + Aik_imag * temp1_real; + temp2_real += Aik_real * Bkj_real - Aik_imag * Bkj_imag; + temp2_imag += Aik_real * Bkj_imag + Aik_imag * Bkj_real; + } + { + const BASE Aii_real = CONST_REAL(A, i * lda + i); + const BASE Aii_imag = CONST_IMAG(A, i * lda + i); + REAL(C, i * ldc + j) += temp1_real * Aii_real - temp1_imag * Aii_imag; + IMAG(C, i * ldc + j) += temp1_real * Aii_imag + temp1_imag * Aii_real; + } + REAL(C, i * ldc + j) += alpha_real * temp2_real - alpha_imag * temp2_imag; + IMAG(C, i * ldc + j) += alpha_real * temp2_imag + alpha_imag * temp2_real; + } + } + + } else if (side == CblasRight && uplo == CblasUpper) { + + /* form C := alpha*B*A + C */ + + for (i = 0; i < n1; i++) { + for (j = 0; j < n2; j++) { + const BASE Bij_real = CONST_REAL(B, ldb * i + j); + const BASE Bij_imag = CONST_IMAG(B, ldb * i + j); + const BASE temp1_real = alpha_real * Bij_real - alpha_imag * Bij_imag; + const BASE temp1_imag = alpha_real * Bij_imag + alpha_imag * Bij_real; + BASE temp2_real = 0.0; + BASE temp2_imag = 0.0; + { + const BASE Ajj_real = CONST_REAL(A, j * lda + j); + const BASE Ajj_imag = CONST_IMAG(A, j * lda + j); + REAL(C, i * ldc + j) += temp1_real * Ajj_real - temp1_imag * Ajj_imag; + IMAG(C, i * ldc + j) += temp1_real * Ajj_imag + temp1_imag * Ajj_real; + } + for (k = j + 1; k < n2; k++) { + const BASE Ajk_real = CONST_REAL(A, j * lda + k); + const BASE Ajk_imag = CONST_IMAG(A, j * lda + k); + const BASE Bik_real = CONST_REAL(B, ldb * i + k); + const BASE Bik_imag = CONST_IMAG(B, ldb * i + k); + REAL(C, i * ldc + k) += temp1_real * Ajk_real - temp1_imag * Ajk_imag; + IMAG(C, i * ldc + k) += temp1_real * Ajk_imag + temp1_imag * Ajk_real; + temp2_real += Bik_real * Ajk_real - Bik_imag * Ajk_imag; + temp2_imag += Bik_real * Ajk_imag + Bik_imag * Ajk_real; + } + REAL(C, i * ldc + j) += alpha_real * temp2_real - alpha_imag * temp2_imag; + IMAG(C, i * ldc + j) += alpha_real * temp2_imag + alpha_imag * temp2_real; + } + } + + } else if (side == CblasRight && uplo == CblasLower) { + + /* form C := alpha*B*A + C */ + + for (i = 0; i < n1; i++) { + for (j = 0; j < n2; j++) { + const BASE Bij_real = CONST_REAL(B, ldb * i + j); + const BASE Bij_imag = CONST_IMAG(B, ldb * i + j); + const BASE temp1_real = alpha_real * Bij_real - alpha_imag * Bij_imag; + const BASE temp1_imag = alpha_real * Bij_imag + alpha_imag * Bij_real; + BASE temp2_real = 0.0; + BASE temp2_imag = 0.0; + for (k = 0; k < j; k++) { + const BASE Ajk_real = CONST_REAL(A, j * lda + k); + const BASE Ajk_imag = CONST_IMAG(A, j * lda + k); + const BASE Bik_real = CONST_REAL(B, ldb * i + k); + const BASE Bik_imag = CONST_IMAG(B, ldb * i + k); + REAL(C, i * ldc + k) += temp1_real * Ajk_real - temp1_imag * Ajk_imag; + IMAG(C, i * ldc + k) += temp1_real * Ajk_imag + temp1_imag * Ajk_real; + temp2_real += Bik_real * Ajk_real - Bik_imag * Ajk_imag; + temp2_imag += Bik_real * Ajk_imag + Bik_imag * Ajk_real; + } + { + const BASE Ajj_real = CONST_REAL(A, j * lda + j); + const BASE Ajj_imag = CONST_IMAG(A, j * lda + j); + REAL(C, i * ldc + j) += temp1_real * Ajj_real - temp1_imag * Ajj_imag; + IMAG(C, i * ldc + j) += temp1_real * Ajj_imag + temp1_imag * Ajj_real; + } + REAL(C, i * ldc + j) += alpha_real * temp2_real - alpha_imag * temp2_imag; + IMAG(C, i * ldc + j) += alpha_real * temp2_imag + alpha_imag * temp2_real; + } + } + + } else { + BLAS_ERROR("unrecognized operation"); + } + } +} diff --git a/gsl-2.5/cblas/source_symm_r.h b/gsl-2.5/cblas/source_symm_r.h new file mode 100644 index 00000000..1885aeeb --- /dev/null +++ b/gsl-2.5/cblas/source_symm_r.h @@ -0,0 +1,133 @@ +/* blas/source_symm_r.h + * + * Copyright (C) 2001, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + INDEX i, j, k; + INDEX n1, n2; + int uplo, side; + + CHECK_ARGS13(SYMM,Order,Side,Uplo,M,N,alpha,A,lda,B,ldb,beta,C,ldc); + + if (alpha == 0.0 && beta == 1.0) + return; + + if (Order == CblasRowMajor) { + n1 = M; + n2 = N; + uplo = Uplo; + side = Side; + } else { + n1 = N; + n2 = M; + uplo = (Uplo == CblasUpper) ? CblasLower : CblasUpper; + side = (Side == CblasLeft) ? CblasRight : CblasLeft; + } + + /* form y := beta*y */ + if (beta == 0.0) { + for (i = 0; i < n1; i++) { + for (j = 0; j < n2; j++) { + C[ldc * i + j] = 0.0; + } + } + } else if (beta != 1.0) { + for (i = 0; i < n1; i++) { + for (j = 0; j < n2; j++) { + C[ldc * i + j] *= beta; + } + } + } + + if (alpha == 0.0) + return; + + if (side == CblasLeft && uplo == CblasUpper) { + + /* form C := alpha*A*B + C */ + + for (i = 0; i < n1; i++) { + for (j = 0; j < n2; j++) { + const BASE temp1 = alpha * B[ldb * i + j]; + BASE temp2 = 0.0; + C[i * ldc + j] += temp1 * A[i * lda + i]; + for (k = i + 1; k < n1; k++) { + const BASE Aik = A[i * lda + k]; + C[k * ldc + j] += Aik * temp1; + temp2 += Aik * B[ldb * k + j]; + } + C[i * ldc + j] += alpha * temp2; + } + } + + } else if (side == CblasLeft && uplo == CblasLower) { + + /* form C := alpha*A*B + C */ + + for (i = 0; i < n1; i++) { + for (j = 0; j < n2; j++) { + const BASE temp1 = alpha * B[ldb * i + j]; + BASE temp2 = 0.0; + for (k = 0; k < i; k++) { + const BASE Aik = A[i * lda + k]; + C[k * ldc + j] += Aik * temp1; + temp2 += Aik * B[ldb * k + j]; + } + C[i * ldc + j] += temp1 * A[i * lda + i] + alpha * temp2; + } + } + + } else if (side == CblasRight && uplo == CblasUpper) { + + /* form C := alpha*B*A + C */ + + for (i = 0; i < n1; i++) { + for (j = 0; j < n2; j++) { + const BASE temp1 = alpha * B[ldb * i + j]; + BASE temp2 = 0.0; + C[i * ldc + j] += temp1 * A[j * lda + j]; + for (k = j + 1; k < n2; k++) { + const BASE Ajk = A[j * lda + k]; + C[i * ldc + k] += temp1 * Ajk; + temp2 += B[ldb * i + k] * Ajk; + } + C[i * ldc + j] += alpha * temp2; + } + } + + } else if (side == CblasRight && uplo == CblasLower) { + + /* form C := alpha*B*A + C */ + + for (i = 0; i < n1; i++) { + for (j = 0; j < n2; j++) { + const BASE temp1 = alpha * B[ldb * i + j]; + BASE temp2 = 0.0; + for (k = 0; k < j; k++) { + const BASE Ajk = A[j * lda + k]; + C[i * ldc + k] += temp1 * Ajk; + temp2 += B[ldb * i + k] * Ajk; + } + C[i * ldc + j] += temp1 * A[j * lda + j] + alpha * temp2; + } + } + + } else { + BLAS_ERROR("unrecognized operation"); + } +} diff --git a/gsl-2.5/cblas/source_symv.h b/gsl-2.5/cblas/source_symv.h new file mode 100644 index 00000000..affe1277 --- /dev/null +++ b/gsl-2.5/cblas/source_symv.h @@ -0,0 +1,95 @@ +/* blas/source_symv.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + INDEX i, j; + + CHECK_ARGS11(SD_SYMV,order,Uplo,N,alpha,A,lda,X,incX,beta,Y,incY); + + if (alpha == 0.0 && beta == 1.0) + return; + + /* form y := beta*y */ + if (beta == 0.0) { + INDEX iy = OFFSET(N, incY); + for (i = 0; i < N; i++) { + Y[iy] = 0.0; + iy += incY; + } + } else if (beta != 1.0) { + INDEX iy = OFFSET(N, incY); + for (i = 0; i < N; i++) { + Y[iy] *= beta; + iy += incY; + } + } + + if (alpha == 0.0) + return; + + /* form y := alpha*A*x + y */ + + if ((order == CblasRowMajor && Uplo == CblasUpper) + || (order == CblasColMajor && Uplo == CblasLower)) { + INDEX ix = OFFSET(N, incX); + INDEX iy = OFFSET(N, incY); + for (i = 0; i < N; i++) { + BASE temp1 = alpha * X[ix]; + BASE temp2 = 0.0; + const INDEX j_min = i + 1; + const INDEX j_max = N; + INDEX jx = OFFSET(N, incX) + j_min * incX; + INDEX jy = OFFSET(N, incY) + j_min * incY; + Y[iy] += temp1 * A[lda * i + i]; + for (j = j_min; j < j_max; j++) { + Y[jy] += temp1 * A[lda * i + j]; + temp2 += X[jx] * A[lda * i + j]; + jx += incX; + jy += incY; + } + Y[iy] += alpha * temp2; + ix += incX; + iy += incY; + } + } else if ((order == CblasRowMajor && Uplo == CblasLower) + || (order == CblasColMajor && Uplo == CblasUpper)) { + INDEX ix = OFFSET(N, incX) + (N - 1) * incX; + INDEX iy = OFFSET(N, incY) + (N - 1) * incY; + for (i = N; i > 0 && i--;) { + BASE temp1 = alpha * X[ix]; + BASE temp2 = 0.0; + const INDEX j_min = 0; + const INDEX j_max = i; + INDEX jx = OFFSET(N, incX) + j_min * incX; + INDEX jy = OFFSET(N, incY) + j_min * incY; + Y[iy] += temp1 * A[lda * i + i]; + for (j = j_min; j < j_max; j++) { + Y[jy] += temp1 * A[lda * i + j]; + temp2 += X[jx] * A[lda * i + j]; + jx += incX; + jy += incY; + } + Y[iy] += alpha * temp2; + ix -= incX; + iy -= incY; + } + } else { + BLAS_ERROR("unrecognized operation"); + } +} diff --git a/gsl-2.5/cblas/source_syr.h b/gsl-2.5/cblas/source_syr.h new file mode 100644 index 00000000..28725f67 --- /dev/null +++ b/gsl-2.5/cblas/source_syr.h @@ -0,0 +1,58 @@ +/* blas/source_syr.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + INDEX i, j; + + CHECK_ARGS8(SD_SYR,order,Uplo,N,alpha,X,incX,A,lda); + + if (N == 0) + return; + + if (alpha == 0.0) + return; + + if ((order == CblasRowMajor && Uplo == CblasUpper) + || (order == CblasColMajor && Uplo == CblasLower)) { + INDEX ix = OFFSET(N, incX); + for (i = 0; i < N; i++) { + const BASE tmp = alpha * X[ix]; + INDEX jx = ix; + for (j = i; j < N; j++) { + A[lda * i + j] += X[jx] * tmp; + jx += incX; + } + ix += incX; + } + } else if ((order == CblasRowMajor && Uplo == CblasLower) + || (order == CblasColMajor && Uplo == CblasUpper)) { + INDEX ix = OFFSET(N, incX); + for (i = 0; i < N; i++) { + const BASE tmp = alpha * X[ix]; + INDEX jx = OFFSET(N, incX); + for (j = 0; j <= i; j++) { + A[lda * i + j] += X[jx] * tmp; + jx += incX; + } + ix += incX; + } + } else { + BLAS_ERROR("unrecognized operation"); + } +} diff --git a/gsl-2.5/cblas/source_syr2.h b/gsl-2.5/cblas/source_syr2.h new file mode 100644 index 00000000..0c7040ab --- /dev/null +++ b/gsl-2.5/cblas/source_syr2.h @@ -0,0 +1,68 @@ +/* blas/source_syr2.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + INDEX i, j; + + CHECK_ARGS10(SD_SYR2,order,Uplo,N,alpha,X,incX,Y,incY,A,lda); + + if (N == 0) + return; + + if (alpha == 0.0) + return; + + if ((order == CblasRowMajor && Uplo == CblasUpper) + || (order == CblasColMajor && Uplo == CblasLower)) { + INDEX ix = OFFSET(N, incX); + INDEX iy = OFFSET(N, incY); + for (i = 0; i < N; i++) { + const BASE tmp1 = alpha * X[ix]; + const BASE tmp2 = alpha * Y[iy]; + INDEX jx = ix; + INDEX jy = iy; + for (j = i; j < N; j++) { + A[lda * i + j] += tmp1 * Y[jy] + tmp2 * X[jx]; + jx += incX; + jy += incY; + } + ix += incX; + iy += incY; + } + } else if ((order == CblasRowMajor && Uplo == CblasLower) + || (order == CblasColMajor && Uplo == CblasUpper)) { + INDEX ix = OFFSET(N, incX); + INDEX iy = OFFSET(N, incY); + for (i = 0; i < N; i++) { + const BASE tmp1 = alpha * X[ix]; + const BASE tmp2 = alpha * Y[iy]; + INDEX jx = OFFSET(N, incX); + INDEX jy = OFFSET(N, incY); + for (j = 0; j <= i; j++) { + A[lda * i + j] += tmp1 * Y[jy] + tmp2 * X[jx]; + jx += incX; + jy += incY; + } + ix += incX; + iy += incY; + } + } else { + BLAS_ERROR("unrecognized operation"); + } +} diff --git a/gsl-2.5/cblas/source_syr2k_c.h b/gsl-2.5/cblas/source_syr2k_c.h new file mode 100644 index 00000000..0318c5e8 --- /dev/null +++ b/gsl-2.5/cblas/source_syr2k_c.h @@ -0,0 +1,194 @@ +/* blas/source_syr2k_c.h + * + * Copyright (C) 2001, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + INDEX i, j, k; + int uplo, trans; + + CHECK_ARGS13(SYR2K,Order,Uplo,Trans,N,K,alpha,A,lda,B,ldb,beta,C,ldc); + + { + const BASE alpha_real = CONST_REAL0(alpha); + const BASE alpha_imag = CONST_IMAG0(alpha); + const BASE beta_real = CONST_REAL0(beta); + const BASE beta_imag = CONST_IMAG0(beta); + + if ((alpha_real == 0.0 && alpha_imag == 0.0) + && (beta_real == 1.0 && beta_imag == 0.0)) + return; + + if (Order == CblasRowMajor) { + uplo = Uplo; + trans = Trans; + } else { + uplo = (Uplo == CblasUpper) ? CblasLower : CblasUpper; + trans = (Trans == CblasNoTrans) ? CblasTrans : CblasNoTrans; + } + + /* form C := beta*C */ + + if (beta_real == 0.0 && beta_imag == 0.0) { + if (uplo == CblasUpper) { + for (i = 0; i < N; i++) { + for (j = i; j < N; j++) { + REAL(C, ldc * i + j) = 0.0; + IMAG(C, ldc * i + j) = 0.0; + } + } + } else { + for (i = 0; i < N; i++) { + for (j = 0; j <= i; j++) { + REAL(C, ldc * i + j) = 0.0; + IMAG(C, ldc * i + j) = 0.0; + } + } + } + } else if (!(beta_real == 1.0 && beta_imag == 0.0)) { + if (uplo == CblasUpper) { + for (i = 0; i < N; i++) { + for (j = i; j < N; j++) { + const BASE Cij_real = REAL(C, ldc * i + j); + const BASE Cij_imag = IMAG(C, ldc * i + j); + REAL(C, ldc * i + j) = beta_real * Cij_real - beta_imag * Cij_imag; + IMAG(C, ldc * i + j) = beta_real * Cij_imag + beta_imag * Cij_real; + } + } + } else { + for (i = 0; i < N; i++) { + for (j = 0; j <= i; j++) { + const BASE Cij_real = REAL(C, ldc * i + j); + const BASE Cij_imag = IMAG(C, ldc * i + j); + REAL(C, ldc * i + j) = beta_real * Cij_real - beta_imag * Cij_imag; + IMAG(C, ldc * i + j) = beta_real * Cij_imag + beta_imag * Cij_real; + } + } + } + } + + + if (alpha_real == 0.0 && alpha_imag == 0.0) + return; + + if (uplo == CblasUpper && trans == CblasNoTrans) { + + for (i = 0; i < N; i++) { + for (j = i; j < N; j++) { + BASE temp_real = 0.0; + BASE temp_imag = 0.0; + for (k = 0; k < K; k++) { + const BASE Aik_real = CONST_REAL(A, i * lda + k); + const BASE Aik_imag = CONST_IMAG(A, i * lda + k); + const BASE Bik_real = CONST_REAL(B, i * ldb + k); + const BASE Bik_imag = CONST_IMAG(B, i * ldb + k); + const BASE Ajk_real = CONST_REAL(A, j * lda + k); + const BASE Ajk_imag = CONST_IMAG(A, j * lda + k); + const BASE Bjk_real = CONST_REAL(B, j * ldb + k); + const BASE Bjk_imag = CONST_IMAG(B, j * ldb + k); + temp_real += ((Aik_real * Bjk_real - Aik_imag * Bjk_imag) + + (Bik_real * Ajk_real - Bik_imag * Ajk_imag)); + temp_imag += ((Aik_real * Bjk_imag + Aik_imag * Bjk_real) + + (Bik_real * Ajk_imag + Bik_imag * Ajk_real)); + } + REAL(C, i * ldc + j) += alpha_real * temp_real - alpha_imag * temp_imag; + IMAG(C, i * ldc + j) += alpha_real * temp_imag + alpha_imag * temp_real; + } + } + + } else if (uplo == CblasUpper && trans == CblasTrans) { + + for (k = 0; k < K; k++) { + for (i = 0; i < N; i++) { + BASE Aki_real = CONST_REAL(A, k * lda + i); + BASE Aki_imag = CONST_IMAG(A, k * lda + i); + BASE Bki_real = CONST_REAL(B, k * ldb + i); + BASE Bki_imag = CONST_IMAG(B, k * ldb + i); + BASE temp1_real = alpha_real * Aki_real - alpha_imag * Aki_imag; + BASE temp1_imag = alpha_real * Aki_imag + alpha_imag * Aki_real; + BASE temp2_real = alpha_real * Bki_real - alpha_imag * Bki_imag; + BASE temp2_imag = alpha_real * Bki_imag + alpha_imag * Bki_real; + for (j = i; j < N; j++) { + BASE Akj_real = CONST_REAL(A, k * lda + j); + BASE Akj_imag = CONST_IMAG(A, k * lda + j); + BASE Bkj_real = CONST_REAL(B, k * ldb + j); + BASE Bkj_imag = CONST_IMAG(B, k * ldb + j); + REAL(C, i * lda + j) += (temp1_real * Bkj_real - temp1_imag * Bkj_imag) + + (temp2_real * Akj_real - temp2_imag * Akj_imag); + IMAG(C, i * lda + j) += (temp1_real * Bkj_imag + temp1_imag * Bkj_real) + + (temp2_real * Akj_imag + temp2_imag * Akj_real); + } + } + } + + } else if (uplo == CblasLower && trans == CblasNoTrans) { + + + for (i = 0; i < N; i++) { + for (j = 0; j <= i; j++) { + BASE temp_real = 0.0; + BASE temp_imag = 0.0; + for (k = 0; k < K; k++) { + const BASE Aik_real = CONST_REAL(A, i * lda + k); + const BASE Aik_imag = CONST_IMAG(A, i * lda + k); + const BASE Bik_real = CONST_REAL(B, i * ldb + k); + const BASE Bik_imag = CONST_IMAG(B, i * ldb + k); + const BASE Ajk_real = CONST_REAL(A, j * lda + k); + const BASE Ajk_imag = CONST_IMAG(A, j * lda + k); + const BASE Bjk_real = CONST_REAL(B, j * ldb + k); + const BASE Bjk_imag = CONST_IMAG(B, j * ldb + k); + temp_real += ((Aik_real * Bjk_real - Aik_imag * Bjk_imag) + + (Bik_real * Ajk_real - Bik_imag * Ajk_imag)); + temp_imag += ((Aik_real * Bjk_imag + Aik_imag * Bjk_real) + + (Bik_real * Ajk_imag + Bik_imag * Ajk_real)); + } + REAL(C, i * ldc + j) += alpha_real * temp_real - alpha_imag * temp_imag; + IMAG(C, i * ldc + j) += alpha_real * temp_imag + alpha_imag * temp_real; + } + } + + } else if (uplo == CblasLower && trans == CblasTrans) { + + for (k = 0; k < K; k++) { + for (i = 0; i < N; i++) { + BASE Aki_real = CONST_REAL(A, k * lda + i); + BASE Aki_imag = CONST_IMAG(A, k * lda + i); + BASE Bki_real = CONST_REAL(B, k * ldb + i); + BASE Bki_imag = CONST_IMAG(B, k * ldb + i); + BASE temp1_real = alpha_real * Aki_real - alpha_imag * Aki_imag; + BASE temp1_imag = alpha_real * Aki_imag + alpha_imag * Aki_real; + BASE temp2_real = alpha_real * Bki_real - alpha_imag * Bki_imag; + BASE temp2_imag = alpha_real * Bki_imag + alpha_imag * Bki_real; + for (j = 0; j <= i; j++) { + BASE Akj_real = CONST_REAL(A, k * lda + j); + BASE Akj_imag = CONST_IMAG(A, k * lda + j); + BASE Bkj_real = CONST_REAL(B, k * ldb + j); + BASE Bkj_imag = CONST_IMAG(B, k * ldb + j); + REAL(C, i * lda + j) += (temp1_real * Bkj_real - temp1_imag * Bkj_imag) + + (temp2_real * Akj_real - temp2_imag * Akj_imag); + IMAG(C, i * lda + j) += (temp1_real * Bkj_imag + temp1_imag * Bkj_real) + + (temp2_real * Akj_imag + temp2_imag * Akj_real); + } + } + } + + + } else { + BLAS_ERROR("unrecognized operation"); + } + } +} diff --git a/gsl-2.5/cblas/source_syr2k_r.h b/gsl-2.5/cblas/source_syr2k_r.h new file mode 100644 index 00000000..692ee394 --- /dev/null +++ b/gsl-2.5/cblas/source_syr2k_r.h @@ -0,0 +1,131 @@ +/* blas/source_syr2k_r.h + * + * Copyright (C) 2001, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + INDEX i, j, k; + int uplo, trans; + + CHECK_ARGS13(SYR2K,Order,Uplo,Trans,N,K,alpha,A,lda,B,ldb,beta,C,ldc); + + if (alpha == 0.0 && beta == 1.0) + return; + + if (Order == CblasRowMajor) { + uplo = Uplo; + trans = (Trans == CblasConjTrans) ? CblasTrans : Trans; + } else { + uplo = (Uplo == CblasUpper) ? CblasLower : CblasUpper; + + if (Trans == CblasTrans || Trans == CblasConjTrans) { + trans = CblasNoTrans; + } else { + trans = CblasTrans; + } + } + + /* form C := beta*C */ + if (beta == 0.0) { + if (uplo == CblasUpper) { + for (i = 0; i < N; i++) { + for (j = i; j < N; j++) { + C[ldc * i + j] = 0.0; + } + } + } else { + for (i = 0; i < N; i++) { + for (j = 0; j <= i; j++) { + C[ldc * i + j] = 0.0; + } + } + } + } else if (beta != 1.0) { + if (uplo == CblasUpper) { + for (i = 0; i < N; i++) { + for (j = i; j < N; j++) { + C[ldc * i + j] *= beta; + } + } + } else { + for (i = 0; i < N; i++) { + for (j = 0; j <= i; j++) { + C[ldc * i + j] *= beta; + } + } + } + } + + if (alpha == 0.0) + return; + + if (uplo == CblasUpper && trans == CblasNoTrans) { + + for (i = 0; i < N; i++) { + for (j = i; j < N; j++) { + BASE temp = 0.0; + for (k = 0; k < K; k++) { + temp += (A[i * lda + k] * B[j * ldb + k] + + B[i * ldb + k] * A[j * lda + k]); + } + C[i * ldc + j] += alpha * temp; + } + } + + } else if (uplo == CblasUpper && trans == CblasTrans) { + + for (k = 0; k < K; k++) { + for (i = 0; i < N; i++) { + BASE temp1 = alpha * A[k * lda + i]; + BASE temp2 = alpha * B[k * ldb + i]; + for (j = i; j < N; j++) { + C[i * lda + j] += temp1 * B[k * ldb + j] + temp2 * A[k * lda + j]; + } + } + } + + } else if (uplo == CblasLower && trans == CblasNoTrans) { + + + for (i = 0; i < N; i++) { + for (j = 0; j <= i; j++) { + BASE temp = 0.0; + for (k = 0; k < K; k++) { + temp += (A[i * lda + k] * B[j * ldb + k] + + B[i * ldb + k] * A[j * lda + k]); + } + C[i * ldc + j] += alpha * temp; + } + } + + } else if (uplo == CblasLower && trans == CblasTrans) { + + for (k = 0; k < K; k++) { + for (i = 0; i < N; i++) { + BASE temp1 = alpha * A[k * lda + i]; + BASE temp2 = alpha * B[k * ldb + i]; + for (j = 0; j <= i; j++) { + C[i * lda + j] += temp1 * B[k * ldb + j] + temp2 * A[k * lda + j]; + } + } + } + + + } else { + BLAS_ERROR("unrecognized operation"); + } +} diff --git a/gsl-2.5/cblas/source_syrk_c.h b/gsl-2.5/cblas/source_syrk_c.h new file mode 100644 index 00000000..b94e68d2 --- /dev/null +++ b/gsl-2.5/cblas/source_syrk_c.h @@ -0,0 +1,168 @@ +/* blas/source_syrk_c.h + * + * Copyright (C) 2001, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + INDEX i, j, k; + int uplo, trans; + + CHECK_ARGS11(SYRK,Order,Uplo,Trans,N,K,alpha,A,lda,beta,C,ldc); + + { + const BASE alpha_real = CONST_REAL0(alpha); + const BASE alpha_imag = CONST_IMAG0(alpha); + + const BASE beta_real = CONST_REAL0(beta); + const BASE beta_imag = CONST_IMAG0(beta); + + if ((alpha_real == 0.0 && alpha_imag == 0.0) + && (beta_real == 1.0 && beta_imag == 0.0)) + return; + + if (Order == CblasRowMajor) { + uplo = Uplo; + /* FIXME: original blas does not make distinction between Trans and ConjTrans?? */ + trans = (Trans == CblasNoTrans) ? CblasNoTrans : CblasTrans; + } else { + uplo = (Uplo == CblasUpper) ? CblasLower : CblasUpper; + trans = (Trans == CblasNoTrans) ? CblasTrans : CblasNoTrans; + } + + /* form y := beta*y */ + if (beta_real == 0.0 && beta_imag == 0.0) { + if (uplo == CblasUpper) { + for (i = 0; i < N; i++) { + for (j = i; j < N; j++) { + REAL(C, ldc * i + j) = 0.0; + IMAG(C, ldc * i + j) = 0.0; + } + } + } else { + for (i = 0; i < N; i++) { + for (j = 0; j <= i; j++) { + REAL(C, ldc * i + j) = 0.0; + IMAG(C, ldc * i + j) = 0.0; + } + } + } + } else if (!(beta_real == 1.0 && beta_imag == 0.0)) { + if (uplo == CblasUpper) { + for (i = 0; i < N; i++) { + for (j = i; j < N; j++) { + const BASE Cij_real = REAL(C, ldc * i + j); + const BASE Cij_imag = IMAG(C, ldc * i + j); + REAL(C, ldc * i + j) = beta_real * Cij_real - beta_imag * Cij_imag; + IMAG(C, ldc * i + j) = beta_real * Cij_imag + beta_imag * Cij_real; + } + } + } else { + for (i = 0; i < N; i++) { + for (j = 0; j <= i; j++) { + const BASE Cij_real = REAL(C, ldc * i + j); + const BASE Cij_imag = IMAG(C, ldc * i + j); + REAL(C, ldc * i + j) = beta_real * Cij_real - beta_imag * Cij_imag; + IMAG(C, ldc * i + j) = beta_real * Cij_imag + beta_imag * Cij_real; + } + } + } + } + + if (alpha_real == 0.0 && alpha_imag == 0.0) + return; + + if (uplo == CblasUpper && trans == CblasNoTrans) { + + for (i = 0; i < N; i++) { + for (j = i; j < N; j++) { + BASE temp_real = 0.0; + BASE temp_imag = 0.0; + for (k = 0; k < K; k++) { + const BASE Aik_real = CONST_REAL(A, i * lda + k); + const BASE Aik_imag = CONST_IMAG(A, i * lda + k); + const BASE Ajk_real = CONST_REAL(A, j * lda + k); + const BASE Ajk_imag = CONST_IMAG(A, j * lda + k); + temp_real += Aik_real * Ajk_real - Aik_imag * Ajk_imag; + temp_imag += Aik_real * Ajk_imag + Aik_imag * Ajk_real; + } + REAL(C, i * ldc + j) += alpha_real * temp_real - alpha_imag * temp_imag; + IMAG(C, i * ldc + j) += alpha_real * temp_imag + alpha_imag * temp_real; + } + } + + } else if (uplo == CblasUpper && trans == CblasTrans) { + + for (i = 0; i < N; i++) { + for (j = i; j < N; j++) { + BASE temp_real = 0.0; + BASE temp_imag = 0.0; + for (k = 0; k < K; k++) { + const BASE Aki_real = CONST_REAL(A, k * lda + i); + const BASE Aki_imag = CONST_IMAG(A, k * lda + i); + const BASE Akj_real = CONST_REAL(A, k * lda + j); + const BASE Akj_imag = CONST_IMAG(A, k * lda + j); + temp_real += Aki_real * Akj_real - Aki_imag * Akj_imag; + temp_imag += Aki_real * Akj_imag + Aki_imag * Akj_real; + } + REAL(C, i * ldc + j) += alpha_real * temp_real - alpha_imag * temp_imag; + IMAG(C, i * ldc + j) += alpha_real * temp_imag + alpha_imag * temp_real; + } + } + + } else if (uplo == CblasLower && trans == CblasNoTrans) { + + for (i = 0; i < N; i++) { + for (j = 0; j <= i; j++) { + BASE temp_real = 0.0; + BASE temp_imag = 0.0; + for (k = 0; k < K; k++) { + const BASE Aik_real = CONST_REAL(A, i * lda + k); + const BASE Aik_imag = CONST_IMAG(A, i * lda + k); + const BASE Ajk_real = CONST_REAL(A, j * lda + k); + const BASE Ajk_imag = CONST_IMAG(A, j * lda + k); + temp_real += Aik_real * Ajk_real - Aik_imag * Ajk_imag; + temp_imag += Aik_real * Ajk_imag + Aik_imag * Ajk_real; + } + REAL(C, i * ldc + j) += alpha_real * temp_real - alpha_imag * temp_imag; + IMAG(C, i * ldc + j) += alpha_real * temp_imag + alpha_imag * temp_real; + } + } + + } else if (uplo == CblasLower && trans == CblasTrans) { + + for (i = 0; i < N; i++) { + for (j = 0; j <= i; j++) { + BASE temp_real = 0.0; + BASE temp_imag = 0.0; + for (k = 0; k < K; k++) { + const BASE Aki_real = CONST_REAL(A, k * lda + i); + const BASE Aki_imag = CONST_IMAG(A, k * lda + i); + const BASE Akj_real = CONST_REAL(A, k * lda + j); + const BASE Akj_imag = CONST_IMAG(A, k * lda + j); + temp_real += Aki_real * Akj_real - Aki_imag * Akj_imag; + temp_imag += Aki_real * Akj_imag + Aki_imag * Akj_real; + } + REAL(C, i * ldc + j) += alpha_real * temp_real - alpha_imag * temp_imag; + IMAG(C, i * ldc + j) += alpha_real * temp_imag + alpha_imag * temp_real; + } + } + + } else { + BLAS_ERROR("unrecognized operation"); + } + } +} diff --git a/gsl-2.5/cblas/source_syrk_r.h b/gsl-2.5/cblas/source_syrk_r.h new file mode 100644 index 00000000..0455c388 --- /dev/null +++ b/gsl-2.5/cblas/source_syrk_r.h @@ -0,0 +1,127 @@ +/* blas/source_syrk_r.h + * + * Copyright (C) 2001, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + INDEX i, j, k; + int uplo, trans; + + CHECK_ARGS11(SYRK,Order,Uplo,Trans,N,K,alpha,A,lda,beta,C,ldc); + + if (alpha == 0.0 && beta == 1.0) + return; + + if (Order == CblasRowMajor) { + uplo = Uplo; + trans = (Trans == CblasConjTrans) ? CblasTrans : Trans; + } else { + uplo = (Uplo == CblasUpper) ? CblasLower : CblasUpper; + + if (Trans == CblasTrans || Trans == CblasConjTrans) { + trans = CblasNoTrans; + } else { + trans = CblasTrans; + } + } + + /* form y := beta*y */ + if (beta == 0.0) { + if (uplo == CblasUpper) { + for (i = 0; i < N; i++) { + for (j = i; j < N; j++) { + C[ldc * i + j] = 0.0; + } + } + } else { + for (i = 0; i < N; i++) { + for (j = 0; j <= i; j++) { + C[ldc * i + j] = 0.0; + } + } + } + } else if (beta != 1.0) { + if (uplo == CblasUpper) { + for (i = 0; i < N; i++) { + for (j = i; j < N; j++) { + C[ldc * i + j] *= beta; + } + } + } else { + for (i = 0; i < N; i++) { + for (j = 0; j <= i; j++) { + C[ldc * i + j] *= beta; + } + } + } + } + + if (alpha == 0.0) + return; + + if (uplo == CblasUpper && trans == CblasNoTrans) { + + for (i = 0; i < N; i++) { + for (j = i; j < N; j++) { + BASE temp = 0.0; + for (k = 0; k < K; k++) { + temp += A[i * lda + k] * A[j * lda + k]; + } + C[i * ldc + j] += alpha * temp; + } + } + + } else if (uplo == CblasUpper && trans == CblasTrans) { + + for (i = 0; i < N; i++) { + for (j = i; j < N; j++) { + BASE temp = 0.0; + for (k = 0; k < K; k++) { + temp += A[k * lda + i] * A[k * lda + j]; + } + C[i * ldc + j] += alpha * temp; + } + } + + } else if (uplo == CblasLower && trans == CblasNoTrans) { + + for (i = 0; i < N; i++) { + for (j = 0; j <= i; j++) { + BASE temp = 0.0; + for (k = 0; k < K; k++) { + temp += A[i * lda + k] * A[j * lda + k]; + } + C[i * ldc + j] += alpha * temp; + } + } + + } else if (uplo == CblasLower && trans == CblasTrans) { + + for (i = 0; i < N; i++) { + for (j = 0; j <= i; j++) { + BASE temp = 0.0; + for (k = 0; k < K; k++) { + temp += A[k * lda + i] * A[k * lda + j]; + } + C[i * ldc + j] += alpha * temp; + } + } + + } else { + BLAS_ERROR("unrecognized operation"); + } +} diff --git a/gsl-2.5/cblas/source_tbmv_c.h b/gsl-2.5/cblas/source_tbmv_c.h new file mode 100644 index 00000000..659ae9cc --- /dev/null +++ b/gsl-2.5/cblas/source_tbmv_c.h @@ -0,0 +1,172 @@ +/* blas/source_tbmv_c.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + const int conj = (TransA == CblasConjTrans) ? -1 : 1; + const int Trans = (TransA != CblasConjTrans) ? TransA : CblasTrans; + const int nonunit = (Diag == CblasNonUnit); + INDEX i, j; + + CHECK_ARGS10(TBMV,order,Uplo,TransA,Diag,N,K,A,lda,X,incX); + + if ((order == CblasRowMajor && Trans == CblasNoTrans && Uplo == CblasUpper) + || (order == CblasColMajor && Trans == CblasTrans && Uplo == CblasLower)) { + /* form x := A*x */ + + INDEX ix = OFFSET(N, incX); + for (i = 0; i < N; i++) { + BASE temp_r = 0.0; + BASE temp_i = 0.0; + const INDEX j_min = i + 1; + const INDEX j_max = GSL_MIN(N, i + K + 1); + INDEX jx = OFFSET(N, incX) + incX * j_min; + for (j = j_min; j < j_max; j++) { + const BASE x_real = REAL(X, jx); + const BASE x_imag = IMAG(X, jx); + const BASE A_real = CONST_REAL(A, lda * i + (j - i)); + const BASE A_imag = conj * CONST_IMAG(A, lda * i + (j - i)); + + temp_r += A_real * x_real - A_imag * x_imag; + temp_i += A_real * x_imag + A_imag * x_real; + + jx += incX; + } + if (nonunit) { + const BASE x_real = REAL(X, ix); + const BASE x_imag = IMAG(X, ix); + const BASE A_real = CONST_REAL(A, lda * i + 0); + const BASE A_imag = conj * CONST_IMAG(A, lda * i + 0); + + REAL(X, ix) = temp_r + (A_real * x_real - A_imag * x_imag); + IMAG(X, ix) = temp_i + (A_real * x_imag + A_imag * x_real); + } else { + REAL(X, ix) += temp_r; + IMAG(X, ix) += temp_i; + } + ix += incX; + } + } else if ((order == CblasRowMajor && Trans == CblasNoTrans && Uplo == CblasLower) + || (order == CblasColMajor && Trans == CblasTrans && Uplo == CblasUpper)) { + INDEX ix = OFFSET(N, incX) + (N - 1) * incX; + + for (i = N; i > 0 && i--;) { /* N-1 ... 0 */ + BASE temp_r = 0.0; + BASE temp_i = 0.0; + const INDEX j_min = (K > i ? 0 : i - K); + const INDEX j_max = i; + INDEX jx = OFFSET(N, incX) + j_min * incX; + for (j = j_min; j < j_max; j++) { + const BASE x_real = REAL(X, jx); + const BASE x_imag = IMAG(X, jx); + const BASE A_real = CONST_REAL(A, lda * i + (K - i + j)); + const BASE A_imag = conj * CONST_IMAG(A, lda * i + (K - i + j)); + + temp_r += A_real * x_real - A_imag * x_imag; + temp_i += A_real * x_imag + A_imag * x_real; + + jx += incX; + } + if (nonunit) { + const BASE x_real = REAL(X, ix); + const BASE x_imag = IMAG(X, ix); + const BASE A_real = CONST_REAL(A, lda * i + K); + const BASE A_imag = conj * CONST_IMAG(A, lda * i + K); + + REAL(X, ix) = temp_r + (A_real * x_real - A_imag * x_imag); + IMAG(X, ix) = temp_i + (A_real * x_imag + A_imag * x_real); + } else { + REAL(X, ix) += temp_r; + IMAG(X, ix) += temp_i; + } + ix -= incX; + } + } else if ((order == CblasRowMajor && Trans == CblasTrans && Uplo == CblasUpper) + || (order == CblasColMajor && Trans == CblasNoTrans && Uplo == CblasLower)) { + /* form x := A'*x */ + + INDEX ix = OFFSET(N, incX) + (N - 1) * incX; + for (i = N; i > 0 && i--;) { /* N-1 ... 0 */ + BASE temp_r = 0.0; + BASE temp_i = 0.0; + const INDEX j_min = (K > i ? 0 : i - K); + const INDEX j_max = i; + INDEX jx = OFFSET(N, incX) + j_min * incX; + for (j = j_min; j < j_max; j++) { + const BASE x_real = REAL(X, jx); + const BASE x_imag = IMAG(X, jx); + const BASE A_real = CONST_REAL(A, lda * j + (i - j)); + const BASE A_imag = conj * CONST_IMAG(A, lda * j + (i - j)); + + temp_r += A_real * x_real - A_imag * x_imag; + temp_i += A_real * x_imag + A_imag * x_real; + + jx += incX; + } + if (nonunit) { + const BASE x_real = REAL(X, ix); + const BASE x_imag = IMAG(X, ix); + const BASE A_real = CONST_REAL(A, lda * i + 0); + const BASE A_imag = conj * CONST_IMAG(A, lda * i + 0); + + REAL(X, ix) = temp_r + (A_real * x_real - A_imag * x_imag); + IMAG(X, ix) = temp_i + (A_real * x_imag + A_imag * x_real); + } else { + REAL(X, ix) += temp_r; + IMAG(X, ix) += temp_i; + } + ix -= incX; + } + } else if ((order == CblasRowMajor && Trans == CblasTrans && Uplo == CblasLower) + || (order == CblasColMajor && Trans == CblasNoTrans && Uplo == CblasUpper)) { + INDEX ix = OFFSET(N, incX); + for (i = 0; i < N; i++) { + BASE temp_r = 0.0; + BASE temp_i = 0.0; + const INDEX j_min = i + 1; + const INDEX j_max = GSL_MIN(N, i + K + 1); + INDEX jx = OFFSET(N, incX) + j_min * incX; + for (j = j_min; j < j_max; j++) { + const BASE x_real = REAL(X, jx); + const BASE x_imag = IMAG(X, jx); + const BASE A_real = CONST_REAL(A, lda * j + (K - j + i)); + const BASE A_imag = conj * CONST_IMAG(A, lda * j + (K - j + i)); + + temp_r += A_real * x_real - A_imag * x_imag; + temp_i += A_real * x_imag + A_imag * x_real; + + jx += incX; + } + if (nonunit) { + const BASE x_real = REAL(X, ix); + const BASE x_imag = IMAG(X, ix); + const BASE A_real = CONST_REAL(A, lda * i + K); + const BASE A_imag = conj * CONST_IMAG(A, lda * i + K); + + REAL(X, ix) = temp_r + (A_real * x_real - A_imag * x_imag); + IMAG(X, ix) = temp_i + (A_real * x_imag + A_imag * x_real); + } else { + REAL(X, ix) += temp_r; + IMAG(X, ix) += temp_i; + } + ix += incX; + } + } else { + BLAS_ERROR("unrecognized operation"); + } +} diff --git a/gsl-2.5/cblas/source_tbmv_r.h b/gsl-2.5/cblas/source_tbmv_r.h new file mode 100644 index 00000000..9c3c12c2 --- /dev/null +++ b/gsl-2.5/cblas/source_tbmv_r.h @@ -0,0 +1,109 @@ +/* blas/source_tbmv_r.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + INDEX i, j; + + const int nonunit = (Diag == CblasNonUnit); + const int Trans = (TransA != CblasConjTrans) ? TransA : CblasTrans; + + CHECK_ARGS10 (TBMV,order,Uplo,TransA,Diag,N,K,A,lda,X,incX); + + if (N == 0) + return; + + if ((order == CblasRowMajor && Trans == CblasNoTrans && Uplo == CblasUpper) + || (order == CblasColMajor && Trans == CblasTrans && Uplo == CblasLower)) { + /* form x := A*x */ + + INDEX ix = OFFSET(N, incX); + for (i = 0; i < N; i++) { + BASE temp = (nonunit ? A[lda * i + 0] : 1.0) * X[ix]; + const INDEX j_min = i + 1; + const INDEX j_max = GSL_MIN(N, i + K + 1); + INDEX jx = OFFSET(N, incX) + j_min * incX; + + for (j = j_min; j < j_max; j++) { + temp += X[jx] * A[lda * i + (j - i)]; + jx += incX; + } + + X[ix] = temp; + ix += incX; + } + } else if ((order == CblasRowMajor && Trans == CblasNoTrans && Uplo == CblasLower) + || (order == CblasColMajor && Trans == CblasTrans && Uplo == CblasUpper)) { + + INDEX ix = OFFSET(N, incX) + (N - 1) * incX; + for (i = N; i > 0 && i--;) { + BASE temp = (nonunit ? A[lda * i + K] : 1.0) * X[ix]; + const INDEX j_min = (i > K ? i - K : 0); + const INDEX j_max = i; + INDEX jx = OFFSET(N, incX) + j_min * incX; + for (j = j_min; j < j_max; j++) { + temp += X[jx] * A[lda * i + (K - i + j)]; + jx += incX; + } + X[ix] = temp; + ix -= incX; + } + + } else if ((order == CblasRowMajor && Trans == CblasTrans && Uplo == CblasUpper) + || (order == CblasColMajor && Trans == CblasNoTrans && Uplo == CblasLower)) { + /* form x := A'*x */ + INDEX ix = OFFSET(N, incX) + (N - 1) * incX; + + for (i = N; i > 0 && i--;) { + BASE temp = 0.0; + const INDEX j_min = (K > i ? 0 : i - K); + const INDEX j_max = i; + INDEX jx = OFFSET(N, incX) + j_min * incX; + for (j = j_min; j < j_max; j++) { + temp += X[jx] * A[lda * j + (i - j)]; + jx += incX; + } + if (nonunit) { + X[ix] = temp + X[ix] * A[lda * i + 0]; + } else { + X[ix] += temp; + } + ix -= incX; + } + } else if ((order == CblasRowMajor && Trans == CblasTrans && Uplo == CblasLower) + || (order == CblasColMajor && Trans == CblasNoTrans && Uplo == CblasUpper)) { + + INDEX ix = OFFSET(N, incX); + for (i = 0; i < N; i++) { + BASE temp = 0.0; + const INDEX j_min = i + 1; + const INDEX j_max = GSL_MIN(N, i + K + 1); + INDEX jx = OFFSET(N, incX) + j_min * incX; + for (j = j_min; j < j_max; j++) { + temp += X[jx] * A[lda * j + (K - j + i)]; + jx += incX; + } + if (nonunit) { + X[ix] = temp + X[ix] * A[lda * i + K]; + } else { + X[ix] += temp; + } + ix += incX; + } + } +} diff --git a/gsl-2.5/cblas/source_tbsv_c.h b/gsl-2.5/cblas/source_tbsv_c.h new file mode 100644 index 00000000..463e2cc9 --- /dev/null +++ b/gsl-2.5/cblas/source_tbsv_c.h @@ -0,0 +1,181 @@ +/* blas/source_tbsv_c.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + const int conj = (TransA == CblasConjTrans) ? -1 : 1; + const int Trans = (TransA != CblasConjTrans) ? TransA : CblasTrans; + const int nonunit = (Diag == CblasNonUnit); + INDEX i, j; + + CHECK_ARGS10(TBSV,order,Uplo,TransA,Diag,N,K,A,lda,X,incX); + + if (N == 0) + return; + + /* form x := inv( A )*x */ + + if ((order == CblasRowMajor && Trans == CblasNoTrans && Uplo == CblasUpper) + || (order == CblasColMajor && Trans == CblasTrans && Uplo == CblasLower)) { + + INDEX ix = OFFSET(N, incX) + incX * (N - 1); + + for (i = N; i > 0 && i--;) { + BASE tmp_real = REAL(X, ix); + BASE tmp_imag = IMAG(X, ix); + const INDEX j_min = i + 1; + const INDEX j_max = GSL_MIN(N, i + K + 1); + INDEX jx = OFFSET(N, incX) + j_min * incX; + for (j = j_min; j < j_max; j++) { + const BASE Aij_real = CONST_REAL(A, lda * i + (j - i)); + const BASE Aij_imag = conj * CONST_IMAG(A, lda * i + (j - i)); + const BASE x_real = REAL(X, jx); + const BASE x_imag = IMAG(X, jx); + tmp_real -= Aij_real * x_real - Aij_imag * x_imag; + tmp_imag -= Aij_real * x_imag + Aij_imag * x_real; + jx += incX; + } + + if (nonunit) { + const BASE a_real = CONST_REAL(A, lda * i + 0); + const BASE a_imag = conj * CONST_IMAG(A, lda * i + 0); + const BASE s = xhypot(a_real, a_imag); + const BASE b_real = a_real / s; + const BASE b_imag = a_imag / s; + REAL(X, ix) = (tmp_real * b_real + tmp_imag * b_imag) / s; + IMAG(X, ix) = (tmp_imag * b_real - tmp_real * b_imag) / s; + } else { + REAL(X, ix) = tmp_real; + IMAG(X, ix) = tmp_imag; + } + ix -= incX; + } + + } else if ((order == CblasRowMajor && Trans == CblasNoTrans && Uplo == CblasLower) + || (order == CblasColMajor && Trans == CblasTrans && Uplo == CblasUpper)) { + /* forward substitution */ + + INDEX ix = OFFSET(N, incX); + + for (i = 0; i < N; i++) { + BASE tmp_real = REAL(X, ix); + BASE tmp_imag = IMAG(X, ix); + const INDEX j_min = (K > i ? 0 : i - K); + const INDEX j_max = i; + INDEX jx = OFFSET(N, incX) + j_min * incX; + for (j = j_min; j < j_max; j++) { + const BASE Aij_real = CONST_REAL(A, lda * i + (K + j - i)); + const BASE Aij_imag = conj * CONST_IMAG(A, lda * i + (K + j - i)); + const BASE x_real = REAL(X, jx); + const BASE x_imag = IMAG(X, jx); + tmp_real -= Aij_real * x_real - Aij_imag * x_imag; + tmp_imag -= Aij_real * x_imag + Aij_imag * x_real; + jx += incX; + } + if (nonunit) { + const BASE a_real = CONST_REAL(A, lda * i + K); + const BASE a_imag = conj * CONST_IMAG(A, lda * i + K); + const BASE s = xhypot(a_real, a_imag); + const BASE b_real = a_real / s; + const BASE b_imag = a_imag / s; + REAL(X, ix) = (tmp_real * b_real + tmp_imag * b_imag) / s; + IMAG(X, ix) = (tmp_imag * b_real - tmp_real * b_imag) / s; + } else { + REAL(X, ix) = tmp_real; + IMAG(X, ix) = tmp_imag; + } + ix += incX; + } + } else if ((order == CblasRowMajor && Trans == CblasTrans && Uplo == CblasUpper) + || (order == CblasColMajor && Trans == CblasNoTrans && Uplo == CblasLower)) { + /* form x := inv( A' )*x */ + + /* forward substitution */ + + INDEX ix = OFFSET(N, incX); + + for (i = 0; i < N; i++) { + BASE tmp_real = REAL(X, ix); + BASE tmp_imag = IMAG(X, ix); + const INDEX j_min = (K > i ? 0 : i - K); + const INDEX j_max = i; + INDEX jx = OFFSET(N, incX) + j_min * incX; + for (j = j_min; j < j_max; j++) { + const BASE Aij_real = CONST_REAL(A, (i - j) + lda * j); + const BASE Aij_imag = conj * CONST_IMAG(A, (i - j) + lda * j); + const BASE x_real = REAL(X, jx); + const BASE x_imag = IMAG(X, jx); + tmp_real -= Aij_real * x_real - Aij_imag * x_imag; + tmp_imag -= Aij_real * x_imag + Aij_imag * x_real; + jx += incX; + } + if (nonunit) { + const BASE a_real = CONST_REAL(A, 0 + lda * i); + const BASE a_imag = conj * CONST_IMAG(A, 0 + lda * i); + const BASE s = xhypot(a_real, a_imag); + const BASE b_real = a_real / s; + const BASE b_imag = a_imag / s; + REAL(X, ix) = (tmp_real * b_real + tmp_imag * b_imag) / s; + IMAG(X, ix) = (tmp_imag * b_real - tmp_real * b_imag) / s; + } else { + REAL(X, ix) = tmp_real; + IMAG(X, ix) = tmp_imag; + } + ix += incX; + } + } else if ((order == CblasRowMajor && Trans == CblasTrans && Uplo == CblasLower) + || (order == CblasColMajor && Trans == CblasNoTrans && Uplo == CblasUpper)) { + + /* backsubstitution */ + + INDEX ix = OFFSET(N, incX) + incX * (N - 1); + + for (i = N; i > 0 && i--;) { + BASE tmp_real = REAL(X, ix); + BASE tmp_imag = IMAG(X, ix); + const INDEX j_min = i + 1; + const INDEX j_max = GSL_MIN(N, i + K + 1); + INDEX jx = OFFSET(N, incX) + j_min * incX; + for (j = j_min; j < j_max; j++) { + const BASE Aij_real = CONST_REAL(A, (K + i - j) + lda * j); + const BASE Aij_imag = conj * CONST_IMAG(A, (K + i - j) + lda * j); + const BASE x_real = REAL(X, jx); + const BASE x_imag = IMAG(X, jx); + tmp_real -= Aij_real * x_real - Aij_imag * x_imag; + tmp_imag -= Aij_real * x_imag + Aij_imag * x_real; + jx += incX; + } + + if (nonunit) { + const BASE a_real = CONST_REAL(A, K + lda * i); + const BASE a_imag = conj * CONST_IMAG(A, K + lda * i); + const BASE s = xhypot(a_real, a_imag); + const BASE b_real = a_real / s; + const BASE b_imag = a_imag / s; + REAL(X, ix) = (tmp_real * b_real + tmp_imag * b_imag) / s; + IMAG(X, ix) = (tmp_imag * b_real - tmp_real * b_imag) / s; + } else { + REAL(X, ix) = tmp_real; + IMAG(X, ix) = tmp_imag; + } + ix -= incX; + } + } else { + BLAS_ERROR("unrecognized operation"); + } +} diff --git a/gsl-2.5/cblas/source_tbsv_r.h b/gsl-2.5/cblas/source_tbsv_r.h new file mode 100644 index 00000000..4958c423 --- /dev/null +++ b/gsl-2.5/cblas/source_tbsv_r.h @@ -0,0 +1,125 @@ +/* blas/source_tbsv_r.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + const int nonunit = (Diag == CblasNonUnit); + INDEX i, j; + const int Trans = (TransA != CblasConjTrans) ? TransA : CblasTrans; + + CHECK_ARGS10(TBSV,order,Uplo,TransA,Diag,N,K,A,lda,X,incX); + + if (N == 0) + return; + + /* form x := inv( A )*x */ + + if ((order == CblasRowMajor && Trans == CblasNoTrans && Uplo == CblasUpper) + || (order == CblasColMajor && Trans == CblasTrans && Uplo == CblasLower)) { + /* backsubstitution */ + INDEX ix = OFFSET(N, incX) + incX * (N - 1); + for (i = N; i > 0 && i--;) { + BASE tmp = X[ix]; + const INDEX j_min = i + 1; + const INDEX j_max = GSL_MIN(N, i + K + 1); + INDEX jx = OFFSET(N, incX) + j_min * incX; + for (j = j_min; j < j_max; j++) { + const BASE Aij = A[lda * i + (j - i)]; + tmp -= Aij * X[jx]; + jx += incX; + } + if (nonunit) { + X[ix] = tmp / A[lda * i + 0]; + } else { + X[ix] = tmp; + } + ix -= incX; + } + } else if ((order == CblasRowMajor && Trans == CblasNoTrans && Uplo == CblasLower) + || (order == CblasColMajor && Trans == CblasTrans && Uplo == CblasUpper)) { + + /* forward substitution */ + INDEX ix = OFFSET(N, incX); + + for (i = 0; i < N; i++) { + BASE tmp = X[ix]; + const INDEX j_min = (i > K ? i - K : 0); + const INDEX j_max = i; + INDEX jx = OFFSET(N, incX) + j_min * incX; + for (j = j_min; j < j_max; j++) { + const BASE Aij = A[lda * i + (K + j - i)]; + tmp -= Aij * X[jx]; + jx += incX; + } + if (nonunit) { + X[ix] = tmp / A[lda * i + K]; + } else { + X[ix] = tmp; + } + ix += incX; + } + } else if ((order == CblasRowMajor && Trans == CblasTrans && Uplo == CblasUpper) + || (order == CblasColMajor && Trans == CblasNoTrans && Uplo == CblasLower)) { + + /* form x := inv( A' )*x */ + + /* forward substitution */ + INDEX ix = OFFSET(N, incX); + for (i = 0; i < N; i++) { + BASE tmp = X[ix]; + const INDEX j_min = (K > i ? 0 : i - K); + const INDEX j_max = i; + INDEX jx = OFFSET(N, incX) + j_min * incX; + for (j = j_min; j < j_max; j++) { + const BASE Aji = A[(i - j) + lda * j]; + tmp -= Aji * X[jx]; + jx += incX; + } + if (nonunit) { + X[ix] = tmp / A[0 + lda * i]; + } else { + X[ix] = tmp; + } + ix += incX; + } + } else if ((order == CblasRowMajor && Trans == CblasTrans && Uplo == CblasLower) + || (order == CblasColMajor && Trans == CblasNoTrans && Uplo == CblasUpper)) { + + /* backsubstitution */ + INDEX ix = OFFSET(N, incX) + (N - 1) * incX; + for (i = N; i > 0 && i--;) { + BASE tmp = X[ix]; + const INDEX j_min = i + 1; + const INDEX j_max = GSL_MIN(N, i + K + 1); + INDEX jx = OFFSET(N, incX) + j_min * incX; + for (j = j_min; j < j_max; j++) { + const BASE Aji = A[(K + i - j) + lda * j]; + tmp -= Aji * X[jx]; + jx += incX; + } + if (nonunit) { + X[ix] = tmp / A[K + lda * i]; + } else { + X[ix] = tmp; + } + ix -= incX; + } + } else { + BLAS_ERROR("unrecognized operation"); + } +} diff --git a/gsl-2.5/cblas/source_tpmv_c.h b/gsl-2.5/cblas/source_tpmv_c.h new file mode 100644 index 00000000..692b9428 --- /dev/null +++ b/gsl-2.5/cblas/source_tpmv_c.h @@ -0,0 +1,174 @@ +/* blas/source_tpmv_c.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + INDEX i, j; + const int conj = (TransA == CblasConjTrans) ? -1 : 1; + const int Trans = (TransA != CblasConjTrans) ? TransA : CblasTrans; + const int nonunit = (Diag == CblasNonUnit); + + CHECK_ARGS8(TPMV,order,Uplo,TransA,Diag,N,Ap,X,incX); + + if ((order == CblasRowMajor && Trans == CblasNoTrans && Uplo == CblasUpper) + || (order == CblasColMajor && Trans == CblasTrans && Uplo == CblasLower)) { + /* form x:= A*x */ + + INDEX ix = OFFSET(N, incX); + for (i = 0; i < N; i++) { + const BASE Aii_real = CONST_REAL(Ap, TPUP(N, i, i)); + const BASE Aii_imag = conj * CONST_IMAG(Ap, TPUP(N, i, i)); + BASE temp_r; + BASE temp_i; + if (nonunit) { + BASE x_real = REAL(X, ix); + BASE x_imag = IMAG(X, ix); + temp_r = Aii_real * x_real - Aii_imag * x_imag; + temp_i = Aii_real * x_imag + Aii_imag * x_real; + } else { + temp_r = REAL(X, ix); + temp_i = IMAG(X, ix); + } + + { + INDEX jx = OFFSET(N, incX) + (i + 1) * incX; + for (j = i + 1; j < N; j++) { + const BASE Aij_real = CONST_REAL(Ap, TPUP(N, i, j)); + const BASE Aij_imag = conj * CONST_IMAG(Ap, TPUP(N, i, j)); + BASE x_real = REAL(X, jx); + BASE x_imag = IMAG(X, jx); + temp_r += Aij_real * x_real - Aij_imag * x_imag; + temp_i += Aij_real * x_imag + Aij_imag * x_real; + jx += incX; + } + } + + REAL(X, ix) = temp_r; + IMAG(X, ix) = temp_i; + ix += incX; + } + } else if ((order == CblasRowMajor && Trans == CblasNoTrans && Uplo == CblasLower) + || (order == CblasColMajor && Trans == CblasTrans && Uplo == CblasUpper)) { + + INDEX ix = OFFSET(N, incX) + incX * (N - 1); + for (i = N; i > 0 && i--;) { + const BASE Aii_real = CONST_REAL(Ap, TPLO(N, i, i)); + const BASE Aii_imag = conj * CONST_IMAG(Ap, TPLO(N, i, i)); + BASE temp_r; + BASE temp_i; + if (nonunit) { + BASE x_real = REAL(X, ix); + BASE x_imag = IMAG(X, ix); + temp_r = Aii_real * x_real - Aii_imag * x_imag; + temp_i = Aii_real * x_imag + Aii_imag * x_real; + } else { + temp_r = REAL(X, ix); + temp_i = IMAG(X, ix); + } + + { + INDEX jx = OFFSET(N, incX); + for (j = 0; j < i; j++) { + const BASE Aij_real = CONST_REAL(Ap, TPLO(N, i, j)); + const BASE Aij_imag = conj * CONST_IMAG(Ap, TPLO(N, i, j)); + BASE x_real = REAL(X, jx); + BASE x_imag = IMAG(X, jx); + temp_r += Aij_real * x_real - Aij_imag * x_imag; + temp_i += Aij_real * x_imag + Aij_imag * x_real; + jx += incX; + } + } + + REAL(X, ix) = temp_r; + IMAG(X, ix) = temp_i; + ix -= incX; + } + } else if ((order == CblasRowMajor && Trans == CblasTrans && Uplo == CblasUpper) + || (order == CblasColMajor && Trans == CblasNoTrans && Uplo == CblasLower)) { + /* form x := A'*x */ + + INDEX ix = OFFSET(N, incX) + incX * (N - 1); + for (i = N; i > 0 && i--;) { + const BASE Aii_real = CONST_REAL(Ap, TPUP(N, i, i)); + const BASE Aii_imag = conj * CONST_IMAG(Ap, TPUP(N, i, i)); + BASE temp_r; + BASE temp_i; + if (nonunit) { + BASE x_real = REAL(X, ix); + BASE x_imag = IMAG(X, ix); + temp_r = Aii_real * x_real - Aii_imag * x_imag; + temp_i = Aii_real * x_imag + Aii_imag * x_real; + } else { + temp_r = REAL(X, ix); + temp_i = IMAG(X, ix); + } + { + INDEX jx = OFFSET(N, incX); + for (j = 0; j < i; j++) { + BASE x_real = REAL(X, jx); + BASE x_imag = IMAG(X, jx); + const BASE Aji_real = CONST_REAL(Ap, TPUP(N, j, i)); + const BASE Aji_imag = conj * CONST_IMAG(Ap, TPUP(N, j, i)); + temp_r += Aji_real * x_real - Aji_imag * x_imag; + temp_i += Aji_real * x_imag + Aji_imag * x_real; + jx += incX; + } + } + + REAL(X, ix) = temp_r; + IMAG(X, ix) = temp_i; + ix -= incX; + } + } else if ((order == CblasRowMajor && Trans == CblasTrans && Uplo == CblasLower) + || (order == CblasColMajor && Trans == CblasNoTrans && Uplo == CblasUpper)) { + + INDEX ix = OFFSET(N, incX); + for (i = 0; i < N; i++) { + const BASE Aii_real = CONST_REAL(Ap, TPLO(N, i, i)); + const BASE Aii_imag = conj * CONST_IMAG(Ap, TPLO(N, i, i)); + BASE temp_r; + BASE temp_i; + if (nonunit) { + BASE x_real = REAL(X, ix); + BASE x_imag = IMAG(X, ix); + temp_r = Aii_real * x_real - Aii_imag * x_imag; + temp_i = Aii_real * x_imag + Aii_imag * x_real; + } else { + temp_r = REAL(X, ix); + temp_i = IMAG(X, ix); + } + { + INDEX jx = OFFSET(N, incX) + (i + 1) * incX; + for (j = i + 1; j < N; j++) { + BASE x_real = REAL(X, jx); + BASE x_imag = IMAG(X, jx); + const BASE Aji_real = CONST_REAL(Ap, TPLO(N, j, i)); + const BASE Aji_imag = conj * CONST_IMAG(Ap, TPLO(N, j, i)); + temp_r += Aji_real * x_real - Aji_imag * x_imag; + temp_i += Aji_real * x_imag + Aji_imag * x_real; + jx += incX; + } + } + REAL(X, ix) = temp_r; + IMAG(X, ix) = temp_i; + ix += incX; + } + } else { + BLAS_ERROR("unrecognized operation"); + } +} diff --git a/gsl-2.5/cblas/source_tpmv_r.h b/gsl-2.5/cblas/source_tpmv_r.h new file mode 100644 index 00000000..00de7a8c --- /dev/null +++ b/gsl-2.5/cblas/source_tpmv_r.h @@ -0,0 +1,100 @@ +/* blas/source_tpmv_r.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + INDEX i, j; + + const int nonunit = (Diag == CblasNonUnit); + const int Trans = (TransA != CblasConjTrans) ? TransA : CblasTrans; + + CHECK_ARGS8(TPMV,order,Uplo,TransA,Diag,N,Ap,X,incX); + + if (N == 0) + return; + + if ((order == CblasRowMajor && Trans == CblasNoTrans && Uplo == CblasUpper) + || (order == CblasColMajor && Trans == CblasTrans && Uplo == CblasLower)) { + /* form x:= A*x */ + + INDEX ix = OFFSET(N, incX); + for (i = 0; i < N; i++) { + BASE atmp = Ap[TPUP(N, i, i)]; + BASE temp = (nonunit ? X[ix] * atmp : X[ix]); + INDEX jx = OFFSET(N, incX) + (i + 1) * incX; + for (j = i + 1; j < N; j++) { + atmp = Ap[TPUP(N, i, j)]; + temp += atmp * X[jx]; + jx += incX; + } + X[ix] = temp; + ix += incX; + } + } else if ((order == CblasRowMajor && Trans == CblasNoTrans && Uplo == CblasLower) + || (order == CblasColMajor && Trans == CblasTrans && Uplo == CblasUpper)) { + + INDEX ix = OFFSET(N, incX) + (N - 1) * incX; + for (i = N; i > 0 && i--;) { + BASE atmp = Ap[TPLO(N, i, i)]; + BASE temp = (nonunit ? X[ix] * atmp : X[ix]); + INDEX jx = OFFSET(N, incX); + for (j = 0; j < i; j++) { + atmp = Ap[TPLO(N, i, j)]; + temp += atmp * X[jx]; + jx += incX; + } + X[ix] = temp; + ix -= incX; + } + } else if ((order == CblasRowMajor && Trans == CblasTrans && Uplo == CblasUpper) + || (order == CblasColMajor && Trans == CblasNoTrans && Uplo == CblasLower)) { + /* form x := A'*x */ + + INDEX ix = OFFSET(N, incX) + (N - 1) * incX; + for (i = N; i > 0 && i--;) { + BASE atmp = Ap[TPUP(N, i, i)]; + BASE temp = (nonunit ? X[ix] * atmp : X[ix]); + INDEX jx = OFFSET(N, incX); + for (j = 0; j < i; j++) { + atmp = Ap[TPUP(N, j, i)]; + temp += atmp * X[jx]; + jx += incX; + } + X[ix] = temp; + ix -= incX; + } + } else if ((order == CblasRowMajor && Trans == CblasTrans && Uplo == CblasLower) + || (order == CblasColMajor && Trans == CblasNoTrans && Uplo == CblasUpper)) { + + INDEX ix = OFFSET(N, incX); + for (i = 0; i < N; i++) { + BASE atmp = Ap[TPLO(N, i, i)]; + BASE temp = (nonunit ? X[ix] * atmp : X[ix]); + INDEX jx = OFFSET(N, incX) + (i + 1) * incX; + for (j = i + 1; j < N; j++) { + atmp = Ap[TPLO(N, j, i)]; + temp += atmp * X[jx]; + jx += incX; + } + X[ix] = temp; + ix += incX; + } + } else { + BLAS_ERROR("unrecognized operation"); + } +} diff --git a/gsl-2.5/cblas/source_tpsv_c.h b/gsl-2.5/cblas/source_tpsv_c.h new file mode 100644 index 00000000..7e74dba8 --- /dev/null +++ b/gsl-2.5/cblas/source_tpsv_c.h @@ -0,0 +1,229 @@ +/* blas/source_tpsv_c.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + const int conj = (TransA == CblasConjTrans) ? -1 : 1; + const int Trans = (TransA != CblasConjTrans) ? TransA : CblasTrans; + const int nonunit = (Diag == CblasNonUnit); + INDEX i, j; + + CHECK_ARGS8(TPSV,order,Uplo,TransA,Diag,N,Ap,X,incX); + + if (N == 0) + return; + + /* form x := inv( A )*x */ + + if ((order == CblasRowMajor && Trans == CblasNoTrans && Uplo == CblasUpper) + || (order == CblasColMajor && Trans == CblasTrans && Uplo == CblasLower)) { + + INDEX ix = OFFSET(N, incX) + incX * (N - 1); + + if (nonunit) { + const BASE a_real = CONST_REAL(Ap, TPUP(N, (N - 1), (N - 1))); + const BASE a_imag = conj * CONST_IMAG(Ap, TPUP(N, (N - 1), (N - 1))); + const BASE x_real = REAL(X, ix); + const BASE x_imag = IMAG(X, ix); + const BASE s = xhypot(a_real, a_imag); + const BASE b_real = a_real / s; + const BASE b_imag = a_imag / s; + REAL(X, ix) = (x_real * b_real + x_imag * b_imag) / s; + IMAG(X, ix) = (x_imag * b_real - b_imag * x_real) / s; + } + + ix -= incX; + + for (i = N - 1; i > 0 && i--;) { + BASE tmp_real = REAL(X, ix); + BASE tmp_imag = IMAG(X, ix); + INDEX jx = ix + incX; + for (j = i + 1; j < N; j++) { + const BASE Aij_real = CONST_REAL(Ap, TPUP(N, i, j)); + const BASE Aij_imag = conj * CONST_IMAG(Ap, TPUP(N, i, j)); + const BASE x_real = REAL(X, jx); + const BASE x_imag = IMAG(X, jx); + tmp_real -= Aij_real * x_real - Aij_imag * x_imag; + tmp_imag -= Aij_real * x_imag + Aij_imag * x_real; + jx += incX; + } + + if (nonunit) { + const BASE a_real = CONST_REAL(Ap, TPUP(N, i, i)); + const BASE a_imag = conj * CONST_IMAG(Ap, TPUP(N, i, i)); + const BASE s = xhypot(a_real, a_imag); + const BASE b_real = a_real / s; + const BASE b_imag = a_imag / s; + REAL(X, ix) = (tmp_real * b_real + tmp_imag * b_imag) / s; + IMAG(X, ix) = (tmp_imag * b_real - tmp_real * b_imag) / s; + } else { + REAL(X, ix) = tmp_real; + IMAG(X, ix) = tmp_imag; + } + ix -= incX; + } + + } else if ((order == CblasRowMajor && Trans == CblasNoTrans && Uplo == CblasLower) + || (order == CblasColMajor && Trans == CblasTrans && Uplo == CblasUpper)) { + /* forward substitution */ + + INDEX ix = OFFSET(N, incX); + + if (nonunit) { + const BASE a_real = CONST_REAL(Ap, TPLO(N, 0, 0)); + const BASE a_imag = conj * CONST_IMAG(Ap, TPLO(N, 0, 0)); + const BASE x_real = REAL(X, ix); + const BASE x_imag = IMAG(X, ix); + const BASE s = xhypot(a_real, a_imag); + const BASE b_real = a_real / s; + const BASE b_imag = a_imag / s; + REAL(X, ix) = (x_real * b_real + x_imag * b_imag) / s; + IMAG(X, ix) = (x_imag * b_real - b_imag * x_real) / s; + } + + ix += incX; + + for (i = 1; i < N; i++) { + BASE tmp_real = REAL(X, ix); + BASE tmp_imag = IMAG(X, ix); + INDEX jx = OFFSET(N, incX); + for (j = 0; j < i; j++) { + const BASE Aij_real = CONST_REAL(Ap, TPLO(N, i, j)); + const BASE Aij_imag = conj * CONST_IMAG(Ap, TPLO(N, i, j)); + const BASE x_real = REAL(X, jx); + const BASE x_imag = IMAG(X, jx); + tmp_real -= Aij_real * x_real - Aij_imag * x_imag; + tmp_imag -= Aij_real * x_imag + Aij_imag * x_real; + jx += incX; + } + if (nonunit) { + const BASE a_real = CONST_REAL(Ap, TPLO(N, i, i)); + const BASE a_imag = conj * CONST_IMAG(Ap, TPLO(N, i, i)); + const BASE s = xhypot(a_real, a_imag); + const BASE b_real = a_real / s; + const BASE b_imag = a_imag / s; + REAL(X, ix) = (tmp_real * b_real + tmp_imag * b_imag) / s; + IMAG(X, ix) = (tmp_imag * b_real - tmp_real * b_imag) / s; + } else { + REAL(X, ix) = tmp_real; + IMAG(X, ix) = tmp_imag; + } + ix += incX; + } + } else if ((order == CblasRowMajor && Trans == CblasTrans && Uplo == CblasUpper) + || (order == CblasColMajor && Trans == CblasNoTrans && Uplo == CblasLower)) { + /* form x := inv( A' )*x */ + + /* forward substitution */ + + INDEX ix = OFFSET(N, incX); + + if (nonunit) { + const BASE a_real = CONST_REAL(Ap, TPUP(N, 0, 0)); + const BASE a_imag = conj * CONST_IMAG(Ap, TPUP(N, 0, 0)); + const BASE x_real = REAL(X, ix); + const BASE x_imag = IMAG(X, ix); + const BASE s = xhypot(a_real, a_imag); + const BASE b_real = a_real / s; + const BASE b_imag = a_imag / s; + REAL(X, ix) = (x_real * b_real + x_imag * b_imag) / s; + IMAG(X, ix) = (x_imag * b_real - b_imag * x_real) / s; + } + + ix += incX; + + for (i = 1; i < N; i++) { + BASE tmp_real = REAL(X, ix); + BASE tmp_imag = IMAG(X, ix); + INDEX jx = OFFSET(N, incX); + for (j = 0; j < i; j++) { + const BASE Aij_real = CONST_REAL(Ap, TPUP(N, j, i)); + const BASE Aij_imag = conj * CONST_IMAG(Ap, TPUP(N, j, i)); + const BASE x_real = REAL(X, jx); + const BASE x_imag = IMAG(X, jx); + tmp_real -= Aij_real * x_real - Aij_imag * x_imag; + tmp_imag -= Aij_real * x_imag + Aij_imag * x_real; + jx += incX; + } + if (nonunit) { + const BASE a_real = CONST_REAL(Ap, TPUP(N, i, i)); + const BASE a_imag = conj * CONST_IMAG(Ap, TPUP(N, i, i)); + const BASE s = xhypot(a_real, a_imag); + const BASE b_real = a_real / s; + const BASE b_imag = a_imag / s; + REAL(X, ix) = (tmp_real * b_real + tmp_imag * b_imag) / s; + IMAG(X, ix) = (tmp_imag * b_real - tmp_real * b_imag) / s; + } else { + REAL(X, ix) = tmp_real; + IMAG(X, ix) = tmp_imag; + } + ix += incX; + } + } else if ((order == CblasRowMajor && Trans == CblasTrans && Uplo == CblasLower) + || (order == CblasColMajor && Trans == CblasNoTrans && Uplo == CblasUpper)) { + + /* backsubstitution */ + + INDEX ix = OFFSET(N, incX) + incX * (N - 1); + + if (nonunit) { + const BASE a_real = CONST_REAL(Ap, TPLO(N, (N - 1), (N - 1))); + const BASE a_imag = conj * CONST_IMAG(Ap, TPLO(N, (N - 1), (N - 1))); + const BASE x_real = REAL(X, ix); + const BASE x_imag = IMAG(X, ix); + const BASE s = xhypot(a_real, a_imag); + const BASE b_real = a_real / s; + const BASE b_imag = a_imag / s; + REAL(X, ix) = (x_real * b_real + x_imag * b_imag) / s; + IMAG(X, ix) = (x_imag * b_real - b_imag * x_real) / s; + } + + ix -= incX; + + for (i = N - 1; i > 0 && i--;) { + BASE tmp_real = REAL(X, ix); + BASE tmp_imag = IMAG(X, ix); + INDEX jx = ix + incX; + for (j = i + 1; j < N; j++) { + const BASE Aij_real = CONST_REAL(Ap, TPLO(N, j, i)); + const BASE Aij_imag = conj * CONST_IMAG(Ap, TPLO(N, j, i)); + const BASE x_real = REAL(X, jx); + const BASE x_imag = IMAG(X, jx); + tmp_real -= Aij_real * x_real - Aij_imag * x_imag; + tmp_imag -= Aij_real * x_imag + Aij_imag * x_real; + jx += incX; + } + + if (nonunit) { + const BASE a_real = CONST_REAL(Ap, TPLO(N, i, i)); + const BASE a_imag = conj * CONST_IMAG(Ap, TPLO(N, i, i)); + const BASE s = xhypot(a_real, a_imag); + const BASE b_real = a_real / s; + const BASE b_imag = a_imag / s; + REAL(X, ix) = (tmp_real * b_real + tmp_imag * b_imag) / s; + IMAG(X, ix) = (tmp_imag * b_real - tmp_real * b_imag) / s; + } else { + REAL(X, ix) = tmp_real; + IMAG(X, ix) = tmp_imag; + } + ix -= incX; + } + } else { + BLAS_ERROR("unrecognized operation"); + } +} diff --git a/gsl-2.5/cblas/source_tpsv_r.h b/gsl-2.5/cblas/source_tpsv_r.h new file mode 100644 index 00000000..b2402610 --- /dev/null +++ b/gsl-2.5/cblas/source_tpsv_r.h @@ -0,0 +1,134 @@ +/* blas/source_tpsv_r.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + INDEX i, j; + + const int nonunit = (Diag == CblasNonUnit); + const int Trans = (TransA != CblasConjTrans) ? TransA : CblasTrans; + + CHECK_ARGS8(TPSV,order,Uplo,TransA,Diag,N,Ap,X,incX); + + if (N == 0) + return; + + /* form x := inv( A )*x */ + + if ((order == CblasRowMajor && Trans == CblasNoTrans && Uplo == CblasUpper) + || (order == CblasColMajor && Trans == CblasTrans && Uplo == CblasLower)) { + /* backsubstitution */ + INDEX ix = OFFSET(N, incX) + incX * (N - 1); + if (nonunit) { + X[ix] = X[ix] / Ap[TPUP(N, (N - 1), (N - 1))]; + } + ix -= incX; + for (i = N - 1; i > 0 && i--;) { + BASE tmp = X[ix]; + INDEX jx = ix + incX; + for (j = i + 1; j < N; j++) { + const BASE Aij = Ap[TPUP(N, i, j)]; + tmp -= Aij * X[jx]; + jx += incX; + } + if (nonunit) { + X[ix] = tmp / Ap[TPUP(N, i, i)]; + } else { + X[ix] = tmp; + } + ix -= incX; + } + } else if ((order == CblasRowMajor && Trans == CblasNoTrans && Uplo == CblasLower) + || (order == CblasColMajor && Trans == CblasTrans && Uplo == CblasUpper)) { + + /* forward substitution */ + INDEX ix = OFFSET(N, incX); + if (nonunit) { + X[ix] = X[ix] / Ap[TPLO(N, 0, 0)]; + } + ix += incX; + for (i = 1; i < N; i++) { + BASE tmp = X[ix]; + INDEX jx = OFFSET(N, incX); + for (j = 0; j < i; j++) { + const BASE Aij = Ap[TPLO(N, i, j)]; + tmp -= Aij * X[jx]; + jx += incX; + } + if (nonunit) { + X[ix] = tmp / Ap[TPLO(N, i, j)]; + } else { + X[ix] = tmp; + } + ix += incX; + } + } else if ((order == CblasRowMajor && Trans == CblasTrans && Uplo == CblasUpper) + || (order == CblasColMajor && Trans == CblasNoTrans && Uplo == CblasLower)) { + + /* form x := inv( A' )*x */ + + /* forward substitution */ + INDEX ix = OFFSET(N, incX); + if (nonunit) { + X[ix] = X[ix] / Ap[TPUP(N, 0, 0)]; + } + ix += incX; + for (i = 1; i < N; i++) { + BASE tmp = X[ix]; + INDEX jx = OFFSET(N, incX); + for (j = 0; j < i; j++) { + const BASE Aji = Ap[TPUP(N, j, i)]; + tmp -= Aji * X[jx]; + jx += incX; + } + if (nonunit) { + X[ix] = tmp / Ap[TPUP(N, i, i)]; + } else { + X[ix] = tmp; + } + ix += incX; + } + } else if ((order == CblasRowMajor && Trans == CblasTrans && Uplo == CblasLower) + || (order == CblasColMajor && Trans == CblasNoTrans && Uplo == CblasUpper)) { + + /* backsubstitution */ + INDEX ix = OFFSET(N, incX) + (N - 1) * incX; + if (nonunit) { + X[ix] = X[ix] / Ap[TPLO(N, (N - 1), (N - 1))]; + } + ix -= incX; + for (i = N - 1; i > 0 && i--;) { + BASE tmp = X[ix]; + INDEX jx = ix + incX; + for (j = i + 1; j < N; j++) { + const BASE Aji = Ap[TPLO(N, j, i)]; + tmp -= Aji * X[jx]; + jx += incX; + } + if (nonunit) { + X[ix] = tmp / Ap[TPLO(N, i, i)]; + } else { + X[ix] = tmp; + } + ix -= incX; + } + } else { + BLAS_ERROR("unrecognized operation"); + } + +} diff --git a/gsl-2.5/cblas/source_trmm_c.h b/gsl-2.5/cblas/source_trmm_c.h new file mode 100644 index 00000000..6c52a624 --- /dev/null +++ b/gsl-2.5/cblas/source_trmm_c.h @@ -0,0 +1,335 @@ +/* blas/source_trmm_c.h + * + * Copyright (C) 2001, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + INDEX i, j, k; + INDEX n1, n2; + + const int nonunit = (Diag == CblasNonUnit); + const int conj = (TransA == CblasConjTrans) ? -1 : 1; + int side, uplo, trans; + + CHECK_ARGS12(TRMM,Order,Side,Uplo,TransA,Diag,M,N,alpha,A,lda,B,ldb); + + { + const BASE alpha_real = CONST_REAL0(alpha); + const BASE alpha_imag = CONST_IMAG0(alpha); + + if (Order == CblasRowMajor) { + n1 = M; + n2 = N; + side = Side; + uplo = Uplo; + trans = (TransA == CblasNoTrans) ? CblasNoTrans : CblasTrans; + } else { + n1 = N; + n2 = M; + side = (Side == CblasLeft) ? CblasRight : CblasLeft; /* exchanged */ + uplo = (Uplo == CblasUpper) ? CblasLower : CblasUpper; /* exchanged */ + trans = (TransA == CblasNoTrans) ? CblasNoTrans : CblasTrans; /* same */ + } + + if (side == CblasLeft && uplo == CblasUpper && trans == CblasNoTrans) { + + /* form B := alpha * TriU(A)*B */ + + for (i = 0; i < n1; i++) { + for (j = 0; j < n2; j++) { + BASE temp_real = 0.0; + BASE temp_imag = 0.0; + + if (nonunit) { + const BASE Aii_real = CONST_REAL(A, i * lda + i); + const BASE Aii_imag = conj * CONST_IMAG(A, i * lda + i); + const BASE Bij_real = REAL(B, i * ldb + j); + const BASE Bij_imag = IMAG(B, i * ldb + j); + temp_real = Aii_real * Bij_real - Aii_imag * Bij_imag; + temp_imag = Aii_real * Bij_imag + Aii_imag * Bij_real; + } else { + temp_real = REAL(B, i * ldb + j); + temp_imag = IMAG(B, i * ldb + j); + } + + for (k = i + 1; k < n1; k++) { + const BASE Aik_real = CONST_REAL(A, i * lda + k); + const BASE Aik_imag = conj * CONST_IMAG(A, i * lda + k); + const BASE Bkj_real = REAL(B, k * ldb + j); + const BASE Bkj_imag = IMAG(B, k * ldb + j); + temp_real += Aik_real * Bkj_real - Aik_imag * Bkj_imag; + temp_imag += Aik_real * Bkj_imag + Aik_imag * Bkj_real; + } + + REAL(B, ldb * i + j) = alpha_real * temp_real - alpha_imag * temp_imag; + IMAG(B, ldb * i + j) = alpha_real * temp_imag + alpha_imag * temp_real; + } + } + + } else if (side == CblasLeft && uplo == CblasUpper && trans == CblasTrans) { + + /* form B := alpha * (TriU(A))' *B */ + + for (i = n1; i > 0 && i--;) { + for (j = 0; j < n2; j++) { + BASE temp_real = 0.0; + BASE temp_imag = 0.0; + + for (k = 0; k < i; k++) { + const BASE Aki_real = CONST_REAL(A, k * lda + i); + const BASE Aki_imag = conj * CONST_IMAG(A, k * lda + i); + const BASE Bkj_real = REAL(B, k * ldb + j); + const BASE Bkj_imag = IMAG(B, k * ldb + j); + temp_real += Aki_real * Bkj_real - Aki_imag * Bkj_imag; + temp_imag += Aki_real * Bkj_imag + Aki_imag * Bkj_real; + } + + if (nonunit) { + const BASE Aii_real = CONST_REAL(A, i * lda + i); + const BASE Aii_imag = conj * CONST_IMAG(A, i * lda + i); + const BASE Bij_real = REAL(B, i * ldb + j); + const BASE Bij_imag = IMAG(B, i * ldb + j); + temp_real += Aii_real * Bij_real - Aii_imag * Bij_imag; + temp_imag += Aii_real * Bij_imag + Aii_imag * Bij_real; + } else { + temp_real += REAL(B, i * ldb + j); + temp_imag += IMAG(B, i * ldb + j); + } + + REAL(B, ldb * i + j) = alpha_real * temp_real - alpha_imag * temp_imag; + IMAG(B, ldb * i + j) = alpha_real * temp_imag + alpha_imag * temp_real; + } + } + + } else if (side == CblasLeft && uplo == CblasLower && trans == CblasNoTrans) { + + /* form B := alpha * TriL(A)*B */ + + + for (i = n1; i > 0 && i--;) { + for (j = 0; j < n2; j++) { + BASE temp_real = 0.0; + BASE temp_imag = 0.0; + + for (k = 0; k < i; k++) { + const BASE Aik_real = CONST_REAL(A, i * lda + k); + const BASE Aik_imag = conj * CONST_IMAG(A, i * lda + k); + const BASE Bkj_real = REAL(B, k * ldb + j); + const BASE Bkj_imag = IMAG(B, k * ldb + j); + temp_real += Aik_real * Bkj_real - Aik_imag * Bkj_imag; + temp_imag += Aik_real * Bkj_imag + Aik_imag * Bkj_real; + } + + if (nonunit) { + const BASE Aii_real = CONST_REAL(A, i * lda + i); + const BASE Aii_imag = conj * CONST_IMAG(A, i * lda + i); + const BASE Bij_real = REAL(B, i * ldb + j); + const BASE Bij_imag = IMAG(B, i * ldb + j); + temp_real += Aii_real * Bij_real - Aii_imag * Bij_imag; + temp_imag += Aii_real * Bij_imag + Aii_imag * Bij_real; + } else { + temp_real += REAL(B, i * ldb + j); + temp_imag += IMAG(B, i * ldb + j); + } + + REAL(B, ldb * i + j) = alpha_real * temp_real - alpha_imag * temp_imag; + IMAG(B, ldb * i + j) = alpha_real * temp_imag + alpha_imag * temp_real; + } + } + + + + } else if (side == CblasLeft && uplo == CblasLower && trans == CblasTrans) { + + /* form B := alpha * TriL(A)' *B */ + + for (i = 0; i < n1; i++) { + for (j = 0; j < n2; j++) { + BASE temp_real = 0.0; + BASE temp_imag = 0.0; + + if (nonunit) { + const BASE Aii_real = CONST_REAL(A, i * lda + i); + const BASE Aii_imag = conj * CONST_IMAG(A, i * lda + i); + const BASE Bij_real = REAL(B, i * ldb + j); + const BASE Bij_imag = IMAG(B, i * ldb + j); + temp_real = Aii_real * Bij_real - Aii_imag * Bij_imag; + temp_imag = Aii_real * Bij_imag + Aii_imag * Bij_real; + } else { + temp_real = REAL(B, i * ldb + j); + temp_imag = IMAG(B, i * ldb + j); + } + + for (k = i + 1; k < n1; k++) { + const BASE Aki_real = CONST_REAL(A, k * lda + i); + const BASE Aki_imag = conj * CONST_IMAG(A, k * lda + i); + const BASE Bkj_real = REAL(B, k * ldb + j); + const BASE Bkj_imag = IMAG(B, k * ldb + j); + temp_real += Aki_real * Bkj_real - Aki_imag * Bkj_imag; + temp_imag += Aki_real * Bkj_imag + Aki_imag * Bkj_real; + } + + REAL(B, ldb * i + j) = alpha_real * temp_real - alpha_imag * temp_imag; + IMAG(B, ldb * i + j) = alpha_real * temp_imag + alpha_imag * temp_real; + } + } + + } else if (side == CblasRight && uplo == CblasUpper && trans == CblasNoTrans) { + + /* form B := alpha * B * TriU(A) */ + + for (i = 0; i < n1; i++) { + for (j = n2; j > 0 && j--;) { + BASE temp_real = 0.0; + BASE temp_imag = 0.0; + + for (k = 0; k < j; k++) { + const BASE Akj_real = CONST_REAL(A, k * lda + j); + const BASE Akj_imag = conj * CONST_IMAG(A, k * lda + j); + const BASE Bik_real = REAL(B, i * ldb + k); + const BASE Bik_imag = IMAG(B, i * ldb + k); + temp_real += Akj_real * Bik_real - Akj_imag * Bik_imag; + temp_imag += Akj_real * Bik_imag + Akj_imag * Bik_real; + } + + if (nonunit) { + const BASE Ajj_real = CONST_REAL(A, j * lda + j); + const BASE Ajj_imag = conj * CONST_IMAG(A, j * lda + j); + const BASE Bij_real = REAL(B, i * ldb + j); + const BASE Bij_imag = IMAG(B, i * ldb + j); + temp_real += Ajj_real * Bij_real - Ajj_imag * Bij_imag; + temp_imag += Ajj_real * Bij_imag + Ajj_imag * Bij_real; + } else { + temp_real += REAL(B, i * ldb + j); + temp_imag += IMAG(B, i * ldb + j); + } + + REAL(B, ldb * i + j) = alpha_real * temp_real - alpha_imag * temp_imag; + IMAG(B, ldb * i + j) = alpha_real * temp_imag + alpha_imag * temp_real; + } + } + + } else if (side == CblasRight && uplo == CblasUpper && trans == CblasTrans) { + + /* form B := alpha * B * (TriU(A))' */ + + for (i = 0; i < n1; i++) { + for (j = 0; j < n2; j++) { + BASE temp_real = 0.0; + BASE temp_imag = 0.0; + + if (nonunit) { + const BASE Ajj_real = CONST_REAL(A, j * lda + j); + const BASE Ajj_imag = conj * CONST_IMAG(A, j * lda + j); + const BASE Bij_real = REAL(B, i * ldb + j); + const BASE Bij_imag = IMAG(B, i * ldb + j); + temp_real = Ajj_real * Bij_real - Ajj_imag * Bij_imag; + temp_imag = Ajj_real * Bij_imag + Ajj_imag * Bij_real; + } else { + temp_real = REAL(B, i * ldb + j); + temp_imag = IMAG(B, i * ldb + j); + } + + for (k = j + 1; k < n2; k++) { + const BASE Ajk_real = CONST_REAL(A, j * lda + k); + const BASE Ajk_imag = conj * CONST_IMAG(A, j * lda + k); + const BASE Bik_real = REAL(B, i * ldb + k); + const BASE Bik_imag = IMAG(B, i * ldb + k); + temp_real += Ajk_real * Bik_real - Ajk_imag * Bik_imag; + temp_imag += Ajk_real * Bik_imag + Ajk_imag * Bik_real; + } + + REAL(B, ldb * i + j) = alpha_real * temp_real - alpha_imag * temp_imag; + IMAG(B, ldb * i + j) = alpha_real * temp_imag + alpha_imag * temp_real; + } + } + + } else if (side == CblasRight && uplo == CblasLower && trans == CblasNoTrans) { + + /* form B := alpha *B * TriL(A) */ + + for (i = 0; i < n1; i++) { + for (j = 0; j < n2; j++) { + BASE temp_real = 0.0; + BASE temp_imag = 0.0; + + if (nonunit) { + const BASE Ajj_real = CONST_REAL(A, j * lda + j); + const BASE Ajj_imag = conj * CONST_IMAG(A, j * lda + j); + const BASE Bij_real = REAL(B, i * ldb + j); + const BASE Bij_imag = IMAG(B, i * ldb + j); + temp_real = Ajj_real * Bij_real - Ajj_imag * Bij_imag; + temp_imag = Ajj_real * Bij_imag + Ajj_imag * Bij_real; + } else { + temp_real = REAL(B, i * ldb + j); + temp_imag = IMAG(B, i * ldb + j); + } + + for (k = j + 1; k < n2; k++) { + const BASE Akj_real = CONST_REAL(A, k * lda + j); + const BASE Akj_imag = conj * CONST_IMAG(A, k * lda + j); + const BASE Bik_real = REAL(B, i * ldb + k); + const BASE Bik_imag = IMAG(B, i * ldb + k); + temp_real += Akj_real * Bik_real - Akj_imag * Bik_imag; + temp_imag += Akj_real * Bik_imag + Akj_imag * Bik_real; + } + + REAL(B, ldb * i + j) = alpha_real * temp_real - alpha_imag * temp_imag; + IMAG(B, ldb * i + j) = alpha_real * temp_imag + alpha_imag * temp_real; + } + } + + } else if (side == CblasRight && uplo == CblasLower && trans == CblasTrans) { + + /* form B := alpha * B * TriL(A)' */ + + for (i = 0; i < n1; i++) { + for (j = n2; j > 0 && j--;) { + BASE temp_real = 0.0; + BASE temp_imag = 0.0; + + for (k = 0; k < j; k++) { + const BASE Ajk_real = CONST_REAL(A, j * lda + k); + const BASE Ajk_imag = conj * CONST_IMAG(A, j * lda + k); + const BASE Bik_real = REAL(B, i * ldb + k); + const BASE Bik_imag = IMAG(B, i * ldb + k); + temp_real += Ajk_real * Bik_real - Ajk_imag * Bik_imag; + temp_imag += Ajk_real * Bik_imag + Ajk_imag * Bik_real; + } + + if (nonunit) { + const BASE Ajj_real = CONST_REAL(A, j * lda + j); + const BASE Ajj_imag = conj * CONST_IMAG(A, j * lda + j); + const BASE Bij_real = REAL(B, i * ldb + j); + const BASE Bij_imag = IMAG(B, i * ldb + j); + temp_real += Ajj_real * Bij_real - Ajj_imag * Bij_imag; + temp_imag += Ajj_real * Bij_imag + Ajj_imag * Bij_real; + } else { + temp_real += REAL(B, i * ldb + j); + temp_imag += IMAG(B, i * ldb + j); + } + + REAL(B, ldb * i + j) = alpha_real * temp_real - alpha_imag * temp_imag; + IMAG(B, ldb * i + j) = alpha_real * temp_imag + alpha_imag * temp_real; + } + } + + } else { + BLAS_ERROR("unrecognized operation"); + } + } +} diff --git a/gsl-2.5/cblas/source_trmm_r.h b/gsl-2.5/cblas/source_trmm_r.h new file mode 100644 index 00000000..940b474d --- /dev/null +++ b/gsl-2.5/cblas/source_trmm_r.h @@ -0,0 +1,226 @@ +/* blas/source_trmm_r.h + * + * Copyright (C) 2001, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + INDEX i, j, k; + INDEX n1, n2; + + const int nonunit = (Diag == CblasNonUnit); + int side, uplo, trans; + + CHECK_ARGS12(TRMM,Order,Side,Uplo,TransA,Diag,M,N,alpha,A,lda,B,ldb); + + if (Order == CblasRowMajor) { + n1 = M; + n2 = N; + side = Side; + uplo = Uplo; + trans = (TransA == CblasConjTrans) ? CblasTrans : TransA; + } else { + n1 = N; + n2 = M; + side = (Side == CblasLeft) ? CblasRight : CblasLeft; + uplo = (Uplo == CblasUpper) ? CblasLower : CblasUpper; + trans = (TransA == CblasConjTrans) ? CblasTrans : TransA; + } + + if (side == CblasLeft && uplo == CblasUpper && trans == CblasNoTrans) { + + /* form B := alpha * TriU(A)*B */ + + for (i = 0; i < n1; i++) { + for (j = 0; j < n2; j++) { + BASE temp = 0.0; + + if (nonunit) { + temp = A[i * lda + i] * B[i * ldb + j]; + } else { + temp = B[i * ldb + j]; + } + + for (k = i + 1; k < n1; k++) { + temp += A[lda * i + k] * B[k * ldb + j]; + } + + B[ldb * i + j] = alpha * temp; + } + } + + } else if (side == CblasLeft && uplo == CblasUpper && trans == CblasTrans) { + + /* form B := alpha * (TriU(A))' *B */ + + for (i = n1; i > 0 && i--;) { + for (j = 0; j < n2; j++) { + BASE temp = 0.0; + + for (k = 0; k < i; k++) { + temp += A[lda * k + i] * B[k * ldb + j]; + } + + if (nonunit) { + temp += A[i * lda + i] * B[i * ldb + j]; + } else { + temp += B[i * ldb + j]; + } + + B[ldb * i + j] = alpha * temp; + } + } + + } else if (side == CblasLeft && uplo == CblasLower && trans == CblasNoTrans) { + + /* form B := alpha * TriL(A)*B */ + + + for (i = n1; i > 0 && i--;) { + for (j = 0; j < n2; j++) { + BASE temp = 0.0; + + for (k = 0; k < i; k++) { + temp += A[lda * i + k] * B[k * ldb + j]; + } + + if (nonunit) { + temp += A[i * lda + i] * B[i * ldb + j]; + } else { + temp += B[i * ldb + j]; + } + + B[ldb * i + j] = alpha * temp; + } + } + + + + } else if (side == CblasLeft && uplo == CblasLower && trans == CblasTrans) { + + /* form B := alpha * TriL(A)' *B */ + + for (i = 0; i < n1; i++) { + for (j = 0; j < n2; j++) { + BASE temp = 0.0; + + if (nonunit) { + temp = A[i * lda + i] * B[i * ldb + j]; + } else { + temp = B[i * ldb + j]; + } + + for (k = i + 1; k < n1; k++) { + temp += A[lda * k + i] * B[k * ldb + j]; + } + + B[ldb * i + j] = alpha * temp; + } + } + + } else if (side == CblasRight && uplo == CblasUpper && trans == CblasNoTrans) { + + /* form B := alpha * B * TriU(A) */ + + for (i = 0; i < n1; i++) { + for (j = n2; j > 0 && j--;) { + BASE temp = 0.0; + + for (k = 0; k < j; k++) { + temp += A[lda * k + j] * B[i * ldb + k]; + } + + if (nonunit) { + temp += A[j * lda + j] * B[i * ldb + j]; + } else { + temp += B[i * ldb + j]; + } + + B[ldb * i + j] = alpha * temp; + } + } + + } else if (side == CblasRight && uplo == CblasUpper && trans == CblasTrans) { + + /* form B := alpha * B * (TriU(A))' */ + + for (i = 0; i < n1; i++) { + for (j = 0; j < n2; j++) { + BASE temp = 0.0; + + if (nonunit) { + temp = A[j * lda + j] * B[i * ldb + j]; + } else { + temp = B[i * ldb + j]; + } + + for (k = j + 1; k < n2; k++) { + temp += A[lda * j + k] * B[i * ldb + k]; + } + + B[ldb * i + j] = alpha * temp; + } + } + + } else if (side == CblasRight && uplo == CblasLower && trans == CblasNoTrans) { + + /* form B := alpha *B * TriL(A) */ + + for (i = 0; i < n1; i++) { + for (j = 0; j < n2; j++) { + BASE temp = 0.0; + + if (nonunit) { + temp = A[j * lda + j] * B[i * ldb + j]; + } else { + temp = B[i * ldb + j]; + } + + for (k = j + 1; k < n2; k++) { + temp += A[lda * k + j] * B[i * ldb + k]; + } + + + B[ldb * i + j] = alpha * temp; + } + } + + } else if (side == CblasRight && uplo == CblasLower && trans == CblasTrans) { + + /* form B := alpha * B * TriL(A)' */ + + for (i = 0; i < n1; i++) { + for (j = n2; j > 0 && j--;) { + BASE temp = 0.0; + + for (k = 0; k < j; k++) { + temp += A[lda * j + k] * B[i * ldb + k]; + } + + if (nonunit) { + temp += A[j * lda + j] * B[i * ldb + j]; + } else { + temp += B[i * ldb + j]; + } + + B[ldb * i + j] = alpha * temp; + } + } + + } else { + BLAS_ERROR("unrecognized operation"); + } +} diff --git a/gsl-2.5/cblas/source_trmv_c.h b/gsl-2.5/cblas/source_trmv_c.h new file mode 100644 index 00000000..e1406d16 --- /dev/null +++ b/gsl-2.5/cblas/source_trmv_c.h @@ -0,0 +1,171 @@ +/* blas/source_trmv_c.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + const int conj = (TransA == CblasConjTrans) ? -1 : 1; + const int Trans = (TransA != CblasConjTrans) ? TransA : CblasTrans; + const int nonunit = (Diag == CblasNonUnit); + + INDEX i, j; + + CHECK_ARGS9(TRMV,order,Uplo,TransA,Diag,N,A,lda,X,incX); + + if ((order == CblasRowMajor && Trans == CblasNoTrans && Uplo == CblasUpper) + || (order == CblasColMajor && Trans == CblasTrans && Uplo == CblasLower)) { + + /* form x := A*x */ + INDEX ix = OFFSET(N, incX); + for (i = 0; i < N; i++) { + BASE temp_r = 0.0; + BASE temp_i = 0.0; + const INDEX j_min = i + 1; + INDEX jx = OFFSET(N, incX) + incX * j_min; + for (j = j_min; j < N; j++) { + const BASE x_real = REAL(X, jx); + const BASE x_imag = IMAG(X, jx); + const BASE A_real = CONST_REAL(A, lda * i + j); + const BASE A_imag = conj * CONST_IMAG(A, lda * i + j); + + temp_r += A_real * x_real - A_imag * x_imag; + temp_i += A_real * x_imag + A_imag * x_real; + + jx += incX; + } + if (nonunit) { + const BASE x_real = REAL(X, ix); + const BASE x_imag = IMAG(X, ix); + const BASE A_real = CONST_REAL(A, lda * i + i); + const BASE A_imag = conj * CONST_IMAG(A, lda * i + i); + + REAL(X, ix) = temp_r + (A_real * x_real - A_imag * x_imag); + IMAG(X, ix) = temp_i + (A_real * x_imag + A_imag * x_real); + } else { + REAL(X, ix) += temp_r; + IMAG(X, ix) += temp_i; + } + ix += incX; + } + } else if ((order == CblasRowMajor && Trans == CblasNoTrans && Uplo == CblasLower) + || (order == CblasColMajor && Trans == CblasTrans && Uplo == CblasUpper)) { + + INDEX ix = OFFSET(N, incX) + (N - 1) * incX; + + for (i = N; i > 0 && i--;) { + BASE temp_r = 0.0; + BASE temp_i = 0.0; + const INDEX j_max = i; + INDEX jx = OFFSET(N, incX); + for (j = 0; j < j_max; j++) { + const BASE x_real = REAL(X, jx); + const BASE x_imag = IMAG(X, jx); + const BASE A_real = CONST_REAL(A, lda * i + j); + const BASE A_imag = conj * CONST_IMAG(A, lda * i + j); + + temp_r += A_real * x_real - A_imag * x_imag; + temp_i += A_real * x_imag + A_imag * x_real; + + jx += incX; + } + if (nonunit) { + const BASE x_real = REAL(X, ix); + const BASE x_imag = IMAG(X, ix); + const BASE A_real = CONST_REAL(A, lda * i + i); + const BASE A_imag = conj * CONST_IMAG(A, lda * i + i); + + REAL(X, ix) = temp_r + (A_real * x_real - A_imag * x_imag); + IMAG(X, ix) = temp_i + (A_real * x_imag + A_imag * x_real); + } else { + REAL(X, ix) += temp_r; + IMAG(X, ix) += temp_i; + } + ix -= incX; + } + } else if ((order == CblasRowMajor && Trans == CblasTrans && Uplo == CblasUpper) + || (order == CblasColMajor && Trans == CblasNoTrans && Uplo == CblasLower)) { + /* form x := A'*x */ + + INDEX ix = OFFSET(N, incX) + (N - 1) * incX; + for (i = N; i > 0 && i--;) { + BASE temp_r = 0.0; + BASE temp_i = 0.0; + const INDEX j_max = i; + INDEX jx = OFFSET(N, incX); + for (j = 0; j < j_max; j++) { + const BASE x_real = REAL(X, jx); + const BASE x_imag = IMAG(X, jx); + const BASE A_real = CONST_REAL(A, lda * j + i); + const BASE A_imag = conj * CONST_IMAG(A, lda * j + i); + + temp_r += A_real * x_real - A_imag * x_imag; + temp_i += A_real * x_imag + A_imag * x_real; + + jx += incX; + } + if (nonunit) { + const BASE x_real = REAL(X, ix); + const BASE x_imag = IMAG(X, ix); + const BASE A_real = CONST_REAL(A, lda * i + i); + const BASE A_imag = conj * CONST_IMAG(A, lda * i + i); + + REAL(X, ix) = temp_r + (A_real * x_real - A_imag * x_imag); + IMAG(X, ix) = temp_i + (A_real * x_imag + A_imag * x_real); + } else { + REAL(X, ix) += temp_r; + IMAG(X, ix) += temp_i; + } + ix -= incX; + } + + } else if ((order == CblasRowMajor && Trans == CblasTrans && Uplo == CblasLower) + || (order == CblasColMajor && Trans == CblasNoTrans && Uplo == CblasUpper)) { + INDEX ix = OFFSET(N, incX); + for (i = 0; i < N; i++) { + BASE temp_r = 0.0; + BASE temp_i = 0.0; + const INDEX j_min = i + 1; + INDEX jx = OFFSET(N, incX) + j_min * incX; + for (j = j_min; j < N; j++) { + const BASE x_real = REAL(X, jx); + const BASE x_imag = IMAG(X, jx); + const BASE A_real = CONST_REAL(A, lda * j + i); + const BASE A_imag = conj * CONST_IMAG(A, lda * j + i); + + temp_r += A_real * x_real - A_imag * x_imag; + temp_i += A_real * x_imag + A_imag * x_real; + + jx += incX; + } + if (nonunit) { + const BASE x_real = REAL(X, ix); + const BASE x_imag = IMAG(X, ix); + const BASE A_real = CONST_REAL(A, lda * i + i); + const BASE A_imag = conj * CONST_IMAG(A, lda * i + i); + + REAL(X, ix) = temp_r + (A_real * x_real - A_imag * x_imag); + IMAG(X, ix) = temp_i + (A_real * x_imag + A_imag * x_real); + } else { + REAL(X, ix) += temp_r; + IMAG(X, ix) += temp_i; + } + ix += incX; + } + } else { + BLAS_ERROR("unrecognized operation"); + } +} diff --git a/gsl-2.5/cblas/source_trmv_r.h b/gsl-2.5/cblas/source_trmv_r.h new file mode 100644 index 00000000..ff1d8bc8 --- /dev/null +++ b/gsl-2.5/cblas/source_trmv_r.h @@ -0,0 +1,110 @@ +/* blas/source_trmv_r.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + INDEX i, j; + + const int nonunit = (Diag == CblasNonUnit); + const int Trans = (TransA != CblasConjTrans) ? TransA : CblasTrans; + + CHECK_ARGS9(TRMV,order,Uplo,TransA,Diag,N,A,lda,X,incX); + + if ((order == CblasRowMajor && Trans == CblasNoTrans && Uplo == CblasUpper) + || (order == CblasColMajor && Trans == CblasTrans && Uplo == CblasLower)) { + /* form x := A*x */ + + INDEX ix = OFFSET(N, incX); + for (i = 0; i < N; i++) { + BASE temp = 0.0; + const INDEX j_min = i + 1; + const INDEX j_max = N; + INDEX jx = OFFSET(N, incX) + j_min * incX; + for (j = j_min; j < j_max; j++) { + temp += X[jx] * A[lda * i + j]; + jx += incX; + } + if (nonunit) { + X[ix] = temp + X[ix] * A[lda * i + i]; + } else { + X[ix] += temp; + } + ix += incX; + } + } else if ((order == CblasRowMajor && Trans == CblasNoTrans && Uplo == CblasLower) + || (order == CblasColMajor && Trans == CblasTrans && Uplo == CblasUpper)) { + INDEX ix = OFFSET(N, incX) + (N - 1) * incX; + for (i = N; i > 0 && i--;) { + BASE temp = 0.0; + const INDEX j_min = 0; + const INDEX j_max = i; + INDEX jx = OFFSET(N, incX) + j_min * incX; + for (j = j_min; j < j_max; j++) { + temp += X[jx] * A[lda * i + j]; + jx += incX; + } + if (nonunit) { + X[ix] = temp + X[ix] * A[lda * i + i]; + } else { + X[ix] += temp; + } + ix -= incX; + } + } else if ((order == CblasRowMajor && Trans == CblasTrans && Uplo == CblasUpper) + || (order == CblasColMajor && Trans == CblasNoTrans && Uplo == CblasLower)) { + /* form x := A'*x */ + INDEX ix = OFFSET(N, incX) + (N - 1) * incX; + for (i = N; i > 0 && i--;) { + BASE temp = 0.0; + const INDEX j_min = 0; + const INDEX j_max = i; + INDEX jx = OFFSET(N, incX) + j_min * incX; + for (j = j_min; j < j_max; j++) { + temp += X[jx] * A[lda * j + i]; + jx += incX; + } + if (nonunit) { + X[ix] = temp + X[ix] * A[lda * i + i]; + } else { + X[ix] += temp; + } + ix -= incX; + } + } else if ((order == CblasRowMajor && Trans == CblasTrans && Uplo == CblasLower) + || (order == CblasColMajor && Trans == CblasNoTrans && Uplo == CblasUpper)) { + INDEX ix = OFFSET(N, incX); + for (i = 0; i < N; i++) { + BASE temp = 0.0; + const INDEX j_min = i + 1; + const INDEX j_max = N; + INDEX jx = OFFSET(N, incX) + (i + 1) * incX; + for (j = j_min; j < j_max; j++) { + temp += X[jx] * A[lda * j + i]; + jx += incX; + } + if (nonunit) { + X[ix] = temp + X[ix] * A[lda * i + i]; + } else { + X[ix] += temp; + } + ix += incX; + } + } else { + BLAS_ERROR("unrecognized operation"); + } +} diff --git a/gsl-2.5/cblas/source_trsm_c.h b/gsl-2.5/cblas/source_trsm_c.h new file mode 100644 index 00000000..e2f8835f --- /dev/null +++ b/gsl-2.5/cblas/source_trsm_c.h @@ -0,0 +1,402 @@ +/* blas/source_trsm_c.h + * + * Copyright (C) 2001, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + INDEX i, j, k; + INDEX n1, n2; + + const int nonunit = (Diag == CblasNonUnit); + const int conj = (TransA == CblasConjTrans) ? -1 : 1; + int side, uplo, trans; + + CHECK_ARGS12(TRSM,Order,Side,Uplo,TransA,Diag,M,N,alpha,A,lda,B,ldb); + + { + const BASE alpha_real = CONST_REAL0(alpha); + const BASE alpha_imag = CONST_IMAG0(alpha); + + if (Order == CblasRowMajor) { + n1 = M; + n2 = N; + side = Side; + uplo = Uplo; + trans = TransA; + trans = (TransA == CblasNoTrans) ? CblasNoTrans : CblasTrans; + } else { + n1 = N; + n2 = M; + side = (Side == CblasLeft) ? CblasRight : CblasLeft; /* exchanged */ + uplo = (Uplo == CblasUpper) ? CblasLower : CblasUpper; /* exchanged */ + trans = (TransA == CblasNoTrans) ? CblasNoTrans : CblasTrans; /* same */ + } + + if (side == CblasLeft && uplo == CblasUpper && trans == CblasNoTrans) { + + /* form B := alpha * inv(TriU(A)) *B */ + + if (!(alpha_real == 1.0 && alpha_imag == 0.0)) { + for (i = 0; i < n1; i++) { + for (j = 0; j < n2; j++) { + const BASE Bij_real = REAL(B, ldb * i + j); + const BASE Bij_imag = IMAG(B, ldb * i + j); + REAL(B, ldb * i + j) = alpha_real * Bij_real - alpha_imag * Bij_imag; + IMAG(B, ldb * i + j) = alpha_real * Bij_imag + alpha_imag * Bij_real; + } + } + } + + for (i = n1; i > 0 && i--;) { + if (nonunit) { + const BASE Aii_real = CONST_REAL(A, lda * i + i); + const BASE Aii_imag = conj * CONST_IMAG(A, lda * i + i); + const BASE s = xhypot(Aii_real, Aii_imag); + const BASE a_real = Aii_real / s; + const BASE a_imag = Aii_imag / s; + + for (j = 0; j < n2; j++) { + const BASE Bij_real = REAL(B, ldb * i + j); + const BASE Bij_imag = IMAG(B, ldb * i + j); + REAL(B, ldb * i + j) = (Bij_real * a_real + Bij_imag * a_imag) / s; + IMAG(B, ldb * i + j) = (Bij_imag * a_real - Bij_real * a_imag) / s; + } + } + + for (k = 0; k < i; k++) { + const BASE Aki_real = CONST_REAL(A, k * lda + i); + const BASE Aki_imag = conj * CONST_IMAG(A, k * lda + i); + for (j = 0; j < n2; j++) { + const BASE Bij_real = REAL(B, ldb * i + j); + const BASE Bij_imag = IMAG(B, ldb * i + j); + REAL(B, ldb * k + j) -= Aki_real * Bij_real - Aki_imag * Bij_imag; + IMAG(B, ldb * k + j) -= Aki_real * Bij_imag + Aki_imag * Bij_real; + } + } + } + + } else if (side == CblasLeft && uplo == CblasUpper && trans == CblasTrans) { + + /* form B := alpha * inv(TriU(A))' *B */ + + if (!(alpha_real == 1.0 && alpha_imag == 0.0)) { + for (i = 0; i < n1; i++) { + for (j = 0; j < n2; j++) { + const BASE Bij_real = REAL(B, ldb * i + j); + const BASE Bij_imag = IMAG(B, ldb * i + j); + REAL(B, ldb * i + j) = alpha_real * Bij_real - alpha_imag * Bij_imag; + IMAG(B, ldb * i + j) = alpha_real * Bij_imag + alpha_imag * Bij_real; + } + } + } + + for (i = 0; i < n1; i++) { + + if (nonunit) { + const BASE Aii_real = CONST_REAL(A, lda * i + i); + const BASE Aii_imag = conj * CONST_IMAG(A, lda * i + i); + const BASE s = xhypot(Aii_real, Aii_imag); + const BASE a_real = Aii_real / s; + const BASE a_imag = Aii_imag / s; + + for (j = 0; j < n2; j++) { + const BASE Bij_real = REAL(B, ldb * i + j); + const BASE Bij_imag = IMAG(B, ldb * i + j); + REAL(B, ldb * i + j) = (Bij_real * a_real + Bij_imag * a_imag) / s; + IMAG(B, ldb * i + j) = (Bij_imag * a_real - Bij_real * a_imag) / s; + } + } + + for (k = i + 1; k < n1; k++) { + const BASE Aik_real = CONST_REAL(A, i * lda + k); + const BASE Aik_imag = conj * CONST_IMAG(A, i * lda + k); + for (j = 0; j < n2; j++) { + const BASE Bij_real = REAL(B, ldb * i + j); + const BASE Bij_imag = IMAG(B, ldb * i + j); + REAL(B, ldb * k + j) -= Aik_real * Bij_real - Aik_imag * Bij_imag; + IMAG(B, ldb * k + j) -= Aik_real * Bij_imag + Aik_imag * Bij_real; + } + } + } + + } else if (side == CblasLeft && uplo == CblasLower && trans == CblasNoTrans) { + + /* form B := alpha * inv(TriL(A))*B */ + + if (!(alpha_real == 1.0 && alpha_imag == 0.0)) { + for (i = 0; i < n1; i++) { + for (j = 0; j < n2; j++) { + const BASE Bij_real = REAL(B, ldb * i + j); + const BASE Bij_imag = IMAG(B, ldb * i + j); + REAL(B, ldb * i + j) = alpha_real * Bij_real - alpha_imag * Bij_imag; + IMAG(B, ldb * i + j) = alpha_real * Bij_imag + alpha_imag * Bij_real; + } + } + } + + for (i = 0; i < n1; i++) { + + if (nonunit) { + const BASE Aii_real = CONST_REAL(A, lda * i + i); + const BASE Aii_imag = conj * CONST_IMAG(A, lda * i + i); + const BASE s = xhypot(Aii_real, Aii_imag); + const BASE a_real = Aii_real / s; + const BASE a_imag = Aii_imag / s; + + for (j = 0; j < n2; j++) { + const BASE Bij_real = REAL(B, ldb * i + j); + const BASE Bij_imag = IMAG(B, ldb * i + j); + REAL(B, ldb * i + j) = (Bij_real * a_real + Bij_imag * a_imag) / s; + IMAG(B, ldb * i + j) = (Bij_imag * a_real - Bij_real * a_imag) / s; + } + } + + for (k = i + 1; k < n1; k++) { + const BASE Aki_real = CONST_REAL(A, k * lda + i); + const BASE Aki_imag = conj * CONST_IMAG(A, k * lda + i); + for (j = 0; j < n2; j++) { + const BASE Bij_real = REAL(B, ldb * i + j); + const BASE Bij_imag = IMAG(B, ldb * i + j); + REAL(B, ldb * k + j) -= Aki_real * Bij_real - Aki_imag * Bij_imag; + IMAG(B, ldb * k + j) -= Aki_real * Bij_imag + Aki_imag * Bij_real; + } + } + } + + + } else if (side == CblasLeft && uplo == CblasLower && trans == CblasTrans) { + + /* form B := alpha * TriL(A)' *B */ + + if (!(alpha_real == 1.0 && alpha_imag == 0.0)) { + for (i = 0; i < n1; i++) { + for (j = 0; j < n2; j++) { + const BASE Bij_real = REAL(B, ldb * i + j); + const BASE Bij_imag = IMAG(B, ldb * i + j); + REAL(B, ldb * i + j) = alpha_real * Bij_real - alpha_imag * Bij_imag; + IMAG(B, ldb * i + j) = alpha_real * Bij_imag + alpha_imag * Bij_real; + } + } + } + + for (i = n1; i > 0 && i--;) { + if (nonunit) { + const BASE Aii_real = CONST_REAL(A, lda * i + i); + const BASE Aii_imag = conj * CONST_IMAG(A, lda * i + i); + const BASE s = xhypot(Aii_real, Aii_imag); + const BASE a_real = Aii_real / s; + const BASE a_imag = Aii_imag / s; + + for (j = 0; j < n2; j++) { + const BASE Bij_real = REAL(B, ldb * i + j); + const BASE Bij_imag = IMAG(B, ldb * i + j); + REAL(B, ldb * i + j) = (Bij_real * a_real + Bij_imag * a_imag) / s; + IMAG(B, ldb * i + j) = (Bij_imag * a_real - Bij_real * a_imag) / s; + } + } + + for (k = 0; k < i; k++) { + const BASE Aik_real = CONST_REAL(A, i * lda + k); + const BASE Aik_imag = conj * CONST_IMAG(A, i * lda + k); + for (j = 0; j < n2; j++) { + const BASE Bij_real = REAL(B, ldb * i + j); + const BASE Bij_imag = IMAG(B, ldb * i + j); + REAL(B, ldb * k + j) -= Aik_real * Bij_real - Aik_imag * Bij_imag; + IMAG(B, ldb * k + j) -= Aik_real * Bij_imag + Aik_imag * Bij_real; + } + } + } + + } else if (side == CblasRight && uplo == CblasUpper && trans == CblasNoTrans) { + + /* form B := alpha * B * inv(TriU(A)) */ + + if (!(alpha_real == 1.0 && alpha_imag == 0.0)) { + for (i = 0; i < n1; i++) { + for (j = 0; j < n2; j++) { + const BASE Bij_real = REAL(B, ldb * i + j); + const BASE Bij_imag = IMAG(B, ldb * i + j); + REAL(B, ldb * i + j) = alpha_real * Bij_real - alpha_imag * Bij_imag; + IMAG(B, ldb * i + j) = alpha_real * Bij_imag + alpha_imag * Bij_real; + } + } + } + + for (i = 0; i < n1; i++) { + for (j = 0; j < n2; j++) { + if (nonunit) { + const BASE Ajj_real = CONST_REAL(A, lda * j + j); + const BASE Ajj_imag = conj * CONST_IMAG(A, lda * j + j); + const BASE s = xhypot(Ajj_real, Ajj_imag); + const BASE a_real = Ajj_real / s; + const BASE a_imag = Ajj_imag / s; + const BASE Bij_real = REAL(B, ldb * i + j); + const BASE Bij_imag = IMAG(B, ldb * i + j); + REAL(B, ldb * i + j) = (Bij_real * a_real + Bij_imag * a_imag) / s; + IMAG(B, ldb * i + j) = (Bij_imag * a_real - Bij_real * a_imag) / s; + } + + { + const BASE Bij_real = REAL(B, ldb * i + j); + const BASE Bij_imag = IMAG(B, ldb * i + j); + for (k = j + 1; k < n2; k++) { + const BASE Ajk_real = CONST_REAL(A, j * lda + k); + const BASE Ajk_imag = conj * CONST_IMAG(A, j * lda + k); + REAL(B, ldb * i + k) -= Ajk_real * Bij_real - Ajk_imag * Bij_imag; + IMAG(B, ldb * i + k) -= Ajk_real * Bij_imag + Ajk_imag * Bij_real; + } + } + } + } + + } else if (side == CblasRight && uplo == CblasUpper && trans == CblasTrans) { + + /* form B := alpha * B * inv(TriU(A))' */ + + if (!(alpha_real == 1.0 && alpha_imag == 0.0)) { + for (i = 0; i < n1; i++) { + for (j = 0; j < n2; j++) { + const BASE Bij_real = REAL(B, ldb * i + j); + const BASE Bij_imag = IMAG(B, ldb * i + j); + REAL(B, ldb * i + j) = alpha_real * Bij_real - alpha_imag * Bij_imag; + IMAG(B, ldb * i + j) = alpha_real * Bij_imag + alpha_imag * Bij_real; + } + } + } + + for (i = 0; i < n1; i++) { + for (j = n2; j > 0 && j--;) { + + if (nonunit) { + const BASE Ajj_real = CONST_REAL(A, lda * j + j); + const BASE Ajj_imag = conj * CONST_IMAG(A, lda * j + j); + const BASE s = xhypot(Ajj_real, Ajj_imag); + const BASE a_real = Ajj_real / s; + const BASE a_imag = Ajj_imag / s; + const BASE Bij_real = REAL(B, ldb * i + j); + const BASE Bij_imag = IMAG(B, ldb * i + j); + REAL(B, ldb * i + j) = (Bij_real * a_real + Bij_imag * a_imag) / s; + IMAG(B, ldb * i + j) = (Bij_imag * a_real - Bij_real * a_imag) / s; + } + + { + const BASE Bij_real = REAL(B, ldb * i + j); + const BASE Bij_imag = IMAG(B, ldb * i + j); + for (k = 0; k < j; k++) { + const BASE Akj_real = CONST_REAL(A, k * lda + j); + const BASE Akj_imag = conj * CONST_IMAG(A, k * lda + j); + REAL(B, ldb * i + k) -= Akj_real * Bij_real - Akj_imag * Bij_imag; + IMAG(B, ldb * i + k) -= Akj_real * Bij_imag + Akj_imag * Bij_real; + } + } + } + } + + + } else if (side == CblasRight && uplo == CblasLower && trans == CblasNoTrans) { + + /* form B := alpha * B * inv(TriL(A)) */ + + if (!(alpha_real == 1.0 && alpha_imag == 0.0)) { + for (i = 0; i < n1; i++) { + for (j = 0; j < n2; j++) { + const BASE Bij_real = REAL(B, ldb * i + j); + const BASE Bij_imag = IMAG(B, ldb * i + j); + REAL(B, ldb * i + j) = alpha_real * Bij_real - alpha_imag * Bij_imag; + IMAG(B, ldb * i + j) = alpha_real * Bij_imag + alpha_imag * Bij_real; + } + } + } + + for (i = 0; i < n1; i++) { + for (j = n2; j > 0 && j--;) { + + if (nonunit) { + const BASE Ajj_real = CONST_REAL(A, lda * j + j); + const BASE Ajj_imag = conj * CONST_IMAG(A, lda * j + j); + const BASE s = xhypot(Ajj_real, Ajj_imag); + const BASE a_real = Ajj_real / s; + const BASE a_imag = Ajj_imag / s; + const BASE Bij_real = REAL(B, ldb * i + j); + const BASE Bij_imag = IMAG(B, ldb * i + j); + REAL(B, ldb * i + j) = (Bij_real * a_real + Bij_imag * a_imag) / s; + IMAG(B, ldb * i + j) = (Bij_imag * a_real - Bij_real * a_imag) / s; + } + + { + const BASE Bij_real = REAL(B, ldb * i + j); + const BASE Bij_imag = IMAG(B, ldb * i + j); + for (k = 0; k < j; k++) { + const BASE Ajk_real = CONST_REAL(A, j * lda + k); + const BASE Ajk_imag = conj * CONST_IMAG(A, j * lda + k); + REAL(B, ldb * i + k) -= Ajk_real * Bij_real - Ajk_imag * Bij_imag; + IMAG(B, ldb * i + k) -= Ajk_real * Bij_imag + Ajk_imag * Bij_real; + } + } + } + } + + } else if (side == CblasRight && uplo == CblasLower && trans == CblasTrans) { + + /* form B := alpha * B * inv(TriL(A))' */ + + + if (!(alpha_real == 1.0 && alpha_imag == 0.0)) { + for (i = 0; i < n1; i++) { + for (j = 0; j < n2; j++) { + const BASE Bij_real = REAL(B, ldb * i + j); + const BASE Bij_imag = IMAG(B, ldb * i + j); + REAL(B, ldb * i + j) = alpha_real * Bij_real - alpha_imag * Bij_imag; + IMAG(B, ldb * i + j) = alpha_real * Bij_imag + alpha_imag * Bij_real; + } + } + } + + for (i = 0; i < n1; i++) { + for (j = 0; j < n2; j++) { + if (nonunit) { + const BASE Ajj_real = CONST_REAL(A, lda * j + j); + const BASE Ajj_imag = conj * CONST_IMAG(A, lda * j + j); + const BASE s = xhypot(Ajj_real, Ajj_imag); + const BASE a_real = Ajj_real / s; + const BASE a_imag = Ajj_imag / s; + const BASE Bij_real = REAL(B, ldb * i + j); + const BASE Bij_imag = IMAG(B, ldb * i + j); + REAL(B, ldb * i + j) = (Bij_real * a_real + Bij_imag * a_imag) / s; + IMAG(B, ldb * i + j) = (Bij_imag * a_real - Bij_real * a_imag) / s; + } + + { + const BASE Bij_real = REAL(B, ldb * i + j); + const BASE Bij_imag = IMAG(B, ldb * i + j); + + for (k = j + 1; k < n2; k++) { + const BASE Akj_real = CONST_REAL(A, k * lda + j); + const BASE Akj_imag = conj * CONST_IMAG(A, k * lda + j); + REAL(B, ldb * i + k) -= Akj_real * Bij_real - Akj_imag * Bij_imag; + IMAG(B, ldb * i + k) -= Akj_real * Bij_imag + Akj_imag * Bij_real; + } + } + } + } + + + } else { + BLAS_ERROR("unrecognized operation"); + } + } +} diff --git a/gsl-2.5/cblas/source_trsm_r.h b/gsl-2.5/cblas/source_trsm_r.h new file mode 100644 index 00000000..4c50af2b --- /dev/null +++ b/gsl-2.5/cblas/source_trsm_r.h @@ -0,0 +1,278 @@ +/* blas/source_trsm_r.h + * + * Copyright (C) 2001, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + INDEX i, j, k; + INDEX n1, n2; + + const int nonunit = (Diag == CblasNonUnit); + int side, uplo, trans; + + CHECK_ARGS12(TRSM,Order,Side,Uplo,TransA,Diag,M,N,alpha,A,lda,B,ldb); + + if (Order == CblasRowMajor) { + n1 = M; + n2 = N; + side = Side; + uplo = Uplo; + trans = (TransA == CblasConjTrans) ? CblasTrans : TransA; + } else { + n1 = N; + n2 = M; + side = (Side == CblasLeft) ? CblasRight : CblasLeft; + uplo = (Uplo == CblasUpper) ? CblasLower : CblasUpper; + trans = (TransA == CblasConjTrans) ? CblasTrans : TransA; + } + + if (side == CblasLeft && uplo == CblasUpper && trans == CblasNoTrans) { + + /* form B := alpha * inv(TriU(A)) *B */ + + if (alpha != 1.0) { + for (i = 0; i < n1; i++) { + for (j = 0; j < n2; j++) { + B[ldb * i + j] *= alpha; + } + } + } + + for (i = n1; i > 0 && i--;) { + if (nonunit) { + BASE Aii = A[lda * i + i]; + for (j = 0; j < n2; j++) { + B[ldb * i + j] /= Aii; + } + } + + for (k = 0; k < i; k++) { + const BASE Aki = A[k * lda + i]; + for (j = 0; j < n2; j++) { + B[ldb * k + j] -= Aki * B[ldb * i + j]; + } + } + } + + } else if (side == CblasLeft && uplo == CblasUpper && trans == CblasTrans) { + + /* form B := alpha * inv(TriU(A))' *B */ + + if (alpha != 1.0) { + for (i = 0; i < n1; i++) { + for (j = 0; j < n2; j++) { + B[ldb * i + j] *= alpha; + } + } + } + + for (i = 0; i < n1; i++) { + if (nonunit) { + BASE Aii = A[lda * i + i]; + for (j = 0; j < n2; j++) { + B[ldb * i + j] /= Aii; + } + } + + for (k = i + 1; k < n1; k++) { + const BASE Aik = A[i * lda + k]; + for (j = 0; j < n2; j++) { + B[ldb * k + j] -= Aik * B[ldb * i + j]; + } + } + } + + } else if (side == CblasLeft && uplo == CblasLower && trans == CblasNoTrans) { + + /* form B := alpha * inv(TriL(A))*B */ + + + if (alpha != 1.0) { + for (i = 0; i < n1; i++) { + for (j = 0; j < n2; j++) { + B[ldb * i + j] *= alpha; + } + } + } + + for (i = 0; i < n1; i++) { + if (nonunit) { + BASE Aii = A[lda * i + i]; + for (j = 0; j < n2; j++) { + B[ldb * i + j] /= Aii; + } + } + + for (k = i + 1; k < n1; k++) { + const BASE Aki = A[k * lda + i]; + for (j = 0; j < n2; j++) { + B[ldb * k + j] -= Aki * B[ldb * i + j]; + } + } + } + + + } else if (side == CblasLeft && uplo == CblasLower && trans == CblasTrans) { + + /* form B := alpha * TriL(A)' *B */ + + if (alpha != 1.0) { + for (i = 0; i < n1; i++) { + for (j = 0; j < n2; j++) { + B[ldb * i + j] *= alpha; + } + } + } + + for (i = n1; i > 0 && i--;) { + if (nonunit) { + BASE Aii = A[lda * i + i]; + for (j = 0; j < n2; j++) { + B[ldb * i + j] /= Aii; + } + } + + for (k = 0; k < i; k++) { + const BASE Aik = A[i * lda + k]; + for (j = 0; j < n2; j++) { + B[ldb * k + j] -= Aik * B[ldb * i + j]; + } + } + } + + } else if (side == CblasRight && uplo == CblasUpper && trans == CblasNoTrans) { + + /* form B := alpha * B * inv(TriU(A)) */ + + if (alpha != 1.0) { + for (i = 0; i < n1; i++) { + for (j = 0; j < n2; j++) { + B[ldb * i + j] *= alpha; + } + } + } + + for (i = 0; i < n1; i++) { + for (j = 0; j < n2; j++) { + if (nonunit) { + BASE Ajj = A[lda * j + j]; + B[ldb * i + j] /= Ajj; + } + + { + BASE Bij = B[ldb * i + j]; + for (k = j + 1; k < n2; k++) { + B[ldb * i + k] -= A[j * lda + k] * Bij; + } + } + } + } + + } else if (side == CblasRight && uplo == CblasUpper && trans == CblasTrans) { + + /* form B := alpha * B * inv(TriU(A))' */ + + if (alpha != 1.0) { + for (i = 0; i < n1; i++) { + for (j = 0; j < n2; j++) { + B[ldb * i + j] *= alpha; + } + } + } + + for (i = 0; i < n1; i++) { + for (j = n2; j > 0 && j--;) { + + if (nonunit) { + BASE Ajj = A[lda * j + j]; + B[ldb * i + j] /= Ajj; + } + + { + BASE Bij = B[ldb * i + j]; + for (k = 0; k < j; k++) { + B[ldb * i + k] -= A[k * lda + j] * Bij; + } + } + } + } + + + } else if (side == CblasRight && uplo == CblasLower && trans == CblasNoTrans) { + + /* form B := alpha * B * inv(TriL(A)) */ + + if (alpha != 1.0) { + for (i = 0; i < n1; i++) { + for (j = 0; j < n2; j++) { + B[ldb * i + j] *= alpha; + } + } + } + + for (i = 0; i < n1; i++) { + for (j = n2; j > 0 && j--;) { + + if (nonunit) { + BASE Ajj = A[lda * j + j]; + B[ldb * i + j] /= Ajj; + } + + { + BASE Bij = B[ldb * i + j]; + for (k = 0; k < j; k++) { + B[ldb * i + k] -= A[j * lda + k] * Bij; + } + } + } + } + + } else if (side == CblasRight && uplo == CblasLower && trans == CblasTrans) { + + /* form B := alpha * B * inv(TriL(A))' */ + + + if (alpha != 1.0) { + for (i = 0; i < n1; i++) { + for (j = 0; j < n2; j++) { + B[ldb * i + j] *= alpha; + } + } + } + + for (i = 0; i < n1; i++) { + for (j = 0; j < n2; j++) { + if (nonunit) { + BASE Ajj = A[lda * j + j]; + B[ldb * i + j] /= Ajj; + } + + { + BASE Bij = B[ldb * i + j]; + for (k = j + 1; k < n2; k++) { + B[ldb * i + k] -= A[k * lda + j] * Bij; + } + } + } + } + + + + } else { + BLAS_ERROR("unrecognized operation"); + } +} diff --git a/gsl-2.5/cblas/source_trsv_c.h b/gsl-2.5/cblas/source_trsv_c.h new file mode 100644 index 00000000..982e4a13 --- /dev/null +++ b/gsl-2.5/cblas/source_trsv_c.h @@ -0,0 +1,230 @@ +/* blas/source_trsv_c.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + const int conj = (TransA == CblasConjTrans) ? -1 : 1; + const int Trans = (TransA != CblasConjTrans) ? TransA : CblasTrans; + const int nonunit = (Diag == CblasNonUnit); + INDEX i, j; + INDEX ix, jx; + + CHECK_ARGS9(TRSV,order,Uplo,TransA,Diag,N,A,lda,X,incX); + + if (N == 0) + return; + + /* form x := inv( A )*x */ + + if ((order == CblasRowMajor && Trans == CblasNoTrans && Uplo == CblasUpper) + || (order == CblasColMajor && Trans == CblasTrans && Uplo == CblasLower)) { + + ix = OFFSET(N, incX) + incX * (N - 1); + + if (nonunit) { + const BASE a_real = CONST_REAL(A, lda * (N - 1) + (N - 1)); + const BASE a_imag = conj * CONST_IMAG(A, lda * (N - 1) + (N - 1)); + const BASE x_real = REAL(X, ix); + const BASE x_imag = IMAG(X, ix); + const BASE s = xhypot(a_real, a_imag); + const BASE b_real = a_real / s; + const BASE b_imag = a_imag / s; + REAL(X, ix) = (x_real * b_real + x_imag * b_imag) / s; + IMAG(X, ix) = (x_imag * b_real - b_imag * x_real) / s; + } + + ix -= incX; + + for (i = N - 1; i > 0 && i--;) { + BASE tmp_real = REAL(X, ix); + BASE tmp_imag = IMAG(X, ix); + jx = ix + incX; + for (j = i + 1; j < N; j++) { + const BASE Aij_real = CONST_REAL(A, lda * i + j); + const BASE Aij_imag = conj * CONST_IMAG(A, lda * i + j); + const BASE x_real = REAL(X, jx); + const BASE x_imag = IMAG(X, jx); + tmp_real -= Aij_real * x_real - Aij_imag * x_imag; + tmp_imag -= Aij_real * x_imag + Aij_imag * x_real; + jx += incX; + } + + if (nonunit) { + const BASE a_real = CONST_REAL(A, lda * i + i); + const BASE a_imag = conj * CONST_IMAG(A, lda * i + i); + const BASE s = xhypot(a_real, a_imag); + const BASE b_real = a_real / s; + const BASE b_imag = a_imag / s; + REAL(X, ix) = (tmp_real * b_real + tmp_imag * b_imag) / s; + IMAG(X, ix) = (tmp_imag * b_real - tmp_real * b_imag) / s; + } else { + REAL(X, ix) = tmp_real; + IMAG(X, ix) = tmp_imag; + } + ix -= incX; + } + + } else if ((order == CblasRowMajor && Trans == CblasNoTrans && Uplo == CblasLower) + || (order == CblasColMajor && Trans == CblasTrans && Uplo == CblasUpper)) { + /* forward substitution */ + + ix = OFFSET(N, incX); + + if (nonunit) { + const BASE a_real = CONST_REAL(A, lda * 0 + 0); + const BASE a_imag = conj * CONST_IMAG(A, lda * 0 + 0); + const BASE x_real = REAL(X, ix); + const BASE x_imag = IMAG(X, ix); + const BASE s = xhypot(a_real, a_imag); + const BASE b_real = a_real / s; + const BASE b_imag = a_imag / s; + REAL(X, ix) = (x_real * b_real + x_imag * b_imag) / s; + IMAG(X, ix) = (x_imag * b_real - b_imag * x_real) / s; + } + + ix += incX; + + for (i = 1; i < N; i++) { + BASE tmp_real = REAL(X, ix); + BASE tmp_imag = IMAG(X, ix); + jx = OFFSET(N, incX); + for (j = 0; j < i; j++) { + const BASE Aij_real = CONST_REAL(A, lda * i + j); + const BASE Aij_imag = conj * CONST_IMAG(A, lda * i + j); + const BASE x_real = REAL(X, jx); + const BASE x_imag = IMAG(X, jx); + tmp_real -= Aij_real * x_real - Aij_imag * x_imag; + tmp_imag -= Aij_real * x_imag + Aij_imag * x_real; + jx += incX; + } + if (nonunit) { + const BASE a_real = CONST_REAL(A, lda * i + i); + const BASE a_imag = conj * CONST_IMAG(A, lda * i + i); + const BASE s = xhypot(a_real, a_imag); + const BASE b_real = a_real / s; + const BASE b_imag = a_imag / s; + REAL(X, ix) = (tmp_real * b_real + tmp_imag * b_imag) / s; + IMAG(X, ix) = (tmp_imag * b_real - tmp_real * b_imag) / s; + } else { + REAL(X, ix) = tmp_real; + IMAG(X, ix) = tmp_imag; + } + ix += incX; + } + } else if ((order == CblasRowMajor && Trans == CblasTrans && Uplo == CblasUpper) + || (order == CblasColMajor && Trans == CblasNoTrans && Uplo == CblasLower)) { + /* form x := inv( A' )*x */ + + /* forward substitution */ + + ix = OFFSET(N, incX); + + if (nonunit) { + const BASE a_real = CONST_REAL(A, lda * 0 + 0); + const BASE a_imag = conj * CONST_IMAG(A, lda * 0 + 0); + const BASE x_real = REAL(X, ix); + const BASE x_imag = IMAG(X, ix); + const BASE s = xhypot(a_real, a_imag); + const BASE b_real = a_real / s; + const BASE b_imag = a_imag / s; + REAL(X, ix) = (x_real * b_real + x_imag * b_imag) / s; + IMAG(X, ix) = (x_imag * b_real - b_imag * x_real) / s; + } + + ix += incX; + + for (i = 1; i < N; i++) { + BASE tmp_real = REAL(X, ix); + BASE tmp_imag = IMAG(X, ix); + jx = OFFSET(N, incX); + for (j = 0; j < i; j++) { + const BASE Aij_real = CONST_REAL(A, lda * j + i); + const BASE Aij_imag = conj * CONST_IMAG(A, lda * j + i); + const BASE x_real = REAL(X, jx); + const BASE x_imag = IMAG(X, jx); + tmp_real -= Aij_real * x_real - Aij_imag * x_imag; + tmp_imag -= Aij_real * x_imag + Aij_imag * x_real; + jx += incX; + } + if (nonunit) { + const BASE a_real = CONST_REAL(A, lda * i + i); + const BASE a_imag = conj * CONST_IMAG(A, lda * i + i); + const BASE s = xhypot(a_real, a_imag); + const BASE b_real = a_real / s; + const BASE b_imag = a_imag / s; + REAL(X, ix) = (tmp_real * b_real + tmp_imag * b_imag) / s; + IMAG(X, ix) = (tmp_imag * b_real - tmp_real * b_imag) / s; + } else { + REAL(X, ix) = tmp_real; + IMAG(X, ix) = tmp_imag; + } + ix += incX; + } + } else if ((order == CblasRowMajor && Trans == CblasTrans && Uplo == CblasLower) + || (order == CblasColMajor && Trans == CblasNoTrans && Uplo == CblasUpper)) { + + /* backsubstitution */ + + ix = OFFSET(N, incX) + incX * (N - 1); + + if (nonunit) { + const BASE a_real = CONST_REAL(A, lda * (N - 1) + (N - 1)); + const BASE a_imag = conj * CONST_IMAG(A, lda * (N - 1) + (N - 1)); + const BASE x_real = REAL(X, ix); + const BASE x_imag = IMAG(X, ix); + const BASE s = xhypot(a_real, a_imag); + const BASE b_real = a_real / s; + const BASE b_imag = a_imag / s; + REAL(X, ix) = (x_real * b_real + x_imag * b_imag) / s; + IMAG(X, ix) = (x_imag * b_real - b_imag * x_real) / s; + } + + ix -= incX; + + for (i = N - 1; i > 0 && i--;) { + BASE tmp_real = REAL(X, ix); + BASE tmp_imag = IMAG(X, ix); + jx = ix + incX; + for (j = i + 1; j < N; j++) { + const BASE Aij_real = CONST_REAL(A, lda * j + i); + const BASE Aij_imag = conj * CONST_IMAG(A, lda * j + i); + const BASE x_real = REAL(X, jx); + const BASE x_imag = IMAG(X, jx); + tmp_real -= Aij_real * x_real - Aij_imag * x_imag; + tmp_imag -= Aij_real * x_imag + Aij_imag * x_real; + jx += incX; + } + + if (nonunit) { + const BASE a_real = CONST_REAL(A, lda * i + i); + const BASE a_imag = conj * CONST_IMAG(A, lda * i + i); + const BASE s = xhypot(a_real, a_imag); + const BASE b_real = a_real / s; + const BASE b_imag = a_imag / s; + REAL(X, ix) = (tmp_real * b_real + tmp_imag * b_imag) / s; + IMAG(X, ix) = (tmp_imag * b_real - tmp_real * b_imag) / s; + } else { + REAL(X, ix) = tmp_real; + IMAG(X, ix) = tmp_imag; + } + ix -= incX; + } + } else { + BLAS_ERROR("unrecognized operation"); + } +} diff --git a/gsl-2.5/cblas/source_trsv_r.h b/gsl-2.5/cblas/source_trsv_r.h new file mode 100644 index 00000000..c351ade2 --- /dev/null +++ b/gsl-2.5/cblas/source_trsv_r.h @@ -0,0 +1,134 @@ +/* blas/source_trsv_r.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + const int nonunit = (Diag == CblasNonUnit); + INDEX ix, jx; + INDEX i, j; + const int Trans = (TransA != CblasConjTrans) ? TransA : CblasTrans; + + CHECK_ARGS9(TRSV,order,Uplo,TransA,Diag,N,A,lda,X,incX); + + if (N == 0) + return; + + /* form x := inv( A )*x */ + + if ((order == CblasRowMajor && Trans == CblasNoTrans && Uplo == CblasUpper) + || (order == CblasColMajor && Trans == CblasTrans && Uplo == CblasLower)) { + /* backsubstitution */ + ix = OFFSET(N, incX) + incX * (N - 1); + if (nonunit) { + X[ix] = X[ix] / A[lda * (N - 1) + (N - 1)]; + } + ix -= incX; + for (i = N - 1; i > 0 && i--;) { + BASE tmp = X[ix]; + jx = ix + incX; + for (j = i + 1; j < N; j++) { + const BASE Aij = A[lda * i + j]; + tmp -= Aij * X[jx]; + jx += incX; + } + if (nonunit) { + X[ix] = tmp / A[lda * i + i]; + } else { + X[ix] = tmp; + } + ix -= incX; + } + } else if ((order == CblasRowMajor && Trans == CblasNoTrans && Uplo == CblasLower) + || (order == CblasColMajor && Trans == CblasTrans && Uplo == CblasUpper)) { + + /* forward substitution */ + ix = OFFSET(N, incX); + if (nonunit) { + X[ix] = X[ix] / A[lda * 0 + 0]; + } + ix += incX; + for (i = 1; i < N; i++) { + BASE tmp = X[ix]; + jx = OFFSET(N, incX); + for (j = 0; j < i; j++) { + const BASE Aij = A[lda * i + j]; + tmp -= Aij * X[jx]; + jx += incX; + } + if (nonunit) { + X[ix] = tmp / A[lda * i + i]; + } else { + X[ix] = tmp; + } + ix += incX; + } + } else if ((order == CblasRowMajor && Trans == CblasTrans && Uplo == CblasUpper) + || (order == CblasColMajor && Trans == CblasNoTrans && Uplo == CblasLower)) { + + /* form x := inv( A' )*x */ + + /* forward substitution */ + ix = OFFSET(N, incX); + if (nonunit) { + X[ix] = X[ix] / A[lda * 0 + 0]; + } + ix += incX; + for (i = 1; i < N; i++) { + BASE tmp = X[ix]; + jx = OFFSET(N, incX); + for (j = 0; j < i; j++) { + const BASE Aji = A[lda * j + i]; + tmp -= Aji * X[jx]; + jx += incX; + } + if (nonunit) { + X[ix] = tmp / A[lda * i + i]; + } else { + X[ix] = tmp; + } + ix += incX; + } + } else if ((order == CblasRowMajor && Trans == CblasTrans && Uplo == CblasLower) + || (order == CblasColMajor && Trans == CblasNoTrans && Uplo == CblasUpper)) { + + /* backsubstitution */ + ix = OFFSET(N, incX) + (N - 1) * incX; + if (nonunit) { + X[ix] = X[ix] / A[lda * (N - 1) + (N - 1)]; + } + ix -= incX; + for (i = N - 1; i > 0 && i--;) { + BASE tmp = X[ix]; + jx = ix + incX; + for (j = i + 1; j < N; j++) { + const BASE Aji = A[lda * j + i]; + tmp -= Aji * X[jx]; + jx += incX; + } + if (nonunit) { + X[ix] = tmp / A[lda * i + i]; + } else { + X[ix] = tmp; + } + ix -= incX; + } + } else { + BLAS_ERROR("unrecognized operation"); + } + +} diff --git a/gsl-2.5/cblas/srot.c b/gsl-2.5/cblas/srot.c new file mode 100644 index 00000000..ee602d0f --- /dev/null +++ b/gsl-2.5/cblas/srot.c @@ -0,0 +1,12 @@ +#include +#include +#include "cblas.h" + +void +cblas_srot (const int N, float *X, const int incX, float *Y, const int incY, + const float c, const float s) +{ +#define BASE float +#include "source_rot.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/srot.lo b/gsl-2.5/cblas/srot.lo new file mode 100644 index 00000000..7268d121 --- /dev/null +++ b/gsl-2.5/cblas/srot.lo @@ -0,0 +1,12 @@ +# srot.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/srot.o' + +# Name of the non-PIC object +non_pic_object='srot.o' + diff --git a/gsl-2.5/cblas/srotg.c b/gsl-2.5/cblas/srotg.c new file mode 100644 index 00000000..65b27964 --- /dev/null +++ b/gsl-2.5/cblas/srotg.c @@ -0,0 +1,11 @@ +#include +#include +#include "cblas.h" + +void +cblas_srotg (float *a, float *b, float *c, float *s) +{ +#define BASE float +#include "source_rotg.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/srotg.lo b/gsl-2.5/cblas/srotg.lo new file mode 100644 index 00000000..4d17b011 --- /dev/null +++ b/gsl-2.5/cblas/srotg.lo @@ -0,0 +1,12 @@ +# srotg.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/srotg.o' + +# Name of the non-PIC object +non_pic_object='srotg.o' + diff --git a/gsl-2.5/cblas/srotm.c b/gsl-2.5/cblas/srotm.c new file mode 100644 index 00000000..b4707e60 --- /dev/null +++ b/gsl-2.5/cblas/srotm.c @@ -0,0 +1,12 @@ +#include +#include +#include "cblas.h" + +void +cblas_srotm (const int N, float *X, const int incX, float *Y, const int incY, + const float *P) +{ +#define BASE float +#include "source_rotm.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/srotm.lo b/gsl-2.5/cblas/srotm.lo new file mode 100644 index 00000000..83c532f8 --- /dev/null +++ b/gsl-2.5/cblas/srotm.lo @@ -0,0 +1,12 @@ +# srotm.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/srotm.o' + +# Name of the non-PIC object +non_pic_object='srotm.o' + diff --git a/gsl-2.5/cblas/srotmg.c b/gsl-2.5/cblas/srotmg.c new file mode 100644 index 00000000..3366300f --- /dev/null +++ b/gsl-2.5/cblas/srotmg.c @@ -0,0 +1,11 @@ +#include +#include +#include "cblas.h" + +void +cblas_srotmg (float *d1, float *d2, float *b1, const float b2, float *P) +{ +#define BASE float +#include "source_rotmg.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/srotmg.lo b/gsl-2.5/cblas/srotmg.lo new file mode 100644 index 00000000..d11aa9f5 --- /dev/null +++ b/gsl-2.5/cblas/srotmg.lo @@ -0,0 +1,12 @@ +# srotmg.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/srotmg.o' + +# Name of the non-PIC object +non_pic_object='srotmg.o' + diff --git a/gsl-2.5/cblas/ssbmv.c b/gsl-2.5/cblas/ssbmv.c new file mode 100644 index 00000000..6a9302b2 --- /dev/null +++ b/gsl-2.5/cblas/ssbmv.c @@ -0,0 +1,15 @@ +#include +#include +#include "cblas.h" +#include "error_cblas_l2.h" + +void +cblas_ssbmv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const int N, const int K, const float alpha, const float *A, + const int lda, const float *X, const int incX, const float beta, + float *Y, const int incY) +{ +#define BASE float +#include "source_sbmv.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/ssbmv.lo b/gsl-2.5/cblas/ssbmv.lo new file mode 100644 index 00000000..9ba1bf20 --- /dev/null +++ b/gsl-2.5/cblas/ssbmv.lo @@ -0,0 +1,12 @@ +# ssbmv.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/ssbmv.o' + +# Name of the non-PIC object +non_pic_object='ssbmv.o' + diff --git a/gsl-2.5/cblas/sscal.c b/gsl-2.5/cblas/sscal.c new file mode 100644 index 00000000..e4a83348 --- /dev/null +++ b/gsl-2.5/cblas/sscal.c @@ -0,0 +1,11 @@ +#include +#include +#include "cblas.h" + +void +cblas_sscal (const int N, const float alpha, float *X, const int incX) +{ +#define BASE float +#include "source_scal_r.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/sscal.lo b/gsl-2.5/cblas/sscal.lo new file mode 100644 index 00000000..1bf5fc43 --- /dev/null +++ b/gsl-2.5/cblas/sscal.lo @@ -0,0 +1,12 @@ +# sscal.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/sscal.o' + +# Name of the non-PIC object +non_pic_object='sscal.o' + diff --git a/gsl-2.5/cblas/sspmv.c b/gsl-2.5/cblas/sspmv.c new file mode 100644 index 00000000..8aca4cc3 --- /dev/null +++ b/gsl-2.5/cblas/sspmv.c @@ -0,0 +1,14 @@ +#include +#include +#include "cblas.h" +#include "error_cblas_l2.h" + +void +cblas_sspmv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const int N, const float alpha, const float *Ap, const float *X, + const int incX, const float beta, float *Y, const int incY) +{ +#define BASE float +#include "source_spmv.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/sspmv.lo b/gsl-2.5/cblas/sspmv.lo new file mode 100644 index 00000000..d2fe3a7f --- /dev/null +++ b/gsl-2.5/cblas/sspmv.lo @@ -0,0 +1,12 @@ +# sspmv.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/sspmv.o' + +# Name of the non-PIC object +non_pic_object='sspmv.o' + diff --git a/gsl-2.5/cblas/sspr.c b/gsl-2.5/cblas/sspr.c new file mode 100644 index 00000000..14171c67 --- /dev/null +++ b/gsl-2.5/cblas/sspr.c @@ -0,0 +1,14 @@ +#include +#include +#include "cblas.h" +#include "error_cblas_l2.h" + +void +cblas_sspr (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const int N, const float alpha, const float *X, const int incX, + float *Ap) +{ +#define BASE float +#include "source_spr.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/sspr.lo b/gsl-2.5/cblas/sspr.lo new file mode 100644 index 00000000..5a949636 --- /dev/null +++ b/gsl-2.5/cblas/sspr.lo @@ -0,0 +1,12 @@ +# sspr.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/sspr.o' + +# Name of the non-PIC object +non_pic_object='sspr.o' + diff --git a/gsl-2.5/cblas/sspr2.c b/gsl-2.5/cblas/sspr2.c new file mode 100644 index 00000000..d64ed10c --- /dev/null +++ b/gsl-2.5/cblas/sspr2.c @@ -0,0 +1,14 @@ +#include +#include +#include "cblas.h" +#include "error_cblas_l2.h" + +void +cblas_sspr2 (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const int N, const float alpha, const float *X, const int incX, + const float *Y, const int incY, float *Ap) +{ +#define BASE double +#include "source_spr2.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/sspr2.lo b/gsl-2.5/cblas/sspr2.lo new file mode 100644 index 00000000..1e8f4718 --- /dev/null +++ b/gsl-2.5/cblas/sspr2.lo @@ -0,0 +1,12 @@ +# sspr2.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/sspr2.o' + +# Name of the non-PIC object +non_pic_object='sspr2.o' + diff --git a/gsl-2.5/cblas/sswap.c b/gsl-2.5/cblas/sswap.c new file mode 100644 index 00000000..f9ca1530 --- /dev/null +++ b/gsl-2.5/cblas/sswap.c @@ -0,0 +1,11 @@ +#include +#include +#include "cblas.h" + +void +cblas_sswap (const int N, float *X, const int incX, float *Y, const int incY) +{ +#define BASE float +#include "source_swap_r.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/sswap.lo b/gsl-2.5/cblas/sswap.lo new file mode 100644 index 00000000..6c000085 --- /dev/null +++ b/gsl-2.5/cblas/sswap.lo @@ -0,0 +1,12 @@ +# sswap.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/sswap.o' + +# Name of the non-PIC object +non_pic_object='sswap.o' + diff --git a/gsl-2.5/cblas/ssymm.c b/gsl-2.5/cblas/ssymm.c new file mode 100644 index 00000000..79e05e65 --- /dev/null +++ b/gsl-2.5/cblas/ssymm.c @@ -0,0 +1,15 @@ +#include +#include +#include "cblas.h" +#include "error_cblas_l3.h" + +void +cblas_ssymm (const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, + const enum CBLAS_UPLO Uplo, const int M, const int N, + const float alpha, const float *A, const int lda, const float *B, + const int ldb, const float beta, float *C, const int ldc) +{ +#define BASE float +#include "source_symm_r.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/ssymm.lo b/gsl-2.5/cblas/ssymm.lo new file mode 100644 index 00000000..f985ff9c --- /dev/null +++ b/gsl-2.5/cblas/ssymm.lo @@ -0,0 +1,12 @@ +# ssymm.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/ssymm.o' + +# Name of the non-PIC object +non_pic_object='ssymm.o' + diff --git a/gsl-2.5/cblas/ssymv.c b/gsl-2.5/cblas/ssymv.c new file mode 100644 index 00000000..40d72a5e --- /dev/null +++ b/gsl-2.5/cblas/ssymv.c @@ -0,0 +1,15 @@ +#include +#include +#include "cblas.h" +#include "error_cblas_l2.h" + +void +cblas_ssymv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const int N, const float alpha, const float *A, const int lda, + const float *X, const int incX, const float beta, float *Y, + const int incY) +{ +#define BASE float +#include "source_symv.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/ssymv.lo b/gsl-2.5/cblas/ssymv.lo new file mode 100644 index 00000000..a06daf15 --- /dev/null +++ b/gsl-2.5/cblas/ssymv.lo @@ -0,0 +1,12 @@ +# ssymv.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/ssymv.o' + +# Name of the non-PIC object +non_pic_object='ssymv.o' + diff --git a/gsl-2.5/cblas/ssyr.c b/gsl-2.5/cblas/ssyr.c new file mode 100644 index 00000000..435eccab --- /dev/null +++ b/gsl-2.5/cblas/ssyr.c @@ -0,0 +1,14 @@ +#include +#include +#include "cblas.h" +#include "error_cblas_l2.h" + +void +cblas_ssyr (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const int N, const float alpha, const float *X, const int incX, + float *A, const int lda) +{ +#define BASE float +#include "source_syr.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/ssyr.lo b/gsl-2.5/cblas/ssyr.lo new file mode 100644 index 00000000..95043f7f --- /dev/null +++ b/gsl-2.5/cblas/ssyr.lo @@ -0,0 +1,12 @@ +# ssyr.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/ssyr.o' + +# Name of the non-PIC object +non_pic_object='ssyr.o' + diff --git a/gsl-2.5/cblas/ssyr2.c b/gsl-2.5/cblas/ssyr2.c new file mode 100644 index 00000000..50e2868f --- /dev/null +++ b/gsl-2.5/cblas/ssyr2.c @@ -0,0 +1,14 @@ +#include +#include +#include "cblas.h" +#include "error_cblas_l2.h" + +void +cblas_ssyr2 (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const int N, const float alpha, const float *X, const int incX, + const float *Y, const int incY, float *A, const int lda) +{ +#define BASE float +#include "source_syr2.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/ssyr2.lo b/gsl-2.5/cblas/ssyr2.lo new file mode 100644 index 00000000..5ebf300e --- /dev/null +++ b/gsl-2.5/cblas/ssyr2.lo @@ -0,0 +1,12 @@ +# ssyr2.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/ssyr2.o' + +# Name of the non-PIC object +non_pic_object='ssyr2.o' + diff --git a/gsl-2.5/cblas/ssyr2k.c b/gsl-2.5/cblas/ssyr2k.c new file mode 100644 index 00000000..796d1592 --- /dev/null +++ b/gsl-2.5/cblas/ssyr2k.c @@ -0,0 +1,16 @@ +#include +#include +#include "cblas.h" +#include "error_cblas_l3.h" + +void +cblas_ssyr2k (const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE Trans, const int N, const int K, + const float alpha, const float *A, const int lda, + const float *B, const int ldb, const float beta, float *C, + const int ldc) +{ +#define BASE float +#include "source_syr2k_r.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/ssyr2k.lo b/gsl-2.5/cblas/ssyr2k.lo new file mode 100644 index 00000000..ac071987 --- /dev/null +++ b/gsl-2.5/cblas/ssyr2k.lo @@ -0,0 +1,12 @@ +# ssyr2k.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/ssyr2k.o' + +# Name of the non-PIC object +non_pic_object='ssyr2k.o' + diff --git a/gsl-2.5/cblas/ssyrk.c b/gsl-2.5/cblas/ssyrk.c new file mode 100644 index 00000000..bb4da44a --- /dev/null +++ b/gsl-2.5/cblas/ssyrk.c @@ -0,0 +1,15 @@ +#include +#include +#include "cblas.h" +#include "error_cblas_l3.h" + +void +cblas_ssyrk (const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE Trans, const int N, const int K, + const float alpha, const float *A, const int lda, + const float beta, float *C, const int ldc) +{ +#define BASE float +#include "source_syrk_r.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/ssyrk.lo b/gsl-2.5/cblas/ssyrk.lo new file mode 100644 index 00000000..e33a2125 --- /dev/null +++ b/gsl-2.5/cblas/ssyrk.lo @@ -0,0 +1,12 @@ +# ssyrk.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/ssyrk.o' + +# Name of the non-PIC object +non_pic_object='ssyrk.o' + diff --git a/gsl-2.5/cblas/stbmv.c b/gsl-2.5/cblas/stbmv.c new file mode 100644 index 00000000..94eab410 --- /dev/null +++ b/gsl-2.5/cblas/stbmv.c @@ -0,0 +1,15 @@ +#include +#include +#include "cblas.h" +#include "error_cblas_l2.h" + +void +cblas_stbmv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, + const int N, const int K, const float *A, const int lda, + float *X, const int incX) +{ +#define BASE float +#include "source_tbmv_r.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/stbmv.lo b/gsl-2.5/cblas/stbmv.lo new file mode 100644 index 00000000..5082de05 --- /dev/null +++ b/gsl-2.5/cblas/stbmv.lo @@ -0,0 +1,12 @@ +# stbmv.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/stbmv.o' + +# Name of the non-PIC object +non_pic_object='stbmv.o' + diff --git a/gsl-2.5/cblas/stbsv.c b/gsl-2.5/cblas/stbsv.c new file mode 100644 index 00000000..4be9f8a3 --- /dev/null +++ b/gsl-2.5/cblas/stbsv.c @@ -0,0 +1,15 @@ +#include +#include +#include "cblas.h" +#include "error_cblas_l2.h" + +void +cblas_stbsv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, + const int N, const int K, const float *A, const int lda, + float *X, const int incX) +{ +#define BASE float +#include "source_tbsv_r.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/stbsv.lo b/gsl-2.5/cblas/stbsv.lo new file mode 100644 index 00000000..68ec95c8 --- /dev/null +++ b/gsl-2.5/cblas/stbsv.lo @@ -0,0 +1,12 @@ +# stbsv.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/stbsv.o' + +# Name of the non-PIC object +non_pic_object='stbsv.o' + diff --git a/gsl-2.5/cblas/stpmv.c b/gsl-2.5/cblas/stpmv.c new file mode 100644 index 00000000..e05744d2 --- /dev/null +++ b/gsl-2.5/cblas/stpmv.c @@ -0,0 +1,14 @@ +#include +#include +#include "cblas.h" +#include "error_cblas_l2.h" + +void +cblas_stpmv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, + const int N, const float *Ap, float *X, const int incX) +{ +#define BASE float +#include "source_tpmv_r.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/stpmv.lo b/gsl-2.5/cblas/stpmv.lo new file mode 100644 index 00000000..8f94a09d --- /dev/null +++ b/gsl-2.5/cblas/stpmv.lo @@ -0,0 +1,12 @@ +# stpmv.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/stpmv.o' + +# Name of the non-PIC object +non_pic_object='stpmv.o' + diff --git a/gsl-2.5/cblas/stpsv.c b/gsl-2.5/cblas/stpsv.c new file mode 100644 index 00000000..deff58a0 --- /dev/null +++ b/gsl-2.5/cblas/stpsv.c @@ -0,0 +1,14 @@ +#include +#include +#include "cblas.h" +#include "error_cblas_l2.h" + +void +cblas_stpsv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, + const int N, const float *Ap, float *X, const int incX) +{ +#define BASE float +#include "source_tpsv_r.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/stpsv.lo b/gsl-2.5/cblas/stpsv.lo new file mode 100644 index 00000000..8bcaa499 --- /dev/null +++ b/gsl-2.5/cblas/stpsv.lo @@ -0,0 +1,12 @@ +# stpsv.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/stpsv.o' + +# Name of the non-PIC object +non_pic_object='stpsv.o' + diff --git a/gsl-2.5/cblas/strmm.c b/gsl-2.5/cblas/strmm.c new file mode 100644 index 00000000..e8a33ff5 --- /dev/null +++ b/gsl-2.5/cblas/strmm.c @@ -0,0 +1,16 @@ +#include +#include +#include "cblas.h" +#include "error_cblas_l3.h" + +void +cblas_strmm (const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, + const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, + const enum CBLAS_DIAG Diag, const int M, const int N, + const float alpha, const float *A, const int lda, float *B, + const int ldb) +{ +#define BASE float +#include "source_trmm_r.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/strmm.lo b/gsl-2.5/cblas/strmm.lo new file mode 100644 index 00000000..4347ad86 --- /dev/null +++ b/gsl-2.5/cblas/strmm.lo @@ -0,0 +1,12 @@ +# strmm.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/strmm.o' + +# Name of the non-PIC object +non_pic_object='strmm.o' + diff --git a/gsl-2.5/cblas/strmv.c b/gsl-2.5/cblas/strmv.c new file mode 100644 index 00000000..b5a52bdb --- /dev/null +++ b/gsl-2.5/cblas/strmv.c @@ -0,0 +1,15 @@ +#include +#include +#include "cblas.h" +#include "error_cblas_l2.h" + +void +cblas_strmv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, + const int N, const float *A, const int lda, float *X, + const int incX) +{ +#define BASE float +#include "source_trmv_r.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/strmv.lo b/gsl-2.5/cblas/strmv.lo new file mode 100644 index 00000000..1c2a9d7d --- /dev/null +++ b/gsl-2.5/cblas/strmv.lo @@ -0,0 +1,12 @@ +# strmv.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/strmv.o' + +# Name of the non-PIC object +non_pic_object='strmv.o' + diff --git a/gsl-2.5/cblas/strsm.c b/gsl-2.5/cblas/strsm.c new file mode 100644 index 00000000..aa7f2a40 --- /dev/null +++ b/gsl-2.5/cblas/strsm.c @@ -0,0 +1,16 @@ +#include +#include +#include "cblas.h" +#include "error_cblas_l3.h" + +void +cblas_strsm (const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, + const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, + const enum CBLAS_DIAG Diag, const int M, const int N, + const float alpha, const float *A, const int lda, float *B, + const int ldb) +{ +#define BASE float +#include "source_trsm_r.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/strsm.lo b/gsl-2.5/cblas/strsm.lo new file mode 100644 index 00000000..d10a14b8 --- /dev/null +++ b/gsl-2.5/cblas/strsm.lo @@ -0,0 +1,12 @@ +# strsm.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/strsm.o' + +# Name of the non-PIC object +non_pic_object='strsm.o' + diff --git a/gsl-2.5/cblas/strsv.c b/gsl-2.5/cblas/strsv.c new file mode 100644 index 00000000..f60fc693 --- /dev/null +++ b/gsl-2.5/cblas/strsv.c @@ -0,0 +1,15 @@ +#include +#include +#include "cblas.h" +#include "error_cblas_l2.h" + +void +cblas_strsv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, + const int N, const float *A, const int lda, float *X, + const int incX) +{ +#define BASE float +#include "source_trsv_r.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/strsv.lo b/gsl-2.5/cblas/strsv.lo new file mode 100644 index 00000000..e6ec32b1 --- /dev/null +++ b/gsl-2.5/cblas/strsv.lo @@ -0,0 +1,12 @@ +# strsv.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/strsv.o' + +# Name of the non-PIC object +non_pic_object='strsv.o' + diff --git a/gsl-2.5/cblas/test b/gsl-2.5/cblas/test new file mode 100755 index 00000000..756c58a7 --- /dev/null +++ b/gsl-2.5/cblas/test @@ -0,0 +1,228 @@ +#! /bin/sh + +# test - temporary wrapper script for .libs/test +# Generated by libtool (GNU libtool) 2.4.2 +# +# The test program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s/\([`"$\\]\)/\\\1/g' + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command="(cd /home/groups/kipac/chto/package/gsl/gsl-2.5/cblas; LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LIBRARY_PATH; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; LD_LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/fftw/include:/home/users/chto/lib/fftw/lib:/home/users/chto/lib/healpix/lib:/home/users/chto/lib/namaster/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/include:/home/users/chto/cpp/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LD_LIBRARY_PATH; PATH=/share/software/user/open/curl/7.54.0/bin:/share/software/user/open/libressl/2.5.3/bin:/home/users/chto/lib/cfitsio:/home/users/chto/lib/cfitsio/include:/home/users/chto/lib:/home/users/chto/bin/bin:/home/users/chto/bin:/home/users/chto/.texlive/bin/x86_64-linux:/home/groups/kipac/chto/anaconda2/envs/newenv3/bin:/home/users/chto/.local/bin/include:/home/users/chto/.local/bin/lib:/home/users/chto/.local/bin:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/bin64:/share/software/user/open/fftw/3.3.6/bin:/home/groups/kipac/chto/anaconda2/condabin:/share/software/user/restricted/ifort/2019/bin:/share/software/user/open/gsl/2.3/bin:/share/software/user/srcc/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/dell/srvadmin/bin:/opt/dell/srvadmin/iSM/bin:/home/users/chto/bin; export PATH; gcc -g -O2 -o \$progdir/\$file test.o test_amax.o test_asum.o test_axpy.o test_copy.o test_dot.o test_gbmv.o test_gemm.o test_gemv.o test_ger.o test_hbmv.o test_hemm.o test_hemv.o test_her.o test_her2.o test_her2k.o test_herk.o test_hpmv.o test_hpr.o test_hpr2.o test_nrm2.o test_rot.o test_rotg.o test_rotm.o test_rotmg.o test_sbmv.o test_scal.o test_spmv.o test_spr.o test_spr2.o test_swap.o test_symm.o test_symv.o test_syr.o test_syr2.o test_syr2k.o test_syrk.o test_tbmv.o test_tbsv.o test_tpmv.o test_tpsv.o test_trmm.o test_trmv.o test_trsm.o test_trsv.o ./.libs/libgslcblas.so ../ieee-utils/.libs/libgslieeeutils.a ../err/.libs/libgslerr.a ../test/.libs/libgsltest.a ../sys/.libs/libgslsys.a -lm -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/cblas/.libs -Wl,-rpath -Wl,/usr/local/lib)" + +# This environment variable determines our operation mode. +if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then + # install mode needs the following variables: + generated_by_libtool_version='2.4.2' + notinst_deplibs=' libgslcblas.la' +else + # When we are sourced in execute mode, $file and $ECHO are already set. + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + file="$0" + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + ECHO="printf %s\\n" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ which is used only on +# windows platforms, and (c) all begin with the string --lt- +# (application programs are unlikely to have options which match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's ../libtool value, followed by no. +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=$0 + shift + for lt_opt + do + case "$lt_opt" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%/[^/]*$%%'` + test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=. + lt_dump_F=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%^.*/%%'` + cat "$lt_dump_D/$lt_dump_F" + exit 0 + ;; + --lt-*) + $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n "$lt_option_debug"; then + echo "test:test:${LINENO}: libtool wrapper (GNU libtool) 2.4.2" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + $ECHO "test:test:${LINENO}: newargv[$lt_dump_args_N]: $lt_arg" + lt_dump_args_N=`expr $lt_dump_args_N + 1` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ + + if test -n "$lt_option_debug"; then + $ECHO "test:test:${LINENO}: newargv[0]: $progdir/$program" 1>&2 + func_lt_dump_args ${1+"$@"} 1>&2 + fi + exec "$progdir/$program" ${1+"$@"} + + $ECHO "$0: cannot exec $program $*" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from $@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case " $* " in + *\ --lt-*) + for lt_wr_arg + do + case $lt_wr_arg in + --lt-*) ;; + *) set x "$@" "$lt_wr_arg"; shift;; + esac + shift + done ;; + esac + func_exec_program_core ${1+"$@"} +} + + # Parse options + func_parse_lt_options "$0" ${1+"$@"} + + # Find the directory that this script lives in. + thisdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + test "x$thisdir" = "x$file" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=`ls -ld "$file" | /usr/bin/sed -n 's/.*-> //p'` + while test -n "$file"; do + destdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + + # If there was a directory component, then change thisdir. + if test "x$destdir" != "x$file"; then + case "$destdir" in + [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;; + *) thisdir="$thisdir/$destdir" ;; + esac + fi + + file=`$ECHO "$file" | /usr/bin/sed 's%^.*/%%'` + file=`ls -ld "$thisdir/$file" | /usr/bin/sed -n 's/.*-> //p'` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no + if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then + # special case for '.' + if test "$thisdir" = "."; then + thisdir=`pwd` + fi + # remove .libs from thisdir + case "$thisdir" in + *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /usr/bin/sed 's%[\\/][^\\/]*$%%'` ;; + .libs ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=`cd "$thisdir" && pwd` + test -n "$absdir" && thisdir="$absdir" + + program=lt-'test' + progdir="$thisdir/.libs" + + if test ! -f "$progdir/$program" || + { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /usr/bin/sed 1q`; \ + test "X$file" != "X$progdir/$program"; }; then + + file="$$-$program" + + if test ! -d "$progdir"; then + mkdir "$progdir" + else + rm -f "$progdir/$file" + fi + + # relink executable if necessary + if test -n "$relink_command"; then + if relink_command_output=`eval $relink_command 2>&1`; then : + else + printf %s\n "$relink_command_output" >&2 + rm -f "$progdir/$file" + exit 1 + fi + fi + + mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null || + { rm -f "$progdir/$program"; + mv -f "$progdir/$file" "$progdir/$program"; } + rm -f "$progdir/$file" + fi + + if test -f "$progdir/$program"; then + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + # Run the actual program with our arguments. + func_exec_program ${1+"$@"} + fi + else + # The program doesn't exist. + $ECHO "$0: error: \`$progdir/$program' does not exist" 1>&2 + $ECHO "This script is just a wrapper for $program." 1>&2 + $ECHO "See the libtool documentation for more information." 1>&2 + exit 1 + fi +fi diff --git a/gsl-2.5/cblas/test-suite.log b/gsl-2.5/cblas/test-suite.log new file mode 100644 index 00000000..69cdf654 --- /dev/null +++ b/gsl-2.5/cblas/test-suite.log @@ -0,0 +1,14 @@ +=================================== + gsl 2.5: cblas/test-suite.log +=================================== + +# TOTAL: 1 +# PASS: 1 +# SKIP: 0 +# XFAIL: 0 +# FAIL: 0 +# XPASS: 0 +# ERROR: 0 + +.. contents:: :depth: 2 + diff --git a/gsl-2.5/cblas/test.c b/gsl-2.5/cblas/test.c new file mode 100644 index 00000000..151d6bfa --- /dev/null +++ b/gsl-2.5/cblas/test.c @@ -0,0 +1,38 @@ +/* blas/test.c + * + * Copyright (C) 2001, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include + +#include "tests.h" + +int +main (void) +{ + gsl_ieee_env_setup (); + +#include "tests.c" + + exit (gsl_test_summary()); +} + diff --git a/gsl-2.5/cblas/test.log b/gsl-2.5/cblas/test.log new file mode 100644 index 00000000..ab9ea3ef --- /dev/null +++ b/gsl-2.5/cblas/test.log @@ -0,0 +1 @@ +Completed [6865/6865] diff --git a/gsl-2.5/cblas/test.trs b/gsl-2.5/cblas/test.trs new file mode 100644 index 00000000..3f0f396c --- /dev/null +++ b/gsl-2.5/cblas/test.trs @@ -0,0 +1,4 @@ +:test-result: PASS +:global-test-result: PASS +:recheck: no +:copy-in-global-log: no diff --git a/gsl-2.5/cblas/test_amax.c b/gsl-2.5/cblas/test_amax.c new file mode 100644 index 00000000..c3702241 --- /dev/null +++ b/gsl-2.5/cblas/test_amax.c @@ -0,0 +1,142 @@ +#include +#include +#include +#include + +#include "tests.h" + +void +test_amax (void) { + { + int N = 1; + float X[] = { -0.388f }; + int incX = -1; + int expected = 0; + int k; + k = cblas_isamax(N, X, incX); + gsl_test_int(k, expected, "samax(case 52)"); + }; + + + { + int N = 1; + double X[] = { 0.247 }; + int incX = -1; + int expected = 0; + int k; + k = cblas_idamax(N, X, incX); + gsl_test_int(k, expected, "damax(case 53)"); + }; + + + { + int N = 1; + float X[] = { 0.704f, 0.665f }; + int incX = -1; + int expected = 0; + int k; + k = cblas_icamax(N, X, incX); + gsl_test_int(k, expected, "camax(case 54)"); + }; + + + { + int N = 1; + double X[] = { -0.599, -0.758 }; + int incX = -1; + int expected = 0; + int k; + k = cblas_izamax(N, X, incX); + gsl_test_int(k, expected, "zamax(case 55)"); + }; + + + { + int N = 2; + float X[] = { 0.909f, 0.037f }; + int incX = 1; + int expected = 0; + int k; + k = cblas_isamax(N, X, incX); + gsl_test_int(k, expected, "samax(case 56)"); + }; + + + { + int N = 2; + double X[] = { 0.271, -0.426 }; + int incX = 1; + int expected = 1; + int k; + k = cblas_idamax(N, X, incX); + gsl_test_int(k, expected, "damax(case 57)"); + }; + + + { + int N = 2; + float X[] = { -0.648f, 0.317f, 0.62f, 0.392f }; + int incX = 1; + int expected = 1; + int k; + k = cblas_icamax(N, X, incX); + gsl_test_int(k, expected, "camax(case 58)"); + }; + + + { + int N = 2; + double X[] = { -0.789, 0.352, 0.562, 0.697 }; + int incX = 1; + int expected = 1; + int k; + k = cblas_izamax(N, X, incX); + gsl_test_int(k, expected, "zamax(case 59)"); + }; + + + { + int N = 2; + float X[] = { 0.487f, 0.918f }; + int incX = -1; + int expected = 0; + int k; + k = cblas_isamax(N, X, incX); + gsl_test_int(k, expected, "samax(case 60)"); + }; + + + { + int N = 2; + double X[] = { 0.537, 0.826 }; + int incX = -1; + int expected = 0; + int k; + k = cblas_idamax(N, X, incX); + gsl_test_int(k, expected, "damax(case 61)"); + }; + + + { + int N = 2; + float X[] = { 0.993f, 0.172f, -0.825f, 0.873f }; + int incX = -1; + int expected = 0; + int k; + k = cblas_icamax(N, X, incX); + gsl_test_int(k, expected, "camax(case 62)"); + }; + + + { + int N = 2; + double X[] = { 0.913, -0.436, -0.134, 0.129 }; + int incX = -1; + int expected = 0; + int k; + k = cblas_izamax(N, X, incX); + gsl_test_int(k, expected, "zamax(case 63)"); + }; + + +} diff --git a/gsl-2.5/cblas/test_asum.c b/gsl-2.5/cblas/test_asum.c new file mode 100644 index 00000000..26353ded --- /dev/null +++ b/gsl-2.5/cblas/test_asum.c @@ -0,0 +1,143 @@ +#include +#include +#include +#include + +#include "tests.h" + +void +test_asum (void) { +const double flteps = 1e-4, dbleps = 1e-6; + { + int N = 1; + float X[] = { 0.239f }; + int incX = -1; + float expected = 0.0f; + float f; + f = cblas_sasum(N, X, incX); + gsl_test_rel(f, expected, flteps, "sasum(case 40)"); + }; + + + { + int N = 1; + double X[] = { -0.413 }; + int incX = -1; + double expected = 0; + double f; + f = cblas_dasum(N, X, incX); + gsl_test_rel(f, expected, dbleps, "dasum(case 41)"); + }; + + + { + int N = 1; + float X[] = { 0.1f, 0.017f }; + int incX = -1; + float expected = 0.0f; + float f; + f = cblas_scasum(N, X, incX); + gsl_test_rel(f, expected, flteps, "scasum(case 42)"); + }; + + + { + int N = 1; + double X[] = { -0.651, 0.079 }; + int incX = -1; + double expected = 0; + double f; + f = cblas_dzasum(N, X, incX); + gsl_test_rel(f, expected, dbleps, "dzasum(case 43)"); + }; + + + { + int N = 2; + float X[] = { 0.899f, -0.72f }; + int incX = 1; + float expected = 1.619f; + float f; + f = cblas_sasum(N, X, incX); + gsl_test_rel(f, expected, flteps, "sasum(case 44)"); + }; + + + { + int N = 2; + double X[] = { 0.271, -0.012 }; + int incX = 1; + double expected = 0.283; + double f; + f = cblas_dasum(N, X, incX); + gsl_test_rel(f, expected, dbleps, "dasum(case 45)"); + }; + + + { + int N = 2; + float X[] = { -0.567f, -0.645f, 0.098f, 0.256f }; + int incX = 1; + float expected = 1.566f; + float f; + f = cblas_scasum(N, X, incX); + gsl_test_rel(f, expected, flteps, "scasum(case 46)"); + }; + + + { + int N = 2; + double X[] = { -0.046, -0.671, -0.323, 0.785 }; + int incX = 1; + double expected = 1.825; + double f; + f = cblas_dzasum(N, X, incX); + gsl_test_rel(f, expected, dbleps, "dzasum(case 47)"); + }; + + + { + int N = 2; + float X[] = { 0.169f, 0.833f }; + int incX = -1; + float expected = 0.0f; + float f; + f = cblas_sasum(N, X, incX); + gsl_test_rel(f, expected, flteps, "sasum(case 48)"); + }; + + + { + int N = 2; + double X[] = { -0.586, -0.486 }; + int incX = -1; + double expected = 0; + double f; + f = cblas_dasum(N, X, incX); + gsl_test_rel(f, expected, dbleps, "dasum(case 49)"); + }; + + + { + int N = 2; + float X[] = { -0.314f, -0.318f, -0.835f, -0.807f }; + int incX = -1; + float expected = 0.0f; + float f; + f = cblas_scasum(N, X, incX); + gsl_test_rel(f, expected, flteps, "scasum(case 50)"); + }; + + + { + int N = 2; + double X[] = { -0.927, 0.152, -0.554, -0.844 }; + int incX = -1; + double expected = 0; + double f; + f = cblas_dzasum(N, X, incX); + gsl_test_rel(f, expected, dbleps, "dzasum(case 51)"); + }; + + +} diff --git a/gsl-2.5/cblas/test_axpy.c b/gsl-2.5/cblas/test_axpy.c new file mode 100644 index 00000000..9f30cd4c --- /dev/null +++ b/gsl-2.5/cblas/test_axpy.c @@ -0,0 +1,233 @@ +#include +#include +#include +#include + +#include "tests.h" + +void +test_axpy (void) { +const double flteps = 1e-4, dbleps = 1e-6; + { + int N = 1; + float alpha = 0.0f; + float X[] = { 0.018f }; + int incX = 1; + float Y[] = { -0.417f }; + int incY = -1; + float expected[] = { -0.417f }; + cblas_saxpy(N, alpha, X, incX, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], expected[i], flteps, "saxpy(case 64)"); + } + }; + }; + + + { + int N = 1; + double alpha = 0; + double X[] = { 0.071 }; + int incX = 1; + double Y[] = { -0.888 }; + int incY = -1; + double expected[] = { -0.888 }; + cblas_daxpy(N, alpha, X, incX, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], expected[i], dbleps, "daxpy(case 65)"); + } + }; + }; + + + { + int N = 1; + float alpha[2] = {1.0f, 0.0f}; + float X[] = { -0.542f, -0.362f }; + int incX = 1; + float Y[] = { -0.459f, -0.433f }; + int incY = -1; + float expected[] = { -1.001f, -0.795f }; + cblas_caxpy(N, alpha, X, incX, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[2*i], expected[2*i], flteps, "caxpy(case 66) real"); + gsl_test_rel(Y[2*i+1], expected[2*i+1], flteps, "caxpy(case 66) imag"); + }; + }; + }; + + + { + int N = 1; + double alpha[2] = {-1, 0}; + double X[] = { 0.003, -0.514 }; + int incX = 1; + double Y[] = { -0.529, 0.743 }; + int incY = -1; + double expected[] = { -0.532, 1.257 }; + cblas_zaxpy(N, alpha, X, incX, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[2*i], expected[2*i], dbleps, "zaxpy(case 67) real"); + gsl_test_rel(Y[2*i+1], expected[2*i+1], dbleps, "zaxpy(case 67) imag"); + }; + }; + }; + + + { + int N = 1; + float alpha = 0.1f; + float X[] = { 0.771f }; + int incX = -1; + float Y[] = { 0.507f }; + int incY = 1; + float expected[] = { 0.5841f }; + cblas_saxpy(N, alpha, X, incX, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], expected[i], flteps, "saxpy(case 68)"); + } + }; + }; + + + { + int N = 1; + double alpha = -0.3; + double X[] = { 0.029 }; + int incX = -1; + double Y[] = { -0.992 }; + int incY = 1; + double expected[] = { -1.0007 }; + cblas_daxpy(N, alpha, X, incX, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], expected[i], dbleps, "daxpy(case 69)"); + } + }; + }; + + + { + int N = 1; + float alpha[2] = {-0.3f, 0.1f}; + float X[] = { 0.194f, -0.959f }; + int incX = -1; + float Y[] = { 0.096f, 0.032f }; + int incY = 1; + float expected[] = { 0.1337f, 0.3391f }; + cblas_caxpy(N, alpha, X, incX, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[2*i], expected[2*i], flteps, "caxpy(case 70) real"); + gsl_test_rel(Y[2*i+1], expected[2*i+1], flteps, "caxpy(case 70) imag"); + }; + }; + }; + + + { + int N = 1; + double alpha[2] = {0, 1}; + double X[] = { 0.776, -0.671 }; + int incX = -1; + double Y[] = { 0.39, 0.404 }; + int incY = 1; + double expected[] = { 1.061, 1.18 }; + cblas_zaxpy(N, alpha, X, incX, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[2*i], expected[2*i], dbleps, "zaxpy(case 71) real"); + gsl_test_rel(Y[2*i+1], expected[2*i+1], dbleps, "zaxpy(case 71) imag"); + }; + }; + }; + + + { + int N = 1; + float alpha = 1.0f; + float X[] = { 0.647f }; + int incX = -1; + float Y[] = { 0.016f }; + int incY = -1; + float expected[] = { 0.663f }; + cblas_saxpy(N, alpha, X, incX, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], expected[i], flteps, "saxpy(case 72)"); + } + }; + }; + + + { + int N = 1; + double alpha = -1; + double X[] = { -0.558 }; + int incX = -1; + double Y[] = { 0.308 }; + int incY = -1; + double expected[] = { 0.866 }; + cblas_daxpy(N, alpha, X, incX, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], expected[i], dbleps, "daxpy(case 73)"); + } + }; + }; + + + { + int N = 1; + float alpha[2] = {-0.3f, 0.1f}; + float X[] = { 0.899f, -0.624f }; + int incX = -1; + float Y[] = { 0.155f, -0.33f }; + int incY = -1; + float expected[] = { -0.0523f, -0.0529f }; + cblas_caxpy(N, alpha, X, incX, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[2*i], expected[2*i], flteps, "caxpy(case 74) real"); + gsl_test_rel(Y[2*i+1], expected[2*i+1], flteps, "caxpy(case 74) imag"); + }; + }; + }; + + + { + int N = 1; + double alpha[2] = {0, 1}; + double X[] = { -0.451, 0.768 }; + int incX = -1; + double Y[] = { 0.007, 0.732 }; + int incY = -1; + double expected[] = { -0.761, 0.281 }; + cblas_zaxpy(N, alpha, X, incX, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[2*i], expected[2*i], dbleps, "zaxpy(case 75) real"); + gsl_test_rel(Y[2*i+1], expected[2*i+1], dbleps, "zaxpy(case 75) imag"); + }; + }; + }; + + +} diff --git a/gsl-2.5/cblas/test_copy.c b/gsl-2.5/cblas/test_copy.c new file mode 100644 index 00000000..2a656632 --- /dev/null +++ b/gsl-2.5/cblas/test_copy.c @@ -0,0 +1,221 @@ +#include +#include +#include +#include + +#include "tests.h" + +void +test_copy (void) { +const double flteps = 1e-4, dbleps = 1e-6; + { + int N = 1; + float X[] = { 0.898f }; + int incX = 1; + float Y[] = { 0.699f }; + int incY = -1; + float expected[] = { 0.898f }; + cblas_scopy(N, X, incX, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], expected[i], flteps, "scopy(case 76)"); + } + }; + }; + + + { + int N = 1; + double X[] = { 0.002 }; + int incX = 1; + double Y[] = { -0.921 }; + int incY = -1; + double expected[] = { 0.002 }; + cblas_dcopy(N, X, incX, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], expected[i], dbleps, "dcopy(case 77)"); + } + }; + }; + + + { + int N = 1; + float X[] = { -0.166f, 0.639f }; + int incX = 1; + float Y[] = { 0.863f, 0.613f }; + int incY = -1; + float expected[] = { -0.166f, 0.639f }; + cblas_ccopy(N, X, incX, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[2*i], expected[2*i], flteps, "ccopy(case 78) real"); + gsl_test_rel(Y[2*i+1], expected[2*i+1], flteps, "ccopy(case 78) imag"); + }; + }; + }; + + + { + int N = 1; + double X[] = { 0.315, -0.324 }; + int incX = 1; + double Y[] = { -0.312, -0.748 }; + int incY = -1; + double expected[] = { 0.315, -0.324 }; + cblas_zcopy(N, X, incX, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[2*i], expected[2*i], dbleps, "zcopy(case 79) real"); + gsl_test_rel(Y[2*i+1], expected[2*i+1], dbleps, "zcopy(case 79) imag"); + }; + }; + }; + + + { + int N = 1; + float X[] = { 0.222f }; + int incX = -1; + float Y[] = { 0.522f }; + int incY = 1; + float expected[] = { 0.222f }; + cblas_scopy(N, X, incX, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], expected[i], flteps, "scopy(case 80)"); + } + }; + }; + + + { + int N = 1; + double X[] = { 0.021 }; + int incX = -1; + double Y[] = { 0.898 }; + int incY = 1; + double expected[] = { 0.021 }; + cblas_dcopy(N, X, incX, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], expected[i], dbleps, "dcopy(case 81)"); + } + }; + }; + + + { + int N = 1; + float X[] = { 0.376f, 0.229f }; + int incX = -1; + float Y[] = { 0.143f, -0.955f }; + int incY = 1; + float expected[] = { 0.376f, 0.229f }; + cblas_ccopy(N, X, incX, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[2*i], expected[2*i], flteps, "ccopy(case 82) real"); + gsl_test_rel(Y[2*i+1], expected[2*i+1], flteps, "ccopy(case 82) imag"); + }; + }; + }; + + + { + int N = 1; + double X[] = { -0.265, -0.84 }; + int incX = -1; + double Y[] = { -0.156, 0.939 }; + int incY = 1; + double expected[] = { -0.265, -0.84 }; + cblas_zcopy(N, X, incX, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[2*i], expected[2*i], dbleps, "zcopy(case 83) real"); + gsl_test_rel(Y[2*i+1], expected[2*i+1], dbleps, "zcopy(case 83) imag"); + }; + }; + }; + + + { + int N = 1; + float X[] = { 0.074f }; + int incX = -1; + float Y[] = { -0.802f }; + int incY = -1; + float expected[] = { 0.074f }; + cblas_scopy(N, X, incX, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], expected[i], flteps, "scopy(case 84)"); + } + }; + }; + + + { + int N = 1; + double X[] = { -0.374 }; + int incX = -1; + double Y[] = { -0.161 }; + int incY = -1; + double expected[] = { -0.374 }; + cblas_dcopy(N, X, incX, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], expected[i], dbleps, "dcopy(case 85)"); + } + }; + }; + + + { + int N = 1; + float X[] = { 0.084f, 0.778f }; + int incX = -1; + float Y[] = { 0.31f, -0.797f }; + int incY = -1; + float expected[] = { 0.084f, 0.778f }; + cblas_ccopy(N, X, incX, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[2*i], expected[2*i], flteps, "ccopy(case 86) real"); + gsl_test_rel(Y[2*i+1], expected[2*i+1], flteps, "ccopy(case 86) imag"); + }; + }; + }; + + + { + int N = 1; + double X[] = { 0.831, -0.282 }; + int incX = -1; + double Y[] = { -0.62, 0.32 }; + int incY = -1; + double expected[] = { 0.831, -0.282 }; + cblas_zcopy(N, X, incX, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[2*i], expected[2*i], dbleps, "zcopy(case 87) real"); + gsl_test_rel(Y[2*i+1], expected[2*i+1], dbleps, "zcopy(case 87) imag"); + }; + }; + }; + + +} diff --git a/gsl-2.5/cblas/test_dot.c b/gsl-2.5/cblas/test_dot.c new file mode 100644 index 00000000..8000fe72 --- /dev/null +++ b/gsl-2.5/cblas/test_dot.c @@ -0,0 +1,383 @@ +#include +#include +#include +#include + +#include "tests.h" + +void +test_dot (void) { +const double flteps = 1e-4, dbleps = 1e-6; + { + int N = 1; + float alpha = 0.0f; + float X[] = { 0.733f }; + float Y[] = { 0.825f }; + int incX = 1; + int incY = -1; + float expected = 0.604725f; + float f; + f = cblas_sdsdot (N, alpha, X, incX, Y, incY); + gsl_test_rel(f, expected, flteps, "sdsdot(case 1)"); + }; + + + { + int N = 1; + float alpha = 0.1f; + float X[] = { 0.733f }; + float Y[] = { 0.825f }; + int incX = 1; + int incY = -1; + float expected = 0.704725f; + float f; + f = cblas_sdsdot (N, alpha, X, incX, Y, incY); + gsl_test_rel(f, expected, flteps, "sdsdot(case 2)"); + }; + + + { + int N = 1; + float alpha = 1.0f; + float X[] = { 0.733f }; + float Y[] = { 0.825f }; + int incX = 1; + int incY = -1; + float expected = 1.604725f; + float f; + f = cblas_sdsdot (N, alpha, X, incX, Y, incY); + gsl_test_rel(f, expected, flteps, "sdsdot(case 3)"); + }; + + + { + int N = 1; + float alpha = 0.0f; + float X[] = { -0.812f }; + float Y[] = { -0.667f }; + int incX = -1; + int incY = 1; + float expected = 0.541604f; + float f; + f = cblas_sdsdot (N, alpha, X, incX, Y, incY); + gsl_test_rel(f, expected, flteps, "sdsdot(case 4)"); + }; + + + { + int N = 1; + float alpha = 0.1f; + float X[] = { -0.812f }; + float Y[] = { -0.667f }; + int incX = -1; + int incY = 1; + float expected = 0.641604f; + float f; + f = cblas_sdsdot (N, alpha, X, incX, Y, incY); + gsl_test_rel(f, expected, flteps, "sdsdot(case 5)"); + }; + + + { + int N = 1; + float alpha = 1.0f; + float X[] = { -0.812f }; + float Y[] = { -0.667f }; + int incX = -1; + int incY = 1; + float expected = 1.541604f; + float f; + f = cblas_sdsdot (N, alpha, X, incX, Y, incY); + gsl_test_rel(f, expected, flteps, "sdsdot(case 6)"); + }; + + + { + int N = 1; + float alpha = 0.0f; + float X[] = { 0.481f }; + float Y[] = { 0.523f }; + int incX = -1; + int incY = -1; + float expected = 0.251563f; + float f; + f = cblas_sdsdot (N, alpha, X, incX, Y, incY); + gsl_test_rel(f, expected, flteps, "sdsdot(case 7)"); + }; + + + { + int N = 1; + float alpha = 0.1f; + float X[] = { 0.481f }; + float Y[] = { 0.523f }; + int incX = -1; + int incY = -1; + float expected = 0.351563f; + float f; + f = cblas_sdsdot (N, alpha, X, incX, Y, incY); + gsl_test_rel(f, expected, flteps, "sdsdot(case 8)"); + }; + + + { + int N = 1; + float alpha = 1.0f; + float X[] = { 0.481f }; + float Y[] = { 0.523f }; + int incX = -1; + int incY = -1; + float expected = 1.251563f; + float f; + f = cblas_sdsdot (N, alpha, X, incX, Y, incY); + gsl_test_rel(f, expected, flteps, "sdsdot(case 9)"); + }; + + + { + int N = 1; + float X[] = { 0.785f }; + float Y[] = { -0.7f }; + int incX = 1; + int incY = -1; + float expected = -0.5495f; + float f; + f = cblas_sdot(N, X, incX, Y, incY); + gsl_test_rel(f, expected, flteps, "sdot(case 10)"); + }; + + + { + int N = 1; + double X[] = { 0.79 }; + double Y[] = { -0.679 }; + int incX = 1; + int incY = -1; + double expected = -0.53641; + double f; + f = cblas_ddot(N, X, incX, Y, incY); + gsl_test_rel(f, expected, dbleps, "ddot(case 11)"); + }; + + + { + int N = 1; + float X[] = { 0.474f, -0.27f }; + float Y[] = { -0.144f, -0.392f }; + int incX = 1; + int incY = -1; + float expected[2] = {-0.174096f, -0.146928f}; + float f[2]; + cblas_cdotu_sub(N, X, incX, Y, incY, &f); + gsl_test_rel(f[0], expected[0], flteps, "cdotu(case 12) real"); + gsl_test_rel(f[1], expected[1], flteps, "cdotu(case 12) imag"); + }; + + + { + int N = 1; + float X[] = { 0.474f, -0.27f }; + float Y[] = { -0.144f, -0.392f }; + int incX = 1; + int incY = -1; + float expected[2] = {0.037584f, -0.224688f}; + float f[2]; + cblas_cdotc_sub(N, X, incX, Y, incY, &f); + gsl_test_rel(f[0], expected[0], flteps, "cdotc(case 13) real"); + gsl_test_rel(f[1], expected[1], flteps, "cdotc(case 13) imag"); + }; + + + { + int N = 1; + double X[] = { -0.87, -0.631 }; + double Y[] = { -0.7, -0.224 }; + int incX = 1; + int incY = -1; + double expected[2] = {0.467656, 0.63658}; + double f[2]; + cblas_zdotu_sub(N, X, incX, Y, incY, &f); + gsl_test_rel(f[0], expected[0], dbleps, "zdotu(case 14) real"); + gsl_test_rel(f[1], expected[1], dbleps, "zdotu(case 14) imag"); + }; + + + { + int N = 1; + double X[] = { -0.87, -0.631 }; + double Y[] = { -0.7, -0.224 }; + int incX = 1; + int incY = -1; + double expected[2] = {0.750344, -0.24682}; + double f[2]; + cblas_zdotc_sub(N, X, incX, Y, incY, &f); + gsl_test_rel(f[0], expected[0], dbleps, "zdotc(case 15) real"); + gsl_test_rel(f[1], expected[1], dbleps, "zdotc(case 15) imag"); + }; + + + { + int N = 1; + float X[] = { -0.457f }; + float Y[] = { 0.839f }; + int incX = -1; + int incY = 1; + float expected = -0.383423f; + float f; + f = cblas_sdot(N, X, incX, Y, incY); + gsl_test_rel(f, expected, flteps, "sdot(case 16)"); + }; + + + { + int N = 1; + double X[] = { 0.949 }; + double Y[] = { -0.873 }; + int incX = -1; + int incY = 1; + double expected = -0.828477; + double f; + f = cblas_ddot(N, X, incX, Y, incY); + gsl_test_rel(f, expected, dbleps, "ddot(case 17)"); + }; + + + { + int N = 1; + float X[] = { 0.852f, -0.045f }; + float Y[] = { 0.626f, -0.164f }; + int incX = -1; + int incY = 1; + float expected[2] = {0.525972f, -0.167898f}; + float f[2]; + cblas_cdotu_sub(N, X, incX, Y, incY, &f); + gsl_test_rel(f[0], expected[0], flteps, "cdotu(case 18) real"); + gsl_test_rel(f[1], expected[1], flteps, "cdotu(case 18) imag"); + }; + + + { + int N = 1; + float X[] = { 0.852f, -0.045f }; + float Y[] = { 0.626f, -0.164f }; + int incX = -1; + int incY = 1; + float expected[2] = {0.540732f, -0.111558f}; + float f[2]; + cblas_cdotc_sub(N, X, incX, Y, incY, &f); + gsl_test_rel(f[0], expected[0], flteps, "cdotc(case 19) real"); + gsl_test_rel(f[1], expected[1], flteps, "cdotc(case 19) imag"); + }; + + + { + int N = 1; + double X[] = { -0.786, -0.341 }; + double Y[] = { -0.271, -0.896 }; + int incX = -1; + int incY = 1; + double expected[2] = {-0.09253, 0.796667}; + double f[2]; + cblas_zdotu_sub(N, X, incX, Y, incY, &f); + gsl_test_rel(f[0], expected[0], dbleps, "zdotu(case 20) real"); + gsl_test_rel(f[1], expected[1], dbleps, "zdotu(case 20) imag"); + }; + + + { + int N = 1; + double X[] = { -0.786, -0.341 }; + double Y[] = { -0.271, -0.896 }; + int incX = -1; + int incY = 1; + double expected[2] = {0.518542, 0.611845}; + double f[2]; + cblas_zdotc_sub(N, X, incX, Y, incY, &f); + gsl_test_rel(f[0], expected[0], dbleps, "zdotc(case 21) real"); + gsl_test_rel(f[1], expected[1], dbleps, "zdotc(case 21) imag"); + }; + + + { + int N = 1; + float X[] = { -0.088f }; + float Y[] = { -0.165f }; + int incX = -1; + int incY = -1; + float expected = 0.01452f; + float f; + f = cblas_sdot(N, X, incX, Y, incY); + gsl_test_rel(f, expected, flteps, "sdot(case 22)"); + }; + + + { + int N = 1; + double X[] = { -0.434 }; + double Y[] = { -0.402 }; + int incX = -1; + int incY = -1; + double expected = 0.174468; + double f; + f = cblas_ddot(N, X, incX, Y, incY); + gsl_test_rel(f, expected, dbleps, "ddot(case 23)"); + }; + + + { + int N = 1; + float X[] = { -0.347f, 0.899f }; + float Y[] = { -0.113f, -0.858f }; + int incX = -1; + int incY = -1; + float expected[2] = {0.810553f, 0.196139f}; + float f[2]; + cblas_cdotu_sub(N, X, incX, Y, incY, &f); + gsl_test_rel(f[0], expected[0], flteps, "cdotu(case 24) real"); + gsl_test_rel(f[1], expected[1], flteps, "cdotu(case 24) imag"); + }; + + + { + int N = 1; + float X[] = { -0.347f, 0.899f }; + float Y[] = { -0.113f, -0.858f }; + int incX = -1; + int incY = -1; + float expected[2] = {-0.732131f, 0.399313f}; + float f[2]; + cblas_cdotc_sub(N, X, incX, Y, incY, &f); + gsl_test_rel(f[0], expected[0], flteps, "cdotc(case 25) real"); + gsl_test_rel(f[1], expected[1], flteps, "cdotc(case 25) imag"); + }; + + + { + int N = 1; + double X[] = { -0.897, -0.204 }; + double Y[] = { -0.759, 0.557 }; + int incX = -1; + int incY = -1; + double expected[2] = {0.794451, -0.344793}; + double f[2]; + cblas_zdotu_sub(N, X, incX, Y, incY, &f); + gsl_test_rel(f[0], expected[0], dbleps, "zdotu(case 26) real"); + gsl_test_rel(f[1], expected[1], dbleps, "zdotu(case 26) imag"); + }; + + + { + int N = 1; + double X[] = { -0.897, -0.204 }; + double Y[] = { -0.759, 0.557 }; + int incX = -1; + int incY = -1; + double expected[2] = {0.567195, -0.654465}; + double f[2]; + cblas_zdotc_sub(N, X, incX, Y, incY, &f); + gsl_test_rel(f[0], expected[0], dbleps, "zdotc(case 27) real"); + gsl_test_rel(f[1], expected[1], dbleps, "zdotc(case 27) imag"); + }; + + +} diff --git a/gsl-2.5/cblas/test_gbmv.c b/gsl-2.5/cblas/test_gbmv.c new file mode 100644 index 00000000..34eff265 --- /dev/null +++ b/gsl-2.5/cblas/test_gbmv.c @@ -0,0 +1,543 @@ +#include +#include +#include +#include + +#include "tests.h" + +void +test_gbmv (void) { +const double flteps = 1e-4, dbleps = 1e-6; + { + int order = 101; + int trans = 111; + int M = 3; + int N = 4; + int KL = 1; + int KU = 1; + int lda = 4; + float alpha = -1.0f; + float beta = -1.0f; + float A[] = { 0.423f, -0.143f, -0.182f, -0.076f, -0.855f, 0.599f, 0.389f, -0.473f, 0.493f, -0.902f, -0.889f, -0.256f, 0.112f, 0.128f, -0.277f, -0.777f }; + float X[] = { 0.488f, 0.029f, -0.633f, 0.84f }; + int incX = -1; + float Y[] = { 0.874f, 0.322f, -0.477f }; + int incY = -1; + float y_expected[] = { -0.101941f, 0.764086f, 0.481914f }; + cblas_sgbmv(order, trans, M, N, KU, KL, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "sgbmv(case 794)"); + } + }; + }; + + + { + int order = 102; + int trans = 111; + int M = 3; + int N = 4; + int KL = 1; + int KU = 1; + int lda = 4; + float alpha = -1.0f; + float beta = -1.0f; + float A[] = { 0.423f, -0.143f, -0.182f, -0.076f, -0.855f, 0.599f, 0.389f, -0.473f, 0.493f, -0.902f, -0.889f, -0.256f, 0.112f, 0.128f, -0.277f, -0.777f }; + float X[] = { 0.488f, 0.029f, -0.633f, 0.84f }; + int incX = -1; + float Y[] = { 0.874f, 0.322f, -0.477f }; + int incY = -1; + float y_expected[] = { -0.656261f, 0.19575f, 0.055905f }; + cblas_sgbmv(order, trans, M, N, KU, KL, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "sgbmv(case 795)"); + } + }; + }; + + + { + int order = 101; + int trans = 112; + int M = 3; + int N = 4; + int KL = 1; + int KU = 1; + int lda = 4; + float alpha = 0.0f; + float beta = 0.1f; + float A[] = { -0.066f, -0.153f, -0.619f, 0.174f, 0.777f, 0.543f, 0.614f, -0.446f, -0.138f, -0.767f, 0.725f, 0.222f, 0.165f, -0.063f, -0.047f, 0.267f }; + float X[] = { -0.096f, -0.007f, -0.657f }; + int incX = -1; + float Y[] = { -0.88f, 0.102f, -0.278f, 0.403f }; + int incY = -1; + float y_expected[] = { -0.088f, 0.0102f, -0.0278f, 0.0403f }; + cblas_sgbmv(order, trans, M, N, KU, KL, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 4; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "sgbmv(case 796)"); + } + }; + }; + + + { + int order = 102; + int trans = 112; + int M = 3; + int N = 4; + int KL = 1; + int KU = 1; + int lda = 4; + float alpha = 0.0f; + float beta = 0.1f; + float A[] = { -0.066f, -0.153f, -0.619f, 0.174f, 0.777f, 0.543f, 0.614f, -0.446f, -0.138f, -0.767f, 0.725f, 0.222f, 0.165f, -0.063f, -0.047f, 0.267f }; + float X[] = { -0.096f, -0.007f, -0.657f }; + int incX = -1; + float Y[] = { -0.88f, 0.102f, -0.278f, 0.403f }; + int incY = -1; + float y_expected[] = { -0.088f, 0.0102f, -0.0278f, 0.0403f }; + cblas_sgbmv(order, trans, M, N, KU, KL, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 4; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "sgbmv(case 797)"); + } + }; + }; + + + { + int order = 101; + int trans = 111; + int M = 3; + int N = 4; + int KL = 1; + int KU = 1; + int lda = 4; + double alpha = 0.1; + double beta = 0; + double A[] = { -0.688, 0.29, 0.442, -0.001, 0.313, -0.073, 0.991, -0.654, -0.12, 0.416, 0.571, 0.932, -0.179, -0.724, 0.492, -0.965 }; + double X[] = { 0.187, -0.338, -0.976, -0.052 }; + int incX = -1; + double Y[] = { -0.101, 0.8, 0.026 }; + int incY = -1; + double y_expected[] = { 0.0083289, -0.0279986, -0.0446472 }; + cblas_dgbmv(order, trans, M, N, KU, KL, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "dgbmv(case 798)"); + } + }; + }; + + + { + int order = 102; + int trans = 111; + int M = 3; + int N = 4; + int KL = 1; + int KU = 1; + int lda = 4; + double alpha = 0.1; + double beta = 0; + double A[] = { -0.688, 0.29, 0.442, -0.001, 0.313, -0.073, 0.991, -0.654, -0.12, 0.416, 0.571, 0.932, -0.179, -0.724, 0.492, -0.965 }; + double X[] = { 0.187, -0.338, -0.976, -0.052 }; + int incX = -1; + double Y[] = { -0.101, 0.8, 0.026 }; + int incY = -1; + double y_expected[] = { -0.1141297, 0.0088824, -0.0320568 }; + cblas_dgbmv(order, trans, M, N, KU, KL, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "dgbmv(case 799)"); + } + }; + }; + + + { + int order = 101; + int trans = 112; + int M = 3; + int N = 4; + int KL = 1; + int KU = 1; + int lda = 4; + double alpha = -0.3; + double beta = -0.3; + double A[] = { 0.746, 0.262, -0.449, -0.954, -0.093, 0.108, -0.496, 0.927, 0.177, 0.729, -0.92, -0.469, 0.87, -0.877, -0.308, -0.806 }; + double X[] = { 0.662, -0.887, 0.261 }; + int incX = -1; + double Y[] = { 0.771, 0.637, -0.177, -0.018 }; + int incY = -1; + double y_expected[] = { -0.048588, -0.467865, 0.0818433, -0.0398619 }; + cblas_dgbmv(order, trans, M, N, KU, KL, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 4; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "dgbmv(case 800)"); + } + }; + }; + + + { + int order = 102; + int trans = 112; + int M = 3; + int N = 4; + int KL = 1; + int KU = 1; + int lda = 4; + double alpha = -0.3; + double beta = -0.3; + double A[] = { 0.746, 0.262, -0.449, -0.954, -0.093, 0.108, -0.496, 0.927, 0.177, 0.729, -0.92, -0.469, 0.87, -0.877, -0.308, -0.806 }; + double X[] = { 0.662, -0.887, 0.261 }; + int incX = -1; + double Y[] = { 0.771, 0.637, -0.177, -0.018 }; + int incY = -1; + double y_expected[] = { -0.404082, -0.2887797, 0.1876263, -0.1345935 }; + cblas_dgbmv(order, trans, M, N, KU, KL, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 4; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "dgbmv(case 801)"); + } + }; + }; + + + { + int order = 101; + int trans = 111; + int M = 3; + int N = 4; + int KL = 1; + int KU = 1; + int lda = 4; + float alpha[2] = {0.0f, 1.0f}; + float beta[2] = {0.0f, 0.1f}; + float A[] = { -0.107f, 0.926f, -0.246f, -0.555f, -0.301f, 0.276f, 0.471f, -0.084f, -0.754f, 0.082f, -0.952f, -0.394f, 0.659f, 0.054f, 0.795f, 0.923f, 0.232f, -0.788f, 0.478f, 0.775f, -0.118f, 0.691f, -0.933f, 0.809f, 0.164f, -0.263f, -0.923f, -0.88f, 0.819f, -0.521f, -0.045f, 0.034f }; + float X[] = { 0.407f, 0.895f, 0.301f, 0.769f, -0.269f, -0.465f, 0.455f, -0.628f }; + int incX = -1; + float Y[] = { -0.116f, -0.744f, -0.936f, -0.064f, -0.232f, -0.665f }; + int incY = -1; + float y_expected[] = { -0.806176f, -1.559f, -1.57611f, -0.155463f, 0.098816f, -0.274361f }; + cblas_cgbmv(order, trans, M, N, KU, KL, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], flteps, "cgbmv(case 802) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], flteps, "cgbmv(case 802) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 111; + int M = 3; + int N = 4; + int KL = 1; + int KU = 1; + int lda = 4; + float alpha[2] = {0.0f, 1.0f}; + float beta[2] = {0.0f, 0.1f}; + float A[] = { -0.107f, 0.926f, -0.246f, -0.555f, -0.301f, 0.276f, 0.471f, -0.084f, -0.754f, 0.082f, -0.952f, -0.394f, 0.659f, 0.054f, 0.795f, 0.923f, 0.232f, -0.788f, 0.478f, 0.775f, -0.118f, 0.691f, -0.933f, 0.809f, 0.164f, -0.263f, -0.923f, -0.88f, 0.819f, -0.521f, -0.045f, 0.034f }; + float X[] = { 0.407f, 0.895f, 0.301f, 0.769f, -0.269f, -0.465f, 0.455f, -0.628f }; + int incX = -1; + float Y[] = { -0.116f, -0.744f, -0.936f, -0.064f, -0.232f, -0.665f }; + int incY = -1; + float y_expected[] = { -0.245235f, -0.313725f, -0.798094f, 0.691455f, -0.164015f, -0.242714f }; + cblas_cgbmv(order, trans, M, N, KU, KL, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], flteps, "cgbmv(case 803) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], flteps, "cgbmv(case 803) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 112; + int M = 3; + int N = 4; + int KL = 1; + int KU = 1; + int lda = 4; + float alpha[2] = {-1.0f, 0.0f}; + float beta[2] = {0.0f, 0.1f}; + float A[] = { -0.258f, 0.838f, -0.106f, -0.066f, 0.395f, 0.982f, -0.546f, 0.565f, 0.14f, -0.18f, 0.165f, -0.186f, 0.499f, -0.038f, -0.305f, -0.653f, -0.811f, -0.466f, -0.674f, -0.013f, -0.552f, -0.807f, -0.536f, 0.864f, -0.027f, -0.606f, 0.459f, 0.564f, -0.968f, 0.717f, -0.312f, -0.485f }; + float X[] = { -0.399f, 0.459f, 0.398f, 0.358f, -0.161f, -0.359f }; + int incX = -1; + float Y[] = { 0.572f, 0.293f, -0.813f, -0.096f, -0.611f, -0.717f, 0.736f, 0.259f }; + int incY = -1; + float y_expected[] = { -0.619961f, -0.011425f, -0.477499f, 0.059361f, -0.886984f, 0.44008f, -0.139432f, 0.04644f }; + cblas_cgbmv(order, trans, M, N, KU, KL, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 4; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], flteps, "cgbmv(case 804) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], flteps, "cgbmv(case 804) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 112; + int M = 3; + int N = 4; + int KL = 1; + int KU = 1; + int lda = 4; + float alpha[2] = {-1.0f, 0.0f}; + float beta[2] = {0.0f, 0.1f}; + float A[] = { -0.258f, 0.838f, -0.106f, -0.066f, 0.395f, 0.982f, -0.546f, 0.565f, 0.14f, -0.18f, 0.165f, -0.186f, 0.499f, -0.038f, -0.305f, -0.653f, -0.811f, -0.466f, -0.674f, -0.013f, -0.552f, -0.807f, -0.536f, 0.864f, -0.027f, -0.606f, 0.459f, 0.564f, -0.968f, 0.717f, -0.312f, -0.485f }; + float X[] = { -0.399f, 0.459f, 0.398f, 0.358f, -0.161f, -0.359f }; + int incX = -1; + float Y[] = { 0.572f, 0.293f, -0.813f, -0.096f, -0.611f, -0.717f, 0.736f, 0.259f }; + int incY = -1; + float y_expected[] = { -0.318227f, -0.172201f, -0.109343f, 0.698685f, 0.208261f, -0.269065f, 0.175074f, -0.507326f }; + cblas_cgbmv(order, trans, M, N, KU, KL, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 4; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], flteps, "cgbmv(case 805) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], flteps, "cgbmv(case 805) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 113; + int M = 3; + int N = 4; + int KL = 1; + int KU = 1; + int lda = 4; + float alpha[2] = {-1.0f, 0.0f}; + float beta[2] = {0.0f, 0.1f}; + float A[] = { -0.804f, 0.232f, -0.448f, -0.558f, -0.078f, -0.056f, -0.345f, -0.379f, 0.369f, -0.662f, -0.169f, -0.391f, -0.215f, 0.467f, 0.374f, 0.889f, -0.698f, 0.734f, 0.377f, -0.955f, 0.498f, 0.151f, -0.725f, -0.728f, -0.655f, -0.581f, 0.389f, 0.949f, -0.553f, -0.434f, 0.237f, 0.641f }; + float X[] = { -0.262f, -0.823f, -0.357f, -0.994f, -0.347f, -0.375f }; + int incX = -1; + float Y[] = { -0.683f, -0.87f, -0.708f, 0.071f, 0.575f, -0.575f, 0.845f, 0.032f }; + int incY = -1; + float y_expected[] = { 0.341749f, 0.301992f, -0.306848f, 0.109252f, -0.018347f, -0.747479f, -0.894201f, 0.713246f }; + cblas_cgbmv(order, trans, M, N, KU, KL, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 4; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], flteps, "cgbmv(case 806) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], flteps, "cgbmv(case 806) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 113; + int M = 3; + int N = 4; + int KL = 1; + int KU = 1; + int lda = 4; + float alpha[2] = {-1.0f, 0.0f}; + float beta[2] = {0.0f, 0.1f}; + float A[] = { -0.804f, 0.232f, -0.448f, -0.558f, -0.078f, -0.056f, -0.345f, -0.379f, 0.369f, -0.662f, -0.169f, -0.391f, -0.215f, 0.467f, 0.374f, 0.889f, -0.698f, 0.734f, 0.377f, -0.955f, 0.498f, 0.151f, -0.725f, -0.728f, -0.655f, -0.581f, 0.389f, 0.949f, -0.553f, -0.434f, 0.237f, 0.641f }; + float X[] = { -0.262f, -0.823f, -0.357f, -0.994f, -0.347f, -0.375f }; + int incX = -1; + float Y[] = { -0.683f, -0.87f, -0.708f, 0.071f, 0.575f, -0.575f, 0.845f, 0.032f }; + int incY = -1; + float y_expected[] = { -0.562773f, -0.455143f, -0.213881f, -0.466169f, -0.183683f, 0.097891f, -0.451416f, 0.052586f }; + cblas_cgbmv(order, trans, M, N, KU, KL, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 4; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], flteps, "cgbmv(case 807) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], flteps, "cgbmv(case 807) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 111; + int M = 3; + int N = 4; + int KL = 1; + int KU = 1; + int lda = 4; + double alpha[2] = {0, 0.1}; + double beta[2] = {1, 0}; + double A[] = { -0.919, -0.002, 0.105, -0.338, -0.358, -0.715, -0.157, 0.307, 0.334, 0.121, 0.366, 0.029, -0.006, -0.662, -0.314, 0.061, -0.322, -0.865, -0.586, 0.556, 0.507, 0.581, 0.855, -0.09, 0.836, -0.788, -0.209, -0.694, -0.695, 0.11, -0.234, 0.17 }; + double X[] = { 0.356, -0.76, -0.96, 0.437, -0.849, 0.397, -0.382, -0.826 }; + int incX = -1; + double Y[] = { 0.288, -0.832, 0.889, 0.576, -0.809, 0.4 }; + int incY = -1; + double y_expected[] = { 0.3241775, -0.6761577, 0.8458527, 0.5705165, -0.8597295, 0.4268499 }; + cblas_zgbmv(order, trans, M, N, KU, KL, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], dbleps, "zgbmv(case 808) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], dbleps, "zgbmv(case 808) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 111; + int M = 3; + int N = 4; + int KL = 1; + int KU = 1; + int lda = 4; + double alpha[2] = {0, 0.1}; + double beta[2] = {1, 0}; + double A[] = { -0.919, -0.002, 0.105, -0.338, -0.358, -0.715, -0.157, 0.307, 0.334, 0.121, 0.366, 0.029, -0.006, -0.662, -0.314, 0.061, -0.322, -0.865, -0.586, 0.556, 0.507, 0.581, 0.855, -0.09, 0.836, -0.788, -0.209, -0.694, -0.695, 0.11, -0.234, 0.17 }; + double X[] = { 0.356, -0.76, -0.96, 0.437, -0.849, 0.397, -0.382, -0.826 }; + int incX = -1; + double Y[] = { 0.288, -0.832, 0.889, 0.576, -0.809, 0.4 }; + int incY = -1; + double y_expected[] = { 0.4026074, -0.8033768, 0.7510795, 0.5671044, -0.8162255, 0.3349099 }; + cblas_zgbmv(order, trans, M, N, KU, KL, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], dbleps, "zgbmv(case 809) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], dbleps, "zgbmv(case 809) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 112; + int M = 3; + int N = 4; + int KL = 1; + int KU = 1; + int lda = 4; + double alpha[2] = {1, 0}; + double beta[2] = {1, 0}; + double A[] = { 0.511, -0.707, -0.906, 0.345, -0.524, -0.933, 0.154, -0.529, -0.651, -0.851, 0.104, 0.532, -0.297, 0.477, 0.511, 0.469, -0.888, -0.789, 0.656, 0.288, -0.749, 0.961, 0.571, 0.539, 0.465, 0.647, 0.653, -0.994, -0.515, 0.297, 0.35, -0.707 }; + double X[] = { -0.991, 0.658, -0.909, -0.99, -0.517, -0.071 }; + int incX = -1; + double Y[] = { 0.451, 0.351, -0.113, -0.62, 0.983, 0.511, 0.142, -0.186 }; + int incY = -1; + double y_expected[] = { 0.560921, -1.094193, -0.210397, -0.613323, 3.018979, 0.641612, 0.384166, 1.11801 }; + cblas_zgbmv(order, trans, M, N, KU, KL, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 4; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], dbleps, "zgbmv(case 810) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], dbleps, "zgbmv(case 810) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 112; + int M = 3; + int N = 4; + int KL = 1; + int KU = 1; + int lda = 4; + double alpha[2] = {1, 0}; + double beta[2] = {1, 0}; + double A[] = { 0.511, -0.707, -0.906, 0.345, -0.524, -0.933, 0.154, -0.529, -0.651, -0.851, 0.104, 0.532, -0.297, 0.477, 0.511, 0.469, -0.888, -0.789, 0.656, 0.288, -0.749, 0.961, 0.571, 0.539, 0.465, 0.647, 0.653, -0.994, -0.515, 0.297, 0.35, -0.707 }; + double X[] = { -0.991, 0.658, -0.909, -0.99, -0.517, -0.071 }; + int incX = -1; + double Y[] = { 0.451, 0.351, -0.113, -0.62, 0.983, 0.511, 0.142, -0.186 }; + int incY = -1; + double y_expected[] = { -0.435541, 0.015793, -0.926518, 1.122561, 1.671751, -0.257493, 0.187543, 1.066818 }; + cblas_zgbmv(order, trans, M, N, KU, KL, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 4; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], dbleps, "zgbmv(case 811) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], dbleps, "zgbmv(case 811) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 113; + int M = 3; + int N = 4; + int KL = 1; + int KU = 1; + int lda = 4; + double alpha[2] = {0, 0.1}; + double beta[2] = {-0.3, 0.1}; + double A[] = { 0.534, 0.67, -0.621, 0.143, -0.794, 0.073, 0.414, -0.9, 0.155, -0.368, 0.122, -0.583, 0.03, 0.646, -0.768, -0.892, -0.741, -0.397, 0.626, 0.004, -0.515, 0.355, 0.196, -0.989, -0.982, 0.985, 0.445, 0.63, -0.849, -0.528, 0.146, -0.319 }; + double X[] = { -0.199, -0.259, 0.386, -0.131, -0.867, 0.888 }; + int incX = -1; + double Y[] = { 0.106, 0.874, 0.962, 0.636, -0.759, 0.415, -0.053, 0.315 }; + int incY = -1; + double y_expected[] = { -0.139603, -0.250546, -0.3107376, -0.1144656, 0.2181809, -0.0877031, 0.0149724, -0.0224571 }; + cblas_zgbmv(order, trans, M, N, KU, KL, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 4; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], dbleps, "zgbmv(case 812) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], dbleps, "zgbmv(case 812) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 113; + int M = 3; + int N = 4; + int KL = 1; + int KU = 1; + int lda = 4; + double alpha[2] = {0, 0.1}; + double beta[2] = {-0.3, 0.1}; + double A[] = { 0.534, 0.67, -0.621, 0.143, -0.794, 0.073, 0.414, -0.9, 0.155, -0.368, 0.122, -0.583, 0.03, 0.646, -0.768, -0.892, -0.741, -0.397, 0.626, 0.004, -0.515, 0.355, 0.196, -0.989, -0.982, 0.985, 0.445, 0.63, -0.849, -0.528, 0.146, -0.319 }; + double X[] = { -0.199, -0.259, 0.386, -0.131, -0.867, 0.888 }; + int incX = -1; + double Y[] = { 0.106, 0.874, 0.962, 0.636, -0.759, 0.415, -0.053, 0.315 }; + int incY = -1; + double y_expected[] = { -0.1642353, -0.2575697, -0.3610975, -0.1305629, 0.1713576, -0.2514988, 0.0195631, -0.0648656 }; + cblas_zgbmv(order, trans, M, N, KU, KL, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 4; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], dbleps, "zgbmv(case 813) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], dbleps, "zgbmv(case 813) imag"); + }; + }; + }; + + +} diff --git a/gsl-2.5/cblas/test_gemm.c b/gsl-2.5/cblas/test_gemm.c new file mode 100644 index 00000000..aafa4f30 --- /dev/null +++ b/gsl-2.5/cblas/test_gemm.c @@ -0,0 +1,1399 @@ +#include +#include +#include +#include + +#include "tests.h" + +void +test_gemm (void) { +const double flteps = 1e-4, dbleps = 1e-6; + { + int order = 101; + int transA = 111; + int transB = 111; + int M = 1; + int N = 2; + int K = 4; + float alpha = 1.0f; + float beta = 0.0f; + float A[] = { 0.199f, 0.237f, 0.456f, 0.377f }; + int lda = 4; + float B[] = { 0.842f, -0.734f, 0.323f, -0.957f, -0.303f, -0.873f, -0.871f, -0.819f }; + int ldb = 2; + float C[] = { 0.498f, -0.925f }; + int ldc = 2; + float C_expected[] = { -0.222426f, -1.07973f }; + cblas_sgemm(order, transA, transB, M, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[i], C_expected[i], flteps, "sgemm(case 1466)"); + } + }; + }; + + + { + int order = 102; + int transA = 111; + int transB = 111; + int M = 1; + int N = 2; + int K = 4; + float alpha = 1.0f; + float beta = 0.0f; + float A[] = { -0.83f, 0.922f, -0.228f, -0.003f }; + int lda = 1; + float B[] = { 0.072f, 0.345f, 0.944f, -0.39f, -0.577f, 0.656f, -0.693f, -0.453f }; + int ldb = 4; + float C[] = { 0.583f, 0.522f }; + int ldc = 1; + float C_expected[] = { 0.044268f, 1.24311f }; + cblas_sgemm(order, transA, transB, M, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[i], C_expected[i], flteps, "sgemm(case 1467)"); + } + }; + }; + + + { + int order = 101; + int transA = 111; + int transB = 112; + int M = 1; + int N = 2; + int K = 4; + float alpha = 0.1f; + float beta = 0.1f; + float A[] = { -0.838f, 0.622f, -0.494f, 0.304f }; + int lda = 4; + float B[] = { 0.147f, 0.134f, 0.169f, 0.734f, -0.7f, 0.541f, -0.794f, -0.256f }; + int ldb = 4; + float C[] = { -0.632f, -0.559f }; + int ldc = 2; + float C_expected[] = { -0.0532188f, 0.0678514f }; + cblas_sgemm(order, transA, transB, M, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[i], C_expected[i], flteps, "sgemm(case 1468)"); + } + }; + }; + + + { + int order = 102; + int transA = 111; + int transB = 112; + int M = 1; + int N = 2; + int K = 4; + float alpha = 0.1f; + float beta = 0.1f; + float A[] = { -0.937f, 0.635f, 0.596f, -0.51f }; + int lda = 1; + float B[] = { -0.688f, -0.265f, 0.049f, 0.133f, -0.918f, -0.147f, 0.977f, -0.21f }; + int ldb = 2; + float C[] = { 0.844f, 0.999f }; + int ldc = 1; + float C_expected[] = { 0.0474373f, 0.135125f }; + cblas_sgemm(order, transA, transB, M, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[i], C_expected[i], flteps, "sgemm(case 1469)"); + } + }; + }; + + + { + int order = 101; + int transA = 112; + int transB = 111; + int M = 1; + int N = 2; + int K = 4; + float alpha = -0.3f; + float beta = 0.1f; + float A[] = { -0.165f, 0.638f, 0.346f, -0.697f }; + int lda = 1; + float B[] = { 0.499f, -0.73f, 0.262f, 0.759f, 0.664f, 0.997f, -0.702f, -0.839f }; + int ldb = 2; + float C[] = { 0.17f, 0.425f }; + int ldc = 2; + float C_expected[] = { -0.224158f, -0.417831f }; + cblas_sgemm(order, transA, transB, M, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[i], C_expected[i], flteps, "sgemm(case 1470)"); + } + }; + }; + + + { + int order = 102; + int transA = 112; + int transB = 111; + int M = 1; + int N = 2; + int K = 4; + float alpha = -0.3f; + float beta = 0.1f; + float A[] = { -0.603f, -0.714f, -0.893f, 0.046f }; + int lda = 4; + float B[] = { 0.859f, -0.694f, -0.868f, -0.98f, -0.103f, 0.567f, -0.277f, -0.734f }; + int ldb = 4; + float C[] = { 0.517f, -0.622f }; + int ldc = 1; + float C_expected[] = { -0.160575f, -0.0234604f }; + cblas_sgemm(order, transA, transB, M, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[i], C_expected[i], flteps, "sgemm(case 1471)"); + } + }; + }; + + + { + int order = 101; + int transA = 112; + int transB = 112; + int M = 1; + int N = 2; + int K = 4; + float alpha = 0.1f; + float beta = 1.0f; + float A[] = { -0.087f, -0.047f, -0.051f, -0.615f }; + int lda = 1; + float B[] = { -0.722f, -0.077f, 0.563f, 0.501f, 0.855f, 0.605f, 0.556f, -0.627f }; + int ldb = 4; + float C[] = { -0.181f, -0.89f }; + int ldc = 2; + float C_expected[] = { -0.208039f, -0.864557f }; + cblas_sgemm(order, transA, transB, M, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[i], C_expected[i], flteps, "sgemm(case 1472)"); + } + }; + }; + + + { + int order = 102; + int transA = 112; + int transB = 112; + int M = 1; + int N = 2; + int K = 4; + float alpha = 0.1f; + float beta = 1.0f; + float A[] = { -0.753f, -0.074f, -0.247f, -0.19f }; + int lda = 4; + float B[] = { 0.061f, 0.743f, 0.22f, -0.682f, 0.733f, 0.417f, 0.772f, 0.665f }; + int ldb = 2; + float C[] = { -0.253f, 0.972f }; + int ldc = 1; + float C_expected[] = { -0.291994f, 0.898164f }; + cblas_sgemm(order, transA, transB, M, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[i], C_expected[i], flteps, "sgemm(case 1473)"); + } + }; + }; + + + { + int order = 101; + int transA = 111; + int transB = 111; + int M = 1; + int N = 2; + int K = 4; + double alpha = 0; + double beta = 0; + double A[] = { 0.017, 0.191, 0.863, -0.97 }; + int lda = 4; + double B[] = { -0.207, -0.916, -0.278, 0.403, 0.885, 0.409, -0.772, -0.27 }; + int ldb = 2; + double C[] = { -0.274, -0.858 }; + int ldc = 2; + double C_expected[] = { 0.0, 0.0 }; + cblas_dgemm(order, transA, transB, M, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[i], C_expected[i], dbleps, "dgemm(case 1474)"); + } + }; + }; + + + { + int order = 102; + int transA = 111; + int transB = 111; + int M = 1; + int N = 2; + int K = 4; + double alpha = 0; + double beta = 0; + double A[] = { 0.571, 0.081, 0.109, 0.988 }; + int lda = 1; + double B[] = { -0.048, -0.753, -0.8, -0.89, -0.535, -0.017, -0.018, -0.544 }; + int ldb = 4; + double C[] = { -0.876, -0.792 }; + int ldc = 1; + double C_expected[] = { 0.0, 0.0 }; + cblas_dgemm(order, transA, transB, M, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[i], C_expected[i], dbleps, "dgemm(case 1475)"); + } + }; + }; + + + { + int order = 101; + int transA = 111; + int transB = 112; + int M = 1; + int N = 2; + int K = 4; + double alpha = -0.3; + double beta = 1; + double A[] = { 0.939, 0.705, 0.977, 0.4 }; + int lda = 4; + double B[] = { -0.089, -0.822, 0.937, 0.159, 0.789, -0.413, -0.172, 0.88 }; + int ldb = 4; + double C[] = { -0.619, 0.063 }; + int ldc = 2; + double C_expected[] = { -0.7137904, -0.1270986 }; + cblas_dgemm(order, transA, transB, M, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[i], C_expected[i], dbleps, "dgemm(case 1476)"); + } + }; + }; + + + { + int order = 102; + int transA = 111; + int transB = 112; + int M = 1; + int N = 2; + int K = 4; + double alpha = -0.3; + double beta = 1; + double A[] = { -0.795, 0.81, 0.388, 0.09 }; + int lda = 1; + double B[] = { -0.847, 0.031, -0.938, 0.09, -0.286, -0.478, -0.981, 0.881 }; + int ldb = 2; + double C[] = { -0.242, -0.02 }; + int ldc = 1; + double C_expected[] = { -0.1562981, -0.0026243 }; + cblas_dgemm(order, transA, transB, M, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[i], C_expected[i], dbleps, "dgemm(case 1477)"); + } + }; + }; + + + { + int order = 101; + int transA = 112; + int transB = 111; + int M = 1; + int N = 2; + int K = 4; + double alpha = -1; + double beta = 0; + double A[] = { -0.556, 0.532, 0.746, 0.673 }; + int lda = 1; + double B[] = { -0.525, 0.967, 0.687, -0.024, 0.527, 0.485, 0.109, -0.46 }; + int ldb = 2; + double C[] = { -0.495, 0.859 }; + int ldc = 2; + double C_expected[] = { -1.123883, 0.49819 }; + cblas_dgemm(order, transA, transB, M, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[i], C_expected[i], dbleps, "dgemm(case 1478)"); + } + }; + }; + + + { + int order = 102; + int transA = 112; + int transB = 111; + int M = 1; + int N = 2; + int K = 4; + double alpha = -1; + double beta = 0; + double A[] = { -0.358, 0.224, -0.941, 0.513 }; + int lda = 4; + double B[] = { -0.201, -0.159, -0.586, -0.016, -0.324, 0.411, 0.115, -0.229 }; + int ldb = 4; + double C[] = { 0.558, 0.596 }; + int ldc = 1; + double C_expected[] = { -0.57956, 0.017636 }; + cblas_dgemm(order, transA, transB, M, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[i], C_expected[i], dbleps, "dgemm(case 1479)"); + } + }; + }; + + + { + int order = 101; + int transA = 112; + int transB = 112; + int M = 1; + int N = 2; + int K = 4; + double alpha = -0.3; + double beta = 1; + double A[] = { -0.586, 0.809, 0.709, -0.524 }; + int lda = 1; + double B[] = { 0.768, 0.7, 0.619, -0.478, -0.129, -0.778, -0.432, 0.454 }; + int ldb = 4; + double C[] = { 0.042, 0.252 }; + int ldc = 2; + double C_expected[] = { -0.1996785, 0.5813976 }; + cblas_dgemm(order, transA, transB, M, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[i], C_expected[i], dbleps, "dgemm(case 1480)"); + } + }; + }; + + + { + int order = 102; + int transA = 112; + int transB = 112; + int M = 1; + int N = 2; + int K = 4; + double alpha = -0.3; + double beta = 1; + double A[] = { -0.164, 0.522, 0.948, -0.624 }; + int lda = 4; + double B[] = { -0.142, 0.778, 0.359, 0.622, -0.637, -0.757, -0.282, -0.805 }; + int ldb = 2; + double C[] = { -0.09, 0.183 }; + int ldc = 1; + double C_expected[] = { -0.0248334, 0.1884672 }; + cblas_dgemm(order, transA, transB, M, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[i], C_expected[i], dbleps, "dgemm(case 1481)"); + } + }; + }; + + + { + int order = 101; + int transA = 111; + int transB = 111; + int M = 1; + int N = 2; + int K = 4; + float alpha[2] = {0.0f, 1.0f}; + float beta[2] = {0.0f, 0.0f}; + float A[] = { -0.082f, -0.281f, -0.096f, 0.913f, 0.974f, -0.706f, -0.773f, 0.522f }; + int lda = 4; + float B[] = { 0.745f, -0.664f, 0.352f, -0.733f, 0.304f, -0.555f, -0.493f, -0.089f, 0.188f, 0.631f, 0.235f, 0.152f, -0.299f, -0.731f, -0.686f, -0.332f }; + int ldb = 2; + float C[] = { -0.179f, -0.284f, -0.996f, -0.414f }; + int ldc = 2; + float C_expected[] = { -1.06679f, 1.47116f, 0.599689f, 0.933532f }; + cblas_cgemm(order, transA, transB, M, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "cgemm(case 1482) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "cgemm(case 1482) imag"); + }; + }; + }; + + + { + int order = 102; + int transA = 111; + int transB = 111; + int M = 1; + int N = 2; + int K = 4; + float alpha[2] = {0.0f, 1.0f}; + float beta[2] = {0.0f, 0.0f}; + float A[] = { 0.044f, -0.33f, 0.279f, 0.712f, -0.363f, -0.788f, -0.768f, -0.551f }; + int lda = 1; + float B[] = { 0.138f, 0.927f, -0.178f, -0.864f, 0.888f, 0.844f, -0.199f, 0.706f, -0.034f, 0.483f, 0.499f, 0.664f, 0.648f, 0.324f, 0.97f, 0.609f }; + int ldb = 4; + float C[] = { -0.129f, 0.842f, 0.214f, -0.626f }; + int ldc = 1; + float C_expected[] = { 1.81122f, 1.76205f, 1.0574f, -0.564966f }; + cblas_cgemm(order, transA, transB, M, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "cgemm(case 1483) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "cgemm(case 1483) imag"); + }; + }; + }; + + + { + int order = 101; + int transA = 111; + int transB = 112; + int M = 1; + int N = 2; + int K = 4; + float alpha[2] = {0.0f, 0.0f}; + float beta[2] = {-1.0f, 0.0f}; + float A[] = { 0.812f, -0.471f, 0.241f, 0.795f, 0.439f, 0.131f, -0.636f, 0.531f }; + int lda = 4; + float B[] = { 0.062f, 0.807f, 0.873f, 0.372f, 0.239f, 0.804f, 0.537f, -0.954f, -0.396f, 0.838f, 0.081f, 0.15f, 0.489f, -0.438f, 0.165f, 0.429f }; + int ldb = 4; + float C[] = { 0.868f, 0.329f, -0.509f, 0.724f }; + int ldc = 2; + float C_expected[] = { -0.868f, -0.329f, 0.509f, -0.724f }; + cblas_cgemm(order, transA, transB, M, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "cgemm(case 1484) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "cgemm(case 1484) imag"); + }; + }; + }; + + + { + int order = 102; + int transA = 111; + int transB = 112; + int M = 1; + int N = 2; + int K = 4; + float alpha[2] = {0.0f, 0.0f}; + float beta[2] = {-1.0f, 0.0f}; + float A[] = { 0.832f, 0.198f, 0.794f, -0.522f, -0.319f, 0.578f, 0.332f, 0.746f }; + int lda = 1; + float B[] = { -0.361f, 0.187f, -0.163f, -0.781f, 0.536f, 0.888f, -0.969f, 0.899f, 0.961f, -0.583f, 0.753f, 0.29f, -0.997f, 0.729f, -0.352f, -0.2f }; + int ldb = 2; + float C[] = { 0.864f, 0.735f, -0.074f, -0.228f }; + int ldc = 1; + float C_expected[] = { -0.864f, -0.735f, 0.074f, 0.228f }; + cblas_cgemm(order, transA, transB, M, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "cgemm(case 1485) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "cgemm(case 1485) imag"); + }; + }; + }; + + + { + int order = 101; + int transA = 111; + int transB = 113; + int M = 1; + int N = 2; + int K = 4; + float alpha[2] = {0.0f, 1.0f}; + float beta[2] = {0.0f, 0.1f}; + float A[] = { 0.149f, 0.187f, 0.263f, -0.715f, -0.882f, -0.907f, 0.87f, -0.527f }; + int lda = 4; + float B[] = { -0.915f, -0.249f, -0.986f, -0.799f, -0.136f, 0.712f, 0.964f, 0.799f, -0.569f, 0.686f, 0.603f, 0.758f, 0.161f, -0.698f, -0.263f, -0.256f }; + int ldb = 4; + float C[] = { 0.622f, -0.824f, -0.482f, -0.161f }; + int ldc = 2; + float C_expected[] = { -0.246901f, 0.083044f, 1.25556f, 0.009106f }; + cblas_cgemm(order, transA, transB, M, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "cgemm(case 1486) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "cgemm(case 1486) imag"); + }; + }; + }; + + + { + int order = 102; + int transA = 111; + int transB = 113; + int M = 1; + int N = 2; + int K = 4; + float alpha[2] = {0.0f, 1.0f}; + float beta[2] = {0.0f, 0.1f}; + float A[] = { 0.963f, -0.943f, -0.734f, -0.253f, 0.832f, 0.545f, -0.815f, -0.434f }; + int lda = 1; + float B[] = { 0.23f, -0.211f, 0.906f, 0.232f, -0.339f, 0.597f, -0.919f, 0.793f, 0.535f, 0.526f, 0.119f, 0.053f, 0.751f, 0.044f, 0.752f, -0.469f }; + int ldb = 2; + float C[] = { 0.483f, -0.266f, -0.224f, -0.692f }; + int ldc = 1; + float C_expected[] = { -0.047537f, 0.667177f, 1.02025f, 0.823778f }; + cblas_cgemm(order, transA, transB, M, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "cgemm(case 1487) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "cgemm(case 1487) imag"); + }; + }; + }; + + + { + int order = 101; + int transA = 112; + int transB = 111; + int M = 1; + int N = 2; + int K = 4; + float alpha[2] = {-0.3f, 0.1f}; + float beta[2] = {-1.0f, 0.0f}; + float A[] = { -0.657f, -0.497f, -0.293f, -0.168f, -0.943f, -0.181f, 0.569f, 0.91f }; + int lda = 1; + float B[] = { -0.047f, 0.796f, -0.913f, 0.998f, 0.365f, 0.467f, -0.627f, -0.523f, 0.885f, 0.234f, -0.494f, 0.071f, -0.361f, -0.154f, -0.055f, -0.32f }; + int ldb = 2; + float C[] = { 0.956f, 0.268f, 0.152f, 0.717f }; + int ldc = 2; + float C_expected[] = { -0.668685f, 0.134477f, -0.715786f, -0.478065f }; + cblas_cgemm(order, transA, transB, M, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "cgemm(case 1488) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "cgemm(case 1488) imag"); + }; + }; + }; + + + { + int order = 102; + int transA = 112; + int transB = 111; + int M = 1; + int N = 2; + int K = 4; + float alpha[2] = {-0.3f, 0.1f}; + float beta[2] = {-1.0f, 0.0f}; + float A[] = { 0.394f, -0.482f, 0.631f, -0.833f, 0.221f, 0.672f, 0.2f, 0.967f }; + int lda = 4; + float B[] = { 0.708f, 0.695f, 0.111f, -0.912f, 0.376f, 0.606f, -0.997f, -0.741f, 0.349f, 0.543f, 0.372f, -0.563f, 0.129f, -0.295f, -0.672f, -0.95f }; + int ldb = 4; + float C[] = { 0.436f, 0.752f, 0.074f, 0.209f }; + int ldc = 1; + float C_expected[] = { -0.325083f, -0.301952f, -0.283022f, 0.339919f }; + cblas_cgemm(order, transA, transB, M, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "cgemm(case 1489) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "cgemm(case 1489) imag"); + }; + }; + }; + + + { + int order = 101; + int transA = 112; + int transB = 112; + int M = 1; + int N = 2; + int K = 4; + float alpha[2] = {1.0f, 0.0f}; + float beta[2] = {-0.3f, 0.1f}; + float A[] = { 0.827f, -0.862f, 0.373f, -0.265f, -0.9f, 0.892f, -0.319f, 0.151f }; + int lda = 1; + float B[] = { 0.603f, 0.816f, -0.511f, 0.831f, -0.36f, -0.954f, -0.978f, 0.485f, 0.675f, 0.186f, 0.463f, 0.144f, 0.851f, -0.458f, 0.766f, -0.213f }; + int ldb = 4; + float C[] = { -0.335f, 0.333f, -0.4f, 0.422f }; + int ldc = 2; + float C_expected[] = { 2.7126f, 0.702111f, 0.437661f, 0.691294f }; + cblas_cgemm(order, transA, transB, M, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "cgemm(case 1490) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "cgemm(case 1490) imag"); + }; + }; + }; + + + { + int order = 102; + int transA = 112; + int transB = 112; + int M = 1; + int N = 2; + int K = 4; + float alpha[2] = {1.0f, 0.0f}; + float beta[2] = {-0.3f, 0.1f}; + float A[] = { 0.966f, 0.476f, -0.013f, -0.655f, 0.773f, -0.543f, -0.231f, -0.353f }; + int lda = 4; + float B[] = { -0.684f, 0.144f, 0.018f, -0.77f, -0.688f, 0.909f, -0.094f, -0.938f, -0.757f, 0.574f, -0.479f, 0.473f, 0.0f, 0.064f, -0.168f, 0.858f }; + int ldb = 2; + float C[] = { -0.912f, 0.54f, 0.756f, 0.024f }; + int ldc = 1; + float C_expected[] = { -0.156236f, 0.839112f, -0.230206f, -0.106256f }; + cblas_cgemm(order, transA, transB, M, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "cgemm(case 1491) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "cgemm(case 1491) imag"); + }; + }; + }; + + + { + int order = 101; + int transA = 112; + int transB = 113; + int M = 1; + int N = 2; + int K = 4; + float alpha[2] = {0.0f, 0.0f}; + float beta[2] = {1.0f, 0.0f}; + float A[] = { 0.66f, -0.113f, -0.663f, -0.856f, 0.614f, -0.344f, -0.964f, -0.532f }; + int lda = 1; + float B[] = { -0.606f, -0.965f, -0.279f, -0.312f, 0.63f, 0.967f, 0.041f, -0.557f, 0.663f, 0.619f, -0.134f, 0.261f, -0.388f, 0.525f, 0.222f, 0.538f }; + int ldb = 4; + float C[] = { 0.114f, -0.376f, -0.851f, -0.682f }; + int ldc = 2; + float C_expected[] = { 0.114f, -0.376f, -0.851f, -0.682f }; + cblas_cgemm(order, transA, transB, M, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "cgemm(case 1492) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "cgemm(case 1492) imag"); + }; + }; + }; + + + { + int order = 102; + int transA = 112; + int transB = 113; + int M = 1; + int N = 2; + int K = 4; + float alpha[2] = {0.0f, 0.0f}; + float beta[2] = {1.0f, 0.0f}; + float A[] = { 0.212f, -0.752f, 0.679f, 0.49f, -0.029f, -0.488f, 0.567f, 0.374f }; + int lda = 4; + float B[] = { -0.914f, 0.734f, -0.845f, 0.059f, -0.297f, 0.152f, -0.417f, -0.669f, 0.831f, -0.544f, 0.022f, 0.102f, -0.379f, -0.357f, -0.394f, -0.588f }; + int ldb = 2; + float C[] = { -0.584f, 0.373f, 0.235f, 0.521f }; + int ldc = 1; + float C_expected[] = { -0.584f, 0.373f, 0.235f, 0.521f }; + cblas_cgemm(order, transA, transB, M, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "cgemm(case 1493) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "cgemm(case 1493) imag"); + }; + }; + }; + + + { + int order = 101; + int transA = 113; + int transB = 111; + int M = 1; + int N = 2; + int K = 4; + float alpha[2] = {0.0f, 0.1f}; + float beta[2] = {-1.0f, 0.0f}; + float A[] = { 0.135f, 0.128f, 0.909f, -0.963f, 0.299f, -0.944f, 0.944f, 0.942f }; + int lda = 1; + float B[] = { 0.924f, -0.317f, -0.992f, -0.854f, -0.435f, 0.102f, 0.126f, 0.862f, 0.952f, 0.68f, 0.545f, 0.168f, 0.752f, 0.549f, 0.687f, -0.76f }; + int ldb = 2; + float C[] = { -0.369f, -0.33f, 0.849f, -0.632f }; + int ldc = 2; + float C_expected[] = { 0.326537f, 0.37603f, -0.86067f, 0.529817f }; + cblas_cgemm(order, transA, transB, M, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "cgemm(case 1494) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "cgemm(case 1494) imag"); + }; + }; + }; + + + { + int order = 102; + int transA = 113; + int transB = 111; + int M = 1; + int N = 2; + int K = 4; + float alpha[2] = {0.0f, 0.1f}; + float beta[2] = {-1.0f, 0.0f}; + float A[] = { 0.061f, -0.271f, -0.043f, -0.023f, 0.694f, 0.333f, 0.733f, -0.967f }; + int lda = 4; + float B[] = { 0.088f, -0.607f, 0.589f, 0.375f, -0.897f, -0.954f, -0.216f, -0.195f, -0.865f, -0.511f, -0.219f, 0.535f, 0.976f, 0.582f, 0.464f, -0.041f }; + int ldb = 4; + float C[] = { 0.533f, -0.63f, 0.405f, 0.667f }; + int ldc = 1; + float C_expected[] = { -0.459906f, 0.552595f, -0.425391f, -0.533626f }; + cblas_cgemm(order, transA, transB, M, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "cgemm(case 1495) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "cgemm(case 1495) imag"); + }; + }; + }; + + + { + int order = 101; + int transA = 113; + int transB = 112; + int M = 1; + int N = 2; + int K = 4; + float alpha[2] = {0.0f, 0.0f}; + float beta[2] = {1.0f, 0.0f}; + float A[] = { -0.676f, -0.116f, 0.707f, -0.256f, -0.893f, -0.966f, 0.159f, -0.246f }; + int lda = 1; + float B[] = { 0.059f, 0.281f, -0.93f, -0.263f, 0.583f, -0.11f, 0.639f, -0.96f, -0.878f, 0.984f, 0.058f, 0.977f, -0.567f, 0.561f, -0.048f, -0.798f }; + int ldb = 4; + float C[] = { 0.362f, -0.808f, 0.428f, -0.112f }; + int ldc = 2; + float C_expected[] = { 0.362f, -0.808f, 0.428f, -0.112f }; + cblas_cgemm(order, transA, transB, M, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "cgemm(case 1496) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "cgemm(case 1496) imag"); + }; + }; + }; + + + { + int order = 102; + int transA = 113; + int transB = 112; + int M = 1; + int N = 2; + int K = 4; + float alpha[2] = {0.0f, 0.0f}; + float beta[2] = {1.0f, 0.0f}; + float A[] = { -0.915f, 0.439f, 0.171f, -0.019f, 0.843f, 0.944f, -0.581f, 0.856f }; + int lda = 4; + float B[] = { -0.284f, 0.207f, -0.27f, 0.832f, 0.894f, -0.626f, -0.305f, -0.006f, 0.562f, -0.744f, -0.533f, 0.126f, -0.375f, -0.333f, 0.275f, 0.748f }; + int ldb = 2; + float C[] = { -0.763f, -0.829f, 0.708f, -0.613f }; + int ldc = 1; + float C_expected[] = { -0.763f, -0.829f, 0.708f, -0.613f }; + cblas_cgemm(order, transA, transB, M, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "cgemm(case 1497) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "cgemm(case 1497) imag"); + }; + }; + }; + + + { + int order = 101; + int transA = 113; + int transB = 113; + int M = 1; + int N = 2; + int K = 4; + float alpha[2] = {0.0f, 0.1f}; + float beta[2] = {0.0f, 1.0f}; + float A[] = { 0.496f, -0.9f, 0.825f, -0.678f, 0.41f, -0.585f, -0.264f, 0.308f }; + int lda = 1; + float B[] = { 0.907f, 0.972f, -0.724f, 0.745f, -0.601f, 0.589f, 0.759f, -0.521f, -0.161f, -0.321f, 0.341f, -0.981f, -0.378f, -0.671f, -0.314f, -0.878f }; + int ldb = 4; + float C[] = { -0.293f, 0.07f, 0.087f, -0.542f }; + int ldc = 2; + float C_expected[] = { 0.10357f, -0.163927f, 0.444626f, -0.0076744f }; + cblas_cgemm(order, transA, transB, M, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "cgemm(case 1498) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "cgemm(case 1498) imag"); + }; + }; + }; + + + { + int order = 102; + int transA = 113; + int transB = 113; + int M = 1; + int N = 2; + int K = 4; + float alpha[2] = {0.0f, 0.1f}; + float beta[2] = {0.0f, 1.0f}; + float A[] = { -0.225f, -0.629f, -0.939f, -0.836f, -0.841f, -0.794f, 0.836f, -0.65f }; + int lda = 4; + float B[] = { 0.869f, -0.453f, 0.8f, -0.947f, 0.545f, 0.716f, -0.507f, -0.228f, 0.722f, 0.372f, 0.77f, 0.317f, -0.153f, -0.524f, -0.465f, -0.684f }; + int ldb = 2; + float C[] = { -0.896f, 0.91f, -0.973f, -0.269f }; + int ldc = 1; + float C_expected[] = { -1.18974f, -1.0134f, 0.189027f, -1.14494f }; + cblas_cgemm(order, transA, transB, M, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "cgemm(case 1499) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "cgemm(case 1499) imag"); + }; + }; + }; + + + { + int order = 101; + int transA = 111; + int transB = 111; + int M = 1; + int N = 2; + int K = 4; + double alpha[2] = {1, 0}; + double beta[2] = {-1, 0}; + double A[] = { -0.33, 0.457, 0.428, -0.19, 0.86, -0.53, 0.058, -0.942 }; + int lda = 4; + double B[] = { 0.434, 0.653, -0.124, 0.191, -0.112, -0.84, -0.72, 0.075, -0.503, -0.109, 0.3, -0.898, 0.489, 0.384, 0.993, -0.804 }; + int ldb = 2; + double C[] = { -0.792, -0.155, -0.608, -0.243 }; + int ldc = 2; + double C_expected[] = { 0.042563, -0.465908, -0.649991, -1.621116 }; + cblas_zgemm(order, transA, transB, M, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zgemm(case 1500) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zgemm(case 1500) imag"); + }; + }; + }; + + + { + int order = 102; + int transA = 111; + int transB = 111; + int M = 1; + int N = 2; + int K = 4; + double alpha[2] = {1, 0}; + double beta[2] = {-1, 0}; + double A[] = { 0.726, -0.438, -0.23, -0.054, -0.019, 0.902, -0.883, -0.235 }; + int lda = 1; + double B[] = { 0.159, -0.18, 0.386, -0.167, 0.971, -0.072, 0.87, -0.839, 0.474, 0.956, -0.235, 0.332, 0.826, -0.056, -0.941, 0.01 }; + int ldb = 4; + double C[] = { -0.799, 0.973, -0.549, -0.177 }; + int ldc = 1; + double C_expected[] = { -0.181084, 0.257841, 2.251901, 1.558195 }; + cblas_zgemm(order, transA, transB, M, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zgemm(case 1501) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zgemm(case 1501) imag"); + }; + }; + }; + + + { + int order = 101; + int transA = 111; + int transB = 112; + int M = 1; + int N = 2; + int K = 4; + double alpha[2] = {0, 0.1}; + double beta[2] = {1, 0}; + double A[] = { 0.109, 0.892, -0.723, 0.793, 0.109, -0.419, -0.534, 0.448 }; + int lda = 4; + double B[] = { -0.875, -0.31, -0.027, 0.067, 0.274, -0.126, -0.548, 0.497, 0.681, 0.388, 0.909, 0.889, 0.982, -0.074, -0.788, 0.233 }; + int ldb = 4; + double C[] = { 0.503, 0.067, 0.239, 0.876 }; + int ldc = 2; + double C_expected[] = { 0.6553584, 0.0864583, 0.2559136, 0.7518389 }; + cblas_zgemm(order, transA, transB, M, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zgemm(case 1502) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zgemm(case 1502) imag"); + }; + }; + }; + + + { + int order = 102; + int transA = 111; + int transB = 112; + int M = 1; + int N = 2; + int K = 4; + double alpha[2] = {0, 0.1}; + double beta[2] = {1, 0}; + double A[] = { 0.334, 0.192, -0.992, -0.168, 0.154, -0.75, -0.797, -0.76 }; + int lda = 1; + double B[] = { -0.82, 0.147, -0.237, 0.68, 0.317, 0.257, -0.406, -0.802, 0.058, 0.012, -0.832, 0.949, -0.263, -0.085, -0.064, 0.492 }; + int ldb = 2; + double C[] = { 0.079, -0.602, -0.392, 0.316 }; + int ldc = 1; + double C_expected[] = { 0.0980569, -0.6430449, -0.539207, 0.4226848 }; + cblas_zgemm(order, transA, transB, M, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zgemm(case 1503) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zgemm(case 1503) imag"); + }; + }; + }; + + + { + int order = 101; + int transA = 111; + int transB = 113; + int M = 1; + int N = 2; + int K = 4; + double alpha[2] = {0, 0}; + double beta[2] = {-1, 0}; + double A[] = { -0.305, -0.698, -0.072, -0.383, 0.364, -0.656, 0.819, 0.194 }; + int lda = 4; + double B[] = { 0.682, 0.498, -0.389, 0.923, -0.853, -0.558, -0.722, -0.085, -0.27, 0.026, -0.107, -0.036, 0.644, -0.327, -0.894, 0.34 }; + int ldb = 4; + double C[] = { 0.981, -0.336, -0.377, -0.41 }; + int ldc = 2; + double C_expected[] = { -0.981, 0.336, 0.377, 0.41 }; + cblas_zgemm(order, transA, transB, M, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zgemm(case 1504) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zgemm(case 1504) imag"); + }; + }; + }; + + + { + int order = 102; + int transA = 111; + int transB = 113; + int M = 1; + int N = 2; + int K = 4; + double alpha[2] = {0, 0}; + double beta[2] = {-1, 0}; + double A[] = { -0.306, -0.709, -0.196, 0.285, 0.873, -0.802, 0.715, -0.179 }; + int lda = 1; + double B[] = { 0.028, 0.109, 0.87, -0.446, 0.735, 0.731, 0.021, -0.186, 0.541, 0.97, -0.333, 0.002, -0.089, -0.01, 0.331, 0.851 }; + int ldb = 2; + double C[] = { 0.902, -0.584, -0.695, -0.607 }; + int ldc = 1; + double C_expected[] = { -0.902, 0.584, 0.695, 0.607 }; + cblas_zgemm(order, transA, transB, M, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zgemm(case 1505) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zgemm(case 1505) imag"); + }; + }; + }; + + + { + int order = 101; + int transA = 112; + int transB = 111; + int M = 1; + int N = 2; + int K = 4; + double alpha[2] = {-1, 0}; + double beta[2] = {1, 0}; + double A[] = { 0.517, -0.136, 0.72, -0.237, 0.121, -0.66, 0.005, 0.759 }; + int lda = 1; + double B[] = { -0.606, 0.049, 0.807, -0.236, -0.258, -0.412, 0.75, -0.659, 0.993, -0.029, -0.968, 0.707, -0.362, -0.005, 0.096, -0.241 }; + int ldb = 2; + double C[] = { 0.63, 0.922, 0.025, -0.535 }; + int ldc = 2; + double C_expected[] = { 1.117044, 1.983417, -1.276831, -0.447092 }; + cblas_zgemm(order, transA, transB, M, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zgemm(case 1506) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zgemm(case 1506) imag"); + }; + }; + }; + + + { + int order = 102; + int transA = 112; + int transB = 111; + int M = 1; + int N = 2; + int K = 4; + double alpha[2] = {-1, 0}; + double beta[2] = {1, 0}; + double A[] = { 0.064, 0.371, -0.01, -0.262, 0.143, -0.081, 0.1, -0.062 }; + int lda = 4; + double B[] = { -0.749, 0.289, -0.239, -0.226, 0.284, 0.668, 0.305, 0.075, -0.36, 0.166, -0.416, 0.234, -0.267, 0.525, 0.116, -0.561 }; + int ldb = 4; + double C[] = { 0.671, 0.763, 0.444, -0.246 }; + int ldc = 1; + double C_expected[] = { 0.753107, 0.896395, 0.481996, -0.263126 }; + cblas_zgemm(order, transA, transB, M, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zgemm(case 1507) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zgemm(case 1507) imag"); + }; + }; + }; + + + { + int order = 101; + int transA = 112; + int transB = 112; + int M = 1; + int N = 2; + int K = 4; + double alpha[2] = {1, 0}; + double beta[2] = {-0.3, 0.1}; + double A[] = { -0.956, -0.751, 0.671, -0.633, 0.648, -0.042, 0.948, 0.826 }; + int lda = 1; + double B[] = { 0.921, 0.506, -0.609, 0.817, -0.686, 0.991, 0.616, -0.482, -0.02, -0.34, 0.559, 0.976, 0.431, 0.385, -0.164, -0.778 }; + int ldb = 4; + double C[] = { 0.074, -0.01, 0.165, 0.166 }; + int ldc = 2; + double C_expected[] = { 0.166046, 0.491557, 1.473191, -0.033821 }; + cblas_zgemm(order, transA, transB, M, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zgemm(case 1508) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zgemm(case 1508) imag"); + }; + }; + }; + + + { + int order = 102; + int transA = 112; + int transB = 112; + int M = 1; + int N = 2; + int K = 4; + double alpha[2] = {1, 0}; + double beta[2] = {-0.3, 0.1}; + double A[] = { -0.698, -0.062, 0.023, 0.704, 0.443, -0.46, 0.541, 0.296 }; + int lda = 4; + double B[] = { 0.787, -0.199, 0.835, -0.276, -0.515, 0.467, -0.76, -0.483, 0.015, -0.394, -0.748, 0.02, 0.573, 0.3, -0.088, -0.238 }; + int ldb = 2; + double C[] = { 0.935, -0.655, -0.797, 0.071 }; + int ldc = 1; + double C_expected[] = { -1.070679, 0.178755, -0.344714, -0.308137 }; + cblas_zgemm(order, transA, transB, M, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zgemm(case 1509) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zgemm(case 1509) imag"); + }; + }; + }; + + + { + int order = 101; + int transA = 112; + int transB = 113; + int M = 1; + int N = 2; + int K = 4; + double alpha[2] = {0, 0.1}; + double beta[2] = {-0.3, 0.1}; + double A[] = { -0.202, -0.219, 0.741, 0.527, 0.054, 0.16, -0.359, 0.338 }; + int lda = 1; + double B[] = { -0.872, 0.995, 0.722, 0.618, -0.27, 0.939, -0.743, 0.547, -0.864, 0.376, -0.997, -0.63, 0.887, -0.454, 0.436, -0.039 }; + int ldb = 4; + double C[] = { -0.684, 0.463, -0.386, -0.524 }; + int ldc = 2; + double C_expected[] = { 0.1423153, -0.066679, 0.1175618, 0.0012949 }; + cblas_zgemm(order, transA, transB, M, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zgemm(case 1510) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zgemm(case 1510) imag"); + }; + }; + }; + + + { + int order = 102; + int transA = 112; + int transB = 113; + int M = 1; + int N = 2; + int K = 4; + double alpha[2] = {0, 0.1}; + double beta[2] = {-0.3, 0.1}; + double A[] = { -0.855, -0.173, -0.679, 0.824, 0.469, 0.786, 0.757, -0.109 }; + int lda = 4; + double B[] = { 0.483, -0.888, -0.757, 0.551, -0.81, 0.23, -0.078, 0.725, -0.592, 0.394, 0.884, 0.802, -0.813, -0.016, -0.853, 0.783 }; + int ldb = 2; + double C[] = { 0.181, -0.368, -0.864, -0.784 }; + int ldc = 1; + double C_expected[] = { 0.1728438, 0.1183508, 0.2526999, 0.3004174 }; + cblas_zgemm(order, transA, transB, M, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zgemm(case 1511) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zgemm(case 1511) imag"); + }; + }; + }; + + + { + int order = 101; + int transA = 113; + int transB = 111; + int M = 1; + int N = 2; + int K = 4; + double alpha[2] = {-1, 0}; + double beta[2] = {-0.3, 0.1}; + double A[] = { 0.446, -0.65, -0.724, 0.014, 0.792, -0.695, -0.81, -0.358 }; + int lda = 1; + double B[] = { -0.08, 0.216, 0.689, 0.699, 0.073, -0.346, 0.821, -0.668, -0.798, 0.869, 0.451, -0.061, -0.41, 0.316, 0.104, -0.514 }; + int ldb = 2; + double C[] = { -0.476, 0.211, -0.912, -0.243 }; + int ldc = 2; + double C_expected[] = { 1.372475, -0.135616, 0.549353, -1.968747 }; + cblas_zgemm(order, transA, transB, M, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zgemm(case 1512) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zgemm(case 1512) imag"); + }; + }; + }; + + + { + int order = 102; + int transA = 113; + int transB = 111; + int M = 1; + int N = 2; + int K = 4; + double alpha[2] = {-1, 0}; + double beta[2] = {-0.3, 0.1}; + double A[] = { 0.669, 0.046, -0.094, 0.666, 0.23, 0.448, -0.795, -0.142 }; + int lda = 4; + double B[] = { 0.037, -0.154, -0.739, 0.905, 0.793, -0.53, -0.34, 0.428, 0.072, -0.263, -0.603, -0.905, 0.681, -0.083, -0.511, -0.337 }; + int ldb = 4; + double C[] = { 0.247, 0.575, -0.836, -0.883 }; + int ldc = 1; + double C_expected[] = { -0.975939, 0.415528, 0.275533, 0.002716 }; + cblas_zgemm(order, transA, transB, M, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zgemm(case 1513) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zgemm(case 1513) imag"); + }; + }; + }; + + + { + int order = 101; + int transA = 113; + int transB = 112; + int M = 1; + int N = 2; + int K = 4; + double alpha[2] = {0, 0}; + double beta[2] = {-1, 0}; + double A[] = { 0.369, 0.506, 0.217, -0.739, -0.395, 0.16, -0.329, -0.954 }; + int lda = 1; + double B[] = { -0.622, -0.945, 0.416, -0.884, 0.797, -0.74, 0.519, -0.789, -0.348, 0.563, -0.398, -0.956, 0.227, 0.84, -0.079, 0.847 }; + int ldb = 4; + double C[] = { 0.833, 0.761, 0.074, -0.448 }; + int ldc = 2; + double C_expected[] = { -0.833, -0.761, -0.074, 0.448 }; + cblas_zgemm(order, transA, transB, M, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zgemm(case 1514) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zgemm(case 1514) imag"); + }; + }; + }; + + + { + int order = 102; + int transA = 113; + int transB = 112; + int M = 1; + int N = 2; + int K = 4; + double alpha[2] = {0, 0}; + double beta[2] = {-1, 0}; + double A[] = { -0.141, 0.275, 0.717, 0.775, -0.701, -0.689, -0.883, -0.077 }; + int lda = 4; + double B[] = { -0.526, -0.437, 0.133, -0.209, -0.83, 0.328, 0.916, -0.337, 0.762, -0.664, -0.566, 0.955, 0.168, 0.488, -0.172, -0.535 }; + int ldb = 2; + double C[] = { -0.88, 0.945, 0.416, 0.99 }; + int ldc = 1; + double C_expected[] = { 0.88, -0.945, -0.416, -0.99 }; + cblas_zgemm(order, transA, transB, M, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zgemm(case 1515) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zgemm(case 1515) imag"); + }; + }; + }; + + + { + int order = 101; + int transA = 113; + int transB = 113; + int M = 1; + int N = 2; + int K = 4; + double alpha[2] = {-0.3, 0.1}; + double beta[2] = {0, 0.1}; + double A[] = { -0.534, -0.013, -0.258, -0.31, -0.211, -0.883, -0.89, -0.499 }; + int lda = 1; + double B[] = { -0.185, -0.798, -0.34, 0.716, 0.035, 0.968, -0.26, 0.784, -0.889, -0.344, -0.685, -0.647, -0.764, 0.03, 0.626, -0.989 }; + int ldb = 4; + double C[] = { -0.793, -0.551, 0.182, 0.838 }; + int ldc = 2; + double C_expected[] = { -0.5507177, -0.0286821, 0.2222276, 0.5197398 }; + cblas_zgemm(order, transA, transB, M, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zgemm(case 1516) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zgemm(case 1516) imag"); + }; + }; + }; + + + { + int order = 102; + int transA = 113; + int transB = 113; + int M = 1; + int N = 2; + int K = 4; + double alpha[2] = {-0.3, 0.1}; + double beta[2] = {0, 0.1}; + double A[] = { 0.575, -0.128, -0.702, 0.758, 0.383, -0.914, 0.157, 0.368 }; + int lda = 4; + double B[] = { 0.572, -0.841, 0.223, -0.334, -0.823, -0.84, 0.671, -0.871, 0.241, 0.927, -0.344, 0.281, -0.034, -0.104, 0.587, -0.329 }; + int ldb = 2; + double C[] = { -0.612, 0.167, 0.647, 0.447 }; + int ldc = 1; + double C_expected[] = { -0.7876717, 0.0341179, -0.0800018, 0.5717566 }; + cblas_zgemm(order, transA, transB, M, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zgemm(case 1517) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zgemm(case 1517) imag"); + }; + }; + }; + + +} diff --git a/gsl-2.5/cblas/test_gemv.c b/gsl-2.5/cblas/test_gemv.c new file mode 100644 index 00000000..9145168e --- /dev/null +++ b/gsl-2.5/cblas/test_gemv.c @@ -0,0 +1,503 @@ +#include +#include +#include +#include + +#include "tests.h" + +void +test_gemv (void) { +const double flteps = 1e-4, dbleps = 1e-6; + { + int order = 101; + int trans = 111; + int M = 1; + int N = 1; + int lda = 1; + float alpha = 1.0f; + float beta = -0.3f; + float A[] = { -0.805f }; + float X[] = { -0.965f }; + int incX = -1; + float Y[] = { 0.537f }; + int incY = -1; + float y_expected[] = { 0.615725f }; + cblas_sgemv(order, trans, M, N, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "sgemv(case 774)"); + } + }; + }; + + + { + int order = 102; + int trans = 111; + int M = 1; + int N = 1; + int lda = 1; + float alpha = 1.0f; + float beta = -0.3f; + float A[] = { -0.805f }; + float X[] = { -0.965f }; + int incX = -1; + float Y[] = { 0.537f }; + int incY = -1; + float y_expected[] = { 0.615725f }; + cblas_sgemv(order, trans, M, N, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "sgemv(case 775)"); + } + }; + }; + + + { + int order = 101; + int trans = 112; + int M = 1; + int N = 1; + int lda = 1; + float alpha = 1.0f; + float beta = 0.0f; + float A[] = { -0.805f }; + float X[] = { -0.965f }; + int incX = -1; + float Y[] = { 0.537f }; + int incY = -1; + float y_expected[] = { 0.776825f }; + cblas_sgemv(order, trans, M, N, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "sgemv(case 776)"); + } + }; + }; + + + { + int order = 102; + int trans = 112; + int M = 1; + int N = 1; + int lda = 1; + float alpha = 1.0f; + float beta = 0.0f; + float A[] = { -0.805f }; + float X[] = { -0.965f }; + int incX = -1; + float Y[] = { 0.537f }; + int incY = -1; + float y_expected[] = { 0.776825f }; + cblas_sgemv(order, trans, M, N, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "sgemv(case 777)"); + } + }; + }; + + + { + int order = 101; + int trans = 111; + int M = 1; + int N = 1; + int lda = 1; + double alpha = -0.3; + double beta = -1; + double A[] = { -0.047 }; + double X[] = { 0.672 }; + int incX = -1; + double Y[] = { 0.554 }; + int incY = -1; + double y_expected[] = { -0.5445248 }; + cblas_dgemv(order, trans, M, N, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "dgemv(case 778)"); + } + }; + }; + + + { + int order = 102; + int trans = 111; + int M = 1; + int N = 1; + int lda = 1; + double alpha = -0.3; + double beta = -1; + double A[] = { -0.047 }; + double X[] = { 0.672 }; + int incX = -1; + double Y[] = { 0.554 }; + int incY = -1; + double y_expected[] = { -0.5445248 }; + cblas_dgemv(order, trans, M, N, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "dgemv(case 779)"); + } + }; + }; + + + { + int order = 101; + int trans = 112; + int M = 1; + int N = 1; + int lda = 1; + double alpha = -1; + double beta = 1; + double A[] = { -0.047 }; + double X[] = { 0.672 }; + int incX = -1; + double Y[] = { 0.554 }; + int incY = -1; + double y_expected[] = { 0.585584 }; + cblas_dgemv(order, trans, M, N, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "dgemv(case 780)"); + } + }; + }; + + + { + int order = 102; + int trans = 112; + int M = 1; + int N = 1; + int lda = 1; + double alpha = -1; + double beta = 1; + double A[] = { -0.047 }; + double X[] = { 0.672 }; + int incX = -1; + double Y[] = { 0.554 }; + int incY = -1; + double y_expected[] = { 0.585584 }; + cblas_dgemv(order, trans, M, N, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "dgemv(case 781)"); + } + }; + }; + + + { + int order = 101; + int trans = 111; + int M = 1; + int N = 1; + int lda = 1; + float alpha[2] = {0.0f, 0.1f}; + float beta[2] = {0.0f, 1.0f}; + float A[] = { 0.629f, 0.801f }; + float X[] = { 0.778f, -0.073f }; + int incX = -1; + float Y[] = { -0.976f, -0.682f }; + int incY = -1; + float y_expected[] = { 0.624274f, -0.921216f }; + cblas_cgemv(order, trans, M, N, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], flteps, "cgemv(case 782) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], flteps, "cgemv(case 782) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 111; + int M = 1; + int N = 1; + int lda = 1; + float alpha[2] = {0.0f, 0.1f}; + float beta[2] = {0.0f, 1.0f}; + float A[] = { 0.629f, 0.801f }; + float X[] = { 0.778f, -0.073f }; + int incX = -1; + float Y[] = { -0.976f, -0.682f }; + int incY = -1; + float y_expected[] = { 0.624274f, -0.921216f }; + cblas_cgemv(order, trans, M, N, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], flteps, "cgemv(case 783) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], flteps, "cgemv(case 783) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 112; + int M = 1; + int N = 1; + int lda = 1; + float alpha[2] = {0.0f, 1.0f}; + float beta[2] = {-0.3f, 0.1f}; + float A[] = { 0.629f, 0.801f }; + float X[] = { 0.778f, -0.073f }; + int incX = -1; + float Y[] = { -0.976f, -0.682f }; + int incY = -1; + float y_expected[] = { -0.216261f, 0.654835f }; + cblas_cgemv(order, trans, M, N, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], flteps, "cgemv(case 784) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], flteps, "cgemv(case 784) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 112; + int M = 1; + int N = 1; + int lda = 1; + float alpha[2] = {0.0f, 1.0f}; + float beta[2] = {-0.3f, 0.1f}; + float A[] = { 0.629f, 0.801f }; + float X[] = { 0.778f, -0.073f }; + int incX = -1; + float Y[] = { -0.976f, -0.682f }; + int incY = -1; + float y_expected[] = { -0.216261f, 0.654835f }; + cblas_cgemv(order, trans, M, N, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], flteps, "cgemv(case 785) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], flteps, "cgemv(case 785) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 113; + int M = 1; + int N = 1; + int lda = 1; + float alpha[2] = {0.0f, 0.1f}; + float beta[2] = {-0.3f, 0.1f}; + float A[] = { 0.629f, 0.801f }; + float X[] = { 0.778f, -0.073f }; + int incX = -1; + float Y[] = { -0.976f, -0.682f }; + int incY = -1; + float y_expected[] = { 0.427909f, 0.150089f }; + cblas_cgemv(order, trans, M, N, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], flteps, "cgemv(case 786) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], flteps, "cgemv(case 786) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 113; + int M = 1; + int N = 1; + int lda = 1; + float alpha[2] = {0.0f, 0.1f}; + float beta[2] = {-0.3f, 0.1f}; + float A[] = { 0.629f, 0.801f }; + float X[] = { 0.778f, -0.073f }; + int incX = -1; + float Y[] = { -0.976f, -0.682f }; + int incY = -1; + float y_expected[] = { 0.427909f, 0.150089f }; + cblas_cgemv(order, trans, M, N, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], flteps, "cgemv(case 787) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], flteps, "cgemv(case 787) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 111; + int M = 1; + int N = 1; + int lda = 1; + double alpha[2] = {0, 0.1}; + double beta[2] = {1, 0}; + double A[] = { 0.932, -0.724 }; + double X[] = { 0.334, -0.317 }; + int incX = -1; + double Y[] = { 0.348, 0.07 }; + int incY = -1; + double y_expected[] = { 0.401726, 0.078178 }; + cblas_zgemv(order, trans, M, N, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], dbleps, "zgemv(case 788) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], dbleps, "zgemv(case 788) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 111; + int M = 1; + int N = 1; + int lda = 1; + double alpha[2] = {0, 0.1}; + double beta[2] = {1, 0}; + double A[] = { 0.932, -0.724 }; + double X[] = { 0.334, -0.317 }; + int incX = -1; + double Y[] = { 0.348, 0.07 }; + int incY = -1; + double y_expected[] = { 0.401726, 0.078178 }; + cblas_zgemv(order, trans, M, N, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], dbleps, "zgemv(case 789) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], dbleps, "zgemv(case 789) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 112; + int M = 1; + int N = 1; + int lda = 1; + double alpha[2] = {-0.3, 0.1}; + double beta[2] = {0, 1}; + double A[] = { 0.932, -0.724 }; + double X[] = { 0.334, -0.317 }; + int incX = -1; + double Y[] = { 0.348, 0.07 }; + int incY = -1; + double y_expected[] = { -0.040808, 0.517356 }; + cblas_zgemv(order, trans, M, N, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], dbleps, "zgemv(case 790) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], dbleps, "zgemv(case 790) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 112; + int M = 1; + int N = 1; + int lda = 1; + double alpha[2] = {-0.3, 0.1}; + double beta[2] = {0, 1}; + double A[] = { 0.932, -0.724 }; + double X[] = { 0.334, -0.317 }; + int incX = -1; + double Y[] = { 0.348, 0.07 }; + int incY = -1; + double y_expected[] = { -0.040808, 0.517356 }; + cblas_zgemv(order, trans, M, N, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], dbleps, "zgemv(case 791) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], dbleps, "zgemv(case 791) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 113; + int M = 1; + int N = 1; + int lda = 1; + double alpha[2] = {1, 0}; + double beta[2] = {0, 0}; + double A[] = { 0.932, -0.724 }; + double X[] = { 0.334, -0.317 }; + int incX = -1; + double Y[] = { 0.348, 0.07 }; + int incY = -1; + double y_expected[] = { 0.540796, -0.053628 }; + cblas_zgemv(order, trans, M, N, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], dbleps, "zgemv(case 792) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], dbleps, "zgemv(case 792) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 113; + int M = 1; + int N = 1; + int lda = 1; + double alpha[2] = {1, 0}; + double beta[2] = {0, 0}; + double A[] = { 0.932, -0.724 }; + double X[] = { 0.334, -0.317 }; + int incX = -1; + double Y[] = { 0.348, 0.07 }; + int incY = -1; + double y_expected[] = { 0.540796, -0.053628 }; + cblas_zgemv(order, trans, M, N, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], dbleps, "zgemv(case 793) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], dbleps, "zgemv(case 793) imag"); + }; + }; + }; + + +} diff --git a/gsl-2.5/cblas/test_ger.c b/gsl-2.5/cblas/test_ger.c new file mode 100644 index 00000000..d81fe755 --- /dev/null +++ b/gsl-2.5/cblas/test_ger.c @@ -0,0 +1,283 @@ +#include +#include +#include +#include + +#include "tests.h" + +void +test_ger (void) { +const double flteps = 1e-4, dbleps = 1e-6; + { + int order = 101; + int M = 1; + int N = 1; + int lda = 1; + float alpha = 1.0f; + float A[] = { -0.515f }; + float X[] = { 0.611f }; + int incX = -1; + float Y[] = { -0.082f }; + int incY = -1; + float A_expected[] = { -0.565102f }; + cblas_sger(order, M, N, alpha, X, incX, Y, incY, A, lda); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(A[i], A_expected[i], flteps, "sger(case 1390)"); + } + }; + }; + + + { + int order = 102; + int M = 1; + int N = 1; + int lda = 1; + float alpha = 1.0f; + float A[] = { -0.515f }; + float X[] = { 0.611f }; + int incX = -1; + float Y[] = { -0.082f }; + int incY = -1; + float A_expected[] = { -0.565102f }; + cblas_sger(order, M, N, alpha, X, incX, Y, incY, A, lda); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(A[i], A_expected[i], flteps, "sger(case 1391)"); + } + }; + }; + + + { + int order = 101; + int M = 1; + int N = 1; + int lda = 1; + double alpha = 1; + double A[] = { -0.809 }; + double X[] = { -0.652 }; + int incX = -1; + double Y[] = { 0.712 }; + int incY = -1; + double A_expected[] = { -1.273224 }; + cblas_dger(order, M, N, alpha, X, incX, Y, incY, A, lda); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(A[i], A_expected[i], dbleps, "dger(case 1392)"); + } + }; + }; + + + { + int order = 102; + int M = 1; + int N = 1; + int lda = 1; + double alpha = 1; + double A[] = { -0.809 }; + double X[] = { -0.652 }; + int incX = -1; + double Y[] = { 0.712 }; + int incY = -1; + double A_expected[] = { -1.273224 }; + cblas_dger(order, M, N, alpha, X, incX, Y, incY, A, lda); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(A[i], A_expected[i], dbleps, "dger(case 1393)"); + } + }; + }; + + + { + int order = 101; + int M = 1; + int N = 1; + int lda = 1; + float alpha[2] = {0.0f, 0.0f}; + float A[] = { -0.651f, 0.856f }; + float X[] = { -0.38f, -0.235f }; + int incX = -1; + float Y[] = { -0.627f, 0.757f }; + int incY = -1; + float A_expected[] = { -0.651f, 0.856f }; + cblas_cgeru(order, M, N, alpha, X, incX, Y, incY, A, lda); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(A[2*i], A_expected[2*i], flteps, "cgeru(case 1394) real"); + gsl_test_rel(A[2*i+1], A_expected[2*i+1], flteps, "cgeru(case 1394) imag"); + }; + }; + }; + + + { + int order = 101; + int M = 1; + int N = 1; + int lda = 1; + float alpha[2] = {0.0f, 0.0f}; + float A[] = { -0.651f, 0.856f }; + float X[] = { -0.38f, -0.235f }; + int incX = -1; + float Y[] = { -0.627f, 0.757f }; + int incY = -1; + float A_expected[] = { -0.651f, 0.856f }; + cblas_cgerc(order, M, N, alpha, X, incX, Y, incY, A, lda); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(A[2*i], A_expected[2*i], flteps, "cgerc(case 1395) real"); + gsl_test_rel(A[2*i+1], A_expected[2*i+1], flteps, "cgerc(case 1395) imag"); + }; + }; + }; + + + { + int order = 102; + int M = 1; + int N = 1; + int lda = 1; + float alpha[2] = {0.0f, 0.0f}; + float A[] = { -0.651f, 0.856f }; + float X[] = { -0.38f, -0.235f }; + int incX = -1; + float Y[] = { -0.627f, 0.757f }; + int incY = -1; + float A_expected[] = { -0.651f, 0.856f }; + cblas_cgeru(order, M, N, alpha, X, incX, Y, incY, A, lda); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(A[2*i], A_expected[2*i], flteps, "cgeru(case 1396) real"); + gsl_test_rel(A[2*i+1], A_expected[2*i+1], flteps, "cgeru(case 1396) imag"); + }; + }; + }; + + + { + int order = 102; + int M = 1; + int N = 1; + int lda = 1; + float alpha[2] = {0.0f, 0.0f}; + float A[] = { -0.651f, 0.856f }; + float X[] = { -0.38f, -0.235f }; + int incX = -1; + float Y[] = { -0.627f, 0.757f }; + int incY = -1; + float A_expected[] = { -0.651f, 0.856f }; + cblas_cgerc(order, M, N, alpha, X, incX, Y, incY, A, lda); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(A[2*i], A_expected[2*i], flteps, "cgerc(case 1397) real"); + gsl_test_rel(A[2*i+1], A_expected[2*i+1], flteps, "cgerc(case 1397) imag"); + }; + }; + }; + + + { + int order = 101; + int M = 1; + int N = 1; + int lda = 1; + double alpha[2] = {-1, 0}; + double A[] = { -0.426, 0.757 }; + double X[] = { -0.579, -0.155 }; + int incX = -1; + double Y[] = { 0.831, 0.035 }; + int incY = -1; + double A_expected[] = { 0.049724, 0.90607 }; + cblas_zgeru(order, M, N, alpha, X, incX, Y, incY, A, lda); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(A[2*i], A_expected[2*i], dbleps, "zgeru(case 1398) real"); + gsl_test_rel(A[2*i+1], A_expected[2*i+1], dbleps, "zgeru(case 1398) imag"); + }; + }; + }; + + + { + int order = 101; + int M = 1; + int N = 1; + int lda = 1; + double alpha[2] = {-1, 0}; + double A[] = { -0.426, 0.757 }; + double X[] = { -0.579, -0.155 }; + int incX = -1; + double Y[] = { 0.831, 0.035 }; + int incY = -1; + double A_expected[] = { 0.060574, 0.86554 }; + cblas_zgerc(order, M, N, alpha, X, incX, Y, incY, A, lda); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(A[2*i], A_expected[2*i], dbleps, "zgerc(case 1399) real"); + gsl_test_rel(A[2*i+1], A_expected[2*i+1], dbleps, "zgerc(case 1399) imag"); + }; + }; + }; + + + { + int order = 102; + int M = 1; + int N = 1; + int lda = 1; + double alpha[2] = {-1, 0}; + double A[] = { -0.426, 0.757 }; + double X[] = { -0.579, -0.155 }; + int incX = -1; + double Y[] = { 0.831, 0.035 }; + int incY = -1; + double A_expected[] = { 0.049724, 0.90607 }; + cblas_zgeru(order, M, N, alpha, X, incX, Y, incY, A, lda); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(A[2*i], A_expected[2*i], dbleps, "zgeru(case 1400) real"); + gsl_test_rel(A[2*i+1], A_expected[2*i+1], dbleps, "zgeru(case 1400) imag"); + }; + }; + }; + + + { + int order = 102; + int M = 1; + int N = 1; + int lda = 1; + double alpha[2] = {-1, 0}; + double A[] = { -0.426, 0.757 }; + double X[] = { -0.579, -0.155 }; + int incX = -1; + double Y[] = { 0.831, 0.035 }; + int incY = -1; + double A_expected[] = { 0.060574, 0.86554 }; + cblas_zgerc(order, M, N, alpha, X, incX, Y, incY, A, lda); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(A[2*i], A_expected[2*i], dbleps, "zgerc(case 1401) real"); + gsl_test_rel(A[2*i+1], A_expected[2*i+1], dbleps, "zgerc(case 1401) imag"); + }; + }; + }; + + +} diff --git a/gsl-2.5/cblas/test_hbmv.c b/gsl-2.5/cblas/test_hbmv.c new file mode 100644 index 00000000..dbf4c550 --- /dev/null +++ b/gsl-2.5/cblas/test_hbmv.c @@ -0,0 +1,411 @@ +#include +#include +#include +#include + +#include "tests.h" + +void +test_hbmv (void) { +const double flteps = 1e-4, dbleps = 1e-6; + { + int order = 101; + int uplo = 121; + float alpha[2] = {0.0f, 1.0f}; + float beta[2] = {-0.3f, 0.1f}; + int N = 3; + int k = 1; + int lda = 3; + float A[] = { 0.937f, -0.035f, 0.339f, 0.847f, 0.022f, 0.153f, -0.785f, 0.193f, -0.731f, -0.166f, -0.243f, -0.319f, 0.173f, -0.24f, 0.079f, -0.058f, 0.124f, 0.445f }; + float X[] = { -0.093f, -0.103f, -0.537f, -0.151f, 0.094f, 0.954f }; + int incX = -1; + float Y[] = { 0.029f, -0.391f, -0.256f, 0.031f, -0.478f, 0.098f }; + int incY = -1; + float y_expected[] = { 0.02698f, 0.521724f, -0.379354f, 1.27743f, -0.25427f, -0.043268f }; + cblas_chbmv(order, uplo, N, k, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], flteps, "chbmv(case 1086) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], flteps, "chbmv(case 1086) imag"); + }; + }; + }; + + + { + int order = 101; + int uplo = 121; + float alpha[2] = {0.0f, 1.0f}; + float beta[2] = {-0.3f, 0.1f}; + int N = 3; + int k = 1; + int lda = 3; + float A[] = { 0.937f, -0.035f, 0.339f, 0.847f, 0.022f, 0.153f, -0.785f, 0.193f, -0.731f, -0.166f, -0.243f, -0.319f, 0.173f, -0.24f, 0.079f, -0.058f, 0.124f, 0.445f }; + float X[] = { -0.093f, -0.103f, -0.537f, -0.151f, 0.094f, 0.954f }; + int incX = -1; + float Y[] = { 0.029f, -0.391f, -0.256f, 0.031f, -0.478f, 0.098f }; + int incY = -1; + float y_expected[] = { 0.02698f, 0.521724f, -0.379354f, 1.27743f, -0.25427f, -0.043268f }; + cblas_chbmv(order, uplo, N, k, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], flteps, "chbmv(case 1087) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], flteps, "chbmv(case 1087) imag"); + }; + }; + }; + + + { + int order = 101; + int uplo = 122; + float alpha[2] = {0.0f, 1.0f}; + float beta[2] = {-0.3f, 0.1f}; + int N = 3; + int k = 1; + int lda = 3; + float A[] = { 0.937f, -0.035f, 0.339f, 0.847f, 0.022f, 0.153f, -0.785f, 0.193f, -0.731f, -0.166f, -0.243f, -0.319f, 0.173f, -0.24f, 0.079f, -0.058f, 0.124f, 0.445f }; + float X[] = { -0.093f, -0.103f, -0.537f, -0.151f, 0.094f, 0.954f }; + int incX = -1; + float Y[] = { 0.029f, -0.391f, -0.256f, 0.031f, -0.478f, 0.098f }; + int incY = -1; + float y_expected[] = { -0.06422f, -0.016288f, 0.734206f, 0.108366f, -0.411982f, 0.347068f }; + cblas_chbmv(order, uplo, N, k, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], flteps, "chbmv(case 1088) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], flteps, "chbmv(case 1088) imag"); + }; + }; + }; + + + { + int order = 101; + int uplo = 122; + float alpha[2] = {0.0f, 1.0f}; + float beta[2] = {-0.3f, 0.1f}; + int N = 3; + int k = 1; + int lda = 3; + float A[] = { 0.937f, -0.035f, 0.339f, 0.847f, 0.022f, 0.153f, -0.785f, 0.193f, -0.731f, -0.166f, -0.243f, -0.319f, 0.173f, -0.24f, 0.079f, -0.058f, 0.124f, 0.445f }; + float X[] = { -0.093f, -0.103f, -0.537f, -0.151f, 0.094f, 0.954f }; + int incX = -1; + float Y[] = { 0.029f, -0.391f, -0.256f, 0.031f, -0.478f, 0.098f }; + int incY = -1; + float y_expected[] = { -0.06422f, -0.016288f, 0.734206f, 0.108366f, -0.411982f, 0.347068f }; + cblas_chbmv(order, uplo, N, k, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], flteps, "chbmv(case 1089) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], flteps, "chbmv(case 1089) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 121; + float alpha[2] = {0.0f, 1.0f}; + float beta[2] = {-0.3f, 0.1f}; + int N = 3; + int k = 1; + int lda = 3; + float A[] = { 0.937f, -0.035f, 0.339f, 0.847f, 0.022f, 0.153f, -0.785f, 0.193f, -0.731f, -0.166f, -0.243f, -0.319f, 0.173f, -0.24f, 0.079f, -0.058f, 0.124f, 0.445f }; + float X[] = { -0.093f, -0.103f, -0.537f, -0.151f, 0.094f, 0.954f }; + int incX = -1; + float Y[] = { 0.029f, -0.391f, -0.256f, 0.031f, -0.478f, 0.098f }; + int incY = -1; + float y_expected[] = { 0.19354f, 0.056192f, 0.72585f, 0.42717f, -0.2047f, 0.405354f }; + cblas_chbmv(order, uplo, N, k, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], flteps, "chbmv(case 1090) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], flteps, "chbmv(case 1090) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 121; + float alpha[2] = {0.0f, 1.0f}; + float beta[2] = {-0.3f, 0.1f}; + int N = 3; + int k = 1; + int lda = 3; + float A[] = { 0.937f, -0.035f, 0.339f, 0.847f, 0.022f, 0.153f, -0.785f, 0.193f, -0.731f, -0.166f, -0.243f, -0.319f, 0.173f, -0.24f, 0.079f, -0.058f, 0.124f, 0.445f }; + float X[] = { -0.093f, -0.103f, -0.537f, -0.151f, 0.094f, 0.954f }; + int incX = -1; + float Y[] = { 0.029f, -0.391f, -0.256f, 0.031f, -0.478f, 0.098f }; + int incY = -1; + float y_expected[] = { 0.19354f, 0.056192f, 0.72585f, 0.42717f, -0.2047f, 0.405354f }; + cblas_chbmv(order, uplo, N, k, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], flteps, "chbmv(case 1091) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], flteps, "chbmv(case 1091) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 122; + float alpha[2] = {0.0f, 1.0f}; + float beta[2] = {-0.3f, 0.1f}; + int N = 3; + int k = 1; + int lda = 3; + float A[] = { 0.937f, -0.035f, 0.339f, 0.847f, 0.022f, 0.153f, -0.785f, 0.193f, -0.731f, -0.166f, -0.243f, -0.319f, 0.173f, -0.24f, 0.079f, -0.058f, 0.124f, 0.445f }; + float X[] = { -0.093f, -0.103f, -0.537f, -0.151f, 0.094f, 0.954f }; + int incX = -1; + float Y[] = { 0.029f, -0.391f, -0.256f, 0.031f, -0.478f, 0.098f }; + int incY = -1; + float y_expected[] = { -0.151304f, 0.471592f, -0.507714f, -0.304446f, -1.16395f, -0.299062f }; + cblas_chbmv(order, uplo, N, k, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], flteps, "chbmv(case 1092) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], flteps, "chbmv(case 1092) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 122; + float alpha[2] = {0.0f, 1.0f}; + float beta[2] = {-0.3f, 0.1f}; + int N = 3; + int k = 1; + int lda = 3; + float A[] = { 0.937f, -0.035f, 0.339f, 0.847f, 0.022f, 0.153f, -0.785f, 0.193f, -0.731f, -0.166f, -0.243f, -0.319f, 0.173f, -0.24f, 0.079f, -0.058f, 0.124f, 0.445f }; + float X[] = { -0.093f, -0.103f, -0.537f, -0.151f, 0.094f, 0.954f }; + int incX = -1; + float Y[] = { 0.029f, -0.391f, -0.256f, 0.031f, -0.478f, 0.098f }; + int incY = -1; + float y_expected[] = { -0.151304f, 0.471592f, -0.507714f, -0.304446f, -1.16395f, -0.299062f }; + cblas_chbmv(order, uplo, N, k, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], flteps, "chbmv(case 1093) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], flteps, "chbmv(case 1093) imag"); + }; + }; + }; + + + { + int order = 101; + int uplo = 121; + double alpha[2] = {1, 0}; + double beta[2] = {1, 0}; + int N = 3; + int k = 1; + int lda = 3; + double A[] = { 0.662, 0.24, -0.311, -0.345, -0.782, 0.904, -0.842, 0.065, -0.168, -0.855, -0.692, 0.113, 0.009, -0.707, -0.981, 0.019, -0.687, 0.861 }; + double X[] = { 0.873, -0.509, 0.398, 0.471, 0.214, 0.878 }; + int incX = -1; + double Y[] = { -0.441, -0.781, 0.979, -0.911, 0.879, 0.807 }; + int incY = -1; + double y_expected[] = { -0.902712, -0.524419, -0.307439, -2.167713, 1.059385, 1.104445 }; + cblas_zhbmv(order, uplo, N, k, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], dbleps, "zhbmv(case 1094) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], dbleps, "zhbmv(case 1094) imag"); + }; + }; + }; + + + { + int order = 101; + int uplo = 121; + double alpha[2] = {1, 0}; + double beta[2] = {1, 0}; + int N = 3; + int k = 1; + int lda = 3; + double A[] = { 0.662, 0.24, -0.311, -0.345, -0.782, 0.904, -0.842, 0.065, -0.168, -0.855, -0.692, 0.113, 0.009, -0.707, -0.981, 0.019, -0.687, 0.861 }; + double X[] = { 0.873, -0.509, 0.398, 0.471, 0.214, 0.878 }; + int incX = -1; + double Y[] = { -0.441, -0.781, 0.979, -0.911, 0.879, 0.807 }; + int incY = -1; + double y_expected[] = { -0.902712, -0.524419, -0.307439, -2.167713, 1.059385, 1.104445 }; + cblas_zhbmv(order, uplo, N, k, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], dbleps, "zhbmv(case 1095) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], dbleps, "zhbmv(case 1095) imag"); + }; + }; + }; + + + { + int order = 101; + int uplo = 122; + double alpha[2] = {1, 0}; + double beta[2] = {1, 0}; + int N = 3; + int k = 1; + int lda = 3; + double A[] = { 0.662, 0.24, -0.311, -0.345, -0.782, 0.904, -0.842, 0.065, -0.168, -0.855, -0.692, 0.113, 0.009, -0.707, -0.981, 0.019, -0.687, 0.861 }; + double X[] = { 0.873, -0.509, 0.398, 0.471, 0.214, 0.878 }; + int incX = -1; + double Y[] = { -0.441, -0.781, 0.979, -0.911, 0.879, 0.807 }; + int incY = -1; + double y_expected[] = { -0.960834, -0.558818, 1.042598, -1.102864, 0.507945, 0.11149 }; + cblas_zhbmv(order, uplo, N, k, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], dbleps, "zhbmv(case 1096) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], dbleps, "zhbmv(case 1096) imag"); + }; + }; + }; + + + { + int order = 101; + int uplo = 122; + double alpha[2] = {1, 0}; + double beta[2] = {1, 0}; + int N = 3; + int k = 1; + int lda = 3; + double A[] = { 0.662, 0.24, -0.311, -0.345, -0.782, 0.904, -0.842, 0.065, -0.168, -0.855, -0.692, 0.113, 0.009, -0.707, -0.981, 0.019, -0.687, 0.861 }; + double X[] = { 0.873, -0.509, 0.398, 0.471, 0.214, 0.878 }; + int incX = -1; + double Y[] = { -0.441, -0.781, 0.979, -0.911, 0.879, 0.807 }; + int incY = -1; + double y_expected[] = { -0.960834, -0.558818, 1.042598, -1.102864, 0.507945, 0.11149 }; + cblas_zhbmv(order, uplo, N, k, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], dbleps, "zhbmv(case 1097) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], dbleps, "zhbmv(case 1097) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 121; + double alpha[2] = {1, 0}; + double beta[2] = {1, 0}; + int N = 3; + int k = 1; + int lda = 3; + double A[] = { 0.662, 0.24, -0.311, -0.345, -0.782, 0.904, -0.842, 0.065, -0.168, -0.855, -0.692, 0.113, 0.009, -0.707, -0.981, 0.019, -0.687, 0.861 }; + double X[] = { 0.873, -0.509, 0.398, 0.471, 0.214, 0.878 }; + int incX = -1; + double Y[] = { -0.441, -0.781, 0.979, -0.911, 0.879, 0.807 }; + int incY = -1; + double y_expected[] = { -1.626828, 0.003954, 0.437012, -2.365106, 0.446715, 0.16323 }; + cblas_zhbmv(order, uplo, N, k, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], dbleps, "zhbmv(case 1098) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], dbleps, "zhbmv(case 1098) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 121; + double alpha[2] = {1, 0}; + double beta[2] = {1, 0}; + int N = 3; + int k = 1; + int lda = 3; + double A[] = { 0.662, 0.24, -0.311, -0.345, -0.782, 0.904, -0.842, 0.065, -0.168, -0.855, -0.692, 0.113, 0.009, -0.707, -0.981, 0.019, -0.687, 0.861 }; + double X[] = { 0.873, -0.509, 0.398, 0.471, 0.214, 0.878 }; + int incX = -1; + double Y[] = { -0.441, -0.781, 0.979, -0.911, 0.879, 0.807 }; + int incY = -1; + double y_expected[] = { -1.626828, 0.003954, 0.437012, -2.365106, 0.446715, 0.16323 }; + cblas_zhbmv(order, uplo, N, k, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], dbleps, "zhbmv(case 1099) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], dbleps, "zhbmv(case 1099) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 122; + double alpha[2] = {1, 0}; + double beta[2] = {1, 0}; + int N = 3; + int k = 1; + int lda = 3; + double A[] = { 0.662, 0.24, -0.311, -0.345, -0.782, 0.904, -0.842, 0.065, -0.168, -0.855, -0.692, 0.113, 0.009, -0.707, -0.981, 0.019, -0.687, 0.861 }; + double X[] = { 0.873, -0.509, 0.398, 0.471, 0.214, 0.878 }; + int incX = -1; + double Y[] = { -0.441, -0.781, 0.979, -0.911, 0.879, 0.807 }; + int incY = -1; + double y_expected[] = { -0.097302, -1.204999, 1.168771, -0.822543, 0.734395, 1.379065 }; + cblas_zhbmv(order, uplo, N, k, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], dbleps, "zhbmv(case 1100) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], dbleps, "zhbmv(case 1100) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 122; + double alpha[2] = {1, 0}; + double beta[2] = {1, 0}; + int N = 3; + int k = 1; + int lda = 3; + double A[] = { 0.662, 0.24, -0.311, -0.345, -0.782, 0.904, -0.842, 0.065, -0.168, -0.855, -0.692, 0.113, 0.009, -0.707, -0.981, 0.019, -0.687, 0.861 }; + double X[] = { 0.873, -0.509, 0.398, 0.471, 0.214, 0.878 }; + int incX = -1; + double Y[] = { -0.441, -0.781, 0.979, -0.911, 0.879, 0.807 }; + int incY = -1; + double y_expected[] = { -0.097302, -1.204999, 1.168771, -0.822543, 0.734395, 1.379065 }; + cblas_zhbmv(order, uplo, N, k, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], dbleps, "zhbmv(case 1101) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], dbleps, "zhbmv(case 1101) imag"); + }; + }; + }; + + +} diff --git a/gsl-2.5/cblas/test_hemm.c b/gsl-2.5/cblas/test_hemm.c new file mode 100644 index 00000000..3bc7921b --- /dev/null +++ b/gsl-2.5/cblas/test_hemm.c @@ -0,0 +1,427 @@ +#include +#include +#include +#include + +#include "tests.h" + +void +test_hemm (void) { +const double flteps = 1e-4, dbleps = 1e-6; + { + int order = 101; + int side = 141; + int uplo = 121; + int M = 1; + int N = 2; + float alpha[2] = {0.0f, 0.1f}; + float beta[2] = {0.0f, 0.1f}; + float A[] = { -0.126f, 0.079f }; + int lda = 1; + float B[] = { -0.954f, -0.059f, 0.296f, -0.988f }; + int ldb = 2; + float C[] = { -0.859f, -0.731f, 0.737f, 0.593f }; + int ldc = 2; + float C_expected[] = { 0.0723566f, -0.0738796f, -0.0717488f, 0.0699704f }; + cblas_chemm(order, side, uplo, M, N, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "chemm(case 1550) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "chemm(case 1550) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 121; + int M = 1; + int N = 2; + float alpha[2] = {0.0f, 0.1f}; + float beta[2] = {0.0f, 0.1f}; + float A[] = { 0.652f, 0.584f }; + int lda = 1; + float B[] = { -0.983f, -0.734f, -0.422f, -0.825f }; + int ldb = 1; + float C[] = { 0.387f, 0.341f, -0.734f, 0.632f }; + int ldc = 1; + float C_expected[] = { 0.0137568f, -0.0253916f, -0.00941f, -0.100914f }; + cblas_chemm(order, side, uplo, M, N, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "chemm(case 1551) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "chemm(case 1551) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 121; + int M = 1; + int N = 2; + float alpha[2] = {0.0f, 1.0f}; + float beta[2] = {-1.0f, 0.0f}; + float A[] = { 0.78f, 0.885f, 0.507f, 0.765f, 0.911f, -0.461f, 0.707f, 0.508f }; + int lda = 2; + float B[] = { -0.905f, 0.633f, 0.85f, -0.943f }; + int ldb = 2; + float C[] = { 0.045f, -0.237f, 0.078f, -0.252f }; + int ldc = 2; + float C_expected[] = { 0.589611f, -0.759345f, 0.960095f, -0.09013f }; + cblas_chemm(order, side, uplo, M, N, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "chemm(case 1552) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "chemm(case 1552) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 121; + int M = 1; + int N = 2; + float alpha[2] = {0.0f, 1.0f}; + float beta[2] = {-1.0f, 0.0f}; + float A[] = { 0.947f, 0.939f, -0.267f, -0.819f, -0.827f, -0.937f, 0.991f, 0.838f }; + int lda = 2; + float B[] = { 0.871f, -0.988f, -0.232f, -0.434f }; + int ldb = 1; + float C[] = { -0.261f, 0.927f, -0.351f, -0.203f }; + int ldc = 1; + float C_expected[] = { 1.0551f, 0.496359f, 0.780145f, -1.67298f }; + cblas_chemm(order, side, uplo, M, N, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "chemm(case 1553) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "chemm(case 1553) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 122; + int M = 1; + int N = 2; + float alpha[2] = {-1.0f, 0.0f}; + float beta[2] = {0.0f, 0.0f}; + float A[] = { -0.593f, -0.9f }; + int lda = 1; + float B[] = { -0.861f, 0.747f, -0.984f, 0.595f }; + int ldb = 2; + float C[] = { -0.589f, -0.671f, -0.011f, -0.417f }; + int ldc = 2; + float C_expected[] = { -0.510573f, 0.442971f, -0.583512f, 0.352835f }; + cblas_chemm(order, side, uplo, M, N, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "chemm(case 1554) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "chemm(case 1554) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 122; + int M = 1; + int N = 2; + float alpha[2] = {-1.0f, 0.0f}; + float beta[2] = {0.0f, 0.0f}; + float A[] = { -0.79f, 0.132f }; + int lda = 1; + float B[] = { -0.243f, -0.12f, 0.633f, -0.556f }; + int ldb = 1; + float C[] = { -0.658f, -0.74f, -0.47f, 0.481f }; + int ldc = 1; + float C_expected[] = { -0.19197f, -0.0948f, 0.50007f, -0.43924f }; + cblas_chemm(order, side, uplo, M, N, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "chemm(case 1555) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "chemm(case 1555) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 122; + int M = 1; + int N = 2; + float alpha[2] = {-0.3f, 0.1f}; + float beta[2] = {0.0f, 1.0f}; + float A[] = { -0.114f, -0.515f, -0.513f, -0.527f, -0.995f, 0.986f, 0.229f, -0.076f }; + int lda = 2; + float B[] = { 0.084f, 0.522f, 0.61f, 0.694f }; + int ldb = 2; + float C[] = { 0.802f, 0.136f, -0.161f, -0.364f }; + int ldc = 2; + float C_expected[] = { 0.269101f, 0.716492f, 0.237088f, 0.0290666f }; + cblas_chemm(order, side, uplo, M, N, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "chemm(case 1556) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "chemm(case 1556) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 122; + int M = 1; + int N = 2; + float alpha[2] = {-0.3f, 0.1f}; + float beta[2] = {0.0f, 1.0f}; + float A[] = { 0.798f, -0.324f, -0.693f, -0.893f, -0.223f, 0.749f, 0.102f, -0.357f }; + int lda = 2; + float B[] = { -0.572f, -0.569f, -0.391f, -0.938f }; + int ldb = 1; + float C[] = { 0.152f, -0.834f, -0.633f, -0.473f }; + int ldc = 1; + float C_expected[] = { 1.08642f, -0.113853f, 0.234826f, -0.48289f }; + cblas_chemm(order, side, uplo, M, N, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "chemm(case 1557) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "chemm(case 1557) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 121; + int M = 1; + int N = 2; + double alpha[2] = {0, 0.1}; + double beta[2] = {0, 0.1}; + double A[] = { -0.359, 0.089 }; + int lda = 1; + double B[] = { -0.451, -0.337, -0.901, -0.871 }; + int ldb = 2; + double C[] = { 0.729, 0.631, 0.364, 0.246 }; + int ldc = 2; + double C_expected[] = { -0.0751983, 0.0890909, -0.0558689, 0.0687459 }; + cblas_zhemm(order, side, uplo, M, N, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zhemm(case 1558) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zhemm(case 1558) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 121; + int M = 1; + int N = 2; + double alpha[2] = {0, 0.1}; + double beta[2] = {0, 0.1}; + double A[] = { 0.044, -0.496 }; + int lda = 1; + double B[] = { -0.674, 0.281, 0.366, 0.888 }; + int ldb = 1; + double C[] = { -0.9, 0.919, 0.857, -0.049 }; + int ldc = 1; + double C_expected[] = { -0.0931364, -0.0929656, 0.0009928, 0.0873104 }; + cblas_zhemm(order, side, uplo, M, N, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zhemm(case 1559) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zhemm(case 1559) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 121; + int M = 1; + int N = 2; + double alpha[2] = {0, 0}; + double beta[2] = {0, 0.1}; + double A[] = { -0.314, 0.115, 0.114, 0.878, 0.961, -0.224, 0.973, 0.771 }; + int lda = 2; + double B[] = { 0.5, -0.016, -0.5, 0.149 }; + int ldb = 2; + double C[] = { -0.054, 0.064, 0.02, 0.245 }; + int ldc = 2; + double C_expected[] = { -0.0064, -0.0054, -0.0245, 0.002 }; + cblas_zhemm(order, side, uplo, M, N, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zhemm(case 1560) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zhemm(case 1560) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 121; + int M = 1; + int N = 2; + double alpha[2] = {0, 0}; + double beta[2] = {0, 0.1}; + double A[] = { 0.186, 0.578, 0.797, -0.957, -0.539, -0.969, -0.21, 0.354 }; + int lda = 2; + double B[] = { 0.641, -0.968, 0.15, -0.569 }; + int ldb = 1; + double C[] = { -0.556, -0.9, 0.197, 0.31 }; + int ldc = 1; + double C_expected[] = { 0.09, -0.0556, -0.031, 0.0197 }; + cblas_zhemm(order, side, uplo, M, N, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zhemm(case 1561) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zhemm(case 1561) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 122; + int M = 1; + int N = 2; + double alpha[2] = {1, 0}; + double beta[2] = {1, 0}; + double A[] = { 0.323, 0.641 }; + int lda = 1; + double B[] = { -0.188, 0.091, -0.235, 0.523 }; + int ldb = 2; + double C[] = { 0.919, 0.806, 0.823, -0.94 }; + int ldc = 2; + double C_expected[] = { 0.858276, 0.835393, 0.747095, -0.771071 }; + cblas_zhemm(order, side, uplo, M, N, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zhemm(case 1562) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zhemm(case 1562) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 122; + int M = 1; + int N = 2; + double alpha[2] = {1, 0}; + double beta[2] = {1, 0}; + double A[] = { -0.688, 0.915 }; + int lda = 1; + double B[] = { 0.914, -0.204, 0.205, -0.476 }; + int ldb = 1; + double C[] = { 0.27, -0.628, -0.079, 0.507 }; + int ldc = 1; + double C_expected[] = { -0.358832, -0.487648, -0.22004, 0.834488 }; + cblas_zhemm(order, side, uplo, M, N, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zhemm(case 1563) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zhemm(case 1563) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 122; + int M = 1; + int N = 2; + double alpha[2] = {0, 1}; + double beta[2] = {0, 0.1}; + double A[] = { 0.681, 0.574, -0.425, -0.64, 0.792, 0.661, -0.009, 0.005 }; + int lda = 2; + double B[] = { -0.221, 0.554, -0.465, -0.95 }; + int ldb = 2; + double C[] = { 0.331, -0.958, -0.826, -0.972 }; + int ldc = 2; + double C_expected[] = { 0.778291, 0.142269, -0.496199, 0.112747 }; + cblas_zhemm(order, side, uplo, M, N, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zhemm(case 1564) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zhemm(case 1564) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 122; + int M = 1; + int N = 2; + double alpha[2] = {0, 1}; + double beta[2] = {0, 0.1}; + double A[] = { 0.959, 0.34, -0.23, 0.064, 0.516, -0.275, 0.714, 0.899 }; + int lda = 2; + double B[] = { -0.502, -0.987, -0.134, 0.215 }; + int ldb = 1; + double C[] = { 0.929, 0.181, -0.16, -0.921 }; + int ldc = 1; + double C_expected[] = { 0.986459, -0.371458, -0.320548, -0.059384 }; + cblas_zhemm(order, side, uplo, M, N, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zhemm(case 1565) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zhemm(case 1565) imag"); + }; + }; + }; + + +} diff --git a/gsl-2.5/cblas/test_hemv.c b/gsl-2.5/cblas/test_hemv.c new file mode 100644 index 00000000..153f1f2d --- /dev/null +++ b/gsl-2.5/cblas/test_hemv.c @@ -0,0 +1,395 @@ +#include +#include +#include +#include + +#include "tests.h" + +void +test_hemv (void) { +const double flteps = 1e-4, dbleps = 1e-6; + { + int order = 101; + int uplo = 121; + float alpha[2] = {1.0f, 0.0f}; + float beta[2] = {-0.3f, 0.1f}; + int N = 1; + int lda = 1; + float A[] = { -0.434f, 0.837f }; + float X[] = { 0.209f, -0.935f }; + int incX = -1; + float Y[] = { 0.346f, -0.412f }; + int incY = -1; + float y_expected[] = { -0.153306f, 0.56399f }; + cblas_chemv(order, uplo, N, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], flteps, "chemv(case 1070) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], flteps, "chemv(case 1070) imag"); + }; + }; + }; + + + { + int order = 101; + int uplo = 121; + float alpha[2] = {1.0f, 0.0f}; + float beta[2] = {-0.3f, 0.1f}; + int N = 1; + int lda = 1; + float A[] = { -0.434f, 0.837f }; + float X[] = { 0.209f, -0.935f }; + int incX = -1; + float Y[] = { 0.346f, -0.412f }; + int incY = -1; + float y_expected[] = { -0.153306f, 0.56399f }; + cblas_chemv(order, uplo, N, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], flteps, "chemv(case 1071) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], flteps, "chemv(case 1071) imag"); + }; + }; + }; + + + { + int order = 101; + int uplo = 122; + float alpha[2] = {1.0f, 0.0f}; + float beta[2] = {-0.3f, 0.1f}; + int N = 1; + int lda = 1; + float A[] = { -0.434f, 0.837f }; + float X[] = { 0.209f, -0.935f }; + int incX = -1; + float Y[] = { 0.346f, -0.412f }; + int incY = -1; + float y_expected[] = { -0.153306f, 0.56399f }; + cblas_chemv(order, uplo, N, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], flteps, "chemv(case 1072) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], flteps, "chemv(case 1072) imag"); + }; + }; + }; + + + { + int order = 101; + int uplo = 122; + float alpha[2] = {1.0f, 0.0f}; + float beta[2] = {-0.3f, 0.1f}; + int N = 1; + int lda = 1; + float A[] = { -0.434f, 0.837f }; + float X[] = { 0.209f, -0.935f }; + int incX = -1; + float Y[] = { 0.346f, -0.412f }; + int incY = -1; + float y_expected[] = { -0.153306f, 0.56399f }; + cblas_chemv(order, uplo, N, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], flteps, "chemv(case 1073) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], flteps, "chemv(case 1073) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 121; + float alpha[2] = {1.0f, 0.0f}; + float beta[2] = {-0.3f, 0.1f}; + int N = 1; + int lda = 1; + float A[] = { -0.434f, 0.837f }; + float X[] = { 0.209f, -0.935f }; + int incX = -1; + float Y[] = { 0.346f, -0.412f }; + int incY = -1; + float y_expected[] = { -0.153306f, 0.56399f }; + cblas_chemv(order, uplo, N, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], flteps, "chemv(case 1074) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], flteps, "chemv(case 1074) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 121; + float alpha[2] = {1.0f, 0.0f}; + float beta[2] = {-0.3f, 0.1f}; + int N = 1; + int lda = 1; + float A[] = { -0.434f, 0.837f }; + float X[] = { 0.209f, -0.935f }; + int incX = -1; + float Y[] = { 0.346f, -0.412f }; + int incY = -1; + float y_expected[] = { -0.153306f, 0.56399f }; + cblas_chemv(order, uplo, N, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], flteps, "chemv(case 1075) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], flteps, "chemv(case 1075) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 122; + float alpha[2] = {1.0f, 0.0f}; + float beta[2] = {-0.3f, 0.1f}; + int N = 1; + int lda = 1; + float A[] = { -0.434f, 0.837f }; + float X[] = { 0.209f, -0.935f }; + int incX = -1; + float Y[] = { 0.346f, -0.412f }; + int incY = -1; + float y_expected[] = { -0.153306f, 0.56399f }; + cblas_chemv(order, uplo, N, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], flteps, "chemv(case 1076) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], flteps, "chemv(case 1076) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 122; + float alpha[2] = {1.0f, 0.0f}; + float beta[2] = {-0.3f, 0.1f}; + int N = 1; + int lda = 1; + float A[] = { -0.434f, 0.837f }; + float X[] = { 0.209f, -0.935f }; + int incX = -1; + float Y[] = { 0.346f, -0.412f }; + int incY = -1; + float y_expected[] = { -0.153306f, 0.56399f }; + cblas_chemv(order, uplo, N, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], flteps, "chemv(case 1077) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], flteps, "chemv(case 1077) imag"); + }; + }; + }; + + + { + int order = 101; + int uplo = 121; + double alpha[2] = {0, 0}; + double beta[2] = {1, 0}; + int N = 1; + int lda = 1; + double A[] = { 0.036, -0.966 }; + double X[] = { -0.695, 0.886 }; + int incX = -1; + double Y[] = { 0.486, 0.629 }; + int incY = -1; + double y_expected[] = { 0.486, 0.629 }; + cblas_zhemv(order, uplo, N, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], dbleps, "zhemv(case 1078) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], dbleps, "zhemv(case 1078) imag"); + }; + }; + }; + + + { + int order = 101; + int uplo = 121; + double alpha[2] = {0, 0}; + double beta[2] = {1, 0}; + int N = 1; + int lda = 1; + double A[] = { 0.036, -0.966 }; + double X[] = { -0.695, 0.886 }; + int incX = -1; + double Y[] = { 0.486, 0.629 }; + int incY = -1; + double y_expected[] = { 0.486, 0.629 }; + cblas_zhemv(order, uplo, N, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], dbleps, "zhemv(case 1079) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], dbleps, "zhemv(case 1079) imag"); + }; + }; + }; + + + { + int order = 101; + int uplo = 122; + double alpha[2] = {0, 0}; + double beta[2] = {1, 0}; + int N = 1; + int lda = 1; + double A[] = { 0.036, -0.966 }; + double X[] = { -0.695, 0.886 }; + int incX = -1; + double Y[] = { 0.486, 0.629 }; + int incY = -1; + double y_expected[] = { 0.486, 0.629 }; + cblas_zhemv(order, uplo, N, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], dbleps, "zhemv(case 1080) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], dbleps, "zhemv(case 1080) imag"); + }; + }; + }; + + + { + int order = 101; + int uplo = 122; + double alpha[2] = {0, 0}; + double beta[2] = {1, 0}; + int N = 1; + int lda = 1; + double A[] = { 0.036, -0.966 }; + double X[] = { -0.695, 0.886 }; + int incX = -1; + double Y[] = { 0.486, 0.629 }; + int incY = -1; + double y_expected[] = { 0.486, 0.629 }; + cblas_zhemv(order, uplo, N, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], dbleps, "zhemv(case 1081) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], dbleps, "zhemv(case 1081) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 121; + double alpha[2] = {0, 0}; + double beta[2] = {1, 0}; + int N = 1; + int lda = 1; + double A[] = { 0.036, -0.966 }; + double X[] = { -0.695, 0.886 }; + int incX = -1; + double Y[] = { 0.486, 0.629 }; + int incY = -1; + double y_expected[] = { 0.486, 0.629 }; + cblas_zhemv(order, uplo, N, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], dbleps, "zhemv(case 1082) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], dbleps, "zhemv(case 1082) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 121; + double alpha[2] = {0, 0}; + double beta[2] = {1, 0}; + int N = 1; + int lda = 1; + double A[] = { 0.036, -0.966 }; + double X[] = { -0.695, 0.886 }; + int incX = -1; + double Y[] = { 0.486, 0.629 }; + int incY = -1; + double y_expected[] = { 0.486, 0.629 }; + cblas_zhemv(order, uplo, N, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], dbleps, "zhemv(case 1083) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], dbleps, "zhemv(case 1083) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 122; + double alpha[2] = {0, 0}; + double beta[2] = {1, 0}; + int N = 1; + int lda = 1; + double A[] = { 0.036, -0.966 }; + double X[] = { -0.695, 0.886 }; + int incX = -1; + double Y[] = { 0.486, 0.629 }; + int incY = -1; + double y_expected[] = { 0.486, 0.629 }; + cblas_zhemv(order, uplo, N, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], dbleps, "zhemv(case 1084) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], dbleps, "zhemv(case 1084) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 122; + double alpha[2] = {0, 0}; + double beta[2] = {1, 0}; + int N = 1; + int lda = 1; + double A[] = { 0.036, -0.966 }; + double X[] = { -0.695, 0.886 }; + int incX = -1; + double Y[] = { 0.486, 0.629 }; + int incY = -1; + double y_expected[] = { 0.486, 0.629 }; + cblas_zhemv(order, uplo, N, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], dbleps, "zhemv(case 1085) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], dbleps, "zhemv(case 1085) imag"); + }; + }; + }; + + +} diff --git a/gsl-2.5/cblas/test_her.c b/gsl-2.5/cblas/test_her.c new file mode 100644 index 00000000..d1478f8f --- /dev/null +++ b/gsl-2.5/cblas/test_her.c @@ -0,0 +1,179 @@ +#include +#include +#include +#include + +#include "tests.h" + +void +test_her (void) { +const double flteps = 1e-4, dbleps = 1e-6; + { + int order = 101; + int uplo = 121; + int N = 1; + int lda = 1; + float alpha = 1.0f; + float A[] = { 0.188f, 0.856f }; + float X[] = { -0.832f, -0.151f }; + int incX = -1; + float A_expected[] = { 0.903025f, 0.0f }; + cblas_cher(order, uplo, N, alpha, X, incX, A, lda); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(A[2*i], A_expected[2*i], flteps, "cher(case 1410) real"); + gsl_test_rel(A[2*i+1], A_expected[2*i+1], flteps, "cher(case 1410) imag"); + }; + }; + }; + + + { + int order = 101; + int uplo = 122; + int N = 1; + int lda = 1; + float alpha = 1.0f; + float A[] = { 0.188f, 0.856f }; + float X[] = { -0.832f, -0.151f }; + int incX = -1; + float A_expected[] = { 0.903025f, 0.0f }; + cblas_cher(order, uplo, N, alpha, X, incX, A, lda); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(A[2*i], A_expected[2*i], flteps, "cher(case 1411) real"); + gsl_test_rel(A[2*i+1], A_expected[2*i+1], flteps, "cher(case 1411) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 121; + int N = 1; + int lda = 1; + float alpha = 1.0f; + float A[] = { 0.188f, 0.856f }; + float X[] = { -0.832f, -0.151f }; + int incX = -1; + float A_expected[] = { 0.903025f, 0.0f }; + cblas_cher(order, uplo, N, alpha, X, incX, A, lda); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(A[2*i], A_expected[2*i], flteps, "cher(case 1412) real"); + gsl_test_rel(A[2*i+1], A_expected[2*i+1], flteps, "cher(case 1412) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 122; + int N = 1; + int lda = 1; + float alpha = 1.0f; + float A[] = { 0.188f, 0.856f }; + float X[] = { -0.832f, -0.151f }; + int incX = -1; + float A_expected[] = { 0.903025f, 0.0f }; + cblas_cher(order, uplo, N, alpha, X, incX, A, lda); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(A[2*i], A_expected[2*i], flteps, "cher(case 1413) real"); + gsl_test_rel(A[2*i+1], A_expected[2*i+1], flteps, "cher(case 1413) imag"); + }; + }; + }; + + + { + int order = 101; + int uplo = 121; + int N = 1; + int lda = 1; + double alpha = 0.1; + double A[] = { 0.257, 0.326 }; + double X[] = { 0.319, -0.009 }; + int incX = -1; + double A_expected[] = { 0.2671842, 0.0 }; + cblas_zher(order, uplo, N, alpha, X, incX, A, lda); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(A[2*i], A_expected[2*i], dbleps, "zher(case 1414) real"); + gsl_test_rel(A[2*i+1], A_expected[2*i+1], dbleps, "zher(case 1414) imag"); + }; + }; + }; + + + { + int order = 101; + int uplo = 122; + int N = 1; + int lda = 1; + double alpha = 0.1; + double A[] = { 0.257, 0.326 }; + double X[] = { 0.319, -0.009 }; + int incX = -1; + double A_expected[] = { 0.2671842, 0.0 }; + cblas_zher(order, uplo, N, alpha, X, incX, A, lda); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(A[2*i], A_expected[2*i], dbleps, "zher(case 1415) real"); + gsl_test_rel(A[2*i+1], A_expected[2*i+1], dbleps, "zher(case 1415) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 121; + int N = 1; + int lda = 1; + double alpha = 0.1; + double A[] = { 0.257, 0.326 }; + double X[] = { 0.319, -0.009 }; + int incX = -1; + double A_expected[] = { 0.2671842, 0.0 }; + cblas_zher(order, uplo, N, alpha, X, incX, A, lda); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(A[2*i], A_expected[2*i], dbleps, "zher(case 1416) real"); + gsl_test_rel(A[2*i+1], A_expected[2*i+1], dbleps, "zher(case 1416) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 122; + int N = 1; + int lda = 1; + double alpha = 0.1; + double A[] = { 0.257, 0.326 }; + double X[] = { 0.319, -0.009 }; + int incX = -1; + double A_expected[] = { 0.2671842, 0.0 }; + cblas_zher(order, uplo, N, alpha, X, incX, A, lda); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(A[2*i], A_expected[2*i], dbleps, "zher(case 1417) real"); + gsl_test_rel(A[2*i+1], A_expected[2*i+1], dbleps, "zher(case 1417) imag"); + }; + }; + }; + + +} diff --git a/gsl-2.5/cblas/test_her2.c b/gsl-2.5/cblas/test_her2.c new file mode 100644 index 00000000..b1a0fae9 --- /dev/null +++ b/gsl-2.5/cblas/test_her2.c @@ -0,0 +1,195 @@ +#include +#include +#include +#include + +#include "tests.h" + +void +test_her2 (void) { +const double flteps = 1e-4, dbleps = 1e-6; + { + int order = 101; + int uplo = 121; + int N = 1; + int lda = 1; + float alpha[2] = {-1.0f, 0.0f}; + float A[] = { -0.821f, 0.954f }; + float X[] = { 0.532f, 0.802f }; + int incX = -1; + float Y[] = { 0.016f, -0.334f }; + int incY = -1; + float A_expected[] = { -0.302288f, 0.0f }; + cblas_cher2(order, uplo, N, alpha, X, incX, Y, incY, A, lda); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(A[2*i], A_expected[2*i], flteps, "cher2(case 1450) real"); + gsl_test_rel(A[2*i+1], A_expected[2*i+1], flteps, "cher2(case 1450) imag"); + }; + }; + }; + + + { + int order = 101; + int uplo = 122; + int N = 1; + int lda = 1; + float alpha[2] = {-1.0f, 0.0f}; + float A[] = { -0.821f, 0.954f }; + float X[] = { 0.532f, 0.802f }; + int incX = -1; + float Y[] = { 0.016f, -0.334f }; + int incY = -1; + float A_expected[] = { -0.302288f, 0.0f }; + cblas_cher2(order, uplo, N, alpha, X, incX, Y, incY, A, lda); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(A[2*i], A_expected[2*i], flteps, "cher2(case 1451) real"); + gsl_test_rel(A[2*i+1], A_expected[2*i+1], flteps, "cher2(case 1451) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 121; + int N = 1; + int lda = 1; + float alpha[2] = {-1.0f, 0.0f}; + float A[] = { -0.821f, 0.954f }; + float X[] = { 0.532f, 0.802f }; + int incX = -1; + float Y[] = { 0.016f, -0.334f }; + int incY = -1; + float A_expected[] = { -0.302288f, 0.0f }; + cblas_cher2(order, uplo, N, alpha, X, incX, Y, incY, A, lda); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(A[2*i], A_expected[2*i], flteps, "cher2(case 1452) real"); + gsl_test_rel(A[2*i+1], A_expected[2*i+1], flteps, "cher2(case 1452) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 122; + int N = 1; + int lda = 1; + float alpha[2] = {-1.0f, 0.0f}; + float A[] = { -0.821f, 0.954f }; + float X[] = { 0.532f, 0.802f }; + int incX = -1; + float Y[] = { 0.016f, -0.334f }; + int incY = -1; + float A_expected[] = { -0.302288f, 0.0f }; + cblas_cher2(order, uplo, N, alpha, X, incX, Y, incY, A, lda); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(A[2*i], A_expected[2*i], flteps, "cher2(case 1453) real"); + gsl_test_rel(A[2*i+1], A_expected[2*i+1], flteps, "cher2(case 1453) imag"); + }; + }; + }; + + + { + int order = 101; + int uplo = 121; + int N = 1; + int lda = 1; + double alpha[2] = {-0.3, 0.1}; + double A[] = { -0.334, 0.286 }; + double X[] = { -0.14, -0.135 }; + int incX = -1; + double Y[] = { 0.455, 0.358 }; + int incY = -1; + double A_expected[] = { -0.264521, 0.0 }; + cblas_zher2(order, uplo, N, alpha, X, incX, Y, incY, A, lda); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(A[2*i], A_expected[2*i], dbleps, "zher2(case 1454) real"); + gsl_test_rel(A[2*i+1], A_expected[2*i+1], dbleps, "zher2(case 1454) imag"); + }; + }; + }; + + + { + int order = 101; + int uplo = 122; + int N = 1; + int lda = 1; + double alpha[2] = {-0.3, 0.1}; + double A[] = { -0.334, 0.286 }; + double X[] = { -0.14, -0.135 }; + int incX = -1; + double Y[] = { 0.455, 0.358 }; + int incY = -1; + double A_expected[] = { -0.264521, 0.0 }; + cblas_zher2(order, uplo, N, alpha, X, incX, Y, incY, A, lda); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(A[2*i], A_expected[2*i], dbleps, "zher2(case 1455) real"); + gsl_test_rel(A[2*i+1], A_expected[2*i+1], dbleps, "zher2(case 1455) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 121; + int N = 1; + int lda = 1; + double alpha[2] = {-0.3, 0.1}; + double A[] = { -0.334, 0.286 }; + double X[] = { -0.14, -0.135 }; + int incX = -1; + double Y[] = { 0.455, 0.358 }; + int incY = -1; + double A_expected[] = { -0.264521, 0.0 }; + cblas_zher2(order, uplo, N, alpha, X, incX, Y, incY, A, lda); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(A[2*i], A_expected[2*i], dbleps, "zher2(case 1456) real"); + gsl_test_rel(A[2*i+1], A_expected[2*i+1], dbleps, "zher2(case 1456) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 122; + int N = 1; + int lda = 1; + double alpha[2] = {-0.3, 0.1}; + double A[] = { -0.334, 0.286 }; + double X[] = { -0.14, -0.135 }; + int incX = -1; + double Y[] = { 0.455, 0.358 }; + int incY = -1; + double A_expected[] = { -0.264521, 0.0 }; + cblas_zher2(order, uplo, N, alpha, X, incX, Y, incY, A, lda); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(A[2*i], A_expected[2*i], dbleps, "zher2(case 1457) real"); + gsl_test_rel(A[2*i+1], A_expected[2*i+1], dbleps, "zher2(case 1457) imag"); + }; + }; + }; + + +} diff --git a/gsl-2.5/cblas/test_her2k.c b/gsl-2.5/cblas/test_her2k.c new file mode 100644 index 00000000..9c20962d --- /dev/null +++ b/gsl-2.5/cblas/test_her2k.c @@ -0,0 +1,427 @@ +#include +#include +#include +#include + +#include "tests.h" + +void +test_her2k (void) { +const double flteps = 1e-4, dbleps = 1e-6; + { + int order = 101; + int uplo = 121; + int trans = 111; + int N = 1; + int K = 2; + float alpha[2] = {-1.0f, 0.0f}; + float beta = -0.3f; + float A[] = { 0.178f, 0.545f, -0.491f, 0.979f }; + int lda = 2; + float B[] = { -0.665f, -0.531f, -0.4f, 0.227f }; + int ldb = 2; + float C[] = { 0.115f, -0.193f }; + int ldc = 1; + float C_expected[] = { -0.056236f, 0.0f }; + cblas_cher2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "cher2k(case 1646) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "cher2k(case 1646) imag"); + }; + }; + }; + + + { + int order = 101; + int uplo = 122; + int trans = 111; + int N = 1; + int K = 2; + float alpha[2] = {-1.0f, 0.0f}; + float beta = -0.3f; + float A[] = { -0.808f, 0.447f, 0.145f, -0.226f }; + int lda = 2; + float B[] = { -0.413f, 0.904f, -0.585f, 0.717f }; + int ldb = 2; + float C[] = { -0.725f, -0.244f }; + int ldc = 1; + float C_expected[] = { -0.76435f, 0.0f }; + cblas_cher2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "cher2k(case 1647) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "cher2k(case 1647) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 121; + int trans = 111; + int N = 1; + int K = 2; + float alpha[2] = {-1.0f, 0.0f}; + float beta = -0.3f; + float A[] = { 0.337f, -0.737f, -0.993f, 0.69f }; + int lda = 1; + float B[] = { -0.39f, -0.836f, -0.32f, 0.368f }; + int ldb = 1; + float C[] = { 0.844f, -0.763f }; + int ldc = 1; + float C_expected[] = { -2.36596f, 0.0f }; + cblas_cher2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "cher2k(case 1648) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "cher2k(case 1648) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 122; + int trans = 111; + int N = 1; + int K = 2; + float alpha[2] = {-1.0f, 0.0f}; + float beta = -0.3f; + float A[] = { 0.386f, -0.465f, 0.719f, -0.378f }; + int lda = 1; + float B[] = { 0.099f, -0.879f, 0.864f, 0.141f }; + int ldb = 1; + float C[] = { -0.599f, -0.47f }; + int ldc = 1; + float C_expected[] = { -1.85003f, 0.0f }; + cblas_cher2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "cher2k(case 1649) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "cher2k(case 1649) imag"); + }; + }; + }; + + + { + int order = 101; + int uplo = 121; + int trans = 113; + int N = 1; + int K = 2; + float alpha[2] = {0.0f, 1.0f}; + float beta = -1.0f; + float A[] = { 0.128f, 0.431f, -0.26f, 0.75f }; + int lda = 1; + float B[] = { 0.276f, 0.058f, 0.904f, -0.116f }; + int ldb = 1; + float C[] = { 0.914f, -0.262f }; + int ldc = 1; + float C_expected[] = { 0.604744f, 0.0f }; + cblas_cher2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "cher2k(case 1650) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "cher2k(case 1650) imag"); + }; + }; + }; + + + { + int order = 101; + int uplo = 122; + int trans = 113; + int N = 1; + int K = 2; + float alpha[2] = {0.0f, 1.0f}; + float beta = -1.0f; + float A[] = { 0.72f, 0.783f, -0.737f, 0.375f }; + int lda = 1; + float B[] = { 0.531f, 0.167f, 0.203f, -0.221f }; + int ldb = 1; + float C[] = { 0.618f, 0.392f }; + int ldc = 1; + float C_expected[] = { -0.200438f, 0.0f }; + cblas_cher2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "cher2k(case 1651) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "cher2k(case 1651) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 121; + int trans = 113; + int N = 1; + int K = 2; + float alpha[2] = {0.0f, 1.0f}; + float beta = -1.0f; + float A[] = { -0.372f, -0.735f, -0.711f, 0.051f }; + int lda = 2; + float B[] = { 0.257f, 0.097f, 0.338f, -0.484f }; + int ldb = 2; + float C[] = { -0.142f, -0.197f }; + int ldc = 1; + float C_expected[] = { -0.817394f, 0.0f }; + cblas_cher2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "cher2k(case 1652) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "cher2k(case 1652) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 122; + int trans = 113; + int N = 1; + int K = 2; + float alpha[2] = {0.0f, 1.0f}; + float beta = -1.0f; + float A[] = { 0.1f, -0.878f, 0.28f, -0.381f }; + int lda = 2; + float B[] = { -0.208f, 0.309f, -0.276f, 0.123f }; + int ldb = 2; + float C[] = { 0.483f, -0.541f }; + int ldc = 1; + float C_expected[] = { -0.03812f, 0.0f }; + cblas_cher2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "cher2k(case 1653) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "cher2k(case 1653) imag"); + }; + }; + }; + + + { + int order = 101; + int uplo = 121; + int trans = 111; + int N = 1; + int K = 2; + double alpha[2] = {1, 0}; + double beta = 1; + double A[] = { 0.515, -0.034, 0.067, 0.66 }; + int lda = 2; + double B[] = { 0.408, -0.85, -0.945, -0.799 }; + int ldb = 2; + double C[] = { -0.918, -0.985 }; + int ldc = 1; + double C_expected[] = { -1.62127, 0.0 }; + cblas_zher2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zher2k(case 1654) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zher2k(case 1654) imag"); + }; + }; + }; + + + { + int order = 101; + int uplo = 122; + int trans = 111; + int N = 1; + int K = 2; + double alpha[2] = {1, 0}; + double beta = 1; + double A[] = { -0.009, 0.495, -0.008, -0.973 }; + int lda = 2; + double B[] = { -0.239, -0.373, -0.032, -0.539 }; + int ldb = 2; + double C[] = { 0.443, -0.245 }; + int ldc = 1; + double C_expected[] = { 1.127438, 0.0 }; + cblas_zher2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zher2k(case 1655) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zher2k(case 1655) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 121; + int trans = 111; + int N = 1; + int K = 2; + double alpha[2] = {1, 0}; + double beta = 1; + double A[] = { 0.531, 0.721, -0.848, 0.826 }; + int lda = 1; + double B[] = { -0.711, -0.2, -0.92, -0.676 }; + int ldb = 1; + double C[] = { -0.447, 0.701 }; + int ldc = 1; + double C_expected[] = { -1.046914, 0.0 }; + cblas_zher2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zher2k(case 1656) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zher2k(case 1656) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 122; + int trans = 111; + int N = 1; + int K = 2; + double alpha[2] = {1, 0}; + double beta = 1; + double A[] = { 0.68, 0.079, 0.837, -0.814 }; + int lda = 1; + double B[] = { -0.986, 0.024, 0.584, -0.248 }; + int ldb = 1; + double C[] = { 0.477, -0.551 }; + int ldc = 1; + double C_expected[] = { 0.521192, 0.0 }; + cblas_zher2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zher2k(case 1657) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zher2k(case 1657) imag"); + }; + }; + }; + + + { + int order = 101; + int uplo = 121; + int trans = 113; + int N = 1; + int K = 2; + double alpha[2] = {-1, 0}; + double beta = 0.1; + double A[] = { -0.63, 0.787, 0.426, -0.568 }; + int lda = 1; + double B[] = { -0.228, 0.302, 0.83, 0.023 }; + int ldb = 1; + double C[] = { 0.354, -0.85 }; + int ldc = 1; + double C_expected[] = { -1.40826, 0.0 }; + cblas_zher2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zher2k(case 1658) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zher2k(case 1658) imag"); + }; + }; + }; + + + { + int order = 101; + int uplo = 122; + int trans = 113; + int N = 1; + int K = 2; + double alpha[2] = {-1, 0}; + double beta = 0.1; + double A[] = { 0.224, -0.191, 0.46, 0.464 }; + int lda = 1; + double B[] = { -0.815, 0.634, 0.066, -0.873 }; + int ldb = 1; + double C[] = { -0.49, -0.606 }; + int ldc = 1; + double C_expected[] = { 1.307732, 0.0 }; + cblas_zher2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zher2k(case 1659) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zher2k(case 1659) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 121; + int trans = 113; + int N = 1; + int K = 2; + double alpha[2] = {-1, 0}; + double beta = 0.1; + double A[] = { 0.943, 0.075, 0.15, -0.141 }; + int lda = 2; + double B[] = { -0.962, 0.422, -0.592, -0.789 }; + int ldb = 2; + double C[] = { 0.728, 0.601 }; + int ldc = 1; + double C_expected[] = { 1.778934, 0.0 }; + cblas_zher2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zher2k(case 1660) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zher2k(case 1660) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 122; + int trans = 113; + int N = 1; + int K = 2; + double alpha[2] = {-1, 0}; + double beta = 0.1; + double A[] = { -0.93, -0.386, 0.565, 0.141 }; + int lda = 2; + double B[] = { -0.801, 0.022, 0.558, -0.932 }; + int ldb = 2; + double C[] = { 0.068, 0.501 }; + int ldc = 1; + double C_expected[] = { -1.833792, 0.0 }; + cblas_zher2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zher2k(case 1661) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zher2k(case 1661) imag"); + }; + }; + }; + + +} diff --git a/gsl-2.5/cblas/test_herk.c b/gsl-2.5/cblas/test_herk.c new file mode 100644 index 00000000..e2455533 --- /dev/null +++ b/gsl-2.5/cblas/test_herk.c @@ -0,0 +1,395 @@ +#include +#include +#include +#include + +#include "tests.h" + +void +test_herk (void) { +const double flteps = 1e-4, dbleps = 1e-6; + { + int order = 101; + int uplo = 121; + int trans = 111; + int N = 2; + int K = 1; + float alpha = 0.0f; + float beta = 0.1f; + float A[] = { -0.617f, 0.179f, -0.626f, 0.334f }; + int lda = 1; + float C[] = { 0.346f, -0.903f, 0.022f, -0.839f, -0.715f, 0.049f, -0.338f, 0.149f }; + int ldc = 2; + float C_expected[] = { 0.0346f, 0.0f, 0.0022f, -0.0839f, -0.715f, 0.049f, -0.0338f, 0.0f }; + cblas_cherk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); + { + int i; + for (i = 0; i < 4; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "cherk(case 1598) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "cherk(case 1598) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 121; + int trans = 111; + int N = 2; + int K = 1; + float alpha = 0.0f; + float beta = 0.1f; + float A[] = { -0.356f, -0.308f, 0.493f, -0.351f }; + int lda = 2; + float C[] = { -0.898f, -0.905f, 0.002f, -0.219f, 0.881f, 0.879f, 0.275f, -0.351f }; + int ldc = 2; + float C_expected[] = { -0.0898f, 0.0f, 0.002f, -0.219f, 0.0881f, 0.0879f, 0.0275f, 0.0f }; + cblas_cherk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); + { + int i; + for (i = 0; i < 4; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "cherk(case 1599) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "cherk(case 1599) imag"); + }; + }; + }; + + + { + int order = 101; + int uplo = 121; + int trans = 113; + int N = 2; + int K = 1; + float alpha = 0.1f; + float beta = 1.0f; + float A[] = { -0.103f, -0.951f, -0.601f, -0.041f }; + int lda = 2; + float C[] = { -0.918f, -0.018f, 0.991f, -0.789f, -0.698f, -0.067f, 0.956f, -0.599f }; + int ldc = 2; + float C_expected[] = { -0.826499f, 0.0f, 1.00109f, -0.845733f, -0.698f, -0.067f, 0.992288f, 0.0f }; + cblas_cherk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); + { + int i; + for (i = 0; i < 4; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "cherk(case 1600) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "cherk(case 1600) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 121; + int trans = 113; + int N = 2; + int K = 1; + float alpha = 0.1f; + float beta = 1.0f; + float A[] = { -0.237f, 0.925f, -0.904f, -0.091f }; + int lda = 1; + float C[] = { -0.572f, 0.915f, 0.398f, 0.222f, 0.016f, 0.288f, -0.078f, -0.507f }; + int ldc = 2; + float C_expected[] = { -0.480821f, 0.0f, 0.398f, 0.222f, 0.0290073f, 0.373777f, 0.0045497f, 0.0f }; + cblas_cherk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); + { + int i; + for (i = 0; i < 4; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "cherk(case 1601) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "cherk(case 1601) imag"); + }; + }; + }; + + + { + int order = 101; + int uplo = 122; + int trans = 111; + int N = 2; + int K = 1; + float alpha = -0.3f; + float beta = 0.0f; + float A[] = { 0.963f, -0.23f, -0.435f, 0.289f }; + int lda = 1; + float C[] = { 0.282f, -0.272f, -0.516f, -0.594f, -0.001f, 0.155f, -0.39f, -0.354f }; + int ldc = 2; + float C_expected[] = { -0.294081f, 0.0f, -0.516f, -0.594f, 0.145613f, -0.0534771f, -0.0818238f, 0.0f }; + cblas_cherk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); + { + int i; + for (i = 0; i < 4; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "cherk(case 1602) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "cherk(case 1602) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 122; + int trans = 111; + int N = 2; + int K = 1; + float alpha = -0.3f; + float beta = 0.0f; + float A[] = { 0.674f, 0.1f, -0.098f, 0.552f }; + int lda = 2; + float C[] = { 0.089f, -0.523f, -0.551f, 0.618f, 0.67f, 0.247f, 0.975f, -0.714f }; + int ldc = 2; + float C_expected[] = { -0.139283f, 0.0f, 0.0032556f, -0.114554f, 0.67f, 0.247f, -0.0942924f, 0.0f }; + cblas_cherk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); + { + int i; + for (i = 0; i < 4; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "cherk(case 1603) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "cherk(case 1603) imag"); + }; + }; + }; + + + { + int order = 101; + int uplo = 122; + int trans = 113; + int N = 2; + int K = 1; + float alpha = 1.0f; + float beta = 0.1f; + float A[] = { 0.033f, -0.864f, 0.168f, 0.524f }; + int lda = 2; + float C[] = { 0.788f, 0.016f, -0.436f, 0.749f, -0.89f, -0.87f, 0.421f, -0.203f }; + int ldc = 2; + float C_expected[] = { 0.826385f, 0.0f, -0.436f, 0.749f, -0.536192f, -0.249444f, 0.3449f, 0.0f }; + cblas_cherk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); + { + int i; + for (i = 0; i < 4; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "cherk(case 1604) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "cherk(case 1604) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 122; + int trans = 113; + int N = 2; + int K = 1; + float alpha = 1.0f; + float beta = 0.1f; + float A[] = { 0.957f, -0.079f, 0.935f, 0.232f }; + int lda = 1; + float C[] = { -0.744f, -0.061f, 0.195f, -0.574f, 0.551f, 0.478f, -0.337f, 0.1f }; + int ldc = 2; + float C_expected[] = { 0.84769f, 0.0f, 0.895967f, -0.353289f, 0.551f, 0.478f, 0.894349f, 0.0f }; + cblas_cherk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); + { + int i; + for (i = 0; i < 4; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "cherk(case 1605) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "cherk(case 1605) imag"); + }; + }; + }; + + + { + int order = 101; + int uplo = 121; + int trans = 111; + int N = 2; + int K = 1; + double alpha = 1; + double beta = 1; + double A[] = { 0.934, 0.664, 0.426, 0.263 }; + int lda = 1; + double C[] = { 0.251, -0.97, 0.76, -0.349, 0.152, -0.899, -0.17, 0.707 }; + int ldc = 2; + double C_expected[] = { 1.564252, 0.0, 1.332516, -0.311778, 0.152, -0.899, 0.080645, 0.0 }; + cblas_zherk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); + { + int i; + for (i = 0; i < 4; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zherk(case 1606) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zherk(case 1606) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 121; + int trans = 111; + int N = 2; + int K = 1; + double alpha = 1; + double beta = 1; + double A[] = { 0.16, 0.464, -0.623, 0.776 }; + int lda = 2; + double C[] = { 0.771, -0.449, 0.776, 0.112, -0.134, 0.317, 0.547, -0.551 }; + int ldc = 2; + double C_expected[] = { 1.011896, 0.0, 0.776, 0.112, 0.126384, -0.096232, 1.537305, 0.0 }; + cblas_zherk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); + { + int i; + for (i = 0; i < 4; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zherk(case 1607) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zherk(case 1607) imag"); + }; + }; + }; + + + { + int order = 101; + int uplo = 121; + int trans = 113; + int N = 2; + int K = 1; + double alpha = 0.1; + double beta = 1; + double A[] = { 0.787, 0.057, -0.49, 0.47 }; + int lda = 2; + double C[] = { -0.758, 0.912, 0.992, -0.356, 0.584, 0.806, 0.965, 0.674 }; + int ldc = 2; + double C_expected[] = { -0.6957382, 0.0, 0.956116, -0.316218, 0.584, 0.806, 1.0111, 0.0 }; + cblas_zherk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); + { + int i; + for (i = 0; i < 4; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zherk(case 1608) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zherk(case 1608) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 121; + int trans = 113; + int N = 2; + int K = 1; + double alpha = 0.1; + double beta = 1; + double A[] = { 0.961, -0.384, 0.165, 0.395 }; + int lda = 1; + double C[] = { -0.186, 0.404, -0.873, 0.09, -0.451, -0.972, -0.203, -0.304 }; + int ldc = 2; + double C_expected[] = { -0.0789023, 0.0, -0.873, 0.09, -0.4503115, -0.9277045, -0.184675, 0.0 }; + cblas_zherk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); + { + int i; + for (i = 0; i < 4; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zherk(case 1609) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zherk(case 1609) imag"); + }; + }; + }; + + + { + int order = 101; + int uplo = 122; + int trans = 111; + int N = 2; + int K = 1; + double alpha = 0; + double beta = -0.3; + double A[] = { 0.04, 0.608, 0.21, -0.44 }; + int lda = 1; + double C[] = { 0.285, -0.943, 0.581, -0.56, 0.112, 0.529, 0.16, -0.913 }; + int ldc = 2; + double C_expected[] = { -0.0855, 0.0, 0.581, -0.56, -0.0336, -0.1587, -0.048, 0.0 }; + cblas_zherk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); + { + int i; + for (i = 0; i < 4; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zherk(case 1610) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zherk(case 1610) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 122; + int trans = 111; + int N = 2; + int K = 1; + double alpha = 0; + double beta = -0.3; + double A[] = { -0.984, -0.398, -0.379, 0.919 }; + int lda = 2; + double C[] = { -0.44, -0.087, 0.156, -0.945, -0.943, -0.355, 0.577, 0.053 }; + int ldc = 2; + double C_expected[] = { 0.132, 0.0, -0.0468, 0.2835, -0.943, -0.355, -0.1731, 0.0 }; + cblas_zherk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); + { + int i; + for (i = 0; i < 4; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zherk(case 1611) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zherk(case 1611) imag"); + }; + }; + }; + + + { + int order = 101; + int uplo = 122; + int trans = 113; + int N = 2; + int K = 1; + double alpha = 1; + double beta = -1; + double A[] = { 0.269, -0.428, -0.029, 0.964 }; + int lda = 2; + double C[] = { 0.473, -0.932, -0.689, -0.072, -0.952, -0.862, 0.001, 0.282 }; + int ldc = 2; + double C_expected[] = { -0.217455, 0.0, -0.689, -0.072, 0.531607, 0.615096, 0.929137, 0.0 }; + cblas_zherk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); + { + int i; + for (i = 0; i < 4; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zherk(case 1612) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zherk(case 1612) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 122; + int trans = 113; + int N = 2; + int K = 1; + double alpha = 1; + double beta = -1; + double A[] = { -0.303, -0.037, -0.411, -0.243 }; + int lda = 1; + double C[] = { 0.652, -0.227, -0.849, 0.87, -0.051, -0.535, 0.418, -0.681 }; + int ldc = 2; + double C_expected[] = { -0.558822, 0.0, 0.982524, -0.928422, -0.051, -0.535, -0.19003, 0.0 }; + cblas_zherk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); + { + int i; + for (i = 0; i < 4; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zherk(case 1613) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zherk(case 1613) imag"); + }; + }; + }; + + +} diff --git a/gsl-2.5/cblas/test_hpmv.c b/gsl-2.5/cblas/test_hpmv.c new file mode 100644 index 00000000..a043aadd --- /dev/null +++ b/gsl-2.5/cblas/test_hpmv.c @@ -0,0 +1,379 @@ +#include +#include +#include +#include + +#include "tests.h" + +void +test_hpmv (void) { +const double flteps = 1e-4, dbleps = 1e-6; + { + int order = 101; + int uplo = 121; + float alpha[2] = {-0.3f, 0.1f}; + float beta[2] = {0.0f, 1.0f}; + int N = 2; + float A[] = { 0.339f, -0.102f, 0.908f, 0.097f, -0.808f, 0.236f }; + float X[] = { 0.993f, -0.502f, -0.653f, 0.796f }; + int incX = -1; + float Y[] = { -0.35f, 0.339f, -0.269f, -0.122f }; + int incY = -1; + float y_expected[] = { -0.0627557f, -0.839323f, -0.0877262f, -0.169208f }; + cblas_chpmv(order, uplo, N, alpha, A, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], flteps, "chpmv(case 1118) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], flteps, "chpmv(case 1118) imag"); + }; + }; + }; + + + { + int order = 101; + int uplo = 121; + float alpha[2] = {-0.3f, 0.1f}; + float beta[2] = {0.0f, 1.0f}; + int N = 2; + float A[] = { 0.339f, -0.102f, 0.908f, 0.097f, -0.808f, 0.236f }; + float X[] = { 0.993f, -0.502f, -0.653f, 0.796f }; + int incX = -1; + float Y[] = { -0.35f, 0.339f, -0.269f, -0.122f }; + int incY = -1; + float y_expected[] = { -0.0627557f, -0.839323f, -0.0877262f, -0.169208f }; + cblas_chpmv(order, uplo, N, alpha, A, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], flteps, "chpmv(case 1119) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], flteps, "chpmv(case 1119) imag"); + }; + }; + }; + + + { + int order = 101; + int uplo = 122; + float alpha[2] = {-0.3f, 0.1f}; + float beta[2] = {0.0f, 1.0f}; + int N = 2; + float A[] = { 0.339f, -0.102f, 0.908f, 0.097f, -0.808f, 0.236f }; + float X[] = { 0.993f, -0.502f, -0.653f, 0.796f }; + int incX = -1; + float Y[] = { -0.35f, 0.339f, -0.269f, -0.122f }; + int incY = -1; + float y_expected[] = { -0.0037603f, -0.816761f, -0.0392456f, -0.121154f }; + cblas_chpmv(order, uplo, N, alpha, A, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], flteps, "chpmv(case 1120) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], flteps, "chpmv(case 1120) imag"); + }; + }; + }; + + + { + int order = 101; + int uplo = 122; + float alpha[2] = {-0.3f, 0.1f}; + float beta[2] = {0.0f, 1.0f}; + int N = 2; + float A[] = { 0.339f, -0.102f, 0.908f, 0.097f, -0.808f, 0.236f }; + float X[] = { 0.993f, -0.502f, -0.653f, 0.796f }; + int incX = -1; + float Y[] = { -0.35f, 0.339f, -0.269f, -0.122f }; + int incY = -1; + float y_expected[] = { -0.0037603f, -0.816761f, -0.0392456f, -0.121154f }; + cblas_chpmv(order, uplo, N, alpha, A, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], flteps, "chpmv(case 1121) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], flteps, "chpmv(case 1121) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 121; + float alpha[2] = {-0.3f, 0.1f}; + float beta[2] = {0.0f, 1.0f}; + int N = 2; + float A[] = { 0.339f, -0.102f, 0.908f, 0.097f, -0.808f, 0.236f }; + float X[] = { 0.993f, -0.502f, -0.653f, 0.796f }; + int incX = -1; + float Y[] = { -0.35f, 0.339f, -0.269f, -0.122f }; + int incY = -1; + float y_expected[] = { -0.0627557f, -0.839323f, -0.0877262f, -0.169208f }; + cblas_chpmv(order, uplo, N, alpha, A, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], flteps, "chpmv(case 1122) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], flteps, "chpmv(case 1122) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 121; + float alpha[2] = {-0.3f, 0.1f}; + float beta[2] = {0.0f, 1.0f}; + int N = 2; + float A[] = { 0.339f, -0.102f, 0.908f, 0.097f, -0.808f, 0.236f }; + float X[] = { 0.993f, -0.502f, -0.653f, 0.796f }; + int incX = -1; + float Y[] = { -0.35f, 0.339f, -0.269f, -0.122f }; + int incY = -1; + float y_expected[] = { -0.0627557f, -0.839323f, -0.0877262f, -0.169208f }; + cblas_chpmv(order, uplo, N, alpha, A, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], flteps, "chpmv(case 1123) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], flteps, "chpmv(case 1123) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 122; + float alpha[2] = {-0.3f, 0.1f}; + float beta[2] = {0.0f, 1.0f}; + int N = 2; + float A[] = { 0.339f, -0.102f, 0.908f, 0.097f, -0.808f, 0.236f }; + float X[] = { 0.993f, -0.502f, -0.653f, 0.796f }; + int incX = -1; + float Y[] = { -0.35f, 0.339f, -0.269f, -0.122f }; + int incY = -1; + float y_expected[] = { -0.0037603f, -0.816761f, -0.0392456f, -0.121154f }; + cblas_chpmv(order, uplo, N, alpha, A, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], flteps, "chpmv(case 1124) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], flteps, "chpmv(case 1124) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 122; + float alpha[2] = {-0.3f, 0.1f}; + float beta[2] = {0.0f, 1.0f}; + int N = 2; + float A[] = { 0.339f, -0.102f, 0.908f, 0.097f, -0.808f, 0.236f }; + float X[] = { 0.993f, -0.502f, -0.653f, 0.796f }; + int incX = -1; + float Y[] = { -0.35f, 0.339f, -0.269f, -0.122f }; + int incY = -1; + float y_expected[] = { -0.0037603f, -0.816761f, -0.0392456f, -0.121154f }; + cblas_chpmv(order, uplo, N, alpha, A, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], flteps, "chpmv(case 1125) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], flteps, "chpmv(case 1125) imag"); + }; + }; + }; + + + { + int order = 101; + int uplo = 121; + double alpha[2] = {1, 0}; + double beta[2] = {0, 1}; + int N = 2; + double A[] = { 0.543, -0.737, 0.281, -0.053, -0.098, -0.826 }; + double X[] = { 0.67, -0.857, -0.613, -0.927 }; + int incX = -1; + double Y[] = { -0.398, -0.934, -0.204, 0.183 }; + int incY = -1; + double y_expected[] = { 0.745218, -0.60699, -0.37301, -0.983688 }; + cblas_zhpmv(order, uplo, N, alpha, A, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], dbleps, "zhpmv(case 1126) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], dbleps, "zhpmv(case 1126) imag"); + }; + }; + }; + + + { + int order = 101; + int uplo = 121; + double alpha[2] = {1, 0}; + double beta[2] = {0, 1}; + int N = 2; + double A[] = { 0.543, -0.737, 0.281, -0.053, -0.098, -0.826 }; + double X[] = { 0.67, -0.857, -0.613, -0.927 }; + int incX = -1; + double Y[] = { -0.398, -0.934, -0.204, 0.183 }; + int incY = -1; + double y_expected[] = { 0.745218, -0.60699, -0.37301, -0.983688 }; + cblas_zhpmv(order, uplo, N, alpha, A, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], dbleps, "zhpmv(case 1127) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], dbleps, "zhpmv(case 1127) imag"); + }; + }; + }; + + + { + int order = 101; + int uplo = 122; + double alpha[2] = {1, 0}; + double beta[2] = {0, 1}; + int N = 2; + double A[] = { 0.543, -0.737, 0.281, -0.053, -0.098, -0.826 }; + double X[] = { 0.67, -0.857, -0.613, -0.927 }; + int incX = -1; + double Y[] = { -0.398, -0.934, -0.204, 0.183 }; + int incY = -1; + double y_expected[] = { 0.646956, -0.542012, -0.282168, -0.912668 }; + cblas_zhpmv(order, uplo, N, alpha, A, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], dbleps, "zhpmv(case 1128) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], dbleps, "zhpmv(case 1128) imag"); + }; + }; + }; + + + { + int order = 101; + int uplo = 122; + double alpha[2] = {1, 0}; + double beta[2] = {0, 1}; + int N = 2; + double A[] = { 0.543, -0.737, 0.281, -0.053, -0.098, -0.826 }; + double X[] = { 0.67, -0.857, -0.613, -0.927 }; + int incX = -1; + double Y[] = { -0.398, -0.934, -0.204, 0.183 }; + int incY = -1; + double y_expected[] = { 0.646956, -0.542012, -0.282168, -0.912668 }; + cblas_zhpmv(order, uplo, N, alpha, A, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], dbleps, "zhpmv(case 1129) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], dbleps, "zhpmv(case 1129) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 121; + double alpha[2] = {1, 0}; + double beta[2] = {0, 1}; + int N = 2; + double A[] = { 0.543, -0.737, 0.281, -0.053, -0.098, -0.826 }; + double X[] = { 0.67, -0.857, -0.613, -0.927 }; + int incX = -1; + double Y[] = { -0.398, -0.934, -0.204, 0.183 }; + int incY = -1; + double y_expected[] = { 0.745218, -0.60699, -0.37301, -0.983688 }; + cblas_zhpmv(order, uplo, N, alpha, A, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], dbleps, "zhpmv(case 1130) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], dbleps, "zhpmv(case 1130) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 121; + double alpha[2] = {1, 0}; + double beta[2] = {0, 1}; + int N = 2; + double A[] = { 0.543, -0.737, 0.281, -0.053, -0.098, -0.826 }; + double X[] = { 0.67, -0.857, -0.613, -0.927 }; + int incX = -1; + double Y[] = { -0.398, -0.934, -0.204, 0.183 }; + int incY = -1; + double y_expected[] = { 0.745218, -0.60699, -0.37301, -0.983688 }; + cblas_zhpmv(order, uplo, N, alpha, A, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], dbleps, "zhpmv(case 1131) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], dbleps, "zhpmv(case 1131) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 122; + double alpha[2] = {1, 0}; + double beta[2] = {0, 1}; + int N = 2; + double A[] = { 0.543, -0.737, 0.281, -0.053, -0.098, -0.826 }; + double X[] = { 0.67, -0.857, -0.613, -0.927 }; + int incX = -1; + double Y[] = { -0.398, -0.934, -0.204, 0.183 }; + int incY = -1; + double y_expected[] = { 0.646956, -0.542012, -0.282168, -0.912668 }; + cblas_zhpmv(order, uplo, N, alpha, A, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], dbleps, "zhpmv(case 1132) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], dbleps, "zhpmv(case 1132) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 122; + double alpha[2] = {1, 0}; + double beta[2] = {0, 1}; + int N = 2; + double A[] = { 0.543, -0.737, 0.281, -0.053, -0.098, -0.826 }; + double X[] = { 0.67, -0.857, -0.613, -0.927 }; + int incX = -1; + double Y[] = { -0.398, -0.934, -0.204, 0.183 }; + int incY = -1; + double y_expected[] = { 0.646956, -0.542012, -0.282168, -0.912668 }; + cblas_zhpmv(order, uplo, N, alpha, A, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], dbleps, "zhpmv(case 1133) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], dbleps, "zhpmv(case 1133) imag"); + }; + }; + }; + + +} diff --git a/gsl-2.5/cblas/test_hpr.c b/gsl-2.5/cblas/test_hpr.c new file mode 100644 index 00000000..4682b948 --- /dev/null +++ b/gsl-2.5/cblas/test_hpr.c @@ -0,0 +1,171 @@ +#include +#include +#include +#include + +#include "tests.h" + +void +test_hpr (void) { +const double flteps = 1e-4, dbleps = 1e-6; + { + int order = 101; + int uplo = 121; + int N = 2; + float alpha = 0.1f; + float Ap[] = { -0.273f, -0.499f, -0.305f, -0.277f, 0.238f, -0.369f }; + float X[] = { 0.638f, -0.905f, 0.224f, 0.182f }; + int incX = -1; + float Ap_expected[] = { -0.26467f, 0.0f, -0.30718f, -0.245116f, 0.360607f, 0.0f }; + cblas_chpr(order, uplo, N, alpha, X, incX, Ap); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(Ap[2*i], Ap_expected[2*i], flteps, "chpr(case 1418) real"); + gsl_test_rel(Ap[2*i+1], Ap_expected[2*i+1], flteps, "chpr(case 1418) imag"); + }; + }; + }; + + + { + int order = 101; + int uplo = 122; + int N = 2; + float alpha = 0.1f; + float Ap[] = { -0.273f, -0.499f, -0.305f, -0.277f, 0.238f, -0.369f }; + float X[] = { 0.638f, -0.905f, 0.224f, 0.182f }; + int incX = -1; + float Ap_expected[] = { -0.26467f, 0.0f, -0.30718f, -0.308884f, 0.360607f, 0.0f }; + cblas_chpr(order, uplo, N, alpha, X, incX, Ap); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(Ap[2*i], Ap_expected[2*i], flteps, "chpr(case 1419) real"); + gsl_test_rel(Ap[2*i+1], Ap_expected[2*i+1], flteps, "chpr(case 1419) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 121; + int N = 2; + float alpha = 0.1f; + float Ap[] = { -0.273f, -0.499f, -0.305f, -0.277f, 0.238f, -0.369f }; + float X[] = { 0.638f, -0.905f, 0.224f, 0.182f }; + int incX = -1; + float Ap_expected[] = { -0.26467f, 0.0f, -0.30718f, -0.245116f, 0.360607f, 0.0f }; + cblas_chpr(order, uplo, N, alpha, X, incX, Ap); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(Ap[2*i], Ap_expected[2*i], flteps, "chpr(case 1420) real"); + gsl_test_rel(Ap[2*i+1], Ap_expected[2*i+1], flteps, "chpr(case 1420) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 122; + int N = 2; + float alpha = 0.1f; + float Ap[] = { -0.273f, -0.499f, -0.305f, -0.277f, 0.238f, -0.369f }; + float X[] = { 0.638f, -0.905f, 0.224f, 0.182f }; + int incX = -1; + float Ap_expected[] = { -0.26467f, 0.0f, -0.30718f, -0.308884f, 0.360607f, 0.0f }; + cblas_chpr(order, uplo, N, alpha, X, incX, Ap); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(Ap[2*i], Ap_expected[2*i], flteps, "chpr(case 1421) real"); + gsl_test_rel(Ap[2*i+1], Ap_expected[2*i+1], flteps, "chpr(case 1421) imag"); + }; + }; + }; + + + { + int order = 101; + int uplo = 121; + int N = 2; + double alpha = 1; + double Ap[] = { 0.265, 0.362, -0.855, 0.035, 0.136, 0.133 }; + double X[] = { -0.278, -0.686, -0.736, -0.918 }; + int incX = -1; + double Ap_expected[] = { 1.64942, 0.0, -0.020644, -0.214692, 0.68388, 0.0 }; + cblas_zhpr(order, uplo, N, alpha, X, incX, Ap); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(Ap[2*i], Ap_expected[2*i], dbleps, "zhpr(case 1422) real"); + gsl_test_rel(Ap[2*i+1], Ap_expected[2*i+1], dbleps, "zhpr(case 1422) imag"); + }; + }; + }; + + + { + int order = 101; + int uplo = 122; + int N = 2; + double alpha = 1; + double Ap[] = { 0.265, 0.362, -0.855, 0.035, 0.136, 0.133 }; + double X[] = { -0.278, -0.686, -0.736, -0.918 }; + int incX = -1; + double Ap_expected[] = { 1.64942, 0.0, -0.020644, 0.284692, 0.68388, 0.0 }; + cblas_zhpr(order, uplo, N, alpha, X, incX, Ap); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(Ap[2*i], Ap_expected[2*i], dbleps, "zhpr(case 1423) real"); + gsl_test_rel(Ap[2*i+1], Ap_expected[2*i+1], dbleps, "zhpr(case 1423) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 121; + int N = 2; + double alpha = 1; + double Ap[] = { 0.265, 0.362, -0.855, 0.035, 0.136, 0.133 }; + double X[] = { -0.278, -0.686, -0.736, -0.918 }; + int incX = -1; + double Ap_expected[] = { 1.64942, 0.0, -0.020644, -0.214692, 0.68388, 0.0 }; + cblas_zhpr(order, uplo, N, alpha, X, incX, Ap); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(Ap[2*i], Ap_expected[2*i], dbleps, "zhpr(case 1424) real"); + gsl_test_rel(Ap[2*i+1], Ap_expected[2*i+1], dbleps, "zhpr(case 1424) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 122; + int N = 2; + double alpha = 1; + double Ap[] = { 0.265, 0.362, -0.855, 0.035, 0.136, 0.133 }; + double X[] = { -0.278, -0.686, -0.736, -0.918 }; + int incX = -1; + double Ap_expected[] = { 1.64942, 0.0, -0.020644, 0.284692, 0.68388, 0.0 }; + cblas_zhpr(order, uplo, N, alpha, X, incX, Ap); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(Ap[2*i], Ap_expected[2*i], dbleps, "zhpr(case 1425) real"); + gsl_test_rel(Ap[2*i+1], Ap_expected[2*i+1], dbleps, "zhpr(case 1425) imag"); + }; + }; + }; + + +} diff --git a/gsl-2.5/cblas/test_hpr2.c b/gsl-2.5/cblas/test_hpr2.c new file mode 100644 index 00000000..7fb7dee7 --- /dev/null +++ b/gsl-2.5/cblas/test_hpr2.c @@ -0,0 +1,187 @@ +#include +#include +#include +#include + +#include "tests.h" + +void +test_hpr2 (void) { +const double flteps = 1e-4, dbleps = 1e-6; + { + int order = 101; + int uplo = 121; + int N = 1; + float alpha[2] = {-1.0f, 0.0f}; + float Ap[] = { 0.159f, -0.13f }; + float X[] = { 0.854f, 0.851f }; + int incX = -1; + float Y[] = { 0.526f, -0.267f }; + int incY = -1; + float Ap_expected[] = { -0.284974f, 0.0f }; + cblas_chpr2(order, uplo, N, alpha, X, incX, Y, incY, Ap); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Ap[2*i], Ap_expected[2*i], flteps, "chpr2(case 1458) real"); + gsl_test_rel(Ap[2*i+1], Ap_expected[2*i+1], flteps, "chpr2(case 1458) imag"); + }; + }; + }; + + + { + int order = 101; + int uplo = 122; + int N = 1; + float alpha[2] = {-1.0f, 0.0f}; + float Ap[] = { 0.159f, -0.13f }; + float X[] = { 0.854f, 0.851f }; + int incX = -1; + float Y[] = { 0.526f, -0.267f }; + int incY = -1; + float Ap_expected[] = { -0.284974f, 0.0f }; + cblas_chpr2(order, uplo, N, alpha, X, incX, Y, incY, Ap); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Ap[2*i], Ap_expected[2*i], flteps, "chpr2(case 1459) real"); + gsl_test_rel(Ap[2*i+1], Ap_expected[2*i+1], flteps, "chpr2(case 1459) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 121; + int N = 1; + float alpha[2] = {-1.0f, 0.0f}; + float Ap[] = { 0.159f, -0.13f }; + float X[] = { 0.854f, 0.851f }; + int incX = -1; + float Y[] = { 0.526f, -0.267f }; + int incY = -1; + float Ap_expected[] = { -0.284974f, 0.0f }; + cblas_chpr2(order, uplo, N, alpha, X, incX, Y, incY, Ap); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Ap[2*i], Ap_expected[2*i], flteps, "chpr2(case 1460) real"); + gsl_test_rel(Ap[2*i+1], Ap_expected[2*i+1], flteps, "chpr2(case 1460) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 122; + int N = 1; + float alpha[2] = {-1.0f, 0.0f}; + float Ap[] = { 0.159f, -0.13f }; + float X[] = { 0.854f, 0.851f }; + int incX = -1; + float Y[] = { 0.526f, -0.267f }; + int incY = -1; + float Ap_expected[] = { -0.284974f, 0.0f }; + cblas_chpr2(order, uplo, N, alpha, X, incX, Y, incY, Ap); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Ap[2*i], Ap_expected[2*i], flteps, "chpr2(case 1461) real"); + gsl_test_rel(Ap[2*i+1], Ap_expected[2*i+1], flteps, "chpr2(case 1461) imag"); + }; + }; + }; + + + { + int order = 101; + int uplo = 121; + int N = 1; + double alpha[2] = {-0.3, 0.1}; + double Ap[] = { 0.772, 0.997 }; + double X[] = { -0.173, -0.839 }; + int incX = -1; + double Y[] = { 0.941, -0.422 }; + int incY = -1; + double Ap_expected[] = { 0.829742, 0.0 }; + cblas_zhpr2(order, uplo, N, alpha, X, incX, Y, incY, Ap); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Ap[2*i], Ap_expected[2*i], dbleps, "zhpr2(case 1462) real"); + gsl_test_rel(Ap[2*i+1], Ap_expected[2*i+1], dbleps, "zhpr2(case 1462) imag"); + }; + }; + }; + + + { + int order = 101; + int uplo = 122; + int N = 1; + double alpha[2] = {-0.3, 0.1}; + double Ap[] = { 0.772, 0.997 }; + double X[] = { -0.173, -0.839 }; + int incX = -1; + double Y[] = { 0.941, -0.422 }; + int incY = -1; + double Ap_expected[] = { 0.829742, 0.0 }; + cblas_zhpr2(order, uplo, N, alpha, X, incX, Y, incY, Ap); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Ap[2*i], Ap_expected[2*i], dbleps, "zhpr2(case 1463) real"); + gsl_test_rel(Ap[2*i+1], Ap_expected[2*i+1], dbleps, "zhpr2(case 1463) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 121; + int N = 1; + double alpha[2] = {-0.3, 0.1}; + double Ap[] = { 0.772, 0.997 }; + double X[] = { -0.173, -0.839 }; + int incX = -1; + double Y[] = { 0.941, -0.422 }; + int incY = -1; + double Ap_expected[] = { 0.829742, 0.0 }; + cblas_zhpr2(order, uplo, N, alpha, X, incX, Y, incY, Ap); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Ap[2*i], Ap_expected[2*i], dbleps, "zhpr2(case 1464) real"); + gsl_test_rel(Ap[2*i+1], Ap_expected[2*i+1], dbleps, "zhpr2(case 1464) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 122; + int N = 1; + double alpha[2] = {-0.3, 0.1}; + double Ap[] = { 0.772, 0.997 }; + double X[] = { -0.173, -0.839 }; + int incX = -1; + double Y[] = { 0.941, -0.422 }; + int incY = -1; + double Ap_expected[] = { 0.829742, 0.0 }; + cblas_zhpr2(order, uplo, N, alpha, X, incX, Y, incY, Ap); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Ap[2*i], Ap_expected[2*i], dbleps, "zhpr2(case 1465) real"); + gsl_test_rel(Ap[2*i+1], Ap_expected[2*i+1], dbleps, "zhpr2(case 1465) imag"); + }; + }; + }; + + +} diff --git a/gsl-2.5/cblas/test_nrm2.c b/gsl-2.5/cblas/test_nrm2.c new file mode 100644 index 00000000..5c777f6b --- /dev/null +++ b/gsl-2.5/cblas/test_nrm2.c @@ -0,0 +1,143 @@ +#include +#include +#include +#include + +#include "tests.h" + +void +test_nrm2 (void) { +const double flteps = 1e-4, dbleps = 1e-6; + { + int N = 1; + float X[] = { 0.317f }; + int incX = -1; + float expected = 0.0f; + float f; + f = cblas_snrm2(N, X, incX); + gsl_test_rel(f, expected, flteps, "snrm2(case 28)"); + }; + + + { + int N = 1; + double X[] = { 0.071 }; + int incX = -1; + double expected = 0; + double f; + f = cblas_dnrm2(N, X, incX); + gsl_test_rel(f, expected, dbleps, "dnrm2(case 29)"); + }; + + + { + int N = 1; + float X[] = { 0.776f, 0.983f }; + int incX = -1; + float expected = 0.0f; + float f; + f = cblas_scnrm2(N, X, incX); + gsl_test_rel(f, expected, flteps, "scnrm2(case 30)"); + }; + + + { + int N = 1; + double X[] = { 0.549, -0.354 }; + int incX = -1; + double expected = 0; + double f; + f = cblas_dznrm2(N, X, incX); + gsl_test_rel(f, expected, dbleps, "dznrm2(case 31)"); + }; + + + { + int N = 2; + float X[] = { 0.14f, -0.632f }; + int incX = 1; + float expected = 0.647320631527f; + float f; + f = cblas_snrm2(N, X, incX); + gsl_test_rel(f, expected, flteps, "snrm2(case 32)"); + }; + + + { + int N = 2; + double X[] = { 0.696, -0.804 }; + int incX = 1; + double expected = 1.06340584915; + double f; + f = cblas_dnrm2(N, X, incX); + gsl_test_rel(f, expected, dbleps, "dnrm2(case 33)"); + }; + + + { + int N = 2; + float X[] = { 0.281f, -0.063f, 0.367f, 0.232f }; + int incX = 1; + float expected = 0.521001919382f; + float f; + f = cblas_scnrm2(N, X, incX); + gsl_test_rel(f, expected, flteps, "scnrm2(case 34)"); + }; + + + { + int N = 2; + double X[] = { -0.359, -0.76, -0.906, -0.108 }; + int incX = 1; + double expected = 1.24055672986; + double f; + f = cblas_dznrm2(N, X, incX); + gsl_test_rel(f, expected, dbleps, "dznrm2(case 35)"); + }; + + + { + int N = 2; + float X[] = { 0.918f, -0.126f }; + int incX = -1; + float expected = 0.0f; + float f; + f = cblas_snrm2(N, X, incX); + gsl_test_rel(f, expected, flteps, "snrm2(case 36)"); + }; + + + { + int N = 2; + double X[] = { 0.217, -0.588 }; + int incX = -1; + double expected = 0; + double f; + f = cblas_dnrm2(N, X, incX); + gsl_test_rel(f, expected, dbleps, "dnrm2(case 37)"); + }; + + + { + int N = 2; + float X[] = { 0.31f, 0.059f, -0.442f, 0.987f }; + int incX = -1; + float expected = 0.0f; + float f; + f = cblas_scnrm2(N, X, incX); + gsl_test_rel(f, expected, flteps, "scnrm2(case 38)"); + }; + + + { + int N = 2; + double X[] = { 0.609, 0.615, -0.143, -0.957 }; + int incX = -1; + double expected = 0; + double f; + f = cblas_dznrm2(N, X, incX); + gsl_test_rel(f, expected, dbleps, "dznrm2(case 39)"); + }; + + +} diff --git a/gsl-2.5/cblas/test_rot.c b/gsl-2.5/cblas/test_rot.c new file mode 100644 index 00000000..d2d6ed33 --- /dev/null +++ b/gsl-2.5/cblas/test_rot.c @@ -0,0 +1,635 @@ +#include +#include +#include +#include + +#include "tests.h" + +void +test_rot (void) { +const double flteps = 1e-4, dbleps = 1e-6; + { + int N = 1; + float c = 0.0f; + float s = 0.0f; + float X[] = { -0.314f }; + int incX = 1; + float Y[] = { -0.406f }; + int incY = -1; + float x_expected[] = { 0.0f }; + float y_expected[] = { 0.0f }; + cblas_srot(N, X, incX, Y, incY, c, s); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "srot(case 558)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "srot(case 559)"); + } + }; + }; + + + { + int N = 1; + float c = 0.866025403784f; + float s = 0.5f; + float X[] = { -0.314f }; + int incX = 1; + float Y[] = { -0.406f }; + int incY = -1; + float x_expected[] = { -0.474932f }; + float y_expected[] = { -0.194606f }; + cblas_srot(N, X, incX, Y, incY, c, s); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "srot(case 560)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "srot(case 561)"); + } + }; + }; + + + { + int N = 1; + float c = 0.0f; + float s = -1.0f; + float X[] = { -0.314f }; + int incX = 1; + float Y[] = { -0.406f }; + int incY = -1; + float x_expected[] = { 0.406f }; + float y_expected[] = { -0.314f }; + cblas_srot(N, X, incX, Y, incY, c, s); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "srot(case 562)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "srot(case 563)"); + } + }; + }; + + + { + int N = 1; + float c = -1.0f; + float s = 0.0f; + float X[] = { -0.314f }; + int incX = 1; + float Y[] = { -0.406f }; + int incY = -1; + float x_expected[] = { 0.314f }; + float y_expected[] = { 0.406f }; + cblas_srot(N, X, incX, Y, incY, c, s); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "srot(case 564)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "srot(case 565)"); + } + }; + }; + + + { + int N = 1; + double c = 0; + double s = 0; + double X[] = { -0.493 }; + int incX = 1; + double Y[] = { -0.014 }; + int incY = -1; + double x_expected[] = { 0.0 }; + double y_expected[] = { 0.0 }; + cblas_drot(N, X, incX, Y, incY, c, s); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "drot(case 566)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "drot(case 567)"); + } + }; + }; + + + { + int N = 1; + double c = 0.866025403784; + double s = 0.5; + double X[] = { -0.493 }; + int incX = 1; + double Y[] = { -0.014 }; + int incY = -1; + double x_expected[] = { -0.433950524066 }; + double y_expected[] = { 0.234375644347 }; + cblas_drot(N, X, incX, Y, incY, c, s); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "drot(case 568)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "drot(case 569)"); + } + }; + }; + + + { + int N = 1; + double c = 0; + double s = -1; + double X[] = { -0.493 }; + int incX = 1; + double Y[] = { -0.014 }; + int incY = -1; + double x_expected[] = { 0.014 }; + double y_expected[] = { -0.493 }; + cblas_drot(N, X, incX, Y, incY, c, s); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "drot(case 570)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "drot(case 571)"); + } + }; + }; + + + { + int N = 1; + double c = -1; + double s = 0; + double X[] = { -0.493 }; + int incX = 1; + double Y[] = { -0.014 }; + int incY = -1; + double x_expected[] = { 0.493 }; + double y_expected[] = { 0.014 }; + cblas_drot(N, X, incX, Y, incY, c, s); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "drot(case 572)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "drot(case 573)"); + } + }; + }; + + + { + int N = 1; + float c = 0.0f; + float s = 0.0f; + float X[] = { -0.808f }; + int incX = -1; + float Y[] = { -0.511f }; + int incY = 1; + float x_expected[] = { 0.0f }; + float y_expected[] = { 0.0f }; + cblas_srot(N, X, incX, Y, incY, c, s); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "srot(case 574)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "srot(case 575)"); + } + }; + }; + + + { + int N = 1; + float c = 0.866025403784f; + float s = 0.5f; + float X[] = { -0.808f }; + int incX = -1; + float Y[] = { -0.511f }; + int incY = 1; + float x_expected[] = { -0.955249f }; + float y_expected[] = { -0.038539f }; + cblas_srot(N, X, incX, Y, incY, c, s); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "srot(case 576)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "srot(case 577)"); + } + }; + }; + + + { + int N = 1; + float c = 0.0f; + float s = -1.0f; + float X[] = { -0.808f }; + int incX = -1; + float Y[] = { -0.511f }; + int incY = 1; + float x_expected[] = { 0.511f }; + float y_expected[] = { -0.808f }; + cblas_srot(N, X, incX, Y, incY, c, s); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "srot(case 578)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "srot(case 579)"); + } + }; + }; + + + { + int N = 1; + float c = -1.0f; + float s = 0.0f; + float X[] = { -0.808f }; + int incX = -1; + float Y[] = { -0.511f }; + int incY = 1; + float x_expected[] = { 0.808f }; + float y_expected[] = { 0.511f }; + cblas_srot(N, X, incX, Y, incY, c, s); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "srot(case 580)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "srot(case 581)"); + } + }; + }; + + + { + int N = 1; + double c = 0; + double s = 0; + double X[] = { -0.176 }; + int incX = -1; + double Y[] = { -0.165 }; + int incY = 1; + double x_expected[] = { 0.0 }; + double y_expected[] = { 0.0 }; + cblas_drot(N, X, incX, Y, incY, c, s); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "drot(case 582)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "drot(case 583)"); + } + }; + }; + + + { + int N = 1; + double c = 0.866025403784; + double s = 0.5; + double X[] = { -0.176 }; + int incX = -1; + double Y[] = { -0.165 }; + int incY = 1; + double x_expected[] = { -0.234920471066 }; + double y_expected[] = { -0.0548941916244 }; + cblas_drot(N, X, incX, Y, incY, c, s); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "drot(case 584)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "drot(case 585)"); + } + }; + }; + + + { + int N = 1; + double c = 0; + double s = -1; + double X[] = { -0.176 }; + int incX = -1; + double Y[] = { -0.165 }; + int incY = 1; + double x_expected[] = { 0.165 }; + double y_expected[] = { -0.176 }; + cblas_drot(N, X, incX, Y, incY, c, s); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "drot(case 586)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "drot(case 587)"); + } + }; + }; + + + { + int N = 1; + double c = -1; + double s = 0; + double X[] = { -0.176 }; + int incX = -1; + double Y[] = { -0.165 }; + int incY = 1; + double x_expected[] = { 0.176 }; + double y_expected[] = { 0.165 }; + cblas_drot(N, X, incX, Y, incY, c, s); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "drot(case 588)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "drot(case 589)"); + } + }; + }; + + + { + int N = 1; + float c = 0.0f; + float s = 0.0f; + float X[] = { -0.201f }; + int incX = -1; + float Y[] = { 0.087f }; + int incY = -1; + float x_expected[] = { 0.0f }; + float y_expected[] = { 0.0f }; + cblas_srot(N, X, incX, Y, incY, c, s); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "srot(case 590)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "srot(case 591)"); + } + }; + }; + + + { + int N = 1; + float c = 0.866025403784f; + float s = 0.5f; + float X[] = { -0.201f }; + int incX = -1; + float Y[] = { 0.087f }; + int incY = -1; + float x_expected[] = { -0.130571f }; + float y_expected[] = { 0.175844f }; + cblas_srot(N, X, incX, Y, incY, c, s); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "srot(case 592)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "srot(case 593)"); + } + }; + }; + + + { + int N = 1; + float c = 0.0f; + float s = -1.0f; + float X[] = { -0.201f }; + int incX = -1; + float Y[] = { 0.087f }; + int incY = -1; + float x_expected[] = { -0.087f }; + float y_expected[] = { -0.201f }; + cblas_srot(N, X, incX, Y, incY, c, s); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "srot(case 594)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "srot(case 595)"); + } + }; + }; + + + { + int N = 1; + float c = -1.0f; + float s = 0.0f; + float X[] = { -0.201f }; + int incX = -1; + float Y[] = { 0.087f }; + int incY = -1; + float x_expected[] = { 0.201f }; + float y_expected[] = { -0.087f }; + cblas_srot(N, X, incX, Y, incY, c, s); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "srot(case 596)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "srot(case 597)"); + } + }; + }; + + + { + int N = 1; + double c = 0; + double s = 0; + double X[] = { -0.464 }; + int incX = -1; + double Y[] = { 0.7 }; + int incY = -1; + double x_expected[] = { 0.0 }; + double y_expected[] = { 0.0 }; + cblas_drot(N, X, incX, Y, incY, c, s); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "drot(case 598)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "drot(case 599)"); + } + }; + }; + + + { + int N = 1; + double c = 0.866025403784; + double s = 0.5; + double X[] = { -0.464 }; + int incX = -1; + double Y[] = { 0.7 }; + int incY = -1; + double x_expected[] = { -0.051835787356 }; + double y_expected[] = { 0.838217782649 }; + cblas_drot(N, X, incX, Y, incY, c, s); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "drot(case 600)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "drot(case 601)"); + } + }; + }; + + + { + int N = 1; + double c = 0; + double s = -1; + double X[] = { -0.464 }; + int incX = -1; + double Y[] = { 0.7 }; + int incY = -1; + double x_expected[] = { -0.7 }; + double y_expected[] = { -0.464 }; + cblas_drot(N, X, incX, Y, incY, c, s); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "drot(case 602)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "drot(case 603)"); + } + }; + }; + + + { + int N = 1; + double c = -1; + double s = 0; + double X[] = { -0.464 }; + int incX = -1; + double Y[] = { 0.7 }; + int incY = -1; + double x_expected[] = { 0.464 }; + double y_expected[] = { -0.7 }; + cblas_drot(N, X, incX, Y, incY, c, s); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "drot(case 604)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "drot(case 605)"); + } + }; + }; + + +} diff --git a/gsl-2.5/cblas/test_rotg.c b/gsl-2.5/cblas/test_rotg.c new file mode 100644 index 00000000..a5a84d3c --- /dev/null +++ b/gsl-2.5/cblas/test_rotg.c @@ -0,0 +1,1677 @@ +#include +#include +#include +#include + +#include "tests.h" + +void +test_rotg (void) { +const double flteps = 1e-4, dbleps = 1e-6; + { + float a = -1.5f; + float b = -1.5f; + float c; + float s; + float r_expected = -2.12132034356f; + float z_expected = 1.41421356237f; + float c_expected = 0.707106781187f; + float s_expected = 0.707106781187f; + cblas_srotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, flteps, "srotg(case 166)"); + gsl_test_rel(b, z_expected, flteps, "srotg(case 167)"); + gsl_test_rel(c, c_expected, flteps, "srotg(case 168)"); + gsl_test_rel(s, s_expected, flteps, "srotg(case 169)"); + }; + + + { + float a = -1.5f; + float b = -1.0f; + float c; + float s; + float r_expected = -1.80277563773f; + float z_expected = 0.554700196225f; + float c_expected = 0.832050294338f; + float s_expected = 0.554700196225f; + cblas_srotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, flteps, "srotg(case 170)"); + gsl_test_rel(b, z_expected, flteps, "srotg(case 171)"); + gsl_test_rel(c, c_expected, flteps, "srotg(case 172)"); + gsl_test_rel(s, s_expected, flteps, "srotg(case 173)"); + }; + + + { + float a = -1.5f; + float b = -0.1f; + float c; + float s; + float r_expected = -1.50332963784f; + float z_expected = 0.0665190105238f; + float c_expected = 0.997785157857f; + float s_expected = 0.0665190105238f; + cblas_srotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, flteps, "srotg(case 174)"); + gsl_test_rel(b, z_expected, flteps, "srotg(case 175)"); + gsl_test_rel(c, c_expected, flteps, "srotg(case 176)"); + gsl_test_rel(s, s_expected, flteps, "srotg(case 177)"); + }; + + + { + float a = -1.5f; + float b = 0.0f; + float c; + float s; + float r_expected = -1.5f; + float z_expected = -0.0f; + float c_expected = 1.0f; + float s_expected = -0.0f; + cblas_srotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, flteps, "srotg(case 178)"); + gsl_test_rel(b, z_expected, flteps, "srotg(case 179)"); + gsl_test_rel(c, c_expected, flteps, "srotg(case 180)"); + gsl_test_rel(s, s_expected, flteps, "srotg(case 181)"); + }; + + + { + float a = -1.5f; + float b = 0.1f; + float c; + float s; + float r_expected = -1.50332963784f; + float z_expected = -0.0665190105238f; + float c_expected = 0.997785157857f; + float s_expected = -0.0665190105238f; + cblas_srotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, flteps, "srotg(case 182)"); + gsl_test_rel(b, z_expected, flteps, "srotg(case 183)"); + gsl_test_rel(c, c_expected, flteps, "srotg(case 184)"); + gsl_test_rel(s, s_expected, flteps, "srotg(case 185)"); + }; + + + { + float a = -1.5f; + float b = 1.0f; + float c; + float s; + float r_expected = -1.80277563773f; + float z_expected = -0.554700196225f; + float c_expected = 0.832050294338f; + float s_expected = -0.554700196225f; + cblas_srotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, flteps, "srotg(case 186)"); + gsl_test_rel(b, z_expected, flteps, "srotg(case 187)"); + gsl_test_rel(c, c_expected, flteps, "srotg(case 188)"); + gsl_test_rel(s, s_expected, flteps, "srotg(case 189)"); + }; + + + { + float a = -1.5f; + float b = 1.5f; + float c; + float s; + float r_expected = 2.12132034356f; + float z_expected = -1.41421356237f; + float c_expected = -0.707106781187f; + float s_expected = 0.707106781187f; + cblas_srotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, flteps, "srotg(case 190)"); + gsl_test_rel(b, z_expected, flteps, "srotg(case 191)"); + gsl_test_rel(c, c_expected, flteps, "srotg(case 192)"); + gsl_test_rel(s, s_expected, flteps, "srotg(case 193)"); + }; + + + { + float a = -1.0f; + float b = -1.5f; + float c; + float s; + float r_expected = -1.80277563773f; + float z_expected = 1.80277563773f; + float c_expected = 0.554700196225f; + float s_expected = 0.832050294338f; + cblas_srotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, flteps, "srotg(case 194)"); + gsl_test_rel(b, z_expected, flteps, "srotg(case 195)"); + gsl_test_rel(c, c_expected, flteps, "srotg(case 196)"); + gsl_test_rel(s, s_expected, flteps, "srotg(case 197)"); + }; + + + { + float a = -1.0f; + float b = -1.0f; + float c; + float s; + float r_expected = -1.41421356237f; + float z_expected = 1.41421356237f; + float c_expected = 0.707106781187f; + float s_expected = 0.707106781187f; + cblas_srotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, flteps, "srotg(case 198)"); + gsl_test_rel(b, z_expected, flteps, "srotg(case 199)"); + gsl_test_rel(c, c_expected, flteps, "srotg(case 200)"); + gsl_test_rel(s, s_expected, flteps, "srotg(case 201)"); + }; + + + { + float a = -1.0f; + float b = -0.1f; + float c; + float s; + float r_expected = -1.00498756211f; + float z_expected = 0.099503719021f; + float c_expected = 0.99503719021f; + float s_expected = 0.099503719021f; + cblas_srotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, flteps, "srotg(case 202)"); + gsl_test_rel(b, z_expected, flteps, "srotg(case 203)"); + gsl_test_rel(c, c_expected, flteps, "srotg(case 204)"); + gsl_test_rel(s, s_expected, flteps, "srotg(case 205)"); + }; + + + { + float a = -1.0f; + float b = 0.0f; + float c; + float s; + float r_expected = -1.0f; + float z_expected = -0.0f; + float c_expected = 1.0f; + float s_expected = -0.0f; + cblas_srotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, flteps, "srotg(case 206)"); + gsl_test_rel(b, z_expected, flteps, "srotg(case 207)"); + gsl_test_rel(c, c_expected, flteps, "srotg(case 208)"); + gsl_test_rel(s, s_expected, flteps, "srotg(case 209)"); + }; + + + { + float a = -1.0f; + float b = 0.1f; + float c; + float s; + float r_expected = -1.00498756211f; + float z_expected = -0.099503719021f; + float c_expected = 0.99503719021f; + float s_expected = -0.099503719021f; + cblas_srotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, flteps, "srotg(case 210)"); + gsl_test_rel(b, z_expected, flteps, "srotg(case 211)"); + gsl_test_rel(c, c_expected, flteps, "srotg(case 212)"); + gsl_test_rel(s, s_expected, flteps, "srotg(case 213)"); + }; + + + { + float a = -1.0f; + float b = 1.0f; + float c; + float s; + float r_expected = 1.41421356237f; + float z_expected = -1.41421356237f; + float c_expected = -0.707106781187f; + float s_expected = 0.707106781187f; + cblas_srotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, flteps, "srotg(case 214)"); + gsl_test_rel(b, z_expected, flteps, "srotg(case 215)"); + gsl_test_rel(c, c_expected, flteps, "srotg(case 216)"); + gsl_test_rel(s, s_expected, flteps, "srotg(case 217)"); + }; + + + { + float a = -1.0f; + float b = 1.5f; + float c; + float s; + float r_expected = 1.80277563773f; + float z_expected = -1.80277563773f; + float c_expected = -0.554700196225f; + float s_expected = 0.832050294338f; + cblas_srotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, flteps, "srotg(case 218)"); + gsl_test_rel(b, z_expected, flteps, "srotg(case 219)"); + gsl_test_rel(c, c_expected, flteps, "srotg(case 220)"); + gsl_test_rel(s, s_expected, flteps, "srotg(case 221)"); + }; + + + { + float a = -0.1f; + float b = -1.5f; + float c; + float s; + float r_expected = -1.50332963784f; + float z_expected = 15.0332963784f; + float c_expected = 0.0665190105238f; + float s_expected = 0.997785157857f; + cblas_srotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, flteps, "srotg(case 222)"); + gsl_test_rel(b, z_expected, flteps, "srotg(case 223)"); + gsl_test_rel(c, c_expected, flteps, "srotg(case 224)"); + gsl_test_rel(s, s_expected, flteps, "srotg(case 225)"); + }; + + + { + float a = -0.1f; + float b = -1.0f; + float c; + float s; + float r_expected = -1.00498756211f; + float z_expected = 10.0498756211f; + float c_expected = 0.099503719021f; + float s_expected = 0.99503719021f; + cblas_srotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, flteps, "srotg(case 226)"); + gsl_test_rel(b, z_expected, flteps, "srotg(case 227)"); + gsl_test_rel(c, c_expected, flteps, "srotg(case 228)"); + gsl_test_rel(s, s_expected, flteps, "srotg(case 229)"); + }; + + + { + float a = -0.1f; + float b = -0.1f; + float c; + float s; + float r_expected = -0.141421356237f; + float z_expected = 1.41421356237f; + float c_expected = 0.707106781187f; + float s_expected = 0.707106781187f; + cblas_srotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, flteps, "srotg(case 230)"); + gsl_test_rel(b, z_expected, flteps, "srotg(case 231)"); + gsl_test_rel(c, c_expected, flteps, "srotg(case 232)"); + gsl_test_rel(s, s_expected, flteps, "srotg(case 233)"); + }; + + + { + float a = -0.1f; + float b = 0.0f; + float c; + float s; + float r_expected = -0.1f; + float z_expected = -0.0f; + float c_expected = 1.0f; + float s_expected = -0.0f; + cblas_srotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, flteps, "srotg(case 234)"); + gsl_test_rel(b, z_expected, flteps, "srotg(case 235)"); + gsl_test_rel(c, c_expected, flteps, "srotg(case 236)"); + gsl_test_rel(s, s_expected, flteps, "srotg(case 237)"); + }; + + + { + float a = -0.1f; + float b = 0.1f; + float c; + float s; + float r_expected = 0.141421356237f; + float z_expected = -1.41421356237f; + float c_expected = -0.707106781187f; + float s_expected = 0.707106781187f; + cblas_srotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, flteps, "srotg(case 238)"); + gsl_test_rel(b, z_expected, flteps, "srotg(case 239)"); + gsl_test_rel(c, c_expected, flteps, "srotg(case 240)"); + gsl_test_rel(s, s_expected, flteps, "srotg(case 241)"); + }; + + + { + float a = -0.1f; + float b = 1.0f; + float c; + float s; + float r_expected = 1.00498756211f; + float z_expected = -10.0498756211f; + float c_expected = -0.099503719021f; + float s_expected = 0.99503719021f; + cblas_srotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, flteps, "srotg(case 242)"); + gsl_test_rel(b, z_expected, flteps, "srotg(case 243)"); + gsl_test_rel(c, c_expected, flteps, "srotg(case 244)"); + gsl_test_rel(s, s_expected, flteps, "srotg(case 245)"); + }; + + + { + float a = -0.1f; + float b = 1.5f; + float c; + float s; + float r_expected = 1.50332963784f; + float z_expected = -15.0332963784f; + float c_expected = -0.0665190105238f; + float s_expected = 0.997785157857f; + cblas_srotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, flteps, "srotg(case 246)"); + gsl_test_rel(b, z_expected, flteps, "srotg(case 247)"); + gsl_test_rel(c, c_expected, flteps, "srotg(case 248)"); + gsl_test_rel(s, s_expected, flteps, "srotg(case 249)"); + }; + + + { + float a = 0.0f; + float b = -1.5f; + float c; + float s; + float r_expected = -1.5f; + float z_expected = 1.0f; + float c_expected = -0.0f; + float s_expected = 1.0f; + cblas_srotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, flteps, "srotg(case 250)"); + gsl_test_rel(b, z_expected, flteps, "srotg(case 251)"); + gsl_test_rel(c, c_expected, flteps, "srotg(case 252)"); + gsl_test_rel(s, s_expected, flteps, "srotg(case 253)"); + }; + + + { + float a = 0.0f; + float b = -1.0f; + float c; + float s; + float r_expected = -1.0f; + float z_expected = 1.0f; + float c_expected = -0.0f; + float s_expected = 1.0f; + cblas_srotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, flteps, "srotg(case 254)"); + gsl_test_rel(b, z_expected, flteps, "srotg(case 255)"); + gsl_test_rel(c, c_expected, flteps, "srotg(case 256)"); + gsl_test_rel(s, s_expected, flteps, "srotg(case 257)"); + }; + + + { + float a = 0.0f; + float b = -0.1f; + float c; + float s; + float r_expected = -0.1f; + float z_expected = 1.0f; + float c_expected = -0.0f; + float s_expected = 1.0f; + cblas_srotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, flteps, "srotg(case 258)"); + gsl_test_rel(b, z_expected, flteps, "srotg(case 259)"); + gsl_test_rel(c, c_expected, flteps, "srotg(case 260)"); + gsl_test_rel(s, s_expected, flteps, "srotg(case 261)"); + }; + + + { + float a = 0.0f; + float b = 0.0f; + float c; + float s; + float r_expected = 0.0f; + float z_expected = 0.0f; + float c_expected = 1.0f; + float s_expected = 0.0f; + cblas_srotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, flteps, "srotg(case 262)"); + gsl_test_rel(b, z_expected, flteps, "srotg(case 263)"); + gsl_test_rel(c, c_expected, flteps, "srotg(case 264)"); + gsl_test_rel(s, s_expected, flteps, "srotg(case 265)"); + }; + + + { + float a = 0.0f; + float b = 0.1f; + float c; + float s; + float r_expected = 0.1f; + float z_expected = 1.0f; + float c_expected = 0.0f; + float s_expected = 1.0f; + cblas_srotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, flteps, "srotg(case 266)"); + gsl_test_rel(b, z_expected, flteps, "srotg(case 267)"); + gsl_test_rel(c, c_expected, flteps, "srotg(case 268)"); + gsl_test_rel(s, s_expected, flteps, "srotg(case 269)"); + }; + + + { + float a = 0.0f; + float b = 1.0f; + float c; + float s; + float r_expected = 1.0f; + float z_expected = 1.0f; + float c_expected = 0.0f; + float s_expected = 1.0f; + cblas_srotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, flteps, "srotg(case 270)"); + gsl_test_rel(b, z_expected, flteps, "srotg(case 271)"); + gsl_test_rel(c, c_expected, flteps, "srotg(case 272)"); + gsl_test_rel(s, s_expected, flteps, "srotg(case 273)"); + }; + + + { + float a = 0.0f; + float b = 1.5f; + float c; + float s; + float r_expected = 1.5f; + float z_expected = 1.0f; + float c_expected = 0.0f; + float s_expected = 1.0f; + cblas_srotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, flteps, "srotg(case 274)"); + gsl_test_rel(b, z_expected, flteps, "srotg(case 275)"); + gsl_test_rel(c, c_expected, flteps, "srotg(case 276)"); + gsl_test_rel(s, s_expected, flteps, "srotg(case 277)"); + }; + + + { + float a = 0.1f; + float b = -1.5f; + float c; + float s; + float r_expected = -1.50332963784f; + float z_expected = -15.0332963784f; + float c_expected = -0.0665190105238f; + float s_expected = 0.997785157857f; + cblas_srotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, flteps, "srotg(case 278)"); + gsl_test_rel(b, z_expected, flteps, "srotg(case 279)"); + gsl_test_rel(c, c_expected, flteps, "srotg(case 280)"); + gsl_test_rel(s, s_expected, flteps, "srotg(case 281)"); + }; + + + { + float a = 0.1f; + float b = -1.0f; + float c; + float s; + float r_expected = -1.00498756211f; + float z_expected = -10.0498756211f; + float c_expected = -0.099503719021f; + float s_expected = 0.99503719021f; + cblas_srotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, flteps, "srotg(case 282)"); + gsl_test_rel(b, z_expected, flteps, "srotg(case 283)"); + gsl_test_rel(c, c_expected, flteps, "srotg(case 284)"); + gsl_test_rel(s, s_expected, flteps, "srotg(case 285)"); + }; + + + { + float a = 0.1f; + float b = -0.1f; + float c; + float s; + float r_expected = -0.141421356237f; + float z_expected = -1.41421356237f; + float c_expected = -0.707106781187f; + float s_expected = 0.707106781187f; + cblas_srotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, flteps, "srotg(case 286)"); + gsl_test_rel(b, z_expected, flteps, "srotg(case 287)"); + gsl_test_rel(c, c_expected, flteps, "srotg(case 288)"); + gsl_test_rel(s, s_expected, flteps, "srotg(case 289)"); + }; + + + { + float a = 0.1f; + float b = 0.0f; + float c; + float s; + float r_expected = 0.1f; + float z_expected = 0.0f; + float c_expected = 1.0f; + float s_expected = 0.0f; + cblas_srotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, flteps, "srotg(case 290)"); + gsl_test_rel(b, z_expected, flteps, "srotg(case 291)"); + gsl_test_rel(c, c_expected, flteps, "srotg(case 292)"); + gsl_test_rel(s, s_expected, flteps, "srotg(case 293)"); + }; + + + { + float a = 0.1f; + float b = 0.1f; + float c; + float s; + float r_expected = 0.141421356237f; + float z_expected = 1.41421356237f; + float c_expected = 0.707106781187f; + float s_expected = 0.707106781187f; + cblas_srotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, flteps, "srotg(case 294)"); + gsl_test_rel(b, z_expected, flteps, "srotg(case 295)"); + gsl_test_rel(c, c_expected, flteps, "srotg(case 296)"); + gsl_test_rel(s, s_expected, flteps, "srotg(case 297)"); + }; + + + { + float a = 0.1f; + float b = 1.0f; + float c; + float s; + float r_expected = 1.00498756211f; + float z_expected = 10.0498756211f; + float c_expected = 0.099503719021f; + float s_expected = 0.99503719021f; + cblas_srotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, flteps, "srotg(case 298)"); + gsl_test_rel(b, z_expected, flteps, "srotg(case 299)"); + gsl_test_rel(c, c_expected, flteps, "srotg(case 300)"); + gsl_test_rel(s, s_expected, flteps, "srotg(case 301)"); + }; + + + { + float a = 0.1f; + float b = 1.5f; + float c; + float s; + float r_expected = 1.50332963784f; + float z_expected = 15.0332963784f; + float c_expected = 0.0665190105238f; + float s_expected = 0.997785157857f; + cblas_srotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, flteps, "srotg(case 302)"); + gsl_test_rel(b, z_expected, flteps, "srotg(case 303)"); + gsl_test_rel(c, c_expected, flteps, "srotg(case 304)"); + gsl_test_rel(s, s_expected, flteps, "srotg(case 305)"); + }; + + + { + float a = 1.0f; + float b = -1.5f; + float c; + float s; + float r_expected = -1.80277563773f; + float z_expected = -1.80277563773f; + float c_expected = -0.554700196225f; + float s_expected = 0.832050294338f; + cblas_srotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, flteps, "srotg(case 306)"); + gsl_test_rel(b, z_expected, flteps, "srotg(case 307)"); + gsl_test_rel(c, c_expected, flteps, "srotg(case 308)"); + gsl_test_rel(s, s_expected, flteps, "srotg(case 309)"); + }; + + + { + float a = 1.0f; + float b = -1.0f; + float c; + float s; + float r_expected = -1.41421356237f; + float z_expected = -1.41421356237f; + float c_expected = -0.707106781187f; + float s_expected = 0.707106781187f; + cblas_srotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, flteps, "srotg(case 310)"); + gsl_test_rel(b, z_expected, flteps, "srotg(case 311)"); + gsl_test_rel(c, c_expected, flteps, "srotg(case 312)"); + gsl_test_rel(s, s_expected, flteps, "srotg(case 313)"); + }; + + + { + float a = 1.0f; + float b = -0.1f; + float c; + float s; + float r_expected = 1.00498756211f; + float z_expected = -0.099503719021f; + float c_expected = 0.99503719021f; + float s_expected = -0.099503719021f; + cblas_srotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, flteps, "srotg(case 314)"); + gsl_test_rel(b, z_expected, flteps, "srotg(case 315)"); + gsl_test_rel(c, c_expected, flteps, "srotg(case 316)"); + gsl_test_rel(s, s_expected, flteps, "srotg(case 317)"); + }; + + + { + float a = 1.0f; + float b = 0.0f; + float c; + float s; + float r_expected = 1.0f; + float z_expected = 0.0f; + float c_expected = 1.0f; + float s_expected = 0.0f; + cblas_srotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, flteps, "srotg(case 318)"); + gsl_test_rel(b, z_expected, flteps, "srotg(case 319)"); + gsl_test_rel(c, c_expected, flteps, "srotg(case 320)"); + gsl_test_rel(s, s_expected, flteps, "srotg(case 321)"); + }; + + + { + float a = 1.0f; + float b = 0.1f; + float c; + float s; + float r_expected = 1.00498756211f; + float z_expected = 0.099503719021f; + float c_expected = 0.99503719021f; + float s_expected = 0.099503719021f; + cblas_srotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, flteps, "srotg(case 322)"); + gsl_test_rel(b, z_expected, flteps, "srotg(case 323)"); + gsl_test_rel(c, c_expected, flteps, "srotg(case 324)"); + gsl_test_rel(s, s_expected, flteps, "srotg(case 325)"); + }; + + + { + float a = 1.0f; + float b = 1.0f; + float c; + float s; + float r_expected = 1.41421356237f; + float z_expected = 1.41421356237f; + float c_expected = 0.707106781187f; + float s_expected = 0.707106781187f; + cblas_srotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, flteps, "srotg(case 326)"); + gsl_test_rel(b, z_expected, flteps, "srotg(case 327)"); + gsl_test_rel(c, c_expected, flteps, "srotg(case 328)"); + gsl_test_rel(s, s_expected, flteps, "srotg(case 329)"); + }; + + + { + float a = 1.0f; + float b = 1.5f; + float c; + float s; + float r_expected = 1.80277563773f; + float z_expected = 1.80277563773f; + float c_expected = 0.554700196225f; + float s_expected = 0.832050294338f; + cblas_srotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, flteps, "srotg(case 330)"); + gsl_test_rel(b, z_expected, flteps, "srotg(case 331)"); + gsl_test_rel(c, c_expected, flteps, "srotg(case 332)"); + gsl_test_rel(s, s_expected, flteps, "srotg(case 333)"); + }; + + + { + float a = 1.5f; + float b = -1.5f; + float c; + float s; + float r_expected = -2.12132034356f; + float z_expected = -1.41421356237f; + float c_expected = -0.707106781187f; + float s_expected = 0.707106781187f; + cblas_srotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, flteps, "srotg(case 334)"); + gsl_test_rel(b, z_expected, flteps, "srotg(case 335)"); + gsl_test_rel(c, c_expected, flteps, "srotg(case 336)"); + gsl_test_rel(s, s_expected, flteps, "srotg(case 337)"); + }; + + + { + float a = 1.5f; + float b = -1.0f; + float c; + float s; + float r_expected = 1.80277563773f; + float z_expected = -0.554700196225f; + float c_expected = 0.832050294338f; + float s_expected = -0.554700196225f; + cblas_srotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, flteps, "srotg(case 338)"); + gsl_test_rel(b, z_expected, flteps, "srotg(case 339)"); + gsl_test_rel(c, c_expected, flteps, "srotg(case 340)"); + gsl_test_rel(s, s_expected, flteps, "srotg(case 341)"); + }; + + + { + float a = 1.5f; + float b = -0.1f; + float c; + float s; + float r_expected = 1.50332963784f; + float z_expected = -0.0665190105238f; + float c_expected = 0.997785157857f; + float s_expected = -0.0665190105238f; + cblas_srotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, flteps, "srotg(case 342)"); + gsl_test_rel(b, z_expected, flteps, "srotg(case 343)"); + gsl_test_rel(c, c_expected, flteps, "srotg(case 344)"); + gsl_test_rel(s, s_expected, flteps, "srotg(case 345)"); + }; + + + { + float a = 1.5f; + float b = 0.0f; + float c; + float s; + float r_expected = 1.5f; + float z_expected = 0.0f; + float c_expected = 1.0f; + float s_expected = 0.0f; + cblas_srotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, flteps, "srotg(case 346)"); + gsl_test_rel(b, z_expected, flteps, "srotg(case 347)"); + gsl_test_rel(c, c_expected, flteps, "srotg(case 348)"); + gsl_test_rel(s, s_expected, flteps, "srotg(case 349)"); + }; + + + { + float a = 1.5f; + float b = 0.1f; + float c; + float s; + float r_expected = 1.50332963784f; + float z_expected = 0.0665190105238f; + float c_expected = 0.997785157857f; + float s_expected = 0.0665190105238f; + cblas_srotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, flteps, "srotg(case 350)"); + gsl_test_rel(b, z_expected, flteps, "srotg(case 351)"); + gsl_test_rel(c, c_expected, flteps, "srotg(case 352)"); + gsl_test_rel(s, s_expected, flteps, "srotg(case 353)"); + }; + + + { + float a = 1.5f; + float b = 1.0f; + float c; + float s; + float r_expected = 1.80277563773f; + float z_expected = 0.554700196225f; + float c_expected = 0.832050294338f; + float s_expected = 0.554700196225f; + cblas_srotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, flteps, "srotg(case 354)"); + gsl_test_rel(b, z_expected, flteps, "srotg(case 355)"); + gsl_test_rel(c, c_expected, flteps, "srotg(case 356)"); + gsl_test_rel(s, s_expected, flteps, "srotg(case 357)"); + }; + + + { + float a = 1.5f; + float b = 1.5f; + float c; + float s; + float r_expected = 2.12132034356f; + float z_expected = 1.41421356237f; + float c_expected = 0.707106781187f; + float s_expected = 0.707106781187f; + cblas_srotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, flteps, "srotg(case 358)"); + gsl_test_rel(b, z_expected, flteps, "srotg(case 359)"); + gsl_test_rel(c, c_expected, flteps, "srotg(case 360)"); + gsl_test_rel(s, s_expected, flteps, "srotg(case 361)"); + }; + + + { + double a = -1.5; + double b = -1.5; + double c; + double s; + double r_expected = -2.12132034356; + double z_expected = 1.41421356237; + double c_expected = 0.707106781187; + double s_expected = 0.707106781187; + cblas_drotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, dbleps, "drotg(case 362)"); + gsl_test_rel(b, z_expected, dbleps, "drotg(case 363)"); + gsl_test_rel(c, c_expected, dbleps, "drotg(case 364)"); + gsl_test_rel(s, s_expected, dbleps, "drotg(case 365)"); + }; + + + { + double a = -1.5; + double b = -1; + double c; + double s; + double r_expected = -1.80277563773; + double z_expected = 0.554700196225; + double c_expected = 0.832050294338; + double s_expected = 0.554700196225; + cblas_drotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, dbleps, "drotg(case 366)"); + gsl_test_rel(b, z_expected, dbleps, "drotg(case 367)"); + gsl_test_rel(c, c_expected, dbleps, "drotg(case 368)"); + gsl_test_rel(s, s_expected, dbleps, "drotg(case 369)"); + }; + + + { + double a = -1.5; + double b = -0.1; + double c; + double s; + double r_expected = -1.50332963784; + double z_expected = 0.0665190105238; + double c_expected = 0.997785157857; + double s_expected = 0.0665190105238; + cblas_drotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, dbleps, "drotg(case 370)"); + gsl_test_rel(b, z_expected, dbleps, "drotg(case 371)"); + gsl_test_rel(c, c_expected, dbleps, "drotg(case 372)"); + gsl_test_rel(s, s_expected, dbleps, "drotg(case 373)"); + }; + + + { + double a = -1.5; + double b = 0; + double c; + double s; + double r_expected = -1.5; + double z_expected = -0; + double c_expected = 1; + double s_expected = -0; + cblas_drotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, dbleps, "drotg(case 374)"); + gsl_test_rel(b, z_expected, dbleps, "drotg(case 375)"); + gsl_test_rel(c, c_expected, dbleps, "drotg(case 376)"); + gsl_test_rel(s, s_expected, dbleps, "drotg(case 377)"); + }; + + + { + double a = -1.5; + double b = 0.1; + double c; + double s; + double r_expected = -1.50332963784; + double z_expected = -0.0665190105238; + double c_expected = 0.997785157857; + double s_expected = -0.0665190105238; + cblas_drotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, dbleps, "drotg(case 378)"); + gsl_test_rel(b, z_expected, dbleps, "drotg(case 379)"); + gsl_test_rel(c, c_expected, dbleps, "drotg(case 380)"); + gsl_test_rel(s, s_expected, dbleps, "drotg(case 381)"); + }; + + + { + double a = -1.5; + double b = 1; + double c; + double s; + double r_expected = -1.80277563773; + double z_expected = -0.554700196225; + double c_expected = 0.832050294338; + double s_expected = -0.554700196225; + cblas_drotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, dbleps, "drotg(case 382)"); + gsl_test_rel(b, z_expected, dbleps, "drotg(case 383)"); + gsl_test_rel(c, c_expected, dbleps, "drotg(case 384)"); + gsl_test_rel(s, s_expected, dbleps, "drotg(case 385)"); + }; + + + { + double a = -1.5; + double b = 1.5; + double c; + double s; + double r_expected = 2.12132034356; + double z_expected = -1.41421356237; + double c_expected = -0.707106781187; + double s_expected = 0.707106781187; + cblas_drotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, dbleps, "drotg(case 386)"); + gsl_test_rel(b, z_expected, dbleps, "drotg(case 387)"); + gsl_test_rel(c, c_expected, dbleps, "drotg(case 388)"); + gsl_test_rel(s, s_expected, dbleps, "drotg(case 389)"); + }; + + + { + double a = -1; + double b = -1.5; + double c; + double s; + double r_expected = -1.80277563773; + double z_expected = 1.80277563773; + double c_expected = 0.554700196225; + double s_expected = 0.832050294338; + cblas_drotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, dbleps, "drotg(case 390)"); + gsl_test_rel(b, z_expected, dbleps, "drotg(case 391)"); + gsl_test_rel(c, c_expected, dbleps, "drotg(case 392)"); + gsl_test_rel(s, s_expected, dbleps, "drotg(case 393)"); + }; + + + { + double a = -1; + double b = -1; + double c; + double s; + double r_expected = -1.41421356237; + double z_expected = 1.41421356237; + double c_expected = 0.707106781187; + double s_expected = 0.707106781187; + cblas_drotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, dbleps, "drotg(case 394)"); + gsl_test_rel(b, z_expected, dbleps, "drotg(case 395)"); + gsl_test_rel(c, c_expected, dbleps, "drotg(case 396)"); + gsl_test_rel(s, s_expected, dbleps, "drotg(case 397)"); + }; + + + { + double a = -1; + double b = -0.1; + double c; + double s; + double r_expected = -1.00498756211; + double z_expected = 0.099503719021; + double c_expected = 0.99503719021; + double s_expected = 0.099503719021; + cblas_drotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, dbleps, "drotg(case 398)"); + gsl_test_rel(b, z_expected, dbleps, "drotg(case 399)"); + gsl_test_rel(c, c_expected, dbleps, "drotg(case 400)"); + gsl_test_rel(s, s_expected, dbleps, "drotg(case 401)"); + }; + + + { + double a = -1; + double b = 0; + double c; + double s; + double r_expected = -1; + double z_expected = -0; + double c_expected = 1; + double s_expected = -0; + cblas_drotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, dbleps, "drotg(case 402)"); + gsl_test_rel(b, z_expected, dbleps, "drotg(case 403)"); + gsl_test_rel(c, c_expected, dbleps, "drotg(case 404)"); + gsl_test_rel(s, s_expected, dbleps, "drotg(case 405)"); + }; + + + { + double a = -1; + double b = 0.1; + double c; + double s; + double r_expected = -1.00498756211; + double z_expected = -0.099503719021; + double c_expected = 0.99503719021; + double s_expected = -0.099503719021; + cblas_drotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, dbleps, "drotg(case 406)"); + gsl_test_rel(b, z_expected, dbleps, "drotg(case 407)"); + gsl_test_rel(c, c_expected, dbleps, "drotg(case 408)"); + gsl_test_rel(s, s_expected, dbleps, "drotg(case 409)"); + }; + + + { + double a = -1; + double b = 1; + double c; + double s; + double r_expected = 1.41421356237; + double z_expected = -1.41421356237; + double c_expected = -0.707106781187; + double s_expected = 0.707106781187; + cblas_drotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, dbleps, "drotg(case 410)"); + gsl_test_rel(b, z_expected, dbleps, "drotg(case 411)"); + gsl_test_rel(c, c_expected, dbleps, "drotg(case 412)"); + gsl_test_rel(s, s_expected, dbleps, "drotg(case 413)"); + }; + + + { + double a = -1; + double b = 1.5; + double c; + double s; + double r_expected = 1.80277563773; + double z_expected = -1.80277563773; + double c_expected = -0.554700196225; + double s_expected = 0.832050294338; + cblas_drotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, dbleps, "drotg(case 414)"); + gsl_test_rel(b, z_expected, dbleps, "drotg(case 415)"); + gsl_test_rel(c, c_expected, dbleps, "drotg(case 416)"); + gsl_test_rel(s, s_expected, dbleps, "drotg(case 417)"); + }; + + + { + double a = -0.1; + double b = -1.5; + double c; + double s; + double r_expected = -1.50332963784; + double z_expected = 15.0332963784; + double c_expected = 0.0665190105238; + double s_expected = 0.997785157857; + cblas_drotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, dbleps, "drotg(case 418)"); + gsl_test_rel(b, z_expected, dbleps, "drotg(case 419)"); + gsl_test_rel(c, c_expected, dbleps, "drotg(case 420)"); + gsl_test_rel(s, s_expected, dbleps, "drotg(case 421)"); + }; + + + { + double a = -0.1; + double b = -1; + double c; + double s; + double r_expected = -1.00498756211; + double z_expected = 10.0498756211; + double c_expected = 0.099503719021; + double s_expected = 0.99503719021; + cblas_drotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, dbleps, "drotg(case 422)"); + gsl_test_rel(b, z_expected, dbleps, "drotg(case 423)"); + gsl_test_rel(c, c_expected, dbleps, "drotg(case 424)"); + gsl_test_rel(s, s_expected, dbleps, "drotg(case 425)"); + }; + + + { + double a = -0.1; + double b = -0.1; + double c; + double s; + double r_expected = -0.141421356237; + double z_expected = 1.41421356237; + double c_expected = 0.707106781187; + double s_expected = 0.707106781187; + cblas_drotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, dbleps, "drotg(case 426)"); + gsl_test_rel(b, z_expected, dbleps, "drotg(case 427)"); + gsl_test_rel(c, c_expected, dbleps, "drotg(case 428)"); + gsl_test_rel(s, s_expected, dbleps, "drotg(case 429)"); + }; + + + { + double a = -0.1; + double b = 0; + double c; + double s; + double r_expected = -0.1; + double z_expected = -0; + double c_expected = 1; + double s_expected = -0; + cblas_drotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, dbleps, "drotg(case 430)"); + gsl_test_rel(b, z_expected, dbleps, "drotg(case 431)"); + gsl_test_rel(c, c_expected, dbleps, "drotg(case 432)"); + gsl_test_rel(s, s_expected, dbleps, "drotg(case 433)"); + }; + + + { + double a = -0.1; + double b = 0.1; + double c; + double s; + double r_expected = 0.141421356237; + double z_expected = -1.41421356237; + double c_expected = -0.707106781187; + double s_expected = 0.707106781187; + cblas_drotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, dbleps, "drotg(case 434)"); + gsl_test_rel(b, z_expected, dbleps, "drotg(case 435)"); + gsl_test_rel(c, c_expected, dbleps, "drotg(case 436)"); + gsl_test_rel(s, s_expected, dbleps, "drotg(case 437)"); + }; + + + { + double a = -0.1; + double b = 1; + double c; + double s; + double r_expected = 1.00498756211; + double z_expected = -10.0498756211; + double c_expected = -0.099503719021; + double s_expected = 0.99503719021; + cblas_drotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, dbleps, "drotg(case 438)"); + gsl_test_rel(b, z_expected, dbleps, "drotg(case 439)"); + gsl_test_rel(c, c_expected, dbleps, "drotg(case 440)"); + gsl_test_rel(s, s_expected, dbleps, "drotg(case 441)"); + }; + + + { + double a = -0.1; + double b = 1.5; + double c; + double s; + double r_expected = 1.50332963784; + double z_expected = -15.0332963784; + double c_expected = -0.0665190105238; + double s_expected = 0.997785157857; + cblas_drotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, dbleps, "drotg(case 442)"); + gsl_test_rel(b, z_expected, dbleps, "drotg(case 443)"); + gsl_test_rel(c, c_expected, dbleps, "drotg(case 444)"); + gsl_test_rel(s, s_expected, dbleps, "drotg(case 445)"); + }; + + + { + double a = 0; + double b = -1.5; + double c; + double s; + double r_expected = -1.5; + double z_expected = 1; + double c_expected = -0; + double s_expected = 1; + cblas_drotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, dbleps, "drotg(case 446)"); + gsl_test_rel(b, z_expected, dbleps, "drotg(case 447)"); + gsl_test_rel(c, c_expected, dbleps, "drotg(case 448)"); + gsl_test_rel(s, s_expected, dbleps, "drotg(case 449)"); + }; + + + { + double a = 0; + double b = -1; + double c; + double s; + double r_expected = -1; + double z_expected = 1; + double c_expected = -0; + double s_expected = 1; + cblas_drotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, dbleps, "drotg(case 450)"); + gsl_test_rel(b, z_expected, dbleps, "drotg(case 451)"); + gsl_test_rel(c, c_expected, dbleps, "drotg(case 452)"); + gsl_test_rel(s, s_expected, dbleps, "drotg(case 453)"); + }; + + + { + double a = 0; + double b = -0.1; + double c; + double s; + double r_expected = -0.1; + double z_expected = 1; + double c_expected = -0; + double s_expected = 1; + cblas_drotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, dbleps, "drotg(case 454)"); + gsl_test_rel(b, z_expected, dbleps, "drotg(case 455)"); + gsl_test_rel(c, c_expected, dbleps, "drotg(case 456)"); + gsl_test_rel(s, s_expected, dbleps, "drotg(case 457)"); + }; + + + { + double a = 0; + double b = 0; + double c; + double s; + double r_expected = 0; + double z_expected = 0; + double c_expected = 1; + double s_expected = 0; + cblas_drotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, dbleps, "drotg(case 458)"); + gsl_test_rel(b, z_expected, dbleps, "drotg(case 459)"); + gsl_test_rel(c, c_expected, dbleps, "drotg(case 460)"); + gsl_test_rel(s, s_expected, dbleps, "drotg(case 461)"); + }; + + + { + double a = 0; + double b = 0.1; + double c; + double s; + double r_expected = 0.1; + double z_expected = 1; + double c_expected = 0; + double s_expected = 1; + cblas_drotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, dbleps, "drotg(case 462)"); + gsl_test_rel(b, z_expected, dbleps, "drotg(case 463)"); + gsl_test_rel(c, c_expected, dbleps, "drotg(case 464)"); + gsl_test_rel(s, s_expected, dbleps, "drotg(case 465)"); + }; + + + { + double a = 0; + double b = 1; + double c; + double s; + double r_expected = 1; + double z_expected = 1; + double c_expected = 0; + double s_expected = 1; + cblas_drotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, dbleps, "drotg(case 466)"); + gsl_test_rel(b, z_expected, dbleps, "drotg(case 467)"); + gsl_test_rel(c, c_expected, dbleps, "drotg(case 468)"); + gsl_test_rel(s, s_expected, dbleps, "drotg(case 469)"); + }; + + + { + double a = 0; + double b = 1.5; + double c; + double s; + double r_expected = 1.5; + double z_expected = 1; + double c_expected = 0; + double s_expected = 1; + cblas_drotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, dbleps, "drotg(case 470)"); + gsl_test_rel(b, z_expected, dbleps, "drotg(case 471)"); + gsl_test_rel(c, c_expected, dbleps, "drotg(case 472)"); + gsl_test_rel(s, s_expected, dbleps, "drotg(case 473)"); + }; + + + { + double a = 0.1; + double b = -1.5; + double c; + double s; + double r_expected = -1.50332963784; + double z_expected = -15.0332963784; + double c_expected = -0.0665190105238; + double s_expected = 0.997785157857; + cblas_drotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, dbleps, "drotg(case 474)"); + gsl_test_rel(b, z_expected, dbleps, "drotg(case 475)"); + gsl_test_rel(c, c_expected, dbleps, "drotg(case 476)"); + gsl_test_rel(s, s_expected, dbleps, "drotg(case 477)"); + }; + + + { + double a = 0.1; + double b = -1; + double c; + double s; + double r_expected = -1.00498756211; + double z_expected = -10.0498756211; + double c_expected = -0.099503719021; + double s_expected = 0.99503719021; + cblas_drotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, dbleps, "drotg(case 478)"); + gsl_test_rel(b, z_expected, dbleps, "drotg(case 479)"); + gsl_test_rel(c, c_expected, dbleps, "drotg(case 480)"); + gsl_test_rel(s, s_expected, dbleps, "drotg(case 481)"); + }; + + + { + double a = 0.1; + double b = -0.1; + double c; + double s; + double r_expected = -0.141421356237; + double z_expected = -1.41421356237; + double c_expected = -0.707106781187; + double s_expected = 0.707106781187; + cblas_drotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, dbleps, "drotg(case 482)"); + gsl_test_rel(b, z_expected, dbleps, "drotg(case 483)"); + gsl_test_rel(c, c_expected, dbleps, "drotg(case 484)"); + gsl_test_rel(s, s_expected, dbleps, "drotg(case 485)"); + }; + + + { + double a = 0.1; + double b = 0; + double c; + double s; + double r_expected = 0.1; + double z_expected = 0; + double c_expected = 1; + double s_expected = 0; + cblas_drotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, dbleps, "drotg(case 486)"); + gsl_test_rel(b, z_expected, dbleps, "drotg(case 487)"); + gsl_test_rel(c, c_expected, dbleps, "drotg(case 488)"); + gsl_test_rel(s, s_expected, dbleps, "drotg(case 489)"); + }; + + + { + double a = 0.1; + double b = 0.1; + double c; + double s; + double r_expected = 0.141421356237; + double z_expected = 1.41421356237; + double c_expected = 0.707106781187; + double s_expected = 0.707106781187; + cblas_drotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, dbleps, "drotg(case 490)"); + gsl_test_rel(b, z_expected, dbleps, "drotg(case 491)"); + gsl_test_rel(c, c_expected, dbleps, "drotg(case 492)"); + gsl_test_rel(s, s_expected, dbleps, "drotg(case 493)"); + }; + + + { + double a = 0.1; + double b = 1; + double c; + double s; + double r_expected = 1.00498756211; + double z_expected = 10.0498756211; + double c_expected = 0.099503719021; + double s_expected = 0.99503719021; + cblas_drotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, dbleps, "drotg(case 494)"); + gsl_test_rel(b, z_expected, dbleps, "drotg(case 495)"); + gsl_test_rel(c, c_expected, dbleps, "drotg(case 496)"); + gsl_test_rel(s, s_expected, dbleps, "drotg(case 497)"); + }; + + + { + double a = 0.1; + double b = 1.5; + double c; + double s; + double r_expected = 1.50332963784; + double z_expected = 15.0332963784; + double c_expected = 0.0665190105238; + double s_expected = 0.997785157857; + cblas_drotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, dbleps, "drotg(case 498)"); + gsl_test_rel(b, z_expected, dbleps, "drotg(case 499)"); + gsl_test_rel(c, c_expected, dbleps, "drotg(case 500)"); + gsl_test_rel(s, s_expected, dbleps, "drotg(case 501)"); + }; + + + { + double a = 1; + double b = -1.5; + double c; + double s; + double r_expected = -1.80277563773; + double z_expected = -1.80277563773; + double c_expected = -0.554700196225; + double s_expected = 0.832050294338; + cblas_drotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, dbleps, "drotg(case 502)"); + gsl_test_rel(b, z_expected, dbleps, "drotg(case 503)"); + gsl_test_rel(c, c_expected, dbleps, "drotg(case 504)"); + gsl_test_rel(s, s_expected, dbleps, "drotg(case 505)"); + }; + + + { + double a = 1; + double b = -1; + double c; + double s; + double r_expected = -1.41421356237; + double z_expected = -1.41421356237; + double c_expected = -0.707106781187; + double s_expected = 0.707106781187; + cblas_drotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, dbleps, "drotg(case 506)"); + gsl_test_rel(b, z_expected, dbleps, "drotg(case 507)"); + gsl_test_rel(c, c_expected, dbleps, "drotg(case 508)"); + gsl_test_rel(s, s_expected, dbleps, "drotg(case 509)"); + }; + + + { + double a = 1; + double b = -0.1; + double c; + double s; + double r_expected = 1.00498756211; + double z_expected = -0.099503719021; + double c_expected = 0.99503719021; + double s_expected = -0.099503719021; + cblas_drotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, dbleps, "drotg(case 510)"); + gsl_test_rel(b, z_expected, dbleps, "drotg(case 511)"); + gsl_test_rel(c, c_expected, dbleps, "drotg(case 512)"); + gsl_test_rel(s, s_expected, dbleps, "drotg(case 513)"); + }; + + + { + double a = 1; + double b = 0; + double c; + double s; + double r_expected = 1; + double z_expected = 0; + double c_expected = 1; + double s_expected = 0; + cblas_drotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, dbleps, "drotg(case 514)"); + gsl_test_rel(b, z_expected, dbleps, "drotg(case 515)"); + gsl_test_rel(c, c_expected, dbleps, "drotg(case 516)"); + gsl_test_rel(s, s_expected, dbleps, "drotg(case 517)"); + }; + + + { + double a = 1; + double b = 0.1; + double c; + double s; + double r_expected = 1.00498756211; + double z_expected = 0.099503719021; + double c_expected = 0.99503719021; + double s_expected = 0.099503719021; + cblas_drotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, dbleps, "drotg(case 518)"); + gsl_test_rel(b, z_expected, dbleps, "drotg(case 519)"); + gsl_test_rel(c, c_expected, dbleps, "drotg(case 520)"); + gsl_test_rel(s, s_expected, dbleps, "drotg(case 521)"); + }; + + + { + double a = 1; + double b = 1; + double c; + double s; + double r_expected = 1.41421356237; + double z_expected = 1.41421356237; + double c_expected = 0.707106781187; + double s_expected = 0.707106781187; + cblas_drotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, dbleps, "drotg(case 522)"); + gsl_test_rel(b, z_expected, dbleps, "drotg(case 523)"); + gsl_test_rel(c, c_expected, dbleps, "drotg(case 524)"); + gsl_test_rel(s, s_expected, dbleps, "drotg(case 525)"); + }; + + + { + double a = 1; + double b = 1.5; + double c; + double s; + double r_expected = 1.80277563773; + double z_expected = 1.80277563773; + double c_expected = 0.554700196225; + double s_expected = 0.832050294338; + cblas_drotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, dbleps, "drotg(case 526)"); + gsl_test_rel(b, z_expected, dbleps, "drotg(case 527)"); + gsl_test_rel(c, c_expected, dbleps, "drotg(case 528)"); + gsl_test_rel(s, s_expected, dbleps, "drotg(case 529)"); + }; + + + { + double a = 1.5; + double b = -1.5; + double c; + double s; + double r_expected = -2.12132034356; + double z_expected = -1.41421356237; + double c_expected = -0.707106781187; + double s_expected = 0.707106781187; + cblas_drotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, dbleps, "drotg(case 530)"); + gsl_test_rel(b, z_expected, dbleps, "drotg(case 531)"); + gsl_test_rel(c, c_expected, dbleps, "drotg(case 532)"); + gsl_test_rel(s, s_expected, dbleps, "drotg(case 533)"); + }; + + + { + double a = 1.5; + double b = -1; + double c; + double s; + double r_expected = 1.80277563773; + double z_expected = -0.554700196225; + double c_expected = 0.832050294338; + double s_expected = -0.554700196225; + cblas_drotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, dbleps, "drotg(case 534)"); + gsl_test_rel(b, z_expected, dbleps, "drotg(case 535)"); + gsl_test_rel(c, c_expected, dbleps, "drotg(case 536)"); + gsl_test_rel(s, s_expected, dbleps, "drotg(case 537)"); + }; + + + { + double a = 1.5; + double b = -0.1; + double c; + double s; + double r_expected = 1.50332963784; + double z_expected = -0.0665190105238; + double c_expected = 0.997785157857; + double s_expected = -0.0665190105238; + cblas_drotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, dbleps, "drotg(case 538)"); + gsl_test_rel(b, z_expected, dbleps, "drotg(case 539)"); + gsl_test_rel(c, c_expected, dbleps, "drotg(case 540)"); + gsl_test_rel(s, s_expected, dbleps, "drotg(case 541)"); + }; + + + { + double a = 1.5; + double b = 0; + double c; + double s; + double r_expected = 1.5; + double z_expected = 0; + double c_expected = 1; + double s_expected = 0; + cblas_drotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, dbleps, "drotg(case 542)"); + gsl_test_rel(b, z_expected, dbleps, "drotg(case 543)"); + gsl_test_rel(c, c_expected, dbleps, "drotg(case 544)"); + gsl_test_rel(s, s_expected, dbleps, "drotg(case 545)"); + }; + + + { + double a = 1.5; + double b = 0.1; + double c; + double s; + double r_expected = 1.50332963784; + double z_expected = 0.0665190105238; + double c_expected = 0.997785157857; + double s_expected = 0.0665190105238; + cblas_drotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, dbleps, "drotg(case 546)"); + gsl_test_rel(b, z_expected, dbleps, "drotg(case 547)"); + gsl_test_rel(c, c_expected, dbleps, "drotg(case 548)"); + gsl_test_rel(s, s_expected, dbleps, "drotg(case 549)"); + }; + + + { + double a = 1.5; + double b = 1; + double c; + double s; + double r_expected = 1.80277563773; + double z_expected = 0.554700196225; + double c_expected = 0.832050294338; + double s_expected = 0.554700196225; + cblas_drotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, dbleps, "drotg(case 550)"); + gsl_test_rel(b, z_expected, dbleps, "drotg(case 551)"); + gsl_test_rel(c, c_expected, dbleps, "drotg(case 552)"); + gsl_test_rel(s, s_expected, dbleps, "drotg(case 553)"); + }; + + + { + double a = 1.5; + double b = 1.5; + double c; + double s; + double r_expected = 2.12132034356; + double z_expected = 1.41421356237; + double c_expected = 0.707106781187; + double s_expected = 0.707106781187; + cblas_drotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, dbleps, "drotg(case 554)"); + gsl_test_rel(b, z_expected, dbleps, "drotg(case 555)"); + gsl_test_rel(c, c_expected, dbleps, "drotg(case 556)"); + gsl_test_rel(s, s_expected, dbleps, "drotg(case 557)"); + }; + + +} diff --git a/gsl-2.5/cblas/test_rotm.c b/gsl-2.5/cblas/test_rotm.c new file mode 100644 index 00000000..98783c59 --- /dev/null +++ b/gsl-2.5/cblas/test_rotm.c @@ -0,0 +1,1511 @@ +#include +#include +#include +#include + +#include "tests.h" + +void +test_rotm (void) { +const double flteps = 1e-4, dbleps = 1e-6; + { + int N = 1; + float h[] = { -1.0f, -4.44982e+03f, -15.5826f, 7.091334e+04f, 2.95912e+04f }; + float X[] = { -0.034f }; + int incX = 1; + float Y[] = { -0.56f }; + int incY = -1; + float x_expected[] = { -3.956017e+04f }; + float y_expected[] = { -1.657054e+04f }; + cblas_srotm(N, X, incX, Y, incY, h); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "srotm(case 654)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "srotm(case 655)"); + } + }; + }; + + + { + int N = 1; + float h[] = { 0.0f, 15.9728f, 6.400638e+03f, 1.733082e-05f, 1.524511e-04f }; + float X[] = { -0.034f }; + int incX = 1; + float Y[] = { -0.56f }; + int incY = -1; + float x_expected[] = { -0.0340097f }; + float y_expected[] = { -218.182f }; + cblas_srotm(N, X, incX, Y, incY, h); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "srotm(case 656)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "srotm(case 657)"); + } + }; + }; + + + { + int N = 1; + float h[] = { 1.0f, 5.688411e+04f, 5.914789e+03f, 0.00210473f, 0.0231019f }; + float X[] = { -0.034f }; + int incX = 1; + float Y[] = { -0.56f }; + int incY = -1; + float x_expected[] = { -1.93462e+03f }; + float y_expected[] = { 0.0210629f }; + cblas_srotm(N, X, incX, Y, incY, h); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "srotm(case 658)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "srotm(case 659)"); + } + }; + }; + + + { + int N = 1; + float h[] = { -2.0f, -0.582083f, 0.00103161f, -3.429851e-05f, 7.411469e-05f }; + float X[] = { -0.034f }; + int incX = 1; + float Y[] = { -0.56f }; + int incY = -1; + float x_expected[] = { -0.034f }; + float y_expected[] = { -0.56f }; + cblas_srotm(N, X, incX, Y, incY, h); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "srotm(case 660)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "srotm(case 661)"); + } + }; + }; + + + { + int N = 1; + float h[] = { -1.0f, 115.163f, -6.715448e+04f, -258.695f, -16.2552f }; + float X[] = { -0.034f }; + int incX = 1; + float Y[] = { -0.56f }; + int incY = -1; + float x_expected[] = { 140.954f }; + float y_expected[] = { 2.292355e+03f }; + cblas_srotm(N, X, incX, Y, incY, h); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "srotm(case 662)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "srotm(case 663)"); + } + }; + }; + + + { + int N = 1; + float h[] = { 0.0f, -3.314862e+03f, -442.976f, -214.586f, -25.9716f }; + float X[] = { -0.034f }; + int incX = 1; + float Y[] = { -0.56f }; + int incY = -1; + float x_expected[] = { 120.134f }; + float y_expected[] = { 14.5012f }; + cblas_srotm(N, X, incX, Y, incY, h); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "srotm(case 664)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "srotm(case 665)"); + } + }; + }; + + + { + int N = 1; + float h[] = { 1.0f, -1.177304e+03f, -1.236662e-04f, -0.186585f, 1.15841f }; + float X[] = { -0.034f }; + int incX = 1; + float Y[] = { -0.56f }; + int incY = -1; + float x_expected[] = { 39.4683f }; + float y_expected[] = { -0.614711f }; + cblas_srotm(N, X, incX, Y, incY, h); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "srotm(case 666)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "srotm(case 667)"); + } + }; + }; + + + { + int N = 1; + float h[] = { -2.0f, -88.9796f, 0.808226f, 1.106582e-05f, -0.00862288f }; + float X[] = { -0.034f }; + int incX = 1; + float Y[] = { -0.56f }; + int incY = -1; + float x_expected[] = { -0.034f }; + float y_expected[] = { -0.56f }; + cblas_srotm(N, X, incX, Y, incY, h); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "srotm(case 668)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "srotm(case 669)"); + } + }; + }; + + + { + int N = 1; + float h[] = { -1.0f, -0.00225865f, 8.338551e+04f, -1.98282f, -2.409905e-05f }; + float X[] = { -0.034f }; + int incX = 1; + float Y[] = { -0.56f }; + int incY = -1; + float x_expected[] = { 1.11046f }; + float y_expected[] = { -2.835107e+03f }; + cblas_srotm(N, X, incX, Y, incY, h); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "srotm(case 670)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "srotm(case 671)"); + } + }; + }; + + + { + int N = 1; + float h[] = { 0.0f, 0.258779f, 74.2802f, 0.923299f, 4.847128e+03f }; + float X[] = { -0.034f }; + int incX = 1; + float Y[] = { -0.56f }; + int incY = -1; + float x_expected[] = { -0.551048f }; + float y_expected[] = { -3.08553f }; + cblas_srotm(N, X, incX, Y, incY, h); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "srotm(case 672)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "srotm(case 673)"); + } + }; + }; + + + { + int N = 1; + double h[] = { -1.0, -8.00850735044, 0.0204647351647, 1.898461360078e-04, -4.32701487194 }; + double X[] = { 0.84 }; + int incX = 1; + double Y[] = { -0.711 }; + int incY = -1; + double x_expected[] = { -6.72728115497 }; + double y_expected[] = { 3.09369795149 }; + cblas_drotm(N, X, incX, Y, incY, h); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "drotm(case 674)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "drotm(case 675)"); + } + }; + }; + + + { + int N = 1; + double h[] = { 0.0, 1.230610998905e+04, 210.056650134, 9.20757074452, 2.072879691524e+03 }; + double X[] = { 0.84 }; + int incX = 1; + double Y[] = { -0.711 }; + int incY = -1; + double x_expected[] = { -5.70658279935 }; + double y_expected[] = { 175.736586112 }; + cblas_drotm(N, X, incX, Y, incY, h); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "drotm(case 676)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "drotm(case 677)"); + } + }; + }; + + + { + int N = 1; + double h[] = { 1.0, -1.244580625511e+03, 1.11154682624, 2.269384716089e-05, -0.0143785338883 }; + double X[] = { 0.84 }; + int incX = 1; + double Y[] = { -0.711 }; + int incY = -1; + double x_expected[] = { -1.046158725429e+03 }; + double y_expected[] = { -0.829776862405 }; + cblas_drotm(N, X, incX, Y, incY, h); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "drotm(case 678)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "drotm(case 679)"); + } + }; + }; + + + { + int N = 1; + double h[] = { -2.0, 293.927527276, -2.614737743134e+03, 10.3164975867, -7.947030813329e+03 }; + double X[] = { 0.84 }; + int incX = 1; + double Y[] = { -0.711 }; + int incY = -1; + double x_expected[] = { 0.84 }; + double y_expected[] = { -0.711 }; + cblas_drotm(N, X, incX, Y, incY, h); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "drotm(case 680)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "drotm(case 681)"); + } + }; + }; + + + { + int N = 1; + double h[] = { -1.0, -0.0178609251786, 0.00983044958941, 105.944529127, 1.687350579234e-05 }; + double X[] = { 0.84 }; + int incX = 1; + double Y[] = { -0.711 }; + int incY = -1; + double x_expected[] = { -75.3415633866 }; + double y_expected[] = { 0.00824558059248 }; + cblas_drotm(N, X, incX, Y, incY, h); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "drotm(case 682)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "drotm(case 683)"); + } + }; + }; + + + { + int N = 1; + double h[] = { 0.0, 6.241999071283e-05, 2.495425882445e+03, 304.604891146, 1.604644714854e+04 }; + double X[] = { 0.84 }; + int incX = 1; + double Y[] = { -0.711 }; + int incY = -1; + double x_expected[] = { -215.734077605 }; + double y_expected[] = { 2.095446741254e+03 }; + cblas_drotm(N, X, incX, Y, incY, h); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "drotm(case 684)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "drotm(case 685)"); + } + }; + }; + + + { + int N = 1; + double h[] = { 1.0, -0.058097639487, 8.386083625428e+03, -10.5233229994, 184.653245391 }; + double X[] = { 0.84 }; + int incX = 1; + double Y[] = { -0.711 }; + int incY = -1; + double x_expected[] = { -0.759802017169 }; + double y_expected[] = { -132.128457473 }; + cblas_drotm(N, X, incX, Y, incY, h); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "drotm(case 686)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "drotm(case 687)"); + } + }; + }; + + + { + int N = 1; + double h[] = { -2.0, -92.8754629217, 1.467547244529e-04, -3.197881072301e-04, -1.89874629713 }; + double X[] = { 0.84 }; + int incX = 1; + double Y[] = { -0.711 }; + int incY = -1; + double x_expected[] = { 0.84 }; + double y_expected[] = { -0.711 }; + cblas_drotm(N, X, incX, Y, incY, h); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "drotm(case 688)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "drotm(case 689)"); + } + }; + }; + + + { + int N = 1; + double h[] = { -1.0, -0.0961996230646, -2.248344186185e-05, -316.856396787, 1.663969157848e+03 }; + double X[] = { 0.84 }; + int incX = 1; + double Y[] = { -0.711 }; + int incY = -1; + double x_expected[] = { 225.204090432 }; + double y_expected[] = { -1.183082090116e+03 }; + cblas_drotm(N, X, incX, Y, incY, h); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "drotm(case 690)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "drotm(case 691)"); + } + }; + }; + + + { + int N = 1; + double h[] = { 0.0, -201.862043128, 4.999906166451e-04, -0.0653365534487, 586.454083328 }; + double X[] = { 0.84 }; + int incX = 1; + double Y[] = { -0.711 }; + int incY = -1; + double x_expected[] = { 0.886454289502 }; + double y_expected[] = { -0.710580007882 }; + cblas_drotm(N, X, incX, Y, incY, h); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "drotm(case 692)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "drotm(case 693)"); + } + }; + }; + + + { + int N = 1; + float h[] = { -1.0f, 162.86f, 1.379231e-04f, 9.67285f, 0.929218f }; + float X[] = { 0.629f }; + int incX = -1; + float Y[] = { 0.386f }; + int incY = 1; + float x_expected[] = { 106.173f }; + float y_expected[] = { 0.358765f }; + cblas_srotm(N, X, incX, Y, incY, h); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "srotm(case 694)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "srotm(case 695)"); + } + }; + }; + + + { + int N = 1; + float h[] = { 0.0f, 537.387f, -21.6404f, -1.017074e+03f, -1.730546e-05f }; + float X[] = { 0.629f }; + int incX = -1; + float Y[] = { 0.386f }; + int incY = 1; + float x_expected[] = { -391.961f }; + float y_expected[] = { -13.2258f }; + cblas_srotm(N, X, incX, Y, incY, h); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "srotm(case 696)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "srotm(case 697)"); + } + }; + }; + + + { + int N = 1; + float h[] = { 1.0f, -1.339977e-05f, 0.00522784f, 2.020352e-05f, -0.0654088f }; + float X[] = { 0.629f }; + int incX = -1; + float Y[] = { 0.386f }; + int incY = 1; + float x_expected[] = { 0.385992f }; + float y_expected[] = { -0.654248f }; + cblas_srotm(N, X, incX, Y, incY, h); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "srotm(case 698)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "srotm(case 699)"); + } + }; + }; + + + { + int N = 1; + float h[] = { -2.0f, -50.922f, 31.5261f, -0.194913f, 0.206417f }; + float X[] = { 0.629f }; + int incX = -1; + float Y[] = { 0.386f }; + int incY = 1; + float x_expected[] = { 0.629f }; + float y_expected[] = { 0.386f }; + cblas_srotm(N, X, incX, Y, incY, h); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "srotm(case 700)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "srotm(case 701)"); + } + }; + }; + + + { + int N = 1; + float h[] = { -1.0f, 1.15659f, 2.599832e+04f, 435.891f, 1.546671e+03f }; + float X[] = { 0.629f }; + int incX = -1; + float Y[] = { 0.386f }; + int incY = 1; + float x_expected[] = { 168.981f }; + float y_expected[] = { 1.694996e+04f }; + cblas_srotm(N, X, incX, Y, incY, h); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "srotm(case 702)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "srotm(case 703)"); + } + }; + }; + + + { + int N = 1; + float h[] = { 0.0f, 3.359889e-04f, -0.00134822f, -12.9136f, -5.655622e+04f }; + float X[] = { 0.629f }; + int incX = -1; + float Y[] = { 0.386f }; + int incY = 1; + float x_expected[] = { -4.35566f }; + float y_expected[] = { 0.385152f }; + cblas_srotm(N, X, incX, Y, incY, h); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "srotm(case 704)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "srotm(case 705)"); + } + }; + }; + + + { + int N = 1; + float h[] = { 1.0f, 2.75119e-05f, 1.70314f, 18.4063f, 185.731f }; + float X[] = { 0.629f }; + int incX = -1; + float Y[] = { 0.386f }; + int incY = 1; + float x_expected[] = { 0.386017f }; + float y_expected[] = { 71.063f }; + cblas_srotm(N, X, incX, Y, incY, h); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "srotm(case 706)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "srotm(case 707)"); + } + }; + }; + + + { + int N = 1; + float h[] = { -2.0f, -1.031009e-04f, -3.378602e+04f, 7.869358e-05f, 157.303f }; + float X[] = { 0.629f }; + int incX = -1; + float Y[] = { 0.386f }; + int incY = 1; + float x_expected[] = { 0.629f }; + float y_expected[] = { 0.386f }; + cblas_srotm(N, X, incX, Y, incY, h); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "srotm(case 708)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "srotm(case 709)"); + } + }; + }; + + + { + int N = 1; + float h[] = { -1.0f, 0.00207419f, -89.9374f, -1.40414f, -25.1433f }; + float X[] = { 0.629f }; + int incX = -1; + float Y[] = { 0.386f }; + int incY = 1; + float x_expected[] = { -0.540694f }; + float y_expected[] = { -66.276f }; + cblas_srotm(N, X, incX, Y, incY, h); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "srotm(case 710)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "srotm(case 711)"); + } + }; + }; + + + { + int N = 1; + float h[] = { 0.0f, -4.972562e+04f, 3.65698e-05f, 632.116f, 0.195207f }; + float X[] = { 0.629f }; + int incX = -1; + float Y[] = { 0.386f }; + int incY = 1; + float x_expected[] = { 244.626f }; + float y_expected[] = { 0.386023f }; + cblas_srotm(N, X, incX, Y, incY, h); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "srotm(case 712)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "srotm(case 713)"); + } + }; + }; + + + { + int N = 1; + double h[] = { -1.0, 8.64768339859, -105.906731008, -347.053994991, -1.28802789909 }; + double X[] = { -0.674 }; + int incX = -1; + double Y[] = { -0.645 }; + int incY = 1; + double x_expected[] = { 218.021288159 }; + double y_expected[] = { 72.2119146942 }; + cblas_drotm(N, X, incX, Y, incY, h); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "drotm(case 714)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "drotm(case 715)"); + } + }; + }; + + + { + int N = 1; + double h[] = { 0.0, 0.926057152065, 3.315158944851e-04, -1.203638835886e+03, 0.00197484344868 }; + double X[] = { -0.674 }; + int incX = -1; + double Y[] = { -0.645 }; + int incY = 1; + double x_expected[] = { 775.673049147 }; + double y_expected[] = { -0.645223441713 }; + cblas_drotm(N, X, incX, Y, incY, h); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "drotm(case 716)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "drotm(case 717)"); + } + }; + }; + + + { + int N = 1; + double h[] = { 1.0, -9.404298701289e-05, -0.00380843381223, -0.0767212569647, -3.66628238398 }; + double X[] = { -0.674 }; + int incX = -1; + double Y[] = { -0.645 }; + int incY = 1; + double x_expected[] = { -0.644936615027 }; + double y_expected[] = { 3.03875213767 }; + cblas_drotm(N, X, incX, Y, incY, h); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "drotm(case 718)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "drotm(case 719)"); + } + }; + }; + + + { + int N = 1; + double h[] = { -2.0, 0.0900662226146, 0.00250500071094, 6.46624826995, -2.159443948633e-05 }; + double X[] = { -0.674 }; + int incX = -1; + double Y[] = { -0.645 }; + int incY = 1; + double x_expected[] = { -0.674 }; + double y_expected[] = { -0.645 }; + cblas_drotm(N, X, incX, Y, incY, h); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "drotm(case 720)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "drotm(case 721)"); + } + }; + }; + + + { + int N = 1; + double h[] = { -1.0, 8.011686652935e+03, -23.8989526115, -1.104879849207e+04, 0.108740065261 }; + double X[] = { -0.674 }; + int incX = -1; + double Y[] = { -0.645 }; + int incY = 1; + double x_expected[] = { 1.726598223305e+03 }; + double y_expected[] = { 16.0377567181 }; + cblas_drotm(N, X, incX, Y, incY, h); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "drotm(case 722)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "drotm(case 723)"); + } + }; + }; + + + { + int N = 1; + double h[] = { 0.0, 5.162681717012e-05, 48.059409562, -4.701209666609e+04, -6.80333644488e+04 }; + double X[] = { -0.674 }; + int incX = -1; + double Y[] = { -0.645 }; + int incY = 1; + double x_expected[] = { 3.032212834963e+04 }; + double y_expected[] = { -33.0370420448 }; + cblas_drotm(N, X, incX, Y, incY, h); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "drotm(case 724)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "drotm(case 725)"); + } + }; + }; + + + { + int N = 1; + double h[] = { 1.0, -5.554806445579e-04, 5.101973060197e+04, -5.932040237374e+03, 3.91045757161 }; + double X[] = { -0.674 }; + int incX = -1; + double Y[] = { -0.645 }; + int incY = 1; + double x_expected[] = { -0.644625606046 }; + double y_expected[] = { -1.84824513369 }; + cblas_drotm(N, X, incX, Y, incY, h); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "drotm(case 726)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "drotm(case 727)"); + } + }; + }; + + + { + int N = 1; + double h[] = { -2.0, -1.697234884626e-05, 101.466514367, 5.772202675851e+03, -6.884724590773e-04 }; + double X[] = { -0.674 }; + int incX = -1; + double Y[] = { -0.645 }; + int incY = 1; + double x_expected[] = { -0.674 }; + double y_expected[] = { -0.645 }; + cblas_drotm(N, X, incX, Y, incY, h); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "drotm(case 728)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "drotm(case 729)"); + } + }; + }; + + + { + int N = 1; + double h[] = { -1.0, -0.0199779342753, 13.013123509, -17.8393347684, 0.129333249919 }; + double X[] = { -0.674 }; + int incX = -1; + double Y[] = { -0.645 }; + int incY = 1; + double x_expected[] = { 11.5198360534 }; + double y_expected[] = { -8.85426519126 }; + cblas_drotm(N, X, incX, Y, incY, h); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "drotm(case 730)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "drotm(case 731)"); + } + }; + }; + + + { + int N = 1; + double h[] = { 0.0, -6.673799053773e+04, 587.759435538, 3.493966594965e+04, 2.098374142331e-05 }; + double X[] = { -0.674 }; + int incX = -1; + double Y[] = { -0.645 }; + int incY = 1; + double x_expected[] = { -2.253675853752e+04 }; + double y_expected[] = { -396.794859553 }; + cblas_drotm(N, X, incX, Y, incY, h); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "drotm(case 732)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "drotm(case 733)"); + } + }; + }; + + + { + int N = 1; + float h[] = { -1.0f, 0.070033f, 0.034824f, -0.00740144f, -0.153474f }; + float X[] = { -0.111f }; + int incX = -1; + float Y[] = { -0.103f }; + int incY = -1; + float x_expected[] = { -0.00701131f }; + float y_expected[] = { 0.0119423f }; + cblas_srotm(N, X, incX, Y, incY, h); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "srotm(case 734)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "srotm(case 735)"); + } + }; + }; + + + { + int N = 1; + float h[] = { 0.0f, 7.618016e-04f, -0.00396806f, -92.8408f, -0.0018571f }; + float X[] = { -0.111f }; + int incX = -1; + float Y[] = { -0.103f }; + int incY = -1; + float x_expected[] = { 9.4516f }; + float y_expected[] = { -0.10256f }; + cblas_srotm(N, X, incX, Y, incY, h); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "srotm(case 736)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "srotm(case 737)"); + } + }; + }; + + + { + int N = 1; + float h[] = { 1.0f, -5.833806e+03f, 0.00265668f, -587.573f, 0.0972416f }; + float X[] = { -0.111f }; + int incX = -1; + float Y[] = { -0.103f }; + int incY = -1; + float x_expected[] = { 647.449f }; + float y_expected[] = { 0.100984f }; + cblas_srotm(N, X, incX, Y, incY, h); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "srotm(case 738)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "srotm(case 739)"); + } + }; + }; + + + { + int N = 1; + float h[] = { -2.0f, -8.93339e+04f, -5.16022e-05f, 2.589784e-05f, -7.52586f }; + float X[] = { -0.111f }; + int incX = -1; + float Y[] = { -0.103f }; + int incY = -1; + float x_expected[] = { -0.111f }; + float y_expected[] = { -0.103f }; + cblas_srotm(N, X, incX, Y, incY, h); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "srotm(case 740)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "srotm(case 741)"); + } + }; + }; + + + { + int N = 1; + float h[] = { -1.0f, 0.125135f, 0.00586453f, 1.100694e-05f, -0.0137436f }; + float X[] = { -0.111f }; + int incX = -1; + float Y[] = { -0.103f }; + int incY = -1; + float x_expected[] = { -0.0138912f }; + float y_expected[] = { 7.64631e-04f }; + cblas_srotm(N, X, incX, Y, incY, h); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "srotm(case 742)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "srotm(case 743)"); + } + }; + }; + + + { + int N = 1; + float h[] = { 0.0f, -0.0996414f, 0.00505806f, 1.321441e-05f, 1.151406e-04f }; + float X[] = { -0.111f }; + int incX = -1; + float Y[] = { -0.103f }; + int incY = -1; + float x_expected[] = { -0.111001f }; + float y_expected[] = { -0.103561f }; + cblas_srotm(N, X, incX, Y, incY, h); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "srotm(case 744)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "srotm(case 745)"); + } + }; + }; + + + { + int N = 1; + float h[] = { 1.0f, 8.18165f, 169.902f, -1.453316e-05f, 1.539957e+03f }; + float X[] = { -0.111f }; + int incX = -1; + float Y[] = { -0.103f }; + int incY = -1; + float x_expected[] = { -1.01116f }; + float y_expected[] = { -158.505f }; + cblas_srotm(N, X, incX, Y, incY, h); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "srotm(case 746)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "srotm(case 747)"); + } + }; + }; + + + { + int N = 1; + float h[] = { -2.0f, 1.827623e-04f, -0.0528808f, 24.7305f, 328.39f }; + float X[] = { -0.111f }; + int incX = -1; + float Y[] = { -0.103f }; + int incY = -1; + float x_expected[] = { -0.111f }; + float y_expected[] = { -0.103f }; + cblas_srotm(N, X, incX, Y, incY, h); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "srotm(case 748)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "srotm(case 749)"); + } + }; + }; + + + { + int N = 1; + float h[] = { -1.0f, -0.0876053f, 7.858704e+04f, -4.758389e+03f, -0.0114841f }; + float X[] = { -0.111f }; + int incX = -1; + float Y[] = { -0.103f }; + int incY = -1; + float x_expected[] = { 490.124f }; + float y_expected[] = { -8.72316e+03f }; + cblas_srotm(N, X, incX, Y, incY, h); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "srotm(case 750)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "srotm(case 751)"); + } + }; + }; + + + { + int N = 1; + float h[] = { 0.0f, 0.00192188f, -1.031412e-05f, -0.00123957f, 0.312197f }; + float X[] = { -0.111f }; + int incX = -1; + float Y[] = { -0.103f }; + int incY = -1; + float x_expected[] = { -0.110872f }; + float y_expected[] = { -0.102999f }; + cblas_srotm(N, X, incX, Y, incY, h); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "srotm(case 752)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "srotm(case 753)"); + } + }; + }; + + + { + int N = 1; + double h[] = { -1.0, -0.0253351881542, -0.105247702585, -7.18405641016, -5.409804811228e+04 }; + double X[] = { 0.203 }; + int incX = -1; + double Y[] = { -0.03 }; + int incY = -1; + double x_expected[] = { 0.21037864911 }; + double y_expected[] = { 1.622920078085e+03 }; + cblas_drotm(N, X, incX, Y, incY, h); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "drotm(case 754)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "drotm(case 755)"); + } + }; + }; + + + { + int N = 1; + double h[] = { 0.0, 8.503080247483e+03, -6.186691885896e-05, -0.201279925805, -5.810746179529e-05 }; + double X[] = { 0.203 }; + int incX = -1; + double Y[] = { -0.03 }; + int incY = -1; + double x_expected[] = { 0.209038397774 }; + double y_expected[] = { -0.0300125589845 }; + cblas_drotm(N, X, incX, Y, incY, h); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "drotm(case 756)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "drotm(case 757)"); + } + }; + }; + + + { + int N = 1; + double h[] = { 1.0, 0.351101212426, 64.9574703355, 3.015315809025e-05, -5.291308403203e-04 }; + double X[] = { 0.203 }; + int incX = -1; + double Y[] = { -0.03 }; + int incY = -1; + double x_expected[] = { 0.0412735461225 }; + double y_expected[] = { -0.202984126075 }; + cblas_drotm(N, X, incX, Y, incY, h); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "drotm(case 758)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "drotm(case 759)"); + } + }; + }; + + + { + int N = 1; + double h[] = { -2.0, 0.0220262018719, -0.00311338149392, -70.6413298654, 31.8952671416 }; + double X[] = { 0.203 }; + int incX = -1; + double Y[] = { -0.03 }; + int incY = -1; + double x_expected[] = { 0.203 }; + double y_expected[] = { -0.03 }; + cblas_drotm(N, X, incX, Y, incY, h); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "drotm(case 760)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "drotm(case 761)"); + } + }; + }; + + + { + int N = 1; + double h[] = { -1.0, 1.549812806922e+04, -4.868519165134e+04, -5.230242596804e+04, 1.58043443456e+04 }; + double X[] = { 0.203 }; + int incX = -1; + double Y[] = { -0.03 }; + int incY = -1; + double x_expected[] = { 4.715192777093e+03 }; + double y_expected[] = { -1.035722423559e+04 }; + cblas_drotm(N, X, incX, Y, incY, h); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "drotm(case 762)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "drotm(case 763)"); + } + }; + }; + + + { + int N = 1; + double h[] = { 0.0, -3.30917942895, -0.0100316602276, -0.0222191220411, -0.0881815578726 }; + double X[] = { 0.203 }; + int incX = -1; + double Y[] = { -0.03 }; + int incY = -1; + double x_expected[] = { 0.203666573661 }; + double y_expected[] = { -0.0320364270262 }; + cblas_drotm(N, X, incX, Y, incY, h); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "drotm(case 764)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "drotm(case 765)"); + } + }; + }; + + + { + int N = 1; + double h[] = { 1.0, 5.68327898035, 1.646867755046e-04, -0.106527931872, -28.2458905362 }; + double X[] = { 0.203 }; + int incX = -1; + double Y[] = { -0.03 }; + int incY = -1; + double x_expected[] = { 1.12370563301 }; + double y_expected[] = { 0.644376716086 }; + cblas_drotm(N, X, incX, Y, incY, h); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "drotm(case 766)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "drotm(case 767)"); + } + }; + }; + + + { + int N = 1; + double h[] = { -2.0, 2.20585352008, 1.117638462348e+03, -0.116329468158, 0.00362096329059 }; + double X[] = { 0.203 }; + int incX = -1; + double Y[] = { -0.03 }; + int incY = -1; + double x_expected[] = { 0.203 }; + double y_expected[] = { -0.03 }; + cblas_drotm(N, X, incX, Y, incY, h); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "drotm(case 768)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "drotm(case 769)"); + } + }; + }; + + + { + int N = 1; + double h[] = { -1.0, -0.00182683798892, -2.288460066516e-05, -37.55844708, -9.54075659826e-05 }; + double X[] = { 0.203 }; + int incX = -1; + double Y[] = { -0.03 }; + int incY = -1; + double x_expected[] = { 1.12638256429 }; + double y_expected[] = { -1.783346955549e-06 }; + cblas_drotm(N, X, incX, Y, incY, h); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "drotm(case 770)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "drotm(case 771)"); + } + }; + }; + + + { + int N = 1; + double h[] = { 0.0, 1.02690456955e-04, -20.1292302013, -1.703870486677e-04, 5.17477399477 }; + double X[] = { 0.203 }; + int incX = -1; + double Y[] = { -0.03 }; + int incY = -1; + double x_expected[] = { 0.203005111611 }; + double y_expected[] = { -4.11623373087 }; + cblas_drotm(N, X, incX, Y, incY, h); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "drotm(case 772)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "drotm(case 773)"); + } + }; + }; + + +} diff --git a/gsl-2.5/cblas/test_rotmg.c b/gsl-2.5/cblas/test_rotmg.c new file mode 100644 index 00000000..0a312508 --- /dev/null +++ b/gsl-2.5/cblas/test_rotmg.c @@ -0,0 +1,167 @@ +#include +#include +#include +#include + +#include "tests.h" + +void +test_rotmg (void) { +const double flteps = 1e-4, dbleps = 1e-6; + { + float d1 = -1630.28519312f; + float d2 = 44320.1964703f; + float b1 = 1274.7681352f; + float b2 = 0.983006912864f; + float h[] = { -999.0f, -999.1f, -999.2f, -999.3f, -999.4f }; + float d1_expected = 0.0f; + float d2_expected = 0.0f; + float b1_expected = 0.0f; + float h0_expected = -1.0f; + float h11_expected = 0.0f; + float h21_expected = 0.0f; + float h12_expected = 0.0f; + float h22_expected = 0.0f; + cblas_srotmg(&d1, &d2, &b1, b2, h); + gsl_test_rel(d1, d1_expected, flteps, "srotmg(case 606)"); + gsl_test_rel(d2, d2_expected, flteps, "srotmg(case 607)"); + gsl_test_rel(b1, b1_expected, flteps, "srotmg(case 608)"); + gsl_test_rel(h[0], h0_expected, flteps, "srotmg(case 609)"); + gsl_test_rel(h[1], h11_expected, flteps, "srotmg(case 610)"); + gsl_test_rel(h[2], h21_expected, flteps, "srotmg(case 611)"); + gsl_test_rel(h[3], h12_expected, flteps, "srotmg(case 612)"); + gsl_test_rel(h[4], h22_expected, flteps, "srotmg(case 613)"); + }; + + + { + double d1 = 0.0890831089656; + double d2 = 24998.3892082; + double b1 = 34657.8864443; + double b2 = 1.27708980357; + double h[] = { -999.0, -999.1, -999.2, -999.3, -999.4 }; + double d1_expected = 0.0890491788526; + double d2_expected = 24988.8677829; + double b1_expected = 34671.0920237; + double h0_expected = 0; + double h11_expected = -999.1; + double h21_expected = -3.6848461767e-05; + double h12_expected = 10.34036867; + double h22_expected = -999.4; + cblas_drotmg(&d1, &d2, &b1, b2, h); + gsl_test_rel(d1, d1_expected, dbleps, "drotmg(case 614)"); + gsl_test_rel(d2, d2_expected, dbleps, "drotmg(case 615)"); + gsl_test_rel(b1, b1_expected, dbleps, "drotmg(case 616)"); + gsl_test_rel(h[0], h0_expected, dbleps, "drotmg(case 617)"); + gsl_test_rel(h[1], h11_expected, dbleps, "drotmg(case 618)"); + gsl_test_rel(h[2], h21_expected, dbleps, "drotmg(case 619)"); + gsl_test_rel(h[3], h12_expected, dbleps, "drotmg(case 620)"); + gsl_test_rel(h[4], h22_expected, dbleps, "drotmg(case 621)"); + }; + + + { + float d1 = 0.00100326116366f; + float d2 = -1.20359225232f; + float b1 = -7.45489498808f; + float b2 = 0.159616854019f; + float h[] = { -999.0f, -999.1f, -999.2f, -999.3f, -999.4f }; + float d1_expected = 0.00222932574734f; + float d2_expected = -2.67447728926f; + float b1_expected = -3.35491869218f; + float h0_expected = 0.0f; + float h11_expected = -999.1f; + float h21_expected = 0.0214110130692f; + float h12_expected = 25.6863620142f; + float h22_expected = -999.4f; + cblas_srotmg(&d1, &d2, &b1, b2, h); + gsl_test_rel(d1, d1_expected, flteps, "srotmg(case 622)"); + gsl_test_rel(d2, d2_expected, flteps, "srotmg(case 623)"); + gsl_test_rel(b1, b1_expected, flteps, "srotmg(case 624)"); + gsl_test_rel(h[0], h0_expected, flteps, "srotmg(case 625)"); + gsl_test_rel(h[1], h11_expected, flteps, "srotmg(case 626)"); + gsl_test_rel(h[2], h21_expected, flteps, "srotmg(case 627)"); + gsl_test_rel(h[3], h12_expected, flteps, "srotmg(case 628)"); + gsl_test_rel(h[4], h22_expected, flteps, "srotmg(case 629)"); + }; + + + { + double d1 = -49.1978123005; + double d2 = 0.228703451277; + double b1 = 1.8901039144; + double b2 = 7081.47754386; + double h[] = { -999.0, -999.1, -999.2, -999.3, -999.4 }; + double d1_expected = 0; + double d2_expected = 0; + double b1_expected = 0; + double h0_expected = -1; + double h11_expected = 0; + double h21_expected = 0; + double h12_expected = 0; + double h22_expected = 0; + cblas_drotmg(&d1, &d2, &b1, b2, h); + gsl_test_rel(d1, d1_expected, dbleps, "drotmg(case 630)"); + gsl_test_rel(d2, d2_expected, dbleps, "drotmg(case 631)"); + gsl_test_rel(b1, b1_expected, dbleps, "drotmg(case 632)"); + gsl_test_rel(h[0], h0_expected, dbleps, "drotmg(case 633)"); + gsl_test_rel(h[1], h11_expected, dbleps, "drotmg(case 634)"); + gsl_test_rel(h[2], h21_expected, dbleps, "drotmg(case 635)"); + gsl_test_rel(h[3], h12_expected, dbleps, "drotmg(case 636)"); + gsl_test_rel(h[4], h22_expected, dbleps, "drotmg(case 637)"); + }; + + + { + float d1 = 0.00760694276009f; + float d2 = -1.07649167228f; + float b1 = -22584.0076391f; + float b2 = -0.00305597817159f; + float h[] = { -999.0f, -999.1f, -999.2f, -999.3f, -999.4f }; + float d1_expected = 0.00760694276011f; + float d2_expected = -1.07649167228f; + float b1_expected = -22584.007639f; + float h0_expected = 0.0f; + float h11_expected = -999.1f; + float h21_expected = -1.35316026298e-07f; + float h12_expected = -1.91491615001e-05f; + float h22_expected = -999.4f; + cblas_srotmg(&d1, &d2, &b1, b2, h); + gsl_test_rel(d1, d1_expected, flteps, "srotmg(case 638)"); + gsl_test_rel(d2, d2_expected, flteps, "srotmg(case 639)"); + gsl_test_rel(b1, b1_expected, flteps, "srotmg(case 640)"); + gsl_test_rel(h[0], h0_expected, flteps, "srotmg(case 641)"); + gsl_test_rel(h[1], h11_expected, flteps, "srotmg(case 642)"); + gsl_test_rel(h[2], h21_expected, flteps, "srotmg(case 643)"); + gsl_test_rel(h[3], h12_expected, flteps, "srotmg(case 644)"); + gsl_test_rel(h[4], h22_expected, flteps, "srotmg(case 645)"); + }; + + + { + double d1 = 0.000283076346391; + double d2 = 20.1907649901; + double b1 = -0.274927034914; + double b2 = 18.6645358259; + double h[] = { -999.0, -999.1, -999.2, -999.3, -999.4 }; + double d1_expected = 20.1907649287; + double d2_expected = 0.00028307634553; + double b1_expected = 18.6645358827; + double h0_expected = 1; + double h11_expected = -2.06514743478e-07; + double h21_expected = -999.2; + double h12_expected = -999.3; + double h22_expected = -0.0147299154652; + cblas_drotmg(&d1, &d2, &b1, b2, h); + gsl_test_rel(d1, d1_expected, dbleps, "drotmg(case 646)"); + gsl_test_rel(d2, d2_expected, dbleps, "drotmg(case 647)"); + gsl_test_rel(b1, b1_expected, dbleps, "drotmg(case 648)"); + gsl_test_rel(h[0], h0_expected, dbleps, "drotmg(case 649)"); + gsl_test_rel(h[1], h11_expected, dbleps, "drotmg(case 650)"); + gsl_test_rel(h[2], h21_expected, dbleps, "drotmg(case 651)"); + gsl_test_rel(h[3], h12_expected, dbleps, "drotmg(case 652)"); + gsl_test_rel(h[4], h22_expected, dbleps, "drotmg(case 653)"); + }; + + +} diff --git a/gsl-2.5/cblas/test_sbmv.c b/gsl-2.5/cblas/test_sbmv.c new file mode 100644 index 00000000..a79fe22f --- /dev/null +++ b/gsl-2.5/cblas/test_sbmv.c @@ -0,0 +1,395 @@ +#include +#include +#include +#include + +#include "tests.h" + +void +test_sbmv (void) { +const double flteps = 1e-4, dbleps = 1e-6; + { + int order = 101; + int uplo = 121; + float alpha = 1.0f; + float beta = 0.0f; + int N = 3; + int k = 1; + int lda = 3; + float A[] = { 0.627f, -0.312f, 0.031f, 0.308f, 0.323f, -0.578f, 0.797f, 0.545f, -0.476f }; + float X[] = { -0.542f, 0.606f, 0.727f }; + int incX = -1; + float Y[] = { 0.755f, 0.268f, -0.99f }; + int incY = -1; + float y_expected[] = { -0.236236f, -0.215242f, 0.266757f }; + cblas_ssbmv(order, uplo, N, k, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "ssbmv(case 1102)"); + } + }; + }; + + + { + int order = 101; + int uplo = 121; + float alpha = 1.0f; + float beta = 0.0f; + int N = 3; + int k = 1; + int lda = 3; + float A[] = { 0.627f, -0.312f, 0.031f, 0.308f, 0.323f, -0.578f, 0.797f, 0.545f, -0.476f }; + float X[] = { -0.542f, 0.606f, 0.727f }; + int incX = -1; + float Y[] = { 0.755f, 0.268f, -0.99f }; + int incY = -1; + float y_expected[] = { -0.236236f, -0.215242f, 0.266757f }; + cblas_ssbmv(order, uplo, N, k, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "ssbmv(case 1103)"); + } + }; + }; + + + { + int order = 101; + int uplo = 122; + float alpha = 1.0f; + float beta = 0.0f; + int N = 3; + int k = 1; + int lda = 3; + float A[] = { 0.627f, -0.312f, 0.031f, 0.308f, 0.323f, -0.578f, 0.797f, 0.545f, -0.476f }; + float X[] = { -0.542f, 0.606f, 0.727f }; + int incX = -1; + float Y[] = { 0.755f, 0.268f, -0.99f }; + int incY = -1; + float y_expected[] = { 0.187592f, -0.01232f, -0.040176f }; + cblas_ssbmv(order, uplo, N, k, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "ssbmv(case 1104)"); + } + }; + }; + + + { + int order = 101; + int uplo = 122; + float alpha = 1.0f; + float beta = 0.0f; + int N = 3; + int k = 1; + int lda = 3; + float A[] = { 0.627f, -0.312f, 0.031f, 0.308f, 0.323f, -0.578f, 0.797f, 0.545f, -0.476f }; + float X[] = { -0.542f, 0.606f, 0.727f }; + int incX = -1; + float Y[] = { 0.755f, 0.268f, -0.99f }; + int incY = -1; + float y_expected[] = { 0.187592f, -0.01232f, -0.040176f }; + cblas_ssbmv(order, uplo, N, k, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "ssbmv(case 1105)"); + } + }; + }; + + + { + int order = 102; + int uplo = 121; + float alpha = 1.0f; + float beta = 0.0f; + int N = 3; + int k = 1; + int lda = 3; + float A[] = { 0.627f, -0.312f, 0.031f, 0.308f, 0.323f, -0.578f, 0.797f, 0.545f, -0.476f }; + float X[] = { -0.542f, 0.606f, 0.727f }; + int incX = -1; + float Y[] = { 0.755f, 0.268f, -0.99f }; + int incY = -1; + float y_expected[] = { 0.187592f, -0.01232f, -0.040176f }; + cblas_ssbmv(order, uplo, N, k, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "ssbmv(case 1106)"); + } + }; + }; + + + { + int order = 102; + int uplo = 121; + float alpha = 1.0f; + float beta = 0.0f; + int N = 3; + int k = 1; + int lda = 3; + float A[] = { 0.627f, -0.312f, 0.031f, 0.308f, 0.323f, -0.578f, 0.797f, 0.545f, -0.476f }; + float X[] = { -0.542f, 0.606f, 0.727f }; + int incX = -1; + float Y[] = { 0.755f, 0.268f, -0.99f }; + int incY = -1; + float y_expected[] = { 0.187592f, -0.01232f, -0.040176f }; + cblas_ssbmv(order, uplo, N, k, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "ssbmv(case 1107)"); + } + }; + }; + + + { + int order = 102; + int uplo = 122; + float alpha = 1.0f; + float beta = 0.0f; + int N = 3; + int k = 1; + int lda = 3; + float A[] = { 0.627f, -0.312f, 0.031f, 0.308f, 0.323f, -0.578f, 0.797f, 0.545f, -0.476f }; + float X[] = { -0.542f, 0.606f, 0.727f }; + int incX = -1; + float Y[] = { 0.755f, 0.268f, -0.99f }; + int incY = -1; + float y_expected[] = { -0.236236f, -0.215242f, 0.266757f }; + cblas_ssbmv(order, uplo, N, k, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "ssbmv(case 1108)"); + } + }; + }; + + + { + int order = 102; + int uplo = 122; + float alpha = 1.0f; + float beta = 0.0f; + int N = 3; + int k = 1; + int lda = 3; + float A[] = { 0.627f, -0.312f, 0.031f, 0.308f, 0.323f, -0.578f, 0.797f, 0.545f, -0.476f }; + float X[] = { -0.542f, 0.606f, 0.727f }; + int incX = -1; + float Y[] = { 0.755f, 0.268f, -0.99f }; + int incY = -1; + float y_expected[] = { -0.236236f, -0.215242f, 0.266757f }; + cblas_ssbmv(order, uplo, N, k, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "ssbmv(case 1109)"); + } + }; + }; + + + { + int order = 101; + int uplo = 121; + double alpha = 0; + double beta = 1; + int N = 3; + int k = 1; + int lda = 3; + double A[] = { 0.83, -0.568, -0.888, 0.281, -0.779, -0.148, 0.138, 0.053, -0.757 }; + double X[] = { 0.166, 0.808, 0.723 }; + int incX = -1; + double Y[] = { 0.9, 0.99, -0.578 }; + int incY = -1; + double y_expected[] = { 0.9, 0.99, -0.578 }; + cblas_dsbmv(order, uplo, N, k, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "dsbmv(case 1110)"); + } + }; + }; + + + { + int order = 101; + int uplo = 121; + double alpha = 0; + double beta = 1; + int N = 3; + int k = 1; + int lda = 3; + double A[] = { 0.83, -0.568, -0.888, 0.281, -0.779, -0.148, 0.138, 0.053, -0.757 }; + double X[] = { 0.166, 0.808, 0.723 }; + int incX = -1; + double Y[] = { 0.9, 0.99, -0.578 }; + int incY = -1; + double y_expected[] = { 0.9, 0.99, -0.578 }; + cblas_dsbmv(order, uplo, N, k, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "dsbmv(case 1111)"); + } + }; + }; + + + { + int order = 101; + int uplo = 122; + double alpha = 0; + double beta = 1; + int N = 3; + int k = 1; + int lda = 3; + double A[] = { 0.83, -0.568, -0.888, 0.281, -0.779, -0.148, 0.138, 0.053, -0.757 }; + double X[] = { 0.166, 0.808, 0.723 }; + int incX = -1; + double Y[] = { 0.9, 0.99, -0.578 }; + int incY = -1; + double y_expected[] = { 0.9, 0.99, -0.578 }; + cblas_dsbmv(order, uplo, N, k, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "dsbmv(case 1112)"); + } + }; + }; + + + { + int order = 101; + int uplo = 122; + double alpha = 0; + double beta = 1; + int N = 3; + int k = 1; + int lda = 3; + double A[] = { 0.83, -0.568, -0.888, 0.281, -0.779, -0.148, 0.138, 0.053, -0.757 }; + double X[] = { 0.166, 0.808, 0.723 }; + int incX = -1; + double Y[] = { 0.9, 0.99, -0.578 }; + int incY = -1; + double y_expected[] = { 0.9, 0.99, -0.578 }; + cblas_dsbmv(order, uplo, N, k, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "dsbmv(case 1113)"); + } + }; + }; + + + { + int order = 102; + int uplo = 121; + double alpha = 0; + double beta = 1; + int N = 3; + int k = 1; + int lda = 3; + double A[] = { 0.83, -0.568, -0.888, 0.281, -0.779, -0.148, 0.138, 0.053, -0.757 }; + double X[] = { 0.166, 0.808, 0.723 }; + int incX = -1; + double Y[] = { 0.9, 0.99, -0.578 }; + int incY = -1; + double y_expected[] = { 0.9, 0.99, -0.578 }; + cblas_dsbmv(order, uplo, N, k, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "dsbmv(case 1114)"); + } + }; + }; + + + { + int order = 102; + int uplo = 121; + double alpha = 0; + double beta = 1; + int N = 3; + int k = 1; + int lda = 3; + double A[] = { 0.83, -0.568, -0.888, 0.281, -0.779, -0.148, 0.138, 0.053, -0.757 }; + double X[] = { 0.166, 0.808, 0.723 }; + int incX = -1; + double Y[] = { 0.9, 0.99, -0.578 }; + int incY = -1; + double y_expected[] = { 0.9, 0.99, -0.578 }; + cblas_dsbmv(order, uplo, N, k, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "dsbmv(case 1115)"); + } + }; + }; + + + { + int order = 102; + int uplo = 122; + double alpha = 0; + double beta = 1; + int N = 3; + int k = 1; + int lda = 3; + double A[] = { 0.83, -0.568, -0.888, 0.281, -0.779, -0.148, 0.138, 0.053, -0.757 }; + double X[] = { 0.166, 0.808, 0.723 }; + int incX = -1; + double Y[] = { 0.9, 0.99, -0.578 }; + int incY = -1; + double y_expected[] = { 0.9, 0.99, -0.578 }; + cblas_dsbmv(order, uplo, N, k, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "dsbmv(case 1116)"); + } + }; + }; + + + { + int order = 102; + int uplo = 122; + double alpha = 0; + double beta = 1; + int N = 3; + int k = 1; + int lda = 3; + double A[] = { 0.83, -0.568, -0.888, 0.281, -0.779, -0.148, 0.138, 0.053, -0.757 }; + double X[] = { 0.166, 0.808, 0.723 }; + int incX = -1; + double Y[] = { 0.9, 0.99, -0.578 }; + int incY = -1; + double y_expected[] = { 0.9, 0.99, -0.578 }; + cblas_dsbmv(order, uplo, N, k, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "dsbmv(case 1117)"); + } + }; + }; + + +} diff --git a/gsl-2.5/cblas/test_scal.c b/gsl-2.5/cblas/test_scal.c new file mode 100644 index 00000000..a7cdd4be --- /dev/null +++ b/gsl-2.5/cblas/test_scal.c @@ -0,0 +1,911 @@ +#include +#include +#include +#include + +#include "tests.h" + +void +test_scal (void) { +const double flteps = 1e-4, dbleps = 1e-6; + { + int N = 1; + float alpha = 0.0f; + float X[] = { 0.651f }; + int incX = -1; + float expected[] = { 0.651f }; + cblas_sscal(N, alpha, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], expected[i], flteps, "sscal(case 112)"); + } + }; + }; + + + { + int N = 1; + float alpha = 0.1f; + float X[] = { 0.651f }; + int incX = -1; + float expected[] = { 0.651f }; + cblas_sscal(N, alpha, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], expected[i], flteps, "sscal(case 113)"); + } + }; + }; + + + { + int N = 1; + float alpha = 1.0f; + float X[] = { 0.651f }; + int incX = -1; + float expected[] = { 0.651f }; + cblas_sscal(N, alpha, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], expected[i], flteps, "sscal(case 114)"); + } + }; + }; + + + { + int N = 1; + double alpha = 0; + double X[] = { 0.686 }; + int incX = -1; + double expected[] = { 0.686 }; + cblas_dscal(N, alpha, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], expected[i], dbleps, "dscal(case 115)"); + } + }; + }; + + + { + int N = 1; + double alpha = 0.1; + double X[] = { 0.686 }; + int incX = -1; + double expected[] = { 0.686 }; + cblas_dscal(N, alpha, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], expected[i], dbleps, "dscal(case 116)"); + } + }; + }; + + + { + int N = 1; + double alpha = 1; + double X[] = { 0.686 }; + int incX = -1; + double expected[] = { 0.686 }; + cblas_dscal(N, alpha, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], expected[i], dbleps, "dscal(case 117)"); + } + }; + }; + + + { + int N = 1; + float alpha[2] = {0.0f, 0.0f}; + float X[] = { 0.986f, -0.775f }; + int incX = -1; + float expected[] = { 0.986f, -0.775f }; + cblas_cscal(N, alpha, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], expected[2*i], flteps, "cscal(case 118) real"); + gsl_test_rel(X[2*i+1], expected[2*i+1], flteps, "cscal(case 118) imag"); + }; + }; + }; + + + { + int N = 1; + float alpha[2] = {0.1f, 0.0f}; + float X[] = { 0.986f, -0.775f }; + int incX = -1; + float expected[] = { 0.986f, -0.775f }; + cblas_cscal(N, alpha, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], expected[2*i], flteps, "cscal(case 119) real"); + gsl_test_rel(X[2*i+1], expected[2*i+1], flteps, "cscal(case 119) imag"); + }; + }; + }; + + + { + int N = 1; + float alpha[2] = {1.0f, 0.0f}; + float X[] = { 0.986f, -0.775f }; + int incX = -1; + float expected[] = { 0.986f, -0.775f }; + cblas_cscal(N, alpha, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], expected[2*i], flteps, "cscal(case 120) real"); + gsl_test_rel(X[2*i+1], expected[2*i+1], flteps, "cscal(case 120) imag"); + }; + }; + }; + + + { + int N = 1; + float alpha[2] = {0.0f, 0.1f}; + float X[] = { 0.986f, -0.775f }; + int incX = -1; + float expected[] = { 0.986f, -0.775f }; + cblas_cscal(N, alpha, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], expected[2*i], flteps, "cscal(case 121) real"); + gsl_test_rel(X[2*i+1], expected[2*i+1], flteps, "cscal(case 121) imag"); + }; + }; + }; + + + { + int N = 1; + float alpha[2] = {0.1f, 0.2f}; + float X[] = { 0.986f, -0.775f }; + int incX = -1; + float expected[] = { 0.986f, -0.775f }; + cblas_cscal(N, alpha, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], expected[2*i], flteps, "cscal(case 122) real"); + gsl_test_rel(X[2*i+1], expected[2*i+1], flteps, "cscal(case 122) imag"); + }; + }; + }; + + + { + int N = 1; + float alpha[2] = {1.0f, 0.3f}; + float X[] = { 0.986f, -0.775f }; + int incX = -1; + float expected[] = { 0.986f, -0.775f }; + cblas_cscal(N, alpha, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], expected[2*i], flteps, "cscal(case 123) real"); + gsl_test_rel(X[2*i+1], expected[2*i+1], flteps, "cscal(case 123) imag"); + }; + }; + }; + + + { + int N = 1; + double alpha[2] = {0, 0}; + double X[] = { 0.454, -0.478 }; + int incX = -1; + double expected[] = { 0.454, -0.478 }; + cblas_zscal(N, alpha, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], expected[2*i], dbleps, "zscal(case 124) real"); + gsl_test_rel(X[2*i+1], expected[2*i+1], dbleps, "zscal(case 124) imag"); + }; + }; + }; + + + { + int N = 1; + double alpha[2] = {0.1, 0}; + double X[] = { 0.454, -0.478 }; + int incX = -1; + double expected[] = { 0.454, -0.478 }; + cblas_zscal(N, alpha, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], expected[2*i], dbleps, "zscal(case 125) real"); + gsl_test_rel(X[2*i+1], expected[2*i+1], dbleps, "zscal(case 125) imag"); + }; + }; + }; + + + { + int N = 1; + double alpha[2] = {1, 0}; + double X[] = { 0.454, -0.478 }; + int incX = -1; + double expected[] = { 0.454, -0.478 }; + cblas_zscal(N, alpha, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], expected[2*i], dbleps, "zscal(case 126) real"); + gsl_test_rel(X[2*i+1], expected[2*i+1], dbleps, "zscal(case 126) imag"); + }; + }; + }; + + + { + int N = 1; + double alpha[2] = {0, 0.1}; + double X[] = { 0.454, -0.478 }; + int incX = -1; + double expected[] = { 0.454, -0.478 }; + cblas_zscal(N, alpha, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], expected[2*i], dbleps, "zscal(case 127) real"); + gsl_test_rel(X[2*i+1], expected[2*i+1], dbleps, "zscal(case 127) imag"); + }; + }; + }; + + + { + int N = 1; + double alpha[2] = {0.1, 0.2}; + double X[] = { 0.454, -0.478 }; + int incX = -1; + double expected[] = { 0.454, -0.478 }; + cblas_zscal(N, alpha, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], expected[2*i], dbleps, "zscal(case 128) real"); + gsl_test_rel(X[2*i+1], expected[2*i+1], dbleps, "zscal(case 128) imag"); + }; + }; + }; + + + { + int N = 1; + double alpha[2] = {1, 0.3}; + double X[] = { 0.454, -0.478 }; + int incX = -1; + double expected[] = { 0.454, -0.478 }; + cblas_zscal(N, alpha, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], expected[2*i], dbleps, "zscal(case 129) real"); + gsl_test_rel(X[2*i+1], expected[2*i+1], dbleps, "zscal(case 129) imag"); + }; + }; + }; + + + { + int N = 2; + float alpha = 0.0f; + float X[] = { 0.389f, -0.236f }; + int incX = 1; + float expected[] = { 0.0f, -0.0f }; + cblas_sscal(N, alpha, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], expected[i], flteps, "sscal(case 130)"); + } + }; + }; + + + { + int N = 2; + float alpha = 0.1f; + float X[] = { 0.389f, -0.236f }; + int incX = 1; + float expected[] = { 0.0389f, -0.0236f }; + cblas_sscal(N, alpha, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], expected[i], flteps, "sscal(case 131)"); + } + }; + }; + + + { + int N = 2; + float alpha = 1.0f; + float X[] = { 0.389f, -0.236f }; + int incX = 1; + float expected[] = { 0.389f, -0.236f }; + cblas_sscal(N, alpha, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], expected[i], flteps, "sscal(case 132)"); + } + }; + }; + + + { + int N = 2; + double alpha = 0; + double X[] = { -0.429, -0.183 }; + int incX = 1; + double expected[] = { -0.0, -0.0 }; + cblas_dscal(N, alpha, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], expected[i], dbleps, "dscal(case 133)"); + } + }; + }; + + + { + int N = 2; + double alpha = 0.1; + double X[] = { -0.429, -0.183 }; + int incX = 1; + double expected[] = { -0.0429, -0.0183 }; + cblas_dscal(N, alpha, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], expected[i], dbleps, "dscal(case 134)"); + } + }; + }; + + + { + int N = 2; + double alpha = 1; + double X[] = { -0.429, -0.183 }; + int incX = 1; + double expected[] = { -0.429, -0.183 }; + cblas_dscal(N, alpha, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], expected[i], dbleps, "dscal(case 135)"); + } + }; + }; + + + { + int N = 2; + float alpha[2] = {0.0f, 0.0f}; + float X[] = { -0.603f, 0.239f, 0.339f, -0.58f }; + int incX = 1; + float expected[] = { -0.0f, 0.0f, 0.0f, 0.0f }; + cblas_cscal(N, alpha, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], expected[2*i], flteps, "cscal(case 136) real"); + gsl_test_rel(X[2*i+1], expected[2*i+1], flteps, "cscal(case 136) imag"); + }; + }; + }; + + + { + int N = 2; + float alpha[2] = {0.1f, 0.0f}; + float X[] = { -0.603f, 0.239f, 0.339f, -0.58f }; + int incX = 1; + float expected[] = { -0.0603f, 0.0239f, 0.0339f, -0.058f }; + cblas_cscal(N, alpha, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], expected[2*i], flteps, "cscal(case 137) real"); + gsl_test_rel(X[2*i+1], expected[2*i+1], flteps, "cscal(case 137) imag"); + }; + }; + }; + + + { + int N = 2; + float alpha[2] = {1.0f, 0.0f}; + float X[] = { -0.603f, 0.239f, 0.339f, -0.58f }; + int incX = 1; + float expected[] = { -0.603f, 0.239f, 0.339f, -0.58f }; + cblas_cscal(N, alpha, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], expected[2*i], flteps, "cscal(case 138) real"); + gsl_test_rel(X[2*i+1], expected[2*i+1], flteps, "cscal(case 138) imag"); + }; + }; + }; + + + { + int N = 2; + float alpha[2] = {0.0f, 0.1f}; + float X[] = { -0.603f, 0.239f, 0.339f, -0.58f }; + int incX = 1; + float expected[] = { -0.0239f, -0.0603f, 0.058f, 0.0339f }; + cblas_cscal(N, alpha, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], expected[2*i], flteps, "cscal(case 139) real"); + gsl_test_rel(X[2*i+1], expected[2*i+1], flteps, "cscal(case 139) imag"); + }; + }; + }; + + + { + int N = 2; + float alpha[2] = {0.1f, 0.2f}; + float X[] = { -0.603f, 0.239f, 0.339f, -0.58f }; + int incX = 1; + float expected[] = { -0.1081f, -0.0967f, 0.1499f, 0.0098f }; + cblas_cscal(N, alpha, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], expected[2*i], flteps, "cscal(case 140) real"); + gsl_test_rel(X[2*i+1], expected[2*i+1], flteps, "cscal(case 140) imag"); + }; + }; + }; + + + { + int N = 2; + float alpha[2] = {1.0f, 0.3f}; + float X[] = { -0.603f, 0.239f, 0.339f, -0.58f }; + int incX = 1; + float expected[] = { -0.6747f, 0.0581f, 0.513f, -0.4783f }; + cblas_cscal(N, alpha, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], expected[2*i], flteps, "cscal(case 141) real"); + gsl_test_rel(X[2*i+1], expected[2*i+1], flteps, "cscal(case 141) imag"); + }; + }; + }; + + + { + int N = 2; + double alpha[2] = {0, 0}; + double X[] = { -0.956, 0.613, 0.443, 0.503 }; + int incX = 1; + double expected[] = { -0.0, 0.0, 0.0, 0.0 }; + cblas_zscal(N, alpha, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], expected[2*i], dbleps, "zscal(case 142) real"); + gsl_test_rel(X[2*i+1], expected[2*i+1], dbleps, "zscal(case 142) imag"); + }; + }; + }; + + + { + int N = 2; + double alpha[2] = {0.1, 0}; + double X[] = { -0.956, 0.613, 0.443, 0.503 }; + int incX = 1; + double expected[] = { -0.0956, 0.0613, 0.0443, 0.0503 }; + cblas_zscal(N, alpha, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], expected[2*i], dbleps, "zscal(case 143) real"); + gsl_test_rel(X[2*i+1], expected[2*i+1], dbleps, "zscal(case 143) imag"); + }; + }; + }; + + + { + int N = 2; + double alpha[2] = {1, 0}; + double X[] = { -0.956, 0.613, 0.443, 0.503 }; + int incX = 1; + double expected[] = { -0.956, 0.613, 0.443, 0.503 }; + cblas_zscal(N, alpha, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], expected[2*i], dbleps, "zscal(case 144) real"); + gsl_test_rel(X[2*i+1], expected[2*i+1], dbleps, "zscal(case 144) imag"); + }; + }; + }; + + + { + int N = 2; + double alpha[2] = {0, 0.1}; + double X[] = { -0.956, 0.613, 0.443, 0.503 }; + int incX = 1; + double expected[] = { -0.0613, -0.0956, -0.0503, 0.0443 }; + cblas_zscal(N, alpha, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], expected[2*i], dbleps, "zscal(case 145) real"); + gsl_test_rel(X[2*i+1], expected[2*i+1], dbleps, "zscal(case 145) imag"); + }; + }; + }; + + + { + int N = 2; + double alpha[2] = {0.1, 0.2}; + double X[] = { -0.956, 0.613, 0.443, 0.503 }; + int incX = 1; + double expected[] = { -0.2182, -0.1299, -0.0563, 0.1389 }; + cblas_zscal(N, alpha, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], expected[2*i], dbleps, "zscal(case 146) real"); + gsl_test_rel(X[2*i+1], expected[2*i+1], dbleps, "zscal(case 146) imag"); + }; + }; + }; + + + { + int N = 2; + double alpha[2] = {1, 0.3}; + double X[] = { -0.956, 0.613, 0.443, 0.503 }; + int incX = 1; + double expected[] = { -1.1399, 0.3262, 0.2921, 0.6359 }; + cblas_zscal(N, alpha, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], expected[2*i], dbleps, "zscal(case 147) real"); + gsl_test_rel(X[2*i+1], expected[2*i+1], dbleps, "zscal(case 147) imag"); + }; + }; + }; + + + { + int N = 2; + float alpha = 0.0f; + float X[] = { 0.629f, -0.419f }; + int incX = -1; + float expected[] = { 0.629f, -0.419f }; + cblas_sscal(N, alpha, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], expected[i], flteps, "sscal(case 148)"); + } + }; + }; + + + { + int N = 2; + float alpha = 0.1f; + float X[] = { 0.629f, -0.419f }; + int incX = -1; + float expected[] = { 0.629f, -0.419f }; + cblas_sscal(N, alpha, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], expected[i], flteps, "sscal(case 149)"); + } + }; + }; + + + { + int N = 2; + float alpha = 1.0f; + float X[] = { 0.629f, -0.419f }; + int incX = -1; + float expected[] = { 0.629f, -0.419f }; + cblas_sscal(N, alpha, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], expected[i], flteps, "sscal(case 150)"); + } + }; + }; + + + { + int N = 2; + double alpha = 0; + double X[] = { 0.398, -0.656 }; + int incX = -1; + double expected[] = { 0.398, -0.656 }; + cblas_dscal(N, alpha, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], expected[i], dbleps, "dscal(case 151)"); + } + }; + }; + + + { + int N = 2; + double alpha = 0.1; + double X[] = { 0.398, -0.656 }; + int incX = -1; + double expected[] = { 0.398, -0.656 }; + cblas_dscal(N, alpha, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], expected[i], dbleps, "dscal(case 152)"); + } + }; + }; + + + { + int N = 2; + double alpha = 1; + double X[] = { 0.398, -0.656 }; + int incX = -1; + double expected[] = { 0.398, -0.656 }; + cblas_dscal(N, alpha, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], expected[i], dbleps, "dscal(case 153)"); + } + }; + }; + + + { + int N = 2; + float alpha[2] = {0.0f, 0.0f}; + float X[] = { 0.736f, 0.331f, -0.318f, 0.622f }; + int incX = -1; + float expected[] = { 0.736f, 0.331f, -0.318f, 0.622f }; + cblas_cscal(N, alpha, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], expected[2*i], flteps, "cscal(case 154) real"); + gsl_test_rel(X[2*i+1], expected[2*i+1], flteps, "cscal(case 154) imag"); + }; + }; + }; + + + { + int N = 2; + float alpha[2] = {0.1f, 0.0f}; + float X[] = { 0.736f, 0.331f, -0.318f, 0.622f }; + int incX = -1; + float expected[] = { 0.736f, 0.331f, -0.318f, 0.622f }; + cblas_cscal(N, alpha, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], expected[2*i], flteps, "cscal(case 155) real"); + gsl_test_rel(X[2*i+1], expected[2*i+1], flteps, "cscal(case 155) imag"); + }; + }; + }; + + + { + int N = 2; + float alpha[2] = {1.0f, 0.0f}; + float X[] = { 0.736f, 0.331f, -0.318f, 0.622f }; + int incX = -1; + float expected[] = { 0.736f, 0.331f, -0.318f, 0.622f }; + cblas_cscal(N, alpha, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], expected[2*i], flteps, "cscal(case 156) real"); + gsl_test_rel(X[2*i+1], expected[2*i+1], flteps, "cscal(case 156) imag"); + }; + }; + }; + + + { + int N = 2; + float alpha[2] = {0.0f, 0.1f}; + float X[] = { 0.736f, 0.331f, -0.318f, 0.622f }; + int incX = -1; + float expected[] = { 0.736f, 0.331f, -0.318f, 0.622f }; + cblas_cscal(N, alpha, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], expected[2*i], flteps, "cscal(case 157) real"); + gsl_test_rel(X[2*i+1], expected[2*i+1], flteps, "cscal(case 157) imag"); + }; + }; + }; + + + { + int N = 2; + float alpha[2] = {0.1f, 0.2f}; + float X[] = { 0.736f, 0.331f, -0.318f, 0.622f }; + int incX = -1; + float expected[] = { 0.736f, 0.331f, -0.318f, 0.622f }; + cblas_cscal(N, alpha, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], expected[2*i], flteps, "cscal(case 158) real"); + gsl_test_rel(X[2*i+1], expected[2*i+1], flteps, "cscal(case 158) imag"); + }; + }; + }; + + + { + int N = 2; + float alpha[2] = {1.0f, 0.3f}; + float X[] = { 0.736f, 0.331f, -0.318f, 0.622f }; + int incX = -1; + float expected[] = { 0.736f, 0.331f, -0.318f, 0.622f }; + cblas_cscal(N, alpha, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], expected[2*i], flteps, "cscal(case 159) real"); + gsl_test_rel(X[2*i+1], expected[2*i+1], flteps, "cscal(case 159) imag"); + }; + }; + }; + + + { + int N = 2; + double alpha[2] = {0, 0}; + double X[] = { 0.521, -0.811, 0.556, -0.147 }; + int incX = -1; + double expected[] = { 0.521, -0.811, 0.556, -0.147 }; + cblas_zscal(N, alpha, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], expected[2*i], dbleps, "zscal(case 160) real"); + gsl_test_rel(X[2*i+1], expected[2*i+1], dbleps, "zscal(case 160) imag"); + }; + }; + }; + + + { + int N = 2; + double alpha[2] = {0.1, 0}; + double X[] = { 0.521, -0.811, 0.556, -0.147 }; + int incX = -1; + double expected[] = { 0.521, -0.811, 0.556, -0.147 }; + cblas_zscal(N, alpha, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], expected[2*i], dbleps, "zscal(case 161) real"); + gsl_test_rel(X[2*i+1], expected[2*i+1], dbleps, "zscal(case 161) imag"); + }; + }; + }; + + + { + int N = 2; + double alpha[2] = {1, 0}; + double X[] = { 0.521, -0.811, 0.556, -0.147 }; + int incX = -1; + double expected[] = { 0.521, -0.811, 0.556, -0.147 }; + cblas_zscal(N, alpha, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], expected[2*i], dbleps, "zscal(case 162) real"); + gsl_test_rel(X[2*i+1], expected[2*i+1], dbleps, "zscal(case 162) imag"); + }; + }; + }; + + + { + int N = 2; + double alpha[2] = {0, 0.1}; + double X[] = { 0.521, -0.811, 0.556, -0.147 }; + int incX = -1; + double expected[] = { 0.521, -0.811, 0.556, -0.147 }; + cblas_zscal(N, alpha, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], expected[2*i], dbleps, "zscal(case 163) real"); + gsl_test_rel(X[2*i+1], expected[2*i+1], dbleps, "zscal(case 163) imag"); + }; + }; + }; + + + { + int N = 2; + double alpha[2] = {0.1, 0.2}; + double X[] = { 0.521, -0.811, 0.556, -0.147 }; + int incX = -1; + double expected[] = { 0.521, -0.811, 0.556, -0.147 }; + cblas_zscal(N, alpha, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], expected[2*i], dbleps, "zscal(case 164) real"); + gsl_test_rel(X[2*i+1], expected[2*i+1], dbleps, "zscal(case 164) imag"); + }; + }; + }; + + + { + int N = 2; + double alpha[2] = {1, 0.3}; + double X[] = { 0.521, -0.811, 0.556, -0.147 }; + int incX = -1; + double expected[] = { 0.521, -0.811, 0.556, -0.147 }; + cblas_zscal(N, alpha, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], expected[2*i], dbleps, "zscal(case 165) real"); + gsl_test_rel(X[2*i+1], expected[2*i+1], dbleps, "zscal(case 165) imag"); + }; + }; + }; + + +} diff --git a/gsl-2.5/cblas/test_spmv.c b/gsl-2.5/cblas/test_spmv.c new file mode 100644 index 00000000..d49b48b2 --- /dev/null +++ b/gsl-2.5/cblas/test_spmv.c @@ -0,0 +1,363 @@ +#include +#include +#include +#include + +#include "tests.h" + +void +test_spmv (void) { +const double flteps = 1e-4, dbleps = 1e-6; + { + int order = 101; + int uplo = 121; + float alpha = 0.1f; + float beta = -0.3f; + int N = 2; + float A[] = { -0.174f, 0.878f, 0.478f }; + float X[] = { 0.503f, 0.313f }; + int incX = -1; + float Y[] = { -0.565f, -0.109f }; + int incY = -1; + float y_expected[] = { 0.221025f, 0.0714172f }; + cblas_sspmv(order, uplo, N, alpha, A, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "sspmv(case 1134)"); + } + }; + }; + + + { + int order = 101; + int uplo = 121; + float alpha = 0.1f; + float beta = -0.3f; + int N = 2; + float A[] = { -0.174f, 0.878f, 0.478f }; + float X[] = { 0.503f, 0.313f }; + int incX = -1; + float Y[] = { -0.565f, -0.109f }; + int incY = -1; + float y_expected[] = { 0.221025f, 0.0714172f }; + cblas_sspmv(order, uplo, N, alpha, A, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "sspmv(case 1135)"); + } + }; + }; + + + { + int order = 101; + int uplo = 122; + float alpha = 0.1f; + float beta = -0.3f; + int N = 2; + float A[] = { -0.174f, 0.878f, 0.478f }; + float X[] = { 0.503f, 0.313f }; + int incX = -1; + float Y[] = { -0.565f, -0.109f }; + int incY = -1; + float y_expected[] = { 0.221025f, 0.0714172f }; + cblas_sspmv(order, uplo, N, alpha, A, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "sspmv(case 1136)"); + } + }; + }; + + + { + int order = 101; + int uplo = 122; + float alpha = 0.1f; + float beta = -0.3f; + int N = 2; + float A[] = { -0.174f, 0.878f, 0.478f }; + float X[] = { 0.503f, 0.313f }; + int incX = -1; + float Y[] = { -0.565f, -0.109f }; + int incY = -1; + float y_expected[] = { 0.221025f, 0.0714172f }; + cblas_sspmv(order, uplo, N, alpha, A, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "sspmv(case 1137)"); + } + }; + }; + + + { + int order = 102; + int uplo = 121; + float alpha = 0.1f; + float beta = -0.3f; + int N = 2; + float A[] = { -0.174f, 0.878f, 0.478f }; + float X[] = { 0.503f, 0.313f }; + int incX = -1; + float Y[] = { -0.565f, -0.109f }; + int incY = -1; + float y_expected[] = { 0.221025f, 0.0714172f }; + cblas_sspmv(order, uplo, N, alpha, A, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "sspmv(case 1138)"); + } + }; + }; + + + { + int order = 102; + int uplo = 121; + float alpha = 0.1f; + float beta = -0.3f; + int N = 2; + float A[] = { -0.174f, 0.878f, 0.478f }; + float X[] = { 0.503f, 0.313f }; + int incX = -1; + float Y[] = { -0.565f, -0.109f }; + int incY = -1; + float y_expected[] = { 0.221025f, 0.0714172f }; + cblas_sspmv(order, uplo, N, alpha, A, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "sspmv(case 1139)"); + } + }; + }; + + + { + int order = 102; + int uplo = 122; + float alpha = 0.1f; + float beta = -0.3f; + int N = 2; + float A[] = { -0.174f, 0.878f, 0.478f }; + float X[] = { 0.503f, 0.313f }; + int incX = -1; + float Y[] = { -0.565f, -0.109f }; + int incY = -1; + float y_expected[] = { 0.221025f, 0.0714172f }; + cblas_sspmv(order, uplo, N, alpha, A, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "sspmv(case 1140)"); + } + }; + }; + + + { + int order = 102; + int uplo = 122; + float alpha = 0.1f; + float beta = -0.3f; + int N = 2; + float A[] = { -0.174f, 0.878f, 0.478f }; + float X[] = { 0.503f, 0.313f }; + int incX = -1; + float Y[] = { -0.565f, -0.109f }; + int incY = -1; + float y_expected[] = { 0.221025f, 0.0714172f }; + cblas_sspmv(order, uplo, N, alpha, A, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "sspmv(case 1141)"); + } + }; + }; + + + { + int order = 101; + int uplo = 121; + double alpha = -1; + double beta = 0.1; + int N = 2; + double A[] = { -0.181, -0.071, -0.038 }; + double X[] = { -0.015, 0.132 }; + int incX = -1; + double Y[] = { -0.449, -0.219 }; + int incY = -1; + double y_expected[] = { -0.036098, 9.27e-04 }; + cblas_dspmv(order, uplo, N, alpha, A, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "dspmv(case 1142)"); + } + }; + }; + + + { + int order = 101; + int uplo = 121; + double alpha = -1; + double beta = 0.1; + int N = 2; + double A[] = { -0.181, -0.071, -0.038 }; + double X[] = { -0.015, 0.132 }; + int incX = -1; + double Y[] = { -0.449, -0.219 }; + int incY = -1; + double y_expected[] = { -0.036098, 9.27e-04 }; + cblas_dspmv(order, uplo, N, alpha, A, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "dspmv(case 1143)"); + } + }; + }; + + + { + int order = 101; + int uplo = 122; + double alpha = -1; + double beta = 0.1; + int N = 2; + double A[] = { -0.181, -0.071, -0.038 }; + double X[] = { -0.015, 0.132 }; + int incX = -1; + double Y[] = { -0.449, -0.219 }; + int incY = -1; + double y_expected[] = { -0.036098, 9.27e-04 }; + cblas_dspmv(order, uplo, N, alpha, A, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "dspmv(case 1144)"); + } + }; + }; + + + { + int order = 101; + int uplo = 122; + double alpha = -1; + double beta = 0.1; + int N = 2; + double A[] = { -0.181, -0.071, -0.038 }; + double X[] = { -0.015, 0.132 }; + int incX = -1; + double Y[] = { -0.449, -0.219 }; + int incY = -1; + double y_expected[] = { -0.036098, 9.27e-04 }; + cblas_dspmv(order, uplo, N, alpha, A, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "dspmv(case 1145)"); + } + }; + }; + + + { + int order = 102; + int uplo = 121; + double alpha = -1; + double beta = 0.1; + int N = 2; + double A[] = { -0.181, -0.071, -0.038 }; + double X[] = { -0.015, 0.132 }; + int incX = -1; + double Y[] = { -0.449, -0.219 }; + int incY = -1; + double y_expected[] = { -0.036098, 9.27e-04 }; + cblas_dspmv(order, uplo, N, alpha, A, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "dspmv(case 1146)"); + } + }; + }; + + + { + int order = 102; + int uplo = 121; + double alpha = -1; + double beta = 0.1; + int N = 2; + double A[] = { -0.181, -0.071, -0.038 }; + double X[] = { -0.015, 0.132 }; + int incX = -1; + double Y[] = { -0.449, -0.219 }; + int incY = -1; + double y_expected[] = { -0.036098, 9.27e-04 }; + cblas_dspmv(order, uplo, N, alpha, A, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "dspmv(case 1147)"); + } + }; + }; + + + { + int order = 102; + int uplo = 122; + double alpha = -1; + double beta = 0.1; + int N = 2; + double A[] = { -0.181, -0.071, -0.038 }; + double X[] = { -0.015, 0.132 }; + int incX = -1; + double Y[] = { -0.449, -0.219 }; + int incY = -1; + double y_expected[] = { -0.036098, 9.27e-04 }; + cblas_dspmv(order, uplo, N, alpha, A, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "dspmv(case 1148)"); + } + }; + }; + + + { + int order = 102; + int uplo = 122; + double alpha = -1; + double beta = 0.1; + int N = 2; + double A[] = { -0.181, -0.071, -0.038 }; + double X[] = { -0.015, 0.132 }; + int incX = -1; + double Y[] = { -0.449, -0.219 }; + int incY = -1; + double y_expected[] = { -0.036098, 9.27e-04 }; + cblas_dspmv(order, uplo, N, alpha, A, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "dspmv(case 1149)"); + } + }; + }; + + +} diff --git a/gsl-2.5/cblas/test_spr.c b/gsl-2.5/cblas/test_spr.c new file mode 100644 index 00000000..36891bdb --- /dev/null +++ b/gsl-2.5/cblas/test_spr.c @@ -0,0 +1,163 @@ +#include +#include +#include +#include + +#include "tests.h" + +void +test_spr (void) { +const double flteps = 1e-4, dbleps = 1e-6; + { + int order = 101; + int uplo = 121; + int N = 2; + float alpha = -0.3f; + float Ap[] = { -0.764f, -0.257f, -0.064f }; + float X[] = { 0.455f, -0.285f }; + int incX = -1; + float Ap_expected[] = { -0.788367f, -0.218097f, -0.126108f }; + cblas_sspr(order, uplo, N, alpha, X, incX, Ap); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(Ap[i], Ap_expected[i], flteps, "sspr(case 1426)"); + } + }; + }; + + + { + int order = 101; + int uplo = 122; + int N = 2; + float alpha = -0.3f; + float Ap[] = { -0.764f, -0.257f, -0.064f }; + float X[] = { 0.455f, -0.285f }; + int incX = -1; + float Ap_expected[] = { -0.788367f, -0.218097f, -0.126108f }; + cblas_sspr(order, uplo, N, alpha, X, incX, Ap); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(Ap[i], Ap_expected[i], flteps, "sspr(case 1427)"); + } + }; + }; + + + { + int order = 102; + int uplo = 121; + int N = 2; + float alpha = -0.3f; + float Ap[] = { -0.764f, -0.257f, -0.064f }; + float X[] = { 0.455f, -0.285f }; + int incX = -1; + float Ap_expected[] = { -0.788367f, -0.218097f, -0.126108f }; + cblas_sspr(order, uplo, N, alpha, X, incX, Ap); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(Ap[i], Ap_expected[i], flteps, "sspr(case 1428)"); + } + }; + }; + + + { + int order = 102; + int uplo = 122; + int N = 2; + float alpha = -0.3f; + float Ap[] = { -0.764f, -0.257f, -0.064f }; + float X[] = { 0.455f, -0.285f }; + int incX = -1; + float Ap_expected[] = { -0.788367f, -0.218097f, -0.126108f }; + cblas_sspr(order, uplo, N, alpha, X, incX, Ap); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(Ap[i], Ap_expected[i], flteps, "sspr(case 1429)"); + } + }; + }; + + + { + int order = 101; + int uplo = 121; + int N = 2; + double alpha = -1; + double Ap[] = { 0.819, 0.175, -0.809 }; + double X[] = { -0.645, -0.222 }; + int incX = -1; + double Ap_expected[] = { 0.769716, 0.03181, -1.225025 }; + cblas_dspr(order, uplo, N, alpha, X, incX, Ap); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(Ap[i], Ap_expected[i], dbleps, "dspr(case 1430)"); + } + }; + }; + + + { + int order = 101; + int uplo = 122; + int N = 2; + double alpha = -1; + double Ap[] = { 0.819, 0.175, -0.809 }; + double X[] = { -0.645, -0.222 }; + int incX = -1; + double Ap_expected[] = { 0.769716, 0.03181, -1.225025 }; + cblas_dspr(order, uplo, N, alpha, X, incX, Ap); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(Ap[i], Ap_expected[i], dbleps, "dspr(case 1431)"); + } + }; + }; + + + { + int order = 102; + int uplo = 121; + int N = 2; + double alpha = -1; + double Ap[] = { 0.819, 0.175, -0.809 }; + double X[] = { -0.645, -0.222 }; + int incX = -1; + double Ap_expected[] = { 0.769716, 0.03181, -1.225025 }; + cblas_dspr(order, uplo, N, alpha, X, incX, Ap); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(Ap[i], Ap_expected[i], dbleps, "dspr(case 1432)"); + } + }; + }; + + + { + int order = 102; + int uplo = 122; + int N = 2; + double alpha = -1; + double Ap[] = { 0.819, 0.175, -0.809 }; + double X[] = { -0.645, -0.222 }; + int incX = -1; + double Ap_expected[] = { 0.769716, 0.03181, -1.225025 }; + cblas_dspr(order, uplo, N, alpha, X, incX, Ap); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(Ap[i], Ap_expected[i], dbleps, "dspr(case 1433)"); + } + }; + }; + + +} diff --git a/gsl-2.5/cblas/test_spr2.c b/gsl-2.5/cblas/test_spr2.c new file mode 100644 index 00000000..cf0c39ba --- /dev/null +++ b/gsl-2.5/cblas/test_spr2.c @@ -0,0 +1,179 @@ +#include +#include +#include +#include + +#include "tests.h" + +void +test_spr2 (void) { +const double flteps = 1e-4, dbleps = 1e-6; + { + int order = 101; + int uplo = 121; + int N = 2; + float alpha = -1.0f; + float Ap[] = { 0.493f, -0.175f, -0.831f }; + float X[] = { -0.163f, 0.489f }; + int incX = -1; + float Y[] = { 0.154f, 0.769f }; + int incY = -1; + float Ap_expected[] = { -0.259082f, -0.124959f, -0.780796f }; + cblas_sspr2(order, uplo, N, alpha, X, incX, Y, incY, Ap); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(Ap[i], Ap_expected[i], flteps, "sspr2(case 1442)"); + } + }; + }; + + + { + int order = 101; + int uplo = 122; + int N = 2; + float alpha = -1.0f; + float Ap[] = { 0.493f, -0.175f, -0.831f }; + float X[] = { -0.163f, 0.489f }; + int incX = -1; + float Y[] = { 0.154f, 0.769f }; + int incY = -1; + float Ap_expected[] = { -0.259082f, -0.124959f, -0.780796f }; + cblas_sspr2(order, uplo, N, alpha, X, incX, Y, incY, Ap); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(Ap[i], Ap_expected[i], flteps, "sspr2(case 1443)"); + } + }; + }; + + + { + int order = 102; + int uplo = 121; + int N = 2; + float alpha = -1.0f; + float Ap[] = { 0.493f, -0.175f, -0.831f }; + float X[] = { -0.163f, 0.489f }; + int incX = -1; + float Y[] = { 0.154f, 0.769f }; + int incY = -1; + float Ap_expected[] = { -0.259082f, -0.124959f, -0.780796f }; + cblas_sspr2(order, uplo, N, alpha, X, incX, Y, incY, Ap); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(Ap[i], Ap_expected[i], flteps, "sspr2(case 1444)"); + } + }; + }; + + + { + int order = 102; + int uplo = 122; + int N = 2; + float alpha = -1.0f; + float Ap[] = { 0.493f, -0.175f, -0.831f }; + float X[] = { -0.163f, 0.489f }; + int incX = -1; + float Y[] = { 0.154f, 0.769f }; + int incY = -1; + float Ap_expected[] = { -0.259082f, -0.124959f, -0.780796f }; + cblas_sspr2(order, uplo, N, alpha, X, incX, Y, incY, Ap); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(Ap[i], Ap_expected[i], flteps, "sspr2(case 1445)"); + } + }; + }; + + + { + int order = 101; + int uplo = 121; + int N = 2; + double alpha = 0; + double Ap[] = { 0.938, 0.342, 0.74 }; + double X[] = { 0.216, -0.566 }; + int incX = -1; + double Y[] = { -0.845, 0.282 }; + int incY = -1; + double Ap_expected[] = { 0.938, 0.342, 0.74 }; + cblas_dspr2(order, uplo, N, alpha, X, incX, Y, incY, Ap); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(Ap[i], Ap_expected[i], dbleps, "dspr2(case 1446)"); + } + }; + }; + + + { + int order = 101; + int uplo = 122; + int N = 2; + double alpha = 0; + double Ap[] = { 0.938, 0.342, 0.74 }; + double X[] = { 0.216, -0.566 }; + int incX = -1; + double Y[] = { -0.845, 0.282 }; + int incY = -1; + double Ap_expected[] = { 0.938, 0.342, 0.74 }; + cblas_dspr2(order, uplo, N, alpha, X, incX, Y, incY, Ap); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(Ap[i], Ap_expected[i], dbleps, "dspr2(case 1447)"); + } + }; + }; + + + { + int order = 102; + int uplo = 121; + int N = 2; + double alpha = 0; + double Ap[] = { 0.938, 0.342, 0.74 }; + double X[] = { 0.216, -0.566 }; + int incX = -1; + double Y[] = { -0.845, 0.282 }; + int incY = -1; + double Ap_expected[] = { 0.938, 0.342, 0.74 }; + cblas_dspr2(order, uplo, N, alpha, X, incX, Y, incY, Ap); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(Ap[i], Ap_expected[i], dbleps, "dspr2(case 1448)"); + } + }; + }; + + + { + int order = 102; + int uplo = 122; + int N = 2; + double alpha = 0; + double Ap[] = { 0.938, 0.342, 0.74 }; + double X[] = { 0.216, -0.566 }; + int incX = -1; + double Y[] = { -0.845, 0.282 }; + int incY = -1; + double Ap_expected[] = { 0.938, 0.342, 0.74 }; + cblas_dspr2(order, uplo, N, alpha, X, incX, Y, incY, Ap); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(Ap[i], Ap_expected[i], dbleps, "dspr2(case 1449)"); + } + }; + }; + + +} diff --git a/gsl-2.5/cblas/test_swap.c b/gsl-2.5/cblas/test_swap.c new file mode 100644 index 00000000..accf822a --- /dev/null +++ b/gsl-2.5/cblas/test_swap.c @@ -0,0 +1,311 @@ +#include +#include +#include +#include + +#include "tests.h" + +void +test_swap (void) { +const double flteps = 1e-4, dbleps = 1e-6; + { + int N = 1; + float X[] = { 0.539f }; + int incX = 1; + float Y[] = { -0.262f }; + int incY = -1; + float expected1[] = { -0.262f }; + float expected2[] = { 0.539f }; + cblas_sswap(N, X, incX, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], expected1[i], flteps, "sswap(case 88)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], expected2[i], flteps, "sswap(case 89)"); + } + }; + }; + + + { + int N = 1; + double X[] = { 0.906 }; + int incX = 1; + double Y[] = { 0.373 }; + int incY = -1; + double expected1[] = { 0.373 }; + double expected2[] = { 0.906 }; + cblas_dswap(N, X, incX, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], expected1[i], dbleps, "dswap(case 90)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], expected2[i], dbleps, "dswap(case 91)"); + } + }; + }; + + + { + int N = 1; + float X[] = { -0.316f, -0.529f }; + int incX = 1; + float Y[] = { -0.313f, 0.363f }; + int incY = -1; + float expected1[] = { -0.313f, 0.363f }; + float expected2[] = { -0.316f, -0.529f }; + cblas_cswap(N, X, incX, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], expected1[2*i], flteps, "cswap(case 92) real"); + gsl_test_rel(X[2*i+1], expected1[2*i+1], flteps, "cswap(case 92) imag"); + }; + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[2*i], expected2[2*i], flteps, "cswap(case 93) real"); + gsl_test_rel(Y[2*i+1], expected2[2*i+1], flteps, "cswap(case 93) imag"); + }; + }; + }; + + + { + int N = 1; + double X[] = { 0.512, -0.89 }; + int incX = 1; + double Y[] = { -0.225, -0.511 }; + int incY = -1; + double expected1[] = { -0.225, -0.511 }; + double expected2[] = { 0.512, -0.89 }; + cblas_zswap(N, X, incX, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], expected1[2*i], dbleps, "zswap(case 94) real"); + gsl_test_rel(X[2*i+1], expected1[2*i+1], dbleps, "zswap(case 94) imag"); + }; + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[2*i], expected2[2*i], dbleps, "zswap(case 95) real"); + gsl_test_rel(Y[2*i+1], expected2[2*i+1], dbleps, "zswap(case 95) imag"); + }; + }; + }; + + + { + int N = 1; + float X[] = { 0.336f }; + int incX = -1; + float Y[] = { -0.431f }; + int incY = 1; + float expected1[] = { -0.431f }; + float expected2[] = { 0.336f }; + cblas_sswap(N, X, incX, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], expected1[i], flteps, "sswap(case 96)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], expected2[i], flteps, "sswap(case 97)"); + } + }; + }; + + + { + int N = 1; + double X[] = { 0.764 }; + int incX = -1; + double Y[] = { -0.293 }; + int incY = 1; + double expected1[] = { -0.293 }; + double expected2[] = { 0.764 }; + cblas_dswap(N, X, incX, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], expected1[i], dbleps, "dswap(case 98)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], expected2[i], dbleps, "dswap(case 99)"); + } + }; + }; + + + { + int N = 1; + float X[] = { -0.239f, 0.361f }; + int incX = -1; + float Y[] = { 0.149f, 0.347f }; + int incY = 1; + float expected1[] = { 0.149f, 0.347f }; + float expected2[] = { -0.239f, 0.361f }; + cblas_cswap(N, X, incX, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], expected1[2*i], flteps, "cswap(case 100) real"); + gsl_test_rel(X[2*i+1], expected1[2*i+1], flteps, "cswap(case 100) imag"); + }; + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[2*i], expected2[2*i], flteps, "cswap(case 101) real"); + gsl_test_rel(Y[2*i+1], expected2[2*i+1], flteps, "cswap(case 101) imag"); + }; + }; + }; + + + { + int N = 1; + double X[] = { -0.171, -0.936 }; + int incX = -1; + double Y[] = { 0.495, -0.835 }; + int incY = 1; + double expected1[] = { 0.495, -0.835 }; + double expected2[] = { -0.171, -0.936 }; + cblas_zswap(N, X, incX, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], expected1[2*i], dbleps, "zswap(case 102) real"); + gsl_test_rel(X[2*i+1], expected1[2*i+1], dbleps, "zswap(case 102) imag"); + }; + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[2*i], expected2[2*i], dbleps, "zswap(case 103) real"); + gsl_test_rel(Y[2*i+1], expected2[2*i+1], dbleps, "zswap(case 103) imag"); + }; + }; + }; + + + { + int N = 1; + float X[] = { -0.405f }; + int incX = -1; + float Y[] = { -0.213f }; + int incY = -1; + float expected1[] = { -0.213f }; + float expected2[] = { -0.405f }; + cblas_sswap(N, X, incX, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], expected1[i], flteps, "sswap(case 104)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], expected2[i], flteps, "sswap(case 105)"); + } + }; + }; + + + { + int N = 1; + double X[] = { -0.761 }; + int incX = -1; + double Y[] = { -0.585 }; + int incY = -1; + double expected1[] = { -0.585 }; + double expected2[] = { -0.761 }; + cblas_dswap(N, X, incX, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], expected1[i], dbleps, "dswap(case 106)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], expected2[i], dbleps, "dswap(case 107)"); + } + }; + }; + + + { + int N = 1; + float X[] = { 0.853f, 0.146f }; + int incX = -1; + float Y[] = { 0.009f, -0.178f }; + int incY = -1; + float expected1[] = { 0.009f, -0.178f }; + float expected2[] = { 0.853f, 0.146f }; + cblas_cswap(N, X, incX, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], expected1[2*i], flteps, "cswap(case 108) real"); + gsl_test_rel(X[2*i+1], expected1[2*i+1], flteps, "cswap(case 108) imag"); + }; + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[2*i], expected2[2*i], flteps, "cswap(case 109) real"); + gsl_test_rel(Y[2*i+1], expected2[2*i+1], flteps, "cswap(case 109) imag"); + }; + }; + }; + + + { + int N = 1; + double X[] = { -0.228, 0.386 }; + int incX = -1; + double Y[] = { 0.988, -0.084 }; + int incY = -1; + double expected1[] = { 0.988, -0.084 }; + double expected2[] = { -0.228, 0.386 }; + cblas_zswap(N, X, incX, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], expected1[2*i], dbleps, "zswap(case 110) real"); + gsl_test_rel(X[2*i+1], expected1[2*i+1], dbleps, "zswap(case 110) imag"); + }; + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[2*i], expected2[2*i], dbleps, "zswap(case 111) real"); + gsl_test_rel(Y[2*i+1], expected2[2*i+1], dbleps, "zswap(case 111) imag"); + }; + }; + }; + + +} diff --git a/gsl-2.5/cblas/test_symm.c b/gsl-2.5/cblas/test_symm.c new file mode 100644 index 00000000..88a672a7 --- /dev/null +++ b/gsl-2.5/cblas/test_symm.c @@ -0,0 +1,827 @@ +#include +#include +#include +#include + +#include "tests.h" + +void +test_symm (void) { +const double flteps = 1e-4, dbleps = 1e-6; + { + int order = 101; + int side = 141; + int uplo = 121; + int M = 1; + int N = 2; + float alpha = -0.3f; + float beta = -1.0f; + float A[] = { -0.581f }; + int lda = 1; + float B[] = { 0.157f, 0.451f }; + int ldb = 2; + float C[] = { -0.869f, -0.871f }; + int ldc = 2; + float C_expected[] = { 0.896365f, 0.949609f }; + cblas_ssymm(order, side, uplo, M, N, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[i], C_expected[i], flteps, "ssymm(case 1518)"); + } + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 121; + int M = 1; + int N = 2; + float alpha = -0.3f; + float beta = -1.0f; + float A[] = { 0.874f }; + int lda = 1; + float B[] = { 0.085f, 0.069f }; + int ldb = 1; + float C[] = { -0.495f, -0.828f }; + int ldc = 1; + float C_expected[] = { 0.472713f, 0.809908f }; + cblas_ssymm(order, side, uplo, M, N, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[i], C_expected[i], flteps, "ssymm(case 1519)"); + } + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 121; + int M = 1; + int N = 2; + float alpha = -1.0f; + float beta = 0.0f; + float A[] = { -0.671f, -0.343f, 0.6f, 0.177f }; + int lda = 2; + float B[] = { 0.043f, 0.01f }; + int ldb = 2; + float C[] = { 0.988f, 0.478f }; + int ldc = 2; + float C_expected[] = { 0.032283f, 0.012979f }; + cblas_ssymm(order, side, uplo, M, N, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[i], C_expected[i], flteps, "ssymm(case 1520)"); + } + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 121; + int M = 1; + int N = 2; + float alpha = -1.0f; + float beta = 0.0f; + float A[] = { 0.069f, 0.096f, 0.139f, -0.044f }; + int lda = 2; + float B[] = { -0.448f, 0.07f }; + int ldb = 1; + float C[] = { 0.361f, 0.995f }; + int ldc = 1; + float C_expected[] = { 0.021182f, 0.065352f }; + cblas_ssymm(order, side, uplo, M, N, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[i], C_expected[i], flteps, "ssymm(case 1521)"); + } + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 122; + int M = 1; + int N = 2; + float alpha = 0.0f; + float beta = -0.3f; + float A[] = { 0.745f }; + int lda = 1; + float B[] = { -0.269f, 0.448f }; + int ldb = 2; + float C[] = { -0.986f, 0.2f }; + int ldc = 2; + float C_expected[] = { 0.2958f, -0.06f }; + cblas_ssymm(order, side, uplo, M, N, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[i], C_expected[i], flteps, "ssymm(case 1522)"); + } + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 122; + int M = 1; + int N = 2; + float alpha = 0.0f; + float beta = -0.3f; + float A[] = { 0.96f }; + int lda = 1; + float B[] = { 0.392f, -0.07f }; + int ldb = 1; + float C[] = { -0.235f, 0.554f }; + int ldc = 1; + float C_expected[] = { 0.0705f, -0.1662f }; + cblas_ssymm(order, side, uplo, M, N, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[i], C_expected[i], flteps, "ssymm(case 1523)"); + } + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 122; + int M = 1; + int N = 2; + float alpha = -0.3f; + float beta = 0.1f; + float A[] = { -0.839f, 0.498f, -0.215f, -0.314f }; + int lda = 2; + float B[] = { -0.66f, 0.593f }; + int ldb = 2; + float C[] = { -0.806f, 0.525f }; + int ldc = 2; + float C_expected[] = { -0.208474f, 0.0657906f }; + cblas_ssymm(order, side, uplo, M, N, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[i], C_expected[i], flteps, "ssymm(case 1524)"); + } + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 122; + int M = 1; + int N = 2; + float alpha = -0.3f; + float beta = 0.1f; + float A[] = { 0.994f, -0.117f, -0.639f, 0.925f }; + int lda = 2; + float B[] = { -0.478f, 0.147f }; + int ldb = 1; + float C[] = { -0.814f, 0.316f }; + int ldc = 1; + float C_expected[] = { 0.0662993f, -0.0259703f }; + cblas_ssymm(order, side, uplo, M, N, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[i], C_expected[i], flteps, "ssymm(case 1525)"); + } + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 121; + int M = 1; + int N = 2; + double alpha = -0.3; + double beta = 1; + double A[] = { -0.981 }; + int lda = 1; + double B[] = { -0.823, 0.83 }; + int ldb = 2; + double C[] = { 0.991, 0.382 }; + int ldc = 2; + double C_expected[] = { 0.7487911, 0.626269 }; + cblas_dsymm(order, side, uplo, M, N, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[i], C_expected[i], dbleps, "dsymm(case 1526)"); + } + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 121; + int M = 1; + int N = 2; + double alpha = -0.3; + double beta = 1; + double A[] = { -0.248 }; + int lda = 1; + double B[] = { 0.74, 0.068 }; + int ldb = 1; + double C[] = { -0.905, 0.742 }; + int ldc = 1; + double C_expected[] = { -0.849944, 0.7470592 }; + cblas_dsymm(order, side, uplo, M, N, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[i], C_expected[i], dbleps, "dsymm(case 1527)"); + } + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 121; + int M = 1; + int N = 2; + double alpha = -1; + double beta = 1; + double A[] = { 0.591, -0.01, -0.192, -0.376 }; + int lda = 2; + double B[] = { 0.561, 0.946 }; + int ldb = 2; + double C[] = { 0.763, 0.189 }; + int ldc = 2; + double C_expected[] = { 0.440909, 0.550306 }; + cblas_dsymm(order, side, uplo, M, N, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[i], C_expected[i], dbleps, "dsymm(case 1528)"); + } + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 121; + int M = 1; + int N = 2; + double alpha = -1; + double beta = 1; + double A[] = { -0.786, 0.87, 0.222, -0.043 }; + int lda = 2; + double B[] = { -0.503, -0.526 }; + int ldb = 1; + double C[] = { -0.027, -0.391 }; + int ldc = 1; + double C_expected[] = { -0.305586, -0.301952 }; + cblas_dsymm(order, side, uplo, M, N, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[i], C_expected[i], dbleps, "dsymm(case 1529)"); + } + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 122; + int M = 1; + int N = 2; + double alpha = 0.1; + double beta = 0.1; + double A[] = { -0.468 }; + int lda = 1; + double B[] = { -0.881, 0.692 }; + int ldb = 2; + double C[] = { -0.812, -0.395 }; + int ldc = 2; + double C_expected[] = { -0.0399692, -0.0718856 }; + cblas_dsymm(order, side, uplo, M, N, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[i], C_expected[i], dbleps, "dsymm(case 1530)"); + } + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 122; + int M = 1; + int N = 2; + double alpha = 0.1; + double beta = 0.1; + double A[] = { 0.849 }; + int lda = 1; + double B[] = { -0.887, 0.518 }; + int ldb = 1; + double C[] = { 0.414, -0.251 }; + int ldc = 1; + double C_expected[] = { -0.0339063, 0.0188782 }; + cblas_dsymm(order, side, uplo, M, N, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[i], C_expected[i], dbleps, "dsymm(case 1531)"); + } + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 122; + int M = 1; + int N = 2; + double alpha = -1; + double beta = 1; + double A[] = { 0.457, 0.624, 0.807, 0.349 }; + int lda = 2; + double B[] = { -0.609, 0.03 }; + int ldb = 2; + double C[] = { 0.719, -0.624 }; + int ldc = 2; + double C_expected[] = { 0.973103, -0.143007 }; + cblas_dsymm(order, side, uplo, M, N, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[i], C_expected[i], dbleps, "dsymm(case 1532)"); + } + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 122; + int M = 1; + int N = 2; + double alpha = -1; + double beta = 1; + double A[] = { -0.133, -0.117, -0.163, 0.795 }; + int lda = 2; + double B[] = { -0.882, 0.549 }; + int ldb = 1; + double C[] = { 0.715, -0.327 }; + int ldc = 1; + double C_expected[] = { 0.661927, -0.866649 }; + cblas_dsymm(order, side, uplo, M, N, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[i], C_expected[i], dbleps, "dsymm(case 1533)"); + } + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 121; + int M = 1; + int N = 2; + float alpha[2] = {-1.0f, 0.0f}; + float beta[2] = {1.0f, 0.0f}; + float A[] = { 0.476f, 0.816f }; + int lda = 1; + float B[] = { 0.282f, 0.852f, -0.891f, -0.588f }; + int ldb = 2; + float C[] = { 0.9f, 0.486f, -0.78f, -0.637f }; + int ldc = 2; + float C_expected[] = { 1.461f, -0.149664f, -0.835692f, 0.369944f }; + cblas_csymm(order, side, uplo, M, N, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "csymm(case 1534) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "csymm(case 1534) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 121; + int M = 1; + int N = 2; + float alpha[2] = {-1.0f, 0.0f}; + float beta[2] = {1.0f, 0.0f}; + float A[] = { 0.048f, 0.172f }; + int lda = 1; + float B[] = { 0.786f, 0.783f, 0.809f, -0.569f }; + int ldb = 1; + float C[] = { -0.227f, -0.215f, 0.881f, 0.233f }; + int ldc = 1; + float C_expected[] = { -0.130052f, -0.387776f, 0.7443f, 0.121164f }; + cblas_csymm(order, side, uplo, M, N, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "csymm(case 1535) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "csymm(case 1535) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 121; + int M = 1; + int N = 2; + float alpha[2] = {0.0f, 1.0f}; + float beta[2] = {0.0f, 1.0f}; + float A[] = { -0.495f, -0.012f, 0.843f, -0.986f, -0.243f, 0.833f, 0.921f, 0.004f }; + int lda = 2; + float B[] = { 0.876f, 0.612f, 0.805f, -0.57f }; + int ldb = 2; + float C[] = { 0.938f, -0.24f, -0.874f, -0.062f }; + int ldc = 2; + float C_expected[] = { 1.82769f, 0.628319f, 0.93157f, 1.21158f }; + cblas_csymm(order, side, uplo, M, N, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "csymm(case 1536) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "csymm(case 1536) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 121; + int M = 1; + int N = 2; + float alpha[2] = {0.0f, 1.0f}; + float beta[2] = {0.0f, 1.0f}; + float A[] = { -0.812f, 0.83f, 0.705f, 0.15f, -0.463f, 0.901f, -0.547f, -0.483f }; + int lda = 2; + float B[] = { -0.808f, -0.664f, 0.352f, -0.102f }; + int ldb = 1; + float C[] = { -0.64f, 0.399f, 0.896f, -0.163f }; + int ldc = 1; + float C_expected[] = { -0.631906f, 0.496142f, 0.697798f, 1.62656f }; + cblas_csymm(order, side, uplo, M, N, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "csymm(case 1537) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "csymm(case 1537) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 122; + int M = 1; + int N = 2; + float alpha[2] = {-1.0f, 0.0f}; + float beta[2] = {0.0f, 1.0f}; + float A[] = { 0.342f, -0.906f }; + int lda = 1; + float B[] = { 0.676f, 0.863f, -0.517f, -0.138f }; + int ldb = 2; + float C[] = { 0.274f, 0.388f, -0.271f, 0.205f }; + int ldc = 2; + float C_expected[] = { -1.40107f, 0.59131f, 0.096842f, -0.692206f }; + cblas_csymm(order, side, uplo, M, N, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "csymm(case 1538) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "csymm(case 1538) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 122; + int M = 1; + int N = 2; + float alpha[2] = {-1.0f, 0.0f}; + float beta[2] = {0.0f, 1.0f}; + float A[] = { 0.418f, 0.354f }; + int lda = 1; + float B[] = { -0.74f, 0.018f, 0.395f, 0.248f }; + int ldb = 1; + float C[] = { -0.162f, 0.175f, -0.853f, 0.652f }; + int ldc = 1; + float C_expected[] = { 0.140692f, 0.092436f, -0.729318f, -1.09649f }; + cblas_csymm(order, side, uplo, M, N, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "csymm(case 1539) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "csymm(case 1539) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 122; + int M = 1; + int N = 2; + float alpha[2] = {-0.3f, 0.1f}; + float beta[2] = {0.0f, 0.1f}; + float A[] = { 0.12f, 0.496f, 0.313f, -0.136f, 0.987f, 0.532f, 0.58f, -0.687f }; + int lda = 2; + float B[] = { -0.587f, 0.278f, 0.857f, 0.136f }; + int ldb = 2; + float C[] = { 0.162f, 0.249f, -0.665f, 0.456f }; + int ldc = 2; + float C_expected[] = { -0.22769f, -0.0269913f, 0.0502096f, 0.0841558f }; + cblas_csymm(order, side, uplo, M, N, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "csymm(case 1540) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "csymm(case 1540) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 122; + int M = 1; + int N = 2; + float alpha[2] = {-0.3f, 0.1f}; + float beta[2] = {0.0f, 0.1f}; + float A[] = { 0.579f, -0.859f, 0.192f, -0.737f, 0.396f, -0.498f, 0.751f, -0.379f }; + int lda = 2; + float B[] = { 0.84f, -0.755f, -0.019f, -0.063f }; + int ldb = 1; + float C[] = { 0.04f, 0.639f, -0.876f, -0.778f }; + int ldc = 1; + float C_expected[] = { 0.115459f, 0.329813f, 0.288206f, 0.110315f }; + cblas_csymm(order, side, uplo, M, N, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "csymm(case 1541) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "csymm(case 1541) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 121; + int M = 1; + int N = 2; + double alpha[2] = {0, 0}; + double beta[2] = {0, 0}; + double A[] = { 0.511, -0.486 }; + int lda = 1; + double B[] = { 0.985, -0.923, -0.234, -0.756 }; + int ldb = 2; + double C[] = { -0.16, 0.049, 0.618, -0.349 }; + int ldc = 2; + double C_expected[] = { 0.0, 0.0, 0.0, 0.0 }; + cblas_zsymm(order, side, uplo, M, N, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zsymm(case 1542) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zsymm(case 1542) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 121; + int M = 1; + int N = 2; + double alpha[2] = {0, 0}; + double beta[2] = {0, 0}; + double A[] = { 0.46, -0.816 }; + int lda = 1; + double B[] = { 0.404, 0.113, -0.904, -0.627 }; + int ldb = 1; + double C[] = { 0.114, 0.318, 0.636, -0.839 }; + int ldc = 1; + double C_expected[] = { 0.0, 0.0, 0.0, 0.0 }; + cblas_zsymm(order, side, uplo, M, N, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zsymm(case 1543) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zsymm(case 1543) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 121; + int M = 1; + int N = 2; + double alpha[2] = {-1, 0}; + double beta[2] = {-0.3, 0.1}; + double A[] = { -0.835, 0.344, 0.975, 0.634, 0.312, -0.659, -0.624, -0.175 }; + int lda = 2; + double B[] = { -0.707, -0.846, 0.825, -0.661 }; + int ldb = 2; + double C[] = { 0.352, -0.499, 0.267, 0.548 }; + int ldc = 2; + double C_expected[] = { -2.160518, -0.156877, 0.648536, 0.867299 }; + cblas_zsymm(order, side, uplo, M, N, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zsymm(case 1544) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zsymm(case 1544) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 121; + int M = 1; + int N = 2; + double alpha[2] = {-1, 0}; + double beta[2] = {-0.3, 0.1}; + double A[] = { -0.409, 0.013, -0.308, -0.317, -0.535, -0.697, -0.385, 0.119 }; + int lda = 2; + double B[] = { 0.299, -0.233, 0.093, 0.664 }; + int ldb = 1; + double C[] = { 0.699, 0.47, -0.347, -0.182 }; + int ldc = 1; + double C_expected[] = { -0.550491, 0.249777, 0.559487, 0.348221 }; + cblas_zsymm(order, side, uplo, M, N, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zsymm(case 1545) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zsymm(case 1545) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 122; + int M = 1; + int N = 2; + double alpha[2] = {1, 0}; + double beta[2] = {0, 1}; + double A[] = { -0.151, 0.635 }; + int lda = 1; + double B[] = { 0.711, -0.869, 0.153, 0.647 }; + int ldb = 2; + double C[] = { -0.299, 0.43, -0.307, 0.133 }; + int ldc = 2; + double C_expected[] = { 0.014454, 0.283704, -0.566948, -0.307542 }; + cblas_zsymm(order, side, uplo, M, N, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zsymm(case 1546) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zsymm(case 1546) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 122; + int M = 1; + int N = 2; + double alpha[2] = {1, 0}; + double beta[2] = {0, 1}; + double A[] = { 0.793, -0.543 }; + int lda = 1; + double B[] = { 0.054, -0.045, 0.989, 0.453 }; + int ldb = 1; + double C[] = { 0.443, -0.641, -0.809, -0.83 }; + int ldc = 1; + double C_expected[] = { 0.659387, 0.377993, 1.860256, -0.986798 }; + cblas_zsymm(order, side, uplo, M, N, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zsymm(case 1547) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zsymm(case 1547) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 122; + int M = 1; + int N = 2; + double alpha[2] = {1, 0}; + double beta[2] = {-1, 0}; + double A[] = { -0.432, -0.293, -0.819, 0.44, -0.818, -0.258, -0.836, 0.683 }; + int lda = 2; + double B[] = { -0.259, -0.878, 0.161, 0.744 }; + int ldb = 2; + double C[] = { 0.436, -0.655, -0.61, -0.875 }; + int ldc = 2; + double C_expected[] = { -0.521112, 0.460053, -0.04741, 1.148005 }; + cblas_zsymm(order, side, uplo, M, N, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zsymm(case 1548) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zsymm(case 1548) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 122; + int M = 1; + int N = 2; + double alpha[2] = {1, 0}; + double beta[2] = {-1, 0}; + double A[] = { -0.656, 0.378, -0.688, 0.676, 0.967, -0.804, 0.455, -0.425 }; + int lda = 2; + double B[] = { 0.791, -0.947, -0.945, -0.444 }; + int ldb = 1; + double C[] = { 0.014, -0.814, -0.091, -0.417 }; + int ldc = 1; + double C_expected[] = { 0.775374, 1.400882, -0.431711, 1.802857 }; + cblas_zsymm(order, side, uplo, M, N, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zsymm(case 1549) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zsymm(case 1549) imag"); + }; + }; + }; + + +} diff --git a/gsl-2.5/cblas/test_symv.c b/gsl-2.5/cblas/test_symv.c new file mode 100644 index 00000000..923a0f59 --- /dev/null +++ b/gsl-2.5/cblas/test_symv.c @@ -0,0 +1,379 @@ +#include +#include +#include +#include + +#include "tests.h" + +void +test_symv (void) { +const double flteps = 1e-4, dbleps = 1e-6; + { + int order = 101; + int uplo = 121; + float alpha = 1.0f; + float beta = -1.0f; + int N = 1; + int lda = 1; + float A[] = { -0.428f }; + float X[] = { -0.34f }; + int incX = -1; + float Y[] = { -0.888f }; + int incY = -1; + float y_expected[] = { 1.03352f }; + cblas_ssymv(order, uplo, N, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "ssymv(case 1054)"); + } + }; + }; + + + { + int order = 101; + int uplo = 121; + float alpha = 1.0f; + float beta = -1.0f; + int N = 1; + int lda = 1; + float A[] = { -0.428f }; + float X[] = { -0.34f }; + int incX = -1; + float Y[] = { -0.888f }; + int incY = -1; + float y_expected[] = { 1.03352f }; + cblas_ssymv(order, uplo, N, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "ssymv(case 1055)"); + } + }; + }; + + + { + int order = 101; + int uplo = 122; + float alpha = 1.0f; + float beta = -1.0f; + int N = 1; + int lda = 1; + float A[] = { -0.428f }; + float X[] = { -0.34f }; + int incX = -1; + float Y[] = { -0.888f }; + int incY = -1; + float y_expected[] = { 1.03352f }; + cblas_ssymv(order, uplo, N, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "ssymv(case 1056)"); + } + }; + }; + + + { + int order = 101; + int uplo = 122; + float alpha = 1.0f; + float beta = -1.0f; + int N = 1; + int lda = 1; + float A[] = { -0.428f }; + float X[] = { -0.34f }; + int incX = -1; + float Y[] = { -0.888f }; + int incY = -1; + float y_expected[] = { 1.03352f }; + cblas_ssymv(order, uplo, N, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "ssymv(case 1057)"); + } + }; + }; + + + { + int order = 102; + int uplo = 121; + float alpha = 1.0f; + float beta = -1.0f; + int N = 1; + int lda = 1; + float A[] = { -0.428f }; + float X[] = { -0.34f }; + int incX = -1; + float Y[] = { -0.888f }; + int incY = -1; + float y_expected[] = { 1.03352f }; + cblas_ssymv(order, uplo, N, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "ssymv(case 1058)"); + } + }; + }; + + + { + int order = 102; + int uplo = 121; + float alpha = 1.0f; + float beta = -1.0f; + int N = 1; + int lda = 1; + float A[] = { -0.428f }; + float X[] = { -0.34f }; + int incX = -1; + float Y[] = { -0.888f }; + int incY = -1; + float y_expected[] = { 1.03352f }; + cblas_ssymv(order, uplo, N, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "ssymv(case 1059)"); + } + }; + }; + + + { + int order = 102; + int uplo = 122; + float alpha = 1.0f; + float beta = -1.0f; + int N = 1; + int lda = 1; + float A[] = { -0.428f }; + float X[] = { -0.34f }; + int incX = -1; + float Y[] = { -0.888f }; + int incY = -1; + float y_expected[] = { 1.03352f }; + cblas_ssymv(order, uplo, N, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "ssymv(case 1060)"); + } + }; + }; + + + { + int order = 102; + int uplo = 122; + float alpha = 1.0f; + float beta = -1.0f; + int N = 1; + int lda = 1; + float A[] = { -0.428f }; + float X[] = { -0.34f }; + int incX = -1; + float Y[] = { -0.888f }; + int incY = -1; + float y_expected[] = { 1.03352f }; + cblas_ssymv(order, uplo, N, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "ssymv(case 1061)"); + } + }; + }; + + + { + int order = 101; + int uplo = 121; + double alpha = 0; + double beta = -0.3; + int N = 1; + int lda = 1; + double A[] = { 0.544 }; + double X[] = { -0.601 }; + int incX = -1; + double Y[] = { -0.852 }; + int incY = -1; + double y_expected[] = { 0.2556 }; + cblas_dsymv(order, uplo, N, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "dsymv(case 1062)"); + } + }; + }; + + + { + int order = 101; + int uplo = 121; + double alpha = 0; + double beta = -0.3; + int N = 1; + int lda = 1; + double A[] = { 0.544 }; + double X[] = { -0.601 }; + int incX = -1; + double Y[] = { -0.852 }; + int incY = -1; + double y_expected[] = { 0.2556 }; + cblas_dsymv(order, uplo, N, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "dsymv(case 1063)"); + } + }; + }; + + + { + int order = 101; + int uplo = 122; + double alpha = 0; + double beta = -0.3; + int N = 1; + int lda = 1; + double A[] = { 0.544 }; + double X[] = { -0.601 }; + int incX = -1; + double Y[] = { -0.852 }; + int incY = -1; + double y_expected[] = { 0.2556 }; + cblas_dsymv(order, uplo, N, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "dsymv(case 1064)"); + } + }; + }; + + + { + int order = 101; + int uplo = 122; + double alpha = 0; + double beta = -0.3; + int N = 1; + int lda = 1; + double A[] = { 0.544 }; + double X[] = { -0.601 }; + int incX = -1; + double Y[] = { -0.852 }; + int incY = -1; + double y_expected[] = { 0.2556 }; + cblas_dsymv(order, uplo, N, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "dsymv(case 1065)"); + } + }; + }; + + + { + int order = 102; + int uplo = 121; + double alpha = 0; + double beta = -0.3; + int N = 1; + int lda = 1; + double A[] = { 0.544 }; + double X[] = { -0.601 }; + int incX = -1; + double Y[] = { -0.852 }; + int incY = -1; + double y_expected[] = { 0.2556 }; + cblas_dsymv(order, uplo, N, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "dsymv(case 1066)"); + } + }; + }; + + + { + int order = 102; + int uplo = 121; + double alpha = 0; + double beta = -0.3; + int N = 1; + int lda = 1; + double A[] = { 0.544 }; + double X[] = { -0.601 }; + int incX = -1; + double Y[] = { -0.852 }; + int incY = -1; + double y_expected[] = { 0.2556 }; + cblas_dsymv(order, uplo, N, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "dsymv(case 1067)"); + } + }; + }; + + + { + int order = 102; + int uplo = 122; + double alpha = 0; + double beta = -0.3; + int N = 1; + int lda = 1; + double A[] = { 0.544 }; + double X[] = { -0.601 }; + int incX = -1; + double Y[] = { -0.852 }; + int incY = -1; + double y_expected[] = { 0.2556 }; + cblas_dsymv(order, uplo, N, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "dsymv(case 1068)"); + } + }; + }; + + + { + int order = 102; + int uplo = 122; + double alpha = 0; + double beta = -0.3; + int N = 1; + int lda = 1; + double A[] = { 0.544 }; + double X[] = { -0.601 }; + int incX = -1; + double Y[] = { -0.852 }; + int incY = -1; + double y_expected[] = { 0.2556 }; + cblas_dsymv(order, uplo, N, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "dsymv(case 1069)"); + } + }; + }; + + +} diff --git a/gsl-2.5/cblas/test_syr.c b/gsl-2.5/cblas/test_syr.c new file mode 100644 index 00000000..fc7b3976 --- /dev/null +++ b/gsl-2.5/cblas/test_syr.c @@ -0,0 +1,171 @@ +#include +#include +#include +#include + +#include "tests.h" + +void +test_syr (void) { +const double flteps = 1e-4, dbleps = 1e-6; + { + int order = 101; + int uplo = 121; + int N = 1; + int lda = 1; + float alpha = 0.1f; + float A[] = { -0.291f }; + float X[] = { 0.845f }; + int incX = -1; + float A_expected[] = { -0.219597f }; + cblas_ssyr(order, uplo, N, alpha, X, incX, A, lda); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(A[i], A_expected[i], flteps, "ssyr(case 1402)"); + } + }; + }; + + + { + int order = 101; + int uplo = 122; + int N = 1; + int lda = 1; + float alpha = 0.1f; + float A[] = { -0.291f }; + float X[] = { 0.845f }; + int incX = -1; + float A_expected[] = { -0.219597f }; + cblas_ssyr(order, uplo, N, alpha, X, incX, A, lda); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(A[i], A_expected[i], flteps, "ssyr(case 1403)"); + } + }; + }; + + + { + int order = 102; + int uplo = 121; + int N = 1; + int lda = 1; + float alpha = 0.1f; + float A[] = { -0.291f }; + float X[] = { 0.845f }; + int incX = -1; + float A_expected[] = { -0.219597f }; + cblas_ssyr(order, uplo, N, alpha, X, incX, A, lda); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(A[i], A_expected[i], flteps, "ssyr(case 1404)"); + } + }; + }; + + + { + int order = 102; + int uplo = 122; + int N = 1; + int lda = 1; + float alpha = 0.1f; + float A[] = { -0.291f }; + float X[] = { 0.845f }; + int incX = -1; + float A_expected[] = { -0.219597f }; + cblas_ssyr(order, uplo, N, alpha, X, incX, A, lda); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(A[i], A_expected[i], flteps, "ssyr(case 1405)"); + } + }; + }; + + + { + int order = 101; + int uplo = 121; + int N = 1; + int lda = 1; + double alpha = -0.3; + double A[] = { -0.65 }; + double X[] = { -0.891 }; + int incX = -1; + double A_expected[] = { -0.8881643 }; + cblas_dsyr(order, uplo, N, alpha, X, incX, A, lda); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(A[i], A_expected[i], dbleps, "dsyr(case 1406)"); + } + }; + }; + + + { + int order = 101; + int uplo = 122; + int N = 1; + int lda = 1; + double alpha = -0.3; + double A[] = { -0.65 }; + double X[] = { -0.891 }; + int incX = -1; + double A_expected[] = { -0.8881643 }; + cblas_dsyr(order, uplo, N, alpha, X, incX, A, lda); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(A[i], A_expected[i], dbleps, "dsyr(case 1407)"); + } + }; + }; + + + { + int order = 102; + int uplo = 121; + int N = 1; + int lda = 1; + double alpha = -0.3; + double A[] = { -0.65 }; + double X[] = { -0.891 }; + int incX = -1; + double A_expected[] = { -0.8881643 }; + cblas_dsyr(order, uplo, N, alpha, X, incX, A, lda); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(A[i], A_expected[i], dbleps, "dsyr(case 1408)"); + } + }; + }; + + + { + int order = 102; + int uplo = 122; + int N = 1; + int lda = 1; + double alpha = -0.3; + double A[] = { -0.65 }; + double X[] = { -0.891 }; + int incX = -1; + double A_expected[] = { -0.8881643 }; + cblas_dsyr(order, uplo, N, alpha, X, incX, A, lda); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(A[i], A_expected[i], dbleps, "dsyr(case 1409)"); + } + }; + }; + + +} diff --git a/gsl-2.5/cblas/test_syr2.c b/gsl-2.5/cblas/test_syr2.c new file mode 100644 index 00000000..5f214f1e --- /dev/null +++ b/gsl-2.5/cblas/test_syr2.c @@ -0,0 +1,187 @@ +#include +#include +#include +#include + +#include "tests.h" + +void +test_syr2 (void) { +const double flteps = 1e-4, dbleps = 1e-6; + { + int order = 101; + int uplo = 121; + int N = 1; + int lda = 1; + float alpha = 0.0f; + float A[] = { 0.862f }; + float X[] = { 0.823f }; + int incX = -1; + float Y[] = { 0.699f }; + int incY = -1; + float A_expected[] = { 0.862f }; + cblas_ssyr2(order, uplo, N, alpha, X, incX, Y, incY, A, lda); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(A[i], A_expected[i], flteps, "ssyr2(case 1434)"); + } + }; + }; + + + { + int order = 101; + int uplo = 122; + int N = 1; + int lda = 1; + float alpha = 0.0f; + float A[] = { 0.862f }; + float X[] = { 0.823f }; + int incX = -1; + float Y[] = { 0.699f }; + int incY = -1; + float A_expected[] = { 0.862f }; + cblas_ssyr2(order, uplo, N, alpha, X, incX, Y, incY, A, lda); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(A[i], A_expected[i], flteps, "ssyr2(case 1435)"); + } + }; + }; + + + { + int order = 102; + int uplo = 121; + int N = 1; + int lda = 1; + float alpha = 0.0f; + float A[] = { 0.862f }; + float X[] = { 0.823f }; + int incX = -1; + float Y[] = { 0.699f }; + int incY = -1; + float A_expected[] = { 0.862f }; + cblas_ssyr2(order, uplo, N, alpha, X, incX, Y, incY, A, lda); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(A[i], A_expected[i], flteps, "ssyr2(case 1436)"); + } + }; + }; + + + { + int order = 102; + int uplo = 122; + int N = 1; + int lda = 1; + float alpha = 0.0f; + float A[] = { 0.862f }; + float X[] = { 0.823f }; + int incX = -1; + float Y[] = { 0.699f }; + int incY = -1; + float A_expected[] = { 0.862f }; + cblas_ssyr2(order, uplo, N, alpha, X, incX, Y, incY, A, lda); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(A[i], A_expected[i], flteps, "ssyr2(case 1437)"); + } + }; + }; + + + { + int order = 101; + int uplo = 121; + int N = 1; + int lda = 1; + double alpha = 0; + double A[] = { -0.824 }; + double X[] = { 0.684 }; + int incX = -1; + double Y[] = { 0.965 }; + int incY = -1; + double A_expected[] = { -0.824 }; + cblas_dsyr2(order, uplo, N, alpha, X, incX, Y, incY, A, lda); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(A[i], A_expected[i], dbleps, "dsyr2(case 1438)"); + } + }; + }; + + + { + int order = 101; + int uplo = 122; + int N = 1; + int lda = 1; + double alpha = 0; + double A[] = { -0.824 }; + double X[] = { 0.684 }; + int incX = -1; + double Y[] = { 0.965 }; + int incY = -1; + double A_expected[] = { -0.824 }; + cblas_dsyr2(order, uplo, N, alpha, X, incX, Y, incY, A, lda); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(A[i], A_expected[i], dbleps, "dsyr2(case 1439)"); + } + }; + }; + + + { + int order = 102; + int uplo = 121; + int N = 1; + int lda = 1; + double alpha = 0; + double A[] = { -0.824 }; + double X[] = { 0.684 }; + int incX = -1; + double Y[] = { 0.965 }; + int incY = -1; + double A_expected[] = { -0.824 }; + cblas_dsyr2(order, uplo, N, alpha, X, incX, Y, incY, A, lda); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(A[i], A_expected[i], dbleps, "dsyr2(case 1440)"); + } + }; + }; + + + { + int order = 102; + int uplo = 122; + int N = 1; + int lda = 1; + double alpha = 0; + double A[] = { -0.824 }; + double X[] = { 0.684 }; + int incX = -1; + double Y[] = { 0.965 }; + int incY = -1; + double A_expected[] = { -0.824 }; + cblas_dsyr2(order, uplo, N, alpha, X, incX, Y, incY, A, lda); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(A[i], A_expected[i], dbleps, "dsyr2(case 1441)"); + } + }; + }; + + +} diff --git a/gsl-2.5/cblas/test_syr2k.c b/gsl-2.5/cblas/test_syr2k.c new file mode 100644 index 00000000..8955d0e7 --- /dev/null +++ b/gsl-2.5/cblas/test_syr2k.c @@ -0,0 +1,827 @@ +#include +#include +#include +#include + +#include "tests.h" + +void +test_syr2k (void) { +const double flteps = 1e-4, dbleps = 1e-6; + { + int order = 101; + int uplo = 121; + int trans = 111; + int N = 1; + int K = 2; + float alpha = 0.1f; + float beta = 1.0f; + float A[] = { -0.915f, 0.445f }; + int lda = 2; + float B[] = { 0.213f, -0.194f }; + int ldb = 2; + float C[] = { -0.117f }; + int ldc = 1; + float C_expected[] = { -0.173245f }; + cblas_ssyr2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(C[i], C_expected[i], flteps, "ssyr2k(case 1614)"); + } + }; + }; + + + { + int order = 101; + int uplo = 122; + int trans = 111; + int N = 1; + int K = 2; + float alpha = 0.1f; + float beta = 1.0f; + float A[] = { 0.089f, -0.889f }; + int lda = 2; + float B[] = { -0.384f, 0.518f }; + int ldb = 2; + float C[] = { 0.069f }; + int ldc = 1; + float C_expected[] = { -0.0299356f }; + cblas_ssyr2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(C[i], C_expected[i], flteps, "ssyr2k(case 1615)"); + } + }; + }; + + + { + int order = 102; + int uplo = 121; + int trans = 111; + int N = 1; + int K = 2; + float alpha = 0.1f; + float beta = 1.0f; + float A[] = { 0.492f, 0.021f }; + int lda = 1; + float B[] = { -0.804f, -0.912f }; + int ldb = 1; + float C[] = { -0.851f }; + int ldc = 1; + float C_expected[] = { -0.933944f }; + cblas_ssyr2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(C[i], C_expected[i], flteps, "ssyr2k(case 1616)"); + } + }; + }; + + + { + int order = 102; + int uplo = 122; + int trans = 111; + int N = 1; + int K = 2; + float alpha = 0.1f; + float beta = 1.0f; + float A[] = { -0.376f, 0.689f }; + int lda = 1; + float B[] = { 0.21f, 0.406f }; + int ldb = 1; + float C[] = { -0.581f }; + int ldc = 1; + float C_expected[] = { -0.540845f }; + cblas_ssyr2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(C[i], C_expected[i], flteps, "ssyr2k(case 1617)"); + } + }; + }; + + + { + int order = 101; + int uplo = 121; + int trans = 112; + int N = 1; + int K = 2; + float alpha = 1.0f; + float beta = -0.3f; + float A[] = { 0.629f, -0.883f }; + int lda = 1; + float B[] = { -0.165f, 0.02f }; + int ldb = 1; + float C[] = { 0.236f }; + int ldc = 1; + float C_expected[] = { -0.31369f }; + cblas_ssyr2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(C[i], C_expected[i], flteps, "ssyr2k(case 1618)"); + } + }; + }; + + + { + int order = 101; + int uplo = 122; + int trans = 112; + int N = 1; + int K = 2; + float alpha = 1.0f; + float beta = -0.3f; + float A[] = { 0.412f, -0.411f }; + int lda = 1; + float B[] = { 0.313f, 0.301f }; + int ldb = 1; + float C[] = { 0.222f }; + int ldc = 1; + float C_expected[] = { -0.05611f }; + cblas_ssyr2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(C[i], C_expected[i], flteps, "ssyr2k(case 1619)"); + } + }; + }; + + + { + int order = 102; + int uplo = 121; + int trans = 112; + int N = 1; + int K = 2; + float alpha = 1.0f; + float beta = -0.3f; + float A[] = { -0.02f, 0.593f }; + int lda = 2; + float B[] = { -0.144f, 0.846f }; + int ldb = 2; + float C[] = { -0.645f }; + int ldc = 1; + float C_expected[] = { 1.20262f }; + cblas_ssyr2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(C[i], C_expected[i], flteps, "ssyr2k(case 1620)"); + } + }; + }; + + + { + int order = 102; + int uplo = 122; + int trans = 112; + int N = 1; + int K = 2; + float alpha = 1.0f; + float beta = -0.3f; + float A[] = { 0.253f, 0.937f }; + int lda = 2; + float B[] = { 0.24f, -0.27f }; + int ldb = 2; + float C[] = { 0.128f }; + int ldc = 1; + float C_expected[] = { -0.42294f }; + cblas_ssyr2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(C[i], C_expected[i], flteps, "ssyr2k(case 1621)"); + } + }; + }; + + + { + int order = 101; + int uplo = 121; + int trans = 111; + int N = 1; + int K = 2; + double alpha = 0.1; + double beta = 0; + double A[] = { -0.225, 0.857 }; + int lda = 2; + double B[] = { -0.933, 0.994 }; + int ldb = 2; + double C[] = { 0.177 }; + int ldc = 1; + double C_expected[] = { 0.2123566 }; + cblas_dsyr2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(C[i], C_expected[i], dbleps, "dsyr2k(case 1622)"); + } + }; + }; + + + { + int order = 101; + int uplo = 122; + int trans = 111; + int N = 1; + int K = 2; + double alpha = 0.1; + double beta = 0; + double A[] = { -0.955, 0.112 }; + int lda = 2; + double B[] = { -0.695, 0.719 }; + int ldb = 2; + double C[] = { 0.069 }; + int ldc = 1; + double C_expected[] = { 0.1488506 }; + cblas_dsyr2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(C[i], C_expected[i], dbleps, "dsyr2k(case 1623)"); + } + }; + }; + + + { + int order = 102; + int uplo = 121; + int trans = 111; + int N = 1; + int K = 2; + double alpha = 0.1; + double beta = 0; + double A[] = { 0.216, 0.911 }; + int lda = 1; + double B[] = { -0.074, -0.256 }; + int ldb = 1; + double C[] = { -0.621 }; + int ldc = 1; + double C_expected[] = { -0.04984 }; + cblas_dsyr2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(C[i], C_expected[i], dbleps, "dsyr2k(case 1624)"); + } + }; + }; + + + { + int order = 102; + int uplo = 122; + int trans = 111; + int N = 1; + int K = 2; + double alpha = 0.1; + double beta = 0; + double A[] = { -0.343, -0.381 }; + int lda = 1; + double B[] = { -0.433, -0.087 }; + int ldb = 1; + double C[] = { -0.889 }; + int ldc = 1; + double C_expected[] = { 0.0363332 }; + cblas_dsyr2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(C[i], C_expected[i], dbleps, "dsyr2k(case 1625)"); + } + }; + }; + + + { + int order = 101; + int uplo = 121; + int trans = 112; + int N = 1; + int K = 2; + double alpha = 1; + double beta = -1; + double A[] = { -0.633, 0.219 }; + int lda = 1; + double B[] = { 0.817, -0.683 }; + int ldb = 1; + double C[] = { -0.294 }; + int ldc = 1; + double C_expected[] = { -1.039476 }; + cblas_dsyr2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(C[i], C_expected[i], dbleps, "dsyr2k(case 1626)"); + } + }; + }; + + + { + int order = 101; + int uplo = 122; + int trans = 112; + int N = 1; + int K = 2; + double alpha = 1; + double beta = -1; + double A[] = { -0.887, -0.43 }; + int lda = 1; + double B[] = { 0.557, 0.912 }; + int ldb = 1; + double C[] = { 0.831 }; + int ldc = 1; + double C_expected[] = { -2.603438 }; + cblas_dsyr2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(C[i], C_expected[i], dbleps, "dsyr2k(case 1627)"); + } + }; + }; + + + { + int order = 102; + int uplo = 121; + int trans = 112; + int N = 1; + int K = 2; + double alpha = 1; + double beta = -1; + double A[] = { 0.397, -0.173 }; + int lda = 2; + double B[] = { 0.155, -0.99 }; + int ldb = 2; + double C[] = { 0.621 }; + int ldc = 1; + double C_expected[] = { -0.15539 }; + cblas_dsyr2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(C[i], C_expected[i], dbleps, "dsyr2k(case 1628)"); + } + }; + }; + + + { + int order = 102; + int uplo = 122; + int trans = 112; + int N = 1; + int K = 2; + double alpha = 1; + double beta = -1; + double A[] = { 0.833, -0.52 }; + int lda = 2; + double B[] = { 0.28, 0.481 }; + int ldb = 2; + double C[] = { 0.455 }; + int ldc = 1; + double C_expected[] = { -0.48876 }; + cblas_dsyr2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(C[i], C_expected[i], dbleps, "dsyr2k(case 1629)"); + } + }; + }; + + + { + int order = 101; + int uplo = 121; + int trans = 111; + int N = 1; + int K = 2; + float alpha[2] = {0.0f, 0.1f}; + float beta[2] = {0.0f, 0.0f}; + float A[] = { -0.248f, -0.037f, -0.124f, 0.998f }; + int lda = 2; + float B[] = { -0.608f, -0.115f, -0.718f, -0.551f }; + int ldb = 2; + float C[] = { 0.187f, -0.329f }; + int ldc = 1; + float C_expected[] = { 0.119445f, 0.157092f }; + cblas_csyr2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "csyr2k(case 1630) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "csyr2k(case 1630) imag"); + }; + }; + }; + + + { + int order = 101; + int uplo = 122; + int trans = 111; + int N = 1; + int K = 2; + float alpha[2] = {0.0f, 0.1f}; + float beta[2] = {0.0f, 0.0f}; + float A[] = { 0.068f, 0.751f, -0.449f, -0.598f }; + int lda = 2; + float B[] = { 0.616f, 0.805f, -0.635f, 0.773f }; + int ldb = 2; + float C[] = { -0.287f, 0.917f }; + int ldc = 1; + float C_expected[] = { -0.110002f, 0.0369404f }; + cblas_csyr2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "csyr2k(case 1631) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "csyr2k(case 1631) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 121; + int trans = 111; + int N = 1; + int K = 2; + float alpha[2] = {0.0f, 0.1f}; + float beta[2] = {0.0f, 0.0f}; + float A[] = { -0.396f, -0.603f, -0.131f, -0.288f }; + int lda = 1; + float B[] = { -0.64f, -0.444f, -0.085f, 0.936f }; + int ldb = 1; + float C[] = { 0.375f, -0.434f }; + int ldc = 1; + float C_expected[] = { -0.0927216f, 0.0532822f }; + cblas_csyr2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "csyr2k(case 1632) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "csyr2k(case 1632) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 122; + int trans = 111; + int N = 1; + int K = 2; + float alpha[2] = {0.0f, 0.1f}; + float beta[2] = {0.0f, 0.0f}; + float A[] = { 0.655f, 0.16f, 0.45f, -0.747f }; + int lda = 1; + float B[] = { 0.923f, 0.432f, -0.986f, 0.259f }; + int ldb = 1; + float C[] = { 0.752f, 0.576f }; + int ldc = 1; + float C_expected[] = { -0.256746f, 0.0570436f }; + cblas_csyr2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "csyr2k(case 1633) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "csyr2k(case 1633) imag"); + }; + }; + }; + + + { + int order = 101; + int uplo = 121; + int trans = 112; + int N = 1; + int K = 2; + float alpha[2] = {0.0f, 0.1f}; + float beta[2] = {0.0f, 0.0f}; + float A[] = { -0.765f, 0.487f, 0.7f, 0.768f }; + int lda = 1; + float B[] = { -0.529f, 0.056f, -0.584f, 0.928f }; + int ldb = 1; + float C[] = { -0.426f, 0.836f }; + int ldc = 1; + float C_expected[] = { 0.019875f, -0.148818f }; + cblas_csyr2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "csyr2k(case 1634) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "csyr2k(case 1634) imag"); + }; + }; + }; + + + { + int order = 101; + int uplo = 122; + int trans = 112; + int N = 1; + int K = 2; + float alpha[2] = {0.0f, 0.1f}; + float beta[2] = {0.0f, 0.0f}; + float A[] = { 0.25f, 0.489f, 0.8f, -0.642f }; + int lda = 1; + float B[] = { -0.732f, -0.856f, -0.654f, 0.591f }; + int ldb = 1; + float C[] = { -0.101f, 0.322f }; + int ldc = 1; + float C_expected[] = { -0.064144f, 0.0183612f }; + cblas_csyr2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "csyr2k(case 1635) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "csyr2k(case 1635) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 121; + int trans = 112; + int N = 1; + int K = 2; + float alpha[2] = {0.0f, 0.1f}; + float beta[2] = {0.0f, 0.0f}; + float A[] = { -0.579f, -0.971f, 0.521f, -0.824f }; + int lda = 2; + float B[] = { -0.227f, 0.907f, 0.457f, -0.274f }; + int ldb = 2; + float C[] = { 0.21f, -0.718f }; + int ldc = 1; + float C_expected[] = { 0.164812f, 0.20489f }; + cblas_csyr2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "csyr2k(case 1636) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "csyr2k(case 1636) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 122; + int trans = 112; + int N = 1; + int K = 2; + float alpha[2] = {0.0f, 0.1f}; + float beta[2] = {0.0f, 0.0f}; + float A[] = { -0.83f, -0.512f, -0.667f, -0.436f }; + int lda = 2; + float B[] = { -0.443f, 0.82f, -0.259f, -0.618f }; + int ldb = 2; + float C[] = { 0.583f, 0.668f }; + int ldc = 1; + float C_expected[] = { -0.0142692f, 0.138167f }; + cblas_csyr2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "csyr2k(case 1637) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "csyr2k(case 1637) imag"); + }; + }; + }; + + + { + int order = 101; + int uplo = 121; + int trans = 111; + int N = 1; + int K = 2; + double alpha[2] = {0, 0}; + double beta[2] = {-0.3, 0.1}; + double A[] = { -0.315, 0.03, 0.281, 0.175 }; + int lda = 2; + double B[] = { -0.832, -0.964, 0.291, 0.476 }; + int ldb = 2; + double C[] = { -0.341, 0.743 }; + int ldc = 1; + double C_expected[] = { 0.028, -0.257 }; + cblas_zsyr2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zsyr2k(case 1638) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zsyr2k(case 1638) imag"); + }; + }; + }; + + + { + int order = 101; + int uplo = 122; + int trans = 111; + int N = 1; + int K = 2; + double alpha[2] = {0, 0}; + double beta[2] = {-0.3, 0.1}; + double A[] = { -0.159, -0.489, -0.11, 0.611 }; + int lda = 2; + double B[] = { -0.285, -0.048, -0.673, -0.492 }; + int ldb = 2; + double C[] = { 0.496, -0.626 }; + int ldc = 1; + double C_expected[] = { -0.0862, 0.2374 }; + cblas_zsyr2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zsyr2k(case 1639) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zsyr2k(case 1639) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 121; + int trans = 111; + int N = 1; + int K = 2; + double alpha[2] = {0, 0}; + double beta[2] = {-0.3, 0.1}; + double A[] = { 0.796, 0.872, -0.919, 0.748 }; + int lda = 1; + double B[] = { -0.945, 0.915, -0.252, -0.276 }; + int ldb = 1; + double C[] = { 0.07, -0.957 }; + int ldc = 1; + double C_expected[] = { 0.0747, 0.2941 }; + cblas_zsyr2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zsyr2k(case 1640) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zsyr2k(case 1640) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 122; + int trans = 111; + int N = 1; + int K = 2; + double alpha[2] = {0, 0}; + double beta[2] = {-0.3, 0.1}; + double A[] = { 0.984, 0.526, 0.284, 0.806 }; + int lda = 1; + double B[] = { -0.509, -0.178, 0.188, -0.221 }; + int ldb = 1; + double C[] = { -0.388, 0.795 }; + int ldc = 1; + double C_expected[] = { 0.0369, -0.2773 }; + cblas_zsyr2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zsyr2k(case 1641) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zsyr2k(case 1641) imag"); + }; + }; + }; + + + { + int order = 101; + int uplo = 121; + int trans = 112; + int N = 1; + int K = 2; + double alpha[2] = {1, 0}; + double beta[2] = {0, 0.1}; + double A[] = { 0.628, 0.846, -0.645, 0.032 }; + int lda = 1; + double B[] = { 0.545, -0.54, 0.493, -0.035 }; + int ldb = 1; + double C[] = { -0.16, -0.06 }; + int ldc = 1; + double C_expected[] = { 0.97047, 0.304602 }; + cblas_zsyr2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zsyr2k(case 1642) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zsyr2k(case 1642) imag"); + }; + }; + }; + + + { + int order = 101; + int uplo = 122; + int trans = 112; + int N = 1; + int K = 2; + double alpha[2] = {1, 0}; + double beta[2] = {0, 0.1}; + double A[] = { -0.556, -0.946, 0.177, -0.859 }; + int lda = 1; + double B[] = { 0.423, -0.91, 0.736, -0.251 }; + int ldb = 1; + double C[] = { -0.478, 0.519 }; + int ldc = 1; + double C_expected[] = { -2.41467, -1.189498 }; + cblas_zsyr2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zsyr2k(case 1643) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zsyr2k(case 1643) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 121; + int trans = 112; + int N = 1; + int K = 2; + double alpha[2] = {1, 0}; + double beta[2] = {0, 0.1}; + double A[] = { -0.582, 0.09, -0.176, 0.784 }; + int lda = 2; + double B[] = { 0.687, -0.859, 0.945, 0.756 }; + int ldb = 2; + double C[] = { -0.663, -0.186 }; + int ldc = 1; + double C_expected[] = { -2.144496, 2.272884 }; + cblas_zsyr2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zsyr2k(case 1644) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zsyr2k(case 1644) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 122; + int trans = 112; + int N = 1; + int K = 2; + double alpha[2] = {1, 0}; + double beta[2] = {0, 0.1}; + double A[] = { 0.231, -0.452, -0.112, -0.837 }; + int lda = 2; + double B[] = { -0.258, 0.464, -0.224, 0.893 }; + int ldb = 2; + double C[] = { -0.448, 0.046 }; + int ldc = 1; + double C_expected[] = { 1.840718, 0.577744 }; + cblas_zsyr2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zsyr2k(case 1645) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zsyr2k(case 1645) imag"); + }; + }; + }; + + +} diff --git a/gsl-2.5/cblas/test_syrk.c b/gsl-2.5/cblas/test_syrk.c new file mode 100644 index 00000000..21531d52 --- /dev/null +++ b/gsl-2.5/cblas/test_syrk.c @@ -0,0 +1,763 @@ +#include +#include +#include +#include + +#include "tests.h" + +void +test_syrk (void) { +const double flteps = 1e-4, dbleps = 1e-6; + { + int order = 101; + int uplo = 121; + int trans = 111; + int N = 2; + int K = 1; + float alpha = -1.0f; + float beta = 0.1f; + float A[] = { 0.412f, -0.229f }; + int lda = 1; + float C[] = { 0.628f, -0.664f, -0.268f, 0.096f }; + int ldc = 2; + float C_expected[] = { -0.106944f, 0.027948f, -0.268f, -0.042841f }; + cblas_ssyrk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); + { + int i; + for (i = 0; i < 4; i++) { + gsl_test_rel(C[i], C_expected[i], flteps, "ssyrk(case 1566)"); + } + }; + }; + + + { + int order = 102; + int uplo = 121; + int trans = 111; + int N = 2; + int K = 1; + float alpha = -1.0f; + float beta = 0.1f; + float A[] = { 0.101f, -0.653f }; + int lda = 2; + float C[] = { 0.432f, 0.107f, -0.952f, -0.532f }; + int ldc = 2; + float C_expected[] = { 0.032999f, 0.107f, -0.029247f, -0.479609f }; + cblas_ssyrk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); + { + int i; + for (i = 0; i < 4; i++) { + gsl_test_rel(C[i], C_expected[i], flteps, "ssyrk(case 1567)"); + } + }; + }; + + + { + int order = 101; + int uplo = 121; + int trans = 112; + int N = 2; + int K = 1; + float alpha = 1.0f; + float beta = 0.1f; + float A[] = { 0.79f, 0.595f }; + int lda = 2; + float C[] = { 0.257f, 0.183f, -0.021f, -0.053f }; + int ldc = 2; + float C_expected[] = { 0.6498f, 0.48835f, -0.021f, 0.348725f }; + cblas_ssyrk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); + { + int i; + for (i = 0; i < 4; i++) { + gsl_test_rel(C[i], C_expected[i], flteps, "ssyrk(case 1568)"); + } + }; + }; + + + { + int order = 102; + int uplo = 121; + int trans = 112; + int N = 2; + int K = 1; + float alpha = 1.0f; + float beta = 0.1f; + float A[] = { -0.181f, -0.654f }; + int lda = 1; + float C[] = { -0.4f, 0.615f, 0.147f, -0.163f }; + int ldc = 2; + float C_expected[] = { -0.007239f, 0.615f, 0.133074f, 0.411416f }; + cblas_ssyrk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); + { + int i; + for (i = 0; i < 4; i++) { + gsl_test_rel(C[i], C_expected[i], flteps, "ssyrk(case 1569)"); + } + }; + }; + + + { + int order = 101; + int uplo = 122; + int trans = 111; + int N = 2; + int K = 1; + float alpha = 0.0f; + float beta = -1.0f; + float A[] = { -0.191f, 0.584f }; + int lda = 1; + float C[] = { -0.719f, -0.681f, -0.003f, 0.544f }; + int ldc = 2; + float C_expected[] = { 0.719f, -0.681f, 0.003f, -0.544f }; + cblas_ssyrk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); + { + int i; + for (i = 0; i < 4; i++) { + gsl_test_rel(C[i], C_expected[i], flteps, "ssyrk(case 1570)"); + } + }; + }; + + + { + int order = 102; + int uplo = 122; + int trans = 111; + int N = 2; + int K = 1; + float alpha = 0.0f; + float beta = -1.0f; + float A[] = { 0.788f, 0.041f }; + int lda = 2; + float C[] = { 0.029f, 0.365f, 0.739f, -0.769f }; + int ldc = 2; + float C_expected[] = { -0.029f, -0.365f, 0.739f, 0.769f }; + cblas_ssyrk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); + { + int i; + for (i = 0; i < 4; i++) { + gsl_test_rel(C[i], C_expected[i], flteps, "ssyrk(case 1571)"); + } + }; + }; + + + { + int order = 101; + int uplo = 122; + int trans = 112; + int N = 2; + int K = 1; + float alpha = -0.3f; + float beta = -1.0f; + float A[] = { 0.733f, 0.678f }; + int lda = 2; + float C[] = { -0.941f, 0.96f, 0.07f, -0.295f }; + int ldc = 2; + float C_expected[] = { 0.779813f, 0.96f, -0.219092f, 0.157095f }; + cblas_ssyrk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); + { + int i; + for (i = 0; i < 4; i++) { + gsl_test_rel(C[i], C_expected[i], flteps, "ssyrk(case 1572)"); + } + }; + }; + + + { + int order = 102; + int uplo = 122; + int trans = 112; + int N = 2; + int K = 1; + float alpha = -0.3f; + float beta = -1.0f; + float A[] = { -0.87f, 0.675f }; + int lda = 1; + float C[] = { -0.602f, -0.432f, -0.984f, 0.384f }; + int ldc = 2; + float C_expected[] = { 0.37493f, 0.608175f, -0.984f, -0.520687f }; + cblas_ssyrk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); + { + int i; + for (i = 0; i < 4; i++) { + gsl_test_rel(C[i], C_expected[i], flteps, "ssyrk(case 1573)"); + } + }; + }; + + + { + int order = 101; + int uplo = 121; + int trans = 111; + int N = 2; + int K = 1; + double alpha = 0.1; + double beta = -0.3; + double A[] = { 0.169, -0.875 }; + int lda = 1; + double C[] = { 0.159, 0.277, 0.865, 0.346 }; + int ldc = 2; + double C_expected[] = { -0.0448439, -0.0978875, 0.865, -0.0272375 }; + cblas_dsyrk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); + { + int i; + for (i = 0; i < 4; i++) { + gsl_test_rel(C[i], C_expected[i], dbleps, "dsyrk(case 1574)"); + } + }; + }; + + + { + int order = 102; + int uplo = 121; + int trans = 111; + int N = 2; + int K = 1; + double alpha = 0.1; + double beta = -0.3; + double A[] = { 0.536, -0.725 }; + int lda = 2; + double C[] = { 0.154, -0.445, -0.841, -0.91 }; + int ldc = 2; + double C_expected[] = { -0.0174704, -0.445, 0.21344, 0.3255625 }; + cblas_dsyrk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); + { + int i; + for (i = 0; i < 4; i++) { + gsl_test_rel(C[i], C_expected[i], dbleps, "dsyrk(case 1575)"); + } + }; + }; + + + { + int order = 101; + int uplo = 121; + int trans = 112; + int N = 2; + int K = 1; + double alpha = 0; + double beta = -1; + double A[] = { -0.07, 0.8 }; + int lda = 2; + double C[] = { 0.823, -0.88, -0.136, 0.793 }; + int ldc = 2; + double C_expected[] = { -0.823, 0.88, -0.136, -0.793 }; + cblas_dsyrk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); + { + int i; + for (i = 0; i < 4; i++) { + gsl_test_rel(C[i], C_expected[i], dbleps, "dsyrk(case 1576)"); + } + }; + }; + + + { + int order = 102; + int uplo = 121; + int trans = 112; + int N = 2; + int K = 1; + double alpha = 0; + double beta = -1; + double A[] = { -0.058, 0.649 }; + int lda = 1; + double C[] = { -0.187, 0.294, -0.004, -0.933 }; + int ldc = 2; + double C_expected[] = { 0.187, 0.294, 0.004, 0.933 }; + cblas_dsyrk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); + { + int i; + for (i = 0; i < 4; i++) { + gsl_test_rel(C[i], C_expected[i], dbleps, "dsyrk(case 1577)"); + } + }; + }; + + + { + int order = 101; + int uplo = 122; + int trans = 111; + int N = 2; + int K = 1; + double alpha = 1; + double beta = -1; + double A[] = { 0.263, -0.289 }; + int lda = 1; + double C[] = { 0.554, -0.679, 0.993, 0.758 }; + int ldc = 2; + double C_expected[] = { -0.484831, -0.679, -1.069007, -0.674479 }; + cblas_dsyrk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); + { + int i; + for (i = 0; i < 4; i++) { + gsl_test_rel(C[i], C_expected[i], dbleps, "dsyrk(case 1578)"); + } + }; + }; + + + { + int order = 102; + int uplo = 122; + int trans = 111; + int N = 2; + int K = 1; + double alpha = 1; + double beta = -1; + double A[] = { -0.265, -0.837 }; + int lda = 2; + double C[] = { -0.994, 0.967, -0.34, -0.069 }; + int ldc = 2; + double C_expected[] = { 1.064225, -0.745195, -0.34, 0.769569 }; + cblas_dsyrk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); + { + int i; + for (i = 0; i < 4; i++) { + gsl_test_rel(C[i], C_expected[i], dbleps, "dsyrk(case 1579)"); + } + }; + }; + + + { + int order = 101; + int uplo = 122; + int trans = 112; + int N = 2; + int K = 1; + double alpha = -0.3; + double beta = 1; + double A[] = { -0.464, 0.394 }; + int lda = 2; + double C[] = { -0.45, -0.447, 0.649, 0.055 }; + int ldc = 2; + double C_expected[] = { -0.5145888, -0.447, 0.7038448, 0.0084292 }; + cblas_dsyrk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); + { + int i; + for (i = 0; i < 4; i++) { + gsl_test_rel(C[i], C_expected[i], dbleps, "dsyrk(case 1580)"); + } + }; + }; + + + { + int order = 102; + int uplo = 122; + int trans = 112; + int N = 2; + int K = 1; + double alpha = -0.3; + double beta = 1; + double A[] = { 0.815, 0.168 }; + int lda = 1; + double C[] = { 0.817, -0.957, -0.395, -0.382 }; + int ldc = 2; + double C_expected[] = { 0.6177325, -0.998076, -0.395, -0.3904672 }; + cblas_dsyrk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); + { + int i; + for (i = 0; i < 4; i++) { + gsl_test_rel(C[i], C_expected[i], dbleps, "dsyrk(case 1581)"); + } + }; + }; + + + { + int order = 101; + int uplo = 121; + int trans = 111; + int N = 2; + int K = 1; + float alpha[2] = {0.0f, 0.0f}; + float beta[2] = {-0.3f, 0.1f}; + float A[] = { 0.447f, -0.507f, -0.425f, 0.701f }; + int lda = 1; + float C[] = { 0.16f, -0.245f, 0.922f, -0.437f, 0.24f, 0.008f, -0.095f, 0.749f }; + int ldc = 2; + float C_expected[] = { -0.0235f, 0.0895f, -0.2329f, 0.2233f, 0.24f, 0.008f, -0.0464f, -0.2342f }; + cblas_csyrk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); + { + int i; + for (i = 0; i < 4; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "csyrk(case 1582) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "csyrk(case 1582) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 121; + int trans = 111; + int N = 2; + int K = 1; + float alpha[2] = {0.0f, 0.0f}; + float beta[2] = {-0.3f, 0.1f}; + float A[] = { -0.421f, -0.435f, -0.914f, -0.493f }; + int lda = 2; + float C[] = { -0.761f, -0.38f, 0.043f, -0.999f, 0.779f, 0.238f, 0.082f, 0.394f }; + int ldc = 2; + float C_expected[] = { 0.2663f, 0.0379f, 0.043f, -0.999f, -0.2575f, 0.0065f, -0.064f, -0.11f }; + cblas_csyrk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); + { + int i; + for (i = 0; i < 4; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "csyrk(case 1583) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "csyrk(case 1583) imag"); + }; + }; + }; + + + { + int order = 101; + int uplo = 121; + int trans = 112; + int N = 2; + int K = 1; + float alpha[2] = {-1.0f, 0.0f}; + float beta[2] = {-0.3f, 0.1f}; + float A[] = { 0.827f, -0.896f, 0.417f, 0.865f }; + int lda = 2; + float C[] = { -0.349f, -0.31f, 0.972f, 0.794f, -0.906f, -0.595f, -0.089f, -0.333f }; + int ldc = 2; + float C_expected[] = { 0.254587f, 1.54008f, -1.4909f, -0.482723f, -0.906f, -0.595f, 0.634336f, -0.63041f }; + cblas_csyrk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); + { + int i; + for (i = 0; i < 4; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "csyrk(case 1584) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "csyrk(case 1584) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 121; + int trans = 112; + int N = 2; + int K = 1; + float alpha[2] = {-1.0f, 0.0f}; + float beta[2] = {-0.3f, 0.1f}; + float A[] = { 0.607f, 0.747f, -0.889f, 0.333f }; + int lda = 1; + float C[] = { 0.244f, 0.564f, 0.009f, 0.578f, -0.827f, 0.558f, -0.337f, 0.731f }; + int ldc = 2; + float C_expected[] = { 0.05996f, -1.05166f, 0.009f, 0.578f, 0.980674f, 0.211852f, -0.651432f, 0.339074f }; + cblas_csyrk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); + { + int i; + for (i = 0; i < 4; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "csyrk(case 1585) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "csyrk(case 1585) imag"); + }; + }; + }; + + + { + int order = 101; + int uplo = 122; + int trans = 111; + int N = 2; + int K = 1; + float alpha[2] = {1.0f, 0.0f}; + float beta[2] = {0.0f, 1.0f}; + float A[] = { 0.784f, -0.281f, -0.88f, 0.479f }; + int lda = 1; + float C[] = { 0.491f, 0.531f, 0.805f, -0.097f, 0.728f, 0.674f, -0.705f, -0.754f }; + int ldc = 2; + float C_expected[] = { 0.004695f, 0.050392f, 0.805f, -0.097f, -1.22932f, 1.35082f, 1.29896f, -1.54804f }; + cblas_csyrk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); + { + int i; + for (i = 0; i < 4; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "csyrk(case 1586) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "csyrk(case 1586) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 122; + int trans = 111; + int N = 2; + int K = 1; + float alpha[2] = {1.0f, 0.0f}; + float beta[2] = {0.0f, 1.0f}; + float A[] = { 0.272f, -0.146f, 0.155f, 0.038f }; + int lda = 2; + float C[] = { 0.533f, -0.41f, -0.904f, 0.301f, -0.836f, 0.57f, -0.374f, -0.293f }; + int ldc = 2; + float C_expected[] = { 0.462668f, 0.453576f, -0.253292f, -0.916294f, -0.836f, 0.57f, 0.315581f, -0.36222f }; + cblas_csyrk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); + { + int i; + for (i = 0; i < 4; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "csyrk(case 1587) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "csyrk(case 1587) imag"); + }; + }; + }; + + + { + int order = 101; + int uplo = 122; + int trans = 112; + int N = 2; + int K = 1; + float alpha[2] = {0.0f, 1.0f}; + float beta[2] = {-1.0f, 0.0f}; + float A[] = { -0.055f, -0.127f, -0.896f, -0.625f }; + int lda = 2; + float C[] = { -0.619f, 0.511f, -0.877f, 0.557f, -0.801f, -0.437f, -0.922f, 0.332f }; + int ldc = 2; + float C_expected[] = { 0.60503f, -0.524104f, -0.877f, 0.557f, 0.652833f, 0.406905f, -0.198f, 0.080191f }; + cblas_csyrk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); + { + int i; + for (i = 0; i < 4; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "csyrk(case 1588) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "csyrk(case 1588) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 122; + int trans = 112; + int N = 2; + int K = 1; + float alpha[2] = {0.0f, 1.0f}; + float beta[2] = {-1.0f, 0.0f}; + float A[] = { -0.528f, 0.759f, -0.079f, 0.952f }; + int lda = 1; + float C[] = { 0.775f, 0.855f, 0.786f, 0.525f, 0.85f, 0.044f, 0.658f, 0.947f }; + int ldc = 2; + float C_expected[] = { 0.026504f, -1.1523f, -0.223383f, -1.20586f, 0.85f, 0.044f, -0.507584f, -1.84706f }; + cblas_csyrk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); + { + int i; + for (i = 0; i < 4; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "csyrk(case 1589) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "csyrk(case 1589) imag"); + }; + }; + }; + + + { + int order = 101; + int uplo = 121; + int trans = 111; + int N = 2; + int K = 1; + double alpha[2] = {1, 0}; + double beta[2] = {1, 0}; + double A[] = { -0.049, -0.687, -0.434, 0.294 }; + int lda = 1; + double C[] = { 0.937, -0.113, 0.796, 0.293, 0.876, -0.199, -0.757, -0.103 }; + int ldc = 2; + double C_expected[] = { 0.467432, -0.045674, 1.019244, 0.576752, 0.876, -0.199, -0.65508, -0.358192 }; + cblas_zsyrk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); + { + int i; + for (i = 0; i < 4; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zsyrk(case 1590) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zsyrk(case 1590) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 121; + int trans = 111; + int N = 2; + int K = 1; + double alpha[2] = {1, 0}; + double beta[2] = {1, 0}; + double A[] = { 0.359, -0.364, 0.926, -0.69 }; + int lda = 2; + double C[] = { 0.306, 0.249, 0.28, 0.229, 0.866, 0.092, 0.886, -0.283 }; + int ldc = 2; + double C_expected[] = { 0.302385, -0.012352, 0.28, 0.229, 0.947274, -0.492774, 1.267376, -1.56088 }; + cblas_zsyrk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); + { + int i; + for (i = 0; i < 4; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zsyrk(case 1591) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zsyrk(case 1591) imag"); + }; + }; + }; + + + { + int order = 101; + int uplo = 121; + int trans = 112; + int N = 2; + int K = 1; + double alpha[2] = {-0.3, 0.1}; + double beta[2] = {0, 0}; + double A[] = { 0.607, 0.555, -0.85, 0.831 }; + int lda = 2; + double C[] = { 0.069, 0.368, 0.551, -0.912, -0.243, -0.063, -0.924, 0.192 }; + int ldc = 2; + double C_expected[] = { -0.0855042, -0.1960886, 0.2898798, -0.1075156, -0.243, -0.063, 0.1316883, 0.4270039 }; + cblas_zsyrk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); + { + int i; + for (i = 0; i < 4; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zsyrk(case 1592) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zsyrk(case 1592) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 121; + int trans = 112; + int N = 2; + int K = 1; + double alpha[2] = {-0.3, 0.1}; + double beta[2] = {0, 0}; + double A[] = { 0.427, 0.86, -0.136, 0.002 }; + int lda = 1; + double C[] = { 0.398, -0.47, 0.011, -0.547, -0.106, 0.016, 0.681, 0.246 }; + int ldc = 2; + double C_expected[] = { 0.0937373, -0.2760591, 0.011, -0.547, 0.0295482, 0.0288526, -0.0054932, 0.0020124 }; + cblas_zsyrk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); + { + int i; + for (i = 0; i < 4; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zsyrk(case 1593) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zsyrk(case 1593) imag"); + }; + }; + }; + + + { + int order = 101; + int uplo = 122; + int trans = 111; + int N = 2; + int K = 1; + double alpha[2] = {-0.3, 0.1}; + double beta[2] = {1, 0}; + double A[] = { 0.718, 0.023, 0.355, -0.492 }; + int lda = 1; + double C[] = { -0.637, -0.727, -0.475, -0.776, 0.802, -0.55, -0.837, 0.222 }; + int ldc = 2; + double C_expected[] = { -0.7948013, -0.6854089, -0.475, -0.776, 0.7566473, -0.4198521, -0.7672563, 0.3151921 }; + cblas_zsyrk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); + { + int i; + for (i = 0; i < 4; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zsyrk(case 1594) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zsyrk(case 1594) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 122; + int trans = 111; + int N = 2; + int K = 1; + double alpha[2] = {-0.3, 0.1}; + double beta[2] = {1, 0}; + double A[] = { 0.209, 0.139, -0.202, -0.223 }; + int lda = 2; + double C[] = { -0.695, 0.524, 0.212, -0.88, -0.752, 0.291, 0.684, -0.124 }; + int ldc = 2; + double C_expected[] = { -0.7081182, 0.5090054, 0.2228348, -0.8587166, -0.752, 0.291, 0.6776683, -0.1519201 }; + cblas_zsyrk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); + { + int i; + for (i = 0; i < 4; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zsyrk(case 1595) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zsyrk(case 1595) imag"); + }; + }; + }; + + + { + int order = 101; + int uplo = 122; + int trans = 112; + int N = 2; + int K = 1; + double alpha[2] = {-0.3, 0.1}; + double beta[2] = {1, 0}; + double A[] = { -0.365, -0.624, 0.632, 0.348 }; + int lda = 2; + double C[] = { 0.877, 0.927, -0.377, 0.967, 0.008, 0.292, -0.779, 0.794 }; + int ldc = 2; + double C_expected[] = { 0.9082933, 0.7647289, -0.377, 0.967, 0.0641972, 0.4470636, -0.9064832, 0.6898704 }; + cblas_zsyrk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); + { + int i; + for (i = 0; i < 4; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zsyrk(case 1596) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zsyrk(case 1596) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 122; + int trans = 112; + int N = 2; + int K = 1; + double alpha[2] = {-0.3, 0.1}; + double beta[2] = {1, 0}; + double A[] = { -0.067, -0.586, 0.208, 0.331 }; + int lda = 1; + double C[] = { 0.584, -0.454, 0.93, 0.782, 0.489, -0.278, 0.081, -0.919 }; + int ldc = 2; + double C_expected[] = { 0.6778197, -0.5114479, 0.8903975, 0.8432225, 0.489, -0.278, 0.0871195, -0.9669385 }; + cblas_zsyrk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); + { + int i; + for (i = 0; i < 4; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zsyrk(case 1597) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zsyrk(case 1597) imag"); + }; + }; + }; + + +} diff --git a/gsl-2.5/cblas/test_tbmv.c b/gsl-2.5/cblas/test_tbmv.c new file mode 100644 index 00000000..abd349f8 --- /dev/null +++ b/gsl-2.5/cblas/test_tbmv.c @@ -0,0 +1,1819 @@ +#include +#include +#include +#include + +#include "tests.h" + +void +test_tbmv (void) { +const double flteps = 1e-4, dbleps = 1e-6; + { + int order = 101; + int trans = 111; + int uplo = 121; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { 0.439f, -0.484f, -0.952f, -0.508f, 0.381f, -0.889f, -0.192f, -0.279f, -0.155f }; + float X[] = { -0.089f, -0.688f, -0.203f }; + int incX = -1; + float x_expected[] = { 0.017088f, 0.315595f, 0.243875f }; + cblas_stbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "stbmv(case 894)"); + } + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 121; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { 0.439f, -0.484f, -0.952f, -0.508f, 0.381f, -0.889f, -0.192f, -0.279f, -0.155f }; + float X[] = { -0.089f, -0.688f, -0.203f }; + int incX = -1; + float x_expected[] = { -0.089f, -0.721909f, 0.129992f }; + cblas_stbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "stbmv(case 895)"); + } + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 122; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { 0.439f, -0.484f, -0.952f, -0.508f, 0.381f, -0.889f, -0.192f, -0.279f, -0.155f }; + float X[] = { -0.089f, -0.688f, -0.203f }; + int incX = -1; + float x_expected[] = { 0.156927f, -0.159004f, 0.098252f }; + cblas_stbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "stbmv(case 896)"); + } + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 122; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { 0.439f, -0.484f, -0.952f, -0.508f, 0.381f, -0.889f, -0.192f, -0.279f, -0.155f }; + float X[] = { -0.089f, -0.688f, -0.203f }; + int incX = -1; + float x_expected[] = { 0.043096f, -0.584876f, -0.203f }; + cblas_stbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "stbmv(case 897)"); + } + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 121; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { 0.439f, -0.484f, -0.952f, -0.508f, 0.381f, -0.889f, -0.192f, -0.279f, -0.155f }; + float X[] = { -0.089f, -0.688f, -0.203f }; + int incX = -1; + float x_expected[] = { 0.024831f, -0.24504f, 0.447756f }; + cblas_stbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "stbmv(case 898)"); + } + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 121; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { 0.439f, -0.484f, -0.952f, -0.508f, 0.381f, -0.889f, -0.192f, -0.279f, -0.155f }; + float X[] = { -0.089f, -0.688f, -0.203f }; + int incX = -1; + float x_expected[] = { -0.089f, -0.670912f, 0.146504f }; + cblas_stbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "stbmv(case 899)"); + } + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 122; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { 0.439f, -0.484f, -0.952f, -0.508f, 0.381f, -0.889f, -0.192f, -0.279f, -0.155f }; + float X[] = { -0.089f, -0.688f, -0.203f }; + int incX = -1; + float x_expected[] = { -0.24504f, 0.447756f, -0.089117f }; + cblas_stbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "stbmv(case 900)"); + } + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 122; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { 0.439f, -0.484f, -0.952f, -0.508f, 0.381f, -0.889f, -0.192f, -0.279f, -0.155f }; + float X[] = { -0.089f, -0.688f, -0.203f }; + int incX = -1; + float x_expected[] = { -0.351128f, -0.589748f, -0.203f }; + cblas_stbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "stbmv(case 901)"); + } + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 121; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { 0.94f, -0.091f, 0.984f, -0.276f, -0.342f, -0.484f, -0.665f, -0.2f, 0.349f }; + float X[] = { 0.023f, -0.501f, -0.562f }; + int incX = -1; + float x_expected[] = { 0.156047f, 0.189418f, -0.52828f }; + cblas_stbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "stbmv(case 902)"); + } + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 121; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { 0.94f, -0.091f, 0.984f, -0.276f, -0.342f, -0.484f, -0.665f, -0.2f, 0.349f }; + float X[] = { 0.023f, -0.501f, -0.562f }; + int incX = -1; + float x_expected[] = { 0.194342f, -0.449858f, -0.562f }; + cblas_stbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "stbmv(case 903)"); + } + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 122; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { 0.94f, -0.091f, 0.984f, -0.276f, -0.342f, -0.484f, -0.665f, -0.2f, 0.349f }; + float X[] = { 0.023f, -0.501f, -0.562f }; + int incX = -1; + float x_expected[] = { -0.0046f, 0.156047f, 0.189418f }; + cblas_stbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "stbmv(case 904)"); + } + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 122; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { 0.94f, -0.091f, 0.984f, -0.276f, -0.342f, -0.484f, -0.665f, -0.2f, 0.349f }; + float X[] = { 0.023f, -0.501f, -0.562f }; + int incX = -1; + float x_expected[] = { 0.023f, -0.516295f, -0.423724f }; + cblas_stbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "stbmv(case 905)"); + } + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 121; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { 0.94f, -0.091f, 0.984f, -0.276f, -0.342f, -0.484f, -0.665f, -0.2f, 0.349f }; + float X[] = { 0.023f, -0.501f, -0.562f }; + int incX = -1; + float x_expected[] = { 0.328565f, 0.326454f, 0.051142f }; + cblas_stbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "stbmv(case 906)"); + } + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 121; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { 0.94f, -0.091f, 0.984f, -0.276f, -0.342f, -0.484f, -0.665f, -0.2f, 0.349f }; + float X[] = { 0.023f, -0.501f, -0.562f }; + int incX = -1; + float x_expected[] = { 0.356165f, -0.345888f, -0.562f }; + cblas_stbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "stbmv(case 907)"); + } + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 122; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { 0.94f, -0.091f, 0.984f, -0.276f, -0.342f, -0.484f, -0.665f, -0.2f, 0.349f }; + float X[] = { 0.023f, -0.501f, -0.562f }; + int incX = -1; + float x_expected[] = { -0.015295f, 0.13041f, -0.482689f }; + cblas_stbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "stbmv(case 908)"); + } + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 122; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { 0.94f, -0.091f, 0.984f, -0.276f, -0.342f, -0.484f, -0.665f, -0.2f, 0.349f }; + float X[] = { 0.023f, -0.501f, -0.562f }; + int incX = -1; + float x_expected[] = { 0.023f, -0.508866f, -0.516409f }; + cblas_stbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "stbmv(case 909)"); + } + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 121; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { 0.566, 0.955, -0.086, -0.856, 0.177, 0.974, -0.652, -0.884, 0.77 }; + double X[] = { -0.77, -0.818, 0.337 }; + int incX = -1; + double x_expected[] = { 0.50204, 0.563918, -0.590448 }; + cblas_dtbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtbmv(case 910)"); + } + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 121; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { 0.566, 0.955, -0.086, -0.856, 0.177, 0.974, -0.652, -0.884, 0.77 }; + double X[] = { -0.77, -0.818, 0.337 }; + int incX = -1; + double x_expected[] = { -0.77, -0.95429, -0.44419 }; + cblas_dtbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtbmv(case 911)"); + } + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 122; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { 0.566, 0.955, -0.086, -0.856, 0.177, 0.974, -0.652, -0.884, 0.77 }; + double X[] = { -0.77, -0.818, 0.337 }; + int incX = -1; + double x_expected[] = { 1.214016, -0.433258, 0.321835 }; + cblas_dtbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtbmv(case 912)"); + } + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 122; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { 0.566, 0.955, -0.086, -0.856, 0.177, 0.974, -0.652, -0.884, 0.77 }; + double X[] = { -0.77, -0.818, 0.337 }; + int incX = -1; + double x_expected[] = { -0.236664, -1.106472, 0.337 }; + cblas_dtbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtbmv(case 913)"); + } + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 121; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { 0.566, 0.955, -0.086, -0.856, 0.177, 0.974, -0.652, -0.884, 0.77 }; + double X[] = { -0.77, -0.818, 0.337 }; + int incX = -1; + double x_expected[] = { 0.68068, 0.357254, 1.022043 }; + cblas_dtbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtbmv(case 914)"); + } + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 121; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { 0.566, 0.955, -0.086, -0.856, 0.177, 0.974, -0.652, -0.884, 0.77 }; + double X[] = { -0.77, -0.818, 0.337 }; + int incX = -1; + double x_expected[] = { -0.77, -0.31596, 1.037208 }; + cblas_dtbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtbmv(case 915)"); + } + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 122; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { 0.566, 0.955, -0.086, -0.856, 0.177, 0.974, -0.652, -0.884, 0.77 }; + double X[] = { -0.77, -0.818, 0.337 }; + int incX = -1; + double x_expected[] = { 0.357254, 1.022043, 0.190742 }; + cblas_dtbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtbmv(case 916)"); + } + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 122; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { 0.566, 0.955, -0.086, -0.856, 0.177, 0.974, -0.652, -0.884, 0.77 }; + double X[] = { -0.77, -0.818, 0.337 }; + int incX = -1; + double x_expected[] = { -0.914786, -0.496165, 0.337 }; + cblas_dtbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtbmv(case 917)"); + } + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 121; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { 0.188, 0.6, -0.743, -0.803, 0.449, -0.681, -0.464, -0.029, 0.553 }; + double X[] = { -0.851, 0.481, 0.155 }; + int incX = -1; + double x_expected[] = { 0.610833, -0.293243, 0.02914 }; + cblas_dtbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtbmv(case 918)"); + } + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 121; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { 0.188, 0.6, -0.743, -0.803, 0.449, -0.681, -0.464, -0.029, 0.553 }; + double X[] = { -0.851, 0.481, 0.155 }; + int incX = -1; + double x_expected[] = { -0.635031, 0.574, 0.155 }; + cblas_dtbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtbmv(case 919)"); + } + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 122; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { 0.188, 0.6, -0.743, -0.803, 0.449, -0.681, -0.464, -0.029, 0.553 }; + double X[] = { -0.851, 0.481, 0.155 }; + int incX = -1; + double x_expected[] = { 0.024679, 0.610833, -0.293243 }; + cblas_dtbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtbmv(case 920)"); + } + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 122; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { 0.188, 0.6, -0.743, -0.803, 0.449, -0.681, -0.464, -0.029, 0.553 }; + double X[] = { -0.851, 0.481, 0.155 }; + int incX = -1; + double x_expected[] = { -0.851, 0.875864, -0.231243 }; + cblas_dtbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtbmv(case 921)"); + } + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 121; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { 0.188, 0.6, -0.743, -0.803, 0.449, -0.681, -0.464, -0.029, 0.553 }; + double X[] = { -0.851, 0.481, 0.155 }; + int incX = -1; + double x_expected[] = { -0.198505, 0.091504, 0.093 }; + cblas_dtbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtbmv(case 922)"); + } + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 121; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { 0.188, 0.6, -0.743, -0.803, 0.449, -0.681, -0.464, -0.029, 0.553 }; + double X[] = { -0.851, 0.481, 0.155 }; + int incX = -1; + double x_expected[] = { -1.074184, 0.356535, 0.155 }; + cblas_dtbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtbmv(case 923)"); + } + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 122; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { 0.188, 0.6, -0.743, -0.803, 0.449, -0.681, -0.464, -0.029, 0.553 }; + double X[] = { -0.851, 0.481, 0.155 }; + int incX = -1; + double x_expected[] = { 0.394864, -0.768342, 0.31774 }; + cblas_dtbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtbmv(case 924)"); + } + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 122; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { 0.188, 0.6, -0.743, -0.803, 0.449, -0.681, -0.464, -0.029, 0.553 }; + double X[] = { -0.851, 0.481, 0.155 }; + int incX = -1; + double x_expected[] = { -0.851, 0.098901, 0.4436 }; + cblas_dtbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtbmv(case 925)"); + } + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 121; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { 0.824f, -0.45f, -0.987f, 0.758f, 0.42f, -0.357f, 0.147f, -0.191f, 0.88f, 0.63f, 0.155f, -0.573f, 0.224f, 0.146f, 0.501f, -0.889f, 0.456f, 0.796f }; + float X[] = { -0.46f, 0.069f, 0.308f, -0.003f, -0.236f, 0.605f }; + int incX = -1; + float x_expected[] = { -0.113114f, -0.051704f, -0.403567f, -0.288349f, -0.223936f, 0.841145f }; + cblas_ctbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctbmv(case 926) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctbmv(case 926) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 121; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { 0.824f, -0.45f, -0.987f, 0.758f, 0.42f, -0.357f, 0.147f, -0.191f, 0.88f, 0.63f, 0.155f, -0.573f, 0.224f, 0.146f, 0.501f, -0.889f, 0.456f, 0.796f }; + float X[] = { -0.46f, 0.069f, 0.308f, -0.003f, -0.236f, 0.605f }; + int incX = -1; + float x_expected[] = { -0.46f, 0.069f, -0.14027f, -0.23208f, -0.537722f, 0.841425f }; + cblas_ctbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctbmv(case 927) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctbmv(case 927) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 122; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { 0.824f, -0.45f, -0.987f, 0.758f, 0.42f, -0.357f, 0.147f, -0.191f, 0.88f, 0.63f, 0.155f, -0.573f, 0.224f, 0.146f, 0.501f, -0.889f, 0.456f, 0.796f }; + float X[] = { -0.46f, 0.069f, 0.308f, -0.003f, -0.236f, 0.605f }; + int incX = -1; + float x_expected[] = { -0.099689f, 0.487805f, 0.353793f, 0.325411f, -0.225658f, -0.776023f }; + cblas_ctbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctbmv(case 928) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctbmv(case 928) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 122; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { 0.824f, -0.45f, -0.987f, 0.758f, 0.42f, -0.357f, 0.147f, -0.191f, 0.88f, 0.63f, 0.155f, -0.573f, 0.224f, 0.146f, 0.501f, -0.889f, 0.456f, 0.796f }; + float X[] = { -0.46f, 0.069f, 0.308f, -0.003f, -0.236f, 0.605f }; + int incX = -1; + float x_expected[] = { -0.39057f, 0.113296f, 0.388863f, 0.131011f, -0.236f, 0.605f }; + cblas_ctbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctbmv(case 929) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctbmv(case 929) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 121; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { 0.824f, -0.45f, -0.987f, 0.758f, 0.42f, -0.357f, 0.147f, -0.191f, 0.88f, 0.63f, 0.155f, -0.573f, 0.224f, 0.146f, 0.501f, -0.889f, 0.456f, 0.796f }; + float X[] = { -0.46f, 0.069f, 0.308f, -0.003f, -0.236f, 0.605f }; + int incX = -1; + float x_expected[] = { -0.169119f, 0.443509f, 0.159816f, 0.139696f, -0.180955f, -0.835292f }; + cblas_ctbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctbmv(case 930) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctbmv(case 930) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 121; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { 0.824f, -0.45f, -0.987f, 0.758f, 0.42f, -0.357f, 0.147f, -0.191f, 0.88f, 0.63f, 0.155f, -0.573f, 0.224f, 0.146f, 0.501f, -0.889f, 0.456f, 0.796f }; + float X[] = { -0.46f, 0.069f, 0.308f, -0.003f, -0.236f, 0.605f }; + int incX = -1; + float x_expected[] = { -0.46f, 0.069f, 0.194886f, -0.054704f, -0.191297f, 0.545731f }; + cblas_ctbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctbmv(case 931) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctbmv(case 931) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 122; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { 0.824f, -0.45f, -0.987f, 0.758f, 0.42f, -0.357f, 0.147f, -0.191f, 0.88f, 0.63f, 0.155f, -0.573f, 0.224f, 0.146f, 0.501f, -0.889f, 0.456f, 0.796f }; + float X[] = { -0.46f, 0.069f, 0.308f, -0.003f, -0.236f, 0.605f }; + int incX = -1; + float x_expected[] = { 0.159816f, 0.139696f, -0.180955f, -0.835292f, 0.077786f, 0.60472f }; + cblas_ctbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctbmv(case 932) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctbmv(case 932) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 122; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { 0.824f, -0.45f, -0.987f, 0.758f, 0.42f, -0.357f, 0.147f, -0.191f, 0.88f, 0.63f, 0.155f, -0.573f, 0.224f, 0.146f, 0.501f, -0.889f, 0.456f, 0.796f }; + float X[] = { -0.46f, 0.069f, 0.308f, -0.003f, -0.236f, 0.605f }; + int incX = -1; + float x_expected[] = { -0.18707f, 0.2604f, 0.082342f, -0.779023f, -0.236f, 0.605f }; + cblas_ctbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctbmv(case 933) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctbmv(case 933) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 121; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { -0.814f, 0.043f, -0.755f, -0.094f, 0.876f, 0.257f, 0.406f, 0.491f, -0.27f, -0.787f, 0.545f, 0.732f, -0.512f, -0.085f, 0.234f, 0.001f, -0.225f, -0.002f }; + float X[] = { 0.411f, -0.308f, -0.912f, 0.811f, -0.894f, -0.116f }; + int incX = -1; + float x_expected[] = { 0.647885f, 0.621535f, -0.104407f, 0.05309f, 0.732704f, 0.055982f }; + cblas_ctbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctbmv(case 934) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctbmv(case 934) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 121; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { -0.814f, 0.043f, -0.755f, -0.094f, 0.876f, 0.257f, 0.406f, 0.491f, -0.27f, -0.787f, 0.545f, 0.732f, -0.512f, -0.085f, 0.234f, 0.001f, -0.225f, -0.002f }; + float X[] = { 0.411f, -0.308f, -0.912f, 0.811f, -0.894f, -0.116f }; + int incX = -1; + float x_expected[] = { 1.2955f, 0.190774f, -0.247934f, 0.982616f, -0.894f, -0.116f }; + cblas_ctbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctbmv(case 935) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctbmv(case 935) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 122; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { -0.814f, 0.043f, -0.755f, -0.094f, 0.876f, 0.257f, 0.406f, 0.491f, -0.27f, -0.787f, 0.545f, 0.732f, -0.512f, -0.085f, 0.234f, 0.001f, -0.225f, -0.002f }; + float X[] = { 0.411f, -0.308f, -0.912f, 0.811f, -0.894f, -0.116f }; + int incX = -1; + float x_expected[] = { 0.096482f, -0.071661f, 0.647885f, 0.621535f, -0.104407f, 0.05309f }; + cblas_ctbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctbmv(case 936) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctbmv(case 936) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 122; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { -0.814f, 0.043f, -0.755f, -0.094f, 0.876f, 0.257f, 0.406f, 0.491f, -0.27f, -0.787f, 0.545f, 0.732f, -0.512f, -0.085f, 0.234f, 0.001f, -0.225f, -0.002f }; + float X[] = { 0.411f, -0.308f, -0.912f, 0.811f, -0.894f, -0.116f }; + int incX = -1; + float x_expected[] = { 0.411f, -0.308f, -1.14861f, 0.933761f, -1.66247f, -0.234526f }; + cblas_ctbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctbmv(case 937) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctbmv(case 937) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 121; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { -0.814f, 0.043f, -0.755f, -0.094f, 0.876f, 0.257f, 0.406f, 0.491f, -0.27f, -0.787f, 0.545f, 0.732f, -0.512f, -0.085f, 0.234f, 0.001f, -0.225f, -0.002f }; + float X[] = { 0.411f, -0.308f, -0.912f, 0.811f, -0.894f, -0.116f }; + int incX = -1; + float x_expected[] = { 0.632361f, -0.409373f, 0.578489f, 0.012724f, 0.664066f, 0.171616f }; + cblas_ctbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctbmv(case 938) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctbmv(case 938) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 121; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { -0.814f, 0.043f, -0.755f, -0.094f, 0.876f, 0.257f, 0.406f, 0.491f, -0.27f, -0.787f, 0.545f, 0.732f, -0.512f, -0.085f, 0.234f, 0.001f, -0.225f, -0.002f }; + float X[] = { 0.411f, -0.308f, -0.912f, 0.811f, -0.894f, -0.116f }; + int incX = -1; + float x_expected[] = { 0.946879f, -0.645712f, -1.21801f, 0.32495f, -0.894f, -0.116f }; + cblas_ctbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctbmv(case 939) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctbmv(case 939) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 122; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { -0.814f, 0.043f, -0.755f, -0.094f, 0.876f, 0.257f, 0.406f, 0.491f, -0.27f, -0.787f, 0.545f, 0.732f, -0.512f, -0.085f, 0.234f, 0.001f, -0.225f, -0.002f }; + float X[] = { 0.411f, -0.308f, -0.912f, 0.811f, -0.894f, -0.116f }; + int incX = -1; + float x_expected[] = { -0.236612f, 0.122761f, -1.12184f, -0.358823f, 1.4975f, -0.470595f }; + cblas_ctbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctbmv(case 940) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctbmv(case 940) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 122; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { -0.814f, 0.043f, -0.755f, -0.094f, 0.876f, 0.257f, 0.406f, 0.491f, -0.27f, -0.787f, 0.545f, 0.732f, -0.512f, -0.085f, 0.234f, 0.001f, -0.225f, -0.002f }; + float X[] = { 0.411f, -0.308f, -0.912f, 0.811f, -0.894f, -0.116f }; + int incX = -1; + float x_expected[] = { 0.411f, -0.308f, -1.26537f, 0.570703f, -0.129206f, -0.642577f }; + cblas_ctbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctbmv(case 941) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctbmv(case 941) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 113; + int uplo = 121; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { -0.675f, 0.047f, 0.695f, 0.724f, -0.438f, 0.991f, -0.188f, -0.06f, -0.093f, 0.302f, 0.842f, -0.753f, 0.465f, -0.972f, -0.058f, 0.988f, 0.093f, 0.164f }; + float X[] = { 0.065f, -0.082f, -0.746f, 0.775f, 0.694f, -0.954f }; + int incX = -1; + float x_expected[] = { 0.413357f, 0.178267f, -0.114618f, -1.35595f, -0.513288f, 0.611332f }; + cblas_ctbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctbmv(case 942) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctbmv(case 942) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 113; + int uplo = 121; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { -0.675f, 0.047f, 0.695f, 0.724f, -0.438f, 0.991f, -0.188f, -0.06f, -0.093f, 0.302f, 0.842f, -0.753f, 0.465f, -0.972f, -0.058f, 0.988f, 0.093f, 0.164f }; + float X[] = { 0.065f, -0.082f, -0.746f, 0.775f, 0.694f, -0.954f }; + int incX = -1; + float x_expected[] = { 0.368428f, 0.071217f, -0.954366f, -0.390486f, 0.694f, -0.954f }; + cblas_ctbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctbmv(case 943) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctbmv(case 943) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 113; + int uplo = 122; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { -0.675f, 0.047f, 0.695f, 0.724f, -0.438f, 0.991f, -0.188f, -0.06f, -0.093f, 0.302f, 0.842f, -0.753f, 0.465f, -0.972f, -0.058f, 0.988f, 0.093f, 0.164f }; + float X[] = { 0.065f, -0.082f, -0.746f, 0.775f, 0.694f, -0.954f }; + int incX = -1; + float x_expected[] = { -0.084786f, -0.059464f, 0.413357f, 0.178267f, -0.114618f, -1.35595f }; + cblas_ctbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctbmv(case 944) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctbmv(case 944) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 113; + int uplo = 122; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { -0.675f, 0.047f, 0.695f, 0.724f, -0.438f, 0.991f, -0.188f, -0.06f, -0.093f, 0.302f, 0.842f, -0.753f, 0.465f, -0.972f, -0.058f, 0.988f, 0.093f, 0.164f }; + float X[] = { 0.065f, -0.082f, -0.746f, 0.775f, 0.694f, -0.954f }; + int incX = -1; + float x_expected[] = { 0.065f, -0.082f, -0.636071f, 0.80005f, 0.787748f, -1.14446f }; + cblas_ctbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctbmv(case 945) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctbmv(case 945) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 113; + int uplo = 121; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { -0.675f, 0.047f, 0.695f, 0.724f, -0.438f, 0.991f, -0.188f, -0.06f, -0.093f, 0.302f, 0.842f, -0.753f, 0.465f, -0.972f, -0.058f, 0.988f, 0.093f, 0.164f }; + float X[] = { 0.065f, -0.082f, -0.746f, 0.775f, 0.694f, -0.954f }; + int incX = -1; + float x_expected[] = { -1.18498f, -0.424201f, 0.230196f, 0.374209f, -0.208366f, -1.16549f }; + cblas_ctbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctbmv(case 946) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctbmv(case 946) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 113; + int uplo = 121; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { -0.675f, 0.047f, 0.695f, 0.724f, -0.438f, 0.991f, -0.188f, -0.06f, -0.093f, 0.302f, 0.842f, -0.753f, 0.465f, -0.972f, -0.058f, 0.988f, 0.093f, 0.164f }; + float X[] = { 0.065f, -0.082f, -0.746f, 0.775f, 0.694f, -0.954f }; + int incX = -1; + float x_expected[] = { -1.03519f, -0.446737f, -0.819232f, 0.995992f, 0.694f, -0.954f }; + cblas_ctbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctbmv(case 947) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctbmv(case 947) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 113; + int uplo = 122; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { -0.675f, 0.047f, 0.695f, 0.724f, -0.438f, 0.991f, -0.188f, -0.06f, -0.093f, 0.302f, 0.842f, -0.753f, 0.465f, -0.972f, -0.058f, 0.988f, 0.093f, 0.164f }; + float X[] = { 0.065f, -0.082f, -0.746f, 0.775f, 0.694f, -0.954f }; + int incX = -1; + float x_expected[] = { 0.109929f, 0.02505f, 0.062939f, -0.202464f, -0.470658f, 1.69006f }; + cblas_ctbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctbmv(case 948) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctbmv(case 948) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 113; + int uplo = 122; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { -0.675f, 0.047f, 0.695f, 0.724f, -0.438f, 0.991f, -0.188f, -0.06f, -0.093f, 0.302f, 0.842f, -0.753f, 0.465f, -0.972f, -0.058f, 0.988f, 0.093f, 0.164f }; + float X[] = { 0.065f, -0.082f, -0.746f, 0.775f, 0.694f, -0.954f }; + int incX = -1; + float x_expected[] = { 0.065f, -0.082f, -0.776809f, 0.762996f, 0.73663f, 0.124729f }; + cblas_ctbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctbmv(case 949) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctbmv(case 949) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 121; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { -0.212, 0.612, 0.189, -0.046, -0.124, 0.82, 0.753, 0.727, 0.331, 0.116, 0.504, -0.673, -0.888, -0.277, -0.361, -0.909, 0.982, -0.124 }; + double X[] = { 0.064, 0.169, -0.81, -0.779, -0.641, -0.103 }; + int incX = -1; + double x_expected[] = { -0.010019, -0.1678, -0.042017, -1.112094, 0.010004, -0.480427 }; + cblas_ztbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztbmv(case 950) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztbmv(case 950) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 121; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { -0.212, 0.612, 0.189, -0.046, -0.124, 0.82, 0.753, 0.727, 0.331, 0.116, 0.504, -0.673, -0.888, -0.277, -0.361, -0.909, 0.982, -0.124 }; + double X[] = { 0.064, 0.169, -0.81, -0.779, -0.641, -0.103 }; + int incX = -1; + double x_expected[] = { 0.064, 0.169, -0.80842, -0.715637, -0.829924, -0.212971 }; + cblas_ztbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztbmv(case 951) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztbmv(case 951) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 122; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { -0.212, 0.612, 0.189, -0.046, -0.124, 0.82, 0.753, 0.727, 0.331, 0.116, 0.504, -0.673, -0.888, -0.277, -0.361, -0.909, 0.982, -0.124 }; + double X[] = { 0.064, 0.169, -0.81, -0.779, -0.641, -0.103 }; + int incX = -1; + double x_expected[] = { 0.634014, 0.796937, -0.585538, -0.895375, -0.125887, 0.010019 }; + cblas_ztbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztbmv(case 952) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztbmv(case 952) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 122; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { -0.212, 0.612, 0.189, -0.046, -0.124, 0.82, 0.753, 0.727, 0.331, 0.116, 0.504, -0.673, -0.888, -0.277, -0.361, -0.909, 0.982, -0.124 }; + double X[] = { 0.064, 0.169, -0.81, -0.779, -0.641, -0.103 }; + int incX = -1; + double x_expected[] = { 0.567497, 1.085122, -1.217792, -1.322566, -0.641, -0.103 }; + cblas_ztbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztbmv(case 953) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztbmv(case 953) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 121; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { -0.212, 0.612, 0.189, -0.046, -0.124, 0.82, 0.753, 0.727, 0.331, 0.116, 0.504, -0.673, -0.888, -0.277, -0.361, -0.909, 0.982, -0.124 }; + double X[] = { 0.064, 0.169, -0.81, -0.779, -0.641, -0.103 }; + int incX = -1; + double x_expected[] = { 0.130517, -0.119185, -0.187765, -0.519609, -0.169484, -1.165438 }; + cblas_ztbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztbmv(case 954) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztbmv(case 954) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 121; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { -0.212, 0.612, 0.189, -0.046, -0.124, 0.82, 0.753, 0.727, 0.331, 0.116, 0.504, -0.673, -0.888, -0.277, -0.361, -0.909, 0.982, -0.124 }; + double X[] = { 0.064, 0.169, -0.81, -0.779, -0.641, -0.103 }; + int incX = -1; + double x_expected[] = { 0.064, 0.169, -0.820019, -0.9468, -0.684597, -1.278457 }; + cblas_ztbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztbmv(case 955) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztbmv(case 955) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 122; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { -0.212, 0.612, 0.189, -0.046, -0.124, 0.82, 0.753, 0.727, 0.331, 0.116, 0.504, -0.673, -0.888, -0.277, -0.361, -0.909, 0.982, -0.124 }; + double X[] = { 0.064, 0.169, -0.81, -0.779, -0.641, -0.103 }; + int incX = -1; + double x_expected[] = { -0.187765, -0.519609, -0.169484, -1.165438, 0.198928, -0.370456 }; + cblas_ztbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztbmv(case 956) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztbmv(case 956) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 122; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { -0.212, 0.612, 0.189, -0.046, -0.124, 0.82, 0.753, 0.727, 0.331, 0.116, 0.504, -0.673, -0.888, -0.277, -0.361, -0.909, 0.982, -0.124 }; + double X[] = { 0.064, 0.169, -0.81, -0.779, -0.641, -0.103 }; + int incX = -1; + double x_expected[] = { -0.113746, -0.182809, -0.935887, -0.768981, -0.641, -0.103 }; + cblas_ztbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztbmv(case 957) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztbmv(case 957) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 121; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { -0.374, -0.308, 0.792, 0.884, -0.794, -0.055, -0.281, 0.527, 0.246, 0.762, 0.853, 0.891, -0.231, 0.384, 0.373, -0.717, -0.957, -0.338 }; + double X[] = { 0.884, 0.636, 0.921, 0.282, -0.649, 0.188 }; + int incX = -1; + double x_expected[] = { -0.436746, 0.963714, -1.087615, -0.018695, 0.30063, 0.12958 }; + cblas_ztbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztbmv(case 958) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztbmv(case 958) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 121; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { -0.374, -0.308, 0.792, 0.884, -0.794, -0.055, -0.281, 0.527, 0.246, 0.762, 0.853, 0.891, -0.231, 0.384, 0.373, -0.717, -0.957, -0.338 }; + double X[] = { 0.884, 0.636, 0.921, 0.282, -0.649, 0.188 }; + int incX = -1; + double x_expected[] = { 0.895682, 1.407174, 0.2408, -0.14282, -0.649, 0.188 }; + cblas_ztbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztbmv(case 959) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztbmv(case 959) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 122; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { -0.374, -0.308, 0.792, 0.884, -0.794, -0.055, -0.281, 0.527, 0.246, 0.762, 0.853, 0.891, -0.231, 0.384, 0.373, -0.717, -0.957, -0.338 }; + double X[] = { 0.884, 0.636, 0.921, 0.282, -0.649, 0.188 }; + int incX = -1; + double x_expected[] = { 0.785744, -0.3966, -0.436746, 0.963714, -1.087615, -0.018695 }; + cblas_ztbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztbmv(case 960) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztbmv(case 960) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 122; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { -0.374, -0.308, 0.792, 0.884, -0.794, -0.055, -0.281, 0.527, 0.246, 0.762, 0.853, 0.891, -0.231, 0.384, 0.373, -0.717, -0.957, -0.338 }; + double X[] = { 0.884, 0.636, 0.921, 0.282, -0.649, 0.188 }; + int incX = -1; + double x_expected[] = { 0.884, 0.636, 0.472572, 0.47454, -1.056415, 0.594125 }; + cblas_ztbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztbmv(case 961) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztbmv(case 961) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 121; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { -0.374, -0.308, 0.792, 0.884, -0.794, -0.055, -0.281, 0.527, 0.246, 0.762, 0.853, 0.891, -0.231, 0.384, 0.373, -0.717, -0.957, -0.338 }; + double X[] = { 0.884, 0.636, 0.921, 0.282, -0.649, 0.188 }; + int incX = -1; + double x_expected[] = { 0.464705, -0.108078, 0.094975, 0.376323, -0.6802, -0.42482 }; + cblas_ztbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztbmv(case 962) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztbmv(case 962) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 121; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { -0.374, -0.308, 0.792, 0.884, -0.794, -0.055, -0.281, 0.527, 0.246, 0.762, 0.853, 0.891, -0.231, 0.384, 0.373, -0.717, -0.957, -0.338 }; + double X[] = { 0.884, 0.636, 0.921, 0.282, -0.649, 0.188 }; + int incX = -1; + double x_expected[] = { 0.562961, 0.924522, 1.004293, -0.112851, -0.649, 0.188 }; + cblas_ztbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztbmv(case 963) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztbmv(case 963) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 122; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { -0.374, -0.308, 0.792, 0.884, -0.794, -0.055, -0.281, 0.527, 0.246, 0.762, 0.853, 0.891, -0.231, 0.384, 0.373, -0.717, -0.957, -0.338 }; + double X[] = { 0.884, 0.636, 0.921, 0.282, -0.649, 0.188 }; + int incX = -1; + double x_expected[] = { -0.448428, 0.19254, -0.674583, 1.236189, 0.780774, 1.167088 }; + cblas_ztbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztbmv(case 964) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztbmv(case 964) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 122; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { -0.374, -0.308, 0.792, 0.884, -0.794, -0.055, -0.281, 0.527, 0.246, 0.762, 0.853, 0.891, -0.231, 0.384, 0.373, -0.717, -0.957, -0.338 }; + double X[] = { 0.884, 0.636, 0.921, 0.282, -0.649, 0.188 }; + int incX = -1; + double x_expected[] = { 0.884, 0.636, 0.653832, 1.112064, -0.168856, 1.225508 }; + cblas_ztbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztbmv(case 965) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztbmv(case 965) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 113; + int uplo = 121; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { 0.002, 0.95, -0.363, 0.084, -0.646, 0.816, -0.407, 0.099, -0.02, -0.906, -0.874, 0.191, -0.328, -0.968, 0.79, 0.826, -0.795, 0.277 }; + double X[] = { -0.591, -0.084, 0.707, 0.945, 0.326, 0.428 }; + int incX = -1; + double x_expected[] = { -0.59515, 0.077106, -0.27658, -0.637356, 0.407252, -0.308844 }; + cblas_ztbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztbmv(case 966) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztbmv(case 966) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 113; + int uplo = 121; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { 0.002, 0.95, -0.363, 0.084, -0.646, 0.816, -0.407, 0.099, -0.02, -0.906, -0.874, 0.191, -0.328, -0.968, 0.79, 0.826, -0.795, 0.277 }; + double X[] = { -0.591, -0.084, 0.707, 0.945, 0.326, 0.428 }; + int incX = -1; + double x_expected[] = { -1.46131, 0.537642, 0.624614, 0.762252, 0.326, 0.428 }; + cblas_ztbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztbmv(case 967) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztbmv(case 967) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 113; + int uplo = 122; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { 0.002, 0.95, -0.363, 0.084, -0.646, 0.816, -0.407, 0.099, -0.02, -0.906, -0.874, 0.191, -0.328, -0.968, 0.79, 0.826, -0.795, 0.277 }; + double X[] = { -0.591, -0.084, 0.707, 0.945, 0.326, 0.428 }; + int incX = -1; + double x_expected[] = { -0.536274, 0.421806, -0.59515, 0.077106, -0.27658, -0.637356 }; + cblas_ztbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztbmv(case 968) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztbmv(case 968) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 113; + int uplo = 122; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { 0.002, 0.95, -0.363, 0.084, -0.646, 0.816, -0.407, 0.099, -0.02, -0.906, -0.874, 0.191, -0.328, -0.968, 0.79, 0.826, -0.795, 0.277 }; + double X[] = { -0.591, -0.084, 0.707, 0.945, 0.326, 0.428 }; + int incX = -1; + double x_expected[] = { -0.591, -0.084, 0.98216, 0.400464, 0.131806, -0.026608 }; + cblas_ztbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztbmv(case 969) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztbmv(case 969) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 113; + int uplo = 121; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { 0.002, 0.95, -0.363, 0.084, -0.646, 0.816, -0.407, 0.099, -0.02, -0.906, -0.874, 0.191, -0.328, -0.968, 0.79, 0.826, -0.795, 0.277 }; + double X[] = { -0.591, -0.084, 0.707, 0.945, 0.326, 0.428 }; + int incX = -1; + double x_expected[] = { -1.68293, 0.796222, -0.96062, 0.415172, -0.082386, -0.182748 }; + cblas_ztbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztbmv(case 970) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztbmv(case 970) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 113; + int uplo = 121; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { 0.002, 0.95, -0.363, 0.084, -0.646, 0.816, -0.407, 0.099, -0.02, -0.906, -0.874, 0.191, -0.328, -0.968, 0.79, 0.826, -0.795, 0.277 }; + double X[] = { -0.591, -0.084, 0.707, 0.945, 0.326, 0.428 }; + int incX = -1; + double x_expected[] = { -1.737656, 0.290416, 0.61669, 0.73853, 0.326, 0.428 }; + cblas_ztbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztbmv(case 971) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztbmv(case 971) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 113; + int uplo = 122; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { 0.002, 0.95, -0.363, 0.084, -0.646, 0.816, -0.407, 0.099, -0.02, -0.906, -0.874, 0.191, -0.328, -0.968, 0.79, 0.826, -0.795, 0.277 }; + double X[] = { -0.591, -0.084, 0.707, 0.945, 0.326, 0.428 }; + int incX = -1; + double x_expected[] = { 0.27516, -0.544536, -0.10627, -0.988374, 0.229991, -0.711267 }; + cblas_ztbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztbmv(case 972) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztbmv(case 972) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 113; + int uplo = 122; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { 0.002, 0.95, -0.363, 0.084, -0.646, 0.816, -0.407, 0.099, -0.02, -0.906, -0.874, 0.191, -0.328, -0.968, 0.79, 0.826, -0.795, 0.277 }; + double X[] = { -0.591, -0.084, 0.707, 0.945, 0.326, 0.428 }; + int incX = -1; + double x_expected[] = { -0.591, -0.084, 0.794924, 0.411234, 0.148739, 0.025577 }; + cblas_ztbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztbmv(case 973) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztbmv(case 973) imag"); + }; + }; + }; + + +} diff --git a/gsl-2.5/cblas/test_tbsv.c b/gsl-2.5/cblas/test_tbsv.c new file mode 100644 index 00000000..2d9d290f --- /dev/null +++ b/gsl-2.5/cblas/test_tbsv.c @@ -0,0 +1,1819 @@ +#include +#include +#include +#include + +#include "tests.h" + +void +test_tbsv (void) { +const double flteps = 1e-4, dbleps = 1e-6; + { + int order = 101; + int trans = 111; + int uplo = 121; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { -0.681f, 0.209f, 0.436f, -0.369f, 0.786f, -0.84f, 0.86f, -0.233f, 0.734f }; + float X[] = { -0.305f, 0.61f, -0.831f }; + int incX = -1; + float x_expected[] = { -0.354651f, -2.40855f, 0.481076f }; + cblas_stbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "stbsv(case 1230)"); + } + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 121; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { -0.681f, 0.209f, 0.436f, -0.369f, 0.786f, -0.84f, 0.86f, -0.233f, 0.734f }; + float X[] = { -0.305f, 0.61f, -0.831f }; + int incX = -1; + float x_expected[] = { -0.305f, 0.84973f, -1.00859f }; + cblas_stbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "stbsv(case 1231)"); + } + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 122; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { -0.681f, 0.209f, 0.436f, -0.369f, 0.786f, -0.84f, 0.86f, -0.233f, 0.734f }; + float X[] = { -0.305f, 0.61f, -0.831f }; + int incX = -1; + float x_expected[] = { -2.71619f, -1.09055f, -3.97608f }; + cblas_stbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "stbsv(case 1232)"); + } + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 122; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { -0.681f, 0.209f, 0.436f, -0.369f, 0.786f, -0.84f, 0.86f, -0.233f, 0.734f }; + float X[] = { -0.305f, 0.61f, -0.831f }; + int incX = -1; + float x_expected[] = { -0.56589f, 0.303361f, -0.831f }; + cblas_stbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "stbsv(case 1233)"); + } + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 121; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { -0.681f, 0.209f, 0.436f, -0.369f, 0.786f, -0.84f, 0.86f, -0.233f, 0.734f }; + float X[] = { -0.305f, 0.61f, -0.831f }; + int incX = -1; + float x_expected[] = { 1.30901f, -0.656172f, -5.13458f }; + cblas_stbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "stbsv(case 1234)"); + } + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 121; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { -0.681f, 0.209f, 0.436f, -0.369f, 0.786f, -0.84f, 0.86f, -0.233f, 0.734f }; + float X[] = { -0.305f, 0.61f, -0.831f }; + int incX = -1; + float x_expected[] = { -0.305f, 0.8723f, -0.509121f }; + cblas_stbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "stbsv(case 1235)"); + } + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 122; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { -0.681f, 0.209f, 0.436f, -0.369f, 0.786f, -0.84f, 0.86f, -0.233f, 0.734f }; + float X[] = { -0.305f, 0.61f, -0.831f }; + int incX = -1; + float x_expected[] = { 0.524539f, -0.961964f, 1.22026f }; + cblas_stbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "stbsv(case 1236)"); + } + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 122; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { -0.681f, 0.209f, 0.436f, -0.369f, 0.786f, -0.84f, 0.86f, -0.233f, 0.734f }; + float X[] = { -0.305f, 0.61f, -0.831f }; + int incX = -1; + float x_expected[] = { -0.920972f, 0.783679f, -0.831f }; + cblas_stbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "stbsv(case 1237)"); + } + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 121; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { 0.022f, 0.795f, -0.389f, -0.205f, -0.121f, 0.323f, 0.133f, 0.679f, 0.742f }; + float X[] = { 0.144f, 0.635f, 0.116f }; + int incX = -1; + float x_expected[] = { 16.8676f, 17.3503f, 5.27273f }; + cblas_stbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "stbsv(case 1238)"); + } + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 121; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { 0.022f, 0.795f, -0.389f, -0.205f, -0.121f, 0.323f, 0.133f, 0.679f, 0.742f }; + float X[] = { 0.144f, 0.635f, 0.116f }; + int incX = -1; + float x_expected[] = { 0.209676f, 0.54278f, 0.116f }; + cblas_stbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "stbsv(case 1239)"); + } + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 122; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { 0.022f, 0.795f, -0.389f, -0.205f, -0.121f, 0.323f, 0.133f, 0.679f, 0.742f }; + float X[] = { 0.144f, 0.635f, 0.116f }; + int incX = -1; + float x_expected[] = { 0.212077f, -5.01482f, -1.14722f }; + cblas_stbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "stbsv(case 1240)"); + } + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 122; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { 0.022f, 0.795f, -0.389f, -0.205f, -0.121f, 0.323f, 0.133f, 0.679f, 0.742f }; + float X[] = { 0.144f, 0.635f, 0.116f }; + int incX = -1; + float x_expected[] = { 0.144f, 0.615848f, 0.242249f }; + cblas_stbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "stbsv(case 1241)"); + } + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 121; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { 0.022f, 0.795f, -0.389f, -0.205f, -0.121f, 0.323f, 0.133f, 0.679f, 0.742f }; + float X[] = { 0.144f, 0.635f, 0.116f }; + int incX = -1; + float x_expected[] = { 1.28844f, -5.49514f, 0.145912f }; + cblas_stbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "stbsv(case 1242)"); + } + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 121; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { 0.022f, 0.795f, -0.389f, -0.205f, -0.121f, 0.323f, 0.133f, 0.679f, 0.742f }; + float X[] = { 0.144f, 0.635f, 0.116f }; + int incX = -1; + float x_expected[] = { 0.0563823f, 0.65878f, 0.116f }; + cblas_stbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "stbsv(case 1243)"); + } + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 122; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { 0.022f, 0.795f, -0.389f, -0.205f, -0.121f, 0.323f, 0.133f, 0.679f, 0.742f }; + float X[] = { 0.144f, 0.635f, 0.116f }; + int incX = -1; + float x_expected[] = { 1.08271f, -3.73662f, 140.301f }; + cblas_stbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "stbsv(case 1244)"); + } + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 122; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { 0.022f, 0.795f, -0.389f, -0.205f, -0.121f, 0.323f, 0.133f, 0.679f, 0.742f }; + float X[] = { 0.144f, 0.635f, 0.116f }; + int incX = -1; + float x_expected[] = { 0.144f, 0.652424f, -0.402677f }; + cblas_stbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "stbsv(case 1245)"); + } + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 121; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { 0.619, -0.443, 0.957, -0.633, -0.698, 0.783, -0.343, -0.603, 0.735 }; + double X[] = { 0.332, 0.588, 0.252 }; + int incX = -1; + double x_expected[] = { -0.967930029155, 0.138412575592, 0.506166027443 }; + cblas_dtbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtbsv(case 1246)"); + } + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 121; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { 0.619, -0.443, 0.957, -0.633, -0.698, 0.783, -0.343, -0.603, 0.735 }; + double X[] = { 0.332, 0.588, 0.252 }; + int incX = -1; + double x_expected[] = { 0.332, 0.819736, 0.615143048 }; + cblas_dtbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtbsv(case 1247)"); + } + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 122; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { 0.619, -0.443, 0.957, -0.633, -0.698, 0.783, -0.343, -0.603, 0.735 }; + double X[] = { 0.332, 0.588, 0.252 }; + int incX = -1; + double x_expected[] = { -0.364842154056, -0.326531140246, -0.568848758465 }; + cblas_dtbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtbsv(case 1248)"); + } + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 122; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { 0.619, -0.443, 0.957, -0.633, -0.698, 0.783, -0.343, -0.603, 0.735 }; + double X[] = { 0.332, 0.588, 0.252 }; + int incX = -1; + double x_expected[] = { 0.588397988, 0.747516, 0.252 }; + cblas_dtbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtbsv(case 1249)"); + } + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 121; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { 0.619, -0.443, 0.957, -0.633, -0.698, 0.783, -0.343, -0.603, 0.735 }; + double X[] = { 0.332, 0.588, 0.252 }; + int incX = -1; + double x_expected[] = { -0.550580431177, -0.571849444278, 0.248263427151 }; + cblas_dtbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtbsv(case 1250)"); + } + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 121; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { 0.619, -0.443, 0.957, -0.633, -0.698, 0.783, -0.343, -0.603, 0.735 }; + double X[] = { 0.332, 0.588, 0.252 }; + int incX = -1; + double x_expected[] = { 0.332, 0.701876, 0.696287508 }; + cblas_dtbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtbsv(case 1251)"); + } + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 122; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { 0.619, -0.443, 0.957, -0.633, -0.698, 0.783, -0.343, -0.603, 0.735 }; + double X[] = { 0.332, 0.588, 0.252 }; + int incX = -1; + double x_expected[] = { 1.50217883761, -1.21382140588, 0.407108239095 }; + cblas_dtbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtbsv(case 1252)"); + } + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 122; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { 0.619, -0.443, 0.957, -0.633, -0.698, 0.783, -0.343, -0.603, 0.735 }; + double X[] = { 0.332, 0.588, 0.252 }; + int incX = -1; + double x_expected[] = { 0.820345928, 0.699636, 0.252 }; + cblas_dtbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtbsv(case 1253)"); + } + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 121; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { -0.199, 0.303, -0.705, -0.013, -0.678, 0.547, 0.756, -0.177, -0.079 }; + double X[] = { 0.58, 0.558, -0.54 }; + int incX = -1; + double x_expected[] = { 18.994209959, 20.323927329, 2.7135678392 }; + cblas_dtbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtbsv(case 1254)"); + } + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 121; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { -0.199, 0.303, -0.705, -0.013, -0.678, 0.547, 0.756, -0.177, -0.079 }; + double X[] = { 0.58, 0.558, -0.54 }; + int incX = -1; + double x_expected[] = { 1.06925836, 0.72162, -0.54 }; + cblas_dtbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtbsv(case 1255)"); + } + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 122; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { -0.199, 0.303, -0.705, -0.013, -0.678, 0.547, 0.756, -0.177, -0.079 }; + double X[] = { 0.58, 0.558, -0.54 }; + int incX = -1; + double x_expected[] = { -3.27683615819, -4.47682615869, -1.97425326753 }; + cblas_dtbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtbsv(case 1256)"); + } + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 122; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { -0.199, 0.303, -0.705, -0.013, -0.678, 0.547, 0.756, -0.177, -0.079 }; + double X[] = { 0.58, 0.558, -0.54 }; + int incX = -1; + double x_expected[] = { 0.58, 0.11952, -0.53844624 }; + cblas_dtbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtbsv(case 1257)"); + } + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 121; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { -0.199, 0.303, -0.705, -0.013, -0.678, 0.547, 0.756, -0.177, -0.079 }; + double X[] = { 0.58, 0.558, -0.54 }; + int incX = -1; + double x_expected[] = { -6.6461072986, -0.788837290809, -1.78217821782 }; + cblas_dtbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtbsv(case 1258)"); + } + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 121; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { -0.199, 0.303, -0.705, -0.013, -0.678, 0.547, 0.756, -0.177, -0.079 }; + double X[] = { 0.58, 0.558, -0.54 }; + int incX = -1; + double x_expected[] = { 0.16345912, 0.55098, -0.54 }; + cblas_dtbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtbsv(case 1259)"); + } + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 122; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { -0.199, 0.303, -0.705, -0.013, -0.678, 0.547, 0.756, -0.177, -0.079 }; + double X[] = { 0.58, 0.558, -0.54 }; + int incX = -1; + double x_expected[] = { 0.767195767196, -82.9352869353, -123.564783625 }; + cblas_dtbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtbsv(case 1260)"); + } + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 122; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { -0.199, 0.303, -0.705, -0.013, -0.678, 0.547, 0.756, -0.177, -0.079 }; + double X[] = { 0.58, 0.558, -0.54 }; + int incX = -1; + double x_expected[] = { 0.58, 0.95124, -0.82822572 }; + cblas_dtbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtbsv(case 1261)"); + } + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 121; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { -0.975f, -0.667f, 0.813f, -0.962f, -0.961f, 0.226f, -0.503f, 0.809f, 0.81f, -0.162f, -0.027f, -0.044f, 0.212f, 0.563f, 0.446f, -0.392f, 0.798f, -0.07f }; + float X[] = { 0.11f, 0.787f, -0.826f, 0.809f, -0.437f, 0.592f }; + int incX = -1; + float x_expected[] = { 1.28871f, 0.289887f, 1.76043f, 1.27481f, 1.56506f, -2.35181f }; + cblas_ctbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctbsv(case 1262) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctbsv(case 1262) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 121; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { -0.975f, -0.667f, 0.813f, -0.962f, -0.961f, 0.226f, -0.503f, 0.809f, 0.81f, -0.162f, -0.027f, -0.044f, 0.212f, 0.563f, 0.446f, -0.392f, 0.798f, -0.07f }; + float X[] = { 0.11f, 0.787f, -0.826f, 0.809f, -0.437f, 0.592f }; + int incX = -1; + float x_expected[] = { 0.11f, 0.787f, -1.04259f, 0.18935f, 0.228474f, -0.564917f }; + cblas_ctbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctbsv(case 1263) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctbsv(case 1263) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 122; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { -0.975f, -0.667f, 0.813f, -0.962f, -0.961f, 0.226f, -0.503f, 0.809f, 0.81f, -0.162f, -0.027f, -0.044f, 0.212f, 0.563f, 0.446f, -0.392f, 0.798f, -0.07f }; + float X[] = { 0.11f, 0.787f, -0.826f, 0.809f, -0.437f, 0.592f }; + int incX = -1; + float x_expected[] = { -0.0906249f, 3.09442f, -1.60036f, 1.28475f, -0.582941f, 0.0383898f }; + cblas_ctbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctbsv(case 1264) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctbsv(case 1264) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 122; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { -0.975f, -0.667f, 0.813f, -0.962f, -0.961f, 0.226f, -0.503f, 0.809f, 0.81f, -0.162f, -0.027f, -0.044f, 0.212f, 0.563f, 0.446f, -0.392f, 0.798f, -0.07f }; + float X[] = { 0.11f, 0.787f, -0.826f, 0.809f, -0.437f, 0.592f }; + int incX = -1; + float x_expected[] = { 1.05233f, 0.79657f, -0.566883f, 1.46031f, -0.437f, 0.592f }; + cblas_ctbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctbsv(case 1265) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctbsv(case 1265) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 121; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { -0.975f, -0.667f, 0.813f, -0.962f, -0.961f, 0.226f, -0.503f, 0.809f, 0.81f, -0.162f, -0.027f, -0.044f, 0.212f, 0.563f, 0.446f, -0.392f, 0.798f, -0.07f }; + float X[] = { 0.11f, 0.787f, -0.826f, 0.809f, -0.437f, 0.592f }; + int incX = -1; + float x_expected[] = { -0.735844f, 1.11782f, -0.28244f, 1.16117f, -0.66707f, 0.938302f }; + cblas_ctbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctbsv(case 1266) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctbsv(case 1266) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 121; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { -0.975f, -0.667f, 0.813f, -0.962f, -0.961f, 0.226f, -0.503f, 0.809f, 0.81f, -0.162f, -0.027f, -0.044f, 0.212f, 0.563f, 0.446f, -0.392f, 0.798f, -0.07f }; + float X[] = { 0.11f, 0.787f, -0.826f, 0.809f, -0.437f, 0.592f }; + int incX = -1; + float x_expected[] = { 0.11f, 0.787f, -0.406239f, 0.580226f, -0.171935f, 1.2125f }; + cblas_ctbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctbsv(case 1267) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctbsv(case 1267) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 122; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { -0.975f, -0.667f, 0.813f, -0.962f, -0.961f, 0.226f, -0.503f, 0.809f, 0.81f, -0.162f, -0.027f, -0.044f, 0.212f, 0.563f, 0.446f, -0.392f, 0.798f, -0.07f }; + float X[] = { 0.11f, 0.787f, -0.826f, 0.809f, -0.437f, 0.592f }; + int incX = -1; + float x_expected[] = { 1.70081f, 2.20477f, 1.32753f, -0.522112f, 0.0223652f, -0.62248f }; + cblas_ctbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctbsv(case 1268) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctbsv(case 1268) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 122; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { -0.975f, -0.667f, 0.813f, -0.962f, -0.961f, 0.226f, -0.503f, 0.809f, 0.81f, -0.162f, -0.027f, -0.044f, 0.212f, 0.563f, 0.446f, -0.392f, 0.798f, -0.07f }; + float X[] = { 0.11f, 0.787f, -0.826f, 0.809f, -0.437f, 0.592f }; + int incX = -1; + float x_expected[] = { 0.967596f, 0.693563f, -1.04022f, -0.09269f, -0.437f, 0.592f }; + cblas_ctbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctbsv(case 1269) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctbsv(case 1269) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 121; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { 0.33f, -0.236f, 0.267f, -0.139f, 0.25f, 0.509f, 0.86f, -0.089f, -0.018f, -0.847f, 0.424f, -0.573f, 0.097f, -0.663f, 0.65f, -0.811f, 0.283f, 0.032f }; + float X[] = { -0.509f, 0.608f, 0.021f, -0.848f, -0.134f, 0.179f }; + int incX = -1; + float x_expected[] = { -1.11985f, 0.801655f, 0.273814f, -1.09438f, -0.52531f, 0.166748f }; + cblas_ctbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctbsv(case 1270) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctbsv(case 1270) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 121; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { 0.33f, -0.236f, 0.267f, -0.139f, 0.25f, 0.509f, 0.86f, -0.089f, -0.018f, -0.847f, 0.424f, -0.573f, 0.097f, -0.663f, 0.65f, -0.811f, 0.283f, 0.032f }; + float X[] = { -0.509f, 0.608f, 0.021f, -0.848f, -0.134f, 0.179f }; + int incX = -1; + float x_expected[] = { 0.266087f, 0.618557f, 0.031897f, -0.914419f, -0.134f, 0.179f }; + cblas_ctbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctbsv(case 1271) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctbsv(case 1271) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 122; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { 0.33f, -0.236f, 0.267f, -0.139f, 0.25f, 0.509f, 0.86f, -0.089f, -0.018f, -0.847f, 0.424f, -0.573f, 0.097f, -0.663f, 0.65f, -0.811f, 0.283f, 0.032f }; + float X[] = { -0.509f, 0.608f, 0.021f, -0.848f, -0.134f, 0.179f }; + int incX = -1; + float x_expected[] = { -0.762749f, -0.016292f, 1.59299f, 0.158751f, -4.75603f, -1.78591f }; + cblas_ctbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctbsv(case 1272) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctbsv(case 1272) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 122; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { 0.33f, -0.236f, 0.267f, -0.139f, 0.25f, 0.509f, 0.86f, -0.089f, -0.018f, -0.847f, 0.424f, -0.573f, 0.097f, -0.663f, 0.65f, -0.811f, 0.283f, 0.032f }; + float X[] = { -0.509f, 0.608f, 0.021f, -0.848f, -0.134f, 0.179f }; + int incX = -1; + float x_expected[] = { -0.509f, 0.608f, -0.332731f, -1.24444f, 0.262904f, 1.21961f }; + cblas_ctbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctbsv(case 1273) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctbsv(case 1273) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 121; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { 0.33f, -0.236f, 0.267f, -0.139f, 0.25f, 0.509f, 0.86f, -0.089f, -0.018f, -0.847f, 0.424f, -0.573f, 0.097f, -0.663f, 0.65f, -0.811f, 0.283f, 0.032f }; + float X[] = { -0.509f, 0.608f, 0.021f, -0.848f, -0.134f, 0.179f }; + int incX = -1; + float x_expected[] = { -1.76046f, 0.0455463f, 1.38348f, 0.700097f, -0.669451f, 0.321896f }; + cblas_ctbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctbsv(case 1274) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctbsv(case 1274) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 121; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { 0.33f, -0.236f, 0.267f, -0.139f, 0.25f, 0.509f, 0.86f, -0.089f, -0.018f, -0.847f, 0.424f, -0.573f, 0.097f, -0.663f, 0.65f, -0.811f, 0.283f, 0.032f }; + float X[] = { -0.509f, 0.608f, 0.021f, -0.848f, -0.134f, 0.179f }; + int incX = -1; + float x_expected[] = { 0.151523f, 0.78611f, 0.120309f, -1.01387f, -0.134f, 0.179f }; + cblas_ctbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctbsv(case 1275) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctbsv(case 1275) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 122; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { 0.33f, -0.236f, 0.267f, -0.139f, 0.25f, 0.509f, 0.86f, -0.089f, -0.018f, -0.847f, 0.424f, -0.573f, 0.097f, -0.663f, 0.65f, -0.811f, 0.283f, 0.032f }; + float X[] = { -0.509f, 0.608f, 0.021f, -0.848f, -0.134f, 0.179f }; + int incX = -1; + float x_expected[] = { -1.00779f, -0.620278f, 0.81164f, -1.90759f, -1.32022f, 1.48356f }; + cblas_ctbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctbsv(case 1276) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctbsv(case 1276) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 122; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { 0.33f, -0.236f, 0.267f, -0.139f, 0.25f, 0.509f, 0.86f, -0.089f, -0.018f, -0.847f, 0.424f, -0.573f, 0.097f, -0.663f, 0.65f, -0.811f, 0.283f, 0.032f }; + float X[] = { -0.509f, 0.608f, 0.021f, -0.848f, -0.134f, 0.179f }; + int incX = -1; + float x_expected[] = { -0.509f, 0.608f, -0.503138f, -1.26818f, 0.176615f, 0.447668f }; + cblas_ctbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctbsv(case 1277) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctbsv(case 1277) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 113; + int uplo = 121; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { 0.041f, -0.61f, 0.099f, -0.393f, 0.357f, -0.984f, -0.576f, -0.342f, -0.903f, -0.083f, -0.157f, -0.694f, 0.768f, 0.688f, 0.203f, -0.079f, 0.298f, -0.424f }; + float X[] = { -0.037f, -0.599f, 0.959f, -0.499f, 0.296f, 0.034f }; + int incX = -1; + float x_expected[] = { -0.613838f, -1.13321f, -1.34847f, 0.0432903f, 0.0879552f, -0.479334f }; + cblas_ctbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctbsv(case 1278) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctbsv(case 1278) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 113; + int uplo = 121; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { 0.041f, -0.61f, 0.099f, -0.393f, 0.357f, -0.984f, -0.576f, -0.342f, -0.903f, -0.083f, -0.157f, -0.694f, 0.768f, 0.688f, 0.203f, -0.079f, 0.298f, -0.424f }; + float X[] = { -0.037f, -0.599f, 0.959f, -0.499f, 0.296f, 0.034f }; + int incX = -1; + float x_expected[] = { 0.76323f, -1.23595f, 0.943058f, -0.618694f, 0.296f, 0.034f }; + cblas_ctbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctbsv(case 1279) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctbsv(case 1279) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 113; + int uplo = 122; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { 0.041f, -0.61f, 0.099f, -0.393f, 0.357f, -0.984f, -0.576f, -0.342f, -0.903f, -0.083f, -0.157f, -0.694f, 0.768f, 0.688f, 0.203f, -0.079f, 0.298f, -0.424f }; + float X[] = { -0.037f, -0.599f, 0.959f, -0.499f, 0.296f, 0.034f }; + int incX = -1; + float x_expected[] = { -1.15557f, -2.50103f, -3.85402f, -1.04833f, 0.414582f, 5.91218f }; + cblas_ctbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctbsv(case 1280) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctbsv(case 1280) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 113; + int uplo = 122; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { 0.041f, -0.61f, 0.099f, -0.393f, 0.357f, -0.984f, -0.576f, -0.342f, -0.903f, -0.083f, -0.157f, -0.694f, 0.768f, 0.688f, 0.203f, -0.079f, 0.298f, -0.424f }; + float X[] = { -0.037f, -0.599f, 0.959f, -0.499f, 0.296f, 0.034f }; + int incX = -1; + float x_expected[] = { -0.037f, -0.599f, 1.39953f, -0.064424f, 1.0801f, -0.481747f }; + cblas_ctbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctbsv(case 1281) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctbsv(case 1281) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 113; + int uplo = 121; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { 0.041f, -0.61f, 0.099f, -0.393f, 0.357f, -0.984f, -0.576f, -0.342f, -0.903f, -0.083f, -0.157f, -0.694f, 0.768f, 0.688f, 0.203f, -0.079f, 0.298f, -0.424f }; + float X[] = { -0.037f, -0.599f, 0.959f, -0.499f, 0.296f, 0.034f }; + int incX = -1; + float x_expected[] = { -3.0802f, -9.09377f, -1.05845f, 0.99239f, 0.259763f, -0.687744f }; + cblas_ctbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctbsv(case 1282) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctbsv(case 1282) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 113; + int uplo = 121; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { 0.041f, -0.61f, 0.099f, -0.393f, 0.357f, -0.984f, -0.576f, -0.342f, -0.903f, -0.083f, -0.157f, -0.694f, 0.768f, 0.688f, 0.203f, -0.079f, 0.298f, -0.424f }; + float X[] = { -0.037f, -0.599f, 0.959f, -0.499f, 0.296f, 0.034f }; + int incX = -1; + float x_expected[] = { -0.513897f, 0.632031f, 1.14112f, -0.580648f, 0.296f, 0.034f }; + cblas_ctbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctbsv(case 1283) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctbsv(case 1283) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 113; + int uplo = 122; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { 0.041f, -0.61f, 0.099f, -0.393f, 0.357f, -0.984f, -0.576f, -0.342f, -0.903f, -0.083f, -0.157f, -0.694f, 0.768f, 0.688f, 0.203f, -0.079f, 0.298f, -0.424f }; + float X[] = { -0.037f, -0.599f, 0.959f, -0.499f, 0.296f, 0.034f }; + int incX = -1; + float x_expected[] = { 0.360899f, -0.456643f, -2.31803f, 0.257877f, 1.56928f, -0.922115f }; + cblas_ctbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctbsv(case 1284) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctbsv(case 1284) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 113; + int uplo = 122; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { 0.041f, -0.61f, 0.099f, -0.393f, 0.357f, -0.984f, -0.576f, -0.342f, -0.903f, -0.083f, -0.157f, -0.694f, 0.768f, 0.688f, 0.203f, -0.079f, 0.298f, -0.424f }; + float X[] = { -0.037f, -0.599f, 0.959f, -0.499f, 0.296f, 0.034f }; + int incX = -1; + float x_expected[] = { -0.037f, -0.599f, 0.875872f, -1.03683f, -0.198184f, -0.207572f }; + cblas_ctbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctbsv(case 1285) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctbsv(case 1285) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 121; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { 0.474, 0.715, 0.061, 0.532, 0.004, -0.318, 0.37, -0.692, -0.166, 0.039, -0.946, 0.857, -0.922, -0.491, 0.012, -0.217, -0.674, -0.429 }; + double X[] = { -0.123, 0.122, 0.981, 0.321, 0.942, 0.98 }; + int incX = -1; + double x_expected[] = { 0.0490338308139, -0.158433417494, 0.261604043488, 1.28058846321, 1.77633350191, -1.07039599422 }; + cblas_ztbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztbsv(case 1286) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztbsv(case 1286) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 121; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { 0.474, 0.715, 0.061, 0.532, 0.004, -0.318, 0.37, -0.692, -0.166, 0.039, -0.946, 0.857, -0.922, -0.491, 0.012, -0.217, -0.674, -0.429 }; + double X[] = { -0.123, 0.122, 0.981, 0.321, 0.942, 0.98 }; + int incX = -1; + double x_expected[] = { -0.123, 0.122, 0.96534, 0.346049, 1.067212328, 0.445330131 }; + cblas_ztbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztbsv(case 1287) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztbsv(case 1287) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 122; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { 0.474, 0.715, 0.061, 0.532, 0.004, -0.318, 0.37, -0.692, -0.166, 0.039, -0.946, 0.857, -0.922, -0.491, 0.012, -0.217, -0.674, -0.429 }; + double X[] = { -0.123, 0.122, 0.981, 0.321, 0.942, 0.98 }; + int incX = -1; + double x_expected[] = { 72.7437666278, 10.4206532927, -4.34946941374, -14.8012581742, 2.01859491883, -1.53922125931 }; + cblas_ztbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztbsv(case 1288) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztbsv(case 1288) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 122; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { 0.474, 0.715, 0.061, 0.532, 0.004, -0.318, 0.37, -0.692, -0.166, 0.039, -0.946, 0.857, -0.922, -0.491, 0.012, -0.217, -0.674, -0.429 }; + double X[] = { -0.123, 0.122, 0.981, 0.321, 0.942, 0.98 }; + int incX = -1; + double x_expected[] = { -0.464775024, 0.662224708, -0.0457, 0.610264, 0.942, 0.98 }; + cblas_ztbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztbsv(case 1289) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztbsv(case 1289) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 121; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { 0.474, 0.715, 0.061, 0.532, 0.004, -0.318, 0.37, -0.692, -0.166, 0.039, -0.946, 0.857, -0.922, -0.491, 0.012, -0.217, -0.674, -0.429 }; + double X[] = { -0.123, 0.122, 0.981, 0.321, 0.942, 0.98 }; + int incX = -1; + double x_expected[] = { -0.591747295323, -0.534096923761, -4.60251824353, 1.70172936273, -4.94687072873, -3.32536493524 }; + cblas_ztbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztbsv(case 1290) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztbsv(case 1290) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 121; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { 0.474, 0.715, 0.061, 0.532, 0.004, -0.318, 0.37, -0.692, -0.166, 0.039, -0.946, 0.857, -0.922, -0.491, 0.012, -0.217, -0.674, -0.429 }; + double X[] = { -0.123, 0.122, 0.981, 0.321, 0.942, 0.98 }; + int incX = -1; + double x_expected[] = { -0.123, 0.122, 0.807692, 0.373091, 0.384974988, 1.400879194 }; + cblas_ztbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztbsv(case 1291) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztbsv(case 1291) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 122; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { 0.474, 0.715, 0.061, 0.532, 0.004, -0.318, 0.37, -0.692, -0.166, 0.039, -0.946, 0.857, -0.922, -0.491, 0.012, -0.217, -0.674, -0.429 }; + double X[] = { -0.123, 0.122, 0.981, 0.321, 0.942, 0.98 }; + int incX = -1; + double x_expected[] = { -0.129998778267, -0.116630230861, 0.993340886904, 0.530739563688, 1.55891621291, -0.284019181928 }; + cblas_ztbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztbsv(case 1292) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztbsv(case 1292) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 122; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { 0.474, 0.715, 0.061, 0.532, 0.004, -0.318, 0.37, -0.692, -0.166, 0.039, -0.946, 0.857, -0.922, -0.491, 0.012, -0.217, -0.674, -0.429 }; + double X[] = { -0.123, 0.122, 0.981, 0.321, 0.942, 0.98 }; + int incX = -1; + double x_expected[] = { 0.107496032, 0.025821594, 1.444898, -0.239924, 0.942, 0.98 }; + cblas_ztbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztbsv(case 1293) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztbsv(case 1293) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 121; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { -0.872, -0.841, 0.108, -0.744, 0.231, -0.513, -0.973, 0.087, 0.348, 0.196, 0.447, 0.307, 0.632, -0.949, 0.322, 0.277, 0.282, 0.831 }; + double X[] = { -0.373, 0.566, 0.92, 0.627, 0.293, -0.434 }; + int incX = -1; + double x_expected[] = { -0.825842176606, 0.212941473892, -0.548817434511, -0.703261551538, 0.0746069436827, 0.425751789407 }; + cblas_ztbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztbsv(case 1294) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztbsv(case 1294) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 121; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { -0.872, -0.841, 0.108, -0.744, 0.231, -0.513, -0.973, 0.087, 0.348, 0.196, 0.447, 0.307, 0.632, -0.949, 0.322, 0.277, 0.282, 0.831 }; + double X[] = { -0.373, 0.566, 0.92, 0.627, 0.293, -0.434 }; + int incX = -1; + double x_expected[] = { -0.619710352, 0.018225936, 1.211252, 0.891864, 0.293, -0.434 }; + cblas_ztbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztbsv(case 1295) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztbsv(case 1295) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 122; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { -0.872, -0.841, 0.108, -0.744, 0.231, -0.513, -0.973, 0.087, 0.348, 0.196, 0.447, 0.307, 0.632, -0.949, 0.322, 0.277, 0.282, 0.831 }; + double X[] = { -0.373, 0.566, 0.92, 0.627, 0.293, -0.434 }; + int incX = -1; + double x_expected[] = { 0.203289119964, 1.58288482537, -1.7720160159, 0.479463518178, -0.511241930019, -1.79333888299 }; + cblas_ztbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztbsv(case 1296) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztbsv(case 1296) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 122; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { -0.872, -0.841, 0.108, -0.744, 0.231, -0.513, -0.973, 0.087, 0.348, 0.196, 0.447, 0.307, 0.632, -0.949, 0.322, 0.277, 0.282, 0.831 }; + double X[] = { -0.373, 0.566, 0.92, 0.627, 0.293, -0.434 }; + int incX = -1; + double x_expected[] = { -0.373, 0.566, 0.618602, -0.084689, 0.887531803, -0.570220771 }; + cblas_ztbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztbsv(case 1297) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztbsv(case 1297) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 121; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { -0.872, -0.841, 0.108, -0.744, 0.231, -0.513, -0.973, 0.087, 0.348, 0.196, 0.447, 0.307, 0.632, -0.949, 0.322, 0.277, 0.282, 0.831 }; + double X[] = { -0.373, 0.566, 0.92, 0.627, 0.293, -0.434 }; + int incX = -1; + double x_expected[] = { 1.72799012007, 13.4612400765, 4.46126528205, -0.0212528722047, 0.627282377919, 0.302760084926 }; + cblas_ztbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztbsv(case 1298) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztbsv(case 1298) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 121; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { -0.872, -0.841, 0.108, -0.744, 0.231, -0.513, -0.973, 0.087, 0.348, 0.196, 0.447, 0.307, 0.632, -0.949, 0.322, 0.277, 0.282, 0.831 }; + double X[] = { -0.373, 0.566, 0.92, 0.627, 0.293, -0.434 }; + int incX = -1; + double x_expected[] = { -1.280839615, 1.560525655, 1.167331, 0.179227, 0.293, -0.434 }; + cblas_ztbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztbsv(case 1299) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztbsv(case 1299) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 122; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { -0.872, -0.841, 0.108, -0.744, 0.231, -0.513, -0.973, 0.087, 0.348, 0.196, 0.447, 0.307, 0.632, -0.949, 0.322, 0.277, 0.282, 0.831 }; + double X[] = { -0.373, 0.566, 0.92, 0.627, 0.293, -0.434 }; + int incX = -1; + double x_expected[] = { -0.594503951847, 0.00287302167266, -1.08185265666, -0.859860374254, 0.0331027077244, 1.28233265933 }; + cblas_ztbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztbsv(case 1300) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztbsv(case 1300) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 122; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { -0.872, -0.841, 0.108, -0.744, 0.231, -0.513, -0.973, 0.087, 0.348, 0.196, 0.447, 0.307, 0.632, -0.949, 0.322, 0.277, 0.282, 0.831 }; + double X[] = { -0.373, 0.566, 0.92, 0.627, 0.293, -0.434 }; + int incX = -1; + double x_expected[] = { -0.373, 0.566, 1.16074, 0.50314, -0.20669608, 0.37525144 }; + cblas_ztbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztbsv(case 1301) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztbsv(case 1301) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 113; + int uplo = 121; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { 0.404, 0.667, 0.861, 0.22, 0.298, -0.858, -0.682, -0.969, 0.327, -0.86, 0.125, 0.606, -0.143, -0.865, -0.036, 0.23, -0.776, 0.079 }; + double X[] = { 0.028, -0.804, 0.582, -0.078, -0.126, 0.459 }; + int incX = -1; + double x_expected[] = { 0.0654496252357, 0.224007771015, -0.752486084395, -0.554870892947, -0.587163401057, 0.166737652215 }; + cblas_ztbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztbsv(case 1302) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztbsv(case 1302) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 113; + int uplo = 121; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { 0.404, 0.667, 0.861, 0.22, 0.298, -0.858, -0.682, -0.969, 0.327, -0.86, 0.125, 0.606, -0.143, -0.865, -0.036, 0.23, -0.776, 0.079 }; + double X[] = { 0.028, -0.804, 0.582, -0.078, -0.126, 0.459 }; + int incX = -1; + double x_expected[] = { -0.595558802, -1.147174647, 0.589506, -0.500919, -0.126, 0.459 }; + cblas_ztbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztbsv(case 1303) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztbsv(case 1303) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 113; + int uplo = 122; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { 0.404, 0.667, 0.861, 0.22, 0.298, -0.858, -0.682, -0.969, 0.327, -0.86, 0.125, 0.606, -0.143, -0.865, -0.036, 0.23, -0.776, 0.079 }; + double X[] = { 0.028, -0.804, 0.582, -0.078, -0.126, 0.459 }; + int incX = -1; + double x_expected[] = { 3.39346077201, 0.652889512141, -2.33602680355, -2.7859245153, -5.04672104102, -0.334110541026 }; + cblas_ztbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztbsv(case 1304) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztbsv(case 1304) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 113; + int uplo = 122; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { 0.404, 0.667, 0.861, 0.22, 0.298, -0.858, -0.682, -0.969, 0.327, -0.86, 0.125, 0.606, -0.143, -0.865, -0.036, 0.23, -0.776, 0.079 }; + double X[] = { 0.028, -0.804, 0.582, -0.078, -0.126, 0.459 }; + int incX = -1; + double x_expected[] = { 0.028, -0.804, -0.109456, -0.217192, -0.41110804, 0.41693792 }; + cblas_ztbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztbsv(case 1305) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztbsv(case 1305) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 113; + int uplo = 121; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { 0.404, 0.667, 0.861, 0.22, 0.298, -0.858, -0.682, -0.969, 0.327, -0.86, 0.125, 0.606, -0.143, -0.865, -0.036, 0.23, -0.776, 0.079 }; + double X[] = { 0.028, -0.804, 0.582, -0.078, -0.126, 0.459 }; + int incX = -1; + double x_expected[] = { 7.16970224467, -0.772071373678, 0.833386981173, -0.673826630129, -0.26524050899, 0.465327628365 }; + cblas_ztbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztbsv(case 1306) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztbsv(case 1306) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 113; + int uplo = 121; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { 0.404, 0.667, 0.861, 0.22, 0.298, -0.858, -0.682, -0.969, 0.327, -0.86, 0.125, 0.606, -0.143, -0.865, -0.036, 0.23, -0.776, 0.079 }; + double X[] = { 0.028, -0.804, 0.582, -0.078, -0.126, 0.459 }; + int incX = -1; + double x_expected[] = { 0.471459157, -1.566755859, 0.940839, 0.357132, -0.126, 0.459 }; + cblas_ztbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztbsv(case 1307) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztbsv(case 1307) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 113; + int uplo = 122; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { 0.404, 0.667, 0.861, 0.22, 0.298, -0.858, -0.682, -0.969, 0.327, -0.86, 0.125, 0.606, -0.143, -0.865, -0.036, 0.23, -0.776, 0.079 }; + double X[] = { 0.028, -0.804, 0.582, -0.078, -0.126, 0.459 }; + int incX = -1; + double x_expected[] = { -0.909961830373, 0.118063054039, -0.0169425582229, -1.00055409731, -1.37205489923, 0.994032418785 }; + cblas_ztbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztbsv(case 1308) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztbsv(case 1308) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 113; + int uplo = 122; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { 0.404, 0.667, 0.861, 0.22, 0.298, -0.858, -0.682, -0.969, 0.327, -0.86, 0.125, 0.606, -0.143, -0.865, -0.036, 0.23, -0.776, 0.079 }; + double X[] = { 0.028, -0.804, 0.582, -0.078, -0.126, 0.459 }; + int incX = -1; + double x_expected[] = { 0.028, -0.804, -0.118596, 0.160828, -0.059271004, 0.294435972 }; + cblas_ztbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztbsv(case 1309) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztbsv(case 1309) imag"); + }; + }; + }; + + +} diff --git a/gsl-2.5/cblas/test_tpmv.c b/gsl-2.5/cblas/test_tpmv.c new file mode 100644 index 00000000..9b3f1b74 --- /dev/null +++ b/gsl-2.5/cblas/test_tpmv.c @@ -0,0 +1,1659 @@ +#include +#include +#include +#include + +#include "tests.h" + +void +test_tpmv (void) { +const double flteps = 1e-4, dbleps = 1e-6; + { + int order = 101; + int trans = 111; + int uplo = 121; + int diag = 131; + int N = 2; + float A[] = { -0.587f, 0.14f, 0.841f }; + float X[] = { -0.213f, 0.885f }; + int incX = -1; + float x_expected[] = { -0.179133f, -0.549315f }; + cblas_stpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "stpmv(case 974)"); + } + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 121; + int diag = 132; + int N = 2; + float A[] = { -0.587f, 0.14f, 0.841f }; + float X[] = { -0.213f, 0.885f }; + int incX = -1; + float x_expected[] = { -0.213f, 0.85518f }; + cblas_stpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "stpmv(case 975)"); + } + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 122; + int diag = 131; + int N = 2; + float A[] = { -0.587f, 0.14f, 0.841f }; + float X[] = { -0.213f, 0.885f }; + int incX = -1; + float x_expected[] = { -0.055233f, -0.519495f }; + cblas_stpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "stpmv(case 976)"); + } + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 122; + int diag = 132; + int N = 2; + float A[] = { -0.587f, 0.14f, 0.841f }; + float X[] = { -0.213f, 0.885f }; + int incX = -1; + float x_expected[] = { -0.0891f, 0.885f }; + cblas_stpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "stpmv(case 977)"); + } + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 121; + int diag = 131; + int N = 2; + float A[] = { -0.587f, 0.14f, 0.841f }; + float X[] = { -0.213f, 0.885f }; + int incX = -1; + float x_expected[] = { -0.179133f, -0.549315f }; + cblas_stpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "stpmv(case 978)"); + } + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 121; + int diag = 132; + int N = 2; + float A[] = { -0.587f, 0.14f, 0.841f }; + float X[] = { -0.213f, 0.885f }; + int incX = -1; + float x_expected[] = { -0.213f, 0.85518f }; + cblas_stpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "stpmv(case 979)"); + } + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 122; + int diag = 131; + int N = 2; + float A[] = { -0.587f, 0.14f, 0.841f }; + float X[] = { -0.213f, 0.885f }; + int incX = -1; + float x_expected[] = { -0.055233f, -0.519495f }; + cblas_stpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "stpmv(case 980)"); + } + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 122; + int diag = 132; + int N = 2; + float A[] = { -0.587f, 0.14f, 0.841f }; + float X[] = { -0.213f, 0.885f }; + int incX = -1; + float x_expected[] = { -0.0891f, 0.885f }; + cblas_stpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "stpmv(case 981)"); + } + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 121; + int diag = 131; + int N = 2; + float A[] = { -0.765f, 0.968f, -0.956f }; + float X[] = { 0.243f, -0.274f }; + int incX = -1; + float x_expected[] = { -0.49754f, 0.20961f }; + cblas_stpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "stpmv(case 982)"); + } + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 121; + int diag = 132; + int N = 2; + float A[] = { -0.765f, 0.968f, -0.956f }; + float X[] = { 0.243f, -0.274f }; + int incX = -1; + float x_expected[] = { -0.022232f, -0.274f }; + cblas_stpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "stpmv(case 983)"); + } + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 122; + int diag = 131; + int N = 2; + float A[] = { -0.765f, 0.968f, -0.956f }; + float X[] = { 0.243f, -0.274f }; + int incX = -1; + float x_expected[] = { -0.232308f, 0.444834f }; + cblas_stpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "stpmv(case 984)"); + } + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 122; + int diag = 132; + int N = 2; + float A[] = { -0.765f, 0.968f, -0.956f }; + float X[] = { 0.243f, -0.274f }; + int incX = -1; + float x_expected[] = { 0.243f, -0.038776f }; + cblas_stpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "stpmv(case 985)"); + } + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 121; + int diag = 131; + int N = 2; + float A[] = { -0.765f, 0.968f, -0.956f }; + float X[] = { 0.243f, -0.274f }; + int incX = -1; + float x_expected[] = { -0.49754f, 0.20961f }; + cblas_stpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "stpmv(case 986)"); + } + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 121; + int diag = 132; + int N = 2; + float A[] = { -0.765f, 0.968f, -0.956f }; + float X[] = { 0.243f, -0.274f }; + int incX = -1; + float x_expected[] = { -0.022232f, -0.274f }; + cblas_stpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "stpmv(case 987)"); + } + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 122; + int diag = 131; + int N = 2; + float A[] = { -0.765f, 0.968f, -0.956f }; + float X[] = { 0.243f, -0.274f }; + int incX = -1; + float x_expected[] = { -0.232308f, 0.444834f }; + cblas_stpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "stpmv(case 988)"); + } + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 122; + int diag = 132; + int N = 2; + float A[] = { -0.765f, 0.968f, -0.956f }; + float X[] = { 0.243f, -0.274f }; + int incX = -1; + float x_expected[] = { 0.243f, -0.038776f }; + cblas_stpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "stpmv(case 989)"); + } + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 121; + int diag = 131; + int N = 2; + double A[] = { 0.393, -0.221, 0.356 }; + double X[] = { -0.062, -0.221 }; + int incX = -1; + double x_expected[] = { -0.022072, -0.073151 }; + cblas_dtpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtpmv(case 990)"); + } + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 121; + int diag = 132; + int N = 2; + double A[] = { 0.393, -0.221, 0.356 }; + double X[] = { -0.062, -0.221 }; + int incX = -1; + double x_expected[] = { -0.062, -0.207298 }; + cblas_dtpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtpmv(case 991)"); + } + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 122; + int diag = 131; + int N = 2; + double A[] = { 0.393, -0.221, 0.356 }; + double X[] = { -0.062, -0.221 }; + int incX = -1; + double x_expected[] = { 0.026769, -0.086853 }; + cblas_dtpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtpmv(case 992)"); + } + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 122; + int diag = 132; + int N = 2; + double A[] = { 0.393, -0.221, 0.356 }; + double X[] = { -0.062, -0.221 }; + int incX = -1; + double x_expected[] = { -0.013159, -0.221 }; + cblas_dtpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtpmv(case 993)"); + } + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 121; + int diag = 131; + int N = 2; + double A[] = { 0.393, -0.221, 0.356 }; + double X[] = { -0.062, -0.221 }; + int incX = -1; + double x_expected[] = { -0.022072, -0.073151 }; + cblas_dtpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtpmv(case 994)"); + } + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 121; + int diag = 132; + int N = 2; + double A[] = { 0.393, -0.221, 0.356 }; + double X[] = { -0.062, -0.221 }; + int incX = -1; + double x_expected[] = { -0.062, -0.207298 }; + cblas_dtpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtpmv(case 995)"); + } + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 122; + int diag = 131; + int N = 2; + double A[] = { 0.393, -0.221, 0.356 }; + double X[] = { -0.062, -0.221 }; + int incX = -1; + double x_expected[] = { 0.026769, -0.086853 }; + cblas_dtpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtpmv(case 996)"); + } + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 122; + int diag = 132; + int N = 2; + double A[] = { 0.393, -0.221, 0.356 }; + double X[] = { -0.062, -0.221 }; + int incX = -1; + double x_expected[] = { -0.013159, -0.221 }; + cblas_dtpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtpmv(case 997)"); + } + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 121; + int diag = 131; + int N = 2; + double A[] = { 0.694, 0.501, 0.019 }; + double X[] = { -0.928, 0.365 }; + int incX = -1; + double x_expected[] = { 0.165233, 0.25331 }; + cblas_dtpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtpmv(case 998)"); + } + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 121; + int diag = 132; + int N = 2; + double A[] = { 0.694, 0.501, 0.019 }; + double X[] = { -0.928, 0.365 }; + int incX = -1; + double x_expected[] = { -0.745135, 0.365 }; + cblas_dtpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtpmv(case 999)"); + } + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 122; + int diag = 131; + int N = 2; + double A[] = { 0.694, 0.501, 0.019 }; + double X[] = { -0.928, 0.365 }; + int incX = -1; + double x_expected[] = { -0.017632, -0.211618 }; + cblas_dtpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtpmv(case 1000)"); + } + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 122; + int diag = 132; + int N = 2; + double A[] = { 0.694, 0.501, 0.019 }; + double X[] = { -0.928, 0.365 }; + int incX = -1; + double x_expected[] = { -0.928, -0.099928 }; + cblas_dtpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtpmv(case 1001)"); + } + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 121; + int diag = 131; + int N = 2; + double A[] = { 0.694, 0.501, 0.019 }; + double X[] = { -0.928, 0.365 }; + int incX = -1; + double x_expected[] = { 0.165233, 0.25331 }; + cblas_dtpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtpmv(case 1002)"); + } + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 121; + int diag = 132; + int N = 2; + double A[] = { 0.694, 0.501, 0.019 }; + double X[] = { -0.928, 0.365 }; + int incX = -1; + double x_expected[] = { -0.745135, 0.365 }; + cblas_dtpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtpmv(case 1003)"); + } + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 122; + int diag = 131; + int N = 2; + double A[] = { 0.694, 0.501, 0.019 }; + double X[] = { -0.928, 0.365 }; + int incX = -1; + double x_expected[] = { -0.017632, -0.211618 }; + cblas_dtpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtpmv(case 1004)"); + } + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 122; + int diag = 132; + int N = 2; + double A[] = { 0.694, 0.501, 0.019 }; + double X[] = { -0.928, 0.365 }; + int incX = -1; + double x_expected[] = { -0.928, -0.099928 }; + cblas_dtpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtpmv(case 1005)"); + } + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 121; + int diag = 131; + int N = 2; + float A[] = { 0.362f, -0.849f, -0.612f, -0.718f, 0.503f, -0.923f }; + float X[] = { 0.904f, 0.461f, -0.367f, 0.153f }; + int incX = -1; + float x_expected[] = { 0.880215f, -0.602509f, -0.225207f, -0.564235f }; + cblas_ctpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctpmv(case 1006) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctpmv(case 1006) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 121; + int diag = 132; + int N = 2; + float A[] = { 0.362f, -0.849f, -0.612f, -0.718f, 0.503f, -0.923f }; + float X[] = { 0.904f, 0.461f, -0.367f, 0.153f }; + int incX = -1; + float x_expected[] = { 0.904f, 0.461f, -0.58925f, -0.778204f }; + cblas_ctpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctpmv(case 1007) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctpmv(case 1007) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 122; + int diag = 131; + int N = 2; + float A[] = { 0.362f, -0.849f, -0.612f, -0.718f, 0.503f, -0.923f }; + float X[] = { 0.904f, 0.461f, -0.367f, 0.153f }; + int incX = -1; + float x_expected[] = { 1.21467f, -0.432639f, -0.002957f, 0.366969f }; + cblas_ctpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctpmv(case 1008) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctpmv(case 1008) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 122; + int diag = 132; + int N = 2; + float A[] = { 0.362f, -0.849f, -0.612f, -0.718f, 0.503f, -0.923f }; + float X[] = { 0.904f, 0.461f, -0.367f, 0.153f }; + int incX = -1; + float x_expected[] = { 1.23846f, 0.63087f, -0.367f, 0.153f }; + cblas_ctpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctpmv(case 1009) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctpmv(case 1009) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 121; + int diag = 131; + int N = 2; + float A[] = { 0.362f, -0.849f, -0.612f, -0.718f, 0.503f, -0.923f }; + float X[] = { 0.904f, 0.461f, -0.367f, 0.153f }; + int incX = -1; + float x_expected[] = { 0.880215f, -0.602509f, -0.225207f, -0.564235f }; + cblas_ctpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctpmv(case 1010) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctpmv(case 1010) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 121; + int diag = 132; + int N = 2; + float A[] = { 0.362f, -0.849f, -0.612f, -0.718f, 0.503f, -0.923f }; + float X[] = { 0.904f, 0.461f, -0.367f, 0.153f }; + int incX = -1; + float x_expected[] = { 0.904f, 0.461f, -0.58925f, -0.778204f }; + cblas_ctpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctpmv(case 1011) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctpmv(case 1011) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 122; + int diag = 131; + int N = 2; + float A[] = { 0.362f, -0.849f, -0.612f, -0.718f, 0.503f, -0.923f }; + float X[] = { 0.904f, 0.461f, -0.367f, 0.153f }; + int incX = -1; + float x_expected[] = { 1.21467f, -0.432639f, -0.002957f, 0.366969f }; + cblas_ctpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctpmv(case 1012) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctpmv(case 1012) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 122; + int diag = 132; + int N = 2; + float A[] = { 0.362f, -0.849f, -0.612f, -0.718f, 0.503f, -0.923f }; + float X[] = { 0.904f, 0.461f, -0.367f, 0.153f }; + int incX = -1; + float x_expected[] = { 1.23846f, 0.63087f, -0.367f, 0.153f }; + cblas_ctpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctpmv(case 1013) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctpmv(case 1013) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 121; + int diag = 131; + int N = 2; + float A[] = { -0.876f, -0.697f, -0.519f, -0.223f, 0.526f, -0.077f }; + float X[] = { 0.338f, -0.807f, 0.444f, -0.748f }; + int incX = -1; + float x_expected[] = { -0.281591f, -0.161308f, -0.9103f, 0.34578f }; + cblas_ctpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctpmv(case 1014) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctpmv(case 1014) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 121; + int diag = 132; + int N = 2; + float A[] = { -0.876f, -0.697f, -0.519f, -0.223f, 0.526f, -0.077f }; + float X[] = { 0.338f, -0.807f, 0.444f, -0.748f }; + int incX = -1; + float x_expected[] = { -0.05924f, -0.5178f, 0.444f, -0.748f }; + cblas_ctpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctpmv(case 1015) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctpmv(case 1015) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 122; + int diag = 131; + int N = 2; + float A[] = { -0.876f, -0.697f, -0.519f, -0.223f, 0.526f, -0.077f }; + float X[] = { 0.338f, -0.807f, 0.444f, -0.748f }; + int incX = -1; + float x_expected[] = { 0.115649f, -0.450508f, -1.26568f, 0.689239f }; + cblas_ctpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctpmv(case 1016) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctpmv(case 1016) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 122; + int diag = 132; + int N = 2; + float A[] = { -0.876f, -0.697f, -0.519f, -0.223f, 0.526f, -0.077f }; + float X[] = { 0.338f, -0.807f, 0.444f, -0.748f }; + int incX = -1; + float x_expected[] = { 0.338f, -0.807f, 0.088617f, -0.404541f }; + cblas_ctpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctpmv(case 1017) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctpmv(case 1017) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 121; + int diag = 131; + int N = 2; + float A[] = { -0.876f, -0.697f, -0.519f, -0.223f, 0.526f, -0.077f }; + float X[] = { 0.338f, -0.807f, 0.444f, -0.748f }; + int incX = -1; + float x_expected[] = { -0.281591f, -0.161308f, -0.9103f, 0.34578f }; + cblas_ctpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctpmv(case 1018) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctpmv(case 1018) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 121; + int diag = 132; + int N = 2; + float A[] = { -0.876f, -0.697f, -0.519f, -0.223f, 0.526f, -0.077f }; + float X[] = { 0.338f, -0.807f, 0.444f, -0.748f }; + int incX = -1; + float x_expected[] = { -0.05924f, -0.5178f, 0.444f, -0.748f }; + cblas_ctpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctpmv(case 1019) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctpmv(case 1019) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 122; + int diag = 131; + int N = 2; + float A[] = { -0.876f, -0.697f, -0.519f, -0.223f, 0.526f, -0.077f }; + float X[] = { 0.338f, -0.807f, 0.444f, -0.748f }; + int incX = -1; + float x_expected[] = { 0.115649f, -0.450508f, -1.26568f, 0.689239f }; + cblas_ctpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctpmv(case 1020) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctpmv(case 1020) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 122; + int diag = 132; + int N = 2; + float A[] = { -0.876f, -0.697f, -0.519f, -0.223f, 0.526f, -0.077f }; + float X[] = { 0.338f, -0.807f, 0.444f, -0.748f }; + int incX = -1; + float x_expected[] = { 0.338f, -0.807f, 0.088617f, -0.404541f }; + cblas_ctpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctpmv(case 1021) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctpmv(case 1021) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 113; + int uplo = 121; + int diag = 131; + int N = 2; + float A[] = { 0.869f, -0.091f, -0.859f, 0.008f, -0.921f, -0.321f }; + float X[] = { -0.122f, -0.364f, 0.602f, -0.96f }; + int incX = -1; + float x_expected[] = { -0.295592f, 1.11591f, 0.610498f, -0.779458f }; + cblas_ctpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctpmv(case 1022) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctpmv(case 1022) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 113; + int uplo = 121; + int diag = 132; + int N = 2; + float A[] = { 0.869f, -0.091f, -0.859f, 0.008f, -0.921f, -0.321f }; + float X[] = { -0.122f, -0.364f, 0.602f, -0.96f }; + int incX = -1; + float x_expected[] = { -0.646798f, 0.455824f, 0.602f, -0.96f }; + cblas_ctpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctpmv(case 1023) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctpmv(case 1023) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 113; + int uplo = 122; + int diag = 131; + int N = 2; + float A[] = { 0.869f, -0.091f, -0.859f, 0.008f, -0.921f, -0.321f }; + float X[] = { -0.122f, -0.364f, 0.602f, -0.96f }; + int incX = -1; + float x_expected[] = { 0.229206f, 0.296082f, 0.712384f, -0.465806f }; + cblas_ctpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctpmv(case 1024) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctpmv(case 1024) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 113; + int uplo = 122; + int diag = 132; + int N = 2; + float A[] = { 0.869f, -0.091f, -0.859f, 0.008f, -0.921f, -0.321f }; + float X[] = { -0.122f, -0.364f, 0.602f, -0.96f }; + int incX = -1; + float x_expected[] = { -0.122f, -0.364f, 0.703886f, -0.646348f }; + cblas_ctpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctpmv(case 1025) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctpmv(case 1025) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 113; + int uplo = 121; + int diag = 131; + int N = 2; + float A[] = { 0.869f, -0.091f, -0.859f, 0.008f, -0.921f, -0.321f }; + float X[] = { -0.122f, -0.364f, 0.602f, -0.96f }; + int incX = -1; + float x_expected[] = { -0.295592f, 1.11591f, 0.610498f, -0.779458f }; + cblas_ctpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctpmv(case 1026) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctpmv(case 1026) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 113; + int uplo = 121; + int diag = 132; + int N = 2; + float A[] = { 0.869f, -0.091f, -0.859f, 0.008f, -0.921f, -0.321f }; + float X[] = { -0.122f, -0.364f, 0.602f, -0.96f }; + int incX = -1; + float x_expected[] = { -0.646798f, 0.455824f, 0.602f, -0.96f }; + cblas_ctpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctpmv(case 1027) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctpmv(case 1027) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 113; + int uplo = 122; + int diag = 131; + int N = 2; + float A[] = { 0.869f, -0.091f, -0.859f, 0.008f, -0.921f, -0.321f }; + float X[] = { -0.122f, -0.364f, 0.602f, -0.96f }; + int incX = -1; + float x_expected[] = { 0.229206f, 0.296082f, 0.712384f, -0.465806f }; + cblas_ctpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctpmv(case 1028) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctpmv(case 1028) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 113; + int uplo = 122; + int diag = 132; + int N = 2; + float A[] = { 0.869f, -0.091f, -0.859f, 0.008f, -0.921f, -0.321f }; + float X[] = { -0.122f, -0.364f, 0.602f, -0.96f }; + int incX = -1; + float x_expected[] = { -0.122f, -0.364f, 0.703886f, -0.646348f }; + cblas_ctpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctpmv(case 1029) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctpmv(case 1029) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 121; + int diag = 131; + int N = 2; + double A[] = { 0.254, 0.263, -0.271, -0.595, -0.182, -0.672 }; + double X[] = { -0.042, -0.705, -0.255, -0.854 }; + int incX = -1; + double x_expected[] = { -0.466116, 0.156534, -0.248261, -0.067936 }; + cblas_ztpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztpmv(case 1030) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztpmv(case 1030) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 121; + int diag = 132; + int N = 2; + double A[] = { 0.254, 0.263, -0.271, -0.595, -0.182, -0.672 }; + double X[] = { -0.042, -0.705, -0.255, -0.854 }; + int incX = -1; + double x_expected[] = { -0.042, -0.705, -0.663093, -0.637955 }; + cblas_ztpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztpmv(case 1031) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztpmv(case 1031) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 122; + int diag = 131; + int N = 2; + double A[] = { 0.254, 0.263, -0.271, -0.595, -0.182, -0.672 }; + double X[] = { -0.042, -0.705, -0.255, -0.854 }; + int incX = -1; + double x_expected[] = { -0.905141, 0.539693, 0.159832, -0.283981 }; + cblas_ztpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztpmv(case 1032) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztpmv(case 1032) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 122; + int diag = 132; + int N = 2; + double A[] = { 0.254, 0.263, -0.271, -0.595, -0.182, -0.672 }; + double X[] = { -0.042, -0.705, -0.255, -0.854 }; + int incX = -1; + double x_expected[] = { -0.481025, -0.321841, -0.255, -0.854 }; + cblas_ztpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztpmv(case 1033) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztpmv(case 1033) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 121; + int diag = 131; + int N = 2; + double A[] = { 0.254, 0.263, -0.271, -0.595, -0.182, -0.672 }; + double X[] = { -0.042, -0.705, -0.255, -0.854 }; + int incX = -1; + double x_expected[] = { -0.466116, 0.156534, -0.248261, -0.067936 }; + cblas_ztpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztpmv(case 1034) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztpmv(case 1034) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 121; + int diag = 132; + int N = 2; + double A[] = { 0.254, 0.263, -0.271, -0.595, -0.182, -0.672 }; + double X[] = { -0.042, -0.705, -0.255, -0.854 }; + int incX = -1; + double x_expected[] = { -0.042, -0.705, -0.663093, -0.637955 }; + cblas_ztpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztpmv(case 1035) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztpmv(case 1035) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 122; + int diag = 131; + int N = 2; + double A[] = { 0.254, 0.263, -0.271, -0.595, -0.182, -0.672 }; + double X[] = { -0.042, -0.705, -0.255, -0.854 }; + int incX = -1; + double x_expected[] = { -0.905141, 0.539693, 0.159832, -0.283981 }; + cblas_ztpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztpmv(case 1036) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztpmv(case 1036) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 122; + int diag = 132; + int N = 2; + double A[] = { 0.254, 0.263, -0.271, -0.595, -0.182, -0.672 }; + double X[] = { -0.042, -0.705, -0.255, -0.854 }; + int incX = -1; + double x_expected[] = { -0.481025, -0.321841, -0.255, -0.854 }; + cblas_ztpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztpmv(case 1037) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztpmv(case 1037) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 121; + int diag = 131; + int N = 2; + double A[] = { 0.421, -0.407, -0.595, -0.387, 0.884, -0.498 }; + double X[] = { -0.008, 0.904, -0.689, -0.679 }; + int incX = -1; + double x_expected[] = { 0.590302, 1.473768, -0.566422, -0.005436 }; + cblas_ztpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztpmv(case 1038) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztpmv(case 1038) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 121; + int diag = 132; + int N = 2; + double A[] = { 0.421, -0.407, -0.595, -0.387, 0.884, -0.498 }; + double X[] = { -0.008, 0.904, -0.689, -0.679 }; + int incX = -1; + double x_expected[] = { 0.139182, 1.574648, -0.689, -0.679 }; + cblas_ztpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztpmv(case 1039) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztpmv(case 1039) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 122; + int diag = 131; + int N = 2; + double A[] = { 0.421, -0.407, -0.595, -0.387, 0.884, -0.498 }; + double X[] = { -0.008, 0.904, -0.689, -0.679 }; + int incX = -1; + double x_expected[] = { 0.44312, 0.80312, -0.211814, -0.54022 }; + cblas_ztpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztpmv(case 1040) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztpmv(case 1040) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 122; + int diag = 132; + int N = 2; + double A[] = { 0.421, -0.407, -0.595, -0.387, 0.884, -0.498 }; + double X[] = { -0.008, 0.904, -0.689, -0.679 }; + int incX = -1; + double x_expected[] = { -0.008, 0.904, -0.334392, -1.213784 }; + cblas_ztpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztpmv(case 1041) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztpmv(case 1041) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 121; + int diag = 131; + int N = 2; + double A[] = { 0.421, -0.407, -0.595, -0.387, 0.884, -0.498 }; + double X[] = { -0.008, 0.904, -0.689, -0.679 }; + int incX = -1; + double x_expected[] = { 0.590302, 1.473768, -0.566422, -0.005436 }; + cblas_ztpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztpmv(case 1042) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztpmv(case 1042) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 121; + int diag = 132; + int N = 2; + double A[] = { 0.421, -0.407, -0.595, -0.387, 0.884, -0.498 }; + double X[] = { -0.008, 0.904, -0.689, -0.679 }; + int incX = -1; + double x_expected[] = { 0.139182, 1.574648, -0.689, -0.679 }; + cblas_ztpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztpmv(case 1043) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztpmv(case 1043) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 122; + int diag = 131; + int N = 2; + double A[] = { 0.421, -0.407, -0.595, -0.387, 0.884, -0.498 }; + double X[] = { -0.008, 0.904, -0.689, -0.679 }; + int incX = -1; + double x_expected[] = { 0.44312, 0.80312, -0.211814, -0.54022 }; + cblas_ztpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztpmv(case 1044) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztpmv(case 1044) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 122; + int diag = 132; + int N = 2; + double A[] = { 0.421, -0.407, -0.595, -0.387, 0.884, -0.498 }; + double X[] = { -0.008, 0.904, -0.689, -0.679 }; + int incX = -1; + double x_expected[] = { -0.008, 0.904, -0.334392, -1.213784 }; + cblas_ztpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztpmv(case 1045) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztpmv(case 1045) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 113; + int uplo = 121; + int diag = 131; + int N = 2; + double A[] = { -0.743, -0.078, 0.77, 0.505, 0.157, -0.986 }; + double X[] = { -0.641, 0.565, -0.406, -0.948 }; + int incX = -1; + double x_expected[] = { -1.449087, -1.068251, 0.375602, 0.672696 }; + cblas_ztpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztpmv(case 1046) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztpmv(case 1046) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 113; + int uplo = 121; + int diag = 132; + int N = 2; + double A[] = { -0.743, -0.078, 0.77, 0.505, 0.157, -0.986 }; + double X[] = { -0.641, 0.565, -0.406, -0.948 }; + int incX = -1; + double x_expected[] = { -1.43236, 0.04007, -0.406, -0.948 }; + cblas_ztpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztpmv(case 1047) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztpmv(case 1047) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 113; + int uplo = 122; + int diag = 131; + int N = 2; + double A[] = { -0.743, -0.078, 0.77, 0.505, 0.157, -0.986 }; + double X[] = { -0.641, 0.565, -0.406, -0.948 }; + int incX = -1; + double x_expected[] = { -0.657727, -0.543321, 0.167357, 1.431451 }; + cblas_ztpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztpmv(case 1048) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztpmv(case 1048) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 113; + int uplo = 122; + int diag = 132; + int N = 2; + double A[] = { -0.743, -0.078, 0.77, 0.505, 0.157, -0.986 }; + double X[] = { -0.641, 0.565, -0.406, -0.948 }; + int incX = -1; + double x_expected[] = { -0.641, 0.565, -0.614245, -0.189245 }; + cblas_ztpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztpmv(case 1049) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztpmv(case 1049) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 113; + int uplo = 121; + int diag = 131; + int N = 2; + double A[] = { -0.743, -0.078, 0.77, 0.505, 0.157, -0.986 }; + double X[] = { -0.641, 0.565, -0.406, -0.948 }; + int incX = -1; + double x_expected[] = { -1.449087, -1.068251, 0.375602, 0.672696 }; + cblas_ztpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztpmv(case 1050) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztpmv(case 1050) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 113; + int uplo = 121; + int diag = 132; + int N = 2; + double A[] = { -0.743, -0.078, 0.77, 0.505, 0.157, -0.986 }; + double X[] = { -0.641, 0.565, -0.406, -0.948 }; + int incX = -1; + double x_expected[] = { -1.43236, 0.04007, -0.406, -0.948 }; + cblas_ztpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztpmv(case 1051) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztpmv(case 1051) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 113; + int uplo = 122; + int diag = 131; + int N = 2; + double A[] = { -0.743, -0.078, 0.77, 0.505, 0.157, -0.986 }; + double X[] = { -0.641, 0.565, -0.406, -0.948 }; + int incX = -1; + double x_expected[] = { -0.657727, -0.543321, 0.167357, 1.431451 }; + cblas_ztpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztpmv(case 1052) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztpmv(case 1052) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 113; + int uplo = 122; + int diag = 132; + int N = 2; + double A[] = { -0.743, -0.078, 0.77, 0.505, 0.157, -0.986 }; + double X[] = { -0.641, 0.565, -0.406, -0.948 }; + int incX = -1; + double x_expected[] = { -0.641, 0.565, -0.614245, -0.189245 }; + cblas_ztpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztpmv(case 1053) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztpmv(case 1053) imag"); + }; + }; + }; + + +} diff --git a/gsl-2.5/cblas/test_tpsv.c b/gsl-2.5/cblas/test_tpsv.c new file mode 100644 index 00000000..1fbb895c --- /dev/null +++ b/gsl-2.5/cblas/test_tpsv.c @@ -0,0 +1,1659 @@ +#include +#include +#include +#include + +#include "tests.h" + +void +test_tpsv (void) { +const double flteps = 1e-4, dbleps = 1e-6; + { + int order = 101; + int trans = 111; + int uplo = 121; + int diag = 131; + int N = 2; + float A[] = { -0.381f, 0.53f, 0.451f }; + float X[] = { 0.144f, 0.032f }; + int incX = -1; + float x_expected[] = { 0.31929f, 0.360168f }; + cblas_stpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "stpsv(case 1310)"); + } + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 121; + int diag = 132; + int N = 2; + float A[] = { -0.381f, 0.53f, 0.451f }; + float X[] = { 0.144f, 0.032f }; + int incX = -1; + float x_expected[] = { 0.144f, -0.04432f }; + cblas_stpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "stpsv(case 1311)"); + } + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 122; + int diag = 131; + int N = 2; + float A[] = { -0.381f, 0.53f, 0.451f }; + float X[] = { 0.144f, 0.032f }; + int incX = -1; + float x_expected[] = { 0.417992f, -0.0839895f }; + cblas_stpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "stpsv(case 1312)"); + } + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 122; + int diag = 132; + int N = 2; + float A[] = { -0.381f, 0.53f, 0.451f }; + float X[] = { 0.144f, 0.032f }; + int incX = -1; + float x_expected[] = { 0.12704f, 0.032f }; + cblas_stpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "stpsv(case 1313)"); + } + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 121; + int diag = 131; + int N = 2; + float A[] = { -0.381f, 0.53f, 0.451f }; + float X[] = { 0.144f, 0.032f }; + int incX = -1; + float x_expected[] = { 0.31929f, 0.360168f }; + cblas_stpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "stpsv(case 1314)"); + } + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 121; + int diag = 132; + int N = 2; + float A[] = { -0.381f, 0.53f, 0.451f }; + float X[] = { 0.144f, 0.032f }; + int incX = -1; + float x_expected[] = { 0.144f, -0.04432f }; + cblas_stpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "stpsv(case 1315)"); + } + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 122; + int diag = 131; + int N = 2; + float A[] = { -0.381f, 0.53f, 0.451f }; + float X[] = { 0.144f, 0.032f }; + int incX = -1; + float x_expected[] = { 0.417992f, -0.0839895f }; + cblas_stpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "stpsv(case 1316)"); + } + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 122; + int diag = 132; + int N = 2; + float A[] = { -0.381f, 0.53f, 0.451f }; + float X[] = { 0.144f, 0.032f }; + int incX = -1; + float x_expected[] = { 0.12704f, 0.032f }; + cblas_stpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "stpsv(case 1317)"); + } + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 121; + int diag = 131; + int N = 2; + float A[] = { -0.381f, 0.53f, 0.451f }; + float X[] = { 0.144f, 0.032f }; + int incX = -1; + float x_expected[] = { 0.417992f, -0.0839895f }; + cblas_stpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "stpsv(case 1318)"); + } + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 121; + int diag = 132; + int N = 2; + float A[] = { -0.381f, 0.53f, 0.451f }; + float X[] = { 0.144f, 0.032f }; + int incX = -1; + float x_expected[] = { 0.12704f, 0.032f }; + cblas_stpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "stpsv(case 1319)"); + } + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 122; + int diag = 131; + int N = 2; + float A[] = { -0.381f, 0.53f, 0.451f }; + float X[] = { 0.144f, 0.032f }; + int incX = -1; + float x_expected[] = { 0.31929f, 0.360168f }; + cblas_stpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "stpsv(case 1320)"); + } + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 122; + int diag = 132; + int N = 2; + float A[] = { -0.381f, 0.53f, 0.451f }; + float X[] = { 0.144f, 0.032f }; + int incX = -1; + float x_expected[] = { 0.144f, -0.04432f }; + cblas_stpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "stpsv(case 1321)"); + } + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 121; + int diag = 131; + int N = 2; + float A[] = { -0.381f, 0.53f, 0.451f }; + float X[] = { 0.144f, 0.032f }; + int incX = -1; + float x_expected[] = { 0.417992f, -0.0839895f }; + cblas_stpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "stpsv(case 1322)"); + } + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 121; + int diag = 132; + int N = 2; + float A[] = { -0.381f, 0.53f, 0.451f }; + float X[] = { 0.144f, 0.032f }; + int incX = -1; + float x_expected[] = { 0.12704f, 0.032f }; + cblas_stpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "stpsv(case 1323)"); + } + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 122; + int diag = 131; + int N = 2; + float A[] = { -0.381f, 0.53f, 0.451f }; + float X[] = { 0.144f, 0.032f }; + int incX = -1; + float x_expected[] = { 0.31929f, 0.360168f }; + cblas_stpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "stpsv(case 1324)"); + } + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 122; + int diag = 132; + int N = 2; + float A[] = { -0.381f, 0.53f, 0.451f }; + float X[] = { 0.144f, 0.032f }; + int incX = -1; + float x_expected[] = { 0.144f, -0.04432f }; + cblas_stpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "stpsv(case 1325)"); + } + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 121; + int diag = 131; + int N = 2; + double A[] = { 0.355, -0.698, -0.42 }; + double X[] = { -0.702, -0.661 }; + int incX = -1; + double x_expected[] = { 1.67142857143, 1.42438631791 }; + cblas_dtpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtpsv(case 1326)"); + } + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 121; + int diag = 132; + int N = 2; + double A[] = { 0.355, -0.698, -0.42 }; + double X[] = { -0.702, -0.661 }; + int incX = -1; + double x_expected[] = { -0.702, -1.150996 }; + cblas_dtpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtpsv(case 1327)"); + } + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 122; + int diag = 131; + int N = 2; + double A[] = { 0.355, -0.698, -0.42 }; + double X[] = { -0.702, -0.661 }; + int incX = -1; + double x_expected[] = { 4.76584842388, -1.86197183099 }; + cblas_dtpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtpsv(case 1328)"); + } + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 122; + int diag = 132; + int N = 2; + double A[] = { 0.355, -0.698, -0.42 }; + double X[] = { -0.702, -0.661 }; + int incX = -1; + double x_expected[] = { -1.163378, -0.661 }; + cblas_dtpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtpsv(case 1329)"); + } + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 121; + int diag = 131; + int N = 2; + double A[] = { 0.355, -0.698, -0.42 }; + double X[] = { -0.702, -0.661 }; + int incX = -1; + double x_expected[] = { 1.67142857143, 1.42438631791 }; + cblas_dtpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtpsv(case 1330)"); + } + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 121; + int diag = 132; + int N = 2; + double A[] = { 0.355, -0.698, -0.42 }; + double X[] = { -0.702, -0.661 }; + int incX = -1; + double x_expected[] = { -0.702, -1.150996 }; + cblas_dtpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtpsv(case 1331)"); + } + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 122; + int diag = 131; + int N = 2; + double A[] = { 0.355, -0.698, -0.42 }; + double X[] = { -0.702, -0.661 }; + int incX = -1; + double x_expected[] = { 4.76584842388, -1.86197183099 }; + cblas_dtpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtpsv(case 1332)"); + } + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 122; + int diag = 132; + int N = 2; + double A[] = { 0.355, -0.698, -0.42 }; + double X[] = { -0.702, -0.661 }; + int incX = -1; + double x_expected[] = { -1.163378, -0.661 }; + cblas_dtpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtpsv(case 1333)"); + } + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 121; + int diag = 131; + int N = 2; + double A[] = { 0.355, -0.698, -0.42 }; + double X[] = { -0.702, -0.661 }; + int incX = -1; + double x_expected[] = { 4.76584842388, -1.86197183099 }; + cblas_dtpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtpsv(case 1334)"); + } + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 121; + int diag = 132; + int N = 2; + double A[] = { 0.355, -0.698, -0.42 }; + double X[] = { -0.702, -0.661 }; + int incX = -1; + double x_expected[] = { -1.163378, -0.661 }; + cblas_dtpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtpsv(case 1335)"); + } + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 122; + int diag = 131; + int N = 2; + double A[] = { 0.355, -0.698, -0.42 }; + double X[] = { -0.702, -0.661 }; + int incX = -1; + double x_expected[] = { 1.67142857143, 1.42438631791 }; + cblas_dtpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtpsv(case 1336)"); + } + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 122; + int diag = 132; + int N = 2; + double A[] = { 0.355, -0.698, -0.42 }; + double X[] = { -0.702, -0.661 }; + int incX = -1; + double x_expected[] = { -0.702, -1.150996 }; + cblas_dtpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtpsv(case 1337)"); + } + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 121; + int diag = 131; + int N = 2; + double A[] = { 0.355, -0.698, -0.42 }; + double X[] = { -0.702, -0.661 }; + int incX = -1; + double x_expected[] = { 4.76584842388, -1.86197183099 }; + cblas_dtpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtpsv(case 1338)"); + } + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 121; + int diag = 132; + int N = 2; + double A[] = { 0.355, -0.698, -0.42 }; + double X[] = { -0.702, -0.661 }; + int incX = -1; + double x_expected[] = { -1.163378, -0.661 }; + cblas_dtpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtpsv(case 1339)"); + } + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 122; + int diag = 131; + int N = 2; + double A[] = { 0.355, -0.698, -0.42 }; + double X[] = { -0.702, -0.661 }; + int incX = -1; + double x_expected[] = { 1.67142857143, 1.42438631791 }; + cblas_dtpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtpsv(case 1340)"); + } + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 122; + int diag = 132; + int N = 2; + double A[] = { 0.355, -0.698, -0.42 }; + double X[] = { -0.702, -0.661 }; + int incX = -1; + double x_expected[] = { -0.702, -1.150996 }; + cblas_dtpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtpsv(case 1341)"); + } + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 121; + int diag = 131; + int N = 2; + float A[] = { -0.019f, -0.38f, 0.588f, 0.814f, 0.173f, -0.937f }; + float X[] = { -0.133f, 0.998f, -0.072f, 0.642f }; + int incX = -1; + float x_expected[] = { -1.05533f, 0.0529057f, -3.93625f, 1.36003f }; + cblas_ctpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctpsv(case 1342) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctpsv(case 1342) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 121; + int diag = 132; + int N = 2; + float A[] = { -0.019f, -0.38f, 0.588f, 0.814f, 0.173f, -0.937f }; + float X[] = { -0.133f, 0.998f, -0.072f, 0.642f }; + int incX = -1; + float x_expected[] = { -0.133f, 0.998f, 0.818576f, 0.163438f }; + cblas_ctpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctpsv(case 1343) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctpsv(case 1343) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 122; + int diag = 131; + int N = 2; + float A[] = { -0.019f, -0.38f, 0.588f, 0.814f, 0.173f, -0.937f }; + float X[] = { -0.133f, 0.998f, -0.072f, 0.642f }; + int incX = -1; + float x_expected[] = { -2.48362f, 1.13085f, -1.67581f, -0.273264f }; + cblas_ctpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctpsv(case 1344) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctpsv(case 1344) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 122; + int diag = 132; + int N = 2; + float A[] = { -0.019f, -0.38f, 0.588f, 0.814f, 0.173f, -0.937f }; + float X[] = { -0.133f, 0.998f, -0.072f, 0.642f }; + int incX = -1; + float x_expected[] = { 0.431924f, 0.679112f, -0.072f, 0.642f }; + cblas_ctpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctpsv(case 1345) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctpsv(case 1345) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 121; + int diag = 131; + int N = 2; + float A[] = { -0.019f, -0.38f, 0.588f, 0.814f, 0.173f, -0.937f }; + float X[] = { -0.133f, 0.998f, -0.072f, 0.642f }; + int incX = -1; + float x_expected[] = { -1.05533f, 0.0529057f, -3.93625f, 1.36003f }; + cblas_ctpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctpsv(case 1346) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctpsv(case 1346) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 121; + int diag = 132; + int N = 2; + float A[] = { -0.019f, -0.38f, 0.588f, 0.814f, 0.173f, -0.937f }; + float X[] = { -0.133f, 0.998f, -0.072f, 0.642f }; + int incX = -1; + float x_expected[] = { -0.133f, 0.998f, 0.818576f, 0.163438f }; + cblas_ctpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctpsv(case 1347) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctpsv(case 1347) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 122; + int diag = 131; + int N = 2; + float A[] = { -0.019f, -0.38f, 0.588f, 0.814f, 0.173f, -0.937f }; + float X[] = { -0.133f, 0.998f, -0.072f, 0.642f }; + int incX = -1; + float x_expected[] = { -2.48362f, 1.13085f, -1.67581f, -0.273264f }; + cblas_ctpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctpsv(case 1348) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctpsv(case 1348) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 122; + int diag = 132; + int N = 2; + float A[] = { -0.019f, -0.38f, 0.588f, 0.814f, 0.173f, -0.937f }; + float X[] = { -0.133f, 0.998f, -0.072f, 0.642f }; + int incX = -1; + float x_expected[] = { 0.431924f, 0.679112f, -0.072f, 0.642f }; + cblas_ctpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctpsv(case 1349) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctpsv(case 1349) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 121; + int diag = 131; + int N = 2; + float A[] = { -0.019f, -0.38f, 0.588f, 0.814f, 0.173f, -0.937f }; + float X[] = { -0.133f, 0.998f, -0.072f, 0.642f }; + int incX = -1; + float x_expected[] = { -2.48362f, 1.13085f, -1.67581f, -0.273264f }; + cblas_ctpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctpsv(case 1350) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctpsv(case 1350) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 121; + int diag = 132; + int N = 2; + float A[] = { -0.019f, -0.38f, 0.588f, 0.814f, 0.173f, -0.937f }; + float X[] = { -0.133f, 0.998f, -0.072f, 0.642f }; + int incX = -1; + float x_expected[] = { 0.431924f, 0.679112f, -0.072f, 0.642f }; + cblas_ctpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctpsv(case 1351) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctpsv(case 1351) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 122; + int diag = 131; + int N = 2; + float A[] = { -0.019f, -0.38f, 0.588f, 0.814f, 0.173f, -0.937f }; + float X[] = { -0.133f, 0.998f, -0.072f, 0.642f }; + int incX = -1; + float x_expected[] = { -1.05533f, 0.0529057f, -3.93625f, 1.36003f }; + cblas_ctpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctpsv(case 1352) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctpsv(case 1352) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 122; + int diag = 132; + int N = 2; + float A[] = { -0.019f, -0.38f, 0.588f, 0.814f, 0.173f, -0.937f }; + float X[] = { -0.133f, 0.998f, -0.072f, 0.642f }; + int incX = -1; + float x_expected[] = { -0.133f, 0.998f, 0.818576f, 0.163438f }; + cblas_ctpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctpsv(case 1353) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctpsv(case 1353) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 121; + int diag = 131; + int N = 2; + float A[] = { -0.019f, -0.38f, 0.588f, 0.814f, 0.173f, -0.937f }; + float X[] = { -0.133f, 0.998f, -0.072f, 0.642f }; + int incX = -1; + float x_expected[] = { -2.48362f, 1.13085f, -1.67581f, -0.273264f }; + cblas_ctpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctpsv(case 1354) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctpsv(case 1354) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 121; + int diag = 132; + int N = 2; + float A[] = { -0.019f, -0.38f, 0.588f, 0.814f, 0.173f, -0.937f }; + float X[] = { -0.133f, 0.998f, -0.072f, 0.642f }; + int incX = -1; + float x_expected[] = { 0.431924f, 0.679112f, -0.072f, 0.642f }; + cblas_ctpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctpsv(case 1355) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctpsv(case 1355) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 122; + int diag = 131; + int N = 2; + float A[] = { -0.019f, -0.38f, 0.588f, 0.814f, 0.173f, -0.937f }; + float X[] = { -0.133f, 0.998f, -0.072f, 0.642f }; + int incX = -1; + float x_expected[] = { -1.05533f, 0.0529057f, -3.93625f, 1.36003f }; + cblas_ctpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctpsv(case 1356) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctpsv(case 1356) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 122; + int diag = 132; + int N = 2; + float A[] = { -0.019f, -0.38f, 0.588f, 0.814f, 0.173f, -0.937f }; + float X[] = { -0.133f, 0.998f, -0.072f, 0.642f }; + int incX = -1; + float x_expected[] = { -0.133f, 0.998f, 0.818576f, 0.163438f }; + cblas_ctpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctpsv(case 1357) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctpsv(case 1357) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 113; + int uplo = 121; + int diag = 131; + int N = 2; + float A[] = { -0.019f, -0.38f, 0.588f, 0.814f, 0.173f, -0.937f }; + float X[] = { -0.133f, 0.998f, -0.072f, 0.642f }; + int incX = -1; + float x_expected[] = { 2.15867f, 1.69498f, 1.69471f, 0.104738f }; + cblas_ctpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctpsv(case 1358) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctpsv(case 1358) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 113; + int uplo = 121; + int diag = 132; + int N = 2; + float A[] = { -0.019f, -0.38f, 0.588f, 0.814f, 0.173f, -0.937f }; + float X[] = { -0.133f, 0.998f, -0.072f, 0.642f }; + int incX = -1; + float x_expected[] = { -0.613252f, 0.561896f, -0.072f, 0.642f }; + cblas_ctpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctpsv(case 1359) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctpsv(case 1359) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 113; + int uplo = 122; + int diag = 131; + int N = 2; + float A[] = { -0.019f, -0.38f, 0.588f, 0.814f, 0.173f, -0.937f }; + float X[] = { -0.133f, 0.998f, -0.072f, 0.642f }; + int incX = -1; + float x_expected[] = { 1.00465f, 0.327432f, 3.44853f, 2.273f }; + cblas_ctpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctpsv(case 1360) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctpsv(case 1360) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 113; + int uplo = 122; + int diag = 132; + int N = 2; + float A[] = { -0.019f, -0.38f, 0.588f, 0.814f, 0.173f, -0.937f }; + float X[] = { -0.133f, 0.998f, -0.072f, 0.642f }; + int incX = -1; + float x_expected[] = { -0.133f, 0.998f, -0.806168f, -0.053086f }; + cblas_ctpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctpsv(case 1361) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctpsv(case 1361) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 113; + int uplo = 121; + int diag = 131; + int N = 2; + float A[] = { -0.019f, -0.38f, 0.588f, 0.814f, 0.173f, -0.937f }; + float X[] = { -0.133f, 0.998f, -0.072f, 0.642f }; + int incX = -1; + float x_expected[] = { 2.15867f, 1.69498f, 1.69471f, 0.104738f }; + cblas_ctpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctpsv(case 1362) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctpsv(case 1362) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 113; + int uplo = 121; + int diag = 132; + int N = 2; + float A[] = { -0.019f, -0.38f, 0.588f, 0.814f, 0.173f, -0.937f }; + float X[] = { -0.133f, 0.998f, -0.072f, 0.642f }; + int incX = -1; + float x_expected[] = { -0.613252f, 0.561896f, -0.072f, 0.642f }; + cblas_ctpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctpsv(case 1363) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctpsv(case 1363) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 113; + int uplo = 122; + int diag = 131; + int N = 2; + float A[] = { -0.019f, -0.38f, 0.588f, 0.814f, 0.173f, -0.937f }; + float X[] = { -0.133f, 0.998f, -0.072f, 0.642f }; + int incX = -1; + float x_expected[] = { 1.00465f, 0.327432f, 3.44853f, 2.273f }; + cblas_ctpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctpsv(case 1364) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctpsv(case 1364) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 113; + int uplo = 122; + int diag = 132; + int N = 2; + float A[] = { -0.019f, -0.38f, 0.588f, 0.814f, 0.173f, -0.937f }; + float X[] = { -0.133f, 0.998f, -0.072f, 0.642f }; + int incX = -1; + float x_expected[] = { -0.133f, 0.998f, -0.806168f, -0.053086f }; + cblas_ctpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctpsv(case 1365) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctpsv(case 1365) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 121; + int diag = 131; + int N = 2; + double A[] = { 0.052, 0.875, 0.751, -0.912, 0.832, -0.153 }; + double X[] = { 0.344, -0.143, -0.668, -0.945 }; + int incX = -1; + double x_expected[] = { 0.430509772467, -0.0927067365535, -0.611144484555, 0.999982608216 }; + cblas_ztpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztpsv(case 1366) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztpsv(case 1366) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 121; + int diag = 132; + int N = 2; + double A[] = { 0.052, 0.875, 0.751, -0.912, 0.832, -0.153 }; + double X[] = { 0.344, -0.143, -0.668, -0.945 }; + int incX = -1; + double x_expected[] = { 0.344, -0.143, -0.795928, -0.523879 }; + cblas_ztpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztpsv(case 1367) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztpsv(case 1367) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 122; + int diag = 131; + int N = 2; + double A[] = { 0.052, 0.875, 0.751, -0.912, 0.832, -0.153 }; + double X[] = { 0.344, -0.143, -0.668, -0.945 }; + int incX = -1; + double x_expected[] = { 1.00136463678, -1.84591534629, -1.12140892769, 0.696784840869 }; + cblas_ztpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztpsv(case 1368) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztpsv(case 1368) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 122; + int diag = 132; + int N = 2; + double A[] = { 0.052, 0.875, 0.751, -0.912, 0.832, -0.153 }; + double X[] = { 0.344, -0.143, -0.668, -0.945 }; + int incX = -1; + double x_expected[] = { 1.707508, -0.042521, -0.668, -0.945 }; + cblas_ztpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztpsv(case 1369) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztpsv(case 1369) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 121; + int diag = 131; + int N = 2; + double A[] = { 0.052, 0.875, 0.751, -0.912, 0.832, -0.153 }; + double X[] = { 0.344, -0.143, -0.668, -0.945 }; + int incX = -1; + double x_expected[] = { 0.430509772467, -0.0927067365535, -0.611144484555, 0.999982608216 }; + cblas_ztpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztpsv(case 1370) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztpsv(case 1370) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 121; + int diag = 132; + int N = 2; + double A[] = { 0.052, 0.875, 0.751, -0.912, 0.832, -0.153 }; + double X[] = { 0.344, -0.143, -0.668, -0.945 }; + int incX = -1; + double x_expected[] = { 0.344, -0.143, -0.795928, -0.523879 }; + cblas_ztpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztpsv(case 1371) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztpsv(case 1371) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 122; + int diag = 131; + int N = 2; + double A[] = { 0.052, 0.875, 0.751, -0.912, 0.832, -0.153 }; + double X[] = { 0.344, -0.143, -0.668, -0.945 }; + int incX = -1; + double x_expected[] = { 1.00136463678, -1.84591534629, -1.12140892769, 0.696784840869 }; + cblas_ztpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztpsv(case 1372) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztpsv(case 1372) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 122; + int diag = 132; + int N = 2; + double A[] = { 0.052, 0.875, 0.751, -0.912, 0.832, -0.153 }; + double X[] = { 0.344, -0.143, -0.668, -0.945 }; + int incX = -1; + double x_expected[] = { 1.707508, -0.042521, -0.668, -0.945 }; + cblas_ztpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztpsv(case 1373) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztpsv(case 1373) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 121; + int diag = 131; + int N = 2; + double A[] = { 0.052, 0.875, 0.751, -0.912, 0.832, -0.153 }; + double X[] = { 0.344, -0.143, -0.668, -0.945 }; + int incX = -1; + double x_expected[] = { 1.00136463678, -1.84591534629, -1.12140892769, 0.696784840869 }; + cblas_ztpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztpsv(case 1374) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztpsv(case 1374) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 121; + int diag = 132; + int N = 2; + double A[] = { 0.052, 0.875, 0.751, -0.912, 0.832, -0.153 }; + double X[] = { 0.344, -0.143, -0.668, -0.945 }; + int incX = -1; + double x_expected[] = { 1.707508, -0.042521, -0.668, -0.945 }; + cblas_ztpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztpsv(case 1375) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztpsv(case 1375) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 122; + int diag = 131; + int N = 2; + double A[] = { 0.052, 0.875, 0.751, -0.912, 0.832, -0.153 }; + double X[] = { 0.344, -0.143, -0.668, -0.945 }; + int incX = -1; + double x_expected[] = { 0.430509772467, -0.0927067365535, -0.611144484555, 0.999982608216 }; + cblas_ztpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztpsv(case 1376) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztpsv(case 1376) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 122; + int diag = 132; + int N = 2; + double A[] = { 0.052, 0.875, 0.751, -0.912, 0.832, -0.153 }; + double X[] = { 0.344, -0.143, -0.668, -0.945 }; + int incX = -1; + double x_expected[] = { 0.344, -0.143, -0.795928, -0.523879 }; + cblas_ztpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztpsv(case 1377) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztpsv(case 1377) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 121; + int diag = 131; + int N = 2; + double A[] = { 0.052, 0.875, 0.751, -0.912, 0.832, -0.153 }; + double X[] = { 0.344, -0.143, -0.668, -0.945 }; + int incX = -1; + double x_expected[] = { 1.00136463678, -1.84591534629, -1.12140892769, 0.696784840869 }; + cblas_ztpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztpsv(case 1378) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztpsv(case 1378) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 121; + int diag = 132; + int N = 2; + double A[] = { 0.052, 0.875, 0.751, -0.912, 0.832, -0.153 }; + double X[] = { 0.344, -0.143, -0.668, -0.945 }; + int incX = -1; + double x_expected[] = { 1.707508, -0.042521, -0.668, -0.945 }; + cblas_ztpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztpsv(case 1379) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztpsv(case 1379) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 122; + int diag = 131; + int N = 2; + double A[] = { 0.052, 0.875, 0.751, -0.912, 0.832, -0.153 }; + double X[] = { 0.344, -0.143, -0.668, -0.945 }; + int incX = -1; + double x_expected[] = { 0.430509772467, -0.0927067365535, -0.611144484555, 0.999982608216 }; + cblas_ztpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztpsv(case 1380) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztpsv(case 1380) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 122; + int diag = 132; + int N = 2; + double A[] = { 0.052, 0.875, 0.751, -0.912, 0.832, -0.153 }; + double X[] = { 0.344, -0.143, -0.668, -0.945 }; + int incX = -1; + double x_expected[] = { 0.344, -0.143, -0.795928, -0.523879 }; + cblas_ztpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztpsv(case 1381) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztpsv(case 1381) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 113; + int uplo = 121; + int diag = 131; + int N = 2; + double A[] = { 0.052, 0.875, 0.751, -0.912, 0.832, -0.153 }; + double X[] = { 0.344, -0.143, -0.668, -0.945 }; + int incX = -1; + double x_expected[] = { -1.47384781823, -0.286556198408, 1.03098932879, -0.824698794397 }; + cblas_ztpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztpsv(case 1382) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztpsv(case 1382) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 113; + int uplo = 121; + int diag = 132; + int N = 2; + double A[] = { 0.052, 0.875, 0.751, -0.912, 0.832, -0.153 }; + double X[] = { 0.344, -0.143, -0.668, -0.945 }; + int incX = -1; + double x_expected[] = { -0.016172, 1.175911, -0.668, -0.945 }; + cblas_ztpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztpsv(case 1383) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztpsv(case 1383) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 113; + int uplo = 122; + int diag = 131; + int N = 2; + double A[] = { 0.052, 0.875, 0.751, -0.912, 0.832, -0.153 }; + double X[] = { 0.344, -0.143, -0.668, -0.945 }; + int incX = -1; + double x_expected[] = { 0.369363905801, -0.239798891331, 1.1759505739, -1.40027235656 }; + cblas_ztpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztpsv(case 1384) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztpsv(case 1384) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 113; + int uplo = 122; + int diag = 132; + int N = 2; + double A[] = { 0.052, 0.875, 0.751, -0.912, 0.832, -0.153 }; + double X[] = { 0.344, -0.143, -0.668, -0.945 }; + int incX = -1; + double x_expected[] = { 0.344, -0.143, -1.05676, -1.151335 }; + cblas_ztpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztpsv(case 1385) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztpsv(case 1385) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 113; + int uplo = 121; + int diag = 131; + int N = 2; + double A[] = { 0.052, 0.875, 0.751, -0.912, 0.832, -0.153 }; + double X[] = { 0.344, -0.143, -0.668, -0.945 }; + int incX = -1; + double x_expected[] = { -1.47384781823, -0.286556198408, 1.03098932879, -0.824698794397 }; + cblas_ztpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztpsv(case 1386) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztpsv(case 1386) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 113; + int uplo = 121; + int diag = 132; + int N = 2; + double A[] = { 0.052, 0.875, 0.751, -0.912, 0.832, -0.153 }; + double X[] = { 0.344, -0.143, -0.668, -0.945 }; + int incX = -1; + double x_expected[] = { -0.016172, 1.175911, -0.668, -0.945 }; + cblas_ztpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztpsv(case 1387) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztpsv(case 1387) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 113; + int uplo = 122; + int diag = 131; + int N = 2; + double A[] = { 0.052, 0.875, 0.751, -0.912, 0.832, -0.153 }; + double X[] = { 0.344, -0.143, -0.668, -0.945 }; + int incX = -1; + double x_expected[] = { 0.369363905801, -0.239798891331, 1.1759505739, -1.40027235656 }; + cblas_ztpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztpsv(case 1388) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztpsv(case 1388) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 113; + int uplo = 122; + int diag = 132; + int N = 2; + double A[] = { 0.052, 0.875, 0.751, -0.912, 0.832, -0.153 }; + double X[] = { 0.344, -0.143, -0.668, -0.945 }; + int incX = -1; + double x_expected[] = { 0.344, -0.143, -1.05676, -1.151335 }; + cblas_ztpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztpsv(case 1389) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztpsv(case 1389) imag"); + }; + }; + }; + + +} diff --git a/gsl-2.5/cblas/test_trmm.c b/gsl-2.5/cblas/test_trmm.c new file mode 100644 index 00000000..26fab2bb --- /dev/null +++ b/gsl-2.5/cblas/test_trmm.c @@ -0,0 +1,3947 @@ +#include +#include +#include +#include + +#include "tests.h" + +void +test_trmm (void) { +const double flteps = 1e-4, dbleps = 1e-6; + { + int order = 101; + int side = 141; + int uplo = 121; + int trans = 111; + int diag = 131; + int M = 2; + int N = 3; + float alpha = -0.3f; + float A[] = { 0.18f, 0.199f, 0.122f, -0.547f }; + int lda = 2; + float B[] = { -0.874f, -0.383f, 0.458f, 0.124f, -0.221f, -0.107f }; + int ldb = 3; + float B_expected[] = { 0.0397932f, 0.0338757f, -0.0183441f, 0.0203484f, -0.0362661f, -0.0175587f }; + cblas_strmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], flteps, "strmm(case 1662)"); + } + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 121; + int trans = 111; + int diag = 132; + int M = 2; + int N = 3; + float alpha = -0.3f; + float A[] = { 0.195f, -0.453f, -0.579f, 0.697f }; + int lda = 2; + float B[] = { 0.736f, 0.131f, 0.533f, 0.692f, -0.672f, -0.435f }; + int ldb = 3; + float B_expected[] = { -0.126757f, -0.130625f, -0.219017f, -0.2076f, 0.2016f, 0.1305f }; + cblas_strmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], flteps, "strmm(case 1663)"); + } + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 122; + int trans = 111; + int diag = 131; + int M = 2; + int N = 3; + float alpha = -0.3f; + float A[] = { -0.53f, 0.787f, 0.889f, -0.379f }; + int lda = 2; + float B[] = { -0.355f, 0.002f, 0.266f, 0.972f, 0.712f, -0.353f }; + int ldb = 3; + float B_expected[] = { -0.056445f, 3.18e-04f, 0.042294f, 0.205195f, 0.080421f, -0.111078f }; + cblas_strmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], flteps, "strmm(case 1664)"); + } + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 122; + int trans = 111; + int diag = 132; + int M = 2; + int N = 3; + float alpha = -0.3f; + float A[] = { 0.198f, -0.673f, 0.792f, 0.781f }; + int lda = 2; + float B[] = { 0.901f, 0.719f, -0.339f, -0.36f, 0.539f, 0.192f }; + int ldb = 3; + float B_expected[] = { -0.2703f, -0.2157f, 0.1017f, -0.106078f, -0.332534f, 0.0229464f }; + cblas_strmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], flteps, "strmm(case 1665)"); + } + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 121; + int trans = 111; + int diag = 131; + int M = 2; + int N = 3; + float alpha = -0.3f; + float A[] = { -0.522f, 0.851f, 0.586f, 0.196f }; + int lda = 2; + float B[] = { 0.335f, 0.617f, 0.118f, -0.143f, 0.677f, 0.456f }; + int ldb = 2; + float B_expected[] = { -0.0560076f, -0.0362796f, 0.0436182f, 0.0084084f, 0.0258534f, -0.0268128f }; + cblas_strmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], flteps, "strmm(case 1666)"); + } + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 121; + int trans = 111; + int diag = 132; + int M = 2; + int N = 3; + float alpha = -0.3f; + float A[] = { -0.006f, -0.613f, -0.966f, -0.758f }; + int lda = 2; + float B[] = { 0.64f, -0.723f, -0.765f, 0.801f, 0.376f, 0.91f }; + int ldb = 2; + float B_expected[] = { -0.401525f, 0.2169f, 0.46163f, -0.2403f, 0.150918f, -0.273f }; + cblas_strmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], flteps, "strmm(case 1667)"); + } + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 122; + int trans = 111; + int diag = 131; + int M = 2; + int N = 3; + float alpha = -0.3f; + float A[] = { 0.738f, 0.913f, -0.227f, 0.787f }; + int lda = 2; + float B[] = { 0.194f, 0.988f, -0.274f, -0.652f, -0.281f, -0.359f }; + int ldb = 2; + float B_expected[] = { -0.0429516f, -0.286403f, 0.0606636f, 0.228986f, 0.0622134f, 0.161726f }; + cblas_strmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], flteps, "strmm(case 1668)"); + } + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 122; + int trans = 111; + int diag = 132; + int M = 2; + int N = 3; + float alpha = -0.3f; + float A[] = { 0.952f, 0.598f, 0.25f, -0.508f }; + int lda = 2; + float B[] = { 0.036f, 0.745f, -0.606f, 0.215f, 0.943f, -0.933f }; + int ldb = 2; + float B_expected[] = { -0.0108f, -0.229958f, 0.1818f, 0.0442164f, -0.2829f, 0.110726f }; + cblas_strmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], flteps, "strmm(case 1669)"); + } + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 121; + int trans = 111; + int diag = 131; + int M = 2; + int N = 3; + float alpha = -0.3f; + float A[] = { -0.251f, 0.372f, -0.168f, 0.217f, -0.179f, 0.863f, -0.057f, 0.256f, 0.093f }; + int lda = 3; + float B[] = { -0.727f, -0.461f, 0.162f, 0.579f, -0.305f, -0.735f }; + int ldb = 3; + float B_expected[] = { -0.0547431f, 0.0563775f, 0.0781923f, 0.0435987f, -0.0809949f, 0.128653f }; + cblas_strmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], flteps, "strmm(case 1670)"); + } + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 121; + int trans = 111; + int diag = 132; + int M = 2; + int N = 3; + float alpha = -0.3f; + float A[] = { -0.014f, 0.204f, 0.163f, 0.842f, -0.918f, -0.748f, -0.859f, -0.463f, 0.292f }; + int lda = 3; + float B[] = { -0.587f, -0.625f, -0.994f, 0.681f, -0.577f, -0.434f }; + int ldb = 3; + float B_expected[] = { 0.1761f, 0.223424f, 0.186654f, -0.2043f, 0.131423f, -0.0325797f }; + cblas_strmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], flteps, "strmm(case 1671)"); + } + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 122; + int trans = 111; + int diag = 131; + int M = 2; + int N = 3; + float alpha = -0.3f; + float A[] = { -0.682f, -0.71f, 0.475f, -0.59f, -0.748f, 0.548f, 0.245f, 0.761f, -0.4f }; + int lda = 3; + float B[] = { 0.565f, 0.967f, -0.969f, 0.184f, 0.349f, -0.552f }; + int ldb = 3; + float B_expected[] = { 0.357979f, 0.438217f, -0.11628f, 0.139991f, 0.204337f, -0.06624f }; + cblas_strmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], flteps, "strmm(case 1672)"); + } + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 122; + int trans = 111; + int diag = 132; + int M = 2; + int N = 3; + float alpha = -0.3f; + float A[] = { 0.617f, -0.998f, -0.97f, 0.364f, 0.09f, 0.588f, -0.263f, 0.584f, 0.463f }; + int lda = 3; + float B[] = { 0.773f, 0.074f, -0.388f, 0.825f, -0.608f, 0.788f }; + int ldb = 3; + float B_expected[] = { -0.270594f, 0.0457776f, 0.1164f, -0.118933f, 0.0443424f, -0.2364f }; + cblas_strmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], flteps, "strmm(case 1673)"); + } + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 121; + int trans = 111; + int diag = 131; + int M = 2; + int N = 3; + float alpha = -0.3f; + float A[] = { 0.217f, -0.672f, -0.378f, -0.005f, -0.586f, -0.426f, 0.765f, -0.239f, -0.145f }; + int lda = 3; + float B[] = { 0.01f, 0.387f, -0.953f, -0.374f, -0.673f, -0.724f }; + int ldb = 2; + float B_expected[] = { -6.51e-04f, -0.0251937f, -0.167522f, -0.0651687f, -0.0999006f, -0.147126f }; + cblas_strmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], flteps, "strmm(case 1674)"); + } + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 121; + int trans = 111; + int diag = 132; + int M = 2; + int N = 3; + float alpha = -0.3f; + float A[] = { 0.962f, 0.515f, 0.292f, 0.354f, -0.366f, 0.455f, 0.134f, -0.564f, -0.303f }; + int lda = 3; + float B[] = { -0.337f, 0.718f, -0.866f, -0.454f, -0.439f, -0.668f }; + int ldb = 2; + float B_expected[] = { 0.1011f, -0.2154f, 0.295589f, 0.0599484f, -0.0012798f, 0.0947196f }; + cblas_strmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], flteps, "strmm(case 1675)"); + } + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 122; + int trans = 111; + int diag = 131; + int M = 2; + int N = 3; + float alpha = -0.3f; + float A[] = { -0.228f, -0.097f, 0.205f, 0.875f, -0.162f, 0.542f, -0.839f, -0.935f, 0.2f }; + int lda = 3; + float B[] = { -0.125f, -0.676f, 0.181f, 0.741f, 0.216f, 0.766f }; + int ldb = 2; + float B_expected[] = { -0.0165669f, -0.0717843f, -0.026325f, -0.088539f, -0.01296f, -0.04596f }; + cblas_strmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], flteps, "strmm(case 1676)"); + } + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 122; + int trans = 111; + int diag = 132; + int M = 2; + int N = 3; + float alpha = -0.3f; + float A[] = { -0.854f, -0.502f, 0.591f, -0.934f, -0.729f, 0.063f, 0.352f, 0.126f, -0.905f }; + int lda = 3; + float B[] = { -0.626f, -0.694f, -0.889f, -0.251f, -0.42f, -0.353f }; + int ldb = 2; + float B_expected[] = { 0.128383f, 0.232986f, 0.274638f, 0.0819717f, 0.126f, 0.1059f }; + cblas_strmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], flteps, "strmm(case 1677)"); + } + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 121; + int trans = 112; + int diag = 131; + int M = 2; + int N = 3; + float alpha = 0.1f; + float A[] = { -0.755f, 0.12f, 0.525f, 0.917f }; + int lda = 2; + float B[] = { -0.927f, -0.813f, 0.624f, -0.366f, -0.864f, -0.046f }; + int ldb = 3; + float B_expected[] = { 0.0699885f, 0.0613815f, -0.047112f, -0.0446862f, -0.0889848f, 0.0032698f }; + cblas_strmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], flteps, "strmm(case 1678)"); + } + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 121; + int trans = 112; + int diag = 132; + int M = 2; + int N = 3; + float alpha = 0.1f; + float A[] = { -0.444f, 0.515f, 0.081f, -0.69f }; + int lda = 2; + float B[] = { 0.571f, -0.098f, -0.226f, -0.587f, 0.788f, -0.629f }; + int ldb = 3; + float B_expected[] = { 0.0571f, -0.0098f, -0.0226f, -0.0292935f, 0.073753f, -0.074539f }; + cblas_strmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], flteps, "strmm(case 1679)"); + } + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 122; + int trans = 112; + int diag = 131; + int M = 2; + int N = 3; + float alpha = 0.1f; + float A[] = { -0.954f, 0.651f, -0.982f, 0.388f }; + int lda = 2; + float B[] = { -0.927f, -0.281f, -0.918f, -0.527f, -0.652f, -0.393f }; + int ldb = 3; + float B_expected[] = { 0.140187f, 0.0908338f, 0.12617f, -0.0204476f, -0.0252976f, -0.0152484f }; + cblas_strmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], flteps, "strmm(case 1680)"); + } + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 122; + int trans = 112; + int diag = 132; + int M = 2; + int N = 3; + float alpha = 0.1f; + float A[] = { 0.811f, 0.852f, 0.224f, 0.443f }; + int lda = 2; + float B[] = { -0.493f, -0.497f, -0.605f, 0.433f, -0.082f, -0.077f }; + int ldb = 3; + float B_expected[] = { -0.0396008f, -0.0515368f, -0.0622248f, 0.0433f, -0.0082f, -0.0077f }; + cblas_strmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], flteps, "strmm(case 1681)"); + } + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 121; + int trans = 112; + int diag = 131; + int M = 2; + int N = 3; + float alpha = 0.1f; + float A[] = { -0.777f, 0.812f, 0.254f, 0.97f }; + int lda = 2; + float B[] = { -0.509f, 0.171f, 0.986f, -0.644f, -0.97f, 0.814f }; + int ldb = 2; + float B_expected[] = { 0.0395493f, 0.0036584f, -0.0766122f, -0.0374236f, 0.075369f, 0.05432f }; + cblas_strmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], flteps, "strmm(case 1682)"); + } + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 121; + int trans = 112; + int diag = 132; + int M = 2; + int N = 3; + float alpha = 0.1f; + float A[] = { 0.962f, 0.912f, -0.238f, -0.336f }; + int lda = 2; + float B[] = { -0.666f, 0.066f, -0.176f, 0.402f, 0.286f, -0.703f }; + int ldb = 2; + float B_expected[] = { -0.0666f, 0.0224508f, -0.0176f, 0.0443888f, 0.0286f, -0.0771068f }; + cblas_strmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], flteps, "strmm(case 1683)"); + } + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 122; + int trans = 112; + int diag = 131; + int M = 2; + int N = 3; + float alpha = 0.1f; + float A[] = { 0.859f, -0.547f, 0.076f, 0.542f }; + int lda = 2; + float B[] = { 0.402f, 0.945f, -0.242f, -0.062f, 0.714f, 0.468f }; + int ldb = 2; + float B_expected[] = { -0.0171597f, 0.051219f, -0.0173964f, -0.0033604f, 0.035733f, 0.0253656f }; + cblas_strmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], flteps, "strmm(case 1684)"); + } + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 122; + int trans = 112; + int diag = 132; + int M = 2; + int N = 3; + float alpha = 0.1f; + float A[] = { -0.779f, 0.435f, 0.612f, -0.723f }; + int lda = 2; + float B[] = { 0.512f, -0.987f, -0.167f, 0.047f, -0.701f, -0.25f }; + int ldb = 2; + float B_expected[] = { 0.0082655f, -0.0987f, -0.0146555f, 0.0047f, -0.080975f, -0.025f }; + cblas_strmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], flteps, "strmm(case 1685)"); + } + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 121; + int trans = 112; + int diag = 131; + int M = 2; + int N = 3; + float alpha = 0.1f; + float A[] = { -0.757f, 0.396f, -0.927f, -0.558f, -0.289f, -0.66f, 0.83f, 0.363f, -0.13f }; + int lda = 3; + float B[] = { 0.041f, 0.333f, -0.682f, 0.193f, 0.581f, 0.963f }; + int ldb = 3; + float B_expected[] = { 0.0733045f, 0.0353883f, 0.008866f, -0.0808726f, -0.0803489f, -0.012519f }; + cblas_strmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], flteps, "strmm(case 1686)"); + } + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 121; + int trans = 112; + int diag = 132; + int M = 2; + int N = 3; + float alpha = 0.1f; + float A[] = { -0.75f, 0.674f, -0.576f, 0.376f, -0.46f, -0.813f, 0.419f, 0.792f, 0.226f }; + int lda = 3; + float B[] = { 0.511f, -0.544f, 0.938f, -0.126f, -0.873f, 0.118f }; + int ldb = 3; + float B_expected[] = { -0.0395944f, -0.130659f, 0.0938f, -0.078237f, -0.0968934f, 0.0118f }; + cblas_strmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], flteps, "strmm(case 1687)"); + } + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 122; + int trans = 112; + int diag = 131; + int M = 2; + int N = 3; + float alpha = 0.1f; + float A[] = { -0.045f, -0.809f, 0.654f, 0.611f, -0.038f, -0.105f, -0.946f, 0.474f, -0.097f }; + int lda = 3; + float B[] = { -0.625f, -0.123f, -0.48f, -0.088f, -0.757f, 0.974f }; + int ldb = 3; + float B_expected[] = { 0.0028125f, -0.0377201f, 0.0579508f, 3.96e-04f, -0.0025002f, -0.0370048f }; + cblas_strmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], flteps, "strmm(case 1688)"); + } + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 122; + int trans = 112; + int diag = 132; + int M = 2; + int N = 3; + float alpha = 0.1f; + float A[] = { 0.713f, 0.781f, 0.084f, -0.498f, 0.692f, 0.125f, 0.706f, -0.118f, -0.907f }; + int lda = 3; + float B[] = { 0.442f, -0.563f, 0.065f, -0.18f, 0.63f, -0.328f }; + int ldb = 3; + float B_expected[] = { 0.0442f, -0.0783116f, 0.0443486f, -0.018f, 0.071964f, -0.052942f }; + cblas_strmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], flteps, "strmm(case 1689)"); + } + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 121; + int trans = 112; + int diag = 131; + int M = 2; + int N = 3; + float alpha = 0.1f; + float A[] = { -0.442f, 0.566f, 0.064f, 0.962f, -0.669f, 0.416f, 0.761f, -0.359f, 0.863f }; + int lda = 3; + float B[] = { 0.261f, -0.659f, -0.536f, 0.694f, -0.305f, -0.675f }; + int ldb = 2; + float B_expected[] = { -0.0863099f, 0.0445231f, 0.0468079f, -0.0221961f, -0.0263215f, -0.0582525f }; + cblas_strmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], flteps, "strmm(case 1690)"); + } + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 121; + int trans = 112; + int diag = 132; + int M = 2; + int N = 3; + float alpha = 0.1f; + float A[] = { 0.386f, 0.643f, -0.028f, -0.758f, -0.63f, -0.043f, 0.666f, -0.088f, 0.382f }; + int lda = 3; + float B[] = { -0.241f, 0.766f, 0.656f, -0.977f, 0.274f, 0.565f }; + int ldb = 2; + float B_expected[] = { -0.0555764f, 0.188286f, 0.0631888f, -0.102672f, 0.0274f, 0.0565f }; + cblas_strmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], flteps, "strmm(case 1691)"); + } + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 122; + int trans = 112; + int diag = 131; + int M = 2; + int N = 3; + float alpha = 0.1f; + float A[] = { -0.855f, -0.587f, 0.062f, 0.372f, 0.48f, -0.63f, -0.786f, -0.437f, -0.431f }; + int lda = 3; + float B[] = { 0.116f, 0.534f, 0.043f, 0.73f, 0.945f, 0.528f }; + int ldb = 2; + float B_expected[] = { -0.009918f, -0.045657f, -0.0047452f, 0.0036942f, -0.0427193f, -0.065436f }; + cblas_strmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], flteps, "strmm(case 1692)"); + } + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 122; + int trans = 112; + int diag = 132; + int M = 2; + int N = 3; + float alpha = 0.1f; + float A[] = { -0.068f, 0.119f, -0.244f, -0.05f, 0.685f, 0.752f, -0.059f, -0.935f, -0.571f }; + int lda = 3; + float B[] = { -0.753f, -0.319f, 0.164f, 0.979f, 0.885f, -0.822f }; + int ldb = 2; + float B_expected[] = { -0.0753f, -0.0319f, 0.0074393f, 0.0941039f, 0.119206f, -7.956e-04f }; + cblas_strmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], flteps, "strmm(case 1693)"); + } + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 121; + int trans = 111; + int diag = 131; + int M = 2; + int N = 3; + double alpha = -0.3; + double A[] = { 0.174, -0.308, 0.997, -0.484 }; + int lda = 2; + double B[] = { -0.256, -0.178, 0.098, 0.004, 0.97, -0.408 }; + int ldb = 3; + double B_expected[] = { 0.0137328, 0.0989196, -0.0428148, 5.808e-04, 0.140844, -0.0592416 }; + cblas_dtrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], dbleps, "dtrmm(case 1694)"); + } + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 121; + int trans = 111; + int diag = 132; + int M = 2; + int N = 3; + double alpha = -0.3; + double A[] = { 0.722, -0.372, 0.466, -0.831 }; + int lda = 2; + double B[] = { 0.322, -0.183, 0.849, -0.051, -0.343, -0.98 }; + int ldb = 3; + double B_expected[] = { -0.1022916, 0.0166212, -0.364068, 0.0153, 0.1029, 0.294 }; + cblas_dtrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], dbleps, "dtrmm(case 1695)"); + } + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 122; + int trans = 111; + int diag = 131; + int M = 2; + int N = 3; + double alpha = -0.3; + double A[] = { -0.656, -0.066, 0.582, 0.141 }; + int lda = 2; + double B[] = { 0.73, 0.407, 0.721, 0.086, -0.294, 0.941 }; + int ldb = 3; + double B_expected[] = { 0.143664, 0.0800976, 0.1418928, -0.1310958, -0.058626, -0.1656909 }; + cblas_dtrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], dbleps, "dtrmm(case 1696)"); + } + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 122; + int trans = 111; + int diag = 132; + int M = 2; + int N = 3; + double alpha = -0.3; + double A[] = { -0.341, 0.386, -0.578, 0.863 }; + int lda = 2; + double B[] = { -0.306, -0.047, -0.162, -0.784, 0.472, 0.137 }; + int ldb = 3; + double B_expected[] = { 0.0918, 0.0141, 0.0486, 0.1821396, -0.1497498, -0.0691908 }; + cblas_dtrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], dbleps, "dtrmm(case 1697)"); + } + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 121; + int trans = 111; + int diag = 131; + int M = 2; + int N = 3; + double alpha = -0.3; + double A[] = { 0.844, -0.832, 0.179, -0.775 }; + int lda = 2; + double B[] = { -0.415, -0.547, -0.023, 0.42, 0.917, 0.485 }; + int ldb = 2; + double B_expected[] = { 0.1344519, -0.1271775, -0.0167304, 0.09765, -0.2582289, 0.1127625 }; + cblas_dtrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], dbleps, "dtrmm(case 1698)"); + } + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 121; + int trans = 111; + int diag = 132; + int M = 2; + int N = 3; + double alpha = -0.3; + double A[] = { 0.239, 0.34, 0.964, -0.575 }; + int lda = 2; + double B[] = { 0.762, -0.038, -0.8, 0.626, -0.701, 0.639 }; + int ldb = 2; + double B_expected[] = { -0.2176104, 0.0114, 0.0589608, -0.1878, 0.0255012, -0.1917 }; + cblas_dtrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], dbleps, "dtrmm(case 1699)"); + } + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 122; + int trans = 111; + int diag = 131; + int M = 2; + int N = 3; + double alpha = -0.3; + double A[] = { 0.785, -0.0, -0.592, -0.661 }; + int lda = 2; + double B[] = { -0.215, 0.953, 0.527, -0.418, -0.675, 0.283 }; + int ldb = 2; + double B_expected[] = { 0.0506325, 0.1889799, -0.1241085, -0.0828894, 0.1589625, 0.0561189 }; + cblas_dtrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], dbleps, "dtrmm(case 1700)"); + } + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 122; + int trans = 111; + int diag = 132; + int M = 2; + int N = 3; + double alpha = -0.3; + double A[] = { -0.423, -0.807, -0.683, -0.225 }; + int lda = 2; + double B[] = { 0.149, -0.129, 0.149, -0.234, 0.275, 0.658 }; + int ldb = 2; + double B_expected[] = { -0.0447, 0.0747729, -0.0447, 0.1062729, -0.0825, -0.1308225 }; + cblas_dtrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], dbleps, "dtrmm(case 1701)"); + } + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 121; + int trans = 111; + int diag = 131; + int M = 2; + int N = 3; + double alpha = -0.3; + double A[] = { -0.276, 0.434, 0.917, 0.682, -0.32, 0.557, -0.302, 0.989, -0.043 }; + int lda = 3; + double B[] = { -0.943, 0.839, 0.759, 0.752, 0.807, 0.288 }; + int ldb = 3; + double B_expected[] = { -0.0780804, 0.2033226, 0.1290135, 0.0622656, -0.0204384, -0.3380097 }; + cblas_dtrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], dbleps, "dtrmm(case 1702)"); + } + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 121; + int trans = 111; + int diag = 132; + int M = 2; + int N = 3; + double alpha = -0.3; + double A[] = { -0.731, -0.953, -0.666, 0.684, 0.38, 0.419, -0.361, 0.378, -0.423 }; + int lda = 3; + double B[] = { -0.983, 0.479, -0.136, 0.048, 0.745, -0.408 }; + int ldb = 3; + double B_expected[] = { 0.2949, -0.4247397, -0.2158137, -0.0144, -0.2097768, 0.0383439 }; + cblas_dtrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], dbleps, "dtrmm(case 1703)"); + } + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 122; + int trans = 111; + int diag = 131; + int M = 2; + int N = 3; + double alpha = -0.3; + double A[] = { -0.953, -0.983, 0.237, 0.128, -0.378, 0.607, 0.41, 0.418, -0.221 }; + int lda = 3; + double B[] = { -0.561, -0.114, -0.148, 0.488, 0.146, -0.688 }; + int ldb = 3; + double B_expected[] = { -0.1378083, 0.0056316, -0.0098124, 0.2185368, 0.1028316, -0.0456144 }; + cblas_dtrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], dbleps, "dtrmm(case 1704)"); + } + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 122; + int trans = 111; + int diag = 132; + int M = 2; + int N = 3; + double alpha = -0.3; + double A[] = { 0.277, -0.587, 0.885, -0.933, -0.582, 0.528, 0.268, -0.804, 0.62 }; + int lda = 3; + double B[] = { -0.831, -0.319, -0.547, -0.577, 0.295, -0.31 }; + int ldb = 3; + double B_expected[] = { 0.2039907, -0.0362364, 0.1641, 0.2805945, -0.163272, 0.093 }; + cblas_dtrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], dbleps, "dtrmm(case 1705)"); + } + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 121; + int trans = 111; + int diag = 131; + int M = 2; + int N = 3; + double alpha = -0.3; + double A[] = { 0.256, 0.554, 0.342, 0.318, -0.824, -0.119, -0.399, -0.653, -0.83 }; + int lda = 3; + double B[] = { -0.577, 0.861, -0.439, -0.916, 0.452, -0.168 }; + int ldb = 2; + double B_expected[] = { 0.0443136, -0.0661248, -0.053475, -0.3085746, -0.042519, -0.1182147 }; + cblas_dtrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], dbleps, "dtrmm(case 1706)"); + } + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 121; + int trans = 111; + int diag = 132; + int M = 2; + int N = 3; + double alpha = -0.3; + double A[] = { 0.837, -0.03, 0.552, -0.43, 0.841, 0.035, 0.7, 0.637, 0.095 }; + int lda = 3; + double B[] = { -0.82, -0.362, -0.252, -0.062, -0.942, -0.299 }; + int ldb = 2; + double B_expected[] = { 0.246, 0.1086, -0.03018, -0.028098, 0.5029572, 0.1775682 }; + cblas_dtrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], dbleps, "dtrmm(case 1707)"); + } + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 122; + int trans = 111; + int diag = 131; + int M = 2; + int N = 3; + double alpha = -0.3; + double A[] = { -0.074, 0.49, 0.802, -0.454, 0.626, 0.123, -0.959, 0.971, 0.75 }; + int lda = 3; + double B[] = { -0.545, -0.107, 0.096, 0.183, 0.185, -0.218 }; + int ldb = 2; + double B_expected[] = { -0.070722, 0.0231744, -0.0248553, -0.0263232, -0.041625, 0.04905 }; + cblas_dtrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], dbleps, "dtrmm(case 1708)"); + } + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 122; + int trans = 111; + int diag = 132; + int M = 2; + int N = 3; + double alpha = -0.3; + double A[] = { 0.048, 0.148, 0.834, -0.98, -0.009, -0.727, 0.241, 0.276, 0.518 }; + int lda = 3; + double B[] = { -0.664, -0.136, -0.793, -0.742, 0.126, -0.131 }; + int ldb = 2; + double B_expected[] = { 0.202884, 0.106521, 0.2653806, 0.1940289, -0.0378, 0.0393 }; + cblas_dtrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], dbleps, "dtrmm(case 1709)"); + } + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 121; + int trans = 112; + int diag = 131; + int M = 2; + int N = 3; + double alpha = 0.1; + double A[] = { 0.427, 0.495, 0.282, 0.158 }; + int lda = 2; + double B[] = { 0.899, -0.375, 0.376, -0.831, 0.431, -0.387 }; + int ldb = 3; + double B_expected[] = { 0.0383873, -0.0160125, 0.0160552, 0.0313707, -0.0117527, 0.0124974 }; + cblas_dtrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], dbleps, "dtrmm(case 1710)"); + } + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 121; + int trans = 112; + int diag = 132; + int M = 2; + int N = 3; + double alpha = 0.1; + double A[] = { 0.632, -0.174, 0.608, -0.669 }; + int lda = 2; + double B[] = { -0.335, 0.535, -0.978, 0.31, 0.023, -0.853 }; + int ldb = 3; + double B_expected[] = { -0.0335, 0.0535, -0.0978, 0.036829, -0.007009, -0.0682828 }; + cblas_dtrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], dbleps, "dtrmm(case 1711)"); + } + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 122; + int trans = 112; + int diag = 131; + int M = 2; + int N = 3; + double alpha = 0.1; + double A[] = { -0.779, -0.73, 0.343, -0.665 }; + int lda = 2; + double B[] = { -0.976, -0.2, 0.661, -0.975, -0.965, -0.861 }; + int ldb = 3; + double B_expected[] = { 0.0425879, -0.0175195, -0.0810242, 0.0648375, 0.0641725, 0.0572565 }; + cblas_dtrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], dbleps, "dtrmm(case 1712)"); + } + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 122; + int trans = 112; + int diag = 132; + int M = 2; + int N = 3; + double alpha = 0.1; + double A[] = { -0.127, -0.634, -0.384, -0.815 }; + int lda = 2; + double B[] = { -0.348, 0.748, 0.893, 0.91, 0.153, -0.408 }; + int ldb = 3; + double B_expected[] = { -0.069744, 0.0689248, 0.1049672, 0.091, 0.0153, -0.0408 }; + cblas_dtrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], dbleps, "dtrmm(case 1713)"); + } + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 121; + int trans = 112; + int diag = 131; + int M = 2; + int N = 3; + double alpha = 0.1; + double A[] = { -0.603, -0.617, 0.402, -0.918 }; + int lda = 2; + double B[] = { 0.051, -0.096, 0.476, 0.377, 0.931, 0.291 }; + int ldb = 2; + double B_expected[] = { -0.0030753, 0.010863, -0.0287028, -0.0154734, -0.0561393, 0.0107124 }; + cblas_dtrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], dbleps, "dtrmm(case 1714)"); + } + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 121; + int trans = 112; + int diag = 132; + int M = 2; + int N = 3; + double alpha = 0.1; + double A[] = { 0.67, -0.475, 0.032, -0.036 }; + int lda = 2; + double B[] = { -0.19, 0.829, 0.942, 0.885, 0.087, 0.321 }; + int ldb = 2; + double B_expected[] = { -0.019, 0.082292, 0.0942, 0.0915144, 0.0087, 0.0323784 }; + cblas_dtrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], dbleps, "dtrmm(case 1715)"); + } + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 122; + int trans = 112; + int diag = 131; + int M = 2; + int N = 3; + double alpha = 0.1; + double A[] = { -0.64, 0.595, 0.642, -0.921 }; + int lda = 2; + double B[] = { -0.278, -0.83, 0.922, -0.701, -0.598, -0.232 }; + int ldb = 2; + double B_expected[] = { -0.031593, 0.076443, -0.1007175, 0.0645621, 0.024468, 0.0213672 }; + cblas_dtrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], dbleps, "dtrmm(case 1716)"); + } + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 122; + int trans = 112; + int diag = 132; + int M = 2; + int N = 3; + double alpha = 0.1; + double A[] = { 0.842, 0.625, 0.967, 0.341 }; + int lda = 2; + double B[] = { -0.679, -0.846, -0.921, 0.672, 0.292, 0.752 }; + int ldb = 2; + double B_expected[] = { -0.120775, -0.0846, -0.0501, 0.0672, 0.0762, 0.0752 }; + cblas_dtrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], dbleps, "dtrmm(case 1717)"); + } + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 121; + int trans = 112; + int diag = 131; + int M = 2; + int N = 3; + double alpha = 0.1; + double A[] = { -0.612, 0.593, 0.113, -0.658, 0.703, -0.023, -0.384, 0.439, 0.958 }; + int lda = 3; + double B[] = { -0.858, -0.559, 0.499, -0.114, 0.57, 0.847 }; + int ldb = 3; + double B_expected[] = { 0.0249996, -0.0404454, 0.0478042, 0.0503489, 0.0381229, 0.0811426 }; + cblas_dtrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], dbleps, "dtrmm(case 1718)"); + } + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 121; + int trans = 112; + int diag = 132; + int M = 2; + int N = 3; + double alpha = 0.1; + double A[] = { 0.844, 0.205, -0.692, -0.401, -0.823, 0.342, -0.384, 0.344, 0.18 }; + int lda = 3; + double B[] = { 0.823, -0.181, 0.141, 0.932, 0.097, -0.636 }; + int ldb = 3; + double B_expected[] = { 0.0688323, -0.0132778, 0.0141, 0.1391997, -0.0120512, -0.0636 }; + cblas_dtrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], dbleps, "dtrmm(case 1719)"); + } + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 122; + int trans = 112; + int diag = 131; + int M = 2; + int N = 3; + double alpha = 0.1; + double A[] = { 0.065, 0.678, 0.044, -0.472, 0.932, -0.388, 0.432, -0.167, -0.277 }; + int lda = 3; + double B[] = { 0.675, -0.468, -0.564, 0.71, -0.624, 0.023 }; + int ldb = 3; + double B_expected[] = { 0.0043875, -0.0754776, 0.0525984, 0.004615, -0.0916688, 0.0404557 }; + cblas_dtrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], dbleps, "dtrmm(case 1720)"); + } + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 122; + int trans = 112; + int diag = 132; + int M = 2; + int N = 3; + double alpha = 0.1; + double A[] = { 0.649, -0.171, -0.462, 0.593, 0.131, -0.317, -0.254, -0.948, 0.002 }; + int lda = 3; + double B[] = { -0.519, -0.501, -0.024, -0.767, -0.591, -0.738 }; + int ldb = 3; + double B_expected[] = { -0.0519, -0.0808767, 0.0582774, -0.0767, -0.1045831, 0.0017086 }; + cblas_dtrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], dbleps, "dtrmm(case 1721)"); + } + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 121; + int trans = 112; + int diag = 131; + int M = 2; + int N = 3; + double alpha = 0.1; + double A[] = { -0.023, -0.872, -0.313, -0.698, 0.06, -0.838, -0.455, -0.715, -0.257 }; + int lda = 3; + double B[] = { -0.17, -0.184, -0.243, 0.907, -0.423, 0.665 }; + int ldb = 2; + double B_expected[] = { 0.0365989, -0.0931429, 0.0287865, -0.0421055, 0.0108711, -0.0170905 }; + cblas_dtrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], dbleps, "dtrmm(case 1722)"); + } + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 121; + int trans = 112; + int diag = 132; + int M = 2; + int N = 3; + double alpha = 0.1; + double A[] = { 0.792, 0.338, -0.155, 0.009, 0.485, -0.633, -0.08, -0.579, 0.223 }; + int lda = 3; + double B[] = { -0.19, 0.201, 0.685, 0.663, 0.302, -0.506 }; + int ldb = 2; + double B_expected[] = { -0.0207995, 0.0247447, 0.0510142, 0.0955974, 0.0302, -0.0506 }; + cblas_dtrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], dbleps, "dtrmm(case 1723)"); + } + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 122; + int trans = 112; + int diag = 131; + int M = 2; + int N = 3; + double alpha = 0.1; + double A[] = { -0.076, 0.103, -0.021, -0.866, 0.777, 0.723, 0.378, 0.98, -0.32 }; + int lda = 3; + double B[] = { 0.739, -0.996, 0.182, 0.626, 0.291, -0.267 }; + int ldb = 2; + double B_expected[] = { -0.0056164, 0.0075696, 0.0217531, 0.0383814, 0.0022947, 0.0558954 }; + cblas_dtrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], dbleps, "dtrmm(case 1724)"); + } + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 122; + int trans = 112; + int diag = 132; + int M = 2; + int N = 3; + double alpha = 0.1; + double A[] = { 0.469, 0.822, -0.619, 0.953, -0.706, 0.318, 0.559, -0.68, -0.208 }; + int lda = 3; + double B[] = { 0.362, 0.719, -0.661, -0.504, 0.595, -0.771 }; + int ldb = 2; + double B_expected[] = { 0.0362, 0.0719, -0.0363436, 0.0087018, 0.0160724, -0.1376333 }; + cblas_dtrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], dbleps, "dtrmm(case 1725)"); + } + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 121; + int trans = 111; + int diag = 131; + int M = 2; + int N = 3; + float alpha[2] = {-1.0f, 0.0f}; + float A[] = { -0.023f, 0.762f, -0.687f, -0.039f, -0.459f, 0.047f, 0.189f, 0.33f }; + int lda = 2; + float B[] = { 0.827f, -0.561f, 0.641f, -0.229f, -0.884f, -0.533f, -0.624f, -0.138f, 0.073f, 0.924f, -0.501f, -0.164f }; + int ldb = 3; + float B_expected[] = { -0.831767f, -0.762219f, -0.14564f, 0.143926f, -0.764269f, 0.529142f, 0.072396f, 0.232002f, 0.291123f, -0.198726f, 0.040569f, 0.196326f }; + cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1726) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1726) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 121; + int trans = 111; + int diag = 132; + int M = 2; + int N = 3; + float alpha[2] = {-1.0f, 0.0f}; + float A[] = { 0.24f, 0.581f, 0.06f, 0.064f, 0.981f, 0.792f, 0.242f, -0.529f }; + int lda = 2; + float B[] = { -0.649f, -0.774f, -0.43f, -0.447f, -0.266f, 0.285f, 0.787f, 0.274f, 0.449f, -0.912f, 0.435f, 0.601f }; + int ldb = 3; + float B_expected[] = { 0.619316f, 0.707192f, 0.344692f, 0.472984f, 0.278364f, -0.3489f, -0.787f, -0.274f, -0.449f, 0.912f, -0.435f, -0.601f }; + cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1727) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1727) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 122; + int trans = 111; + int diag = 131; + int M = 2; + int N = 3; + float alpha[2] = {-1.0f, 0.0f}; + float A[] = { 0.68f, -0.728f, -0.59f, -0.434f, -0.936f, 0.915f, 0.236f, -0.118f }; + int lda = 2; + float B[] = { 0.461f, 0.48f, 0.224f, 0.215f, -0.419f, -0.525f, 0.113f, -0.582f, 0.468f, 0.269f, 0.943f, -0.587f }; + int ldb = 3; + float B_expected[] = { -0.66292f, 0.009208f, -0.30884f, 0.016872f, 0.66712f, 0.051968f, 0.912704f, 0.178151f, 0.264199f, -0.01198f, -1.02584f, 0.141791f }; + cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1728) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1728) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 122; + int trans = 111; + int diag = 132; + int M = 2; + int N = 3; + float alpha[2] = {-1.0f, 0.0f}; + float A[] = { 0.699f, -0.709f, -0.775f, 0.779f, 0.5f, 0.774f, -0.399f, -0.843f }; + int lda = 2; + float B[] = { 0.538f, 0.556f, -0.186f, -0.678f, -0.413f, -0.612f, -0.216f, -0.519f, -0.344f, -0.578f, -0.938f, -0.848f }; + int ldb = 3; + float B_expected[] = { -0.538f, -0.556f, 0.186f, 0.678f, 0.413f, 0.612f, 0.377344f, -0.175412f, -0.087772f, 1.06096f, 0.670812f, 1.47366f }; + cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1729) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1729) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 121; + int trans = 111; + int diag = 131; + int M = 2; + int N = 3; + float alpha[2] = {-1.0f, 0.0f}; + float A[] = { 0.527f, 0.318f, -0.224f, 0.547f, -0.765f, -0.469f, 0.233f, 0.023f }; + int lda = 2; + float B[] = { 0.54f, -0.418f, -0.892f, -0.118f, -0.296f, 0.019f, 0.786f, -0.145f, 0.136f, 0.472f, 0.731f, 0.333f }; + int ldb = 2; + float B_expected[] = { -1.04454f, -0.460052f, 0.205122f, 0.04801f, 0.831329f, 0.341824f, -0.186473f, 0.015707f, 0.481462f, 0.305592f, -0.162664f, -0.094402f }; + cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1730) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1730) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 121; + int trans = 111; + int diag = 132; + int M = 2; + int N = 3; + float alpha[2] = {-1.0f, 0.0f}; + float A[] = { -0.109f, -0.852f, 0.395f, 0.871f, 0.378f, -0.493f, 0.51f, 0.973f }; + int lda = 2; + float B[] = { -0.867f, -0.758f, 0.687f, -0.596f, -0.912f, -0.561f, -0.389f, 0.21f, -0.561f, 0.132f, 0.689f, 0.653f }; + int ldb = 2; + float B_expected[] = { 0.901142f, 1.32198f, -0.687f, 0.596f, 0.955512f, 0.289843f, 0.389f, -0.21f, -0.021371f, -0.039157f, -0.689f, -0.653f }; + cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1731) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1731) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 122; + int trans = 111; + int diag = 131; + int M = 2; + int N = 3; + float alpha[2] = {-1.0f, 0.0f}; + float A[] = { 0.686f, 0.349f, 0.299f, -0.462f, 0.009f, -0.693f, -0.478f, -0.617f }; + int lda = 2; + float B[] = { -0.409f, 0.986f, -0.854f, 0.346f, 0.444f, -0.659f, 0.027f, 0.007f, 0.842f, -0.473f, 0.825f, 0.866f }; + int ldb = 2; + float B_expected[] = { 0.624688f, -0.533655f, -0.954935f, -0.845302f, -0.534575f, 0.297118f, 0.180289f, 0.422174f, -0.742689f, 0.03062f, -0.173204f, 1.4534f }; + cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1732) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1732) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 122; + int trans = 111; + int diag = 132; + int M = 2; + int N = 3; + float alpha[2] = {-1.0f, 0.0f}; + float A[] = { -0.286f, 0.661f, 0.372f, 0.28f, 0.482f, 0.267f, -0.436f, 0.844f }; + int lda = 2; + float B[] = { 0.0f, -0.513f, 0.91f, 0.109f, 0.587f, -0.183f, 0.112f, 0.362f, -0.256f, -0.518f, -0.933f, 0.066f }; + int ldb = 2; + float B_expected[] = { 0.0f, 0.513f, -1.05364f, 0.081836f, -0.587f, 0.183f, -0.381604f, -0.458284f, 0.256f, 0.518f, 0.883192f, 0.198376f }; + cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1733) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1733) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 121; + int trans = 111; + int diag = 131; + int M = 2; + int N = 3; + float alpha[2] = {-1.0f, 0.0f}; + float A[] = { 0.678f, 0.717f, 0.228f, 0.001f, -0.16f, -0.387f, -0.281f, -0.002f, 0.623f, 0.162f, -0.594f, 0.632f, 0.566f, 0.352f, -0.411f, 0.574f, 0.314f, -0.139f }; + int lda = 3; + float B[] = { -0.823f, -0.042f, 0.171f, -0.928f, 0.66f, 0.965f, 0.472f, 0.006f, -0.083f, 0.937f, -0.814f, 0.9f }; + int ldb = 3; + float B_expected[] = { 0.52788f, 0.618567f, -0.069267f, 0.560841f, -0.941723f, -1.19579f, -0.315714f, -0.342492f, 0.095893f, -0.572145f, 0.746576f, 0.396912f }; + cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1734) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1734) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 121; + int trans = 111; + int diag = 132; + int M = 2; + int N = 3; + float alpha[2] = {-1.0f, 0.0f}; + float A[] = { 0.346f, 0.915f, -0.227f, -0.066f, -0.166f, -0.921f, -0.373f, 0.312f, -0.824f, 0.699f, -0.114f, -0.152f, 0.862f, -0.077f, 0.221f, -0.757f, -0.413f, -0.494f }; + int lda = 3; + float B[] = { -0.02f, -0.247f, -0.62f, 0.651f, -0.07f, -0.491f, 0.042f, 0.936f, 0.272f, -0.582f, 0.012f, -0.534f }; + int ldb = 3; + float B_expected[] = { 0.02f, 0.247f, 0.631762f, -0.708389f, 0.124535f, 0.411552f, -0.042f, -0.936f, -0.324242f, 0.797244f, -0.747612f, 0.703054f }; + cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1735) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1735) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 122; + int trans = 111; + int diag = 131; + int M = 2; + int N = 3; + float alpha[2] = {-1.0f, 0.0f}; + float A[] = { -0.493f, -0.882f, -0.82f, 0.627f, 0.301f, -0.903f, -0.092f, 0.787f, -0.426f, -0.854f, -0.993f, 0.118f, 0.615f, 0.362f, -0.238f, -0.076f, 0.817f, -0.286f }; + int lda = 3; + float B[] = { 0.395f, 0.074f, -0.191f, -0.548f, 0.858f, 0.323f, -0.734f, 0.612f, 0.895f, 0.849f, 0.811f, 0.402f }; + int ldb = 3; + float B_expected[] = { -0.730125f, -0.024468f, 0.566282f, -0.25448f, -0.793364f, -0.018503f, -0.504384f, -1.51274f, -0.18131f, 1.28332f, -0.777559f, -0.096488f }; + cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1736) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1736) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 122; + int trans = 111; + int diag = 132; + int M = 2; + int N = 3; + float alpha[2] = {-1.0f, 0.0f}; + float A[] = { -0.033f, -0.383f, 0.116f, 0.797f, -0.99f, 0.765f, 0.915f, 0.002f, 0.228f, 0.077f, 0.597f, -0.454f, -0.629f, 0.424f, -0.89f, 0.339f, -0.484f, 0.169f }; + int lda = 3; + float B[] = { -0.377f, -0.451f, -0.464f, -0.673f, 0.231f, -0.712f, -0.457f, -0.588f, 0.373f, -0.754f, -0.468f, 0.433f }; + int ldb = 3; + float B_expected[] = { 0.643625f, 0.521931f, 0.428222f, -0.038989f, -0.231f, 0.712f, 0.003417f, 1.74795f, -0.642733f, 1.29802f, 0.468f, -0.433f }; + cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1737) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1737) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 121; + int trans = 111; + int diag = 131; + int M = 2; + int N = 3; + float alpha[2] = {-1.0f, 0.0f}; + float A[] = { 0.946f, -0.007f, 0.677f, -0.923f, 0.651f, -0.685f, 0.591f, 0.135f, 0.171f, 0.979f, -0.029f, -0.008f, -0.049f, 0.174f, 0.578f, 0.388f, 0.187f, -0.479f }; + int lda = 3; + float B[] = { -0.607f, -0.907f, -0.156f, -0.141f, -0.254f, 0.364f, 0.209f, 0.955f, 0.93f, 0.962f, 0.494f, 0.079f }; + int ldb = 2; + float B_expected[] = { 0.580571f, 0.853773f, 0.148563f, 0.132294f, 0.636082f, 0.804404f, 0.972367f, -0.263525f, -0.534225f, 0.214911f, 0.087341f, -0.390994f }; + cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1738) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1738) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 121; + int trans = 111; + int diag = 132; + int M = 2; + int N = 3; + float alpha[2] = {-1.0f, 0.0f}; + float A[] = { 0.203f, -0.791f, -0.415f, -0.56f, 0.782f, -0.691f, -0.441f, 0.545f, -0.09f, 0.595f, -0.438f, 0.952f, 0.88f, 0.944f, -0.55f, -0.762f, -0.035f, -0.949f }; + int lda = 3; + float B[] = { -0.035f, 0.448f, 0.487f, -0.108f, -0.482f, -0.708f, -0.317f, 0.816f, -0.547f, 0.22f, -0.654f, 0.57f }; + int ldb = 2; + float B_expected[] = { 0.035f, -0.448f, -0.487f, 0.108f, 0.710725f, 0.924643f, 0.472907f, -1.12904f, 1.27511f, -1.33788f, -0.672654f, -0.727442f }; + cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1739) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1739) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 122; + int trans = 111; + int diag = 131; + int M = 2; + int N = 3; + float alpha[2] = {-1.0f, 0.0f}; + float A[] = { -0.09f, 0.742f, 0.081f, 0.459f, -0.54f, 0.04f, 0.574f, -0.858f, 0.704f, 0.686f, -0.9f, -0.519f, 0.538f, -0.934f, 0.467f, 0.376f, 0.149f, 0.322f }; + int lda = 3; + float B[] = { 0.307f, 0.294f, -0.428f, -0.7f, 0.496f, 0.167f, -0.611f, 0.904f, -0.846f, -0.411f, 0.29f, 0.004f }; + int ldb = 2; + float B_expected[] = { -0.191025f, -0.630625f, 0.063267f, 0.452361f, -0.782713f, -1.2668f, 1.30921f, -0.06316f, -0.006288f, 0.333651f, -0.041922f, -0.093976f }; + cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1740) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1740) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 122; + int trans = 111; + int diag = 132; + int M = 2; + int N = 3; + float alpha[2] = {-1.0f, 0.0f}; + float A[] = { 0.434f, 0.691f, 0.983f, -0.481f, -0.156f, -0.117f, -0.231f, 0.526f, 0.935f, 0.417f, -0.142f, -0.541f, 0.529f, 0.014f, 0.266f, 0.086f, 0.666f, 0.033f }; + int lda = 3; + float B[] = { 0.972f, -0.219f, -0.735f, -0.967f, 0.084f, -0.355f, -0.152f, -0.156f, 0.267f, 0.928f, 0.708f, -0.267f }; + int ldb = 2; + float B_expected[] = { -0.950741f, 0.784376f, 1.10114f, 1.08842f, -0.548134f, 0.631223f, 0.396983f, 0.501114f, -0.267f, -0.928f, -0.708f, 0.267f }; + cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1741) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1741) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 121; + int trans = 112; + int diag = 131; + int M = 2; + int N = 3; + float alpha[2] = {-0.3f, 0.1f}; + float A[] = { -0.25f, -0.779f, -0.138f, -0.017f, -0.319f, -0.555f, 0.674f, -0.256f }; + int lda = 2; + float B[] = { -0.651f, -0.525f, 0.409f, -0.932f, 0.359f, 0.321f, 0.419f, 0.027f, 0.67f, 0.328f, 0.446f, -0.615f }; + int ldb = 3; + float B_expected[] = { 0.0100296f, -0.216136f, 0.257045f, -0.0571445f, -0.0121016f, 0.124004f, -0.110514f, 0.0386878f, -0.1561f, -0.0050383f, 0.028185f, 0.183634f }; + cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1742) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1742) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 121; + int trans = 112; + int diag = 132; + int M = 2; + int N = 3; + float alpha[2] = {-0.3f, 0.1f}; + float A[] = { 0.012f, 0.978f, 0.617f, -0.361f, -0.349f, 0.712f, 0.008f, 0.305f }; + int lda = 2; + float B[] = { -0.771f, -0.335f, -0.565f, 0.866f, -0.516f, -0.869f, -0.097f, -0.711f, 0.308f, 0.207f, -0.459f, 0.766f }; + int ldb = 3; + float B_expected[] = { 0.2648f, 0.0234f, 0.0829f, -0.3163f, 0.2417f, 0.2091f, 0.272029f, 0.122445f, -0.176135f, -0.256384f, 0.285714f, -0.233939f }; + cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1743) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1743) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 122; + int trans = 112; + int diag = 131; + int M = 2; + int N = 3; + float alpha[2] = {-0.3f, 0.1f}; + float A[] = { -0.063f, -0.605f, 0.473f, 0.763f, 0.548f, -0.167f, -0.825f, 0.011f }; + int lda = 2; + float B[] = { -0.262f, 0.135f, -0.333f, -0.671f, 0.91f, 0.874f, 0.305f, -0.255f, 0.882f, 0.883f, 0.088f, -0.473f }; + int ldb = 3; + float B_expected[] = { -0.0627538f, 0.0344746f, -0.131779f, -0.149516f, -0.0442507f, 0.307921f, 0.053273f, -0.089001f, 0.293086f, 0.141896f, -0.0189002f, -0.124098f }; + cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1744) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1744) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 122; + int trans = 112; + int diag = 132; + int M = 2; + int N = 3; + float alpha[2] = {-0.3f, 0.1f}; + float A[] = { -0.493f, -0.852f, -0.567f, 0.21f, 0.168f, 0.666f, -0.328f, 0.803f }; + int lda = 2; + float B[] = { 0.24f, -0.578f, 0.293f, -0.233f, -0.348f, -0.853f, -0.145f, 0.192f, -0.785f, -0.72f, -0.508f, 0.023f }; + int ldb = 3; + float B_expected[] = { 0.037901f, 0.201471f, -0.104515f, 0.327095f, 0.253345f, 0.311373f, 0.0243f, -0.0721f, 0.3075f, 0.1375f, 0.1501f, -0.0577f }; + cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1745) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1745) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 121; + int trans = 112; + int diag = 131; + int M = 2; + int N = 3; + float alpha[2] = {-0.3f, 0.1f}; + float A[] = { -0.089f, -0.135f, 0.987f, 0.936f, 0.353f, 0.638f, 0.845f, 0.343f }; + int lda = 2; + float B[] = { 0.744f, 0.445f, 0.835f, 0.273f, 0.702f, 0.03f, -0.618f, 0.141f, -0.303f, -0.399f, 0.63f, -0.037f }; + int ldb = 2; + float B_expected[] = { 0.0158468f, 0.0413994f, -0.292082f, -0.285588f, 0.0272724f, 0.0233892f, 0.0660084f, -0.143882f, 0.0004278f, -0.0256146f, -0.19286f, 0.114065f }; + cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1746) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1746) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 121; + int trans = 112; + int diag = 132; + int M = 2; + int N = 3; + float alpha[2] = {-0.3f, 0.1f}; + float A[] = { 0.187f, -0.741f, 0.287f, -0.599f, -0.293f, -0.297f, 0.778f, -0.056f }; + int lda = 2; + float B[] = { -0.335f, -0.713f, 0.081f, -0.589f, -0.256f, -0.809f, -0.473f, 0.418f, 0.646f, -0.447f, -0.147f, 0.314f }; + int ldb = 2; + float B_expected[] = { 0.1718f, 0.1804f, 0.0378414f, 0.0809182f, 0.1577f, 0.2171f, 0.118373f, -0.283147f, -0.1491f, 0.1987f, 0.1154f, -0.122836f }; + cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1747) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1747) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 122; + int trans = 112; + int diag = 131; + int M = 2; + int N = 3; + float alpha[2] = {-0.3f, 0.1f}; + float A[] = { -0.259f, -0.645f, -0.09f, 0.709f, 0.729f, -0.023f, -0.792f, 0.03f }; + int lda = 2; + float B[] = { 0.904f, -0.402f, 0.753f, 0.104f, 0.38f, 0.944f, -0.715f, -0.378f, -0.16f, 0.254f, -0.68f, 0.183f }; + int ldb = 2; + float B_expected[] = { 0.185924f, -0.0771597f, 0.185827f, -0.0420162f, -0.156592f, 0.373034f, -0.201079f, -0.0256158f, 0.0051007f, 0.152025f, -0.143387f, 0.102908f }; + cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1748) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1748) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 122; + int trans = 112; + int diag = 132; + int M = 2; + int N = 3; + float alpha[2] = {-0.3f, 0.1f}; + float A[] = { -0.938f, 0.25f, -0.509f, 0.377f, -0.063f, 0.166f, 0.227f, -0.24f }; + int lda = 2; + float B[] = { 0.756f, -0.08f, -0.657f, -0.837f, -0.714f, 0.781f, 0.239f, -0.953f, 0.26f, 0.696f, -0.183f, 0.668f }; + int ldb = 2; + float B_expected[] = { -0.431623f, 0.111093f, 0.2808f, 0.1854f, 0.007293f, -0.454491f, 0.0236f, 0.3098f, -0.059093f, -0.075968f, -0.0119f, -0.2187f }; + cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1749) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1749) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 121; + int trans = 112; + int diag = 131; + int M = 2; + int N = 3; + float alpha[2] = {-0.3f, 0.1f}; + float A[] = { 0.055f, -0.682f, 0.361f, 0.521f, -0.192f, -0.664f, -0.167f, 0.731f, -0.668f, 0.983f, 0.608f, 0.533f, -0.513f, -0.781f, 0.878f, 0.875f, 0.804f, -0.179f }; + int lda = 3; + float B[] = { -0.038f, -0.787f, -0.209f, -0.686f, -0.073f, -0.662f, 0.938f, -0.301f, -0.871f, 0.699f, 0.561f, 0.823f }; + int ldb = 3; + float B_expected[] = { 0.224558f, -0.0087435f, -0.317863f, 0.168822f, 0.105075f, 0.138035f, 0.256887f, 0.377119f, 0.113231f, 0.136832f, -0.235636f, -0.108546f }; + cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1750) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1750) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 121; + int trans = 112; + int diag = 132; + int M = 2; + int N = 3; + float alpha[2] = {-0.3f, 0.1f}; + float A[] = { -0.397f, -0.154f, -0.944f, -0.137f, 0.65f, -0.49f, -0.883f, 0.273f, -0.137f, 0.655f, 0.531f, 0.676f, 0.052f, 0.03f, -0.602f, 0.002f, 0.005f, 0.984f }; + int lda = 3; + float B[] = { -0.446f, 0.091f, 0.793f, -0.221f, 0.386f, 0.354f, -0.063f, 0.105f, -0.128f, 0.189f, -0.079f, 0.749f }; + int ldb = 3; + float B_expected[] = { 0.216958f, -0.149634f, -0.25039f, 0.0074932f, -0.1512f, -0.0676f, -0.166784f, -0.100965f, 0.14955f, -0.227622f, -0.0512f, -0.2326f }; + cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1751) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1751) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 122; + int trans = 112; + int diag = 131; + int M = 2; + int N = 3; + float alpha[2] = {-0.3f, 0.1f}; + float A[] = { -0.976f, -0.488f, -0.762f, -0.057f, 0.812f, 0.006f, 0.06f, -0.271f, 0.832f, -0.232f, 0.188f, -0.466f, -0.051f, -0.745f, 0.909f, -0.091f, -0.559f, 0.595f }; + int lda = 3; + float B[] = { 0.644f, -0.584f, 0.456f, 0.443f, -0.909f, 0.43f, 0.771f, -0.075f, -0.408f, 0.303f, 0.03f, 0.529f }; + int ldb = 3; + float B_expected[] = { 0.24849f, -0.168067f, -0.114085f, 0.0202884f, 0.0152508f, 0.284926f, 0.267034f, 0.0120048f, 0.0596364f, -0.0643158f, 0.284594f, 0.0837608f }; + cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1752) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1752) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 122; + int trans = 112; + int diag = 132; + int M = 2; + int N = 3; + float alpha[2] = {-0.3f, 0.1f}; + float A[] = { 0.924f, -0.247f, -0.131f, 0.932f, -0.415f, 0.454f, -0.539f, 0.693f, -0.725f, -0.601f, 0.565f, 0.002f, -0.118f, 0.626f, -0.968f, 0.874f, 0.156f, -0.227f }; + int lda = 3; + float B[] = { 0.793f, -0.15f, -0.967f, 0.821f, 0.37f, -0.572f, -0.156f, 0.106f, -0.877f, -0.297f, 0.448f, -0.576f }; + int ldb = 3; + float B_expected[] = { -0.2229f, 0.1243f, 0.242003f, -0.564467f, -0.0068716f, 0.568213f, 0.0362f, -0.0474f, 0.306136f, 0.0520352f, -0.336053f, 0.500406f }; + cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1753) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1753) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 121; + int trans = 112; + int diag = 131; + int M = 2; + int N = 3; + float alpha[2] = {-0.3f, 0.1f}; + float A[] = { 0.671f, 0.477f, 0.227f, 0.685f, -0.648f, 0.277f, -0.295f, -0.632f, 0.509f, -0.798f, 0.875f, 0.89f, -0.34f, -0.786f, -0.453f, 0.511f, -0.189f, 0.385f }; + int lda = 3; + float B[] = { -0.895f, -0.148f, 0.934f, 0.229f, 0.958f, -0.55f, 0.49f, 0.586f, -0.871f, 0.618f, -0.0f, -0.543f }; + int ldb = 2; + float B_expected[] = { 0.162976f, 0.110656f, -0.12507f, -0.0587256f, 0.138701f, 0.543589f, -0.313677f, 0.0534812f, 0.067207f, 0.12831f, -0.0729792f, -0.0098826f }; + cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1754) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1754) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 121; + int trans = 112; + int diag = 132; + int M = 2; + int N = 3; + float alpha[2] = {-0.3f, 0.1f}; + float A[] = { -0.438f, -0.618f, 0.524f, 0.525f, -0.268f, -0.502f, -0.685f, 0.28f, 0.508f, 0.664f, -0.492f, 0.772f, -0.997f, 0.693f, 0.63f, -0.328f, -0.521f, -0.869f }; + int lda = 3; + float B[] = { 0.527f, 0.999f, -0.078f, 0.599f, 0.004f, -0.615f, -0.281f, -0.328f, 0.456f, -0.666f, 0.309f, -0.69f }; + int ldb = 2; + float B_expected[] = { -0.45115f, -0.650085f, -0.277633f, -0.456478f, 0.0965652f, 0.362528f, 0.1802f, 0.227951f, -0.0702f, 0.2454f, -0.0237f, 0.2379f }; + cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1755) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1755) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 122; + int trans = 112; + int diag = 131; + int M = 2; + int N = 3; + float alpha[2] = {-0.3f, 0.1f}; + float A[] = { -0.454f, 0.517f, -0.794f, -0.181f, 0.292f, 0.954f, -0.93f, -0.128f, 0.123f, -0.997f, 0.325f, -0.317f, -0.988f, 0.732f, 0.637f, 0.457f, -0.665f, 0.529f }; + int lda = 3; + float B[] = { -0.055f, 0.803f, -0.981f, -0.627f, 0.147f, -0.656f, -0.824f, -0.366f, -0.445f, -0.151f, 0.686f, -0.368f }; + int ldb = 2; + float B_expected[] = { 0.156354f, 0.078881f, -0.208608f, 0.143709f, 0.219569f, 0.211768f, -0.204943f, -0.415655f, 0.191227f, 0.0071854f, 0.136999f, 0.0773624f }; + cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1756) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1756) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 122; + int trans = 112; + int diag = 132; + int M = 2; + int N = 3; + float alpha[2] = {-0.3f, 0.1f}; + float A[] = { 0.623f, -0.129f, -0.419f, -0.006f, 0.21f, -0.165f, 0.218f, 0.915f, 0.736f, 0.07f, 0.502f, -0.809f, 0.242f, -0.015f, 0.67f, -0.956f, 0.153f, 0.365f }; + int lda = 3; + float B[] = { -0.927f, 0.383f, -0.471f, 0.443f, -0.731f, -0.949f, -0.142f, -0.65f, 0.159f, -0.624f, -0.822f, 0.107f }; + int ldb = 2; + float B_expected[] = { 0.2398f, -0.2076f, 0.097f, -0.18f, 0.212478f, 0.297146f, 0.065877f, 0.255638f, 0.359717f, -0.0280276f, 0.426852f, -0.164392f }; + cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1757) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1757) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 121; + int trans = 113; + int diag = 131; + int M = 2; + int N = 3; + float alpha[2] = {-0.3f, 0.1f}; + float A[] = { -0.628f, -0.771f, 0.827f, -0.979f, 0.395f, -0.166f, 0.88f, 0.958f }; + int lda = 2; + float B[] = { 0.297f, 0.49f, 0.425f, -0.386f, 0.672f, 0.992f, -0.077f, 0.761f, 0.393f, -0.605f, -0.273f, 0.725f }; + int ldb = 3; + float B_expected[] = { 0.177165f, -0.0328107f, -0.0662201f, -0.167954f, 0.366541f, -0.0872256f, -0.2721f, -0.389113f, -0.0674816f, 0.293174f, -0.249446f, -0.709453f }; + cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1758) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1758) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 121; + int trans = 113; + int diag = 132; + int M = 2; + int N = 3; + float alpha[2] = {-0.3f, 0.1f}; + float A[] = { -0.876f, 0.752f, -0.148f, 0.972f, -0.508f, -0.752f, -0.861f, 0.074f }; + int lda = 2; + float B[] = { 0.878f, -0.987f, -0.896f, 0.519f, -0.355f, -0.117f, 0.329f, 0.068f, -0.644f, 0.344f, -0.187f, -0.343f }; + int ldb = 3; + float B_expected[] = { -0.1647f, 0.3839f, 0.2169f, -0.2453f, 0.1182f, -0.0004f, 0.292026f, 0.115771f, -0.111733f, -0.342122f, 0.0725176f, -0.0306312f }; + cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1759) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1759) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 122; + int trans = 113; + int diag = 131; + int M = 2; + int N = 3; + float alpha[2] = {-0.3f, 0.1f}; + float A[] = { 0.072f, -0.966f, 0.648f, 0.43f, -0.623f, -0.221f, -0.622f, 0.977f }; + int lda = 2; + float B[] = { 0.0f, 0.028f, 0.857f, -0.171f, -0.933f, 0.159f, 0.315f, -0.297f, -0.864f, 0.519f, -0.601f, -0.119f }; + int ldb = 3; + float B_expected[] = { 0.0216306f, -0.0927642f, -0.225266f, -0.0253344f, 0.0408658f, 0.302549f, 0.158132f, -0.0117036f, -0.365472f, -0.0519459f, -0.143387f, -0.172603f }; + cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1760) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1760) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 122; + int trans = 113; + int diag = 132; + int M = 2; + int N = 3; + float alpha[2] = {-0.3f, 0.1f}; + float A[] = { -0.903f, -0.972f, -0.812f, 0.605f, 0.085f, -0.025f, -0.443f, 0.518f }; + int lda = 2; + float B[] = { -0.725f, -0.451f, 0.779f, 0.969f, 0.25f, 0.021f, 0.029f, -0.382f, 0.022f, 0.957f, 0.704f, 0.832f }; + int ldb = 3; + float B_expected[] = { 0.26217f, 0.073525f, -0.332173f, -0.239574f, -0.097644f, -0.003892f, 0.0295f, 0.1175f, -0.1023f, -0.2849f, -0.2944f, -0.1792f }; + cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1761) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1761) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 121; + int trans = 113; + int diag = 131; + int M = 2; + int N = 3; + float alpha[2] = {-0.3f, 0.1f}; + float A[] = { -0.322f, -0.981f, 0.193f, -0.604f, 0.87f, -0.384f, 0.463f, -0.502f }; + int lda = 2; + float B[] = { -0.447f, 0.21f, 0.928f, -0.496f, 0.889f, -0.354f, -0.258f, -0.149f, 0.98f, -0.958f, 0.106f, -0.579f }; + int ldb = 2; + float B_expected[] = { 0.0692355f, 0.14563f, -0.0874638f, -0.0532654f, -0.116915f, -0.289728f, -0.242902f, 0.136003f, -0.314257f, -0.318533f, -0.400862f, 0.357622f }; + cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1762) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1762) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 121; + int trans = 113; + int diag = 132; + int M = 2; + int N = 3; + float alpha[2] = {-0.3f, 0.1f}; + float A[] = { -0.924f, -0.553f, 0.985f, -0.793f, 0.406f, 0.741f, -0.956f, 0.945f }; + int lda = 2; + float B[] = { 0.736f, -0.81f, 0.028f, 0.474f, 0.14f, -0.03f, -0.756f, 0.923f, -0.515f, 0.532f, -0.321f, 0.326f }; + int ldb = 2; + float B_expected[] = { -0.1398f, 0.3166f, 0.122042f, 0.0927314f, -0.039f, 0.023f, 0.135709f, -0.314263f, 0.1013f, -0.2111f, -0.0515973f, -0.29067f }; + cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1763) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1763) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 122; + int trans = 113; + int diag = 131; + int M = 2; + int N = 3; + float alpha[2] = {-0.3f, 0.1f}; + float A[] = { 0.04f, -0.41f, -0.643f, 0.988f, 0.86f, -0.281f, -0.017f, 0.389f }; + int lda = 2; + float B[] = { 0.204f, 0.524f, -0.558f, -0.736f, 0.26f, -0.202f, -0.757f, 0.346f, 0.917f, 0.541f, -0.108f, -0.965f }; + int ldb = 2; + float B_expected[] = { 0.059601f, -0.396251f, 0.060088f, -0.096554f, -0.338942f, -0.0950055f, -0.073098f, -0.071831f, 0.208251f, -0.444353f, 0.106223f, -0.05488f }; + cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1764) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1764) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 122; + int trans = 113; + int diag = 132; + int M = 2; + int N = 3; + float alpha[2] = {-0.3f, 0.1f}; + float A[] = { 0.375f, 0.153f, -0.343f, -0.742f, 0.563f, 0.473f, 0.451f, -0.433f }; + int lda = 2; + float B[] = { -0.804f, -0.016f, -0.715f, -0.902f, -0.89f, 0.155f, -0.408f, 0.419f, 0.078f, -0.691f, -0.717f, -0.637f }; + int ldb = 2; + float B_expected[] = { -0.0094443f, 0.0821961f, 0.3047f, 0.1991f, 0.347432f, -0.0186595f, 0.0805f, -0.1665f, -0.138523f, 0.381015f, 0.2788f, 0.1194f }; + cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1765) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1765) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 121; + int trans = 113; + int diag = 131; + int M = 2; + int N = 3; + float alpha[2] = {-0.3f, 0.1f}; + float A[] = { -0.867f, -0.597f, -0.577f, 0.735f, 0.827f, -0.104f, -0.861f, -0.802f, -0.288f, 0.293f, 0.593f, 0.228f, -0.469f, 0.942f, 0.193f, 0.591f, 0.241f, 0.382f }; + int lda = 3; + float B[] = { -0.812f, -0.874f, -0.18f, -0.81f, 0.023f, 0.352f, 0.559f, 0.237f, -0.835f, 0.037f, -0.762f, 0.782f }; + int ldb = 3; + float B_expected[] = { -0.331628f, -0.278177f, -0.0214727f, -0.156013f, -0.0496067f, -0.0088131f, 0.119788f, -0.469291f, -0.0804714f, -0.263663f, -0.0824792f, -0.132356f }; + cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1766) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1766) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 121; + int trans = 113; + int diag = 132; + int M = 2; + int N = 3; + float alpha[2] = {-0.3f, 0.1f}; + float A[] = { -0.258f, -0.812f, -0.858f, -0.107f, -0.151f, 0.785f, 0.717f, 0.992f, -0.649f, -0.242f, -0.454f, 0.916f, 0.86f, 0.834f, -0.244f, 0.391f, 0.818f, -0.714f }; + int lda = 3; + float B[] = { 0.163f, 0.441f, 0.54f, 0.679f, 0.071f, -0.76f, 0.345f, -0.956f, 0.654f, -0.217f, -0.892f, 0.106f }; + int ldb = 3; + float B_expected[] = { 0.296566f, -0.0905963f, -0.0393822f, -0.306541f, 0.0547f, 0.2351f, -0.0059345f, 0.0071855f, -0.402014f, -0.049978f, 0.257f, -0.121f }; + cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1767) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1767) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 122; + int trans = 113; + int diag = 131; + int M = 2; + int N = 3; + float alpha[2] = {-0.3f, 0.1f}; + float A[] = { 0.525f, 0.182f, 0.851f, -0.348f, -0.046f, 0.839f, -0.045f, -0.149f, -0.992f, 0.588f, -0.01f, -0.409f, 0.527f, 0.263f, -0.509f, -0.026f, 0.284f, 0.507f }; + int lda = 3; + float B[] = { 0.909f, 0.216f, 0.38f, 0.198f, -0.412f, -0.102f, -0.456f, 0.079f, 0.504f, -0.782f, -0.88f, 0.079f }; + int ldb = 3; + float B_expected[] = { -0.149757f, 0.0672651f, 0.129501f, 0.054878f, -0.0469462f, 0.0277224f, 0.0550599f, -0.0598423f, 0.244521f, -0.217471f, 0.0955519f, -0.37895f }; + cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1768) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1768) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 122; + int trans = 113; + int diag = 132; + int M = 2; + int N = 3; + float alpha[2] = {-0.3f, 0.1f}; + float A[] = { 0.893f, -0.758f, 0.145f, 0.623f, -0.018f, -0.733f, -0.144f, -0.192f, 0.53f, 0.773f, -0.771f, 0.36f, 0.932f, -0.771f, 0.997f, -0.671f, 0.574f, -0.771f }; + int lda = 3; + float B[] = { 0.592f, 0.985f, -0.62f, -0.095f, -0.344f, -0.607f, 0.759f, 0.085f, -0.609f, 0.068f, -0.084f, -0.575f }; + int ldb = 3; + float B_expected[] = { -0.2761f, -0.2363f, 0.280628f, -0.052484f, 0.306154f, -0.187624f, -0.2362f, 0.0504f, 0.200236f, -0.133908f, 0.0536278f, 0.0659354f }; + cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1769) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1769) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 121; + int trans = 113; + int diag = 131; + int M = 2; + int N = 3; + float alpha[2] = {-0.3f, 0.1f}; + float A[] = { 0.503f, -0.057f, -0.581f, -0.77f, -0.907f, -0.843f, 0.56f, -0.554f, 0.054f, 0.988f, 0.868f, -0.627f, 0.645f, -0.246f, -0.958f, 0.66f, 0.956f, 0.99f }; + int lda = 3; + float B[] = { 0.282f, -0.442f, 0.564f, -0.691f, -0.743f, 0.113f, -0.395f, 0.312f, -0.167f, -0.568f, 0.508f, 0.912f }; + int ldb = 2; + float B_expected[] = { 0.180092f, 0.260648f, -0.045069f, -0.102868f, -0.0964434f, -0.432702f, -0.0404678f, 0.280779f, 0.254359f, 0.0411062f, -0.453454f, 0.0281672f }; + cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1770) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1770) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 121; + int trans = 113; + int diag = 132; + int M = 2; + int N = 3; + float alpha[2] = {-0.3f, 0.1f}; + float A[] = { -0.851f, 0.296f, -0.683f, -0.53f, 0.38f, -0.837f, 0.977f, 0.189f, -0.624f, -0.664f, 0.73f, -0.882f, 0.105f, -0.868f, 0.362f, -0.006f, -0.435f, 0.757f }; + int lda = 3; + float B[] = { -0.259f, -0.091f, 0.606f, -0.983f, -0.238f, 0.057f, 0.358f, 0.18f, -0.71f, 0.058f, 0.511f, 0.717f }; + int ldb = 2; + float B_expected[] = { 0.241746f, 0.119591f, -0.0907286f, 0.148899f, 0.141237f, -0.0716576f, -0.205866f, -0.078918f, 0.2072f, -0.0884f, -0.225f, -0.164f }; + cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1771) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1771) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 122; + int trans = 113; + int diag = 131; + int M = 2; + int N = 3; + float alpha[2] = {-0.3f, 0.1f}; + float A[] = { 0.956f, 0.972f, 0.771f, 0.187f, 0.948f, 0.303f, -0.854f, 0.123f, 0.704f, 0.152f, 0.347f, 0.595f, -0.865f, 0.75f, -0.041f, -0.572f, 0.749f, 0.216f }; + int lda = 3; + float B[] = { -0.821f, -0.098f, 0.347f, -0.639f, 0.314f, -0.009f, -0.725f, 0.45f, 0.536f, 0.801f, 0.431f, 0.936f }; + int ldb = 2; + float B_expected[] = { 0.193607f, -0.29931f, 0.18163f, 0.255513f, 0.127098f, -0.0503344f, 0.101243f, 0.0097718f, -0.0060322f, -0.148016f, -0.251411f, -0.0777231f }; + cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1772) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1772) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 122; + int trans = 113; + int diag = 132; + int M = 2; + int N = 3; + float alpha[2] = {-0.3f, 0.1f}; + float A[] = { 0.78f, -0.205f, 0.073f, -0.859f, 0.568f, -0.599f, -0.947f, -0.514f, 0.835f, 0.176f, 0.27f, -0.617f, 0.171f, -0.074f, 0.939f, -0.469f, -0.471f, 0.25f }; + int lda = 3; + float B[] = { -0.279f, 0.16f, -0.495f, 0.658f, 0.071f, 0.557f, -0.116f, 0.095f, -0.104f, 0.503f, -0.775f, -0.03f }; + int ldb = 2; + float B_expected[] = { 0.0677f, -0.0759f, 0.0827f, -0.2469f, -0.0068598f, -0.107386f, 0.243424f, 0.0129156f, 0.142748f, -0.254568f, 0.461939f, -0.154419f }; + cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1773) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1773) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 121; + int trans = 111; + int diag = 131; + int M = 2; + int N = 3; + double alpha[2] = {0, 0}; + double A[] = { 0.463, 0.033, -0.929, 0.949, 0.864, 0.986, 0.393, 0.885 }; + int lda = 2; + double B[] = { -0.321, -0.852, -0.337, -0.175, 0.607, -0.613, 0.688, 0.973, -0.331, -0.35, 0.719, -0.553 }; + int ldb = 3; + double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; + cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1774) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1774) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 121; + int trans = 111; + int diag = 132; + int M = 2; + int N = 3; + double alpha[2] = {0, 0}; + double A[] = { 0.608, -0.393, 0.921, 0.282, -0.857, -0.286, -0.31, -0.057 }; + int lda = 2; + double B[] = { -0.548, 0.728, 0.391, -0.506, 0.186, 0.97, -0.435, 0.375, -0.995, -0.496, 0.99, 0.186 }; + int ldb = 3; + double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; + cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1775) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1775) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 122; + int trans = 111; + int diag = 131; + int M = 2; + int N = 3; + double alpha[2] = {0, 0}; + double A[] = { 0.253, 0.969, 0.654, -0.016, -0.774, -0.11, -0.101, -0.287 }; + int lda = 2; + double B[] = { -0.34, -0.268, -0.52, 0.021, -0.875, 0.98, 0.255, 0.564, -0.478, -0.818, -0.043, 0.224 }; + int ldb = 3; + double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; + cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1776) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1776) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 122; + int trans = 111; + int diag = 132; + int M = 2; + int N = 3; + double alpha[2] = {0, 0}; + double A[] = { -0.64, -0.222, 0.922, 0.417, -0.724, 0.012, 0.418, 0.39 }; + int lda = 2; + double B[] = { 0.619, -0.024, -0.068, 0.219, 0.374, -0.937, 0.79, 0.166, -0.92, 0.753, -0.017, 0.076 }; + int ldb = 3; + double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; + cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1777) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1777) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 121; + int trans = 111; + int diag = 131; + int M = 2; + int N = 3; + double alpha[2] = {0, 0}; + double A[] = { 0.57, 0.987, 0.116, -0.691, -0.603, -0.778, 0.14, -0.073 }; + int lda = 2; + double B[] = { 0.421, -0.055, 0.92, 0.664, 0.835, 0.861, -0.392, -0.897, -0.346, 0.516, -0.068, -0.156 }; + int ldb = 2; + double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; + cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1778) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1778) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 121; + int trans = 111; + int diag = 132; + int M = 2; + int N = 3; + double alpha[2] = {0, 0}; + double A[] = { -0.754, 0.904, 0.089, 0.206, 0.974, -0.946, -0.55, -0.675 }; + int lda = 2; + double B[] = { -0.42, -0.372, 0.628, 0.148, 0.344, -0.924, -0.802, -0.307, 0.427, 0.116, 0.916, -0.384 }; + int ldb = 2; + double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; + cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1779) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1779) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 122; + int trans = 111; + int diag = 131; + int M = 2; + int N = 3; + double alpha[2] = {0, 0}; + double A[] = { 0.152, -0.898, -0.024, 0.719, 0.992, -0.841, 0.901, 0.202 }; + int lda = 2; + double B[] = { 0.243, -0.811, 0.68, 0.118, 0.946, -0.632, 0.729, -0.942, 0.308, 0.507, -0.838, 0.594 }; + int ldb = 2; + double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; + cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1780) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1780) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 122; + int trans = 111; + int diag = 132; + int M = 2; + int N = 3; + double alpha[2] = {0, 0}; + double A[] = { 0.119, -0.849, 0.425, -0.273, -0.918, 0.196, -0.871, -0.39 }; + int lda = 2; + double B[] = { 0.709, 0.33, -0.207, 0.012, -0.017, 0.787, -0.385, 0.739, -0.874, 0.188, -0.039, 0.692 }; + int ldb = 2; + double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; + cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1781) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1781) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 121; + int trans = 111; + int diag = 131; + int M = 2; + int N = 3; + double alpha[2] = {0, 0}; + double A[] = { 0.837, -0.603, 0.755, -0.92, 0.892, -0.009, -0.741, 0.271, -0.325, -0.861, 0.902, -0.088, 0.091, 0.256, 0.209, -0.724, 0.28, -0.604 }; + int lda = 3; + double B[] = { 0.455, -0.215, -0.668, 0.917, -0.985, 0.477, 0.564, -0.524, -0.202, -0.53, -0.88, -0.688 }; + int ldb = 3; + double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; + cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1782) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1782) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 121; + int trans = 111; + int diag = 132; + int M = 2; + int N = 3; + double alpha[2] = {0, 0}; + double A[] = { -0.991, 0.253, 0.813, 0.497, -0.268, 0.623, 0.82, -0.946, -0.883, 0.333, -0.265, -0.371, 0.131, -0.812, -0.365, 0.45, 0.929, -0.704 }; + int lda = 3; + double B[] = { 0.783, -0.756, 0.635, 0.56, 0.434, -0.831, -0.34, -0.531, -0.277, 0.874, 0.986, 0.157 }; + int ldb = 3; + double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; + cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1783) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1783) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 122; + int trans = 111; + int diag = 131; + int M = 2; + int N = 3; + double alpha[2] = {0, 0}; + double A[] = { 0.265, -0.592, -0.721, -0.838, -0.952, 0.115, -0.34, -0.789, -0.265, -0.779, -0.676, 0.048, 0.78, -0.272, -0.651, 0.272, 0.8, -0.693 }; + int lda = 3; + double B[] = { -0.609, 0.028, -0.818, 0.289, -0.41, -0.25, -0.917, 0.463, 0.942, 0.692, -0.516, 0.378 }; + int ldb = 3; + double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; + cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1784) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1784) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 122; + int trans = 111; + int diag = 132; + int M = 2; + int N = 3; + double alpha[2] = {0, 0}; + double A[] = { 0.962, 0.945, -0.58, -0.358, -0.769, 0.751, -0.068, -0.321, 0.938, 0.183, -0.17, 0.251, -0.248, -0.092, -0.818, 0.928, -0.059, -0.222 }; + int lda = 3; + double B[] = { 0.015, -0.852, -0.565, 0.16, -0.095, 0.073, 0.405, 0.509, 0.082, -0.478, -0.365, 0.824 }; + int ldb = 3; + double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; + cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1785) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1785) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 121; + int trans = 111; + int diag = 131; + int M = 2; + int N = 3; + double alpha[2] = {0, 0}; + double A[] = { 0.616, 0.669, 0.323, -0.238, 0.153, 0.891, -0.4, 0.996, 0.689, -0.736, -0.259, -0.707, 0.993, 0.13, -0.829, -0.564, -0.09, 0.118 }; + int lda = 3; + double B[] = { 0.113, 0.724, 0.148, -0.309, -0.833, -0.791, 0.354, -0.528, 0.313, 0.421, 0.28, 0.371 }; + int ldb = 2; + double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; + cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1786) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1786) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 121; + int trans = 111; + int diag = 132; + int M = 2; + int N = 3; + double alpha[2] = {0, 0}; + double A[] = { 0.957, -0.713, 0.976, 0.183, -0.145, -0.858, -0.497, -0.605, -0.742, 0.686, 0.272, 0.83, -0.606, -0.099, -0.807, 0.767, 0.254, 0.244 }; + int lda = 3; + double B[] = { -0.124, -0.19, 0.665, -0.74, 0.505, -0.194, 0.588, -0.421, -0.727, 0.308, -0.802, -0.278 }; + int ldb = 2; + double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; + cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1787) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1787) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 122; + int trans = 111; + int diag = 131; + int M = 2; + int N = 3; + double alpha[2] = {0, 0}; + double A[] = { -0.649, 0.856, 0.969, 0.382, 0.963, 0.567, 0.599, 0.018, -0.924, 0.578, -0.531, -0.091, -0.454, -0.834, 0.97, -0.126, -0.859, 0.879 }; + int lda = 3; + double B[] = { 0.35, 0.824, -0.084, 0.662, -0.752, 0.872, 0.129, 0.969, -0.539, 0.907, 0.316, -0.675 }; + int ldb = 2; + double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; + cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1788) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1788) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 122; + int trans = 111; + int diag = 132; + int M = 2; + int N = 3; + double alpha[2] = {0, 0}; + double A[] = { -0.315, -0.459, 0.327, -0.132, -0.283, 0.173, -0.356, -0.427, 0.508, 0.347, -0.804, -0.849, 0.779, 0.673, 0.019, -0.869, 0.999, -0.338 }; + int lda = 3; + double B[] = { 0.678, -0.171, 0.136, -0.268, -0.578, -0.431, 0.978, -0.749, 0.333, -0.757, 0.658, 0.456 }; + int ldb = 2; + double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; + cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1789) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1789) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 121; + int trans = 112; + int diag = 131; + int M = 2; + int N = 3; + double alpha[2] = {0, 0.1}; + double A[] = { -0.532, -0.877, 0.308, -0.807, 0.013, 0.891, 0.077, -0.004 }; + int lda = 2; + double B[] = { 0.634, -0.969, 0.228, -0.097, 0.419, 0.903, 0.21, 0.313, -0.819, -0.028, 0.574, -0.762 }; + int ldb = 3; + double B_expected[] = { 0.004051, -0.1187101, 0.0148352, -0.0206365, 0.0847859, 0.0569023, 0.0786829, -0.0569289, 0.0212752, -0.007123, 0.0120979, 0.0898923 }; + cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1790) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1790) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 121; + int trans = 112; + int diag = 132; + int M = 2; + int N = 3; + double alpha[2] = {0, 0.1}; + double A[] = { -0.77, -0.037, -0.021, -0.831, -0.663, -0.241, -0.273, -0.023 }; + int lda = 2; + double B[] = { 0.354, -0.95, -0.944, -0.497, 0.741, 0.084, -0.3, 0.023, -0.056, 0.063, -0.117, -0.498 }; + int ldb = 3; + double B_expected[] = { 0.095, 0.0354, 0.0497, -0.0944, -0.0084, 0.0741, 0.0251224, -0.1096884, -0.0857901, -0.0449183, 0.1115535, -0.0062757 }; + cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1791) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1791) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 122; + int trans = 112; + int diag = 131; + int M = 2; + int N = 3; + double alpha[2] = {0, 0.1}; + double A[] = { -0.623, 0.379, 0.903, -0.378, -0.088, 0.24, -0.964, 0.558 }; + int lda = 2; + double B[] = { -0.137, 0.706, 0.457, 0.399, -0.69, -0.7, 0.34, 0.479, 0.539, -0.133, 0.876, -0.347 }; + int ldb = 3; + double B_expected[] = { 0.0452313, -0.0327103, -0.006569, -0.0451444, -0.0415366, 0.0701362, 0.0272036, -0.0595042, -0.0428974, -0.0445382, -0.0823316, -0.0650838 }; + cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1792) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1792) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 122; + int trans = 112; + int diag = 132; + int M = 2; + int N = 3; + double alpha[2] = {0, 0.1}; + double A[] = { 0.253, 0.657, 0.636, 0.827, -0.107, 0.353, 0.425, -0.365 }; + int lda = 2; + double B[] = { -0.402, -0.409, 0.421, -0.333, -0.771, -0.099, 0.697, -0.812, -0.653, 0.823, 0.994, 0.998 }; + int ldb = 3; + double B_expected[] = { 0.0076075, -0.0189943, 0.065157, 0.0200352, -0.0145096, -0.1229652, 0.0812, 0.0697, -0.0823, -0.0653, -0.0998, 0.0994 }; + cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1793) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1793) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 121; + int trans = 112; + int diag = 131; + int M = 2; + int N = 3; + double alpha[2] = {0, 0.1}; + double A[] = { -0.57, -0.805, -0.66, -0.421, 0.643, -0.534, -0.988, -0.581 }; + int lda = 2; + double B[] = { -0.279, -0.253, 0.976, -0.051, 0.294, 0.451, 0.187, -0.177, 0.31, -0.714, -0.104, -0.177 }; + int ldb = 2; + double B_expected[] = { -0.0368805, -0.0044635, 0.0530361, -0.1308418, 0.049374, 0.0195475, -0.0199226, 0.0142283, -0.015743, -0.075147, 0.0389342, -0.0182031 }; + cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1794) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1794) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 121; + int trans = 112; + int diag = 132; + int M = 2; + int N = 3; + double alpha[2] = {0, 0.1}; + double A[] = { -0.594, 0.273, 0.457, 0.295, 0.434, -0.227, -0.662, 0.623 }; + int lda = 2; + double B[] = { -0.582, -0.581, 0.259, -0.833, -0.864, -0.284, 0.965, -0.459, -0.539, -0.551, -0.969, 0.09 }; + int ldb = 2; + double B_expected[] = { 0.0581, -0.0582, 0.095304, -0.0125475, 0.0284, -0.0864, 0.0386128, 0.0525556, 0.0551, -0.0539, 0.0026781, -0.1328003 }; + cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1795) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1795) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 122; + int trans = 112; + int diag = 131; + int M = 2; + int N = 3; + double alpha[2] = {0, 0.1}; + double A[] = { 0.398, 0.323, 0.31, 0.718, 0.181, 0.665, 0.402, 0.317 }; + int lda = 2; + double B[] = { 0.812, -0.244, -0.415, 0.602, 0.901, -0.017, 0.786, -0.119, 0.448, -0.75, 0.851, 0.172 }; + int ldb = 2; + double B_expected[] = { -0.0053814, -0.0158898, -0.0110449, -0.0357664, -0.0811715, 0.0693191, -0.0201324, 0.0353695, -0.0510542, 0.0560868, -0.0338911, 0.0287578 }; + cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1796) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1796) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 122; + int trans = 112; + int diag = 132; + int M = 2; + int N = 3; + double alpha[2] = {0, 0.1}; + double A[] = { 0.265, -0.578, 0.218, -0.093, -0.172, 0.414, 0.448, 0.696 }; + int lda = 2; + double B[] = { 0.02, -0.254, 0.152, 0.304, 0.289, 0.247, 0.705, 0.419, -0.735, 0.788, -0.942, -0.71 }; + int ldb = 2; + double B_expected[] = { 0.0201864, 0.0081408, -0.0304, 0.0152, -0.0272777, 0.0481657, -0.0419, 0.0705, -0.0720826, -0.1006386, 0.071, -0.0942 }; + cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1797) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1797) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 121; + int trans = 112; + int diag = 131; + int M = 2; + int N = 3; + double alpha[2] = {0, 0.1}; + double A[] = { 0.971, 0.532, 0.175, 0.455, 0.191, 0.493, 0.882, -0.944, 0.358, 0.142, -0.065, 0.632, -0.319, -0.101, 0.578, 0.476, -0.773, 0.912 }; + int lda = 3; + double B[] = { 0.018, -0.131, 0.964, -0.467, -0.729, -0.794, 0.874, 0.361, 0.744, -0.958, 0.162, 0.555 }; + int ldb = 3; + double B_expected[] = { 0.0271781, 0.0720558, 0.0439416, 0.0960619, 0.0051086, 0.1287645, -0.117224, 0.0980019, 0.0171007, 0.0041098, 0.0281271, -0.0631386 }; + cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1798) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1798) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 121; + int trans = 112; + int diag = 132; + int M = 2; + int N = 3; + double alpha[2] = {0, 0.1}; + double A[] = { -0.506, -0.263, -0.994, 0.681, 0.889, -0.5, -0.912, 0.741, -0.329, -0.912, 0.332, -0.001, -0.484, 0.942, -0.728, -0.104, -0.216, 0.679 }; + int lda = 3; + double B[] = { 0.562, -0.354, 0.742, -0.177, -0.627, -0.762, 0.476, 0.758, 0.675, -0.504, -0.33, 0.186 }; + int ldb = 3; + double B_expected[] = { 0.0036678, -0.0993414, 0.0429357, 0.0533074, 0.0762, -0.0627, -0.2049005, -0.0052096, 0.0441918, 0.0565626, -0.0186, -0.033 }; + cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1799) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1799) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 122; + int trans = 112; + int diag = 131; + int M = 2; + int N = 3; + double alpha[2] = {0, 0.1}; + double A[] = { -0.341, -0.27, 0.001, 0.939, 0.714, 0.803, -0.508, -0.331, -0.563, -0.725, -0.902, -0.793, 0.461, 0.127, -0.597, -0.498, 0.394, -0.019 }; + int lda = 3; + double B[] = { 0.015, 0.803, 0.497, 0.667, 0.803, 0.775, 0.026, 0.908, 0.535, -0.111, 0.379, -0.036 }; + int ldb = 3; + double B_expected[] = { 0.0277873, 0.0211695, 0.1148735, 0.0461937, -0.0016476, 0.0271498, 0.0316648, 0.0236294, 0.0795252, -0.009434, -0.0200342, -0.0329361 }; + cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1800) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1800) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 122; + int trans = 112; + int diag = 132; + int M = 2; + int N = 3; + double alpha[2] = {0, 0.1}; + double A[] = { 0.132, 0.903, -0.235, -0.294, -0.09, 0.74, -0.707, -0.855, 0.632, 0.543, -0.558, -0.416, -0.99, -0.088, -0.189, -0.371, -0.844, -0.737 }; + int lda = 3; + double B[] = { -0.257, 0.159, 0.689, 0.785, 0.398, -0.128, -0.098, -0.735, -0.307, 0.032, 0.517, 0.049 }; + int ldb = 3; + double B_expected[] = { -0.0159, -0.0257, -0.0892322, 0.1006644, 0.0666778, 0.0827436, 0.0735, -0.0098, -0.0635435, -0.0866139, -0.0893123, 0.0619235 }; + cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1801) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1801) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 121; + int trans = 112; + int diag = 131; + int M = 2; + int N = 3; + double alpha[2] = {0, 0.1}; + double A[] = { 0.993, 0.709, 0.225, -0.704, -0.396, 0.656, -0.588, -0.085, -0.024, 0.264, -0.988, -0.67, 0.665, -0.165, -0.778, -0.43, 0.71, -0.35 }; + int lda = 3; + double B[] = { 0.321, 0.614, 0.058, 0.983, 0.153, -0.647, 0.342, -0.518, -0.071, -0.533, -0.424, 0.283 }; + int ldb = 2; + double B_expected[] = { -0.0861992, -0.0396692, -0.155091, -0.1119744, -0.0501124, -0.0006816, -0.0064866, 0.0580106, 0.035358, -0.023696, -0.034933, -0.020199 }; + cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1802) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1802) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 121; + int trans = 112; + int diag = 132; + int M = 2; + int N = 3; + double alpha[2] = {0, 0.1}; + double A[] = { 0.034, -0.02, -0.401, -0.892, 0.329, -0.799, -0.018, 0.564, 0.095, 0.965, -0.105, 0.756, -0.583, -0.706, -0.436, -0.145, 0.921, 0.416 }; + int lda = 3; + double B[] = { 0.972, 0.157, -0.029, 0.674, 0.914, 0.434, 0.132, -0.116, -0.907, 0.316, -0.423, 0.321 }; + int ldb = 2; + double B_expected[] = { -0.1120798, 0.1462649, -0.0862031, 0.0507283, -0.0427739, 0.1355272, 0.0194621, 0.0362973, -0.0316, -0.0907, -0.0321, -0.0423 }; + cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1803) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1803) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 122; + int trans = 112; + int diag = 131; + int M = 2; + int N = 3; + double alpha[2] = {0, 0.1}; + double A[] = { -0.195, -0.36, 0.834, -0.505, -0.87, -0.787, 0.997, 0.965, -0.046, -0.591, 0.082, 0.552, 0.414, -0.013, -0.048, -0.766, 0.728, 0.088 }; + int lda = 3; + double B[] = { -0.916, -0.162, -0.863, 0.67, -0.079, -0.27, -0.191, 0.995, 0.981, -0.25, -0.149, 0.248 }; + int ldb = 2; + double B_expected[] = { -0.036135, 0.01203, -0.018003, 0.0409485, -0.0386581, -0.100169, -0.1061706, 0.0215439, -0.0700412, 0.1548156, -0.0239871, 0.0582902 }; + cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1804) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1804) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 122; + int trans = 112; + int diag = 132; + int M = 2; + int N = 3; + double alpha[2] = {0, 0.1}; + double A[] = { 0.553, -0.63, -0.079, 0.351, 0.865, -0.062, 0.165, -0.634, -0.513, 0.216, -0.521, 0.349, 0.54, 0.545, -0.719, -0.306, 0.501, 0.757 }; + int lda = 3; + double B[] = { -0.311, 0.088, -0.328, 0.977, 0.659, -0.06, -0.276, 0.872, -0.734, -0.01, -0.668, -0.327 }; + int ldb = 2; + double B_expected[] = { -0.0088, -0.0311, -0.0977, -0.0328, 0.0176113, 0.0652681, -0.0679689, -0.0593015, -0.0346653, -0.1319958, 0.0012195, -0.1051678 }; + cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1805) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1805) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 121; + int trans = 113; + int diag = 131; + int M = 2; + int N = 3; + double alpha[2] = {0, 1}; + double A[] = { 0.993, -0.018, 0.162, -0.222, 0.188, 0.672, -0.675, -0.345 }; + int lda = 2; + double B[] = { 0.476, -0.009, 0.725, -0.925, -0.245, 0.308, 0.515, 0.1, -0.072, -0.757, 0.212, 0.571 }; + int ldb = 3; + double B_expected[] = { 0.000369, 0.47283, 0.905475, 0.736575, -0.301434, -0.248829, -0.214389, -0.303015, -0.497235, 0.632565, 0.316779, -0.448161 }; + cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1806) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1806) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 121; + int trans = 113; + int diag = 132; + int M = 2; + int N = 3; + double alpha[2] = {0, 1}; + double A[] = { -0.78, 0.346, -0.663, -0.86, -0.496, -0.154, 0.356, 0.228 }; + int lda = 2; + double B[] = { 0.578, 0.492, 0.775, 0.353, 0.198, -0.519, -0.52, -0.677, -0.438, 0.313, 0.941, -0.56 }; + int ldb = 3; + double B_expected[] = { -0.492, 0.578, -0.353, 0.775, 0.519, 0.198, 0.506116, -1.326334, -0.745461, -1.255405, 0.045623, 1.256066 }; + cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1807) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1807) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 122; + int trans = 113; + int diag = 131; + int M = 2; + int N = 3; + double alpha[2] = {0, 1}; + double A[] = { 0.455, 0.442, 0.062, 0.815, 0.03, 0.55, 0.592, -0.487 }; + int lda = 2; + double B[] = { -0.451, 0.01, 0.174, -0.775, 0.22, -0.644, 0.858, -0.004, 0.59, -0.395, -0.943, 0.824 }; + int ldb = 3; + double B_expected[] = { 0.268128, -0.177245, 0.765883, -0.46293, -0.15311, 0.240362, -0.415478, 0.509884, -0.05349, 0.541645, -0.028567, -0.959544 }; + cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1808) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1808) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 122; + int trans = 113; + int diag = 132; + int M = 2; + int N = 3; + double alpha[2] = {0, 1}; + double A[] = { -0.268, -0.886, -0.805, 0.875, 0.481, 0.095, -0.057, 0.605 }; + int lda = 2; + double B[] = { 0.708, -0.638, 0.408, -0.512, 0.175, 0.181, -0.919, -0.126, 0.708, -0.51, 0.212, 0.114 }; + int ldb = 3; + double B_expected[] = { 0.611301, 0.253991, 0.82457, 0.700098, -0.215694, 0.287802, 0.126, -0.919, 0.51, 0.708, -0.114, 0.212 }; + cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1809) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1809) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 121; + int trans = 113; + int diag = 131; + int M = 2; + int N = 3; + double alpha[2] = {0, 1}; + double A[] = { 0.881, 0.555, 0.774, 0.148, -0.915, 0.336, 0.103, 0.381 }; + int lda = 2; + double B[] = { 0.163, 0.963, -0.017, 0.921, 0.809, 0.846, 0.905, -0.43, 0.894, -0.371, -0.988, -0.487 }; + int ldb = 2; + double B_expected[] = { -0.757938, 0.678068, 0.834573, 0.523573, -0.296331, 1.182259, 1.435009, -0.526594, 0.823021, 0.581709, -0.365348, -1.229977 }; + cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1810) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1810) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 121; + int trans = 113; + int diag = 132; + int M = 2; + int N = 3; + double alpha[2] = {0, 1}; + double A[] = { 0.719, -0.513, 0.169, -0.524, 0.352, 0.823, -0.741, -0.355 }; + int lda = 2; + double B[] = { 0.717, 0.052, -0.777, 0.277, -0.962, 0.894, 0.905, -0.216, -0.707, 0.016, 0.481, 0.935 }; + int ldb = 2; + double B_expected[] = { -0.052, 0.717, 0.294787, -0.48182, -0.894, -0.962, -0.890414, 1.302138, -0.016, -0.707, -1.522493, 0.245304 }; + cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1811) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1811) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 122; + int trans = 113; + int diag = 131; + int M = 2; + int N = 3; + double alpha[2] = {0, 1}; + double A[] = { 0.501, -0.136, -0.502, 0.669, -0.498, -0.4, -0.518, 0.833 }; + int lda = 2; + double B[] = { -0.385, 0.88, 0.726, 0.911, 0.839, 0.573, -0.881, -0.517, -0.861, -0.278, 0.941, 0.822 }; + int ldb = 2; + double B_expected[] = { 0.554496, -0.067558, 1.076656, 0.382795, -1.2501, 0.4388, -1.001679, 0.025697, 1.298547, -0.316017, 1.209649, 0.197288 }; + cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1812) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1812) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 122; + int trans = 113; + int diag = 132; + int M = 2; + int N = 3; + double alpha[2] = {0, 1}; + double A[] = { 0.049, 0.641, -0.9, 0.246, -0.734, -0.686, 0.76, -0.869 }; + int lda = 2; + double B[] = { -0.37, 0.206, -0.731, -0.573, 0.638, -0.417, -0.29, -0.719, 0.107, -0.333, 0.556, 0.124 }; + int ldb = 2; + double B_expected[] = { -0.901526, 0.146942, 0.573, -0.731, -0.30144, 0.722126, 0.719, -0.29, 0.581376, -0.362896, -0.124, 0.556 }; + cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1813) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1813) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 121; + int trans = 113; + int diag = 131; + int M = 2; + int N = 3; + double alpha[2] = {0, 1}; + double A[] = { 0.553, 0.338, 0.229, -0.828, -0.594, -0.036, -0.335, -0.249, 0.083, -0.197, 0.995, 0.85, -0.988, 0.596, -0.254, 0.179, 0.441, -0.859 }; + int lda = 3; + double B[] = { -0.058, -0.225, 0.884, 0.348, 0.123, -0.151, 0.891, 0.711, -0.792, 0.552, 0.033, -0.178 }; + int ldb = 3; + double B_expected[] = { -0.800945, -0.261458, 0.051763, -0.001149, -0.039066, 0.183952, 0.330423, 0.081423, 0.315368, -0.292945, 0.050151, 0.167455 }; + cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1814) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1814) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 121; + int trans = 113; + int diag = 132; + int M = 2; + int N = 3; + double alpha[2] = {0, 1}; + double A[] = { -0.257, -0.565, -0.123, 0.129, 0.817, -0.516, -0.613, -0.42, -0.494, 0.122, -0.593, -0.972, -0.695, -0.968, 0.848, -0.2, -0.17, 0.436 }; + int lda = 3; + double B[] = { -0.274, 0.105, -0.899, -0.33, -0.318, -0.096, -0.237, 0.327, 0.046, 0.584, -0.459, -0.182 }; + int ldb = 3; + double B_expected[] = { -0.019041, -0.416263, 0.582168, -0.617114, 0.096, -0.318, 0.136304, -0.448413, -0.245778, 0.495091, 0.182, -0.459 }; + cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1815) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1815) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 122; + int trans = 113; + int diag = 131; + int M = 2; + int N = 3; + double alpha[2] = {0, 1}; + double A[] = { -0.127, 0.025, 0.036, 0.612, 0.773, 0.953, 0.074, -0.006, 0.373, 0.292, -0.052, -0.319, -0.878, -0.401, 0.486, -0.493, -0.316, 0.003 }; + int lda = 3; + double B[] = { 0.794, -0.666, -0.406, 0.622, -0.512, -0.761, 0.161, -0.137, -0.626, 0.408, 0.536, 0.66 }; + int ldb = 3; + double B_expected[] = { -0.064732, -0.117488, -0.306038, 0.092938, -1.247288, -0.774519, -0.013374, -0.023872, -0.325804, -0.101626, 0.135651, -0.759197 }; + cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1816) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1816) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 122; + int trans = 113; + int diag = 132; + int M = 2; + int N = 3; + double alpha[2] = {0, 1}; + double A[] = { -0.724, -0.423, 0.028, 0.043, 0.812, -0.568, 0.294, -0.375, -0.85, -0.119, -0.338, -0.415, 0.976, 0.507, 0.913, 0.697, 0.323, 0.206 }; + int lda = 3; + double B[] = { 0.427, 0.621, -0.212, -0.942, -0.08, 0.416, 0.465, -0.972, -0.529, -0.252, -0.19, 0.073 }; + int ldb = 3; + double B_expected[] = { -0.621, 0.427, 0.599301, -0.319337, -0.093325, -0.198531, 0.972, 0.465, 0.363393, -0.02779, 0.97279, -0.887585 }; + cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1817) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1817) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 121; + int trans = 113; + int diag = 131; + int M = 2; + int N = 3; + double alpha[2] = {0, 1}; + double A[] = { 0.501, -0.632, 0.663, 0.151, -0.523, -0.71, -0.811, 0.8, -0.06, 0.994, -0.962, 0.827, -0.543, 0.719, -0.264, -0.942, 0.365, 0.051 }; + int lda = 3; + double B[] = { -0.974, 0.094, -0.533, 0.633, -0.982, -0.383, -0.297, 0.734, -0.092, -0.15, 0.215, -0.232 }; + int ldb = 2; + double B_expected[] = { -0.675337, -0.115274, 0.406006, -0.122575, -0.952024, -0.156194, -0.514956, 0.9092, 0.050058, -0.04123, 0.095645, 0.066643 }; + cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1818) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1818) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 121; + int trans = 113; + int diag = 132; + int M = 2; + int N = 3; + double alpha[2] = {0, 1}; + double A[] = { 0.669, 0.332, -0.661, 0.611, 0.279, -0.133, -0.033, 0.06, 0.788, -0.407, -0.644, 0.958, 0.247, -0.161, 0.125, -0.184, 0.041, -0.045 }; + int lda = 3; + double B[] = { -0.603, 0.88, 0.668, -0.152, 0.082, 0.033, 0.733, -0.557, 0.722, 0.024, -0.754, 0.458 }; + int ldb = 2; + double B_expected[] = { -0.996161, -0.429256, 0.185867, 0.350415, -0.168848, 0.167834, 0.638486, 0.554478, -0.024, 0.722, -0.458, -0.754 }; + cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1819) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1819) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 122; + int trans = 113; + int diag = 131; + int M = 2; + int N = 3; + double alpha[2] = {0, 1}; + double A[] = { -0.91, 0.05, -0.944, 0.748, -0.712, 0.619, -0.28, -0.906, 0.314, 0.943, -0.719, -0.983, 0.474, -0.115, -0.859, 0.837, 0.364, -0.164 }; + int lda = 3; + double B[] = { -0.278, -0.34, 0.584, 0.43, -0.794, -0.465, -0.65, 0.461, 0.24, 0.003, 0.948, -0.778 }; + int ldb = 2; + double B_expected[] = { -0.3233, 0.23598, 0.4205, -0.50994, -1.131636, -0.679699, 0.085048, 0.000967, -0.008447, 1.102325, 1.765785, 0.337213 }; + cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1820) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1820) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 122; + int trans = 113; + int diag = 132; + int M = 2; + int N = 3; + double alpha[2] = {0, 1}; + double A[] = { -0.39, -0.916, 0.257, -0.082, -0.802, 0.215, -0.155, 0.911, -0.099, 0.41, 0.057, 0.105, 0.94, -0.17, -0.714, -0.861, 0.292, -0.231 }; + int lda = 3; + double B[] = { -0.453, -0.542, 0.135, 0.518, -0.199, 0.776, 0.784, -0.28, -0.499, -0.377, -0.795, -0.965 }; + int ldb = 2; + double B_expected[] = { 0.542, -0.453, -0.518, 0.135, -0.59956, -0.270977, 0.135804, 0.776219, -0.220206, -0.182087, 1.507741, -0.776612 }; + cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1821) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1821) imag"); + }; + }; + }; + + +} diff --git a/gsl-2.5/cblas/test_trmv.c b/gsl-2.5/cblas/test_trmv.c new file mode 100644 index 00000000..312df898 --- /dev/null +++ b/gsl-2.5/cblas/test_trmv.c @@ -0,0 +1,1739 @@ +#include +#include +#include +#include + +#include "tests.h" + +void +test_trmv (void) { +const double flteps = 1e-4, dbleps = 1e-6; + { + int order = 101; + int trans = 111; + int uplo = 121; + int diag = 131; + int N = 1; + int lda = 1; + float A[] = { 0.987f }; + float X[] = { -0.138f }; + int incX = -1; + float x_expected[] = { -0.136206f }; + cblas_strmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "strmv(case 814)"); + } + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 121; + int diag = 132; + int N = 1; + int lda = 1; + float A[] = { 0.987f }; + float X[] = { -0.138f }; + int incX = -1; + float x_expected[] = { -0.138f }; + cblas_strmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "strmv(case 815)"); + } + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 122; + int diag = 131; + int N = 1; + int lda = 1; + float A[] = { 0.987f }; + float X[] = { -0.138f }; + int incX = -1; + float x_expected[] = { -0.136206f }; + cblas_strmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "strmv(case 816)"); + } + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 122; + int diag = 132; + int N = 1; + int lda = 1; + float A[] = { 0.987f }; + float X[] = { -0.138f }; + int incX = -1; + float x_expected[] = { -0.138f }; + cblas_strmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "strmv(case 817)"); + } + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 121; + int diag = 131; + int N = 1; + int lda = 1; + float A[] = { 0.987f }; + float X[] = { -0.138f }; + int incX = -1; + float x_expected[] = { -0.136206f }; + cblas_strmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "strmv(case 818)"); + } + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 121; + int diag = 132; + int N = 1; + int lda = 1; + float A[] = { 0.987f }; + float X[] = { -0.138f }; + int incX = -1; + float x_expected[] = { -0.138f }; + cblas_strmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "strmv(case 819)"); + } + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 122; + int diag = 131; + int N = 1; + int lda = 1; + float A[] = { 0.987f }; + float X[] = { -0.138f }; + int incX = -1; + float x_expected[] = { -0.136206f }; + cblas_strmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "strmv(case 820)"); + } + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 122; + int diag = 132; + int N = 1; + int lda = 1; + float A[] = { 0.987f }; + float X[] = { -0.138f }; + int incX = -1; + float x_expected[] = { -0.138f }; + cblas_strmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "strmv(case 821)"); + } + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 121; + int diag = 131; + int N = 1; + int lda = 1; + float A[] = { -0.329f }; + float X[] = { 0.463f }; + int incX = -1; + float x_expected[] = { -0.152327f }; + cblas_strmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "strmv(case 822)"); + } + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 121; + int diag = 132; + int N = 1; + int lda = 1; + float A[] = { -0.329f }; + float X[] = { 0.463f }; + int incX = -1; + float x_expected[] = { 0.463f }; + cblas_strmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "strmv(case 823)"); + } + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 122; + int diag = 131; + int N = 1; + int lda = 1; + float A[] = { -0.329f }; + float X[] = { 0.463f }; + int incX = -1; + float x_expected[] = { -0.152327f }; + cblas_strmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "strmv(case 824)"); + } + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 122; + int diag = 132; + int N = 1; + int lda = 1; + float A[] = { -0.329f }; + float X[] = { 0.463f }; + int incX = -1; + float x_expected[] = { 0.463f }; + cblas_strmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "strmv(case 825)"); + } + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 121; + int diag = 131; + int N = 1; + int lda = 1; + float A[] = { -0.329f }; + float X[] = { 0.463f }; + int incX = -1; + float x_expected[] = { -0.152327f }; + cblas_strmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "strmv(case 826)"); + } + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 121; + int diag = 132; + int N = 1; + int lda = 1; + float A[] = { -0.329f }; + float X[] = { 0.463f }; + int incX = -1; + float x_expected[] = { 0.463f }; + cblas_strmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "strmv(case 827)"); + } + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 122; + int diag = 131; + int N = 1; + int lda = 1; + float A[] = { -0.329f }; + float X[] = { 0.463f }; + int incX = -1; + float x_expected[] = { -0.152327f }; + cblas_strmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "strmv(case 828)"); + } + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 122; + int diag = 132; + int N = 1; + int lda = 1; + float A[] = { -0.329f }; + float X[] = { 0.463f }; + int incX = -1; + float x_expected[] = { 0.463f }; + cblas_strmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "strmv(case 829)"); + } + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 121; + int diag = 131; + int N = 1; + int lda = 1; + double A[] = { -0.429 }; + double X[] = { -0.899 }; + int incX = -1; + double x_expected[] = { 0.385671 }; + cblas_dtrmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtrmv(case 830)"); + } + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 121; + int diag = 132; + int N = 1; + int lda = 1; + double A[] = { -0.429 }; + double X[] = { -0.899 }; + int incX = -1; + double x_expected[] = { -0.899 }; + cblas_dtrmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtrmv(case 831)"); + } + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 122; + int diag = 131; + int N = 1; + int lda = 1; + double A[] = { -0.429 }; + double X[] = { -0.899 }; + int incX = -1; + double x_expected[] = { 0.385671 }; + cblas_dtrmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtrmv(case 832)"); + } + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 122; + int diag = 132; + int N = 1; + int lda = 1; + double A[] = { -0.429 }; + double X[] = { -0.899 }; + int incX = -1; + double x_expected[] = { -0.899 }; + cblas_dtrmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtrmv(case 833)"); + } + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 121; + int diag = 131; + int N = 1; + int lda = 1; + double A[] = { -0.429 }; + double X[] = { -0.899 }; + int incX = -1; + double x_expected[] = { 0.385671 }; + cblas_dtrmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtrmv(case 834)"); + } + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 121; + int diag = 132; + int N = 1; + int lda = 1; + double A[] = { -0.429 }; + double X[] = { -0.899 }; + int incX = -1; + double x_expected[] = { -0.899 }; + cblas_dtrmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtrmv(case 835)"); + } + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 122; + int diag = 131; + int N = 1; + int lda = 1; + double A[] = { -0.429 }; + double X[] = { -0.899 }; + int incX = -1; + double x_expected[] = { 0.385671 }; + cblas_dtrmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtrmv(case 836)"); + } + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 122; + int diag = 132; + int N = 1; + int lda = 1; + double A[] = { -0.429 }; + double X[] = { -0.899 }; + int incX = -1; + double x_expected[] = { -0.899 }; + cblas_dtrmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtrmv(case 837)"); + } + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 121; + int diag = 131; + int N = 1; + int lda = 1; + double A[] = { 0.842 }; + double X[] = { 0.192 }; + int incX = -1; + double x_expected[] = { 0.161664 }; + cblas_dtrmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtrmv(case 838)"); + } + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 121; + int diag = 132; + int N = 1; + int lda = 1; + double A[] = { 0.842 }; + double X[] = { 0.192 }; + int incX = -1; + double x_expected[] = { 0.192 }; + cblas_dtrmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtrmv(case 839)"); + } + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 122; + int diag = 131; + int N = 1; + int lda = 1; + double A[] = { 0.842 }; + double X[] = { 0.192 }; + int incX = -1; + double x_expected[] = { 0.161664 }; + cblas_dtrmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtrmv(case 840)"); + } + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 122; + int diag = 132; + int N = 1; + int lda = 1; + double A[] = { 0.842 }; + double X[] = { 0.192 }; + int incX = -1; + double x_expected[] = { 0.192 }; + cblas_dtrmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtrmv(case 841)"); + } + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 121; + int diag = 131; + int N = 1; + int lda = 1; + double A[] = { 0.842 }; + double X[] = { 0.192 }; + int incX = -1; + double x_expected[] = { 0.161664 }; + cblas_dtrmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtrmv(case 842)"); + } + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 121; + int diag = 132; + int N = 1; + int lda = 1; + double A[] = { 0.842 }; + double X[] = { 0.192 }; + int incX = -1; + double x_expected[] = { 0.192 }; + cblas_dtrmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtrmv(case 843)"); + } + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 122; + int diag = 131; + int N = 1; + int lda = 1; + double A[] = { 0.842 }; + double X[] = { 0.192 }; + int incX = -1; + double x_expected[] = { 0.161664 }; + cblas_dtrmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtrmv(case 844)"); + } + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 122; + int diag = 132; + int N = 1; + int lda = 1; + double A[] = { 0.842 }; + double X[] = { 0.192 }; + int incX = -1; + double x_expected[] = { 0.192 }; + cblas_dtrmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtrmv(case 845)"); + } + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 121; + int diag = 131; + int N = 1; + int lda = 1; + float A[] = { -0.162f, -0.108f }; + float X[] = { 0.542f, 0.461f }; + int incX = -1; + float x_expected[] = { -0.038016f, -0.133218f }; + cblas_ctrmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctrmv(case 846) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctrmv(case 846) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 121; + int diag = 132; + int N = 1; + int lda = 1; + float A[] = { -0.162f, -0.108f }; + float X[] = { 0.542f, 0.461f }; + int incX = -1; + float x_expected[] = { 0.542f, 0.461f }; + cblas_ctrmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctrmv(case 847) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctrmv(case 847) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 122; + int diag = 131; + int N = 1; + int lda = 1; + float A[] = { -0.162f, -0.108f }; + float X[] = { 0.542f, 0.461f }; + int incX = -1; + float x_expected[] = { -0.038016f, -0.133218f }; + cblas_ctrmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctrmv(case 848) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctrmv(case 848) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 122; + int diag = 132; + int N = 1; + int lda = 1; + float A[] = { -0.162f, -0.108f }; + float X[] = { 0.542f, 0.461f }; + int incX = -1; + float x_expected[] = { 0.542f, 0.461f }; + cblas_ctrmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctrmv(case 849) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctrmv(case 849) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 121; + int diag = 131; + int N = 1; + int lda = 1; + float A[] = { -0.162f, -0.108f }; + float X[] = { 0.542f, 0.461f }; + int incX = -1; + float x_expected[] = { -0.038016f, -0.133218f }; + cblas_ctrmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctrmv(case 850) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctrmv(case 850) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 121; + int diag = 132; + int N = 1; + int lda = 1; + float A[] = { -0.162f, -0.108f }; + float X[] = { 0.542f, 0.461f }; + int incX = -1; + float x_expected[] = { 0.542f, 0.461f }; + cblas_ctrmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctrmv(case 851) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctrmv(case 851) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 122; + int diag = 131; + int N = 1; + int lda = 1; + float A[] = { -0.162f, -0.108f }; + float X[] = { 0.542f, 0.461f }; + int incX = -1; + float x_expected[] = { -0.038016f, -0.133218f }; + cblas_ctrmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctrmv(case 852) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctrmv(case 852) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 122; + int diag = 132; + int N = 1; + int lda = 1; + float A[] = { -0.162f, -0.108f }; + float X[] = { 0.542f, 0.461f }; + int incX = -1; + float x_expected[] = { 0.542f, 0.461f }; + cblas_ctrmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctrmv(case 853) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctrmv(case 853) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 121; + int diag = 131; + int N = 1; + int lda = 1; + float A[] = { 0.547f, 0.583f }; + float X[] = { -0.302f, 0.434f }; + int incX = -1; + float x_expected[] = { -0.418216f, 0.061332f }; + cblas_ctrmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctrmv(case 854) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctrmv(case 854) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 121; + int diag = 132; + int N = 1; + int lda = 1; + float A[] = { 0.547f, 0.583f }; + float X[] = { -0.302f, 0.434f }; + int incX = -1; + float x_expected[] = { -0.302f, 0.434f }; + cblas_ctrmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctrmv(case 855) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctrmv(case 855) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 122; + int diag = 131; + int N = 1; + int lda = 1; + float A[] = { 0.547f, 0.583f }; + float X[] = { -0.302f, 0.434f }; + int incX = -1; + float x_expected[] = { -0.418216f, 0.061332f }; + cblas_ctrmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctrmv(case 856) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctrmv(case 856) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 122; + int diag = 132; + int N = 1; + int lda = 1; + float A[] = { 0.547f, 0.583f }; + float X[] = { -0.302f, 0.434f }; + int incX = -1; + float x_expected[] = { -0.302f, 0.434f }; + cblas_ctrmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctrmv(case 857) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctrmv(case 857) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 121; + int diag = 131; + int N = 1; + int lda = 1; + float A[] = { 0.547f, 0.583f }; + float X[] = { -0.302f, 0.434f }; + int incX = -1; + float x_expected[] = { -0.418216f, 0.061332f }; + cblas_ctrmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctrmv(case 858) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctrmv(case 858) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 121; + int diag = 132; + int N = 1; + int lda = 1; + float A[] = { 0.547f, 0.583f }; + float X[] = { -0.302f, 0.434f }; + int incX = -1; + float x_expected[] = { -0.302f, 0.434f }; + cblas_ctrmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctrmv(case 859) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctrmv(case 859) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 122; + int diag = 131; + int N = 1; + int lda = 1; + float A[] = { 0.547f, 0.583f }; + float X[] = { -0.302f, 0.434f }; + int incX = -1; + float x_expected[] = { -0.418216f, 0.061332f }; + cblas_ctrmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctrmv(case 860) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctrmv(case 860) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 122; + int diag = 132; + int N = 1; + int lda = 1; + float A[] = { 0.547f, 0.583f }; + float X[] = { -0.302f, 0.434f }; + int incX = -1; + float x_expected[] = { -0.302f, 0.434f }; + cblas_ctrmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctrmv(case 861) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctrmv(case 861) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 113; + int uplo = 121; + int diag = 131; + int N = 1; + int lda = 1; + float A[] = { 0.216f, 0.192f }; + float X[] = { -0.564f, -0.297f }; + int incX = -1; + float x_expected[] = { -0.178848f, 0.044136f }; + cblas_ctrmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctrmv(case 862) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctrmv(case 862) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 113; + int uplo = 121; + int diag = 132; + int N = 1; + int lda = 1; + float A[] = { 0.216f, 0.192f }; + float X[] = { -0.564f, -0.297f }; + int incX = -1; + float x_expected[] = { -0.564f, -0.297f }; + cblas_ctrmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctrmv(case 863) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctrmv(case 863) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 113; + int uplo = 122; + int diag = 131; + int N = 1; + int lda = 1; + float A[] = { 0.216f, 0.192f }; + float X[] = { -0.564f, -0.297f }; + int incX = -1; + float x_expected[] = { -0.178848f, 0.044136f }; + cblas_ctrmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctrmv(case 864) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctrmv(case 864) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 113; + int uplo = 122; + int diag = 132; + int N = 1; + int lda = 1; + float A[] = { 0.216f, 0.192f }; + float X[] = { -0.564f, -0.297f }; + int incX = -1; + float x_expected[] = { -0.564f, -0.297f }; + cblas_ctrmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctrmv(case 865) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctrmv(case 865) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 113; + int uplo = 121; + int diag = 131; + int N = 1; + int lda = 1; + float A[] = { 0.216f, 0.192f }; + float X[] = { -0.564f, -0.297f }; + int incX = -1; + float x_expected[] = { -0.178848f, 0.044136f }; + cblas_ctrmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctrmv(case 866) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctrmv(case 866) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 113; + int uplo = 121; + int diag = 132; + int N = 1; + int lda = 1; + float A[] = { 0.216f, 0.192f }; + float X[] = { -0.564f, -0.297f }; + int incX = -1; + float x_expected[] = { -0.564f, -0.297f }; + cblas_ctrmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctrmv(case 867) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctrmv(case 867) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 113; + int uplo = 122; + int diag = 131; + int N = 1; + int lda = 1; + float A[] = { 0.216f, 0.192f }; + float X[] = { -0.564f, -0.297f }; + int incX = -1; + float x_expected[] = { -0.178848f, 0.044136f }; + cblas_ctrmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctrmv(case 868) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctrmv(case 868) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 113; + int uplo = 122; + int diag = 132; + int N = 1; + int lda = 1; + float A[] = { 0.216f, 0.192f }; + float X[] = { -0.564f, -0.297f }; + int incX = -1; + float x_expected[] = { -0.564f, -0.297f }; + cblas_ctrmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctrmv(case 869) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctrmv(case 869) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 121; + int diag = 131; + int N = 1; + int lda = 1; + double A[] = { 0.693, -0.22 }; + double X[] = { -0.101, 0.889 }; + int incX = -1; + double x_expected[] = { 0.125587, 0.638297 }; + cblas_ztrmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztrmv(case 870) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztrmv(case 870) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 121; + int diag = 132; + int N = 1; + int lda = 1; + double A[] = { 0.693, -0.22 }; + double X[] = { -0.101, 0.889 }; + int incX = -1; + double x_expected[] = { -0.101, 0.889 }; + cblas_ztrmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztrmv(case 871) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztrmv(case 871) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 122; + int diag = 131; + int N = 1; + int lda = 1; + double A[] = { 0.693, -0.22 }; + double X[] = { -0.101, 0.889 }; + int incX = -1; + double x_expected[] = { 0.125587, 0.638297 }; + cblas_ztrmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztrmv(case 872) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztrmv(case 872) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 122; + int diag = 132; + int N = 1; + int lda = 1; + double A[] = { 0.693, -0.22 }; + double X[] = { -0.101, 0.889 }; + int incX = -1; + double x_expected[] = { -0.101, 0.889 }; + cblas_ztrmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztrmv(case 873) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztrmv(case 873) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 121; + int diag = 131; + int N = 1; + int lda = 1; + double A[] = { 0.693, -0.22 }; + double X[] = { -0.101, 0.889 }; + int incX = -1; + double x_expected[] = { 0.125587, 0.638297 }; + cblas_ztrmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztrmv(case 874) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztrmv(case 874) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 121; + int diag = 132; + int N = 1; + int lda = 1; + double A[] = { 0.693, -0.22 }; + double X[] = { -0.101, 0.889 }; + int incX = -1; + double x_expected[] = { -0.101, 0.889 }; + cblas_ztrmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztrmv(case 875) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztrmv(case 875) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 122; + int diag = 131; + int N = 1; + int lda = 1; + double A[] = { 0.693, -0.22 }; + double X[] = { -0.101, 0.889 }; + int incX = -1; + double x_expected[] = { 0.125587, 0.638297 }; + cblas_ztrmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztrmv(case 876) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztrmv(case 876) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 122; + int diag = 132; + int N = 1; + int lda = 1; + double A[] = { 0.693, -0.22 }; + double X[] = { -0.101, 0.889 }; + int incX = -1; + double x_expected[] = { -0.101, 0.889 }; + cblas_ztrmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztrmv(case 877) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztrmv(case 877) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 121; + int diag = 131; + int N = 1; + int lda = 1; + double A[] = { -0.216, -0.623 }; + double X[] = { 0.048, 0.293 }; + int incX = -1; + double x_expected[] = { 0.172171, -0.093192 }; + cblas_ztrmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztrmv(case 878) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztrmv(case 878) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 121; + int diag = 132; + int N = 1; + int lda = 1; + double A[] = { -0.216, -0.623 }; + double X[] = { 0.048, 0.293 }; + int incX = -1; + double x_expected[] = { 0.048, 0.293 }; + cblas_ztrmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztrmv(case 879) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztrmv(case 879) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 122; + int diag = 131; + int N = 1; + int lda = 1; + double A[] = { -0.216, -0.623 }; + double X[] = { 0.048, 0.293 }; + int incX = -1; + double x_expected[] = { 0.172171, -0.093192 }; + cblas_ztrmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztrmv(case 880) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztrmv(case 880) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 122; + int diag = 132; + int N = 1; + int lda = 1; + double A[] = { -0.216, -0.623 }; + double X[] = { 0.048, 0.293 }; + int incX = -1; + double x_expected[] = { 0.048, 0.293 }; + cblas_ztrmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztrmv(case 881) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztrmv(case 881) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 121; + int diag = 131; + int N = 1; + int lda = 1; + double A[] = { -0.216, -0.623 }; + double X[] = { 0.048, 0.293 }; + int incX = -1; + double x_expected[] = { 0.172171, -0.093192 }; + cblas_ztrmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztrmv(case 882) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztrmv(case 882) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 121; + int diag = 132; + int N = 1; + int lda = 1; + double A[] = { -0.216, -0.623 }; + double X[] = { 0.048, 0.293 }; + int incX = -1; + double x_expected[] = { 0.048, 0.293 }; + cblas_ztrmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztrmv(case 883) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztrmv(case 883) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 122; + int diag = 131; + int N = 1; + int lda = 1; + double A[] = { -0.216, -0.623 }; + double X[] = { 0.048, 0.293 }; + int incX = -1; + double x_expected[] = { 0.172171, -0.093192 }; + cblas_ztrmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztrmv(case 884) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztrmv(case 884) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 122; + int diag = 132; + int N = 1; + int lda = 1; + double A[] = { -0.216, -0.623 }; + double X[] = { 0.048, 0.293 }; + int incX = -1; + double x_expected[] = { 0.048, 0.293 }; + cblas_ztrmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztrmv(case 885) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztrmv(case 885) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 113; + int uplo = 121; + int diag = 131; + int N = 1; + int lda = 1; + double A[] = { -0.345, -0.851 }; + double X[] = { -0.708, 0.298 }; + int incX = -1; + double x_expected[] = { -0.009338, -0.705318 }; + cblas_ztrmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztrmv(case 886) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztrmv(case 886) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 113; + int uplo = 121; + int diag = 132; + int N = 1; + int lda = 1; + double A[] = { -0.345, -0.851 }; + double X[] = { -0.708, 0.298 }; + int incX = -1; + double x_expected[] = { -0.708, 0.298 }; + cblas_ztrmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztrmv(case 887) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztrmv(case 887) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 113; + int uplo = 122; + int diag = 131; + int N = 1; + int lda = 1; + double A[] = { -0.345, -0.851 }; + double X[] = { -0.708, 0.298 }; + int incX = -1; + double x_expected[] = { -0.009338, -0.705318 }; + cblas_ztrmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztrmv(case 888) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztrmv(case 888) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 113; + int uplo = 122; + int diag = 132; + int N = 1; + int lda = 1; + double A[] = { -0.345, -0.851 }; + double X[] = { -0.708, 0.298 }; + int incX = -1; + double x_expected[] = { -0.708, 0.298 }; + cblas_ztrmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztrmv(case 889) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztrmv(case 889) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 113; + int uplo = 121; + int diag = 131; + int N = 1; + int lda = 1; + double A[] = { -0.345, -0.851 }; + double X[] = { -0.708, 0.298 }; + int incX = -1; + double x_expected[] = { -0.009338, -0.705318 }; + cblas_ztrmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztrmv(case 890) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztrmv(case 890) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 113; + int uplo = 121; + int diag = 132; + int N = 1; + int lda = 1; + double A[] = { -0.345, -0.851 }; + double X[] = { -0.708, 0.298 }; + int incX = -1; + double x_expected[] = { -0.708, 0.298 }; + cblas_ztrmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztrmv(case 891) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztrmv(case 891) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 113; + int uplo = 122; + int diag = 131; + int N = 1; + int lda = 1; + double A[] = { -0.345, -0.851 }; + double X[] = { -0.708, 0.298 }; + int incX = -1; + double x_expected[] = { -0.009338, -0.705318 }; + cblas_ztrmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztrmv(case 892) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztrmv(case 892) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 113; + int uplo = 122; + int diag = 132; + int N = 1; + int lda = 1; + double A[] = { -0.345, -0.851 }; + double X[] = { -0.708, 0.298 }; + int incX = -1; + double x_expected[] = { -0.708, 0.298 }; + cblas_ztrmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztrmv(case 893) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztrmv(case 893) imag"); + }; + }; + }; + + +} diff --git a/gsl-2.5/cblas/test_trsm.c b/gsl-2.5/cblas/test_trsm.c new file mode 100644 index 00000000..eef55b32 --- /dev/null +++ b/gsl-2.5/cblas/test_trsm.c @@ -0,0 +1,3947 @@ +#include +#include +#include +#include + +#include "tests.h" + +void +test_trsm (void) { +const double flteps = 1e-4, dbleps = 1e-6; + { + int order = 101; + int side = 141; + int uplo = 121; + int trans = 111; + int diag = 131; + int M = 2; + int N = 3; + float alpha = -0.3f; + float A[] = { -0.279f, 0.058f, 0.437f, 0.462f }; + int lda = 2; + float B[] = { 0.578f, 0.473f, -0.34f, -0.128f, 0.503f, 0.2f }; + int ldb = 3; + float B_expected[] = { 0.638784f, 0.440702f, -0.392589f, 0.0831169f, -0.326623f, -0.12987f }; + cblas_strsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], flteps, "strsm(case 1822)"); + } + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 121; + int trans = 111; + int diag = 132; + int M = 2; + int N = 3; + float alpha = -0.3f; + float A[] = { -0.735f, -0.861f, 0.772f, -0.242f }; + int lda = 2; + float B[] = { -0.793f, -0.162f, -0.844f, 0.143f, -0.379f, -0.46f }; + int ldb = 3; + float B_expected[] = { 0.200963f, 0.146496f, 0.372018f, -0.0429f, 0.1137f, 0.138f }; + cblas_strsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], flteps, "strsm(case 1823)"); + } + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 122; + int trans = 111; + int diag = 131; + int M = 2; + int N = 3; + float alpha = -0.3f; + float A[] = { -0.498f, 0.777f, -0.913f, 0.779f }; + int lda = 2; + float B[] = { -0.831f, -0.663f, -0.098f, -0.894f, -0.059f, 0.468f }; + int ldb = 3; + float B_expected[] = { -0.500602f, -0.399398f, -0.0590361f, -0.242426f, -0.445379f, -0.249422f }; + cblas_strsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], flteps, "strsm(case 1824)"); + } + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 122; + int trans = 111; + int diag = 132; + int M = 2; + int N = 3; + float alpha = -0.3f; + float A[] = { -0.543f, 0.095f, -0.933f, -0.669f }; + int lda = 2; + float B[] = { 0.068f, 0.715f, 0.012f, -0.785f, 0.378f, 0.251f }; + int ldb = 3; + float B_expected[] = { -0.0204f, -0.2145f, -0.0036f, 0.216467f, -0.313528f, -0.0786588f }; + cblas_strsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], flteps, "strsm(case 1825)"); + } + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 121; + int trans = 111; + int diag = 131; + int M = 2; + int N = 3; + float alpha = -0.3f; + float A[] = { 0.75f, 0.777f, -0.025f, 0.572f }; + int lda = 2; + float B[] = { 0.03f, 0.392f, -0.056f, 0.399f, -0.489f, -0.167f }; + int ldb = 2; + float B_expected[] = { -0.0188531f, -0.205594f, 0.0154245f, -0.209266f, 0.19852f, 0.0875874f }; + cblas_strsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], flteps, "strsm(case 1826)"); + } + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 121; + int trans = 111; + int diag = 132; + int M = 2; + int N = 3; + float alpha = -0.3f; + float A[] = { 0.899f, -0.447f, 0.338f, -0.74f }; + int lda = 2; + float B[] = { 0.964f, -0.104f, -0.199f, 0.503f, -0.386f, -0.764f }; + int ldb = 2; + float B_expected[] = { -0.299746f, 0.0312f, 0.110704f, -0.1509f, 0.0383304f, 0.2292f }; + cblas_strsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], flteps, "strsm(case 1827)"); + } + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 122; + int trans = 111; + int diag = 131; + int M = 2; + int N = 3; + float alpha = -0.3f; + float A[] = { 0.279f, 0.73f, -0.366f, 0.583f }; + int lda = 2; + float B[] = { -0.572f, 0.75f, 0.603f, 0.697f, 0.908f, 0.119f }; + int ldb = 2; + float B_expected[] = { 0.615054f, -1.15607f, -0.648387f, 0.453212f, -0.976344f, 1.16129f }; + cblas_strsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], flteps, "strsm(case 1828)"); + } + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 122; + int trans = 111; + int diag = 132; + int M = 2; + int N = 3; + float alpha = -0.3f; + float A[] = { 0.581f, -0.911f, 0.438f, 0.731f }; + int lda = 2; + float B[] = { 0.519f, 0.831f, 0.822f, 0.182f, 0.571f, -0.357f }; + int ldb = 2; + float B_expected[] = { -0.1557f, -0.391143f, -0.2466f, -0.279253f, -0.1713f, -0.0489543f }; + cblas_strsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], flteps, "strsm(case 1829)"); + } + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 121; + int trans = 111; + int diag = 131; + int M = 2; + int N = 3; + float alpha = -0.3f; + float A[] = { 0.065f, 0.099f, 0.48f, 0.746f, -0.739f, 0.695f, 0.197f, 0.621f, 0.063f }; + int lda = 3; + float B[] = { 0.01f, -0.612f, 0.756f, -0.225f, 0.546f, 0.432f }; + int ldb = 3; + float B_expected[] = { -0.0461538f, -0.254627f, -0.439373f, 1.03846f, 0.360768f, -13.9491f }; + cblas_strsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], flteps, "strsm(case 1830)"); + } + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 121; + int trans = 111; + int diag = 132; + int M = 2; + int N = 3; + float alpha = -0.3f; + float A[] = { -0.86f, -0.653f, 0.87f, -0.037f, 0.788f, 0.015f, 0.028f, -0.804f, -0.357f }; + int lda = 3; + float B[] = { -0.546f, 0.892f, -0.085f, -0.541f, -0.207f, 0.765f }; + int ldb = 3; + float B_expected[] = { 0.1638f, -0.160639f, -0.114596f, 0.1623f, 0.168082f, -0.373222f }; + cblas_strsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], flteps, "strsm(case 1831)"); + } + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 122; + int trans = 111; + int diag = 131; + int M = 2; + int N = 3; + float alpha = -0.3f; + float A[] = { 0.872f, -0.35f, 0.518f, -0.8f, -0.13f, -0.832f, 0.426f, 0.195f, -0.735f }; + int lda = 3; + float B[] = { 0.773f, 0.069f, 0.45f, 0.189f, 0.504f, 0.996f }; + int ldb = 3; + float B_expected[] = { 0.0431742f, 0.434741f, 0.183673f, 1.36286f, 1.77287f, 0.406531f }; + cblas_strsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], flteps, "strsm(case 1832)"); + } + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 122; + int trans = 111; + int diag = 132; + int M = 2; + int N = 3; + float alpha = -0.3f; + float A[] = { -0.053f, -0.132f, -0.515f, -0.411f, 0.134f, 0.657f, 0.072f, -0.007f, -0.34f }; + int lda = 3; + float B[] = { 0.494f, 0.072f, -0.882f, -0.112f, 0.904f, 0.755f }; + int ldb = 3; + float B_expected[] = { -0.175368f, -0.0197478f, 0.2646f, -0.0622068f, -0.272786f, -0.2265f }; + cblas_strsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], flteps, "strsm(case 1833)"); + } + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 121; + int trans = 111; + int diag = 131; + int M = 2; + int N = 3; + float alpha = -0.3f; + float A[] = { -0.154f, -0.54f, 0.146f, -0.106f, -0.478f, 0.938f, -0.731f, 0.25f, -0.4f }; + int lda = 3; + float B[] = { -0.88f, -0.555f, 0.642f, 0.751f, -0.859f, -0.409f }; + int ldb = 2; + float B_expected[] = { -1.71429f, -1.08117f, 0.783084f, 0.711096f, 2.97803f, 2.11352f }; + cblas_strsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], flteps, "strsm(case 1834)"); + } + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 121; + int trans = 111; + int diag = 132; + int M = 2; + int N = 3; + float alpha = -0.3f; + float A[] = { 0.249f, -0.451f, -0.781f, 0.157f, -0.02f, 0.57f, 0.309f, -0.159f, 0.266f }; + int lda = 3; + float B[] = { -0.546f, 0.839f, 0.392f, -0.445f, -0.818f, 0.953f }; + int ldb = 2; + float B_expected[] = { 0.1638f, -0.2517f, -0.143317f, 0.173017f, 0.171998f, -0.180615f }; + cblas_strsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], flteps, "strsm(case 1835)"); + } + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 122; + int trans = 111; + int diag = 131; + int M = 2; + int N = 3; + float alpha = -0.3f; + float A[] = { 0.299f, 0.626f, -0.471f, 0.208f, -0.842f, 0.674f, 0.03f, 0.628f, 0.534f }; + int lda = 3; + float B[] = { 0.831f, -0.997f, -0.366f, 0.307f, -0.426f, 0.806f }; + int ldb = 2; + float B_expected[] = { -0.584851f, 0.816906f, 0.0611706f, -0.25308f, 0.239326f, -0.452809f }; + cblas_strsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], flteps, "strsm(case 1836)"); + } + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 122; + int trans = 111; + int diag = 132; + int M = 2; + int N = 3; + float alpha = -0.3f; + float A[] = { 0.301f, 0.168f, 0.934f, 0.107f, 0.068f, 0.384f, -0.201f, 0.116f, -0.436f }; + int lda = 3; + float B[] = { 0.773f, -0.304f, -0.402f, 0.642f, -0.102f, -0.095f }; + int ldb = 2; + float B_expected[] = { -0.278767f, 0.0987764f, 0.10885f, -0.203544f, 0.0306f, 0.0285f }; + cblas_strsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], flteps, "strsm(case 1837)"); + } + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 121; + int trans = 112; + int diag = 131; + int M = 2; + int N = 3; + float alpha = 1.0f; + float A[] = { -0.616f, 0.304f, 0.403f, 0.739f }; + int lda = 2; + float B[] = { 0.273f, -0.609f, 0.858f, 0.993f, -0.738f, -0.353f }; + int ldb = 3; + float B_expected[] = { -0.443182f, 0.988636f, -1.39286f, 1.52602f, -1.40534f, 0.0953025f }; + cblas_strsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], flteps, "strsm(case 1838)"); + } + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 121; + int trans = 112; + int diag = 132; + int M = 2; + int N = 3; + float alpha = 1.0f; + float A[] = { 0.811f, 0.257f, 0.98f, -0.956f }; + int lda = 2; + float B[] = { 0.996f, 0.329f, 0.273f, -0.744f, 0.662f, -0.31f }; + int ldb = 3; + float B_expected[] = { 0.996f, 0.329f, 0.273f, -0.999972f, 0.577447f, -0.380161f }; + cblas_strsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], flteps, "strsm(case 1839)"); + } + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 122; + int trans = 112; + int diag = 131; + int M = 2; + int N = 3; + float alpha = 1.0f; + float A[] = { 0.845f, 0.064f, 0.29f, -0.291f }; + int lda = 2; + float B[] = { 0.878f, 0.156f, 0.217f, 0.082f, -0.869f, 0.595f }; + int ldb = 3; + float B_expected[] = { 1.13576f, -0.840253f, 0.958527f, -0.281787f, 2.98625f, -2.04467f }; + cblas_strsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], flteps, "strsm(case 1840)"); + } + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 122; + int trans = 112; + int diag = 132; + int M = 2; + int N = 3; + float alpha = 1.0f; + float A[] = { 0.836f, 0.359f, -0.415f, 0.154f }; + int lda = 2; + float B[] = { 0.652f, 0.614f, 0.922f, -0.063f, 0.313f, -0.316f }; + int ldb = 3; + float B_expected[] = { 0.625855f, 0.743895f, 0.79086f, -0.063f, 0.313f, -0.316f }; + cblas_strsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], flteps, "strsm(case 1841)"); + } + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 121; + int trans = 112; + int diag = 131; + int M = 2; + int N = 3; + float alpha = 1.0f; + float A[] = { 0.94f, -0.656f, 0.645f, -0.634f }; + int lda = 2; + float B[] = { -0.948f, -0.596f, -0.799f, 0.133f, -0.843f, -0.179f }; + int ldb = 2; + float B_expected[] = { -1.00851f, -0.0859454f, -0.85f, -1.07453f, -0.896809f, -0.630034f }; + cblas_strsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], flteps, "strsm(case 1842)"); + } + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 121; + int trans = 112; + int diag = 132; + int M = 2; + int N = 3; + float alpha = 1.0f; + float A[] = { -0.332f, 0.705f, -0.792f, -0.033f }; + int lda = 2; + float B[] = { 0.561f, 0.883f, -0.136f, 0.203f, -0.531f, 0.733f }; + int ldb = 2; + float B_expected[] = { 0.561f, 1.32731f, -0.136f, 0.095288f, -0.531f, 0.312448f }; + cblas_strsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], flteps, "strsm(case 1843)"); + } + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 122; + int trans = 112; + int diag = 131; + int M = 2; + int N = 3; + float alpha = 1.0f; + float A[] = { 0.991f, 0.614f, 0.108f, -0.125f }; + int lda = 2; + float B[] = { -0.723f, 0.885f, 0.336f, 0.584f, 0.742f, -0.438f }; + int ldb = 2; + float B_expected[] = { 3.65703f, -7.08f, 3.23371f, -4.672f, -1.42226f, 3.504f }; + cblas_strsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], flteps, "strsm(case 1844)"); + } + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 122; + int trans = 112; + int diag = 132; + int M = 2; + int N = 3; + float alpha = 1.0f; + float A[] = { -0.626f, 0.912f, -0.003f, 0.761f }; + int lda = 2; + float B[] = { 0.736f, -0.383f, 0.0f, -0.238f, 0.013f, 0.473f }; + int ldb = 2; + float B_expected[] = { 1.0853f, -0.383f, 0.217056f, -0.238f, -0.418376f, 0.473f }; + cblas_strsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], flteps, "strsm(case 1845)"); + } + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 121; + int trans = 112; + int diag = 131; + int M = 2; + int N = 3; + float alpha = 1.0f; + float A[] = { -0.416f, 0.599f, -0.705f, 0.326f, 0.184f, 0.079f, -0.173f, 0.125f, 0.567f }; + int lda = 3; + float B[] = { 0.466f, 0.907f, -0.85f, -0.342f, -0.058f, -0.379f }; + int ldb = 3; + float B_expected[] = { 9.44495f, 5.57299f, -1.49912f, 1.91427f, -0.0282283f, -0.66843f }; + cblas_strsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], flteps, "strsm(case 1846)"); + } + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 121; + int trans = 112; + int diag = 132; + int M = 2; + int N = 3; + float alpha = 1.0f; + float A[] = { -0.75f, 0.856f, 0.773f, -0.241f, -0.357f, -0.683f, -0.718f, 0.69f, -0.486f }; + int lda = 3; + float B[] = { -0.532f, -0.817f, 0.85f, -0.135f, 0.797f, 0.981f }; + int ldb = 3; + float B_expected[] = { -0.986649f, -0.23645f, 0.85f, -2.14908f, 1.46702f, 0.981f }; + cblas_strsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], flteps, "strsm(case 1847)"); + } + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 122; + int trans = 112; + int diag = 131; + int M = 2; + int N = 3; + float alpha = 1.0f; + float A[] = { 0.765f, -0.408f, 0.404f, 0.764f, 0.157f, -0.741f, 0.844f, 0.206f, -0.215f }; + int lda = 3; + float B[] = { -0.859f, 0.563f, -0.61f, 0.2f, 0.816f, -0.692f }; + int ldb = 3; + float B_expected[] = { -1.12288f, 9.05017f, 7.1006f, 0.261438f, 3.92523f, 8.00582f }; + cblas_strsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], flteps, "strsm(case 1848)"); + } + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 122; + int trans = 112; + int diag = 132; + int M = 2; + int N = 3; + float alpha = 1.0f; + float A[] = { 0.354f, -0.931f, 0.18f, 0.391f, 0.01f, 0.429f, 0.685f, 0.332f, -0.643f }; + int lda = 3; + float B[] = { -0.645f, 0.847f, 0.014f, 0.83f, 0.761f, 0.187f }; + int ldb = 3; + float B_expected[] = { -0.645f, 1.09919f, 0.0908923f, 0.83f, 0.43647f, -0.526458f }; + cblas_strsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], flteps, "strsm(case 1849)"); + } + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 121; + int trans = 112; + int diag = 131; + int M = 2; + int N = 3; + float alpha = 1.0f; + float A[] = { 0.569f, 0.85f, 0.642f, -0.051f, 0.724f, 0.201f, 0.87f, -0.638f, 0.008f }; + int lda = 3; + float B[] = { -0.923f, 0.27f, -0.319f, -0.856f, -0.533f, 0.183f }; + int ldb = 2; + float B_expected[] = { 94.9456f, -32.8005f, -59.1516f, 18.9755f, -66.625f, 22.875f }; + cblas_strsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], flteps, "strsm(case 1850)"); + } + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 121; + int trans = 112; + int diag = 132; + int M = 2; + int N = 3; + float alpha = 1.0f; + float A[] = { 0.244f, 0.931f, 0.857f, -0.295f, 0.551f, 0.832f, 0.744f, -0.326f, 0.111f }; + int lda = 3; + float B[] = { -0.478f, -0.252f, -0.155f, 0.419f, -0.192f, 0.291f }; + int ldb = 2; + float B_expected[] = { -0.399342f, -0.316914f, -0.217592f, 0.513866f, -0.192f, 0.291f }; + cblas_strsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], flteps, "strsm(case 1851)"); + } + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 122; + int trans = 112; + int diag = 131; + int M = 2; + int N = 3; + float alpha = 1.0f; + float A[] = { 0.36f, 0.356f, -0.858f, 0.879f, 0.641f, 0.989f, 0.998f, -0.005f, 0.64f }; + int lda = 3; + float B[] = { -0.634f, -0.529f, -0.344f, 0.375f, -0.168f, 0.465f }; + int ldb = 2; + float B_expected[] = { -1.76111f, -1.46944f, 0.441428f, 1.40113f, -3.30563f, -3.40859f }; + cblas_strsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], flteps, "strsm(case 1852)"); + } + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 122; + int trans = 112; + int diag = 132; + int M = 2; + int N = 3; + float alpha = 1.0f; + float A[] = { 0.389f, 0.997f, 0.909f, -0.598f, -0.43f, -0.345f, -0.897f, 0.119f, -0.285f }; + int lda = 3; + float B[] = { 0.779f, -0.129f, 0.016f, 0.599f, -0.668f, -0.638f }; + int ldb = 2; + float B_expected[] = { 0.779f, -0.129f, -0.760663f, 0.727613f, -1.63854f, -0.269713f }; + cblas_strsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], flteps, "strsm(case 1853)"); + } + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 121; + int trans = 111; + int diag = 131; + int M = 2; + int N = 3; + double alpha = -1; + double A[] = { -0.876, -0.503, -0.062, -0.987 }; + int lda = 2; + double B[] = { 0.219, -0.986, -0.0, -0.605, 0.289, 0.641 }; + int ldb = 3; + double B_expected[] = { 0.601967125138, -1.29370052694, -0.372910623494, -0.612968591692, 0.292806484296, 0.649442755826 }; + cblas_dtrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], dbleps, "dtrsm(case 1854)"); + } + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 121; + int trans = 111; + int diag = 132; + int M = 2; + int N = 3; + double alpha = -1; + double A[] = { -0.266, -0.505, -0.55, 0.524 }; + int lda = 2; + double B[] = { 0.1, -0.105, 0.757, 0.522, -0.269, -0.142 }; + int ldb = 3; + double B_expected[] = { -0.36361, 0.240845, -0.68529, -0.522, 0.269, 0.142 }; + cblas_dtrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], dbleps, "dtrsm(case 1855)"); + } + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 122; + int trans = 111; + int diag = 131; + int M = 2; + int N = 3; + double alpha = -1; + double A[] = { 0.101, 0.871, 0.202, 0.169 }; + int lda = 2; + double B[] = { 0.018, 0.292, -0.573, 0.866, 0.749, 0.99 }; + int ldb = 3; + double B_expected[] = { -0.178217821782, -2.89108910891, 5.67326732673, -4.91124260355, -0.976331360947, -12.6390532544 }; + cblas_dtrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], dbleps, "dtrsm(case 1856)"); + } + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 122; + int trans = 111; + int diag = 132; + int M = 2; + int N = 3; + double alpha = -1; + double A[] = { -0.387, -0.739, -0.599, 0.114 }; + int lda = 2; + double B[] = { 0.7, 0.473, 0.86, -0.557, 0.283, 0.62 }; + int ldb = 3; + double B_expected[] = { -0.7, -0.473, -0.86, 0.1377, -0.566327, -1.13514 }; + cblas_dtrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], dbleps, "dtrsm(case 1857)"); + } + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 121; + int trans = 111; + int diag = 131; + int M = 2; + int N = 3; + double alpha = -1; + double A[] = { -0.683, -0.009, -0.451, -0.185 }; + int lda = 2; + double B[] = { 0.552, 0.083, -0.976, 0.22, -0.895, -0.301 }; + int ldb = 2; + double B_expected[] = { 0.511946499941, 0.448648648649, -2.21423766373, 1.18918918919, -0.236033397966, -1.62702702703 }; + cblas_dtrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], dbleps, "dtrsm(case 1858)"); + } + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 121; + int trans = 111; + int diag = 132; + int M = 2; + int N = 3; + double alpha = -1; + double A[] = { -0.141, 0.944, 0.529, 0.636 }; + int lda = 2; + double B[] = { 0.178, -0.22, -0.645, -0.585, -0.342, -0.594 }; + int ldb = 2; + double B_expected[] = { -0.29438, 0.22, 0.335535, 0.585, 0.027774, 0.594 }; + cblas_dtrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], dbleps, "dtrsm(case 1859)"); + } + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 122; + int trans = 111; + int diag = 131; + int M = 2; + int N = 3; + double alpha = -1; + double A[] = { 0.541, 0.584, -0.394, 0.371 }; + int lda = 2; + double B[] = { 0.668, 0.848, -0.816, -0.925, -0.145, 0.746 }; + int ldb = 2; + double B_expected[] = { -1.23475046211, -0.342063962613, 1.50831792976, 0.118982018923, 0.268022181146, -2.43268181614 }; + cblas_dtrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], dbleps, "dtrsm(case 1860)"); + } + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 122; + int trans = 111; + int diag = 132; + int M = 2; + int N = 3; + double alpha = -1; + double A[] = { 0.836, -0.024, 0.226, 0.416 }; + int lda = 2; + double B[] = { -0.172, -0.601, 0.542, 0.25, 0.746, 0.55 }; + int ldb = 2; + double B_expected[] = { 0.172, 0.605128, -0.542, -0.263008, -0.746, -0.567904 }; + cblas_dtrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], dbleps, "dtrsm(case 1861)"); + } + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 121; + int trans = 111; + int diag = 131; + int M = 2; + int N = 3; + double alpha = -1; + double A[] = { 0.544, 0.721, 0.623, 0.392, -0.808, -0.022, -0.665, -0.616, -0.735 }; + int lda = 3; + double B[] = { -0.526, -0.486, -0.716, 0.361, 0.365, -0.492 }; + int ldb = 3; + double B_expected[] = { 0.966911764706, 0.261316067268, -0.162398536147, -0.663602941176, -0.140417971025, -1.22766726121 }; + cblas_dtrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], dbleps, "dtrsm(case 1862)"); + } + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 121; + int trans = 111; + int diag = 132; + int M = 2; + int N = 3; + double alpha = -1; + double A[] = { 0.907, 0.558, -0.233, 0.073, -0.734, -0.058, -0.115, 0.513, 0.503 }; + int lda = 3; + double B[] = { -0.606, -0.124, 0.641, -0.074, -0.053, -0.734 }; + int ldb = 3; + double B_expected[] = { 0.606, -0.214148, -0.512222584, 0.074, 0.011708, 0.751921064 }; + cblas_dtrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], dbleps, "dtrsm(case 1863)"); + } + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 122; + int trans = 111; + int diag = 131; + int M = 2; + int N = 3; + double alpha = -1; + double A[] = { 0.9, 0.063, -0.652, -0.841, 0.251, -0.8, 0.365, 0.809, 0.336 }; + int lda = 3; + double B[] = { -0.584, -0.058, -0.964, -0.214, -0.632, -0.611 }; + int ldb = 3; + double B_expected[] = { -8.93978245747, -9.01617340163, 2.86904761905, -3.62368367799, -3.34313934737, 1.81845238095 }; + cblas_dtrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], dbleps, "dtrsm(case 1864)"); + } + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 122; + int trans = 111; + int diag = 132; + int M = 2; + int N = 3; + double alpha = -1; + double A[] = { 0.934, -0.608, 0.49, 0.351, -0.301, 0.602, 0.873, 0.031, -0.2 }; + int lda = 3; + double B[] = { -0.541, -0.729, -0.382, 0.741, 0.546, -0.833 }; + int ldb = 3; + double B_expected[] = { -0.044208458, 0.717158, 0.382, -1.267499127, -0.571823, 0.833 }; + cblas_dtrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], dbleps, "dtrsm(case 1865)"); + } + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 121; + int trans = 111; + int diag = 131; + int M = 2; + int N = 3; + double alpha = -1; + double A[] = { -0.339, 0.049, 0.734, -0.182, 0.427, 0.193, -0.959, -0.679, 0.269 }; + int lda = 3; + double B[] = { 0.824, 0.907, 0.632, -0.348, -0.646, 0.741 }; + int ldb = 2; + double B_expected[] = { 2.43067846608, 2.67551622419, -0.444066789635, 1.95537225481, 9.9460940476, 11.7193971004 }; + cblas_dtrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], dbleps, "dtrsm(case 1866)"); + } + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 121; + int trans = 111; + int diag = 132; + int M = 2; + int N = 3; + double alpha = -1; + double A[] = { 0.766, -0.422, -0.518, 0.517, 0.669, 0.337, -0.579, 0.885, -0.677 }; + int lda = 3; + double B[] = { 0.211, -0.911, -0.685, -0.777, -0.919, 0.282 }; + int ldb = 2; + double B_expected[] = { -0.211, 0.911, 0.794087, 0.306013, 0.094064005, -0.025352505 }; + cblas_dtrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], dbleps, "dtrsm(case 1867)"); + } + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 122; + int trans = 111; + int diag = 131; + int M = 2; + int N = 3; + double alpha = -1; + double A[] = { -0.686, -0.256, 0.028, 0.371, 0.469, 0.115, 0.284, 0.139, 0.677 }; + int lda = 3; + double B[] = { -0.877, -0.818, 0.191, 0.468, 0.889, -0.002 }; + int ldb = 2; + double B_expected[] = { -1.30020532939, -0.819646768394, -0.0852626506631, -0.998592183627, -1.31314623338, 0.00295420974889 }; + cblas_dtrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], dbleps, "dtrsm(case 1868)"); + } + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 122; + int trans = 111; + int diag = 132; + int M = 2; + int N = 3; + double alpha = -1; + double A[] = { -0.819, -0.523, 0.042, 0.545, -0.292, 0.283, 0.224, 0.247, -0.325 }; + int lda = 3; + double B[] = { 0.153, -0.272, -0.226, 0.987, -0.216, -0.218 }; + int ldb = 2; + double B_expected[] = { -0.075843944, -0.285622962, 0.164872, -1.048694, 0.216, 0.218 }; + cblas_dtrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], dbleps, "dtrsm(case 1869)"); + } + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 121; + int trans = 112; + int diag = 131; + int M = 2; + int N = 3; + double alpha = -1; + double A[] = { 0.164, 0.486, 0.891, -0.508 }; + int lda = 2; + double B[] = { 0.368, 0.761, -0.349, 0.324, 0.241, 0.561 }; + int ldb = 3; + double B_expected[] = { -2.24390243902, -4.64024390244, 2.12804878049, -1.50893028615, -3.96487900903, 3.14021989629 }; + cblas_dtrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], dbleps, "dtrsm(case 1870)"); + } + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 121; + int trans = 112; + int diag = 132; + int M = 2; + int N = 3; + double alpha = -1; + double A[] = { -0.019, -0.382, -0.579, 0.76 }; + int lda = 2; + double B[] = { -0.596, -0.074, 0.576, 0.861, -0.44, 0.842 }; + int ldb = 3; + double B_expected[] = { 0.596, 0.074, -0.576, -0.633328, 0.468268, -1.062032 }; + cblas_dtrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], dbleps, "dtrsm(case 1871)"); + } + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 122; + int trans = 112; + int diag = 131; + int M = 2; + int N = 3; + double alpha = -1; + double A[] = { 0.449, -0.367, -0.268, 0.1 }; + int lda = 2; + double B[] = { 0.58, -0.203, 0.053, 0.792, 0.355, -0.685 }; + int ldb = 3; + double B_expected[] = { -6.01906458797, -1.66681514477, 3.9706013363, -7.92, -3.55, 6.85 }; + cblas_dtrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], dbleps, "dtrsm(case 1872)"); + } + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 122; + int trans = 112; + int diag = 132; + int M = 2; + int N = 3; + double alpha = -1; + double A[] = { 0.159, 0.333, 0.515, 0.715 }; + int lda = 2; + double B[] = { -0.631, 0.472, 0.796, 0.278, 0.802, 0.298 }; + int ldb = 3; + double B_expected[] = { 0.77417, -0.05897, -0.64253, -0.278, -0.802, -0.298 }; + cblas_dtrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], dbleps, "dtrsm(case 1873)"); + } + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 121; + int trans = 112; + int diag = 131; + int M = 2; + int N = 3; + double alpha = -1; + double A[] = { 0.056, -0.493, 0.619, -0.028 }; + int lda = 2; + double B[] = { -0.32, -0.217, 0.301, 0.729, -0.847, -0.577 }; + int ldb = 2; + double B_expected[] = { 5.71428571429, 118.576530612, -5.375, -92.7901785714, 15.125, 313.763392857 }; + cblas_dtrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], dbleps, "dtrsm(case 1874)"); + } + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 121; + int trans = 112; + int diag = 132; + int M = 2; + int N = 3; + double alpha = -1; + double A[] = { -0.595, 0.64, 0.109, 0.969 }; + int lda = 2; + double B[] = { 0.186, -0.435, -0.747, 0.212, 0.257, 0.804 }; + int ldb = 2; + double B_expected[] = { -0.186, 0.455274, 0.747, -0.293423, -0.257, -0.775987 }; + cblas_dtrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], dbleps, "dtrsm(case 1875)"); + } + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 122; + int trans = 112; + int diag = 131; + int M = 2; + int N = 3; + double alpha = -1; + double A[] = { 0.484, 0.769, 0.91, 0.817 }; + int lda = 2; + double B[] = { -0.668, 0.544, 0.753, 0.796, -0.74, -0.091 }; + int ldb = 2; + double B_expected[] = { 2.4380974539, -0.665850673195, -0.0077814418807, -0.97429620563, 1.35195534965, 0.111383108935 }; + cblas_dtrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], dbleps, "dtrsm(case 1876)"); + } + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 122; + int trans = 112; + int diag = 132; + int M = 2; + int N = 3; + double alpha = -1; + double A[] = { -0.725, 0.73, -0.095, 0.123 }; + int lda = 2; + double B[] = { -0.26, 0.579, 0.393, -0.18, 0.358, 0.839 }; + int ldb = 2; + double B_expected[] = { 0.68267, -0.579, -0.5244, 0.18, 0.25447, -0.839 }; + cblas_dtrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], dbleps, "dtrsm(case 1877)"); + } + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 121; + int trans = 112; + int diag = 131; + int M = 2; + int N = 3; + double alpha = -1; + double A[] = { -0.009, 0.237, -0.563, 0.993, 0.508, 0.771, 0.745, 0.233, 0.255 }; + int lda = 3; + double B[] = { -0.328, -0.482, 0.083, -0.125, -0.712, -0.757 }; + int ldb = 3; + double B_expected[] = { 21.9110553583, 1.44282075035, -0.325490196078, -281.330646047, -3.10396016674, 2.96862745098 }; + cblas_dtrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], dbleps, "dtrsm(case 1878)"); + } + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 121; + int trans = 112; + int diag = 132; + int M = 2; + int N = 3; + double alpha = -1; + double A[] = { -0.484, -0.131, 0.563, -0.095, 0.012, -0.988, -0.722, 0.738, 0.05 }; + int lda = 3; + double B[] = { -0.069, -0.137, -0.45, -0.24, 0.221, -0.509 }; + int ldb = 3; + double B_expected[] = { -0.1081604, 0.5816, 0.45, -0.009639148, 0.281892, 0.509 }; + cblas_dtrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], dbleps, "dtrsm(case 1879)"); + } + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 122; + int trans = 112; + int diag = 131; + int M = 2; + int N = 3; + double alpha = -1; + double A[] = { 0.521, 0.487, -0.961, 0.903, -0.045, 0.059, -0.61, -0.328, 0.883 }; + int lda = 3; + double B[] = { -0.772, 0.079, -0.227, 0.998, 0.302, -0.099 }; + int ldb = 3; + double B_expected[] = { 1.48176583493, 31.4896566432, 12.9778986844, -1.91554702495, -31.7275325229, -12.9967319963 }; + cblas_dtrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], dbleps, "dtrsm(case 1880)"); + } + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 122; + int trans = 112; + int diag = 132; + int M = 2; + int N = 3; + double alpha = -1; + double A[] = { 0.642, 0.511, 0.762, 0.804, -0.28, -0.318, 0.382, -0.165, -0.007 }; + int lda = 3; + double B[] = { 0.987, 0.436, -0.783, 0.175, -0.973, -0.319 }; + int ldb = 3; + double B_expected[] = { -0.987, 0.357548, 1.21902942, -0.175, 1.1137, 0.5696105 }; + cblas_dtrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], dbleps, "dtrsm(case 1881)"); + } + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 121; + int trans = 112; + int diag = 131; + int M = 2; + int N = 3; + double alpha = -1; + double A[] = { -0.995, 0.625, 0.16, -0.127, -0.722, -0.355, -0.14, -0.146, -0.756 }; + int lda = 3; + double B[] = { 0.676, 0.038, 0.543, 0.296, -0.44, 0.751 }; + int ldb = 2; + double B_expected[] = { 0.650272121575, -0.128270318012, 0.869769452872, 0.209093640534, -0.582010582011, 0.993386243386 }; + cblas_dtrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], dbleps, "dtrsm(case 1882)"); + } + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 121; + int trans = 112; + int diag = 132; + int M = 2; + int N = 3; + double alpha = -1; + double A[] = { -0.619, 0.548, 0.064, -0.483, -0.508, -0.819, 0.237, 0.852, -0.512 }; + int lda = 3; + double B[] = { -0.169, 0.429, -0.789, 0.79, 0.479, 0.817 }; + int ldb = 2; + double B_expected[] = { 0.860726164, -0.280732428, 1.197108, -0.093916, -0.479, -0.817 }; + cblas_dtrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], dbleps, "dtrsm(case 1883)"); + } + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 122; + int trans = 112; + int diag = 131; + int M = 2; + int N = 3; + double alpha = -1; + double A[] = { 0.794, -0.098, 0.442, -0.991, 0.049, 0.079, -0.8, -0.762, 0.395 }; + int lda = 3; + double B[] = { 0.496, -0.734, -0.679, -0.697, 0.426, 0.094 }; + int ldb = 2; + double B_expected[] = { -0.624685138539, 0.92443324937, 12.6077725801, 16.0733562947, -2.90102076605, -4.48707504683 }; + cblas_dtrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], dbleps, "dtrsm(case 1884)"); + } + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 122; + int trans = 112; + int diag = 132; + int M = 2; + int N = 3; + double alpha = -1; + double A[] = { 0.848, -0.765, 0.528, -0.693, 0.252, -0.135, -0.507, 0.954, -0.056 }; + int lda = 3; + double B[] = { 0.791, -0.787, 0.636, 0.271, -0.905, -0.974 }; + int ldb = 2; + double B_expected[] = { -0.791, 0.787, -1.241115, 0.331055, 1.155097475, 0.603156425 }; + cblas_dtrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], dbleps, "dtrsm(case 1885)"); + } + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 121; + int trans = 111; + int diag = 131; + int M = 2; + int N = 3; + float alpha[2] = {0.0f, 0.0f}; + float A[] = { 0.491f, -0.317f, -0.14f, -0.739f, -0.969f, -0.518f, 0.702f, -0.287f }; + int lda = 2; + float B[] = { -0.962f, -0.38f, 0.656f, 0.587f, -0.195f, -0.862f, -0.679f, 0.598f, 0.919f, 0.714f, -0.513f, 0.726f }; + int ldb = 3; + float B_expected[] = { 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f }; + cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1886) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1886) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 121; + int trans = 111; + int diag = 132; + int M = 2; + int N = 3; + float alpha[2] = {0.0f, 0.0f}; + float A[] = { -0.6f, 0.338f, -0.048f, -0.926f, 0.236f, 0.362f, 0.605f, 0.562f }; + int lda = 2; + float B[] = { -0.009f, 0.371f, -0.989f, 0.728f, -0.062f, 0.113f, 0.714f, 0.604f, -0.293f, 0.859f, -0.875f, 0.216f }; + int ldb = 3; + float B_expected[] = { 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f }; + cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1887) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1887) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 122; + int trans = 111; + int diag = 131; + int M = 2; + int N = 3; + float alpha[2] = {0.0f, 0.0f}; + float A[] = { -0.889f, -0.479f, -0.526f, 0.077f, -0.704f, 0.242f, 0.458f, -0.553f }; + int lda = 2; + float B[] = { -0.554f, 0.966f, 0.076f, 0.42f, 0.85f, 0.369f, 0.124f, -0.476f, -0.007f, 0.428f, 0.452f, -0.214f }; + int ldb = 3; + float B_expected[] = { 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f }; + cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1888) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1888) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 122; + int trans = 111; + int diag = 132; + int M = 2; + int N = 3; + float alpha[2] = {0.0f, 0.0f}; + float A[] = { 0.947f, 0.444f, 0.079f, -0.597f, 0.978f, -0.64f, 0.82f, 0.808f }; + int lda = 2; + float B[] = { -0.899f, -0.964f, -0.714f, 0.422f, -0.084f, -0.78f, -0.609f, -0.595f, 0.748f, -0.926f, 0.242f, -0.474f }; + int ldb = 3; + float B_expected[] = { 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f }; + cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1889) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1889) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 121; + int trans = 111; + int diag = 131; + int M = 2; + int N = 3; + float alpha[2] = {0.0f, 0.0f}; + float A[] = { -0.547f, -0.763f, -0.805f, 0.498f, 0.786f, -0.082f, 0.922f, 0.538f }; + int lda = 2; + float B[] = { -0.074f, -0.617f, 0.359f, -0.383f, -0.172f, 0.911f, -0.934f, 0.066f, -0.67f, 0.895f, 0.92f, 0.255f }; + int ldb = 2; + float B_expected[] = { 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f }; + cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1890) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1890) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 121; + int trans = 111; + int diag = 132; + int M = 2; + int N = 3; + float alpha[2] = {0.0f, 0.0f}; + float A[] = { -0.096f, -0.362f, -0.311f, -0.347f, 0.161f, -0.517f, -0.393f, 0.572f }; + int lda = 2; + float B[] = { 0.742f, -0.419f, -0.391f, 0.846f, -0.255f, -0.364f, 0.006f, -0.496f, 0.118f, -0.593f, 0.773f, 0.053f }; + int ldb = 2; + float B_expected[] = { 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f }; + cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1891) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1891) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 122; + int trans = 111; + int diag = 131; + int M = 2; + int N = 3; + float alpha[2] = {0.0f, 0.0f}; + float A[] = { 0.669f, 0.845f, 0.657f, -0.43f, 0.19f, 0.206f, -0.305f, 0.761f }; + int lda = 2; + float B[] = { -0.457f, 0.857f, -0.203f, 0.942f, 0.462f, 0.52f, 0.521f, -0.609f, 0.069f, 0.005f, -0.419f, 0.806f }; + int ldb = 2; + float B_expected[] = { 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f }; + cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1892) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1892) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 122; + int trans = 111; + int diag = 132; + int M = 2; + int N = 3; + float alpha[2] = {0.0f, 0.0f}; + float A[] = { -0.269f, -0.87f, -0.592f, 0.813f, 0.977f, -0.848f, 0.282f, -0.311f }; + int lda = 2; + float B[] = { -0.654f, 0.857f, -0.834f, 0.796f, 0.414f, -0.499f, 0.961f, 0.643f, 0.117f, 0.758f, -0.189f, -0.768f }; + int ldb = 2; + float B_expected[] = { 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f }; + cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1893) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1893) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 121; + int trans = 111; + int diag = 131; + int M = 2; + int N = 3; + float alpha[2] = {0.0f, 0.0f}; + float A[] = { 0.361f, -0.818f, 0.039f, 0.275f, 0.541f, -0.615f, 0.025f, -0.691f, -0.697f, 0.976f, 0.746f, 0.607f, 0.651f, -0.918f, -0.702f, 0.37f, -0.668f, -0.114f }; + int lda = 3; + float B[] = { 0.218f, 0.75f, 0.575f, -0.702f, 0.7f, -0.41f, 0.374f, 0.489f, -0.876f, 0.842f, -0.848f, 0.901f }; + int ldb = 3; + float B_expected[] = { 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f }; + cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1894) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1894) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 121; + int trans = 111; + int diag = 132; + int M = 2; + int N = 3; + float alpha[2] = {0.0f, 0.0f}; + float A[] = { 0.483f, 0.088f, -0.192f, 0.17f, 0.683f, 0.293f, -0.773f, 0.365f, -0.28f, 0.257f, 0.818f, 0.45f, -0.551f, -0.051f, 0.899f, -0.127f, -0.915f, 0.152f }; + int lda = 3; + float B[] = { 0.732f, -0.394f, 0.073f, -0.082f, 0.918f, -0.53f, 0.67f, 0.149f, -0.344f, -0.65f, -0.62f, -0.632f }; + int ldb = 3; + float B_expected[] = { 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f }; + cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1895) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1895) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 122; + int trans = 111; + int diag = 131; + int M = 2; + int N = 3; + float alpha[2] = {0.0f, 0.0f}; + float A[] = { 0.508f, -0.251f, 0.655f, -0.315f, -0.26f, 0.229f, 0.05f, -0.276f, -0.993f, 0.647f, -0.547f, -0.34f, 0.781f, -0.819f, 0.865f, 0.361f, -0.028f, 0.178f }; + int lda = 3; + float B[] = { 0.972f, 0.048f, 0.71f, -0.168f, -0.274f, 0.92f, 0.789f, 0.485f, 0.578f, 0.73f, -0.931f, 0.288f }; + int ldb = 3; + float B_expected[] = { 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f }; + cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1896) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1896) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 122; + int trans = 111; + int diag = 132; + int M = 2; + int N = 3; + float alpha[2] = {0.0f, 0.0f}; + float A[] = { -0.874f, 0.651f, 0.074f, -0.862f, -0.42f, 0.066f, -0.845f, 0.482f, -0.44f, 0.724f, 0.137f, -0.123f, -0.63f, -0.011f, -0.187f, -0.205f, 0.976f, -0.81f }; + int lda = 3; + float B[] = { 0.539f, 0.131f, 0.986f, 0.615f, 0.983f, -0.22f, 0.144f, 0.677f, 0.561f, -0.494f, -0.433f, -0.089f }; + int ldb = 3; + float B_expected[] = { 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f }; + cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1897) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1897) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 121; + int trans = 111; + int diag = 131; + int M = 2; + int N = 3; + float alpha[2] = {0.0f, 0.0f}; + float A[] = { 0.284f, 0.871f, -0.835f, 0.926f, 0.459f, -0.889f, 0.387f, 0.319f, -0.366f, 0.884f, 0.236f, 0.921f, 0.619f, -0.41f, -0.709f, -0.372f, 0.06f, 0.551f }; + int lda = 3; + float B[] = { 0.354f, 0.245f, 0.552f, 0.77f, -0.524f, -0.973f, -0.814f, -0.835f, -0.976f, 0.396f, -0.726f, -0.204f }; + int ldb = 2; + float B_expected[] = { 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f }; + cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1898) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1898) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 121; + int trans = 111; + int diag = 132; + int M = 2; + int N = 3; + float alpha[2] = {0.0f, 0.0f}; + float A[] = { -0.98f, -0.854f, -0.832f, 0.514f, -0.028f, -0.857f, 0.066f, 0.415f, -0.316f, 0.538f, -0.465f, -0.691f, 0.286f, 0.954f, -0.486f, -0.574f, -0.429f, 0.992f }; + int lda = 3; + float B[] = { 0.295f, 0.578f, -0.167f, 0.106f, -0.782f, 0.668f, 0.278f, 0.855f, 0.038f, 0.976f, 0.167f, -0.777f }; + int ldb = 2; + float B_expected[] = { 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f }; + cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1899) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1899) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 122; + int trans = 111; + int diag = 131; + int M = 2; + int N = 3; + float alpha[2] = {0.0f, 0.0f}; + float A[] = { 0.534f, 0.782f, 0.282f, 0.581f, 0.804f, -0.68f, 0.234f, -0.758f, 0.033f, -0.503f, 0.981f, -0.839f, 0.919f, 0.175f, 0.152f, -0.683f, -0.346f, -0.279f }; + int lda = 3; + float B[] = { 0.135f, -0.969f, -0.314f, -0.026f, -0.284f, 0.529f, 0.781f, -0.413f, -0.018f, -0.859f, -0.817f, -0.849f }; + int ldb = 2; + float B_expected[] = { 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f }; + cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1900) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1900) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 122; + int trans = 111; + int diag = 132; + int M = 2; + int N = 3; + float alpha[2] = {0.0f, 0.0f}; + float A[] = { -0.426f, 0.148f, 0.889f, 0.217f, 0.779f, -0.963f, -0.516f, -0.366f, 0.721f, 0.4f, -0.976f, -0.365f, 0.532f, 0.188f, 0.176f, 0.082f, -0.691f, -0.833f }; + int lda = 3; + float B[] = { -0.71f, 0.72f, 0.533f, 0.395f, -0.749f, 0.151f, 0.871f, 0.445f, 0.195f, -0.38f, -0.318f, -0.833f }; + int ldb = 2; + float B_expected[] = { 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f }; + cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1901) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1901) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 121; + int trans = 112; + int diag = 131; + int M = 2; + int N = 3; + float alpha[2] = {0.0f, 1.0f}; + float A[] = { -0.068f, 0.806f, -0.621f, 0.037f, 0.096f, -0.312f, 0.416f, 0.428f }; + int lda = 2; + float B[] = { 0.481f, 0.192f, -0.954f, -0.958f, -0.015f, -0.203f, -0.352f, 0.08f, -0.662f, 0.681f, -0.571f, 0.146f }; + int ldb = 3; + float B_expected[] = { 0.612512f, 0.186537f, -1.27483f, -1.08103f, -0.0395775f, -0.248522f, 0.0478574f, -0.671409f, -3.31165f, 0.315466f, -1.07961f, -0.629312f }; + cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1902) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1902) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 121; + int trans = 112; + int diag = 132; + int M = 2; + int N = 3; + float alpha[2] = {0.0f, 1.0f}; + float A[] = { 0.863f, 0.689f, 0.171f, -0.164f, 0.065f, -0.727f, -0.245f, -0.556f }; + int lda = 2; + float B[] = { 0.711f, -0.616f, -0.684f, 0.823f, 0.491f, 0.06f, -0.776f, 0.768f, 0.391f, 0.897f, 0.779f, -0.875f }; + int ldb = 3; + float B_expected[] = { 0.616f, 0.711f, -0.823f, -0.684f, -0.06f, 0.491f, -0.98994f, -0.796557f, -0.644091f, 0.372992f, 0.804736f, 0.685199f }; + cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1903) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1903) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 122; + int trans = 112; + int diag = 131; + int M = 2; + int N = 3; + float alpha[2] = {0.0f, 1.0f}; + float A[] = { 0.718f, -0.323f, 0.264f, 0.081f, -0.73f, 0.809f, -0.349f, -0.543f }; + int lda = 2; + float B[] = { 0.862f, 0.676f, -0.085f, 0.204f, 0.063f, -0.124f, 0.162f, 0.754f, -0.978f, -0.097f, 0.986f, 0.943f }; + int ldb = 3; + float B_expected[] = { -1.32203f, -1.00495f, 1.84655f, 0.329156f, -1.66053f, -2.19061f, 0.420449f, -1.11835f, 1.19333f, 0.945621f, -0.495118f, -2.05487f }; + cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1904) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1904) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 122; + int trans = 112; + int diag = 132; + int M = 2; + int N = 3; + float alpha[2] = {0.0f, 1.0f}; + float A[] = { -0.515f, -0.166f, -0.364f, 0.24f, 0.056f, 0.023f, 0.05f, 0.853f }; + int lda = 2; + float B[] = { 0.779f, 0.443f, -0.852f, 0.037f, -0.649f, 0.554f, 0.469f, 0.632f, 0.224f, -0.148f, 0.457f, -0.78f }; + int ldb = 3; + float B_expected[] = { -0.396821f, 0.767272f, -0.040136f, -0.867948f, -0.587169f, -0.692532f, -0.632f, 0.469f, 0.148f, 0.224f, 0.78f, 0.457f }; + cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1905) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1905) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 121; + int trans = 112; + int diag = 131; + int M = 2; + int N = 3; + float alpha[2] = {0.0f, 1.0f}; + float A[] = { 0.576f, 0.785f, 0.297f, -0.561f, -0.164f, 0.463f, -0.454f, 0.803f }; + int lda = 2; + float B[] = { -0.78f, -0.792f, 0.223f, 0.206f, -0.097f, 0.504f, 0.721f, 0.205f, 0.508f, -0.8f, -0.469f, 0.283f }; + int ldb = 2; + float B_expected[] = { -0.164671f, -1.12975f, 0.510941f, 0.652691f, -0.386549f, 0.358405f, 0.959415f, -0.414847f, 0.906729f, -0.353789f, -0.734462f, 0.786484f }; + cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1906) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1906) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 121; + int trans = 112; + int diag = 132; + int M = 2; + int N = 3; + float alpha[2] = {0.0f, 1.0f}; + float A[] = { -0.04f, 0.917f, 0.327f, -0.115f, -0.656f, -0.811f, -0.646f, 0.78f }; + int lda = 2; + float B[] = { 0.131f, 0.677f, -0.431f, -0.652f, -0.415f, 0.094f, -0.253f, 0.496f, 0.797f, 0.166f, 0.737f, -0.685f }; + int ldb = 2; + float B_expected[] = { -0.677f, 0.131f, 0.101647f, -0.894111f, -0.094f, -0.415f, -0.221099f, -0.601474f, -0.166f, 0.797f, -0.070263f, 1.12521f }; + cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1907) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1907) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 122; + int trans = 112; + int diag = 131; + int M = 2; + int N = 3; + float alpha[2] = {0.0f, 1.0f}; + float A[] = { 0.769f, -0.384f, -0.522f, -0.086f, -0.129f, -0.574f, 0.56f, -0.809f }; + int lda = 2; + float B[] = { 0.367f, 0.169f, -0.321f, -0.982f, -0.563f, -0.051f, -0.742f, 0.595f, 0.067f, -0.183f, -0.524f, 0.77f }; + int ldb = 2; + float B_expected[] = { -0.178752f, 0.912513f, 0.836303f, 0.634945f, 0.817549f, -0.921899f, 0.275884f, -0.926446f, 0.49345f, -0.309856f, -0.00752416f, -0.946584f }; + cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1908) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1908) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 122; + int trans = 112; + int diag = 132; + int M = 2; + int N = 3; + float alpha[2] = {0.0f, 1.0f}; + float A[] = { 0.758f, 0.228f, 0.263f, 0.731f, 0.171f, 0.051f, 0.968f, 0.731f }; + int lda = 2; + float B[] = { 0.783f, 0.422f, -0.649f, -0.428f, 0.216f, 0.659f, -0.608f, -0.239f, -0.588f, 0.01f, -0.009f, -0.374f }; + int ldb = 2; + float B_expected[] = { -1.00898f, 0.640819f, 0.428f, -0.649f, -1.1663f, 0.201195f, 0.239f, -0.608f, -0.114941f, -0.859027f, 0.374f, -0.009f }; + cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1909) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1909) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 121; + int trans = 112; + int diag = 131; + int M = 2; + int N = 3; + float alpha[2] = {0.0f, 1.0f}; + float A[] = { 0.601f, -0.017f, 0.518f, -0.975f, -0.394f, 0.396f, 0.395f, -0.374f, -0.321f, 0.221f, 0.809f, 0.74f, -0.009f, 0.88f, 0.057f, 0.65f, 0.761f, -0.839f }; + int lda = 3; + float B[] = { -0.644f, 0.29f, 0.458f, 0.755f, -0.725f, 0.313f, 0.537f, 0.945f, 0.377f, 0.776f, -0.686f, -0.561f }; + int ldb = 3; + float B_expected[] = { -5.28862f, 4.51343f, 4.18447f, 0.519474f, 0.288441f, -0.634688f, -7.53878f, 2.5597f, 2.79299f, 2.44873f, 0.781327f, -0.0400353f }; + cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1910) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1910) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 121; + int trans = 112; + int diag = 132; + int M = 2; + int N = 3; + float alpha[2] = {0.0f, 1.0f}; + float A[] = { 0.746f, 0.079f, -0.151f, -0.433f, 0.524f, -0.201f, 0.198f, -0.368f, -0.449f, 0.693f, -0.14f, -0.574f, -0.242f, -0.584f, -0.298f, 0.41f, -0.234f, 0.92f }; + int lda = 3; + float B[] = { -0.787f, 0.186f, -0.104f, -0.142f, -0.548f, 0.332f, -0.66f, 0.413f, 0.046f, 0.818f, -0.783f, -0.376f }; + int ldb = 3; + float B_expected[] = { 0.320805f, -0.445083f, 0.410072f, -0.371288f, -0.332f, -0.548f, -0.566249f, -0.287942f, -0.315918f, 0.152204f, 0.376f, -0.783f }; + cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1911) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1911) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 122; + int trans = 112; + int diag = 131; + int M = 2; + int N = 3; + float alpha[2] = {0.0f, 1.0f}; + float A[] = { -0.623f, -0.229f, 0.653f, -0.19f, 0.42f, -0.181f, -0.061f, 0.963f, 0.422f, 0.989f, 0.919f, -0.352f, -0.849f, 0.052f, 0.02f, -0.771f, -0.38f, -0.566f }; + int lda = 3; + float B[] = { 0.018f, 0.461f, -0.184f, 0.334f, 0.075f, 0.694f, 0.022f, 0.239f, 0.971f, -0.339f, 0.203f, 0.083f }; + int ldb = 3; + float B_expected[] = { 0.642534f, -0.265073f, -0.901268f, 0.171623f, 1.29999f, 0.384146f, 0.326529f, -0.155337f, 0.629902f, 0.0571184f, -0.761884f, -0.282697f }; + cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1912) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1912) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 122; + int trans = 112; + int diag = 132; + int M = 2; + int N = 3; + float alpha[2] = {0.0f, 1.0f}; + float A[] = { 0.35f, 0.154f, 0.397f, -0.709f, 0.587f, -0.895f, -0.848f, 0.933f, -0.887f, -0.393f, 0.824f, 0.182f, 0.159f, 0.303f, -0.011f, -0.363f, 0.875f, 0.991f }; + int lda = 3; + float B[] = { -0.513f, 0.564f, 0.404f, -0.635f, 0.924f, 0.238f, -0.059f, 0.96f, 0.341f, 0.483f, -0.844f, 0.84f }; + int ldb = 3; + float B_expected[] = { -0.564f, -0.513f, -0.321901f, 0.495188f, -0.487057f, 1.06506f, -0.96f, -0.059f, -1.35213f, 1.18665f, -1.15086f, -1.02151f }; + cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1913) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1913) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 121; + int trans = 112; + int diag = 131; + int M = 2; + int N = 3; + float alpha[2] = {0.0f, 1.0f}; + float A[] = { 0.87f, 0.914f, -0.097f, -0.138f, 0.894f, -0.173f, 0.648f, -0.327f, 0.7f, 0.816f, 0.63f, 0.637f, -0.671f, 0.322f, -0.922f, 0.618f, 0.93f, 0.654f }; + int lda = 3; + float B[] = { -0.347f, -0.273f, -0.384f, 0.02f, 0.392f, -0.206f, 0.347f, 0.269f, 0.016f, 0.797f, 0.699f, -0.966f }; + int ldb = 2; + float B_expected[] = { -0.443754f, 0.343363f, 0.300599f, -0.548484f, 0.757674f, 0.722159f, 0.224607f, -0.673284f, -0.565323f, 0.414754f, 1.04867f, 0.014162f }; + cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1914) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1914) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 121; + int trans = 112; + int diag = 132; + int M = 2; + int N = 3; + float alpha[2] = {0.0f, 1.0f}; + float A[] = { 0.965f, -0.191f, 0.489f, 0.84f, 0.011f, -0.951f, 0.067f, -0.21f, -0.911f, 0.767f, -0.162f, 0.274f, -0.502f, -0.445f, 0.492f, 0.023f, -0.818f, 0.859f }; + int lda = 3; + float B[] = { 0.66f, -0.303f, 0.223f, 0.261f, -0.252f, -0.238f, -0.012f, -0.485f, 0.783f, -0.196f, -0.57f, 0.929f }; + int ldb = 2; + float B_expected[] = { 0.177032f, 1.21679f, -0.596808f, -0.300881f, 0.159577f, -0.641744f, 0.928958f, 0.289807f, 0.196f, 0.783f, -0.929f, -0.57f }; + cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1915) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1915) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 122; + int trans = 112; + int diag = 131; + int M = 2; + int N = 3; + float alpha[2] = {0.0f, 1.0f}; + float A[] = { -0.652f, 0.046f, -0.229f, 0.473f, -0.783f, -0.211f, 0.698f, 0.201f, -0.153f, 0.918f, -0.996f, -0.186f, 0.84f, -0.545f, -0.457f, 0.057f, 0.649f, 0.77f }; + int lda = 3; + float B[] = { -0.227f, 0.14f, 0.165f, -0.945f, -0.212f, -0.522f, 0.908f, 0.722f, -0.208f, 0.969f, 0.721f, -0.816f }; + int ldb = 2; + float B_expected[] = { 0.189219f, 0.361509f, -1.42444f, -0.353565f, -0.361882f, -0.741783f, 1.80537f, 1.02311f, -1.24128f, 0.407779f, 2.0229f, -0.0912412f }; + cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1916) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1916) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 122; + int trans = 112; + int diag = 132; + int M = 2; + int N = 3; + float alpha[2] = {0.0f, 1.0f}; + float A[] = { -0.945f, 0.36f, 0.3f, 0.128f, -0.27f, -0.834f, 0.349f, -0.6f, -0.293f, 0.122f, -0.481f, -0.681f, -0.815f, -0.195f, 0.728f, 0.016f, 0.037f, 0.989f }; + int lda = 3; + float B[] = { -0.97f, 0.784f, 0.488f, 0.39f, -0.482f, -0.518f, -0.797f, 0.271f, 0.257f, 0.637f, 0.118f, -0.993f }; + int ldb = 2; + float B_expected[] = { -0.784f, -0.97f, -0.39f, 0.488f, 0.62904f, -0.090648f, -0.091536f, -0.89348f, 0.3246f, -0.273981f, 1.04514f, -0.5676f }; + cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1917) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1917) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 121; + int trans = 113; + int diag = 131; + int M = 2; + int N = 3; + float alpha[2] = {0.0f, 0.1f}; + float A[] = { 0.795f, 0.073f, 0.104f, -0.261f, -0.712f, 0.881f, -0.474f, -0.906f }; + int lda = 2; + float B[] = { -0.41f, -0.191f, -0.359f, -0.718f, -0.902f, 0.646f, -0.703f, -0.809f, -0.342f, -0.783f, -0.053f, 0.917f }; + int ldb = 3; + float B_expected[] = { 0.0285203f, -0.0489535f, 0.0936712f, -0.036556f, -0.0702473f, -0.11991f, -0.0924979f, -0.0235243f, -0.0742841f, -0.0262764f, 0.074552f, 0.0886899f }; + cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1918) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1918) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 121; + int trans = 113; + int diag = 132; + int M = 2; + int N = 3; + float alpha[2] = {0.0f, 0.1f}; + float A[] = { -0.281f, -0.111f, 0.055f, -0.643f, 0.33f, -0.663f, 0.32f, 0.423f }; + int lda = 2; + float B[] = { 0.103f, 0.357f, -0.591f, 0.833f, -0.906f, -0.192f, -0.391f, -0.622f, -0.345f, -0.58f, -0.132f, -0.874f }; + int ldb = 3; + float B_expected[] = { -0.0357f, 0.0103f, -0.0833f, -0.0591f, 0.0192f, -0.0906f, 0.0707864f, -0.0167114f, 0.0245802f, 0.0223124f, 0.0280882f, -0.0205626f }; + cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1919) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1919) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 122; + int trans = 113; + int diag = 131; + int M = 2; + int N = 3; + float alpha[2] = {0.0f, 0.1f}; + float A[] = { 0.311f, -0.648f, -0.732f, 0.825f, 0.152f, -0.529f, -0.353f, 0.568f }; + int lda = 2; + float B[] = { 0.86f, -0.991f, -0.992f, -0.617f, 0.137f, -0.585f, -0.467f, 0.632f, 0.672f, 0.777f, -0.609f, 0.511f }; + int ldb = 3; + float B_expected[] = { 0.0795347f, -0.0537122f, -0.0885393f, -0.0194836f, -0.0386006f, -0.0674606f, 0.109194f, -0.0434058f, -0.0240177f, -0.151722f, 0.117678f, -0.0168304f }; + cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1920) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1920) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 122; + int trans = 113; + int diag = 132; + int M = 2; + int N = 3; + float alpha[2] = {0.0f, 0.1f}; + float A[] = { 0.318f, -0.946f, -0.389f, 0.051f, 0.322f, -0.626f, -0.839f, -0.252f }; + int lda = 2; + float B[] = { 0.372f, -0.23f, 0.515f, 0.213f, 0.222f, 0.296f, -0.524f, 0.442f, -0.581f, -0.409f, 0.894f, -0.246f }; + int ldb = 3; + float B_expected[] = { 0.00443f, 0.081742f, -0.0708404f, 0.0446048f, 0.0184432f, -0.0219864f, -0.0442f, -0.0524f, 0.0409f, -0.0581f, 0.0246f, 0.0894f }; + cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1921) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1921) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 121; + int trans = 113; + int diag = 131; + int M = 2; + int N = 3; + float alpha[2] = {0.0f, 0.1f}; + float A[] = { -0.411f, 0.34f, -0.85f, 0.557f, -0.918f, 0.484f, -0.889f, 0.561f }; + int lda = 2; + float B[] = { -0.763f, -0.514f, -0.744f, -0.948f, -0.312f, 0.818f, -0.686f, 0.341f, -0.043f, 0.235f, -0.201f, 0.874f }; + int ldb = 2; + float B_expected[] = { 0.0169288f, 0.17164f, -0.0683166f, -0.0596556f, 0.155447f, -0.0526808f, -0.086698f, 0.101645f, 0.039085f, -0.0218708f, 0.0437248f, -0.0036776f }; + cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1922) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1922) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 121; + int trans = 113; + int diag = 132; + int M = 2; + int N = 3; + float alpha[2] = {0.0f, 0.1f}; + float A[] = { 0.046f, 0.571f, 0.825f, 0.665f, 0.658f, -0.977f, 0.247f, -0.944f }; + int lda = 2; + float B[] = { -0.342f, 0.089f, -0.975f, 0.027f, -0.621f, -0.127f, 0.937f, -0.332f, -0.357f, -0.213f, 0.57f, 0.134f }; + int ldb = 2; + float B_expected[] = { -0.0089f, -0.0342f, -0.0302572f, -0.0663011f, 0.0127f, -0.0621f, -0.0358283f, 0.122154f, 0.0213f, -0.0357f, -0.0622943f, 0.0596805f }; + cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1923) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1923) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 122; + int trans = 113; + int diag = 131; + int M = 2; + int N = 3; + float alpha[2] = {0.0f, 0.1f}; + float A[] = { 0.655f, 0.051f, -0.864f, 0.04f, -0.45f, 0.276f, -0.365f, 0.766f }; + int lda = 2; + float B[] = { 0.12f, 0.036f, 0.425f, -0.145f, -0.772f, -0.483f, -0.154f, -0.327f, 0.532f, 0.59f, 0.305f, 0.443f }; + int ldb = 2; + float B_expected[] = { -0.0745593f, 0.00123365f, -0.0525674f, -0.00611891f, 0.0752311f, -0.0558274f, -0.0001932f, 0.0425972f, -0.0986826f, -0.00963885f, -0.00999124f, -0.0625937f }; + cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1924) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1924) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 122; + int trans = 113; + int diag = 132; + int M = 2; + int N = 3; + float alpha[2] = {0.0f, 0.1f}; + float A[] = { 0.253f, -0.163f, -0.061f, -0.032f, -0.764f, 0.863f, 0.051f, 0.669f }; + int lda = 2; + float B[] = { 0.966f, 0.42f, -0.765f, 0.186f, -0.798f, 0.278f, -0.37f, -0.484f, -0.724f, -0.682f, 0.034f, 0.352f }; + int ldb = 2; + float B_expected[] = { -0.0455826f, 0.0925287f, -0.0186f, -0.0765f, -0.0260316f, -0.0836058f, 0.0484f, -0.037f, 0.0661616f, -0.0710662f, -0.0352f, 0.0034f }; + cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1925) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1925) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 121; + int trans = 113; + int diag = 131; + int M = 2; + int N = 3; + float alpha[2] = {0.0f, 0.1f}; + float A[] = { 0.017f, -0.631f, -0.052f, 0.296f, -0.486f, -0.279f, -0.378f, 0.997f, 0.533f, 0.87f, 0.808f, 0.007f, 0.185f, -0.263f, -0.757f, -0.856f, 0.575f, -0.81f }; + int lda = 3; + float B[] = { -0.238f, -0.924f, 0.494f, -0.089f, 0.96f, 0.959f, 0.415f, 0.39f, -0.744f, -0.881f, -0.594f, 0.629f }; + int ldb = 3; + float B_expected[] = { 0.0798921f, -0.243487f, 0.0441094f, -0.0391653f, 0.0229218f, 0.134667f, 0.192099f, 0.152741f, 0.154557f, 0.0857677f, -0.0854154f, 0.0170199f }; + cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1926) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1926) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 121; + int trans = 113; + int diag = 132; + int M = 2; + int N = 3; + float alpha[2] = {0.0f, 0.1f}; + float A[] = { -0.977f, -0.949f, 0.192f, 0.803f, -0.964f, -0.162f, 0.799f, -0.081f, -0.055f, 0.014f, 0.99f, 0.804f, 0.913f, -0.898f, -0.057f, 0.51f, 0.453f, 0.622f }; + int lda = 3; + float B[] = { -0.852f, -0.001f, -0.955f, -0.97f, -0.071f, -0.664f, -0.077f, -0.746f, 0.228f, -0.948f, 0.476f, -0.285f }; + int ldb = 3; + float B_expected[] = { 0.0840343f, -0.066376f, 0.0369724f, -0.0350854f, 0.0664f, -0.0071f, 0.105481f, 0.0565767f, 0.0283146f, -0.00141f, 0.0285f, 0.0476f }; + cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1927) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1927) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 122; + int trans = 113; + int diag = 131; + int M = 2; + int N = 3; + float alpha[2] = {0.0f, 0.1f}; + float A[] = { 0.822f, 0.618f, -0.935f, 0.49f, 0.885f, -0.488f, 0.412f, 0.861f, -0.144f, 0.906f, -0.054f, 0.455f, 0.213f, 0.34f, -0.465f, 0.107f, -0.611f, 0.088f }; + int lda = 3; + float B[] = { 0.476f, -0.297f, -0.966f, -0.038f, -0.346f, -0.81f, -0.749f, -0.065f, -0.225f, -0.663f, 0.073f, -0.379f }; + int ldb = 3; + float B_expected[] = { -0.00473086f, 0.0543508f, 0.139511f, -0.0231317f, -0.199775f, 0.100154f, 0.0488188f, -0.054416f, -0.0610839f, 0.0929832f, -0.0289368f, -0.113983f }; + cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1928) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1928) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 122; + int trans = 113; + int diag = 132; + int M = 2; + int N = 3; + float alpha[2] = {0.0f, 0.1f}; + float A[] = { -0.188f, 0.741f, 0.583f, 0.527f, 0.025f, 0.216f, -0.44f, -0.071f, -0.126f, -0.093f, 0.743f, -0.476f, 0.661f, -0.66f, 0.564f, -0.943f, -0.976f, -0.035f }; + int lda = 3; + float B[] = { -0.648f, -0.367f, -0.402f, -0.309f, 0.412f, 0.531f, -0.248f, 0.181f, 0.507f, 0.502f, -0.593f, 0.404f }; + int ldb = 3; + float B_expected[] = { 0.0367f, -0.0648f, 0.0424472f, -0.0713177f, -0.21132f, 0.0600063f, -0.0181f, -0.0248f, -0.0599248f, 0.0410731f, 0.0277256f, 0.00238266f }; + cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1929) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1929) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 121; + int trans = 113; + int diag = 131; + int M = 2; + int N = 3; + float alpha[2] = {0.0f, 0.1f}; + float A[] = { 0.76f, -0.021f, -0.011f, 0.14f, 0.699f, 0.94f, 0.296f, 0.333f, 0.654f, -0.917f, 0.008f, -0.999f, -0.963f, 0.687f, -0.481f, 0.106f, 0.128f, -0.165f }; + int lda = 3; + float B[] = { -0.742f, 0.774f, -0.335f, -0.99f, 0.799f, 0.901f, 0.753f, -0.085f, -0.042f, -0.591f, 0.202f, 0.515f }; + int ldb = 2; + float B_expected[] = { 0.313744f, -0.259345f, -0.290807f, 0.212822f, -0.00668591f, -0.0164417f, 0.10903f, 0.137068f, 0.157578f, -0.23594f, -0.0747323f, 0.254147f }; + cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1930) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1930) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 121; + int trans = 113; + int diag = 132; + int M = 2; + int N = 3; + float alpha[2] = {0.0f, 0.1f}; + float A[] = { 0.582f, -0.175f, -0.48f, 0.567f, -0.571f, 0.062f, 0.038f, -0.625f, 0.737f, 0.799f, -0.569f, -0.932f, 0.522f, -0.763f, 0.156f, -0.524f, 0.138f, 0.007f }; + int lda = 3; + float B[] = { 0.998f, 0.6f, 0.555f, -0.737f, -0.162f, 0.263f, 0.317f, -0.092f, 0.302f, -0.671f, 0.418f, -0.814f }; + int ldb = 2; + float B_expected[] = { -0.106233f, 0.0480583f, 0.0514817f, -0.0392668f, -0.0209428f, -0.0560716f, 0.0184048f, -0.0174744f, 0.0671f, 0.0302f, 0.0814f, 0.0418f }; + cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1931) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1931) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 122; + int trans = 113; + int diag = 131; + int M = 2; + int N = 3; + float alpha[2] = {0.0f, 0.1f}; + float A[] = { 0.964f, 0.509f, 0.48f, -0.833f, 0.867f, 0.51f, -0.643f, 0.115f, -0.594f, -0.409f, -0.174f, 0.527f, 0.676f, 0.431f, 0.261f, -0.239f, 0.816f, -0.231f }; + int lda = 3; + float B[] = { -0.659f, -0.029f, -0.581f, -0.938f, -0.904f, -0.445f, 0.119f, 0.709f, -0.649f, 0.825f, 0.532f, -0.453f }; + int ldb = 2; + float B_expected[] = { 0.0305784f, -0.0522153f, 0.100975f, -0.00695419f, -0.055793f, 0.11446f, 0.0887801f, 0.177079f, -0.177262f, 0.0336107f, -0.0717714f, 0.251108f }; + cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1932) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1932) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 122; + int trans = 113; + int diag = 132; + int M = 2; + int N = 3; + float alpha[2] = {0.0f, 0.1f}; + float A[] = { 0.859f, 0.745f, 0.03f, -0.98f, -0.402f, 0.38f, -0.214f, 0.605f, 0.342f, -0.059f, -0.096f, 0.606f, -0.543f, 0.503f, 0.63f, -0.269f, 0.252f, 0.626f }; + int lda = 3; + float B[] = { 0.85f, 0.642f, 0.679f, -0.254f, 0.192f, 0.766f, -0.869f, -0.09f, 0.68f, -0.898f, 0.272f, -0.651f }; + int ldb = 2; + float B_expected[] = { -0.0642f, 0.085f, 0.0254f, 0.0679f, 0.008626f, 0.079566f, 0.07478f, -0.113829f, -0.0156973f, 0.0906397f, 0.125668f, 0.0985369f }; + cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1933) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1933) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 121; + int trans = 111; + int diag = 131; + int M = 2; + int N = 3; + double alpha[2] = {0, 0}; + double A[] = { 0.189, 0.519, -0.455, -0.444, -0.21, -0.507, -0.591, 0.859 }; + int lda = 2; + double B[] = { -0.779, -0.484, 0.249, -0.107, -0.755, -0.047, 0.941, 0.675, -0.757, 0.645, -0.649, 0.242 }; + int ldb = 3; + double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; + cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1934) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1934) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 121; + int trans = 111; + int diag = 132; + int M = 2; + int N = 3; + double alpha[2] = {0, 0}; + double A[] = { -0.988, 0.73, 0.279, -0.967, -0.288, -0.095, -0.821, 0.178 }; + int lda = 2; + double B[] = { 0.702, 0.943, -0.235, -0.565, 0.279, -0.146, 0.816, 0.473, 0.893, 0.877, -0.797, -0.159 }; + int ldb = 3; + double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; + cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1935) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1935) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 122; + int trans = 111; + int diag = 131; + int M = 2; + int N = 3; + double alpha[2] = {0, 0}; + double A[] = { 0.716, -0.549, 0.436, -0.822, -0.029, -0.586, 0.791, -0.159 }; + int lda = 2; + double B[] = { 0.021, 0.391, 0.296, -0.154, -0.513, 0.738, -0.336, 0.317, 0.502, 0.543, 0.027, 0.802 }; + int ldb = 3; + double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; + cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1936) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1936) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 122; + int trans = 111; + int diag = 132; + int M = 2; + int N = 3; + double alpha[2] = {0, 0}; + double A[] = { 0.715, -0.875, -0.501, 0.425, -0.928, -0.929, -0.542, 0.915 }; + int lda = 2; + double B[] = { 0.065, 0.679, -0.545, 0.042, 0.199, -0.86, 0.159, 0.943, 0.19, 0.403, 0.994, 0.76 }; + int ldb = 3; + double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; + cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1937) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1937) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 121; + int trans = 111; + int diag = 131; + int M = 2; + int N = 3; + double alpha[2] = {0, 0}; + double A[] = { -0.936, -0.989, -0.57, 0.018, -0.821, 0.516, -0.479, 0.209 }; + int lda = 2; + double B[] = { 0.722, -0.756, -0.828, -0.191, -0.981, -0.466, 0.347, 0.85, -0.596, -0.826, -0.182, -0.321 }; + int ldb = 2; + double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; + cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1938) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1938) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 121; + int trans = 111; + int diag = 132; + int M = 2; + int N = 3; + double alpha[2] = {0, 0}; + double A[] = { 0.693, 0.976, -0.356, -0.313, 0.926, -0.164, -0.337, 0.056 }; + int lda = 2; + double B[] = { -0.988, -0.633, -0.745, -0.392, -0.362, -0.708, -0.706, -0.093, -0.177, 0.837, 0.391, -0.853 }; + int ldb = 2; + double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; + cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1939) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1939) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 122; + int trans = 111; + int diag = 131; + int M = 2; + int N = 3; + double alpha[2] = {0, 0}; + double A[] = { -0.483, -0.383, 0.357, 0.889, 0.523, -0.148, -0.592, 0.481 }; + int lda = 2; + double B[] = { -0.41, 0.994, -0.779, -0.354, 0.571, 0.51, -0.526, 0.934, 0.469, 0.735, -0.47, -0.164 }; + int ldb = 2; + double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; + cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1940) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1940) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 122; + int trans = 111; + int diag = 132; + int M = 2; + int N = 3; + double alpha[2] = {0, 0}; + double A[] = { -0.576, -0.089, 0.953, -0.317, 0.408, 0.618, 0.092, -0.84 }; + int lda = 2; + double B[] = { 0.141, -0.32, -0.007, -0.682, -0.068, -0.412, 0.675, -0.809, 0.931, -0.257, -0.048, 0.633 }; + int ldb = 2; + double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; + cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1941) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1941) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 121; + int trans = 111; + int diag = 131; + int M = 2; + int N = 3; + double alpha[2] = {0, 0}; + double A[] = { 0.269, 0.567, 0.497, -0.969, 0.957, 0.538, -0.921, 0.639, 0.599, -0.436, -0.045, 0.164, 0.827, 0.489, -0.729, 0.723, -0.01, 0.934 }; + int lda = 3; + double B[] = { -0.391, 0.434, -0.349, -0.456, -0.541, 0.289, 0.31, 0.447, 0.971, -0.626, -0.77, -0.882 }; + int ldb = 3; + double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; + cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1942) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1942) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 121; + int trans = 111; + int diag = 132; + int M = 2; + int N = 3; + double alpha[2] = {0, 0}; + double A[] = { -0.523, -0.364, -0.492, 0.294, 0.71, -0.401, 0.947, -0.008, 0.235, -0.47, 0.298, -0.603, -0.193, 0.598, 0.122, -0.733, -0.827, 0.491 }; + int lda = 3; + double B[] = { 0.872, 0.441, 0.518, 0.607, -0.04, -0.976, 0.201, -0.136, -0.958, -0.501, -0.549, -0.4 }; + int ldb = 3; + double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; + cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1943) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1943) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 122; + int trans = 111; + int diag = 131; + int M = 2; + int N = 3; + double alpha[2] = {0, 0}; + double A[] = { -0.177, -0.965, 0.589, -0.236, -0.303, -0.301, 0.982, 0.006, -0.73, 0.241, 0.636, -0.672, 0.886, 0.952, 0.501, -0.803, -0.823, -0.09 }; + int lda = 3; + double B[] = { -0.475, -0.646, -0.666, -0.886, 0.04, -0.736, -0.592, -0.995, 0.259, 0.701, -0.033, 0.616 }; + int ldb = 3; + double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; + cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1944) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1944) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 122; + int trans = 111; + int diag = 132; + int M = 2; + int N = 3; + double alpha[2] = {0, 0}; + double A[] = { -0.76, -0.29, -0.601, 0.327, 0.383, 0.883, 0.589, -0.708, 0.912, -0.982, 0.629, 0.879, -0.578, -0.814, 0.168, 0.91, 0.328, 0.223 }; + int lda = 3; + double B[] = { 0.381, 0.829, 0.096, 0.382, 0.664, 0.006, -0.376, -0.338, 0.344, -0.889, -0.175, 0.083 }; + int ldb = 3; + double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; + cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1945) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1945) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 121; + int trans = 111; + int diag = 131; + int M = 2; + int N = 3; + double alpha[2] = {0, 0}; + double A[] = { 0.129, -0.161, 0.102, 0.443, -0.138, 0.677, -0.87, 0.327, 0.917, 0.446, 0.798, -0.91, -0.574, 0.333, -0.626, 0.14, 0.109, 0.161 }; + int lda = 3; + double B[] = { -0.689, -0.94, -0.814, 0.761, 0.389, 0.03, -0.175, -0.739, -0.904, 0.463, -0.511, 0.615 }; + int ldb = 2; + double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; + cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1946) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1946) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 121; + int trans = 111; + int diag = 132; + int M = 2; + int N = 3; + double alpha[2] = {0, 0}; + double A[] = { 0.062, 0.756, 0.179, 0.359, -0.047, -0.197, 0.678, 0.873, 0.003, -0.996, 0.507, -0.491, -0.726, -0.833, -0.118, -0.71, 0.714, 0.638 }; + int lda = 3; + double B[] = { -0.614, 0.193, 0.881, 0.538, 0.183, -0.034, 0.099, -0.154, -0.121, 0.842, -0.182, -0.229 }; + int ldb = 2; + double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; + cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1947) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1947) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 122; + int trans = 111; + int diag = 131; + int M = 2; + int N = 3; + double alpha[2] = {0, 0}; + double A[] = { -0.874, 0.171, 0.637, 0.554, 0.852, -0.203, 0.455, 0.619, -0.128, 0.759, 0.342, 0.372, 0.669, -0.537, -0.76, -0.348, -0.714, 0.573 }; + int lda = 3; + double B[] = { -0.434, 0.921, -0.949, 0.282, -0.665, 0.223, -0.633, 0.921, -0.73, 0.457, -0.021, -0.844 }; + int ldb = 2; + double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; + cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1948) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1948) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 122; + int trans = 111; + int diag = 132; + int M = 2; + int N = 3; + double alpha[2] = {0, 0}; + double A[] = { -0.189, -0.931, 0.414, 0.288, -0.245, 0.252, -0.465, -0.073, 0.327, 0.176, -0.067, 0.1, 0.124, 0.885, -0.731, -0.303, 0.954, -0.763 }; + int lda = 3; + double B[] = { 0.818, 0.948, -0.749, 0.808, -0.959, -0.797, 0.727, 0.701, 0.244, -0.801, 0.354, -0.781 }; + int ldb = 2; + double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; + cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1949) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1949) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 121; + int trans = 112; + int diag = 131; + int M = 2; + int N = 3; + double alpha[2] = {-1, 0}; + double A[] = { -0.65, -0.279, -0.543, -0.097, -0.641, 0.984, 0.507, -0.809 }; + int lda = 2; + double B[] = { -0.176, 0.87, -0.681, 0.409, -0.878, 0.522, 0.348, 0.679, -0.975, -0.815, -0.608, 0.86 }; + int ldb = 3; + double B_expected[] = { 0.256485077177, 1.22837025149, -0.656630178218, 0.911076645728, -0.849544610576, 1.16772760977, -0.193804546743, -0.283833884163, -0.811035478317, 1.16349859839, 0.292241175557, -0.141827660937 }; + cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1950) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1950) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 121; + int trans = 112; + int diag = 132; + int M = 2; + int N = 3; + double alpha[2] = {-1, 0}; + double A[] = { 0.23, -0.597, 0.068, 0.945, 0.045, -0.436, 0.113, 0.035 }; + int lda = 2; + double B[] = { -0.744, -0.465, -0.742, 0.996, -0.835, 0.712, -0.968, 0.053, -0.813, 0.36, 0.572, -0.489 }; + int ldb = 3; + double B_expected[] = { 0.744, 0.465, 0.742, -0.996, 0.835, -0.712, 1.356833, -0.7877, -0.178676, -0.993462, -1.30162, -0.251659 }; + cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1951) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1951) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 122; + int trans = 112; + int diag = 131; + int M = 2; + int N = 3; + double alpha[2] = {-1, 0}; + double A[] = { -0.689, -0.396, 0.415, -0.567, 0.001, 0.513, 0.837, 0.045 }; + int lda = 2; + double B[] = { -0.012, 0.2, 0.22, 0.81, -0.586, -0.198, 0.16, -0.958, -0.125, 0.833, 0.344, 0.213 }; + int ldb = 3; + double B_expected[] = { -0.573154258944, 0.525131422048, 1.33801555643, 0.47629585874, -0.770607912552, -0.160087833623, -0.129249609305, 1.15151282248, 0.0955601670381, -1.00035867087, -0.423449388979, -0.231714190557 }; + cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1952) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1952) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 122; + int trans = 112; + int diag = 132; + int M = 2; + int N = 3; + double alpha[2] = {-1, 0}; + double A[] = { 0.102, 0.86, -0.067, 0.12, 0.92, 0.441, 0.367, -0.104 }; + int lda = 2; + double B[] = { 0.386, 0.59, 0.222, 0.824, 0.091, 0.486, 0.43, 0.766, 0.576, 0.042, 0.013, -0.008 }; + int ldb = 3; + double B_expected[] = { -0.328206, 0.30435, 0.289398, -0.531344, -0.075512, -0.487627, -0.43, -0.766, -0.576, -0.042, -0.013, 0.008 }; + cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1953) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1953) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 121; + int trans = 112; + int diag = 131; + int M = 2; + int N = 3; + double alpha[2] = {-1, 0}; + double A[] = { -0.087, 0.925, -0.315, 0.251, 0.7, -0.223, 0.448, 0.373 }; + int lda = 2; + double B[] = { -0.333, -0.495, 0.995, -0.229, 0.425, -0.269, -0.756, -0.783, -0.214, 0.582, -0.351, -0.095 }; + int ldb = 2; + double B_expected[] = { 0.496880191475, -0.406733596387, -0.965186357327, 2.19761676664, 0.331095906598, 0.428318547163, 1.17655095681, 0.263745306399, -0.645240814927, -0.170663836866, 1.18578937767, -0.829739852214 }; + cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1954) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1954) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 121; + int trans = 112; + int diag = 132; + int M = 2; + int N = 3; + double alpha[2] = {-1, 0}; + double A[] = { 0.717, 0.572, -0.304, 0.878, 0.625, -0.615, -0.565, -0.643 }; + int lda = 2; + double B[] = { -0.383, -0.669, -0.043, -0.09, -0.999, -0.427, 0.834, 0.539, -0.973, -0.481, 0.071, -0.71 }; + int ldb = 2; + double B_expected[] = { 0.383, 0.669, -0.60781, -0.09258, 0.999, 0.427, -1.72098, -0.19149, 0.973, 0.481, -0.97494, 1.00777 }; + cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1955) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1955) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 122; + int trans = 112; + int diag = 131; + int M = 2; + int N = 3; + double alpha[2] = {-1, 0}; + double A[] = { 0.143, -0.022, 0.487, 0.444, 0.138, -0.871, 0.572, -0.093 }; + int lda = 2; + double B[] = { -0.073, -0.9, -0.688, 0.436, -0.213, -0.733, 0.809, -0.618, 0.696, 0.259, 0.494, 0.162 }; + int ldb = 2; + double B_expected[] = { -6.10129128737, 3.22195959384, 1.29255909931, -0.552083922664, 8.05253150033, 8.35261031753, -1.54904967648, 0.828563601552, -3.66721033067, 1.50334288416, -0.796532800529, -0.412722990296 }; + cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1956) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1956) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 122; + int trans = 112; + int diag = 132; + int M = 2; + int N = 3; + double alpha[2] = {-1, 0}; + double A[] = { 0.544, 0.918, -0.524, 0.547, -0.839, 0.4, -0.548, 0.49 }; + int lda = 2; + double B[] = { 0.475, -0.594, 0.252, -0.717, 0.867, 0.07, 0.264, 0.538, 0.028, 0.482, -0.59, -0.533 }; + int ldb = 2; + double B_expected[] = { -0.214849, 1.107552, -0.252, 0.717, -1.299622, -0.207504, -0.264, -0.538, 0.572711, -0.525438, 0.59, 0.533 }; + cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1957) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1957) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 121; + int trans = 112; + int diag = 131; + int M = 2; + int N = 3; + double alpha[2] = {-1, 0}; + double A[] = { -0.038, -0.116, -0.476, -0.818, 0.961, 0.271, -0.593, 0.548, -0.86, 0.429, -0.396, -0.559, 0.766, -0.326, -0.335, 0.633, -0.532, 0.317 }; + int lda = 3; + double B[] = { -0.459, 0.904, 0.887, 0.07, -0.497, -0.48, -0.313, 0.864, -0.029, -0.754, -0.566, -0.108 }; + int ldb = 3; + double B_expected[] = { -4.58258258525, -3.00717937382, 0.0668903493808, 0.800759804641, -0.292673260098, -1.0766492922, -0.911020412982, 7.68812066826, -0.0359723342287, -0.157963939743, -0.695872108638, -0.617653117365 }; + cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1958) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1958) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 121; + int trans = 112; + int diag = 132; + int M = 2; + int N = 3; + double alpha[2] = {-1, 0}; + double A[] = { 0.886, 0.945, 0.065, 0.882, -0.46, -0.095, 0.823, -0.245, -0.825, 0.904, -0.214, -0.268, -0.935, -0.017, 0.902, 0.561, 0.954, -0.665 }; + int lda = 3; + double B[] = { 0.076, -0.043, 0.873, -0.831, -0.329, -0.896, -0.174, 0.653, 0.489, 0.25, -0.896, 0.609 }; + int ldb = 3; + double B_expected[] = { 1.037824842, 1.333886264, -1.042722, 1.110916, 0.329, 0.896, 0.529073224, -0.720680322, -0.134044, -0.140198, 0.896, -0.609 }; + cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1959) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1959) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 122; + int trans = 112; + int diag = 131; + int M = 2; + int N = 3; + double alpha[2] = {-1, 0}; + double A[] = { -0.691, -0.056, -0.339, -0.483, -0.975, -0.052, -0.198, 0.576, -0.075, 0.718, -0.321, 0.728, -0.124, 0.774, 0.685, -0.112, 0.178, 0.275 }; + int lda = 3; + double B[] = { -0.062, -0.391, 0.326, 0.42, -0.203, 0.45, 0.338, 0.991, -0.47, -0.363, 0.766, -0.961 }; + int ldb = 3; + double B_expected[] = { -0.134697690677, -0.554930433172, -0.526377715671, 0.991348747823, -2.94323584375, -1.92805449726, 0.601422754501, 1.38541291715, 0.201151053335, -1.95287726277, 5.96201044303, 2.1797020274 }; + cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1960) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1960) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 122; + int trans = 112; + int diag = 132; + int M = 2; + int N = 3; + double alpha[2] = {-1, 0}; + double A[] = { -0.318, 0.067, -0.097, 0.359, -0.688, 0.307, -0.63, -0.616, 0.193, 0.817, -0.792, -0.117, -0.501, -0.929, -0.595, -0.144, 0.453, 0.658 }; + int lda = 3; + double B[] = { -0.249, -0.206, 0.424, -0.681, -0.464, 0.21, 0.541, 0.082, 0.803, -0.461, -0.638, 0.358 }; + int ldb = 3; + double B_expected[] = { 0.249, 0.206, -0.394026, 0.964164, 0.024089914, 0.641464836, -0.541, -0.082, -1.093318, 0.076084, -0.218343306, -1.013838812 }; + cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1961) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1961) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 121; + int trans = 112; + int diag = 131; + int M = 2; + int N = 3; + double alpha[2] = {-1, 0}; + double A[] = { 0.691, 0.808, -0.178, 0.489, 0.159, -0.646, -0.692, -0.968, -0.146, -0.281, -0.385, 0.773, 0.704, 0.782, 0.551, -0.727, 0.669, 0.858 }; + int lda = 3; + double B[] = { -0.657, -0.69, -0.051, 0.28, -0.846, 0.304, 0.052, 0.543, 0.613, -0.98, 0.983, -0.484 }; + int ldb = 2; + double B_expected[] = { 2.42007211075, -0.148130095453, 4.93683906416, -0.804178199722, 1.76852672271, 0.633536755193, 4.41638755104, -0.0400468884046, 0.363887727302, 0.998182854971, -0.204739276437, 0.986048279795 }; + cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1962) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1962) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 121; + int trans = 112; + int diag = 132; + int M = 2; + int N = 3; + double alpha[2] = {-1, 0}; + double A[] = { -0.244, -0.925, -0.539, 0.422, 0.285, -0.954, -0.347, -0.255, -0.616, -0.979, 0.631, -0.864, -0.053, -0.715, -0.749, -0.973, -0.409, -0.247 }; + int lda = 3; + double B[] = { 0.922, -0.728, 0.588, -0.715, -0.92, -0.065, -0.583, 0.178, 0.996, 0.215, -0.614, -0.443 }; + int ldb = 2; + double B_expected[] = { -0.416484258, -0.267425916, -0.851455486, 1.594186448, 0.383191, -1.065143, 0.611847, 0.751229, -0.996, -0.215, 0.614, 0.443 }; + cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1963) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1963) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 122; + int trans = 112; + int diag = 131; + int M = 2; + int N = 3; + double alpha[2] = {-1, 0}; + double A[] = { 0.992, 0.172, -0.646, 0.067, -0.823, -0.013, -0.55, -0.438, -0.44, -0.302, 0.99, -0.373, 0.513, -0.106, -0.591, -0.504, 0.929, -0.318 }; + int lda = 3; + double B[] = { 0.467, 0.227, 0.988, -0.709, -0.272, -0.601, 0.719, -0.133, 0.203, 0.937, -0.382, -0.334 }; + int ldb = 2; + double B_expected[] = { -0.495544804508, -0.142909570186, -0.846593689328, 0.861506163875, -0.485462670276, -0.898345893497, 1.07522946065, -2.43403194583, 0.315527055267, -0.271726799352, -1.73234815305, 3.5434654009 }; + cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1964) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1964) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 122; + int trans = 112; + int diag = 132; + int M = 2; + int N = 3; + double alpha[2] = {-1, 0}; + double A[] = { -0.692, -0.245, -0.874, 0.77, 0.07, 0.01, 0.018, -0.42, -0.405, -0.387, 0.888, -0.912, -0.81, 0.314, 0.66, -0.895, -0.556, 0.157 }; + int lda = 3; + double B[] = { -0.801, 0.542, 0.699, 0.574, -0.56, 0.043, 0.742, -0.331, -0.614, 0.776, -0.335, 0.131 }; + int ldb = 2; + double B_expected[] = { 0.801, -0.542, -0.699, -0.574, 0.842734, -1.133478, -1.794906, 0.367554, 0.837894144, 1.029031872, 1.63685728, -2.047172224 }; + cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1965) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1965) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 121; + int trans = 113; + int diag = 131; + int M = 2; + int N = 3; + double alpha[2] = {0, 0.1}; + double A[] = { -0.035, -0.456, 0.152, 0.976, 0.687, -0.527, -0.571, 0.832 }; + int lda = 2; + double B[] = { -0.868, 0.033, -0.131, -0.936, 0.993, 0.104, -0.684, 0.851, 0.523, 0.836, -0.205, 0.319 }; + int ldb = 3; + double B_expected[] = { -0.188683836853, 0.0217191541444, -0.044222393276, -0.201868895253, 0.218228063549, 0.00605705652583, 0.252579293874, 0.0800538768738, -0.099911150161, 0.0758372341381, -0.116723296822, -0.16542230206 }; + cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1966) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1966) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 121; + int trans = 113; + int diag = 132; + int M = 2; + int N = 3; + double alpha[2] = {0, 0.1}; + double A[] = { -0.481, -0.442, 0.69, 0.415, 0.983, -0.466, 0.503, -0.147 }; + int lda = 2; + double B[] = { -0.287, -0.777, -0.187, 0.061, 0.631, 0.797, 0.833, -0.49, -0.188, 0.386, -0.904, -0.793 }; + int ldb = 3; + double B_expected[] = { 0.0777, -0.0287, -0.0061, -0.0187, -0.0797, 0.0631, 0.0072975, 0.1353485, -0.0266305, -0.0084285, 0.1081065, -0.1670145 }; + cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1967) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1967) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 122; + int trans = 113; + int diag = 131; + int M = 2; + int N = 3; + double alpha[2] = {0, 0.1}; + double A[] = { -0.286, 0.025, -0.111, 0.724, -0.973, -0.071, 0.527, -0.334 }; + int lda = 2; + double B[] = { -0.381, -0.131, 0.33, 0.09, 0.35, 0.062, -0.874, 0.252, 0.924, 0.251, 0.559, -0.619 }; + int ldb = 3; + double B_expected[] = { 0.38447496828, 0.401499279514, -0.210140860451, -0.584596680596, -0.443343106286, -0.127686958741, -0.109102585509, -0.096697792106, 0.045298174859, 0.146623168116, 0.131759250934, 0.0225662432408 }; + cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1968) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1968) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 122; + int trans = 113; + int diag = 132; + int M = 2; + int N = 3; + double alpha[2] = {0, 0.1}; + double A[] = { -0.862, -0.003, 0.975, 0.364, -0.996, 0.909, -0.316, -0.816 }; + int lda = 2; + double B[] = { 0.167, 0.961, 0.116, 0.675, 0.086, 0.259, -0.483, 0.898, 0.434, 0.723, 0.505, 0.042 }; + int ldb = 3; + double B_expected[] = { -0.1416361, -0.113035, -0.1789614, -0.0108943, -0.0759877, 0.0550802, -0.0898, -0.0483, -0.0723, 0.0434, -0.0042, 0.0505 }; + cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1969) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1969) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 121; + int trans = 113; + int diag = 131; + int M = 2; + int N = 3; + double alpha[2] = {0, 0.1}; + double A[] = { -0.826, -0.025, 0.638, -0.183, -0.184, 0.806, 0.131, 0.764 }; + int lda = 2; + double B[] = { -0.038, 0.14, -0.31, -0.494, -0.974, -0.396, -0.217, 0.519, -0.656, -0.737, 0.383, -0.03 }; + int ldb = 2; + double B_expected[] = { 0.0167945280502, 0.00510879322186, 0.0315562985639, 0.0579039669012, -0.0514636821443, 0.116360058046, 0.0192833017545, -0.206389577002, -0.0915450409357, 0.0766481525141, 0.0107002286761, -0.100817314679 }; + cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1970) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1970) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 121; + int trans = 113; + int diag = 132; + int M = 2; + int N = 3; + double alpha[2] = {0, 0.1}; + double A[] = { 0.282, -0.433, -0.793, -0.008, -0.999, 0.377, -0.979, 0.421 }; + int lda = 2; + double B[] = { 0.622, -0.722, 0.605, -0.877, 0.935, -0.906, 0.719, -0.607, 0.022, -0.326, -0.905, 0.323 }; + int ldb = 2; + double B_expected[] = { 0.0722, 0.0622, 0.1363784, 0.1498572, 0.0906, 0.0935, 0.1159599, 0.1994627, 0.0326, 0.0022, -0.000562, -0.076012 }; + cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1971) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1971) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 122; + int trans = 113; + int diag = 131; + int M = 2; + int N = 3; + double alpha[2] = {0, 0.1}; + double A[] = { 0.934, 0.007, -0.958, 0.434, 0.263, 0.776, 0.097, 0.83 }; + int lda = 2; + double B[] = { -0.405, 0.251, 0.13, 0.388, -0.664, -0.732, -0.779, -0.5, 0.775, -0.299, -0.45, 0.923 }; + int ldb = 2; + double B_expected[] = { -0.026920633021, -0.0986978374343, -0.020841203536, -0.0443113292253, 0.157683298836, 0.0261984465224, 0.099536165222, 0.0486084240644, 0.127725373746, -0.0161073528761, 0.0406652355905, -0.115957262473 }; + cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1972) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1972) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 122; + int trans = 113; + int diag = 132; + int M = 2; + int N = 3; + double alpha[2] = {0, 0.1}; + double A[] = { -0.169, -0.768, -0.529, 0.236, -0.506, 0.691, -0.786, -0.36 }; + int lda = 2; + double B[] = { 0.289, -0.985, 0.931, 0.652, -0.861, -0.51, -0.753, -0.542, -0.822, 0.174, 0.799, 0.8 }; + int ldb = 2; + double B_expected[] = { 0.0420376, 0.0627627, -0.0652, 0.0931, 0.0974426, -0.1131425, 0.0542, -0.0753, -0.0785764, -0.0588129, -0.08, 0.0799 }; + cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1973) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1973) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 121; + int trans = 113; + int diag = 131; + int M = 2; + int N = 3; + double alpha[2] = {0, 0.1}; + double A[] = { 0.834, 0.53, 0.278, 0.293, 0.66, 0.497, -0.664, 0.429, -0.294, -0.661, 0.52, -0.247, 0.392, -0.227, 0.209, -0.902, 0.843, 0.37 }; + int lda = 3; + double B[] = { -0.738, 0.166, 0.721, -0.541, -0.963, -0.832, -0.376, -0.718, 0.765, -0.547, 0.451, -0.581 }; + int ldb = 3; + double B_expected[] = { -0.115188282202, -0.000411685478887, 0.105497263516, -0.0083759187965, 0.124793492766, -0.0594619308146, 0.0499107469, -0.0152598288542, 0.00927285309719, -0.0831454824908, 0.0380996260983, 0.0702216627003 }; + cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1974) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1974) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 121; + int trans = 113; + int diag = 132; + int M = 2; + int N = 3; + double alpha[2] = {0, 0.1}; + double A[] = { 0.531, -0.691, 0.801, 0.437, 0.402, 0.788, 0.824, 0.599, -0.362, 0.076, 0.192, 0.229, -0.259, -0.279, 0.79, -0.797, 0.728, 0.397 }; + int lda = 3; + double B[] = { -0.049, 0.642, 0.36, 0.428, 0.523, -0.612, 0.459, -0.664, 0.328, 0.513, -0.225, 0.273 }; + int ldb = 3; + double B_expected[] = { -0.0941948813, -0.0387898759, -0.0665271, 0.0399732, 0.0612, 0.0523, 0.1143807788, -0.0091687866, -0.0409059, 0.0308683, -0.0273, -0.0225 }; + cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1975) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1975) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 122; + int trans = 113; + int diag = 131; + int M = 2; + int N = 3; + double alpha[2] = {0, 0.1}; + double A[] = { 0.169, -0.092, -0.13, 0.001, 0.573, 0.256, 0.632, -0.09, -0.942, 0.948, 0.595, -0.337, 0.01, -0.786, 0.944, 0.906, -0.832, -0.566 }; + int lda = 3; + double B[] = { -0.461, -0.112, 0.674, -0.268, -0.286, -0.657, 0.329, 0.91, 0.73, 0.488, -0.363, -0.01 }; + int ldb = 3; + double B_expected[] = { -0.0634274139095, -0.238252532073, -0.142693434208, -0.0938542376785, -0.0907100858097, -0.0412217911039, -0.333617825793, 0.376288993923, -0.0317846476268, 0.175075250306, -0.125200687799, -0.118937960805 }; + cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1976) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1976) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 122; + int trans = 113; + int diag = 132; + int M = 2; + int N = 3; + double alpha[2] = {0, 0.1}; + double A[] = { -0.53, 0.141, 0.235, 0.474, -0.964, -0.441, 0.197, -0.703, 0.942, 0.98, 0.741, 0.499, -0.738, 0.234, -0.27, -0.158, 0.804, -0.878 }; + int lda = 3; + double B[] = { 0.46, -0.508, 0.918, -0.516, 0.012, -0.451, -0.676, 0.551, -0.38, 0.053, 0.645, 0.785 }; + int ldb = 3; + double B_expected[] = { 0.0508, 0.046, 0.0739304, 0.0470256, 0.0992176528, 0.0480511088, -0.0551, -0.0676, -0.0419681, 0.0140525, -0.112456492, 0.0121429348 }; + cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1977) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1977) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 121; + int trans = 113; + int diag = 131; + int M = 2; + int N = 3; + double alpha[2] = {0, 0.1}; + double A[] = { 0.286, 0.548, 0.637, -0.856, -0.739, 0.307, -0.049, -0.342, -0.39, 0.618, -0.757, -0.453, -0.533, 0.131, 0.431, 0.087, -0.776, -0.439 }; + int lda = 3; + double B[] = { 0.968, 0.032, 0.013, 0.684, -0.485, 0.613, 0.316, 0.812, -0.459, 0.34, -0.268, -0.565 }; + int ldb = 2; + double B_expected[] = { -0.126374952238, 0.0484874156039, -0.0755178690743, -0.200973083054, 0.138328459491, -0.0263170966956, 0.00492064241274, -0.0787874374991, 0.00784239970713, 0.0635860998343, -0.0699577429529, -0.00504052726328 }; + cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1978) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1978) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 121; + int trans = 113; + int diag = 132; + int M = 2; + int N = 3; + double alpha[2] = {0, 0.1}; + double A[] = { -0.911, 0.645, -0.525, 0.045, -0.654, -0.896, -0.39, 0.419, 0.867, 0.561, -0.842, -0.835, -0.249, -0.384, 0.575, -0.41, 0.105, -0.282 }; + int lda = 3; + double B[] = { 0.777, 0.361, 0.535, 0.441, 0.508, 0.439, -0.347, 0.131, -0.874, 0.646, 0.917, 0.746 }; + int ldb = 2; + double B_expected[] = { -0.155796389, 0.112639999, 0.0226368685, 0.111048763, -0.042589, 0.127541, 0.067392, -0.0568415, -0.0646, -0.0874, -0.0746, 0.0917 }; + cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1979) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1979) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 122; + int trans = 113; + int diag = 131; + int M = 2; + int N = 3; + double alpha[2] = {0, 0.1}; + double A[] = { -0.519, 0.318, -0.318, 0.73, 0.721, 0.302, -0.604, 0.721, 0.387, 0.673, -0.549, -0.136, 0.101, 0.676, -0.064, -0.659, -0.141, 0.991 }; + int lda = 3; + double B[] = { -0.856, -0.128, 0.721, -0.511, 0.175, -0.341, 0.832, -0.662, 0.652, -0.939, -0.775, -0.899 }; + int ldb = 2; + double B_expected[] = { 0.055542329649, 0.130900846188, -0.133470180979, -0.0571415846795, -0.13942012508, 0.0150972236507, 0.0782230770838, 0.0522994181773, -0.00621452256957, -0.0615971232698, 0.0222285648871, 0.258910370231 }; + cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1980) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1980) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 122; + int trans = 113; + int diag = 132; + int M = 2; + int N = 3; + double alpha[2] = {0, 0.1}; + double A[] = { -0.092, -0.392, 0.108, -0.918, 0.505, -0.974, 0.213, 0.97, -0.465, 0.604, -0.737, -0.578, -0.051, -0.43, 0.066, -0.934, -0.347, 0.157 }; + int lda = 3; + double B[] = { -0.489, 0.673, -0.232, 0.668, -0.396, -0.569, 0.763, 0.581, 0.117, -0.249, 0.272, -0.832 }; + int ldb = 2; + double B_expected[] = { -0.0673, -0.0489, -0.0668, -0.0232, 0.0192782, 0.0274626, -0.0721832, 0.140128, 0.0413393162, 0.1110418366, 0.1221321656, 0.2489754256 }; + cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1981) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1981) imag"); + }; + }; + }; + + +} diff --git a/gsl-2.5/cblas/test_trsv.c b/gsl-2.5/cblas/test_trsv.c new file mode 100644 index 00000000..39f5083b --- /dev/null +++ b/gsl-2.5/cblas/test_trsv.c @@ -0,0 +1,1739 @@ +#include +#include +#include +#include + +#include "tests.h" + +void +test_trsv (void) { +const double flteps = 1e-4, dbleps = 1e-6; + { + int order = 101; + int trans = 111; + int uplo = 121; + int diag = 131; + int N = 1; + int lda = 1; + float A[] = { 0.995f }; + float X[] = { 0.348f }; + int incX = -1; + float x_expected[] = { 0.349749f }; + cblas_strsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "strsv(case 1150)"); + } + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 121; + int diag = 132; + int N = 1; + int lda = 1; + float A[] = { 0.995f }; + float X[] = { 0.348f }; + int incX = -1; + float x_expected[] = { 0.348f }; + cblas_strsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "strsv(case 1151)"); + } + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 122; + int diag = 131; + int N = 1; + int lda = 1; + float A[] = { 0.995f }; + float X[] = { 0.348f }; + int incX = -1; + float x_expected[] = { 0.349749f }; + cblas_strsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "strsv(case 1152)"); + } + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 122; + int diag = 132; + int N = 1; + int lda = 1; + float A[] = { 0.995f }; + float X[] = { 0.348f }; + int incX = -1; + float x_expected[] = { 0.348f }; + cblas_strsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "strsv(case 1153)"); + } + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 121; + int diag = 131; + int N = 1; + int lda = 1; + float A[] = { 0.995f }; + float X[] = { 0.348f }; + int incX = -1; + float x_expected[] = { 0.349749f }; + cblas_strsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "strsv(case 1154)"); + } + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 121; + int diag = 132; + int N = 1; + int lda = 1; + float A[] = { 0.995f }; + float X[] = { 0.348f }; + int incX = -1; + float x_expected[] = { 0.348f }; + cblas_strsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "strsv(case 1155)"); + } + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 122; + int diag = 131; + int N = 1; + int lda = 1; + float A[] = { 0.995f }; + float X[] = { 0.348f }; + int incX = -1; + float x_expected[] = { 0.349749f }; + cblas_strsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "strsv(case 1156)"); + } + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 122; + int diag = 132; + int N = 1; + int lda = 1; + float A[] = { 0.995f }; + float X[] = { 0.348f }; + int incX = -1; + float x_expected[] = { 0.348f }; + cblas_strsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "strsv(case 1157)"); + } + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 121; + int diag = 131; + int N = 1; + int lda = 1; + float A[] = { 0.793f }; + float X[] = { 0.338f }; + int incX = -1; + float x_expected[] = { 0.42623f }; + cblas_strsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "strsv(case 1158)"); + } + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 121; + int diag = 132; + int N = 1; + int lda = 1; + float A[] = { 0.793f }; + float X[] = { 0.338f }; + int incX = -1; + float x_expected[] = { 0.338f }; + cblas_strsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "strsv(case 1159)"); + } + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 122; + int diag = 131; + int N = 1; + int lda = 1; + float A[] = { 0.793f }; + float X[] = { 0.338f }; + int incX = -1; + float x_expected[] = { 0.42623f }; + cblas_strsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "strsv(case 1160)"); + } + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 122; + int diag = 132; + int N = 1; + int lda = 1; + float A[] = { 0.793f }; + float X[] = { 0.338f }; + int incX = -1; + float x_expected[] = { 0.338f }; + cblas_strsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "strsv(case 1161)"); + } + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 121; + int diag = 131; + int N = 1; + int lda = 1; + float A[] = { 0.793f }; + float X[] = { 0.338f }; + int incX = -1; + float x_expected[] = { 0.42623f }; + cblas_strsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "strsv(case 1162)"); + } + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 121; + int diag = 132; + int N = 1; + int lda = 1; + float A[] = { 0.793f }; + float X[] = { 0.338f }; + int incX = -1; + float x_expected[] = { 0.338f }; + cblas_strsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "strsv(case 1163)"); + } + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 122; + int diag = 131; + int N = 1; + int lda = 1; + float A[] = { 0.793f }; + float X[] = { 0.338f }; + int incX = -1; + float x_expected[] = { 0.42623f }; + cblas_strsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "strsv(case 1164)"); + } + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 122; + int diag = 132; + int N = 1; + int lda = 1; + float A[] = { 0.793f }; + float X[] = { 0.338f }; + int incX = -1; + float x_expected[] = { 0.338f }; + cblas_strsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "strsv(case 1165)"); + } + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 121; + int diag = 131; + int N = 1; + int lda = 1; + double A[] = { -0.21 }; + double X[] = { 0.473 }; + int incX = -1; + double x_expected[] = { -2.25238095238 }; + cblas_dtrsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtrsv(case 1166)"); + } + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 121; + int diag = 132; + int N = 1; + int lda = 1; + double A[] = { -0.21 }; + double X[] = { 0.473 }; + int incX = -1; + double x_expected[] = { 0.473 }; + cblas_dtrsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtrsv(case 1167)"); + } + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 122; + int diag = 131; + int N = 1; + int lda = 1; + double A[] = { -0.21 }; + double X[] = { 0.473 }; + int incX = -1; + double x_expected[] = { -2.25238095238 }; + cblas_dtrsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtrsv(case 1168)"); + } + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 122; + int diag = 132; + int N = 1; + int lda = 1; + double A[] = { -0.21 }; + double X[] = { 0.473 }; + int incX = -1; + double x_expected[] = { 0.473 }; + cblas_dtrsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtrsv(case 1169)"); + } + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 121; + int diag = 131; + int N = 1; + int lda = 1; + double A[] = { -0.21 }; + double X[] = { 0.473 }; + int incX = -1; + double x_expected[] = { -2.25238095238 }; + cblas_dtrsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtrsv(case 1170)"); + } + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 121; + int diag = 132; + int N = 1; + int lda = 1; + double A[] = { -0.21 }; + double X[] = { 0.473 }; + int incX = -1; + double x_expected[] = { 0.473 }; + cblas_dtrsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtrsv(case 1171)"); + } + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 122; + int diag = 131; + int N = 1; + int lda = 1; + double A[] = { -0.21 }; + double X[] = { 0.473 }; + int incX = -1; + double x_expected[] = { -2.25238095238 }; + cblas_dtrsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtrsv(case 1172)"); + } + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 122; + int diag = 132; + int N = 1; + int lda = 1; + double A[] = { -0.21 }; + double X[] = { 0.473 }; + int incX = -1; + double x_expected[] = { 0.473 }; + cblas_dtrsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtrsv(case 1173)"); + } + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 121; + int diag = 131; + int N = 1; + int lda = 1; + double A[] = { 0.748 }; + double X[] = { 0.979 }; + int incX = -1; + double x_expected[] = { 1.30882352941 }; + cblas_dtrsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtrsv(case 1174)"); + } + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 121; + int diag = 132; + int N = 1; + int lda = 1; + double A[] = { 0.748 }; + double X[] = { 0.979 }; + int incX = -1; + double x_expected[] = { 0.979 }; + cblas_dtrsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtrsv(case 1175)"); + } + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 122; + int diag = 131; + int N = 1; + int lda = 1; + double A[] = { 0.748 }; + double X[] = { 0.979 }; + int incX = -1; + double x_expected[] = { 1.30882352941 }; + cblas_dtrsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtrsv(case 1176)"); + } + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 122; + int diag = 132; + int N = 1; + int lda = 1; + double A[] = { 0.748 }; + double X[] = { 0.979 }; + int incX = -1; + double x_expected[] = { 0.979 }; + cblas_dtrsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtrsv(case 1177)"); + } + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 121; + int diag = 131; + int N = 1; + int lda = 1; + double A[] = { 0.748 }; + double X[] = { 0.979 }; + int incX = -1; + double x_expected[] = { 1.30882352941 }; + cblas_dtrsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtrsv(case 1178)"); + } + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 121; + int diag = 132; + int N = 1; + int lda = 1; + double A[] = { 0.748 }; + double X[] = { 0.979 }; + int incX = -1; + double x_expected[] = { 0.979 }; + cblas_dtrsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtrsv(case 1179)"); + } + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 122; + int diag = 131; + int N = 1; + int lda = 1; + double A[] = { 0.748 }; + double X[] = { 0.979 }; + int incX = -1; + double x_expected[] = { 1.30882352941 }; + cblas_dtrsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtrsv(case 1180)"); + } + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 122; + int diag = 132; + int N = 1; + int lda = 1; + double A[] = { 0.748 }; + double X[] = { 0.979 }; + int incX = -1; + double x_expected[] = { 0.979 }; + cblas_dtrsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtrsv(case 1181)"); + } + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 121; + int diag = 131; + int N = 1; + int lda = 1; + float A[] = { 0.529f, -0.348f }; + float X[] = { -0.95f, 0.343f }; + int incX = -1; + float x_expected[] = { -1.55112f, -0.372004f }; + cblas_ctrsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctrsv(case 1182) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctrsv(case 1182) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 121; + int diag = 132; + int N = 1; + int lda = 1; + float A[] = { 0.529f, -0.348f }; + float X[] = { -0.95f, 0.343f }; + int incX = -1; + float x_expected[] = { -0.95f, 0.343f }; + cblas_ctrsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctrsv(case 1183) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctrsv(case 1183) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 122; + int diag = 131; + int N = 1; + int lda = 1; + float A[] = { 0.529f, -0.348f }; + float X[] = { -0.95f, 0.343f }; + int incX = -1; + float x_expected[] = { -1.55112f, -0.372004f }; + cblas_ctrsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctrsv(case 1184) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctrsv(case 1184) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 122; + int diag = 132; + int N = 1; + int lda = 1; + float A[] = { 0.529f, -0.348f }; + float X[] = { -0.95f, 0.343f }; + int incX = -1; + float x_expected[] = { -0.95f, 0.343f }; + cblas_ctrsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctrsv(case 1185) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctrsv(case 1185) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 121; + int diag = 131; + int N = 1; + int lda = 1; + float A[] = { 0.529f, -0.348f }; + float X[] = { -0.95f, 0.343f }; + int incX = -1; + float x_expected[] = { -1.55112f, -0.372004f }; + cblas_ctrsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctrsv(case 1186) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctrsv(case 1186) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 121; + int diag = 132; + int N = 1; + int lda = 1; + float A[] = { 0.529f, -0.348f }; + float X[] = { -0.95f, 0.343f }; + int incX = -1; + float x_expected[] = { -0.95f, 0.343f }; + cblas_ctrsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctrsv(case 1187) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctrsv(case 1187) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 122; + int diag = 131; + int N = 1; + int lda = 1; + float A[] = { 0.529f, -0.348f }; + float X[] = { -0.95f, 0.343f }; + int incX = -1; + float x_expected[] = { -1.55112f, -0.372004f }; + cblas_ctrsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctrsv(case 1188) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctrsv(case 1188) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 122; + int diag = 132; + int N = 1; + int lda = 1; + float A[] = { 0.529f, -0.348f }; + float X[] = { -0.95f, 0.343f }; + int incX = -1; + float x_expected[] = { -0.95f, 0.343f }; + cblas_ctrsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctrsv(case 1189) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctrsv(case 1189) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 121; + int diag = 131; + int N = 1; + int lda = 1; + float A[] = { 0.6f, 0.041f }; + float X[] = { 0.896f, -0.447f }; + int incX = -1; + float x_expected[] = { 1.43572f, -0.843108f }; + cblas_ctrsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctrsv(case 1190) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctrsv(case 1190) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 121; + int diag = 132; + int N = 1; + int lda = 1; + float A[] = { 0.6f, 0.041f }; + float X[] = { 0.896f, -0.447f }; + int incX = -1; + float x_expected[] = { 0.896f, -0.447f }; + cblas_ctrsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctrsv(case 1191) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctrsv(case 1191) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 122; + int diag = 131; + int N = 1; + int lda = 1; + float A[] = { 0.6f, 0.041f }; + float X[] = { 0.896f, -0.447f }; + int incX = -1; + float x_expected[] = { 1.43572f, -0.843108f }; + cblas_ctrsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctrsv(case 1192) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctrsv(case 1192) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 122; + int diag = 132; + int N = 1; + int lda = 1; + float A[] = { 0.6f, 0.041f }; + float X[] = { 0.896f, -0.447f }; + int incX = -1; + float x_expected[] = { 0.896f, -0.447f }; + cblas_ctrsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctrsv(case 1193) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctrsv(case 1193) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 121; + int diag = 131; + int N = 1; + int lda = 1; + float A[] = { 0.6f, 0.041f }; + float X[] = { 0.896f, -0.447f }; + int incX = -1; + float x_expected[] = { 1.43572f, -0.843108f }; + cblas_ctrsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctrsv(case 1194) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctrsv(case 1194) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 121; + int diag = 132; + int N = 1; + int lda = 1; + float A[] = { 0.6f, 0.041f }; + float X[] = { 0.896f, -0.447f }; + int incX = -1; + float x_expected[] = { 0.896f, -0.447f }; + cblas_ctrsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctrsv(case 1195) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctrsv(case 1195) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 122; + int diag = 131; + int N = 1; + int lda = 1; + float A[] = { 0.6f, 0.041f }; + float X[] = { 0.896f, -0.447f }; + int incX = -1; + float x_expected[] = { 1.43572f, -0.843108f }; + cblas_ctrsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctrsv(case 1196) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctrsv(case 1196) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 122; + int diag = 132; + int N = 1; + int lda = 1; + float A[] = { 0.6f, 0.041f }; + float X[] = { 0.896f, -0.447f }; + int incX = -1; + float x_expected[] = { 0.896f, -0.447f }; + cblas_ctrsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctrsv(case 1197) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctrsv(case 1197) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 113; + int uplo = 121; + int diag = 131; + int N = 1; + int lda = 1; + float A[] = { 0.397f, 0.683f }; + float X[] = { 0.765f, 0.18f }; + int incX = -1; + float x_expected[] = { 0.289642f, 0.951701f }; + cblas_ctrsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctrsv(case 1198) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctrsv(case 1198) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 113; + int uplo = 121; + int diag = 132; + int N = 1; + int lda = 1; + float A[] = { 0.397f, 0.683f }; + float X[] = { 0.765f, 0.18f }; + int incX = -1; + float x_expected[] = { 0.765f, 0.18f }; + cblas_ctrsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctrsv(case 1199) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctrsv(case 1199) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 113; + int uplo = 122; + int diag = 131; + int N = 1; + int lda = 1; + float A[] = { 0.397f, 0.683f }; + float X[] = { 0.765f, 0.18f }; + int incX = -1; + float x_expected[] = { 0.289642f, 0.951701f }; + cblas_ctrsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctrsv(case 1200) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctrsv(case 1200) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 113; + int uplo = 122; + int diag = 132; + int N = 1; + int lda = 1; + float A[] = { 0.397f, 0.683f }; + float X[] = { 0.765f, 0.18f }; + int incX = -1; + float x_expected[] = { 0.765f, 0.18f }; + cblas_ctrsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctrsv(case 1201) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctrsv(case 1201) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 113; + int uplo = 121; + int diag = 131; + int N = 1; + int lda = 1; + float A[] = { 0.397f, 0.683f }; + float X[] = { 0.765f, 0.18f }; + int incX = -1; + float x_expected[] = { 0.289642f, 0.951701f }; + cblas_ctrsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctrsv(case 1202) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctrsv(case 1202) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 113; + int uplo = 121; + int diag = 132; + int N = 1; + int lda = 1; + float A[] = { 0.397f, 0.683f }; + float X[] = { 0.765f, 0.18f }; + int incX = -1; + float x_expected[] = { 0.765f, 0.18f }; + cblas_ctrsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctrsv(case 1203) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctrsv(case 1203) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 113; + int uplo = 122; + int diag = 131; + int N = 1; + int lda = 1; + float A[] = { 0.397f, 0.683f }; + float X[] = { 0.765f, 0.18f }; + int incX = -1; + float x_expected[] = { 0.289642f, 0.951701f }; + cblas_ctrsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctrsv(case 1204) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctrsv(case 1204) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 113; + int uplo = 122; + int diag = 132; + int N = 1; + int lda = 1; + float A[] = { 0.397f, 0.683f }; + float X[] = { 0.765f, 0.18f }; + int incX = -1; + float x_expected[] = { 0.765f, 0.18f }; + cblas_ctrsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctrsv(case 1205) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctrsv(case 1205) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 121; + int diag = 131; + int N = 1; + int lda = 1; + double A[] = { 0.977, -0.955 }; + double X[] = { -0.627, 0.281 }; + int incX = -1; + double x_expected[] = { -0.471957414573, -0.173714770642 }; + cblas_ztrsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztrsv(case 1206) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztrsv(case 1206) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 121; + int diag = 132; + int N = 1; + int lda = 1; + double A[] = { 0.977, -0.955 }; + double X[] = { -0.627, 0.281 }; + int incX = -1; + double x_expected[] = { -0.627, 0.281 }; + cblas_ztrsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztrsv(case 1207) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztrsv(case 1207) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 122; + int diag = 131; + int N = 1; + int lda = 1; + double A[] = { 0.977, -0.955 }; + double X[] = { -0.627, 0.281 }; + int incX = -1; + double x_expected[] = { -0.471957414573, -0.173714770642 }; + cblas_ztrsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztrsv(case 1208) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztrsv(case 1208) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 122; + int diag = 132; + int N = 1; + int lda = 1; + double A[] = { 0.977, -0.955 }; + double X[] = { -0.627, 0.281 }; + int incX = -1; + double x_expected[] = { -0.627, 0.281 }; + cblas_ztrsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztrsv(case 1209) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztrsv(case 1209) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 121; + int diag = 131; + int N = 1; + int lda = 1; + double A[] = { 0.977, -0.955 }; + double X[] = { -0.627, 0.281 }; + int incX = -1; + double x_expected[] = { -0.471957414573, -0.173714770642 }; + cblas_ztrsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztrsv(case 1210) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztrsv(case 1210) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 121; + int diag = 132; + int N = 1; + int lda = 1; + double A[] = { 0.977, -0.955 }; + double X[] = { -0.627, 0.281 }; + int incX = -1; + double x_expected[] = { -0.627, 0.281 }; + cblas_ztrsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztrsv(case 1211) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztrsv(case 1211) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 122; + int diag = 131; + int N = 1; + int lda = 1; + double A[] = { 0.977, -0.955 }; + double X[] = { -0.627, 0.281 }; + int incX = -1; + double x_expected[] = { -0.471957414573, -0.173714770642 }; + cblas_ztrsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztrsv(case 1212) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztrsv(case 1212) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 122; + int diag = 132; + int N = 1; + int lda = 1; + double A[] = { 0.977, -0.955 }; + double X[] = { -0.627, 0.281 }; + int incX = -1; + double x_expected[] = { -0.627, 0.281 }; + cblas_ztrsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztrsv(case 1213) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztrsv(case 1213) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 121; + int diag = 131; + int N = 1; + int lda = 1; + double A[] = { 0.076, -0.16 }; + double X[] = { 0.3, -0.874 }; + int incX = -1; + double x_expected[] = { 5.18357980622, -0.587200407955 }; + cblas_ztrsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztrsv(case 1214) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztrsv(case 1214) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 121; + int diag = 132; + int N = 1; + int lda = 1; + double A[] = { 0.076, -0.16 }; + double X[] = { 0.3, -0.874 }; + int incX = -1; + double x_expected[] = { 0.3, -0.874 }; + cblas_ztrsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztrsv(case 1215) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztrsv(case 1215) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 122; + int diag = 131; + int N = 1; + int lda = 1; + double A[] = { 0.076, -0.16 }; + double X[] = { 0.3, -0.874 }; + int incX = -1; + double x_expected[] = { 5.18357980622, -0.587200407955 }; + cblas_ztrsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztrsv(case 1216) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztrsv(case 1216) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 122; + int diag = 132; + int N = 1; + int lda = 1; + double A[] = { 0.076, -0.16 }; + double X[] = { 0.3, -0.874 }; + int incX = -1; + double x_expected[] = { 0.3, -0.874 }; + cblas_ztrsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztrsv(case 1217) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztrsv(case 1217) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 121; + int diag = 131; + int N = 1; + int lda = 1; + double A[] = { 0.076, -0.16 }; + double X[] = { 0.3, -0.874 }; + int incX = -1; + double x_expected[] = { 5.18357980622, -0.587200407955 }; + cblas_ztrsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztrsv(case 1218) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztrsv(case 1218) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 121; + int diag = 132; + int N = 1; + int lda = 1; + double A[] = { 0.076, -0.16 }; + double X[] = { 0.3, -0.874 }; + int incX = -1; + double x_expected[] = { 0.3, -0.874 }; + cblas_ztrsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztrsv(case 1219) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztrsv(case 1219) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 122; + int diag = 131; + int N = 1; + int lda = 1; + double A[] = { 0.076, -0.16 }; + double X[] = { 0.3, -0.874 }; + int incX = -1; + double x_expected[] = { 5.18357980622, -0.587200407955 }; + cblas_ztrsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztrsv(case 1220) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztrsv(case 1220) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 122; + int diag = 132; + int N = 1; + int lda = 1; + double A[] = { 0.076, -0.16 }; + double X[] = { 0.3, -0.874 }; + int incX = -1; + double x_expected[] = { 0.3, -0.874 }; + cblas_ztrsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztrsv(case 1221) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztrsv(case 1221) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 113; + int uplo = 121; + int diag = 131; + int N = 1; + int lda = 1; + double A[] = { 0.372, -0.745 }; + double X[] = { -0.085, -0.303 }; + int incX = -1; + double x_expected[] = { -0.371144591432, -0.0712292456544 }; + cblas_ztrsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztrsv(case 1222) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztrsv(case 1222) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 113; + int uplo = 121; + int diag = 132; + int N = 1; + int lda = 1; + double A[] = { 0.372, -0.745 }; + double X[] = { -0.085, -0.303 }; + int incX = -1; + double x_expected[] = { -0.085, -0.303 }; + cblas_ztrsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztrsv(case 1223) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztrsv(case 1223) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 113; + int uplo = 122; + int diag = 131; + int N = 1; + int lda = 1; + double A[] = { 0.372, -0.745 }; + double X[] = { -0.085, -0.303 }; + int incX = -1; + double x_expected[] = { -0.371144591432, -0.0712292456544 }; + cblas_ztrsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztrsv(case 1224) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztrsv(case 1224) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 113; + int uplo = 122; + int diag = 132; + int N = 1; + int lda = 1; + double A[] = { 0.372, -0.745 }; + double X[] = { -0.085, -0.303 }; + int incX = -1; + double x_expected[] = { -0.085, -0.303 }; + cblas_ztrsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztrsv(case 1225) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztrsv(case 1225) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 113; + int uplo = 121; + int diag = 131; + int N = 1; + int lda = 1; + double A[] = { 0.372, -0.745 }; + double X[] = { -0.085, -0.303 }; + int incX = -1; + double x_expected[] = { -0.371144591432, -0.0712292456544 }; + cblas_ztrsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztrsv(case 1226) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztrsv(case 1226) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 113; + int uplo = 121; + int diag = 132; + int N = 1; + int lda = 1; + double A[] = { 0.372, -0.745 }; + double X[] = { -0.085, -0.303 }; + int incX = -1; + double x_expected[] = { -0.085, -0.303 }; + cblas_ztrsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztrsv(case 1227) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztrsv(case 1227) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 113; + int uplo = 122; + int diag = 131; + int N = 1; + int lda = 1; + double A[] = { 0.372, -0.745 }; + double X[] = { -0.085, -0.303 }; + int incX = -1; + double x_expected[] = { -0.371144591432, -0.0712292456544 }; + cblas_ztrsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztrsv(case 1228) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztrsv(case 1228) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 113; + int uplo = 122; + int diag = 132; + int N = 1; + int lda = 1; + double A[] = { 0.372, -0.745 }; + double X[] = { -0.085, -0.303 }; + int incX = -1; + double x_expected[] = { -0.085, -0.303 }; + cblas_ztrsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztrsv(case 1229) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztrsv(case 1229) imag"); + }; + }; + }; + + +} diff --git a/gsl-2.5/cblas/tests.c b/gsl-2.5/cblas/tests.c new file mode 100644 index 00000000..af00945e --- /dev/null +++ b/gsl-2.5/cblas/tests.c @@ -0,0 +1,44 @@ + test_dot (); + test_nrm2 (); + test_asum (); + test_amax (); + test_axpy (); + test_copy (); + test_swap (); + test_scal (); + test_rotg (); + test_rot (); + test_rotmg (); + test_rotm (); + test_gemv (); + test_gbmv (); + test_trmv (); + test_tbmv (); + test_tpmv (); + test_symv (); + test_hemv (); + test_hbmv (); + test_sbmv (); + test_hpmv (); + test_spmv (); + test_trsv (); + test_tbsv (); + test_tpsv (); + test_ger (); + test_syr (); + test_her (); + test_hpr (); + test_spr (); + test_syr2 (); + test_spr2 (); + test_her2 (); + test_hpr2 (); + test_gemm (); + test_symm (); + test_hemm (); + test_syrk (); + test_herk (); + test_syr2k (); + test_her2k (); + test_trmm (); + test_trsm (); diff --git a/gsl-2.5/cblas/tests.h b/gsl-2.5/cblas/tests.h new file mode 100644 index 00000000..9bfb0fa6 --- /dev/null +++ b/gsl-2.5/cblas/tests.h @@ -0,0 +1,44 @@ +void test_dot (void); +void test_nrm2 (void); +void test_asum (void); +void test_amax (void); +void test_axpy (void); +void test_copy (void); +void test_swap (void); +void test_scal (void); +void test_rotg (void); +void test_rot (void); +void test_rotmg (void); +void test_rotm (void); +void test_gemv (void); +void test_gbmv (void); +void test_trmv (void); +void test_tbmv (void); +void test_tpmv (void); +void test_symv (void); +void test_hemv (void); +void test_hbmv (void); +void test_sbmv (void); +void test_hpmv (void); +void test_spmv (void); +void test_trsv (void); +void test_tbsv (void); +void test_tpsv (void); +void test_ger (void); +void test_syr (void); +void test_her (void); +void test_hpr (void); +void test_spr (void); +void test_syr2 (void); +void test_spr2 (void); +void test_her2 (void); +void test_hpr2 (void); +void test_gemm (void); +void test_symm (void); +void test_hemm (void); +void test_syrk (void); +void test_herk (void); +void test_syr2k (void); +void test_her2k (void); +void test_trmm (void); +void test_trsm (void); diff --git a/gsl-2.5/cblas/xerbla.c b/gsl-2.5/cblas/xerbla.c new file mode 100644 index 00000000..713035f3 --- /dev/null +++ b/gsl-2.5/cblas/xerbla.c @@ -0,0 +1,44 @@ +/* xerbla.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include + +#include +#include "cblas.h" + +void +cblas_xerbla (int p, const char *rout, const char *form, ...) +{ + va_list ap; + + va_start (ap, form); + + if (p) + { + fprintf (stderr, "Parameter %d to routine %s was incorrect\n", p, rout); + } + + vfprintf (stderr, form, ap); + va_end (ap); + + abort (); +} diff --git a/gsl-2.5/cblas/xerbla.lo b/gsl-2.5/cblas/xerbla.lo new file mode 100644 index 00000000..65ee2e09 --- /dev/null +++ b/gsl-2.5/cblas/xerbla.lo @@ -0,0 +1,12 @@ +# xerbla.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/xerbla.o' + +# Name of the non-PIC object +non_pic_object='xerbla.o' + diff --git a/gsl-2.5/cblas/zaxpy.c b/gsl-2.5/cblas/zaxpy.c new file mode 100644 index 00000000..d6484014 --- /dev/null +++ b/gsl-2.5/cblas/zaxpy.c @@ -0,0 +1,12 @@ +#include +#include +#include "cblas.h" + +void +cblas_zaxpy (const int N, const void *alpha, const void *X, const int incX, + void *Y, const int incY) +{ +#define BASE double +#include "source_axpy_c.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/zaxpy.lo b/gsl-2.5/cblas/zaxpy.lo new file mode 100644 index 00000000..9ae942fa --- /dev/null +++ b/gsl-2.5/cblas/zaxpy.lo @@ -0,0 +1,12 @@ +# zaxpy.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/zaxpy.o' + +# Name of the non-PIC object +non_pic_object='zaxpy.o' + diff --git a/gsl-2.5/cblas/zcopy.c b/gsl-2.5/cblas/zcopy.c new file mode 100644 index 00000000..5e80eb49 --- /dev/null +++ b/gsl-2.5/cblas/zcopy.c @@ -0,0 +1,12 @@ +#include +#include +#include "cblas.h" + +void +cblas_zcopy (const int N, const void *X, const int incX, void *Y, + const int incY) +{ +#define BASE double +#include "source_copy_c.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/zcopy.lo b/gsl-2.5/cblas/zcopy.lo new file mode 100644 index 00000000..c61fa3e6 --- /dev/null +++ b/gsl-2.5/cblas/zcopy.lo @@ -0,0 +1,12 @@ +# zcopy.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/zcopy.o' + +# Name of the non-PIC object +non_pic_object='zcopy.o' + diff --git a/gsl-2.5/cblas/zdotc_sub.c b/gsl-2.5/cblas/zdotc_sub.c new file mode 100644 index 00000000..43af96e9 --- /dev/null +++ b/gsl-2.5/cblas/zdotc_sub.c @@ -0,0 +1,14 @@ +#include +#include +#include "cblas.h" + +void +cblas_zdotc_sub (const int N, const void *X, const int incX, const void *Y, + const int incY, void *result) +{ +#define BASE double +#define CONJ_SIGN (-1.0) +#include "source_dot_c.h" +#undef CONJ_SIGN +#undef BASE +} diff --git a/gsl-2.5/cblas/zdotc_sub.lo b/gsl-2.5/cblas/zdotc_sub.lo new file mode 100644 index 00000000..309aabc9 --- /dev/null +++ b/gsl-2.5/cblas/zdotc_sub.lo @@ -0,0 +1,12 @@ +# zdotc_sub.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/zdotc_sub.o' + +# Name of the non-PIC object +non_pic_object='zdotc_sub.o' + diff --git a/gsl-2.5/cblas/zdotu_sub.c b/gsl-2.5/cblas/zdotu_sub.c new file mode 100644 index 00000000..65b9898c --- /dev/null +++ b/gsl-2.5/cblas/zdotu_sub.c @@ -0,0 +1,14 @@ +#include +#include +#include "cblas.h" + +void +cblas_zdotu_sub (const int N, const void *X, const int incX, const void *Y, + const int incY, void *result) +{ +#define BASE double +#define CONJ_SIGN 1.0 +#include "source_dot_c.h" +#undef CONJ_SIGN +#undef BASE +} diff --git a/gsl-2.5/cblas/zdotu_sub.lo b/gsl-2.5/cblas/zdotu_sub.lo new file mode 100644 index 00000000..3e322682 --- /dev/null +++ b/gsl-2.5/cblas/zdotu_sub.lo @@ -0,0 +1,12 @@ +# zdotu_sub.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/zdotu_sub.o' + +# Name of the non-PIC object +non_pic_object='zdotu_sub.o' + diff --git a/gsl-2.5/cblas/zdscal.c b/gsl-2.5/cblas/zdscal.c new file mode 100644 index 00000000..61676646 --- /dev/null +++ b/gsl-2.5/cblas/zdscal.c @@ -0,0 +1,11 @@ +#include +#include +#include "cblas.h" + +void +cblas_zdscal (const int N, const double alpha, void *X, const int incX) +{ +#define BASE double +#include "source_scal_c_s.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/zdscal.lo b/gsl-2.5/cblas/zdscal.lo new file mode 100644 index 00000000..102728f1 --- /dev/null +++ b/gsl-2.5/cblas/zdscal.lo @@ -0,0 +1,12 @@ +# zdscal.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/zdscal.o' + +# Name of the non-PIC object +non_pic_object='zdscal.o' + diff --git a/gsl-2.5/cblas/zgbmv.c b/gsl-2.5/cblas/zgbmv.c new file mode 100644 index 00000000..2c0c1308 --- /dev/null +++ b/gsl-2.5/cblas/zgbmv.c @@ -0,0 +1,15 @@ +#include +#include +#include "cblas.h" +#include "error_cblas_l2.h" + +void +cblas_zgbmv (const enum CBLAS_ORDER order, const enum CBLAS_TRANSPOSE TransA, + const int M, const int N, const int KL, const int KU, + const void *alpha, const void *A, const int lda, const void *X, + const int incX, const void *beta, void *Y, const int incY) +{ +#define BASE double +#include "source_gbmv_c.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/zgbmv.lo b/gsl-2.5/cblas/zgbmv.lo new file mode 100644 index 00000000..fbe0d30b --- /dev/null +++ b/gsl-2.5/cblas/zgbmv.lo @@ -0,0 +1,12 @@ +# zgbmv.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/zgbmv.o' + +# Name of the non-PIC object +non_pic_object='zgbmv.o' + diff --git a/gsl-2.5/cblas/zgemm.c b/gsl-2.5/cblas/zgemm.c new file mode 100644 index 00000000..c914c00a --- /dev/null +++ b/gsl-2.5/cblas/zgemm.c @@ -0,0 +1,16 @@ +#include +#include +#include "cblas.h" +#include "error_cblas_l3.h" + +void +cblas_zgemm (const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TransA, + const enum CBLAS_TRANSPOSE TransB, const int M, const int N, + const int K, const void *alpha, const void *A, const int lda, + const void *B, const int ldb, const void *beta, void *C, + const int ldc) +{ +#define BASE double +#include "source_gemm_c.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/zgemm.lo b/gsl-2.5/cblas/zgemm.lo new file mode 100644 index 00000000..0fde6cbe --- /dev/null +++ b/gsl-2.5/cblas/zgemm.lo @@ -0,0 +1,12 @@ +# zgemm.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/zgemm.o' + +# Name of the non-PIC object +non_pic_object='zgemm.o' + diff --git a/gsl-2.5/cblas/zgemv.c b/gsl-2.5/cblas/zgemv.c new file mode 100644 index 00000000..37243647 --- /dev/null +++ b/gsl-2.5/cblas/zgemv.c @@ -0,0 +1,15 @@ +#include +#include +#include "cblas.h" +#include "error_cblas_l2.h" + +void +cblas_zgemv (const enum CBLAS_ORDER order, const enum CBLAS_TRANSPOSE TransA, + const int M, const int N, const void *alpha, const void *A, + const int lda, const void *X, const int incX, const void *beta, + void *Y, const int incY) +{ +#define BASE double +#include "source_gemv_c.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/zgemv.lo b/gsl-2.5/cblas/zgemv.lo new file mode 100644 index 00000000..1db20514 --- /dev/null +++ b/gsl-2.5/cblas/zgemv.lo @@ -0,0 +1,12 @@ +# zgemv.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/zgemv.o' + +# Name of the non-PIC object +non_pic_object='zgemv.o' + diff --git a/gsl-2.5/cblas/zgerc.c b/gsl-2.5/cblas/zgerc.c new file mode 100644 index 00000000..eae60b35 --- /dev/null +++ b/gsl-2.5/cblas/zgerc.c @@ -0,0 +1,14 @@ +#include +#include +#include "cblas.h" +#include "error_cblas_l2.h" + +void +cblas_zgerc (const enum CBLAS_ORDER order, const int M, const int N, + const void *alpha, const void *X, const int incX, const void *Y, + const int incY, void *A, const int lda) +{ +#define BASE double +#include "source_gerc.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/zgerc.lo b/gsl-2.5/cblas/zgerc.lo new file mode 100644 index 00000000..d0a4037d --- /dev/null +++ b/gsl-2.5/cblas/zgerc.lo @@ -0,0 +1,12 @@ +# zgerc.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/zgerc.o' + +# Name of the non-PIC object +non_pic_object='zgerc.o' + diff --git a/gsl-2.5/cblas/zgeru.c b/gsl-2.5/cblas/zgeru.c new file mode 100644 index 00000000..3fc88196 --- /dev/null +++ b/gsl-2.5/cblas/zgeru.c @@ -0,0 +1,14 @@ +#include +#include +#include "cblas.h" +#include "error_cblas_l2.h" + +void +cblas_zgeru (const enum CBLAS_ORDER order, const int M, const int N, + const void *alpha, const void *X, const int incX, const void *Y, + const int incY, void *A, const int lda) +{ +#define BASE double +#include "source_geru.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/zgeru.lo b/gsl-2.5/cblas/zgeru.lo new file mode 100644 index 00000000..0a7d612d --- /dev/null +++ b/gsl-2.5/cblas/zgeru.lo @@ -0,0 +1,12 @@ +# zgeru.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/zgeru.o' + +# Name of the non-PIC object +non_pic_object='zgeru.o' + diff --git a/gsl-2.5/cblas/zhbmv.c b/gsl-2.5/cblas/zhbmv.c new file mode 100644 index 00000000..0b2d4c70 --- /dev/null +++ b/gsl-2.5/cblas/zhbmv.c @@ -0,0 +1,15 @@ +#include +#include +#include "cblas.h" +#include "error_cblas_l2.h" + +void +cblas_zhbmv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const int N, const int K, const void *alpha, const void *A, + const int lda, const void *X, const int incX, const void *beta, + void *Y, const int incY) +{ +#define BASE double +#include "source_hbmv.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/zhbmv.lo b/gsl-2.5/cblas/zhbmv.lo new file mode 100644 index 00000000..05938886 --- /dev/null +++ b/gsl-2.5/cblas/zhbmv.lo @@ -0,0 +1,12 @@ +# zhbmv.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/zhbmv.o' + +# Name of the non-PIC object +non_pic_object='zhbmv.o' + diff --git a/gsl-2.5/cblas/zhemm.c b/gsl-2.5/cblas/zhemm.c new file mode 100644 index 00000000..0e817d0c --- /dev/null +++ b/gsl-2.5/cblas/zhemm.c @@ -0,0 +1,15 @@ +#include +#include +#include "cblas.h" +#include "error_cblas_l3.h" + +void +cblas_zhemm (const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, + const enum CBLAS_UPLO Uplo, const int M, const int N, + const void *alpha, const void *A, const int lda, const void *B, + const int ldb, const void *beta, void *C, const int ldc) +{ +#define BASE double +#include "source_hemm.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/zhemm.lo b/gsl-2.5/cblas/zhemm.lo new file mode 100644 index 00000000..40d4a8b5 --- /dev/null +++ b/gsl-2.5/cblas/zhemm.lo @@ -0,0 +1,12 @@ +# zhemm.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/zhemm.o' + +# Name of the non-PIC object +non_pic_object='zhemm.o' + diff --git a/gsl-2.5/cblas/zhemv.c b/gsl-2.5/cblas/zhemv.c new file mode 100644 index 00000000..18aed13c --- /dev/null +++ b/gsl-2.5/cblas/zhemv.c @@ -0,0 +1,15 @@ +#include +#include +#include "cblas.h" +#include "error_cblas_l2.h" + +void +cblas_zhemv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const int N, const void *alpha, const void *A, const int lda, + const void *X, const int incX, const void *beta, void *Y, + const int incY) +{ +#define BASE double +#include "source_hemv.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/zhemv.lo b/gsl-2.5/cblas/zhemv.lo new file mode 100644 index 00000000..40b835e4 --- /dev/null +++ b/gsl-2.5/cblas/zhemv.lo @@ -0,0 +1,12 @@ +# zhemv.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/zhemv.o' + +# Name of the non-PIC object +non_pic_object='zhemv.o' + diff --git a/gsl-2.5/cblas/zher.c b/gsl-2.5/cblas/zher.c new file mode 100644 index 00000000..1c4d7f29 --- /dev/null +++ b/gsl-2.5/cblas/zher.c @@ -0,0 +1,14 @@ +#include +#include +#include "cblas.h" +#include "error_cblas_l2.h" + +void +cblas_zher (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const int N, const double alpha, const void *X, const int incX, + void *A, const int lda) +{ +#define BASE double +#include "source_her.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/zher.lo b/gsl-2.5/cblas/zher.lo new file mode 100644 index 00000000..9a210b5d --- /dev/null +++ b/gsl-2.5/cblas/zher.lo @@ -0,0 +1,12 @@ +# zher.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/zher.o' + +# Name of the non-PIC object +non_pic_object='zher.o' + diff --git a/gsl-2.5/cblas/zher2.c b/gsl-2.5/cblas/zher2.c new file mode 100644 index 00000000..18ff6441 --- /dev/null +++ b/gsl-2.5/cblas/zher2.c @@ -0,0 +1,14 @@ +#include +#include +#include "cblas.h" +#include "error_cblas_l2.h" + +void +cblas_zher2 (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const int N, const void *alpha, const void *X, const int incX, + const void *Y, const int incY, void *A, const int lda) +{ +#define BASE double +#include "source_her2.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/zher2.lo b/gsl-2.5/cblas/zher2.lo new file mode 100644 index 00000000..a2bc89e6 --- /dev/null +++ b/gsl-2.5/cblas/zher2.lo @@ -0,0 +1,12 @@ +# zher2.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/zher2.o' + +# Name of the non-PIC object +non_pic_object='zher2.o' + diff --git a/gsl-2.5/cblas/zher2k.c b/gsl-2.5/cblas/zher2k.c new file mode 100644 index 00000000..6d87b3f6 --- /dev/null +++ b/gsl-2.5/cblas/zher2k.c @@ -0,0 +1,15 @@ +#include +#include +#include "cblas.h" +#include "error_cblas_l3.h" + +void +cblas_zher2k (const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE Trans, const int N, const int K, + const void *alpha, const void *A, const int lda, const void *B, + const int ldb, const double beta, void *C, const int ldc) +{ +#define BASE double +#include "source_her2k.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/zher2k.lo b/gsl-2.5/cblas/zher2k.lo new file mode 100644 index 00000000..777575e1 --- /dev/null +++ b/gsl-2.5/cblas/zher2k.lo @@ -0,0 +1,12 @@ +# zher2k.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/zher2k.o' + +# Name of the non-PIC object +non_pic_object='zher2k.o' + diff --git a/gsl-2.5/cblas/zherk.c b/gsl-2.5/cblas/zherk.c new file mode 100644 index 00000000..08fa42ea --- /dev/null +++ b/gsl-2.5/cblas/zherk.c @@ -0,0 +1,15 @@ +#include +#include +#include "cblas.h" +#include "error_cblas_l3.h" + +void +cblas_zherk (const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE Trans, const int N, const int K, + const double alpha, const void *A, const int lda, + const double beta, void *C, const int ldc) +{ +#define BASE double +#include "source_herk.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/zherk.lo b/gsl-2.5/cblas/zherk.lo new file mode 100644 index 00000000..3df7a45c --- /dev/null +++ b/gsl-2.5/cblas/zherk.lo @@ -0,0 +1,12 @@ +# zherk.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/zherk.o' + +# Name of the non-PIC object +non_pic_object='zherk.o' + diff --git a/gsl-2.5/cblas/zhpmv.c b/gsl-2.5/cblas/zhpmv.c new file mode 100644 index 00000000..49144527 --- /dev/null +++ b/gsl-2.5/cblas/zhpmv.c @@ -0,0 +1,14 @@ +#include +#include +#include "cblas.h" +#include "error_cblas_l2.h" + +void +cblas_zhpmv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const int N, const void *alpha, const void *Ap, const void *X, + const int incX, const void *beta, void *Y, const int incY) +{ +#define BASE double +#include "source_hpmv.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/zhpmv.lo b/gsl-2.5/cblas/zhpmv.lo new file mode 100644 index 00000000..7081771b --- /dev/null +++ b/gsl-2.5/cblas/zhpmv.lo @@ -0,0 +1,12 @@ +# zhpmv.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/zhpmv.o' + +# Name of the non-PIC object +non_pic_object='zhpmv.o' + diff --git a/gsl-2.5/cblas/zhpr.c b/gsl-2.5/cblas/zhpr.c new file mode 100644 index 00000000..8b0bad86 --- /dev/null +++ b/gsl-2.5/cblas/zhpr.c @@ -0,0 +1,14 @@ +#include +#include +#include "cblas.h" +#include "error_cblas_l2.h" + +void +cblas_zhpr (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const int N, const double alpha, const void *X, const int incX, + void *Ap) +{ +#define BASE double +#include "source_hpr.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/zhpr.lo b/gsl-2.5/cblas/zhpr.lo new file mode 100644 index 00000000..263b6530 --- /dev/null +++ b/gsl-2.5/cblas/zhpr.lo @@ -0,0 +1,12 @@ +# zhpr.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/zhpr.o' + +# Name of the non-PIC object +non_pic_object='zhpr.o' + diff --git a/gsl-2.5/cblas/zhpr2.c b/gsl-2.5/cblas/zhpr2.c new file mode 100644 index 00000000..7f8e0b06 --- /dev/null +++ b/gsl-2.5/cblas/zhpr2.c @@ -0,0 +1,14 @@ +#include +#include +#include "cblas.h" +#include "error_cblas_l2.h" + +void +cblas_zhpr2 (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const int N, const void *alpha, const void *X, const int incX, + const void *Y, const int incY, void *Ap) +{ +#define BASE double +#include "source_hpr2.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/zhpr2.lo b/gsl-2.5/cblas/zhpr2.lo new file mode 100644 index 00000000..777677f8 --- /dev/null +++ b/gsl-2.5/cblas/zhpr2.lo @@ -0,0 +1,12 @@ +# zhpr2.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/zhpr2.o' + +# Name of the non-PIC object +non_pic_object='zhpr2.o' + diff --git a/gsl-2.5/cblas/zscal.c b/gsl-2.5/cblas/zscal.c new file mode 100644 index 00000000..26677432 --- /dev/null +++ b/gsl-2.5/cblas/zscal.c @@ -0,0 +1,11 @@ +#include +#include +#include "cblas.h" + +void +cblas_zscal (const int N, const void *alpha, void *X, const int incX) +{ +#define BASE double +#include "source_scal_c.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/zscal.lo b/gsl-2.5/cblas/zscal.lo new file mode 100644 index 00000000..b3d47bce --- /dev/null +++ b/gsl-2.5/cblas/zscal.lo @@ -0,0 +1,12 @@ +# zscal.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/zscal.o' + +# Name of the non-PIC object +non_pic_object='zscal.o' + diff --git a/gsl-2.5/cblas/zswap.c b/gsl-2.5/cblas/zswap.c new file mode 100644 index 00000000..9cf6796c --- /dev/null +++ b/gsl-2.5/cblas/zswap.c @@ -0,0 +1,11 @@ +#include +#include +#include "cblas.h" + +void +cblas_zswap (const int N, void *X, const int incX, void *Y, const int incY) +{ +#define BASE double +#include "source_swap_c.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/zswap.lo b/gsl-2.5/cblas/zswap.lo new file mode 100644 index 00000000..76d9d2ab --- /dev/null +++ b/gsl-2.5/cblas/zswap.lo @@ -0,0 +1,12 @@ +# zswap.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/zswap.o' + +# Name of the non-PIC object +non_pic_object='zswap.o' + diff --git a/gsl-2.5/cblas/zsymm.c b/gsl-2.5/cblas/zsymm.c new file mode 100644 index 00000000..022d28fd --- /dev/null +++ b/gsl-2.5/cblas/zsymm.c @@ -0,0 +1,15 @@ +#include +#include +#include "cblas.h" +#include "error_cblas_l3.h" + +void +cblas_zsymm (const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, + const enum CBLAS_UPLO Uplo, const int M, const int N, + const void *alpha, const void *A, const int lda, const void *B, + const int ldb, const void *beta, void *C, const int ldc) +{ +#define BASE double +#include "source_symm_c.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/zsymm.lo b/gsl-2.5/cblas/zsymm.lo new file mode 100644 index 00000000..baab9788 --- /dev/null +++ b/gsl-2.5/cblas/zsymm.lo @@ -0,0 +1,12 @@ +# zsymm.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/zsymm.o' + +# Name of the non-PIC object +non_pic_object='zsymm.o' + diff --git a/gsl-2.5/cblas/zsyr2k.c b/gsl-2.5/cblas/zsyr2k.c new file mode 100644 index 00000000..bb74a8f3 --- /dev/null +++ b/gsl-2.5/cblas/zsyr2k.c @@ -0,0 +1,15 @@ +#include +#include +#include "cblas.h" +#include "error_cblas_l3.h" + +void +cblas_zsyr2k (const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE Trans, const int N, const int K, + const void *alpha, const void *A, const int lda, const void *B, + const int ldb, const void *beta, void *C, const int ldc) +{ +#define BASE double +#include "source_syr2k_c.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/zsyr2k.lo b/gsl-2.5/cblas/zsyr2k.lo new file mode 100644 index 00000000..7bdbfb2b --- /dev/null +++ b/gsl-2.5/cblas/zsyr2k.lo @@ -0,0 +1,12 @@ +# zsyr2k.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/zsyr2k.o' + +# Name of the non-PIC object +non_pic_object='zsyr2k.o' + diff --git a/gsl-2.5/cblas/zsyrk.c b/gsl-2.5/cblas/zsyrk.c new file mode 100644 index 00000000..6f5ef6b0 --- /dev/null +++ b/gsl-2.5/cblas/zsyrk.c @@ -0,0 +1,15 @@ +#include +#include +#include "cblas.h" +#include "error_cblas_l3.h" + +void +cblas_zsyrk (const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE Trans, const int N, const int K, + const void *alpha, const void *A, const int lda, + const void *beta, void *C, const int ldc) +{ +#define BASE double +#include "source_syrk_c.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/zsyrk.lo b/gsl-2.5/cblas/zsyrk.lo new file mode 100644 index 00000000..3418fb33 --- /dev/null +++ b/gsl-2.5/cblas/zsyrk.lo @@ -0,0 +1,12 @@ +# zsyrk.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/zsyrk.o' + +# Name of the non-PIC object +non_pic_object='zsyrk.o' + diff --git a/gsl-2.5/cblas/ztbmv.c b/gsl-2.5/cblas/ztbmv.c new file mode 100644 index 00000000..38957b0c --- /dev/null +++ b/gsl-2.5/cblas/ztbmv.c @@ -0,0 +1,15 @@ +#include +#include +#include "cblas.h" +#include "error_cblas_l2.h" + +void +cblas_ztbmv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, + const int N, const int K, const void *A, const int lda, void *X, + const int incX) +{ +#define BASE double +#include "source_tbmv_c.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/ztbmv.lo b/gsl-2.5/cblas/ztbmv.lo new file mode 100644 index 00000000..25496292 --- /dev/null +++ b/gsl-2.5/cblas/ztbmv.lo @@ -0,0 +1,12 @@ +# ztbmv.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/ztbmv.o' + +# Name of the non-PIC object +non_pic_object='ztbmv.o' + diff --git a/gsl-2.5/cblas/ztbsv.c b/gsl-2.5/cblas/ztbsv.c new file mode 100644 index 00000000..315ac119 --- /dev/null +++ b/gsl-2.5/cblas/ztbsv.c @@ -0,0 +1,17 @@ +#include +#include +#include "cblas.h" +#include "error_cblas_l2.h" + +#include "hypot.c" + +void +cblas_ztbsv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, + const int N, const int K, const void *A, const int lda, void *X, + const int incX) +{ +#define BASE double +#include "source_tbsv_c.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/ztbsv.lo b/gsl-2.5/cblas/ztbsv.lo new file mode 100644 index 00000000..50aeaba9 --- /dev/null +++ b/gsl-2.5/cblas/ztbsv.lo @@ -0,0 +1,12 @@ +# ztbsv.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/ztbsv.o' + +# Name of the non-PIC object +non_pic_object='ztbsv.o' + diff --git a/gsl-2.5/cblas/ztpmv.c b/gsl-2.5/cblas/ztpmv.c new file mode 100644 index 00000000..8d4ccf49 --- /dev/null +++ b/gsl-2.5/cblas/ztpmv.c @@ -0,0 +1,14 @@ +#include +#include +#include "cblas.h" +#include "error_cblas_l2.h" + +void +cblas_ztpmv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, + const int N, const void *Ap, void *X, const int incX) +{ +#define BASE double +#include "source_tpmv_c.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/ztpmv.lo b/gsl-2.5/cblas/ztpmv.lo new file mode 100644 index 00000000..6e021de9 --- /dev/null +++ b/gsl-2.5/cblas/ztpmv.lo @@ -0,0 +1,12 @@ +# ztpmv.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/ztpmv.o' + +# Name of the non-PIC object +non_pic_object='ztpmv.o' + diff --git a/gsl-2.5/cblas/ztpsv.c b/gsl-2.5/cblas/ztpsv.c new file mode 100644 index 00000000..80ce1532 --- /dev/null +++ b/gsl-2.5/cblas/ztpsv.c @@ -0,0 +1,16 @@ +#include +#include +#include "cblas.h" +#include "error_cblas_l2.h" + +#include "hypot.c" + +void +cblas_ztpsv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, + const int N, const void *Ap, void *X, const int incX) +{ +#define BASE double +#include "source_tpsv_c.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/ztpsv.lo b/gsl-2.5/cblas/ztpsv.lo new file mode 100644 index 00000000..8a0ac7ad --- /dev/null +++ b/gsl-2.5/cblas/ztpsv.lo @@ -0,0 +1,12 @@ +# ztpsv.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/ztpsv.o' + +# Name of the non-PIC object +non_pic_object='ztpsv.o' + diff --git a/gsl-2.5/cblas/ztrmm.c b/gsl-2.5/cblas/ztrmm.c new file mode 100644 index 00000000..e65d546a --- /dev/null +++ b/gsl-2.5/cblas/ztrmm.c @@ -0,0 +1,16 @@ +#include +#include +#include "cblas.h" +#include "error_cblas_l3.h" + +void +cblas_ztrmm (const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, + const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, + const enum CBLAS_DIAG Diag, const int M, const int N, + const void *alpha, const void *A, const int lda, void *B, + const int ldb) +{ +#define BASE double +#include "source_trmm_c.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/ztrmm.lo b/gsl-2.5/cblas/ztrmm.lo new file mode 100644 index 00000000..bbb169a7 --- /dev/null +++ b/gsl-2.5/cblas/ztrmm.lo @@ -0,0 +1,12 @@ +# ztrmm.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/ztrmm.o' + +# Name of the non-PIC object +non_pic_object='ztrmm.o' + diff --git a/gsl-2.5/cblas/ztrmv.c b/gsl-2.5/cblas/ztrmv.c new file mode 100644 index 00000000..47c2b399 --- /dev/null +++ b/gsl-2.5/cblas/ztrmv.c @@ -0,0 +1,15 @@ +#include +#include +#include "cblas.h" +#include "error_cblas_l2.h" + +void +cblas_ztrmv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, + const int N, const void *A, const int lda, void *X, + const int incX) +{ +#define BASE double +#include "source_trmv_c.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/ztrmv.lo b/gsl-2.5/cblas/ztrmv.lo new file mode 100644 index 00000000..afdbaeb2 --- /dev/null +++ b/gsl-2.5/cblas/ztrmv.lo @@ -0,0 +1,12 @@ +# ztrmv.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/ztrmv.o' + +# Name of the non-PIC object +non_pic_object='ztrmv.o' + diff --git a/gsl-2.5/cblas/ztrsm.c b/gsl-2.5/cblas/ztrsm.c new file mode 100644 index 00000000..4f141403 --- /dev/null +++ b/gsl-2.5/cblas/ztrsm.c @@ -0,0 +1,18 @@ +#include +#include +#include "cblas.h" +#include "error_cblas_l3.h" + +#include "hypot.c" + +void +cblas_ztrsm (const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, + const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, + const enum CBLAS_DIAG Diag, const int M, const int N, + const void *alpha, const void *A, const int lda, void *B, + const int ldb) +{ +#define BASE double +#include "source_trsm_c.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/ztrsm.lo b/gsl-2.5/cblas/ztrsm.lo new file mode 100644 index 00000000..3f895655 --- /dev/null +++ b/gsl-2.5/cblas/ztrsm.lo @@ -0,0 +1,12 @@ +# ztrsm.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/ztrsm.o' + +# Name of the non-PIC object +non_pic_object='ztrsm.o' + diff --git a/gsl-2.5/cblas/ztrsv.c b/gsl-2.5/cblas/ztrsv.c new file mode 100644 index 00000000..9478602c --- /dev/null +++ b/gsl-2.5/cblas/ztrsv.c @@ -0,0 +1,17 @@ +#include +#include +#include "cblas.h" +#include "error_cblas_l2.h" + +#include "hypot.c" + +void +cblas_ztrsv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, + const int N, const void *A, const int lda, void *X, + const int incX) +{ +#define BASE double +#include "source_trsv_c.h" +#undef BASE +} diff --git a/gsl-2.5/cblas/ztrsv.lo b/gsl-2.5/cblas/ztrsv.lo new file mode 100644 index 00000000..4d8abda0 --- /dev/null +++ b/gsl-2.5/cblas/ztrsv.lo @@ -0,0 +1,12 @@ +# ztrsv.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/ztrsv.o' + +# Name of the non-PIC object +non_pic_object='ztrsv.o' + diff --git a/gsl-2.5/cdf/.deps/beta.Plo b/gsl-2.5/cdf/.deps/beta.Plo new file mode 100644 index 00000000..2ea8d39c --- /dev/null +++ b/gsl-2.5/cdf/.deps/beta.Plo @@ -0,0 +1,92 @@ +beta.lo: beta.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_cdf.h ../gsl/gsl_sf_gamma.h \ + ../gsl/gsl_sf_result.h ../gsl/gsl_math.h ../gsl/gsl_sys.h \ + ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h beta_inc.c + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_cdf.h: + +../gsl/gsl_sf_gamma.h: + +../gsl/gsl_sf_result.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +beta_inc.c: diff --git a/gsl-2.5/cdf/.deps/betainv.Plo b/gsl-2.5/cdf/.deps/betainv.Plo new file mode 100644 index 00000000..899015ab --- /dev/null +++ b/gsl-2.5/cdf/.deps/betainv.Plo @@ -0,0 +1,302 @@ +betainv.lo: betainv.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_math.h ../gsl/gsl_sys.h \ + ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_sf_gamma.h ../gsl/gsl_sf_result.h ../gsl/gsl_cdf.h \ + ../gsl/gsl_randist.h ../gsl/gsl_rng.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_complex.h \ + ../gsl/gsl_check_range.h ../gsl/gsl_vector_long_double.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_vector_complex.h \ + ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h error.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_sf_gamma.h: + +../gsl/gsl_sf_result.h: + +../gsl/gsl_cdf.h: + +../gsl/gsl_randist.h: + +../gsl/gsl_rng.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +error.h: diff --git a/gsl-2.5/cdf/.deps/binomial.Plo b/gsl-2.5/cdf/.deps/binomial.Plo new file mode 100644 index 00000000..4f1273de --- /dev/null +++ b/gsl-2.5/cdf/.deps/binomial.Plo @@ -0,0 +1,137 @@ +binomial.lo: binomial.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_math.h ../gsl/gsl_sys.h \ + ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cdf.h \ + ../gsl/gsl_sf_gamma.h ../gsl/gsl_sf_result.h error.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cdf.h: + +../gsl/gsl_sf_gamma.h: + +../gsl/gsl_sf_result.h: + +error.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: diff --git a/gsl-2.5/cdf/.deps/cauchy.Plo b/gsl-2.5/cdf/.deps/cauchy.Plo new file mode 100644 index 00000000..65543ca9 --- /dev/null +++ b/gsl-2.5/cdf/.deps/cauchy.Plo @@ -0,0 +1,85 @@ +cauchy.lo: cauchy.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_math.h ../gsl/gsl_sys.h \ + ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cdf.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cdf.h: diff --git a/gsl-2.5/cdf/.deps/cauchyinv.Plo b/gsl-2.5/cdf/.deps/cauchyinv.Plo new file mode 100644 index 00000000..55c259cb --- /dev/null +++ b/gsl-2.5/cdf/.deps/cauchyinv.Plo @@ -0,0 +1,85 @@ +cauchyinv.lo: cauchyinv.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_math.h ../gsl/gsl_sys.h \ + ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cdf.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cdf.h: diff --git a/gsl-2.5/cdf/.deps/chisq.Plo b/gsl-2.5/cdf/.deps/chisq.Plo new file mode 100644 index 00000000..27de9cbd --- /dev/null +++ b/gsl-2.5/cdf/.deps/chisq.Plo @@ -0,0 +1,12 @@ +chisq.lo: chisq.c /usr/include/stdc-predef.h ../config.h ../gsl/gsl_cdf.h \ + ../gsl/gsl_sf_gamma.h ../gsl/gsl_sf_result.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_cdf.h: + +../gsl/gsl_sf_gamma.h: + +../gsl/gsl_sf_result.h: diff --git a/gsl-2.5/cdf/.deps/chisqinv.Plo b/gsl-2.5/cdf/.deps/chisqinv.Plo new file mode 100644 index 00000000..084a6d41 --- /dev/null +++ b/gsl-2.5/cdf/.deps/chisqinv.Plo @@ -0,0 +1,12 @@ +chisqinv.lo: chisqinv.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_cdf.h ../gsl/gsl_sf_gamma.h ../gsl/gsl_sf_result.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_cdf.h: + +../gsl/gsl_sf_gamma.h: + +../gsl/gsl_sf_result.h: diff --git a/gsl-2.5/cdf/.deps/exponential.Plo b/gsl-2.5/cdf/.deps/exponential.Plo new file mode 100644 index 00000000..2e0bec2a --- /dev/null +++ b/gsl-2.5/cdf/.deps/exponential.Plo @@ -0,0 +1,85 @@ +exponential.lo: exponential.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_math.h ../gsl/gsl_sys.h \ + ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cdf.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cdf.h: diff --git a/gsl-2.5/cdf/.deps/exponentialinv.Plo b/gsl-2.5/cdf/.deps/exponentialinv.Plo new file mode 100644 index 00000000..76ef84a3 --- /dev/null +++ b/gsl-2.5/cdf/.deps/exponentialinv.Plo @@ -0,0 +1,86 @@ +exponentialinv.lo: exponentialinv.c /usr/include/stdc-predef.h \ + ../config.h /usr/include/math.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_math.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cdf.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cdf.h: diff --git a/gsl-2.5/cdf/.deps/exppow.Plo b/gsl-2.5/cdf/.deps/exppow.Plo new file mode 100644 index 00000000..59640244 --- /dev/null +++ b/gsl-2.5/cdf/.deps/exppow.Plo @@ -0,0 +1,47 @@ +exppow.lo: exppow.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_cdf.h ../gsl/gsl_sf_gamma.h \ + ../gsl/gsl_sf_result.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_cdf.h: + +../gsl/gsl_sf_gamma.h: + +../gsl/gsl_sf_result.h: diff --git a/gsl-2.5/cdf/.deps/fdist.Plo b/gsl-2.5/cdf/.deps/fdist.Plo new file mode 100644 index 00000000..f2bd7d9d --- /dev/null +++ b/gsl-2.5/cdf/.deps/fdist.Plo @@ -0,0 +1,140 @@ +fdist.lo: fdist.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_cdf.h ../gsl/gsl_sf_gamma.h \ + ../gsl/gsl_sf_result.h ../gsl/gsl_math.h ../gsl/gsl_sys.h \ + ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + error.h beta_inc.c + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_cdf.h: + +../gsl/gsl_sf_gamma.h: + +../gsl/gsl_sf_result.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +error.h: + +beta_inc.c: diff --git a/gsl-2.5/cdf/.deps/fdistinv.Plo b/gsl-2.5/cdf/.deps/fdistinv.Plo new file mode 100644 index 00000000..0572378e --- /dev/null +++ b/gsl-2.5/cdf/.deps/fdistinv.Plo @@ -0,0 +1,134 @@ +fdistinv.lo: fdistinv.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_cdf.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + error.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_cdf.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +error.h: diff --git a/gsl-2.5/cdf/.deps/flat.Plo b/gsl-2.5/cdf/.deps/flat.Plo new file mode 100644 index 00000000..d5bf82ff --- /dev/null +++ b/gsl-2.5/cdf/.deps/flat.Plo @@ -0,0 +1,85 @@ +flat.lo: flat.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_math.h ../gsl/gsl_sys.h \ + ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cdf.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cdf.h: diff --git a/gsl-2.5/cdf/.deps/flatinv.Plo b/gsl-2.5/cdf/.deps/flatinv.Plo new file mode 100644 index 00000000..aa8a6b1a --- /dev/null +++ b/gsl-2.5/cdf/.deps/flatinv.Plo @@ -0,0 +1,8 @@ +flatinv.lo: flatinv.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_cdf.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_cdf.h: diff --git a/gsl-2.5/cdf/.deps/gamma.Plo b/gsl-2.5/cdf/.deps/gamma.Plo new file mode 100644 index 00000000..b1a9743b --- /dev/null +++ b/gsl-2.5/cdf/.deps/gamma.Plo @@ -0,0 +1,90 @@ +gamma.lo: gamma.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_cdf.h ../gsl/gsl_math.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_sf_gamma.h \ + ../gsl/gsl_sf_result.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_cdf.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_sf_gamma.h: + +../gsl/gsl_sf_result.h: diff --git a/gsl-2.5/cdf/.deps/gammainv.Plo b/gsl-2.5/cdf/.deps/gammainv.Plo new file mode 100644 index 00000000..2dd9d138 --- /dev/null +++ b/gsl-2.5/cdf/.deps/gammainv.Plo @@ -0,0 +1,298 @@ +gammainv.lo: gammainv.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_cdf.h ../gsl/gsl_math.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_randist.h \ + ../gsl/gsl_rng.h /usr/include/stdlib.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_errno.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_vector.h ../gsl/gsl_vector_complex_long_double.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_sf_gamma.h ../gsl/gsl_sf_result.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_cdf.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_randist.h: + +../gsl/gsl_rng.h: + +/usr/include/stdlib.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_sf_gamma.h: + +../gsl/gsl_sf_result.h: diff --git a/gsl-2.5/cdf/.deps/gauss.Plo b/gsl-2.5/cdf/.deps/gauss.Plo new file mode 100644 index 00000000..f6881e84 --- /dev/null +++ b/gsl-2.5/cdf/.deps/gauss.Plo @@ -0,0 +1,85 @@ +gauss.lo: gauss.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_math.h ../gsl/gsl_sys.h \ + ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cdf.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cdf.h: diff --git a/gsl-2.5/cdf/.deps/gaussinv.Plo b/gsl-2.5/cdf/.deps/gaussinv.Plo new file mode 100644 index 00000000..67893326 --- /dev/null +++ b/gsl-2.5/cdf/.deps/gaussinv.Plo @@ -0,0 +1,132 @@ +gaussinv.lo: gaussinv.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_errno.h /usr/include/stdio.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_types.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_nan.h ../gsl/gsl_pow_int.h \ + ../gsl/gsl_minmax.h ../gsl/gsl_cdf.h rat_eval.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cdf.h: + +rat_eval.h: diff --git a/gsl-2.5/cdf/.deps/geometric.Plo b/gsl-2.5/cdf/.deps/geometric.Plo new file mode 100644 index 00000000..4b384944 --- /dev/null +++ b/gsl-2.5/cdf/.deps/geometric.Plo @@ -0,0 +1,133 @@ +geometric.lo: geometric.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_math.h ../gsl/gsl_sys.h \ + ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_cdf.h error.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_cdf.h: + +error.h: diff --git a/gsl-2.5/cdf/.deps/gumbel1.Plo b/gsl-2.5/cdf/.deps/gumbel1.Plo new file mode 100644 index 00000000..c6aa1924 --- /dev/null +++ b/gsl-2.5/cdf/.deps/gumbel1.Plo @@ -0,0 +1,85 @@ +gumbel1.lo: gumbel1.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_math.h ../gsl/gsl_sys.h \ + ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cdf.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cdf.h: diff --git a/gsl-2.5/cdf/.deps/gumbel1inv.Plo b/gsl-2.5/cdf/.deps/gumbel1inv.Plo new file mode 100644 index 00000000..ecabd5f7 --- /dev/null +++ b/gsl-2.5/cdf/.deps/gumbel1inv.Plo @@ -0,0 +1,85 @@ +gumbel1inv.lo: gumbel1inv.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_math.h ../gsl/gsl_sys.h \ + ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cdf.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cdf.h: diff --git a/gsl-2.5/cdf/.deps/gumbel2.Plo b/gsl-2.5/cdf/.deps/gumbel2.Plo new file mode 100644 index 00000000..722e39c9 --- /dev/null +++ b/gsl-2.5/cdf/.deps/gumbel2.Plo @@ -0,0 +1,85 @@ +gumbel2.lo: gumbel2.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_math.h ../gsl/gsl_sys.h \ + ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cdf.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cdf.h: diff --git a/gsl-2.5/cdf/.deps/gumbel2inv.Plo b/gsl-2.5/cdf/.deps/gumbel2inv.Plo new file mode 100644 index 00000000..bacf673d --- /dev/null +++ b/gsl-2.5/cdf/.deps/gumbel2inv.Plo @@ -0,0 +1,85 @@ +gumbel2inv.lo: gumbel2inv.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_math.h ../gsl/gsl_sys.h \ + ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cdf.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cdf.h: diff --git a/gsl-2.5/cdf/.deps/hypergeometric.Plo b/gsl-2.5/cdf/.deps/hypergeometric.Plo new file mode 100644 index 00000000..e92ff531 --- /dev/null +++ b/gsl-2.5/cdf/.deps/hypergeometric.Plo @@ -0,0 +1,298 @@ +hypergeometric.lo: hypergeometric.c /usr/include/stdc-predef.h \ + ../config.h /usr/include/math.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_math.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_cdf.h ../gsl/gsl_randist.h ../gsl/gsl_rng.h \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/byteswap.h \ + /usr/include/bits/byteswap-16.h /usr/include/sys/types.h \ + /usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib-float.h \ + ../gsl/gsl_vector.h ../gsl/gsl_vector_complex_long_double.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h error.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_cdf.h: + +../gsl/gsl_randist.h: + +../gsl/gsl_rng.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +error.h: diff --git a/gsl-2.5/cdf/.deps/laplace.Plo b/gsl-2.5/cdf/.deps/laplace.Plo new file mode 100644 index 00000000..c4dba41f --- /dev/null +++ b/gsl-2.5/cdf/.deps/laplace.Plo @@ -0,0 +1,85 @@ +laplace.lo: laplace.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_math.h ../gsl/gsl_sys.h \ + ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cdf.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cdf.h: diff --git a/gsl-2.5/cdf/.deps/laplaceinv.Plo b/gsl-2.5/cdf/.deps/laplaceinv.Plo new file mode 100644 index 00000000..19d1a3cf --- /dev/null +++ b/gsl-2.5/cdf/.deps/laplaceinv.Plo @@ -0,0 +1,85 @@ +laplaceinv.lo: laplaceinv.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_math.h ../gsl/gsl_sys.h \ + ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cdf.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cdf.h: diff --git a/gsl-2.5/cdf/.deps/logistic.Plo b/gsl-2.5/cdf/.deps/logistic.Plo new file mode 100644 index 00000000..20b9f3c1 --- /dev/null +++ b/gsl-2.5/cdf/.deps/logistic.Plo @@ -0,0 +1,85 @@ +logistic.lo: logistic.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_math.h ../gsl/gsl_sys.h \ + ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cdf.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cdf.h: diff --git a/gsl-2.5/cdf/.deps/logisticinv.Plo b/gsl-2.5/cdf/.deps/logisticinv.Plo new file mode 100644 index 00000000..52829068 --- /dev/null +++ b/gsl-2.5/cdf/.deps/logisticinv.Plo @@ -0,0 +1,85 @@ +logisticinv.lo: logisticinv.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_math.h ../gsl/gsl_sys.h \ + ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cdf.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cdf.h: diff --git a/gsl-2.5/cdf/.deps/lognormal.Plo b/gsl-2.5/cdf/.deps/lognormal.Plo new file mode 100644 index 00000000..327013d9 --- /dev/null +++ b/gsl-2.5/cdf/.deps/lognormal.Plo @@ -0,0 +1,85 @@ +lognormal.lo: lognormal.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_math.h ../gsl/gsl_sys.h \ + ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cdf.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cdf.h: diff --git a/gsl-2.5/cdf/.deps/lognormalinv.Plo b/gsl-2.5/cdf/.deps/lognormalinv.Plo new file mode 100644 index 00000000..f4d9692f --- /dev/null +++ b/gsl-2.5/cdf/.deps/lognormalinv.Plo @@ -0,0 +1,85 @@ +lognormalinv.lo: lognormalinv.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_math.h ../gsl/gsl_sys.h \ + ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cdf.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cdf.h: diff --git a/gsl-2.5/cdf/.deps/nbinomial.Plo b/gsl-2.5/cdf/.deps/nbinomial.Plo new file mode 100644 index 00000000..e8fd0cdc --- /dev/null +++ b/gsl-2.5/cdf/.deps/nbinomial.Plo @@ -0,0 +1,133 @@ +nbinomial.lo: nbinomial.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_math.h ../gsl/gsl_sys.h \ + ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_cdf.h error.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_cdf.h: + +error.h: diff --git a/gsl-2.5/cdf/.deps/pareto.Plo b/gsl-2.5/cdf/.deps/pareto.Plo new file mode 100644 index 00000000..a6a028e5 --- /dev/null +++ b/gsl-2.5/cdf/.deps/pareto.Plo @@ -0,0 +1,85 @@ +pareto.lo: pareto.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_math.h ../gsl/gsl_sys.h \ + ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cdf.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cdf.h: diff --git a/gsl-2.5/cdf/.deps/paretoinv.Plo b/gsl-2.5/cdf/.deps/paretoinv.Plo new file mode 100644 index 00000000..083b4292 --- /dev/null +++ b/gsl-2.5/cdf/.deps/paretoinv.Plo @@ -0,0 +1,85 @@ +paretoinv.lo: paretoinv.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_math.h ../gsl/gsl_sys.h \ + ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cdf.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cdf.h: diff --git a/gsl-2.5/cdf/.deps/pascal.Plo b/gsl-2.5/cdf/.deps/pascal.Plo new file mode 100644 index 00000000..ee902ca6 --- /dev/null +++ b/gsl-2.5/cdf/.deps/pascal.Plo @@ -0,0 +1,85 @@ +pascal.lo: pascal.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_math.h ../gsl/gsl_sys.h \ + ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cdf.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cdf.h: diff --git a/gsl-2.5/cdf/.deps/poisson.Plo b/gsl-2.5/cdf/.deps/poisson.Plo new file mode 100644 index 00000000..fffd69c9 --- /dev/null +++ b/gsl-2.5/cdf/.deps/poisson.Plo @@ -0,0 +1,133 @@ +poisson.lo: poisson.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_math.h ../gsl/gsl_sys.h \ + ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_cdf.h error.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_cdf.h: + +error.h: diff --git a/gsl-2.5/cdf/.deps/rayleigh.Plo b/gsl-2.5/cdf/.deps/rayleigh.Plo new file mode 100644 index 00000000..014053e7 --- /dev/null +++ b/gsl-2.5/cdf/.deps/rayleigh.Plo @@ -0,0 +1,85 @@ +rayleigh.lo: rayleigh.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_math.h ../gsl/gsl_sys.h \ + ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cdf.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cdf.h: diff --git a/gsl-2.5/cdf/.deps/rayleighinv.Plo b/gsl-2.5/cdf/.deps/rayleighinv.Plo new file mode 100644 index 00000000..47dac9ca --- /dev/null +++ b/gsl-2.5/cdf/.deps/rayleighinv.Plo @@ -0,0 +1,85 @@ +rayleighinv.lo: rayleighinv.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_math.h ../gsl/gsl_sys.h \ + ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cdf.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cdf.h: diff --git a/gsl-2.5/cdf/.deps/tdist.Plo b/gsl-2.5/cdf/.deps/tdist.Plo new file mode 100644 index 00000000..ccfd9e6b --- /dev/null +++ b/gsl-2.5/cdf/.deps/tdist.Plo @@ -0,0 +1,138 @@ +tdist.lo: tdist.c /usr/include/stdc-predef.h ../config.h ../gsl/gsl_cdf.h \ + ../gsl/gsl_sf_gamma.h ../gsl/gsl_sf_result.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + beta_inc.c + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_cdf.h: + +../gsl/gsl_sf_gamma.h: + +../gsl/gsl_sf_result.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +beta_inc.c: diff --git a/gsl-2.5/cdf/.deps/tdistinv.Plo b/gsl-2.5/cdf/.deps/tdistinv.Plo new file mode 100644 index 00000000..b291bebd --- /dev/null +++ b/gsl-2.5/cdf/.deps/tdistinv.Plo @@ -0,0 +1,298 @@ +tdistinv.lo: tdistinv.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_cdf.h ../gsl/gsl_math.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_randist.h \ + ../gsl/gsl_rng.h /usr/include/stdlib.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_errno.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_vector.h ../gsl/gsl_vector_complex_long_double.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_sf_gamma.h ../gsl/gsl_sf_result.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_cdf.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_randist.h: + +../gsl/gsl_rng.h: + +/usr/include/stdlib.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_sf_gamma.h: + +../gsl/gsl_sf_result.h: diff --git a/gsl-2.5/cdf/.deps/test.Po b/gsl-2.5/cdf/.deps/test.Po new file mode 100644 index 00000000..e5cb0132 --- /dev/null +++ b/gsl-2.5/cdf/.deps/test.Po @@ -0,0 +1,303 @@ +test.o: test.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdio.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_math.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_randist.h \ + ../gsl/gsl_rng.h ../gsl/gsl_errno.h /usr/include/errno.h \ + /usr/include/bits/errno.h /usr/include/linux/errno.h \ + /usr/include/asm/errno.h /usr/include/asm-generic/errno.h \ + /usr/include/asm-generic/errno-base.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_complex.h \ + ../gsl/gsl_check_range.h ../gsl/gsl_vector_long_double.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_vector_complex.h \ + ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_cdf.h ../gsl/gsl_test.h \ + ../gsl/gsl_ieee_utils.h test_auto.c + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_randist.h: + +../gsl/gsl_rng.h: + +../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_cdf.h: + +../gsl/gsl_test.h: + +../gsl/gsl_ieee_utils.h: + +test_auto.c: diff --git a/gsl-2.5/cdf/.deps/weibull.Plo b/gsl-2.5/cdf/.deps/weibull.Plo new file mode 100644 index 00000000..19cc83c7 --- /dev/null +++ b/gsl-2.5/cdf/.deps/weibull.Plo @@ -0,0 +1,85 @@ +weibull.lo: weibull.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_math.h ../gsl/gsl_sys.h \ + ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cdf.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cdf.h: diff --git a/gsl-2.5/cdf/.deps/weibullinv.Plo b/gsl-2.5/cdf/.deps/weibullinv.Plo new file mode 100644 index 00000000..00bcd69a --- /dev/null +++ b/gsl-2.5/cdf/.deps/weibullinv.Plo @@ -0,0 +1,85 @@ +weibullinv.lo: weibullinv.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_math.h ../gsl/gsl_sys.h \ + ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_cdf.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_cdf.h: diff --git a/gsl-2.5/cdf/.libs/libgslcdf.la b/gsl-2.5/cdf/.libs/libgslcdf.la new file mode 120000 index 00000000..68aebfe0 --- /dev/null +++ b/gsl-2.5/cdf/.libs/libgslcdf.la @@ -0,0 +1 @@ +../libgslcdf.la \ No newline at end of file diff --git a/gsl-2.5/cdf/ChangeLog b/gsl-2.5/cdf/ChangeLog new file mode 100644 index 00000000..8fbce13f --- /dev/null +++ b/gsl-2.5/cdf/ChangeLog @@ -0,0 +1,135 @@ +2009-07-19 Brian Gough + + * gumbel1.c (gsl_cdf_gumbel1_Q): use a single argument ax-log(b) + to get better control over underflow/overflow + +2008-12-03 Brian Gough + + * gammainv.c (gsl_cdf_gamma_Pinv): keep iterating if P is still + changing (fix for bug 24704) + + * test.c (test_chisqinv): added test cases for bug 24704 + +2008-07-03 Brian Gough + + * Makefile.am (INCLUDES): use top_srcdir instead of top_builddir + +2008-04-29 Brian Gough + + * gammainv.c (gsl_cdf_gamma_Pinv, gsl_cdf_gamma_Qinv): restrict + the range of the gaussian approximation + +2008-02-20 Brian Gough + + * beta_inc.c (beta_inc_AXPY): add some handling for large + parameter cases + +2008-02-12 Brian Gough + + * hypergeometric.c (gsl_cdf_hypergeometric_P): compute midpoint in + double precision to avoid overflow + (gsl_cdf_hypergeometric_Q): ditto + +2007-08-22 Brian Gough + + * betainv.c (gsl_cdf_beta_Pinv): added an error check for + inaccurate results + + * gammainv.c (gsl_cdf_gamma_Pinv): added an error check for + inaccurate results + + * tdistinv.c (gsl_cdf_tdist_Pinv): added an error check for + inaccurate results + +2007-08-21 Brian Gough + + * betainv.c (gsl_cdf_beta_Pinv): added bisection method to improve + initial approximations + +2007-01-23 Brian Gough + + * betainv.c (gsl_cdf_beta_Pinv): avoid generating a NaN for lx > 0 + +2006-04-18 Brian Gough + + * betainv.c (gsl_cdf_beta_Qinv): fix prototype const + +2006-03-07 Brian Gough + + * poisson.c: added poisson cdf + + * nbinomial.c: added negative binomial cdf + + * hypergeometric.c: added hypergeometric cdf + + * geometric.c: added geometric cdf + + * binomial.c (gsl_cdf_binomial_Q): added binomial cdf + + * test.c: added discrete function tests + + * gamma.c (gsl_cdf_gamma_P, gsl_cdf_gamma_Q): clean up unused + code, ensure that branches make P+Q=1 always true + + * fdistinv.c (gsl_cdf_fdist_Pinv): use P instead of p for consistency + + * fdist.c (gsl_cdf_fdist_Q): use Q instead of P for consistency + + * beta.c (gsl_cdf_beta_Q): use Q instead of P for consistency + +2006-02-27 Brian Gough + + * fdistinv.c (gsl_cdf_fdist_Pinv, gsl_cdf_fdist_Qinv): added + inverse functions + + * betainv.c (gsl_cdf_beta_Pinv, gsl_cdf_beta_Qinv): added inverse + functions + + * tdistinv.c (gsl_cdf_tdist_Qinv, gsl_cdf_tdist_Pinv): max 32 + iterations, prevent infinite loop + + * gammainv.c (gsl_cdf_gamma_Qinv, gsl_cdf_gamma_Pinv): max 32 + iterations, prevent infinite loop + +2005-06-20 Brian Gough + + * test.c: removed tests using subnormal values, since they tend to + fail when extended precision registers are not available. + +2004-10-26 Brian Gough + + * exppow.c: added exppow distribution + +2004-10-01 Brian Gough + + * beta.c (gsl_cdf_beta_P, gsl_cdf_beta_P): return consistent + results for out of range values. + +2003-08-27 Brian Gough + + * gauss.c: use parentheses around constant macros to avoid -(-X) + being interpreted as --X + +2003-07-27 Brian Gough + + * gumbel1.c (gsl_cdf_gumbel1_Q): use pow in place of exp since + compilers seem to handle overflow better in this case (perhaps + because it is not an intrinsic function). + + * gumbel2.c (gsl_cdf_gumbel2_P): handle case of x = 0 explicitly + (gsl_cdf_gumbel2_Q): handle case of x = 0 explicitly + +2003-07-22 Brian Gough + + * gamma.c (gsl_cdf_gamma_P): Peizer and Pratt approximation for + large a seems to be inaccurate in tails + (gsl_cdf_gamma_Q): Peizer and Pratt approximation for large a + seems to be inaccurate in tails + + * test.c (main): added test for large a for gamma + + * cauchyinv.c (gsl_cdf_cauchy_Qinv): corrected limiting value for + Q=1 + + * added Cumulative Distribution functions from savannah.gnu.org + diff --git a/gsl-2.5/cdf/Makefile b/gsl-2.5/cdf/Makefile new file mode 100644 index 00000000..11037d31 --- /dev/null +++ b/gsl-2.5/cdf/Makefile @@ -0,0 +1,1076 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# cdf/Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + + + + +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/gsl +pkgincludedir = $(includedir)/gsl +pkglibdir = $(libdir)/gsl +pkglibexecdir = $(libexecdir)/gsl +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = x86_64-unknown-linux-gnu +host_triplet = x86_64-unknown-linux-gnu +check_PROGRAMS = test$(EXEEXT) +subdir = cdf +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp \ + $(noinst_HEADERS) $(pkginclude_HEADERS) \ + $(top_srcdir)/test-driver ChangeLog TODO +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +libgslcdf_la_LIBADD = +am_libgslcdf_la_OBJECTS = beta.lo betainv.lo cauchy.lo cauchyinv.lo \ + chisq.lo chisqinv.lo exponential.lo exponentialinv.lo \ + exppow.lo fdist.lo fdistinv.lo flat.lo flatinv.lo gamma.lo \ + gammainv.lo gauss.lo gaussinv.lo gumbel1.lo gumbel1inv.lo \ + gumbel2.lo gumbel2inv.lo laplace.lo laplaceinv.lo logistic.lo \ + logisticinv.lo lognormal.lo lognormalinv.lo pareto.lo \ + paretoinv.lo rayleigh.lo rayleighinv.lo tdist.lo tdistinv.lo \ + weibull.lo weibullinv.lo binomial.lo poisson.lo geometric.lo \ + nbinomial.lo pascal.lo hypergeometric.lo +libgslcdf_la_OBJECTS = $(am_libgslcdf_la_OBJECTS) +AM_V_lt = $(am__v_lt_$(V)) +am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) +am__v_lt_0 = --silent +am__v_lt_1 = +am_test_OBJECTS = test.$(OBJEXT) +test_OBJECTS = $(am_test_OBJECTS) +test_DEPENDENCIES = libgslcdf.la ../randist/libgslrandist.la \ + ../rng/libgslrng.la ../specfunc/libgslspecfunc.la \ + ../complex/libgslcomplex.la ../ieee-utils/libgslieeeutils.la \ + ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la \ + ../utils/libutils.la +AM_V_P = $(am__v_P_$(V)) +am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY)) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_$(V)) +am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_$(V)) +am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I. -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_$(V)) +am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_$(V)) +am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libgslcdf_la_SOURCES) $(test_SOURCES) +DIST_SOURCES = $(libgslcdf_la_SOURCES) $(test_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(pkgincludedir)" +HEADERS = $(noinst_HEADERS) $(pkginclude_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = .test +LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing aclocal-1.13 +AMTAR = $${TAR-tar} +AM_DEFAULT_VERBOSITY = 1 +AR = ar +AS = as +AUTOCONF = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing autoconf +AUTOHEADER = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing autoheader +AUTOMAKE = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing automake-1.13 +AWK = gawk +CC = gcc +CCDEPMODE = depmode=gcc3 +CFLAGS = -g -O2 +CPP = gcc -E +CPPFLAGS = +CYGPATH_W = echo +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +DLLTOOL = false +DSYMUTIL = +DUMPBIN = +ECHO_C = +ECHO_N = -n +ECHO_T = +EGREP = /usr/bin/grep -E +EXEEXT = +FGREP = /usr/bin/grep -F +GREP = /usr/bin/grep +GSLCBLAS_LDFLAGS = +GSL_CFLAGS = -I${prefix}/include +GSL_LDFLAGS = +GSL_LIBADD = +GSL_LIBM = -lm +GSL_LIBS = -L${exec_prefix}/lib -lgsl +GSL_LT_CBLAS_VERSION = 0:0:0 +GSL_LT_VERSION = 24:0:1 +GSL_MAJOR_VERSION = 2 +GSL_MINOR_VERSION = 5 +HAVE_AIX_IEEE_INTERFACE = +HAVE_DARWIN86_IEEE_INTERFACE = +HAVE_DARWIN_IEEE_INTERFACE = +HAVE_FREEBSD_IEEE_INTERFACE = +HAVE_GNUM68K_IEEE_INTERFACE = +HAVE_GNUPPC_IEEE_INTERFACE = +HAVE_GNUSPARC_IEEE_INTERFACE = +HAVE_GNUX86_IEEE_INTERFACE = +HAVE_HPUX11_IEEE_INTERFACE = +HAVE_HPUX_IEEE_INTERFACE = +HAVE_IRIX_IEEE_INTERFACE = +HAVE_NETBSD_IEEE_INTERFACE = +HAVE_OPENBSD_IEEE_INTERFACE = +HAVE_OS2EMX_IEEE_INTERFACE = +HAVE_SOLARIS_IEEE_INTERFACE = +HAVE_SUNOS4_IEEE_INTERFACE = +HAVE_TRU64_IEEE_INTERFACE = +INSTALL = /usr/bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = $(install_sh) -c -s +LD = /usr/bin/ld -m elf_x86_64 +LDFLAGS = +LIBM = -lm +LIBOBJS = +LIBS = -lm +LIBTOOL = $(SHELL) $(top_builddir)/libtool +LIPO = +LN_S = ln -s +LTLIBOBJS = +MAINT = # +MAKEINFO = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing makeinfo +MANIFEST_TOOL = : +MKDIR_P = /usr/bin/mkdir -p +NM = /usr/bin/nm -B +NMEDIT = +OBJDUMP = objdump +OBJEXT = o +OTOOL = +OTOOL64 = +PACKAGE = gsl +PACKAGE_BUGREPORT = +PACKAGE_NAME = gsl +PACKAGE_STRING = gsl 2.5 +PACKAGE_TARNAME = gsl +PACKAGE_URL = +PACKAGE_VERSION = 2.5 +PATH_SEPARATOR = : +RANLIB = ranlib +SED = /usr/bin/sed +SET_MAKE = +SHELL = /bin/sh +STRIP = strip +VERSION = 2.5 +abs_builddir = /home/groups/kipac/chto/package/gsl/gsl-2.5/cdf +abs_srcdir = /home/groups/kipac/chto/package/gsl/gsl-2.5/cdf +abs_top_builddir = /home/groups/kipac/chto/package/gsl/gsl-2.5 +abs_top_srcdir = /home/groups/kipac/chto/package/gsl/gsl-2.5 +ac_ct_AR = ar +ac_ct_CC = gcc +ac_ct_DUMPBIN = +am__include = include +am__leading_dot = . +am__quote = +am__tar = $${TAR-tar} chof - "$$tardir" +am__untar = $${TAR-tar} xf - +bindir = ${exec_prefix}/bin +build = x86_64-unknown-linux-gnu +build_alias = +build_cpu = x86_64 +build_os = linux-gnu +build_vendor = unknown +builddir = . +datadir = ${datarootdir} +datarootdir = ${prefix}/share +docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} +dvidir = ${docdir} +exec_prefix = ${prefix} +host = x86_64-unknown-linux-gnu +host_alias = +host_cpu = x86_64 +host_os = linux-gnu +host_vendor = unknown +htmldir = ${docdir} +includedir = ${prefix}/include +infodir = ${datarootdir}/info +install_sh = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/install-sh +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +localedir = ${datarootdir}/locale +localstatedir = ${prefix}/var +mandir = ${datarootdir}/man +mkdir_p = $(MKDIR_P) +oldincludedir = /usr/include +pdfdir = ${docdir} +prefix = /home/groups/kipac/chto/package/gsl/gsl_lib +program_transform_name = s,x,x, +psdir = ${docdir} +sbindir = ${exec_prefix}/sbin +sharedstatedir = ${prefix}/com +srcdir = . +sysconfdir = ${prefix}/etc +target_alias = +top_build_prefix = ../ +top_builddir = .. +top_srcdir = .. +noinst_LTLIBRARIES = libgslcdf.la +pkginclude_HEADERS = gsl_cdf.h +AM_CPPFLAGS = -I$(top_srcdir) +libgslcdf_la_SOURCES = beta.c betainv.c cauchy.c cauchyinv.c chisq.c chisqinv.c exponential.c exponentialinv.c exppow.c fdist.c fdistinv.c flat.c flatinv.c gamma.c gammainv.c gauss.c gaussinv.c gumbel1.c gumbel1inv.c gumbel2.c gumbel2inv.c laplace.c laplaceinv.c logistic.c logisticinv.c lognormal.c lognormalinv.c pareto.c paretoinv.c rayleigh.c rayleighinv.c tdist.c tdistinv.c weibull.c weibullinv.c binomial.c poisson.c geometric.c nbinomial.c pascal.c hypergeometric.c +noinst_HEADERS = beta_inc.c rat_eval.h test_auto.c error.h +TESTS = $(check_PROGRAMS) +test_SOURCES = test.c +test_LDADD = libgslcdf.la ../randist/libgslrandist.la ../rng/libgslrng.la ../specfunc/libgslspecfunc.la ../complex/libgslcomplex.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu cdf/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu cdf/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: # $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): # $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libgslcdf.la: $(libgslcdf_la_OBJECTS) $(libgslcdf_la_DEPENDENCIES) $(EXTRA_libgslcdf_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(libgslcdf_la_OBJECTS) $(libgslcdf_la_LIBADD) $(LIBS) + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) $(EXTRA_test_DEPENDENCIES) + @rm -f test$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_OBJECTS) $(test_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +include ./$(DEPDIR)/beta.Plo +include ./$(DEPDIR)/betainv.Plo +include ./$(DEPDIR)/binomial.Plo +include ./$(DEPDIR)/cauchy.Plo +include ./$(DEPDIR)/cauchyinv.Plo +include ./$(DEPDIR)/chisq.Plo +include ./$(DEPDIR)/chisqinv.Plo +include ./$(DEPDIR)/exponential.Plo +include ./$(DEPDIR)/exponentialinv.Plo +include ./$(DEPDIR)/exppow.Plo +include ./$(DEPDIR)/fdist.Plo +include ./$(DEPDIR)/fdistinv.Plo +include ./$(DEPDIR)/flat.Plo +include ./$(DEPDIR)/flatinv.Plo +include ./$(DEPDIR)/gamma.Plo +include ./$(DEPDIR)/gammainv.Plo +include ./$(DEPDIR)/gauss.Plo +include ./$(DEPDIR)/gaussinv.Plo +include ./$(DEPDIR)/geometric.Plo +include ./$(DEPDIR)/gumbel1.Plo +include ./$(DEPDIR)/gumbel1inv.Plo +include ./$(DEPDIR)/gumbel2.Plo +include ./$(DEPDIR)/gumbel2inv.Plo +include ./$(DEPDIR)/hypergeometric.Plo +include ./$(DEPDIR)/laplace.Plo +include ./$(DEPDIR)/laplaceinv.Plo +include ./$(DEPDIR)/logistic.Plo +include ./$(DEPDIR)/logisticinv.Plo +include ./$(DEPDIR)/lognormal.Plo +include ./$(DEPDIR)/lognormalinv.Plo +include ./$(DEPDIR)/nbinomial.Plo +include ./$(DEPDIR)/pareto.Plo +include ./$(DEPDIR)/paretoinv.Plo +include ./$(DEPDIR)/pascal.Plo +include ./$(DEPDIR)/poisson.Plo +include ./$(DEPDIR)/rayleigh.Plo +include ./$(DEPDIR)/rayleighinv.Plo +include ./$(DEPDIR)/tdist.Plo +include ./$(DEPDIR)/tdistinv.Plo +include ./$(DEPDIR)/test.Po +include ./$(DEPDIR)/weibull.Plo +include ./$(DEPDIR)/weibullinv.Plo + +.c.o: + $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# $(AM_V_CC)source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(COMPILE) -c $< + +.c.obj: + $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# $(AM_V_CC)source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: + $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +# $(AM_V_CC)source='$<' object='$@' libtool=yes \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-pkgincludeHEADERS: $(pkginclude_HEADERS) + @$(NORMAL_INSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \ + done + +uninstall-pkgincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + else \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_PROGRAMS) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +test.log: test$(EXEEXT) + @p='test$(EXEEXT)'; \ + b='test'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +#.test$(EXEEXT).log: +# @p='$<'; \ +# $(am__set_b); \ +# $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +# --log-file $$b.log --trs-file $$b.trs \ +# $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +# "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-am +all-am: Makefile $(LTLIBRARIES) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(pkgincludedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-pkgincludeHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-pkgincludeHEADERS + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES cscopelist-am ctags ctags-am distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-pkgincludeHEADERS \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + recheck tags tags-am uninstall uninstall-am \ + uninstall-pkgincludeHEADERS + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gsl-2.5/cdf/Makefile.am b/gsl-2.5/cdf/Makefile.am new file mode 100644 index 00000000..053c117d --- /dev/null +++ b/gsl-2.5/cdf/Makefile.am @@ -0,0 +1,17 @@ +## Process this file with automake to produce Makefile.in +noinst_LTLIBRARIES = libgslcdf.la + +pkginclude_HEADERS= gsl_cdf.h + +AM_CPPFLAGS = -I$(top_srcdir) + +libgslcdf_la_SOURCES = beta.c betainv.c cauchy.c cauchyinv.c chisq.c chisqinv.c exponential.c exponentialinv.c exppow.c fdist.c fdistinv.c flat.c flatinv.c gamma.c gammainv.c gauss.c gaussinv.c gumbel1.c gumbel1inv.c gumbel2.c gumbel2inv.c laplace.c laplaceinv.c logistic.c logisticinv.c lognormal.c lognormalinv.c pareto.c paretoinv.c rayleigh.c rayleighinv.c tdist.c tdistinv.c weibull.c weibullinv.c binomial.c poisson.c geometric.c nbinomial.c pascal.c hypergeometric.c + +noinst_HEADERS = beta_inc.c rat_eval.h test_auto.c error.h + +TESTS = $(check_PROGRAMS) + +check_PROGRAMS = test + +test_SOURCES = test.c +test_LDADD = libgslcdf.la ../randist/libgslrandist.la ../rng/libgslrng.la ../specfunc/libgslspecfunc.la ../complex/libgslcomplex.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la diff --git a/gsl-2.5/cdf/Makefile.in b/gsl-2.5/cdf/Makefile.in new file mode 100644 index 00000000..af512189 --- /dev/null +++ b/gsl-2.5/cdf/Makefile.in @@ -0,0 +1,1076 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + + +VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +check_PROGRAMS = test$(EXEEXT) +subdir = cdf +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp \ + $(noinst_HEADERS) $(pkginclude_HEADERS) \ + $(top_srcdir)/test-driver ChangeLog TODO +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +libgslcdf_la_LIBADD = +am_libgslcdf_la_OBJECTS = beta.lo betainv.lo cauchy.lo cauchyinv.lo \ + chisq.lo chisqinv.lo exponential.lo exponentialinv.lo \ + exppow.lo fdist.lo fdistinv.lo flat.lo flatinv.lo gamma.lo \ + gammainv.lo gauss.lo gaussinv.lo gumbel1.lo gumbel1inv.lo \ + gumbel2.lo gumbel2inv.lo laplace.lo laplaceinv.lo logistic.lo \ + logisticinv.lo lognormal.lo lognormalinv.lo pareto.lo \ + paretoinv.lo rayleigh.lo rayleighinv.lo tdist.lo tdistinv.lo \ + weibull.lo weibullinv.lo binomial.lo poisson.lo geometric.lo \ + nbinomial.lo pascal.lo hypergeometric.lo +libgslcdf_la_OBJECTS = $(am_libgslcdf_la_OBJECTS) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +am_test_OBJECTS = test.$(OBJEXT) +test_OBJECTS = $(am_test_OBJECTS) +test_DEPENDENCIES = libgslcdf.la ../randist/libgslrandist.la \ + ../rng/libgslrng.la ../specfunc/libgslspecfunc.la \ + ../complex/libgslcomplex.la ../ieee-utils/libgslieeeutils.la \ + ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la \ + ../utils/libutils.la +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libgslcdf_la_SOURCES) $(test_SOURCES) +DIST_SOURCES = $(libgslcdf_la_SOURCES) $(test_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(pkgincludedir)" +HEADERS = $(noinst_HEADERS) $(pkginclude_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = @EXEEXT@ .test +LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +GSLCBLAS_LDFLAGS = @GSLCBLAS_LDFLAGS@ +GSL_CFLAGS = @GSL_CFLAGS@ +GSL_LDFLAGS = @GSL_LDFLAGS@ +GSL_LIBADD = @GSL_LIBADD@ +GSL_LIBM = @GSL_LIBM@ +GSL_LIBS = @GSL_LIBS@ +GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ +GSL_LT_VERSION = @GSL_LT_VERSION@ +GSL_MAJOR_VERSION = @GSL_MAJOR_VERSION@ +GSL_MINOR_VERSION = @GSL_MINOR_VERSION@ +HAVE_AIX_IEEE_INTERFACE = @HAVE_AIX_IEEE_INTERFACE@ +HAVE_DARWIN86_IEEE_INTERFACE = @HAVE_DARWIN86_IEEE_INTERFACE@ +HAVE_DARWIN_IEEE_INTERFACE = @HAVE_DARWIN_IEEE_INTERFACE@ +HAVE_FREEBSD_IEEE_INTERFACE = @HAVE_FREEBSD_IEEE_INTERFACE@ +HAVE_GNUM68K_IEEE_INTERFACE = @HAVE_GNUM68K_IEEE_INTERFACE@ +HAVE_GNUPPC_IEEE_INTERFACE = @HAVE_GNUPPC_IEEE_INTERFACE@ +HAVE_GNUSPARC_IEEE_INTERFACE = @HAVE_GNUSPARC_IEEE_INTERFACE@ +HAVE_GNUX86_IEEE_INTERFACE = @HAVE_GNUX86_IEEE_INTERFACE@ +HAVE_HPUX11_IEEE_INTERFACE = @HAVE_HPUX11_IEEE_INTERFACE@ +HAVE_HPUX_IEEE_INTERFACE = @HAVE_HPUX_IEEE_INTERFACE@ +HAVE_IRIX_IEEE_INTERFACE = @HAVE_IRIX_IEEE_INTERFACE@ +HAVE_NETBSD_IEEE_INTERFACE = @HAVE_NETBSD_IEEE_INTERFACE@ +HAVE_OPENBSD_IEEE_INTERFACE = @HAVE_OPENBSD_IEEE_INTERFACE@ +HAVE_OS2EMX_IEEE_INTERFACE = @HAVE_OS2EMX_IEEE_INTERFACE@ +HAVE_SOLARIS_IEEE_INTERFACE = @HAVE_SOLARIS_IEEE_INTERFACE@ +HAVE_SUNOS4_IEEE_INTERFACE = @HAVE_SUNOS4_IEEE_INTERFACE@ +HAVE_TRU64_IEEE_INTERFACE = @HAVE_TRU64_IEEE_INTERFACE@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBM = @LIBM@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +noinst_LTLIBRARIES = libgslcdf.la +pkginclude_HEADERS = gsl_cdf.h +AM_CPPFLAGS = -I$(top_srcdir) +libgslcdf_la_SOURCES = beta.c betainv.c cauchy.c cauchyinv.c chisq.c chisqinv.c exponential.c exponentialinv.c exppow.c fdist.c fdistinv.c flat.c flatinv.c gamma.c gammainv.c gauss.c gaussinv.c gumbel1.c gumbel1inv.c gumbel2.c gumbel2inv.c laplace.c laplaceinv.c logistic.c logisticinv.c lognormal.c lognormalinv.c pareto.c paretoinv.c rayleigh.c rayleighinv.c tdist.c tdistinv.c weibull.c weibullinv.c binomial.c poisson.c geometric.c nbinomial.c pascal.c hypergeometric.c +noinst_HEADERS = beta_inc.c rat_eval.h test_auto.c error.h +TESTS = $(check_PROGRAMS) +test_SOURCES = test.c +test_LDADD = libgslcdf.la ../randist/libgslrandist.la ../rng/libgslrng.la ../specfunc/libgslspecfunc.la ../complex/libgslcomplex.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu cdf/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu cdf/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libgslcdf.la: $(libgslcdf_la_OBJECTS) $(libgslcdf_la_DEPENDENCIES) $(EXTRA_libgslcdf_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(libgslcdf_la_OBJECTS) $(libgslcdf_la_LIBADD) $(LIBS) + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) $(EXTRA_test_DEPENDENCIES) + @rm -f test$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_OBJECTS) $(test_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/beta.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/betainv.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/binomial.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cauchy.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cauchyinv.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chisq.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chisqinv.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/exponential.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/exponentialinv.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/exppow.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fdist.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fdistinv.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/flat.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/flatinv.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gamma.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gammainv.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gauss.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gaussinv.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/geometric.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gumbel1.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gumbel1inv.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gumbel2.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gumbel2inv.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hypergeometric.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/laplace.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/laplaceinv.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/logistic.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/logisticinv.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lognormal.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lognormalinv.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nbinomial.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pareto.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/paretoinv.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pascal.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/poisson.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rayleigh.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rayleighinv.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tdist.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tdistinv.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/weibull.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/weibullinv.Plo@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-pkgincludeHEADERS: $(pkginclude_HEADERS) + @$(NORMAL_INSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \ + done + +uninstall-pkgincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + else \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_PROGRAMS) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +test.log: test$(EXEEXT) + @p='test$(EXEEXT)'; \ + b='test'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +@am__EXEEXT_TRUE@.test$(EXEEXT).log: +@am__EXEEXT_TRUE@ @p='$<'; \ +@am__EXEEXT_TRUE@ $(am__set_b); \ +@am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +@am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ +@am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +@am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-am +all-am: Makefile $(LTLIBRARIES) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(pkgincludedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-pkgincludeHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-pkgincludeHEADERS + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES cscopelist-am ctags ctags-am distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-pkgincludeHEADERS \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + recheck tags tags-am uninstall uninstall-am \ + uninstall-pkgincludeHEADERS + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gsl-2.5/cdf/TODO b/gsl-2.5/cdf/TODO new file mode 100644 index 00000000..438ab10d --- /dev/null +++ b/gsl-2.5/cdf/TODO @@ -0,0 +1,28 @@ +# -*- org -*- +#+CATEGORY: cdf + +* discrete inverse distributions - easy apart from hypergeometric(?) + +* look for integer overflow in the discrete functions - this could be + hard to find - perform computations in double to avoid. + + gsl_cdf_binomial_P (unsigned int k, double p, unsigned int n); + gsl_cdf_binomial_Q (unsigned int k, double p, unsigned int n); + gsl_cdf_poisson_P (unsigned int k, double mu); + gsl_cdf_poisson_Q (unsigned int k, double mu); + gsl_cdf_geometric_P (unsigned int k, double p); + gsl_cdf_geometric_Q (unsigned int k, double p); + gsl_cdf_negative_binomial_P (unsigned int k, double p, double n); + gsl_cdf_negative_binomial_Q (unsigned int k, double p, double n); + gsl_cdf_pascal_P (unsigned int k, double p, unsigned int n); + gsl_cdf_pascal_Q (unsigned int k, double p, unsigned int n); + gsl_cdf_hypergeometric_P (unsigned int k, unsigned int n1, + unsigned int n2, unsigned int t); + gsl_cdf_hypergeometric_Q (unsigned int k, unsigned int n1, + unsigned int n2, unsigned int t); + +* Unify the beta_inc function with the special functions, put all the + functionaity in gsl_sf_beta_inc, providing a new function for the + AXPY part if necessary (can we do everything with gsl_sf_beta_inc + and gsl_sf_beta_inc_1mx keeping in mind that we cannot do 1-x + because of cancellation for small x) diff --git a/gsl-2.5/cdf/beta.c b/gsl-2.5/cdf/beta.c new file mode 100644 index 00000000..fa709d04 --- /dev/null +++ b/gsl-2.5/cdf/beta.c @@ -0,0 +1,66 @@ +/* cdf/cdf_beta.c + * + * Copyright (C) 2003, 2007 Brian Gough. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include + +#include "beta_inc.c" + +double +gsl_cdf_beta_P (const double x, const double a, const double b) +{ + double P; + + if (x <= 0.0 ) + { + return 0.0; + } + + if ( x >= 1.0 ) + { + return 1.0; + } + + P = beta_inc_AXPY (1.0, 0.0, a, b, x); + + return P; +} + +double +gsl_cdf_beta_Q (const double x, const double a, const double b) +{ + double Q; + + if ( x >= 1.0) + { + return 0.0; + } + + if ( x <= 0.0 ) + { + return 1.0; + } + + Q = beta_inc_AXPY (-1.0, 1.0, a, b, x); + + return Q; +} diff --git a/gsl-2.5/cdf/beta.lo b/gsl-2.5/cdf/beta.lo new file mode 100644 index 00000000..57c4ca59 --- /dev/null +++ b/gsl-2.5/cdf/beta.lo @@ -0,0 +1,12 @@ +# beta.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/beta.o' + +# Name of the non-PIC object +non_pic_object='beta.o' + diff --git a/gsl-2.5/cdf/beta_inc.c b/gsl-2.5/cdf/beta_inc.c new file mode 100644 index 00000000..ac1d3403 --- /dev/null +++ b/gsl-2.5/cdf/beta_inc.c @@ -0,0 +1,193 @@ +/* specfunc/beta_inc.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ +/* Modified for cdfs by Brian Gough, June 2003 */ + +#include + +static double +beta_cont_frac (const double a, const double b, const double x, + const double epsabs) +{ + const unsigned int max_iter = 512; /* control iterations */ + const double cutoff = 2.0 * GSL_DBL_MIN; /* control the zero cutoff */ + unsigned int iter_count = 0; + double cf; + + /* standard initialization for continued fraction */ + double num_term = 1.0; + double den_term = 1.0 - (a + b) * x / (a + 1.0); + + if (fabs (den_term) < cutoff) + den_term = GSL_NAN; + + den_term = 1.0 / den_term; + cf = den_term; + + while (iter_count < max_iter) + { + const int k = iter_count + 1; + double coeff = k * (b - k) * x / (((a - 1.0) + 2 * k) * (a + 2 * k)); + double delta_frac; + + /* first step */ + den_term = 1.0 + coeff * den_term; + num_term = 1.0 + coeff / num_term; + + if (fabs (den_term) < cutoff) + den_term = GSL_NAN; + + if (fabs (num_term) < cutoff) + num_term = GSL_NAN; + + den_term = 1.0 / den_term; + + delta_frac = den_term * num_term; + cf *= delta_frac; + + coeff = -(a + k) * (a + b + k) * x / ((a + 2 * k) * (a + 2 * k + 1.0)); + + /* second step */ + den_term = 1.0 + coeff * den_term; + num_term = 1.0 + coeff / num_term; + + if (fabs (den_term) < cutoff) + den_term = GSL_NAN; + + if (fabs (num_term) < cutoff) + num_term = GSL_NAN; + + den_term = 1.0 / den_term; + + delta_frac = den_term * num_term; + cf *= delta_frac; + + if (fabs (delta_frac - 1.0) < 2.0 * GSL_DBL_EPSILON) + break; + + if (cf * fabs (delta_frac - 1.0) < epsabs) + break; + + ++iter_count; + } + + if (iter_count >= max_iter) + return GSL_NAN; + + return cf; +} + +/* The function beta_inc_AXPY(A,Y,a,b,x) computes A * beta_inc(a,b,x) + + Y taking account of possible cancellations when using the + hypergeometric transformation beta_inc(a,b,x)=1-beta_inc(b,a,1-x). + + It also adjusts the accuracy of beta_inc() to fit the overall + absolute error when A*beta_inc is added to Y. (e.g. if Y >> + A*beta_inc then the accuracy of beta_inc can be reduced) */ + + + +static double +beta_inc_AXPY (const double A, const double Y, + const double a, const double b, const double x) +{ + if (x == 0.0) + { + return A * 0 + Y; + } + else if (x == 1.0) + { + return A * 1 + Y; + } + else if (a > 1e5 && b < 10 && x > a / (a + b)) + { + /* Handle asymptotic regime, large a, small b, x > peak [AS 26.5.17] */ + double N = a + (b - 1.0) / 2.0; + return A * gsl_sf_gamma_inc_Q (b, -N * log (x)) + Y; + } + else if (b > 1e5 && a < 10 && x < b / (a + b)) + { + /* Handle asymptotic regime, small a, large b, x < peak [AS 26.5.17] */ + double N = b + (a - 1.0) / 2.0; + return A * gsl_sf_gamma_inc_P (a, -N * log1p (-x)) + Y; + } + else + { + double ln_beta = gsl_sf_lnbeta (a, b); + double ln_pre = -ln_beta + a * log (x) + b * log1p (-x); + + double prefactor = exp (ln_pre); + + if (x < (a + 1.0) / (a + b + 2.0)) + { + /* Apply continued fraction directly. */ + double epsabs = fabs (Y / (A * prefactor / a)) * GSL_DBL_EPSILON; + + double cf = beta_cont_frac (a, b, x, epsabs); + + return A * (prefactor * cf / a) + Y; + } + else + { + /* Apply continued fraction after hypergeometric transformation. */ + double epsabs = + fabs ((A + Y) / (A * prefactor / b)) * GSL_DBL_EPSILON; + double cf = beta_cont_frac (b, a, 1.0 - x, epsabs); + double term = prefactor * cf / b; + + if (A == -Y) + { + return -A * term; + } + else + { + return A * (1 - term) + Y; + } + } + } +} + +/* Direct series evaluation for testing purposes only */ + +#if 0 +static double +beta_series (const double a, const double b, const double x, + const double epsabs) +{ + double f = x / (1 - x); + double c = (b - 1) / (a + 1) * f; + double s = 1; + double n = 0; + + s += c; + + do + { + n++; + c *= -f * (2 + n - b) / (2 + n + a); + s += c; + } + while (n < 512 && fabs (c) > GSL_DBL_EPSILON * fabs (s) + epsabs); + + s /= (1 - x); + + return s; +} +#endif diff --git a/gsl-2.5/cdf/betainv.c b/gsl-2.5/cdf/betainv.c new file mode 100644 index 00000000..ac6c4ffb --- /dev/null +++ b/gsl-2.5/cdf/betainv.c @@ -0,0 +1,225 @@ +/* cdf/betainv.c + * + * Copyright (C) 2004 Free Software Foundation, Inc. + * Copyright (C) 2006, 2007 Brian Gough + * Written by Jason H. Stover. + * Modified for GSL by Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* + * Invert the Beta distribution. + * + * References: + * + * Roger W. Abernathy and Robert P. Smith. "Applying Series Expansion + * to the Inverse Beta Distribution to Find Percentiles of the + * F-Distribution," ACM Transactions on Mathematical Software, volume + * 19, number 4, December 1993, pages 474-480. + * + * G.W. Hill and A.W. Davis. "Generalized asymptotic expansions of a + * Cornish-Fisher type," Annals of Mathematical Statistics, volume 39, + * number 8, August 1968, pages 1264-1273. + */ + +#include +#include +#include +#include +#include +#include +#include + +#include "error.h" + +static double +bisect (double x, double P, double a, double b, double xtol, double Ptol) +{ + double x0 = 0, x1 = 1, Px; + + while (fabs(x1 - x0) > xtol) { + Px = gsl_cdf_beta_P (x, a, b); + if (fabs(Px - P) < Ptol) { + /* return as soon as approximation is good enough, including on + the first iteration */ + return x; + } else if (Px < P) { + x0 = x; + } else if (Px > P) { + x1 = x; + } + x = 0.5 * (x0 + x1); + } + return x; +} + + +double +gsl_cdf_beta_Pinv (const double P, const double a, const double b) +{ + double x, mean; + + if (P < 0.0 || P > 1.0) + { + CDF_ERROR ("P must be in range 0 < P < 1", GSL_EDOM); + } + + if (a < 0.0) + { + CDF_ERROR ("a < 0", GSL_EDOM); + } + + if (b < 0.0) + { + CDF_ERROR ("b < 0", GSL_EDOM); + } + + if (P == 0.0) + { + return 0.0; + } + + if (P == 1.0) + { + return 1.0; + } + + if (P > 0.5) + { + return gsl_cdf_beta_Qinv (1 - P, a, b); + } + + mean = a / (a + b); + + if (P < 0.1) + { + /* small x */ + + double lg_ab = gsl_sf_lngamma (a + b); + double lg_a = gsl_sf_lngamma (a); + double lg_b = gsl_sf_lngamma (b); + + double lx = (log (a) + lg_a + lg_b - lg_ab + log (P)) / a; + if (lx <= 0) { + x = exp (lx); /* first approximation */ + x *= pow (1 - x, -(b - 1) / a); /* second approximation */ + } else { + x = mean; + } + + if (x > mean) + x = mean; + } + else + { + /* Use expected value as first guess */ + x = mean; + } + + /* Do bisection to get closer */ + x = bisect (x, P, a, b, 0.01, 0.01); + + { + double lambda, dP, phi; + unsigned int n = 0; + + start: + dP = P - gsl_cdf_beta_P (x, a, b); + phi = gsl_ran_beta_pdf (x, a, b); + + if (dP == 0.0 || n++ > 64) + goto end; + + lambda = dP / GSL_MAX (2 * fabs (dP / x), phi); + + { + double step0 = lambda; + double step1 = -((a - 1) / x - (b - 1) / (1 - x)) * lambda * lambda / 2; + + double step = step0; + + if (fabs (step1) < fabs (step0)) + { + step += step1; + } + else + { + /* scale back step to a reasonable size when too large */ + step *= 2 * fabs (step0 / step1); + }; + + if (x + step > 0 && x + step < 1) + { + x += step; + } + else + { + x = sqrt (x) * sqrt (mean); /* try a new starting point */ + } + + if (fabs (step0) > 1e-10 * x) + goto start; + } + + end: + + if (fabs(dP) > GSL_SQRT_DBL_EPSILON * P) + { + GSL_ERROR_VAL("inverse failed to converge", GSL_EFAILED, GSL_NAN); + } + + return x; + } +} + +double +gsl_cdf_beta_Qinv (const double Q, const double a, const double b) +{ + + if (Q < 0.0 || Q > 1.0) + { + CDF_ERROR ("Q must be inside range 0 < Q < 1", GSL_EDOM); + } + + if (a < 0.0) + { + CDF_ERROR ("a < 0", GSL_EDOM); + } + + if (b < 0.0) + { + CDF_ERROR ("b < 0", GSL_EDOM); + } + + if (Q == 0.0) + { + return 1.0; + } + + if (Q == 1.0) + { + return 0.0; + } + + if (Q > 0.5) + { + return gsl_cdf_beta_Pinv (1 - Q, a, b); + } + else + { + return 1 - gsl_cdf_beta_Pinv (Q, b, a); + }; +} diff --git a/gsl-2.5/cdf/betainv.lo b/gsl-2.5/cdf/betainv.lo new file mode 100644 index 00000000..939c09f8 --- /dev/null +++ b/gsl-2.5/cdf/betainv.lo @@ -0,0 +1,12 @@ +# betainv.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/betainv.o' + +# Name of the non-PIC object +non_pic_object='betainv.o' + diff --git a/gsl-2.5/cdf/binomial.c b/gsl-2.5/cdf/binomial.c new file mode 100644 index 00000000..190945df --- /dev/null +++ b/gsl-2.5/cdf/binomial.c @@ -0,0 +1,108 @@ +/* cdf/binomial.c + * + * Copyright (C) 2004 Jason H. Stover. + * Copyright (C) 2004 Giulio Bottazzi + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#include +#include +#include +#include +#include + +#include "error.h" + +/* Computes the cumulative distribution function for a binomial + random variable. For a binomial random variable X with n trials + and success probability p, + + Pr( X <= k ) = Pr( Y >= p ) + + where Y is a beta random variable with parameters k+1 and n-k. + + The binomial distribution has the form, + + prob(k) = n!/(k!(n-k)!) * p^k (1-p)^(n-k) for k = 0, 1, ..., n + + The cumulated distributions can be expressed in terms of normalized + incomplete beta functions (see Abramowitz & Stegun eq. 26.5.26 and + eq. 6.6.3). + + Reference: + + W. Feller, "An Introduction to Probability and Its + Applications," volume 1. Wiley, 1968. Exercise 45, page 173, + chapter 6. + */ + +#include +#include +#include +#include +#include + +double +gsl_cdf_binomial_P (const unsigned int k, const double p, const unsigned int n) +{ + double P; + double a; + double b; + + if (p > 1.0 || p < 0.0) + { + CDF_ERROR ("p < 0 or p > 1", GSL_EDOM); + } + + if (k >= n) + { + P = 1.0; + } + else + { + a = (double) k + 1.0; + b = (double) n - k; + P = gsl_cdf_beta_Q (p, a, b); + } + + return P; +} + +double +gsl_cdf_binomial_Q (const unsigned int k, const double p, const unsigned int n) +{ + double Q; + double a; + double b; + + if (p > 1.0 || p < 0.0) + { + CDF_ERROR ("p < 0 or p > 1", GSL_EDOM); + } + + if (k >= n) + { + Q = 0.0; + } + else + { + a = (double) k + 1.0; + b = (double) n - k; + Q = gsl_cdf_beta_P (p, a, b); + } + + return Q; +} diff --git a/gsl-2.5/cdf/binomial.lo b/gsl-2.5/cdf/binomial.lo new file mode 100644 index 00000000..92ea2138 --- /dev/null +++ b/gsl-2.5/cdf/binomial.lo @@ -0,0 +1,12 @@ +# binomial.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/binomial.o' + +# Name of the non-PIC object +non_pic_object='binomial.o' + diff --git a/gsl-2.5/cdf/cauchy.c b/gsl-2.5/cdf/cauchy.c new file mode 100644 index 00000000..62c56d25 --- /dev/null +++ b/gsl-2.5/cdf/cauchy.c @@ -0,0 +1,59 @@ +/* cdf/cauchy.c + * + * Copyright (C) 2003, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include + +double +gsl_cdf_cauchy_P (const double x, const double a) +{ + double P; + double u = x / a; + + if (u > -1) + { + P = 0.5 + atan (u) / M_PI; + } + else + { + P = atan(-1/u) / M_PI; + } + + return P; +} + +double +gsl_cdf_cauchy_Q (const double x, const double a) +{ + double Q; + double u = x / a; + + if (u < 1) + { + Q = 0.5 - atan (u) / M_PI; + } + else + { + Q = atan(1/u) / M_PI; + } + + return Q; +} diff --git a/gsl-2.5/cdf/cauchy.lo b/gsl-2.5/cdf/cauchy.lo new file mode 100644 index 00000000..94846d8d --- /dev/null +++ b/gsl-2.5/cdf/cauchy.lo @@ -0,0 +1,12 @@ +# cauchy.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/cauchy.o' + +# Name of the non-PIC object +non_pic_object='cauchy.o' + diff --git a/gsl-2.5/cdf/cauchyinv.c b/gsl-2.5/cdf/cauchyinv.c new file mode 100644 index 00000000..a9528118 --- /dev/null +++ b/gsl-2.5/cdf/cauchyinv.c @@ -0,0 +1,75 @@ +/* cdf/cauchyinv.c + * + * Copyright (C) 2003, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include + +double +gsl_cdf_cauchy_Pinv (const double P, const double a) +{ + double x; + + if (P == 1.0) + { + return GSL_POSINF; + } + else if (P == 0.0) + { + return GSL_NEGINF; + } + + if (P > 0.5) + { + x = a * tan (M_PI * (P - 0.5)); + } + else + { + x = -a / tan (M_PI * P); + } + + return x; +} + +double +gsl_cdf_cauchy_Qinv (const double Q, const double a) +{ + double x; + + if (Q == 0.0) + { + return GSL_POSINF; + } + else if (Q == 1.0) + { + return GSL_NEGINF; + } + + if (Q > 0.5) + { + x = a * tan (M_PI * (0.5 - Q)); + } + else + { + x = a / tan (M_PI * Q); + } + + return x; +} diff --git a/gsl-2.5/cdf/cauchyinv.lo b/gsl-2.5/cdf/cauchyinv.lo new file mode 100644 index 00000000..72b424b1 --- /dev/null +++ b/gsl-2.5/cdf/cauchyinv.lo @@ -0,0 +1,12 @@ +# cauchyinv.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/cauchyinv.o' + +# Name of the non-PIC object +non_pic_object='cauchyinv.o' + diff --git a/gsl-2.5/cdf/chisq.c b/gsl-2.5/cdf/chisq.c new file mode 100644 index 00000000..c53546d0 --- /dev/null +++ b/gsl-2.5/cdf/chisq.c @@ -0,0 +1,34 @@ +/* cdf/cdf_chisq.c + * + * Copyright (C) 2003, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include + +double +gsl_cdf_chisq_P (const double x, const double nu) +{ + return gsl_cdf_gamma_P (x, nu / 2, 2.0); +} + +double +gsl_cdf_chisq_Q (const double x, const double nu) +{ + return gsl_cdf_gamma_Q (x, nu / 2, 2.0); +} diff --git a/gsl-2.5/cdf/chisq.lo b/gsl-2.5/cdf/chisq.lo new file mode 100644 index 00000000..667318b6 --- /dev/null +++ b/gsl-2.5/cdf/chisq.lo @@ -0,0 +1,12 @@ +# chisq.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/chisq.o' + +# Name of the non-PIC object +non_pic_object='chisq.o' + diff --git a/gsl-2.5/cdf/chisqinv.c b/gsl-2.5/cdf/chisqinv.c new file mode 100644 index 00000000..86dfbeb0 --- /dev/null +++ b/gsl-2.5/cdf/chisqinv.c @@ -0,0 +1,34 @@ +/* cdf/chisqinv.c + * + * Copyright (C) 2003, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include + +double +gsl_cdf_chisq_Pinv (const double P, const double nu) +{ + return gsl_cdf_gamma_Pinv (P, nu / 2, 2.0); +} + +double +gsl_cdf_chisq_Qinv (const double Q, const double nu) +{ + return gsl_cdf_gamma_Qinv (Q, nu / 2, 2.0); +} diff --git a/gsl-2.5/cdf/chisqinv.lo b/gsl-2.5/cdf/chisqinv.lo new file mode 100644 index 00000000..a05b2a8e --- /dev/null +++ b/gsl-2.5/cdf/chisqinv.lo @@ -0,0 +1,12 @@ +# chisqinv.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/chisqinv.o' + +# Name of the non-PIC object +non_pic_object='chisqinv.o' + diff --git a/gsl-2.5/cdf/error.h b/gsl-2.5/cdf/error.h new file mode 100644 index 00000000..83db7bab --- /dev/null +++ b/gsl-2.5/cdf/error.h @@ -0,0 +1,4 @@ +/* CDF_ERROR: call the error handler, and return a NAN. */ + +#define CDF_ERROR(reason, gsl_errno) GSL_ERROR_VAL(reason, gsl_errno, GSL_NAN) + diff --git a/gsl-2.5/cdf/exponential.c b/gsl-2.5/cdf/exponential.c new file mode 100644 index 00000000..d6d82261 --- /dev/null +++ b/gsl-2.5/cdf/exponential.c @@ -0,0 +1,59 @@ +/* cdf/exponential.c + * + * Copyright (C) 2003, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include + +/* The exponential distribution has the form + + p(x) dx = exp(-x/mu) dx/mu + + for x = 0 ... +infty */ + +double +gsl_cdf_exponential_P (const double x, const double mu) +{ + if (x < 0) + { + return 0; + } + else + { + double P = -expm1 (-x / mu); + + return P; + } +} + +double +gsl_cdf_exponential_Q (const double x, const double mu) +{ + if (x < 0) + { + return 1; + } + else + { + double Q = exp (-x / mu); + + return Q; + } +} diff --git a/gsl-2.5/cdf/exponential.lo b/gsl-2.5/cdf/exponential.lo new file mode 100644 index 00000000..0d80ec78 --- /dev/null +++ b/gsl-2.5/cdf/exponential.lo @@ -0,0 +1,12 @@ +# exponential.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/exponential.o' + +# Name of the non-PIC object +non_pic_object='exponential.o' + diff --git a/gsl-2.5/cdf/exponentialinv.c b/gsl-2.5/cdf/exponentialinv.c new file mode 100644 index 00000000..56d375c9 --- /dev/null +++ b/gsl-2.5/cdf/exponentialinv.c @@ -0,0 +1,39 @@ +/* cdf/exponentialinv.c + * + * Copyright (C) 2003, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include + +double +gsl_cdf_exponential_Pinv (const double P, const double mu) +{ + double x = -mu * log1p (-P); + + return x; +} + +double +gsl_cdf_exponential_Qinv (const double Q, const double mu) +{ + double x = -mu * log (Q); + + return x; +} diff --git a/gsl-2.5/cdf/exponentialinv.lo b/gsl-2.5/cdf/exponentialinv.lo new file mode 100644 index 00000000..9fc4e4d1 --- /dev/null +++ b/gsl-2.5/cdf/exponentialinv.lo @@ -0,0 +1,12 @@ +# exponentialinv.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/exponentialinv.o' + +# Name of the non-PIC object +non_pic_object='exponentialinv.o' + diff --git a/gsl-2.5/cdf/exppow.c b/gsl-2.5/cdf/exppow.c new file mode 100644 index 00000000..a80bb7fb --- /dev/null +++ b/gsl-2.5/cdf/exppow.c @@ -0,0 +1,70 @@ +/* cdf/exppow.c + * + * Copyright (C) 2004 Giulio Bottazzi + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include + +/* The exponential power density is parametrized according to + + p(x) dx = (1/(2 a Gamma(1 + 1/b))) * exp(-|x/a|^b) dx + + so that the distribution reads + + / x<0 0.5 - Gamma_inc_P(1/b,|x/a|^b) + P(x) = | x=0 0.5 + \ x>0 0.5 + Gamma_inc_P(1/b,|x/a|^b) + + + for x in (-infty,+infty) */ + +double +gsl_cdf_exppow_P (const double x, const double a, const double b) +{ + const double u = x / a; + + if (u < 0) + { + double P = 0.5 * gsl_sf_gamma_inc_Q (1.0 / b, pow (-u, b)); + return P; + } + else + { + double P = 0.5 * (1.0 + gsl_sf_gamma_inc_P (1.0 / b, pow (u, b))); + return P; + } +} + +double +gsl_cdf_exppow_Q (const double x, const double a, const double b) +{ + const double u = x / a; + + if (u < 0) + { + double Q = 0.5 * (1.0 + gsl_sf_gamma_inc_P (1.0 / b, pow (-u, b))); + return Q; + } + else + { + double Q = 0.5 * gsl_sf_gamma_inc_Q (1.0 / b, pow (u, b)); + return Q; + } +} diff --git a/gsl-2.5/cdf/exppow.lo b/gsl-2.5/cdf/exppow.lo new file mode 100644 index 00000000..80c279a2 --- /dev/null +++ b/gsl-2.5/cdf/exppow.lo @@ -0,0 +1,12 @@ +# exppow.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/exppow.o' + +# Name of the non-PIC object +non_pic_object='exppow.o' + diff --git a/gsl-2.5/cdf/fdist.c b/gsl-2.5/cdf/fdist.c new file mode 100644 index 00000000..258e3de0 --- /dev/null +++ b/gsl-2.5/cdf/fdist.c @@ -0,0 +1,81 @@ +/* cdf/fdist.c + * + * Copyright (C) 2002 Przemyslaw Sliwa and Jason H. Stover. + * Copyright (C) 2006, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include + +#include "error.h" +#include "beta_inc.c" + +/* + * Lower tail. + */ + +double +gsl_cdf_fdist_P (const double x, const double nu1, const double nu2) +{ + double P; + double r = nu2 / nu1; + + if (x < r) + { + double u = x / (r + x); + + P = beta_inc_AXPY (1.0, 0.0, nu1 / 2.0, nu2 / 2.0, u); + } + else + { + double u = r / (r + x); + + P = beta_inc_AXPY (-1.0, 1.0, nu2 / 2.0, nu1 / 2.0, u); + } + + return P; +} + +/* + * Upper tail. + */ + +double +gsl_cdf_fdist_Q (const double x, const double nu1, const double nu2) +{ + double Q; + double r = nu2 / nu1; + + if (x < r) + { + double u = x / (r + x); + + Q = beta_inc_AXPY (-1.0, 1.0, nu1 / 2.0, nu2 / 2.0, u); + } + else + { + double u = r / (r + x); + + Q = beta_inc_AXPY (1.0, 0.0, nu2 / 2.0, nu1 / 2.0, u); + } + + return Q; +} diff --git a/gsl-2.5/cdf/fdist.lo b/gsl-2.5/cdf/fdist.lo new file mode 100644 index 00000000..91d93140 --- /dev/null +++ b/gsl-2.5/cdf/fdist.lo @@ -0,0 +1,12 @@ +# fdist.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/fdist.o' + +# Name of the non-PIC object +non_pic_object='fdist.o' + diff --git a/gsl-2.5/cdf/fdistinv.c b/gsl-2.5/cdf/fdistinv.c new file mode 100644 index 00000000..73da90fa --- /dev/null +++ b/gsl-2.5/cdf/fdistinv.c @@ -0,0 +1,104 @@ +/* cdf/fdistinv.c + * + * Copyright (C) 2002 Przemyslaw Sliwa and Jason H. Stover. + * Copyright (C) 2006, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include + +#include "error.h" + +double +gsl_cdf_fdist_Pinv (const double P, const double nu1, const double nu2) +{ + double result; + double y; + + if (P < 0.0) + { + CDF_ERROR ("P < 0.0", GSL_EDOM); + } + if (P > 1.0) + { + CDF_ERROR ("P > 1.0", GSL_EDOM); + } + if (nu1 < 1.0) + { + CDF_ERROR ("nu1 < 1", GSL_EDOM); + } + if (nu2 < 1.0) + { + CDF_ERROR ("nu2 < 1", GSL_EDOM); + } + + if (P < 0.5) + { + y = gsl_cdf_beta_Pinv (P, nu1 / 2.0, nu2 / 2.0); + + result = nu2 * y / (nu1 * (1.0 - y)); + } + else + { + y = gsl_cdf_beta_Qinv (P, nu2 / 2.0, nu1 / 2.0); + + result = nu2 * (1 - y) / (nu1 * y); + } + + return result; +} + +double +gsl_cdf_fdist_Qinv (const double Q, const double nu1, const double nu2) +{ + double result; + double y; + + if (Q < 0.0) + { + CDF_ERROR ("Q < 0.0", GSL_EDOM); + } + if (Q > 1.0) + { + CDF_ERROR ("Q > 1.0", GSL_EDOM); + } + if (nu1 < 1.0) + { + CDF_ERROR ("nu1 < 1", GSL_EDOM); + } + if (nu2 < 1.0) + { + CDF_ERROR ("nu2 < 1", GSL_EDOM); + } + + if (Q > 0.5) + { + y = gsl_cdf_beta_Qinv (Q, nu1 / 2.0, nu2 / 2.0); + + result = nu2 * y / (nu1 * (1.0 - y)); + } + else + { + y = gsl_cdf_beta_Pinv (Q, nu2 / 2.0, nu1 / 2.0); + + result = nu2 * (1 - y) / (nu1 * y); + } + + return result; +} diff --git a/gsl-2.5/cdf/fdistinv.lo b/gsl-2.5/cdf/fdistinv.lo new file mode 100644 index 00000000..5d31f8bf --- /dev/null +++ b/gsl-2.5/cdf/fdistinv.lo @@ -0,0 +1,12 @@ +# fdistinv.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/fdistinv.o' + +# Name of the non-PIC object +non_pic_object='fdistinv.o' + diff --git a/gsl-2.5/cdf/flat.c b/gsl-2.5/cdf/flat.c new file mode 100644 index 00000000..d4410e2b --- /dev/null +++ b/gsl-2.5/cdf/flat.c @@ -0,0 +1,65 @@ +/* cdf/flat.c + * + * Copyright (C) 2003, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include + +double +gsl_cdf_flat_P (const double x, const double a, const double b) +{ + double P; + + if (x < a) + { + P = 0; + } + else if (x > b) + { + P = 1; + } + else + { + P = (x-a)/(b-a); + } + + return P; +} + +double +gsl_cdf_flat_Q (const double x, const double a, const double b) +{ + double Q; + + if (x < a) + { + Q = 1; + } + else if (x > b) + { + Q = 0; + } + else + { + Q = (b-x)/(b-a); + } + + return Q; +} diff --git a/gsl-2.5/cdf/flat.lo b/gsl-2.5/cdf/flat.lo new file mode 100644 index 00000000..71d9ad33 --- /dev/null +++ b/gsl-2.5/cdf/flat.lo @@ -0,0 +1,12 @@ +# flat.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/flat.o' + +# Name of the non-PIC object +non_pic_object='flat.o' + diff --git a/gsl-2.5/cdf/flatinv.c b/gsl-2.5/cdf/flatinv.c new file mode 100644 index 00000000..340ad9e0 --- /dev/null +++ b/gsl-2.5/cdf/flatinv.c @@ -0,0 +1,59 @@ +/* cdf/flatinv.c + * + * Copyright (C) 2003, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include + +double +gsl_cdf_flat_Pinv (const double P, const double a, const double b) +{ + double x; + + if (P == 1.0) + { + return b; + } + else if (P == 0.0) + { + return a; + } + + x = (1 - P) * a + P * b; + + return x; +} + +double +gsl_cdf_flat_Qinv (const double Q, const double a, const double b) +{ + double x; + + if (Q == 0.0) + { + return b; + } + else if (Q == 1.0) + { + return a; + } + + x = Q * a + (1 - Q) * b; + + return x; +} diff --git a/gsl-2.5/cdf/flatinv.lo b/gsl-2.5/cdf/flatinv.lo new file mode 100644 index 00000000..dce3c438 --- /dev/null +++ b/gsl-2.5/cdf/flatinv.lo @@ -0,0 +1,12 @@ +# flatinv.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/flatinv.o' + +# Name of the non-PIC object +non_pic_object='flatinv.o' + diff --git a/gsl-2.5/cdf/gamma.c b/gsl-2.5/cdf/gamma.c new file mode 100644 index 00000000..d000c574 --- /dev/null +++ b/gsl-2.5/cdf/gamma.c @@ -0,0 +1,74 @@ +/* cdf/cdf_gamma.c + * + * Copyright (C) 2003 Jason Stover. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* + * Author: J. Stover + */ + +#include +#include +#include +#include +#include + +double +gsl_cdf_gamma_P (const double x, const double a, const double b) +{ + double P; + double y = x / b; + + if (x <= 0.0) + { + return 0.0; + } + + if (y > a) + { + P = 1 - gsl_sf_gamma_inc_Q (a, y); + } + else + { + P = gsl_sf_gamma_inc_P (a, y); + } + + return P; +} + +double +gsl_cdf_gamma_Q (const double x, const double a, const double b) +{ + double Q; + double y = x / b; + + if (x <= 0.0) + { + return 1.0; + } + + if (y < a) + { + Q = 1 - gsl_sf_gamma_inc_P (a, y); + } + else + { + Q = gsl_sf_gamma_inc_Q (a, y); + } + + return Q; +} diff --git a/gsl-2.5/cdf/gamma.lo b/gsl-2.5/cdf/gamma.lo new file mode 100644 index 00000000..b2747205 --- /dev/null +++ b/gsl-2.5/cdf/gamma.lo @@ -0,0 +1,12 @@ +# gamma.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/gamma.o' + +# Name of the non-PIC object +non_pic_object='gamma.o' + diff --git a/gsl-2.5/cdf/gammainv.c b/gsl-2.5/cdf/gammainv.c new file mode 100644 index 00000000..43553be1 --- /dev/null +++ b/gsl-2.5/cdf/gammainv.c @@ -0,0 +1,195 @@ +/* cdf/gammainv.c + * + * Copyright (C) 2003, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include + +#include + +double +gsl_cdf_gamma_Pinv (const double P, const double a, const double b) +{ + double x; + + if (P == 1.0) + { + return GSL_POSINF; + } + else if (P == 0.0) + { + return 0.0; + } + + /* Consider, small, large and intermediate cases separately. The + boundaries at 0.05 and 0.95 have not been optimised, but seem ok + for an initial approximation. + + BJG: These approximations aren't really valid, the relevant + criterion is P*gamma(a+1) < 1. Need to rework these routines and + use a single bisection style solver for all the inverse + functions. + */ + + if (P < 0.05) + { + double x0 = exp ((gsl_sf_lngamma (a) + log (P)) / a); + x = x0; + } + else if (P > 0.95) + { + double x0 = -log1p (-P) + gsl_sf_lngamma (a); + x = x0; + } + else + { + double xg = gsl_cdf_ugaussian_Pinv (P); + double x0 = (xg < -0.5*sqrt (a)) ? a : sqrt (a) * xg + a; + x = x0; + } + + /* Use Lagrange's interpolation for E(x)/phi(x0) to work backwards + to an improved value of x (Abramowitz & Stegun, 3.6.6) + + where E(x)=P-integ(phi(u),u,x0,x) and phi(u) is the pdf. + */ + + { + double lambda, dP, phi; + unsigned int n = 0; + + start: + dP = P - gsl_cdf_gamma_P (x, a, 1.0); + phi = gsl_ran_gamma_pdf (x, a, 1.0); + + if (dP == 0.0 || n++ > 32) + goto end; + + lambda = dP / GSL_MAX (2 * fabs (dP / x), phi); + + { + double step0 = lambda; + double step1 = -((a - 1) / x - 1) * lambda * lambda / 4.0; + + double step = step0; + if (fabs (step1) < 0.5 * fabs (step0)) + step += step1; + + if (x + step > 0) + x += step; + else + { + x /= 2.0; + } + + if (fabs (step0) > 1e-10 * x || fabs(step0 * phi) > 1e-10 * P) + goto start; + } + + end: + if (fabs(dP) > GSL_SQRT_DBL_EPSILON * P) + { + GSL_ERROR_VAL("inverse failed to converge", GSL_EFAILED, GSL_NAN); + } + + return b * x; + } +} + +double +gsl_cdf_gamma_Qinv (const double Q, const double a, const double b) +{ + double x; + + if (Q == 1.0) + { + return 0.0; + } + else if (Q == 0.0) + { + return GSL_POSINF; + } + + /* Consider, small, large and intermediate cases separately. The + boundaries at 0.05 and 0.95 have not been optimised, but seem ok + for an initial approximation. */ + + if (Q < 0.05) + { + double x0 = -log (Q) + gsl_sf_lngamma (a); + x = x0; + } + else if (Q > 0.95) + { + double x0 = exp ((gsl_sf_lngamma (a) + log1p (-Q)) / a); + x = x0; + } + else + { + double xg = gsl_cdf_ugaussian_Qinv (Q); + double x0 = (xg < -0.5*sqrt (a)) ? a : sqrt (a) * xg + a; + x = x0; + } + + /* Use Lagrange's interpolation for E(x)/phi(x0) to work backwards + to an improved value of x (Abramowitz & Stegun, 3.6.6) + + where E(x)=P-integ(phi(u),u,x0,x) and phi(u) is the pdf. + */ + + { + double lambda, dQ, phi; + unsigned int n = 0; + + start: + dQ = Q - gsl_cdf_gamma_Q (x, a, 1.0); + phi = gsl_ran_gamma_pdf (x, a, 1.0); + + if (dQ == 0.0 || n++ > 32) + goto end; + + lambda = -dQ / GSL_MAX (2 * fabs (dQ / x), phi); + + { + double step0 = lambda; + double step1 = -((a - 1) / x - 1) * lambda * lambda / 4.0; + + double step = step0; + if (fabs (step1) < 0.5 * fabs (step0)) + step += step1; + + if (x + step > 0) + x += step; + else + { + x /= 2.0; + } + + if (fabs (step0) > 1e-10 * x) + goto start; + } + + } + +end: + return b * x; +} diff --git a/gsl-2.5/cdf/gammainv.lo b/gsl-2.5/cdf/gammainv.lo new file mode 100644 index 00000000..08d14d34 --- /dev/null +++ b/gsl-2.5/cdf/gammainv.lo @@ -0,0 +1,12 @@ +# gammainv.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/gammainv.o' + +# Name of the non-PIC object +non_pic_object='gammainv.o' + diff --git a/gsl-2.5/cdf/gauss.c b/gsl-2.5/cdf/gauss.c new file mode 100644 index 00000000..cdc8b0a3 --- /dev/null +++ b/gsl-2.5/cdf/gauss.c @@ -0,0 +1,351 @@ +/* cdf/gauss.c + * + * Copyright (C) 2002, 2004 Jason H. Stover. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* + * Computes the cumulative distribution function for the Gaussian + * distribution using a rational function approximation. The + * computation is for the standard Normal distribution, i.e., mean 0 + * and standard deviation 1. If you want to compute Pr(X < t) for a + * Gaussian random variable X with non-zero mean m and standard + * deviation sd not equal to 1, find gsl_cdf_ugaussian ((t-m)/sd). + * This approximation is accurate to at least double precision. The + * accuracy was verified with a pari-gp script. The largest error + * found was about 1.4E-20. The coefficients were derived by Cody. + * + * References: + * + * W.J. Cody. "Rational Chebyshev Approximations for the Error + * Function," Mathematics of Computation, v23 n107 1969, 631-637. + * + * W. Fraser, J.F Hart. "On the Computation of Rational Approximations + * to Continuous Functions," Communications of the ACM, v5 1962. + * + * W.J. Kennedy Jr., J.E. Gentle. "Statistical Computing." Marcel Dekker. 1980. + * + * + */ + +#include +#include +#include +#include + +#ifndef M_1_SQRT2PI +#define M_1_SQRT2PI (M_2_SQRTPI * M_SQRT1_2 / 2.0) +#endif + +#define SQRT32 (4.0 * M_SQRT2) + +/* + * IEEE double precision dependent constants. + * + * GAUSS_EPSILON: Smallest positive value such that + * gsl_cdf_gaussian(x) > 0.5. + * GAUSS_XUPPER: Largest value x such that gsl_cdf_gaussian(x) < 1.0. + * GAUSS_XLOWER: Smallest value x such that gsl_cdf_gaussian(x) > 0.0. + */ + +#define GAUSS_EPSILON (GSL_DBL_EPSILON / 2) +#define GAUSS_XUPPER (8.572) +#define GAUSS_XLOWER (-37.519) + +#define GAUSS_SCALE (16.0) + +static double +get_del (double x, double rational) +{ + double xsq = 0.0; + double del = 0.0; + double result = 0.0; + + xsq = floor (x * GAUSS_SCALE) / GAUSS_SCALE; + del = (x - xsq) * (x + xsq); + del *= 0.5; + + result = exp (-0.5 * xsq * xsq) * exp (-1.0 * del) * rational; + + return result; +} + +/* + * Normal cdf for fabs(x) < 0.66291 + */ +static double +gauss_small (const double x) +{ + unsigned int i; + double result = 0.0; + double xsq; + double xnum; + double xden; + + const double a[5] = { + 2.2352520354606839287, + 161.02823106855587881, + 1067.6894854603709582, + 18154.981253343561249, + 0.065682337918207449113 + }; + const double b[4] = { + 47.20258190468824187, + 976.09855173777669322, + 10260.932208618978205, + 45507.789335026729956 + }; + + xsq = x * x; + xnum = a[4] * xsq; + xden = xsq; + + for (i = 0; i < 3; i++) + { + xnum = (xnum + a[i]) * xsq; + xden = (xden + b[i]) * xsq; + } + + result = x * (xnum + a[3]) / (xden + b[3]); + + return result; +} + +/* + * Normal cdf for 0.66291 < fabs(x) < sqrt(32). + */ +static double +gauss_medium (const double x) +{ + unsigned int i; + double temp = 0.0; + double result = 0.0; + double xnum; + double xden; + double absx; + + const double c[9] = { + 0.39894151208813466764, + 8.8831497943883759412, + 93.506656132177855979, + 597.27027639480026226, + 2494.5375852903726711, + 6848.1904505362823326, + 11602.651437647350124, + 9842.7148383839780218, + 1.0765576773720192317e-8 + }; + const double d[8] = { + 22.266688044328115691, + 235.38790178262499861, + 1519.377599407554805, + 6485.558298266760755, + 18615.571640885098091, + 34900.952721145977266, + 38912.003286093271411, + 19685.429676859990727 + }; + + absx = fabs (x); + + xnum = c[8] * absx; + xden = absx; + + for (i = 0; i < 7; i++) + { + xnum = (xnum + c[i]) * absx; + xden = (xden + d[i]) * absx; + } + + temp = (xnum + c[7]) / (xden + d[7]); + + result = get_del (x, temp); + + return result; +} + +/* + * Normal cdf for + * {sqrt(32) < x < GAUSS_XUPPER} union { GAUSS_XLOWER < x < -sqrt(32) }. + */ +static double +gauss_large (const double x) +{ + int i; + double result; + double xsq; + double temp; + double xnum; + double xden; + double absx; + + const double p[6] = { + 0.21589853405795699, + 0.1274011611602473639, + 0.022235277870649807, + 0.001421619193227893466, + 2.9112874951168792e-5, + 0.02307344176494017303 + }; + const double q[5] = { + 1.28426009614491121, + 0.468238212480865118, + 0.0659881378689285515, + 0.00378239633202758244, + 7.29751555083966205e-5 + }; + + absx = fabs (x); + xsq = 1.0 / (x * x); + xnum = p[5] * xsq; + xden = xsq; + + for (i = 0; i < 4; i++) + { + xnum = (xnum + p[i]) * xsq; + xden = (xden + q[i]) * xsq; + } + + temp = xsq * (xnum + p[4]) / (xden + q[4]); + temp = (M_1_SQRT2PI - temp) / absx; + + result = get_del (x, temp); + + return result; +} + +double +gsl_cdf_ugaussian_P (const double x) +{ + double result; + double absx = fabs (x); + + if (absx < GAUSS_EPSILON) + { + result = 0.5; + return result; + } + else if (absx < 0.66291) + { + result = 0.5 + gauss_small (x); + return result; + } + else if (absx < SQRT32) + { + result = gauss_medium (x); + + if (x > 0.0) + { + result = 1.0 - result; + } + + return result; + } + else if (x > GAUSS_XUPPER) + { + result = 1.0; + return result; + } + else if (x < GAUSS_XLOWER) + { + result = 0.0; + return result; + } + else + { + result = gauss_large (x); + + if (x > 0.0) + { + result = 1.0 - result; + } + } + + return result; +} + +double +gsl_cdf_ugaussian_Q (const double x) +{ + double result; + double absx = fabs (x); + + if (absx < GAUSS_EPSILON) + { + result = 0.5; + return result; + } + else if (absx < 0.66291) + { + result = gauss_small (x); + + if (x < 0.0) + { + result = fabs (result) + 0.5; + } + else + { + result = 0.5 - result; + } + + return result; + } + else if (absx < SQRT32) + { + result = gauss_medium (x); + + if (x < 0.0) + { + result = 1.0 - result; + } + + return result; + } + else if (x > -(GAUSS_XLOWER)) + { + result = 0.0; + return result; + } + else if (x < -(GAUSS_XUPPER)) + { + result = 1.0; + return result; + } + else + { + result = gauss_large (x); + + if (x < 0.0) + { + result = 1.0 - result; + } + + } + + return result; +} + +double +gsl_cdf_gaussian_P (const double x, const double sigma) +{ + return gsl_cdf_ugaussian_P (x / sigma); +} + +double +gsl_cdf_gaussian_Q (const double x, const double sigma) +{ + return gsl_cdf_ugaussian_Q (x / sigma); +} diff --git a/gsl-2.5/cdf/gauss.lo b/gsl-2.5/cdf/gauss.lo new file mode 100644 index 00000000..85827fe5 --- /dev/null +++ b/gsl-2.5/cdf/gauss.lo @@ -0,0 +1,12 @@ +# gauss.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/gauss.o' + +# Name of the non-PIC object +non_pic_object='gauss.o' + diff --git a/gsl-2.5/cdf/gaussinv.c b/gsl-2.5/cdf/gaussinv.c new file mode 100644 index 00000000..dcbdca1d --- /dev/null +++ b/gsl-2.5/cdf/gaussinv.c @@ -0,0 +1,202 @@ +/* cdf/inverse_normal.c + * + * Copyright (C) 2002 Przemyslaw Sliwa and Jason H. Stover. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* + * Computes the inverse normal cumulative distribution function + * according to the algorithm shown in + * + * Wichura, M.J. (1988). + * Algorithm AS 241: The Percentage Points of the Normal Distribution. + * Applied Statistics, 37, 477-484. + */ + +#include +#include +#include +#include + +#include "rat_eval.h" + +static double +small (double q) +{ + const double a[8] = { 3.387132872796366608, 133.14166789178437745, + 1971.5909503065514427, 13731.693765509461125, + 45921.953931549871457, 67265.770927008700853, + 33430.575583588128105, 2509.0809287301226727 + }; + + const double b[8] = { 1.0, 42.313330701600911252, + 687.1870074920579083, 5394.1960214247511077, + 21213.794301586595867, 39307.89580009271061, + 28729.085735721942674, 5226.495278852854561 + }; + + double r = 0.180625 - q * q; + + double x = q * rat_eval (a, 8, b, 8, r); + + return x; +} + +static double +intermediate (double r) +{ + const double a[] = { 1.42343711074968357734, 4.6303378461565452959, + 5.7694972214606914055, 3.64784832476320460504, + 1.27045825245236838258, 0.24178072517745061177, + 0.0227238449892691845833, 7.7454501427834140764e-4 + }; + + const double b[] = { 1.0, 2.05319162663775882187, + 1.6763848301838038494, 0.68976733498510000455, + 0.14810397642748007459, 0.0151986665636164571966, + 5.475938084995344946e-4, 1.05075007164441684324e-9 + }; + + double x = rat_eval (a, 8, b, 8, (r - 1.6)); + + return x; +} + +static double +tail (double r) +{ + const double a[] = { 6.6579046435011037772, 5.4637849111641143699, + 1.7848265399172913358, 0.29656057182850489123, + 0.026532189526576123093, 0.0012426609473880784386, + 2.71155556874348757815e-5, 2.01033439929228813265e-7 + }; + + const double b[] = { 1.0, 0.59983220655588793769, + 0.13692988092273580531, 0.0148753612908506148525, + 7.868691311456132591e-4, 1.8463183175100546818e-5, + 1.4215117583164458887e-7, 2.04426310338993978564e-15 + }; + + double x = rat_eval (a, 8, b, 8, (r - 5.0)); + + return x; +} + +double +gsl_cdf_ugaussian_Pinv (const double P) +{ + double r, x, pp; + + double dP = P - 0.5; + + if (P == 1.0) + { + return GSL_POSINF; + } + else if (P == 0.0) + { + return GSL_NEGINF; + } + + if (fabs (dP) <= 0.425) + { + x = small (dP); + + return x; + } + + pp = (P < 0.5) ? P : 1.0 - P; + + r = sqrt (-log (pp)); + + if (r <= 5.0) + { + x = intermediate (r); + } + else + { + x = tail (r); + } + + if (P < 0.5) + { + return -x; + } + else + { + return x; + } + +} + +double +gsl_cdf_ugaussian_Qinv (const double Q) +{ + double r, x, pp; + + double dQ = Q - 0.5; + + if (Q == 1.0) + { + return GSL_NEGINF; + } + else if (Q == 0.0) + { + return GSL_POSINF; + } + + if (fabs (dQ) <= 0.425) + { + x = small (dQ); + + return -x; + } + + pp = (Q < 0.5) ? Q : 1.0 - Q; + + r = sqrt (-log (pp)); + + if (r <= 5.0) + { + x = intermediate (r); + } + else + { + x = tail (r); + } + + if (Q < 0.5) + { + return x; + } + else + { + return -x; + } +} + + +double +gsl_cdf_gaussian_Pinv (const double P, const double sigma) +{ + return sigma * gsl_cdf_ugaussian_Pinv (P); +} + +double +gsl_cdf_gaussian_Qinv (const double Q, const double sigma) +{ + return sigma * gsl_cdf_ugaussian_Qinv (Q); +} diff --git a/gsl-2.5/cdf/gaussinv.lo b/gsl-2.5/cdf/gaussinv.lo new file mode 100644 index 00000000..af03aa78 --- /dev/null +++ b/gsl-2.5/cdf/gaussinv.lo @@ -0,0 +1,12 @@ +# gaussinv.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/gaussinv.o' + +# Name of the non-PIC object +non_pic_object='gaussinv.o' + diff --git a/gsl-2.5/cdf/geometric.c b/gsl-2.5/cdf/geometric.c new file mode 100644 index 00000000..2b26af6f --- /dev/null +++ b/gsl-2.5/cdf/geometric.c @@ -0,0 +1,90 @@ +/* cdf/geometric.c + * + * Copyright (C) 2004 Jason H. Stover. + * Copyright (C) 2010 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include + +#include "error.h" + +/* Pr (X <= k), i.e., the probability of n or fewer failures until the + first success. */ + +double +gsl_cdf_geometric_P (const unsigned int k, const double p) +{ + double P, a, q; + + if (p > 1.0 || p < 0.0) + { + CDF_ERROR ("p < 0 or p > 1", GSL_EDOM); + } + + if (k < 1) + { + return 0.0; + } + + q = 1.0 - p; + a = (double) k; + + if (p < 0.5) + { + P = -expm1 (a * log1p (-p)); + } + else + { + P = 1.0 - pow (q, a); + } + + return P; +} + +double +gsl_cdf_geometric_Q (const unsigned int k, const double p) +{ + double Q, a, q; + + if (p > 1.0 || p < 0.0) + { + CDF_ERROR ("p < 0 or p > 1", GSL_EDOM); + } + + if (k < 1) + { + return 1.0; + } + + q = 1.0 - p; + a = (double) k; + + if (p < 0.5) + { + Q = exp (a * log1p (-p)); + } + else + { + Q = pow (q, a); + } + + return Q; +} diff --git a/gsl-2.5/cdf/geometric.lo b/gsl-2.5/cdf/geometric.lo new file mode 100644 index 00000000..1be0f0e3 --- /dev/null +++ b/gsl-2.5/cdf/geometric.lo @@ -0,0 +1,12 @@ +# geometric.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/geometric.o' + +# Name of the non-PIC object +non_pic_object='geometric.o' + diff --git a/gsl-2.5/cdf/gsl_cdf.h b/gsl-2.5/cdf/gsl_cdf.h new file mode 100644 index 00000000..2bc3fed5 --- /dev/null +++ b/gsl-2.5/cdf/gsl_cdf.h @@ -0,0 +1,170 @@ +/* cdf/gsl_cdf.h + * + * Copyright (C) 2002 Jason H. Stover. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: J. Stover */ + +#ifndef __GSL_CDF_H__ +#define __GSL_CDF_H__ + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +double gsl_cdf_ugaussian_P (const double x); +double gsl_cdf_ugaussian_Q (const double x); + +double gsl_cdf_ugaussian_Pinv (const double P); +double gsl_cdf_ugaussian_Qinv (const double Q); + +double gsl_cdf_gaussian_P (const double x, const double sigma); +double gsl_cdf_gaussian_Q (const double x, const double sigma); + +double gsl_cdf_gaussian_Pinv (const double P, const double sigma); +double gsl_cdf_gaussian_Qinv (const double Q, const double sigma); + +double gsl_cdf_gamma_P (const double x, const double a, const double b); +double gsl_cdf_gamma_Q (const double x, const double a, const double b); + +double gsl_cdf_gamma_Pinv (const double P, const double a, const double b); +double gsl_cdf_gamma_Qinv (const double Q, const double a, const double b); + +double gsl_cdf_cauchy_P (const double x, const double a); +double gsl_cdf_cauchy_Q (const double x, const double a); + +double gsl_cdf_cauchy_Pinv (const double P, const double a); +double gsl_cdf_cauchy_Qinv (const double Q, const double a); + +double gsl_cdf_laplace_P (const double x, const double a); +double gsl_cdf_laplace_Q (const double x, const double a); + +double gsl_cdf_laplace_Pinv (const double P, const double a); +double gsl_cdf_laplace_Qinv (const double Q, const double a); + +double gsl_cdf_rayleigh_P (const double x, const double sigma); +double gsl_cdf_rayleigh_Q (const double x, const double sigma); + +double gsl_cdf_rayleigh_Pinv (const double P, const double sigma); +double gsl_cdf_rayleigh_Qinv (const double Q, const double sigma); + +double gsl_cdf_chisq_P (const double x, const double nu); +double gsl_cdf_chisq_Q (const double x, const double nu); + +double gsl_cdf_chisq_Pinv (const double P, const double nu); +double gsl_cdf_chisq_Qinv (const double Q, const double nu); + +double gsl_cdf_exponential_P (const double x, const double mu); +double gsl_cdf_exponential_Q (const double x, const double mu); + +double gsl_cdf_exponential_Pinv (const double P, const double mu); +double gsl_cdf_exponential_Qinv (const double Q, const double mu); + +double gsl_cdf_exppow_P (const double x, const double a, const double b); +double gsl_cdf_exppow_Q (const double x, const double a, const double b); + +double gsl_cdf_tdist_P (const double x, const double nu); +double gsl_cdf_tdist_Q (const double x, const double nu); + +double gsl_cdf_tdist_Pinv (const double P, const double nu); +double gsl_cdf_tdist_Qinv (const double Q, const double nu); + +double gsl_cdf_fdist_P (const double x, const double nu1, const double nu2); +double gsl_cdf_fdist_Q (const double x, const double nu1, const double nu2); + +double gsl_cdf_fdist_Pinv (const double P, const double nu1, const double nu2); +double gsl_cdf_fdist_Qinv (const double Q, const double nu1, const double nu2); + +double gsl_cdf_beta_P (const double x, const double a, const double b); +double gsl_cdf_beta_Q (const double x, const double a, const double b); + +double gsl_cdf_beta_Pinv (const double P, const double a, const double b); +double gsl_cdf_beta_Qinv (const double Q, const double a, const double b); + +double gsl_cdf_flat_P (const double x, const double a, const double b); +double gsl_cdf_flat_Q (const double x, const double a, const double b); + +double gsl_cdf_flat_Pinv (const double P, const double a, const double b); +double gsl_cdf_flat_Qinv (const double Q, const double a, const double b); + +double gsl_cdf_lognormal_P (const double x, const double zeta, const double sigma); +double gsl_cdf_lognormal_Q (const double x, const double zeta, const double sigma); + +double gsl_cdf_lognormal_Pinv (const double P, const double zeta, const double sigma); +double gsl_cdf_lognormal_Qinv (const double Q, const double zeta, const double sigma); + +double gsl_cdf_gumbel1_P (const double x, const double a, const double b); +double gsl_cdf_gumbel1_Q (const double x, const double a, const double b); + +double gsl_cdf_gumbel1_Pinv (const double P, const double a, const double b); +double gsl_cdf_gumbel1_Qinv (const double Q, const double a, const double b); + +double gsl_cdf_gumbel2_P (const double x, const double a, const double b); +double gsl_cdf_gumbel2_Q (const double x, const double a, const double b); + +double gsl_cdf_gumbel2_Pinv (const double P, const double a, const double b); +double gsl_cdf_gumbel2_Qinv (const double Q, const double a, const double b); + +double gsl_cdf_weibull_P (const double x, const double a, const double b); +double gsl_cdf_weibull_Q (const double x, const double a, const double b); + +double gsl_cdf_weibull_Pinv (const double P, const double a, const double b); +double gsl_cdf_weibull_Qinv (const double Q, const double a, const double b); + +double gsl_cdf_pareto_P (const double x, const double a, const double b); +double gsl_cdf_pareto_Q (const double x, const double a, const double b); + +double gsl_cdf_pareto_Pinv (const double P, const double a, const double b); +double gsl_cdf_pareto_Qinv (const double Q, const double a, const double b); + +double gsl_cdf_logistic_P (const double x, const double a); +double gsl_cdf_logistic_Q (const double x, const double a); + +double gsl_cdf_logistic_Pinv (const double P, const double a); +double gsl_cdf_logistic_Qinv (const double Q, const double a); + +double gsl_cdf_binomial_P (const unsigned int k, const double p, const unsigned int n); +double gsl_cdf_binomial_Q (const unsigned int k, const double p, const unsigned int n); + +double gsl_cdf_poisson_P (const unsigned int k, const double mu); +double gsl_cdf_poisson_Q (const unsigned int k, const double mu); + +double gsl_cdf_geometric_P (const unsigned int k, const double p); +double gsl_cdf_geometric_Q (const unsigned int k, const double p); + +double gsl_cdf_negative_binomial_P (const unsigned int k, const double p, const double n); +double gsl_cdf_negative_binomial_Q (const unsigned int k, const double p, const double n); + +double gsl_cdf_pascal_P (const unsigned int k, const double p, const unsigned int n); +double gsl_cdf_pascal_Q (const unsigned int k, const double p, const unsigned int n); + +double gsl_cdf_hypergeometric_P (const unsigned int k, const unsigned int n1, + const unsigned int n2, const unsigned int t); +double gsl_cdf_hypergeometric_Q (const unsigned int k, const unsigned int n1, + const unsigned int n2, const unsigned int t); + +__END_DECLS + +#endif /* __GSL_CDF_H__ */ diff --git a/gsl-2.5/cdf/gumbel1.c b/gsl-2.5/cdf/gumbel1.c new file mode 100644 index 00000000..d4e50fc0 --- /dev/null +++ b/gsl-2.5/cdf/gumbel1.c @@ -0,0 +1,50 @@ +/* cdf/gumbel1.c + * + * Copyright (C) 2003, 2007, 2009 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include + +double +gsl_cdf_gumbel1_P (const double x, const double a, const double b) +{ + double u = a * x - log (b); + double P = exp (-exp (-u)); + return P; +} + +double +gsl_cdf_gumbel1_Q (const double x, const double a, const double b) +{ + double u = a * x - log (b); + double Q; + double P = exp (-exp (-u)); + + if (P < 0.5) + { + Q = 1 - P; + } + else + { + Q = -expm1 (-exp (-u)); + } + + return Q; +} diff --git a/gsl-2.5/cdf/gumbel1.lo b/gsl-2.5/cdf/gumbel1.lo new file mode 100644 index 00000000..a4115973 --- /dev/null +++ b/gsl-2.5/cdf/gumbel1.lo @@ -0,0 +1,12 @@ +# gumbel1.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/gumbel1.o' + +# Name of the non-PIC object +non_pic_object='gumbel1.o' + diff --git a/gsl-2.5/cdf/gumbel1inv.c b/gsl-2.5/cdf/gumbel1inv.c new file mode 100644 index 00000000..866cbeb0 --- /dev/null +++ b/gsl-2.5/cdf/gumbel1inv.c @@ -0,0 +1,61 @@ +/* cdf/gumbel1inv.c + * + * Copyright (C) 2003, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include + +double +gsl_cdf_gumbel1_Pinv (const double P, const double a, const double b) +{ + double x; + + if (P == 1.0) + { + return GSL_POSINF; + } + else if (P == 0.0) + { + return GSL_NEGINF; + } + + x = log(-b / log(P)) / a; + + return x; +} + +double +gsl_cdf_gumbel1_Qinv (const double Q, const double a, const double b) +{ + double x; + + if (Q == 0.0) + { + return GSL_POSINF; + } + else if (Q == 1.0) + { + return GSL_NEGINF; + } + + x = log(-b / log1p(-Q)) / a; + + return x; +} diff --git a/gsl-2.5/cdf/gumbel1inv.lo b/gsl-2.5/cdf/gumbel1inv.lo new file mode 100644 index 00000000..1b7fca77 --- /dev/null +++ b/gsl-2.5/cdf/gumbel1inv.lo @@ -0,0 +1,12 @@ +# gumbel1inv.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/gumbel1inv.o' + +# Name of the non-PIC object +non_pic_object='gumbel1inv.o' + diff --git a/gsl-2.5/cdf/gumbel2.c b/gsl-2.5/cdf/gumbel2.c new file mode 100644 index 00000000..eacbe5e1 --- /dev/null +++ b/gsl-2.5/cdf/gumbel2.c @@ -0,0 +1,59 @@ +/* cdf/gumbel2.c + * + * Copyright (C) 2003, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include + +double +gsl_cdf_gumbel2_P (const double x, const double a, const double b) +{ + double P; + + if (x == 0) + { + P = 0; + } + else + { + double u = pow (x, a); + P = exp (-b / u); + } + + return P; +} + +double +gsl_cdf_gumbel2_Q (const double x, const double a, const double b) +{ + double Q; + + if (x == 0) + { + Q = 1; + } + else + { + double u = pow (x, a); + Q = -expm1 (-b / u); + } + + return Q; +} diff --git a/gsl-2.5/cdf/gumbel2.lo b/gsl-2.5/cdf/gumbel2.lo new file mode 100644 index 00000000..3fbe6ea7 --- /dev/null +++ b/gsl-2.5/cdf/gumbel2.lo @@ -0,0 +1,12 @@ +# gumbel2.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/gumbel2.o' + +# Name of the non-PIC object +non_pic_object='gumbel2.o' + diff --git a/gsl-2.5/cdf/gumbel2inv.c b/gsl-2.5/cdf/gumbel2inv.c new file mode 100644 index 00000000..317306fd --- /dev/null +++ b/gsl-2.5/cdf/gumbel2inv.c @@ -0,0 +1,61 @@ +/* cdf/gumbel2inv.c + * + * Copyright (C) 2003, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include + +double +gsl_cdf_gumbel2_Pinv (const double P, const double a, const double b) +{ + double x; + + if (P == 1.0) + { + return GSL_POSINF; + } + else if (P == 0.0) + { + return 0.0; + } + + x = pow(b / (-log(P)), 1/a); + + return x; +} + +double +gsl_cdf_gumbel2_Qinv (const double Q, const double a, const double b) +{ + double x; + + if (Q == 0.0) + { + return GSL_POSINF; + } + else if (Q == 1.0) + { + return 0.0; + } + + x = pow(b / (-log1p(-Q)), 1/a); + + return x; +} diff --git a/gsl-2.5/cdf/gumbel2inv.lo b/gsl-2.5/cdf/gumbel2inv.lo new file mode 100644 index 00000000..f4dff9ac --- /dev/null +++ b/gsl-2.5/cdf/gumbel2inv.lo @@ -0,0 +1,12 @@ +# gumbel2inv.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/gumbel2inv.o' + +# Name of the non-PIC object +non_pic_object='gumbel2inv.o' + diff --git a/gsl-2.5/cdf/hypergeometric.c b/gsl-2.5/cdf/hypergeometric.c new file mode 100644 index 00000000..ee9596f5 --- /dev/null +++ b/gsl-2.5/cdf/hypergeometric.c @@ -0,0 +1,183 @@ +/* cdf/hypergeometric.c + * + * Copyright (C) 2004 Jason H. Stover. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* + * Computes the cumulative distribution function for a hypergeometric + * random variable. A hypergeometric random variable X is the number + * of elements of type 1 in a sample of size t, drawn from a population + * of size n1 + n2, in which n1 are of type 1 and n2 are of type 2. + * + * This algorithm computes Pr( X <= k ) by summing the terms from + * the mass function, Pr( X = k ). + * + * References: + * + * T. Wu. An accurate computation of the hypergeometric distribution + * function. ACM Transactions on Mathematical Software. Volume 19, number 1, + * March 1993. + * This algorithm is not used, since it requires factoring the + * numerator and denominator, then cancelling. It is more accurate + * than the algorithm used here, but the cancellation requires more + * time than the algorithm used here. + * + * W. Feller. An Introduction to Probability Theory and Its Applications, + * third edition. 1968. Chapter 2, section 6. + */ + +#include +#include +#include +#include +#include +#include + +#include "error.h" + +static double +lower_tail (const unsigned int k, const unsigned int n1, + const unsigned int n2, const unsigned int t) +{ + double relerr; + int i = k; + double s, P; + + s = gsl_ran_hypergeometric_pdf (i, n1, n2, t); + P = s; + + while (i > 0) + { + double factor = + (i / (n1 - i + 1.0)) * ((n2 + i - t) / (t - i + 1.0)); + s *= factor; + P += s; + relerr = s / P; + if (relerr < GSL_DBL_EPSILON) + break; + i--; + } + + return P; +} + +static double +upper_tail (const unsigned int k, const unsigned int n1, + const unsigned int n2, const unsigned int t) +{ + double relerr; + unsigned int i = k + 1; + double s, Q; + + s = gsl_ran_hypergeometric_pdf (i, n1, n2, t); + Q = s; + + while (i < t) + { + double factor = + ((n1 - i) / (i + 1.0)) * ((t - i) / (n2 + i + 1.0 - t)); + s *= factor; + Q += s; + relerr = s / Q; + if (relerr < GSL_DBL_EPSILON) + break; + i++; + } + + return Q; +} + + + + +/* + * Pr (X <= k) + */ +double +gsl_cdf_hypergeometric_P (const unsigned int k, + const unsigned int n1, + const unsigned int n2, const unsigned int t) +{ + double P; + + if (t > (n1 + n2)) + { + CDF_ERROR ("t larger than population size", GSL_EDOM); + } + else if (k >= n1 || k >= t) + { + P = 1.0; + } + else if (k < 0.0) + { + P = 0.0; + } + else + { + double midpoint = ((double)t * n1) / ((double)n1 + (double)n2); + + if (k >= midpoint) + { + P = 1 - upper_tail (k, n1, n2, t); + } + else + { + P = lower_tail (k, n1, n2, t); + } + } + + return P; +} + +/* + * Pr (X > k) + */ +double +gsl_cdf_hypergeometric_Q (const unsigned int k, + const unsigned int n1, + const unsigned int n2, const unsigned int t) +{ + double Q; + + if (t > (n1 + n2)) + { + CDF_ERROR ("t larger than population size", GSL_EDOM); + } + else if (k >= n1 || k >= t) + { + Q = 0.0; + } + else if (k < 0.0) + { + Q = 1.0; + } + else + { + double midpoint = ((double)t * n1) / ((double)n1 + (double)n2); + + if (k < midpoint) + { + Q = 1 - lower_tail (k, n1, n2, t); + } + else + { + Q = upper_tail (k, n1, n2, t); + } + } + + return Q; +} diff --git a/gsl-2.5/cdf/hypergeometric.lo b/gsl-2.5/cdf/hypergeometric.lo new file mode 100644 index 00000000..756e29ff --- /dev/null +++ b/gsl-2.5/cdf/hypergeometric.lo @@ -0,0 +1,12 @@ +# hypergeometric.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/hypergeometric.o' + +# Name of the non-PIC object +non_pic_object='hypergeometric.o' + diff --git a/gsl-2.5/cdf/laplace.c b/gsl-2.5/cdf/laplace.c new file mode 100644 index 00000000..5cf37d30 --- /dev/null +++ b/gsl-2.5/cdf/laplace.c @@ -0,0 +1,59 @@ +/* cdf/laplace.c + * + * Copyright (C) 2003, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include + +double +gsl_cdf_laplace_P (const double x, const double a) +{ + double P; + double u = x / a; + + if (u > 0) + { + P = 0.5 + 0.5*(1 - exp(-u)) ; + } + else + { + P = 0.5 * exp(u); + } + + return P; +} + +double +gsl_cdf_laplace_Q (const double x, const double a) +{ + double Q; + double u = x / a; + + if (u > 0) + { + Q = 0.5 * exp(-u); + } + else + { + Q = 1 - 0.5 *exp(u); + } + + return Q; +} diff --git a/gsl-2.5/cdf/laplace.lo b/gsl-2.5/cdf/laplace.lo new file mode 100644 index 00000000..bac12935 --- /dev/null +++ b/gsl-2.5/cdf/laplace.lo @@ -0,0 +1,12 @@ +# laplace.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/laplace.o' + +# Name of the non-PIC object +non_pic_object='laplace.o' + diff --git a/gsl-2.5/cdf/laplaceinv.c b/gsl-2.5/cdf/laplaceinv.c new file mode 100644 index 00000000..422f27ef --- /dev/null +++ b/gsl-2.5/cdf/laplaceinv.c @@ -0,0 +1,75 @@ +/* cdf/laplaceinv.c + * + * Copyright (C) 2003, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include + +double +gsl_cdf_laplace_Pinv (const double P, const double a) +{ + double x; + + if (P == 1.0) + { + return GSL_POSINF; + } + else if (P == 0.0) + { + return GSL_NEGINF; + } + + if (P < 0.5) + { + x = a * log(2*P); + } + else + { + x = -a * log(2*(1-P)); + } + + return x; +} + +double +gsl_cdf_laplace_Qinv (const double Q, const double a) +{ + double x; + + if (Q == 0.0) + { + return GSL_POSINF; + } + else if (Q == 1.0) + { + return GSL_NEGINF; + } + + if (Q < 0.5) + { + x = -a * log(2*Q); + } + else + { + x = a * log(2*(1-Q)); + } + + return x; +} diff --git a/gsl-2.5/cdf/laplaceinv.lo b/gsl-2.5/cdf/laplaceinv.lo new file mode 100644 index 00000000..9e38a656 --- /dev/null +++ b/gsl-2.5/cdf/laplaceinv.lo @@ -0,0 +1,12 @@ +# laplaceinv.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/laplaceinv.o' + +# Name of the non-PIC object +non_pic_object='laplaceinv.o' + diff --git a/gsl-2.5/cdf/libgslcdf.la b/gsl-2.5/cdf/libgslcdf.la new file mode 100644 index 00000000..8caf8d70 --- /dev/null +++ b/gsl-2.5/cdf/libgslcdf.la @@ -0,0 +1,41 @@ +# libgslcdf.la - a libtool library file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='' + +# Names of this library. +library_names='' + +# The name of the static archive. +old_library='libgslcdf.a' + +# Linker flags that can not go in dependency_libs. +inherited_linker_flags='' + +# Libraries that this one depends upon. +dependency_libs=' -lm' + +# Names of additional weak libraries provided by this library +weak_library_names='' + +# Version information for libgslcdf. +current= +age= +revision= + +# Is this an already installed library? +installed=no + +# Should we warn about portability when linking against -modules? +shouldnotlink=no + +# Files to dlopen/dlpreopen +dlopen='' +dlpreopen='' + +# Directory that this library needs to be installed in: +libdir='' diff --git a/gsl-2.5/cdf/logistic.c b/gsl-2.5/cdf/logistic.c new file mode 100644 index 00000000..10ab9bc8 --- /dev/null +++ b/gsl-2.5/cdf/logistic.c @@ -0,0 +1,59 @@ +/* cdf/logistic.c + * + * Copyright (C) 2003, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include + +double +gsl_cdf_logistic_P (const double x, const double a) +{ + double P; + double u = x / a; + + if (u >= 0) + { + P = 1 / (1 + exp (-u)); + } + else + { + P = exp (u) / (1 + exp (u)); + } + + return P; +} + +double +gsl_cdf_logistic_Q (const double x, const double a) +{ + double Q; + double u = x / a; + + if (u >= 0) + { + Q = exp (-u) / (1 + exp (-u)); + } + else + { + Q = 1 / (1 + exp (u)); + } + + return Q; +} diff --git a/gsl-2.5/cdf/logistic.lo b/gsl-2.5/cdf/logistic.lo new file mode 100644 index 00000000..421d83ee --- /dev/null +++ b/gsl-2.5/cdf/logistic.lo @@ -0,0 +1,12 @@ +# logistic.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/logistic.o' + +# Name of the non-PIC object +non_pic_object='logistic.o' + diff --git a/gsl-2.5/cdf/logisticinv.c b/gsl-2.5/cdf/logisticinv.c new file mode 100644 index 00000000..bc53d14a --- /dev/null +++ b/gsl-2.5/cdf/logisticinv.c @@ -0,0 +1,61 @@ +/* cdf/logisticinv.c + * + * Copyright (C) 2003, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include + +double +gsl_cdf_logistic_Pinv (const double P, const double a) +{ + double x; + + if (P == 1.0) + { + return GSL_POSINF; + } + else if (P == 0.0) + { + return GSL_NEGINF; + } + + x = a * log(P/(1-P)); + + return x; +} + +double +gsl_cdf_logistic_Qinv (const double Q, const double a) +{ + double x; + + if (Q == 0.0) + { + return GSL_POSINF; + } + else if (Q == 1.0) + { + return GSL_NEGINF; + } + + x = a * log((1-Q)/Q); + + return x; +} diff --git a/gsl-2.5/cdf/logisticinv.lo b/gsl-2.5/cdf/logisticinv.lo new file mode 100644 index 00000000..29057116 --- /dev/null +++ b/gsl-2.5/cdf/logisticinv.lo @@ -0,0 +1,12 @@ +# logisticinv.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/logisticinv.o' + +# Name of the non-PIC object +non_pic_object='logisticinv.o' + diff --git a/gsl-2.5/cdf/lognormal.c b/gsl-2.5/cdf/lognormal.c new file mode 100644 index 00000000..a3568104 --- /dev/null +++ b/gsl-2.5/cdf/lognormal.c @@ -0,0 +1,39 @@ +/* cdf/lognormal.c + * + * Copyright (C) 2003, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include + +double +gsl_cdf_lognormal_P (const double x, const double zeta, const double sigma) +{ + double u = (log (x) - zeta) / sigma; + double P = gsl_cdf_ugaussian_P (u); + return P; +} + +double +gsl_cdf_lognormal_Q (const double x, const double zeta, const double sigma) +{ + double u = (log (x) - zeta) / sigma; + double Q = gsl_cdf_ugaussian_Q (u); + return Q; +} diff --git a/gsl-2.5/cdf/lognormal.lo b/gsl-2.5/cdf/lognormal.lo new file mode 100644 index 00000000..944a03cd --- /dev/null +++ b/gsl-2.5/cdf/lognormal.lo @@ -0,0 +1,12 @@ +# lognormal.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/lognormal.o' + +# Name of the non-PIC object +non_pic_object='lognormal.o' + diff --git a/gsl-2.5/cdf/lognormalinv.c b/gsl-2.5/cdf/lognormalinv.c new file mode 100644 index 00000000..d955382e --- /dev/null +++ b/gsl-2.5/cdf/lognormalinv.c @@ -0,0 +1,65 @@ +/* cdf/lognormalinv.c + * + * Copyright (C) 2003, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include + +double +gsl_cdf_lognormal_Pinv (const double P, const double zeta, const double sigma) +{ + double x, u; + + if (P == 1.0) + { + return GSL_POSINF; + } + else if (P == 0.0) + { + return 0.0; + } + + u = gsl_cdf_ugaussian_Pinv (P); + + x = exp (zeta + sigma * u); + + return x; +} + +double +gsl_cdf_lognormal_Qinv (const double Q, const double zeta, const double sigma) +{ + double x, u; + + if (Q == 0.0) + { + return GSL_POSINF; + } + else if (Q == 1.0) + { + return 0.0; + } + + u = gsl_cdf_ugaussian_Qinv (Q); + + x = exp (zeta + sigma * u); + + return x; +} diff --git a/gsl-2.5/cdf/lognormalinv.lo b/gsl-2.5/cdf/lognormalinv.lo new file mode 100644 index 00000000..3eb6e192 --- /dev/null +++ b/gsl-2.5/cdf/lognormalinv.lo @@ -0,0 +1,12 @@ +# lognormalinv.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/lognormalinv.o' + +# Name of the non-PIC object +non_pic_object='lognormalinv.o' + diff --git a/gsl-2.5/cdf/nbinomial.c b/gsl-2.5/cdf/nbinomial.c new file mode 100644 index 00000000..c3607c5d --- /dev/null +++ b/gsl-2.5/cdf/nbinomial.c @@ -0,0 +1,83 @@ +/* cdf/negbinom.c + * + * Copyright (C) 2004 Jason H. Stover. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include + +#include "error.h" + +/* + * Pr(X <= k) for a negative binomial random variable X, i.e., + * the probability of k or fewer failuers before success n. + */ + +double +gsl_cdf_negative_binomial_P (const unsigned int k, const double p, const double n) +{ + double P; + double a; + double b; + + if (p > 1.0 || p < 0.0) + { + CDF_ERROR ("p < 0 or p > 1", GSL_EDOM); + } + + if (n < 0) + { + CDF_ERROR ("n < 0", GSL_EDOM); + } + + a = (double) n; + b = (double) k + 1.0; + P = gsl_cdf_beta_P (p, a, b); + + return P; +} + +/* + * Pr ( X > k ). + */ + +double +gsl_cdf_negative_binomial_Q (const unsigned int k, const double p, const double n) +{ + double Q; + double a; + double b; + + if (p > 1.0 || p < 0.0) + { + CDF_ERROR ("p < 0 or p > 1", GSL_EDOM); + } + + if (n < 0) + { + CDF_ERROR ("n < 0", GSL_EDOM); + } + + a = (double) n; + b = (double) k + 1.0; + Q = gsl_cdf_beta_Q (p, a, b); + + return Q; +} diff --git a/gsl-2.5/cdf/nbinomial.lo b/gsl-2.5/cdf/nbinomial.lo new file mode 100644 index 00000000..585418a9 --- /dev/null +++ b/gsl-2.5/cdf/nbinomial.lo @@ -0,0 +1,12 @@ +# nbinomial.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/nbinomial.o' + +# Name of the non-PIC object +non_pic_object='nbinomial.o' + diff --git a/gsl-2.5/cdf/pareto.c b/gsl-2.5/cdf/pareto.c new file mode 100644 index 00000000..fb98b61e --- /dev/null +++ b/gsl-2.5/cdf/pareto.c @@ -0,0 +1,57 @@ +/* cdf/pareto.c + * + * Copyright (C) 2003, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include + +double +gsl_cdf_pareto_P (const double x, const double a, const double b) +{ + double P; + + if (x < b) + { + P = 0; + } + else + { + P = 1 - pow(b/x, a); + } + + return P; +} + +double +gsl_cdf_pareto_Q (const double x, const double a, const double b) +{ + double Q; + + if (x < b) + { + Q = 1; + } + else + { + Q = pow(b/x, a); + } + + return Q; +} diff --git a/gsl-2.5/cdf/pareto.lo b/gsl-2.5/cdf/pareto.lo new file mode 100644 index 00000000..fff89a49 --- /dev/null +++ b/gsl-2.5/cdf/pareto.lo @@ -0,0 +1,12 @@ +# pareto.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/pareto.o' + +# Name of the non-PIC object +non_pic_object='pareto.o' + diff --git a/gsl-2.5/cdf/paretoinv.c b/gsl-2.5/cdf/paretoinv.c new file mode 100644 index 00000000..1427173d --- /dev/null +++ b/gsl-2.5/cdf/paretoinv.c @@ -0,0 +1,61 @@ +/* cdf/paretoinv.c + * + * Copyright (C) 2003, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include + +double +gsl_cdf_pareto_Pinv (const double P, const double a, const double b) +{ + double x; + + if (P == 1.0) + { + return GSL_POSINF; + } + else if (P == 0.0) + { + return b; + } + + x = b * exp(-log1p(-P)/a); + + return x; +} + +double +gsl_cdf_pareto_Qinv (const double Q, const double a, const double b) +{ + double x; + + if (Q == 0.0) + { + return GSL_POSINF; + } + else if (Q == 1.0) + { + return b; + } + + x = b * exp(-log(Q) / a); + + return x; +} diff --git a/gsl-2.5/cdf/paretoinv.lo b/gsl-2.5/cdf/paretoinv.lo new file mode 100644 index 00000000..ec21a020 --- /dev/null +++ b/gsl-2.5/cdf/paretoinv.lo @@ -0,0 +1,12 @@ +# paretoinv.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/paretoinv.o' + +# Name of the non-PIC object +non_pic_object='paretoinv.o' + diff --git a/gsl-2.5/cdf/pascal.c b/gsl-2.5/cdf/pascal.c new file mode 100644 index 00000000..51e3af54 --- /dev/null +++ b/gsl-2.5/cdf/pascal.c @@ -0,0 +1,40 @@ +/* cdf/pascal.c + * + * Copyright (C) 2006, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include + +/* The Pascal distribution is a negative binomial with valued integer n */ + + +double +gsl_cdf_pascal_P (const unsigned int k, const double p, const unsigned int n) +{ + double P = gsl_cdf_negative_binomial_P (k, p, (double) n); + return P; +} + +double +gsl_cdf_pascal_Q (const unsigned int k, const double p, const unsigned int n) +{ + double Q = gsl_cdf_negative_binomial_Q (k, p, (double) n); + return Q; +} diff --git a/gsl-2.5/cdf/pascal.lo b/gsl-2.5/cdf/pascal.lo new file mode 100644 index 00000000..6cd27713 --- /dev/null +++ b/gsl-2.5/cdf/pascal.lo @@ -0,0 +1,12 @@ +# pascal.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/pascal.o' + +# Name of the non-PIC object +non_pic_object='pascal.o' + diff --git a/gsl-2.5/cdf/poisson.c b/gsl-2.5/cdf/poisson.c new file mode 100644 index 00000000..5b34b2b8 --- /dev/null +++ b/gsl-2.5/cdf/poisson.c @@ -0,0 +1,84 @@ +/* cdf/poisson.c + * + * Copyright (C) 2004 Jason H. Stover. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* + * Computes the cumulative distribution function for a Poisson + * random variable. For a Poisson random variable X with parameter + * mu, + * + * Pr( X <= k ) = Pr( Y >= p ) + * + * where Y is a gamma random variable with parameters k+1 and 1. + * + * Reference: + * + * W. Feller, "An Introduction to Probability and Its + * Applications," volume 1. Wiley, 1968. Exercise 46, page 173, + * chapter 6. + */ + +#include +#include +#include +#include +#include + +#include "error.h" + +/* + * Pr (X <= k) for a Poisson random variable X. + */ + +double +gsl_cdf_poisson_P (const unsigned int k, const double mu) +{ + double P; + double a; + + if (mu <= 0.0) + { + CDF_ERROR ("mu <= 0", GSL_EDOM); + } + + a = (double) k + 1.0; + P = gsl_cdf_gamma_Q (mu, a, 1.0); + + return P; +} + +/* + * Pr ( X > k ) for a Possion random variable X. + */ + +double +gsl_cdf_poisson_Q (const unsigned int k, const double mu) +{ + double Q; + double a; + + if (mu <= 0.0) + { + CDF_ERROR ("mu <= 0", GSL_EDOM); + } + + a = (double) k + 1.0; + Q = gsl_cdf_gamma_P (mu, a, 1.0); + + return Q; +} diff --git a/gsl-2.5/cdf/poisson.lo b/gsl-2.5/cdf/poisson.lo new file mode 100644 index 00000000..a11ecd96 --- /dev/null +++ b/gsl-2.5/cdf/poisson.lo @@ -0,0 +1,12 @@ +# poisson.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/poisson.o' + +# Name of the non-PIC object +non_pic_object='poisson.o' + diff --git a/gsl-2.5/cdf/rat_eval.h b/gsl-2.5/cdf/rat_eval.h new file mode 100644 index 00000000..5e6fc199 --- /dev/null +++ b/gsl-2.5/cdf/rat_eval.h @@ -0,0 +1,25 @@ +static double +rat_eval (const double a[], const size_t na, + const double b[], const size_t nb, const double x) +{ + size_t i, j; + double u, v, r; + + u = a[na - 1]; + + for (i = na - 1; i > 0; i--) + { + u = x * u + a[i - 1]; + } + + v = b[nb - 1]; + + for (j = nb - 1; j > 0; j--) + { + v = x * v + b[j - 1]; + } + + r = u / v; + + return r; +} diff --git a/gsl-2.5/cdf/rayleigh.c b/gsl-2.5/cdf/rayleigh.c new file mode 100644 index 00000000..50de88f2 --- /dev/null +++ b/gsl-2.5/cdf/rayleigh.c @@ -0,0 +1,39 @@ +/* cdf/rayleigh.c + * + * Copyright (C) 2003, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include + +double +gsl_cdf_rayleigh_P (const double x, const double sigma) +{ + double u = x / sigma; + double P = -expm1 (-u*u/2); + return P; +} + +double +gsl_cdf_rayleigh_Q (const double x, const double sigma) +{ + double u = x / sigma; + double Q = exp (-u*u/2); + return Q; +} diff --git a/gsl-2.5/cdf/rayleigh.lo b/gsl-2.5/cdf/rayleigh.lo new file mode 100644 index 00000000..5c670837 --- /dev/null +++ b/gsl-2.5/cdf/rayleigh.lo @@ -0,0 +1,12 @@ +# rayleigh.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/rayleigh.o' + +# Name of the non-PIC object +non_pic_object='rayleigh.o' + diff --git a/gsl-2.5/cdf/rayleighinv.c b/gsl-2.5/cdf/rayleighinv.c new file mode 100644 index 00000000..1e01316b --- /dev/null +++ b/gsl-2.5/cdf/rayleighinv.c @@ -0,0 +1,61 @@ +/* cdf/rayleighinv.c + * + * Copyright (C) 2003, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include + +double +gsl_cdf_rayleigh_Pinv (const double P, const double sigma) +{ + double x; + + if (P == 1.0) + { + return GSL_POSINF; + } + else if (P == 0.0) + { + return 0.0; + } + + x = sigma * M_SQRT2 * sqrt (-log1p (-P)); + + return x; +} + +double +gsl_cdf_rayleigh_Qinv (const double Q, const double sigma) +{ + double x; + + if (Q == 0.0) + { + return GSL_POSINF; + } + else if (Q == 1.0) + { + return 0.0; + } + + x = sigma * M_SQRT2 * sqrt (-log (Q)); + + return x; +} diff --git a/gsl-2.5/cdf/rayleighinv.lo b/gsl-2.5/cdf/rayleighinv.lo new file mode 100644 index 00000000..0736fe0f --- /dev/null +++ b/gsl-2.5/cdf/rayleighinv.lo @@ -0,0 +1,12 @@ +# rayleighinv.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/rayleighinv.o' + +# Name of the non-PIC object +non_pic_object='rayleighinv.o' + diff --git a/gsl-2.5/cdf/tdist.c b/gsl-2.5/cdf/tdist.c new file mode 100644 index 00000000..b3244829 --- /dev/null +++ b/gsl-2.5/cdf/tdist.c @@ -0,0 +1,271 @@ +/* cdf/tdist.c + * + * Copyright (C) 2002 Jason H. Stover. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* + * Computes the Student's t cumulative distribution function using + * the method detailed in + * + * W.J. Kennedy and J.E. Gentle, "Statistical Computing." 1980. + * Marcel Dekker. ISBN 0-8247-6898-1. + * + * G.W. Hill and A.W. Davis. "Generalized asymptotic expansions + * of Cornish-Fisher type." Annals of Mathematical Statistics, + * vol. 39, 1264-1273. 1968. + * + * G.W. Hill. "Algorithm 395: Student's t-distribution," Communications + * of the ACM, volume 13, number 10, page 617. October 1970. + * + * G.W. Hill, "Remark on algorithm 395: Student's t-distribution," + * Transactions on Mathematical Software, volume 7, number 2, page + * 247. June 1982. + */ + +#include +#include +#include +#include +#include + +#include "beta_inc.c" + +static double +poly_eval (const double c[], unsigned int n, double x) +{ + unsigned int i; + double y = c[0] * x; + + for (i = 1; i < n; i++) + { + y = x * (y + c[i]); + } + + y += c[n]; + + return y; +} + +/* + * Use the Cornish-Fisher asymptotic expansion to find a point u such + * that gsl_cdf_gauss(y) = tcdf(t). + * + */ + +static double +cornish_fisher (double t, double n) +{ + const double coeffs6[10] = { + 0.265974025974025974026, + 5.449696969696969696970, + 122.20294372294372294372, + 2354.7298701298701298701, + 37625.00902597402597403, + 486996.1392857142857143, + 4960870.65, + 37978595.55, + 201505390.875, + 622437908.625 + }; + const double coeffs5[8] = { + 0.2742857142857142857142, + 4.499047619047619047619, + 78.45142857142857142857, + 1118.710714285714285714, + 12387.6, + 101024.55, + 559494.0, + 1764959.625 + }; + const double coeffs4[6] = { + 0.3047619047619047619048, + 3.752380952380952380952, + 46.67142857142857142857, + 427.5, + 2587.5, + 8518.5 + }; + const double coeffs3[4] = { + 0.4, + 3.3, + 24.0, + 85.5 + }; + + double a = n - 0.5; + double b = 48.0 * a * a; + + double z2 = a * log1p (t * t / n); + double z = sqrt (z2); + + double p5 = z * poly_eval (coeffs6, 9, z2); + double p4 = -z * poly_eval (coeffs5, 7, z2); + double p3 = z * poly_eval (coeffs4, 5, z2); + double p2 = -z * poly_eval (coeffs3, 3, z2); + double p1 = z * (z2 + 3.0); + double p0 = z; + + double y = p5; + y = (y / b) + p4; + y = (y / b) + p3; + y = (y / b) + p2; + y = (y / b) + p1; + y = (y / b) + p0; + + if (t < 0) + y *= -1; + + return y; +} + +#if 0 +/* + * Series approximation for t > 4.0. This needs to be fixed; + * it shouldn't subtract the result from 1.0. A better way is + * to use two different series expansions. Figuring this out + * means rummaging through Fisher's paper in Metron, v5, 1926, + * "Expansion of Student's integral in powers of n^{-1}." + */ + +#define MAXI 40 + +static double +normal_approx (const double x, const double nu) +{ + double y; + double num; + double diff; + double q; + int i; + double lg1, lg2; + + y = 1 / sqrt (1 + x * x / nu); + num = 1.0; + q = 0.0; + diff = 2 * GSL_DBL_EPSILON; + for (i = 2; (i < MAXI) && (diff > GSL_DBL_EPSILON); i += 2) + { + diff = q; + num *= y * y * (i - 1) / i; + q += num / (nu + i); + diff = q - diff; + } + q += 1 / nu; + lg1 = gsl_sf_lngamma (nu / 2.0); + lg2 = gsl_sf_lngamma ((nu + 1.0) / 2.0); + + diff = lg2 - lg1; + q *= pow (y, nu) * exp (diff) / sqrt (M_PI); + + return q; +} +#endif + +double +gsl_cdf_tdist_P (const double x, const double nu) +{ + double P; + + double x2 = x * x; + + if (nu > 30 && x2 < 10 * nu) + { + double u = cornish_fisher (x, nu); + P = gsl_cdf_ugaussian_P (u); + + return P; + } + + if (x2 < nu) + { + double u = x2 / nu; + double eps = u / (1 + u); + + if (x >= 0) + { + P = beta_inc_AXPY (0.5, 0.5, 0.5, nu / 2.0, eps); + } + else + { + P = beta_inc_AXPY (-0.5, 0.5, 0.5, nu / 2.0, eps); + } + } + else + { + double v = nu / (x * x); + double eps = v / (1 + v); + + if (x >= 0) + { + P = beta_inc_AXPY (-0.5, 1.0, nu / 2.0, 0.5, eps); + } + else + { + P = beta_inc_AXPY (0.5, 0.0, nu / 2.0, 0.5, eps); + } + } + + return P; +} + + +double +gsl_cdf_tdist_Q (const double x, const double nu) +{ + double Q; + + double x2 = x * x; + + if (nu > 30 && x2 < 10 * nu) + { + double u = cornish_fisher (x, nu); + Q = gsl_cdf_ugaussian_Q (u); + + return Q; + } + + if (x2 < nu) + { + double u = x2 / nu; + double eps = u / (1 + u); + + if (x >= 0) + { + Q = beta_inc_AXPY (-0.5, 0.5, 0.5, nu / 2.0, eps); + } + else + { + Q = beta_inc_AXPY (0.5, 0.5, 0.5, nu / 2.0, eps); + } + } + else + { + double v = nu / (x * x); + double eps = v / (1 + v); + + if (x >= 0) + { + Q = beta_inc_AXPY (0.5, 0.0, nu / 2.0, 0.5, eps); + } + else + { + Q = beta_inc_AXPY (-0.5, 1.0, nu / 2.0, 0.5, eps); + } + } + + return Q; +} diff --git a/gsl-2.5/cdf/tdist.lo b/gsl-2.5/cdf/tdist.lo new file mode 100644 index 00000000..12599eb5 --- /dev/null +++ b/gsl-2.5/cdf/tdist.lo @@ -0,0 +1,12 @@ +# tdist.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/tdist.o' + +# Name of the non-PIC object +non_pic_object='tdist.o' + diff --git a/gsl-2.5/cdf/tdistinv.c b/gsl-2.5/cdf/tdistinv.c new file mode 100644 index 00000000..9bcd8d81 --- /dev/null +++ b/gsl-2.5/cdf/tdistinv.c @@ -0,0 +1,239 @@ +/* cdf/tdistinv.c + * + * Copyright (C) 2007, 2010 Brian Gough + * Copyright (C) 2002 Jason H. Stover. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include + +#include + +static double +inv_cornish_fisher (double z, double nu) +{ + double a = 1 / (nu - 0.5); + double b = 48.0 / (a * a); + + double cf1 = z * (3 + z * z); + double cf2 = z * (945 + z * z * (360 + z * z * (63 + z * z * 4))); + + double y = z - cf1 / b + cf2 / (10 * b * b); + + double t = GSL_SIGN (z) * sqrt (nu * expm1 (a * y * y)); + + return t; +} + + +double +gsl_cdf_tdist_Pinv (const double P, const double nu) +{ + double x, ptail; + + if (P == 1.0) + { + return GSL_POSINF; + } + else if (P == 0.0) + { + return GSL_NEGINF; + } + + if (nu == 1.0) + { + x = tan (M_PI * (P - 0.5)); + return x; + } + else if (nu == 2.0) + { + x = (2 * P - 1) / sqrt (2 * P * (1 - P)); + return x; + } + + ptail = (P < 0.5) ? P : 1 - P; + + if (sqrt (M_PI * nu / 2) * ptail > pow (0.05, nu / 2)) + { + double xg = gsl_cdf_ugaussian_Pinv (P); + x = inv_cornish_fisher (xg, nu); + } + else + { + /* Use an asymptotic expansion of the tail of integral */ + + double beta = gsl_sf_beta (0.5, nu / 2); + + if (P < 0.5) + { + x = -sqrt (nu) * pow (beta * nu * P, -1.0 / nu); + } + else + { + x = sqrt (nu) * pow (beta * nu * (1 - P), -1.0 / nu); + } + + /* Correct nu -> nu/(1+nu/x^2) in the leading term to account + for higher order terms. This avoids overestimating x, which + makes the iteration unstable due to the rapidly decreasing + tails of the distribution. */ + + x /= sqrt (1 + nu / (x * x)); + } + + { + double dP, phi; + unsigned int n = 0; + + start: + dP = P - gsl_cdf_tdist_P (x, nu); + phi = gsl_ran_tdist_pdf (x, nu); + + if (dP == 0.0 || n++ > 32) + goto end; + + { + double lambda = dP / phi; + double step0 = lambda; + double step1 = ((nu + 1) * x / (x * x + nu)) * (lambda * lambda / 4.0); + + double step = step0; + + if (fabs (step1) < fabs (step0)) + { + step += step1; + } + + if (P > 0.5 && x + step < 0) + x /= 2; + else if (P < 0.5 && x + step > 0) + x /= 2; + else + x += step; + + if (fabs (step) > 1e-10 * fabs (x)) + goto start; + } + + end: + if (fabs(dP) > GSL_SQRT_DBL_EPSILON * P) + { + GSL_ERROR_VAL("inverse failed to converge", GSL_EFAILED, GSL_NAN); + } + + return x; + } +} + +double +gsl_cdf_tdist_Qinv (const double Q, const double nu) +{ + double x, qtail; + + if (Q == 0.0) + { + return GSL_POSINF; + } + else if (Q == 1.0) + { + return GSL_NEGINF; + } + + if (nu == 1.0) + { + x = tan (M_PI * (0.5 - Q)); + return x; + } + else if (nu == 2.0) + { + x = (1 - 2 * Q) / sqrt (2 * Q * (1 - Q)); + return x; + } + + qtail = (Q < 0.5) ? Q : 1 - Q; + + if (sqrt (M_PI * nu / 2) * qtail > pow (0.05, nu / 2)) + { + double xg = gsl_cdf_ugaussian_Qinv (Q); + x = inv_cornish_fisher (xg, nu); + } + else + { + /* Use an asymptotic expansion of the tail of integral */ + + double beta = gsl_sf_beta (0.5, nu / 2); + + if (Q < 0.5) + { + x = sqrt (nu) * pow (beta * nu * Q, -1.0 / nu); + } + else + { + x = -sqrt (nu) * pow (beta * nu * (1 - Q), -1.0 / nu); + } + + /* Correct nu -> nu/(1+nu/x^2) in the leading term to account + for higher order terms. This avoids overestimating x, which + makes the iteration unstable due to the rapidly decreasing + tails of the distribution. */ + + x /= sqrt (1 + nu / (x * x)); + } + + { + double dQ, phi; + unsigned int n = 0; + + start: + dQ = Q - gsl_cdf_tdist_Q (x, nu); + phi = gsl_ran_tdist_pdf (x, nu); + + if (dQ == 0.0 || n++ > 32) + goto end; + + { + double lambda = - dQ / phi; + double step0 = lambda; + double step1 = ((nu + 1) * x / (x * x + nu)) * (lambda * lambda / 4.0); + + double step = step0; + + if (fabs (step1) < fabs (step0)) + { + step += step1; + } + + if (Q < 0.5 && x + step < 0) + x /= 2; + else if (Q > 0.5 && x + step > 0) + x /= 2; + else + x += step; + + if (fabs (step) > 1e-10 * fabs (x)) + goto start; + } + } + +end: + + return x; +} diff --git a/gsl-2.5/cdf/tdistinv.lo b/gsl-2.5/cdf/tdistinv.lo new file mode 100644 index 00000000..925f157a --- /dev/null +++ b/gsl-2.5/cdf/tdistinv.lo @@ -0,0 +1,12 @@ +# tdistinv.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/tdistinv.o' + +# Name of the non-PIC object +non_pic_object='tdistinv.o' + diff --git a/gsl-2.5/cdf/test b/gsl-2.5/cdf/test new file mode 100755 index 00000000..a56eb594 Binary files /dev/null and b/gsl-2.5/cdf/test differ diff --git a/gsl-2.5/cdf/test-suite.log b/gsl-2.5/cdf/test-suite.log new file mode 100644 index 00000000..cbe593d0 --- /dev/null +++ b/gsl-2.5/cdf/test-suite.log @@ -0,0 +1,14 @@ +================================= + gsl 2.5: cdf/test-suite.log +================================= + +# TOTAL: 1 +# PASS: 1 +# SKIP: 0 +# XFAIL: 0 +# FAIL: 0 +# XPASS: 0 +# ERROR: 0 + +.. contents:: :depth: 2 + diff --git a/gsl-2.5/cdf/test.c b/gsl-2.5/cdf/test.c new file mode 100644 index 00000000..1b4cf777 --- /dev/null +++ b/gsl-2.5/cdf/test.c @@ -0,0 +1,1396 @@ +/* cdf/test.c + * + * Copyright (C) 2002 Jason H Stover. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define TEST(func, args, value, tol) { double res = func args ; gsl_test_rel (res, value, tol, #func #args); } ; + +#define TEST_TOL0 (2.0*GSL_DBL_EPSILON) +#define TEST_TOL1 (16.0*GSL_DBL_EPSILON) +#define TEST_TOL2 (256.0*GSL_DBL_EPSILON) +#define TEST_TOL3 (2048.0*GSL_DBL_EPSILON) +#define TEST_TOL4 (16384.0*GSL_DBL_EPSILON) +#define TEST_TOL5 (131072.0*GSL_DBL_EPSILON) +#define TEST_TOL6 (1048576.0*GSL_DBL_EPSILON) + +void test_ugaussian (void); +void test_ugaussianinv (void); +void test_exponential (void); +void test_exponentialinv (void); +void test_exppow (void); +void test_tdist (void); +void test_fdist (void); +void test_gamma (void); +void test_chisq (void); +void test_beta (void); +void test_gammainv (void); +void test_chisqinv (void); +void test_tdistinv (void); +void test_betainv (void); +void test_finv (void); + +#include "test_auto.c" + +struct range { unsigned int min; unsigned int max; } ; +double test_binomial_pdf (unsigned int n); +double test_binomial_cdf_P (unsigned int n); +double test_binomial_cdf_Q (unsigned int n); + +struct range +test_binomial_range (void) +{ + struct range r = {0, 5}; + return r; +} + +double +test_binomial_pdf (unsigned int k) +{ + return gsl_ran_binomial_pdf (k, 0.3, 5); +} + +double +test_binomial_cdf_P (unsigned int k) +{ + return gsl_cdf_binomial_P (k, 0.3, 5); +} + +double +test_binomial_cdf_Q (unsigned int k) +{ + return gsl_cdf_binomial_Q (k, 0.3, 5); +} + +struct range +test_poisson_range (void) +{ + struct range r = {0, 25}; + return r; +} + +double +test_poisson_pdf (unsigned int k) +{ + return gsl_ran_poisson_pdf (k, 2.3); +} + +double +test_poisson_cdf_P (unsigned int k) +{ + return gsl_cdf_poisson_P (k, 2.3); +} + +double +test_poisson_cdf_Q (unsigned int k) +{ + return gsl_cdf_poisson_Q (k, 2.3); +} + +struct range +test_geometric_range (void) +{ + struct range r = {0, 25}; + return r; +} + +double +test_geometric_pdf (unsigned int k) +{ + return gsl_ran_geometric_pdf (k, 0.3); +} + +double +test_geometric_cdf_P (unsigned int k) +{ + return gsl_cdf_geometric_P (k, 0.3); +} + +double +test_geometric_cdf_Q (unsigned int k) +{ + return gsl_cdf_geometric_Q (k, 0.3); +} + +struct range +test_negative_binomial_range (void) +{ + struct range r = {0, 15}; + return r; +} + +double +test_negative_binomial_pdf (unsigned int k) +{ + return gsl_ran_negative_binomial_pdf (k, 0.3, 5.3); +} + +double +test_negative_binomial_cdf_P (unsigned int k) +{ + return gsl_cdf_negative_binomial_P (k, 0.3, 5.3); +} + +double +test_negative_binomial_cdf_Q (unsigned int k) +{ + return gsl_cdf_negative_binomial_Q (k, 0.3, 5.3); +} + +struct range +test_pascal_range (void) +{ + struct range r = {0, 15}; + return r; +} + +double +test_pascal_pdf (unsigned int k) +{ + return gsl_ran_pascal_pdf (k, 0.3, 5); +} + +double +test_pascal_cdf_P (unsigned int k) +{ + return gsl_cdf_pascal_P (k, 0.3, 5); +} + +double +test_pascal_cdf_Q (unsigned int k) +{ + return gsl_cdf_pascal_Q (k, 0.3, 5); +} + +struct range +test_hypergeometric_range (void) +{ + struct range r = {0, 26}; + return r; +} + +double +test_hypergeometric_pdf (unsigned int k) +{ + return gsl_ran_hypergeometric_pdf (k, 7, 19, 13); +} + +double +test_hypergeometric_cdf_P (unsigned int k) +{ + return gsl_cdf_hypergeometric_P (k, 7, 19, 13); +} + +double +test_hypergeometric_cdf_Q (unsigned int k) +{ + return gsl_cdf_hypergeometric_Q (k, 7, 19, 13); +} + +struct range +test_hypergeometric2_range (void) +{ + struct range r = {0, 13250474}; + return r; +} + +struct range +test_hypergeometric2a_range (void) +{ + struct range r = {3500, 3600}; + return r; +} + +struct range +test_hypergeometric2b_range (void) +{ + struct range r = {13247474, 13250474}; + return r; +} + +double +test_hypergeometric2_pdf (unsigned int k) +{ + return gsl_ran_hypergeometric_pdf (k, 76200, 13174274, 678090); +} + +double +test_hypergeometric2_cdf_P (unsigned int k) +{ + return gsl_cdf_hypergeometric_P (k, 76200, 13174274, 678090); +} + +double +test_hypergeometric2_cdf_Q (unsigned int k) +{ + return gsl_cdf_hypergeometric_Q (k, 76200, 13174274, 678090); +} + +#ifdef LOGARITHMIC +struct range +test_logarithmic_range (void) +{ + struct range r = {1, 200}; + return r; +} + +double +test_logarithmic_pdf (unsigned int k) +{ + return gsl_ran_logarithmic_pdf (k, 0.9); +} + +double +test_logarithmic_cdf_P (unsigned int k) +{ + return gsl_cdf_logarithmic_P (k, 0.9); +} + +double +test_logarithmic_cdf_Q (unsigned int k) +{ + return gsl_cdf_logarithmic_Q (k, 0.9); +} +#endif + +void +test_discrete_cdf_P (double (*pdf)(unsigned int), + double (*cdf_P)(unsigned int), + struct range (*range)(void), + const char * desc) +{ + double sum; + double tol = TEST_TOL2; + int i, min, max; + + struct range r = range(); + + min = r.min; + max = r.max; + sum = 0.0; + + for (i = min; i <= max; i++) + { + double pi = pdf(i); + double Pi = cdf_P(i); + sum += pi; + gsl_test_rel (Pi, sum, tol, desc, i); + } +} + +void +test_discrete_cdf_Q (double (*pdf)(unsigned int), + double (*cdf_Q)(unsigned int), + struct range (*range)(void), + const char * desc) +{ + double sum; + double tol = TEST_TOL2; + int i, min, max; + + struct range r = range(); + + min = r.min; + max = r.max; + sum = cdf_Q(max); + + for (i = max; i >= min; i--) + { + double pi = pdf(i); + double Qi = cdf_Q(i); + gsl_test_rel (Qi, sum, tol, desc, i); + sum += pi; + } +} + +void +test_discrete_cdf_PQ (double (*cdf_P)(unsigned int), + double (*cdf_Q)(unsigned int), + struct range (*range)(void), + const char * desc) +{ + double sum; + double tol = GSL_DBL_EPSILON; + int i, min, max; + + struct range r = range(); + + min = r.min; + max = r.max; + + for (i = min; i <= max; i++) + { + double Pi = cdf_P(i); + double Qi = cdf_Q(i); + sum = Pi + Qi; + gsl_test_rel (sum, 1.0, tol, desc, i); + { + int s1 = (Pi<0 || Pi>1); + int s2 = (Qi<0 || Qi>1); + gsl_test(s1, "Pi in range [0,1] (%.18e)", Pi); + gsl_test(s2, "Qi in range [0,1] (%.18e)", Qi); + } + } + +} + +#define TEST_DISCRETE(name) do { \ + test_discrete_cdf_P(&test_ ## name ## _pdf, &test_ ## name ## _cdf_P, &test_ ## name ## _range, "test gsl_cdf_" #name "_P (k=%d)") ; \ + test_discrete_cdf_Q(&test_ ## name ## _pdf, &test_ ## name ## _cdf_Q, &test_ ## name ## _range, "test gsl_cdf_" #name "_Q (k=%d)") ; \ + test_discrete_cdf_PQ(&test_ ## name ## _cdf_P, &test_ ## name ## _cdf_Q, &test_ ## name ## _range, "test gsl_cdf_" #name "_P+Q (k=%d)") ; \ +} while (0); + +int +main (void) +{ + gsl_ieee_env_setup (); + + TEST_DISCRETE(binomial); + TEST_DISCRETE(poisson); + TEST_DISCRETE(geometric); + TEST_DISCRETE(negative_binomial); + TEST_DISCRETE(pascal); + TEST_DISCRETE(hypergeometric); +#ifdef HYPERGEOMETRIC2 + TEST_DISCRETE(hypergeometric2); +#endif +#ifdef LOGARITHMIC + TEST_DISCRETE(logarithmic); +#endif + + test_discrete_cdf_PQ(&test_hypergeometric2_cdf_P, + &test_hypergeometric2_cdf_Q, + &test_hypergeometric2a_range, + "test gsl_cdf_hypergeometric_P+Q (k=%d)") ; + + test_discrete_cdf_PQ(&test_hypergeometric2_cdf_P, + &test_hypergeometric2_cdf_Q, + &test_hypergeometric2b_range, + "test gsl_cdf_hypergeometric_P+Q (k=%d)") ; + + + /* exit (gsl_test_summary ()); */ + + /* Tests for gaussian cumulative distribution function + Function values computed with PARI, 28 digits precision */ + + test_ugaussian (); + test_exponential (); + test_exppow (); + test_tdist (); + test_fdist (); + test_gamma (); + test_chisq (); + test_beta (); + + test_ugaussianinv (); + test_exponentialinv (); + test_gammainv (); + test_chisqinv (); + test_tdistinv (); + test_betainv (); + test_finv (); + + test_auto_beta (); + test_auto_fdist (); + test_auto_cauchy (); + test_auto_gaussian (); + test_auto_laplace (); + test_auto_rayleigh (); + test_auto_flat (); + test_auto_lognormal (); + test_auto_gamma (); + test_auto_chisq (); + test_auto_tdist (); + test_auto_gumbel1 (); + test_auto_gumbel2 (); + test_auto_weibull (); + test_auto_pareto (); + test_auto_logistic (); + test_auto_gammalarge (); + + exit (gsl_test_summary ()); +} + +void test_ugaussian (void) +{ + TEST (gsl_cdf_ugaussian_P, (0.0), 0.5, TEST_TOL0); + TEST (gsl_cdf_ugaussian_P, (1e-32), 0.5, TEST_TOL0); + TEST (gsl_cdf_ugaussian_P, (1e-16), 0.5000000000000000398942280401, TEST_TOL0); + TEST (gsl_cdf_ugaussian_P, (1e-8), 0.5000000039894228040143267129, TEST_TOL0); + TEST (gsl_cdf_ugaussian_P, (0.5), 0.6914624612740131036377046105, TEST_TOL0); + TEST (gsl_cdf_ugaussian_P, (0.7), 0.7580363477769269852506495717, TEST_TOL0); + TEST (gsl_cdf_ugaussian_P, (5.0), 0.9999997133484281208060883262, TEST_TOL0); + TEST (gsl_cdf_ugaussian_P, (10.0), 0.9999999999999999999999923801, TEST_TOL0); + TEST (gsl_cdf_ugaussian_P, (30.0), 1.000000000000000000000000000, TEST_TOL0); + TEST (gsl_cdf_ugaussian_P, (40.0), 1.000000000000000000000000000, TEST_TOL0); + TEST (gsl_cdf_ugaussian_P, (1e10), 1.000000000000000000000000000, TEST_TOL0); + + TEST (gsl_cdf_ugaussian_P, (-1e-32), 0.5, TEST_TOL0); + TEST (gsl_cdf_ugaussian_P, (-1e-16), 0.4999999999999999601057719598, TEST_TOL0); + TEST (gsl_cdf_ugaussian_P, (-1e-8), 0.4999999960105771959856732870, TEST_TOL0); + TEST (gsl_cdf_ugaussian_P, (-0.5), 0.3085375387259868963622953894, TEST_TOL0); + TEST (gsl_cdf_ugaussian_P, (-0.7), 0.2419636522230730147493504282, TEST_TOL0); + TEST (gsl_cdf_ugaussian_P, (-5.0), 0.0000002866515718791939116737523329, TEST_TOL1); + TEST (gsl_cdf_ugaussian_P, (-10.0), 7.619853024160526065973343257e-24, TEST_TOL3); + TEST (gsl_cdf_ugaussian_P, (-30.0), 4.906713927148187059533809288e-198, TEST_TOL3); + TEST (gsl_cdf_ugaussian_P, (-1e10), 0.0, 0.0); + + TEST (gsl_cdf_ugaussian_Q, (0.0), 0.5, TEST_TOL0); + TEST (gsl_cdf_ugaussian_Q, (1e-32), 0.5, TEST_TOL0); + TEST (gsl_cdf_ugaussian_Q, (1e-16), 0.4999999999999999601057719598, TEST_TOL0); + TEST (gsl_cdf_ugaussian_Q, (1e-8), 0.4999999960105771959856732870, TEST_TOL0); + TEST (gsl_cdf_ugaussian_Q, (0.5), 0.3085375387259868963622953894, TEST_TOL0); + TEST (gsl_cdf_ugaussian_Q, (0.7), 0.2419636522230730147493504282, TEST_TOL0); + TEST (gsl_cdf_ugaussian_Q, (5.0), 0.0000002866515718791939116737523329, TEST_TOL3); + TEST (gsl_cdf_ugaussian_Q, (10.0), 7.619853024160526065973343257e-24, TEST_TOL3); + TEST (gsl_cdf_ugaussian_Q, (30.0), 4.906713927148187059533809288e-198, TEST_TOL3); + TEST (gsl_cdf_ugaussian_Q, (1e10), 0.0, 0.0); + + TEST (gsl_cdf_ugaussian_Q, (-1e-32), 0.5, TEST_TOL0); + TEST (gsl_cdf_ugaussian_Q, (-1e-16), 0.5000000000000000398942280401, TEST_TOL0); + TEST (gsl_cdf_ugaussian_Q, (-1e-8), 0.5000000039894228040143267129, TEST_TOL0); + TEST (gsl_cdf_ugaussian_Q, (-0.5), 0.6914624612740131036377046105, TEST_TOL0); + TEST (gsl_cdf_ugaussian_Q, (-0.7), 0.7580363477769269852506495717, TEST_TOL0); + TEST (gsl_cdf_ugaussian_Q, (-5.0), 0.9999997133484281208060883262, TEST_TOL0); + TEST (gsl_cdf_ugaussian_Q, (-10.0), 0.9999999999999999999999923801, TEST_TOL0); + TEST (gsl_cdf_ugaussian_Q, (-30.0), 1.000000000000000000000000000, TEST_TOL0); + TEST (gsl_cdf_ugaussian_Q, (-40.0), 1.000000000000000000000000000, TEST_TOL0); + TEST (gsl_cdf_ugaussian_Q, (-1e10), 1.000000000000000000000000000, TEST_TOL0); +} + /* Test values from Abramowitz & Stegun, Handbook of Mathematical + Functions, Table 26.1. Error term is given by dx = dP / Z(x) */ + +void test_ugaussianinv (void) { + TEST (gsl_cdf_ugaussian_Pinv, (0.9999997133), 5.0, 1e-4); + TEST (gsl_cdf_ugaussian_Pinv, (0.9999683288), 4.0, 1e-6); + TEST (gsl_cdf_ugaussian_Pinv, (0.9986501020), 3.0, 1e-8); + TEST (gsl_cdf_ugaussian_Pinv, (0.977249868051821), 2.0, 1e-14); + TEST (gsl_cdf_ugaussian_Pinv, (0.841344746068543), 1.0, TEST_TOL3); + TEST (gsl_cdf_ugaussian_Pinv, (0.691462461274013), 0.5, TEST_TOL2); + TEST (gsl_cdf_ugaussian_Pinv, (0.655421741610324), 0.4, TEST_TOL1); + TEST (gsl_cdf_ugaussian_Pinv, (0.617911422188953), 0.3, TEST_TOL1); + TEST (gsl_cdf_ugaussian_Pinv, (0.579259709439103), 0.2, TEST_TOL1); + TEST (gsl_cdf_ugaussian_Pinv, (0.539827837277029), 0.1, TEST_TOL1); + TEST (gsl_cdf_ugaussian_Pinv, (0.5), 0.0, TEST_TOL0); + TEST (gsl_cdf_ugaussian_Pinv, (4.60172162722971e-1), -0.1, TEST_TOL1); + TEST (gsl_cdf_ugaussian_Pinv, (4.20740290560897e-1), -0.2, TEST_TOL1); + TEST (gsl_cdf_ugaussian_Pinv, (3.82088577811047e-1), -0.3, TEST_TOL1); + TEST (gsl_cdf_ugaussian_Pinv, (3.44578258389676e-1), -0.4, TEST_TOL1); + TEST (gsl_cdf_ugaussian_Pinv, (3.08537538725987e-1), -0.5, TEST_TOL2); + TEST (gsl_cdf_ugaussian_Pinv, (1.58655253931457e-1), -1.0, TEST_TOL3); + TEST (gsl_cdf_ugaussian_Pinv, (2.2750131948179e-2), -2.0, 1e-14); + TEST (gsl_cdf_ugaussian_Pinv, (1.349898e-3), -3.0, 1e-8); + TEST (gsl_cdf_ugaussian_Pinv, (3.16712e-5), -4.0, 1e-6); + TEST (gsl_cdf_ugaussian_Pinv, (2.86648e-7), -5.0, 1e-4); + + TEST (gsl_cdf_ugaussian_Pinv, (7.61985302416052e-24), -10.0, 1e-4); + + TEST (gsl_cdf_ugaussian_Qinv, (7.61985302416052e-24), 10.0, 1e-4); + + TEST (gsl_cdf_ugaussian_Qinv, (2.86648e-7), 5.0, 1e-4); + TEST (gsl_cdf_ugaussian_Qinv, (3.16712e-5), 4.0, 1e-6); + TEST (gsl_cdf_ugaussian_Qinv, (1.349898e-3), 3.0, 1e-8); + TEST (gsl_cdf_ugaussian_Qinv, (2.2750131948179e-2), 2.0, 1e-14); + TEST (gsl_cdf_ugaussian_Qinv, (1.58655253931457e-1), 1.0, TEST_TOL3); + TEST (gsl_cdf_ugaussian_Qinv, (3.08537538725987e-1), 0.5, TEST_TOL2); + TEST (gsl_cdf_ugaussian_Qinv, (3.44578258389676e-1), 0.4, TEST_TOL1); + TEST (gsl_cdf_ugaussian_Qinv, (3.82088577811047e-1), 0.3, TEST_TOL1); + TEST (gsl_cdf_ugaussian_Qinv, (4.20740290560897e-1), 0.2, TEST_TOL1); + TEST (gsl_cdf_ugaussian_Qinv, (4.60172162722971e-1), 0.1, TEST_TOL1); + TEST (gsl_cdf_ugaussian_Qinv, (0.5), 0.0, TEST_TOL0); + TEST (gsl_cdf_ugaussian_Qinv, (0.539827837277029), -0.1, TEST_TOL1); + TEST (gsl_cdf_ugaussian_Qinv, (0.579259709439103), -0.2, TEST_TOL1); + TEST (gsl_cdf_ugaussian_Qinv, (0.617911422188953), -0.3, TEST_TOL1); + TEST (gsl_cdf_ugaussian_Qinv, (0.655421741610324), -0.4, TEST_TOL1); + TEST (gsl_cdf_ugaussian_Qinv, (0.691462461274013), -0.5, TEST_TOL2); + TEST (gsl_cdf_ugaussian_Qinv, (0.841344746068543), -1.0, TEST_TOL3); + TEST (gsl_cdf_ugaussian_Qinv, (0.977249868051821), -2.0, 1e-14); + TEST (gsl_cdf_ugaussian_Qinv, (0.9986501020), -3.0, 1e-8); + TEST (gsl_cdf_ugaussian_Qinv, (0.9999683288), -4.0, 1e-6); + TEST (gsl_cdf_ugaussian_Qinv, (0.9999997133), -5.0, 1e-4); +} + + + /* Tests for exponential cumulative distribution function + Function values computed with PARI, 28 digits precision */ + +void test_exponential (void) +{ + TEST (gsl_cdf_exponential_P, (0.1, 0.7), 1.33122100249818372e-1, TEST_TOL0); + TEST (gsl_cdf_exponential_P, (1e-32, 0.7), 1.42857142857142857e-32, TEST_TOL0); + TEST (gsl_cdf_exponential_P, (1000.0, 0.7), 1.0, TEST_TOL6); + + TEST (gsl_cdf_exponential_Q, (0.1, 0.7), 8.66877899750181628e-1, TEST_TOL0); + TEST (gsl_cdf_exponential_Q, (1e-32, 0.7), 1.0, TEST_TOL0); + TEST (gsl_cdf_exponential_Q, (1000.0, 0.7), 0.0, TEST_TOL6); +} + +void test_exponentialinv (void) { + TEST (gsl_cdf_exponential_Pinv, (0.13, 0.7), 9.74834471334553546e-2, TEST_TOL0); + TEST (gsl_cdf_exponential_Pinv, (1.42e-32, 0.7), 9.94000000000000000e-33, TEST_TOL0); + + TEST (gsl_cdf_exponential_Qinv, (0.86, 0.7), 1.05576022814208545e-1, TEST_TOL0); + TEST (gsl_cdf_exponential_Qinv, (0.99999, 0.7), 7.00003500023333508e-6, TEST_TOL6); +} + + + +void test_exppow (void) +{ + TEST (gsl_cdf_exppow_P, (-1000.0, 0.7, 1.8), 0.0, TEST_TOL6); + TEST (gsl_cdf_exppow_P, (-0.1, 0.7, 1.8), 0.4205349082867515493458053850, TEST_TOL0); + TEST (gsl_cdf_exppow_P, (-1e-32, 0.7, 1.8), 0.4999999999999999999999999999, TEST_TOL0); + + TEST (gsl_cdf_exppow_P, (0.1, 0.7, 1.8), 0.5794650917132484506541946149, TEST_TOL0); + TEST (gsl_cdf_exppow_P, (1e-32, 0.7, 1.8), 0.5, TEST_TOL0); + TEST (gsl_cdf_exppow_P, (1000.0, 0.7, 1.8), 0.9999999999999999999999956212, TEST_TOL6); + + TEST (gsl_cdf_exppow_Q, (-1000.0, 0.7, 1.8), 0.9999999999999999999999956212, TEST_TOL6); + TEST (gsl_cdf_exppow_Q, (-0.1, 0.7, 1.8), 0.5794650917132484506541946149, TEST_TOL0); + TEST (gsl_cdf_exppow_Q, (-1e-32, 0.7, 1.8), 0.5, TEST_TOL0); + + TEST (gsl_cdf_exppow_Q, (0.1, 0.7, 1.8), 0.4205349082867515493458053850, TEST_TOL0); + TEST (gsl_cdf_exppow_Q, (1e-32, 0.7, 1.8), 0.4999999999999999999999999999, TEST_TOL0); + TEST (gsl_cdf_exppow_Q, (1000.0, 0.7, 1.8), 0.0, TEST_TOL6); +} + + + /* Tests for student's T distribution */ + + /* p(x,nu) = (1/2)*(1+sign(x)*betaI(x^2/(nu+x^2),1/2,nu/2)) + q(x,nu) = (1/2)*(1-sign(x)*betaI(x^2/(nu+x^2),1/2,nu/2)) */ + +void test_tdist (void) { + TEST (gsl_cdf_tdist_P, (0.0, 1.0), 0.5, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (1e-100, 1.0), 0.5, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (0.001, 1.0), 5.00318309780080559e-1, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (0.01, 1.0), 5.03182992764908255e-1, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (0.1, 1.0), 5.31725517430553569e-1, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (0.325, 1.0), 6.00023120032852123e-1, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (1.0, 1.0), 0.75000000000000000e0, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (1.5, 1.0), 8.12832958189001183e-1, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (2.0, 1.0), 8.52416382349566726e-1, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (10.0, 1.0), 9.68274482569446430e-1, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (20.0, 1.0), 9.84097748743823625e-1, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (100.0, 1.0), 9.96817007235091745e-1, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (1000.0, 1.0), 9.99681690219919441e-1, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (10000.0, 1.0), 9.99968169011487724e-1, TEST_TOL6); + + TEST (gsl_cdf_tdist_Q, (0.0, 1.0), 0.5, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (1e-100, 1.0), 0.5, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (0.001, 1.0), 4.99681690219919441e-1, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (0.01, 1.0), 4.96817007235091745e-1, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (0.1, 1.0), 4.68274482569446430e-1, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (0.325, 1.0), 3.99976879967147876e-1, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (1.0, 1.0), 2.5e-1, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (1.5, 1.0), 1.87167041810998816e-1, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (2.0, 1.0), 1.47583617650433274e-1, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (10.0, 1.0), 3.17255174305535695e-2, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (20.0, 1.0), 1.59022512561763752e-2, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (100.0, 1.0), 3.18299276490825515e-3, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (1000.0, 1.0), 3.18309780080558939e-4, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (10000.0, 1.0), 3.18309885122757724e-5, TEST_TOL6); + + TEST (gsl_cdf_tdist_P, (-1e-100, 1.0), 0.5, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (-0.001, 1.0), 4.99681690219919441e-1, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (-0.01, 1.0), 4.96817007235091744e-1, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (-0.1, 1.0), 4.68274482569446430e-1, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (-0.325, 1.0), 3.99976879967147876e-1, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (-1.0, 1.0), 0.25, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (-1.5, 1.0), 1.87167041810998816e-1, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (-2.0, 1.0), 1.47583617650433274e-1, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (-10.0, 1.0), 3.17255174305535695e-2, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (-20.0, 1.0), 1.59022512561763751e-2, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (-100.0, 1.0), 3.18299276490825514e-3, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (-1000.0, 1.0), 3.18309780080558938e-4, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (-10000.0, 1.0), 3.18309885122757724e-5, TEST_TOL6); + + TEST (gsl_cdf_tdist_Q, (-1e-100, 1.0), 0.5, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (-0.001, 1.0), 5.00318309780080559e-1, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (-0.01, 1.0), 5.03182992764908255e-1, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (-0.1, 1.0), 5.31725517430553570e-1, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (-0.325, 1.0), 6.00023120032852124e-1, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (-1.0, 1.0), 7.5e-1, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (-1.5, 1.0), 8.12832958189001184e-1, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (-2.0, 1.0), 8.52416382349566726e-1, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (-10.0, 1.0), 9.68274482569446430e-1, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (-20.0, 1.0), 9.84097748743823625e-1, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (-100.0, 1.0), 9.96817007235091745e-1, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (-1000.0, 1.0), 9.99681690219919441e-1, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (-10000.0, 1.0), 9.99968169011487724e-1, TEST_TOL6); + + TEST (gsl_cdf_tdist_P, (0.0, 2.0), 5.00000000000000000e-01, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (1e-100, 2.0), 5.00000000000000000e-01, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (0.001, 2.0), 5.00353553302204959e-01, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (0.01, 2.0), 5.03535445520899514e-01, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (0.1, 2.0), 5.35267280792929913e-01, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (0.325, 2.0), 6.11985772746873767e-01, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (1.0, 2.0), 7.88675134594812882e-01, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (1.5, 2.0), 8.63803437554499460e-01, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (2.0, 2.0), 9.08248290463863016e-01, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (10.0, 2.0), 9.95073771488337154e-01, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (20.0, 2.0), 9.98754668053816452e-01, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (100.0, 2.0), 9.99950007498750219e-01, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (1000.0, 2.0), 9.99999500000749945e-01, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (10000.0, 2.0), 9.999999950000000739e-01, TEST_TOL6); + + TEST (gsl_cdf_tdist_Q, (0.0, 2.0), 5.00000000000000000e-01, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (1e-100, 2.0), 5.00000000000000000e-01, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (0.001, 2.0), 4.99646446697795041e-1, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (0.01, 2.0), 4.96464554479100486e-1, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (0.1, 2.0), 4.64732719207070087e-1, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (0.325, 2.0), 3.88014227253126233e-1, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (1.0, 2.0), 2.11324865405187118e-1, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (1.5, 2.0), 1.36196562445500540e-1, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (2.0, 2.0), 9.17517095361369836e-2, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (10.0, 2.0), 4.92622851166284542e-3, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (20.0, 2.0), 1.24533194618354849e-3, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (100.0, 2.0), 4.99925012497812894e-5, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (1000.0, 2.0), 4.99999250001249998e-7, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (10000.0, 2.0), 4.99999992500000125e-9, TEST_TOL6); + + TEST (gsl_cdf_tdist_P, (-1e-100, 2.0), 5.00000000000000000e-01, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (-0.001, 2.0), 4.99646446697795041e-01, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (-0.01, 2.0), 4.96464554479100486e-01, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (-0.1, 2.0), 4.64732719207070087e-01, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (-0.325, 2.0), 3.88014227253126233e-01, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (-1.0, 2.0), 2.11324865405187118e-01, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (-1.5, 2.0), 1.36196562445500540e-01, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (-2.0, 2.0), 9.17517095361369836e-02, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (-10.0, 2.0), 4.92622851166284542e-03, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (-20.0, 2.0), 1.24533194618354849e-03, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (-100.0, 2.0), 4.99925012497812894e-05, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (-1000.0, 2.0), 4.99999250001249998e-07, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (-10000.0, 2.0), 4.99999992500000125e-09, TEST_TOL6); + + TEST (gsl_cdf_tdist_Q, (-1e-100, 2.0), 5.00000000000000000e-01, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (-0.001, 2.0), 5.00353553302204959e-1, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (-0.01, 2.0), 5.03535445520899514e-1, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (-0.1, 2.0), 5.35267280792929913e-1, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (-0.325, 2.0), 6.11985772746873767e-1, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (-1.0, 2.0), 7.88675134594812882e-1, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (-1.5, 2.0), 8.63803437554499460e-1, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (-2.0, 2.0), 9.08248290463863016e-1, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (-10.0, 2.0), 9.95073771488337155e-1, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (-20.0, 2.0), 9.98754668053816452e-1, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (-100.0, 2.0), 9.99950007498750219e-1, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (-1000.0, 2.0), 9.99999500000749999e-1, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (-10000.0, 2.0), 9.99999995000000075e-1, TEST_TOL6); + + TEST (gsl_cdf_tdist_P, (0.0, 300.0), 5.00000000000000000e-01, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (1e-100, 300.0), 5.00000000000000000e-01, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (0.001, 300.0), 5.00398609900942949e-01, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (0.01, 300.0), 5.03986033020559088e-01, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (0.1, 300.0), 5.39794441177768194e-01, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (0.325, 300.0), 6.27296201542523812e-01, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (1.0, 300.0), 8.40941797784686861e-01, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (1.5, 300.0), 9.32666983425369137e-01, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (2.0, 300.0), 9.76799239508425455e-01, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (10.0, 300.0), 1.00000000000000000e+00, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (20.0, 300.0), 1.00000000000000000e+00, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (100.0, 300.0), 1.00000000000000000e+00, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (1000.0, 300.0), 1.00000000000000000e+00, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (10000.0, 300.0), 1.00000000000000000e+00, TEST_TOL6); + + TEST (gsl_cdf_tdist_Q, (0.0, 300.0), 5.00000000000000000e-01, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (1e-100, 300.0), 5.00000000000000000e-01, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (0.001, 300.0), 4.99601390099057051e-1, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (0.01, 300.0), 4.96013966979440912e-1, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (0.1, 300.0), 4.60205558822231806e-1, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (0.325, 300.0), 3.72703798457476188e-1, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (1.0, 300.0), 1.59058202215313138e-1, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (1.5, 300.0), 6.73330165746308628e-2, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (2.0, 300.0), 2.32007604915745452e-2, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (10.0, 300.0), 8.279313677e-21, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (20.0, 300.0), 1.93159812815803978e-57, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (100.0, 300.0), 1.02557519997736154e-232, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (1000.0, 300.0), 0.00000000000000000e+00, 0.0); + TEST (gsl_cdf_tdist_Q, (10000.0, 300.0), 0.00000000000000000e+00, 0.0); + + TEST (gsl_cdf_tdist_P, (-1e-100, 300.0), 5.00000000000000000e-01, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (-0.001, 300.0), 4.99601390099057051e-01, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (-0.01, 300.0), 4.96013966979440912e-01, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (-0.1, 300.0), 4.60205558822231806e-01, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (-0.325, 300.0), 3.72703798457476188e-01, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (-1.0, 300.0), 1.59058202215313138e-01, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (-1.5, 300.0), 6.73330165746308628e-02, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (-2.0, 300.0), 2.32007604915745452e-02, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (-10.0, 300.0), 8.279313675556272534e-21, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (-20.0, 300.0), 1.93159812815803978e-57, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (-100.0, 300.0), 1.02557519997736154e-232, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (-1000.0, 300.0), 0.0, 0.0); + TEST (gsl_cdf_tdist_P, (-10000.0, 300.0), 0.0, 0.0); + + TEST (gsl_cdf_tdist_Q, (-1e-100, 300.0), 5.00000000000000000e-01, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (-0.001, 300.0), 5.00398609900942949e-1, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (-0.01, 300.0), 5.03986033020559088e-1, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (-0.1, 300.0), 5.39794441177768194e-1, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (-0.325, 300.0), 6.27296201542523812e-1, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (-1.0, 300.0), 8.40941797784686862e-1, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (-1.5, 300.0), 9.32666983425369137e-1, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (-2.0, 300.0), 9.76799239508425455e-1, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (-10.0, 300.0), 1.000000000000000000e0, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (-20.0, 300.0), 1.0, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (-100.0, 300.0), 1.0, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (-1000.0, 300.0), 1.0, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (-10000.0, 300.0), 1.0, TEST_TOL6); +} + + /* Tests for F distribution */ + + /* p(x, nu1, nu2) := betaI(1 / (1 + (nu2 / nu1) / x), nu1 / 2, nu2 / 2) */ + +void test_fdist (void) { + TEST (gsl_cdf_fdist_P, (0.0, 1.2, 1.3), 0.0, 0.0); + TEST (gsl_cdf_fdist_P, (1e-100, 1.2, 1.3), 6.98194275525039002e-61, TEST_TOL6); + TEST (gsl_cdf_fdist_P, (0.001, 1.2, 1.3), 1.10608485860238564e-2, TEST_TOL6); + TEST (gsl_cdf_fdist_P, (0.01, 1.2, 1.3), 4.38636757068313850e-2, TEST_TOL6); + TEST (gsl_cdf_fdist_P, (0.1, 1.2, 1.3), 1.68242392712840734e-1, TEST_TOL6); + TEST (gsl_cdf_fdist_P, (0.325, 1.2, 1.3), 3.14130045246195449e-1, TEST_TOL6); + TEST (gsl_cdf_fdist_P, (1.0, 1.2, 1.3), 5.09630779074755253e-01, TEST_TOL6); + TEST (gsl_cdf_fdist_P, (1.5, 1.2, 1.3), 5.83998640641553852e-1, TEST_TOL6); + TEST (gsl_cdf_fdist_P, (2.0, 1.2, 1.3), 6.34733581351938787e-1, TEST_TOL6); + TEST (gsl_cdf_fdist_P, (10.0, 1.2, 1.3), 8.48446237879200975e-1, TEST_TOL6); + TEST (gsl_cdf_fdist_P, (20.0, 1.2, 1.3), 9.00987726336875039e-1, TEST_TOL6); + TEST (gsl_cdf_fdist_P, (100.0, 1.2, 1.3), 9.64489127047688435e-1, TEST_TOL6); + TEST (gsl_cdf_fdist_P, (1000.0, 1.2, 1.3), 9.92012051694116388e-1, TEST_TOL6); + TEST (gsl_cdf_fdist_P, (10000.0, 1.2, 1.3), 9.98210862808842585e-1, TEST_TOL6); + + TEST (gsl_cdf_fdist_Q, (0.0, 1.2, 1.3), 1.0, TEST_TOL6); + TEST (gsl_cdf_fdist_Q, (1e-100, 1.2, 1.3), 1.0, TEST_TOL6); + TEST (gsl_cdf_fdist_Q, (0.001, 1.2, 1.3), 9.88939151413976144e-1, TEST_TOL6); + TEST (gsl_cdf_fdist_Q, (0.01, 1.2, 1.3), 9.56136324293168615e-1, TEST_TOL6); + TEST (gsl_cdf_fdist_Q, (0.1, 1.2, 1.3), 8.31757607287159265e-1, TEST_TOL6); + TEST (gsl_cdf_fdist_Q, (0.325, 1.2, 1.3), 6.85869954753804551e-1, TEST_TOL6); + TEST (gsl_cdf_fdist_Q, (1.0, 1.2, 1.3), 4.90369220925244747e-1, TEST_TOL6); + TEST (gsl_cdf_fdist_Q, (1.5, 1.2, 1.3), 4.16001359358446148e-1, TEST_TOL6); + TEST (gsl_cdf_fdist_Q, (2.0, 1.2, 1.3), 3.65266418648061213e-1, TEST_TOL6); + TEST (gsl_cdf_fdist_Q, (10.0, 1.2, 1.3), 1.51553762120799025e-1, TEST_TOL6); + TEST (gsl_cdf_fdist_Q, (20.0, 1.2, 1.3), 9.90122736631249612e-2, TEST_TOL6); + TEST (gsl_cdf_fdist_Q, (100.0, 1.2, 1.3), 3.55108729523115643e-2, TEST_TOL6); + TEST (gsl_cdf_fdist_Q, (1000.0, 1.2, 1.3), 7.98794830588361109e-3, TEST_TOL6); + TEST (gsl_cdf_fdist_Q, (10000.0, 1.2, 1.3), 1.7891371911574145e-3, TEST_TOL6); + + + /* computed with gp-pari */ + + TEST (gsl_cdf_fdist_P, (3.479082213465832574, 1, 4040712), 0.93785072763723411967, TEST_TOL6); + TEST (gsl_cdf_fdist_P, (3.002774644786533109, 1, 4040712), 0.91687787379476055771, TEST_TOL6); + TEST (gsl_cdf_fdist_P, (3.000854441173130827, 1, 4040712), 0.91677930719813578619, TEST_TOL6); + TEST (gsl_cdf_fdist_P, (3.000064021622133037, 1, 4040712), 0.9167386972447996480399, TEST_TOL6); + + TEST (gsl_cdf_fdist_P, (0.0, 500.0, 1.3), 0.0, 0.0); + TEST (gsl_cdf_fdist_P, (1e-100, 500.0, 1.3), 0.0, 0.0); + + TEST (gsl_cdf_fdist_P, (0.001, 500.0, 1.3), 9.83434460393304765e-141, TEST_TOL6); + TEST (gsl_cdf_fdist_P, (0.01, 500.0, 1.3), 1.45915624888550014e-26, TEST_TOL6); + TEST (gsl_cdf_fdist_P, (0.1, 500.0, 1.3), 5.89976509619688165e-4, TEST_TOL6); + TEST (gsl_cdf_fdist_P, (0.325, 500.0, 1.3), 6.86110486051542533e-2, TEST_TOL6); + TEST (gsl_cdf_fdist_P, (1.0, 500.0, 1.3), 3.38475053806404615e-1, TEST_TOL6); + TEST (gsl_cdf_fdist_P, (1.5, 500.0, 1.3), 4.52016245247457422e-1, TEST_TOL6); + TEST (gsl_cdf_fdist_P, (2.0, 500.0, 1.3), 5.27339068937388798e-1, TEST_TOL6); + TEST (gsl_cdf_fdist_P, (10.0, 500.0, 1.3), 8.16839628578413905e-1, TEST_TOL6); + TEST (gsl_cdf_fdist_P, (20.0, 500.0, 1.3), 8.81784623056911406e-1, TEST_TOL6); + TEST (gsl_cdf_fdist_P, (100.0, 500.0, 1.3), 9.58045057204221295e-1, TEST_TOL6); + TEST (gsl_cdf_fdist_P, (1000.0, 500.0, 1.3), 9.90585749380655275e-1, TEST_TOL6); + TEST (gsl_cdf_fdist_P, (10000.0, 500.0, 1.3), 9.97891924831461387e-1, TEST_TOL6); + + TEST (gsl_cdf_fdist_Q, (0.0, 500.0, 1.3), 1.0, TEST_TOL6); + TEST (gsl_cdf_fdist_Q, (1e-100, 500.0, 1.3), 1.0, TEST_TOL6); + + TEST (gsl_cdf_fdist_Q, (0.001, 500.0, 1.3), 1.0, TEST_TOL6); + TEST (gsl_cdf_fdist_Q, (0.01, 500.0, 1.3), 1.0, TEST_TOL6); + TEST (gsl_cdf_fdist_Q, (0.1, 500.0, 1.3), 9.99410023490380312e-1, TEST_TOL6); + TEST (gsl_cdf_fdist_Q, (0.325, 500.0, 1.3), 9.31388951394845747e-1, TEST_TOL6); + TEST (gsl_cdf_fdist_Q, (1.0, 500.0, 1.3), 6.61524946193595385e-1, TEST_TOL6); + TEST (gsl_cdf_fdist_Q, (1.5, 500.0, 1.3), 5.47983754752542572e-1, TEST_TOL6); + TEST (gsl_cdf_fdist_Q, (2.0, 500.0, 1.3), 4.72660931062611202e-1, TEST_TOL6); + TEST (gsl_cdf_fdist_Q, (10.0, 500.0, 1.3), 1.83160371421586096e-1, TEST_TOL6); + TEST (gsl_cdf_fdist_Q, (20.0, 500.0, 1.3), 1.18215376943088595e-1, TEST_TOL6); + TEST (gsl_cdf_fdist_Q, (100.0, 500.0, 1.3), 4.19549427957787016e-2, TEST_TOL6); + TEST (gsl_cdf_fdist_Q, (1000.0, 500.0, 1.3), 9.41425061934473424e-3, TEST_TOL6); + TEST (gsl_cdf_fdist_Q, (10000.0, 500.0, 1.3), 2.10807516853862603e-3, TEST_TOL6); + + TEST (gsl_cdf_fdist_P, (0.0, 1.2, 500.0), 0.0, 0.0); + TEST (gsl_cdf_fdist_P, (1e-100, 1.2, 500.0), 8.23342055585482999e-61, TEST_TOL6); + TEST (gsl_cdf_fdist_P, (0.001, 1.2, 500.0), 1.30461496441289529e-2, TEST_TOL6); + TEST (gsl_cdf_fdist_P, (0.01, 1.2, 500.0), 5.18324224608033294e-2, TEST_TOL6); + TEST (gsl_cdf_fdist_P, (0.1, 1.2, 500.0), 2.02235101716076289e-1, TEST_TOL6); + TEST (gsl_cdf_fdist_P, (0.325, 1.2, 500.0), 3.90502983219393749e-1, TEST_TOL6); + TEST (gsl_cdf_fdist_P, (1.0, 1.2, 500.0), 6.67656191574653619e-1, TEST_TOL6); + TEST (gsl_cdf_fdist_P, (1.5, 1.2, 500.0), 7.75539230271467054e-1, TEST_TOL6); + TEST (gsl_cdf_fdist_P, (2.0, 1.2, 500.0), 8.45209114904613705e-1, TEST_TOL6); + TEST (gsl_cdf_fdist_P, (10.0, 1.2, 500.0), 9.99168017659120988e-1, TEST_TOL6); + TEST (gsl_cdf_fdist_P, (20.0, 1.2, 500.0), 9.99998005738371669e-1, TEST_TOL6); + TEST (gsl_cdf_fdist_P, (100.0, 1.2, 500.0), 1.0, TEST_TOL6); + TEST (gsl_cdf_fdist_P, (1000.0, 1.2, 500.0), 1.0, TEST_TOL6); + TEST (gsl_cdf_fdist_P, (10000.0, 1.2, 500.0), 1.0, TEST_TOL6); + + TEST (gsl_cdf_fdist_Q, (0.0, 1.2, 500.0), 1.0, TEST_TOL6); + TEST (gsl_cdf_fdist_Q, (1e-100, 1.2, 500.0), 1.0, TEST_TOL6); + TEST (gsl_cdf_fdist_Q, (0.001, 1.2, 500.0), 9.86953850355871047e-1, TEST_TOL6); + TEST (gsl_cdf_fdist_Q, (0.01, 1.2, 500.0), 9.48167577539196671e-1, TEST_TOL6); + TEST (gsl_cdf_fdist_Q, (0.1, 1.2, 500.0), 7.97764898283923711e-1, TEST_TOL6); + TEST (gsl_cdf_fdist_Q, (0.325, 1.2, 500.0), 6.09497016780606251e-1, TEST_TOL6); + TEST (gsl_cdf_fdist_Q, (1.0, 1.2, 500.0), 3.32343808425346381e-1, TEST_TOL6); + TEST (gsl_cdf_fdist_Q, (1.5, 1.2, 500.0), 2.24460769728532946e-1, TEST_TOL6); + TEST (gsl_cdf_fdist_Q, (2.0, 1.2, 500.0), 1.54790885095386295e-1, TEST_TOL6); + TEST (gsl_cdf_fdist_Q, (10.0, 1.2, 500.0), 8.3198234087901168e-4, TEST_TOL6); + TEST (gsl_cdf_fdist_Q, (20.0, 1.2, 500.0), 1.99426162833131e-6, TEST_TOL6); + TEST (gsl_cdf_fdist_Q, (100.0, 1.2, 500.0), 6.23302662288217117e-25, TEST_TOL6); + TEST (gsl_cdf_fdist_Q, (1000.0, 1.2, 500.0), 1.14328577259666930e-134, TEST_TOL6); + TEST (gsl_cdf_fdist_Q, (10000.0, 1.2, 500.0), 0.0, 0.0); + + + TEST (gsl_cdf_fdist_P, (0.0, 200.0, 500.0), 0.0, 0.0); + TEST (gsl_cdf_fdist_P, (1e-100, 200.0, 500.0), 0.0, 0.0); + TEST (gsl_cdf_fdist_P, (0.001, 200.0, 500.0), 4.09325080403669893e-251, TEST_TOL6); + TEST (gsl_cdf_fdist_P, (0.01, 200.0, 500.0), 1.17894325419628688e-151, TEST_TOL6); + TEST (gsl_cdf_fdist_P, (0.1, 200.0, 500.0), 5.92430940796861258e-57, TEST_TOL6); + TEST (gsl_cdf_fdist_P, (0.325, 200.0, 500.0), 3.18220452357263554e-18, TEST_TOL6); + TEST (gsl_cdf_fdist_P, (1.0, 200.0, 500.0), 5.06746326121168266e-1, TEST_TOL6); + TEST (gsl_cdf_fdist_P, (1.5, 200.0, 500.0), 9.99794175718712438e-1, TEST_TOL6); + TEST (gsl_cdf_fdist_P, (2.0, 200.0, 500.0), 9.99999999528236152e-1, TEST_TOL6); + TEST (gsl_cdf_fdist_P, (10.0, 200.0, 500.0), 1.0, TEST_TOL6); + TEST (gsl_cdf_fdist_P, (20.0, 200.0, 500.0), 1.0, TEST_TOL6); + TEST (gsl_cdf_fdist_P, (100.0, 200.0, 500.0), 1.0, TEST_TOL6); + TEST (gsl_cdf_fdist_P, (1000.0, 200.0, 500.0), 1.0, TEST_TOL6); + TEST (gsl_cdf_fdist_P, (10000.0, 200.0, 500.0), 1.0, TEST_TOL6); + + TEST (gsl_cdf_fdist_Q, (0.0, 200.0, 500.0), 1.0, TEST_TOL6); + TEST (gsl_cdf_fdist_Q, (1e-100, 200.0, 500.0), 1.0, TEST_TOL6); + TEST (gsl_cdf_fdist_Q, (0.001, 200.0, 500.0), 1.0, TEST_TOL6); + TEST (gsl_cdf_fdist_Q, (0.01, 200.0, 500.0), 1.0, TEST_TOL6); + TEST (gsl_cdf_fdist_Q, (0.1, 200.0, 500.0), 1.0, TEST_TOL6); + TEST (gsl_cdf_fdist_Q, (0.325, 200.0, 500.0), 9.99999999999999997e-1, TEST_TOL6); + TEST (gsl_cdf_fdist_Q, (1.0, 200.0, 500.0), 4.93253673878831734e-1, TEST_TOL6); + TEST (gsl_cdf_fdist_Q, (1.5, 200.0, 500.0), 2.05824281287561795e-4, TEST_TOL6); + TEST (gsl_cdf_fdist_Q, (2.0, 200.0, 500.0), 4.71763848371410786e-10, TEST_TOL6); + TEST (gsl_cdf_fdist_Q, (10.0, 200.0, 500.0), 5.98048337181948436e-96, TEST_TOL6); + TEST (gsl_cdf_fdist_Q, (20.0, 200.0, 500.0), 2.92099265879979502e-155, TEST_TOL6); + TEST (gsl_cdf_fdist_Q, (1000.0, 200.0, 500.0), 0.0, 0.0); + TEST (gsl_cdf_fdist_Q, (10000.0, 200.0, 500.0), 0.0, 0.0); +} + +void test_finv (void) { + TEST (gsl_cdf_fdist_Pinv, (0.0, 1.2, 1.3), 0.0, 0.0); + TEST (gsl_cdf_fdist_Pinv, ( 6.98194275525039002e-61, 1.2, 1.3), 1e-100, TEST_TOL6); + TEST (gsl_cdf_fdist_Pinv, ( 1.10608485860238564e-2, 1.2, 1.3), 0.001, TEST_TOL6); + TEST (gsl_cdf_fdist_Pinv, ( 4.38636757068313850e-2, 1.2, 1.3), 0.01, TEST_TOL6); + TEST (gsl_cdf_fdist_Pinv, ( 1.68242392712840734e-1, 1.2, 1.3), 0.1, TEST_TOL6); + TEST (gsl_cdf_fdist_Pinv, ( 3.14130045246195449e-1, 1.2, 1.3), 0.325, TEST_TOL6); + TEST (gsl_cdf_fdist_Pinv, ( 5.09630779074755253e-01, 1.2, 1.3), 1.0, TEST_TOL6); + TEST (gsl_cdf_fdist_Pinv, ( 5.83998640641553852e-1, 1.2, 1.3), 1.5, TEST_TOL6); + TEST (gsl_cdf_fdist_Pinv, ( 6.34733581351938787e-1, 1.2, 1.3), 2.0, TEST_TOL6); + TEST (gsl_cdf_fdist_Pinv, ( 8.48446237879200975e-1, 1.2, 1.3), 10.0, TEST_TOL6); + TEST (gsl_cdf_fdist_Pinv, ( 9.00987726336875039e-1, 1.2, 1.3), 20.0, TEST_TOL6); + TEST (gsl_cdf_fdist_Pinv, ( 9.64489127047688435e-1, 1.2, 1.3), 100.0, TEST_TOL6); + TEST (gsl_cdf_fdist_Pinv, ( 9.92012051694116388e-1, 1.2, 1.3), 1000.0, TEST_TOL6); + TEST (gsl_cdf_fdist_Pinv, ( 9.98210862808842585e-1, 1.2, 1.3), 10000.0, TEST_TOL6); + + TEST (gsl_cdf_fdist_Qinv, ( 1.0, 1.2, 1.3), 0.0, TEST_TOL6); + TEST (gsl_cdf_fdist_Qinv, ( 9.88939151413976144e-1, 1.2, 1.3), 0.001, TEST_TOL6); + TEST (gsl_cdf_fdist_Qinv, ( 9.56136324293168615e-1, 1.2, 1.3), 0.01, TEST_TOL6); + TEST (gsl_cdf_fdist_Qinv, ( 8.31757607287159265e-1, 1.2, 1.3), 0.1, TEST_TOL6); + TEST (gsl_cdf_fdist_Qinv, ( 6.85869954753804551e-1, 1.2, 1.3), 0.325, TEST_TOL6); + TEST (gsl_cdf_fdist_Qinv, ( 4.90369220925244747e-1, 1.2, 1.3), 1.0, TEST_TOL6); + TEST (gsl_cdf_fdist_Qinv, ( 4.16001359358446148e-1, 1.2, 1.3), 1.5, TEST_TOL6); + TEST (gsl_cdf_fdist_Qinv, ( 3.65266418648061213e-1, 1.2, 1.3), 2.0, TEST_TOL6); + TEST (gsl_cdf_fdist_Qinv, ( 1.51553762120799025e-1, 1.2, 1.3), 10.0, TEST_TOL6); + TEST (gsl_cdf_fdist_Qinv, ( 9.90122736631249612e-2, 1.2, 1.3), 20.0, TEST_TOL6); + TEST (gsl_cdf_fdist_Qinv, ( 3.55108729523115643e-2, 1.2, 1.3), 100.0, TEST_TOL6); + TEST (gsl_cdf_fdist_Qinv, ( 7.98794830588361109e-3, 1.2, 1.3), 1000.0, TEST_TOL6); + TEST (gsl_cdf_fdist_Qinv, ( 1.7891371911574145e-3, 1.2, 1.3), 10000.0, TEST_TOL6); + + + TEST (gsl_cdf_fdist_Pinv, ( 0.0, 500.0, 1.3), 0.0, 0.0); + + TEST (gsl_cdf_fdist_Pinv, ( 9.83434460393304765e-141, 500.0, 1.3), 0.001, TEST_TOL6); + TEST (gsl_cdf_fdist_Pinv, ( 1.45915624888550014e-26, 500.0, 1.3), 0.01, TEST_TOL6); + TEST (gsl_cdf_fdist_Pinv, ( 5.89976509619688165e-4, 500.0, 1.3), 0.1, TEST_TOL6); + TEST (gsl_cdf_fdist_Pinv, ( 6.86110486051542533e-2, 500.0, 1.3), 0.325, TEST_TOL6); + TEST (gsl_cdf_fdist_Pinv, ( 3.38475053806404615e-1, 500.0, 1.3), 1.0, TEST_TOL6); + TEST (gsl_cdf_fdist_Pinv, ( 4.52016245247457422e-1, 500.0, 1.3), 1.5, TEST_TOL6); + TEST (gsl_cdf_fdist_Pinv, ( 5.27339068937388798e-1, 500.0, 1.3), 2.0, TEST_TOL6); + TEST (gsl_cdf_fdist_Pinv, ( 8.16839628578413905e-1, 500.0, 1.3), 10.0, TEST_TOL6); + TEST (gsl_cdf_fdist_Pinv, ( 8.81784623056911406e-1, 500.0, 1.3), 20.0, TEST_TOL6); + TEST (gsl_cdf_fdist_Pinv, ( 9.58045057204221295e-1, 500.0, 1.3), 100.0, TEST_TOL6); + TEST (gsl_cdf_fdist_Pinv, ( 9.90585749380655275e-1, 500.0, 1.3), 1000.0, TEST_TOL6); + TEST (gsl_cdf_fdist_Pinv, ( 9.97891924831461387e-1, 500.0, 1.3), 10000.0, TEST_TOL6); + + TEST (gsl_cdf_fdist_Qinv, ( 1.0, 500.0, 1.3), 0.0, TEST_TOL6); + + /* + * The algorithm currently implemented in gsl_cdf_fdist_Qinv and Pinv + * are not accurate for very large degrees of freedom, so the tests + * here are commented out. Another algorithm more suitable for + * these extreme values might pass these tests. + */ + + TEST (gsl_cdf_fdist_Qinv, ( 9.99410023490380312e-1, 500.0, 1.3), 0.1, TEST_TOL6); + TEST (gsl_cdf_fdist_Qinv, ( 9.31388951394845747e-1, 500.0, 1.3), 0.325, TEST_TOL6); + TEST (gsl_cdf_fdist_Qinv, ( 6.61524946193595385e-1, 500.0, 1.3), 1.0, TEST_TOL6); + TEST (gsl_cdf_fdist_Qinv, ( 5.47983754752542572e-1, 500.0, 1.3), 1.5, TEST_TOL6); + TEST (gsl_cdf_fdist_Qinv, ( 4.72660931062611202e-1, 500.0, 1.3), 2.0, TEST_TOL6); + TEST (gsl_cdf_fdist_Qinv, ( 1.83160371421586096e-1, 500.0, 1.3), 10.0, TEST_TOL6); + TEST (gsl_cdf_fdist_Qinv, ( 1.18215376943088595e-1, 500.0, 1.3), 20.0, TEST_TOL6); + TEST (gsl_cdf_fdist_Qinv, ( 4.19549427957787016e-2, 500.0, 1.3), 100.0, TEST_TOL6); + TEST (gsl_cdf_fdist_Qinv, ( 9.41425061934473424e-3, 500.0, 1.3), 1000.0, TEST_TOL6); + TEST (gsl_cdf_fdist_Qinv, ( 2.10807516853862603e-3, 500.0, 1.3), 10000.0, TEST_TOL6); + + TEST (gsl_cdf_fdist_Pinv, ( 0.0, 1.2, 500.0), 0.0, 0.0); + TEST (gsl_cdf_fdist_Pinv, ( 8.23342055585482999e-61, 1.2, 500.0), 1e-100, TEST_TOL6); + TEST (gsl_cdf_fdist_Pinv, ( 1.30461496441289529e-2, 1.2, 500.0), 0.001, TEST_TOL6); + TEST (gsl_cdf_fdist_Pinv, ( 5.18324224608033294e-2, 1.2, 500.0), 0.01, TEST_TOL6); + TEST (gsl_cdf_fdist_Pinv, ( 2.02235101716076289e-1, 1.2, 500.0), 0.1, TEST_TOL6); + TEST (gsl_cdf_fdist_Pinv, ( 3.90502983219393749e-1, 1.2, 500.0), 0.325, TEST_TOL6); + TEST (gsl_cdf_fdist_Pinv, ( 6.67656191574653619e-1, 1.2, 500.0), 1.0, TEST_TOL6); + TEST (gsl_cdf_fdist_Pinv, ( 7.75539230271467054e-1, 1.2, 500.0), 1.5, TEST_TOL6); + TEST (gsl_cdf_fdist_Pinv, ( 8.45209114904613705e-1, 1.2, 500.0), 2.0, TEST_TOL6); + TEST (gsl_cdf_fdist_Pinv, ( 9.99168017659120988e-1, 1.2, 500.0), 10.0, TEST_TOL6); + TEST (gsl_cdf_fdist_Pinv, ( 9.99998005738371669e-1, 1.2, 500.0), 20.0, TEST_TOL6); + TEST (gsl_cdf_fdist_Pinv, ( 1.0, 1.2, 500.0), GSL_POSINF, TEST_TOL6); + TEST (gsl_cdf_fdist_Pinv, ( 1.0, 1.2, 500.0), GSL_POSINF, TEST_TOL6); + TEST (gsl_cdf_fdist_Pinv, ( 1.0, 1.2, 500.0), GSL_POSINF, TEST_TOL6); + + TEST (gsl_cdf_fdist_Qinv, ( 1.0, 1.2, 500.0), 0.0, TEST_TOL6); + TEST (gsl_cdf_fdist_Qinv, ( 9.86953850355871047e-1, 1.2, 500.0), 0.001, TEST_TOL6); + TEST (gsl_cdf_fdist_Qinv, ( 9.48167577539196671e-1, 1.2, 500.0), 0.01, TEST_TOL6); + TEST (gsl_cdf_fdist_Qinv, ( 7.97764898283923711e-1, 1.2, 500.0), 0.1, TEST_TOL6); + TEST (gsl_cdf_fdist_Qinv, ( 6.09497016780606251e-1, 1.2, 500.0), 0.325, TEST_TOL6); + TEST (gsl_cdf_fdist_Qinv, ( 3.32343808425346381e-1, 1.2, 500.0), 1.0, TEST_TOL6); + TEST (gsl_cdf_fdist_Qinv, ( 2.24460769728532946e-1, 1.2, 500.0), 1.5, TEST_TOL6); + TEST (gsl_cdf_fdist_Qinv, ( 1.54790885095386295e-1, 1.2, 500.0), 2.0, TEST_TOL6); + TEST (gsl_cdf_fdist_Qinv, ( 8.3198234087901168e-4, 1.2, 500.0), 10.0, TEST_TOL6); + TEST (gsl_cdf_fdist_Qinv, ( 1.99426162833131e-6, 1.2, 500.0), 20.0, TEST_TOL6); + TEST (gsl_cdf_fdist_Qinv, ( 6.23302662288217117e-25, 1.2, 500.0), 100.0, TEST_TOL6); + TEST (gsl_cdf_fdist_Qinv, ( 1.14328577259666930e-134, 1.2, 500.0), 1000.0, TEST_TOL6); + TEST (gsl_cdf_fdist_Qinv, ( 0.0, 1.2, 500.0), GSL_POSINF, 0.0); + + TEST (gsl_cdf_fdist_Pinv, ( 0.0, 200.0, 500.0), 0.0, 0.0); + TEST (gsl_cdf_fdist_Pinv, ( 4.09325080403669893e-251, 200.0, 500.0), 0.001, TEST_TOL6); + TEST (gsl_cdf_fdist_Pinv, ( 1.17894325419628688e-151, 200.0, 500.0), 0.01, TEST_TOL6); + TEST (gsl_cdf_fdist_Pinv, ( 5.92430940796861258e-57, 200.0, 500.0), 0.1, TEST_TOL6); + TEST (gsl_cdf_fdist_Pinv, ( 3.18220452357263554e-18, 200.0, 500.0), 0.325, TEST_TOL6); + TEST (gsl_cdf_fdist_Pinv, ( 5.06746326121168266e-1, 200.0, 500.0), 1.0, TEST_TOL6); + TEST (gsl_cdf_fdist_Pinv, ( 9.99794175718712438e-1, 200.0, 500.0), 1.5, TEST_TOL6); + TEST (gsl_cdf_fdist_Pinv, ( 1.0, 200.0, 500.0), GSL_POSINF, TEST_TOL6); + + TEST (gsl_cdf_fdist_Qinv, ( 1.0, 200.0, 500.0), 0.0, TEST_TOL6); + TEST (gsl_cdf_fdist_Qinv, ( 4.93253673878831734e-1, 200.0, 500.0), 1.0, TEST_TOL6); + TEST (gsl_cdf_fdist_Qinv, ( 2.05824281287561795e-4, 200.0, 500.0), 1.5, TEST_TOL6); + TEST (gsl_cdf_fdist_Qinv, ( 4.71763848371410786e-10, 200.0, 500.0), 2.0, TEST_TOL6); + TEST (gsl_cdf_fdist_Qinv, ( 5.98048337181948436e-96, 200.0, 500.0), 10.0, TEST_TOL6); + TEST (gsl_cdf_fdist_Qinv, ( 2.92099265879979502e-155, 200.0, 500.0), 20.0, TEST_TOL6); + TEST (gsl_cdf_fdist_Qinv, ( 0.0, 200.0, 500.0), GSL_POSINF, 0.0); + + TEST (gsl_cdf_fdist_Pinv, (0.95,1.0,261.0), 3.8773340322508720313e+00, TEST_TOL3); +} + + /* Tests for gamma distribution */ + + /* p(x, a, b) := gammaP(b, x / a) */ + +void test_gamma (void) +{ + TEST (gsl_cdf_gamma_P, (0.0, 1.0, 1.0), 0.0, 0.0); + TEST (gsl_cdf_gamma_P, (1e-100, 1.0, 1.0), 1e-100, TEST_TOL6); + TEST (gsl_cdf_gamma_P, (0.001, 1.0, 1.0), 9.99500166625008332e-4, TEST_TOL6); + TEST (gsl_cdf_gamma_P, (0.01, 1.0, 1.0), 9.95016625083194643e-3, TEST_TOL6); + TEST (gsl_cdf_gamma_P, (0.1, 1.0, 1.0), 9.51625819640404268e-2, TEST_TOL6); + TEST (gsl_cdf_gamma_P, (0.325, 1.0, 1.0), 2.77472646357927811e-1, TEST_TOL6); + TEST (gsl_cdf_gamma_P, (1.0, 1.0, 1.0), 6.32120558828557678e-1, TEST_TOL6); + TEST (gsl_cdf_gamma_P, (1.5, 1.0, 1.0), 7.76869839851570171e-1, TEST_TOL6); + TEST (gsl_cdf_gamma_P, (2.0, 1.0, 1.0), 8.64664716763387308e-1, TEST_TOL6); + TEST (gsl_cdf_gamma_P, (10.0, 1.0, 1.0), 9.99954600070237515e-1, TEST_TOL6); + TEST (gsl_cdf_gamma_P, (20.0, 1.0, 1.0), 9.99999997938846378e-1, TEST_TOL6); + TEST (gsl_cdf_gamma_P, (100.0, 1.0, 1.0), 1e0, TEST_TOL6); + TEST (gsl_cdf_gamma_P, (1000.0, 1.0, 1.0), 1e0, TEST_TOL6); + TEST (gsl_cdf_gamma_P, (10000.0, 1.0, 1.0), 1e0, TEST_TOL6); + + TEST (gsl_cdf_gamma_Q, (0.0, 1.0, 1.0), 1.0, TEST_TOL6); + TEST (gsl_cdf_gamma_Q, (1e-100, 1.0, 1.0), 1.0, TEST_TOL6); + TEST (gsl_cdf_gamma_Q, (0.001, 1.0, 1.0), 9.99000499833374992e-1, TEST_TOL6); + TEST (gsl_cdf_gamma_Q, (0.01, 1.0, 1.0), 9.90049833749168054e-1, TEST_TOL6); + TEST (gsl_cdf_gamma_Q, (0.1, 1.0, 1.0), 9.04837418035959573e-1, TEST_TOL6); + TEST (gsl_cdf_gamma_Q, (0.325, 1.0, 1.0), 7.22527353642072189e-1, TEST_TOL6); + TEST (gsl_cdf_gamma_Q, (1.0, 1.0, 1.0), 3.67879441171442322e-1, TEST_TOL6); + TEST (gsl_cdf_gamma_Q, (1.5, 1.0, 1.0), 2.23130160148429829e-1, TEST_TOL6); + TEST (gsl_cdf_gamma_Q, (2.0, 1.0, 1.0), 1.35335283236612692e-1, TEST_TOL6); + TEST (gsl_cdf_gamma_Q, (10.0, 1.0, 1.0), 4.53999297624848515e-5, TEST_TOL6); + TEST (gsl_cdf_gamma_Q, (20.0, 1.0, 1.0), 2.06115362243855783e-9, TEST_TOL6); + TEST (gsl_cdf_gamma_Q, (100.0, 1.0, 1.0), 3.72007597602083596e-44, TEST_TOL6); + TEST (gsl_cdf_gamma_Q, (1000.0, 1.0, 1.0), 0.0, 0.0); + TEST (gsl_cdf_gamma_Q, (10000.0, 1.0, 1.0), 0.0, 0.0); + + TEST (gsl_cdf_gamma_P, (0.0, 1.0, 10.0), 0.0, 0.0); + TEST (gsl_cdf_gamma_P, (1e-100, 1.0, 10.0), 1e-101, TEST_TOL6); + TEST (gsl_cdf_gamma_P, (0.001, 1.0, 10.0), 9.99950001666625001e-5, TEST_TOL6); + TEST (gsl_cdf_gamma_P, (0.01, 1.0, 10.0), 9.99500166625008332e-4, TEST_TOL6); + TEST (gsl_cdf_gamma_P, (0.1, 1.0, 10.0), 9.95016625083194643e-3, TEST_TOL6); + TEST (gsl_cdf_gamma_P, (0.325, 1.0, 10.0), 3.19775501686939529e-2, TEST_TOL6); + TEST (gsl_cdf_gamma_P, (1.0, 1.0, 10.0), 9.51625819640404268e-2, TEST_TOL6); + TEST (gsl_cdf_gamma_P, (1.5, 1.0, 10.0), 1.39292023574942193e-1, TEST_TOL6); + TEST (gsl_cdf_gamma_P, (2.0, 1.0, 10.0), 1.81269246922018141e-1, TEST_TOL6); + TEST (gsl_cdf_gamma_P, (10.0, 1.0, 10.0), 6.32120558828557678e-1, TEST_TOL6); + TEST (gsl_cdf_gamma_P, (20.0, 1.0, 10.0), 8.64664716763387308e-1, TEST_TOL6); + TEST (gsl_cdf_gamma_P, (100.0, 1.0, 10.0), 9.99954600070237515e-1, TEST_TOL6); + TEST (gsl_cdf_gamma_P, (1000.0, 1.0, 10.0), 1e0, TEST_TOL6); + TEST (gsl_cdf_gamma_P, (10000.0, 1.0, 10.0), 1e0, TEST_TOL6); + + TEST (gsl_cdf_gamma_Q, (0.0, 1.0, 10.0), 1.0, TEST_TOL6); + TEST (gsl_cdf_gamma_Q, (1e-100, 1.0, 10.0), 1.0, TEST_TOL6); + TEST (gsl_cdf_gamma_Q, (0.001, 1.0, 10.0), 9.99900004999833337e-1, TEST_TOL6); + TEST (gsl_cdf_gamma_Q, (0.01, 1.0, 10.0), 9.99000499833374992e-1, TEST_TOL6); + TEST (gsl_cdf_gamma_Q, (0.1, 1.0, 10.0), 9.90049833749168054e-1, TEST_TOL6); + TEST (gsl_cdf_gamma_Q, (0.325, 1.0, 10.0), 9.68022449831306047e-1, TEST_TOL6); + TEST (gsl_cdf_gamma_Q, (1.0, 1.0, 10.0), 9.04837418035959573e-1, TEST_TOL6); + TEST (gsl_cdf_gamma_Q, (1.5, 1.0, 10.0), 8.60707976425057807e-1, TEST_TOL6); + TEST (gsl_cdf_gamma_Q, (2.0, 1.0, 10.0), 8.18730753077981859e-1, TEST_TOL6); + TEST (gsl_cdf_gamma_Q, (10.0, 1.0, 10.0), 3.67879441171442322e-1, TEST_TOL6); + TEST (gsl_cdf_gamma_Q, (20.0, 1.0, 10.0), 1.35335283236612692e-1, TEST_TOL6); + TEST (gsl_cdf_gamma_Q, (100.0, 1.0, 10.0), 4.53999297624848515e-5, TEST_TOL6); + TEST (gsl_cdf_gamma_Q, (1000.0, 1.0, 10.0), 3.72007597602083596e-44, TEST_TOL6); + TEST (gsl_cdf_gamma_Q, (10000.0, 1.0, 10.0), 0.0, 0.0); + + TEST (gsl_cdf_gamma_P, (0.0, 17.0, 10.0), 0e0, 0.0); + TEST (gsl_cdf_gamma_P, (1e-100, 17.0, 10.0), 0e0, 0.0); + TEST (gsl_cdf_gamma_P, (0.001, 17.0, 10.0), 2.81119174040422844e-83, TEST_TOL6); + TEST (gsl_cdf_gamma_P, (0.01, 17.0, 10.0), 2.80880324651985887e-66, TEST_TOL6); + TEST (gsl_cdf_gamma_P, (0.1, 17.0, 10.0), 2.78502998087492130e-49, TEST_TOL6); + TEST (gsl_cdf_gamma_P, (0.325, 17.0, 10.0), 1.37283653245125844e-40, TEST_TOL6); + TEST (gsl_cdf_gamma_P, (1.0, 17.0, 10.0), 2.55811932292544243e-32, TEST_TOL6); + TEST (gsl_cdf_gamma_P, (1.5, 17.0, 10.0), 2.40420441175422372e-29, TEST_TOL6); + TEST (gsl_cdf_gamma_P, (2.0, 17.0, 10.0), 3.05092926217898577e-27, TEST_TOL6); + TEST (gsl_cdf_gamma_P, (10.0, 17.0, 10.0), 1.094920130378183e-15, TEST_TOL6); + TEST (gsl_cdf_gamma_P, (20.0, 17.0, 10.0), 5.60605096173161688e-11, TEST_TOL6); + TEST (gsl_cdf_gamma_P, (100.0, 17.0, 10.0), 2.70416097848011280e-2, TEST_TOL6); + TEST (gsl_cdf_gamma_P, (1000.0, 17.0, 10.0), 1.000000000000000000e0, TEST_TOL6); + TEST (gsl_cdf_gamma_P, (10000.0, 17.0, 10.0), 1.000000000000000000e0, TEST_TOL6); + + TEST (gsl_cdf_gamma_Q, (0.0, 17.0, 10.0), 1.0, TEST_TOL6); + TEST (gsl_cdf_gamma_Q, (1e-100, 17.0, 10.0), 1.0, TEST_TOL6); + TEST (gsl_cdf_gamma_Q, (0.001, 17.0, 10.0), 1.0, TEST_TOL6); + TEST (gsl_cdf_gamma_Q, (0.01, 17.0, 10.0), 1.0, TEST_TOL6); + TEST (gsl_cdf_gamma_Q, (0.1, 17.0, 10.0), 1.0, TEST_TOL6); + TEST (gsl_cdf_gamma_Q, (0.325, 17.0, 10.0), 1.0, TEST_TOL6); + TEST (gsl_cdf_gamma_Q, (1.0, 17.0, 10.0), 1.0, TEST_TOL6); + TEST (gsl_cdf_gamma_Q, (1.5, 17.0, 10.0), 1.0, TEST_TOL6); + TEST (gsl_cdf_gamma_Q, (2.0, 17.0, 10.0), 1.0, TEST_TOL6); + TEST (gsl_cdf_gamma_Q, (10.0, 17.0, 10.0), 9.99999999999998905e-1, TEST_TOL6); + TEST (gsl_cdf_gamma_Q, (20.0, 17.0, 10.0), 9.99999999943939490e-1, TEST_TOL6); + TEST (gsl_cdf_gamma_Q, (100.0, 17.0, 10.0), 9.72958390215198872e-1, TEST_TOL6); + TEST (gsl_cdf_gamma_Q, (1000.0, 17.0, 10.0), 2.11200951633948570e-25, TEST_TOL6); + TEST (gsl_cdf_gamma_Q, (10000.0, 17.0, 10.0), 0.0, 0.0); +} + +void test_chisq (void) { + TEST (gsl_cdf_chisq_P, (0.0, 13.0), 0.0, 0.0); + TEST (gsl_cdf_chisq_P, (1e-100, 13.0), 0.0, 0.0); + TEST (gsl_cdf_chisq_P, (0.001, 13.0), 1.86631102655845996e-25, TEST_TOL6); + TEST (gsl_cdf_chisq_P, (0.01, 13.0), 5.87882248504529790e-19, TEST_TOL6); + TEST (gsl_cdf_chisq_P, (0.1, 13.0), 1.78796983358555410e-12, TEST_TOL6); + TEST (gsl_cdf_chisq_P, (0.325, 13.0), 3.44611313779905183e-9, TEST_TOL6); + TEST (gsl_cdf_chisq_P, (1.0, 13.0), 3.83473473513595154e-6, TEST_TOL6); + TEST (gsl_cdf_chisq_P, (1.5, 13.0), 4.31718389201041932e-5, TEST_TOL6); + TEST (gsl_cdf_chisq_P, (2.0, 13.0), 2.26250084656047180e-4, TEST_TOL6); + TEST (gsl_cdf_chisq_P, (10.0, 13.0), 3.06065632019251110e-1, TEST_TOL6); + TEST (gsl_cdf_chisq_P, (20.0, 13.0), 9.04789743921908487e-1, TEST_TOL6); + TEST (gsl_cdf_chisq_P, (100.0, 13.0), 9.99999999999998341e-1, TEST_TOL6); + TEST (gsl_cdf_chisq_P, (1000.0, 13.0), 1e0, TEST_TOL6); + TEST (gsl_cdf_chisq_P, (10000.0, 13.0), 1e0, TEST_TOL6); + + TEST (gsl_cdf_chisq_Q, (0.0, 13.0), 1e0, TEST_TOL6); + TEST (gsl_cdf_chisq_Q, (1e-100, 13.0), 1e0, TEST_TOL6); + TEST (gsl_cdf_chisq_Q, (0.001, 13.0), 1e0, TEST_TOL6); + TEST (gsl_cdf_chisq_Q, (0.01, 13.0), 9.99999999999999999e-1, TEST_TOL6); + TEST (gsl_cdf_chisq_Q, (0.1, 13.0), 9.99999999998212030e-1, TEST_TOL6); + TEST (gsl_cdf_chisq_Q, (0.325, 13.0), 9.99999996553886862e-1, TEST_TOL6); + TEST (gsl_cdf_chisq_Q, (1.0, 13.0), 9.99996165265264864e-1, TEST_TOL6); + TEST (gsl_cdf_chisq_Q, (1.5, 13.0), 9.99956828161079896e-1, TEST_TOL6); + TEST (gsl_cdf_chisq_Q, (2.0, 13.0), 9.99773749915343953e-1, TEST_TOL6); + TEST (gsl_cdf_chisq_Q, (10.0, 13.0), 6.93934367980748890e-1, TEST_TOL6); + TEST (gsl_cdf_chisq_Q, (20.0, 13.0), 9.52102560780915127e-2, TEST_TOL6); + TEST (gsl_cdf_chisq_Q, (100.0, 13.0), 1.65902608070858809e-15, TEST_TOL6); + TEST (gsl_cdf_chisq_Q, (1000.0, 13.0), 1.74851191544860225e-205, TEST_TOL6); + TEST (gsl_cdf_chisq_Q, (10000.0, 13.0), 0.0, 0.0); +} + + + /* Beta distribution */ + +void test_beta (void) { + TEST (gsl_cdf_beta_P, (0.0, 1.2, 1.3), 0.0, 0.0); + TEST (gsl_cdf_beta_P, (1e-100, 1.2, 1.3), 1.34434944656489596e-120, TEST_TOL6); + TEST (gsl_cdf_beta_P, (0.001, 1.2, 1.3), 3.37630042504535813e-4, TEST_TOL6); + TEST (gsl_cdf_beta_P, (0.01, 1.2, 1.3), 5.34317264038929473e-3, TEST_TOL6); + TEST (gsl_cdf_beta_P, (0.1, 1.2, 1.3), 8.33997828306748346e-2, TEST_TOL6); + TEST (gsl_cdf_beta_P, (0.325, 1.2, 1.3), 3.28698654180583916e-1, TEST_TOL6); + TEST (gsl_cdf_beta_P, (0.5, 1.2, 1.3), 5.29781429451299081e-1, TEST_TOL6); + TEST (gsl_cdf_beta_P, (0.9, 1.2, 1.3), 9.38529397224430659e-1, TEST_TOL6); + TEST (gsl_cdf_beta_P, (0.99, 1.2, 1.3), 9.96886438341254380e-1, TEST_TOL6); + TEST (gsl_cdf_beta_P, (0.999, 1.2, 1.3), 9.99843792833067634e-1, TEST_TOL6); + TEST (gsl_cdf_beta_P, (1.0, 1.2, 1.3), 1.0, TEST_TOL6); + + TEST (gsl_cdf_beta_Q, (0.0, 1.2, 1.3), 1.0, 0.0); + TEST (gsl_cdf_beta_Q, (1e-100, 1.2, 1.3), 1e0, TEST_TOL6); + TEST (gsl_cdf_beta_Q, (0.001, 1.2, 1.3), 9.99662369957495464e-1, TEST_TOL6); + TEST (gsl_cdf_beta_Q, (0.01, 1.2, 1.3), 9.94656827359610705e-1, TEST_TOL6); + TEST (gsl_cdf_beta_Q, (0.1, 1.2, 1.3), 9.16600217169325165e-1, TEST_TOL6); + TEST (gsl_cdf_beta_Q, (0.325, 1.2, 1.3), 6.71301345819416084e-1, TEST_TOL6); + TEST (gsl_cdf_beta_Q, (0.5, 1.2, 1.3), 4.70218570548700919e-1, TEST_TOL6); + TEST (gsl_cdf_beta_Q, (0.9, 1.2, 1.3), 6.14706027755693408e-2, TEST_TOL6); + TEST (gsl_cdf_beta_Q, (0.99, 1.2, 1.3), 3.11356165874561958e-3, TEST_TOL6); + TEST (gsl_cdf_beta_Q, (0.999, 1.2, 1.3), 1.56207166932365759e-4, TEST_TOL6); + TEST (gsl_cdf_beta_Q, (1.0, 1.2, 1.3), 0.0, TEST_TOL6); +} + +void test_betainv (void) { + TEST (gsl_cdf_beta_Pinv, (0.0, 1.2, 1.3), 0.0, 0.0); + TEST (gsl_cdf_beta_Pinv, ( 1.34434944656489596e-120, 1.2, 1.3), 1e-100, TEST_TOL6); + TEST (gsl_cdf_beta_Pinv, ( 3.37630042504535813e-4, 1.2, 1.3), 0.001, TEST_TOL6); + TEST (gsl_cdf_beta_Pinv, ( 5.34317264038929473e-3, 1.2, 1.3), 0.01, TEST_TOL6); + TEST (gsl_cdf_beta_Pinv, ( 8.33997828306748346e-2, 1.2, 1.3), 0.1, TEST_TOL6); + TEST (gsl_cdf_beta_Pinv, ( 3.28698654180583916e-1, 1.2, 1.3), 0.325, TEST_TOL6); + TEST (gsl_cdf_beta_Pinv, ( 5.29781429451299081e-1, 1.2, 1.3), 0.5, TEST_TOL6); + TEST (gsl_cdf_beta_Pinv, ( 9.38529397224430659e-1, 1.2, 1.3), 0.9, TEST_TOL6); + TEST (gsl_cdf_beta_Pinv, ( 9.96886438341254380e-1, 1.2, 1.3), 0.99, TEST_TOL6); + TEST (gsl_cdf_beta_Pinv, ( 9.99843792833067634e-1, 1.2, 1.3), 0.999, TEST_TOL6); + TEST (gsl_cdf_beta_Pinv, ( 1.0, 1.2, 1.3), 1.0, TEST_TOL6); + + TEST (gsl_cdf_beta_Qinv, ( 1.0, 1.2, 1.3), 0.0, 0.0); + TEST (gsl_cdf_beta_Qinv, ( 1e0, 1.2, 1.3), 0.0, TEST_TOL6); + TEST (gsl_cdf_beta_Qinv, ( 9.99662369957495464e-1, 1.2, 1.3), 0.001, TEST_TOL6); + TEST (gsl_cdf_beta_Qinv, ( 9.94656827359610705e-1, 1.2, 1.3), 0.01, TEST_TOL6); + TEST (gsl_cdf_beta_Qinv, ( 9.16600217169325165e-1, 1.2, 1.3), 0.1, TEST_TOL6); + TEST (gsl_cdf_beta_Qinv, ( 6.71301345819416084e-1, 1.2, 1.3), 0.325, TEST_TOL6); + TEST (gsl_cdf_beta_Qinv, ( 4.70218570548700919e-1, 1.2, 1.3), 0.5, TEST_TOL6); + TEST (gsl_cdf_beta_Qinv, ( 6.14706027755693408e-2, 1.2, 1.3), 0.9, TEST_TOL6); + TEST (gsl_cdf_beta_Qinv, ( 3.11356165874561958e-3, 1.2, 1.3), 0.99, TEST_TOL6); + TEST (gsl_cdf_beta_Qinv, ( 1.56207166932365759e-4, 1.2, 1.3), 0.999, TEST_TOL6); + TEST (gsl_cdf_beta_Qinv, ( 0.0, 1.2, 1.3), 1.0, TEST_TOL6); + + TEST (gsl_cdf_beta_Pinv, ( 0.025, 2133.0, 7868.0), 0.20530562929915865457928654, TEST_TOL6); +} + +void test_gammainv (void) { + TEST (gsl_cdf_gamma_Pinv, (0.0, 1.0, 1.0), 0.0, 0.0); + TEST (gsl_cdf_gamma_Pinv, (1e-100, 1.0, 1.0), 1e-100, TEST_TOL6); + TEST (gsl_cdf_gamma_Pinv, (9.99500166625008332e-4, 1.0, 1.0), 0.001, TEST_TOL6); + TEST (gsl_cdf_gamma_Pinv, (9.95016625083194643e-3, 1.0, 1.0), 0.01, TEST_TOL6); + TEST (gsl_cdf_gamma_Pinv, (9.51625819640404268e-2, 1.0, 1.0), 0.1, TEST_TOL6); + TEST (gsl_cdf_gamma_Pinv, (2.77472646357927811e-1, 1.0, 1.0), 0.325, TEST_TOL6); + TEST (gsl_cdf_gamma_Pinv, (6.32120558828557678e-1, 1.0, 1.0), 1.0, TEST_TOL6); + TEST (gsl_cdf_gamma_Pinv, (7.76869839851570171e-1, 1.0, 1.0), 1.5, TEST_TOL6); + TEST (gsl_cdf_gamma_Pinv, (8.64664716763387308e-1, 1.0, 1.0), 2.0, TEST_TOL6); + TEST (gsl_cdf_gamma_Pinv, (9.99954600070237515e-1, 1.0, 1.0), 10.0, TEST_TOL6); + TEST (gsl_cdf_gamma_Pinv, (9.99999997938846378e-1, 1.0, 1.0), 20.0, 100 * TEST_TOL6); + TEST (gsl_cdf_gamma_Pinv, (1.0, 1.0, 1.0), GSL_POSINF, 0.0); + + /* Test case from Benjamin Redelings */ + /* fails on x86_64, FIXME test value is from octave -- get high precision value */ + TEST (gsl_cdf_gamma_Pinv, (0.1, 11.887411491530846,1.0), 7.73788447848618e+00, TEST_TOL1); + + TEST (gsl_cdf_gamma_Qinv, (0.0, 1.0, 1.0), GSL_POSINF, 0.0); + TEST (gsl_cdf_gamma_Qinv, (2.06115362243855783e-9, 1.0, 1.0), 20.0, TEST_TOL6); + TEST (gsl_cdf_gamma_Qinv, (4.53999297624848515e-5, 1.0, 1.0), 10.0, TEST_TOL6); + TEST (gsl_cdf_gamma_Qinv, (1.35335283236612692e-1, 1.0, 1.0), 2.0, TEST_TOL6); + TEST (gsl_cdf_gamma_Qinv, (2.23130160148429829e-1, 1.0, 1.0), 1.5, TEST_TOL6); + TEST (gsl_cdf_gamma_Qinv, (3.67879441171442322e-1, 1.0, 1.0), 1.0, TEST_TOL6); + TEST (gsl_cdf_gamma_Qinv, (7.22527353642072189e-1, 1.0, 1.0), 0.325, TEST_TOL6); + TEST (gsl_cdf_gamma_Qinv, (9.04837418035959573e-1, 1.0, 1.0), 0.1, TEST_TOL6); + TEST (gsl_cdf_gamma_Qinv, (9.90049833749168054e-1, 1.0, 1.0), 0.01, TEST_TOL6); + TEST (gsl_cdf_gamma_Qinv, (9.99000499833374992e-1, 1.0, 1.0), 0.001, TEST_TOL6); + TEST (gsl_cdf_gamma_Qinv, (1.0, 1.0, 1.0), 0.0, 0.0); +} + +void test_chisqinv (void) { + TEST (gsl_cdf_chisq_Pinv, (0.0, 13.0), 0.0, 0.0); + TEST (gsl_cdf_chisq_Pinv, (1.86631102655845996e-25, 13.0), 0.001, TEST_TOL6); + TEST (gsl_cdf_chisq_Pinv, (5.87882248504529790e-19, 13.0), 0.01, TEST_TOL6); + TEST (gsl_cdf_chisq_Pinv, (1.78796983358555410e-12, 13.0), 0.1, TEST_TOL6); + TEST (gsl_cdf_chisq_Pinv, (3.44611313779905183e-9, 13.0), 0.325, TEST_TOL6); + TEST (gsl_cdf_chisq_Pinv, (3.83473473513595154e-6, 13.0), 1.0, TEST_TOL6); + TEST (gsl_cdf_chisq_Pinv, (4.31718389201041932e-5, 13.0), 1.5, TEST_TOL6); + TEST (gsl_cdf_chisq_Pinv, (2.26250084656047180e-4, 13.0), 2.0, TEST_TOL6); + TEST (gsl_cdf_chisq_Pinv, (3.06065632019251110e-1, 13.0), 10.0, TEST_TOL6); + TEST (gsl_cdf_chisq_Pinv, (9.04789743921908487e-1, 13.0), 20.0, TEST_TOL6); + TEST (gsl_cdf_chisq_Pinv, (9.99999999999998341e-1, 13.0), 100.0, 0.01); + TEST (gsl_cdf_chisq_Pinv, (1e0, 13.0), GSL_POSINF, 0.0); + + TEST (gsl_cdf_chisq_Pinv, (1.93238145206123590e-01, 1.5), 0.211980092931799521729407, TEST_TOL6); + TEST (gsl_cdf_chisq_Pinv, (4.83e-8, 19.19), 1.632280186860266704532868343, TEST_TOL6); + + /* Test cases for bug 24704 */ + TEST (gsl_cdf_chisq_Pinv, (0.05, 1263131.0), 1260517.771133388726131469059, TEST_TOL6); + TEST (gsl_cdf_chisq_Pinv, (0.05, 2526262.0), 2522565.864973351096735720202, TEST_TOL6); + +#if 0 /* XXX - bug #39057 */ + /* Test case reported by Yan Zhou */ + TEST (gsl_cdf_chisq_Pinv, (0.5, 0.01), 0.99477710813146, TEST_TOL6); +#endif + + TEST (gsl_cdf_chisq_Qinv, (0.0, 13.0), GSL_POSINF, TEST_TOL6); + TEST (gsl_cdf_chisq_Qinv, (1.65902608070858809e-15, 13.0), 100.0, TEST_TOL6); + TEST (gsl_cdf_chisq_Qinv, (9.52102560780915127e-2, 13.0), 20.0, TEST_TOL6); + TEST (gsl_cdf_chisq_Qinv, (6.93934367980748892e-1, 13.0), 10.0, TEST_TOL6); + TEST (gsl_cdf_chisq_Qinv, (9.99773749915343954e-1, 13.0), 2.0, TEST_TOL6); + TEST (gsl_cdf_chisq_Qinv, (9.99956828161079894e-1, 13.0), 1.5, TEST_TOL6); + TEST (gsl_cdf_chisq_Qinv, (9.99996165265264863e-1, 13.0), 1.0, TEST_TOL6); + TEST (gsl_cdf_chisq_Qinv, (9.99999996553886862e-1, 13.0), 0.325, 1e-6); + TEST (gsl_cdf_chisq_Qinv, (9.99999999998212031e-1, 13.0), 0.1, 1e-5); + TEST (gsl_cdf_chisq_Qinv, (1.0, 13.0), 0.0, 0.0); +} + +void test_tdistinv (void) { + TEST (gsl_cdf_tdist_Pinv, (0.5, 1.0), 0.0, TEST_TOL6); + TEST (gsl_cdf_tdist_Pinv, (5.00318309780080559e-1, 1.0), 0.001, TEST_TOL6); + TEST (gsl_cdf_tdist_Pinv, (5.03182992764908255e-1, 1.0), 0.01, TEST_TOL6); + TEST (gsl_cdf_tdist_Pinv, (5.31725517430553569e-1, 1.0), 0.1, TEST_TOL6); + TEST (gsl_cdf_tdist_Pinv, (6.00023120032852123e-1, 1.0), 0.325, TEST_TOL6); + TEST (gsl_cdf_tdist_Pinv, (0.75000000000000000e0, 1.0), 1.0, TEST_TOL6); + TEST (gsl_cdf_tdist_Pinv, (8.12832958189001183e-1, 1.0), 1.5, TEST_TOL6); + TEST (gsl_cdf_tdist_Pinv, (8.52416382349566726e-1, 1.0), 2.0, TEST_TOL6); + TEST (gsl_cdf_tdist_Pinv, (9.68274482569446430e-1, 1.0), 10.0, TEST_TOL6); + TEST (gsl_cdf_tdist_Pinv, (9.84097748743823625e-1, 1.0), 20.0, TEST_TOL6); + TEST (gsl_cdf_tdist_Pinv, (9.96817007235091745e-1, 1.0), 100.0, TEST_TOL6); + TEST (gsl_cdf_tdist_Pinv, (9.99681690219919441e-1, 1.0), 1000.0, TEST_TOL6); + TEST (gsl_cdf_tdist_Pinv, (9.99968169011487724e-1, 1.0), 10000.0, TEST_TOL6); + + TEST (gsl_cdf_tdist_Qinv, (0.5, 1.0), 0.0, TEST_TOL6); + TEST (gsl_cdf_tdist_Qinv, (4.99681690219919441e-1, 1.0), 0.001, TEST_TOL6); + TEST (gsl_cdf_tdist_Qinv, (4.96817007235091745e-1, 1.0), 0.01, TEST_TOL6); + TEST (gsl_cdf_tdist_Qinv, (4.68274482569446430e-1, 1.0), 0.1, TEST_TOL6); + TEST (gsl_cdf_tdist_Qinv, (3.99976879967147876e-1, 1.0), 0.325, TEST_TOL6); + TEST (gsl_cdf_tdist_Qinv, (2.5e-1, 1.0), 1.0, TEST_TOL6); + TEST (gsl_cdf_tdist_Qinv, (1.87167041810998816e-1, 1.0), 1.5, TEST_TOL6); + TEST (gsl_cdf_tdist_Qinv, (1.47583617650433274e-1, 1.0), 2.0, TEST_TOL6); + TEST (gsl_cdf_tdist_Qinv, (3.17255174305535695e-2, 1.0), 10.0, TEST_TOL6); + TEST (gsl_cdf_tdist_Qinv, (1.59022512561763752e-2, 1.0), 20.0, TEST_TOL6); + TEST (gsl_cdf_tdist_Qinv, (3.18299276490825515e-3, 1.0), 100.0, TEST_TOL6); + TEST (gsl_cdf_tdist_Qinv, (3.18309780080558939e-4, 1.0), 1000.0, TEST_TOL6); + TEST (gsl_cdf_tdist_Qinv, (3.18309885122757724e-5, 1.0), 10000.0, TEST_TOL6); + + TEST (gsl_cdf_tdist_Pinv, (4.99681690219919441e-1, 1.0), -0.001, TEST_TOL6); + TEST (gsl_cdf_tdist_Pinv, (4.96817007235091744e-1, 1.0), -0.01, TEST_TOL6); + TEST (gsl_cdf_tdist_Pinv, (4.68274482569446430e-1, 1.0), -0.1, TEST_TOL6); + TEST (gsl_cdf_tdist_Pinv, (3.99976879967147876e-1, 1.0), -0.325, TEST_TOL6); + TEST (gsl_cdf_tdist_Pinv, (0.25, 1.0), -1.0, TEST_TOL6); + TEST (gsl_cdf_tdist_Pinv, (1.87167041810998816e-1, 1.0), -1.5, TEST_TOL6); + TEST (gsl_cdf_tdist_Pinv, (1.47583617650433274e-1, 1.0), -2.0, TEST_TOL6); + TEST (gsl_cdf_tdist_Pinv, (3.17255174305535695e-2, 1.0), -10.0, TEST_TOL6); + TEST (gsl_cdf_tdist_Pinv, (1.59022512561763751e-2, 1.0), -20.0, TEST_TOL6); + TEST (gsl_cdf_tdist_Pinv, (3.18299276490825514e-3, 1.0), -100.0, TEST_TOL6); + TEST (gsl_cdf_tdist_Pinv, (3.18309780080558938e-4, 1.0), -1000.0, TEST_TOL6); + TEST (gsl_cdf_tdist_Pinv, (3.18309885122757724e-5, 1.0), -10000.0, TEST_TOL6); + + TEST (gsl_cdf_tdist_Qinv, (5.00318309780080559e-1, 1.0), -0.001, TEST_TOL6); + TEST (gsl_cdf_tdist_Qinv, (5.03182992764908255e-1, 1.0), -0.01, TEST_TOL6); + TEST (gsl_cdf_tdist_Qinv, (5.31725517430553570e-1, 1.0), -0.1, TEST_TOL6); + TEST (gsl_cdf_tdist_Qinv, (6.00023120032852124e-1, 1.0), -0.325, TEST_TOL6); + TEST (gsl_cdf_tdist_Qinv, (7.5e-1, 1.0), -1.0, TEST_TOL6); + TEST (gsl_cdf_tdist_Qinv, (8.12832958189001184e-1, 1.0), -1.5, TEST_TOL6); + TEST (gsl_cdf_tdist_Qinv, (8.52416382349566726e-1, 1.0), -2.0, TEST_TOL6); + TEST (gsl_cdf_tdist_Qinv, (9.68274482569446430e-1, 1.0), -10.0, TEST_TOL6); + TEST (gsl_cdf_tdist_Qinv, (9.84097748743823625e-1, 1.0), -20.0, TEST_TOL6); + TEST (gsl_cdf_tdist_Qinv, (9.96817007235091745e-1, 1.0), -100.0, TEST_TOL6); + TEST (gsl_cdf_tdist_Qinv, (9.99681690219919441e-1, 1.0), -1000.0, TEST_TOL6); + TEST (gsl_cdf_tdist_Qinv, (9.99968169011487724e-1, 1.0), -10000.0, TEST_TOL6); + + TEST (gsl_cdf_tdist_Pinv, (4.99646446697795041e-01, 2.0), -0.001, TEST_TOL6); + TEST (gsl_cdf_tdist_Pinv, (4.96464554479100486e-01, 2.0), -0.01, TEST_TOL6); + TEST (gsl_cdf_tdist_Pinv, (4.64732719207070087e-01, 2.0), -0.1, TEST_TOL6); + TEST (gsl_cdf_tdist_Pinv, (3.88014227253126233e-01, 2.0), -0.325, TEST_TOL6); + TEST (gsl_cdf_tdist_Pinv, (2.11324865405187118e-01, 2.0), -1.0, TEST_TOL6); + TEST (gsl_cdf_tdist_Pinv, (1.36196562445500540e-01, 2.0), -1.5, TEST_TOL6); + TEST (gsl_cdf_tdist_Pinv, (9.17517095361369836e-02, 2.0), -2.0, TEST_TOL6); + TEST (gsl_cdf_tdist_Pinv, (4.92622851166284542e-03, 2.0), -10.0, TEST_TOL6); + TEST (gsl_cdf_tdist_Pinv, (1.24533194618354849e-03, 2.0), -20.0, TEST_TOL6); + TEST (gsl_cdf_tdist_Pinv, (4.99925012497812894e-05, 2.0), -100.0, TEST_TOL6); + TEST (gsl_cdf_tdist_Pinv, (4.99999250001249998e-07, 2.0), -1000.0, TEST_TOL6); + TEST (gsl_cdf_tdist_Pinv, (4.99999992500000125e-09, 2.0), -10000.0, TEST_TOL6); + + TEST (gsl_cdf_tdist_Qinv, (5.00353553302204959e-1, 2.0), -0.001, TEST_TOL6); + TEST (gsl_cdf_tdist_Qinv, (5.03535445520899514e-1, 2.0), -0.01, TEST_TOL6); + TEST (gsl_cdf_tdist_Qinv, (5.35267280792929913e-1, 2.0), -0.1, TEST_TOL6); + TEST (gsl_cdf_tdist_Qinv, (6.11985772746873767e-1, 2.0), -0.325, TEST_TOL6); + TEST (gsl_cdf_tdist_Qinv, (7.88675134594812882e-1, 2.0), -1.0, TEST_TOL6); + TEST (gsl_cdf_tdist_Qinv, (8.63803437554499460e-1, 2.0), -1.5, TEST_TOL6); + TEST (gsl_cdf_tdist_Qinv, (9.08248290463863016e-1, 2.0), -2.0, TEST_TOL6); + TEST (gsl_cdf_tdist_Qinv, (9.95073771488337155e-1, 2.0), -10.0, TEST_TOL6); + TEST (gsl_cdf_tdist_Qinv, (9.98754668053816452e-1, 2.0), -20.0, TEST_TOL6); + TEST (gsl_cdf_tdist_Qinv, (9.99950007498750219e-1, 2.0), -100.0, TEST_TOL6); + TEST (gsl_cdf_tdist_Qinv, (9.99999500000749999e-1, 2.0), -1000.0, TEST_TOL6); + TEST (gsl_cdf_tdist_Qinv, (9.99999995000000075e-1, 2.0), -10000.0, 1e-6); + + TEST (gsl_cdf_tdist_Pinv, (5.00000000000000000e-01, 300.0), 0.0, TEST_TOL6); + TEST (gsl_cdf_tdist_Pinv, (5.00398609900942949e-01, 300.0), 0.001, TEST_TOL6); + TEST (gsl_cdf_tdist_Pinv, (5.03986033020559088e-01, 300.0), 0.01, TEST_TOL6); + TEST (gsl_cdf_tdist_Pinv, (5.39794441177768194e-01, 300.0), 0.1, TEST_TOL6); + TEST (gsl_cdf_tdist_Pinv, (6.27296201542523812e-01, 300.0), 0.325, TEST_TOL6); + TEST (gsl_cdf_tdist_Pinv, (8.40941797784686861e-01, 300.0), 1.0, TEST_TOL6); + TEST (gsl_cdf_tdist_Pinv, (9.32666983425369137e-01, 300.0), 1.5, TEST_TOL6); + TEST (gsl_cdf_tdist_Pinv, (9.76799239508425455e-01, 300.0), 2.0, TEST_TOL6); + TEST (gsl_cdf_tdist_Pinv, (1.00000000000000000e+00, 300.0), GSL_POSINF, 0.0); + + TEST (gsl_cdf_tdist_Qinv, (5.00000000000000000e-01, 300.0), 0.0, TEST_TOL6); + TEST (gsl_cdf_tdist_Qinv, (4.99601390099057051e-1, 300.0), 0.001, TEST_TOL6); + TEST (gsl_cdf_tdist_Qinv, (4.96013966979440912e-1, 300.0), 0.01, TEST_TOL6); + TEST (gsl_cdf_tdist_Qinv, (4.60205558822231806e-1, 300.0), 0.1, TEST_TOL6); + TEST (gsl_cdf_tdist_Qinv, (3.72703798457476188e-1, 300.0), 0.325, TEST_TOL6); + TEST (gsl_cdf_tdist_Qinv, (1.59058202215313138e-1, 300.0), 1.0, TEST_TOL6); + TEST (gsl_cdf_tdist_Qinv, (6.73330165746308628e-2, 300.0), 1.5, TEST_TOL6); + TEST (gsl_cdf_tdist_Qinv, (2.32007604915745452e-2, 300.0), 2.0, TEST_TOL6); + TEST (gsl_cdf_tdist_Qinv, (8.279313677e-21, 300.0), 10.0, TEST_TOL6); + TEST (gsl_cdf_tdist_Qinv, (1.93159812815803978e-57, 300.0), 20.0, TEST_TOL6); + TEST (gsl_cdf_tdist_Qinv, (1.02557519997736154e-232, 300.0), 100.0, TEST_TOL6); + TEST (gsl_cdf_tdist_Qinv, (0.00000000000000000e+00, 300.0), GSL_POSINF, 0.0); + + TEST (gsl_cdf_tdist_Pinv, (4.99601390099057051e-01, 300.0), -0.001, TEST_TOL6); + TEST (gsl_cdf_tdist_Pinv, (4.96013966979440912e-01, 300.0), -0.01, TEST_TOL6); + TEST (gsl_cdf_tdist_Pinv, (4.60205558822231806e-01, 300.0), -0.1, TEST_TOL6); + TEST (gsl_cdf_tdist_Pinv, (3.72703798457476188e-01, 300.0), -0.325, TEST_TOL6); + TEST (gsl_cdf_tdist_Pinv, (1.59058202215313138e-01, 300.0), -1.0, TEST_TOL6); + TEST (gsl_cdf_tdist_Pinv, (6.73330165746308628e-02, 300.0), -1.5, TEST_TOL6); + TEST (gsl_cdf_tdist_Pinv, (2.32007604915745452e-02, 300.0), -2.0, TEST_TOL6); + TEST (gsl_cdf_tdist_Pinv, (8.279313675556272534e-21, 300.0), -10.0, TEST_TOL6); + TEST (gsl_cdf_tdist_Pinv, (1.93159812815803978e-57, 300.0), -20.0, TEST_TOL6); + TEST (gsl_cdf_tdist_Pinv, (1.02557519997736154e-232, 300.0), -100.0, TEST_TOL6); + TEST (gsl_cdf_tdist_Pinv, (0.0, 300.0), GSL_NEGINF, 0.0); + + TEST (gsl_cdf_tdist_Qinv, (5.00398609900942949e-1, 300.0), -0.001, TEST_TOL6); + TEST (gsl_cdf_tdist_Qinv, (5.03986033020559088e-1, 300.0), -0.01, TEST_TOL6); + TEST (gsl_cdf_tdist_Qinv, (5.39794441177768194e-1, 300.0), -0.1, TEST_TOL6); + TEST (gsl_cdf_tdist_Qinv, (6.27296201542523812e-1, 300.0), -0.325, TEST_TOL6); + TEST (gsl_cdf_tdist_Qinv, (8.40941797784686862e-1, 300.0), -1.0, TEST_TOL6); + TEST (gsl_cdf_tdist_Qinv, (9.32666983425369137e-1, 300.0), -1.5, TEST_TOL6); + TEST (gsl_cdf_tdist_Qinv, (9.76799239508425455e-1, 300.0), -2.0, TEST_TOL6); + TEST (gsl_cdf_tdist_Qinv, (1.000000000000000000e0, 300.0), GSL_NEGINF, TEST_TOL6); +} + + + diff --git a/gsl-2.5/cdf/test.log b/gsl-2.5/cdf/test.log new file mode 100644 index 00000000..0e372961 --- /dev/null +++ b/gsl-2.5/cdf/test.log @@ -0,0 +1 @@ +Completed [12017/12017] diff --git a/gsl-2.5/cdf/test.trs b/gsl-2.5/cdf/test.trs new file mode 100644 index 00000000..3f0f396c --- /dev/null +++ b/gsl-2.5/cdf/test.trs @@ -0,0 +1,4 @@ +:test-result: PASS +:global-test-result: PASS +:recheck: no +:copy-in-global-log: no diff --git a/gsl-2.5/cdf/test_auto.c b/gsl-2.5/cdf/test_auto.c new file mode 100644 index 00000000..cf6f610b --- /dev/null +++ b/gsl-2.5/cdf/test_auto.c @@ -0,0 +1,1464 @@ +void test_auto_beta (void); + +void +test_auto_beta (void) +{ + TEST(gsl_cdf_beta_P, (0.0000000000000000e+00,1.3,2.7), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_beta_P, (1.0000000000000000e-10,1.3,2.7), 3.329258013904e-13, TEST_TOL6); + TEST(gsl_cdf_beta_P, (1.0000000000000001e-09,1.3,2.7), 6.642743046207e-12, TEST_TOL6); + TEST(gsl_cdf_beta_P, (1.0000000000000000e-08,1.3,2.7), 1.325401475350e-10, TEST_TOL6); + TEST(gsl_cdf_beta_P, (9.9999999999999995e-08,1.3,2.7), 2.644523387276e-09, TEST_TOL6); + TEST(gsl_cdf_beta_P, (9.9999999999999995e-07,1.3,2.7), 5.276513292646e-08, TEST_TOL6); + TEST(gsl_cdf_beta_P, (1.0000000000000001e-05,1.3,2.7), 1.052793708285e-06, TEST_TOL6); + TEST(gsl_cdf_beta_P, (1.0000000000000000e-04,1.3,2.7), 2.100417958505e-05, TEST_TOL6); + TEST(gsl_cdf_beta_P, (1.0000000000000000e-03,1.3,2.7), 4.187261218400e-04, TEST_TOL6); + TEST(gsl_cdf_beta_P, (1.0000000000000000e-02,1.3,2.7), 8.282559388393e-03, TEST_TOL6); + TEST(gsl_cdf_beta_P, (1.0000000000000001e-01,1.3,2.7), 1.512194578010e-01, TEST_TOL6); + TEST(gsl_cdf_beta_P, (2.0000000000000001e-01,1.3,2.7), 3.358123280407e-01, TEST_TOL6); + TEST(gsl_cdf_beta_P, (2.9999999999999999e-01,1.3,2.7), 5.104163996495e-01, TEST_TOL6); + TEST(gsl_cdf_beta_P, (4.0000000000000002e-01,1.3,2.7), 6.620682399410e-01, TEST_TOL6); + TEST(gsl_cdf_beta_P, (5.0000000000000000e-01,1.3,2.7), 7.852786981833e-01, TEST_TOL6); + TEST(gsl_cdf_beta_P, (5.9999999999999998e-01,1.3,2.7), 8.784005878950e-01, TEST_TOL6); + TEST(gsl_cdf_beta_P, (8.0000000000000004e-01,1.3,2.7), 9.801824171406e-01, TEST_TOL6); + TEST(gsl_cdf_beta_P, (9.0000000000000002e-01,1.3,2.7), 9.968736852365e-01, TEST_TOL6); + TEST(gsl_cdf_beta_P, (9.8999999999999999e-01,1.3,2.7), 9.999936324464e-01, TEST_TOL6); + TEST(gsl_cdf_beta_P, (9.9900000000000000e-01,1.3,2.7), 9.999999872699e-01, TEST_TOL6); + TEST(gsl_cdf_beta_P, (9.9990000000000001e-01,1.3,2.7), 9.999999999746e-01, TEST_TOL6); + TEST(gsl_cdf_beta_P, (9.9999000000000005e-01,1.3,2.7), 9.999999999999e-01, TEST_TOL6); + TEST(gsl_cdf_beta_P, (1.0000000000000000e+00,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + + TEST(gsl_cdf_beta_Q, (1.0000000000000000e+00,1.3,2.7), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_beta_Q, (9.9999000000000005e-01,1.3,2.7), 5.069044353228e-14, TEST_TOL6); + TEST(gsl_cdf_beta_Q, (9.9990000000000001e-01,1.3,2.7), 2.540490259443e-11, TEST_TOL6); + TEST(gsl_cdf_beta_Q, (9.9900000000000000e-01,1.3,2.7), 1.273010336738e-08, TEST_TOL6); + TEST(gsl_cdf_beta_Q, (9.8999999999999999e-01,1.3,2.7), 6.367553598351e-06, TEST_TOL6); + TEST(gsl_cdf_beta_Q, (9.0000000000000002e-01,1.3,2.7), 3.126314763488e-03, TEST_TOL6); + TEST(gsl_cdf_beta_Q, (8.0000000000000004e-01,1.3,2.7), 1.981758285937e-02, TEST_TOL6); + TEST(gsl_cdf_beta_Q, (5.9999999999999998e-01,1.3,2.7), 1.215994121050e-01, TEST_TOL6); + TEST(gsl_cdf_beta_Q, (5.0000000000000000e-01,1.3,2.7), 2.147213018167e-01, TEST_TOL6); + TEST(gsl_cdf_beta_Q, (4.0000000000000002e-01,1.3,2.7), 3.379317600590e-01, TEST_TOL6); + TEST(gsl_cdf_beta_Q, (2.9999999999999999e-01,1.3,2.7), 4.895836003505e-01, TEST_TOL6); + TEST(gsl_cdf_beta_Q, (2.0000000000000001e-01,1.3,2.7), 6.641876719593e-01, TEST_TOL6); + TEST(gsl_cdf_beta_Q, (1.0000000000000001e-01,1.3,2.7), 8.487805421990e-01, TEST_TOL6); + TEST(gsl_cdf_beta_Q, (1.0000000000000000e-02,1.3,2.7), 9.917174406116e-01, TEST_TOL6); + TEST(gsl_cdf_beta_Q, (1.0000000000000000e-03,1.3,2.7), 9.995812738782e-01, TEST_TOL6); + TEST(gsl_cdf_beta_Q, (1.0000000000000000e-04,1.3,2.7), 9.999789958204e-01, TEST_TOL6); + TEST(gsl_cdf_beta_Q, (1.0000000000000001e-05,1.3,2.7), 9.999989472063e-01, TEST_TOL6); + TEST(gsl_cdf_beta_Q, (9.9999999999999995e-07,1.3,2.7), 9.999999472349e-01, TEST_TOL6); + TEST(gsl_cdf_beta_Q, (9.9999999999999995e-08,1.3,2.7), 9.999999973555e-01, TEST_TOL6); + TEST(gsl_cdf_beta_Q, (1.0000000000000000e-08,1.3,2.7), 9.999999998675e-01, TEST_TOL6); + TEST(gsl_cdf_beta_Q, (1.0000000000000001e-09,1.3,2.7), 9.999999999934e-01, TEST_TOL6); + TEST(gsl_cdf_beta_Q, (1.0000000000000000e-10,1.3,2.7), 9.999999999997e-01, TEST_TOL6); + TEST(gsl_cdf_beta_Q, (0.0000000000000000e+00,1.3,2.7), 1.000000000000e+00, TEST_TOL6); +} + +void test_auto_fdist (void); + +void +test_auto_fdist (void) +{ + TEST(gsl_cdf_fdist_P, (0.0000000000000000e+00,5.3,2.7), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_fdist_P, (1.0000000000000000e-10,5.3,2.7), 3.231380663090e-26, TEST_TOL6); + TEST(gsl_cdf_fdist_P, (1.0000000000000001e-09,5.3,2.7), 1.443404714791e-23, TEST_TOL6); + TEST(gsl_cdf_fdist_P, (1.0000000000000000e-08,5.3,2.7), 6.447451698511e-21, TEST_TOL6); + TEST(gsl_cdf_fdist_P, (9.9999999999999995e-08,5.3,2.7), 2.879969407315e-18, TEST_TOL6); + TEST(gsl_cdf_fdist_P, (9.9999999999999995e-07,5.3,2.7), 1.286428479993e-15, TEST_TOL6); + TEST(gsl_cdf_fdist_P, (1.0000000000000001e-05,5.3,2.7), 5.745970138195e-13, TEST_TOL6); + TEST(gsl_cdf_fdist_P, (1.0000000000000000e-04,5.3,2.7), 2.565314230632e-10, TEST_TOL6); + TEST(gsl_cdf_fdist_P, (1.0000000000000000e-03,5.3,2.7), 1.140026203760e-07, TEST_TOL6); + TEST(gsl_cdf_fdist_P, (1.0000000000000000e-02,5.3,2.7), 4.840333162527e-05, TEST_TOL6); + TEST(gsl_cdf_fdist_P, (1.0000000000000001e-01,5.3,2.7), 1.360698992545e-02, TEST_TOL6); + TEST(gsl_cdf_fdist_P, (1.0000000000000000e+00,5.3,2.7), 4.532720490874e-01, TEST_TOL6); + TEST(gsl_cdf_fdist_P, (1.0000000000000000e+01,5.3,2.7), 9.461328174717e-01, TEST_TOL6); + TEST(gsl_cdf_fdist_P, (1.0000000000000000e+02,5.3,2.7), 9.973356976994e-01, TEST_TOL6); + TEST(gsl_cdf_fdist_P, (1.0000000000000000e+03,5.3,2.7), 9.998797338050e-01, TEST_TOL6); + TEST(gsl_cdf_fdist_P, (1.0000000000000000e+04,5.3,2.7), 9.999946222456e-01, TEST_TOL6); + TEST(gsl_cdf_fdist_P, (1.0000000000000000e+05,5.3,2.7), 9.999997597592e-01, TEST_TOL6); + TEST(gsl_cdf_fdist_P, (1.0000000000000000e+06,5.3,2.7), 9.999999892687e-01, TEST_TOL6); + TEST(gsl_cdf_fdist_P, (1.0000000000000000e+07,5.3,2.7), 9.999999995207e-01, TEST_TOL6); + TEST(gsl_cdf_fdist_P, (1.0000000000000000e+08,5.3,2.7), 9.999999999786e-01, TEST_TOL6); + TEST(gsl_cdf_fdist_P, (1.0000000000000000e+09,5.3,2.7), 9.999999999990e-01, TEST_TOL6); + TEST(gsl_cdf_fdist_P, (1.0000000000000000e+10,5.3,2.7), 1.000000000000e-00, TEST_TOL6); + + TEST(gsl_cdf_fdist_Q, (1.0000000000000000e+10,5.3,2.7), 4.272202262298e-14, TEST_TOL6); + TEST(gsl_cdf_fdist_Q, (1.0000000000000000e+09,5.3,2.7), 9.564269502770e-13, TEST_TOL6); + TEST(gsl_cdf_fdist_Q, (1.0000000000000000e+08,5.3,2.7), 2.141173208523e-11, TEST_TOL6); + TEST(gsl_cdf_fdist_Q, (1.0000000000000000e+07,5.3,2.7), 4.793489218238e-10, TEST_TOL6); + TEST(gsl_cdf_fdist_Q, (1.0000000000000000e+06,5.3,2.7), 1.073127433440e-08, TEST_TOL6); + TEST(gsl_cdf_fdist_Q, (1.0000000000000000e+05,5.3,2.7), 2.402407758939e-07, TEST_TOL6); + TEST(gsl_cdf_fdist_Q, (1.0000000000000000e+04,5.3,2.7), 5.377754447932e-06, TEST_TOL6); + TEST(gsl_cdf_fdist_Q, (1.0000000000000000e+03,5.3,2.7), 1.202661950234e-04, TEST_TOL6); + TEST(gsl_cdf_fdist_Q, (1.0000000000000000e+02,5.3,2.7), 2.664302300604e-03, TEST_TOL6); + TEST(gsl_cdf_fdist_Q, (1.0000000000000000e+01,5.3,2.7), 5.386718252832e-02, TEST_TOL6); + TEST(gsl_cdf_fdist_Q, (1.0000000000000000e+00,5.3,2.7), 5.467279509126e-01, TEST_TOL6); + TEST(gsl_cdf_fdist_Q, (1.0000000000000001e-01,5.3,2.7), 9.863930100746e-01, TEST_TOL6); + TEST(gsl_cdf_fdist_Q, (1.0000000000000000e-02,5.3,2.7), 9.999515966684e-01, TEST_TOL6); + TEST(gsl_cdf_fdist_Q, (1.0000000000000000e-03,5.3,2.7), 9.999998859974e-01, TEST_TOL6); + TEST(gsl_cdf_fdist_Q, (1.0000000000000000e-04,5.3,2.7), 9.999999997435e-01, TEST_TOL6); + TEST(gsl_cdf_fdist_Q, (1.0000000000000001e-05,5.3,2.7), 9.999999999994e-01, TEST_TOL6); + TEST(gsl_cdf_fdist_Q, (9.9999999999999995e-07,5.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_fdist_Q, (9.9999999999999995e-08,5.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_fdist_Q, (1.0000000000000000e-08,5.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_fdist_Q, (1.0000000000000001e-09,5.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_fdist_Q, (1.0000000000000000e-10,5.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_fdist_Q, (0.0000000000000000e+00,5.3,2.7), 1.000000000000e+00, TEST_TOL6); +} + +void test_auto_cauchy (void); + +void +test_auto_cauchy (void) +{ + TEST(gsl_cdf_cauchy_P, (-1.0000000000000000e+10,1.3), 4.138028520389e-11, TEST_TOL6); + TEST(gsl_cdf_cauchy_Pinv, (4.1380285203892783e-11,1.3), -1.000000000000e+10, TEST_TOL6); + TEST(gsl_cdf_cauchy_P, (-1.0000000000000000e+09,1.3), 4.138028520389e-10, TEST_TOL6); + TEST(gsl_cdf_cauchy_Pinv, (4.1380285203892792e-10,1.3), -1.000000000000e+09, TEST_TOL6); + TEST(gsl_cdf_cauchy_P, (-1.0000000000000000e+08,1.3), 4.138028520389e-09, TEST_TOL6); + TEST(gsl_cdf_cauchy_Pinv, (4.1380285203892787e-09,1.3), -1.000000000000e+08, TEST_TOL6); + TEST(gsl_cdf_cauchy_P, (-1.0000000000000000e+07,1.3), 4.138028520389e-08, TEST_TOL6); + TEST(gsl_cdf_cauchy_Pinv, (4.1380285203892555e-08,1.3), -1.000000000000e+07, TEST_TOL6); + TEST(gsl_cdf_cauchy_P, (-1.0000000000000000e+06,1.3), 4.138028520387e-07, TEST_TOL6); + TEST(gsl_cdf_cauchy_Pinv, (4.1380285203869488e-07,1.3), -1.000000000000e+06, TEST_TOL6); + TEST(gsl_cdf_cauchy_P, (-1.0000000000000000e+05,1.3), 4.138028520156e-06, TEST_TOL6); + TEST(gsl_cdf_cauchy_Pinv, (4.1380285201561693e-06,1.3), -1.000000000000e+05, TEST_TOL6); + TEST(gsl_cdf_cauchy_P, (-1.0000000000000000e+04,1.3), 4.138028497078e-05, TEST_TOL6); + TEST(gsl_cdf_cauchy_Pinv, (4.1380284970783855e-05,1.3), -1.000000000000e+04, TEST_TOL6); + TEST(gsl_cdf_cauchy_P, (-1.0000000000000000e+03,1.3), 4.138026189302e-04, TEST_TOL6); + TEST(gsl_cdf_cauchy_Pinv, (4.1380261893022424e-04,1.3), -1.000000000000e+03, TEST_TOL6); + TEST(gsl_cdf_cauchy_P, (-1.0000000000000000e+02,1.3), 4.137795435084e-03, TEST_TOL6); + TEST(gsl_cdf_cauchy_Pinv, (4.1377954350836910e-03,1.3), -1.000000000000e+02, TEST_TOL6); + TEST(gsl_cdf_cauchy_P, (-1.0000000000000000e+01,1.3), 4.114951182497e-02, TEST_TOL6); + TEST(gsl_cdf_cauchy_Pinv, (4.1149511824973506e-02,1.3), -1.000000000000e+01, TEST_TOL6); + TEST(gsl_cdf_cauchy_P, (-1.0000000000000000e+00,1.3), 2.912855998398e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_Pinv, (2.9128559983984725e-01,1.3), -1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_cauchy_P, (-1.0000000000000001e-01,1.3), 4.755627480278e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_Pinv, (4.7556274802780252e-01,1.3), -1.000000000000e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_P, (-1.0000000000000000e-02,1.3), 4.975515107069e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_Pinv, (4.9755151070688325e-01,1.3), -1.000000000000e-02, TEST_TOL6); + TEST(gsl_cdf_cauchy_P, (-1.0000000000000000e-03,1.3), 4.997551462897e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_Pinv, (4.9975514628969159e-01,1.3), -1.000000000000e-03, TEST_TOL6); + TEST(gsl_cdf_cauchy_P, (-1.0000000000000000e-04,1.3), 4.999755146242e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_P, (-1.0000000000000001e-05,1.3), 4.999975514624e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_P, (-9.9999999999999995e-07,1.3), 4.999997551462e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_P, (-9.9999999999999995e-08,1.3), 4.999999755146e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_P, (-1.0000000000000000e-08,1.3), 4.999999975515e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_P, (-1.0000000000000001e-09,1.3), 4.999999997551e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_P, (-1.0000000000000000e-10,1.3), 4.999999999755e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_P, (0.0000000000000000e+00,1.3), 5.000000000000e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_Pinv, (5.0000000000000011e-01,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_cauchy_P, (1.0000000000000000e-10,1.3), 5.000000000245e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_P, (1.0000000000000001e-09,1.3), 5.000000002449e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_P, (1.0000000000000000e-08,1.3), 5.000000024485e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_P, (9.9999999999999995e-08,1.3), 5.000000244854e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_P, (9.9999999999999995e-07,1.3), 5.000002448538e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_P, (1.0000000000000001e-05,1.3), 5.000024485376e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_P, (1.0000000000000000e-04,1.3), 5.000244853758e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_P, (1.0000000000000000e-03,1.3), 5.002448537103e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_Pinv, (5.0024485371030836e-01,1.3), 1.000000000000e-03, TEST_TOL6); + TEST(gsl_cdf_cauchy_P, (1.0000000000000000e-02,1.3), 5.024484892931e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_Pinv, (5.0244848929311670e-01,1.3), 1.000000000000e-02, TEST_TOL6); + TEST(gsl_cdf_cauchy_P, (1.0000000000000001e-01,1.3), 5.244372519722e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_Pinv, (5.2443725197219748e-01,1.3), 1.000000000000e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_P, (1.0000000000000000e+00,1.3), 7.087144001602e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_Pinv, (7.0871440016015275e-01,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_cauchy_P, (1.0000000000000000e+01,1.3), 9.588504881750e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_Pinv, (9.5885048817502649e-01,1.3), 1.000000000000e+01, TEST_TOL6); + TEST(gsl_cdf_cauchy_P, (1.0000000000000000e+02,1.3), 9.958622045649e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_Pinv, (9.9586220456491636e-01,1.3), 1.000000000000e+02, TEST_TOL6); + TEST(gsl_cdf_cauchy_P, (1.0000000000000000e+03,1.3), 9.995861973811e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_Pinv, (9.9958619738106980e-01,1.3), 1.000000000000e+03, TEST_TOL6); + TEST(gsl_cdf_cauchy_P, (1.0000000000000000e+04,1.3), 9.999586197150e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_P, (1.0000000000000000e+05,1.3), 9.999958619715e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_P, (1.0000000000000000e+06,1.3), 9.999995861971e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_P, (1.0000000000000000e+07,1.3), 9.999999586197e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_P, (1.0000000000000000e+08,1.3), 9.999999958620e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_P, (1.0000000000000000e+09,1.3), 9.999999995862e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_P, (1.0000000000000000e+10,1.3), 9.999999999586e-01, TEST_TOL6); + + TEST(gsl_cdf_cauchy_Q, (1.0000000000000000e+10,1.3), 4.138028520389e-11, TEST_TOL6); + TEST(gsl_cdf_cauchy_Qinv, (4.1380285203892783e-11,1.3), 1.000000000000e+10, TEST_TOL6); + TEST(gsl_cdf_cauchy_Q, (1.0000000000000000e+09,1.3), 4.138028520389e-10, TEST_TOL6); + TEST(gsl_cdf_cauchy_Qinv, (4.1380285203892792e-10,1.3), 1.000000000000e+09, TEST_TOL6); + TEST(gsl_cdf_cauchy_Q, (1.0000000000000000e+08,1.3), 4.138028520389e-09, TEST_TOL6); + TEST(gsl_cdf_cauchy_Qinv, (4.1380285203892787e-09,1.3), 1.000000000000e+08, TEST_TOL6); + TEST(gsl_cdf_cauchy_Q, (1.0000000000000000e+07,1.3), 4.138028520389e-08, TEST_TOL6); + TEST(gsl_cdf_cauchy_Qinv, (4.1380285203892555e-08,1.3), 1.000000000000e+07, TEST_TOL6); + TEST(gsl_cdf_cauchy_Q, (1.0000000000000000e+06,1.3), 4.138028520387e-07, TEST_TOL6); + TEST(gsl_cdf_cauchy_Qinv, (4.1380285203869488e-07,1.3), 1.000000000000e+06, TEST_TOL6); + TEST(gsl_cdf_cauchy_Q, (1.0000000000000000e+05,1.3), 4.138028520156e-06, TEST_TOL6); + TEST(gsl_cdf_cauchy_Qinv, (4.1380285201561693e-06,1.3), 1.000000000000e+05, TEST_TOL6); + TEST(gsl_cdf_cauchy_Q, (1.0000000000000000e+04,1.3), 4.138028497078e-05, TEST_TOL6); + TEST(gsl_cdf_cauchy_Qinv, (4.1380284970783855e-05,1.3), 1.000000000000e+04, TEST_TOL6); + TEST(gsl_cdf_cauchy_Q, (1.0000000000000000e+03,1.3), 4.138026189302e-04, TEST_TOL6); + TEST(gsl_cdf_cauchy_Qinv, (4.1380261893022424e-04,1.3), 1.000000000000e+03, TEST_TOL6); + TEST(gsl_cdf_cauchy_Q, (1.0000000000000000e+02,1.3), 4.137795435084e-03, TEST_TOL6); + TEST(gsl_cdf_cauchy_Qinv, (4.1377954350836910e-03,1.3), 1.000000000000e+02, TEST_TOL6); + TEST(gsl_cdf_cauchy_Q, (1.0000000000000000e+01,1.3), 4.114951182497e-02, TEST_TOL6); + TEST(gsl_cdf_cauchy_Qinv, (4.1149511824973506e-02,1.3), 1.000000000000e+01, TEST_TOL6); + TEST(gsl_cdf_cauchy_Q, (1.0000000000000000e+00,1.3), 2.912855998398e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_Qinv, (2.9128559983984725e-01,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_cauchy_Q, (1.0000000000000001e-01,1.3), 4.755627480278e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_Qinv, (4.7556274802780252e-01,1.3), 1.000000000000e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_Q, (1.0000000000000000e-02,1.3), 4.975515107069e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_Qinv, (4.9755151070688325e-01,1.3), 1.000000000000e-02, TEST_TOL6); + TEST(gsl_cdf_cauchy_Q, (1.0000000000000000e-03,1.3), 4.997551462897e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_Qinv, (4.9975514628969159e-01,1.3), 1.000000000000e-03, TEST_TOL6); + TEST(gsl_cdf_cauchy_Q, (1.0000000000000000e-04,1.3), 4.999755146242e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_Q, (1.0000000000000001e-05,1.3), 4.999975514624e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_Q, (9.9999999999999995e-07,1.3), 4.999997551462e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_Q, (9.9999999999999995e-08,1.3), 4.999999755146e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_Q, (1.0000000000000000e-08,1.3), 4.999999975515e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_Q, (1.0000000000000001e-09,1.3), 4.999999997551e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_Q, (1.0000000000000000e-10,1.3), 4.999999999755e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_Q, (0.0000000000000000e+00,1.3), 5.000000000000e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_Qinv, (5.0000000000000011e-01,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_cauchy_Q, (-1.0000000000000000e-10,1.3), 5.000000000245e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_Q, (-1.0000000000000001e-09,1.3), 5.000000002449e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_Q, (-1.0000000000000000e-08,1.3), 5.000000024485e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_Q, (-9.9999999999999995e-08,1.3), 5.000000244854e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_Q, (-9.9999999999999995e-07,1.3), 5.000002448538e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_Q, (-1.0000000000000001e-05,1.3), 5.000024485376e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_Q, (-1.0000000000000000e-04,1.3), 5.000244853758e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_Q, (-1.0000000000000000e-03,1.3), 5.002448537103e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_Qinv, (5.0024485371030836e-01,1.3), -1.000000000000e-03, TEST_TOL6); + TEST(gsl_cdf_cauchy_Q, (-1.0000000000000000e-02,1.3), 5.024484892931e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_Qinv, (5.0244848929311670e-01,1.3), -1.000000000000e-02, TEST_TOL6); + TEST(gsl_cdf_cauchy_Q, (-1.0000000000000001e-01,1.3), 5.244372519722e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_Qinv, (5.2443725197219748e-01,1.3), -1.000000000000e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_Q, (-1.0000000000000000e+00,1.3), 7.087144001602e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_Qinv, (7.0871440016015275e-01,1.3), -1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_cauchy_Q, (-1.0000000000000000e+01,1.3), 9.588504881750e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_Qinv, (9.5885048817502649e-01,1.3), -1.000000000000e+01, TEST_TOL6); + TEST(gsl_cdf_cauchy_Q, (-1.0000000000000000e+02,1.3), 9.958622045649e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_Qinv, (9.9586220456491636e-01,1.3), -1.000000000000e+02, TEST_TOL6); + TEST(gsl_cdf_cauchy_Q, (-1.0000000000000000e+03,1.3), 9.995861973811e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_Qinv, (9.9958619738106980e-01,1.3), -1.000000000000e+03, TEST_TOL6); + TEST(gsl_cdf_cauchy_Q, (-1.0000000000000000e+04,1.3), 9.999586197150e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_Q, (-1.0000000000000000e+05,1.3), 9.999958619715e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_Q, (-1.0000000000000000e+06,1.3), 9.999995861971e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_Q, (-1.0000000000000000e+07,1.3), 9.999999586197e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_Q, (-1.0000000000000000e+08,1.3), 9.999999958620e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_Q, (-1.0000000000000000e+09,1.3), 9.999999995862e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_Q, (-1.0000000000000000e+10,1.3), 9.999999999586e-01, TEST_TOL6); +} + +void test_auto_gaussian (void); + +void +test_auto_gaussian (void) +{ + TEST(gsl_cdf_gaussian_P, (-1.0000000000000000e+10,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gaussian_P, (-1.0000000000000000e+09,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gaussian_P, (-1.0000000000000000e+08,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gaussian_P, (-1.0000000000000000e+07,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gaussian_P, (-1.0000000000000000e+06,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gaussian_P, (-1.0000000000000000e+05,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gaussian_P, (-1.0000000000000000e+04,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gaussian_P, (-1.0000000000000000e+03,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gaussian_P, (-1.0000000000000000e+02,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gaussian_P, (-1.0000000000000000e+01,1.3), 7.225229227927e-15, TEST_TOL6); + TEST(gsl_cdf_gaussian_Pinv, (7.2252292279265077e-15,1.3), -1.000000000000e+01, TEST_TOL6); + TEST(gsl_cdf_gaussian_P, (-1.0000000000000000e+00,1.3), 2.208781637125e-01, TEST_TOL6); + TEST(gsl_cdf_gaussian_Pinv, (2.2087816371245972e-01,1.3), -1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gaussian_P, (-1.0000000000000001e-01,1.3), 4.693423696034e-01, TEST_TOL6); + TEST(gsl_cdf_gaussian_Pinv, (4.6934236960338749e-01,1.3), -1.000000000000e-01, TEST_TOL6); + TEST(gsl_cdf_gaussian_P, (-1.0000000000000000e-02,1.3), 4.969312434916e-01, TEST_TOL6); + TEST(gsl_cdf_gaussian_Pinv, (4.9693124349158196e-01,1.3), -1.000000000000e-02, TEST_TOL6); + TEST(gsl_cdf_gaussian_P, (-1.0000000000000000e-03,1.3), 4.996931213530e-01, TEST_TOL6); + TEST(gsl_cdf_gaussian_Pinv, (4.9969312135303229e-01,1.3), -1.000000000000e-03, TEST_TOL6); + TEST(gsl_cdf_gaussian_P, (-1.0000000000000000e-04,1.3), 4.999693121323e-01, TEST_TOL6); + TEST(gsl_cdf_gaussian_P, (-1.0000000000000001e-05,1.3), 4.999969312132e-01, TEST_TOL6); + TEST(gsl_cdf_gaussian_P, (-9.9999999999999995e-07,1.3), 4.999996931213e-01, TEST_TOL6); + TEST(gsl_cdf_gaussian_P, (-9.9999999999999995e-08,1.3), 4.999999693121e-01, TEST_TOL6); + TEST(gsl_cdf_gaussian_P, (-1.0000000000000000e-08,1.3), 4.999999969312e-01, TEST_TOL6); + TEST(gsl_cdf_gaussian_P, (-1.0000000000000001e-09,1.3), 4.999999996931e-01, TEST_TOL6); + TEST(gsl_cdf_gaussian_P, (-1.0000000000000000e-10,1.3), 4.999999999693e-01, TEST_TOL6); + TEST(gsl_cdf_gaussian_P, (0.0000000000000000e+00,1.3), 5.000000000000e-01, TEST_TOL6); + TEST(gsl_cdf_gaussian_Pinv, (5.0000000000000000e-01,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gaussian_P, (1.0000000000000000e-10,1.3), 5.000000000307e-01, TEST_TOL6); + TEST(gsl_cdf_gaussian_P, (1.0000000000000001e-09,1.3), 5.000000003069e-01, TEST_TOL6); + TEST(gsl_cdf_gaussian_P, (1.0000000000000000e-08,1.3), 5.000000030688e-01, TEST_TOL6); + TEST(gsl_cdf_gaussian_P, (9.9999999999999995e-08,1.3), 5.000000306879e-01, TEST_TOL6); + TEST(gsl_cdf_gaussian_P, (9.9999999999999995e-07,1.3), 5.000003068787e-01, TEST_TOL6); + TEST(gsl_cdf_gaussian_P, (1.0000000000000001e-05,1.3), 5.000030687868e-01, TEST_TOL6); + TEST(gsl_cdf_gaussian_P, (1.0000000000000000e-04,1.3), 5.000306878677e-01, TEST_TOL6); + TEST(gsl_cdf_gaussian_P, (1.0000000000000000e-03,1.3), 5.003068786470e-01, TEST_TOL6); + TEST(gsl_cdf_gaussian_Pinv, (5.0030687864696777e-01,1.3), 1.000000000000e-03, TEST_TOL6); + TEST(gsl_cdf_gaussian_P, (1.0000000000000000e-02,1.3), 5.030687565084e-01, TEST_TOL6); + TEST(gsl_cdf_gaussian_Pinv, (5.0306875650841798e-01,1.3), 1.000000000000e-02, TEST_TOL6); + TEST(gsl_cdf_gaussian_P, (1.0000000000000001e-01,1.3), 5.306576303966e-01, TEST_TOL6); + TEST(gsl_cdf_gaussian_Pinv, (5.3065763039661251e-01,1.3), 1.000000000000e-01, TEST_TOL6); + TEST(gsl_cdf_gaussian_P, (1.0000000000000000e+00,1.3), 7.791218362875e-01, TEST_TOL6); + TEST(gsl_cdf_gaussian_Pinv, (7.7912183628754028e-01,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gaussian_P, (1.0000000000000000e+01,1.3), 1.000000000000e-00, TEST_TOL6); + TEST(gsl_cdf_gaussian_P, (1.0000000000000000e+02,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gaussian_P, (1.0000000000000000e+03,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gaussian_P, (1.0000000000000000e+04,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gaussian_P, (1.0000000000000000e+05,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gaussian_P, (1.0000000000000000e+06,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gaussian_P, (1.0000000000000000e+07,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gaussian_P, (1.0000000000000000e+08,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gaussian_P, (1.0000000000000000e+09,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gaussian_P, (1.0000000000000000e+10,1.3), 1.000000000000e+00, TEST_TOL6); + + TEST(gsl_cdf_gaussian_Q, (1.0000000000000000e+10,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gaussian_Q, (1.0000000000000000e+09,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gaussian_Q, (1.0000000000000000e+08,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gaussian_Q, (1.0000000000000000e+07,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gaussian_Q, (1.0000000000000000e+06,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gaussian_Q, (1.0000000000000000e+05,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gaussian_Q, (1.0000000000000000e+04,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gaussian_Q, (1.0000000000000000e+03,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gaussian_Q, (1.0000000000000000e+02,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gaussian_Q, (1.0000000000000000e+01,1.3), 7.225229227927e-15, TEST_TOL6); + TEST(gsl_cdf_gaussian_Qinv, (7.2252292279265077e-15,1.3), 1.000000000000e+01, TEST_TOL6); + TEST(gsl_cdf_gaussian_Q, (1.0000000000000000e+00,1.3), 2.208781637125e-01, TEST_TOL6); + TEST(gsl_cdf_gaussian_Qinv, (2.2087816371245972e-01,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gaussian_Q, (1.0000000000000001e-01,1.3), 4.693423696034e-01, TEST_TOL6); + TEST(gsl_cdf_gaussian_Qinv, (4.6934236960338749e-01,1.3), 1.000000000000e-01, TEST_TOL6); + TEST(gsl_cdf_gaussian_Q, (1.0000000000000000e-02,1.3), 4.969312434916e-01, TEST_TOL6); + TEST(gsl_cdf_gaussian_Qinv, (4.9693124349158196e-01,1.3), 1.000000000000e-02, TEST_TOL6); + TEST(gsl_cdf_gaussian_Q, (1.0000000000000000e-03,1.3), 4.996931213530e-01, TEST_TOL6); + TEST(gsl_cdf_gaussian_Qinv, (4.9969312135303229e-01,1.3), 1.000000000000e-03, TEST_TOL6); + TEST(gsl_cdf_gaussian_Q, (1.0000000000000000e-04,1.3), 4.999693121323e-01, TEST_TOL6); + TEST(gsl_cdf_gaussian_Q, (1.0000000000000001e-05,1.3), 4.999969312132e-01, TEST_TOL6); + TEST(gsl_cdf_gaussian_Q, (9.9999999999999995e-07,1.3), 4.999996931213e-01, TEST_TOL6); + TEST(gsl_cdf_gaussian_Q, (9.9999999999999995e-08,1.3), 4.999999693121e-01, TEST_TOL6); + TEST(gsl_cdf_gaussian_Q, (1.0000000000000000e-08,1.3), 4.999999969312e-01, TEST_TOL6); + TEST(gsl_cdf_gaussian_Q, (1.0000000000000001e-09,1.3), 4.999999996931e-01, TEST_TOL6); + TEST(gsl_cdf_gaussian_Q, (1.0000000000000000e-10,1.3), 4.999999999693e-01, TEST_TOL6); + TEST(gsl_cdf_gaussian_Q, (0.0000000000000000e+00,1.3), 5.000000000000e-01, TEST_TOL6); + TEST(gsl_cdf_gaussian_Qinv, (5.0000000000000000e-01,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gaussian_Q, (-1.0000000000000000e-10,1.3), 5.000000000307e-01, TEST_TOL6); + TEST(gsl_cdf_gaussian_Q, (-1.0000000000000001e-09,1.3), 5.000000003069e-01, TEST_TOL6); + TEST(gsl_cdf_gaussian_Q, (-1.0000000000000000e-08,1.3), 5.000000030688e-01, TEST_TOL6); + TEST(gsl_cdf_gaussian_Q, (-9.9999999999999995e-08,1.3), 5.000000306879e-01, TEST_TOL6); + TEST(gsl_cdf_gaussian_Q, (-9.9999999999999995e-07,1.3), 5.000003068787e-01, TEST_TOL6); + TEST(gsl_cdf_gaussian_Q, (-1.0000000000000001e-05,1.3), 5.000030687868e-01, TEST_TOL6); + TEST(gsl_cdf_gaussian_Q, (-1.0000000000000000e-04,1.3), 5.000306878677e-01, TEST_TOL6); + TEST(gsl_cdf_gaussian_Q, (-1.0000000000000000e-03,1.3), 5.003068786470e-01, TEST_TOL6); + TEST(gsl_cdf_gaussian_Qinv, (5.0030687864696777e-01,1.3), -1.000000000000e-03, TEST_TOL6); + TEST(gsl_cdf_gaussian_Q, (-1.0000000000000000e-02,1.3), 5.030687565084e-01, TEST_TOL6); + TEST(gsl_cdf_gaussian_Qinv, (5.0306875650841798e-01,1.3), -1.000000000000e-02, TEST_TOL6); + TEST(gsl_cdf_gaussian_Q, (-1.0000000000000001e-01,1.3), 5.306576303966e-01, TEST_TOL6); + TEST(gsl_cdf_gaussian_Qinv, (5.3065763039661251e-01,1.3), -1.000000000000e-01, TEST_TOL6); + TEST(gsl_cdf_gaussian_Q, (-1.0000000000000000e+00,1.3), 7.791218362875e-01, TEST_TOL6); + TEST(gsl_cdf_gaussian_Qinv, (7.7912183628754028e-01,1.3), -1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gaussian_Q, (-1.0000000000000000e+01,1.3), 1.000000000000e-00, TEST_TOL6); + TEST(gsl_cdf_gaussian_Q, (-1.0000000000000000e+02,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gaussian_Q, (-1.0000000000000000e+03,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gaussian_Q, (-1.0000000000000000e+04,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gaussian_Q, (-1.0000000000000000e+05,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gaussian_Q, (-1.0000000000000000e+06,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gaussian_Q, (-1.0000000000000000e+07,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gaussian_Q, (-1.0000000000000000e+08,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gaussian_Q, (-1.0000000000000000e+09,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gaussian_Q, (-1.0000000000000000e+10,1.3), 1.000000000000e+00, TEST_TOL6); +} + +void test_auto_laplace (void); + +void +test_auto_laplace (void) +{ + TEST(gsl_cdf_laplace_P, (-1.0000000000000000e+10,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_laplace_P, (-1.0000000000000000e+09,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_laplace_P, (-1.0000000000000000e+08,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_laplace_P, (-1.0000000000000000e+07,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_laplace_P, (-1.0000000000000000e+06,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_laplace_P, (-1.0000000000000000e+05,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_laplace_P, (-1.0000000000000000e+04,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_laplace_P, (-1.0000000000000000e+03,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_laplace_P, (-1.0000000000000000e+02,1.3), 1.957501779912e-34, TEST_TOL6); + TEST(gsl_cdf_laplace_Pinv, (1.9575017799122328e-34,1.3), -1.000000000000e+02, TEST_TOL6); + TEST(gsl_cdf_laplace_P, (-1.0000000000000000e+01,1.3), 2.281619502905e-04, TEST_TOL6); + TEST(gsl_cdf_laplace_Pinv, (2.2816195029051560e-04,1.3), -1.000000000000e+01, TEST_TOL6); + TEST(gsl_cdf_laplace_P, (-1.0000000000000000e+00,1.3), 2.316846846156e-01, TEST_TOL6); + TEST(gsl_cdf_laplace_Pinv, (2.3168468461558764e-01,1.3), -1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_laplace_P, (-1.0000000000000001e-01,1.3), 4.629805393212e-01, TEST_TOL6); + TEST(gsl_cdf_laplace_Pinv, (4.6298053932115801e-01,1.3), -1.000000000000e-01, TEST_TOL6); + TEST(gsl_cdf_laplace_P, (-1.0000000000000000e-02,1.3), 4.961686011956e-01, TEST_TOL6); + TEST(gsl_cdf_laplace_Pinv, (4.9616860119557432e-01,1.3), -1.000000000000e-02, TEST_TOL6); + TEST(gsl_cdf_laplace_P, (-1.0000000000000000e-03,1.3), 4.996155325065e-01, TEST_TOL6); + TEST(gsl_cdf_laplace_Pinv, (4.9961553250645546e-01,1.3), -1.000000000000e-03, TEST_TOL6); + TEST(gsl_cdf_laplace_P, (-1.0000000000000000e-04,1.3), 4.999615399408e-01, TEST_TOL6); + TEST(gsl_cdf_laplace_P, (-1.0000000000000001e-05,1.3), 4.999961538609e-01, TEST_TOL6); + TEST(gsl_cdf_laplace_P, (-9.9999999999999995e-07,1.3), 4.999996153848e-01, TEST_TOL6); + TEST(gsl_cdf_laplace_P, (-9.9999999999999995e-08,1.3), 4.999999615385e-01, TEST_TOL6); + TEST(gsl_cdf_laplace_P, (-1.0000000000000000e-08,1.3), 4.999999961538e-01, TEST_TOL6); + TEST(gsl_cdf_laplace_P, (-1.0000000000000001e-09,1.3), 4.999999996154e-01, TEST_TOL6); + TEST(gsl_cdf_laplace_P, (-1.0000000000000000e-10,1.3), 4.999999999615e-01, TEST_TOL6); + TEST(gsl_cdf_laplace_P, (0.0000000000000000e+00,1.3), 5.000000000000e-01, TEST_TOL6); + TEST(gsl_cdf_laplace_Pinv, (5.0000000000000000e-01,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_laplace_P, (1.0000000000000000e-10,1.3), 5.000000000385e-01, TEST_TOL6); + TEST(gsl_cdf_laplace_P, (1.0000000000000001e-09,1.3), 5.000000003846e-01, TEST_TOL6); + TEST(gsl_cdf_laplace_P, (1.0000000000000000e-08,1.3), 5.000000038462e-01, TEST_TOL6); + TEST(gsl_cdf_laplace_P, (9.9999999999999995e-08,1.3), 5.000000384615e-01, TEST_TOL6); + TEST(gsl_cdf_laplace_P, (9.9999999999999995e-07,1.3), 5.000003846152e-01, TEST_TOL6); + TEST(gsl_cdf_laplace_P, (1.0000000000000001e-05,1.3), 5.000038461391e-01, TEST_TOL6); + TEST(gsl_cdf_laplace_P, (1.0000000000000000e-04,1.3), 5.000384600592e-01, TEST_TOL6); + TEST(gsl_cdf_laplace_P, (1.0000000000000000e-03,1.3), 5.003844674935e-01, TEST_TOL6); + TEST(gsl_cdf_laplace_Pinv, (5.0038446749354448e-01,1.3), 1.000000000000e-03, TEST_TOL6); + TEST(gsl_cdf_laplace_P, (1.0000000000000000e-02,1.3), 5.038313988044e-01, TEST_TOL6); + TEST(gsl_cdf_laplace_Pinv, (5.0383139880442562e-01,1.3), 1.000000000000e-02, TEST_TOL6); + TEST(gsl_cdf_laplace_P, (1.0000000000000001e-01,1.3), 5.370194606788e-01, TEST_TOL6); + TEST(gsl_cdf_laplace_Pinv, (5.3701946067884199e-01,1.3), 1.000000000000e-01, TEST_TOL6); + TEST(gsl_cdf_laplace_P, (1.0000000000000000e+00,1.3), 7.683153153844e-01, TEST_TOL6); + TEST(gsl_cdf_laplace_Pinv, (7.6831531538441233e-01,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_laplace_P, (1.0000000000000000e+01,1.3), 9.997718380497e-01, TEST_TOL6); + TEST(gsl_cdf_laplace_Pinv, (9.9977183804970948e-01,1.3), 1.000000000000e+01, TEST_TOL6); + TEST(gsl_cdf_laplace_P, (1.0000000000000000e+02,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_laplace_P, (1.0000000000000000e+03,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_laplace_P, (1.0000000000000000e+04,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_laplace_P, (1.0000000000000000e+05,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_laplace_P, (1.0000000000000000e+06,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_laplace_P, (1.0000000000000000e+07,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_laplace_P, (1.0000000000000000e+08,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_laplace_P, (1.0000000000000000e+09,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_laplace_P, (1.0000000000000000e+10,1.3), 1.000000000000e+00, TEST_TOL6); + + TEST(gsl_cdf_laplace_Q, (1.0000000000000000e+10,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_laplace_Q, (1.0000000000000000e+09,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_laplace_Q, (1.0000000000000000e+08,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_laplace_Q, (1.0000000000000000e+07,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_laplace_Q, (1.0000000000000000e+06,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_laplace_Q, (1.0000000000000000e+05,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_laplace_Q, (1.0000000000000000e+04,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_laplace_Q, (1.0000000000000000e+03,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_laplace_Q, (1.0000000000000000e+02,1.3), 1.957501779912e-34, TEST_TOL6); + TEST(gsl_cdf_laplace_Qinv, (1.9575017799122328e-34,1.3), 1.000000000000e+02, TEST_TOL6); + TEST(gsl_cdf_laplace_Q, (1.0000000000000000e+01,1.3), 2.281619502905e-04, TEST_TOL6); + TEST(gsl_cdf_laplace_Qinv, (2.2816195029051560e-04,1.3), 1.000000000000e+01, TEST_TOL6); + TEST(gsl_cdf_laplace_Q, (1.0000000000000000e+00,1.3), 2.316846846156e-01, TEST_TOL6); + TEST(gsl_cdf_laplace_Qinv, (2.3168468461558764e-01,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_laplace_Q, (1.0000000000000001e-01,1.3), 4.629805393212e-01, TEST_TOL6); + TEST(gsl_cdf_laplace_Qinv, (4.6298053932115801e-01,1.3), 1.000000000000e-01, TEST_TOL6); + TEST(gsl_cdf_laplace_Q, (1.0000000000000000e-02,1.3), 4.961686011956e-01, TEST_TOL6); + TEST(gsl_cdf_laplace_Qinv, (4.9616860119557432e-01,1.3), 1.000000000000e-02, TEST_TOL6); + TEST(gsl_cdf_laplace_Q, (1.0000000000000000e-03,1.3), 4.996155325065e-01, TEST_TOL6); + TEST(gsl_cdf_laplace_Qinv, (4.9961553250645546e-01,1.3), 1.000000000000e-03, TEST_TOL6); + TEST(gsl_cdf_laplace_Q, (1.0000000000000000e-04,1.3), 4.999615399408e-01, TEST_TOL6); + TEST(gsl_cdf_laplace_Q, (1.0000000000000001e-05,1.3), 4.999961538609e-01, TEST_TOL6); + TEST(gsl_cdf_laplace_Q, (9.9999999999999995e-07,1.3), 4.999996153848e-01, TEST_TOL6); + TEST(gsl_cdf_laplace_Q, (9.9999999999999995e-08,1.3), 4.999999615385e-01, TEST_TOL6); + TEST(gsl_cdf_laplace_Q, (1.0000000000000000e-08,1.3), 4.999999961538e-01, TEST_TOL6); + TEST(gsl_cdf_laplace_Q, (1.0000000000000001e-09,1.3), 4.999999996154e-01, TEST_TOL6); + TEST(gsl_cdf_laplace_Q, (1.0000000000000000e-10,1.3), 4.999999999615e-01, TEST_TOL6); + TEST(gsl_cdf_laplace_Q, (0.0000000000000000e+00,1.3), 5.000000000000e-01, TEST_TOL6); + TEST(gsl_cdf_laplace_Qinv, (5.0000000000000000e-01,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_laplace_Q, (-1.0000000000000000e-10,1.3), 5.000000000385e-01, TEST_TOL6); + TEST(gsl_cdf_laplace_Q, (-1.0000000000000001e-09,1.3), 5.000000003846e-01, TEST_TOL6); + TEST(gsl_cdf_laplace_Q, (-1.0000000000000000e-08,1.3), 5.000000038462e-01, TEST_TOL6); + TEST(gsl_cdf_laplace_Q, (-9.9999999999999995e-08,1.3), 5.000000384615e-01, TEST_TOL6); + TEST(gsl_cdf_laplace_Q, (-9.9999999999999995e-07,1.3), 5.000003846152e-01, TEST_TOL6); + TEST(gsl_cdf_laplace_Q, (-1.0000000000000001e-05,1.3), 5.000038461391e-01, TEST_TOL6); + TEST(gsl_cdf_laplace_Q, (-1.0000000000000000e-04,1.3), 5.000384600592e-01, TEST_TOL6); + TEST(gsl_cdf_laplace_Q, (-1.0000000000000000e-03,1.3), 5.003844674935e-01, TEST_TOL6); + TEST(gsl_cdf_laplace_Qinv, (5.0038446749354448e-01,1.3), -1.000000000000e-03, TEST_TOL6); + TEST(gsl_cdf_laplace_Q, (-1.0000000000000000e-02,1.3), 5.038313988044e-01, TEST_TOL6); + TEST(gsl_cdf_laplace_Qinv, (5.0383139880442562e-01,1.3), -1.000000000000e-02, TEST_TOL6); + TEST(gsl_cdf_laplace_Q, (-1.0000000000000001e-01,1.3), 5.370194606788e-01, TEST_TOL6); + TEST(gsl_cdf_laplace_Qinv, (5.3701946067884199e-01,1.3), -1.000000000000e-01, TEST_TOL6); + TEST(gsl_cdf_laplace_Q, (-1.0000000000000000e+00,1.3), 7.683153153844e-01, TEST_TOL6); + TEST(gsl_cdf_laplace_Qinv, (7.6831531538441233e-01,1.3), -1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_laplace_Q, (-1.0000000000000000e+01,1.3), 9.997718380497e-01, TEST_TOL6); + TEST(gsl_cdf_laplace_Qinv, (9.9977183804970948e-01,1.3), -1.000000000000e+01, TEST_TOL6); + TEST(gsl_cdf_laplace_Q, (-1.0000000000000000e+02,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_laplace_Q, (-1.0000000000000000e+03,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_laplace_Q, (-1.0000000000000000e+04,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_laplace_Q, (-1.0000000000000000e+05,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_laplace_Q, (-1.0000000000000000e+06,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_laplace_Q, (-1.0000000000000000e+07,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_laplace_Q, (-1.0000000000000000e+08,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_laplace_Q, (-1.0000000000000000e+09,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_laplace_Q, (-1.0000000000000000e+10,1.3), 1.000000000000e+00, TEST_TOL6); +} + +void test_auto_rayleigh (void); + +void +test_auto_rayleigh (void) +{ + TEST(gsl_cdf_rayleigh_P, (0.0000000000000000e+00,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_rayleigh_P, (1.0000000000000000e-10,1.3), 2.958579881657e-21, TEST_TOL6); + TEST(gsl_cdf_rayleigh_Pinv, (2.9585798816568050e-21,1.3), 1.000000000000e-10, TEST_TOL6); + TEST(gsl_cdf_rayleigh_P, (1.0000000000000001e-09,1.3), 2.958579881657e-19, TEST_TOL6); + TEST(gsl_cdf_rayleigh_Pinv, (2.9585798816568049e-19,1.3), 1.000000000000e-09, TEST_TOL6); + TEST(gsl_cdf_rayleigh_P, (1.0000000000000000e-08,1.3), 2.958579881657e-17, TEST_TOL6); + TEST(gsl_cdf_rayleigh_Pinv, (2.9585798816568048e-17,1.3), 1.000000000000e-08, TEST_TOL6); + TEST(gsl_cdf_rayleigh_P, (9.9999999999999995e-08,1.3), 2.958579881657e-15, TEST_TOL6); + TEST(gsl_cdf_rayleigh_Pinv, (2.9585798816568001e-15,1.3), 1.000000000000e-07, TEST_TOL6); + TEST(gsl_cdf_rayleigh_P, (9.9999999999999995e-07,1.3), 2.958579881656e-13, TEST_TOL6); + TEST(gsl_cdf_rayleigh_Pinv, (2.9585798816563665e-13,1.3), 1.000000000000e-06, TEST_TOL6); + TEST(gsl_cdf_rayleigh_P, (1.0000000000000001e-05,1.3), 2.958579881613e-11, TEST_TOL6); + TEST(gsl_cdf_rayleigh_Pinv, (2.9585798816130393e-11,1.3), 1.000000000000e-05, TEST_TOL6); + TEST(gsl_cdf_rayleigh_P, (1.0000000000000000e-04,1.3), 2.958579877280e-09, TEST_TOL6); + TEST(gsl_cdf_rayleigh_Pinv, (2.9585798772802076e-09,1.3), 1.000000000000e-04, TEST_TOL6); + TEST(gsl_cdf_rayleigh_P, (1.0000000000000000e-03,1.3), 2.958579443997e-07, TEST_TOL6); + TEST(gsl_cdf_rayleigh_Pinv, (2.9585794439971025e-07,1.3), 1.000000000000e-03, TEST_TOL6); + TEST(gsl_cdf_rayleigh_P, (1.0000000000000000e-02,1.3), 2.958536116114e-05, TEST_TOL6); + TEST(gsl_cdf_rayleigh_Pinv, (2.9585361161138382e-05,1.3), 1.000000000000e-02, TEST_TOL6); + TEST(gsl_cdf_rayleigh_P, (1.0000000000000001e-01,1.3), 2.954207597179e-03, TEST_TOL6); + TEST(gsl_cdf_rayleigh_Pinv, (2.9542075971792496e-03,1.3), 1.000000000000e-01, TEST_TOL6); + TEST(gsl_cdf_rayleigh_P, (1.0000000000000000e+00,1.3), 2.561069378624e-01, TEST_TOL6); + TEST(gsl_cdf_rayleigh_Pinv, (2.5610693786235361e-01,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_rayleigh_P, (1.0000000000000000e+01,1.3), 9.999999999999e-01, TEST_TOL6); + TEST(gsl_cdf_rayleigh_P, (1.0000000000000000e+02,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_rayleigh_P, (1.0000000000000000e+03,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_rayleigh_P, (1.0000000000000000e+04,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_rayleigh_P, (1.0000000000000000e+05,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_rayleigh_P, (1.0000000000000000e+06,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_rayleigh_P, (1.0000000000000000e+07,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_rayleigh_P, (1.0000000000000000e+08,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_rayleigh_P, (1.0000000000000000e+09,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_rayleigh_P, (1.0000000000000000e+10,1.3), 1.000000000000e+00, TEST_TOL6); + + TEST(gsl_cdf_rayleigh_Q, (1.0000000000000000e+10,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_rayleigh_Q, (1.0000000000000000e+09,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_rayleigh_Q, (1.0000000000000000e+08,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_rayleigh_Q, (1.0000000000000000e+07,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_rayleigh_Q, (1.0000000000000000e+06,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_rayleigh_Q, (1.0000000000000000e+05,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_rayleigh_Q, (1.0000000000000000e+04,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_rayleigh_Q, (1.0000000000000000e+03,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_rayleigh_Q, (1.0000000000000000e+02,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_rayleigh_Q, (1.0000000000000000e+01,1.3), 1.415959498849e-13, TEST_TOL6); + TEST(gsl_cdf_rayleigh_Qinv, (1.4159594988487832e-13,1.3), 1.000000000000e+01, TEST_TOL6); + TEST(gsl_cdf_rayleigh_Q, (1.0000000000000000e+00,1.3), 7.438930621376e-01, TEST_TOL6); + TEST(gsl_cdf_rayleigh_Qinv, (7.4389306213764639e-01,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_rayleigh_Q, (1.0000000000000001e-01,1.3), 9.970457924028e-01, TEST_TOL6); + TEST(gsl_cdf_rayleigh_Qinv, (9.9704579240282076e-01,1.3), 1.000000000000e-01, TEST_TOL6); + TEST(gsl_cdf_rayleigh_Q, (1.0000000000000000e-02,1.3), 9.999704146388e-01, TEST_TOL6); + TEST(gsl_cdf_rayleigh_Q, (1.0000000000000000e-03,1.3), 9.999997041421e-01, TEST_TOL6); + TEST(gsl_cdf_rayleigh_Q, (1.0000000000000000e-04,1.3), 9.999999970414e-01, TEST_TOL6); + TEST(gsl_cdf_rayleigh_Q, (1.0000000000000001e-05,1.3), 9.999999999704e-01, TEST_TOL6); + TEST(gsl_cdf_rayleigh_Q, (9.9999999999999995e-07,1.3), 9.999999999997e-01, TEST_TOL6); + TEST(gsl_cdf_rayleigh_Q, (9.9999999999999995e-08,1.3), 1.000000000000e-00, TEST_TOL6); + TEST(gsl_cdf_rayleigh_Q, (1.0000000000000000e-08,1.3), 1.000000000000e-00, TEST_TOL6); + TEST(gsl_cdf_rayleigh_Q, (1.0000000000000001e-09,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_rayleigh_Q, (1.0000000000000000e-10,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_rayleigh_Q, (0.0000000000000000e+00,1.3), 1.000000000000e+00, TEST_TOL6); +} + +void test_auto_flat (void); + +void +test_auto_flat (void) +{ + TEST(gsl_cdf_flat_P, (0.0000000000000000e+00,1.3,750.0), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_flat_P, (1.0000000000000000e-10,1.3,750.0), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_flat_P, (1.0000000000000001e-09,1.3,750.0), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_flat_P, (1.0000000000000000e-08,1.3,750.0), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_flat_P, (9.9999999999999995e-08,1.3,750.0), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_flat_P, (9.9999999999999995e-07,1.3,750.0), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_flat_P, (1.0000000000000001e-05,1.3,750.0), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_flat_P, (1.0000000000000000e-04,1.3,750.0), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_flat_P, (1.0000000000000000e-03,1.3,750.0), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_flat_P, (1.0000000000000000e-02,1.3,750.0), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_flat_P, (1.0000000000000001e-01,1.3,750.0), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_flat_P, (1.0000000000000000e+00,1.3,750.0), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_flat_P, (1.0000000000000000e+01,1.3,750.0), 1.162014157874e-02, TEST_TOL6); + TEST(gsl_cdf_flat_Pinv, (1.1620141578738545e-02,1.3,750.0), 1.000000000000e+01, TEST_TOL6); + TEST(gsl_cdf_flat_P, (1.0000000000000000e+02,1.3,750.0), 1.318285027381e-01, TEST_TOL6); + TEST(gsl_cdf_flat_Pinv, (1.3182850273808142e-01,1.3,750.0), 1.000000000000e+02, TEST_TOL6); + TEST(gsl_cdf_flat_P, (1.0000000000000000e+03,1.3,750.0), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_flat_P, (1.0000000000000000e+04,1.3,750.0), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_flat_P, (1.0000000000000000e+05,1.3,750.0), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_flat_P, (1.0000000000000000e+06,1.3,750.0), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_flat_P, (1.0000000000000000e+07,1.3,750.0), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_flat_P, (1.0000000000000000e+08,1.3,750.0), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_flat_P, (1.0000000000000000e+09,1.3,750.0), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_flat_P, (1.0000000000000000e+10,1.3,750.0), 1.000000000000e+00, TEST_TOL6); + + TEST(gsl_cdf_flat_Q, (1.0000000000000000e+10,1.3,750.0), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_flat_Q, (1.0000000000000000e+09,1.3,750.0), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_flat_Q, (1.0000000000000000e+08,1.3,750.0), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_flat_Q, (1.0000000000000000e+07,1.3,750.0), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_flat_Q, (1.0000000000000000e+06,1.3,750.0), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_flat_Q, (1.0000000000000000e+05,1.3,750.0), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_flat_Q, (1.0000000000000000e+04,1.3,750.0), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_flat_Q, (1.0000000000000000e+03,1.3,750.0), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_flat_Q, (1.0000000000000000e+02,1.3,750.0), 8.681714972619e-01, TEST_TOL6); + TEST(gsl_cdf_flat_Qinv, (8.6817149726190368e-01,1.3,750.0), 1.000000000000e+02, TEST_TOL6); + TEST(gsl_cdf_flat_Q, (1.0000000000000000e+01,1.3,750.0), 9.883798584213e-01, TEST_TOL6); + TEST(gsl_cdf_flat_Qinv, (9.8837985842125353e-01,1.3,750.0), 1.000000000000e+01, TEST_TOL6); + TEST(gsl_cdf_flat_Q, (1.0000000000000000e+00,1.3,750.0), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_flat_Q, (1.0000000000000001e-01,1.3,750.0), 1.000000000000e-00, TEST_TOL6); + TEST(gsl_cdf_flat_Q, (1.0000000000000000e-02,1.3,750.0), 1.000000000000e-00, TEST_TOL6); + TEST(gsl_cdf_flat_Q, (1.0000000000000000e-03,1.3,750.0), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_flat_Q, (1.0000000000000000e-04,1.3,750.0), 1.000000000000e-00, TEST_TOL6); + TEST(gsl_cdf_flat_Q, (1.0000000000000001e-05,1.3,750.0), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_flat_Q, (9.9999999999999995e-07,1.3,750.0), 1.000000000000e-00, TEST_TOL6); + TEST(gsl_cdf_flat_Q, (9.9999999999999995e-08,1.3,750.0), 1.000000000000e-00, TEST_TOL6); + TEST(gsl_cdf_flat_Q, (1.0000000000000000e-08,1.3,750.0), 1.000000000000e-00, TEST_TOL6); + TEST(gsl_cdf_flat_Q, (1.0000000000000001e-09,1.3,750.0), 1.000000000000e-00, TEST_TOL6); + TEST(gsl_cdf_flat_Q, (1.0000000000000000e-10,1.3,750.0), 1.000000000000e-00, TEST_TOL6); + TEST(gsl_cdf_flat_Q, (0.0000000000000000e+00,1.3,750.0), 1.000000000000e+00, TEST_TOL6); +} + +void test_auto_lognormal (void); + +void +test_auto_lognormal (void) +{ + TEST(gsl_cdf_lognormal_P, (0.0000000000000000e+00,1.3,2.7), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_lognormal_P, (1.0000000000000000e-10,1.3,2.7), 1.034288276012e-19, TEST_TOL6); + TEST(gsl_cdf_lognormal_Pinv, (1.0342882760115472e-19,1.3,2.7), 1.000000000000e-10, TEST_TOL6); + TEST(gsl_cdf_lognormal_P, (1.0000000000000001e-09,1.3,2.7), 1.720583234428e-16, TEST_TOL6); + TEST(gsl_cdf_lognormal_Pinv, (1.7205832344275183e-16,1.3,2.7), 1.000000000000e-09, TEST_TOL6); + TEST(gsl_cdf_lognormal_P, (1.0000000000000000e-08,1.3,2.7), 1.397140696550e-13, TEST_TOL6); + TEST(gsl_cdf_lognormal_Pinv, (1.3971406965496307e-13,1.3,2.7), 1.000000000000e-08, TEST_TOL6); + TEST(gsl_cdf_lognormal_P, (9.9999999999999995e-08,1.3,2.7), 5.550354890102e-11, TEST_TOL6); + TEST(gsl_cdf_lognormal_Pinv, (5.5503548901015757e-11,1.3,2.7), 1.000000000000e-07, TEST_TOL6); + TEST(gsl_cdf_lognormal_P, (9.9999999999999995e-07,1.3,2.7), 1.082087222875e-08, TEST_TOL6); + TEST(gsl_cdf_lognormal_Pinv, (1.0820872228749844e-08,1.3,2.7), 1.000000000000e-06, TEST_TOL6); + TEST(gsl_cdf_lognormal_P, (1.0000000000000001e-05,1.3,2.7), 1.039815967490e-06, TEST_TOL6); + TEST(gsl_cdf_lognormal_Pinv, (1.0398159674903829e-06,1.3,2.7), 1.000000000000e-05, TEST_TOL6); + TEST(gsl_cdf_lognormal_P, (1.0000000000000000e-04,1.3,2.7), 4.956354352667e-05, TEST_TOL6); + TEST(gsl_cdf_lognormal_Pinv, (4.9563543526667839e-05,1.3,2.7), 1.000000000000e-04, TEST_TOL6); + TEST(gsl_cdf_lognormal_P, (1.0000000000000000e-03,1.3,2.7), 1.183246775456e-03, TEST_TOL6); + TEST(gsl_cdf_lognormal_Pinv, (1.1832467754562060e-03,1.3,2.7), 1.000000000000e-03, TEST_TOL6); + TEST(gsl_cdf_lognormal_P, (1.0000000000000000e-02,1.3,2.7), 1.436760981041e-02, TEST_TOL6); + TEST(gsl_cdf_lognormal_Pinv, (1.4367609810406523e-02,1.3,2.7), 1.000000000000e-02, TEST_TOL6); + TEST(gsl_cdf_lognormal_P, (1.0000000000000001e-01,1.3,2.7), 9.105428982941e-02, TEST_TOL6); + TEST(gsl_cdf_lognormal_Pinv, (9.1054289829405582e-02,1.3,2.7), 1.000000000000e-01, TEST_TOL6); + TEST(gsl_cdf_lognormal_P, (1.0000000000000000e+00,1.3,2.7), 3.150871690838e-01, TEST_TOL6); + TEST(gsl_cdf_lognormal_Pinv, (3.1508716908375517e-01,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_lognormal_P, (1.0000000000000000e+01,1.3,2.7), 6.448033073717e-01, TEST_TOL6); + TEST(gsl_cdf_lognormal_Pinv, (6.4480330737174019e-01,1.3,2.7), 1.000000000000e+01, TEST_TOL6); + TEST(gsl_cdf_lognormal_P, (1.0000000000000000e+02,1.3,2.7), 8.895497448370e-01, TEST_TOL6); + TEST(gsl_cdf_lognormal_Pinv, (8.8954974483702642e-01,1.3,2.7), 1.000000000000e+02, TEST_TOL6); + TEST(gsl_cdf_lognormal_P, (1.0000000000000000e+03,1.3,2.7), 9.810967467052e-01, TEST_TOL6); + TEST(gsl_cdf_lognormal_Pinv, (9.8109674670518154e-01,1.3,2.7), 1.000000000000e+03, TEST_TOL6); + TEST(gsl_cdf_lognormal_P, (1.0000000000000000e+04,1.3,2.7), 9.983038570318e-01, TEST_TOL6); + TEST(gsl_cdf_lognormal_Pinv, (9.9830385703184354e-01,1.3,2.7), 1.000000000000e+04, TEST_TOL6); + TEST(gsl_cdf_lognormal_P, (1.0000000000000000e+05,1.3,2.7), 9.999223897251e-01, TEST_TOL6); + TEST(gsl_cdf_lognormal_Pinv, (9.9992238972508574e-01,1.3,2.7), 1.000000000000e+05, TEST_TOL6); + TEST(gsl_cdf_lognormal_P, (1.0000000000000000e+06,1.3,2.7), 9.999982185389e-01, TEST_TOL6); + TEST(gsl_cdf_lognormal_P, (1.0000000000000000e+07,1.3,2.7), 9.999999796956e-01, TEST_TOL6); + TEST(gsl_cdf_lognormal_P, (1.0000000000000000e+08,1.3,2.7), 9.999999998859e-01, TEST_TOL6); + TEST(gsl_cdf_lognormal_P, (1.0000000000000000e+09,1.3,2.7), 9.999999999997e-01, TEST_TOL6); + TEST(gsl_cdf_lognormal_P, (1.0000000000000000e+10,1.3,2.7), 1.000000000000e-00, TEST_TOL6); + + TEST(gsl_cdf_lognormal_Q, (1.0000000000000000e+10,1.3,2.7), 4.255893513650e-16, TEST_TOL6); + TEST(gsl_cdf_lognormal_Qinv, (4.2558935136502785e-16,1.3,2.7), 1.000000000000e+10, TEST_TOL6); + TEST(gsl_cdf_lognormal_Q, (1.0000000000000000e+09,1.3,2.7), 3.150574023842e-13, TEST_TOL6); + TEST(gsl_cdf_lognormal_Qinv, (3.1505740238418296e-13,1.3,2.7), 1.000000000000e+09, TEST_TOL6); + TEST(gsl_cdf_lognormal_Q, (1.0000000000000000e+08,1.3,2.7), 1.141445550080e-10, TEST_TOL6); + TEST(gsl_cdf_lognormal_Qinv, (1.1414455500802107e-10,1.3,2.7), 1.000000000000e+08, TEST_TOL6); + TEST(gsl_cdf_lognormal_Q, (1.0000000000000000e+07,1.3,2.7), 2.030439602858e-08, TEST_TOL6); + TEST(gsl_cdf_lognormal_Qinv, (2.0304396028576915e-08,1.3,2.7), 1.000000000000e+07, TEST_TOL6); + TEST(gsl_cdf_lognormal_Q, (1.0000000000000000e+06,1.3,2.7), 1.781461076603e-06, TEST_TOL6); + TEST(gsl_cdf_lognormal_Qinv, (1.7814610766031938e-06,1.3,2.7), 1.000000000000e+06, TEST_TOL6); + TEST(gsl_cdf_lognormal_Q, (1.0000000000000000e+05,1.3,2.7), 7.761027491429e-05, TEST_TOL6); + TEST(gsl_cdf_lognormal_Qinv, (7.7610274914290006e-05,1.3,2.7), 1.000000000000e+05, TEST_TOL6); + TEST(gsl_cdf_lognormal_Q, (1.0000000000000000e+04,1.3,2.7), 1.696142968157e-03, TEST_TOL6); + TEST(gsl_cdf_lognormal_Qinv, (1.6961429681565346e-03,1.3,2.7), 1.000000000000e+04, TEST_TOL6); + TEST(gsl_cdf_lognormal_Q, (1.0000000000000000e+03,1.3,2.7), 1.890325329482e-02, TEST_TOL6); + TEST(gsl_cdf_lognormal_Qinv, (1.8903253294818529e-02,1.3,2.7), 1.000000000000e+03, TEST_TOL6); + TEST(gsl_cdf_lognormal_Q, (1.0000000000000000e+02,1.3,2.7), 1.104502551630e-01, TEST_TOL6); + TEST(gsl_cdf_lognormal_Qinv, (1.1045025516297369e-01,1.3,2.7), 1.000000000000e+02, TEST_TOL6); + TEST(gsl_cdf_lognormal_Q, (1.0000000000000000e+01,1.3,2.7), 3.551966926283e-01, TEST_TOL6); + TEST(gsl_cdf_lognormal_Qinv, (3.5519669262825992e-01,1.3,2.7), 1.000000000000e+01, TEST_TOL6); + TEST(gsl_cdf_lognormal_Q, (1.0000000000000000e+00,1.3,2.7), 6.849128309162e-01, TEST_TOL6); + TEST(gsl_cdf_lognormal_Qinv, (6.8491283091624500e-01,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_lognormal_Q, (1.0000000000000001e-01,1.3,2.7), 9.089457101706e-01, TEST_TOL6); + TEST(gsl_cdf_lognormal_Qinv, (9.0894571017059467e-01,1.3,2.7), 1.000000000000e-01, TEST_TOL6); + TEST(gsl_cdf_lognormal_Q, (1.0000000000000000e-02,1.3,2.7), 9.856323901896e-01, TEST_TOL6); + TEST(gsl_cdf_lognormal_Qinv, (9.8563239018959370e-01,1.3,2.7), 1.000000000000e-02, TEST_TOL6); + TEST(gsl_cdf_lognormal_Q, (1.0000000000000000e-03,1.3,2.7), 9.988167532245e-01, TEST_TOL6); + TEST(gsl_cdf_lognormal_Qinv, (9.9881675322454400e-01,1.3,2.7), 1.000000000000e-03, TEST_TOL6); + TEST(gsl_cdf_lognormal_Q, (1.0000000000000000e-04,1.3,2.7), 9.999504364565e-01, TEST_TOL6); + TEST(gsl_cdf_lognormal_Q, (1.0000000000000001e-05,1.3,2.7), 9.999989601840e-01, TEST_TOL6); + TEST(gsl_cdf_lognormal_Q, (9.9999999999999995e-07,1.3,2.7), 9.999999891791e-01, TEST_TOL6); + TEST(gsl_cdf_lognormal_Q, (9.9999999999999995e-08,1.3,2.7), 9.999999999445e-01, TEST_TOL6); + TEST(gsl_cdf_lognormal_Q, (1.0000000000000000e-08,1.3,2.7), 9.999999999999e-01, TEST_TOL6); + TEST(gsl_cdf_lognormal_Q, (1.0000000000000001e-09,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_lognormal_Q, (1.0000000000000000e-10,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_lognormal_Q, (0.0000000000000000e+00,1.3,2.7), 1.000000000000e+00, TEST_TOL6); +} + +void test_auto_gamma (void); + +void +test_auto_gamma (void) +{ + TEST(gsl_cdf_gamma_P, (0.0000000000000000e+00,1.3,2.7), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gamma_P, (1.0000000000000000e-10,1.3,2.7), 2.356478475164e-14, TEST_TOL6); + TEST(gsl_cdf_gamma_Pinv, (2.3564784751638661e-14,1.3,2.7), 1.000000000000e-10, TEST_TOL6); + TEST(gsl_cdf_gamma_P, (1.0000000000000001e-09,1.3,2.7), 4.701792696644e-13, TEST_TOL6); + TEST(gsl_cdf_gamma_Pinv, (4.7017926966439445e-13,1.3,2.7), 1.000000000000e-09, TEST_TOL6); + TEST(gsl_cdf_gamma_P, (1.0000000000000000e-08,1.3,2.7), 9.381309762735e-12, TEST_TOL6); + TEST(gsl_cdf_gamma_Pinv, (9.3813097627346386e-12,1.3,2.7), 1.000000000000e-08, TEST_TOL6); + TEST(gsl_cdf_gamma_P, (9.9999999999999995e-08,1.3,2.7), 1.871817348197e-10, TEST_TOL6); + TEST(gsl_cdf_gamma_Pinv, (1.8718173481972823e-10,1.3,2.7), 1.000000000000e-07, TEST_TOL6); + TEST(gsl_cdf_gamma_P, (9.9999999999999995e-07,1.3,2.7), 3.734765911711e-09, TEST_TOL6); + TEST(gsl_cdf_gamma_Pinv, (3.7347659117114240e-09,1.3,2.7), 1.000000000000e-06, TEST_TOL6); + TEST(gsl_cdf_gamma_P, (1.0000000000000001e-05,1.3,2.7), 7.451823639191e-08, TEST_TOL6); + TEST(gsl_cdf_gamma_Pinv, (7.4518236391910116e-08,1.3,2.7), 1.000000000000e-05, TEST_TOL6); + TEST(gsl_cdf_gamma_P, (1.0000000000000000e-04,1.3,2.7), 1.486806276026e-06, TEST_TOL6); + TEST(gsl_cdf_gamma_Pinv, (1.4868062760263472e-06,1.3,2.7), 1.000000000000e-04, TEST_TOL6); + TEST(gsl_cdf_gamma_P, (1.0000000000000000e-03,1.3,2.7), 2.966009681152e-05, TEST_TOL6); + TEST(gsl_cdf_gamma_Pinv, (2.9660096811518665e-05,1.3,2.7), 1.000000000000e-03, TEST_TOL6); + TEST(gsl_cdf_gamma_P, (1.0000000000000000e-02,1.3,2.7), 5.906831032950e-04, TEST_TOL6); + TEST(gsl_cdf_gamma_Pinv, (5.9068310329499826e-04,1.3,2.7), 1.000000000000e-02, TEST_TOL6); + TEST(gsl_cdf_gamma_P, (1.0000000000000001e-01,1.3,2.7), 1.156629233128e-02, TEST_TOL6); + TEST(gsl_cdf_gamma_Pinv, (1.1566292331279586e-02,1.3,2.7), 1.000000000000e-01, TEST_TOL6); + TEST(gsl_cdf_gamma_P, (1.0000000000000000e+00,1.3,2.7), 1.921237769663e-01, TEST_TOL6); + TEST(gsl_cdf_gamma_Pinv, (1.9212377696630473e-01,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gamma_P, (1.0000000000000000e+01,1.3,2.7), 9.565035356115e-01, TEST_TOL6); + TEST(gsl_cdf_gamma_Pinv, (9.5650353561153789e-01,1.3,2.7), 1.000000000000e+01, TEST_TOL6); + TEST(gsl_cdf_gamma_P, (1.0000000000000000e+02,1.3,2.7), 1.000000000000e-00, TEST_TOL6); + TEST(gsl_cdf_gamma_P, (1.0000000000000000e+03,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gamma_P, (1.0000000000000000e+04,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gamma_P, (1.0000000000000000e+05,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gamma_P, (1.0000000000000000e+06,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gamma_P, (1.0000000000000000e+07,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gamma_P, (1.0000000000000000e+08,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gamma_P, (1.0000000000000000e+09,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gamma_P, (1.0000000000000000e+10,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + + TEST(gsl_cdf_gamma_Q, (1.0000000000000000e+10,1.3,2.7), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gamma_Q, (1.0000000000000000e+09,1.3,2.7), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gamma_Q, (1.0000000000000000e+08,1.3,2.7), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gamma_Q, (1.0000000000000000e+07,1.3,2.7), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gamma_Q, (1.0000000000000000e+06,1.3,2.7), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gamma_Q, (1.0000000000000000e+05,1.3,2.7), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gamma_Q, (1.0000000000000000e+04,1.3,2.7), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gamma_Q, (1.0000000000000000e+03,1.3,2.7), 9.292091038794e-161, TEST_TOL6); + TEST(gsl_cdf_gamma_Qinv, (9.2920910387939860e-161,1.3,2.7), 1.000000000000e+03, TEST_TOL6); + TEST(gsl_cdf_gamma_Q, (1.0000000000000000e+02,1.3,2.7), 2.729167976527e-16, TEST_TOL6); + TEST(gsl_cdf_gamma_Qinv, (2.7291679765273174e-16,1.3,2.7), 1.000000000000e+02, TEST_TOL6); + TEST(gsl_cdf_gamma_Q, (1.0000000000000000e+01,1.3,2.7), 4.349646438846e-02, TEST_TOL6); + TEST(gsl_cdf_gamma_Qinv, (4.3496464388462192e-02,1.3,2.7), 1.000000000000e+01, TEST_TOL6); + TEST(gsl_cdf_gamma_Q, (1.0000000000000000e+00,1.3,2.7), 8.078762230337e-01, TEST_TOL6); + TEST(gsl_cdf_gamma_Qinv, (8.0787622303369533e-01,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gamma_Q, (1.0000000000000001e-01,1.3,2.7), 9.884337076687e-01, TEST_TOL6); + TEST(gsl_cdf_gamma_Qinv, (9.8843370766872041e-01,1.3,2.7), 1.000000000000e-01, TEST_TOL6); + TEST(gsl_cdf_gamma_Q, (1.0000000000000000e-02,1.3,2.7), 9.994093168967e-01, TEST_TOL6); + TEST(gsl_cdf_gamma_Qinv, (9.9940931689670498e-01,1.3,2.7), 1.000000000000e-02, TEST_TOL6); + TEST(gsl_cdf_gamma_Q, (1.0000000000000000e-03,1.3,2.7), 9.999703399032e-01, TEST_TOL6); + TEST(gsl_cdf_gamma_Q, (1.0000000000000000e-04,1.3,2.7), 9.999985131937e-01, TEST_TOL6); + TEST(gsl_cdf_gamma_Q, (1.0000000000000001e-05,1.3,2.7), 9.999999254818e-01, TEST_TOL6); + TEST(gsl_cdf_gamma_Q, (9.9999999999999995e-07,1.3,2.7), 9.999999962652e-01, TEST_TOL6); + TEST(gsl_cdf_gamma_Q, (9.9999999999999995e-08,1.3,2.7), 9.999999998128e-01, TEST_TOL6); + TEST(gsl_cdf_gamma_Q, (1.0000000000000000e-08,1.3,2.7), 9.999999999906e-01, TEST_TOL6); + TEST(gsl_cdf_gamma_Q, (1.0000000000000001e-09,1.3,2.7), 9.999999999995e-01, TEST_TOL6); + TEST(gsl_cdf_gamma_Q, (1.0000000000000000e-10,1.3,2.7), 1.000000000000e-00, TEST_TOL6); + TEST(gsl_cdf_gamma_Q, (0.0000000000000000e+00,1.3,2.7), 1.000000000000e+00, TEST_TOL6); +} + +void test_auto_chisq (void); + +void +test_auto_chisq (void) +{ + TEST(gsl_cdf_chisq_P, (0.0000000000000000e+00,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_chisq_P, (1.0000000000000000e-10,1.3), 2.238884178785e-07, TEST_TOL6); + TEST(gsl_cdf_chisq_Pinv, (2.2388841787852728e-07,1.3), 1.000000000000e-10, TEST_TOL6); + TEST(gsl_cdf_chisq_P, (1.0000000000000001e-09,1.3), 1.000072827212e-06, TEST_TOL6); + TEST(gsl_cdf_chisq_Pinv, (1.0000728272124926e-06,1.3), 1.000000000000e-09, TEST_TOL6); + TEST(gsl_cdf_chisq_P, (1.0000000000000000e-08,1.3), 4.467161220799e-06, TEST_TOL6); + TEST(gsl_cdf_chisq_Pinv, (4.4671612207994108e-06,1.3), 1.000000000000e-08, TEST_TOL6); + TEST(gsl_cdf_chisq_P, (9.9999999999999995e-08,1.3), 1.995407585451e-05, TEST_TOL6); + TEST(gsl_cdf_chisq_Pinv, (1.9954075854510294e-05,1.3), 1.000000000000e-07, TEST_TOL6); + TEST(gsl_cdf_chisq_P, (9.9999999999999995e-07,1.3), 8.913156700686e-05, TEST_TOL6); + TEST(gsl_cdf_chisq_Pinv, (8.9131567006858211e-05,1.3), 1.000000000000e-06, TEST_TOL6); + TEST(gsl_cdf_chisq_P, (1.0000000000000001e-05,1.3), 3.981353794611e-04, TEST_TOL6); + TEST(gsl_cdf_chisq_Pinv, (3.9813537946105002e-04,1.3), 1.000000000000e-05, TEST_TOL6); + TEST(gsl_cdf_chisq_P, (1.0000000000000000e-04,1.3), 1.778373888800e-03, TEST_TOL6); + TEST(gsl_cdf_chisq_Pinv, (1.7783738888003920e-03,1.3), 1.000000000000e-04, TEST_TOL6); + TEST(gsl_cdf_chisq_P, (1.0000000000000000e-03,1.3), 7.942296379590e-03, TEST_TOL6); + TEST(gsl_cdf_chisq_Pinv, (7.9422963795896199e-03,1.3), 1.000000000000e-03, TEST_TOL6); + TEST(gsl_cdf_chisq_P, (1.0000000000000000e-02,1.3), 3.541413902540e-02, TEST_TOL6); + TEST(gsl_cdf_chisq_Pinv, (3.5414139025402407e-02,1.3), 1.000000000000e-02, TEST_TOL6); + TEST(gsl_cdf_chisq_P, (1.0000000000000001e-01,1.3), 1.554268895840e-01, TEST_TOL6); + TEST(gsl_cdf_chisq_Pinv, (1.5542688958403586e-01,1.3), 1.000000000000e-01, TEST_TOL6); + TEST(gsl_cdf_chisq_P, (1.0000000000000000e+00,1.3), 5.878620132779e-01, TEST_TOL6); + TEST(gsl_cdf_chisq_Pinv, (5.8786201327788579e-01,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_chisq_P, (1.0000000000000000e+01,1.3), 9.973867890205e-01, TEST_TOL6); + TEST(gsl_cdf_chisq_Pinv, (9.9738678902053046e-01,1.3), 1.000000000000e+01, TEST_TOL6); + TEST(gsl_cdf_chisq_P, (1.0000000000000000e+02,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_chisq_P, (1.0000000000000000e+03,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_chisq_P, (1.0000000000000000e+04,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_chisq_P, (1.0000000000000000e+05,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_chisq_P, (1.0000000000000000e+06,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_chisq_P, (1.0000000000000000e+07,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_chisq_P, (1.0000000000000000e+08,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_chisq_P, (1.0000000000000000e+09,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_chisq_P, (1.0000000000000000e+10,1.3), 1.000000000000e+00, TEST_TOL6); + + TEST(gsl_cdf_chisq_Q, (1.0000000000000000e+10,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_chisq_Q, (1.0000000000000000e+09,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_chisq_Q, (1.0000000000000000e+08,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_chisq_Q, (1.0000000000000000e+07,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_chisq_Q, (1.0000000000000000e+06,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_chisq_Q, (1.0000000000000000e+05,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_chisq_Q, (1.0000000000000000e+04,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_chisq_Q, (1.0000000000000000e+03,1.3), 5.840240518729e-219, TEST_TOL6); + TEST(gsl_cdf_chisq_Qinv, (5.8402405187288964e-219,1.3), 1.000000000000e+03, TEST_TOL6); + TEST(gsl_cdf_chisq_Q, (1.0000000000000000e+02,1.3), 3.517864771108e-23, TEST_TOL6); + TEST(gsl_cdf_chisq_Qinv, (3.5178647711076648e-23,1.3), 1.000000000000e+02, TEST_TOL6); + TEST(gsl_cdf_chisq_Q, (1.0000000000000000e+01,1.3), 2.613210979470e-03, TEST_TOL6); + TEST(gsl_cdf_chisq_Qinv, (2.6132109794696230e-03,1.3), 1.000000000000e+01, TEST_TOL6); + TEST(gsl_cdf_chisq_Q, (1.0000000000000000e+00,1.3), 4.121379867221e-01, TEST_TOL6); + TEST(gsl_cdf_chisq_Qinv, (4.1213798672211427e-01,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_chisq_Q, (1.0000000000000001e-01,1.3), 8.445731104160e-01, TEST_TOL6); + TEST(gsl_cdf_chisq_Qinv, (8.4457311041596417e-01,1.3), 1.000000000000e-01, TEST_TOL6); + TEST(gsl_cdf_chisq_Q, (1.0000000000000000e-02,1.3), 9.645858609746e-01, TEST_TOL6); + TEST(gsl_cdf_chisq_Qinv, (9.6458586097459775e-01,1.3), 1.000000000000e-02, TEST_TOL6); + TEST(gsl_cdf_chisq_Q, (1.0000000000000000e-03,1.3), 9.920577036204e-01, TEST_TOL6); + TEST(gsl_cdf_chisq_Qinv, (9.9205770362041057e-01,1.3), 1.000000000000e-03, TEST_TOL6); + TEST(gsl_cdf_chisq_Q, (1.0000000000000000e-04,1.3), 9.982216261112e-01, TEST_TOL6); + TEST(gsl_cdf_chisq_Qinv, (9.9822162611119969e-01,1.3), 1.000000000000e-04, TEST_TOL6); + TEST(gsl_cdf_chisq_Q, (1.0000000000000001e-05,1.3), 9.996018646205e-01, TEST_TOL6); + TEST(gsl_cdf_chisq_Qinv, (9.9960186462053913e-01,1.3), 1.000000000000e-05, TEST_TOL6); + TEST(gsl_cdf_chisq_Q, (9.9999999999999995e-07,1.3), 9.999108684330e-01, TEST_TOL6); + TEST(gsl_cdf_chisq_Q, (9.9999999999999995e-08,1.3), 9.999800459241e-01, TEST_TOL6); + TEST(gsl_cdf_chisq_Q, (1.0000000000000000e-08,1.3), 9.999955328388e-01, TEST_TOL6); + TEST(gsl_cdf_chisq_Q, (1.0000000000000001e-09,1.3), 9.999989999272e-01, TEST_TOL6); + TEST(gsl_cdf_chisq_Q, (1.0000000000000000e-10,1.3), 9.999997761116e-01, TEST_TOL6); + TEST(gsl_cdf_chisq_Q, (0.0000000000000000e+00,1.3), 1.000000000000e+00, TEST_TOL6); +} + +void test_auto_tdist (void); + +void +test_auto_tdist (void) +{ + TEST(gsl_cdf_tdist_P, (-1.0000000000000000e+10,1.3), 3.467848111850e-14, TEST_TOL6); + TEST(gsl_cdf_tdist_Pinv, (3.4678481118500305e-14,1.3), -1.000000000000e+10, TEST_TOL6); + TEST(gsl_cdf_tdist_P, (-1.0000000000000000e+09,1.3), 6.919266651610e-13, TEST_TOL6); + TEST(gsl_cdf_tdist_Pinv, (6.9192666516103524e-13,1.3), -1.000000000000e+09, TEST_TOL6); + TEST(gsl_cdf_tdist_P, (-1.0000000000000000e+08,1.3), 1.380575199718e-11, TEST_TOL6); + TEST(gsl_cdf_tdist_Pinv, (1.3805751997179027e-11,1.3), -1.000000000000e+08, TEST_TOL6); + TEST(gsl_cdf_tdist_P, (-1.0000000000000000e+07,1.3), 2.754609668978e-10, TEST_TOL6); + TEST(gsl_cdf_tdist_Pinv, (2.7546096689777484e-10,1.3), -1.000000000000e+07, TEST_TOL6); + TEST(gsl_cdf_tdist_P, (-1.0000000000000000e+06,1.3), 5.496168864957e-09, TEST_TOL6); + TEST(gsl_cdf_tdist_Pinv, (5.4961688649569980e-09,1.3), -1.000000000000e+06, TEST_TOL6); + TEST(gsl_cdf_tdist_P, (-1.0000000000000000e+05,1.3), 1.096629861231e-07, TEST_TOL6); + TEST(gsl_cdf_tdist_Pinv, (1.0966298612314582e-07,1.3), -1.000000000000e+05, TEST_TOL6); + TEST(gsl_cdf_tdist_P, (-1.0000000000000000e+04,1.3), 2.188064222827e-06, TEST_TOL6); + TEST(gsl_cdf_tdist_Pinv, (2.1880642228271703e-06,1.3), -1.000000000000e+04, TEST_TOL6); + TEST(gsl_cdf_tdist_P, (-1.0000000000000000e+03,1.3), 4.365759541083e-05, TEST_TOL6); + TEST(gsl_cdf_tdist_Pinv, (4.3657595410833571e-05,1.3), -1.000000000000e+03, TEST_TOL6); + TEST(gsl_cdf_tdist_P, (-1.0000000000000000e+02,1.3), 8.710327647608e-04, TEST_TOL6); + TEST(gsl_cdf_tdist_Pinv, (8.7103276476079201e-04,1.3), -1.000000000000e+02, TEST_TOL6); + TEST(gsl_cdf_tdist_P, (-1.0000000000000000e+01,1.3), 1.727893386820e-02, TEST_TOL6); + TEST(gsl_cdf_tdist_Pinv, (1.7278933868204446e-02,1.3), -1.000000000000e+01, TEST_TOL6); + TEST(gsl_cdf_tdist_P, (-1.0000000000000000e+00,1.3), 2.336211937932e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_Pinv, (2.3362119379322516e-01,1.3), -1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_tdist_P, (-1.0000000000000001e-01,1.3), 4.667575980083e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_Pinv, (4.6675759800826139e-01,1.3), -1.000000000000e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_P, (-1.0000000000000000e-02,1.3), 4.966660755117e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_Pinv, (4.9666607551169606e-01,1.3), -1.000000000000e-02, TEST_TOL6); + TEST(gsl_cdf_tdist_P, (-1.0000000000000000e-03,1.3), 4.996665978189e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_Pinv, (4.9966659781887629e-01,1.3), -1.000000000000e-03, TEST_TOL6); + TEST(gsl_cdf_tdist_P, (-1.0000000000000000e-04,1.3), 4.999666597722e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_P, (-1.0000000000000001e-05,1.3), 4.999966659772e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_P, (-9.9999999999999995e-07,1.3), 4.999996665977e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_P, (-9.9999999999999995e-08,1.3), 4.999999666598e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_P, (-1.0000000000000000e-08,1.3), 4.999999966660e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_P, (-1.0000000000000001e-09,1.3), 4.999999996666e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_P, (-1.0000000000000000e-10,1.3), 4.999999999667e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_P, (0.0000000000000000e+00,1.3), 5.000000000000e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_Pinv, (4.9999999999999900e-01,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_tdist_P, (1.0000000000000000e-10,1.3), 5.000000000333e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_P, (1.0000000000000001e-09,1.3), 5.000000003334e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_P, (1.0000000000000000e-08,1.3), 5.000000033340e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_P, (9.9999999999999995e-08,1.3), 5.000000333402e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_P, (9.9999999999999995e-07,1.3), 5.000003334023e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_P, (1.0000000000000001e-05,1.3), 5.000033340228e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_P, (1.0000000000000000e-04,1.3), 5.000333402278e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_P, (1.0000000000000000e-03,1.3), 5.003334021811e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_Pinv, (5.0033340218112365e-01,1.3), 1.000000000000e-03, TEST_TOL6); + TEST(gsl_cdf_tdist_P, (1.0000000000000000e-02,1.3), 5.033339244883e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_Pinv, (5.0333392448830394e-01,1.3), 1.000000000000e-02, TEST_TOL6); + TEST(gsl_cdf_tdist_P, (1.0000000000000001e-01,1.3), 5.332424019917e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_Pinv, (5.3324240199173856e-01,1.3), 1.000000000000e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_P, (1.0000000000000000e+00,1.3), 7.663788062068e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_Pinv, (7.6637880620677490e-01,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_tdist_P, (1.0000000000000000e+01,1.3), 9.827210661318e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_Pinv, (9.8272106613179555e-01,1.3), 1.000000000000e+01, TEST_TOL6); + TEST(gsl_cdf_tdist_P, (1.0000000000000000e+02,1.3), 9.991289672352e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_Pinv, (9.9912896723523925e-01,1.3), 1.000000000000e+02, TEST_TOL6); + TEST(gsl_cdf_tdist_P, (1.0000000000000000e+03,1.3), 9.999563424046e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_P, (1.0000000000000000e+04,1.3), 9.999978119358e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_P, (1.0000000000000000e+05,1.3), 9.999998903370e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_P, (1.0000000000000000e+06,1.3), 9.999999945038e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_P, (1.0000000000000000e+07,1.3), 9.999999997245e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_P, (1.0000000000000000e+08,1.3), 9.999999999862e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_P, (1.0000000000000000e+09,1.3), 9.999999999993e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_P, (1.0000000000000000e+10,1.3), 1.000000000000e-00, TEST_TOL6); + + TEST(gsl_cdf_tdist_Q, (1.0000000000000000e+10,1.3), 3.467848111850e-14, TEST_TOL6); + TEST(gsl_cdf_tdist_Qinv, (3.4678481118500305e-14,1.3), 1.000000000000e+10, TEST_TOL6); + TEST(gsl_cdf_tdist_Q, (1.0000000000000000e+09,1.3), 6.919266651610e-13, TEST_TOL6); + TEST(gsl_cdf_tdist_Qinv, (6.9192666516103524e-13,1.3), 1.000000000000e+09, TEST_TOL6); + TEST(gsl_cdf_tdist_Q, (1.0000000000000000e+08,1.3), 1.380575199718e-11, TEST_TOL6); + TEST(gsl_cdf_tdist_Qinv, (1.3805751997179027e-11,1.3), 1.000000000000e+08, TEST_TOL6); + TEST(gsl_cdf_tdist_Q, (1.0000000000000000e+07,1.3), 2.754609668978e-10, TEST_TOL6); + TEST(gsl_cdf_tdist_Qinv, (2.7546096689777484e-10,1.3), 1.000000000000e+07, TEST_TOL6); + TEST(gsl_cdf_tdist_Q, (1.0000000000000000e+06,1.3), 5.496168864957e-09, TEST_TOL6); + TEST(gsl_cdf_tdist_Qinv, (5.4961688649569980e-09,1.3), 1.000000000000e+06, TEST_TOL6); + TEST(gsl_cdf_tdist_Q, (1.0000000000000000e+05,1.3), 1.096629861231e-07, TEST_TOL6); + TEST(gsl_cdf_tdist_Qinv, (1.0966298612314582e-07,1.3), 1.000000000000e+05, TEST_TOL6); + TEST(gsl_cdf_tdist_Q, (1.0000000000000000e+04,1.3), 2.188064222827e-06, TEST_TOL6); + TEST(gsl_cdf_tdist_Qinv, (2.1880642228271703e-06,1.3), 1.000000000000e+04, TEST_TOL6); + TEST(gsl_cdf_tdist_Q, (1.0000000000000000e+03,1.3), 4.365759541083e-05, TEST_TOL6); + TEST(gsl_cdf_tdist_Qinv, (4.3657595410833571e-05,1.3), 1.000000000000e+03, TEST_TOL6); + TEST(gsl_cdf_tdist_Q, (1.0000000000000000e+02,1.3), 8.710327647608e-04, TEST_TOL6); + TEST(gsl_cdf_tdist_Qinv, (8.7103276476079201e-04,1.3), 1.000000000000e+02, TEST_TOL6); + TEST(gsl_cdf_tdist_Q, (1.0000000000000000e+01,1.3), 1.727893386820e-02, TEST_TOL6); + TEST(gsl_cdf_tdist_Qinv, (1.7278933868204446e-02,1.3), 1.000000000000e+01, TEST_TOL6); + TEST(gsl_cdf_tdist_Q, (1.0000000000000000e+00,1.3), 2.336211937932e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_Qinv, (2.3362119379322516e-01,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_tdist_Q, (1.0000000000000001e-01,1.3), 4.667575980083e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_Qinv, (4.6675759800826139e-01,1.3), 1.000000000000e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_Q, (1.0000000000000000e-02,1.3), 4.966660755117e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_Qinv, (4.9666607551169606e-01,1.3), 1.000000000000e-02, TEST_TOL6); + TEST(gsl_cdf_tdist_Q, (1.0000000000000000e-03,1.3), 4.996665978189e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_Qinv, (4.9966659781887629e-01,1.3), 1.000000000000e-03, TEST_TOL6); + TEST(gsl_cdf_tdist_Q, (1.0000000000000000e-04,1.3), 4.999666597722e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_Q, (1.0000000000000001e-05,1.3), 4.999966659772e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_Q, (9.9999999999999995e-07,1.3), 4.999996665977e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_Q, (9.9999999999999995e-08,1.3), 4.999999666598e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_Q, (1.0000000000000000e-08,1.3), 4.999999966660e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_Q, (1.0000000000000001e-09,1.3), 4.999999996666e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_Q, (1.0000000000000000e-10,1.3), 4.999999999667e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_Q, (0.0000000000000000e+00,1.3), 5.000000000000e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_Qinv, (4.9999999999999900e-01,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_tdist_Q, (-1.0000000000000000e-10,1.3), 5.000000000333e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_Q, (-1.0000000000000001e-09,1.3), 5.000000003334e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_Q, (-1.0000000000000000e-08,1.3), 5.000000033340e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_Q, (-9.9999999999999995e-08,1.3), 5.000000333402e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_Q, (-9.9999999999999995e-07,1.3), 5.000003334023e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_Q, (-1.0000000000000001e-05,1.3), 5.000033340228e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_Q, (-1.0000000000000000e-04,1.3), 5.000333402278e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_Q, (-1.0000000000000000e-03,1.3), 5.003334021811e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_Qinv, (5.0033340218112365e-01,1.3), -1.000000000000e-03, TEST_TOL6); + TEST(gsl_cdf_tdist_Q, (-1.0000000000000000e-02,1.3), 5.033339244883e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_Qinv, (5.0333392448830394e-01,1.3), -1.000000000000e-02, TEST_TOL6); + TEST(gsl_cdf_tdist_Q, (-1.0000000000000001e-01,1.3), 5.332424019917e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_Qinv, (5.3324240199173856e-01,1.3), -1.000000000000e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_Q, (-1.0000000000000000e+00,1.3), 7.663788062068e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_Qinv, (7.6637880620677490e-01,1.3), -1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_tdist_Q, (-1.0000000000000000e+01,1.3), 9.827210661318e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_Qinv, (9.8272106613179555e-01,1.3), -1.000000000000e+01, TEST_TOL6); + TEST(gsl_cdf_tdist_Q, (-1.0000000000000000e+02,1.3), 9.991289672352e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_Qinv, (9.9912896723523925e-01,1.3), -1.000000000000e+02, TEST_TOL6); + TEST(gsl_cdf_tdist_Q, (-1.0000000000000000e+03,1.3), 9.999563424046e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_Q, (-1.0000000000000000e+04,1.3), 9.999978119358e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_Q, (-1.0000000000000000e+05,1.3), 9.999998903370e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_Q, (-1.0000000000000000e+06,1.3), 9.999999945038e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_Q, (-1.0000000000000000e+07,1.3), 9.999999997245e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_Q, (-1.0000000000000000e+08,1.3), 9.999999999862e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_Q, (-1.0000000000000000e+09,1.3), 9.999999999993e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_Q, (-1.0000000000000000e+10,1.3), 1.000000000000e-00, TEST_TOL6); +} + +void test_auto_gumbel1 (void); + +void +test_auto_gumbel1 (void) +{ + TEST(gsl_cdf_gumbel1_P, (-1.0000000000000000e+10,1.3,2.7), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gumbel1_P, (-1.0000000000000000e+09,1.3,2.7), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gumbel1_P, (-1.0000000000000000e+08,1.3,2.7), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gumbel1_P, (-1.0000000000000000e+07,1.3,2.7), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gumbel1_P, (-1.0000000000000000e+06,1.3,2.7), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gumbel1_P, (-1.0000000000000000e+05,1.3,2.7), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gumbel1_P, (-1.0000000000000000e+04,1.3,2.7), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gumbel1_P, (-1.0000000000000000e+03,1.3,2.7), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gumbel1_P, (-1.0000000000000000e+02,1.3,2.7), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gumbel1_P, (-1.0000000000000000e+01,1.3,2.7), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gumbel1_P, (-1.0000000000000000e+00,1.3,2.7), 4.981965353092e-05, TEST_TOL6); + TEST(gsl_cdf_gumbel1_Pinv, (4.9819653530918237e-05,1.3,2.7), -1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gumbel1_P, (-1.0000000000000001e-01,1.3,2.7), 4.619717476780e-02, TEST_TOL6); + TEST(gsl_cdf_gumbel1_Pinv, (4.6197174767798083e-02,1.3,2.7), -1.000000000000e-01, TEST_TOL6); + TEST(gsl_cdf_gumbel1_P, (-1.0000000000000000e-02,1.3,2.7), 6.487265128366e-02, TEST_TOL6); + TEST(gsl_cdf_gumbel1_Pinv, (6.4872651283663055e-02,1.3,2.7), -1.000000000000e-02, TEST_TOL6); + TEST(gsl_cdf_gumbel1_P, (-1.0000000000000000e-03,1.3,2.7), 6.696988203722e-02, TEST_TOL6); + TEST(gsl_cdf_gumbel1_Pinv, (6.6969882037217598e-02,1.3,2.7), -1.000000000000e-03, TEST_TOL6); + TEST(gsl_cdf_gumbel1_P, (-1.0000000000000000e-04,1.3,2.7), 6.718192621136e-02, TEST_TOL6); + TEST(gsl_cdf_gumbel1_Pinv, (6.7181926211364873e-02,1.3,2.7), -1.000000000000e-04, TEST_TOL6); + TEST(gsl_cdf_gumbel1_P, (-1.0000000000000001e-05,1.3,2.7), 6.720315385232e-02, TEST_TOL6); + TEST(gsl_cdf_gumbel1_P, (-9.9999999999999995e-07,1.3,2.7), 6.720527684866e-02, TEST_TOL6); + TEST(gsl_cdf_gumbel1_P, (-9.9999999999999995e-08,1.3,2.7), 6.720548915062e-02, TEST_TOL6); + TEST(gsl_cdf_gumbel1_P, (-1.0000000000000000e-08,1.3,2.7), 6.720551038084e-02, TEST_TOL6); + TEST(gsl_cdf_gumbel1_P, (-1.0000000000000001e-09,1.3,2.7), 6.720551250386e-02, TEST_TOL6); + TEST(gsl_cdf_gumbel1_P, (-1.0000000000000000e-10,1.3,2.7), 6.720551271616e-02, TEST_TOL6); + TEST(gsl_cdf_gumbel1_P, (0.0000000000000000e+00,1.3,2.7), 6.720551273975e-02, TEST_TOL6); + TEST(gsl_cdf_gumbel1_Pinv, (6.7205512739749951e-02,1.3,2.7), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gumbel1_P, (1.0000000000000000e-10,1.3,2.7), 6.720551276334e-02, TEST_TOL6); + TEST(gsl_cdf_gumbel1_P, (1.0000000000000001e-09,1.3,2.7), 6.720551297564e-02, TEST_TOL6); + TEST(gsl_cdf_gumbel1_P, (1.0000000000000000e-08,1.3,2.7), 6.720551509866e-02, TEST_TOL6); + TEST(gsl_cdf_gumbel1_P, (9.9999999999999995e-08,1.3,2.7), 6.720553632889e-02, TEST_TOL6); + TEST(gsl_cdf_gumbel1_P, (9.9999999999999995e-07,1.3,2.7), 6.720574863136e-02, TEST_TOL6); + TEST(gsl_cdf_gumbel1_P, (1.0000000000000001e-05,1.3,2.7), 6.720787167931e-02, TEST_TOL6); + TEST(gsl_cdf_gumbel1_P, (1.0000000000000000e-04,1.3,2.7), 6.722910448133e-02, TEST_TOL6); + TEST(gsl_cdf_gumbel1_Pinv, (6.7229104481333457e-02,1.3,2.7), 1.000000000000e-04, TEST_TOL6); + TEST(gsl_cdf_gumbel1_P, (1.0000000000000000e-03,1.3,2.7), 6.744166476190e-02, TEST_TOL6); + TEST(gsl_cdf_gumbel1_Pinv, (6.7441664761898834e-02,1.3,2.7), 1.000000000000e-03, TEST_TOL6); + TEST(gsl_cdf_gumbel1_P, (1.0000000000000000e-02,1.3,2.7), 6.959050352518e-02, TEST_TOL6); + TEST(gsl_cdf_gumbel1_Pinv, (6.9590503525179814e-02,1.3,2.7), 1.000000000000e-02, TEST_TOL6); + TEST(gsl_cdf_gumbel1_P, (1.0000000000000001e-01,1.3,2.7), 9.340058564429e-02, TEST_TOL6); + TEST(gsl_cdf_gumbel1_Pinv, (9.3400585644290435e-02,1.3,2.7), 1.000000000000e-01, TEST_TOL6); + TEST(gsl_cdf_gumbel1_P, (1.0000000000000000e+00,1.3,2.7), 4.791048360125e-01, TEST_TOL6); + TEST(gsl_cdf_gumbel1_Pinv, (4.7910483601248477e-01,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gumbel1_P, (1.0000000000000000e+01,1.3,2.7), 9.999938971292e-01, TEST_TOL6); + TEST(gsl_cdf_gumbel1_P, (1.0000000000000000e+02,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gumbel1_P, (1.0000000000000000e+03,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gumbel1_P, (1.0000000000000000e+04,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gumbel1_P, (1.0000000000000000e+05,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gumbel1_P, (1.0000000000000000e+06,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gumbel1_P, (1.0000000000000000e+07,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gumbel1_P, (1.0000000000000000e+08,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gumbel1_P, (1.0000000000000000e+09,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gumbel1_P, (1.0000000000000000e+10,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + + TEST(gsl_cdf_gumbel1_Q, (1.0000000000000000e+10,1.3,2.7), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gumbel1_Q, (1.0000000000000000e+09,1.3,2.7), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gumbel1_Q, (1.0000000000000000e+08,1.3,2.7), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gumbel1_Q, (1.0000000000000000e+07,1.3,2.7), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gumbel1_Q, (1.0000000000000000e+06,1.3,2.7), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gumbel1_Q, (1.0000000000000000e+05,1.3,2.7), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gumbel1_Q, (1.0000000000000000e+04,1.3,2.7), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gumbel1_Q, (1.0000000000000000e+03,1.3,2.7), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gumbel1_Q, (1.0000000000000000e+02,1.3,2.7), 9.398988467742e-57, TEST_TOL6); + TEST(gsl_cdf_gumbel1_Qinv, (9.3989884677416057e-57,1.3,2.7), 1.000000000000e+02, TEST_TOL6); + TEST(gsl_cdf_gumbel1_Q, (1.0000000000000000e+01,1.3,2.7), 6.102870776257e-06, TEST_TOL6); + TEST(gsl_cdf_gumbel1_Qinv, (6.1028707762572197e-06,1.3,2.7), 1.000000000000e+01, TEST_TOL6); + TEST(gsl_cdf_gumbel1_Q, (1.0000000000000000e+00,1.3,2.7), 5.208951639875e-01, TEST_TOL6); + TEST(gsl_cdf_gumbel1_Qinv, (5.2089516398751523e-01,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gumbel1_Q, (1.0000000000000001e-01,1.3,2.7), 9.065994143557e-01, TEST_TOL6); + TEST(gsl_cdf_gumbel1_Qinv, (9.0659941435570957e-01,1.3,2.7), 1.000000000000e-01, TEST_TOL6); + TEST(gsl_cdf_gumbel1_Q, (1.0000000000000000e-02,1.3,2.7), 9.304094964748e-01, TEST_TOL6); + TEST(gsl_cdf_gumbel1_Qinv, (9.3040949647482019e-01,1.3,2.7), 1.000000000000e-02, TEST_TOL6); + TEST(gsl_cdf_gumbel1_Q, (1.0000000000000000e-03,1.3,2.7), 9.325583352381e-01, TEST_TOL6); + TEST(gsl_cdf_gumbel1_Qinv, (9.3255833523810117e-01,1.3,2.7), 1.000000000000e-03, TEST_TOL6); + TEST(gsl_cdf_gumbel1_Q, (1.0000000000000000e-04,1.3,2.7), 9.327708955187e-01, TEST_TOL6); + TEST(gsl_cdf_gumbel1_Q, (1.0000000000000001e-05,1.3,2.7), 9.327921283207e-01, TEST_TOL6); + TEST(gsl_cdf_gumbel1_Q, (9.9999999999999995e-07,1.3,2.7), 9.327942513686e-01, TEST_TOL6); + TEST(gsl_cdf_gumbel1_Q, (9.9999999999999995e-08,1.3,2.7), 9.327944636711e-01, TEST_TOL6); + TEST(gsl_cdf_gumbel1_Q, (1.0000000000000000e-08,1.3,2.7), 9.327944849013e-01, TEST_TOL6); + TEST(gsl_cdf_gumbel1_Q, (1.0000000000000001e-09,1.3,2.7), 9.327944870244e-01, TEST_TOL6); + TEST(gsl_cdf_gumbel1_Q, (1.0000000000000000e-10,1.3,2.7), 9.327944872367e-01, TEST_TOL6); + TEST(gsl_cdf_gumbel1_Q, (0.0000000000000000e+00,1.3,2.7), 9.327944872603e-01, TEST_TOL6); + TEST(gsl_cdf_gumbel1_Qinv, (9.3279448726025027e-01,1.3,2.7), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gumbel1_Q, (-1.0000000000000000e-10,1.3,2.7), 9.327944872838e-01, TEST_TOL6); + TEST(gsl_cdf_gumbel1_Q, (-1.0000000000000001e-09,1.3,2.7), 9.327944874961e-01, TEST_TOL6); + TEST(gsl_cdf_gumbel1_Q, (-1.0000000000000000e-08,1.3,2.7), 9.327944896192e-01, TEST_TOL6); + TEST(gsl_cdf_gumbel1_Q, (-9.9999999999999995e-08,1.3,2.7), 9.327945108494e-01, TEST_TOL6); + TEST(gsl_cdf_gumbel1_Q, (-9.9999999999999995e-07,1.3,2.7), 9.327947231513e-01, TEST_TOL6); + TEST(gsl_cdf_gumbel1_Q, (-1.0000000000000001e-05,1.3,2.7), 9.327968461477e-01, TEST_TOL6); + TEST(gsl_cdf_gumbel1_Q, (-1.0000000000000000e-04,1.3,2.7), 9.328180737886e-01, TEST_TOL6); + TEST(gsl_cdf_gumbel1_Q, (-1.0000000000000000e-03,1.3,2.7), 9.330301179628e-01, TEST_TOL6); + TEST(gsl_cdf_gumbel1_Qinv, (9.3303011796278246e-01,1.3,2.7), -1.000000000000e-03, TEST_TOL6); + TEST(gsl_cdf_gumbel1_Q, (-1.0000000000000000e-02,1.3,2.7), 9.351273487163e-01, TEST_TOL6); + TEST(gsl_cdf_gumbel1_Qinv, (9.3512734871633696e-01,1.3,2.7), -1.000000000000e-02, TEST_TOL6); + TEST(gsl_cdf_gumbel1_Q, (-1.0000000000000001e-01,1.3,2.7), 9.538028252322e-01, TEST_TOL6); + TEST(gsl_cdf_gumbel1_Qinv, (9.5380282523220195e-01,1.3,2.7), -1.000000000000e-01, TEST_TOL6); + TEST(gsl_cdf_gumbel1_Q, (-1.0000000000000000e+00,1.3,2.7), 9.999501803465e-01, TEST_TOL6); + TEST(gsl_cdf_gumbel1_Qinv, (9.9995018034646910e-01,1.3,2.7), -1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gumbel1_Q, (-1.0000000000000000e+01,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gumbel1_Q, (-1.0000000000000000e+02,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gumbel1_Q, (-1.0000000000000000e+03,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gumbel1_Q, (-1.0000000000000000e+04,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gumbel1_Q, (-1.0000000000000000e+05,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gumbel1_Q, (-1.0000000000000000e+06,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gumbel1_Q, (-1.0000000000000000e+07,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gumbel1_Q, (-1.0000000000000000e+08,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gumbel1_Q, (-1.0000000000000000e+09,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gumbel1_Q, (-1.0000000000000000e+10,1.3,2.7), 1.000000000000e+00, TEST_TOL6); +} + +void test_auto_gumbel2 (void); + +void +test_auto_gumbel2 (void) +{ + TEST(gsl_cdf_gumbel2_P, (0.0000000000000000e+00,1.3,2.7), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gumbel2_P, (1.0000000000000000e-10,1.3,2.7), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gumbel2_P, (1.0000000000000001e-09,1.3,2.7), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gumbel2_P, (1.0000000000000000e-08,1.3,2.7), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gumbel2_P, (9.9999999999999995e-08,1.3,2.7), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gumbel2_P, (9.9999999999999995e-07,1.3,2.7), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gumbel2_P, (1.0000000000000001e-05,1.3,2.7), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gumbel2_P, (1.0000000000000000e-04,1.3,2.7), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gumbel2_P, (1.0000000000000000e-03,1.3,2.7), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gumbel2_P, (1.0000000000000000e-02,1.3,2.7), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gumbel2_P, (1.0000000000000001e-01,1.3,2.7), 4.014688368993e-24, TEST_TOL6); + TEST(gsl_cdf_gumbel2_Pinv, (4.0146883689934746e-24,1.3,2.7), 1.000000000000e-01, TEST_TOL6); + TEST(gsl_cdf_gumbel2_P, (1.0000000000000000e+00,1.3,2.7), 6.720551273975e-02, TEST_TOL6); + TEST(gsl_cdf_gumbel2_Pinv, (6.7205512739749743e-02,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gumbel2_P, (1.0000000000000000e+01,1.3,2.7), 8.734358842463e-01, TEST_TOL6); + TEST(gsl_cdf_gumbel2_Pinv, (8.7343588424628138e-01,1.3,2.7), 1.000000000000e+01, TEST_TOL6); + TEST(gsl_cdf_gumbel2_P, (1.0000000000000000e+02,1.3,2.7), 9.932408531257e-01, TEST_TOL6); + TEST(gsl_cdf_gumbel2_Pinv, (9.9324085312574451e-01,1.3,2.7), 1.000000000000e+02, TEST_TOL6); + TEST(gsl_cdf_gumbel2_P, (1.0000000000000000e+03,1.3,2.7), 9.996601479016e-01, TEST_TOL6); + TEST(gsl_cdf_gumbel2_Pinv, (9.9966014790162783e-01,1.3,2.7), 1.000000000000e+03, TEST_TOL6); + TEST(gsl_cdf_gumbel2_P, (1.0000000000000000e+04,1.3,2.7), 9.999829642968e-01, TEST_TOL6); + TEST(gsl_cdf_gumbel2_P, (1.0000000000000000e+05,1.3,2.7), 9.999991461854e-01, TEST_TOL6); + TEST(gsl_cdf_gumbel2_P, (1.0000000000000000e+06,1.3,2.7), 9.999999572079e-01, TEST_TOL6); + TEST(gsl_cdf_gumbel2_P, (1.0000000000000000e+07,1.3,2.7), 9.999999978553e-01, TEST_TOL6); + TEST(gsl_cdf_gumbel2_P, (1.0000000000000000e+08,1.3,2.7), 9.999999998925e-01, TEST_TOL6); + TEST(gsl_cdf_gumbel2_P, (1.0000000000000000e+09,1.3,2.7), 9.999999999946e-01, TEST_TOL6); + TEST(gsl_cdf_gumbel2_P, (1.0000000000000000e+10,1.3,2.7), 9.999999999997e-01, TEST_TOL6); + + TEST(gsl_cdf_gumbel2_Q, (1.0000000000000000e+10,1.3,2.7), 2.700000000000e-13, TEST_TOL6); + TEST(gsl_cdf_gumbel2_Qinv, (2.6999999999996492e-13,1.3,2.7), 1.000000000000e+10, TEST_TOL6); + TEST(gsl_cdf_gumbel2_Q, (1.0000000000000000e+09,1.3,2.7), 5.387208250401e-12, TEST_TOL6); + TEST(gsl_cdf_gumbel2_Qinv, (5.3872082504014914e-12,1.3,2.7), 1.000000000000e+09, TEST_TOL6); + TEST(gsl_cdf_gumbel2_Q, (1.0000000000000000e+08,1.3,2.7), 1.074889360437e-10, TEST_TOL6); + TEST(gsl_cdf_gumbel2_Qinv, (1.0748893604366781e-10,1.3,2.7), 1.000000000000e+08, TEST_TOL6); + TEST(gsl_cdf_gumbel2_Q, (1.0000000000000000e+07,1.3,2.7), 2.144686231456e-09, TEST_TOL6); + TEST(gsl_cdf_gumbel2_Qinv, (2.1446862314557286e-09,1.3,2.7), 1.000000000000e+07, TEST_TOL6); + TEST(gsl_cdf_gumbel2_Q, (1.0000000000000000e+06,1.3,2.7), 4.279211528087e-08, TEST_TOL6); + TEST(gsl_cdf_gumbel2_Qinv, (4.2792115280867646e-08,1.3,2.7), 1.000000000000e+06, TEST_TOL6); + TEST(gsl_cdf_gumbel2_Q, (1.0000000000000000e+05,1.3,2.7), 8.538146037456e-07, TEST_TOL6); + TEST(gsl_cdf_gumbel2_Qinv, (8.5381460374556900e-07,1.3,2.7), 1.000000000000e+05, TEST_TOL6); + TEST(gsl_cdf_gumbel2_Q, (1.0000000000000000e+04,1.3,2.7), 1.703570319173e-05, TEST_TOL6); + TEST(gsl_cdf_gumbel2_Qinv, (1.7035703191725618e-05,1.3,2.7), 1.000000000000e+04, TEST_TOL6); + TEST(gsl_cdf_gumbel2_Q, (1.0000000000000000e+03,1.3,2.7), 3.398520983725e-04, TEST_TOL6); + TEST(gsl_cdf_gumbel2_Qinv, (3.3985209837246249e-04,1.3,2.7), 1.000000000000e+03, TEST_TOL6); + TEST(gsl_cdf_gumbel2_Q, (1.0000000000000000e+02,1.3,2.7), 6.759146874256e-03, TEST_TOL6); + TEST(gsl_cdf_gumbel2_Qinv, (6.7591468742558315e-03,1.3,2.7), 1.000000000000e+02, TEST_TOL6); + TEST(gsl_cdf_gumbel2_Q, (1.0000000000000000e+01,1.3,2.7), 1.265641157537e-01, TEST_TOL6); + TEST(gsl_cdf_gumbel2_Qinv, (1.2656411575371904e-01,1.3,2.7), 1.000000000000e+01, TEST_TOL6); + TEST(gsl_cdf_gumbel2_Q, (1.0000000000000000e+00,1.3,2.7), 9.327944872603e-01, TEST_TOL6); + TEST(gsl_cdf_gumbel2_Qinv, (9.3279448726025116e-01,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gumbel2_Q, (1.0000000000000001e-01,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gumbel2_Q, (1.0000000000000000e-02,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gumbel2_Q, (1.0000000000000000e-03,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gumbel2_Q, (1.0000000000000000e-04,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gumbel2_Q, (1.0000000000000001e-05,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gumbel2_Q, (9.9999999999999995e-07,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gumbel2_Q, (9.9999999999999995e-08,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gumbel2_Q, (1.0000000000000000e-08,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gumbel2_Q, (1.0000000000000001e-09,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gumbel2_Q, (1.0000000000000000e-10,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gumbel2_Q, (0.0000000000000000e+00,1.3,2.7), 1.000000000000e+00, TEST_TOL6); +} + +void test_auto_weibull (void); + +void +test_auto_weibull (void) +{ + TEST(gsl_cdf_weibull_P, (0.0000000000000000e+00,1.3,2.7), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_weibull_P, (1.0000000000000000e-10,1.3,2.7), 4.924395760785e-28, TEST_TOL6); + TEST(gsl_cdf_weibull_Pinv, (4.9243957607852698e-28,1.3,2.7), 1.000000000000e-10, TEST_TOL6); + TEST(gsl_cdf_weibull_P, (1.0000000000000001e-09,1.3,2.7), 2.468044288634e-25, TEST_TOL6); + TEST(gsl_cdf_weibull_Pinv, (2.4680442886338381e-25,1.3,2.7), 1.000000000000e-09, TEST_TOL6); + TEST(gsl_cdf_weibull_P, (1.0000000000000000e-08,1.3,2.7), 1.236952289490e-22, TEST_TOL6); + TEST(gsl_cdf_weibull_Pinv, (1.2369522894899823e-22,1.3,2.7), 1.000000000000e-08, TEST_TOL6); + TEST(gsl_cdf_weibull_P, (9.9999999999999995e-08,1.3,2.7), 6.199446960984e-20, TEST_TOL6); + TEST(gsl_cdf_weibull_Pinv, (6.1994469609840516e-20,1.3,2.7), 1.000000000000e-07, TEST_TOL6); + TEST(gsl_cdf_weibull_P, (9.9999999999999995e-07,1.3,2.7), 3.107083672395e-17, TEST_TOL6); + TEST(gsl_cdf_weibull_Pinv, (3.1070836723945982e-17,1.3,2.7), 1.000000000000e-06, TEST_TOL6); + TEST(gsl_cdf_weibull_P, (1.0000000000000001e-05,1.3,2.7), 1.557230670416e-14, TEST_TOL6); + TEST(gsl_cdf_weibull_Pinv, (1.5572306704159031e-14,1.3,2.7), 1.000000000000e-05, TEST_TOL6); + TEST(gsl_cdf_weibull_P, (1.0000000000000000e-04,1.3,2.7), 7.804641318223e-12, TEST_TOL6); + TEST(gsl_cdf_weibull_Pinv, (7.8046413182225018e-12,1.3,2.7), 1.000000000000e-04, TEST_TOL6); + TEST(gsl_cdf_weibull_P, (1.0000000000000000e-03,1.3,2.7), 3.911586584098e-09, TEST_TOL6); + TEST(gsl_cdf_weibull_Pinv, (3.9115865840980536e-09,1.3,2.7), 1.000000000000e-03, TEST_TOL6); + TEST(gsl_cdf_weibull_P, (1.0000000000000000e-02,1.3,2.7), 1.960435341356e-06, TEST_TOL6); + TEST(gsl_cdf_weibull_Pinv, (1.9604353413559907e-06,1.3,2.7), 1.000000000000e-02, TEST_TOL6); + TEST(gsl_cdf_weibull_P, (1.0000000000000001e-01,1.3,2.7), 9.820635881537e-04, TEST_TOL6); + TEST(gsl_cdf_weibull_Pinv, (9.8206358815371392e-04,1.3,2.7), 1.000000000000e-01, TEST_TOL6); + TEST(gsl_cdf_weibull_P, (1.0000000000000000e+00,1.3,2.7), 3.888663329609e-01, TEST_TOL6); + TEST(gsl_cdf_weibull_Pinv, (3.8886633296085954e-01,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_weibull_P, (1.0000000000000000e+01,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_weibull_P, (1.0000000000000000e+02,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_weibull_P, (1.0000000000000000e+03,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_weibull_P, (1.0000000000000000e+04,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_weibull_P, (1.0000000000000000e+05,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_weibull_P, (1.0000000000000000e+06,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_weibull_P, (1.0000000000000000e+07,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_weibull_P, (1.0000000000000000e+08,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_weibull_P, (1.0000000000000000e+09,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_weibull_P, (1.0000000000000000e+10,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + + TEST(gsl_cdf_weibull_Q, (1.0000000000000000e+10,1.3,2.7), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_weibull_Q, (1.0000000000000000e+09,1.3,2.7), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_weibull_Q, (1.0000000000000000e+08,1.3,2.7), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_weibull_Q, (1.0000000000000000e+07,1.3,2.7), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_weibull_Q, (1.0000000000000000e+06,1.3,2.7), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_weibull_Q, (1.0000000000000000e+05,1.3,2.7), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_weibull_Q, (1.0000000000000000e+04,1.3,2.7), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_weibull_Q, (1.0000000000000000e+03,1.3,2.7), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_weibull_Q, (1.0000000000000000e+02,1.3,2.7), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_weibull_Q, (1.0000000000000000e+01,1.3,2.7), 6.519262004070e-108, TEST_TOL6); + TEST(gsl_cdf_weibull_Qinv, (6.5192620040698617e-108,1.3,2.7), 1.000000000000e+01, TEST_TOL6); + TEST(gsl_cdf_weibull_Q, (1.0000000000000000e+00,1.3,2.7), 6.111336670391e-01, TEST_TOL6); + TEST(gsl_cdf_weibull_Qinv, (6.1113366703914040e-01,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_weibull_Q, (1.0000000000000001e-01,1.3,2.7), 9.990179364118e-01, TEST_TOL6); + TEST(gsl_cdf_weibull_Qinv, (9.9901793641184633e-01,1.3,2.7), 1.000000000000e-01, TEST_TOL6); + TEST(gsl_cdf_weibull_Q, (1.0000000000000000e-02,1.3,2.7), 9.999980395647e-01, TEST_TOL6); + TEST(gsl_cdf_weibull_Q, (1.0000000000000000e-03,1.3,2.7), 9.999999960884e-01, TEST_TOL6); + TEST(gsl_cdf_weibull_Q, (1.0000000000000000e-04,1.3,2.7), 9.999999999922e-01, TEST_TOL6); + TEST(gsl_cdf_weibull_Q, (1.0000000000000001e-05,1.3,2.7), 1.000000000000e-00, TEST_TOL6); + TEST(gsl_cdf_weibull_Q, (9.9999999999999995e-07,1.3,2.7), 1.000000000000e-00, TEST_TOL6); + TEST(gsl_cdf_weibull_Q, (9.9999999999999995e-08,1.3,2.7), 1.000000000000e-00, TEST_TOL6); + TEST(gsl_cdf_weibull_Q, (1.0000000000000000e-08,1.3,2.7), 1.000000000000e-00, TEST_TOL6); + TEST(gsl_cdf_weibull_Q, (1.0000000000000001e-09,1.3,2.7), 1.000000000000e-00, TEST_TOL6); + TEST(gsl_cdf_weibull_Q, (1.0000000000000000e-10,1.3,2.7), 1.000000000000e-00, TEST_TOL6); + TEST(gsl_cdf_weibull_Q, (0.0000000000000000e+00,1.3,2.7), 1.000000000000e+00, TEST_TOL6); +} + +void test_auto_pareto (void); + +void +test_auto_pareto (void) +{ + TEST(gsl_cdf_pareto_P, (0.0000000000000000e+00,1.3,2.7), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_pareto_P, (1.0000000000000000e-10,1.3,2.7), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_pareto_P, (1.0000000000000001e-09,1.3,2.7), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_pareto_P, (1.0000000000000000e-08,1.3,2.7), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_pareto_P, (9.9999999999999995e-08,1.3,2.7), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_pareto_P, (9.9999999999999995e-07,1.3,2.7), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_pareto_P, (1.0000000000000001e-05,1.3,2.7), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_pareto_P, (1.0000000000000000e-04,1.3,2.7), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_pareto_P, (1.0000000000000000e-03,1.3,2.7), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_pareto_P, (1.0000000000000000e-02,1.3,2.7), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_pareto_P, (1.0000000000000001e-01,1.3,2.7), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_pareto_P, (1.0000000000000000e+00,1.3,2.7), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_pareto_P, (1.0000000000000000e+01,1.3,2.7), 8.177057822240e-01, TEST_TOL6); + TEST(gsl_cdf_pareto_Pinv, (8.1770578222395374e-01,1.3,2.7), 1.000000000000e+01, TEST_TOL6); + TEST(gsl_cdf_pareto_P, (1.0000000000000000e+02,1.3,2.7), 9.908636465287e-01, TEST_TOL6); + TEST(gsl_cdf_pareto_Pinv, (9.9086364652869807e-01,1.3,2.7), 1.000000000000e+02, TEST_TOL6); + TEST(gsl_cdf_pareto_P, (1.0000000000000000e+03,1.3,2.7), 9.995420976279e-01, TEST_TOL6); + TEST(gsl_cdf_pareto_Pinv, (9.9954209762786816e-01,1.3,2.7), 1.000000000000e+03, TEST_TOL6); + TEST(gsl_cdf_pareto_P, (1.0000000000000000e+04,1.3,2.7), 9.999770505177e-01, TEST_TOL6); + TEST(gsl_cdf_pareto_P, (1.0000000000000000e+05,1.3,2.7), 9.999988498013e-01, TEST_TOL6); + TEST(gsl_cdf_pareto_P, (1.0000000000000000e+06,1.3,2.7), 9.999999423535e-01, TEST_TOL6); + TEST(gsl_cdf_pareto_P, (1.0000000000000000e+07,1.3,2.7), 9.999999971109e-01, TEST_TOL6); + TEST(gsl_cdf_pareto_P, (1.0000000000000000e+08,1.3,2.7), 9.999999998552e-01, TEST_TOL6); + TEST(gsl_cdf_pareto_P, (1.0000000000000000e+09,1.3,2.7), 9.999999999928e-01, TEST_TOL6); + TEST(gsl_cdf_pareto_P, (1.0000000000000000e+10,1.3,2.7), 9.999999999997e-01, TEST_TOL6); + + TEST(gsl_cdf_pareto_Q, (1.0000000000000000e+10,1.3,2.7), 3.637247829654e-13, TEST_TOL6); + TEST(gsl_cdf_pareto_Qinv, (3.6372478296536173e-13,1.3,2.7), 1.000000000000e+10, TEST_TOL6); + TEST(gsl_cdf_pareto_Q, (1.0000000000000000e+09,1.3,2.7), 7.257263524710e-12, TEST_TOL6); + TEST(gsl_cdf_pareto_Qinv, (7.2572635247102111e-12,1.3,2.7), 1.000000000000e+09, TEST_TOL6); + TEST(gsl_cdf_pareto_Q, (1.0000000000000000e+08,1.3,2.7), 1.448014442065e-10, TEST_TOL6); + TEST(gsl_cdf_pareto_Qinv, (1.4480144420652496e-10,1.3,2.7), 1.000000000000e+08, TEST_TOL6); + TEST(gsl_cdf_pareto_Q, (1.0000000000000000e+07,1.3,2.7), 2.889168647783e-09, TEST_TOL6); + TEST(gsl_cdf_pareto_Qinv, (2.8891686477834784e-09,1.3,2.7), 1.000000000000e+07, TEST_TOL6); + TEST(gsl_cdf_pareto_Q, (1.0000000000000000e+06,1.3,2.7), 5.764649324512e-08, TEST_TOL6); + TEST(gsl_cdf_pareto_Qinv, (5.7646493245119715e-08,1.3,2.7), 1.000000000000e+06, TEST_TOL6); + TEST(gsl_cdf_pareto_Q, (1.0000000000000000e+05,1.3,2.7), 1.150198755621e-06, TEST_TOL6); + TEST(gsl_cdf_pareto_Qinv, (1.1501987556209536e-06,1.3,2.7), 1.000000000000e+05, TEST_TOL6); + TEST(gsl_cdf_pareto_Q, (1.0000000000000000e+04,1.3,2.7), 2.294948231815e-05, TEST_TOL6); + TEST(gsl_cdf_pareto_Qinv, (2.2949482318145872e-05,1.3,2.7), 1.000000000000e+04, TEST_TOL6); + TEST(gsl_cdf_pareto_Q, (1.0000000000000000e+03,1.3,2.7), 4.579023721744e-04, TEST_TOL6); + TEST(gsl_cdf_pareto_Qinv, (4.5790237217441070e-04,1.3,2.7), 1.000000000000e+03, TEST_TOL6); + TEST(gsl_cdf_pareto_Q, (1.0000000000000000e+02,1.3,2.7), 9.136353471345e-03, TEST_TOL6); + TEST(gsl_cdf_pareto_Qinv, (9.1363534713445622e-03,1.3,2.7), 1.000000000000e+02, TEST_TOL6); + TEST(gsl_cdf_pareto_Q, (1.0000000000000000e+01,1.3,2.7), 1.822942177761e-01, TEST_TOL6); + TEST(gsl_cdf_pareto_Qinv, (1.8229421777608898e-01,1.3,2.7), 1.000000000000e+01, TEST_TOL6); + TEST(gsl_cdf_pareto_Q, (1.0000000000000000e+00,1.3,2.7), 1.000000000000e-00, TEST_TOL6); + TEST(gsl_cdf_pareto_Q, (1.0000000000000001e-01,1.3,2.7), 1.000000000000e-00, TEST_TOL6); + TEST(gsl_cdf_pareto_Q, (1.0000000000000000e-02,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_pareto_Q, (1.0000000000000000e-03,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_pareto_Q, (1.0000000000000000e-04,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_pareto_Q, (1.0000000000000001e-05,1.3,2.7), 1.000000000000e-00, TEST_TOL6); + TEST(gsl_cdf_pareto_Q, (9.9999999999999995e-07,1.3,2.7), 1.000000000000e-00, TEST_TOL6); + TEST(gsl_cdf_pareto_Q, (9.9999999999999995e-08,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_pareto_Q, (1.0000000000000000e-08,1.3,2.7), 1.000000000000e-00, TEST_TOL6); + TEST(gsl_cdf_pareto_Q, (1.0000000000000001e-09,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_pareto_Q, (1.0000000000000000e-10,1.3,2.7), 1.000000000000e-00, TEST_TOL6); + TEST(gsl_cdf_pareto_Q, (0.0000000000000000e+00,1.3,2.7), 1.000000000000e+00, TEST_TOL6); +} + +void test_auto_logistic (void); + +void +test_auto_logistic (void) +{ + TEST(gsl_cdf_logistic_P, (-1.0000000000000000e+10,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_logistic_P, (-1.0000000000000000e+09,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_logistic_P, (-1.0000000000000000e+08,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_logistic_P, (-1.0000000000000000e+07,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_logistic_P, (-1.0000000000000000e+06,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_logistic_P, (-1.0000000000000000e+05,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_logistic_P, (-1.0000000000000000e+04,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_logistic_P, (-1.0000000000000000e+03,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_logistic_P, (-1.0000000000000000e+02,1.3), 3.915003559824e-34, TEST_TOL6); + TEST(gsl_cdf_logistic_Pinv, (3.9150035598244656e-34,1.3), -1.000000000000e+02, TEST_TOL6); + TEST(gsl_cdf_logistic_P, (-1.0000000000000000e+01,1.3), 4.561157640565e-04, TEST_TOL6); + TEST(gsl_cdf_logistic_Pinv, (4.5611576405646045e-04,1.3), -1.000000000000e+01, TEST_TOL6); + TEST(gsl_cdf_logistic_P, (-1.0000000000000000e+00,1.3), 3.166455298122e-01, TEST_TOL6); + TEST(gsl_cdf_logistic_Pinv, (3.1664552981221700e-01,1.3), -1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_logistic_P, (-1.0000000000000001e-01,1.3), 4.807787077894e-01, TEST_TOL6); + TEST(gsl_cdf_logistic_Pinv, (4.8077870778939180e-01,1.3), -1.000000000000e-01, TEST_TOL6); + TEST(gsl_cdf_logistic_P, (-1.0000000000000000e-02,1.3), 4.980769325595e-01, TEST_TOL6); + TEST(gsl_cdf_logistic_Pinv, (4.9807693255949481e-01,1.3), -1.000000000000e-02, TEST_TOL6); + TEST(gsl_cdf_logistic_P, (-1.0000000000000000e-03,1.3), 4.998076923172e-01, TEST_TOL6); + TEST(gsl_cdf_logistic_Pinv, (4.9980769231717492e-01,1.3), -1.000000000000e-03, TEST_TOL6); + TEST(gsl_cdf_logistic_P, (-1.0000000000000000e-04,1.3), 4.999807692308e-01, TEST_TOL6); + TEST(gsl_cdf_logistic_P, (-1.0000000000000001e-05,1.3), 4.999980769231e-01, TEST_TOL6); + TEST(gsl_cdf_logistic_P, (-9.9999999999999995e-07,1.3), 4.999998076923e-01, TEST_TOL6); + TEST(gsl_cdf_logistic_P, (-9.9999999999999995e-08,1.3), 4.999999807692e-01, TEST_TOL6); + TEST(gsl_cdf_logistic_P, (-1.0000000000000000e-08,1.3), 4.999999980769e-01, TEST_TOL6); + TEST(gsl_cdf_logistic_P, (-1.0000000000000001e-09,1.3), 4.999999998077e-01, TEST_TOL6); + TEST(gsl_cdf_logistic_P, (-1.0000000000000000e-10,1.3), 4.999999999808e-01, TEST_TOL6); + TEST(gsl_cdf_logistic_P, (0.0000000000000000e+00,1.3), 5.000000000000e-01, TEST_TOL6); + TEST(gsl_cdf_logistic_Pinv, (5.0000000000000000e-01,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_logistic_P, (1.0000000000000000e-10,1.3), 5.000000000192e-01, TEST_TOL6); + TEST(gsl_cdf_logistic_P, (1.0000000000000001e-09,1.3), 5.000000001923e-01, TEST_TOL6); + TEST(gsl_cdf_logistic_P, (1.0000000000000000e-08,1.3), 5.000000019231e-01, TEST_TOL6); + TEST(gsl_cdf_logistic_P, (9.9999999999999995e-08,1.3), 5.000000192308e-01, TEST_TOL6); + TEST(gsl_cdf_logistic_P, (9.9999999999999995e-07,1.3), 5.000001923077e-01, TEST_TOL6); + TEST(gsl_cdf_logistic_P, (1.0000000000000001e-05,1.3), 5.000019230769e-01, TEST_TOL6); + TEST(gsl_cdf_logistic_P, (1.0000000000000000e-04,1.3), 5.000192307692e-01, TEST_TOL6); + TEST(gsl_cdf_logistic_P, (1.0000000000000000e-03,1.3), 5.001923076828e-01, TEST_TOL6); + TEST(gsl_cdf_logistic_Pinv, (5.0019230768282508e-01,1.3), 1.000000000000e-03, TEST_TOL6); + TEST(gsl_cdf_logistic_P, (1.0000000000000000e-02,1.3), 5.019230674405e-01, TEST_TOL6); + TEST(gsl_cdf_logistic_Pinv, (5.0192306744050519e-01,1.3), 1.000000000000e-02, TEST_TOL6); + TEST(gsl_cdf_logistic_P, (1.0000000000000001e-01,1.3), 5.192212922106e-01, TEST_TOL6); + TEST(gsl_cdf_logistic_Pinv, (5.1922129221060820e-01,1.3), 1.000000000000e-01, TEST_TOL6); + TEST(gsl_cdf_logistic_P, (1.0000000000000000e+00,1.3), 6.833544701878e-01, TEST_TOL6); + TEST(gsl_cdf_logistic_Pinv, (6.8335447018778295e-01,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_logistic_P, (1.0000000000000000e+01,1.3), 9.995438842359e-01, TEST_TOL6); + TEST(gsl_cdf_logistic_Pinv, (9.9954388423594354e-01,1.3), 1.000000000000e+01, TEST_TOL6); + TEST(gsl_cdf_logistic_P, (1.0000000000000000e+02,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_logistic_P, (1.0000000000000000e+03,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_logistic_P, (1.0000000000000000e+04,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_logistic_P, (1.0000000000000000e+05,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_logistic_P, (1.0000000000000000e+06,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_logistic_P, (1.0000000000000000e+07,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_logistic_P, (1.0000000000000000e+08,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_logistic_P, (1.0000000000000000e+09,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_logistic_P, (1.0000000000000000e+10,1.3), 1.000000000000e+00, TEST_TOL6); + + TEST(gsl_cdf_logistic_Q, (1.0000000000000000e+10,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_logistic_Q, (1.0000000000000000e+09,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_logistic_Q, (1.0000000000000000e+08,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_logistic_Q, (1.0000000000000000e+07,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_logistic_Q, (1.0000000000000000e+06,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_logistic_Q, (1.0000000000000000e+05,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_logistic_Q, (1.0000000000000000e+04,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_logistic_Q, (1.0000000000000000e+03,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_logistic_Q, (1.0000000000000000e+02,1.3), 3.915003559824e-34, TEST_TOL6); + TEST(gsl_cdf_logistic_Qinv, (3.9150035598244656e-34,1.3), 1.000000000000e+02, TEST_TOL6); + TEST(gsl_cdf_logistic_Q, (1.0000000000000000e+01,1.3), 4.561157640565e-04, TEST_TOL6); + TEST(gsl_cdf_logistic_Qinv, (4.5611576405646045e-04,1.3), 1.000000000000e+01, TEST_TOL6); + TEST(gsl_cdf_logistic_Q, (1.0000000000000000e+00,1.3), 3.166455298122e-01, TEST_TOL6); + TEST(gsl_cdf_logistic_Qinv, (3.1664552981221700e-01,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_logistic_Q, (1.0000000000000001e-01,1.3), 4.807787077894e-01, TEST_TOL6); + TEST(gsl_cdf_logistic_Qinv, (4.8077870778939180e-01,1.3), 1.000000000000e-01, TEST_TOL6); + TEST(gsl_cdf_logistic_Q, (1.0000000000000000e-02,1.3), 4.980769325595e-01, TEST_TOL6); + TEST(gsl_cdf_logistic_Qinv, (4.9807693255949481e-01,1.3), 1.000000000000e-02, TEST_TOL6); + TEST(gsl_cdf_logistic_Q, (1.0000000000000000e-03,1.3), 4.998076923172e-01, TEST_TOL6); + TEST(gsl_cdf_logistic_Qinv, (4.9980769231717492e-01,1.3), 1.000000000000e-03, TEST_TOL6); + TEST(gsl_cdf_logistic_Q, (1.0000000000000000e-04,1.3), 4.999807692308e-01, TEST_TOL6); + TEST(gsl_cdf_logistic_Q, (1.0000000000000001e-05,1.3), 4.999980769231e-01, TEST_TOL6); + TEST(gsl_cdf_logistic_Q, (9.9999999999999995e-07,1.3), 4.999998076923e-01, TEST_TOL6); + TEST(gsl_cdf_logistic_Q, (9.9999999999999995e-08,1.3), 4.999999807692e-01, TEST_TOL6); + TEST(gsl_cdf_logistic_Q, (1.0000000000000000e-08,1.3), 4.999999980769e-01, TEST_TOL6); + TEST(gsl_cdf_logistic_Q, (1.0000000000000001e-09,1.3), 4.999999998077e-01, TEST_TOL6); + TEST(gsl_cdf_logistic_Q, (1.0000000000000000e-10,1.3), 4.999999999808e-01, TEST_TOL6); + TEST(gsl_cdf_logistic_Q, (0.0000000000000000e+00,1.3), 5.000000000000e-01, TEST_TOL6); + TEST(gsl_cdf_logistic_Qinv, (5.0000000000000000e-01,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_logistic_Q, (-1.0000000000000000e-10,1.3), 5.000000000192e-01, TEST_TOL6); + TEST(gsl_cdf_logistic_Q, (-1.0000000000000001e-09,1.3), 5.000000001923e-01, TEST_TOL6); + TEST(gsl_cdf_logistic_Q, (-1.0000000000000000e-08,1.3), 5.000000019231e-01, TEST_TOL6); + TEST(gsl_cdf_logistic_Q, (-9.9999999999999995e-08,1.3), 5.000000192308e-01, TEST_TOL6); + TEST(gsl_cdf_logistic_Q, (-9.9999999999999995e-07,1.3), 5.000001923077e-01, TEST_TOL6); + TEST(gsl_cdf_logistic_Q, (-1.0000000000000001e-05,1.3), 5.000019230769e-01, TEST_TOL6); + TEST(gsl_cdf_logistic_Q, (-1.0000000000000000e-04,1.3), 5.000192307692e-01, TEST_TOL6); + TEST(gsl_cdf_logistic_Q, (-1.0000000000000000e-03,1.3), 5.001923076828e-01, TEST_TOL6); + TEST(gsl_cdf_logistic_Qinv, (5.0019230768282508e-01,1.3), -1.000000000000e-03, TEST_TOL6); + TEST(gsl_cdf_logistic_Q, (-1.0000000000000000e-02,1.3), 5.019230674405e-01, TEST_TOL6); + TEST(gsl_cdf_logistic_Qinv, (5.0192306744050519e-01,1.3), -1.000000000000e-02, TEST_TOL6); + TEST(gsl_cdf_logistic_Q, (-1.0000000000000001e-01,1.3), 5.192212922106e-01, TEST_TOL6); + TEST(gsl_cdf_logistic_Qinv, (5.1922129221060820e-01,1.3), -1.000000000000e-01, TEST_TOL6); + TEST(gsl_cdf_logistic_Q, (-1.0000000000000000e+00,1.3), 6.833544701878e-01, TEST_TOL6); + TEST(gsl_cdf_logistic_Qinv, (6.8335447018778295e-01,1.3), -1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_logistic_Q, (-1.0000000000000000e+01,1.3), 9.995438842359e-01, TEST_TOL6); + TEST(gsl_cdf_logistic_Qinv, (9.9954388423594354e-01,1.3), -1.000000000000e+01, TEST_TOL6); + TEST(gsl_cdf_logistic_Q, (-1.0000000000000000e+02,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_logistic_Q, (-1.0000000000000000e+03,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_logistic_Q, (-1.0000000000000000e+04,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_logistic_Q, (-1.0000000000000000e+05,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_logistic_Q, (-1.0000000000000000e+06,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_logistic_Q, (-1.0000000000000000e+07,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_logistic_Q, (-1.0000000000000000e+08,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_logistic_Q, (-1.0000000000000000e+09,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_logistic_Q, (-1.0000000000000000e+10,1.3), 1.000000000000e+00, TEST_TOL6); +} + +void test_auto_gammalarge (void); + +void +test_auto_gammalarge (void) +{ + TEST(gsl_cdf_gamma_P, (0.0000000000000000e+00,1.3,123.0), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gamma_P, (1.0000000000000000e-10,1.3,123.0), 1.644976604681e-16, TEST_TOL6); + TEST(gsl_cdf_gamma_Pinv, (1.6449766046812008e-16,1.3,123.0), 1.000000000000e-10, TEST_TOL6); + TEST(gsl_cdf_gamma_P, (1.0000000000000001e-09,1.3,123.0), 3.282159828312e-15, TEST_TOL6); + TEST(gsl_cdf_gamma_Pinv, (3.2821598283122862e-15,1.3,123.0), 1.000000000000e-09, TEST_TOL6); + TEST(gsl_cdf_gamma_P, (1.0000000000000000e-08,1.3,123.0), 6.548769816865e-14, TEST_TOL6); + TEST(gsl_cdf_gamma_Pinv, (6.5487698168653935e-14,1.3,123.0), 1.000000000000e-08, TEST_TOL6); + TEST(gsl_cdf_gamma_P, (9.9999999999999995e-08,1.3,123.0), 1.306651361959e-12, TEST_TOL6); + TEST(gsl_cdf_gamma_Pinv, (1.3066513619593202e-12,1.3,123.0), 1.000000000000e-07, TEST_TOL6); + TEST(gsl_cdf_gamma_P, (9.9999999999999995e-07,1.3,123.0), 2.607112210538e-11, TEST_TOL6); + TEST(gsl_cdf_gamma_Pinv, (2.6071122105378624e-11,1.3,123.0), 1.000000000000e-06, TEST_TOL6); + TEST(gsl_cdf_gamma_P, (1.0000000000000001e-05,1.3,123.0), 5.201872529446e-10, TEST_TOL6); + TEST(gsl_cdf_gamma_Pinv, (5.2018725294456393e-10,1.3,123.0), 1.000000000000e-05, TEST_TOL6); + TEST(gsl_cdf_gamma_P, (1.0000000000000000e-04,1.3,123.0), 1.037909593275e-08, TEST_TOL6); + TEST(gsl_cdf_gamma_Pinv, (1.0379095932752980e-08,1.3,123.0), 1.000000000000e-04, TEST_TOL6); + TEST(gsl_cdf_gamma_P, (1.0000000000000000e-03,1.3,123.0), 2.070893333124e-07, TEST_TOL6); + TEST(gsl_cdf_gamma_Pinv, (2.0708933331240137e-07,1.3,123.0), 1.000000000000e-03, TEST_TOL6); + TEST(gsl_cdf_gamma_P, (1.0000000000000000e-02,1.3,123.0), 4.131804542806e-06, TEST_TOL6); + TEST(gsl_cdf_gamma_Pinv, (4.1318045428061286e-06,1.3,123.0), 1.000000000000e-02, TEST_TOL6); + TEST(gsl_cdf_gamma_P, (1.0000000000000001e-01,1.3,123.0), 8.240625287202e-05, TEST_TOL6); + TEST(gsl_cdf_gamma_Pinv, (8.2406252872017186e-05,1.3,123.0), 1.000000000000e-01, TEST_TOL6); + TEST(gsl_cdf_gamma_P, (1.0000000000000000e+00,1.3,123.0), 1.637438876041e-03, TEST_TOL6); + TEST(gsl_cdf_gamma_Pinv, (1.6374388760411608e-03,1.3,123.0), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gamma_P, (1.0000000000000000e+01,1.3,123.0), 3.135521671622e-02, TEST_TOL6); + TEST(gsl_cdf_gamma_Pinv, (3.1355216716223523e-02,1.3,123.0), 1.000000000000e+01, TEST_TOL6); + TEST(gsl_cdf_gamma_P, (1.0000000000000000e+02,1.3,123.0), 4.240385705334e-01, TEST_TOL6); + TEST(gsl_cdf_gamma_Pinv, (4.2403857053338523e-01,1.3,123.0), 1.000000000000e+02, TEST_TOL6); + TEST(gsl_cdf_gamma_P, (1.0000000000000000e+03,1.3,123.0), 9.993635318324e-01, TEST_TOL6); + TEST(gsl_cdf_gamma_Pinv, (9.9936353183235616e-01,1.3,123.0), 1.000000000000e+03, TEST_TOL6); + TEST(gsl_cdf_gamma_P, (1.0000000000000000e+04,1.3,123.0), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gamma_P, (1.0000000000000000e+05,1.3,123.0), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gamma_P, (1.0000000000000000e+06,1.3,123.0), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gamma_P, (1.0000000000000000e+07,1.3,123.0), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gamma_P, (1.0000000000000000e+08,1.3,123.0), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gamma_P, (1.0000000000000000e+09,1.3,123.0), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gamma_P, (1.0000000000000000e+10,1.3,123.0), 1.000000000000e+00, TEST_TOL6); + + TEST(gsl_cdf_gamma_Q, (1.0000000000000000e+10,1.3,123.0), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gamma_Q, (1.0000000000000000e+09,1.3,123.0), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gamma_Q, (1.0000000000000000e+08,1.3,123.0), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gamma_Q, (1.0000000000000000e+07,1.3,123.0), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gamma_Q, (1.0000000000000000e+06,1.3,123.0), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gamma_Q, (1.0000000000000000e+05,1.3,123.0), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gamma_Q, (1.0000000000000000e+04,1.3,123.0), 2.056363344745e-35, TEST_TOL6); + TEST(gsl_cdf_gamma_Qinv, (2.0563633447452943e-35,1.3,123.0), 1.000000000000e+04, TEST_TOL6); + TEST(gsl_cdf_gamma_Q, (1.0000000000000000e+03,1.3,123.0), 6.364681676440e-04, TEST_TOL6); + TEST(gsl_cdf_gamma_Qinv, (6.3646816764395531e-04,1.3,123.0), 1.000000000000e+03, TEST_TOL6); + TEST(gsl_cdf_gamma_Q, (1.0000000000000000e+02,1.3,123.0), 5.759614294666e-01, TEST_TOL6); + TEST(gsl_cdf_gamma_Qinv, (5.7596142946661488e-01,1.3,123.0), 1.000000000000e+02, TEST_TOL6); + TEST(gsl_cdf_gamma_Q, (1.0000000000000000e+01,1.3,123.0), 9.686447832838e-01, TEST_TOL6); + TEST(gsl_cdf_gamma_Qinv, (9.6864478328377646e-01,1.3,123.0), 1.000000000000e+01, TEST_TOL6); + TEST(gsl_cdf_gamma_Q, (1.0000000000000000e+00,1.3,123.0), 9.983625611240e-01, TEST_TOL6); + TEST(gsl_cdf_gamma_Qinv, (9.9836256112395882e-01,1.3,123.0), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gamma_Q, (1.0000000000000001e-01,1.3,123.0), 9.999175937471e-01, TEST_TOL6); + TEST(gsl_cdf_gamma_Qinv, (9.9991759374712796e-01,1.3,123.0), 1.000000000000e-01, TEST_TOL6); + TEST(gsl_cdf_gamma_Q, (1.0000000000000000e-02,1.3,123.0), 9.999958681955e-01, TEST_TOL6); + TEST(gsl_cdf_gamma_Q, (1.0000000000000000e-03,1.3,123.0), 9.999997929107e-01, TEST_TOL6); + TEST(gsl_cdf_gamma_Q, (1.0000000000000000e-04,1.3,123.0), 9.999999896209e-01, TEST_TOL6); + TEST(gsl_cdf_gamma_Q, (1.0000000000000001e-05,1.3,123.0), 9.999999994798e-01, TEST_TOL6); + TEST(gsl_cdf_gamma_Q, (9.9999999999999995e-07,1.3,123.0), 9.999999999739e-01, TEST_TOL6); + TEST(gsl_cdf_gamma_Q, (9.9999999999999995e-08,1.3,123.0), 9.999999999987e-01, TEST_TOL6); + TEST(gsl_cdf_gamma_Q, (1.0000000000000000e-08,1.3,123.0), 9.999999999999e-01, TEST_TOL6); + TEST(gsl_cdf_gamma_Q, (1.0000000000000001e-09,1.3,123.0), 1.000000000000e-00, TEST_TOL6); + TEST(gsl_cdf_gamma_Q, (1.0000000000000000e-10,1.3,123.0), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gamma_Q, (0.0000000000000000e+00,1.3,123.0), 1.000000000000e+00, TEST_TOL6); +} + diff --git a/gsl-2.5/cdf/weibull.c b/gsl-2.5/cdf/weibull.c new file mode 100644 index 00000000..56c9a5cf --- /dev/null +++ b/gsl-2.5/cdf/weibull.c @@ -0,0 +1,37 @@ +/* cdf/weibull.c + * + * Copyright (C) 2003, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include + +double +gsl_cdf_weibull_P (const double x, const double a, const double b) +{ + double P = -expm1 (-pow(x/a, b)); + return P; +} + +double +gsl_cdf_weibull_Q (const double x, const double a, const double b) +{ + double Q = exp (-pow(x/a, b)); + return Q; +} diff --git a/gsl-2.5/cdf/weibull.lo b/gsl-2.5/cdf/weibull.lo new file mode 100644 index 00000000..90dcc5a6 --- /dev/null +++ b/gsl-2.5/cdf/weibull.lo @@ -0,0 +1,12 @@ +# weibull.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/weibull.o' + +# Name of the non-PIC object +non_pic_object='weibull.o' + diff --git a/gsl-2.5/cdf/weibullinv.c b/gsl-2.5/cdf/weibullinv.c new file mode 100644 index 00000000..1faa9802 --- /dev/null +++ b/gsl-2.5/cdf/weibullinv.c @@ -0,0 +1,61 @@ +/* cdf/weibullinv.c + * + * Copyright (C) 2003, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include + +double +gsl_cdf_weibull_Pinv (const double P, const double a, const double b) +{ + double x; + + if (P == 1.0) + { + return GSL_POSINF; + } + else if (P == 0.0) + { + return 0.0; + } + + x = a * pow(-log1p(-P), 1/b); + + return x; +} + +double +gsl_cdf_weibull_Qinv (const double Q, const double a, const double b) +{ + double x; + + if (Q == 0.0) + { + return GSL_POSINF; + } + else if (Q == 1.0) + { + return 0.0; + } + + x = a * pow(-log(Q), 1/b); + + return x; +} diff --git a/gsl-2.5/cdf/weibullinv.lo b/gsl-2.5/cdf/weibullinv.lo new file mode 100644 index 00000000..64651260 --- /dev/null +++ b/gsl-2.5/cdf/weibullinv.lo @@ -0,0 +1,12 @@ +# weibullinv.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/weibullinv.o' + +# Name of the non-PIC object +non_pic_object='weibullinv.o' + diff --git a/gsl-2.5/cheb/.deps/deriv.Plo b/gsl-2.5/cheb/.deps/deriv.Plo new file mode 100644 index 00000000..e867267d --- /dev/null +++ b/gsl-2.5/cheb/.deps/deriv.Plo @@ -0,0 +1,175 @@ +deriv.lo: deriv.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_chebyshev.h ../gsl/gsl_mode.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_chebyshev.h: + +../gsl/gsl_mode.h: diff --git a/gsl-2.5/cheb/.deps/eval.Plo b/gsl-2.5/cheb/.deps/eval.Plo new file mode 100644 index 00000000..7dc46c48 --- /dev/null +++ b/gsl-2.5/cheb/.deps/eval.Plo @@ -0,0 +1,175 @@ +eval.lo: eval.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_chebyshev.h ../gsl/gsl_mode.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_chebyshev.h: + +../gsl/gsl_mode.h: diff --git a/gsl-2.5/cheb/.deps/init.Plo b/gsl-2.5/cheb/.deps/init.Plo new file mode 100644 index 00000000..d2ee0339 --- /dev/null +++ b/gsl-2.5/cheb/.deps/init.Plo @@ -0,0 +1,175 @@ +init.lo: init.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_chebyshev.h ../gsl/gsl_mode.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_chebyshev.h: + +../gsl/gsl_mode.h: diff --git a/gsl-2.5/cheb/.deps/integ.Plo b/gsl-2.5/cheb/.deps/integ.Plo new file mode 100644 index 00000000..2e79d526 --- /dev/null +++ b/gsl-2.5/cheb/.deps/integ.Plo @@ -0,0 +1,175 @@ +integ.lo: integ.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_chebyshev.h ../gsl/gsl_mode.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_chebyshev.h: + +../gsl/gsl_mode.h: diff --git a/gsl-2.5/cheb/.deps/test.Po b/gsl-2.5/cheb/.deps/test.Po new file mode 100644 index 00000000..f6c463e9 --- /dev/null +++ b/gsl-2.5/cheb/.deps/test.Po @@ -0,0 +1,180 @@ +test.o: test.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_test.h ../gsl/gsl_ieee_utils.h ../gsl/gsl_chebyshev.h \ + ../gsl/gsl_mode.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_test.h: + +../gsl/gsl_ieee_utils.h: + +../gsl/gsl_chebyshev.h: + +../gsl/gsl_mode.h: diff --git a/gsl-2.5/cheb/.libs/libgslcheb.la b/gsl-2.5/cheb/.libs/libgslcheb.la new file mode 120000 index 00000000..05130ed6 --- /dev/null +++ b/gsl-2.5/cheb/.libs/libgslcheb.la @@ -0,0 +1 @@ +../libgslcheb.la \ No newline at end of file diff --git a/gsl-2.5/cheb/ChangeLog b/gsl-2.5/cheb/ChangeLog new file mode 100644 index 00000000..5832ba37 --- /dev/null +++ b/gsl-2.5/cheb/ChangeLog @@ -0,0 +1,74 @@ +2010-03-12 Brian Gough + + * deriv.c (gsl_cheb_calc_deriv): shift loop variable to avoid + unsigned integer wraparound when n < 3 + +2009-07-09 Brian Gough + + * init.c (gsl_cheb_free): handle NULL argument in free + +2008-11-18 Brian Gough + + * gsl_chebyshev.h: added auxiliary functions + + * init.c (gsl_cheb_order, gsl_cheb_size, gsl_cheb_coeffs): added + auxiliary functions + +2008-07-03 Brian Gough + + * Makefile.am (INCLUDES): use top_srcdir instead of top_builddir + +2007-01-29 Brian Gough + + * eval.c (gsl_cheb_eval_mode_e): compute error consistently with + other routines + +2004-12-29 Brian Gough + + * gsl_chebyshev.h: added const to declaration of + gsl_cheb_eval_mode to match definition + +2004-12-24 Brian Gough + + * eval.c (gsl_cheb_eval_n_err): use eval_order instead of + cs->order for error estimate + +2004-12-23 Brian Gough + + * eval.c (gsl_cheb_eval_mode): added missing function + +2004-08-27 Brian Gough + + * test.c (main): make the hard-coded tolerances a variable, ftol + +2003-06-09 Brian Gough + + * test.c (main): added some tests for the coefficients + +2003-02-09 Brian Gough + + * gsl_chebyshev.h: added missing #include for gsl_math (to declare + gsl_function) fixes Debian Bug#179665 + +Fri May 24 19:23:47 2002 Brian Gough + + * init.c (gsl_cheb_free): added missing free() for cs->f + +Fri Aug 24 19:18:23 2001 Brian Gough + + * test.c (main): renamed fsin to f_sin to avoid conflicts with + irix math libs. + +Sun May 6 09:49:28 2001 Brian Gough + + * eval.c (gsl_cheb_eval_err): take roundoff into account when + computing evaluation error (important when result is near zero). + (gsl_cheb_eval_n_err): ditto + +Tue Apr 24 17:08:29 2001 Brian Gough + + * made deriv/integ functions thread safe + + * split out from specfunc directory + + diff --git a/gsl-2.5/cheb/Makefile b/gsl-2.5/cheb/Makefile new file mode 100644 index 00000000..ba059d2e --- /dev/null +++ b/gsl-2.5/cheb/Makefile @@ -0,0 +1,1027 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# cheb/Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + + + + +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/gsl +pkgincludedir = $(includedir)/gsl +pkglibdir = $(libdir)/gsl +pkglibexecdir = $(libexecdir)/gsl +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = x86_64-unknown-linux-gnu +host_triplet = x86_64-unknown-linux-gnu +check_PROGRAMS = test$(EXEEXT) +subdir = cheb +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp \ + $(pkginclude_HEADERS) $(top_srcdir)/test-driver ChangeLog TODO +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +libgslcheb_la_LIBADD = +am_libgslcheb_la_OBJECTS = deriv.lo eval.lo init.lo integ.lo +libgslcheb_la_OBJECTS = $(am_libgslcheb_la_OBJECTS) +AM_V_lt = $(am__v_lt_$(V)) +am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) +am__v_lt_0 = --silent +am__v_lt_1 = +am_test_OBJECTS = test.$(OBJEXT) +test_OBJECTS = $(am_test_OBJECTS) +test_DEPENDENCIES = libgslcheb.la ../ieee-utils/libgslieeeutils.la \ + ../test/libgsltest.la ../sys/libgslsys.la ../err/libgslerr.la \ + ../utils/libutils.la +AM_V_P = $(am__v_P_$(V)) +am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY)) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_$(V)) +am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_$(V)) +am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I. -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_$(V)) +am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_$(V)) +am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libgslcheb_la_SOURCES) $(test_SOURCES) +DIST_SOURCES = $(libgslcheb_la_SOURCES) $(test_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(pkgincludedir)" +HEADERS = $(pkginclude_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = .test +LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing aclocal-1.13 +AMTAR = $${TAR-tar} +AM_DEFAULT_VERBOSITY = 1 +AR = ar +AS = as +AUTOCONF = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing autoconf +AUTOHEADER = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing autoheader +AUTOMAKE = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing automake-1.13 +AWK = gawk +CC = gcc +CCDEPMODE = depmode=gcc3 +CFLAGS = -g -O2 +CPP = gcc -E +CPPFLAGS = +CYGPATH_W = echo +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +DLLTOOL = false +DSYMUTIL = +DUMPBIN = +ECHO_C = +ECHO_N = -n +ECHO_T = +EGREP = /usr/bin/grep -E +EXEEXT = +FGREP = /usr/bin/grep -F +GREP = /usr/bin/grep +GSLCBLAS_LDFLAGS = +GSL_CFLAGS = -I${prefix}/include +GSL_LDFLAGS = +GSL_LIBADD = +GSL_LIBM = -lm +GSL_LIBS = -L${exec_prefix}/lib -lgsl +GSL_LT_CBLAS_VERSION = 0:0:0 +GSL_LT_VERSION = 24:0:1 +GSL_MAJOR_VERSION = 2 +GSL_MINOR_VERSION = 5 +HAVE_AIX_IEEE_INTERFACE = +HAVE_DARWIN86_IEEE_INTERFACE = +HAVE_DARWIN_IEEE_INTERFACE = +HAVE_FREEBSD_IEEE_INTERFACE = +HAVE_GNUM68K_IEEE_INTERFACE = +HAVE_GNUPPC_IEEE_INTERFACE = +HAVE_GNUSPARC_IEEE_INTERFACE = +HAVE_GNUX86_IEEE_INTERFACE = +HAVE_HPUX11_IEEE_INTERFACE = +HAVE_HPUX_IEEE_INTERFACE = +HAVE_IRIX_IEEE_INTERFACE = +HAVE_NETBSD_IEEE_INTERFACE = +HAVE_OPENBSD_IEEE_INTERFACE = +HAVE_OS2EMX_IEEE_INTERFACE = +HAVE_SOLARIS_IEEE_INTERFACE = +HAVE_SUNOS4_IEEE_INTERFACE = +HAVE_TRU64_IEEE_INTERFACE = +INSTALL = /usr/bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = $(install_sh) -c -s +LD = /usr/bin/ld -m elf_x86_64 +LDFLAGS = +LIBM = -lm +LIBOBJS = +LIBS = -lm +LIBTOOL = $(SHELL) $(top_builddir)/libtool +LIPO = +LN_S = ln -s +LTLIBOBJS = +MAINT = # +MAKEINFO = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing makeinfo +MANIFEST_TOOL = : +MKDIR_P = /usr/bin/mkdir -p +NM = /usr/bin/nm -B +NMEDIT = +OBJDUMP = objdump +OBJEXT = o +OTOOL = +OTOOL64 = +PACKAGE = gsl +PACKAGE_BUGREPORT = +PACKAGE_NAME = gsl +PACKAGE_STRING = gsl 2.5 +PACKAGE_TARNAME = gsl +PACKAGE_URL = +PACKAGE_VERSION = 2.5 +PATH_SEPARATOR = : +RANLIB = ranlib +SED = /usr/bin/sed +SET_MAKE = +SHELL = /bin/sh +STRIP = strip +VERSION = 2.5 +abs_builddir = /home/groups/kipac/chto/package/gsl/gsl-2.5/cheb +abs_srcdir = /home/groups/kipac/chto/package/gsl/gsl-2.5/cheb +abs_top_builddir = /home/groups/kipac/chto/package/gsl/gsl-2.5 +abs_top_srcdir = /home/groups/kipac/chto/package/gsl/gsl-2.5 +ac_ct_AR = ar +ac_ct_CC = gcc +ac_ct_DUMPBIN = +am__include = include +am__leading_dot = . +am__quote = +am__tar = $${TAR-tar} chof - "$$tardir" +am__untar = $${TAR-tar} xf - +bindir = ${exec_prefix}/bin +build = x86_64-unknown-linux-gnu +build_alias = +build_cpu = x86_64 +build_os = linux-gnu +build_vendor = unknown +builddir = . +datadir = ${datarootdir} +datarootdir = ${prefix}/share +docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} +dvidir = ${docdir} +exec_prefix = ${prefix} +host = x86_64-unknown-linux-gnu +host_alias = +host_cpu = x86_64 +host_os = linux-gnu +host_vendor = unknown +htmldir = ${docdir} +includedir = ${prefix}/include +infodir = ${datarootdir}/info +install_sh = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/install-sh +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +localedir = ${datarootdir}/locale +localstatedir = ${prefix}/var +mandir = ${datarootdir}/man +mkdir_p = $(MKDIR_P) +oldincludedir = /usr/include +pdfdir = ${docdir} +prefix = /home/groups/kipac/chto/package/gsl/gsl_lib +program_transform_name = s,x,x, +psdir = ${docdir} +sbindir = ${exec_prefix}/sbin +sharedstatedir = ${prefix}/com +srcdir = . +sysconfdir = ${prefix}/etc +target_alias = +top_build_prefix = ../ +top_builddir = .. +top_srcdir = .. +noinst_LTLIBRARIES = libgslcheb.la +pkginclude_HEADERS = gsl_chebyshev.h +AM_CPPFLAGS = -I$(top_srcdir) +libgslcheb_la_SOURCES = deriv.c eval.c init.c integ.c +TESTS = $(check_PROGRAMS) +test_LDADD = libgslcheb.la ../ieee-utils/libgslieeeutils.la ../test/libgsltest.la ../sys/libgslsys.la ../err/libgslerr.la ../utils/libutils.la +test_SOURCES = test.c +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu cheb/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu cheb/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: # $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): # $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libgslcheb.la: $(libgslcheb_la_OBJECTS) $(libgslcheb_la_DEPENDENCIES) $(EXTRA_libgslcheb_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(libgslcheb_la_OBJECTS) $(libgslcheb_la_LIBADD) $(LIBS) + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) $(EXTRA_test_DEPENDENCIES) + @rm -f test$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_OBJECTS) $(test_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +include ./$(DEPDIR)/deriv.Plo +include ./$(DEPDIR)/eval.Plo +include ./$(DEPDIR)/init.Plo +include ./$(DEPDIR)/integ.Plo +include ./$(DEPDIR)/test.Po + +.c.o: + $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# $(AM_V_CC)source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(COMPILE) -c $< + +.c.obj: + $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# $(AM_V_CC)source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: + $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +# $(AM_V_CC)source='$<' object='$@' libtool=yes \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-pkgincludeHEADERS: $(pkginclude_HEADERS) + @$(NORMAL_INSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \ + done + +uninstall-pkgincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + else \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_PROGRAMS) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +test.log: test$(EXEEXT) + @p='test$(EXEEXT)'; \ + b='test'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +#.test$(EXEEXT).log: +# @p='$<'; \ +# $(am__set_b); \ +# $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +# --log-file $$b.log --trs-file $$b.trs \ +# $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +# "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-am +all-am: Makefile $(LTLIBRARIES) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(pkgincludedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-pkgincludeHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-pkgincludeHEADERS + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES cscopelist-am ctags ctags-am distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-pkgincludeHEADERS \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + recheck tags tags-am uninstall uninstall-am \ + uninstall-pkgincludeHEADERS + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gsl-2.5/cheb/Makefile.am b/gsl-2.5/cheb/Makefile.am new file mode 100644 index 00000000..044dbe21 --- /dev/null +++ b/gsl-2.5/cheb/Makefile.am @@ -0,0 +1,17 @@ +noinst_LTLIBRARIES = libgslcheb.la + +pkginclude_HEADERS = gsl_chebyshev.h + +AM_CPPFLAGS = -I$(top_srcdir) + +libgslcheb_la_SOURCES = deriv.c eval.c init.c integ.c + +TESTS = $(check_PROGRAMS) + +check_PROGRAMS = test + +test_LDADD = libgslcheb.la ../ieee-utils/libgslieeeutils.la ../test/libgsltest.la ../sys/libgslsys.la ../err/libgslerr.la ../utils/libutils.la + +test_SOURCES = test.c + + diff --git a/gsl-2.5/cheb/Makefile.in b/gsl-2.5/cheb/Makefile.in new file mode 100644 index 00000000..cb045db0 --- /dev/null +++ b/gsl-2.5/cheb/Makefile.in @@ -0,0 +1,1027 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + + +VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +check_PROGRAMS = test$(EXEEXT) +subdir = cheb +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp \ + $(pkginclude_HEADERS) $(top_srcdir)/test-driver ChangeLog TODO +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +libgslcheb_la_LIBADD = +am_libgslcheb_la_OBJECTS = deriv.lo eval.lo init.lo integ.lo +libgslcheb_la_OBJECTS = $(am_libgslcheb_la_OBJECTS) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +am_test_OBJECTS = test.$(OBJEXT) +test_OBJECTS = $(am_test_OBJECTS) +test_DEPENDENCIES = libgslcheb.la ../ieee-utils/libgslieeeutils.la \ + ../test/libgsltest.la ../sys/libgslsys.la ../err/libgslerr.la \ + ../utils/libutils.la +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libgslcheb_la_SOURCES) $(test_SOURCES) +DIST_SOURCES = $(libgslcheb_la_SOURCES) $(test_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(pkgincludedir)" +HEADERS = $(pkginclude_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = @EXEEXT@ .test +LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +GSLCBLAS_LDFLAGS = @GSLCBLAS_LDFLAGS@ +GSL_CFLAGS = @GSL_CFLAGS@ +GSL_LDFLAGS = @GSL_LDFLAGS@ +GSL_LIBADD = @GSL_LIBADD@ +GSL_LIBM = @GSL_LIBM@ +GSL_LIBS = @GSL_LIBS@ +GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ +GSL_LT_VERSION = @GSL_LT_VERSION@ +GSL_MAJOR_VERSION = @GSL_MAJOR_VERSION@ +GSL_MINOR_VERSION = @GSL_MINOR_VERSION@ +HAVE_AIX_IEEE_INTERFACE = @HAVE_AIX_IEEE_INTERFACE@ +HAVE_DARWIN86_IEEE_INTERFACE = @HAVE_DARWIN86_IEEE_INTERFACE@ +HAVE_DARWIN_IEEE_INTERFACE = @HAVE_DARWIN_IEEE_INTERFACE@ +HAVE_FREEBSD_IEEE_INTERFACE = @HAVE_FREEBSD_IEEE_INTERFACE@ +HAVE_GNUM68K_IEEE_INTERFACE = @HAVE_GNUM68K_IEEE_INTERFACE@ +HAVE_GNUPPC_IEEE_INTERFACE = @HAVE_GNUPPC_IEEE_INTERFACE@ +HAVE_GNUSPARC_IEEE_INTERFACE = @HAVE_GNUSPARC_IEEE_INTERFACE@ +HAVE_GNUX86_IEEE_INTERFACE = @HAVE_GNUX86_IEEE_INTERFACE@ +HAVE_HPUX11_IEEE_INTERFACE = @HAVE_HPUX11_IEEE_INTERFACE@ +HAVE_HPUX_IEEE_INTERFACE = @HAVE_HPUX_IEEE_INTERFACE@ +HAVE_IRIX_IEEE_INTERFACE = @HAVE_IRIX_IEEE_INTERFACE@ +HAVE_NETBSD_IEEE_INTERFACE = @HAVE_NETBSD_IEEE_INTERFACE@ +HAVE_OPENBSD_IEEE_INTERFACE = @HAVE_OPENBSD_IEEE_INTERFACE@ +HAVE_OS2EMX_IEEE_INTERFACE = @HAVE_OS2EMX_IEEE_INTERFACE@ +HAVE_SOLARIS_IEEE_INTERFACE = @HAVE_SOLARIS_IEEE_INTERFACE@ +HAVE_SUNOS4_IEEE_INTERFACE = @HAVE_SUNOS4_IEEE_INTERFACE@ +HAVE_TRU64_IEEE_INTERFACE = @HAVE_TRU64_IEEE_INTERFACE@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBM = @LIBM@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +noinst_LTLIBRARIES = libgslcheb.la +pkginclude_HEADERS = gsl_chebyshev.h +AM_CPPFLAGS = -I$(top_srcdir) +libgslcheb_la_SOURCES = deriv.c eval.c init.c integ.c +TESTS = $(check_PROGRAMS) +test_LDADD = libgslcheb.la ../ieee-utils/libgslieeeutils.la ../test/libgsltest.la ../sys/libgslsys.la ../err/libgslerr.la ../utils/libutils.la +test_SOURCES = test.c +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu cheb/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu cheb/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libgslcheb.la: $(libgslcheb_la_OBJECTS) $(libgslcheb_la_DEPENDENCIES) $(EXTRA_libgslcheb_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(libgslcheb_la_OBJECTS) $(libgslcheb_la_LIBADD) $(LIBS) + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) $(EXTRA_test_DEPENDENCIES) + @rm -f test$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_OBJECTS) $(test_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/deriv.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eval.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/init.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/integ.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test.Po@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-pkgincludeHEADERS: $(pkginclude_HEADERS) + @$(NORMAL_INSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \ + done + +uninstall-pkgincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + else \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_PROGRAMS) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +test.log: test$(EXEEXT) + @p='test$(EXEEXT)'; \ + b='test'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +@am__EXEEXT_TRUE@.test$(EXEEXT).log: +@am__EXEEXT_TRUE@ @p='$<'; \ +@am__EXEEXT_TRUE@ $(am__set_b); \ +@am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +@am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ +@am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +@am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-am +all-am: Makefile $(LTLIBRARIES) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(pkgincludedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-pkgincludeHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-pkgincludeHEADERS + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES cscopelist-am ctags ctags-am distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-pkgincludeHEADERS \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + recheck tags tags-am uninstall uninstall-am \ + uninstall-pkgincludeHEADERS + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gsl-2.5/cheb/TODO b/gsl-2.5/cheb/TODO new file mode 100644 index 00000000..8e07731b --- /dev/null +++ b/gsl-2.5/cheb/TODO @@ -0,0 +1,4 @@ +# -*- org -*- +#+CATEGORY: cheb + +Provide a way to save/restore coefficients, or access the coefficient data. \ No newline at end of file diff --git a/gsl-2.5/cheb/deriv.c b/gsl-2.5/cheb/deriv.c new file mode 100644 index 00000000..8f7c223c --- /dev/null +++ b/gsl-2.5/cheb/deriv.c @@ -0,0 +1,60 @@ +/* cheb/deriv.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include + +int gsl_cheb_calc_deriv(gsl_cheb_series * deriv, const gsl_cheb_series * f) +{ + const size_t n = f->order + 1; + const double con = 2.0 / (f->b - f->a); + size_t i; + + if(deriv->order != f->order) + { + GSL_ERROR ("order of chebyshev series must be equal", GSL_ENOMEM); + } + + /* set the other parameters in the chebyshev struct */ + + deriv->a = f->a; + deriv->b = f->b; + + /* error in derivative is n^2 c_n */ + /* deriv->err = n * n * f->c[n-1];*/ + + /* FIXME: should probably set deriv->f[] as well */ + + deriv->c[n-1] = 0.0; + + if(n > 1) { + deriv->c[n-2] = 2.0 *(n-1.0) * f->c[n-1]; + + for(i = n; i>=3; i--) + deriv->c[i-3] = deriv->c[i-1] + 2.0 *(i-2.0) * f->c[i-2]; + + for(i = 0 ; ic[i] *= con; + } + + return GSL_SUCCESS; +} diff --git a/gsl-2.5/cheb/deriv.lo b/gsl-2.5/cheb/deriv.lo new file mode 100644 index 00000000..825cd7be --- /dev/null +++ b/gsl-2.5/cheb/deriv.lo @@ -0,0 +1,12 @@ +# deriv.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/deriv.o' + +# Name of the non-PIC object +non_pic_object='deriv.o' + diff --git a/gsl-2.5/cheb/eval.c b/gsl-2.5/cheb/eval.c new file mode 100644 index 00000000..9c84d677 --- /dev/null +++ b/gsl-2.5/cheb/eval.c @@ -0,0 +1,206 @@ +/* cheb/eval.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include + +/* For efficiency there are separate implementations of each of these + functions */ + +double +gsl_cheb_eval (const gsl_cheb_series * cs, const double x) +{ + size_t i; + double d1 = 0.0; + double d2 = 0.0; + + double y = (2.0 * x - cs->a - cs->b) / (cs->b - cs->a); + double y2 = 2.0 * y; + + for (i = cs->order; i >= 1; i--) + { + double temp = d1; + d1 = y2 * d1 - d2 + cs->c[i]; + d2 = temp; + } + + return y * d1 - d2 + 0.5 * cs->c[0]; +} + +double +gsl_cheb_eval_n (const gsl_cheb_series * cs, const size_t n, const double x) +{ + size_t i; + double d1 = 0.0; + double d2 = 0.0; + + size_t eval_order = GSL_MIN (n, cs->order); + + double y = (2.0 * x - cs->a - cs->b) / (cs->b - cs->a); + double y2 = 2.0 * y; + + for (i = eval_order; i >= 1; i--) + { + double temp = d1; + d1 = y2 * d1 - d2 + cs->c[i]; + d2 = temp; + } + + return y * d1 - d2 + 0.5 * cs->c[0]; +} + + +int +gsl_cheb_eval_err (const gsl_cheb_series * cs, const double x, + double *result, double *abserr) +{ + size_t i; + double d1 = 0.0; + double d2 = 0.0; + + double y = (2. * x - cs->a - cs->b) / (cs->b - cs->a); + double y2 = 2.0 * y; + + double absc = 0.0; + + for (i = cs->order; i >= 1; i--) + { + double temp = d1; + d1 = y2 * d1 - d2 + cs->c[i]; + d2 = temp; + } + + *result = y * d1 - d2 + 0.5 * cs->c[0]; + + /* Estimate cumulative numerical error */ + + for (i = 0; i <= cs->order; i++) + { + absc += fabs(cs->c[i]); + } + + /* Combine truncation error and numerical error */ + + *abserr = fabs (cs->c[cs->order]) + absc * GSL_DBL_EPSILON; + + return GSL_SUCCESS; +} + +int +gsl_cheb_eval_n_err (const gsl_cheb_series * cs, + const size_t n, const double x, + double *result, double *abserr) +{ + size_t i; + double d1 = 0.0; + double d2 = 0.0; + + double y = (2. * x - cs->a - cs->b) / (cs->b - cs->a); + double y2 = 2.0 * y; + + double absc = 0.0; + + size_t eval_order = GSL_MIN (n, cs->order); + + for (i = eval_order; i >= 1; i--) + { + double temp = d1; + d1 = y2 * d1 - d2 + cs->c[i]; + d2 = temp; + } + + *result = y * d1 - d2 + 0.5 * cs->c[0]; + + /* Estimate cumulative numerical error */ + + for (i = 0; i <= eval_order; i++) + { + absc += fabs(cs->c[i]); + } + + /* Combine truncation error and numerical error */ + + *abserr = fabs (cs->c[eval_order]) + absc * GSL_DBL_EPSILON; + + return GSL_SUCCESS; +} + +int +gsl_cheb_eval_mode_e (const gsl_cheb_series * cs, + const double x, gsl_mode_t mode, + double *result, double *abserr) +{ + size_t i; + double d1 = 0.0; + double d2 = 0.0; + + double y = (2. * x - cs->a - cs->b) / (cs->b - cs->a); + double y2 = 2.0 * y; + + double absc = 0.0; + + size_t eval_order; + + if (GSL_MODE_PREC (mode) == GSL_PREC_DOUBLE) + eval_order = cs->order; + else + eval_order = cs->order_sp; + + for (i = eval_order; i >= 1; i--) + { + double temp = d1; + d1 = y2 * d1 - d2 + cs->c[i]; + d2 = temp; + } + + *result = y * d1 - d2 + 0.5 * cs->c[0]; + + /* Estimate cumulative numerical error */ + + for (i = 0; i <= eval_order; i++) + { + absc += fabs(cs->c[i]); + } + + /* Combine truncation error and numerical error */ + + *abserr = fabs (cs->c[eval_order]) + absc * GSL_DBL_EPSILON; + + return GSL_SUCCESS; +} + +double +gsl_cheb_eval_mode (const gsl_cheb_series * cs, + const double x, gsl_mode_t mode) +{ + double result, abserr; + int status = gsl_cheb_eval_mode_e (cs, x, mode, &result, &abserr); + + if (status != GSL_SUCCESS) + { + GSL_ERROR_VAL("gsl_cheb_eval_mode", status, result); + }; + + return result; +} + + diff --git a/gsl-2.5/cheb/eval.lo b/gsl-2.5/cheb/eval.lo new file mode 100644 index 00000000..1ef544a3 --- /dev/null +++ b/gsl-2.5/cheb/eval.lo @@ -0,0 +1,12 @@ +# eval.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/eval.o' + +# Name of the non-PIC object +non_pic_object='eval.o' + diff --git a/gsl-2.5/cheb/gsl_chebyshev.h b/gsl-2.5/cheb/gsl_chebyshev.h new file mode 100644 index 00000000..858048e4 --- /dev/null +++ b/gsl-2.5/cheb/gsl_chebyshev.h @@ -0,0 +1,133 @@ +/* cheb/gsl_chebyshev.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_CHEBYSHEV_H__ +#define __GSL_CHEBYSHEV_H__ + +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + + +/* data for a Chebyshev series over a given interval */ + +struct gsl_cheb_series_struct { + + double * c; /* coefficients */ + size_t order; /* order of expansion */ + double a; /* lower interval point */ + double b; /* upper interval point */ + + /* The following exists (mostly) for the benefit + * of the implementation. It is an effective single + * precision order, for use in single precision + * evaluation. Users can use it if they like, but + * only they know how to calculate it, since it is + * specific to the approximated function. By default, + * order_sp = order. + * It is used explicitly only by the gsl_cheb_eval_mode + * functions, which are not meant for casual use. + */ + size_t order_sp; + + /* Additional elements not used by specfunc */ + + double * f; /* function evaluated at chebyschev points */ +}; +typedef struct gsl_cheb_series_struct gsl_cheb_series; + + +/* Calculate a Chebyshev series of specified order over + * a specified interval, for a given function. + * Return 0 on failure. + */ +gsl_cheb_series * gsl_cheb_alloc(const size_t order); + +/* Free a Chebyshev series previously calculated with gsl_cheb_alloc(). + */ +void gsl_cheb_free(gsl_cheb_series * cs); + +/* Calculate a Chebyshev series using the storage provided. + * Uses the interval (a,b) and the order with which it + * was initially created. + * + */ +int gsl_cheb_init(gsl_cheb_series * cs, const gsl_function * func, + const double a, const double b); + +/* Return the order, size of coefficient array and coefficient array ptr */ +size_t gsl_cheb_order (const gsl_cheb_series * cs); +size_t gsl_cheb_size (const gsl_cheb_series * cs); +double *gsl_cheb_coeffs (const gsl_cheb_series * cs); + +/* Evaluate a Chebyshev series at a given point. + * No errors can occur for a struct obtained from gsl_cheb_new(). + */ +double gsl_cheb_eval(const gsl_cheb_series * cs, const double x); +int gsl_cheb_eval_err(const gsl_cheb_series * cs, const double x, + double * result, double * abserr); + + +/* Evaluate a Chebyshev series at a given point, to (at most) the given order. + * No errors can occur for a struct obtained from gsl_cheb_new(). + */ +double gsl_cheb_eval_n(const gsl_cheb_series * cs, const size_t order, + const double x); +int gsl_cheb_eval_n_err(const gsl_cheb_series * cs, const size_t order, + const double x, double * result, double * abserr); + + +/* Evaluate a Chebyshev series at a given point, using the default + * order for double precision mode(s) and the single precision + * order for other modes. + * No errors can occur for a struct obtained from gsl_cheb_new(). + */ +double gsl_cheb_eval_mode(const gsl_cheb_series * cs, const double x, gsl_mode_t mode); +int gsl_cheb_eval_mode_e(const gsl_cheb_series * cs, const double x, gsl_mode_t mode, double * result, double * abserr); + + + +/* Compute the derivative of a Chebyshev series. + */ +int gsl_cheb_calc_deriv(gsl_cheb_series * deriv, const gsl_cheb_series * cs); + +/* Compute the integral of a Chebyshev series. The + * integral is fixed by the condition that it equals zero at + * the left end-point, ie it is precisely + * Integrate[cs(t; a,b), {t, a, x}] + */ +int gsl_cheb_calc_integ(gsl_cheb_series * integ, const gsl_cheb_series * cs); + + + + +__END_DECLS + +#endif /* __GSL_CHEBYSHEV_H__ */ diff --git a/gsl-2.5/cheb/init.c b/gsl-2.5/cheb/init.c new file mode 100644 index 00000000..a923377d --- /dev/null +++ b/gsl-2.5/cheb/init.c @@ -0,0 +1,117 @@ +/* cheb/init.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * Copyright (C) 2009 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include + +/*-*-*-*-*-*-*-*-*-*-*-* Allocators *-*-*-*-*-*-*-*-*-*-*-*/ + +gsl_cheb_series * +gsl_cheb_alloc(const size_t order) +{ + gsl_cheb_series * cs = (gsl_cheb_series *) malloc(sizeof(gsl_cheb_series)); + + if(cs == 0) { + GSL_ERROR_VAL("failed to allocate gsl_cheb_series struct", GSL_ENOMEM, 0); + } + + cs->order = order; + cs->order_sp = order; + + cs->c = (double *) malloc((order+1) * sizeof(double)); + + if(cs->c == 0) { + GSL_ERROR_VAL("failed to allocate cheb coefficients", GSL_ENOMEM, 0); + } + + cs->f = (double *) malloc((order+1) * sizeof(double)); + + if(cs->f == 0) { + GSL_ERROR_VAL("failed to allocate cheb function space", GSL_ENOMEM, 0); + } + + return cs; +} + + +void gsl_cheb_free(gsl_cheb_series * cs) +{ + RETURN_IF_NULL (cs); + free(cs->f); + free(cs->c); + free(cs); +} + +/*-*-*-*-*-*-*-*-*-*-*-* Initializer *-*-*-*-*-*-*-*-*-*-*-*/ + +int gsl_cheb_init(gsl_cheb_series * cs, const gsl_function *func, + const double a, const double b) +{ + size_t k, j; + + if(a >= b) { + GSL_ERROR_VAL("null function interval [a,b]", GSL_EDOM, 0); + } + cs->a = a; + cs->b = b; + /* cs->err = 0.0; */ + + { + double bma = 0.5 * (cs->b - cs->a); + double bpa = 0.5 * (cs->b + cs->a); + double fac = 2.0/(cs->order +1.0); + + for(k = 0; k<=cs->order; k++) { + double y = cos(M_PI * (k+0.5)/(cs->order+1)); + cs->f[k] = GSL_FN_EVAL(func, (y*bma + bpa)); + } + + for(j = 0; j<=cs->order; j++) { + double sum = 0.0; + for(k = 0; k<=cs->order; k++) + sum += cs->f[k]*cos(M_PI * j*(k+0.5)/(cs->order+1)); + cs->c[j] = fac * sum; + } + + } + return GSL_SUCCESS; +} + +size_t +gsl_cheb_order (const gsl_cheb_series * cs) +{ + return cs->order; +} + +size_t +gsl_cheb_size (const gsl_cheb_series * cs) +{ + return (cs->order + 1); +} + +double * +gsl_cheb_coeffs (const gsl_cheb_series * cs) +{ + return cs->c; +} + diff --git a/gsl-2.5/cheb/init.lo b/gsl-2.5/cheb/init.lo new file mode 100644 index 00000000..c1ea778f --- /dev/null +++ b/gsl-2.5/cheb/init.lo @@ -0,0 +1,12 @@ +# init.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/init.o' + +# Name of the non-PIC object +non_pic_object='init.o' + diff --git a/gsl-2.5/cheb/integ.c b/gsl-2.5/cheb/integ.c new file mode 100644 index 00000000..77205630 --- /dev/null +++ b/gsl-2.5/cheb/integ.c @@ -0,0 +1,65 @@ +/* cheb/integ.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include + +int gsl_cheb_calc_integ(gsl_cheb_series * integ, const gsl_cheb_series * f) +{ + const size_t n = f->order + 1; + const double con = 0.25 * (f->b - f->a); + + if(integ->order != f->order) + { + GSL_ERROR ("order of chebyshev series must be equal", GSL_ENOMEM); + } + + /* set the other parameters in the chebyshev struct */ + + integ->a = f->a; + integ->b = f->b; + + /* FIXME: should probably set integ->f[] as well */ + + if(n == 1) { + integ->c[0] = 0.; + } + else if(n == 2) { + integ->c[1] = con * f->c[0]; + integ->c[0] = 2.0 * integ->c[1]; + } + else { + double sum = 0.0; + double fac = 1.0; + size_t i; + for(i=1; i<=n-2; i++) { + integ->c[i] = con * (f->c[i-1] - f->c[i+1])/((double)i); + sum += fac * integ->c[i]; + fac = -fac; + } + integ->c[n-1] = con * f->c[n-2]/(n-1.0); + sum += fac * integ->c[n-1]; + integ->c[0] = 2.0 * sum; + } + + return GSL_SUCCESS; +} diff --git a/gsl-2.5/cheb/integ.lo b/gsl-2.5/cheb/integ.lo new file mode 100644 index 00000000..42ebada6 --- /dev/null +++ b/gsl-2.5/cheb/integ.lo @@ -0,0 +1,12 @@ +# integ.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/integ.o' + +# Name of the non-PIC object +non_pic_object='integ.o' + diff --git a/gsl-2.5/cheb/libgslcheb.la b/gsl-2.5/cheb/libgslcheb.la new file mode 100644 index 00000000..f61c3bf5 --- /dev/null +++ b/gsl-2.5/cheb/libgslcheb.la @@ -0,0 +1,41 @@ +# libgslcheb.la - a libtool library file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='' + +# Names of this library. +library_names='' + +# The name of the static archive. +old_library='libgslcheb.a' + +# Linker flags that can not go in dependency_libs. +inherited_linker_flags='' + +# Libraries that this one depends upon. +dependency_libs=' -lm' + +# Names of additional weak libraries provided by this library +weak_library_names='' + +# Version information for libgslcheb. +current= +age= +revision= + +# Is this an already installed library? +installed=no + +# Should we warn about portability when linking against -modules? +shouldnotlink=no + +# Files to dlopen/dlpreopen +dlopen='' +dlpreopen='' + +# Directory that this library needs to be installed in: +libdir='' diff --git a/gsl-2.5/cheb/test b/gsl-2.5/cheb/test new file mode 100755 index 00000000..b5753a02 Binary files /dev/null and b/gsl-2.5/cheb/test differ diff --git a/gsl-2.5/cheb/test-suite.log b/gsl-2.5/cheb/test-suite.log new file mode 100644 index 00000000..8e07ff30 --- /dev/null +++ b/gsl-2.5/cheb/test-suite.log @@ -0,0 +1,14 @@ +================================== + gsl 2.5: cheb/test-suite.log +================================== + +# TOTAL: 1 +# PASS: 1 +# SKIP: 0 +# XFAIL: 0 +# FAIL: 0 +# XPASS: 0 +# ERROR: 0 + +.. contents:: :depth: 2 + diff --git a/gsl-2.5/cheb/test.c b/gsl-2.5/cheb/test.c new file mode 100644 index 00000000..762f5b47 --- /dev/null +++ b/gsl-2.5/cheb/test.c @@ -0,0 +1,297 @@ +/* cheb/test.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include +#include + +double f_T0 (double x, void * p) { + p = 0; + return 1.0; +} + +double f_T1 (double x, void * p) { + p = 0; + return x; +} + +double f_T2 (double x, void * p) { + p = 0; + return 2*x*x - 1; +} + +double f_sin (double x, void * p) { + p = 0; + return sin(x); +} + +double f_DP (double x, void * p) { + p = 0; + return 2.0; +} + +double f_P (double x, void * p) { + p = 0; + return 2.0*x + 3.0; +} + +double f_IP1 (double x, void * p) { + p = 0; + return 30*(x+5.0)/10.0; /* first order approximation to integral over -5,5 */ +} + + +double f_IP2 (double x, void * p) { + p = 0; + return x*x + 3*x - 10.0; +} + + +void +test_dim (const size_t n, const double a, const double b, + gsl_function * F, gsl_function * DF, gsl_function *IF) +{ + double tol = 100.0 * GSL_DBL_EPSILON; + double x; + + gsl_cheb_series * cs = gsl_cheb_alloc(n); + gsl_cheb_series * csd = gsl_cheb_alloc(n); + gsl_cheb_series * csi = gsl_cheb_alloc(n); + + gsl_cheb_init(cs, F, a, b); + + for(x=a; xc, "gsl_cheb_coeffs"); + } + + for (i = 0; iorder; i++) + { + double c_exp = (i == 0) ? 2.0 : 0.0; + gsl_test_abs (cs->c[i], c_exp, tol, "c[%d] for T_0(x)", i); + } + + gsl_cheb_init(cs, &F_T1, -1.0, 1.0); + + for (i = 0; iorder; i++) + { + double c_exp = (i == 1) ? 1.0 : 0.0; + gsl_test_abs (cs->c[i], c_exp, tol, "c[%d] for T_1(x)", i); + } + + gsl_cheb_init(cs, &F_T2, -1.0, 1.0); + + for (i = 0; iorder; i++) + { + double c_exp = (i == 2) ? 1.0 : 0.0; + gsl_test_abs (cs->c[i], c_exp, tol, "c[%d] for T_2(x)", i); + } + + gsl_cheb_init(cs, &F_sin, -M_PI, M_PI); + + gsl_test_abs (cs->c[0], 0.0, tol, "c[0] for F_sin(x)"); + gsl_test_abs (cs->c[1], 5.69230686359506e-01, tol, "c[1] for F_sin(x)"); + gsl_test_abs (cs->c[2], 0.0, tol, "c[2] for F_sin(x)"); + gsl_test_abs (cs->c[3], -6.66916672405979e-01, tol, "c[3] for F_sin(x)"); + gsl_test_abs (cs->c[4], 0.0, tol, "c[4] for F_sin(x)"); + gsl_test_abs (cs->c[5], 1.04282368734237e-01, tol, "c[5] for F_sin(x)"); + + for(x=-M_PI; x + + * demo.c: remove NOP while statement per comment from Jorge Barros de + Abreu . Add proper return statement to main(). + +2009-07-09 Brian Gough + + * init.c (gsl_combination_free): handle NULL argument in free + +2008-07-03 Brian Gough + + * gsl_combination.h: added gsl_inline.h, use INLINE_DECL and + GSL_RANGE_COND for gsl_combination_get + + * combination.c: moved gsl_combination_get to inline.c + + * inline.c: separate file for inline function object code + + * Makefile.am (INCLUDES): use top_srcdir only, remove top_builddir + +2003-07-30 Brian Gough + + * init.c (gsl_combination_alloc): set c->data to NULL when k=0 + +2003-04-12 Szymon Jaroszewicz + + * combination.c (gsl_combination_valid): fix a typo in error + message + +2003-03-22 Brian Gough + + * combination.c (gsl_combination_memcpy): added memcpy function + +2003-03-21 Brian Gough + + * combination.c (gsl_combination_valid): fix bug in test for + validity (cj + + * test.c: use unsigned loop variables + +Sat Dec 8 18:22:06 2001 Szymon Jaroszewicz + + * added combination support to GSL + diff --git a/gsl-2.5/combination/Makefile b/gsl-2.5/combination/Makefile new file mode 100644 index 00000000..21616cde --- /dev/null +++ b/gsl-2.5/combination/Makefile @@ -0,0 +1,1037 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# combination/Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + + + + +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/gsl +pkgincludedir = $(includedir)/gsl +pkglibdir = $(libdir)/gsl +pkglibexecdir = $(libexecdir)/gsl +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = x86_64-unknown-linux-gnu +host_triplet = x86_64-unknown-linux-gnu +check_PROGRAMS = test$(EXEEXT) +subdir = combination +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp \ + $(noinst_HEADERS) $(pkginclude_HEADERS) \ + $(top_srcdir)/test-driver ChangeLog TODO +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +libgslcombination_la_LIBADD = +am_libgslcombination_la_OBJECTS = init.lo file.lo combination.lo \ + inline.lo +libgslcombination_la_OBJECTS = $(am_libgslcombination_la_OBJECTS) +AM_V_lt = $(am__v_lt_$(V)) +am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) +am__v_lt_0 = --silent +am__v_lt_1 = +am_test_OBJECTS = test.$(OBJEXT) +test_OBJECTS = $(am_test_OBJECTS) +test_DEPENDENCIES = libgslcombination.la ../vector/libgslvector.la \ + ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la \ + ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la \ + ../utils/libutils.la +AM_V_P = $(am__v_P_$(V)) +am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY)) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_$(V)) +am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_$(V)) +am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I. -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_$(V)) +am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_$(V)) +am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libgslcombination_la_SOURCES) $(test_SOURCES) +DIST_SOURCES = $(libgslcombination_la_SOURCES) $(test_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(pkgincludedir)" +HEADERS = $(noinst_HEADERS) $(pkginclude_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = .test +LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing aclocal-1.13 +AMTAR = $${TAR-tar} +AM_DEFAULT_VERBOSITY = 1 +AR = ar +AS = as +AUTOCONF = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing autoconf +AUTOHEADER = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing autoheader +AUTOMAKE = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing automake-1.13 +AWK = gawk +CC = gcc +CCDEPMODE = depmode=gcc3 +CFLAGS = -g -O2 +CPP = gcc -E +CPPFLAGS = +CYGPATH_W = echo +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +DLLTOOL = false +DSYMUTIL = +DUMPBIN = +ECHO_C = +ECHO_N = -n +ECHO_T = +EGREP = /usr/bin/grep -E +EXEEXT = +FGREP = /usr/bin/grep -F +GREP = /usr/bin/grep +GSLCBLAS_LDFLAGS = +GSL_CFLAGS = -I${prefix}/include +GSL_LDFLAGS = +GSL_LIBADD = +GSL_LIBM = -lm +GSL_LIBS = -L${exec_prefix}/lib -lgsl +GSL_LT_CBLAS_VERSION = 0:0:0 +GSL_LT_VERSION = 24:0:1 +GSL_MAJOR_VERSION = 2 +GSL_MINOR_VERSION = 5 +HAVE_AIX_IEEE_INTERFACE = +HAVE_DARWIN86_IEEE_INTERFACE = +HAVE_DARWIN_IEEE_INTERFACE = +HAVE_FREEBSD_IEEE_INTERFACE = +HAVE_GNUM68K_IEEE_INTERFACE = +HAVE_GNUPPC_IEEE_INTERFACE = +HAVE_GNUSPARC_IEEE_INTERFACE = +HAVE_GNUX86_IEEE_INTERFACE = +HAVE_HPUX11_IEEE_INTERFACE = +HAVE_HPUX_IEEE_INTERFACE = +HAVE_IRIX_IEEE_INTERFACE = +HAVE_NETBSD_IEEE_INTERFACE = +HAVE_OPENBSD_IEEE_INTERFACE = +HAVE_OS2EMX_IEEE_INTERFACE = +HAVE_SOLARIS_IEEE_INTERFACE = +HAVE_SUNOS4_IEEE_INTERFACE = +HAVE_TRU64_IEEE_INTERFACE = +INSTALL = /usr/bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = $(install_sh) -c -s +LD = /usr/bin/ld -m elf_x86_64 +LDFLAGS = +LIBM = -lm +LIBOBJS = +LIBS = -lm +LIBTOOL = $(SHELL) $(top_builddir)/libtool +LIPO = +LN_S = ln -s +LTLIBOBJS = +MAINT = # +MAKEINFO = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing makeinfo +MANIFEST_TOOL = : +MKDIR_P = /usr/bin/mkdir -p +NM = /usr/bin/nm -B +NMEDIT = +OBJDUMP = objdump +OBJEXT = o +OTOOL = +OTOOL64 = +PACKAGE = gsl +PACKAGE_BUGREPORT = +PACKAGE_NAME = gsl +PACKAGE_STRING = gsl 2.5 +PACKAGE_TARNAME = gsl +PACKAGE_URL = +PACKAGE_VERSION = 2.5 +PATH_SEPARATOR = : +RANLIB = ranlib +SED = /usr/bin/sed +SET_MAKE = +SHELL = /bin/sh +STRIP = strip +VERSION = 2.5 +abs_builddir = /home/groups/kipac/chto/package/gsl/gsl-2.5/combination +abs_srcdir = /home/groups/kipac/chto/package/gsl/gsl-2.5/combination +abs_top_builddir = /home/groups/kipac/chto/package/gsl/gsl-2.5 +abs_top_srcdir = /home/groups/kipac/chto/package/gsl/gsl-2.5 +ac_ct_AR = ar +ac_ct_CC = gcc +ac_ct_DUMPBIN = +am__include = include +am__leading_dot = . +am__quote = +am__tar = $${TAR-tar} chof - "$$tardir" +am__untar = $${TAR-tar} xf - +bindir = ${exec_prefix}/bin +build = x86_64-unknown-linux-gnu +build_alias = +build_cpu = x86_64 +build_os = linux-gnu +build_vendor = unknown +builddir = . +datadir = ${datarootdir} +datarootdir = ${prefix}/share +docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} +dvidir = ${docdir} +exec_prefix = ${prefix} +host = x86_64-unknown-linux-gnu +host_alias = +host_cpu = x86_64 +host_os = linux-gnu +host_vendor = unknown +htmldir = ${docdir} +includedir = ${prefix}/include +infodir = ${datarootdir}/info +install_sh = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/install-sh +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +localedir = ${datarootdir}/locale +localstatedir = ${prefix}/var +mandir = ${datarootdir}/man +mkdir_p = $(MKDIR_P) +oldincludedir = /usr/include +pdfdir = ${docdir} +prefix = /home/groups/kipac/chto/package/gsl/gsl_lib +program_transform_name = s,x,x, +psdir = ${docdir} +sbindir = ${exec_prefix}/sbin +sharedstatedir = ${prefix}/com +srcdir = . +sysconfdir = ${prefix}/etc +target_alias = +top_build_prefix = ../ +top_builddir = .. +top_srcdir = .. +noinst_LTLIBRARIES = libgslcombination.la +pkginclude_HEADERS = gsl_combination.h +AM_CPPFLAGS = -I$(top_srcdir) +libgslcombination_la_SOURCES = init.c file.c combination.c inline.c +noinst_HEADERS = +TESTS = $(check_PROGRAMS) +test_SOURCES = test.c +test_LDADD = libgslcombination.la ../vector/libgslvector.la ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu combination/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu combination/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: # $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): # $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libgslcombination.la: $(libgslcombination_la_OBJECTS) $(libgslcombination_la_DEPENDENCIES) $(EXTRA_libgslcombination_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(libgslcombination_la_OBJECTS) $(libgslcombination_la_LIBADD) $(LIBS) + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) $(EXTRA_test_DEPENDENCIES) + @rm -f test$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_OBJECTS) $(test_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +include ./$(DEPDIR)/combination.Plo +include ./$(DEPDIR)/file.Plo +include ./$(DEPDIR)/init.Plo +include ./$(DEPDIR)/inline.Plo +include ./$(DEPDIR)/test.Po + +.c.o: + $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# $(AM_V_CC)source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(COMPILE) -c $< + +.c.obj: + $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# $(AM_V_CC)source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: + $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +# $(AM_V_CC)source='$<' object='$@' libtool=yes \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-pkgincludeHEADERS: $(pkginclude_HEADERS) + @$(NORMAL_INSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \ + done + +uninstall-pkgincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + else \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_PROGRAMS) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +test.log: test$(EXEEXT) + @p='test$(EXEEXT)'; \ + b='test'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +#.test$(EXEEXT).log: +# @p='$<'; \ +# $(am__set_b); \ +# $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +# --log-file $$b.log --trs-file $$b.trs \ +# $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +# "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-am +all-am: Makefile $(LTLIBRARIES) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(pkgincludedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-pkgincludeHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-pkgincludeHEADERS + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES cscopelist-am ctags ctags-am distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-pkgincludeHEADERS \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + recheck tags tags-am uninstall uninstall-am \ + uninstall-pkgincludeHEADERS + + +#noinst_PROGRAMS = demo +#demo_SOURCES = demo.c +#demo_LDADD = libgslcombination.la ../vector/libgslvector.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la + +#CLEANFILES = test.txt test.dat + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gsl-2.5/combination/Makefile.am b/gsl-2.5/combination/Makefile.am new file mode 100644 index 00000000..f920db9b --- /dev/null +++ b/gsl-2.5/combination/Makefile.am @@ -0,0 +1,25 @@ +noinst_LTLIBRARIES = libgslcombination.la + +pkginclude_HEADERS = gsl_combination.h + +AM_CPPFLAGS = -I$(top_srcdir) + +libgslcombination_la_SOURCES = init.c file.c combination.c inline.c + +noinst_HEADERS = + +TESTS = $(check_PROGRAMS) + +check_PROGRAMS = test + +test_SOURCES = test.c + +test_LDADD = libgslcombination.la ../vector/libgslvector.la ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la + +#noinst_PROGRAMS = demo +#demo_SOURCES = demo.c +#demo_LDADD = libgslcombination.la ../vector/libgslvector.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la + +#CLEANFILES = test.txt test.dat + + diff --git a/gsl-2.5/combination/Makefile.in b/gsl-2.5/combination/Makefile.in new file mode 100644 index 00000000..13d25cf2 --- /dev/null +++ b/gsl-2.5/combination/Makefile.in @@ -0,0 +1,1037 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + + +VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +check_PROGRAMS = test$(EXEEXT) +subdir = combination +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp \ + $(noinst_HEADERS) $(pkginclude_HEADERS) \ + $(top_srcdir)/test-driver ChangeLog TODO +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +libgslcombination_la_LIBADD = +am_libgslcombination_la_OBJECTS = init.lo file.lo combination.lo \ + inline.lo +libgslcombination_la_OBJECTS = $(am_libgslcombination_la_OBJECTS) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +am_test_OBJECTS = test.$(OBJEXT) +test_OBJECTS = $(am_test_OBJECTS) +test_DEPENDENCIES = libgslcombination.la ../vector/libgslvector.la \ + ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la \ + ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la \ + ../utils/libutils.la +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libgslcombination_la_SOURCES) $(test_SOURCES) +DIST_SOURCES = $(libgslcombination_la_SOURCES) $(test_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(pkgincludedir)" +HEADERS = $(noinst_HEADERS) $(pkginclude_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = @EXEEXT@ .test +LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +GSLCBLAS_LDFLAGS = @GSLCBLAS_LDFLAGS@ +GSL_CFLAGS = @GSL_CFLAGS@ +GSL_LDFLAGS = @GSL_LDFLAGS@ +GSL_LIBADD = @GSL_LIBADD@ +GSL_LIBM = @GSL_LIBM@ +GSL_LIBS = @GSL_LIBS@ +GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ +GSL_LT_VERSION = @GSL_LT_VERSION@ +GSL_MAJOR_VERSION = @GSL_MAJOR_VERSION@ +GSL_MINOR_VERSION = @GSL_MINOR_VERSION@ +HAVE_AIX_IEEE_INTERFACE = @HAVE_AIX_IEEE_INTERFACE@ +HAVE_DARWIN86_IEEE_INTERFACE = @HAVE_DARWIN86_IEEE_INTERFACE@ +HAVE_DARWIN_IEEE_INTERFACE = @HAVE_DARWIN_IEEE_INTERFACE@ +HAVE_FREEBSD_IEEE_INTERFACE = @HAVE_FREEBSD_IEEE_INTERFACE@ +HAVE_GNUM68K_IEEE_INTERFACE = @HAVE_GNUM68K_IEEE_INTERFACE@ +HAVE_GNUPPC_IEEE_INTERFACE = @HAVE_GNUPPC_IEEE_INTERFACE@ +HAVE_GNUSPARC_IEEE_INTERFACE = @HAVE_GNUSPARC_IEEE_INTERFACE@ +HAVE_GNUX86_IEEE_INTERFACE = @HAVE_GNUX86_IEEE_INTERFACE@ +HAVE_HPUX11_IEEE_INTERFACE = @HAVE_HPUX11_IEEE_INTERFACE@ +HAVE_HPUX_IEEE_INTERFACE = @HAVE_HPUX_IEEE_INTERFACE@ +HAVE_IRIX_IEEE_INTERFACE = @HAVE_IRIX_IEEE_INTERFACE@ +HAVE_NETBSD_IEEE_INTERFACE = @HAVE_NETBSD_IEEE_INTERFACE@ +HAVE_OPENBSD_IEEE_INTERFACE = @HAVE_OPENBSD_IEEE_INTERFACE@ +HAVE_OS2EMX_IEEE_INTERFACE = @HAVE_OS2EMX_IEEE_INTERFACE@ +HAVE_SOLARIS_IEEE_INTERFACE = @HAVE_SOLARIS_IEEE_INTERFACE@ +HAVE_SUNOS4_IEEE_INTERFACE = @HAVE_SUNOS4_IEEE_INTERFACE@ +HAVE_TRU64_IEEE_INTERFACE = @HAVE_TRU64_IEEE_INTERFACE@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBM = @LIBM@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +noinst_LTLIBRARIES = libgslcombination.la +pkginclude_HEADERS = gsl_combination.h +AM_CPPFLAGS = -I$(top_srcdir) +libgslcombination_la_SOURCES = init.c file.c combination.c inline.c +noinst_HEADERS = +TESTS = $(check_PROGRAMS) +test_SOURCES = test.c +test_LDADD = libgslcombination.la ../vector/libgslvector.la ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu combination/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu combination/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libgslcombination.la: $(libgslcombination_la_OBJECTS) $(libgslcombination_la_DEPENDENCIES) $(EXTRA_libgslcombination_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(libgslcombination_la_OBJECTS) $(libgslcombination_la_LIBADD) $(LIBS) + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) $(EXTRA_test_DEPENDENCIES) + @rm -f test$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_OBJECTS) $(test_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/combination.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/file.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/init.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/inline.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test.Po@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-pkgincludeHEADERS: $(pkginclude_HEADERS) + @$(NORMAL_INSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \ + done + +uninstall-pkgincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + else \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_PROGRAMS) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +test.log: test$(EXEEXT) + @p='test$(EXEEXT)'; \ + b='test'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +@am__EXEEXT_TRUE@.test$(EXEEXT).log: +@am__EXEEXT_TRUE@ @p='$<'; \ +@am__EXEEXT_TRUE@ $(am__set_b); \ +@am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +@am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ +@am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +@am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-am +all-am: Makefile $(LTLIBRARIES) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(pkgincludedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-pkgincludeHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-pkgincludeHEADERS + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES cscopelist-am ctags ctags-am distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-pkgincludeHEADERS \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + recheck tags tags-am uninstall uninstall-am \ + uninstall-pkgincludeHEADERS + + +#noinst_PROGRAMS = demo +#demo_SOURCES = demo.c +#demo_LDADD = libgslcombination.la ../vector/libgslvector.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la + +#CLEANFILES = test.txt test.dat + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gsl-2.5/combination/TODO b/gsl-2.5/combination/TODO new file mode 100644 index 00000000..fbd4f7c6 --- /dev/null +++ b/gsl-2.5/combination/TODO @@ -0,0 +1,4 @@ +# -*- org -*- +#+CATEGORY: combination + +* The module has a lot of overlap with multiset/ some of the functions could be abstracted out. diff --git a/gsl-2.5/combination/combination.c b/gsl-2.5/combination/combination.c new file mode 100644 index 00000000..370a7698 --- /dev/null +++ b/gsl-2.5/combination/combination.c @@ -0,0 +1,172 @@ +/* combination/combination.c + * based on permutation/permutation.c by Brian Gough + * + * Copyright (C) 2001 Szymon Jaroszewicz + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include + +size_t +gsl_combination_n (const gsl_combination * c) +{ + return c->n ; +} + +size_t +gsl_combination_k (const gsl_combination * c) +{ + return c->k ; +} + +size_t * +gsl_combination_data (const gsl_combination * c) +{ + return c->data ; +} + +int +gsl_combination_valid (gsl_combination * c) +{ + const size_t n = c->n ; + const size_t k = c->k ; + + size_t i, j ; + + if( k > n ) + { + GSL_ERROR("combination has k greater than n", GSL_FAILURE) ; + } + for (i = 0; i < k; i++) + { + const size_t ci = c->data[i]; + + if (ci >= n) + { + GSL_ERROR("combination index outside range", GSL_FAILURE) ; + } + + for (j = 0; j < i; j++) + { + if (c->data[j] == ci) + { + GSL_ERROR("duplicate combination index", GSL_FAILURE) ; + } + if (c->data[j] > ci) + { + GSL_ERROR("combination indices not in increasing order", + GSL_FAILURE) ; + } + } + } + + return GSL_SUCCESS; +} + + +int +gsl_combination_next (gsl_combination * c) +{ + /* Replaces c with the next combination (in the standard lexicographical + * ordering). Returns GSL_FAILURE if there is no next combination. + */ + const size_t n = c->n; + const size_t k = c->k; + size_t *data = c->data; + size_t i; + + if(k == 0) + { + return GSL_FAILURE; + } + i = k - 1; + + while(i > 0 && data[i] == n - k + i) + { + i--; + } + if(i == 0 && data[i] == n - k) + { + return GSL_FAILURE; + } + data[i]++; + for(; i < k - 1; i++) + { + data[i + 1] = data[i] + 1; + } + return GSL_SUCCESS; +} + +int +gsl_combination_prev (gsl_combination * c) +{ + /* Replaces c with the previous combination (in the standard + * lexicographical ordering). Returns GSL_FAILURE if there is no + * previous combination. + */ + const size_t n = c->n; + const size_t k = c->k; + size_t *data = c->data; + size_t i; + + if(k == 0) + { + return GSL_FAILURE; + } + i = k - 1; + + while(i > 0 && data[i] == data[i-1] + 1) + { + i--; + } + if(i == 0 && data[i] == 0) + { + return GSL_FAILURE; + } + data[i++]--; + for(; i < k; i++) + { + data[i] = n - k + i; + } + return GSL_SUCCESS; +} + +int +gsl_combination_memcpy (gsl_combination * dest, const gsl_combination * src) +{ + const size_t src_n = src->n; + const size_t src_k = src->k; + const size_t dest_n = dest->n; + const size_t dest_k = dest->k; + + if (src_n != dest_n || src_k != dest_k) + { + GSL_ERROR ("combination lengths are not equal", GSL_EBADLEN); + } + + { + size_t j; + + for (j = 0; j < src_k; j++) + { + dest->data[j] = src->data[j]; + } + } + + return GSL_SUCCESS; +} diff --git a/gsl-2.5/combination/combination.lo b/gsl-2.5/combination/combination.lo new file mode 100644 index 00000000..3607ba2b --- /dev/null +++ b/gsl-2.5/combination/combination.lo @@ -0,0 +1,12 @@ +# combination.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/combination.o' + +# Name of the non-PIC object +non_pic_object='combination.o' + diff --git a/gsl-2.5/combination/file.c b/gsl-2.5/combination/file.c new file mode 100644 index 00000000..41622edb --- /dev/null +++ b/gsl-2.5/combination/file.c @@ -0,0 +1,114 @@ +/* combination/file.c + * based on permutation/file.c by Brian Gough + * + * Copyright (C) 2001 Szymon Jaroszewicz + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include + +#define IN_FORMAT "%lu" + +int +gsl_combination_fread (FILE * stream, gsl_combination * c) +{ + size_t k = c->k ; + + size_t * data = c->data ; + + size_t items = fread (data, sizeof (size_t), k, stream); + + if (items != k) + { + GSL_ERROR ("fread failed", GSL_EFAILED); + } + + return GSL_SUCCESS; +} + +int +gsl_combination_fwrite (FILE * stream, const gsl_combination * c) +{ + size_t k = c->k ; + + size_t * data = c->data ; + + size_t items = fwrite (data, sizeof (size_t), k, stream); + + if (items != k) + { + GSL_ERROR ("fwrite failed", GSL_EFAILED); + } + + return GSL_SUCCESS; +} + +int +gsl_combination_fprintf (FILE * stream, const gsl_combination * c, const char *format) +{ + size_t k = c->k ; + + size_t * data = c->data ; + + size_t i; + + for (i = 0; i < k; i++) + { + int status = fprintf (stream, format, data[i]); + + if (status < 0) + { + GSL_ERROR ("fprintf failed", GSL_EFAILED); + } + } + + return GSL_SUCCESS; +} + +int +gsl_combination_fscanf (FILE * stream, gsl_combination * c) +{ + size_t k = c->k ; + + size_t * data = c->data ; + + size_t i; + + for (i = 0; i < k; i++) + { + unsigned long j ; + + /* FIXME: what if size_t != unsigned long ??? + + want read in size_t but have to read in unsigned long to avoid + error from compiler */ + + int status = fscanf (stream, IN_FORMAT, &j); + + if (status != 1) + { + GSL_ERROR ("fscanf failed", GSL_EFAILED); + } + + data[i] = j; + } + + return GSL_SUCCESS; +} + diff --git a/gsl-2.5/combination/file.lo b/gsl-2.5/combination/file.lo new file mode 100644 index 00000000..1443af7c --- /dev/null +++ b/gsl-2.5/combination/file.lo @@ -0,0 +1,12 @@ +# file.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/file.o' + +# Name of the non-PIC object +non_pic_object='file.o' + diff --git a/gsl-2.5/combination/gsl_combination.h b/gsl-2.5/combination/gsl_combination.h new file mode 100644 index 00000000..69de7cf1 --- /dev/null +++ b/gsl-2.5/combination/gsl_combination.h @@ -0,0 +1,92 @@ +/* combination/gsl_combination.h + * based on permutation/gsl_permutation.h by Brian Gough + * + * Copyright (C) 2001 Szymon Jaroszewicz + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_COMBINATION_H__ +#define __GSL_COMBINATION_H__ + +#include +#include +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +struct gsl_combination_struct +{ + size_t n; + size_t k; + size_t *data; +}; + +typedef struct gsl_combination_struct gsl_combination; + +gsl_combination *gsl_combination_alloc (const size_t n, const size_t k); +gsl_combination *gsl_combination_calloc (const size_t n, const size_t k); +void gsl_combination_init_first (gsl_combination * c); +void gsl_combination_init_last (gsl_combination * c); +void gsl_combination_free (gsl_combination * c); +int gsl_combination_memcpy (gsl_combination * dest, const gsl_combination * src); + +int gsl_combination_fread (FILE * stream, gsl_combination * c); +int gsl_combination_fwrite (FILE * stream, const gsl_combination * c); +int gsl_combination_fscanf (FILE * stream, gsl_combination * c); +int gsl_combination_fprintf (FILE * stream, const gsl_combination * c, const char *format); + +size_t gsl_combination_n (const gsl_combination * c); +size_t gsl_combination_k (const gsl_combination * c); +size_t * gsl_combination_data (const gsl_combination * c); + +int gsl_combination_valid (gsl_combination * c); +int gsl_combination_next (gsl_combination * c); +int gsl_combination_prev (gsl_combination * c); + +INLINE_DECL size_t gsl_combination_get (const gsl_combination * c, const size_t i); + +#ifdef HAVE_INLINE + +INLINE_FUN +size_t +gsl_combination_get (const gsl_combination * c, const size_t i) +{ +#if GSL_RANGE_CHECK + if (GSL_RANGE_COND(i >= c->k)) /* size_t is unsigned, can't be negative */ + { + GSL_ERROR_VAL ("index out of range", GSL_EINVAL, 0); + } +#endif + return c->data[i]; +} + +#endif /* HAVE_INLINE */ + +__END_DECLS + +#endif /* __GSL_COMBINATION_H__ */ diff --git a/gsl-2.5/combination/init.c b/gsl-2.5/combination/init.c new file mode 100644 index 00000000..99da7a7f --- /dev/null +++ b/gsl-2.5/combination/init.c @@ -0,0 +1,128 @@ +/* combination/init.c + * based on permutation/init.c by Brian Gough + * + * Copyright (C) 2001 Szymon Jaroszewicz + * Copyright (C) 2009 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include + +gsl_combination * +gsl_combination_alloc (const size_t n, const size_t k) +{ + gsl_combination * c; + + if (n == 0) + { + GSL_ERROR_VAL ("combination parameter n must be positive integer", + GSL_EDOM, 0); + } + if (k > n) + { + GSL_ERROR_VAL ("combination length k must be an integer less than or equal to n", + GSL_EDOM, 0); + } + c = (gsl_combination *) malloc (sizeof (gsl_combination)); + + if (c == 0) + { + GSL_ERROR_VAL ("failed to allocate space for combination struct", + GSL_ENOMEM, 0); + } + + if (k > 0) + { + c->data = (size_t *) malloc (k * sizeof (size_t)); + + if (c->data == 0) + { + free (c); /* exception in constructor, avoid memory leak */ + + GSL_ERROR_VAL ("failed to allocate space for combination data", + GSL_ENOMEM, 0); + } + } + else + { + c->data = 0; + } + + c->n = n; + c->k = k; + + return c; +} + +gsl_combination * +gsl_combination_calloc (const size_t n, const size_t k) +{ + size_t i; + + gsl_combination * c = gsl_combination_alloc (n, k); + + if (c == 0) + return 0; + + /* initialize combination to identity */ + + for (i = 0; i < k; i++) + { + c->data[i] = i; + } + + return c; +} + +void +gsl_combination_init_first (gsl_combination * c) +{ + const size_t k = c->k ; + size_t i; + + /* initialize combination to identity */ + + for (i = 0; i < k; i++) + { + c->data[i] = i; + } +} + +void +gsl_combination_init_last (gsl_combination * c) +{ + const size_t k = c->k ; + size_t i; + size_t n = c->n; + + /* initialize combination to identity */ + + for (i = 0; i < k; i++) + { + c->data[i] = n - k + i; + } +} + +void +gsl_combination_free (gsl_combination * c) +{ + RETURN_IF_NULL (c); + if (c->k > 0) free (c->data); + free (c); +} diff --git a/gsl-2.5/combination/init.lo b/gsl-2.5/combination/init.lo new file mode 100644 index 00000000..c1ea778f --- /dev/null +++ b/gsl-2.5/combination/init.lo @@ -0,0 +1,12 @@ +# init.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/init.o' + +# Name of the non-PIC object +non_pic_object='init.o' + diff --git a/gsl-2.5/combination/inline.c b/gsl-2.5/combination/inline.c new file mode 100644 index 00000000..c33c358d --- /dev/null +++ b/gsl-2.5/combination/inline.c @@ -0,0 +1,24 @@ +/* combination/inline.c + * + * Copyright (C) 2008 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Compile all the inline functions */ + +#define COMPILE_INLINE_STATIC +#include "build.h" +#include diff --git a/gsl-2.5/combination/inline.lo b/gsl-2.5/combination/inline.lo new file mode 100644 index 00000000..c5763370 --- /dev/null +++ b/gsl-2.5/combination/inline.lo @@ -0,0 +1,12 @@ +# inline.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/inline.o' + +# Name of the non-PIC object +non_pic_object='inline.o' + diff --git a/gsl-2.5/combination/libgslcombination.la b/gsl-2.5/combination/libgslcombination.la new file mode 100644 index 00000000..9d4d5e80 --- /dev/null +++ b/gsl-2.5/combination/libgslcombination.la @@ -0,0 +1,41 @@ +# libgslcombination.la - a libtool library file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='' + +# Names of this library. +library_names='' + +# The name of the static archive. +old_library='libgslcombination.a' + +# Linker flags that can not go in dependency_libs. +inherited_linker_flags='' + +# Libraries that this one depends upon. +dependency_libs=' -lm' + +# Names of additional weak libraries provided by this library +weak_library_names='' + +# Version information for libgslcombination. +current= +age= +revision= + +# Is this an already installed library? +installed=no + +# Should we warn about portability when linking against -modules? +shouldnotlink=no + +# Files to dlopen/dlpreopen +dlopen='' +dlpreopen='' + +# Directory that this library needs to be installed in: +libdir='' diff --git a/gsl-2.5/combination/test b/gsl-2.5/combination/test new file mode 100755 index 00000000..c7529692 Binary files /dev/null and b/gsl-2.5/combination/test differ diff --git a/gsl-2.5/combination/test-suite.log b/gsl-2.5/combination/test-suite.log new file mode 100644 index 00000000..ff6fbffb --- /dev/null +++ b/gsl-2.5/combination/test-suite.log @@ -0,0 +1,14 @@ +========================================= + gsl 2.5: combination/test-suite.log +========================================= + +# TOTAL: 1 +# PASS: 1 +# SKIP: 0 +# XFAIL: 0 +# FAIL: 0 +# XPASS: 0 +# ERROR: 0 + +.. contents:: :depth: 2 + diff --git a/gsl-2.5/combination/test.c b/gsl-2.5/combination/test.c new file mode 100644 index 00000000..0e0a795d --- /dev/null +++ b/gsl-2.5/combination/test.c @@ -0,0 +1,261 @@ +/* combination/test.c + * based on permutation/test.c by Brian Gough + * + * Copyright (C) 2001 Szymon Jaroszewicz + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include +#include + +size_t c63[20][3] = { + { 0, 1, 2 }, { 0, 1, 3 }, { 0, 1, 4 }, { 0, 1, 5 }, + { 0, 2, 3 }, { 0, 2, 4 }, { 0, 2, 5 }, { 0, 3, 4 }, + { 0, 3, 5 }, { 0, 4, 5 }, { 1, 2, 3 }, { 1, 2, 4 }, + { 1, 2, 5 }, { 1, 3, 4 }, { 1, 3, 5 }, { 1, 4, 5 }, + { 2, 3, 4 }, { 2, 3, 5 }, { 2, 4, 5 }, { 3, 4, 5 } +} ; + +void my_error_handler (const char *reason, const char *file, int line, int err); + + +int +main (void) +{ + size_t i, j; + int status = 0, s; + gsl_combination * c ; + + gsl_ieee_env_setup (); + + c = gsl_combination_alloc (6,3); + + /* Test combinations in forward order */ + + gsl_combination_init_first (c); + + i = 0; + + do + { + if ( i >= 20 ) + { + status = 1; + break; + } + for (j = 0; j < 3; j++) + { + status |= (c->data[j] != c63[i][j]); + } + + { + int s1 = gsl_combination_valid (c); + gsl_test (s1, "gsl_combination_valid (%u)", i); + } + + i++; + } + while (gsl_combination_next(c) == GSL_SUCCESS); + + gsl_test(status, "gsl_combination_next, 6 choose 3 combination, 20 steps"); + + gsl_combination_next(c); + gsl_combination_next(c); + gsl_combination_next(c); + for (j = 0; j < 3; j++) + { + status |= (c->data[j] != c63[19][j]); + } + gsl_test(status, "gsl_combination_next on the last combination"); + + { + int s1 = gsl_combination_valid (c); + gsl_test (s1, "gsl_combination_valid on the last combination"); + } + + { + gsl_combination * d = gsl_combination_alloc (6,3); + gsl_combination_memcpy (d, c); + + status = 0; + + for (j = 0; j < 3; j++) + { + status |= (d->data[j] != c->data[j]); + } + + gsl_test (status, "gsl_combination_memcpy, 6 choose 3 combination"); + gsl_combination_free(d); + } + + + /* Now test combinations in reverse order */ + + gsl_combination_init_last (c); + + i = 20; + do + { + if ( i == 0 ) + { + status = 1; + break; + } + + i--; + + for (j = 0; j < 3; j++) + { + status |= (c->data[j] != c63[i][j]); + } + + { + int s1 = gsl_combination_valid (c); + gsl_test (s1, "gsl_combination_valid (%u)", i); + } + } + while (gsl_combination_prev(c) == GSL_SUCCESS); + + gsl_test(status, "gsl_combination_prev, 6 choose 3 combination, 20 steps"); + + gsl_combination_prev(c); + gsl_combination_prev(c); + gsl_combination_prev(c); + for (j = 0; j < 3; j++) + { + status |= (c->data[j] != c63[0][j]); + } + gsl_test(status, "gsl_combination_prev on the first combination"); + + { + int s1 = gsl_combination_valid (c); + gsl_test (s1, "gsl_combination_valid on the first combination"); + } + + { + gsl_combination * d = gsl_combination_alloc (6,3); + gsl_combination_memcpy (d, c); + + status = 0; + + for (j = 0; j < 3; j++) + { + status |= (d->data[j] != c->data[j]); + } + + gsl_test (status, "gsl_combination_memcpy, 6 choose 3 combination"); + gsl_combination_free(d); + } + + gsl_combination_free (c); + + c = gsl_combination_calloc(7, 0); + /* should return GSL_FAILURE every time */ + status |= (gsl_combination_next(c) != GSL_FAILURE); + status |= (gsl_combination_next(c) != GSL_FAILURE); + status |= (gsl_combination_prev(c) != GSL_FAILURE); + status |= (gsl_combination_prev(c) != GSL_FAILURE); + gsl_test(status, "gsl_combination 7 choose 0"); + gsl_combination_free (c); + + c = gsl_combination_calloc(7, 7); + /* should return GSL_FAILURE every time */ + for(j = 0; j < 7; j++) + { + status |= (gsl_combination_get(c, j) != j); + } + status |= (gsl_combination_next(c) != GSL_FAILURE); + for(j = 0; j < 7; j++) + { + status |= (gsl_combination_get(c, j) != j); + } + status |= (gsl_combination_next(c) != GSL_FAILURE); + for(j = 0; j < 7; j++) + { + status |= (gsl_combination_get(c, j) != j); + } + status |= (gsl_combination_prev(c) != GSL_FAILURE); + for(j = 0; j < 7; j++) + { + status |= (gsl_combination_get(c, j) != j); + } + status |= (gsl_combination_prev(c) != GSL_FAILURE); + for(j = 0; j < 7; j++) + { + status |= (gsl_combination_get(c, j) != j); + } + gsl_test(status, "gsl_combination 7 choose 7"); + gsl_combination_free (c); + + c = gsl_combination_calloc(6, 3); + + gsl_set_error_handler (&my_error_handler); + + c->data[0] = 1; + c->data[1] = 1; + c->data[2] = 2; + s = gsl_combination_valid (c); + gsl_test (!s, "gsl_combination_valid on an invalid combination (1,1,2)"); + + c->data[0] = 2; + c->data[1] = 1; + c->data[2] = 0; + s = gsl_combination_valid (c); + gsl_test (!s, "gsl_combination_valid on an invalid combination (2,1,0)"); + + c->data[0] = 1; + c->data[1] = 2; + c->data[2] = 0; + s = gsl_combination_valid (c); + gsl_test (!s, "gsl_combination_valid on an invalid combination (1,2,0)"); + + { + gsl_combination * d = gsl_combination_alloc (6,4); + int s = gsl_combination_memcpy (d, c); + gsl_test (!s, "gsl_combination_memcpy, (6,4) vs (6,3)"); + gsl_combination_free(d); + } + + { + gsl_combination * d = gsl_combination_alloc (7,3); + int s = gsl_combination_memcpy (d, c); + gsl_test (!s, "gsl_combination_memcpy, (7,3) vs (6,3)"); + gsl_combination_free(d); + } + + { + gsl_combination * d = gsl_combination_alloc (7,2); + int s = gsl_combination_memcpy (d, c); + gsl_test (!s, "gsl_combination_memcpy, (7,2) vs (6,3)"); + gsl_combination_free(d); + } + + + gsl_combination_free (c); + + exit (gsl_test_summary()); +} + +void +my_error_handler (const char *reason, const char *file, int line, int err) +{ + if (0) printf ("(caught [%s:%d: %s (%d)])\n", file, line, reason, err) ; +} diff --git a/gsl-2.5/combination/test.log b/gsl-2.5/combination/test.log new file mode 100644 index 00000000..f0045f14 --- /dev/null +++ b/gsl-2.5/combination/test.log @@ -0,0 +1 @@ +Completed [56/56] diff --git a/gsl-2.5/combination/test.trs b/gsl-2.5/combination/test.trs new file mode 100644 index 00000000..3f0f396c --- /dev/null +++ b/gsl-2.5/combination/test.trs @@ -0,0 +1,4 @@ +:test-result: PASS +:global-test-result: PASS +:recheck: no +:copy-in-global-log: no diff --git a/gsl-2.5/complex/.deps/inline.Plo b/gsl-2.5/complex/.deps/inline.Plo new file mode 100644 index 00000000..53f04e77 --- /dev/null +++ b/gsl-2.5/complex/.deps/inline.Plo @@ -0,0 +1,12 @@ +inline.lo: inline.c /usr/include/stdc-predef.h ../build.h \ + ../gsl/gsl_complex_math.h ../gsl/gsl_inline.h ../gsl/gsl_complex.h + +/usr/include/stdc-predef.h: + +../build.h: + +../gsl/gsl_complex_math.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_complex.h: diff --git a/gsl-2.5/complex/.deps/math.Plo b/gsl-2.5/complex/.deps/math.Plo new file mode 100644 index 00000000..144b8657 --- /dev/null +++ b/gsl-2.5/complex/.deps/math.Plo @@ -0,0 +1,88 @@ +math.lo: math.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_math.h ../gsl/gsl_sys.h \ + ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_complex.h \ + ../gsl/gsl_complex_math.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_complex_math.h: diff --git a/gsl-2.5/complex/.deps/test.Po b/gsl-2.5/complex/.deps/test.Po new file mode 100644 index 00000000..0bb20f62 --- /dev/null +++ b/gsl-2.5/complex/.deps/test.Po @@ -0,0 +1,174 @@ +test.o: test.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../gsl/gsl_ieee_utils.h ../gsl/gsl_test.h \ + ../gsl/gsl_math.h /usr/include/math.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_complex.h \ + ../gsl/gsl_complex_math.h results1.h results.h results2.h results_real.h \ + results_zreal.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../gsl/gsl_ieee_utils.h: + +../gsl/gsl_test.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_complex_math.h: + +results1.h: + +results.h: + +results2.h: + +results_real.h: + +results_zreal.h: diff --git a/gsl-2.5/complex/.libs/libgslcomplex.la b/gsl-2.5/complex/.libs/libgslcomplex.la new file mode 120000 index 00000000..a938e81e --- /dev/null +++ b/gsl-2.5/complex/.libs/libgslcomplex.la @@ -0,0 +1 @@ +../libgslcomplex.la \ No newline at end of file diff --git a/gsl-2.5/complex/ChangeLog b/gsl-2.5/complex/ChangeLog new file mode 100644 index 00000000..57d4ec7d --- /dev/null +++ b/gsl-2.5/complex/ChangeLog @@ -0,0 +1,80 @@ +2010-05-06 Brian Gough + + * test.c (main): added tests for functions like pow_real + +2008-07-03 Brian Gough + + * math.c: handle inline functions separately + + * gsl_complex_math.h: add declarations for inline functions + + * inline.c: separate file for inline functions + + * Makefile.am (INCLUDES): use top_srcdir + +2007-09-14 Brian Gough + + * test.c: add a margin of safety on tests for released versions, + as in special functions + +2007-08-30 Brian Gough + + * Makefile.am (test_SOURCES): added missing file results2.h + +2007-08-30 Brian Gough + + * Makefile.am (test_SOURCES): added missing file results2.h + +2007-08-15 Brian Gough + + * math.c (gsl_complex_pow): handle (0,0)^(0,0) (x,y)^(1,0) + and (x,y)^(-1,0) as special cases + +2003-01-25 Brian Gough + + * math.c (gsl_complex_arccsc_real): fixed bug for incorrect sign + of imaginary part when -1 + + * math.c (gsl_complex_arg): enforce special case arg(0,0) = 0.0 + +Mon Sep 10 22:57:27 2001 Brian Gough + + * math.c (gsl_complex_div_real gsl_complex_div_real): added + missing functions div_real and div_imag + +Mon Aug 27 18:58:41 2001 Brian Gough + + * test.el: trim the tests down to a more reasonable size + +Thu Aug 9 15:48:48 2001 Brian Gough + + * math.c (gsl_complex_tanh): improve accuracy for large R + +Fri Jul 27 23:29:10 2001 Brian Gough + + * math.c (gsl_complex_cos): avoid returning negative zero for the + imaginary part when the argument is purely real + +Wed Mar 21 14:40:34 2001 Brian Gough + + * gsl_complex.h (GSL_COMPLEX_P): added macro to point to beginning + of complex array within the struct + +Mon Dec 4 12:29:12 2000 Brian Gough + + * math.c (gsl_complex_rect): changed the function gsl_complex_xy + to gsl_complex_rect, since this is more meaningful + +Sun Oct 22 13:55:09 2000 Brian Gough + + * math.c: changed calls to gsl_hypot() to hypot() so that the + system function is used in preference (the configure script will + define hypot to gsl_hypot if hypot is unavailable), similar change + for functions log1p and gsl_log1p also + +Wed Mar 15 11:17:21 2000 Brian Gough + + * gsl_complex.h: moved into complex/ subdirectory from top-level + diff --git a/gsl-2.5/complex/Makefile b/gsl-2.5/complex/Makefile new file mode 100644 index 00000000..77d76c22 --- /dev/null +++ b/gsl-2.5/complex/Makefile @@ -0,0 +1,1032 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# complex/Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + + + + +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/gsl +pkgincludedir = $(includedir)/gsl +pkglibdir = $(libdir)/gsl +pkglibexecdir = $(libexecdir)/gsl +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = x86_64-unknown-linux-gnu +host_triplet = x86_64-unknown-linux-gnu +check_PROGRAMS = test$(EXEEXT) +subdir = complex +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp \ + $(pkginclude_HEADERS) $(top_srcdir)/test-driver ChangeLog TODO +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +libgslcomplex_la_LIBADD = +am_libgslcomplex_la_OBJECTS = math.lo inline.lo +libgslcomplex_la_OBJECTS = $(am_libgslcomplex_la_OBJECTS) +AM_V_lt = $(am__v_lt_$(V)) +am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) +am__v_lt_0 = --silent +am__v_lt_1 = +am_test_OBJECTS = test.$(OBJEXT) +test_OBJECTS = $(am_test_OBJECTS) +test_DEPENDENCIES = libgslcomplex.la ../err/libgslerr.la \ + ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la \ + ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la +AM_V_P = $(am__v_P_$(V)) +am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY)) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_$(V)) +am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_$(V)) +am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I. -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_$(V)) +am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_$(V)) +am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libgslcomplex_la_SOURCES) $(test_SOURCES) +DIST_SOURCES = $(libgslcomplex_la_SOURCES) $(test_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(pkgincludedir)" +HEADERS = $(pkginclude_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = .test +LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing aclocal-1.13 +AMTAR = $${TAR-tar} +AM_DEFAULT_VERBOSITY = 1 +AR = ar +AS = as +AUTOCONF = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing autoconf +AUTOHEADER = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing autoheader +AUTOMAKE = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing automake-1.13 +AWK = gawk +CC = gcc +CCDEPMODE = depmode=gcc3 +CFLAGS = -g -O2 +CPP = gcc -E +CPPFLAGS = +CYGPATH_W = echo +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +DLLTOOL = false +DSYMUTIL = +DUMPBIN = +ECHO_C = +ECHO_N = -n +ECHO_T = +EGREP = /usr/bin/grep -E +EXEEXT = +FGREP = /usr/bin/grep -F +GREP = /usr/bin/grep +GSLCBLAS_LDFLAGS = +GSL_CFLAGS = -I${prefix}/include +GSL_LDFLAGS = +GSL_LIBADD = +GSL_LIBM = -lm +GSL_LIBS = -L${exec_prefix}/lib -lgsl +GSL_LT_CBLAS_VERSION = 0:0:0 +GSL_LT_VERSION = 24:0:1 +GSL_MAJOR_VERSION = 2 +GSL_MINOR_VERSION = 5 +HAVE_AIX_IEEE_INTERFACE = +HAVE_DARWIN86_IEEE_INTERFACE = +HAVE_DARWIN_IEEE_INTERFACE = +HAVE_FREEBSD_IEEE_INTERFACE = +HAVE_GNUM68K_IEEE_INTERFACE = +HAVE_GNUPPC_IEEE_INTERFACE = +HAVE_GNUSPARC_IEEE_INTERFACE = +HAVE_GNUX86_IEEE_INTERFACE = +HAVE_HPUX11_IEEE_INTERFACE = +HAVE_HPUX_IEEE_INTERFACE = +HAVE_IRIX_IEEE_INTERFACE = +HAVE_NETBSD_IEEE_INTERFACE = +HAVE_OPENBSD_IEEE_INTERFACE = +HAVE_OS2EMX_IEEE_INTERFACE = +HAVE_SOLARIS_IEEE_INTERFACE = +HAVE_SUNOS4_IEEE_INTERFACE = +HAVE_TRU64_IEEE_INTERFACE = +INSTALL = /usr/bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = $(install_sh) -c -s +LD = /usr/bin/ld -m elf_x86_64 +LDFLAGS = +LIBM = -lm +LIBOBJS = +LIBS = -lm +LIBTOOL = $(SHELL) $(top_builddir)/libtool +LIPO = +LN_S = ln -s +LTLIBOBJS = +MAINT = # +MAKEINFO = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing makeinfo +MANIFEST_TOOL = : +MKDIR_P = /usr/bin/mkdir -p +NM = /usr/bin/nm -B +NMEDIT = +OBJDUMP = objdump +OBJEXT = o +OTOOL = +OTOOL64 = +PACKAGE = gsl +PACKAGE_BUGREPORT = +PACKAGE_NAME = gsl +PACKAGE_STRING = gsl 2.5 +PACKAGE_TARNAME = gsl +PACKAGE_URL = +PACKAGE_VERSION = 2.5 +PATH_SEPARATOR = : +RANLIB = ranlib +SED = /usr/bin/sed +SET_MAKE = +SHELL = /bin/sh +STRIP = strip +VERSION = 2.5 +abs_builddir = /home/groups/kipac/chto/package/gsl/gsl-2.5/complex +abs_srcdir = /home/groups/kipac/chto/package/gsl/gsl-2.5/complex +abs_top_builddir = /home/groups/kipac/chto/package/gsl/gsl-2.5 +abs_top_srcdir = /home/groups/kipac/chto/package/gsl/gsl-2.5 +ac_ct_AR = ar +ac_ct_CC = gcc +ac_ct_DUMPBIN = +am__include = include +am__leading_dot = . +am__quote = +am__tar = $${TAR-tar} chof - "$$tardir" +am__untar = $${TAR-tar} xf - +bindir = ${exec_prefix}/bin +build = x86_64-unknown-linux-gnu +build_alias = +build_cpu = x86_64 +build_os = linux-gnu +build_vendor = unknown +builddir = . +datadir = ${datarootdir} +datarootdir = ${prefix}/share +docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} +dvidir = ${docdir} +exec_prefix = ${prefix} +host = x86_64-unknown-linux-gnu +host_alias = +host_cpu = x86_64 +host_os = linux-gnu +host_vendor = unknown +htmldir = ${docdir} +includedir = ${prefix}/include +infodir = ${datarootdir}/info +install_sh = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/install-sh +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +localedir = ${datarootdir}/locale +localstatedir = ${prefix}/var +mandir = ${datarootdir}/man +mkdir_p = $(MKDIR_P) +oldincludedir = /usr/include +pdfdir = ${docdir} +prefix = /home/groups/kipac/chto/package/gsl/gsl_lib +program_transform_name = s,x,x, +psdir = ${docdir} +sbindir = ${exec_prefix}/sbin +sharedstatedir = ${prefix}/com +srcdir = . +sysconfdir = ${prefix}/etc +target_alias = +top_build_prefix = ../ +top_builddir = .. +top_srcdir = .. +noinst_LTLIBRARIES = libgslcomplex.la +pkginclude_HEADERS = gsl_complex.h gsl_complex_math.h +AM_CPPFLAGS = -I$(top_srcdir) +libgslcomplex_la_SOURCES = math.c inline.c +TESTS = $(check_PROGRAMS) +test_SOURCES = test.c results.h results1.h results2.h results_real.h results_zreal.h +test_LDADD = libgslcomplex.la ../err/libgslerr.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu complex/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu complex/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: # $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): # $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libgslcomplex.la: $(libgslcomplex_la_OBJECTS) $(libgslcomplex_la_DEPENDENCIES) $(EXTRA_libgslcomplex_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(libgslcomplex_la_OBJECTS) $(libgslcomplex_la_LIBADD) $(LIBS) + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) $(EXTRA_test_DEPENDENCIES) + @rm -f test$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_OBJECTS) $(test_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +include ./$(DEPDIR)/inline.Plo +include ./$(DEPDIR)/math.Plo +include ./$(DEPDIR)/test.Po + +.c.o: + $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# $(AM_V_CC)source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(COMPILE) -c $< + +.c.obj: + $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# $(AM_V_CC)source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: + $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +# $(AM_V_CC)source='$<' object='$@' libtool=yes \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-pkgincludeHEADERS: $(pkginclude_HEADERS) + @$(NORMAL_INSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \ + done + +uninstall-pkgincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + else \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_PROGRAMS) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +test.log: test$(EXEEXT) + @p='test$(EXEEXT)'; \ + b='test'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +#.test$(EXEEXT).log: +# @p='$<'; \ +# $(am__set_b); \ +# $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +# --log-file $$b.log --trs-file $$b.trs \ +# $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +# "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-am +all-am: Makefile $(LTLIBRARIES) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(pkgincludedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-pkgincludeHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-pkgincludeHEADERS + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES cscopelist-am ctags ctags-am distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-pkgincludeHEADERS \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + recheck tags tags-am uninstall uninstall-am \ + uninstall-pkgincludeHEADERS + + +results: + emacs -batch -l test.el -f test1 | sed 's/00\+e/0e/g' > results1.h + emacs -batch -l test.el -f test2 | sed 's/00\+e/0e/g' > results.h + emacs -batch -l test.el -f test3 | sed 's/00\+e/0e/g' > results_real.h + emacs -batch -l test.el -f test4 | sed 's/00\+e/0e/g' > results2.h + emacs -batch -l test.el -f test5 | sed 's/00\+e/0e/g' > results_zreal.h + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gsl-2.5/complex/Makefile.am b/gsl-2.5/complex/Makefile.am new file mode 100644 index 00000000..198f5759 --- /dev/null +++ b/gsl-2.5/complex/Makefile.am @@ -0,0 +1,20 @@ +noinst_LTLIBRARIES = libgslcomplex.la + +pkginclude_HEADERS = gsl_complex.h gsl_complex_math.h + +AM_CPPFLAGS = -I$(top_srcdir) + +libgslcomplex_la_SOURCES = math.c inline.c + +TESTS = $(check_PROGRAMS) +check_PROGRAMS = test + +test_SOURCES = test.c results.h results1.h results2.h results_real.h results_zreal.h +test_LDADD = libgslcomplex.la ../err/libgslerr.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la + +results: + emacs -batch -l test.el -f test1 | sed 's/00\+e/0e/g' > results1.h + emacs -batch -l test.el -f test2 | sed 's/00\+e/0e/g' > results.h + emacs -batch -l test.el -f test3 | sed 's/00\+e/0e/g' > results_real.h + emacs -batch -l test.el -f test4 | sed 's/00\+e/0e/g' > results2.h + emacs -batch -l test.el -f test5 | sed 's/00\+e/0e/g' > results_zreal.h diff --git a/gsl-2.5/complex/Makefile.in b/gsl-2.5/complex/Makefile.in new file mode 100644 index 00000000..8a155397 --- /dev/null +++ b/gsl-2.5/complex/Makefile.in @@ -0,0 +1,1032 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + + +VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +check_PROGRAMS = test$(EXEEXT) +subdir = complex +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp \ + $(pkginclude_HEADERS) $(top_srcdir)/test-driver ChangeLog TODO +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +libgslcomplex_la_LIBADD = +am_libgslcomplex_la_OBJECTS = math.lo inline.lo +libgslcomplex_la_OBJECTS = $(am_libgslcomplex_la_OBJECTS) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +am_test_OBJECTS = test.$(OBJEXT) +test_OBJECTS = $(am_test_OBJECTS) +test_DEPENDENCIES = libgslcomplex.la ../err/libgslerr.la \ + ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la \ + ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libgslcomplex_la_SOURCES) $(test_SOURCES) +DIST_SOURCES = $(libgslcomplex_la_SOURCES) $(test_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(pkgincludedir)" +HEADERS = $(pkginclude_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = @EXEEXT@ .test +LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +GSLCBLAS_LDFLAGS = @GSLCBLAS_LDFLAGS@ +GSL_CFLAGS = @GSL_CFLAGS@ +GSL_LDFLAGS = @GSL_LDFLAGS@ +GSL_LIBADD = @GSL_LIBADD@ +GSL_LIBM = @GSL_LIBM@ +GSL_LIBS = @GSL_LIBS@ +GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ +GSL_LT_VERSION = @GSL_LT_VERSION@ +GSL_MAJOR_VERSION = @GSL_MAJOR_VERSION@ +GSL_MINOR_VERSION = @GSL_MINOR_VERSION@ +HAVE_AIX_IEEE_INTERFACE = @HAVE_AIX_IEEE_INTERFACE@ +HAVE_DARWIN86_IEEE_INTERFACE = @HAVE_DARWIN86_IEEE_INTERFACE@ +HAVE_DARWIN_IEEE_INTERFACE = @HAVE_DARWIN_IEEE_INTERFACE@ +HAVE_FREEBSD_IEEE_INTERFACE = @HAVE_FREEBSD_IEEE_INTERFACE@ +HAVE_GNUM68K_IEEE_INTERFACE = @HAVE_GNUM68K_IEEE_INTERFACE@ +HAVE_GNUPPC_IEEE_INTERFACE = @HAVE_GNUPPC_IEEE_INTERFACE@ +HAVE_GNUSPARC_IEEE_INTERFACE = @HAVE_GNUSPARC_IEEE_INTERFACE@ +HAVE_GNUX86_IEEE_INTERFACE = @HAVE_GNUX86_IEEE_INTERFACE@ +HAVE_HPUX11_IEEE_INTERFACE = @HAVE_HPUX11_IEEE_INTERFACE@ +HAVE_HPUX_IEEE_INTERFACE = @HAVE_HPUX_IEEE_INTERFACE@ +HAVE_IRIX_IEEE_INTERFACE = @HAVE_IRIX_IEEE_INTERFACE@ +HAVE_NETBSD_IEEE_INTERFACE = @HAVE_NETBSD_IEEE_INTERFACE@ +HAVE_OPENBSD_IEEE_INTERFACE = @HAVE_OPENBSD_IEEE_INTERFACE@ +HAVE_OS2EMX_IEEE_INTERFACE = @HAVE_OS2EMX_IEEE_INTERFACE@ +HAVE_SOLARIS_IEEE_INTERFACE = @HAVE_SOLARIS_IEEE_INTERFACE@ +HAVE_SUNOS4_IEEE_INTERFACE = @HAVE_SUNOS4_IEEE_INTERFACE@ +HAVE_TRU64_IEEE_INTERFACE = @HAVE_TRU64_IEEE_INTERFACE@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBM = @LIBM@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +noinst_LTLIBRARIES = libgslcomplex.la +pkginclude_HEADERS = gsl_complex.h gsl_complex_math.h +AM_CPPFLAGS = -I$(top_srcdir) +libgslcomplex_la_SOURCES = math.c inline.c +TESTS = $(check_PROGRAMS) +test_SOURCES = test.c results.h results1.h results2.h results_real.h results_zreal.h +test_LDADD = libgslcomplex.la ../err/libgslerr.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu complex/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu complex/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libgslcomplex.la: $(libgslcomplex_la_OBJECTS) $(libgslcomplex_la_DEPENDENCIES) $(EXTRA_libgslcomplex_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(libgslcomplex_la_OBJECTS) $(libgslcomplex_la_LIBADD) $(LIBS) + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) $(EXTRA_test_DEPENDENCIES) + @rm -f test$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_OBJECTS) $(test_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/inline.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/math.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test.Po@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-pkgincludeHEADERS: $(pkginclude_HEADERS) + @$(NORMAL_INSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \ + done + +uninstall-pkgincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + else \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_PROGRAMS) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +test.log: test$(EXEEXT) + @p='test$(EXEEXT)'; \ + b='test'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +@am__EXEEXT_TRUE@.test$(EXEEXT).log: +@am__EXEEXT_TRUE@ @p='$<'; \ +@am__EXEEXT_TRUE@ $(am__set_b); \ +@am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +@am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ +@am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +@am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-am +all-am: Makefile $(LTLIBRARIES) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(pkgincludedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-pkgincludeHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-pkgincludeHEADERS + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES cscopelist-am ctags ctags-am distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-pkgincludeHEADERS \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + recheck tags tags-am uninstall uninstall-am \ + uninstall-pkgincludeHEADERS + + +results: + emacs -batch -l test.el -f test1 | sed 's/00\+e/0e/g' > results1.h + emacs -batch -l test.el -f test2 | sed 's/00\+e/0e/g' > results.h + emacs -batch -l test.el -f test3 | sed 's/00\+e/0e/g' > results_real.h + emacs -batch -l test.el -f test4 | sed 's/00\+e/0e/g' > results2.h + emacs -batch -l test.el -f test5 | sed 's/00\+e/0e/g' > results_zreal.h + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gsl-2.5/complex/TODO b/gsl-2.5/complex/TODO new file mode 100644 index 00000000..d02b777f --- /dev/null +++ b/gsl-2.5/complex/TODO @@ -0,0 +1,21 @@ +# -*- org -*- +#+CATEGORY: complex + +* Complex polynomial solvers (Got Newton-Mueller from +jotahtin@cc.hut.fi, still to add (BJG)). + +* The asymptotic behavior of the secondary functions (sec, csc, cot, +etc) can overflow because of expressions like cosh(x) / D , where D = +cosh^2 which is computed prior to the division. This should by +special casing "small" vs "large" arguments as has been done for the +sin,cos,tan versions. + +* Perhaps there is something useful in LCY65 L. A. Lyusternik, +O. A. Chervonenkis, and A. R. Yanpol'skii, Handbook for computing +elementary functions, International Series of Monographs in Pure and +Applied Mathematics, vol. 76, Pergamon Press, Oxford, 1965. + +* Comparing the Complex Arithmetic routines in Section 5.5 of Numerical Recipes +gsl_complex_div() uses simple complex division while 5.5.5 has a more +sophisticated one that avoids underflow/overflow. + diff --git a/gsl-2.5/complex/gsl_complex.h b/gsl-2.5/complex/gsl_complex.h new file mode 100644 index 00000000..e77b7706 --- /dev/null +++ b/gsl-2.5/complex/gsl_complex.h @@ -0,0 +1,103 @@ +/* complex/gsl_complex.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_COMPLEX_H__ +#define __GSL_COMPLEX_H__ + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + + +/* two consecutive built-in types as a complex number */ +typedef double * gsl_complex_packed ; +typedef float * gsl_complex_packed_float ; +typedef long double * gsl_complex_packed_long_double ; + +typedef const double * gsl_const_complex_packed ; +typedef const float * gsl_const_complex_packed_float ; +typedef const long double * gsl_const_complex_packed_long_double ; + + +/* 2N consecutive built-in types as N complex numbers */ +typedef double * gsl_complex_packed_array ; +typedef float * gsl_complex_packed_array_float ; +typedef long double * gsl_complex_packed_array_long_double ; + +typedef const double * gsl_const_complex_packed_array ; +typedef const float * gsl_const_complex_packed_array_float ; +typedef const long double * gsl_const_complex_packed_array_long_double ; + + +/* Yes... this seems weird. Trust us. The point is just that + sometimes you want to make it obvious that something is + an output value. The fact that it lacks a 'const' may not + be enough of a clue for people in some contexts. + */ +typedef double * gsl_complex_packed_ptr ; +typedef float * gsl_complex_packed_float_ptr ; +typedef long double * gsl_complex_packed_long_double_ptr ; + +typedef const double * gsl_const_complex_packed_ptr ; +typedef const float * gsl_const_complex_packed_float_ptr ; +typedef const long double * gsl_const_complex_packed_long_double_ptr ; + + +typedef struct + { + long double dat[2]; + } +gsl_complex_long_double; + +typedef struct + { + double dat[2]; + } +gsl_complex; + +typedef struct + { + float dat[2]; + } +gsl_complex_float; + +#define GSL_REAL(z) ((z).dat[0]) +#define GSL_IMAG(z) ((z).dat[1]) +#define GSL_COMPLEX_P(zp) ((zp)->dat) +#define GSL_COMPLEX_P_REAL(zp) ((zp)->dat[0]) +#define GSL_COMPLEX_P_IMAG(zp) ((zp)->dat[1]) +#define GSL_COMPLEX_EQ(z1,z2) (((z1).dat[0] == (z2).dat[0]) && ((z1).dat[1] == (z2).dat[1])) + +#define GSL_SET_COMPLEX(zp,x,y) do {(zp)->dat[0]=(x); (zp)->dat[1]=(y);} while(0) +#define GSL_SET_REAL(zp,x) do {(zp)->dat[0]=(x);} while(0) +#define GSL_SET_IMAG(zp,y) do {(zp)->dat[1]=(y);} while(0) + +#define GSL_SET_COMPLEX_PACKED(zp,n,x,y) do {*((zp)+2*(n))=(x); *((zp)+(2*(n)+1))=(y);} while(0) + +__END_DECLS + +#endif /* __GSL_COMPLEX_H__ */ diff --git a/gsl-2.5/complex/gsl_complex_math.h b/gsl-2.5/complex/gsl_complex_math.h new file mode 100644 index 00000000..ad8d076a --- /dev/null +++ b/gsl-2.5/complex/gsl_complex_math.h @@ -0,0 +1,142 @@ +/* complex/gsl_complex_math.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2004, 2007 Jorma Olavi Thtinen, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_COMPLEX_MATH_H__ +#define __GSL_COMPLEX_MATH_H__ +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +#define __BEGIN_DECLS extern "C" { +#define __END_DECLS } +#else +#define __BEGIN_DECLS /* empty */ +#define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +/* Complex numbers */ + +gsl_complex gsl_complex_polar (double r, double theta); /* r= r e^(i theta) */ + +INLINE_DECL gsl_complex gsl_complex_rect (double x, double y); /* r= real+i*imag */ + +#ifdef HAVE_INLINE +INLINE_FUN gsl_complex +gsl_complex_rect (double x, double y) +{ /* return z = x + i y */ + gsl_complex z; + GSL_SET_COMPLEX (&z, x, y); + return z; +} +#endif + +#define GSL_COMPLEX_ONE (gsl_complex_rect(1.0,0.0)) +#define GSL_COMPLEX_ZERO (gsl_complex_rect(0.0,0.0)) +#define GSL_COMPLEX_NEGONE (gsl_complex_rect(-1.0,0.0)) + +/* Properties of complex numbers */ + +double gsl_complex_arg (gsl_complex z); /* return arg(z), -pi< arg(z) <=+pi */ +double gsl_complex_abs (gsl_complex z); /* return |z| */ +double gsl_complex_abs2 (gsl_complex z); /* return |z|^2 */ +double gsl_complex_logabs (gsl_complex z); /* return log|z| */ + +/* Complex arithmetic operators */ + +gsl_complex gsl_complex_add (gsl_complex a, gsl_complex b); /* r=a+b */ +gsl_complex gsl_complex_sub (gsl_complex a, gsl_complex b); /* r=a-b */ +gsl_complex gsl_complex_mul (gsl_complex a, gsl_complex b); /* r=a*b */ +gsl_complex gsl_complex_div (gsl_complex a, gsl_complex b); /* r=a/b */ + +gsl_complex gsl_complex_add_real (gsl_complex a, double x); /* r=a+x */ +gsl_complex gsl_complex_sub_real (gsl_complex a, double x); /* r=a-x */ +gsl_complex gsl_complex_mul_real (gsl_complex a, double x); /* r=a*x */ +gsl_complex gsl_complex_div_real (gsl_complex a, double x); /* r=a/x */ + +gsl_complex gsl_complex_add_imag (gsl_complex a, double y); /* r=a+iy */ +gsl_complex gsl_complex_sub_imag (gsl_complex a, double y); /* r=a-iy */ +gsl_complex gsl_complex_mul_imag (gsl_complex a, double y); /* r=a*iy */ +gsl_complex gsl_complex_div_imag (gsl_complex a, double y); /* r=a/iy */ + +gsl_complex gsl_complex_conjugate (gsl_complex z); /* r=conj(z) */ +gsl_complex gsl_complex_inverse (gsl_complex a); /* r=1/a */ +gsl_complex gsl_complex_negative (gsl_complex a); /* r=-a */ + +/* Elementary Complex Functions */ + +gsl_complex gsl_complex_sqrt (gsl_complex z); /* r=sqrt(z) */ +gsl_complex gsl_complex_sqrt_real (double x); /* r=sqrt(x) (x<0 ok) */ + +gsl_complex gsl_complex_pow (gsl_complex a, gsl_complex b); /* r=a^b */ +gsl_complex gsl_complex_pow_real (gsl_complex a, double b); /* r=a^b */ + +gsl_complex gsl_complex_exp (gsl_complex a); /* r=exp(a) */ +gsl_complex gsl_complex_log (gsl_complex a); /* r=log(a) (base e) */ +gsl_complex gsl_complex_log10 (gsl_complex a); /* r=log10(a) (base 10) */ +gsl_complex gsl_complex_log_b (gsl_complex a, gsl_complex b); /* r=log_b(a) (base=b) */ + +/* Complex Trigonometric Functions */ + +gsl_complex gsl_complex_sin (gsl_complex a); /* r=sin(a) */ +gsl_complex gsl_complex_cos (gsl_complex a); /* r=cos(a) */ +gsl_complex gsl_complex_sec (gsl_complex a); /* r=sec(a) */ +gsl_complex gsl_complex_csc (gsl_complex a); /* r=csc(a) */ +gsl_complex gsl_complex_tan (gsl_complex a); /* r=tan(a) */ +gsl_complex gsl_complex_cot (gsl_complex a); /* r=cot(a) */ + +/* Inverse Complex Trigonometric Functions */ + +gsl_complex gsl_complex_arcsin (gsl_complex a); /* r=arcsin(a) */ +gsl_complex gsl_complex_arcsin_real (double a); /* r=arcsin(a) */ +gsl_complex gsl_complex_arccos (gsl_complex a); /* r=arccos(a) */ +gsl_complex gsl_complex_arccos_real (double a); /* r=arccos(a) */ +gsl_complex gsl_complex_arcsec (gsl_complex a); /* r=arcsec(a) */ +gsl_complex gsl_complex_arcsec_real (double a); /* r=arcsec(a) */ +gsl_complex gsl_complex_arccsc (gsl_complex a); /* r=arccsc(a) */ +gsl_complex gsl_complex_arccsc_real (double a); /* r=arccsc(a) */ +gsl_complex gsl_complex_arctan (gsl_complex a); /* r=arctan(a) */ +gsl_complex gsl_complex_arccot (gsl_complex a); /* r=arccot(a) */ + +/* Complex Hyperbolic Functions */ + +gsl_complex gsl_complex_sinh (gsl_complex a); /* r=sinh(a) */ +gsl_complex gsl_complex_cosh (gsl_complex a); /* r=coshh(a) */ +gsl_complex gsl_complex_sech (gsl_complex a); /* r=sech(a) */ +gsl_complex gsl_complex_csch (gsl_complex a); /* r=csch(a) */ +gsl_complex gsl_complex_tanh (gsl_complex a); /* r=tanh(a) */ +gsl_complex gsl_complex_coth (gsl_complex a); /* r=coth(a) */ + +/* Inverse Complex Hyperbolic Functions */ + +gsl_complex gsl_complex_arcsinh (gsl_complex a); /* r=arcsinh(a) */ +gsl_complex gsl_complex_arccosh (gsl_complex a); /* r=arccosh(a) */ +gsl_complex gsl_complex_arccosh_real (double a); /* r=arccosh(a) */ +gsl_complex gsl_complex_arcsech (gsl_complex a); /* r=arcsech(a) */ +gsl_complex gsl_complex_arccsch (gsl_complex a); /* r=arccsch(a) */ +gsl_complex gsl_complex_arctanh (gsl_complex a); /* r=arctanh(a) */ +gsl_complex gsl_complex_arctanh_real (double a); /* r=arctanh(a) */ +gsl_complex gsl_complex_arccoth (gsl_complex a); /* r=arccoth(a) */ + +__END_DECLS + +#endif /* __GSL_COMPLEX_MATH_H__ */ diff --git a/gsl-2.5/complex/inline.c b/gsl-2.5/complex/inline.c new file mode 100644 index 00000000..9490ece2 --- /dev/null +++ b/gsl-2.5/complex/inline.c @@ -0,0 +1,24 @@ +/* complex/inline.c + * + * Copyright (C) 2008 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Compile all the inline functions */ + +#define COMPILE_INLINE_STATIC +#include "build.h" +#include diff --git a/gsl-2.5/complex/inline.lo b/gsl-2.5/complex/inline.lo new file mode 100644 index 00000000..c5763370 --- /dev/null +++ b/gsl-2.5/complex/inline.lo @@ -0,0 +1,12 @@ +# inline.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/inline.o' + +# Name of the non-PIC object +non_pic_object='inline.o' + diff --git a/gsl-2.5/complex/libgslcomplex.la b/gsl-2.5/complex/libgslcomplex.la new file mode 100644 index 00000000..cd82a441 --- /dev/null +++ b/gsl-2.5/complex/libgslcomplex.la @@ -0,0 +1,41 @@ +# libgslcomplex.la - a libtool library file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='' + +# Names of this library. +library_names='' + +# The name of the static archive. +old_library='libgslcomplex.a' + +# Linker flags that can not go in dependency_libs. +inherited_linker_flags='' + +# Libraries that this one depends upon. +dependency_libs=' -lm' + +# Names of additional weak libraries provided by this library +weak_library_names='' + +# Version information for libgslcomplex. +current= +age= +revision= + +# Is this an already installed library? +installed=no + +# Should we warn about portability when linking against -modules? +shouldnotlink=no + +# Files to dlopen/dlpreopen +dlopen='' +dlpreopen='' + +# Directory that this library needs to be installed in: +libdir='' diff --git a/gsl-2.5/complex/math.c b/gsl-2.5/complex/math.c new file mode 100644 index 00000000..1a257262 --- /dev/null +++ b/gsl-2.5/complex/math.c @@ -0,0 +1,1015 @@ +/* complex/math.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Jorma Olavi T�htinen, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Basic complex arithmetic functions + + * Original version by Jorma Olavi T�htinen + * + * Modified for GSL by Brian Gough, 3/2000 + */ + +/* The following references describe the methods used in these + * functions, + * + * T. E. Hull and Thomas F. Fairgrieve and Ping Tak Peter Tang, + * "Implementing Complex Elementary Functions Using Exception + * Handling", ACM Transactions on Mathematical Software, Volume 20 + * (1994), pp 215-244, Corrigenda, p553 + * + * Hull et al, "Implementing the complex arcsin and arccosine + * functions using exception handling", ACM Transactions on + * Mathematical Software, Volume 23 (1997) pp 299-335 + * + * Abramowitz and Stegun, Handbook of Mathematical Functions, "Inverse + * Circular Functions in Terms of Real and Imaginary Parts", Formulas + * 4.4.37, 4.4.38, 4.4.39 + */ + +#include +#include +#include +#include +#include + +/********************************************************************** + * Complex numbers + **********************************************************************/ + +gsl_complex +gsl_complex_polar (double r, double theta) +{ /* return z = r exp(i theta) */ + gsl_complex z; + GSL_SET_COMPLEX (&z, r * cos (theta), r * sin (theta)); + return z; +} + +/********************************************************************** + * Properties of complex numbers + **********************************************************************/ + +double +gsl_complex_arg (gsl_complex z) +{ /* return arg(z), -pi < arg(z) <= +pi */ + double x = GSL_REAL (z); + double y = GSL_IMAG (z); + + if (x == 0.0 && y == 0.0) + { + return 0; + } + + return atan2 (y, x); +} + +double +gsl_complex_abs (gsl_complex z) +{ /* return |z| */ + return hypot (GSL_REAL (z), GSL_IMAG (z)); +} + +double +gsl_complex_abs2 (gsl_complex z) +{ /* return |z|^2 */ + double x = GSL_REAL (z); + double y = GSL_IMAG (z); + + return (x * x + y * y); +} + +double +gsl_complex_logabs (gsl_complex z) +{ /* return log|z| */ + double xabs = fabs (GSL_REAL (z)); + double yabs = fabs (GSL_IMAG (z)); + double max, u; + + if (xabs >= yabs) + { + max = xabs; + u = yabs / xabs; + } + else + { + max = yabs; + u = xabs / yabs; + } + + /* Handle underflow when u is close to 0 */ + + return log (max) + 0.5 * log1p (u * u); +} + + +/*********************************************************************** + * Complex arithmetic operators + ***********************************************************************/ + +gsl_complex +gsl_complex_add (gsl_complex a, gsl_complex b) +{ /* z=a+b */ + double ar = GSL_REAL (a), ai = GSL_IMAG (a); + double br = GSL_REAL (b), bi = GSL_IMAG (b); + + gsl_complex z; + GSL_SET_COMPLEX (&z, ar + br, ai + bi); + return z; +} + +gsl_complex +gsl_complex_add_real (gsl_complex a, double x) +{ /* z=a+x */ + gsl_complex z; + GSL_SET_COMPLEX (&z, GSL_REAL (a) + x, GSL_IMAG (a)); + return z; +} + +gsl_complex +gsl_complex_add_imag (gsl_complex a, double y) +{ /* z=a+iy */ + gsl_complex z; + GSL_SET_COMPLEX (&z, GSL_REAL (a), GSL_IMAG (a) + y); + return z; +} + + +gsl_complex +gsl_complex_sub (gsl_complex a, gsl_complex b) +{ /* z=a-b */ + double ar = GSL_REAL (a), ai = GSL_IMAG (a); + double br = GSL_REAL (b), bi = GSL_IMAG (b); + + gsl_complex z; + GSL_SET_COMPLEX (&z, ar - br, ai - bi); + return z; +} + +gsl_complex +gsl_complex_sub_real (gsl_complex a, double x) +{ /* z=a-x */ + gsl_complex z; + GSL_SET_COMPLEX (&z, GSL_REAL (a) - x, GSL_IMAG (a)); + return z; +} + +gsl_complex +gsl_complex_sub_imag (gsl_complex a, double y) +{ /* z=a-iy */ + gsl_complex z; + GSL_SET_COMPLEX (&z, GSL_REAL (a), GSL_IMAG (a) - y); + return z; +} + +gsl_complex +gsl_complex_mul (gsl_complex a, gsl_complex b) +{ /* z=a*b */ + double ar = GSL_REAL (a), ai = GSL_IMAG (a); + double br = GSL_REAL (b), bi = GSL_IMAG (b); + + gsl_complex z; + GSL_SET_COMPLEX (&z, ar * br - ai * bi, ar * bi + ai * br); + return z; +} + +gsl_complex +gsl_complex_mul_real (gsl_complex a, double x) +{ /* z=a*x */ + gsl_complex z; + GSL_SET_COMPLEX (&z, x * GSL_REAL (a), x * GSL_IMAG (a)); + return z; +} + +gsl_complex +gsl_complex_mul_imag (gsl_complex a, double y) +{ /* z=a*iy */ + gsl_complex z; + GSL_SET_COMPLEX (&z, -y * GSL_IMAG (a), y * GSL_REAL (a)); + return z; +} + +gsl_complex +gsl_complex_div (gsl_complex a, gsl_complex b) +{ /* z=a/b */ + double ar = GSL_REAL (a), ai = GSL_IMAG (a); + double br = GSL_REAL (b), bi = GSL_IMAG (b); + + double s = 1.0 / gsl_complex_abs (b); + + double sbr = s * br; + double sbi = s * bi; + + double zr = (ar * sbr + ai * sbi) * s; + double zi = (ai * sbr - ar * sbi) * s; + + gsl_complex z; + GSL_SET_COMPLEX (&z, zr, zi); + return z; +} + +gsl_complex +gsl_complex_div_real (gsl_complex a, double x) +{ /* z=a/x */ + gsl_complex z; + GSL_SET_COMPLEX (&z, GSL_REAL (a) / x, GSL_IMAG (a) / x); + return z; +} + +gsl_complex +gsl_complex_div_imag (gsl_complex a, double y) +{ /* z=a/(iy) */ + gsl_complex z; + GSL_SET_COMPLEX (&z, GSL_IMAG (a) / y, - GSL_REAL (a) / y); + return z; +} + +gsl_complex +gsl_complex_conjugate (gsl_complex a) +{ /* z=conj(a) */ + gsl_complex z; + GSL_SET_COMPLEX (&z, GSL_REAL (a), -GSL_IMAG (a)); + return z; +} + +gsl_complex +gsl_complex_negative (gsl_complex a) +{ /* z=-a */ + gsl_complex z; + GSL_SET_COMPLEX (&z, -GSL_REAL (a), -GSL_IMAG (a)); + return z; +} + +gsl_complex +gsl_complex_inverse (gsl_complex a) +{ /* z=1/a */ + double s = 1.0 / gsl_complex_abs (a); + + gsl_complex z; + GSL_SET_COMPLEX (&z, (GSL_REAL (a) * s) * s, -(GSL_IMAG (a) * s) * s); + return z; +} + +/********************************************************************** + * Elementary complex functions + **********************************************************************/ + +gsl_complex +gsl_complex_sqrt (gsl_complex a) +{ /* z=sqrt(a) */ + gsl_complex z; + + if (GSL_REAL (a) == 0.0 && GSL_IMAG (a) == 0.0) + { + GSL_SET_COMPLEX (&z, 0, 0); + } + else + { + double x = fabs (GSL_REAL (a)); + double y = fabs (GSL_IMAG (a)); + double w; + + if (x >= y) + { + double t = y / x; + w = sqrt (x) * sqrt (0.5 * (1.0 + sqrt (1.0 + t * t))); + } + else + { + double t = x / y; + w = sqrt (y) * sqrt (0.5 * (t + sqrt (1.0 + t * t))); + } + + if (GSL_REAL (a) >= 0.0) + { + double ai = GSL_IMAG (a); + GSL_SET_COMPLEX (&z, w, ai / (2.0 * w)); + } + else + { + double ai = GSL_IMAG (a); + double vi = (ai >= 0) ? w : -w; + GSL_SET_COMPLEX (&z, ai / (2.0 * vi), vi); + } + } + + return z; +} + +gsl_complex +gsl_complex_sqrt_real (double x) +{ /* z=sqrt(x) */ + gsl_complex z; + + if (x >= 0) + { + GSL_SET_COMPLEX (&z, sqrt (x), 0.0); + } + else + { + GSL_SET_COMPLEX (&z, 0.0, sqrt (-x)); + } + + return z; +} + +gsl_complex +gsl_complex_exp (gsl_complex a) +{ /* z=exp(a) */ + double rho = exp (GSL_REAL (a)); + double theta = GSL_IMAG (a); + + gsl_complex z; + GSL_SET_COMPLEX (&z, rho * cos (theta), rho * sin (theta)); + return z; +} + +gsl_complex +gsl_complex_pow (gsl_complex a, gsl_complex b) +{ /* z=a^b */ + gsl_complex z; + + if (GSL_REAL (a) == 0 && GSL_IMAG (a) == 0.0) + { + if (GSL_REAL (b) == 0 && GSL_IMAG (b) == 0.0) + { + GSL_SET_COMPLEX (&z, 1.0, 0.0); + } + else + { + GSL_SET_COMPLEX (&z, 0.0, 0.0); + } + } + else if (GSL_REAL (b) == 1.0 && GSL_IMAG (b) == 0.0) + { + return a; + } + else if (GSL_REAL (b) == -1.0 && GSL_IMAG (b) == 0.0) + { + return gsl_complex_inverse (a); + } + else + { + double logr = gsl_complex_logabs (a); + double theta = gsl_complex_arg (a); + + double br = GSL_REAL (b), bi = GSL_IMAG (b); + + double rho = exp (logr * br - bi * theta); + double beta = theta * br + bi * logr; + + GSL_SET_COMPLEX (&z, rho * cos (beta), rho * sin (beta)); + } + + return z; +} + +gsl_complex +gsl_complex_pow_real (gsl_complex a, double b) +{ /* z=a^b */ + gsl_complex z; + + if (GSL_REAL (a) == 0 && GSL_IMAG (a) == 0) + { + if (b == 0) + { + GSL_SET_COMPLEX (&z, 1, 0); + } + else + { + GSL_SET_COMPLEX (&z, 0, 0); + } + } + else + { + double logr = gsl_complex_logabs (a); + double theta = gsl_complex_arg (a); + double rho = exp (logr * b); + double beta = theta * b; + GSL_SET_COMPLEX (&z, rho * cos (beta), rho * sin (beta)); + } + + return z; +} + +gsl_complex +gsl_complex_log (gsl_complex a) +{ /* z=log(a) */ + double logr = gsl_complex_logabs (a); + double theta = gsl_complex_arg (a); + + gsl_complex z; + GSL_SET_COMPLEX (&z, logr, theta); + return z; +} + +gsl_complex +gsl_complex_log10 (gsl_complex a) +{ /* z = log10(a) */ + return gsl_complex_mul_real (gsl_complex_log (a), 1 / log (10.)); +} + +gsl_complex +gsl_complex_log_b (gsl_complex a, gsl_complex b) +{ + return gsl_complex_div (gsl_complex_log (a), gsl_complex_log (b)); +} + +/*********************************************************************** + * Complex trigonometric functions + ***********************************************************************/ + +gsl_complex +gsl_complex_sin (gsl_complex a) +{ /* z = sin(a) */ + double R = GSL_REAL (a), I = GSL_IMAG (a); + + gsl_complex z; + + if (I == 0.0) + { + /* avoid returing negative zero (-0.0) for the imaginary part */ + + GSL_SET_COMPLEX (&z, sin (R), 0.0); + } + else + { + GSL_SET_COMPLEX (&z, sin (R) * cosh (I), cos (R) * sinh (I)); + } + + return z; +} + +gsl_complex +gsl_complex_cos (gsl_complex a) +{ /* z = cos(a) */ + double R = GSL_REAL (a), I = GSL_IMAG (a); + + gsl_complex z; + + if (I == 0.0) + { + /* avoid returing negative zero (-0.0) for the imaginary part */ + + GSL_SET_COMPLEX (&z, cos (R), 0.0); + } + else + { + GSL_SET_COMPLEX (&z, cos (R) * cosh (I), sin (R) * sinh (-I)); + } + + return z; +} + +gsl_complex +gsl_complex_tan (gsl_complex a) +{ /* z = tan(a) */ + double R = GSL_REAL (a), I = GSL_IMAG (a); + + gsl_complex z; + + if (fabs (I) < 1) + { + double D = pow (cos (R), 2.0) + pow (sinh (I), 2.0); + + GSL_SET_COMPLEX (&z, 0.5 * sin (2 * R) / D, 0.5 * sinh (2 * I) / D); + } + else + { + double D = pow (cos (R), 2.0) + pow (sinh (I), 2.0); + double F = 1 + pow(cos (R)/sinh (I), 2.0); + + GSL_SET_COMPLEX (&z, 0.5 * sin (2 * R) / D, 1 / (tanh (I) * F)); + } + + return z; +} + +gsl_complex +gsl_complex_sec (gsl_complex a) +{ /* z = sec(a) */ + gsl_complex z = gsl_complex_cos (a); + return gsl_complex_inverse (z); +} + +gsl_complex +gsl_complex_csc (gsl_complex a) +{ /* z = csc(a) */ + gsl_complex z = gsl_complex_sin (a); + return gsl_complex_inverse(z); +} + + +gsl_complex +gsl_complex_cot (gsl_complex a) +{ /* z = cot(a) */ + gsl_complex z = gsl_complex_tan (a); + return gsl_complex_inverse (z); +} + +/********************************************************************** + * Inverse Complex Trigonometric Functions + **********************************************************************/ + +gsl_complex +gsl_complex_arcsin (gsl_complex a) +{ /* z = arcsin(a) */ + double R = GSL_REAL (a), I = GSL_IMAG (a); + gsl_complex z; + + if (I == 0) + { + z = gsl_complex_arcsin_real (R); + } + else + { + double x = fabs (R), y = fabs (I); + double r = hypot (x + 1, y), s = hypot (x - 1, y); + double A = 0.5 * (r + s); + double B = x / A; + double y2 = y * y; + + double real, imag; + + const double A_crossover = 1.5, B_crossover = 0.6417; + + if (B <= B_crossover) + { + real = asin (B); + } + else + { + if (x <= 1) + { + double D = 0.5 * (A + x) * (y2 / (r + x + 1) + (s + (1 - x))); + real = atan (x / sqrt (D)); + } + else + { + double Apx = A + x; + double D = 0.5 * (Apx / (r + x + 1) + Apx / (s + (x - 1))); + real = atan (x / (y * sqrt (D))); + } + } + + if (A <= A_crossover) + { + double Am1; + + if (x < 1) + { + Am1 = 0.5 * (y2 / (r + (x + 1)) + y2 / (s + (1 - x))); + } + else + { + Am1 = 0.5 * (y2 / (r + (x + 1)) + (s + (x - 1))); + } + + imag = log1p (Am1 + sqrt (Am1 * (A + 1))); + } + else + { + imag = log (A + sqrt (A * A - 1)); + } + + GSL_SET_COMPLEX (&z, (R >= 0) ? real : -real, (I >= 0) ? imag : -imag); + } + + return z; +} + +gsl_complex +gsl_complex_arcsin_real (double a) +{ /* z = arcsin(a) */ + gsl_complex z; + + if (fabs (a) <= 1.0) + { + GSL_SET_COMPLEX (&z, asin (a), 0.0); + } + else + { + if (a < 0.0) + { + GSL_SET_COMPLEX (&z, -M_PI_2, acosh (-a)); + } + else + { + GSL_SET_COMPLEX (&z, M_PI_2, -acosh (a)); + } + } + + return z; +} + +gsl_complex +gsl_complex_arccos (gsl_complex a) +{ /* z = arccos(a) */ + double R = GSL_REAL (a), I = GSL_IMAG (a); + gsl_complex z; + + if (I == 0) + { + z = gsl_complex_arccos_real (R); + } + else + { + double x = fabs (R), y = fabs (I); + double r = hypot (x + 1, y), s = hypot (x - 1, y); + double A = 0.5 * (r + s); + double B = x / A; + double y2 = y * y; + + double real, imag; + + const double A_crossover = 1.5, B_crossover = 0.6417; + + if (B <= B_crossover) + { + real = acos (B); + } + else + { + if (x <= 1) + { + double D = 0.5 * (A + x) * (y2 / (r + x + 1) + (s + (1 - x))); + real = atan (sqrt (D) / x); + } + else + { + double Apx = A + x; + double D = 0.5 * (Apx / (r + x + 1) + Apx / (s + (x - 1))); + real = atan ((y * sqrt (D)) / x); + } + } + + if (A <= A_crossover) + { + double Am1; + + if (x < 1) + { + Am1 = 0.5 * (y2 / (r + (x + 1)) + y2 / (s + (1 - x))); + } + else + { + Am1 = 0.5 * (y2 / (r + (x + 1)) + (s + (x - 1))); + } + + imag = log1p (Am1 + sqrt (Am1 * (A + 1))); + } + else + { + imag = log (A + sqrt (A * A - 1)); + } + + GSL_SET_COMPLEX (&z, (R >= 0) ? real : M_PI - real, (I >= 0) ? -imag : imag); + } + + return z; +} + +gsl_complex +gsl_complex_arccos_real (double a) +{ /* z = arccos(a) */ + gsl_complex z; + + if (fabs (a) <= 1.0) + { + GSL_SET_COMPLEX (&z, acos (a), 0); + } + else + { + if (a < 0.0) + { + GSL_SET_COMPLEX (&z, M_PI, -acosh (-a)); + } + else + { + GSL_SET_COMPLEX (&z, 0, acosh (a)); + } + } + + return z; +} + +gsl_complex +gsl_complex_arctan (gsl_complex a) +{ /* z = arctan(a) */ + double R = GSL_REAL (a), I = GSL_IMAG (a); + gsl_complex z; + + if (I == 0) + { + GSL_SET_COMPLEX (&z, atan (R), 0); + } + else + { + /* FIXME: This is a naive implementation which does not fully + take into account cancellation errors, overflow, underflow + etc. It would benefit from the Hull et al treatment. */ + + double r = hypot (R, I); + + double imag; + + double u = 2 * I / (1 + r * r); + + /* FIXME: the following cross-over should be optimized but 0.1 + seems to work ok */ + + if (fabs (u) < 0.1) + { + imag = 0.25 * (log1p (u) - log1p (-u)); + } + else + { + double A = hypot (R, I + 1); + double B = hypot (R, I - 1); + imag = 0.5 * log (A / B); + } + + if (R == 0) + { + if (I > 1) + { + GSL_SET_COMPLEX (&z, M_PI_2, imag); + } + else if (I < -1) + { + GSL_SET_COMPLEX (&z, -M_PI_2, imag); + } + else + { + GSL_SET_COMPLEX (&z, 0, imag); + }; + } + else + { + GSL_SET_COMPLEX (&z, 0.5 * atan2 (2 * R, ((1 + r) * (1 - r))), imag); + } + } + + return z; +} + +gsl_complex +gsl_complex_arcsec (gsl_complex a) +{ /* z = arcsec(a) */ + gsl_complex z = gsl_complex_inverse (a); + return gsl_complex_arccos (z); +} + +gsl_complex +gsl_complex_arcsec_real (double a) +{ /* z = arcsec(a) */ + gsl_complex z; + + if (a <= -1.0 || a >= 1.0) + { + GSL_SET_COMPLEX (&z, acos (1 / a), 0.0); + } + else + { + if (a >= 0.0) + { + GSL_SET_COMPLEX (&z, 0, acosh (1 / a)); + } + else + { + GSL_SET_COMPLEX (&z, M_PI, -acosh (-1 / a)); + } + } + + return z; +} + +gsl_complex +gsl_complex_arccsc (gsl_complex a) +{ /* z = arccsc(a) */ + gsl_complex z = gsl_complex_inverse (a); + return gsl_complex_arcsin (z); +} + +gsl_complex +gsl_complex_arccsc_real (double a) +{ /* z = arccsc(a) */ + gsl_complex z; + + if (a <= -1.0 || a >= 1.0) + { + GSL_SET_COMPLEX (&z, asin (1 / a), 0.0); + } + else + { + if (a >= 0.0) + { + GSL_SET_COMPLEX (&z, M_PI_2, -acosh (1 / a)); + } + else + { + GSL_SET_COMPLEX (&z, -M_PI_2, acosh (-1 / a)); + } + } + + return z; +} + +gsl_complex +gsl_complex_arccot (gsl_complex a) +{ /* z = arccot(a) */ + gsl_complex z; + + if (GSL_REAL (a) == 0.0 && GSL_IMAG (a) == 0.0) + { + GSL_SET_COMPLEX (&z, M_PI_2, 0); + } + else + { + z = gsl_complex_inverse (a); + z = gsl_complex_arctan (z); + } + + return z; +} + +/********************************************************************** + * Complex Hyperbolic Functions + **********************************************************************/ + +gsl_complex +gsl_complex_sinh (gsl_complex a) +{ /* z = sinh(a) */ + double R = GSL_REAL (a), I = GSL_IMAG (a); + + gsl_complex z; + GSL_SET_COMPLEX (&z, sinh (R) * cos (I), cosh (R) * sin (I)); + return z; +} + +gsl_complex +gsl_complex_cosh (gsl_complex a) +{ /* z = cosh(a) */ + double R = GSL_REAL (a), I = GSL_IMAG (a); + + gsl_complex z; + GSL_SET_COMPLEX (&z, cosh (R) * cos (I), sinh (R) * sin (I)); + return z; +} + +gsl_complex +gsl_complex_tanh (gsl_complex a) +{ /* z = tanh(a) */ + double R = GSL_REAL (a), I = GSL_IMAG (a); + + gsl_complex z; + + if (fabs(R) < 1.0) + { + double D = pow (cos (I), 2.0) + pow (sinh (R), 2.0); + + GSL_SET_COMPLEX (&z, sinh (R) * cosh (R) / D, 0.5 * sin (2 * I) / D); + } + else + { + double D = pow (cos (I), 2.0) + pow (sinh (R), 2.0); + double F = 1 + pow (cos (I) / sinh (R), 2.0); + + GSL_SET_COMPLEX (&z, 1.0 / (tanh (R) * F), 0.5 * sin (2 * I) / D); + } + + return z; +} + +gsl_complex +gsl_complex_sech (gsl_complex a) +{ /* z = sech(a) */ + gsl_complex z = gsl_complex_cosh (a); + return gsl_complex_inverse (z); +} + +gsl_complex +gsl_complex_csch (gsl_complex a) +{ /* z = csch(a) */ + gsl_complex z = gsl_complex_sinh (a); + return gsl_complex_inverse (z); +} + +gsl_complex +gsl_complex_coth (gsl_complex a) +{ /* z = coth(a) */ + gsl_complex z = gsl_complex_tanh (a); + return gsl_complex_inverse (z); +} + +/********************************************************************** + * Inverse Complex Hyperbolic Functions + **********************************************************************/ + +gsl_complex +gsl_complex_arcsinh (gsl_complex a) +{ /* z = arcsinh(a) */ + gsl_complex z = gsl_complex_mul_imag(a, 1.0); + z = gsl_complex_arcsin (z); + z = gsl_complex_mul_imag (z, -1.0); + return z; +} + +gsl_complex +gsl_complex_arccosh (gsl_complex a) +{ /* z = arccosh(a) */ + gsl_complex z = gsl_complex_arccos (a); + z = gsl_complex_mul_imag (z, GSL_IMAG(z) > 0 ? -1.0 : 1.0); + return z; +} + +gsl_complex +gsl_complex_arccosh_real (double a) +{ /* z = arccosh(a) */ + gsl_complex z; + + if (a >= 1) + { + GSL_SET_COMPLEX (&z, acosh (a), 0); + } + else + { + if (a >= -1.0) + { + GSL_SET_COMPLEX (&z, 0, acos (a)); + } + else + { + GSL_SET_COMPLEX (&z, acosh (-a), M_PI); + } + } + + return z; +} + +gsl_complex +gsl_complex_arctanh (gsl_complex a) +{ /* z = arctanh(a) */ + if (GSL_IMAG (a) == 0.0) + { + return gsl_complex_arctanh_real (GSL_REAL (a)); + } + else + { + gsl_complex z = gsl_complex_mul_imag(a, 1.0); + z = gsl_complex_arctan (z); + z = gsl_complex_mul_imag (z, -1.0); + return z; + } +} + +gsl_complex +gsl_complex_arctanh_real (double a) +{ /* z = arctanh(a) */ + gsl_complex z; + + if (a > -1.0 && a < 1.0) + { + GSL_SET_COMPLEX (&z, atanh (a), 0); + } + else + { + GSL_SET_COMPLEX (&z, atanh (1 / a), (a < 0) ? M_PI_2 : -M_PI_2); + } + + return z; +} + +gsl_complex +gsl_complex_arcsech (gsl_complex a) +{ /* z = arcsech(a); */ + gsl_complex t = gsl_complex_inverse (a); + return gsl_complex_arccosh (t); +} + +gsl_complex +gsl_complex_arccsch (gsl_complex a) +{ /* z = arccsch(a) */ + gsl_complex t = gsl_complex_inverse (a); + return gsl_complex_arcsinh (t); +} + +gsl_complex +gsl_complex_arccoth (gsl_complex a) +{ /* z = arccoth(a) */ + gsl_complex t = gsl_complex_inverse (a); + return gsl_complex_arctanh (t); +} diff --git a/gsl-2.5/complex/math.lo b/gsl-2.5/complex/math.lo new file mode 100644 index 00000000..0239c512 --- /dev/null +++ b/gsl-2.5/complex/math.lo @@ -0,0 +1,12 @@ +# math.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/math.o' + +# Name of the non-PIC object +non_pic_object='math.o' + diff --git a/gsl-2.5/complex/results.h b/gsl-2.5/complex/results.h new file mode 100644 index 00000000..574affe9 --- /dev/null +++ b/gsl-2.5/complex/results.h @@ -0,0 +1,4578 @@ + {FN (sqrt), ARG(0.0e+00,0.0e+00), RES(0e0, 0.0)}, + {FN (sqrt), ARG(0.0e+00,1.19209289550781250e-07), RES(2.44140625e-4, 2.44140625e-4)}, + {FN (sqrt), ARG(0.0e+00,-1.19209289550781250e-07), RES(2.44140625e-4, -2.44140625e-4)}, + {FN (sqrt), ARG(0.0e+00,5.0e-01), RES(5e-1, 5e-1)}, + {FN (sqrt), ARG(0.0e+00,-5.0e-01), RES(5e-1, -5e-1)}, + {FN (sqrt), ARG(0.0e+00,1.0e+00), RES(7.0710678118654752440e-1, 7.0710678118654752440e-1)}, + {FN (sqrt), ARG(0.0e+00,-1.0e+00), RES(7.0710678118654752440e-1, -7.0710678118654752440e-1)}, + {FN (sqrt), ARG(0.0e+00,2.0e+00), RES(1, 1)}, + {FN (sqrt), ARG(0.0e+00,-2.0e+00), RES(1, -1)}, + {FN (sqrt), ARG(0.0e+00,8.3886080e+06), RES(2048, 2048)}, + {FN (sqrt), ARG(0.0e+00,-8.3886080e+06), RES(2048, -2048)}, + {FN (sqrt), ARG(1.19209289550781250e-07,0.0e+00), RES(3.4526698300124390840e-4, 0.0)}, + {FN (sqrt), ARG(-1.19209289550781250e-07,0.0e+00), RES(0, 3.4526698300124390840e-4)}, + {FN (sqrt), ARG(1.19209289550781250e-07,1.19209289550781250e-07), RES(3.7933934912842707699e-4, 1.5712750315077700799e-4)}, + {FN (sqrt), ARG(1.19209289550781250e-07,-1.19209289550781250e-07), RES(3.7933934912842707699e-4, -1.5712750315077700799e-4)}, + {FN (sqrt), ARG(-1.19209289550781250e-07,1.19209289550781250e-07), RES(1.5712750315077700799e-4, 3.7933934912842707699e-4)}, + {FN (sqrt), ARG(-1.19209289550781250e-07,-1.19209289550781250e-07), RES(1.5712750315077700799e-4, -3.7933934912842707699e-4)}, + {FN (sqrt), ARG(1.19209289550781250e-07,5.0e-01), RES(5.0000005960464832810e-1, 4.9999994039535877732e-1)}, + {FN (sqrt), ARG(1.19209289550781250e-07,-5.0e-01), RES(5.0000005960464832810e-1, -4.9999994039535877732e-1)}, + {FN (sqrt), ARG(-1.19209289550781250e-07,5.0e-01), RES(4.9999994039535877732e-1, 5.0000005960464832810e-1)}, + {FN (sqrt), ARG(-1.19209289550781250e-07,-5.0e-01), RES(4.9999994039535877732e-1, -5.0000005960464832810e-1)}, + {FN (sqrt), ARG(1.19209289550781250e-07,1.0e+00), RES(7.0710682333339729137e-1, 7.0710673903970026958e-1)}, + {FN (sqrt), ARG(1.19209289550781250e-07,-1.0e+00), RES(7.0710682333339729137e-1, -7.0710673903970026958e-1)}, + {FN (sqrt), ARG(-1.19209289550781250e-07,1.0e+00), RES(7.0710673903970026958e-1, 7.0710682333339729137e-1)}, + {FN (sqrt), ARG(-1.19209289550781250e-07,-1.0e+00), RES(7.0710673903970026958e-1, -7.0710682333339729137e-1)}, + {FN (sqrt), ARG(1.19209289550781250e-07,2.0e+00), RES(1.0000000298023228318e0, 9.9999997019767805639e-1)}, + {FN (sqrt), ARG(1.19209289550781250e-07,-2.0e+00), RES(1.0000000298023228318e0, -9.9999997019767805639e-1)}, + {FN (sqrt), ARG(-1.19209289550781250e-07,2.0e+00), RES(9.9999997019767805639e-1, 1.0000000298023228318e0)}, + {FN (sqrt), ARG(-1.19209289550781250e-07,-2.0e+00), RES(9.9999997019767805639e-1, -1.0000000298023228318e0)}, + {FN (sqrt), ARG(1.19209289550781250e-07,8.3886080e+06), RES(2.0480000000000145519e3, 2.0479999999999854481e3)}, + {FN (sqrt), ARG(1.19209289550781250e-07,-8.3886080e+06), RES(2.0480000000000145519e3, -2.0479999999999854481e3)}, + {FN (sqrt), ARG(-1.19209289550781250e-07,8.3886080e+06), RES(2.0479999999999854481e3, 2.0480000000000145519e3)}, + {FN (sqrt), ARG(-1.19209289550781250e-07,-8.3886080e+06), RES(2.0479999999999854481e3, -2.0480000000000145519e3)}, + {FN (sqrt), ARG(5.0e-01,0.0e+00), RES(7.0710678118654752440e-1, 0.0)}, + {FN (sqrt), ARG(-5.0e-01,0.0e+00), RES(0, 7.0710678118654752440e-1)}, + {FN (sqrt), ARG(5.0e-01,1.19209289550781250e-07), RES(7.0710678118655254870e-1, 8.4293697021787464631e-8)}, + {FN (sqrt), ARG(5.0e-01,-1.19209289550781250e-07), RES(7.0710678118655254870e-1, -8.4293697021787464631e-8)}, + {FN (sqrt), ARG(-5.0e-01,1.19209289550781250e-07), RES(8.4293697021787464631e-8, 7.0710678118655254870e-1)}, + {FN (sqrt), ARG(-5.0e-01,-1.19209289550781250e-07), RES(8.4293697021787464631e-8, -7.0710678118655254870e-1)}, + {FN (sqrt), ARG(5.0e-01,5.0e-01), RES(7.7688698701501865367e-1, 3.2179712645279131237e-1)}, + {FN (sqrt), ARG(5.0e-01,-5.0e-01), RES(7.7688698701501865367e-1, -3.2179712645279131237e-1)}, + {FN (sqrt), ARG(-5.0e-01,5.0e-01), RES(3.2179712645279131237e-1, 7.7688698701501865367e-1)}, + {FN (sqrt), ARG(-5.0e-01,-5.0e-01), RES(3.2179712645279131237e-1, -7.7688698701501865367e-1)}, + {FN (sqrt), ARG(5.0e-01,1.0e+00), RES(8.9945371997393363613e-1, 5.5589297025142117199e-1)}, + {FN (sqrt), ARG(5.0e-01,-1.0e+00), RES(8.9945371997393363613e-1, -5.5589297025142117199e-1)}, + {FN (sqrt), ARG(-5.0e-01,1.0e+00), RES(5.5589297025142117199e-1, 8.9945371997393363613e-1)}, + {FN (sqrt), ARG(-5.0e-01,-1.0e+00), RES(5.5589297025142117199e-1, -8.9945371997393363613e-1)}, + {FN (sqrt), ARG(5.0e-01,2.0e+00), RES(1.1317139242778694103e0, 8.8361553087551326576e-1)}, + {FN (sqrt), ARG(5.0e-01,-2.0e+00), RES(1.1317139242778694103e0, -8.8361553087551326576e-1)}, + {FN (sqrt), ARG(-5.0e-01,2.0e+00), RES(8.8361553087551326576e-1, 1.1317139242778694103e0)}, + {FN (sqrt), ARG(-5.0e-01,-2.0e+00), RES(8.8361553087551326576e-1, -1.1317139242778694103e0)}, + {FN (sqrt), ARG(5.0e-01,8.3886080e+06), RES(2.0480000610351571595e3, 2.0479999389648446595e3)}, + {FN (sqrt), ARG(5.0e-01,-8.3886080e+06), RES(2.0480000610351571595e3, -2.0479999389648446595e3)}, + {FN (sqrt), ARG(-5.0e-01,8.3886080e+06), RES(2.0479999389648446595e3, 2.0480000610351571595e3)}, + {FN (sqrt), ARG(-5.0e-01,-8.3886080e+06), RES(2.0479999389648446595e3, -2.0480000610351571595e3)}, + {FN (sqrt), ARG(1.0e+00,0.0e+00), RES(1e0, 0.0)}, + {FN (sqrt), ARG(-1.0e+00,0.0e+00), RES(0, 1)}, + {FN (sqrt), ARG(1.0e+00,1.19209289550781250e-07), RES(1.0000000000000017764e0, 5.9604644775390519121e-8)}, + {FN (sqrt), ARG(1.0e+00,-1.19209289550781250e-07), RES(1.0000000000000017764e0, -5.9604644775390519121e-8)}, + {FN (sqrt), ARG(-1.0e+00,1.19209289550781250e-07), RES(5.9604644775390519121e-8, 1.0000000000000017764e0)}, + {FN (sqrt), ARG(-1.0e+00,-1.19209289550781250e-07), RES(5.9604644775390519121e-8, -1.0000000000000017764e0)}, + {FN (sqrt), ARG(1.0e+00,5.0e-01), RES(1.0290855136357461252e0, 2.4293413587832283909e-1)}, + {FN (sqrt), ARG(1.0e+00,-5.0e-01), RES(1.0290855136357461252e0, -2.4293413587832283909e-1)}, + {FN (sqrt), ARG(-1.0e+00,5.0e-01), RES(2.4293413587832283909e-1, 1.0290855136357461252e0)}, + {FN (sqrt), ARG(-1.0e+00,-5.0e-01), RES(2.4293413587832283909e-1, -1.0290855136357461252e0)}, + {FN (sqrt), ARG(1.0e+00,1.0e+00), RES(1.0986841134678099660e0, 4.5508986056222734130e-1)}, + {FN (sqrt), ARG(1.0e+00,-1.0e+00), RES(1.0986841134678099660e0, -4.5508986056222734130e-1)}, + {FN (sqrt), ARG(-1.0e+00,1.0e+00), RES(4.5508986056222734130e-1, 1.0986841134678099660e0)}, + {FN (sqrt), ARG(-1.0e+00,-1.0e+00), RES(4.5508986056222734130e-1, -1.0986841134678099660e0)}, + {FN (sqrt), ARG(1.0e+00,2.0e+00), RES(1.2720196495140689643e0, 7.8615137775742328607e-1)}, + {FN (sqrt), ARG(1.0e+00,-2.0e+00), RES(1.2720196495140689643e0, -7.8615137775742328607e-1)}, + {FN (sqrt), ARG(-1.0e+00,2.0e+00), RES(7.8615137775742328607e-1, 1.2720196495140689643e0)}, + {FN (sqrt), ARG(-1.0e+00,-2.0e+00), RES(7.8615137775742328607e-1, -1.2720196495140689643e0)}, + {FN (sqrt), ARG(1.0e+00,8.3886080e+06), RES(2.0480001220703161380e3, 2.0479998779296911380e3)}, + {FN (sqrt), ARG(1.0e+00,-8.3886080e+06), RES(2.0480001220703161380e3, -2.0479998779296911380e3)}, + {FN (sqrt), ARG(-1.0e+00,8.3886080e+06), RES(2.0479998779296911380e3, 2.0480001220703161380e3)}, + {FN (sqrt), ARG(-1.0e+00,-8.3886080e+06), RES(2.0479998779296911380e3, -2.0480001220703161380e3)}, + {FN (sqrt), ARG(2.0e+00,0.0e+00), RES(1.4142135623730950488e0, 0.0)}, + {FN (sqrt), ARG(-2.0e+00,0.0e+00), RES(0, 1.4142135623730950488e0)}, + {FN (sqrt), ARG(2.0e+00,1.19209289550781250e-07), RES(1.4142135623730956768e0, 4.2146848510894013070e-8)}, + {FN (sqrt), ARG(2.0e+00,-1.19209289550781250e-07), RES(1.4142135623730956768e0, -4.2146848510894013070e-8)}, + {FN (sqrt), ARG(-2.0e+00,1.19209289550781250e-07), RES(4.2146848510894013070e-8, 1.4142135623730956768e0)}, + {FN (sqrt), ARG(-2.0e+00,-1.19209289550781250e-07), RES(4.2146848510894013070e-8, -1.4142135623730956768e0)}, + {FN (sqrt), ARG(2.0e+00,5.0e-01), RES(1.4250531240639470060e0, 1.7543205637629383228e-1)}, + {FN (sqrt), ARG(2.0e+00,-5.0e-01), RES(1.4250531240639470060e0, -1.7543205637629383228e-1)}, + {FN (sqrt), ARG(-2.0e+00,5.0e-01), RES(1.7543205637629383228e-1, 1.4250531240639470060e0)}, + {FN (sqrt), ARG(-2.0e+00,-5.0e-01), RES(1.7543205637629383228e-1, -1.4250531240639470060e0)}, + {FN (sqrt), ARG(2.0e+00,1.0e+00), RES(1.4553466902253548081e0, 3.4356074972251246414e-1)}, + {FN (sqrt), ARG(2.0e+00,-1.0e+00), RES(1.4553466902253548081e0, -3.4356074972251246414e-1)}, + {FN (sqrt), ARG(-2.0e+00,1.0e+00), RES(3.4356074972251246414e-1, 1.4553466902253548081e0)}, + {FN (sqrt), ARG(-2.0e+00,-1.0e+00), RES(3.4356074972251246414e-1, -1.4553466902253548081e0)}, + {FN (sqrt), ARG(2.0e+00,2.0e+00), RES(1.5537739740300373073e0, 6.4359425290558262474e-1)}, + {FN (sqrt), ARG(2.0e+00,-2.0e+00), RES(1.5537739740300373073e0, -6.4359425290558262474e-1)}, + {FN (sqrt), ARG(-2.0e+00,2.0e+00), RES(6.4359425290558262474e-1, 1.5537739740300373073e0)}, + {FN (sqrt), ARG(-2.0e+00,-2.0e+00), RES(6.4359425290558262474e-1, -1.5537739740300373073e0)}, + {FN (sqrt), ARG(2.0e+00,8.3886080e+06), RES(2.0480002441406395519e3, 2.0479997558593895519e3)}, + {FN (sqrt), ARG(2.0e+00,-8.3886080e+06), RES(2.0480002441406395519e3, -2.0479997558593895519e3)}, + {FN (sqrt), ARG(-2.0e+00,8.3886080e+06), RES(2.0479997558593895519e3, 2.0480002441406395519e3)}, + {FN (sqrt), ARG(-2.0e+00,-8.3886080e+06), RES(2.0479997558593895519e3, -2.0480002441406395519e3)}, + {FN (sqrt), ARG(8.3886080e+06,0.0e+00), RES(2.8963093757400986599e3, 0.0)}, + {FN (sqrt), ARG(-8.3886080e+06,0.0e+00), RES(0, 2.8963093757400986599e3)}, + {FN (sqrt), ARG(8.3886080e+06,1.19209289550781250e-07), RES(2.8963093757400986599e3, 2.0579515874459976458e-11)}, + {FN (sqrt), ARG(8.3886080e+06,-1.19209289550781250e-07), RES(2.8963093757400986599e3, -2.0579515874459976458e-11)}, + {FN (sqrt), ARG(-8.3886080e+06,1.19209289550781250e-07), RES(2.0579515874459976458e-11, 2.8963093757400986599e3)}, + {FN (sqrt), ARG(-8.3886080e+06,-1.19209289550781250e-07), RES(2.0579515874459976458e-11, -2.8963093757400986599e3)}, + {FN (sqrt), ARG(8.3886080e+06,5.0e-01), RES(2.8963093757400999462e3, 8.6316745750310938767e-5)}, + {FN (sqrt), ARG(8.3886080e+06,-5.0e-01), RES(2.8963093757400999462e3, -8.6316745750310938767e-5)}, + {FN (sqrt), ARG(-8.3886080e+06,5.0e-01), RES(8.6316745750310938767e-5, 2.8963093757400999462e3)}, + {FN (sqrt), ARG(-8.3886080e+06,-5.0e-01), RES(8.6316745750310938767e-5, -2.8963093757400999462e3)}, + {FN (sqrt), ARG(8.3886080e+06,1.0e+00), RES(2.8963093757401038048e3, 1.7263349150062164754e-4)}, + {FN (sqrt), ARG(8.3886080e+06,-1.0e+00), RES(2.8963093757401038048e3, -1.7263349150062164754e-4)}, + {FN (sqrt), ARG(-8.3886080e+06,1.0e+00), RES(1.7263349150062164754e-4, 2.8963093757401038048e3)}, + {FN (sqrt), ARG(-8.3886080e+06,-1.0e+00), RES(1.7263349150062164754e-4, -2.8963093757401038048e3)}, + {FN (sqrt), ARG(8.3886080e+06,2.0e+00), RES(2.8963093757401192395e3, 3.4526698300124145513e-4)}, + {FN (sqrt), ARG(8.3886080e+06,-2.0e+00), RES(2.8963093757401192395e3, -3.4526698300124145513e-4)}, + {FN (sqrt), ARG(-8.3886080e+06,2.0e+00), RES(3.4526698300124145513e-4, 2.8963093757401192395e3)}, + {FN (sqrt), ARG(-8.3886080e+06,-2.0e+00), RES(3.4526698300124145513e-4, -2.8963093757401192395e3)}, + {FN (sqrt), ARG(8.3886080e+06,8.3886080e+06), RES(3.1821290988135164054e3, 1.3180810299506332155e3)}, + {FN (sqrt), ARG(8.3886080e+06,-8.3886080e+06), RES(3.1821290988135164054e3, -1.3180810299506332155e3)}, + {FN (sqrt), ARG(-8.3886080e+06,8.3886080e+06), RES(1.3180810299506332155e3, 3.1821290988135164054e3)}, + {FN (sqrt), ARG(-8.3886080e+06,-8.3886080e+06), RES(1.3180810299506332155e3, -3.1821290988135164054e3)}, + {FN (log), ARG(1.19209289550781250e-07,0.0e+00), RES(-1.5942385152878742117e1, 0.0)}, + {FN (log), ARG(-1.19209289550781250e-07,0.0e+00), RES(-1.5942385152878742117e1, 3.1415926535897932385e0)}, + {FN (log), ARG(1.19209289550781250e-07,1.19209289550781250e-07), RES(-1.5595811562598769462e1, 7.8539816339744830962e-1)}, + {FN (log), ARG(1.19209289550781250e-07,-1.19209289550781250e-07), RES(-1.5595811562598769462e1, -7.8539816339744830962e-1)}, + {FN (log), ARG(-1.19209289550781250e-07,1.19209289550781250e-07), RES(-1.5595811562598769462e1, 2.3561944901923449288e0)}, + {FN (log), ARG(-1.19209289550781250e-07,-1.19209289550781250e-07), RES(-1.5595811562598769462e1, -2.3561944901923449288e0)}, + {FN (log), ARG(1.19209289550781250e-07,5.0e-01), RES(-6.9314718055991688771e-1, 1.5707960883763175177e0)}, + {FN (log), ARG(1.19209289550781250e-07,-5.0e-01), RES(-6.9314718055991688771e-1, -1.5707960883763175177e0)}, + {FN (log), ARG(-1.19209289550781250e-07,5.0e-01), RES(-6.9314718055991688771e-1, 1.5707965652134757208e0)}, + {FN (log), ARG(-1.19209289550781250e-07,-5.0e-01), RES(-6.9314718055991688771e-1, -1.5707965652134757208e0)}, + {FN (log), ARG(1.19209289550781250e-07,1.0e+00), RES(7.1054273576009513716e-15, 1.5707962075856070685e0)}, + {FN (log), ARG(1.19209289550781250e-07,-1.0e+00), RES(7.1054273576009513716e-15, -1.5707962075856070685e0)}, + {FN (log), ARG(-1.19209289550781250e-07,1.0e+00), RES(7.1054273576009513716e-15, 1.570796446004186170e0)}, + {FN (log), ARG(-1.19209289550781250e-07,-1.0e+00), RES(7.1054273576009513716e-15, -1.570796446004186170e0)}, + {FN (log), ARG(1.19209289550781250e-07,2.0e+00), RES(6.9314718055994708577e-1, 1.5707962671902518438e0)}, + {FN (log), ARG(1.19209289550781250e-07,-2.0e+00), RES(6.9314718055994708577e-1, -1.5707962671902518438e0)}, + {FN (log), ARG(-1.19209289550781250e-07,2.0e+00), RES(6.9314718055994708577e-1, 1.5707963863995413946e0)}, + {FN (log), ARG(-1.19209289550781250e-07,-2.0e+00), RES(6.9314718055994708577e-1, -1.5707963863995413946e0)}, + {FN (log), ARG(1.19209289550781250e-07,8.3886080e+06), RES(1.5942385152878742117e1, 1.5707963267948824084e0)}, + {FN (log), ARG(1.19209289550781250e-07,-8.3886080e+06), RES(1.5942385152878742117e1, -1.5707963267948824084e0)}, + {FN (log), ARG(-1.19209289550781250e-07,8.3886080e+06), RES(1.5942385152878742117e1, 1.5707963267949108301e0)}, + {FN (log), ARG(-1.19209289550781250e-07,-8.3886080e+06), RES(1.5942385152878742117e1, -1.5707963267949108301e0)}, + {FN (log), ARG(5.0e-01,0.0e+00), RES(-6.9314718055994530942e-1, 0.0)}, + {FN (log), ARG(-5.0e-01,0.0e+00), RES(-6.9314718055994530942e-1, 3.1415926535897932385e0)}, + {FN (log), ARG(5.0e-01,1.19209289550781250e-07), RES(-6.9314718055991688771e-1, 2.3841857910155798249e-7)}, + {FN (log), ARG(5.0e-01,-1.19209289550781250e-07), RES(-6.9314718055991688771e-1, -2.3841857910155798249e-7)}, + {FN (log), ARG(-5.0e-01,1.19209289550781250e-07), RES(-6.9314718055991688771e-1, 3.1415924151712141369e0)}, + {FN (log), ARG(-5.0e-01,-1.19209289550781250e-07), RES(-6.9314718055991688771e-1, -3.1415924151712141369e0)}, + {FN (log), ARG(5.0e-01,5.0e-01), RES(-3.4657359027997265471e-1, 7.8539816339744830962e-1)}, + {FN (log), ARG(5.0e-01,-5.0e-01), RES(-3.4657359027997265471e-1, -7.8539816339744830962e-1)}, + {FN (log), ARG(-5.0e-01,5.0e-01), RES(-3.4657359027997265471e-1, 2.3561944901923449288e0)}, + {FN (log), ARG(-5.0e-01,-5.0e-01), RES(-3.4657359027997265471e-1, -2.3561944901923449288e0)}, + {FN (log), ARG(5.0e-01,1.0e+00), RES(1.1157177565710487788e-1, 1.1071487177940905030e0)}, + {FN (log), ARG(5.0e-01,-1.0e+00), RES(1.1157177565710487788e-1, -1.1071487177940905030e0)}, + {FN (log), ARG(-5.0e-01,1.0e+00), RES(1.1157177565710487788e-1, 2.0344439357957027354e0)}, + {FN (log), ARG(-5.0e-01,-1.0e+00), RES(1.1157177565710487788e-1, -2.0344439357957027354e0)}, + {FN (log), ARG(5.0e-01,2.0e+00), RES(7.2345949146816273071e-1, 1.3258176636680324651e0)}, + {FN (log), ARG(5.0e-01,-2.0e+00), RES(7.2345949146816273071e-1, -1.3258176636680324651e0)}, + {FN (log), ARG(-5.0e-01,2.0e+00), RES(7.2345949146816273071e-1, 1.8157749899217607734e0)}, + {FN (log), ARG(-5.0e-01,-2.0e+00), RES(7.2345949146816273071e-1, -1.8157749899217607734e0)}, + {FN (log), ARG(5.0e-01,8.3886080e+06), RES(1.5942385152878743893e1, 1.5707962671902518438e0)}, + {FN (log), ARG(5.0e-01,-8.3886080e+06), RES(1.5942385152878743893e1, -1.5707962671902518438e0)}, + {FN (log), ARG(-5.0e-01,8.3886080e+06), RES(1.5942385152878743893e1, 1.5707963863995413946e0)}, + {FN (log), ARG(-5.0e-01,-8.3886080e+06), RES(1.5942385152878743893e1, -1.5707963863995413946e0)}, + {FN (log), ARG(1.0e+00,0.0e+00), RES(0e0, 0.0)}, + {FN (log), ARG(-1.0e+00,0.0e+00), RES(0, 3.1415926535897932385e0)}, + {FN (log), ARG(1.0e+00,1.19209289550781250e-07), RES(7.1054273576009513716e-15, 1.1920928955078068531e-7)}, + {FN (log), ARG(1.0e+00,-1.19209289550781250e-07), RES(7.1054273576009513716e-15, -1.1920928955078068531e-7)}, + {FN (log), ARG(-1.0e+00,1.19209289550781250e-07), RES(7.1054273576009513716e-15, 3.1415925343805036877e0)}, + {FN (log), ARG(-1.0e+00,-1.19209289550781250e-07), RES(7.1054273576009513716e-15, -3.1415925343805036877e0)}, + {FN (log), ARG(1.0e+00,5.0e-01), RES(1.1157177565710487788e-1, 4.6364760900080611621e-1)}, + {FN (log), ARG(1.0e+00,-5.0e-01), RES(1.1157177565710487788e-1, -4.6364760900080611621e-1)}, + {FN (log), ARG(-1.0e+00,5.0e-01), RES(1.1157177565710487788e-1, 2.6779450445889871222e0)}, + {FN (log), ARG(-1.0e+00,-5.0e-01), RES(1.1157177565710487788e-1, -2.6779450445889871222e0)}, + {FN (log), ARG(1.0e+00,1.0e+00), RES(3.4657359027997265471e-1, 7.8539816339744830962e-1)}, + {FN (log), ARG(1.0e+00,-1.0e+00), RES(3.4657359027997265471e-1, -7.8539816339744830962e-1)}, + {FN (log), ARG(-1.0e+00,1.0e+00), RES(3.4657359027997265471e-1, 2.3561944901923449288e0)}, + {FN (log), ARG(-1.0e+00,-1.0e+00), RES(3.4657359027997265471e-1, -2.3561944901923449288e0)}, + {FN (log), ARG(1.0e+00,2.0e+00), RES(8.0471895621705018730e-1, 1.1071487177940905030e0)}, + {FN (log), ARG(1.0e+00,-2.0e+00), RES(8.0471895621705018730e-1, -1.1071487177940905030e0)}, + {FN (log), ARG(-1.0e+00,2.0e+00), RES(8.0471895621705018730e-1, 2.0344439357957027354e0)}, + {FN (log), ARG(-1.0e+00,-2.0e+00), RES(8.0471895621705018730e-1, -2.0344439357957027354e0)}, + {FN (log), ARG(1.0e+00,8.3886080e+06), RES(1.5942385152878749222e1, 1.5707962075856070685e0)}, + {FN (log), ARG(1.0e+00,-8.3886080e+06), RES(1.5942385152878749222e1, -1.5707962075856070685e0)}, + {FN (log), ARG(-1.0e+00,8.3886080e+06), RES(1.5942385152878749222e1, 1.570796446004186170e0)}, + {FN (log), ARG(-1.0e+00,-8.3886080e+06), RES(1.5942385152878749222e1, -1.570796446004186170e0)}, + {FN (log), ARG(2.0e+00,0.0e+00), RES(6.9314718055994530942e-1, 0.0)}, + {FN (log), ARG(-2.0e+00,0.0e+00), RES(6.9314718055994530942e-1, 3.1415926535897932385e0)}, + {FN (log), ARG(2.0e+00,1.19209289550781250e-07), RES(6.9314718055994708577e-1, 5.9604644775390554414e-8)}, + {FN (log), ARG(2.0e+00,-1.19209289550781250e-07), RES(6.9314718055994708577e-1, -5.9604644775390554414e-8)}, + {FN (log), ARG(-2.0e+00,1.19209289550781250e-07), RES(6.9314718055994708577e-1, 3.1415925939851484631e0)}, + {FN (log), ARG(-2.0e+00,-1.19209289550781250e-07), RES(6.9314718055994708577e-1, -3.1415925939851484631e0)}, + {FN (log), ARG(2.0e+00,5.0e-01), RES(7.2345949146816273071e-1, 2.4497866312686415417e-1)}, + {FN (log), ARG(2.0e+00,-5.0e-01), RES(7.2345949146816273071e-1, -2.4497866312686415417e-1)}, + {FN (log), ARG(-2.0e+00,5.0e-01), RES(7.2345949146816273071e-1, 2.8966139904629290843e0)}, + {FN (log), ARG(-2.0e+00,-5.0e-01), RES(7.2345949146816273071e-1, -2.8966139904629290843e0)}, + {FN (log), ARG(2.0e+00,1.0e+00), RES(8.0471895621705018730e-1, 4.6364760900080611621e-1)}, + {FN (log), ARG(2.0e+00,-1.0e+00), RES(8.0471895621705018730e-1, -4.6364760900080611621e-1)}, + {FN (log), ARG(-2.0e+00,1.0e+00), RES(8.0471895621705018730e-1, 2.6779450445889871222e0)}, + {FN (log), ARG(-2.0e+00,-1.0e+00), RES(8.0471895621705018730e-1, -2.6779450445889871222e0)}, + {FN (log), ARG(2.0e+00,2.0e+00), RES(1.0397207708399179641e0, 7.8539816339744830962e-1)}, + {FN (log), ARG(2.0e+00,-2.0e+00), RES(1.0397207708399179641e0, -7.8539816339744830962e-1)}, + {FN (log), ARG(-2.0e+00,2.0e+00), RES(1.0397207708399179641e0, 2.3561944901923449288e0)}, + {FN (log), ARG(-2.0e+00,-2.0e+00), RES(1.0397207708399179641e0, -2.3561944901923449288e0)}, + {FN (log), ARG(2.0e+00,8.3886080e+06), RES(1.5942385152878770538e1, 1.5707960883763175177e0)}, + {FN (log), ARG(2.0e+00,-8.3886080e+06), RES(1.5942385152878770538e1, -1.5707960883763175177e0)}, + {FN (log), ARG(-2.0e+00,8.3886080e+06), RES(1.5942385152878770538e1, 1.5707965652134757208e0)}, + {FN (log), ARG(-2.0e+00,-8.3886080e+06), RES(1.5942385152878770538e1, -1.5707965652134757208e0)}, + {FN (log), ARG(8.3886080e+06,0.0e+00), RES(1.5942385152878742117e1, 0.0)}, + {FN (log), ARG(-8.3886080e+06,0.0e+00), RES(1.5942385152878742117e1, 3.1415926535897932385e0)}, + {FN (log), ARG(8.3886080e+06,1.19209289550781250e-07), RES(1.5942385152878742117e1, 1.4210854715202003717e-14)}, + {FN (log), ARG(8.3886080e+06,-1.19209289550781250e-07), RES(1.5942385152878742117e1, -1.4210854715202003717e-14)}, + {FN (log), ARG(-8.3886080e+06,1.19209289550781250e-07), RES(1.5942385152878742117e1, 3.1415926535897790276e0)}, + {FN (log), ARG(-8.3886080e+06,-1.19209289550781250e-07), RES(1.5942385152878742117e1, -3.1415926535897790276e0)}, + {FN (log), ARG(8.3886080e+06,5.0e-01), RES(1.5942385152878743893e1, 5.9604644775390554414e-8)}, + {FN (log), ARG(8.3886080e+06,-5.0e-01), RES(1.5942385152878743893e1, -5.9604644775390554414e-8)}, + {FN (log), ARG(-8.3886080e+06,5.0e-01), RES(1.5942385152878743893e1, 3.1415925939851484631e0)}, + {FN (log), ARG(-8.3886080e+06,-5.0e-01), RES(1.5942385152878743893e1, -3.1415925939851484631e0)}, + {FN (log), ARG(8.3886080e+06,1.0e+00), RES(1.5942385152878749222e1, 1.1920928955078068531e-7)}, + {FN (log), ARG(8.3886080e+06,-1.0e+00), RES(1.5942385152878749222e1, -1.1920928955078068531e-7)}, + {FN (log), ARG(-8.3886080e+06,1.0e+00), RES(1.5942385152878749222e1, 3.1415925343805036877e0)}, + {FN (log), ARG(-8.3886080e+06,-1.0e+00), RES(1.5942385152878749222e1, -3.1415925343805036877e0)}, + {FN (log), ARG(8.3886080e+06,2.0e+00), RES(1.5942385152878770538e1, 2.3841857910155798249e-7)}, + {FN (log), ARG(8.3886080e+06,-2.0e+00), RES(1.5942385152878770538e1, -2.3841857910155798249e-7)}, + {FN (log), ARG(-8.3886080e+06,2.0e+00), RES(1.5942385152878770538e1, 3.1415924151712141369e0)}, + {FN (log), ARG(-8.3886080e+06,-2.0e+00), RES(1.5942385152878770538e1, -3.1415924151712141369e0)}, + {FN (log), ARG(8.3886080e+06,8.3886080e+06), RES(1.6288958743158714771e1, 7.8539816339744830962e-1)}, + {FN (log), ARG(8.3886080e+06,-8.3886080e+06), RES(1.6288958743158714771e1, -7.8539816339744830962e-1)}, + {FN (log), ARG(-8.3886080e+06,8.3886080e+06), RES(1.6288958743158714771e1, 2.3561944901923449288e0)}, + {FN (log), ARG(-8.3886080e+06,-8.3886080e+06), RES(1.6288958743158714771e1, -2.3561944901923449288e0)}, + {FN (log), ARG(0.0e+00,1.19209289550781250e-07), RES(-1.5942385152878742117e1, 1.5707963267948966192e0)}, + {FN (log), ARG(0.0e+00,-1.19209289550781250e-07), RES(-1.5942385152878742117e1, -1.5707963267948966192e0)}, + {FN (log), ARG(0.0e+00,5.0e-01), RES(-6.9314718055994530942e-1, 1.5707963267948966192e0)}, + {FN (log), ARG(0.0e+00,-5.0e-01), RES(-6.9314718055994530942e-1, -1.5707963267948966192e0)}, + {FN (log), ARG(0.0e+00,1.0e+00), RES(0, 1.5707963267948966192e0)}, + {FN (log), ARG(0.0e+00,-1.0e+00), RES(0, -1.5707963267948966192e0)}, + {FN (log), ARG(0.0e+00,2.0e+00), RES(6.9314718055994530942e-1, 1.5707963267948966192e0)}, + {FN (log), ARG(0.0e+00,-2.0e+00), RES(6.9314718055994530942e-1, -1.5707963267948966192e0)}, + {FN (log), ARG(0.0e+00,8.3886080e+06), RES(1.5942385152878742117e1, 1.5707963267948966192e0)}, + {FN (log), ARG(0.0e+00,-8.3886080e+06), RES(1.5942385152878742117e1, -1.5707963267948966192e0)}, + {FN (log), ARG(1.19209289550781250e-07,1.19209289550781250e-07), RES(-1.5595811562598769462e1, 7.8539816339744830962e-1)}, + {FN (log), ARG(1.19209289550781250e-07,-1.19209289550781250e-07), RES(-1.5595811562598769462e1, -7.8539816339744830962e-1)}, + {FN (log), ARG(-1.19209289550781250e-07,1.19209289550781250e-07), RES(-1.5595811562598769462e1, 2.3561944901923449288e0)}, + {FN (log), ARG(-1.19209289550781250e-07,-1.19209289550781250e-07), RES(-1.5595811562598769462e1, -2.3561944901923449288e0)}, + {FN (log), ARG(1.19209289550781250e-07,5.0e-01), RES(-6.9314718055991688771e-1, 1.5707960883763175177e0)}, + {FN (log), ARG(1.19209289550781250e-07,-5.0e-01), RES(-6.9314718055991688771e-1, -1.5707960883763175177e0)}, + {FN (log), ARG(-1.19209289550781250e-07,5.0e-01), RES(-6.9314718055991688771e-1, 1.5707965652134757208e0)}, + {FN (log), ARG(-1.19209289550781250e-07,-5.0e-01), RES(-6.9314718055991688771e-1, -1.5707965652134757208e0)}, + {FN (log), ARG(1.19209289550781250e-07,1.0e+00), RES(7.1054273576009513716e-15, 1.5707962075856070685e0)}, + {FN (log), ARG(1.19209289550781250e-07,-1.0e+00), RES(7.1054273576009513716e-15, -1.5707962075856070685e0)}, + {FN (log), ARG(-1.19209289550781250e-07,1.0e+00), RES(7.1054273576009513716e-15, 1.570796446004186170e0)}, + {FN (log), ARG(-1.19209289550781250e-07,-1.0e+00), RES(7.1054273576009513716e-15, -1.570796446004186170e0)}, + {FN (log), ARG(1.19209289550781250e-07,2.0e+00), RES(6.9314718055994708577e-1, 1.5707962671902518438e0)}, + {FN (log), ARG(1.19209289550781250e-07,-2.0e+00), RES(6.9314718055994708577e-1, -1.5707962671902518438e0)}, + {FN (log), ARG(-1.19209289550781250e-07,2.0e+00), RES(6.9314718055994708577e-1, 1.5707963863995413946e0)}, + {FN (log), ARG(-1.19209289550781250e-07,-2.0e+00), RES(6.9314718055994708577e-1, -1.5707963863995413946e0)}, + {FN (log), ARG(1.19209289550781250e-07,8.3886080e+06), RES(1.5942385152878742117e1, 1.5707963267948824084e0)}, + {FN (log), ARG(1.19209289550781250e-07,-8.3886080e+06), RES(1.5942385152878742117e1, -1.5707963267948824084e0)}, + {FN (log), ARG(-1.19209289550781250e-07,8.3886080e+06), RES(1.5942385152878742117e1, 1.5707963267949108301e0)}, + {FN (log), ARG(-1.19209289550781250e-07,-8.3886080e+06), RES(1.5942385152878742117e1, -1.5707963267949108301e0)}, + {FN (log), ARG(5.0e-01,1.19209289550781250e-07), RES(-6.9314718055991688771e-1, 2.3841857910155798249e-7)}, + {FN (log), ARG(5.0e-01,-1.19209289550781250e-07), RES(-6.9314718055991688771e-1, -2.3841857910155798249e-7)}, + {FN (log), ARG(-5.0e-01,1.19209289550781250e-07), RES(-6.9314718055991688771e-1, 3.1415924151712141369e0)}, + {FN (log), ARG(-5.0e-01,-1.19209289550781250e-07), RES(-6.9314718055991688771e-1, -3.1415924151712141369e0)}, + {FN (log), ARG(5.0e-01,5.0e-01), RES(-3.4657359027997265471e-1, 7.8539816339744830962e-1)}, + {FN (log), ARG(5.0e-01,-5.0e-01), RES(-3.4657359027997265471e-1, -7.8539816339744830962e-1)}, + {FN (log), ARG(-5.0e-01,5.0e-01), RES(-3.4657359027997265471e-1, 2.3561944901923449288e0)}, + {FN (log), ARG(-5.0e-01,-5.0e-01), RES(-3.4657359027997265471e-1, -2.3561944901923449288e0)}, + {FN (log), ARG(5.0e-01,1.0e+00), RES(1.1157177565710487788e-1, 1.1071487177940905030e0)}, + {FN (log), ARG(5.0e-01,-1.0e+00), RES(1.1157177565710487788e-1, -1.1071487177940905030e0)}, + {FN (log), ARG(-5.0e-01,1.0e+00), RES(1.1157177565710487788e-1, 2.0344439357957027354e0)}, + {FN (log), ARG(-5.0e-01,-1.0e+00), RES(1.1157177565710487788e-1, -2.0344439357957027354e0)}, + {FN (log), ARG(5.0e-01,2.0e+00), RES(7.2345949146816273071e-1, 1.3258176636680324651e0)}, + {FN (log), ARG(5.0e-01,-2.0e+00), RES(7.2345949146816273071e-1, -1.3258176636680324651e0)}, + {FN (log), ARG(-5.0e-01,2.0e+00), RES(7.2345949146816273071e-1, 1.8157749899217607734e0)}, + {FN (log), ARG(-5.0e-01,-2.0e+00), RES(7.2345949146816273071e-1, -1.8157749899217607734e0)}, + {FN (log), ARG(5.0e-01,8.3886080e+06), RES(1.5942385152878743893e1, 1.5707962671902518438e0)}, + {FN (log), ARG(5.0e-01,-8.3886080e+06), RES(1.5942385152878743893e1, -1.5707962671902518438e0)}, + {FN (log), ARG(-5.0e-01,8.3886080e+06), RES(1.5942385152878743893e1, 1.5707963863995413946e0)}, + {FN (log), ARG(-5.0e-01,-8.3886080e+06), RES(1.5942385152878743893e1, -1.5707963863995413946e0)}, + {FN (log), ARG(1.0e+00,1.19209289550781250e-07), RES(7.1054273576009513716e-15, 1.1920928955078068531e-7)}, + {FN (log), ARG(1.0e+00,-1.19209289550781250e-07), RES(7.1054273576009513716e-15, -1.1920928955078068531e-7)}, + {FN (log), ARG(-1.0e+00,1.19209289550781250e-07), RES(7.1054273576009513716e-15, 3.1415925343805036877e0)}, + {FN (log), ARG(-1.0e+00,-1.19209289550781250e-07), RES(7.1054273576009513716e-15, -3.1415925343805036877e0)}, + {FN (log), ARG(1.0e+00,5.0e-01), RES(1.1157177565710487788e-1, 4.6364760900080611621e-1)}, + {FN (log), ARG(1.0e+00,-5.0e-01), RES(1.1157177565710487788e-1, -4.6364760900080611621e-1)}, + {FN (log), ARG(-1.0e+00,5.0e-01), RES(1.1157177565710487788e-1, 2.6779450445889871222e0)}, + {FN (log), ARG(-1.0e+00,-5.0e-01), RES(1.1157177565710487788e-1, -2.6779450445889871222e0)}, + {FN (log), ARG(1.0e+00,1.0e+00), RES(3.4657359027997265471e-1, 7.8539816339744830962e-1)}, + {FN (log), ARG(1.0e+00,-1.0e+00), RES(3.4657359027997265471e-1, -7.8539816339744830962e-1)}, + {FN (log), ARG(-1.0e+00,1.0e+00), RES(3.4657359027997265471e-1, 2.3561944901923449288e0)}, + {FN (log), ARG(-1.0e+00,-1.0e+00), RES(3.4657359027997265471e-1, -2.3561944901923449288e0)}, + {FN (log), ARG(1.0e+00,2.0e+00), RES(8.0471895621705018730e-1, 1.1071487177940905030e0)}, + {FN (log), ARG(1.0e+00,-2.0e+00), RES(8.0471895621705018730e-1, -1.1071487177940905030e0)}, + {FN (log), ARG(-1.0e+00,2.0e+00), RES(8.0471895621705018730e-1, 2.0344439357957027354e0)}, + {FN (log), ARG(-1.0e+00,-2.0e+00), RES(8.0471895621705018730e-1, -2.0344439357957027354e0)}, + {FN (log), ARG(1.0e+00,8.3886080e+06), RES(1.5942385152878749222e1, 1.5707962075856070685e0)}, + {FN (log), ARG(1.0e+00,-8.3886080e+06), RES(1.5942385152878749222e1, -1.5707962075856070685e0)}, + {FN (log), ARG(-1.0e+00,8.3886080e+06), RES(1.5942385152878749222e1, 1.570796446004186170e0)}, + {FN (log), ARG(-1.0e+00,-8.3886080e+06), RES(1.5942385152878749222e1, -1.570796446004186170e0)}, + {FN (log), ARG(2.0e+00,1.19209289550781250e-07), RES(6.9314718055994708577e-1, 5.9604644775390554414e-8)}, + {FN (log), ARG(2.0e+00,-1.19209289550781250e-07), RES(6.9314718055994708577e-1, -5.9604644775390554414e-8)}, + {FN (log), ARG(-2.0e+00,1.19209289550781250e-07), RES(6.9314718055994708577e-1, 3.1415925939851484631e0)}, + {FN (log), ARG(-2.0e+00,-1.19209289550781250e-07), RES(6.9314718055994708577e-1, -3.1415925939851484631e0)}, + {FN (log), ARG(2.0e+00,5.0e-01), RES(7.2345949146816273071e-1, 2.4497866312686415417e-1)}, + {FN (log), ARG(2.0e+00,-5.0e-01), RES(7.2345949146816273071e-1, -2.4497866312686415417e-1)}, + {FN (log), ARG(-2.0e+00,5.0e-01), RES(7.2345949146816273071e-1, 2.8966139904629290843e0)}, + {FN (log), ARG(-2.0e+00,-5.0e-01), RES(7.2345949146816273071e-1, -2.8966139904629290843e0)}, + {FN (log), ARG(2.0e+00,1.0e+00), RES(8.0471895621705018730e-1, 4.6364760900080611621e-1)}, + {FN (log), ARG(2.0e+00,-1.0e+00), RES(8.0471895621705018730e-1, -4.6364760900080611621e-1)}, + {FN (log), ARG(-2.0e+00,1.0e+00), RES(8.0471895621705018730e-1, 2.6779450445889871222e0)}, + {FN (log), ARG(-2.0e+00,-1.0e+00), RES(8.0471895621705018730e-1, -2.6779450445889871222e0)}, + {FN (log), ARG(2.0e+00,2.0e+00), RES(1.0397207708399179641e0, 7.8539816339744830962e-1)}, + {FN (log), ARG(2.0e+00,-2.0e+00), RES(1.0397207708399179641e0, -7.8539816339744830962e-1)}, + {FN (log), ARG(-2.0e+00,2.0e+00), RES(1.0397207708399179641e0, 2.3561944901923449288e0)}, + {FN (log), ARG(-2.0e+00,-2.0e+00), RES(1.0397207708399179641e0, -2.3561944901923449288e0)}, + {FN (log), ARG(2.0e+00,8.3886080e+06), RES(1.5942385152878770538e1, 1.5707960883763175177e0)}, + {FN (log), ARG(2.0e+00,-8.3886080e+06), RES(1.5942385152878770538e1, -1.5707960883763175177e0)}, + {FN (log), ARG(-2.0e+00,8.3886080e+06), RES(1.5942385152878770538e1, 1.5707965652134757208e0)}, + {FN (log), ARG(-2.0e+00,-8.3886080e+06), RES(1.5942385152878770538e1, -1.5707965652134757208e0)}, + {FN (log), ARG(8.3886080e+06,1.19209289550781250e-07), RES(1.5942385152878742117e1, 1.4210854715202003717e-14)}, + {FN (log), ARG(8.3886080e+06,-1.19209289550781250e-07), RES(1.5942385152878742117e1, -1.4210854715202003717e-14)}, + {FN (log), ARG(-8.3886080e+06,1.19209289550781250e-07), RES(1.5942385152878742117e1, 3.1415926535897790276e0)}, + {FN (log), ARG(-8.3886080e+06,-1.19209289550781250e-07), RES(1.5942385152878742117e1, -3.1415926535897790276e0)}, + {FN (log), ARG(8.3886080e+06,5.0e-01), RES(1.5942385152878743893e1, 5.9604644775390554414e-8)}, + {FN (log), ARG(8.3886080e+06,-5.0e-01), RES(1.5942385152878743893e1, -5.9604644775390554414e-8)}, + {FN (log), ARG(-8.3886080e+06,5.0e-01), RES(1.5942385152878743893e1, 3.1415925939851484631e0)}, + {FN (log), ARG(-8.3886080e+06,-5.0e-01), RES(1.5942385152878743893e1, -3.1415925939851484631e0)}, + {FN (log), ARG(8.3886080e+06,1.0e+00), RES(1.5942385152878749222e1, 1.1920928955078068531e-7)}, + {FN (log), ARG(8.3886080e+06,-1.0e+00), RES(1.5942385152878749222e1, -1.1920928955078068531e-7)}, + {FN (log), ARG(-8.3886080e+06,1.0e+00), RES(1.5942385152878749222e1, 3.1415925343805036877e0)}, + {FN (log), ARG(-8.3886080e+06,-1.0e+00), RES(1.5942385152878749222e1, -3.1415925343805036877e0)}, + {FN (log), ARG(8.3886080e+06,2.0e+00), RES(1.5942385152878770538e1, 2.3841857910155798249e-7)}, + {FN (log), ARG(8.3886080e+06,-2.0e+00), RES(1.5942385152878770538e1, -2.3841857910155798249e-7)}, + {FN (log), ARG(-8.3886080e+06,2.0e+00), RES(1.5942385152878770538e1, 3.1415924151712141369e0)}, + {FN (log), ARG(-8.3886080e+06,-2.0e+00), RES(1.5942385152878770538e1, -3.1415924151712141369e0)}, + {FN (log), ARG(8.3886080e+06,8.3886080e+06), RES(1.6288958743158714771e1, 7.8539816339744830962e-1)}, + {FN (log), ARG(8.3886080e+06,-8.3886080e+06), RES(1.6288958743158714771e1, -7.8539816339744830962e-1)}, + {FN (log), ARG(-8.3886080e+06,8.3886080e+06), RES(1.6288958743158714771e1, 2.3561944901923449288e0)}, + {FN (log), ARG(-8.3886080e+06,-8.3886080e+06), RES(1.6288958743158714771e1, -2.3561944901923449288e0)}, + {FN (log10), ARG(1.19209289550781250e-07,0.0e+00), RES(-6.9236899002715674899e0, 0.0)}, + {FN (log10), ARG(-1.19209289550781250e-07,0.0e+00), RES(-6.9236899002715674899e0, 1.3643763538418413475e0)}, + {FN (log10), ARG(1.19209289550781250e-07,1.19209289550781250e-07), RES(-6.7731749024395768923e0, 3.4109408846046033687e-1)}, + {FN (log10), ARG(1.19209289550781250e-07,-1.19209289550781250e-07), RES(-6.7731749024395768923e0, -3.4109408846046033687e-1)}, + {FN (log10), ARG(-1.19209289550781250e-07,1.19209289550781250e-07), RES(-6.7731749024395768923e0, 1.0232822653813810106e0)}, + {FN (log10), ARG(-1.19209289550781250e-07,-1.19209289550781250e-07), RES(-6.7731749024395768923e0, -1.0232822653813810106e0)}, + {FN (log10), ARG(1.19209289550781250e-07,5.0e-01), RES(-3.0102999566396885182e-1, 6.8218807337704738672e-1)}, + {FN (log10), ARG(1.19209289550781250e-07,-5.0e-01), RES(-3.0102999566396885182e-1, -6.8218807337704738672e-1)}, + {FN (log10), ARG(-1.19209289550781250e-07,5.0e-01), RES(-3.0102999566396885182e-1, 6.8218828046479396076e-1)}, + {FN (log10), ARG(-1.19209289550781250e-07,-5.0e-01), RES(-3.0102999566396885182e-1, -6.8218828046479396076e-1)}, + {FN (log10), ARG(1.19209289550781250e-07,1.0e+00), RES(3.0858478929704968280e-15, 6.8218812514898403023e-1)}, + {FN (log10), ARG(1.19209289550781250e-07,-1.0e+00), RES(3.0858478929704968280e-15, -6.8218812514898403023e-1)}, + {FN (log10), ARG(-1.19209289550781250e-07,1.0e+00), RES(3.0858478929704968280e-15, 6.8218822869285731725e-1)}, + {FN (log10), ARG(-1.19209289550781250e-07,-1.0e+00), RES(3.0858478929704968280e-15, -6.8218822869285731725e-1)}, + {FN (log10), ARG(1.19209289550781250e-07,2.0e+00), RES(3.0102999566398196668e-1, 6.8218815103495235199e-1)}, + {FN (log10), ARG(1.19209289550781250e-07,-2.0e+00), RES(3.0102999566398196668e-1, -6.8218815103495235199e-1)}, + {FN (log10), ARG(-1.19209289550781250e-07,2.0e+00), RES(3.0102999566398196668e-1, 6.8218820280688899550e-1)}, + {FN (log10), ARG(-1.19209289550781250e-07,-2.0e+00), RES(3.0102999566398196668e-1, -6.8218820280688899550e-1)}, + {FN (log10), ARG(1.19209289550781250e-07,8.3886080e+06), RES(6.9236899002715674899e0, 6.8218817692091450205e-1)}, + {FN (log10), ARG(1.19209289550781250e-07,-8.3886080e+06), RES(6.9236899002715674899e0, -6.8218817692091450205e-1)}, + {FN (log10), ARG(-1.19209289550781250e-07,8.3886080e+06), RES(6.9236899002715674899e0, 6.8218817692092684544e-1)}, + {FN (log10), ARG(-1.19209289550781250e-07,-8.3886080e+06), RES(6.9236899002715674899e0, -6.8218817692092684544e-1)}, + {FN (log10), ARG(5.0e-01,0.0e+00), RES(-3.0102999566398119521e-1, 0.0)}, + {FN (log10), ARG(-5.0e-01,0.0e+00), RES(-3.0102999566398119521e-1, 1.3643763538418413475e0)}, + {FN (log10), ARG(5.0e-01,1.19209289550781250e-07), RES(-3.0102999566396885182e-1, 1.0354387328702058762e-7)}, + {FN (log10), ARG(5.0e-01,-1.19209289550781250e-07), RES(-3.0102999566396885182e-1, -1.0354387328702058762e-7)}, + {FN (log10), ARG(-5.0e-01,1.19209289550781250e-07), RES(-3.0102999566396885182e-1, 1.3643762502979680605e0)}, + {FN (log10), ARG(-5.0e-01,-1.19209289550781250e-07), RES(-3.0102999566396885182e-1, -1.3643762502979680605e0)}, + {FN (log10), ARG(5.0e-01,5.0e-01), RES(-1.5051499783199059761e-1, 3.4109408846046033687e-1)}, + {FN (log10), ARG(5.0e-01,-5.0e-01), RES(-1.5051499783199059761e-1, -3.4109408846046033687e-1)}, + {FN (log10), ARG(-5.0e-01,5.0e-01), RES(-1.5051499783199059761e-1, 1.0232822653813810106e0)}, + {FN (log10), ARG(-5.0e-01,-5.0e-01), RES(-1.5051499783199059761e-1, -1.0232822653813810106e0)}, + {FN (log10), ARG(5.0e-01,1.0e+00), RES(4.8455006504028207179e-2, 4.8082857878423410270e-1)}, + {FN (log10), ARG(5.0e-01,-1.0e+00), RES(4.8455006504028207179e-2, -4.8082857878423410270e-1)}, + {FN (log10), ARG(-5.0e-01,1.0e+00), RES(4.8455006504028207179e-2, 8.8354777505760724478e-1)}, + {FN (log10), ARG(-5.0e-01,-1.0e+00), RES(4.8455006504028207179e-2, -8.8354777505760724478e-1)}, + {FN (log10), ARG(5.0e-01,2.0e+00), RES(3.1419446502515576906e-1, 5.7579529534088794354e-1)}, + {FN (log10), ARG(5.0e-01,-2.0e+00), RES(3.1419446502515576906e-1, -5.7579529534088794354e-1)}, + {FN (log10), ARG(-5.0e-01,2.0e+00), RES(3.1419446502515576906e-1, 7.8858105850095340394e-1)}, + {FN (log10), ARG(-5.0e-01,-2.0e+00), RES(3.1419446502515576906e-1, -7.8858105850095340394e-1)}, + {FN (log10), ARG(5.0e-01,8.3886080e+06), RES(6.9236899002715682614e0, 6.8218815103495235199e-1)}, + {FN (log10), ARG(5.0e-01,-8.3886080e+06), RES(6.9236899002715682614e0, -6.8218815103495235199e-1)}, + {FN (log10), ARG(-5.0e-01,8.3886080e+06), RES(6.9236899002715682614e0, 6.8218820280688899550e-1)}, + {FN (log10), ARG(-5.0e-01,-8.3886080e+06), RES(6.9236899002715682614e0, -6.8218820280688899550e-1)}, + {FN (log10), ARG(1.0e+00,0.0e+00), RES(0e0, 0.0)}, + {FN (log10), ARG(-1.0e+00,0.0e+00), RES(0, 1.3643763538418413475e0)}, + {FN (log10), ARG(1.0e+00,1.19209289550781250e-07), RES(3.0858478929704968280e-15, 5.1771936643511029532e-8)}, + {FN (log10), ARG(1.0e+00,-1.19209289550781250e-07), RES(3.0858478929704968280e-15, -5.1771936643511029532e-8)}, + {FN (log10), ARG(-1.0e+00,1.19209289550781250e-07), RES(3.0858478929704968280e-15, 1.3643763020699047040e0)}, + {FN (log10), ARG(-1.0e+00,-1.19209289550781250e-07), RES(3.0858478929704968280e-15, -1.3643763020699047040e0)}, + {FN (log10), ARG(1.0e+00,5.0e-01), RES(4.8455006504028207179e-2, 2.0135959813668657104e-1)}, + {FN (log10), ARG(1.0e+00,-5.0e-01), RES(4.8455006504028207179e-2, -2.0135959813668657104e-1)}, + {FN (log10), ARG(-1.0e+00,5.0e-01), RES(4.8455006504028207179e-2, 1.1630167557051547764e0)}, + {FN (log10), ARG(-1.0e+00,-5.0e-01), RES(4.8455006504028207179e-2, -1.1630167557051547764e0)}, + {FN (log10), ARG(1.0e+00,1.0e+00), RES(1.5051499783199059761e-1, 3.4109408846046033687e-1)}, + {FN (log10), ARG(1.0e+00,-1.0e+00), RES(1.5051499783199059761e-1, -3.4109408846046033687e-1)}, + {FN (log10), ARG(-1.0e+00,1.0e+00), RES(1.5051499783199059761e-1, 1.0232822653813810106e0)}, + {FN (log10), ARG(-1.0e+00,-1.0e+00), RES(1.5051499783199059761e-1, -1.0232822653813810106e0)}, + {FN (log10), ARG(1.0e+00,2.0e+00), RES(3.4948500216800940239e-1, 4.8082857878423410270e-1)}, + {FN (log10), ARG(1.0e+00,-2.0e+00), RES(3.4948500216800940239e-1, -4.8082857878423410270e-1)}, + {FN (log10), ARG(-1.0e+00,2.0e+00), RES(3.4948500216800940239e-1, 8.8354777505760724478e-1)}, + {FN (log10), ARG(-1.0e+00,-2.0e+00), RES(3.4948500216800940239e-1, -8.8354777505760724478e-1)}, + {FN (log10), ARG(1.0e+00,8.3886080e+06), RES(6.9236899002715705758e0, 6.8218812514898403023e-1)}, + {FN (log10), ARG(1.0e+00,-8.3886080e+06), RES(6.9236899002715705758e0, -6.8218812514898403023e-1)}, + {FN (log10), ARG(-1.0e+00,8.3886080e+06), RES(6.9236899002715705758e0, 6.8218822869285731725e-1)}, + {FN (log10), ARG(-1.0e+00,-8.3886080e+06), RES(6.9236899002715705758e0, -6.8218822869285731725e-1)}, + {FN (log10), ARG(2.0e+00,0.0e+00), RES(3.0102999566398119521e-1, 0.0)}, + {FN (log10), ARG(-2.0e+00,0.0e+00), RES(3.0102999566398119521e-1, 1.3643763538418413475e0)}, + {FN (log10), ARG(2.0e+00,1.19209289550781250e-07), RES(3.0102999566398196668e-1, 2.5885968321755606731e-8)}, + {FN (log10), ARG(2.0e+00,-1.19209289550781250e-07), RES(3.0102999566398196668e-1, -2.5885968321755606731e-8)}, + {FN (log10), ARG(-2.0e+00,1.19209289550781250e-07), RES(3.0102999566398196668e-1, 1.3643763279558730257e0)}, + {FN (log10), ARG(-2.0e+00,-1.19209289550781250e-07), RES(3.0102999566398196668e-1, -1.3643763279558730257e0)}, + {FN (log10), ARG(2.0e+00,5.0e-01), RES(3.1419446502515576906e-1, 1.0639288158003273020e-1)}, + {FN (log10), ARG(2.0e+00,-5.0e-01), RES(3.1419446502515576906e-1, -1.0639288158003273020e-1)}, + {FN (log10), ARG(-2.0e+00,5.0e-01), RES(3.1419446502515576906e-1, 1.2579834722618086173e0)}, + {FN (log10), ARG(-2.0e+00,-5.0e-01), RES(3.1419446502515576906e-1, -1.2579834722618086173e0)}, + {FN (log10), ARG(2.0e+00,1.0e+00), RES(3.4948500216800940239e-1, 2.0135959813668657104e-1)}, + {FN (log10), ARG(2.0e+00,-1.0e+00), RES(3.4948500216800940239e-1, -2.0135959813668657104e-1)}, + {FN (log10), ARG(-2.0e+00,1.0e+00), RES(3.4948500216800940239e-1, 1.1630167557051547764e0)}, + {FN (log10), ARG(-2.0e+00,-1.0e+00), RES(3.4948500216800940239e-1, -1.1630167557051547764e0)}, + {FN (log10), ARG(2.0e+00,2.0e+00), RES(4.5154499349597179282e-1, 3.4109408846046033687e-1)}, + {FN (log10), ARG(2.0e+00,-2.0e+00), RES(4.5154499349597179282e-1, -3.4109408846046033687e-1)}, + {FN (log10), ARG(-2.0e+00,2.0e+00), RES(4.5154499349597179282e-1, 1.0232822653813810106e0)}, + {FN (log10), ARG(-2.0e+00,-2.0e+00), RES(4.5154499349597179282e-1, -1.0232822653813810106e0)}, + {FN (log10), ARG(2.0e+00,8.3886080e+06), RES(6.9236899002715798333e0, 6.8218807337704738672e-1)}, + {FN (log10), ARG(2.0e+00,-8.3886080e+06), RES(6.9236899002715798333e0, -6.8218807337704738672e-1)}, + {FN (log10), ARG(-2.0e+00,8.3886080e+06), RES(6.9236899002715798333e0, 6.8218828046479396076e-1)}, + {FN (log10), ARG(-2.0e+00,-8.3886080e+06), RES(6.9236899002715798333e0, -6.8218828046479396076e-1)}, + {FN (log10), ARG(8.3886080e+06,0.0e+00), RES(6.9236899002715674899e0, 0.0)}, + {FN (log10), ARG(-8.3886080e+06,0.0e+00), RES(6.9236899002715674899e0, 1.3643763538418413475e0)}, + {FN (log10), ARG(8.3886080e+06,1.19209289550781250e-07), RES(6.9236899002715674899e0, 6.1716957859410375086e-15)}, + {FN (log10), ARG(8.3886080e+06,-1.19209289550781250e-07), RES(6.9236899002715674899e0, -6.1716957859410375086e-15)}, + {FN (log10), ARG(-8.3886080e+06,1.19209289550781250e-07), RES(6.9236899002715674899e0, 1.3643763538418351758e0)}, + {FN (log10), ARG(-8.3886080e+06,-1.19209289550781250e-07), RES(6.9236899002715674899e0, -1.3643763538418351758e0)}, + {FN (log10), ARG(8.3886080e+06,5.0e-01), RES(6.9236899002715682614e0, 2.5885968321755606731e-8)}, + {FN (log10), ARG(8.3886080e+06,-5.0e-01), RES(6.9236899002715682614e0, -2.5885968321755606731e-8)}, + {FN (log10), ARG(-8.3886080e+06,5.0e-01), RES(6.9236899002715682614e0, 1.3643763279558730257e0)}, + {FN (log10), ARG(-8.3886080e+06,-5.0e-01), RES(6.9236899002715682614e0, -1.3643763279558730257e0)}, + {FN (log10), ARG(8.3886080e+06,1.0e+00), RES(6.9236899002715705758e0, 5.1771936643511029532e-8)}, + {FN (log10), ARG(8.3886080e+06,-1.0e+00), RES(6.9236899002715705758e0, -5.1771936643511029532e-8)}, + {FN (log10), ARG(-8.3886080e+06,1.0e+00), RES(6.9236899002715705758e0, 1.3643763020699047040e0)}, + {FN (log10), ARG(-8.3886080e+06,-1.0e+00), RES(6.9236899002715705758e0, -1.3643763020699047040e0)}, + {FN (log10), ARG(8.3886080e+06,2.0e+00), RES(6.9236899002715798333e0, 1.0354387328702058762e-7)}, + {FN (log10), ARG(8.3886080e+06,-2.0e+00), RES(6.9236899002715798333e0, -1.0354387328702058762e-7)}, + {FN (log10), ARG(-8.3886080e+06,2.0e+00), RES(6.9236899002715798333e0, 1.3643762502979680605e0)}, + {FN (log10), ARG(-8.3886080e+06,-2.0e+00), RES(6.9236899002715798333e0, -1.3643762502979680605e0)}, + {FN (log10), ARG(8.3886080e+06,8.3886080e+06), RES(7.0742048981035580875e0, 3.4109408846046033687e-1)}, + {FN (log10), ARG(8.3886080e+06,-8.3886080e+06), RES(7.0742048981035580875e0, -3.4109408846046033687e-1)}, + {FN (log10), ARG(-8.3886080e+06,8.3886080e+06), RES(7.0742048981035580875e0, 1.0232822653813810106e0)}, + {FN (log10), ARG(-8.3886080e+06,-8.3886080e+06), RES(7.0742048981035580875e0, -1.0232822653813810106e0)}, + {FN (log10), ARG(0.0e+00,1.19209289550781250e-07), RES(-6.9236899002715674899e0, 6.8218817692092067374e-1)}, + {FN (log10), ARG(0.0e+00,-1.19209289550781250e-07), RES(-6.9236899002715674899e0, -6.8218817692092067374e-1)}, + {FN (log10), ARG(0.0e+00,5.0e-01), RES(-3.0102999566398119521e-1, 6.8218817692092067374e-1)}, + {FN (log10), ARG(0.0e+00,-5.0e-01), RES(-3.0102999566398119521e-1, -6.8218817692092067374e-1)}, + {FN (log10), ARG(0.0e+00,1.0e+00), RES(0, 6.8218817692092067374e-1)}, + {FN (log10), ARG(0.0e+00,-1.0e+00), RES(0, -6.8218817692092067374e-1)}, + {FN (log10), ARG(0.0e+00,2.0e+00), RES(3.0102999566398119521e-1, 6.8218817692092067374e-1)}, + {FN (log10), ARG(0.0e+00,-2.0e+00), RES(3.0102999566398119521e-1, -6.8218817692092067374e-1)}, + {FN (log10), ARG(0.0e+00,8.3886080e+06), RES(6.9236899002715674899e0, 6.8218817692092067374e-1)}, + {FN (log10), ARG(0.0e+00,-8.3886080e+06), RES(6.9236899002715674899e0, -6.8218817692092067374e-1)}, + {FN (log10), ARG(1.19209289550781250e-07,1.19209289550781250e-07), RES(-6.7731749024395768923e0, 3.4109408846046033687e-1)}, + {FN (log10), ARG(1.19209289550781250e-07,-1.19209289550781250e-07), RES(-6.7731749024395768923e0, -3.4109408846046033687e-1)}, + {FN (log10), ARG(-1.19209289550781250e-07,1.19209289550781250e-07), RES(-6.7731749024395768923e0, 1.0232822653813810106e0)}, + {FN (log10), ARG(-1.19209289550781250e-07,-1.19209289550781250e-07), RES(-6.7731749024395768923e0, -1.0232822653813810106e0)}, + {FN (log10), ARG(1.19209289550781250e-07,5.0e-01), RES(-3.0102999566396885182e-1, 6.8218807337704738672e-1)}, + {FN (log10), ARG(1.19209289550781250e-07,-5.0e-01), RES(-3.0102999566396885182e-1, -6.8218807337704738672e-1)}, + {FN (log10), ARG(-1.19209289550781250e-07,5.0e-01), RES(-3.0102999566396885182e-1, 6.8218828046479396076e-1)}, + {FN (log10), ARG(-1.19209289550781250e-07,-5.0e-01), RES(-3.0102999566396885182e-1, -6.8218828046479396076e-1)}, + {FN (log10), ARG(1.19209289550781250e-07,1.0e+00), RES(3.0858478929704968280e-15, 6.8218812514898403023e-1)}, + {FN (log10), ARG(1.19209289550781250e-07,-1.0e+00), RES(3.0858478929704968280e-15, -6.8218812514898403023e-1)}, + {FN (log10), ARG(-1.19209289550781250e-07,1.0e+00), RES(3.0858478929704968280e-15, 6.8218822869285731725e-1)}, + {FN (log10), ARG(-1.19209289550781250e-07,-1.0e+00), RES(3.0858478929704968280e-15, -6.8218822869285731725e-1)}, + {FN (log10), ARG(1.19209289550781250e-07,2.0e+00), RES(3.0102999566398196668e-1, 6.8218815103495235199e-1)}, + {FN (log10), ARG(1.19209289550781250e-07,-2.0e+00), RES(3.0102999566398196668e-1, -6.8218815103495235199e-1)}, + {FN (log10), ARG(-1.19209289550781250e-07,2.0e+00), RES(3.0102999566398196668e-1, 6.8218820280688899550e-1)}, + {FN (log10), ARG(-1.19209289550781250e-07,-2.0e+00), RES(3.0102999566398196668e-1, -6.8218820280688899550e-1)}, + {FN (log10), ARG(1.19209289550781250e-07,8.3886080e+06), RES(6.9236899002715674899e0, 6.8218817692091450205e-1)}, + {FN (log10), ARG(1.19209289550781250e-07,-8.3886080e+06), RES(6.9236899002715674899e0, -6.8218817692091450205e-1)}, + {FN (log10), ARG(-1.19209289550781250e-07,8.3886080e+06), RES(6.9236899002715674899e0, 6.8218817692092684544e-1)}, + {FN (log10), ARG(-1.19209289550781250e-07,-8.3886080e+06), RES(6.9236899002715674899e0, -6.8218817692092684544e-1)}, + {FN (log10), ARG(5.0e-01,1.19209289550781250e-07), RES(-3.0102999566396885182e-1, 1.0354387328702058762e-7)}, + {FN (log10), ARG(5.0e-01,-1.19209289550781250e-07), RES(-3.0102999566396885182e-1, -1.0354387328702058762e-7)}, + {FN (log10), ARG(-5.0e-01,1.19209289550781250e-07), RES(-3.0102999566396885182e-1, 1.3643762502979680605e0)}, + {FN (log10), ARG(-5.0e-01,-1.19209289550781250e-07), RES(-3.0102999566396885182e-1, -1.3643762502979680605e0)}, + {FN (log10), ARG(5.0e-01,5.0e-01), RES(-1.5051499783199059761e-1, 3.4109408846046033687e-1)}, + {FN (log10), ARG(5.0e-01,-5.0e-01), RES(-1.5051499783199059761e-1, -3.4109408846046033687e-1)}, + {FN (log10), ARG(-5.0e-01,5.0e-01), RES(-1.5051499783199059761e-1, 1.0232822653813810106e0)}, + {FN (log10), ARG(-5.0e-01,-5.0e-01), RES(-1.5051499783199059761e-1, -1.0232822653813810106e0)}, + {FN (log10), ARG(5.0e-01,1.0e+00), RES(4.8455006504028207179e-2, 4.8082857878423410270e-1)}, + {FN (log10), ARG(5.0e-01,-1.0e+00), RES(4.8455006504028207179e-2, -4.8082857878423410270e-1)}, + {FN (log10), ARG(-5.0e-01,1.0e+00), RES(4.8455006504028207179e-2, 8.8354777505760724478e-1)}, + {FN (log10), ARG(-5.0e-01,-1.0e+00), RES(4.8455006504028207179e-2, -8.8354777505760724478e-1)}, + {FN (log10), ARG(5.0e-01,2.0e+00), RES(3.1419446502515576906e-1, 5.7579529534088794354e-1)}, + {FN (log10), ARG(5.0e-01,-2.0e+00), RES(3.1419446502515576906e-1, -5.7579529534088794354e-1)}, + {FN (log10), ARG(-5.0e-01,2.0e+00), RES(3.1419446502515576906e-1, 7.8858105850095340394e-1)}, + {FN (log10), ARG(-5.0e-01,-2.0e+00), RES(3.1419446502515576906e-1, -7.8858105850095340394e-1)}, + {FN (log10), ARG(5.0e-01,8.3886080e+06), RES(6.9236899002715682614e0, 6.8218815103495235199e-1)}, + {FN (log10), ARG(5.0e-01,-8.3886080e+06), RES(6.9236899002715682614e0, -6.8218815103495235199e-1)}, + {FN (log10), ARG(-5.0e-01,8.3886080e+06), RES(6.9236899002715682614e0, 6.8218820280688899550e-1)}, + {FN (log10), ARG(-5.0e-01,-8.3886080e+06), RES(6.9236899002715682614e0, -6.8218820280688899550e-1)}, + {FN (log10), ARG(1.0e+00,1.19209289550781250e-07), RES(3.0858478929704968280e-15, 5.1771936643511029532e-8)}, + {FN (log10), ARG(1.0e+00,-1.19209289550781250e-07), RES(3.0858478929704968280e-15, -5.1771936643511029532e-8)}, + {FN (log10), ARG(-1.0e+00,1.19209289550781250e-07), RES(3.0858478929704968280e-15, 1.3643763020699047040e0)}, + {FN (log10), ARG(-1.0e+00,-1.19209289550781250e-07), RES(3.0858478929704968280e-15, -1.3643763020699047040e0)}, + {FN (log10), ARG(1.0e+00,5.0e-01), RES(4.8455006504028207179e-2, 2.0135959813668657104e-1)}, + {FN (log10), ARG(1.0e+00,-5.0e-01), RES(4.8455006504028207179e-2, -2.0135959813668657104e-1)}, + {FN (log10), ARG(-1.0e+00,5.0e-01), RES(4.8455006504028207179e-2, 1.1630167557051547764e0)}, + {FN (log10), ARG(-1.0e+00,-5.0e-01), RES(4.8455006504028207179e-2, -1.1630167557051547764e0)}, + {FN (log10), ARG(1.0e+00,1.0e+00), RES(1.5051499783199059761e-1, 3.4109408846046033687e-1)}, + {FN (log10), ARG(1.0e+00,-1.0e+00), RES(1.5051499783199059761e-1, -3.4109408846046033687e-1)}, + {FN (log10), ARG(-1.0e+00,1.0e+00), RES(1.5051499783199059761e-1, 1.0232822653813810106e0)}, + {FN (log10), ARG(-1.0e+00,-1.0e+00), RES(1.5051499783199059761e-1, -1.0232822653813810106e0)}, + {FN (log10), ARG(1.0e+00,2.0e+00), RES(3.4948500216800940239e-1, 4.8082857878423410270e-1)}, + {FN (log10), ARG(1.0e+00,-2.0e+00), RES(3.4948500216800940239e-1, -4.8082857878423410270e-1)}, + {FN (log10), ARG(-1.0e+00,2.0e+00), RES(3.4948500216800940239e-1, 8.8354777505760724478e-1)}, + {FN (log10), ARG(-1.0e+00,-2.0e+00), RES(3.4948500216800940239e-1, -8.8354777505760724478e-1)}, + {FN (log10), ARG(1.0e+00,8.3886080e+06), RES(6.9236899002715705758e0, 6.8218812514898403023e-1)}, + {FN (log10), ARG(1.0e+00,-8.3886080e+06), RES(6.9236899002715705758e0, -6.8218812514898403023e-1)}, + {FN (log10), ARG(-1.0e+00,8.3886080e+06), RES(6.9236899002715705758e0, 6.8218822869285731725e-1)}, + {FN (log10), ARG(-1.0e+00,-8.3886080e+06), RES(6.9236899002715705758e0, -6.8218822869285731725e-1)}, + {FN (log10), ARG(2.0e+00,1.19209289550781250e-07), RES(3.0102999566398196668e-1, 2.5885968321755606731e-8)}, + {FN (log10), ARG(2.0e+00,-1.19209289550781250e-07), RES(3.0102999566398196668e-1, -2.5885968321755606731e-8)}, + {FN (log10), ARG(-2.0e+00,1.19209289550781250e-07), RES(3.0102999566398196668e-1, 1.3643763279558730257e0)}, + {FN (log10), ARG(-2.0e+00,-1.19209289550781250e-07), RES(3.0102999566398196668e-1, -1.3643763279558730257e0)}, + {FN (log10), ARG(2.0e+00,5.0e-01), RES(3.1419446502515576906e-1, 1.0639288158003273020e-1)}, + {FN (log10), ARG(2.0e+00,-5.0e-01), RES(3.1419446502515576906e-1, -1.0639288158003273020e-1)}, + {FN (log10), ARG(-2.0e+00,5.0e-01), RES(3.1419446502515576906e-1, 1.2579834722618086173e0)}, + {FN (log10), ARG(-2.0e+00,-5.0e-01), RES(3.1419446502515576906e-1, -1.2579834722618086173e0)}, + {FN (log10), ARG(2.0e+00,1.0e+00), RES(3.4948500216800940239e-1, 2.0135959813668657104e-1)}, + {FN (log10), ARG(2.0e+00,-1.0e+00), RES(3.4948500216800940239e-1, -2.0135959813668657104e-1)}, + {FN (log10), ARG(-2.0e+00,1.0e+00), RES(3.4948500216800940239e-1, 1.1630167557051547764e0)}, + {FN (log10), ARG(-2.0e+00,-1.0e+00), RES(3.4948500216800940239e-1, -1.1630167557051547764e0)}, + {FN (log10), ARG(2.0e+00,2.0e+00), RES(4.5154499349597179282e-1, 3.4109408846046033687e-1)}, + {FN (log10), ARG(2.0e+00,-2.0e+00), RES(4.5154499349597179282e-1, -3.4109408846046033687e-1)}, + {FN (log10), ARG(-2.0e+00,2.0e+00), RES(4.5154499349597179282e-1, 1.0232822653813810106e0)}, + {FN (log10), ARG(-2.0e+00,-2.0e+00), RES(4.5154499349597179282e-1, -1.0232822653813810106e0)}, + {FN (log10), ARG(2.0e+00,8.3886080e+06), RES(6.9236899002715798333e0, 6.8218807337704738672e-1)}, + {FN (log10), ARG(2.0e+00,-8.3886080e+06), RES(6.9236899002715798333e0, -6.8218807337704738672e-1)}, + {FN (log10), ARG(-2.0e+00,8.3886080e+06), RES(6.9236899002715798333e0, 6.8218828046479396076e-1)}, + {FN (log10), ARG(-2.0e+00,-8.3886080e+06), RES(6.9236899002715798333e0, -6.8218828046479396076e-1)}, + {FN (log10), ARG(8.3886080e+06,1.19209289550781250e-07), RES(6.9236899002715674899e0, 6.1716957859410375086e-15)}, + {FN (log10), ARG(8.3886080e+06,-1.19209289550781250e-07), RES(6.9236899002715674899e0, -6.1716957859410375086e-15)}, + {FN (log10), ARG(-8.3886080e+06,1.19209289550781250e-07), RES(6.9236899002715674899e0, 1.3643763538418351758e0)}, + {FN (log10), ARG(-8.3886080e+06,-1.19209289550781250e-07), RES(6.9236899002715674899e0, -1.3643763538418351758e0)}, + {FN (log10), ARG(8.3886080e+06,5.0e-01), RES(6.9236899002715682614e0, 2.5885968321755606731e-8)}, + {FN (log10), ARG(8.3886080e+06,-5.0e-01), RES(6.9236899002715682614e0, -2.5885968321755606731e-8)}, + {FN (log10), ARG(-8.3886080e+06,5.0e-01), RES(6.9236899002715682614e0, 1.3643763279558730257e0)}, + {FN (log10), ARG(-8.3886080e+06,-5.0e-01), RES(6.9236899002715682614e0, -1.3643763279558730257e0)}, + {FN (log10), ARG(8.3886080e+06,1.0e+00), RES(6.9236899002715705758e0, 5.1771936643511029532e-8)}, + {FN (log10), ARG(8.3886080e+06,-1.0e+00), RES(6.9236899002715705758e0, -5.1771936643511029532e-8)}, + {FN (log10), ARG(-8.3886080e+06,1.0e+00), RES(6.9236899002715705758e0, 1.3643763020699047040e0)}, + {FN (log10), ARG(-8.3886080e+06,-1.0e+00), RES(6.9236899002715705758e0, -1.3643763020699047040e0)}, + {FN (log10), ARG(8.3886080e+06,2.0e+00), RES(6.9236899002715798333e0, 1.0354387328702058762e-7)}, + {FN (log10), ARG(8.3886080e+06,-2.0e+00), RES(6.9236899002715798333e0, -1.0354387328702058762e-7)}, + {FN (log10), ARG(-8.3886080e+06,2.0e+00), RES(6.9236899002715798333e0, 1.3643762502979680605e0)}, + {FN (log10), ARG(-8.3886080e+06,-2.0e+00), RES(6.9236899002715798333e0, -1.3643762502979680605e0)}, + {FN (log10), ARG(8.3886080e+06,8.3886080e+06), RES(7.0742048981035580875e0, 3.4109408846046033687e-1)}, + {FN (log10), ARG(8.3886080e+06,-8.3886080e+06), RES(7.0742048981035580875e0, -3.4109408846046033687e-1)}, + {FN (log10), ARG(-8.3886080e+06,8.3886080e+06), RES(7.0742048981035580875e0, 1.0232822653813810106e0)}, + {FN (log10), ARG(-8.3886080e+06,-8.3886080e+06), RES(7.0742048981035580875e0, -1.0232822653813810106e0)}, + {FN (exp), ARG(0.0e+00,-3.45266983001243932001e-04), RES(9.9999994039535581673e-1, -3.4526697614140534807e-4)}, + {FN (exp), ARG(0.0e+00,3.45266983001243932001e-04), RES(9.9999994039535581673e-1, 3.4526697614140534807e-4)}, + {FN (exp), ARG(0.0e+00,1.57045105981189525579e+00), RES(3.4526697614152485627e-4, 9.9999994039535581669e-1)}, + {FN (exp), ARG(0.0e+00,-1.57045105981189525579e+00), RES(3.4526697614152485627e-4, -9.9999994039535581669e-1)}, + {FN (exp), ARG(0.0e+00,1.57114159377789786021e+00), RES(-3.4526697614140239160e-4, 9.9999994039535581673e-1)}, + {FN (exp), ARG(0.0e+00,-1.57114159377789786021e+00), RES(-3.4526697614140239160e-4, -9.9999994039535581673e-1)}, + {FN (exp), ARG(0.0e+00,3.14124738660679181379e+00), RES(-9.9999994039535581667e-1, 3.4526697614158608860e-4)}, + {FN (exp), ARG(0.0e+00,-3.14124738660679181379e+00), RES(-9.9999994039535581667e-1, -3.4526697614158608860e-4)}, + {FN (exp), ARG(0.0e+00,3.14193792057279441821e+00), RES(-9.9999994039535581675e-1, -3.4526697614134115926e-4)}, + {FN (exp), ARG(0.0e+00,-3.14193792057279441821e+00), RES(-9.9999994039535581675e-1, 3.4526697614134115926e-4)}, + {FN (exp), ARG(0.0e+00,4.71204371340168837179e+00), RES(-3.4526697614164732094e-4, -9.9999994039535581664e-1)}, + {FN (exp), ARG(0.0e+00,-4.71204371340168837179e+00), RES(-3.4526697614164732094e-4, 9.9999994039535581664e-1)}, + {FN (exp), ARG(0.0e+00,4.71273424736769097620e+00), RES(3.4526697614127992692e-4, -9.9999994039535581677e-1)}, + {FN (exp), ARG(0.0e+00,-4.71273424736769097620e+00), RES(3.4526697614127992692e-4, 9.9999994039535581677e-1)}, + {FN (exp), ARG(0.0e+00,6.28284004019658492979e+00), RES(9.9999994039535581662e-1, -3.4526697614170855328e-4)}, + {FN (exp), ARG(0.0e+00,-6.28284004019658492979e+00), RES(9.9999994039535581662e-1, 3.4526697614170855328e-4)}, + {FN (exp), ARG(0.0e+00,6.28353057416258753420e+00), RES(9.9999994039535581679e-1, 3.4526697614121869459e-4)}, + {FN (exp), ARG(0.0e+00,-6.28353057416258753420e+00), RES(9.9999994039535581679e-1, -3.4526697614121869459e-4)}, + {FN (exp), ARG(0.0e+00,9.42443269378637893396e+00), RES(-9.9999994039535581689e-1, 3.4526697614094283958e-4)}, + {FN (exp), ARG(0.0e+00,-9.42443269378637893396e+00), RES(-9.9999994039535581689e-1, -3.4526697614094283958e-4)}, + {FN (exp), ARG(0.0e+00,9.42512322775237976202e+00), RES(-9.9999994039535581714e-1, -3.4526697614020805155e-4)}, + {FN (exp), ARG(0.0e+00,-9.42512322775237976202e+00), RES(-9.9999994039535581714e-1, 3.4526697614020805155e-4)}, + {FN (exp), ARG(1.19209289550781250e-07,-3.45266983001243932001e-04), RES(1.0000000596046453675e0, -3.4526701730043873250e-4)}, + {FN (exp), ARG(1.19209289550781250e-07,3.45266983001243932001e-04), RES(1.0000000596046453675e0, 3.4526701730043873250e-4)}, + {FN (exp), ARG(-1.19209289550781250e-07,-3.45266983001243932001e-04), RES(9.9999982118608047680e-1, -3.4526693498237687017e-4)}, + {FN (exp), ARG(-1.19209289550781250e-07,3.45266983001243932001e-04), RES(9.9999982118608047680e-1, 3.4526693498237687017e-4)}, + {FN (exp), ARG(1.19209289550781250e-07,1.57045105981189525579e+00), RES(3.4526701730055824072e-4, 1.0000000596046453675e0)}, + {FN (exp), ARG(1.19209289550781250e-07,-1.57045105981189525579e+00), RES(3.4526701730055824072e-4, -1.0000000596046453675e0)}, + {FN (exp), ARG(-1.19209289550781250e-07,1.57045105981189525579e+00), RES(3.4526693498249637836e-4, 9.9999982118608047676e-1)}, + {FN (exp), ARG(-1.19209289550781250e-07,-1.57045105981189525579e+00), RES(3.4526693498249637836e-4, -9.9999982118608047676e-1)}, + {FN (exp), ARG(1.19209289550781250e-07,1.57114159377789786021e+00), RES(-3.4526701730043577603e-4, 1.0000000596046453675e0)}, + {FN (exp), ARG(1.19209289550781250e-07,-1.57114159377789786021e+00), RES(-3.4526701730043577603e-4, -1.0000000596046453675e0)}, + {FN (exp), ARG(-1.19209289550781250e-07,1.57114159377789786021e+00), RES(-3.4526693498237391370e-4, 9.9999982118608047680e-1)}, + {FN (exp), ARG(-1.19209289550781250e-07,-1.57114159377789786021e+00), RES(-3.4526693498237391370e-4, -9.9999982118608047680e-1)}, + {FN (exp), ARG(1.19209289550781250e-07,3.14124738660679181379e+00), RES(-1.0000000596046453674e0, 3.4526701730061947306e-4)}, + {FN (exp), ARG(1.19209289550781250e-07,-3.14124738660679181379e+00), RES(-1.0000000596046453674e0, -3.4526701730061947306e-4)}, + {FN (exp), ARG(-1.19209289550781250e-07,3.14124738660679181379e+00), RES(-9.9999982118608047674e-1, 3.4526693498255761069e-4)}, + {FN (exp), ARG(-1.19209289550781250e-07,-3.14124738660679181379e+00), RES(-9.9999982118608047674e-1, -3.4526693498255761069e-4)}, + {FN (exp), ARG(1.19209289550781250e-07,3.14193792057279441821e+00), RES(-1.0000000596046453675e0, -3.4526701730037454368e-4)}, + {FN (exp), ARG(1.19209289550781250e-07,-3.14193792057279441821e+00), RES(-1.0000000596046453675e0, 3.4526701730037454368e-4)}, + {FN (exp), ARG(-1.19209289550781250e-07,3.14193792057279441821e+00), RES(-9.9999982118608047682e-1, -3.4526693498231268137e-4)}, + {FN (exp), ARG(-1.19209289550781250e-07,-3.14193792057279441821e+00), RES(-9.9999982118608047682e-1, 3.4526693498231268137e-4)}, + {FN (exp), ARG(1.19209289550781250e-07,4.71204371340168837179e+00), RES(-3.4526701730068070540e-4, -1.0000000596046453674e0)}, + {FN (exp), ARG(1.19209289550781250e-07,-4.71204371340168837179e+00), RES(-3.4526701730068070540e-4, 1.0000000596046453674e0)}, + {FN (exp), ARG(-1.19209289550781250e-07,4.71204371340168837179e+00), RES(-3.4526693498261884302e-4, -9.9999982118608047672e-1)}, + {FN (exp), ARG(-1.19209289550781250e-07,-4.71204371340168837179e+00), RES(-3.4526693498261884302e-4, 9.9999982118608047672e-1)}, + {FN (exp), ARG(1.19209289550781250e-07,4.71273424736769097620e+00), RES(3.4526701730031331134e-4, -1.0000000596046453676e0)}, + {FN (exp), ARG(1.19209289550781250e-07,-4.71273424736769097620e+00), RES(3.4526701730031331134e-4, 1.0000000596046453676e0)}, + {FN (exp), ARG(-1.19209289550781250e-07,4.71273424736769097620e+00), RES(3.4526693498225144904e-4, -9.9999982118608047684e-1)}, + {FN (exp), ARG(-1.19209289550781250e-07,-4.71273424736769097620e+00), RES(3.4526693498225144904e-4, 9.9999982118608047684e-1)}, + {FN (exp), ARG(1.19209289550781250e-07,6.28284004019658492979e+00), RES(1.0000000596046453674e0, -3.4526701730074193775e-4)}, + {FN (exp), ARG(1.19209289550781250e-07,-6.28284004019658492979e+00), RES(1.0000000596046453674e0, 3.4526701730074193775e-4)}, + {FN (exp), ARG(-1.19209289550781250e-07,6.28284004019658492979e+00), RES(9.9999982118608047670e-1, -3.4526693498268007535e-4)}, + {FN (exp), ARG(-1.19209289550781250e-07,-6.28284004019658492979e+00), RES(9.9999982118608047670e-1, 3.4526693498268007535e-4)}, + {FN (exp), ARG(1.19209289550781250e-07,6.28353057416258753420e+00), RES(1.0000000596046453676e0, 3.452670173002520790e-4)}, + {FN (exp), ARG(1.19209289550781250e-07,-6.28353057416258753420e+00), RES(1.0000000596046453676e0, -3.452670173002520790e-4)}, + {FN (exp), ARG(-1.19209289550781250e-07,6.28353057416258753420e+00), RES(9.9999982118608047687e-1, 3.4526693498219021671e-4)}, + {FN (exp), ARG(-1.19209289550781250e-07,-6.28353057416258753420e+00), RES(9.9999982118608047687e-1, -3.4526693498219021671e-4)}, + {FN (exp), ARG(1.19209289550781250e-07,9.42443269378637893396e+00), RES(-1.0000000596046453677e0, 3.4526701729997622396e-4)}, + {FN (exp), ARG(1.19209289550781250e-07,-9.42443269378637893396e+00), RES(-1.0000000596046453677e0, -3.4526701729997622396e-4)}, + {FN (exp), ARG(-1.19209289550781250e-07,9.42443269378637893396e+00), RES(-9.9999982118608047696e-1, 3.4526693498191436174e-4)}, + {FN (exp), ARG(-1.19209289550781250e-07,-9.42443269378637893396e+00), RES(-9.9999982118608047696e-1, -3.4526693498191436174e-4)}, + {FN (exp), ARG(1.19209289550781250e-07,9.42512322775237976202e+00), RES(-1.0000000596046453679e0, -3.4526701729924143584e-4)}, + {FN (exp), ARG(1.19209289550781250e-07,-9.42512322775237976202e+00), RES(-1.0000000596046453679e0, 3.4526701729924143584e-4)}, + {FN (exp), ARG(-1.19209289550781250e-07,9.42512322775237976202e+00), RES(-9.9999982118608047721e-1, -3.4526693498117957380e-4)}, + {FN (exp), ARG(-1.19209289550781250e-07,-9.42512322775237976202e+00), RES(-9.9999982118608047721e-1, 3.4526693498117957380e-4)}, + {FN (exp), ARG(5.0e-01,-3.45266983001243932001e-04), RES(1.6487211724286834494e0, -5.6924900763464865323e-4)}, + {FN (exp), ARG(5.0e-01,3.45266983001243932001e-04), RES(1.6487211724286834494e0, 5.6924900763464865323e-4)}, + {FN (exp), ARG(-5.0e-01,-3.45266983001243932001e-04), RES(6.0653062356058926519e-1, -2.0941500681603265022e-4)}, + {FN (exp), ARG(-5.0e-01,3.45266983001243932001e-04), RES(6.0653062356058926519e-1, 2.0941500681603265022e-4)}, + {FN (exp), ARG(5.0e-01,1.57045105981189525579e+00), RES(5.6924900763484568894e-4, 1.6487211724286834493e0)}, + {FN (exp), ARG(5.0e-01,-1.57045105981189525579e+00), RES(5.6924900763484568894e-4, -1.6487211724286834493e0)}, + {FN (exp), ARG(-5.0e-01,1.57045105981189525579e+00), RES(2.0941500681610513560e-4, 6.0653062356058926516e-1)}, + {FN (exp), ARG(-5.0e-01,-1.57045105981189525579e+00), RES(2.0941500681610513560e-4, -6.0653062356058926516e-1)}, + {FN (exp), ARG(5.0e-01,1.57114159377789786021e+00), RES(-5.6924900763464377883e-4, 1.6487211724286834494e0)}, + {FN (exp), ARG(5.0e-01,-1.57114159377789786021e+00), RES(-5.6924900763464377883e-4, -1.6487211724286834494e0)}, + {FN (exp), ARG(-5.0e-01,1.57114159377789786021e+00), RES(-2.0941500681603085702e-4, 6.0653062356058926519e-1)}, + {FN (exp), ARG(-5.0e-01,-1.57114159377789786021e+00), RES(-2.0941500681603085702e-4, -6.0653062356058926519e-1)}, + {FN (exp), ARG(5.0e-01,3.14124738660679181379e+00), RES(-1.6487211724286834493e0, 5.6924900763494664399e-4)}, + {FN (exp), ARG(5.0e-01,-3.14124738660679181379e+00), RES(-1.6487211724286834493e0, -5.6924900763494664399e-4)}, + {FN (exp), ARG(-5.0e-01,3.14124738660679181379e+00), RES(-6.0653062356058926515e-1, 2.0941500681614227489e-4)}, + {FN (exp), ARG(-5.0e-01,-3.14124738660679181379e+00), RES(-6.0653062356058926515e-1, -2.0941500681614227489e-4)}, + {FN (exp), ARG(5.0e-01,3.14193792057279441821e+00), RES(-1.6487211724286834494e0, -5.6924900763454282377e-4)}, + {FN (exp), ARG(5.0e-01,-3.14193792057279441821e+00), RES(-1.6487211724286834494e0, 5.6924900763454282377e-4)}, + {FN (exp), ARG(-5.0e-01,3.14193792057279441821e+00), RES(-6.0653062356058926520e-1, -2.0941500681599371773e-4)}, + {FN (exp), ARG(-5.0e-01,-3.14193792057279441821e+00), RES(-6.0653062356058926520e-1, 2.0941500681599371773e-4)}, + {FN (exp), ARG(5.0e-01,4.71204371340168837179e+00), RES(-5.6924900763504759905e-4, -1.6487211724286834492e0)}, + {FN (exp), ARG(5.0e-01,-4.71204371340168837179e+00), RES(-5.6924900763504759905e-4, 1.6487211724286834492e0)}, + {FN (exp), ARG(-5.0e-01,4.71204371340168837179e+00), RES(-2.0941500681617941418e-4, -6.0653062356058926514e-1)}, + {FN (exp), ARG(-5.0e-01,-4.71204371340168837179e+00), RES(-2.0941500681617941418e-4, 6.0653062356058926514e-1)}, + {FN (exp), ARG(5.0e-01,4.71273424736769097620e+00), RES(5.6924900763444186872e-4, -1.6487211724286834494e0)}, + {FN (exp), ARG(5.0e-01,-4.71273424736769097620e+00), RES(5.6924900763444186872e-4, 1.6487211724286834494e0)}, + {FN (exp), ARG(-5.0e-01,4.71273424736769097620e+00), RES(2.0941500681595657844e-4, -6.0653062356058926521e-1)}, + {FN (exp), ARG(-5.0e-01,-4.71273424736769097620e+00), RES(2.0941500681595657844e-4, 6.0653062356058926521e-1)}, + {FN (exp), ARG(5.0e-01,6.28284004019658492979e+00), RES(1.6487211724286834492e0, -5.6924900763514855410e-4)}, + {FN (exp), ARG(5.0e-01,-6.28284004019658492979e+00), RES(1.6487211724286834492e0, 5.6924900763514855410e-4)}, + {FN (exp), ARG(-5.0e-01,6.28284004019658492979e+00), RES(6.0653062356058926512e-1, -2.0941500681621655347e-4)}, + {FN (exp), ARG(-5.0e-01,-6.28284004019658492979e+00), RES(6.0653062356058926512e-1, 2.0941500681621655347e-4)}, + {FN (exp), ARG(5.0e-01,6.28353057416258753420e+00), RES(1.6487211724286834495e0, 5.6924900763434091366e-4)}, + {FN (exp), ARG(5.0e-01,-6.28353057416258753420e+00), RES(1.6487211724286834495e0, -5.6924900763434091366e-4)}, + {FN (exp), ARG(-5.0e-01,6.28353057416258753420e+00), RES(6.0653062356058926523e-1, 2.0941500681591943916e-4)}, + {FN (exp), ARG(-5.0e-01,-6.28353057416258753420e+00), RES(6.0653062356058926523e-1, -2.0941500681591943916e-4)}, + {FN (exp), ARG(5.0e-01,9.42443269378637893396e+00), RES(-1.6487211724286834496e0, 5.6924900763388610565e-4)}, + {FN (exp), ARG(5.0e-01,-9.42443269378637893396e+00), RES(-1.6487211724286834496e0, -5.6924900763388610565e-4)}, + {FN (exp), ARG(-5.0e-01,9.42443269378637893396e+00), RES(-6.0653062356058926528e-1, 2.0941500681575212464e-4)}, + {FN (exp), ARG(-5.0e-01,-9.42443269378637893396e+00), RES(-6.0653062356058926528e-1, -2.0941500681575212464e-4)}, + {FN (exp), ARG(5.0e-01,9.42512322775237976202e+00), RES(-1.6487211724286834501e0, -5.6924900763267464498e-4)}, + {FN (exp), ARG(5.0e-01,-9.42512322775237976202e+00), RES(-1.6487211724286834501e0, 5.6924900763267464498e-4)}, + {FN (exp), ARG(-5.0e-01,9.42512322775237976202e+00), RES(-6.0653062356058926544e-1, -2.0941500681530645317e-4)}, + {FN (exp), ARG(-5.0e-01,-9.42512322775237976202e+00), RES(-6.0653062356058926544e-1, 2.0941500681530645317e-4)}, + {FN (exp), ARG(1.0e+00,-3.45266983001243932001e-04), RES(2.7182816664368240602e0, -9.3853294721218487636e-4)}, + {FN (exp), ARG(1.0e+00,3.45266983001243932001e-04), RES(2.7182816664368240602e0, 9.3853294721218487636e-4)}, + {FN (exp), ARG(-1.0e+00,-3.45266983001243932001e-04), RES(3.6787941924411912823e-1, -1.2701662223785390836e-4)}, + {FN (exp), ARG(-1.0e+00,3.45266983001243932001e-04), RES(3.6787941924411912823e-1, 1.2701662223785390836e-4)}, + {FN (exp), ARG(1.0e+00,1.57045105981189525579e+00), RES(9.3853294721250973333e-4, 2.7182816664368240601e0)}, + {FN (exp), ARG(1.0e+00,-1.57045105981189525579e+00), RES(9.3853294721250973333e-4, -2.7182816664368240601e0)}, + {FN (exp), ARG(-1.0e+00,1.57045105981189525579e+00), RES(1.2701662223789787297e-4, 3.6787941924411912822e-1)}, + {FN (exp), ARG(-1.0e+00,-1.57045105981189525579e+00), RES(1.2701662223789787297e-4, -3.6787941924411912822e-1)}, + {FN (exp), ARG(1.0e+00,1.57114159377789786021e+00), RES(-9.3853294721217683983e-4, 2.7182816664368240602e0)}, + {FN (exp), ARG(1.0e+00,-1.57114159377789786021e+00), RES(-9.3853294721217683983e-4, -2.7182816664368240602e0)}, + {FN (exp), ARG(-1.0e+00,1.57114159377789786021e+00), RES(-1.2701662223785282074e-4, 3.6787941924411912823e-1)}, + {FN (exp), ARG(-1.0e+00,-1.57114159377789786021e+00), RES(-1.2701662223785282074e-4, -3.6787941924411912823e-1)}, + {FN (exp), ARG(1.0e+00,3.14124738660679181379e+00), RES(-2.718281666436824060e0, 9.3853294721267618008e-4)}, + {FN (exp), ARG(1.0e+00,-3.14124738660679181379e+00), RES(-2.718281666436824060e0, -9.3853294721267618008e-4)}, + {FN (exp), ARG(-1.0e+00,3.14124738660679181379e+00), RES(-3.6787941924411912821e-1, 1.2701662223792039909e-4)}, + {FN (exp), ARG(-1.0e+00,-3.14124738660679181379e+00), RES(-3.6787941924411912821e-1, -1.2701662223792039909e-4)}, + {FN (exp), ARG(1.0e+00,3.14193792057279441821e+00), RES(-2.7182816664368240603e0, -9.3853294721201039309e-4)}, + {FN (exp), ARG(1.0e+00,-3.14193792057279441821e+00), RES(-2.7182816664368240603e0, 9.3853294721201039309e-4)}, + {FN (exp), ARG(-1.0e+00,3.14193792057279441821e+00), RES(-3.6787941924411912824e-1, -1.2701662223783029462e-4)}, + {FN (exp), ARG(-1.0e+00,-3.14193792057279441821e+00), RES(-3.6787941924411912824e-1, 1.2701662223783029462e-4)}, + {FN (exp), ARG(1.0e+00,4.71204371340168837179e+00), RES(-9.3853294721284262682e-4, -2.718281666436824060e0)}, + {FN (exp), ARG(1.0e+00,-4.71204371340168837179e+00), RES(-9.3853294721284262682e-4, 2.718281666436824060e0)}, + {FN (exp), ARG(-1.0e+00,4.71204371340168837179e+00), RES(-1.2701662223794292521e-4, -3.6787941924411912820e-1)}, + {FN (exp), ARG(-1.0e+00,-4.71204371340168837179e+00), RES(-1.2701662223794292521e-4, 3.6787941924411912820e-1)}, + {FN (exp), ARG(1.0e+00,4.71273424736769097620e+00), RES(9.3853294721184394634e-4, -2.7182816664368240603e0)}, + {FN (exp), ARG(1.0e+00,-4.71273424736769097620e+00), RES(9.3853294721184394634e-4, 2.7182816664368240603e0)}, + {FN (exp), ARG(-1.0e+00,4.71273424736769097620e+00), RES(1.2701662223780776850e-4, -3.6787941924411912825e-1)}, + {FN (exp), ARG(-1.0e+00,-4.71273424736769097620e+00), RES(1.2701662223780776850e-4, 3.6787941924411912825e-1)}, + {FN (exp), ARG(1.0e+00,6.28284004019658492979e+00), RES(2.7182816664368240599e0, -9.3853294721300907357e-4)}, + {FN (exp), ARG(1.0e+00,-6.28284004019658492979e+00), RES(2.7182816664368240599e0, 9.3853294721300907357e-4)}, + {FN (exp), ARG(-1.0e+00,6.28284004019658492979e+00), RES(3.6787941924411912819e-1, -1.2701662223796545132e-4)}, + {FN (exp), ARG(-1.0e+00,-6.28284004019658492979e+00), RES(3.6787941924411912819e-1, 1.2701662223796545132e-4)}, + {FN (exp), ARG(1.0e+00,6.28353057416258753420e+00), RES(2.7182816664368240604e0, 9.3853294721167749959e-4)}, + {FN (exp), ARG(1.0e+00,-6.28353057416258753420e+00), RES(2.7182816664368240604e0, -9.3853294721167749959e-4)}, + {FN (exp), ARG(-1.0e+00,6.28353057416258753420e+00), RES(3.6787941924411912825e-1, 1.2701662223778524238e-4)}, + {FN (exp), ARG(-1.0e+00,-6.28353057416258753420e+00), RES(3.6787941924411912825e-1, -1.2701662223778524238e-4)}, + {FN (exp), ARG(1.0e+00,9.42443269378637893396e+00), RES(-2.7182816664368240606e0, 9.3853294721092764795e-4)}, + {FN (exp), ARG(1.0e+00,-9.42443269378637893396e+00), RES(-2.7182816664368240606e0, -9.3853294721092764795e-4)}, + {FN (exp), ARG(-1.0e+00,9.42443269378637893396e+00), RES(-3.6787941924411912829e-1, 1.270166222376837610e-4)}, + {FN (exp), ARG(-1.0e+00,-9.42443269378637893396e+00), RES(-3.6787941924411912829e-1, -1.270166222376837610e-4)}, + {FN (exp), ARG(1.0e+00,9.42512322775237976202e+00), RES(-2.7182816664368240613e0, -9.3853294720893028698e-4)}, + {FN (exp), ARG(1.0e+00,-9.42512322775237976202e+00), RES(-2.7182816664368240613e0, 9.3853294720893028698e-4)}, + {FN (exp), ARG(-1.0e+00,9.42512322775237976202e+00), RES(-3.6787941924411912838e-1, -1.2701662223741344759e-4)}, + {FN (exp), ARG(-1.0e+00,-9.42512322775237976202e+00), RES(-3.6787941924411912838e-1, 1.2701662223741344759e-4)}, + {FN (exp), ARG(2.0e+00,-3.45266983001243932001e-04), RES(7.3890556585085906002e0, -2.5511970558169944872e-3)}, + {FN (exp), ARG(2.0e+00,3.45266983001243932001e-04), RES(7.3890556585085906002e0, 2.5511970558169944872e-3)}, + {FN (exp), ARG(-2.0e+00,-3.45266983001243932001e-04), RES(1.3533527517000128913e-1, -4.6726804008345889445e-5)}, + {FN (exp), ARG(-2.0e+00,3.45266983001243932001e-04), RES(1.3533527517000128913e-1, 4.6726804008345889445e-5)}, + {FN (exp), ARG(2.0e+00,1.57045105981189525579e+00), RES(2.551197055817877540e-3, 7.3890556585085905999e0)}, + {FN (exp), ARG(2.0e+00,-1.57045105981189525579e+00), RES(2.551197055817877540e-3, -7.3890556585085905999e0)}, + {FN (exp), ARG(-2.0e+00,1.57045105981189525579e+00), RES(4.6726804008362063122e-5, 1.3533527517000128913e-1)}, + {FN (exp), ARG(-2.0e+00,-1.57045105981189525579e+00), RES(4.6726804008362063122e-5, -1.3533527517000128913e-1)}, + {FN (exp), ARG(2.0e+00,1.57114159377789786021e+00), RES(-2.5511970558169726417e-3, 7.3890556585085906002e0)}, + {FN (exp), ARG(2.0e+00,-1.57114159377789786021e+00), RES(-2.5511970558169726417e-3, -7.3890556585085906002e0)}, + {FN (exp), ARG(-2.0e+00,1.57114159377789786021e+00), RES(-4.6726804008345489330e-5, 1.3533527517000128913e-1)}, + {FN (exp), ARG(-2.0e+00,-1.57114159377789786021e+00), RES(-4.6726804008345489330e-5, -1.3533527517000128913e-1)}, + {FN (exp), ARG(2.0e+00,3.14124738660679181379e+00), RES(-7.3890556585085905998e0, 2.5511970558183299892e-3)}, + {FN (exp), ARG(2.0e+00,-3.14124738660679181379e+00), RES(-7.3890556585085905998e0, -2.5511970558183299892e-3)}, + {FN (exp), ARG(-2.0e+00,3.14124738660679181379e+00), RES(-1.3533527517000128912e-1, 4.6726804008370350017e-5)}, + {FN (exp), ARG(-2.0e+00,-3.14124738660679181379e+00), RES(-1.3533527517000128912e-1, -4.6726804008370350017e-5)}, + {FN (exp), ARG(2.0e+00,3.14193792057279441821e+00), RES(-7.3890556585085906004e0, -2.5511970558165201925e-3)}, + {FN (exp), ARG(2.0e+00,-3.14193792057279441821e+00), RES(-7.3890556585085906004e0, 2.5511970558165201925e-3)}, + {FN (exp), ARG(-2.0e+00,3.14193792057279441821e+00), RES(-1.3533527517000128914e-1, -4.6726804008337202435e-5)}, + {FN (exp), ARG(-2.0e+00,-3.14193792057279441821e+00), RES(-1.3533527517000128914e-1, 4.6726804008337202435e-5)}, + {FN (exp), ARG(2.0e+00,4.71204371340168837179e+00), RES(-2.5511970558187824384e-3, -7.3890556585085905996e0)}, + {FN (exp), ARG(2.0e+00,-4.71204371340168837179e+00), RES(-2.5511970558187824384e-3, 7.3890556585085905996e0)}, + {FN (exp), ARG(-2.0e+00,4.71204371340168837179e+00), RES(-4.6726804008378636913e-5, -1.3533527517000128912e-1)}, + {FN (exp), ARG(-2.0e+00,-4.71204371340168837179e+00), RES(-4.6726804008378636913e-5, 1.3533527517000128912e-1)}, + {FN (exp), ARG(2.0e+00,4.71273424736769097620e+00), RES(2.5511970558160677434e-3, -7.3890556585085906006e0)}, + {FN (exp), ARG(2.0e+00,-4.71273424736769097620e+00), RES(2.5511970558160677434e-3, 7.3890556585085906006e0)}, + {FN (exp), ARG(-2.0e+00,4.71273424736769097620e+00), RES(4.6726804008328915539e-5, -1.3533527517000128914e-1)}, + {FN (exp), ARG(-2.0e+00,-4.71273424736769097620e+00), RES(4.6726804008328915539e-5, 1.3533527517000128914e-1)}, + {FN (exp), ARG(2.0e+00,6.28284004019658492979e+00), RES(7.3890556585085905995e0, -2.5511970558192348875e-3)}, + {FN (exp), ARG(2.0e+00,-6.28284004019658492979e+00), RES(7.3890556585085905995e0, 2.5511970558192348875e-3)}, + {FN (exp), ARG(-2.0e+00,6.28284004019658492979e+00), RES(1.3533527517000128912e-1, -4.6726804008386923808e-5)}, + {FN (exp), ARG(-2.0e+00,-6.28284004019658492979e+00), RES(1.3533527517000128912e-1, 4.6726804008386923808e-5)}, + {FN (exp), ARG(2.0e+00,6.28353057416258753420e+00), RES(7.3890556585085906007e0, 2.5511970558156152942e-3)}, + {FN (exp), ARG(2.0e+00,-6.28353057416258753420e+00), RES(7.3890556585085906007e0, -2.5511970558156152942e-3)}, + {FN (exp), ARG(-2.0e+00,6.28353057416258753420e+00), RES(1.3533527517000128914e-1, 4.6726804008320628644e-5)}, + {FN (exp), ARG(-2.0e+00,-6.28353057416258753420e+00), RES(1.3533527517000128914e-1, -4.6726804008320628644e-5)}, + {FN (exp), ARG(2.0e+00,9.42443269378637893396e+00), RES(-7.3890556585085906014e0, 2.5511970558135769861e-3)}, + {FN (exp), ARG(2.0e+00,-9.42443269378637893396e+00), RES(-7.3890556585085906014e0, -2.5511970558135769861e-3)}, + {FN (exp), ARG(-2.0e+00,9.42443269378637893396e+00), RES(-1.3533527517000128916e-1, 4.6726804008283295729e-5)}, + {FN (exp), ARG(-2.0e+00,-9.42443269378637893396e+00), RES(-1.3533527517000128916e-1, -4.6726804008283295729e-5)}, + {FN (exp), ARG(2.0e+00,9.42512322775237976202e+00), RES(-7.3890556585085906033e0, -2.5511970558081475961e-3)}, + {FN (exp), ARG(2.0e+00,-9.42512322775237976202e+00), RES(-7.3890556585085906033e0, 2.5511970558081475961e-3)}, + {FN (exp), ARG(-2.0e+00,9.42512322775237976202e+00), RES(-1.3533527517000128919e-1, -4.6726804008183852982e-5)}, + {FN (exp), ARG(-2.0e+00,-9.42512322775237976202e+00), RES(-1.3533527517000128919e-1, 4.6726804008183852982e-5)}, + {FN (sin), ARG(-3.45266983001243932001e-04,0.0e+00), RES(-3.4526697614140534807e-4, 0.0)}, + {FN (sin), ARG(3.45266983001243932001e-04,0.0e+00), RES(3.4526697614140534807e-4, 0.0)}, + {FN (sin), ARG(-3.45266983001243932001e-04,1.19209289550781250e-07), RES(-3.4526697614140780134e-4, 1.1920928244535424533e-7)}, + {FN (sin), ARG(-3.45266983001243932001e-04,-1.19209289550781250e-07), RES(-3.4526697614140780134e-4, -1.1920928244535424533e-7)}, + {FN (sin), ARG(3.45266983001243932001e-04,1.19209289550781250e-07), RES(3.4526697614140780134e-4, 1.1920928244535424533e-7)}, + {FN (sin), ARG(3.45266983001243932001e-04,-1.19209289550781250e-07), RES(3.4526697614140780134e-4, -1.1920928244535424533e-7)}, + {FN (sin), ARG(-3.45266983001243932001e-04,5.0e-01), RES(-3.8933200722534065172e-4, 5.2109527443404709209e-1)}, + {FN (sin), ARG(-3.45266983001243932001e-04,-5.0e-01), RES(-3.8933200722534065172e-4, -5.2109527443404709209e-1)}, + {FN (sin), ARG(3.45266983001243932001e-04,5.0e-01), RES(3.8933200722534065172e-4, 5.2109527443404709209e-1)}, + {FN (sin), ARG(3.45266983001243932001e-04,-5.0e-01), RES(3.8933200722534065172e-4, -5.2109527443404709209e-1)}, + {FN (sin), ARG(-3.45266983001243932001e-04,1.0e+00), RES(-5.3277478472501939236e-4, 1.1752011235963524660e0)}, + {FN (sin), ARG(-3.45266983001243932001e-04,-1.0e+00), RES(-5.3277478472501939236e-4, -1.1752011235963524660e0)}, + {FN (sin), ARG(3.45266983001243932001e-04,1.0e+00), RES(5.3277478472501939236e-4, 1.1752011235963524660e0)}, + {FN (sin), ARG(3.45266983001243932001e-04,-1.0e+00), RES(5.3277478472501939236e-4, -1.1752011235963524660e0)}, + {FN (sin), ARG(-3.45266983001243932001e-04,2.0e+00), RES(-1.2989619299126701883e-3, 3.6268601916692946556e0)}, + {FN (sin), ARG(-3.45266983001243932001e-04,-2.0e+00), RES(-1.2989619299126701883e-3, -3.6268601916692946556e0)}, + {FN (sin), ARG(3.45266983001243932001e-04,2.0e+00), RES(1.2989619299126701883e-3, 3.6268601916692946556e0)}, + {FN (sin), ARG(3.45266983001243932001e-04,-2.0e+00), RES(1.2989619299126701883e-3, -3.6268601916692946556e0)}, + {FN (sin), ARG(1.57045105981189525579e+00,0.0e+00), RES(9.9999994039535581669e-1, 0.0)}, + {FN (sin), ARG(-1.57045105981189525579e+00,0.0e+00), RES(-9.9999994039535581669e-1, 0.0)}, + {FN (sin), ARG(1.57045105981189525579e+00,1.19209289550781250e-07), RES(9.9999994039536292211e-1, 4.1159030931177815679e-11)}, + {FN (sin), ARG(1.57045105981189525579e+00,-1.19209289550781250e-07), RES(9.9999994039536292211e-1, -4.1159030931177815679e-11)}, + {FN (sin), ARG(-1.57045105981189525579e+00,1.19209289550781250e-07), RES(-9.9999994039536292211e-1, 4.1159030931177815679e-11)}, + {FN (sin), ARG(-1.57045105981189525579e+00,-1.19209289550781250e-07), RES(-9.9999994039536292211e-1, -4.1159030931177815679e-11)}, + {FN (sin), ARG(1.57045105981189525579e+00,5.0e-01), RES(1.1276258979946363572e0, 1.7991700040937027667e-4)}, + {FN (sin), ARG(1.57045105981189525579e+00,-5.0e-01), RES(1.1276258979946363572e0, -1.7991700040937027667e-4)}, + {FN (sin), ARG(-1.57045105981189525579e+00,5.0e-01), RES(-1.1276258979946363572e0, 1.7991700040937027667e-4)}, + {FN (sin), ARG(-1.57045105981189525579e+00,-5.0e-01), RES(-1.1276258979946363572e0, -1.7991700040937027667e-4)}, + {FN (sin), ARG(1.57045105981189525579e+00,1.0e+00), RES(1.5430805428404715942e0, 4.0575816248730593018e-4)}, + {FN (sin), ARG(1.57045105981189525579e+00,-1.0e+00), RES(1.5430805428404715942e0, -4.0575816248730593018e-4)}, + {FN (sin), ARG(-1.57045105981189525579e+00,1.0e+00), RES(-1.5430805428404715942e0, 4.0575816248730593018e-4)}, + {FN (sin), ARG(-1.57045105981189525579e+00,-1.0e+00), RES(-1.5430805428404715942e0, -4.0575816248730593018e-4)}, + {FN (sin), ARG(1.57045105981189525579e+00,2.0e+00), RES(3.7621954668392959445e0, 1.2522351259047577385e-3)}, + {FN (sin), ARG(1.57045105981189525579e+00,-2.0e+00), RES(3.7621954668392959445e0, -1.2522351259047577385e-3)}, + {FN (sin), ARG(-1.57045105981189525579e+00,2.0e+00), RES(-3.7621954668392959445e0, 1.2522351259047577385e-3)}, + {FN (sin), ARG(-1.57045105981189525579e+00,-2.0e+00), RES(-3.7621954668392959445e0, -1.2522351259047577385e-3)}, + {FN (sin), ARG(1.57114159377789786021e+00,0.0e+00), RES(9.9999994039535581673e-1, 0.0)}, + {FN (sin), ARG(-1.57114159377789786021e+00,0.0e+00), RES(-9.9999994039535581673e-1, 0.0)}, + {FN (sin), ARG(1.57114159377789786021e+00,1.19209289550781250e-07), RES(9.9999994039536292216e-1, -4.1159030931163216752e-11)}, + {FN (sin), ARG(1.57114159377789786021e+00,-1.19209289550781250e-07), RES(9.9999994039536292216e-1, 4.1159030931163216752e-11)}, + {FN (sin), ARG(-1.57114159377789786021e+00,1.19209289550781250e-07), RES(-9.9999994039536292216e-1, -4.1159030931163216752e-11)}, + {FN (sin), ARG(-1.57114159377789786021e+00,-1.19209289550781250e-07), RES(-9.9999994039536292216e-1, 4.1159030931163216752e-11)}, + {FN (sin), ARG(1.57114159377789786021e+00,5.0e-01), RES(1.1276258979946363573e0, -1.7991700040930646090e-4)}, + {FN (sin), ARG(1.57114159377789786021e+00,-5.0e-01), RES(1.1276258979946363573e0, 1.7991700040930646090e-4)}, + {FN (sin), ARG(-1.57114159377789786021e+00,5.0e-01), RES(-1.1276258979946363573e0, -1.7991700040930646090e-4)}, + {FN (sin), ARG(-1.57114159377789786021e+00,-5.0e-01), RES(-1.1276258979946363573e0, 1.7991700040930646090e-4)}, + {FN (sin), ARG(1.57114159377789786021e+00,1.0e+00), RES(1.5430805428404715942e0, -4.0575816248716200955e-4)}, + {FN (sin), ARG(1.57114159377789786021e+00,-1.0e+00), RES(1.5430805428404715942e0, 4.0575816248716200955e-4)}, + {FN (sin), ARG(-1.57114159377789786021e+00,1.0e+00), RES(-1.5430805428404715942e0, -4.0575816248716200955e-4)}, + {FN (sin), ARG(-1.57114159377789786021e+00,-1.0e+00), RES(-1.5430805428404715942e0, 4.0575816248716200955e-4)}, + {FN (sin), ARG(1.57114159377789786021e+00,2.0e+00), RES(3.7621954668392959447e0, -1.2522351259043135762e-3)}, + {FN (sin), ARG(1.57114159377789786021e+00,-2.0e+00), RES(3.7621954668392959447e0, 1.2522351259043135762e-3)}, + {FN (sin), ARG(-1.57114159377789786021e+00,2.0e+00), RES(-3.7621954668392959447e0, -1.2522351259043135762e-3)}, + {FN (sin), ARG(-1.57114159377789786021e+00,-2.0e+00), RES(-3.7621954668392959447e0, 1.2522351259043135762e-3)}, + {FN (sin), ARG(3.14124738660679181379e+00,0.0e+00), RES(3.4526697614158608860e-4, 0.0)}, + {FN (sin), ARG(-3.14124738660679181379e+00,0.0e+00), RES(-3.4526697614158608860e-4, 0.0)}, + {FN (sin), ARG(3.14124738660679181379e+00,1.19209289550781250e-07), RES(3.4526697614158854187e-4, -1.1920928244535424532e-7)}, + {FN (sin), ARG(3.14124738660679181379e+00,-1.19209289550781250e-07), RES(3.4526697614158854187e-4, 1.1920928244535424532e-7)}, + {FN (sin), ARG(-3.14124738660679181379e+00,1.19209289550781250e-07), RES(-3.4526697614158854187e-4, -1.1920928244535424532e-7)}, + {FN (sin), ARG(-3.14124738660679181379e+00,-1.19209289550781250e-07), RES(-3.4526697614158854187e-4, 1.1920928244535424532e-7)}, + {FN (sin), ARG(3.14124738660679181379e+00,5.0e-01), RES(3.8933200722554445944e-4, -5.2109527443404709206e-1)}, + {FN (sin), ARG(3.14124738660679181379e+00,-5.0e-01), RES(3.8933200722554445944e-4, 5.2109527443404709206e-1)}, + {FN (sin), ARG(-3.14124738660679181379e+00,5.0e-01), RES(-3.8933200722554445944e-4, -5.2109527443404709206e-1)}, + {FN (sin), ARG(-3.14124738660679181379e+00,-5.0e-01), RES(-3.8933200722554445944e-4, 5.2109527443404709206e-1)}, + {FN (sin), ARG(3.14124738660679181379e+00,1.0e+00), RES(5.3277478472529828958e-4, -1.1752011235963524659e0)}, + {FN (sin), ARG(3.14124738660679181379e+00,-1.0e+00), RES(5.3277478472529828958e-4, 1.1752011235963524659e0)}, + {FN (sin), ARG(-3.14124738660679181379e+00,1.0e+00), RES(-5.3277478472529828958e-4, -1.1752011235963524659e0)}, + {FN (sin), ARG(-3.14124738660679181379e+00,-1.0e+00), RES(-5.3277478472529828958e-4, 1.1752011235963524659e0)}, + {FN (sin), ARG(3.14124738660679181379e+00,2.0e+00), RES(1.2989619299133501696e-3, -3.6268601916692946553e0)}, + {FN (sin), ARG(3.14124738660679181379e+00,-2.0e+00), RES(1.2989619299133501696e-3, 3.6268601916692946553e0)}, + {FN (sin), ARG(-3.14124738660679181379e+00,2.0e+00), RES(-1.2989619299133501696e-3, -3.6268601916692946553e0)}, + {FN (sin), ARG(-3.14124738660679181379e+00,-2.0e+00), RES(-1.2989619299133501696e-3, 3.6268601916692946553e0)}, + {FN (sin), ARG(3.14193792057279441821e+00,0.0e+00), RES(-3.4526697614134115926e-4, 0.0)}, + {FN (sin), ARG(-3.14193792057279441821e+00,0.0e+00), RES(3.4526697614134115926e-4, 0.0)}, + {FN (sin), ARG(3.14193792057279441821e+00,1.19209289550781250e-07), RES(-3.4526697614134361253e-4, -1.1920928244535424533e-7)}, + {FN (sin), ARG(3.14193792057279441821e+00,-1.19209289550781250e-07), RES(-3.4526697614134361253e-4, 1.1920928244535424533e-7)}, + {FN (sin), ARG(-3.14193792057279441821e+00,1.19209289550781250e-07), RES(3.4526697614134361253e-4, -1.1920928244535424533e-7)}, + {FN (sin), ARG(-3.14193792057279441821e+00,-1.19209289550781250e-07), RES(3.4526697614134361253e-4, 1.1920928244535424533e-7)}, + {FN (sin), ARG(3.14193792057279441821e+00,5.0e-01), RES(-3.8933200722526827075e-4, -5.2109527443404709211e-1)}, + {FN (sin), ARG(3.14193792057279441821e+00,-5.0e-01), RES(-3.8933200722526827075e-4, 5.2109527443404709211e-1)}, + {FN (sin), ARG(-3.14193792057279441821e+00,5.0e-01), RES(3.8933200722526827075e-4, -5.2109527443404709211e-1)}, + {FN (sin), ARG(-3.14193792057279441821e+00,-5.0e-01), RES(3.8933200722526827075e-4, 5.2109527443404709211e-1)}, + {FN (sin), ARG(3.14193792057279441821e+00,1.0e+00), RES(-5.3277478472492034385e-4, -1.1752011235963524660e0)}, + {FN (sin), ARG(3.14193792057279441821e+00,-1.0e+00), RES(-5.3277478472492034385e-4, 1.1752011235963524660e0)}, + {FN (sin), ARG(-3.14193792057279441821e+00,1.0e+00), RES(5.3277478472492034385e-4, -1.1752011235963524660e0)}, + {FN (sin), ARG(-3.14193792057279441821e+00,-1.0e+00), RES(5.3277478472492034385e-4, 1.1752011235963524660e0)}, + {FN (sin), ARG(3.14193792057279441821e+00,2.0e+00), RES(-1.2989619299124286975e-3, -3.6268601916692946556e0)}, + {FN (sin), ARG(3.14193792057279441821e+00,-2.0e+00), RES(-1.2989619299124286975e-3, 3.6268601916692946556e0)}, + {FN (sin), ARG(-3.14193792057279441821e+00,2.0e+00), RES(1.2989619299124286975e-3, -3.6268601916692946556e0)}, + {FN (sin), ARG(-3.14193792057279441821e+00,-2.0e+00), RES(1.2989619299124286975e-3, 3.6268601916692946556e0)}, + {FN (sin), ARG(4.71204371340168837179e+00,0.0e+00), RES(-9.9999994039535581664e-1, 0.0)}, + {FN (sin), ARG(-4.71204371340168837179e+00,0.0e+00), RES(9.9999994039535581664e-1, 0.0)}, + {FN (sin), ARG(4.71204371340168837179e+00,1.19209289550781250e-07), RES(-9.9999994039536292207e-1, -4.1159030931192414605e-11)}, + {FN (sin), ARG(4.71204371340168837179e+00,-1.19209289550781250e-07), RES(-9.9999994039536292207e-1, 4.1159030931192414605e-11)}, + {FN (sin), ARG(-4.71204371340168837179e+00,1.19209289550781250e-07), RES(9.9999994039536292207e-1, -4.1159030931192414605e-11)}, + {FN (sin), ARG(-4.71204371340168837179e+00,-1.19209289550781250e-07), RES(9.9999994039536292207e-1, 4.1159030931192414605e-11)}, + {FN (sin), ARG(4.71204371340168837179e+00,5.0e-01), RES(-1.1276258979946363572e0, -1.7991700040943409243e-4)}, + {FN (sin), ARG(4.71204371340168837179e+00,-5.0e-01), RES(-1.1276258979946363572e0, 1.7991700040943409243e-4)}, + {FN (sin), ARG(-4.71204371340168837179e+00,5.0e-01), RES(1.1276258979946363572e0, -1.7991700040943409243e-4)}, + {FN (sin), ARG(-4.71204371340168837179e+00,-5.0e-01), RES(1.1276258979946363572e0, 1.7991700040943409243e-4)}, + {FN (sin), ARG(4.71204371340168837179e+00,1.0e+00), RES(-1.5430805428404715941e0, -4.0575816248744985081e-4)}, + {FN (sin), ARG(4.71204371340168837179e+00,-1.0e+00), RES(-1.5430805428404715941e0, 4.0575816248744985081e-4)}, + {FN (sin), ARG(-4.71204371340168837179e+00,1.0e+00), RES(1.5430805428404715941e0, -4.0575816248744985081e-4)}, + {FN (sin), ARG(-4.71204371340168837179e+00,-1.0e+00), RES(1.5430805428404715941e0, 4.0575816248744985081e-4)}, + {FN (sin), ARG(4.71204371340168837179e+00,2.0e+00), RES(-3.7621954668392959444e0, -1.2522351259052019007e-3)}, + {FN (sin), ARG(4.71204371340168837179e+00,-2.0e+00), RES(-3.7621954668392959444e0, 1.2522351259052019007e-3)}, + {FN (sin), ARG(-4.71204371340168837179e+00,2.0e+00), RES(3.7621954668392959444e0, -1.2522351259052019007e-3)}, + {FN (sin), ARG(-4.71204371340168837179e+00,-2.0e+00), RES(3.7621954668392959444e0, 1.2522351259052019007e-3)}, + {FN (sin), ARG(4.71273424736769097620e+00,0.0e+00), RES(-9.9999994039535581677e-1, 0.0)}, + {FN (sin), ARG(-4.71273424736769097620e+00,0.0e+00), RES(9.9999994039535581677e-1, 0.0)}, + {FN (sin), ARG(4.71273424736769097620e+00,1.19209289550781250e-07), RES(-9.9999994039536292220e-1, 4.1159030931148617825e-11)}, + {FN (sin), ARG(4.71273424736769097620e+00,-1.19209289550781250e-07), RES(-9.9999994039536292220e-1, -4.1159030931148617825e-11)}, + {FN (sin), ARG(-4.71273424736769097620e+00,1.19209289550781250e-07), RES(9.9999994039536292220e-1, 4.1159030931148617825e-11)}, + {FN (sin), ARG(-4.71273424736769097620e+00,-1.19209289550781250e-07), RES(9.9999994039536292220e-1, -4.1159030931148617825e-11)}, + {FN (sin), ARG(4.71273424736769097620e+00,5.0e-01), RES(-1.1276258979946363573e0, 1.7991700040924264514e-4)}, + {FN (sin), ARG(4.71273424736769097620e+00,-5.0e-01), RES(-1.1276258979946363573e0, -1.7991700040924264514e-4)}, + {FN (sin), ARG(-4.71273424736769097620e+00,5.0e-01), RES(1.1276258979946363573e0, 1.7991700040924264514e-4)}, + {FN (sin), ARG(-4.71273424736769097620e+00,-5.0e-01), RES(1.1276258979946363573e0, -1.7991700040924264514e-4)}, + {FN (sin), ARG(4.71273424736769097620e+00,1.0e+00), RES(-1.5430805428404715943e0, 4.0575816248701808892e-4)}, + {FN (sin), ARG(4.71273424736769097620e+00,-1.0e+00), RES(-1.5430805428404715943e0, -4.0575816248701808892e-4)}, + {FN (sin), ARG(-4.71273424736769097620e+00,1.0e+00), RES(1.5430805428404715943e0, 4.0575816248701808892e-4)}, + {FN (sin), ARG(-4.71273424736769097620e+00,-1.0e+00), RES(1.5430805428404715943e0, -4.0575816248701808892e-4)}, + {FN (sin), ARG(4.71273424736769097620e+00,2.0e+00), RES(-3.7621954668392959448e0, 1.2522351259038694139e-3)}, + {FN (sin), ARG(4.71273424736769097620e+00,-2.0e+00), RES(-3.7621954668392959448e0, -1.2522351259038694139e-3)}, + {FN (sin), ARG(-4.71273424736769097620e+00,2.0e+00), RES(3.7621954668392959448e0, 1.2522351259038694139e-3)}, + {FN (sin), ARG(-4.71273424736769097620e+00,-2.0e+00), RES(3.7621954668392959448e0, -1.2522351259038694139e-3)}, + {FN (sin), ARG(6.28284004019658492979e+00,0.0e+00), RES(-3.4526697614170855328e-4, 0.0)}, + {FN (sin), ARG(-6.28284004019658492979e+00,0.0e+00), RES(3.4526697614170855328e-4, 0.0)}, + {FN (sin), ARG(6.28284004019658492979e+00,1.19209289550781250e-07), RES(-3.4526697614171100655e-4, 1.1920928244535424532e-7)}, + {FN (sin), ARG(6.28284004019658492979e+00,-1.19209289550781250e-07), RES(-3.4526697614171100655e-4, -1.1920928244535424532e-7)}, + {FN (sin), ARG(-6.28284004019658492979e+00,1.19209289550781250e-07), RES(3.4526697614171100655e-4, 1.1920928244535424532e-7)}, + {FN (sin), ARG(-6.28284004019658492979e+00,-1.19209289550781250e-07), RES(3.4526697614171100655e-4, -1.1920928244535424532e-7)}, + {FN (sin), ARG(6.28284004019658492979e+00,5.0e-01), RES(-3.8933200722568255379e-4, 5.2109527443404709204e-1)}, + {FN (sin), ARG(6.28284004019658492979e+00,-5.0e-01), RES(-3.8933200722568255379e-4, -5.2109527443404709204e-1)}, + {FN (sin), ARG(-6.28284004019658492979e+00,5.0e-01), RES(3.8933200722568255379e-4, 5.2109527443404709204e-1)}, + {FN (sin), ARG(-6.28284004019658492979e+00,-5.0e-01), RES(3.8933200722568255379e-4, -5.2109527443404709204e-1)}, + {FN (sin), ARG(6.28284004019658492979e+00,1.0e+00), RES(-5.3277478472548726245e-4, 1.1752011235963524659e0)}, + {FN (sin), ARG(6.28284004019658492979e+00,-1.0e+00), RES(-5.3277478472548726245e-4, -1.1752011235963524659e0)}, + {FN (sin), ARG(-6.28284004019658492979e+00,1.0e+00), RES(5.3277478472548726245e-4, 1.1752011235963524659e0)}, + {FN (sin), ARG(-6.28284004019658492979e+00,-1.0e+00), RES(5.3277478472548726245e-4, -1.1752011235963524659e0)}, + {FN (sin), ARG(6.28284004019658492979e+00,2.0e+00), RES(-1.2989619299138109057e-3, 3.6268601916692946552e0)}, + {FN (sin), ARG(6.28284004019658492979e+00,-2.0e+00), RES(-1.2989619299138109057e-3, -3.6268601916692946552e0)}, + {FN (sin), ARG(-6.28284004019658492979e+00,2.0e+00), RES(1.2989619299138109057e-3, 3.6268601916692946552e0)}, + {FN (sin), ARG(-6.28284004019658492979e+00,-2.0e+00), RES(1.2989619299138109057e-3, -3.6268601916692946552e0)}, + {FN (sin), ARG(6.28353057416258753420e+00,0.0e+00), RES(3.4526697614121869459e-4, 0.0)}, + {FN (sin), ARG(-6.28353057416258753420e+00,0.0e+00), RES(-3.4526697614121869459e-4, 0.0)}, + {FN (sin), ARG(6.28353057416258753420e+00,1.19209289550781250e-07), RES(3.4526697614122114786e-4, 1.1920928244535424534e-7)}, + {FN (sin), ARG(6.28353057416258753420e+00,-1.19209289550781250e-07), RES(3.4526697614122114786e-4, -1.1920928244535424534e-7)}, + {FN (sin), ARG(-6.28353057416258753420e+00,1.19209289550781250e-07), RES(-3.4526697614122114786e-4, 1.1920928244535424534e-7)}, + {FN (sin), ARG(-6.28353057416258753420e+00,-1.19209289550781250e-07), RES(-3.4526697614122114786e-4, -1.1920928244535424534e-7)}, + {FN (sin), ARG(6.28353057416258753420e+00,5.0e-01), RES(3.8933200722513017641e-4, 5.2109527443404709213e-1)}, + {FN (sin), ARG(6.28353057416258753420e+00,-5.0e-01), RES(3.8933200722513017641e-4, -5.2109527443404709213e-1)}, + {FN (sin), ARG(-6.28353057416258753420e+00,5.0e-01), RES(-3.8933200722513017641e-4, 5.2109527443404709213e-1)}, + {FN (sin), ARG(-6.28353057416258753420e+00,-5.0e-01), RES(-3.8933200722513017641e-4, -5.2109527443404709213e-1)}, + {FN (sin), ARG(6.28353057416258753420e+00,1.0e+00), RES(5.3277478472473137099e-4, 1.1752011235963524661e0)}, + {FN (sin), ARG(6.28353057416258753420e+00,-1.0e+00), RES(5.3277478472473137099e-4, -1.1752011235963524661e0)}, + {FN (sin), ARG(-6.28353057416258753420e+00,1.0e+00), RES(-5.3277478472473137099e-4, 1.1752011235963524661e0)}, + {FN (sin), ARG(-6.28353057416258753420e+00,-1.0e+00), RES(-5.3277478472473137099e-4, -1.1752011235963524661e0)}, + {FN (sin), ARG(6.28353057416258753420e+00,2.0e+00), RES(1.2989619299119679614e-3, 3.6268601916692946558e0)}, + {FN (sin), ARG(6.28353057416258753420e+00,-2.0e+00), RES(1.2989619299119679614e-3, -3.6268601916692946558e0)}, + {FN (sin), ARG(-6.28353057416258753420e+00,2.0e+00), RES(-1.2989619299119679614e-3, 3.6268601916692946558e0)}, + {FN (sin), ARG(-6.28353057416258753420e+00,-2.0e+00), RES(-1.2989619299119679614e-3, -3.6268601916692946558e0)}, + {FN (sin), ARG(9.42443269378637893396e+00,0.0e+00), RES(3.4526697614094283958e-4, 0.0)}, + {FN (sin), ARG(-9.42443269378637893396e+00,0.0e+00), RES(-3.4526697614094283958e-4, 0.0)}, + {FN (sin), ARG(9.42443269378637893396e+00,1.19209289550781250e-07), RES(3.4526697614094529285e-4, -1.1920928244535424535e-7)}, + {FN (sin), ARG(9.42443269378637893396e+00,-1.19209289550781250e-07), RES(3.4526697614094529285e-4, 1.1920928244535424535e-7)}, + {FN (sin), ARG(-9.42443269378637893396e+00,1.19209289550781250e-07), RES(-3.4526697614094529285e-4, -1.1920928244535424535e-7)}, + {FN (sin), ARG(-9.42443269378637893396e+00,-1.19209289550781250e-07), RES(-3.4526697614094529285e-4, 1.1920928244535424535e-7)}, + {FN (sin), ARG(9.42443269378637893396e+00,5.0e-01), RES(3.8933200722481911514e-4, -5.2109527443404709218e-1)}, + {FN (sin), ARG(9.42443269378637893396e+00,-5.0e-01), RES(3.8933200722481911514e-4, 5.2109527443404709218e-1)}, + {FN (sin), ARG(-9.42443269378637893396e+00,5.0e-01), RES(-3.8933200722481911514e-4, -5.2109527443404709218e-1)}, + {FN (sin), ARG(-9.42443269378637893396e+00,-5.0e-01), RES(-3.8933200722481911514e-4, 5.2109527443404709218e-1)}, + {FN (sin), ARG(9.42443269378637893396e+00,1.0e+00), RES(5.3277478472430570447e-4, -1.1752011235963524662e0)}, + {FN (sin), ARG(9.42443269378637893396e+00,-1.0e+00), RES(5.3277478472430570447e-4, 1.1752011235963524662e0)}, + {FN (sin), ARG(-9.42443269378637893396e+00,1.0e+00), RES(-5.3277478472430570447e-4, -1.1752011235963524662e0)}, + {FN (sin), ARG(-9.42443269378637893396e+00,-1.0e+00), RES(-5.3277478472430570447e-4, 1.1752011235963524662e0)}, + {FN (sin), ARG(9.42443269378637893396e+00,2.0e+00), RES(1.2989619299109301409e-3, -3.6268601916692946561e0)}, + {FN (sin), ARG(9.42443269378637893396e+00,-2.0e+00), RES(1.2989619299109301409e-3, 3.6268601916692946561e0)}, + {FN (sin), ARG(-9.42443269378637893396e+00,2.0e+00), RES(-1.2989619299109301409e-3, -3.6268601916692946561e0)}, + {FN (sin), ARG(-9.42443269378637893396e+00,-2.0e+00), RES(-1.2989619299109301409e-3, 3.6268601916692946561e0)}, + {FN (sin), ARG(9.42512322775237976202e+00,0.0e+00), RES(-3.4526697614020805155e-4, 0.0)}, + {FN (sin), ARG(-9.42512322775237976202e+00,0.0e+00), RES(3.4526697614020805155e-4, 0.0)}, + {FN (sin), ARG(9.42512322775237976202e+00,1.19209289550781250e-07), RES(-3.4526697614021050482e-4, -1.1920928244535424538e-7)}, + {FN (sin), ARG(9.42512322775237976202e+00,-1.19209289550781250e-07), RES(-3.4526697614021050482e-4, 1.1920928244535424538e-7)}, + {FN (sin), ARG(-9.42512322775237976202e+00,1.19209289550781250e-07), RES(3.4526697614021050482e-4, -1.1920928244535424538e-7)}, + {FN (sin), ARG(-9.42512322775237976202e+00,-1.19209289550781250e-07), RES(3.4526697614021050482e-4, 1.1920928244535424538e-7)}, + {FN (sin), ARG(9.42512322775237976202e+00,5.0e-01), RES(-3.8933200722399054908e-4, -5.2109527443404709231e-1)}, + {FN (sin), ARG(9.42512322775237976202e+00,-5.0e-01), RES(-3.8933200722399054908e-4, 5.2109527443404709231e-1)}, + {FN (sin), ARG(-9.42512322775237976202e+00,5.0e-01), RES(3.8933200722399054908e-4, -5.2109527443404709231e-1)}, + {FN (sin), ARG(-9.42512322775237976202e+00,-5.0e-01), RES(3.8933200722399054908e-4, 5.2109527443404709231e-1)}, + {FN (sin), ARG(9.42512322775237976202e+00,1.0e+00), RES(-5.3277478472317186729e-4, -1.1752011235963524665e0)}, + {FN (sin), ARG(9.42512322775237976202e+00,-1.0e+00), RES(-5.3277478472317186729e-4, 1.1752011235963524665e0)}, + {FN (sin), ARG(-9.42512322775237976202e+00,1.0e+00), RES(5.3277478472317186729e-4, -1.1752011235963524665e0)}, + {FN (sin), ARG(-9.42512322775237976202e+00,-1.0e+00), RES(5.3277478472317186729e-4, 1.1752011235963524665e0)}, + {FN (sin), ARG(9.42512322775237976202e+00,2.0e+00), RES(-1.2989619299081657245e-3, -3.6268601916692946571e0)}, + {FN (sin), ARG(9.42512322775237976202e+00,-2.0e+00), RES(-1.2989619299081657245e-3, 3.6268601916692946571e0)}, + {FN (sin), ARG(-9.42512322775237976202e+00,2.0e+00), RES(1.2989619299081657245e-3, -3.6268601916692946571e0)}, + {FN (sin), ARG(-9.42512322775237976202e+00,-2.0e+00), RES(1.2989619299081657245e-3, 3.6268601916692946571e0)}, + {FN (cos), ARG(-3.45266983001243932001e-04,0.0e+00), RES(9.9999994039535581673e-1, 0.0)}, + {FN (cos), ARG(3.45266983001243932001e-04,0.0e+00), RES(9.9999994039535581673e-1, 0.0)}, + {FN (cos), ARG(-3.45266983001243932001e-04,1.19209289550781250e-07), RES(9.9999994039536292216e-1, 4.1159030931163569191e-11)}, + {FN (cos), ARG(-3.45266983001243932001e-04,-1.19209289550781250e-07), RES(9.9999994039536292216e-1, -4.1159030931163569191e-11)}, + {FN (cos), ARG(3.45266983001243932001e-04,1.19209289550781250e-07), RES(9.9999994039536292216e-1, -4.1159030931163569191e-11)}, + {FN (cos), ARG(3.45266983001243932001e-04,-1.19209289550781250e-07), RES(9.9999994039536292216e-1, 4.1159030931163569191e-11)}, + {FN (cos), ARG(-3.45266983001243932001e-04,5.0e-01), RES(1.1276258979946363573e0, 1.7991700040930800151e-4)}, + {FN (cos), ARG(-3.45266983001243932001e-04,-5.0e-01), RES(1.1276258979946363573e0, -1.7991700040930800151e-4)}, + {FN (cos), ARG(3.45266983001243932001e-04,5.0e-01), RES(1.1276258979946363573e0, -1.7991700040930800151e-4)}, + {FN (cos), ARG(3.45266983001243932001e-04,-5.0e-01), RES(1.1276258979946363573e0, 1.7991700040930800151e-4)}, + {FN (cos), ARG(-3.45266983001243932001e-04,1.0e+00), RES(1.5430805428404715942e0, 4.057581624871654840e-4)}, + {FN (cos), ARG(-3.45266983001243932001e-04,-1.0e+00), RES(1.5430805428404715942e0, -4.057581624871654840e-4)}, + {FN (cos), ARG(3.45266983001243932001e-04,1.0e+00), RES(1.5430805428404715942e0, -4.057581624871654840e-4)}, + {FN (cos), ARG(3.45266983001243932001e-04,-1.0e+00), RES(1.5430805428404715942e0, 4.057581624871654840e-4)}, + {FN (cos), ARG(-3.45266983001243932001e-04,2.0e+00), RES(3.7621954668392959447e0, 1.2522351259043242989e-3)}, + {FN (cos), ARG(-3.45266983001243932001e-04,-2.0e+00), RES(3.7621954668392959447e0, -1.2522351259043242989e-3)}, + {FN (cos), ARG(3.45266983001243932001e-04,2.0e+00), RES(3.7621954668392959447e0, -1.2522351259043242989e-3)}, + {FN (cos), ARG(3.45266983001243932001e-04,-2.0e+00), RES(3.7621954668392959447e0, 1.2522351259043242989e-3)}, + {FN (cos), ARG(1.57045105981189525579e+00,0.0e+00), RES(3.4526697614152485627e-4, 0.0)}, + {FN (cos), ARG(-1.57045105981189525579e+00,0.0e+00), RES(3.4526697614152485627e-4, 0.0)}, + {FN (cos), ARG(1.57045105981189525579e+00,1.19209289550781250e-07), RES(3.4526697614152730954e-4, -1.1920928244535424532e-7)}, + {FN (cos), ARG(1.57045105981189525579e+00,-1.19209289550781250e-07), RES(3.4526697614152730954e-4, 1.1920928244535424532e-7)}, + {FN (cos), ARG(-1.57045105981189525579e+00,1.19209289550781250e-07), RES(3.4526697614152730954e-4, 1.1920928244535424532e-7)}, + {FN (cos), ARG(-1.57045105981189525579e+00,-1.19209289550781250e-07), RES(3.4526697614152730954e-4, -1.1920928244535424532e-7)}, + {FN (cos), ARG(1.57045105981189525579e+00,5.0e-01), RES(3.8933200722547541227e-4, -5.2109527443404709207e-1)}, + {FN (cos), ARG(1.57045105981189525579e+00,-5.0e-01), RES(3.8933200722547541227e-4, 5.2109527443404709207e-1)}, + {FN (cos), ARG(-1.57045105981189525579e+00,5.0e-01), RES(3.8933200722547541227e-4, 5.2109527443404709207e-1)}, + {FN (cos), ARG(-1.57045105981189525579e+00,-5.0e-01), RES(3.8933200722547541227e-4, -5.2109527443404709207e-1)}, + {FN (cos), ARG(1.57045105981189525579e+00,1.0e+00), RES(5.3277478472520380315e-4, -1.1752011235963524659e0)}, + {FN (cos), ARG(1.57045105981189525579e+00,-1.0e+00), RES(5.3277478472520380315e-4, 1.1752011235963524659e0)}, + {FN (cos), ARG(-1.57045105981189525579e+00,1.0e+00), RES(5.3277478472520380315e-4, 1.1752011235963524659e0)}, + {FN (cos), ARG(-1.57045105981189525579e+00,-1.0e+00), RES(5.3277478472520380315e-4, -1.1752011235963524659e0)}, + {FN (cos), ARG(1.57045105981189525579e+00,2.0e+00), RES(1.2989619299131198016e-3, -3.6268601916692946554e0)}, + {FN (cos), ARG(1.57045105981189525579e+00,-2.0e+00), RES(1.2989619299131198016e-3, 3.6268601916692946554e0)}, + {FN (cos), ARG(-1.57045105981189525579e+00,2.0e+00), RES(1.2989619299131198016e-3, 3.6268601916692946554e0)}, + {FN (cos), ARG(-1.57045105981189525579e+00,-2.0e+00), RES(1.2989619299131198016e-3, -3.6268601916692946554e0)}, + {FN (cos), ARG(1.57114159377789786021e+00,0.0e+00), RES(-3.4526697614140239160e-4, 0.0)}, + {FN (cos), ARG(-1.57114159377789786021e+00,0.0e+00), RES(-3.4526697614140239160e-4, 0.0)}, + {FN (cos), ARG(1.57114159377789786021e+00,1.19209289550781250e-07), RES(-3.4526697614140484486e-4, -1.1920928244535424533e-7)}, + {FN (cos), ARG(1.57114159377789786021e+00,-1.19209289550781250e-07), RES(-3.4526697614140484486e-4, 1.1920928244535424533e-7)}, + {FN (cos), ARG(-1.57114159377789786021e+00,1.19209289550781250e-07), RES(-3.4526697614140484486e-4, 1.1920928244535424533e-7)}, + {FN (cos), ARG(-1.57114159377789786021e+00,-1.19209289550781250e-07), RES(-3.4526697614140484486e-4, -1.1920928244535424533e-7)}, + {FN (cos), ARG(1.57114159377789786021e+00,5.0e-01), RES(-3.8933200722533731792e-4, -5.2109527443404709209e-1)}, + {FN (cos), ARG(1.57114159377789786021e+00,-5.0e-01), RES(-3.8933200722533731792e-4, 5.2109527443404709209e-1)}, + {FN (cos), ARG(-1.57114159377789786021e+00,5.0e-01), RES(-3.8933200722533731792e-4, 5.2109527443404709209e-1)}, + {FN (cos), ARG(-1.57114159377789786021e+00,-5.0e-01), RES(-3.8933200722533731792e-4, -5.2109527443404709209e-1)}, + {FN (cos), ARG(1.57114159377789786021e+00,1.0e+00), RES(-5.3277478472501483029e-4, -1.1752011235963524660e0)}, + {FN (cos), ARG(1.57114159377789786021e+00,-1.0e+00), RES(-5.3277478472501483029e-4, 1.1752011235963524660e0)}, + {FN (cos), ARG(-1.57114159377789786021e+00,1.0e+00), RES(-5.3277478472501483029e-4, 1.1752011235963524660e0)}, + {FN (cos), ARG(-1.57114159377789786021e+00,-1.0e+00), RES(-5.3277478472501483029e-4, -1.1752011235963524660e0)}, + {FN (cos), ARG(1.57114159377789786021e+00,2.0e+00), RES(-1.2989619299126590655e-3, -3.6268601916692946556e0)}, + {FN (cos), ARG(1.57114159377789786021e+00,-2.0e+00), RES(-1.2989619299126590655e-3, 3.6268601916692946556e0)}, + {FN (cos), ARG(-1.57114159377789786021e+00,2.0e+00), RES(-1.2989619299126590655e-3, 3.6268601916692946556e0)}, + {FN (cos), ARG(-1.57114159377789786021e+00,-2.0e+00), RES(-1.2989619299126590655e-3, -3.6268601916692946556e0)}, + {FN (cos), ARG(3.14124738660679181379e+00,0.0e+00), RES(-9.9999994039535581667e-1, 0.0)}, + {FN (cos), ARG(-3.14124738660679181379e+00,0.0e+00), RES(-9.9999994039535581667e-1, 0.0)}, + {FN (cos), ARG(3.14124738660679181379e+00,1.19209289550781250e-07), RES(-9.9999994039536292209e-1, -4.1159030931185115142e-11)}, + {FN (cos), ARG(3.14124738660679181379e+00,-1.19209289550781250e-07), RES(-9.9999994039536292209e-1, 4.1159030931185115142e-11)}, + {FN (cos), ARG(-3.14124738660679181379e+00,1.19209289550781250e-07), RES(-9.9999994039536292209e-1, 4.1159030931185115142e-11)}, + {FN (cos), ARG(-3.14124738660679181379e+00,-1.19209289550781250e-07), RES(-9.9999994039536292209e-1, -4.1159030931185115142e-11)}, + {FN (cos), ARG(3.14124738660679181379e+00,5.0e-01), RES(-1.1276258979946363572e0, -1.7991700040940218455e-4)}, + {FN (cos), ARG(3.14124738660679181379e+00,-5.0e-01), RES(-1.1276258979946363572e0, 1.7991700040940218455e-4)}, + {FN (cos), ARG(-3.14124738660679181379e+00,5.0e-01), RES(-1.1276258979946363572e0, 1.7991700040940218455e-4)}, + {FN (cos), ARG(-3.14124738660679181379e+00,-5.0e-01), RES(-1.1276258979946363572e0, -1.7991700040940218455e-4)}, + {FN (cos), ARG(3.14124738660679181379e+00,1.0e+00), RES(-1.5430805428404715941e0, -4.0575816248737789049e-4)}, + {FN (cos), ARG(3.14124738660679181379e+00,-1.0e+00), RES(-1.5430805428404715941e0, 4.0575816248737789049e-4)}, + {FN (cos), ARG(-3.14124738660679181379e+00,1.0e+00), RES(-1.5430805428404715941e0, 4.0575816248737789049e-4)}, + {FN (cos), ARG(-3.14124738660679181379e+00,-1.0e+00), RES(-1.5430805428404715941e0, -4.0575816248737789049e-4)}, + {FN (cos), ARG(3.14124738660679181379e+00,2.0e+00), RES(-3.7621954668392959444e0, -1.2522351259049798196e-3)}, + {FN (cos), ARG(3.14124738660679181379e+00,-2.0e+00), RES(-3.7621954668392959444e0, 1.2522351259049798196e-3)}, + {FN (cos), ARG(-3.14124738660679181379e+00,2.0e+00), RES(-3.7621954668392959444e0, 1.2522351259049798196e-3)}, + {FN (cos), ARG(-3.14124738660679181379e+00,-2.0e+00), RES(-3.7621954668392959444e0, -1.2522351259049798196e-3)}, + {FN (cos), ARG(3.14193792057279441821e+00,0.0e+00), RES(-9.9999994039535581675e-1, 0.0)}, + {FN (cos), ARG(-3.14193792057279441821e+00,0.0e+00), RES(-9.9999994039535581675e-1, 0.0)}, + {FN (cos), ARG(3.14193792057279441821e+00,1.19209289550781250e-07), RES(-9.9999994039536292218e-1, 4.1159030931155917289e-11)}, + {FN (cos), ARG(3.14193792057279441821e+00,-1.19209289550781250e-07), RES(-9.9999994039536292218e-1, -4.1159030931155917289e-11)}, + {FN (cos), ARG(-3.14193792057279441821e+00,1.19209289550781250e-07), RES(-9.9999994039536292218e-1, -4.1159030931155917289e-11)}, + {FN (cos), ARG(-3.14193792057279441821e+00,-1.19209289550781250e-07), RES(-9.9999994039536292218e-1, 4.1159030931155917289e-11)}, + {FN (cos), ARG(3.14193792057279441821e+00,5.0e-01), RES(-1.1276258979946363573e0, 1.7991700040927455302e-4)}, + {FN (cos), ARG(3.14193792057279441821e+00,-5.0e-01), RES(-1.1276258979946363573e0, -1.7991700040927455302e-4)}, + {FN (cos), ARG(-3.14193792057279441821e+00,5.0e-01), RES(-1.1276258979946363573e0, -1.7991700040927455302e-4)}, + {FN (cos), ARG(-3.14193792057279441821e+00,-5.0e-01), RES(-1.1276258979946363573e0, 1.7991700040927455302e-4)}, + {FN (cos), ARG(3.14193792057279441821e+00,1.0e+00), RES(-1.5430805428404715943e0, 4.0575816248709004923e-4)}, + {FN (cos), ARG(3.14193792057279441821e+00,-1.0e+00), RES(-1.5430805428404715943e0, -4.0575816248709004923e-4)}, + {FN (cos), ARG(-3.14193792057279441821e+00,1.0e+00), RES(-1.5430805428404715943e0, -4.0575816248709004923e-4)}, + {FN (cos), ARG(-3.14193792057279441821e+00,-1.0e+00), RES(-1.5430805428404715943e0, 4.0575816248709004923e-4)}, + {FN (cos), ARG(3.14193792057279441821e+00,2.0e+00), RES(-3.7621954668392959448e0, 1.2522351259040914950e-3)}, + {FN (cos), ARG(3.14193792057279441821e+00,-2.0e+00), RES(-3.7621954668392959448e0, -1.2522351259040914950e-3)}, + {FN (cos), ARG(-3.14193792057279441821e+00,2.0e+00), RES(-3.7621954668392959448e0, -1.2522351259040914950e-3)}, + {FN (cos), ARG(-3.14193792057279441821e+00,-2.0e+00), RES(-3.7621954668392959448e0, 1.2522351259040914950e-3)}, + {FN (cos), ARG(4.71204371340168837179e+00,0.0e+00), RES(-3.4526697614164732094e-4, 0.0)}, + {FN (cos), ARG(-4.71204371340168837179e+00,0.0e+00), RES(-3.4526697614164732094e-4, 0.0)}, + {FN (cos), ARG(4.71204371340168837179e+00,1.19209289550781250e-07), RES(-3.4526697614164977421e-4, 1.1920928244535424532e-7)}, + {FN (cos), ARG(4.71204371340168837179e+00,-1.19209289550781250e-07), RES(-3.4526697614164977421e-4, -1.1920928244535424532e-7)}, + {FN (cos), ARG(-4.71204371340168837179e+00,1.19209289550781250e-07), RES(-3.4526697614164977421e-4, -1.1920928244535424532e-7)}, + {FN (cos), ARG(-4.71204371340168837179e+00,-1.19209289550781250e-07), RES(-3.4526697614164977421e-4, 1.1920928244535424532e-7)}, + {FN (cos), ARG(4.71204371340168837179e+00,5.0e-01), RES(-3.8933200722561350661e-4, 5.2109527443404709205e-1)}, + {FN (cos), ARG(4.71204371340168837179e+00,-5.0e-01), RES(-3.8933200722561350661e-4, -5.2109527443404709205e-1)}, + {FN (cos), ARG(-4.71204371340168837179e+00,5.0e-01), RES(-3.8933200722561350661e-4, -5.2109527443404709205e-1)}, + {FN (cos), ARG(-4.71204371340168837179e+00,-5.0e-01), RES(-3.8933200722561350661e-4, 5.2109527443404709205e-1)}, + {FN (cos), ARG(4.71204371340168837179e+00,1.0e+00), RES(-5.3277478472539277601e-4, 1.1752011235963524659e0)}, + {FN (cos), ARG(4.71204371340168837179e+00,-1.0e+00), RES(-5.3277478472539277601e-4, -1.1752011235963524659e0)}, + {FN (cos), ARG(-4.71204371340168837179e+00,1.0e+00), RES(-5.3277478472539277601e-4, -1.1752011235963524659e0)}, + {FN (cos), ARG(-4.71204371340168837179e+00,-1.0e+00), RES(-5.3277478472539277601e-4, 1.1752011235963524659e0)}, + {FN (cos), ARG(4.71204371340168837179e+00,2.0e+00), RES(-1.2989619299135805376e-3, 3.6268601916692946552e0)}, + {FN (cos), ARG(4.71204371340168837179e+00,-2.0e+00), RES(-1.2989619299135805376e-3, -3.6268601916692946552e0)}, + {FN (cos), ARG(-4.71204371340168837179e+00,2.0e+00), RES(-1.2989619299135805376e-3, -3.6268601916692946552e0)}, + {FN (cos), ARG(-4.71204371340168837179e+00,-2.0e+00), RES(-1.2989619299135805376e-3, 3.6268601916692946552e0)}, + {FN (cos), ARG(4.71273424736769097620e+00,0.0e+00), RES(3.4526697614127992692e-4, 0.0)}, + {FN (cos), ARG(-4.71273424736769097620e+00,0.0e+00), RES(3.4526697614127992692e-4, 0.0)}, + {FN (cos), ARG(4.71273424736769097620e+00,1.19209289550781250e-07), RES(3.4526697614128238019e-4, 1.1920928244535424533e-7)}, + {FN (cos), ARG(4.71273424736769097620e+00,-1.19209289550781250e-07), RES(3.4526697614128238019e-4, -1.1920928244535424533e-7)}, + {FN (cos), ARG(-4.71273424736769097620e+00,1.19209289550781250e-07), RES(3.4526697614128238019e-4, -1.1920928244535424533e-7)}, + {FN (cos), ARG(-4.71273424736769097620e+00,-1.19209289550781250e-07), RES(3.4526697614128238019e-4, 1.1920928244535424533e-7)}, + {FN (cos), ARG(4.71273424736769097620e+00,5.0e-01), RES(3.8933200722519922358e-4, 5.2109527443404709212e-1)}, + {FN (cos), ARG(4.71273424736769097620e+00,-5.0e-01), RES(3.8933200722519922358e-4, -5.2109527443404709212e-1)}, + {FN (cos), ARG(-4.71273424736769097620e+00,5.0e-01), RES(3.8933200722519922358e-4, -5.2109527443404709212e-1)}, + {FN (cos), ARG(-4.71273424736769097620e+00,-5.0e-01), RES(3.8933200722519922358e-4, 5.2109527443404709212e-1)}, + {FN (cos), ARG(4.71273424736769097620e+00,1.0e+00), RES(5.3277478472482585742e-4, 1.1752011235963524660e0)}, + {FN (cos), ARG(4.71273424736769097620e+00,-1.0e+00), RES(5.3277478472482585742e-4, -1.1752011235963524660e0)}, + {FN (cos), ARG(-4.71273424736769097620e+00,1.0e+00), RES(5.3277478472482585742e-4, -1.1752011235963524660e0)}, + {FN (cos), ARG(-4.71273424736769097620e+00,-1.0e+00), RES(5.3277478472482585742e-4, 1.1752011235963524660e0)}, + {FN (cos), ARG(4.71273424736769097620e+00,2.0e+00), RES(1.2989619299121983294e-3, 3.6268601916692946557e0)}, + {FN (cos), ARG(4.71273424736769097620e+00,-2.0e+00), RES(1.2989619299121983294e-3, -3.6268601916692946557e0)}, + {FN (cos), ARG(-4.71273424736769097620e+00,2.0e+00), RES(1.2989619299121983294e-3, -3.6268601916692946557e0)}, + {FN (cos), ARG(-4.71273424736769097620e+00,-2.0e+00), RES(1.2989619299121983294e-3, 3.6268601916692946557e0)}, + {FN (cos), ARG(6.28284004019658492979e+00,0.0e+00), RES(9.9999994039535581662e-1, 0.0)}, + {FN (cos), ARG(-6.28284004019658492979e+00,0.0e+00), RES(9.9999994039535581662e-1, 0.0)}, + {FN (cos), ARG(6.28284004019658492979e+00,1.19209289550781250e-07), RES(9.9999994039536292205e-1, 4.1159030931199714069e-11)}, + {FN (cos), ARG(6.28284004019658492979e+00,-1.19209289550781250e-07), RES(9.9999994039536292205e-1, -4.1159030931199714069e-11)}, + {FN (cos), ARG(-6.28284004019658492979e+00,1.19209289550781250e-07), RES(9.9999994039536292205e-1, -4.1159030931199714069e-11)}, + {FN (cos), ARG(-6.28284004019658492979e+00,-1.19209289550781250e-07), RES(9.9999994039536292205e-1, 4.1159030931199714069e-11)}, + {FN (cos), ARG(6.28284004019658492979e+00,5.0e-01), RES(1.1276258979946363572e0, 1.7991700040946600032e-4)}, + {FN (cos), ARG(6.28284004019658492979e+00,-5.0e-01), RES(1.1276258979946363572e0, -1.7991700040946600032e-4)}, + {FN (cos), ARG(-6.28284004019658492979e+00,5.0e-01), RES(1.1276258979946363572e0, -1.7991700040946600032e-4)}, + {FN (cos), ARG(-6.28284004019658492979e+00,-5.0e-01), RES(1.1276258979946363572e0, 1.7991700040946600032e-4)}, + {FN (cos), ARG(6.28284004019658492979e+00,1.0e+00), RES(1.5430805428404715941e0, 4.0575816248752181112e-4)}, + {FN (cos), ARG(6.28284004019658492979e+00,-1.0e+00), RES(1.5430805428404715941e0, -4.0575816248752181112e-4)}, + {FN (cos), ARG(-6.28284004019658492979e+00,1.0e+00), RES(1.5430805428404715941e0, -4.0575816248752181112e-4)}, + {FN (cos), ARG(-6.28284004019658492979e+00,-1.0e+00), RES(1.5430805428404715941e0, 4.0575816248752181112e-4)}, + {FN (cos), ARG(6.28284004019658492979e+00,2.0e+00), RES(3.7621954668392959443e0, 1.2522351259054239819e-3)}, + {FN (cos), ARG(6.28284004019658492979e+00,-2.0e+00), RES(3.7621954668392959443e0, -1.2522351259054239819e-3)}, + {FN (cos), ARG(-6.28284004019658492979e+00,2.0e+00), RES(3.7621954668392959443e0, -1.2522351259054239819e-3)}, + {FN (cos), ARG(-6.28284004019658492979e+00,-2.0e+00), RES(3.7621954668392959443e0, 1.2522351259054239819e-3)}, + {FN (cos), ARG(6.28353057416258753420e+00,0.0e+00), RES(9.9999994039535581679e-1, 0.0)}, + {FN (cos), ARG(-6.28353057416258753420e+00,0.0e+00), RES(9.9999994039535581679e-1, 0.0)}, + {FN (cos), ARG(6.28353057416258753420e+00,1.19209289550781250e-07), RES(9.9999994039536292222e-1, -4.1159030931141318362e-11)}, + {FN (cos), ARG(6.28353057416258753420e+00,-1.19209289550781250e-07), RES(9.9999994039536292222e-1, 4.1159030931141318362e-11)}, + {FN (cos), ARG(-6.28353057416258753420e+00,1.19209289550781250e-07), RES(9.9999994039536292222e-1, 4.1159030931141318362e-11)}, + {FN (cos), ARG(-6.28353057416258753420e+00,-1.19209289550781250e-07), RES(9.9999994039536292222e-1, -4.1159030931141318362e-11)}, + {FN (cos), ARG(6.28353057416258753420e+00,5.0e-01), RES(1.1276258979946363574e0, -1.7991700040921073725e-4)}, + {FN (cos), ARG(6.28353057416258753420e+00,-5.0e-01), RES(1.1276258979946363574e0, 1.7991700040921073725e-4)}, + {FN (cos), ARG(-6.28353057416258753420e+00,5.0e-01), RES(1.1276258979946363574e0, 1.7991700040921073725e-4)}, + {FN (cos), ARG(-6.28353057416258753420e+00,-5.0e-01), RES(1.1276258979946363574e0, -1.7991700040921073725e-4)}, + {FN (cos), ARG(6.28353057416258753420e+00,1.0e+00), RES(1.5430805428404715943e0, -4.0575816248694612861e-4)}, + {FN (cos), ARG(6.28353057416258753420e+00,-1.0e+00), RES(1.5430805428404715943e0, 4.0575816248694612861e-4)}, + {FN (cos), ARG(-6.28353057416258753420e+00,1.0e+00), RES(1.5430805428404715943e0, 4.0575816248694612861e-4)}, + {FN (cos), ARG(-6.28353057416258753420e+00,-1.0e+00), RES(1.5430805428404715943e0, -4.0575816248694612861e-4)}, + {FN (cos), ARG(6.28353057416258753420e+00,2.0e+00), RES(3.7621954668392959449e0, -1.2522351259036473328e-3)}, + {FN (cos), ARG(6.28353057416258753420e+00,-2.0e+00), RES(3.7621954668392959449e0, 1.2522351259036473328e-3)}, + {FN (cos), ARG(-6.28353057416258753420e+00,2.0e+00), RES(3.7621954668392959449e0, 1.2522351259036473328e-3)}, + {FN (cos), ARG(-6.28353057416258753420e+00,-2.0e+00), RES(3.7621954668392959449e0, -1.2522351259036473328e-3)}, + {FN (cos), ARG(9.42443269378637893396e+00,0.0e+00), RES(-9.9999994039535581689e-1, 0.0)}, + {FN (cos), ARG(-9.42443269378637893396e+00,0.0e+00), RES(-9.9999994039535581689e-1, 0.0)}, + {FN (cos), ARG(9.42443269378637893396e+00,1.19209289550781250e-07), RES(-9.9999994039536292231e-1, -4.1159030931108433883e-11)}, + {FN (cos), ARG(9.42443269378637893396e+00,-1.19209289550781250e-07), RES(-9.9999994039536292231e-1, 4.1159030931108433883e-11)}, + {FN (cos), ARG(-9.42443269378637893396e+00,1.19209289550781250e-07), RES(-9.9999994039536292231e-1, 4.1159030931108433883e-11)}, + {FN (cos), ARG(-9.42443269378637893396e+00,-1.19209289550781250e-07), RES(-9.9999994039536292231e-1, -4.1159030931108433883e-11)}, + {FN (cos), ARG(9.42443269378637893396e+00,5.0e-01), RES(-1.1276258979946363575e0, -1.7991700040906699050e-4)}, + {FN (cos), ARG(9.42443269378637893396e+00,-5.0e-01), RES(-1.1276258979946363575e0, 1.7991700040906699050e-4)}, + {FN (cos), ARG(-9.42443269378637893396e+00,5.0e-01), RES(-1.1276258979946363575e0, 1.7991700040906699050e-4)}, + {FN (cos), ARG(-9.42443269378637893396e+00,-5.0e-01), RES(-1.1276258979946363575e0, -1.7991700040906699050e-4)}, + {FN (cos), ARG(9.42443269378637893396e+00,1.0e+00), RES(-1.5430805428404715945e0, -4.0575816248662194348e-4)}, + {FN (cos), ARG(9.42443269378637893396e+00,-1.0e+00), RES(-1.5430805428404715945e0, 4.0575816248662194348e-4)}, + {FN (cos), ARG(-9.42443269378637893396e+00,1.0e+00), RES(-1.5430805428404715945e0, 4.0575816248662194348e-4)}, + {FN (cos), ARG(-9.42443269378637893396e+00,-1.0e+00), RES(-1.5430805428404715945e0, -4.0575816248662194348e-4)}, + {FN (cos), ARG(9.42443269378637893396e+00,2.0e+00), RES(-3.7621954668392959453e0, -1.2522351259026468452e-3)}, + {FN (cos), ARG(9.42443269378637893396e+00,-2.0e+00), RES(-3.7621954668392959453e0, 1.2522351259026468452e-3)}, + {FN (cos), ARG(-9.42443269378637893396e+00,2.0e+00), RES(-3.7621954668392959453e0, 1.2522351259026468452e-3)}, + {FN (cos), ARG(-9.42443269378637893396e+00,-2.0e+00), RES(-3.7621954668392959453e0, -1.2522351259026468452e-3)}, + {FN (cos), ARG(9.42512322775237976202e+00,0.0e+00), RES(-9.9999994039535581714e-1, 0.0)}, + {FN (cos), ARG(-9.42512322775237976202e+00,0.0e+00), RES(-9.9999994039535581714e-1, 0.0)}, + {FN (cos), ARG(9.42512322775237976202e+00,1.19209289550781250e-07), RES(-9.9999994039536292257e-1, 4.1159030931020840323e-11)}, + {FN (cos), ARG(9.42512322775237976202e+00,-1.19209289550781250e-07), RES(-9.9999994039536292257e-1, -4.1159030931020840323e-11)}, + {FN (cos), ARG(-9.42512322775237976202e+00,1.19209289550781250e-07), RES(-9.9999994039536292257e-1, -4.1159030931020840323e-11)}, + {FN (cos), ARG(-9.42512322775237976202e+00,-1.19209289550781250e-07), RES(-9.9999994039536292257e-1, 4.1159030931020840323e-11)}, + {FN (cos), ARG(9.42512322775237976202e+00,5.0e-01), RES(-1.1276258979946363577e0, 1.7991700040868409591e-4)}, + {FN (cos), ARG(9.42512322775237976202e+00,-5.0e-01), RES(-1.1276258979946363577e0, -1.7991700040868409591e-4)}, + {FN (cos), ARG(-9.42512322775237976202e+00,5.0e-01), RES(-1.1276258979946363577e0, -1.7991700040868409591e-4)}, + {FN (cos), ARG(-9.42512322775237976202e+00,-5.0e-01), RES(-1.1276258979946363577e0, 1.7991700040868409591e-4)}, + {FN (cos), ARG(9.42512322775237976202e+00,1.0e+00), RES(-1.5430805428404715949e0, 4.0575816248575841970e-4)}, + {FN (cos), ARG(9.42512322775237976202e+00,-1.0e+00), RES(-1.5430805428404715949e0, -4.0575816248575841970e-4)}, + {FN (cos), ARG(-9.42512322775237976202e+00,1.0e+00), RES(-1.5430805428404715949e0, -4.0575816248575841970e-4)}, + {FN (cos), ARG(-9.42512322775237976202e+00,-1.0e+00), RES(-1.5430805428404715949e0, 4.0575816248575841970e-4)}, + {FN (cos), ARG(9.42512322775237976202e+00,2.0e+00), RES(-3.7621954668392959462e0, 1.2522351258999818715e-3)}, + {FN (cos), ARG(9.42512322775237976202e+00,-2.0e+00), RES(-3.7621954668392959462e0, -1.2522351258999818715e-3)}, + {FN (cos), ARG(-9.42512322775237976202e+00,2.0e+00), RES(-3.7621954668392959462e0, -1.2522351258999818715e-3)}, + {FN (cos), ARG(-9.42512322775237976202e+00,-2.0e+00), RES(-3.7621954668392959462e0, 1.2522351258999818715e-3)}, + {FN (tan), ARG(-3.45266983001243932001e-04,0.0e+00), RES(-3.4526699672092183585e-4, 0.0)}, + {FN (tan), ARG(3.45266983001243932001e-04,0.0e+00), RES(3.4526699672092183585e-4, 0.0)}, + {FN (tan), ARG(-3.45266983001243932001e-04,1.19209289550781250e-07), RES(-3.4526699672091692931e-4, 1.1920930376163652989e-7)}, + {FN (tan), ARG(-3.45266983001243932001e-04,-1.19209289550781250e-07), RES(-3.4526699672091692931e-4, -1.1920930376163652989e-7)}, + {FN (tan), ARG(3.45266983001243932001e-04,1.19209289550781250e-07), RES(3.4526699672091692931e-4, 1.1920930376163652989e-7)}, + {FN (tan), ARG(3.45266983001243932001e-04,-1.19209289550781250e-07), RES(3.4526699672091692931e-4, -1.1920930376163652989e-7)}, + {FN (tan), ARG(-3.45266983001243932001e-04,5.0e-01), RES(-2.7153443992655805934e-4, 4.6211720058436229979e-1)}, + {FN (tan), ARG(-3.45266983001243932001e-04,-5.0e-01), RES(-2.7153443992655805934e-4, -4.6211720058436229979e-1)}, + {FN (tan), ARG(3.45266983001243932001e-04,5.0e-01), RES(2.7153443992655805934e-4, 4.6211720058436229979e-1)}, + {FN (tan), ARG(3.45266983001243932001e-04,-5.0e-01), RES(2.7153443992655805934e-4, -4.6211720058436229979e-1)}, + {FN (tan), ARG(-3.45266983001243932001e-04,1.0e+00), RES(-1.4500326960274960880e-4, 7.6159419408485704836e-1)}, + {FN (tan), ARG(-3.45266983001243932001e-04,-1.0e+00), RES(-1.4500326960274960880e-4, -7.6159419408485704836e-1)}, + {FN (tan), ARG(3.45266983001243932001e-04,1.0e+00), RES(1.4500326960274960880e-4, 7.6159419408485704836e-1)}, + {FN (tan), ARG(3.45266983001243932001e-04,-1.0e+00), RES(1.4500326960274960880e-4, -7.6159419408485704836e-1)}, + {FN (tan), ARG(-3.45266983001243932001e-04,2.0e+00), RES(-2.4393395410435306874e-5, 9.6402758819508310556e-1)}, + {FN (tan), ARG(-3.45266983001243932001e-04,-2.0e+00), RES(-2.4393395410435306874e-5, -9.6402758819508310556e-1)}, + {FN (tan), ARG(3.45266983001243932001e-04,2.0e+00), RES(2.4393395410435306874e-5, 9.6402758819508310556e-1)}, + {FN (tan), ARG(3.45266983001243932001e-04,-2.0e+00), RES(2.4393395410435306874e-5, -9.6402758819508310556e-1)}, + {FN (tan), ARG(1.57045105981189525579e+00,0.0e+00), RES(2.8963092606501007060e3, 0.0)}, + {FN (tan), ARG(-1.57045105981189525579e+00,0.0e+00), RES(-2.8963092606501007060e3, 0.0)}, + {FN (tan), ARG(1.57045105981189525579e+00,1.19209289550781250e-07), RES(2.8963089153831588642e3, 9.9999992052646305569e-1)}, + {FN (tan), ARG(1.57045105981189525579e+00,-1.19209289550781250e-07), RES(2.8963089153831588642e3, -9.9999992052646305569e-1)}, + {FN (tan), ARG(-1.57045105981189525579e+00,1.19209289550781250e-07), RES(-2.8963089153831588642e3, 9.9999992052646305569e-1)}, + {FN (tan), ARG(-1.57045105981189525579e+00,-1.19209289550781250e-07), RES(-2.8963089153831588642e3, -9.9999992052646305569e-1)}, + {FN (tan), ARG(1.57045105981189525579e+00,5.0e-01), RES(1.2715121175455623363e-3, 2.1639524637389325996e0)}, + {FN (tan), ARG(1.57045105981189525579e+00,-5.0e-01), RES(1.2715121175455623363e-3, -2.1639524637389325996e0)}, + {FN (tan), ARG(-1.57045105981189525579e+00,5.0e-01), RES(-1.2715121175455623363e-3, 2.1639524637389325996e0)}, + {FN (tan), ARG(-1.57045105981189525579e+00,-5.0e-01), RES(-1.2715121175455623363e-3, -2.1639524637389325996e0)}, + {FN (tan), ARG(1.57045105981189525579e+00,1.0e+00), RES(2.4999454374276273814e-4, 1.3130351721648674823e0)}, + {FN (tan), ARG(1.57045105981189525579e+00,-1.0e+00), RES(2.4999454374276273814e-4, -1.3130351721648674823e0)}, + {FN (tan), ARG(-1.57045105981189525579e+00,1.0e+00), RES(-2.4999454374276273814e-4, 1.3130351721648674823e0)}, + {FN (tan), ARG(-1.57045105981189525579e+00,-1.0e+00), RES(-2.4999454374276273814e-4, -1.3130351721648674823e0)}, + {FN (tan), ARG(1.57045105981189525579e+00,2.0e+00), RES(2.6247825506572821595e-5, 1.0373147113268752620e0)}, + {FN (tan), ARG(1.57045105981189525579e+00,-2.0e+00), RES(2.6247825506572821595e-5, -1.0373147113268752620e0)}, + {FN (tan), ARG(-1.57045105981189525579e+00,2.0e+00), RES(-2.6247825506572821595e-5, 1.0373147113268752620e0)}, + {FN (tan), ARG(-1.57045105981189525579e+00,-2.0e+00), RES(-2.6247825506572821595e-5, -1.0373147113268752620e0)}, + {FN (tan), ARG(1.57114159377789786021e+00,0.0e+00), RES(-2.8963092606511280143e3, 0.0)}, + {FN (tan), ARG(-1.57114159377789786021e+00,0.0e+00), RES(2.8963092606511280143e3, 0.0)}, + {FN (tan), ARG(1.57114159377789786021e+00,1.19209289550781250e-07), RES(-2.8963089153841861720e3, 9.9999992052717244672e-1)}, + {FN (tan), ARG(1.57114159377789786021e+00,-1.19209289550781250e-07), RES(-2.8963089153841861720e3, -9.9999992052717244672e-1)}, + {FN (tan), ARG(-1.57114159377789786021e+00,1.19209289550781250e-07), RES(2.8963089153841861720e3, 9.9999992052717244672e-1)}, + {FN (tan), ARG(-1.57114159377789786021e+00,-1.19209289550781250e-07), RES(2.8963089153841861720e3, -9.9999992052717244672e-1)}, + {FN (tan), ARG(1.57114159377789786021e+00,5.0e-01), RES(-1.2715121175451113370e-3, 2.1639524637389326002e0)}, + {FN (tan), ARG(1.57114159377789786021e+00,-5.0e-01), RES(-1.2715121175451113370e-3, -2.1639524637389326002e0)}, + {FN (tan), ARG(-1.57114159377789786021e+00,5.0e-01), RES(1.2715121175451113370e-3, 2.1639524637389326002e0)}, + {FN (tan), ARG(-1.57114159377789786021e+00,-5.0e-01), RES(1.2715121175451113370e-3, -2.1639524637389326002e0)}, + {FN (tan), ARG(1.57114159377789786021e+00,1.0e+00), RES(-2.4999454374267406620e-4, 1.3130351721648674824e0)}, + {FN (tan), ARG(1.57114159377789786021e+00,-1.0e+00), RES(-2.4999454374267406620e-4, -1.3130351721648674824e0)}, + {FN (tan), ARG(-1.57114159377789786021e+00,1.0e+00), RES(2.4999454374267406620e-4, 1.3130351721648674824e0)}, + {FN (tan), ARG(-1.57114159377789786021e+00,-1.0e+00), RES(2.4999454374267406620e-4, -1.3130351721648674824e0)}, + {FN (tan), ARG(1.57114159377789786021e+00,2.0e+00), RES(-2.6247825506563511609e-5, 1.0373147113268752620e0)}, + {FN (tan), ARG(1.57114159377789786021e+00,-2.0e+00), RES(-2.6247825506563511609e-5, -1.0373147113268752620e0)}, + {FN (tan), ARG(-1.57114159377789786021e+00,2.0e+00), RES(2.6247825506563511609e-5, 1.0373147113268752620e0)}, + {FN (tan), ARG(-1.57114159377789786021e+00,-2.0e+00), RES(2.6247825506563511609e-5, -1.0373147113268752620e0)}, + {FN (tan), ARG(3.14124738660679181379e+00,0.0e+00), RES(-3.4526699672110257641e-4, 0.0)}, + {FN (tan), ARG(-3.14124738660679181379e+00,0.0e+00), RES(3.4526699672110257641e-4, 0.0)}, + {FN (tan), ARG(3.14124738660679181379e+00,1.19209289550781250e-07), RES(-3.4526699672109766987e-4, 1.1920930376163652991e-7)}, + {FN (tan), ARG(3.14124738660679181379e+00,-1.19209289550781250e-07), RES(-3.4526699672109766987e-4, -1.1920930376163652991e-7)}, + {FN (tan), ARG(-3.14124738660679181379e+00,1.19209289550781250e-07), RES(3.4526699672109766987e-4, 1.1920930376163652991e-7)}, + {FN (tan), ARG(-3.14124738660679181379e+00,-1.19209289550781250e-07), RES(3.4526699672109766987e-4, -1.1920930376163652991e-7)}, + {FN (tan), ARG(3.14124738660679181379e+00,5.0e-01), RES(-2.7153443992670020234e-4, 4.6211720058436229984e-1)}, + {FN (tan), ARG(3.14124738660679181379e+00,-5.0e-01), RES(-2.7153443992670020234e-4, -4.6211720058436229984e-1)}, + {FN (tan), ARG(-3.14124738660679181379e+00,5.0e-01), RES(2.7153443992670020234e-4, 4.6211720058436229984e-1)}, + {FN (tan), ARG(-3.14124738660679181379e+00,-5.0e-01), RES(2.7153443992670020234e-4, -4.6211720058436229984e-1)}, + {FN (tan), ARG(3.14124738660679181379e+00,1.0e+00), RES(-1.4500326960282551519e-4, 7.6159419408485704840e-1)}, + {FN (tan), ARG(3.14124738660679181379e+00,-1.0e+00), RES(-1.4500326960282551519e-4, -7.6159419408485704840e-1)}, + {FN (tan), ARG(-3.14124738660679181379e+00,1.0e+00), RES(1.4500326960282551519e-4, 7.6159419408485704840e-1)}, + {FN (tan), ARG(-3.14124738660679181379e+00,-1.0e+00), RES(1.4500326960282551519e-4, -7.6159419408485704840e-1)}, + {FN (tan), ARG(3.14124738660679181379e+00,2.0e+00), RES(-2.4393395410448076340e-5, 9.6402758819508310557e-1)}, + {FN (tan), ARG(3.14124738660679181379e+00,-2.0e+00), RES(-2.4393395410448076340e-5, -9.6402758819508310557e-1)}, + {FN (tan), ARG(-3.14124738660679181379e+00,2.0e+00), RES(2.4393395410448076340e-5, 9.6402758819508310557e-1)}, + {FN (tan), ARG(-3.14124738660679181379e+00,-2.0e+00), RES(2.4393395410448076340e-5, -9.6402758819508310557e-1)}, + {FN (tan), ARG(3.14193792057279441821e+00,0.0e+00), RES(3.4526699672085764703e-4, 0.0)}, + {FN (tan), ARG(-3.14193792057279441821e+00,0.0e+00), RES(-3.4526699672085764703e-4, 0.0)}, + {FN (tan), ARG(3.14193792057279441821e+00,1.19209289550781250e-07), RES(3.4526699672085274049e-4, 1.1920930376163652989e-7)}, + {FN (tan), ARG(3.14193792057279441821e+00,-1.19209289550781250e-07), RES(3.4526699672085274049e-4, -1.1920930376163652989e-7)}, + {FN (tan), ARG(-3.14193792057279441821e+00,1.19209289550781250e-07), RES(-3.4526699672085274049e-4, 1.1920930376163652989e-7)}, + {FN (tan), ARG(-3.14193792057279441821e+00,-1.19209289550781250e-07), RES(-3.4526699672085274049e-4, -1.1920930376163652989e-7)}, + {FN (tan), ARG(3.14193792057279441821e+00,5.0e-01), RES(2.7153443992650757820e-4, 4.6211720058436229978e-1)}, + {FN (tan), ARG(3.14193792057279441821e+00,-5.0e-01), RES(2.7153443992650757820e-4, -4.6211720058436229978e-1)}, + {FN (tan), ARG(-3.14193792057279441821e+00,5.0e-01), RES(-2.7153443992650757820e-4, 4.6211720058436229978e-1)}, + {FN (tan), ARG(-3.14193792057279441821e+00,-5.0e-01), RES(-2.7153443992650757820e-4, -4.6211720058436229978e-1)}, + {FN (tan), ARG(3.14193792057279441821e+00,1.0e+00), RES(1.4500326960272265115e-4, 7.6159419408485704835e-1)}, + {FN (tan), ARG(3.14193792057279441821e+00,-1.0e+00), RES(1.4500326960272265115e-4, -7.6159419408485704835e-1)}, + {FN (tan), ARG(-3.14193792057279441821e+00,1.0e+00), RES(-1.4500326960272265115e-4, 7.6159419408485704835e-1)}, + {FN (tan), ARG(-3.14193792057279441821e+00,-1.0e+00), RES(-1.4500326960272265115e-4, -7.6159419408485704835e-1)}, + {FN (tan), ARG(3.14193792057279441821e+00,2.0e+00), RES(2.4393395410430771882e-5, 9.6402758819508310556e-1)}, + {FN (tan), ARG(3.14193792057279441821e+00,-2.0e+00), RES(2.4393395410430771882e-5, -9.6402758819508310556e-1)}, + {FN (tan), ARG(-3.14193792057279441821e+00,2.0e+00), RES(-2.4393395410430771882e-5, 9.6402758819508310556e-1)}, + {FN (tan), ARG(-3.14193792057279441821e+00,-2.0e+00), RES(-2.4393395410430771882e-5, -9.6402758819508310556e-1)}, + {FN (tan), ARG(4.71204371340168837179e+00,0.0e+00), RES(2.8963092606490733978e3, 0.0)}, + {FN (tan), ARG(-4.71204371340168837179e+00,0.0e+00), RES(-2.8963092606490733978e3, 0.0)}, + {FN (tan), ARG(4.71204371340168837179e+00,1.19209289550781250e-07), RES(2.8963089153821315563e3, 9.9999992052575366466e-1)}, + {FN (tan), ARG(4.71204371340168837179e+00,-1.19209289550781250e-07), RES(2.8963089153821315563e3, -9.9999992052575366466e-1)}, + {FN (tan), ARG(-4.71204371340168837179e+00,1.19209289550781250e-07), RES(-2.8963089153821315563e3, 9.9999992052575366466e-1)}, + {FN (tan), ARG(-4.71204371340168837179e+00,-1.19209289550781250e-07), RES(-2.8963089153821315563e3, -9.9999992052575366466e-1)}, + {FN (tan), ARG(4.71204371340168837179e+00,5.0e-01), RES(1.2715121175460133355e-3, 2.1639524637389325989e0)}, + {FN (tan), ARG(4.71204371340168837179e+00,-5.0e-01), RES(1.2715121175460133355e-3, -2.1639524637389325989e0)}, + {FN (tan), ARG(-4.71204371340168837179e+00,5.0e-01), RES(-1.2715121175460133355e-3, 2.1639524637389325989e0)}, + {FN (tan), ARG(-4.71204371340168837179e+00,-5.0e-01), RES(-1.2715121175460133355e-3, -2.1639524637389325989e0)}, + {FN (tan), ARG(4.71204371340168837179e+00,1.0e+00), RES(2.4999454374285141007e-4, 1.3130351721648674822e0)}, + {FN (tan), ARG(4.71204371340168837179e+00,-1.0e+00), RES(2.4999454374285141007e-4, -1.3130351721648674822e0)}, + {FN (tan), ARG(-4.71204371340168837179e+00,1.0e+00), RES(-2.4999454374285141007e-4, 1.3130351721648674822e0)}, + {FN (tan), ARG(-4.71204371340168837179e+00,-1.0e+00), RES(-2.4999454374285141007e-4, -1.3130351721648674822e0)}, + {FN (tan), ARG(4.71204371340168837179e+00,2.0e+00), RES(2.6247825506582131582e-5, 1.0373147113268752620e0)}, + {FN (tan), ARG(4.71204371340168837179e+00,-2.0e+00), RES(2.6247825506582131582e-5, -1.0373147113268752620e0)}, + {FN (tan), ARG(-4.71204371340168837179e+00,2.0e+00), RES(-2.6247825506582131582e-5, 1.0373147113268752620e0)}, + {FN (tan), ARG(-4.71204371340168837179e+00,-2.0e+00), RES(-2.6247825506582131582e-5, -1.0373147113268752620e0)}, + {FN (tan), ARG(4.71273424736769097620e+00,0.0e+00), RES(-2.8963092606521553225e3, 0.0)}, + {FN (tan), ARG(-4.71273424736769097620e+00,0.0e+00), RES(2.8963092606521553225e3, 0.0)}, + {FN (tan), ARG(4.71273424736769097620e+00,1.19209289550781250e-07), RES(-2.8963089153852134799e3, 9.9999992052788183776e-1)}, + {FN (tan), ARG(4.71273424736769097620e+00,-1.19209289550781250e-07), RES(-2.8963089153852134799e3, -9.9999992052788183776e-1)}, + {FN (tan), ARG(-4.71273424736769097620e+00,1.19209289550781250e-07), RES(2.8963089153852134799e3, 9.9999992052788183776e-1)}, + {FN (tan), ARG(-4.71273424736769097620e+00,-1.19209289550781250e-07), RES(2.8963089153852134799e3, -9.9999992052788183776e-1)}, + {FN (tan), ARG(4.71273424736769097620e+00,5.0e-01), RES(-1.2715121175446603377e-3, 2.1639524637389326009e0)}, + {FN (tan), ARG(4.71273424736769097620e+00,-5.0e-01), RES(-1.2715121175446603377e-3, -2.1639524637389326009e0)}, + {FN (tan), ARG(-4.71273424736769097620e+00,5.0e-01), RES(1.2715121175446603377e-3, 2.1639524637389326009e0)}, + {FN (tan), ARG(-4.71273424736769097620e+00,-5.0e-01), RES(1.2715121175446603377e-3, -2.1639524637389326009e0)}, + {FN (tan), ARG(4.71273424736769097620e+00,1.0e+00), RES(-2.4999454374258539427e-4, 1.3130351721648674825e0)}, + {FN (tan), ARG(4.71273424736769097620e+00,-1.0e+00), RES(-2.4999454374258539427e-4, -1.3130351721648674825e0)}, + {FN (tan), ARG(-4.71273424736769097620e+00,1.0e+00), RES(2.4999454374258539427e-4, 1.3130351721648674825e0)}, + {FN (tan), ARG(-4.71273424736769097620e+00,-1.0e+00), RES(2.4999454374258539427e-4, -1.3130351721648674825e0)}, + {FN (tan), ARG(4.71273424736769097620e+00,2.0e+00), RES(-2.6247825506554201622e-5, 1.0373147113268752620e0)}, + {FN (tan), ARG(4.71273424736769097620e+00,-2.0e+00), RES(-2.6247825506554201622e-5, -1.0373147113268752620e0)}, + {FN (tan), ARG(-4.71273424736769097620e+00,2.0e+00), RES(2.6247825506554201622e-5, 1.0373147113268752620e0)}, + {FN (tan), ARG(-4.71273424736769097620e+00,-2.0e+00), RES(2.6247825506554201622e-5, -1.0373147113268752620e0)}, + {FN (tan), ARG(6.28284004019658492979e+00,0.0e+00), RES(-3.4526699672122504111e-4, 0.0)}, + {FN (tan), ARG(-6.28284004019658492979e+00,0.0e+00), RES(3.4526699672122504111e-4, 0.0)}, + {FN (tan), ARG(6.28284004019658492979e+00,1.19209289550781250e-07), RES(-3.4526699672122013457e-4, 1.1920930376163652992e-7)}, + {FN (tan), ARG(6.28284004019658492979e+00,-1.19209289550781250e-07), RES(-3.4526699672122013457e-4, -1.1920930376163652992e-7)}, + {FN (tan), ARG(-6.28284004019658492979e+00,1.19209289550781250e-07), RES(3.4526699672122013457e-4, 1.1920930376163652992e-7)}, + {FN (tan), ARG(-6.28284004019658492979e+00,-1.19209289550781250e-07), RES(3.4526699672122013457e-4, -1.1920930376163652992e-7)}, + {FN (tan), ARG(6.28284004019658492979e+00,5.0e-01), RES(-2.7153443992679651442e-4, 4.6211720058436229987e-1)}, + {FN (tan), ARG(6.28284004019658492979e+00,-5.0e-01), RES(-2.7153443992679651442e-4, -4.6211720058436229987e-1)}, + {FN (tan), ARG(-6.28284004019658492979e+00,5.0e-01), RES(2.7153443992679651442e-4, 4.6211720058436229987e-1)}, + {FN (tan), ARG(-6.28284004019658492979e+00,-5.0e-01), RES(2.7153443992679651442e-4, -4.6211720058436229987e-1)}, + {FN (tan), ARG(6.28284004019658492979e+00,1.0e+00), RES(-1.4500326960287694721e-4, 7.6159419408485704843e-1)}, + {FN (tan), ARG(6.28284004019658492979e+00,-1.0e+00), RES(-1.4500326960287694721e-4, -7.6159419408485704843e-1)}, + {FN (tan), ARG(-6.28284004019658492979e+00,1.0e+00), RES(1.4500326960287694721e-4, 7.6159419408485704843e-1)}, + {FN (tan), ARG(-6.28284004019658492979e+00,-1.0e+00), RES(1.4500326960287694721e-4, -7.6159419408485704843e-1)}, + {FN (tan), ARG(6.28284004019658492979e+00,2.0e+00), RES(-2.4393395410456728569e-5, 9.6402758819508310558e-1)}, + {FN (tan), ARG(6.28284004019658492979e+00,-2.0e+00), RES(-2.4393395410456728569e-5, -9.6402758819508310558e-1)}, + {FN (tan), ARG(-6.28284004019658492979e+00,2.0e+00), RES(2.4393395410456728569e-5, 9.6402758819508310558e-1)}, + {FN (tan), ARG(-6.28284004019658492979e+00,-2.0e+00), RES(2.4393395410456728569e-5, -9.6402758819508310558e-1)}, + {FN (tan), ARG(6.28353057416258753420e+00,0.0e+00), RES(3.4526699672073518233e-4, 0.0)}, + {FN (tan), ARG(-6.28353057416258753420e+00,0.0e+00), RES(-3.4526699672073518233e-4, 0.0)}, + {FN (tan), ARG(6.28353057416258753420e+00,1.19209289550781250e-07), RES(3.4526699672073027579e-4, 1.1920930376163652988e-7)}, + {FN (tan), ARG(6.28353057416258753420e+00,-1.19209289550781250e-07), RES(3.4526699672073027579e-4, -1.1920930376163652988e-7)}, + {FN (tan), ARG(-6.28353057416258753420e+00,1.19209289550781250e-07), RES(-3.4526699672073027579e-4, 1.1920930376163652988e-7)}, + {FN (tan), ARG(-6.28353057416258753420e+00,-1.19209289550781250e-07), RES(-3.4526699672073027579e-4, -1.1920930376163652988e-7)}, + {FN (tan), ARG(6.28353057416258753420e+00,5.0e-01), RES(2.7153443992641126612e-4, 4.6211720058436229974e-1)}, + {FN (tan), ARG(6.28353057416258753420e+00,-5.0e-01), RES(2.7153443992641126612e-4, -4.6211720058436229974e-1)}, + {FN (tan), ARG(-6.28353057416258753420e+00,5.0e-01), RES(-2.7153443992641126612e-4, 4.6211720058436229974e-1)}, + {FN (tan), ARG(-6.28353057416258753420e+00,-5.0e-01), RES(-2.7153443992641126612e-4, -4.6211720058436229974e-1)}, + {FN (tan), ARG(6.28353057416258753420e+00,1.0e+00), RES(1.4500326960267121913e-4, 7.6159419408485704832e-1)}, + {FN (tan), ARG(6.28353057416258753420e+00,-1.0e+00), RES(1.4500326960267121913e-4, -7.6159419408485704832e-1)}, + {FN (tan), ARG(-6.28353057416258753420e+00,1.0e+00), RES(-1.4500326960267121913e-4, 7.6159419408485704832e-1)}, + {FN (tan), ARG(-6.28353057416258753420e+00,-1.0e+00), RES(-1.4500326960267121913e-4, -7.6159419408485704832e-1)}, + {FN (tan), ARG(6.28353057416258753420e+00,2.0e+00), RES(2.4393395410422119654e-5, 9.6402758819508310555e-1)}, + {FN (tan), ARG(6.28353057416258753420e+00,-2.0e+00), RES(2.4393395410422119654e-5, -9.6402758819508310555e-1)}, + {FN (tan), ARG(-6.28353057416258753420e+00,2.0e+00), RES(-2.4393395410422119654e-5, 9.6402758819508310555e-1)}, + {FN (tan), ARG(-6.28353057416258753420e+00,-2.0e+00), RES(-2.4393395410422119654e-5, -9.6402758819508310555e-1)}, + {FN (tan), ARG(9.42443269378637893396e+00,0.0e+00), RES(-3.4526699672045932728e-4, 0.0)}, + {FN (tan), ARG(-9.42443269378637893396e+00,0.0e+00), RES(3.4526699672045932728e-4, 0.0)}, + {FN (tan), ARG(9.42443269378637893396e+00,1.19209289550781250e-07), RES(-3.4526699672045442074e-4, 1.1920930376163652985e-7)}, + {FN (tan), ARG(9.42443269378637893396e+00,-1.19209289550781250e-07), RES(-3.4526699672045442074e-4, -1.1920930376163652985e-7)}, + {FN (tan), ARG(-9.42443269378637893396e+00,1.19209289550781250e-07), RES(3.4526699672045442074e-4, 1.1920930376163652985e-7)}, + {FN (tan), ARG(-9.42443269378637893396e+00,-1.19209289550781250e-07), RES(3.4526699672045442074e-4, -1.1920930376163652985e-7)}, + {FN (tan), ARG(9.42443269378637893396e+00,5.0e-01), RES(-2.7153443992619432056e-4, 4.6211720058436229968e-1)}, + {FN (tan), ARG(9.42443269378637893396e+00,-5.0e-01), RES(-2.7153443992619432056e-4, -4.6211720058436229968e-1)}, + {FN (tan), ARG(-9.42443269378637893396e+00,5.0e-01), RES(2.7153443992619432056e-4, 4.6211720058436229968e-1)}, + {FN (tan), ARG(-9.42443269378637893396e+00,-5.0e-01), RES(2.7153443992619432056e-4, -4.6211720058436229968e-1)}, + {FN (tan), ARG(9.42443269378637893396e+00,1.0e+00), RES(-1.4500326960255536711e-4, 7.6159419408485704826e-1)}, + {FN (tan), ARG(9.42443269378637893396e+00,-1.0e+00), RES(-1.4500326960255536711e-4, -7.6159419408485704826e-1)}, + {FN (tan), ARG(-9.42443269378637893396e+00,1.0e+00), RES(1.4500326960255536711e-4, 7.6159419408485704826e-1)}, + {FN (tan), ARG(-9.42443269378637893396e+00,-1.0e+00), RES(1.4500326960255536711e-4, -7.6159419408485704826e-1)}, + {FN (tan), ARG(9.42443269378637893396e+00,2.0e+00), RES(-2.4393395410402630273e-5, 9.6402758819508310554e-1)}, + {FN (tan), ARG(9.42443269378637893396e+00,-2.0e+00), RES(-2.4393395410402630273e-5, -9.6402758819508310554e-1)}, + {FN (tan), ARG(-9.42443269378637893396e+00,2.0e+00), RES(2.4393395410402630273e-5, 9.6402758819508310554e-1)}, + {FN (tan), ARG(-9.42443269378637893396e+00,-2.0e+00), RES(2.4393395410402630273e-5, -9.6402758819508310554e-1)}, + {FN (tan), ARG(9.42512322775237976202e+00,0.0e+00), RES(3.4526699671972453911e-4, 0.0)}, + {FN (tan), ARG(-9.42512322775237976202e+00,0.0e+00), RES(-3.4526699671972453911e-4, 0.0)}, + {FN (tan), ARG(9.42512322775237976202e+00,1.19209289550781250e-07), RES(3.4526699671971963257e-4, 1.1920930376163652979e-7)}, + {FN (tan), ARG(9.42512322775237976202e+00,-1.19209289550781250e-07), RES(3.4526699671971963257e-4, -1.1920930376163652979e-7)}, + {FN (tan), ARG(-9.42512322775237976202e+00,1.19209289550781250e-07), RES(-3.4526699671971963257e-4, 1.1920930376163652979e-7)}, + {FN (tan), ARG(-9.42512322775237976202e+00,-1.19209289550781250e-07), RES(-3.4526699671971963257e-4, -1.1920930376163652979e-7)}, + {FN (tan), ARG(9.42512322775237976202e+00,5.0e-01), RES(2.7153443992561644811e-4, 4.6211720058436229949e-1)}, + {FN (tan), ARG(9.42512322775237976202e+00,-5.0e-01), RES(2.7153443992561644811e-4, -4.6211720058436229949e-1)}, + {FN (tan), ARG(-9.42512322775237976202e+00,5.0e-01), RES(-2.7153443992561644811e-4, 4.6211720058436229949e-1)}, + {FN (tan), ARG(-9.42512322775237976202e+00,-5.0e-01), RES(-2.7153443992561644811e-4, -4.6211720058436229949e-1)}, + {FN (tan), ARG(9.42512322775237976202e+00,1.0e+00), RES(1.450032696022467750e-4, 7.6159419408485704810e-1)}, + {FN (tan), ARG(9.42512322775237976202e+00,-1.0e+00), RES(1.450032696022467750e-4, -7.6159419408485704810e-1)}, + {FN (tan), ARG(-9.42512322775237976202e+00,1.0e+00), RES(-1.450032696022467750e-4, 7.6159419408485704810e-1)}, + {FN (tan), ARG(-9.42512322775237976202e+00,-1.0e+00), RES(-1.450032696022467750e-4, -7.6159419408485704810e-1)}, + {FN (tan), ARG(9.42512322775237976202e+00,2.0e+00), RES(2.439339541035071690e-5, 9.6402758819508310550e-1)}, + {FN (tan), ARG(9.42512322775237976202e+00,-2.0e+00), RES(2.439339541035071690e-5, -9.6402758819508310550e-1)}, + {FN (tan), ARG(-9.42512322775237976202e+00,2.0e+00), RES(-2.439339541035071690e-5, 9.6402758819508310550e-1)}, + {FN (tan), ARG(-9.42512322775237976202e+00,-2.0e+00), RES(-2.439339541035071690e-5, -9.6402758819508310550e-1)}, + {FN (tan), ARG(0.0e+00,1.0e+03), RES(0.0, 1.0)}, + {FN (tan), ARG(0.0e+00,-1.0e+03), RES(0.0, -1.0)}, + {FN (tan), ARG(0.0e+00,-1.23456e+05), RES(0.0, -1.0)}, + {FN (tan), ARG(1.0e+03,0.0e+00), RES(1.470324155702718e+00, 0.0)}, + {FN (tan), ARG(-1.0e+03,0.0e+00), RES(-1.470324155702718e+00, 0.0)}, + {FN (arcsin), ARG(0.0e+00,0.0e+00), RES(0e0, 0.0)}, + {FN (arcsin), ARG(0.0e+00,1.19209289550781250e-07), RES(0, 1.1920928955078096766e-7)}, + {FN (arcsin), ARG(0.0e+00,-1.19209289550781250e-07), RES(0, -1.1920928955078096766e-7)}, + {FN (arcsin), ARG(0.0e+00,5.0e-01), RES(0, 4.8121182505960344750e-1)}, + {FN (arcsin), ARG(0.0e+00,-5.0e-01), RES(0, -4.8121182505960344750e-1)}, + {FN (arcsin), ARG(0.0e+00,1.0e+00), RES(0, 8.8137358701954302523e-1)}, + {FN (arcsin), ARG(0.0e+00,-1.0e+00), RES(0, -8.8137358701954302523e-1)}, + {FN (arcsin), ARG(0.0e+00,2.0e+00), RES(0, 1.4436354751788103425e0)}, + {FN (arcsin), ARG(0.0e+00,-2.0e+00), RES(0, -1.4436354751788103425e0)}, + {FN (arcsin), ARG(0.0e+00,8.3886080e+06), RES(0, 1.6635532333438690979e1)}, + {FN (arcsin), ARG(0.0e+00,-8.3886080e+06), RES(0, -1.6635532333438690979e1)}, + {FN (arcsin), ARG(1.19209289550781250e-07,0.0e+00), RES(1.1920928955078153234e-7, 0.0)}, + {FN (arcsin), ARG(-1.19209289550781250e-07,0.0e+00), RES(-1.1920928955078153234e-7, 0.0)}, + {FN (arcsin), ARG(1.19209289550781250e-07,1.19209289550781250e-07), RES(1.1920928955078068531e-7, 1.1920928955078181469e-7)}, + {FN (arcsin), ARG(1.19209289550781250e-07,-1.19209289550781250e-07), RES(1.1920928955078068531e-7, -1.1920928955078181469e-7)}, + {FN (arcsin), ARG(-1.19209289550781250e-07,1.19209289550781250e-07), RES(-1.1920928955078068531e-7, 1.1920928955078181469e-7)}, + {FN (arcsin), ARG(-1.19209289550781250e-07,-1.19209289550781250e-07), RES(-1.1920928955078068531e-7, -1.1920928955078181469e-7)}, + {FN (arcsin), ARG(1.19209289550781250e-07,5.0e-01), RES(1.0662402999400097805e-7, 4.8121182505960598961e-1)}, + {FN (arcsin), ARG(1.19209289550781250e-07,-5.0e-01), RES(1.0662402999400097805e-7, -4.8121182505960598961e-1)}, + {FN (arcsin), ARG(-1.19209289550781250e-07,5.0e-01), RES(-1.0662402999400097805e-7, 4.8121182505960598961e-1)}, + {FN (arcsin), ARG(-1.19209289550781250e-07,-5.0e-01), RES(-1.0662402999400097805e-7, -4.8121182505960598961e-1)}, + {FN (arcsin), ARG(1.19209289550781250e-07,1.0e+00), RES(8.4293697021788013662e-8, 8.8137358701954553738e-1)}, + {FN (arcsin), ARG(1.19209289550781250e-07,-1.0e+00), RES(8.4293697021788013662e-8, -8.8137358701954553738e-1)}, + {FN (arcsin), ARG(-1.19209289550781250e-07,1.0e+00), RES(-8.4293697021788013662e-8, 8.8137358701954553738e-1)}, + {FN (arcsin), ARG(-1.19209289550781250e-07,-1.0e+00), RES(-8.4293697021788013662e-8, -8.8137358701954553738e-1)}, + {FN (arcsin), ARG(1.19209289550781250e-07,2.0e+00), RES(5.3312014997000413263e-8, 1.4436354751788116136e0)}, + {FN (arcsin), ARG(1.19209289550781250e-07,-2.0e+00), RES(5.3312014997000413263e-8, -1.4436354751788116136e0)}, + {FN (arcsin), ARG(-1.19209289550781250e-07,2.0e+00), RES(-5.3312014997000413263e-8, 1.4436354751788116136e0)}, + {FN (arcsin), ARG(-1.19209289550781250e-07,-2.0e+00), RES(-5.3312014997000413263e-8, -1.4436354751788116136e0)}, + {FN (arcsin), ARG(1.19209289550781250e-07,8.3886080e+06), RES(1.4210854715201902743e-14, 1.6635532333438690979e1)}, + {FN (arcsin), ARG(1.19209289550781250e-07,-8.3886080e+06), RES(1.4210854715201902743e-14, -1.6635532333438690979e1)}, + {FN (arcsin), ARG(-1.19209289550781250e-07,8.3886080e+06), RES(-1.4210854715201902743e-14, 1.6635532333438690979e1)}, + {FN (arcsin), ARG(-1.19209289550781250e-07,-8.3886080e+06), RES(-1.4210854715201902743e-14, -1.6635532333438690979e1)}, + {FN (arcsin), ARG(5.0e-01,0.0e+00), RES(5.2359877559829887308e-1, 0.0)}, + {FN (arcsin), ARG(-5.0e-01,0.0e+00), RES(-5.2359877559829887308e-1, 0.0)}, + {FN (arcsin), ARG(5.0e-01,1.19209289550781250e-07), RES(5.2359877559829340332e-1, 1.3765103082409432364e-7)}, + {FN (arcsin), ARG(5.0e-01,-1.19209289550781250e-07), RES(5.2359877559829340332e-1, -1.3765103082409432364e-7)}, + {FN (arcsin), ARG(-5.0e-01,1.19209289550781250e-07), RES(-5.2359877559829340332e-1, 1.3765103082409432364e-7)}, + {FN (arcsin), ARG(-5.0e-01,-1.19209289550781250e-07), RES(-5.2359877559829340332e-1, -1.3765103082409432364e-7)}, + {FN (arcsin), ARG(5.0e-01,5.0e-01), RES(4.5227844715119068206e-1, 5.3063753095251782602e-1)}, + {FN (arcsin), ARG(5.0e-01,-5.0e-01), RES(4.5227844715119068206e-1, -5.3063753095251782602e-1)}, + {FN (arcsin), ARG(-5.0e-01,5.0e-01), RES(-4.5227844715119068206e-1, 5.3063753095251782602e-1)}, + {FN (arcsin), ARG(-5.0e-01,-5.0e-01), RES(-4.5227844715119068206e-1, -5.3063753095251782602e-1)}, + {FN (arcsin), ARG(5.0e-01,1.0e+00), RES(3.4943906285721329363e-1, 9.2613303135018242455e-1)}, + {FN (arcsin), ARG(5.0e-01,-1.0e+00), RES(3.4943906285721329363e-1, -9.2613303135018242455e-1)}, + {FN (arcsin), ARG(-5.0e-01,1.0e+00), RES(-3.4943906285721329363e-1, 9.2613303135018242455e-1)}, + {FN (arcsin), ARG(-5.0e-01,-1.0e+00), RES(-3.4943906285721329363e-1, -9.2613303135018242455e-1)}, + {FN (arcsin), ARG(5.0e-01,2.0e+00), RES(2.2101863562288385890e-1, 1.4657153519472905218e0)}, + {FN (arcsin), ARG(5.0e-01,-2.0e+00), RES(2.2101863562288385890e-1, -1.4657153519472905218e0)}, + {FN (arcsin), ARG(-5.0e-01,2.0e+00), RES(-2.2101863562288385890e-1, 1.4657153519472905218e0)}, + {FN (arcsin), ARG(-5.0e-01,-2.0e+00), RES(-2.2101863562288385890e-1, -1.4657153519472905218e0)}, + {FN (arcsin), ARG(5.0e-01,8.3886080e+06), RES(5.9604644775390130897e-8, 1.6635532333438692755e1)}, + {FN (arcsin), ARG(5.0e-01,-8.3886080e+06), RES(5.9604644775390130897e-8, -1.6635532333438692755e1)}, + {FN (arcsin), ARG(-5.0e-01,8.3886080e+06), RES(-5.9604644775390130897e-8, 1.6635532333438692755e1)}, + {FN (arcsin), ARG(-5.0e-01,-8.3886080e+06), RES(-5.9604644775390130897e-8, -1.6635532333438692755e1)}, + {FN (arcsin), ARG(1.0e+00,0.0e+00), RES(1.5707963267948966192e0, 0.0)}, + {FN (arcsin), ARG(-1.0e+00,0.0e+00), RES(-1.5707963267948966192e0, 0.0)}, + {FN (arcsin), ARG(1.0e+00,1.19209289550781250e-07), RES(1.5704510598153252947e0, 3.4526698643116312881e-4)}, + {FN (arcsin), ARG(1.0e+00,-1.19209289550781250e-07), RES(1.5704510598153252947e0, -3.4526698643116312881e-4)}, + {FN (arcsin), ARG(-1.0e+00,1.19209289550781250e-07), RES(-1.5704510598153252947e0, 3.4526698643116312881e-4)}, + {FN (arcsin), ARG(-1.0e+00,-1.19209289550781250e-07), RES(-1.5704510598153252947e0, -3.4526698643116312881e-4)}, + {FN (arcsin), ARG(1.0e+00,5.0e-01), RES(8.9590748120889023907e-1, 7.3285767597364526089e-1)}, + {FN (arcsin), ARG(1.0e+00,-5.0e-01), RES(8.9590748120889023907e-1, -7.3285767597364526089e-1)}, + {FN (arcsin), ARG(-1.0e+00,5.0e-01), RES(-8.9590748120889023907e-1, 7.3285767597364526089e-1)}, + {FN (arcsin), ARG(-1.0e+00,-5.0e-01), RES(-8.9590748120889023907e-1, -7.3285767597364526089e-1)}, + {FN (arcsin), ARG(1.0e+00,1.0e+00), RES(6.6623943249251525510e-1, 1.0612750619050356520e0)}, + {FN (arcsin), ARG(1.0e+00,-1.0e+00), RES(6.6623943249251525510e-1, -1.0612750619050356520e0)}, + {FN (arcsin), ARG(-1.0e+00,1.0e+00), RES(-6.6623943249251525510e-1, 1.0612750619050356520e0)}, + {FN (arcsin), ARG(-1.0e+00,-1.0e+00), RES(-6.6623943249251525510e-1, -1.0612750619050356520e0)}, + {FN (arcsin), ARG(1.0e+00,2.0e+00), RES(4.2707858639247612548e-1, 1.5285709194809981613e0)}, + {FN (arcsin), ARG(1.0e+00,-2.0e+00), RES(4.2707858639247612548e-1, -1.5285709194809981613e0)}, + {FN (arcsin), ARG(-1.0e+00,2.0e+00), RES(-4.2707858639247612548e-1, 1.5285709194809981613e0)}, + {FN (arcsin), ARG(-1.0e+00,-2.0e+00), RES(-4.2707858639247612548e-1, -1.5285709194809981613e0)}, + {FN (arcsin), ARG(1.0e+00,8.3886080e+06), RES(1.1920928955077983828e-7, 1.6635532333438698084e1)}, + {FN (arcsin), ARG(1.0e+00,-8.3886080e+06), RES(1.1920928955077983828e-7, -1.6635532333438698084e1)}, + {FN (arcsin), ARG(-1.0e+00,8.3886080e+06), RES(-1.1920928955077983828e-7, 1.6635532333438698084e1)}, + {FN (arcsin), ARG(-1.0e+00,-8.3886080e+06), RES(-1.1920928955077983828e-7, -1.6635532333438698084e1)}, + {FN (arcsin), ARG(2.0e+00,0.0e+00), RES(1.5707963267948966192e0, -1.3169578969248167086e0)}, + {FN (arcsin), ARG(-2.0e+00,0.0e+00), RES(-1.5707963267948966192e0, 1.3169578969248167086e0)}, + {FN (arcsin), ARG(2.0e+00,1.19209289550781250e-07), RES(1.5707962579693812072e0, 1.3169578969248194435e0)}, + {FN (arcsin), ARG(2.0e+00,-1.19209289550781250e-07), RES(1.5707962579693812072e0, -1.3169578969248194435e0)}, + {FN (arcsin), ARG(-2.0e+00,1.19209289550781250e-07), RES(-1.5707962579693812072e0, 1.3169578969248194435e0)}, + {FN (arcsin), ARG(-2.0e+00,-1.19209289550781250e-07), RES(-1.5707962579693812072e0, -1.3169578969248194435e0)}, + {FN (arcsin), ARG(2.0e+00,5.0e-01), RES(1.2930420702371826591e0, 1.3618009008578457882e0)}, + {FN (arcsin), ARG(2.0e+00,-5.0e-01), RES(1.2930420702371826591e0, -1.3618009008578457882e0)}, + {FN (arcsin), ARG(-2.0e+00,5.0e-01), RES(-1.2930420702371826591e0, 1.3618009008578457882e0)}, + {FN (arcsin), ARG(-2.0e+00,-5.0e-01), RES(-1.2930420702371826591e0, -1.3618009008578457882e0)}, + {FN (arcsin), ARG(2.0e+00,1.0e+00), RES(1.0634400235777520562e0, 1.4693517443681852733e0)}, + {FN (arcsin), ARG(2.0e+00,-1.0e+00), RES(1.0634400235777520562e0, -1.4693517443681852733e0)}, + {FN (arcsin), ARG(-2.0e+00,1.0e+00), RES(-1.0634400235777520562e0, 1.4693517443681852733e0)}, + {FN (arcsin), ARG(-2.0e+00,-1.0e+00), RES(-1.0634400235777520562e0, -1.4693517443681852733e0)}, + {FN (arcsin), ARG(2.0e+00,2.0e+00), RES(7.5424914469804604071e-1, 1.7343245214879664480e0)}, + {FN (arcsin), ARG(2.0e+00,-2.0e+00), RES(7.5424914469804604071e-1, -1.7343245214879664480e0)}, + {FN (arcsin), ARG(-2.0e+00,2.0e+00), RES(-7.5424914469804604071e-1, 1.7343245214879664480e0)}, + {FN (arcsin), ARG(-2.0e+00,-2.0e+00), RES(-7.5424914469804604071e-1, -1.7343245214879664480e0)}, + {FN (arcsin), ARG(2.0e+00,8.3886080e+06), RES(2.3841857910155628843e-7, 1.663553233343871940e1)}, + {FN (arcsin), ARG(2.0e+00,-8.3886080e+06), RES(2.3841857910155628843e-7, -1.663553233343871940e1)}, + {FN (arcsin), ARG(-2.0e+00,8.3886080e+06), RES(-2.3841857910155628843e-7, 1.663553233343871940e1)}, + {FN (arcsin), ARG(-2.0e+00,-8.3886080e+06), RES(-2.3841857910155628843e-7, -1.663553233343871940e1)}, + {FN (arcsin), ARG(8.3886080e+06,0.0e+00), RES(1.5707963267948966192e0, -1.6635532333438683873e1)}, + {FN (arcsin), ARG(-8.3886080e+06,0.0e+00), RES(-1.5707963267948966192e0, 1.6635532333438683873e1)}, + {FN (arcsin), ARG(8.3886080e+06,1.19209289550781250e-07), RES(1.5707963267948824084e0, 1.6635532333438683873e1)}, + {FN (arcsin), ARG(8.3886080e+06,-1.19209289550781250e-07), RES(1.5707963267948824084e0, -1.6635532333438683873e1)}, + {FN (arcsin), ARG(-8.3886080e+06,1.19209289550781250e-07), RES(-1.5707963267948824084e0, 1.6635532333438683873e1)}, + {FN (arcsin), ARG(-8.3886080e+06,-1.19209289550781250e-07), RES(-1.5707963267948824084e0, -1.6635532333438683873e1)}, + {FN (arcsin), ARG(8.3886080e+06,5.0e-01), RES(1.5707962671902518438e0, 1.6635532333438685650e1)}, + {FN (arcsin), ARG(8.3886080e+06,-5.0e-01), RES(1.5707962671902518438e0, -1.6635532333438685650e1)}, + {FN (arcsin), ARG(-8.3886080e+06,5.0e-01), RES(-1.5707962671902518438e0, 1.6635532333438685650e1)}, + {FN (arcsin), ARG(-8.3886080e+06,-5.0e-01), RES(-1.5707962671902518438e0, -1.6635532333438685650e1)}, + {FN (arcsin), ARG(8.3886080e+06,1.0e+00), RES(1.5707962075856070684e0, 1.6635532333438690979e1)}, + {FN (arcsin), ARG(8.3886080e+06,-1.0e+00), RES(1.5707962075856070684e0, -1.6635532333438690979e1)}, + {FN (arcsin), ARG(-8.3886080e+06,1.0e+00), RES(-1.5707962075856070684e0, 1.6635532333438690979e1)}, + {FN (arcsin), ARG(-8.3886080e+06,-1.0e+00), RES(-1.5707962075856070684e0, -1.6635532333438690979e1)}, + {FN (arcsin), ARG(8.3886080e+06,2.0e+00), RES(1.5707960883763175177e0, 1.6635532333438712295e1)}, + {FN (arcsin), ARG(8.3886080e+06,-2.0e+00), RES(1.5707960883763175177e0, -1.6635532333438712295e1)}, + {FN (arcsin), ARG(-8.3886080e+06,2.0e+00), RES(-1.5707960883763175177e0, 1.6635532333438712295e1)}, + {FN (arcsin), ARG(-8.3886080e+06,-2.0e+00), RES(-1.5707960883763175177e0, -1.6635532333438712295e1)}, + {FN (arcsin), ARG(8.3886080e+06,8.3886080e+06), RES(7.8539816339744653326e-1, 1.6982105923718660081e1)}, + {FN (arcsin), ARG(8.3886080e+06,-8.3886080e+06), RES(7.8539816339744653326e-1, -1.6982105923718660081e1)}, + {FN (arcsin), ARG(-8.3886080e+06,8.3886080e+06), RES(-7.8539816339744653326e-1, 1.6982105923718660081e1)}, + {FN (arcsin), ARG(-8.3886080e+06,-8.3886080e+06), RES(-7.8539816339744653326e-1, -1.6982105923718660081e1)}, + {FN (arccos), ARG(0.0e+00,0.0e+00), RES(1.5707963267948966192e0, 0.0)}, + {FN (arccos), ARG(0.0e+00,1.19209289550781250e-07), RES(1.5707963267948966192e0, -1.1920928955078096766e-7)}, + {FN (arccos), ARG(0.0e+00,-1.19209289550781250e-07), RES(1.5707963267948966192e0, 1.1920928955078096766e-7)}, + {FN (arccos), ARG(0.0e+00,5.0e-01), RES(1.5707963267948966192e0, -4.8121182505960344750e-1)}, + {FN (arccos), ARG(0.0e+00,-5.0e-01), RES(1.5707963267948966192e0, 4.8121182505960344750e-1)}, + {FN (arccos), ARG(0.0e+00,1.0e+00), RES(1.5707963267948966192e0, -8.8137358701954302523e-1)}, + {FN (arccos), ARG(0.0e+00,-1.0e+00), RES(1.5707963267948966192e0, 8.8137358701954302523e-1)}, + {FN (arccos), ARG(0.0e+00,2.0e+00), RES(1.5707963267948966192e0, -1.4436354751788103425e0)}, + {FN (arccos), ARG(0.0e+00,-2.0e+00), RES(1.5707963267948966192e0, 1.4436354751788103425e0)}, + {FN (arccos), ARG(0.0e+00,8.3886080e+06), RES(1.5707963267948966192e0, -1.6635532333438690979e1)}, + {FN (arccos), ARG(0.0e+00,-8.3886080e+06), RES(1.5707963267948966192e0, 1.6635532333438690979e1)}, + {FN (arccos), ARG(1.19209289550781250e-07,0.0e+00), RES(1.5707962075856070684e0, 0.0)}, + {FN (arccos), ARG(-1.19209289550781250e-07,0.0e+00), RES(1.570796446004186170e0, 0.0)}, + {FN (arccos), ARG(1.19209289550781250e-07,1.19209289550781250e-07), RES(1.5707962075856070685e0, -1.1920928955078181469e-7)}, + {FN (arccos), ARG(1.19209289550781250e-07,-1.19209289550781250e-07), RES(1.5707962075856070685e0, 1.1920928955078181469e-7)}, + {FN (arccos), ARG(-1.19209289550781250e-07,1.19209289550781250e-07), RES(1.570796446004186170e0, -1.1920928955078181469e-7)}, + {FN (arccos), ARG(-1.19209289550781250e-07,-1.19209289550781250e-07), RES(1.570796446004186170e0, 1.1920928955078181469e-7)}, + {FN (arccos), ARG(1.19209289550781250e-07,5.0e-01), RES(1.5707962201708666252e0, -4.8121182505960598961e-1)}, + {FN (arccos), ARG(1.19209289550781250e-07,-5.0e-01), RES(1.5707962201708666252e0, 4.8121182505960598961e-1)}, + {FN (arccos), ARG(-1.19209289550781250e-07,5.0e-01), RES(1.5707964334189266132e0, -4.8121182505960598961e-1)}, + {FN (arccos), ARG(-1.19209289550781250e-07,-5.0e-01), RES(1.5707964334189266132e0, 4.8121182505960598961e-1)}, + {FN (arccos), ARG(1.19209289550781250e-07,1.0e+00), RES(1.5707962425011995974e0, -8.8137358701954553738e-1)}, + {FN (arccos), ARG(1.19209289550781250e-07,-1.0e+00), RES(1.5707962425011995974e0, 8.8137358701954553738e-1)}, + {FN (arccos), ARG(-1.19209289550781250e-07,1.0e+00), RES(1.5707964110885936410e0, -8.8137358701954553738e-1)}, + {FN (arccos), ARG(-1.19209289550781250e-07,-1.0e+00), RES(1.5707964110885936410e0, 8.8137358701954553738e-1)}, + {FN (arccos), ARG(1.19209289550781250e-07,2.0e+00), RES(1.5707962734828816222e0, -1.4436354751788116136e0)}, + {FN (arccos), ARG(1.19209289550781250e-07,-2.0e+00), RES(1.5707962734828816222e0, 1.4436354751788116136e0)}, + {FN (arccos), ARG(-1.19209289550781250e-07,2.0e+00), RES(1.5707963801069116162e0, -1.4436354751788116136e0)}, + {FN (arccos), ARG(-1.19209289550781250e-07,-2.0e+00), RES(1.5707963801069116162e0, 1.4436354751788116136e0)}, + {FN (arccos), ARG(1.19209289550781250e-07,8.3886080e+06), RES(1.5707963267948824084e0, -1.6635532333438690979e1)}, + {FN (arccos), ARG(1.19209289550781250e-07,-8.3886080e+06), RES(1.5707963267948824084e0, 1.6635532333438690979e1)}, + {FN (arccos), ARG(-1.19209289550781250e-07,8.3886080e+06), RES(1.5707963267949108301e0, -1.6635532333438690979e1)}, + {FN (arccos), ARG(-1.19209289550781250e-07,-8.3886080e+06), RES(1.5707963267949108301e0, 1.6635532333438690979e1)}, + {FN (arccos), ARG(5.0e-01,0.0e+00), RES(1.0471975511965977462e0, 0.0)}, + {FN (arccos), ARG(-5.0e-01,0.0e+00), RES(2.0943951023931954923e0, 0.0)}, + {FN (arccos), ARG(5.0e-01,1.19209289550781250e-07), RES(1.0471975511966032159e0, -1.3765103082409432364e-7)}, + {FN (arccos), ARG(5.0e-01,-1.19209289550781250e-07), RES(1.0471975511966032159e0, 1.3765103082409432364e-7)}, + {FN (arccos), ARG(-5.0e-01,1.19209289550781250e-07), RES(2.0943951023931900225e0, -1.3765103082409432364e-7)}, + {FN (arccos), ARG(-5.0e-01,-1.19209289550781250e-07), RES(2.0943951023931900225e0, 1.3765103082409432364e-7)}, + {FN (arccos), ARG(5.0e-01,5.0e-01), RES(1.1185178796437059372e0, -5.3063753095251782602e-1)}, + {FN (arccos), ARG(5.0e-01,-5.0e-01), RES(1.1185178796437059372e0, 5.3063753095251782602e-1)}, + {FN (arccos), ARG(-5.0e-01,5.0e-01), RES(2.0230747739460873013e0, -5.3063753095251782602e-1)}, + {FN (arccos), ARG(-5.0e-01,-5.0e-01), RES(2.0230747739460873013e0, 5.3063753095251782602e-1)}, + {FN (arccos), ARG(5.0e-01,1.0e+00), RES(1.2213572639376833256e0, -9.2613303135018242455e-1)}, + {FN (arccos), ARG(5.0e-01,-1.0e+00), RES(1.2213572639376833256e0, 9.2613303135018242455e-1)}, + {FN (arccos), ARG(-5.0e-01,1.0e+00), RES(1.9202353896521099129e0, -9.2613303135018242455e-1)}, + {FN (arccos), ARG(-5.0e-01,-1.0e+00), RES(1.9202353896521099129e0, 9.2613303135018242455e-1)}, + {FN (arccos), ARG(5.0e-01,2.0e+00), RES(1.3497776911720127603e0, -1.4657153519472905218e0)}, + {FN (arccos), ARG(5.0e-01,-2.0e+00), RES(1.3497776911720127603e0, 1.4657153519472905218e0)}, + {FN (arccos), ARG(-5.0e-01,2.0e+00), RES(1.7918149624177804781e0, -1.4657153519472905218e0)}, + {FN (arccos), ARG(-5.0e-01,-2.0e+00), RES(1.7918149624177804781e0, 1.4657153519472905218e0)}, + {FN (arccos), ARG(5.0e-01,8.3886080e+06), RES(1.5707962671902518438e0, -1.6635532333438692755e1)}, + {FN (arccos), ARG(5.0e-01,-8.3886080e+06), RES(1.5707962671902518438e0, 1.6635532333438692755e1)}, + {FN (arccos), ARG(-5.0e-01,8.3886080e+06), RES(1.5707963863995413946e0, -1.6635532333438692755e1)}, + {FN (arccos), ARG(-5.0e-01,-8.3886080e+06), RES(1.5707963863995413946e0, 1.6635532333438692755e1)}, + {FN (arccos), ARG(1.0e+00,0.0e+00), RES(0e0, 0.0)}, + {FN (arccos), ARG(-1.0e+00,0.0e+00), RES(3.1415926535897932385e0, 0.0)}, + {FN (arccos), ARG(1.0e+00,1.19209289550781250e-07), RES(3.4526697957132450399e-4, -3.4526698643116312881e-4)}, + {FN (arccos), ARG(1.0e+00,-1.19209289550781250e-07), RES(3.4526697957132450399e-4, 3.4526698643116312881e-4)}, + {FN (arccos), ARG(-1.0e+00,1.19209289550781250e-07), RES(3.1412473866102219140e0, -3.4526698643116312881e-4)}, + {FN (arccos), ARG(-1.0e+00,-1.19209289550781250e-07), RES(3.1412473866102219140e0, 3.4526698643116312881e-4)}, + {FN (arccos), ARG(1.0e+00,5.0e-01), RES(6.7488884558600638016e-1, -7.3285767597364526089e-1)}, + {FN (arccos), ARG(1.0e+00,-5.0e-01), RES(6.7488884558600638016e-1, 7.3285767597364526089e-1)}, + {FN (arccos), ARG(-1.0e+00,5.0e-01), RES(2.4667038080037868583e0, -7.3285767597364526089e-1)}, + {FN (arccos), ARG(-1.0e+00,-5.0e-01), RES(2.4667038080037868583e0, 7.3285767597364526089e-1)}, + {FN (arccos), ARG(1.0e+00,1.0e+00), RES(9.0455689430238136413e-1, -1.0612750619050356520e0)}, + {FN (arccos), ARG(1.0e+00,-1.0e+00), RES(9.0455689430238136413e-1, 1.0612750619050356520e0)}, + {FN (arccos), ARG(-1.0e+00,1.0e+00), RES(2.2370357592874118743e0, -1.0612750619050356520e0)}, + {FN (arccos), ARG(-1.0e+00,-1.0e+00), RES(2.2370357592874118743e0, 1.0612750619050356520e0)}, + {FN (arccos), ARG(1.0e+00,2.0e+00), RES(1.1437177404024204938e0, -1.5285709194809981613e0)}, + {FN (arccos), ARG(1.0e+00,-2.0e+00), RES(1.1437177404024204938e0, 1.5285709194809981613e0)}, + {FN (arccos), ARG(-1.0e+00,2.0e+00), RES(1.9978749131873727447e0, -1.5285709194809981613e0)}, + {FN (arccos), ARG(-1.0e+00,-2.0e+00), RES(1.9978749131873727447e0, 1.5285709194809981613e0)}, + {FN (arccos), ARG(1.0e+00,8.3886080e+06), RES(1.5707962075856070685e0, -1.6635532333438698084e1)}, + {FN (arccos), ARG(1.0e+00,-8.3886080e+06), RES(1.5707962075856070685e0, 1.6635532333438698084e1)}, + {FN (arccos), ARG(-1.0e+00,8.3886080e+06), RES(1.570796446004186170e0, -1.6635532333438698084e1)}, + {FN (arccos), ARG(-1.0e+00,-8.3886080e+06), RES(1.570796446004186170e0, 1.6635532333438698084e1)}, + {FN (arccos), ARG(2.0e+00,0.0e+00), RES(0, 1.3169578969248167086e0)}, + {FN (arccos), ARG(-2.0e+00,0.0e+00), RES(3.1415926535897932385e0, -1.3169578969248167086e0)}, + {FN (arccos), ARG(2.0e+00,1.19209289550781250e-07), RES(6.8825515412047433504e-8, -1.3169578969248194435e0)}, + {FN (arccos), ARG(2.0e+00,-1.19209289550781250e-07), RES(6.8825515412047433504e-8, 1.3169578969248194435e0)}, + {FN (arccos), ARG(-2.0e+00,1.19209289550781250e-07), RES(3.1415925847642778264e0, -1.3169578969248194435e0)}, + {FN (arccos), ARG(-2.0e+00,-1.19209289550781250e-07), RES(3.1415925847642778264e0, 1.3169578969248194435e0)}, + {FN (arccos), ARG(2.0e+00,5.0e-01), RES(2.7775425655771396018e-1, -1.3618009008578457882e0)}, + {FN (arccos), ARG(2.0e+00,-5.0e-01), RES(2.7775425655771396018e-1, 1.3618009008578457882e0)}, + {FN (arccos), ARG(-2.0e+00,5.0e-01), RES(2.8638383970320792783e0, -1.3618009008578457882e0)}, + {FN (arccos), ARG(-2.0e+00,-5.0e-01), RES(2.8638383970320792783e0, 1.3618009008578457882e0)}, + {FN (arccos), ARG(2.0e+00,1.0e+00), RES(5.0735630321714456304e-1, -1.4693517443681852733e0)}, + {FN (arccos), ARG(2.0e+00,-1.0e+00), RES(5.0735630321714456304e-1, 1.4693517443681852733e0)}, + {FN (arccos), ARG(-2.0e+00,1.0e+00), RES(2.6342363503726486754e0, -1.4693517443681852733e0)}, + {FN (arccos), ARG(-2.0e+00,-1.0e+00), RES(2.6342363503726486754e0, 1.4693517443681852733e0)}, + {FN (arccos), ARG(2.0e+00,2.0e+00), RES(8.1654718209685057852e-1, -1.7343245214879664480e0)}, + {FN (arccos), ARG(2.0e+00,-2.0e+00), RES(8.1654718209685057852e-1, 1.7343245214879664480e0)}, + {FN (arccos), ARG(-2.0e+00,2.0e+00), RES(2.3250454714929426599e0, -1.7343245214879664480e0)}, + {FN (arccos), ARG(-2.0e+00,-2.0e+00), RES(2.3250454714929426599e0, 1.7343245214879664480e0)}, + {FN (arccos), ARG(2.0e+00,8.3886080e+06), RES(1.5707960883763175177e0, -1.663553233343871940e1)}, + {FN (arccos), ARG(2.0e+00,-8.3886080e+06), RES(1.5707960883763175177e0, 1.663553233343871940e1)}, + {FN (arccos), ARG(-2.0e+00,8.3886080e+06), RES(1.5707965652134757208e0, -1.663553233343871940e1)}, + {FN (arccos), ARG(-2.0e+00,-8.3886080e+06), RES(1.5707965652134757208e0, 1.663553233343871940e1)}, + {FN (arccos), ARG(8.3886080e+06,0.0e+00), RES(0, 1.6635532333438683873e1)}, + {FN (arccos), ARG(-8.3886080e+06,0.0e+00), RES(3.1415926535897932385e0, -1.6635532333438683873e1)}, + {FN (arccos), ARG(8.3886080e+06,1.19209289550781250e-07), RES(1.4210854715202104692e-14, -1.6635532333438683873e1)}, + {FN (arccos), ARG(8.3886080e+06,-1.19209289550781250e-07), RES(1.4210854715202104692e-14, 1.6635532333438683873e1)}, + {FN (arccos), ARG(-8.3886080e+06,1.19209289550781250e-07), RES(3.1415926535897790276e0, -1.6635532333438683873e1)}, + {FN (arccos), ARG(-8.3886080e+06,-1.19209289550781250e-07), RES(3.1415926535897790276e0, 1.6635532333438683873e1)}, + {FN (arccos), ARG(8.3886080e+06,5.0e-01), RES(5.9604644775390977930e-8, -1.6635532333438685650e1)}, + {FN (arccos), ARG(8.3886080e+06,-5.0e-01), RES(5.9604644775390977930e-8, 1.6635532333438685650e1)}, + {FN (arccos), ARG(-8.3886080e+06,5.0e-01), RES(3.1415925939851484631e0, -1.6635532333438685650e1)}, + {FN (arccos), ARG(-8.3886080e+06,-5.0e-01), RES(3.1415925939851484631e0, 1.6635532333438685650e1)}, + {FN (arccos), ARG(8.3886080e+06,1.0e+00), RES(1.1920928955078153234e-7, -1.6635532333438690979e1)}, + {FN (arccos), ARG(8.3886080e+06,-1.0e+00), RES(1.1920928955078153234e-7, 1.6635532333438690979e1)}, + {FN (arccos), ARG(-8.3886080e+06,1.0e+00), RES(3.1415925343805036877e0, -1.6635532333438690979e1)}, + {FN (arccos), ARG(-8.3886080e+06,-1.0e+00), RES(3.1415925343805036877e0, 1.6635532333438690979e1)}, + {FN (arccos), ARG(8.3886080e+06,2.0e+00), RES(2.3841857910155967656e-7, -1.6635532333438712295e1)}, + {FN (arccos), ARG(8.3886080e+06,-2.0e+00), RES(2.3841857910155967656e-7, 1.6635532333438712295e1)}, + {FN (arccos), ARG(-8.3886080e+06,2.0e+00), RES(3.1415924151712141369e0, -1.6635532333438712295e1)}, + {FN (arccos), ARG(-8.3886080e+06,-2.0e+00), RES(3.1415924151712141369e0, 1.6635532333438712295e1)}, + {FN (arccos), ARG(8.3886080e+06,8.3886080e+06), RES(7.8539816339745008597e-1, -1.6982105923718660081e1)}, + {FN (arccos), ARG(8.3886080e+06,-8.3886080e+06), RES(7.8539816339745008597e-1, 1.6982105923718660081e1)}, + {FN (arccos), ARG(-8.3886080e+06,8.3886080e+06), RES(2.3561944901923431525e0, -1.6982105923718660081e1)}, + {FN (arccos), ARG(-8.3886080e+06,-8.3886080e+06), RES(2.3561944901923431525e0, 1.6982105923718660081e1)}, + {FN (arctan), ARG(0.0e+00,0.0e+00), RES(0e0, 0.0)}, + {FN (arctan), ARG(0.0e+00,1.19209289550781250e-07), RES(0, 1.1920928955078181469e-7)}, + {FN (arctan), ARG(0.0e+00,-1.19209289550781250e-07), RES(0, -1.1920928955078181469e-7)}, + {FN (arctan), ARG(0.0e+00,5.0e-01), RES(0, 5.4930614433405484570e-1)}, + {FN (arctan), ARG(0.0e+00,-5.0e-01), RES(0, -5.4930614433405484570e-1)}, + {FN (arctan), ARG(0.0e+00,2.0e+00), RES(1.5707963267948966192e0, 5.4930614433405484570e-1)}, + {FN (arctan), ARG(0.0e+00,-2.0e+00), RES(-1.5707963267948966192e0, -5.4930614433405484570e-1)}, + {FN (arctan), ARG(0.0e+00,8.3886080e+06), RES(1.5707963267948966192e0, 1.1920928955078181469e-7)}, + {FN (arctan), ARG(0.0e+00,-8.3886080e+06), RES(-1.5707963267948966192e0, -1.1920928955078181469e-7)}, + {FN (arctan), ARG(1.19209289550781250e-07,0.0e+00), RES(1.1920928955078068531e-7, 0.0)}, + {FN (arctan), ARG(-1.19209289550781250e-07,0.0e+00), RES(-1.1920928955078068531e-7, 0.0)}, + {FN (arctan), ARG(1.19209289550781250e-07,1.19209289550781250e-07), RES(1.1920928955078237938e-7, 1.1920928955078012062e-7)}, + {FN (arctan), ARG(1.19209289550781250e-07,-1.19209289550781250e-07), RES(1.1920928955078237938e-7, -1.1920928955078012062e-7)}, + {FN (arctan), ARG(-1.19209289550781250e-07,1.19209289550781250e-07), RES(-1.1920928955078237938e-7, 1.1920928955078012062e-7)}, + {FN (arctan), ARG(-1.19209289550781250e-07,-1.19209289550781250e-07), RES(-1.1920928955078237938e-7, -1.1920928955078012062e-7)}, + {FN (arctan), ARG(1.19209289550781250e-07,5.0e-01), RES(1.5894571940103932425e-7, 5.4930614433404221383e-1)}, + {FN (arctan), ARG(1.19209289550781250e-07,-5.0e-01), RES(1.5894571940103932425e-7, -5.4930614433404221383e-1)}, + {FN (arctan), ARG(-1.19209289550781250e-07,5.0e-01), RES(-1.5894571940103932425e-7, 5.4930614433404221383e-1)}, + {FN (arctan), ARG(-1.19209289550781250e-07,-5.0e-01), RES(-1.5894571940103932425e-7, -5.4930614433404221383e-1)}, + {FN (arctan), ARG(1.19209289550781250e-07,1.0e+00), RES(7.8539819319977069731e-1, 8.3177661667193446012e0)}, + {FN (arctan), ARG(1.19209289550781250e-07,-1.0e+00), RES(7.8539819319977069731e-1, -8.3177661667193446012e0)}, + {FN (arctan), ARG(-1.19209289550781250e-07,1.0e+00), RES(-7.8539819319977069731e-1, 8.3177661667193446012e0)}, + {FN (arctan), ARG(-1.19209289550781250e-07,-1.0e+00), RES(-7.8539819319977069731e-1, -8.3177661667193446012e0)}, + {FN (arctan), ARG(1.19209289550781250e-07,2.0e+00), RES(1.5707962870584667690e0, 5.4930614433405168773e-1)}, + {FN (arctan), ARG(1.19209289550781250e-07,-2.0e+00), RES(1.5707962870584667690e0, -5.4930614433405168773e-1)}, + {FN (arctan), ARG(-1.19209289550781250e-07,2.0e+00), RES(-1.5707962870584667690e0, 5.4930614433405168773e-1)}, + {FN (arctan), ARG(-1.19209289550781250e-07,-2.0e+00), RES(-1.5707962870584667690e0, -5.4930614433405168773e-1)}, + {FN (arctan), ARG(1.19209289550781250e-07,8.3886080e+06), RES(1.5707963267948966192e0, 1.1920928955078181469e-7)}, + {FN (arctan), ARG(1.19209289550781250e-07,-8.3886080e+06), RES(1.5707963267948966192e0, -1.1920928955078181469e-7)}, + {FN (arctan), ARG(-1.19209289550781250e-07,8.3886080e+06), RES(-1.5707963267948966192e0, 1.1920928955078181469e-7)}, + {FN (arctan), ARG(-1.19209289550781250e-07,-8.3886080e+06), RES(-1.5707963267948966192e0, -1.1920928955078181469e-7)}, + {FN (arctan), ARG(5.0e-01,0.0e+00), RES(4.6364760900080611621e-1, 0.0)}, + {FN (arctan), ARG(-5.0e-01,0.0e+00), RES(-4.6364760900080611621e-1, 0.0)}, + {FN (arctan), ARG(5.0e-01,1.19209289550781250e-07), RES(4.6364760900081066369e-1, 9.5367431640625072280e-8)}, + {FN (arctan), ARG(5.0e-01,-1.19209289550781250e-07), RES(4.6364760900081066369e-1, -9.5367431640625072280e-8)}, + {FN (arctan), ARG(-5.0e-01,1.19209289550781250e-07), RES(-4.6364760900081066369e-1, 9.5367431640625072280e-8)}, + {FN (arctan), ARG(-5.0e-01,-1.19209289550781250e-07), RES(-4.6364760900081066369e-1, -9.5367431640625072280e-8)}, + {FN (arctan), ARG(5.0e-01,5.0e-01), RES(5.5357435889704525151e-1, 4.0235947810852509365e-1)}, + {FN (arctan), ARG(5.0e-01,-5.0e-01), RES(5.5357435889704525151e-1, -4.0235947810852509365e-1)}, + {FN (arctan), ARG(-5.0e-01,5.0e-01), RES(-5.5357435889704525151e-1, 4.0235947810852509365e-1)}, + {FN (arctan), ARG(-5.0e-01,-5.0e-01), RES(-5.5357435889704525151e-1, -4.0235947810852509365e-1)}, + {FN (arctan), ARG(5.0e-01,1.0e+00), RES(9.0788749496088038670e-1, 7.0830333601405402006e-1)}, + {FN (arctan), ARG(5.0e-01,-1.0e+00), RES(9.0788749496088038670e-1, -7.0830333601405402006e-1)}, + {FN (arctan), ARG(-5.0e-01,1.0e+00), RES(-9.0788749496088038670e-1, 7.0830333601405402006e-1)}, + {FN (arctan), ARG(-5.0e-01,-1.0e+00), RES(-9.0788749496088038670e-1, -7.0830333601405402006e-1)}, + {FN (arctan), ARG(5.0e-01,2.0e+00), RES(1.4215468610018069803e0, 5.0037000005253101744e-1)}, + {FN (arctan), ARG(5.0e-01,-2.0e+00), RES(1.4215468610018069803e0, -5.0037000005253101744e-1)}, + {FN (arctan), ARG(-5.0e-01,2.0e+00), RES(-1.4215468610018069803e0, 5.0037000005253101744e-1)}, + {FN (arctan), ARG(-5.0e-01,-2.0e+00), RES(-1.4215468610018069803e0, -5.0037000005253101744e-1)}, + {FN (arctan), ARG(5.0e-01,8.3886080e+06), RES(1.5707963267948895138e0, 1.1920928955078139117e-7)}, + {FN (arctan), ARG(5.0e-01,-8.3886080e+06), RES(1.5707963267948895138e0, -1.1920928955078139117e-7)}, + {FN (arctan), ARG(-5.0e-01,8.3886080e+06), RES(-1.5707963267948895138e0, 1.1920928955078139117e-7)}, + {FN (arctan), ARG(-5.0e-01,-8.3886080e+06), RES(-1.5707963267948895138e0, -1.1920928955078139117e-7)}, + {FN (arctan), ARG(1.0e+00,0.0e+00), RES(7.8539816339744830962e-1, 0.0)}, + {FN (arctan), ARG(-1.0e+00,0.0e+00), RES(-7.8539816339744830962e-1, 0.0)}, + {FN (arctan), ARG(1.0e+00,1.19209289550781250e-07), RES(7.8539816339745186233e-1, 5.9604644775390483828e-8)}, + {FN (arctan), ARG(1.0e+00,-1.19209289550781250e-07), RES(7.8539816339745186233e-1, -5.9604644775390483828e-8)}, + {FN (arctan), ARG(-1.0e+00,1.19209289550781250e-07), RES(-7.8539816339745186233e-1, 5.9604644775390483828e-8)}, + {FN (arctan), ARG(-1.0e+00,-1.19209289550781250e-07), RES(-7.8539816339745186233e-1, -5.9604644775390483828e-8)}, + {FN (arctan), ARG(1.0e+00,5.0e-01), RES(8.4757566067082902713e-1, 2.3887786125685909036e-1)}, + {FN (arctan), ARG(1.0e+00,-5.0e-01), RES(8.4757566067082902713e-1, -2.3887786125685909036e-1)}, + {FN (arctan), ARG(-1.0e+00,5.0e-01), RES(-8.4757566067082902713e-1, 2.3887786125685909036e-1)}, + {FN (arctan), ARG(-1.0e+00,-5.0e-01), RES(-8.4757566067082902713e-1, -2.3887786125685909036e-1)}, + {FN (arctan), ARG(1.0e+00,1.0e+00), RES(1.0172219678978513677e0, 4.0235947810852509365e-1)}, + {FN (arctan), ARG(1.0e+00,-1.0e+00), RES(1.0172219678978513677e0, -4.0235947810852509365e-1)}, + {FN (arctan), ARG(-1.0e+00,1.0e+00), RES(-1.0172219678978513677e0, 4.0235947810852509365e-1)}, + {FN (arctan), ARG(-1.0e+00,-1.0e+00), RES(-1.0172219678978513677e0, -4.0235947810852509365e-1)}, + {FN (arctan), ARG(1.0e+00,2.0e+00), RES(1.3389725222944935611e0, 4.0235947810852509365e-1)}, + {FN (arctan), ARG(1.0e+00,-2.0e+00), RES(1.3389725222944935611e0, -4.0235947810852509365e-1)}, + {FN (arctan), ARG(-1.0e+00,2.0e+00), RES(-1.3389725222944935611e0, 4.0235947810852509365e-1)}, + {FN (arctan), ARG(-1.0e+00,-2.0e+00), RES(-1.3389725222944935611e0, -4.0235947810852509365e-1)}, + {FN (arctan), ARG(1.0e+00,8.3886080e+06), RES(1.5707963267948824084e0, 1.1920928955078012062e-7)}, + {FN (arctan), ARG(1.0e+00,-8.3886080e+06), RES(1.5707963267948824084e0, -1.1920928955078012062e-7)}, + {FN (arctan), ARG(-1.0e+00,8.3886080e+06), RES(-1.5707963267948824084e0, 1.1920928955078012062e-7)}, + {FN (arctan), ARG(-1.0e+00,-8.3886080e+06), RES(-1.5707963267948824084e0, -1.1920928955078012062e-7)}, + {FN (arctan), ARG(2.0e+00,0.0e+00), RES(1.1071487177940905030e0, 0.0)}, + {FN (arctan), ARG(-2.0e+00,0.0e+00), RES(-1.1071487177940905030e0, 0.0)}, + {FN (arctan), ARG(2.0e+00,1.19209289550781250e-07), RES(1.1071487177940916399e0, 2.3841857910156200307e-8)}, + {FN (arctan), ARG(2.0e+00,-1.19209289550781250e-07), RES(1.1071487177940916399e0, -2.3841857910156200307e-8)}, + {FN (arctan), ARG(-2.0e+00,1.19209289550781250e-07), RES(-1.1071487177940916399e0, 2.3841857910156200307e-8)}, + {FN (arctan), ARG(-2.0e+00,-1.19209289550781250e-07), RES(-1.1071487177940916399e0, -2.3841857910156200307e-8)}, + {FN (arctan), ARG(2.0e+00,5.0e-01), RES(1.1265564408348223487e0, 9.6415620202996167238e-2)}, + {FN (arctan), ARG(2.0e+00,-5.0e-01), RES(1.1265564408348223487e0, -9.6415620202996167238e-2)}, + {FN (arctan), ARG(-2.0e+00,5.0e-01), RES(-1.1265564408348223487e0, 9.6415620202996167238e-2)}, + {FN (arctan), ARG(-2.0e+00,-5.0e-01), RES(-1.1265564408348223487e0, -9.6415620202996167238e-2)}, + {FN (arctan), ARG(2.0e+00,1.0e+00), RES(1.1780972450961724644e0, 1.7328679513998632735e-1)}, + {FN (arctan), ARG(2.0e+00,-1.0e+00), RES(1.1780972450961724644e0, -1.7328679513998632735e-1)}, + {FN (arctan), ARG(-2.0e+00,1.0e+00), RES(-1.1780972450961724644e0, 1.7328679513998632735e-1)}, + {FN (arctan), ARG(-2.0e+00,-1.0e+00), RES(-1.1780972450961724644e0, -1.7328679513998632735e-1)}, + {FN (arctan), ARG(2.0e+00,2.0e+00), RES(1.3112232696716351433e0, 2.3887786125685909036e-1)}, + {FN (arctan), ARG(2.0e+00,-2.0e+00), RES(1.3112232696716351433e0, -2.3887786125685909036e-1)}, + {FN (arctan), ARG(-2.0e+00,2.0e+00), RES(-1.3112232696716351433e0, 2.3887786125685909036e-1)}, + {FN (arctan), ARG(-2.0e+00,-2.0e+00), RES(-1.3112232696716351433e0, -2.3887786125685909036e-1)}, + {FN (arctan), ARG(2.0e+00,8.3886080e+06), RES(1.5707963267948681975e0, 1.1920928955077503843e-7)}, + {FN (arctan), ARG(2.0e+00,-8.3886080e+06), RES(1.5707963267948681975e0, -1.1920928955077503843e-7)}, + {FN (arctan), ARG(-2.0e+00,8.3886080e+06), RES(-1.5707963267948681975e0, 1.1920928955077503843e-7)}, + {FN (arctan), ARG(-2.0e+00,-8.3886080e+06), RES(-1.5707963267948681975e0, -1.1920928955077503843e-7)}, + {FN (arctan), ARG(8.3886080e+06,0.0e+00), RES(1.5707962075856070685e0, 0.0)}, + {FN (arctan), ARG(-8.3886080e+06,0.0e+00), RES(-1.5707962075856070685e0, 0.0)}, + {FN (arctan), ARG(8.3886080e+06,1.19209289550781250e-07), RES(1.5707962075856070685e0, 1.6940658945085766040e-21)}, + {FN (arctan), ARG(8.3886080e+06,-1.19209289550781250e-07), RES(1.5707962075856070685e0, -1.6940658945085766040e-21)}, + {FN (arctan), ARG(-8.3886080e+06,1.19209289550781250e-07), RES(-1.5707962075856070685e0, 1.6940658945085766040e-21)}, + {FN (arctan), ARG(-8.3886080e+06,-1.19209289550781250e-07), RES(-1.5707962075856070685e0, -1.6940658945085766040e-21)}, + {FN (arctan), ARG(8.3886080e+06,5.0e-01), RES(1.5707962075856070685e0, 7.1054273576008756410e-15)}, + {FN (arctan), ARG(8.3886080e+06,-5.0e-01), RES(1.5707962075856070685e0, -7.1054273576008756410e-15)}, + {FN (arctan), ARG(-8.3886080e+06,5.0e-01), RES(-1.5707962075856070685e0, 7.1054273576008756410e-15)}, + {FN (arctan), ARG(-8.3886080e+06,-5.0e-01), RES(-1.5707962075856070685e0, -7.1054273576008756410e-15)}, + {FN (arctan), ARG(8.3886080e+06,1.0e+00), RES(1.5707962075856070685e0, 1.4210854715201599821e-14)}, + {FN (arctan), ARG(8.3886080e+06,-1.0e+00), RES(1.5707962075856070685e0, -1.4210854715201599821e-14)}, + {FN (arctan), ARG(-8.3886080e+06,1.0e+00), RES(-1.5707962075856070685e0, 1.4210854715201599821e-14)}, + {FN (arctan), ARG(-8.3886080e+06,-1.0e+00), RES(-1.5707962075856070685e0, -1.4210854715201599821e-14)}, + {FN (arctan), ARG(8.3886080e+06,2.0e+00), RES(1.5707962075856070685e0, 2.8421709430401987951e-14)}, + {FN (arctan), ARG(8.3886080e+06,-2.0e+00), RES(1.5707962075856070685e0, -2.8421709430401987951e-14)}, + {FN (arctan), ARG(-8.3886080e+06,2.0e+00), RES(-1.5707962075856070685e0, 2.8421709430401987951e-14)}, + {FN (arctan), ARG(-8.3886080e+06,-2.0e+00), RES(-1.5707962075856070685e0, -2.8421709430401987951e-14)}, + {FN (arctan), ARG(8.3886080e+06,8.3886080e+06), RES(1.5707962671902518438e0, 5.9604644775390483828e-8)}, + {FN (arctan), ARG(8.3886080e+06,-8.3886080e+06), RES(1.5707962671902518438e0, -5.9604644775390483828e-8)}, + {FN (arctan), ARG(-8.3886080e+06,8.3886080e+06), RES(-1.5707962671902518438e0, 5.9604644775390483828e-8)}, + {FN (arctan), ARG(-8.3886080e+06,-8.3886080e+06), RES(-1.5707962671902518438e0, -5.9604644775390483828e-8)}, + {FN (sinh), ARG(0.0e+00,-3.45266983001243932001e-04), RES(0, -3.4526697614140534807e-4)}, + {FN (sinh), ARG(0.0e+00,3.45266983001243932001e-04), RES(0, 3.4526697614140534807e-4)}, + {FN (sinh), ARG(0.0e+00,1.57045105981189525579e+00), RES(0, 9.9999994039535581669e-1)}, + {FN (sinh), ARG(0.0e+00,-1.57045105981189525579e+00), RES(0, -9.9999994039535581669e-1)}, + {FN (sinh), ARG(0.0e+00,1.57114159377789786021e+00), RES(0, 9.9999994039535581673e-1)}, + {FN (sinh), ARG(0.0e+00,-1.57114159377789786021e+00), RES(0, -9.9999994039535581673e-1)}, + {FN (sinh), ARG(0.0e+00,3.14124738660679181379e+00), RES(0, 3.4526697614158608860e-4)}, + {FN (sinh), ARG(0.0e+00,-3.14124738660679181379e+00), RES(0, -3.4526697614158608860e-4)}, + {FN (sinh), ARG(0.0e+00,3.14193792057279441821e+00), RES(0, -3.4526697614134115926e-4)}, + {FN (sinh), ARG(0.0e+00,-3.14193792057279441821e+00), RES(0, 3.4526697614134115926e-4)}, + {FN (sinh), ARG(0.0e+00,4.71204371340168837179e+00), RES(0, -9.9999994039535581664e-1)}, + {FN (sinh), ARG(0.0e+00,-4.71204371340168837179e+00), RES(0, 9.9999994039535581664e-1)}, + {FN (sinh), ARG(0.0e+00,4.71273424736769097620e+00), RES(0, -9.9999994039535581677e-1)}, + {FN (sinh), ARG(0.0e+00,-4.71273424736769097620e+00), RES(0, 9.9999994039535581677e-1)}, + {FN (sinh), ARG(0.0e+00,6.28284004019658492979e+00), RES(0, -3.4526697614170855328e-4)}, + {FN (sinh), ARG(0.0e+00,-6.28284004019658492979e+00), RES(0, 3.4526697614170855328e-4)}, + {FN (sinh), ARG(0.0e+00,6.28353057416258753420e+00), RES(0, 3.4526697614121869459e-4)}, + {FN (sinh), ARG(0.0e+00,-6.28353057416258753420e+00), RES(0, -3.4526697614121869459e-4)}, + {FN (sinh), ARG(0.0e+00,9.42443269378637893396e+00), RES(0, 3.4526697614094283958e-4)}, + {FN (sinh), ARG(0.0e+00,-9.42443269378637893396e+00), RES(0, -3.4526697614094283958e-4)}, + {FN (sinh), ARG(0.0e+00,9.42512322775237976202e+00), RES(0, -3.4526697614020805155e-4)}, + {FN (sinh), ARG(0.0e+00,-9.42512322775237976202e+00), RES(0, 3.4526697614020805155e-4)}, + {FN (sinh), ARG(1.19209289550781250e-07,-3.45266983001243932001e-04), RES(1.1920928244535424533e-7, -3.4526697614140780134e-4)}, + {FN (sinh), ARG(1.19209289550781250e-07,3.45266983001243932001e-04), RES(1.1920928244535424533e-7, 3.4526697614140780134e-4)}, + {FN (sinh), ARG(-1.19209289550781250e-07,-3.45266983001243932001e-04), RES(-1.1920928244535424533e-7, -3.4526697614140780134e-4)}, + {FN (sinh), ARG(-1.19209289550781250e-07,3.45266983001243932001e-04), RES(-1.1920928244535424533e-7, 3.4526697614140780134e-4)}, + {FN (sinh), ARG(1.19209289550781250e-07,1.57045105981189525579e+00), RES(4.1159030931177815679e-11, 9.9999994039536292211e-1)}, + {FN (sinh), ARG(1.19209289550781250e-07,-1.57045105981189525579e+00), RES(4.1159030931177815679e-11, -9.9999994039536292211e-1)}, + {FN (sinh), ARG(-1.19209289550781250e-07,1.57045105981189525579e+00), RES(-4.1159030931177815679e-11, 9.9999994039536292211e-1)}, + {FN (sinh), ARG(-1.19209289550781250e-07,-1.57045105981189525579e+00), RES(-4.1159030931177815679e-11, -9.9999994039536292211e-1)}, + {FN (sinh), ARG(1.19209289550781250e-07,1.57114159377789786021e+00), RES(-4.1159030931163216752e-11, 9.9999994039536292216e-1)}, + {FN (sinh), ARG(1.19209289550781250e-07,-1.57114159377789786021e+00), RES(-4.1159030931163216752e-11, -9.9999994039536292216e-1)}, + {FN (sinh), ARG(-1.19209289550781250e-07,1.57114159377789786021e+00), RES(4.1159030931163216752e-11, 9.9999994039536292216e-1)}, + {FN (sinh), ARG(-1.19209289550781250e-07,-1.57114159377789786021e+00), RES(4.1159030931163216752e-11, -9.9999994039536292216e-1)}, + {FN (sinh), ARG(1.19209289550781250e-07,3.14124738660679181379e+00), RES(-1.1920928244535424532e-7, 3.4526697614158854187e-4)}, + {FN (sinh), ARG(1.19209289550781250e-07,-3.14124738660679181379e+00), RES(-1.1920928244535424532e-7, -3.4526697614158854187e-4)}, + {FN (sinh), ARG(-1.19209289550781250e-07,3.14124738660679181379e+00), RES(1.1920928244535424532e-7, 3.4526697614158854187e-4)}, + {FN (sinh), ARG(-1.19209289550781250e-07,-3.14124738660679181379e+00), RES(1.1920928244535424532e-7, -3.4526697614158854187e-4)}, + {FN (sinh), ARG(1.19209289550781250e-07,3.14193792057279441821e+00), RES(-1.1920928244535424533e-7, -3.4526697614134361253e-4)}, + {FN (sinh), ARG(1.19209289550781250e-07,-3.14193792057279441821e+00), RES(-1.1920928244535424533e-7, 3.4526697614134361253e-4)}, + {FN (sinh), ARG(-1.19209289550781250e-07,3.14193792057279441821e+00), RES(1.1920928244535424533e-7, -3.4526697614134361253e-4)}, + {FN (sinh), ARG(-1.19209289550781250e-07,-3.14193792057279441821e+00), RES(1.1920928244535424533e-7, 3.4526697614134361253e-4)}, + {FN (sinh), ARG(1.19209289550781250e-07,4.71204371340168837179e+00), RES(-4.1159030931192414605e-11, -9.9999994039536292207e-1)}, + {FN (sinh), ARG(1.19209289550781250e-07,-4.71204371340168837179e+00), RES(-4.1159030931192414605e-11, 9.9999994039536292207e-1)}, + {FN (sinh), ARG(-1.19209289550781250e-07,4.71204371340168837179e+00), RES(4.1159030931192414605e-11, -9.9999994039536292207e-1)}, + {FN (sinh), ARG(-1.19209289550781250e-07,-4.71204371340168837179e+00), RES(4.1159030931192414605e-11, 9.9999994039536292207e-1)}, + {FN (sinh), ARG(1.19209289550781250e-07,4.71273424736769097620e+00), RES(4.1159030931148617825e-11, -9.9999994039536292220e-1)}, + {FN (sinh), ARG(1.19209289550781250e-07,-4.71273424736769097620e+00), RES(4.1159030931148617825e-11, 9.9999994039536292220e-1)}, + {FN (sinh), ARG(-1.19209289550781250e-07,4.71273424736769097620e+00), RES(-4.1159030931148617825e-11, -9.9999994039536292220e-1)}, + {FN (sinh), ARG(-1.19209289550781250e-07,-4.71273424736769097620e+00), RES(-4.1159030931148617825e-11, 9.9999994039536292220e-1)}, + {FN (sinh), ARG(1.19209289550781250e-07,6.28284004019658492979e+00), RES(1.1920928244535424532e-7, -3.4526697614171100655e-4)}, + {FN (sinh), ARG(1.19209289550781250e-07,-6.28284004019658492979e+00), RES(1.1920928244535424532e-7, 3.4526697614171100655e-4)}, + {FN (sinh), ARG(-1.19209289550781250e-07,6.28284004019658492979e+00), RES(-1.1920928244535424532e-7, -3.4526697614171100655e-4)}, + {FN (sinh), ARG(-1.19209289550781250e-07,-6.28284004019658492979e+00), RES(-1.1920928244535424532e-7, 3.4526697614171100655e-4)}, + {FN (sinh), ARG(1.19209289550781250e-07,6.28353057416258753420e+00), RES(1.1920928244535424534e-7, 3.4526697614122114786e-4)}, + {FN (sinh), ARG(1.19209289550781250e-07,-6.28353057416258753420e+00), RES(1.1920928244535424534e-7, -3.4526697614122114786e-4)}, + {FN (sinh), ARG(-1.19209289550781250e-07,6.28353057416258753420e+00), RES(-1.1920928244535424534e-7, 3.4526697614122114786e-4)}, + {FN (sinh), ARG(-1.19209289550781250e-07,-6.28353057416258753420e+00), RES(-1.1920928244535424534e-7, -3.4526697614122114786e-4)}, + {FN (sinh), ARG(1.19209289550781250e-07,9.42443269378637893396e+00), RES(-1.1920928244535424535e-7, 3.4526697614094529285e-4)}, + {FN (sinh), ARG(1.19209289550781250e-07,-9.42443269378637893396e+00), RES(-1.1920928244535424535e-7, -3.4526697614094529285e-4)}, + {FN (sinh), ARG(-1.19209289550781250e-07,9.42443269378637893396e+00), RES(1.1920928244535424535e-7, 3.4526697614094529285e-4)}, + {FN (sinh), ARG(-1.19209289550781250e-07,-9.42443269378637893396e+00), RES(1.1920928244535424535e-7, -3.4526697614094529285e-4)}, + {FN (sinh), ARG(1.19209289550781250e-07,9.42512322775237976202e+00), RES(-1.1920928244535424538e-7, -3.4526697614021050482e-4)}, + {FN (sinh), ARG(1.19209289550781250e-07,-9.42512322775237976202e+00), RES(-1.1920928244535424538e-7, 3.4526697614021050482e-4)}, + {FN (sinh), ARG(-1.19209289550781250e-07,9.42512322775237976202e+00), RES(1.1920928244535424538e-7, -3.4526697614021050482e-4)}, + {FN (sinh), ARG(-1.19209289550781250e-07,-9.42512322775237976202e+00), RES(1.1920928244535424538e-7, 3.4526697614021050482e-4)}, + {FN (sinh), ARG(5.0e-01,-3.45266983001243932001e-04), RES(5.2109527443404709209e-1, -3.8933200722534065172e-4)}, + {FN (sinh), ARG(5.0e-01,3.45266983001243932001e-04), RES(5.2109527443404709209e-1, 3.8933200722534065172e-4)}, + {FN (sinh), ARG(-5.0e-01,-3.45266983001243932001e-04), RES(-5.2109527443404709209e-1, -3.8933200722534065172e-4)}, + {FN (sinh), ARG(-5.0e-01,3.45266983001243932001e-04), RES(-5.2109527443404709209e-1, 3.8933200722534065172e-4)}, + {FN (sinh), ARG(5.0e-01,1.57045105981189525579e+00), RES(1.7991700040937027667e-4, 1.1276258979946363572e0)}, + {FN (sinh), ARG(5.0e-01,-1.57045105981189525579e+00), RES(1.7991700040937027667e-4, -1.1276258979946363572e0)}, + {FN (sinh), ARG(-5.0e-01,1.57045105981189525579e+00), RES(-1.7991700040937027667e-4, 1.1276258979946363572e0)}, + {FN (sinh), ARG(-5.0e-01,-1.57045105981189525579e+00), RES(-1.7991700040937027667e-4, -1.1276258979946363572e0)}, + {FN (sinh), ARG(5.0e-01,1.57114159377789786021e+00), RES(-1.7991700040930646090e-4, 1.1276258979946363573e0)}, + {FN (sinh), ARG(5.0e-01,-1.57114159377789786021e+00), RES(-1.7991700040930646090e-4, -1.1276258979946363573e0)}, + {FN (sinh), ARG(-5.0e-01,1.57114159377789786021e+00), RES(1.7991700040930646090e-4, 1.1276258979946363573e0)}, + {FN (sinh), ARG(-5.0e-01,-1.57114159377789786021e+00), RES(1.7991700040930646090e-4, -1.1276258979946363573e0)}, + {FN (sinh), ARG(5.0e-01,3.14124738660679181379e+00), RES(-5.2109527443404709206e-1, 3.8933200722554445944e-4)}, + {FN (sinh), ARG(5.0e-01,-3.14124738660679181379e+00), RES(-5.2109527443404709206e-1, -3.8933200722554445944e-4)}, + {FN (sinh), ARG(-5.0e-01,3.14124738660679181379e+00), RES(5.2109527443404709206e-1, 3.8933200722554445944e-4)}, + {FN (sinh), ARG(-5.0e-01,-3.14124738660679181379e+00), RES(5.2109527443404709206e-1, -3.8933200722554445944e-4)}, + {FN (sinh), ARG(5.0e-01,3.14193792057279441821e+00), RES(-5.2109527443404709211e-1, -3.8933200722526827075e-4)}, + {FN (sinh), ARG(5.0e-01,-3.14193792057279441821e+00), RES(-5.2109527443404709211e-1, 3.8933200722526827075e-4)}, + {FN (sinh), ARG(-5.0e-01,3.14193792057279441821e+00), RES(5.2109527443404709211e-1, -3.8933200722526827075e-4)}, + {FN (sinh), ARG(-5.0e-01,-3.14193792057279441821e+00), RES(5.2109527443404709211e-1, 3.8933200722526827075e-4)}, + {FN (sinh), ARG(5.0e-01,4.71204371340168837179e+00), RES(-1.7991700040943409243e-4, -1.1276258979946363572e0)}, + {FN (sinh), ARG(5.0e-01,-4.71204371340168837179e+00), RES(-1.7991700040943409243e-4, 1.1276258979946363572e0)}, + {FN (sinh), ARG(-5.0e-01,4.71204371340168837179e+00), RES(1.7991700040943409243e-4, -1.1276258979946363572e0)}, + {FN (sinh), ARG(-5.0e-01,-4.71204371340168837179e+00), RES(1.7991700040943409243e-4, 1.1276258979946363572e0)}, + {FN (sinh), ARG(5.0e-01,4.71273424736769097620e+00), RES(1.7991700040924264514e-4, -1.1276258979946363573e0)}, + {FN (sinh), ARG(5.0e-01,-4.71273424736769097620e+00), RES(1.7991700040924264514e-4, 1.1276258979946363573e0)}, + {FN (sinh), ARG(-5.0e-01,4.71273424736769097620e+00), RES(-1.7991700040924264514e-4, -1.1276258979946363573e0)}, + {FN (sinh), ARG(-5.0e-01,-4.71273424736769097620e+00), RES(-1.7991700040924264514e-4, 1.1276258979946363573e0)}, + {FN (sinh), ARG(5.0e-01,6.28284004019658492979e+00), RES(5.2109527443404709204e-1, -3.8933200722568255379e-4)}, + {FN (sinh), ARG(5.0e-01,-6.28284004019658492979e+00), RES(5.2109527443404709204e-1, 3.8933200722568255379e-4)}, + {FN (sinh), ARG(-5.0e-01,6.28284004019658492979e+00), RES(-5.2109527443404709204e-1, -3.8933200722568255379e-4)}, + {FN (sinh), ARG(-5.0e-01,-6.28284004019658492979e+00), RES(-5.2109527443404709204e-1, 3.8933200722568255379e-4)}, + {FN (sinh), ARG(5.0e-01,6.28353057416258753420e+00), RES(5.2109527443404709213e-1, 3.8933200722513017641e-4)}, + {FN (sinh), ARG(5.0e-01,-6.28353057416258753420e+00), RES(5.2109527443404709213e-1, -3.8933200722513017641e-4)}, + {FN (sinh), ARG(-5.0e-01,6.28353057416258753420e+00), RES(-5.2109527443404709213e-1, 3.8933200722513017641e-4)}, + {FN (sinh), ARG(-5.0e-01,-6.28353057416258753420e+00), RES(-5.2109527443404709213e-1, -3.8933200722513017641e-4)}, + {FN (sinh), ARG(5.0e-01,9.42443269378637893396e+00), RES(-5.2109527443404709218e-1, 3.8933200722481911514e-4)}, + {FN (sinh), ARG(5.0e-01,-9.42443269378637893396e+00), RES(-5.2109527443404709218e-1, -3.8933200722481911514e-4)}, + {FN (sinh), ARG(-5.0e-01,9.42443269378637893396e+00), RES(5.2109527443404709218e-1, 3.8933200722481911514e-4)}, + {FN (sinh), ARG(-5.0e-01,-9.42443269378637893396e+00), RES(5.2109527443404709218e-1, -3.8933200722481911514e-4)}, + {FN (sinh), ARG(5.0e-01,9.42512322775237976202e+00), RES(-5.2109527443404709231e-1, -3.8933200722399054908e-4)}, + {FN (sinh), ARG(5.0e-01,-9.42512322775237976202e+00), RES(-5.2109527443404709231e-1, 3.8933200722399054908e-4)}, + {FN (sinh), ARG(-5.0e-01,9.42512322775237976202e+00), RES(5.2109527443404709231e-1, -3.8933200722399054908e-4)}, + {FN (sinh), ARG(-5.0e-01,-9.42512322775237976202e+00), RES(5.2109527443404709231e-1, 3.8933200722399054908e-4)}, + {FN (sinh), ARG(1.0e+00,-3.45266983001243932001e-04), RES(1.1752011235963524660e0, -5.3277478472501939236e-4)}, + {FN (sinh), ARG(1.0e+00,3.45266983001243932001e-04), RES(1.1752011235963524660e0, 5.3277478472501939236e-4)}, + {FN (sinh), ARG(-1.0e+00,-3.45266983001243932001e-04), RES(-1.1752011235963524660e0, -5.3277478472501939236e-4)}, + {FN (sinh), ARG(-1.0e+00,3.45266983001243932001e-04), RES(-1.1752011235963524660e0, 5.3277478472501939236e-4)}, + {FN (sinh), ARG(1.0e+00,1.57045105981189525579e+00), RES(4.0575816248730593018e-4, 1.5430805428404715942e0)}, + {FN (sinh), ARG(1.0e+00,-1.57045105981189525579e+00), RES(4.0575816248730593018e-4, -1.5430805428404715942e0)}, + {FN (sinh), ARG(-1.0e+00,1.57045105981189525579e+00), RES(-4.0575816248730593018e-4, 1.5430805428404715942e0)}, + {FN (sinh), ARG(-1.0e+00,-1.57045105981189525579e+00), RES(-4.0575816248730593018e-4, -1.5430805428404715942e0)}, + {FN (sinh), ARG(1.0e+00,1.57114159377789786021e+00), RES(-4.0575816248716200955e-4, 1.5430805428404715942e0)}, + {FN (sinh), ARG(1.0e+00,-1.57114159377789786021e+00), RES(-4.0575816248716200955e-4, -1.5430805428404715942e0)}, + {FN (sinh), ARG(-1.0e+00,1.57114159377789786021e+00), RES(4.0575816248716200955e-4, 1.5430805428404715942e0)}, + {FN (sinh), ARG(-1.0e+00,-1.57114159377789786021e+00), RES(4.0575816248716200955e-4, -1.5430805428404715942e0)}, + {FN (sinh), ARG(1.0e+00,3.14124738660679181379e+00), RES(-1.1752011235963524659e0, 5.3277478472529828958e-4)}, + {FN (sinh), ARG(1.0e+00,-3.14124738660679181379e+00), RES(-1.1752011235963524659e0, -5.3277478472529828958e-4)}, + {FN (sinh), ARG(-1.0e+00,3.14124738660679181379e+00), RES(1.1752011235963524659e0, 5.3277478472529828958e-4)}, + {FN (sinh), ARG(-1.0e+00,-3.14124738660679181379e+00), RES(1.1752011235963524659e0, -5.3277478472529828958e-4)}, + {FN (sinh), ARG(1.0e+00,3.14193792057279441821e+00), RES(-1.1752011235963524660e0, -5.3277478472492034385e-4)}, + {FN (sinh), ARG(1.0e+00,-3.14193792057279441821e+00), RES(-1.1752011235963524660e0, 5.3277478472492034385e-4)}, + {FN (sinh), ARG(-1.0e+00,3.14193792057279441821e+00), RES(1.1752011235963524660e0, -5.3277478472492034385e-4)}, + {FN (sinh), ARG(-1.0e+00,-3.14193792057279441821e+00), RES(1.1752011235963524660e0, 5.3277478472492034385e-4)}, + {FN (sinh), ARG(1.0e+00,4.71204371340168837179e+00), RES(-4.0575816248744985081e-4, -1.5430805428404715941e0)}, + {FN (sinh), ARG(1.0e+00,-4.71204371340168837179e+00), RES(-4.0575816248744985081e-4, 1.5430805428404715941e0)}, + {FN (sinh), ARG(-1.0e+00,4.71204371340168837179e+00), RES(4.0575816248744985081e-4, -1.5430805428404715941e0)}, + {FN (sinh), ARG(-1.0e+00,-4.71204371340168837179e+00), RES(4.0575816248744985081e-4, 1.5430805428404715941e0)}, + {FN (sinh), ARG(1.0e+00,4.71273424736769097620e+00), RES(4.0575816248701808892e-4, -1.5430805428404715943e0)}, + {FN (sinh), ARG(1.0e+00,-4.71273424736769097620e+00), RES(4.0575816248701808892e-4, 1.5430805428404715943e0)}, + {FN (sinh), ARG(-1.0e+00,4.71273424736769097620e+00), RES(-4.0575816248701808892e-4, -1.5430805428404715943e0)}, + {FN (sinh), ARG(-1.0e+00,-4.71273424736769097620e+00), RES(-4.0575816248701808892e-4, 1.5430805428404715943e0)}, + {FN (sinh), ARG(1.0e+00,6.28284004019658492979e+00), RES(1.1752011235963524659e0, -5.3277478472548726245e-4)}, + {FN (sinh), ARG(1.0e+00,-6.28284004019658492979e+00), RES(1.1752011235963524659e0, 5.3277478472548726245e-4)}, + {FN (sinh), ARG(-1.0e+00,6.28284004019658492979e+00), RES(-1.1752011235963524659e0, -5.3277478472548726245e-4)}, + {FN (sinh), ARG(-1.0e+00,-6.28284004019658492979e+00), RES(-1.1752011235963524659e0, 5.3277478472548726245e-4)}, + {FN (sinh), ARG(1.0e+00,6.28353057416258753420e+00), RES(1.1752011235963524661e0, 5.3277478472473137099e-4)}, + {FN (sinh), ARG(1.0e+00,-6.28353057416258753420e+00), RES(1.1752011235963524661e0, -5.3277478472473137099e-4)}, + {FN (sinh), ARG(-1.0e+00,6.28353057416258753420e+00), RES(-1.1752011235963524661e0, 5.3277478472473137099e-4)}, + {FN (sinh), ARG(-1.0e+00,-6.28353057416258753420e+00), RES(-1.1752011235963524661e0, -5.3277478472473137099e-4)}, + {FN (sinh), ARG(1.0e+00,9.42443269378637893396e+00), RES(-1.1752011235963524662e0, 5.3277478472430570447e-4)}, + {FN (sinh), ARG(1.0e+00,-9.42443269378637893396e+00), RES(-1.1752011235963524662e0, -5.3277478472430570447e-4)}, + {FN (sinh), ARG(-1.0e+00,9.42443269378637893396e+00), RES(1.1752011235963524662e0, 5.3277478472430570447e-4)}, + {FN (sinh), ARG(-1.0e+00,-9.42443269378637893396e+00), RES(1.1752011235963524662e0, -5.3277478472430570447e-4)}, + {FN (sinh), ARG(1.0e+00,9.42512322775237976202e+00), RES(-1.1752011235963524665e0, -5.3277478472317186729e-4)}, + {FN (sinh), ARG(1.0e+00,-9.42512322775237976202e+00), RES(-1.1752011235963524665e0, 5.3277478472317186729e-4)}, + {FN (sinh), ARG(-1.0e+00,9.42512322775237976202e+00), RES(1.1752011235963524665e0, -5.3277478472317186729e-4)}, + {FN (sinh), ARG(-1.0e+00,-9.42512322775237976202e+00), RES(1.1752011235963524665e0, 5.3277478472317186729e-4)}, + {FN (sinh), ARG(2.0e+00,-3.45266983001243932001e-04), RES(3.6268601916692946556e0, -1.2989619299126701883e-3)}, + {FN (sinh), ARG(2.0e+00,3.45266983001243932001e-04), RES(3.6268601916692946556e0, 1.2989619299126701883e-3)}, + {FN (sinh), ARG(-2.0e+00,-3.45266983001243932001e-04), RES(-3.6268601916692946556e0, -1.2989619299126701883e-3)}, + {FN (sinh), ARG(-2.0e+00,3.45266983001243932001e-04), RES(-3.6268601916692946556e0, 1.2989619299126701883e-3)}, + {FN (sinh), ARG(2.0e+00,1.57045105981189525579e+00), RES(1.2522351259047577385e-3, 3.7621954668392959445e0)}, + {FN (sinh), ARG(2.0e+00,-1.57045105981189525579e+00), RES(1.2522351259047577385e-3, -3.7621954668392959445e0)}, + {FN (sinh), ARG(-2.0e+00,1.57045105981189525579e+00), RES(-1.2522351259047577385e-3, 3.7621954668392959445e0)}, + {FN (sinh), ARG(-2.0e+00,-1.57045105981189525579e+00), RES(-1.2522351259047577385e-3, -3.7621954668392959445e0)}, + {FN (sinh), ARG(2.0e+00,1.57114159377789786021e+00), RES(-1.2522351259043135762e-3, 3.7621954668392959447e0)}, + {FN (sinh), ARG(2.0e+00,-1.57114159377789786021e+00), RES(-1.2522351259043135762e-3, -3.7621954668392959447e0)}, + {FN (sinh), ARG(-2.0e+00,1.57114159377789786021e+00), RES(1.2522351259043135762e-3, 3.7621954668392959447e0)}, + {FN (sinh), ARG(-2.0e+00,-1.57114159377789786021e+00), RES(1.2522351259043135762e-3, -3.7621954668392959447e0)}, + {FN (sinh), ARG(2.0e+00,3.14124738660679181379e+00), RES(-3.6268601916692946553e0, 1.2989619299133501696e-3)}, + {FN (sinh), ARG(2.0e+00,-3.14124738660679181379e+00), RES(-3.6268601916692946553e0, -1.2989619299133501696e-3)}, + {FN (sinh), ARG(-2.0e+00,3.14124738660679181379e+00), RES(3.6268601916692946553e0, 1.2989619299133501696e-3)}, + {FN (sinh), ARG(-2.0e+00,-3.14124738660679181379e+00), RES(3.6268601916692946553e0, -1.2989619299133501696e-3)}, + {FN (sinh), ARG(2.0e+00,3.14193792057279441821e+00), RES(-3.6268601916692946556e0, -1.2989619299124286975e-3)}, + {FN (sinh), ARG(2.0e+00,-3.14193792057279441821e+00), RES(-3.6268601916692946556e0, 1.2989619299124286975e-3)}, + {FN (sinh), ARG(-2.0e+00,3.14193792057279441821e+00), RES(3.6268601916692946556e0, -1.2989619299124286975e-3)}, + {FN (sinh), ARG(-2.0e+00,-3.14193792057279441821e+00), RES(3.6268601916692946556e0, 1.2989619299124286975e-3)}, + {FN (sinh), ARG(2.0e+00,4.71204371340168837179e+00), RES(-1.2522351259052019007e-3, -3.7621954668392959444e0)}, + {FN (sinh), ARG(2.0e+00,-4.71204371340168837179e+00), RES(-1.2522351259052019007e-3, 3.7621954668392959444e0)}, + {FN (sinh), ARG(-2.0e+00,4.71204371340168837179e+00), RES(1.2522351259052019007e-3, -3.7621954668392959444e0)}, + {FN (sinh), ARG(-2.0e+00,-4.71204371340168837179e+00), RES(1.2522351259052019007e-3, 3.7621954668392959444e0)}, + {FN (sinh), ARG(2.0e+00,4.71273424736769097620e+00), RES(1.2522351259038694139e-3, -3.7621954668392959448e0)}, + {FN (sinh), ARG(2.0e+00,-4.71273424736769097620e+00), RES(1.2522351259038694139e-3, 3.7621954668392959448e0)}, + {FN (sinh), ARG(-2.0e+00,4.71273424736769097620e+00), RES(-1.2522351259038694139e-3, -3.7621954668392959448e0)}, + {FN (sinh), ARG(-2.0e+00,-4.71273424736769097620e+00), RES(-1.2522351259038694139e-3, 3.7621954668392959448e0)}, + {FN (sinh), ARG(2.0e+00,6.28284004019658492979e+00), RES(3.6268601916692946552e0, -1.2989619299138109057e-3)}, + {FN (sinh), ARG(2.0e+00,-6.28284004019658492979e+00), RES(3.6268601916692946552e0, 1.2989619299138109057e-3)}, + {FN (sinh), ARG(-2.0e+00,6.28284004019658492979e+00), RES(-3.6268601916692946552e0, -1.2989619299138109057e-3)}, + {FN (sinh), ARG(-2.0e+00,-6.28284004019658492979e+00), RES(-3.6268601916692946552e0, 1.2989619299138109057e-3)}, + {FN (sinh), ARG(2.0e+00,6.28353057416258753420e+00), RES(3.6268601916692946558e0, 1.2989619299119679614e-3)}, + {FN (sinh), ARG(2.0e+00,-6.28353057416258753420e+00), RES(3.6268601916692946558e0, -1.2989619299119679614e-3)}, + {FN (sinh), ARG(-2.0e+00,6.28353057416258753420e+00), RES(-3.6268601916692946558e0, 1.2989619299119679614e-3)}, + {FN (sinh), ARG(-2.0e+00,-6.28353057416258753420e+00), RES(-3.6268601916692946558e0, -1.2989619299119679614e-3)}, + {FN (sinh), ARG(2.0e+00,9.42443269378637893396e+00), RES(-3.6268601916692946561e0, 1.2989619299109301409e-3)}, + {FN (sinh), ARG(2.0e+00,-9.42443269378637893396e+00), RES(-3.6268601916692946561e0, -1.2989619299109301409e-3)}, + {FN (sinh), ARG(-2.0e+00,9.42443269378637893396e+00), RES(3.6268601916692946561e0, 1.2989619299109301409e-3)}, + {FN (sinh), ARG(-2.0e+00,-9.42443269378637893396e+00), RES(3.6268601916692946561e0, -1.2989619299109301409e-3)}, + {FN (sinh), ARG(2.0e+00,9.42512322775237976202e+00), RES(-3.6268601916692946571e0, -1.2989619299081657245e-3)}, + {FN (sinh), ARG(2.0e+00,-9.42512322775237976202e+00), RES(-3.6268601916692946571e0, 1.2989619299081657245e-3)}, + {FN (sinh), ARG(-2.0e+00,9.42512322775237976202e+00), RES(3.6268601916692946571e0, -1.2989619299081657245e-3)}, + {FN (sinh), ARG(-2.0e+00,-9.42512322775237976202e+00), RES(3.6268601916692946571e0, 1.2989619299081657245e-3)}, + {FN (cosh), ARG(0.0e+00,-3.45266983001243932001e-04), RES(9.9999994039535581673e-1, 0.0)}, + {FN (cosh), ARG(0.0e+00,3.45266983001243932001e-04), RES(9.9999994039535581673e-1, 0.0)}, + {FN (cosh), ARG(0.0e+00,1.57045105981189525579e+00), RES(3.4526697614152485627e-4, 0.0)}, + {FN (cosh), ARG(0.0e+00,-1.57045105981189525579e+00), RES(3.4526697614152485627e-4, 0.0)}, + {FN (cosh), ARG(0.0e+00,1.57114159377789786021e+00), RES(-3.4526697614140239160e-4, 0.0)}, + {FN (cosh), ARG(0.0e+00,-1.57114159377789786021e+00), RES(-3.4526697614140239160e-4, 0.0)}, + {FN (cosh), ARG(0.0e+00,3.14124738660679181379e+00), RES(-9.9999994039535581667e-1, 0.0)}, + {FN (cosh), ARG(0.0e+00,-3.14124738660679181379e+00), RES(-9.9999994039535581667e-1, 0.0)}, + {FN (cosh), ARG(0.0e+00,3.14193792057279441821e+00), RES(-9.9999994039535581675e-1, 0.0)}, + {FN (cosh), ARG(0.0e+00,-3.14193792057279441821e+00), RES(-9.9999994039535581675e-1, 0.0)}, + {FN (cosh), ARG(0.0e+00,4.71204371340168837179e+00), RES(-3.4526697614164732094e-4, 0.0)}, + {FN (cosh), ARG(0.0e+00,-4.71204371340168837179e+00), RES(-3.4526697614164732094e-4, 0.0)}, + {FN (cosh), ARG(0.0e+00,4.71273424736769097620e+00), RES(3.4526697614127992692e-4, 0.0)}, + {FN (cosh), ARG(0.0e+00,-4.71273424736769097620e+00), RES(3.4526697614127992692e-4, 0.0)}, + {FN (cosh), ARG(0.0e+00,6.28284004019658492979e+00), RES(9.9999994039535581662e-1, 0.0)}, + {FN (cosh), ARG(0.0e+00,-6.28284004019658492979e+00), RES(9.9999994039535581662e-1, 0.0)}, + {FN (cosh), ARG(0.0e+00,6.28353057416258753420e+00), RES(9.9999994039535581679e-1, 0.0)}, + {FN (cosh), ARG(0.0e+00,-6.28353057416258753420e+00), RES(9.9999994039535581679e-1, 0.0)}, + {FN (cosh), ARG(0.0e+00,9.42443269378637893396e+00), RES(-9.9999994039535581689e-1, 0.0)}, + {FN (cosh), ARG(0.0e+00,-9.42443269378637893396e+00), RES(-9.9999994039535581689e-1, 0.0)}, + {FN (cosh), ARG(0.0e+00,9.42512322775237976202e+00), RES(-9.9999994039535581714e-1, 0.0)}, + {FN (cosh), ARG(0.0e+00,-9.42512322775237976202e+00), RES(-9.9999994039535581714e-1, 0.0)}, + {FN (cosh), ARG(1.19209289550781250e-07,-3.45266983001243932001e-04), RES(9.9999994039536292216e-1, -4.1159030931163569191e-11)}, + {FN (cosh), ARG(1.19209289550781250e-07,3.45266983001243932001e-04), RES(9.9999994039536292216e-1, 4.1159030931163569191e-11)}, + {FN (cosh), ARG(-1.19209289550781250e-07,-3.45266983001243932001e-04), RES(9.9999994039536292216e-1, 4.1159030931163569191e-11)}, + {FN (cosh), ARG(-1.19209289550781250e-07,3.45266983001243932001e-04), RES(9.9999994039536292216e-1, -4.1159030931163569191e-11)}, + {FN (cosh), ARG(1.19209289550781250e-07,1.57045105981189525579e+00), RES(3.4526697614152730954e-4, 1.1920928244535424532e-7)}, + {FN (cosh), ARG(1.19209289550781250e-07,-1.57045105981189525579e+00), RES(3.4526697614152730954e-4, -1.1920928244535424532e-7)}, + {FN (cosh), ARG(-1.19209289550781250e-07,1.57045105981189525579e+00), RES(3.4526697614152730954e-4, -1.1920928244535424532e-7)}, + {FN (cosh), ARG(-1.19209289550781250e-07,-1.57045105981189525579e+00), RES(3.4526697614152730954e-4, 1.1920928244535424532e-7)}, + {FN (cosh), ARG(1.19209289550781250e-07,1.57114159377789786021e+00), RES(-3.4526697614140484486e-4, 1.1920928244535424533e-7)}, + {FN (cosh), ARG(1.19209289550781250e-07,-1.57114159377789786021e+00), RES(-3.4526697614140484486e-4, -1.1920928244535424533e-7)}, + {FN (cosh), ARG(-1.19209289550781250e-07,1.57114159377789786021e+00), RES(-3.4526697614140484486e-4, -1.1920928244535424533e-7)}, + {FN (cosh), ARG(-1.19209289550781250e-07,-1.57114159377789786021e+00), RES(-3.4526697614140484486e-4, 1.1920928244535424533e-7)}, + {FN (cosh), ARG(1.19209289550781250e-07,3.14124738660679181379e+00), RES(-9.9999994039536292209e-1, 4.1159030931185115142e-11)}, + {FN (cosh), ARG(1.19209289550781250e-07,-3.14124738660679181379e+00), RES(-9.9999994039536292209e-1, -4.1159030931185115142e-11)}, + {FN (cosh), ARG(-1.19209289550781250e-07,3.14124738660679181379e+00), RES(-9.9999994039536292209e-1, -4.1159030931185115142e-11)}, + {FN (cosh), ARG(-1.19209289550781250e-07,-3.14124738660679181379e+00), RES(-9.9999994039536292209e-1, 4.1159030931185115142e-11)}, + {FN (cosh), ARG(1.19209289550781250e-07,3.14193792057279441821e+00), RES(-9.9999994039536292218e-1, -4.1159030931155917289e-11)}, + {FN (cosh), ARG(1.19209289550781250e-07,-3.14193792057279441821e+00), RES(-9.9999994039536292218e-1, 4.1159030931155917289e-11)}, + {FN (cosh), ARG(-1.19209289550781250e-07,3.14193792057279441821e+00), RES(-9.9999994039536292218e-1, 4.1159030931155917289e-11)}, + {FN (cosh), ARG(-1.19209289550781250e-07,-3.14193792057279441821e+00), RES(-9.9999994039536292218e-1, -4.1159030931155917289e-11)}, + {FN (cosh), ARG(1.19209289550781250e-07,4.71204371340168837179e+00), RES(-3.4526697614164977421e-4, -1.1920928244535424532e-7)}, + {FN (cosh), ARG(1.19209289550781250e-07,-4.71204371340168837179e+00), RES(-3.4526697614164977421e-4, 1.1920928244535424532e-7)}, + {FN (cosh), ARG(-1.19209289550781250e-07,4.71204371340168837179e+00), RES(-3.4526697614164977421e-4, 1.1920928244535424532e-7)}, + {FN (cosh), ARG(-1.19209289550781250e-07,-4.71204371340168837179e+00), RES(-3.4526697614164977421e-4, -1.1920928244535424532e-7)}, + {FN (cosh), ARG(1.19209289550781250e-07,4.71273424736769097620e+00), RES(3.4526697614128238019e-4, -1.1920928244535424533e-7)}, + {FN (cosh), ARG(1.19209289550781250e-07,-4.71273424736769097620e+00), RES(3.4526697614128238019e-4, 1.1920928244535424533e-7)}, + {FN (cosh), ARG(-1.19209289550781250e-07,4.71273424736769097620e+00), RES(3.4526697614128238019e-4, 1.1920928244535424533e-7)}, + {FN (cosh), ARG(-1.19209289550781250e-07,-4.71273424736769097620e+00), RES(3.4526697614128238019e-4, -1.1920928244535424533e-7)}, + {FN (cosh), ARG(1.19209289550781250e-07,6.28284004019658492979e+00), RES(9.9999994039536292205e-1, -4.1159030931199714069e-11)}, + {FN (cosh), ARG(1.19209289550781250e-07,-6.28284004019658492979e+00), RES(9.9999994039536292205e-1, 4.1159030931199714069e-11)}, + {FN (cosh), ARG(-1.19209289550781250e-07,6.28284004019658492979e+00), RES(9.9999994039536292205e-1, 4.1159030931199714069e-11)}, + {FN (cosh), ARG(-1.19209289550781250e-07,-6.28284004019658492979e+00), RES(9.9999994039536292205e-1, -4.1159030931199714069e-11)}, + {FN (cosh), ARG(1.19209289550781250e-07,6.28353057416258753420e+00), RES(9.9999994039536292222e-1, 4.1159030931141318362e-11)}, + {FN (cosh), ARG(1.19209289550781250e-07,-6.28353057416258753420e+00), RES(9.9999994039536292222e-1, -4.1159030931141318362e-11)}, + {FN (cosh), ARG(-1.19209289550781250e-07,6.28353057416258753420e+00), RES(9.9999994039536292222e-1, -4.1159030931141318362e-11)}, + {FN (cosh), ARG(-1.19209289550781250e-07,-6.28353057416258753420e+00), RES(9.9999994039536292222e-1, 4.1159030931141318362e-11)}, + {FN (cosh), ARG(1.19209289550781250e-07,9.42443269378637893396e+00), RES(-9.9999994039536292231e-1, 4.1159030931108433883e-11)}, + {FN (cosh), ARG(1.19209289550781250e-07,-9.42443269378637893396e+00), RES(-9.9999994039536292231e-1, -4.1159030931108433883e-11)}, + {FN (cosh), ARG(-1.19209289550781250e-07,9.42443269378637893396e+00), RES(-9.9999994039536292231e-1, -4.1159030931108433883e-11)}, + {FN (cosh), ARG(-1.19209289550781250e-07,-9.42443269378637893396e+00), RES(-9.9999994039536292231e-1, 4.1159030931108433883e-11)}, + {FN (cosh), ARG(1.19209289550781250e-07,9.42512322775237976202e+00), RES(-9.9999994039536292257e-1, -4.1159030931020840323e-11)}, + {FN (cosh), ARG(1.19209289550781250e-07,-9.42512322775237976202e+00), RES(-9.9999994039536292257e-1, 4.1159030931020840323e-11)}, + {FN (cosh), ARG(-1.19209289550781250e-07,9.42512322775237976202e+00), RES(-9.9999994039536292257e-1, 4.1159030931020840323e-11)}, + {FN (cosh), ARG(-1.19209289550781250e-07,-9.42512322775237976202e+00), RES(-9.9999994039536292257e-1, -4.1159030931020840323e-11)}, + {FN (cosh), ARG(5.0e-01,-3.45266983001243932001e-04), RES(1.1276258979946363573e0, -1.7991700040930800151e-4)}, + {FN (cosh), ARG(5.0e-01,3.45266983001243932001e-04), RES(1.1276258979946363573e0, 1.7991700040930800151e-4)}, + {FN (cosh), ARG(-5.0e-01,-3.45266983001243932001e-04), RES(1.1276258979946363573e0, 1.7991700040930800151e-4)}, + {FN (cosh), ARG(-5.0e-01,3.45266983001243932001e-04), RES(1.1276258979946363573e0, -1.7991700040930800151e-4)}, + {FN (cosh), ARG(5.0e-01,1.57045105981189525579e+00), RES(3.8933200722547541227e-4, 5.2109527443404709207e-1)}, + {FN (cosh), ARG(5.0e-01,-1.57045105981189525579e+00), RES(3.8933200722547541227e-4, -5.2109527443404709207e-1)}, + {FN (cosh), ARG(-5.0e-01,1.57045105981189525579e+00), RES(3.8933200722547541227e-4, -5.2109527443404709207e-1)}, + {FN (cosh), ARG(-5.0e-01,-1.57045105981189525579e+00), RES(3.8933200722547541227e-4, 5.2109527443404709207e-1)}, + {FN (cosh), ARG(5.0e-01,1.57114159377789786021e+00), RES(-3.8933200722533731792e-4, 5.2109527443404709209e-1)}, + {FN (cosh), ARG(5.0e-01,-1.57114159377789786021e+00), RES(-3.8933200722533731792e-4, -5.2109527443404709209e-1)}, + {FN (cosh), ARG(-5.0e-01,1.57114159377789786021e+00), RES(-3.8933200722533731792e-4, -5.2109527443404709209e-1)}, + {FN (cosh), ARG(-5.0e-01,-1.57114159377789786021e+00), RES(-3.8933200722533731792e-4, 5.2109527443404709209e-1)}, + {FN (cosh), ARG(5.0e-01,3.14124738660679181379e+00), RES(-1.1276258979946363572e0, 1.7991700040940218455e-4)}, + {FN (cosh), ARG(5.0e-01,-3.14124738660679181379e+00), RES(-1.1276258979946363572e0, -1.7991700040940218455e-4)}, + {FN (cosh), ARG(-5.0e-01,3.14124738660679181379e+00), RES(-1.1276258979946363572e0, -1.7991700040940218455e-4)}, + {FN (cosh), ARG(-5.0e-01,-3.14124738660679181379e+00), RES(-1.1276258979946363572e0, 1.7991700040940218455e-4)}, + {FN (cosh), ARG(5.0e-01,3.14193792057279441821e+00), RES(-1.1276258979946363573e0, -1.7991700040927455302e-4)}, + {FN (cosh), ARG(5.0e-01,-3.14193792057279441821e+00), RES(-1.1276258979946363573e0, 1.7991700040927455302e-4)}, + {FN (cosh), ARG(-5.0e-01,3.14193792057279441821e+00), RES(-1.1276258979946363573e0, 1.7991700040927455302e-4)}, + {FN (cosh), ARG(-5.0e-01,-3.14193792057279441821e+00), RES(-1.1276258979946363573e0, -1.7991700040927455302e-4)}, + {FN (cosh), ARG(5.0e-01,4.71204371340168837179e+00), RES(-3.8933200722561350661e-4, -5.2109527443404709205e-1)}, + {FN (cosh), ARG(5.0e-01,-4.71204371340168837179e+00), RES(-3.8933200722561350661e-4, 5.2109527443404709205e-1)}, + {FN (cosh), ARG(-5.0e-01,4.71204371340168837179e+00), RES(-3.8933200722561350661e-4, 5.2109527443404709205e-1)}, + {FN (cosh), ARG(-5.0e-01,-4.71204371340168837179e+00), RES(-3.8933200722561350661e-4, -5.2109527443404709205e-1)}, + {FN (cosh), ARG(5.0e-01,4.71273424736769097620e+00), RES(3.8933200722519922358e-4, -5.2109527443404709212e-1)}, + {FN (cosh), ARG(5.0e-01,-4.71273424736769097620e+00), RES(3.8933200722519922358e-4, 5.2109527443404709212e-1)}, + {FN (cosh), ARG(-5.0e-01,4.71273424736769097620e+00), RES(3.8933200722519922358e-4, 5.2109527443404709212e-1)}, + {FN (cosh), ARG(-5.0e-01,-4.71273424736769097620e+00), RES(3.8933200722519922358e-4, -5.2109527443404709212e-1)}, + {FN (cosh), ARG(5.0e-01,6.28284004019658492979e+00), RES(1.1276258979946363572e0, -1.7991700040946600032e-4)}, + {FN (cosh), ARG(5.0e-01,-6.28284004019658492979e+00), RES(1.1276258979946363572e0, 1.7991700040946600032e-4)}, + {FN (cosh), ARG(-5.0e-01,6.28284004019658492979e+00), RES(1.1276258979946363572e0, 1.7991700040946600032e-4)}, + {FN (cosh), ARG(-5.0e-01,-6.28284004019658492979e+00), RES(1.1276258979946363572e0, -1.7991700040946600032e-4)}, + {FN (cosh), ARG(5.0e-01,6.28353057416258753420e+00), RES(1.1276258979946363574e0, 1.7991700040921073725e-4)}, + {FN (cosh), ARG(5.0e-01,-6.28353057416258753420e+00), RES(1.1276258979946363574e0, -1.7991700040921073725e-4)}, + {FN (cosh), ARG(-5.0e-01,6.28353057416258753420e+00), RES(1.1276258979946363574e0, -1.7991700040921073725e-4)}, + {FN (cosh), ARG(-5.0e-01,-6.28353057416258753420e+00), RES(1.1276258979946363574e0, 1.7991700040921073725e-4)}, + {FN (cosh), ARG(5.0e-01,9.42443269378637893396e+00), RES(-1.1276258979946363575e0, 1.7991700040906699050e-4)}, + {FN (cosh), ARG(5.0e-01,-9.42443269378637893396e+00), RES(-1.1276258979946363575e0, -1.7991700040906699050e-4)}, + {FN (cosh), ARG(-5.0e-01,9.42443269378637893396e+00), RES(-1.1276258979946363575e0, -1.7991700040906699050e-4)}, + {FN (cosh), ARG(-5.0e-01,-9.42443269378637893396e+00), RES(-1.1276258979946363575e0, 1.7991700040906699050e-4)}, + {FN (cosh), ARG(5.0e-01,9.42512322775237976202e+00), RES(-1.1276258979946363577e0, -1.7991700040868409591e-4)}, + {FN (cosh), ARG(5.0e-01,-9.42512322775237976202e+00), RES(-1.1276258979946363577e0, 1.7991700040868409591e-4)}, + {FN (cosh), ARG(-5.0e-01,9.42512322775237976202e+00), RES(-1.1276258979946363577e0, 1.7991700040868409591e-4)}, + {FN (cosh), ARG(-5.0e-01,-9.42512322775237976202e+00), RES(-1.1276258979946363577e0, -1.7991700040868409591e-4)}, + {FN (cosh), ARG(1.0e+00,-3.45266983001243932001e-04), RES(1.5430805428404715942e0, -4.057581624871654840e-4)}, + {FN (cosh), ARG(1.0e+00,3.45266983001243932001e-04), RES(1.5430805428404715942e0, 4.057581624871654840e-4)}, + {FN (cosh), ARG(-1.0e+00,-3.45266983001243932001e-04), RES(1.5430805428404715942e0, 4.057581624871654840e-4)}, + {FN (cosh), ARG(-1.0e+00,3.45266983001243932001e-04), RES(1.5430805428404715942e0, -4.057581624871654840e-4)}, + {FN (cosh), ARG(1.0e+00,1.57045105981189525579e+00), RES(5.3277478472520380315e-4, 1.1752011235963524659e0)}, + {FN (cosh), ARG(1.0e+00,-1.57045105981189525579e+00), RES(5.3277478472520380315e-4, -1.1752011235963524659e0)}, + {FN (cosh), ARG(-1.0e+00,1.57045105981189525579e+00), RES(5.3277478472520380315e-4, -1.1752011235963524659e0)}, + {FN (cosh), ARG(-1.0e+00,-1.57045105981189525579e+00), RES(5.3277478472520380315e-4, 1.1752011235963524659e0)}, + {FN (cosh), ARG(1.0e+00,1.57114159377789786021e+00), RES(-5.3277478472501483029e-4, 1.1752011235963524660e0)}, + {FN (cosh), ARG(1.0e+00,-1.57114159377789786021e+00), RES(-5.3277478472501483029e-4, -1.1752011235963524660e0)}, + {FN (cosh), ARG(-1.0e+00,1.57114159377789786021e+00), RES(-5.3277478472501483029e-4, -1.1752011235963524660e0)}, + {FN (cosh), ARG(-1.0e+00,-1.57114159377789786021e+00), RES(-5.3277478472501483029e-4, 1.1752011235963524660e0)}, + {FN (cosh), ARG(1.0e+00,3.14124738660679181379e+00), RES(-1.5430805428404715941e0, 4.0575816248737789049e-4)}, + {FN (cosh), ARG(1.0e+00,-3.14124738660679181379e+00), RES(-1.5430805428404715941e0, -4.0575816248737789049e-4)}, + {FN (cosh), ARG(-1.0e+00,3.14124738660679181379e+00), RES(-1.5430805428404715941e0, -4.0575816248737789049e-4)}, + {FN (cosh), ARG(-1.0e+00,-3.14124738660679181379e+00), RES(-1.5430805428404715941e0, 4.0575816248737789049e-4)}, + {FN (cosh), ARG(1.0e+00,3.14193792057279441821e+00), RES(-1.5430805428404715943e0, -4.0575816248709004923e-4)}, + {FN (cosh), ARG(1.0e+00,-3.14193792057279441821e+00), RES(-1.5430805428404715943e0, 4.0575816248709004923e-4)}, + {FN (cosh), ARG(-1.0e+00,3.14193792057279441821e+00), RES(-1.5430805428404715943e0, 4.0575816248709004923e-4)}, + {FN (cosh), ARG(-1.0e+00,-3.14193792057279441821e+00), RES(-1.5430805428404715943e0, -4.0575816248709004923e-4)}, + {FN (cosh), ARG(1.0e+00,4.71204371340168837179e+00), RES(-5.3277478472539277601e-4, -1.1752011235963524659e0)}, + {FN (cosh), ARG(1.0e+00,-4.71204371340168837179e+00), RES(-5.3277478472539277601e-4, 1.1752011235963524659e0)}, + {FN (cosh), ARG(-1.0e+00,4.71204371340168837179e+00), RES(-5.3277478472539277601e-4, 1.1752011235963524659e0)}, + {FN (cosh), ARG(-1.0e+00,-4.71204371340168837179e+00), RES(-5.3277478472539277601e-4, -1.1752011235963524659e0)}, + {FN (cosh), ARG(1.0e+00,4.71273424736769097620e+00), RES(5.3277478472482585742e-4, -1.1752011235963524660e0)}, + {FN (cosh), ARG(1.0e+00,-4.71273424736769097620e+00), RES(5.3277478472482585742e-4, 1.1752011235963524660e0)}, + {FN (cosh), ARG(-1.0e+00,4.71273424736769097620e+00), RES(5.3277478472482585742e-4, 1.1752011235963524660e0)}, + {FN (cosh), ARG(-1.0e+00,-4.71273424736769097620e+00), RES(5.3277478472482585742e-4, -1.1752011235963524660e0)}, + {FN (cosh), ARG(1.0e+00,6.28284004019658492979e+00), RES(1.5430805428404715941e0, -4.0575816248752181112e-4)}, + {FN (cosh), ARG(1.0e+00,-6.28284004019658492979e+00), RES(1.5430805428404715941e0, 4.0575816248752181112e-4)}, + {FN (cosh), ARG(-1.0e+00,6.28284004019658492979e+00), RES(1.5430805428404715941e0, 4.0575816248752181112e-4)}, + {FN (cosh), ARG(-1.0e+00,-6.28284004019658492979e+00), RES(1.5430805428404715941e0, -4.0575816248752181112e-4)}, + {FN (cosh), ARG(1.0e+00,6.28353057416258753420e+00), RES(1.5430805428404715943e0, 4.0575816248694612861e-4)}, + {FN (cosh), ARG(1.0e+00,-6.28353057416258753420e+00), RES(1.5430805428404715943e0, -4.0575816248694612861e-4)}, + {FN (cosh), ARG(-1.0e+00,6.28353057416258753420e+00), RES(1.5430805428404715943e0, -4.0575816248694612861e-4)}, + {FN (cosh), ARG(-1.0e+00,-6.28353057416258753420e+00), RES(1.5430805428404715943e0, 4.0575816248694612861e-4)}, + {FN (cosh), ARG(1.0e+00,9.42443269378637893396e+00), RES(-1.5430805428404715945e0, 4.0575816248662194348e-4)}, + {FN (cosh), ARG(1.0e+00,-9.42443269378637893396e+00), RES(-1.5430805428404715945e0, -4.0575816248662194348e-4)}, + {FN (cosh), ARG(-1.0e+00,9.42443269378637893396e+00), RES(-1.5430805428404715945e0, -4.0575816248662194348e-4)}, + {FN (cosh), ARG(-1.0e+00,-9.42443269378637893396e+00), RES(-1.5430805428404715945e0, 4.0575816248662194348e-4)}, + {FN (cosh), ARG(1.0e+00,9.42512322775237976202e+00), RES(-1.5430805428404715949e0, -4.0575816248575841970e-4)}, + {FN (cosh), ARG(1.0e+00,-9.42512322775237976202e+00), RES(-1.5430805428404715949e0, 4.0575816248575841970e-4)}, + {FN (cosh), ARG(-1.0e+00,9.42512322775237976202e+00), RES(-1.5430805428404715949e0, 4.0575816248575841970e-4)}, + {FN (cosh), ARG(-1.0e+00,-9.42512322775237976202e+00), RES(-1.5430805428404715949e0, -4.0575816248575841970e-4)}, + {FN (cosh), ARG(2.0e+00,-3.45266983001243932001e-04), RES(3.7621954668392959447e0, -1.2522351259043242989e-3)}, + {FN (cosh), ARG(2.0e+00,3.45266983001243932001e-04), RES(3.7621954668392959447e0, 1.2522351259043242989e-3)}, + {FN (cosh), ARG(-2.0e+00,-3.45266983001243932001e-04), RES(3.7621954668392959447e0, 1.2522351259043242989e-3)}, + {FN (cosh), ARG(-2.0e+00,3.45266983001243932001e-04), RES(3.7621954668392959447e0, -1.2522351259043242989e-3)}, + {FN (cosh), ARG(2.0e+00,1.57045105981189525579e+00), RES(1.2989619299131198016e-3, 3.6268601916692946554e0)}, + {FN (cosh), ARG(2.0e+00,-1.57045105981189525579e+00), RES(1.2989619299131198016e-3, -3.6268601916692946554e0)}, + {FN (cosh), ARG(-2.0e+00,1.57045105981189525579e+00), RES(1.2989619299131198016e-3, -3.6268601916692946554e0)}, + {FN (cosh), ARG(-2.0e+00,-1.57045105981189525579e+00), RES(1.2989619299131198016e-3, 3.6268601916692946554e0)}, + {FN (cosh), ARG(2.0e+00,1.57114159377789786021e+00), RES(-1.2989619299126590655e-3, 3.6268601916692946556e0)}, + {FN (cosh), ARG(2.0e+00,-1.57114159377789786021e+00), RES(-1.2989619299126590655e-3, -3.6268601916692946556e0)}, + {FN (cosh), ARG(-2.0e+00,1.57114159377789786021e+00), RES(-1.2989619299126590655e-3, -3.6268601916692946556e0)}, + {FN (cosh), ARG(-2.0e+00,-1.57114159377789786021e+00), RES(-1.2989619299126590655e-3, 3.6268601916692946556e0)}, + {FN (cosh), ARG(2.0e+00,3.14124738660679181379e+00), RES(-3.7621954668392959444e0, 1.2522351259049798196e-3)}, + {FN (cosh), ARG(2.0e+00,-3.14124738660679181379e+00), RES(-3.7621954668392959444e0, -1.2522351259049798196e-3)}, + {FN (cosh), ARG(-2.0e+00,3.14124738660679181379e+00), RES(-3.7621954668392959444e0, -1.2522351259049798196e-3)}, + {FN (cosh), ARG(-2.0e+00,-3.14124738660679181379e+00), RES(-3.7621954668392959444e0, 1.2522351259049798196e-3)}, + {FN (cosh), ARG(2.0e+00,3.14193792057279441821e+00), RES(-3.7621954668392959448e0, -1.2522351259040914950e-3)}, + {FN (cosh), ARG(2.0e+00,-3.14193792057279441821e+00), RES(-3.7621954668392959448e0, 1.2522351259040914950e-3)}, + {FN (cosh), ARG(-2.0e+00,3.14193792057279441821e+00), RES(-3.7621954668392959448e0, 1.2522351259040914950e-3)}, + {FN (cosh), ARG(-2.0e+00,-3.14193792057279441821e+00), RES(-3.7621954668392959448e0, -1.2522351259040914950e-3)}, + {FN (cosh), ARG(2.0e+00,4.71204371340168837179e+00), RES(-1.2989619299135805376e-3, -3.6268601916692946552e0)}, + {FN (cosh), ARG(2.0e+00,-4.71204371340168837179e+00), RES(-1.2989619299135805376e-3, 3.6268601916692946552e0)}, + {FN (cosh), ARG(-2.0e+00,4.71204371340168837179e+00), RES(-1.2989619299135805376e-3, 3.6268601916692946552e0)}, + {FN (cosh), ARG(-2.0e+00,-4.71204371340168837179e+00), RES(-1.2989619299135805376e-3, -3.6268601916692946552e0)}, + {FN (cosh), ARG(2.0e+00,4.71273424736769097620e+00), RES(1.2989619299121983294e-3, -3.6268601916692946557e0)}, + {FN (cosh), ARG(2.0e+00,-4.71273424736769097620e+00), RES(1.2989619299121983294e-3, 3.6268601916692946557e0)}, + {FN (cosh), ARG(-2.0e+00,4.71273424736769097620e+00), RES(1.2989619299121983294e-3, 3.6268601916692946557e0)}, + {FN (cosh), ARG(-2.0e+00,-4.71273424736769097620e+00), RES(1.2989619299121983294e-3, -3.6268601916692946557e0)}, + {FN (cosh), ARG(2.0e+00,6.28284004019658492979e+00), RES(3.7621954668392959443e0, -1.2522351259054239819e-3)}, + {FN (cosh), ARG(2.0e+00,-6.28284004019658492979e+00), RES(3.7621954668392959443e0, 1.2522351259054239819e-3)}, + {FN (cosh), ARG(-2.0e+00,6.28284004019658492979e+00), RES(3.7621954668392959443e0, 1.2522351259054239819e-3)}, + {FN (cosh), ARG(-2.0e+00,-6.28284004019658492979e+00), RES(3.7621954668392959443e0, -1.2522351259054239819e-3)}, + {FN (cosh), ARG(2.0e+00,6.28353057416258753420e+00), RES(3.7621954668392959449e0, 1.2522351259036473328e-3)}, + {FN (cosh), ARG(2.0e+00,-6.28353057416258753420e+00), RES(3.7621954668392959449e0, -1.2522351259036473328e-3)}, + {FN (cosh), ARG(-2.0e+00,6.28353057416258753420e+00), RES(3.7621954668392959449e0, -1.2522351259036473328e-3)}, + {FN (cosh), ARG(-2.0e+00,-6.28353057416258753420e+00), RES(3.7621954668392959449e0, 1.2522351259036473328e-3)}, + {FN (cosh), ARG(2.0e+00,9.42443269378637893396e+00), RES(-3.7621954668392959453e0, 1.2522351259026468452e-3)}, + {FN (cosh), ARG(2.0e+00,-9.42443269378637893396e+00), RES(-3.7621954668392959453e0, -1.2522351259026468452e-3)}, + {FN (cosh), ARG(-2.0e+00,9.42443269378637893396e+00), RES(-3.7621954668392959453e0, -1.2522351259026468452e-3)}, + {FN (cosh), ARG(-2.0e+00,-9.42443269378637893396e+00), RES(-3.7621954668392959453e0, 1.2522351259026468452e-3)}, + {FN (cosh), ARG(2.0e+00,9.42512322775237976202e+00), RES(-3.7621954668392959462e0, -1.2522351258999818715e-3)}, + {FN (cosh), ARG(2.0e+00,-9.42512322775237976202e+00), RES(-3.7621954668392959462e0, 1.2522351258999818715e-3)}, + {FN (cosh), ARG(-2.0e+00,9.42512322775237976202e+00), RES(-3.7621954668392959462e0, 1.2522351258999818715e-3)}, + {FN (cosh), ARG(-2.0e+00,-9.42512322775237976202e+00), RES(-3.7621954668392959462e0, -1.2522351258999818715e-3)}, + {FN (tanh), ARG(0.0e+00,-3.45266983001243932001e-04), RES(0, -3.4526699672092183585e-4)}, + {FN (tanh), ARG(0.0e+00,3.45266983001243932001e-04), RES(0, 3.4526699672092183585e-4)}, + {FN (tanh), ARG(0.0e+00,1.57045105981189525579e+00), RES(0, 2.8963092606501007060e3)}, + {FN (tanh), ARG(0.0e+00,-1.57045105981189525579e+00), RES(0, -2.8963092606501007060e3)}, + {FN (tanh), ARG(0.0e+00,1.57114159377789786021e+00), RES(0, -2.8963092606511280143e3)}, + {FN (tanh), ARG(0.0e+00,-1.57114159377789786021e+00), RES(0, 2.8963092606511280143e3)}, + {FN (tanh), ARG(0.0e+00,3.14124738660679181379e+00), RES(0, -3.4526699672110257641e-4)}, + {FN (tanh), ARG(0.0e+00,-3.14124738660679181379e+00), RES(0, 3.4526699672110257641e-4)}, + {FN (tanh), ARG(0.0e+00,3.14193792057279441821e+00), RES(0, 3.4526699672085764703e-4)}, + {FN (tanh), ARG(0.0e+00,-3.14193792057279441821e+00), RES(0, -3.4526699672085764703e-4)}, + {FN (tanh), ARG(0.0e+00,4.71204371340168837179e+00), RES(0, 2.8963092606490733978e3)}, + {FN (tanh), ARG(0.0e+00,-4.71204371340168837179e+00), RES(0, -2.8963092606490733978e3)}, + {FN (tanh), ARG(0.0e+00,4.71273424736769097620e+00), RES(0, -2.8963092606521553225e3)}, + {FN (tanh), ARG(0.0e+00,-4.71273424736769097620e+00), RES(0, 2.8963092606521553225e3)}, + {FN (tanh), ARG(0.0e+00,6.28284004019658492979e+00), RES(0, -3.4526699672122504111e-4)}, + {FN (tanh), ARG(0.0e+00,-6.28284004019658492979e+00), RES(0, 3.4526699672122504111e-4)}, + {FN (tanh), ARG(0.0e+00,6.28353057416258753420e+00), RES(0, 3.4526699672073518233e-4)}, + {FN (tanh), ARG(0.0e+00,-6.28353057416258753420e+00), RES(0, -3.4526699672073518233e-4)}, + {FN (tanh), ARG(0.0e+00,9.42443269378637893396e+00), RES(0, -3.4526699672045932728e-4)}, + {FN (tanh), ARG(0.0e+00,-9.42443269378637893396e+00), RES(0, 3.4526699672045932728e-4)}, + {FN (tanh), ARG(0.0e+00,9.42512322775237976202e+00), RES(0, 3.4526699671972453911e-4)}, + {FN (tanh), ARG(0.0e+00,-9.42512322775237976202e+00), RES(0, -3.4526699671972453911e-4)}, + {FN (tanh), ARG(1.19209289550781250e-07,-3.45266983001243932001e-04), RES(1.1920930376163652989e-7, -3.4526699672091692931e-4)}, + {FN (tanh), ARG(1.19209289550781250e-07,3.45266983001243932001e-04), RES(1.1920930376163652989e-7, 3.4526699672091692931e-4)}, + {FN (tanh), ARG(-1.19209289550781250e-07,-3.45266983001243932001e-04), RES(-1.1920930376163652989e-7, -3.4526699672091692931e-4)}, + {FN (tanh), ARG(-1.19209289550781250e-07,3.45266983001243932001e-04), RES(-1.1920930376163652989e-7, 3.4526699672091692931e-4)}, + {FN (tanh), ARG(1.19209289550781250e-07,1.57045105981189525579e+00), RES(9.9999992052646305569e-1, 2.8963089153831588642e3)}, + {FN (tanh), ARG(1.19209289550781250e-07,-1.57045105981189525579e+00), RES(9.9999992052646305569e-1, -2.8963089153831588642e3)}, + {FN (tanh), ARG(-1.19209289550781250e-07,1.57045105981189525579e+00), RES(-9.9999992052646305569e-1, 2.8963089153831588642e3)}, + {FN (tanh), ARG(-1.19209289550781250e-07,-1.57045105981189525579e+00), RES(-9.9999992052646305569e-1, -2.8963089153831588642e3)}, + {FN (tanh), ARG(1.19209289550781250e-07,1.57114159377789786021e+00), RES(9.9999992052717244672e-1, -2.8963089153841861720e3)}, + {FN (tanh), ARG(1.19209289550781250e-07,-1.57114159377789786021e+00), RES(9.9999992052717244672e-1, 2.8963089153841861720e3)}, + {FN (tanh), ARG(-1.19209289550781250e-07,1.57114159377789786021e+00), RES(-9.9999992052717244672e-1, -2.8963089153841861720e3)}, + {FN (tanh), ARG(-1.19209289550781250e-07,-1.57114159377789786021e+00), RES(-9.9999992052717244672e-1, 2.8963089153841861720e3)}, + {FN (tanh), ARG(1.19209289550781250e-07,3.14124738660679181379e+00), RES(1.1920930376163652991e-7, -3.4526699672109766987e-4)}, + {FN (tanh), ARG(1.19209289550781250e-07,-3.14124738660679181379e+00), RES(1.1920930376163652991e-7, 3.4526699672109766987e-4)}, + {FN (tanh), ARG(-1.19209289550781250e-07,3.14124738660679181379e+00), RES(-1.1920930376163652991e-7, -3.4526699672109766987e-4)}, + {FN (tanh), ARG(-1.19209289550781250e-07,-3.14124738660679181379e+00), RES(-1.1920930376163652991e-7, 3.4526699672109766987e-4)}, + {FN (tanh), ARG(1.19209289550781250e-07,3.14193792057279441821e+00), RES(1.1920930376163652989e-7, 3.4526699672085274049e-4)}, + {FN (tanh), ARG(1.19209289550781250e-07,-3.14193792057279441821e+00), RES(1.1920930376163652989e-7, -3.4526699672085274049e-4)}, + {FN (tanh), ARG(-1.19209289550781250e-07,3.14193792057279441821e+00), RES(-1.1920930376163652989e-7, 3.4526699672085274049e-4)}, + {FN (tanh), ARG(-1.19209289550781250e-07,-3.14193792057279441821e+00), RES(-1.1920930376163652989e-7, -3.4526699672085274049e-4)}, + {FN (tanh), ARG(1.19209289550781250e-07,4.71204371340168837179e+00), RES(9.9999992052575366466e-1, 2.8963089153821315563e3)}, + {FN (tanh), ARG(1.19209289550781250e-07,-4.71204371340168837179e+00), RES(9.9999992052575366466e-1, -2.8963089153821315563e3)}, + {FN (tanh), ARG(-1.19209289550781250e-07,4.71204371340168837179e+00), RES(-9.9999992052575366466e-1, 2.8963089153821315563e3)}, + {FN (tanh), ARG(-1.19209289550781250e-07,-4.71204371340168837179e+00), RES(-9.9999992052575366466e-1, -2.8963089153821315563e3)}, + {FN (tanh), ARG(1.19209289550781250e-07,4.71273424736769097620e+00), RES(9.9999992052788183776e-1, -2.8963089153852134799e3)}, + {FN (tanh), ARG(1.19209289550781250e-07,-4.71273424736769097620e+00), RES(9.9999992052788183776e-1, 2.8963089153852134799e3)}, + {FN (tanh), ARG(-1.19209289550781250e-07,4.71273424736769097620e+00), RES(-9.9999992052788183776e-1, -2.8963089153852134799e3)}, + {FN (tanh), ARG(-1.19209289550781250e-07,-4.71273424736769097620e+00), RES(-9.9999992052788183776e-1, 2.8963089153852134799e3)}, + {FN (tanh), ARG(1.19209289550781250e-07,6.28284004019658492979e+00), RES(1.1920930376163652992e-7, -3.4526699672122013457e-4)}, + {FN (tanh), ARG(1.19209289550781250e-07,-6.28284004019658492979e+00), RES(1.1920930376163652992e-7, 3.4526699672122013457e-4)}, + {FN (tanh), ARG(-1.19209289550781250e-07,6.28284004019658492979e+00), RES(-1.1920930376163652992e-7, -3.4526699672122013457e-4)}, + {FN (tanh), ARG(-1.19209289550781250e-07,-6.28284004019658492979e+00), RES(-1.1920930376163652992e-7, 3.4526699672122013457e-4)}, + {FN (tanh), ARG(1.19209289550781250e-07,6.28353057416258753420e+00), RES(1.1920930376163652988e-7, 3.4526699672073027579e-4)}, + {FN (tanh), ARG(1.19209289550781250e-07,-6.28353057416258753420e+00), RES(1.1920930376163652988e-7, -3.4526699672073027579e-4)}, + {FN (tanh), ARG(-1.19209289550781250e-07,6.28353057416258753420e+00), RES(-1.1920930376163652988e-7, 3.4526699672073027579e-4)}, + {FN (tanh), ARG(-1.19209289550781250e-07,-6.28353057416258753420e+00), RES(-1.1920930376163652988e-7, -3.4526699672073027579e-4)}, + {FN (tanh), ARG(1.19209289550781250e-07,9.42443269378637893396e+00), RES(1.1920930376163652985e-7, -3.4526699672045442074e-4)}, + {FN (tanh), ARG(1.19209289550781250e-07,-9.42443269378637893396e+00), RES(1.1920930376163652985e-7, 3.4526699672045442074e-4)}, + {FN (tanh), ARG(-1.19209289550781250e-07,9.42443269378637893396e+00), RES(-1.1920930376163652985e-7, -3.4526699672045442074e-4)}, + {FN (tanh), ARG(-1.19209289550781250e-07,-9.42443269378637893396e+00), RES(-1.1920930376163652985e-7, 3.4526699672045442074e-4)}, + {FN (tanh), ARG(1.19209289550781250e-07,9.42512322775237976202e+00), RES(1.1920930376163652979e-7, 3.4526699671971963257e-4)}, + {FN (tanh), ARG(1.19209289550781250e-07,-9.42512322775237976202e+00), RES(1.1920930376163652979e-7, -3.4526699671971963257e-4)}, + {FN (tanh), ARG(-1.19209289550781250e-07,9.42512322775237976202e+00), RES(-1.1920930376163652979e-7, 3.4526699671971963257e-4)}, + {FN (tanh), ARG(-1.19209289550781250e-07,-9.42512322775237976202e+00), RES(-1.1920930376163652979e-7, -3.4526699671971963257e-4)}, + {FN (tanh), ARG(5.0e-01,-3.45266983001243932001e-04), RES(4.6211720058436229979e-1, -2.7153443992655805934e-4)}, + {FN (tanh), ARG(5.0e-01,3.45266983001243932001e-04), RES(4.6211720058436229979e-1, 2.7153443992655805934e-4)}, + {FN (tanh), ARG(-5.0e-01,-3.45266983001243932001e-04), RES(-4.6211720058436229979e-1, -2.7153443992655805934e-4)}, + {FN (tanh), ARG(-5.0e-01,3.45266983001243932001e-04), RES(-4.6211720058436229979e-1, 2.7153443992655805934e-4)}, + {FN (tanh), ARG(5.0e-01,1.57045105981189525579e+00), RES(2.1639524637389325996e0, 1.2715121175455623363e-3)}, + {FN (tanh), ARG(5.0e-01,-1.57045105981189525579e+00), RES(2.1639524637389325996e0, -1.2715121175455623363e-3)}, + {FN (tanh), ARG(-5.0e-01,1.57045105981189525579e+00), RES(-2.1639524637389325996e0, 1.2715121175455623363e-3)}, + {FN (tanh), ARG(-5.0e-01,-1.57045105981189525579e+00), RES(-2.1639524637389325996e0, -1.2715121175455623363e-3)}, + {FN (tanh), ARG(5.0e-01,1.57114159377789786021e+00), RES(2.1639524637389326002e0, -1.2715121175451113370e-3)}, + {FN (tanh), ARG(5.0e-01,-1.57114159377789786021e+00), RES(2.1639524637389326002e0, 1.2715121175451113370e-3)}, + {FN (tanh), ARG(-5.0e-01,1.57114159377789786021e+00), RES(-2.1639524637389326002e0, -1.2715121175451113370e-3)}, + {FN (tanh), ARG(-5.0e-01,-1.57114159377789786021e+00), RES(-2.1639524637389326002e0, 1.2715121175451113370e-3)}, + {FN (tanh), ARG(5.0e-01,3.14124738660679181379e+00), RES(4.6211720058436229984e-1, -2.7153443992670020234e-4)}, + {FN (tanh), ARG(5.0e-01,-3.14124738660679181379e+00), RES(4.6211720058436229984e-1, 2.7153443992670020234e-4)}, + {FN (tanh), ARG(-5.0e-01,3.14124738660679181379e+00), RES(-4.6211720058436229984e-1, -2.7153443992670020234e-4)}, + {FN (tanh), ARG(-5.0e-01,-3.14124738660679181379e+00), RES(-4.6211720058436229984e-1, 2.7153443992670020234e-4)}, + {FN (tanh), ARG(5.0e-01,3.14193792057279441821e+00), RES(4.6211720058436229978e-1, 2.7153443992650757820e-4)}, + {FN (tanh), ARG(5.0e-01,-3.14193792057279441821e+00), RES(4.6211720058436229978e-1, -2.7153443992650757820e-4)}, + {FN (tanh), ARG(-5.0e-01,3.14193792057279441821e+00), RES(-4.6211720058436229978e-1, 2.7153443992650757820e-4)}, + {FN (tanh), ARG(-5.0e-01,-3.14193792057279441821e+00), RES(-4.6211720058436229978e-1, -2.7153443992650757820e-4)}, + {FN (tanh), ARG(5.0e-01,4.71204371340168837179e+00), RES(2.1639524637389325989e0, 1.2715121175460133355e-3)}, + {FN (tanh), ARG(5.0e-01,-4.71204371340168837179e+00), RES(2.1639524637389325989e0, -1.2715121175460133355e-3)}, + {FN (tanh), ARG(-5.0e-01,4.71204371340168837179e+00), RES(-2.1639524637389325989e0, 1.2715121175460133355e-3)}, + {FN (tanh), ARG(-5.0e-01,-4.71204371340168837179e+00), RES(-2.1639524637389325989e0, -1.2715121175460133355e-3)}, + {FN (tanh), ARG(5.0e-01,4.71273424736769097620e+00), RES(2.1639524637389326009e0, -1.2715121175446603377e-3)}, + {FN (tanh), ARG(5.0e-01,-4.71273424736769097620e+00), RES(2.1639524637389326009e0, 1.2715121175446603377e-3)}, + {FN (tanh), ARG(-5.0e-01,4.71273424736769097620e+00), RES(-2.1639524637389326009e0, -1.2715121175446603377e-3)}, + {FN (tanh), ARG(-5.0e-01,-4.71273424736769097620e+00), RES(-2.1639524637389326009e0, 1.2715121175446603377e-3)}, + {FN (tanh), ARG(5.0e-01,6.28284004019658492979e+00), RES(4.6211720058436229987e-1, -2.7153443992679651442e-4)}, + {FN (tanh), ARG(5.0e-01,-6.28284004019658492979e+00), RES(4.6211720058436229987e-1, 2.7153443992679651442e-4)}, + {FN (tanh), ARG(-5.0e-01,6.28284004019658492979e+00), RES(-4.6211720058436229987e-1, -2.7153443992679651442e-4)}, + {FN (tanh), ARG(-5.0e-01,-6.28284004019658492979e+00), RES(-4.6211720058436229987e-1, 2.7153443992679651442e-4)}, + {FN (tanh), ARG(5.0e-01,6.28353057416258753420e+00), RES(4.6211720058436229974e-1, 2.7153443992641126612e-4)}, + {FN (tanh), ARG(5.0e-01,-6.28353057416258753420e+00), RES(4.6211720058436229974e-1, -2.7153443992641126612e-4)}, + {FN (tanh), ARG(-5.0e-01,6.28353057416258753420e+00), RES(-4.6211720058436229974e-1, 2.7153443992641126612e-4)}, + {FN (tanh), ARG(-5.0e-01,-6.28353057416258753420e+00), RES(-4.6211720058436229974e-1, -2.7153443992641126612e-4)}, + {FN (tanh), ARG(5.0e-01,9.42443269378637893396e+00), RES(4.6211720058436229968e-1, -2.7153443992619432056e-4)}, + {FN (tanh), ARG(5.0e-01,-9.42443269378637893396e+00), RES(4.6211720058436229968e-1, 2.7153443992619432056e-4)}, + {FN (tanh), ARG(-5.0e-01,9.42443269378637893396e+00), RES(-4.6211720058436229968e-1, -2.7153443992619432056e-4)}, + {FN (tanh), ARG(-5.0e-01,-9.42443269378637893396e+00), RES(-4.6211720058436229968e-1, 2.7153443992619432056e-4)}, + {FN (tanh), ARG(5.0e-01,9.42512322775237976202e+00), RES(4.6211720058436229949e-1, 2.7153443992561644811e-4)}, + {FN (tanh), ARG(5.0e-01,-9.42512322775237976202e+00), RES(4.6211720058436229949e-1, -2.7153443992561644811e-4)}, + {FN (tanh), ARG(-5.0e-01,9.42512322775237976202e+00), RES(-4.6211720058436229949e-1, 2.7153443992561644811e-4)}, + {FN (tanh), ARG(-5.0e-01,-9.42512322775237976202e+00), RES(-4.6211720058436229949e-1, -2.7153443992561644811e-4)}, + {FN (tanh), ARG(1.0e+00,-3.45266983001243932001e-04), RES(7.6159419408485704836e-1, -1.4500326960274960880e-4)}, + {FN (tanh), ARG(1.0e+00,3.45266983001243932001e-04), RES(7.6159419408485704836e-1, 1.4500326960274960880e-4)}, + {FN (tanh), ARG(-1.0e+00,-3.45266983001243932001e-04), RES(-7.6159419408485704836e-1, -1.4500326960274960880e-4)}, + {FN (tanh), ARG(-1.0e+00,3.45266983001243932001e-04), RES(-7.6159419408485704836e-1, 1.4500326960274960880e-4)}, + {FN (tanh), ARG(1.0e+00,1.57045105981189525579e+00), RES(1.3130351721648674823e0, 2.4999454374276273814e-4)}, + {FN (tanh), ARG(1.0e+00,-1.57045105981189525579e+00), RES(1.3130351721648674823e0, -2.4999454374276273814e-4)}, + {FN (tanh), ARG(-1.0e+00,1.57045105981189525579e+00), RES(-1.3130351721648674823e0, 2.4999454374276273814e-4)}, + {FN (tanh), ARG(-1.0e+00,-1.57045105981189525579e+00), RES(-1.3130351721648674823e0, -2.4999454374276273814e-4)}, + {FN (tanh), ARG(1.0e+00,1.57114159377789786021e+00), RES(1.3130351721648674824e0, -2.4999454374267406620e-4)}, + {FN (tanh), ARG(1.0e+00,-1.57114159377789786021e+00), RES(1.3130351721648674824e0, 2.4999454374267406620e-4)}, + {FN (tanh), ARG(-1.0e+00,1.57114159377789786021e+00), RES(-1.3130351721648674824e0, -2.4999454374267406620e-4)}, + {FN (tanh), ARG(-1.0e+00,-1.57114159377789786021e+00), RES(-1.3130351721648674824e0, 2.4999454374267406620e-4)}, + {FN (tanh), ARG(1.0e+00,3.14124738660679181379e+00), RES(7.6159419408485704840e-1, -1.4500326960282551519e-4)}, + {FN (tanh), ARG(1.0e+00,-3.14124738660679181379e+00), RES(7.6159419408485704840e-1, 1.4500326960282551519e-4)}, + {FN (tanh), ARG(-1.0e+00,3.14124738660679181379e+00), RES(-7.6159419408485704840e-1, -1.4500326960282551519e-4)}, + {FN (tanh), ARG(-1.0e+00,-3.14124738660679181379e+00), RES(-7.6159419408485704840e-1, 1.4500326960282551519e-4)}, + {FN (tanh), ARG(1.0e+00,3.14193792057279441821e+00), RES(7.6159419408485704835e-1, 1.4500326960272265115e-4)}, + {FN (tanh), ARG(1.0e+00,-3.14193792057279441821e+00), RES(7.6159419408485704835e-1, -1.4500326960272265115e-4)}, + {FN (tanh), ARG(-1.0e+00,3.14193792057279441821e+00), RES(-7.6159419408485704835e-1, 1.4500326960272265115e-4)}, + {FN (tanh), ARG(-1.0e+00,-3.14193792057279441821e+00), RES(-7.6159419408485704835e-1, -1.4500326960272265115e-4)}, + {FN (tanh), ARG(1.0e+00,4.71204371340168837179e+00), RES(1.3130351721648674822e0, 2.4999454374285141007e-4)}, + {FN (tanh), ARG(1.0e+00,-4.71204371340168837179e+00), RES(1.3130351721648674822e0, -2.4999454374285141007e-4)}, + {FN (tanh), ARG(-1.0e+00,4.71204371340168837179e+00), RES(-1.3130351721648674822e0, 2.4999454374285141007e-4)}, + {FN (tanh), ARG(-1.0e+00,-4.71204371340168837179e+00), RES(-1.3130351721648674822e0, -2.4999454374285141007e-4)}, + {FN (tanh), ARG(1.0e+00,4.71273424736769097620e+00), RES(1.3130351721648674825e0, -2.4999454374258539427e-4)}, + {FN (tanh), ARG(1.0e+00,-4.71273424736769097620e+00), RES(1.3130351721648674825e0, 2.4999454374258539427e-4)}, + {FN (tanh), ARG(-1.0e+00,4.71273424736769097620e+00), RES(-1.3130351721648674825e0, -2.4999454374258539427e-4)}, + {FN (tanh), ARG(-1.0e+00,-4.71273424736769097620e+00), RES(-1.3130351721648674825e0, 2.4999454374258539427e-4)}, + {FN (tanh), ARG(1.0e+00,6.28284004019658492979e+00), RES(7.6159419408485704843e-1, -1.4500326960287694721e-4)}, + {FN (tanh), ARG(1.0e+00,-6.28284004019658492979e+00), RES(7.6159419408485704843e-1, 1.4500326960287694721e-4)}, + {FN (tanh), ARG(-1.0e+00,6.28284004019658492979e+00), RES(-7.6159419408485704843e-1, -1.4500326960287694721e-4)}, + {FN (tanh), ARG(-1.0e+00,-6.28284004019658492979e+00), RES(-7.6159419408485704843e-1, 1.4500326960287694721e-4)}, + {FN (tanh), ARG(1.0e+00,6.28353057416258753420e+00), RES(7.6159419408485704832e-1, 1.4500326960267121913e-4)}, + {FN (tanh), ARG(1.0e+00,-6.28353057416258753420e+00), RES(7.6159419408485704832e-1, -1.4500326960267121913e-4)}, + {FN (tanh), ARG(-1.0e+00,6.28353057416258753420e+00), RES(-7.6159419408485704832e-1, 1.4500326960267121913e-4)}, + {FN (tanh), ARG(-1.0e+00,-6.28353057416258753420e+00), RES(-7.6159419408485704832e-1, -1.4500326960267121913e-4)}, + {FN (tanh), ARG(1.0e+00,9.42443269378637893396e+00), RES(7.6159419408485704826e-1, -1.4500326960255536711e-4)}, + {FN (tanh), ARG(1.0e+00,-9.42443269378637893396e+00), RES(7.6159419408485704826e-1, 1.4500326960255536711e-4)}, + {FN (tanh), ARG(-1.0e+00,9.42443269378637893396e+00), RES(-7.6159419408485704826e-1, -1.4500326960255536711e-4)}, + {FN (tanh), ARG(-1.0e+00,-9.42443269378637893396e+00), RES(-7.6159419408485704826e-1, 1.4500326960255536711e-4)}, + {FN (tanh), ARG(1.0e+00,9.42512322775237976202e+00), RES(7.6159419408485704810e-1, 1.450032696022467750e-4)}, + {FN (tanh), ARG(1.0e+00,-9.42512322775237976202e+00), RES(7.6159419408485704810e-1, -1.450032696022467750e-4)}, + {FN (tanh), ARG(-1.0e+00,9.42512322775237976202e+00), RES(-7.6159419408485704810e-1, 1.450032696022467750e-4)}, + {FN (tanh), ARG(-1.0e+00,-9.42512322775237976202e+00), RES(-7.6159419408485704810e-1, -1.450032696022467750e-4)}, + {FN (tanh), ARG(2.0e+00,-3.45266983001243932001e-04), RES(9.6402758819508310556e-1, -2.4393395410435306874e-5)}, + {FN (tanh), ARG(2.0e+00,3.45266983001243932001e-04), RES(9.6402758819508310556e-1, 2.4393395410435306874e-5)}, + {FN (tanh), ARG(-2.0e+00,-3.45266983001243932001e-04), RES(-9.6402758819508310556e-1, -2.4393395410435306874e-5)}, + {FN (tanh), ARG(-2.0e+00,3.45266983001243932001e-04), RES(-9.6402758819508310556e-1, 2.4393395410435306874e-5)}, + {FN (tanh), ARG(2.0e+00,1.57045105981189525579e+00), RES(1.0373147113268752620e0, 2.6247825506572821595e-5)}, + {FN (tanh), ARG(2.0e+00,-1.57045105981189525579e+00), RES(1.0373147113268752620e0, -2.6247825506572821595e-5)}, + {FN (tanh), ARG(-2.0e+00,1.57045105981189525579e+00), RES(-1.0373147113268752620e0, 2.6247825506572821595e-5)}, + {FN (tanh), ARG(-2.0e+00,-1.57045105981189525579e+00), RES(-1.0373147113268752620e0, -2.6247825506572821595e-5)}, + {FN (tanh), ARG(2.0e+00,1.57114159377789786021e+00), RES(1.0373147113268752620e0, -2.6247825506563511609e-5)}, + {FN (tanh), ARG(2.0e+00,-1.57114159377789786021e+00), RES(1.0373147113268752620e0, 2.6247825506563511609e-5)}, + {FN (tanh), ARG(-2.0e+00,1.57114159377789786021e+00), RES(-1.0373147113268752620e0, -2.6247825506563511609e-5)}, + {FN (tanh), ARG(-2.0e+00,-1.57114159377789786021e+00), RES(-1.0373147113268752620e0, 2.6247825506563511609e-5)}, + {FN (tanh), ARG(2.0e+00,3.14124738660679181379e+00), RES(9.6402758819508310557e-1, -2.4393395410448076340e-5)}, + {FN (tanh), ARG(2.0e+00,-3.14124738660679181379e+00), RES(9.6402758819508310557e-1, 2.4393395410448076340e-5)}, + {FN (tanh), ARG(-2.0e+00,3.14124738660679181379e+00), RES(-9.6402758819508310557e-1, -2.4393395410448076340e-5)}, + {FN (tanh), ARG(-2.0e+00,-3.14124738660679181379e+00), RES(-9.6402758819508310557e-1, 2.4393395410448076340e-5)}, + {FN (tanh), ARG(2.0e+00,3.14193792057279441821e+00), RES(9.6402758819508310556e-1, 2.4393395410430771882e-5)}, + {FN (tanh), ARG(2.0e+00,-3.14193792057279441821e+00), RES(9.6402758819508310556e-1, -2.4393395410430771882e-5)}, + {FN (tanh), ARG(-2.0e+00,3.14193792057279441821e+00), RES(-9.6402758819508310556e-1, 2.4393395410430771882e-5)}, + {FN (tanh), ARG(-2.0e+00,-3.14193792057279441821e+00), RES(-9.6402758819508310556e-1, -2.4393395410430771882e-5)}, + {FN (tanh), ARG(2.0e+00,4.71204371340168837179e+00), RES(1.0373147113268752620e0, 2.6247825506582131582e-5)}, + {FN (tanh), ARG(2.0e+00,-4.71204371340168837179e+00), RES(1.0373147113268752620e0, -2.6247825506582131582e-5)}, + {FN (tanh), ARG(-2.0e+00,4.71204371340168837179e+00), RES(-1.0373147113268752620e0, 2.6247825506582131582e-5)}, + {FN (tanh), ARG(-2.0e+00,-4.71204371340168837179e+00), RES(-1.0373147113268752620e0, -2.6247825506582131582e-5)}, + {FN (tanh), ARG(2.0e+00,4.71273424736769097620e+00), RES(1.0373147113268752620e0, -2.6247825506554201622e-5)}, + {FN (tanh), ARG(2.0e+00,-4.71273424736769097620e+00), RES(1.0373147113268752620e0, 2.6247825506554201622e-5)}, + {FN (tanh), ARG(-2.0e+00,4.71273424736769097620e+00), RES(-1.0373147113268752620e0, -2.6247825506554201622e-5)}, + {FN (tanh), ARG(-2.0e+00,-4.71273424736769097620e+00), RES(-1.0373147113268752620e0, 2.6247825506554201622e-5)}, + {FN (tanh), ARG(2.0e+00,6.28284004019658492979e+00), RES(9.6402758819508310558e-1, -2.4393395410456728569e-5)}, + {FN (tanh), ARG(2.0e+00,-6.28284004019658492979e+00), RES(9.6402758819508310558e-1, 2.4393395410456728569e-5)}, + {FN (tanh), ARG(-2.0e+00,6.28284004019658492979e+00), RES(-9.6402758819508310558e-1, -2.4393395410456728569e-5)}, + {FN (tanh), ARG(-2.0e+00,-6.28284004019658492979e+00), RES(-9.6402758819508310558e-1, 2.4393395410456728569e-5)}, + {FN (tanh), ARG(2.0e+00,6.28353057416258753420e+00), RES(9.6402758819508310555e-1, 2.4393395410422119654e-5)}, + {FN (tanh), ARG(2.0e+00,-6.28353057416258753420e+00), RES(9.6402758819508310555e-1, -2.4393395410422119654e-5)}, + {FN (tanh), ARG(-2.0e+00,6.28353057416258753420e+00), RES(-9.6402758819508310555e-1, 2.4393395410422119654e-5)}, + {FN (tanh), ARG(-2.0e+00,-6.28353057416258753420e+00), RES(-9.6402758819508310555e-1, -2.4393395410422119654e-5)}, + {FN (tanh), ARG(2.0e+00,9.42443269378637893396e+00), RES(9.6402758819508310554e-1, -2.4393395410402630273e-5)}, + {FN (tanh), ARG(2.0e+00,-9.42443269378637893396e+00), RES(9.6402758819508310554e-1, 2.4393395410402630273e-5)}, + {FN (tanh), ARG(-2.0e+00,9.42443269378637893396e+00), RES(-9.6402758819508310554e-1, -2.4393395410402630273e-5)}, + {FN (tanh), ARG(-2.0e+00,-9.42443269378637893396e+00), RES(-9.6402758819508310554e-1, 2.4393395410402630273e-5)}, + {FN (tanh), ARG(2.0e+00,9.42512322775237976202e+00), RES(9.6402758819508310550e-1, 2.439339541035071690e-5)}, + {FN (tanh), ARG(2.0e+00,-9.42512322775237976202e+00), RES(9.6402758819508310550e-1, -2.439339541035071690e-5)}, + {FN (tanh), ARG(-2.0e+00,9.42512322775237976202e+00), RES(-9.6402758819508310550e-1, 2.439339541035071690e-5)}, + {FN (tanh), ARG(-2.0e+00,-9.42512322775237976202e+00), RES(-9.6402758819508310550e-1, -2.439339541035071690e-5)}, + {FN (arcsinh), ARG(0.0e+00,0.0e+00), RES(0e0, 0.0)}, + {FN (arcsinh), ARG(0.0e+00,1.19209289550781250e-07), RES(0, 1.1920928955078153234e-7)}, + {FN (arcsinh), ARG(0.0e+00,-1.19209289550781250e-07), RES(0, -1.1920928955078153234e-7)}, + {FN (arcsinh), ARG(0.0e+00,5.0e-01), RES(0, 5.2359877559829887308e-1)}, + {FN (arcsinh), ARG(0.0e+00,-5.0e-01), RES(0, -5.2359877559829887308e-1)}, + {FN (arcsinh), ARG(0.0e+00,1.0e+00), RES(0, 1.5707963267948966192e0)}, + {FN (arcsinh), ARG(0.0e+00,-1.0e+00), RES(0, -1.5707963267948966192e0)}, + {FN (arcsinh), ARG(0.0e+00,2.0e+00), RES(1.3169578969248167086e0, 1.5707963267948966192e0)}, + {FN (arcsinh), ARG(0.0e+00,-2.0e+00), RES(-1.3169578969248167086e0, -1.5707963267948966192e0)}, + {FN (arcsinh), ARG(0.0e+00,8.3886080e+06), RES(1.6635532333438683873e1, 1.5707963267948966192e0)}, + {FN (arcsinh), ARG(0.0e+00,-8.3886080e+06), RES(-1.6635532333438683873e1, -1.5707963267948966192e0)}, + {FN (arcsinh), ARG(1.19209289550781250e-07,0.0e+00), RES(1.1920928955078096766e-7, 0.0)}, + {FN (arcsinh), ARG(-1.19209289550781250e-07,0.0e+00), RES(-1.1920928955078096766e-7, 0.0)}, + {FN (arcsinh), ARG(1.19209289550781250e-07,1.19209289550781250e-07), RES(1.1920928955078181469e-7, 1.1920928955078068531e-7)}, + {FN (arcsinh), ARG(1.19209289550781250e-07,-1.19209289550781250e-07), RES(1.1920928955078181469e-7, -1.1920928955078068531e-7)}, + {FN (arcsinh), ARG(-1.19209289550781250e-07,1.19209289550781250e-07), RES(-1.1920928955078181469e-7, 1.1920928955078068531e-7)}, + {FN (arcsinh), ARG(-1.19209289550781250e-07,-1.19209289550781250e-07), RES(-1.1920928955078181469e-7, -1.1920928955078068531e-7)}, + {FN (arcsinh), ARG(1.19209289550781250e-07,5.0e-01), RES(1.3765103082409432364e-7, 5.2359877559829340332e-1)}, + {FN (arcsinh), ARG(1.19209289550781250e-07,-5.0e-01), RES(1.3765103082409432364e-7, -5.2359877559829340332e-1)}, + {FN (arcsinh), ARG(-1.19209289550781250e-07,5.0e-01), RES(-1.3765103082409432364e-7, 5.2359877559829340332e-1)}, + {FN (arcsinh), ARG(-1.19209289550781250e-07,-5.0e-01), RES(-1.3765103082409432364e-7, -5.2359877559829340332e-1)}, + {FN (arcsinh), ARG(1.19209289550781250e-07,1.0e+00), RES(3.4526698643116312881e-4, 1.5704510598153252947e0)}, + {FN (arcsinh), ARG(1.19209289550781250e-07,-1.0e+00), RES(3.4526698643116312881e-4, -1.5704510598153252947e0)}, + {FN (arcsinh), ARG(-1.19209289550781250e-07,1.0e+00), RES(-3.4526698643116312881e-4, 1.5704510598153252947e0)}, + {FN (arcsinh), ARG(-1.19209289550781250e-07,-1.0e+00), RES(-3.4526698643116312881e-4, -1.5704510598153252947e0)}, + {FN (arcsinh), ARG(1.19209289550781250e-07,2.0e+00), RES(1.3169578969248194435e0, 1.5707962579693812072e0)}, + {FN (arcsinh), ARG(1.19209289550781250e-07,-2.0e+00), RES(1.3169578969248194435e0, -1.5707962579693812072e0)}, + {FN (arcsinh), ARG(-1.19209289550781250e-07,2.0e+00), RES(-1.3169578969248194435e0, 1.5707962579693812072e0)}, + {FN (arcsinh), ARG(-1.19209289550781250e-07,-2.0e+00), RES(-1.3169578969248194435e0, -1.5707962579693812072e0)}, + {FN (arcsinh), ARG(1.19209289550781250e-07,8.3886080e+06), RES(1.6635532333438683873e1, 1.5707963267948824084e0)}, + {FN (arcsinh), ARG(1.19209289550781250e-07,-8.3886080e+06), RES(1.6635532333438683873e1, -1.5707963267948824084e0)}, + {FN (arcsinh), ARG(-1.19209289550781250e-07,8.3886080e+06), RES(-1.6635532333438683873e1, 1.5707963267948824084e0)}, + {FN (arcsinh), ARG(-1.19209289550781250e-07,-8.3886080e+06), RES(-1.6635532333438683873e1, -1.5707963267948824084e0)}, + {FN (arcsinh), ARG(5.0e-01,0.0e+00), RES(4.8121182505960344750e-1, 0.0)}, + {FN (arcsinh), ARG(-5.0e-01,0.0e+00), RES(-4.8121182505960344750e-1, 0.0)}, + {FN (arcsinh), ARG(5.0e-01,1.19209289550781250e-07), RES(4.8121182505960598961e-1, 1.0662402999400097805e-7)}, + {FN (arcsinh), ARG(5.0e-01,-1.19209289550781250e-07), RES(4.8121182505960598961e-1, -1.0662402999400097805e-7)}, + {FN (arcsinh), ARG(-5.0e-01,1.19209289550781250e-07), RES(-4.8121182505960598961e-1, 1.0662402999400097805e-7)}, + {FN (arcsinh), ARG(-5.0e-01,-1.19209289550781250e-07), RES(-4.8121182505960598961e-1, -1.0662402999400097805e-7)}, + {FN (arcsinh), ARG(5.0e-01,5.0e-01), RES(5.3063753095251782602e-1, 4.5227844715119068206e-1)}, + {FN (arcsinh), ARG(5.0e-01,-5.0e-01), RES(5.3063753095251782602e-1, -4.5227844715119068206e-1)}, + {FN (arcsinh), ARG(-5.0e-01,5.0e-01), RES(-5.3063753095251782602e-1, 4.5227844715119068206e-1)}, + {FN (arcsinh), ARG(-5.0e-01,-5.0e-01), RES(-5.3063753095251782602e-1, -4.5227844715119068206e-1)}, + {FN (arcsinh), ARG(5.0e-01,1.0e+00), RES(7.3285767597364526089e-1, 8.9590748120889023907e-1)}, + {FN (arcsinh), ARG(5.0e-01,-1.0e+00), RES(7.3285767597364526089e-1, -8.9590748120889023907e-1)}, + {FN (arcsinh), ARG(-5.0e-01,1.0e+00), RES(-7.3285767597364526089e-1, 8.9590748120889023907e-1)}, + {FN (arcsinh), ARG(-5.0e-01,-1.0e+00), RES(-7.3285767597364526089e-1, -8.9590748120889023907e-1)}, + {FN (arcsinh), ARG(5.0e-01,2.0e+00), RES(1.3618009008578457882e0, 1.2930420702371826591e0)}, + {FN (arcsinh), ARG(5.0e-01,-2.0e+00), RES(1.3618009008578457882e0, -1.2930420702371826591e0)}, + {FN (arcsinh), ARG(-5.0e-01,2.0e+00), RES(-1.3618009008578457882e0, 1.2930420702371826591e0)}, + {FN (arcsinh), ARG(-5.0e-01,-2.0e+00), RES(-1.3618009008578457882e0, -1.2930420702371826591e0)}, + {FN (arcsinh), ARG(5.0e-01,8.3886080e+06), RES(1.6635532333438685650e1, 1.5707962671902518438e0)}, + {FN (arcsinh), ARG(5.0e-01,-8.3886080e+06), RES(1.6635532333438685650e1, -1.5707962671902518438e0)}, + {FN (arcsinh), ARG(-5.0e-01,8.3886080e+06), RES(-1.6635532333438685650e1, 1.5707962671902518438e0)}, + {FN (arcsinh), ARG(-5.0e-01,-8.3886080e+06), RES(-1.6635532333438685650e1, -1.5707962671902518438e0)}, + {FN (arcsinh), ARG(1.0e+00,0.0e+00), RES(8.8137358701954302523e-1, 0.0)}, + {FN (arcsinh), ARG(-1.0e+00,0.0e+00), RES(-8.8137358701954302523e-1, 0.0)}, + {FN (arcsinh), ARG(1.0e+00,1.19209289550781250e-07), RES(8.8137358701954553738e-1, 8.4293697021788013662e-8)}, + {FN (arcsinh), ARG(1.0e+00,-1.19209289550781250e-07), RES(8.8137358701954553738e-1, -8.4293697021788013662e-8)}, + {FN (arcsinh), ARG(-1.0e+00,1.19209289550781250e-07), RES(-8.8137358701954553738e-1, 8.4293697021788013662e-8)}, + {FN (arcsinh), ARG(-1.0e+00,-1.19209289550781250e-07), RES(-8.8137358701954553738e-1, -8.4293697021788013662e-8)}, + {FN (arcsinh), ARG(1.0e+00,5.0e-01), RES(9.2613303135018242455e-1, 3.4943906285721329363e-1)}, + {FN (arcsinh), ARG(1.0e+00,-5.0e-01), RES(9.2613303135018242455e-1, -3.4943906285721329363e-1)}, + {FN (arcsinh), ARG(-1.0e+00,5.0e-01), RES(-9.2613303135018242455e-1, 3.4943906285721329363e-1)}, + {FN (arcsinh), ARG(-1.0e+00,-5.0e-01), RES(-9.2613303135018242455e-1, -3.4943906285721329363e-1)}, + {FN (arcsinh), ARG(1.0e+00,1.0e+00), RES(1.0612750619050356520e0, 6.6623943249251525510e-1)}, + {FN (arcsinh), ARG(1.0e+00,-1.0e+00), RES(1.0612750619050356520e0, -6.6623943249251525510e-1)}, + {FN (arcsinh), ARG(-1.0e+00,1.0e+00), RES(-1.0612750619050356520e0, 6.6623943249251525510e-1)}, + {FN (arcsinh), ARG(-1.0e+00,-1.0e+00), RES(-1.0612750619050356520e0, -6.6623943249251525510e-1)}, + {FN (arcsinh), ARG(1.0e+00,2.0e+00), RES(1.4693517443681852733e0, 1.0634400235777520562e0)}, + {FN (arcsinh), ARG(1.0e+00,-2.0e+00), RES(1.4693517443681852733e0, -1.0634400235777520562e0)}, + {FN (arcsinh), ARG(-1.0e+00,2.0e+00), RES(-1.4693517443681852733e0, 1.0634400235777520562e0)}, + {FN (arcsinh), ARG(-1.0e+00,-2.0e+00), RES(-1.4693517443681852733e0, -1.0634400235777520562e0)}, + {FN (arcsinh), ARG(1.0e+00,8.3886080e+06), RES(1.6635532333438690979e1, 1.5707962075856070684e0)}, + {FN (arcsinh), ARG(1.0e+00,-8.3886080e+06), RES(1.6635532333438690979e1, -1.5707962075856070684e0)}, + {FN (arcsinh), ARG(-1.0e+00,8.3886080e+06), RES(-1.6635532333438690979e1, 1.5707962075856070684e0)}, + {FN (arcsinh), ARG(-1.0e+00,-8.3886080e+06), RES(-1.6635532333438690979e1, -1.5707962075856070684e0)}, + {FN (arcsinh), ARG(2.0e+00,0.0e+00), RES(1.4436354751788103425e0, 0.0)}, + {FN (arcsinh), ARG(-2.0e+00,0.0e+00), RES(-1.4436354751788103425e0, 0.0)}, + {FN (arcsinh), ARG(2.0e+00,1.19209289550781250e-07), RES(1.4436354751788116136e0, 5.3312014997000413263e-8)}, + {FN (arcsinh), ARG(2.0e+00,-1.19209289550781250e-07), RES(1.4436354751788116136e0, -5.3312014997000413263e-8)}, + {FN (arcsinh), ARG(-2.0e+00,1.19209289550781250e-07), RES(-1.4436354751788116136e0, 5.3312014997000413263e-8)}, + {FN (arcsinh), ARG(-2.0e+00,-1.19209289550781250e-07), RES(-1.4436354751788116136e0, -5.3312014997000413263e-8)}, + {FN (arcsinh), ARG(2.0e+00,5.0e-01), RES(1.4657153519472905218e0, 2.2101863562288385890e-1)}, + {FN (arcsinh), ARG(2.0e+00,-5.0e-01), RES(1.4657153519472905218e0, -2.2101863562288385890e-1)}, + {FN (arcsinh), ARG(-2.0e+00,5.0e-01), RES(-1.4657153519472905218e0, 2.2101863562288385890e-1)}, + {FN (arcsinh), ARG(-2.0e+00,-5.0e-01), RES(-1.4657153519472905218e0, -2.2101863562288385890e-1)}, + {FN (arcsinh), ARG(2.0e+00,1.0e+00), RES(1.5285709194809981613e0, 4.2707858639247612548e-1)}, + {FN (arcsinh), ARG(2.0e+00,-1.0e+00), RES(1.5285709194809981613e0, -4.2707858639247612548e-1)}, + {FN (arcsinh), ARG(-2.0e+00,1.0e+00), RES(-1.5285709194809981613e0, 4.2707858639247612548e-1)}, + {FN (arcsinh), ARG(-2.0e+00,-1.0e+00), RES(-1.5285709194809981613e0, -4.2707858639247612548e-1)}, + {FN (arcsinh), ARG(2.0e+00,2.0e+00), RES(1.7343245214879664480e0, 7.5424914469804604071e-1)}, + {FN (arcsinh), ARG(2.0e+00,-2.0e+00), RES(1.7343245214879664480e0, -7.5424914469804604071e-1)}, + {FN (arcsinh), ARG(-2.0e+00,2.0e+00), RES(-1.7343245214879664480e0, 7.5424914469804604071e-1)}, + {FN (arcsinh), ARG(-2.0e+00,-2.0e+00), RES(-1.7343245214879664480e0, -7.5424914469804604071e-1)}, + {FN (arcsinh), ARG(2.0e+00,8.3886080e+06), RES(1.6635532333438712295e1, 1.5707960883763175177e0)}, + {FN (arcsinh), ARG(2.0e+00,-8.3886080e+06), RES(1.6635532333438712295e1, -1.5707960883763175177e0)}, + {FN (arcsinh), ARG(-2.0e+00,8.3886080e+06), RES(-1.6635532333438712295e1, 1.5707960883763175177e0)}, + {FN (arcsinh), ARG(-2.0e+00,-8.3886080e+06), RES(-1.6635532333438712295e1, -1.5707960883763175177e0)}, + {FN (arcsinh), ARG(8.3886080e+06,0.0e+00), RES(1.6635532333438690979e1, 0.0)}, + {FN (arcsinh), ARG(-8.3886080e+06,0.0e+00), RES(-1.6635532333438690979e1, 0.0)}, + {FN (arcsinh), ARG(8.3886080e+06,1.19209289550781250e-07), RES(1.6635532333438690979e1, 1.4210854715201902743e-14)}, + {FN (arcsinh), ARG(8.3886080e+06,-1.19209289550781250e-07), RES(1.6635532333438690979e1, -1.4210854715201902743e-14)}, + {FN (arcsinh), ARG(-8.3886080e+06,1.19209289550781250e-07), RES(-1.6635532333438690979e1, 1.4210854715201902743e-14)}, + {FN (arcsinh), ARG(-8.3886080e+06,-1.19209289550781250e-07), RES(-1.6635532333438690979e1, -1.4210854715201902743e-14)}, + {FN (arcsinh), ARG(8.3886080e+06,5.0e-01), RES(1.6635532333438692755e1, 5.9604644775390130897e-8)}, + {FN (arcsinh), ARG(8.3886080e+06,-5.0e-01), RES(1.6635532333438692755e1, -5.9604644775390130897e-8)}, + {FN (arcsinh), ARG(-8.3886080e+06,5.0e-01), RES(-1.6635532333438692755e1, 5.9604644775390130897e-8)}, + {FN (arcsinh), ARG(-8.3886080e+06,-5.0e-01), RES(-1.6635532333438692755e1, -5.9604644775390130897e-8)}, + {FN (arcsinh), ARG(8.3886080e+06,1.0e+00), RES(1.6635532333438698084e1, 1.1920928955077983828e-7)}, + {FN (arcsinh), ARG(8.3886080e+06,-1.0e+00), RES(1.6635532333438698084e1, -1.1920928955077983828e-7)}, + {FN (arcsinh), ARG(-8.3886080e+06,1.0e+00), RES(-1.6635532333438698084e1, 1.1920928955077983828e-7)}, + {FN (arcsinh), ARG(-8.3886080e+06,-1.0e+00), RES(-1.6635532333438698084e1, -1.1920928955077983828e-7)}, + {FN (arcsinh), ARG(8.3886080e+06,2.0e+00), RES(1.663553233343871940e1, 2.3841857910155628843e-7)}, + {FN (arcsinh), ARG(8.3886080e+06,-2.0e+00), RES(1.663553233343871940e1, -2.3841857910155628843e-7)}, + {FN (arcsinh), ARG(-8.3886080e+06,2.0e+00), RES(-1.663553233343871940e1, 2.3841857910155628843e-7)}, + {FN (arcsinh), ARG(-8.3886080e+06,-2.0e+00), RES(-1.663553233343871940e1, -2.3841857910155628843e-7)}, + {FN (arcsinh), ARG(8.3886080e+06,8.3886080e+06), RES(1.6982105923718660081e1, 7.8539816339744653326e-1)}, + {FN (arcsinh), ARG(8.3886080e+06,-8.3886080e+06), RES(1.6982105923718660081e1, -7.8539816339744653326e-1)}, + {FN (arcsinh), ARG(-8.3886080e+06,8.3886080e+06), RES(-1.6982105923718660081e1, 7.8539816339744653326e-1)}, + {FN (arcsinh), ARG(-8.3886080e+06,-8.3886080e+06), RES(-1.6982105923718660081e1, -7.8539816339744653326e-1)}, + {FN (arccosh), ARG(0.0e+00,0.0e+00), RES(0, 1.5707963267948966192e0)}, + {FN (arccosh), ARG(0.0e+00,1.19209289550781250e-07), RES(1.1920928955078096766e-7, 1.5707963267948966192e0)}, + {FN (arccosh), ARG(0.0e+00,-1.19209289550781250e-07), RES(1.1920928955078096766e-7, -1.5707963267948966192e0)}, + {FN (arccosh), ARG(0.0e+00,5.0e-01), RES(4.8121182505960344750e-1, 1.5707963267948966192e0)}, + {FN (arccosh), ARG(0.0e+00,-5.0e-01), RES(4.8121182505960344750e-1, -1.5707963267948966192e0)}, + {FN (arccosh), ARG(0.0e+00,1.0e+00), RES(8.8137358701954302523e-1, 1.5707963267948966192e0)}, + {FN (arccosh), ARG(0.0e+00,-1.0e+00), RES(8.8137358701954302523e-1, -1.5707963267948966192e0)}, + {FN (arccosh), ARG(0.0e+00,2.0e+00), RES(1.4436354751788103425e0, 1.5707963267948966192e0)}, + {FN (arccosh), ARG(0.0e+00,-2.0e+00), RES(1.4436354751788103425e0, -1.5707963267948966192e0)}, + {FN (arccosh), ARG(0.0e+00,8.3886080e+06), RES(1.6635532333438690979e1, 1.5707963267948966192e0)}, + {FN (arccosh), ARG(0.0e+00,-8.3886080e+06), RES(1.6635532333438690979e1, -1.5707963267948966192e0)}, + {FN (arccosh), ARG(1.19209289550781250e-07,0.0e+00), RES(0, 1.5707962075856070684e0)}, + {FN (arccosh), ARG(-1.19209289550781250e-07,0.0e+00), RES(0, 1.570796446004186170e0)}, + {FN (arccosh), ARG(1.19209289550781250e-07,1.19209289550781250e-07), RES(1.1920928955078181469e-7, 1.5707962075856070685e0)}, + {FN (arccosh), ARG(1.19209289550781250e-07,-1.19209289550781250e-07), RES(1.1920928955078181469e-7, -1.5707962075856070685e0)}, + {FN (arccosh), ARG(-1.19209289550781250e-07,1.19209289550781250e-07), RES(1.1920928955078181469e-7, 1.570796446004186170e0)}, + {FN (arccosh), ARG(-1.19209289550781250e-07,-1.19209289550781250e-07), RES(1.1920928955078181469e-7, -1.570796446004186170e0)}, + {FN (arccosh), ARG(1.19209289550781250e-07,5.0e-01), RES(4.8121182505960598961e-1, 1.5707962201708666252e0)}, + {FN (arccosh), ARG(1.19209289550781250e-07,-5.0e-01), RES(4.8121182505960598961e-1, -1.5707962201708666252e0)}, + {FN (arccosh), ARG(-1.19209289550781250e-07,5.0e-01), RES(4.8121182505960598961e-1, 1.5707964334189266132e0)}, + {FN (arccosh), ARG(-1.19209289550781250e-07,-5.0e-01), RES(4.8121182505960598961e-1, -1.5707964334189266132e0)}, + {FN (arccosh), ARG(1.19209289550781250e-07,1.0e+00), RES(8.8137358701954553738e-1, 1.5707962425011995974e0)}, + {FN (arccosh), ARG(1.19209289550781250e-07,-1.0e+00), RES(8.8137358701954553738e-1, -1.5707962425011995974e0)}, + {FN (arccosh), ARG(-1.19209289550781250e-07,1.0e+00), RES(8.8137358701954553738e-1, 1.5707964110885936410e0)}, + {FN (arccosh), ARG(-1.19209289550781250e-07,-1.0e+00), RES(8.8137358701954553738e-1, -1.5707964110885936410e0)}, + {FN (arccosh), ARG(1.19209289550781250e-07,2.0e+00), RES(1.4436354751788116136e0, 1.5707962734828816222e0)}, + {FN (arccosh), ARG(1.19209289550781250e-07,-2.0e+00), RES(1.4436354751788116136e0, -1.5707962734828816222e0)}, + {FN (arccosh), ARG(-1.19209289550781250e-07,2.0e+00), RES(1.4436354751788116136e0, 1.5707963801069116162e0)}, + {FN (arccosh), ARG(-1.19209289550781250e-07,-2.0e+00), RES(1.4436354751788116136e0, -1.5707963801069116162e0)}, + {FN (arccosh), ARG(1.19209289550781250e-07,8.3886080e+06), RES(1.6635532333438690979e1, 1.5707963267948824084e0)}, + {FN (arccosh), ARG(1.19209289550781250e-07,-8.3886080e+06), RES(1.6635532333438690979e1, -1.5707963267948824084e0)}, + {FN (arccosh), ARG(-1.19209289550781250e-07,8.3886080e+06), RES(1.6635532333438690979e1, 1.5707963267949108301e0)}, + {FN (arccosh), ARG(-1.19209289550781250e-07,-8.3886080e+06), RES(1.6635532333438690979e1, -1.5707963267949108301e0)}, + {FN (arccosh), ARG(5.0e-01,0.0e+00), RES(0, 1.0471975511965977462e0)}, + {FN (arccosh), ARG(-5.0e-01,0.0e+00), RES(0, 2.0943951023931954923e0)}, + {FN (arccosh), ARG(5.0e-01,1.19209289550781250e-07), RES(1.3765103082409432364e-7, 1.0471975511966032159e0)}, + {FN (arccosh), ARG(5.0e-01,-1.19209289550781250e-07), RES(1.3765103082409432364e-7, -1.0471975511966032159e0)}, + {FN (arccosh), ARG(-5.0e-01,1.19209289550781250e-07), RES(1.3765103082409432364e-7, 2.0943951023931900225e0)}, + {FN (arccosh), ARG(-5.0e-01,-1.19209289550781250e-07), RES(1.3765103082409432364e-7, -2.0943951023931900225e0)}, + {FN (arccosh), ARG(5.0e-01,5.0e-01), RES(5.3063753095251782602e-1, 1.1185178796437059372e0)}, + {FN (arccosh), ARG(5.0e-01,-5.0e-01), RES(5.3063753095251782602e-1, -1.1185178796437059372e0)}, + {FN (arccosh), ARG(-5.0e-01,5.0e-01), RES(5.3063753095251782602e-1, 2.0230747739460873013e0)}, + {FN (arccosh), ARG(-5.0e-01,-5.0e-01), RES(5.3063753095251782602e-1, -2.0230747739460873013e0)}, + {FN (arccosh), ARG(5.0e-01,1.0e+00), RES(9.2613303135018242455e-1, 1.2213572639376833256e0)}, + {FN (arccosh), ARG(5.0e-01,-1.0e+00), RES(9.2613303135018242455e-1, -1.2213572639376833256e0)}, + {FN (arccosh), ARG(-5.0e-01,1.0e+00), RES(9.2613303135018242455e-1, 1.9202353896521099129e0)}, + {FN (arccosh), ARG(-5.0e-01,-1.0e+00), RES(9.2613303135018242455e-1, -1.9202353896521099129e0)}, + {FN (arccosh), ARG(5.0e-01,2.0e+00), RES(1.4657153519472905218e0, 1.3497776911720127603e0)}, + {FN (arccosh), ARG(5.0e-01,-2.0e+00), RES(1.4657153519472905218e0, -1.3497776911720127603e0)}, + {FN (arccosh), ARG(-5.0e-01,2.0e+00), RES(1.4657153519472905218e0, 1.7918149624177804781e0)}, + {FN (arccosh), ARG(-5.0e-01,-2.0e+00), RES(1.4657153519472905218e0, -1.7918149624177804781e0)}, + {FN (arccosh), ARG(5.0e-01,8.3886080e+06), RES(1.6635532333438692755e1, 1.5707962671902518438e0)}, + {FN (arccosh), ARG(5.0e-01,-8.3886080e+06), RES(1.6635532333438692755e1, -1.5707962671902518438e0)}, + {FN (arccosh), ARG(-5.0e-01,8.3886080e+06), RES(1.6635532333438692755e1, 1.5707963863995413946e0)}, + {FN (arccosh), ARG(-5.0e-01,-8.3886080e+06), RES(1.6635532333438692755e1, -1.5707963863995413946e0)}, + {FN (arccosh), ARG(1.0e+00,0.0e+00), RES(0e0, 0.0)}, + {FN (arccosh), ARG(-1.0e+00,0.0e+00), RES(0, 3.1415926535897932385e0)}, + {FN (arccosh), ARG(1.0e+00,1.19209289550781250e-07), RES(3.4526698643116312881e-4, 3.4526697957132450399e-4)}, + {FN (arccosh), ARG(1.0e+00,-1.19209289550781250e-07), RES(3.4526698643116312881e-4, -3.4526697957132450399e-4)}, + {FN (arccosh), ARG(-1.0e+00,1.19209289550781250e-07), RES(3.4526698643116312881e-4, 3.1412473866102219140e0)}, + {FN (arccosh), ARG(-1.0e+00,-1.19209289550781250e-07), RES(3.4526698643116312881e-4, -3.1412473866102219140e0)}, + {FN (arccosh), ARG(1.0e+00,5.0e-01), RES(7.3285767597364526089e-1, 6.7488884558600638016e-1)}, + {FN (arccosh), ARG(1.0e+00,-5.0e-01), RES(7.3285767597364526089e-1, -6.7488884558600638016e-1)}, + {FN (arccosh), ARG(-1.0e+00,5.0e-01), RES(7.3285767597364526089e-1, 2.4667038080037868583e0)}, + {FN (arccosh), ARG(-1.0e+00,-5.0e-01), RES(7.3285767597364526089e-1, -2.4667038080037868583e0)}, + {FN (arccosh), ARG(1.0e+00,1.0e+00), RES(1.0612750619050356520e0, 9.0455689430238136413e-1)}, + {FN (arccosh), ARG(1.0e+00,-1.0e+00), RES(1.0612750619050356520e0, -9.0455689430238136413e-1)}, + {FN (arccosh), ARG(-1.0e+00,1.0e+00), RES(1.0612750619050356520e0, 2.2370357592874118743e0)}, + {FN (arccosh), ARG(-1.0e+00,-1.0e+00), RES(1.0612750619050356520e0, -2.2370357592874118743e0)}, + {FN (arccosh), ARG(1.0e+00,2.0e+00), RES(1.5285709194809981613e0, 1.1437177404024204938e0)}, + {FN (arccosh), ARG(1.0e+00,-2.0e+00), RES(1.5285709194809981613e0, -1.1437177404024204938e0)}, + {FN (arccosh), ARG(-1.0e+00,2.0e+00), RES(1.5285709194809981613e0, 1.9978749131873727447e0)}, + {FN (arccosh), ARG(-1.0e+00,-2.0e+00), RES(1.5285709194809981613e0, -1.9978749131873727447e0)}, + {FN (arccosh), ARG(1.0e+00,8.3886080e+06), RES(1.6635532333438698084e1, 1.5707962075856070685e0)}, + {FN (arccosh), ARG(1.0e+00,-8.3886080e+06), RES(1.6635532333438698084e1, -1.5707962075856070685e0)}, + {FN (arccosh), ARG(-1.0e+00,8.3886080e+06), RES(1.6635532333438698084e1, 1.570796446004186170e0)}, + {FN (arccosh), ARG(-1.0e+00,-8.3886080e+06), RES(1.6635532333438698084e1, -1.570796446004186170e0)}, + {FN (arccosh), ARG(2.0e+00,0.0e+00), RES(1.3169578969248167086e0, 0.0)}, + {FN (arccosh), ARG(-2.0e+00,0.0e+00), RES(1.3169578969248167086e0, 3.1415926535897932385e0)}, + {FN (arccosh), ARG(2.0e+00,1.19209289550781250e-07), RES(1.3169578969248194435e0, 6.8825515412047433504e-8)}, + {FN (arccosh), ARG(2.0e+00,-1.19209289550781250e-07), RES(1.3169578969248194435e0, -6.8825515412047433504e-8)}, + {FN (arccosh), ARG(-2.0e+00,1.19209289550781250e-07), RES(1.3169578969248194435e0, 3.1415925847642778264e0)}, + {FN (arccosh), ARG(-2.0e+00,-1.19209289550781250e-07), RES(1.3169578969248194435e0, -3.1415925847642778264e0)}, + {FN (arccosh), ARG(2.0e+00,5.0e-01), RES(1.3618009008578457882e0, 2.7775425655771396018e-1)}, + {FN (arccosh), ARG(2.0e+00,-5.0e-01), RES(1.3618009008578457882e0, -2.7775425655771396018e-1)}, + {FN (arccosh), ARG(-2.0e+00,5.0e-01), RES(1.3618009008578457882e0, 2.8638383970320792783e0)}, + {FN (arccosh), ARG(-2.0e+00,-5.0e-01), RES(1.3618009008578457882e0, -2.8638383970320792783e0)}, + {FN (arccosh), ARG(2.0e+00,1.0e+00), RES(1.4693517443681852733e0, 5.0735630321714456304e-1)}, + {FN (arccosh), ARG(2.0e+00,-1.0e+00), RES(1.4693517443681852733e0, -5.0735630321714456304e-1)}, + {FN (arccosh), ARG(-2.0e+00,1.0e+00), RES(1.4693517443681852733e0, 2.6342363503726486754e0)}, + {FN (arccosh), ARG(-2.0e+00,-1.0e+00), RES(1.4693517443681852733e0, -2.6342363503726486754e0)}, + {FN (arccosh), ARG(2.0e+00,2.0e+00), RES(1.7343245214879664480e0, 8.1654718209685057852e-1)}, + {FN (arccosh), ARG(2.0e+00,-2.0e+00), RES(1.7343245214879664480e0, -8.1654718209685057852e-1)}, + {FN (arccosh), ARG(-2.0e+00,2.0e+00), RES(1.7343245214879664480e0, 2.3250454714929426599e0)}, + {FN (arccosh), ARG(-2.0e+00,-2.0e+00), RES(1.7343245214879664480e0, -2.3250454714929426599e0)}, + {FN (arccosh), ARG(2.0e+00,8.3886080e+06), RES(1.663553233343871940e1, 1.5707960883763175177e0)}, + {FN (arccosh), ARG(2.0e+00,-8.3886080e+06), RES(1.663553233343871940e1, -1.5707960883763175177e0)}, + {FN (arccosh), ARG(-2.0e+00,8.3886080e+06), RES(1.663553233343871940e1, 1.5707965652134757208e0)}, + {FN (arccosh), ARG(-2.0e+00,-8.3886080e+06), RES(1.663553233343871940e1, -1.5707965652134757208e0)}, + {FN (arccosh), ARG(8.3886080e+06,0.0e+00), RES(1.6635532333438683873e1, 0.0)}, + {FN (arccosh), ARG(-8.3886080e+06,0.0e+00), RES(1.6635532333438683873e1, 3.1415926535897932385e0)}, + {FN (arccosh), ARG(8.3886080e+06,1.19209289550781250e-07), RES(1.6635532333438683873e1, 1.4210854715202104692e-14)}, + {FN (arccosh), ARG(8.3886080e+06,-1.19209289550781250e-07), RES(1.6635532333438683873e1, -1.4210854715202104692e-14)}, + {FN (arccosh), ARG(-8.3886080e+06,1.19209289550781250e-07), RES(1.6635532333438683873e1, 3.1415926535897790276e0)}, + {FN (arccosh), ARG(-8.3886080e+06,-1.19209289550781250e-07), RES(1.6635532333438683873e1, -3.1415926535897790276e0)}, + {FN (arccosh), ARG(8.3886080e+06,5.0e-01), RES(1.6635532333438685650e1, 5.9604644775390977930e-8)}, + {FN (arccosh), ARG(8.3886080e+06,-5.0e-01), RES(1.6635532333438685650e1, -5.9604644775390977930e-8)}, + {FN (arccosh), ARG(-8.3886080e+06,5.0e-01), RES(1.6635532333438685650e1, 3.1415925939851484631e0)}, + {FN (arccosh), ARG(-8.3886080e+06,-5.0e-01), RES(1.6635532333438685650e1, -3.1415925939851484631e0)}, + {FN (arccosh), ARG(8.3886080e+06,1.0e+00), RES(1.6635532333438690979e1, 1.1920928955078153234e-7)}, + {FN (arccosh), ARG(8.3886080e+06,-1.0e+00), RES(1.6635532333438690979e1, -1.1920928955078153234e-7)}, + {FN (arccosh), ARG(-8.3886080e+06,1.0e+00), RES(1.6635532333438690979e1, 3.1415925343805036877e0)}, + {FN (arccosh), ARG(-8.3886080e+06,-1.0e+00), RES(1.6635532333438690979e1, -3.1415925343805036877e0)}, + {FN (arccosh), ARG(8.3886080e+06,2.0e+00), RES(1.6635532333438712295e1, 2.3841857910155967656e-7)}, + {FN (arccosh), ARG(8.3886080e+06,-2.0e+00), RES(1.6635532333438712295e1, -2.3841857910155967656e-7)}, + {FN (arccosh), ARG(-8.3886080e+06,2.0e+00), RES(1.6635532333438712295e1, 3.1415924151712141369e0)}, + {FN (arccosh), ARG(-8.3886080e+06,-2.0e+00), RES(1.6635532333438712295e1, -3.1415924151712141369e0)}, + {FN (arccosh), ARG(8.3886080e+06,8.3886080e+06), RES(1.6982105923718660081e1, 7.8539816339745008597e-1)}, + {FN (arccosh), ARG(8.3886080e+06,-8.3886080e+06), RES(1.6982105923718660081e1, -7.8539816339745008597e-1)}, + {FN (arccosh), ARG(-8.3886080e+06,8.3886080e+06), RES(1.6982105923718660081e1, 2.3561944901923431525e0)}, + {FN (arccosh), ARG(-8.3886080e+06,-8.3886080e+06), RES(1.6982105923718660081e1, -2.3561944901923431525e0)}, + {FN (arctanh), ARG(0.0e+00,0.0e+00), RES(0e0, 0.0)}, + {FN (arctanh), ARG(0.0e+00,1.19209289550781250e-07), RES(0, 1.1920928955078068531e-7)}, + {FN (arctanh), ARG(0.0e+00,-1.19209289550781250e-07), RES(0, -1.1920928955078068531e-7)}, + {FN (arctanh), ARG(0.0e+00,5.0e-01), RES(0, 4.6364760900080611621e-1)}, + {FN (arctanh), ARG(0.0e+00,-5.0e-01), RES(0, -4.6364760900080611621e-1)}, + {FN (arctanh), ARG(0.0e+00,1.0e+00), RES(0, 7.8539816339744830962e-1)}, + {FN (arctanh), ARG(0.0e+00,-1.0e+00), RES(0, -7.8539816339744830962e-1)}, + {FN (arctanh), ARG(0.0e+00,2.0e+00), RES(0, 1.1071487177940905030e0)}, + {FN (arctanh), ARG(0.0e+00,-2.0e+00), RES(0, -1.1071487177940905030e0)}, + {FN (arctanh), ARG(0.0e+00,8.3886080e+06), RES(0, 1.5707962075856070685e0)}, + {FN (arctanh), ARG(0.0e+00,-8.3886080e+06), RES(0, -1.5707962075856070685e0)}, + {FN (arctanh), ARG(1.19209289550781250e-07,0.0e+00), RES(1.1920928955078181469e-7, 0.0)}, + {FN (arctanh), ARG(-1.19209289550781250e-07,0.0e+00), RES(-1.1920928955078181469e-7, 0.0)}, + {FN (arctanh), ARG(1.19209289550781250e-07,1.19209289550781250e-07), RES(1.1920928955078012062e-7, 1.1920928955078237938e-7)}, + {FN (arctanh), ARG(1.19209289550781250e-07,-1.19209289550781250e-07), RES(1.1920928955078012062e-7, -1.1920928955078237938e-7)}, + {FN (arctanh), ARG(-1.19209289550781250e-07,1.19209289550781250e-07), RES(-1.1920928955078012062e-7, 1.1920928955078237938e-7)}, + {FN (arctanh), ARG(-1.19209289550781250e-07,-1.19209289550781250e-07), RES(-1.1920928955078012062e-7, -1.1920928955078237938e-7)}, + {FN (arctanh), ARG(1.19209289550781250e-07,5.0e-01), RES(9.5367431640625072280e-8, 4.6364760900081066369e-1)}, + {FN (arctanh), ARG(1.19209289550781250e-07,-5.0e-01), RES(9.5367431640625072280e-8, -4.6364760900081066369e-1)}, + {FN (arctanh), ARG(-1.19209289550781250e-07,5.0e-01), RES(-9.5367431640625072280e-8, 4.6364760900081066369e-1)}, + {FN (arctanh), ARG(-1.19209289550781250e-07,-5.0e-01), RES(-9.5367431640625072280e-8, -4.6364760900081066369e-1)}, + {FN (arctanh), ARG(1.19209289550781250e-07,1.0e+00), RES(5.9604644775390483828e-8, 7.8539816339745186233e-1)}, + {FN (arctanh), ARG(1.19209289550781250e-07,-1.0e+00), RES(5.9604644775390483828e-8, -7.8539816339745186233e-1)}, + {FN (arctanh), ARG(-1.19209289550781250e-07,1.0e+00), RES(-5.9604644775390483828e-8, 7.8539816339745186233e-1)}, + {FN (arctanh), ARG(-1.19209289550781250e-07,-1.0e+00), RES(-5.9604644775390483828e-8, -7.8539816339745186233e-1)}, + {FN (arctanh), ARG(1.19209289550781250e-07,2.0e+00), RES(2.3841857910156200307e-8, 1.1071487177940916399e0)}, + {FN (arctanh), ARG(1.19209289550781250e-07,-2.0e+00), RES(2.3841857910156200307e-8, -1.1071487177940916399e0)}, + {FN (arctanh), ARG(-1.19209289550781250e-07,2.0e+00), RES(-2.3841857910156200307e-8, 1.1071487177940916399e0)}, + {FN (arctanh), ARG(-1.19209289550781250e-07,-2.0e+00), RES(-2.3841857910156200307e-8, -1.1071487177940916399e0)}, + {FN (arctanh), ARG(1.19209289550781250e-07,8.3886080e+06), RES(1.6940658945085766040e-21, 1.5707962075856070685e0)}, + {FN (arctanh), ARG(1.19209289550781250e-07,-8.3886080e+06), RES(1.6940658945085766040e-21, -1.5707962075856070685e0)}, + {FN (arctanh), ARG(-1.19209289550781250e-07,8.3886080e+06), RES(-1.6940658945085766040e-21, 1.5707962075856070685e0)}, + {FN (arctanh), ARG(-1.19209289550781250e-07,-8.3886080e+06), RES(-1.6940658945085766040e-21, -1.5707962075856070685e0)}, + {FN (arctanh), ARG(5.0e-01,0.0e+00), RES(5.4930614433405484570e-1, 0.0)}, + {FN (arctanh), ARG(-5.0e-01,0.0e+00), RES(-5.4930614433405484570e-1, 0.0)}, + {FN (arctanh), ARG(5.0e-01,1.19209289550781250e-07), RES(5.4930614433404221383e-1, 1.5894571940103932425e-7)}, + {FN (arctanh), ARG(5.0e-01,-1.19209289550781250e-07), RES(5.4930614433404221383e-1, -1.5894571940103932425e-7)}, + {FN (arctanh), ARG(-5.0e-01,1.19209289550781250e-07), RES(-5.4930614433404221383e-1, 1.5894571940103932425e-7)}, + {FN (arctanh), ARG(-5.0e-01,-1.19209289550781250e-07), RES(-5.4930614433404221383e-1, -1.5894571940103932425e-7)}, + {FN (arctanh), ARG(5.0e-01,5.0e-01), RES(4.0235947810852509365e-1, 5.5357435889704525151e-1)}, + {FN (arctanh), ARG(5.0e-01,-5.0e-01), RES(4.0235947810852509365e-1, -5.5357435889704525151e-1)}, + {FN (arctanh), ARG(-5.0e-01,5.0e-01), RES(-4.0235947810852509365e-1, 5.5357435889704525151e-1)}, + {FN (arctanh), ARG(-5.0e-01,-5.0e-01), RES(-4.0235947810852509365e-1, -5.5357435889704525151e-1)}, + {FN (arctanh), ARG(5.0e-01,1.0e+00), RES(2.3887786125685909036e-1, 8.4757566067082902713e-1)}, + {FN (arctanh), ARG(5.0e-01,-1.0e+00), RES(2.3887786125685909036e-1, -8.4757566067082902713e-1)}, + {FN (arctanh), ARG(-5.0e-01,1.0e+00), RES(-2.3887786125685909036e-1, 8.4757566067082902713e-1)}, + {FN (arctanh), ARG(-5.0e-01,-1.0e+00), RES(-2.3887786125685909036e-1, -8.4757566067082902713e-1)}, + {FN (arctanh), ARG(5.0e-01,2.0e+00), RES(9.6415620202996167238e-2, 1.1265564408348223487e0)}, + {FN (arctanh), ARG(5.0e-01,-2.0e+00), RES(9.6415620202996167238e-2, -1.1265564408348223487e0)}, + {FN (arctanh), ARG(-5.0e-01,2.0e+00), RES(-9.6415620202996167238e-2, 1.1265564408348223487e0)}, + {FN (arctanh), ARG(-5.0e-01,-2.0e+00), RES(-9.6415620202996167238e-2, -1.1265564408348223487e0)}, + {FN (arctanh), ARG(5.0e-01,8.3886080e+06), RES(7.1054273576008756410e-15, 1.5707962075856070685e0)}, + {FN (arctanh), ARG(5.0e-01,-8.3886080e+06), RES(7.1054273576008756410e-15, -1.5707962075856070685e0)}, + {FN (arctanh), ARG(-5.0e-01,8.3886080e+06), RES(-7.1054273576008756410e-15, 1.5707962075856070685e0)}, + {FN (arctanh), ARG(-5.0e-01,-8.3886080e+06), RES(-7.1054273576008756410e-15, -1.5707962075856070685e0)}, + {FN (arctanh), ARG(1.0e+00,1.19209289550781250e-07), RES(8.3177661667193446012e0, 7.8539819319977069731e-1)}, + {FN (arctanh), ARG(1.0e+00,-1.19209289550781250e-07), RES(8.3177661667193446012e0, -7.8539819319977069731e-1)}, + {FN (arctanh), ARG(-1.0e+00,1.19209289550781250e-07), RES(-8.3177661667193446012e0, 7.8539819319977069731e-1)}, + {FN (arctanh), ARG(-1.0e+00,-1.19209289550781250e-07), RES(-8.3177661667193446012e0, -7.8539819319977069731e-1)}, + {FN (arctanh), ARG(1.0e+00,5.0e-01), RES(7.0830333601405402006e-1, 9.0788749496088038670e-1)}, + {FN (arctanh), ARG(1.0e+00,-5.0e-01), RES(7.0830333601405402006e-1, -9.0788749496088038670e-1)}, + {FN (arctanh), ARG(-1.0e+00,5.0e-01), RES(-7.0830333601405402006e-1, 9.0788749496088038670e-1)}, + {FN (arctanh), ARG(-1.0e+00,-5.0e-01), RES(-7.0830333601405402006e-1, -9.0788749496088038670e-1)}, + {FN (arctanh), ARG(1.0e+00,1.0e+00), RES(4.0235947810852509365e-1, 1.0172219678978513677e0)}, + {FN (arctanh), ARG(1.0e+00,-1.0e+00), RES(4.0235947810852509365e-1, -1.0172219678978513677e0)}, + {FN (arctanh), ARG(-1.0e+00,1.0e+00), RES(-4.0235947810852509365e-1, 1.0172219678978513677e0)}, + {FN (arctanh), ARG(-1.0e+00,-1.0e+00), RES(-4.0235947810852509365e-1, -1.0172219678978513677e0)}, + {FN (arctanh), ARG(1.0e+00,2.0e+00), RES(1.7328679513998632735e-1, 1.1780972450961724644e0)}, + {FN (arctanh), ARG(1.0e+00,-2.0e+00), RES(1.7328679513998632735e-1, -1.1780972450961724644e0)}, + {FN (arctanh), ARG(-1.0e+00,2.0e+00), RES(-1.7328679513998632735e-1, 1.1780972450961724644e0)}, + {FN (arctanh), ARG(-1.0e+00,-2.0e+00), RES(-1.7328679513998632735e-1, -1.1780972450961724644e0)}, + {FN (arctanh), ARG(1.0e+00,8.3886080e+06), RES(1.4210854715201599821e-14, 1.5707962075856070685e0)}, + {FN (arctanh), ARG(1.0e+00,-8.3886080e+06), RES(1.4210854715201599821e-14, -1.5707962075856070685e0)}, + {FN (arctanh), ARG(-1.0e+00,8.3886080e+06), RES(-1.4210854715201599821e-14, 1.5707962075856070685e0)}, + {FN (arctanh), ARG(-1.0e+00,-8.3886080e+06), RES(-1.4210854715201599821e-14, -1.5707962075856070685e0)}, + {FN (arctanh), ARG(2.0e+00,0.0e+00), RES(5.4930614433405484570e-1, -1.5707963267948966192e0)}, + {FN (arctanh), ARG(-2.0e+00,0.0e+00), RES(-5.4930614433405484570e-1, 1.5707963267948966192e0)}, + {FN (arctanh), ARG(2.0e+00,1.19209289550781250e-07), RES(5.4930614433405168773e-1, 1.5707962870584667690e0)}, + {FN (arctanh), ARG(2.0e+00,-1.19209289550781250e-07), RES(5.4930614433405168773e-1, -1.5707962870584667690e0)}, + {FN (arctanh), ARG(-2.0e+00,1.19209289550781250e-07), RES(-5.4930614433405168773e-1, 1.5707962870584667690e0)}, + {FN (arctanh), ARG(-2.0e+00,-1.19209289550781250e-07), RES(-5.4930614433405168773e-1, -1.5707962870584667690e0)}, + {FN (arctanh), ARG(2.0e+00,5.0e-01), RES(5.0037000005253101744e-1, 1.4215468610018069803e0)}, + {FN (arctanh), ARG(2.0e+00,-5.0e-01), RES(5.0037000005253101744e-1, -1.4215468610018069803e0)}, + {FN (arctanh), ARG(-2.0e+00,5.0e-01), RES(-5.0037000005253101744e-1, 1.4215468610018069803e0)}, + {FN (arctanh), ARG(-2.0e+00,-5.0e-01), RES(-5.0037000005253101744e-1, -1.4215468610018069803e0)}, + {FN (arctanh), ARG(2.0e+00,1.0e+00), RES(4.0235947810852509365e-1, 1.3389725222944935611e0)}, + {FN (arctanh), ARG(2.0e+00,-1.0e+00), RES(4.0235947810852509365e-1, -1.3389725222944935611e0)}, + {FN (arctanh), ARG(-2.0e+00,1.0e+00), RES(-4.0235947810852509365e-1, 1.3389725222944935611e0)}, + {FN (arctanh), ARG(-2.0e+00,-1.0e+00), RES(-4.0235947810852509365e-1, -1.3389725222944935611e0)}, + {FN (arctanh), ARG(2.0e+00,2.0e+00), RES(2.3887786125685909036e-1, 1.3112232696716351433e0)}, + {FN (arctanh), ARG(2.0e+00,-2.0e+00), RES(2.3887786125685909036e-1, -1.3112232696716351433e0)}, + {FN (arctanh), ARG(-2.0e+00,2.0e+00), RES(-2.3887786125685909036e-1, 1.3112232696716351433e0)}, + {FN (arctanh), ARG(-2.0e+00,-2.0e+00), RES(-2.3887786125685909036e-1, -1.3112232696716351433e0)}, + {FN (arctanh), ARG(2.0e+00,8.3886080e+06), RES(2.8421709430401987951e-14, 1.5707962075856070685e0)}, + {FN (arctanh), ARG(2.0e+00,-8.3886080e+06), RES(2.8421709430401987951e-14, -1.5707962075856070685e0)}, + {FN (arctanh), ARG(-2.0e+00,8.3886080e+06), RES(-2.8421709430401987951e-14, 1.5707962075856070685e0)}, + {FN (arctanh), ARG(-2.0e+00,-8.3886080e+06), RES(-2.8421709430401987951e-14, -1.5707962075856070685e0)}, + {FN (arctanh), ARG(8.3886080e+06,0.0e+00), RES(1.1920928955078181469e-7, -1.5707963267948966192e0)}, + {FN (arctanh), ARG(-8.3886080e+06,0.0e+00), RES(-1.1920928955078181469e-7, 1.5707963267948966192e0)}, + {FN (arctanh), ARG(8.3886080e+06,1.19209289550781250e-07), RES(1.1920928955078181469e-7, 1.5707963267948966192e0)}, + {FN (arctanh), ARG(8.3886080e+06,-1.19209289550781250e-07), RES(1.1920928955078181469e-7, -1.5707963267948966192e0)}, + {FN (arctanh), ARG(-8.3886080e+06,1.19209289550781250e-07), RES(-1.1920928955078181469e-7, 1.5707963267948966192e0)}, + {FN (arctanh), ARG(-8.3886080e+06,-1.19209289550781250e-07), RES(-1.1920928955078181469e-7, -1.5707963267948966192e0)}, + {FN (arctanh), ARG(8.3886080e+06,5.0e-01), RES(1.1920928955078139117e-7, 1.5707963267948895138e0)}, + {FN (arctanh), ARG(8.3886080e+06,-5.0e-01), RES(1.1920928955078139117e-7, -1.5707963267948895138e0)}, + {FN (arctanh), ARG(-8.3886080e+06,5.0e-01), RES(-1.1920928955078139117e-7, 1.5707963267948895138e0)}, + {FN (arctanh), ARG(-8.3886080e+06,-5.0e-01), RES(-1.1920928955078139117e-7, -1.5707963267948895138e0)}, + {FN (arctanh), ARG(8.3886080e+06,1.0e+00), RES(1.1920928955078012062e-7, 1.5707963267948824084e0)}, + {FN (arctanh), ARG(8.3886080e+06,-1.0e+00), RES(1.1920928955078012062e-7, -1.5707963267948824084e0)}, + {FN (arctanh), ARG(-8.3886080e+06,1.0e+00), RES(-1.1920928955078012062e-7, 1.5707963267948824084e0)}, + {FN (arctanh), ARG(-8.3886080e+06,-1.0e+00), RES(-1.1920928955078012062e-7, -1.5707963267948824084e0)}, + {FN (arctanh), ARG(8.3886080e+06,2.0e+00), RES(1.1920928955077503843e-7, 1.5707963267948681975e0)}, + {FN (arctanh), ARG(8.3886080e+06,-2.0e+00), RES(1.1920928955077503843e-7, -1.5707963267948681975e0)}, + {FN (arctanh), ARG(-8.3886080e+06,2.0e+00), RES(-1.1920928955077503843e-7, 1.5707963267948681975e0)}, + {FN (arctanh), ARG(-8.3886080e+06,-2.0e+00), RES(-1.1920928955077503843e-7, -1.5707963267948681975e0)}, + {FN (arctanh), ARG(8.3886080e+06,8.3886080e+06), RES(5.9604644775390483828e-8, 1.5707962671902518438e0)}, + {FN (arctanh), ARG(8.3886080e+06,-8.3886080e+06), RES(5.9604644775390483828e-8, -1.5707962671902518438e0)}, + {FN (arctanh), ARG(-8.3886080e+06,8.3886080e+06), RES(-5.9604644775390483828e-8, 1.5707962671902518438e0)}, + {FN (arctanh), ARG(-8.3886080e+06,-8.3886080e+06), RES(-5.9604644775390483828e-8, -1.5707962671902518438e0)}, + {FN (csc), ARG(-3.45266983001243932001e-04,0.0e+00), RES(-2.8963094332845964291e3, 0.0)}, + {FN (csc), ARG(3.45266983001243932001e-04,0.0e+00), RES(2.8963094332845964291e3, 0.0)}, + {FN (csc), ARG(-3.45266983001243932001e-04,1.19209289550781250e-07), RES(-2.8963090880176545869e3, -9.9999986092250876926e-1)}, + {FN (csc), ARG(-3.45266983001243932001e-04,-1.19209289550781250e-07), RES(-2.8963090880176545869e3, 9.9999986092250876926e-1)}, + {FN (csc), ARG(3.45266983001243932001e-04,1.19209289550781250e-07), RES(2.8963090880176545869e3, -9.9999986092250876926e-1)}, + {FN (csc), ARG(3.45266983001243932001e-04,-1.19209289550781250e-07), RES(2.8963090880176545869e3, 9.9999986092250876926e-1)}, + {FN (csc), ARG(-3.45266983001243932001e-04,5.0e-01), RES(-1.4337901642789801243e-3, -1.9190337944739187237e0)}, + {FN (csc), ARG(-3.45266983001243932001e-04,-5.0e-01), RES(-1.4337901642789801243e-3, 1.9190337944739187237e0)}, + {FN (csc), ARG(3.45266983001243932001e-04,5.0e-01), RES(1.4337901642789801243e-3, -1.9190337944739187237e0)}, + {FN (csc), ARG(3.45266983001243932001e-04,-5.0e-01), RES(1.4337901642789801243e-3, 1.9190337944739187237e0)}, + {FN (csc), ARG(-3.45266983001243932001e-04,1.0e+00), RES(-3.8576176225198860914e-4, -8.5091800407377002734e-1)}, + {FN (csc), ARG(-3.45266983001243932001e-04,-1.0e+00), RES(-3.8576176225198860914e-4, 8.5091800407377002734e-1)}, + {FN (csc), ARG(3.45266983001243932001e-04,1.0e+00), RES(3.8576176225198860914e-4, -8.5091800407377002734e-1)}, + {FN (csc), ARG(3.45266983001243932001e-04,-1.0e+00), RES(3.8576176225198860914e-4, 8.5091800407377002734e-1)}, + {FN (csc), ARG(-3.45266983001243932001e-04,2.0e+00), RES(-9.8749461907035665386e-5, -2.7572054583883740768e-1)}, + {FN (csc), ARG(-3.45266983001243932001e-04,-2.0e+00), RES(-9.8749461907035665386e-5, 2.7572054583883740768e-1)}, + {FN (csc), ARG(3.45266983001243932001e-04,2.0e+00), RES(9.8749461907035665386e-5, -2.7572054583883740768e-1)}, + {FN (csc), ARG(3.45266983001243932001e-04,-2.0e+00), RES(9.8749461907035665386e-5, 2.7572054583883740768e-1)}, + {FN (csc), ARG(1.57045105981189525579e+00,0.0e+00), RES(1.0000000596046477360e0, 0.0)}, + {FN (csc), ARG(-1.57045105981189525579e+00,0.0e+00), RES(-1.0000000596046477360e0, 0.0)}, + {FN (csc), ARG(1.57045105981189525579e+00,1.19209289550781250e-07), RES(1.0000000596046406306e0, -4.1159035837716456618e-11)}, + {FN (csc), ARG(1.57045105981189525579e+00,-1.19209289550781250e-07), RES(1.0000000596046406306e0, 4.1159035837716456618e-11)}, + {FN (csc), ARG(-1.57045105981189525579e+00,1.19209289550781250e-07), RES(-1.0000000596046406306e0, -4.1159035837716456618e-11)}, + {FN (csc), ARG(-1.57045105981189525579e+00,-1.19209289550781250e-07), RES(-1.0000000596046406306e0, 4.1159035837716456618e-11)}, + {FN (csc), ARG(1.57045105981189525579e+00,5.0e-01), RES(8.8681891425248302487e-1, -1.4149533035943115868e-4)}, + {FN (csc), ARG(1.57045105981189525579e+00,-5.0e-01), RES(8.8681891425248302487e-1, 1.4149533035943115868e-4)}, + {FN (csc), ARG(-1.57045105981189525579e+00,5.0e-01), RES(-8.8681891425248302487e-1, -1.4149533035943115868e-4)}, + {FN (csc), ARG(-1.57045105981189525579e+00,-5.0e-01), RES(-8.8681891425248302487e-1, 1.4149533035943115868e-4)}, + {FN (csc), ARG(1.57045105981189525579e+00,1.0e+00), RES(6.4805426748157480499e-1, -1.7040802567657401279e-4)}, + {FN (csc), ARG(1.57045105981189525579e+00,-1.0e+00), RES(6.4805426748157480499e-1, 1.7040802567657401279e-4)}, + {FN (csc), ARG(-1.57045105981189525579e+00,1.0e+00), RES(-6.4805426748157480499e-1, -1.7040802567657401279e-4)}, + {FN (csc), ARG(-1.57045105981189525579e+00,-1.0e+00), RES(-6.4805426748157480499e-1, 1.7040802567657401279e-4)}, + {FN (csc), ARG(1.57045105981189525579e+00,2.0e+00), RES(2.6580221522968095406e-1, -8.8471445300404633228e-5)}, + {FN (csc), ARG(1.57045105981189525579e+00,-2.0e+00), RES(2.6580221522968095406e-1, 8.8471445300404633228e-5)}, + {FN (csc), ARG(-1.57045105981189525579e+00,2.0e+00), RES(-2.6580221522968095406e-1, -8.8471445300404633228e-5)}, + {FN (csc), ARG(-1.57045105981189525579e+00,-2.0e+00), RES(-2.6580221522968095406e-1, 8.8471445300404633228e-5)}, + {FN (csc), ARG(1.57114159377789786021e+00,0.0e+00), RES(1.0000000596046477360e0, 0.0)}, + {FN (csc), ARG(-1.57114159377789786021e+00,0.0e+00), RES(-1.0000000596046477360e0, 0.0)}, + {FN (csc), ARG(1.57114159377789786021e+00,1.19209289550781250e-07), RES(1.0000000596046406306e0, 4.1159035837701857686e-11)}, + {FN (csc), ARG(1.57114159377789786021e+00,-1.19209289550781250e-07), RES(1.0000000596046406306e0, -4.1159035837701857686e-11)}, + {FN (csc), ARG(-1.57114159377789786021e+00,1.19209289550781250e-07), RES(-1.0000000596046406306e0, 4.1159035837701857686e-11)}, + {FN (csc), ARG(-1.57114159377789786021e+00,-1.19209289550781250e-07), RES(-1.0000000596046406306e0, -4.1159035837701857686e-11)}, + {FN (csc), ARG(1.57114159377789786021e+00,5.0e-01), RES(8.8681891425248302485e-1, 1.4149533035938097090e-4)}, + {FN (csc), ARG(1.57114159377789786021e+00,-5.0e-01), RES(8.8681891425248302485e-1, -1.4149533035938097090e-4)}, + {FN (csc), ARG(-1.57114159377789786021e+00,5.0e-01), RES(-8.8681891425248302485e-1, 1.4149533035938097090e-4)}, + {FN (csc), ARG(-1.57114159377789786021e+00,-5.0e-01), RES(-8.8681891425248302485e-1, -1.4149533035938097090e-4)}, + {FN (csc), ARG(1.57114159377789786021e+00,1.0e+00), RES(6.4805426748157480499e-1, 1.7040802567651356981e-4)}, + {FN (csc), ARG(1.57114159377789786021e+00,-1.0e+00), RES(6.4805426748157480499e-1, -1.7040802567651356981e-4)}, + {FN (csc), ARG(-1.57114159377789786021e+00,1.0e+00), RES(-6.4805426748157480499e-1, 1.7040802567651356981e-4)}, + {FN (csc), ARG(-1.57114159377789786021e+00,-1.0e+00), RES(-6.4805426748157480499e-1, -1.7040802567651356981e-4)}, + {FN (csc), ARG(1.57114159377789786021e+00,2.0e+00), RES(2.6580221522968095407e-1, 8.8471445300373252796e-5)}, + {FN (csc), ARG(1.57114159377789786021e+00,-2.0e+00), RES(2.6580221522968095407e-1, -8.8471445300373252796e-5)}, + {FN (csc), ARG(-1.57114159377789786021e+00,2.0e+00), RES(-2.6580221522968095407e-1, 8.8471445300373252796e-5)}, + {FN (csc), ARG(-1.57114159377789786021e+00,-2.0e+00), RES(-2.6580221522968095407e-1, -8.8471445300373252796e-5)}, + {FN (csc), ARG(3.14124738660679181379e+00,0.0e+00), RES(2.8963094332830802676e3, 0.0)}, + {FN (csc), ARG(-3.14124738660679181379e+00,0.0e+00), RES(-2.8963094332830802676e3, 0.0)}, + {FN (csc), ARG(3.14124738660679181379e+00,1.19209289550781250e-07), RES(2.8963090880161384259e3, 9.9999986092146180843e-1)}, + {FN (csc), ARG(3.14124738660679181379e+00,-1.19209289550781250e-07), RES(2.8963090880161384259e3, -9.9999986092146180843e-1)}, + {FN (csc), ARG(-3.14124738660679181379e+00,1.19209289550781250e-07), RES(-2.8963090880161384259e3, 9.9999986092146180843e-1)}, + {FN (csc), ARG(-3.14124738660679181379e+00,-1.19209289550781250e-07), RES(-2.8963090880161384259e3, -9.9999986092146180843e-1)}, + {FN (csc), ARG(3.14124738660679181379e+00,5.0e-01), RES(1.4337901642797306848e-3, 1.9190337944739187227e0)}, + {FN (csc), ARG(3.14124738660679181379e+00,-5.0e-01), RES(1.4337901642797306848e-3, -1.9190337944739187227e0)}, + {FN (csc), ARG(-3.14124738660679181379e+00,5.0e-01), RES(-1.4337901642797306848e-3, 1.9190337944739187227e0)}, + {FN (csc), ARG(-3.14124738660679181379e+00,-5.0e-01), RES(-1.4337901642797306848e-3, -1.9190337944739187227e0)}, + {FN (csc), ARG(3.14124738660679181379e+00,1.0e+00), RES(3.8576176225219054787e-4, 8.5091800407377002721e-1)}, + {FN (csc), ARG(3.14124738660679181379e+00,-1.0e+00), RES(3.8576176225219054787e-4, -8.5091800407377002721e-1)}, + {FN (csc), ARG(-3.14124738660679181379e+00,1.0e+00), RES(-3.8576176225219054787e-4, 8.5091800407377002721e-1)}, + {FN (csc), ARG(-3.14124738660679181379e+00,-1.0e+00), RES(-3.8576176225219054787e-4, -8.5091800407377002721e-1)}, + {FN (csc), ARG(3.14124738660679181379e+00,2.0e+00), RES(9.8749461907087358805e-5, 2.7572054583883740766e-1)}, + {FN (csc), ARG(3.14124738660679181379e+00,-2.0e+00), RES(9.8749461907087358805e-5, -2.7572054583883740766e-1)}, + {FN (csc), ARG(-3.14124738660679181379e+00,2.0e+00), RES(-9.8749461907087358805e-5, 2.7572054583883740766e-1)}, + {FN (csc), ARG(-3.14124738660679181379e+00,-2.0e+00), RES(-9.8749461907087358805e-5, -2.7572054583883740766e-1)}, + {FN (csc), ARG(3.14193792057279441821e+00,0.0e+00), RES(-2.8963094332851348839e3, 0.0)}, + {FN (csc), ARG(-3.14193792057279441821e+00,0.0e+00), RES(2.8963094332851348839e3, 0.0)}, + {FN (csc), ARG(3.14193792057279441821e+00,1.19209289550781250e-07), RES(-2.8963090880181930415e3, 9.9999986092288059049e-1)}, + {FN (csc), ARG(3.14193792057279441821e+00,-1.19209289550781250e-07), RES(-2.8963090880181930415e3, -9.9999986092288059049e-1)}, + {FN (csc), ARG(-3.14193792057279441821e+00,1.19209289550781250e-07), RES(2.8963090880181930415e3, 9.9999986092288059049e-1)}, + {FN (csc), ARG(-3.14193792057279441821e+00,-1.19209289550781250e-07), RES(2.8963090880181930415e3, -9.9999986092288059049e-1)}, + {FN (csc), ARG(3.14193792057279441821e+00,5.0e-01), RES(-1.4337901642787135676e-3, 1.9190337944739187241e0)}, + {FN (csc), ARG(3.14193792057279441821e+00,-5.0e-01), RES(-1.4337901642787135676e-3, -1.9190337944739187241e0)}, + {FN (csc), ARG(-3.14193792057279441821e+00,5.0e-01), RES(1.4337901642787135676e-3, 1.9190337944739187241e0)}, + {FN (csc), ARG(-3.14193792057279441821e+00,-5.0e-01), RES(1.4337901642787135676e-3, -1.9190337944739187241e0)}, + {FN (csc), ARG(3.14193792057279441821e+00,1.0e+00), RES(-3.8576176225191689193e-4, 8.5091800407377002738e-1)}, + {FN (csc), ARG(3.14193792057279441821e+00,-1.0e+00), RES(-3.8576176225191689193e-4, -8.5091800407377002738e-1)}, + {FN (csc), ARG(-3.14193792057279441821e+00,1.0e+00), RES(3.8576176225191689193e-4, 8.5091800407377002738e-1)}, + {FN (csc), ARG(-3.14193792057279441821e+00,-1.0e+00), RES(3.8576176225191689193e-4, -8.5091800407377002738e-1)}, + {FN (csc), ARG(3.14193792057279441821e+00,2.0e+00), RES(-9.8749461907017306810e-5, 2.7572054583883740769e-1)}, + {FN (csc), ARG(3.14193792057279441821e+00,-2.0e+00), RES(-9.8749461907017306810e-5, -2.7572054583883740769e-1)}, + {FN (csc), ARG(-3.14193792057279441821e+00,2.0e+00), RES(9.8749461907017306810e-5, 2.7572054583883740769e-1)}, + {FN (csc), ARG(-3.14193792057279441821e+00,-2.0e+00), RES(9.8749461907017306810e-5, -2.7572054583883740769e-1)}, + {FN (csc), ARG(4.71204371340168837179e+00,0.0e+00), RES(-1.0000000596046477361e0, 0.0)}, + {FN (csc), ARG(-4.71204371340168837179e+00,0.0e+00), RES(1.0000000596046477361e0, 0.0)}, + {FN (csc), ARG(4.71204371340168837179e+00,1.19209289550781250e-07), RES(-1.0000000596046406306e0, 4.1159035837731055550e-11)}, + {FN (csc), ARG(4.71204371340168837179e+00,-1.19209289550781250e-07), RES(-1.0000000596046406306e0, -4.1159035837731055550e-11)}, + {FN (csc), ARG(-4.71204371340168837179e+00,1.19209289550781250e-07), RES(1.0000000596046406306e0, 4.1159035837731055550e-11)}, + {FN (csc), ARG(-4.71204371340168837179e+00,-1.19209289550781250e-07), RES(1.0000000596046406306e0, -4.1159035837731055550e-11)}, + {FN (csc), ARG(4.71204371340168837179e+00,5.0e-01), RES(-8.8681891425248302489e-1, 1.4149533035948134646e-4)}, + {FN (csc), ARG(4.71204371340168837179e+00,-5.0e-01), RES(-8.8681891425248302489e-1, -1.4149533035948134646e-4)}, + {FN (csc), ARG(-4.71204371340168837179e+00,5.0e-01), RES(8.8681891425248302489e-1, 1.4149533035948134646e-4)}, + {FN (csc), ARG(-4.71204371340168837179e+00,-5.0e-01), RES(8.8681891425248302489e-1, -1.4149533035948134646e-4)}, + {FN (csc), ARG(4.71204371340168837179e+00,1.0e+00), RES(-6.4805426748157480498e-1, 1.7040802567663445577e-4)}, + {FN (csc), ARG(4.71204371340168837179e+00,-1.0e+00), RES(-6.4805426748157480498e-1, -1.7040802567663445577e-4)}, + {FN (csc), ARG(-4.71204371340168837179e+00,1.0e+00), RES(6.4805426748157480498e-1, 1.7040802567663445577e-4)}, + {FN (csc), ARG(-4.71204371340168837179e+00,-1.0e+00), RES(6.4805426748157480498e-1, -1.7040802567663445577e-4)}, + {FN (csc), ARG(4.71204371340168837179e+00,2.0e+00), RES(-2.6580221522968095405e-1, 8.8471445300436013659e-5)}, + {FN (csc), ARG(4.71204371340168837179e+00,-2.0e+00), RES(-2.6580221522968095405e-1, -8.8471445300436013659e-5)}, + {FN (csc), ARG(-4.71204371340168837179e+00,2.0e+00), RES(2.6580221522968095405e-1, 8.8471445300436013659e-5)}, + {FN (csc), ARG(-4.71204371340168837179e+00,-2.0e+00), RES(2.6580221522968095405e-1, -8.8471445300436013659e-5)}, + {FN (csc), ARG(4.71273424736769097620e+00,0.0e+00), RES(-1.0000000596046477359e0, 0.0)}, + {FN (csc), ARG(-4.71273424736769097620e+00,0.0e+00), RES(1.0000000596046477359e0, 0.0)}, + {FN (csc), ARG(4.71273424736769097620e+00,1.19209289550781250e-07), RES(-1.0000000596046406305e0, -4.1159035837687258754e-11)}, + {FN (csc), ARG(4.71273424736769097620e+00,-1.19209289550781250e-07), RES(-1.0000000596046406305e0, 4.1159035837687258754e-11)}, + {FN (csc), ARG(-4.71273424736769097620e+00,1.19209289550781250e-07), RES(1.0000000596046406305e0, -4.1159035837687258754e-11)}, + {FN (csc), ARG(-4.71273424736769097620e+00,-1.19209289550781250e-07), RES(1.0000000596046406305e0, 4.1159035837687258754e-11)}, + {FN (csc), ARG(4.71273424736769097620e+00,5.0e-01), RES(-8.8681891425248302483e-1, -1.4149533035933078312e-4)}, + {FN (csc), ARG(4.71273424736769097620e+00,-5.0e-01), RES(-8.8681891425248302483e-1, 1.4149533035933078312e-4)}, + {FN (csc), ARG(-4.71273424736769097620e+00,5.0e-01), RES(8.8681891425248302483e-1, -1.4149533035933078312e-4)}, + {FN (csc), ARG(-4.71273424736769097620e+00,-5.0e-01), RES(8.8681891425248302483e-1, 1.4149533035933078312e-4)}, + {FN (csc), ARG(4.71273424736769097620e+00,1.0e+00), RES(-6.480542674815748050e-1, -1.7040802567645312683e-4)}, + {FN (csc), ARG(4.71273424736769097620e+00,-1.0e+00), RES(-6.480542674815748050e-1, 1.7040802567645312683e-4)}, + {FN (csc), ARG(-4.71273424736769097620e+00,1.0e+00), RES(6.480542674815748050e-1, -1.7040802567645312683e-4)}, + {FN (csc), ARG(-4.71273424736769097620e+00,-1.0e+00), RES(6.480542674815748050e-1, 1.7040802567645312683e-4)}, + {FN (csc), ARG(4.71273424736769097620e+00,2.0e+00), RES(-2.6580221522968095408e-1, -8.8471445300341872364e-5)}, + {FN (csc), ARG(4.71273424736769097620e+00,-2.0e+00), RES(-2.6580221522968095408e-1, 8.8471445300341872364e-5)}, + {FN (csc), ARG(-4.71273424736769097620e+00,2.0e+00), RES(2.6580221522968095408e-1, -8.8471445300341872364e-5)}, + {FN (csc), ARG(-4.71273424736769097620e+00,-2.0e+00), RES(2.6580221522968095408e-1, 8.8471445300341872364e-5)}, + {FN (csc), ARG(6.28284004019658492979e+00,0.0e+00), RES(-2.8963094332820529594e3, 0.0)}, + {FN (csc), ARG(-6.28284004019658492979e+00,0.0e+00), RES(2.8963094332820529594e3, 0.0)}, + {FN (csc), ARG(6.28284004019658492979e+00,1.19209289550781250e-07), RES(-2.8963090880151111181e3, -9.9999986092075241740e-1)}, + {FN (csc), ARG(6.28284004019658492979e+00,-1.19209289550781250e-07), RES(-2.8963090880151111181e3, 9.9999986092075241740e-1)}, + {FN (csc), ARG(-6.28284004019658492979e+00,1.19209289550781250e-07), RES(2.8963090880151111181e3, -9.9999986092075241740e-1)}, + {FN (csc), ARG(-6.28284004019658492979e+00,-1.19209289550781250e-07), RES(2.8963090880151111181e3, 9.9999986092075241740e-1)}, + {FN (csc), ARG(6.28284004019658492979e+00,5.0e-01), RES(-1.4337901642802392434e-3, -1.9190337944739187220e0)}, + {FN (csc), ARG(6.28284004019658492979e+00,-5.0e-01), RES(-1.4337901642802392434e-3, 1.9190337944739187220e0)}, + {FN (csc), ARG(-6.28284004019658492979e+00,5.0e-01), RES(1.4337901642802392434e-3, -1.9190337944739187220e0)}, + {FN (csc), ARG(-6.28284004019658492979e+00,-5.0e-01), RES(1.4337901642802392434e-3, 1.9190337944739187220e0)}, + {FN (csc), ARG(6.28284004019658492979e+00,1.0e+00), RES(-3.8576176225232737584e-4, -8.5091800407377002712e-1)}, + {FN (csc), ARG(6.28284004019658492979e+00,-1.0e+00), RES(-3.8576176225232737584e-4, 8.5091800407377002712e-1)}, + {FN (csc), ARG(-6.28284004019658492979e+00,1.0e+00), RES(3.8576176225232737584e-4, -8.5091800407377002712e-1)}, + {FN (csc), ARG(-6.28284004019658492979e+00,-1.0e+00), RES(3.8576176225232737584e-4, 8.5091800407377002712e-1)}, + {FN (csc), ARG(6.28284004019658492979e+00,2.0e+00), RES(-9.8749461907122384803e-5, -2.7572054583883740765e-1)}, + {FN (csc), ARG(6.28284004019658492979e+00,-2.0e+00), RES(-9.8749461907122384803e-5, 2.7572054583883740765e-1)}, + {FN (csc), ARG(-6.28284004019658492979e+00,2.0e+00), RES(9.8749461907122384803e-5, -2.7572054583883740765e-1)}, + {FN (csc), ARG(-6.28284004019658492979e+00,-2.0e+00), RES(9.8749461907122384803e-5, 2.7572054583883740765e-1)}, + {FN (csc), ARG(6.28353057416258753420e+00,0.0e+00), RES(2.8963094332861621921e3, 0.0)}, + {FN (csc), ARG(-6.28353057416258753420e+00,0.0e+00), RES(-2.8963094332861621921e3, 0.0)}, + {FN (csc), ARG(6.28353057416258753420e+00,1.19209289550781250e-07), RES(2.8963090880192203493e3, -9.9999986092358998153e-1)}, + {FN (csc), ARG(6.28353057416258753420e+00,-1.19209289550781250e-07), RES(2.8963090880192203493e3, 9.9999986092358998153e-1)}, + {FN (csc), ARG(-6.28353057416258753420e+00,1.19209289550781250e-07), RES(-2.8963090880192203493e3, -9.9999986092358998153e-1)}, + {FN (csc), ARG(-6.28353057416258753420e+00,-1.19209289550781250e-07), RES(-2.8963090880192203493e3, 9.9999986092358998153e-1)}, + {FN (csc), ARG(6.28353057416258753420e+00,5.0e-01), RES(1.4337901642782050091e-3, -1.9190337944739187248e0)}, + {FN (csc), ARG(6.28353057416258753420e+00,-5.0e-01), RES(1.4337901642782050091e-3, 1.9190337944739187248e0)}, + {FN (csc), ARG(-6.28353057416258753420e+00,5.0e-01), RES(-1.4337901642782050091e-3, -1.9190337944739187248e0)}, + {FN (csc), ARG(-6.28353057416258753420e+00,-5.0e-01), RES(-1.4337901642782050091e-3, 1.9190337944739187248e0)}, + {FN (csc), ARG(6.28353057416258753420e+00,1.0e+00), RES(3.8576176225178006396e-4, -8.5091800407377002747e-1)}, + {FN (csc), ARG(6.28353057416258753420e+00,-1.0e+00), RES(3.8576176225178006396e-4, 8.5091800407377002747e-1)}, + {FN (csc), ARG(-6.28353057416258753420e+00,1.0e+00), RES(-3.8576176225178006396e-4, -8.5091800407377002747e-1)}, + {FN (csc), ARG(-6.28353057416258753420e+00,-1.0e+00), RES(-3.8576176225178006396e-4, 8.5091800407377002747e-1)}, + {FN (csc), ARG(6.28353057416258753420e+00,2.0e+00), RES(9.8749461906982280812e-5, -2.7572054583883740770e-1)}, + {FN (csc), ARG(6.28353057416258753420e+00,-2.0e+00), RES(9.8749461906982280812e-5, 2.7572054583883740770e-1)}, + {FN (csc), ARG(-6.28353057416258753420e+00,2.0e+00), RES(-9.8749461906982280812e-5, -2.7572054583883740770e-1)}, + {FN (csc), ARG(-6.28353057416258753420e+00,-2.0e+00), RES(-9.8749461906982280812e-5, 2.7572054583883740770e-1)}, + {FN (csc), ARG(9.42443269378637893396e+00,0.0e+00), RES(2.8963094332884762317e3, 0.0)}, + {FN (csc), ARG(-9.42443269378637893396e+00,0.0e+00), RES(-2.8963094332884762317e3, 0.0)}, + {FN (csc), ARG(9.42443269378637893396e+00,1.19209289550781250e-07), RES(2.8963090880215343881e3, 9.9999986092518790411e-1)}, + {FN (csc), ARG(9.42443269378637893396e+00,-1.19209289550781250e-07), RES(2.8963090880215343881e3, -9.9999986092518790411e-1)}, + {FN (csc), ARG(-9.42443269378637893396e+00,1.19209289550781250e-07), RES(-2.8963090880215343881e3, 9.9999986092518790411e-1)}, + {FN (csc), ARG(-9.42443269378637893396e+00,-1.19209289550781250e-07), RES(-2.8963090880215343881e3, -9.9999986092518790411e-1)}, + {FN (csc), ARG(9.42443269378637893396e+00,5.0e-01), RES(1.4337901642770594670e-3, 1.9190337944739187263e0)}, + {FN (csc), ARG(9.42443269378637893396e+00,-5.0e-01), RES(1.4337901642770594670e-3, -1.9190337944739187263e0)}, + {FN (csc), ARG(-9.42443269378637893396e+00,5.0e-01), RES(-1.4337901642770594670e-3, 1.9190337944739187263e0)}, + {FN (csc), ARG(-9.42443269378637893396e+00,-5.0e-01), RES(-1.4337901642770594670e-3, -1.9190337944739187263e0)}, + {FN (csc), ARG(9.42443269378637893396e+00,1.0e+00), RES(3.8576176225147185523e-4, 8.5091800407377002767e-1)}, + {FN (csc), ARG(9.42443269378637893396e+00,-1.0e+00), RES(3.8576176225147185523e-4, -8.5091800407377002767e-1)}, + {FN (csc), ARG(-9.42443269378637893396e+00,1.0e+00), RES(-3.8576176225147185523e-4, 8.5091800407377002767e-1)}, + {FN (csc), ARG(-9.42443269378637893396e+00,-1.0e+00), RES(-3.8576176225147185523e-4, -8.5091800407377002767e-1)}, + {FN (csc), ARG(9.42443269378637893396e+00,2.0e+00), RES(9.874946190690338380e-5, 2.7572054583883740773e-1)}, + {FN (csc), ARG(9.42443269378637893396e+00,-2.0e+00), RES(9.874946190690338380e-5, -2.7572054583883740773e-1)}, + {FN (csc), ARG(-9.42443269378637893396e+00,2.0e+00), RES(-9.874946190690338380e-5, 2.7572054583883740773e-1)}, + {FN (csc), ARG(-9.42443269378637893396e+00,-2.0e+00), RES(-9.874946190690338380e-5, -2.7572054583883740773e-1)}, + {FN (csc), ARG(9.42512322775237976202e+00,0.0e+00), RES(-2.8963094332946400807e3, 0.0)}, + {FN (csc), ARG(-9.42512322775237976202e+00,0.0e+00), RES(2.8963094332946400807e3, 0.0)}, + {FN (csc), ARG(9.42512322775237976202e+00,1.19209289550781250e-07), RES(-2.8963090880276982349e3, 9.9999986092944425030e-1)}, + {FN (csc), ARG(9.42512322775237976202e+00,-1.19209289550781250e-07), RES(-2.8963090880276982349e3, -9.9999986092944425030e-1)}, + {FN (csc), ARG(-9.42512322775237976202e+00,1.19209289550781250e-07), RES(2.8963090880276982349e3, 9.9999986092944425030e-1)}, + {FN (csc), ARG(-9.42512322775237976202e+00,-1.19209289550781250e-07), RES(2.8963090880276982349e3, -9.9999986092944425030e-1)}, + {FN (csc), ARG(9.42512322775237976202e+00,5.0e-01), RES(-1.4337901642740081154e-3, 1.9190337944739187304e0)}, + {FN (csc), ARG(9.42512322775237976202e+00,-5.0e-01), RES(-1.4337901642740081154e-3, -1.9190337944739187304e0)}, + {FN (csc), ARG(-9.42512322775237976202e+00,5.0e-01), RES(1.4337901642740081154e-3, 1.9190337944739187304e0)}, + {FN (csc), ARG(-9.42512322775237976202e+00,-5.0e-01), RES(1.4337901642740081154e-3, -1.9190337944739187304e0)}, + {FN (csc), ARG(9.42512322775237976202e+00,1.0e+00), RES(-3.8576176225065088741e-4, 8.5091800407377002820e-1)}, + {FN (csc), ARG(9.42512322775237976202e+00,-1.0e+00), RES(-3.8576176225065088741e-4, -8.5091800407377002820e-1)}, + {FN (csc), ARG(-9.42512322775237976202e+00,1.0e+00), RES(3.8576176225065088741e-4, 8.5091800407377002820e-1)}, + {FN (csc), ARG(-9.42512322775237976202e+00,-1.0e+00), RES(3.8576176225065088741e-4, -8.5091800407377002820e-1)}, + {FN (csc), ARG(9.42512322775237976202e+00,2.0e+00), RES(-9.8749461906693227814e-5, 2.7572054583883740781e-1)}, + {FN (csc), ARG(9.42512322775237976202e+00,-2.0e+00), RES(-9.8749461906693227814e-5, -2.7572054583883740781e-1)}, + {FN (csc), ARG(-9.42512322775237976202e+00,2.0e+00), RES(9.8749461906693227814e-5, 2.7572054583883740781e-1)}, + {FN (csc), ARG(-9.42512322775237976202e+00,-2.0e+00), RES(9.8749461906693227814e-5, -2.7572054583883740781e-1)}, + {FN (sec), ARG(-3.45266983001243932001e-04,0.0e+00), RES(1.0000000596046477360e0, 0.0)}, + {FN (sec), ARG(3.45266983001243932001e-04,0.0e+00), RES(1.0000000596046477360e0, 0.0)}, + {FN (sec), ARG(-3.45266983001243932001e-04,1.19209289550781250e-07), RES(1.0000000596046406306e0, -4.1159035837702210125e-11)}, + {FN (sec), ARG(-3.45266983001243932001e-04,-1.19209289550781250e-07), RES(1.0000000596046406306e0, 4.1159035837702210125e-11)}, + {FN (sec), ARG(3.45266983001243932001e-04,1.19209289550781250e-07), RES(1.0000000596046406306e0, 4.1159035837702210125e-11)}, + {FN (sec), ARG(3.45266983001243932001e-04,-1.19209289550781250e-07), RES(1.0000000596046406306e0, -4.1159035837702210125e-11)}, + {FN (sec), ARG(-3.45266983001243932001e-04,5.0e-01), RES(8.8681891425248302485e-1, -1.4149533035938218250e-4)}, + {FN (sec), ARG(-3.45266983001243932001e-04,-5.0e-01), RES(8.8681891425248302485e-1, 1.4149533035938218250e-4)}, + {FN (sec), ARG(3.45266983001243932001e-04,5.0e-01), RES(8.8681891425248302485e-1, 1.4149533035938218250e-4)}, + {FN (sec), ARG(3.45266983001243932001e-04,-5.0e-01), RES(8.8681891425248302485e-1, -1.4149533035938218250e-4)}, + {FN (sec), ARG(-3.45266983001243932001e-04,1.0e+00), RES(6.4805426748157480499e-1, -1.7040802567651502899e-4)}, + {FN (sec), ARG(-3.45266983001243932001e-04,-1.0e+00), RES(6.4805426748157480499e-1, 1.7040802567651502899e-4)}, + {FN (sec), ARG(3.45266983001243932001e-04,1.0e+00), RES(6.4805426748157480499e-1, 1.7040802567651502899e-4)}, + {FN (sec), ARG(3.45266983001243932001e-04,-1.0e+00), RES(6.4805426748157480499e-1, -1.7040802567651502899e-4)}, + {FN (sec), ARG(-3.45266983001243932001e-04,2.0e+00), RES(2.6580221522968095407e-1, -8.8471445300374010365e-5)}, + {FN (sec), ARG(-3.45266983001243932001e-04,-2.0e+00), RES(2.6580221522968095407e-1, 8.8471445300374010365e-5)}, + {FN (sec), ARG(3.45266983001243932001e-04,2.0e+00), RES(2.6580221522968095407e-1, 8.8471445300374010365e-5)}, + {FN (sec), ARG(3.45266983001243932001e-04,-2.0e+00), RES(2.6580221522968095407e-1, -8.8471445300374010365e-5)}, + {FN (sec), ARG(1.57045105981189525579e+00,0.0e+00), RES(2.8963094332835939217e3, 0.0)}, + {FN (sec), ARG(-1.57045105981189525579e+00,0.0e+00), RES(2.8963094332835939217e3, 0.0)}, + {FN (sec), ARG(1.57045105981189525579e+00,1.19209289550781250e-07), RES(2.8963090880166520798e3, 9.9999986092181650394e-1)}, + {FN (sec), ARG(1.57045105981189525579e+00,-1.19209289550781250e-07), RES(2.8963090880166520798e3, -9.9999986092181650394e-1)}, + {FN (sec), ARG(-1.57045105981189525579e+00,1.19209289550781250e-07), RES(2.8963090880166520798e3, -9.9999986092181650394e-1)}, + {FN (sec), ARG(-1.57045105981189525579e+00,-1.19209289550781250e-07), RES(2.8963090880166520798e3, 9.9999986092181650394e-1)}, + {FN (sec), ARG(1.57045105981189525579e+00,5.0e-01), RES(1.4337901642794764055e-3, 1.9190337944739187231e0)}, + {FN (sec), ARG(1.57045105981189525579e+00,-5.0e-01), RES(1.4337901642794764055e-3, -1.9190337944739187231e0)}, + {FN (sec), ARG(-1.57045105981189525579e+00,5.0e-01), RES(1.4337901642794764055e-3, -1.9190337944739187231e0)}, + {FN (sec), ARG(-1.57045105981189525579e+00,-5.0e-01), RES(1.4337901642794764055e-3, 1.9190337944739187231e0)}, + {FN (sec), ARG(1.57045105981189525579e+00,1.0e+00), RES(3.8576176225212213388e-4, 8.5091800407377002725e-1)}, + {FN (sec), ARG(1.57045105981189525579e+00,-1.0e+00), RES(3.8576176225212213388e-4, -8.5091800407377002725e-1)}, + {FN (sec), ARG(-1.57045105981189525579e+00,1.0e+00), RES(3.8576176225212213388e-4, -8.5091800407377002725e-1)}, + {FN (sec), ARG(-1.57045105981189525579e+00,-1.0e+00), RES(3.8576176225212213388e-4, 8.5091800407377002725e-1)}, + {FN (sec), ARG(1.57045105981189525579e+00,2.0e+00), RES(9.8749461907069845806e-5, 2.7572054583883740767e-1)}, + {FN (sec), ARG(1.57045105981189525579e+00,-2.0e+00), RES(9.8749461907069845806e-5, -2.7572054583883740767e-1)}, + {FN (sec), ARG(-1.57045105981189525579e+00,2.0e+00), RES(9.8749461907069845806e-5, -2.7572054583883740767e-1)}, + {FN (sec), ARG(-1.57045105981189525579e+00,-2.0e+00), RES(9.8749461907069845806e-5, 2.7572054583883740767e-1)}, + {FN (sec), ARG(1.57114159377789786021e+00,0.0e+00), RES(-2.8963094332846212298e3, 0.0)}, + {FN (sec), ARG(-1.57114159377789786021e+00,0.0e+00), RES(-2.8963094332846212298e3, 0.0)}, + {FN (sec), ARG(1.57114159377789786021e+00,1.19209289550781250e-07), RES(-2.8963090880176793876e3, 9.9999986092252589498e-1)}, + {FN (sec), ARG(1.57114159377789786021e+00,-1.19209289550781250e-07), RES(-2.8963090880176793876e3, -9.9999986092252589498e-1)}, + {FN (sec), ARG(-1.57114159377789786021e+00,1.19209289550781250e-07), RES(-2.8963090880176793876e3, -9.9999986092252589498e-1)}, + {FN (sec), ARG(-1.57114159377789786021e+00,-1.19209289550781250e-07), RES(-2.8963090880176793876e3, 9.9999986092252589498e-1)}, + {FN (sec), ARG(1.57114159377789786021e+00,5.0e-01), RES(-1.4337901642789678469e-3, 1.9190337944739187237e0)}, + {FN (sec), ARG(1.57114159377789786021e+00,-5.0e-01), RES(-1.4337901642789678469e-3, -1.9190337944739187237e0)}, + {FN (sec), ARG(-1.57114159377789786021e+00,5.0e-01), RES(-1.4337901642789678469e-3, -1.9190337944739187237e0)}, + {FN (sec), ARG(-1.57114159377789786021e+00,-5.0e-01), RES(-1.4337901642789678469e-3, 1.9190337944739187237e0)}, + {FN (sec), ARG(1.57114159377789786021e+00,1.0e+00), RES(-3.8576176225198530591e-4, 8.5091800407377002734e-1)}, + {FN (sec), ARG(1.57114159377789786021e+00,-1.0e+00), RES(-3.8576176225198530591e-4, -8.5091800407377002734e-1)}, + {FN (sec), ARG(-1.57114159377789786021e+00,1.0e+00), RES(-3.8576176225198530591e-4, -8.5091800407377002734e-1)}, + {FN (sec), ARG(-1.57114159377789786021e+00,-1.0e+00), RES(-3.8576176225198530591e-4, 8.5091800407377002734e-1)}, + {FN (sec), ARG(1.57114159377789786021e+00,2.0e+00), RES(-9.8749461907034819809e-5, 2.7572054583883740768e-1)}, + {FN (sec), ARG(1.57114159377789786021e+00,-2.0e+00), RES(-9.8749461907034819809e-5, -2.7572054583883740768e-1)}, + {FN (sec), ARG(-1.57114159377789786021e+00,2.0e+00), RES(-9.8749461907034819809e-5, -2.7572054583883740768e-1)}, + {FN (sec), ARG(-1.57114159377789786021e+00,-2.0e+00), RES(-9.8749461907034819809e-5, 2.7572054583883740768e-1)}, + {FN (sec), ARG(3.14124738660679181379e+00,0.0e+00), RES(-1.0000000596046477360e0, 0.0)}, + {FN (sec), ARG(-3.14124738660679181379e+00,0.0e+00), RES(-1.0000000596046477360e0, 0.0)}, + {FN (sec), ARG(3.14124738660679181379e+00,1.19209289550781250e-07), RES(-1.0000000596046406306e0, 4.1159035837723756084e-11)}, + {FN (sec), ARG(3.14124738660679181379e+00,-1.19209289550781250e-07), RES(-1.0000000596046406306e0, -4.1159035837723756084e-11)}, + {FN (sec), ARG(-3.14124738660679181379e+00,1.19209289550781250e-07), RES(-1.0000000596046406306e0, -4.1159035837723756084e-11)}, + {FN (sec), ARG(-3.14124738660679181379e+00,-1.19209289550781250e-07), RES(-1.0000000596046406306e0, 4.1159035837723756084e-11)}, + {FN (sec), ARG(3.14124738660679181379e+00,5.0e-01), RES(-8.8681891425248302488e-1, 1.4149533035945625257e-4)}, + {FN (sec), ARG(3.14124738660679181379e+00,-5.0e-01), RES(-8.8681891425248302488e-1, -1.4149533035945625257e-4)}, + {FN (sec), ARG(-3.14124738660679181379e+00,5.0e-01), RES(-8.8681891425248302488e-1, -1.4149533035945625257e-4)}, + {FN (sec), ARG(-3.14124738660679181379e+00,-5.0e-01), RES(-8.8681891425248302488e-1, 1.4149533035945625257e-4)}, + {FN (sec), ARG(3.14124738660679181379e+00,1.0e+00), RES(-6.4805426748157480499e-1, 1.7040802567660423428e-4)}, + {FN (sec), ARG(3.14124738660679181379e+00,-1.0e+00), RES(-6.4805426748157480499e-1, -1.7040802567660423428e-4)}, + {FN (sec), ARG(-3.14124738660679181379e+00,1.0e+00), RES(-6.4805426748157480499e-1, -1.7040802567660423428e-4)}, + {FN (sec), ARG(-3.14124738660679181379e+00,-1.0e+00), RES(-6.4805426748157480499e-1, 1.7040802567660423428e-4)}, + {FN (sec), ARG(3.14124738660679181379e+00,2.0e+00), RES(-2.6580221522968095405e-1, 8.8471445300420323443e-5)}, + {FN (sec), ARG(3.14124738660679181379e+00,-2.0e+00), RES(-2.6580221522968095405e-1, -8.8471445300420323443e-5)}, + {FN (sec), ARG(-3.14124738660679181379e+00,2.0e+00), RES(-2.6580221522968095405e-1, -8.8471445300420323443e-5)}, + {FN (sec), ARG(-3.14124738660679181379e+00,-2.0e+00), RES(-2.6580221522968095405e-1, 8.8471445300420323443e-5)}, + {FN (sec), ARG(3.14193792057279441821e+00,0.0e+00), RES(-1.0000000596046477360e0, 0.0)}, + {FN (sec), ARG(-3.14193792057279441821e+00,0.0e+00), RES(-1.0000000596046477360e0, 0.0)}, + {FN (sec), ARG(3.14193792057279441821e+00,1.19209289550781250e-07), RES(-1.0000000596046406305e0, -4.1159035837694558220e-11)}, + {FN (sec), ARG(3.14193792057279441821e+00,-1.19209289550781250e-07), RES(-1.0000000596046406305e0, 4.1159035837694558220e-11)}, + {FN (sec), ARG(-3.14193792057279441821e+00,1.19209289550781250e-07), RES(-1.0000000596046406305e0, 4.1159035837694558220e-11)}, + {FN (sec), ARG(-3.14193792057279441821e+00,-1.19209289550781250e-07), RES(-1.0000000596046406305e0, -4.1159035837694558220e-11)}, + {FN (sec), ARG(3.14193792057279441821e+00,5.0e-01), RES(-8.8681891425248302484e-1, -1.4149533035935587701e-4)}, + {FN (sec), ARG(3.14193792057279441821e+00,-5.0e-01), RES(-8.8681891425248302484e-1, 1.4149533035935587701e-4)}, + {FN (sec), ARG(-3.14193792057279441821e+00,5.0e-01), RES(-8.8681891425248302484e-1, 1.4149533035935587701e-4)}, + {FN (sec), ARG(-3.14193792057279441821e+00,-5.0e-01), RES(-8.8681891425248302484e-1, -1.4149533035935587701e-4)}, + {FN (sec), ARG(3.14193792057279441821e+00,1.0e+00), RES(-6.4805426748157480499e-1, -1.7040802567648334832e-4)}, + {FN (sec), ARG(3.14193792057279441821e+00,-1.0e+00), RES(-6.4805426748157480499e-1, 1.7040802567648334832e-4)}, + {FN (sec), ARG(-3.14193792057279441821e+00,1.0e+00), RES(-6.4805426748157480499e-1, 1.7040802567648334832e-4)}, + {FN (sec), ARG(-3.14193792057279441821e+00,-1.0e+00), RES(-6.4805426748157480499e-1, -1.7040802567648334832e-4)}, + {FN (sec), ARG(3.14193792057279441821e+00,2.0e+00), RES(-2.6580221522968095407e-1, -8.8471445300357562580e-5)}, + {FN (sec), ARG(3.14193792057279441821e+00,-2.0e+00), RES(-2.6580221522968095407e-1, 8.8471445300357562580e-5)}, + {FN (sec), ARG(-3.14193792057279441821e+00,2.0e+00), RES(-2.6580221522968095407e-1, 8.8471445300357562580e-5)}, + {FN (sec), ARG(-3.14193792057279441821e+00,-2.0e+00), RES(-2.6580221522968095407e-1, -8.8471445300357562580e-5)}, + {FN (sec), ARG(4.71204371340168837179e+00,0.0e+00), RES(-2.8963094332825666135e3, 0.0)}, + {FN (sec), ARG(-4.71204371340168837179e+00,0.0e+00), RES(-2.8963094332825666135e3, 0.0)}, + {FN (sec), ARG(4.71204371340168837179e+00,1.19209289550781250e-07), RES(-2.8963090880156247720e3, -9.9999986092110711291e-1)}, + {FN (sec), ARG(4.71204371340168837179e+00,-1.19209289550781250e-07), RES(-2.8963090880156247720e3, 9.9999986092110711291e-1)}, + {FN (sec), ARG(-4.71204371340168837179e+00,1.19209289550781250e-07), RES(-2.8963090880156247720e3, 9.9999986092110711291e-1)}, + {FN (sec), ARG(-4.71204371340168837179e+00,-1.19209289550781250e-07), RES(-2.8963090880156247720e3, -9.9999986092110711291e-1)}, + {FN (sec), ARG(4.71204371340168837179e+00,5.0e-01), RES(-1.4337901642799849641e-3, -1.9190337944739187224e0)}, + {FN (sec), ARG(4.71204371340168837179e+00,-5.0e-01), RES(-1.4337901642799849641e-3, 1.9190337944739187224e0)}, + {FN (sec), ARG(-4.71204371340168837179e+00,5.0e-01), RES(-1.4337901642799849641e-3, 1.9190337944739187224e0)}, + {FN (sec), ARG(-4.71204371340168837179e+00,-5.0e-01), RES(-1.4337901642799849641e-3, -1.9190337944739187224e0)}, + {FN (sec), ARG(4.71204371340168837179e+00,1.0e+00), RES(-3.8576176225225896185e-4, -8.5091800407377002716e-1)}, + {FN (sec), ARG(4.71204371340168837179e+00,-1.0e+00), RES(-3.8576176225225896185e-4, 8.5091800407377002716e-1)}, + {FN (sec), ARG(-4.71204371340168837179e+00,1.0e+00), RES(-3.8576176225225896185e-4, 8.5091800407377002716e-1)}, + {FN (sec), ARG(-4.71204371340168837179e+00,-1.0e+00), RES(-3.8576176225225896185e-4, -8.5091800407377002716e-1)}, + {FN (sec), ARG(4.71204371340168837179e+00,2.0e+00), RES(-9.8749461907104871804e-5, -2.7572054583883740766e-1)}, + {FN (sec), ARG(4.71204371340168837179e+00,-2.0e+00), RES(-9.8749461907104871804e-5, 2.7572054583883740766e-1)}, + {FN (sec), ARG(-4.71204371340168837179e+00,2.0e+00), RES(-9.8749461907104871804e-5, 2.7572054583883740766e-1)}, + {FN (sec), ARG(-4.71204371340168837179e+00,-2.0e+00), RES(-9.8749461907104871804e-5, -2.7572054583883740766e-1)}, + {FN (sec), ARG(4.71273424736769097620e+00,0.0e+00), RES(2.8963094332856485380e3, 0.0)}, + {FN (sec), ARG(-4.71273424736769097620e+00,0.0e+00), RES(2.8963094332856485380e3, 0.0)}, + {FN (sec), ARG(4.71273424736769097620e+00,1.19209289550781250e-07), RES(2.8963090880187066954e3, -9.9999986092323528601e-1)}, + {FN (sec), ARG(4.71273424736769097620e+00,-1.19209289550781250e-07), RES(2.8963090880187066954e3, 9.9999986092323528601e-1)}, + {FN (sec), ARG(-4.71273424736769097620e+00,1.19209289550781250e-07), RES(2.8963090880187066954e3, 9.9999986092323528601e-1)}, + {FN (sec), ARG(-4.71273424736769097620e+00,-1.19209289550781250e-07), RES(2.8963090880187066954e3, -9.9999986092323528601e-1)}, + {FN (sec), ARG(4.71273424736769097620e+00,5.0e-01), RES(1.4337901642784592884e-3, -1.9190337944739187244e0)}, + {FN (sec), ARG(4.71273424736769097620e+00,-5.0e-01), RES(1.4337901642784592884e-3, 1.9190337944739187244e0)}, + {FN (sec), ARG(-4.71273424736769097620e+00,5.0e-01), RES(1.4337901642784592884e-3, 1.9190337944739187244e0)}, + {FN (sec), ARG(-4.71273424736769097620e+00,-5.0e-01), RES(1.4337901642784592884e-3, -1.9190337944739187244e0)}, + {FN (sec), ARG(4.71273424736769097620e+00,1.0e+00), RES(3.8576176225184847794e-4, -8.5091800407377002743e-1)}, + {FN (sec), ARG(4.71273424736769097620e+00,-1.0e+00), RES(3.8576176225184847794e-4, 8.5091800407377002743e-1)}, + {FN (sec), ARG(-4.71273424736769097620e+00,1.0e+00), RES(3.8576176225184847794e-4, 8.5091800407377002743e-1)}, + {FN (sec), ARG(-4.71273424736769097620e+00,-1.0e+00), RES(3.8576176225184847794e-4, -8.5091800407377002743e-1)}, + {FN (sec), ARG(4.71273424736769097620e+00,2.0e+00), RES(9.8749461906999793811e-5, -2.7572054583883740770e-1)}, + {FN (sec), ARG(4.71273424736769097620e+00,-2.0e+00), RES(9.8749461906999793811e-5, 2.7572054583883740770e-1)}, + {FN (sec), ARG(-4.71273424736769097620e+00,2.0e+00), RES(9.8749461906999793811e-5, 2.7572054583883740770e-1)}, + {FN (sec), ARG(-4.71273424736769097620e+00,-2.0e+00), RES(9.8749461906999793811e-5, -2.7572054583883740770e-1)}, + {FN (sec), ARG(6.28284004019658492979e+00,0.0e+00), RES(1.0000000596046477361e0, 0.0)}, + {FN (sec), ARG(-6.28284004019658492979e+00,0.0e+00), RES(1.0000000596046477361e0, 0.0)}, + {FN (sec), ARG(6.28284004019658492979e+00,1.19209289550781250e-07), RES(1.0000000596046406307e0, -4.1159035837738355016e-11)}, + {FN (sec), ARG(6.28284004019658492979e+00,-1.19209289550781250e-07), RES(1.0000000596046406307e0, 4.1159035837738355016e-11)}, + {FN (sec), ARG(-6.28284004019658492979e+00,1.19209289550781250e-07), RES(1.0000000596046406307e0, 4.1159035837738355016e-11)}, + {FN (sec), ARG(-6.28284004019658492979e+00,-1.19209289550781250e-07), RES(1.0000000596046406307e0, -4.1159035837738355016e-11)}, + {FN (sec), ARG(6.28284004019658492979e+00,5.0e-01), RES(8.8681891425248302490e-1, -1.4149533035950644034e-4)}, + {FN (sec), ARG(6.28284004019658492979e+00,-5.0e-01), RES(8.8681891425248302490e-1, 1.4149533035950644034e-4)}, + {FN (sec), ARG(-6.28284004019658492979e+00,5.0e-01), RES(8.8681891425248302490e-1, 1.4149533035950644034e-4)}, + {FN (sec), ARG(-6.28284004019658492979e+00,-5.0e-01), RES(8.8681891425248302490e-1, -1.4149533035950644034e-4)}, + {FN (sec), ARG(6.28284004019658492979e+00,1.0e+00), RES(6.4805426748157480498e-1, -1.7040802567666467726e-4)}, + {FN (sec), ARG(6.28284004019658492979e+00,-1.0e+00), RES(6.4805426748157480498e-1, 1.7040802567666467726e-4)}, + {FN (sec), ARG(-6.28284004019658492979e+00,1.0e+00), RES(6.4805426748157480498e-1, 1.7040802567666467726e-4)}, + {FN (sec), ARG(-6.28284004019658492979e+00,-1.0e+00), RES(6.4805426748157480498e-1, -1.7040802567666467726e-4)}, + {FN (sec), ARG(6.28284004019658492979e+00,2.0e+00), RES(2.6580221522968095404e-1, -8.8471445300451703875e-5)}, + {FN (sec), ARG(6.28284004019658492979e+00,-2.0e+00), RES(2.6580221522968095404e-1, 8.8471445300451703875e-5)}, + {FN (sec), ARG(-6.28284004019658492979e+00,2.0e+00), RES(2.6580221522968095404e-1, 8.8471445300451703875e-5)}, + {FN (sec), ARG(-6.28284004019658492979e+00,-2.0e+00), RES(2.6580221522968095404e-1, -8.8471445300451703875e-5)}, + {FN (sec), ARG(6.28353057416258753420e+00,0.0e+00), RES(1.0000000596046477359e0, 0.0)}, + {FN (sec), ARG(-6.28353057416258753420e+00,0.0e+00), RES(1.0000000596046477359e0, 0.0)}, + {FN (sec), ARG(6.28353057416258753420e+00,1.19209289550781250e-07), RES(1.0000000596046406305e0, 4.1159035837679959288e-11)}, + {FN (sec), ARG(6.28353057416258753420e+00,-1.19209289550781250e-07), RES(1.0000000596046406305e0, -4.1159035837679959288e-11)}, + {FN (sec), ARG(-6.28353057416258753420e+00,1.19209289550781250e-07), RES(1.0000000596046406305e0, -4.1159035837679959288e-11)}, + {FN (sec), ARG(-6.28353057416258753420e+00,-1.19209289550781250e-07), RES(1.0000000596046406305e0, 4.1159035837679959288e-11)}, + {FN (sec), ARG(6.28353057416258753420e+00,5.0e-01), RES(8.8681891425248302482e-1, 1.4149533035930568923e-4)}, + {FN (sec), ARG(6.28353057416258753420e+00,-5.0e-01), RES(8.8681891425248302482e-1, -1.4149533035930568923e-4)}, + {FN (sec), ARG(-6.28353057416258753420e+00,5.0e-01), RES(8.8681891425248302482e-1, -1.4149533035930568923e-4)}, + {FN (sec), ARG(-6.28353057416258753420e+00,-5.0e-01), RES(8.8681891425248302482e-1, 1.4149533035930568923e-4)}, + {FN (sec), ARG(6.28353057416258753420e+00,1.0e+00), RES(6.480542674815748050e-1, 1.7040802567642290534e-4)}, + {FN (sec), ARG(6.28353057416258753420e+00,-1.0e+00), RES(6.480542674815748050e-1, -1.7040802567642290534e-4)}, + {FN (sec), ARG(-6.28353057416258753420e+00,1.0e+00), RES(6.480542674815748050e-1, -1.7040802567642290534e-4)}, + {FN (sec), ARG(-6.28353057416258753420e+00,-1.0e+00), RES(6.480542674815748050e-1, 1.7040802567642290534e-4)}, + {FN (sec), ARG(6.28353057416258753420e+00,2.0e+00), RES(2.6580221522968095408e-1, 8.8471445300326182148e-5)}, + {FN (sec), ARG(6.28353057416258753420e+00,-2.0e+00), RES(2.6580221522968095408e-1, -8.8471445300326182148e-5)}, + {FN (sec), ARG(-6.28353057416258753420e+00,2.0e+00), RES(2.6580221522968095408e-1, -8.8471445300326182148e-5)}, + {FN (sec), ARG(-6.28353057416258753420e+00,-2.0e+00), RES(2.6580221522968095408e-1, 8.8471445300326182148e-5)}, + {FN (sec), ARG(9.42443269378637893396e+00,0.0e+00), RES(-1.0000000596046477358e0, 0.0)}, + {FN (sec), ARG(-9.42443269378637893396e+00,0.0e+00), RES(-1.0000000596046477358e0, 0.0)}, + {FN (sec), ARG(9.42443269378637893396e+00,1.19209289550781250e-07), RES(-1.0000000596046406304e0, 4.1159035837647074798e-11)}, + {FN (sec), ARG(9.42443269378637893396e+00,-1.19209289550781250e-07), RES(-1.0000000596046406304e0, -4.1159035837647074798e-11)}, + {FN (sec), ARG(-9.42443269378637893396e+00,1.19209289550781250e-07), RES(-1.0000000596046406304e0, -4.1159035837647074798e-11)}, + {FN (sec), ARG(-9.42443269378637893396e+00,-1.19209289550781250e-07), RES(-1.0000000596046406304e0, 4.1159035837647074798e-11)}, + {FN (sec), ARG(9.42443269378637893396e+00,5.0e-01), RES(-8.8681891425248302477e-1, 1.4149533035919263990e-4)}, + {FN (sec), ARG(9.42443269378637893396e+00,-5.0e-01), RES(-8.8681891425248302477e-1, -1.4149533035919263990e-4)}, + {FN (sec), ARG(-9.42443269378637893396e+00,5.0e-01), RES(-8.8681891425248302477e-1, -1.4149533035919263990e-4)}, + {FN (sec), ARG(-9.42443269378637893396e+00,-5.0e-01), RES(-8.8681891425248302477e-1, 1.4149533035919263990e-4)}, + {FN (sec), ARG(9.42443269378637893396e+00,1.0e+00), RES(-6.4805426748157480501e-1, 1.7040802567628675588e-4)}, + {FN (sec), ARG(9.42443269378637893396e+00,-1.0e+00), RES(-6.4805426748157480501e-1, -1.7040802567628675588e-4)}, + {FN (sec), ARG(-9.42443269378637893396e+00,1.0e+00), RES(-6.4805426748157480501e-1, -1.7040802567628675588e-4)}, + {FN (sec), ARG(-9.42443269378637893396e+00,-1.0e+00), RES(-6.4805426748157480501e-1, 1.7040802567628675588e-4)}, + {FN (sec), ARG(9.42443269378637893396e+00,2.0e+00), RES(-2.6580221522968095410e-1, 8.8471445300255496873e-5)}, + {FN (sec), ARG(9.42443269378637893396e+00,-2.0e+00), RES(-2.6580221522968095410e-1, -8.8471445300255496873e-5)}, + {FN (sec), ARG(-9.42443269378637893396e+00,2.0e+00), RES(-2.6580221522968095410e-1, -8.8471445300255496873e-5)}, + {FN (sec), ARG(-9.42443269378637893396e+00,-2.0e+00), RES(-2.6580221522968095410e-1, 8.8471445300255496873e-5)}, + {FN (sec), ARG(9.42512322775237976202e+00,0.0e+00), RES(-1.0000000596046477356e0, 0.0)}, + {FN (sec), ARG(-9.42512322775237976202e+00,0.0e+00), RES(-1.0000000596046477356e0, 0.0)}, + {FN (sec), ARG(9.42512322775237976202e+00,1.19209289550781250e-07), RES(-1.0000000596046406301e0, -4.1159035837559481207e-11)}, + {FN (sec), ARG(9.42512322775237976202e+00,-1.19209289550781250e-07), RES(-1.0000000596046406301e0, 4.1159035837559481207e-11)}, + {FN (sec), ARG(-9.42512322775237976202e+00,1.19209289550781250e-07), RES(-1.0000000596046406301e0, 4.1159035837559481207e-11)}, + {FN (sec), ARG(-9.42512322775237976202e+00,-1.19209289550781250e-07), RES(-1.0000000596046406301e0, -4.1159035837559481207e-11)}, + {FN (sec), ARG(9.42512322775237976202e+00,5.0e-01), RES(-8.8681891425248302464e-1, -1.4149533035889151322e-4)}, + {FN (sec), ARG(9.42512322775237976202e+00,-5.0e-01), RES(-8.8681891425248302464e-1, 1.4149533035889151322e-4)}, + {FN (sec), ARG(-9.42512322775237976202e+00,5.0e-01), RES(-8.8681891425248302464e-1, 1.4149533035889151322e-4)}, + {FN (sec), ARG(-9.42512322775237976202e+00,-5.0e-01), RES(-8.8681891425248302464e-1, -1.4149533035889151322e-4)}, + {FN (sec), ARG(9.42512322775237976202e+00,1.0e+00), RES(-6.4805426748157480504e-1, -1.704080256759240980e-4)}, + {FN (sec), ARG(9.42512322775237976202e+00,-1.0e+00), RES(-6.4805426748157480504e-1, 1.704080256759240980e-4)}, + {FN (sec), ARG(-9.42512322775237976202e+00,1.0e+00), RES(-6.4805426748157480504e-1, 1.704080256759240980e-4)}, + {FN (sec), ARG(-9.42512322775237976202e+00,-1.0e+00), RES(-6.4805426748157480504e-1, -1.704080256759240980e-4)}, + {FN (sec), ARG(9.42512322775237976202e+00,2.0e+00), RES(-2.6580221522968095416e-1, -8.8471445300067214283e-5)}, + {FN (sec), ARG(9.42512322775237976202e+00,-2.0e+00), RES(-2.6580221522968095416e-1, 8.8471445300067214283e-5)}, + {FN (sec), ARG(-9.42512322775237976202e+00,2.0e+00), RES(-2.6580221522968095416e-1, 8.8471445300067214283e-5)}, + {FN (sec), ARG(-9.42512322775237976202e+00,-2.0e+00), RES(-2.6580221522968095416e-1, -8.8471445300067214283e-5)}, + {FN (cot), ARG(-3.45266983001243932001e-04,0.0e+00), RES(-2.8963092606511032136e3, 0.0)}, + {FN (cot), ARG(3.45266983001243932001e-04,0.0e+00), RES(2.8963092606511032136e3, 0.0)}, + {FN (cot), ARG(-3.45266983001243932001e-04,1.19209289550781250e-07), RES(-2.8963089153841613713e3, -9.9999992052715532101e-1)}, + {FN (cot), ARG(-3.45266983001243932001e-04,-1.19209289550781250e-07), RES(-2.8963089153841613713e3, 9.9999992052715532101e-1)}, + {FN (cot), ARG(3.45266983001243932001e-04,1.19209289550781250e-07), RES(2.8963089153841613713e3, -9.9999992052715532101e-1)}, + {FN (cot), ARG(3.45266983001243932001e-04,-1.19209289550781250e-07), RES(2.8963089153841613713e3, 9.9999992052715532101e-1)}, + {FN (cot), ARG(-3.45266983001243932001e-04,5.0e-01), RES(-1.2715121175451222247e-3, -2.1639524637389326002e0)}, + {FN (cot), ARG(-3.45266983001243932001e-04,-5.0e-01), RES(-1.2715121175451222247e-3, 2.1639524637389326002e0)}, + {FN (cot), ARG(3.45266983001243932001e-04,5.0e-01), RES(1.2715121175451222247e-3, -2.1639524637389326002e0)}, + {FN (cot), ARG(3.45266983001243932001e-04,-5.0e-01), RES(1.2715121175451222247e-3, 2.1639524637389326002e0)}, + {FN (cot), ARG(-3.45266983001243932001e-04,1.0e+00), RES(-2.4999454374267620687e-4, -1.3130351721648674824e0)}, + {FN (cot), ARG(-3.45266983001243932001e-04,-1.0e+00), RES(-2.4999454374267620687e-4, 1.3130351721648674824e0)}, + {FN (cot), ARG(3.45266983001243932001e-04,1.0e+00), RES(2.4999454374267620687e-4, -1.3130351721648674824e0)}, + {FN (cot), ARG(3.45266983001243932001e-04,-1.0e+00), RES(2.4999454374267620687e-4, 1.3130351721648674824e0)}, + {FN (cot), ARG(-3.45266983001243932001e-04,2.0e+00), RES(-2.6247825506563736365e-5, -1.0373147113268752620e0)}, + {FN (cot), ARG(-3.45266983001243932001e-04,-2.0e+00), RES(-2.6247825506563736365e-5, 1.0373147113268752620e0)}, + {FN (cot), ARG(3.45266983001243932001e-04,2.0e+00), RES(2.6247825506563736365e-5, -1.0373147113268752620e0)}, + {FN (cot), ARG(3.45266983001243932001e-04,-2.0e+00), RES(2.6247825506563736365e-5, 1.0373147113268752620e0)}, + {FN (cot), ARG(1.57045105981189525579e+00,0.0e+00), RES(3.4526699672104134407e-4, 0.0)}, + {FN (cot), ARG(-1.57045105981189525579e+00,0.0e+00), RES(-3.4526699672104134407e-4, 0.0)}, + {FN (cot), ARG(1.57045105981189525579e+00,1.19209289550781250e-07), RES(3.4526699672103643753e-4, -1.1920930376163652990e-7)}, + {FN (cot), ARG(1.57045105981189525579e+00,-1.19209289550781250e-07), RES(3.4526699672103643753e-4, 1.1920930376163652990e-7)}, + {FN (cot), ARG(-1.57045105981189525579e+00,1.19209289550781250e-07), RES(-3.4526699672103643753e-4, -1.1920930376163652990e-7)}, + {FN (cot), ARG(-1.57045105981189525579e+00,-1.19209289550781250e-07), RES(-3.4526699672103643753e-4, 1.1920930376163652990e-7)}, + {FN (cot), ARG(1.57045105981189525579e+00,5.0e-01), RES(2.7153443992665204631e-4, -4.6211720058436229982e-1)}, + {FN (cot), ARG(1.57045105981189525579e+00,-5.0e-01), RES(2.7153443992665204631e-4, 4.6211720058436229982e-1)}, + {FN (cot), ARG(-1.57045105981189525579e+00,5.0e-01), RES(-2.7153443992665204631e-4, -4.6211720058436229982e-1)}, + {FN (cot), ARG(-1.57045105981189525579e+00,-5.0e-01), RES(-2.7153443992665204631e-4, 4.6211720058436229982e-1)}, + {FN (cot), ARG(1.57045105981189525579e+00,1.0e+00), RES(1.4500326960279979918e-4, -7.6159419408485704839e-1)}, + {FN (cot), ARG(1.57045105981189525579e+00,-1.0e+00), RES(1.4500326960279979918e-4, 7.6159419408485704839e-1)}, + {FN (cot), ARG(-1.57045105981189525579e+00,1.0e+00), RES(-1.4500326960279979918e-4, -7.6159419408485704839e-1)}, + {FN (cot), ARG(-1.57045105981189525579e+00,-1.0e+00), RES(-1.4500326960279979918e-4, 7.6159419408485704839e-1)}, + {FN (cot), ARG(1.57045105981189525579e+00,2.0e+00), RES(2.4393395410443750226e-5, -9.6402758819508310557e-1)}, + {FN (cot), ARG(1.57045105981189525579e+00,-2.0e+00), RES(2.4393395410443750226e-5, 9.6402758819508310557e-1)}, + {FN (cot), ARG(-1.57045105981189525579e+00,2.0e+00), RES(-2.4393395410443750226e-5, -9.6402758819508310557e-1)}, + {FN (cot), ARG(-1.57045105981189525579e+00,-2.0e+00), RES(-2.4393395410443750226e-5, 9.6402758819508310557e-1)}, + {FN (cot), ARG(1.57114159377789786021e+00,0.0e+00), RES(-3.4526699672091887937e-4, 0.0)}, + {FN (cot), ARG(-1.57114159377789786021e+00,0.0e+00), RES(3.4526699672091887937e-4, 0.0)}, + {FN (cot), ARG(1.57114159377789786021e+00,1.19209289550781250e-07), RES(-3.4526699672091397283e-4, -1.1920930376163652989e-7)}, + {FN (cot), ARG(1.57114159377789786021e+00,-1.19209289550781250e-07), RES(-3.4526699672091397283e-4, 1.1920930376163652989e-7)}, + {FN (cot), ARG(-1.57114159377789786021e+00,1.19209289550781250e-07), RES(3.4526699672091397283e-4, -1.1920930376163652989e-7)}, + {FN (cot), ARG(-1.57114159377789786021e+00,-1.19209289550781250e-07), RES(3.4526699672091397283e-4, 1.1920930376163652989e-7)}, + {FN (cot), ARG(1.57114159377789786021e+00,5.0e-01), RES(-2.7153443992655573423e-4, -4.6211720058436229979e-1)}, + {FN (cot), ARG(1.57114159377789786021e+00,-5.0e-01), RES(-2.7153443992655573423e-4, 4.6211720058436229979e-1)}, + {FN (cot), ARG(-1.57114159377789786021e+00,5.0e-01), RES(2.7153443992655573423e-4, -4.6211720058436229979e-1)}, + {FN (cot), ARG(-1.57114159377789786021e+00,-5.0e-01), RES(2.7153443992655573423e-4, 4.6211720058436229979e-1)}, + {FN (cot), ARG(1.57114159377789786021e+00,1.0e+00), RES(-1.4500326960274836716e-4, -7.6159419408485704836e-1)}, + {FN (cot), ARG(1.57114159377789786021e+00,-1.0e+00), RES(-1.4500326960274836716e-4, 7.6159419408485704836e-1)}, + {FN (cot), ARG(-1.57114159377789786021e+00,1.0e+00), RES(1.4500326960274836716e-4, -7.6159419408485704836e-1)}, + {FN (cot), ARG(-1.57114159377789786021e+00,-1.0e+00), RES(1.4500326960274836716e-4, 7.6159419408485704836e-1)}, + {FN (cot), ARG(1.57114159377789786021e+00,2.0e+00), RES(-2.4393395410435097997e-5, -9.6402758819508310556e-1)}, + {FN (cot), ARG(1.57114159377789786021e+00,-2.0e+00), RES(-2.4393395410435097997e-5, 9.6402758819508310556e-1)}, + {FN (cot), ARG(-1.57114159377789786021e+00,2.0e+00), RES(2.4393395410435097997e-5, -9.6402758819508310556e-1)}, + {FN (cot), ARG(-1.57114159377789786021e+00,-2.0e+00), RES(2.4393395410435097997e-5, 9.6402758819508310556e-1)}, + {FN (cot), ARG(3.14124738660679181379e+00,0.0e+00), RES(-2.8963092606495870519e3, 0.0)}, + {FN (cot), ARG(-3.14124738660679181379e+00,0.0e+00), RES(2.8963092606495870519e3, 0.0)}, + {FN (cot), ARG(3.14124738660679181379e+00,1.19209289550781250e-07), RES(-2.8963089153826452102e3, -9.9999992052610836018e-1)}, + {FN (cot), ARG(3.14124738660679181379e+00,-1.19209289550781250e-07), RES(-2.8963089153826452102e3, 9.9999992052610836018e-1)}, + {FN (cot), ARG(-3.14124738660679181379e+00,1.19209289550781250e-07), RES(2.8963089153826452102e3, -9.9999992052610836018e-1)}, + {FN (cot), ARG(-3.14124738660679181379e+00,-1.19209289550781250e-07), RES(2.8963089153826452102e3, 9.9999992052610836018e-1)}, + {FN (cot), ARG(3.14124738660679181379e+00,5.0e-01), RES(-1.2715121175457878359e-3, -2.1639524637389325992e0)}, + {FN (cot), ARG(3.14124738660679181379e+00,-5.0e-01), RES(-1.2715121175457878359e-3, 2.1639524637389325992e0)}, + {FN (cot), ARG(-3.14124738660679181379e+00,5.0e-01), RES(1.2715121175457878359e-3, -2.1639524637389325992e0)}, + {FN (cot), ARG(-3.14124738660679181379e+00,-5.0e-01), RES(1.2715121175457878359e-3, 2.1639524637389325992e0)}, + {FN (cot), ARG(3.14124738660679181379e+00,1.0e+00), RES(-2.4999454374280707411e-4, -1.3130351721648674823e0)}, + {FN (cot), ARG(3.14124738660679181379e+00,-1.0e+00), RES(-2.4999454374280707411e-4, 1.3130351721648674823e0)}, + {FN (cot), ARG(-3.14124738660679181379e+00,1.0e+00), RES(2.4999454374280707411e-4, -1.3130351721648674823e0)}, + {FN (cot), ARG(-3.14124738660679181379e+00,-1.0e+00), RES(2.4999454374280707411e-4, 1.3130351721648674823e0)}, + {FN (cot), ARG(3.14124738660679181379e+00,2.0e+00), RES(-2.6247825506577476589e-5, -1.0373147113268752620e0)}, + {FN (cot), ARG(3.14124738660679181379e+00,-2.0e+00), RES(-2.6247825506577476589e-5, 1.0373147113268752620e0)}, + {FN (cot), ARG(-3.14124738660679181379e+00,2.0e+00), RES(2.6247825506577476589e-5, -1.0373147113268752620e0)}, + {FN (cot), ARG(-3.14124738660679181379e+00,-2.0e+00), RES(2.6247825506577476589e-5, 1.0373147113268752620e0)}, + {FN (cot), ARG(3.14193792057279441821e+00,0.0e+00), RES(2.8963092606516416684e3, 0.0)}, + {FN (cot), ARG(-3.14193792057279441821e+00,0.0e+00), RES(-2.8963092606516416684e3, 0.0)}, + {FN (cot), ARG(3.14193792057279441821e+00,1.19209289550781250e-07), RES(2.8963089153846998260e3, -9.9999992052752714224e-1)}, + {FN (cot), ARG(3.14193792057279441821e+00,-1.19209289550781250e-07), RES(2.8963089153846998260e3, 9.9999992052752714224e-1)}, + {FN (cot), ARG(-3.14193792057279441821e+00,1.19209289550781250e-07), RES(-2.8963089153846998260e3, -9.9999992052752714224e-1)}, + {FN (cot), ARG(-3.14193792057279441821e+00,-1.19209289550781250e-07), RES(-2.8963089153846998260e3, 9.9999992052752714224e-1)}, + {FN (cot), ARG(3.14193792057279441821e+00,5.0e-01), RES(1.2715121175448858373e-3, -2.1639524637389326006e0)}, + {FN (cot), ARG(3.14193792057279441821e+00,-5.0e-01), RES(1.2715121175448858373e-3, 2.1639524637389326006e0)}, + {FN (cot), ARG(-3.14193792057279441821e+00,5.0e-01), RES(-1.2715121175448858373e-3, -2.1639524637389326006e0)}, + {FN (cot), ARG(-3.14193792057279441821e+00,-5.0e-01), RES(-1.2715121175448858373e-3, 2.1639524637389326006e0)}, + {FN (cot), ARG(3.14193792057279441821e+00,1.0e+00), RES(2.4999454374262973024e-4, -1.3130351721648674824e0)}, + {FN (cot), ARG(3.14193792057279441821e+00,-1.0e+00), RES(2.4999454374262973024e-4, 1.3130351721648674824e0)}, + {FN (cot), ARG(-3.14193792057279441821e+00,1.0e+00), RES(-2.4999454374262973024e-4, -1.3130351721648674824e0)}, + {FN (cot), ARG(-3.14193792057279441821e+00,-1.0e+00), RES(-2.4999454374262973024e-4, 1.3130351721648674824e0)}, + {FN (cot), ARG(3.14193792057279441821e+00,2.0e+00), RES(2.6247825506558856616e-5, -1.0373147113268752620e0)}, + {FN (cot), ARG(3.14193792057279441821e+00,-2.0e+00), RES(2.6247825506558856616e-5, 1.0373147113268752620e0)}, + {FN (cot), ARG(-3.14193792057279441821e+00,2.0e+00), RES(-2.6247825506558856616e-5, -1.0373147113268752620e0)}, + {FN (cot), ARG(-3.14193792057279441821e+00,-2.0e+00), RES(-2.6247825506558856616e-5, 1.0373147113268752620e0)}, + {FN (cot), ARG(4.71204371340168837179e+00,0.0e+00), RES(3.4526699672116380876e-4, 0.0)}, + {FN (cot), ARG(-4.71204371340168837179e+00,0.0e+00), RES(-3.4526699672116380876e-4, 0.0)}, + {FN (cot), ARG(4.71204371340168837179e+00,1.19209289550781250e-07), RES(3.4526699672115890222e-4, -1.1920930376163652991e-7)}, + {FN (cot), ARG(4.71204371340168837179e+00,-1.19209289550781250e-07), RES(3.4526699672115890222e-4, 1.1920930376163652991e-7)}, + {FN (cot), ARG(-4.71204371340168837179e+00,1.19209289550781250e-07), RES(-3.4526699672115890222e-4, -1.1920930376163652991e-7)}, + {FN (cot), ARG(-4.71204371340168837179e+00,-1.19209289550781250e-07), RES(-3.4526699672115890222e-4, 1.1920930376163652991e-7)}, + {FN (cot), ARG(4.71204371340168837179e+00,5.0e-01), RES(2.7153443992674835838e-4, -4.6211720058436229985e-1)}, + {FN (cot), ARG(4.71204371340168837179e+00,-5.0e-01), RES(2.7153443992674835838e-4, 4.6211720058436229985e-1)}, + {FN (cot), ARG(-4.71204371340168837179e+00,5.0e-01), RES(-2.7153443992674835838e-4, -4.6211720058436229985e-1)}, + {FN (cot), ARG(-4.71204371340168837179e+00,-5.0e-01), RES(-2.7153443992674835838e-4, 4.6211720058436229985e-1)}, + {FN (cot), ARG(4.71204371340168837179e+00,1.0e+00), RES(1.4500326960285123120e-4, -7.6159419408485704842e-1)}, + {FN (cot), ARG(4.71204371340168837179e+00,-1.0e+00), RES(1.4500326960285123120e-4, 7.6159419408485704842e-1)}, + {FN (cot), ARG(-4.71204371340168837179e+00,1.0e+00), RES(-1.4500326960285123120e-4, -7.6159419408485704842e-1)}, + {FN (cot), ARG(-4.71204371340168837179e+00,-1.0e+00), RES(-1.4500326960285123120e-4, 7.6159419408485704842e-1)}, + {FN (cot), ARG(4.71204371340168837179e+00,2.0e+00), RES(2.4393395410452402454e-5, -9.6402758819508310557e-1)}, + {FN (cot), ARG(4.71204371340168837179e+00,-2.0e+00), RES(2.4393395410452402454e-5, 9.6402758819508310557e-1)}, + {FN (cot), ARG(-4.71204371340168837179e+00,2.0e+00), RES(-2.4393395410452402454e-5, -9.6402758819508310557e-1)}, + {FN (cot), ARG(-4.71204371340168837179e+00,-2.0e+00), RES(-2.4393395410452402454e-5, 9.6402758819508310557e-1)}, + {FN (cot), ARG(4.71273424736769097620e+00,0.0e+00), RES(-3.4526699672079641468e-4, 0.0)}, + {FN (cot), ARG(-4.71273424736769097620e+00,0.0e+00), RES(3.4526699672079641468e-4, 0.0)}, + {FN (cot), ARG(4.71273424736769097620e+00,1.19209289550781250e-07), RES(-3.4526699672079150814e-4, -1.1920930376163652988e-7)}, + {FN (cot), ARG(4.71273424736769097620e+00,-1.19209289550781250e-07), RES(-3.4526699672079150814e-4, 1.1920930376163652988e-7)}, + {FN (cot), ARG(-4.71273424736769097620e+00,1.19209289550781250e-07), RES(3.4526699672079150814e-4, -1.1920930376163652988e-7)}, + {FN (cot), ARG(-4.71273424736769097620e+00,-1.19209289550781250e-07), RES(3.4526699672079150814e-4, 1.1920930376163652988e-7)}, + {FN (cot), ARG(4.71273424736769097620e+00,5.0e-01), RES(-2.7153443992645942216e-4, -4.6211720058436229976e-1)}, + {FN (cot), ARG(4.71273424736769097620e+00,-5.0e-01), RES(-2.7153443992645942216e-4, 4.6211720058436229976e-1)}, + {FN (cot), ARG(-4.71273424736769097620e+00,5.0e-01), RES(2.7153443992645942216e-4, -4.6211720058436229976e-1)}, + {FN (cot), ARG(-4.71273424736769097620e+00,-5.0e-01), RES(2.7153443992645942216e-4, 4.6211720058436229976e-1)}, + {FN (cot), ARG(4.71273424736769097620e+00,1.0e+00), RES(-1.4500326960269693514e-4, -7.6159419408485704834e-1)}, + {FN (cot), ARG(4.71273424736769097620e+00,-1.0e+00), RES(-1.4500326960269693514e-4, 7.6159419408485704834e-1)}, + {FN (cot), ARG(-4.71273424736769097620e+00,1.0e+00), RES(1.4500326960269693514e-4, -7.6159419408485704834e-1)}, + {FN (cot), ARG(-4.71273424736769097620e+00,-1.0e+00), RES(1.4500326960269693514e-4, 7.6159419408485704834e-1)}, + {FN (cot), ARG(4.71273424736769097620e+00,2.0e+00), RES(-2.4393395410426445768e-5, -9.6402758819508310556e-1)}, + {FN (cot), ARG(4.71273424736769097620e+00,-2.0e+00), RES(-2.4393395410426445768e-5, 9.6402758819508310556e-1)}, + {FN (cot), ARG(-4.71273424736769097620e+00,2.0e+00), RES(2.4393395410426445768e-5, -9.6402758819508310556e-1)}, + {FN (cot), ARG(-4.71273424736769097620e+00,-2.0e+00), RES(2.4393395410426445768e-5, 9.6402758819508310556e-1)}, + {FN (cot), ARG(6.28284004019658492979e+00,0.0e+00), RES(-2.8963092606485597437e3, 0.0)}, + {FN (cot), ARG(-6.28284004019658492979e+00,0.0e+00), RES(2.8963092606485597437e3, 0.0)}, + {FN (cot), ARG(6.28284004019658492979e+00,1.19209289550781250e-07), RES(-2.8963089153816179024e3, -9.9999992052539896914e-1)}, + {FN (cot), ARG(6.28284004019658492979e+00,-1.19209289550781250e-07), RES(-2.8963089153816179024e3, 9.9999992052539896914e-1)}, + {FN (cot), ARG(-6.28284004019658492979e+00,1.19209289550781250e-07), RES(2.8963089153816179024e3, -9.9999992052539896914e-1)}, + {FN (cot), ARG(-6.28284004019658492979e+00,-1.19209289550781250e-07), RES(2.8963089153816179024e3, 9.9999992052539896914e-1)}, + {FN (cot), ARG(6.28284004019658492979e+00,5.0e-01), RES(-1.2715121175462388352e-3, -2.1639524637389325986e0)}, + {FN (cot), ARG(6.28284004019658492979e+00,-5.0e-01), RES(-1.2715121175462388352e-3, 2.1639524637389325986e0)}, + {FN (cot), ARG(-6.28284004019658492979e+00,5.0e-01), RES(1.2715121175462388352e-3, -2.1639524637389325986e0)}, + {FN (cot), ARG(-6.28284004019658492979e+00,-5.0e-01), RES(1.2715121175462388352e-3, 2.1639524637389325986e0)}, + {FN (cot), ARG(6.28284004019658492979e+00,1.0e+00), RES(-2.4999454374289574604e-4, -1.3130351721648674822e0)}, + {FN (cot), ARG(6.28284004019658492979e+00,-1.0e+00), RES(-2.4999454374289574604e-4, 1.3130351721648674822e0)}, + {FN (cot), ARG(-6.28284004019658492979e+00,1.0e+00), RES(2.4999454374289574604e-4, -1.3130351721648674822e0)}, + {FN (cot), ARG(-6.28284004019658492979e+00,-1.0e+00), RES(2.4999454374289574604e-4, 1.3130351721648674822e0)}, + {FN (cot), ARG(6.28284004019658492979e+00,2.0e+00), RES(-2.6247825506586786575e-5, -1.0373147113268752620e0)}, + {FN (cot), ARG(6.28284004019658492979e+00,-2.0e+00), RES(-2.6247825506586786575e-5, 1.0373147113268752620e0)}, + {FN (cot), ARG(-6.28284004019658492979e+00,2.0e+00), RES(2.6247825506586786575e-5, -1.0373147113268752620e0)}, + {FN (cot), ARG(-6.28284004019658492979e+00,-2.0e+00), RES(2.6247825506586786575e-5, 1.0373147113268752620e0)}, + {FN (cot), ARG(6.28353057416258753420e+00,0.0e+00), RES(2.8963092606526689766e3, 0.0)}, + {FN (cot), ARG(-6.28353057416258753420e+00,0.0e+00), RES(-2.8963092606526689766e3, 0.0)}, + {FN (cot), ARG(6.28353057416258753420e+00,1.19209289550781250e-07), RES(2.8963089153857271338e3, -9.9999992052823653327e-1)}, + {FN (cot), ARG(6.28353057416258753420e+00,-1.19209289550781250e-07), RES(2.8963089153857271338e3, 9.9999992052823653327e-1)}, + {FN (cot), ARG(-6.28353057416258753420e+00,1.19209289550781250e-07), RES(-2.8963089153857271338e3, -9.9999992052823653327e-1)}, + {FN (cot), ARG(-6.28353057416258753420e+00,-1.19209289550781250e-07), RES(-2.8963089153857271338e3, 9.9999992052823653327e-1)}, + {FN (cot), ARG(6.28353057416258753420e+00,5.0e-01), RES(1.2715121175444348380e-3, -2.1639524637389326012e0)}, + {FN (cot), ARG(6.28353057416258753420e+00,-5.0e-01), RES(1.2715121175444348380e-3, 2.1639524637389326012e0)}, + {FN (cot), ARG(-6.28353057416258753420e+00,5.0e-01), RES(-1.2715121175444348380e-3, -2.1639524637389326012e0)}, + {FN (cot), ARG(-6.28353057416258753420e+00,-5.0e-01), RES(-1.2715121175444348380e-3, 2.1639524637389326012e0)}, + {FN (cot), ARG(6.28353057416258753420e+00,1.0e+00), RES(2.4999454374254105830e-4, -1.3130351721648674825e0)}, + {FN (cot), ARG(6.28353057416258753420e+00,-1.0e+00), RES(2.4999454374254105830e-4, 1.3130351721648674825e0)}, + {FN (cot), ARG(-6.28353057416258753420e+00,1.0e+00), RES(-2.4999454374254105830e-4, -1.3130351721648674825e0)}, + {FN (cot), ARG(-6.28353057416258753420e+00,-1.0e+00), RES(-2.4999454374254105830e-4, 1.3130351721648674825e0)}, + {FN (cot), ARG(6.28353057416258753420e+00,2.0e+00), RES(2.6247825506549546629e-5, -1.0373147113268752620e0)}, + {FN (cot), ARG(6.28353057416258753420e+00,-2.0e+00), RES(2.6247825506549546629e-5, 1.0373147113268752620e0)}, + {FN (cot), ARG(-6.28353057416258753420e+00,2.0e+00), RES(-2.6247825506549546629e-5, -1.0373147113268752620e0)}, + {FN (cot), ARG(-6.28353057416258753420e+00,-2.0e+00), RES(-2.6247825506549546629e-5, 1.0373147113268752620e0)}, + {FN (cot), ARG(9.42443269378637893396e+00,0.0e+00), RES(-2.8963092606549830163e3, 0.0)}, + {FN (cot), ARG(-9.42443269378637893396e+00,0.0e+00), RES(2.8963092606549830163e3, 0.0)}, + {FN (cot), ARG(9.42443269378637893396e+00,1.19209289550781250e-07), RES(-2.8963089153880411727e3, -9.9999992052983445585e-1)}, + {FN (cot), ARG(9.42443269378637893396e+00,-1.19209289550781250e-07), RES(-2.8963089153880411727e3, 9.9999992052983445585e-1)}, + {FN (cot), ARG(-9.42443269378637893396e+00,1.19209289550781250e-07), RES(2.8963089153880411727e3, -9.9999992052983445585e-1)}, + {FN (cot), ARG(-9.42443269378637893396e+00,-1.19209289550781250e-07), RES(2.8963089153880411727e3, 9.9999992052983445585e-1)}, + {FN (cot), ARG(9.42443269378637893396e+00,5.0e-01), RES(-1.2715121175434189499e-3, -2.1639524637389326028e0)}, + {FN (cot), ARG(9.42443269378637893396e+00,-5.0e-01), RES(-1.2715121175434189499e-3, 2.1639524637389326028e0)}, + {FN (cot), ARG(-9.42443269378637893396e+00,5.0e-01), RES(1.2715121175434189499e-3, -2.1639524637389326028e0)}, + {FN (cot), ARG(-9.42443269378637893396e+00,-5.0e-01), RES(1.2715121175434189499e-3, 2.1639524637389326028e0)}, + {FN (cot), ARG(9.42443269378637893396e+00,1.0e+00), RES(-2.4999454374234132236e-4, -1.3130351721648674827e0)}, + {FN (cot), ARG(9.42443269378637893396e+00,-1.0e+00), RES(-2.4999454374234132236e-4, 1.3130351721648674827e0)}, + {FN (cot), ARG(-9.42443269378637893396e+00,1.0e+00), RES(2.4999454374234132236e-4, -1.3130351721648674827e0)}, + {FN (cot), ARG(-9.42443269378637893396e+00,-1.0e+00), RES(2.4999454374234132236e-4, 1.3130351721648674827e0)}, + {FN (cot), ARG(9.42443269378637893396e+00,2.0e+00), RES(-2.6247825506528575631e-5, -1.0373147113268752620e0)}, + {FN (cot), ARG(9.42443269378637893396e+00,-2.0e+00), RES(-2.6247825506528575631e-5, 1.0373147113268752620e0)}, + {FN (cot), ARG(-9.42443269378637893396e+00,2.0e+00), RES(2.6247825506528575631e-5, -1.0373147113268752620e0)}, + {FN (cot), ARG(-9.42443269378637893396e+00,-2.0e+00), RES(2.6247825506528575631e-5, 1.0373147113268752620e0)}, + {FN (cot), ARG(9.42512322775237976202e+00,0.0e+00), RES(2.8963092606611468657e3, 0.0)}, + {FN (cot), ARG(-9.42512322775237976202e+00,0.0e+00), RES(-2.8963092606611468657e3, 0.0)}, + {FN (cot), ARG(9.42512322775237976202e+00,1.19209289550781250e-07), RES(2.8963089153942050199e3, -9.9999992053409080205e-1)}, + {FN (cot), ARG(9.42512322775237976202e+00,-1.19209289550781250e-07), RES(2.8963089153942050199e3, 9.9999992053409080205e-1)}, + {FN (cot), ARG(-9.42512322775237976202e+00,1.19209289550781250e-07), RES(-2.8963089153942050199e3, -9.9999992053409080205e-1)}, + {FN (cot), ARG(-9.42512322775237976202e+00,-1.19209289550781250e-07), RES(-2.8963089153942050199e3, 9.9999992053409080205e-1)}, + {FN (cot), ARG(9.42512322775237976202e+00,5.0e-01), RES(1.2715121175407129542e-3, -2.1639524637389326068e0)}, + {FN (cot), ARG(9.42512322775237976202e+00,-5.0e-01), RES(1.2715121175407129542e-3, 2.1639524637389326068e0)}, + {FN (cot), ARG(-9.42512322775237976202e+00,5.0e-01), RES(-1.2715121175407129542e-3, -2.1639524637389326068e0)}, + {FN (cot), ARG(-9.42512322775237976202e+00,-5.0e-01), RES(-1.2715121175407129542e-3, 2.1639524637389326068e0)}, + {FN (cot), ARG(9.42512322775237976202e+00,1.0e+00), RES(2.4999454374180929074e-4, -1.3130351721648674832e0)}, + {FN (cot), ARG(9.42512322775237976202e+00,-1.0e+00), RES(2.4999454374180929074e-4, 1.3130351721648674832e0)}, + {FN (cot), ARG(-9.42512322775237976202e+00,1.0e+00), RES(-2.4999454374180929074e-4, -1.3130351721648674832e0)}, + {FN (cot), ARG(-9.42512322775237976202e+00,-1.0e+00), RES(-2.4999454374180929074e-4, 1.3130351721648674832e0)}, + {FN (cot), ARG(9.42512322775237976202e+00,2.0e+00), RES(2.6247825506472715712e-5, -1.0373147113268752621e0)}, + {FN (cot), ARG(9.42512322775237976202e+00,-2.0e+00), RES(2.6247825506472715712e-5, 1.0373147113268752621e0)}, + {FN (cot), ARG(-9.42512322775237976202e+00,2.0e+00), RES(-2.6247825506472715712e-5, -1.0373147113268752621e0)}, + {FN (cot), ARG(-9.42512322775237976202e+00,-2.0e+00), RES(-2.6247825506472715712e-5, 1.0373147113268752621e0)}, + {FN (arccsc), ARG(0.0e+00,1.19209289550781250e-07), RES(0, -1.6635532333438690979e1)}, + {FN (arccsc), ARG(0.0e+00,-1.19209289550781250e-07), RES(0, 1.6635532333438690979e1)}, + {FN (arccsc), ARG(0.0e+00,5.0e-01), RES(0, -1.4436354751788103425e0)}, + {FN (arccsc), ARG(0.0e+00,-5.0e-01), RES(0, 1.4436354751788103425e0)}, + {FN (arccsc), ARG(0.0e+00,1.0e+00), RES(0, -8.8137358701954302523e-1)}, + {FN (arccsc), ARG(0.0e+00,-1.0e+00), RES(0, 8.8137358701954302523e-1)}, + {FN (arccsc), ARG(0.0e+00,2.0e+00), RES(0, -4.8121182505960344750e-1)}, + {FN (arccsc), ARG(0.0e+00,-2.0e+00), RES(0, 4.8121182505960344750e-1)}, + {FN (arccsc), ARG(0.0e+00,8.3886080e+06), RES(0, -1.1920928955078096766e-7)}, + {FN (arccsc), ARG(0.0e+00,-8.3886080e+06), RES(0, 1.1920928955078096766e-7)}, + {FN (arccsc), ARG(1.19209289550781250e-07,0.0e+00), RES(1.5707963267948966192e0, -1.6635532333438683873e1)}, + {FN (arccsc), ARG(-1.19209289550781250e-07,0.0e+00), RES(-1.5707963267948966192e0, 1.6635532333438683873e1)}, + {FN (arccsc), ARG(1.19209289550781250e-07,1.19209289550781250e-07), RES(7.8539816339744120419e-1, -1.6288958743158714771e1)}, + {FN (arccsc), ARG(1.19209289550781250e-07,-1.19209289550781250e-07), RES(7.8539816339744120419e-1, 1.6288958743158714771e1)}, + {FN (arccsc), ARG(-1.19209289550781250e-07,1.19209289550781250e-07), RES(-7.8539816339744120419e-1, -1.6288958743158714771e1)}, + {FN (arccsc), ARG(-1.19209289550781250e-07,-1.19209289550781250e-07), RES(-7.8539816339744120419e-1, 1.6288958743158714771e1)}, + {FN (arccsc), ARG(1.19209289550781250e-07,5.0e-01), RES(2.1324805998799710740e-7, -1.4436354751787798371e0)}, + {FN (arccsc), ARG(1.19209289550781250e-07,-5.0e-01), RES(2.1324805998799710740e-7, 1.4436354751787798371e0)}, + {FN (arccsc), ARG(-1.19209289550781250e-07,5.0e-01), RES(-2.1324805998799710740e-7, -1.4436354751787798371e0)}, + {FN (arccsc), ARG(-1.19209289550781250e-07,-5.0e-01), RES(-2.1324805998799710740e-7, 1.4436354751787798371e0)}, + {FN (arccsc), ARG(1.19209289550781250e-07,1.0e+00), RES(8.4293697021787414719e-8, -8.8137358701953548879e-1)}, + {FN (arccsc), ARG(1.19209289550781250e-07,-1.0e+00), RES(8.4293697021787414719e-8, 8.8137358701953548879e-1)}, + {FN (arccsc), ARG(-1.19209289550781250e-07,1.0e+00), RES(-8.4293697021787414719e-8, -8.8137358701953548879e-1)}, + {FN (arccsc), ARG(-1.19209289550781250e-07,-1.0e+00), RES(-8.4293697021787414719e-8, 8.8137358701953548879e-1)}, + {FN (arccsc), ARG(1.19209289550781250e-07,2.0e+00), RES(2.6656007498500149811e-8, -4.8121182505960201756e-1)}, + {FN (arccsc), ARG(1.19209289550781250e-07,-2.0e+00), RES(2.6656007498500149811e-8, 4.8121182505960201756e-1)}, + {FN (arccsc), ARG(-1.19209289550781250e-07,2.0e+00), RES(-2.6656007498500149811e-8, -4.8121182505960201756e-1)}, + {FN (arccsc), ARG(-1.19209289550781250e-07,-2.0e+00), RES(-2.6656007498500149811e-8, 4.8121182505960201756e-1)}, + {FN (arccsc), ARG(1.19209289550781250e-07,8.3886080e+06), RES(1.6940658945085886411e-21, -1.1920928955078096766e-7)}, + {FN (arccsc), ARG(1.19209289550781250e-07,-8.3886080e+06), RES(1.6940658945085886411e-21, 1.1920928955078096766e-7)}, + {FN (arccsc), ARG(-1.19209289550781250e-07,8.3886080e+06), RES(-1.6940658945085886411e-21, -1.1920928955078096766e-7)}, + {FN (arccsc), ARG(-1.19209289550781250e-07,-8.3886080e+06), RES(-1.6940658945085886411e-21, 1.1920928955078096766e-7)}, + {FN (arccsc), ARG(5.0e-01,0.0e+00), RES(1.5707963267948966192e0, -1.3169578969248167086e0)}, + {FN (arccsc), ARG(-5.0e-01,0.0e+00), RES(-1.5707963267948966192e0, 1.3169578969248167086e0)}, + {FN (arccsc), ARG(5.0e-01,1.19209289550781250e-07), RES(1.5707960514928349710e0, -1.3169578969247948296e0)}, + {FN (arccsc), ARG(5.0e-01,-1.19209289550781250e-07), RES(1.5707960514928349710e0, 1.3169578969247948296e0)}, + {FN (arccsc), ARG(-5.0e-01,1.19209289550781250e-07), RES(-1.5707960514928349710e0, -1.3169578969247948296e0)}, + {FN (arccsc), ARG(-5.0e-01,-1.19209289550781250e-07), RES(-1.5707960514928349710e0, 1.3169578969247948296e0)}, + {FN (arccsc), ARG(5.0e-01,5.0e-01), RES(6.6623943249251525510e-1, -1.0612750619050356520e0)}, + {FN (arccsc), ARG(5.0e-01,-5.0e-01), RES(6.6623943249251525510e-1, 1.0612750619050356520e0)}, + {FN (arccsc), ARG(-5.0e-01,5.0e-01), RES(-6.6623943249251525510e-1, -1.0612750619050356520e0)}, + {FN (arccsc), ARG(-5.0e-01,-5.0e-01), RES(-6.6623943249251525510e-1, 1.0612750619050356520e0)}, + {FN (arccsc), ARG(5.0e-01,1.0e+00), RES(3.1122579724476109533e-1, -7.6388434595371104541e-1)}, + {FN (arccsc), ARG(5.0e-01,-1.0e+00), RES(3.1122579724476109533e-1, 7.6388434595371104541e-1)}, + {FN (arccsc), ARG(-5.0e-01,1.0e+00), RES(-3.1122579724476109533e-1, -7.6388434595371104541e-1)}, + {FN (arccsc), ARG(-5.0e-01,-1.0e+00), RES(-3.1122579724476109533e-1, 7.6388434595371104541e-1)}, + {FN (arccsc), ARG(5.0e-01,2.0e+00), RES(1.0654050295275703990e-1, -4.5717847686917515748e-1)}, + {FN (arccsc), ARG(5.0e-01,-2.0e+00), RES(1.0654050295275703990e-1, 4.5717847686917515748e-1)}, + {FN (arccsc), ARG(-5.0e-01,2.0e+00), RES(-1.0654050295275703990e-1, -4.5717847686917515748e-1)}, + {FN (arccsc), ARG(-5.0e-01,-2.0e+00), RES(-1.0654050295275703990e-1, 4.5717847686917515748e-1)}, + {FN (arccsc), ARG(5.0e-01,8.3886080e+06), RES(7.1054273576009261281e-15, -1.1920928955078054414e-7)}, + {FN (arccsc), ARG(5.0e-01,-8.3886080e+06), RES(7.1054273576009261281e-15, 1.1920928955078054414e-7)}, + {FN (arccsc), ARG(-5.0e-01,8.3886080e+06), RES(-7.1054273576009261281e-15, -1.1920928955078054414e-7)}, + {FN (arccsc), ARG(-5.0e-01,-8.3886080e+06), RES(-7.1054273576009261281e-15, 1.1920928955078054414e-7)}, + {FN (arccsc), ARG(1.0e+00,0.0e+00), RES(1.5707963267948966192e0, 0.0)}, + {FN (arccsc), ARG(-1.0e+00,0.0e+00), RES(-1.5707963267948966192e0, 0.0)}, + {FN (arccsc), ARG(1.0e+00,1.19209289550781250e-07), RES(1.5704510597947457801e0, -3.4526696585164602772e-4)}, + {FN (arccsc), ARG(1.0e+00,-1.19209289550781250e-07), RES(1.5704510597947457801e0, 3.4526696585164602772e-4)}, + {FN (arccsc), ARG(-1.0e+00,1.19209289550781250e-07), RES(-1.5704510597947457801e0, -3.4526696585164602772e-4)}, + {FN (arccsc), ARG(-1.0e+00,-1.19209289550781250e-07), RES(-1.5704510597947457801e0, 3.4526696585164602772e-4)}, + {FN (arccsc), ARG(1.0e+00,5.0e-01), RES(7.7308635671950473342e-1, -5.3321829058411214108e-1)}, + {FN (arccsc), ARG(1.0e+00,-5.0e-01), RES(7.7308635671950473342e-1, 5.3321829058411214108e-1)}, + {FN (arccsc), ARG(-1.0e+00,5.0e-01), RES(-7.7308635671950473342e-1, -5.3321829058411214108e-1)}, + {FN (arccsc), ARG(-1.0e+00,-5.0e-01), RES(-7.7308635671950473342e-1, 5.3321829058411214108e-1)}, + {FN (arccsc), ARG(1.0e+00,1.0e+00), RES(4.5227844715119068206e-1, -5.3063753095251782602e-1)}, + {FN (arccsc), ARG(1.0e+00,-1.0e+00), RES(4.5227844715119068206e-1, 5.3063753095251782602e-1)}, + {FN (arccsc), ARG(-1.0e+00,1.0e+00), RES(-4.5227844715119068206e-1, -5.3063753095251782602e-1)}, + {FN (arccsc), ARG(-1.0e+00,-1.0e+00), RES(-4.5227844715119068206e-1, 5.3063753095251782602e-1)}, + {FN (arccsc), ARG(1.0e+00,2.0e+00), RES(1.8631805410781552582e-1, -3.9656823011232897892e-1)}, + {FN (arccsc), ARG(1.0e+00,-2.0e+00), RES(1.8631805410781552582e-1, 3.9656823011232897892e-1)}, + {FN (arccsc), ARG(-1.0e+00,2.0e+00), RES(-1.8631805410781552582e-1, -3.9656823011232897892e-1)}, + {FN (arccsc), ARG(-1.0e+00,-2.0e+00), RES(-1.8631805410781552582e-1, 3.9656823011232897892e-1)}, + {FN (arccsc), ARG(1.0e+00,8.3886080e+06), RES(1.4210854715201700795e-14, -1.1920928955077927359e-7)}, + {FN (arccsc), ARG(1.0e+00,-8.3886080e+06), RES(1.4210854715201700795e-14, 1.1920928955077927359e-7)}, + {FN (arccsc), ARG(-1.0e+00,8.3886080e+06), RES(-1.4210854715201700795e-14, -1.1920928955077927359e-7)}, + {FN (arccsc), ARG(-1.0e+00,-8.3886080e+06), RES(-1.4210854715201700795e-14, 1.1920928955077927359e-7)}, + {FN (arccsc), ARG(2.0e+00,0.0e+00), RES(5.2359877559829887308e-1, 0.0)}, + {FN (arccsc), ARG(-2.0e+00,0.0e+00), RES(-5.2359877559829887308e-1, 0.0)}, + {FN (arccsc), ARG(2.0e+00,1.19209289550781250e-07), RES(5.2359877559829648006e-1, -3.4412757706023621662e-8)}, + {FN (arccsc), ARG(2.0e+00,-1.19209289550781250e-07), RES(5.2359877559829648006e-1, 3.4412757706023621662e-8)}, + {FN (arccsc), ARG(-2.0e+00,1.19209289550781250e-07), RES(-5.2359877559829648006e-1, -3.4412757706023621662e-8)}, + {FN (arccsc), ARG(-2.0e+00,-1.19209289550781250e-07), RES(-5.2359877559829648006e-1, 3.4412757706023621662e-8)}, + {FN (arccsc), ARG(2.0e+00,5.0e-01), RES(4.8530734047334251250e-1, -1.3261586085051183885e-1)}, + {FN (arccsc), ARG(2.0e+00,-5.0e-01), RES(4.8530734047334251250e-1, 1.3261586085051183885e-1)}, + {FN (arccsc), ARG(-2.0e+00,5.0e-01), RES(-4.8530734047334251250e-1, -1.3261586085051183885e-1)}, + {FN (arccsc), ARG(-2.0e+00,-5.0e-01), RES(-4.8530734047334251250e-1, 1.3261586085051183885e-1)}, + {FN (arccsc), ARG(2.0e+00,1.0e+00), RES(4.0158639166780606828e-1, -2.1561241855582964497e-1)}, + {FN (arccsc), ARG(2.0e+00,-1.0e+00), RES(4.0158639166780606828e-1, 2.1561241855582964497e-1)}, + {FN (arccsc), ARG(-2.0e+00,1.0e+00), RES(-4.0158639166780606828e-1, -2.1561241855582964497e-1)}, + {FN (arccsc), ARG(-2.0e+00,-1.0e+00), RES(-4.0158639166780606828e-1, 2.1561241855582964497e-1)}, + {FN (arccsc), ARG(2.0e+00,2.0e+00), RES(2.4452216513554014646e-1, -2.5489557334055081773e-1)}, + {FN (arccsc), ARG(2.0e+00,-2.0e+00), RES(2.4452216513554014646e-1, 2.5489557334055081773e-1)}, + {FN (arccsc), ARG(-2.0e+00,2.0e+00), RES(-2.4452216513554014646e-1, -2.5489557334055081773e-1)}, + {FN (arccsc), ARG(-2.0e+00,-2.0e+00), RES(-2.4452216513554014646e-1, 2.5489557334055081773e-1)}, + {FN (arccsc), ARG(2.0e+00,8.3886080e+06), RES(2.8421709430402189899e-14, -1.1920928955077419139e-7)}, + {FN (arccsc), ARG(2.0e+00,-8.3886080e+06), RES(2.8421709430402189899e-14, 1.1920928955077419139e-7)}, + {FN (arccsc), ARG(-2.0e+00,8.3886080e+06), RES(-2.8421709430402189899e-14, -1.1920928955077419139e-7)}, + {FN (arccsc), ARG(-2.0e+00,-8.3886080e+06), RES(-2.8421709430402189899e-14, 1.1920928955077419139e-7)}, + {FN (arccsc), ARG(8.3886080e+06,0.0e+00), RES(1.1920928955078153234e-7, 0.0)}, + {FN (arccsc), ARG(-8.3886080e+06,0.0e+00), RES(-1.1920928955078153234e-7, 0.0)}, + {FN (arccsc), ARG(8.3886080e+06,1.19209289550781250e-07), RES(1.1920928955078153234e-7, -1.6940658945086127152e-21)}, + {FN (arccsc), ARG(8.3886080e+06,-1.19209289550781250e-07), RES(1.1920928955078153234e-7, 1.6940658945086127152e-21)}, + {FN (arccsc), ARG(-8.3886080e+06,1.19209289550781250e-07), RES(-1.1920928955078153234e-7, -1.6940658945086127152e-21)}, + {FN (arccsc), ARG(-8.3886080e+06,-1.19209289550781250e-07), RES(-1.1920928955078153234e-7, 1.6940658945086127152e-21)}, + {FN (arccsc), ARG(8.3886080e+06,5.0e-01), RES(1.1920928955078110883e-7, -7.1054273576010271023e-15)}, + {FN (arccsc), ARG(8.3886080e+06,-5.0e-01), RES(1.1920928955078110883e-7, 7.1054273576010271023e-15)}, + {FN (arccsc), ARG(-8.3886080e+06,5.0e-01), RES(-1.1920928955078110883e-7, -7.1054273576010271023e-15)}, + {FN (arccsc), ARG(-8.3886080e+06,-5.0e-01), RES(-1.1920928955078110883e-7, 7.1054273576010271023e-15)}, + {FN (arccsc), ARG(8.3886080e+06,1.0e+00), RES(1.1920928955077983828e-7, -1.4210854715201902743e-14)}, + {FN (arccsc), ARG(8.3886080e+06,-1.0e+00), RES(1.1920928955077983828e-7, 1.4210854715201902743e-14)}, + {FN (arccsc), ARG(-8.3886080e+06,1.0e+00), RES(-1.1920928955077983828e-7, -1.4210854715201902743e-14)}, + {FN (arccsc), ARG(-8.3886080e+06,-1.0e+00), RES(-1.1920928955077983828e-7, 1.4210854715201902743e-14)}, + {FN (arccsc), ARG(8.3886080e+06,2.0e+00), RES(1.1920928955077475608e-7, -2.8421709430402593796e-14)}, + {FN (arccsc), ARG(8.3886080e+06,-2.0e+00), RES(1.1920928955077475608e-7, 2.8421709430402593796e-14)}, + {FN (arccsc), ARG(-8.3886080e+06,2.0e+00), RES(-1.1920928955077475608e-7, -2.8421709430402593796e-14)}, + {FN (arccsc), ARG(-8.3886080e+06,-2.0e+00), RES(-1.1920928955077475608e-7, 2.8421709430402593796e-14)}, + {FN (arccsc), ARG(8.3886080e+06,8.3886080e+06), RES(5.9604644775390554414e-8, -5.9604644775390695586e-8)}, + {FN (arccsc), ARG(8.3886080e+06,-8.3886080e+06), RES(5.9604644775390554414e-8, 5.9604644775390695586e-8)}, + {FN (arccsc), ARG(-8.3886080e+06,8.3886080e+06), RES(-5.9604644775390554414e-8, -5.9604644775390695586e-8)}, + {FN (arccsc), ARG(-8.3886080e+06,-8.3886080e+06), RES(-5.9604644775390554414e-8, 5.9604644775390695586e-8)}, + {FN (arcsec), ARG(0.0e+00,1.19209289550781250e-07), RES(1.5707963267948966192e0, 1.6635532333438690979e1)}, + {FN (arcsec), ARG(0.0e+00,-1.19209289550781250e-07), RES(1.5707963267948966192e0, -1.6635532333438690979e1)}, + {FN (arcsec), ARG(0.0e+00,5.0e-01), RES(1.5707963267948966192e0, 1.4436354751788103425e0)}, + {FN (arcsec), ARG(0.0e+00,-5.0e-01), RES(1.5707963267948966192e0, -1.4436354751788103425e0)}, + {FN (arcsec), ARG(0.0e+00,1.0e+00), RES(1.5707963267948966192e0, 8.8137358701954302523e-1)}, + {FN (arcsec), ARG(0.0e+00,-1.0e+00), RES(1.5707963267948966192e0, -8.8137358701954302523e-1)}, + {FN (arcsec), ARG(0.0e+00,2.0e+00), RES(1.5707963267948966192e0, 4.8121182505960344750e-1)}, + {FN (arcsec), ARG(0.0e+00,-2.0e+00), RES(1.5707963267948966192e0, -4.8121182505960344750e-1)}, + {FN (arcsec), ARG(0.0e+00,8.3886080e+06), RES(1.5707963267948966192e0, 1.1920928955078096766e-7)}, + {FN (arcsec), ARG(0.0e+00,-8.3886080e+06), RES(1.5707963267948966192e0, -1.1920928955078096766e-7)}, + {FN (arcsec), ARG(1.19209289550781250e-07,0.0e+00), RES(0, 1.6635532333438683873e1)}, + {FN (arcsec), ARG(-1.19209289550781250e-07,0.0e+00), RES(3.1415926535897932385e0, -1.6635532333438683873e1)}, + {FN (arcsec), ARG(1.19209289550781250e-07,1.19209289550781250e-07), RES(7.8539816339745541504e-1, 1.6288958743158714771e1)}, + {FN (arcsec), ARG(1.19209289550781250e-07,-1.19209289550781250e-07), RES(7.8539816339745541504e-1, -1.6288958743158714771e1)}, + {FN (arcsec), ARG(-1.19209289550781250e-07,1.19209289550781250e-07), RES(2.3561944901923378234e0, 1.6288958743158714771e1)}, + {FN (arcsec), ARG(-1.19209289550781250e-07,-1.19209289550781250e-07), RES(2.3561944901923378234e0, -1.6288958743158714771e1)}, + {FN (arcsec), ARG(1.19209289550781250e-07,5.0e-01), RES(1.5707961135468366312e0, 1.4436354751787798371e0)}, + {FN (arcsec), ARG(1.19209289550781250e-07,-5.0e-01), RES(1.5707961135468366312e0, -1.4436354751787798371e0)}, + {FN (arcsec), ARG(-1.19209289550781250e-07,5.0e-01), RES(1.5707965400429566072e0, 1.4436354751787798371e0)}, + {FN (arcsec), ARG(-1.19209289550781250e-07,-5.0e-01), RES(1.5707965400429566072e0, -1.4436354751787798371e0)}, + {FN (arcsec), ARG(1.19209289550781250e-07,1.0e+00), RES(1.5707962425011995974e0, 8.8137358701953548879e-1)}, + {FN (arcsec), ARG(1.19209289550781250e-07,-1.0e+00), RES(1.5707962425011995974e0, -8.8137358701953548879e-1)}, + {FN (arcsec), ARG(-1.19209289550781250e-07,1.0e+00), RES(1.5707964110885936410e0, 8.8137358701953548879e-1)}, + {FN (arcsec), ARG(-1.19209289550781250e-07,-1.0e+00), RES(1.5707964110885936410e0, -8.8137358701953548879e-1)}, + {FN (arcsec), ARG(1.19209289550781250e-07,2.0e+00), RES(1.5707963001388891207e0, 4.8121182505960201756e-1)}, + {FN (arcsec), ARG(1.19209289550781250e-07,-2.0e+00), RES(1.5707963001388891207e0, -4.8121182505960201756e-1)}, + {FN (arcsec), ARG(-1.19209289550781250e-07,2.0e+00), RES(1.5707963534509041177e0, 4.8121182505960201756e-1)}, + {FN (arcsec), ARG(-1.19209289550781250e-07,-2.0e+00), RES(1.5707963534509041177e0, -4.8121182505960201756e-1)}, + {FN (arcsec), ARG(1.19209289550781250e-07,8.3886080e+06), RES(1.5707963267948966192e0, 1.1920928955078096766e-7)}, + {FN (arcsec), ARG(1.19209289550781250e-07,-8.3886080e+06), RES(1.5707963267948966192e0, -1.1920928955078096766e-7)}, + {FN (arcsec), ARG(-1.19209289550781250e-07,8.3886080e+06), RES(1.5707963267948966192e0, 1.1920928955078096766e-7)}, + {FN (arcsec), ARG(-1.19209289550781250e-07,-8.3886080e+06), RES(1.5707963267948966192e0, -1.1920928955078096766e-7)}, + {FN (arcsec), ARG(5.0e-01,0.0e+00), RES(0, 1.3169578969248167086e0)}, + {FN (arcsec), ARG(-5.0e-01,0.0e+00), RES(3.1415926535897932385e0, -1.3169578969248167086e0)}, + {FN (arcsec), ARG(5.0e-01,1.19209289550781250e-07), RES(2.7530206164818516969e-7, 1.3169578969247948296e0)}, + {FN (arcsec), ARG(5.0e-01,-1.19209289550781250e-07), RES(2.7530206164818516969e-7, -1.3169578969247948296e0)}, + {FN (arcsec), ARG(-5.0e-01,1.19209289550781250e-07), RES(3.1415923782877315903e0, 1.3169578969247948296e0)}, + {FN (arcsec), ARG(-5.0e-01,-1.19209289550781250e-07), RES(3.1415923782877315903e0, -1.3169578969247948296e0)}, + {FN (arcsec), ARG(5.0e-01,5.0e-01), RES(9.0455689430238136413e-1, 1.0612750619050356520e0)}, + {FN (arcsec), ARG(5.0e-01,-5.0e-01), RES(9.0455689430238136413e-1, -1.0612750619050356520e0)}, + {FN (arcsec), ARG(-5.0e-01,5.0e-01), RES(2.2370357592874118743e0, 1.0612750619050356520e0)}, + {FN (arcsec), ARG(-5.0e-01,-5.0e-01), RES(2.2370357592874118743e0, -1.0612750619050356520e0)}, + {FN (arcsec), ARG(5.0e-01,1.0e+00), RES(1.2595705295501355239e0, 7.6388434595371104541e-1)}, + {FN (arcsec), ARG(5.0e-01,-1.0e+00), RES(1.2595705295501355239e0, -7.6388434595371104541e-1)}, + {FN (arcsec), ARG(-5.0e-01,1.0e+00), RES(1.8820221240396577146e0, 7.6388434595371104541e-1)}, + {FN (arcsec), ARG(-5.0e-01,-1.0e+00), RES(1.8820221240396577146e0, -7.6388434595371104541e-1)}, + {FN (arcsec), ARG(5.0e-01,2.0e+00), RES(1.4642558238421395793e0, 4.5717847686917515748e-1)}, + {FN (arcsec), ARG(5.0e-01,-2.0e+00), RES(1.4642558238421395793e0, -4.5717847686917515748e-1)}, + {FN (arcsec), ARG(-5.0e-01,2.0e+00), RES(1.6773368297476536591e0, 4.5717847686917515748e-1)}, + {FN (arcsec), ARG(-5.0e-01,-2.0e+00), RES(1.6773368297476536591e0, -4.5717847686917515748e-1)}, + {FN (arcsec), ARG(5.0e-01,8.3886080e+06), RES(1.5707963267948895138e0, 1.1920928955078054414e-7)}, + {FN (arcsec), ARG(5.0e-01,-8.3886080e+06), RES(1.5707963267948895138e0, -1.1920928955078054414e-7)}, + {FN (arcsec), ARG(-5.0e-01,8.3886080e+06), RES(1.5707963267949037247e0, 1.1920928955078054414e-7)}, + {FN (arcsec), ARG(-5.0e-01,-8.3886080e+06), RES(1.5707963267949037247e0, -1.1920928955078054414e-7)}, + {FN (arcsec), ARG(1.0e+00,0.0e+00), RES(0e0, 0.0)}, + {FN (arcsec), ARG(-1.0e+00,0.0e+00), RES(3.1415926535897932385e0, 0.0)}, + {FN (arcsec), ARG(1.0e+00,1.19209289550781250e-07), RES(3.4526700015083915182e-4, 3.4526696585164602772e-4)}, + {FN (arcsec), ARG(1.0e+00,-1.19209289550781250e-07), RES(3.4526700015083915182e-4, -3.4526696585164602772e-4)}, + {FN (arcsec), ARG(-1.0e+00,1.19209289550781250e-07), RES(3.1412473865896423993e0, 3.4526696585164602772e-4)}, + {FN (arcsec), ARG(-1.0e+00,-1.19209289550781250e-07), RES(3.1412473865896423993e0, -3.4526696585164602772e-4)}, + {FN (arcsec), ARG(1.0e+00,5.0e-01), RES(7.9770997007539188581e-1, 5.3321829058411214108e-1)}, + {FN (arcsec), ARG(1.0e+00,-5.0e-01), RES(7.9770997007539188581e-1, -5.3321829058411214108e-1)}, + {FN (arcsec), ARG(-1.0e+00,5.0e-01), RES(2.3438826835144013527e0, 5.3321829058411214108e-1)}, + {FN (arcsec), ARG(-1.0e+00,-5.0e-01), RES(2.3438826835144013527e0, -5.3321829058411214108e-1)}, + {FN (arcsec), ARG(1.0e+00,1.0e+00), RES(1.1185178796437059372e0, 5.3063753095251782602e-1)}, + {FN (arcsec), ARG(1.0e+00,-1.0e+00), RES(1.1185178796437059372e0, -5.3063753095251782602e-1)}, + {FN (arcsec), ARG(-1.0e+00,1.0e+00), RES(2.0230747739460873013e0, 5.3063753095251782602e-1)}, + {FN (arcsec), ARG(-1.0e+00,-1.0e+00), RES(2.0230747739460873013e0, -5.3063753095251782602e-1)}, + {FN (arcsec), ARG(1.0e+00,2.0e+00), RES(1.3844782726870810934e0, 3.9656823011232897892e-1)}, + {FN (arcsec), ARG(1.0e+00,-2.0e+00), RES(1.3844782726870810934e0, -3.9656823011232897892e-1)}, + {FN (arcsec), ARG(-1.0e+00,2.0e+00), RES(1.7571143809027121451e0, 3.9656823011232897892e-1)}, + {FN (arcsec), ARG(-1.0e+00,-2.0e+00), RES(1.7571143809027121451e0, -3.9656823011232897892e-1)}, + {FN (arcsec), ARG(1.0e+00,8.3886080e+06), RES(1.5707963267948824084e0, 1.1920928955077927359e-7)}, + {FN (arcsec), ARG(1.0e+00,-8.3886080e+06), RES(1.5707963267948824084e0, -1.1920928955077927359e-7)}, + {FN (arcsec), ARG(-1.0e+00,8.3886080e+06), RES(1.5707963267949108301e0, 1.1920928955077927359e-7)}, + {FN (arcsec), ARG(-1.0e+00,-8.3886080e+06), RES(1.5707963267949108301e0, -1.1920928955077927359e-7)}, + {FN (arcsec), ARG(2.0e+00,0.0e+00), RES(1.0471975511965977462e0, 0.0)}, + {FN (arcsec), ARG(-2.0e+00,0.0e+00), RES(2.0943951023931954923e0, 0.0)}, + {FN (arcsec), ARG(2.0e+00,1.19209289550781250e-07), RES(1.0471975511966001392e0, 3.4412757706023621662e-8)}, + {FN (arcsec), ARG(2.0e+00,-1.19209289550781250e-07), RES(1.0471975511966001392e0, -3.4412757706023621662e-8)}, + {FN (arcsec), ARG(-2.0e+00,1.19209289550781250e-07), RES(2.0943951023931930993e0, 3.4412757706023621662e-8)}, + {FN (arcsec), ARG(-2.0e+00,-1.19209289550781250e-07), RES(2.0943951023931930993e0, -3.4412757706023621662e-8)}, + {FN (arcsec), ARG(2.0e+00,5.0e-01), RES(1.0854889863215541067e0, 1.3261586085051183885e-1)}, + {FN (arcsec), ARG(2.0e+00,-5.0e-01), RES(1.0854889863215541067e0, -1.3261586085051183885e-1)}, + {FN (arcsec), ARG(-2.0e+00,5.0e-01), RES(2.0561036672682391317e0, 1.3261586085051183885e-1)}, + {FN (arcsec), ARG(-2.0e+00,-5.0e-01), RES(2.0561036672682391317e0, -1.3261586085051183885e-1)}, + {FN (arcsec), ARG(2.0e+00,1.0e+00), RES(1.1692099351270905509e0, 2.1561241855582964497e-1)}, + {FN (arcsec), ARG(2.0e+00,-1.0e+00), RES(1.1692099351270905509e0, -2.1561241855582964497e-1)}, + {FN (arcsec), ARG(-2.0e+00,1.0e+00), RES(1.9723827184627026875e0, 2.1561241855582964497e-1)}, + {FN (arcsec), ARG(-2.0e+00,-1.0e+00), RES(1.9723827184627026875e0, -2.1561241855582964497e-1)}, + {FN (arcsec), ARG(2.0e+00,2.0e+00), RES(1.3262741616593564728e0, 2.5489557334055081773e-1)}, + {FN (arcsec), ARG(2.0e+00,-2.0e+00), RES(1.3262741616593564728e0, -2.5489557334055081773e-1)}, + {FN (arcsec), ARG(-2.0e+00,2.0e+00), RES(1.8153184919304367657e0, 2.5489557334055081773e-1)}, + {FN (arcsec), ARG(-2.0e+00,-2.0e+00), RES(1.8153184919304367657e0, -2.5489557334055081773e-1)}, + {FN (arcsec), ARG(2.0e+00,8.3886080e+06), RES(1.5707963267948681975e0, 1.1920928955077419139e-7)}, + {FN (arcsec), ARG(2.0e+00,-8.3886080e+06), RES(1.5707963267948681975e0, -1.1920928955077419139e-7)}, + {FN (arcsec), ARG(-2.0e+00,8.3886080e+06), RES(1.5707963267949250409e0, 1.1920928955077419139e-7)}, + {FN (arcsec), ARG(-2.0e+00,-8.3886080e+06), RES(1.5707963267949250409e0, -1.1920928955077419139e-7)}, + {FN (arcsec), ARG(8.3886080e+06,0.0e+00), RES(1.5707962075856070684e0, 0.0)}, + {FN (arcsec), ARG(-8.3886080e+06,0.0e+00), RES(1.570796446004186170e0, 0.0)}, + {FN (arcsec), ARG(8.3886080e+06,1.19209289550781250e-07), RES(1.5707962075856070684e0, 1.6940658945086127152e-21)}, + {FN (arcsec), ARG(8.3886080e+06,-1.19209289550781250e-07), RES(1.5707962075856070684e0, -1.6940658945086127152e-21)}, + {FN (arcsec), ARG(-8.3886080e+06,1.19209289550781250e-07), RES(1.570796446004186170e0, 1.6940658945086127152e-21)}, + {FN (arcsec), ARG(-8.3886080e+06,-1.19209289550781250e-07), RES(1.570796446004186170e0, -1.6940658945086127152e-21)}, + {FN (arcsec), ARG(8.3886080e+06,5.0e-01), RES(1.5707962075856070685e0, 7.1054273576010271023e-15)}, + {FN (arcsec), ARG(8.3886080e+06,-5.0e-01), RES(1.5707962075856070685e0, -7.1054273576010271023e-15)}, + {FN (arcsec), ARG(-8.3886080e+06,5.0e-01), RES(1.570796446004186170e0, 7.1054273576010271023e-15)}, + {FN (arcsec), ARG(-8.3886080e+06,-5.0e-01), RES(1.570796446004186170e0, -7.1054273576010271023e-15)}, + {FN (arcsec), ARG(8.3886080e+06,1.0e+00), RES(1.5707962075856070685e0, 1.4210854715201902743e-14)}, + {FN (arcsec), ARG(8.3886080e+06,-1.0e+00), RES(1.5707962075856070685e0, -1.4210854715201902743e-14)}, + {FN (arcsec), ARG(-8.3886080e+06,1.0e+00), RES(1.570796446004186170e0, 1.4210854715201902743e-14)}, + {FN (arcsec), ARG(-8.3886080e+06,-1.0e+00), RES(1.570796446004186170e0, -1.4210854715201902743e-14)}, + {FN (arcsec), ARG(8.3886080e+06,2.0e+00), RES(1.5707962075856070685e0, 2.8421709430402593796e-14)}, + {FN (arcsec), ARG(8.3886080e+06,-2.0e+00), RES(1.5707962075856070685e0, -2.8421709430402593796e-14)}, + {FN (arcsec), ARG(-8.3886080e+06,2.0e+00), RES(1.570796446004186170e0, 2.8421709430402593796e-14)}, + {FN (arcsec), ARG(-8.3886080e+06,-2.0e+00), RES(1.570796446004186170e0, -2.8421709430402593796e-14)}, + {FN (arcsec), ARG(8.3886080e+06,8.3886080e+06), RES(1.5707962671902518438e0, 5.9604644775390695586e-8)}, + {FN (arcsec), ARG(8.3886080e+06,-8.3886080e+06), RES(1.5707962671902518438e0, -5.9604644775390695586e-8)}, + {FN (arcsec), ARG(-8.3886080e+06,8.3886080e+06), RES(1.5707963863995413946e0, 5.9604644775390695586e-8)}, + {FN (arcsec), ARG(-8.3886080e+06,-8.3886080e+06), RES(1.5707963863995413946e0, -5.9604644775390695586e-8)}, + {FN (arccot), ARG(0.0e+00,1.19209289550781250e-07), RES(-1.5707963267948966192e0, -1.1920928955078181469e-7)}, + {FN (arccot), ARG(0.0e+00,-1.19209289550781250e-07), RES(1.5707963267948966192e0, 1.1920928955078181469e-7)}, + {FN (arccot), ARG(0.0e+00,5.0e-01), RES(-1.5707963267948966192e0, -5.4930614433405484570e-1)}, + {FN (arccot), ARG(0.0e+00,-5.0e-01), RES(1.5707963267948966192e0, 5.4930614433405484570e-1)}, + {FN (arccot), ARG(0.0e+00,2.0e+00), RES(0, -5.4930614433405484570e-1)}, + {FN (arccot), ARG(0.0e+00,-2.0e+00), RES(0, 5.4930614433405484570e-1)}, + {FN (arccot), ARG(0.0e+00,8.3886080e+06), RES(0, -1.1920928955078181469e-7)}, + {FN (arccot), ARG(0.0e+00,-8.3886080e+06), RES(0, 1.1920928955078181469e-7)}, + {FN (arccot), ARG(1.19209289550781250e-07,0.0e+00), RES(1.5707962075856070685e0, 0.0)}, + {FN (arccot), ARG(-1.19209289550781250e-07,0.0e+00), RES(-1.5707962075856070685e0, 0.0)}, + {FN (arccot), ARG(1.19209289550781250e-07,1.19209289550781250e-07), RES(1.5707962075856070684e0, -1.1920928955078012062e-7)}, + {FN (arccot), ARG(1.19209289550781250e-07,-1.19209289550781250e-07), RES(1.5707962075856070684e0, 1.1920928955078012062e-7)}, + {FN (arccot), ARG(-1.19209289550781250e-07,1.19209289550781250e-07), RES(-1.5707962075856070684e0, -1.1920928955078012062e-7)}, + {FN (arccot), ARG(-1.19209289550781250e-07,-1.19209289550781250e-07), RES(-1.5707962075856070684e0, 1.1920928955078012062e-7)}, + {FN (arccot), ARG(1.19209289550781250e-07,5.0e-01), RES(1.5707961678491772182e0, -5.4930614433404221383e-1)}, + {FN (arccot), ARG(1.19209289550781250e-07,-5.0e-01), RES(1.5707961678491772182e0, 5.4930614433404221383e-1)}, + {FN (arccot), ARG(-1.19209289550781250e-07,5.0e-01), RES(-1.5707961678491772182e0, -5.4930614433404221383e-1)}, + {FN (arccot), ARG(-1.19209289550781250e-07,-5.0e-01), RES(-1.5707961678491772182e0, 5.4930614433404221383e-1)}, + {FN (arccot), ARG(1.19209289550781250e-07,1.0e+00), RES(7.8539813359512592192e-1, -8.3177661667193446012e0)}, + {FN (arccot), ARG(1.19209289550781250e-07,-1.0e+00), RES(7.8539813359512592192e-1, 8.3177661667193446012e0)}, + {FN (arccot), ARG(-1.19209289550781250e-07,1.0e+00), RES(-7.8539813359512592192e-1, -8.3177661667193446012e0)}, + {FN (arccot), ARG(-1.19209289550781250e-07,-1.0e+00), RES(-7.8539813359512592192e-1, 8.3177661667193446012e0)}, + {FN (arccot), ARG(1.19209289550781250e-07,2.0e+00), RES(3.9736429850260144780e-8, -5.4930614433405168773e-1)}, + {FN (arccot), ARG(1.19209289550781250e-07,-2.0e+00), RES(3.9736429850260144780e-8, 5.4930614433405168773e-1)}, + {FN (arccot), ARG(-1.19209289550781250e-07,2.0e+00), RES(-3.9736429850260144780e-8, -5.4930614433405168773e-1)}, + {FN (arccot), ARG(-1.19209289550781250e-07,-2.0e+00), RES(-3.9736429850260144780e-8, 5.4930614433405168773e-1)}, + {FN (arccot), ARG(1.19209289550781250e-07,8.3886080e+06), RES(1.6940658945086247523e-21, -1.1920928955078181469e-7)}, + {FN (arccot), ARG(1.19209289550781250e-07,-8.3886080e+06), RES(1.6940658945086247523e-21, 1.1920928955078181469e-7)}, + {FN (arccot), ARG(-1.19209289550781250e-07,8.3886080e+06), RES(-1.6940658945086247523e-21, -1.1920928955078181469e-7)}, + {FN (arccot), ARG(-1.19209289550781250e-07,-8.3886080e+06), RES(-1.6940658945086247523e-21, 1.1920928955078181469e-7)}, + {FN (arccot), ARG(5.0e-01,0.0e+00), RES(1.1071487177940905030e0, 0.0)}, + {FN (arccot), ARG(-5.0e-01,0.0e+00), RES(-1.1071487177940905030e0, 0.0)}, + {FN (arccot), ARG(5.0e-01,1.19209289550781250e-07), RES(1.1071487177940859555e0, -9.5367431640625072280e-8)}, + {FN (arccot), ARG(5.0e-01,-1.19209289550781250e-07), RES(1.1071487177940859555e0, 9.5367431640625072280e-8)}, + {FN (arccot), ARG(-5.0e-01,1.19209289550781250e-07), RES(-1.1071487177940859555e0, -9.5367431640625072280e-8)}, + {FN (arccot), ARG(-5.0e-01,-1.19209289550781250e-07), RES(-1.1071487177940859555e0, 9.5367431640625072280e-8)}, + {FN (arccot), ARG(5.0e-01,5.0e-01), RES(1.0172219678978513677e0, -4.0235947810852509365e-1)}, + {FN (arccot), ARG(5.0e-01,-5.0e-01), RES(1.0172219678978513677e0, 4.0235947810852509365e-1)}, + {FN (arccot), ARG(-5.0e-01,5.0e-01), RES(-1.0172219678978513677e0, -4.0235947810852509365e-1)}, + {FN (arccot), ARG(-5.0e-01,-5.0e-01), RES(-1.0172219678978513677e0, 4.0235947810852509365e-1)}, + {FN (arccot), ARG(5.0e-01,1.0e+00), RES(6.6290883183401623253e-1, -7.0830333601405402006e-1)}, + {FN (arccot), ARG(5.0e-01,-1.0e+00), RES(6.6290883183401623253e-1, 7.0830333601405402006e-1)}, + {FN (arccot), ARG(-5.0e-01,1.0e+00), RES(-6.6290883183401623253e-1, -7.0830333601405402006e-1)}, + {FN (arccot), ARG(-5.0e-01,-1.0e+00), RES(-6.6290883183401623253e-1, 7.0830333601405402006e-1)}, + {FN (arccot), ARG(5.0e-01,2.0e+00), RES(1.4924946579308963897e-1, -5.0037000005253101744e-1)}, + {FN (arccot), ARG(5.0e-01,-2.0e+00), RES(1.4924946579308963897e-1, 5.0037000005253101744e-1)}, + {FN (arccot), ARG(-5.0e-01,2.0e+00), RES(-1.4924946579308963897e-1, -5.0037000005253101744e-1)}, + {FN (arccot), ARG(-5.0e-01,-2.0e+00), RES(-1.4924946579308963897e-1, 5.0037000005253101744e-1)}, + {FN (arccot), ARG(5.0e-01,8.3886080e+06), RES(7.1054273576010775894e-15, -1.1920928955078139117e-7)}, + {FN (arccot), ARG(5.0e-01,-8.3886080e+06), RES(7.1054273576010775894e-15, 1.1920928955078139117e-7)}, + {FN (arccot), ARG(-5.0e-01,8.3886080e+06), RES(-7.1054273576010775894e-15, -1.1920928955078139117e-7)}, + {FN (arccot), ARG(-5.0e-01,-8.3886080e+06), RES(-7.1054273576010775894e-15, 1.1920928955078139117e-7)}, + {FN (arccot), ARG(1.0e+00,0.0e+00), RES(7.8539816339744830962e-1, 0.0)}, + {FN (arccot), ARG(-1.0e+00,0.0e+00), RES(-7.8539816339744830962e-1, 0.0)}, + {FN (arccot), ARG(1.0e+00,1.19209289550781250e-07), RES(7.8539816339744475690e-1, -5.9604644775390483828e-8)}, + {FN (arccot), ARG(1.0e+00,-1.19209289550781250e-07), RES(7.8539816339744475690e-1, 5.9604644775390483828e-8)}, + {FN (arccot), ARG(-1.0e+00,1.19209289550781250e-07), RES(-7.8539816339744475690e-1, -5.9604644775390483828e-8)}, + {FN (arccot), ARG(-1.0e+00,-1.19209289550781250e-07), RES(-7.8539816339744475690e-1, 5.9604644775390483828e-8)}, + {FN (arccot), ARG(1.0e+00,5.0e-01), RES(7.2322066612406759210e-1, -2.3887786125685909036e-1)}, + {FN (arccot), ARG(1.0e+00,-5.0e-01), RES(7.2322066612406759210e-1, 2.3887786125685909036e-1)}, + {FN (arccot), ARG(-1.0e+00,5.0e-01), RES(-7.2322066612406759210e-1, -2.3887786125685909036e-1)}, + {FN (arccot), ARG(-1.0e+00,-5.0e-01), RES(-7.2322066612406759210e-1, 2.3887786125685909036e-1)}, + {FN (arccot), ARG(1.0e+00,1.0e+00), RES(5.5357435889704525151e-1, -4.0235947810852509365e-1)}, + {FN (arccot), ARG(1.0e+00,-1.0e+00), RES(5.5357435889704525151e-1, 4.0235947810852509365e-1)}, + {FN (arccot), ARG(-1.0e+00,1.0e+00), RES(-5.5357435889704525151e-1, -4.0235947810852509365e-1)}, + {FN (arccot), ARG(-1.0e+00,-1.0e+00), RES(-5.5357435889704525151e-1, 4.0235947810852509365e-1)}, + {FN (arccot), ARG(1.0e+00,2.0e+00), RES(2.3182380450040305811e-1, -4.0235947810852509365e-1)}, + {FN (arccot), ARG(1.0e+00,-2.0e+00), RES(2.3182380450040305811e-1, 4.0235947810852509365e-1)}, + {FN (arccot), ARG(-1.0e+00,2.0e+00), RES(-2.3182380450040305811e-1, -4.0235947810852509365e-1)}, + {FN (arccot), ARG(-1.0e+00,-2.0e+00), RES(-2.3182380450040305811e-1, 4.0235947810852509365e-1)}, + {FN (arccot), ARG(1.0e+00,8.3886080e+06), RES(1.4210854715202003717e-14, -1.1920928955078012062e-7)}, + {FN (arccot), ARG(1.0e+00,-8.3886080e+06), RES(1.4210854715202003717e-14, 1.1920928955078012062e-7)}, + {FN (arccot), ARG(-1.0e+00,8.3886080e+06), RES(-1.4210854715202003717e-14, -1.1920928955078012062e-7)}, + {FN (arccot), ARG(-1.0e+00,-8.3886080e+06), RES(-1.4210854715202003717e-14, 1.1920928955078012062e-7)}, + {FN (arccot), ARG(2.0e+00,0.0e+00), RES(4.6364760900080611621e-1, 0.0)}, + {FN (arccot), ARG(-2.0e+00,0.0e+00), RES(-4.6364760900080611621e-1, 0.0)}, + {FN (arccot), ARG(2.0e+00,1.19209289550781250e-07), RES(4.6364760900080497935e-1, -2.3841857910156200307e-8)}, + {FN (arccot), ARG(2.0e+00,-1.19209289550781250e-07), RES(4.6364760900080497935e-1, 2.3841857910156200307e-8)}, + {FN (arccot), ARG(-2.0e+00,1.19209289550781250e-07), RES(-4.6364760900080497935e-1, -2.3841857910156200307e-8)}, + {FN (arccot), ARG(-2.0e+00,-1.19209289550781250e-07), RES(-4.6364760900080497935e-1, 2.3841857910156200307e-8)}, + {FN (arccot), ARG(2.0e+00,5.0e-01), RES(4.4423988596007427049e-1, -9.6415620202996167238e-2)}, + {FN (arccot), ARG(2.0e+00,-5.0e-01), RES(4.4423988596007427049e-1, 9.6415620202996167238e-2)}, + {FN (arccot), ARG(-2.0e+00,5.0e-01), RES(-4.4423988596007427049e-1, -9.6415620202996167238e-2)}, + {FN (arccot), ARG(-2.0e+00,-5.0e-01), RES(-4.4423988596007427049e-1, 9.6415620202996167238e-2)}, + {FN (arccot), ARG(2.0e+00,1.0e+00), RES(3.9269908169872415481e-1, -1.7328679513998632735e-1)}, + {FN (arccot), ARG(2.0e+00,-1.0e+00), RES(3.9269908169872415481e-1, 1.7328679513998632735e-1)}, + {FN (arccot), ARG(-2.0e+00,1.0e+00), RES(-3.9269908169872415481e-1, -1.7328679513998632735e-1)}, + {FN (arccot), ARG(-2.0e+00,-1.0e+00), RES(-3.9269908169872415481e-1, 1.7328679513998632735e-1)}, + {FN (arccot), ARG(2.0e+00,2.0e+00), RES(2.5957305712326147589e-1, -2.3887786125685909036e-1)}, + {FN (arccot), ARG(2.0e+00,-2.0e+00), RES(2.5957305712326147589e-1, 2.3887786125685909036e-1)}, + {FN (arccot), ARG(-2.0e+00,2.0e+00), RES(-2.5957305712326147589e-1, -2.3887786125685909036e-1)}, + {FN (arccot), ARG(-2.0e+00,-2.0e+00), RES(-2.5957305712326147589e-1, 2.3887786125685909036e-1)}, + {FN (arccot), ARG(2.0e+00,8.3886080e+06), RES(2.8421709430402795744e-14, -1.1920928955077503843e-7)}, + {FN (arccot), ARG(2.0e+00,-8.3886080e+06), RES(2.8421709430402795744e-14, 1.1920928955077503843e-7)}, + {FN (arccot), ARG(-2.0e+00,8.3886080e+06), RES(-2.8421709430402795744e-14, -1.1920928955077503843e-7)}, + {FN (arccot), ARG(-2.0e+00,-8.3886080e+06), RES(-2.8421709430402795744e-14, 1.1920928955077503843e-7)}, + {FN (arccot), ARG(8.3886080e+06,0.0e+00), RES(1.1920928955078068531e-7, 0.0)}, + {FN (arccot), ARG(-8.3886080e+06,0.0e+00), RES(-1.1920928955078068531e-7, 0.0)}, + {FN (arccot), ARG(8.3886080e+06,1.19209289550781250e-07), RES(1.1920928955078068531e-7, -1.6940658945085766040e-21)}, + {FN (arccot), ARG(8.3886080e+06,-1.19209289550781250e-07), RES(1.1920928955078068531e-7, 1.6940658945085766040e-21)}, + {FN (arccot), ARG(-8.3886080e+06,1.19209289550781250e-07), RES(-1.1920928955078068531e-7, -1.6940658945085766040e-21)}, + {FN (arccot), ARG(-8.3886080e+06,-1.19209289550781250e-07), RES(-1.1920928955078068531e-7, 1.6940658945085766040e-21)}, + {FN (arccot), ARG(8.3886080e+06,5.0e-01), RES(1.1920928955078026179e-7, -7.1054273576008756410e-15)}, + {FN (arccot), ARG(8.3886080e+06,-5.0e-01), RES(1.1920928955078026179e-7, 7.1054273576008756410e-15)}, + {FN (arccot), ARG(-8.3886080e+06,5.0e-01), RES(-1.1920928955078026179e-7, -7.1054273576008756410e-15)}, + {FN (arccot), ARG(-8.3886080e+06,-5.0e-01), RES(-1.1920928955078026179e-7, 7.1054273576008756410e-15)}, + {FN (arccot), ARG(8.3886080e+06,1.0e+00), RES(1.1920928955077899125e-7, -1.4210854715201599821e-14)}, + {FN (arccot), ARG(8.3886080e+06,-1.0e+00), RES(1.1920928955077899125e-7, 1.4210854715201599821e-14)}, + {FN (arccot), ARG(-8.3886080e+06,1.0e+00), RES(-1.1920928955077899125e-7, -1.4210854715201599821e-14)}, + {FN (arccot), ARG(-8.3886080e+06,-1.0e+00), RES(-1.1920928955077899125e-7, 1.4210854715201599821e-14)}, + {FN (arccot), ARG(8.3886080e+06,2.0e+00), RES(1.1920928955077390905e-7, -2.8421709430401987951e-14)}, + {FN (arccot), ARG(8.3886080e+06,-2.0e+00), RES(1.1920928955077390905e-7, 2.8421709430401987951e-14)}, + {FN (arccot), ARG(-8.3886080e+06,2.0e+00), RES(-1.1920928955077390905e-7, -2.8421709430401987951e-14)}, + {FN (arccot), ARG(-8.3886080e+06,-2.0e+00), RES(-1.1920928955077390905e-7, 2.8421709430401987951e-14)}, + {FN (arccot), ARG(8.3886080e+06,8.3886080e+06), RES(5.9604644775390766172e-8, -5.9604644775390483828e-8)}, + {FN (arccot), ARG(8.3886080e+06,-8.3886080e+06), RES(5.9604644775390766172e-8, 5.9604644775390483828e-8)}, + {FN (arccot), ARG(-8.3886080e+06,8.3886080e+06), RES(-5.9604644775390766172e-8, -5.9604644775390483828e-8)}, + {FN (arccot), ARG(-8.3886080e+06,-8.3886080e+06), RES(-5.9604644775390766172e-8, 5.9604644775390483828e-8)}, + {FN (csch), ARG(0.0e+00,-3.45266983001243932001e-04), RES(0, 2.8963094332845964291e3)}, + {FN (csch), ARG(0.0e+00,3.45266983001243932001e-04), RES(0, -2.8963094332845964291e3)}, + {FN (csch), ARG(0.0e+00,1.57045105981189525579e+00), RES(0, -1.0000000596046477360e0)}, + {FN (csch), ARG(0.0e+00,-1.57045105981189525579e+00), RES(0, 1.0000000596046477360e0)}, + {FN (csch), ARG(0.0e+00,1.57114159377789786021e+00), RES(0, -1.0000000596046477360e0)}, + {FN (csch), ARG(0.0e+00,-1.57114159377789786021e+00), RES(0, 1.0000000596046477360e0)}, + {FN (csch), ARG(0.0e+00,3.14124738660679181379e+00), RES(0, -2.8963094332830802676e3)}, + {FN (csch), ARG(0.0e+00,-3.14124738660679181379e+00), RES(0, 2.8963094332830802676e3)}, + {FN (csch), ARG(0.0e+00,3.14193792057279441821e+00), RES(0, 2.8963094332851348839e3)}, + {FN (csch), ARG(0.0e+00,-3.14193792057279441821e+00), RES(0, -2.8963094332851348839e3)}, + {FN (csch), ARG(0.0e+00,4.71204371340168837179e+00), RES(0, 1.0000000596046477361e0)}, + {FN (csch), ARG(0.0e+00,-4.71204371340168837179e+00), RES(0, -1.0000000596046477361e0)}, + {FN (csch), ARG(0.0e+00,4.71273424736769097620e+00), RES(0, 1.0000000596046477359e0)}, + {FN (csch), ARG(0.0e+00,-4.71273424736769097620e+00), RES(0, -1.0000000596046477359e0)}, + {FN (csch), ARG(0.0e+00,6.28284004019658492979e+00), RES(0, 2.8963094332820529594e3)}, + {FN (csch), ARG(0.0e+00,-6.28284004019658492979e+00), RES(0, -2.8963094332820529594e3)}, + {FN (csch), ARG(0.0e+00,6.28353057416258753420e+00), RES(0, -2.8963094332861621921e3)}, + {FN (csch), ARG(0.0e+00,-6.28353057416258753420e+00), RES(0, 2.8963094332861621921e3)}, + {FN (csch), ARG(0.0e+00,9.42443269378637893396e+00), RES(0, -2.8963094332884762317e3)}, + {FN (csch), ARG(0.0e+00,-9.42443269378637893396e+00), RES(0, 2.8963094332884762317e3)}, + {FN (csch), ARG(0.0e+00,9.42512322775237976202e+00), RES(0, 2.8963094332946400807e3)}, + {FN (csch), ARG(0.0e+00,-9.42512322775237976202e+00), RES(0, -2.8963094332946400807e3)}, + {FN (csch), ARG(1.19209289550781250e-07,-3.45266983001243932001e-04), RES(9.9999986092250876926e-1, 2.8963090880176545869e3)}, + {FN (csch), ARG(1.19209289550781250e-07,3.45266983001243932001e-04), RES(9.9999986092250876926e-1, -2.8963090880176545869e3)}, + {FN (csch), ARG(-1.19209289550781250e-07,-3.45266983001243932001e-04), RES(-9.9999986092250876926e-1, 2.8963090880176545869e3)}, + {FN (csch), ARG(-1.19209289550781250e-07,3.45266983001243932001e-04), RES(-9.9999986092250876926e-1, -2.8963090880176545869e3)}, + {FN (csch), ARG(1.19209289550781250e-07,1.57045105981189525579e+00), RES(4.1159035837716456618e-11, -1.0000000596046406306e0)}, + {FN (csch), ARG(1.19209289550781250e-07,-1.57045105981189525579e+00), RES(4.1159035837716456618e-11, 1.0000000596046406306e0)}, + {FN (csch), ARG(-1.19209289550781250e-07,1.57045105981189525579e+00), RES(-4.1159035837716456618e-11, -1.0000000596046406306e0)}, + {FN (csch), ARG(-1.19209289550781250e-07,-1.57045105981189525579e+00), RES(-4.1159035837716456618e-11, 1.0000000596046406306e0)}, + {FN (csch), ARG(1.19209289550781250e-07,1.57114159377789786021e+00), RES(-4.1159035837701857686e-11, -1.0000000596046406306e0)}, + {FN (csch), ARG(1.19209289550781250e-07,-1.57114159377789786021e+00), RES(-4.1159035837701857686e-11, 1.0000000596046406306e0)}, + {FN (csch), ARG(-1.19209289550781250e-07,1.57114159377789786021e+00), RES(4.1159035837701857686e-11, -1.0000000596046406306e0)}, + {FN (csch), ARG(-1.19209289550781250e-07,-1.57114159377789786021e+00), RES(4.1159035837701857686e-11, 1.0000000596046406306e0)}, + {FN (csch), ARG(1.19209289550781250e-07,3.14124738660679181379e+00), RES(-9.9999986092146180843e-1, -2.8963090880161384259e3)}, + {FN (csch), ARG(1.19209289550781250e-07,-3.14124738660679181379e+00), RES(-9.9999986092146180843e-1, 2.8963090880161384259e3)}, + {FN (csch), ARG(-1.19209289550781250e-07,3.14124738660679181379e+00), RES(9.9999986092146180843e-1, -2.8963090880161384259e3)}, + {FN (csch), ARG(-1.19209289550781250e-07,-3.14124738660679181379e+00), RES(9.9999986092146180843e-1, 2.8963090880161384259e3)}, + {FN (csch), ARG(1.19209289550781250e-07,3.14193792057279441821e+00), RES(-9.9999986092288059049e-1, 2.8963090880181930415e3)}, + {FN (csch), ARG(1.19209289550781250e-07,-3.14193792057279441821e+00), RES(-9.9999986092288059049e-1, -2.8963090880181930415e3)}, + {FN (csch), ARG(-1.19209289550781250e-07,3.14193792057279441821e+00), RES(9.9999986092288059049e-1, 2.8963090880181930415e3)}, + {FN (csch), ARG(-1.19209289550781250e-07,-3.14193792057279441821e+00), RES(9.9999986092288059049e-1, -2.8963090880181930415e3)}, + {FN (csch), ARG(1.19209289550781250e-07,4.71204371340168837179e+00), RES(-4.1159035837731055550e-11, 1.0000000596046406306e0)}, + {FN (csch), ARG(1.19209289550781250e-07,-4.71204371340168837179e+00), RES(-4.1159035837731055550e-11, -1.0000000596046406306e0)}, + {FN (csch), ARG(-1.19209289550781250e-07,4.71204371340168837179e+00), RES(4.1159035837731055550e-11, 1.0000000596046406306e0)}, + {FN (csch), ARG(-1.19209289550781250e-07,-4.71204371340168837179e+00), RES(4.1159035837731055550e-11, -1.0000000596046406306e0)}, + {FN (csch), ARG(1.19209289550781250e-07,4.71273424736769097620e+00), RES(4.1159035837687258754e-11, 1.0000000596046406305e0)}, + {FN (csch), ARG(1.19209289550781250e-07,-4.71273424736769097620e+00), RES(4.1159035837687258754e-11, -1.0000000596046406305e0)}, + {FN (csch), ARG(-1.19209289550781250e-07,4.71273424736769097620e+00), RES(-4.1159035837687258754e-11, 1.0000000596046406305e0)}, + {FN (csch), ARG(-1.19209289550781250e-07,-4.71273424736769097620e+00), RES(-4.1159035837687258754e-11, -1.0000000596046406305e0)}, + {FN (csch), ARG(1.19209289550781250e-07,6.28284004019658492979e+00), RES(9.9999986092075241740e-1, 2.8963090880151111181e3)}, + {FN (csch), ARG(1.19209289550781250e-07,-6.28284004019658492979e+00), RES(9.9999986092075241740e-1, -2.8963090880151111181e3)}, + {FN (csch), ARG(-1.19209289550781250e-07,6.28284004019658492979e+00), RES(-9.9999986092075241740e-1, 2.8963090880151111181e3)}, + {FN (csch), ARG(-1.19209289550781250e-07,-6.28284004019658492979e+00), RES(-9.9999986092075241740e-1, -2.8963090880151111181e3)}, + {FN (csch), ARG(1.19209289550781250e-07,6.28353057416258753420e+00), RES(9.9999986092358998153e-1, -2.8963090880192203493e3)}, + {FN (csch), ARG(1.19209289550781250e-07,-6.28353057416258753420e+00), RES(9.9999986092358998153e-1, 2.8963090880192203493e3)}, + {FN (csch), ARG(-1.19209289550781250e-07,6.28353057416258753420e+00), RES(-9.9999986092358998153e-1, -2.8963090880192203493e3)}, + {FN (csch), ARG(-1.19209289550781250e-07,-6.28353057416258753420e+00), RES(-9.9999986092358998153e-1, 2.8963090880192203493e3)}, + {FN (csch), ARG(1.19209289550781250e-07,9.42443269378637893396e+00), RES(-9.9999986092518790411e-1, -2.8963090880215343881e3)}, + {FN (csch), ARG(1.19209289550781250e-07,-9.42443269378637893396e+00), RES(-9.9999986092518790411e-1, 2.8963090880215343881e3)}, + {FN (csch), ARG(-1.19209289550781250e-07,9.42443269378637893396e+00), RES(9.9999986092518790411e-1, -2.8963090880215343881e3)}, + {FN (csch), ARG(-1.19209289550781250e-07,-9.42443269378637893396e+00), RES(9.9999986092518790411e-1, 2.8963090880215343881e3)}, + {FN (csch), ARG(1.19209289550781250e-07,9.42512322775237976202e+00), RES(-9.9999986092944425030e-1, 2.8963090880276982349e3)}, + {FN (csch), ARG(1.19209289550781250e-07,-9.42512322775237976202e+00), RES(-9.9999986092944425030e-1, -2.8963090880276982349e3)}, + {FN (csch), ARG(-1.19209289550781250e-07,9.42512322775237976202e+00), RES(9.9999986092944425030e-1, 2.8963090880276982349e3)}, + {FN (csch), ARG(-1.19209289550781250e-07,-9.42512322775237976202e+00), RES(9.9999986092944425030e-1, -2.8963090880276982349e3)}, + {FN (csch), ARG(5.0e-01,-3.45266983001243932001e-04), RES(1.9190337944739187237e0, 1.4337901642789801243e-3)}, + {FN (csch), ARG(5.0e-01,3.45266983001243932001e-04), RES(1.9190337944739187237e0, -1.4337901642789801243e-3)}, + {FN (csch), ARG(-5.0e-01,-3.45266983001243932001e-04), RES(-1.9190337944739187237e0, 1.4337901642789801243e-3)}, + {FN (csch), ARG(-5.0e-01,3.45266983001243932001e-04), RES(-1.9190337944739187237e0, -1.4337901642789801243e-3)}, + {FN (csch), ARG(5.0e-01,1.57045105981189525579e+00), RES(1.4149533035943115868e-4, -8.8681891425248302487e-1)}, + {FN (csch), ARG(5.0e-01,-1.57045105981189525579e+00), RES(1.4149533035943115868e-4, 8.8681891425248302487e-1)}, + {FN (csch), ARG(-5.0e-01,1.57045105981189525579e+00), RES(-1.4149533035943115868e-4, -8.8681891425248302487e-1)}, + {FN (csch), ARG(-5.0e-01,-1.57045105981189525579e+00), RES(-1.4149533035943115868e-4, 8.8681891425248302487e-1)}, + {FN (csch), ARG(5.0e-01,1.57114159377789786021e+00), RES(-1.4149533035938097090e-4, -8.8681891425248302485e-1)}, + {FN (csch), ARG(5.0e-01,-1.57114159377789786021e+00), RES(-1.4149533035938097090e-4, 8.8681891425248302485e-1)}, + {FN (csch), ARG(-5.0e-01,1.57114159377789786021e+00), RES(1.4149533035938097090e-4, -8.8681891425248302485e-1)}, + {FN (csch), ARG(-5.0e-01,-1.57114159377789786021e+00), RES(1.4149533035938097090e-4, 8.8681891425248302485e-1)}, + {FN (csch), ARG(5.0e-01,3.14124738660679181379e+00), RES(-1.9190337944739187227e0, -1.4337901642797306848e-3)}, + {FN (csch), ARG(5.0e-01,-3.14124738660679181379e+00), RES(-1.9190337944739187227e0, 1.4337901642797306848e-3)}, + {FN (csch), ARG(-5.0e-01,3.14124738660679181379e+00), RES(1.9190337944739187227e0, -1.4337901642797306848e-3)}, + {FN (csch), ARG(-5.0e-01,-3.14124738660679181379e+00), RES(1.9190337944739187227e0, 1.4337901642797306848e-3)}, + {FN (csch), ARG(5.0e-01,3.14193792057279441821e+00), RES(-1.9190337944739187241e0, 1.4337901642787135676e-3)}, + {FN (csch), ARG(5.0e-01,-3.14193792057279441821e+00), RES(-1.9190337944739187241e0, -1.4337901642787135676e-3)}, + {FN (csch), ARG(-5.0e-01,3.14193792057279441821e+00), RES(1.9190337944739187241e0, 1.4337901642787135676e-3)}, + {FN (csch), ARG(-5.0e-01,-3.14193792057279441821e+00), RES(1.9190337944739187241e0, -1.4337901642787135676e-3)}, + {FN (csch), ARG(5.0e-01,4.71204371340168837179e+00), RES(-1.4149533035948134646e-4, 8.8681891425248302489e-1)}, + {FN (csch), ARG(5.0e-01,-4.71204371340168837179e+00), RES(-1.4149533035948134646e-4, -8.8681891425248302489e-1)}, + {FN (csch), ARG(-5.0e-01,4.71204371340168837179e+00), RES(1.4149533035948134646e-4, 8.8681891425248302489e-1)}, + {FN (csch), ARG(-5.0e-01,-4.71204371340168837179e+00), RES(1.4149533035948134646e-4, -8.8681891425248302489e-1)}, + {FN (csch), ARG(5.0e-01,4.71273424736769097620e+00), RES(1.4149533035933078312e-4, 8.8681891425248302483e-1)}, + {FN (csch), ARG(5.0e-01,-4.71273424736769097620e+00), RES(1.4149533035933078312e-4, -8.8681891425248302483e-1)}, + {FN (csch), ARG(-5.0e-01,4.71273424736769097620e+00), RES(-1.4149533035933078312e-4, 8.8681891425248302483e-1)}, + {FN (csch), ARG(-5.0e-01,-4.71273424736769097620e+00), RES(-1.4149533035933078312e-4, -8.8681891425248302483e-1)}, + {FN (csch), ARG(5.0e-01,6.28284004019658492979e+00), RES(1.9190337944739187220e0, 1.4337901642802392434e-3)}, + {FN (csch), ARG(5.0e-01,-6.28284004019658492979e+00), RES(1.9190337944739187220e0, -1.4337901642802392434e-3)}, + {FN (csch), ARG(-5.0e-01,6.28284004019658492979e+00), RES(-1.9190337944739187220e0, 1.4337901642802392434e-3)}, + {FN (csch), ARG(-5.0e-01,-6.28284004019658492979e+00), RES(-1.9190337944739187220e0, -1.4337901642802392434e-3)}, + {FN (csch), ARG(5.0e-01,6.28353057416258753420e+00), RES(1.9190337944739187248e0, -1.4337901642782050091e-3)}, + {FN (csch), ARG(5.0e-01,-6.28353057416258753420e+00), RES(1.9190337944739187248e0, 1.4337901642782050091e-3)}, + {FN (csch), ARG(-5.0e-01,6.28353057416258753420e+00), RES(-1.9190337944739187248e0, -1.4337901642782050091e-3)}, + {FN (csch), ARG(-5.0e-01,-6.28353057416258753420e+00), RES(-1.9190337944739187248e0, 1.4337901642782050091e-3)}, + {FN (csch), ARG(5.0e-01,9.42443269378637893396e+00), RES(-1.9190337944739187263e0, -1.4337901642770594670e-3)}, + {FN (csch), ARG(5.0e-01,-9.42443269378637893396e+00), RES(-1.9190337944739187263e0, 1.4337901642770594670e-3)}, + {FN (csch), ARG(-5.0e-01,9.42443269378637893396e+00), RES(1.9190337944739187263e0, -1.4337901642770594670e-3)}, + {FN (csch), ARG(-5.0e-01,-9.42443269378637893396e+00), RES(1.9190337944739187263e0, 1.4337901642770594670e-3)}, + {FN (csch), ARG(5.0e-01,9.42512322775237976202e+00), RES(-1.9190337944739187304e0, 1.4337901642740081154e-3)}, + {FN (csch), ARG(5.0e-01,-9.42512322775237976202e+00), RES(-1.9190337944739187304e0, -1.4337901642740081154e-3)}, + {FN (csch), ARG(-5.0e-01,9.42512322775237976202e+00), RES(1.9190337944739187304e0, 1.4337901642740081154e-3)}, + {FN (csch), ARG(-5.0e-01,-9.42512322775237976202e+00), RES(1.9190337944739187304e0, -1.4337901642740081154e-3)}, + {FN (csch), ARG(1.0e+00,-3.45266983001243932001e-04), RES(8.5091800407377002734e-1, 3.8576176225198860914e-4)}, + {FN (csch), ARG(1.0e+00,3.45266983001243932001e-04), RES(8.5091800407377002734e-1, -3.8576176225198860914e-4)}, + {FN (csch), ARG(-1.0e+00,-3.45266983001243932001e-04), RES(-8.5091800407377002734e-1, 3.8576176225198860914e-4)}, + {FN (csch), ARG(-1.0e+00,3.45266983001243932001e-04), RES(-8.5091800407377002734e-1, -3.8576176225198860914e-4)}, + {FN (csch), ARG(1.0e+00,1.57045105981189525579e+00), RES(1.7040802567657401279e-4, -6.4805426748157480499e-1)}, + {FN (csch), ARG(1.0e+00,-1.57045105981189525579e+00), RES(1.7040802567657401279e-4, 6.4805426748157480499e-1)}, + {FN (csch), ARG(-1.0e+00,1.57045105981189525579e+00), RES(-1.7040802567657401279e-4, -6.4805426748157480499e-1)}, + {FN (csch), ARG(-1.0e+00,-1.57045105981189525579e+00), RES(-1.7040802567657401279e-4, 6.4805426748157480499e-1)}, + {FN (csch), ARG(1.0e+00,1.57114159377789786021e+00), RES(-1.7040802567651356981e-4, -6.4805426748157480499e-1)}, + {FN (csch), ARG(1.0e+00,-1.57114159377789786021e+00), RES(-1.7040802567651356981e-4, 6.4805426748157480499e-1)}, + {FN (csch), ARG(-1.0e+00,1.57114159377789786021e+00), RES(1.7040802567651356981e-4, -6.4805426748157480499e-1)}, + {FN (csch), ARG(-1.0e+00,-1.57114159377789786021e+00), RES(1.7040802567651356981e-4, 6.4805426748157480499e-1)}, + {FN (csch), ARG(1.0e+00,3.14124738660679181379e+00), RES(-8.5091800407377002721e-1, -3.8576176225219054787e-4)}, + {FN (csch), ARG(1.0e+00,-3.14124738660679181379e+00), RES(-8.5091800407377002721e-1, 3.8576176225219054787e-4)}, + {FN (csch), ARG(-1.0e+00,3.14124738660679181379e+00), RES(8.5091800407377002721e-1, -3.8576176225219054787e-4)}, + {FN (csch), ARG(-1.0e+00,-3.14124738660679181379e+00), RES(8.5091800407377002721e-1, 3.8576176225219054787e-4)}, + {FN (csch), ARG(1.0e+00,3.14193792057279441821e+00), RES(-8.5091800407377002738e-1, 3.8576176225191689193e-4)}, + {FN (csch), ARG(1.0e+00,-3.14193792057279441821e+00), RES(-8.5091800407377002738e-1, -3.8576176225191689193e-4)}, + {FN (csch), ARG(-1.0e+00,3.14193792057279441821e+00), RES(8.5091800407377002738e-1, 3.8576176225191689193e-4)}, + {FN (csch), ARG(-1.0e+00,-3.14193792057279441821e+00), RES(8.5091800407377002738e-1, -3.8576176225191689193e-4)}, + {FN (csch), ARG(1.0e+00,4.71204371340168837179e+00), RES(-1.7040802567663445577e-4, 6.4805426748157480498e-1)}, + {FN (csch), ARG(1.0e+00,-4.71204371340168837179e+00), RES(-1.7040802567663445577e-4, -6.4805426748157480498e-1)}, + {FN (csch), ARG(-1.0e+00,4.71204371340168837179e+00), RES(1.7040802567663445577e-4, 6.4805426748157480498e-1)}, + {FN (csch), ARG(-1.0e+00,-4.71204371340168837179e+00), RES(1.7040802567663445577e-4, -6.4805426748157480498e-1)}, + {FN (csch), ARG(1.0e+00,4.71273424736769097620e+00), RES(1.7040802567645312683e-4, 6.480542674815748050e-1)}, + {FN (csch), ARG(1.0e+00,-4.71273424736769097620e+00), RES(1.7040802567645312683e-4, -6.480542674815748050e-1)}, + {FN (csch), ARG(-1.0e+00,4.71273424736769097620e+00), RES(-1.7040802567645312683e-4, 6.480542674815748050e-1)}, + {FN (csch), ARG(-1.0e+00,-4.71273424736769097620e+00), RES(-1.7040802567645312683e-4, -6.480542674815748050e-1)}, + {FN (csch), ARG(1.0e+00,6.28284004019658492979e+00), RES(8.5091800407377002712e-1, 3.8576176225232737584e-4)}, + {FN (csch), ARG(1.0e+00,-6.28284004019658492979e+00), RES(8.5091800407377002712e-1, -3.8576176225232737584e-4)}, + {FN (csch), ARG(-1.0e+00,6.28284004019658492979e+00), RES(-8.5091800407377002712e-1, 3.8576176225232737584e-4)}, + {FN (csch), ARG(-1.0e+00,-6.28284004019658492979e+00), RES(-8.5091800407377002712e-1, -3.8576176225232737584e-4)}, + {FN (csch), ARG(1.0e+00,6.28353057416258753420e+00), RES(8.5091800407377002747e-1, -3.8576176225178006396e-4)}, + {FN (csch), ARG(1.0e+00,-6.28353057416258753420e+00), RES(8.5091800407377002747e-1, 3.8576176225178006396e-4)}, + {FN (csch), ARG(-1.0e+00,6.28353057416258753420e+00), RES(-8.5091800407377002747e-1, -3.8576176225178006396e-4)}, + {FN (csch), ARG(-1.0e+00,-6.28353057416258753420e+00), RES(-8.5091800407377002747e-1, 3.8576176225178006396e-4)}, + {FN (csch), ARG(1.0e+00,9.42443269378637893396e+00), RES(-8.5091800407377002767e-1, -3.8576176225147185523e-4)}, + {FN (csch), ARG(1.0e+00,-9.42443269378637893396e+00), RES(-8.5091800407377002767e-1, 3.8576176225147185523e-4)}, + {FN (csch), ARG(-1.0e+00,9.42443269378637893396e+00), RES(8.5091800407377002767e-1, -3.8576176225147185523e-4)}, + {FN (csch), ARG(-1.0e+00,-9.42443269378637893396e+00), RES(8.5091800407377002767e-1, 3.8576176225147185523e-4)}, + {FN (csch), ARG(1.0e+00,9.42512322775237976202e+00), RES(-8.5091800407377002820e-1, 3.8576176225065088741e-4)}, + {FN (csch), ARG(1.0e+00,-9.42512322775237976202e+00), RES(-8.5091800407377002820e-1, -3.8576176225065088741e-4)}, + {FN (csch), ARG(-1.0e+00,9.42512322775237976202e+00), RES(8.5091800407377002820e-1, 3.8576176225065088741e-4)}, + {FN (csch), ARG(-1.0e+00,-9.42512322775237976202e+00), RES(8.5091800407377002820e-1, -3.8576176225065088741e-4)}, + {FN (csch), ARG(2.0e+00,-3.45266983001243932001e-04), RES(2.7572054583883740768e-1, 9.8749461907035665386e-5)}, + {FN (csch), ARG(2.0e+00,3.45266983001243932001e-04), RES(2.7572054583883740768e-1, -9.8749461907035665386e-5)}, + {FN (csch), ARG(-2.0e+00,-3.45266983001243932001e-04), RES(-2.7572054583883740768e-1, 9.8749461907035665386e-5)}, + {FN (csch), ARG(-2.0e+00,3.45266983001243932001e-04), RES(-2.7572054583883740768e-1, -9.8749461907035665386e-5)}, + {FN (csch), ARG(2.0e+00,1.57045105981189525579e+00), RES(8.8471445300404633228e-5, -2.6580221522968095406e-1)}, + {FN (csch), ARG(2.0e+00,-1.57045105981189525579e+00), RES(8.8471445300404633228e-5, 2.6580221522968095406e-1)}, + {FN (csch), ARG(-2.0e+00,1.57045105981189525579e+00), RES(-8.8471445300404633228e-5, -2.6580221522968095406e-1)}, + {FN (csch), ARG(-2.0e+00,-1.57045105981189525579e+00), RES(-8.8471445300404633228e-5, 2.6580221522968095406e-1)}, + {FN (csch), ARG(2.0e+00,1.57114159377789786021e+00), RES(-8.8471445300373252796e-5, -2.6580221522968095407e-1)}, + {FN (csch), ARG(2.0e+00,-1.57114159377789786021e+00), RES(-8.8471445300373252796e-5, 2.6580221522968095407e-1)}, + {FN (csch), ARG(-2.0e+00,1.57114159377789786021e+00), RES(8.8471445300373252796e-5, -2.6580221522968095407e-1)}, + {FN (csch), ARG(-2.0e+00,-1.57114159377789786021e+00), RES(8.8471445300373252796e-5, 2.6580221522968095407e-1)}, + {FN (csch), ARG(2.0e+00,3.14124738660679181379e+00), RES(-2.7572054583883740766e-1, -9.8749461907087358805e-5)}, + {FN (csch), ARG(2.0e+00,-3.14124738660679181379e+00), RES(-2.7572054583883740766e-1, 9.8749461907087358805e-5)}, + {FN (csch), ARG(-2.0e+00,3.14124738660679181379e+00), RES(2.7572054583883740766e-1, -9.8749461907087358805e-5)}, + {FN (csch), ARG(-2.0e+00,-3.14124738660679181379e+00), RES(2.7572054583883740766e-1, 9.8749461907087358805e-5)}, + {FN (csch), ARG(2.0e+00,3.14193792057279441821e+00), RES(-2.7572054583883740769e-1, 9.8749461907017306810e-5)}, + {FN (csch), ARG(2.0e+00,-3.14193792057279441821e+00), RES(-2.7572054583883740769e-1, -9.8749461907017306810e-5)}, + {FN (csch), ARG(-2.0e+00,3.14193792057279441821e+00), RES(2.7572054583883740769e-1, 9.8749461907017306810e-5)}, + {FN (csch), ARG(-2.0e+00,-3.14193792057279441821e+00), RES(2.7572054583883740769e-1, -9.8749461907017306810e-5)}, + {FN (csch), ARG(2.0e+00,4.71204371340168837179e+00), RES(-8.8471445300436013659e-5, 2.6580221522968095405e-1)}, + {FN (csch), ARG(2.0e+00,-4.71204371340168837179e+00), RES(-8.8471445300436013659e-5, -2.6580221522968095405e-1)}, + {FN (csch), ARG(-2.0e+00,4.71204371340168837179e+00), RES(8.8471445300436013659e-5, 2.6580221522968095405e-1)}, + {FN (csch), ARG(-2.0e+00,-4.71204371340168837179e+00), RES(8.8471445300436013659e-5, -2.6580221522968095405e-1)}, + {FN (csch), ARG(2.0e+00,4.71273424736769097620e+00), RES(8.8471445300341872364e-5, 2.6580221522968095408e-1)}, + {FN (csch), ARG(2.0e+00,-4.71273424736769097620e+00), RES(8.8471445300341872364e-5, -2.6580221522968095408e-1)}, + {FN (csch), ARG(-2.0e+00,4.71273424736769097620e+00), RES(-8.8471445300341872364e-5, 2.6580221522968095408e-1)}, + {FN (csch), ARG(-2.0e+00,-4.71273424736769097620e+00), RES(-8.8471445300341872364e-5, -2.6580221522968095408e-1)}, + {FN (csch), ARG(2.0e+00,6.28284004019658492979e+00), RES(2.7572054583883740765e-1, 9.8749461907122384803e-5)}, + {FN (csch), ARG(2.0e+00,-6.28284004019658492979e+00), RES(2.7572054583883740765e-1, -9.8749461907122384803e-5)}, + {FN (csch), ARG(-2.0e+00,6.28284004019658492979e+00), RES(-2.7572054583883740765e-1, 9.8749461907122384803e-5)}, + {FN (csch), ARG(-2.0e+00,-6.28284004019658492979e+00), RES(-2.7572054583883740765e-1, -9.8749461907122384803e-5)}, + {FN (csch), ARG(2.0e+00,6.28353057416258753420e+00), RES(2.7572054583883740770e-1, -9.8749461906982280812e-5)}, + {FN (csch), ARG(2.0e+00,-6.28353057416258753420e+00), RES(2.7572054583883740770e-1, 9.8749461906982280812e-5)}, + {FN (csch), ARG(-2.0e+00,6.28353057416258753420e+00), RES(-2.7572054583883740770e-1, -9.8749461906982280812e-5)}, + {FN (csch), ARG(-2.0e+00,-6.28353057416258753420e+00), RES(-2.7572054583883740770e-1, 9.8749461906982280812e-5)}, + {FN (csch), ARG(2.0e+00,9.42443269378637893396e+00), RES(-2.7572054583883740773e-1, -9.874946190690338380e-5)}, + {FN (csch), ARG(2.0e+00,-9.42443269378637893396e+00), RES(-2.7572054583883740773e-1, 9.874946190690338380e-5)}, + {FN (csch), ARG(-2.0e+00,9.42443269378637893396e+00), RES(2.7572054583883740773e-1, -9.874946190690338380e-5)}, + {FN (csch), ARG(-2.0e+00,-9.42443269378637893396e+00), RES(2.7572054583883740773e-1, 9.874946190690338380e-5)}, + {FN (csch), ARG(2.0e+00,9.42512322775237976202e+00), RES(-2.7572054583883740781e-1, 9.8749461906693227814e-5)}, + {FN (csch), ARG(2.0e+00,-9.42512322775237976202e+00), RES(-2.7572054583883740781e-1, -9.8749461906693227814e-5)}, + {FN (csch), ARG(-2.0e+00,9.42512322775237976202e+00), RES(2.7572054583883740781e-1, 9.8749461906693227814e-5)}, + {FN (csch), ARG(-2.0e+00,-9.42512322775237976202e+00), RES(2.7572054583883740781e-1, -9.8749461906693227814e-5)}, + {FN (sech), ARG(0.0e+00,-3.45266983001243932001e-04), RES(1.0000000596046477360e0, 0.0)}, + {FN (sech), ARG(0.0e+00,3.45266983001243932001e-04), RES(1.0000000596046477360e0, 0.0)}, + {FN (sech), ARG(0.0e+00,1.57045105981189525579e+00), RES(2.8963094332835939217e3, 0.0)}, + {FN (sech), ARG(0.0e+00,-1.57045105981189525579e+00), RES(2.8963094332835939217e3, 0.0)}, + {FN (sech), ARG(0.0e+00,1.57114159377789786021e+00), RES(-2.8963094332846212298e3, 0.0)}, + {FN (sech), ARG(0.0e+00,-1.57114159377789786021e+00), RES(-2.8963094332846212298e3, 0.0)}, + {FN (sech), ARG(0.0e+00,3.14124738660679181379e+00), RES(-1.0000000596046477360e0, 0.0)}, + {FN (sech), ARG(0.0e+00,-3.14124738660679181379e+00), RES(-1.0000000596046477360e0, 0.0)}, + {FN (sech), ARG(0.0e+00,3.14193792057279441821e+00), RES(-1.0000000596046477360e0, 0.0)}, + {FN (sech), ARG(0.0e+00,-3.14193792057279441821e+00), RES(-1.0000000596046477360e0, 0.0)}, + {FN (sech), ARG(0.0e+00,4.71204371340168837179e+00), RES(-2.8963094332825666135e3, 0.0)}, + {FN (sech), ARG(0.0e+00,-4.71204371340168837179e+00), RES(-2.8963094332825666135e3, 0.0)}, + {FN (sech), ARG(0.0e+00,4.71273424736769097620e+00), RES(2.8963094332856485380e3, 0.0)}, + {FN (sech), ARG(0.0e+00,-4.71273424736769097620e+00), RES(2.8963094332856485380e3, 0.0)}, + {FN (sech), ARG(0.0e+00,6.28284004019658492979e+00), RES(1.0000000596046477361e0, 0.0)}, + {FN (sech), ARG(0.0e+00,-6.28284004019658492979e+00), RES(1.0000000596046477361e0, 0.0)}, + {FN (sech), ARG(0.0e+00,6.28353057416258753420e+00), RES(1.0000000596046477359e0, 0.0)}, + {FN (sech), ARG(0.0e+00,-6.28353057416258753420e+00), RES(1.0000000596046477359e0, 0.0)}, + {FN (sech), ARG(0.0e+00,9.42443269378637893396e+00), RES(-1.0000000596046477358e0, 0.0)}, + {FN (sech), ARG(0.0e+00,-9.42443269378637893396e+00), RES(-1.0000000596046477358e0, 0.0)}, + {FN (sech), ARG(0.0e+00,9.42512322775237976202e+00), RES(-1.0000000596046477356e0, 0.0)}, + {FN (sech), ARG(0.0e+00,-9.42512322775237976202e+00), RES(-1.0000000596046477356e0, 0.0)}, + {FN (sech), ARG(1.19209289550781250e-07,-3.45266983001243932001e-04), RES(1.0000000596046406306e0, 4.1159035837702210125e-11)}, + {FN (sech), ARG(1.19209289550781250e-07,3.45266983001243932001e-04), RES(1.0000000596046406306e0, -4.1159035837702210125e-11)}, + {FN (sech), ARG(-1.19209289550781250e-07,-3.45266983001243932001e-04), RES(1.0000000596046406306e0, -4.1159035837702210125e-11)}, + {FN (sech), ARG(-1.19209289550781250e-07,3.45266983001243932001e-04), RES(1.0000000596046406306e0, 4.1159035837702210125e-11)}, + {FN (sech), ARG(1.19209289550781250e-07,1.57045105981189525579e+00), RES(2.8963090880166520798e3, -9.9999986092181650394e-1)}, + {FN (sech), ARG(1.19209289550781250e-07,-1.57045105981189525579e+00), RES(2.8963090880166520798e3, 9.9999986092181650394e-1)}, + {FN (sech), ARG(-1.19209289550781250e-07,1.57045105981189525579e+00), RES(2.8963090880166520798e3, 9.9999986092181650394e-1)}, + {FN (sech), ARG(-1.19209289550781250e-07,-1.57045105981189525579e+00), RES(2.8963090880166520798e3, -9.9999986092181650394e-1)}, + {FN (sech), ARG(1.19209289550781250e-07,1.57114159377789786021e+00), RES(-2.8963090880176793876e3, -9.9999986092252589498e-1)}, + {FN (sech), ARG(1.19209289550781250e-07,-1.57114159377789786021e+00), RES(-2.8963090880176793876e3, 9.9999986092252589498e-1)}, + {FN (sech), ARG(-1.19209289550781250e-07,1.57114159377789786021e+00), RES(-2.8963090880176793876e3, 9.9999986092252589498e-1)}, + {FN (sech), ARG(-1.19209289550781250e-07,-1.57114159377789786021e+00), RES(-2.8963090880176793876e3, -9.9999986092252589498e-1)}, + {FN (sech), ARG(1.19209289550781250e-07,3.14124738660679181379e+00), RES(-1.0000000596046406306e0, -4.1159035837723756084e-11)}, + {FN (sech), ARG(1.19209289550781250e-07,-3.14124738660679181379e+00), RES(-1.0000000596046406306e0, 4.1159035837723756084e-11)}, + {FN (sech), ARG(-1.19209289550781250e-07,3.14124738660679181379e+00), RES(-1.0000000596046406306e0, 4.1159035837723756084e-11)}, + {FN (sech), ARG(-1.19209289550781250e-07,-3.14124738660679181379e+00), RES(-1.0000000596046406306e0, -4.1159035837723756084e-11)}, + {FN (sech), ARG(1.19209289550781250e-07,3.14193792057279441821e+00), RES(-1.0000000596046406305e0, 4.1159035837694558220e-11)}, + {FN (sech), ARG(1.19209289550781250e-07,-3.14193792057279441821e+00), RES(-1.0000000596046406305e0, -4.1159035837694558220e-11)}, + {FN (sech), ARG(-1.19209289550781250e-07,3.14193792057279441821e+00), RES(-1.0000000596046406305e0, -4.1159035837694558220e-11)}, + {FN (sech), ARG(-1.19209289550781250e-07,-3.14193792057279441821e+00), RES(-1.0000000596046406305e0, 4.1159035837694558220e-11)}, + {FN (sech), ARG(1.19209289550781250e-07,4.71204371340168837179e+00), RES(-2.8963090880156247720e3, 9.9999986092110711291e-1)}, + {FN (sech), ARG(1.19209289550781250e-07,-4.71204371340168837179e+00), RES(-2.8963090880156247720e3, -9.9999986092110711291e-1)}, + {FN (sech), ARG(-1.19209289550781250e-07,4.71204371340168837179e+00), RES(-2.8963090880156247720e3, -9.9999986092110711291e-1)}, + {FN (sech), ARG(-1.19209289550781250e-07,-4.71204371340168837179e+00), RES(-2.8963090880156247720e3, 9.9999986092110711291e-1)}, + {FN (sech), ARG(1.19209289550781250e-07,4.71273424736769097620e+00), RES(2.8963090880187066954e3, 9.9999986092323528601e-1)}, + {FN (sech), ARG(1.19209289550781250e-07,-4.71273424736769097620e+00), RES(2.8963090880187066954e3, -9.9999986092323528601e-1)}, + {FN (sech), ARG(-1.19209289550781250e-07,4.71273424736769097620e+00), RES(2.8963090880187066954e3, -9.9999986092323528601e-1)}, + {FN (sech), ARG(-1.19209289550781250e-07,-4.71273424736769097620e+00), RES(2.8963090880187066954e3, 9.9999986092323528601e-1)}, + {FN (sech), ARG(1.19209289550781250e-07,6.28284004019658492979e+00), RES(1.0000000596046406307e0, 4.1159035837738355016e-11)}, + {FN (sech), ARG(1.19209289550781250e-07,-6.28284004019658492979e+00), RES(1.0000000596046406307e0, -4.1159035837738355016e-11)}, + {FN (sech), ARG(-1.19209289550781250e-07,6.28284004019658492979e+00), RES(1.0000000596046406307e0, -4.1159035837738355016e-11)}, + {FN (sech), ARG(-1.19209289550781250e-07,-6.28284004019658492979e+00), RES(1.0000000596046406307e0, 4.1159035837738355016e-11)}, + {FN (sech), ARG(1.19209289550781250e-07,6.28353057416258753420e+00), RES(1.0000000596046406305e0, -4.1159035837679959288e-11)}, + {FN (sech), ARG(1.19209289550781250e-07,-6.28353057416258753420e+00), RES(1.0000000596046406305e0, 4.1159035837679959288e-11)}, + {FN (sech), ARG(-1.19209289550781250e-07,6.28353057416258753420e+00), RES(1.0000000596046406305e0, 4.1159035837679959288e-11)}, + {FN (sech), ARG(-1.19209289550781250e-07,-6.28353057416258753420e+00), RES(1.0000000596046406305e0, -4.1159035837679959288e-11)}, + {FN (sech), ARG(1.19209289550781250e-07,9.42443269378637893396e+00), RES(-1.0000000596046406304e0, -4.1159035837647074798e-11)}, + {FN (sech), ARG(1.19209289550781250e-07,-9.42443269378637893396e+00), RES(-1.0000000596046406304e0, 4.1159035837647074798e-11)}, + {FN (sech), ARG(-1.19209289550781250e-07,9.42443269378637893396e+00), RES(-1.0000000596046406304e0, 4.1159035837647074798e-11)}, + {FN (sech), ARG(-1.19209289550781250e-07,-9.42443269378637893396e+00), RES(-1.0000000596046406304e0, -4.1159035837647074798e-11)}, + {FN (sech), ARG(1.19209289550781250e-07,9.42512322775237976202e+00), RES(-1.0000000596046406301e0, 4.1159035837559481207e-11)}, + {FN (sech), ARG(1.19209289550781250e-07,-9.42512322775237976202e+00), RES(-1.0000000596046406301e0, -4.1159035837559481207e-11)}, + {FN (sech), ARG(-1.19209289550781250e-07,9.42512322775237976202e+00), RES(-1.0000000596046406301e0, -4.1159035837559481207e-11)}, + {FN (sech), ARG(-1.19209289550781250e-07,-9.42512322775237976202e+00), RES(-1.0000000596046406301e0, 4.1159035837559481207e-11)}, + {FN (sech), ARG(5.0e-01,-3.45266983001243932001e-04), RES(8.8681891425248302485e-1, 1.4149533035938218250e-4)}, + {FN (sech), ARG(5.0e-01,3.45266983001243932001e-04), RES(8.8681891425248302485e-1, -1.4149533035938218250e-4)}, + {FN (sech), ARG(-5.0e-01,-3.45266983001243932001e-04), RES(8.8681891425248302485e-1, -1.4149533035938218250e-4)}, + {FN (sech), ARG(-5.0e-01,3.45266983001243932001e-04), RES(8.8681891425248302485e-1, 1.4149533035938218250e-4)}, + {FN (sech), ARG(5.0e-01,1.57045105981189525579e+00), RES(1.4337901642794764055e-3, -1.9190337944739187231e0)}, + {FN (sech), ARG(5.0e-01,-1.57045105981189525579e+00), RES(1.4337901642794764055e-3, 1.9190337944739187231e0)}, + {FN (sech), ARG(-5.0e-01,1.57045105981189525579e+00), RES(1.4337901642794764055e-3, 1.9190337944739187231e0)}, + {FN (sech), ARG(-5.0e-01,-1.57045105981189525579e+00), RES(1.4337901642794764055e-3, -1.9190337944739187231e0)}, + {FN (sech), ARG(5.0e-01,1.57114159377789786021e+00), RES(-1.4337901642789678469e-3, -1.9190337944739187237e0)}, + {FN (sech), ARG(5.0e-01,-1.57114159377789786021e+00), RES(-1.4337901642789678469e-3, 1.9190337944739187237e0)}, + {FN (sech), ARG(-5.0e-01,1.57114159377789786021e+00), RES(-1.4337901642789678469e-3, 1.9190337944739187237e0)}, + {FN (sech), ARG(-5.0e-01,-1.57114159377789786021e+00), RES(-1.4337901642789678469e-3, -1.9190337944739187237e0)}, + {FN (sech), ARG(5.0e-01,3.14124738660679181379e+00), RES(-8.8681891425248302488e-1, -1.4149533035945625257e-4)}, + {FN (sech), ARG(5.0e-01,-3.14124738660679181379e+00), RES(-8.8681891425248302488e-1, 1.4149533035945625257e-4)}, + {FN (sech), ARG(-5.0e-01,3.14124738660679181379e+00), RES(-8.8681891425248302488e-1, 1.4149533035945625257e-4)}, + {FN (sech), ARG(-5.0e-01,-3.14124738660679181379e+00), RES(-8.8681891425248302488e-1, -1.4149533035945625257e-4)}, + {FN (sech), ARG(5.0e-01,3.14193792057279441821e+00), RES(-8.8681891425248302484e-1, 1.4149533035935587701e-4)}, + {FN (sech), ARG(5.0e-01,-3.14193792057279441821e+00), RES(-8.8681891425248302484e-1, -1.4149533035935587701e-4)}, + {FN (sech), ARG(-5.0e-01,3.14193792057279441821e+00), RES(-8.8681891425248302484e-1, -1.4149533035935587701e-4)}, + {FN (sech), ARG(-5.0e-01,-3.14193792057279441821e+00), RES(-8.8681891425248302484e-1, 1.4149533035935587701e-4)}, + {FN (sech), ARG(5.0e-01,4.71204371340168837179e+00), RES(-1.4337901642799849641e-3, 1.9190337944739187224e0)}, + {FN (sech), ARG(5.0e-01,-4.71204371340168837179e+00), RES(-1.4337901642799849641e-3, -1.9190337944739187224e0)}, + {FN (sech), ARG(-5.0e-01,4.71204371340168837179e+00), RES(-1.4337901642799849641e-3, -1.9190337944739187224e0)}, + {FN (sech), ARG(-5.0e-01,-4.71204371340168837179e+00), RES(-1.4337901642799849641e-3, 1.9190337944739187224e0)}, + {FN (sech), ARG(5.0e-01,4.71273424736769097620e+00), RES(1.4337901642784592884e-3, 1.9190337944739187244e0)}, + {FN (sech), ARG(5.0e-01,-4.71273424736769097620e+00), RES(1.4337901642784592884e-3, -1.9190337944739187244e0)}, + {FN (sech), ARG(-5.0e-01,4.71273424736769097620e+00), RES(1.4337901642784592884e-3, -1.9190337944739187244e0)}, + {FN (sech), ARG(-5.0e-01,-4.71273424736769097620e+00), RES(1.4337901642784592884e-3, 1.9190337944739187244e0)}, + {FN (sech), ARG(5.0e-01,6.28284004019658492979e+00), RES(8.8681891425248302490e-1, 1.4149533035950644034e-4)}, + {FN (sech), ARG(5.0e-01,-6.28284004019658492979e+00), RES(8.8681891425248302490e-1, -1.4149533035950644034e-4)}, + {FN (sech), ARG(-5.0e-01,6.28284004019658492979e+00), RES(8.8681891425248302490e-1, -1.4149533035950644034e-4)}, + {FN (sech), ARG(-5.0e-01,-6.28284004019658492979e+00), RES(8.8681891425248302490e-1, 1.4149533035950644034e-4)}, + {FN (sech), ARG(5.0e-01,6.28353057416258753420e+00), RES(8.8681891425248302482e-1, -1.4149533035930568923e-4)}, + {FN (sech), ARG(5.0e-01,-6.28353057416258753420e+00), RES(8.8681891425248302482e-1, 1.4149533035930568923e-4)}, + {FN (sech), ARG(-5.0e-01,6.28353057416258753420e+00), RES(8.8681891425248302482e-1, 1.4149533035930568923e-4)}, + {FN (sech), ARG(-5.0e-01,-6.28353057416258753420e+00), RES(8.8681891425248302482e-1, -1.4149533035930568923e-4)}, + {FN (sech), ARG(5.0e-01,9.42443269378637893396e+00), RES(-8.8681891425248302477e-1, -1.4149533035919263990e-4)}, + {FN (sech), ARG(5.0e-01,-9.42443269378637893396e+00), RES(-8.8681891425248302477e-1, 1.4149533035919263990e-4)}, + {FN (sech), ARG(-5.0e-01,9.42443269378637893396e+00), RES(-8.8681891425248302477e-1, 1.4149533035919263990e-4)}, + {FN (sech), ARG(-5.0e-01,-9.42443269378637893396e+00), RES(-8.8681891425248302477e-1, -1.4149533035919263990e-4)}, + {FN (sech), ARG(5.0e-01,9.42512322775237976202e+00), RES(-8.8681891425248302464e-1, 1.4149533035889151322e-4)}, + {FN (sech), ARG(5.0e-01,-9.42512322775237976202e+00), RES(-8.8681891425248302464e-1, -1.4149533035889151322e-4)}, + {FN (sech), ARG(-5.0e-01,9.42512322775237976202e+00), RES(-8.8681891425248302464e-1, -1.4149533035889151322e-4)}, + {FN (sech), ARG(-5.0e-01,-9.42512322775237976202e+00), RES(-8.8681891425248302464e-1, 1.4149533035889151322e-4)}, + {FN (sech), ARG(1.0e+00,-3.45266983001243932001e-04), RES(6.4805426748157480499e-1, 1.7040802567651502899e-4)}, + {FN (sech), ARG(1.0e+00,3.45266983001243932001e-04), RES(6.4805426748157480499e-1, -1.7040802567651502899e-4)}, + {FN (sech), ARG(-1.0e+00,-3.45266983001243932001e-04), RES(6.4805426748157480499e-1, -1.7040802567651502899e-4)}, + {FN (sech), ARG(-1.0e+00,3.45266983001243932001e-04), RES(6.4805426748157480499e-1, 1.7040802567651502899e-4)}, + {FN (sech), ARG(1.0e+00,1.57045105981189525579e+00), RES(3.8576176225212213388e-4, -8.5091800407377002725e-1)}, + {FN (sech), ARG(1.0e+00,-1.57045105981189525579e+00), RES(3.8576176225212213388e-4, 8.5091800407377002725e-1)}, + {FN (sech), ARG(-1.0e+00,1.57045105981189525579e+00), RES(3.8576176225212213388e-4, 8.5091800407377002725e-1)}, + {FN (sech), ARG(-1.0e+00,-1.57045105981189525579e+00), RES(3.8576176225212213388e-4, -8.5091800407377002725e-1)}, + {FN (sech), ARG(1.0e+00,1.57114159377789786021e+00), RES(-3.8576176225198530591e-4, -8.5091800407377002734e-1)}, + {FN (sech), ARG(1.0e+00,-1.57114159377789786021e+00), RES(-3.8576176225198530591e-4, 8.5091800407377002734e-1)}, + {FN (sech), ARG(-1.0e+00,1.57114159377789786021e+00), RES(-3.8576176225198530591e-4, 8.5091800407377002734e-1)}, + {FN (sech), ARG(-1.0e+00,-1.57114159377789786021e+00), RES(-3.8576176225198530591e-4, -8.5091800407377002734e-1)}, + {FN (sech), ARG(1.0e+00,3.14124738660679181379e+00), RES(-6.4805426748157480499e-1, -1.7040802567660423428e-4)}, + {FN (sech), ARG(1.0e+00,-3.14124738660679181379e+00), RES(-6.4805426748157480499e-1, 1.7040802567660423428e-4)}, + {FN (sech), ARG(-1.0e+00,3.14124738660679181379e+00), RES(-6.4805426748157480499e-1, 1.7040802567660423428e-4)}, + {FN (sech), ARG(-1.0e+00,-3.14124738660679181379e+00), RES(-6.4805426748157480499e-1, -1.7040802567660423428e-4)}, + {FN (sech), ARG(1.0e+00,3.14193792057279441821e+00), RES(-6.4805426748157480499e-1, 1.7040802567648334832e-4)}, + {FN (sech), ARG(1.0e+00,-3.14193792057279441821e+00), RES(-6.4805426748157480499e-1, -1.7040802567648334832e-4)}, + {FN (sech), ARG(-1.0e+00,3.14193792057279441821e+00), RES(-6.4805426748157480499e-1, -1.7040802567648334832e-4)}, + {FN (sech), ARG(-1.0e+00,-3.14193792057279441821e+00), RES(-6.4805426748157480499e-1, 1.7040802567648334832e-4)}, + {FN (sech), ARG(1.0e+00,4.71204371340168837179e+00), RES(-3.8576176225225896185e-4, 8.5091800407377002716e-1)}, + {FN (sech), ARG(1.0e+00,-4.71204371340168837179e+00), RES(-3.8576176225225896185e-4, -8.5091800407377002716e-1)}, + {FN (sech), ARG(-1.0e+00,4.71204371340168837179e+00), RES(-3.8576176225225896185e-4, -8.5091800407377002716e-1)}, + {FN (sech), ARG(-1.0e+00,-4.71204371340168837179e+00), RES(-3.8576176225225896185e-4, 8.5091800407377002716e-1)}, + {FN (sech), ARG(1.0e+00,4.71273424736769097620e+00), RES(3.8576176225184847794e-4, 8.5091800407377002743e-1)}, + {FN (sech), ARG(1.0e+00,-4.71273424736769097620e+00), RES(3.8576176225184847794e-4, -8.5091800407377002743e-1)}, + {FN (sech), ARG(-1.0e+00,4.71273424736769097620e+00), RES(3.8576176225184847794e-4, -8.5091800407377002743e-1)}, + {FN (sech), ARG(-1.0e+00,-4.71273424736769097620e+00), RES(3.8576176225184847794e-4, 8.5091800407377002743e-1)}, + {FN (sech), ARG(1.0e+00,6.28284004019658492979e+00), RES(6.4805426748157480498e-1, 1.7040802567666467726e-4)}, + {FN (sech), ARG(1.0e+00,-6.28284004019658492979e+00), RES(6.4805426748157480498e-1, -1.7040802567666467726e-4)}, + {FN (sech), ARG(-1.0e+00,6.28284004019658492979e+00), RES(6.4805426748157480498e-1, -1.7040802567666467726e-4)}, + {FN (sech), ARG(-1.0e+00,-6.28284004019658492979e+00), RES(6.4805426748157480498e-1, 1.7040802567666467726e-4)}, + {FN (sech), ARG(1.0e+00,6.28353057416258753420e+00), RES(6.480542674815748050e-1, -1.7040802567642290534e-4)}, + {FN (sech), ARG(1.0e+00,-6.28353057416258753420e+00), RES(6.480542674815748050e-1, 1.7040802567642290534e-4)}, + {FN (sech), ARG(-1.0e+00,6.28353057416258753420e+00), RES(6.480542674815748050e-1, 1.7040802567642290534e-4)}, + {FN (sech), ARG(-1.0e+00,-6.28353057416258753420e+00), RES(6.480542674815748050e-1, -1.7040802567642290534e-4)}, + {FN (sech), ARG(1.0e+00,9.42443269378637893396e+00), RES(-6.4805426748157480501e-1, -1.7040802567628675588e-4)}, + {FN (sech), ARG(1.0e+00,-9.42443269378637893396e+00), RES(-6.4805426748157480501e-1, 1.7040802567628675588e-4)}, + {FN (sech), ARG(-1.0e+00,9.42443269378637893396e+00), RES(-6.4805426748157480501e-1, 1.7040802567628675588e-4)}, + {FN (sech), ARG(-1.0e+00,-9.42443269378637893396e+00), RES(-6.4805426748157480501e-1, -1.7040802567628675588e-4)}, + {FN (sech), ARG(1.0e+00,9.42512322775237976202e+00), RES(-6.4805426748157480504e-1, 1.704080256759240980e-4)}, + {FN (sech), ARG(1.0e+00,-9.42512322775237976202e+00), RES(-6.4805426748157480504e-1, -1.704080256759240980e-4)}, + {FN (sech), ARG(-1.0e+00,9.42512322775237976202e+00), RES(-6.4805426748157480504e-1, -1.704080256759240980e-4)}, + {FN (sech), ARG(-1.0e+00,-9.42512322775237976202e+00), RES(-6.4805426748157480504e-1, 1.704080256759240980e-4)}, + {FN (sech), ARG(2.0e+00,-3.45266983001243932001e-04), RES(2.6580221522968095407e-1, 8.8471445300374010365e-5)}, + {FN (sech), ARG(2.0e+00,3.45266983001243932001e-04), RES(2.6580221522968095407e-1, -8.8471445300374010365e-5)}, + {FN (sech), ARG(-2.0e+00,-3.45266983001243932001e-04), RES(2.6580221522968095407e-1, -8.8471445300374010365e-5)}, + {FN (sech), ARG(-2.0e+00,3.45266983001243932001e-04), RES(2.6580221522968095407e-1, 8.8471445300374010365e-5)}, + {FN (sech), ARG(2.0e+00,1.57045105981189525579e+00), RES(9.8749461907069845806e-5, -2.7572054583883740767e-1)}, + {FN (sech), ARG(2.0e+00,-1.57045105981189525579e+00), RES(9.8749461907069845806e-5, 2.7572054583883740767e-1)}, + {FN (sech), ARG(-2.0e+00,1.57045105981189525579e+00), RES(9.8749461907069845806e-5, 2.7572054583883740767e-1)}, + {FN (sech), ARG(-2.0e+00,-1.57045105981189525579e+00), RES(9.8749461907069845806e-5, -2.7572054583883740767e-1)}, + {FN (sech), ARG(2.0e+00,1.57114159377789786021e+00), RES(-9.8749461907034819809e-5, -2.7572054583883740768e-1)}, + {FN (sech), ARG(2.0e+00,-1.57114159377789786021e+00), RES(-9.8749461907034819809e-5, 2.7572054583883740768e-1)}, + {FN (sech), ARG(-2.0e+00,1.57114159377789786021e+00), RES(-9.8749461907034819809e-5, 2.7572054583883740768e-1)}, + {FN (sech), ARG(-2.0e+00,-1.57114159377789786021e+00), RES(-9.8749461907034819809e-5, -2.7572054583883740768e-1)}, + {FN (sech), ARG(2.0e+00,3.14124738660679181379e+00), RES(-2.6580221522968095405e-1, -8.8471445300420323443e-5)}, + {FN (sech), ARG(2.0e+00,-3.14124738660679181379e+00), RES(-2.6580221522968095405e-1, 8.8471445300420323443e-5)}, + {FN (sech), ARG(-2.0e+00,3.14124738660679181379e+00), RES(-2.6580221522968095405e-1, 8.8471445300420323443e-5)}, + {FN (sech), ARG(-2.0e+00,-3.14124738660679181379e+00), RES(-2.6580221522968095405e-1, -8.8471445300420323443e-5)}, + {FN (sech), ARG(2.0e+00,3.14193792057279441821e+00), RES(-2.6580221522968095407e-1, 8.8471445300357562580e-5)}, + {FN (sech), ARG(2.0e+00,-3.14193792057279441821e+00), RES(-2.6580221522968095407e-1, -8.8471445300357562580e-5)}, + {FN (sech), ARG(-2.0e+00,3.14193792057279441821e+00), RES(-2.6580221522968095407e-1, -8.8471445300357562580e-5)}, + {FN (sech), ARG(-2.0e+00,-3.14193792057279441821e+00), RES(-2.6580221522968095407e-1, 8.8471445300357562580e-5)}, + {FN (sech), ARG(2.0e+00,4.71204371340168837179e+00), RES(-9.8749461907104871804e-5, 2.7572054583883740766e-1)}, + {FN (sech), ARG(2.0e+00,-4.71204371340168837179e+00), RES(-9.8749461907104871804e-5, -2.7572054583883740766e-1)}, + {FN (sech), ARG(-2.0e+00,4.71204371340168837179e+00), RES(-9.8749461907104871804e-5, -2.7572054583883740766e-1)}, + {FN (sech), ARG(-2.0e+00,-4.71204371340168837179e+00), RES(-9.8749461907104871804e-5, 2.7572054583883740766e-1)}, + {FN (sech), ARG(2.0e+00,4.71273424736769097620e+00), RES(9.8749461906999793811e-5, 2.7572054583883740770e-1)}, + {FN (sech), ARG(2.0e+00,-4.71273424736769097620e+00), RES(9.8749461906999793811e-5, -2.7572054583883740770e-1)}, + {FN (sech), ARG(-2.0e+00,4.71273424736769097620e+00), RES(9.8749461906999793811e-5, -2.7572054583883740770e-1)}, + {FN (sech), ARG(-2.0e+00,-4.71273424736769097620e+00), RES(9.8749461906999793811e-5, 2.7572054583883740770e-1)}, + {FN (sech), ARG(2.0e+00,6.28284004019658492979e+00), RES(2.6580221522968095404e-1, 8.8471445300451703875e-5)}, + {FN (sech), ARG(2.0e+00,-6.28284004019658492979e+00), RES(2.6580221522968095404e-1, -8.8471445300451703875e-5)}, + {FN (sech), ARG(-2.0e+00,6.28284004019658492979e+00), RES(2.6580221522968095404e-1, -8.8471445300451703875e-5)}, + {FN (sech), ARG(-2.0e+00,-6.28284004019658492979e+00), RES(2.6580221522968095404e-1, 8.8471445300451703875e-5)}, + {FN (sech), ARG(2.0e+00,6.28353057416258753420e+00), RES(2.6580221522968095408e-1, -8.8471445300326182148e-5)}, + {FN (sech), ARG(2.0e+00,-6.28353057416258753420e+00), RES(2.6580221522968095408e-1, 8.8471445300326182148e-5)}, + {FN (sech), ARG(-2.0e+00,6.28353057416258753420e+00), RES(2.6580221522968095408e-1, 8.8471445300326182148e-5)}, + {FN (sech), ARG(-2.0e+00,-6.28353057416258753420e+00), RES(2.6580221522968095408e-1, -8.8471445300326182148e-5)}, + {FN (sech), ARG(2.0e+00,9.42443269378637893396e+00), RES(-2.6580221522968095410e-1, -8.8471445300255496873e-5)}, + {FN (sech), ARG(2.0e+00,-9.42443269378637893396e+00), RES(-2.6580221522968095410e-1, 8.8471445300255496873e-5)}, + {FN (sech), ARG(-2.0e+00,9.42443269378637893396e+00), RES(-2.6580221522968095410e-1, 8.8471445300255496873e-5)}, + {FN (sech), ARG(-2.0e+00,-9.42443269378637893396e+00), RES(-2.6580221522968095410e-1, -8.8471445300255496873e-5)}, + {FN (sech), ARG(2.0e+00,9.42512322775237976202e+00), RES(-2.6580221522968095416e-1, 8.8471445300067214283e-5)}, + {FN (sech), ARG(2.0e+00,-9.42512322775237976202e+00), RES(-2.6580221522968095416e-1, -8.8471445300067214283e-5)}, + {FN (sech), ARG(-2.0e+00,9.42512322775237976202e+00), RES(-2.6580221522968095416e-1, -8.8471445300067214283e-5)}, + {FN (sech), ARG(-2.0e+00,-9.42512322775237976202e+00), RES(-2.6580221522968095416e-1, 8.8471445300067214283e-5)}, + {FN (coth), ARG(0.0e+00,-3.45266983001243932001e-04), RES(0, 2.8963092606511032136e3)}, + {FN (coth), ARG(0.0e+00,3.45266983001243932001e-04), RES(0, -2.8963092606511032136e3)}, + {FN (coth), ARG(0.0e+00,1.57045105981189525579e+00), RES(0, -3.4526699672104134407e-4)}, + {FN (coth), ARG(0.0e+00,-1.57045105981189525579e+00), RES(0, 3.4526699672104134407e-4)}, + {FN (coth), ARG(0.0e+00,1.57114159377789786021e+00), RES(0, 3.4526699672091887937e-4)}, + {FN (coth), ARG(0.0e+00,-1.57114159377789786021e+00), RES(0, -3.4526699672091887937e-4)}, + {FN (coth), ARG(0.0e+00,3.14124738660679181379e+00), RES(0, 2.8963092606495870519e3)}, + {FN (coth), ARG(0.0e+00,-3.14124738660679181379e+00), RES(0, -2.8963092606495870519e3)}, + {FN (coth), ARG(0.0e+00,3.14193792057279441821e+00), RES(0, -2.8963092606516416684e3)}, + {FN (coth), ARG(0.0e+00,-3.14193792057279441821e+00), RES(0, 2.8963092606516416684e3)}, + {FN (coth), ARG(0.0e+00,4.71204371340168837179e+00), RES(0, -3.4526699672116380876e-4)}, + {FN (coth), ARG(0.0e+00,-4.71204371340168837179e+00), RES(0, 3.4526699672116380876e-4)}, + {FN (coth), ARG(0.0e+00,4.71273424736769097620e+00), RES(0, 3.4526699672079641468e-4)}, + {FN (coth), ARG(0.0e+00,-4.71273424736769097620e+00), RES(0, -3.4526699672079641468e-4)}, + {FN (coth), ARG(0.0e+00,6.28284004019658492979e+00), RES(0, 2.8963092606485597437e3)}, + {FN (coth), ARG(0.0e+00,-6.28284004019658492979e+00), RES(0, -2.8963092606485597437e3)}, + {FN (coth), ARG(0.0e+00,6.28353057416258753420e+00), RES(0, -2.8963092606526689766e3)}, + {FN (coth), ARG(0.0e+00,-6.28353057416258753420e+00), RES(0, 2.8963092606526689766e3)}, + {FN (coth), ARG(0.0e+00,9.42443269378637893396e+00), RES(0, 2.8963092606549830163e3)}, + {FN (coth), ARG(0.0e+00,-9.42443269378637893396e+00), RES(0, -2.8963092606549830163e3)}, + {FN (coth), ARG(0.0e+00,9.42512322775237976202e+00), RES(0, -2.8963092606611468657e3)}, + {FN (coth), ARG(0.0e+00,-9.42512322775237976202e+00), RES(0, 2.8963092606611468657e3)}, + {FN (coth), ARG(1.19209289550781250e-07,-3.45266983001243932001e-04), RES(9.9999992052715532101e-1, 2.8963089153841613713e3)}, + {FN (coth), ARG(1.19209289550781250e-07,3.45266983001243932001e-04), RES(9.9999992052715532101e-1, -2.8963089153841613713e3)}, + {FN (coth), ARG(-1.19209289550781250e-07,-3.45266983001243932001e-04), RES(-9.9999992052715532101e-1, 2.8963089153841613713e3)}, + {FN (coth), ARG(-1.19209289550781250e-07,3.45266983001243932001e-04), RES(-9.9999992052715532101e-1, -2.8963089153841613713e3)}, + {FN (coth), ARG(1.19209289550781250e-07,1.57045105981189525579e+00), RES(1.1920930376163652990e-7, -3.4526699672103643753e-4)}, + {FN (coth), ARG(1.19209289550781250e-07,-1.57045105981189525579e+00), RES(1.1920930376163652990e-7, 3.4526699672103643753e-4)}, + {FN (coth), ARG(-1.19209289550781250e-07,1.57045105981189525579e+00), RES(-1.1920930376163652990e-7, -3.4526699672103643753e-4)}, + {FN (coth), ARG(-1.19209289550781250e-07,-1.57045105981189525579e+00), RES(-1.1920930376163652990e-7, 3.4526699672103643753e-4)}, + {FN (coth), ARG(1.19209289550781250e-07,1.57114159377789786021e+00), RES(1.1920930376163652989e-7, 3.4526699672091397283e-4)}, + {FN (coth), ARG(1.19209289550781250e-07,-1.57114159377789786021e+00), RES(1.1920930376163652989e-7, -3.4526699672091397283e-4)}, + {FN (coth), ARG(-1.19209289550781250e-07,1.57114159377789786021e+00), RES(-1.1920930376163652989e-7, 3.4526699672091397283e-4)}, + {FN (coth), ARG(-1.19209289550781250e-07,-1.57114159377789786021e+00), RES(-1.1920930376163652989e-7, -3.4526699672091397283e-4)}, + {FN (coth), ARG(1.19209289550781250e-07,3.14124738660679181379e+00), RES(9.9999992052610836018e-1, 2.8963089153826452102e3)}, + {FN (coth), ARG(1.19209289550781250e-07,-3.14124738660679181379e+00), RES(9.9999992052610836018e-1, -2.8963089153826452102e3)}, + {FN (coth), ARG(-1.19209289550781250e-07,3.14124738660679181379e+00), RES(-9.9999992052610836018e-1, 2.8963089153826452102e3)}, + {FN (coth), ARG(-1.19209289550781250e-07,-3.14124738660679181379e+00), RES(-9.9999992052610836018e-1, -2.8963089153826452102e3)}, + {FN (coth), ARG(1.19209289550781250e-07,3.14193792057279441821e+00), RES(9.9999992052752714224e-1, -2.8963089153846998260e3)}, + {FN (coth), ARG(1.19209289550781250e-07,-3.14193792057279441821e+00), RES(9.9999992052752714224e-1, 2.8963089153846998260e3)}, + {FN (coth), ARG(-1.19209289550781250e-07,3.14193792057279441821e+00), RES(-9.9999992052752714224e-1, -2.8963089153846998260e3)}, + {FN (coth), ARG(-1.19209289550781250e-07,-3.14193792057279441821e+00), RES(-9.9999992052752714224e-1, 2.8963089153846998260e3)}, + {FN (coth), ARG(1.19209289550781250e-07,4.71204371340168837179e+00), RES(1.1920930376163652991e-7, -3.4526699672115890222e-4)}, + {FN (coth), ARG(1.19209289550781250e-07,-4.71204371340168837179e+00), RES(1.1920930376163652991e-7, 3.4526699672115890222e-4)}, + {FN (coth), ARG(-1.19209289550781250e-07,4.71204371340168837179e+00), RES(-1.1920930376163652991e-7, -3.4526699672115890222e-4)}, + {FN (coth), ARG(-1.19209289550781250e-07,-4.71204371340168837179e+00), RES(-1.1920930376163652991e-7, 3.4526699672115890222e-4)}, + {FN (coth), ARG(1.19209289550781250e-07,4.71273424736769097620e+00), RES(1.1920930376163652988e-7, 3.4526699672079150814e-4)}, + {FN (coth), ARG(1.19209289550781250e-07,-4.71273424736769097620e+00), RES(1.1920930376163652988e-7, -3.4526699672079150814e-4)}, + {FN (coth), ARG(-1.19209289550781250e-07,4.71273424736769097620e+00), RES(-1.1920930376163652988e-7, 3.4526699672079150814e-4)}, + {FN (coth), ARG(-1.19209289550781250e-07,-4.71273424736769097620e+00), RES(-1.1920930376163652988e-7, -3.4526699672079150814e-4)}, + {FN (coth), ARG(1.19209289550781250e-07,6.28284004019658492979e+00), RES(9.9999992052539896914e-1, 2.8963089153816179024e3)}, + {FN (coth), ARG(1.19209289550781250e-07,-6.28284004019658492979e+00), RES(9.9999992052539896914e-1, -2.8963089153816179024e3)}, + {FN (coth), ARG(-1.19209289550781250e-07,6.28284004019658492979e+00), RES(-9.9999992052539896914e-1, 2.8963089153816179024e3)}, + {FN (coth), ARG(-1.19209289550781250e-07,-6.28284004019658492979e+00), RES(-9.9999992052539896914e-1, -2.8963089153816179024e3)}, + {FN (coth), ARG(1.19209289550781250e-07,6.28353057416258753420e+00), RES(9.9999992052823653327e-1, -2.8963089153857271338e3)}, + {FN (coth), ARG(1.19209289550781250e-07,-6.28353057416258753420e+00), RES(9.9999992052823653327e-1, 2.8963089153857271338e3)}, + {FN (coth), ARG(-1.19209289550781250e-07,6.28353057416258753420e+00), RES(-9.9999992052823653327e-1, -2.8963089153857271338e3)}, + {FN (coth), ARG(-1.19209289550781250e-07,-6.28353057416258753420e+00), RES(-9.9999992052823653327e-1, 2.8963089153857271338e3)}, + {FN (coth), ARG(1.19209289550781250e-07,9.42443269378637893396e+00), RES(9.9999992052983445585e-1, 2.8963089153880411727e3)}, + {FN (coth), ARG(1.19209289550781250e-07,-9.42443269378637893396e+00), RES(9.9999992052983445585e-1, -2.8963089153880411727e3)}, + {FN (coth), ARG(-1.19209289550781250e-07,9.42443269378637893396e+00), RES(-9.9999992052983445585e-1, 2.8963089153880411727e3)}, + {FN (coth), ARG(-1.19209289550781250e-07,-9.42443269378637893396e+00), RES(-9.9999992052983445585e-1, -2.8963089153880411727e3)}, + {FN (coth), ARG(1.19209289550781250e-07,9.42512322775237976202e+00), RES(9.9999992053409080205e-1, -2.8963089153942050199e3)}, + {FN (coth), ARG(1.19209289550781250e-07,-9.42512322775237976202e+00), RES(9.9999992053409080205e-1, 2.8963089153942050199e3)}, + {FN (coth), ARG(-1.19209289550781250e-07,9.42512322775237976202e+00), RES(-9.9999992053409080205e-1, -2.8963089153942050199e3)}, + {FN (coth), ARG(-1.19209289550781250e-07,-9.42512322775237976202e+00), RES(-9.9999992053409080205e-1, 2.8963089153942050199e3)}, + {FN (coth), ARG(5.0e-01,-3.45266983001243932001e-04), RES(2.1639524637389326002e0, 1.2715121175451222247e-3)}, + {FN (coth), ARG(5.0e-01,3.45266983001243932001e-04), RES(2.1639524637389326002e0, -1.2715121175451222247e-3)}, + {FN (coth), ARG(-5.0e-01,-3.45266983001243932001e-04), RES(-2.1639524637389326002e0, 1.2715121175451222247e-3)}, + {FN (coth), ARG(-5.0e-01,3.45266983001243932001e-04), RES(-2.1639524637389326002e0, -1.2715121175451222247e-3)}, + {FN (coth), ARG(5.0e-01,1.57045105981189525579e+00), RES(4.6211720058436229982e-1, -2.7153443992665204631e-4)}, + {FN (coth), ARG(5.0e-01,-1.57045105981189525579e+00), RES(4.6211720058436229982e-1, 2.7153443992665204631e-4)}, + {FN (coth), ARG(-5.0e-01,1.57045105981189525579e+00), RES(-4.6211720058436229982e-1, -2.7153443992665204631e-4)}, + {FN (coth), ARG(-5.0e-01,-1.57045105981189525579e+00), RES(-4.6211720058436229982e-1, 2.7153443992665204631e-4)}, + {FN (coth), ARG(5.0e-01,1.57114159377789786021e+00), RES(4.6211720058436229979e-1, 2.7153443992655573423e-4)}, + {FN (coth), ARG(5.0e-01,-1.57114159377789786021e+00), RES(4.6211720058436229979e-1, -2.7153443992655573423e-4)}, + {FN (coth), ARG(-5.0e-01,1.57114159377789786021e+00), RES(-4.6211720058436229979e-1, 2.7153443992655573423e-4)}, + {FN (coth), ARG(-5.0e-01,-1.57114159377789786021e+00), RES(-4.6211720058436229979e-1, -2.7153443992655573423e-4)}, + {FN (coth), ARG(5.0e-01,3.14124738660679181379e+00), RES(2.1639524637389325992e0, 1.2715121175457878359e-3)}, + {FN (coth), ARG(5.0e-01,-3.14124738660679181379e+00), RES(2.1639524637389325992e0, -1.2715121175457878359e-3)}, + {FN (coth), ARG(-5.0e-01,3.14124738660679181379e+00), RES(-2.1639524637389325992e0, 1.2715121175457878359e-3)}, + {FN (coth), ARG(-5.0e-01,-3.14124738660679181379e+00), RES(-2.1639524637389325992e0, -1.2715121175457878359e-3)}, + {FN (coth), ARG(5.0e-01,3.14193792057279441821e+00), RES(2.1639524637389326006e0, -1.2715121175448858373e-3)}, + {FN (coth), ARG(5.0e-01,-3.14193792057279441821e+00), RES(2.1639524637389326006e0, 1.2715121175448858373e-3)}, + {FN (coth), ARG(-5.0e-01,3.14193792057279441821e+00), RES(-2.1639524637389326006e0, -1.2715121175448858373e-3)}, + {FN (coth), ARG(-5.0e-01,-3.14193792057279441821e+00), RES(-2.1639524637389326006e0, 1.2715121175448858373e-3)}, + {FN (coth), ARG(5.0e-01,4.71204371340168837179e+00), RES(4.6211720058436229985e-1, -2.7153443992674835838e-4)}, + {FN (coth), ARG(5.0e-01,-4.71204371340168837179e+00), RES(4.6211720058436229985e-1, 2.7153443992674835838e-4)}, + {FN (coth), ARG(-5.0e-01,4.71204371340168837179e+00), RES(-4.6211720058436229985e-1, -2.7153443992674835838e-4)}, + {FN (coth), ARG(-5.0e-01,-4.71204371340168837179e+00), RES(-4.6211720058436229985e-1, 2.7153443992674835838e-4)}, + {FN (coth), ARG(5.0e-01,4.71273424736769097620e+00), RES(4.6211720058436229976e-1, 2.7153443992645942216e-4)}, + {FN (coth), ARG(5.0e-01,-4.71273424736769097620e+00), RES(4.6211720058436229976e-1, -2.7153443992645942216e-4)}, + {FN (coth), ARG(-5.0e-01,4.71273424736769097620e+00), RES(-4.6211720058436229976e-1, 2.7153443992645942216e-4)}, + {FN (coth), ARG(-5.0e-01,-4.71273424736769097620e+00), RES(-4.6211720058436229976e-1, -2.7153443992645942216e-4)}, + {FN (coth), ARG(5.0e-01,6.28284004019658492979e+00), RES(2.1639524637389325986e0, 1.2715121175462388352e-3)}, + {FN (coth), ARG(5.0e-01,-6.28284004019658492979e+00), RES(2.1639524637389325986e0, -1.2715121175462388352e-3)}, + {FN (coth), ARG(-5.0e-01,6.28284004019658492979e+00), RES(-2.1639524637389325986e0, 1.2715121175462388352e-3)}, + {FN (coth), ARG(-5.0e-01,-6.28284004019658492979e+00), RES(-2.1639524637389325986e0, -1.2715121175462388352e-3)}, + {FN (coth), ARG(5.0e-01,6.28353057416258753420e+00), RES(2.1639524637389326012e0, -1.2715121175444348380e-3)}, + {FN (coth), ARG(5.0e-01,-6.28353057416258753420e+00), RES(2.1639524637389326012e0, 1.2715121175444348380e-3)}, + {FN (coth), ARG(-5.0e-01,6.28353057416258753420e+00), RES(-2.1639524637389326012e0, -1.2715121175444348380e-3)}, + {FN (coth), ARG(-5.0e-01,-6.28353057416258753420e+00), RES(-2.1639524637389326012e0, 1.2715121175444348380e-3)}, + {FN (coth), ARG(5.0e-01,9.42443269378637893396e+00), RES(2.1639524637389326028e0, 1.2715121175434189499e-3)}, + {FN (coth), ARG(5.0e-01,-9.42443269378637893396e+00), RES(2.1639524637389326028e0, -1.2715121175434189499e-3)}, + {FN (coth), ARG(-5.0e-01,9.42443269378637893396e+00), RES(-2.1639524637389326028e0, 1.2715121175434189499e-3)}, + {FN (coth), ARG(-5.0e-01,-9.42443269378637893396e+00), RES(-2.1639524637389326028e0, -1.2715121175434189499e-3)}, + {FN (coth), ARG(5.0e-01,9.42512322775237976202e+00), RES(2.1639524637389326068e0, -1.2715121175407129542e-3)}, + {FN (coth), ARG(5.0e-01,-9.42512322775237976202e+00), RES(2.1639524637389326068e0, 1.2715121175407129542e-3)}, + {FN (coth), ARG(-5.0e-01,9.42512322775237976202e+00), RES(-2.1639524637389326068e0, -1.2715121175407129542e-3)}, + {FN (coth), ARG(-5.0e-01,-9.42512322775237976202e+00), RES(-2.1639524637389326068e0, 1.2715121175407129542e-3)}, + {FN (coth), ARG(1.0e+00,-3.45266983001243932001e-04), RES(1.3130351721648674824e0, 2.4999454374267620687e-4)}, + {FN (coth), ARG(1.0e+00,3.45266983001243932001e-04), RES(1.3130351721648674824e0, -2.4999454374267620687e-4)}, + {FN (coth), ARG(-1.0e+00,-3.45266983001243932001e-04), RES(-1.3130351721648674824e0, 2.4999454374267620687e-4)}, + {FN (coth), ARG(-1.0e+00,3.45266983001243932001e-04), RES(-1.3130351721648674824e0, -2.4999454374267620687e-4)}, + {FN (coth), ARG(1.0e+00,1.57045105981189525579e+00), RES(7.6159419408485704839e-1, -1.4500326960279979918e-4)}, + {FN (coth), ARG(1.0e+00,-1.57045105981189525579e+00), RES(7.6159419408485704839e-1, 1.4500326960279979918e-4)}, + {FN (coth), ARG(-1.0e+00,1.57045105981189525579e+00), RES(-7.6159419408485704839e-1, -1.4500326960279979918e-4)}, + {FN (coth), ARG(-1.0e+00,-1.57045105981189525579e+00), RES(-7.6159419408485704839e-1, 1.4500326960279979918e-4)}, + {FN (coth), ARG(1.0e+00,1.57114159377789786021e+00), RES(7.6159419408485704836e-1, 1.4500326960274836716e-4)}, + {FN (coth), ARG(1.0e+00,-1.57114159377789786021e+00), RES(7.6159419408485704836e-1, -1.4500326960274836716e-4)}, + {FN (coth), ARG(-1.0e+00,1.57114159377789786021e+00), RES(-7.6159419408485704836e-1, 1.4500326960274836716e-4)}, + {FN (coth), ARG(-1.0e+00,-1.57114159377789786021e+00), RES(-7.6159419408485704836e-1, -1.4500326960274836716e-4)}, + {FN (coth), ARG(1.0e+00,3.14124738660679181379e+00), RES(1.3130351721648674823e0, 2.4999454374280707411e-4)}, + {FN (coth), ARG(1.0e+00,-3.14124738660679181379e+00), RES(1.3130351721648674823e0, -2.4999454374280707411e-4)}, + {FN (coth), ARG(-1.0e+00,3.14124738660679181379e+00), RES(-1.3130351721648674823e0, 2.4999454374280707411e-4)}, + {FN (coth), ARG(-1.0e+00,-3.14124738660679181379e+00), RES(-1.3130351721648674823e0, -2.4999454374280707411e-4)}, + {FN (coth), ARG(1.0e+00,3.14193792057279441821e+00), RES(1.3130351721648674824e0, -2.4999454374262973024e-4)}, + {FN (coth), ARG(1.0e+00,-3.14193792057279441821e+00), RES(1.3130351721648674824e0, 2.4999454374262973024e-4)}, + {FN (coth), ARG(-1.0e+00,3.14193792057279441821e+00), RES(-1.3130351721648674824e0, -2.4999454374262973024e-4)}, + {FN (coth), ARG(-1.0e+00,-3.14193792057279441821e+00), RES(-1.3130351721648674824e0, 2.4999454374262973024e-4)}, + {FN (coth), ARG(1.0e+00,4.71204371340168837179e+00), RES(7.6159419408485704842e-1, -1.4500326960285123120e-4)}, + {FN (coth), ARG(1.0e+00,-4.71204371340168837179e+00), RES(7.6159419408485704842e-1, 1.4500326960285123120e-4)}, + {FN (coth), ARG(-1.0e+00,4.71204371340168837179e+00), RES(-7.6159419408485704842e-1, -1.4500326960285123120e-4)}, + {FN (coth), ARG(-1.0e+00,-4.71204371340168837179e+00), RES(-7.6159419408485704842e-1, 1.4500326960285123120e-4)}, + {FN (coth), ARG(1.0e+00,4.71273424736769097620e+00), RES(7.6159419408485704834e-1, 1.4500326960269693514e-4)}, + {FN (coth), ARG(1.0e+00,-4.71273424736769097620e+00), RES(7.6159419408485704834e-1, -1.4500326960269693514e-4)}, + {FN (coth), ARG(-1.0e+00,4.71273424736769097620e+00), RES(-7.6159419408485704834e-1, 1.4500326960269693514e-4)}, + {FN (coth), ARG(-1.0e+00,-4.71273424736769097620e+00), RES(-7.6159419408485704834e-1, -1.4500326960269693514e-4)}, + {FN (coth), ARG(1.0e+00,6.28284004019658492979e+00), RES(1.3130351721648674822e0, 2.4999454374289574604e-4)}, + {FN (coth), ARG(1.0e+00,-6.28284004019658492979e+00), RES(1.3130351721648674822e0, -2.4999454374289574604e-4)}, + {FN (coth), ARG(-1.0e+00,6.28284004019658492979e+00), RES(-1.3130351721648674822e0, 2.4999454374289574604e-4)}, + {FN (coth), ARG(-1.0e+00,-6.28284004019658492979e+00), RES(-1.3130351721648674822e0, -2.4999454374289574604e-4)}, + {FN (coth), ARG(1.0e+00,6.28353057416258753420e+00), RES(1.3130351721648674825e0, -2.4999454374254105830e-4)}, + {FN (coth), ARG(1.0e+00,-6.28353057416258753420e+00), RES(1.3130351721648674825e0, 2.4999454374254105830e-4)}, + {FN (coth), ARG(-1.0e+00,6.28353057416258753420e+00), RES(-1.3130351721648674825e0, -2.4999454374254105830e-4)}, + {FN (coth), ARG(-1.0e+00,-6.28353057416258753420e+00), RES(-1.3130351721648674825e0, 2.4999454374254105830e-4)}, + {FN (coth), ARG(1.0e+00,9.42443269378637893396e+00), RES(1.3130351721648674827e0, 2.4999454374234132236e-4)}, + {FN (coth), ARG(1.0e+00,-9.42443269378637893396e+00), RES(1.3130351721648674827e0, -2.4999454374234132236e-4)}, + {FN (coth), ARG(-1.0e+00,9.42443269378637893396e+00), RES(-1.3130351721648674827e0, 2.4999454374234132236e-4)}, + {FN (coth), ARG(-1.0e+00,-9.42443269378637893396e+00), RES(-1.3130351721648674827e0, -2.4999454374234132236e-4)}, + {FN (coth), ARG(1.0e+00,9.42512322775237976202e+00), RES(1.3130351721648674832e0, -2.4999454374180929074e-4)}, + {FN (coth), ARG(1.0e+00,-9.42512322775237976202e+00), RES(1.3130351721648674832e0, 2.4999454374180929074e-4)}, + {FN (coth), ARG(-1.0e+00,9.42512322775237976202e+00), RES(-1.3130351721648674832e0, -2.4999454374180929074e-4)}, + {FN (coth), ARG(-1.0e+00,-9.42512322775237976202e+00), RES(-1.3130351721648674832e0, 2.4999454374180929074e-4)}, + {FN (coth), ARG(2.0e+00,-3.45266983001243932001e-04), RES(1.0373147113268752620e0, 2.6247825506563736365e-5)}, + {FN (coth), ARG(2.0e+00,3.45266983001243932001e-04), RES(1.0373147113268752620e0, -2.6247825506563736365e-5)}, + {FN (coth), ARG(-2.0e+00,-3.45266983001243932001e-04), RES(-1.0373147113268752620e0, 2.6247825506563736365e-5)}, + {FN (coth), ARG(-2.0e+00,3.45266983001243932001e-04), RES(-1.0373147113268752620e0, -2.6247825506563736365e-5)}, + {FN (coth), ARG(2.0e+00,1.57045105981189525579e+00), RES(9.6402758819508310557e-1, -2.4393395410443750226e-5)}, + {FN (coth), ARG(2.0e+00,-1.57045105981189525579e+00), RES(9.6402758819508310557e-1, 2.4393395410443750226e-5)}, + {FN (coth), ARG(-2.0e+00,1.57045105981189525579e+00), RES(-9.6402758819508310557e-1, -2.4393395410443750226e-5)}, + {FN (coth), ARG(-2.0e+00,-1.57045105981189525579e+00), RES(-9.6402758819508310557e-1, 2.4393395410443750226e-5)}, + {FN (coth), ARG(2.0e+00,1.57114159377789786021e+00), RES(9.6402758819508310556e-1, 2.4393395410435097997e-5)}, + {FN (coth), ARG(2.0e+00,-1.57114159377789786021e+00), RES(9.6402758819508310556e-1, -2.4393395410435097997e-5)}, + {FN (coth), ARG(-2.0e+00,1.57114159377789786021e+00), RES(-9.6402758819508310556e-1, 2.4393395410435097997e-5)}, + {FN (coth), ARG(-2.0e+00,-1.57114159377789786021e+00), RES(-9.6402758819508310556e-1, -2.4393395410435097997e-5)}, + {FN (coth), ARG(2.0e+00,3.14124738660679181379e+00), RES(1.0373147113268752620e0, 2.6247825506577476589e-5)}, + {FN (coth), ARG(2.0e+00,-3.14124738660679181379e+00), RES(1.0373147113268752620e0, -2.6247825506577476589e-5)}, + {FN (coth), ARG(-2.0e+00,3.14124738660679181379e+00), RES(-1.0373147113268752620e0, 2.6247825506577476589e-5)}, + {FN (coth), ARG(-2.0e+00,-3.14124738660679181379e+00), RES(-1.0373147113268752620e0, -2.6247825506577476589e-5)}, + {FN (coth), ARG(2.0e+00,3.14193792057279441821e+00), RES(1.0373147113268752620e0, -2.6247825506558856616e-5)}, + {FN (coth), ARG(2.0e+00,-3.14193792057279441821e+00), RES(1.0373147113268752620e0, 2.6247825506558856616e-5)}, + {FN (coth), ARG(-2.0e+00,3.14193792057279441821e+00), RES(-1.0373147113268752620e0, -2.6247825506558856616e-5)}, + {FN (coth), ARG(-2.0e+00,-3.14193792057279441821e+00), RES(-1.0373147113268752620e0, 2.6247825506558856616e-5)}, + {FN (coth), ARG(2.0e+00,4.71204371340168837179e+00), RES(9.6402758819508310557e-1, -2.4393395410452402454e-5)}, + {FN (coth), ARG(2.0e+00,-4.71204371340168837179e+00), RES(9.6402758819508310557e-1, 2.4393395410452402454e-5)}, + {FN (coth), ARG(-2.0e+00,4.71204371340168837179e+00), RES(-9.6402758819508310557e-1, -2.4393395410452402454e-5)}, + {FN (coth), ARG(-2.0e+00,-4.71204371340168837179e+00), RES(-9.6402758819508310557e-1, 2.4393395410452402454e-5)}, + {FN (coth), ARG(2.0e+00,4.71273424736769097620e+00), RES(9.6402758819508310556e-1, 2.4393395410426445768e-5)}, + {FN (coth), ARG(2.0e+00,-4.71273424736769097620e+00), RES(9.6402758819508310556e-1, -2.4393395410426445768e-5)}, + {FN (coth), ARG(-2.0e+00,4.71273424736769097620e+00), RES(-9.6402758819508310556e-1, 2.4393395410426445768e-5)}, + {FN (coth), ARG(-2.0e+00,-4.71273424736769097620e+00), RES(-9.6402758819508310556e-1, -2.4393395410426445768e-5)}, + {FN (coth), ARG(2.0e+00,6.28284004019658492979e+00), RES(1.0373147113268752620e0, 2.6247825506586786575e-5)}, + {FN (coth), ARG(2.0e+00,-6.28284004019658492979e+00), RES(1.0373147113268752620e0, -2.6247825506586786575e-5)}, + {FN (coth), ARG(-2.0e+00,6.28284004019658492979e+00), RES(-1.0373147113268752620e0, 2.6247825506586786575e-5)}, + {FN (coth), ARG(-2.0e+00,-6.28284004019658492979e+00), RES(-1.0373147113268752620e0, -2.6247825506586786575e-5)}, + {FN (coth), ARG(2.0e+00,6.28353057416258753420e+00), RES(1.0373147113268752620e0, -2.6247825506549546629e-5)}, + {FN (coth), ARG(2.0e+00,-6.28353057416258753420e+00), RES(1.0373147113268752620e0, 2.6247825506549546629e-5)}, + {FN (coth), ARG(-2.0e+00,6.28353057416258753420e+00), RES(-1.0373147113268752620e0, -2.6247825506549546629e-5)}, + {FN (coth), ARG(-2.0e+00,-6.28353057416258753420e+00), RES(-1.0373147113268752620e0, 2.6247825506549546629e-5)}, + {FN (coth), ARG(2.0e+00,9.42443269378637893396e+00), RES(1.0373147113268752620e0, 2.6247825506528575631e-5)}, + {FN (coth), ARG(2.0e+00,-9.42443269378637893396e+00), RES(1.0373147113268752620e0, -2.6247825506528575631e-5)}, + {FN (coth), ARG(-2.0e+00,9.42443269378637893396e+00), RES(-1.0373147113268752620e0, 2.6247825506528575631e-5)}, + {FN (coth), ARG(-2.0e+00,-9.42443269378637893396e+00), RES(-1.0373147113268752620e0, -2.6247825506528575631e-5)}, + {FN (coth), ARG(2.0e+00,9.42512322775237976202e+00), RES(1.0373147113268752621e0, -2.6247825506472715712e-5)}, + {FN (coth), ARG(2.0e+00,-9.42512322775237976202e+00), RES(1.0373147113268752621e0, 2.6247825506472715712e-5)}, + {FN (coth), ARG(-2.0e+00,9.42512322775237976202e+00), RES(-1.0373147113268752621e0, -2.6247825506472715712e-5)}, + {FN (coth), ARG(-2.0e+00,-9.42512322775237976202e+00), RES(-1.0373147113268752621e0, 2.6247825506472715712e-5)}, + {FN (arccsch), ARG(0.0e+00,1.19209289550781250e-07), RES(-1.6635532333438683873e1, -1.5707963267948966192e0)}, + {FN (arccsch), ARG(0.0e+00,-1.19209289550781250e-07), RES(1.6635532333438683873e1, 1.5707963267948966192e0)}, + {FN (arccsch), ARG(0.0e+00,5.0e-01), RES(-1.3169578969248167086e0, -1.5707963267948966192e0)}, + {FN (arccsch), ARG(0.0e+00,-5.0e-01), RES(1.3169578969248167086e0, 1.5707963267948966192e0)}, + {FN (arccsch), ARG(0.0e+00,1.0e+00), RES(0, -1.5707963267948966192e0)}, + {FN (arccsch), ARG(0.0e+00,-1.0e+00), RES(0, 1.5707963267948966192e0)}, + {FN (arccsch), ARG(0.0e+00,2.0e+00), RES(0, -5.2359877559829887308e-1)}, + {FN (arccsch), ARG(0.0e+00,-2.0e+00), RES(0, 5.2359877559829887308e-1)}, + {FN (arccsch), ARG(0.0e+00,8.3886080e+06), RES(0, -1.1920928955078153234e-7)}, + {FN (arccsch), ARG(0.0e+00,-8.3886080e+06), RES(0, 1.1920928955078153234e-7)}, + {FN (arccsch), ARG(1.19209289550781250e-07,0.0e+00), RES(1.6635532333438690979e1, 0.0)}, + {FN (arccsch), ARG(-1.19209289550781250e-07,0.0e+00), RES(-1.6635532333438690979e1, 0.0)}, + {FN (arccsch), ARG(1.19209289550781250e-07,1.19209289550781250e-07), RES(1.6288958743158714771e1, -7.8539816339744120419e-1)}, + {FN (arccsch), ARG(1.19209289550781250e-07,-1.19209289550781250e-07), RES(1.6288958743158714771e1, 7.8539816339744120419e-1)}, + {FN (arccsch), ARG(-1.19209289550781250e-07,1.19209289550781250e-07), RES(-1.6288958743158714771e1, -7.8539816339744120419e-1)}, + {FN (arccsch), ARG(-1.19209289550781250e-07,-1.19209289550781250e-07), RES(-1.6288958743158714771e1, 7.8539816339744120419e-1)}, + {FN (arccsch), ARG(1.19209289550781250e-07,5.0e-01), RES(1.3169578969247948296e0, -1.5707960514928349710e0)}, + {FN (arccsch), ARG(1.19209289550781250e-07,-5.0e-01), RES(1.3169578969247948296e0, 1.5707960514928349710e0)}, + {FN (arccsch), ARG(-1.19209289550781250e-07,5.0e-01), RES(-1.3169578969247948296e0, -1.5707960514928349710e0)}, + {FN (arccsch), ARG(-1.19209289550781250e-07,-5.0e-01), RES(-1.3169578969247948296e0, 1.5707960514928349710e0)}, + {FN (arccsch), ARG(1.19209289550781250e-07,1.0e+00), RES(3.4526696585164602772e-4, -1.5704510597947457801e0)}, + {FN (arccsch), ARG(1.19209289550781250e-07,-1.0e+00), RES(3.4526696585164602772e-4, 1.5704510597947457801e0)}, + {FN (arccsch), ARG(-1.19209289550781250e-07,1.0e+00), RES(-3.4526696585164602772e-4, -1.5704510597947457801e0)}, + {FN (arccsch), ARG(-1.19209289550781250e-07,-1.0e+00), RES(-3.4526696585164602772e-4, 1.5704510597947457801e0)}, + {FN (arccsch), ARG(1.19209289550781250e-07,2.0e+00), RES(3.4412757706023621662e-8, -5.2359877559829648006e-1)}, + {FN (arccsch), ARG(1.19209289550781250e-07,-2.0e+00), RES(3.4412757706023621662e-8, 5.2359877559829648006e-1)}, + {FN (arccsch), ARG(-1.19209289550781250e-07,2.0e+00), RES(-3.4412757706023621662e-8, -5.2359877559829648006e-1)}, + {FN (arccsch), ARG(-1.19209289550781250e-07,-2.0e+00), RES(-3.4412757706023621662e-8, 5.2359877559829648006e-1)}, + {FN (arccsch), ARG(1.19209289550781250e-07,8.3886080e+06), RES(1.6940658945086127152e-21, -1.1920928955078153234e-7)}, + {FN (arccsch), ARG(1.19209289550781250e-07,-8.3886080e+06), RES(1.6940658945086127152e-21, 1.1920928955078153234e-7)}, + {FN (arccsch), ARG(-1.19209289550781250e-07,8.3886080e+06), RES(-1.6940658945086127152e-21, -1.1920928955078153234e-7)}, + {FN (arccsch), ARG(-1.19209289550781250e-07,-8.3886080e+06), RES(-1.6940658945086127152e-21, 1.1920928955078153234e-7)}, + {FN (arccsch), ARG(5.0e-01,0.0e+00), RES(1.4436354751788103425e0, 0.0)}, + {FN (arccsch), ARG(-5.0e-01,0.0e+00), RES(-1.4436354751788103425e0, 0.0)}, + {FN (arccsch), ARG(5.0e-01,1.19209289550781250e-07), RES(1.4436354751787798371e0, -2.1324805998799710740e-7)}, + {FN (arccsch), ARG(5.0e-01,-1.19209289550781250e-07), RES(1.4436354751787798371e0, 2.1324805998799710740e-7)}, + {FN (arccsch), ARG(-5.0e-01,1.19209289550781250e-07), RES(-1.4436354751787798371e0, -2.1324805998799710740e-7)}, + {FN (arccsch), ARG(-5.0e-01,-1.19209289550781250e-07), RES(-1.4436354751787798371e0, 2.1324805998799710740e-7)}, + {FN (arccsch), ARG(5.0e-01,5.0e-01), RES(1.0612750619050356520e0, -6.6623943249251525510e-1)}, + {FN (arccsch), ARG(5.0e-01,-5.0e-01), RES(1.0612750619050356520e0, 6.6623943249251525510e-1)}, + {FN (arccsch), ARG(-5.0e-01,5.0e-01), RES(-1.0612750619050356520e0, -6.6623943249251525510e-1)}, + {FN (arccsch), ARG(-5.0e-01,-5.0e-01), RES(-1.0612750619050356520e0, 6.6623943249251525510e-1)}, + {FN (arccsch), ARG(5.0e-01,1.0e+00), RES(5.3321829058411214108e-1, -7.7308635671950473342e-1)}, + {FN (arccsch), ARG(5.0e-01,-1.0e+00), RES(5.3321829058411214108e-1, 7.7308635671950473342e-1)}, + {FN (arccsch), ARG(-5.0e-01,1.0e+00), RES(-5.3321829058411214108e-1, -7.7308635671950473342e-1)}, + {FN (arccsch), ARG(-5.0e-01,-1.0e+00), RES(-5.3321829058411214108e-1, 7.7308635671950473342e-1)}, + {FN (arccsch), ARG(5.0e-01,2.0e+00), RES(1.3261586085051183885e-1, -4.8530734047334251250e-1)}, + {FN (arccsch), ARG(5.0e-01,-2.0e+00), RES(1.3261586085051183885e-1, 4.8530734047334251250e-1)}, + {FN (arccsch), ARG(-5.0e-01,2.0e+00), RES(-1.3261586085051183885e-1, -4.8530734047334251250e-1)}, + {FN (arccsch), ARG(-5.0e-01,-2.0e+00), RES(-1.3261586085051183885e-1, 4.8530734047334251250e-1)}, + {FN (arccsch), ARG(5.0e-01,8.3886080e+06), RES(7.1054273576010271023e-15, -1.1920928955078110883e-7)}, + {FN (arccsch), ARG(5.0e-01,-8.3886080e+06), RES(7.1054273576010271023e-15, 1.1920928955078110883e-7)}, + {FN (arccsch), ARG(-5.0e-01,8.3886080e+06), RES(-7.1054273576010271023e-15, -1.1920928955078110883e-7)}, + {FN (arccsch), ARG(-5.0e-01,-8.3886080e+06), RES(-7.1054273576010271023e-15, 1.1920928955078110883e-7)}, + {FN (arccsch), ARG(1.0e+00,0.0e+00), RES(8.8137358701954302523e-1, 0.0)}, + {FN (arccsch), ARG(-1.0e+00,0.0e+00), RES(-8.8137358701954302523e-1, 0.0)}, + {FN (arccsch), ARG(1.0e+00,1.19209289550781250e-07), RES(8.8137358701953548879e-1, -8.4293697021787414719e-8)}, + {FN (arccsch), ARG(1.0e+00,-1.19209289550781250e-07), RES(8.8137358701953548879e-1, 8.4293697021787414719e-8)}, + {FN (arccsch), ARG(-1.0e+00,1.19209289550781250e-07), RES(-8.8137358701953548879e-1, -8.4293697021787414719e-8)}, + {FN (arccsch), ARG(-1.0e+00,-1.19209289550781250e-07), RES(-8.8137358701953548879e-1, 8.4293697021787414719e-8)}, + {FN (arccsch), ARG(1.0e+00,5.0e-01), RES(7.6388434595371104541e-1, -3.1122579724476109533e-1)}, + {FN (arccsch), ARG(1.0e+00,-5.0e-01), RES(7.6388434595371104541e-1, 3.1122579724476109533e-1)}, + {FN (arccsch), ARG(-1.0e+00,5.0e-01), RES(-7.6388434595371104541e-1, -3.1122579724476109533e-1)}, + {FN (arccsch), ARG(-1.0e+00,-5.0e-01), RES(-7.6388434595371104541e-1, 3.1122579724476109533e-1)}, + {FN (arccsch), ARG(1.0e+00,1.0e+00), RES(5.3063753095251782602e-1, -4.5227844715119068206e-1)}, + {FN (arccsch), ARG(1.0e+00,-1.0e+00), RES(5.3063753095251782602e-1, 4.5227844715119068206e-1)}, + {FN (arccsch), ARG(-1.0e+00,1.0e+00), RES(-5.3063753095251782602e-1, -4.5227844715119068206e-1)}, + {FN (arccsch), ARG(-1.0e+00,-1.0e+00), RES(-5.3063753095251782602e-1, 4.5227844715119068206e-1)}, + {FN (arccsch), ARG(1.0e+00,2.0e+00), RES(2.1561241855582964497e-1, -4.0158639166780606828e-1)}, + {FN (arccsch), ARG(1.0e+00,-2.0e+00), RES(2.1561241855582964497e-1, 4.0158639166780606828e-1)}, + {FN (arccsch), ARG(-1.0e+00,2.0e+00), RES(-2.1561241855582964497e-1, -4.0158639166780606828e-1)}, + {FN (arccsch), ARG(-1.0e+00,-2.0e+00), RES(-2.1561241855582964497e-1, 4.0158639166780606828e-1)}, + {FN (arccsch), ARG(1.0e+00,8.3886080e+06), RES(1.4210854715201902743e-14, -1.1920928955077983828e-7)}, + {FN (arccsch), ARG(1.0e+00,-8.3886080e+06), RES(1.4210854715201902743e-14, 1.1920928955077983828e-7)}, + {FN (arccsch), ARG(-1.0e+00,8.3886080e+06), RES(-1.4210854715201902743e-14, -1.1920928955077983828e-7)}, + {FN (arccsch), ARG(-1.0e+00,-8.3886080e+06), RES(-1.4210854715201902743e-14, 1.1920928955077983828e-7)}, + {FN (arccsch), ARG(2.0e+00,0.0e+00), RES(4.8121182505960344750e-1, 0.0)}, + {FN (arccsch), ARG(-2.0e+00,0.0e+00), RES(-4.8121182505960344750e-1, 0.0)}, + {FN (arccsch), ARG(2.0e+00,1.19209289550781250e-07), RES(4.8121182505960201756e-1, -2.6656007498500149811e-8)}, + {FN (arccsch), ARG(2.0e+00,-1.19209289550781250e-07), RES(4.8121182505960201756e-1, 2.6656007498500149811e-8)}, + {FN (arccsch), ARG(-2.0e+00,1.19209289550781250e-07), RES(-4.8121182505960201756e-1, -2.6656007498500149811e-8)}, + {FN (arccsch), ARG(-2.0e+00,-1.19209289550781250e-07), RES(-4.8121182505960201756e-1, 2.6656007498500149811e-8)}, + {FN (arccsch), ARG(2.0e+00,5.0e-01), RES(4.5717847686917515748e-1, -1.0654050295275703990e-1)}, + {FN (arccsch), ARG(2.0e+00,-5.0e-01), RES(4.5717847686917515748e-1, 1.0654050295275703990e-1)}, + {FN (arccsch), ARG(-2.0e+00,5.0e-01), RES(-4.5717847686917515748e-1, -1.0654050295275703990e-1)}, + {FN (arccsch), ARG(-2.0e+00,-5.0e-01), RES(-4.5717847686917515748e-1, 1.0654050295275703990e-1)}, + {FN (arccsch), ARG(2.0e+00,1.0e+00), RES(3.9656823011232897892e-1, -1.8631805410781552582e-1)}, + {FN (arccsch), ARG(2.0e+00,-1.0e+00), RES(3.9656823011232897892e-1, 1.8631805410781552582e-1)}, + {FN (arccsch), ARG(-2.0e+00,1.0e+00), RES(-3.9656823011232897892e-1, -1.8631805410781552582e-1)}, + {FN (arccsch), ARG(-2.0e+00,-1.0e+00), RES(-3.9656823011232897892e-1, 1.8631805410781552582e-1)}, + {FN (arccsch), ARG(2.0e+00,2.0e+00), RES(2.5489557334055081773e-1, -2.4452216513554014646e-1)}, + {FN (arccsch), ARG(2.0e+00,-2.0e+00), RES(2.5489557334055081773e-1, 2.4452216513554014646e-1)}, + {FN (arccsch), ARG(-2.0e+00,2.0e+00), RES(-2.5489557334055081773e-1, -2.4452216513554014646e-1)}, + {FN (arccsch), ARG(-2.0e+00,-2.0e+00), RES(-2.5489557334055081773e-1, 2.4452216513554014646e-1)}, + {FN (arccsch), ARG(2.0e+00,8.3886080e+06), RES(2.8421709430402593796e-14, -1.1920928955077475608e-7)}, + {FN (arccsch), ARG(2.0e+00,-8.3886080e+06), RES(2.8421709430402593796e-14, 1.1920928955077475608e-7)}, + {FN (arccsch), ARG(-2.0e+00,8.3886080e+06), RES(-2.8421709430402593796e-14, -1.1920928955077475608e-7)}, + {FN (arccsch), ARG(-2.0e+00,-8.3886080e+06), RES(-2.8421709430402593796e-14, 1.1920928955077475608e-7)}, + {FN (arccsch), ARG(8.3886080e+06,0.0e+00), RES(1.1920928955078096766e-7, 0.0)}, + {FN (arccsch), ARG(-8.3886080e+06,0.0e+00), RES(-1.1920928955078096766e-7, 0.0)}, + {FN (arccsch), ARG(8.3886080e+06,1.19209289550781250e-07), RES(1.1920928955078096766e-7, -1.6940658945085886411e-21)}, + {FN (arccsch), ARG(8.3886080e+06,-1.19209289550781250e-07), RES(1.1920928955078096766e-7, 1.6940658945085886411e-21)}, + {FN (arccsch), ARG(-8.3886080e+06,1.19209289550781250e-07), RES(-1.1920928955078096766e-7, -1.6940658945085886411e-21)}, + {FN (arccsch), ARG(-8.3886080e+06,-1.19209289550781250e-07), RES(-1.1920928955078096766e-7, 1.6940658945085886411e-21)}, + {FN (arccsch), ARG(8.3886080e+06,5.0e-01), RES(1.1920928955078054414e-7, -7.1054273576009261281e-15)}, + {FN (arccsch), ARG(8.3886080e+06,-5.0e-01), RES(1.1920928955078054414e-7, 7.1054273576009261281e-15)}, + {FN (arccsch), ARG(-8.3886080e+06,5.0e-01), RES(-1.1920928955078054414e-7, -7.1054273576009261281e-15)}, + {FN (arccsch), ARG(-8.3886080e+06,-5.0e-01), RES(-1.1920928955078054414e-7, 7.1054273576009261281e-15)}, + {FN (arccsch), ARG(8.3886080e+06,1.0e+00), RES(1.1920928955077927359e-7, -1.4210854715201700795e-14)}, + {FN (arccsch), ARG(8.3886080e+06,-1.0e+00), RES(1.1920928955077927359e-7, 1.4210854715201700795e-14)}, + {FN (arccsch), ARG(-8.3886080e+06,1.0e+00), RES(-1.1920928955077927359e-7, -1.4210854715201700795e-14)}, + {FN (arccsch), ARG(-8.3886080e+06,-1.0e+00), RES(-1.1920928955077927359e-7, 1.4210854715201700795e-14)}, + {FN (arccsch), ARG(8.3886080e+06,2.0e+00), RES(1.1920928955077419139e-7, -2.8421709430402189899e-14)}, + {FN (arccsch), ARG(8.3886080e+06,-2.0e+00), RES(1.1920928955077419139e-7, 2.8421709430402189899e-14)}, + {FN (arccsch), ARG(-8.3886080e+06,2.0e+00), RES(-1.1920928955077419139e-7, -2.8421709430402189899e-14)}, + {FN (arccsch), ARG(-8.3886080e+06,-2.0e+00), RES(-1.1920928955077419139e-7, 2.8421709430402189899e-14)}, + {FN (arccsch), ARG(8.3886080e+06,8.3886080e+06), RES(5.9604644775390695586e-8, -5.9604644775390554414e-8)}, + {FN (arccsch), ARG(8.3886080e+06,-8.3886080e+06), RES(5.9604644775390695586e-8, 5.9604644775390554414e-8)}, + {FN (arccsch), ARG(-8.3886080e+06,8.3886080e+06), RES(-5.9604644775390695586e-8, -5.9604644775390554414e-8)}, + {FN (arccsch), ARG(-8.3886080e+06,-8.3886080e+06), RES(-5.9604644775390695586e-8, 5.9604644775390554414e-8)}, + {FN (arcsech), ARG(0.0e+00,1.19209289550781250e-07), RES(1.6635532333438690979e1, -1.5707963267948966192e0)}, + {FN (arcsech), ARG(0.0e+00,-1.19209289550781250e-07), RES(1.6635532333438690979e1, 1.5707963267948966192e0)}, + {FN (arcsech), ARG(0.0e+00,5.0e-01), RES(1.4436354751788103425e0, -1.5707963267948966192e0)}, + {FN (arcsech), ARG(0.0e+00,-5.0e-01), RES(1.4436354751788103425e0, 1.5707963267948966192e0)}, + {FN (arcsech), ARG(0.0e+00,1.0e+00), RES(8.8137358701954302523e-1, -1.5707963267948966192e0)}, + {FN (arcsech), ARG(0.0e+00,-1.0e+00), RES(8.8137358701954302523e-1, 1.5707963267948966192e0)}, + {FN (arcsech), ARG(0.0e+00,2.0e+00), RES(4.8121182505960344750e-1, -1.5707963267948966192e0)}, + {FN (arcsech), ARG(0.0e+00,-2.0e+00), RES(4.8121182505960344750e-1, 1.5707963267948966192e0)}, + {FN (arcsech), ARG(0.0e+00,8.3886080e+06), RES(1.1920928955078096766e-7, -1.5707963267948966192e0)}, + {FN (arcsech), ARG(0.0e+00,-8.3886080e+06), RES(1.1920928955078096766e-7, 1.5707963267948966192e0)}, + {FN (arcsech), ARG(1.19209289550781250e-07,0.0e+00), RES(1.6635532333438683873e1, 0.0)}, + {FN (arcsech), ARG(-1.19209289550781250e-07,0.0e+00), RES(1.6635532333438683873e1, 3.1415926535897932385e0)}, + {FN (arcsech), ARG(1.19209289550781250e-07,1.19209289550781250e-07), RES(1.6288958743158714771e1, -7.8539816339745541504e-1)}, + {FN (arcsech), ARG(1.19209289550781250e-07,-1.19209289550781250e-07), RES(1.6288958743158714771e1, 7.8539816339745541504e-1)}, + {FN (arcsech), ARG(-1.19209289550781250e-07,1.19209289550781250e-07), RES(1.6288958743158714771e1, -2.3561944901923378234e0)}, + {FN (arcsech), ARG(-1.19209289550781250e-07,-1.19209289550781250e-07), RES(1.6288958743158714771e1, 2.3561944901923378234e0)}, + {FN (arcsech), ARG(1.19209289550781250e-07,5.0e-01), RES(1.4436354751787798371e0, -1.5707961135468366312e0)}, + {FN (arcsech), ARG(1.19209289550781250e-07,-5.0e-01), RES(1.4436354751787798371e0, 1.5707961135468366312e0)}, + {FN (arcsech), ARG(-1.19209289550781250e-07,5.0e-01), RES(1.4436354751787798371e0, -1.5707965400429566072e0)}, + {FN (arcsech), ARG(-1.19209289550781250e-07,-5.0e-01), RES(1.4436354751787798371e0, 1.5707965400429566072e0)}, + {FN (arcsech), ARG(1.19209289550781250e-07,1.0e+00), RES(8.8137358701953548879e-1, -1.5707962425011995974e0)}, + {FN (arcsech), ARG(1.19209289550781250e-07,-1.0e+00), RES(8.8137358701953548879e-1, 1.5707962425011995974e0)}, + {FN (arcsech), ARG(-1.19209289550781250e-07,1.0e+00), RES(8.8137358701953548879e-1, -1.5707964110885936410e0)}, + {FN (arcsech), ARG(-1.19209289550781250e-07,-1.0e+00), RES(8.8137358701953548879e-1, 1.5707964110885936410e0)}, + {FN (arcsech), ARG(1.19209289550781250e-07,2.0e+00), RES(4.8121182505960201756e-1, -1.5707963001388891207e0)}, + {FN (arcsech), ARG(1.19209289550781250e-07,-2.0e+00), RES(4.8121182505960201756e-1, 1.5707963001388891207e0)}, + {FN (arcsech), ARG(-1.19209289550781250e-07,2.0e+00), RES(4.8121182505960201756e-1, -1.5707963534509041177e0)}, + {FN (arcsech), ARG(-1.19209289550781250e-07,-2.0e+00), RES(4.8121182505960201756e-1, 1.5707963534509041177e0)}, + {FN (arcsech), ARG(1.19209289550781250e-07,8.3886080e+06), RES(1.1920928955078096766e-7, -1.5707963267948966192e0)}, + {FN (arcsech), ARG(1.19209289550781250e-07,-8.3886080e+06), RES(1.1920928955078096766e-7, 1.5707963267948966192e0)}, + {FN (arcsech), ARG(-1.19209289550781250e-07,8.3886080e+06), RES(1.1920928955078096766e-7, -1.5707963267948966192e0)}, + {FN (arcsech), ARG(-1.19209289550781250e-07,-8.3886080e+06), RES(1.1920928955078096766e-7, 1.5707963267948966192e0)}, + {FN (arcsech), ARG(5.0e-01,0.0e+00), RES(1.3169578969248167086e0, 0.0)}, + {FN (arcsech), ARG(-5.0e-01,0.0e+00), RES(1.3169578969248167086e0, 3.1415926535897932385e0)}, + {FN (arcsech), ARG(5.0e-01,1.19209289550781250e-07), RES(1.3169578969247948296e0, -2.7530206164818516969e-7)}, + {FN (arcsech), ARG(5.0e-01,-1.19209289550781250e-07), RES(1.3169578969247948296e0, 2.7530206164818516969e-7)}, + {FN (arcsech), ARG(-5.0e-01,1.19209289550781250e-07), RES(1.3169578969247948296e0, -3.1415923782877315903e0)}, + {FN (arcsech), ARG(-5.0e-01,-1.19209289550781250e-07), RES(1.3169578969247948296e0, 3.1415923782877315903e0)}, + {FN (arcsech), ARG(5.0e-01,5.0e-01), RES(1.0612750619050356520e0, -9.0455689430238136413e-1)}, + {FN (arcsech), ARG(5.0e-01,-5.0e-01), RES(1.0612750619050356520e0, 9.0455689430238136413e-1)}, + {FN (arcsech), ARG(-5.0e-01,5.0e-01), RES(1.0612750619050356520e0, -2.2370357592874118743e0)}, + {FN (arcsech), ARG(-5.0e-01,-5.0e-01), RES(1.0612750619050356520e0, 2.2370357592874118743e0)}, + {FN (arcsech), ARG(5.0e-01,1.0e+00), RES(7.6388434595371104541e-1, -1.2595705295501355239e0)}, + {FN (arcsech), ARG(5.0e-01,-1.0e+00), RES(7.6388434595371104541e-1, 1.2595705295501355239e0)}, + {FN (arcsech), ARG(-5.0e-01,1.0e+00), RES(7.6388434595371104541e-1, -1.8820221240396577146e0)}, + {FN (arcsech), ARG(-5.0e-01,-1.0e+00), RES(7.6388434595371104541e-1, 1.8820221240396577146e0)}, + {FN (arcsech), ARG(5.0e-01,2.0e+00), RES(4.5717847686917515748e-1, -1.4642558238421395793e0)}, + {FN (arcsech), ARG(5.0e-01,-2.0e+00), RES(4.5717847686917515748e-1, 1.4642558238421395793e0)}, + {FN (arcsech), ARG(-5.0e-01,2.0e+00), RES(4.5717847686917515748e-1, -1.6773368297476536591e0)}, + {FN (arcsech), ARG(-5.0e-01,-2.0e+00), RES(4.5717847686917515748e-1, 1.6773368297476536591e0)}, + {FN (arcsech), ARG(5.0e-01,8.3886080e+06), RES(1.1920928955078054414e-7, -1.5707963267948895138e0)}, + {FN (arcsech), ARG(5.0e-01,-8.3886080e+06), RES(1.1920928955078054414e-7, 1.5707963267948895138e0)}, + {FN (arcsech), ARG(-5.0e-01,8.3886080e+06), RES(1.1920928955078054414e-7, -1.5707963267949037247e0)}, + {FN (arcsech), ARG(-5.0e-01,-8.3886080e+06), RES(1.1920928955078054414e-7, 1.5707963267949037247e0)}, + {FN (arcsech), ARG(1.0e+00,0.0e+00), RES(0e0, 0.0)}, + {FN (arcsech), ARG(-1.0e+00,0.0e+00), RES(0, 3.1415926535897932385e0)}, + {FN (arcsech), ARG(1.0e+00,1.19209289550781250e-07), RES(3.4526696585164602772e-4, -3.4526700015083915182e-4)}, + {FN (arcsech), ARG(1.0e+00,-1.19209289550781250e-07), RES(3.4526696585164602772e-4, 3.4526700015083915182e-4)}, + {FN (arcsech), ARG(-1.0e+00,1.19209289550781250e-07), RES(3.4526696585164602772e-4, -3.1412473865896423993e0)}, + {FN (arcsech), ARG(-1.0e+00,-1.19209289550781250e-07), RES(3.4526696585164602772e-4, 3.1412473865896423993e0)}, + {FN (arcsech), ARG(1.0e+00,5.0e-01), RES(5.3321829058411214108e-1, -7.9770997007539188581e-1)}, + {FN (arcsech), ARG(1.0e+00,-5.0e-01), RES(5.3321829058411214108e-1, 7.9770997007539188581e-1)}, + {FN (arcsech), ARG(-1.0e+00,5.0e-01), RES(5.3321829058411214108e-1, -2.3438826835144013527e0)}, + {FN (arcsech), ARG(-1.0e+00,-5.0e-01), RES(5.3321829058411214108e-1, 2.3438826835144013527e0)}, + {FN (arcsech), ARG(1.0e+00,1.0e+00), RES(5.3063753095251782602e-1, -1.1185178796437059372e0)}, + {FN (arcsech), ARG(1.0e+00,-1.0e+00), RES(5.3063753095251782602e-1, 1.1185178796437059372e0)}, + {FN (arcsech), ARG(-1.0e+00,1.0e+00), RES(5.3063753095251782602e-1, -2.0230747739460873013e0)}, + {FN (arcsech), ARG(-1.0e+00,-1.0e+00), RES(5.3063753095251782602e-1, 2.0230747739460873013e0)}, + {FN (arcsech), ARG(1.0e+00,2.0e+00), RES(3.9656823011232897892e-1, -1.3844782726870810934e0)}, + {FN (arcsech), ARG(1.0e+00,-2.0e+00), RES(3.9656823011232897892e-1, 1.3844782726870810934e0)}, + {FN (arcsech), ARG(-1.0e+00,2.0e+00), RES(3.9656823011232897892e-1, -1.7571143809027121451e0)}, + {FN (arcsech), ARG(-1.0e+00,-2.0e+00), RES(3.9656823011232897892e-1, 1.7571143809027121451e0)}, + {FN (arcsech), ARG(1.0e+00,8.3886080e+06), RES(1.1920928955077927359e-7, -1.5707963267948824084e0)}, + {FN (arcsech), ARG(1.0e+00,-8.3886080e+06), RES(1.1920928955077927359e-7, 1.5707963267948824084e0)}, + {FN (arcsech), ARG(-1.0e+00,8.3886080e+06), RES(1.1920928955077927359e-7, -1.5707963267949108301e0)}, + {FN (arcsech), ARG(-1.0e+00,-8.3886080e+06), RES(1.1920928955077927359e-7, 1.5707963267949108301e0)}, + {FN (arcsech), ARG(2.0e+00,0.0e+00), RES(0, 1.0471975511965977462e0)}, + {FN (arcsech), ARG(-2.0e+00,0.0e+00), RES(0, 2.0943951023931954923e0)}, + {FN (arcsech), ARG(2.0e+00,1.19209289550781250e-07), RES(3.4412757706023621662e-8, -1.0471975511966001392e0)}, + {FN (arcsech), ARG(2.0e+00,-1.19209289550781250e-07), RES(3.4412757706023621662e-8, 1.0471975511966001392e0)}, + {FN (arcsech), ARG(-2.0e+00,1.19209289550781250e-07), RES(3.4412757706023621662e-8, -2.0943951023931930993e0)}, + {FN (arcsech), ARG(-2.0e+00,-1.19209289550781250e-07), RES(3.4412757706023621662e-8, 2.0943951023931930993e0)}, + {FN (arcsech), ARG(2.0e+00,5.0e-01), RES(1.3261586085051183885e-1, -1.0854889863215541067e0)}, + {FN (arcsech), ARG(2.0e+00,-5.0e-01), RES(1.3261586085051183885e-1, 1.0854889863215541067e0)}, + {FN (arcsech), ARG(-2.0e+00,5.0e-01), RES(1.3261586085051183885e-1, -2.0561036672682391317e0)}, + {FN (arcsech), ARG(-2.0e+00,-5.0e-01), RES(1.3261586085051183885e-1, 2.0561036672682391317e0)}, + {FN (arcsech), ARG(2.0e+00,1.0e+00), RES(2.1561241855582964497e-1, -1.1692099351270905509e0)}, + {FN (arcsech), ARG(2.0e+00,-1.0e+00), RES(2.1561241855582964497e-1, 1.1692099351270905509e0)}, + {FN (arcsech), ARG(-2.0e+00,1.0e+00), RES(2.1561241855582964497e-1, -1.9723827184627026875e0)}, + {FN (arcsech), ARG(-2.0e+00,-1.0e+00), RES(2.1561241855582964497e-1, 1.9723827184627026875e0)}, + {FN (arcsech), ARG(2.0e+00,2.0e+00), RES(2.5489557334055081773e-1, -1.3262741616593564728e0)}, + {FN (arcsech), ARG(2.0e+00,-2.0e+00), RES(2.5489557334055081773e-1, 1.3262741616593564728e0)}, + {FN (arcsech), ARG(-2.0e+00,2.0e+00), RES(2.5489557334055081773e-1, -1.8153184919304367657e0)}, + {FN (arcsech), ARG(-2.0e+00,-2.0e+00), RES(2.5489557334055081773e-1, 1.8153184919304367657e0)}, + {FN (arcsech), ARG(2.0e+00,8.3886080e+06), RES(1.1920928955077419139e-7, -1.5707963267948681975e0)}, + {FN (arcsech), ARG(2.0e+00,-8.3886080e+06), RES(1.1920928955077419139e-7, 1.5707963267948681975e0)}, + {FN (arcsech), ARG(-2.0e+00,8.3886080e+06), RES(1.1920928955077419139e-7, -1.5707963267949250409e0)}, + {FN (arcsech), ARG(-2.0e+00,-8.3886080e+06), RES(1.1920928955077419139e-7, 1.5707963267949250409e0)}, + {FN (arcsech), ARG(8.3886080e+06,0.0e+00), RES(0, 1.5707962075856070684e0)}, + {FN (arcsech), ARG(-8.3886080e+06,0.0e+00), RES(0, 1.570796446004186170e0)}, + {FN (arcsech), ARG(8.3886080e+06,1.19209289550781250e-07), RES(1.6940658945086127152e-21, -1.5707962075856070684e0)}, + {FN (arcsech), ARG(8.3886080e+06,-1.19209289550781250e-07), RES(1.6940658945086127152e-21, 1.5707962075856070684e0)}, + {FN (arcsech), ARG(-8.3886080e+06,1.19209289550781250e-07), RES(1.6940658945086127152e-21, -1.570796446004186170e0)}, + {FN (arcsech), ARG(-8.3886080e+06,-1.19209289550781250e-07), RES(1.6940658945086127152e-21, 1.570796446004186170e0)}, + {FN (arcsech), ARG(8.3886080e+06,5.0e-01), RES(7.1054273576010271023e-15, -1.5707962075856070685e0)}, + {FN (arcsech), ARG(8.3886080e+06,-5.0e-01), RES(7.1054273576010271023e-15, 1.5707962075856070685e0)}, + {FN (arcsech), ARG(-8.3886080e+06,5.0e-01), RES(7.1054273576010271023e-15, -1.570796446004186170e0)}, + {FN (arcsech), ARG(-8.3886080e+06,-5.0e-01), RES(7.1054273576010271023e-15, 1.570796446004186170e0)}, + {FN (arcsech), ARG(8.3886080e+06,1.0e+00), RES(1.4210854715201902743e-14, -1.5707962075856070685e0)}, + {FN (arcsech), ARG(8.3886080e+06,-1.0e+00), RES(1.4210854715201902743e-14, 1.5707962075856070685e0)}, + {FN (arcsech), ARG(-8.3886080e+06,1.0e+00), RES(1.4210854715201902743e-14, -1.570796446004186170e0)}, + {FN (arcsech), ARG(-8.3886080e+06,-1.0e+00), RES(1.4210854715201902743e-14, 1.570796446004186170e0)}, + {FN (arcsech), ARG(8.3886080e+06,2.0e+00), RES(2.8421709430402593796e-14, -1.5707962075856070685e0)}, + {FN (arcsech), ARG(8.3886080e+06,-2.0e+00), RES(2.8421709430402593796e-14, 1.5707962075856070685e0)}, + {FN (arcsech), ARG(-8.3886080e+06,2.0e+00), RES(2.8421709430402593796e-14, -1.570796446004186170e0)}, + {FN (arcsech), ARG(-8.3886080e+06,-2.0e+00), RES(2.8421709430402593796e-14, 1.570796446004186170e0)}, + {FN (arcsech), ARG(8.3886080e+06,8.3886080e+06), RES(5.9604644775390695586e-8, -1.5707962671902518438e0)}, + {FN (arcsech), ARG(8.3886080e+06,-8.3886080e+06), RES(5.9604644775390695586e-8, 1.5707962671902518438e0)}, + {FN (arcsech), ARG(-8.3886080e+06,8.3886080e+06), RES(5.9604644775390695586e-8, -1.5707963863995413946e0)}, + {FN (arcsech), ARG(-8.3886080e+06,-8.3886080e+06), RES(5.9604644775390695586e-8, 1.5707963863995413946e0)}, + {FN (arccoth), ARG(0.0e+00,1.19209289550781250e-07), RES(0, -1.5707962075856070685e0)}, + {FN (arccoth), ARG(0.0e+00,-1.19209289550781250e-07), RES(0, 1.5707962075856070685e0)}, + {FN (arccoth), ARG(0.0e+00,5.0e-01), RES(0, -1.1071487177940905030e0)}, + {FN (arccoth), ARG(0.0e+00,-5.0e-01), RES(0, 1.1071487177940905030e0)}, + {FN (arccoth), ARG(0.0e+00,1.0e+00), RES(0, -7.8539816339744830962e-1)}, + {FN (arccoth), ARG(0.0e+00,-1.0e+00), RES(0, 7.8539816339744830962e-1)}, + {FN (arccoth), ARG(0.0e+00,2.0e+00), RES(0, -4.6364760900080611621e-1)}, + {FN (arccoth), ARG(0.0e+00,-2.0e+00), RES(0, 4.6364760900080611621e-1)}, + {FN (arccoth), ARG(0.0e+00,8.3886080e+06), RES(0, -1.1920928955078068531e-7)}, + {FN (arccoth), ARG(0.0e+00,-8.3886080e+06), RES(0, 1.1920928955078068531e-7)}, + {FN (arccoth), ARG(1.19209289550781250e-07,0.0e+00), RES(1.1920928955078181469e-7, -1.5707963267948966192e0)}, + {FN (arccoth), ARG(-1.19209289550781250e-07,0.0e+00), RES(-1.1920928955078181469e-7, 1.5707963267948966192e0)}, + {FN (arccoth), ARG(1.19209289550781250e-07,1.19209289550781250e-07), RES(1.1920928955078012062e-7, -1.5707962075856070684e0)}, + {FN (arccoth), ARG(1.19209289550781250e-07,-1.19209289550781250e-07), RES(1.1920928955078012062e-7, 1.5707962075856070684e0)}, + {FN (arccoth), ARG(-1.19209289550781250e-07,1.19209289550781250e-07), RES(-1.1920928955078012062e-7, -1.5707962075856070684e0)}, + {FN (arccoth), ARG(-1.19209289550781250e-07,-1.19209289550781250e-07), RES(-1.1920928955078012062e-7, 1.5707962075856070684e0)}, + {FN (arccoth), ARG(1.19209289550781250e-07,5.0e-01), RES(9.5367431640625072280e-8, -1.1071487177940859555e0)}, + {FN (arccoth), ARG(1.19209289550781250e-07,-5.0e-01), RES(9.5367431640625072280e-8, 1.1071487177940859555e0)}, + {FN (arccoth), ARG(-1.19209289550781250e-07,5.0e-01), RES(-9.5367431640625072280e-8, -1.1071487177940859555e0)}, + {FN (arccoth), ARG(-1.19209289550781250e-07,-5.0e-01), RES(-9.5367431640625072280e-8, 1.1071487177940859555e0)}, + {FN (arccoth), ARG(1.19209289550781250e-07,1.0e+00), RES(5.9604644775390483828e-8, -7.8539816339744475690e-1)}, + {FN (arccoth), ARG(1.19209289550781250e-07,-1.0e+00), RES(5.9604644775390483828e-8, 7.8539816339744475690e-1)}, + {FN (arccoth), ARG(-1.19209289550781250e-07,1.0e+00), RES(-5.9604644775390483828e-8, -7.8539816339744475690e-1)}, + {FN (arccoth), ARG(-1.19209289550781250e-07,-1.0e+00), RES(-5.9604644775390483828e-8, 7.8539816339744475690e-1)}, + {FN (arccoth), ARG(1.19209289550781250e-07,2.0e+00), RES(2.3841857910156200307e-8, -4.6364760900080497935e-1)}, + {FN (arccoth), ARG(1.19209289550781250e-07,-2.0e+00), RES(2.3841857910156200307e-8, 4.6364760900080497935e-1)}, + {FN (arccoth), ARG(-1.19209289550781250e-07,2.0e+00), RES(-2.3841857910156200307e-8, -4.6364760900080497935e-1)}, + {FN (arccoth), ARG(-1.19209289550781250e-07,-2.0e+00), RES(-2.3841857910156200307e-8, 4.6364760900080497935e-1)}, + {FN (arccoth), ARG(1.19209289550781250e-07,8.3886080e+06), RES(1.6940658945085766040e-21, -1.1920928955078068531e-7)}, + {FN (arccoth), ARG(1.19209289550781250e-07,-8.3886080e+06), RES(1.6940658945085766040e-21, 1.1920928955078068531e-7)}, + {FN (arccoth), ARG(-1.19209289550781250e-07,8.3886080e+06), RES(-1.6940658945085766040e-21, -1.1920928955078068531e-7)}, + {FN (arccoth), ARG(-1.19209289550781250e-07,-8.3886080e+06), RES(-1.6940658945085766040e-21, 1.1920928955078068531e-7)}, + {FN (arccoth), ARG(5.0e-01,0.0e+00), RES(5.4930614433405484570e-1, -1.5707963267948966192e0)}, + {FN (arccoth), ARG(-5.0e-01,0.0e+00), RES(-5.4930614433405484570e-1, 1.5707963267948966192e0)}, + {FN (arccoth), ARG(5.0e-01,1.19209289550781250e-07), RES(5.4930614433404221383e-1, -1.5707961678491772182e0)}, + {FN (arccoth), ARG(5.0e-01,-1.19209289550781250e-07), RES(5.4930614433404221383e-1, 1.5707961678491772182e0)}, + {FN (arccoth), ARG(-5.0e-01,1.19209289550781250e-07), RES(-5.4930614433404221383e-1, -1.5707961678491772182e0)}, + {FN (arccoth), ARG(-5.0e-01,-1.19209289550781250e-07), RES(-5.4930614433404221383e-1, 1.5707961678491772182e0)}, + {FN (arccoth), ARG(5.0e-01,5.0e-01), RES(4.0235947810852509365e-1, -1.0172219678978513677e0)}, + {FN (arccoth), ARG(5.0e-01,-5.0e-01), RES(4.0235947810852509365e-1, 1.0172219678978513677e0)}, + {FN (arccoth), ARG(-5.0e-01,5.0e-01), RES(-4.0235947810852509365e-1, -1.0172219678978513677e0)}, + {FN (arccoth), ARG(-5.0e-01,-5.0e-01), RES(-4.0235947810852509365e-1, 1.0172219678978513677e0)}, + {FN (arccoth), ARG(5.0e-01,1.0e+00), RES(2.3887786125685909036e-1, -7.2322066612406759210e-1)}, + {FN (arccoth), ARG(5.0e-01,-1.0e+00), RES(2.3887786125685909036e-1, 7.2322066612406759210e-1)}, + {FN (arccoth), ARG(-5.0e-01,1.0e+00), RES(-2.3887786125685909036e-1, -7.2322066612406759210e-1)}, + {FN (arccoth), ARG(-5.0e-01,-1.0e+00), RES(-2.3887786125685909036e-1, 7.2322066612406759210e-1)}, + {FN (arccoth), ARG(5.0e-01,2.0e+00), RES(9.6415620202996167238e-2, -4.4423988596007427049e-1)}, + {FN (arccoth), ARG(5.0e-01,-2.0e+00), RES(9.6415620202996167238e-2, 4.4423988596007427049e-1)}, + {FN (arccoth), ARG(-5.0e-01,2.0e+00), RES(-9.6415620202996167238e-2, -4.4423988596007427049e-1)}, + {FN (arccoth), ARG(-5.0e-01,-2.0e+00), RES(-9.6415620202996167238e-2, 4.4423988596007427049e-1)}, + {FN (arccoth), ARG(5.0e-01,8.3886080e+06), RES(7.1054273576008756410e-15, -1.1920928955078026179e-7)}, + {FN (arccoth), ARG(5.0e-01,-8.3886080e+06), RES(7.1054273576008756410e-15, 1.1920928955078026179e-7)}, + {FN (arccoth), ARG(-5.0e-01,8.3886080e+06), RES(-7.1054273576008756410e-15, -1.1920928955078026179e-7)}, + {FN (arccoth), ARG(-5.0e-01,-8.3886080e+06), RES(-7.1054273576008756410e-15, 1.1920928955078026179e-7)}, + {FN (arccoth), ARG(1.0e+00,1.19209289550781250e-07), RES(8.3177661667193446012e0, -7.8539813359512592192e-1)}, + {FN (arccoth), ARG(1.0e+00,-1.19209289550781250e-07), RES(8.3177661667193446012e0, 7.8539813359512592192e-1)}, + {FN (arccoth), ARG(-1.0e+00,1.19209289550781250e-07), RES(-8.3177661667193446012e0, -7.8539813359512592192e-1)}, + {FN (arccoth), ARG(-1.0e+00,-1.19209289550781250e-07), RES(-8.3177661667193446012e0, 7.8539813359512592192e-1)}, + {FN (arccoth), ARG(1.0e+00,5.0e-01), RES(7.0830333601405402006e-1, -6.6290883183401623253e-1)}, + {FN (arccoth), ARG(1.0e+00,-5.0e-01), RES(7.0830333601405402006e-1, 6.6290883183401623253e-1)}, + {FN (arccoth), ARG(-1.0e+00,5.0e-01), RES(-7.0830333601405402006e-1, -6.6290883183401623253e-1)}, + {FN (arccoth), ARG(-1.0e+00,-5.0e-01), RES(-7.0830333601405402006e-1, 6.6290883183401623253e-1)}, + {FN (arccoth), ARG(1.0e+00,1.0e+00), RES(4.0235947810852509365e-1, -5.5357435889704525151e-1)}, + {FN (arccoth), ARG(1.0e+00,-1.0e+00), RES(4.0235947810852509365e-1, 5.5357435889704525151e-1)}, + {FN (arccoth), ARG(-1.0e+00,1.0e+00), RES(-4.0235947810852509365e-1, -5.5357435889704525151e-1)}, + {FN (arccoth), ARG(-1.0e+00,-1.0e+00), RES(-4.0235947810852509365e-1, 5.5357435889704525151e-1)}, + {FN (arccoth), ARG(1.0e+00,2.0e+00), RES(1.7328679513998632735e-1, -3.9269908169872415481e-1)}, + {FN (arccoth), ARG(1.0e+00,-2.0e+00), RES(1.7328679513998632735e-1, 3.9269908169872415481e-1)}, + {FN (arccoth), ARG(-1.0e+00,2.0e+00), RES(-1.7328679513998632735e-1, -3.9269908169872415481e-1)}, + {FN (arccoth), ARG(-1.0e+00,-2.0e+00), RES(-1.7328679513998632735e-1, 3.9269908169872415481e-1)}, + {FN (arccoth), ARG(1.0e+00,8.3886080e+06), RES(1.4210854715201599821e-14, -1.1920928955077899125e-7)}, + {FN (arccoth), ARG(1.0e+00,-8.3886080e+06), RES(1.4210854715201599821e-14, 1.1920928955077899125e-7)}, + {FN (arccoth), ARG(-1.0e+00,8.3886080e+06), RES(-1.4210854715201599821e-14, -1.1920928955077899125e-7)}, + {FN (arccoth), ARG(-1.0e+00,-8.3886080e+06), RES(-1.4210854715201599821e-14, 1.1920928955077899125e-7)}, + {FN (arccoth), ARG(2.0e+00,0.0e+00), RES(5.4930614433405484570e-1, 0.0)}, + {FN (arccoth), ARG(-2.0e+00,0.0e+00), RES(-5.4930614433405484570e-1, 0.0)}, + {FN (arccoth), ARG(2.0e+00,1.19209289550781250e-07), RES(5.4930614433405168773e-1, -3.9736429850260144780e-8)}, + {FN (arccoth), ARG(2.0e+00,-1.19209289550781250e-07), RES(5.4930614433405168773e-1, 3.9736429850260144780e-8)}, + {FN (arccoth), ARG(-2.0e+00,1.19209289550781250e-07), RES(-5.4930614433405168773e-1, -3.9736429850260144780e-8)}, + {FN (arccoth), ARG(-2.0e+00,-1.19209289550781250e-07), RES(-5.4930614433405168773e-1, 3.9736429850260144780e-8)}, + {FN (arccoth), ARG(2.0e+00,5.0e-01), RES(5.0037000005253101744e-1, -1.4924946579308963897e-1)}, + {FN (arccoth), ARG(2.0e+00,-5.0e-01), RES(5.0037000005253101744e-1, 1.4924946579308963897e-1)}, + {FN (arccoth), ARG(-2.0e+00,5.0e-01), RES(-5.0037000005253101744e-1, -1.4924946579308963897e-1)}, + {FN (arccoth), ARG(-2.0e+00,-5.0e-01), RES(-5.0037000005253101744e-1, 1.4924946579308963897e-1)}, + {FN (arccoth), ARG(2.0e+00,1.0e+00), RES(4.0235947810852509365e-1, -2.3182380450040305811e-1)}, + {FN (arccoth), ARG(2.0e+00,-1.0e+00), RES(4.0235947810852509365e-1, 2.3182380450040305811e-1)}, + {FN (arccoth), ARG(-2.0e+00,1.0e+00), RES(-4.0235947810852509365e-1, -2.3182380450040305811e-1)}, + {FN (arccoth), ARG(-2.0e+00,-1.0e+00), RES(-4.0235947810852509365e-1, 2.3182380450040305811e-1)}, + {FN (arccoth), ARG(2.0e+00,2.0e+00), RES(2.3887786125685909036e-1, -2.5957305712326147589e-1)}, + {FN (arccoth), ARG(2.0e+00,-2.0e+00), RES(2.3887786125685909036e-1, 2.5957305712326147589e-1)}, + {FN (arccoth), ARG(-2.0e+00,2.0e+00), RES(-2.3887786125685909036e-1, -2.5957305712326147589e-1)}, + {FN (arccoth), ARG(-2.0e+00,-2.0e+00), RES(-2.3887786125685909036e-1, 2.5957305712326147589e-1)}, + {FN (arccoth), ARG(2.0e+00,8.3886080e+06), RES(2.8421709430401987951e-14, -1.1920928955077390905e-7)}, + {FN (arccoth), ARG(2.0e+00,-8.3886080e+06), RES(2.8421709430401987951e-14, 1.1920928955077390905e-7)}, + {FN (arccoth), ARG(-2.0e+00,8.3886080e+06), RES(-2.8421709430401987951e-14, -1.1920928955077390905e-7)}, + {FN (arccoth), ARG(-2.0e+00,-8.3886080e+06), RES(-2.8421709430401987951e-14, 1.1920928955077390905e-7)}, + {FN (arccoth), ARG(8.3886080e+06,0.0e+00), RES(1.1920928955078181469e-7, 0.0)}, + {FN (arccoth), ARG(-8.3886080e+06,0.0e+00), RES(-1.1920928955078181469e-7, 0.0)}, + {FN (arccoth), ARG(8.3886080e+06,1.19209289550781250e-07), RES(1.1920928955078181469e-7, -1.6940658945086247523e-21)}, + {FN (arccoth), ARG(8.3886080e+06,-1.19209289550781250e-07), RES(1.1920928955078181469e-7, 1.6940658945086247523e-21)}, + {FN (arccoth), ARG(-8.3886080e+06,1.19209289550781250e-07), RES(-1.1920928955078181469e-7, -1.6940658945086247523e-21)}, + {FN (arccoth), ARG(-8.3886080e+06,-1.19209289550781250e-07), RES(-1.1920928955078181469e-7, 1.6940658945086247523e-21)}, + {FN (arccoth), ARG(8.3886080e+06,5.0e-01), RES(1.1920928955078139117e-7, -7.1054273576010775894e-15)}, + {FN (arccoth), ARG(8.3886080e+06,-5.0e-01), RES(1.1920928955078139117e-7, 7.1054273576010775894e-15)}, + {FN (arccoth), ARG(-8.3886080e+06,5.0e-01), RES(-1.1920928955078139117e-7, -7.1054273576010775894e-15)}, + {FN (arccoth), ARG(-8.3886080e+06,-5.0e-01), RES(-1.1920928955078139117e-7, 7.1054273576010775894e-15)}, + {FN (arccoth), ARG(8.3886080e+06,1.0e+00), RES(1.1920928955078012062e-7, -1.4210854715202003717e-14)}, + {FN (arccoth), ARG(8.3886080e+06,-1.0e+00), RES(1.1920928955078012062e-7, 1.4210854715202003717e-14)}, + {FN (arccoth), ARG(-8.3886080e+06,1.0e+00), RES(-1.1920928955078012062e-7, -1.4210854715202003717e-14)}, + {FN (arccoth), ARG(-8.3886080e+06,-1.0e+00), RES(-1.1920928955078012062e-7, 1.4210854715202003717e-14)}, + {FN (arccoth), ARG(8.3886080e+06,2.0e+00), RES(1.1920928955077503843e-7, -2.8421709430402795744e-14)}, + {FN (arccoth), ARG(8.3886080e+06,-2.0e+00), RES(1.1920928955077503843e-7, 2.8421709430402795744e-14)}, + {FN (arccoth), ARG(-8.3886080e+06,2.0e+00), RES(-1.1920928955077503843e-7, -2.8421709430402795744e-14)}, + {FN (arccoth), ARG(-8.3886080e+06,-2.0e+00), RES(-1.1920928955077503843e-7, 2.8421709430402795744e-14)}, + {FN (arccoth), ARG(8.3886080e+06,8.3886080e+06), RES(5.9604644775390483828e-8, -5.9604644775390766172e-8)}, + {FN (arccoth), ARG(8.3886080e+06,-8.3886080e+06), RES(5.9604644775390483828e-8, 5.9604644775390766172e-8)}, + {FN (arccoth), ARG(-8.3886080e+06,8.3886080e+06), RES(-5.9604644775390483828e-8, -5.9604644775390766172e-8)}, + {FN (arccoth), ARG(-8.3886080e+06,-8.3886080e+06), RES(-5.9604644775390483828e-8, 5.9604644775390766172e-8)}, diff --git a/gsl-2.5/complex/results1.h b/gsl-2.5/complex/results1.h new file mode 100644 index 00000000..76419449 --- /dev/null +++ b/gsl-2.5/complex/results1.h @@ -0,0 +1,583 @@ + {FN (arg), ARG(0.0e+00,0.0e+00), RES(0e0, 0.0)}, + {FN (arg), ARG(0.0e+00,1.19209289550781250e-07), RES(1.5707963267948966192e0, 0.0)}, + {FN (arg), ARG(0.0e+00,-1.19209289550781250e-07), RES(-1.5707963267948966192e0, 0.0)}, + {FN (arg), ARG(0.0e+00,5.0e-01), RES(1.5707963267948966192e0, 0.0)}, + {FN (arg), ARG(0.0e+00,-5.0e-01), RES(-1.5707963267948966192e0, 0.0)}, + {FN (arg), ARG(0.0e+00,1.0e+00), RES(1.5707963267948966192e0, 0.0)}, + {FN (arg), ARG(0.0e+00,-1.0e+00), RES(-1.5707963267948966192e0, 0.0)}, + {FN (arg), ARG(0.0e+00,2.0e+00), RES(1.5707963267948966192e0, 0.0)}, + {FN (arg), ARG(0.0e+00,-2.0e+00), RES(-1.5707963267948966192e0, 0.0)}, + {FN (arg), ARG(0.0e+00,8.3886080e+06), RES(1.5707963267948966192e0, 0.0)}, + {FN (arg), ARG(0.0e+00,-8.3886080e+06), RES(-1.5707963267948966192e0, 0.0)}, + {FN (arg), ARG(1.19209289550781250e-07,0.0e+00), RES(0e0, 0.0)}, + {FN (arg), ARG(-1.19209289550781250e-07,0.0e+00), RES(3.1415926535897932385e0, 0.0)}, + {FN (arg), ARG(1.19209289550781250e-07,1.19209289550781250e-07), RES(7.8539816339744830962e-1, 0.0)}, + {FN (arg), ARG(1.19209289550781250e-07,-1.19209289550781250e-07), RES(-7.8539816339744830962e-1, 0.0)}, + {FN (arg), ARG(-1.19209289550781250e-07,1.19209289550781250e-07), RES(2.3561944901923449288e0, 0.0)}, + {FN (arg), ARG(-1.19209289550781250e-07,-1.19209289550781250e-07), RES(-2.3561944901923449288e0, 0.0)}, + {FN (arg), ARG(1.19209289550781250e-07,5.0e-01), RES(1.5707960883763175177e0, 0.0)}, + {FN (arg), ARG(1.19209289550781250e-07,-5.0e-01), RES(-1.5707960883763175177e0, 0.0)}, + {FN (arg), ARG(-1.19209289550781250e-07,5.0e-01), RES(1.5707965652134757208e0, 0.0)}, + {FN (arg), ARG(-1.19209289550781250e-07,-5.0e-01), RES(-1.5707965652134757208e0, 0.0)}, + {FN (arg), ARG(1.19209289550781250e-07,1.0e+00), RES(1.5707962075856070685e0, 0.0)}, + {FN (arg), ARG(1.19209289550781250e-07,-1.0e+00), RES(-1.5707962075856070685e0, 0.0)}, + {FN (arg), ARG(-1.19209289550781250e-07,1.0e+00), RES(1.570796446004186170e0, 0.0)}, + {FN (arg), ARG(-1.19209289550781250e-07,-1.0e+00), RES(-1.570796446004186170e0, 0.0)}, + {FN (arg), ARG(1.19209289550781250e-07,2.0e+00), RES(1.5707962671902518438e0, 0.0)}, + {FN (arg), ARG(1.19209289550781250e-07,-2.0e+00), RES(-1.5707962671902518438e0, 0.0)}, + {FN (arg), ARG(-1.19209289550781250e-07,2.0e+00), RES(1.5707963863995413946e0, 0.0)}, + {FN (arg), ARG(-1.19209289550781250e-07,-2.0e+00), RES(-1.5707963863995413946e0, 0.0)}, + {FN (arg), ARG(1.19209289550781250e-07,8.3886080e+06), RES(1.5707963267948824084e0, 0.0)}, + {FN (arg), ARG(1.19209289550781250e-07,-8.3886080e+06), RES(-1.5707963267948824084e0, 0.0)}, + {FN (arg), ARG(-1.19209289550781250e-07,8.3886080e+06), RES(1.5707963267949108301e0, 0.0)}, + {FN (arg), ARG(-1.19209289550781250e-07,-8.3886080e+06), RES(-1.5707963267949108301e0, 0.0)}, + {FN (arg), ARG(5.0e-01,0.0e+00), RES(0e0, 0.0)}, + {FN (arg), ARG(-5.0e-01,0.0e+00), RES(3.1415926535897932385e0, 0.0)}, + {FN (arg), ARG(5.0e-01,1.19209289550781250e-07), RES(2.3841857910155798249e-7, 0.0)}, + {FN (arg), ARG(5.0e-01,-1.19209289550781250e-07), RES(-2.3841857910155798249e-7, 0.0)}, + {FN (arg), ARG(-5.0e-01,1.19209289550781250e-07), RES(3.1415924151712141369e0, 0.0)}, + {FN (arg), ARG(-5.0e-01,-1.19209289550781250e-07), RES(-3.1415924151712141369e0, 0.0)}, + {FN (arg), ARG(5.0e-01,5.0e-01), RES(7.8539816339744830962e-1, 0.0)}, + {FN (arg), ARG(5.0e-01,-5.0e-01), RES(-7.8539816339744830962e-1, 0.0)}, + {FN (arg), ARG(-5.0e-01,5.0e-01), RES(2.3561944901923449288e0, 0.0)}, + {FN (arg), ARG(-5.0e-01,-5.0e-01), RES(-2.3561944901923449288e0, 0.0)}, + {FN (arg), ARG(5.0e-01,1.0e+00), RES(1.1071487177940905030e0, 0.0)}, + {FN (arg), ARG(5.0e-01,-1.0e+00), RES(-1.1071487177940905030e0, 0.0)}, + {FN (arg), ARG(-5.0e-01,1.0e+00), RES(2.0344439357957027354e0, 0.0)}, + {FN (arg), ARG(-5.0e-01,-1.0e+00), RES(-2.0344439357957027354e0, 0.0)}, + {FN (arg), ARG(5.0e-01,2.0e+00), RES(1.3258176636680324651e0, 0.0)}, + {FN (arg), ARG(5.0e-01,-2.0e+00), RES(-1.3258176636680324651e0, 0.0)}, + {FN (arg), ARG(-5.0e-01,2.0e+00), RES(1.8157749899217607734e0, 0.0)}, + {FN (arg), ARG(-5.0e-01,-2.0e+00), RES(-1.8157749899217607734e0, 0.0)}, + {FN (arg), ARG(5.0e-01,8.3886080e+06), RES(1.5707962671902518438e0, 0.0)}, + {FN (arg), ARG(5.0e-01,-8.3886080e+06), RES(-1.5707962671902518438e0, 0.0)}, + {FN (arg), ARG(-5.0e-01,8.3886080e+06), RES(1.5707963863995413946e0, 0.0)}, + {FN (arg), ARG(-5.0e-01,-8.3886080e+06), RES(-1.5707963863995413946e0, 0.0)}, + {FN (arg), ARG(1.0e+00,0.0e+00), RES(0e0, 0.0)}, + {FN (arg), ARG(-1.0e+00,0.0e+00), RES(3.1415926535897932385e0, 0.0)}, + {FN (arg), ARG(1.0e+00,1.19209289550781250e-07), RES(1.1920928955078068531e-7, 0.0)}, + {FN (arg), ARG(1.0e+00,-1.19209289550781250e-07), RES(-1.1920928955078068531e-7, 0.0)}, + {FN (arg), ARG(-1.0e+00,1.19209289550781250e-07), RES(3.1415925343805036877e0, 0.0)}, + {FN (arg), ARG(-1.0e+00,-1.19209289550781250e-07), RES(-3.1415925343805036877e0, 0.0)}, + {FN (arg), ARG(1.0e+00,5.0e-01), RES(4.6364760900080611621e-1, 0.0)}, + {FN (arg), ARG(1.0e+00,-5.0e-01), RES(-4.6364760900080611621e-1, 0.0)}, + {FN (arg), ARG(-1.0e+00,5.0e-01), RES(2.6779450445889871222e0, 0.0)}, + {FN (arg), ARG(-1.0e+00,-5.0e-01), RES(-2.6779450445889871222e0, 0.0)}, + {FN (arg), ARG(1.0e+00,1.0e+00), RES(7.8539816339744830962e-1, 0.0)}, + {FN (arg), ARG(1.0e+00,-1.0e+00), RES(-7.8539816339744830962e-1, 0.0)}, + {FN (arg), ARG(-1.0e+00,1.0e+00), RES(2.3561944901923449288e0, 0.0)}, + {FN (arg), ARG(-1.0e+00,-1.0e+00), RES(-2.3561944901923449288e0, 0.0)}, + {FN (arg), ARG(1.0e+00,2.0e+00), RES(1.1071487177940905030e0, 0.0)}, + {FN (arg), ARG(1.0e+00,-2.0e+00), RES(-1.1071487177940905030e0, 0.0)}, + {FN (arg), ARG(-1.0e+00,2.0e+00), RES(2.0344439357957027354e0, 0.0)}, + {FN (arg), ARG(-1.0e+00,-2.0e+00), RES(-2.0344439357957027354e0, 0.0)}, + {FN (arg), ARG(1.0e+00,8.3886080e+06), RES(1.5707962075856070685e0, 0.0)}, + {FN (arg), ARG(1.0e+00,-8.3886080e+06), RES(-1.5707962075856070685e0, 0.0)}, + {FN (arg), ARG(-1.0e+00,8.3886080e+06), RES(1.570796446004186170e0, 0.0)}, + {FN (arg), ARG(-1.0e+00,-8.3886080e+06), RES(-1.570796446004186170e0, 0.0)}, + {FN (arg), ARG(2.0e+00,0.0e+00), RES(0e0, 0.0)}, + {FN (arg), ARG(-2.0e+00,0.0e+00), RES(3.1415926535897932385e0, 0.0)}, + {FN (arg), ARG(2.0e+00,1.19209289550781250e-07), RES(5.9604644775390554414e-8, 0.0)}, + {FN (arg), ARG(2.0e+00,-1.19209289550781250e-07), RES(-5.9604644775390554414e-8, 0.0)}, + {FN (arg), ARG(-2.0e+00,1.19209289550781250e-07), RES(3.1415925939851484631e0, 0.0)}, + {FN (arg), ARG(-2.0e+00,-1.19209289550781250e-07), RES(-3.1415925939851484631e0, 0.0)}, + {FN (arg), ARG(2.0e+00,5.0e-01), RES(2.4497866312686415417e-1, 0.0)}, + {FN (arg), ARG(2.0e+00,-5.0e-01), RES(-2.4497866312686415417e-1, 0.0)}, + {FN (arg), ARG(-2.0e+00,5.0e-01), RES(2.8966139904629290843e0, 0.0)}, + {FN (arg), ARG(-2.0e+00,-5.0e-01), RES(-2.8966139904629290843e0, 0.0)}, + {FN (arg), ARG(2.0e+00,1.0e+00), RES(4.6364760900080611621e-1, 0.0)}, + {FN (arg), ARG(2.0e+00,-1.0e+00), RES(-4.6364760900080611621e-1, 0.0)}, + {FN (arg), ARG(-2.0e+00,1.0e+00), RES(2.6779450445889871222e0, 0.0)}, + {FN (arg), ARG(-2.0e+00,-1.0e+00), RES(-2.6779450445889871222e0, 0.0)}, + {FN (arg), ARG(2.0e+00,2.0e+00), RES(7.8539816339744830962e-1, 0.0)}, + {FN (arg), ARG(2.0e+00,-2.0e+00), RES(-7.8539816339744830962e-1, 0.0)}, + {FN (arg), ARG(-2.0e+00,2.0e+00), RES(2.3561944901923449288e0, 0.0)}, + {FN (arg), ARG(-2.0e+00,-2.0e+00), RES(-2.3561944901923449288e0, 0.0)}, + {FN (arg), ARG(2.0e+00,8.3886080e+06), RES(1.5707960883763175177e0, 0.0)}, + {FN (arg), ARG(2.0e+00,-8.3886080e+06), RES(-1.5707960883763175177e0, 0.0)}, + {FN (arg), ARG(-2.0e+00,8.3886080e+06), RES(1.5707965652134757208e0, 0.0)}, + {FN (arg), ARG(-2.0e+00,-8.3886080e+06), RES(-1.5707965652134757208e0, 0.0)}, + {FN (arg), ARG(8.3886080e+06,0.0e+00), RES(0e0, 0.0)}, + {FN (arg), ARG(-8.3886080e+06,0.0e+00), RES(3.1415926535897932385e0, 0.0)}, + {FN (arg), ARG(8.3886080e+06,1.19209289550781250e-07), RES(1.4210854715202003717e-14, 0.0)}, + {FN (arg), ARG(8.3886080e+06,-1.19209289550781250e-07), RES(-1.4210854715202003717e-14, 0.0)}, + {FN (arg), ARG(-8.3886080e+06,1.19209289550781250e-07), RES(3.1415926535897790276e0, 0.0)}, + {FN (arg), ARG(-8.3886080e+06,-1.19209289550781250e-07), RES(-3.1415926535897790276e0, 0.0)}, + {FN (arg), ARG(8.3886080e+06,5.0e-01), RES(5.9604644775390554414e-8, 0.0)}, + {FN (arg), ARG(8.3886080e+06,-5.0e-01), RES(-5.9604644775390554414e-8, 0.0)}, + {FN (arg), ARG(-8.3886080e+06,5.0e-01), RES(3.1415925939851484631e0, 0.0)}, + {FN (arg), ARG(-8.3886080e+06,-5.0e-01), RES(-3.1415925939851484631e0, 0.0)}, + {FN (arg), ARG(8.3886080e+06,1.0e+00), RES(1.1920928955078068531e-7, 0.0)}, + {FN (arg), ARG(8.3886080e+06,-1.0e+00), RES(-1.1920928955078068531e-7, 0.0)}, + {FN (arg), ARG(-8.3886080e+06,1.0e+00), RES(3.1415925343805036877e0, 0.0)}, + {FN (arg), ARG(-8.3886080e+06,-1.0e+00), RES(-3.1415925343805036877e0, 0.0)}, + {FN (arg), ARG(8.3886080e+06,2.0e+00), RES(2.3841857910155798249e-7, 0.0)}, + {FN (arg), ARG(8.3886080e+06,-2.0e+00), RES(-2.3841857910155798249e-7, 0.0)}, + {FN (arg), ARG(-8.3886080e+06,2.0e+00), RES(3.1415924151712141369e0, 0.0)}, + {FN (arg), ARG(-8.3886080e+06,-2.0e+00), RES(-3.1415924151712141369e0, 0.0)}, + {FN (arg), ARG(8.3886080e+06,8.3886080e+06), RES(7.8539816339744830962e-1, 0.0)}, + {FN (arg), ARG(8.3886080e+06,-8.3886080e+06), RES(-7.8539816339744830962e-1, 0.0)}, + {FN (arg), ARG(-8.3886080e+06,8.3886080e+06), RES(2.3561944901923449288e0, 0.0)}, + {FN (arg), ARG(-8.3886080e+06,-8.3886080e+06), RES(-2.3561944901923449288e0, 0.0)}, + {FN (abs), ARG(0.0e+00,0.0e+00), RES(0e0, 0.0)}, + {FN (abs), ARG(0.0e+00,1.19209289550781250e-07), RES(1.1920928955078125e-7, 0.0)}, + {FN (abs), ARG(0.0e+00,-1.19209289550781250e-07), RES(1.1920928955078125e-7, 0.0)}, + {FN (abs), ARG(0.0e+00,5.0e-01), RES(5e-1, 0.0)}, + {FN (abs), ARG(0.0e+00,-5.0e-01), RES(5e-1, 0.0)}, + {FN (abs), ARG(0.0e+00,1.0e+00), RES(1e0, 0.0)}, + {FN (abs), ARG(0.0e+00,-1.0e+00), RES(1e0, 0.0)}, + {FN (abs), ARG(0.0e+00,2.0e+00), RES(2e0, 0.0)}, + {FN (abs), ARG(0.0e+00,-2.0e+00), RES(2e0, 0.0)}, + {FN (abs), ARG(0.0e+00,8.3886080e+06), RES(8.388608e6, 0.0)}, + {FN (abs), ARG(0.0e+00,-8.3886080e+06), RES(8.388608e6, 0.0)}, + {FN (abs), ARG(1.19209289550781250e-07,0.0e+00), RES(1.1920928955078125e-7, 0.0)}, + {FN (abs), ARG(-1.19209289550781250e-07,0.0e+00), RES(1.1920928955078125e-7, 0.0)}, + {FN (abs), ARG(1.19209289550781250e-07,1.19209289550781250e-07), RES(1.6858739404357612715e-7, 0.0)}, + {FN (abs), ARG(1.19209289550781250e-07,-1.19209289550781250e-07), RES(1.6858739404357612715e-7, 0.0)}, + {FN (abs), ARG(-1.19209289550781250e-07,1.19209289550781250e-07), RES(1.6858739404357612715e-7, 0.0)}, + {FN (abs), ARG(-1.19209289550781250e-07,-1.19209289550781250e-07), RES(1.6858739404357612715e-7, 0.0)}, + {FN (abs), ARG(1.19209289550781250e-07,5.0e-01), RES(5.0000000000001421085e-1, 0.0)}, + {FN (abs), ARG(1.19209289550781250e-07,-5.0e-01), RES(5.0000000000001421085e-1, 0.0)}, + {FN (abs), ARG(-1.19209289550781250e-07,5.0e-01), RES(5.0000000000001421085e-1, 0.0)}, + {FN (abs), ARG(-1.19209289550781250e-07,-5.0e-01), RES(5.0000000000001421085e-1, 0.0)}, + {FN (abs), ARG(1.19209289550781250e-07,1.0e+00), RES(1.0000000000000071054e0, 0.0)}, + {FN (abs), ARG(1.19209289550781250e-07,-1.0e+00), RES(1.0000000000000071054e0, 0.0)}, + {FN (abs), ARG(-1.19209289550781250e-07,1.0e+00), RES(1.0000000000000071054e0, 0.0)}, + {FN (abs), ARG(-1.19209289550781250e-07,-1.0e+00), RES(1.0000000000000071054e0, 0.0)}, + {FN (abs), ARG(1.19209289550781250e-07,2.0e+00), RES(2.0000000000000035527e0, 0.0)}, + {FN (abs), ARG(1.19209289550781250e-07,-2.0e+00), RES(2.0000000000000035527e0, 0.0)}, + {FN (abs), ARG(-1.19209289550781250e-07,2.0e+00), RES(2.0000000000000035527e0, 0.0)}, + {FN (abs), ARG(-1.19209289550781250e-07,-2.0e+00), RES(2.0000000000000035527e0, 0.0)}, + {FN (abs), ARG(1.19209289550781250e-07,8.3886080e+06), RES(8.3886080e6, 0.0)}, + {FN (abs), ARG(1.19209289550781250e-07,-8.3886080e+06), RES(8.3886080e6, 0.0)}, + {FN (abs), ARG(-1.19209289550781250e-07,8.3886080e+06), RES(8.3886080e6, 0.0)}, + {FN (abs), ARG(-1.19209289550781250e-07,-8.3886080e+06), RES(8.3886080e6, 0.0)}, + {FN (abs), ARG(5.0e-01,0.0e+00), RES(5e-1, 0.0)}, + {FN (abs), ARG(-5.0e-01,0.0e+00), RES(5e-1, 0.0)}, + {FN (abs), ARG(5.0e-01,1.19209289550781250e-07), RES(5.0000000000001421085e-1, 0.0)}, + {FN (abs), ARG(5.0e-01,-1.19209289550781250e-07), RES(5.0000000000001421085e-1, 0.0)}, + {FN (abs), ARG(-5.0e-01,1.19209289550781250e-07), RES(5.0000000000001421085e-1, 0.0)}, + {FN (abs), ARG(-5.0e-01,-1.19209289550781250e-07), RES(5.0000000000001421085e-1, 0.0)}, + {FN (abs), ARG(5.0e-01,5.0e-01), RES(7.0710678118654752440e-1, 0.0)}, + {FN (abs), ARG(5.0e-01,-5.0e-01), RES(7.0710678118654752440e-1, 0.0)}, + {FN (abs), ARG(-5.0e-01,5.0e-01), RES(7.0710678118654752440e-1, 0.0)}, + {FN (abs), ARG(-5.0e-01,-5.0e-01), RES(7.0710678118654752440e-1, 0.0)}, + {FN (abs), ARG(5.0e-01,1.0e+00), RES(1.1180339887498948482e0, 0.0)}, + {FN (abs), ARG(5.0e-01,-1.0e+00), RES(1.1180339887498948482e0, 0.0)}, + {FN (abs), ARG(-5.0e-01,1.0e+00), RES(1.1180339887498948482e0, 0.0)}, + {FN (abs), ARG(-5.0e-01,-1.0e+00), RES(1.1180339887498948482e0, 0.0)}, + {FN (abs), ARG(5.0e-01,2.0e+00), RES(2.0615528128088302749e0, 0.0)}, + {FN (abs), ARG(5.0e-01,-2.0e+00), RES(2.0615528128088302749e0, 0.0)}, + {FN (abs), ARG(-5.0e-01,2.0e+00), RES(2.0615528128088302749e0, 0.0)}, + {FN (abs), ARG(-5.0e-01,-2.0e+00), RES(2.0615528128088302749e0, 0.0)}, + {FN (abs), ARG(5.0e-01,8.3886080e+06), RES(8.3886080000000149012e6, 0.0)}, + {FN (abs), ARG(5.0e-01,-8.3886080e+06), RES(8.3886080000000149012e6, 0.0)}, + {FN (abs), ARG(-5.0e-01,8.3886080e+06), RES(8.3886080000000149012e6, 0.0)}, + {FN (abs), ARG(-5.0e-01,-8.3886080e+06), RES(8.3886080000000149012e6, 0.0)}, + {FN (abs), ARG(1.0e+00,0.0e+00), RES(1e0, 0.0)}, + {FN (abs), ARG(-1.0e+00,0.0e+00), RES(1e0, 0.0)}, + {FN (abs), ARG(1.0e+00,1.19209289550781250e-07), RES(1.0000000000000071054e0, 0.0)}, + {FN (abs), ARG(1.0e+00,-1.19209289550781250e-07), RES(1.0000000000000071054e0, 0.0)}, + {FN (abs), ARG(-1.0e+00,1.19209289550781250e-07), RES(1.0000000000000071054e0, 0.0)}, + {FN (abs), ARG(-1.0e+00,-1.19209289550781250e-07), RES(1.0000000000000071054e0, 0.0)}, + {FN (abs), ARG(1.0e+00,5.0e-01), RES(1.1180339887498948482e0, 0.0)}, + {FN (abs), ARG(1.0e+00,-5.0e-01), RES(1.1180339887498948482e0, 0.0)}, + {FN (abs), ARG(-1.0e+00,5.0e-01), RES(1.1180339887498948482e0, 0.0)}, + {FN (abs), ARG(-1.0e+00,-5.0e-01), RES(1.1180339887498948482e0, 0.0)}, + {FN (abs), ARG(1.0e+00,1.0e+00), RES(1.4142135623730950488e0, 0.0)}, + {FN (abs), ARG(1.0e+00,-1.0e+00), RES(1.4142135623730950488e0, 0.0)}, + {FN (abs), ARG(-1.0e+00,1.0e+00), RES(1.4142135623730950488e0, 0.0)}, + {FN (abs), ARG(-1.0e+00,-1.0e+00), RES(1.4142135623730950488e0, 0.0)}, + {FN (abs), ARG(1.0e+00,2.0e+00), RES(2.2360679774997896964e0, 0.0)}, + {FN (abs), ARG(1.0e+00,-2.0e+00), RES(2.2360679774997896964e0, 0.0)}, + {FN (abs), ARG(-1.0e+00,2.0e+00), RES(2.2360679774997896964e0, 0.0)}, + {FN (abs), ARG(-1.0e+00,-2.0e+00), RES(2.2360679774997896964e0, 0.0)}, + {FN (abs), ARG(1.0e+00,8.3886080e+06), RES(8.3886080000000596046e6, 0.0)}, + {FN (abs), ARG(1.0e+00,-8.3886080e+06), RES(8.3886080000000596046e6, 0.0)}, + {FN (abs), ARG(-1.0e+00,8.3886080e+06), RES(8.3886080000000596046e6, 0.0)}, + {FN (abs), ARG(-1.0e+00,-8.3886080e+06), RES(8.3886080000000596046e6, 0.0)}, + {FN (abs), ARG(2.0e+00,0.0e+00), RES(2e0, 0.0)}, + {FN (abs), ARG(-2.0e+00,0.0e+00), RES(2e0, 0.0)}, + {FN (abs), ARG(2.0e+00,1.19209289550781250e-07), RES(2.0000000000000035527e0, 0.0)}, + {FN (abs), ARG(2.0e+00,-1.19209289550781250e-07), RES(2.0000000000000035527e0, 0.0)}, + {FN (abs), ARG(-2.0e+00,1.19209289550781250e-07), RES(2.0000000000000035527e0, 0.0)}, + {FN (abs), ARG(-2.0e+00,-1.19209289550781250e-07), RES(2.0000000000000035527e0, 0.0)}, + {FN (abs), ARG(2.0e+00,5.0e-01), RES(2.0615528128088302749e0, 0.0)}, + {FN (abs), ARG(2.0e+00,-5.0e-01), RES(2.0615528128088302749e0, 0.0)}, + {FN (abs), ARG(-2.0e+00,5.0e-01), RES(2.0615528128088302749e0, 0.0)}, + {FN (abs), ARG(-2.0e+00,-5.0e-01), RES(2.0615528128088302749e0, 0.0)}, + {FN (abs), ARG(2.0e+00,1.0e+00), RES(2.2360679774997896964e0, 0.0)}, + {FN (abs), ARG(2.0e+00,-1.0e+00), RES(2.2360679774997896964e0, 0.0)}, + {FN (abs), ARG(-2.0e+00,1.0e+00), RES(2.2360679774997896964e0, 0.0)}, + {FN (abs), ARG(-2.0e+00,-1.0e+00), RES(2.2360679774997896964e0, 0.0)}, + {FN (abs), ARG(2.0e+00,2.0e+00), RES(2.8284271247461900976e0, 0.0)}, + {FN (abs), ARG(2.0e+00,-2.0e+00), RES(2.8284271247461900976e0, 0.0)}, + {FN (abs), ARG(-2.0e+00,2.0e+00), RES(2.8284271247461900976e0, 0.0)}, + {FN (abs), ARG(-2.0e+00,-2.0e+00), RES(2.8284271247461900976e0, 0.0)}, + {FN (abs), ARG(2.0e+00,8.3886080e+06), RES(8.3886080000002384186e6, 0.0)}, + {FN (abs), ARG(2.0e+00,-8.3886080e+06), RES(8.3886080000002384186e6, 0.0)}, + {FN (abs), ARG(-2.0e+00,8.3886080e+06), RES(8.3886080000002384186e6, 0.0)}, + {FN (abs), ARG(-2.0e+00,-8.3886080e+06), RES(8.3886080000002384186e6, 0.0)}, + {FN (abs), ARG(8.3886080e+06,0.0e+00), RES(8.388608e6, 0.0)}, + {FN (abs), ARG(-8.3886080e+06,0.0e+00), RES(8.388608e6, 0.0)}, + {FN (abs), ARG(8.3886080e+06,1.19209289550781250e-07), RES(8.3886080e6, 0.0)}, + {FN (abs), ARG(8.3886080e+06,-1.19209289550781250e-07), RES(8.3886080e6, 0.0)}, + {FN (abs), ARG(-8.3886080e+06,1.19209289550781250e-07), RES(8.3886080e6, 0.0)}, + {FN (abs), ARG(-8.3886080e+06,-1.19209289550781250e-07), RES(8.3886080e6, 0.0)}, + {FN (abs), ARG(8.3886080e+06,5.0e-01), RES(8.3886080000000149012e6, 0.0)}, + {FN (abs), ARG(8.3886080e+06,-5.0e-01), RES(8.3886080000000149012e6, 0.0)}, + {FN (abs), ARG(-8.3886080e+06,5.0e-01), RES(8.3886080000000149012e6, 0.0)}, + {FN (abs), ARG(-8.3886080e+06,-5.0e-01), RES(8.3886080000000149012e6, 0.0)}, + {FN (abs), ARG(8.3886080e+06,1.0e+00), RES(8.3886080000000596046e6, 0.0)}, + {FN (abs), ARG(8.3886080e+06,-1.0e+00), RES(8.3886080000000596046e6, 0.0)}, + {FN (abs), ARG(-8.3886080e+06,1.0e+00), RES(8.3886080000000596046e6, 0.0)}, + {FN (abs), ARG(-8.3886080e+06,-1.0e+00), RES(8.3886080000000596046e6, 0.0)}, + {FN (abs), ARG(8.3886080e+06,2.0e+00), RES(8.3886080000002384186e6, 0.0)}, + {FN (abs), ARG(8.3886080e+06,-2.0e+00), RES(8.3886080000002384186e6, 0.0)}, + {FN (abs), ARG(-8.3886080e+06,2.0e+00), RES(8.3886080000002384186e6, 0.0)}, + {FN (abs), ARG(-8.3886080e+06,-2.0e+00), RES(8.3886080000002384186e6, 0.0)}, + {FN (abs), ARG(8.3886080e+06,8.3886080e+06), RES(1.1863283203031444111e7, 0.0)}, + {FN (abs), ARG(8.3886080e+06,-8.3886080e+06), RES(1.1863283203031444111e7, 0.0)}, + {FN (abs), ARG(-8.3886080e+06,8.3886080e+06), RES(1.1863283203031444111e7, 0.0)}, + {FN (abs), ARG(-8.3886080e+06,-8.3886080e+06), RES(1.1863283203031444111e7, 0.0)}, + {FN (abs2), ARG(0.0e+00,0.0e+00), RES(0e0, 0.0)}, + {FN (abs2), ARG(0.0e+00,1.19209289550781250e-07), RES(1.4210854715202003717e-14, 0.0)}, + {FN (abs2), ARG(0.0e+00,-1.19209289550781250e-07), RES(1.4210854715202003717e-14, 0.0)}, + {FN (abs2), ARG(0.0e+00,5.0e-01), RES(2.5e-1, 0.0)}, + {FN (abs2), ARG(0.0e+00,-5.0e-01), RES(2.5e-1, 0.0)}, + {FN (abs2), ARG(0.0e+00,1.0e+00), RES(1e0, 0.0)}, + {FN (abs2), ARG(0.0e+00,-1.0e+00), RES(1e0, 0.0)}, + {FN (abs2), ARG(0.0e+00,2.0e+00), RES(4e0, 0.0)}, + {FN (abs2), ARG(0.0e+00,-2.0e+00), RES(4e0, 0.0)}, + {FN (abs2), ARG(0.0e+00,8.3886080e+06), RES(7.0368744177664e13, 0.0)}, + {FN (abs2), ARG(0.0e+00,-8.3886080e+06), RES(7.0368744177664e13, 0.0)}, + {FN (abs2), ARG(1.19209289550781250e-07,0.0e+00), RES(1.4210854715202003717e-14, 0.0)}, + {FN (abs2), ARG(-1.19209289550781250e-07,0.0e+00), RES(1.4210854715202003717e-14, 0.0)}, + {FN (abs2), ARG(1.19209289550781250e-07,1.19209289550781250e-07), RES(2.8421709430404007435e-14, 0.0)}, + {FN (abs2), ARG(1.19209289550781250e-07,-1.19209289550781250e-07), RES(2.8421709430404007435e-14, 0.0)}, + {FN (abs2), ARG(-1.19209289550781250e-07,1.19209289550781250e-07), RES(2.8421709430404007435e-14, 0.0)}, + {FN (abs2), ARG(-1.19209289550781250e-07,-1.19209289550781250e-07), RES(2.8421709430404007435e-14, 0.0)}, + {FN (abs2), ARG(1.19209289550781250e-07,5.0e-01), RES(2.5000000000001421085e-1, 0.0)}, + {FN (abs2), ARG(1.19209289550781250e-07,-5.0e-01), RES(2.5000000000001421085e-1, 0.0)}, + {FN (abs2), ARG(-1.19209289550781250e-07,5.0e-01), RES(2.5000000000001421085e-1, 0.0)}, + {FN (abs2), ARG(-1.19209289550781250e-07,-5.0e-01), RES(2.5000000000001421085e-1, 0.0)}, + {FN (abs2), ARG(1.19209289550781250e-07,1.0e+00), RES(1.0000000000000142109e0, 0.0)}, + {FN (abs2), ARG(1.19209289550781250e-07,-1.0e+00), RES(1.0000000000000142109e0, 0.0)}, + {FN (abs2), ARG(-1.19209289550781250e-07,1.0e+00), RES(1.0000000000000142109e0, 0.0)}, + {FN (abs2), ARG(-1.19209289550781250e-07,-1.0e+00), RES(1.0000000000000142109e0, 0.0)}, + {FN (abs2), ARG(1.19209289550781250e-07,2.0e+00), RES(4.0000000000000142109e0, 0.0)}, + {FN (abs2), ARG(1.19209289550781250e-07,-2.0e+00), RES(4.0000000000000142109e0, 0.0)}, + {FN (abs2), ARG(-1.19209289550781250e-07,2.0e+00), RES(4.0000000000000142109e0, 0.0)}, + {FN (abs2), ARG(-1.19209289550781250e-07,-2.0e+00), RES(4.0000000000000142109e0, 0.0)}, + {FN (abs2), ARG(1.19209289550781250e-07,8.3886080e+06), RES(7.03687441776640e13, 0.0)}, + {FN (abs2), ARG(1.19209289550781250e-07,-8.3886080e+06), RES(7.03687441776640e13, 0.0)}, + {FN (abs2), ARG(-1.19209289550781250e-07,8.3886080e+06), RES(7.03687441776640e13, 0.0)}, + {FN (abs2), ARG(-1.19209289550781250e-07,-8.3886080e+06), RES(7.03687441776640e13, 0.0)}, + {FN (abs2), ARG(5.0e-01,0.0e+00), RES(2.5e-1, 0.0)}, + {FN (abs2), ARG(-5.0e-01,0.0e+00), RES(2.5e-1, 0.0)}, + {FN (abs2), ARG(5.0e-01,1.19209289550781250e-07), RES(2.5000000000001421085e-1, 0.0)}, + {FN (abs2), ARG(5.0e-01,-1.19209289550781250e-07), RES(2.5000000000001421085e-1, 0.0)}, + {FN (abs2), ARG(-5.0e-01,1.19209289550781250e-07), RES(2.5000000000001421085e-1, 0.0)}, + {FN (abs2), ARG(-5.0e-01,-1.19209289550781250e-07), RES(2.5000000000001421085e-1, 0.0)}, + {FN (abs2), ARG(5.0e-01,5.0e-01), RES(5e-1, 0.0)}, + {FN (abs2), ARG(5.0e-01,-5.0e-01), RES(5e-1, 0.0)}, + {FN (abs2), ARG(-5.0e-01,5.0e-01), RES(5e-1, 0.0)}, + {FN (abs2), ARG(-5.0e-01,-5.0e-01), RES(5e-1, 0.0)}, + {FN (abs2), ARG(5.0e-01,1.0e+00), RES(1.25e0, 0.0)}, + {FN (abs2), ARG(5.0e-01,-1.0e+00), RES(1.25e0, 0.0)}, + {FN (abs2), ARG(-5.0e-01,1.0e+00), RES(1.25e0, 0.0)}, + {FN (abs2), ARG(-5.0e-01,-1.0e+00), RES(1.25e0, 0.0)}, + {FN (abs2), ARG(5.0e-01,2.0e+00), RES(4.25e0, 0.0)}, + {FN (abs2), ARG(5.0e-01,-2.0e+00), RES(4.25e0, 0.0)}, + {FN (abs2), ARG(-5.0e-01,2.0e+00), RES(4.25e0, 0.0)}, + {FN (abs2), ARG(-5.0e-01,-2.0e+00), RES(4.25e0, 0.0)}, + {FN (abs2), ARG(5.0e-01,8.3886080e+06), RES(7.036874417766425e13, 0.0)}, + {FN (abs2), ARG(5.0e-01,-8.3886080e+06), RES(7.036874417766425e13, 0.0)}, + {FN (abs2), ARG(-5.0e-01,8.3886080e+06), RES(7.036874417766425e13, 0.0)}, + {FN (abs2), ARG(-5.0e-01,-8.3886080e+06), RES(7.036874417766425e13, 0.0)}, + {FN (abs2), ARG(1.0e+00,0.0e+00), RES(1e0, 0.0)}, + {FN (abs2), ARG(-1.0e+00,0.0e+00), RES(1e0, 0.0)}, + {FN (abs2), ARG(1.0e+00,1.19209289550781250e-07), RES(1.0000000000000142109e0, 0.0)}, + {FN (abs2), ARG(1.0e+00,-1.19209289550781250e-07), RES(1.0000000000000142109e0, 0.0)}, + {FN (abs2), ARG(-1.0e+00,1.19209289550781250e-07), RES(1.0000000000000142109e0, 0.0)}, + {FN (abs2), ARG(-1.0e+00,-1.19209289550781250e-07), RES(1.0000000000000142109e0, 0.0)}, + {FN (abs2), ARG(1.0e+00,5.0e-01), RES(1.25e0, 0.0)}, + {FN (abs2), ARG(1.0e+00,-5.0e-01), RES(1.25e0, 0.0)}, + {FN (abs2), ARG(-1.0e+00,5.0e-01), RES(1.25e0, 0.0)}, + {FN (abs2), ARG(-1.0e+00,-5.0e-01), RES(1.25e0, 0.0)}, + {FN (abs2), ARG(1.0e+00,1.0e+00), RES(2e0, 0.0)}, + {FN (abs2), ARG(1.0e+00,-1.0e+00), RES(2e0, 0.0)}, + {FN (abs2), ARG(-1.0e+00,1.0e+00), RES(2e0, 0.0)}, + {FN (abs2), ARG(-1.0e+00,-1.0e+00), RES(2e0, 0.0)}, + {FN (abs2), ARG(1.0e+00,2.0e+00), RES(5e0, 0.0)}, + {FN (abs2), ARG(1.0e+00,-2.0e+00), RES(5e0, 0.0)}, + {FN (abs2), ARG(-1.0e+00,2.0e+00), RES(5e0, 0.0)}, + {FN (abs2), ARG(-1.0e+00,-2.0e+00), RES(5e0, 0.0)}, + {FN (abs2), ARG(1.0e+00,8.3886080e+06), RES(7.0368744177665e13, 0.0)}, + {FN (abs2), ARG(1.0e+00,-8.3886080e+06), RES(7.0368744177665e13, 0.0)}, + {FN (abs2), ARG(-1.0e+00,8.3886080e+06), RES(7.0368744177665e13, 0.0)}, + {FN (abs2), ARG(-1.0e+00,-8.3886080e+06), RES(7.0368744177665e13, 0.0)}, + {FN (abs2), ARG(2.0e+00,0.0e+00), RES(4e0, 0.0)}, + {FN (abs2), ARG(-2.0e+00,0.0e+00), RES(4e0, 0.0)}, + {FN (abs2), ARG(2.0e+00,1.19209289550781250e-07), RES(4.0000000000000142109e0, 0.0)}, + {FN (abs2), ARG(2.0e+00,-1.19209289550781250e-07), RES(4.0000000000000142109e0, 0.0)}, + {FN (abs2), ARG(-2.0e+00,1.19209289550781250e-07), RES(4.0000000000000142109e0, 0.0)}, + {FN (abs2), ARG(-2.0e+00,-1.19209289550781250e-07), RES(4.0000000000000142109e0, 0.0)}, + {FN (abs2), ARG(2.0e+00,5.0e-01), RES(4.25e0, 0.0)}, + {FN (abs2), ARG(2.0e+00,-5.0e-01), RES(4.25e0, 0.0)}, + {FN (abs2), ARG(-2.0e+00,5.0e-01), RES(4.25e0, 0.0)}, + {FN (abs2), ARG(-2.0e+00,-5.0e-01), RES(4.25e0, 0.0)}, + {FN (abs2), ARG(2.0e+00,1.0e+00), RES(5e0, 0.0)}, + {FN (abs2), ARG(2.0e+00,-1.0e+00), RES(5e0, 0.0)}, + {FN (abs2), ARG(-2.0e+00,1.0e+00), RES(5e0, 0.0)}, + {FN (abs2), ARG(-2.0e+00,-1.0e+00), RES(5e0, 0.0)}, + {FN (abs2), ARG(2.0e+00,2.0e+00), RES(8e0, 0.0)}, + {FN (abs2), ARG(2.0e+00,-2.0e+00), RES(8e0, 0.0)}, + {FN (abs2), ARG(-2.0e+00,2.0e+00), RES(8e0, 0.0)}, + {FN (abs2), ARG(-2.0e+00,-2.0e+00), RES(8e0, 0.0)}, + {FN (abs2), ARG(2.0e+00,8.3886080e+06), RES(7.0368744177668e13, 0.0)}, + {FN (abs2), ARG(2.0e+00,-8.3886080e+06), RES(7.0368744177668e13, 0.0)}, + {FN (abs2), ARG(-2.0e+00,8.3886080e+06), RES(7.0368744177668e13, 0.0)}, + {FN (abs2), ARG(-2.0e+00,-8.3886080e+06), RES(7.0368744177668e13, 0.0)}, + {FN (abs2), ARG(8.3886080e+06,0.0e+00), RES(7.0368744177664e13, 0.0)}, + {FN (abs2), ARG(-8.3886080e+06,0.0e+00), RES(7.0368744177664e13, 0.0)}, + {FN (abs2), ARG(8.3886080e+06,1.19209289550781250e-07), RES(7.03687441776640e13, 0.0)}, + {FN (abs2), ARG(8.3886080e+06,-1.19209289550781250e-07), RES(7.03687441776640e13, 0.0)}, + {FN (abs2), ARG(-8.3886080e+06,1.19209289550781250e-07), RES(7.03687441776640e13, 0.0)}, + {FN (abs2), ARG(-8.3886080e+06,-1.19209289550781250e-07), RES(7.03687441776640e13, 0.0)}, + {FN (abs2), ARG(8.3886080e+06,5.0e-01), RES(7.036874417766425e13, 0.0)}, + {FN (abs2), ARG(8.3886080e+06,-5.0e-01), RES(7.036874417766425e13, 0.0)}, + {FN (abs2), ARG(-8.3886080e+06,5.0e-01), RES(7.036874417766425e13, 0.0)}, + {FN (abs2), ARG(-8.3886080e+06,-5.0e-01), RES(7.036874417766425e13, 0.0)}, + {FN (abs2), ARG(8.3886080e+06,1.0e+00), RES(7.0368744177665e13, 0.0)}, + {FN (abs2), ARG(8.3886080e+06,-1.0e+00), RES(7.0368744177665e13, 0.0)}, + {FN (abs2), ARG(-8.3886080e+06,1.0e+00), RES(7.0368744177665e13, 0.0)}, + {FN (abs2), ARG(-8.3886080e+06,-1.0e+00), RES(7.0368744177665e13, 0.0)}, + {FN (abs2), ARG(8.3886080e+06,2.0e+00), RES(7.0368744177668e13, 0.0)}, + {FN (abs2), ARG(8.3886080e+06,-2.0e+00), RES(7.0368744177668e13, 0.0)}, + {FN (abs2), ARG(-8.3886080e+06,2.0e+00), RES(7.0368744177668e13, 0.0)}, + {FN (abs2), ARG(-8.3886080e+06,-2.0e+00), RES(7.0368744177668e13, 0.0)}, + {FN (abs2), ARG(8.3886080e+06,8.3886080e+06), RES(1.40737488355328e14, 0.0)}, + {FN (abs2), ARG(8.3886080e+06,-8.3886080e+06), RES(1.40737488355328e14, 0.0)}, + {FN (abs2), ARG(-8.3886080e+06,8.3886080e+06), RES(1.40737488355328e14, 0.0)}, + {FN (abs2), ARG(-8.3886080e+06,-8.3886080e+06), RES(1.40737488355328e14, 0.0)}, + {FN (logabs), ARG(1.19209289550781250e-07,0.0e+00), RES(-1.5942385152878742117e1, 0.0)}, + {FN (logabs), ARG(-1.19209289550781250e-07,0.0e+00), RES(-1.5942385152878742117e1, 0.0)}, + {FN (logabs), ARG(1.19209289550781250e-07,1.19209289550781250e-07), RES(-1.5595811562598769462e1, 0.0)}, + {FN (logabs), ARG(1.19209289550781250e-07,-1.19209289550781250e-07), RES(-1.5595811562598769462e1, 0.0)}, + {FN (logabs), ARG(-1.19209289550781250e-07,1.19209289550781250e-07), RES(-1.5595811562598769462e1, 0.0)}, + {FN (logabs), ARG(-1.19209289550781250e-07,-1.19209289550781250e-07), RES(-1.5595811562598769462e1, 0.0)}, + {FN (logabs), ARG(1.19209289550781250e-07,5.0e-01), RES(-6.9314718055991688771e-1, 0.0)}, + {FN (logabs), ARG(1.19209289550781250e-07,-5.0e-01), RES(-6.9314718055991688771e-1, 0.0)}, + {FN (logabs), ARG(-1.19209289550781250e-07,5.0e-01), RES(-6.9314718055991688771e-1, 0.0)}, + {FN (logabs), ARG(-1.19209289550781250e-07,-5.0e-01), RES(-6.9314718055991688771e-1, 0.0)}, + {FN (logabs), ARG(1.19209289550781250e-07,1.0e+00), RES(7.1054273576009513716e-15, 0.0)}, + {FN (logabs), ARG(1.19209289550781250e-07,-1.0e+00), RES(7.1054273576009513716e-15, 0.0)}, + {FN (logabs), ARG(-1.19209289550781250e-07,1.0e+00), RES(7.1054273576009513716e-15, 0.0)}, + {FN (logabs), ARG(-1.19209289550781250e-07,-1.0e+00), RES(7.1054273576009513716e-15, 0.0)}, + {FN (logabs), ARG(1.19209289550781250e-07,2.0e+00), RES(6.9314718055994708577e-1, 0.0)}, + {FN (logabs), ARG(1.19209289550781250e-07,-2.0e+00), RES(6.9314718055994708577e-1, 0.0)}, + {FN (logabs), ARG(-1.19209289550781250e-07,2.0e+00), RES(6.9314718055994708577e-1, 0.0)}, + {FN (logabs), ARG(-1.19209289550781250e-07,-2.0e+00), RES(6.9314718055994708577e-1, 0.0)}, + {FN (logabs), ARG(1.19209289550781250e-07,8.3886080e+06), RES(1.5942385152878742117e1, 0.0)}, + {FN (logabs), ARG(1.19209289550781250e-07,-8.3886080e+06), RES(1.5942385152878742117e1, 0.0)}, + {FN (logabs), ARG(-1.19209289550781250e-07,8.3886080e+06), RES(1.5942385152878742117e1, 0.0)}, + {FN (logabs), ARG(-1.19209289550781250e-07,-8.3886080e+06), RES(1.5942385152878742117e1, 0.0)}, + {FN (logabs), ARG(5.0e-01,0.0e+00), RES(-6.9314718055994530942e-1, 0.0)}, + {FN (logabs), ARG(-5.0e-01,0.0e+00), RES(-6.9314718055994530942e-1, 0.0)}, + {FN (logabs), ARG(5.0e-01,1.19209289550781250e-07), RES(-6.9314718055991688771e-1, 0.0)}, + {FN (logabs), ARG(5.0e-01,-1.19209289550781250e-07), RES(-6.9314718055991688771e-1, 0.0)}, + {FN (logabs), ARG(-5.0e-01,1.19209289550781250e-07), RES(-6.9314718055991688771e-1, 0.0)}, + {FN (logabs), ARG(-5.0e-01,-1.19209289550781250e-07), RES(-6.9314718055991688771e-1, 0.0)}, + {FN (logabs), ARG(5.0e-01,5.0e-01), RES(-3.4657359027997265471e-1, 0.0)}, + {FN (logabs), ARG(5.0e-01,-5.0e-01), RES(-3.4657359027997265471e-1, 0.0)}, + {FN (logabs), ARG(-5.0e-01,5.0e-01), RES(-3.4657359027997265471e-1, 0.0)}, + {FN (logabs), ARG(-5.0e-01,-5.0e-01), RES(-3.4657359027997265471e-1, 0.0)}, + {FN (logabs), ARG(5.0e-01,1.0e+00), RES(1.1157177565710487788e-1, 0.0)}, + {FN (logabs), ARG(5.0e-01,-1.0e+00), RES(1.1157177565710487788e-1, 0.0)}, + {FN (logabs), ARG(-5.0e-01,1.0e+00), RES(1.1157177565710487788e-1, 0.0)}, + {FN (logabs), ARG(-5.0e-01,-1.0e+00), RES(1.1157177565710487788e-1, 0.0)}, + {FN (logabs), ARG(5.0e-01,2.0e+00), RES(7.2345949146816273071e-1, 0.0)}, + {FN (logabs), ARG(5.0e-01,-2.0e+00), RES(7.2345949146816273071e-1, 0.0)}, + {FN (logabs), ARG(-5.0e-01,2.0e+00), RES(7.2345949146816273071e-1, 0.0)}, + {FN (logabs), ARG(-5.0e-01,-2.0e+00), RES(7.2345949146816273071e-1, 0.0)}, + {FN (logabs), ARG(5.0e-01,8.3886080e+06), RES(1.5942385152878743893e1, 0.0)}, + {FN (logabs), ARG(5.0e-01,-8.3886080e+06), RES(1.5942385152878743893e1, 0.0)}, + {FN (logabs), ARG(-5.0e-01,8.3886080e+06), RES(1.5942385152878743893e1, 0.0)}, + {FN (logabs), ARG(-5.0e-01,-8.3886080e+06), RES(1.5942385152878743893e1, 0.0)}, + {FN (logabs), ARG(1.0e+00,0.0e+00), RES(0e0, 0.0)}, + {FN (logabs), ARG(-1.0e+00,0.0e+00), RES(0e0, 0.0)}, + {FN (logabs), ARG(1.0e+00,1.19209289550781250e-07), RES(7.1054273576009513716e-15, 0.0)}, + {FN (logabs), ARG(1.0e+00,-1.19209289550781250e-07), RES(7.1054273576009513716e-15, 0.0)}, + {FN (logabs), ARG(-1.0e+00,1.19209289550781250e-07), RES(7.1054273576009513716e-15, 0.0)}, + {FN (logabs), ARG(-1.0e+00,-1.19209289550781250e-07), RES(7.1054273576009513716e-15, 0.0)}, + {FN (logabs), ARG(1.0e+00,5.0e-01), RES(1.1157177565710487788e-1, 0.0)}, + {FN (logabs), ARG(1.0e+00,-5.0e-01), RES(1.1157177565710487788e-1, 0.0)}, + {FN (logabs), ARG(-1.0e+00,5.0e-01), RES(1.1157177565710487788e-1, 0.0)}, + {FN (logabs), ARG(-1.0e+00,-5.0e-01), RES(1.1157177565710487788e-1, 0.0)}, + {FN (logabs), ARG(1.0e+00,1.0e+00), RES(3.4657359027997265471e-1, 0.0)}, + {FN (logabs), ARG(1.0e+00,-1.0e+00), RES(3.4657359027997265471e-1, 0.0)}, + {FN (logabs), ARG(-1.0e+00,1.0e+00), RES(3.4657359027997265471e-1, 0.0)}, + {FN (logabs), ARG(-1.0e+00,-1.0e+00), RES(3.4657359027997265471e-1, 0.0)}, + {FN (logabs), ARG(1.0e+00,2.0e+00), RES(8.0471895621705018730e-1, 0.0)}, + {FN (logabs), ARG(1.0e+00,-2.0e+00), RES(8.0471895621705018730e-1, 0.0)}, + {FN (logabs), ARG(-1.0e+00,2.0e+00), RES(8.0471895621705018730e-1, 0.0)}, + {FN (logabs), ARG(-1.0e+00,-2.0e+00), RES(8.0471895621705018730e-1, 0.0)}, + {FN (logabs), ARG(1.0e+00,8.3886080e+06), RES(1.5942385152878749222e1, 0.0)}, + {FN (logabs), ARG(1.0e+00,-8.3886080e+06), RES(1.5942385152878749222e1, 0.0)}, + {FN (logabs), ARG(-1.0e+00,8.3886080e+06), RES(1.5942385152878749222e1, 0.0)}, + {FN (logabs), ARG(-1.0e+00,-8.3886080e+06), RES(1.5942385152878749222e1, 0.0)}, + {FN (logabs), ARG(2.0e+00,0.0e+00), RES(6.9314718055994530942e-1, 0.0)}, + {FN (logabs), ARG(-2.0e+00,0.0e+00), RES(6.9314718055994530942e-1, 0.0)}, + {FN (logabs), ARG(2.0e+00,1.19209289550781250e-07), RES(6.9314718055994708577e-1, 0.0)}, + {FN (logabs), ARG(2.0e+00,-1.19209289550781250e-07), RES(6.9314718055994708577e-1, 0.0)}, + {FN (logabs), ARG(-2.0e+00,1.19209289550781250e-07), RES(6.9314718055994708577e-1, 0.0)}, + {FN (logabs), ARG(-2.0e+00,-1.19209289550781250e-07), RES(6.9314718055994708577e-1, 0.0)}, + {FN (logabs), ARG(2.0e+00,5.0e-01), RES(7.2345949146816273071e-1, 0.0)}, + {FN (logabs), ARG(2.0e+00,-5.0e-01), RES(7.2345949146816273071e-1, 0.0)}, + {FN (logabs), ARG(-2.0e+00,5.0e-01), RES(7.2345949146816273071e-1, 0.0)}, + {FN (logabs), ARG(-2.0e+00,-5.0e-01), RES(7.2345949146816273071e-1, 0.0)}, + {FN (logabs), ARG(2.0e+00,1.0e+00), RES(8.0471895621705018730e-1, 0.0)}, + {FN (logabs), ARG(2.0e+00,-1.0e+00), RES(8.0471895621705018730e-1, 0.0)}, + {FN (logabs), ARG(-2.0e+00,1.0e+00), RES(8.0471895621705018730e-1, 0.0)}, + {FN (logabs), ARG(-2.0e+00,-1.0e+00), RES(8.0471895621705018730e-1, 0.0)}, + {FN (logabs), ARG(2.0e+00,2.0e+00), RES(1.0397207708399179641e0, 0.0)}, + {FN (logabs), ARG(2.0e+00,-2.0e+00), RES(1.0397207708399179641e0, 0.0)}, + {FN (logabs), ARG(-2.0e+00,2.0e+00), RES(1.0397207708399179641e0, 0.0)}, + {FN (logabs), ARG(-2.0e+00,-2.0e+00), RES(1.0397207708399179641e0, 0.0)}, + {FN (logabs), ARG(2.0e+00,8.3886080e+06), RES(1.5942385152878770538e1, 0.0)}, + {FN (logabs), ARG(2.0e+00,-8.3886080e+06), RES(1.5942385152878770538e1, 0.0)}, + {FN (logabs), ARG(-2.0e+00,8.3886080e+06), RES(1.5942385152878770538e1, 0.0)}, + {FN (logabs), ARG(-2.0e+00,-8.3886080e+06), RES(1.5942385152878770538e1, 0.0)}, + {FN (logabs), ARG(8.3886080e+06,0.0e+00), RES(1.5942385152878742117e1, 0.0)}, + {FN (logabs), ARG(-8.3886080e+06,0.0e+00), RES(1.5942385152878742117e1, 0.0)}, + {FN (logabs), ARG(8.3886080e+06,1.19209289550781250e-07), RES(1.5942385152878742117e1, 0.0)}, + {FN (logabs), ARG(8.3886080e+06,-1.19209289550781250e-07), RES(1.5942385152878742117e1, 0.0)}, + {FN (logabs), ARG(-8.3886080e+06,1.19209289550781250e-07), RES(1.5942385152878742117e1, 0.0)}, + {FN (logabs), ARG(-8.3886080e+06,-1.19209289550781250e-07), RES(1.5942385152878742117e1, 0.0)}, + {FN (logabs), ARG(8.3886080e+06,5.0e-01), RES(1.5942385152878743893e1, 0.0)}, + {FN (logabs), ARG(8.3886080e+06,-5.0e-01), RES(1.5942385152878743893e1, 0.0)}, + {FN (logabs), ARG(-8.3886080e+06,5.0e-01), RES(1.5942385152878743893e1, 0.0)}, + {FN (logabs), ARG(-8.3886080e+06,-5.0e-01), RES(1.5942385152878743893e1, 0.0)}, + {FN (logabs), ARG(8.3886080e+06,1.0e+00), RES(1.5942385152878749222e1, 0.0)}, + {FN (logabs), ARG(8.3886080e+06,-1.0e+00), RES(1.5942385152878749222e1, 0.0)}, + {FN (logabs), ARG(-8.3886080e+06,1.0e+00), RES(1.5942385152878749222e1, 0.0)}, + {FN (logabs), ARG(-8.3886080e+06,-1.0e+00), RES(1.5942385152878749222e1, 0.0)}, + {FN (logabs), ARG(8.3886080e+06,2.0e+00), RES(1.5942385152878770538e1, 0.0)}, + {FN (logabs), ARG(8.3886080e+06,-2.0e+00), RES(1.5942385152878770538e1, 0.0)}, + {FN (logabs), ARG(-8.3886080e+06,2.0e+00), RES(1.5942385152878770538e1, 0.0)}, + {FN (logabs), ARG(-8.3886080e+06,-2.0e+00), RES(1.5942385152878770538e1, 0.0)}, + {FN (logabs), ARG(8.3886080e+06,8.3886080e+06), RES(1.6288958743158714771e1, 0.0)}, + {FN (logabs), ARG(8.3886080e+06,-8.3886080e+06), RES(1.6288958743158714771e1, 0.0)}, + {FN (logabs), ARG(-8.3886080e+06,8.3886080e+06), RES(1.6288958743158714771e1, 0.0)}, + {FN (logabs), ARG(-8.3886080e+06,-8.3886080e+06), RES(1.6288958743158714771e1, 0.0)}, + {FN (logabs), ARG(0.0e+00,1.19209289550781250e-07), RES(-1.5942385152878742117e1, 0.0)}, + {FN (logabs), ARG(0.0e+00,-1.19209289550781250e-07), RES(-1.5942385152878742117e1, 0.0)}, + {FN (logabs), ARG(0.0e+00,5.0e-01), RES(-6.9314718055994530942e-1, 0.0)}, + {FN (logabs), ARG(0.0e+00,-5.0e-01), RES(-6.9314718055994530942e-1, 0.0)}, + {FN (logabs), ARG(0.0e+00,1.0e+00), RES(0e0, 0.0)}, + {FN (logabs), ARG(0.0e+00,-1.0e+00), RES(0e0, 0.0)}, + {FN (logabs), ARG(0.0e+00,2.0e+00), RES(6.9314718055994530942e-1, 0.0)}, + {FN (logabs), ARG(0.0e+00,-2.0e+00), RES(6.9314718055994530942e-1, 0.0)}, + {FN (logabs), ARG(0.0e+00,8.3886080e+06), RES(1.5942385152878742117e1, 0.0)}, + {FN (logabs), ARG(0.0e+00,-8.3886080e+06), RES(1.5942385152878742117e1, 0.0)}, + {FN (logabs), ARG(1.19209289550781250e-07,1.19209289550781250e-07), RES(-1.5595811562598769462e1, 0.0)}, + {FN (logabs), ARG(1.19209289550781250e-07,-1.19209289550781250e-07), RES(-1.5595811562598769462e1, 0.0)}, + {FN (logabs), ARG(-1.19209289550781250e-07,1.19209289550781250e-07), RES(-1.5595811562598769462e1, 0.0)}, + {FN (logabs), ARG(-1.19209289550781250e-07,-1.19209289550781250e-07), RES(-1.5595811562598769462e1, 0.0)}, + {FN (logabs), ARG(1.19209289550781250e-07,5.0e-01), RES(-6.9314718055991688771e-1, 0.0)}, + {FN (logabs), ARG(1.19209289550781250e-07,-5.0e-01), RES(-6.9314718055991688771e-1, 0.0)}, + {FN (logabs), ARG(-1.19209289550781250e-07,5.0e-01), RES(-6.9314718055991688771e-1, 0.0)}, + {FN (logabs), ARG(-1.19209289550781250e-07,-5.0e-01), RES(-6.9314718055991688771e-1, 0.0)}, + {FN (logabs), ARG(1.19209289550781250e-07,1.0e+00), RES(7.1054273576009513716e-15, 0.0)}, + {FN (logabs), ARG(1.19209289550781250e-07,-1.0e+00), RES(7.1054273576009513716e-15, 0.0)}, + {FN (logabs), ARG(-1.19209289550781250e-07,1.0e+00), RES(7.1054273576009513716e-15, 0.0)}, + {FN (logabs), ARG(-1.19209289550781250e-07,-1.0e+00), RES(7.1054273576009513716e-15, 0.0)}, + {FN (logabs), ARG(1.19209289550781250e-07,2.0e+00), RES(6.9314718055994708577e-1, 0.0)}, + {FN (logabs), ARG(1.19209289550781250e-07,-2.0e+00), RES(6.9314718055994708577e-1, 0.0)}, + {FN (logabs), ARG(-1.19209289550781250e-07,2.0e+00), RES(6.9314718055994708577e-1, 0.0)}, + {FN (logabs), ARG(-1.19209289550781250e-07,-2.0e+00), RES(6.9314718055994708577e-1, 0.0)}, + {FN (logabs), ARG(1.19209289550781250e-07,8.3886080e+06), RES(1.5942385152878742117e1, 0.0)}, + {FN (logabs), ARG(1.19209289550781250e-07,-8.3886080e+06), RES(1.5942385152878742117e1, 0.0)}, + {FN (logabs), ARG(-1.19209289550781250e-07,8.3886080e+06), RES(1.5942385152878742117e1, 0.0)}, + {FN (logabs), ARG(-1.19209289550781250e-07,-8.3886080e+06), RES(1.5942385152878742117e1, 0.0)}, + {FN (logabs), ARG(5.0e-01,1.19209289550781250e-07), RES(-6.9314718055991688771e-1, 0.0)}, + {FN (logabs), ARG(5.0e-01,-1.19209289550781250e-07), RES(-6.9314718055991688771e-1, 0.0)}, + {FN (logabs), ARG(-5.0e-01,1.19209289550781250e-07), RES(-6.9314718055991688771e-1, 0.0)}, + {FN (logabs), ARG(-5.0e-01,-1.19209289550781250e-07), RES(-6.9314718055991688771e-1, 0.0)}, + {FN (logabs), ARG(5.0e-01,5.0e-01), RES(-3.4657359027997265471e-1, 0.0)}, + {FN (logabs), ARG(5.0e-01,-5.0e-01), RES(-3.4657359027997265471e-1, 0.0)}, + {FN (logabs), ARG(-5.0e-01,5.0e-01), RES(-3.4657359027997265471e-1, 0.0)}, + {FN (logabs), ARG(-5.0e-01,-5.0e-01), RES(-3.4657359027997265471e-1, 0.0)}, + {FN (logabs), ARG(5.0e-01,1.0e+00), RES(1.1157177565710487788e-1, 0.0)}, + {FN (logabs), ARG(5.0e-01,-1.0e+00), RES(1.1157177565710487788e-1, 0.0)}, + {FN (logabs), ARG(-5.0e-01,1.0e+00), RES(1.1157177565710487788e-1, 0.0)}, + {FN (logabs), ARG(-5.0e-01,-1.0e+00), RES(1.1157177565710487788e-1, 0.0)}, + {FN (logabs), ARG(5.0e-01,2.0e+00), RES(7.2345949146816273071e-1, 0.0)}, + {FN (logabs), ARG(5.0e-01,-2.0e+00), RES(7.2345949146816273071e-1, 0.0)}, + {FN (logabs), ARG(-5.0e-01,2.0e+00), RES(7.2345949146816273071e-1, 0.0)}, + {FN (logabs), ARG(-5.0e-01,-2.0e+00), RES(7.2345949146816273071e-1, 0.0)}, + {FN (logabs), ARG(5.0e-01,8.3886080e+06), RES(1.5942385152878743893e1, 0.0)}, + {FN (logabs), ARG(5.0e-01,-8.3886080e+06), RES(1.5942385152878743893e1, 0.0)}, + {FN (logabs), ARG(-5.0e-01,8.3886080e+06), RES(1.5942385152878743893e1, 0.0)}, + {FN (logabs), ARG(-5.0e-01,-8.3886080e+06), RES(1.5942385152878743893e1, 0.0)}, + {FN (logabs), ARG(1.0e+00,1.19209289550781250e-07), RES(7.1054273576009513716e-15, 0.0)}, + {FN (logabs), ARG(1.0e+00,-1.19209289550781250e-07), RES(7.1054273576009513716e-15, 0.0)}, + {FN (logabs), ARG(-1.0e+00,1.19209289550781250e-07), RES(7.1054273576009513716e-15, 0.0)}, + {FN (logabs), ARG(-1.0e+00,-1.19209289550781250e-07), RES(7.1054273576009513716e-15, 0.0)}, + {FN (logabs), ARG(1.0e+00,5.0e-01), RES(1.1157177565710487788e-1, 0.0)}, + {FN (logabs), ARG(1.0e+00,-5.0e-01), RES(1.1157177565710487788e-1, 0.0)}, + {FN (logabs), ARG(-1.0e+00,5.0e-01), RES(1.1157177565710487788e-1, 0.0)}, + {FN (logabs), ARG(-1.0e+00,-5.0e-01), RES(1.1157177565710487788e-1, 0.0)}, + {FN (logabs), ARG(1.0e+00,1.0e+00), RES(3.4657359027997265471e-1, 0.0)}, + {FN (logabs), ARG(1.0e+00,-1.0e+00), RES(3.4657359027997265471e-1, 0.0)}, + {FN (logabs), ARG(-1.0e+00,1.0e+00), RES(3.4657359027997265471e-1, 0.0)}, + {FN (logabs), ARG(-1.0e+00,-1.0e+00), RES(3.4657359027997265471e-1, 0.0)}, + {FN (logabs), ARG(1.0e+00,2.0e+00), RES(8.0471895621705018730e-1, 0.0)}, + {FN (logabs), ARG(1.0e+00,-2.0e+00), RES(8.0471895621705018730e-1, 0.0)}, + {FN (logabs), ARG(-1.0e+00,2.0e+00), RES(8.0471895621705018730e-1, 0.0)}, + {FN (logabs), ARG(-1.0e+00,-2.0e+00), RES(8.0471895621705018730e-1, 0.0)}, + {FN (logabs), ARG(1.0e+00,8.3886080e+06), RES(1.5942385152878749222e1, 0.0)}, + {FN (logabs), ARG(1.0e+00,-8.3886080e+06), RES(1.5942385152878749222e1, 0.0)}, + {FN (logabs), ARG(-1.0e+00,8.3886080e+06), RES(1.5942385152878749222e1, 0.0)}, + {FN (logabs), ARG(-1.0e+00,-8.3886080e+06), RES(1.5942385152878749222e1, 0.0)}, + {FN (logabs), ARG(2.0e+00,1.19209289550781250e-07), RES(6.9314718055994708577e-1, 0.0)}, + {FN (logabs), ARG(2.0e+00,-1.19209289550781250e-07), RES(6.9314718055994708577e-1, 0.0)}, + {FN (logabs), ARG(-2.0e+00,1.19209289550781250e-07), RES(6.9314718055994708577e-1, 0.0)}, + {FN (logabs), ARG(-2.0e+00,-1.19209289550781250e-07), RES(6.9314718055994708577e-1, 0.0)}, + {FN (logabs), ARG(2.0e+00,5.0e-01), RES(7.2345949146816273071e-1, 0.0)}, + {FN (logabs), ARG(2.0e+00,-5.0e-01), RES(7.2345949146816273071e-1, 0.0)}, + {FN (logabs), ARG(-2.0e+00,5.0e-01), RES(7.2345949146816273071e-1, 0.0)}, + {FN (logabs), ARG(-2.0e+00,-5.0e-01), RES(7.2345949146816273071e-1, 0.0)}, + {FN (logabs), ARG(2.0e+00,1.0e+00), RES(8.0471895621705018730e-1, 0.0)}, + {FN (logabs), ARG(2.0e+00,-1.0e+00), RES(8.0471895621705018730e-1, 0.0)}, + {FN (logabs), ARG(-2.0e+00,1.0e+00), RES(8.0471895621705018730e-1, 0.0)}, + {FN (logabs), ARG(-2.0e+00,-1.0e+00), RES(8.0471895621705018730e-1, 0.0)}, + {FN (logabs), ARG(2.0e+00,2.0e+00), RES(1.0397207708399179641e0, 0.0)}, + {FN (logabs), ARG(2.0e+00,-2.0e+00), RES(1.0397207708399179641e0, 0.0)}, + {FN (logabs), ARG(-2.0e+00,2.0e+00), RES(1.0397207708399179641e0, 0.0)}, + {FN (logabs), ARG(-2.0e+00,-2.0e+00), RES(1.0397207708399179641e0, 0.0)}, + {FN (logabs), ARG(2.0e+00,8.3886080e+06), RES(1.5942385152878770538e1, 0.0)}, + {FN (logabs), ARG(2.0e+00,-8.3886080e+06), RES(1.5942385152878770538e1, 0.0)}, + {FN (logabs), ARG(-2.0e+00,8.3886080e+06), RES(1.5942385152878770538e1, 0.0)}, + {FN (logabs), ARG(-2.0e+00,-8.3886080e+06), RES(1.5942385152878770538e1, 0.0)}, + {FN (logabs), ARG(8.3886080e+06,1.19209289550781250e-07), RES(1.5942385152878742117e1, 0.0)}, + {FN (logabs), ARG(8.3886080e+06,-1.19209289550781250e-07), RES(1.5942385152878742117e1, 0.0)}, + {FN (logabs), ARG(-8.3886080e+06,1.19209289550781250e-07), RES(1.5942385152878742117e1, 0.0)}, + {FN (logabs), ARG(-8.3886080e+06,-1.19209289550781250e-07), RES(1.5942385152878742117e1, 0.0)}, + {FN (logabs), ARG(8.3886080e+06,5.0e-01), RES(1.5942385152878743893e1, 0.0)}, + {FN (logabs), ARG(8.3886080e+06,-5.0e-01), RES(1.5942385152878743893e1, 0.0)}, + {FN (logabs), ARG(-8.3886080e+06,5.0e-01), RES(1.5942385152878743893e1, 0.0)}, + {FN (logabs), ARG(-8.3886080e+06,-5.0e-01), RES(1.5942385152878743893e1, 0.0)}, + {FN (logabs), ARG(8.3886080e+06,1.0e+00), RES(1.5942385152878749222e1, 0.0)}, + {FN (logabs), ARG(8.3886080e+06,-1.0e+00), RES(1.5942385152878749222e1, 0.0)}, + {FN (logabs), ARG(-8.3886080e+06,1.0e+00), RES(1.5942385152878749222e1, 0.0)}, + {FN (logabs), ARG(-8.3886080e+06,-1.0e+00), RES(1.5942385152878749222e1, 0.0)}, + {FN (logabs), ARG(8.3886080e+06,2.0e+00), RES(1.5942385152878770538e1, 0.0)}, + {FN (logabs), ARG(8.3886080e+06,-2.0e+00), RES(1.5942385152878770538e1, 0.0)}, + {FN (logabs), ARG(-8.3886080e+06,2.0e+00), RES(1.5942385152878770538e1, 0.0)}, + {FN (logabs), ARG(-8.3886080e+06,-2.0e+00), RES(1.5942385152878770538e1, 0.0)}, + {FN (logabs), ARG(8.3886080e+06,8.3886080e+06), RES(1.6288958743158714771e1, 0.0)}, + {FN (logabs), ARG(8.3886080e+06,-8.3886080e+06), RES(1.6288958743158714771e1, 0.0)}, + {FN (logabs), ARG(-8.3886080e+06,8.3886080e+06), RES(1.6288958743158714771e1, 0.0)}, + {FN (logabs), ARG(-8.3886080e+06,-8.3886080e+06), RES(1.6288958743158714771e1, 0.0)}, diff --git a/gsl-2.5/complex/results2.h b/gsl-2.5/complex/results2.h new file mode 100644 index 00000000..b29dae45 --- /dev/null +++ b/gsl-2.5/complex/results2.h @@ -0,0 +1,43 @@ + {FN (pow), ARG(1.0e+00,0.0e+00), ARG(0.0e+00,0.0e+00), RES(1e0, 0.0)}, + {FN (pow), ARG(1.0e+00,0.0e+00), ARG(1.0e+00,0.0e+00), RES(1e0, 0.0)}, + {FN (pow), ARG(1.0e+00,0.0e+00), ARG(0.0e+00,1.0e+00), RES(1e0, 0.0)}, + {FN (pow), ARG(1.0e+00,0.0e+00), ARG(-1.0e+00,0.0e+00), RES(1e0, 0.0)}, + {FN (pow), ARG(1.0e+00,0.0e+00), ARG(0.0e+00,-1.0e+00), RES(1e0, 0.0)}, + {FN (pow), ARG(1.0e+00,0.0e+00), ARG(5.0e-01,1.00000000000000005551e-01), RES(1e0, 0.0)}, + {FN (pow), ARG(1.0e+00,0.0e+00), ARG(5.0e-01,-1.00000000000000005551e-01), RES(1e0, 0.0)}, + {FN (pow), ARG(0.0e+00,1.0e+00), ARG(0.0e+00,0.0e+00), RES(1e0, 0.0)}, + {FN (pow), ARG(0.0e+00,1.0e+00), ARG(1.0e+00,0.0e+00), RES(0, 1)}, + {FN (pow), ARG(0.0e+00,1.0e+00), ARG(0.0e+00,1.0e+00), RES(2.0787957635076190855e-1, 0.0)}, + {FN (pow), ARG(0.0e+00,1.0e+00), ARG(-1.0e+00,0.0e+00), RES(0, -1)}, + {FN (pow), ARG(0.0e+00,1.0e+00), ARG(0.0e+00,-1.0e+00), RES(4.8104773809653516555e0, 0.0)}, + {FN (pow), ARG(0.0e+00,1.0e+00), ARG(5.0e-01,1.00000000000000005551e-01), RES(6.0431891044739184057e-1, 6.0431891044739184057e-1)}, + {FN (pow), ARG(0.0e+00,1.0e+00), ARG(5.0e-01,-1.00000000000000005551e-01), RES(8.2737771622906514822e-1, 8.2737771622906514822e-1)}, + {FN (pow), ARG(-1.0e+00,0.0e+00), ARG(0.0e+00,0.0e+00), RES(1e0, 0.0)}, + {FN (pow), ARG(-1.0e+00,0.0e+00), ARG(1.0e+00,0.0e+00), RES(-1e0, 0.0)}, + {FN (pow), ARG(-1.0e+00,0.0e+00), ARG(0.0e+00,1.0e+00), RES(4.3213918263772249774e-2, 0.0)}, + {FN (pow), ARG(-1.0e+00,0.0e+00), ARG(-1.0e+00,0.0e+00), RES(-1e0, 0.0)}, + {FN (pow), ARG(-1.0e+00,0.0e+00), ARG(0.0e+00,-1.0e+00), RES(2.3140692632779269006e1, 0.0)}, + {FN (pow), ARG(-1.0e+00,0.0e+00), ARG(5.0e-01,1.00000000000000005551e-01), RES(0, 7.3040269104864559813e-1)}, + {FN (pow), ARG(-1.0e+00,0.0e+00), ARG(5.0e-01,-1.00000000000000005551e-01), RES(0, 1.3691077706248469087e0)}, + {FN (pow), ARG(0.0e+00,-1.0e+00), ARG(0.0e+00,0.0e+00), RES(1e0, 0.0)}, + {FN (pow), ARG(0.0e+00,-1.0e+00), ARG(1.0e+00,0.0e+00), RES(0, -1)}, + {FN (pow), ARG(0.0e+00,-1.0e+00), ARG(0.0e+00,1.0e+00), RES(4.8104773809653516555e0, 0.0)}, + {FN (pow), ARG(0.0e+00,-1.0e+00), ARG(-1.0e+00,0.0e+00), RES(0, 1)}, + {FN (pow), ARG(0.0e+00,-1.0e+00), ARG(0.0e+00,-1.0e+00), RES(2.0787957635076190855e-1, 0.0)}, + {FN (pow), ARG(0.0e+00,-1.0e+00), ARG(5.0e-01,1.00000000000000005551e-01), RES(8.2737771622906514822e-1, -8.2737771622906514822e-1)}, + {FN (pow), ARG(0.0e+00,-1.0e+00), ARG(5.0e-01,-1.00000000000000005551e-01), RES(6.0431891044739184057e-1, -6.0431891044739184057e-1)}, + {FN (pow), ARG(5.0e-01,1.00000000000000005551e-01), ARG(0.0e+00,0.0e+00), RES(1e0, 0.0)}, + {FN (pow), ARG(5.0e-01,1.00000000000000005551e-01), ARG(1.0e+00,0.0e+00), RES(5e-1, 1.0000000000000000555e-1)}, + {FN (pow), ARG(5.0e-01,1.00000000000000005551e-01), ARG(0.0e+00,1.0e+00), RES(6.4160554864378080418e-1, -5.1201864456768275590e-1)}, + {FN (pow), ARG(5.0e-01,1.00000000000000005551e-01), ARG(-1.0e+00,0.0e+00), RES(1.9230769230769230687e0, -3.8461538461538463509e-1)}, + {FN (pow), ARG(5.0e-01,1.00000000000000005551e-01), ARG(0.0e+00,-1.0e+00), RES(9.5219021866126714108e-1, 7.5987364224031834571e-1)}, + {FN (pow), ARG(5.0e-01,1.00000000000000005551e-01), ARG(5.0e-01,1.00000000000000005551e-01), RES(6.9977300530987816719e-1, 2.1940939105372143160e-2)}, + {FN (pow), ARG(5.0e-01,1.00000000000000005551e-01), ARG(5.0e-01,-1.00000000000000005551e-01), RES(7.1829191470060938876e-1, 1.2038189555821612762e-1)}, + {FN (pow), ARG(5.0e-01,-1.00000000000000005551e-01), ARG(0.0e+00,0.0e+00), RES(1e0, 0.0)}, + {FN (pow), ARG(5.0e-01,-1.00000000000000005551e-01), ARG(1.0e+00,0.0e+00), RES(5e-1, -1.0000000000000000555e-1)}, + {FN (pow), ARG(5.0e-01,-1.00000000000000005551e-01), ARG(0.0e+00,1.0e+00), RES(9.5219021866126714108e-1, -7.5987364224031834571e-1)}, + {FN (pow), ARG(5.0e-01,-1.00000000000000005551e-01), ARG(-1.0e+00,0.0e+00), RES(1.9230769230769230687e0, 3.8461538461538463509e-1)}, + {FN (pow), ARG(5.0e-01,-1.00000000000000005551e-01), ARG(0.0e+00,-1.0e+00), RES(6.4160554864378080418e-1, 5.1201864456768275590e-1)}, + {FN (pow), ARG(5.0e-01,-1.00000000000000005551e-01), ARG(5.0e-01,1.00000000000000005551e-01), RES(7.1829191470060938876e-1, -1.2038189555821612762e-1)}, + {FN (pow), ARG(5.0e-01,-1.00000000000000005551e-01), ARG(5.0e-01,-1.00000000000000005551e-01), RES(6.9977300530987816719e-1, -2.1940939105372143160e-2)}, + {FN (pow), ARG(0.0e+00,9.0e+00), ARG(2.0e+00,0.0e+00), RES(-8.1e+01, 0.0e+00)}, diff --git a/gsl-2.5/complex/results_real.h b/gsl-2.5/complex/results_real.h new file mode 100644 index 00000000..356f6f58 --- /dev/null +++ b/gsl-2.5/complex/results_real.h @@ -0,0 +1,115 @@ + {FN (sqrt_real), -1.0e+01, RES(0, 3.1622776601683793320e0)}, + {FN (sqrt_real), -2.0e+00, RES(0, 1.4142135623730950488e0)}, + {FN (sqrt_real), -1.0e+00, RES(0, 1)}, + {FN (sqrt_real), -7.50e-01, RES(0, 8.6602540378443864676e-1)}, + {FN (sqrt_real), -5.0e-01, RES(0, 7.0710678118654752440e-1)}, + {FN (sqrt_real), -1.250e-01, RES(0, 3.5355339059327376220e-1)}, + {FN (sqrt_real), -3.45266983001243932001e-04, RES(0, 1.8581361171917517303e-2)}, + {FN (sqrt_real), -1.19209289550781250e-07, RES(0, 3.4526698300124390840e-4)}, + {FN (sqrt_real), 0.0e+00, RES(0e0, 0.0)}, + {FN (sqrt_real), 1.19209289550781250e-07, RES(3.4526698300124390840e-4, 0.0)}, + {FN (sqrt_real), 3.45266983001243932001e-04, RES(1.8581361171917517303e-2, 0.0)}, + {FN (sqrt_real), 1.250e-01, RES(3.5355339059327376220e-1, 0.0)}, + {FN (sqrt_real), 5.0e-01, RES(7.0710678118654752440e-1, 0.0)}, + {FN (sqrt_real), 7.50e-01, RES(8.6602540378443864676e-1, 0.0)}, + {FN (sqrt_real), 1.0e+00, RES(1e0, 0.0)}, + {FN (sqrt_real), 2.0e+00, RES(1.4142135623730950488e0, 0.0)}, + {FN (sqrt_real), 1.0e+01, RES(3.1622776601683793320e0, 0.0)}, + {FN (arcsin_real), -1.0e+01, RES(-1.5707963267948966192e0, 2.9932228461263808979e0)}, + {FN (arcsin_real), -2.0e+00, RES(-1.5707963267948966192e0, 1.3169578969248167086e0)}, + {FN (arcsin_real), -1.0e+00, RES(-1.5707963267948966192e0, 0.0)}, + {FN (arcsin_real), -7.50e-01, RES(-8.4806207898148100805e-1, 0.0)}, + {FN (arcsin_real), -5.0e-01, RES(-5.2359877559829887308e-1, 0.0)}, + {FN (arcsin_real), -1.250e-01, RES(-1.2532783116806539687e-1, 0.0)}, + {FN (arcsin_real), -3.45266983001243932001e-04, RES(-3.4526698986108292481e-4, 0.0)}, + {FN (arcsin_real), -1.19209289550781250e-07, RES(-1.1920928955078153234e-7, 0.0)}, + {FN (arcsin_real), 0.0e+00, RES(0e0, 0.0)}, + {FN (arcsin_real), 1.19209289550781250e-07, RES(1.1920928955078153234e-7, 0.0)}, + {FN (arcsin_real), 3.45266983001243932001e-04, RES(3.4526698986108292481e-4, 0.0)}, + {FN (arcsin_real), 1.250e-01, RES(1.2532783116806539687e-1, 0.0)}, + {FN (arcsin_real), 5.0e-01, RES(5.2359877559829887308e-1, 0.0)}, + {FN (arcsin_real), 7.50e-01, RES(8.4806207898148100805e-1, 0.0)}, + {FN (arcsin_real), 1.0e+00, RES(1.5707963267948966192e0, 0.0)}, + {FN (arcsin_real), 2.0e+00, RES(1.5707963267948966192e0, -1.3169578969248167086e0)}, + {FN (arcsin_real), 1.0e+01, RES(1.5707963267948966192e0, -2.9932228461263808979e0)}, + {FN (arccos_real), -1.0e+01, RES(3.1415926535897932385e0, -2.9932228461263808979e0)}, + {FN (arccos_real), -2.0e+00, RES(3.1415926535897932385e0, -1.3169578969248167086e0)}, + {FN (arccos_real), -1.0e+00, RES(3.1415926535897932385e0, 0.0)}, + {FN (arccos_real), -7.50e-01, RES(2.4188584057763776273e0, 0.0)}, + {FN (arccos_real), -5.0e-01, RES(2.0943951023931954923e0, 0.0)}, + {FN (arccos_real), -1.250e-01, RES(1.6961241579629620161e0, 0.0)}, + {FN (arccos_real), -3.45266983001243932001e-04, RES(1.5711415937847577022e0, 0.0)}, + {FN (arccos_real), -1.19209289550781250e-07, RES(1.570796446004186170e0, 0.0)}, + {FN (arccos_real), 0.0e+00, RES(1.5707963267948966192e0, 0.0)}, + {FN (arccos_real), 1.19209289550781250e-07, RES(1.5707962075856070684e0, 0.0)}, + {FN (arccos_real), 3.45266983001243932001e-04, RES(1.5704510598050355363e0, 0.0)}, + {FN (arccos_real), 1.250e-01, RES(1.4454684956268312224e0, 0.0)}, + {FN (arccos_real), 5.0e-01, RES(1.0471975511965977462e0, 0.0)}, + {FN (arccos_real), 7.50e-01, RES(7.2273424781341561118e-1, 0.0)}, + {FN (arccos_real), 1.0e+00, RES(0e0, 0.0)}, + {FN (arccos_real), 2.0e+00, RES(0, 1.3169578969248167086e0)}, + {FN (arccos_real), 1.0e+01, RES(0, 2.9932228461263808979e0)}, + {FN (arccosh_real), -1.0e+01, RES(2.9932228461263808979e0, 3.1415926535897932385e0)}, + {FN (arccosh_real), -2.0e+00, RES(1.3169578969248167086e0, 3.1415926535897932385e0)}, + {FN (arccosh_real), -1.0e+00, RES(0, 3.1415926535897932385e0)}, + {FN (arccosh_real), -7.50e-01, RES(0, 2.4188584057763776273e0)}, + {FN (arccosh_real), -5.0e-01, RES(0, 2.0943951023931954923e0)}, + {FN (arccosh_real), -1.250e-01, RES(0, 1.6961241579629620161e0)}, + {FN (arccosh_real), -3.45266983001243932001e-04, RES(0, 1.5711415937847577022e0)}, + {FN (arccosh_real), -1.19209289550781250e-07, RES(0, 1.570796446004186170e0)}, + {FN (arccosh_real), 0.0e+00, RES(0, 1.5707963267948966192e0)}, + {FN (arccosh_real), 1.19209289550781250e-07, RES(0, 1.5707962075856070684e0)}, + {FN (arccosh_real), 3.45266983001243932001e-04, RES(0, 1.5704510598050355363e0)}, + {FN (arccosh_real), 1.250e-01, RES(0, 1.4454684956268312224e0)}, + {FN (arccosh_real), 5.0e-01, RES(0, 1.0471975511965977462e0)}, + {FN (arccosh_real), 7.50e-01, RES(0, 7.2273424781341561118e-1)}, + {FN (arccosh_real), 1.0e+00, RES(0e0, 0.0)}, + {FN (arccosh_real), 2.0e+00, RES(1.3169578969248167086e0, 0.0)}, + {FN (arccosh_real), 1.0e+01, RES(2.9932228461263808979e0, 0.0)}, + {FN (arctanh_real), -1.0e+01, RES(-1.0033534773107558064e-1, 1.5707963267948966192e0)}, + {FN (arctanh_real), -2.0e+00, RES(-5.4930614433405484570e-1, 1.5707963267948966192e0)}, + {FN (arctanh_real), -7.50e-01, RES(-9.7295507452765665255e-1, 0.0)}, + {FN (arctanh_real), -5.0e-01, RES(-5.4930614433405484570e-1, 0.0)}, + {FN (arctanh_real), -1.250e-01, RES(-1.2565721414045303884e-1, 0.0)}, + {FN (arctanh_real), -3.45266983001243932001e-04, RES(-3.4526699672092216295e-4, 0.0)}, + {FN (arctanh_real), -1.19209289550781250e-07, RES(-1.1920928955078181469e-7, 0.0)}, + {FN (arctanh_real), 0.0e+00, RES(0e0, 0.0)}, + {FN (arctanh_real), 1.19209289550781250e-07, RES(1.1920928955078181469e-7, 0.0)}, + {FN (arctanh_real), 3.45266983001243932001e-04, RES(3.4526699672092216295e-4, 0.0)}, + {FN (arctanh_real), 1.250e-01, RES(1.2565721414045303884e-1, 0.0)}, + {FN (arctanh_real), 5.0e-01, RES(5.4930614433405484570e-1, 0.0)}, + {FN (arctanh_real), 7.50e-01, RES(9.7295507452765665255e-1, 0.0)}, + {FN (arctanh_real), 2.0e+00, RES(5.4930614433405484570e-1, -1.5707963267948966192e0)}, + {FN (arctanh_real), 1.0e+01, RES(1.0033534773107558064e-1, -1.5707963267948966192e0)}, + {FN (arccsc_real), -1.0e+01, RES(-1.0016742116155979635e-1, 0.0)}, + {FN (arccsc_real), -2.0e+00, RES(-5.2359877559829887308e-1, 0.0)}, + {FN (arccsc_real), -1.0e+00, RES(-1.5707963267948966192e0, 0.0)}, + {FN (arccsc_real), -7.50e-01, RES(-1.5707963267948966192e0, 7.9536546122390563053e-1)}, + {FN (arccsc_real), -5.0e-01, RES(-1.5707963267948966192e0, 1.3169578969248167086e0)}, + {FN (arccsc_real), -1.250e-01, RES(-1.5707963267948966192e0, 2.7686593833135738327e0)}, + {FN (arccsc_real), -3.45266983001243932001e-04, RES(-1.5707963267948966192e0, 8.6643397271969925794e0)}, + {FN (arccsc_real), -1.19209289550781250e-07, RES(-1.5707963267948966192e0, 1.6635532333438683873e1)}, + {FN (arccsc_real), 1.19209289550781250e-07, RES(1.5707963267948966192e0, -1.6635532333438683873e1)}, + {FN (arccsc_real), 3.45266983001243932001e-04, RES(1.5707963267948966192e0, -8.6643397271969925794e0)}, + {FN (arccsc_real), 1.250e-01, RES(1.5707963267948966192e0, -2.7686593833135738327e0)}, + {FN (arccsc_real), 5.0e-01, RES(1.5707963267948966192e0, -1.3169578969248167086e0)}, + {FN (arccsc_real), 7.50e-01, RES(1.5707963267948966192e0, -7.9536546122390563053e-1)}, + {FN (arccsc_real), 1.0e+00, RES(1.5707963267948966192e0, 0.0)}, + {FN (arccsc_real), 2.0e+00, RES(5.2359877559829887308e-1, 0.0)}, + {FN (arccsc_real), 1.0e+01, RES(1.0016742116155979635e-1, 0.0)}, + {FN (arcsec_real), -1.0e+01, RES(1.6709637479564564156e0, 0.0)}, + {FN (arcsec_real), -2.0e+00, RES(2.0943951023931954923e0, 0.0)}, + {FN (arcsec_real), -1.0e+00, RES(3.1415926535897932385e0, 0.0)}, + {FN (arcsec_real), -7.50e-01, RES(3.1415926535897932385e0, -7.9536546122390563053e-1)}, + {FN (arcsec_real), -5.0e-01, RES(3.1415926535897932385e0, -1.3169578969248167086e0)}, + {FN (arcsec_real), -1.250e-01, RES(3.1415926535897932385e0, -2.7686593833135738327e0)}, + {FN (arcsec_real), -3.45266983001243932001e-04, RES(3.1415926535897932385e0, -8.6643397271969925794e0)}, + {FN (arcsec_real), -1.19209289550781250e-07, RES(3.1415926535897932385e0, -1.6635532333438683873e1)}, + {FN (arcsec_real), 1.19209289550781250e-07, RES(0, 1.6635532333438683873e1)}, + {FN (arcsec_real), 3.45266983001243932001e-04, RES(0, 8.6643397271969925794e0)}, + {FN (arcsec_real), 1.250e-01, RES(0, 2.7686593833135738327e0)}, + {FN (arcsec_real), 5.0e-01, RES(0, 1.3169578969248167086e0)}, + {FN (arcsec_real), 7.50e-01, RES(0, 7.9536546122390563053e-1)}, + {FN (arcsec_real), 1.0e+00, RES(0e0, 0.0)}, + {FN (arcsec_real), 2.0e+00, RES(1.0471975511965977462e0, 0.0)}, + {FN (arcsec_real), 1.0e+01, RES(1.4706289056333368229e0, 0.0)}, diff --git a/gsl-2.5/complex/results_zreal.h b/gsl-2.5/complex/results_zreal.h new file mode 100644 index 00000000..23380258 --- /dev/null +++ b/gsl-2.5/complex/results_zreal.h @@ -0,0 +1,28 @@ + {FN (pow_real), ARG(0.0e+00,0.0e+00), 0.0e+00, RES(1e0, 0.0)}, + {FN (pow_real), ARG(0.0e+00,0.0e+00), 1.0e+00, RES(0e0, 0.0)}, + {FN (pow_real), ARG(0.0e+00,0.0e+00), 5.0e-01, RES(0e0, 0.0)}, + {FN (pow_real), ARG(0.0e+00,0.0e+00), 2.0e+00, RES(0e0, 0.0)}, + {FN (pow_real), ARG(1.0e+00,0.0e+00), 0.0e+00, RES(1e0, 0.0)}, + {FN (pow_real), ARG(1.0e+00,0.0e+00), 1.0e+00, RES(1e0, 0.0)}, + {FN (pow_real), ARG(1.0e+00,0.0e+00), 5.0e-01, RES(1e0, 0.0)}, + {FN (pow_real), ARG(1.0e+00,0.0e+00), 2.0e+00, RES(1e0, 0.0)}, + {FN (pow_real), ARG(0.0e+00,1.0e+00), 0.0e+00, RES(1e0, 0.0)}, + {FN (pow_real), ARG(0.0e+00,1.0e+00), 1.0e+00, RES(0, 1)}, + {FN (pow_real), ARG(0.0e+00,1.0e+00), 5.0e-01, RES(7.0710678118654752440e-1, 7.0710678118654752440e-1)}, + {FN (pow_real), ARG(0.0e+00,1.0e+00), 2.0e+00, RES(-1e0, 0.0)}, + {FN (pow_real), ARG(-1.0e+00,0.0e+00), 0.0e+00, RES(1e0, 0.0)}, + {FN (pow_real), ARG(-1.0e+00,0.0e+00), 1.0e+00, RES(-1e0, 0.0)}, + {FN (pow_real), ARG(-1.0e+00,0.0e+00), 5.0e-01, RES(0, 1)}, + {FN (pow_real), ARG(-1.0e+00,0.0e+00), 2.0e+00, RES(1e0, 0.0)}, + {FN (pow_real), ARG(0.0e+00,-1.0e+00), 0.0e+00, RES(1e0, 0.0)}, + {FN (pow_real), ARG(0.0e+00,-1.0e+00), 1.0e+00, RES(0, -1)}, + {FN (pow_real), ARG(0.0e+00,-1.0e+00), 5.0e-01, RES(7.0710678118654752440e-1, -7.0710678118654752440e-1)}, + {FN (pow_real), ARG(0.0e+00,-1.0e+00), 2.0e+00, RES(-1e0, 0.0)}, + {FN (pow_real), ARG(5.0e-01,1.00000000000000005551e-01), 0.0e+00, RES(1e0, 0.0)}, + {FN (pow_real), ARG(5.0e-01,1.00000000000000005551e-01), 1.0e+00, RES(5e-1, 1.0000000000000000555e-1)}, + {FN (pow_real), ARG(5.0e-01,1.00000000000000005551e-01), 5.0e-01, RES(7.1059902594898006379e-1, 7.0363169908974695409e-2)}, + {FN (pow_real), ARG(5.0e-01,1.00000000000000005551e-01), 2.0e+00, RES(2.3999999999999999889e-1, 1.0000000000000000555e-1)}, + {FN (pow_real), ARG(5.0e-01,-1.00000000000000005551e-01), 0.0e+00, RES(1e0, 0.0)}, + {FN (pow_real), ARG(5.0e-01,-1.00000000000000005551e-01), 1.0e+00, RES(5e-1, -1.0000000000000000555e-1)}, + {FN (pow_real), ARG(5.0e-01,-1.00000000000000005551e-01), 5.0e-01, RES(7.1059902594898006379e-1, -7.0363169908974695409e-2)}, + {FN (pow_real), ARG(5.0e-01,-1.00000000000000005551e-01), 2.0e+00, RES(2.3999999999999999889e-1, -1.0000000000000000555e-1)}, diff --git a/gsl-2.5/complex/test b/gsl-2.5/complex/test new file mode 100755 index 00000000..05f8aa6c Binary files /dev/null and b/gsl-2.5/complex/test differ diff --git a/gsl-2.5/complex/test-suite.log b/gsl-2.5/complex/test-suite.log new file mode 100644 index 00000000..8ebb7b10 --- /dev/null +++ b/gsl-2.5/complex/test-suite.log @@ -0,0 +1,14 @@ +===================================== + gsl 2.5: complex/test-suite.log +===================================== + +# TOTAL: 1 +# PASS: 1 +# SKIP: 0 +# XFAIL: 0 +# FAIL: 0 +# XPASS: 0 +# ERROR: 0 + +.. contents:: :depth: 2 + diff --git a/gsl-2.5/complex/test.c b/gsl-2.5/complex/test.c new file mode 100644 index 00000000..17f9ecc8 --- /dev/null +++ b/gsl-2.5/complex/test.c @@ -0,0 +1,256 @@ +/* complex/test.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include +#include +#include + +struct f +{ + char *name; + double (*f) (gsl_complex z); + double x; + double y; + double fx; + double fy; +}; + +struct fz +{ + char *name; + gsl_complex (*f) (gsl_complex z); + double x; + double y; + double fx; + double fy; +}; + +struct fzz +{ + char *name; + gsl_complex (*f) (gsl_complex z1, gsl_complex z2); + double x1; + double y1; + double x2; + double y2; + double fx; + double fy; +}; + + +struct freal +{ + char *name; + gsl_complex (*f) (double x); + double x; + double fx; + double fy; +}; + +struct fzreal +{ + char *name; + gsl_complex (*f) (gsl_complex z, double a); + double x; + double y; + double a; + double fx; + double fy; +}; + +#define FN(x) "gsl_complex_" #x, gsl_complex_ ## x +#define ARG(x,y) x, y +#define RES(x,y) x, y + +struct f list[] = +{ +#include "results1.h" + {"", 0, 0, 0, 0, 0} +}; + + +struct fz listz[] = +{ +#include "results.h" + {"", 0, 0, 0, 0, 0} +}; + +struct fzz listzz[] = +{ + {FN (pow), ARG(0.0,0.0), ARG(0.0,0.0), RES(1.0, 0.0)}, +#include "results2.h" + {"", 0, 0, 0, 0, 0, 0, 0} +}; + +struct freal listreal[] = +{ +#include "results_real.h" + {"", 0, 0, 0, 0} +}; + + +struct fzreal listzreal[] = +{ +#include "results_zreal.h" + {"", 0, 0, 0, 0, 0, 0} +}; + + +#ifndef TEST_FACTOR +#ifdef RELEASED +#define TEST_FACTOR 100.0 +#else +#define TEST_FACTOR 1.0 +#endif +#endif + +int +main (void) +{ + size_t i = 0; + const double tol = TEST_FACTOR * 10 * GSL_DBL_EPSILON; + const double tolf = TEST_FACTOR * 10 * GSL_FLT_EPSILON; + + gsl_ieee_env_setup(); + + + for (i = 0 ; i < 10; i++) + { + double r = (i - 5.0) * 0.3 ; + double t = 2.0 * M_PI * i / 5 ; + double x = r * cos(t), y = r * sin(t) ; + gsl_complex z = gsl_complex_polar (r, t) ; + gsl_test_rel (GSL_REAL(z), x, tol, "gsl_complex_polar real part at (r=%g,t=%g)", r, t); + gsl_test_rel (GSL_IMAG(z), y, tol, "gsl_complex_polar imag part at (r=%g,t=%g)", r, t); + } + + i = 0; + + while (list[i].f) + { + struct f t = list[i]; + gsl_complex z = gsl_complex_rect (t.x, t.y); + double f = (t.f) (z); + gsl_test_rel (f, t.fx, tol, "%s at (%g,%g)", t.name, t.x, t.y); + i++; + } + + i = 0; + + while (listz[i].f) + { + struct fz t = listz[i]; + gsl_complex z = gsl_complex_rect (t.x, t.y); + gsl_complex fz = (t.f) (z); + double fx = GSL_REAL (fz), fy = GSL_IMAG (fz); + +#ifdef DEBUG + printf("x = "); gsl_ieee_fprintf_double (stdout, &t.x); printf("\n"); + printf("y = "); gsl_ieee_fprintf_double (stdout, &t.y); printf("\n"); + printf("fx = "); gsl_ieee_fprintf_double (stdout, &fx); printf("\n"); + printf("ex = "); gsl_ieee_fprintf_double (stdout, &t.fx); printf("\n"); + printf("fy = "); gsl_ieee_fprintf_double (stdout, &fy); printf("\n"); + printf("ey = "); gsl_ieee_fprintf_double (stdout, &t.fy); printf("\n"); +#endif + + gsl_test_rel (fx, t.fx, tol, "%s real part at (%g,%g)", t.name, t.x, t.y); + gsl_test_rel (fy, t.fy, tol, "%s imag part at (%g,%g)", t.name, t.x, t.y); + i++; + } + + i = 0; + + while (listzz[i].f) + { + struct fzz t = listzz[i]; + gsl_complex z1 = gsl_complex_rect (t.x1, t.y1); + gsl_complex z2 = gsl_complex_rect (t.x2, t.y2); + gsl_complex fz = (t.f) (z1, z2); + double fx = GSL_REAL (fz), fy = GSL_IMAG (fz); + +#ifdef DEBUG + printf("x1 = "); gsl_ieee_fprintf_double (stdout, &t.x1); printf("\n"); + printf("y1 = "); gsl_ieee_fprintf_double (stdout, &t.y1); printf("\n"); + printf("x2 = "); gsl_ieee_fprintf_double (stdout, &t.x2); printf("\n"); + printf("y2 = "); gsl_ieee_fprintf_double (stdout, &t.y2); printf("\n"); + printf("fx = "); gsl_ieee_fprintf_double (stdout, &fx); printf("\n"); + printf("ex = "); gsl_ieee_fprintf_double (stdout, &t.fx); printf("\n"); + printf("fy = "); gsl_ieee_fprintf_double (stdout, &fy); printf("\n"); + printf("ey = "); gsl_ieee_fprintf_double (stdout, &t.fy); printf("\n"); +#endif + + gsl_test_rel (fx, t.fx, tolf, "%s real part at (%g,%g;%g,%g)", t.name, t.x1, t.y1, t.x2, t.y2); + gsl_test_rel (fy, t.fy, tolf, "%s imag part at (%g,%g;%g,%g)", t.name, t.x1, t.y1, t.x2, t.y2); + i++; + } + + + i = 0; + + while (listreal[i].f) + { + struct freal t = listreal[i]; + gsl_complex fz = (t.f) (t.x); + double fx = GSL_REAL (fz), fy = GSL_IMAG (fz); + +#ifdef DEBUG + printf("x = "); gsl_ieee_fprintf_double (stdout, &t.x); printf("\n"); + printf("fx = "); gsl_ieee_fprintf_double (stdout, &fx); printf("\n"); + printf("ex = "); gsl_ieee_fprintf_double (stdout, &t.fx); printf("\n"); + printf("fy = "); gsl_ieee_fprintf_double (stdout, &fy); printf("\n"); + printf("ey = "); gsl_ieee_fprintf_double (stdout, &t.fy); printf("\n"); +#endif + + gsl_test_rel (fx, t.fx, tol, "%s real part at (%g,0)", t.name, t.x); + gsl_test_rel (fy, t.fy, tol, "%s imag part at (%g,0)", t.name, t.x); + i++; + } + + + i = 0; + + while (listzreal[i].f) + { + struct fzreal t = listzreal[i]; + gsl_complex z = gsl_complex_rect (t.x, t.y); + gsl_complex fz = (t.f) (z, t.a); + double fx = GSL_REAL (fz), fy = GSL_IMAG (fz); + +#ifdef DEBUG + printf("x = "); gsl_ieee_fprintf_double (stdout, &t.x); printf("\n"); + printf("y = "); gsl_ieee_fprintf_double (stdout, &t.y); printf("\n"); + printf("a = "); gsl_ieee_fprintf_double (stdout, &t.a); printf("\n"); + printf("fx = "); gsl_ieee_fprintf_double (stdout, &fx); printf("\n"); + printf("ex = "); gsl_ieee_fprintf_double (stdout, &t.fx); printf("\n"); + printf("fy = "); gsl_ieee_fprintf_double (stdout, &fy); printf("\n"); + printf("ey = "); gsl_ieee_fprintf_double (stdout, &t.fy); printf("\n"); +#endif + + gsl_test_rel (fx, t.fx, tol, "%s real part at (%g,0)", t.name, t.x); + gsl_test_rel (fy, t.fy, tol, "%s imag part at (%g,0)", t.name, t.x); + i++; + } + + exit (gsl_test_summary ()); +} diff --git a/gsl-2.5/complex/test.log b/gsl-2.5/complex/test.log new file mode 100644 index 00000000..2f5765ca --- /dev/null +++ b/gsl-2.5/complex/test.log @@ -0,0 +1 @@ +Completed [10133/10133] diff --git a/gsl-2.5/complex/test.trs b/gsl-2.5/complex/test.trs new file mode 100644 index 00000000..3f0f396c --- /dev/null +++ b/gsl-2.5/complex/test.trs @@ -0,0 +1,4 @@ +:test-result: PASS +:global-test-result: PASS +:recheck: no +:copy-in-global-log: no diff --git a/gsl-2.5/config.guess b/gsl-2.5/config.guess new file mode 100755 index 00000000..b79252d6 --- /dev/null +++ b/gsl-2.5/config.guess @@ -0,0 +1,1558 @@ +#! /bin/sh +# Attempt to guess a canonical system name. +# Copyright 1992-2013 Free Software Foundation, Inc. + +timestamp='2013-06-10' + +# This file is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, see . +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that +# program. This Exception is an additional permission under section 7 +# of the GNU General Public License, version 3 ("GPLv3"). +# +# Originally written by Per Bothner. +# +# You can get the latest version of this script from: +# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD +# +# Please send patches with a ChangeLog entry to config-patches@gnu.org. + + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] + +Output the configuration name of the system \`$me' is run on. + +Operation modes: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.guess ($timestamp) + +Originally written by Per Bothner. +Copyright 1992-2013 Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit ;; + --version | -v ) + echo "$version" ; exit ;; + --help | --h* | -h ) + echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" >&2 + exit 1 ;; + * ) + break ;; + esac +done + +if test $# != 0; then + echo "$me: too many arguments$help" >&2 + exit 1 +fi + +trap 'exit 1' 1 2 15 + +# CC_FOR_BUILD -- compiler used by this script. Note that the use of a +# compiler to aid in system detection is discouraged as it requires +# temporary files to be created and, as you can see below, it is a +# headache to deal with in a portable fashion. + +# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still +# use `HOST_CC' if defined, but it is deprecated. + +# Portable tmp directory creation inspired by the Autoconf team. + +set_cc_for_build=' +trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; +trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; +: ${TMPDIR=/tmp} ; + { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || + { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || + { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || + { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; +dummy=$tmp/dummy ; +tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; +case $CC_FOR_BUILD,$HOST_CC,$CC in + ,,) echo "int x;" > $dummy.c ; + for c in cc gcc c89 c99 ; do + if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then + CC_FOR_BUILD="$c"; break ; + fi ; + done ; + if test x"$CC_FOR_BUILD" = x ; then + CC_FOR_BUILD=no_compiler_found ; + fi + ;; + ,,*) CC_FOR_BUILD=$CC ;; + ,*,*) CC_FOR_BUILD=$HOST_CC ;; +esac ; set_cc_for_build= ;' + +# This is needed to find uname on a Pyramid OSx when run in the BSD universe. +# (ghazi@noc.rutgers.edu 1994-08-24) +if (test -f /.attbin/uname) >/dev/null 2>&1 ; then + PATH=$PATH:/.attbin ; export PATH +fi + +UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown +UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown +UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown +UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown + +case "${UNAME_SYSTEM}" in +Linux|GNU|GNU/*) + # If the system lacks a compiler, then just pick glibc. + # We could probably try harder. + LIBC=gnu + + eval $set_cc_for_build + cat <<-EOF > $dummy.c + #include + #if defined(__UCLIBC__) + LIBC=uclibc + #elif defined(__dietlibc__) + LIBC=dietlibc + #else + LIBC=gnu + #endif + EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'` + ;; +esac + +# Note: order is significant - the case branches are not exclusive. + +case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in + *:NetBSD:*:*) + # NetBSD (nbsd) targets should (where applicable) match one or + # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, + # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently + # switched to ELF, *-*-netbsd* would select the old + # object file format. This provides both forward + # compatibility and a consistent mechanism for selecting the + # object file format. + # + # Note: NetBSD doesn't particularly care about the vendor + # portion of the name. We always set it to "unknown". + sysctl="sysctl -n hw.machine_arch" + UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ + /usr/sbin/$sysctl 2>/dev/null || echo unknown)` + case "${UNAME_MACHINE_ARCH}" in + armeb) machine=armeb-unknown ;; + arm*) machine=arm-unknown ;; + sh3el) machine=shl-unknown ;; + sh3eb) machine=sh-unknown ;; + sh5el) machine=sh5le-unknown ;; + *) machine=${UNAME_MACHINE_ARCH}-unknown ;; + esac + # The Operating System including object format, if it has switched + # to ELF recently, or will in the future. + case "${UNAME_MACHINE_ARCH}" in + arm*|i386|m68k|ns32k|sh3*|sparc|vax) + eval $set_cc_for_build + if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ELF__ + then + # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). + # Return netbsd for either. FIX? + os=netbsd + else + os=netbsdelf + fi + ;; + *) + os=netbsd + ;; + esac + # The OS release + # Debian GNU/NetBSD machines have a different userland, and + # thus, need a distinct triplet. However, they do not need + # kernel version information, so it can be replaced with a + # suitable tag, in the style of linux-gnu. + case "${UNAME_VERSION}" in + Debian*) + release='-gnu' + ;; + *) + release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` + ;; + esac + # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: + # contains redundant information, the shorter form: + # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. + echo "${machine}-${os}${release}" + exit ;; + *:Bitrig:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` + echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE} + exit ;; + *:OpenBSD:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` + echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} + exit ;; + *:ekkoBSD:*:*) + echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} + exit ;; + *:SolidBSD:*:*) + echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} + exit ;; + macppc:MirBSD:*:*) + echo powerpc-unknown-mirbsd${UNAME_RELEASE} + exit ;; + *:MirBSD:*:*) + echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} + exit ;; + alpha:OSF1:*:*) + case $UNAME_RELEASE in + *4.0) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` + ;; + *5.*) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` + ;; + esac + # According to Compaq, /usr/sbin/psrinfo has been available on + # OSF/1 and Tru64 systems produced since 1995. I hope that + # covers most systems running today. This code pipes the CPU + # types through head -n 1, so we only detect the type of CPU 0. + ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` + case "$ALPHA_CPU_TYPE" in + "EV4 (21064)") + UNAME_MACHINE="alpha" ;; + "EV4.5 (21064)") + UNAME_MACHINE="alpha" ;; + "LCA4 (21066/21068)") + UNAME_MACHINE="alpha" ;; + "EV5 (21164)") + UNAME_MACHINE="alphaev5" ;; + "EV5.6 (21164A)") + UNAME_MACHINE="alphaev56" ;; + "EV5.6 (21164PC)") + UNAME_MACHINE="alphapca56" ;; + "EV5.7 (21164PC)") + UNAME_MACHINE="alphapca57" ;; + "EV6 (21264)") + UNAME_MACHINE="alphaev6" ;; + "EV6.7 (21264A)") + UNAME_MACHINE="alphaev67" ;; + "EV6.8CB (21264C)") + UNAME_MACHINE="alphaev68" ;; + "EV6.8AL (21264B)") + UNAME_MACHINE="alphaev68" ;; + "EV6.8CX (21264D)") + UNAME_MACHINE="alphaev68" ;; + "EV6.9A (21264/EV69A)") + UNAME_MACHINE="alphaev69" ;; + "EV7 (21364)") + UNAME_MACHINE="alphaev7" ;; + "EV7.9 (21364A)") + UNAME_MACHINE="alphaev79" ;; + esac + # A Pn.n version is a patched version. + # A Vn.n version is a released version. + # A Tn.n version is a released field test version. + # A Xn.n version is an unreleased experimental baselevel. + # 1.2 uses "1.2" for uname -r. + echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + # Reset EXIT trap before exiting to avoid spurious non-zero exit code. + exitcode=$? + trap '' 0 + exit $exitcode ;; + Alpha\ *:Windows_NT*:*) + # How do we know it's Interix rather than the generic POSIX subsystem? + # Should we change UNAME_MACHINE based on the output of uname instead + # of the specific Alpha model? + echo alpha-pc-interix + exit ;; + 21064:Windows_NT:50:3) + echo alpha-dec-winnt3.5 + exit ;; + Amiga*:UNIX_System_V:4.0:*) + echo m68k-unknown-sysv4 + exit ;; + *:[Aa]miga[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-amigaos + exit ;; + *:[Mm]orph[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-morphos + exit ;; + *:OS/390:*:*) + echo i370-ibm-openedition + exit ;; + *:z/VM:*:*) + echo s390-ibm-zvmoe + exit ;; + *:OS400:*:*) + echo powerpc-ibm-os400 + exit ;; + arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) + echo arm-acorn-riscix${UNAME_RELEASE} + exit ;; + arm*:riscos:*:*|arm*:RISCOS:*:*) + echo arm-unknown-riscos + exit ;; + SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) + echo hppa1.1-hitachi-hiuxmpp + exit ;; + Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) + # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. + if test "`(/bin/universe) 2>/dev/null`" = att ; then + echo pyramid-pyramid-sysv3 + else + echo pyramid-pyramid-bsd + fi + exit ;; + NILE*:*:*:dcosx) + echo pyramid-pyramid-svr4 + exit ;; + DRS?6000:unix:4.0:6*) + echo sparc-icl-nx6 + exit ;; + DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) + case `/usr/bin/uname -p` in + sparc) echo sparc-icl-nx7; exit ;; + esac ;; + s390x:SunOS:*:*) + echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4H:SunOS:5.*:*) + echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) + echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) + echo i386-pc-auroraux${UNAME_RELEASE} + exit ;; + i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) + eval $set_cc_for_build + SUN_ARCH="i386" + # If there is a compiler, see if it is configured for 64-bit objects. + # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. + # This test works for both compilers. + if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then + if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + SUN_ARCH="x86_64" + fi + fi + echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4*:SunOS:6*:*) + # According to config.sub, this is the proper way to canonicalize + # SunOS6. Hard to guess exactly what SunOS6 will be like, but + # it's likely to be more like Solaris than SunOS4. + echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4*:SunOS:*:*) + case "`/usr/bin/arch -k`" in + Series*|S4*) + UNAME_RELEASE=`uname -v` + ;; + esac + # Japanese Language versions have a version number like `4.1.3-JL'. + echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` + exit ;; + sun3*:SunOS:*:*) + echo m68k-sun-sunos${UNAME_RELEASE} + exit ;; + sun*:*:4.2BSD:*) + UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` + test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 + case "`/bin/arch`" in + sun3) + echo m68k-sun-sunos${UNAME_RELEASE} + ;; + sun4) + echo sparc-sun-sunos${UNAME_RELEASE} + ;; + esac + exit ;; + aushp:SunOS:*:*) + echo sparc-auspex-sunos${UNAME_RELEASE} + exit ;; + # The situation for MiNT is a little confusing. The machine name + # can be virtually everything (everything which is not + # "atarist" or "atariste" at least should have a processor + # > m68000). The system name ranges from "MiNT" over "FreeMiNT" + # to the lowercase version "mint" (or "freemint"). Finally + # the system name "TOS" denotes a system which is actually not + # MiNT. But MiNT is downward compatible to TOS, so this should + # be no problem. + atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit ;; + atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit ;; + *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit ;; + milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) + echo m68k-milan-mint${UNAME_RELEASE} + exit ;; + hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) + echo m68k-hades-mint${UNAME_RELEASE} + exit ;; + *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) + echo m68k-unknown-mint${UNAME_RELEASE} + exit ;; + m68k:machten:*:*) + echo m68k-apple-machten${UNAME_RELEASE} + exit ;; + powerpc:machten:*:*) + echo powerpc-apple-machten${UNAME_RELEASE} + exit ;; + RISC*:Mach:*:*) + echo mips-dec-mach_bsd4.3 + exit ;; + RISC*:ULTRIX:*:*) + echo mips-dec-ultrix${UNAME_RELEASE} + exit ;; + VAX*:ULTRIX*:*:*) + echo vax-dec-ultrix${UNAME_RELEASE} + exit ;; + 2020:CLIX:*:* | 2430:CLIX:*:*) + echo clipper-intergraph-clix${UNAME_RELEASE} + exit ;; + mips:*:*:UMIPS | mips:*:*:RISCos) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c +#ifdef __cplusplus +#include /* for printf() prototype */ + int main (int argc, char *argv[]) { +#else + int main (argc, argv) int argc; char *argv[]; { +#endif + #if defined (host_mips) && defined (MIPSEB) + #if defined (SYSTYPE_SYSV) + printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_SVR4) + printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) + printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); + #endif + #endif + exit (-1); + } +EOF + $CC_FOR_BUILD -o $dummy $dummy.c && + dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && + SYSTEM_NAME=`$dummy $dummyarg` && + { echo "$SYSTEM_NAME"; exit; } + echo mips-mips-riscos${UNAME_RELEASE} + exit ;; + Motorola:PowerMAX_OS:*:*) + echo powerpc-motorola-powermax + exit ;; + Motorola:*:4.3:PL8-*) + echo powerpc-harris-powermax + exit ;; + Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) + echo powerpc-harris-powermax + exit ;; + Night_Hawk:Power_UNIX:*:*) + echo powerpc-harris-powerunix + exit ;; + m88k:CX/UX:7*:*) + echo m88k-harris-cxux7 + exit ;; + m88k:*:4*:R4*) + echo m88k-motorola-sysv4 + exit ;; + m88k:*:3*:R3*) + echo m88k-motorola-sysv3 + exit ;; + AViiON:dgux:*:*) + # DG/UX returns AViiON for all architectures + UNAME_PROCESSOR=`/usr/bin/uname -p` + if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] + then + if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ + [ ${TARGET_BINARY_INTERFACE}x = x ] + then + echo m88k-dg-dgux${UNAME_RELEASE} + else + echo m88k-dg-dguxbcs${UNAME_RELEASE} + fi + else + echo i586-dg-dgux${UNAME_RELEASE} + fi + exit ;; + M88*:DolphinOS:*:*) # DolphinOS (SVR3) + echo m88k-dolphin-sysv3 + exit ;; + M88*:*:R3*:*) + # Delta 88k system running SVR3 + echo m88k-motorola-sysv3 + exit ;; + XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) + echo m88k-tektronix-sysv3 + exit ;; + Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) + echo m68k-tektronix-bsd + exit ;; + *:IRIX*:*:*) + echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` + exit ;; + ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. + echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id + exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' + i*86:AIX:*:*) + echo i386-ibm-aix + exit ;; + ia64:AIX:*:*) + if [ -x /usr/bin/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} + exit ;; + *:AIX:2:3) + if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + + main() + { + if (!__power_pc()) + exit(1); + puts("powerpc-ibm-aix3.2.5"); + exit(0); + } +EOF + if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` + then + echo "$SYSTEM_NAME" + else + echo rs6000-ibm-aix3.2.5 + fi + elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then + echo rs6000-ibm-aix3.2.4 + else + echo rs6000-ibm-aix3.2 + fi + exit ;; + *:AIX:*:[4567]) + IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` + if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then + IBM_ARCH=rs6000 + else + IBM_ARCH=powerpc + fi + if [ -x /usr/bin/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${IBM_ARCH}-ibm-aix${IBM_REV} + exit ;; + *:AIX:*:*) + echo rs6000-ibm-aix + exit ;; + ibmrt:4.4BSD:*|romp-ibm:BSD:*) + echo romp-ibm-bsd4.4 + exit ;; + ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and + echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to + exit ;; # report: romp-ibm BSD 4.3 + *:BOSX:*:*) + echo rs6000-bull-bosx + exit ;; + DPX/2?00:B.O.S.:*:*) + echo m68k-bull-sysv3 + exit ;; + 9000/[34]??:4.3bsd:1.*:*) + echo m68k-hp-bsd + exit ;; + hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) + echo m68k-hp-bsd4.4 + exit ;; + 9000/[34678]??:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + case "${UNAME_MACHINE}" in + 9000/31? ) HP_ARCH=m68000 ;; + 9000/[34]?? ) HP_ARCH=m68k ;; + 9000/[678][0-9][0-9]) + if [ -x /usr/bin/getconf ]; then + sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` + sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` + case "${sc_cpu_version}" in + 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 + 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 + 532) # CPU_PA_RISC2_0 + case "${sc_kernel_bits}" in + 32) HP_ARCH="hppa2.0n" ;; + 64) HP_ARCH="hppa2.0w" ;; + '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 + esac ;; + esac + fi + if [ "${HP_ARCH}" = "" ]; then + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + + #define _HPUX_SOURCE + #include + #include + + int main () + { + #if defined(_SC_KERNEL_BITS) + long bits = sysconf(_SC_KERNEL_BITS); + #endif + long cpu = sysconf (_SC_CPU_VERSION); + + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1"); break; + case CPU_PA_RISC2_0: + #if defined(_SC_KERNEL_BITS) + switch (bits) + { + case 64: puts ("hppa2.0w"); break; + case 32: puts ("hppa2.0n"); break; + default: puts ("hppa2.0"); break; + } break; + #else /* !defined(_SC_KERNEL_BITS) */ + puts ("hppa2.0"); break; + #endif + default: puts ("hppa1.0"); break; + } + exit (0); + } +EOF + (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` + test -z "$HP_ARCH" && HP_ARCH=hppa + fi ;; + esac + if [ ${HP_ARCH} = "hppa2.0w" ] + then + eval $set_cc_for_build + + # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating + # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler + # generating 64-bit code. GNU and HP use different nomenclature: + # + # $ CC_FOR_BUILD=cc ./config.guess + # => hppa2.0w-hp-hpux11.23 + # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess + # => hppa64-hp-hpux11.23 + + if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | + grep -q __LP64__ + then + HP_ARCH="hppa2.0w" + else + HP_ARCH="hppa64" + fi + fi + echo ${HP_ARCH}-hp-hpux${HPUX_REV} + exit ;; + ia64:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + echo ia64-hp-hpux${HPUX_REV} + exit ;; + 3050*:HI-UX:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + int + main () + { + long cpu = sysconf (_SC_CPU_VERSION); + /* The order matters, because CPU_IS_HP_MC68K erroneously returns + true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct + results, however. */ + if (CPU_IS_PA_RISC (cpu)) + { + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; + case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; + default: puts ("hppa-hitachi-hiuxwe2"); break; + } + } + else if (CPU_IS_HP_MC68K (cpu)) + puts ("m68k-hitachi-hiuxwe2"); + else puts ("unknown-hitachi-hiuxwe2"); + exit (0); + } +EOF + $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && + { echo "$SYSTEM_NAME"; exit; } + echo unknown-hitachi-hiuxwe2 + exit ;; + 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) + echo hppa1.1-hp-bsd + exit ;; + 9000/8??:4.3bsd:*:*) + echo hppa1.0-hp-bsd + exit ;; + *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) + echo hppa1.0-hp-mpeix + exit ;; + hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) + echo hppa1.1-hp-osf + exit ;; + hp8??:OSF1:*:*) + echo hppa1.0-hp-osf + exit ;; + i*86:OSF1:*:*) + if [ -x /usr/sbin/sysversion ] ; then + echo ${UNAME_MACHINE}-unknown-osf1mk + else + echo ${UNAME_MACHINE}-unknown-osf1 + fi + exit ;; + parisc*:Lites*:*:*) + echo hppa1.1-hp-lites + exit ;; + C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) + echo c1-convex-bsd + exit ;; + C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit ;; + C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) + echo c34-convex-bsd + exit ;; + C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) + echo c38-convex-bsd + exit ;; + C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) + echo c4-convex-bsd + exit ;; + CRAY*Y-MP:*:*:*) + echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*[A-Z]90:*:*:*) + echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ + | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ + -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ + -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*TS:*:*:*) + echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*T3E:*:*:*) + echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*SV1:*:*:*) + echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + *:UNICOS/mp:*:*) + echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) + FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` + echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit ;; + 5000:UNIX_System_V:4.*:*) + FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` + echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit ;; + i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) + echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} + exit ;; + sparc*:BSD/OS:*:*) + echo sparc-unknown-bsdi${UNAME_RELEASE} + exit ;; + *:BSD/OS:*:*) + echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} + exit ;; + *:FreeBSD:*:*) + UNAME_PROCESSOR=`/usr/bin/uname -p` + case ${UNAME_PROCESSOR} in + amd64) + echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + *) + echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + esac + exit ;; + i*:CYGWIN*:*) + echo ${UNAME_MACHINE}-pc-cygwin + exit ;; + *:MINGW64*:*) + echo ${UNAME_MACHINE}-pc-mingw64 + exit ;; + *:MINGW*:*) + echo ${UNAME_MACHINE}-pc-mingw32 + exit ;; + i*:MSYS*:*) + echo ${UNAME_MACHINE}-pc-msys + exit ;; + i*:windows32*:*) + # uname -m includes "-pc" on this system. + echo ${UNAME_MACHINE}-mingw32 + exit ;; + i*:PW*:*) + echo ${UNAME_MACHINE}-pc-pw32 + exit ;; + *:Interix*:*) + case ${UNAME_MACHINE} in + x86) + echo i586-pc-interix${UNAME_RELEASE} + exit ;; + authenticamd | genuineintel | EM64T) + echo x86_64-unknown-interix${UNAME_RELEASE} + exit ;; + IA64) + echo ia64-unknown-interix${UNAME_RELEASE} + exit ;; + esac ;; + [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) + echo i${UNAME_MACHINE}-pc-mks + exit ;; + 8664:Windows_NT:*) + echo x86_64-pc-mks + exit ;; + i*:Windows_NT*:* | Pentium*:Windows_NT*:*) + # How do we know it's Interix rather than the generic POSIX subsystem? + # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we + # UNAME_MACHINE based on the output of uname instead of i386? + echo i586-pc-interix + exit ;; + i*:UWIN*:*) + echo ${UNAME_MACHINE}-pc-uwin + exit ;; + amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) + echo x86_64-unknown-cygwin + exit ;; + p*:CYGWIN*:*) + echo powerpcle-unknown-cygwin + exit ;; + prep*:SunOS:5.*:*) + echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + *:GNU:*:*) + # the GNU system + echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` + exit ;; + *:GNU/*:*:*) + # other systems with GNU libc and userland + echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC} + exit ;; + i*86:Minix:*:*) + echo ${UNAME_MACHINE}-pc-minix + exit ;; + aarch64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + aarch64_be:Linux:*:*) + UNAME_MACHINE=aarch64_be + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + alpha:Linux:*:*) + case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in + EV5) UNAME_MACHINE=alphaev5 ;; + EV56) UNAME_MACHINE=alphaev56 ;; + PCA56) UNAME_MACHINE=alphapca56 ;; + PCA57) UNAME_MACHINE=alphapca56 ;; + EV6) UNAME_MACHINE=alphaev6 ;; + EV67) UNAME_MACHINE=alphaev67 ;; + EV68*) UNAME_MACHINE=alphaev68 ;; + esac + objdump --private-headers /bin/sh | grep -q ld.so.1 + if test "$?" = 0 ; then LIBC="gnulibc1" ; fi + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + arc:Linux:*:* | arceb:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + arm*:Linux:*:*) + eval $set_cc_for_build + if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ARM_EABI__ + then + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + else + if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ARM_PCS_VFP + then + echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi + else + echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf + fi + fi + exit ;; + avr32*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + cris:Linux:*:*) + echo ${UNAME_MACHINE}-axis-linux-${LIBC} + exit ;; + crisv32:Linux:*:*) + echo ${UNAME_MACHINE}-axis-linux-${LIBC} + exit ;; + frv:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + hexagon:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + i*86:Linux:*:*) + echo ${UNAME_MACHINE}-pc-linux-${LIBC} + exit ;; + ia64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + m32r*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + m68*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + mips:Linux:*:* | mips64:Linux:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #undef CPU + #undef ${UNAME_MACHINE} + #undef ${UNAME_MACHINE}el + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) + CPU=${UNAME_MACHINE}el + #else + #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) + CPU=${UNAME_MACHINE} + #else + CPU= + #endif + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` + test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; } + ;; + or1k:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + or32:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + padre:Linux:*:*) + echo sparc-unknown-linux-${LIBC} + exit ;; + parisc64:Linux:*:* | hppa64:Linux:*:*) + echo hppa64-unknown-linux-${LIBC} + exit ;; + parisc:Linux:*:* | hppa:Linux:*:*) + # Look for CPU level + case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in + PA7*) echo hppa1.1-unknown-linux-${LIBC} ;; + PA8*) echo hppa2.0-unknown-linux-${LIBC} ;; + *) echo hppa-unknown-linux-${LIBC} ;; + esac + exit ;; + ppc64:Linux:*:*) + echo powerpc64-unknown-linux-${LIBC} + exit ;; + ppc:Linux:*:*) + echo powerpc-unknown-linux-${LIBC} + exit ;; + ppc64le:Linux:*:*) + echo powerpc64le-unknown-linux-${LIBC} + exit ;; + ppcle:Linux:*:*) + echo powerpcle-unknown-linux-${LIBC} + exit ;; + s390:Linux:*:* | s390x:Linux:*:*) + echo ${UNAME_MACHINE}-ibm-linux-${LIBC} + exit ;; + sh64*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + sh*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + sparc:Linux:*:* | sparc64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + tile*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + vax:Linux:*:*) + echo ${UNAME_MACHINE}-dec-linux-${LIBC} + exit ;; + x86_64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + xtensa*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + i*86:DYNIX/ptx:4*:*) + # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. + # earlier versions are messed up and put the nodename in both + # sysname and nodename. + echo i386-sequent-sysv4 + exit ;; + i*86:UNIX_SV:4.2MP:2.*) + # Unixware is an offshoot of SVR4, but it has its own version + # number series starting with 2... + # I am not positive that other SVR4 systems won't match this, + # I just have to hope. -- rms. + # Use sysv4.2uw... so that sysv4* matches it. + echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} + exit ;; + i*86:OS/2:*:*) + # If we were able to find `uname', then EMX Unix compatibility + # is probably installed. + echo ${UNAME_MACHINE}-pc-os2-emx + exit ;; + i*86:XTS-300:*:STOP) + echo ${UNAME_MACHINE}-unknown-stop + exit ;; + i*86:atheos:*:*) + echo ${UNAME_MACHINE}-unknown-atheos + exit ;; + i*86:syllable:*:*) + echo ${UNAME_MACHINE}-pc-syllable + exit ;; + i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) + echo i386-unknown-lynxos${UNAME_RELEASE} + exit ;; + i*86:*DOS:*:*) + echo ${UNAME_MACHINE}-pc-msdosdjgpp + exit ;; + i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) + UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` + if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then + echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} + else + echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} + fi + exit ;; + i*86:*:5:[678]*) + # UnixWare 7.x, OpenUNIX and OpenServer 6. + case `/bin/uname -X | grep "^Machine"` in + *486*) UNAME_MACHINE=i486 ;; + *Pentium) UNAME_MACHINE=i586 ;; + *Pent*|*Celeron) UNAME_MACHINE=i686 ;; + esac + echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} + exit ;; + i*86:*:3.2:*) + if test -f /usr/options/cb.name; then + UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then + UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` + (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 + (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ + && UNAME_MACHINE=i586 + (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ + && UNAME_MACHINE=i686 + (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ + && UNAME_MACHINE=i686 + echo ${UNAME_MACHINE}-pc-sco$UNAME_REL + else + echo ${UNAME_MACHINE}-pc-sysv32 + fi + exit ;; + pc:*:*:*) + # Left here for compatibility: + # uname -m prints for DJGPP always 'pc', but it prints nothing about + # the processor, so we play safe by assuming i586. + # Note: whatever this is, it MUST be the same as what config.sub + # prints for the "djgpp" host, or else GDB configury will decide that + # this is a cross-build. + echo i586-pc-msdosdjgpp + exit ;; + Intel:Mach:3*:*) + echo i386-pc-mach3 + exit ;; + paragon:*:*:*) + echo i860-intel-osf1 + exit ;; + i860:*:4.*:*) # i860-SVR4 + if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then + echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 + else # Add other i860-SVR4 vendors below as they are discovered. + echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 + fi + exit ;; + mini*:CTIX:SYS*5:*) + # "miniframe" + echo m68010-convergent-sysv + exit ;; + mc68k:UNIX:SYSTEM5:3.51m) + echo m68k-convergent-sysv + exit ;; + M680?0:D-NIX:5.3:*) + echo m68k-diab-dnix + exit ;; + M68*:*:R3V[5678]*:*) + test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; + 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) + OS_REL='' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4.3${OS_REL}; exit; } + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; + 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4; exit; } ;; + NCR*:*:4.2:* | MPRAS*:*:4.2:*) + OS_REL='.3' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4.3${OS_REL}; exit; } + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && { echo i586-ncr-sysv4.3${OS_REL}; exit; } + /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ + && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; + m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) + echo m68k-unknown-lynxos${UNAME_RELEASE} + exit ;; + mc68030:UNIX_System_V:4.*:*) + echo m68k-atari-sysv4 + exit ;; + TSUNAMI:LynxOS:2.*:*) + echo sparc-unknown-lynxos${UNAME_RELEASE} + exit ;; + rs6000:LynxOS:2.*:*) + echo rs6000-unknown-lynxos${UNAME_RELEASE} + exit ;; + PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) + echo powerpc-unknown-lynxos${UNAME_RELEASE} + exit ;; + SM[BE]S:UNIX_SV:*:*) + echo mips-dde-sysv${UNAME_RELEASE} + exit ;; + RM*:ReliantUNIX-*:*:*) + echo mips-sni-sysv4 + exit ;; + RM*:SINIX-*:*:*) + echo mips-sni-sysv4 + exit ;; + *:SINIX-*:*:*) + if uname -p 2>/dev/null >/dev/null ; then + UNAME_MACHINE=`(uname -p) 2>/dev/null` + echo ${UNAME_MACHINE}-sni-sysv4 + else + echo ns32k-sni-sysv + fi + exit ;; + PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort + # says + echo i586-unisys-sysv4 + exit ;; + *:UNIX_System_V:4*:FTX*) + # From Gerald Hewes . + # How about differentiating between stratus architectures? -djm + echo hppa1.1-stratus-sysv4 + exit ;; + *:*:*:FTX*) + # From seanf@swdc.stratus.com. + echo i860-stratus-sysv4 + exit ;; + i*86:VOS:*:*) + # From Paul.Green@stratus.com. + echo ${UNAME_MACHINE}-stratus-vos + exit ;; + *:VOS:*:*) + # From Paul.Green@stratus.com. + echo hppa1.1-stratus-vos + exit ;; + mc68*:A/UX:*:*) + echo m68k-apple-aux${UNAME_RELEASE} + exit ;; + news*:NEWS-OS:6*:*) + echo mips-sony-newsos6 + exit ;; + R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) + if [ -d /usr/nec ]; then + echo mips-nec-sysv${UNAME_RELEASE} + else + echo mips-unknown-sysv${UNAME_RELEASE} + fi + exit ;; + BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. + echo powerpc-be-beos + exit ;; + BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. + echo powerpc-apple-beos + exit ;; + BePC:BeOS:*:*) # BeOS running on Intel PC compatible. + echo i586-pc-beos + exit ;; + BePC:Haiku:*:*) # Haiku running on Intel PC compatible. + echo i586-pc-haiku + exit ;; + x86_64:Haiku:*:*) + echo x86_64-unknown-haiku + exit ;; + SX-4:SUPER-UX:*:*) + echo sx4-nec-superux${UNAME_RELEASE} + exit ;; + SX-5:SUPER-UX:*:*) + echo sx5-nec-superux${UNAME_RELEASE} + exit ;; + SX-6:SUPER-UX:*:*) + echo sx6-nec-superux${UNAME_RELEASE} + exit ;; + SX-7:SUPER-UX:*:*) + echo sx7-nec-superux${UNAME_RELEASE} + exit ;; + SX-8:SUPER-UX:*:*) + echo sx8-nec-superux${UNAME_RELEASE} + exit ;; + SX-8R:SUPER-UX:*:*) + echo sx8r-nec-superux${UNAME_RELEASE} + exit ;; + Power*:Rhapsody:*:*) + echo powerpc-apple-rhapsody${UNAME_RELEASE} + exit ;; + *:Rhapsody:*:*) + echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} + exit ;; + *:Darwin:*:*) + UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown + eval $set_cc_for_build + if test "$UNAME_PROCESSOR" = unknown ; then + UNAME_PROCESSOR=powerpc + fi + if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then + if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + case $UNAME_PROCESSOR in + i386) UNAME_PROCESSOR=x86_64 ;; + powerpc) UNAME_PROCESSOR=powerpc64 ;; + esac + fi + fi + echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} + exit ;; + *:procnto*:*:* | *:QNX:[0123456789]*:*) + UNAME_PROCESSOR=`uname -p` + if test "$UNAME_PROCESSOR" = "x86"; then + UNAME_PROCESSOR=i386 + UNAME_MACHINE=pc + fi + echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} + exit ;; + *:QNX:*:4*) + echo i386-pc-qnx + exit ;; + NEO-?:NONSTOP_KERNEL:*:*) + echo neo-tandem-nsk${UNAME_RELEASE} + exit ;; + NSE-*:NONSTOP_KERNEL:*:*) + echo nse-tandem-nsk${UNAME_RELEASE} + exit ;; + NSR-?:NONSTOP_KERNEL:*:*) + echo nsr-tandem-nsk${UNAME_RELEASE} + exit ;; + *:NonStop-UX:*:*) + echo mips-compaq-nonstopux + exit ;; + BS2000:POSIX*:*:*) + echo bs2000-siemens-sysv + exit ;; + DS/*:UNIX_System_V:*:*) + echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} + exit ;; + *:Plan9:*:*) + # "uname -m" is not consistent, so use $cputype instead. 386 + # is converted to i386 for consistency with other x86 + # operating systems. + if test "$cputype" = "386"; then + UNAME_MACHINE=i386 + else + UNAME_MACHINE="$cputype" + fi + echo ${UNAME_MACHINE}-unknown-plan9 + exit ;; + *:TOPS-10:*:*) + echo pdp10-unknown-tops10 + exit ;; + *:TENEX:*:*) + echo pdp10-unknown-tenex + exit ;; + KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) + echo pdp10-dec-tops20 + exit ;; + XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) + echo pdp10-xkl-tops20 + exit ;; + *:TOPS-20:*:*) + echo pdp10-unknown-tops20 + exit ;; + *:ITS:*:*) + echo pdp10-unknown-its + exit ;; + SEI:*:*:SEIUX) + echo mips-sei-seiux${UNAME_RELEASE} + exit ;; + *:DragonFly:*:*) + echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` + exit ;; + *:*VMS:*:*) + UNAME_MACHINE=`(uname -p) 2>/dev/null` + case "${UNAME_MACHINE}" in + A*) echo alpha-dec-vms ; exit ;; + I*) echo ia64-dec-vms ; exit ;; + V*) echo vax-dec-vms ; exit ;; + esac ;; + *:XENIX:*:SysV) + echo i386-pc-xenix + exit ;; + i*86:skyos:*:*) + echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' + exit ;; + i*86:rdos:*:*) + echo ${UNAME_MACHINE}-pc-rdos + exit ;; + i*86:AROS:*:*) + echo ${UNAME_MACHINE}-pc-aros + exit ;; + x86_64:VMkernel:*:*) + echo ${UNAME_MACHINE}-unknown-esx + exit ;; +esac + +eval $set_cc_for_build +cat >$dummy.c < +# include +#endif +main () +{ +#if defined (sony) +#if defined (MIPSEB) + /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, + I don't know.... */ + printf ("mips-sony-bsd\n"); exit (0); +#else +#include + printf ("m68k-sony-newsos%s\n", +#ifdef NEWSOS4 + "4" +#else + "" +#endif + ); exit (0); +#endif +#endif + +#if defined (__arm) && defined (__acorn) && defined (__unix) + printf ("arm-acorn-riscix\n"); exit (0); +#endif + +#if defined (hp300) && !defined (hpux) + printf ("m68k-hp-bsd\n"); exit (0); +#endif + +#if defined (NeXT) +#if !defined (__ARCHITECTURE__) +#define __ARCHITECTURE__ "m68k" +#endif + int version; + version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; + if (version < 4) + printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); + else + printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); + exit (0); +#endif + +#if defined (MULTIMAX) || defined (n16) +#if defined (UMAXV) + printf ("ns32k-encore-sysv\n"); exit (0); +#else +#if defined (CMU) + printf ("ns32k-encore-mach\n"); exit (0); +#else + printf ("ns32k-encore-bsd\n"); exit (0); +#endif +#endif +#endif + +#if defined (__386BSD__) + printf ("i386-pc-bsd\n"); exit (0); +#endif + +#if defined (sequent) +#if defined (i386) + printf ("i386-sequent-dynix\n"); exit (0); +#endif +#if defined (ns32000) + printf ("ns32k-sequent-dynix\n"); exit (0); +#endif +#endif + +#if defined (_SEQUENT_) + struct utsname un; + + uname(&un); + + if (strncmp(un.version, "V2", 2) == 0) { + printf ("i386-sequent-ptx2\n"); exit (0); + } + if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ + printf ("i386-sequent-ptx1\n"); exit (0); + } + printf ("i386-sequent-ptx\n"); exit (0); + +#endif + +#if defined (vax) +# if !defined (ultrix) +# include +# if defined (BSD) +# if BSD == 43 + printf ("vax-dec-bsd4.3\n"); exit (0); +# else +# if BSD == 199006 + printf ("vax-dec-bsd4.3reno\n"); exit (0); +# else + printf ("vax-dec-bsd\n"); exit (0); +# endif +# endif +# else + printf ("vax-dec-bsd\n"); exit (0); +# endif +# else + printf ("vax-dec-ultrix\n"); exit (0); +# endif +#endif + +#if defined (alliant) && defined (i860) + printf ("i860-alliant-bsd\n"); exit (0); +#endif + + exit (1); +} +EOF + +$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` && + { echo "$SYSTEM_NAME"; exit; } + +# Apollos put the system type in the environment. + +test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; } + +# Convex versions that predate uname can use getsysinfo(1) + +if [ -x /usr/convex/getsysinfo ] +then + case `getsysinfo -f cpu_type` in + c1*) + echo c1-convex-bsd + exit ;; + c2*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit ;; + c34*) + echo c34-convex-bsd + exit ;; + c38*) + echo c38-convex-bsd + exit ;; + c4*) + echo c4-convex-bsd + exit ;; + esac +fi + +cat >&2 < in order to provide the needed +information to handle your system. + +config.guess timestamp = $timestamp + +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null` + +hostinfo = `(hostinfo) 2>/dev/null` +/bin/universe = `(/bin/universe) 2>/dev/null` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` +/bin/arch = `(/bin/arch) 2>/dev/null` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` + +UNAME_MACHINE = ${UNAME_MACHINE} +UNAME_RELEASE = ${UNAME_RELEASE} +UNAME_SYSTEM = ${UNAME_SYSTEM} +UNAME_VERSION = ${UNAME_VERSION} +EOF + +exit 1 + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/gsl-2.5/config.h b/gsl-2.5/config.h new file mode 100644 index 00000000..0d528b26 --- /dev/null +++ b/gsl-2.5/config.h @@ -0,0 +1,309 @@ +/* config.h. Generated from config.h.in by configure. */ +/* config.h.in. Generated from configure.ac by autoheader. */ + +/* Disable deprecated functions and enums while building */ +#define GSL_DISABLE_DEPRECATED 1 + +/* Define if you have inline with C99 behavior */ +/* #undef HAVE_C99_INLINE */ + +/* Define to 1 if you have the declaration of `acosh', and to 0 if you don't. + */ +#define HAVE_DECL_ACOSH 1 + +/* Define to 1 if you have the declaration of `asinh', and to 0 if you don't. + */ +#define HAVE_DECL_ASINH 1 + +/* Define to 1 if you have the declaration of `atanh', and to 0 if you don't. + */ +#define HAVE_DECL_ATANH 1 + +/* Define to 1 if you have the declaration of `expm1', and to 0 if you don't. + */ +#define HAVE_DECL_EXPM1 1 + +/* Define to 1 if you have the declaration of `feenableexcept', and to 0 if + you don't. */ +#define HAVE_DECL_FEENABLEEXCEPT 1 + +/* Define to 1 if you have the declaration of `fesettrapenable', and to 0 if + you don't. */ +#define HAVE_DECL_FESETTRAPENABLE 0 + +/* Define to 1 if you have the declaration of `finite', and to 0 if you don't. + */ +#define HAVE_DECL_FINITE 1 + +/* Define to 1 if you have the declaration of `fprnd_t', and to 0 if you + don't. */ +#define HAVE_DECL_FPRND_T 0 + +/* Define to 1 if you have the declaration of `frexp', and to 0 if you don't. + */ +#define HAVE_DECL_FREXP 1 + +/* Define to 1 if you have the declaration of `hypot', and to 0 if you don't. + */ +#define HAVE_DECL_HYPOT 1 + +/* Define to 1 if you have the declaration of `isfinite', and to 0 if you + don't. */ +#define HAVE_DECL_ISFINITE 1 + +/* Define to 1 if you have the declaration of `isinf', and to 0 if you don't. + */ +#define HAVE_DECL_ISINF 1 + +/* Define to 1 if you have the declaration of `isnan', and to 0 if you don't. + */ +#define HAVE_DECL_ISNAN 1 + +/* Define to 1 if you have the declaration of `ldexp', and to 0 if you don't. + */ +#define HAVE_DECL_LDEXP 1 + +/* Define to 1 if you have the declaration of `log1p', and to 0 if you don't. + */ +#define HAVE_DECL_LOG1P 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_DLFCN_H 1 + +/* Define to 1 if you don't have `vprintf' but do have `_doprnt.' */ +/* #undef HAVE_DOPRNT */ + +/* Defined if you have ansi EXIT_SUCCESS and EXIT_FAILURE in stdlib.h */ +#define HAVE_EXIT_SUCCESS_AND_FAILURE 1 + +/* Defined on architectures with excess floating-point precision */ +#define HAVE_EXTENDED_PRECISION_REGISTERS 1 + +/* Define if x86 processor has sse extensions. */ +#define HAVE_FPU_X86_SSE 1 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_IEEEFP_H */ + +/* Define this if IEEE comparisons work correctly (e.g. NaN != NaN) */ +#define HAVE_IEEE_COMPARISONS 1 + +/* Define this if IEEE denormalized numbers are available */ +#define HAVE_IEEE_DENORMALS 1 + +/* Define if you have inline */ +#define HAVE_INLINE 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_INTTYPES_H 1 + +/* Define to 1 if you have the `m' library (-lm). */ +#define HAVE_LIBM 1 + +/* Define to 1 if you have the `memcpy' function. */ +#define HAVE_MEMCPY 1 + +/* Define to 1 if you have the `memmove' function. */ +#define HAVE_MEMMOVE 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_MEMORY_H 1 + +/* Define this if printf can handle %Lf for long double */ +#define HAVE_PRINTF_LONGDOUBLE 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STDINT_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STDLIB_H 1 + +/* Define to 1 if you have the `strdup' function. */ +#define HAVE_STRDUP 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STRINGS_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STRING_H 1 + +/* Define to 1 if you have the `strtol' function. */ +#define HAVE_STRTOL 1 + +/* Define to 1 if you have the `strtoul' function. */ +#define HAVE_STRTOUL 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_STAT_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_TYPES_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_UNISTD_H 1 + +/* Define to 1 if you have the `vprintf' function. */ +#define HAVE_VPRINTF 1 + +/* Define if you need to hide the static definitions of inline functions */ +/* #undef HIDE_INLINE_STATIC */ + +/* Define to the sub-directory in which libtool stores uninstalled libraries. + */ +#define LT_OBJDIR ".libs/" + +/* Name of package */ +#define PACKAGE "gsl" + +/* Define to the address where bug reports for this package should be sent. */ +#define PACKAGE_BUGREPORT "" + +/* Define to the full name of this package. */ +#define PACKAGE_NAME "gsl" + +/* Define to the full name and version of this package. */ +#define PACKAGE_STRING "gsl 2.5" + +/* Define to the one symbol short name of this package. */ +#define PACKAGE_TARNAME "gsl" + +/* Define to the home page for this package. */ +#define PACKAGE_URL "" + +/* Define to the version of this package. */ +#define PACKAGE_VERSION "2.5" + +/* Defined if this is an official release */ +#define RELEASED /**/ + +/* Define to 1 if you have the ANSI C header files. */ +#define STDC_HEADERS 1 + +/* Version number of package */ +#define VERSION "2.5" + +/* Define to 1 if type `char' is unsigned and you are not using gcc. */ +#ifndef __CHAR_UNSIGNED__ +/* # undef __CHAR_UNSIGNED__ */ +#endif + +/* Define to `__inline__' or `__inline' if that's what the C compiler + calls it, or to nothing if 'inline' is not supported under any name. */ +#ifndef __cplusplus +/* #undef inline */ +#endif + +/* Define to `unsigned int' if does not define. */ +/* #undef size_t */ + +/* Define to empty if the keyword `volatile' does not work. Warning: valid + code using `volatile' can become incorrect without. Disable with care. */ +/* #undef volatile */ + +/* Use 0 and 1 for EXIT_SUCCESS and EXIT_FAILURE if we don't have them */ +#if !HAVE_EXIT_SUCCESS_AND_FAILURE +#define EXIT_SUCCESS 0 +#define EXIT_FAILURE 1 +#endif + +/* Define one of these if you have a known IEEE arithmetic interface */ +/* #undef HAVE_GNUSPARC_IEEE_INTERFACE */ +/* #undef HAVE_GNUM68K_IEEE_INTERFACE */ +/* #undef HAVE_GNUPPC_IEEE_INTERFACE */ +#define HAVE_GNUX86_IEEE_INTERFACE 1 +/* #undef HAVE_SUNOS4_IEEE_INTERFACE */ +/* #undef HAVE_SOLARIS_IEEE_INTERFACE */ +/* #undef HAVE_HPUX11_IEEE_INTERFACE */ +/* #undef HAVE_HPUX_IEEE_INTERFACE */ +/* #undef HAVE_TRU64_IEEE_INTERFACE */ +/* #undef HAVE_IRIX_IEEE_INTERFACE */ +/* #undef HAVE_AIX_IEEE_INTERFACE */ +/* #undef HAVE_FREEBSD_IEEE_INTERFACE */ +/* #undef HAVE_OS2EMX_IEEE_INTERFACE */ +/* #undef HAVE_NETBSD_IEEE_INTERFACE */ +/* #undef HAVE_OPENBSD_IEEE_INTERFACE */ +/* #undef HAVE_DARWIN_IEEE_INTERFACE */ +/* #undef HAVE_DARWIN86_IEEE_INTERFACE */ + +/* Define a rounding function which moves extended precision values + out of registers and rounds them to double-precision. This should + be used *sparingly*, in places where it is necessary to keep + double-precision rounding for critical expressions while running in + extended precision. For example, the following code should ensure + exact equality, even when extended precision registers are in use, + + double q = GSL_COERCE_DBL(3.0/7.0) ; + if (q == GSL_COERCE_DBL(3.0/7.0)) { ... } ; + + It carries a penalty even when the program is running in double + precision mode unless you compile a separate version of the + library with HAVE_EXTENDED_PRECISION_REGISTERS turned off. */ + +#if HAVE_EXTENDED_PRECISION_REGISTERS +#define GSL_COERCE_DBL(x) (gsl_coerce_double(x)) +#else +#define GSL_COERCE_DBL(x) (x) +#endif + +/* Substitute gsl functions for missing system functions */ + +#if !HAVE_DECL_HYPOT +#define hypot gsl_hypot +#endif + +#if !HAVE_DECL_LOG1P +#define log1p gsl_log1p +#endif + +#if !HAVE_DECL_EXPM1 +#define expm1 gsl_expm1 +#endif + +#if !HAVE_DECL_ACOSH +#define acosh gsl_acosh +#endif + +#if !HAVE_DECL_ASINH +#define asinh gsl_asinh +#endif + +#if !HAVE_DECL_ATANH +#define atanh gsl_atanh +#endif + +#if !HAVE_DECL_LDEXP +#define ldexp gsl_ldexp +#endif + +#if !HAVE_DECL_FREXP +#define frexp gsl_frexp +#endif + +#if !HAVE_DECL_ISINF +#define isinf gsl_isinf +#endif + +#if !HAVE_DECL_ISFINITE +#define isfinite gsl_finite +#endif + +#if !HAVE_DECL_FINITE +#define finite gsl_finite +#endif + +#if !HAVE_DECL_ISNAN +#define isnan gsl_isnan +#endif + +#ifdef __GNUC__ +#define DISCARD_POINTER(p) do { ; } while(p ? 0 : 0); +#else +#define DISCARD_POINTER(p) /* ignoring discarded pointer */ +#endif + +#if defined(GSL_RANGE_CHECK_OFF) || !defined(GSL_RANGE_CHECK) +#define GSL_RANGE_CHECK 0 /* turn off range checking by default internally */ +#endif + +#define RETURN_IF_NULL(x) if (!x) { return ; } + diff --git a/gsl-2.5/config.h.in b/gsl-2.5/config.h.in new file mode 100644 index 00000000..d39c766c --- /dev/null +++ b/gsl-2.5/config.h.in @@ -0,0 +1,308 @@ +/* config.h.in. Generated from configure.ac by autoheader. */ + +/* Disable deprecated functions and enums while building */ +#define GSL_DISABLE_DEPRECATED 1 + +/* Define if you have inline with C99 behavior */ +#undef HAVE_C99_INLINE + +/* Define to 1 if you have the declaration of `acosh', and to 0 if you don't. + */ +#undef HAVE_DECL_ACOSH + +/* Define to 1 if you have the declaration of `asinh', and to 0 if you don't. + */ +#undef HAVE_DECL_ASINH + +/* Define to 1 if you have the declaration of `atanh', and to 0 if you don't. + */ +#undef HAVE_DECL_ATANH + +/* Define to 1 if you have the declaration of `expm1', and to 0 if you don't. + */ +#undef HAVE_DECL_EXPM1 + +/* Define to 1 if you have the declaration of `feenableexcept', and to 0 if + you don't. */ +#undef HAVE_DECL_FEENABLEEXCEPT + +/* Define to 1 if you have the declaration of `fesettrapenable', and to 0 if + you don't. */ +#undef HAVE_DECL_FESETTRAPENABLE + +/* Define to 1 if you have the declaration of `finite', and to 0 if you don't. + */ +#undef HAVE_DECL_FINITE + +/* Define to 1 if you have the declaration of `fprnd_t', and to 0 if you + don't. */ +#undef HAVE_DECL_FPRND_T + +/* Define to 1 if you have the declaration of `frexp', and to 0 if you don't. + */ +#undef HAVE_DECL_FREXP + +/* Define to 1 if you have the declaration of `hypot', and to 0 if you don't. + */ +#undef HAVE_DECL_HYPOT + +/* Define to 1 if you have the declaration of `isfinite', and to 0 if you + don't. */ +#undef HAVE_DECL_ISFINITE + +/* Define to 1 if you have the declaration of `isinf', and to 0 if you don't. + */ +#undef HAVE_DECL_ISINF + +/* Define to 1 if you have the declaration of `isnan', and to 0 if you don't. + */ +#undef HAVE_DECL_ISNAN + +/* Define to 1 if you have the declaration of `ldexp', and to 0 if you don't. + */ +#undef HAVE_DECL_LDEXP + +/* Define to 1 if you have the declaration of `log1p', and to 0 if you don't. + */ +#undef HAVE_DECL_LOG1P + +/* Define to 1 if you have the header file. */ +#undef HAVE_DLFCN_H + +/* Define to 1 if you don't have `vprintf' but do have `_doprnt.' */ +#undef HAVE_DOPRNT + +/* Defined if you have ansi EXIT_SUCCESS and EXIT_FAILURE in stdlib.h */ +#undef HAVE_EXIT_SUCCESS_AND_FAILURE + +/* Defined on architectures with excess floating-point precision */ +#undef HAVE_EXTENDED_PRECISION_REGISTERS + +/* Define if x86 processor has sse extensions. */ +#undef HAVE_FPU_X86_SSE + +/* Define to 1 if you have the header file. */ +#undef HAVE_IEEEFP_H + +/* Define this if IEEE comparisons work correctly (e.g. NaN != NaN) */ +#undef HAVE_IEEE_COMPARISONS + +/* Define this if IEEE denormalized numbers are available */ +#undef HAVE_IEEE_DENORMALS + +/* Define if you have inline */ +#undef HAVE_INLINE + +/* Define to 1 if you have the header file. */ +#undef HAVE_INTTYPES_H + +/* Define to 1 if you have the `m' library (-lm). */ +#undef HAVE_LIBM + +/* Define to 1 if you have the `memcpy' function. */ +#undef HAVE_MEMCPY + +/* Define to 1 if you have the `memmove' function. */ +#undef HAVE_MEMMOVE + +/* Define to 1 if you have the header file. */ +#undef HAVE_MEMORY_H + +/* Define this if printf can handle %Lf for long double */ +#undef HAVE_PRINTF_LONGDOUBLE + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDINT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDLIB_H + +/* Define to 1 if you have the `strdup' function. */ +#undef HAVE_STRDUP + +/* Define to 1 if you have the header file. */ +#undef HAVE_STRINGS_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STRING_H + +/* Define to 1 if you have the `strtol' function. */ +#undef HAVE_STRTOL + +/* Define to 1 if you have the `strtoul' function. */ +#undef HAVE_STRTOUL + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_STAT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_TYPES_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_UNISTD_H + +/* Define to 1 if you have the `vprintf' function. */ +#undef HAVE_VPRINTF + +/* Define if you need to hide the static definitions of inline functions */ +#undef HIDE_INLINE_STATIC + +/* Define to the sub-directory in which libtool stores uninstalled libraries. + */ +#undef LT_OBJDIR + +/* Name of package */ +#undef PACKAGE + +/* Define to the address where bug reports for this package should be sent. */ +#undef PACKAGE_BUGREPORT + +/* Define to the full name of this package. */ +#undef PACKAGE_NAME + +/* Define to the full name and version of this package. */ +#undef PACKAGE_STRING + +/* Define to the one symbol short name of this package. */ +#undef PACKAGE_TARNAME + +/* Define to the home page for this package. */ +#undef PACKAGE_URL + +/* Define to the version of this package. */ +#undef PACKAGE_VERSION + +/* Defined if this is an official release */ +#undef RELEASED + +/* Define to 1 if you have the ANSI C header files. */ +#undef STDC_HEADERS + +/* Version number of package */ +#undef VERSION + +/* Define to 1 if type `char' is unsigned and you are not using gcc. */ +#ifndef __CHAR_UNSIGNED__ +# undef __CHAR_UNSIGNED__ +#endif + +/* Define to `__inline__' or `__inline' if that's what the C compiler + calls it, or to nothing if 'inline' is not supported under any name. */ +#ifndef __cplusplus +#undef inline +#endif + +/* Define to `unsigned int' if does not define. */ +#undef size_t + +/* Define to empty if the keyword `volatile' does not work. Warning: valid + code using `volatile' can become incorrect without. Disable with care. */ +#undef volatile + +/* Use 0 and 1 for EXIT_SUCCESS and EXIT_FAILURE if we don't have them */ +#if !HAVE_EXIT_SUCCESS_AND_FAILURE +#define EXIT_SUCCESS 0 +#define EXIT_FAILURE 1 +#endif + +/* Define one of these if you have a known IEEE arithmetic interface */ +#undef HAVE_GNUSPARC_IEEE_INTERFACE +#undef HAVE_GNUM68K_IEEE_INTERFACE +#undef HAVE_GNUPPC_IEEE_INTERFACE +#undef HAVE_GNUX86_IEEE_INTERFACE +#undef HAVE_SUNOS4_IEEE_INTERFACE +#undef HAVE_SOLARIS_IEEE_INTERFACE +#undef HAVE_HPUX11_IEEE_INTERFACE +#undef HAVE_HPUX_IEEE_INTERFACE +#undef HAVE_TRU64_IEEE_INTERFACE +#undef HAVE_IRIX_IEEE_INTERFACE +#undef HAVE_AIX_IEEE_INTERFACE +#undef HAVE_FREEBSD_IEEE_INTERFACE +#undef HAVE_OS2EMX_IEEE_INTERFACE +#undef HAVE_NETBSD_IEEE_INTERFACE +#undef HAVE_OPENBSD_IEEE_INTERFACE +#undef HAVE_DARWIN_IEEE_INTERFACE +#undef HAVE_DARWIN86_IEEE_INTERFACE + +/* Define a rounding function which moves extended precision values + out of registers and rounds them to double-precision. This should + be used *sparingly*, in places where it is necessary to keep + double-precision rounding for critical expressions while running in + extended precision. For example, the following code should ensure + exact equality, even when extended precision registers are in use, + + double q = GSL_COERCE_DBL(3.0/7.0) ; + if (q == GSL_COERCE_DBL(3.0/7.0)) { ... } ; + + It carries a penalty even when the program is running in double + precision mode unless you compile a separate version of the + library with HAVE_EXTENDED_PRECISION_REGISTERS turned off. */ + +#if HAVE_EXTENDED_PRECISION_REGISTERS +#define GSL_COERCE_DBL(x) (gsl_coerce_double(x)) +#else +#define GSL_COERCE_DBL(x) (x) +#endif + +/* Substitute gsl functions for missing system functions */ + +#if !HAVE_DECL_HYPOT +#define hypot gsl_hypot +#endif + +#if !HAVE_DECL_LOG1P +#define log1p gsl_log1p +#endif + +#if !HAVE_DECL_EXPM1 +#define expm1 gsl_expm1 +#endif + +#if !HAVE_DECL_ACOSH +#define acosh gsl_acosh +#endif + +#if !HAVE_DECL_ASINH +#define asinh gsl_asinh +#endif + +#if !HAVE_DECL_ATANH +#define atanh gsl_atanh +#endif + +#if !HAVE_DECL_LDEXP +#define ldexp gsl_ldexp +#endif + +#if !HAVE_DECL_FREXP +#define frexp gsl_frexp +#endif + +#if !HAVE_DECL_ISINF +#define isinf gsl_isinf +#endif + +#if !HAVE_DECL_ISFINITE +#define isfinite gsl_finite +#endif + +#if !HAVE_DECL_FINITE +#define finite gsl_finite +#endif + +#if !HAVE_DECL_ISNAN +#define isnan gsl_isnan +#endif + +#ifdef __GNUC__ +#define DISCARD_POINTER(p) do { ; } while(p ? 0 : 0); +#else +#define DISCARD_POINTER(p) /* ignoring discarded pointer */ +#endif + +#if defined(GSL_RANGE_CHECK_OFF) || !defined(GSL_RANGE_CHECK) +#define GSL_RANGE_CHECK 0 /* turn off range checking by default internally */ +#endif + +#define RETURN_IF_NULL(x) if (!x) { return ; } + diff --git a/gsl-2.5/config.log b/gsl-2.5/config.log new file mode 100644 index 00000000..88f00108 --- /dev/null +++ b/gsl-2.5/config.log @@ -0,0 +1,1315 @@ +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +It was created by gsl configure 2.5, which was +generated by GNU Autoconf 2.69. Invocation command line was + + $ ./configure --prefix=/home/groups/kipac/chto/package/gsl/gsl_lib/ + +## --------- ## +## Platform. ## +## --------- ## + +hostname = sh-ln03.stanford.edu +uname -m = x86_64 +uname -r = 3.10.0-957.21.3.el7.x86_64 +uname -s = Linux +uname -v = #1 SMP Tue Jun 18 16:35:19 UTC 2019 + +/usr/bin/uname -p = x86_64 +/bin/uname -X = unknown + +/bin/arch = x86_64 +/usr/bin/arch -k = unknown +/usr/convex/getsysinfo = unknown +/usr/bin/hostinfo = unknown +/bin/machine = unknown +/usr/bin/oslevel = unknown +/bin/universe = unknown + +PATH: /share/software/user/open/curl/7.54.0/bin +PATH: /share/software/user/open/libressl/2.5.3/bin +PATH: /home/users/chto/lib/cfitsio +PATH: /home/users/chto/lib/cfitsio/include +PATH: /home/users/chto/lib +PATH: /home/users/chto/bin/bin +PATH: /home/users/chto/bin +PATH: /home/users/chto/.texlive/bin/x86_64-linux +PATH: /home/groups/kipac/chto/anaconda2/envs/newenv3/bin +PATH: /home/users/chto/.local/bin/include +PATH: /home/users/chto/.local/bin/lib +PATH: /home/users/chto/.local/bin +PATH: /share/software/user/restricted/impi/2018.u1/impi/2018.1.163/bin64 +PATH: /share/software/user/open/fftw/3.3.6/bin +PATH: /home/groups/kipac/chto/anaconda2/condabin +PATH: /share/software/user/restricted/ifort/2019/bin +PATH: /share/software/user/open/gsl/2.3/bin +PATH: /share/software/user/srcc/bin +PATH: /usr/local/bin +PATH: /usr/bin +PATH: /usr/local/sbin +PATH: /usr/sbin +PATH: /opt/dell/srvadmin/bin +PATH: /opt/dell/srvadmin/iSM/bin +PATH: /home/users/chto/bin + + +## ----------- ## +## Core tests. ## +## ----------- ## + +configure:2381: checking for a BSD-compatible install +configure:2449: result: /usr/bin/install -c +configure:2460: checking whether build environment is sane +configure:2515: result: yes +configure:2666: checking for a thread-safe mkdir -p +configure:2705: result: /usr/bin/mkdir -p +configure:2712: checking for gawk +configure:2728: found /usr/bin/gawk +configure:2739: result: gawk +configure:2750: checking whether make sets $(MAKE) +configure:2772: result: yes +configure:2801: checking whether make supports nested variables +configure:2818: result: yes +configure:2905: checking whether to enable maintainer-specific portions of Makefiles +configure:2914: result: no +configure:2952: checking for a sed that does not truncate output +configure:3016: result: /usr/bin/sed +configure:3028: checking whether make sets $(MAKE) +configure:3050: result: yes +configure:3064: checking build system type +configure:3078: result: x86_64-unknown-linux-gnu +configure:3098: checking host system type +configure:3111: result: x86_64-unknown-linux-gnu +configure:3186: checking for gcc +configure:3202: found /usr/bin/gcc +configure:3213: result: gcc +configure:3442: checking for C compiler version +configure:3451: gcc --version >&5 +gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-36) +Copyright (C) 2015 Free Software Foundation, Inc. +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +configure:3462: $? = 0 +configure:3451: gcc -v >&5 +Using built-in specs. +COLLECT_GCC=gcc +COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-redhat-linux/4.8.5/lto-wrapper +Target: x86_64-redhat-linux +Configured with: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-bootstrap --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-linker-hash-style=gnu --enable-languages=c,c++,objc,obj-c++,java,fortran,ada,go,lto --enable-plugin --enable-initfini-array --disable-libgcj --with-isl=/builddir/build/BUILD/gcc-4.8.5-20150702/obj-x86_64-redhat-linux/isl-install --with-cloog=/builddir/build/BUILD/gcc-4.8.5-20150702/obj-x86_64-redhat-linux/cloog-install --enable-gnu-indirect-function --with-tune=generic --with-arch_32=x86-64 --build=x86_64-redhat-linux +Thread model: posix +gcc version 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC) +configure:3462: $? = 0 +configure:3451: gcc -V >&5 +gcc: error: unrecognized command line option '-V' +gcc: fatal error: no input files +compilation terminated. +configure:3462: $? = 4 +configure:3451: gcc -qversion >&5 +gcc: error: unrecognized command line option '-qversion' +gcc: fatal error: no input files +compilation terminated. +configure:3462: $? = 4 +configure:3482: checking whether the C compiler works +configure:3504: gcc conftest.c >&5 +configure:3508: $? = 0 +configure:3556: result: yes +configure:3559: checking for C compiler default output file name +configure:3561: result: a.out +configure:3567: checking for suffix of executables +configure:3574: gcc -o conftest conftest.c >&5 +configure:3578: $? = 0 +configure:3600: result: +configure:3622: checking whether we are cross compiling +configure:3630: gcc -o conftest conftest.c >&5 +configure:3634: $? = 0 +configure:3641: ./conftest +configure:3645: $? = 0 +configure:3660: result: no +configure:3665: checking for suffix of object files +configure:3687: gcc -c conftest.c >&5 +configure:3691: $? = 0 +configure:3712: result: o +configure:3716: checking whether we are using the GNU C compiler +configure:3735: gcc -c conftest.c >&5 +configure:3735: $? = 0 +configure:3744: result: yes +configure:3753: checking whether gcc accepts -g +configure:3773: gcc -c -g conftest.c >&5 +configure:3773: $? = 0 +configure:3814: result: yes +configure:3831: checking for gcc option to accept ISO C89 +configure:3894: gcc -c -g -O2 conftest.c >&5 +configure:3894: $? = 0 +configure:3907: result: none needed +configure:3938: checking for style of include used by make +configure:3966: result: GNU +configure:3992: checking dependency style of gcc +configure:4103: result: gcc3 +configure:4123: checking how to run the C preprocessor +configure:4154: gcc -E conftest.c +configure:4154: $? = 0 +configure:4168: gcc -E conftest.c +conftest.c:12:28: fatal error: ac_nonexistent.h: No such file or directory + #include + ^ +compilation terminated. +configure:4168: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "gsl" +| #define PACKAGE_TARNAME "gsl" +| #define PACKAGE_VERSION "2.5" +| #define PACKAGE_STRING "gsl 2.5" +| #define PACKAGE_BUGREPORT "" +| #define PACKAGE_URL "" +| #define PACKAGE "gsl" +| #define VERSION "2.5" +| #define RELEASED /**/ +| /* end confdefs.h. */ +| #include +configure:4193: result: gcc -E +configure:4213: gcc -E conftest.c +configure:4213: $? = 0 +configure:4227: gcc -E conftest.c +conftest.c:12:28: fatal error: ac_nonexistent.h: No such file or directory + #include + ^ +compilation terminated. +configure:4227: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "gsl" +| #define PACKAGE_TARNAME "gsl" +| #define PACKAGE_VERSION "2.5" +| #define PACKAGE_STRING "gsl 2.5" +| #define PACKAGE_BUGREPORT "" +| #define PACKAGE_URL "" +| #define PACKAGE "gsl" +| #define VERSION "2.5" +| #define RELEASED /**/ +| /* end confdefs.h. */ +| #include +configure:4256: checking whether ln -s works +configure:4260: result: yes +configure:4313: checking how to print strings +configure:4340: result: printf +configure:4361: checking for a sed that does not truncate output +configure:4425: result: /usr/bin/sed +configure:4443: checking for grep that handles long lines and -e +configure:4501: result: /usr/bin/grep +configure:4506: checking for egrep +configure:4568: result: /usr/bin/grep -E +configure:4573: checking for fgrep +configure:4635: result: /usr/bin/grep -F +configure:4670: checking for ld used by gcc +configure:4737: result: /usr/bin/ld +configure:4744: checking if the linker (/usr/bin/ld) is GNU ld +configure:4759: result: yes +configure:4771: checking for BSD- or MS-compatible name lister (nm) +configure:4820: result: /usr/bin/nm -B +configure:4950: checking the name lister (/usr/bin/nm -B) interface +configure:4957: gcc -c -g -O2 conftest.c >&5 +configure:4960: /usr/bin/nm -B "conftest.o" +configure:4963: output +0000000000000000 B some_variable +configure:4970: result: BSD nm +configure:4974: checking the maximum length of command line arguments +configure:5104: result: 1572864 +configure:5121: checking whether the shell understands some XSI constructs +configure:5131: result: yes +configure:5135: checking whether the shell understands "+=" +configure:5141: result: yes +configure:5176: checking how to convert x86_64-unknown-linux-gnu file names to x86_64-unknown-linux-gnu format +configure:5216: result: func_convert_file_noop +configure:5223: checking how to convert x86_64-unknown-linux-gnu file names to toolchain format +configure:5243: result: func_convert_file_noop +configure:5250: checking for /usr/bin/ld option to reload object files +configure:5257: result: -r +configure:5331: checking for objdump +configure:5347: found /usr/bin/objdump +configure:5358: result: objdump +configure:5387: checking how to recognize dependent libraries +configure:5589: result: pass_all +configure:5674: checking for dlltool +configure:5704: result: no +configure:5731: checking how to associate runtime and link libraries +configure:5758: result: printf %s\n +configure:5819: checking for ar +configure:5835: found /usr/bin/ar +configure:5846: result: ar +configure:5883: checking for archiver @FILE support +configure:5900: gcc -c -g -O2 conftest.c >&5 +configure:5900: $? = 0 +configure:5903: ar cru libconftest.a @conftest.lst >&5 +configure:5906: $? = 0 +configure:5911: ar cru libconftest.a @conftest.lst >&5 +ar: conftest.o: No such file or directory +configure:5914: $? = 1 +configure:5926: result: @ +configure:5984: checking for strip +configure:6000: found /usr/bin/strip +configure:6011: result: strip +configure:6083: checking for ranlib +configure:6099: found /usr/bin/ranlib +configure:6110: result: ranlib +configure:6212: checking command to parse /usr/bin/nm -B output from gcc object +configure:6332: gcc -c -g -O2 conftest.c >&5 +configure:6335: $? = 0 +configure:6339: /usr/bin/nm -B conftest.o \| sed -n -e 's/^.*[ ]\([ABCDGIRSTW][ABCDGIRSTW]*\)[ ][ ]*\([_A-Za-z][_A-Za-z0-9]*\)$/\1 \2 \2/p' | sed '/ __gnu_lto/d' \> conftest.nm +configure:6342: $? = 0 +configure:6408: gcc -o conftest -g -O2 conftest.c conftstm.o >&5 +configure:6411: $? = 0 +configure:6449: result: ok +configure:6486: checking for sysroot +configure:6516: result: no +configure:6593: gcc -c -g -O2 conftest.c >&5 +configure:6596: $? = 0 +configure:6772: checking for mt +configure:6802: result: no +configure:6822: checking if : is a manifest tool +configure:6828: : '-?' +configure:6836: result: no +configure:7474: checking for ANSI C header files +configure:7494: gcc -c -g -O2 conftest.c >&5 +configure:7494: $? = 0 +configure:7567: gcc -o conftest -g -O2 conftest.c >&5 +configure:7567: $? = 0 +configure:7567: ./conftest +configure:7567: $? = 0 +configure:7578: result: yes +configure:7591: checking for sys/types.h +configure:7591: gcc -c -g -O2 conftest.c >&5 +configure:7591: $? = 0 +configure:7591: result: yes +configure:7591: checking for sys/stat.h +configure:7591: gcc -c -g -O2 conftest.c >&5 +configure:7591: $? = 0 +configure:7591: result: yes +configure:7591: checking for stdlib.h +configure:7591: gcc -c -g -O2 conftest.c >&5 +configure:7591: $? = 0 +configure:7591: result: yes +configure:7591: checking for string.h +configure:7591: gcc -c -g -O2 conftest.c >&5 +configure:7591: $? = 0 +configure:7591: result: yes +configure:7591: checking for memory.h +configure:7591: gcc -c -g -O2 conftest.c >&5 +configure:7591: $? = 0 +configure:7591: result: yes +configure:7591: checking for strings.h +configure:7591: gcc -c -g -O2 conftest.c >&5 +configure:7591: $? = 0 +configure:7591: result: yes +configure:7591: checking for inttypes.h +configure:7591: gcc -c -g -O2 conftest.c >&5 +configure:7591: $? = 0 +configure:7591: result: yes +configure:7591: checking for stdint.h +configure:7591: gcc -c -g -O2 conftest.c >&5 +configure:7591: $? = 0 +configure:7591: result: yes +configure:7591: checking for unistd.h +configure:7591: gcc -c -g -O2 conftest.c >&5 +configure:7591: $? = 0 +configure:7591: result: yes +configure:7605: checking for dlfcn.h +configure:7605: gcc -c -g -O2 conftest.c >&5 +configure:7605: $? = 0 +configure:7605: result: yes +configure:8109: checking for objdir +configure:8124: result: .libs +configure:8391: checking if gcc supports -fno-rtti -fno-exceptions +configure:8409: gcc -c -g -O2 -fno-rtti -fno-exceptions conftest.c >&5 +cc1: warning: command line option '-fno-rtti' is valid for C++/ObjC++ but not for C [enabled by default] +configure:8413: $? = 0 +configure:8426: result: no +configure:8753: checking for gcc option to produce PIC +configure:8760: result: -fPIC -DPIC +configure:8768: checking if gcc PIC flag -fPIC -DPIC works +configure:8786: gcc -c -g -O2 -fPIC -DPIC -DPIC conftest.c >&5 +configure:8790: $? = 0 +configure:8803: result: yes +configure:8832: checking if gcc static flag -static works +configure:8860: result: no +configure:8875: checking if gcc supports -c -o file.o +configure:8896: gcc -c -g -O2 -o out/conftest2.o conftest.c >&5 +configure:8900: $? = 0 +configure:8922: result: yes +configure:8930: checking if gcc supports -c -o file.o +configure:8977: result: yes +configure:9010: checking whether the gcc linker (/usr/bin/ld -m elf_x86_64) supports shared libraries +configure:10163: result: yes +configure:10200: checking whether -lc should be explicitly linked in +configure:10208: gcc -c -g -O2 conftest.c >&5 +configure:10211: $? = 0 +configure:10226: gcc -shared -fPIC -DPIC conftest.o -v -Wl,-soname -Wl,conftest -o conftest 2\>\&1 \| /usr/bin/grep -lc \>/dev/null 2\>\&1 +configure:10229: $? = 0 +configure:10243: result: no +configure:10403: checking dynamic linker characteristics +configure:10914: gcc -o conftest -g -O2 -Wl,-rpath -Wl,/foo conftest.c >&5 +configure:10914: $? = 0 +configure:11140: result: GNU/Linux ld.so +configure:11247: checking how to hardcode library paths into programs +configure:11272: result: immediate +configure:11812: checking whether stripping libraries is possible +configure:11817: result: yes +configure:11852: checking if libtool supports shared libraries +configure:11854: result: yes +configure:11857: checking whether to build shared libraries +configure:11878: result: yes +configure:11881: checking whether to build static libraries +configure:11885: result: yes +configure:11923: checking for size_t +configure:11923: gcc -c -g -O2 conftest.c >&5 +configure:11923: $? = 0 +configure:11923: gcc -c -g -O2 conftest.c >&5 +conftest.c: In function 'main': +conftest.c:60:21: error: expected expression before ')' token + if (sizeof ((size_t))) + ^ +configure:11923: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "gsl" +| #define PACKAGE_TARNAME "gsl" +| #define PACKAGE_VERSION "2.5" +| #define PACKAGE_STRING "gsl 2.5" +| #define PACKAGE_BUGREPORT "" +| #define PACKAGE_URL "" +| #define PACKAGE "gsl" +| #define VERSION "2.5" +| #define RELEASED /**/ +| #define STDC_HEADERS 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_DLFCN_H 1 +| #define LT_OBJDIR ".libs/" +| /* end confdefs.h. */ +| #include +| #ifdef HAVE_SYS_TYPES_H +| # include +| #endif +| #ifdef HAVE_SYS_STAT_H +| # include +| #endif +| #ifdef STDC_HEADERS +| # include +| # include +| #else +| # ifdef HAVE_STDLIB_H +| # include +| # endif +| #endif +| #ifdef HAVE_STRING_H +| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H +| # include +| # endif +| # include +| #endif +| #ifdef HAVE_STRINGS_H +| # include +| #endif +| #ifdef HAVE_INTTYPES_H +| # include +| #endif +| #ifdef HAVE_STDINT_H +| # include +| #endif +| #ifdef HAVE_UNISTD_H +| # include +| #endif +| int +| main () +| { +| if (sizeof ((size_t))) +| return 0; +| ; +| return 0; +| } +configure:11923: result: yes +configure:11934: checking for working volatile +configure:11953: gcc -c -g -O2 conftest.c >&5 +configure:11953: $? = 0 +configure:11960: result: yes +configure:11968: checking for inline +configure:11984: gcc -c -g -O2 conftest.c >&5 +configure:11984: $? = 0 +configure:11992: result: inline +configure:12010: checking whether char is unsigned +configure:12029: gcc -c -g -O2 conftest.c >&5 +configure:12029: $? = 0 +configure:12036: result: no +configure:12134: checking for cos in -lm +configure:12159: gcc -o conftest -g -O2 conftest.c -lm >&5 +conftest.c:31:6: warning: conflicting types for built-in function 'cos' [enabled by default] + char cos (); + ^ +configure:12159: $? = 0 +configure:12168: result: yes +configure:12185: checking for GNU-style extern inline +configure:12204: gcc -c -g -O2 conftest.c >&5 +configure:12204: $? = 0 +configure:12210: result: yes +configure:12275: checking ieeefp.h usability +configure:12275: gcc -c -g -O2 conftest.c >&5 +conftest.c:58:20: fatal error: ieeefp.h: No such file or directory + #include + ^ +compilation terminated. +configure:12275: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "gsl" +| #define PACKAGE_TARNAME "gsl" +| #define PACKAGE_VERSION "2.5" +| #define PACKAGE_STRING "gsl 2.5" +| #define PACKAGE_BUGREPORT "" +| #define PACKAGE_URL "" +| #define PACKAGE "gsl" +| #define VERSION "2.5" +| #define RELEASED /**/ +| #define STDC_HEADERS 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_DLFCN_H 1 +| #define LT_OBJDIR ".libs/" +| #define HAVE_INLINE 1 +| /* end confdefs.h. */ +| #include +| #ifdef HAVE_SYS_TYPES_H +| # include +| #endif +| #ifdef HAVE_SYS_STAT_H +| # include +| #endif +| #ifdef STDC_HEADERS +| # include +| # include +| #else +| # ifdef HAVE_STDLIB_H +| # include +| # endif +| #endif +| #ifdef HAVE_STRING_H +| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H +| # include +| # endif +| # include +| #endif +| #ifdef HAVE_STRINGS_H +| # include +| #endif +| #ifdef HAVE_INTTYPES_H +| # include +| #endif +| #ifdef HAVE_STDINT_H +| # include +| #endif +| #ifdef HAVE_UNISTD_H +| # include +| #endif +| #include +configure:12275: result: no +configure:12275: checking ieeefp.h presence +configure:12275: gcc -E conftest.c +conftest.c:25:20: fatal error: ieeefp.h: No such file or directory + #include + ^ +compilation terminated. +configure:12275: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "gsl" +| #define PACKAGE_TARNAME "gsl" +| #define PACKAGE_VERSION "2.5" +| #define PACKAGE_STRING "gsl 2.5" +| #define PACKAGE_BUGREPORT "" +| #define PACKAGE_URL "" +| #define PACKAGE "gsl" +| #define VERSION "2.5" +| #define RELEASED /**/ +| #define STDC_HEADERS 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_DLFCN_H 1 +| #define LT_OBJDIR ".libs/" +| #define HAVE_INLINE 1 +| /* end confdefs.h. */ +| #include +configure:12275: result: no +configure:12275: checking for ieeefp.h +configure:12275: result: no +configure:12304: checking for vprintf +configure:12304: gcc -o conftest -g -O2 conftest.c >&5 +conftest.c:48:6: warning: conflicting types for built-in function 'vprintf' [enabled by default] + char vprintf (); + ^ +configure:12304: $? = 0 +configure:12304: result: yes +configure:12310: checking for _doprnt +configure:12310: gcc -o conftest -g -O2 conftest.c >&5 +/tmp/cc2vBeOT.o: In function `main': +/home/groups/kipac/chto/package/gsl/gsl-2.5/conftest.c:60: undefined reference to `_doprnt' +collect2: error: ld returned 1 exit status +configure:12310: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "gsl" +| #define PACKAGE_TARNAME "gsl" +| #define PACKAGE_VERSION "2.5" +| #define PACKAGE_STRING "gsl 2.5" +| #define PACKAGE_BUGREPORT "" +| #define PACKAGE_URL "" +| #define PACKAGE "gsl" +| #define VERSION "2.5" +| #define RELEASED /**/ +| #define STDC_HEADERS 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_DLFCN_H 1 +| #define LT_OBJDIR ".libs/" +| #define HAVE_INLINE 1 +| #define HAVE_VPRINTF 1 +| /* end confdefs.h. */ +| /* Define _doprnt to an innocuous variant, in case declares _doprnt. +| For example, HP-UX 11i declares gettimeofday. */ +| #define _doprnt innocuous__doprnt +| +| /* System header to define __stub macros and hopefully few prototypes, +| which can conflict with char _doprnt (); below. +| Prefer to if __STDC__ is defined, since +| exists even on freestanding compilers. */ +| +| #ifdef __STDC__ +| # include +| #else +| # include +| #endif +| +| #undef _doprnt +| +| /* Override any GCC internal prototype to avoid an error. +| Use char because int might match the return type of a GCC +| builtin and then its argument prototype would still apply. */ +| #ifdef __cplusplus +| extern "C" +| #endif +| char _doprnt (); +| /* The GNU C library defines this for functions which it implements +| to always fail with ENOSYS. Some functions are actually named +| something starting with __ and the normal name is an alias. */ +| #if defined __stub__doprnt || defined __stub____doprnt +| choke me +| #endif +| +| int +| main () +| { +| return _doprnt (); +| ; +| return 0; +| } +configure:12310: result: no +configure:12322: checking for memcpy +configure:12322: gcc -o conftest -g -O2 conftest.c >&5 +conftest.c:49:6: warning: conflicting types for built-in function 'memcpy' [enabled by default] + char memcpy (); + ^ +configure:12322: $? = 0 +configure:12322: result: yes +configure:12335: checking for memmove +configure:12335: gcc -o conftest -g -O2 conftest.c >&5 +conftest.c:50:6: warning: conflicting types for built-in function 'memmove' [enabled by default] + char memmove (); + ^ +configure:12335: $? = 0 +configure:12335: result: yes +configure:12348: checking for strdup +configure:12348: gcc -o conftest -g -O2 conftest.c >&5 +conftest.c:51:6: warning: conflicting types for built-in function 'strdup' [enabled by default] + char strdup (); + ^ +configure:12348: $? = 0 +configure:12348: result: yes +configure:12361: checking for strtol +configure:12361: gcc -o conftest -g -O2 conftest.c >&5 +configure:12361: $? = 0 +configure:12361: result: yes +configure:12374: checking for strtoul +configure:12374: gcc -o conftest -g -O2 conftest.c >&5 +configure:12374: $? = 0 +configure:12374: result: yes +configure:12389: checking for EXIT_SUCCESS and EXIT_FAILURE +configure:12413: result: yes +configure:12424: checking for cos in -lm +configure:12458: result: yes +configure:12471: checking whether feenableexcept is declared +configure:12471: gcc -c -g -O2 conftest.c >&5 +configure:12471: $? = 0 +configure:12471: result: yes +configure:12484: checking whether fesettrapenable is declared +configure:12484: gcc -c -g -O2 conftest.c >&5 +conftest.c: In function 'main': +conftest.c:44:10: error: 'fesettrapenable' undeclared (first use in this function) + (void) fesettrapenable; + ^ +conftest.c:44:10: note: each undeclared identifier is reported only once for each function it appears in +configure:12484: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "gsl" +| #define PACKAGE_TARNAME "gsl" +| #define PACKAGE_VERSION "2.5" +| #define PACKAGE_STRING "gsl 2.5" +| #define PACKAGE_BUGREPORT "" +| #define PACKAGE_URL "" +| #define PACKAGE "gsl" +| #define VERSION "2.5" +| #define RELEASED /**/ +| #define STDC_HEADERS 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_DLFCN_H 1 +| #define LT_OBJDIR ".libs/" +| #define HAVE_INLINE 1 +| #define HAVE_VPRINTF 1 +| #define HAVE_MEMCPY 1 +| #define HAVE_MEMMOVE 1 +| #define HAVE_STRDUP 1 +| #define HAVE_STRTOL 1 +| #define HAVE_STRTOUL 1 +| #define HAVE_EXIT_SUCCESS_AND_FAILURE 1 +| #define HAVE_LIBM 1 +| #define HAVE_DECL_FEENABLEEXCEPT 1 +| /* end confdefs.h. */ +| #define _GNU_SOURCE 1 +| #include +| +| int +| main () +| { +| #ifndef fesettrapenable +| #ifdef __cplusplus +| (void) fesettrapenable; +| #else +| (void) fesettrapenable; +| #endif +| #endif +| +| ; +| return 0; +| } +configure:12484: result: no +configure:12497: checking whether hypot is declared +configure:12497: gcc -c -g -O2 conftest.c >&5 +configure:12497: $? = 0 +configure:12497: result: yes +configure:12509: checking whether expm1 is declared +configure:12509: gcc -c -g -O2 conftest.c >&5 +configure:12509: $? = 0 +configure:12509: result: yes +configure:12521: checking whether acosh is declared +configure:12521: gcc -c -g -O2 conftest.c >&5 +configure:12521: $? = 0 +configure:12521: result: yes +configure:12533: checking whether asinh is declared +configure:12533: gcc -c -g -O2 conftest.c >&5 +configure:12533: $? = 0 +configure:12533: result: yes +configure:12545: checking whether atanh is declared +configure:12545: gcc -c -g -O2 conftest.c >&5 +configure:12545: $? = 0 +configure:12545: result: yes +configure:12557: checking whether ldexp is declared +configure:12557: gcc -c -g -O2 conftest.c >&5 +configure:12557: $? = 0 +configure:12557: result: yes +configure:12569: checking whether frexp is declared +configure:12569: gcc -c -g -O2 conftest.c >&5 +configure:12569: $? = 0 +configure:12569: result: yes +configure:12581: checking whether fprnd_t is declared +configure:12581: gcc -c -g -O2 conftest.c >&5 +conftest.c: In function 'main': +conftest.c:51:10: error: 'fprnd_t' undeclared (first use in this function) + (void) fprnd_t; + ^ +conftest.c:51:10: note: each undeclared identifier is reported only once for each function it appears in +configure:12581: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "gsl" +| #define PACKAGE_TARNAME "gsl" +| #define PACKAGE_VERSION "2.5" +| #define PACKAGE_STRING "gsl 2.5" +| #define PACKAGE_BUGREPORT "" +| #define PACKAGE_URL "" +| #define PACKAGE "gsl" +| #define VERSION "2.5" +| #define RELEASED /**/ +| #define STDC_HEADERS 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_DLFCN_H 1 +| #define LT_OBJDIR ".libs/" +| #define HAVE_INLINE 1 +| #define HAVE_VPRINTF 1 +| #define HAVE_MEMCPY 1 +| #define HAVE_MEMMOVE 1 +| #define HAVE_STRDUP 1 +| #define HAVE_STRTOL 1 +| #define HAVE_STRTOUL 1 +| #define HAVE_EXIT_SUCCESS_AND_FAILURE 1 +| #define HAVE_LIBM 1 +| #define HAVE_DECL_FEENABLEEXCEPT 1 +| #define HAVE_DECL_FESETTRAPENABLE 0 +| #define HAVE_DECL_HYPOT 1 +| #define HAVE_DECL_EXPM1 1 +| #define HAVE_DECL_ACOSH 1 +| #define HAVE_DECL_ASINH 1 +| #define HAVE_DECL_ATANH 1 +| #define HAVE_DECL_LDEXP 1 +| #define HAVE_DECL_FREXP 1 +| /* end confdefs.h. */ +| #include +| +| int +| main () +| { +| #ifndef fprnd_t +| #ifdef __cplusplus +| (void) fprnd_t; +| #else +| (void) fprnd_t; +| #endif +| #endif +| +| ; +| return 0; +| } +configure:12581: result: no +configure:12593: checking whether isinf is declared +configure:12593: gcc -c -g -O2 conftest.c >&5 +configure:12593: $? = 0 +configure:12593: result: yes +configure:12605: checking whether isfinite is declared +configure:12605: gcc -c -g -O2 conftest.c >&5 +configure:12605: $? = 0 +configure:12605: result: yes +configure:12617: checking whether finite is declared +configure:12617: gcc -c -g -O2 conftest.c >&5 +configure:12617: $? = 0 +configure:12617: result: yes +configure:12632: checking whether isnan is declared +configure:12632: gcc -c -g -O2 conftest.c >&5 +configure:12632: $? = 0 +configure:12632: result: yes +configure:12651: checking whether log1p is declared +configure:12651: gcc -c -g -O2 conftest.c >&5 +configure:12651: $? = 0 +configure:12651: result: yes +configure:12666: checking for long double stdio +configure:12687: gcc -o conftest -g -O2 conftest.c -lm >&5 +configure:12687: $? = 0 +configure:12687: ./conftest +1.234 +configure:12687: $? = 0 +configure:12697: result: yes +configure:12706: checking for extended floating point registers +configure:12739: result: yes +configure:12748: checking for IEEE arithmetic interface type +configure:12811: result: gnux86 +configure:12815: checking for FPU_SETCW +configure:12837: gcc -c -g -O2 conftest.c >&5 +configure:12837: $? = 0 +configure:12845: result: yes +configure:12850: checking for SSE extensions +configure:12894: gcc -o conftest -g -O2 conftest.c -lm >&5 +configure:12894: $? = 0 +configure:12894: ./conftest +configure:12894: $? = 0 +configure:12904: result: yes +configure:12941: checking for IEEE compiler flags +configure:12980: result: none +configure:12989: checking for IEEE comparisons +configure:13010: gcc -o conftest -g -O2 conftest.c -lm >&5 +conftest.c: In function 'main': +conftest.c:60:4: warning: incompatible implicit declaration of built-in function 'exit' [enabled by default] + exit (status); + ^ +configure:13010: $? = 0 +configure:13010: ./conftest +configure:13010: $? = 0 +configure:13021: result: yes +configure:13030: checking for IEEE denormalized values +configure:13052: gcc -o conftest -g -O2 conftest.c -lm >&5 +conftest.c: In function 'main': +conftest.c:62:4: warning: incompatible implicit declaration of built-in function 'exit' [enabled by default] + exit (status); + ^ +configure:13052: $? = 0 +configure:13052: ./conftest +configure:13052: $? = 0 +configure:13063: result: yes +configure:13202: checking that generated files are newer than configure +configure:13208: result: done +configure:13235: creating ./config.status + +## ---------------------- ## +## Running config.status. ## +## ---------------------- ## + +This file was extended by gsl config.status 2.5, which was +generated by GNU Autoconf 2.69. Invocation command line was + + CONFIG_FILES = + CONFIG_HEADERS = + CONFIG_LINKS = + CONFIG_COMMANDS = + $ ./config.status + +on sh-ln03.stanford.edu + +config.status:1205: creating Makefile +config.status:1205: creating gsl_version.h +config.status:1205: creating gsl.spec +config.status:1205: creating blas/Makefile +config.status:1205: creating block/Makefile +config.status:1205: creating bspline/Makefile +config.status:1205: creating cblas/Makefile +config.status:1205: creating cdf/Makefile +config.status:1205: creating cheb/Makefile +config.status:1205: creating combination/Makefile +config.status:1205: creating complex/Makefile +config.status:1205: creating const/Makefile +config.status:1205: creating deriv/Makefile +config.status:1205: creating dht/Makefile +config.status:1205: creating diff/Makefile +config.status:1205: creating doc/Makefile +config.status:1205: creating doc/examples/Makefile +config.status:1205: creating eigen/Makefile +config.status:1205: creating err/Makefile +config.status:1205: creating fft/Makefile +config.status:1205: creating filter/Makefile +config.status:1205: creating fit/Makefile +config.status:1205: creating gsl/Makefile +config.status:1205: creating histogram/Makefile +config.status:1205: creating ieee-utils/Makefile +config.status:1205: creating integration/Makefile +config.status:1205: creating interpolation/Makefile +config.status:1205: creating linalg/Makefile +config.status:1205: creating matrix/Makefile +config.status:1205: creating min/Makefile +config.status:1205: creating monte/Makefile +config.status:1205: creating movstat/Makefile +config.status:1205: creating multifit/Makefile +config.status:1205: creating multifit_nlinear/Makefile +config.status:1205: creating multilarge/Makefile +config.status:1205: creating multilarge_nlinear/Makefile +config.status:1205: creating multimin/Makefile +config.status:1205: creating multiroots/Makefile +config.status:1205: creating multiset/Makefile +config.status:1205: creating ntuple/Makefile +config.status:1205: creating ode-initval/Makefile +config.status:1205: creating ode-initval2/Makefile +config.status:1205: creating permutation/Makefile +config.status:1205: creating poly/Makefile +config.status:1205: creating qrng/Makefile +config.status:1205: creating randist/Makefile +config.status:1205: creating rng/Makefile +config.status:1205: creating roots/Makefile +config.status:1205: creating rstat/Makefile +config.status:1205: creating siman/Makefile +config.status:1205: creating sort/Makefile +config.status:1205: creating spblas/Makefile +config.status:1205: creating splinalg/Makefile +config.status:1205: creating spmatrix/Makefile +config.status:1205: creating specfunc/Makefile +config.status:1205: creating statistics/Makefile +config.status:1205: creating sum/Makefile +config.status:1205: creating sys/Makefile +config.status:1205: creating test/Makefile +config.status:1205: creating utils/Makefile +config.status:1205: creating vector/Makefile +config.status:1205: creating wavelet/Makefile +config.status:1205: creating config.h +config.status:1386: config.h is unchanged +config.status:1434: executing depfiles commands +config.status:1434: executing libtool commands + +## ---------------- ## +## Cache variables. ## +## ---------------- ## + +ac_cv_build=x86_64-unknown-linux-gnu +ac_cv_c_char_unsigned=no +ac_cv_c_compiler_gnu=yes +ac_cv_c_extended_fp=yes +ac_cv_c_extern_inline=yes +ac_cv_c_fpu_setcw=yes +ac_cv_c_fpu_sse=yes +ac_cv_c_ieee_comparisons=yes +ac_cv_c_ieee_denormals=yes +ac_cv_c_ieee_flags=none +ac_cv_c_ieee_interface=gnux86 +ac_cv_c_inline=inline +ac_cv_c_volatile=yes +ac_cv_decl_exit_success_and_failure=yes +ac_cv_env_CC_set= +ac_cv_env_CC_value= +ac_cv_env_CFLAGS_set= +ac_cv_env_CFLAGS_value= +ac_cv_env_CPPFLAGS_set= +ac_cv_env_CPPFLAGS_value= +ac_cv_env_CPP_set= +ac_cv_env_CPP_value= +ac_cv_env_LDFLAGS_set= +ac_cv_env_LDFLAGS_value= +ac_cv_env_LIBS_set= +ac_cv_env_LIBS_value= +ac_cv_env_build_alias_set= +ac_cv_env_build_alias_value= +ac_cv_env_host_alias_set= +ac_cv_env_host_alias_value= +ac_cv_env_target_alias_set= +ac_cv_env_target_alias_value= +ac_cv_func__doprnt=no +ac_cv_func_memcpy=yes +ac_cv_func_memmove=yes +ac_cv_func_printf_longdouble=yes +ac_cv_func_strdup=yes +ac_cv_func_strtol=yes +ac_cv_func_strtoul=yes +ac_cv_func_vprintf=yes +ac_cv_have_decl_acosh=yes +ac_cv_have_decl_asinh=yes +ac_cv_have_decl_atanh=yes +ac_cv_have_decl_expm1=yes +ac_cv_have_decl_feenableexcept=yes +ac_cv_have_decl_fesettrapenable=no +ac_cv_have_decl_finite=yes +ac_cv_have_decl_fprnd_t=no +ac_cv_have_decl_frexp=yes +ac_cv_have_decl_hypot=yes +ac_cv_have_decl_isfinite=yes +ac_cv_have_decl_isinf=yes +ac_cv_have_decl_isnan=yes +ac_cv_have_decl_ldexp=yes +ac_cv_have_decl_log1p=yes +ac_cv_header_dlfcn_h=yes +ac_cv_header_ieeefp_h=no +ac_cv_header_inttypes_h=yes +ac_cv_header_memory_h=yes +ac_cv_header_stdc=yes +ac_cv_header_stdint_h=yes +ac_cv_header_stdlib_h=yes +ac_cv_header_string_h=yes +ac_cv_header_strings_h=yes +ac_cv_header_sys_stat_h=yes +ac_cv_header_sys_types_h=yes +ac_cv_header_unistd_h=yes +ac_cv_host=x86_64-unknown-linux-gnu +ac_cv_lib_m_cos=yes +ac_cv_objext=o +ac_cv_path_EGREP='/usr/bin/grep -E' +ac_cv_path_FGREP='/usr/bin/grep -F' +ac_cv_path_GREP=/usr/bin/grep +ac_cv_path_SED=/usr/bin/sed +ac_cv_path_install='/usr/bin/install -c' +ac_cv_path_mkdir=/usr/bin/mkdir +ac_cv_prog_AWK=gawk +ac_cv_prog_CPP='gcc -E' +ac_cv_prog_ac_ct_AR=ar +ac_cv_prog_ac_ct_CC=gcc +ac_cv_prog_ac_ct_OBJDUMP=objdump +ac_cv_prog_ac_ct_RANLIB=ranlib +ac_cv_prog_ac_ct_STRIP=strip +ac_cv_prog_cc_c89= +ac_cv_prog_cc_g=yes +ac_cv_prog_make_make_set=yes +ac_cv_type_size_t=yes +am_cv_CC_dependencies_compiler_type=gcc3 +am_cv_make_support_nested_variables=yes +lt_cv_ar_at_file=@ +lt_cv_archive_cmds_need_lc=no +lt_cv_deplibs_check_method=pass_all +lt_cv_file_magic_cmd='$MAGIC_CMD' +lt_cv_file_magic_test_file= +lt_cv_ld_reload_flag=-r +lt_cv_nm_interface='BSD nm' +lt_cv_objdir=.libs +lt_cv_path_LD=/usr/bin/ld +lt_cv_path_NM='/usr/bin/nm -B' +lt_cv_path_mainfest_tool=no +lt_cv_prog_compiler_c_o=yes +lt_cv_prog_compiler_pic='-fPIC -DPIC' +lt_cv_prog_compiler_pic_works=yes +lt_cv_prog_compiler_rtti_exceptions=no +lt_cv_prog_compiler_static_works=no +lt_cv_prog_gnu_ld=yes +lt_cv_sharedlib_from_linklib_cmd='printf %s\n' +lt_cv_shlibpath_overrides_runpath=no +lt_cv_sys_global_symbol_pipe='sed -n -e '\''s/^.*[ ]\([ABCDGIRSTW][ABCDGIRSTW]*\)[ ][ ]*\([_A-Za-z][_A-Za-z0-9]*\)$/\1 \2 \2/p'\'' | sed '\''/ __gnu_lto/d'\''' +lt_cv_sys_global_symbol_to_c_name_address='sed -n -e '\''s/^: \([^ ]*\)[ ]*$/ {\"\1\", (void *) 0},/p'\'' -e '\''s/^[ABCDGIRSTW]* \([^ ]*\) \([^ ]*\)$/ {"\2", (void *) \&\2},/p'\''' +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='sed -n -e '\''s/^: \([^ ]*\)[ ]*$/ {\"\1\", (void *) 0},/p'\'' -e '\''s/^[ABCDGIRSTW]* \([^ ]*\) \(lib[^ ]*\)$/ {"\2", (void *) \&\2},/p'\'' -e '\''s/^[ABCDGIRSTW]* \([^ ]*\) \([^ ]*\)$/ {"lib\2", (void *) \&\2},/p'\''' +lt_cv_sys_global_symbol_to_cdecl='sed -n -e '\''s/^T .* \(.*\)$/extern int \1();/p'\'' -e '\''s/^[ABCDGIRSTW]* .* \(.*\)$/extern char \1;/p'\''' +lt_cv_sys_max_cmd_len=1572864 +lt_cv_to_host_file_cmd=func_convert_file_noop +lt_cv_to_tool_file_cmd=func_convert_file_noop + +## ----------------- ## +## Output variables. ## +## ----------------- ## + +ACLOCAL='${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing aclocal-1.13' +AMDEPBACKSLASH='\' +AMDEP_FALSE='#' +AMDEP_TRUE='' +AMTAR='$${TAR-tar}' +AM_BACKSLASH='\' +AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' +AM_DEFAULT_VERBOSITY='1' +AM_V='$(V)' +AR='ar' +AS='as' +AUTOCONF='${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing autoconf' +AUTOHEADER='${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing autoheader' +AUTOMAKE='${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing automake-1.13' +AWK='gawk' +CC='gcc' +CCDEPMODE='depmode=gcc3' +CFLAGS='-g -O2' +CPP='gcc -E' +CPPFLAGS='' +CYGPATH_W='echo' +DEFS='-DHAVE_CONFIG_H' +DEPDIR='.deps' +DLLTOOL='false' +DSYMUTIL='' +DUMPBIN='' +ECHO_C='' +ECHO_N='-n' +ECHO_T='' +EGREP='/usr/bin/grep -E' +EXEEXT='' +FGREP='/usr/bin/grep -F' +GREP='/usr/bin/grep' +GSLCBLAS_LDFLAGS='' +GSL_CFLAGS='-I${prefix}/include' +GSL_LDFLAGS='' +GSL_LIBADD='' +GSL_LIBM='-lm' +GSL_LIBS='-L${exec_prefix}/lib -lgsl' +GSL_LT_CBLAS_VERSION='0:0:0' +GSL_LT_VERSION='24:0:1' +GSL_MAJOR_VERSION='2' +GSL_MINOR_VERSION='5' +HAVE_AIX_IEEE_INTERFACE='' +HAVE_DARWIN86_IEEE_INTERFACE='' +HAVE_DARWIN_IEEE_INTERFACE='' +HAVE_FREEBSD_IEEE_INTERFACE='' +HAVE_GNUM68K_IEEE_INTERFACE='' +HAVE_GNUPPC_IEEE_INTERFACE='' +HAVE_GNUSPARC_IEEE_INTERFACE='' +HAVE_GNUX86_IEEE_INTERFACE='' +HAVE_HPUX11_IEEE_INTERFACE='' +HAVE_HPUX_IEEE_INTERFACE='' +HAVE_IRIX_IEEE_INTERFACE='' +HAVE_NETBSD_IEEE_INTERFACE='' +HAVE_OPENBSD_IEEE_INTERFACE='' +HAVE_OS2EMX_IEEE_INTERFACE='' +HAVE_SOLARIS_IEEE_INTERFACE='' +HAVE_SUNOS4_IEEE_INTERFACE='' +HAVE_TRU64_IEEE_INTERFACE='' +INSTALL_DATA='${INSTALL} -m 644' +INSTALL_PROGRAM='${INSTALL}' +INSTALL_SCRIPT='${INSTALL}' +INSTALL_STRIP_PROGRAM='$(install_sh) -c -s' +LD='/usr/bin/ld -m elf_x86_64' +LDFLAGS='' +LIBM='-lm' +LIBOBJS='' +LIBS='-lm ' +LIBTOOL='$(SHELL) $(top_builddir)/libtool' +LIPO='' +LN_S='ln -s' +LTLIBOBJS='' +MAINT='#' +MAINTAINER_MODE_FALSE='' +MAINTAINER_MODE_TRUE='#' +MAKEINFO='${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing makeinfo' +MANIFEST_TOOL=':' +MKDIR_P='/usr/bin/mkdir -p' +NM='/usr/bin/nm -B' +NMEDIT='' +OBJDUMP='objdump' +OBJEXT='o' +OTOOL64='' +OTOOL='' +PACKAGE='gsl' +PACKAGE_BUGREPORT='' +PACKAGE_NAME='gsl' +PACKAGE_STRING='gsl 2.5' +PACKAGE_TARNAME='gsl' +PACKAGE_URL='' +PACKAGE_VERSION='2.5' +PATH_SEPARATOR=':' +RANLIB='ranlib' +SED='/usr/bin/sed' +SET_MAKE='' +SHELL='/bin/sh' +STRIP='strip' +VERSION='2.5' +ac_ct_AR='ar' +ac_ct_CC='gcc' +ac_ct_DUMPBIN='' +am__EXEEXT_FALSE='' +am__EXEEXT_TRUE='#' +am__fastdepCC_FALSE='#' +am__fastdepCC_TRUE='' +am__include='include' +am__isrc='' +am__leading_dot='.' +am__nodep='_no' +am__quote='' +am__tar='$${TAR-tar} chof - "$$tardir"' +am__untar='$${TAR-tar} xf -' +bindir='${exec_prefix}/bin' +build='x86_64-unknown-linux-gnu' +build_alias='' +build_cpu='x86_64' +build_os='linux-gnu' +build_vendor='unknown' +datadir='${datarootdir}' +datarootdir='${prefix}/share' +docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' +dvidir='${docdir}' +exec_prefix='${prefix}' +host='x86_64-unknown-linux-gnu' +host_alias='' +host_cpu='x86_64' +host_os='linux-gnu' +host_vendor='unknown' +htmldir='${docdir}' +includedir='${prefix}/include' +infodir='${datarootdir}/info' +install_sh='${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/install-sh' +libdir='${exec_prefix}/lib' +libexecdir='${exec_prefix}/libexec' +localedir='${datarootdir}/locale' +localstatedir='${prefix}/var' +mandir='${datarootdir}/man' +mkdir_p='$(MKDIR_P)' +oldincludedir='/usr/include' +pdfdir='${docdir}' +prefix='/home/groups/kipac/chto/package/gsl/gsl_lib' +program_transform_name='s,x,x,' +psdir='${docdir}' +sbindir='${exec_prefix}/sbin' +sharedstatedir='${prefix}/com' +sysconfdir='${prefix}/etc' +target_alias='' + +## ----------- ## +## confdefs.h. ## +## ----------- ## + +/* confdefs.h */ +#define PACKAGE_NAME "gsl" +#define PACKAGE_TARNAME "gsl" +#define PACKAGE_VERSION "2.5" +#define PACKAGE_STRING "gsl 2.5" +#define PACKAGE_BUGREPORT "" +#define PACKAGE_URL "" +#define PACKAGE "gsl" +#define VERSION "2.5" +#define RELEASED /**/ +#define STDC_HEADERS 1 +#define HAVE_SYS_TYPES_H 1 +#define HAVE_SYS_STAT_H 1 +#define HAVE_STDLIB_H 1 +#define HAVE_STRING_H 1 +#define HAVE_MEMORY_H 1 +#define HAVE_STRINGS_H 1 +#define HAVE_INTTYPES_H 1 +#define HAVE_STDINT_H 1 +#define HAVE_UNISTD_H 1 +#define HAVE_DLFCN_H 1 +#define LT_OBJDIR ".libs/" +#define HAVE_INLINE 1 +#define HAVE_VPRINTF 1 +#define HAVE_MEMCPY 1 +#define HAVE_MEMMOVE 1 +#define HAVE_STRDUP 1 +#define HAVE_STRTOL 1 +#define HAVE_STRTOUL 1 +#define HAVE_EXIT_SUCCESS_AND_FAILURE 1 +#define HAVE_LIBM 1 +#define HAVE_DECL_FEENABLEEXCEPT 1 +#define HAVE_DECL_FESETTRAPENABLE 0 +#define HAVE_DECL_HYPOT 1 +#define HAVE_DECL_EXPM1 1 +#define HAVE_DECL_ACOSH 1 +#define HAVE_DECL_ASINH 1 +#define HAVE_DECL_ATANH 1 +#define HAVE_DECL_LDEXP 1 +#define HAVE_DECL_FREXP 1 +#define HAVE_DECL_FPRND_T 0 +#define HAVE_DECL_ISINF 1 +#define HAVE_DECL_ISFINITE 1 +#define HAVE_DECL_FINITE 1 +#define HAVE_DECL_ISNAN 1 +#define HAVE_DECL_LOG1P 1 +#define HAVE_PRINTF_LONGDOUBLE 1 +#define HAVE_EXTENDED_PRECISION_REGISTERS 1 +#define HAVE_FPU_X86_SSE 1 +#define HAVE_GNUX86_IEEE_INTERFACE 1 +#define HAVE_IEEE_COMPARISONS 1 +#define HAVE_IEEE_DENORMALS 1 + +configure: exit 0 diff --git a/gsl-2.5/config.status b/gsl-2.5/config.status new file mode 100755 index 00000000..f88d0c59 --- /dev/null +++ b/gsl-2.5/config.status @@ -0,0 +1,2172 @@ +#! /bin/sh +# Generated by configure. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +ac_cs_recheck=false +ac_cs_silent=false + +SHELL=${CONFIG_SHELL-/bin/sh} +export SHELL +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi + + +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in #( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in #(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + + +# as_fn_error STATUS ERROR [LINENO LOG_FD] +# ---------------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + $as_echo "$as_me: error: $2" >&2 + as_fn_exit $as_status +} # as_fn_error + + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} # as_fn_mkdir_p +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + + +# as_fn_executable_p FILE +# ----------------------- +# Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} # as_fn_executable_p +as_test_x='test -x' +as_executable_p=as_fn_executable_p + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +exec 6>&1 +## ----------------------------------- ## +## Main body of $CONFIG_STATUS script. ## +## ----------------------------------- ## +# Save the log message, to keep $0 and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. +ac_log=" +This file was extended by gsl $as_me 2.5, which was +generated by GNU Autoconf 2.69. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +on `(hostname || uname -n) 2>/dev/null | sed 1q` +" + +# Files that config.status was made for. +config_files=" Makefile gsl_version.h gsl.spec blas/Makefile block/Makefile bspline/Makefile cblas/Makefile cdf/Makefile cheb/Makefile combination/Makefile complex/Makefile const/Makefile deriv/Makefile dht/Makefile diff/Makefile doc/Makefile doc/examples/Makefile eigen/Makefile err/Makefile fft/Makefile filter/Makefile fit/Makefile gsl/Makefile histogram/Makefile ieee-utils/Makefile integration/Makefile interpolation/Makefile linalg/Makefile matrix/Makefile min/Makefile monte/Makefile movstat/Makefile multifit/Makefile multifit_nlinear/Makefile multilarge/Makefile multilarge_nlinear/Makefile multimin/Makefile multiroots/Makefile multiset/Makefile ntuple/Makefile ode-initval/Makefile ode-initval2/Makefile permutation/Makefile poly/Makefile qrng/Makefile randist/Makefile rng/Makefile roots/Makefile rstat/Makefile siman/Makefile sort/Makefile spblas/Makefile splinalg/Makefile spmatrix/Makefile specfunc/Makefile statistics/Makefile sum/Makefile sys/Makefile test/Makefile utils/Makefile vector/Makefile wavelet/Makefile" +config_headers=" config.h" +config_commands=" depfiles libtool" + +ac_cs_usage="\ +\`$as_me' instantiates files and other configuration actions +from templates according to the current configuration. Unless the files +and actions are specified as TAGs, all are instantiated by default. + +Usage: $0 [OPTION]... [TAG]... + + -h, --help print this help, then exit + -V, --version print version number and configuration settings, then exit + --config print configuration, then exit + -q, --quiet, --silent + do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + --header=FILE[:TEMPLATE] + instantiate the configuration header FILE + +Configuration files: +$config_files + +Configuration headers: +$config_headers + +Configuration commands: +$config_commands + +Report bugs to the package provider." + +ac_cs_config="'--prefix=/home/groups/kipac/chto/package/gsl/gsl_lib/'" +ac_cs_version="\ +gsl config.status 2.5 +configured by ./configure, generated by GNU Autoconf 2.69, + with options \"$ac_cs_config\" + +Copyright (C) 2012 Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." + +ac_pwd='/home/groups/kipac/chto/package/gsl/gsl-2.5' +srcdir='.' +INSTALL='/usr/bin/install -c' +MKDIR_P='/usr/bin/mkdir -p' +AWK='gawk' +test -n "$AWK" || AWK=awk +# The default lists apply if the user does not specify any file. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=?*) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` + ac_shift=: + ;; + --*=) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg= + ac_shift=: + ;; + *) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; + esac + + case $ac_option in + # Handling of the options. + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) + $as_echo "$ac_cs_version"; exit ;; + --config | --confi | --conf | --con | --co | --c ) + $as_echo "$ac_cs_config"; exit ;; + --debug | --debu | --deb | --de | --d | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + '') as_fn_error $? "missing file argument" ;; + esac + as_fn_append CONFIG_FILES " '$ac_optarg'" + ac_need_defaults=false;; + --header | --heade | --head | --hea ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + as_fn_append CONFIG_HEADERS " '$ac_optarg'" + ac_need_defaults=false;; + --he | --h) + # Conflict between --help and --header + as_fn_error $? "ambiguous option: \`$1' +Try \`$0 --help' for more information.";; + --help | --hel | -h ) + $as_echo "$ac_cs_usage"; exit ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) as_fn_error $? "unrecognized option: \`$1' +Try \`$0 --help' for more information." ;; + + *) as_fn_append ac_config_targets " $1" + ac_need_defaults=false ;; + + esac + shift +done + +ac_configure_extra_args= + +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +fi + +if $ac_cs_recheck; then + set X /bin/sh './configure' '--prefix=/home/groups/kipac/chto/package/gsl/gsl_lib/' $ac_configure_extra_args --no-create --no-recursion + shift + $as_echo "running CONFIG_SHELL=/bin/sh $*" >&6 + CONFIG_SHELL='/bin/sh' + export CONFIG_SHELL + exec "$@" +fi + +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX + $as_echo "$ac_log" +} >&5 + +# +# INIT-COMMANDS +# +AMDEP_TRUE="" ac_aux_dir="." + + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +sed_quote_subst='s/\(["`$\\]\)/\\\1/g' +double_quote_subst='s/\(["`\\]\)/\\\1/g' +delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' +macro_version='2.4.2' +macro_revision='1.3337' +AS='as' +DLLTOOL='false' +OBJDUMP='objdump' +enable_shared='yes' +enable_static='yes' +pic_mode='default' +enable_fast_install='yes' +SHELL='/bin/sh' +ECHO='printf %s\n' +PATH_SEPARATOR=':' +host_alias='' +host='x86_64-unknown-linux-gnu' +host_os='linux-gnu' +build_alias='' +build='x86_64-unknown-linux-gnu' +build_os='linux-gnu' +SED='/usr/bin/sed' +Xsed='/usr/bin/sed -e 1s/^X//' +GREP='/usr/bin/grep' +EGREP='/usr/bin/grep -E' +FGREP='/usr/bin/grep -F' +LD='/usr/bin/ld -m elf_x86_64' +NM='/usr/bin/nm -B' +LN_S='ln -s' +max_cmd_len='1572864' +ac_objext='o' +exeext='' +lt_unset='unset' +lt_SP2NL='tr \040 \012' +lt_NL2SP='tr \015\012 \040\040' +lt_cv_to_host_file_cmd='func_convert_file_noop' +lt_cv_to_tool_file_cmd='func_convert_file_noop' +reload_flag=' -r' +reload_cmds='$LD$reload_flag -o $output$reload_objs' +deplibs_check_method='pass_all' +file_magic_cmd='$MAGIC_CMD' +file_magic_glob='' +want_nocaseglob='no' +sharedlib_from_linklib_cmd='printf %s\n' +AR='ar' +AR_FLAGS='cru' +archiver_list_spec='@' +STRIP='strip' +RANLIB='ranlib' +old_postinstall_cmds='chmod 644 $oldlib~$RANLIB $tool_oldlib' +old_postuninstall_cmds='' +old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs~$RANLIB $tool_oldlib' +lock_old_archive_extraction='no' +CC='gcc' +CFLAGS='-g -O2' +compiler='gcc' +GCC='yes' +lt_cv_sys_global_symbol_pipe='sed -n -e '\''s/^.*[ ]\([ABCDGIRSTW][ABCDGIRSTW]*\)[ ][ ]*\([_A-Za-z][_A-Za-z0-9]*\)$/\1 \2 \2/p'\'' | sed '\''/ __gnu_lto/d'\''' +lt_cv_sys_global_symbol_to_cdecl='sed -n -e '\''s/^T .* \(.*\)$/extern int \1();/p'\'' -e '\''s/^[ABCDGIRSTW]* .* \(.*\)$/extern char \1;/p'\''' +lt_cv_sys_global_symbol_to_c_name_address='sed -n -e '\''s/^: \([^ ]*\)[ ]*$/ {\"\1\", (void *) 0},/p'\'' -e '\''s/^[ABCDGIRSTW]* \([^ ]*\) \([^ ]*\)$/ {"\2", (void *) \&\2},/p'\''' +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='sed -n -e '\''s/^: \([^ ]*\)[ ]*$/ {\"\1\", (void *) 0},/p'\'' -e '\''s/^[ABCDGIRSTW]* \([^ ]*\) \(lib[^ ]*\)$/ {"\2", (void *) \&\2},/p'\'' -e '\''s/^[ABCDGIRSTW]* \([^ ]*\) \([^ ]*\)$/ {"lib\2", (void *) \&\2},/p'\''' +nm_file_list_spec='@' +lt_sysroot='' +objdir='.libs' +MAGIC_CMD='file' +lt_prog_compiler_no_builtin_flag=' -fno-builtin' +lt_prog_compiler_pic=' -fPIC -DPIC' +lt_prog_compiler_wl='-Wl,' +lt_prog_compiler_static='' +lt_cv_prog_compiler_c_o='yes' +need_locks='no' +MANIFEST_TOOL=':' +DSYMUTIL='' +NMEDIT='' +LIPO='' +OTOOL='' +OTOOL64='' +libext='a' +shrext_cmds='.so' +extract_expsyms_cmds='' +archive_cmds_need_lc='no' +enable_shared_with_static_runtimes='no' +export_dynamic_flag_spec='${wl}--export-dynamic' +whole_archive_flag_spec='${wl}--whole-archive$convenience ${wl}--no-whole-archive' +compiler_needs_object='no' +old_archive_from_new_cmds='' +old_archive_from_expsyms_cmds='' +archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' +archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' +module_cmds='' +module_expsym_cmds='' +with_gnu_ld='yes' +allow_undefined_flag='' +no_undefined_flag='' +hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' +hardcode_libdir_separator='' +hardcode_direct='no' +hardcode_direct_absolute='no' +hardcode_minus_L='no' +hardcode_shlibpath_var='unsupported' +hardcode_automatic='no' +inherit_rpath='no' +link_all_deplibs='unknown' +always_export_symbols='no' +export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' +exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' +include_expsyms='' +prelink_cmds='' +postlink_cmds='' +file_list_spec='' +variables_saved_for_relink='PATH LD_LIBRARY_PATH LD_RUN_PATH GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH' +need_lib_prefix='no' +need_version='no' +version_type='linux' +runpath_var='LD_RUN_PATH' +shlibpath_var='LD_LIBRARY_PATH' +shlibpath_overrides_runpath='no' +libname_spec='lib$name' +library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +soname_spec='${libname}${release}${shared_ext}$major' +install_override_mode='' +postinstall_cmds='' +postuninstall_cmds='' +finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' +finish_eval='' +hardcode_into_libs='yes' +sys_lib_search_path_spec='/usr/lib/gcc/x86_64-redhat-linux/4.8.5 /usr/lib64 /lib64 /share/software/user/open/curl/7.54.0/lib /share/software/user/open/libressl/2.5.3/lib /home/users/chto/lib/cfitsio/lib /home/users/chto/lib /share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64 /share/software/user/open/fftw/3.3.6/lib /share/software/user/restricted/ifort/2019/lib/intel64 /share/software/user/open/gsl/2.3/lib ' +sys_lib_dlsearch_path_spec='/lib64 /usr/lib64 /lib /usr/lib /opt/dell/srvadmin/lib64 /opt/dell/srvadmin/lib64 /opt/dell/srvadmin/lib64/srvadmin-idrac7 ' +hardcode_action='immediate' +enable_dlopen='unknown' +enable_dlopen_self='unknown' +enable_dlopen_self_static='unknown' +old_striplib='strip --strip-debug' +striplib='strip --strip-unneeded' + +LTCC='gcc' +LTCFLAGS='-g -O2' +compiler='gcc' + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + +# Quote evaled strings. +for var in AS DLLTOOL OBJDUMP SHELL ECHO PATH_SEPARATOR SED GREP EGREP FGREP LD NM LN_S lt_SP2NL lt_NL2SP reload_flag deplibs_check_method file_magic_cmd file_magic_glob want_nocaseglob sharedlib_from_linklib_cmd AR AR_FLAGS archiver_list_spec STRIP RANLIB CC CFLAGS compiler lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl lt_cv_sys_global_symbol_to_c_name_address lt_cv_sys_global_symbol_to_c_name_address_lib_prefix nm_file_list_spec lt_prog_compiler_no_builtin_flag lt_prog_compiler_pic lt_prog_compiler_wl lt_prog_compiler_static lt_cv_prog_compiler_c_o need_locks MANIFEST_TOOL DSYMUTIL NMEDIT LIPO OTOOL OTOOL64 shrext_cmds export_dynamic_flag_spec whole_archive_flag_spec compiler_needs_object with_gnu_ld allow_undefined_flag no_undefined_flag hardcode_libdir_flag_spec hardcode_libdir_separator exclude_expsyms include_expsyms file_list_spec variables_saved_for_relink libname_spec library_names_spec soname_spec install_override_mode finish_eval old_striplib striplib; do + case `eval \\$ECHO \\""\\$$var"\\"` in + *[\\\`\"\$]*) + eval "lt_$var=\\\"\`\$ECHO \"\$$var\" | \$SED \"\$sed_quote_subst\"\`\\\"" + ;; + *) + eval "lt_$var=\\\"\$$var\\\"" + ;; + esac +done + +# Double-quote double-evaled strings. +for var in reload_cmds old_postinstall_cmds old_postuninstall_cmds old_archive_cmds extract_expsyms_cmds old_archive_from_new_cmds old_archive_from_expsyms_cmds archive_cmds archive_expsym_cmds module_cmds module_expsym_cmds export_symbols_cmds prelink_cmds postlink_cmds postinstall_cmds postuninstall_cmds finish_cmds sys_lib_search_path_spec sys_lib_dlsearch_path_spec; do + case `eval \\$ECHO \\""\\$$var"\\"` in + *[\\\`\"\$]*) + eval "lt_$var=\\\"\`\$ECHO \"\$$var\" | \$SED -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" + ;; + *) + eval "lt_$var=\\\"\$$var\\\"" + ;; + esac +done + +ac_aux_dir='.' +xsi_shell='yes' +lt_shell_append='yes' + +# See if we are running on zsh, and set the options which allow our +# commands through without removal of \ escapes INIT. +if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST +fi + + + PACKAGE='gsl' + VERSION='2.5' + TIMESTAMP='' + RM='rm -f' + ofile='libtool' + + + + + +# Handling of arguments. +for ac_config_target in $ac_config_targets +do + case $ac_config_target in + "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; + "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; + "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; + "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; + "gsl_version.h") CONFIG_FILES="$CONFIG_FILES gsl_version.h" ;; + "gsl.spec") CONFIG_FILES="$CONFIG_FILES gsl.spec" ;; + "blas/Makefile") CONFIG_FILES="$CONFIG_FILES blas/Makefile" ;; + "block/Makefile") CONFIG_FILES="$CONFIG_FILES block/Makefile" ;; + "bspline/Makefile") CONFIG_FILES="$CONFIG_FILES bspline/Makefile" ;; + "cblas/Makefile") CONFIG_FILES="$CONFIG_FILES cblas/Makefile" ;; + "cdf/Makefile") CONFIG_FILES="$CONFIG_FILES cdf/Makefile" ;; + "cheb/Makefile") CONFIG_FILES="$CONFIG_FILES cheb/Makefile" ;; + "combination/Makefile") CONFIG_FILES="$CONFIG_FILES combination/Makefile" ;; + "complex/Makefile") CONFIG_FILES="$CONFIG_FILES complex/Makefile" ;; + "const/Makefile") CONFIG_FILES="$CONFIG_FILES const/Makefile" ;; + "deriv/Makefile") CONFIG_FILES="$CONFIG_FILES deriv/Makefile" ;; + "dht/Makefile") CONFIG_FILES="$CONFIG_FILES dht/Makefile" ;; + "diff/Makefile") CONFIG_FILES="$CONFIG_FILES diff/Makefile" ;; + "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; + "doc/examples/Makefile") CONFIG_FILES="$CONFIG_FILES doc/examples/Makefile" ;; + "eigen/Makefile") CONFIG_FILES="$CONFIG_FILES eigen/Makefile" ;; + "err/Makefile") CONFIG_FILES="$CONFIG_FILES err/Makefile" ;; + "fft/Makefile") CONFIG_FILES="$CONFIG_FILES fft/Makefile" ;; + "filter/Makefile") CONFIG_FILES="$CONFIG_FILES filter/Makefile" ;; + "fit/Makefile") CONFIG_FILES="$CONFIG_FILES fit/Makefile" ;; + "gsl/Makefile") CONFIG_FILES="$CONFIG_FILES gsl/Makefile" ;; + "histogram/Makefile") CONFIG_FILES="$CONFIG_FILES histogram/Makefile" ;; + "ieee-utils/Makefile") CONFIG_FILES="$CONFIG_FILES ieee-utils/Makefile" ;; + "integration/Makefile") CONFIG_FILES="$CONFIG_FILES integration/Makefile" ;; + "interpolation/Makefile") CONFIG_FILES="$CONFIG_FILES interpolation/Makefile" ;; + "linalg/Makefile") CONFIG_FILES="$CONFIG_FILES linalg/Makefile" ;; + "matrix/Makefile") CONFIG_FILES="$CONFIG_FILES matrix/Makefile" ;; + "min/Makefile") CONFIG_FILES="$CONFIG_FILES min/Makefile" ;; + "monte/Makefile") CONFIG_FILES="$CONFIG_FILES monte/Makefile" ;; + "movstat/Makefile") CONFIG_FILES="$CONFIG_FILES movstat/Makefile" ;; + "multifit/Makefile") CONFIG_FILES="$CONFIG_FILES multifit/Makefile" ;; + "multifit_nlinear/Makefile") CONFIG_FILES="$CONFIG_FILES multifit_nlinear/Makefile" ;; + "multilarge/Makefile") CONFIG_FILES="$CONFIG_FILES multilarge/Makefile" ;; + "multilarge_nlinear/Makefile") CONFIG_FILES="$CONFIG_FILES multilarge_nlinear/Makefile" ;; + "multimin/Makefile") CONFIG_FILES="$CONFIG_FILES multimin/Makefile" ;; + "multiroots/Makefile") CONFIG_FILES="$CONFIG_FILES multiroots/Makefile" ;; + "multiset/Makefile") CONFIG_FILES="$CONFIG_FILES multiset/Makefile" ;; + "ntuple/Makefile") CONFIG_FILES="$CONFIG_FILES ntuple/Makefile" ;; + "ode-initval/Makefile") CONFIG_FILES="$CONFIG_FILES ode-initval/Makefile" ;; + "ode-initval2/Makefile") CONFIG_FILES="$CONFIG_FILES ode-initval2/Makefile" ;; + "permutation/Makefile") CONFIG_FILES="$CONFIG_FILES permutation/Makefile" ;; + "poly/Makefile") CONFIG_FILES="$CONFIG_FILES poly/Makefile" ;; + "qrng/Makefile") CONFIG_FILES="$CONFIG_FILES qrng/Makefile" ;; + "randist/Makefile") CONFIG_FILES="$CONFIG_FILES randist/Makefile" ;; + "rng/Makefile") CONFIG_FILES="$CONFIG_FILES rng/Makefile" ;; + "roots/Makefile") CONFIG_FILES="$CONFIG_FILES roots/Makefile" ;; + "rstat/Makefile") CONFIG_FILES="$CONFIG_FILES rstat/Makefile" ;; + "siman/Makefile") CONFIG_FILES="$CONFIG_FILES siman/Makefile" ;; + "sort/Makefile") CONFIG_FILES="$CONFIG_FILES sort/Makefile" ;; + "spblas/Makefile") CONFIG_FILES="$CONFIG_FILES spblas/Makefile" ;; + "splinalg/Makefile") CONFIG_FILES="$CONFIG_FILES splinalg/Makefile" ;; + "spmatrix/Makefile") CONFIG_FILES="$CONFIG_FILES spmatrix/Makefile" ;; + "specfunc/Makefile") CONFIG_FILES="$CONFIG_FILES specfunc/Makefile" ;; + "statistics/Makefile") CONFIG_FILES="$CONFIG_FILES statistics/Makefile" ;; + "sum/Makefile") CONFIG_FILES="$CONFIG_FILES sum/Makefile" ;; + "sys/Makefile") CONFIG_FILES="$CONFIG_FILES sys/Makefile" ;; + "test/Makefile") CONFIG_FILES="$CONFIG_FILES test/Makefile" ;; + "utils/Makefile") CONFIG_FILES="$CONFIG_FILES utils/Makefile" ;; + "vector/Makefile") CONFIG_FILES="$CONFIG_FILES vector/Makefile" ;; + "wavelet/Makefile") CONFIG_FILES="$CONFIG_FILES wavelet/Makefile" ;; + + *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; + esac +done + + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files + test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers + test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands +fi + +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason against having it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Hook for its removal unless debugging. +# Note that there is a small window in which the directory will not be cleaned: +# after its creation but before its name has been assigned to `$tmp'. +$debug || +{ + tmp= ac_tmp= + trap 'exit_status=$? + : "${ac_tmp:=$tmp}" + { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status +' 0 + trap 'as_fn_exit 1' 1 2 13 15 +} +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && + test -d "$tmp" +} || +{ + tmp=./conf$$-$RANDOM + (umask 077 && mkdir "$tmp") +} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 +ac_tmp=$tmp + +# Set up the scripts for CONFIG_FILES section. +# No need to generate them if there are no CONFIG_FILES. +# This happens for instance with `./config.status config.h'. +if test -n "$CONFIG_FILES"; then + + +ac_cr=`echo X | tr X '\015'` +# On cygwin, bash can eat \r inside `` if the user requested igncr. +# But we know of no other shell where ac_cr would be empty at this +# point, so we can use a bashism as a fallback. +if test "x$ac_cr" = x; then + eval ac_cr=\$\'\\r\' +fi +ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` +if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then + ac_cs_awk_cr='\\r' +else + ac_cs_awk_cr=$ac_cr +fi + +echo 'BEGIN {' >"$ac_tmp/subs1.awk" && +cat >>"$ac_tmp/subs1.awk" <<\_ACAWK && +S["am__EXEEXT_FALSE"]="" +S["am__EXEEXT_TRUE"]="#" +S["LTLIBOBJS"]="" +S["HAVE_DARWIN86_IEEE_INTERFACE"]="" +S["HAVE_DARWIN_IEEE_INTERFACE"]="" +S["HAVE_OPENBSD_IEEE_INTERFACE"]="" +S["HAVE_NETBSD_IEEE_INTERFACE"]="" +S["HAVE_OS2EMX_IEEE_INTERFACE"]="" +S["HAVE_FREEBSD_IEEE_INTERFACE"]="" +S["HAVE_AIX_IEEE_INTERFACE"]="" +S["HAVE_IRIX_IEEE_INTERFACE"]="" +S["HAVE_TRU64_IEEE_INTERFACE"]="" +S["HAVE_HPUX_IEEE_INTERFACE"]="" +S["HAVE_HPUX11_IEEE_INTERFACE"]="" +S["HAVE_SOLARIS_IEEE_INTERFACE"]="" +S["HAVE_SUNOS4_IEEE_INTERFACE"]="" +S["HAVE_GNUX86_IEEE_INTERFACE"]="" +S["HAVE_GNUPPC_IEEE_INTERFACE"]="" +S["HAVE_GNUM68K_IEEE_INTERFACE"]="" +S["HAVE_GNUSPARC_IEEE_INTERFACE"]="" +S["LIBOBJS"]="" +S["GSL_LIBADD"]="" +S["GSL_LDFLAGS"]="" +S["GSLCBLAS_LDFLAGS"]="" +S["GSL_LIBM"]="-lm" +S["GSL_LIBS"]="-L${exec_prefix}/lib -lgsl" +S["GSL_CFLAGS"]="-I${prefix}/include" +S["LIBM"]="-lm" +S["OTOOL64"]="" +S["OTOOL"]="" +S["LIPO"]="" +S["NMEDIT"]="" +S["DSYMUTIL"]="" +S["MANIFEST_TOOL"]=":" +S["RANLIB"]="ranlib" +S["ac_ct_AR"]="ar" +S["AR"]="ar" +S["NM"]="/usr/bin/nm -B" +S["ac_ct_DUMPBIN"]="" +S["DUMPBIN"]="" +S["LD"]="/usr/bin/ld -m elf_x86_64" +S["FGREP"]="/usr/bin/grep -F" +S["EGREP"]="/usr/bin/grep -E" +S["GREP"]="/usr/bin/grep" +S["LIBTOOL"]="$(SHELL) $(top_builddir)/libtool" +S["OBJDUMP"]="objdump" +S["DLLTOOL"]="false" +S["AS"]="as" +S["LN_S"]="ln -s" +S["CPP"]="gcc -E" +S["am__fastdepCC_FALSE"]="#" +S["am__fastdepCC_TRUE"]="" +S["CCDEPMODE"]="depmode=gcc3" +S["am__nodep"]="_no" +S["AMDEPBACKSLASH"]="\\" +S["AMDEP_FALSE"]="#" +S["AMDEP_TRUE"]="" +S["am__quote"]="" +S["am__include"]="include" +S["DEPDIR"]=".deps" +S["OBJEXT"]="o" +S["EXEEXT"]="" +S["ac_ct_CC"]="gcc" +S["CPPFLAGS"]="" +S["LDFLAGS"]="" +S["CFLAGS"]="-g -O2" +S["CC"]="gcc" +S["host_os"]="linux-gnu" +S["host_vendor"]="unknown" +S["host_cpu"]="x86_64" +S["host"]="x86_64-unknown-linux-gnu" +S["build_os"]="linux-gnu" +S["build_vendor"]="unknown" +S["build_cpu"]="x86_64" +S["build"]="x86_64-unknown-linux-gnu" +S["GSL_MINOR_VERSION"]="5" +S["GSL_MAJOR_VERSION"]="2" +S["SED"]="/usr/bin/sed" +S["GSL_LT_CBLAS_VERSION"]="0:0:0" +S["GSL_LT_VERSION"]="24:0:1" +S["MAINT"]="#" +S["MAINTAINER_MODE_FALSE"]="" +S["MAINTAINER_MODE_TRUE"]="#" +S["AM_BACKSLASH"]="\\" +S["AM_DEFAULT_VERBOSITY"]="1" +S["AM_DEFAULT_V"]="$(AM_DEFAULT_VERBOSITY)" +S["AM_V"]="$(V)" +S["am__untar"]="$${TAR-tar} xf -" +S["am__tar"]="$${TAR-tar} chof - \"$$tardir\"" +S["AMTAR"]="$${TAR-tar}" +S["am__leading_dot"]="." +S["SET_MAKE"]="" +S["AWK"]="gawk" +S["mkdir_p"]="$(MKDIR_P)" +S["MKDIR_P"]="/usr/bin/mkdir -p" +S["INSTALL_STRIP_PROGRAM"]="$(install_sh) -c -s" +S["STRIP"]="strip" +S["install_sh"]="${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/install-sh" +S["MAKEINFO"]="${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing makeinfo" +S["AUTOHEADER"]="${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing autoheader" +S["AUTOMAKE"]="${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing automake-1.13" +S["AUTOCONF"]="${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing autoconf" +S["ACLOCAL"]="${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing aclocal-1.13" +S["VERSION"]="2.5" +S["PACKAGE"]="gsl" +S["CYGPATH_W"]="echo" +S["am__isrc"]="" +S["INSTALL_DATA"]="${INSTALL} -m 644" +S["INSTALL_SCRIPT"]="${INSTALL}" +S["INSTALL_PROGRAM"]="${INSTALL}" +S["target_alias"]="" +S["host_alias"]="" +S["build_alias"]="" +S["LIBS"]="-lm " +S["ECHO_T"]="" +S["ECHO_N"]="-n" +S["ECHO_C"]="" +S["DEFS"]="-DHAVE_CONFIG_H" +S["mandir"]="${datarootdir}/man" +S["localedir"]="${datarootdir}/locale" +S["libdir"]="${exec_prefix}/lib" +S["psdir"]="${docdir}" +S["pdfdir"]="${docdir}" +S["dvidir"]="${docdir}" +S["htmldir"]="${docdir}" +S["infodir"]="${datarootdir}/info" +S["docdir"]="${datarootdir}/doc/${PACKAGE_TARNAME}" +S["oldincludedir"]="/usr/include" +S["includedir"]="${prefix}/include" +S["localstatedir"]="${prefix}/var" +S["sharedstatedir"]="${prefix}/com" +S["sysconfdir"]="${prefix}/etc" +S["datadir"]="${datarootdir}" +S["datarootdir"]="${prefix}/share" +S["libexecdir"]="${exec_prefix}/libexec" +S["sbindir"]="${exec_prefix}/sbin" +S["bindir"]="${exec_prefix}/bin" +S["program_transform_name"]="s,x,x," +S["prefix"]="/home/groups/kipac/chto/package/gsl/gsl_lib" +S["exec_prefix"]="${prefix}" +S["PACKAGE_URL"]="" +S["PACKAGE_BUGREPORT"]="" +S["PACKAGE_STRING"]="gsl 2.5" +S["PACKAGE_VERSION"]="2.5" +S["PACKAGE_TARNAME"]="gsl" +S["PACKAGE_NAME"]="gsl" +S["PATH_SEPARATOR"]=":" +S["SHELL"]="/bin/sh" +_ACAWK +cat >>"$ac_tmp/subs1.awk" <<_ACAWK && + for (key in S) S_is_set[key] = 1 + FS = "" + +} +{ + line = $ 0 + nfields = split(line, field, "@") + substed = 0 + len = length(field[1]) + for (i = 2; i < nfields; i++) { + key = field[i] + keylen = length(key) + if (S_is_set[key]) { + value = S[key] + line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) + len += length(value) + length(field[++i]) + substed = 1 + } else + len += 1 + keylen + } + + print line +} + +_ACAWK +if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then + sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" +else + cat +fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ + || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 +fi # test -n "$CONFIG_FILES" + +# Set up the scripts for CONFIG_HEADERS section. +# No need to generate them if there are no CONFIG_HEADERS. +# This happens for instance with `./config.status Makefile'. +if test -n "$CONFIG_HEADERS"; then +cat >"$ac_tmp/defines.awk" <<\_ACAWK || +BEGIN { +D["PACKAGE_NAME"]=" \"gsl\"" +D["PACKAGE_TARNAME"]=" \"gsl\"" +D["PACKAGE_VERSION"]=" \"2.5\"" +D["PACKAGE_STRING"]=" \"gsl 2.5\"" +D["PACKAGE_BUGREPORT"]=" \"\"" +D["PACKAGE_URL"]=" \"\"" +D["PACKAGE"]=" \"gsl\"" +D["VERSION"]=" \"2.5\"" +D["RELEASED"]=" /**/" +D["STDC_HEADERS"]=" 1" +D["HAVE_SYS_TYPES_H"]=" 1" +D["HAVE_SYS_STAT_H"]=" 1" +D["HAVE_STDLIB_H"]=" 1" +D["HAVE_STRING_H"]=" 1" +D["HAVE_MEMORY_H"]=" 1" +D["HAVE_STRINGS_H"]=" 1" +D["HAVE_INTTYPES_H"]=" 1" +D["HAVE_STDINT_H"]=" 1" +D["HAVE_UNISTD_H"]=" 1" +D["HAVE_DLFCN_H"]=" 1" +D["LT_OBJDIR"]=" \".libs/\"" +D["HAVE_INLINE"]=" 1" +D["HAVE_VPRINTF"]=" 1" +D["HAVE_MEMCPY"]=" 1" +D["HAVE_MEMMOVE"]=" 1" +D["HAVE_STRDUP"]=" 1" +D["HAVE_STRTOL"]=" 1" +D["HAVE_STRTOUL"]=" 1" +D["HAVE_EXIT_SUCCESS_AND_FAILURE"]=" 1" +D["HAVE_LIBM"]=" 1" +D["HAVE_DECL_FEENABLEEXCEPT"]=" 1" +D["HAVE_DECL_FESETTRAPENABLE"]=" 0" +D["HAVE_DECL_HYPOT"]=" 1" +D["HAVE_DECL_EXPM1"]=" 1" +D["HAVE_DECL_ACOSH"]=" 1" +D["HAVE_DECL_ASINH"]=" 1" +D["HAVE_DECL_ATANH"]=" 1" +D["HAVE_DECL_LDEXP"]=" 1" +D["HAVE_DECL_FREXP"]=" 1" +D["HAVE_DECL_FPRND_T"]=" 0" +D["HAVE_DECL_ISINF"]=" 1" +D["HAVE_DECL_ISFINITE"]=" 1" +D["HAVE_DECL_FINITE"]=" 1" +D["HAVE_DECL_ISNAN"]=" 1" +D["HAVE_DECL_LOG1P"]=" 1" +D["HAVE_PRINTF_LONGDOUBLE"]=" 1" +D["HAVE_EXTENDED_PRECISION_REGISTERS"]=" 1" +D["HAVE_FPU_X86_SSE"]=" 1" +D["HAVE_GNUX86_IEEE_INTERFACE"]=" 1" +D["HAVE_IEEE_COMPARISONS"]=" 1" +D["HAVE_IEEE_DENORMALS"]=" 1" + for (key in D) D_is_set[key] = 1 + FS = "" +} +/^[\t ]*#[\t ]*(define|undef)[\t ]+[_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ][_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789]*([\t (]|$)/ { + line = $ 0 + split(line, arg, " ") + if (arg[1] == "#") { + defundef = arg[2] + mac1 = arg[3] + } else { + defundef = substr(arg[1], 2) + mac1 = arg[2] + } + split(mac1, mac2, "(") #) + macro = mac2[1] + prefix = substr(line, 1, index(line, defundef) - 1) + if (D_is_set[macro]) { + # Preserve the white space surrounding the "#". + print prefix "define", macro P[macro] D[macro] + next + } else { + # Replace #undef with comments. This is necessary, for example, + # in the case of _POSIX_SOURCE, which is predefined and required + # on some systems where configure will not decide to define it. + if (defundef == "undef") { + print "/*", prefix defundef, macro, "*/" + next + } + } +} +{ print } +_ACAWK + as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 +fi # test -n "$CONFIG_HEADERS" + + +eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" +shift +for ac_tag +do + case $ac_tag in + :[FHLC]) ac_mode=$ac_tag; continue;; + esac + case $ac_mode$ac_tag in + :[FHL]*:*);; + :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; + :[FH]-) ac_tag=-:-;; + :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; + esac + ac_save_IFS=$IFS + IFS=: + set x $ac_tag + IFS=$ac_save_IFS + shift + ac_file=$1 + shift + + case $ac_mode in + :L) ac_source=$1;; + :[FH]) + ac_file_inputs= + for ac_f + do + case $ac_f in + -) ac_f="$ac_tmp/stdin";; + *) # Look for the file first in the build tree, then in the source tree + # (if the path is not absolute). The absolute path cannot be DOS-style, + # because $ac_f cannot contain `:'. + test -f "$ac_f" || + case $ac_f in + [\\/$]*) false;; + *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; + esac || + as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; + esac + case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac + as_fn_append ac_file_inputs " '$ac_f'" + done + + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + configure_input='Generated from '` + $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' + `' by configure.' + if test x"$ac_file" != x-; then + configure_input="$ac_file. $configure_input" + { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 +$as_echo "$as_me: creating $ac_file" >&6;} + fi + # Neutralize special characters interpreted by sed in replacement strings. + case $configure_input in #( + *\&* | *\|* | *\\* ) + ac_sed_conf_input=`$as_echo "$configure_input" | + sed 's/[\\\\&|]/\\\\&/g'`;; #( + *) ac_sed_conf_input=$configure_input;; + esac + + case $ac_tag in + *:-:* | *:-) cat >"$ac_tmp/stdin" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; + esac + ;; + esac + + ac_dir=`$as_dirname -- "$ac_file" || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + as_dir="$ac_dir"; as_fn_mkdir_p + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + + case $ac_mode in + :F) + # + # CONFIG_FILE + # + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; + esac + ac_MKDIR_P=$MKDIR_P + case $MKDIR_P in + [\\/$]* | ?:[\\/]* ) ;; + */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; + esac +# If the template does not know about datarootdir, expand it. +# FIXME: This hack should be removed a few years after 2.60. +ac_datarootdir_hack=; ac_datarootdir_seen= +ac_sed_dataroot=' +/datarootdir/ { + p + q +} +/@datadir@/p +/@docdir@/p +/@infodir@/p +/@localedir@/p +/@mandir@/p' +case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in +*datarootdir*) ac_datarootdir_seen=yes;; +*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} + ac_datarootdir_hack=' + s&@datadir@&${datarootdir}&g + s&@docdir@&${datarootdir}/doc/${PACKAGE_TARNAME}&g + s&@infodir@&${datarootdir}/info&g + s&@localedir@&${datarootdir}/locale&g + s&@mandir@&${datarootdir}/man&g + s&\${datarootdir}&${prefix}/share&g' ;; +esac +ac_sed_extra="/^[ ]*VPATH[ ]*=[ ]*/{ +h +s/// +s/^/:/ +s/[ ]*$/:/ +s/:\$(srcdir):/:/g +s/:\${srcdir}:/:/g +s/:@srcdir@:/:/g +s/^:*// +s/:*$// +x +s/\(=[ ]*\).*/\1/ +G +s/\n// +s/^[^=]*=[ ]*$// +} + +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s|@configure_input@|$ac_sed_conf_input|;t t +s&@top_builddir@&$ac_top_builddir_sub&;t t +s&@top_build_prefix@&$ac_top_build_prefix&;t t +s&@srcdir@&$ac_srcdir&;t t +s&@abs_srcdir@&$ac_abs_srcdir&;t t +s&@top_srcdir@&$ac_top_srcdir&;t t +s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t +s&@builddir@&$ac_builddir&;t t +s&@abs_builddir@&$ac_abs_builddir&;t t +s&@abs_top_builddir@&$ac_abs_top_builddir&;t t +s&@INSTALL@&$ac_INSTALL&;t t +s&@MKDIR_P@&$ac_MKDIR_P&;t t +$ac_datarootdir_hack +" +eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ + >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + +test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && + { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && + { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ + "$ac_tmp/out"`; test -z "$ac_out"; } && + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&5 +$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&2;} + + rm -f "$ac_tmp/stdin" + case $ac_file in + -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; + *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; + esac \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + ;; + :H) + # + # CONFIG_HEADER + # + if test x"$ac_file" != x-; then + { + $as_echo "/* $configure_input */" \ + && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" + } >"$ac_tmp/config.h" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then + { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 +$as_echo "$as_me: $ac_file is unchanged" >&6;} + else + rm -f "$ac_file" + mv "$ac_tmp/config.h" "$ac_file" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + fi + else + $as_echo "/* $configure_input */" \ + && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ + || as_fn_error $? "could not create -" "$LINENO" 5 + fi +# Compute "$ac_file"'s index in $config_headers. +_am_arg="$ac_file" +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $_am_arg | $_am_arg:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || +$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$_am_arg" : 'X\(//\)[^/]' \| \ + X"$_am_arg" : 'X\(//\)$' \| \ + X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$_am_arg" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'`/stamp-h$_am_stamp_count + ;; + + :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 +$as_echo "$as_me: executing $ac_file commands" >&6;} + ;; + esac + + + case $ac_file$ac_mode in + "depfiles":C) test x"$AMDEP_TRUE" != x"" || { + # Older Autoconf quotes --file arguments for eval, but not when files + # are listed without --file. Let's play safe and only enable the eval + # if we detect the quoting. + case $CONFIG_FILES in + *\'*) eval set x "$CONFIG_FILES" ;; + *) set x $CONFIG_FILES ;; + esac + shift + for mf + do + # Strip MF so we end up with the name of the file. + mf=`echo "$mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile or not. + # We used to match only the files named 'Makefile.in', but + # some people rename them; so instead we look at the file content. + # Grep'ing the first line is not enough: some people post-process + # each Makefile.in and add a new line on top of each file to say so. + # Grep'ing the whole file is not good either: AIX grep has a line + # limit of 2048, but all sed's we know have understand at least 4000. + if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then + dirpart=`$as_dirname -- "$mf" || +$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$mf" : 'X\(//\)[^/]' \| \ + X"$mf" : 'X\(//\)$' \| \ + X"$mf" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$mf" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + else + continue + fi + # Extract the definition of DEPDIR, am__include, and am__quote + # from the Makefile without running 'make'. + DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` + test -z "$DEPDIR" && continue + am__include=`sed -n 's/^am__include = //p' < "$mf"` + test -z "$am__include" && continue + am__quote=`sed -n 's/^am__quote = //p' < "$mf"` + # Find all dependency output files, they are included files with + # $(DEPDIR) in their names. We invoke sed twice because it is the + # simplest approach to changing $(DEPDIR) to its actual value in the + # expansion. + for file in `sed -n " + s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do + # Make sure the directory exists. + test -f "$dirpart/$file" && continue + fdir=`$as_dirname -- "$file" || +$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$file" : 'X\(//\)[^/]' \| \ + X"$file" : 'X\(//\)$' \| \ + X"$file" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + as_dir=$dirpart/$fdir; as_fn_mkdir_p + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" + done + done +} + ;; + "libtool":C) + + # See if we are running on zsh, and set the options which allow our + # commands through without removal of \ escapes. + if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST + fi + + cfgfile="${ofile}T" + trap "$RM \"$cfgfile\"; exit 1" 1 2 15 + $RM "$cfgfile" + + cat <<_LT_EOF >> "$cfgfile" +#! $SHELL + +# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. +# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: +# NOTE: Changes made to this file will be lost: look at ltmain.sh. +# +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, +# 2006, 2007, 2008, 2009, 2010, 2011 Free Software +# Foundation, Inc. +# Written by Gordon Matzigkeit, 1996 +# +# This file is part of GNU Libtool. +# +# GNU Libtool 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. +# +# As a special exception to the GNU General Public License, +# if you distribute this file as part of a program or library that +# is built using GNU Libtool, you may include this file under the +# same distribution terms that you use for the rest of that program. +# +# GNU Libtool 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 GNU Libtool; see the file COPYING. If not, a copy +# can be downloaded from http://www.gnu.org/licenses/gpl.html, or +# obtained by writing to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + + +# The names of the tagged configurations supported by this script. +available_tags="" + +# ### BEGIN LIBTOOL CONFIG + +# Which release of libtool.m4 was used? +macro_version=$macro_version +macro_revision=$macro_revision + +# Assembler program. +AS=$lt_AS + +# DLL creation program. +DLLTOOL=$lt_DLLTOOL + +# Object dumper program. +OBJDUMP=$lt_OBJDUMP + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# What type of objects to build. +pic_mode=$pic_mode + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# An echo program that protects backslashes. +ECHO=$lt_ECHO + +# The PATH separator for the build system. +PATH_SEPARATOR=$lt_PATH_SEPARATOR + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# A sed program that does not truncate output. +SED=$lt_SED + +# Sed that helps us avoid accidentally triggering echo(1) options like -n. +Xsed="\$SED -e 1s/^X//" + +# A grep program that handles long lines. +GREP=$lt_GREP + +# An ERE matcher. +EGREP=$lt_EGREP + +# A literal string matcher. +FGREP=$lt_FGREP + +# A BSD- or MS-compatible name lister. +NM=$lt_NM + +# Whether we need soft or hard links. +LN_S=$lt_LN_S + +# What is the maximum length of a command? +max_cmd_len=$max_cmd_len + +# Object file suffix (normally "o"). +objext=$ac_objext + +# Executable file suffix (normally ""). +exeext=$exeext + +# whether the shell understands "unset". +lt_unset=$lt_unset + +# turn spaces into newlines. +SP2NL=$lt_lt_SP2NL + +# turn newlines into spaces. +NL2SP=$lt_lt_NL2SP + +# convert \$build file names to \$host format. +to_host_file_cmd=$lt_cv_to_host_file_cmd + +# convert \$build files to toolchain format. +to_tool_file_cmd=$lt_cv_to_tool_file_cmd + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method = "file_magic". +file_magic_cmd=$lt_file_magic_cmd + +# How to find potential files when deplibs_check_method = "file_magic". +file_magic_glob=$lt_file_magic_glob + +# Find potential files using nocaseglob when deplibs_check_method = "file_magic". +want_nocaseglob=$lt_want_nocaseglob + +# Command to associate shared and link libraries. +sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd + +# The archiver. +AR=$lt_AR + +# Flags to create an archive. +AR_FLAGS=$lt_AR_FLAGS + +# How to feed a file listing to the archiver. +archiver_list_spec=$lt_archiver_list_spec + +# A symbol stripping program. +STRIP=$lt_STRIP + +# Commands used to install an old-style archive. +RANLIB=$lt_RANLIB +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Whether to use a lock for old archive extraction. +lock_old_archive_extraction=$lock_old_archive_extraction + +# A C compiler. +LTCC=$lt_CC + +# LTCC compiler flags. +LTCFLAGS=$lt_CFLAGS + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration. +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm in a C name address pair. +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# Transform the output of nm in a C name address pair when lib prefix is needed. +global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix + +# Specify filename containing input files for \$NM. +nm_file_list_spec=$lt_nm_file_list_spec + +# The root where to search for dependent libraries,and in which our libraries should be installed. +lt_sysroot=$lt_sysroot + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# Used to examine libraries when file_magic_cmd begins with "file". +MAGIC_CMD=$MAGIC_CMD + +# Must we lock files when doing compilation? +need_locks=$lt_need_locks + +# Manifest tool. +MANIFEST_TOOL=$lt_MANIFEST_TOOL + +# Tool to manipulate archived DWARF debug symbol files on Mac OS X. +DSYMUTIL=$lt_DSYMUTIL + +# Tool to change global to local symbols on Mac OS X. +NMEDIT=$lt_NMEDIT + +# Tool to manipulate fat objects and archives on Mac OS X. +LIPO=$lt_LIPO + +# ldd/readelf like tool for Mach-O binaries on Mac OS X. +OTOOL=$lt_OTOOL + +# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. +OTOOL64=$lt_OTOOL64 + +# Old archive suffix (normally "a"). +libext=$libext + +# Shared library suffix (normally ".so"). +shrext_cmds=$lt_shrext_cmds + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at link time. +variables_saved_for_relink=$lt_variables_saved_for_relink + +# Do we need the "lib" prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Library versioning type. +version_type=$version_type + +# Shared library runtime path variable. +runpath_var=$runpath_var + +# Shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Permission mode override for installation of shared libraries. +install_override_mode=$lt_install_override_mode + +# Command to use after installation of a shared archive. +postinstall_cmds=$lt_postinstall_cmds + +# Command to use after uninstallation of a shared archive. +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# As "finish_cmds", except a single script fragment to be evaled but +# not shown. +finish_eval=$lt_finish_eval + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Compile-time system search path for libraries. +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Run-time system search path for libraries. +sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + + +# The linker used to build libraries. +LD=$lt_LD + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# Commands used to build an old-style archive. +old_archive_cmds=$lt_old_archive_cmds + +# A language specific compiler. +CC=$lt_compiler + +# Is the compiler the GNU compiler? +with_gcc=$GCC + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc + +# Whether or not to disallow shared libs when runtime libs are static. +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec + +# Whether the compiler copes with passing no objects directly. +compiler_needs_object=$lt_compiler_needs_object + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds + +# Commands used to build a shared archive. +archive_cmds=$lt_archive_cmds +archive_expsym_cmds=$lt_archive_expsym_cmds + +# Commands used to build a loadable module if different from building +# a shared archive. +module_cmds=$lt_module_cmds +module_expsym_cmds=$lt_module_expsym_cmds + +# Whether we are building with GNU ld or not. +with_gnu_ld=$lt_with_gnu_ld + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag + +# Flag that enforces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec + +# Whether we need a single "-rpath" flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator + +# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes +# DIR into the resulting binary. +hardcode_direct=$hardcode_direct + +# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes +# DIR into the resulting binary and the resulting library dependency is +# "absolute",i.e impossible to change by setting \${shlibpath_var} if the +# library is relocated. +hardcode_direct_absolute=$hardcode_direct_absolute + +# Set to "yes" if using the -LDIR flag during linking hardcodes DIR +# into the resulting binary. +hardcode_minus_L=$hardcode_minus_L + +# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR +# into the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var + +# Set to "yes" if building a shared library automatically hardcodes DIR +# into the library and all subsequent libraries and executables linked +# against it. +hardcode_automatic=$hardcode_automatic + +# Set to yes if linker adds runtime paths of dependent libraries +# to runtime path list. +inherit_rpath=$inherit_rpath + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs + +# Set to "yes" if exported symbols are required. +always_export_symbols=$always_export_symbols + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms + +# Commands necessary for linking programs (against libraries) with templates. +prelink_cmds=$lt_prelink_cmds + +# Commands necessary for finishing linking programs. +postlink_cmds=$lt_postlink_cmds + +# Specify filename containing input files. +file_list_spec=$lt_file_list_spec + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action + +# ### END LIBTOOL CONFIG + +_LT_EOF + + case $host_os in + aix3*) + cat <<\_LT_EOF >> "$cfgfile" +# AIX sometimes has problems with the GCC collect2 program. For some +# reason, if we set the COLLECT_NAMES environment variable, the problems +# vanish in a puff of smoke. +if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES +fi +_LT_EOF + ;; + esac + + +ltmain="$ac_aux_dir/ltmain.sh" + + + # We use sed instead of cat because bash on DJGPP gets confused if + # if finds mixed CR/LF and LF-only lines. Since sed operates in + # text mode, it properly converts lines to CR/LF. This bash problem + # is reportedly fixed, but why not run on old versions too? + sed '$q' "$ltmain" >> "$cfgfile" \ + || (rm -f "$cfgfile"; exit 1) + + if test x"$xsi_shell" = xyes; then + sed -e '/^func_dirname ()$/,/^} # func_dirname /c\ +func_dirname ()\ +{\ +\ case ${1} in\ +\ */*) func_dirname_result="${1%/*}${2}" ;;\ +\ * ) func_dirname_result="${3}" ;;\ +\ esac\ +} # Extended-shell func_dirname implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_basename ()$/,/^} # func_basename /c\ +func_basename ()\ +{\ +\ func_basename_result="${1##*/}"\ +} # Extended-shell func_basename implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_dirname_and_basename ()$/,/^} # func_dirname_and_basename /c\ +func_dirname_and_basename ()\ +{\ +\ case ${1} in\ +\ */*) func_dirname_result="${1%/*}${2}" ;;\ +\ * ) func_dirname_result="${3}" ;;\ +\ esac\ +\ func_basename_result="${1##*/}"\ +} # Extended-shell func_dirname_and_basename implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_stripname ()$/,/^} # func_stripname /c\ +func_stripname ()\ +{\ +\ # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are\ +\ # positional parameters, so assign one to ordinary parameter first.\ +\ func_stripname_result=${3}\ +\ func_stripname_result=${func_stripname_result#"${1}"}\ +\ func_stripname_result=${func_stripname_result%"${2}"}\ +} # Extended-shell func_stripname implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_split_long_opt ()$/,/^} # func_split_long_opt /c\ +func_split_long_opt ()\ +{\ +\ func_split_long_opt_name=${1%%=*}\ +\ func_split_long_opt_arg=${1#*=}\ +} # Extended-shell func_split_long_opt implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_split_short_opt ()$/,/^} # func_split_short_opt /c\ +func_split_short_opt ()\ +{\ +\ func_split_short_opt_arg=${1#??}\ +\ func_split_short_opt_name=${1%"$func_split_short_opt_arg"}\ +} # Extended-shell func_split_short_opt implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_lo2o ()$/,/^} # func_lo2o /c\ +func_lo2o ()\ +{\ +\ case ${1} in\ +\ *.lo) func_lo2o_result=${1%.lo}.${objext} ;;\ +\ *) func_lo2o_result=${1} ;;\ +\ esac\ +} # Extended-shell func_lo2o implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_xform ()$/,/^} # func_xform /c\ +func_xform ()\ +{\ + func_xform_result=${1%.*}.lo\ +} # Extended-shell func_xform implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_arith ()$/,/^} # func_arith /c\ +func_arith ()\ +{\ + func_arith_result=$(( $* ))\ +} # Extended-shell func_arith implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_len ()$/,/^} # func_len /c\ +func_len ()\ +{\ + func_len_result=${#1}\ +} # Extended-shell func_len implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + +fi + +if test x"$lt_shell_append" = xyes; then + sed -e '/^func_append ()$/,/^} # func_append /c\ +func_append ()\ +{\ + eval "${1}+=\\${2}"\ +} # Extended-shell func_append implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_append_quoted ()$/,/^} # func_append_quoted /c\ +func_append_quoted ()\ +{\ +\ func_quote_for_eval "${2}"\ +\ eval "${1}+=\\\\ \\$func_quote_for_eval_result"\ +} # Extended-shell func_append_quoted implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + # Save a `func_append' function call where possible by direct use of '+=' + sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") + test 0 -eq $? || _lt_function_replace_fail=: +else + # Save a `func_append' function call even when '+=' is not available + sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") + test 0 -eq $? || _lt_function_replace_fail=: +fi + +if test x"$_lt_function_replace_fail" = x":"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unable to substitute extended shell functions in $ofile" >&5 +$as_echo "$as_me: WARNING: Unable to substitute extended shell functions in $ofile" >&2;} +fi + + + mv -f "$cfgfile" "$ofile" || + (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") + chmod +x "$ofile" + + ;; + + esac +done # for ac_tag + + +as_fn_exit 0 diff --git a/gsl-2.5/config.sub b/gsl-2.5/config.sub new file mode 100755 index 00000000..c765b34b --- /dev/null +++ b/gsl-2.5/config.sub @@ -0,0 +1,1788 @@ +#! /bin/sh +# Configuration validation subroutine script. +# Copyright 1992-2013 Free Software Foundation, Inc. + +timestamp='2013-04-24' + +# This file is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, see . +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that +# program. This Exception is an additional permission under section 7 +# of the GNU General Public License, version 3 ("GPLv3"). + + +# Please send patches with a ChangeLog entry to config-patches@gnu.org. +# +# Configuration subroutine to validate and canonicalize a configuration type. +# Supply the specified configuration type as an argument. +# If it is invalid, we print an error message on stderr and exit with code 1. +# Otherwise, we print the canonical config type on stdout and succeed. + +# You can get the latest version of this script from: +# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD + +# This file is supposed to be the same for all GNU packages +# and recognize all the CPU types, system types and aliases +# that are meaningful with *any* GNU software. +# Each package is responsible for reporting which valid configurations +# it does not support. The user should be able to distinguish +# a failure to support a valid configuration from a meaningless +# configuration. + +# The goal of this file is to map all the various variations of a given +# machine specification into a single specification in the form: +# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM +# or in some cases, the newer four-part form: +# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM +# It is wrong to echo any other type of specification. + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] CPU-MFR-OPSYS + $0 [OPTION] ALIAS + +Canonicalize a configuration name. + +Operation modes: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.sub ($timestamp) + +Copyright 1992-2013 Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit ;; + --version | -v ) + echo "$version" ; exit ;; + --help | --h* | -h ) + echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" + exit 1 ;; + + *local*) + # First pass through any local machine types. + echo $1 + exit ;; + + * ) + break ;; + esac +done + +case $# in + 0) echo "$me: missing argument$help" >&2 + exit 1;; + 1) ;; + *) echo "$me: too many arguments$help" >&2 + exit 1;; +esac + +# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). +# Here we must recognize all the valid KERNEL-OS combinations. +maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` +case $maybe_os in + nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ + linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ + knetbsd*-gnu* | netbsd*-gnu* | \ + kopensolaris*-gnu* | \ + storm-chaos* | os2-emx* | rtmk-nova*) + os=-$maybe_os + basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` + ;; + android-linux) + os=-linux-android + basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown + ;; + *) + basic_machine=`echo $1 | sed 's/-[^-]*$//'` + if [ $basic_machine != $1 ] + then os=`echo $1 | sed 's/.*-/-/'` + else os=; fi + ;; +esac + +### Let's recognize common machines as not being operating systems so +### that things like config.sub decstation-3100 work. We also +### recognize some manufacturers as not being operating systems, so we +### can provide default operating systems below. +case $os in + -sun*os*) + # Prevent following clause from handling this invalid input. + ;; + -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ + -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ + -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ + -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ + -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ + -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ + -apple | -axis | -knuth | -cray | -microblaze*) + os= + basic_machine=$1 + ;; + -bluegene*) + os=-cnk + ;; + -sim | -cisco | -oki | -wec | -winbond) + os= + basic_machine=$1 + ;; + -scout) + ;; + -wrs) + os=-vxworks + basic_machine=$1 + ;; + -chorusos*) + os=-chorusos + basic_machine=$1 + ;; + -chorusrdb) + os=-chorusrdb + basic_machine=$1 + ;; + -hiux*) + os=-hiuxwe2 + ;; + -sco6) + os=-sco5v6 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco5) + os=-sco3.2v5 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco4) + os=-sco3.2v4 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2.[4-9]*) + os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2v[4-9]*) + # Don't forget version if it is 3.2v4 or newer. + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco5v6*) + # Don't forget version if it is 3.2v4 or newer. + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco*) + os=-sco3.2v2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -udk*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -isc) + os=-isc2.2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -clix*) + basic_machine=clipper-intergraph + ;; + -isc*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -lynx*178) + os=-lynxos178 + ;; + -lynx*5) + os=-lynxos5 + ;; + -lynx*) + os=-lynxos + ;; + -ptx*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` + ;; + -windowsnt*) + os=`echo $os | sed -e 's/windowsnt/winnt/'` + ;; + -psos*) + os=-psos + ;; + -mint | -mint[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; +esac + +# Decode aliases for certain CPU-COMPANY combinations. +case $basic_machine in + # Recognize the basic CPU types without company name. + # Some are omitted here because they have special meanings below. + 1750a | 580 \ + | a29k \ + | aarch64 | aarch64_be \ + | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ + | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ + | am33_2.0 \ + | arc | arceb \ + | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \ + | avr | avr32 \ + | be32 | be64 \ + | bfin \ + | c4x | clipper \ + | d10v | d30v | dlx | dsp16xx \ + | epiphany \ + | fido | fr30 | frv \ + | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ + | hexagon \ + | i370 | i860 | i960 | ia64 \ + | ip2k | iq2000 \ + | le32 | le64 \ + | lm32 \ + | m32c | m32r | m32rle | m68000 | m68k | m88k \ + | maxq | mb | microblaze | microblazeel | mcore | mep | metag \ + | mips | mipsbe | mipseb | mipsel | mipsle \ + | mips16 \ + | mips64 | mips64el \ + | mips64octeon | mips64octeonel \ + | mips64orion | mips64orionel \ + | mips64r5900 | mips64r5900el \ + | mips64vr | mips64vrel \ + | mips64vr4100 | mips64vr4100el \ + | mips64vr4300 | mips64vr4300el \ + | mips64vr5000 | mips64vr5000el \ + | mips64vr5900 | mips64vr5900el \ + | mipsisa32 | mipsisa32el \ + | mipsisa32r2 | mipsisa32r2el \ + | mipsisa64 | mipsisa64el \ + | mipsisa64r2 | mipsisa64r2el \ + | mipsisa64sb1 | mipsisa64sb1el \ + | mipsisa64sr71k | mipsisa64sr71kel \ + | mipsr5900 | mipsr5900el \ + | mipstx39 | mipstx39el \ + | mn10200 | mn10300 \ + | moxie \ + | mt \ + | msp430 \ + | nds32 | nds32le | nds32be \ + | nios | nios2 | nios2eb | nios2el \ + | ns16k | ns32k \ + | open8 \ + | or1k | or32 \ + | pdp10 | pdp11 | pj | pjl \ + | powerpc | powerpc64 | powerpc64le | powerpcle \ + | pyramid \ + | rl78 | rx \ + | score \ + | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ + | sh64 | sh64le \ + | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ + | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ + | spu \ + | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ + | ubicom32 \ + | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \ + | we32k \ + | x86 | xc16x | xstormy16 | xtensa \ + | z8k | z80) + basic_machine=$basic_machine-unknown + ;; + c54x) + basic_machine=tic54x-unknown + ;; + c55x) + basic_machine=tic55x-unknown + ;; + c6x) + basic_machine=tic6x-unknown + ;; + m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | picochip) + basic_machine=$basic_machine-unknown + os=-none + ;; + m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) + ;; + ms1) + basic_machine=mt-unknown + ;; + + strongarm | thumb | xscale) + basic_machine=arm-unknown + ;; + xgate) + basic_machine=$basic_machine-unknown + os=-none + ;; + xscaleeb) + basic_machine=armeb-unknown + ;; + + xscaleel) + basic_machine=armel-unknown + ;; + + # We use `pc' rather than `unknown' + # because (1) that's what they normally are, and + # (2) the word "unknown" tends to confuse beginning users. + i*86 | x86_64) + basic_machine=$basic_machine-pc + ;; + # Object if more than one company name word. + *-*-*) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; + # Recognize the basic CPU types with company name. + 580-* \ + | a29k-* \ + | aarch64-* | aarch64_be-* \ + | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ + | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ + | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \ + | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ + | avr-* | avr32-* \ + | be32-* | be64-* \ + | bfin-* | bs2000-* \ + | c[123]* | c30-* | [cjt]90-* | c4x-* \ + | clipper-* | craynv-* | cydra-* \ + | d10v-* | d30v-* | dlx-* \ + | elxsi-* \ + | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ + | h8300-* | h8500-* \ + | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ + | hexagon-* \ + | i*86-* | i860-* | i960-* | ia64-* \ + | ip2k-* | iq2000-* \ + | le32-* | le64-* \ + | lm32-* \ + | m32c-* | m32r-* | m32rle-* \ + | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ + | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \ + | microblaze-* | microblazeel-* \ + | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ + | mips16-* \ + | mips64-* | mips64el-* \ + | mips64octeon-* | mips64octeonel-* \ + | mips64orion-* | mips64orionel-* \ + | mips64r5900-* | mips64r5900el-* \ + | mips64vr-* | mips64vrel-* \ + | mips64vr4100-* | mips64vr4100el-* \ + | mips64vr4300-* | mips64vr4300el-* \ + | mips64vr5000-* | mips64vr5000el-* \ + | mips64vr5900-* | mips64vr5900el-* \ + | mipsisa32-* | mipsisa32el-* \ + | mipsisa32r2-* | mipsisa32r2el-* \ + | mipsisa64-* | mipsisa64el-* \ + | mipsisa64r2-* | mipsisa64r2el-* \ + | mipsisa64sb1-* | mipsisa64sb1el-* \ + | mipsisa64sr71k-* | mipsisa64sr71kel-* \ + | mipsr5900-* | mipsr5900el-* \ + | mipstx39-* | mipstx39el-* \ + | mmix-* \ + | mt-* \ + | msp430-* \ + | nds32-* | nds32le-* | nds32be-* \ + | nios-* | nios2-* | nios2eb-* | nios2el-* \ + | none-* | np1-* | ns16k-* | ns32k-* \ + | open8-* \ + | orion-* \ + | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ + | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ + | pyramid-* \ + | rl78-* | romp-* | rs6000-* | rx-* \ + | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ + | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ + | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ + | sparclite-* \ + | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \ + | tahoe-* \ + | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ + | tile*-* \ + | tron-* \ + | ubicom32-* \ + | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \ + | vax-* \ + | we32k-* \ + | x86-* | x86_64-* | xc16x-* | xps100-* \ + | xstormy16-* | xtensa*-* \ + | ymp-* \ + | z8k-* | z80-*) + ;; + # Recognize the basic CPU types without company name, with glob match. + xtensa*) + basic_machine=$basic_machine-unknown + ;; + # Recognize the various machine names and aliases which stand + # for a CPU type and a company and sometimes even an OS. + 386bsd) + basic_machine=i386-unknown + os=-bsd + ;; + 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) + basic_machine=m68000-att + ;; + 3b*) + basic_machine=we32k-att + ;; + a29khif) + basic_machine=a29k-amd + os=-udi + ;; + abacus) + basic_machine=abacus-unknown + ;; + adobe68k) + basic_machine=m68010-adobe + os=-scout + ;; + alliant | fx80) + basic_machine=fx80-alliant + ;; + altos | altos3068) + basic_machine=m68k-altos + ;; + am29k) + basic_machine=a29k-none + os=-bsd + ;; + amd64) + basic_machine=x86_64-pc + ;; + amd64-*) + basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + amdahl) + basic_machine=580-amdahl + os=-sysv + ;; + amiga | amiga-*) + basic_machine=m68k-unknown + ;; + amigaos | amigados) + basic_machine=m68k-unknown + os=-amigaos + ;; + amigaunix | amix) + basic_machine=m68k-unknown + os=-sysv4 + ;; + apollo68) + basic_machine=m68k-apollo + os=-sysv + ;; + apollo68bsd) + basic_machine=m68k-apollo + os=-bsd + ;; + aros) + basic_machine=i386-pc + os=-aros + ;; + aux) + basic_machine=m68k-apple + os=-aux + ;; + balance) + basic_machine=ns32k-sequent + os=-dynix + ;; + blackfin) + basic_machine=bfin-unknown + os=-linux + ;; + blackfin-*) + basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` + os=-linux + ;; + bluegene*) + basic_machine=powerpc-ibm + os=-cnk + ;; + c54x-*) + basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + c55x-*) + basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + c6x-*) + basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + c90) + basic_machine=c90-cray + os=-unicos + ;; + cegcc) + basic_machine=arm-unknown + os=-cegcc + ;; + convex-c1) + basic_machine=c1-convex + os=-bsd + ;; + convex-c2) + basic_machine=c2-convex + os=-bsd + ;; + convex-c32) + basic_machine=c32-convex + os=-bsd + ;; + convex-c34) + basic_machine=c34-convex + os=-bsd + ;; + convex-c38) + basic_machine=c38-convex + os=-bsd + ;; + cray | j90) + basic_machine=j90-cray + os=-unicos + ;; + craynv) + basic_machine=craynv-cray + os=-unicosmp + ;; + cr16 | cr16-*) + basic_machine=cr16-unknown + os=-elf + ;; + crds | unos) + basic_machine=m68k-crds + ;; + crisv32 | crisv32-* | etraxfs*) + basic_machine=crisv32-axis + ;; + cris | cris-* | etrax*) + basic_machine=cris-axis + ;; + crx) + basic_machine=crx-unknown + os=-elf + ;; + da30 | da30-*) + basic_machine=m68k-da30 + ;; + decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) + basic_machine=mips-dec + ;; + decsystem10* | dec10*) + basic_machine=pdp10-dec + os=-tops10 + ;; + decsystem20* | dec20*) + basic_machine=pdp10-dec + os=-tops20 + ;; + delta | 3300 | motorola-3300 | motorola-delta \ + | 3300-motorola | delta-motorola) + basic_machine=m68k-motorola + ;; + delta88) + basic_machine=m88k-motorola + os=-sysv3 + ;; + dicos) + basic_machine=i686-pc + os=-dicos + ;; + djgpp) + basic_machine=i586-pc + os=-msdosdjgpp + ;; + dpx20 | dpx20-*) + basic_machine=rs6000-bull + os=-bosx + ;; + dpx2* | dpx2*-bull) + basic_machine=m68k-bull + os=-sysv3 + ;; + ebmon29k) + basic_machine=a29k-amd + os=-ebmon + ;; + elxsi) + basic_machine=elxsi-elxsi + os=-bsd + ;; + encore | umax | mmax) + basic_machine=ns32k-encore + ;; + es1800 | OSE68k | ose68k | ose | OSE) + basic_machine=m68k-ericsson + os=-ose + ;; + fx2800) + basic_machine=i860-alliant + ;; + genix) + basic_machine=ns32k-ns + ;; + gmicro) + basic_machine=tron-gmicro + os=-sysv + ;; + go32) + basic_machine=i386-pc + os=-go32 + ;; + h3050r* | hiux*) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + h8300hms) + basic_machine=h8300-hitachi + os=-hms + ;; + h8300xray) + basic_machine=h8300-hitachi + os=-xray + ;; + h8500hms) + basic_machine=h8500-hitachi + os=-hms + ;; + harris) + basic_machine=m88k-harris + os=-sysv3 + ;; + hp300-*) + basic_machine=m68k-hp + ;; + hp300bsd) + basic_machine=m68k-hp + os=-bsd + ;; + hp300hpux) + basic_machine=m68k-hp + os=-hpux + ;; + hp3k9[0-9][0-9] | hp9[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k2[0-9][0-9] | hp9k31[0-9]) + basic_machine=m68000-hp + ;; + hp9k3[2-9][0-9]) + basic_machine=m68k-hp + ;; + hp9k6[0-9][0-9] | hp6[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k7[0-79][0-9] | hp7[0-79][0-9]) + basic_machine=hppa1.1-hp + ;; + hp9k78[0-9] | hp78[0-9]) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][13679] | hp8[0-9][13679]) + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][0-9] | hp8[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hppa-next) + os=-nextstep3 + ;; + hppaosf) + basic_machine=hppa1.1-hp + os=-osf + ;; + hppro) + basic_machine=hppa1.1-hp + os=-proelf + ;; + i370-ibm* | ibm*) + basic_machine=i370-ibm + ;; + i*86v32) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv32 + ;; + i*86v4*) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv4 + ;; + i*86v) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv + ;; + i*86sol2) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-solaris2 + ;; + i386mach) + basic_machine=i386-mach + os=-mach + ;; + i386-vsta | vsta) + basic_machine=i386-unknown + os=-vsta + ;; + iris | iris4d) + basic_machine=mips-sgi + case $os in + -irix*) + ;; + *) + os=-irix4 + ;; + esac + ;; + isi68 | isi) + basic_machine=m68k-isi + os=-sysv + ;; + m68knommu) + basic_machine=m68k-unknown + os=-linux + ;; + m68knommu-*) + basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` + os=-linux + ;; + m88k-omron*) + basic_machine=m88k-omron + ;; + magnum | m3230) + basic_machine=mips-mips + os=-sysv + ;; + merlin) + basic_machine=ns32k-utek + os=-sysv + ;; + microblaze*) + basic_machine=microblaze-xilinx + ;; + mingw64) + basic_machine=x86_64-pc + os=-mingw64 + ;; + mingw32) + basic_machine=i386-pc + os=-mingw32 + ;; + mingw32ce) + basic_machine=arm-unknown + os=-mingw32ce + ;; + miniframe) + basic_machine=m68000-convergent + ;; + *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; + mips3*-*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` + ;; + mips3*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown + ;; + monitor) + basic_machine=m68k-rom68k + os=-coff + ;; + morphos) + basic_machine=powerpc-unknown + os=-morphos + ;; + msdos) + basic_machine=i386-pc + os=-msdos + ;; + ms1-*) + basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` + ;; + msys) + basic_machine=i386-pc + os=-msys + ;; + mvs) + basic_machine=i370-ibm + os=-mvs + ;; + nacl) + basic_machine=le32-unknown + os=-nacl + ;; + ncr3000) + basic_machine=i486-ncr + os=-sysv4 + ;; + netbsd386) + basic_machine=i386-unknown + os=-netbsd + ;; + netwinder) + basic_machine=armv4l-rebel + os=-linux + ;; + news | news700 | news800 | news900) + basic_machine=m68k-sony + os=-newsos + ;; + news1000) + basic_machine=m68030-sony + os=-newsos + ;; + news-3600 | risc-news) + basic_machine=mips-sony + os=-newsos + ;; + necv70) + basic_machine=v70-nec + os=-sysv + ;; + next | m*-next ) + basic_machine=m68k-next + case $os in + -nextstep* ) + ;; + -ns2*) + os=-nextstep2 + ;; + *) + os=-nextstep3 + ;; + esac + ;; + nh3000) + basic_machine=m68k-harris + os=-cxux + ;; + nh[45]000) + basic_machine=m88k-harris + os=-cxux + ;; + nindy960) + basic_machine=i960-intel + os=-nindy + ;; + mon960) + basic_machine=i960-intel + os=-mon960 + ;; + nonstopux) + basic_machine=mips-compaq + os=-nonstopux + ;; + np1) + basic_machine=np1-gould + ;; + neo-tandem) + basic_machine=neo-tandem + ;; + nse-tandem) + basic_machine=nse-tandem + ;; + nsr-tandem) + basic_machine=nsr-tandem + ;; + op50n-* | op60c-*) + basic_machine=hppa1.1-oki + os=-proelf + ;; + openrisc | openrisc-*) + basic_machine=or32-unknown + ;; + os400) + basic_machine=powerpc-ibm + os=-os400 + ;; + OSE68000 | ose68000) + basic_machine=m68000-ericsson + os=-ose + ;; + os68k) + basic_machine=m68k-none + os=-os68k + ;; + pa-hitachi) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + paragon) + basic_machine=i860-intel + os=-osf + ;; + parisc) + basic_machine=hppa-unknown + os=-linux + ;; + parisc-*) + basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` + os=-linux + ;; + pbd) + basic_machine=sparc-tti + ;; + pbb) + basic_machine=m68k-tti + ;; + pc532 | pc532-*) + basic_machine=ns32k-pc532 + ;; + pc98) + basic_machine=i386-pc + ;; + pc98-*) + basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentium | p5 | k5 | k6 | nexgen | viac3) + basic_machine=i586-pc + ;; + pentiumpro | p6 | 6x86 | athlon | athlon_*) + basic_machine=i686-pc + ;; + pentiumii | pentium2 | pentiumiii | pentium3) + basic_machine=i686-pc + ;; + pentium4) + basic_machine=i786-pc + ;; + pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) + basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumpro-* | p6-* | 6x86-* | athlon-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentium4-*) + basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pn) + basic_machine=pn-gould + ;; + power) basic_machine=power-ibm + ;; + ppc | ppcbe) basic_machine=powerpc-unknown + ;; + ppc-* | ppcbe-*) + basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppcle | powerpclittle | ppc-le | powerpc-little) + basic_machine=powerpcle-unknown + ;; + ppcle-* | powerpclittle-*) + basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppc64) basic_machine=powerpc64-unknown + ;; + ppc64-* | ppc64p7-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppc64le | powerpc64little | ppc64-le | powerpc64-little) + basic_machine=powerpc64le-unknown + ;; + ppc64le-* | powerpc64little-*) + basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ps2) + basic_machine=i386-ibm + ;; + pw32) + basic_machine=i586-unknown + os=-pw32 + ;; + rdos | rdos64) + basic_machine=x86_64-pc + os=-rdos + ;; + rdos32) + basic_machine=i386-pc + os=-rdos + ;; + rom68k) + basic_machine=m68k-rom68k + os=-coff + ;; + rm[46]00) + basic_machine=mips-siemens + ;; + rtpc | rtpc-*) + basic_machine=romp-ibm + ;; + s390 | s390-*) + basic_machine=s390-ibm + ;; + s390x | s390x-*) + basic_machine=s390x-ibm + ;; + sa29200) + basic_machine=a29k-amd + os=-udi + ;; + sb1) + basic_machine=mipsisa64sb1-unknown + ;; + sb1el) + basic_machine=mipsisa64sb1el-unknown + ;; + sde) + basic_machine=mipsisa32-sde + os=-elf + ;; + sei) + basic_machine=mips-sei + os=-seiux + ;; + sequent) + basic_machine=i386-sequent + ;; + sh) + basic_machine=sh-hitachi + os=-hms + ;; + sh5el) + basic_machine=sh5le-unknown + ;; + sh64) + basic_machine=sh64-unknown + ;; + sparclite-wrs | simso-wrs) + basic_machine=sparclite-wrs + os=-vxworks + ;; + sps7) + basic_machine=m68k-bull + os=-sysv2 + ;; + spur) + basic_machine=spur-unknown + ;; + st2000) + basic_machine=m68k-tandem + ;; + stratus) + basic_machine=i860-stratus + os=-sysv4 + ;; + strongarm-* | thumb-*) + basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + sun2) + basic_machine=m68000-sun + ;; + sun2os3) + basic_machine=m68000-sun + os=-sunos3 + ;; + sun2os4) + basic_machine=m68000-sun + os=-sunos4 + ;; + sun3os3) + basic_machine=m68k-sun + os=-sunos3 + ;; + sun3os4) + basic_machine=m68k-sun + os=-sunos4 + ;; + sun4os3) + basic_machine=sparc-sun + os=-sunos3 + ;; + sun4os4) + basic_machine=sparc-sun + os=-sunos4 + ;; + sun4sol2) + basic_machine=sparc-sun + os=-solaris2 + ;; + sun3 | sun3-*) + basic_machine=m68k-sun + ;; + sun4) + basic_machine=sparc-sun + ;; + sun386 | sun386i | roadrunner) + basic_machine=i386-sun + ;; + sv1) + basic_machine=sv1-cray + os=-unicos + ;; + symmetry) + basic_machine=i386-sequent + os=-dynix + ;; + t3e) + basic_machine=alphaev5-cray + os=-unicos + ;; + t90) + basic_machine=t90-cray + os=-unicos + ;; + tile*) + basic_machine=$basic_machine-unknown + os=-linux-gnu + ;; + tx39) + basic_machine=mipstx39-unknown + ;; + tx39el) + basic_machine=mipstx39el-unknown + ;; + toad1) + basic_machine=pdp10-xkl + os=-tops20 + ;; + tower | tower-32) + basic_machine=m68k-ncr + ;; + tpf) + basic_machine=s390x-ibm + os=-tpf + ;; + udi29k) + basic_machine=a29k-amd + os=-udi + ;; + ultra3) + basic_machine=a29k-nyu + os=-sym1 + ;; + v810 | necv810) + basic_machine=v810-nec + os=-none + ;; + vaxv) + basic_machine=vax-dec + os=-sysv + ;; + vms) + basic_machine=vax-dec + os=-vms + ;; + vpp*|vx|vx-*) + basic_machine=f301-fujitsu + ;; + vxworks960) + basic_machine=i960-wrs + os=-vxworks + ;; + vxworks68) + basic_machine=m68k-wrs + os=-vxworks + ;; + vxworks29k) + basic_machine=a29k-wrs + os=-vxworks + ;; + w65*) + basic_machine=w65-wdc + os=-none + ;; + w89k-*) + basic_machine=hppa1.1-winbond + os=-proelf + ;; + xbox) + basic_machine=i686-pc + os=-mingw32 + ;; + xps | xps100) + basic_machine=xps100-honeywell + ;; + xscale-* | xscalee[bl]-*) + basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'` + ;; + ymp) + basic_machine=ymp-cray + os=-unicos + ;; + z8k-*-coff) + basic_machine=z8k-unknown + os=-sim + ;; + z80-*-coff) + basic_machine=z80-unknown + os=-sim + ;; + none) + basic_machine=none-none + os=-none + ;; + +# Here we handle the default manufacturer of certain CPU types. It is in +# some cases the only manufacturer, in others, it is the most popular. + w89k) + basic_machine=hppa1.1-winbond + ;; + op50n) + basic_machine=hppa1.1-oki + ;; + op60c) + basic_machine=hppa1.1-oki + ;; + romp) + basic_machine=romp-ibm + ;; + mmix) + basic_machine=mmix-knuth + ;; + rs6000) + basic_machine=rs6000-ibm + ;; + vax) + basic_machine=vax-dec + ;; + pdp10) + # there are many clones, so DEC is not a safe bet + basic_machine=pdp10-unknown + ;; + pdp11) + basic_machine=pdp11-dec + ;; + we32k) + basic_machine=we32k-att + ;; + sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) + basic_machine=sh-unknown + ;; + sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) + basic_machine=sparc-sun + ;; + cydra) + basic_machine=cydra-cydrome + ;; + orion) + basic_machine=orion-highlevel + ;; + orion105) + basic_machine=clipper-highlevel + ;; + mac | mpw | mac-mpw) + basic_machine=m68k-apple + ;; + pmac | pmac-mpw) + basic_machine=powerpc-apple + ;; + *-unknown) + # Make sure to match an already-canonicalized machine name. + ;; + *) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; +esac + +# Here we canonicalize certain aliases for manufacturers. +case $basic_machine in + *-digital*) + basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` + ;; + *-commodore*) + basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` + ;; + *) + ;; +esac + +# Decode manufacturer-specific aliases for certain operating systems. + +if [ x"$os" != x"" ] +then +case $os in + # First match some system type aliases + # that might get confused with valid system types. + # -solaris* is a basic system type, with this one exception. + -auroraux) + os=-auroraux + ;; + -solaris1 | -solaris1.*) + os=`echo $os | sed -e 's|solaris1|sunos4|'` + ;; + -solaris) + os=-solaris2 + ;; + -svr4*) + os=-sysv4 + ;; + -unixware*) + os=-sysv4.2uw + ;; + -gnu/linux*) + os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` + ;; + # First accept the basic system types. + # The portable systems comes first. + # Each alternative MUST END IN A *, to match a version number. + # -sysv* is not here because it comes later, after sysvr4. + -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ + | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ + | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ + | -sym* | -kopensolaris* | -plan9* \ + | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ + | -aos* | -aros* \ + | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ + | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ + | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ + | -bitrig* | -openbsd* | -solidbsd* \ + | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ + | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ + | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ + | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ + | -chorusos* | -chorusrdb* | -cegcc* \ + | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ + | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \ + | -linux-newlib* | -linux-musl* | -linux-uclibc* \ + | -uxpv* | -beos* | -mpeix* | -udk* \ + | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ + | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ + | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ + | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ + | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ + | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ + | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*) + # Remember, each alternative MUST END IN *, to match a version number. + ;; + -qnx*) + case $basic_machine in + x86-* | i*86-*) + ;; + *) + os=-nto$os + ;; + esac + ;; + -nto-qnx*) + ;; + -nto*) + os=`echo $os | sed -e 's|nto|nto-qnx|'` + ;; + -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ + | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ + | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) + ;; + -mac*) + os=`echo $os | sed -e 's|mac|macos|'` + ;; + -linux-dietlibc) + os=-linux-dietlibc + ;; + -linux*) + os=`echo $os | sed -e 's|linux|linux-gnu|'` + ;; + -sunos5*) + os=`echo $os | sed -e 's|sunos5|solaris2|'` + ;; + -sunos6*) + os=`echo $os | sed -e 's|sunos6|solaris3|'` + ;; + -opened*) + os=-openedition + ;; + -os400*) + os=-os400 + ;; + -wince*) + os=-wince + ;; + -osfrose*) + os=-osfrose + ;; + -osf*) + os=-osf + ;; + -utek*) + os=-bsd + ;; + -dynix*) + os=-bsd + ;; + -acis*) + os=-aos + ;; + -atheos*) + os=-atheos + ;; + -syllable*) + os=-syllable + ;; + -386bsd) + os=-bsd + ;; + -ctix* | -uts*) + os=-sysv + ;; + -nova*) + os=-rtmk-nova + ;; + -ns2 ) + os=-nextstep2 + ;; + -nsk*) + os=-nsk + ;; + # Preserve the version number of sinix5. + -sinix5.*) + os=`echo $os | sed -e 's|sinix|sysv|'` + ;; + -sinix*) + os=-sysv4 + ;; + -tpf*) + os=-tpf + ;; + -triton*) + os=-sysv3 + ;; + -oss*) + os=-sysv3 + ;; + -svr4) + os=-sysv4 + ;; + -svr3) + os=-sysv3 + ;; + -sysvr4) + os=-sysv4 + ;; + # This must come after -sysvr4. + -sysv*) + ;; + -ose*) + os=-ose + ;; + -es1800*) + os=-ose + ;; + -xenix) + os=-xenix + ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + os=-mint + ;; + -aros*) + os=-aros + ;; + -zvmoe) + os=-zvmoe + ;; + -dicos*) + os=-dicos + ;; + -nacl*) + ;; + -none) + ;; + *) + # Get rid of the `-' at the beginning of $os. + os=`echo $os | sed 's/[^-]*-//'` + echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 + exit 1 + ;; +esac +else + +# Here we handle the default operating systems that come with various machines. +# The value should be what the vendor currently ships out the door with their +# machine or put another way, the most popular os provided with the machine. + +# Note that if you're going to try to match "-MANUFACTURER" here (say, +# "-sun"), then you have to tell the case statement up towards the top +# that MANUFACTURER isn't an operating system. Otherwise, code above +# will signal an error saying that MANUFACTURER isn't an operating +# system, and we'll never get to this point. + +case $basic_machine in + score-*) + os=-elf + ;; + spu-*) + os=-elf + ;; + *-acorn) + os=-riscix1.2 + ;; + arm*-rebel) + os=-linux + ;; + arm*-semi) + os=-aout + ;; + c4x-* | tic4x-*) + os=-coff + ;; + hexagon-*) + os=-elf + ;; + tic54x-*) + os=-coff + ;; + tic55x-*) + os=-coff + ;; + tic6x-*) + os=-coff + ;; + # This must come before the *-dec entry. + pdp10-*) + os=-tops20 + ;; + pdp11-*) + os=-none + ;; + *-dec | vax-*) + os=-ultrix4.2 + ;; + m68*-apollo) + os=-domain + ;; + i386-sun) + os=-sunos4.0.2 + ;; + m68000-sun) + os=-sunos3 + ;; + m68*-cisco) + os=-aout + ;; + mep-*) + os=-elf + ;; + mips*-cisco) + os=-elf + ;; + mips*-*) + os=-elf + ;; + or1k-*) + os=-elf + ;; + or32-*) + os=-coff + ;; + *-tti) # must be before sparc entry or we get the wrong os. + os=-sysv3 + ;; + sparc-* | *-sun) + os=-sunos4.1.1 + ;; + *-be) + os=-beos + ;; + *-haiku) + os=-haiku + ;; + *-ibm) + os=-aix + ;; + *-knuth) + os=-mmixware + ;; + *-wec) + os=-proelf + ;; + *-winbond) + os=-proelf + ;; + *-oki) + os=-proelf + ;; + *-hp) + os=-hpux + ;; + *-hitachi) + os=-hiux + ;; + i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) + os=-sysv + ;; + *-cbm) + os=-amigaos + ;; + *-dg) + os=-dgux + ;; + *-dolphin) + os=-sysv3 + ;; + m68k-ccur) + os=-rtu + ;; + m88k-omron*) + os=-luna + ;; + *-next ) + os=-nextstep + ;; + *-sequent) + os=-ptx + ;; + *-crds) + os=-unos + ;; + *-ns) + os=-genix + ;; + i370-*) + os=-mvs + ;; + *-next) + os=-nextstep3 + ;; + *-gould) + os=-sysv + ;; + *-highlevel) + os=-bsd + ;; + *-encore) + os=-bsd + ;; + *-sgi) + os=-irix + ;; + *-siemens) + os=-sysv4 + ;; + *-masscomp) + os=-rtu + ;; + f30[01]-fujitsu | f700-fujitsu) + os=-uxpv + ;; + *-rom68k) + os=-coff + ;; + *-*bug) + os=-coff + ;; + *-apple) + os=-macos + ;; + *-atari*) + os=-mint + ;; + *) + os=-none + ;; +esac +fi + +# Here we handle the case where we know the os, and the CPU type, but not the +# manufacturer. We pick the logical manufacturer. +vendor=unknown +case $basic_machine in + *-unknown) + case $os in + -riscix*) + vendor=acorn + ;; + -sunos*) + vendor=sun + ;; + -cnk*|-aix*) + vendor=ibm + ;; + -beos*) + vendor=be + ;; + -hpux*) + vendor=hp + ;; + -mpeix*) + vendor=hp + ;; + -hiux*) + vendor=hitachi + ;; + -unos*) + vendor=crds + ;; + -dgux*) + vendor=dg + ;; + -luna*) + vendor=omron + ;; + -genix*) + vendor=ns + ;; + -mvs* | -opened*) + vendor=ibm + ;; + -os400*) + vendor=ibm + ;; + -ptx*) + vendor=sequent + ;; + -tpf*) + vendor=ibm + ;; + -vxsim* | -vxworks* | -windiss*) + vendor=wrs + ;; + -aux*) + vendor=apple + ;; + -hms*) + vendor=hitachi + ;; + -mpw* | -macos*) + vendor=apple + ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + vendor=atari + ;; + -vos*) + vendor=stratus + ;; + esac + basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` + ;; +esac + +echo $basic_machine$os +exit + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/gsl-2.5/configure b/gsl-2.5/configure new file mode 100755 index 00000000..e287ec0a --- /dev/null +++ b/gsl-2.5/configure @@ -0,0 +1,15524 @@ +#! /bin/sh +# Guess values for system-dependent variables and create Makefiles. +# Generated by GNU Autoconf 2.69 for gsl 2.5. +# +# +# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. +# +# +# This configure script is free software; the Free Software Foundation +# gives unlimited permission to copy, distribute and modify it. +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi + + +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in #( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in #(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +# Use a proper internal environment variable to ensure we don't fall + # into an infinite loop, continuously re-executing ourselves. + if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then + _as_can_reexec=no; export _as_can_reexec; + # We cannot yet assume a decent shell, so we have to provide a +# neutralization value for shells without unset; and this also +# works around shells that cannot unset nonexistent variables. +# Preserve -v and -x to the replacement shell. +BASH_ENV=/dev/null +ENV=/dev/null +(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV +case $- in # (((( + *v*x* | *x*v* ) as_opts=-vx ;; + *v* ) as_opts=-v ;; + *x* ) as_opts=-x ;; + * ) as_opts= ;; +esac +exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} +# Admittedly, this is quite paranoid, since all the known shells bail +# out after a failed `exec'. +$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 +as_fn_exit 255 + fi + # We don't want this to propagate to other subprocesses. + { _as_can_reexec=; unset _as_can_reexec;} +if test "x$CONFIG_SHELL" = x; then + as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which + # is contrary to our usage. Disable this feature. + alias -g '\${1+\"\$@\"}'='\"\$@\"' + setopt NO_GLOB_SUBST +else + case \`(set -o) 2>/dev/null\` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi +" + as_required="as_fn_return () { (exit \$1); } +as_fn_success () { as_fn_return 0; } +as_fn_failure () { as_fn_return 1; } +as_fn_ret_success () { return 0; } +as_fn_ret_failure () { return 1; } + +exitcode=0 +as_fn_success || { exitcode=1; echo as_fn_success failed.; } +as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } +as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } +as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } +if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : + +else + exitcode=1; echo positional parameters were not saved. +fi +test x\$exitcode = x0 || exit 1 +test -x / || exit 1" + as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO + as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO + eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && + test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 +test \$(( 1 + 1 )) = 2 || exit 1 + + test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || ( + ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' + ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO + ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO + PATH=/empty FPATH=/empty; export PATH FPATH + test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\ + || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1" + if (eval "$as_required") 2>/dev/null; then : + as_have_required=yes +else + as_have_required=no +fi + if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : + +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +as_found=false +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + as_found=: + case $as_dir in #( + /*) + for as_base in sh bash ksh sh5; do + # Try only shells that exist, to save several forks. + as_shell=$as_dir/$as_base + if { test -f "$as_shell" || test -f "$as_shell.exe"; } && + { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : + CONFIG_SHELL=$as_shell as_have_required=yes + if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : + break 2 +fi +fi + done;; + esac + as_found=false +done +$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && + { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : + CONFIG_SHELL=$SHELL as_have_required=yes +fi; } +IFS=$as_save_IFS + + + if test "x$CONFIG_SHELL" != x; then : + export CONFIG_SHELL + # We cannot yet assume a decent shell, so we have to provide a +# neutralization value for shells without unset; and this also +# works around shells that cannot unset nonexistent variables. +# Preserve -v and -x to the replacement shell. +BASH_ENV=/dev/null +ENV=/dev/null +(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV +case $- in # (((( + *v*x* | *x*v* ) as_opts=-vx ;; + *v* ) as_opts=-v ;; + *x* ) as_opts=-x ;; + * ) as_opts= ;; +esac +exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} +# Admittedly, this is quite paranoid, since all the known shells bail +# out after a failed `exec'. +$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 +exit 255 +fi + + if test x$as_have_required = xno; then : + $as_echo "$0: This script requires a shell more modern than all" + $as_echo "$0: the shells that I found on your system." + if test x${ZSH_VERSION+set} = xset ; then + $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" + $as_echo "$0: be upgraded to zsh 4.3.4 or later." + else + $as_echo "$0: Please tell bug-autoconf@gnu.org about your system, +$0: including any error possibly output before this +$0: message. Then install a modern shell, or manually run +$0: the script under such a shell if you do have one." + fi + exit 1 +fi +fi +fi +SHELL=${CONFIG_SHELL-/bin/sh} +export SHELL +# Unset more variables known to interfere with behavior of common tools. +CLICOLOR_FORCE= GREP_OPTIONS= +unset CLICOLOR_FORCE GREP_OPTIONS + +## --------------------- ## +## M4sh Shell Functions. ## +## --------------------- ## +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} # as_fn_mkdir_p + +# as_fn_executable_p FILE +# ----------------------- +# Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} # as_fn_executable_p +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +# as_fn_error STATUS ERROR [LINENO LOG_FD] +# ---------------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + $as_echo "$as_me: error: $2" >&2 + as_fn_exit $as_status +} # as_fn_error + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + + + as_lineno_1=$LINENO as_lineno_1a=$LINENO + as_lineno_2=$LINENO as_lineno_2a=$LINENO + eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && + test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { + # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | + sed ' + s/[$]LINENO.*/&-/ + t lineno + b + :lineno + N + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + t loop + s/-\n.*// + ' >$as_me.lineno && + chmod +x "$as_me.lineno" || + { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } + + # If we had to re-execute with $CONFIG_SHELL, we're ensured to have + # already done that, so ensure we don't try to do so again and fall + # in an infinite loop. This has already happened in practice. + _as_can_reexec=no; export _as_can_reexec + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensitive to this). + . "./$as_me.lineno" + # Exit status is that of the last command. + exit +} + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +as_test_x='test -x' +as_executable_p=as_fn_executable_p + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + +SHELL=${CONFIG_SHELL-/bin/sh} + + +test -n "$DJDIR" || exec 7<&0 &1 + +# Name of the host. +# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, +# so uname gets run too. +ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` + +# +# Initializations. +# +ac_default_prefix=/usr/local +ac_clean_files= +ac_config_libobj_dir=. +LIBOBJS= +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= + +# Identity of this package. +PACKAGE_NAME='gsl' +PACKAGE_TARNAME='gsl' +PACKAGE_VERSION='2.5' +PACKAGE_STRING='gsl 2.5' +PACKAGE_BUGREPORT='' +PACKAGE_URL='' + +ac_unique_file="gsl_math.h" +# Factoring default headers for most tests. +ac_includes_default="\ +#include +#ifdef HAVE_SYS_TYPES_H +# include +#endif +#ifdef HAVE_SYS_STAT_H +# include +#endif +#ifdef STDC_HEADERS +# include +# include +#else +# ifdef HAVE_STDLIB_H +# include +# endif +#endif +#ifdef HAVE_STRING_H +# if !defined STDC_HEADERS && defined HAVE_MEMORY_H +# include +# endif +# include +#endif +#ifdef HAVE_STRINGS_H +# include +#endif +#ifdef HAVE_INTTYPES_H +# include +#endif +#ifdef HAVE_STDINT_H +# include +#endif +#ifdef HAVE_UNISTD_H +# include +#endif" + +ac_subst_vars='am__EXEEXT_FALSE +am__EXEEXT_TRUE +LTLIBOBJS +HAVE_DARWIN86_IEEE_INTERFACE +HAVE_DARWIN_IEEE_INTERFACE +HAVE_OPENBSD_IEEE_INTERFACE +HAVE_NETBSD_IEEE_INTERFACE +HAVE_OS2EMX_IEEE_INTERFACE +HAVE_FREEBSD_IEEE_INTERFACE +HAVE_AIX_IEEE_INTERFACE +HAVE_IRIX_IEEE_INTERFACE +HAVE_TRU64_IEEE_INTERFACE +HAVE_HPUX_IEEE_INTERFACE +HAVE_HPUX11_IEEE_INTERFACE +HAVE_SOLARIS_IEEE_INTERFACE +HAVE_SUNOS4_IEEE_INTERFACE +HAVE_GNUX86_IEEE_INTERFACE +HAVE_GNUPPC_IEEE_INTERFACE +HAVE_GNUM68K_IEEE_INTERFACE +HAVE_GNUSPARC_IEEE_INTERFACE +LIBOBJS +GSL_LIBADD +GSL_LDFLAGS +GSLCBLAS_LDFLAGS +GSL_LIBM +GSL_LIBS +GSL_CFLAGS +LIBM +OTOOL64 +OTOOL +LIPO +NMEDIT +DSYMUTIL +MANIFEST_TOOL +RANLIB +ac_ct_AR +AR +NM +ac_ct_DUMPBIN +DUMPBIN +LD +FGREP +EGREP +GREP +LIBTOOL +OBJDUMP +DLLTOOL +AS +LN_S +CPP +am__fastdepCC_FALSE +am__fastdepCC_TRUE +CCDEPMODE +am__nodep +AMDEPBACKSLASH +AMDEP_FALSE +AMDEP_TRUE +am__quote +am__include +DEPDIR +OBJEXT +EXEEXT +ac_ct_CC +CPPFLAGS +LDFLAGS +CFLAGS +CC +host_os +host_vendor +host_cpu +host +build_os +build_vendor +build_cpu +build +GSL_MINOR_VERSION +GSL_MAJOR_VERSION +SED +GSL_LT_CBLAS_VERSION +GSL_LT_VERSION +MAINT +MAINTAINER_MODE_FALSE +MAINTAINER_MODE_TRUE +AM_BACKSLASH +AM_DEFAULT_VERBOSITY +AM_DEFAULT_V +AM_V +am__untar +am__tar +AMTAR +am__leading_dot +SET_MAKE +AWK +mkdir_p +MKDIR_P +INSTALL_STRIP_PROGRAM +STRIP +install_sh +MAKEINFO +AUTOHEADER +AUTOMAKE +AUTOCONF +ACLOCAL +VERSION +PACKAGE +CYGPATH_W +am__isrc +INSTALL_DATA +INSTALL_SCRIPT +INSTALL_PROGRAM +target_alias +host_alias +build_alias +LIBS +ECHO_T +ECHO_N +ECHO_C +DEFS +mandir +localedir +libdir +psdir +pdfdir +dvidir +htmldir +infodir +docdir +oldincludedir +includedir +localstatedir +sharedstatedir +sysconfdir +datadir +datarootdir +libexecdir +sbindir +bindir +program_transform_name +prefix +exec_prefix +PACKAGE_URL +PACKAGE_BUGREPORT +PACKAGE_STRING +PACKAGE_VERSION +PACKAGE_TARNAME +PACKAGE_NAME +PATH_SEPARATOR +SHELL' +ac_subst_files='' +ac_user_opts=' +enable_option_checking +enable_silent_rules +enable_maintainer_mode +enable_dependency_tracking +enable_shared +enable_static +with_pic +enable_fast_install +with_gnu_ld +with_sysroot +enable_libtool_lock +' + ac_precious_vars='build_alias +host_alias +target_alias +CC +CFLAGS +LDFLAGS +LIBS +CPPFLAGS +CPP' + + +# Initialize some variables set by options. +ac_init_help= +ac_init_version=false +ac_unrecognized_opts= +ac_unrecognized_sep= +# The variables have the same names as the options, with +# dashes changed to underlines. +cache_file=/dev/null +exec_prefix=NONE +no_create= +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +verbose= +x_includes=NONE +x_libraries=NONE + +# Installation directory options. +# These are left unexpanded so users can "make install exec_prefix=/foo" +# and all the variables that are supposed to be based on exec_prefix +# by default will actually change. +# Use braces instead of parens because sh, perl, etc. also accept them. +# (The list follows the same order as the GNU Coding Standards.) +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datarootdir='${prefix}/share' +datadir='${datarootdir}' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +includedir='${prefix}/include' +oldincludedir='/usr/include' +docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' +infodir='${datarootdir}/info' +htmldir='${docdir}' +dvidir='${docdir}' +pdfdir='${docdir}' +psdir='${docdir}' +libdir='${exec_prefix}/lib' +localedir='${datarootdir}/locale' +mandir='${datarootdir}/man' + +ac_prev= +ac_dashdash= +for ac_option +do + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval $ac_prev=\$ac_option + ac_prev= + continue + fi + + case $ac_option in + *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; + *=) ac_optarg= ;; + *) ac_optarg=yes ;; + esac + + # Accept the important Cygnus configure options, so we can diagnose typos. + + case $ac_dashdash$ac_option in + --) + ac_dashdash=yes ;; + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) + bindir=$ac_optarg ;; + + -build | --build | --buil | --bui | --bu) + ac_prev=build_alias ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build_alias=$ac_optarg ;; + + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + cache_file=$ac_optarg ;; + + --config-cache | -C) + cache_file=config.cache ;; + + -datadir | --datadir | --datadi | --datad) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=*) + datadir=$ac_optarg ;; + + -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ + | --dataroo | --dataro | --datar) + ac_prev=datarootdir ;; + -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ + | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) + datarootdir=$ac_optarg ;; + + -disable-* | --disable-*) + ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid feature name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=no ;; + + -docdir | --docdir | --docdi | --doc | --do) + ac_prev=docdir ;; + -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) + docdir=$ac_optarg ;; + + -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) + ac_prev=dvidir ;; + -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) + dvidir=$ac_optarg ;; + + -enable-* | --enable-*) + ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid feature name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=\$ac_optarg ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ + | --exec | --exe | --ex) + ac_prev=exec_prefix ;; + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ + | --exec=* | --exe=* | --ex=*) + exec_prefix=$ac_optarg ;; + + -gas | --gas | --ga | --g) + # Obsolete; use --with-gas. + with_gas=yes ;; + + -help | --help | --hel | --he | -h) + ac_init_help=long ;; + -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) + ac_init_help=recursive ;; + -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) + ac_init_help=short ;; + + -host | --host | --hos | --ho) + ac_prev=host_alias ;; + -host=* | --host=* | --hos=* | --ho=*) + host_alias=$ac_optarg ;; + + -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) + ac_prev=htmldir ;; + -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ + | --ht=*) + htmldir=$ac_optarg ;; + + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ + | --includ=* | --inclu=* | --incl=* | --inc=*) + includedir=$ac_optarg ;; + + -infodir | --infodir | --infodi | --infod | --info | --inf) + ac_prev=infodir ;; + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) + infodir=$ac_optarg ;; + + -libdir | --libdir | --libdi | --libd) + ac_prev=libdir ;; + -libdir=* | --libdir=* | --libdi=* | --libd=*) + libdir=$ac_optarg ;; + + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ + | --libexe | --libex | --libe) + ac_prev=libexecdir ;; + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ + | --libexe=* | --libex=* | --libe=*) + libexecdir=$ac_optarg ;; + + -localedir | --localedir | --localedi | --localed | --locale) + ac_prev=localedir ;; + -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) + localedir=$ac_optarg ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst | --locals) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) + localstatedir=$ac_optarg ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) + ac_prev=mandir ;; + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) + mandir=$ac_optarg ;; + + -nfp | --nfp | --nf) + # Obsolete; use --without-fp. + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c | -n) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + no_recursion=yes ;; + + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ + | --oldin | --oldi | --old | --ol | --o) + ac_prev=oldincludedir ;; + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) + oldincludedir=$ac_optarg ;; + + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + prefix=$ac_optarg ;; + + -program-prefix | --program-prefix | --program-prefi | --program-pref \ + | --program-pre | --program-pr | --program-p) + ac_prev=program_prefix ;; + -program-prefix=* | --program-prefix=* | --program-prefi=* \ + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) + program_prefix=$ac_optarg ;; + + -program-suffix | --program-suffix | --program-suffi | --program-suff \ + | --program-suf | --program-su | --program-s) + ac_prev=program_suffix ;; + -program-suffix=* | --program-suffix=* | --program-suffi=* \ + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) + program_suffix=$ac_optarg ;; + + -program-transform-name | --program-transform-name \ + | --program-transform-nam | --program-transform-na \ + | --program-transform-n | --program-transform- \ + | --program-transform | --program-transfor \ + | --program-transfo | --program-transf \ + | --program-trans | --program-tran \ + | --progr-tra | --program-tr | --program-t) + ac_prev=program_transform_name ;; + -program-transform-name=* | --program-transform-name=* \ + | --program-transform-nam=* | --program-transform-na=* \ + | --program-transform-n=* | --program-transform-=* \ + | --program-transform=* | --program-transfor=* \ + | --program-transfo=* | --program-transf=* \ + | --program-trans=* | --program-tran=* \ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name=$ac_optarg ;; + + -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) + ac_prev=pdfdir ;; + -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) + pdfdir=$ac_optarg ;; + + -psdir | --psdir | --psdi | --psd | --ps) + ac_prev=psdir ;; + -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) + psdir=$ac_optarg ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ + | --sbi=* | --sb=*) + sbindir=$ac_optarg ;; + + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ + | --sha | --sh) + ac_prev=sharedstatedir ;; + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ + | --sha=* | --sh=*) + sharedstatedir=$ac_optarg ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site=$ac_optarg ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir=$ac_optarg ;; + + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ + | --syscon | --sysco | --sysc | --sys | --sy) + ac_prev=sysconfdir ;; + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) + sysconfdir=$ac_optarg ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target_alias ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target_alias=$ac_optarg ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers | -V) + ac_init_version=: ;; + + -with-* | --with-*) + ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid package name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=\$ac_optarg ;; + + -without-* | --without-*) + ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid package name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=no ;; + + --x) + # Obsolete; use --with-x. + with_x=yes ;; + + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ + | --x-incl | --x-inc | --x-in | --x-i) + ac_prev=x_includes ;; + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) + x_includes=$ac_optarg ;; + + -x-libraries | --x-libraries | --x-librarie | --x-librari \ + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) + ac_prev=x_libraries ;; + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) + x_libraries=$ac_optarg ;; + + -*) as_fn_error $? "unrecognized option: \`$ac_option' +Try \`$0 --help' for more information" + ;; + + *=*) + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` + # Reject names that are not valid shell variable names. + case $ac_envvar in #( + '' | [0-9]* | *[!_$as_cr_alnum]* ) + as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; + esac + eval $ac_envvar=\$ac_optarg + export $ac_envvar ;; + + *) + # FIXME: should be removed in autoconf 3.0. + $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 + : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" + ;; + + esac +done + +if test -n "$ac_prev"; then + ac_option=--`echo $ac_prev | sed 's/_/-/g'` + as_fn_error $? "missing argument to $ac_option" +fi + +if test -n "$ac_unrecognized_opts"; then + case $enable_option_checking in + no) ;; + fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; + *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; + esac +fi + +# Check all directory arguments for consistency. +for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ + datadir sysconfdir sharedstatedir localstatedir includedir \ + oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ + libdir localedir mandir +do + eval ac_val=\$$ac_var + # Remove trailing slashes. + case $ac_val in + */ ) + ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` + eval $ac_var=\$ac_val;; + esac + # Be sure to have absolute directory names. + case $ac_val in + [\\/$]* | ?:[\\/]* ) continue;; + NONE | '' ) case $ac_var in *prefix ) continue;; esac;; + esac + as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" +done + +# There might be people who depend on the old broken behavior: `$host' +# used to hold the argument of --host etc. +# FIXME: To remove some day. +build=$build_alias +host=$host_alias +target=$target_alias + +# FIXME: To remove some day. +if test "x$host_alias" != x; then + if test "x$build_alias" = x; then + cross_compiling=maybe + elif test "x$build_alias" != "x$host_alias"; then + cross_compiling=yes + fi +fi + +ac_tool_prefix= +test -n "$host_alias" && ac_tool_prefix=$host_alias- + +test "$silent" = yes && exec 6>/dev/null + + +ac_pwd=`pwd` && test -n "$ac_pwd" && +ac_ls_di=`ls -di .` && +ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || + as_fn_error $? "working directory cannot be determined" +test "X$ac_ls_di" = "X$ac_pwd_ls_di" || + as_fn_error $? "pwd does not report name of working directory" + + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then the parent directory. + ac_confdir=`$as_dirname -- "$as_myself" || +$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_myself" : 'X\(//\)[^/]' \| \ + X"$as_myself" : 'X\(//\)$' \| \ + X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_myself" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + srcdir=$ac_confdir + if test ! -r "$srcdir/$ac_unique_file"; then + srcdir=.. + fi +else + ac_srcdir_defaulted=no +fi +if test ! -r "$srcdir/$ac_unique_file"; then + test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." + as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" +fi +ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" +ac_abs_confdir=`( + cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" + pwd)` +# When building in place, set srcdir=. +if test "$ac_abs_confdir" = "$ac_pwd"; then + srcdir=. +fi +# Remove unnecessary trailing slashes from srcdir. +# Double slashes in file names in object file debugging info +# mess up M-x gdb in Emacs. +case $srcdir in +*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; +esac +for ac_var in $ac_precious_vars; do + eval ac_env_${ac_var}_set=\${${ac_var}+set} + eval ac_env_${ac_var}_value=\$${ac_var} + eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} + eval ac_cv_env_${ac_var}_value=\$${ac_var} +done + +# +# Report the --help message. +# +if test "$ac_init_help" = "long"; then + # Omit some internal or obsolete options to make the list less imposing. + # This message is too long to be a string in the A/UX 3.1 sh. + cat <<_ACEOF +\`configure' configures gsl 2.5 to adapt to many kinds of systems. + +Usage: $0 [OPTION]... [VAR=VALUE]... + +To assign environment variables (e.g., CC, CFLAGS...), specify them as +VAR=VALUE. See below for descriptions of some of the useful variables. + +Defaults for the options are specified in brackets. + +Configuration: + -h, --help display this help and exit + --help=short display options specific to this package + --help=recursive display the short help of all the included packages + -V, --version display version information and exit + -q, --quiet, --silent do not print \`checking ...' messages + --cache-file=FILE cache test results in FILE [disabled] + -C, --config-cache alias for \`--cache-file=config.cache' + -n, --no-create do not create output files + --srcdir=DIR find the sources in DIR [configure dir or \`..'] + +Installation directories: + --prefix=PREFIX install architecture-independent files in PREFIX + [$ac_default_prefix] + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + [PREFIX] + +By default, \`make install' will install all the files in +\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify +an installation prefix other than \`$ac_default_prefix' using \`--prefix', +for instance \`--prefix=\$HOME'. + +For better control, use the options below. + +Fine tuning of the installation directories: + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] + --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] + --datadir=DIR read-only architecture-independent data [DATAROOTDIR] + --infodir=DIR info documentation [DATAROOTDIR/info] + --localedir=DIR locale-dependent data [DATAROOTDIR/locale] + --mandir=DIR man documentation [DATAROOTDIR/man] + --docdir=DIR documentation root [DATAROOTDIR/doc/gsl] + --htmldir=DIR html documentation [DOCDIR] + --dvidir=DIR dvi documentation [DOCDIR] + --pdfdir=DIR pdf documentation [DOCDIR] + --psdir=DIR ps documentation [DOCDIR] +_ACEOF + + cat <<\_ACEOF + +Program names: + --program-prefix=PREFIX prepend PREFIX to installed program names + --program-suffix=SUFFIX append SUFFIX to installed program names + --program-transform-name=PROGRAM run sed PROGRAM on installed program names + +System types: + --build=BUILD configure for building on BUILD [guessed] + --host=HOST cross-compile to build programs to run on HOST [BUILD] +_ACEOF +fi + +if test -n "$ac_init_help"; then + case $ac_init_help in + short | recursive ) echo "Configuration of gsl 2.5:";; + esac + cat <<\_ACEOF + +Optional Features: + --disable-option-checking ignore unrecognized --enable/--with options + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --enable-silent-rules less verbose build output (undo: "make V=1") + --disable-silent-rules verbose build output (undo: "make V=0") + --enable-maintainer-mode + enable make rules and dependencies not useful (and + sometimes confusing) to the casual installer + --enable-dependency-tracking + do not reject slow dependency extractors + --disable-dependency-tracking + speeds up one-time build + --enable-shared[=PKGS] build shared libraries [default=yes] + --enable-static[=PKGS] build static libraries [default=yes] + --enable-fast-install[=PKGS] + optimize for fast installation [default=yes] + --disable-libtool-lock avoid locking (might break parallel builds) + +Optional Packages: + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) + --with-pic[=PKGS] try to use only PIC/non-PIC objects [default=use + both] + --with-gnu-ld assume the C compiler uses GNU ld [default=no] + --with-sysroot=DIR Search for dependent libraries within DIR + (or the compiler's sysroot if not specified). + +Some influential environment variables: + CC C compiler command + CFLAGS C compiler flags + LDFLAGS linker flags, e.g. -L if you have libraries in a + nonstandard directory + LIBS libraries to pass to the linker, e.g. -l + CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if + you have headers in a nonstandard directory + CPP C preprocessor + +Use these variables to override the choices made by `configure' or to help +it to find libraries and programs with nonstandard names/locations. + +Report bugs to the package provider. +_ACEOF +ac_status=$? +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue + test -d "$ac_dir" || + { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || + continue + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + cd "$ac_dir" || { ac_status=$?; continue; } + # Check for guested configure. + if test -f "$ac_srcdir/configure.gnu"; then + echo && + $SHELL "$ac_srcdir/configure.gnu" --help=recursive + elif test -f "$ac_srcdir/configure"; then + echo && + $SHELL "$ac_srcdir/configure" --help=recursive + else + $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi || ac_status=$? + cd "$ac_pwd" || { ac_status=$?; break; } + done +fi + +test -n "$ac_init_help" && exit $ac_status +if $ac_init_version; then + cat <<\_ACEOF +gsl configure 2.5 +generated by GNU Autoconf 2.69 + +Copyright (C) 2012 Free Software Foundation, Inc. +This configure script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it. +_ACEOF + exit +fi + +## ------------------------ ## +## Autoconf initialization. ## +## ------------------------ ## + +# ac_fn_c_try_compile LINENO +# -------------------------- +# Try to compile conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext + if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_compile + +# ac_fn_c_try_cpp LINENO +# ---------------------- +# Try to preprocess conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_cpp () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } > conftest.i && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_cpp + +# ac_fn_c_try_link LINENO +# ----------------------- +# Try to link conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_link () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext conftest$ac_exeext + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + test -x conftest$ac_exeext + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information + # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would + # interfere with the next link command; also delete a directory that is + # left behind by Apple's compiler. We do this before executing the actions. + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_link + +# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES +# ------------------------------------------------------- +# Tests whether HEADER exists and can be compiled using the include files in +# INCLUDES, setting the cache variable VAR accordingly. +ac_fn_c_check_header_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +#include <$2> +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + eval "$3=yes" +else + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_header_compile + +# ac_fn_c_try_run LINENO +# ---------------------- +# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes +# that executables *can* be run. +ac_fn_c_try_run () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + ac_retval=0 +else + $as_echo "$as_me: program exited with status $ac_status" >&5 + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=$ac_status +fi + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_run + +# ac_fn_c_check_func LINENO FUNC VAR +# ---------------------------------- +# Tests whether FUNC exists, setting the cache variable VAR accordingly +ac_fn_c_check_func () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +/* Define $2 to an innocuous variant, in case declares $2. + For example, HP-UX 11i declares gettimeofday. */ +#define $2 innocuous_$2 + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $2 (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef $2 + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char $2 (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_$2 || defined __stub___$2 +choke me +#endif + +int +main () +{ +return $2 (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval "$3=yes" +else + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_func + +# ac_fn_c_check_type LINENO TYPE VAR INCLUDES +# ------------------------------------------- +# Tests whether TYPE exists after having included INCLUDES, setting cache +# variable VAR accordingly. +ac_fn_c_check_type () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + eval "$3=no" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +if (sizeof ($2)) + return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +if (sizeof (($2))) + return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + +else + eval "$3=yes" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_type + +# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES +# ------------------------------------------------------- +# Tests whether HEADER exists, giving a warning if it cannot be compiled using +# the include files in INCLUDES and setting the cache variable VAR +# accordingly. +ac_fn_c_check_header_mongrel () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if eval \${$3+:} false; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +else + # Is the header compilable? +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 +$as_echo_n "checking $2 usability... " >&6; } +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +#include <$2> +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_header_compiler=yes +else + ac_header_compiler=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 +$as_echo "$ac_header_compiler" >&6; } + +# Is the header present? +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 +$as_echo_n "checking $2 presence... " >&6; } +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <$2> +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + ac_header_preproc=yes +else + ac_header_preproc=no +fi +rm -f conftest.err conftest.i conftest.$ac_ext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 +$as_echo "$ac_header_preproc" >&6; } + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( + yes:no: ) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 +$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 +$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} + ;; + no:yes:* ) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 +$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 +$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 +$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 +$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 +$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} + ;; +esac + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + eval "$3=\$ac_header_compiler" +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_header_mongrel + +# ac_fn_c_check_decl LINENO SYMBOL VAR INCLUDES +# --------------------------------------------- +# Tests whether SYMBOL is declared in INCLUDES, setting cache variable VAR +# accordingly. +ac_fn_c_check_decl () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + as_decl_name=`echo $2|sed 's/ *(.*//'` + as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'` + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5 +$as_echo_n "checking whether $as_decl_name is declared... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +#ifndef $as_decl_name +#ifdef __cplusplus + (void) $as_decl_use; +#else + (void) $as_decl_name; +#endif +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + eval "$3=yes" +else + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_decl +cat >config.log <<_ACEOF +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +It was created by gsl $as_me 2.5, which was +generated by GNU Autoconf 2.69. Invocation command line was + + $ $0 $@ + +_ACEOF +exec 5>>config.log +{ +cat <<_ASUNAME +## --------- ## +## Platform. ## +## --------- ## + +hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` + +/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` +/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` +/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` +/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` + +_ASUNAME + +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + $as_echo "PATH: $as_dir" + done +IFS=$as_save_IFS + +} >&5 + +cat >&5 <<_ACEOF + + +## ----------- ## +## Core tests. ## +## ----------- ## + +_ACEOF + + +# Keep a trace of the command line. +# Strip out --no-create and --no-recursion so they do not pile up. +# Strip out --silent because we don't want to record it for future runs. +# Also quote any args containing shell meta-characters. +# Make two passes to allow for proper duplicate-argument suppression. +ac_configure_args= +ac_configure_args0= +ac_configure_args1= +ac_must_keep_next=false +for ac_pass in 1 2 +do + for ac_arg + do + case $ac_arg in + -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + continue ;; + *\'*) + ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + case $ac_pass in + 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; + 2) + as_fn_append ac_configure_args1 " '$ac_arg'" + if test $ac_must_keep_next = true; then + ac_must_keep_next=false # Got value, back to normal. + else + case $ac_arg in + *=* | --config-cache | -C | -disable-* | --disable-* \ + | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ + | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ + | -with-* | --with-* | -without-* | --without-* | --x) + case "$ac_configure_args0 " in + "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; + esac + ;; + -* ) ac_must_keep_next=true ;; + esac + fi + as_fn_append ac_configure_args " '$ac_arg'" + ;; + esac + done +done +{ ac_configure_args0=; unset ac_configure_args0;} +{ ac_configure_args1=; unset ac_configure_args1;} + +# When interrupted or exit'd, cleanup temporary files, and complete +# config.log. We remove comments because anyway the quotes in there +# would cause problems or look ugly. +# WARNING: Use '\'' to represent an apostrophe within the trap. +# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. +trap 'exit_status=$? + # Save into config.log some information that might help in debugging. + { + echo + + $as_echo "## ---------------- ## +## Cache variables. ## +## ---------------- ##" + echo + # The following way of writing the cache mishandles newlines in values, +( + for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + (set) 2>&1 | + case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + sed -n \ + "s/'\''/'\''\\\\'\'''\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" + ;; #( + *) + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) + echo + + $as_echo "## ----------------- ## +## Output variables. ## +## ----------------- ##" + echo + for ac_var in $ac_subst_vars + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + $as_echo "$ac_var='\''$ac_val'\''" + done | sort + echo + + if test -n "$ac_subst_files"; then + $as_echo "## ------------------- ## +## File substitutions. ## +## ------------------- ##" + echo + for ac_var in $ac_subst_files + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + $as_echo "$ac_var='\''$ac_val'\''" + done | sort + echo + fi + + if test -s confdefs.h; then + $as_echo "## ----------- ## +## confdefs.h. ## +## ----------- ##" + echo + cat confdefs.h + echo + fi + test "$ac_signal" != 0 && + $as_echo "$as_me: caught signal $ac_signal" + $as_echo "$as_me: exit $exit_status" + } >&5 + rm -f core *.core core.conftest.* && + rm -f -r conftest* confdefs* conf$$* $ac_clean_files && + exit $exit_status +' 0 +for ac_signal in 1 2 13 15; do + trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal +done +ac_signal=0 + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -f -r conftest* confdefs.h + +$as_echo "/* confdefs.h */" > confdefs.h + +# Predefined preprocessor variables. + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_NAME "$PACKAGE_NAME" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_TARNAME "$PACKAGE_TARNAME" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_VERSION "$PACKAGE_VERSION" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_STRING "$PACKAGE_STRING" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_URL "$PACKAGE_URL" +_ACEOF + + +# Let the site file select an alternate cache file if it wants to. +# Prefer an explicitly selected file to automatically selected ones. +ac_site_file1=NONE +ac_site_file2=NONE +if test -n "$CONFIG_SITE"; then + # We do not want a PATH search for config.site. + case $CONFIG_SITE in #(( + -*) ac_site_file1=./$CONFIG_SITE;; + */*) ac_site_file1=$CONFIG_SITE;; + *) ac_site_file1=./$CONFIG_SITE;; + esac +elif test "x$prefix" != xNONE; then + ac_site_file1=$prefix/share/config.site + ac_site_file2=$prefix/etc/config.site +else + ac_site_file1=$ac_default_prefix/share/config.site + ac_site_file2=$ac_default_prefix/etc/config.site +fi +for ac_site_file in "$ac_site_file1" "$ac_site_file2" +do + test "x$ac_site_file" = xNONE && continue + if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 +$as_echo "$as_me: loading site script $ac_site_file" >&6;} + sed 's/^/| /' "$ac_site_file" >&5 + . "$ac_site_file" \ + || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "failed to load site script $ac_site_file +See \`config.log' for more details" "$LINENO" 5; } + fi +done + +if test -r "$cache_file"; then + # Some versions of bash will fail to source /dev/null (special files + # actually), so we avoid doing that. DJGPP emulates it as a regular file. + if test /dev/null != "$cache_file" && test -f "$cache_file"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 +$as_echo "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . "$cache_file";; + *) . "./$cache_file";; + esac + fi +else + { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 +$as_echo "$as_me: creating cache $cache_file" >&6;} + >$cache_file +fi + +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in $ac_precious_vars; do + eval ac_old_set=\$ac_cv_env_${ac_var}_set + eval ac_new_set=\$ac_env_${ac_var}_set + eval ac_old_val=\$ac_cv_env_${ac_var}_value + eval ac_new_val=\$ac_env_${ac_var}_value + case $ac_old_set,$ac_new_set in + set,) + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 +$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,);; + *) + if test "x$ac_old_val" != "x$ac_new_val"; then + # differences in whitespace do not lead to failure. + ac_old_val_w=`echo x $ac_old_val` + ac_new_val_w=`echo x $ac_new_val` + if test "$ac_old_val_w" != "$ac_new_val_w"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 +$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + ac_cache_corrupted=: + else + { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 +$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} + eval $ac_var=\$ac_old_val + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 +$as_echo "$as_me: former value: \`$ac_old_val'" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 +$as_echo "$as_me: current value: \`$ac_new_val'" >&2;} + fi;; + esac + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in + *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *) ac_arg=$ac_var=$ac_new_val ;; + esac + case " $ac_configure_args " in + *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. + *) as_fn_append ac_configure_args " '$ac_arg'" ;; + esac + fi +done +if $ac_cache_corrupted; then + { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 +$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} + as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 +fi +## -------------------- ## +## Main body of script. ## +## -------------------- ## + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + + +am__api_version='1.13' + +ac_aux_dir= +for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do + if test -f "$ac_dir/install-sh"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install-sh -c" + break + elif test -f "$ac_dir/install.sh"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install.sh -c" + break + elif test -f "$ac_dir/shtool"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/shtool install -c" + break + fi +done +if test -z "$ac_aux_dir"; then + as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 +fi + +# These three variables are undocumented and unsupported, +# and are intended to be withdrawn in a future Autoconf release. +# They can cause serious problems if a builder's source tree is in a directory +# whose full name contains unusual characters. +ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. +ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. +ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. + + +# Find a good install program. We prefer a C program (faster), +# so one script is as good as another. But avoid the broken or +# incompatible versions: +# SysV /etc/install, /usr/sbin/install +# SunOS /usr/etc/install +# IRIX /sbin/install +# AIX /bin/install +# AmigaOS /C/install, which installs bootblocks on floppy discs +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +# AFS /usr/afsws/bin/install, which mishandles nonexistent args +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# OS/2's system install, which has a completely different semantic +# ./install, which can be erroneously created by make from ./install.sh. +# Reject install programs that cannot install multiple files. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 +$as_echo_n "checking for a BSD-compatible install... " >&6; } +if test -z "$INSTALL"; then +if ${ac_cv_path_install+:} false; then : + $as_echo_n "(cached) " >&6 +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + # Account for people who put trailing slashes in PATH elements. +case $as_dir/ in #(( + ./ | .// | /[cC]/* | \ + /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ + ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ + /usr/ucb/* ) ;; + *) + # OSF1 and SCO ODT 3.0 have their own names for install. + # Don't use installbsd from OSF since it installs stuff as root + # by default. + for ac_prog in ginstall scoinst install; do + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then + if test $ac_prog = install && + grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. + : + elif test $ac_prog = install && + grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # program-specific install script used by HP pwplus--don't use. + : + else + rm -rf conftest.one conftest.two conftest.dir + echo one > conftest.one + echo two > conftest.two + mkdir conftest.dir + if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && + test -s conftest.one && test -s conftest.two && + test -s conftest.dir/conftest.one && + test -s conftest.dir/conftest.two + then + ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" + break 3 + fi + fi + fi + done + done + ;; +esac + + done +IFS=$as_save_IFS + +rm -rf conftest.one conftest.two conftest.dir + +fi + if test "${ac_cv_path_install+set}" = set; then + INSTALL=$ac_cv_path_install + else + # As a last resort, use the slow shell script. Don't cache a + # value for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + INSTALL=$ac_install_sh + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 +$as_echo "$INSTALL" >&6; } + +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# It thinks the first close brace ends the variable substitution. +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' + +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' + +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 +$as_echo_n "checking whether build environment is sane... " >&6; } +# Reject unsafe characters in $srcdir or the absolute working directory +# name. Accept space and tab only in the latter. +am_lf=' +' +case `pwd` in + *[\\\"\#\$\&\'\`$am_lf]*) + as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; +esac +case $srcdir in + *[\\\"\#\$\&\'\`$am_lf\ \ ]*) + as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;; +esac + +# Do 'set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + am_has_slept=no + for am_try in 1 2; do + echo "timestamp, slept: $am_has_slept" > conftest.file + set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` + if test "$*" = "X"; then + # -L didn't work. + set X `ls -t "$srcdir/configure" conftest.file` + fi + if test "$*" != "X $srcdir/configure conftest.file" \ + && test "$*" != "X conftest.file $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + as_fn_error $? "ls -t appears to fail. Make sure there is not a broken + alias in your environment" "$LINENO" 5 + fi + if test "$2" = conftest.file || test $am_try -eq 2; then + break + fi + # Just in case. + sleep 1 + am_has_slept=yes + done + test "$2" = conftest.file + ) +then + # Ok. + : +else + as_fn_error $? "newly created file is older than distributed files! +Check your system clock" "$LINENO" 5 +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +# If we didn't sleep, we still need to ensure time stamps of config.status and +# generated files are strictly newer. +am_sleep_pid= +if grep 'slept: no' conftest.file >/dev/null 2>&1; then + ( sleep 1 ) & + am_sleep_pid=$! +fi + +rm -f conftest.file + +test "$program_prefix" != NONE && + program_transform_name="s&^&$program_prefix&;$program_transform_name" +# Use a double $ so make ignores it. +test "$program_suffix" != NONE && + program_transform_name="s&\$&$program_suffix&;$program_transform_name" +# Double any \ or $. +# By default was `s,x,x', remove it if useless. +ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' +program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` + +# expand $ac_aux_dir to an absolute path +am_aux_dir=`cd $ac_aux_dir && pwd` + +if test x"${MISSING+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; + *) + MISSING="\${SHELL} $am_aux_dir/missing" ;; + esac +fi +# Use eval to expand $SHELL +if eval "$MISSING --is-lightweight"; then + am_missing_run="$MISSING " +else + am_missing_run= + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5 +$as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;} +fi + +if test x"${install_sh}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; + *) + install_sh="\${SHELL} $am_aux_dir/install-sh" + esac +fi + +# Installed binaries are usually stripped using 'strip' when the user +# run "make install-strip". However 'strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the 'STRIP' environment variable to overrule this program. +if test "$cross_compiling" != no; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +set dummy ${ac_tool_prefix}strip; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_STRIP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 +$as_echo "$STRIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. +set dummy strip; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_STRIP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_STRIP="strip" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 +$as_echo "$ac_ct_STRIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_STRIP" = x; then + STRIP=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + STRIP=$ac_ct_STRIP + fi +else + STRIP="$ac_cv_prog_STRIP" +fi + +fi +INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 +$as_echo_n "checking for a thread-safe mkdir -p... " >&6; } +if test -z "$MKDIR_P"; then + if ${ac_cv_path_mkdir+:} false; then : + $as_echo_n "(cached) " >&6 +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in mkdir gmkdir; do + for ac_exec_ext in '' $ac_executable_extensions; do + as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue + case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( + 'mkdir (GNU coreutils) '* | \ + 'mkdir (coreutils) '* | \ + 'mkdir (fileutils) '4.1*) + ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext + break 3;; + esac + done + done + done +IFS=$as_save_IFS + +fi + + test -d ./--version && rmdir ./--version + if test "${ac_cv_path_mkdir+set}" = set; then + MKDIR_P="$ac_cv_path_mkdir -p" + else + # As a last resort, use the slow shell script. Don't cache a + # value for MKDIR_P within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + MKDIR_P="$ac_install_sh -d" + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 +$as_echo "$MKDIR_P" >&6; } + +for ac_prog in gawk mawk nawk awk +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_AWK+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$AWK"; then + ac_cv_prog_AWK="$AWK" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_AWK="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +AWK=$ac_cv_prog_AWK +if test -n "$AWK"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 +$as_echo "$AWK" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$AWK" && break +done + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } +set x ${MAKE-make} +ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` +if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat >conftest.make <<\_ACEOF +SHELL = /bin/sh +all: + @echo '@@@%%%=$(MAKE)=@@@%%%' +_ACEOF +# GNU make sometimes prints "make[1]: Entering ...", which would confuse us. +case `${MAKE-make} -f conftest.make 2>/dev/null` in + *@@@%%%=?*=@@@%%%*) + eval ac_cv_prog_make_${ac_make}_set=yes;; + *) + eval ac_cv_prog_make_${ac_make}_set=no;; +esac +rm -f conftest.make +fi +if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + SET_MAKE= +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + SET_MAKE="MAKE=${MAKE-make}" +fi + +rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null + +# Check whether --enable-silent-rules was given. +if test "${enable_silent_rules+set}" = set; then : + enableval=$enable_silent_rules; +fi + +case $enable_silent_rules in # ((( + yes) AM_DEFAULT_VERBOSITY=0;; + no) AM_DEFAULT_VERBOSITY=1;; + *) AM_DEFAULT_VERBOSITY=1;; +esac +am_make=${MAKE-make} +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 +$as_echo_n "checking whether $am_make supports nested variables... " >&6; } +if ${am_cv_make_support_nested_variables+:} false; then : + $as_echo_n "(cached) " >&6 +else + if $as_echo 'TRUE=$(BAR$(V)) +BAR0=false +BAR1=true +V=1 +am__doit: + @$(TRUE) +.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then + am_cv_make_support_nested_variables=yes +else + am_cv_make_support_nested_variables=no +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 +$as_echo "$am_cv_make_support_nested_variables" >&6; } +if test $am_cv_make_support_nested_variables = yes; then + AM_V='$(V)' + AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' +else + AM_V=$AM_DEFAULT_VERBOSITY + AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY +fi +AM_BACKSLASH='\' + +if test "`cd $srcdir && pwd`" != "`pwd`"; then + # Use -I$(srcdir) only when $(srcdir) != ., so that make's output + # is not polluted with repeated "-I." + am__isrc=' -I$(srcdir)' + # test to see if srcdir already configured + if test -f $srcdir/config.status; then + as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 + fi +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi + + +# Define the identity of the package. + PACKAGE='gsl' + VERSION='2.5' + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE "$PACKAGE" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define VERSION "$VERSION" +_ACEOF + +# Some tools Automake needs. + +ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} + + +AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} + + +AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} + + +AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} + + +MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} + +# For better backward compatibility. To be removed once Automake 1.9.x +# dies out for good. For more background, see: +# +# +mkdir_p='$(MKDIR_P)' + +# We need awk for the "check" target. The system "awk" is bad on +# some platforms. +# Always define AMTAR for backward compatibility. Yes, it's still used +# in the wild :-( We should find a proper way to deprecate it ... +AMTAR='$${TAR-tar}' + + +# We'll loop over all known methods to create a tar archive until one works. +_am_tools='gnutar pax cpio none' + +am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -' + + + + + + +ac_config_headers="$ac_config_headers config.h" + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5 +$as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; } + # Check whether --enable-maintainer-mode was given. +if test "${enable_maintainer_mode+set}" = set; then : + enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval +else + USE_MAINTAINER_MODE=no +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_MAINTAINER_MODE" >&5 +$as_echo "$USE_MAINTAINER_MODE" >&6; } + if test $USE_MAINTAINER_MODE = yes; then + MAINTAINER_MODE_TRUE= + MAINTAINER_MODE_FALSE='#' +else + MAINTAINER_MODE_TRUE='#' + MAINTAINER_MODE_FALSE= +fi + + MAINT=$MAINTAINER_MODE_TRUE + + + + +GSL_CURRENT=24 +GSL_REVISION=0 +GSL_AGE=1 +CBLAS_CURRENT=0 +CBLAS_REVISION=0 +CBLAS_AGE=0 + +GSL_LT_VERSION="${GSL_CURRENT}:${GSL_REVISION}:${GSL_AGE}" + + +GSL_LT_CBLAS_VERSION="${CBLAS_CURRENT}:${CBLAS_REVISION}:${CBLAS_AGE}" + + +case "$VERSION" in + *+) + ;; + *) + +$as_echo "#define RELEASED /**/" >>confdefs.h + + ;; +esac + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 +$as_echo_n "checking for a sed that does not truncate output... " >&6; } +if ${ac_cv_path_SED+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ + for ac_i in 1 2 3 4 5 6 7; do + ac_script="$ac_script$as_nl$ac_script" + done + echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed + { ac_script=; unset ac_script;} + if test -z "$SED"; then + ac_path_SED_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in sed gsed; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_SED" || continue +# Check for GNU ac_path_SED and select it if it is found. + # Check for GNU $ac_path_SED +case `"$ac_path_SED" --version 2>&1` in +*GNU*) + ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo '' >> "conftest.nl" + "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_SED_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_SED="$ac_path_SED" + ac_path_SED_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_SED_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_SED"; then + as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 + fi +else + ac_cv_path_SED=$SED +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 +$as_echo "$ac_cv_path_SED" >&6; } + SED="$ac_cv_path_SED" + rm -f conftest.sed + +GSL_MAJOR_VERSION=`echo "$VERSION" | $SED 's/\([^.][^.]*\).*/\1/'` +GSL_MINOR_VERSION=`echo "$VERSION" | $SED 's/[^.][^.]*.\([^.][^.]*\).*/\1/'` + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } +set x ${MAKE-make} +ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` +if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat >conftest.make <<\_ACEOF +SHELL = /bin/sh +all: + @echo '@@@%%%=$(MAKE)=@@@%%%' +_ACEOF +# GNU make sometimes prints "make[1]: Entering ...", which would confuse us. +case `${MAKE-make} -f conftest.make 2>/dev/null` in + *@@@%%%=?*=@@@%%%*) + eval ac_cv_prog_make_${ac_make}_set=yes;; + *) + eval ac_cv_prog_make_${ac_make}_set=no;; +esac +rm -f conftest.make +fi +if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + SET_MAKE= +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + SET_MAKE="MAKE=${MAKE-make}" +fi + + +# Make sure we can run config.sub. +$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || + as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 +$as_echo_n "checking build system type... " >&6; } +if ${ac_cv_build+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_build_alias=$build_alias +test "x$ac_build_alias" = x && + ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` +test "x$ac_build_alias" = x && + as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 +ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || + as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 +$as_echo "$ac_cv_build" >&6; } +case $ac_cv_build in +*-*-*) ;; +*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; +esac +build=$ac_cv_build +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_build +shift +build_cpu=$1 +build_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +build_os=$* +IFS=$ac_save_IFS +case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 +$as_echo_n "checking host system type... " >&6; } +if ${ac_cv_host+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "x$host_alias" = x; then + ac_cv_host=$ac_cv_build +else + ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || + as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 +$as_echo "$ac_cv_host" >&6; } +case $ac_cv_host in +*-*-*) ;; +*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; +esac +host=$ac_cv_host +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_host +shift +host_cpu=$1 +host_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +host_os=$* +IFS=$ac_save_IFS +case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac + + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="gcc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + fi +fi +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $# != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" + fi +fi +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl.exe + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl.exe +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_CC" && break +done + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +fi + +fi + + +test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "no acceptable C compiler found in \$PATH +See \`config.log' for more details" "$LINENO" 5; } + +# Provide some information about the compiler. +$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion; do + { { ac_try="$ac_compiler $ac_option >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done + +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" +# Try to create an executable without -o first, disregard a.out. +# It will help us diagnose broken compilers, and finding out an intuition +# of exeext. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 +$as_echo_n "checking whether the C compiler works... " >&6; } +ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` + +# The possible output files: +ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" + +ac_rmfiles= +for ac_file in $ac_files +do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + * ) ac_rmfiles="$ac_rmfiles $ac_file";; + esac +done +rm -f $ac_rmfiles + +if { { ac_try="$ac_link_default" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link_default") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. +# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' +# in a Makefile. We should not override ac_cv_exeext if it was cached, +# so that the user can short-circuit this test for compilers unknown to +# Autoconf. +for ac_file in $ac_files '' +do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) + ;; + [ab].out ) + # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) + if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; + then :; else + ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + fi + # We set ac_cv_exeext here because the later test for it is not + # safe: cross compilers may not add the suffix if given an `-o' + # argument, so we may need to know it at that point already. + # Even if this section looks crufty: it has the advantage of + # actually working. + break;; + * ) + break;; + esac +done +test "$ac_cv_exeext" = no && ac_cv_exeext= + +else + ac_file='' +fi +if test -z "$ac_file"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +$as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error 77 "C compiler cannot create executables +See \`config.log' for more details" "$LINENO" 5; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 +$as_echo_n "checking for C compiler default output file name... " >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 +$as_echo "$ac_file" >&6; } +ac_exeext=$ac_cv_exeext + +rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out +ac_clean_files=$ac_clean_files_save +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 +$as_echo_n "checking for suffix of executables... " >&6; } +if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + # If both `conftest.exe' and `conftest' are `present' (well, observable) +# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will +# work properly (i.e., refer to `conftest.exe'), while it won't with +# `rm'. +for ac_file in conftest.exe conftest conftest.*; do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + break;; + * ) break;; + esac +done +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details" "$LINENO" 5; } +fi +rm -f conftest conftest$ac_cv_exeext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 +$as_echo "$ac_cv_exeext" >&6; } + +rm -f conftest.$ac_ext +EXEEXT=$ac_cv_exeext +ac_exeext=$EXEEXT +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +FILE *f = fopen ("conftest.out", "w"); + return ferror (f) || fclose (f) != 0; + + ; + return 0; +} +_ACEOF +ac_clean_files="$ac_clean_files conftest.out" +# Check that the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 +$as_echo_n "checking whether we are cross compiling... " >&6; } +if test "$cross_compiling" != yes; then + { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if { ac_try='./conftest$ac_cv_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then + cross_compiling=no + else + if test "$cross_compiling" = maybe; then + cross_compiling=yes + else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot run C compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details" "$LINENO" 5; } + fi + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 +$as_echo "$cross_compiling" >&6; } + +rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out +ac_clean_files=$ac_clean_files_save +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 +$as_echo_n "checking for suffix of object files... " >&6; } +if ${ac_cv_objext+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.o conftest.obj +if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + for ac_file in conftest.o conftest.obj conftest.*; do + test -f "$ac_file" || continue; + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac +done +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot compute suffix of object files: cannot compile +See \`config.log' for more details" "$LINENO" 5; } +fi +rm -f conftest.$ac_cv_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 +$as_echo "$ac_cv_objext" >&6; } +OBJEXT=$ac_cv_objext +ac_objext=$OBJEXT +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 +$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } +if ${ac_cv_c_compiler_gnu+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_compiler_gnu=yes +else + ac_compiler_gnu=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 +$as_echo "$ac_cv_c_compiler_gnu" >&6; } +if test $ac_compiler_gnu = yes; then + GCC=yes +else + GCC= +fi +ac_test_CFLAGS=${CFLAGS+set} +ac_save_CFLAGS=$CFLAGS +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 +$as_echo_n "checking whether $CC accepts -g... " >&6; } +if ${ac_cv_prog_cc_g+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_save_c_werror_flag=$ac_c_werror_flag + ac_c_werror_flag=yes + ac_cv_prog_cc_g=no + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_g=yes +else + CFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + +else + ac_c_werror_flag=$ac_save_c_werror_flag + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_g=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_c_werror_flag=$ac_save_c_werror_flag +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 +$as_echo "$ac_cv_prog_cc_g" >&6; } +if test "$ac_test_CFLAGS" = set; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 +$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } +if ${ac_cv_prog_cc_c89+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_cv_prog_cc_c89=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +struct stat; +/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ +struct buf { int x; }; +FILE * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} + +/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not '\xHH' hex character constants. + These don't provoke an error unfortunately, instead are silently treated + as 'x'. The following induces an error, until -std is added to get + proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an + array size at least. It's necessary to write '\x00'==0 to get something + that's true only with -std. */ +int osf4_cc_array ['\x00' == 0 ? 1 : -1]; + +/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters + inside strings and character constants. */ +#define FOO(x) 'x' +int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; + +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); +int argc; +char **argv; +int +main () +{ +return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; + ; + return 0; +} +_ACEOF +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ + -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_c89=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext + test "x$ac_cv_prog_cc_c89" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC + +fi +# AC_CACHE_VAL +case "x$ac_cv_prog_cc_c89" in + x) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +$as_echo "none needed" >&6; } ;; + xno) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +$as_echo "unsupported" >&6; } ;; + *) + CC="$CC $ac_cv_prog_cc_c89" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 +$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; +esac +if test "x$ac_cv_prog_cc_c89" != xno; then : + +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +DEPDIR="${am__leading_dot}deps" + +ac_config_commands="$ac_config_commands depfiles" + + +am_make=${MAKE-make} +cat > confinc << 'END' +am__doit: + @echo this is the am__doit target +.PHONY: am__doit +END +# If we don't find an include directive, just comment out the code. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5 +$as_echo_n "checking for style of include used by $am_make... " >&6; } +am__include="#" +am__quote= +_am_result=none +# First try GNU make style include. +echo "include confinc" > confmf +# Ignore all kinds of additional output from 'make'. +case `$am_make -s -f confmf 2> /dev/null` in #( +*the\ am__doit\ target*) + am__include=include + am__quote= + _am_result=GNU + ;; +esac +# Now try BSD make style include. +if test "$am__include" = "#"; then + echo '.include "confinc"' > confmf + case `$am_make -s -f confmf 2> /dev/null` in #( + *the\ am__doit\ target*) + am__include=.include + am__quote="\"" + _am_result=BSD + ;; + esac +fi + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5 +$as_echo "$_am_result" >&6; } +rm -f confinc confmf + +# Check whether --enable-dependency-tracking was given. +if test "${enable_dependency_tracking+set}" = set; then : + enableval=$enable_dependency_tracking; +fi + +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' + am__nodep='_no' +fi + if test "x$enable_dependency_tracking" != xno; then + AMDEP_TRUE= + AMDEP_FALSE='#' +else + AMDEP_TRUE='#' + AMDEP_FALSE= +fi + + + +depcc="$CC" am_compiler_list= + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 +$as_echo_n "checking dependency style of $depcc... " >&6; } +if ${am_cv_CC_dependencies_compiler_type+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named 'D' -- because '-MD' means "put the output + # in D". + rm -rf conftest.dir + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_CC_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + am__universal=false + case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac + + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with + # Solaris 10 /bin/sh. + echo '/* dummy */' > sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + # We check with '-c' and '-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle '-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs. + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" + case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; + nosideeffect) + # After this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested. + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + msvc7 | msvc7msys | msvisualcpp | msvcmsys) + # This compiler won't grok '-c -o', but also, the minuso test has + # not run yet. These depmodes are late enough in the game, and + # so weak that their functioning should not be impacted. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; + none) break ;; + esac + if depmode=$depmode \ + source=sub/conftest.c object=$am__obj \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CC_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CC_dependencies_compiler_type=none +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 +$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } +CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type + + if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then + am__fastdepCC_TRUE= + am__fastdepCC_FALSE='#' +else + am__fastdepCC_TRUE='#' + am__fastdepCC_FALSE= +fi + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 +$as_echo_n "checking how to run the C preprocessor... " >&6; } +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then + if ${ac_cv_prog_CPP+:} false; then : + $as_echo_n "(cached) " >&6 +else + # Double quotes because CPP needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + break +fi + + done + ac_cv_prog_CPP=$CPP + +fi + CPP=$ac_cv_prog_CPP +else + ac_cv_prog_CPP=$CPP +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 +$as_echo "$CPP" >&6; } +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details" "$LINENO" 5; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 +$as_echo_n "checking whether ln -s works... " >&6; } +LN_S=$as_ln_s +if test "$LN_S" = "ln -s"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 +$as_echo "no, using $LN_S" >&6; } +fi + +case `pwd` in + *\ * | *\ *) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 +$as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; +esac + + + +macro_version='2.4.2' +macro_revision='1.3337' + + + + + + + + + + + + + +ltmain="$ac_aux_dir/ltmain.sh" + +# Backslashify metacharacters that are still active within +# double-quoted strings. +sed_quote_subst='s/\(["`$\\]\)/\\\1/g' + +# Same as above, but do not quote variable references. +double_quote_subst='s/\(["`\\]\)/\\\1/g' + +# Sed substitution to delay expansion of an escaped shell variable in a +# double_quote_subst'ed string. +delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' + +# Sed substitution to delay expansion of an escaped single quote. +delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' + +# Sed substitution to avoid accidental globbing in evaled expressions +no_glob_subst='s/\*/\\\*/g' + +ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO +ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5 +$as_echo_n "checking how to print strings... " >&6; } +# Test print first, because it will be a builtin if present. +if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ + test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then + ECHO='print -r --' +elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then + ECHO='printf %s\n' +else + # Use this function as a fallback that always works. + func_fallback_echo () + { + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' + } + ECHO='func_fallback_echo' +fi + +# func_echo_all arg... +# Invoke $ECHO with all args, space-separated. +func_echo_all () +{ + $ECHO "" +} + +case "$ECHO" in + printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5 +$as_echo "printf" >&6; } ;; + print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5 +$as_echo "print -r" >&6; } ;; + *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5 +$as_echo "cat" >&6; } ;; +esac + + + + + + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 +$as_echo_n "checking for a sed that does not truncate output... " >&6; } +if ${ac_cv_path_SED+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ + for ac_i in 1 2 3 4 5 6 7; do + ac_script="$ac_script$as_nl$ac_script" + done + echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed + { ac_script=; unset ac_script;} + if test -z "$SED"; then + ac_path_SED_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in sed gsed; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_SED" || continue +# Check for GNU ac_path_SED and select it if it is found. + # Check for GNU $ac_path_SED +case `"$ac_path_SED" --version 2>&1` in +*GNU*) + ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo '' >> "conftest.nl" + "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_SED_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_SED="$ac_path_SED" + ac_path_SED_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_SED_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_SED"; then + as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 + fi +else + ac_cv_path_SED=$SED +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 +$as_echo "$ac_cv_path_SED" >&6; } + SED="$ac_cv_path_SED" + rm -f conftest.sed + +test -z "$SED" && SED=sed +Xsed="$SED -e 1s/^X//" + + + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 +$as_echo_n "checking for grep that handles long lines and -e... " >&6; } +if ${ac_cv_path_GREP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$GREP"; then + ac_path_GREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in grep ggrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_GREP" || continue +# Check for GNU ac_path_GREP and select it if it is found. + # Check for GNU $ac_path_GREP +case `"$ac_path_GREP" --version 2>&1` in +*GNU*) + ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'GREP' >> "conftest.nl" + "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_GREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_GREP="$ac_path_GREP" + ac_path_GREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_GREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_GREP"; then + as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_GREP=$GREP +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 +$as_echo "$ac_cv_path_GREP" >&6; } + GREP="$ac_cv_path_GREP" + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 +$as_echo_n "checking for egrep... " >&6; } +if ${ac_cv_path_EGREP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 + then ac_cv_path_EGREP="$GREP -E" + else + if test -z "$EGREP"; then + ac_path_EGREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in egrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_EGREP" || continue +# Check for GNU ac_path_EGREP and select it if it is found. + # Check for GNU $ac_path_EGREP +case `"$ac_path_EGREP" --version 2>&1` in +*GNU*) + ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'EGREP' >> "conftest.nl" + "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_EGREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_EGREP="$ac_path_EGREP" + ac_path_EGREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_EGREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_EGREP"; then + as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_EGREP=$EGREP +fi + + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 +$as_echo "$ac_cv_path_EGREP" >&6; } + EGREP="$ac_cv_path_EGREP" + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5 +$as_echo_n "checking for fgrep... " >&6; } +if ${ac_cv_path_FGREP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 + then ac_cv_path_FGREP="$GREP -F" + else + if test -z "$FGREP"; then + ac_path_FGREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in fgrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_FGREP" || continue +# Check for GNU ac_path_FGREP and select it if it is found. + # Check for GNU $ac_path_FGREP +case `"$ac_path_FGREP" --version 2>&1` in +*GNU*) + ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'FGREP' >> "conftest.nl" + "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_FGREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_FGREP="$ac_path_FGREP" + ac_path_FGREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_FGREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_FGREP"; then + as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_FGREP=$FGREP +fi + + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5 +$as_echo "$ac_cv_path_FGREP" >&6; } + FGREP="$ac_cv_path_FGREP" + + +test -z "$GREP" && GREP=grep + + + + + + + + + + + + + + + + + + + +# Check whether --with-gnu-ld was given. +if test "${with_gnu_ld+set}" = set; then : + withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes +else + with_gnu_ld=no +fi + +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 +$as_echo_n "checking for ld used by $CC... " >&6; } + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [\\/]* | ?:[\\/]*) + re_direlt='/[^/][^/]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` + while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do + ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 +$as_echo_n "checking for GNU ld... " >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 +$as_echo_n "checking for non-GNU ld... " >&6; } +fi +if ${lt_cv_path_LD+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$LD"; then + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 &5 +$as_echo "$LD" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi +test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 +$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } +if ${lt_cv_prog_gnu_ld+:} false; then : + $as_echo_n "(cached) " >&6 +else + # I'd rather use --version here, but apparently some GNU lds only accept -v. +case `$LD -v 2>&1 &5 +$as_echo "$lt_cv_prog_gnu_ld" >&6; } +with_gnu_ld=$lt_cv_prog_gnu_ld + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5 +$as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; } +if ${lt_cv_path_NM+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$NM"; then + # Let the user override the test. + lt_cv_path_NM="$NM" +else + lt_nm_to_check="${ac_tool_prefix}nm" + if test -n "$ac_tool_prefix" && test "$build" = "$host"; then + lt_nm_to_check="$lt_nm_to_check nm" + fi + for lt_tmp_nm in $lt_nm_to_check; do + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + tmp_nm="$ac_dir/$lt_tmp_nm" + if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then + # Check to see if the nm accepts a BSD-compat flag. + # Adding the `sed 1q' prevents false positives on HP-UX, which says: + # nm: unknown option "B" ignored + # Tru64's nm complains that /dev/null is an invalid object file + case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in + */dev/null* | *'Invalid file or object type'*) + lt_cv_path_NM="$tmp_nm -B" + break + ;; + *) + case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in + */dev/null*) + lt_cv_path_NM="$tmp_nm -p" + break + ;; + *) + lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but + continue # so that we can try to find one that supports BSD flags + ;; + esac + ;; + esac + fi + done + IFS="$lt_save_ifs" + done + : ${lt_cv_path_NM=no} +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 +$as_echo "$lt_cv_path_NM" >&6; } +if test "$lt_cv_path_NM" != "no"; then + NM="$lt_cv_path_NM" +else + # Didn't find any BSD compatible name lister, look for dumpbin. + if test -n "$DUMPBIN"; then : + # Let the user override the test. + else + if test -n "$ac_tool_prefix"; then + for ac_prog in dumpbin "link -dump" + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_DUMPBIN+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$DUMPBIN"; then + ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +DUMPBIN=$ac_cv_prog_DUMPBIN +if test -n "$DUMPBIN"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5 +$as_echo "$DUMPBIN" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$DUMPBIN" && break + done +fi +if test -z "$DUMPBIN"; then + ac_ct_DUMPBIN=$DUMPBIN + for ac_prog in dumpbin "link -dump" +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_DUMPBIN+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_DUMPBIN"; then + ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_DUMPBIN="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN +if test -n "$ac_ct_DUMPBIN"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5 +$as_echo "$ac_ct_DUMPBIN" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_DUMPBIN" && break +done + + if test "x$ac_ct_DUMPBIN" = x; then + DUMPBIN=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + DUMPBIN=$ac_ct_DUMPBIN + fi +fi + + case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in + *COFF*) + DUMPBIN="$DUMPBIN -symbols" + ;; + *) + DUMPBIN=: + ;; + esac + fi + + if test "$DUMPBIN" != ":"; then + NM="$DUMPBIN" + fi +fi +test -z "$NM" && NM=nm + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5 +$as_echo_n "checking the name lister ($NM) interface... " >&6; } +if ${lt_cv_nm_interface+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_nm_interface="BSD nm" + echo "int some_variable = 0;" > conftest.$ac_ext + (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5) + (eval "$ac_compile" 2>conftest.err) + cat conftest.err >&5 + (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5) + (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) + cat conftest.err >&5 + (eval echo "\"\$as_me:$LINENO: output\"" >&5) + cat conftest.out >&5 + if $GREP 'External.*some_variable' conftest.out > /dev/null; then + lt_cv_nm_interface="MS dumpbin" + fi + rm -f conftest* +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5 +$as_echo "$lt_cv_nm_interface" >&6; } + +# find the maximum length of command line arguments +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5 +$as_echo_n "checking the maximum length of command line arguments... " >&6; } +if ${lt_cv_sys_max_cmd_len+:} false; then : + $as_echo_n "(cached) " >&6 +else + i=0 + teststring="ABCD" + + case $build_os in + msdosdjgpp*) + # On DJGPP, this test can blow up pretty badly due to problems in libc + # (any single argument exceeding 2000 bytes causes a buffer overrun + # during glob expansion). Even if it were fixed, the result of this + # check would be larger than it should be. + lt_cv_sys_max_cmd_len=12288; # 12K is about right + ;; + + gnu*) + # Under GNU Hurd, this test is not required because there is + # no limit to the length of command line arguments. + # Libtool will interpret -1 as no limit whatsoever + lt_cv_sys_max_cmd_len=-1; + ;; + + cygwin* | mingw* | cegcc*) + # On Win9x/ME, this test blows up -- it succeeds, but takes + # about 5 minutes as the teststring grows exponentially. + # Worse, since 9x/ME are not pre-emptively multitasking, + # you end up with a "frozen" computer, even though with patience + # the test eventually succeeds (with a max line length of 256k). + # Instead, let's just punt: use the minimum linelength reported by + # all of the supported platforms: 8192 (on NT/2K/XP). + lt_cv_sys_max_cmd_len=8192; + ;; + + mint*) + # On MiNT this can take a long time and run out of memory. + lt_cv_sys_max_cmd_len=8192; + ;; + + amigaos*) + # On AmigaOS with pdksh, this test takes hours, literally. + # So we just punt and use a minimum line length of 8192. + lt_cv_sys_max_cmd_len=8192; + ;; + + netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) + # This has been around since 386BSD, at least. Likely further. + if test -x /sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` + elif test -x /usr/sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` + else + lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs + fi + # And add a safety zone + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + ;; + + interix*) + # We know the value 262144 and hardcode it with a safety zone (like BSD) + lt_cv_sys_max_cmd_len=196608 + ;; + + os2*) + # The test takes a long time on OS/2. + lt_cv_sys_max_cmd_len=8192 + ;; + + osf*) + # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure + # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not + # nice to cause kernel panics so lets avoid the loop below. + # First set a reasonable default. + lt_cv_sys_max_cmd_len=16384 + # + if test -x /sbin/sysconfig; then + case `/sbin/sysconfig -q proc exec_disable_arg_limit` in + *1*) lt_cv_sys_max_cmd_len=-1 ;; + esac + fi + ;; + sco3.2v5*) + lt_cv_sys_max_cmd_len=102400 + ;; + sysv5* | sco5v6* | sysv4.2uw2*) + kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` + if test -n "$kargmax"; then + lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'` + else + lt_cv_sys_max_cmd_len=32768 + fi + ;; + *) + lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` + if test -n "$lt_cv_sys_max_cmd_len"; then + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + else + # Make teststring a little bigger before we do anything with it. + # a 1K string should be a reasonable start. + for i in 1 2 3 4 5 6 7 8 ; do + teststring=$teststring$teststring + done + SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} + # If test is not a shell built-in, we'll probably end up computing a + # maximum length that is only half of the actual maximum length, but + # we can't tell. + while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \ + = "X$teststring$teststring"; } >/dev/null 2>&1 && + test $i != 17 # 1/2 MB should be enough + do + i=`expr $i + 1` + teststring=$teststring$teststring + done + # Only check the string length outside the loop. + lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` + teststring= + # Add a significant safety factor because C++ compilers can tack on + # massive amounts of additional arguments before passing them to the + # linker. It appears as though 1/2 is a usable value. + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` + fi + ;; + esac + +fi + +if test -n $lt_cv_sys_max_cmd_len ; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5 +$as_echo "$lt_cv_sys_max_cmd_len" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5 +$as_echo "none" >&6; } +fi +max_cmd_len=$lt_cv_sys_max_cmd_len + + + + + + +: ${CP="cp -f"} +: ${MV="mv -f"} +: ${RM="rm -f"} + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands some XSI constructs" >&5 +$as_echo_n "checking whether the shell understands some XSI constructs... " >&6; } +# Try some XSI features +xsi_shell=no +( _lt_dummy="a/b/c" + test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \ + = c,a/b,b/c, \ + && eval 'test $(( 1 + 1 )) -eq 2 \ + && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ + && xsi_shell=yes +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xsi_shell" >&5 +$as_echo "$xsi_shell" >&6; } + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands \"+=\"" >&5 +$as_echo_n "checking whether the shell understands \"+=\"... " >&6; } +lt_shell_append=no +( foo=bar; set foo baz; eval "$1+=\$2" && test "$foo" = barbaz ) \ + >/dev/null 2>&1 \ + && lt_shell_append=yes +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_shell_append" >&5 +$as_echo "$lt_shell_append" >&6; } + + +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + lt_unset=unset +else + lt_unset=false +fi + + + + + +# test EBCDIC or ASCII +case `echo X|tr X '\101'` in + A) # ASCII based system + # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr + lt_SP2NL='tr \040 \012' + lt_NL2SP='tr \015\012 \040\040' + ;; + *) # EBCDIC based system + lt_SP2NL='tr \100 \n' + lt_NL2SP='tr \r\n \100\100' + ;; +esac + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5 +$as_echo_n "checking how to convert $build file names to $host format... " >&6; } +if ${lt_cv_to_host_file_cmd+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $host in + *-*-mingw* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 + ;; + *-*-cygwin* ) + lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 + ;; + * ) # otherwise, assume *nix + lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 + ;; + esac + ;; + *-*-cygwin* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin + ;; + *-*-cygwin* ) + lt_cv_to_host_file_cmd=func_convert_file_noop + ;; + * ) # otherwise, assume *nix + lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin + ;; + esac + ;; + * ) # unhandled hosts (and "normal" native builds) + lt_cv_to_host_file_cmd=func_convert_file_noop + ;; +esac + +fi + +to_host_file_cmd=$lt_cv_to_host_file_cmd +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5 +$as_echo "$lt_cv_to_host_file_cmd" >&6; } + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5 +$as_echo_n "checking how to convert $build file names to toolchain format... " >&6; } +if ${lt_cv_to_tool_file_cmd+:} false; then : + $as_echo_n "(cached) " >&6 +else + #assume ordinary cross tools, or native build. +lt_cv_to_tool_file_cmd=func_convert_file_noop +case $host in + *-*-mingw* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 + ;; + esac + ;; +esac + +fi + +to_tool_file_cmd=$lt_cv_to_tool_file_cmd +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5 +$as_echo "$lt_cv_to_tool_file_cmd" >&6; } + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5 +$as_echo_n "checking for $LD option to reload object files... " >&6; } +if ${lt_cv_ld_reload_flag+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_ld_reload_flag='-r' +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5 +$as_echo "$lt_cv_ld_reload_flag" >&6; } +reload_flag=$lt_cv_ld_reload_flag +case $reload_flag in +"" | " "*) ;; +*) reload_flag=" $reload_flag" ;; +esac +reload_cmds='$LD$reload_flag -o $output$reload_objs' +case $host_os in + cygwin* | mingw* | pw32* | cegcc*) + if test "$GCC" != yes; then + reload_cmds=false + fi + ;; + darwin*) + if test "$GCC" = yes; then + reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs' + else + reload_cmds='$LD$reload_flag -o $output$reload_objs' + fi + ;; +esac + + + + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. +set dummy ${ac_tool_prefix}objdump; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_OBJDUMP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$OBJDUMP"; then + ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +OBJDUMP=$ac_cv_prog_OBJDUMP +if test -n "$OBJDUMP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 +$as_echo "$OBJDUMP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_OBJDUMP"; then + ac_ct_OBJDUMP=$OBJDUMP + # Extract the first word of "objdump", so it can be a program name with args. +set dummy objdump; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_OBJDUMP"; then + ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_OBJDUMP="objdump" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP +if test -n "$ac_ct_OBJDUMP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 +$as_echo "$ac_ct_OBJDUMP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_OBJDUMP" = x; then + OBJDUMP="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + OBJDUMP=$ac_ct_OBJDUMP + fi +else + OBJDUMP="$ac_cv_prog_OBJDUMP" +fi + +test -z "$OBJDUMP" && OBJDUMP=objdump + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5 +$as_echo_n "checking how to recognize dependent libraries... " >&6; } +if ${lt_cv_deplibs_check_method+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_file_magic_cmd='$MAGIC_CMD' +lt_cv_file_magic_test_file= +lt_cv_deplibs_check_method='unknown' +# Need to set the preceding variable on all platforms that support +# interlibrary dependencies. +# 'none' -- dependencies not supported. +# `unknown' -- same as none, but documents that we really don't know. +# 'pass_all' -- all dependencies passed with no checks. +# 'test_compile' -- check by making test program. +# 'file_magic [[regex]]' -- check by looking for files in library path +# which responds to the $file_magic_cmd with a given extended regex. +# If you have `file' or equivalent on your system and you're not sure +# whether `pass_all' will *always* work, you probably want this one. + +case $host_os in +aix[4-9]*) + lt_cv_deplibs_check_method=pass_all + ;; + +beos*) + lt_cv_deplibs_check_method=pass_all + ;; + +bsdi[45]*) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' + lt_cv_file_magic_cmd='/usr/bin/file -L' + lt_cv_file_magic_test_file=/shlib/libc.so + ;; + +cygwin*) + # func_win32_libid is a shell function defined in ltmain.sh + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + ;; + +mingw* | pw32*) + # Base MSYS/MinGW do not provide the 'file' command needed by + # func_win32_libid shell function, so use a weaker test based on 'objdump', + # unless we find 'file', for example because we are cross-compiling. + # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin. + if ( test "$lt_cv_nm_interface" = "BSD nm" && file / ) >/dev/null 2>&1; then + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + else + # Keep this pattern in sync with the one in func_win32_libid. + lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' + lt_cv_file_magic_cmd='$OBJDUMP -f' + fi + ;; + +cegcc*) + # use the weaker test based on 'objdump'. See mingw*. + lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' + lt_cv_file_magic_cmd='$OBJDUMP -f' + ;; + +darwin* | rhapsody*) + lt_cv_deplibs_check_method=pass_all + ;; + +freebsd* | dragonfly*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + case $host_cpu in + i*86 ) + # Not sure whether the presence of OpenBSD here was a mistake. + # Let's accept both of them until this is cleared up. + lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` + ;; + esac + else + lt_cv_deplibs_check_method=pass_all + fi + ;; + +gnu*) + lt_cv_deplibs_check_method=pass_all + ;; + +haiku*) + lt_cv_deplibs_check_method=pass_all + ;; + +hpux10.20* | hpux11*) + lt_cv_file_magic_cmd=/usr/bin/file + case $host_cpu in + ia64*) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' + lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so + ;; + hppa*64*) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]' + lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl + ;; + *) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library' + lt_cv_file_magic_test_file=/usr/lib/libc.sl + ;; + esac + ;; + +interix[3-9]*) + # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$' + ;; + +irix5* | irix6* | nonstopux*) + case $LD in + *-32|*"-32 ") libmagic=32-bit;; + *-n32|*"-n32 ") libmagic=N32;; + *-64|*"-64 ") libmagic=64-bit;; + *) libmagic=never-match;; + esac + lt_cv_deplibs_check_method=pass_all + ;; + +# This must be glibc/ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu) + lt_cv_deplibs_check_method=pass_all + ;; + +netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' + fi + ;; + +newos6*) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=/usr/lib/libnls.so + ;; + +*nto* | *qnx*) + lt_cv_deplibs_check_method=pass_all + ;; + +openbsd*) + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' + fi + ;; + +osf3* | osf4* | osf5*) + lt_cv_deplibs_check_method=pass_all + ;; + +rdos*) + lt_cv_deplibs_check_method=pass_all + ;; + +solaris*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv4 | sysv4.3*) + case $host_vendor in + motorola) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` + ;; + ncr) + lt_cv_deplibs_check_method=pass_all + ;; + sequent) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' + ;; + sni) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" + lt_cv_file_magic_test_file=/lib/libc.so + ;; + siemens) + lt_cv_deplibs_check_method=pass_all + ;; + pc) + lt_cv_deplibs_check_method=pass_all + ;; + esac + ;; + +tpf*) + lt_cv_deplibs_check_method=pass_all + ;; +esac + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5 +$as_echo "$lt_cv_deplibs_check_method" >&6; } + +file_magic_glob= +want_nocaseglob=no +if test "$build" = "$host"; then + case $host_os in + mingw* | pw32*) + if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then + want_nocaseglob=yes + else + file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"` + fi + ;; + esac +fi + +file_magic_cmd=$lt_cv_file_magic_cmd +deplibs_check_method=$lt_cv_deplibs_check_method +test -z "$deplibs_check_method" && deplibs_check_method=unknown + + + + + + + + + + + + + + + + + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. +set dummy ${ac_tool_prefix}dlltool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_DLLTOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$DLLTOOL"; then + ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +DLLTOOL=$ac_cv_prog_DLLTOOL +if test -n "$DLLTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 +$as_echo "$DLLTOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_DLLTOOL"; then + ac_ct_DLLTOOL=$DLLTOOL + # Extract the first word of "dlltool", so it can be a program name with args. +set dummy dlltool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_DLLTOOL"; then + ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_DLLTOOL="dlltool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL +if test -n "$ac_ct_DLLTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 +$as_echo "$ac_ct_DLLTOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_DLLTOOL" = x; then + DLLTOOL="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + DLLTOOL=$ac_ct_DLLTOOL + fi +else + DLLTOOL="$ac_cv_prog_DLLTOOL" +fi + +test -z "$DLLTOOL" && DLLTOOL=dlltool + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5 +$as_echo_n "checking how to associate runtime and link libraries... " >&6; } +if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_sharedlib_from_linklib_cmd='unknown' + +case $host_os in +cygwin* | mingw* | pw32* | cegcc*) + # two different shell functions defined in ltmain.sh + # decide which to use based on capabilities of $DLLTOOL + case `$DLLTOOL --help 2>&1` in + *--identify-strict*) + lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib + ;; + *) + lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback + ;; + esac + ;; +*) + # fallback: assume linklib IS sharedlib + lt_cv_sharedlib_from_linklib_cmd="$ECHO" + ;; +esac + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5 +$as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; } +sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd +test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO + + + + + + + + +if test -n "$ac_tool_prefix"; then + for ac_prog in ar + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_AR+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$AR"; then + ac_cv_prog_AR="$AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_AR="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +AR=$ac_cv_prog_AR +if test -n "$AR"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 +$as_echo "$AR" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$AR" && break + done +fi +if test -z "$AR"; then + ac_ct_AR=$AR + for ac_prog in ar +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_AR+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_AR"; then + ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_AR="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_AR=$ac_cv_prog_ac_ct_AR +if test -n "$ac_ct_AR"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 +$as_echo "$ac_ct_AR" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_AR" && break +done + + if test "x$ac_ct_AR" = x; then + AR="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + AR=$ac_ct_AR + fi +fi + +: ${AR=ar} +: ${AR_FLAGS=cru} + + + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5 +$as_echo_n "checking for archiver @FILE support... " >&6; } +if ${lt_cv_ar_at_file+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_ar_at_file=no + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + echo conftest.$ac_objext > conftest.lst + lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 + (eval $lt_ar_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if test "$ac_status" -eq 0; then + # Ensure the archiver fails upon bogus file names. + rm -f conftest.$ac_objext libconftest.a + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 + (eval $lt_ar_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if test "$ac_status" -ne 0; then + lt_cv_ar_at_file=@ + fi + fi + rm -f conftest.* libconftest.a + +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5 +$as_echo "$lt_cv_ar_at_file" >&6; } + +if test "x$lt_cv_ar_at_file" = xno; then + archiver_list_spec= +else + archiver_list_spec=$lt_cv_ar_at_file +fi + + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +set dummy ${ac_tool_prefix}strip; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_STRIP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 +$as_echo "$STRIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. +set dummy strip; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_STRIP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_STRIP="strip" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 +$as_echo "$ac_ct_STRIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_STRIP" = x; then + STRIP=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + STRIP=$ac_ct_STRIP + fi +else + STRIP="$ac_cv_prog_STRIP" +fi + +test -z "$STRIP" && STRIP=: + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. +set dummy ${ac_tool_prefix}ranlib; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_RANLIB+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +RANLIB=$ac_cv_prog_RANLIB +if test -n "$RANLIB"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 +$as_echo "$RANLIB" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_RANLIB"; then + ac_ct_RANLIB=$RANLIB + # Extract the first word of "ranlib", so it can be a program name with args. +set dummy ranlib; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_RANLIB"; then + ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_RANLIB="ranlib" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +if test -n "$ac_ct_RANLIB"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 +$as_echo "$ac_ct_RANLIB" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_RANLIB" = x; then + RANLIB=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + RANLIB=$ac_ct_RANLIB + fi +else + RANLIB="$ac_cv_prog_RANLIB" +fi + +test -z "$RANLIB" && RANLIB=: + + + + + + +# Determine commands to create old-style static archives. +old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' +old_postinstall_cmds='chmod 644 $oldlib' +old_postuninstall_cmds= + +if test -n "$RANLIB"; then + case $host_os in + openbsd*) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" + ;; + *) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" + ;; + esac + old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" +fi + +case $host_os in + darwin*) + lock_old_archive_extraction=yes ;; + *) + lock_old_archive_extraction=no ;; +esac + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + +# Check for command to grab the raw symbol name followed by C symbol from nm. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5 +$as_echo_n "checking command to parse $NM output from $compiler object... " >&6; } +if ${lt_cv_sys_global_symbol_pipe+:} false; then : + $as_echo_n "(cached) " >&6 +else + +# These are sane defaults that work on at least a few old systems. +# [They come from Ultrix. What could be older than Ultrix?!! ;)] + +# Character class describing NM global symbol codes. +symcode='[BCDEGRST]' + +# Regexp to match symbols that can be accessed directly from C. +sympat='\([_A-Za-z][_A-Za-z0-9]*\)' + +# Define system-specific variables. +case $host_os in +aix*) + symcode='[BCDT]' + ;; +cygwin* | mingw* | pw32* | cegcc*) + symcode='[ABCDGISTW]' + ;; +hpux*) + if test "$host_cpu" = ia64; then + symcode='[ABCDEGRST]' + fi + ;; +irix* | nonstopux*) + symcode='[BCDEGRST]' + ;; +osf*) + symcode='[BCDEGQRST]' + ;; +solaris*) + symcode='[BDRT]' + ;; +sco3.2v5*) + symcode='[DT]' + ;; +sysv4.2uw2*) + symcode='[DT]' + ;; +sysv5* | sco5v6* | unixware* | OpenUNIX*) + symcode='[ABDT]' + ;; +sysv4) + symcode='[DFNSTU]' + ;; +esac + +# If we're using GNU nm, then use its standard symbol codes. +case `$NM -V 2>&1` in +*GNU* | *'with BFD'*) + symcode='[ABCDGIRSTW]' ;; +esac + +# Transform an extracted symbol line into a proper C declaration. +# Some systems (esp. on ia64) link data and code symbols differently, +# so use this general approach. +lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" + +# Transform an extracted symbol line into symbol name and symbol address +lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'" +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'" + +# Handle CRLF in mingw tool chain +opt_cr= +case $build_os in +mingw*) + opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp + ;; +esac + +# Try without a prefix underscore, then with it. +for ac_symprfx in "" "_"; do + + # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. + symxfrm="\\1 $ac_symprfx\\2 \\2" + + # Write the raw and C identifiers. + if test "$lt_cv_nm_interface" = "MS dumpbin"; then + # Fake it for dumpbin and say T for any non-static function + # and D for any global variable. + # Also find C++ and __fastcall symbols from MSVC++, + # which start with @ or ?. + lt_cv_sys_global_symbol_pipe="$AWK '"\ +" {last_section=section; section=\$ 3};"\ +" /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ +" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ +" \$ 0!~/External *\|/{next};"\ +" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ +" {if(hide[section]) next};"\ +" {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ +" {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ +" s[1]~/^[@?]/{print s[1], s[1]; next};"\ +" s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ +" ' prfx=^$ac_symprfx" + else + lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" + fi + lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" + + # Check to see that the pipe works correctly. + pipe_works=no + + rm -f conftest* + cat > conftest.$ac_ext <<_LT_EOF +#ifdef __cplusplus +extern "C" { +#endif +char nm_test_var; +void nm_test_func(void); +void nm_test_func(void){} +#ifdef __cplusplus +} +#endif +int main(){nm_test_var='a';nm_test_func();return(0);} +_LT_EOF + + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + # Now try to grab the symbols. + nlist=conftest.nm + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist\""; } >&5 + (eval $NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s "$nlist"; then + # Try sorting and uniquifying the output. + if sort "$nlist" | uniq > "$nlist"T; then + mv -f "$nlist"T "$nlist" + else + rm -f "$nlist"T + fi + + # Make sure that we snagged all the symbols we need. + if $GREP ' nm_test_var$' "$nlist" >/dev/null; then + if $GREP ' nm_test_func$' "$nlist" >/dev/null; then + cat <<_LT_EOF > conftest.$ac_ext +/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ +#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) +/* DATA imports from DLLs on WIN32 con't be const, because runtime + relocations are performed -- see ld's documentation on pseudo-relocs. */ +# define LT_DLSYM_CONST +#elif defined(__osf__) +/* This system does not cope well with relocations in const data. */ +# define LT_DLSYM_CONST +#else +# define LT_DLSYM_CONST const +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +_LT_EOF + # Now generate the symbol file. + eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' + + cat <<_LT_EOF >> conftest.$ac_ext + +/* The mapping between symbol names and symbols. */ +LT_DLSYM_CONST struct { + const char *name; + void *address; +} +lt__PROGRAM__LTX_preloaded_symbols[] = +{ + { "@PROGRAM@", (void *) 0 }, +_LT_EOF + $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext + cat <<\_LT_EOF >> conftest.$ac_ext + {0, (void *) 0} +}; + +/* This works around a problem in FreeBSD linker */ +#ifdef FREEBSD_WORKAROUND +static const void *lt_preloaded_setup() { + return lt__PROGRAM__LTX_preloaded_symbols; +} +#endif + +#ifdef __cplusplus +} +#endif +_LT_EOF + # Now try linking the two files. + mv conftest.$ac_objext conftstm.$ac_objext + lt_globsym_save_LIBS=$LIBS + lt_globsym_save_CFLAGS=$CFLAGS + LIBS="conftstm.$ac_objext" + CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 + (eval $ac_link) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s conftest${ac_exeext}; then + pipe_works=yes + fi + LIBS=$lt_globsym_save_LIBS + CFLAGS=$lt_globsym_save_CFLAGS + else + echo "cannot find nm_test_func in $nlist" >&5 + fi + else + echo "cannot find nm_test_var in $nlist" >&5 + fi + else + echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 + fi + else + echo "$progname: failed program was:" >&5 + cat conftest.$ac_ext >&5 + fi + rm -rf conftest* conftst* + + # Do not use the global_symbol_pipe unless it works. + if test "$pipe_works" = yes; then + break + else + lt_cv_sys_global_symbol_pipe= + fi +done + +fi + +if test -z "$lt_cv_sys_global_symbol_pipe"; then + lt_cv_sys_global_symbol_to_cdecl= +fi +if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5 +$as_echo "failed" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 +$as_echo "ok" >&6; } +fi + +# Response file support. +if test "$lt_cv_nm_interface" = "MS dumpbin"; then + nm_file_list_spec='@' +elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then + nm_file_list_spec='@' +fi + + + + + + + + + + + + + + + + + + + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5 +$as_echo_n "checking for sysroot... " >&6; } + +# Check whether --with-sysroot was given. +if test "${with_sysroot+set}" = set; then : + withval=$with_sysroot; +else + with_sysroot=no +fi + + +lt_sysroot= +case ${with_sysroot} in #( + yes) + if test "$GCC" = yes; then + lt_sysroot=`$CC --print-sysroot 2>/dev/null` + fi + ;; #( + /*) + lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` + ;; #( + no|'') + ;; #( + *) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${with_sysroot}" >&5 +$as_echo "${with_sysroot}" >&6; } + as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5 + ;; +esac + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5 +$as_echo "${lt_sysroot:-no}" >&6; } + + + + + +# Check whether --enable-libtool-lock was given. +if test "${enable_libtool_lock+set}" = set; then : + enableval=$enable_libtool_lock; +fi + +test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes + +# Some flags need to be propagated to the compiler or linker for good +# libtool support. +case $host in +ia64-*-hpux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + case `/usr/bin/file conftest.$ac_objext` in + *ELF-32*) + HPUX_IA64_MODE="32" + ;; + *ELF-64*) + HPUX_IA64_MODE="64" + ;; + esac + fi + rm -rf conftest* + ;; +*-*-irix6*) + # Find out which ABI we are using. + echo '#line '$LINENO' "configure"' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + if test "$lt_cv_prog_gnu_ld" = yes; then + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -melf32bsmip" + ;; + *N32*) + LD="${LD-ld} -melf32bmipn32" + ;; + *64-bit*) + LD="${LD-ld} -melf64bmip" + ;; + esac + else + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -32" + ;; + *N32*) + LD="${LD-ld} -n32" + ;; + *64-bit*) + LD="${LD-ld} -64" + ;; + esac + fi + fi + rm -rf conftest* + ;; + +x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ +s390*-*linux*|s390*-*tpf*|sparc*-*linux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + case `/usr/bin/file conftest.o` in + *32-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_i386_fbsd" + ;; + x86_64-*linux*) + LD="${LD-ld} -m elf_i386" + ;; + ppc64-*linux*|powerpc64-*linux*) + LD="${LD-ld} -m elf32ppclinux" + ;; + s390x-*linux*) + LD="${LD-ld} -m elf_s390" + ;; + sparc64-*linux*) + LD="${LD-ld} -m elf32_sparc" + ;; + esac + ;; + *64-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_x86_64_fbsd" + ;; + x86_64-*linux*) + LD="${LD-ld} -m elf_x86_64" + ;; + ppc*-*linux*|powerpc*-*linux*) + LD="${LD-ld} -m elf64ppc" + ;; + s390*-*linux*|s390*-*tpf*) + LD="${LD-ld} -m elf64_s390" + ;; + sparc*-*linux*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; + +*-*-sco3.2v5*) + # On SCO OpenServer 5, we need -belf to get full-featured binaries. + SAVE_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -belf" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 +$as_echo_n "checking whether the C compiler needs -belf... " >&6; } +if ${lt_cv_cc_needs_belf+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + lt_cv_cc_needs_belf=yes +else + lt_cv_cc_needs_belf=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 +$as_echo "$lt_cv_cc_needs_belf" >&6; } + if test x"$lt_cv_cc_needs_belf" != x"yes"; then + # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf + CFLAGS="$SAVE_CFLAGS" + fi + ;; +*-*solaris*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + case `/usr/bin/file conftest.o` in + *64-bit*) + case $lt_cv_prog_gnu_ld in + yes*) + case $host in + i?86-*-solaris*) + LD="${LD-ld} -m elf_x86_64" + ;; + sparc*-*-solaris*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + # GNU ld 2.21 introduced _sol2 emulations. Use them if available. + if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then + LD="${LD-ld}_sol2" + fi + ;; + *) + if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then + LD="${LD-ld} -64" + fi + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; +esac + +need_locks="$enable_libtool_lock" + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args. +set dummy ${ac_tool_prefix}mt; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_MANIFEST_TOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$MANIFEST_TOOL"; then + ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL +if test -n "$MANIFEST_TOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5 +$as_echo "$MANIFEST_TOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_MANIFEST_TOOL"; then + ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL + # Extract the first word of "mt", so it can be a program name with args. +set dummy mt; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_MANIFEST_TOOL"; then + ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_MANIFEST_TOOL="mt" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL +if test -n "$ac_ct_MANIFEST_TOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5 +$as_echo "$ac_ct_MANIFEST_TOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_MANIFEST_TOOL" = x; then + MANIFEST_TOOL=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL + fi +else + MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL" +fi + +test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5 +$as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; } +if ${lt_cv_path_mainfest_tool+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_path_mainfest_tool=no + echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5 + $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out + cat conftest.err >&5 + if $GREP 'Manifest Tool' conftest.out > /dev/null; then + lt_cv_path_mainfest_tool=yes + fi + rm -f conftest* +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5 +$as_echo "$lt_cv_path_mainfest_tool" >&6; } +if test "x$lt_cv_path_mainfest_tool" != xyes; then + MANIFEST_TOOL=: +fi + + + + + + + case $host_os in + rhapsody* | darwin*) + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. +set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_DSYMUTIL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$DSYMUTIL"; then + ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +DSYMUTIL=$ac_cv_prog_DSYMUTIL +if test -n "$DSYMUTIL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5 +$as_echo "$DSYMUTIL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_DSYMUTIL"; then + ac_ct_DSYMUTIL=$DSYMUTIL + # Extract the first word of "dsymutil", so it can be a program name with args. +set dummy dsymutil; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_DSYMUTIL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_DSYMUTIL"; then + ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL +if test -n "$ac_ct_DSYMUTIL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5 +$as_echo "$ac_ct_DSYMUTIL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_DSYMUTIL" = x; then + DSYMUTIL=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + DSYMUTIL=$ac_ct_DSYMUTIL + fi +else + DSYMUTIL="$ac_cv_prog_DSYMUTIL" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. +set dummy ${ac_tool_prefix}nmedit; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_NMEDIT+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$NMEDIT"; then + ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +NMEDIT=$ac_cv_prog_NMEDIT +if test -n "$NMEDIT"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5 +$as_echo "$NMEDIT" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_NMEDIT"; then + ac_ct_NMEDIT=$NMEDIT + # Extract the first word of "nmedit", so it can be a program name with args. +set dummy nmedit; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_NMEDIT+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_NMEDIT"; then + ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_NMEDIT="nmedit" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT +if test -n "$ac_ct_NMEDIT"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5 +$as_echo "$ac_ct_NMEDIT" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_NMEDIT" = x; then + NMEDIT=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + NMEDIT=$ac_ct_NMEDIT + fi +else + NMEDIT="$ac_cv_prog_NMEDIT" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args. +set dummy ${ac_tool_prefix}lipo; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_LIPO+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$LIPO"; then + ac_cv_prog_LIPO="$LIPO" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_LIPO="${ac_tool_prefix}lipo" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +LIPO=$ac_cv_prog_LIPO +if test -n "$LIPO"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5 +$as_echo "$LIPO" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_LIPO"; then + ac_ct_LIPO=$LIPO + # Extract the first word of "lipo", so it can be a program name with args. +set dummy lipo; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_LIPO+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_LIPO"; then + ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_LIPO="lipo" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO +if test -n "$ac_ct_LIPO"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5 +$as_echo "$ac_ct_LIPO" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_LIPO" = x; then + LIPO=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + LIPO=$ac_ct_LIPO + fi +else + LIPO="$ac_cv_prog_LIPO" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args. +set dummy ${ac_tool_prefix}otool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_OTOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$OTOOL"; then + ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_OTOOL="${ac_tool_prefix}otool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +OTOOL=$ac_cv_prog_OTOOL +if test -n "$OTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5 +$as_echo "$OTOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_OTOOL"; then + ac_ct_OTOOL=$OTOOL + # Extract the first word of "otool", so it can be a program name with args. +set dummy otool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_OTOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_OTOOL"; then + ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_OTOOL="otool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL +if test -n "$ac_ct_OTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5 +$as_echo "$ac_ct_OTOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_OTOOL" = x; then + OTOOL=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + OTOOL=$ac_ct_OTOOL + fi +else + OTOOL="$ac_cv_prog_OTOOL" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args. +set dummy ${ac_tool_prefix}otool64; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_OTOOL64+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$OTOOL64"; then + ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +OTOOL64=$ac_cv_prog_OTOOL64 +if test -n "$OTOOL64"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5 +$as_echo "$OTOOL64" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_OTOOL64"; then + ac_ct_OTOOL64=$OTOOL64 + # Extract the first word of "otool64", so it can be a program name with args. +set dummy otool64; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_OTOOL64+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_OTOOL64"; then + ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_OTOOL64="otool64" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64 +if test -n "$ac_ct_OTOOL64"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5 +$as_echo "$ac_ct_OTOOL64" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_OTOOL64" = x; then + OTOOL64=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + OTOOL64=$ac_ct_OTOOL64 + fi +else + OTOOL64="$ac_cv_prog_OTOOL64" +fi + + + + + + + + + + + + + + + + + + + + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5 +$as_echo_n "checking for -single_module linker flag... " >&6; } +if ${lt_cv_apple_cc_single_mod+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_apple_cc_single_mod=no + if test -z "${LT_MULTI_MODULE}"; then + # By default we will add the -single_module flag. You can override + # by either setting the environment variable LT_MULTI_MODULE + # non-empty at configure time, or by adding -multi_module to the + # link flags. + rm -rf libconftest.dylib* + echo "int foo(void){return 1;}" > conftest.c + echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ +-dynamiclib -Wl,-single_module conftest.c" >&5 + $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ + -dynamiclib -Wl,-single_module conftest.c 2>conftest.err + _lt_result=$? + # If there is a non-empty error log, and "single_module" + # appears in it, assume the flag caused a linker warning + if test -s conftest.err && $GREP single_module conftest.err; then + cat conftest.err >&5 + # Otherwise, if the output was created with a 0 exit code from + # the compiler, it worked. + elif test -f libconftest.dylib && test $_lt_result -eq 0; then + lt_cv_apple_cc_single_mod=yes + else + cat conftest.err >&5 + fi + rm -rf libconftest.dylib* + rm -f conftest.* + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5 +$as_echo "$lt_cv_apple_cc_single_mod" >&6; } + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5 +$as_echo_n "checking for -exported_symbols_list linker flag... " >&6; } +if ${lt_cv_ld_exported_symbols_list+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_ld_exported_symbols_list=no + save_LDFLAGS=$LDFLAGS + echo "_main" > conftest.sym + LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + lt_cv_ld_exported_symbols_list=yes +else + lt_cv_ld_exported_symbols_list=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS="$save_LDFLAGS" + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 +$as_echo "$lt_cv_ld_exported_symbols_list" >&6; } + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5 +$as_echo_n "checking for -force_load linker flag... " >&6; } +if ${lt_cv_ld_force_load+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_ld_force_load=no + cat > conftest.c << _LT_EOF +int forced_loaded() { return 2;} +_LT_EOF + echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5 + $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5 + echo "$AR cru libconftest.a conftest.o" >&5 + $AR cru libconftest.a conftest.o 2>&5 + echo "$RANLIB libconftest.a" >&5 + $RANLIB libconftest.a 2>&5 + cat > conftest.c << _LT_EOF +int main() { return 0;} +_LT_EOF + echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5 + $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err + _lt_result=$? + if test -s conftest.err && $GREP force_load conftest.err; then + cat conftest.err >&5 + elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then + lt_cv_ld_force_load=yes + else + cat conftest.err >&5 + fi + rm -f conftest.err libconftest.a conftest conftest.c + rm -rf conftest.dSYM + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5 +$as_echo "$lt_cv_ld_force_load" >&6; } + case $host_os in + rhapsody* | darwin1.[012]) + _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; + darwin1.*) + _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; + darwin*) # darwin 5.x on + # if running on 10.5 or later, the deployment target defaults + # to the OS version, if on x86, and 10.4, the deployment + # target defaults to 10.4. Don't you love it? + case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in + 10.0,*86*-darwin8*|10.0,*-darwin[91]*) + _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; + 10.[012]*) + _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; + 10.*) + _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; + esac + ;; + esac + if test "$lt_cv_apple_cc_single_mod" = "yes"; then + _lt_dar_single_mod='$single_module' + fi + if test "$lt_cv_ld_exported_symbols_list" = "yes"; then + _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' + else + _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' + fi + if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then + _lt_dsymutil='~$DSYMUTIL $lib || :' + else + _lt_dsymutil= + fi + ;; + esac + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 +$as_echo_n "checking for ANSI C header files... " >&6; } +if ${ac_cv_header_stdc+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#include +#include + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_header_stdc=yes +else + ac_cv_header_stdc=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "memchr" >/dev/null 2>&1; then : + +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "free" >/dev/null 2>&1; then : + +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. + if test "$cross_compiling" = yes; then : + : +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#if ((' ' & 0x0FF) == 0x020) +# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#else +# define ISLOWER(c) \ + (('a' <= (c) && (c) <= 'i') \ + || ('j' <= (c) && (c) <= 'r') \ + || ('s' <= (c) && (c) <= 'z')) +# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) +#endif + +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +int +main () +{ + int i; + for (i = 0; i < 256; i++) + if (XOR (islower (i), ISLOWER (i)) + || toupper (i) != TOUPPER (i)) + return 2; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + +else + ac_cv_header_stdc=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 +$as_echo "$ac_cv_header_stdc" >&6; } +if test $ac_cv_header_stdc = yes; then + +$as_echo "#define STDC_HEADERS 1" >>confdefs.h + +fi + +# On IRIX 5.3, sys/types and inttypes.h are conflicting. +for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ + inttypes.h stdint.h unistd.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default +" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + +for ac_header in dlfcn.h +do : + ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default +" +if test "x$ac_cv_header_dlfcn_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_DLFCN_H 1 +_ACEOF + +fi + +done + + + + + +# Set options +enable_win32_dll=yes + +case $host in +*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*) + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}as", so it can be a program name with args. +set dummy ${ac_tool_prefix}as; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_AS+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$AS"; then + ac_cv_prog_AS="$AS" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_AS="${ac_tool_prefix}as" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +AS=$ac_cv_prog_AS +if test -n "$AS"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AS" >&5 +$as_echo "$AS" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_AS"; then + ac_ct_AS=$AS + # Extract the first word of "as", so it can be a program name with args. +set dummy as; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_AS+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_AS"; then + ac_cv_prog_ac_ct_AS="$ac_ct_AS" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_AS="as" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_AS=$ac_cv_prog_ac_ct_AS +if test -n "$ac_ct_AS"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AS" >&5 +$as_echo "$ac_ct_AS" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_AS" = x; then + AS="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + AS=$ac_ct_AS + fi +else + AS="$ac_cv_prog_AS" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. +set dummy ${ac_tool_prefix}dlltool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_DLLTOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$DLLTOOL"; then + ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +DLLTOOL=$ac_cv_prog_DLLTOOL +if test -n "$DLLTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 +$as_echo "$DLLTOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_DLLTOOL"; then + ac_ct_DLLTOOL=$DLLTOOL + # Extract the first word of "dlltool", so it can be a program name with args. +set dummy dlltool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_DLLTOOL"; then + ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_DLLTOOL="dlltool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL +if test -n "$ac_ct_DLLTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 +$as_echo "$ac_ct_DLLTOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_DLLTOOL" = x; then + DLLTOOL="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + DLLTOOL=$ac_ct_DLLTOOL + fi +else + DLLTOOL="$ac_cv_prog_DLLTOOL" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. +set dummy ${ac_tool_prefix}objdump; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_OBJDUMP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$OBJDUMP"; then + ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +OBJDUMP=$ac_cv_prog_OBJDUMP +if test -n "$OBJDUMP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 +$as_echo "$OBJDUMP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_OBJDUMP"; then + ac_ct_OBJDUMP=$OBJDUMP + # Extract the first word of "objdump", so it can be a program name with args. +set dummy objdump; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_OBJDUMP"; then + ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_OBJDUMP="objdump" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP +if test -n "$ac_ct_OBJDUMP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 +$as_echo "$ac_ct_OBJDUMP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_OBJDUMP" = x; then + OBJDUMP="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + OBJDUMP=$ac_ct_OBJDUMP + fi +else + OBJDUMP="$ac_cv_prog_OBJDUMP" +fi + + ;; +esac + +test -z "$AS" && AS=as + + + + + +test -z "$DLLTOOL" && DLLTOOL=dlltool + + + + + +test -z "$OBJDUMP" && OBJDUMP=objdump + + + + + + + + enable_dlopen=no + + + + # Check whether --enable-shared was given. +if test "${enable_shared+set}" = set; then : + enableval=$enable_shared; p=${PACKAGE-default} + case $enableval in + yes) enable_shared=yes ;; + no) enable_shared=no ;; + *) + enable_shared=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_shared=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac +else + enable_shared=yes +fi + + + + + + + + + + # Check whether --enable-static was given. +if test "${enable_static+set}" = set; then : + enableval=$enable_static; p=${PACKAGE-default} + case $enableval in + yes) enable_static=yes ;; + no) enable_static=no ;; + *) + enable_static=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_static=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac +else + enable_static=yes +fi + + + + + + + + + + +# Check whether --with-pic was given. +if test "${with_pic+set}" = set; then : + withval=$with_pic; lt_p=${PACKAGE-default} + case $withval in + yes|no) pic_mode=$withval ;; + *) + pic_mode=default + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for lt_pkg in $withval; do + IFS="$lt_save_ifs" + if test "X$lt_pkg" = "X$lt_p"; then + pic_mode=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac +else + pic_mode=default +fi + + +test -z "$pic_mode" && pic_mode=default + + + + + + + + # Check whether --enable-fast-install was given. +if test "${enable_fast_install+set}" = set; then : + enableval=$enable_fast_install; p=${PACKAGE-default} + case $enableval in + yes) enable_fast_install=yes ;; + no) enable_fast_install=no ;; + *) + enable_fast_install=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_fast_install=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac +else + enable_fast_install=yes +fi + + + + + + + + + + + +# This can be used to rebuild libtool when needed +LIBTOOL_DEPS="$ltmain" + +# Always use our own libtool. +LIBTOOL='$(SHELL) $(top_builddir)/libtool' + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +test -z "$LN_S" && LN_S="ln -s" + + + + + + + + + + + + + + +if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5 +$as_echo_n "checking for objdir... " >&6; } +if ${lt_cv_objdir+:} false; then : + $as_echo_n "(cached) " >&6 +else + rm -f .libs 2>/dev/null +mkdir .libs 2>/dev/null +if test -d .libs; then + lt_cv_objdir=.libs +else + # MS-DOS does not allow filenames that begin with a dot. + lt_cv_objdir=_libs +fi +rmdir .libs 2>/dev/null +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5 +$as_echo "$lt_cv_objdir" >&6; } +objdir=$lt_cv_objdir + + + + + +cat >>confdefs.h <<_ACEOF +#define LT_OBJDIR "$lt_cv_objdir/" +_ACEOF + + + + +case $host_os in +aix3*) + # AIX sometimes has problems with the GCC collect2 program. For some + # reason, if we set the COLLECT_NAMES environment variable, the problems + # vanish in a puff of smoke. + if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES + fi + ;; +esac + +# Global variables: +ofile=libtool +can_build_shared=yes + +# All known linkers require a `.a' archive for static linking (except MSVC, +# which needs '.lib'). +libext=a + +with_gnu_ld="$lt_cv_prog_gnu_ld" + +old_CC="$CC" +old_CFLAGS="$CFLAGS" + +# Set sane defaults for various variables +test -z "$CC" && CC=cc +test -z "$LTCC" && LTCC=$CC +test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS +test -z "$LD" && LD=ld +test -z "$ac_objext" && ac_objext=o + +for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` + + +# Only perform the check for file, if the check method requires it +test -z "$MAGIC_CMD" && MAGIC_CMD=file +case $deplibs_check_method in +file_magic*) + if test "$file_magic_cmd" = '$MAGIC_CMD'; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5 +$as_echo_n "checking for ${ac_tool_prefix}file... " >&6; } +if ${lt_cv_path_MAGIC_CMD+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $MAGIC_CMD in +[\\/*] | ?:[\\/]*) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD="$MAGIC_CMD" + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" + for ac_dir in $ac_dummy; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/${ac_tool_prefix}file; then + lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <<_LT_EOF 1>&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +_LT_EOF + fi ;; + esac + fi + break + fi + done + IFS="$lt_save_ifs" + MAGIC_CMD="$lt_save_MAGIC_CMD" + ;; +esac +fi + +MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +if test -n "$MAGIC_CMD"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 +$as_echo "$MAGIC_CMD" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + + + +if test -z "$lt_cv_path_MAGIC_CMD"; then + if test -n "$ac_tool_prefix"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5 +$as_echo_n "checking for file... " >&6; } +if ${lt_cv_path_MAGIC_CMD+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $MAGIC_CMD in +[\\/*] | ?:[\\/]*) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD="$MAGIC_CMD" + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" + for ac_dir in $ac_dummy; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/file; then + lt_cv_path_MAGIC_CMD="$ac_dir/file" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <<_LT_EOF 1>&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +_LT_EOF + fi ;; + esac + fi + break + fi + done + IFS="$lt_save_ifs" + MAGIC_CMD="$lt_save_MAGIC_CMD" + ;; +esac +fi + +MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +if test -n "$MAGIC_CMD"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 +$as_echo "$MAGIC_CMD" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + else + MAGIC_CMD=: + fi +fi + + fi + ;; +esac + +# Use C for the default configuration in the libtool script + +lt_save_CC="$CC" +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +# Source file extension for C test sources. +ac_ext=c + +# Object file extension for compiled C test sources. +objext=o +objext=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="int some_variable = 0;" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(){return(0);}' + + + + + + + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + +# Save the default compiler, since it gets overwritten when the other +# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. +compiler_DEFAULT=$CC + +# save warnings/boilerplate of simple test code +ac_outfile=conftest.$ac_objext +echo "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$RM conftest* + +ac_outfile=conftest.$ac_objext +echo "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$RM -r conftest* + + +if test -n "$compiler"; then + +lt_prog_compiler_no_builtin_flag= + +if test "$GCC" = yes; then + case $cc_basename in + nvcc*) + lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;; + *) + lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;; + esac + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 +$as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } +if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_rtti_exceptions=no + ac_outfile=conftest.$ac_objext + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="-fno-rtti -fno-exceptions" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_rtti_exceptions=yes + fi + fi + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 +$as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; } + +if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then + lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" +else + : +fi + +fi + + + + + + + lt_prog_compiler_wl= +lt_prog_compiler_pic= +lt_prog_compiler_static= + + + if test "$GCC" = yes; then + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_static='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static='-Bstatic' + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + lt_prog_compiler_pic='-fPIC' + ;; + m68k) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' + ;; + esac + ;; + + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + lt_prog_compiler_pic='-DDLL_EXPORT' + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic='-fno-common' + ;; + + haiku*) + # PIC is the default for Haiku. + # The "-static" flag exists, but is broken. + lt_prog_compiler_static= + ;; + + hpux*) + # PIC is the default for 64-bit PA HP-UX, but not for 32-bit + # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag + # sets the default TLS model and affects inlining. + case $host_cpu in + hppa*64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic='-fPIC' + ;; + esac + ;; + + interix[3-9]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. + lt_prog_compiler_can_build_shared=no + enable_shared=no + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + lt_prog_compiler_pic='-fPIC -shared' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic=-Kconform_pic + fi + ;; + + *) + lt_prog_compiler_pic='-fPIC' + ;; + esac + + case $cc_basename in + nvcc*) # Cuda Compiler Driver 2.2 + lt_prog_compiler_wl='-Xlinker ' + if test -n "$lt_prog_compiler_pic"; then + lt_prog_compiler_pic="-Xcompiler $lt_prog_compiler_pic" + fi + ;; + esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in + aix*) + lt_prog_compiler_wl='-Wl,' + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static='-Bstatic' + else + lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' + fi + ;; + + mingw* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic='-DDLL_EXPORT' + ;; + + hpux9* | hpux10* | hpux11*) + lt_prog_compiler_wl='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic='+Z' + ;; + esac + # Is there a better lt_prog_compiler_static that works with the bundled CC? + lt_prog_compiler_static='${wl}-a ${wl}archive' + ;; + + irix5* | irix6* | nonstopux*) + lt_prog_compiler_wl='-Wl,' + # PIC (with -KPIC) is the default. + lt_prog_compiler_static='-non_shared' + ;; + + linux* | k*bsd*-gnu | kopensolaris*-gnu) + case $cc_basename in + # old Intel for x86_64 which still supported -KPIC. + ecc*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-static' + ;; + # icc used to be incompatible with GCC. + # ICC 10 doesn't accept -KPIC any more. + icc* | ifort*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fPIC' + lt_prog_compiler_static='-static' + ;; + # Lahey Fortran 8.1. + lf95*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='--shared' + lt_prog_compiler_static='--static' + ;; + nagfor*) + # NAG Fortran compiler + lt_prog_compiler_wl='-Wl,-Wl,,' + lt_prog_compiler_pic='-PIC' + lt_prog_compiler_static='-Bstatic' + ;; + pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fpic' + lt_prog_compiler_static='-Bstatic' + ;; + ccc*) + lt_prog_compiler_wl='-Wl,' + # All Alpha code is PIC. + lt_prog_compiler_static='-non_shared' + ;; + xl* | bgxl* | bgf* | mpixl*) + # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-qpic' + lt_prog_compiler_static='-qstaticlink' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*) + # Sun Fortran 8.3 passes all unrecognized flags to the linker + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + lt_prog_compiler_wl='' + ;; + *Sun\ F* | *Sun*Fortran*) + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + lt_prog_compiler_wl='-Qoption ld ' + ;; + *Sun\ C*) + # Sun C 5.9 + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + lt_prog_compiler_wl='-Wl,' + ;; + *Intel*\ [CF]*Compiler*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fPIC' + lt_prog_compiler_static='-static' + ;; + *Portland\ Group*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fpic' + lt_prog_compiler_static='-Bstatic' + ;; + esac + ;; + esac + ;; + + newsos6) + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + lt_prog_compiler_pic='-fPIC -shared' + ;; + + osf3* | osf4* | osf5*) + lt_prog_compiler_wl='-Wl,' + # All OSF/1 code is PIC. + lt_prog_compiler_static='-non_shared' + ;; + + rdos*) + lt_prog_compiler_static='-non_shared' + ;; + + solaris*) + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + case $cc_basename in + f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) + lt_prog_compiler_wl='-Qoption ld ';; + *) + lt_prog_compiler_wl='-Wl,';; + esac + ;; + + sunos4*) + lt_prog_compiler_wl='-Qoption ld ' + lt_prog_compiler_pic='-PIC' + lt_prog_compiler_static='-Bstatic' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec ;then + lt_prog_compiler_pic='-Kconform_pic' + lt_prog_compiler_static='-Bstatic' + fi + ;; + + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + unicos*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_can_build_shared=no + ;; + + uts4*) + lt_prog_compiler_pic='-pic' + lt_prog_compiler_static='-Bstatic' + ;; + + *) + lt_prog_compiler_can_build_shared=no + ;; + esac + fi + +case $host_os in + # For platforms which do not support PIC, -DPIC is meaningless: + *djgpp*) + lt_prog_compiler_pic= + ;; + *) + lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" + ;; +esac + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 +$as_echo_n "checking for $compiler option to produce PIC... " >&6; } +if ${lt_cv_prog_compiler_pic+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_pic=$lt_prog_compiler_pic +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5 +$as_echo "$lt_cv_prog_compiler_pic" >&6; } +lt_prog_compiler_pic=$lt_cv_prog_compiler_pic + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$lt_prog_compiler_pic"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 +$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } +if ${lt_cv_prog_compiler_pic_works+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_pic_works=no + ac_outfile=conftest.$ac_objext + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$lt_prog_compiler_pic -DPIC" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_pic_works=yes + fi + fi + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 +$as_echo "$lt_cv_prog_compiler_pic_works" >&6; } + +if test x"$lt_cv_prog_compiler_pic_works" = xyes; then + case $lt_prog_compiler_pic in + "" | " "*) ;; + *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; + esac +else + lt_prog_compiler_pic= + lt_prog_compiler_can_build_shared=no +fi + +fi + + + + + + + + + + + +# +# Check to make sure the static flag actually works. +# +wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 +$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } +if ${lt_cv_prog_compiler_static_works+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_static_works=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $lt_tmp_static_flag" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_static_works=yes + fi + else + lt_cv_prog_compiler_static_works=yes + fi + fi + $RM -r conftest* + LDFLAGS="$save_LDFLAGS" + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 +$as_echo "$lt_cv_prog_compiler_static_works" >&6; } + +if test x"$lt_cv_prog_compiler_static_works" = xyes; then + : +else + lt_prog_compiler_static= +fi + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if ${lt_cv_prog_compiler_c_o+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_c_o=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o=yes + fi + fi + chmod u+w . 2>&5 + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 +$as_echo "$lt_cv_prog_compiler_c_o" >&6; } + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if ${lt_cv_prog_compiler_c_o+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_c_o=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o=yes + fi + fi + chmod u+w . 2>&5 + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 +$as_echo "$lt_cv_prog_compiler_c_o" >&6; } + + + + +hard_links="nottested" +if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 +$as_echo_n "checking if we can lock with hard links... " >&6; } + hard_links=yes + $RM conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 +$as_echo "$hard_links" >&6; } + if test "$hard_links" = no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 +$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} + need_locks=warn + fi +else + need_locks=no +fi + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } + + runpath_var= + allow_undefined_flag= + always_export_symbols=no + archive_cmds= + archive_expsym_cmds= + compiler_needs_object=no + enable_shared_with_static_runtimes=no + export_dynamic_flag_spec= + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + hardcode_automatic=no + hardcode_direct=no + hardcode_direct_absolute=no + hardcode_libdir_flag_spec= + hardcode_libdir_separator= + hardcode_minus_L=no + hardcode_shlibpath_var=unsupported + inherit_rpath=no + link_all_deplibs=unknown + module_cmds= + module_expsym_cmds= + old_archive_from_new_cmds= + old_archive_from_expsyms_cmds= + thread_safe_flag_spec= + whole_archive_flag_spec= + # include_expsyms should be a list of space-separated symbols to be *always* + # included in the symbol list + include_expsyms= + # exclude_expsyms can be an extended regexp of symbols to exclude + # it will be wrapped by ` (' and `)$', so one must not match beginning or + # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', + # as well as any symbol that contains `d'. + exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' + # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out + # platforms (ab)use it in PIC code, but their linkers get confused if + # the symbol is explicitly referenced. Since portable code cannot + # rely on this symbol name, it's probably fine to never include it in + # preloaded symbol tables. + # Exclude shared library initialization/finalization symbols. + extract_expsyms_cmds= + + case $host_os in + cygwin* | mingw* | pw32* | cegcc*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test "$GCC" != yes; then + with_gnu_ld=no + fi + ;; + interix*) + # we just hope/assume this is gcc and not c89 (= MSVC++) + with_gnu_ld=yes + ;; + openbsd*) + with_gnu_ld=no + ;; + esac + + ld_shlibs=yes + + # On some targets, GNU ld is compatible enough with the native linker + # that we're better off using the native interface for both. + lt_use_gnu_ld_interface=no + if test "$with_gnu_ld" = yes; then + case $host_os in + aix*) + # The AIX port of GNU ld has always aspired to compatibility + # with the native linker. However, as the warning in the GNU ld + # block says, versions before 2.19.5* couldn't really create working + # shared libraries, regardless of the interface used. + case `$LD -v 2>&1` in + *\ \(GNU\ Binutils\)\ 2.19.5*) ;; + *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;; + *\ \(GNU\ Binutils\)\ [3-9]*) ;; + *) + lt_use_gnu_ld_interface=yes + ;; + esac + ;; + *) + lt_use_gnu_ld_interface=yes + ;; + esac + fi + + if test "$lt_use_gnu_ld_interface" = yes; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='${wl}' + + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + export_dynamic_flag_spec='${wl}--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + whole_archive_flag_spec= + fi + supports_anon_versioning=no + case `$LD -v 2>&1` in + *GNU\ gold*) supports_anon_versioning=yes ;; + *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + + # See if GNU ld supports shared libraries. + case $host_os in + aix[3-9]*) + # On AIX/PPC, the GNU linker is very broken + if test "$host_cpu" != ia64; then + ld_shlibs=no + cat <<_LT_EOF 1>&2 + +*** Warning: the GNU linker, at least up to release 2.19, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to install binutils +*** 2.20 or above, or modify your PATH so that a non-GNU linker is found. +*** You will then need to restart the configuration process. + +_LT_EOF + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='' + ;; + m68k) + archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + ;; + esac + ;; + + beos*) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + allow_undefined_flag=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + ld_shlibs=no + fi + ;; + + cygwin* | mingw* | pw32* | cegcc*) + # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, + # as there is no search path for DLLs. + hardcode_libdir_flag_spec='-L$libdir' + export_dynamic_flag_spec='${wl}--export-all-symbols' + allow_undefined_flag=unsupported + always_export_symbols=no + enable_shared_with_static_runtimes=yes + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' + exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' + + if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + ld_shlibs=no + fi + ;; + + haiku*) + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + link_all_deplibs=yes + ;; + + interix[3-9]*) + hardcode_direct=no + hardcode_shlibpath_var=no + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + export_dynamic_flag_spec='${wl}-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + + gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) + tmp_diet=no + if test "$host_os" = linux-dietlibc; then + case $cc_basename in + diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) + esac + fi + if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ + && test "$tmp_diet" = no + then + tmp_addflag=' $pic_flag' + tmp_sharedflag='-shared' + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler + whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag' + ;; + pgf77* | pgf90* | pgf95* | pgfortran*) + # Portland Group f77 and f90 compilers + whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + lf95*) # Lahey Fortran 8.1 + whole_archive_flag_spec= + tmp_sharedflag='--shared' ;; + xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) + tmp_sharedflag='-qmkshrobj' + tmp_addflag= ;; + nvcc*) # Cuda Compiler Driver 2.2 + whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + compiler_needs_object=yes + ;; + esac + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) # Sun C 5.9 + whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + compiler_needs_object=yes + tmp_sharedflag='-G' ;; + *Sun\ F*) # Sun Fortran 8.3 + tmp_sharedflag='-G' ;; + esac + archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + + if test "x$supports_anon_versioning" = xyes; then + archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + fi + + case $cc_basename in + xlf* | bgf* | bgxlf* | mpixlf*) + # IBM XL Fortran 10.1 on PPC cannot create shared libs itself + whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive' + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' + if test "x$supports_anon_versioning" = xyes; then + archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' + fi + ;; + esac + else + ld_shlibs=no + fi + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris*) + if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then + ld_shlibs=no + cat <<_LT_EOF 1>&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) + case `$LD -v 2>&1` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) + ld_shlibs=no + cat <<_LT_EOF 1>&2 + +*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not +*** reliably create shared libraries on SCO systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.16.91.0.3 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + ;; + *) + # For security reasons, it is highly recommended that you always + # use absolute paths for naming shared libraries, and exclude the + # DT_RUNPATH tag from executables and libraries. But doing so + # requires that you compile everything twice, which is a pain. + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + esac + ;; + + sunos4*) + archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + *) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + esac + + if test "$ld_shlibs" = no; then + runpath_var= + hardcode_libdir_flag_spec= + export_dynamic_flag_spec= + whole_archive_flag_spec= + fi + else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + allow_undefined_flag=unsupported + always_export_symbols=yes + archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + hardcode_minus_L=yes + if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + hardcode_direct=unsupported + fi + ;; + + aix[4-9]*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + # Also, AIX nm treats weak defined symbols like other global + # defined symbols, whereas GNU nm marks them as "W". + if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then + export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + else + export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + fi + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) + for ld_flag in $LDFLAGS; do + if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then + aix_use_runtimelinking=yes + break + fi + done + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + archive_cmds='' + hardcode_direct=yes + hardcode_direct_absolute=yes + hardcode_libdir_separator=':' + link_all_deplibs=yes + file_list_spec='${wl}-f,' + + if test "$GCC" = yes; then + case $host_os in aix4.[012]|aix4.[012].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && + strings "$collect2name" | $GREP resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + hardcode_direct=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + hardcode_minus_L=yes + hardcode_libdir_flag_spec='-L$libdir' + hardcode_libdir_separator= + fi + ;; + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + export_dynamic_flag_spec='${wl}-bexpall' + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + always_export_symbols=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + allow_undefined_flag='-berok' + # Determine the default libpath from the value encoded in an + # empty executable. + if test "${lt_cv_aix_libpath+set}" = set; then + aix_libpath=$lt_cv_aix_libpath +else + if ${lt_cv_aix_libpath_+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + + lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\([^ ]*\) *$/\1/ + p + } + }' + lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + # Check for a 64-bit object if we didn't find anything. + if test -z "$lt_cv_aix_libpath_"; then + lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + if test -z "$lt_cv_aix_libpath_"; then + lt_cv_aix_libpath_="/usr/lib:/lib" + fi + +fi + + aix_libpath=$lt_cv_aix_libpath_ +fi + + hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" + archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' + allow_undefined_flag="-z nodefs" + archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an + # empty executable. + if test "${lt_cv_aix_libpath+set}" = set; then + aix_libpath=$lt_cv_aix_libpath +else + if ${lt_cv_aix_libpath_+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + + lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\([^ ]*\) *$/\1/ + p + } + }' + lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + # Check for a 64-bit object if we didn't find anything. + if test -z "$lt_cv_aix_libpath_"; then + lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + if test -z "$lt_cv_aix_libpath_"; then + lt_cv_aix_libpath_="/usr/lib:/lib" + fi + +fi + + aix_libpath=$lt_cv_aix_libpath_ +fi + + hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + no_undefined_flag=' ${wl}-bernotok' + allow_undefined_flag=' ${wl}-berok' + if test "$with_gnu_ld" = yes; then + # We only use this code for GNU lds that support --whole-archive. + whole_archive_flag_spec='${wl}--whole-archive$convenience ${wl}--no-whole-archive' + else + # Exported symbols can be pulled into shared objects from archives + whole_archive_flag_spec='$convenience' + fi + archive_cmds_need_lc=yes + # This is similar to how AIX traditionally builds its shared libraries. + archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='' + ;; + m68k) + archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + ;; + esac + ;; + + bsdi[45]*) + export_dynamic_flag_spec=-rdynamic + ;; + + cygwin* | mingw* | pw32* | cegcc*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + case $cc_basename in + cl*) + # Native MSVC + hardcode_libdir_flag_spec=' ' + allow_undefined_flag=unsupported + always_export_symbols=yes + file_list_spec='@' + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' + archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; + else + sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; + fi~ + $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ + linknames=' + # The linker will not automatically build a static lib if we build a DLL. + # _LT_TAGVAR(old_archive_from_new_cmds, )='true' + enable_shared_with_static_runtimes=yes + exclude_expsyms='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' + # Don't use ranlib + old_postinstall_cmds='chmod 644 $oldlib' + postlink_cmds='lt_outputfile="@OUTPUT@"~ + lt_tool_outputfile="@TOOL_OUTPUT@"~ + case $lt_outputfile in + *.exe|*.EXE) ;; + *) + lt_outputfile="$lt_outputfile.exe" + lt_tool_outputfile="$lt_tool_outputfile.exe" + ;; + esac~ + if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then + $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; + $RM "$lt_outputfile.manifest"; + fi' + ;; + *) + # Assume MSVC wrapper + hardcode_libdir_flag_spec=' ' + allow_undefined_flag=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + old_archive_from_new_cmds='true' + # FIXME: Should let the user specify the lib program. + old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs' + enable_shared_with_static_runtimes=yes + ;; + esac + ;; + + darwin* | rhapsody*) + + + archive_cmds_need_lc=no + hardcode_direct=no + hardcode_automatic=yes + hardcode_shlibpath_var=unsupported + if test "$lt_cv_ld_force_load" = "yes"; then + whole_archive_flag_spec='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' + + else + whole_archive_flag_spec='' + fi + link_all_deplibs=yes + allow_undefined_flag="$_lt_dar_allow_undefined" + case $cc_basename in + ifort*) _lt_dar_can_shared=yes ;; + *) _lt_dar_can_shared=$GCC ;; + esac + if test "$_lt_dar_can_shared" = "yes"; then + output_verbose_link_cmd=func_echo_all + archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" + module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" + archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" + module_expsym_cmds="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" + + else + ld_shlibs=no + fi + + ;; + + dgux*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2.*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd* | dragonfly*) + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + hpux9*) + if test "$GCC" = yes; then + archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + fi + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + export_dynamic_flag_spec='${wl}-E' + ;; + + hpux10*) + if test "$GCC" = yes && test "$with_gnu_ld" = no; then + archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + fi + if test "$with_gnu_ld" = no; then + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + hardcode_direct_absolute=yes + export_dynamic_flag_spec='${wl}-E' + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + fi + ;; + + hpux11*) + if test "$GCC" = yes && test "$with_gnu_ld" = no; then + case $host_cpu in + hppa*64*) + archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else + case $host_cpu in + hppa*64*) + archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + + # Older versions of the 11.00 compiler do not understand -b yet + # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5 +$as_echo_n "checking if $CC understands -b... " >&6; } +if ${lt_cv_prog_compiler__b+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler__b=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS -b" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler__b=yes + fi + else + lt_cv_prog_compiler__b=yes + fi + fi + $RM -r conftest* + LDFLAGS="$save_LDFLAGS" + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5 +$as_echo "$lt_cv_prog_compiler__b" >&6; } + +if test x"$lt_cv_prog_compiler__b" = xyes; then + archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' +else + archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' +fi + + ;; + esac + fi + if test "$with_gnu_ld" = no; then + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + + case $host_cpu in + hppa*64*|ia64*) + hardcode_direct=no + hardcode_shlibpath_var=no + ;; + *) + hardcode_direct=yes + hardcode_direct_absolute=yes + export_dynamic_flag_spec='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + ;; + esac + fi + ;; + + irix5* | irix6* | nonstopux*) + if test "$GCC" = yes; then + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + # Try to use the -exported_symbol ld option, if it does not + # work, assume that -exports_file does not work either and + # implicitly export all symbols. + # This should be the same for all languages, so no per-tag cache variable. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5 +$as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; } +if ${lt_cv_irix_exported_symbol+:} false; then : + $as_echo_n "(cached) " >&6 +else + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int foo (void) { return 0; } +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + lt_cv_irix_exported_symbol=yes +else + lt_cv_irix_exported_symbol=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS="$save_LDFLAGS" +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5 +$as_echo "$lt_cv_irix_exported_symbol" >&6; } + if test "$lt_cv_irix_exported_symbol" = yes; then + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' + fi + else + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' + fi + archive_cmds_need_lc='no' + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + inherit_rpath=yes + link_all_deplibs=yes + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + newsos6) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_shlibpath_var=no + ;; + + *nto* | *qnx*) + ;; + + openbsd*) + if test -f /usr/libexec/ld.so; then + hardcode_direct=yes + hardcode_shlibpath_var=no + hardcode_direct_absolute=yes + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + export_dynamic_flag_spec='${wl}-E' + else + case $host_os in + openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-R$libdir' + ;; + *) + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + ;; + esac + fi + else + ld_shlibs=no + fi + ;; + + os2*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + allow_undefined_flag=unsupported + archive_cmds='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' + old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' + ;; + + osf3*) + if test "$GCC" = yes; then + allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + allow_undefined_flag=' -expect_unresolved \*' + archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + fi + archive_cmds_need_lc='no' + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test "$GCC" = yes; then + allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + else + allow_undefined_flag=' -expect_unresolved \*' + archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ + $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' + + # Both c and cxx compiler support -rpath directly + hardcode_libdir_flag_spec='-rpath $libdir' + fi + archive_cmds_need_lc='no' + hardcode_libdir_separator=: + ;; + + solaris*) + no_undefined_flag=' -z defs' + if test "$GCC" = yes; then + wlarc='${wl}' + archive_cmds='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + else + case `$CC -V 2>&1` in + *"Compilers 5.0"*) + wlarc='' + archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' + ;; + *) + wlarc='${wl}' + archive_cmds='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + ;; + esac + fi + hardcode_libdir_flag_spec='-R$libdir' + hardcode_shlibpath_var=no + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands `-z linker_flag'. GCC discards it without `$wl', + # but is careful enough not to reorder. + # Supported since Solaris 2.6 (maybe 2.5.1?) + if test "$GCC" = yes; then + whole_archive_flag_spec='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' + else + whole_archive_flag_spec='-z allextract$convenience -z defaultextract' + fi + ;; + esac + link_all_deplibs=yes + ;; + + sunos4*) + if test "x$host_vendor" = xsequent; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + hardcode_libdir_flag_spec='-L$libdir' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + + sysv4) + case $host_vendor in + sni) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' + reload_cmds='$CC -r -o $output$reload_objs' + hardcode_direct=no + ;; + motorola) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var=no + ;; + + sysv4.3*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + export_dynamic_flag_spec='-Bexport' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ld_shlibs=yes + fi + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) + no_undefined_flag='${wl}-z,text' + archive_cmds_need_lc=no + hardcode_shlibpath_var=no + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We can NOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + no_undefined_flag='${wl}-z,text' + allow_undefined_flag='${wl}-z,nodefs' + archive_cmds_need_lc=no + hardcode_shlibpath_var=no + hardcode_libdir_flag_spec='${wl}-R,$libdir' + hardcode_libdir_separator=':' + link_all_deplibs=yes + export_dynamic_flag_spec='${wl}-Bexport' + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + uts4*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; + + *) + ld_shlibs=no + ;; + esac + + if test x$host_vendor = xsni; then + case $host in + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + export_dynamic_flag_spec='${wl}-Blargedynsym' + ;; + esac + fi + fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5 +$as_echo "$ld_shlibs" >&6; } +test "$ld_shlibs" = no && can_build_shared=no + +with_gnu_ld=$with_gnu_ld + + + + + + + + + + + + + + + +# +# Do we need to explicitly link libc? +# +case "x$archive_cmds_need_lc" in +x|xyes) + # Assume -lc should be added + archive_cmds_need_lc=yes + + if test "$enable_shared" = yes && test "$GCC" = yes; then + case $archive_cmds in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 +$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } +if ${lt_cv_archive_cmds_need_lc+:} false; then : + $as_echo_n "(cached) " >&6 +else + $RM conftest* + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_prog_compiler_wl + pic_flag=$lt_prog_compiler_pic + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$allow_undefined_flag + allow_undefined_flag= + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 + (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + then + lt_cv_archive_cmds_need_lc=no + else + lt_cv_archive_cmds_need_lc=yes + fi + allow_undefined_flag=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5 +$as_echo "$lt_cv_archive_cmds_need_lc" >&6; } + archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc + ;; + esac + fi + ;; +esac + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 +$as_echo_n "checking dynamic linker characteristics... " >&6; } + +if test "$GCC" = yes; then + case $host_os in + darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; + *) lt_awk_arg="/^libraries:/" ;; + esac + case $host_os in + mingw* | cegcc*) lt_sed_strip_eq="s,=\([A-Za-z]:\),\1,g" ;; + *) lt_sed_strip_eq="s,=/,/,g" ;; + esac + lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` + case $lt_search_path_spec in + *\;*) + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` + ;; + *) + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` + ;; + esac + # Ok, now we have the path, separated by spaces, we can step through it + # and add multilib dir if necessary. + lt_tmp_lt_search_path_spec= + lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` + for lt_sys_path in $lt_search_path_spec; do + if test -d "$lt_sys_path/$lt_multi_os_dir"; then + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" + else + test -d "$lt_sys_path" && \ + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" + fi + done + lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' +BEGIN {RS=" "; FS="/|\n";} { + lt_foo=""; + lt_count=0; + for (lt_i = NF; lt_i > 0; lt_i--) { + if ($lt_i != "" && $lt_i != ".") { + if ($lt_i == "..") { + lt_count++; + } else { + if (lt_count == 0) { + lt_foo="/" $lt_i lt_foo; + } else { + lt_count--; + } + } + } + } + if (lt_foo != "") { lt_freq[lt_foo]++; } + if (lt_freq[lt_foo] == 1) { print lt_foo; } +}'` + # AWK program above erroneously prepends '/' to C:/dos/paths + # for these hosts. + case $host_os in + mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ + $SED 's,/\([A-Za-z]:\),\1,g'` ;; + esac + sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` +else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +fi +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=".so" +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +case $host_os in +aix3*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}${shared_ext}$major' + ;; + +aix[4-9]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[01] | aix4.[01].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # AIX (on Power*) has no versioning support, so currently we can not hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}${shared_ext}$major' + fi + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + case $host_cpu in + powerpc) + # Since July 2007 AmigaOS4 officially supports .so libraries. + # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + ;; + m68k) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + esac + ;; + +beos*) + library_names_spec='${libname}${shared_ext}' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[45]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32* | cegcc*) + version_type=windows + shrext_cmds=".dll" + need_version=no + need_lib_prefix=no + + case $GCC,$cc_basename in + yes,*) + # gcc + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; + fi' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + + sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api" + ;; + mingw* | cegcc*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + ;; + esac + dynamic_linker='Win32 ld.exe' + ;; + + *,cl*) + # Native MSVC + libname_spec='$name' + soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + library_names_spec='${libname}.dll.lib' + + case $build_os in + mingw*) + sys_lib_search_path_spec= + lt_save_ifs=$IFS + IFS=';' + for lt_path in $LIB + do + IFS=$lt_save_ifs + # Let DOS variable expansion print the short 8.3 style file name. + lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` + sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" + done + IFS=$lt_save_ifs + # Convert to MSYS style. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` + ;; + cygwin*) + # Convert to unix form, then to dos form, then back to unix form + # but this time dos style (no spaces!) so that the unix form looks + # like /cygdrive/c/PROGRA~1:/cygdr... + sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` + sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` + sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + ;; + *) + sys_lib_search_path_spec="$LIB" + if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then + # It is most probably a Windows format PATH. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + # FIXME: find the short name or the path components, as spaces are + # common. (e.g. "Program Files" -> "PROGRA~1") + ;; + esac + + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + dynamic_linker='Win32 link.exe' + ;; + + *) + # Assume MSVC wrapper + library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' + dynamic_linker='Win32 ld.exe' + ;; + esac + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' + soname_spec='${libname}${release}${major}$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' + + sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib" + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[23].*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2.*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[01]* | freebsdelf3.[01]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ + freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + *) # from 4.6 on, and DragonFly + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + esac + ;; + +gnu*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +haiku*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + dynamic_linker="$host_os runtime_loader" + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LIBRARY_PATH + shlibpath_overrides_runpath=yes + sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + if test "X$HPUX_IA64_MODE" = X32; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + fi + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555, ... + postinstall_cmds='chmod 555 $lib' + # or fails outright, so override atomically: + install_override_mode=555 + ;; + +interix[3-9]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test "$lt_cv_prog_gnu_ld" = yes; then + version_type=linux # correct to gnu/linux during the next big refactor + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +# This must be glibc/ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + + # Some binutils ld are patched to set DT_RUNPATH + if ${lt_cv_shlibpath_overrides_runpath+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_shlibpath_overrides_runpath=no + save_LDFLAGS=$LDFLAGS + save_libdir=$libdir + eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \ + LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\"" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : + lt_cv_shlibpath_overrides_runpath=yes +fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS=$save_LDFLAGS + libdir=$save_libdir + +fi + + shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath + + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Add ABI-specific directories to the system library path. + sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /lib /usr/lib" + + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec $lt_ld_extra" + + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +*nto* | *qnx*) + version_type=qnx + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='ldqnx.so' + ;; + +openbsd*) + version_type=sunos + sys_lib_dlsearch_path_spec="/usr/lib" + need_lib_prefix=no + # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. + case $host_os in + openbsd3.3 | openbsd3.3.*) need_version=yes ;; + *) need_version=no ;; + esac + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case $host_os in + openbsd2.[89] | openbsd2.[89].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi + ;; + +os2*) + libname_spec='$name' + shrext_cmds=".dll" + need_lib_prefix=no + library_names_spec='$libname${shared_ext} $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + +rdos*) + dynamic_linker=no + ;; + +solaris*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.3*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' + soname_spec='$libname${shared_ext}.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=freebsd-elf + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + if test "$with_gnu_ld" = yes; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + +tpf*) + # TPF is a cross-target only. Preferred cross-host = GNU/Linux. + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +uts4*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 +$as_echo "$dynamic_linker" >&6; } +test "$dynamic_linker" = no && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then + sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" +fi +if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then + sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" +fi + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 +$as_echo_n "checking how to hardcode library paths into programs... " >&6; } +hardcode_action= +if test -n "$hardcode_libdir_flag_spec" || + test -n "$runpath_var" || + test "X$hardcode_automatic" = "Xyes" ; then + + # We can hardcode non-existent directories. + if test "$hardcode_direct" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$_LT_TAGVAR(hardcode_shlibpath_var, )" != no && + test "$hardcode_minus_L" != no; then + # Linking always hardcodes the temporary library directory. + hardcode_action=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action=unsupported +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 +$as_echo "$hardcode_action" >&6; } + +if test "$hardcode_action" = relink || + test "$inherit_rpath" = yes; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi + + + + + + + if test "x$enable_dlopen" != xyes; then + enable_dlopen=unknown + enable_dlopen_self=unknown + enable_dlopen_self_static=unknown +else + lt_cv_dlopen=no + lt_cv_dlopen_libs= + + case $host_os in + beos*) + lt_cv_dlopen="load_add_on" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; + + mingw* | pw32* | cegcc*) + lt_cv_dlopen="LoadLibrary" + lt_cv_dlopen_libs= + ;; + + cygwin*) + lt_cv_dlopen="dlopen" + lt_cv_dlopen_libs= + ;; + + darwin*) + # if libdl is installed we need to link against it + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 +$as_echo_n "checking for dlopen in -ldl... " >&6; } +if ${ac_cv_lib_dl_dlopen+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); +int +main () +{ +return dlopen (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dl_dlopen=yes +else + ac_cv_lib_dl_dlopen=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 +$as_echo "$ac_cv_lib_dl_dlopen" >&6; } +if test "x$ac_cv_lib_dl_dlopen" = xyes; then : + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" +else + + lt_cv_dlopen="dyld" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + +fi + + ;; + + *) + ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" +if test "x$ac_cv_func_shl_load" = xyes; then : + lt_cv_dlopen="shl_load" +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 +$as_echo_n "checking for shl_load in -ldld... " >&6; } +if ${ac_cv_lib_dld_shl_load+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char shl_load (); +int +main () +{ +return shl_load (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dld_shl_load=yes +else + ac_cv_lib_dld_shl_load=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 +$as_echo "$ac_cv_lib_dld_shl_load" >&6; } +if test "x$ac_cv_lib_dld_shl_load" = xyes; then : + lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld" +else + ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" +if test "x$ac_cv_func_dlopen" = xyes; then : + lt_cv_dlopen="dlopen" +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 +$as_echo_n "checking for dlopen in -ldl... " >&6; } +if ${ac_cv_lib_dl_dlopen+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); +int +main () +{ +return dlopen (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dl_dlopen=yes +else + ac_cv_lib_dl_dlopen=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 +$as_echo "$ac_cv_lib_dl_dlopen" >&6; } +if test "x$ac_cv_lib_dl_dlopen" = xyes; then : + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 +$as_echo_n "checking for dlopen in -lsvld... " >&6; } +if ${ac_cv_lib_svld_dlopen+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lsvld $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); +int +main () +{ +return dlopen (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_svld_dlopen=yes +else + ac_cv_lib_svld_dlopen=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 +$as_echo "$ac_cv_lib_svld_dlopen" >&6; } +if test "x$ac_cv_lib_svld_dlopen" = xyes; then : + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 +$as_echo_n "checking for dld_link in -ldld... " >&6; } +if ${ac_cv_lib_dld_dld_link+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dld_link (); +int +main () +{ +return dld_link (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dld_dld_link=yes +else + ac_cv_lib_dld_dld_link=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 +$as_echo "$ac_cv_lib_dld_dld_link" >&6; } +if test "x$ac_cv_lib_dld_dld_link" = xyes; then : + lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld" +fi + + +fi + + +fi + + +fi + + +fi + + +fi + + ;; + esac + + if test "x$lt_cv_dlopen" != xno; then + enable_dlopen=yes + else + enable_dlopen=no + fi + + case $lt_cv_dlopen in + dlopen) + save_CPPFLAGS="$CPPFLAGS" + test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + + save_LDFLAGS="$LDFLAGS" + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + + save_LIBS="$LIBS" + LIBS="$lt_cv_dlopen_libs $LIBS" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 +$as_echo_n "checking whether a program can dlopen itself... " >&6; } +if ${lt_cv_dlopen_self+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + lt_cv_dlopen_self=cross +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +#line $LINENO "configure" +#include "confdefs.h" + +#if HAVE_DLFCN_H +#include +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +/* When -fvisbility=hidden is used, assume the code has been annotated + correspondingly for the symbols needed. */ +#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) +int fnord () __attribute__((visibility("default"))); +#endif + +int fnord () { return 42; } +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else + { + if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + else puts (dlerror ()); + } + /* dlclose (self); */ + } + else + puts (dlerror ()); + + return status; +} +_LT_EOF + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 + (eval $ac_link) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) >&5 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; + x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self=no + fi +fi +rm -fr conftest* + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 +$as_echo "$lt_cv_dlopen_self" >&6; } + + if test "x$lt_cv_dlopen_self" = xyes; then + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5 +$as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; } +if ${lt_cv_dlopen_self_static+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + lt_cv_dlopen_self_static=cross +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +#line $LINENO "configure" +#include "confdefs.h" + +#if HAVE_DLFCN_H +#include +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +/* When -fvisbility=hidden is used, assume the code has been annotated + correspondingly for the symbols needed. */ +#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) +int fnord () __attribute__((visibility("default"))); +#endif + +int fnord () { return 42; } +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else + { + if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + else puts (dlerror ()); + } + /* dlclose (self); */ + } + else + puts (dlerror ()); + + return status; +} +_LT_EOF + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 + (eval $ac_link) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) >&5 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self_static=no + fi +fi +rm -fr conftest* + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5 +$as_echo "$lt_cv_dlopen_self_static" >&6; } + fi + + CPPFLAGS="$save_CPPFLAGS" + LDFLAGS="$save_LDFLAGS" + LIBS="$save_LIBS" + ;; + esac + + case $lt_cv_dlopen_self in + yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; + *) enable_dlopen_self=unknown ;; + esac + + case $lt_cv_dlopen_self_static in + yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; + *) enable_dlopen_self_static=unknown ;; + esac +fi + + + + + + + + + + + + + + + + + +striplib= +old_striplib= +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5 +$as_echo_n "checking whether stripping libraries is possible... " >&6; } +if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then + test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" + test -z "$striplib" && striplib="$STRIP --strip-unneeded" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else +# FIXME - insert some real tests, host_os isn't really good enough + case $host_os in + darwin*) + if test -n "$STRIP" ; then + striplib="$STRIP -x" + old_striplib="$STRIP -S" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + fi + ;; + *) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + ;; + esac +fi + + + + + + + + + + + + + # Report which library types will actually be built + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 +$as_echo_n "checking if libtool supports shared libraries... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 +$as_echo "$can_build_shared" >&6; } + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 +$as_echo_n "checking whether to build shared libraries... " >&6; } + test "$can_build_shared" = "no" && enable_shared=no + + # On AIX, shared libraries and static libraries use the same namespace, and + # are all built from PIC. + case $host_os in + aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + + aix[4-9]*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; + esac + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 +$as_echo "$enable_shared" >&6; } + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 +$as_echo_n "checking whether to build static libraries... " >&6; } + # Make sure either enable_shared or enable_static is yes. + test "$enable_shared" = yes || enable_static=yes + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 +$as_echo "$enable_static" >&6; } + + + + +fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +CC="$lt_save_CC" + + + + + + + + + + + + + + + + ac_config_commands="$ac_config_commands libtool" + + + + +# Only expand once: + + + +ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" +if test "x$ac_cv_type_size_t" = xyes; then : + +else + +cat >>confdefs.h <<_ACEOF +#define size_t unsigned int +_ACEOF + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working volatile" >&5 +$as_echo_n "checking for working volatile... " >&6; } +if ${ac_cv_c_volatile+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + +volatile int x; +int * volatile y = (int *) 0; +return !x && !y; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_c_volatile=yes +else + ac_cv_c_volatile=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_volatile" >&5 +$as_echo "$ac_cv_c_volatile" >&6; } +if test $ac_cv_c_volatile = no; then + +$as_echo "#define volatile /**/" >>confdefs.h + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for inline" >&5 +$as_echo_n "checking for inline... " >&6; } +if ${ac_cv_c_inline+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_cv_c_inline=no +for ac_kw in inline __inline__ __inline; do + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifndef __cplusplus +typedef int foo_t; +static $ac_kw foo_t static_foo () {return 0; } +$ac_kw foo_t foo () {return 0; } +#endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_c_inline=$ac_kw +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + test "$ac_cv_c_inline" != no && break +done + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_inline" >&5 +$as_echo "$ac_cv_c_inline" >&6; } + +case $ac_cv_c_inline in + inline | yes) ;; + *) + case $ac_cv_c_inline in + no) ac_val=;; + *) ac_val=$ac_cv_c_inline;; + esac + cat >>confdefs.h <<_ACEOF +#ifndef __cplusplus +#define inline $ac_val +#endif +_ACEOF + ;; +esac + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether char is unsigned" >&5 +$as_echo_n "checking whether char is unsigned... " >&6; } +if ${ac_cv_c_char_unsigned+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((char) -1) < 0)]; +test_array [0] = 0; +return test_array [0]; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_c_char_unsigned=no +else + ac_cv_c_char_unsigned=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_char_unsigned" >&5 +$as_echo "$ac_cv_c_char_unsigned" >&6; } +if test $ac_cv_c_char_unsigned = yes && test "$GCC" != yes; then + $as_echo "#define __CHAR_UNSIGNED__ 1" >>confdefs.h + +fi + + +GSL_CFLAGS="-I$includedir" +GSL_LIBS="-L$libdir -lgsl" +LIBM= +case $host in +*-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-pw32* | *-*-darwin*) + # These system don't have libm, or don't need it + ;; +*-ncr-sysv4.3*) + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _mwvalidcheckl in -lmw" >&5 +$as_echo_n "checking for _mwvalidcheckl in -lmw... " >&6; } +if ${ac_cv_lib_mw__mwvalidcheckl+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lmw $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char _mwvalidcheckl (); +int +main () +{ +return _mwvalidcheckl (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_mw__mwvalidcheckl=yes +else + ac_cv_lib_mw__mwvalidcheckl=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_mw__mwvalidcheckl" >&5 +$as_echo "$ac_cv_lib_mw__mwvalidcheckl" >&6; } +if test "x$ac_cv_lib_mw__mwvalidcheckl" = xyes; then : + LIBM="-lmw" +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for cos in -lm" >&5 +$as_echo_n "checking for cos in -lm... " >&6; } +if ${ac_cv_lib_m_cos+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lm $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char cos (); +int +main () +{ +return cos (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_m_cos=yes +else + ac_cv_lib_m_cos=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_m_cos" >&5 +$as_echo "$ac_cv_lib_m_cos" >&6; } +if test "x$ac_cv_lib_m_cos" = xyes; then : + LIBM="$LIBM -lm" +fi + + ;; +*) + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for cos in -lm" >&5 +$as_echo_n "checking for cos in -lm... " >&6; } +if ${ac_cv_lib_m_cos+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lm $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char cos (); +int +main () +{ +return cos (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_m_cos=yes +else + ac_cv_lib_m_cos=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_m_cos" >&5 +$as_echo "$ac_cv_lib_m_cos" >&6; } +if test "x$ac_cv_lib_m_cos" = xyes; then : + LIBM="-lm" +fi + + ;; +esac + + +GSL_LIBM=$LIBM + + + + + +if test "$ac_cv_c_inline" != no ; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU-style extern inline" >&5 +$as_echo_n "checking for GNU-style extern inline... " >&6; } +if ${ac_cv_c_extern_inline+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_cv_c_extern_inline=no + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +extern $ac_cv_c_inline double foo(double x); + extern $ac_cv_c_inline double foo(double x) { return x + 1.0 ; } ; + double foo (double x) { return x + 1.0 ; }; +int +main () +{ + foo(1.0) + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_c_extern_inline="yes" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_extern_inline" >&5 +$as_echo "$ac_cv_c_extern_inline" >&6; } + + if test "$ac_cv_c_extern_inline" != no ; then + +$as_echo "#define HAVE_INLINE 1" >>confdefs.h + + else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for C99-style inline" >&5 +$as_echo_n "checking for C99-style inline... " >&6; } +if ${ac_cv_c_c99inline+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_cv_c_c99inline=no + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +extern inline void* foo() { foo(); return &foo ; }; +int +main () +{ + return foo() != 0 + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_c_c99inline="yes" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + if test "$ac_cv_c_c99inline" != no ; then + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +inline void* foo() { foo(); return &foo ; }; +int +main () +{ + return foo() != 0 + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + +else + ac_cv_c_c99inline="no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_c99inline" >&5 +$as_echo "$ac_cv_c_c99inline" >&6; } + if test "$ac_cv_c_c99inline" != no ; then + +$as_echo "#define HAVE_INLINE 1" >>confdefs.h + + +$as_echo "#define HAVE_C99_INLINE 1" >>confdefs.h + + fi + fi +fi + +for ac_header in ieeefp.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "ieeefp.h" "ac_cv_header_ieeefp_h" "$ac_includes_default" +if test "x$ac_cv_header_ieeefp_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_IEEEFP_H 1 +_ACEOF + +fi + +done + + + +case $host in + *-*-cygwin* | *-*-mingw* ) + if test "$enable_shared" = yes; then + GSLCBLAS_LDFLAGS="$GSLCBLAS_LDFLAGS -no-undefined" + GSL_LDFLAGS="$GSL_LDFLAGS -no-undefined" + GSL_LIBADD="cblas/libgslcblas.la" + fi + ;; +esac + + + + + + +for ac_func in vprintf +do : + ac_fn_c_check_func "$LINENO" "vprintf" "ac_cv_func_vprintf" +if test "x$ac_cv_func_vprintf" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_VPRINTF 1 +_ACEOF + +ac_fn_c_check_func "$LINENO" "_doprnt" "ac_cv_func__doprnt" +if test "x$ac_cv_func__doprnt" = xyes; then : + +$as_echo "#define HAVE_DOPRNT 1" >>confdefs.h + +fi + +fi +done + + + +ac_fn_c_check_func "$LINENO" "memcpy" "ac_cv_func_memcpy" +if test "x$ac_cv_func_memcpy" = xyes; then : + $as_echo "#define HAVE_MEMCPY 1" >>confdefs.h + +else + case " $LIBOBJS " in + *" memcpy.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS memcpy.$ac_objext" + ;; +esac + +fi + +ac_fn_c_check_func "$LINENO" "memmove" "ac_cv_func_memmove" +if test "x$ac_cv_func_memmove" = xyes; then : + $as_echo "#define HAVE_MEMMOVE 1" >>confdefs.h + +else + case " $LIBOBJS " in + *" memmove.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS memmove.$ac_objext" + ;; +esac + +fi + +ac_fn_c_check_func "$LINENO" "strdup" "ac_cv_func_strdup" +if test "x$ac_cv_func_strdup" = xyes; then : + $as_echo "#define HAVE_STRDUP 1" >>confdefs.h + +else + case " $LIBOBJS " in + *" strdup.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS strdup.$ac_objext" + ;; +esac + +fi + +ac_fn_c_check_func "$LINENO" "strtol" "ac_cv_func_strtol" +if test "x$ac_cv_func_strtol" = xyes; then : + $as_echo "#define HAVE_STRTOL 1" >>confdefs.h + +else + case " $LIBOBJS " in + *" strtol.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS strtol.$ac_objext" + ;; +esac + +fi + +ac_fn_c_check_func "$LINENO" "strtoul" "ac_cv_func_strtoul" +if test "x$ac_cv_func_strtoul" = xyes; then : + $as_echo "#define HAVE_STRTOUL 1" >>confdefs.h + +else + case " $LIBOBJS " in + *" strtoul.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS strtoul.$ac_objext" + ;; +esac + +fi + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for EXIT_SUCCESS and EXIT_FAILURE" >&5 +$as_echo_n "checking for EXIT_SUCCESS and EXIT_FAILURE... " >&6; } +if ${ac_cv_decl_exit_success_and_failure+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#ifdef EXIT_SUCCESS +yes +#endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "yes" >/dev/null 2>&1; then : + ac_cv_decl_exit_success_and_failure=yes +else + ac_cv_decl_exit_success_and_failure=no +fi +rm -f conftest* + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_decl_exit_success_and_failure" >&5 +$as_echo "$ac_cv_decl_exit_success_and_failure" >&6; } + +if test "$ac_cv_decl_exit_success_and_failure" = yes ; then + +$as_echo "#define HAVE_EXIT_SUCCESS_AND_FAILURE 1" >>confdefs.h + +fi ; + + +if test "x$LIBS" = "x" ; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for cos in -lm" >&5 +$as_echo_n "checking for cos in -lm... " >&6; } +if ${ac_cv_lib_m_cos+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lm $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char cos (); +int +main () +{ +return cos (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_m_cos=yes +else + ac_cv_lib_m_cos=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_m_cos" >&5 +$as_echo "$ac_cv_lib_m_cos" >&6; } +if test "x$ac_cv_lib_m_cos" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBM 1 +_ACEOF + + LIBS="-lm $LIBS" + +fi + +fi + +ac_fn_c_check_decl "$LINENO" "feenableexcept" "ac_cv_have_decl_feenableexcept" "#define _GNU_SOURCE 1 +#include +" +if test "x$ac_cv_have_decl_feenableexcept" = xyes; then : + ac_have_decl=1 +else + ac_have_decl=0 +fi + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_FEENABLEEXCEPT $ac_have_decl +_ACEOF + +ac_fn_c_check_decl "$LINENO" "fesettrapenable" "ac_cv_have_decl_fesettrapenable" "#define _GNU_SOURCE 1 +#include +" +if test "x$ac_cv_have_decl_fesettrapenable" = xyes; then : + ac_have_decl=1 +else + ac_have_decl=0 +fi + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_FESETTRAPENABLE $ac_have_decl +_ACEOF + +ac_fn_c_check_decl "$LINENO" "hypot" "ac_cv_have_decl_hypot" "#include +" +if test "x$ac_cv_have_decl_hypot" = xyes; then : + ac_have_decl=1 +else + ac_have_decl=0 +fi + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_HYPOT $ac_have_decl +_ACEOF + +ac_fn_c_check_decl "$LINENO" "expm1" "ac_cv_have_decl_expm1" "#include +" +if test "x$ac_cv_have_decl_expm1" = xyes; then : + ac_have_decl=1 +else + ac_have_decl=0 +fi + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_EXPM1 $ac_have_decl +_ACEOF + +ac_fn_c_check_decl "$LINENO" "acosh" "ac_cv_have_decl_acosh" "#include +" +if test "x$ac_cv_have_decl_acosh" = xyes; then : + ac_have_decl=1 +else + ac_have_decl=0 +fi + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_ACOSH $ac_have_decl +_ACEOF + +ac_fn_c_check_decl "$LINENO" "asinh" "ac_cv_have_decl_asinh" "#include +" +if test "x$ac_cv_have_decl_asinh" = xyes; then : + ac_have_decl=1 +else + ac_have_decl=0 +fi + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_ASINH $ac_have_decl +_ACEOF + +ac_fn_c_check_decl "$LINENO" "atanh" "ac_cv_have_decl_atanh" "#include +" +if test "x$ac_cv_have_decl_atanh" = xyes; then : + ac_have_decl=1 +else + ac_have_decl=0 +fi + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_ATANH $ac_have_decl +_ACEOF + +ac_fn_c_check_decl "$LINENO" "ldexp" "ac_cv_have_decl_ldexp" "#include +" +if test "x$ac_cv_have_decl_ldexp" = xyes; then : + ac_have_decl=1 +else + ac_have_decl=0 +fi + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_LDEXP $ac_have_decl +_ACEOF + +ac_fn_c_check_decl "$LINENO" "frexp" "ac_cv_have_decl_frexp" "#include +" +if test "x$ac_cv_have_decl_frexp" = xyes; then : + ac_have_decl=1 +else + ac_have_decl=0 +fi + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_FREXP $ac_have_decl +_ACEOF + +ac_fn_c_check_decl "$LINENO" "fprnd_t" "ac_cv_have_decl_fprnd_t" "#include +" +if test "x$ac_cv_have_decl_fprnd_t" = xyes; then : + ac_have_decl=1 +else + ac_have_decl=0 +fi + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_FPRND_T $ac_have_decl +_ACEOF + +ac_fn_c_check_decl "$LINENO" "isinf" "ac_cv_have_decl_isinf" "#include +" +if test "x$ac_cv_have_decl_isinf" = xyes; then : + ac_have_decl=1 +else + ac_have_decl=0 +fi + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_ISINF $ac_have_decl +_ACEOF + +ac_fn_c_check_decl "$LINENO" "isfinite" "ac_cv_have_decl_isfinite" "#include +" +if test "x$ac_cv_have_decl_isfinite" = xyes; then : + ac_have_decl=1 +else + ac_have_decl=0 +fi + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_ISFINITE $ac_have_decl +_ACEOF + +ac_fn_c_check_decl "$LINENO" "finite" "ac_cv_have_decl_finite" "#include +#if HAVE_IEEEFP_H +#include +#endif +" +if test "x$ac_cv_have_decl_finite" = xyes; then : + ac_have_decl=1 +else + ac_have_decl=0 +fi + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_FINITE $ac_have_decl +_ACEOF + +ac_fn_c_check_decl "$LINENO" "isnan" "ac_cv_have_decl_isnan" "#include +" +if test "x$ac_cv_have_decl_isnan" = xyes; then : + ac_have_decl=1 +else + ac_have_decl=0 +fi + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_ISNAN $ac_have_decl +_ACEOF + + +case "$host" in + *-*-*openbsd*) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: avoiding OpenBSD system log1p - using gsl version" >&5 +$as_echo "avoiding OpenBSD system log1p - using gsl version" >&6; } + ;; + *) + ac_fn_c_check_decl "$LINENO" "log1p" "ac_cv_have_decl_log1p" "#include +" +if test "x$ac_cv_have_decl_log1p" = xyes; then : + ac_have_decl=1 +else + ac_have_decl=0 +fi + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_LOG1P $ac_have_decl +_ACEOF + + ;; +esac + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for long double stdio" >&5 +$as_echo_n "checking for long double stdio... " >&6; } +if ${ac_cv_func_printf_longdouble+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + ac_cv_func_printf_longdouble="no" +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include +int main (void) +{ +const char * s = "5678.25"; long double x = 1.234 ; +fprintf(stderr,"%Lg\n",x) ; +sscanf(s, "%Lg", &x); +if (x == 5678.25) {exit (0);} else {exit(1); }; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + ac_cv_func_printf_longdouble="yes" +else + ac_cv_func_printf_longdouble="no" +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_printf_longdouble" >&5 +$as_echo "$ac_cv_func_printf_longdouble" >&6; } + +if test "$ac_cv_func_printf_longdouble" != no; then + +$as_echo "#define HAVE_PRINTF_LONGDOUBLE 1" >>confdefs.h + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for extended floating point registers" >&5 +$as_echo_n "checking for extended floating point registers... " >&6; } +if ${ac_cv_c_extended_fp+:} false; then : + $as_echo_n "(cached) " >&6 +else + case "$host" in + *sparc*-*-*) + ac_cv_c_extended_fp=no + ;; + *powerpc*-*-*) + ac_cv_c_extended_fp=no + ;; + *hppa*-*-*) + ac_cv_c_extended_fp=no + ;; + *alpha*-*-*) + ac_cv_c_extended_fp=no + ;; + *68k*-*-*) + ac_cv_c_extended_fp=yes + ;; + *86-*-*) + ac_cv_c_extended_fp=yes + ;; + x86_64-*-*) + ac_cv_c_extended_fp=yes + ;; + *) + ac_cv_c_extended_fp=unknown + ;; +esac + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_extended_fp" >&5 +$as_echo "$ac_cv_c_extended_fp" >&6; } + +if test $ac_cv_c_extended_fp != "no" ; then + +$as_echo "#define HAVE_EXTENDED_PRECISION_REGISTERS 1" >>confdefs.h + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for IEEE arithmetic interface type" >&5 +$as_echo_n "checking for IEEE arithmetic interface type... " >&6; } +if ${ac_cv_c_ieee_interface+:} false; then : + $as_echo_n "(cached) " >&6 +else + case "$host" in + sparc-*-linux*) + ac_cv_c_ieee_interface=gnusparc + ;; + m68k-*-linux*) + ac_cv_c_ieee_interface=gnum68k + ;; + powerpc-*-linux*) + ac_cv_c_ieee_interface=gnuppc + ;; + *86-*-gnu | *86_64-*-gnu | *86-*-linux* | *86_64-*-linux*) + ac_cv_c_ieee_interface=gnux86 + ;; + *-*-sunos4*) + ac_cv_c_ieee_interface=sunos4 + ;; + *-*-solaris*) + ac_cv_c_ieee_interface=solaris + ;; + *-*-hpux11*) + ac_cv_c_ieee_interface=hpux11 + ;; + *-*-hpux*) + ac_cv_c_ieee_interface=hpux + ;; + *-*-osf*) + ac_cv_c_ieee_interface=tru64 + ;; + *-*-aix*) + ac_cv_c_ieee_interface=aix + ;; + *-*-irix*) + ac_cv_c_ieee_interface=irix + ;; + powerpc-*-*darwin*) + ac_cv_c_ieee_interface=darwin + ;; + *86-*-*darwin*) + ac_cv_c_ieee_interface=darwin86 + ;; + *-*-*netbsd*) + ac_cv_c_ieee_interface=netbsd + ;; + *-*-*openbsd*) + ac_cv_c_ieee_interface=openbsd + ;; + *-*-*bsd*) + ac_cv_c_ieee_interface=freebsd + ;; + *-*-os2*) + ac_cv_c_ieee_interface=os2emx + ;; + *) + ac_cv_c_ieee_interface=unknown + ;; +esac + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_ieee_interface" >&5 +$as_echo "$ac_cv_c_ieee_interface" >&6; } + +if test "$ac_cv_c_ieee_interface" = "gnux86" ; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for FPU_SETCW" >&5 +$as_echo_n "checking for FPU_SETCW... " >&6; } +if ${ac_cv_c_fpu_setcw+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_cv_c_fpu_setcw=no + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#ifndef _FPU_SETCW +#include +#define _FPU_SETCW(cw) __setfpucw(cw) +#endif + +int +main () +{ + unsigned short mode = 0 ; _FPU_SETCW(mode); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_c_fpu_setcw="yes" +else + ac_cv_c_ieee_interface=unknown +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_fpu_setcw" >&5 +$as_echo "$ac_cv_c_fpu_setcw" >&6; } +fi + +if test "$ac_cv_c_ieee_interface" = "gnux86" ; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for SSE extensions" >&5 +$as_echo_n "checking for SSE extensions... " >&6; } +if ${ac_cv_c_fpu_sse+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_cv_c_fpu_sse=no + if test "$cross_compiling" = yes; then : + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#define _FPU_SETMXCSR(cw_sse) asm volatile ("ldmxcsr %0" : : "m" (*&cw_sse)) + +int +main () +{ + unsigned int mode = 0x1f80 ; _FPU_SETMXCSR(mode); exit(0); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_c_fpu_sse="yes" +else + ac_cv_c_fpu_sse="no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#define _FPU_SETMXCSR(cw_sse) asm volatile ("ldmxcsr %0" : : "m" (*&cw_sse)) + +int +main () +{ + unsigned int mode = 0x1f80 ; _FPU_SETMXCSR(mode); exit(0); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + ac_cv_c_fpu_sse="yes" +else + ac_cv_c_fpu_sse="no" +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_fpu_sse" >&5 +$as_echo "$ac_cv_c_fpu_sse" >&6; } + + if test $ac_cv_c_fpu_sse = yes; then + +$as_echo "#define HAVE_FPU_X86_SSE 1" >>confdefs.h + + fi +fi + +ac_tr_ieee_interface=HAVE_`echo $ac_cv_c_ieee_interface | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`_IEEE_INTERFACE + +cat >>confdefs.h <<_ACEOF +#define $ac_tr_ieee_interface 1 +_ACEOF + + + + + + + + + + + + + + + + + + + + + +save_cflags="$CFLAGS" +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for IEEE compiler flags" >&5 +$as_echo_n "checking for IEEE compiler flags... " >&6; } +if ${ac_cv_c_ieee_flags+:} false; then : + $as_echo_n "(cached) " >&6 +else + +case "$host" in + alpha*-*-*) + if test X"$GCC" = Xyes ; then + ieee_flags='-mieee -mfp-rounding-mode=d' + else + # This assumes Compaq's C compiler. + ieee_flags='-ieee -fprm d' + fi + ;; +esac +if test X"$ieee_flags" != X ; then + CFLAGS="$ieee_flags $CFLAGS" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +int foo; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_c_ieee_flags="$ieee_flags" +else + ac_cv_c_ieee_flags="none" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +else + ac_cv_c_ieee_flags="none" +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_ieee_flags" >&5 +$as_echo "$ac_cv_c_ieee_flags" >&6; } + +if test "$ac_cv_c_ieee_flags" != "none" ; then + CFLAGS="$ac_cv_c_ieee_flags $save_cflags" +else + CFLAGS="$save_cflags" +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for IEEE comparisons" >&5 +$as_echo_n "checking for IEEE comparisons... " >&6; } +if ${ac_cv_c_ieee_comparisons+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + ac_cv_c_ieee_comparisons="yes" +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +int main (void) +{ + int status; double inf, nan; + inf = exp(1.0e10); + nan = inf / inf ; + status = (nan == nan); + exit (status); +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + ac_cv_c_ieee_comparisons="yes" +else + ac_cv_c_ieee_comparisons="no" +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_ieee_comparisons" >&5 +$as_echo "$ac_cv_c_ieee_comparisons" >&6; } + +if test "$ac_cv_c_ieee_comparisons" != no ; then + +$as_echo "#define HAVE_IEEE_COMPARISONS 1" >>confdefs.h + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for IEEE denormalized values" >&5 +$as_echo_n "checking for IEEE denormalized values... " >&6; } +if ${ac_cv_c_ieee_denormals+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + ac_cv_c_ieee_denormals="yes" +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +int main (void) +{ + int i, status; + volatile double z = 1e-308; + for (i = 0; i < 5; i++) { z = z / 10.0 ; }; + for (i = 0; i < 5; i++) { z = z * 10.0 ; }; + status = (z == 0.0); + exit (status); +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + ac_cv_c_ieee_denormals="yes" +else + ac_cv_c_ieee_denormals="no" +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_ieee_denormals" >&5 +$as_echo "$ac_cv_c_ieee_denormals" >&6; } + +if test "$ac_cv_c_ieee_denormals" != no ; then + +$as_echo "#define HAVE_IEEE_DENORMALS 1" >>confdefs.h + +fi + + + + + + + + + + + + + + + + + + + +ac_config_files="$ac_config_files Makefile gsl_version.h gsl.spec blas/Makefile block/Makefile bspline/Makefile cblas/Makefile cdf/Makefile cheb/Makefile combination/Makefile complex/Makefile const/Makefile deriv/Makefile dht/Makefile diff/Makefile doc/Makefile doc/examples/Makefile eigen/Makefile err/Makefile fft/Makefile filter/Makefile fit/Makefile gsl/Makefile histogram/Makefile ieee-utils/Makefile integration/Makefile interpolation/Makefile linalg/Makefile matrix/Makefile min/Makefile monte/Makefile movstat/Makefile multifit/Makefile multifit_nlinear/Makefile multilarge/Makefile multilarge_nlinear/Makefile multimin/Makefile multiroots/Makefile multiset/Makefile ntuple/Makefile ode-initval/Makefile ode-initval2/Makefile permutation/Makefile poly/Makefile qrng/Makefile randist/Makefile rng/Makefile roots/Makefile rstat/Makefile siman/Makefile sort/Makefile spblas/Makefile splinalg/Makefile spmatrix/Makefile specfunc/Makefile statistics/Makefile sum/Makefile sys/Makefile test/Makefile utils/Makefile vector/Makefile wavelet/Makefile" + + +cat >confcache <<\_ACEOF +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs, see configure's option --config-cache. +# It is not useful on other systems. If it contains results you don't +# want to keep, you may remove or edit it. +# +# config.status only pays attention to the cache file if you give it +# the --recheck option to rerun configure. +# +# `ac_cv_env_foo' variables (set or unset) will be overridden when +# loading this file, other *unset* `ac_cv_foo' will be assigned the +# following values. + +_ACEOF + +# The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, we kill variables containing newlines. +# Ultrix sh set writes to stderr and can't be redirected directly, +# and sets the high bit in the cache file unless we assign to the vars. +( + for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + + (set) 2>&1 | + case $as_nl`(ac_space=' '; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + # `set' does not quote correctly, so add quotes: double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \. + sed -n \ + "s/'/'\\\\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" + ;; #( + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) | + sed ' + /^ac_cv_env_/b end + t clear + :clear + s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ + t end + s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + :end' >>confcache +if diff "$cache_file" confcache >/dev/null 2>&1; then :; else + if test -w "$cache_file"; then + if test "x$cache_file" != "x/dev/null"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 +$as_echo "$as_me: updating cache $cache_file" >&6;} + if test ! -f "$cache_file" || test -h "$cache_file"; then + cat confcache >"$cache_file" + else + case $cache_file in #( + */* | ?:*) + mv -f confcache "$cache_file"$$ && + mv -f "$cache_file"$$ "$cache_file" ;; #( + *) + mv -f confcache "$cache_file" ;; + esac + fi + fi + else + { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 +$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} + fi +fi +rm -f confcache + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +DEFS=-DHAVE_CONFIG_H + +ac_libobjs= +ac_ltlibobjs= +U= +for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue + # 1. Remove the extension, and $U if already installed. + ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' + ac_i=`$as_echo "$ac_i" | sed "$ac_script"` + # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR + # will be set to the directory where LIBOBJS objects are built. + as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" + as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' +done +LIBOBJS=$ac_libobjs + +LTLIBOBJS=$ac_ltlibobjs + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 +$as_echo_n "checking that generated files are newer than configure... " >&6; } + if test -n "$am_sleep_pid"; then + # Hide warnings about reused PIDs. + wait $am_sleep_pid 2>/dev/null + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5 +$as_echo "done" >&6; } + if test -n "$EXEEXT"; then + am__EXEEXT_TRUE= + am__EXEEXT_FALSE='#' +else + am__EXEEXT_TRUE='#' + am__EXEEXT_FALSE= +fi + +if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then + as_fn_error $? "conditional \"MAINTAINER_MODE\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then + as_fn_error $? "conditional \"AMDEP\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then + as_fn_error $? "conditional \"am__fastdepCC\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi + +: "${CONFIG_STATUS=./config.status}" +ac_write_fail=0 +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files $CONFIG_STATUS" +{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 +$as_echo "$as_me: creating $CONFIG_STATUS" >&6;} +as_write_fail=0 +cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 +#! $SHELL +# Generated by $as_me. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +ac_cs_recheck=false +ac_cs_silent=false + +SHELL=\${CONFIG_SHELL-$SHELL} +export SHELL +_ASEOF +cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi + + +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in #( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in #(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + + +# as_fn_error STATUS ERROR [LINENO LOG_FD] +# ---------------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + $as_echo "$as_me: error: $2" >&2 + as_fn_exit $as_status +} # as_fn_error + + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} # as_fn_mkdir_p +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + + +# as_fn_executable_p FILE +# ----------------------- +# Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} # as_fn_executable_p +as_test_x='test -x' +as_executable_p=as_fn_executable_p + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +exec 6>&1 +## ----------------------------------- ## +## Main body of $CONFIG_STATUS script. ## +## ----------------------------------- ## +_ASEOF +test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# Save the log message, to keep $0 and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. +ac_log=" +This file was extended by gsl $as_me 2.5, which was +generated by GNU Autoconf 2.69. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +on `(hostname || uname -n) 2>/dev/null | sed 1q` +" + +_ACEOF + +case $ac_config_files in *" +"*) set x $ac_config_files; shift; ac_config_files=$*;; +esac + +case $ac_config_headers in *" +"*) set x $ac_config_headers; shift; ac_config_headers=$*;; +esac + + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +# Files that config.status was made for. +config_files="$ac_config_files" +config_headers="$ac_config_headers" +config_commands="$ac_config_commands" + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +ac_cs_usage="\ +\`$as_me' instantiates files and other configuration actions +from templates according to the current configuration. Unless the files +and actions are specified as TAGs, all are instantiated by default. + +Usage: $0 [OPTION]... [TAG]... + + -h, --help print this help, then exit + -V, --version print version number and configuration settings, then exit + --config print configuration, then exit + -q, --quiet, --silent + do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + --header=FILE[:TEMPLATE] + instantiate the configuration header FILE + +Configuration files: +$config_files + +Configuration headers: +$config_headers + +Configuration commands: +$config_commands + +Report bugs to the package provider." + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" +ac_cs_version="\\ +gsl config.status 2.5 +configured by $0, generated by GNU Autoconf 2.69, + with options \\"\$ac_cs_config\\" + +Copyright (C) 2012 Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." + +ac_pwd='$ac_pwd' +srcdir='$srcdir' +INSTALL='$INSTALL' +MKDIR_P='$MKDIR_P' +AWK='$AWK' +test -n "\$AWK" || AWK=awk +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# The default lists apply if the user does not specify any file. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=?*) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` + ac_shift=: + ;; + --*=) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg= + ac_shift=: + ;; + *) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; + esac + + case $ac_option in + # Handling of the options. + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) + $as_echo "$ac_cs_version"; exit ;; + --config | --confi | --conf | --con | --co | --c ) + $as_echo "$ac_cs_config"; exit ;; + --debug | --debu | --deb | --de | --d | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + '') as_fn_error $? "missing file argument" ;; + esac + as_fn_append CONFIG_FILES " '$ac_optarg'" + ac_need_defaults=false;; + --header | --heade | --head | --hea ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + as_fn_append CONFIG_HEADERS " '$ac_optarg'" + ac_need_defaults=false;; + --he | --h) + # Conflict between --help and --header + as_fn_error $? "ambiguous option: \`$1' +Try \`$0 --help' for more information.";; + --help | --hel | -h ) + $as_echo "$ac_cs_usage"; exit ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) as_fn_error $? "unrecognized option: \`$1' +Try \`$0 --help' for more information." ;; + + *) as_fn_append ac_config_targets " $1" + ac_need_defaults=false ;; + + esac + shift +done + +ac_configure_extra_args= + +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +if \$ac_cs_recheck; then + set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion + shift + \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 + CONFIG_SHELL='$SHELL' + export CONFIG_SHELL + exec "\$@" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX + $as_echo "$ac_log" +} >&5 + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +# +# INIT-COMMANDS +# +AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" + + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +sed_quote_subst='$sed_quote_subst' +double_quote_subst='$double_quote_subst' +delay_variable_subst='$delay_variable_subst' +macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`' +macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`' +AS='`$ECHO "$AS" | $SED "$delay_single_quote_subst"`' +DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`' +OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`' +enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`' +enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`' +pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`' +enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`' +SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`' +ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`' +PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`' +host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`' +host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`' +host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`' +build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`' +build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`' +build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`' +SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`' +Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`' +GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`' +EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`' +FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`' +LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`' +NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`' +LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`' +max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`' +ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`' +exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`' +lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`' +lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`' +lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`' +lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`' +lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`' +reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`' +reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`' +deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`' +file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`' +file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`' +want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`' +sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`' +AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`' +AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`' +archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`' +STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`' +RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`' +old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`' +old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`' +old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`' +lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`' +CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`' +CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`' +compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`' +GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`' +nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`' +lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`' +objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`' +MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`' +lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`' +need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`' +MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`' +DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`' +NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`' +LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`' +OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`' +OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`' +libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`' +shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`' +extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`' +archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`' +enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`' +export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`' +whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`' +compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`' +old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`' +old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`' +archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`' +archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`' +module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`' +module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`' +with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`' +allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`' +no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`' +hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`' +hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`' +hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`' +hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`' +hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`' +hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`' +hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`' +inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`' +link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`' +always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`' +export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`' +exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`' +include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`' +prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`' +postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`' +file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`' +variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`' +need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`' +need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`' +version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`' +runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`' +shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`' +shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`' +libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`' +library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`' +soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`' +install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`' +postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`' +postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`' +finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`' +finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`' +hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`' +sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`' +sys_lib_dlsearch_path_spec='`$ECHO "$sys_lib_dlsearch_path_spec" | $SED "$delay_single_quote_subst"`' +hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`' +enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`' +enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`' +enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`' +old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`' +striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`' + +LTCC='$LTCC' +LTCFLAGS='$LTCFLAGS' +compiler='$compiler_DEFAULT' + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +\$1 +_LTECHO_EOF' +} + +# Quote evaled strings. +for var in AS \ +DLLTOOL \ +OBJDUMP \ +SHELL \ +ECHO \ +PATH_SEPARATOR \ +SED \ +GREP \ +EGREP \ +FGREP \ +LD \ +NM \ +LN_S \ +lt_SP2NL \ +lt_NL2SP \ +reload_flag \ +deplibs_check_method \ +file_magic_cmd \ +file_magic_glob \ +want_nocaseglob \ +sharedlib_from_linklib_cmd \ +AR \ +AR_FLAGS \ +archiver_list_spec \ +STRIP \ +RANLIB \ +CC \ +CFLAGS \ +compiler \ +lt_cv_sys_global_symbol_pipe \ +lt_cv_sys_global_symbol_to_cdecl \ +lt_cv_sys_global_symbol_to_c_name_address \ +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ +nm_file_list_spec \ +lt_prog_compiler_no_builtin_flag \ +lt_prog_compiler_pic \ +lt_prog_compiler_wl \ +lt_prog_compiler_static \ +lt_cv_prog_compiler_c_o \ +need_locks \ +MANIFEST_TOOL \ +DSYMUTIL \ +NMEDIT \ +LIPO \ +OTOOL \ +OTOOL64 \ +shrext_cmds \ +export_dynamic_flag_spec \ +whole_archive_flag_spec \ +compiler_needs_object \ +with_gnu_ld \ +allow_undefined_flag \ +no_undefined_flag \ +hardcode_libdir_flag_spec \ +hardcode_libdir_separator \ +exclude_expsyms \ +include_expsyms \ +file_list_spec \ +variables_saved_for_relink \ +libname_spec \ +library_names_spec \ +soname_spec \ +install_override_mode \ +finish_eval \ +old_striplib \ +striplib; do + case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in + *[\\\\\\\`\\"\\\$]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done + +# Double-quote double-evaled strings. +for var in reload_cmds \ +old_postinstall_cmds \ +old_postuninstall_cmds \ +old_archive_cmds \ +extract_expsyms_cmds \ +old_archive_from_new_cmds \ +old_archive_from_expsyms_cmds \ +archive_cmds \ +archive_expsym_cmds \ +module_cmds \ +module_expsym_cmds \ +export_symbols_cmds \ +prelink_cmds \ +postlink_cmds \ +postinstall_cmds \ +postuninstall_cmds \ +finish_cmds \ +sys_lib_search_path_spec \ +sys_lib_dlsearch_path_spec; do + case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in + *[\\\\\\\`\\"\\\$]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done + +ac_aux_dir='$ac_aux_dir' +xsi_shell='$xsi_shell' +lt_shell_append='$lt_shell_append' + +# See if we are running on zsh, and set the options which allow our +# commands through without removal of \ escapes INIT. +if test -n "\${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST +fi + + + PACKAGE='$PACKAGE' + VERSION='$VERSION' + TIMESTAMP='$TIMESTAMP' + RM='$RM' + ofile='$ofile' + + + + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 + +# Handling of arguments. +for ac_config_target in $ac_config_targets +do + case $ac_config_target in + "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; + "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; + "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; + "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; + "gsl_version.h") CONFIG_FILES="$CONFIG_FILES gsl_version.h" ;; + "gsl.spec") CONFIG_FILES="$CONFIG_FILES gsl.spec" ;; + "blas/Makefile") CONFIG_FILES="$CONFIG_FILES blas/Makefile" ;; + "block/Makefile") CONFIG_FILES="$CONFIG_FILES block/Makefile" ;; + "bspline/Makefile") CONFIG_FILES="$CONFIG_FILES bspline/Makefile" ;; + "cblas/Makefile") CONFIG_FILES="$CONFIG_FILES cblas/Makefile" ;; + "cdf/Makefile") CONFIG_FILES="$CONFIG_FILES cdf/Makefile" ;; + "cheb/Makefile") CONFIG_FILES="$CONFIG_FILES cheb/Makefile" ;; + "combination/Makefile") CONFIG_FILES="$CONFIG_FILES combination/Makefile" ;; + "complex/Makefile") CONFIG_FILES="$CONFIG_FILES complex/Makefile" ;; + "const/Makefile") CONFIG_FILES="$CONFIG_FILES const/Makefile" ;; + "deriv/Makefile") CONFIG_FILES="$CONFIG_FILES deriv/Makefile" ;; + "dht/Makefile") CONFIG_FILES="$CONFIG_FILES dht/Makefile" ;; + "diff/Makefile") CONFIG_FILES="$CONFIG_FILES diff/Makefile" ;; + "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; + "doc/examples/Makefile") CONFIG_FILES="$CONFIG_FILES doc/examples/Makefile" ;; + "eigen/Makefile") CONFIG_FILES="$CONFIG_FILES eigen/Makefile" ;; + "err/Makefile") CONFIG_FILES="$CONFIG_FILES err/Makefile" ;; + "fft/Makefile") CONFIG_FILES="$CONFIG_FILES fft/Makefile" ;; + "filter/Makefile") CONFIG_FILES="$CONFIG_FILES filter/Makefile" ;; + "fit/Makefile") CONFIG_FILES="$CONFIG_FILES fit/Makefile" ;; + "gsl/Makefile") CONFIG_FILES="$CONFIG_FILES gsl/Makefile" ;; + "histogram/Makefile") CONFIG_FILES="$CONFIG_FILES histogram/Makefile" ;; + "ieee-utils/Makefile") CONFIG_FILES="$CONFIG_FILES ieee-utils/Makefile" ;; + "integration/Makefile") CONFIG_FILES="$CONFIG_FILES integration/Makefile" ;; + "interpolation/Makefile") CONFIG_FILES="$CONFIG_FILES interpolation/Makefile" ;; + "linalg/Makefile") CONFIG_FILES="$CONFIG_FILES linalg/Makefile" ;; + "matrix/Makefile") CONFIG_FILES="$CONFIG_FILES matrix/Makefile" ;; + "min/Makefile") CONFIG_FILES="$CONFIG_FILES min/Makefile" ;; + "monte/Makefile") CONFIG_FILES="$CONFIG_FILES monte/Makefile" ;; + "movstat/Makefile") CONFIG_FILES="$CONFIG_FILES movstat/Makefile" ;; + "multifit/Makefile") CONFIG_FILES="$CONFIG_FILES multifit/Makefile" ;; + "multifit_nlinear/Makefile") CONFIG_FILES="$CONFIG_FILES multifit_nlinear/Makefile" ;; + "multilarge/Makefile") CONFIG_FILES="$CONFIG_FILES multilarge/Makefile" ;; + "multilarge_nlinear/Makefile") CONFIG_FILES="$CONFIG_FILES multilarge_nlinear/Makefile" ;; + "multimin/Makefile") CONFIG_FILES="$CONFIG_FILES multimin/Makefile" ;; + "multiroots/Makefile") CONFIG_FILES="$CONFIG_FILES multiroots/Makefile" ;; + "multiset/Makefile") CONFIG_FILES="$CONFIG_FILES multiset/Makefile" ;; + "ntuple/Makefile") CONFIG_FILES="$CONFIG_FILES ntuple/Makefile" ;; + "ode-initval/Makefile") CONFIG_FILES="$CONFIG_FILES ode-initval/Makefile" ;; + "ode-initval2/Makefile") CONFIG_FILES="$CONFIG_FILES ode-initval2/Makefile" ;; + "permutation/Makefile") CONFIG_FILES="$CONFIG_FILES permutation/Makefile" ;; + "poly/Makefile") CONFIG_FILES="$CONFIG_FILES poly/Makefile" ;; + "qrng/Makefile") CONFIG_FILES="$CONFIG_FILES qrng/Makefile" ;; + "randist/Makefile") CONFIG_FILES="$CONFIG_FILES randist/Makefile" ;; + "rng/Makefile") CONFIG_FILES="$CONFIG_FILES rng/Makefile" ;; + "roots/Makefile") CONFIG_FILES="$CONFIG_FILES roots/Makefile" ;; + "rstat/Makefile") CONFIG_FILES="$CONFIG_FILES rstat/Makefile" ;; + "siman/Makefile") CONFIG_FILES="$CONFIG_FILES siman/Makefile" ;; + "sort/Makefile") CONFIG_FILES="$CONFIG_FILES sort/Makefile" ;; + "spblas/Makefile") CONFIG_FILES="$CONFIG_FILES spblas/Makefile" ;; + "splinalg/Makefile") CONFIG_FILES="$CONFIG_FILES splinalg/Makefile" ;; + "spmatrix/Makefile") CONFIG_FILES="$CONFIG_FILES spmatrix/Makefile" ;; + "specfunc/Makefile") CONFIG_FILES="$CONFIG_FILES specfunc/Makefile" ;; + "statistics/Makefile") CONFIG_FILES="$CONFIG_FILES statistics/Makefile" ;; + "sum/Makefile") CONFIG_FILES="$CONFIG_FILES sum/Makefile" ;; + "sys/Makefile") CONFIG_FILES="$CONFIG_FILES sys/Makefile" ;; + "test/Makefile") CONFIG_FILES="$CONFIG_FILES test/Makefile" ;; + "utils/Makefile") CONFIG_FILES="$CONFIG_FILES utils/Makefile" ;; + "vector/Makefile") CONFIG_FILES="$CONFIG_FILES vector/Makefile" ;; + "wavelet/Makefile") CONFIG_FILES="$CONFIG_FILES wavelet/Makefile" ;; + + *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; + esac +done + + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files + test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers + test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands +fi + +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason against having it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Hook for its removal unless debugging. +# Note that there is a small window in which the directory will not be cleaned: +# after its creation but before its name has been assigned to `$tmp'. +$debug || +{ + tmp= ac_tmp= + trap 'exit_status=$? + : "${ac_tmp:=$tmp}" + { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status +' 0 + trap 'as_fn_exit 1' 1 2 13 15 +} +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && + test -d "$tmp" +} || +{ + tmp=./conf$$-$RANDOM + (umask 077 && mkdir "$tmp") +} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 +ac_tmp=$tmp + +# Set up the scripts for CONFIG_FILES section. +# No need to generate them if there are no CONFIG_FILES. +# This happens for instance with `./config.status config.h'. +if test -n "$CONFIG_FILES"; then + + +ac_cr=`echo X | tr X '\015'` +# On cygwin, bash can eat \r inside `` if the user requested igncr. +# But we know of no other shell where ac_cr would be empty at this +# point, so we can use a bashism as a fallback. +if test "x$ac_cr" = x; then + eval ac_cr=\$\'\\r\' +fi +ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` +if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then + ac_cs_awk_cr='\\r' +else + ac_cs_awk_cr=$ac_cr +fi + +echo 'BEGIN {' >"$ac_tmp/subs1.awk" && +_ACEOF + + +{ + echo "cat >conf$$subs.awk <<_ACEOF" && + echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && + echo "_ACEOF" +} >conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 +ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` +ac_delim='%!_!# ' +for ac_last_try in false false false false false :; do + . ./conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + + ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` + if test $ac_delim_n = $ac_delim_num; then + break + elif $ac_last_try; then + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done +rm -f conf$$subs.sh + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && +_ACEOF +sed -n ' +h +s/^/S["/; s/!.*/"]=/ +p +g +s/^[^!]*!// +:repl +t repl +s/'"$ac_delim"'$// +t delim +:nl +h +s/\(.\{148\}\)..*/\1/ +t more1 +s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ +p +n +b repl +:more1 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t nl +:delim +h +s/\(.\{148\}\)..*/\1/ +t more2 +s/["\\]/\\&/g; s/^/"/; s/$/"/ +p +b +:more2 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t delim +' >$CONFIG_STATUS || ac_write_fail=1 +rm -f conf$$subs.awk +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +_ACAWK +cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && + for (key in S) S_is_set[key] = 1 + FS = "" + +} +{ + line = $ 0 + nfields = split(line, field, "@") + substed = 0 + len = length(field[1]) + for (i = 2; i < nfields; i++) { + key = field[i] + keylen = length(key) + if (S_is_set[key]) { + value = S[key] + line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) + len += length(value) + length(field[++i]) + substed = 1 + } else + len += 1 + keylen + } + + print line +} + +_ACAWK +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then + sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" +else + cat +fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ + || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 +_ACEOF + +# VPATH may cause trouble with some makes, so we remove sole $(srcdir), +# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and +# trailing colons and then remove the whole line if VPATH becomes empty +# (actually we leave an empty line to preserve line numbers). +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ +h +s/// +s/^/:/ +s/[ ]*$/:/ +s/:\$(srcdir):/:/g +s/:\${srcdir}:/:/g +s/:@srcdir@:/:/g +s/^:*// +s/:*$// +x +s/\(=[ ]*\).*/\1/ +G +s/\n// +s/^[^=]*=[ ]*$// +}' +fi + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +fi # test -n "$CONFIG_FILES" + +# Set up the scripts for CONFIG_HEADERS section. +# No need to generate them if there are no CONFIG_HEADERS. +# This happens for instance with `./config.status Makefile'. +if test -n "$CONFIG_HEADERS"; then +cat >"$ac_tmp/defines.awk" <<\_ACAWK || +BEGIN { +_ACEOF + +# Transform confdefs.h into an awk script `defines.awk', embedded as +# here-document in config.status, that substitutes the proper values into +# config.h.in to produce config.h. + +# Create a delimiter string that does not exist in confdefs.h, to ease +# handling of long lines. +ac_delim='%!_!# ' +for ac_last_try in false false :; do + ac_tt=`sed -n "/$ac_delim/p" confdefs.h` + if test -z "$ac_tt"; then + break + elif $ac_last_try; then + as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done + +# For the awk script, D is an array of macro values keyed by name, +# likewise P contains macro parameters if any. Preserve backslash +# newline sequences. + +ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* +sed -n ' +s/.\{148\}/&'"$ac_delim"'/g +t rset +:rset +s/^[ ]*#[ ]*define[ ][ ]*/ / +t def +d +:def +s/\\$// +t bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3"/p +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p +d +:bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3\\\\\\n"\\/p +t cont +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p +t cont +d +:cont +n +s/.\{148\}/&'"$ac_delim"'/g +t clear +:clear +s/\\$// +t bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/"/p +d +:bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p +b cont +' >$CONFIG_STATUS || ac_write_fail=1 + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + for (key in D) D_is_set[key] = 1 + FS = "" +} +/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { + line = \$ 0 + split(line, arg, " ") + if (arg[1] == "#") { + defundef = arg[2] + mac1 = arg[3] + } else { + defundef = substr(arg[1], 2) + mac1 = arg[2] + } + split(mac1, mac2, "(") #) + macro = mac2[1] + prefix = substr(line, 1, index(line, defundef) - 1) + if (D_is_set[macro]) { + # Preserve the white space surrounding the "#". + print prefix "define", macro P[macro] D[macro] + next + } else { + # Replace #undef with comments. This is necessary, for example, + # in the case of _POSIX_SOURCE, which is predefined and required + # on some systems where configure will not decide to define it. + if (defundef == "undef") { + print "/*", prefix defundef, macro, "*/" + next + } + } +} +{ print } +_ACAWK +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 + as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 +fi # test -n "$CONFIG_HEADERS" + + +eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" +shift +for ac_tag +do + case $ac_tag in + :[FHLC]) ac_mode=$ac_tag; continue;; + esac + case $ac_mode$ac_tag in + :[FHL]*:*);; + :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; + :[FH]-) ac_tag=-:-;; + :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; + esac + ac_save_IFS=$IFS + IFS=: + set x $ac_tag + IFS=$ac_save_IFS + shift + ac_file=$1 + shift + + case $ac_mode in + :L) ac_source=$1;; + :[FH]) + ac_file_inputs= + for ac_f + do + case $ac_f in + -) ac_f="$ac_tmp/stdin";; + *) # Look for the file first in the build tree, then in the source tree + # (if the path is not absolute). The absolute path cannot be DOS-style, + # because $ac_f cannot contain `:'. + test -f "$ac_f" || + case $ac_f in + [\\/$]*) false;; + *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; + esac || + as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; + esac + case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac + as_fn_append ac_file_inputs " '$ac_f'" + done + + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + configure_input='Generated from '` + $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' + `' by configure.' + if test x"$ac_file" != x-; then + configure_input="$ac_file. $configure_input" + { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 +$as_echo "$as_me: creating $ac_file" >&6;} + fi + # Neutralize special characters interpreted by sed in replacement strings. + case $configure_input in #( + *\&* | *\|* | *\\* ) + ac_sed_conf_input=`$as_echo "$configure_input" | + sed 's/[\\\\&|]/\\\\&/g'`;; #( + *) ac_sed_conf_input=$configure_input;; + esac + + case $ac_tag in + *:-:* | *:-) cat >"$ac_tmp/stdin" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; + esac + ;; + esac + + ac_dir=`$as_dirname -- "$ac_file" || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + as_dir="$ac_dir"; as_fn_mkdir_p + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + + case $ac_mode in + :F) + # + # CONFIG_FILE + # + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; + esac + ac_MKDIR_P=$MKDIR_P + case $MKDIR_P in + [\\/$]* | ?:[\\/]* ) ;; + */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; + esac +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# If the template does not know about datarootdir, expand it. +# FIXME: This hack should be removed a few years after 2.60. +ac_datarootdir_hack=; ac_datarootdir_seen= +ac_sed_dataroot=' +/datarootdir/ { + p + q +} +/@datadir@/p +/@docdir@/p +/@infodir@/p +/@localedir@/p +/@mandir@/p' +case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in +*datarootdir*) ac_datarootdir_seen=yes;; +*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + ac_datarootdir_hack=' + s&@datadir@&$datadir&g + s&@docdir@&$docdir&g + s&@infodir@&$infodir&g + s&@localedir@&$localedir&g + s&@mandir@&$mandir&g + s&\\\${datarootdir}&$datarootdir&g' ;; +esac +_ACEOF + +# Neutralize VPATH when `$srcdir' = `.'. +# Shell code in configure.ac might set extrasub. +# FIXME: do we really want to maintain this feature? +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_sed_extra="$ac_vpsub +$extrasub +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s|@configure_input@|$ac_sed_conf_input|;t t +s&@top_builddir@&$ac_top_builddir_sub&;t t +s&@top_build_prefix@&$ac_top_build_prefix&;t t +s&@srcdir@&$ac_srcdir&;t t +s&@abs_srcdir@&$ac_abs_srcdir&;t t +s&@top_srcdir@&$ac_top_srcdir&;t t +s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t +s&@builddir@&$ac_builddir&;t t +s&@abs_builddir@&$ac_abs_builddir&;t t +s&@abs_top_builddir@&$ac_abs_top_builddir&;t t +s&@INSTALL@&$ac_INSTALL&;t t +s&@MKDIR_P@&$ac_MKDIR_P&;t t +$ac_datarootdir_hack +" +eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ + >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + +test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && + { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && + { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ + "$ac_tmp/out"`; test -z "$ac_out"; } && + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&5 +$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&2;} + + rm -f "$ac_tmp/stdin" + case $ac_file in + -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; + *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; + esac \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + ;; + :H) + # + # CONFIG_HEADER + # + if test x"$ac_file" != x-; then + { + $as_echo "/* $configure_input */" \ + && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" + } >"$ac_tmp/config.h" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then + { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 +$as_echo "$as_me: $ac_file is unchanged" >&6;} + else + rm -f "$ac_file" + mv "$ac_tmp/config.h" "$ac_file" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + fi + else + $as_echo "/* $configure_input */" \ + && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ + || as_fn_error $? "could not create -" "$LINENO" 5 + fi +# Compute "$ac_file"'s index in $config_headers. +_am_arg="$ac_file" +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $_am_arg | $_am_arg:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || +$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$_am_arg" : 'X\(//\)[^/]' \| \ + X"$_am_arg" : 'X\(//\)$' \| \ + X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$_am_arg" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'`/stamp-h$_am_stamp_count + ;; + + :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 +$as_echo "$as_me: executing $ac_file commands" >&6;} + ;; + esac + + + case $ac_file$ac_mode in + "depfiles":C) test x"$AMDEP_TRUE" != x"" || { + # Older Autoconf quotes --file arguments for eval, but not when files + # are listed without --file. Let's play safe and only enable the eval + # if we detect the quoting. + case $CONFIG_FILES in + *\'*) eval set x "$CONFIG_FILES" ;; + *) set x $CONFIG_FILES ;; + esac + shift + for mf + do + # Strip MF so we end up with the name of the file. + mf=`echo "$mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile or not. + # We used to match only the files named 'Makefile.in', but + # some people rename them; so instead we look at the file content. + # Grep'ing the first line is not enough: some people post-process + # each Makefile.in and add a new line on top of each file to say so. + # Grep'ing the whole file is not good either: AIX grep has a line + # limit of 2048, but all sed's we know have understand at least 4000. + if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then + dirpart=`$as_dirname -- "$mf" || +$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$mf" : 'X\(//\)[^/]' \| \ + X"$mf" : 'X\(//\)$' \| \ + X"$mf" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$mf" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + else + continue + fi + # Extract the definition of DEPDIR, am__include, and am__quote + # from the Makefile without running 'make'. + DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` + test -z "$DEPDIR" && continue + am__include=`sed -n 's/^am__include = //p' < "$mf"` + test -z "$am__include" && continue + am__quote=`sed -n 's/^am__quote = //p' < "$mf"` + # Find all dependency output files, they are included files with + # $(DEPDIR) in their names. We invoke sed twice because it is the + # simplest approach to changing $(DEPDIR) to its actual value in the + # expansion. + for file in `sed -n " + s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do + # Make sure the directory exists. + test -f "$dirpart/$file" && continue + fdir=`$as_dirname -- "$file" || +$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$file" : 'X\(//\)[^/]' \| \ + X"$file" : 'X\(//\)$' \| \ + X"$file" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + as_dir=$dirpart/$fdir; as_fn_mkdir_p + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" + done + done +} + ;; + "libtool":C) + + # See if we are running on zsh, and set the options which allow our + # commands through without removal of \ escapes. + if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST + fi + + cfgfile="${ofile}T" + trap "$RM \"$cfgfile\"; exit 1" 1 2 15 + $RM "$cfgfile" + + cat <<_LT_EOF >> "$cfgfile" +#! $SHELL + +# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. +# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: +# NOTE: Changes made to this file will be lost: look at ltmain.sh. +# +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, +# 2006, 2007, 2008, 2009, 2010, 2011 Free Software +# Foundation, Inc. +# Written by Gordon Matzigkeit, 1996 +# +# This file is part of GNU Libtool. +# +# GNU Libtool 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. +# +# As a special exception to the GNU General Public License, +# if you distribute this file as part of a program or library that +# is built using GNU Libtool, you may include this file under the +# same distribution terms that you use for the rest of that program. +# +# GNU Libtool 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 GNU Libtool; see the file COPYING. If not, a copy +# can be downloaded from http://www.gnu.org/licenses/gpl.html, or +# obtained by writing to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + + +# The names of the tagged configurations supported by this script. +available_tags="" + +# ### BEGIN LIBTOOL CONFIG + +# Which release of libtool.m4 was used? +macro_version=$macro_version +macro_revision=$macro_revision + +# Assembler program. +AS=$lt_AS + +# DLL creation program. +DLLTOOL=$lt_DLLTOOL + +# Object dumper program. +OBJDUMP=$lt_OBJDUMP + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# What type of objects to build. +pic_mode=$pic_mode + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# An echo program that protects backslashes. +ECHO=$lt_ECHO + +# The PATH separator for the build system. +PATH_SEPARATOR=$lt_PATH_SEPARATOR + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# A sed program that does not truncate output. +SED=$lt_SED + +# Sed that helps us avoid accidentally triggering echo(1) options like -n. +Xsed="\$SED -e 1s/^X//" + +# A grep program that handles long lines. +GREP=$lt_GREP + +# An ERE matcher. +EGREP=$lt_EGREP + +# A literal string matcher. +FGREP=$lt_FGREP + +# A BSD- or MS-compatible name lister. +NM=$lt_NM + +# Whether we need soft or hard links. +LN_S=$lt_LN_S + +# What is the maximum length of a command? +max_cmd_len=$max_cmd_len + +# Object file suffix (normally "o"). +objext=$ac_objext + +# Executable file suffix (normally ""). +exeext=$exeext + +# whether the shell understands "unset". +lt_unset=$lt_unset + +# turn spaces into newlines. +SP2NL=$lt_lt_SP2NL + +# turn newlines into spaces. +NL2SP=$lt_lt_NL2SP + +# convert \$build file names to \$host format. +to_host_file_cmd=$lt_cv_to_host_file_cmd + +# convert \$build files to toolchain format. +to_tool_file_cmd=$lt_cv_to_tool_file_cmd + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method = "file_magic". +file_magic_cmd=$lt_file_magic_cmd + +# How to find potential files when deplibs_check_method = "file_magic". +file_magic_glob=$lt_file_magic_glob + +# Find potential files using nocaseglob when deplibs_check_method = "file_magic". +want_nocaseglob=$lt_want_nocaseglob + +# Command to associate shared and link libraries. +sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd + +# The archiver. +AR=$lt_AR + +# Flags to create an archive. +AR_FLAGS=$lt_AR_FLAGS + +# How to feed a file listing to the archiver. +archiver_list_spec=$lt_archiver_list_spec + +# A symbol stripping program. +STRIP=$lt_STRIP + +# Commands used to install an old-style archive. +RANLIB=$lt_RANLIB +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Whether to use a lock for old archive extraction. +lock_old_archive_extraction=$lock_old_archive_extraction + +# A C compiler. +LTCC=$lt_CC + +# LTCC compiler flags. +LTCFLAGS=$lt_CFLAGS + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration. +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm in a C name address pair. +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# Transform the output of nm in a C name address pair when lib prefix is needed. +global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix + +# Specify filename containing input files for \$NM. +nm_file_list_spec=$lt_nm_file_list_spec + +# The root where to search for dependent libraries,and in which our libraries should be installed. +lt_sysroot=$lt_sysroot + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# Used to examine libraries when file_magic_cmd begins with "file". +MAGIC_CMD=$MAGIC_CMD + +# Must we lock files when doing compilation? +need_locks=$lt_need_locks + +# Manifest tool. +MANIFEST_TOOL=$lt_MANIFEST_TOOL + +# Tool to manipulate archived DWARF debug symbol files on Mac OS X. +DSYMUTIL=$lt_DSYMUTIL + +# Tool to change global to local symbols on Mac OS X. +NMEDIT=$lt_NMEDIT + +# Tool to manipulate fat objects and archives on Mac OS X. +LIPO=$lt_LIPO + +# ldd/readelf like tool for Mach-O binaries on Mac OS X. +OTOOL=$lt_OTOOL + +# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. +OTOOL64=$lt_OTOOL64 + +# Old archive suffix (normally "a"). +libext=$libext + +# Shared library suffix (normally ".so"). +shrext_cmds=$lt_shrext_cmds + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at link time. +variables_saved_for_relink=$lt_variables_saved_for_relink + +# Do we need the "lib" prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Library versioning type. +version_type=$version_type + +# Shared library runtime path variable. +runpath_var=$runpath_var + +# Shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Permission mode override for installation of shared libraries. +install_override_mode=$lt_install_override_mode + +# Command to use after installation of a shared archive. +postinstall_cmds=$lt_postinstall_cmds + +# Command to use after uninstallation of a shared archive. +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# As "finish_cmds", except a single script fragment to be evaled but +# not shown. +finish_eval=$lt_finish_eval + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Compile-time system search path for libraries. +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Run-time system search path for libraries. +sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + + +# The linker used to build libraries. +LD=$lt_LD + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# Commands used to build an old-style archive. +old_archive_cmds=$lt_old_archive_cmds + +# A language specific compiler. +CC=$lt_compiler + +# Is the compiler the GNU compiler? +with_gcc=$GCC + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc + +# Whether or not to disallow shared libs when runtime libs are static. +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec + +# Whether the compiler copes with passing no objects directly. +compiler_needs_object=$lt_compiler_needs_object + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds + +# Commands used to build a shared archive. +archive_cmds=$lt_archive_cmds +archive_expsym_cmds=$lt_archive_expsym_cmds + +# Commands used to build a loadable module if different from building +# a shared archive. +module_cmds=$lt_module_cmds +module_expsym_cmds=$lt_module_expsym_cmds + +# Whether we are building with GNU ld or not. +with_gnu_ld=$lt_with_gnu_ld + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag + +# Flag that enforces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec + +# Whether we need a single "-rpath" flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator + +# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes +# DIR into the resulting binary. +hardcode_direct=$hardcode_direct + +# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes +# DIR into the resulting binary and the resulting library dependency is +# "absolute",i.e impossible to change by setting \${shlibpath_var} if the +# library is relocated. +hardcode_direct_absolute=$hardcode_direct_absolute + +# Set to "yes" if using the -LDIR flag during linking hardcodes DIR +# into the resulting binary. +hardcode_minus_L=$hardcode_minus_L + +# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR +# into the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var + +# Set to "yes" if building a shared library automatically hardcodes DIR +# into the library and all subsequent libraries and executables linked +# against it. +hardcode_automatic=$hardcode_automatic + +# Set to yes if linker adds runtime paths of dependent libraries +# to runtime path list. +inherit_rpath=$inherit_rpath + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs + +# Set to "yes" if exported symbols are required. +always_export_symbols=$always_export_symbols + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms + +# Commands necessary for linking programs (against libraries) with templates. +prelink_cmds=$lt_prelink_cmds + +# Commands necessary for finishing linking programs. +postlink_cmds=$lt_postlink_cmds + +# Specify filename containing input files. +file_list_spec=$lt_file_list_spec + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action + +# ### END LIBTOOL CONFIG + +_LT_EOF + + case $host_os in + aix3*) + cat <<\_LT_EOF >> "$cfgfile" +# AIX sometimes has problems with the GCC collect2 program. For some +# reason, if we set the COLLECT_NAMES environment variable, the problems +# vanish in a puff of smoke. +if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES +fi +_LT_EOF + ;; + esac + + +ltmain="$ac_aux_dir/ltmain.sh" + + + # We use sed instead of cat because bash on DJGPP gets confused if + # if finds mixed CR/LF and LF-only lines. Since sed operates in + # text mode, it properly converts lines to CR/LF. This bash problem + # is reportedly fixed, but why not run on old versions too? + sed '$q' "$ltmain" >> "$cfgfile" \ + || (rm -f "$cfgfile"; exit 1) + + if test x"$xsi_shell" = xyes; then + sed -e '/^func_dirname ()$/,/^} # func_dirname /c\ +func_dirname ()\ +{\ +\ case ${1} in\ +\ */*) func_dirname_result="${1%/*}${2}" ;;\ +\ * ) func_dirname_result="${3}" ;;\ +\ esac\ +} # Extended-shell func_dirname implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_basename ()$/,/^} # func_basename /c\ +func_basename ()\ +{\ +\ func_basename_result="${1##*/}"\ +} # Extended-shell func_basename implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_dirname_and_basename ()$/,/^} # func_dirname_and_basename /c\ +func_dirname_and_basename ()\ +{\ +\ case ${1} in\ +\ */*) func_dirname_result="${1%/*}${2}" ;;\ +\ * ) func_dirname_result="${3}" ;;\ +\ esac\ +\ func_basename_result="${1##*/}"\ +} # Extended-shell func_dirname_and_basename implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_stripname ()$/,/^} # func_stripname /c\ +func_stripname ()\ +{\ +\ # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are\ +\ # positional parameters, so assign one to ordinary parameter first.\ +\ func_stripname_result=${3}\ +\ func_stripname_result=${func_stripname_result#"${1}"}\ +\ func_stripname_result=${func_stripname_result%"${2}"}\ +} # Extended-shell func_stripname implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_split_long_opt ()$/,/^} # func_split_long_opt /c\ +func_split_long_opt ()\ +{\ +\ func_split_long_opt_name=${1%%=*}\ +\ func_split_long_opt_arg=${1#*=}\ +} # Extended-shell func_split_long_opt implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_split_short_opt ()$/,/^} # func_split_short_opt /c\ +func_split_short_opt ()\ +{\ +\ func_split_short_opt_arg=${1#??}\ +\ func_split_short_opt_name=${1%"$func_split_short_opt_arg"}\ +} # Extended-shell func_split_short_opt implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_lo2o ()$/,/^} # func_lo2o /c\ +func_lo2o ()\ +{\ +\ case ${1} in\ +\ *.lo) func_lo2o_result=${1%.lo}.${objext} ;;\ +\ *) func_lo2o_result=${1} ;;\ +\ esac\ +} # Extended-shell func_lo2o implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_xform ()$/,/^} # func_xform /c\ +func_xform ()\ +{\ + func_xform_result=${1%.*}.lo\ +} # Extended-shell func_xform implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_arith ()$/,/^} # func_arith /c\ +func_arith ()\ +{\ + func_arith_result=$(( $* ))\ +} # Extended-shell func_arith implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_len ()$/,/^} # func_len /c\ +func_len ()\ +{\ + func_len_result=${#1}\ +} # Extended-shell func_len implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + +fi + +if test x"$lt_shell_append" = xyes; then + sed -e '/^func_append ()$/,/^} # func_append /c\ +func_append ()\ +{\ + eval "${1}+=\\${2}"\ +} # Extended-shell func_append implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_append_quoted ()$/,/^} # func_append_quoted /c\ +func_append_quoted ()\ +{\ +\ func_quote_for_eval "${2}"\ +\ eval "${1}+=\\\\ \\$func_quote_for_eval_result"\ +} # Extended-shell func_append_quoted implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + # Save a `func_append' function call where possible by direct use of '+=' + sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") + test 0 -eq $? || _lt_function_replace_fail=: +else + # Save a `func_append' function call even when '+=' is not available + sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") + test 0 -eq $? || _lt_function_replace_fail=: +fi + +if test x"$_lt_function_replace_fail" = x":"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unable to substitute extended shell functions in $ofile" >&5 +$as_echo "$as_me: WARNING: Unable to substitute extended shell functions in $ofile" >&2;} +fi + + + mv -f "$cfgfile" "$ofile" || + (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") + chmod +x "$ofile" + + ;; + + esac +done # for ac_tag + + +as_fn_exit 0 +_ACEOF +ac_clean_files=$ac_clean_files_save + +test $ac_write_fail = 0 || + as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 + + +# configure is writing to config.log, and then calls config.status. +# config.status does its own redirection, appending to config.log. +# Unfortunately, on DOS this fails, as config.log is still kept open +# by configure, so config.status won't be able to write to it; its +# output is simply discarded. So we exec the FD to /dev/null, +# effectively closing config.log, so it can be properly (re)opened and +# appended to by config.status. When coming back to configure, we +# need to make the FD available again. +if test "$no_create" != yes; then + ac_cs_success=: + ac_config_status_args= + test "$silent" = yes && + ac_config_status_args="$ac_config_status_args --quiet" + exec 5>/dev/null + $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false + exec 5>>config.log + # Use ||, not &&, to avoid exiting from the if with $? = 1, which + # would make configure fail if this is the last instruction. + $ac_cs_success || as_fn_exit 1 +fi +if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 +$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} +fi + diff --git a/gsl-2.5/configure.ac b/gsl-2.5/configure.ac new file mode 100644 index 00000000..dac0f367 --- /dev/null +++ b/gsl-2.5/configure.ac @@ -0,0 +1,653 @@ +dnl Process this file with autoconf to produce a configure script. + +AC_INIT([gsl],[2.5]) +AC_CONFIG_SRCDIR(gsl_math.h) + +AM_INIT_AUTOMAKE([gnu]) +AC_CONFIG_HEADERS([config.h]) +AM_MAINTAINER_MODE + +dnl Library versioning (C:R:A == current:revision:age) +dnl See the libtool manual for an explanation of the numbers +dnl +dnl gsl-1.0 libgsl 0:0:0 libgslcblas 0:0:0 +dnl gsl-1.1 libgsl 1:0:1 libgslcblas 0:0:0 +dnl gsl-1.1.1 libgsl 2:0:2 libgslcblas 0:0:0 +dnl gsl-1.2 libgsl 3:0:3 libgslcblas 0:0:0 +dnl gsl-1.3 libgsl 4:0:4 libgslcblas 0:0:0 +dnl gsl-1.4 libgsl 5:0:5 libgslcblas 0:0:0 +dnl gsl-1.5 libgsl 6:0:6 libgslcblas 0:0:0 +dnl gsl-1.6 libgsl 7:0:7 libgslcblas 0:0:0 +dnl gsl-1.7 libgsl 8:0:8 libgslcblas 0:0:0 +dnl gsl-1.8 libgsl 9:0:9 libgslcblas 0:0:0 +dnl gsl-1.9 libgsl 10:0:10 libgslcblas 0:0:0 +dnl gsl-1.10 libgsl 10:0:10 (*) libgslcblas 0:0:0 +dnl gsl-1.11 libgsl 12:0:12 libgslcblas 0:0:0 +dnl gsl-1.12 libgsl 13:0:13 libgslcblas 0:0:0 +dnl gsl-1.13 libgsl 14:0:14 libgslcblas 0:0:0 +dnl gsl-1.14 libgsl 15:0:15 libgslcblas 0:0:0 +dnl gsl-1.15 libgsl 16:0:16 libgslcblas 0:0:0 +dnl gsl-1.16 libgsl 17:0:17 libgslcblas 0:0:0 +dnl gsl-2.0 libgsl 18:0:18 (**) libgslcblas 0:0:0 +dnl gsl-2.1 libgsl 19:0:0 libgslcblas 0:0:0 +dnl gsl-2.2 libgsl 20:0:1 libgslcblas 0:0:0 +dnl gsl-2.2.1 libgsl 21:0:2 libgslcblas 0:0:0 +dnl gsl-2.3 libgsl 22:0:3 libgslcblas 0:0:0 +dnl gsl-2.4 libgsl 23:0:0 libgslcblas 0:0:0 +dnl gsl-2.5 libgsl 24:0:1 libgslcblas 0:0:0 +dnl +dnl (*) There was an error on this release. Firstly, the versioning +dnl numbers were not updated. Secondly, 2 functions were removed, but +dnl the age not reset--this should have been 11:0:0. However these +dnl functions were not documented and are regarded as internal, so we +dnl will assume 11:0:11. +dnl +dnl (**) There was an error on this release. Age should have been +dnl reset to 18:0:0 +dnl +dnl How to update library version number +dnl ==================================== +dnl +dnl C: increment if the interface has additions, changes, removals. +dnl +dnl R: increment any time the source changes; set to 0 if you +dnl incremented CURRENT +dnl +dnl A: increment if any interfaces have been added; set to 0 if any +dnl interfaces have been removed. removal has precedence over adding, +dnl so set to 0 if both happened. +dnl +dnl See https://www.gnu.org/software/libtool/manual/html_node/Updating-version-info.html +dnl for more detailed info + +dnl +GSL_CURRENT=24 +GSL_REVISION=0 +GSL_AGE=1 +dnl +CBLAS_CURRENT=0 +CBLAS_REVISION=0 +CBLAS_AGE=0 + +GSL_LT_VERSION="${GSL_CURRENT}:${GSL_REVISION}:${GSL_AGE}" +AC_SUBST(GSL_LT_VERSION) + +GSL_LT_CBLAS_VERSION="${CBLAS_CURRENT}:${CBLAS_REVISION}:${CBLAS_AGE}" +AC_SUBST(GSL_LT_CBLAS_VERSION) + +case "$VERSION" in + *+) + ;; + *) + AC_DEFINE(RELEASED,[],[Defined if this is an official release]) + ;; +esac + +dnl Split VERSION into GSL_VERSION_MAJOR and GSL_VERSION_MINOR +dnl Follows AX_SPLIT_VERSION macro from AC-Archive +dnl Rhys Ulerich +AC_PROG_SED +GSL_MAJOR_VERSION=`echo "$VERSION" | $SED 's/\([[^.]][[^.]]*\).*/\1/'` +GSL_MINOR_VERSION=`echo "$VERSION" | $SED 's/[[^.]][[^.]]*.\([[^.]][[^.]]*\).*/\1/'` +AC_SUBST(GSL_MAJOR_VERSION) +AC_SUBST(GSL_MINOR_VERSION) + +AC_PROG_MKDIR_P + +dnl things required by automake +dnl AC_ARG_PROGRAM +AC_PROG_MAKE_SET + +dnl Check for which system. +AC_CANONICAL_HOST + +dnl Checks for programs. +AC_LANG(C) +AC_PROG_CC +AC_PROG_CPP +AC_PROG_INSTALL +AC_PROG_LN_S +LT_INIT([win32-dll]) + +dnl Check compiler features +AC_TYPE_SIZE_T +dnl AC_C_CONST +AC_C_VOLATILE +AC_C_INLINE +AC_C_CHAR_UNSIGNED + +GSL_CFLAGS="-I$includedir" +GSL_LIBS="-L$libdir -lgsl" +dnl macro from libtool - can be replaced with LT_LIB_M when we require libtool 2 +LT_LIB_M +GSL_LIBM=$LIBM + +AC_SUBST(GSL_CFLAGS) +AC_SUBST(GSL_LIBS) +AC_SUBST(GSL_LIBM) + +if test "$ac_cv_c_inline" != no ; then +dnl Check for "extern inline", using a modified version of the test +dnl for AC_C_INLINE from acspecific.mt +dnl + AC_CACHE_CHECK([for GNU-style extern inline], ac_cv_c_extern_inline, + [ac_cv_c_extern_inline=no + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[extern $ac_cv_c_inline double foo(double x); + extern $ac_cv_c_inline double foo(double x) { return x + 1.0 ; } ; + double foo (double x) { return x + 1.0 ; };]], [[ foo(1.0) ]])],[ac_cv_c_extern_inline="yes"],[]) + ]) + + if test "$ac_cv_c_extern_inline" != no ; then + AC_DEFINE(HAVE_INLINE,[1],[Define if you have inline]) + else + AC_CACHE_CHECK([for C99-style inline], ac_cv_c_c99inline, + [ac_cv_c_c99inline=no + dnl next line is a necessary condition + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[extern inline void* foo() { foo(); return &foo ; };]], + [[ return foo() != 0 ]])],[ac_cv_c_c99inline="yes"],[]) + dnl but not sufficient, extern must work but inline on its own should not + if test "$ac_cv_c_c99inline" != no ; then + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[inline void* foo() { foo(); return &foo ; };]], + [[ return foo() != 0 ]])],[],ac_cv_c_c99inline="no") + fi + ]) + if test "$ac_cv_c_c99inline" != no ; then + AC_DEFINE(HAVE_INLINE,[1],[Define if you have inline]) + AC_DEFINE(HAVE_C99_INLINE,[1],[Define if you have inline with C99 behavior]) + fi + fi +fi + +dnl Checks for header files. +AC_CHECK_HEADERS(ieeefp.h) + +dnl Checks for typedefs, structures, and compiler characteristics. + +case $host in + *-*-cygwin* | *-*-mingw* ) + if test "$enable_shared" = yes; then + GSLCBLAS_LDFLAGS="$GSLCBLAS_LDFLAGS -no-undefined" + GSL_LDFLAGS="$GSL_LDFLAGS -no-undefined" + GSL_LIBADD="cblas/libgslcblas.la" + fi + ;; +esac + +AC_SUBST(GSLCBLAS_LDFLAGS) +AC_SUBST(GSL_LDFLAGS) +AC_SUBST(GSL_LIBADD) + +dnl Checks for library functions. + +dnl AC_FUNC_ALLOCA +AC_FUNC_VPRINTF + +dnl strcasecmp, strerror, xmalloc, xrealloc, probably others should be added. +dnl removed strerror from this list, it's hardcoded in the err/ directory +dnl Any functions which appear in this list of functions should be provided +dnl in the utils/ directory +dnl xmalloc is not used, removed (bjg) +AC_REPLACE_FUNCS(memcpy memmove strdup strtol strtoul) + +AC_CACHE_CHECK(for EXIT_SUCCESS and EXIT_FAILURE, +ac_cv_decl_exit_success_and_failure, +AC_EGREP_CPP(yes, +[ +#include +#ifdef EXIT_SUCCESS +yes +#endif +], +ac_cv_decl_exit_success_and_failure=yes, +ac_cv_decl_exit_success_and_failure=no) +) + +if test "$ac_cv_decl_exit_success_and_failure" = yes ; then + AC_DEFINE(HAVE_EXIT_SUCCESS_AND_FAILURE,1,[Defined if you have ansi EXIT_SUCCESS and EXIT_FAILURE in stdlib.h]) +fi ; + +dnl Use alternate libm if specified by user + +if test "x$LIBS" = "x" ; then + AC_CHECK_LIB(m, cos) +fi + +dnl Remember to put a definition in acconfig.h for each of these +AC_CHECK_DECLS(feenableexcept,,,[#define _GNU_SOURCE 1 +#include ]) +AC_CHECK_DECLS(fesettrapenable,,,[#define _GNU_SOURCE 1 +#include ]) +AC_CHECK_DECLS(hypot,,,[#include ]) +AC_CHECK_DECLS(expm1,,,[#include ]) +AC_CHECK_DECLS(acosh,,,[#include ]) +AC_CHECK_DECLS(asinh,,,[#include ]) +AC_CHECK_DECLS(atanh,,,[#include ]) +AC_CHECK_DECLS(ldexp,,,[#include ]) +AC_CHECK_DECLS(frexp,,,[#include ]) +AC_CHECK_DECLS([fprnd_t],[],[],[[#include ]]) +AC_CHECK_DECLS(isinf,,,[#include ]) +AC_CHECK_DECLS(isfinite,,,[#include ]) +AC_CHECK_DECLS(finite,,,[#include +#if HAVE_IEEEFP_H +#include +#endif]) +AC_CHECK_DECLS(isnan,,,[#include ]) + +dnl OpenBSD has a broken implementation of log1p. +case "$host" in + *-*-*openbsd*) + AC_MSG_RESULT([avoiding OpenBSD system log1p - using gsl version]) + ;; + *) + AC_CHECK_DECLS(log1p,,,[#include ]) + ;; +esac + +AC_CACHE_CHECK([for long double stdio], ac_cv_func_printf_longdouble, +[AC_RUN_IFELSE([AC_LANG_SOURCE([[ +#include +#include +int main (void) +{ +const char * s = "5678.25"; long double x = 1.234 ; +fprintf(stderr,"%Lg\n",x) ; +sscanf(s, "%Lg", &x); +if (x == 5678.25) {exit (0);} else {exit(1); }; +}]])],[ac_cv_func_printf_longdouble="yes"],[ac_cv_func_printf_longdouble="no"],[ac_cv_func_printf_longdouble="no"])]) + +if test "$ac_cv_func_printf_longdouble" != no; then + AC_DEFINE(HAVE_PRINTF_LONGDOUBLE,1,[Define this if printf can handle %Lf for long double]) +fi + +AC_CACHE_CHECK([for extended floating point registers],ac_cv_c_extended_fp, +[case "$host" in + *sparc*-*-*) + ac_cv_c_extended_fp=no + ;; + *powerpc*-*-*) + ac_cv_c_extended_fp=no + ;; + *hppa*-*-*) + ac_cv_c_extended_fp=no + ;; + *alpha*-*-*) + ac_cv_c_extended_fp=no + ;; + *68k*-*-*) + ac_cv_c_extended_fp=yes + ;; + *86-*-*) + ac_cv_c_extended_fp=yes + ;; + x86_64-*-*) + ac_cv_c_extended_fp=yes + ;; + *) + ac_cv_c_extended_fp=unknown + ;; +esac +]) + +if test $ac_cv_c_extended_fp != "no" ; then + AC_DEFINE(HAVE_EXTENDED_PRECISION_REGISTERS,1,[Defined on architectures with excess floating-point precision]) +fi + +AC_CACHE_CHECK([for IEEE arithmetic interface type], ac_cv_c_ieee_interface, +[case "$host" in + sparc-*-linux*) + ac_cv_c_ieee_interface=gnusparc + ;; + m68k-*-linux*) + ac_cv_c_ieee_interface=gnum68k + ;; + powerpc-*-linux*) + ac_cv_c_ieee_interface=gnuppc + ;; + *86-*-gnu | *86_64-*-gnu | *86-*-linux* | *86_64-*-linux*) + ac_cv_c_ieee_interface=gnux86 + ;; + *-*-sunos4*) + ac_cv_c_ieee_interface=sunos4 + ;; + *-*-solaris*) + ac_cv_c_ieee_interface=solaris + ;; + *-*-hpux11*) + ac_cv_c_ieee_interface=hpux11 + ;; + *-*-hpux*) + ac_cv_c_ieee_interface=hpux + ;; + *-*-osf*) + ac_cv_c_ieee_interface=tru64 + ;; + *-*-aix*) + ac_cv_c_ieee_interface=aix + ;; + *-*-irix*) + ac_cv_c_ieee_interface=irix + ;; + powerpc-*-*darwin*) + ac_cv_c_ieee_interface=darwin + ;; + *86-*-*darwin*) + ac_cv_c_ieee_interface=darwin86 + ;; + *-*-*netbsd*) + ac_cv_c_ieee_interface=netbsd + ;; + *-*-*openbsd*) + ac_cv_c_ieee_interface=openbsd + ;; + *-*-*bsd*) + ac_cv_c_ieee_interface=freebsd + ;; + *-*-os2*) + ac_cv_c_ieee_interface=os2emx + ;; + *) + ac_cv_c_ieee_interface=unknown + ;; +esac +]) + +if test "$ac_cv_c_ieee_interface" = "gnux86" ; then + AC_CACHE_CHECK([for FPU_SETCW], ac_cv_c_fpu_setcw, + [ac_cv_c_fpu_setcw=no + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include +#ifndef _FPU_SETCW +#include +#define _FPU_SETCW(cw) __setfpucw(cw) +#endif +]], [[ unsigned short mode = 0 ; _FPU_SETCW(mode); ]])],[ac_cv_c_fpu_setcw="yes"],[ac_cv_c_ieee_interface=unknown]) + ]) +fi + +if test "$ac_cv_c_ieee_interface" = "gnux86" ; then + AC_CACHE_CHECK([for SSE extensions], ac_cv_c_fpu_sse, + [ac_cv_c_fpu_sse=no + AC_RUN_IFELSE([AC_LANG_PROGRAM([[ +#include +#define _FPU_SETMXCSR(cw_sse) asm volatile ("ldmxcsr %0" : : "m" (*&cw_sse)) +]], [[ unsigned int mode = 0x1f80 ; _FPU_SETMXCSR(mode); exit(0); ]])],[ac_cv_c_fpu_sse="yes"],[ac_cv_c_fpu_sse="no"],[ + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ +#include +#define _FPU_SETMXCSR(cw_sse) asm volatile ("ldmxcsr %0" : : "m" (*&cw_sse)) +]], [[ unsigned int mode = 0x1f80 ; _FPU_SETMXCSR(mode); exit(0); ]])],[ac_cv_c_fpu_sse="yes"],[ac_cv_c_fpu_sse="no"]) +])]) + + if test $ac_cv_c_fpu_sse = yes; then + AC_DEFINE([HAVE_FPU_X86_SSE], 1, + [Define if x86 processor has sse extensions.]) + fi +fi + +ac_tr_ieee_interface=HAVE_`echo $ac_cv_c_ieee_interface | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`_IEEE_INTERFACE +AC_DEFINE_UNQUOTED($ac_tr_ieee_interface,1,[IEEE Interface Type]) + +AC_SUBST(HAVE_GNUSPARC_IEEE_INTERFACE) +AC_SUBST(HAVE_GNUM68K_IEEE_INTERFACE) +AC_SUBST(HAVE_GNUPPC_IEEE_INTERFACE) +AC_SUBST(HAVE_GNUX86_IEEE_INTERFACE) +AC_SUBST(HAVE_SUNOS4_IEEE_INTERFACE) +AC_SUBST(HAVE_SOLARIS_IEEE_INTERFACE) +AC_SUBST(HAVE_HPUX11_IEEE_INTERFACE) +AC_SUBST(HAVE_HPUX_IEEE_INTERFACE) +AC_SUBST(HAVE_TRU64_IEEE_INTERFACE) +AC_SUBST(HAVE_IRIX_IEEE_INTERFACE) +AC_SUBST(HAVE_AIX_IEEE_INTERFACE) +AC_SUBST(HAVE_FREEBSD_IEEE_INTERFACE) +AC_SUBST(HAVE_OS2EMX_IEEE_INTERFACE) +AC_SUBST(HAVE_NETBSD_IEEE_INTERFACE) +AC_SUBST(HAVE_OPENBSD_IEEE_INTERFACE) +AC_SUBST(HAVE_DARWIN_IEEE_INTERFACE) +AC_SUBST(HAVE_DARWIN86_IEEE_INTERFACE) + +dnl Check for IEEE control flags + +save_cflags="$CFLAGS" +AC_CACHE_CHECK([for IEEE compiler flags], ac_cv_c_ieee_flags, +[ +case "$host" in + alpha*-*-*) + if test X"$GCC" = Xyes ; then + ieee_flags='-mieee -mfp-rounding-mode=d' + else + # This assumes Compaq's C compiler. + ieee_flags='-ieee -fprm d' + fi + ;; +esac +if test X"$ieee_flags" != X ; then + CFLAGS="$ieee_flags $CFLAGS" + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[int foo;]])],[ac_cv_c_ieee_flags="$ieee_flags"],[ac_cv_c_ieee_flags="none"]) +else + ac_cv_c_ieee_flags="none" +fi]) + +if test "$ac_cv_c_ieee_flags" != "none" ; then + CFLAGS="$ac_cv_c_ieee_flags $save_cflags" +else + CFLAGS="$save_cflags" +fi + +dnl Check IEEE comparisons, whether "x != x" is true for NaNs +dnl +AC_CACHE_CHECK([for IEEE comparisons], ac_cv_c_ieee_comparisons, +[AC_RUN_IFELSE([AC_LANG_SOURCE([[ +#include +int main (void) +{ + int status; double inf, nan; + inf = exp(1.0e10); + nan = inf / inf ; + status = (nan == nan); + exit (status); +}]])],[ac_cv_c_ieee_comparisons="yes"],[ac_cv_c_ieee_comparisons="no"],[ac_cv_c_ieee_comparisons="yes"]) +]) + +if test "$ac_cv_c_ieee_comparisons" != no ; then + AC_DEFINE(HAVE_IEEE_COMPARISONS,1,[Define this if IEEE comparisons work correctly (e.g. NaN != NaN)]) +fi + +dnl Check for IEEE denormalized arithmetic +dnl +AC_CACHE_CHECK([for IEEE denormalized values], ac_cv_c_ieee_denormals, +[AC_RUN_IFELSE([AC_LANG_SOURCE([[ +#include +int main (void) +{ + int i, status; + volatile double z = 1e-308; + for (i = 0; i < 5; i++) { z = z / 10.0 ; }; + for (i = 0; i < 5; i++) { z = z * 10.0 ; }; + status = (z == 0.0); + exit (status); +}]])],[ac_cv_c_ieee_denormals="yes"],[ac_cv_c_ieee_denormals="no"],[ac_cv_c_ieee_denormals="yes"]) +]) + +if test "$ac_cv_c_ieee_denormals" != no ; then + AC_DEFINE(HAVE_IEEE_DENORMALS,1,[Define this if IEEE denormalized numbers are available]) +fi + +AH_TEMPLATE([HIDE_INLINE_STATIC],[Define if you need to hide the static definitions of inline functions]) + +AH_BOTTOM([/* Use 0 and 1 for EXIT_SUCCESS and EXIT_FAILURE if we don't have them */ +#if !HAVE_EXIT_SUCCESS_AND_FAILURE +#define EXIT_SUCCESS 0 +#define EXIT_FAILURE 1 +#endif]) + +AH_BOTTOM([/* Define one of these if you have a known IEEE arithmetic interface */ +#undef HAVE_GNUSPARC_IEEE_INTERFACE +#undef HAVE_GNUM68K_IEEE_INTERFACE +#undef HAVE_GNUPPC_IEEE_INTERFACE +#undef HAVE_GNUX86_IEEE_INTERFACE +#undef HAVE_SUNOS4_IEEE_INTERFACE +#undef HAVE_SOLARIS_IEEE_INTERFACE +#undef HAVE_HPUX11_IEEE_INTERFACE +#undef HAVE_HPUX_IEEE_INTERFACE +#undef HAVE_TRU64_IEEE_INTERFACE +#undef HAVE_IRIX_IEEE_INTERFACE +#undef HAVE_AIX_IEEE_INTERFACE +#undef HAVE_FREEBSD_IEEE_INTERFACE +#undef HAVE_OS2EMX_IEEE_INTERFACE +#undef HAVE_NETBSD_IEEE_INTERFACE +#undef HAVE_OPENBSD_IEEE_INTERFACE +#undef HAVE_DARWIN_IEEE_INTERFACE +#undef HAVE_DARWIN86_IEEE_INTERFACE]) + +AH_BOTTOM([/* Define a rounding function which moves extended precision values + out of registers and rounds them to double-precision. This should + be used *sparingly*, in places where it is necessary to keep + double-precision rounding for critical expressions while running in + extended precision. For example, the following code should ensure + exact equality, even when extended precision registers are in use, + + double q = GSL_COERCE_DBL(3.0/7.0) ; + if (q == GSL_COERCE_DBL(3.0/7.0)) { ... } ; + + It carries a penalty even when the program is running in double + precision mode unless you compile a separate version of the + library with HAVE_EXTENDED_PRECISION_REGISTERS turned off. */ + +#if HAVE_EXTENDED_PRECISION_REGISTERS +#define GSL_COERCE_DBL(x) (gsl_coerce_double(x)) +#else +#define GSL_COERCE_DBL(x) (x) +#endif]) + +AH_BOTTOM([/* Substitute gsl functions for missing system functions */ + +#if !HAVE_DECL_HYPOT +#define hypot gsl_hypot +#endif + +#if !HAVE_DECL_LOG1P +#define log1p gsl_log1p +#endif + +#if !HAVE_DECL_EXPM1 +#define expm1 gsl_expm1 +#endif + +#if !HAVE_DECL_ACOSH +#define acosh gsl_acosh +#endif + +#if !HAVE_DECL_ASINH +#define asinh gsl_asinh +#endif + +#if !HAVE_DECL_ATANH +#define atanh gsl_atanh +#endif + +#if !HAVE_DECL_LDEXP +#define ldexp gsl_ldexp +#endif + +#if !HAVE_DECL_FREXP +#define frexp gsl_frexp +#endif + +#if !HAVE_DECL_ISINF +#define isinf gsl_isinf +#endif + +#if !HAVE_DECL_ISFINITE +#define isfinite gsl_finite +#endif + +#if !HAVE_DECL_FINITE +#define finite gsl_finite +#endif + +#if !HAVE_DECL_ISNAN +#define isnan gsl_isnan +#endif]) + +AH_BOTTOM([#ifdef __GNUC__ +#define DISCARD_POINTER(p) do { ; } while(p ? 0 : 0); +#else +#define DISCARD_POINTER(p) /* ignoring discarded pointer */ +#endif]) + +AH_BOTTOM([#if defined(GSL_RANGE_CHECK_OFF) || !defined(GSL_RANGE_CHECK) +#define GSL_RANGE_CHECK 0 /* turn off range checking by default internally */ +#endif]) + +AH_BOTTOM([#define RETURN_IF_NULL(x) if (!x) { return ; } +]) + +AH_VERBATIM([GSL_DISABLE_DEPRECATED], +[/* Disable deprecated functions and enums while building */ +#define GSL_DISABLE_DEPRECATED 1]) + +dnl +AC_CONFIG_FILES([ \ +Makefile \ +gsl_version.h \ +gsl.spec \ +blas/Makefile \ +block/Makefile \ +bspline/Makefile \ +cblas/Makefile \ +cdf/Makefile \ +cheb/Makefile \ +combination/Makefile \ +complex/Makefile \ +const/Makefile \ +deriv/Makefile \ +dht/Makefile \ +diff/Makefile \ +doc/Makefile \ +doc/examples/Makefile \ +eigen/Makefile \ +err/Makefile \ +fft/Makefile \ +filter/Makefile \ +fit/Makefile \ +gsl/Makefile \ +histogram/Makefile \ +ieee-utils/Makefile \ +integration/Makefile \ +interpolation/Makefile \ +linalg/Makefile \ +matrix/Makefile \ +min/Makefile \ +monte/Makefile \ +movstat/Makefile \ +multifit/Makefile \ +multifit_nlinear/Makefile \ +multilarge/Makefile \ +multilarge_nlinear/Makefile \ +multimin/Makefile \ +multiroots/Makefile \ +multiset/Makefile \ +ntuple/Makefile \ +ode-initval/Makefile \ +ode-initval2/Makefile \ +permutation/Makefile \ +poly/Makefile \ +qrng/Makefile \ +randist/Makefile \ +rng/Makefile \ +roots/Makefile \ +rstat/Makefile \ +siman/Makefile \ +sort/Makefile \ +spblas/Makefile \ +splinalg/Makefile \ +spmatrix/Makefile \ +specfunc/Makefile \ +statistics/Makefile \ +sum/Makefile \ +sys/Makefile \ +test/Makefile \ +utils/Makefile \ +vector/Makefile \ +wavelet/Makefile \ +]) + +AC_OUTPUT diff --git a/gsl-2.5/const/.deps/test.Po b/gsl-2.5/const/.deps/test.Po new file mode 100644 index 00000000..df159c5a --- /dev/null +++ b/gsl-2.5/const/.deps/test.Po @@ -0,0 +1,173 @@ +test.o: test.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_math.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_const.h \ + ../gsl/gsl_const_num.h ../gsl/gsl_const_cgs.h ../gsl/gsl_const_mks.h \ + ../gsl/gsl_const_cgsm.h ../gsl/gsl_const_mksa.h ../gsl/gsl_test.h \ + ../gsl/gsl_ieee_utils.h /usr/include/stdio.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_const.h: + +../gsl/gsl_const_num.h: + +../gsl/gsl_const_cgs.h: + +../gsl/gsl_const_mks.h: + +../gsl/gsl_const_cgsm.h: + +../gsl/gsl_const_mksa.h: + +../gsl/gsl_test.h: + +../gsl/gsl_ieee_utils.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: diff --git a/gsl-2.5/const/ChangeLog b/gsl-2.5/const/ChangeLog new file mode 100644 index 00000000..3afae7e5 --- /dev/null +++ b/gsl-2.5/const/ChangeLog @@ -0,0 +1,81 @@ +2009-08-17 Brian Gough + + * const.el: removed electromagnetic constants from cgs, now only + in CGSM + +2008-07-03 Brian Gough + + * Makefile.am (INCLUDES): use top_srcdir instead of top_builddir + +2006-03-21 Brian Gough + + * test.c (main): added some extra tests + +2006-03-17 Brian Gough + + * const.el (gsl-electrical-constants): added debye unit + +2004-05-26 Brian Gough + + * test.c: added stdlib.h for exit() + +2004-03-05 Brian Gough + + * const.el: added CGS and MKS systems back in, with CGSM electrical + units excluded from CGS, for backwards compatibility + +2003-11-27 Brian Gough + + * const.el (gsl-constants): added stefan-boltzmann constant and + thomson cross section + +2003-09-18 Brian Gough + + * test.c: added a test program + + * gsl_const.h: fixed to use new header files for MKSA and CGSM + +2003-06-09 Brian Gough + + * calc-units-update.el: changed to use MKSA and CGSM units, so + that electromagnetic constants are converted correctly + +Sat Jul 20 21:25:56 2002 Brian Gough + + * calc-units-update.el (math-additional-units): changed setvar to + setq, otherwise the new values do not override the original values + +Wed May 29 22:41:31 2002 Brian Gough + + * calc-units-update.el (math-additional-units): updated unit + values, in a backwards compatible way. Made mue an absolute + value, and put Ryd in energy units. + +2002-05-18 Jochen Kpper + + * calc-units-update.el (math-additional-units): Add this file to + provide updated costants for Emacs calc. (These values are in the + current development versions of GNU Emacs and Xemacs already.) + +Mon Apr 1 19:27:57 2002 Brian Gough + + * const.el (gsl-constants): Added newton, dyne, joule, erg and + power-of-ten prefixes, Mega, Giga, Tera, etc. + +Tue Jan 8 21:48:56 2002 Brian Gough + + * const.el (gsl-constants): added bohr_radius and + vacuum_permittivity + +Tue Sep 25 15:15:33 2001 Brian Gough + + * const.el (fn): make all output double precision to avoid + possibility of unexpected integer division. + (gsl-constants): fix definition of barn and btu + (gsl-constants): added solar mass + +Tue Jan 23 16:19:50 2001 Brian Gough + + * const.el (gsl-constants): fixed definition of POINT (from pt to + point, was previously measuring 'pints') + diff --git a/gsl-2.5/const/Makefile b/gsl-2.5/const/Makefile new file mode 100644 index 00000000..d683b5ac --- /dev/null +++ b/gsl-2.5/const/Makefile @@ -0,0 +1,1001 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# const/Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + + + +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/gsl +pkgincludedir = $(includedir)/gsl +pkglibdir = $(libdir)/gsl +pkglibexecdir = $(libexecdir)/gsl +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = x86_64-unknown-linux-gnu +host_triplet = x86_64-unknown-linux-gnu +check_PROGRAMS = test$(EXEEXT) +subdir = const +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp \ + $(pkginclude_HEADERS) $(top_srcdir)/test-driver ChangeLog TODO +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +am_test_OBJECTS = test.$(OBJEXT) +test_OBJECTS = $(am_test_OBJECTS) +test_DEPENDENCIES = ../ieee-utils/libgslieeeutils.la \ + ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la \ + ../utils/libutils.la +AM_V_lt = $(am__v_lt_$(V)) +am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) +am__v_lt_0 = --silent +am__v_lt_1 = +AM_V_P = $(am__v_P_$(V)) +am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY)) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_$(V)) +am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_$(V)) +am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I. -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_$(V)) +am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_$(V)) +am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(test_SOURCES) +DIST_SOURCES = $(test_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(pkgincludedir)" +HEADERS = $(pkginclude_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = .test +LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing aclocal-1.13 +AMTAR = $${TAR-tar} +AM_DEFAULT_VERBOSITY = 1 +AR = ar +AS = as +AUTOCONF = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing autoconf +AUTOHEADER = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing autoheader +AUTOMAKE = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing automake-1.13 +AWK = gawk +CC = gcc +CCDEPMODE = depmode=gcc3 +CFLAGS = -g -O2 +CPP = gcc -E +CPPFLAGS = +CYGPATH_W = echo +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +DLLTOOL = false +DSYMUTIL = +DUMPBIN = +ECHO_C = +ECHO_N = -n +ECHO_T = +EGREP = /usr/bin/grep -E +EXEEXT = +FGREP = /usr/bin/grep -F +GREP = /usr/bin/grep +GSLCBLAS_LDFLAGS = +GSL_CFLAGS = -I${prefix}/include +GSL_LDFLAGS = +GSL_LIBADD = +GSL_LIBM = -lm +GSL_LIBS = -L${exec_prefix}/lib -lgsl +GSL_LT_CBLAS_VERSION = 0:0:0 +GSL_LT_VERSION = 24:0:1 +GSL_MAJOR_VERSION = 2 +GSL_MINOR_VERSION = 5 +HAVE_AIX_IEEE_INTERFACE = +HAVE_DARWIN86_IEEE_INTERFACE = +HAVE_DARWIN_IEEE_INTERFACE = +HAVE_FREEBSD_IEEE_INTERFACE = +HAVE_GNUM68K_IEEE_INTERFACE = +HAVE_GNUPPC_IEEE_INTERFACE = +HAVE_GNUSPARC_IEEE_INTERFACE = +HAVE_GNUX86_IEEE_INTERFACE = +HAVE_HPUX11_IEEE_INTERFACE = +HAVE_HPUX_IEEE_INTERFACE = +HAVE_IRIX_IEEE_INTERFACE = +HAVE_NETBSD_IEEE_INTERFACE = +HAVE_OPENBSD_IEEE_INTERFACE = +HAVE_OS2EMX_IEEE_INTERFACE = +HAVE_SOLARIS_IEEE_INTERFACE = +HAVE_SUNOS4_IEEE_INTERFACE = +HAVE_TRU64_IEEE_INTERFACE = +INSTALL = /usr/bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = $(install_sh) -c -s +LD = /usr/bin/ld -m elf_x86_64 +LDFLAGS = +LIBM = -lm +LIBOBJS = +LIBS = -lm +LIBTOOL = $(SHELL) $(top_builddir)/libtool +LIPO = +LN_S = ln -s +LTLIBOBJS = +MAINT = # +MAKEINFO = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing makeinfo +MANIFEST_TOOL = : +MKDIR_P = /usr/bin/mkdir -p +NM = /usr/bin/nm -B +NMEDIT = +OBJDUMP = objdump +OBJEXT = o +OTOOL = +OTOOL64 = +PACKAGE = gsl +PACKAGE_BUGREPORT = +PACKAGE_NAME = gsl +PACKAGE_STRING = gsl 2.5 +PACKAGE_TARNAME = gsl +PACKAGE_URL = +PACKAGE_VERSION = 2.5 +PATH_SEPARATOR = : +RANLIB = ranlib +SED = /usr/bin/sed +SET_MAKE = +SHELL = /bin/sh +STRIP = strip +VERSION = 2.5 +abs_builddir = /home/groups/kipac/chto/package/gsl/gsl-2.5/const +abs_srcdir = /home/groups/kipac/chto/package/gsl/gsl-2.5/const +abs_top_builddir = /home/groups/kipac/chto/package/gsl/gsl-2.5 +abs_top_srcdir = /home/groups/kipac/chto/package/gsl/gsl-2.5 +ac_ct_AR = ar +ac_ct_CC = gcc +ac_ct_DUMPBIN = +am__include = include +am__leading_dot = . +am__quote = +am__tar = $${TAR-tar} chof - "$$tardir" +am__untar = $${TAR-tar} xf - +bindir = ${exec_prefix}/bin +build = x86_64-unknown-linux-gnu +build_alias = +build_cpu = x86_64 +build_os = linux-gnu +build_vendor = unknown +builddir = . +datadir = ${datarootdir} +datarootdir = ${prefix}/share +docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} +dvidir = ${docdir} +exec_prefix = ${prefix} +host = x86_64-unknown-linux-gnu +host_alias = +host_cpu = x86_64 +host_os = linux-gnu +host_vendor = unknown +htmldir = ${docdir} +includedir = ${prefix}/include +infodir = ${datarootdir}/info +install_sh = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/install-sh +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +localedir = ${datarootdir}/locale +localstatedir = ${prefix}/var +mandir = ${datarootdir}/man +mkdir_p = $(MKDIR_P) +oldincludedir = /usr/include +pdfdir = ${docdir} +prefix = /home/groups/kipac/chto/package/gsl/gsl_lib +program_transform_name = s,x,x, +psdir = ${docdir} +sbindir = ${exec_prefix}/sbin +sharedstatedir = ${prefix}/com +srcdir = . +sysconfdir = ${prefix}/etc +target_alias = +top_build_prefix = ../ +top_builddir = .. +top_srcdir = .. +pkginclude_HEADERS = gsl_const.h gsl_const_cgs.h gsl_const_mks.h gsl_const_cgsm.h gsl_const_mksa.h gsl_const_num.h +AM_CPPFLAGS = -I$(top_srcdir) +TESTS = $(check_PROGRAMS) +test_SOURCES = test.c +test_LDADD = ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu const/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu const/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: # $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): # $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) $(EXTRA_test_DEPENDENCIES) + @rm -f test$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_OBJECTS) $(test_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +include ./$(DEPDIR)/test.Po + +.c.o: + $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# $(AM_V_CC)source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(COMPILE) -c $< + +.c.obj: + $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# $(AM_V_CC)source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: + $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +# $(AM_V_CC)source='$<' object='$@' libtool=yes \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-pkgincludeHEADERS: $(pkginclude_HEADERS) + @$(NORMAL_INSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \ + done + +uninstall-pkgincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + else \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_PROGRAMS) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +test.log: test$(EXEEXT) + @p='test$(EXEEXT)'; \ + b='test'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +#.test$(EXEEXT).log: +# @p='$<'; \ +# $(am__set_b); \ +# $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +# --log-file $$b.log --trs-file $$b.trs \ +# $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +# "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-am +all-am: Makefile $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(pkgincludedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ + mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-pkgincludeHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-pkgincludeHEADERS + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool cscopelist-am \ + ctags ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-pkgincludeHEADERS install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am recheck tags tags-am uninstall \ + uninstall-am uninstall-pkgincludeHEADERS + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gsl-2.5/const/Makefile.am b/gsl-2.5/const/Makefile.am new file mode 100644 index 00000000..058b1364 --- /dev/null +++ b/gsl-2.5/const/Makefile.am @@ -0,0 +1,15 @@ +pkginclude_HEADERS = gsl_const.h gsl_const_cgs.h gsl_const_mks.h gsl_const_cgsm.h gsl_const_mksa.h gsl_const_num.h + +AM_CPPFLAGS = -I$(top_srcdir) + +TESTS = $(check_PROGRAMS) + +check_PROGRAMS = test + +test_SOURCES = test.c + +test_LDADD = ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la + + + + diff --git a/gsl-2.5/const/Makefile.in b/gsl-2.5/const/Makefile.in new file mode 100644 index 00000000..2bc6f8e2 --- /dev/null +++ b/gsl-2.5/const/Makefile.in @@ -0,0 +1,1001 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +check_PROGRAMS = test$(EXEEXT) +subdir = const +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp \ + $(pkginclude_HEADERS) $(top_srcdir)/test-driver ChangeLog TODO +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +am_test_OBJECTS = test.$(OBJEXT) +test_OBJECTS = $(am_test_OBJECTS) +test_DEPENDENCIES = ../ieee-utils/libgslieeeutils.la \ + ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la \ + ../utils/libutils.la +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(test_SOURCES) +DIST_SOURCES = $(test_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(pkgincludedir)" +HEADERS = $(pkginclude_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = @EXEEXT@ .test +LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +GSLCBLAS_LDFLAGS = @GSLCBLAS_LDFLAGS@ +GSL_CFLAGS = @GSL_CFLAGS@ +GSL_LDFLAGS = @GSL_LDFLAGS@ +GSL_LIBADD = @GSL_LIBADD@ +GSL_LIBM = @GSL_LIBM@ +GSL_LIBS = @GSL_LIBS@ +GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ +GSL_LT_VERSION = @GSL_LT_VERSION@ +GSL_MAJOR_VERSION = @GSL_MAJOR_VERSION@ +GSL_MINOR_VERSION = @GSL_MINOR_VERSION@ +HAVE_AIX_IEEE_INTERFACE = @HAVE_AIX_IEEE_INTERFACE@ +HAVE_DARWIN86_IEEE_INTERFACE = @HAVE_DARWIN86_IEEE_INTERFACE@ +HAVE_DARWIN_IEEE_INTERFACE = @HAVE_DARWIN_IEEE_INTERFACE@ +HAVE_FREEBSD_IEEE_INTERFACE = @HAVE_FREEBSD_IEEE_INTERFACE@ +HAVE_GNUM68K_IEEE_INTERFACE = @HAVE_GNUM68K_IEEE_INTERFACE@ +HAVE_GNUPPC_IEEE_INTERFACE = @HAVE_GNUPPC_IEEE_INTERFACE@ +HAVE_GNUSPARC_IEEE_INTERFACE = @HAVE_GNUSPARC_IEEE_INTERFACE@ +HAVE_GNUX86_IEEE_INTERFACE = @HAVE_GNUX86_IEEE_INTERFACE@ +HAVE_HPUX11_IEEE_INTERFACE = @HAVE_HPUX11_IEEE_INTERFACE@ +HAVE_HPUX_IEEE_INTERFACE = @HAVE_HPUX_IEEE_INTERFACE@ +HAVE_IRIX_IEEE_INTERFACE = @HAVE_IRIX_IEEE_INTERFACE@ +HAVE_NETBSD_IEEE_INTERFACE = @HAVE_NETBSD_IEEE_INTERFACE@ +HAVE_OPENBSD_IEEE_INTERFACE = @HAVE_OPENBSD_IEEE_INTERFACE@ +HAVE_OS2EMX_IEEE_INTERFACE = @HAVE_OS2EMX_IEEE_INTERFACE@ +HAVE_SOLARIS_IEEE_INTERFACE = @HAVE_SOLARIS_IEEE_INTERFACE@ +HAVE_SUNOS4_IEEE_INTERFACE = @HAVE_SUNOS4_IEEE_INTERFACE@ +HAVE_TRU64_IEEE_INTERFACE = @HAVE_TRU64_IEEE_INTERFACE@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBM = @LIBM@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +pkginclude_HEADERS = gsl_const.h gsl_const_cgs.h gsl_const_mks.h gsl_const_cgsm.h gsl_const_mksa.h gsl_const_num.h +AM_CPPFLAGS = -I$(top_srcdir) +TESTS = $(check_PROGRAMS) +test_SOURCES = test.c +test_LDADD = ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu const/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu const/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) $(EXTRA_test_DEPENDENCIES) + @rm -f test$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_OBJECTS) $(test_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test.Po@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-pkgincludeHEADERS: $(pkginclude_HEADERS) + @$(NORMAL_INSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \ + done + +uninstall-pkgincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + else \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_PROGRAMS) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +test.log: test$(EXEEXT) + @p='test$(EXEEXT)'; \ + b='test'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +@am__EXEEXT_TRUE@.test$(EXEEXT).log: +@am__EXEEXT_TRUE@ @p='$<'; \ +@am__EXEEXT_TRUE@ $(am__set_b); \ +@am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +@am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ +@am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +@am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-am +all-am: Makefile $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(pkgincludedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ + mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-pkgincludeHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-pkgincludeHEADERS + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool cscopelist-am \ + ctags ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-pkgincludeHEADERS install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am recheck tags tags-am uninstall \ + uninstall-am uninstall-pkgincludeHEADERS + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gsl-2.5/const/TODO b/gsl-2.5/const/TODO new file mode 100644 index 00000000..3fa24915 --- /dev/null +++ b/gsl-2.5/const/TODO @@ -0,0 +1,4 @@ +# -*- org -*- +#+CATEGORY: const + +could add RADIATION_DENSITY_CONSTANT (7.56591e-16) /* J m-3 K-4 */ diff --git a/gsl-2.5/const/gsl_const.h b/gsl-2.5/const/gsl_const.h new file mode 100644 index 00000000..5d749dc5 --- /dev/null +++ b/gsl-2.5/const/gsl_const.h @@ -0,0 +1,31 @@ +/* const/gsl_const.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2004, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_CONST__ +#define __GSL_CONST__ + +#include + +#include +#include + +#include +#include + +#endif /* __GSL_CONST__ */ diff --git a/gsl-2.5/const/gsl_const_cgs.h b/gsl-2.5/const/gsl_const_cgs.h new file mode 100644 index 00000000..ab95b7b0 --- /dev/null +++ b/gsl-2.5/const/gsl_const_cgs.h @@ -0,0 +1,116 @@ +/* const/gsl_const_cgs.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, + * 2006, 2007, 2008, 2009 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_CONST_CGS__ +#define __GSL_CONST_CGS__ + +#define GSL_CONST_CGS_SPEED_OF_LIGHT (2.99792458e10) /* cm / s */ +#define GSL_CONST_CGS_GRAVITATIONAL_CONSTANT (6.673e-8) /* cm^3 / g s^2 */ +#define GSL_CONST_CGS_PLANCKS_CONSTANT_H (6.62606896e-27) /* g cm^2 / s */ +#define GSL_CONST_CGS_PLANCKS_CONSTANT_HBAR (1.05457162825e-27) /* g cm^2 / s */ +#define GSL_CONST_CGS_ASTRONOMICAL_UNIT (1.49597870691e13) /* cm */ +#define GSL_CONST_CGS_LIGHT_YEAR (9.46053620707e17) /* cm */ +#define GSL_CONST_CGS_PARSEC (3.08567758135e18) /* cm */ +#define GSL_CONST_CGS_GRAV_ACCEL (9.80665e2) /* cm / s^2 */ +#define GSL_CONST_CGS_ELECTRON_VOLT (1.602176487e-12) /* g cm^2 / s^2 */ +#define GSL_CONST_CGS_MASS_ELECTRON (9.10938188e-28) /* g */ +#define GSL_CONST_CGS_MASS_MUON (1.88353109e-25) /* g */ +#define GSL_CONST_CGS_MASS_PROTON (1.67262158e-24) /* g */ +#define GSL_CONST_CGS_MASS_NEUTRON (1.67492716e-24) /* g */ +#define GSL_CONST_CGS_RYDBERG (2.17987196968e-11) /* g cm^2 / s^2 */ +#define GSL_CONST_CGS_BOLTZMANN (1.3806504e-16) /* g cm^2 / K s^2 */ +#define GSL_CONST_CGS_MOLAR_GAS (8.314472e7) /* g cm^2 / K mol s^2 */ +#define GSL_CONST_CGS_STANDARD_GAS_VOLUME (2.2710981e4) /* cm^3 / mol */ +#define GSL_CONST_CGS_MINUTE (6e1) /* s */ +#define GSL_CONST_CGS_HOUR (3.6e3) /* s */ +#define GSL_CONST_CGS_DAY (8.64e4) /* s */ +#define GSL_CONST_CGS_WEEK (6.048e5) /* s */ +#define GSL_CONST_CGS_INCH (2.54e0) /* cm */ +#define GSL_CONST_CGS_FOOT (3.048e1) /* cm */ +#define GSL_CONST_CGS_YARD (9.144e1) /* cm */ +#define GSL_CONST_CGS_MILE (1.609344e5) /* cm */ +#define GSL_CONST_CGS_NAUTICAL_MILE (1.852e5) /* cm */ +#define GSL_CONST_CGS_FATHOM (1.8288e2) /* cm */ +#define GSL_CONST_CGS_MIL (2.54e-3) /* cm */ +#define GSL_CONST_CGS_POINT (3.52777777778e-2) /* cm */ +#define GSL_CONST_CGS_TEXPOINT (3.51459803515e-2) /* cm */ +#define GSL_CONST_CGS_MICRON (1e-4) /* cm */ +#define GSL_CONST_CGS_ANGSTROM (1e-8) /* cm */ +#define GSL_CONST_CGS_HECTARE (1e8) /* cm^2 */ +#define GSL_CONST_CGS_ACRE (4.04685642241e7) /* cm^2 */ +#define GSL_CONST_CGS_BARN (1e-24) /* cm^2 */ +#define GSL_CONST_CGS_LITER (1e3) /* cm^3 */ +#define GSL_CONST_CGS_US_GALLON (3.78541178402e3) /* cm^3 */ +#define GSL_CONST_CGS_QUART (9.46352946004e2) /* cm^3 */ +#define GSL_CONST_CGS_PINT (4.73176473002e2) /* cm^3 */ +#define GSL_CONST_CGS_CUP (2.36588236501e2) /* cm^3 */ +#define GSL_CONST_CGS_FLUID_OUNCE (2.95735295626e1) /* cm^3 */ +#define GSL_CONST_CGS_TABLESPOON (1.47867647813e1) /* cm^3 */ +#define GSL_CONST_CGS_TEASPOON (4.92892159375e0) /* cm^3 */ +#define GSL_CONST_CGS_CANADIAN_GALLON (4.54609e3) /* cm^3 */ +#define GSL_CONST_CGS_UK_GALLON (4.546092e3) /* cm^3 */ +#define GSL_CONST_CGS_MILES_PER_HOUR (4.4704e1) /* cm / s */ +#define GSL_CONST_CGS_KILOMETERS_PER_HOUR (2.77777777778e1) /* cm / s */ +#define GSL_CONST_CGS_KNOT (5.14444444444e1) /* cm / s */ +#define GSL_CONST_CGS_POUND_MASS (4.5359237e2) /* g */ +#define GSL_CONST_CGS_OUNCE_MASS (2.8349523125e1) /* g */ +#define GSL_CONST_CGS_TON (9.0718474e5) /* g */ +#define GSL_CONST_CGS_METRIC_TON (1e6) /* g */ +#define GSL_CONST_CGS_UK_TON (1.0160469088e6) /* g */ +#define GSL_CONST_CGS_TROY_OUNCE (3.1103475e1) /* g */ +#define GSL_CONST_CGS_CARAT (2e-1) /* g */ +#define GSL_CONST_CGS_UNIFIED_ATOMIC_MASS (1.660538782e-24) /* g */ +#define GSL_CONST_CGS_GRAM_FORCE (9.80665e2) /* cm g / s^2 */ +#define GSL_CONST_CGS_POUND_FORCE (4.44822161526e5) /* cm g / s^2 */ +#define GSL_CONST_CGS_KILOPOUND_FORCE (4.44822161526e8) /* cm g / s^2 */ +#define GSL_CONST_CGS_POUNDAL (1.38255e4) /* cm g / s^2 */ +#define GSL_CONST_CGS_CALORIE (4.1868e7) /* g cm^2 / s^2 */ +#define GSL_CONST_CGS_BTU (1.05505585262e10) /* g cm^2 / s^2 */ +#define GSL_CONST_CGS_THERM (1.05506e15) /* g cm^2 / s^2 */ +#define GSL_CONST_CGS_HORSEPOWER (7.457e9) /* g cm^2 / s^3 */ +#define GSL_CONST_CGS_BAR (1e6) /* g / cm s^2 */ +#define GSL_CONST_CGS_STD_ATMOSPHERE (1.01325e6) /* g / cm s^2 */ +#define GSL_CONST_CGS_TORR (1.33322368421e3) /* g / cm s^2 */ +#define GSL_CONST_CGS_METER_OF_MERCURY (1.33322368421e6) /* g / cm s^2 */ +#define GSL_CONST_CGS_INCH_OF_MERCURY (3.38638815789e4) /* g / cm s^2 */ +#define GSL_CONST_CGS_INCH_OF_WATER (2.490889e3) /* g / cm s^2 */ +#define GSL_CONST_CGS_PSI (6.89475729317e4) /* g / cm s^2 */ +#define GSL_CONST_CGS_POISE (1e0) /* g / cm s */ +#define GSL_CONST_CGS_STOKES (1e0) /* cm^2 / s */ +#define GSL_CONST_CGS_STILB (1e0) /* cd / cm^2 */ +#define GSL_CONST_CGS_LUMEN (1e0) /* cd sr */ +#define GSL_CONST_CGS_LUX (1e-4) /* cd sr / cm^2 */ +#define GSL_CONST_CGS_PHOT (1e0) /* cd sr / cm^2 */ +#define GSL_CONST_CGS_FOOTCANDLE (1.076e-3) /* cd sr / cm^2 */ +#define GSL_CONST_CGS_LAMBERT (1e0) /* cd sr / cm^2 */ +#define GSL_CONST_CGS_FOOTLAMBERT (1.07639104e-3) /* cd sr / cm^2 */ +#define GSL_CONST_CGS_CURIE (3.7e10) /* 1 / s */ +#define GSL_CONST_CGS_ROENTGEN (2.58e-7) /* A s / g */ +#define GSL_CONST_CGS_RAD (1e2) /* cm^2 / s^2 */ +#define GSL_CONST_CGS_SOLAR_MASS (1.98892e33) /* g */ +#define GSL_CONST_CGS_BOHR_RADIUS (5.291772083e-9) /* cm */ +#define GSL_CONST_CGS_NEWTON (1e5) /* cm g / s^2 */ +#define GSL_CONST_CGS_DYNE (1e0) /* cm g / s^2 */ +#define GSL_CONST_CGS_JOULE (1e7) /* g cm^2 / s^2 */ +#define GSL_CONST_CGS_ERG (1e0) /* g cm^2 / s^2 */ +#define GSL_CONST_CGS_STEFAN_BOLTZMANN_CONSTANT (5.67040047374e-5) /* g / K^4 s^3 */ +#define GSL_CONST_CGS_THOMSON_CROSS_SECTION (6.65245893699e-25) /* cm^2 */ + +#endif /* __GSL_CONST_CGS__ */ diff --git a/gsl-2.5/const/gsl_const_cgsm.h b/gsl-2.5/const/gsl_const_cgsm.h new file mode 100644 index 00000000..2047e5ed --- /dev/null +++ b/gsl-2.5/const/gsl_const_cgsm.h @@ -0,0 +1,122 @@ +/* const/gsl_const_cgsm.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, + * 2006, 2007, 2008, 2009 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_CONST_CGSM__ +#define __GSL_CONST_CGSM__ + +#define GSL_CONST_CGSM_SPEED_OF_LIGHT (2.99792458e10) /* cm / s */ +#define GSL_CONST_CGSM_GRAVITATIONAL_CONSTANT (6.673e-8) /* cm^3 / g s^2 */ +#define GSL_CONST_CGSM_PLANCKS_CONSTANT_H (6.62606896e-27) /* g cm^2 / s */ +#define GSL_CONST_CGSM_PLANCKS_CONSTANT_HBAR (1.05457162825e-27) /* g cm^2 / s */ +#define GSL_CONST_CGSM_ASTRONOMICAL_UNIT (1.49597870691e13) /* cm */ +#define GSL_CONST_CGSM_LIGHT_YEAR (9.46053620707e17) /* cm */ +#define GSL_CONST_CGSM_PARSEC (3.08567758135e18) /* cm */ +#define GSL_CONST_CGSM_GRAV_ACCEL (9.80665e2) /* cm / s^2 */ +#define GSL_CONST_CGSM_ELECTRON_VOLT (1.602176487e-12) /* g cm^2 / s^2 */ +#define GSL_CONST_CGSM_MASS_ELECTRON (9.10938188e-28) /* g */ +#define GSL_CONST_CGSM_MASS_MUON (1.88353109e-25) /* g */ +#define GSL_CONST_CGSM_MASS_PROTON (1.67262158e-24) /* g */ +#define GSL_CONST_CGSM_MASS_NEUTRON (1.67492716e-24) /* g */ +#define GSL_CONST_CGSM_RYDBERG (2.17987196968e-11) /* g cm^2 / s^2 */ +#define GSL_CONST_CGSM_BOLTZMANN (1.3806504e-16) /* g cm^2 / K s^2 */ +#define GSL_CONST_CGSM_MOLAR_GAS (8.314472e7) /* g cm^2 / K mol s^2 */ +#define GSL_CONST_CGSM_STANDARD_GAS_VOLUME (2.2710981e4) /* cm^3 / mol */ +#define GSL_CONST_CGSM_MINUTE (6e1) /* s */ +#define GSL_CONST_CGSM_HOUR (3.6e3) /* s */ +#define GSL_CONST_CGSM_DAY (8.64e4) /* s */ +#define GSL_CONST_CGSM_WEEK (6.048e5) /* s */ +#define GSL_CONST_CGSM_INCH (2.54e0) /* cm */ +#define GSL_CONST_CGSM_FOOT (3.048e1) /* cm */ +#define GSL_CONST_CGSM_YARD (9.144e1) /* cm */ +#define GSL_CONST_CGSM_MILE (1.609344e5) /* cm */ +#define GSL_CONST_CGSM_NAUTICAL_MILE (1.852e5) /* cm */ +#define GSL_CONST_CGSM_FATHOM (1.8288e2) /* cm */ +#define GSL_CONST_CGSM_MIL (2.54e-3) /* cm */ +#define GSL_CONST_CGSM_POINT (3.52777777778e-2) /* cm */ +#define GSL_CONST_CGSM_TEXPOINT (3.51459803515e-2) /* cm */ +#define GSL_CONST_CGSM_MICRON (1e-4) /* cm */ +#define GSL_CONST_CGSM_ANGSTROM (1e-8) /* cm */ +#define GSL_CONST_CGSM_HECTARE (1e8) /* cm^2 */ +#define GSL_CONST_CGSM_ACRE (4.04685642241e7) /* cm^2 */ +#define GSL_CONST_CGSM_BARN (1e-24) /* cm^2 */ +#define GSL_CONST_CGSM_LITER (1e3) /* cm^3 */ +#define GSL_CONST_CGSM_US_GALLON (3.78541178402e3) /* cm^3 */ +#define GSL_CONST_CGSM_QUART (9.46352946004e2) /* cm^3 */ +#define GSL_CONST_CGSM_PINT (4.73176473002e2) /* cm^3 */ +#define GSL_CONST_CGSM_CUP (2.36588236501e2) /* cm^3 */ +#define GSL_CONST_CGSM_FLUID_OUNCE (2.95735295626e1) /* cm^3 */ +#define GSL_CONST_CGSM_TABLESPOON (1.47867647813e1) /* cm^3 */ +#define GSL_CONST_CGSM_TEASPOON (4.92892159375e0) /* cm^3 */ +#define GSL_CONST_CGSM_CANADIAN_GALLON (4.54609e3) /* cm^3 */ +#define GSL_CONST_CGSM_UK_GALLON (4.546092e3) /* cm^3 */ +#define GSL_CONST_CGSM_MILES_PER_HOUR (4.4704e1) /* cm / s */ +#define GSL_CONST_CGSM_KILOMETERS_PER_HOUR (2.77777777778e1) /* cm / s */ +#define GSL_CONST_CGSM_KNOT (5.14444444444e1) /* cm / s */ +#define GSL_CONST_CGSM_POUND_MASS (4.5359237e2) /* g */ +#define GSL_CONST_CGSM_OUNCE_MASS (2.8349523125e1) /* g */ +#define GSL_CONST_CGSM_TON (9.0718474e5) /* g */ +#define GSL_CONST_CGSM_METRIC_TON (1e6) /* g */ +#define GSL_CONST_CGSM_UK_TON (1.0160469088e6) /* g */ +#define GSL_CONST_CGSM_TROY_OUNCE (3.1103475e1) /* g */ +#define GSL_CONST_CGSM_CARAT (2e-1) /* g */ +#define GSL_CONST_CGSM_UNIFIED_ATOMIC_MASS (1.660538782e-24) /* g */ +#define GSL_CONST_CGSM_GRAM_FORCE (9.80665e2) /* cm g / s^2 */ +#define GSL_CONST_CGSM_POUND_FORCE (4.44822161526e5) /* cm g / s^2 */ +#define GSL_CONST_CGSM_KILOPOUND_FORCE (4.44822161526e8) /* cm g / s^2 */ +#define GSL_CONST_CGSM_POUNDAL (1.38255e4) /* cm g / s^2 */ +#define GSL_CONST_CGSM_CALORIE (4.1868e7) /* g cm^2 / s^2 */ +#define GSL_CONST_CGSM_BTU (1.05505585262e10) /* g cm^2 / s^2 */ +#define GSL_CONST_CGSM_THERM (1.05506e15) /* g cm^2 / s^2 */ +#define GSL_CONST_CGSM_HORSEPOWER (7.457e9) /* g cm^2 / s^3 */ +#define GSL_CONST_CGSM_BAR (1e6) /* g / cm s^2 */ +#define GSL_CONST_CGSM_STD_ATMOSPHERE (1.01325e6) /* g / cm s^2 */ +#define GSL_CONST_CGSM_TORR (1.33322368421e3) /* g / cm s^2 */ +#define GSL_CONST_CGSM_METER_OF_MERCURY (1.33322368421e6) /* g / cm s^2 */ +#define GSL_CONST_CGSM_INCH_OF_MERCURY (3.38638815789e4) /* g / cm s^2 */ +#define GSL_CONST_CGSM_INCH_OF_WATER (2.490889e3) /* g / cm s^2 */ +#define GSL_CONST_CGSM_PSI (6.89475729317e4) /* g / cm s^2 */ +#define GSL_CONST_CGSM_POISE (1e0) /* g / cm s */ +#define GSL_CONST_CGSM_STOKES (1e0) /* cm^2 / s */ +#define GSL_CONST_CGSM_STILB (1e0) /* cd / cm^2 */ +#define GSL_CONST_CGSM_LUMEN (1e0) /* cd sr */ +#define GSL_CONST_CGSM_LUX (1e-4) /* cd sr / cm^2 */ +#define GSL_CONST_CGSM_PHOT (1e0) /* cd sr / cm^2 */ +#define GSL_CONST_CGSM_FOOTCANDLE (1.076e-3) /* cd sr / cm^2 */ +#define GSL_CONST_CGSM_LAMBERT (1e0) /* cd sr / cm^2 */ +#define GSL_CONST_CGSM_FOOTLAMBERT (1.07639104e-3) /* cd sr / cm^2 */ +#define GSL_CONST_CGSM_CURIE (3.7e10) /* 1 / s */ +#define GSL_CONST_CGSM_ROENTGEN (2.58e-8) /* abamp s / g */ +#define GSL_CONST_CGSM_RAD (1e2) /* cm^2 / s^2 */ +#define GSL_CONST_CGSM_SOLAR_MASS (1.98892e33) /* g */ +#define GSL_CONST_CGSM_BOHR_RADIUS (5.291772083e-9) /* cm */ +#define GSL_CONST_CGSM_NEWTON (1e5) /* cm g / s^2 */ +#define GSL_CONST_CGSM_DYNE (1e0) /* cm g / s^2 */ +#define GSL_CONST_CGSM_JOULE (1e7) /* g cm^2 / s^2 */ +#define GSL_CONST_CGSM_ERG (1e0) /* g cm^2 / s^2 */ +#define GSL_CONST_CGSM_STEFAN_BOLTZMANN_CONSTANT (5.67040047374e-5) /* g / K^4 s^3 */ +#define GSL_CONST_CGSM_THOMSON_CROSS_SECTION (6.65245893699e-25) /* cm^2 */ +#define GSL_CONST_CGSM_BOHR_MAGNETON (9.27400899e-21) /* abamp cm^2 */ +#define GSL_CONST_CGSM_NUCLEAR_MAGNETON (5.05078317e-24) /* abamp cm^2 */ +#define GSL_CONST_CGSM_ELECTRON_MAGNETIC_MOMENT (9.28476362e-21) /* abamp cm^2 */ +#define GSL_CONST_CGSM_PROTON_MAGNETIC_MOMENT (1.410606633e-23) /* abamp cm^2 */ +#define GSL_CONST_CGSM_FARADAY (9.64853429775e3) /* abamp s / mol */ +#define GSL_CONST_CGSM_ELECTRON_CHARGE (1.602176487e-20) /* abamp s */ + +#endif /* __GSL_CONST_CGSM__ */ diff --git a/gsl-2.5/const/gsl_const_mks.h b/gsl-2.5/const/gsl_const_mks.h new file mode 100644 index 00000000..bc60e2ac --- /dev/null +++ b/gsl-2.5/const/gsl_const_mks.h @@ -0,0 +1,126 @@ +/* const/gsl_const_mks.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, + * 2006, 2007, 2008, 2009 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_CONST_MKS__ +#define __GSL_CONST_MKS__ + +#define GSL_CONST_MKS_SPEED_OF_LIGHT (2.99792458e8) /* m / s */ +#define GSL_CONST_MKS_GRAVITATIONAL_CONSTANT (6.673e-11) /* m^3 / kg s^2 */ +#define GSL_CONST_MKS_PLANCKS_CONSTANT_H (6.62606896e-34) /* kg m^2 / s */ +#define GSL_CONST_MKS_PLANCKS_CONSTANT_HBAR (1.05457162825e-34) /* kg m^2 / s */ +#define GSL_CONST_MKS_ASTRONOMICAL_UNIT (1.49597870691e11) /* m */ +#define GSL_CONST_MKS_LIGHT_YEAR (9.46053620707e15) /* m */ +#define GSL_CONST_MKS_PARSEC (3.08567758135e16) /* m */ +#define GSL_CONST_MKS_GRAV_ACCEL (9.80665e0) /* m / s^2 */ +#define GSL_CONST_MKS_ELECTRON_VOLT (1.602176487e-19) /* kg m^2 / s^2 */ +#define GSL_CONST_MKS_MASS_ELECTRON (9.10938188e-31) /* kg */ +#define GSL_CONST_MKS_MASS_MUON (1.88353109e-28) /* kg */ +#define GSL_CONST_MKS_MASS_PROTON (1.67262158e-27) /* kg */ +#define GSL_CONST_MKS_MASS_NEUTRON (1.67492716e-27) /* kg */ +#define GSL_CONST_MKS_RYDBERG (2.17987196968e-18) /* kg m^2 / s^2 */ +#define GSL_CONST_MKS_BOLTZMANN (1.3806504e-23) /* kg m^2 / K s^2 */ +#define GSL_CONST_MKS_MOLAR_GAS (8.314472e0) /* kg m^2 / K mol s^2 */ +#define GSL_CONST_MKS_STANDARD_GAS_VOLUME (2.2710981e-2) /* m^3 / mol */ +#define GSL_CONST_MKS_MINUTE (6e1) /* s */ +#define GSL_CONST_MKS_HOUR (3.6e3) /* s */ +#define GSL_CONST_MKS_DAY (8.64e4) /* s */ +#define GSL_CONST_MKS_WEEK (6.048e5) /* s */ +#define GSL_CONST_MKS_INCH (2.54e-2) /* m */ +#define GSL_CONST_MKS_FOOT (3.048e-1) /* m */ +#define GSL_CONST_MKS_YARD (9.144e-1) /* m */ +#define GSL_CONST_MKS_MILE (1.609344e3) /* m */ +#define GSL_CONST_MKS_NAUTICAL_MILE (1.852e3) /* m */ +#define GSL_CONST_MKS_FATHOM (1.8288e0) /* m */ +#define GSL_CONST_MKS_MIL (2.54e-5) /* m */ +#define GSL_CONST_MKS_POINT (3.52777777778e-4) /* m */ +#define GSL_CONST_MKS_TEXPOINT (3.51459803515e-4) /* m */ +#define GSL_CONST_MKS_MICRON (1e-6) /* m */ +#define GSL_CONST_MKS_ANGSTROM (1e-10) /* m */ +#define GSL_CONST_MKS_HECTARE (1e4) /* m^2 */ +#define GSL_CONST_MKS_ACRE (4.04685642241e3) /* m^2 */ +#define GSL_CONST_MKS_BARN (1e-28) /* m^2 */ +#define GSL_CONST_MKS_LITER (1e-3) /* m^3 */ +#define GSL_CONST_MKS_US_GALLON (3.78541178402e-3) /* m^3 */ +#define GSL_CONST_MKS_QUART (9.46352946004e-4) /* m^3 */ +#define GSL_CONST_MKS_PINT (4.73176473002e-4) /* m^3 */ +#define GSL_CONST_MKS_CUP (2.36588236501e-4) /* m^3 */ +#define GSL_CONST_MKS_FLUID_OUNCE (2.95735295626e-5) /* m^3 */ +#define GSL_CONST_MKS_TABLESPOON (1.47867647813e-5) /* m^3 */ +#define GSL_CONST_MKS_TEASPOON (4.92892159375e-6) /* m^3 */ +#define GSL_CONST_MKS_CANADIAN_GALLON (4.54609e-3) /* m^3 */ +#define GSL_CONST_MKS_UK_GALLON (4.546092e-3) /* m^3 */ +#define GSL_CONST_MKS_MILES_PER_HOUR (4.4704e-1) /* m / s */ +#define GSL_CONST_MKS_KILOMETERS_PER_HOUR (2.77777777778e-1) /* m / s */ +#define GSL_CONST_MKS_KNOT (5.14444444444e-1) /* m / s */ +#define GSL_CONST_MKS_POUND_MASS (4.5359237e-1) /* kg */ +#define GSL_CONST_MKS_OUNCE_MASS (2.8349523125e-2) /* kg */ +#define GSL_CONST_MKS_TON (9.0718474e2) /* kg */ +#define GSL_CONST_MKS_METRIC_TON (1e3) /* kg */ +#define GSL_CONST_MKS_UK_TON (1.0160469088e3) /* kg */ +#define GSL_CONST_MKS_TROY_OUNCE (3.1103475e-2) /* kg */ +#define GSL_CONST_MKS_CARAT (2e-4) /* kg */ +#define GSL_CONST_MKS_UNIFIED_ATOMIC_MASS (1.660538782e-27) /* kg */ +#define GSL_CONST_MKS_GRAM_FORCE (9.80665e-3) /* kg m / s^2 */ +#define GSL_CONST_MKS_POUND_FORCE (4.44822161526e0) /* kg m / s^2 */ +#define GSL_CONST_MKS_KILOPOUND_FORCE (4.44822161526e3) /* kg m / s^2 */ +#define GSL_CONST_MKS_POUNDAL (1.38255e-1) /* kg m / s^2 */ +#define GSL_CONST_MKS_CALORIE (4.1868e0) /* kg m^2 / s^2 */ +#define GSL_CONST_MKS_BTU (1.05505585262e3) /* kg m^2 / s^2 */ +#define GSL_CONST_MKS_THERM (1.05506e8) /* kg m^2 / s^2 */ +#define GSL_CONST_MKS_HORSEPOWER (7.457e2) /* kg m^2 / s^3 */ +#define GSL_CONST_MKS_BAR (1e5) /* kg / m s^2 */ +#define GSL_CONST_MKS_STD_ATMOSPHERE (1.01325e5) /* kg / m s^2 */ +#define GSL_CONST_MKS_TORR (1.33322368421e2) /* kg / m s^2 */ +#define GSL_CONST_MKS_METER_OF_MERCURY (1.33322368421e5) /* kg / m s^2 */ +#define GSL_CONST_MKS_INCH_OF_MERCURY (3.38638815789e3) /* kg / m s^2 */ +#define GSL_CONST_MKS_INCH_OF_WATER (2.490889e2) /* kg / m s^2 */ +#define GSL_CONST_MKS_PSI (6.89475729317e3) /* kg / m s^2 */ +#define GSL_CONST_MKS_POISE (1e-1) /* kg m^-1 s^-1 */ +#define GSL_CONST_MKS_STOKES (1e-4) /* m^2 / s */ +#define GSL_CONST_MKS_STILB (1e4) /* cd / m^2 */ +#define GSL_CONST_MKS_LUMEN (1e0) /* cd sr */ +#define GSL_CONST_MKS_LUX (1e0) /* cd sr / m^2 */ +#define GSL_CONST_MKS_PHOT (1e4) /* cd sr / m^2 */ +#define GSL_CONST_MKS_FOOTCANDLE (1.076e1) /* cd sr / m^2 */ +#define GSL_CONST_MKS_LAMBERT (1e4) /* cd sr / m^2 */ +#define GSL_CONST_MKS_FOOTLAMBERT (1.07639104e1) /* cd sr / m^2 */ +#define GSL_CONST_MKS_CURIE (3.7e10) /* 1 / s */ +#define GSL_CONST_MKS_ROENTGEN (2.58e-4) /* A s / kg */ +#define GSL_CONST_MKS_RAD (1e-2) /* m^2 / s^2 */ +#define GSL_CONST_MKS_SOLAR_MASS (1.98892e30) /* kg */ +#define GSL_CONST_MKS_BOHR_RADIUS (5.291772083e-11) /* m */ +#define GSL_CONST_MKS_NEWTON (1e0) /* kg m / s^2 */ +#define GSL_CONST_MKS_DYNE (1e-5) /* kg m / s^2 */ +#define GSL_CONST_MKS_JOULE (1e0) /* kg m^2 / s^2 */ +#define GSL_CONST_MKS_ERG (1e-7) /* kg m^2 / s^2 */ +#define GSL_CONST_MKS_STEFAN_BOLTZMANN_CONSTANT (5.67040047374e-8) /* kg / K^4 s^3 */ +#define GSL_CONST_MKS_THOMSON_CROSS_SECTION (6.65245893699e-29) /* m^2 */ +#define GSL_CONST_MKS_BOHR_MAGNETON (9.27400899e-24) /* A m^2 */ +#define GSL_CONST_MKS_NUCLEAR_MAGNETON (5.05078317e-27) /* A m^2 */ +#define GSL_CONST_MKS_ELECTRON_MAGNETIC_MOMENT (9.28476362e-24) /* A m^2 */ +#define GSL_CONST_MKS_PROTON_MAGNETIC_MOMENT (1.410606633e-26) /* A m^2 */ +#define GSL_CONST_MKS_FARADAY (9.64853429775e4) /* A s / mol */ +#define GSL_CONST_MKS_ELECTRON_CHARGE (1.602176487e-19) /* A s */ +#define GSL_CONST_MKS_VACUUM_PERMITTIVITY (8.854187817e-12) /* A^2 s^4 / kg m^3 */ +#define GSL_CONST_MKS_VACUUM_PERMEABILITY (1.25663706144e-6) /* kg m / A^2 s^2 */ +#define GSL_CONST_MKS_DEBYE (3.33564095198e-30) /* A s^2 / m^2 */ +#define GSL_CONST_MKS_GAUSS (1e-4) /* kg / A s^2 */ + +#endif /* __GSL_CONST_MKS__ */ diff --git a/gsl-2.5/const/gsl_const_mksa.h b/gsl-2.5/const/gsl_const_mksa.h new file mode 100644 index 00000000..5d91d1ca --- /dev/null +++ b/gsl-2.5/const/gsl_const_mksa.h @@ -0,0 +1,126 @@ +/* const/gsl_const_mksa.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, + * 2006, 2007, 2008, 2009 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_CONST_MKSA__ +#define __GSL_CONST_MKSA__ + +#define GSL_CONST_MKSA_SPEED_OF_LIGHT (2.99792458e8) /* m / s */ +#define GSL_CONST_MKSA_GRAVITATIONAL_CONSTANT (6.673e-11) /* m^3 / kg s^2 */ +#define GSL_CONST_MKSA_PLANCKS_CONSTANT_H (6.62606896e-34) /* kg m^2 / s */ +#define GSL_CONST_MKSA_PLANCKS_CONSTANT_HBAR (1.05457162825e-34) /* kg m^2 / s */ +#define GSL_CONST_MKSA_ASTRONOMICAL_UNIT (1.49597870691e11) /* m */ +#define GSL_CONST_MKSA_LIGHT_YEAR (9.46053620707e15) /* m */ +#define GSL_CONST_MKSA_PARSEC (3.08567758135e16) /* m */ +#define GSL_CONST_MKSA_GRAV_ACCEL (9.80665e0) /* m / s^2 */ +#define GSL_CONST_MKSA_ELECTRON_VOLT (1.602176487e-19) /* kg m^2 / s^2 */ +#define GSL_CONST_MKSA_MASS_ELECTRON (9.10938188e-31) /* kg */ +#define GSL_CONST_MKSA_MASS_MUON (1.88353109e-28) /* kg */ +#define GSL_CONST_MKSA_MASS_PROTON (1.67262158e-27) /* kg */ +#define GSL_CONST_MKSA_MASS_NEUTRON (1.67492716e-27) /* kg */ +#define GSL_CONST_MKSA_RYDBERG (2.17987196968e-18) /* kg m^2 / s^2 */ +#define GSL_CONST_MKSA_BOLTZMANN (1.3806504e-23) /* kg m^2 / K s^2 */ +#define GSL_CONST_MKSA_MOLAR_GAS (8.314472e0) /* kg m^2 / K mol s^2 */ +#define GSL_CONST_MKSA_STANDARD_GAS_VOLUME (2.2710981e-2) /* m^3 / mol */ +#define GSL_CONST_MKSA_MINUTE (6e1) /* s */ +#define GSL_CONST_MKSA_HOUR (3.6e3) /* s */ +#define GSL_CONST_MKSA_DAY (8.64e4) /* s */ +#define GSL_CONST_MKSA_WEEK (6.048e5) /* s */ +#define GSL_CONST_MKSA_INCH (2.54e-2) /* m */ +#define GSL_CONST_MKSA_FOOT (3.048e-1) /* m */ +#define GSL_CONST_MKSA_YARD (9.144e-1) /* m */ +#define GSL_CONST_MKSA_MILE (1.609344e3) /* m */ +#define GSL_CONST_MKSA_NAUTICAL_MILE (1.852e3) /* m */ +#define GSL_CONST_MKSA_FATHOM (1.8288e0) /* m */ +#define GSL_CONST_MKSA_MIL (2.54e-5) /* m */ +#define GSL_CONST_MKSA_POINT (3.52777777778e-4) /* m */ +#define GSL_CONST_MKSA_TEXPOINT (3.51459803515e-4) /* m */ +#define GSL_CONST_MKSA_MICRON (1e-6) /* m */ +#define GSL_CONST_MKSA_ANGSTROM (1e-10) /* m */ +#define GSL_CONST_MKSA_HECTARE (1e4) /* m^2 */ +#define GSL_CONST_MKSA_ACRE (4.04685642241e3) /* m^2 */ +#define GSL_CONST_MKSA_BARN (1e-28) /* m^2 */ +#define GSL_CONST_MKSA_LITER (1e-3) /* m^3 */ +#define GSL_CONST_MKSA_US_GALLON (3.78541178402e-3) /* m^3 */ +#define GSL_CONST_MKSA_QUART (9.46352946004e-4) /* m^3 */ +#define GSL_CONST_MKSA_PINT (4.73176473002e-4) /* m^3 */ +#define GSL_CONST_MKSA_CUP (2.36588236501e-4) /* m^3 */ +#define GSL_CONST_MKSA_FLUID_OUNCE (2.95735295626e-5) /* m^3 */ +#define GSL_CONST_MKSA_TABLESPOON (1.47867647813e-5) /* m^3 */ +#define GSL_CONST_MKSA_TEASPOON (4.92892159375e-6) /* m^3 */ +#define GSL_CONST_MKSA_CANADIAN_GALLON (4.54609e-3) /* m^3 */ +#define GSL_CONST_MKSA_UK_GALLON (4.546092e-3) /* m^3 */ +#define GSL_CONST_MKSA_MILES_PER_HOUR (4.4704e-1) /* m / s */ +#define GSL_CONST_MKSA_KILOMETERS_PER_HOUR (2.77777777778e-1) /* m / s */ +#define GSL_CONST_MKSA_KNOT (5.14444444444e-1) /* m / s */ +#define GSL_CONST_MKSA_POUND_MASS (4.5359237e-1) /* kg */ +#define GSL_CONST_MKSA_OUNCE_MASS (2.8349523125e-2) /* kg */ +#define GSL_CONST_MKSA_TON (9.0718474e2) /* kg */ +#define GSL_CONST_MKSA_METRIC_TON (1e3) /* kg */ +#define GSL_CONST_MKSA_UK_TON (1.0160469088e3) /* kg */ +#define GSL_CONST_MKSA_TROY_OUNCE (3.1103475e-2) /* kg */ +#define GSL_CONST_MKSA_CARAT (2e-4) /* kg */ +#define GSL_CONST_MKSA_UNIFIED_ATOMIC_MASS (1.660538782e-27) /* kg */ +#define GSL_CONST_MKSA_GRAM_FORCE (9.80665e-3) /* kg m / s^2 */ +#define GSL_CONST_MKSA_POUND_FORCE (4.44822161526e0) /* kg m / s^2 */ +#define GSL_CONST_MKSA_KILOPOUND_FORCE (4.44822161526e3) /* kg m / s^2 */ +#define GSL_CONST_MKSA_POUNDAL (1.38255e-1) /* kg m / s^2 */ +#define GSL_CONST_MKSA_CALORIE (4.1868e0) /* kg m^2 / s^2 */ +#define GSL_CONST_MKSA_BTU (1.05505585262e3) /* kg m^2 / s^2 */ +#define GSL_CONST_MKSA_THERM (1.05506e8) /* kg m^2 / s^2 */ +#define GSL_CONST_MKSA_HORSEPOWER (7.457e2) /* kg m^2 / s^3 */ +#define GSL_CONST_MKSA_BAR (1e5) /* kg / m s^2 */ +#define GSL_CONST_MKSA_STD_ATMOSPHERE (1.01325e5) /* kg / m s^2 */ +#define GSL_CONST_MKSA_TORR (1.33322368421e2) /* kg / m s^2 */ +#define GSL_CONST_MKSA_METER_OF_MERCURY (1.33322368421e5) /* kg / m s^2 */ +#define GSL_CONST_MKSA_INCH_OF_MERCURY (3.38638815789e3) /* kg / m s^2 */ +#define GSL_CONST_MKSA_INCH_OF_WATER (2.490889e2) /* kg / m s^2 */ +#define GSL_CONST_MKSA_PSI (6.89475729317e3) /* kg / m s^2 */ +#define GSL_CONST_MKSA_POISE (1e-1) /* kg m^-1 s^-1 */ +#define GSL_CONST_MKSA_STOKES (1e-4) /* m^2 / s */ +#define GSL_CONST_MKSA_STILB (1e4) /* cd / m^2 */ +#define GSL_CONST_MKSA_LUMEN (1e0) /* cd sr */ +#define GSL_CONST_MKSA_LUX (1e0) /* cd sr / m^2 */ +#define GSL_CONST_MKSA_PHOT (1e4) /* cd sr / m^2 */ +#define GSL_CONST_MKSA_FOOTCANDLE (1.076e1) /* cd sr / m^2 */ +#define GSL_CONST_MKSA_LAMBERT (1e4) /* cd sr / m^2 */ +#define GSL_CONST_MKSA_FOOTLAMBERT (1.07639104e1) /* cd sr / m^2 */ +#define GSL_CONST_MKSA_CURIE (3.7e10) /* 1 / s */ +#define GSL_CONST_MKSA_ROENTGEN (2.58e-4) /* A s / kg */ +#define GSL_CONST_MKSA_RAD (1e-2) /* m^2 / s^2 */ +#define GSL_CONST_MKSA_SOLAR_MASS (1.98892e30) /* kg */ +#define GSL_CONST_MKSA_BOHR_RADIUS (5.291772083e-11) /* m */ +#define GSL_CONST_MKSA_NEWTON (1e0) /* kg m / s^2 */ +#define GSL_CONST_MKSA_DYNE (1e-5) /* kg m / s^2 */ +#define GSL_CONST_MKSA_JOULE (1e0) /* kg m^2 / s^2 */ +#define GSL_CONST_MKSA_ERG (1e-7) /* kg m^2 / s^2 */ +#define GSL_CONST_MKSA_STEFAN_BOLTZMANN_CONSTANT (5.67040047374e-8) /* kg / K^4 s^3 */ +#define GSL_CONST_MKSA_THOMSON_CROSS_SECTION (6.65245893699e-29) /* m^2 */ +#define GSL_CONST_MKSA_BOHR_MAGNETON (9.27400899e-24) /* A m^2 */ +#define GSL_CONST_MKSA_NUCLEAR_MAGNETON (5.05078317e-27) /* A m^2 */ +#define GSL_CONST_MKSA_ELECTRON_MAGNETIC_MOMENT (9.28476362e-24) /* A m^2 */ +#define GSL_CONST_MKSA_PROTON_MAGNETIC_MOMENT (1.410606633e-26) /* A m^2 */ +#define GSL_CONST_MKSA_FARADAY (9.64853429775e4) /* A s / mol */ +#define GSL_CONST_MKSA_ELECTRON_CHARGE (1.602176487e-19) /* A s */ +#define GSL_CONST_MKSA_VACUUM_PERMITTIVITY (8.854187817e-12) /* A^2 s^4 / kg m^3 */ +#define GSL_CONST_MKSA_VACUUM_PERMEABILITY (1.25663706144e-6) /* kg m / A^2 s^2 */ +#define GSL_CONST_MKSA_DEBYE (3.33564095198e-30) /* A s^2 / m^2 */ +#define GSL_CONST_MKSA_GAUSS (1e-4) /* kg / A s^2 */ + +#endif /* __GSL_CONST_MKSA__ */ diff --git a/gsl-2.5/const/gsl_const_num.h b/gsl-2.5/const/gsl_const_num.h new file mode 100644 index 00000000..385a660f --- /dev/null +++ b/gsl-2.5/const/gsl_const_num.h @@ -0,0 +1,43 @@ +/* const/gsl_const_num.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, + * 2006, 2007, 2008, 2009 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_CONST_NUM__ +#define __GSL_CONST_NUM__ + +#define GSL_CONST_NUM_FINE_STRUCTURE (7.297352533e-3) /* 1 */ +#define GSL_CONST_NUM_AVOGADRO (6.02214199e23) /* 1 / mol */ +#define GSL_CONST_NUM_YOTTA (1e24) /* 1 */ +#define GSL_CONST_NUM_ZETTA (1e21) /* 1 */ +#define GSL_CONST_NUM_EXA (1e18) /* 1 */ +#define GSL_CONST_NUM_PETA (1e15) /* 1 */ +#define GSL_CONST_NUM_TERA (1e12) /* 1 */ +#define GSL_CONST_NUM_GIGA (1e9) /* 1 */ +#define GSL_CONST_NUM_MEGA (1e6) /* 1 */ +#define GSL_CONST_NUM_KILO (1e3) /* 1 */ +#define GSL_CONST_NUM_MILLI (1e-3) /* 1 */ +#define GSL_CONST_NUM_MICRO (1e-6) /* 1 */ +#define GSL_CONST_NUM_NANO (1e-9) /* 1 */ +#define GSL_CONST_NUM_PICO (1e-12) /* 1 */ +#define GSL_CONST_NUM_FEMTO (1e-15) /* 1 */ +#define GSL_CONST_NUM_ATTO (1e-18) /* 1 */ +#define GSL_CONST_NUM_ZEPTO (1e-21) /* 1 */ +#define GSL_CONST_NUM_YOCTO (1e-24) /* 1 */ + +#endif /* __GSL_CONST_NUM__ */ diff --git a/gsl-2.5/const/test b/gsl-2.5/const/test new file mode 100755 index 00000000..252bdb76 Binary files /dev/null and b/gsl-2.5/const/test differ diff --git a/gsl-2.5/const/test-suite.log b/gsl-2.5/const/test-suite.log new file mode 100644 index 00000000..63ae96b9 --- /dev/null +++ b/gsl-2.5/const/test-suite.log @@ -0,0 +1,14 @@ +=================================== + gsl 2.5: const/test-suite.log +=================================== + +# TOTAL: 1 +# PASS: 1 +# SKIP: 0 +# XFAIL: 0 +# FAIL: 0 +# XPASS: 0 +# ERROR: 0 + +.. contents:: :depth: 2 + diff --git a/gsl-2.5/const/test.c b/gsl-2.5/const/test.c new file mode 100644 index 00000000..aa5aa1c7 --- /dev/null +++ b/gsl-2.5/const/test.c @@ -0,0 +1,97 @@ +/* const/test.c + * + * Copyright (C) 2003, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include + +#include + +int +main (void) +{ + gsl_ieee_env_setup (); + + /* Basic check to make sure the header files are functioning */ + + { + double c = GSL_CONST_MKS_SPEED_OF_LIGHT; + double eps = GSL_CONST_MKS_VACUUM_PERMITTIVITY; + double mu = GSL_CONST_MKS_VACUUM_PERMEABILITY; + + gsl_test_rel (c, 1.0/sqrt(eps*mu), 1e-6, "speed of light (mks)"); + } + + { + double ly = GSL_CONST_CGS_LIGHT_YEAR; + double c = GSL_CONST_CGS_SPEED_OF_LIGHT; + double y = 365.2425 * GSL_CONST_CGS_DAY; + + gsl_test_rel (ly, c * y, 1e-6, "light year (cgs)"); + } + + { + double c = GSL_CONST_MKSA_SPEED_OF_LIGHT; + double eps = GSL_CONST_MKSA_VACUUM_PERMITTIVITY; + double mu = GSL_CONST_MKSA_VACUUM_PERMEABILITY; + + gsl_test_rel (c, 1.0/sqrt(eps*mu), 1e-6, "speed of light (mksa)"); + } + + { + double ly = GSL_CONST_CGSM_LIGHT_YEAR; + double c = GSL_CONST_CGSM_SPEED_OF_LIGHT; + double y = 365.2425 * GSL_CONST_CGSM_DAY; + + gsl_test_rel (ly, c * y, 1e-6, "light year (cgsm)"); + } + + { + double micro = GSL_CONST_NUM_MICRO; + double mega = GSL_CONST_NUM_MEGA; + double kilo = GSL_CONST_NUM_KILO; + + gsl_test_rel (mega/kilo, 1/(micro*kilo), 1e-10, "kilo (mega/kilo, 1/(micro*kilo))"); + } + + { + double d = GSL_CONST_MKSA_DEBYE; + double c = GSL_CONST_MKSA_SPEED_OF_LIGHT; + double desu = d * c * 1000.0; + + gsl_test_rel (desu, 1e-18, 1e-10, "debye (esu)"); + } + + { + double k = GSL_CONST_MKSA_BOLTZMANN; + double c = GSL_CONST_MKSA_SPEED_OF_LIGHT; + double h = GSL_CONST_MKSA_PLANCKS_CONSTANT_H; + double s = 2 * pow(M_PI, 5.0) * pow(k, 4.0) / (15 * pow(c, 2.0) * pow(h, 3.0)); + double sigma = GSL_CONST_MKSA_STEFAN_BOLTZMANN_CONSTANT; + + gsl_test_rel(s, sigma, 1e-10, "stefan boltzmann constant"); + } + + + exit (gsl_test_summary ()); +} + diff --git a/gsl-2.5/const/test.log b/gsl-2.5/const/test.log new file mode 100644 index 00000000..60079d67 --- /dev/null +++ b/gsl-2.5/const/test.log @@ -0,0 +1 @@ +Completed [7/7] diff --git a/gsl-2.5/const/test.trs b/gsl-2.5/const/test.trs new file mode 100644 index 00000000..3f0f396c --- /dev/null +++ b/gsl-2.5/const/test.trs @@ -0,0 +1,4 @@ +:test-result: PASS +:global-test-result: PASS +:recheck: no +:copy-in-global-log: no diff --git a/gsl-2.5/depcomp b/gsl-2.5/depcomp new file mode 100755 index 00000000..4ebd5b3a --- /dev/null +++ b/gsl-2.5/depcomp @@ -0,0 +1,791 @@ +#! /bin/sh +# depcomp - compile a program generating dependencies as side-effects + +scriptversion=2013-05-30.07; # UTC + +# Copyright (C) 1999-2013 Free Software Foundation, Inc. + +# 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, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# Originally written by Alexandre Oliva . + +case $1 in + '') + echo "$0: No command. Try '$0 --help' for more information." 1>&2 + exit 1; + ;; + -h | --h*) + cat <<\EOF +Usage: depcomp [--help] [--version] PROGRAM [ARGS] + +Run PROGRAMS ARGS to compile a file, generating dependencies +as side-effects. + +Environment variables: + depmode Dependency tracking mode. + source Source file read by 'PROGRAMS ARGS'. + object Object file output by 'PROGRAMS ARGS'. + DEPDIR directory where to store dependencies. + depfile Dependency file to output. + tmpdepfile Temporary file to use when outputting dependencies. + libtool Whether libtool is used (yes/no). + +Report bugs to . +EOF + exit $? + ;; + -v | --v*) + echo "depcomp $scriptversion" + exit $? + ;; +esac + +# Get the directory component of the given path, and save it in the +# global variables '$dir'. Note that this directory component will +# be either empty or ending with a '/' character. This is deliberate. +set_dir_from () +{ + case $1 in + */*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;; + *) dir=;; + esac +} + +# Get the suffix-stripped basename of the given path, and save it the +# global variable '$base'. +set_base_from () +{ + base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'` +} + +# If no dependency file was actually created by the compiler invocation, +# we still have to create a dummy depfile, to avoid errors with the +# Makefile "include basename.Plo" scheme. +make_dummy_depfile () +{ + echo "#dummy" > "$depfile" +} + +# Factor out some common post-processing of the generated depfile. +# Requires the auxiliary global variable '$tmpdepfile' to be set. +aix_post_process_depfile () +{ + # If the compiler actually managed to produce a dependency file, + # post-process it. + if test -f "$tmpdepfile"; then + # Each line is of the form 'foo.o: dependency.h'. + # Do two passes, one to just change these to + # $object: dependency.h + # and one to simply output + # dependency.h: + # which is needed to avoid the deleted-header problem. + { sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile" + sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile" + } > "$depfile" + rm -f "$tmpdepfile" + else + make_dummy_depfile + fi +} + +# A tabulation character. +tab=' ' +# A newline character. +nl=' +' +# Character ranges might be problematic outside the C locale. +# These definitions help. +upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ +lower=abcdefghijklmnopqrstuvwxyz +digits=0123456789 +alpha=${upper}${lower} + +if test -z "$depmode" || test -z "$source" || test -z "$object"; then + echo "depcomp: Variables source, object and depmode must be set" 1>&2 + exit 1 +fi + +# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. +depfile=${depfile-`echo "$object" | + sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} +tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} + +rm -f "$tmpdepfile" + +# Avoid interferences from the environment. +gccflag= dashmflag= + +# Some modes work just like other modes, but use different flags. We +# parameterize here, but still list the modes in the big case below, +# to make depend.m4 easier to write. Note that we *cannot* use a case +# here, because this file can only contain one case statement. +if test "$depmode" = hp; then + # HP compiler uses -M and no extra arg. + gccflag=-M + depmode=gcc +fi + +if test "$depmode" = dashXmstdout; then + # This is just like dashmstdout with a different argument. + dashmflag=-xM + depmode=dashmstdout +fi + +cygpath_u="cygpath -u -f -" +if test "$depmode" = msvcmsys; then + # This is just like msvisualcpp but w/o cygpath translation. + # Just convert the backslash-escaped backslashes to single forward + # slashes to satisfy depend.m4 + cygpath_u='sed s,\\\\,/,g' + depmode=msvisualcpp +fi + +if test "$depmode" = msvc7msys; then + # This is just like msvc7 but w/o cygpath translation. + # Just convert the backslash-escaped backslashes to single forward + # slashes to satisfy depend.m4 + cygpath_u='sed s,\\\\,/,g' + depmode=msvc7 +fi + +if test "$depmode" = xlc; then + # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information. + gccflag=-qmakedep=gcc,-MF + depmode=gcc +fi + +case "$depmode" in +gcc3) +## gcc 3 implements dependency tracking that does exactly what +## we want. Yay! Note: for some reason libtool 1.4 doesn't like +## it if -MD -MP comes after the -MF stuff. Hmm. +## Unfortunately, FreeBSD c89 acceptance of flags depends upon +## the command line argument order; so add the flags where they +## appear in depend2.am. Note that the slowdown incurred here +## affects only configure: in makefiles, %FASTDEP% shortcuts this. + for arg + do + case $arg in + -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; + *) set fnord "$@" "$arg" ;; + esac + shift # fnord + shift # $arg + done + "$@" + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat + fi + mv "$tmpdepfile" "$depfile" + ;; + +gcc) +## Note that this doesn't just cater to obsosete pre-3.x GCC compilers. +## but also to in-use compilers like IMB xlc/xlC and the HP C compiler. +## (see the conditional assignment to $gccflag above). +## There are various ways to get dependency output from gcc. Here's +## why we pick this rather obscure method: +## - Don't want to use -MD because we'd like the dependencies to end +## up in a subdir. Having to rename by hand is ugly. +## (We might end up doing this anyway to support other compilers.) +## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like +## -MM, not -M (despite what the docs say). Also, it might not be +## supported by the other compilers which use the 'gcc' depmode. +## - Using -M directly means running the compiler twice (even worse +## than renaming). + if test -z "$gccflag"; then + gccflag=-MD, + fi + "$@" -Wp,"$gccflag$tmpdepfile" + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + echo "$object : \\" > "$depfile" + # The second -e expression handles DOS-style file names with drive + # letters. + sed -e 's/^[^:]*: / /' \ + -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" +## This next piece of magic avoids the "deleted header file" problem. +## The problem is that when a header file which appears in a .P file +## is deleted, the dependency causes make to die (because there is +## typically no way to rebuild the header). We avoid this by adding +## dummy dependencies for each header file. Too bad gcc doesn't do +## this for us directly. +## Some versions of gcc put a space before the ':'. On the theory +## that the space means something, we add a space to the output as +## well. hp depmode also adds that space, but also prefixes the VPATH +## to the object. Take care to not repeat it in the output. +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + tr ' ' "$nl" < "$tmpdepfile" \ + | sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \ + | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +hp) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + +sgi) + if test "$libtool" = yes; then + "$@" "-Wp,-MDupdate,$tmpdepfile" + else + "$@" -MDupdate "$tmpdepfile" + fi + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + + if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files + echo "$object : \\" > "$depfile" + # Clip off the initial element (the dependent). Don't try to be + # clever and replace this with sed code, as IRIX sed won't handle + # lines with more than a fixed number of characters (4096 in + # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; + # the IRIX cc adds comments like '#:fec' to the end of the + # dependency line. + tr ' ' "$nl" < "$tmpdepfile" \ + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \ + | tr "$nl" ' ' >> "$depfile" + echo >> "$depfile" + # The second pass generates a dummy entry for each header file. + tr ' ' "$nl" < "$tmpdepfile" \ + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ + >> "$depfile" + else + make_dummy_depfile + fi + rm -f "$tmpdepfile" + ;; + +xlc) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + +aix) + # The C for AIX Compiler uses -M and outputs the dependencies + # in a .u file. In older versions, this file always lives in the + # current directory. Also, the AIX compiler puts '$object:' at the + # start of each line; $object doesn't have directory information. + # Version 6 uses the directory in both cases. + set_dir_from "$object" + set_base_from "$object" + if test "$libtool" = yes; then + tmpdepfile1=$dir$base.u + tmpdepfile2=$base.u + tmpdepfile3=$dir.libs/$base.u + "$@" -Wc,-M + else + tmpdepfile1=$dir$base.u + tmpdepfile2=$dir$base.u + tmpdepfile3=$dir$base.u + "$@" -M + fi + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" + exit $stat + fi + + for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" + do + test -f "$tmpdepfile" && break + done + aix_post_process_depfile + ;; + +tcc) + # tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26 + # FIXME: That version still under development at the moment of writing. + # Make that this statement remains true also for stable, released + # versions. + # It will wrap lines (doesn't matter whether long or short) with a + # trailing '\', as in: + # + # foo.o : \ + # foo.c \ + # foo.h \ + # + # It will put a trailing '\' even on the last line, and will use leading + # spaces rather than leading tabs (at least since its commit 0394caf7 + # "Emit spaces for -MD"). + "$@" -MD -MF "$tmpdepfile" + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + # Each non-empty line is of the form 'foo.o : \' or ' dep.h \'. + # We have to change lines of the first kind to '$object: \'. + sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile" + # And for each line of the second kind, we have to emit a 'dep.h:' + # dummy dependency, to avoid the deleted-header problem. + sed -n -e 's|^ *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile" + rm -f "$tmpdepfile" + ;; + +## The order of this option in the case statement is important, since the +## shell code in configure will try each of these formats in the order +## listed in this file. A plain '-MD' option would be understood by many +## compilers, so we must ensure this comes after the gcc and icc options. +pgcc) + # Portland's C compiler understands '-MD'. + # Will always output deps to 'file.d' where file is the root name of the + # source file under compilation, even if file resides in a subdirectory. + # The object file name does not affect the name of the '.d' file. + # pgcc 10.2 will output + # foo.o: sub/foo.c sub/foo.h + # and will wrap long lines using '\' : + # foo.o: sub/foo.c ... \ + # sub/foo.h ... \ + # ... + set_dir_from "$object" + # Use the source, not the object, to determine the base name, since + # that's sadly what pgcc will do too. + set_base_from "$source" + tmpdepfile=$base.d + + # For projects that build the same source file twice into different object + # files, the pgcc approach of using the *source* file root name can cause + # problems in parallel builds. Use a locking strategy to avoid stomping on + # the same $tmpdepfile. + lockdir=$base.d-lock + trap " + echo '$0: caught signal, cleaning up...' >&2 + rmdir '$lockdir' + exit 1 + " 1 2 13 15 + numtries=100 + i=$numtries + while test $i -gt 0; do + # mkdir is a portable test-and-set. + if mkdir "$lockdir" 2>/dev/null; then + # This process acquired the lock. + "$@" -MD + stat=$? + # Release the lock. + rmdir "$lockdir" + break + else + # If the lock is being held by a different process, wait + # until the winning process is done or we timeout. + while test -d "$lockdir" && test $i -gt 0; do + sleep 1 + i=`expr $i - 1` + done + fi + i=`expr $i - 1` + done + trap - 1 2 13 15 + if test $i -le 0; then + echo "$0: failed to acquire lock after $numtries attempts" >&2 + echo "$0: check lockdir '$lockdir'" >&2 + exit 1 + fi + + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + # Each line is of the form `foo.o: dependent.h', + # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. + # Do two passes, one to just change these to + # `$object: dependent.h' and one to simply `dependent.h:'. + sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" + # Some versions of the HPUX 10.20 sed can't process this invocation + # correctly. Breaking it into two sed invocations is a workaround. + sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \ + | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +hp2) + # The "hp" stanza above does not work with aCC (C++) and HP's ia64 + # compilers, which have integrated preprocessors. The correct option + # to use with these is +Maked; it writes dependencies to a file named + # 'foo.d', which lands next to the object file, wherever that + # happens to be. + # Much of this is similar to the tru64 case; see comments there. + set_dir_from "$object" + set_base_from "$object" + if test "$libtool" = yes; then + tmpdepfile1=$dir$base.d + tmpdepfile2=$dir.libs/$base.d + "$@" -Wc,+Maked + else + tmpdepfile1=$dir$base.d + tmpdepfile2=$dir$base.d + "$@" +Maked + fi + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile1" "$tmpdepfile2" + exit $stat + fi + + for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" + do + test -f "$tmpdepfile" && break + done + if test -f "$tmpdepfile"; then + sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile" + # Add 'dependent.h:' lines. + sed -ne '2,${ + s/^ *// + s/ \\*$// + s/$/:/ + p + }' "$tmpdepfile" >> "$depfile" + else + make_dummy_depfile + fi + rm -f "$tmpdepfile" "$tmpdepfile2" + ;; + +tru64) + # The Tru64 compiler uses -MD to generate dependencies as a side + # effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'. + # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put + # dependencies in 'foo.d' instead, so we check for that too. + # Subdirectories are respected. + set_dir_from "$object" + set_base_from "$object" + + if test "$libtool" = yes; then + # Libtool generates 2 separate objects for the 2 libraries. These + # two compilations output dependencies in $dir.libs/$base.o.d and + # in $dir$base.o.d. We have to check for both files, because + # one of the two compilations can be disabled. We should prefer + # $dir$base.o.d over $dir.libs/$base.o.d because the latter is + # automatically cleaned when .libs/ is deleted, while ignoring + # the former would cause a distcleancheck panic. + tmpdepfile1=$dir$base.o.d # libtool 1.5 + tmpdepfile2=$dir.libs/$base.o.d # Likewise. + tmpdepfile3=$dir.libs/$base.d # Compaq CCC V6.2-504 + "$@" -Wc,-MD + else + tmpdepfile1=$dir$base.d + tmpdepfile2=$dir$base.d + tmpdepfile3=$dir$base.d + "$@" -MD + fi + + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" + exit $stat + fi + + for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" + do + test -f "$tmpdepfile" && break + done + # Same post-processing that is required for AIX mode. + aix_post_process_depfile + ;; + +msvc7) + if test "$libtool" = yes; then + showIncludes=-Wc,-showIncludes + else + showIncludes=-showIncludes + fi + "$@" $showIncludes > "$tmpdepfile" + stat=$? + grep -v '^Note: including file: ' "$tmpdepfile" + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + echo "$object : \\" > "$depfile" + # The first sed program below extracts the file names and escapes + # backslashes for cygpath. The second sed program outputs the file + # name when reading, but also accumulates all include files in the + # hold buffer in order to output them again at the end. This only + # works with sed implementations that can handle large buffers. + sed < "$tmpdepfile" -n ' +/^Note: including file: *\(.*\)/ { + s//\1/ + s/\\/\\\\/g + p +}' | $cygpath_u | sort -u | sed -n ' +s/ /\\ /g +s/\(.*\)/'"$tab"'\1 \\/p +s/.\(.*\) \\/\1:/ +H +$ { + s/.*/'"$tab"'/ + G + p +}' >> "$depfile" + echo >> "$depfile" # make sure the fragment doesn't end with a backslash + rm -f "$tmpdepfile" + ;; + +msvc7msys) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + +#nosideeffect) + # This comment above is used by automake to tell side-effect + # dependency tracking mechanisms from slower ones. + +dashmstdout) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout, regardless of -o. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test "X$1" != 'X--mode=compile'; do + shift + done + shift + fi + + # Remove '-o $object'. + IFS=" " + for arg + do + case $arg in + -o) + shift + ;; + $object) + shift + ;; + *) + set fnord "$@" "$arg" + shift # fnord + shift # $arg + ;; + esac + done + + test -z "$dashmflag" && dashmflag=-M + # Require at least two characters before searching for ':' + # in the target name. This is to cope with DOS-style filenames: + # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise. + "$@" $dashmflag | + sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile" + rm -f "$depfile" + cat < "$tmpdepfile" > "$depfile" + # Some versions of the HPUX 10.20 sed can't process this sed invocation + # correctly. Breaking it into two sed invocations is a workaround. + tr ' ' "$nl" < "$tmpdepfile" \ + | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ + | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +dashXmstdout) + # This case only exists to satisfy depend.m4. It is never actually + # run, as this mode is specially recognized in the preamble. + exit 1 + ;; + +makedepend) + "$@" || exit $? + # Remove any Libtool call + if test "$libtool" = yes; then + while test "X$1" != 'X--mode=compile'; do + shift + done + shift + fi + # X makedepend + shift + cleared=no eat=no + for arg + do + case $cleared in + no) + set ""; shift + cleared=yes ;; + esac + if test $eat = yes; then + eat=no + continue + fi + case "$arg" in + -D*|-I*) + set fnord "$@" "$arg"; shift ;; + # Strip any option that makedepend may not understand. Remove + # the object too, otherwise makedepend will parse it as a source file. + -arch) + eat=yes ;; + -*|$object) + ;; + *) + set fnord "$@" "$arg"; shift ;; + esac + done + obj_suffix=`echo "$object" | sed 's/^.*\././'` + touch "$tmpdepfile" + ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" + rm -f "$depfile" + # makedepend may prepend the VPATH from the source file name to the object. + # No need to regex-escape $object, excess matching of '.' is harmless. + sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile" + # Some versions of the HPUX 10.20 sed can't process the last invocation + # correctly. Breaking it into two sed invocations is a workaround. + sed '1,2d' "$tmpdepfile" \ + | tr ' ' "$nl" \ + | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ + | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" "$tmpdepfile".bak + ;; + +cpp) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test "X$1" != 'X--mode=compile'; do + shift + done + shift + fi + + # Remove '-o $object'. + IFS=" " + for arg + do + case $arg in + -o) + shift + ;; + $object) + shift + ;; + *) + set fnord "$@" "$arg" + shift # fnord + shift # $arg + ;; + esac + done + + "$@" -E \ + | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ + -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ + | sed '$ s: \\$::' > "$tmpdepfile" + rm -f "$depfile" + echo "$object : \\" > "$depfile" + cat < "$tmpdepfile" >> "$depfile" + sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +msvisualcpp) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test "X$1" != 'X--mode=compile'; do + shift + done + shift + fi + + IFS=" " + for arg + do + case "$arg" in + -o) + shift + ;; + $object) + shift + ;; + "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") + set fnord "$@" + shift + shift + ;; + *) + set fnord "$@" "$arg" + shift + shift + ;; + esac + done + "$@" -E 2>/dev/null | + sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" + rm -f "$depfile" + echo "$object : \\" > "$depfile" + sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile" + echo "$tab" >> "$depfile" + sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +msvcmsys) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + +none) + exec "$@" + ;; + +*) + echo "Unknown depmode $depmode" 1>&2 + exit 1 + ;; +esac + +exit 0 + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC" +# time-stamp-end: "; # UTC" +# End: diff --git a/gsl-2.5/deriv/.deps/deriv.Plo b/gsl-2.5/deriv/.deps/deriv.Plo new file mode 100644 index 00000000..25c2ee2f --- /dev/null +++ b/gsl-2.5/deriv/.deps/deriv.Plo @@ -0,0 +1,173 @@ +deriv.lo: deriv.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_deriv.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_deriv.h: diff --git a/gsl-2.5/deriv/.deps/test.Po b/gsl-2.5/deriv/.deps/test.Po new file mode 100644 index 00000000..8fe0895e --- /dev/null +++ b/gsl-2.5/deriv/.deps/test.Po @@ -0,0 +1,178 @@ +test.o: test.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_math.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_deriv.h \ + ../gsl/gsl_errno.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_test.h ../gsl/gsl_ieee_utils.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_deriv.h: + +../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_test.h: + +../gsl/gsl_ieee_utils.h: diff --git a/gsl-2.5/deriv/.libs/libgslderiv.la b/gsl-2.5/deriv/.libs/libgslderiv.la new file mode 120000 index 00000000..58d48305 --- /dev/null +++ b/gsl-2.5/deriv/.libs/libgslderiv.la @@ -0,0 +1 @@ +../libgslderiv.la \ No newline at end of file diff --git a/gsl-2.5/deriv/ChangeLog b/gsl-2.5/deriv/ChangeLog new file mode 100644 index 00000000..53398e08 --- /dev/null +++ b/gsl-2.5/deriv/ChangeLog @@ -0,0 +1,13 @@ +2008-07-03 Brian Gough + + * Makefile.am (INCLUDES): use top_srcdir instead of top_builddir + +2007-08-22 Brian Gough + + * deriv.c (central_deriv): corrected dy term for error in h + (forward_deriv): corrected dy term for error in h + +2004-03-06 Brian Gough + + * reworking API of gsl_diff + diff --git a/gsl-2.5/deriv/Makefile b/gsl-2.5/deriv/Makefile new file mode 100644 index 00000000..bd0dba7e --- /dev/null +++ b/gsl-2.5/deriv/Makefile @@ -0,0 +1,1027 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# deriv/Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + + + + +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/gsl +pkgincludedir = $(includedir)/gsl +pkglibdir = $(libdir)/gsl +pkglibexecdir = $(libexecdir)/gsl +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = x86_64-unknown-linux-gnu +host_triplet = x86_64-unknown-linux-gnu +check_PROGRAMS = test$(EXEEXT) +subdir = deriv +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp \ + $(pkginclude_HEADERS) $(top_srcdir)/test-driver ChangeLog +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +libgslderiv_la_LIBADD = +am_libgslderiv_la_OBJECTS = deriv.lo +libgslderiv_la_OBJECTS = $(am_libgslderiv_la_OBJECTS) +AM_V_lt = $(am__v_lt_$(V)) +am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) +am__v_lt_0 = --silent +am__v_lt_1 = +am_test_OBJECTS = test.$(OBJEXT) +test_OBJECTS = $(am_test_OBJECTS) +test_DEPENDENCIES = libgslderiv.la ../vector/libgslvector.la \ + ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la \ + ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la +AM_V_P = $(am__v_P_$(V)) +am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY)) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_$(V)) +am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_$(V)) +am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I. -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_$(V)) +am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_$(V)) +am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libgslderiv_la_SOURCES) $(test_SOURCES) +DIST_SOURCES = $(libgslderiv_la_SOURCES) $(test_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(pkgincludedir)" +HEADERS = $(pkginclude_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = .test +LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing aclocal-1.13 +AMTAR = $${TAR-tar} +AM_DEFAULT_VERBOSITY = 1 +AR = ar +AS = as +AUTOCONF = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing autoconf +AUTOHEADER = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing autoheader +AUTOMAKE = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing automake-1.13 +AWK = gawk +CC = gcc +CCDEPMODE = depmode=gcc3 +CFLAGS = -g -O2 +CPP = gcc -E +CPPFLAGS = +CYGPATH_W = echo +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +DLLTOOL = false +DSYMUTIL = +DUMPBIN = +ECHO_C = +ECHO_N = -n +ECHO_T = +EGREP = /usr/bin/grep -E +EXEEXT = +FGREP = /usr/bin/grep -F +GREP = /usr/bin/grep +GSLCBLAS_LDFLAGS = +GSL_CFLAGS = -I${prefix}/include +GSL_LDFLAGS = +GSL_LIBADD = +GSL_LIBM = -lm +GSL_LIBS = -L${exec_prefix}/lib -lgsl +GSL_LT_CBLAS_VERSION = 0:0:0 +GSL_LT_VERSION = 24:0:1 +GSL_MAJOR_VERSION = 2 +GSL_MINOR_VERSION = 5 +HAVE_AIX_IEEE_INTERFACE = +HAVE_DARWIN86_IEEE_INTERFACE = +HAVE_DARWIN_IEEE_INTERFACE = +HAVE_FREEBSD_IEEE_INTERFACE = +HAVE_GNUM68K_IEEE_INTERFACE = +HAVE_GNUPPC_IEEE_INTERFACE = +HAVE_GNUSPARC_IEEE_INTERFACE = +HAVE_GNUX86_IEEE_INTERFACE = +HAVE_HPUX11_IEEE_INTERFACE = +HAVE_HPUX_IEEE_INTERFACE = +HAVE_IRIX_IEEE_INTERFACE = +HAVE_NETBSD_IEEE_INTERFACE = +HAVE_OPENBSD_IEEE_INTERFACE = +HAVE_OS2EMX_IEEE_INTERFACE = +HAVE_SOLARIS_IEEE_INTERFACE = +HAVE_SUNOS4_IEEE_INTERFACE = +HAVE_TRU64_IEEE_INTERFACE = +INSTALL = /usr/bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = $(install_sh) -c -s +LD = /usr/bin/ld -m elf_x86_64 +LDFLAGS = +LIBM = -lm +LIBOBJS = +LIBS = -lm +LIBTOOL = $(SHELL) $(top_builddir)/libtool +LIPO = +LN_S = ln -s +LTLIBOBJS = +MAINT = # +MAKEINFO = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing makeinfo +MANIFEST_TOOL = : +MKDIR_P = /usr/bin/mkdir -p +NM = /usr/bin/nm -B +NMEDIT = +OBJDUMP = objdump +OBJEXT = o +OTOOL = +OTOOL64 = +PACKAGE = gsl +PACKAGE_BUGREPORT = +PACKAGE_NAME = gsl +PACKAGE_STRING = gsl 2.5 +PACKAGE_TARNAME = gsl +PACKAGE_URL = +PACKAGE_VERSION = 2.5 +PATH_SEPARATOR = : +RANLIB = ranlib +SED = /usr/bin/sed +SET_MAKE = +SHELL = /bin/sh +STRIP = strip +VERSION = 2.5 +abs_builddir = /home/groups/kipac/chto/package/gsl/gsl-2.5/deriv +abs_srcdir = /home/groups/kipac/chto/package/gsl/gsl-2.5/deriv +abs_top_builddir = /home/groups/kipac/chto/package/gsl/gsl-2.5 +abs_top_srcdir = /home/groups/kipac/chto/package/gsl/gsl-2.5 +ac_ct_AR = ar +ac_ct_CC = gcc +ac_ct_DUMPBIN = +am__include = include +am__leading_dot = . +am__quote = +am__tar = $${TAR-tar} chof - "$$tardir" +am__untar = $${TAR-tar} xf - +bindir = ${exec_prefix}/bin +build = x86_64-unknown-linux-gnu +build_alias = +build_cpu = x86_64 +build_os = linux-gnu +build_vendor = unknown +builddir = . +datadir = ${datarootdir} +datarootdir = ${prefix}/share +docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} +dvidir = ${docdir} +exec_prefix = ${prefix} +host = x86_64-unknown-linux-gnu +host_alias = +host_cpu = x86_64 +host_os = linux-gnu +host_vendor = unknown +htmldir = ${docdir} +includedir = ${prefix}/include +infodir = ${datarootdir}/info +install_sh = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/install-sh +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +localedir = ${datarootdir}/locale +localstatedir = ${prefix}/var +mandir = ${datarootdir}/man +mkdir_p = $(MKDIR_P) +oldincludedir = /usr/include +pdfdir = ${docdir} +prefix = /home/groups/kipac/chto/package/gsl/gsl_lib +program_transform_name = s,x,x, +psdir = ${docdir} +sbindir = ${exec_prefix}/sbin +sharedstatedir = ${prefix}/com +srcdir = . +sysconfdir = ${prefix}/etc +target_alias = +top_build_prefix = ../ +top_builddir = .. +top_srcdir = .. +noinst_LTLIBRARIES = libgslderiv.la +AM_CPPFLAGS = -I$(top_srcdir) +libgslderiv_la_SOURCES = deriv.c +pkginclude_HEADERS = gsl_deriv.h +TESTS = $(check_PROGRAMS) +test_SOURCES = test.c +test_LDADD = libgslderiv.la ../vector/libgslvector.la ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu deriv/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu deriv/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: # $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): # $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libgslderiv.la: $(libgslderiv_la_OBJECTS) $(libgslderiv_la_DEPENDENCIES) $(EXTRA_libgslderiv_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(libgslderiv_la_OBJECTS) $(libgslderiv_la_LIBADD) $(LIBS) + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) $(EXTRA_test_DEPENDENCIES) + @rm -f test$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_OBJECTS) $(test_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +include ./$(DEPDIR)/deriv.Plo +include ./$(DEPDIR)/test.Po + +.c.o: + $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# $(AM_V_CC)source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(COMPILE) -c $< + +.c.obj: + $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# $(AM_V_CC)source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: + $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +# $(AM_V_CC)source='$<' object='$@' libtool=yes \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-pkgincludeHEADERS: $(pkginclude_HEADERS) + @$(NORMAL_INSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \ + done + +uninstall-pkgincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + else \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_PROGRAMS) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +test.log: test$(EXEEXT) + @p='test$(EXEEXT)'; \ + b='test'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +#.test$(EXEEXT).log: +# @p='$<'; \ +# $(am__set_b); \ +# $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +# --log-file $$b.log --trs-file $$b.trs \ +# $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +# "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-am +all-am: Makefile $(LTLIBRARIES) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(pkgincludedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-pkgincludeHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-pkgincludeHEADERS + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES cscopelist-am ctags ctags-am distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-pkgincludeHEADERS \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + recheck tags tags-am uninstall uninstall-am \ + uninstall-pkgincludeHEADERS + + +#demo_SOURCES = demo.c +#demo_LDADD = libgslderiv.la ../vector/libgslvector.la ../block/libgslblock.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gsl-2.5/deriv/Makefile.am b/gsl-2.5/deriv/Makefile.am new file mode 100644 index 00000000..d4725235 --- /dev/null +++ b/gsl-2.5/deriv/Makefile.am @@ -0,0 +1,16 @@ +noinst_LTLIBRARIES = libgslderiv.la + +AM_CPPFLAGS = -I$(top_srcdir) + +libgslderiv_la_SOURCES = deriv.c + +pkginclude_HEADERS = gsl_deriv.h + +TESTS = $(check_PROGRAMS) +check_PROGRAMS = test #demo + +test_SOURCES = test.c +test_LDADD = libgslderiv.la ../vector/libgslvector.la ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la + +#demo_SOURCES = demo.c +#demo_LDADD = libgslderiv.la ../vector/libgslvector.la ../block/libgslblock.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la diff --git a/gsl-2.5/deriv/Makefile.in b/gsl-2.5/deriv/Makefile.in new file mode 100644 index 00000000..c6b5ae9b --- /dev/null +++ b/gsl-2.5/deriv/Makefile.in @@ -0,0 +1,1027 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + + +VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +check_PROGRAMS = test$(EXEEXT) +subdir = deriv +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp \ + $(pkginclude_HEADERS) $(top_srcdir)/test-driver ChangeLog +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +libgslderiv_la_LIBADD = +am_libgslderiv_la_OBJECTS = deriv.lo +libgslderiv_la_OBJECTS = $(am_libgslderiv_la_OBJECTS) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +am_test_OBJECTS = test.$(OBJEXT) +test_OBJECTS = $(am_test_OBJECTS) +test_DEPENDENCIES = libgslderiv.la ../vector/libgslvector.la \ + ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la \ + ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libgslderiv_la_SOURCES) $(test_SOURCES) +DIST_SOURCES = $(libgslderiv_la_SOURCES) $(test_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(pkgincludedir)" +HEADERS = $(pkginclude_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = @EXEEXT@ .test +LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +GSLCBLAS_LDFLAGS = @GSLCBLAS_LDFLAGS@ +GSL_CFLAGS = @GSL_CFLAGS@ +GSL_LDFLAGS = @GSL_LDFLAGS@ +GSL_LIBADD = @GSL_LIBADD@ +GSL_LIBM = @GSL_LIBM@ +GSL_LIBS = @GSL_LIBS@ +GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ +GSL_LT_VERSION = @GSL_LT_VERSION@ +GSL_MAJOR_VERSION = @GSL_MAJOR_VERSION@ +GSL_MINOR_VERSION = @GSL_MINOR_VERSION@ +HAVE_AIX_IEEE_INTERFACE = @HAVE_AIX_IEEE_INTERFACE@ +HAVE_DARWIN86_IEEE_INTERFACE = @HAVE_DARWIN86_IEEE_INTERFACE@ +HAVE_DARWIN_IEEE_INTERFACE = @HAVE_DARWIN_IEEE_INTERFACE@ +HAVE_FREEBSD_IEEE_INTERFACE = @HAVE_FREEBSD_IEEE_INTERFACE@ +HAVE_GNUM68K_IEEE_INTERFACE = @HAVE_GNUM68K_IEEE_INTERFACE@ +HAVE_GNUPPC_IEEE_INTERFACE = @HAVE_GNUPPC_IEEE_INTERFACE@ +HAVE_GNUSPARC_IEEE_INTERFACE = @HAVE_GNUSPARC_IEEE_INTERFACE@ +HAVE_GNUX86_IEEE_INTERFACE = @HAVE_GNUX86_IEEE_INTERFACE@ +HAVE_HPUX11_IEEE_INTERFACE = @HAVE_HPUX11_IEEE_INTERFACE@ +HAVE_HPUX_IEEE_INTERFACE = @HAVE_HPUX_IEEE_INTERFACE@ +HAVE_IRIX_IEEE_INTERFACE = @HAVE_IRIX_IEEE_INTERFACE@ +HAVE_NETBSD_IEEE_INTERFACE = @HAVE_NETBSD_IEEE_INTERFACE@ +HAVE_OPENBSD_IEEE_INTERFACE = @HAVE_OPENBSD_IEEE_INTERFACE@ +HAVE_OS2EMX_IEEE_INTERFACE = @HAVE_OS2EMX_IEEE_INTERFACE@ +HAVE_SOLARIS_IEEE_INTERFACE = @HAVE_SOLARIS_IEEE_INTERFACE@ +HAVE_SUNOS4_IEEE_INTERFACE = @HAVE_SUNOS4_IEEE_INTERFACE@ +HAVE_TRU64_IEEE_INTERFACE = @HAVE_TRU64_IEEE_INTERFACE@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBM = @LIBM@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +noinst_LTLIBRARIES = libgslderiv.la +AM_CPPFLAGS = -I$(top_srcdir) +libgslderiv_la_SOURCES = deriv.c +pkginclude_HEADERS = gsl_deriv.h +TESTS = $(check_PROGRAMS) +test_SOURCES = test.c +test_LDADD = libgslderiv.la ../vector/libgslvector.la ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu deriv/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu deriv/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libgslderiv.la: $(libgslderiv_la_OBJECTS) $(libgslderiv_la_DEPENDENCIES) $(EXTRA_libgslderiv_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(libgslderiv_la_OBJECTS) $(libgslderiv_la_LIBADD) $(LIBS) + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) $(EXTRA_test_DEPENDENCIES) + @rm -f test$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_OBJECTS) $(test_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/deriv.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test.Po@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-pkgincludeHEADERS: $(pkginclude_HEADERS) + @$(NORMAL_INSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \ + done + +uninstall-pkgincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + else \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_PROGRAMS) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +test.log: test$(EXEEXT) + @p='test$(EXEEXT)'; \ + b='test'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +@am__EXEEXT_TRUE@.test$(EXEEXT).log: +@am__EXEEXT_TRUE@ @p='$<'; \ +@am__EXEEXT_TRUE@ $(am__set_b); \ +@am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +@am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ +@am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +@am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-am +all-am: Makefile $(LTLIBRARIES) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(pkgincludedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-pkgincludeHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-pkgincludeHEADERS + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES cscopelist-am ctags ctags-am distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-pkgincludeHEADERS \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + recheck tags tags-am uninstall uninstall-am \ + uninstall-pkgincludeHEADERS + + +#demo_SOURCES = demo.c +#demo_LDADD = libgslderiv.la ../vector/libgslvector.la ../block/libgslblock.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gsl-2.5/deriv/deriv.c b/gsl-2.5/deriv/deriv.c new file mode 100644 index 00000000..2cec7941 --- /dev/null +++ b/gsl-2.5/deriv/deriv.c @@ -0,0 +1,178 @@ +/* deriv/deriv.c + * + * Copyright (C) 2004, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include + +static void +central_deriv (const gsl_function * f, double x, double h, + double *result, double *abserr_round, double *abserr_trunc) +{ + /* Compute the derivative using the 5-point rule (x-h, x-h/2, x, + x+h/2, x+h). Note that the central point is not used. + + Compute the error using the difference between the 5-point and + the 3-point rule (x-h,x,x+h). Again the central point is not + used. */ + + double fm1 = GSL_FN_EVAL (f, x - h); + double fp1 = GSL_FN_EVAL (f, x + h); + + double fmh = GSL_FN_EVAL (f, x - h / 2); + double fph = GSL_FN_EVAL (f, x + h / 2); + + double r3 = 0.5 * (fp1 - fm1); + double r5 = (4.0 / 3.0) * (fph - fmh) - (1.0 / 3.0) * r3; + + double e3 = (fabs (fp1) + fabs (fm1)) * GSL_DBL_EPSILON; + double e5 = 2.0 * (fabs (fph) + fabs (fmh)) * GSL_DBL_EPSILON + e3; + + /* The next term is due to finite precision in x+h = O (eps * x) */ + + double dy = GSL_MAX (fabs (r3 / h), fabs (r5 / h)) *(fabs (x) / h) * GSL_DBL_EPSILON; + + /* The truncation error in the r5 approximation itself is O(h^4). + However, for safety, we estimate the error from r5-r3, which is + O(h^2). By scaling h we will minimise this estimated error, not + the actual truncation error in r5. */ + + *result = r5 / h; + *abserr_trunc = fabs ((r5 - r3) / h); /* Estimated truncation error O(h^2) */ + *abserr_round = fabs (e5 / h) + dy; /* Rounding error (cancellations) */ +} + +int +gsl_deriv_central (const gsl_function * f, double x, double h, + double *result, double *abserr) +{ + double r_0, round, trunc, error; + central_deriv (f, x, h, &r_0, &round, &trunc); + error = round + trunc; + + if (round < trunc && (round > 0 && trunc > 0)) + { + double r_opt, round_opt, trunc_opt, error_opt; + + /* Compute an optimised stepsize to minimize the total error, + using the scaling of the truncation error (O(h^2)) and + rounding error (O(1/h)). */ + + double h_opt = h * pow (round / (2.0 * trunc), 1.0 / 3.0); + central_deriv (f, x, h_opt, &r_opt, &round_opt, &trunc_opt); + error_opt = round_opt + trunc_opt; + + /* Check that the new error is smaller, and that the new derivative + is consistent with the error bounds of the original estimate. */ + + if (error_opt < error && fabs (r_opt - r_0) < 4.0 * error) + { + r_0 = r_opt; + error = error_opt; + } + } + + *result = r_0; + *abserr = error; + + return GSL_SUCCESS; +} + + +static void +forward_deriv (const gsl_function * f, double x, double h, + double *result, double *abserr_round, double *abserr_trunc) +{ + /* Compute the derivative using the 4-point rule (x+h/4, x+h/2, + x+3h/4, x+h). + + Compute the error using the difference between the 4-point and + the 2-point rule (x+h/2,x+h). */ + + double f1 = GSL_FN_EVAL (f, x + h / 4.0); + double f2 = GSL_FN_EVAL (f, x + h / 2.0); + double f3 = GSL_FN_EVAL (f, x + (3.0 / 4.0) * h); + double f4 = GSL_FN_EVAL (f, x + h); + + double r2 = 2.0*(f4 - f2); + double r4 = (22.0 / 3.0) * (f4 - f3) - (62.0 / 3.0) * (f3 - f2) + + (52.0 / 3.0) * (f2 - f1); + + /* Estimate the rounding error for r4 */ + + double e4 = 2 * 20.67 * (fabs (f4) + fabs (f3) + fabs (f2) + fabs (f1)) * GSL_DBL_EPSILON; + + /* The next term is due to finite precision in x+h = O (eps * x) */ + + double dy = GSL_MAX (fabs (r2 / h), fabs (r4 / h)) * fabs (x / h) * GSL_DBL_EPSILON; + + /* The truncation error in the r4 approximation itself is O(h^3). + However, for safety, we estimate the error from r4-r2, which is + O(h). By scaling h we will minimise this estimated error, not + the actual truncation error in r4. */ + + *result = r4 / h; + *abserr_trunc = fabs ((r4 - r2) / h); /* Estimated truncation error O(h) */ + *abserr_round = fabs (e4 / h) + dy; +} + +int +gsl_deriv_forward (const gsl_function * f, double x, double h, + double *result, double *abserr) +{ + double r_0, round, trunc, error; + forward_deriv (f, x, h, &r_0, &round, &trunc); + error = round + trunc; + + if (round < trunc && (round > 0 && trunc > 0)) + { + double r_opt, round_opt, trunc_opt, error_opt; + + /* Compute an optimised stepsize to minimize the total error, + using the scaling of the estimated truncation error (O(h)) and + rounding error (O(1/h)). */ + + double h_opt = h * pow (round / (trunc), 1.0 / 2.0); + forward_deriv (f, x, h_opt, &r_opt, &round_opt, &trunc_opt); + error_opt = round_opt + trunc_opt; + + /* Check that the new error is smaller, and that the new derivative + is consistent with the error bounds of the original estimate. */ + + if (error_opt < error && fabs (r_opt - r_0) < 4.0 * error) + { + r_0 = r_opt; + error = error_opt; + } + } + + *result = r_0; + *abserr = error; + + return GSL_SUCCESS; +} + +int +gsl_deriv_backward (const gsl_function * f, double x, double h, + double *result, double *abserr) +{ + return gsl_deriv_forward (f, x, -h, result, abserr); +} diff --git a/gsl-2.5/deriv/deriv.lo b/gsl-2.5/deriv/deriv.lo new file mode 100644 index 00000000..825cd7be --- /dev/null +++ b/gsl-2.5/deriv/deriv.lo @@ -0,0 +1,12 @@ +# deriv.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/deriv.o' + +# Name of the non-PIC object +non_pic_object='deriv.o' + diff --git a/gsl-2.5/deriv/gsl_deriv.h b/gsl-2.5/deriv/gsl_deriv.h new file mode 100644 index 00000000..7f4694fe --- /dev/null +++ b/gsl-2.5/deriv/gsl_deriv.h @@ -0,0 +1,50 @@ +/* deriv/gsl_deriv.h + * + * Copyright (C) 2000 David Morrison + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_DERIV_H__ +#define __GSL_DERIV_H__ +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +int gsl_deriv_central (const gsl_function *f, + double x, double h, + double *result, double *abserr); + +int gsl_deriv_backward (const gsl_function *f, + double x, double h, + double *result, double *abserr); + +int gsl_deriv_forward (const gsl_function *f, + double x, double h, + double *result, double *abserr); + +__END_DECLS + +#endif /* __GSL_DERIV_H__ */ diff --git a/gsl-2.5/deriv/libgslderiv.la b/gsl-2.5/deriv/libgslderiv.la new file mode 100644 index 00000000..7cca7c80 --- /dev/null +++ b/gsl-2.5/deriv/libgslderiv.la @@ -0,0 +1,41 @@ +# libgslderiv.la - a libtool library file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='' + +# Names of this library. +library_names='' + +# The name of the static archive. +old_library='libgslderiv.a' + +# Linker flags that can not go in dependency_libs. +inherited_linker_flags='' + +# Libraries that this one depends upon. +dependency_libs=' -lm' + +# Names of additional weak libraries provided by this library +weak_library_names='' + +# Version information for libgslderiv. +current= +age= +revision= + +# Is this an already installed library? +installed=no + +# Should we warn about portability when linking against -modules? +shouldnotlink=no + +# Files to dlopen/dlpreopen +dlopen='' +dlpreopen='' + +# Directory that this library needs to be installed in: +libdir='' diff --git a/gsl-2.5/deriv/test b/gsl-2.5/deriv/test new file mode 100755 index 00000000..3ee33699 Binary files /dev/null and b/gsl-2.5/deriv/test differ diff --git a/gsl-2.5/deriv/test-suite.log b/gsl-2.5/deriv/test-suite.log new file mode 100644 index 00000000..05bf5b81 --- /dev/null +++ b/gsl-2.5/deriv/test-suite.log @@ -0,0 +1,14 @@ +=================================== + gsl 2.5: deriv/test-suite.log +=================================== + +# TOTAL: 1 +# PASS: 1 +# SKIP: 0 +# XFAIL: 0 +# FAIL: 0 +# XPASS: 0 +# ERROR: 0 + +.. contents:: :depth: 2 + diff --git a/gsl-2.5/deriv/test.c b/gsl-2.5/deriv/test.c new file mode 100644 index 00000000..0157294f --- /dev/null +++ b/gsl-2.5/deriv/test.c @@ -0,0 +1,209 @@ +/* deriv/test.c + * + * Copyright (C) 2000 David Morrison + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +double +f1 (double x, void *params) +{ + return exp (x); +} + +double +df1 (double x, void *params) +{ + return exp (x); +} + +double +f2 (double x, void *params) +{ + if (x >= 0.0) + { + return x * sqrt (x); + } + else + { + return 0.0; + } +} + +double +df2 (double x, void *params) +{ + if (x >= 0.0) + { + return 1.5 * sqrt (x); + } + else + { + return 0.0; + } +} + +double +f3 (double x, void *params) +{ + if (x != 0.0) + { + return sin (1 / x); + } + else + { + return 0.0; + } +} + +double +df3 (double x, void *params) +{ + if (x != 0.0) + { + return -cos (1 / x) / (x * x); + } + else + { + return 0.0; + } +} + +double +f4 (double x, void *params) +{ + return exp (-x * x); +} + +double +df4 (double x, void *params) +{ + return -2.0 * x * exp (-x * x); +} + +double +f5 (double x, void *params) +{ + return x * x; +} + +double +df5 (double x, void *params) +{ + return 2.0 * x; +} + +double +f6 (double x, void *params) +{ + return 1.0 / x; +} + +double +df6 (double x, void *params) +{ + return -1.0 / (x * x); +} + +typedef int (deriv_fn) (const gsl_function * f, double x, double h, double * res, double *abserr); + +void +test (deriv_fn * deriv, gsl_function * f, gsl_function * df, double x, + const char * desc) +{ + double result, abserr; + double expected = GSL_FN_EVAL (df, x); + (*deriv) (f, x, 1e-4, &result, &abserr); + + gsl_test_abs (result, expected, GSL_MIN(1e-4,fabs(expected)) + GSL_DBL_EPSILON, desc); + + if (abserr < fabs(result-expected)) + { + gsl_test_factor (abserr, fabs(result-expected), 2, "%s error estimate", desc); + } + else if (result == expected || expected == 0.0) + { + gsl_test_abs (abserr, 0.0, 1e-6, "%s abserr", desc); + } + else + { + double d = fabs(result - expected); + gsl_test_abs (abserr, fabs(result-expected), 1e6*d, "%s abserr", desc); + } +} + +int +main () +{ + gsl_function F1, DF1, F2, DF2, F3, DF3, F4, DF4, F5, DF5, F6, DF6; + + gsl_ieee_env_setup (); + + F1.function = &f1; + DF1.function = &df1; + + F2.function = &f2; + DF2.function = &df2; + + F3.function = &f3; + DF3.function = &df3; + + F4.function = &f4; + DF4.function = &df4; + + F5.function = &f5; + DF5.function = &df5; + + F6.function = &f6; + DF6.function = &df6; + + test (&gsl_deriv_central, &F1, &DF1, 1.0, "exp(x), x=1, central deriv"); + test (&gsl_deriv_forward, &F1, &DF1, 1.0, "exp(x), x=1, forward deriv"); + test (&gsl_deriv_backward, &F1, &DF1, 1.0, "exp(x), x=1, backward deriv"); + + test (&gsl_deriv_central, &F2, &DF2, 0.1, "x^(3/2), x=0.1, central deriv"); + test (&gsl_deriv_forward, &F2, &DF2, 0.1, "x^(3/2), x=0.1, forward deriv"); + test (&gsl_deriv_backward, &F2, &DF2, 0.1, "x^(3/2), x=0.1, backward deriv"); + + test (&gsl_deriv_central, &F3, &DF3, 0.45, "sin(1/x), x=0.45, central deriv"); + test (&gsl_deriv_forward, &F3, &DF3, 0.45, "sin(1/x), x=0.45, forward deriv"); + test (&gsl_deriv_backward, &F3, &DF3, 0.45, "sin(1/x), x=0.45, backward deriv"); + + test (&gsl_deriv_central, &F4, &DF4, 0.5, "exp(-x^2), x=0.5, central deriv"); + test (&gsl_deriv_forward, &F4, &DF4, 0.5, "exp(-x^2), x=0.5, forward deriv"); + test (&gsl_deriv_backward, &F4, &DF4, 0.5, "exp(-x^2), x=0.5, backward deriv"); + + test (&gsl_deriv_central, &F5, &DF5, 0.0, "x^2, x=0, central deriv"); + test (&gsl_deriv_forward, &F5, &DF5, 0.0, "x^2, x=0, forward deriv"); + test (&gsl_deriv_backward, &F5, &DF5, 0.0, "x^2, x=0, backward deriv"); + + test (&gsl_deriv_central, &F6, &DF6, 10.0, "1/x, x=10, central deriv"); + test (&gsl_deriv_forward, &F6, &DF6, 10.0, "1/x, x=10, forward deriv"); + test (&gsl_deriv_backward, &F6, &DF6, 10.0, "1/x, x=10, backward deriv"); + + exit (gsl_test_summary ()); +} + + diff --git a/gsl-2.5/deriv/test.log b/gsl-2.5/deriv/test.log new file mode 100644 index 00000000..41e5dce2 --- /dev/null +++ b/gsl-2.5/deriv/test.log @@ -0,0 +1 @@ +Completed [36/36] diff --git a/gsl-2.5/deriv/test.trs b/gsl-2.5/deriv/test.trs new file mode 100644 index 00000000..3f0f396c --- /dev/null +++ b/gsl-2.5/deriv/test.trs @@ -0,0 +1,4 @@ +:test-result: PASS +:global-test-result: PASS +:recheck: no +:copy-in-global-log: no diff --git a/gsl-2.5/dht/.deps/dht.Plo b/gsl-2.5/dht/.deps/dht.Plo new file mode 100644 index 00000000..d25a73e8 --- /dev/null +++ b/gsl-2.5/dht/.deps/dht.Plo @@ -0,0 +1,179 @@ +dht.lo: dht.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_errno.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_types.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_nan.h ../gsl/gsl_pow_int.h \ + ../gsl/gsl_minmax.h ../gsl/gsl_sf_bessel.h ../gsl/gsl_mode.h \ + ../gsl/gsl_sf_result.h ../gsl/gsl_dht.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_sf_bessel.h: + +../gsl/gsl_mode.h: + +../gsl/gsl_sf_result.h: + +../gsl/gsl_dht.h: diff --git a/gsl-2.5/dht/.deps/test.Po b/gsl-2.5/dht/.deps/test.Po new file mode 100644 index 00000000..c5b139fa --- /dev/null +++ b/gsl-2.5/dht/.deps/test.Po @@ -0,0 +1,117 @@ +test.o: test.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_ieee_utils.h ../gsl/gsl_test.h ../gsl/gsl_dht.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_ieee_utils.h: + +../gsl/gsl_test.h: + +../gsl/gsl_dht.h: diff --git a/gsl-2.5/dht/.libs/libgsldht.la b/gsl-2.5/dht/.libs/libgsldht.la new file mode 120000 index 00000000..1afe4726 --- /dev/null +++ b/gsl-2.5/dht/.libs/libgsldht.la @@ -0,0 +1 @@ +../libgsldht.la \ No newline at end of file diff --git a/gsl-2.5/dht/ChangeLog b/gsl-2.5/dht/ChangeLog new file mode 100644 index 00000000..e3baf4be --- /dev/null +++ b/gsl-2.5/dht/ChangeLog @@ -0,0 +1,14 @@ +2009-07-09 Brian Gough + + * dht.c (gsl_dht_free): handle NULL argument in free + +2008-07-03 Brian Gough + + * Makefile.am (INCLUDES): use top_srcdir instead of top_builddir + +Mon Apr 23 10:31:58 2001 Brian Gough + + * unified error handling conventions to _e for error handling + functions and no suffix for plain functions, so _impl functions + are no longer needed. + diff --git a/gsl-2.5/dht/Makefile b/gsl-2.5/dht/Makefile new file mode 100644 index 00000000..8e264b32 --- /dev/null +++ b/gsl-2.5/dht/Makefile @@ -0,0 +1,1025 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# dht/Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + + + + +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/gsl +pkgincludedir = $(includedir)/gsl +pkglibdir = $(libdir)/gsl +pkglibexecdir = $(libexecdir)/gsl +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = x86_64-unknown-linux-gnu +host_triplet = x86_64-unknown-linux-gnu +check_PROGRAMS = test$(EXEEXT) +subdir = dht +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp \ + $(pkginclude_HEADERS) $(top_srcdir)/test-driver ChangeLog +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +libgsldht_la_LIBADD = +am_libgsldht_la_OBJECTS = dht.lo +libgsldht_la_OBJECTS = $(am_libgsldht_la_OBJECTS) +AM_V_lt = $(am__v_lt_$(V)) +am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) +am__v_lt_0 = --silent +am__v_lt_1 = +am_test_OBJECTS = test.$(OBJEXT) +test_OBJECTS = $(am_test_OBJECTS) +test_DEPENDENCIES = libgsldht.la ../specfunc/libgslspecfunc.la \ + ../complex/libgslcomplex.la ../ieee-utils/libgslieeeutils.la \ + ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la \ + ../utils/libutils.la +AM_V_P = $(am__v_P_$(V)) +am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY)) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_$(V)) +am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_$(V)) +am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I. -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_$(V)) +am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_$(V)) +am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libgsldht_la_SOURCES) $(test_SOURCES) +DIST_SOURCES = $(libgsldht_la_SOURCES) $(test_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(pkgincludedir)" +HEADERS = $(pkginclude_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = .test +LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing aclocal-1.13 +AMTAR = $${TAR-tar} +AM_DEFAULT_VERBOSITY = 1 +AR = ar +AS = as +AUTOCONF = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing autoconf +AUTOHEADER = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing autoheader +AUTOMAKE = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing automake-1.13 +AWK = gawk +CC = gcc +CCDEPMODE = depmode=gcc3 +CFLAGS = -g -O2 +CPP = gcc -E +CPPFLAGS = +CYGPATH_W = echo +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +DLLTOOL = false +DSYMUTIL = +DUMPBIN = +ECHO_C = +ECHO_N = -n +ECHO_T = +EGREP = /usr/bin/grep -E +EXEEXT = +FGREP = /usr/bin/grep -F +GREP = /usr/bin/grep +GSLCBLAS_LDFLAGS = +GSL_CFLAGS = -I${prefix}/include +GSL_LDFLAGS = +GSL_LIBADD = +GSL_LIBM = -lm +GSL_LIBS = -L${exec_prefix}/lib -lgsl +GSL_LT_CBLAS_VERSION = 0:0:0 +GSL_LT_VERSION = 24:0:1 +GSL_MAJOR_VERSION = 2 +GSL_MINOR_VERSION = 5 +HAVE_AIX_IEEE_INTERFACE = +HAVE_DARWIN86_IEEE_INTERFACE = +HAVE_DARWIN_IEEE_INTERFACE = +HAVE_FREEBSD_IEEE_INTERFACE = +HAVE_GNUM68K_IEEE_INTERFACE = +HAVE_GNUPPC_IEEE_INTERFACE = +HAVE_GNUSPARC_IEEE_INTERFACE = +HAVE_GNUX86_IEEE_INTERFACE = +HAVE_HPUX11_IEEE_INTERFACE = +HAVE_HPUX_IEEE_INTERFACE = +HAVE_IRIX_IEEE_INTERFACE = +HAVE_NETBSD_IEEE_INTERFACE = +HAVE_OPENBSD_IEEE_INTERFACE = +HAVE_OS2EMX_IEEE_INTERFACE = +HAVE_SOLARIS_IEEE_INTERFACE = +HAVE_SUNOS4_IEEE_INTERFACE = +HAVE_TRU64_IEEE_INTERFACE = +INSTALL = /usr/bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = $(install_sh) -c -s +LD = /usr/bin/ld -m elf_x86_64 +LDFLAGS = +LIBM = -lm +LIBOBJS = +LIBS = -lm +LIBTOOL = $(SHELL) $(top_builddir)/libtool +LIPO = +LN_S = ln -s +LTLIBOBJS = +MAINT = # +MAKEINFO = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing makeinfo +MANIFEST_TOOL = : +MKDIR_P = /usr/bin/mkdir -p +NM = /usr/bin/nm -B +NMEDIT = +OBJDUMP = objdump +OBJEXT = o +OTOOL = +OTOOL64 = +PACKAGE = gsl +PACKAGE_BUGREPORT = +PACKAGE_NAME = gsl +PACKAGE_STRING = gsl 2.5 +PACKAGE_TARNAME = gsl +PACKAGE_URL = +PACKAGE_VERSION = 2.5 +PATH_SEPARATOR = : +RANLIB = ranlib +SED = /usr/bin/sed +SET_MAKE = +SHELL = /bin/sh +STRIP = strip +VERSION = 2.5 +abs_builddir = /home/groups/kipac/chto/package/gsl/gsl-2.5/dht +abs_srcdir = /home/groups/kipac/chto/package/gsl/gsl-2.5/dht +abs_top_builddir = /home/groups/kipac/chto/package/gsl/gsl-2.5 +abs_top_srcdir = /home/groups/kipac/chto/package/gsl/gsl-2.5 +ac_ct_AR = ar +ac_ct_CC = gcc +ac_ct_DUMPBIN = +am__include = include +am__leading_dot = . +am__quote = +am__tar = $${TAR-tar} chof - "$$tardir" +am__untar = $${TAR-tar} xf - +bindir = ${exec_prefix}/bin +build = x86_64-unknown-linux-gnu +build_alias = +build_cpu = x86_64 +build_os = linux-gnu +build_vendor = unknown +builddir = . +datadir = ${datarootdir} +datarootdir = ${prefix}/share +docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} +dvidir = ${docdir} +exec_prefix = ${prefix} +host = x86_64-unknown-linux-gnu +host_alias = +host_cpu = x86_64 +host_os = linux-gnu +host_vendor = unknown +htmldir = ${docdir} +includedir = ${prefix}/include +infodir = ${datarootdir}/info +install_sh = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/install-sh +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +localedir = ${datarootdir}/locale +localstatedir = ${prefix}/var +mandir = ${datarootdir}/man +mkdir_p = $(MKDIR_P) +oldincludedir = /usr/include +pdfdir = ${docdir} +prefix = /home/groups/kipac/chto/package/gsl/gsl_lib +program_transform_name = s,x,x, +psdir = ${docdir} +sbindir = ${exec_prefix}/sbin +sharedstatedir = ${prefix}/com +srcdir = . +sysconfdir = ${prefix}/etc +target_alias = +top_build_prefix = ../ +top_builddir = .. +top_srcdir = .. +noinst_LTLIBRARIES = libgsldht.la +pkginclude_HEADERS = gsl_dht.h +AM_CPPFLAGS = -I$(top_srcdir) +TESTS = $(check_PROGRAMS) +test_LDADD = libgsldht.la ../specfunc/libgslspecfunc.la ../complex/libgslcomplex.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la +test_SOURCES = test.c +libgsldht_la_SOURCES = dht.c +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu dht/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu dht/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: # $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): # $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libgsldht.la: $(libgsldht_la_OBJECTS) $(libgsldht_la_DEPENDENCIES) $(EXTRA_libgsldht_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(libgsldht_la_OBJECTS) $(libgsldht_la_LIBADD) $(LIBS) + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) $(EXTRA_test_DEPENDENCIES) + @rm -f test$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_OBJECTS) $(test_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +include ./$(DEPDIR)/dht.Plo +include ./$(DEPDIR)/test.Po + +.c.o: + $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# $(AM_V_CC)source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(COMPILE) -c $< + +.c.obj: + $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# $(AM_V_CC)source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: + $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +# $(AM_V_CC)source='$<' object='$@' libtool=yes \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-pkgincludeHEADERS: $(pkginclude_HEADERS) + @$(NORMAL_INSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \ + done + +uninstall-pkgincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + else \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_PROGRAMS) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +test.log: test$(EXEEXT) + @p='test$(EXEEXT)'; \ + b='test'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +#.test$(EXEEXT).log: +# @p='$<'; \ +# $(am__set_b); \ +# $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +# --log-file $$b.log --trs-file $$b.trs \ +# $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +# "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-am +all-am: Makefile $(LTLIBRARIES) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(pkgincludedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-pkgincludeHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-pkgincludeHEADERS + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES cscopelist-am ctags ctags-am distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-pkgincludeHEADERS \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + recheck tags tags-am uninstall uninstall-am \ + uninstall-pkgincludeHEADERS + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gsl-2.5/dht/Makefile.am b/gsl-2.5/dht/Makefile.am new file mode 100644 index 00000000..196030a5 --- /dev/null +++ b/gsl-2.5/dht/Makefile.am @@ -0,0 +1,15 @@ +noinst_LTLIBRARIES = libgsldht.la + +pkginclude_HEADERS = gsl_dht.h + +AM_CPPFLAGS = -I$(top_srcdir) + +TESTS = $(check_PROGRAMS) + +check_PROGRAMS = test + +test_LDADD = libgsldht.la ../specfunc/libgslspecfunc.la ../complex/libgslcomplex.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la + +test_SOURCES = test.c + +libgsldht_la_SOURCES = dht.c diff --git a/gsl-2.5/dht/Makefile.in b/gsl-2.5/dht/Makefile.in new file mode 100644 index 00000000..69ca5610 --- /dev/null +++ b/gsl-2.5/dht/Makefile.in @@ -0,0 +1,1025 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + + +VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +check_PROGRAMS = test$(EXEEXT) +subdir = dht +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp \ + $(pkginclude_HEADERS) $(top_srcdir)/test-driver ChangeLog +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +libgsldht_la_LIBADD = +am_libgsldht_la_OBJECTS = dht.lo +libgsldht_la_OBJECTS = $(am_libgsldht_la_OBJECTS) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +am_test_OBJECTS = test.$(OBJEXT) +test_OBJECTS = $(am_test_OBJECTS) +test_DEPENDENCIES = libgsldht.la ../specfunc/libgslspecfunc.la \ + ../complex/libgslcomplex.la ../ieee-utils/libgslieeeutils.la \ + ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la \ + ../utils/libutils.la +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libgsldht_la_SOURCES) $(test_SOURCES) +DIST_SOURCES = $(libgsldht_la_SOURCES) $(test_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(pkgincludedir)" +HEADERS = $(pkginclude_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = @EXEEXT@ .test +LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +GSLCBLAS_LDFLAGS = @GSLCBLAS_LDFLAGS@ +GSL_CFLAGS = @GSL_CFLAGS@ +GSL_LDFLAGS = @GSL_LDFLAGS@ +GSL_LIBADD = @GSL_LIBADD@ +GSL_LIBM = @GSL_LIBM@ +GSL_LIBS = @GSL_LIBS@ +GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ +GSL_LT_VERSION = @GSL_LT_VERSION@ +GSL_MAJOR_VERSION = @GSL_MAJOR_VERSION@ +GSL_MINOR_VERSION = @GSL_MINOR_VERSION@ +HAVE_AIX_IEEE_INTERFACE = @HAVE_AIX_IEEE_INTERFACE@ +HAVE_DARWIN86_IEEE_INTERFACE = @HAVE_DARWIN86_IEEE_INTERFACE@ +HAVE_DARWIN_IEEE_INTERFACE = @HAVE_DARWIN_IEEE_INTERFACE@ +HAVE_FREEBSD_IEEE_INTERFACE = @HAVE_FREEBSD_IEEE_INTERFACE@ +HAVE_GNUM68K_IEEE_INTERFACE = @HAVE_GNUM68K_IEEE_INTERFACE@ +HAVE_GNUPPC_IEEE_INTERFACE = @HAVE_GNUPPC_IEEE_INTERFACE@ +HAVE_GNUSPARC_IEEE_INTERFACE = @HAVE_GNUSPARC_IEEE_INTERFACE@ +HAVE_GNUX86_IEEE_INTERFACE = @HAVE_GNUX86_IEEE_INTERFACE@ +HAVE_HPUX11_IEEE_INTERFACE = @HAVE_HPUX11_IEEE_INTERFACE@ +HAVE_HPUX_IEEE_INTERFACE = @HAVE_HPUX_IEEE_INTERFACE@ +HAVE_IRIX_IEEE_INTERFACE = @HAVE_IRIX_IEEE_INTERFACE@ +HAVE_NETBSD_IEEE_INTERFACE = @HAVE_NETBSD_IEEE_INTERFACE@ +HAVE_OPENBSD_IEEE_INTERFACE = @HAVE_OPENBSD_IEEE_INTERFACE@ +HAVE_OS2EMX_IEEE_INTERFACE = @HAVE_OS2EMX_IEEE_INTERFACE@ +HAVE_SOLARIS_IEEE_INTERFACE = @HAVE_SOLARIS_IEEE_INTERFACE@ +HAVE_SUNOS4_IEEE_INTERFACE = @HAVE_SUNOS4_IEEE_INTERFACE@ +HAVE_TRU64_IEEE_INTERFACE = @HAVE_TRU64_IEEE_INTERFACE@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBM = @LIBM@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +noinst_LTLIBRARIES = libgsldht.la +pkginclude_HEADERS = gsl_dht.h +AM_CPPFLAGS = -I$(top_srcdir) +TESTS = $(check_PROGRAMS) +test_LDADD = libgsldht.la ../specfunc/libgslspecfunc.la ../complex/libgslcomplex.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la +test_SOURCES = test.c +libgsldht_la_SOURCES = dht.c +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu dht/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu dht/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libgsldht.la: $(libgsldht_la_OBJECTS) $(libgsldht_la_DEPENDENCIES) $(EXTRA_libgsldht_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(libgsldht_la_OBJECTS) $(libgsldht_la_LIBADD) $(LIBS) + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) $(EXTRA_test_DEPENDENCIES) + @rm -f test$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_OBJECTS) $(test_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dht.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test.Po@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-pkgincludeHEADERS: $(pkginclude_HEADERS) + @$(NORMAL_INSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \ + done + +uninstall-pkgincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + else \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_PROGRAMS) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +test.log: test$(EXEEXT) + @p='test$(EXEEXT)'; \ + b='test'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +@am__EXEEXT_TRUE@.test$(EXEEXT).log: +@am__EXEEXT_TRUE@ @p='$<'; \ +@am__EXEEXT_TRUE@ $(am__set_b); \ +@am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +@am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ +@am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +@am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-am +all-am: Makefile $(LTLIBRARIES) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(pkgincludedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-pkgincludeHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-pkgincludeHEADERS + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES cscopelist-am ctags ctags-am distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-pkgincludeHEADERS \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + recheck tags tags-am uninstall uninstall-am \ + uninstall-pkgincludeHEADERS + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gsl-2.5/dht/dht.c b/gsl-2.5/dht/dht.c new file mode 100644 index 00000000..97b60224 --- /dev/null +++ b/gsl-2.5/dht/dht.c @@ -0,0 +1,227 @@ +/* dht/dht.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * Copyright (C) 2009 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman + */ +#include +#include +#include +#include +#include +#include + + +gsl_dht * +gsl_dht_alloc (size_t size) +{ + gsl_dht * t; + + if(size == 0) { + GSL_ERROR_VAL("size == 0", GSL_EDOM, 0); + } + + t = (gsl_dht *)malloc(sizeof(gsl_dht)); + + if(t == 0) { + GSL_ERROR_VAL("out of memory", GSL_ENOMEM, 0); + } + + t->size = size; + + t->xmax = -1.0; /* Make it clear that this needs to be calculated. */ + t->nu = -1.0; + + t->j = (double *)malloc((size+2)*sizeof(double)); + + if(t->j == 0) { + free(t); + GSL_ERROR_VAL("could not allocate memory for j", GSL_ENOMEM, 0); + } + + t->Jjj = (double *)malloc(size*(size+1)/2 * sizeof(double)); + + if(t->Jjj == 0) { + free(t->j); + free(t); + GSL_ERROR_VAL("could not allocate memory for Jjj", GSL_ENOMEM, 0); + } + + t->J2 = (double *)malloc((size+1)*sizeof(double)); + + if(t->J2 == 0) { + free(t->Jjj); + free(t->j); + free(t); + GSL_ERROR_VAL("could not allocate memory for J2", GSL_ENOMEM, 0); + } + + return t; +} + +/* Handle internal calculation of Bessel zeros. */ +static int +dht_bessel_zeros(gsl_dht * t) +{ + unsigned int s; + gsl_sf_result z; + int stat_z = 0; + t->j[0] = 0.0; + for(s=1; s < t->size + 2; s++) { + stat_z += gsl_sf_bessel_zero_Jnu_e(t->nu, s, &z); + t->j[s] = z.val; + } + if(stat_z != 0) { + GSL_ERROR("could not compute bessel zeroes", GSL_EFAILED); + } + else { + return GSL_SUCCESS; + } +} + +gsl_dht * +gsl_dht_new (size_t size, double nu, double xmax) +{ + int status; + + gsl_dht * dht = gsl_dht_alloc (size); + + if (dht == 0) + return 0; + + status = gsl_dht_init(dht, nu, xmax); + + if (status) + return 0; + + return dht; +} + +int +gsl_dht_init(gsl_dht * t, double nu, double xmax) +{ + if(xmax <= 0.0) { + GSL_ERROR ("xmax is not positive", GSL_EDOM); + } else if(nu < 0.0) { + GSL_ERROR ("nu is negative", GSL_EDOM); + } + else { + size_t n, m; + int stat_bz = GSL_SUCCESS; + int stat_J = 0; + double jN; + + if(nu != t->nu) { + /* Recalculate Bessel zeros if necessary. */ + t->nu = nu; + stat_bz = dht_bessel_zeros(t); + } + + jN = t->j[t->size+1]; + + t->xmax = xmax; + t->kmax = jN / xmax; + + t->J2[0] = 0.0; + for(m=1; msize+1; m++) { + gsl_sf_result J; + stat_J += gsl_sf_bessel_Jnu_e(nu + 1.0, t->j[m], &J); + t->J2[m] = J.val * J.val; + } + + /* J_nu(j[n] j[m] / j[N]) = Jjj[n(n-1)/2 + m - 1], 1 <= n,m <= size + */ + for(n=1; nsize+1; n++) { + for(m=1; m<=n; m++) { + double arg = t->j[n] * t->j[m] / jN; + gsl_sf_result J; + stat_J += gsl_sf_bessel_Jnu_e(nu, arg, &J); + t->Jjj[n*(n-1)/2 + m - 1] = J.val; + } + } + + if(stat_J != 0) { + GSL_ERROR("error computing bessel function", GSL_EFAILED); + } + else { + return stat_bz; + } + } +} + + +double gsl_dht_x_sample(const gsl_dht * t, int n) +{ + return t->j[n+1]/t->j[t->size+1] * t->xmax; +} + + +double gsl_dht_k_sample(const gsl_dht * t, int n) +{ + return t->j[n+1] / t->xmax; +} + + +void gsl_dht_free(gsl_dht * t) +{ + RETURN_IF_NULL (t); + free(t->J2); + free(t->Jjj); + free(t->j); + free(t); +} + + +int +gsl_dht_apply(const gsl_dht * t, double * f_in, double * f_out) +{ + const double jN = t->j[t->size + 1]; + const double r = t->xmax / jN; + size_t m; + size_t i; + + for(m=0; msize; m++) { + double sum = 0.0; + double Y; + for(i=0; isize; i++) { + /* Need to find max and min so that we + * address the symmetric Jjj matrix properly. + * FIXME: we can presumably optimize this + * by just running over the elements of Jjj + * in a deterministic manner. + */ + size_t m_local; + size_t n_local; + if(i < m) { + m_local = i; + n_local = m; + } + else { + m_local = m; + n_local = i; + } + Y = t->Jjj[n_local*(n_local+1)/2 + m_local] / t->J2[i+1]; + sum += Y * f_in[i]; + } + f_out[m] = sum * 2.0 * r*r; + } + + return GSL_SUCCESS; +} + diff --git a/gsl-2.5/dht/dht.lo b/gsl-2.5/dht/dht.lo new file mode 100644 index 00000000..0e449914 --- /dev/null +++ b/gsl-2.5/dht/dht.lo @@ -0,0 +1,12 @@ +# dht.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/dht.o' + +# Name of the non-PIC object +non_pic_object='dht.o' + diff --git a/gsl-2.5/dht/gsl_dht.h b/gsl-2.5/dht/gsl_dht.h new file mode 100644 index 00000000..bfc4b2ff --- /dev/null +++ b/gsl-2.5/dht/gsl_dht.h @@ -0,0 +1,87 @@ +/* dht/gsl_dht.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman + */ +#ifndef __GSL_DHT_H__ +#define __GSL_DHT_H__ + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + + +struct gsl_dht_struct { + size_t size; /* size of the sample arrays to be transformed */ + double nu; /* Bessel function order */ + double xmax; /* the upper limit to the x-sampling domain */ + double kmax; /* the upper limit to the k-sampling domain */ + double * j; /* array of computed J_nu zeros, j_{nu,s} = j[s] */ + double * Jjj; /* transform numerator, J_nu(j_i j_m / j_N) */ + double * J2; /* transform denominator, J_{nu+1}^2(j_m) */ +}; +typedef struct gsl_dht_struct gsl_dht; + + +/* Create a new transform object for a given size + * sampling array on the domain [0, xmax]. + */ +gsl_dht * gsl_dht_alloc(size_t size); +gsl_dht * gsl_dht_new(size_t size, double nu, double xmax); + +/* Recalculate a transform object for given values of nu, xmax. + * You cannot change the size of the object since the internal + * allocation is reused. + */ +int gsl_dht_init(gsl_dht * t, double nu, double xmax); + +/* The n'th computed x sample point for a given transform. + * 0 <= n <= size-1 + */ +double gsl_dht_x_sample(const gsl_dht * t, int n); + + +/* The n'th computed k sample point for a given transform. + * 0 <= n <= size-1 + */ +double gsl_dht_k_sample(const gsl_dht * t, int n); + + +/* Free a transform object. + */ +void gsl_dht_free(gsl_dht * t); + + +/* Perform a transform on a sampled array. + * f_in[0] ... f_in[size-1] and similarly for f_out[] + */ +int gsl_dht_apply(const gsl_dht * t, double * f_in, double * f_out); + + +__END_DECLS + +#endif /* __GSL_DHT_H__ */ diff --git a/gsl-2.5/dht/libgsldht.la b/gsl-2.5/dht/libgsldht.la new file mode 100644 index 00000000..0c1aef3b --- /dev/null +++ b/gsl-2.5/dht/libgsldht.la @@ -0,0 +1,41 @@ +# libgsldht.la - a libtool library file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='' + +# Names of this library. +library_names='' + +# The name of the static archive. +old_library='libgsldht.a' + +# Linker flags that can not go in dependency_libs. +inherited_linker_flags='' + +# Libraries that this one depends upon. +dependency_libs=' -lm' + +# Names of additional weak libraries provided by this library +weak_library_names='' + +# Version information for libgsldht. +current= +age= +revision= + +# Is this an already installed library? +installed=no + +# Should we warn about portability when linking against -modules? +shouldnotlink=no + +# Files to dlopen/dlpreopen +dlopen='' +dlpreopen='' + +# Directory that this library needs to be installed in: +libdir='' diff --git a/gsl-2.5/dht/test b/gsl-2.5/dht/test new file mode 100755 index 00000000..5000a76f Binary files /dev/null and b/gsl-2.5/dht/test differ diff --git a/gsl-2.5/dht/test-suite.log b/gsl-2.5/dht/test-suite.log new file mode 100644 index 00000000..76a7a44d --- /dev/null +++ b/gsl-2.5/dht/test-suite.log @@ -0,0 +1,14 @@ +================================= + gsl 2.5: dht/test-suite.log +================================= + +# TOTAL: 1 +# PASS: 1 +# SKIP: 0 +# XFAIL: 0 +# FAIL: 0 +# XPASS: 0 +# ERROR: 0 + +.. contents:: :depth: 2 + diff --git a/gsl-2.5/dht/test.c b/gsl-2.5/dht/test.c new file mode 100644 index 00000000..03cdea47 --- /dev/null +++ b/gsl-2.5/dht/test.c @@ -0,0 +1,193 @@ +/* dht/test_dht.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman + */ +#include +#include +#include +#include +#include +#include +#include + + +/* Test exact small transform. + */ +int +test_dht_exact(void) +{ + int stat = 0; + double f_in[3] = { 1.0, 2.0, 3.0 }; + double f_out[3]; + gsl_dht * t = gsl_dht_new(3, 1.0, 1.0); + gsl_dht_apply(t, f_in, f_out); + + /* Check values. */ + if(fabs( f_out[0]-( 0.375254649407520))/0.375254649407520 > 1.0e-14) stat++; + if(fabs( f_out[1]-(-0.133507872695560))/0.133507872695560 > 1.0e-14) stat++; + if(fabs( f_out[2]-( 0.044679925143840))/0.044679925143840 > 1.0e-14) stat++; + + + /* Check inverse. + * We have to adjust the normalization + * so we can use the same precalculated transform. + */ + gsl_dht_apply(t, f_out, f_in); + f_in[0] *= 13.323691936314223*13.323691936314223; /* jzero[1,4]^2 */ + f_in[1] *= 13.323691936314223*13.323691936314223; + f_in[2] *= 13.323691936314223*13.323691936314223; + + /* The loss of precision on the inverse + * is a little surprising. However, this + * thing is quite tricky since the band-limited + * function represented by the samples {1,2,3} + * need not be very nice. Like in any spectral + * application, you really have to have some + * a-priori knowledge of the underlying function. + */ + if(fabs( f_in[0]-1.0)/1.0 > 2.0e-05) stat++; + if(fabs( f_in[1]-2.0)/2.0 > 2.0e-05) stat++; + if(fabs( f_in[2]-3.0)/3.0 > 2.0e-05) stat++; + + gsl_dht_free(t); + + return stat; +} + + + +/* Test the transform + * Integrate[x J_0(a x) / (x^2 + 1), {x,0,Inf}] = K_0(a) + */ +int +test_dht_simple(void) +{ + int stat = 0; + int n; + double f_in[128]; + double f_out[128]; + gsl_dht * t = gsl_dht_new(128, 0.0, 100.0); + + for(n=0; n<128; n++) { + const double x = gsl_dht_x_sample(t, n); + f_in[n] = 1.0/(1.0+x*x); + } + + gsl_dht_apply(t, f_in, f_out); + + /* This is a difficult transform to calculate this way, + * since it does not satisfy the boundary condition and + * it dies quite slowly. So it is not meaningful to + * compare this to high accuracy. We only check + * that it seems to be working. + */ + if(fabs( f_out[0]-4.00)/4.00 > 0.02) stat++; + if(fabs( f_out[5]-1.84)/1.84 > 0.02) stat++; + if(fabs(f_out[10]-1.27)/1.27 > 0.02) stat++; + if(fabs(f_out[35]-0.352)/0.352 > 0.02) stat++; + if(fabs(f_out[100]-0.0237)/0.0237 > 0.02) stat++; + + gsl_dht_free(t); + + return stat; +} + + +/* Test the transform + * Integrate[ x exp(-x) J_1(a x), {x,0,Inf}] = a F(3/2, 2; 2; -a^2) + */ +int +test_dht_exp1(void) +{ + int stat = 0; + int n; + double f_in[128]; + double f_out[128]; + gsl_dht * t = gsl_dht_new(128, 1.0, 20.0); + + for(n=0; n<128; n++) { + const double x = gsl_dht_x_sample(t, n); + f_in[n] = exp(-x); + } + + gsl_dht_apply(t, f_in, f_out); + + /* Spot check. + * Note that the systematic errors in the calculation + * are quite large, so it is meaningless to compare + * to a high accuracy. + */ + if(fabs( f_out[0]-0.181)/0.181 > 0.02) stat++; + if(fabs( f_out[5]-0.357)/0.357 > 0.02) stat++; + if(fabs(f_out[10]-0.211)/0.211 > 0.02) stat++; + if(fabs(f_out[35]-0.0289)/0.0289 > 0.02) stat++; + if(fabs(f_out[100]-0.00221)/0.00211 > 0.02) stat++; + + gsl_dht_free(t); + + return stat; +} + + +/* Test the transform + * Integrate[ x^2 (1-x^2) J_1(a x), {x,0,1}] = 2/a^2 J_3(a) + */ +int +test_dht_poly1(void) +{ + int stat = 0; + int n; + double f_in[128]; + double f_out[128]; + gsl_dht * t = gsl_dht_new(128, 1.0, 1.0); + + for(n=0; n<128; n++) { + const double x = gsl_dht_x_sample(t, n); + f_in[n] = x * (1.0 - x*x); + } + + gsl_dht_apply(t, f_in, f_out); + + /* Spot check. This function satisfies the boundary condition, + * so the accuracy should be ok. + */ + if(fabs( f_out[0]-0.057274214)/0.057274214 > 1.0e-07) stat++; + if(fabs( f_out[5]-(-0.000190850))/0.000190850 > 1.0e-05) stat++; + if(fabs(f_out[10]-0.000024342)/0.000024342 > 1.0e-04) stat++; + if(fabs(f_out[35]-(-4.04e-07))/4.04e-07 > 1.0e-03) stat++; + if(fabs(f_out[100]-1.0e-08)/1.0e-08 > 0.25) stat++; + + gsl_dht_free(t); + + return stat; +} + + +int main() +{ + gsl_ieee_env_setup (); + + gsl_test( test_dht_exact(), "Small Exact DHT"); + gsl_test( test_dht_simple(), "Simple DHT"); + gsl_test( test_dht_exp1(), "Exp J1 DHT"); + gsl_test( test_dht_poly1(), "Poly J1 DHT"); + + exit (gsl_test_summary()); +} diff --git a/gsl-2.5/dht/test.log b/gsl-2.5/dht/test.log new file mode 100644 index 00000000..c7e848b7 --- /dev/null +++ b/gsl-2.5/dht/test.log @@ -0,0 +1 @@ +Completed [4/4] diff --git a/gsl-2.5/dht/test.trs b/gsl-2.5/dht/test.trs new file mode 100644 index 00000000..3f0f396c --- /dev/null +++ b/gsl-2.5/dht/test.trs @@ -0,0 +1,4 @@ +:test-result: PASS +:global-test-result: PASS +:recheck: no +:copy-in-global-log: no diff --git a/gsl-2.5/diff/.deps/diff.Plo b/gsl-2.5/diff/.deps/diff.Plo new file mode 100644 index 00000000..a04191fa --- /dev/null +++ b/gsl-2.5/diff/.deps/diff.Plo @@ -0,0 +1,173 @@ +diff.lo: diff.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_diff.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_diff.h: diff --git a/gsl-2.5/diff/.deps/test.Po b/gsl-2.5/diff/.deps/test.Po new file mode 100644 index 00000000..9a2ceb8d --- /dev/null +++ b/gsl-2.5/diff/.deps/test.Po @@ -0,0 +1,178 @@ +test.o: test.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_math.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_test.h ../gsl/gsl_ieee_utils.h ../gsl/gsl_diff.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_test.h: + +../gsl/gsl_ieee_utils.h: + +../gsl/gsl_diff.h: diff --git a/gsl-2.5/diff/.libs/libgsldiff.la b/gsl-2.5/diff/.libs/libgsldiff.la new file mode 120000 index 00000000..53c7b7a6 --- /dev/null +++ b/gsl-2.5/diff/.libs/libgsldiff.la @@ -0,0 +1 @@ +../libgsldiff.la \ No newline at end of file diff --git a/gsl-2.5/diff/ChangeLog b/gsl-2.5/diff/ChangeLog new file mode 100644 index 00000000..e478e0a6 --- /dev/null +++ b/gsl-2.5/diff/ChangeLog @@ -0,0 +1,25 @@ +2008-09-18 Brian Gough + + * diff.c test.c: temporarily enable deprecated functions for + testing + + * gsl_diff.h: marked these functions deprecated, use gsl_deriv + instead. + +2008-07-03 Brian Gough + + * Makefile.am (INCLUDES): use top_srcdir instead of top_builddir + +Mon Apr 23 13:26:21 2001 Brian Gough + + * Makefile.am: removed demo from Makefile + + * test.c (test): changed return type to void + +Mon Feb 5 13:42:54 2001 Brian Gough + + * diff.c: moved gradient calculating function into multimin since + it depends on multimin functions + + * test.c (main): tidied up the tests + diff --git a/gsl-2.5/diff/Makefile b/gsl-2.5/diff/Makefile new file mode 100644 index 00000000..c43c3533 --- /dev/null +++ b/gsl-2.5/diff/Makefile @@ -0,0 +1,1027 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# diff/Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + + + + +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/gsl +pkgincludedir = $(includedir)/gsl +pkglibdir = $(libdir)/gsl +pkglibexecdir = $(libexecdir)/gsl +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = x86_64-unknown-linux-gnu +host_triplet = x86_64-unknown-linux-gnu +check_PROGRAMS = test$(EXEEXT) +subdir = diff +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp \ + $(pkginclude_HEADERS) $(top_srcdir)/test-driver ChangeLog +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +libgsldiff_la_LIBADD = +am_libgsldiff_la_OBJECTS = diff.lo +libgsldiff_la_OBJECTS = $(am_libgsldiff_la_OBJECTS) +AM_V_lt = $(am__v_lt_$(V)) +am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) +am__v_lt_0 = --silent +am__v_lt_1 = +am_test_OBJECTS = test.$(OBJEXT) +test_OBJECTS = $(am_test_OBJECTS) +test_DEPENDENCIES = libgsldiff.la ../vector/libgslvector.la \ + ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la \ + ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la +AM_V_P = $(am__v_P_$(V)) +am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY)) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_$(V)) +am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_$(V)) +am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I. -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_$(V)) +am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_$(V)) +am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libgsldiff_la_SOURCES) $(test_SOURCES) +DIST_SOURCES = $(libgsldiff_la_SOURCES) $(test_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(pkgincludedir)" +HEADERS = $(pkginclude_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = .test +LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing aclocal-1.13 +AMTAR = $${TAR-tar} +AM_DEFAULT_VERBOSITY = 1 +AR = ar +AS = as +AUTOCONF = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing autoconf +AUTOHEADER = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing autoheader +AUTOMAKE = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing automake-1.13 +AWK = gawk +CC = gcc +CCDEPMODE = depmode=gcc3 +CFLAGS = -g -O2 +CPP = gcc -E +CPPFLAGS = +CYGPATH_W = echo +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +DLLTOOL = false +DSYMUTIL = +DUMPBIN = +ECHO_C = +ECHO_N = -n +ECHO_T = +EGREP = /usr/bin/grep -E +EXEEXT = +FGREP = /usr/bin/grep -F +GREP = /usr/bin/grep +GSLCBLAS_LDFLAGS = +GSL_CFLAGS = -I${prefix}/include +GSL_LDFLAGS = +GSL_LIBADD = +GSL_LIBM = -lm +GSL_LIBS = -L${exec_prefix}/lib -lgsl +GSL_LT_CBLAS_VERSION = 0:0:0 +GSL_LT_VERSION = 24:0:1 +GSL_MAJOR_VERSION = 2 +GSL_MINOR_VERSION = 5 +HAVE_AIX_IEEE_INTERFACE = +HAVE_DARWIN86_IEEE_INTERFACE = +HAVE_DARWIN_IEEE_INTERFACE = +HAVE_FREEBSD_IEEE_INTERFACE = +HAVE_GNUM68K_IEEE_INTERFACE = +HAVE_GNUPPC_IEEE_INTERFACE = +HAVE_GNUSPARC_IEEE_INTERFACE = +HAVE_GNUX86_IEEE_INTERFACE = +HAVE_HPUX11_IEEE_INTERFACE = +HAVE_HPUX_IEEE_INTERFACE = +HAVE_IRIX_IEEE_INTERFACE = +HAVE_NETBSD_IEEE_INTERFACE = +HAVE_OPENBSD_IEEE_INTERFACE = +HAVE_OS2EMX_IEEE_INTERFACE = +HAVE_SOLARIS_IEEE_INTERFACE = +HAVE_SUNOS4_IEEE_INTERFACE = +HAVE_TRU64_IEEE_INTERFACE = +INSTALL = /usr/bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = $(install_sh) -c -s +LD = /usr/bin/ld -m elf_x86_64 +LDFLAGS = +LIBM = -lm +LIBOBJS = +LIBS = -lm +LIBTOOL = $(SHELL) $(top_builddir)/libtool +LIPO = +LN_S = ln -s +LTLIBOBJS = +MAINT = # +MAKEINFO = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing makeinfo +MANIFEST_TOOL = : +MKDIR_P = /usr/bin/mkdir -p +NM = /usr/bin/nm -B +NMEDIT = +OBJDUMP = objdump +OBJEXT = o +OTOOL = +OTOOL64 = +PACKAGE = gsl +PACKAGE_BUGREPORT = +PACKAGE_NAME = gsl +PACKAGE_STRING = gsl 2.5 +PACKAGE_TARNAME = gsl +PACKAGE_URL = +PACKAGE_VERSION = 2.5 +PATH_SEPARATOR = : +RANLIB = ranlib +SED = /usr/bin/sed +SET_MAKE = +SHELL = /bin/sh +STRIP = strip +VERSION = 2.5 +abs_builddir = /home/groups/kipac/chto/package/gsl/gsl-2.5/diff +abs_srcdir = /home/groups/kipac/chto/package/gsl/gsl-2.5/diff +abs_top_builddir = /home/groups/kipac/chto/package/gsl/gsl-2.5 +abs_top_srcdir = /home/groups/kipac/chto/package/gsl/gsl-2.5 +ac_ct_AR = ar +ac_ct_CC = gcc +ac_ct_DUMPBIN = +am__include = include +am__leading_dot = . +am__quote = +am__tar = $${TAR-tar} chof - "$$tardir" +am__untar = $${TAR-tar} xf - +bindir = ${exec_prefix}/bin +build = x86_64-unknown-linux-gnu +build_alias = +build_cpu = x86_64 +build_os = linux-gnu +build_vendor = unknown +builddir = . +datadir = ${datarootdir} +datarootdir = ${prefix}/share +docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} +dvidir = ${docdir} +exec_prefix = ${prefix} +host = x86_64-unknown-linux-gnu +host_alias = +host_cpu = x86_64 +host_os = linux-gnu +host_vendor = unknown +htmldir = ${docdir} +includedir = ${prefix}/include +infodir = ${datarootdir}/info +install_sh = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/install-sh +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +localedir = ${datarootdir}/locale +localstatedir = ${prefix}/var +mandir = ${datarootdir}/man +mkdir_p = $(MKDIR_P) +oldincludedir = /usr/include +pdfdir = ${docdir} +prefix = /home/groups/kipac/chto/package/gsl/gsl_lib +program_transform_name = s,x,x, +psdir = ${docdir} +sbindir = ${exec_prefix}/sbin +sharedstatedir = ${prefix}/com +srcdir = . +sysconfdir = ${prefix}/etc +target_alias = +top_build_prefix = ../ +top_builddir = .. +top_srcdir = .. +noinst_LTLIBRARIES = libgsldiff.la +AM_CPPFLAGS = -I$(top_srcdir) +libgsldiff_la_SOURCES = diff.c +pkginclude_HEADERS = gsl_diff.h +TESTS = $(check_PROGRAMS) +test_SOURCES = test.c +test_LDADD = libgsldiff.la ../vector/libgslvector.la ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu diff/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu diff/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: # $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): # $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libgsldiff.la: $(libgsldiff_la_OBJECTS) $(libgsldiff_la_DEPENDENCIES) $(EXTRA_libgsldiff_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(libgsldiff_la_OBJECTS) $(libgsldiff_la_LIBADD) $(LIBS) + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) $(EXTRA_test_DEPENDENCIES) + @rm -f test$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_OBJECTS) $(test_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +include ./$(DEPDIR)/diff.Plo +include ./$(DEPDIR)/test.Po + +.c.o: + $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# $(AM_V_CC)source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(COMPILE) -c $< + +.c.obj: + $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# $(AM_V_CC)source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: + $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +# $(AM_V_CC)source='$<' object='$@' libtool=yes \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-pkgincludeHEADERS: $(pkginclude_HEADERS) + @$(NORMAL_INSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \ + done + +uninstall-pkgincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + else \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_PROGRAMS) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +test.log: test$(EXEEXT) + @p='test$(EXEEXT)'; \ + b='test'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +#.test$(EXEEXT).log: +# @p='$<'; \ +# $(am__set_b); \ +# $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +# --log-file $$b.log --trs-file $$b.trs \ +# $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +# "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-am +all-am: Makefile $(LTLIBRARIES) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(pkgincludedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-pkgincludeHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-pkgincludeHEADERS + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES cscopelist-am ctags ctags-am distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-pkgincludeHEADERS \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + recheck tags tags-am uninstall uninstall-am \ + uninstall-pkgincludeHEADERS + + +#demo_SOURCES = demo.c +#demo_LDADD = libgsldiff.la ../vector/libgslvector.la ../block/libgslblock.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gsl-2.5/diff/Makefile.am b/gsl-2.5/diff/Makefile.am new file mode 100644 index 00000000..39530407 --- /dev/null +++ b/gsl-2.5/diff/Makefile.am @@ -0,0 +1,16 @@ +noinst_LTLIBRARIES = libgsldiff.la + +AM_CPPFLAGS = -I$(top_srcdir) + +libgsldiff_la_SOURCES = diff.c + +pkginclude_HEADERS = gsl_diff.h + +TESTS = $(check_PROGRAMS) +check_PROGRAMS = test #demo + +test_SOURCES = test.c +test_LDADD = libgsldiff.la ../vector/libgslvector.la ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la + +#demo_SOURCES = demo.c +#demo_LDADD = libgsldiff.la ../vector/libgslvector.la ../block/libgslblock.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la diff --git a/gsl-2.5/diff/Makefile.in b/gsl-2.5/diff/Makefile.in new file mode 100644 index 00000000..b90d4c70 --- /dev/null +++ b/gsl-2.5/diff/Makefile.in @@ -0,0 +1,1027 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + + +VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +check_PROGRAMS = test$(EXEEXT) +subdir = diff +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp \ + $(pkginclude_HEADERS) $(top_srcdir)/test-driver ChangeLog +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +libgsldiff_la_LIBADD = +am_libgsldiff_la_OBJECTS = diff.lo +libgsldiff_la_OBJECTS = $(am_libgsldiff_la_OBJECTS) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +am_test_OBJECTS = test.$(OBJEXT) +test_OBJECTS = $(am_test_OBJECTS) +test_DEPENDENCIES = libgsldiff.la ../vector/libgslvector.la \ + ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la \ + ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libgsldiff_la_SOURCES) $(test_SOURCES) +DIST_SOURCES = $(libgsldiff_la_SOURCES) $(test_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(pkgincludedir)" +HEADERS = $(pkginclude_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = @EXEEXT@ .test +LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +GSLCBLAS_LDFLAGS = @GSLCBLAS_LDFLAGS@ +GSL_CFLAGS = @GSL_CFLAGS@ +GSL_LDFLAGS = @GSL_LDFLAGS@ +GSL_LIBADD = @GSL_LIBADD@ +GSL_LIBM = @GSL_LIBM@ +GSL_LIBS = @GSL_LIBS@ +GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ +GSL_LT_VERSION = @GSL_LT_VERSION@ +GSL_MAJOR_VERSION = @GSL_MAJOR_VERSION@ +GSL_MINOR_VERSION = @GSL_MINOR_VERSION@ +HAVE_AIX_IEEE_INTERFACE = @HAVE_AIX_IEEE_INTERFACE@ +HAVE_DARWIN86_IEEE_INTERFACE = @HAVE_DARWIN86_IEEE_INTERFACE@ +HAVE_DARWIN_IEEE_INTERFACE = @HAVE_DARWIN_IEEE_INTERFACE@ +HAVE_FREEBSD_IEEE_INTERFACE = @HAVE_FREEBSD_IEEE_INTERFACE@ +HAVE_GNUM68K_IEEE_INTERFACE = @HAVE_GNUM68K_IEEE_INTERFACE@ +HAVE_GNUPPC_IEEE_INTERFACE = @HAVE_GNUPPC_IEEE_INTERFACE@ +HAVE_GNUSPARC_IEEE_INTERFACE = @HAVE_GNUSPARC_IEEE_INTERFACE@ +HAVE_GNUX86_IEEE_INTERFACE = @HAVE_GNUX86_IEEE_INTERFACE@ +HAVE_HPUX11_IEEE_INTERFACE = @HAVE_HPUX11_IEEE_INTERFACE@ +HAVE_HPUX_IEEE_INTERFACE = @HAVE_HPUX_IEEE_INTERFACE@ +HAVE_IRIX_IEEE_INTERFACE = @HAVE_IRIX_IEEE_INTERFACE@ +HAVE_NETBSD_IEEE_INTERFACE = @HAVE_NETBSD_IEEE_INTERFACE@ +HAVE_OPENBSD_IEEE_INTERFACE = @HAVE_OPENBSD_IEEE_INTERFACE@ +HAVE_OS2EMX_IEEE_INTERFACE = @HAVE_OS2EMX_IEEE_INTERFACE@ +HAVE_SOLARIS_IEEE_INTERFACE = @HAVE_SOLARIS_IEEE_INTERFACE@ +HAVE_SUNOS4_IEEE_INTERFACE = @HAVE_SUNOS4_IEEE_INTERFACE@ +HAVE_TRU64_IEEE_INTERFACE = @HAVE_TRU64_IEEE_INTERFACE@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBM = @LIBM@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +noinst_LTLIBRARIES = libgsldiff.la +AM_CPPFLAGS = -I$(top_srcdir) +libgsldiff_la_SOURCES = diff.c +pkginclude_HEADERS = gsl_diff.h +TESTS = $(check_PROGRAMS) +test_SOURCES = test.c +test_LDADD = libgsldiff.la ../vector/libgslvector.la ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu diff/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu diff/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libgsldiff.la: $(libgsldiff_la_OBJECTS) $(libgsldiff_la_DEPENDENCIES) $(EXTRA_libgsldiff_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(libgsldiff_la_OBJECTS) $(libgsldiff_la_LIBADD) $(LIBS) + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) $(EXTRA_test_DEPENDENCIES) + @rm -f test$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_OBJECTS) $(test_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/diff.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test.Po@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-pkgincludeHEADERS: $(pkginclude_HEADERS) + @$(NORMAL_INSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \ + done + +uninstall-pkgincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + else \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_PROGRAMS) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +test.log: test$(EXEEXT) + @p='test$(EXEEXT)'; \ + b='test'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +@am__EXEEXT_TRUE@.test$(EXEEXT).log: +@am__EXEEXT_TRUE@ @p='$<'; \ +@am__EXEEXT_TRUE@ $(am__set_b); \ +@am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +@am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ +@am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +@am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-am +all-am: Makefile $(LTLIBRARIES) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(pkgincludedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-pkgincludeHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-pkgincludeHEADERS + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES cscopelist-am ctags ctags-am distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-pkgincludeHEADERS \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + recheck tags tags-am uninstall uninstall-am \ + uninstall-pkgincludeHEADERS + + +#demo_SOURCES = demo.c +#demo_LDADD = libgsldiff.la ../vector/libgslvector.la ../block/libgslblock.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gsl-2.5/diff/diff.c b/gsl-2.5/diff/diff.c new file mode 100644 index 00000000..bb7041f8 --- /dev/null +++ b/gsl-2.5/diff/diff.c @@ -0,0 +1,182 @@ +/* diff/diff.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 David Morrison + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include + +#undef GSL_DISABLE_DEPRECATED +#include + +int +gsl_diff_backward (const gsl_function * f, + double x, double *result, double *abserr) +{ + /* Construct a divided difference table with a fairly large step + size to get a very rough estimate of f''. Use this to estimate + the step size which will minimize the error in calculating f'. */ + + int i, k; + double h = GSL_SQRT_DBL_EPSILON; + double a[3], d[3], a2; + + /* Algorithm based on description on pg. 204 of Conte and de Boor + (CdB) - coefficients of Newton form of polynomial of degree 2. */ + + for (i = 0; i < 3; i++) + { + a[i] = x + (i - 2.0) * h; + d[i] = GSL_FN_EVAL (f, a[i]); + } + + for (k = 1; k < 4; k++) + { + for (i = 0; i < 3 - k; i++) + { + d[i] = (d[i + 1] - d[i]) / (a[i + k] - a[i]); + } + } + + /* Adapt procedure described on pg. 282 of CdB to find best value of + step size. */ + + a2 = fabs (d[0] + d[1] + d[2]); + + if (a2 < 100.0 * GSL_SQRT_DBL_EPSILON) + { + a2 = 100.0 * GSL_SQRT_DBL_EPSILON; + } + + h = sqrt (GSL_SQRT_DBL_EPSILON / (2.0 * a2)); + + if (h > 100.0 * GSL_SQRT_DBL_EPSILON) + { + h = 100.0 * GSL_SQRT_DBL_EPSILON; + } + + *result = (GSL_FN_EVAL (f, x) - GSL_FN_EVAL (f, x - h)) / h; + *abserr = fabs (10.0 * a2 * h); + + return GSL_SUCCESS; +} + +int +gsl_diff_forward (const gsl_function * f, + double x, double *result, double *abserr) +{ + /* Construct a divided difference table with a fairly large step + size to get a very rough estimate of f''. Use this to estimate + the step size which will minimize the error in calculating f'. */ + + int i, k; + double h = GSL_SQRT_DBL_EPSILON; + double a[3], d[3], a2; + + /* Algorithm based on description on pg. 204 of Conte and de Boor + (CdB) - coefficients of Newton form of polynomial of degree 2. */ + + for (i = 0; i < 3; i++) + { + a[i] = x + i * h; + d[i] = GSL_FN_EVAL (f, a[i]); + } + + for (k = 1; k < 4; k++) + { + for (i = 0; i < 3 - k; i++) + { + d[i] = (d[i + 1] - d[i]) / (a[i + k] - a[i]); + } + } + + /* Adapt procedure described on pg. 282 of CdB to find best value of + step size. */ + + a2 = fabs (d[0] + d[1] + d[2]); + + if (a2 < 100.0 * GSL_SQRT_DBL_EPSILON) + { + a2 = 100.0 * GSL_SQRT_DBL_EPSILON; + } + + h = sqrt (GSL_SQRT_DBL_EPSILON / (2.0 * a2)); + + if (h > 100.0 * GSL_SQRT_DBL_EPSILON) + { + h = 100.0 * GSL_SQRT_DBL_EPSILON; + } + + *result = (GSL_FN_EVAL (f, x + h) - GSL_FN_EVAL (f, x)) / h; + *abserr = fabs (10.0 * a2 * h); + + return GSL_SUCCESS; +} + +int +gsl_diff_central (const gsl_function * f, + double x, double *result, double *abserr) +{ + /* Construct a divided difference table with a fairly large step + size to get a very rough estimate of f'''. Use this to estimate + the step size which will minimize the error in calculating f'. */ + + int i, k; + double h = GSL_SQRT_DBL_EPSILON; + double a[4], d[4], a3; + + /* Algorithm based on description on pg. 204 of Conte and de Boor + (CdB) - coefficients of Newton form of polynomial of degree 3. */ + + for (i = 0; i < 4; i++) + { + a[i] = x + (i - 2.0) * h; + d[i] = GSL_FN_EVAL (f, a[i]); + } + + for (k = 1; k < 5; k++) + { + for (i = 0; i < 4 - k; i++) + { + d[i] = (d[i + 1] - d[i]) / (a[i + k] - a[i]); + } + } + + /* Adapt procedure described on pg. 282 of CdB to find best + value of step size. */ + + a3 = fabs (d[0] + d[1] + d[2] + d[3]); + + if (a3 < 100.0 * GSL_SQRT_DBL_EPSILON) + { + a3 = 100.0 * GSL_SQRT_DBL_EPSILON; + } + + h = pow (GSL_SQRT_DBL_EPSILON / (2.0 * a3), 1.0 / 3.0); + + if (h > 100.0 * GSL_SQRT_DBL_EPSILON) + { + h = 100.0 * GSL_SQRT_DBL_EPSILON; + } + + *result = (GSL_FN_EVAL (f, x + h) - GSL_FN_EVAL (f, x - h)) / (2.0 * h); + *abserr = fabs (100.0 * a3 * h * h); + + return GSL_SUCCESS; +} diff --git a/gsl-2.5/diff/diff.lo b/gsl-2.5/diff/diff.lo new file mode 100644 index 00000000..17b872c2 --- /dev/null +++ b/gsl-2.5/diff/diff.lo @@ -0,0 +1,12 @@ +# diff.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/diff.o' + +# Name of the non-PIC object +non_pic_object='diff.o' + diff --git a/gsl-2.5/diff/gsl_diff.h b/gsl-2.5/diff/gsl_diff.h new file mode 100644 index 00000000..a145894f --- /dev/null +++ b/gsl-2.5/diff/gsl_diff.h @@ -0,0 +1,52 @@ +/* diff/gsl_diff.h + * + * Copyright (C) 2000 David Morrison + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_DIFF_H__ +#define __GSL_DIFF_H__ +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +#ifndef GSL_DISABLE_DEPRECATED +int gsl_diff_central (const gsl_function *f, + double x, + double *result, double *abserr); + +int gsl_diff_backward (const gsl_function *f, + double x, + double *result, double *abserr); + +int gsl_diff_forward (const gsl_function *f, + double x, + double *result, double *abserr); +#endif + +__END_DECLS + +#endif /* __GSL_DIFF_H__ */ diff --git a/gsl-2.5/diff/libgsldiff.la b/gsl-2.5/diff/libgsldiff.la new file mode 100644 index 00000000..1ba164c7 --- /dev/null +++ b/gsl-2.5/diff/libgsldiff.la @@ -0,0 +1,41 @@ +# libgsldiff.la - a libtool library file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='' + +# Names of this library. +library_names='' + +# The name of the static archive. +old_library='libgsldiff.a' + +# Linker flags that can not go in dependency_libs. +inherited_linker_flags='' + +# Libraries that this one depends upon. +dependency_libs=' -lm' + +# Names of additional weak libraries provided by this library +weak_library_names='' + +# Version information for libgsldiff. +current= +age= +revision= + +# Is this an already installed library? +installed=no + +# Should we warn about portability when linking against -modules? +shouldnotlink=no + +# Files to dlopen/dlpreopen +dlopen='' +dlpreopen='' + +# Directory that this library needs to be installed in: +libdir='' diff --git a/gsl-2.5/diff/test b/gsl-2.5/diff/test new file mode 100755 index 00000000..a229232c Binary files /dev/null and b/gsl-2.5/diff/test differ diff --git a/gsl-2.5/diff/test-suite.log b/gsl-2.5/diff/test-suite.log new file mode 100644 index 00000000..d217dd03 --- /dev/null +++ b/gsl-2.5/diff/test-suite.log @@ -0,0 +1,14 @@ +================================== + gsl 2.5: diff/test-suite.log +================================== + +# TOTAL: 1 +# PASS: 1 +# SKIP: 0 +# XFAIL: 0 +# FAIL: 0 +# XPASS: 0 +# ERROR: 0 + +.. contents:: :depth: 2 + diff --git a/gsl-2.5/diff/test.c b/gsl-2.5/diff/test.c new file mode 100644 index 00000000..c3aad4ad --- /dev/null +++ b/gsl-2.5/diff/test.c @@ -0,0 +1,197 @@ +/* diff/test.c + * + * Copyright (C) 2000 David Morrison + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include +#include +#include + +#undef GSL_DISABLE_DEPRECATED +#include + +double +f1 (double x, void *params) +{ + return exp (x); +} + +double +df1 (double x, void *params) +{ + return exp (x); +} + +double +f2 (double x, void *params) +{ + if (x >= 0.0) + { + return x * sqrt (x); + } + else + { + return 0.0; + } +} + +double +df2 (double x, void *params) +{ + if (x >= 0.0) + { + return 1.5 * sqrt (x); + } + else + { + return 0.0; + } +} + +double +f3 (double x, void *params) +{ + if (x != 0.0) + { + return sin (1 / x); + } + else + { + return 0.0; + } +} + +double +df3 (double x, void *params) +{ + if (x != 0.0) + { + return -cos (1 / x) / (x * x); + } + else + { + return 0.0; + } +} + +double +f4 (double x, void *params) +{ + return exp (-x * x); +} + +double +df4 (double x, void *params) +{ + return -2.0 * x * exp (-x * x); +} + +double +f5 (double x, void *params) +{ + return x * x; +} + +double +df5 (double x, void *params) +{ + return 2.0 * x; +} + +double +f6 (double x, void *params) +{ + return 1.0 / x; +} + +double +df6 (double x, void *params) +{ + return -1.0 / (x * x); +} + +typedef int (diff_fn) (const gsl_function * f, double x, double * res, double *abserr); + +void +test (diff_fn * diff, gsl_function * f, gsl_function * df, double x, + const char * desc) +{ + double result, abserr; + double expected = GSL_FN_EVAL (df, x); + (*diff) (f, x, &result, &abserr); + gsl_test_abs (result, expected, abserr, desc); + gsl_test (fabs(result-expected) > abserr, "%s, valid error estimate", desc); +} + +int +main () +{ + gsl_function F1, DF1, F2, DF2, F3, DF3, F4, DF4, F5, DF5, F6, DF6; + + gsl_ieee_env_setup (); + + F1.function = &f1; + DF1.function = &df1; + + F2.function = &f2; + DF2.function = &df2; + + F3.function = &f3; + DF3.function = &df3; + + F4.function = &f4; + DF4.function = &df4; + + F5.function = &f5; + DF5.function = &df5; + + F6.function = &f6; + DF6.function = &df6; + + test (&gsl_diff_central, &F1, &DF1, 1.0, "exp(x), x=1, central diff"); + test (&gsl_diff_forward, &F1, &DF1, 1.0, "exp(x), x=1, forward diff"); + test (&gsl_diff_backward, &F1, &DF1, 1.0, "exp(x), x=1, backward diff"); + + test (&gsl_diff_central, &F2, &DF2, 0.1, "x^(3/2), x=0.1, central diff"); + test (&gsl_diff_forward, &F2, &DF2, 0.1, "x^(3/2), x=0.1, forward diff"); + test (&gsl_diff_backward, &F2, &DF2, 0.1, "x^(3/2), x=0.1, backward diff"); + + test (&gsl_diff_central, &F3, &DF3, 0.45, "sin(1/x), x=0.45, central diff"); + test (&gsl_diff_forward, &F3, &DF3, 0.45, "sin(1/x), x=0.45, forward diff"); + test (&gsl_diff_backward, &F3, &DF3, 0.45, "sin(1/x), x=0.45, backward diff"); + + test (&gsl_diff_central, &F4, &DF4, 0.5, "exp(-x^2), x=0.5, central diff"); + test (&gsl_diff_forward, &F4, &DF4, 0.5, "exp(-x^2), x=0.5, forward diff"); + test (&gsl_diff_backward, &F4, &DF4, 0.5, "exp(-x^2), x=0.5, backward diff"); + + test (&gsl_diff_central, &F5, &DF5, 0.0, "x^2, x=0, central diff"); + test (&gsl_diff_forward, &F5, &DF5, 0.0, "x^2, x=0, forward diff"); + test (&gsl_diff_backward, &F5, &DF5, 0.0, "x^2, x=0, backward diff"); + + test (&gsl_diff_central, &F6, &DF6, 10.0, "1/x, x=10, central diff"); + test (&gsl_diff_forward, &F6, &DF6, 10.0, "1/x, x=10, forward diff"); + test (&gsl_diff_backward, &F6, &DF6, 10.0, "1/x, x=10, backward diff"); + + exit (gsl_test_summary ()); +} + + diff --git a/gsl-2.5/diff/test.log b/gsl-2.5/diff/test.log new file mode 100644 index 00000000..41e5dce2 --- /dev/null +++ b/gsl-2.5/diff/test.log @@ -0,0 +1 @@ +Completed [36/36] diff --git a/gsl-2.5/diff/test.trs b/gsl-2.5/diff/test.trs new file mode 100644 index 00000000..3f0f396c --- /dev/null +++ b/gsl-2.5/diff/test.trs @@ -0,0 +1,4 @@ +:test-result: PASS +:global-test-result: PASS +:recheck: no +:copy-in-global-log: no diff --git a/gsl-2.5/doc/Makefile b/gsl-2.5/doc/Makefile new file mode 100644 index 00000000..0bc8df0e --- /dev/null +++ b/gsl-2.5/doc/Makefile @@ -0,0 +1,953 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# doc/Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + + + +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/gsl +pkgincludedir = $(includedir)/gsl +pkglibdir = $(libdir)/gsl +pkglibexecdir = $(libexecdir)/gsl +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = x86_64-unknown-linux-gnu +host_triplet = x86_64-unknown-linux-gnu +subdir = doc +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs TODO texinfo.tex +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_$(V)) +am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY)) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_$(V)) +am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_$(V)) +am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) +am__v_at_0 = @ +am__v_at_1 = +SOURCES = +DIST_SOURCES = +RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ + ctags-recursive dvi-recursive html-recursive info-recursive \ + install-data-recursive install-dvi-recursive \ + install-exec-recursive install-html-recursive \ + install-info-recursive install-pdf-recursive \ + install-ps-recursive install-recursive installcheck-recursive \ + installdirs-recursive pdf-recursive ps-recursive \ + tags-recursive uninstall-recursive +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +man1dir = $(mandir)/man1 +am__installdirs = "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(man3dir)" +man3dir = $(mandir)/man3 +NROFF = nroff +MANS = $(man_MANS) +DATA = $(noinst_DATA) +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +am__recursive_targets = \ + $(RECURSIVE_TARGETS) \ + $(RECURSIVE_CLEAN_TARGETS) \ + $(am__extra_recursive_targets) +AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ + distdir +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" +ACLOCAL = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing aclocal-1.13 +AMTAR = $${TAR-tar} +AM_DEFAULT_VERBOSITY = 1 +AR = ar +AS = as +AUTOCONF = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing autoconf +AUTOHEADER = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing autoheader +AUTOMAKE = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing automake-1.13 +AWK = gawk +CC = gcc +CCDEPMODE = depmode=gcc3 +CFLAGS = -g -O2 +CPP = gcc -E +CPPFLAGS = +CYGPATH_W = echo +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +DLLTOOL = false +DSYMUTIL = +DUMPBIN = +ECHO_C = +ECHO_N = -n +ECHO_T = +EGREP = /usr/bin/grep -E +EXEEXT = +FGREP = /usr/bin/grep -F +GREP = /usr/bin/grep +GSLCBLAS_LDFLAGS = +GSL_CFLAGS = -I${prefix}/include +GSL_LDFLAGS = +GSL_LIBADD = +GSL_LIBM = -lm +GSL_LIBS = -L${exec_prefix}/lib -lgsl +GSL_LT_CBLAS_VERSION = 0:0:0 +GSL_LT_VERSION = 24:0:1 +GSL_MAJOR_VERSION = 2 +GSL_MINOR_VERSION = 5 +HAVE_AIX_IEEE_INTERFACE = +HAVE_DARWIN86_IEEE_INTERFACE = +HAVE_DARWIN_IEEE_INTERFACE = +HAVE_FREEBSD_IEEE_INTERFACE = +HAVE_GNUM68K_IEEE_INTERFACE = +HAVE_GNUPPC_IEEE_INTERFACE = +HAVE_GNUSPARC_IEEE_INTERFACE = +HAVE_GNUX86_IEEE_INTERFACE = +HAVE_HPUX11_IEEE_INTERFACE = +HAVE_HPUX_IEEE_INTERFACE = +HAVE_IRIX_IEEE_INTERFACE = +HAVE_NETBSD_IEEE_INTERFACE = +HAVE_OPENBSD_IEEE_INTERFACE = +HAVE_OS2EMX_IEEE_INTERFACE = +HAVE_SOLARIS_IEEE_INTERFACE = +HAVE_SUNOS4_IEEE_INTERFACE = +HAVE_TRU64_IEEE_INTERFACE = +INSTALL = /usr/bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = $(install_sh) -c -s +LD = /usr/bin/ld -m elf_x86_64 +LDFLAGS = +LIBM = -lm +LIBOBJS = +LIBS = -lm +LIBTOOL = $(SHELL) $(top_builddir)/libtool +LIPO = +LN_S = ln -s +LTLIBOBJS = +MAINT = # +MAKEINFO = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing makeinfo +MANIFEST_TOOL = : +MKDIR_P = /usr/bin/mkdir -p +NM = /usr/bin/nm -B +NMEDIT = +OBJDUMP = objdump +OBJEXT = o +OTOOL = +OTOOL64 = +PACKAGE = gsl +PACKAGE_BUGREPORT = +PACKAGE_NAME = gsl +PACKAGE_STRING = gsl 2.5 +PACKAGE_TARNAME = gsl +PACKAGE_URL = +PACKAGE_VERSION = 2.5 +PATH_SEPARATOR = : +RANLIB = ranlib +SED = /usr/bin/sed +SET_MAKE = +SHELL = /bin/sh +STRIP = strip +VERSION = 2.5 +abs_builddir = /home/groups/kipac/chto/package/gsl/gsl-2.5/doc +abs_srcdir = /home/groups/kipac/chto/package/gsl/gsl-2.5/doc +abs_top_builddir = /home/groups/kipac/chto/package/gsl/gsl-2.5 +abs_top_srcdir = /home/groups/kipac/chto/package/gsl/gsl-2.5 +ac_ct_AR = ar +ac_ct_CC = gcc +ac_ct_DUMPBIN = +am__include = include +am__leading_dot = . +am__quote = +am__tar = $${TAR-tar} chof - "$$tardir" +am__untar = $${TAR-tar} xf - +bindir = ${exec_prefix}/bin +build = x86_64-unknown-linux-gnu +build_alias = +build_cpu = x86_64 +build_os = linux-gnu +build_vendor = unknown +builddir = . +datadir = ${datarootdir} +datarootdir = ${prefix}/share +docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} +dvidir = ${docdir} +exec_prefix = ${prefix} +host = x86_64-unknown-linux-gnu +host_alias = +host_cpu = x86_64 +host_os = linux-gnu +host_vendor = unknown +htmldir = ${docdir} +includedir = ${prefix}/include +infodir = ${datarootdir}/info +install_sh = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/install-sh +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +localedir = ${datarootdir}/locale +localstatedir = ${prefix}/var +mandir = ${datarootdir}/man +mkdir_p = $(MKDIR_P) +oldincludedir = /usr/include +pdfdir = ${docdir} +prefix = /home/groups/kipac/chto/package/gsl/gsl_lib +program_transform_name = s,x,x, +psdir = ${docdir} +sbindir = ${exec_prefix}/sbin +sharedstatedir = ${prefix}/com +srcdir = . +sysconfdir = ${prefix}/etc +target_alias = +top_build_prefix = ../ +top_builddir = .. +top_srcdir = .. +SUBDIRS = . examples + +#info_TEXINFOS = gsl-ref.texi +noinst_TEXINFOS = gsl-design.texi +man_MANS = gsl.3 gsl-config.1 gsl-randist.1 gsl-histogram.1 +figures = \ + images/bspline.png \ + images/cheb.png \ + images/dwt.png \ + images/fft-complex-radix2.png \ + images/fft-real-mixedradix.png \ + images/filt_edge.png \ + images/fit-exp.png \ + images/fit-wlinear2.png \ + images/fit-wlinear.png \ + images/gaussfilt.png \ + images/gaussfilt2.png \ + images/histogram.png \ + images/histogram2d.png \ + images/impulse.png \ + images/interp2d.png \ + images/interp_compare.png \ + images/interp.png \ + images/interpp.png \ + images/min-interval.png \ + images/movstat1.png \ + images/movstat2.png \ + images/movstat3.png \ + images/multilarge.png \ + images/multimin.png \ + images/nlfit2b.png \ + images/nlfit2.png \ + images/nlfit3.png \ + images/ntuple.png \ + images/ode-vdp.png \ + images/qrng.png \ + images/rand-bernoulli.png \ + images/rand-beta.png \ + images/rand-binomial.png \ + images/rand-bivariate-gaussian.png \ + images/rand-cauchy.png \ + images/rand-chisq.png \ + images/rand-erlang.png \ + images/rand-exponential.png \ + images/rand-exppow.png \ + images/rand-fdist.png \ + images/rand-flat.png \ + images/rand-gamma.png \ + images/rand-gaussian.png \ + images/rand-gaussian-tail.png \ + images/rand-geometric.png \ + images/rand-gumbel1.png \ + images/rand-gumbel2.png \ + images/rand-hypergeometric.png \ + images/rand-landau.png \ + images/rand-laplace.png \ + images/rand-levy.png \ + images/rand-levyskew.png \ + images/rand-logarithmic.png \ + images/rand-logistic.png \ + images/rand-lognormal.png \ + images/rand-nbinomial.png \ + images/random-walk.png \ + images/rand-pareto.png \ + images/rand-pascal.png \ + images/rand-poisson.png \ + images/rand-rayleigh.png \ + images/rand-rayleigh-tail.png \ + images/rand-tdist.png \ + images/rand-weibull.png \ + images/regularized2.png \ + images/regularized.png \ + images/robust.png \ + images/siman-12-cities.png \ + images/siman-energy.png \ + images/siman-final-route.png \ + images/siman-initial-route.png \ + images/siman-test.png \ + images/sparse_poisson.png + +rst_files = \ + autoconf.rst \ + blas.rst \ + bspline.rst \ + cblas.rst \ + cheb.rst \ + combination.rst \ + complex.rst \ + const.rst \ + contrib.rst \ + debug.rst \ + dht.rst \ + diff.rst \ + dwt.rst \ + eigen.rst \ + err.rst \ + fdl.rst \ + fft.rst \ + filter.rst \ + gpl.rst \ + histogram.rst \ + ieee754.rst \ + include.rst \ + index.rst \ + integration.rst \ + interp.rst \ + intro.rst \ + linalg.rst \ + lls.rst \ + math.rst \ + min.rst \ + montecarlo.rst \ + movstat.rst \ + multimin.rst \ + multiroots.rst \ + multiset.rst \ + nls.rst \ + ntuple.rst \ + ode-initval.rst \ + permutation.rst \ + poly.rst \ + qrng.rst \ + randist.rst \ + rng.rst \ + roots.rst \ + rstat.rst \ + siman.rst \ + sort.rst \ + spblas.rst \ + specfunc-airy.rst \ + specfunc-bessel.rst \ + specfunc-clausen.rst \ + specfunc-coulomb.rst \ + specfunc-coupling.rst \ + specfunc-dawson.rst \ + specfunc-debye.rst \ + specfunc-dilog.rst \ + specfunc-elementary.rst \ + specfunc-ellint.rst \ + specfunc-elljac.rst \ + specfunc-erf.rst \ + specfunc-expint.rst \ + specfunc-exp.rst \ + specfunc-fermi-dirac.rst \ + specfunc-gamma.rst \ + specfunc-gegenbauer.rst \ + specfunc-hermite.rst \ + specfunc-hyperg.rst \ + specfunc-laguerre.rst \ + specfunc-lambert.rst \ + specfunc-legendre.rst \ + specfunc-log.rst \ + specfunc-mathieu.rst \ + specfunc-pow-int.rst \ + specfunc-psi.rst \ + specfunc.rst \ + specfunc-synchrotron.rst \ + specfunc-transport.rst \ + specfunc-trig.rst \ + specfunc-zeta.rst \ + splinalg.rst \ + spmatrix.rst \ + statistics.rst \ + sum.rst \ + usage.rst \ + vectors.rst + +static_files = \ + _static/fdl.txt \ + _static/gpl.txt + +noinst_DATA = $(figures) $(rst_files) $(static_files) +EXTRA_DIST = $(man_MANS) $(noinst_DATA) gsl-design.texi gsl-ref.info conf.py +SPHINX_OPTS = +SPHINX_BUILD = sphinx-build +SPHINX_SOURCEDIR = . +SPHINX_BUILDDIR = _build + +# targets supported by sphinx +SPHINX_TARGETS = html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf latexpdfja text man texinfo gettext changes xml pseudoxml linkcheck doctest coverage +all: all-recursive + +.SUFFIXES: +$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu doc/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: # $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): # $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-man1: $(man_MANS) + @$(NORMAL_INSTALL) + @list1=''; \ + list2='$(man_MANS)'; \ + test -n "$(man1dir)" \ + && test -n "`echo $$list1$$list2`" \ + || exit 0; \ + echo " $(MKDIR_P) '$(DESTDIR)$(man1dir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(man1dir)" || exit 1; \ + { for i in $$list1; do echo "$$i"; done; \ + if test -n "$$list2"; then \ + for i in $$list2; do echo "$$i"; done \ + | sed -n '/\.1[a-z]*$$/p'; \ + fi; \ + } | while read p; do \ + if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; echo "$$p"; \ + done | \ + sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ + -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \ + sed 'N;N;s,\n, ,g' | { \ + list=; while read file base inst; do \ + if test "$$base" = "$$inst"; then list="$$list $$file"; else \ + echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \ + $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst" || exit $$?; \ + fi; \ + done; \ + for i in $$list; do echo "$$i"; done | $(am__base_list) | \ + while read files; do \ + test -z "$$files" || { \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man1dir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(man1dir)" || exit $$?; }; \ + done; } + +uninstall-man1: + @$(NORMAL_UNINSTALL) + @list=''; test -n "$(man1dir)" || exit 0; \ + files=`{ for i in $$list; do echo "$$i"; done; \ + l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \ + sed -n '/\.1[a-z]*$$/p'; \ + } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ + -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ + dir='$(DESTDIR)$(man1dir)'; $(am__uninstall_files_from_dir) +install-man3: $(man_MANS) + @$(NORMAL_INSTALL) + @list1=''; \ + list2='$(man_MANS)'; \ + test -n "$(man3dir)" \ + && test -n "`echo $$list1$$list2`" \ + || exit 0; \ + echo " $(MKDIR_P) '$(DESTDIR)$(man3dir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(man3dir)" || exit 1; \ + { for i in $$list1; do echo "$$i"; done; \ + if test -n "$$list2"; then \ + for i in $$list2; do echo "$$i"; done \ + | sed -n '/\.3[a-z]*$$/p'; \ + fi; \ + } | while read p; do \ + if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; echo "$$p"; \ + done | \ + sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^3][0-9a-z]*$$,3,;x' \ + -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \ + sed 'N;N;s,\n, ,g' | { \ + list=; while read file base inst; do \ + if test "$$base" = "$$inst"; then list="$$list $$file"; else \ + echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man3dir)/$$inst'"; \ + $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man3dir)/$$inst" || exit $$?; \ + fi; \ + done; \ + for i in $$list; do echo "$$i"; done | $(am__base_list) | \ + while read files; do \ + test -z "$$files" || { \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man3dir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(man3dir)" || exit $$?; }; \ + done; } + +uninstall-man3: + @$(NORMAL_UNINSTALL) + @list=''; test -n "$(man3dir)" || exit 0; \ + files=`{ for i in $$list; do echo "$$i"; done; \ + l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \ + sed -n '/\.3[a-z]*$$/p'; \ + } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^3][0-9a-z]*$$,3,;x' \ + -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ + dir='$(DESTDIR)$(man3dir)'; $(am__uninstall_files_from_dir) + +# This directory's subdirectories are mostly independent; you can cd +# into them and run 'make' without going through this Makefile. +# To change the values of 'make' variables: instead of editing Makefiles, +# (1) if the variable is set in 'config.status', edit 'config.status' +# (which will cause the Makefiles to be regenerated when you run 'make'); +# (2) otherwise, pass the desired values on the 'make' command line. +$(am__recursive_targets): + @fail=; \ + if $(am__make_keepgoing); then \ + failcom='fail=yes'; \ + else \ + failcom='exit 1'; \ + fi; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-recursive +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-recursive + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-recursive + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + $(am__make_dryrun) \ + || test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile $(MANS) $(DATA) +installdirs: installdirs-recursive +installdirs-am: + for dir in "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(man3dir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic clean-libtool clean-local mostlyclean-am + +distclean: distclean-recursive + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +html-am: + +info-am: + +install-data-am: install-data-local install-man + +install-dvi: install-dvi-recursive + +install-dvi-am: + +install-exec-am: + +install-html: install-html-recursive + +install-html-am: + +install-info: install-info-recursive + +install-info-am: + +install-man: install-man1 install-man3 + +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: uninstall-local uninstall-man + +uninstall-man: uninstall-man1 uninstall-man3 + +.MAKE: $(am__recursive_targets) install-am install-strip + +.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ + check-am clean clean-generic clean-libtool clean-local \ + cscopelist-am ctags ctags-am distclean distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-data-local install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-man1 \ + install-man3 install-pdf install-pdf-am install-ps \ + install-ps-am install-strip installcheck installcheck-am \ + installdirs installdirs-am maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \ + uninstall-am uninstall-local uninstall-man uninstall-man1 \ + uninstall-man3 + + +$(SPHINX_TARGETS) : + @$(SPHINX_BUILD) -M $@ "$(SPHINX_SOURCEDIR)" "$(SPHINX_BUILDDIR)" $(SPHINX_OPTS) $(O) + +# special case info target +info: + @$(SPHINX_BUILD) -M $@ "$(SPHINX_SOURCEDIR)" "$(SPHINX_BUILDDIR)" $(SPHINX_OPTS) $(O) + cp "$(SPHINX_BUILDDIR)/texinfo/gsl-ref.info" . + +install-data-local: $(srcdir)/gsl-ref.info + $(MKDIR_P) "$(DESTDIR)$(infodir)" + $(INSTALL_DATA) $(srcdir)/gsl-ref.info $(DESTDIR)$(infodir) + +uninstall-local: + rm -f "$(DESTDIR)$(infodir)/gsl-ref.info" + +clean-local: + rm -rf "$(SPHINX_BUILDDIR)" + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gsl-2.5/doc/Makefile.am b/gsl-2.5/doc/Makefile.am new file mode 100644 index 00000000..b234dbe7 --- /dev/null +++ b/gsl-2.5/doc/Makefile.am @@ -0,0 +1,204 @@ +## Process this file with automake to produce Makefile.in + +SUBDIRS = . examples + +#info_TEXINFOS = gsl-ref.texi +noinst_TEXINFOS = gsl-design.texi + +man_MANS = gsl.3 gsl-config.1 gsl-randist.1 gsl-histogram.1 + +figures = \ + images/bspline.png \ + images/cheb.png \ + images/dwt.png \ + images/fft-complex-radix2.png \ + images/fft-real-mixedradix.png \ + images/filt_edge.png \ + images/fit-exp.png \ + images/fit-wlinear2.png \ + images/fit-wlinear.png \ + images/gaussfilt.png \ + images/gaussfilt2.png \ + images/histogram.png \ + images/histogram2d.png \ + images/impulse.png \ + images/interp2d.png \ + images/interp_compare.png \ + images/interp.png \ + images/interpp.png \ + images/min-interval.png \ + images/movstat1.png \ + images/movstat2.png \ + images/movstat3.png \ + images/multilarge.png \ + images/multimin.png \ + images/nlfit2b.png \ + images/nlfit2.png \ + images/nlfit3.png \ + images/ntuple.png \ + images/ode-vdp.png \ + images/qrng.png \ + images/rand-bernoulli.png \ + images/rand-beta.png \ + images/rand-binomial.png \ + images/rand-bivariate-gaussian.png \ + images/rand-cauchy.png \ + images/rand-chisq.png \ + images/rand-erlang.png \ + images/rand-exponential.png \ + images/rand-exppow.png \ + images/rand-fdist.png \ + images/rand-flat.png \ + images/rand-gamma.png \ + images/rand-gaussian.png \ + images/rand-gaussian-tail.png \ + images/rand-geometric.png \ + images/rand-gumbel1.png \ + images/rand-gumbel2.png \ + images/rand-hypergeometric.png \ + images/rand-landau.png \ + images/rand-laplace.png \ + images/rand-levy.png \ + images/rand-levyskew.png \ + images/rand-logarithmic.png \ + images/rand-logistic.png \ + images/rand-lognormal.png \ + images/rand-nbinomial.png \ + images/random-walk.png \ + images/rand-pareto.png \ + images/rand-pascal.png \ + images/rand-poisson.png \ + images/rand-rayleigh.png \ + images/rand-rayleigh-tail.png \ + images/rand-tdist.png \ + images/rand-weibull.png \ + images/regularized2.png \ + images/regularized.png \ + images/robust.png \ + images/siman-12-cities.png \ + images/siman-energy.png \ + images/siman-final-route.png \ + images/siman-initial-route.png \ + images/siman-test.png \ + images/sparse_poisson.png + +rst_files = \ + autoconf.rst \ + blas.rst \ + bspline.rst \ + cblas.rst \ + cheb.rst \ + combination.rst \ + complex.rst \ + const.rst \ + contrib.rst \ + debug.rst \ + dht.rst \ + diff.rst \ + dwt.rst \ + eigen.rst \ + err.rst \ + fdl.rst \ + fft.rst \ + filter.rst \ + gpl.rst \ + histogram.rst \ + ieee754.rst \ + include.rst \ + index.rst \ + integration.rst \ + interp.rst \ + intro.rst \ + linalg.rst \ + lls.rst \ + math.rst \ + min.rst \ + montecarlo.rst \ + movstat.rst \ + multimin.rst \ + multiroots.rst \ + multiset.rst \ + nls.rst \ + ntuple.rst \ + ode-initval.rst \ + permutation.rst \ + poly.rst \ + qrng.rst \ + randist.rst \ + rng.rst \ + roots.rst \ + rstat.rst \ + siman.rst \ + sort.rst \ + spblas.rst \ + specfunc-airy.rst \ + specfunc-bessel.rst \ + specfunc-clausen.rst \ + specfunc-coulomb.rst \ + specfunc-coupling.rst \ + specfunc-dawson.rst \ + specfunc-debye.rst \ + specfunc-dilog.rst \ + specfunc-elementary.rst \ + specfunc-ellint.rst \ + specfunc-elljac.rst \ + specfunc-erf.rst \ + specfunc-expint.rst \ + specfunc-exp.rst \ + specfunc-fermi-dirac.rst \ + specfunc-gamma.rst \ + specfunc-gegenbauer.rst \ + specfunc-hermite.rst \ + specfunc-hyperg.rst \ + specfunc-laguerre.rst \ + specfunc-lambert.rst \ + specfunc-legendre.rst \ + specfunc-log.rst \ + specfunc-mathieu.rst \ + specfunc-pow-int.rst \ + specfunc-psi.rst \ + specfunc.rst \ + specfunc-synchrotron.rst \ + specfunc-transport.rst \ + specfunc-trig.rst \ + specfunc-zeta.rst \ + splinalg.rst \ + spmatrix.rst \ + statistics.rst \ + sum.rst \ + usage.rst \ + vectors.rst + +static_files = \ + _static/fdl.txt \ + _static/gpl.txt + +noinst_DATA = $(figures) $(rst_files) $(static_files) + +EXTRA_DIST = $(man_MANS) $(noinst_DATA) gsl-design.texi gsl-ref.info conf.py + +SPHINX_OPTS = +SPHINX_BUILD = sphinx-build +SPHINX_SOURCEDIR = . +SPHINX_BUILDDIR = _build + +# targets supported by sphinx +SPHINX_TARGETS = html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf latexpdfja text man texinfo gettext changes xml pseudoxml linkcheck doctest coverage + +$(SPHINX_TARGETS) : + @$(SPHINX_BUILD) -M $@ "$(SPHINX_SOURCEDIR)" "$(SPHINX_BUILDDIR)" $(SPHINX_OPTS) $(O) + +# special case info target +info: + @$(SPHINX_BUILD) -M $@ "$(SPHINX_SOURCEDIR)" "$(SPHINX_BUILDDIR)" $(SPHINX_OPTS) $(O) + cp "$(SPHINX_BUILDDIR)/texinfo/gsl-ref.info" . + +install-data-local: $(srcdir)/gsl-ref.info + $(MKDIR_P) "$(DESTDIR)$(infodir)" + $(INSTALL_DATA) $(srcdir)/gsl-ref.info $(DESTDIR)$(infodir) + +uninstall-local: + rm -f "$(DESTDIR)$(infodir)/gsl-ref.info" + +clean-local: + rm -rf "$(SPHINX_BUILDDIR)" diff --git a/gsl-2.5/doc/Makefile.in b/gsl-2.5/doc/Makefile.in new file mode 100644 index 00000000..b362d1f4 --- /dev/null +++ b/gsl-2.5/doc/Makefile.in @@ -0,0 +1,953 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = doc +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs TODO texinfo.tex +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +SOURCES = +DIST_SOURCES = +RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ + ctags-recursive dvi-recursive html-recursive info-recursive \ + install-data-recursive install-dvi-recursive \ + install-exec-recursive install-html-recursive \ + install-info-recursive install-pdf-recursive \ + install-ps-recursive install-recursive installcheck-recursive \ + installdirs-recursive pdf-recursive ps-recursive \ + tags-recursive uninstall-recursive +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +man1dir = $(mandir)/man1 +am__installdirs = "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(man3dir)" +man3dir = $(mandir)/man3 +NROFF = nroff +MANS = $(man_MANS) +DATA = $(noinst_DATA) +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +am__recursive_targets = \ + $(RECURSIVE_TARGETS) \ + $(RECURSIVE_CLEAN_TARGETS) \ + $(am__extra_recursive_targets) +AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ + distdir +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +GSLCBLAS_LDFLAGS = @GSLCBLAS_LDFLAGS@ +GSL_CFLAGS = @GSL_CFLAGS@ +GSL_LDFLAGS = @GSL_LDFLAGS@ +GSL_LIBADD = @GSL_LIBADD@ +GSL_LIBM = @GSL_LIBM@ +GSL_LIBS = @GSL_LIBS@ +GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ +GSL_LT_VERSION = @GSL_LT_VERSION@ +GSL_MAJOR_VERSION = @GSL_MAJOR_VERSION@ +GSL_MINOR_VERSION = @GSL_MINOR_VERSION@ +HAVE_AIX_IEEE_INTERFACE = @HAVE_AIX_IEEE_INTERFACE@ +HAVE_DARWIN86_IEEE_INTERFACE = @HAVE_DARWIN86_IEEE_INTERFACE@ +HAVE_DARWIN_IEEE_INTERFACE = @HAVE_DARWIN_IEEE_INTERFACE@ +HAVE_FREEBSD_IEEE_INTERFACE = @HAVE_FREEBSD_IEEE_INTERFACE@ +HAVE_GNUM68K_IEEE_INTERFACE = @HAVE_GNUM68K_IEEE_INTERFACE@ +HAVE_GNUPPC_IEEE_INTERFACE = @HAVE_GNUPPC_IEEE_INTERFACE@ +HAVE_GNUSPARC_IEEE_INTERFACE = @HAVE_GNUSPARC_IEEE_INTERFACE@ +HAVE_GNUX86_IEEE_INTERFACE = @HAVE_GNUX86_IEEE_INTERFACE@ +HAVE_HPUX11_IEEE_INTERFACE = @HAVE_HPUX11_IEEE_INTERFACE@ +HAVE_HPUX_IEEE_INTERFACE = @HAVE_HPUX_IEEE_INTERFACE@ +HAVE_IRIX_IEEE_INTERFACE = @HAVE_IRIX_IEEE_INTERFACE@ +HAVE_NETBSD_IEEE_INTERFACE = @HAVE_NETBSD_IEEE_INTERFACE@ +HAVE_OPENBSD_IEEE_INTERFACE = @HAVE_OPENBSD_IEEE_INTERFACE@ +HAVE_OS2EMX_IEEE_INTERFACE = @HAVE_OS2EMX_IEEE_INTERFACE@ +HAVE_SOLARIS_IEEE_INTERFACE = @HAVE_SOLARIS_IEEE_INTERFACE@ +HAVE_SUNOS4_IEEE_INTERFACE = @HAVE_SUNOS4_IEEE_INTERFACE@ +HAVE_TRU64_IEEE_INTERFACE = @HAVE_TRU64_IEEE_INTERFACE@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBM = @LIBM@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +SUBDIRS = . examples + +#info_TEXINFOS = gsl-ref.texi +noinst_TEXINFOS = gsl-design.texi +man_MANS = gsl.3 gsl-config.1 gsl-randist.1 gsl-histogram.1 +figures = \ + images/bspline.png \ + images/cheb.png \ + images/dwt.png \ + images/fft-complex-radix2.png \ + images/fft-real-mixedradix.png \ + images/filt_edge.png \ + images/fit-exp.png \ + images/fit-wlinear2.png \ + images/fit-wlinear.png \ + images/gaussfilt.png \ + images/gaussfilt2.png \ + images/histogram.png \ + images/histogram2d.png \ + images/impulse.png \ + images/interp2d.png \ + images/interp_compare.png \ + images/interp.png \ + images/interpp.png \ + images/min-interval.png \ + images/movstat1.png \ + images/movstat2.png \ + images/movstat3.png \ + images/multilarge.png \ + images/multimin.png \ + images/nlfit2b.png \ + images/nlfit2.png \ + images/nlfit3.png \ + images/ntuple.png \ + images/ode-vdp.png \ + images/qrng.png \ + images/rand-bernoulli.png \ + images/rand-beta.png \ + images/rand-binomial.png \ + images/rand-bivariate-gaussian.png \ + images/rand-cauchy.png \ + images/rand-chisq.png \ + images/rand-erlang.png \ + images/rand-exponential.png \ + images/rand-exppow.png \ + images/rand-fdist.png \ + images/rand-flat.png \ + images/rand-gamma.png \ + images/rand-gaussian.png \ + images/rand-gaussian-tail.png \ + images/rand-geometric.png \ + images/rand-gumbel1.png \ + images/rand-gumbel2.png \ + images/rand-hypergeometric.png \ + images/rand-landau.png \ + images/rand-laplace.png \ + images/rand-levy.png \ + images/rand-levyskew.png \ + images/rand-logarithmic.png \ + images/rand-logistic.png \ + images/rand-lognormal.png \ + images/rand-nbinomial.png \ + images/random-walk.png \ + images/rand-pareto.png \ + images/rand-pascal.png \ + images/rand-poisson.png \ + images/rand-rayleigh.png \ + images/rand-rayleigh-tail.png \ + images/rand-tdist.png \ + images/rand-weibull.png \ + images/regularized2.png \ + images/regularized.png \ + images/robust.png \ + images/siman-12-cities.png \ + images/siman-energy.png \ + images/siman-final-route.png \ + images/siman-initial-route.png \ + images/siman-test.png \ + images/sparse_poisson.png + +rst_files = \ + autoconf.rst \ + blas.rst \ + bspline.rst \ + cblas.rst \ + cheb.rst \ + combination.rst \ + complex.rst \ + const.rst \ + contrib.rst \ + debug.rst \ + dht.rst \ + diff.rst \ + dwt.rst \ + eigen.rst \ + err.rst \ + fdl.rst \ + fft.rst \ + filter.rst \ + gpl.rst \ + histogram.rst \ + ieee754.rst \ + include.rst \ + index.rst \ + integration.rst \ + interp.rst \ + intro.rst \ + linalg.rst \ + lls.rst \ + math.rst \ + min.rst \ + montecarlo.rst \ + movstat.rst \ + multimin.rst \ + multiroots.rst \ + multiset.rst \ + nls.rst \ + ntuple.rst \ + ode-initval.rst \ + permutation.rst \ + poly.rst \ + qrng.rst \ + randist.rst \ + rng.rst \ + roots.rst \ + rstat.rst \ + siman.rst \ + sort.rst \ + spblas.rst \ + specfunc-airy.rst \ + specfunc-bessel.rst \ + specfunc-clausen.rst \ + specfunc-coulomb.rst \ + specfunc-coupling.rst \ + specfunc-dawson.rst \ + specfunc-debye.rst \ + specfunc-dilog.rst \ + specfunc-elementary.rst \ + specfunc-ellint.rst \ + specfunc-elljac.rst \ + specfunc-erf.rst \ + specfunc-expint.rst \ + specfunc-exp.rst \ + specfunc-fermi-dirac.rst \ + specfunc-gamma.rst \ + specfunc-gegenbauer.rst \ + specfunc-hermite.rst \ + specfunc-hyperg.rst \ + specfunc-laguerre.rst \ + specfunc-lambert.rst \ + specfunc-legendre.rst \ + specfunc-log.rst \ + specfunc-mathieu.rst \ + specfunc-pow-int.rst \ + specfunc-psi.rst \ + specfunc.rst \ + specfunc-synchrotron.rst \ + specfunc-transport.rst \ + specfunc-trig.rst \ + specfunc-zeta.rst \ + splinalg.rst \ + spmatrix.rst \ + statistics.rst \ + sum.rst \ + usage.rst \ + vectors.rst + +static_files = \ + _static/fdl.txt \ + _static/gpl.txt + +noinst_DATA = $(figures) $(rst_files) $(static_files) +EXTRA_DIST = $(man_MANS) $(noinst_DATA) gsl-design.texi gsl-ref.info conf.py +SPHINX_OPTS = +SPHINX_BUILD = sphinx-build +SPHINX_SOURCEDIR = . +SPHINX_BUILDDIR = _build + +# targets supported by sphinx +SPHINX_TARGETS = html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf latexpdfja text man texinfo gettext changes xml pseudoxml linkcheck doctest coverage +all: all-recursive + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu doc/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-man1: $(man_MANS) + @$(NORMAL_INSTALL) + @list1=''; \ + list2='$(man_MANS)'; \ + test -n "$(man1dir)" \ + && test -n "`echo $$list1$$list2`" \ + || exit 0; \ + echo " $(MKDIR_P) '$(DESTDIR)$(man1dir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(man1dir)" || exit 1; \ + { for i in $$list1; do echo "$$i"; done; \ + if test -n "$$list2"; then \ + for i in $$list2; do echo "$$i"; done \ + | sed -n '/\.1[a-z]*$$/p'; \ + fi; \ + } | while read p; do \ + if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; echo "$$p"; \ + done | \ + sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ + -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \ + sed 'N;N;s,\n, ,g' | { \ + list=; while read file base inst; do \ + if test "$$base" = "$$inst"; then list="$$list $$file"; else \ + echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \ + $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst" || exit $$?; \ + fi; \ + done; \ + for i in $$list; do echo "$$i"; done | $(am__base_list) | \ + while read files; do \ + test -z "$$files" || { \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man1dir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(man1dir)" || exit $$?; }; \ + done; } + +uninstall-man1: + @$(NORMAL_UNINSTALL) + @list=''; test -n "$(man1dir)" || exit 0; \ + files=`{ for i in $$list; do echo "$$i"; done; \ + l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \ + sed -n '/\.1[a-z]*$$/p'; \ + } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ + -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ + dir='$(DESTDIR)$(man1dir)'; $(am__uninstall_files_from_dir) +install-man3: $(man_MANS) + @$(NORMAL_INSTALL) + @list1=''; \ + list2='$(man_MANS)'; \ + test -n "$(man3dir)" \ + && test -n "`echo $$list1$$list2`" \ + || exit 0; \ + echo " $(MKDIR_P) '$(DESTDIR)$(man3dir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(man3dir)" || exit 1; \ + { for i in $$list1; do echo "$$i"; done; \ + if test -n "$$list2"; then \ + for i in $$list2; do echo "$$i"; done \ + | sed -n '/\.3[a-z]*$$/p'; \ + fi; \ + } | while read p; do \ + if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; echo "$$p"; \ + done | \ + sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^3][0-9a-z]*$$,3,;x' \ + -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \ + sed 'N;N;s,\n, ,g' | { \ + list=; while read file base inst; do \ + if test "$$base" = "$$inst"; then list="$$list $$file"; else \ + echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man3dir)/$$inst'"; \ + $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man3dir)/$$inst" || exit $$?; \ + fi; \ + done; \ + for i in $$list; do echo "$$i"; done | $(am__base_list) | \ + while read files; do \ + test -z "$$files" || { \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man3dir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(man3dir)" || exit $$?; }; \ + done; } + +uninstall-man3: + @$(NORMAL_UNINSTALL) + @list=''; test -n "$(man3dir)" || exit 0; \ + files=`{ for i in $$list; do echo "$$i"; done; \ + l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \ + sed -n '/\.3[a-z]*$$/p'; \ + } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^3][0-9a-z]*$$,3,;x' \ + -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ + dir='$(DESTDIR)$(man3dir)'; $(am__uninstall_files_from_dir) + +# This directory's subdirectories are mostly independent; you can cd +# into them and run 'make' without going through this Makefile. +# To change the values of 'make' variables: instead of editing Makefiles, +# (1) if the variable is set in 'config.status', edit 'config.status' +# (which will cause the Makefiles to be regenerated when you run 'make'); +# (2) otherwise, pass the desired values on the 'make' command line. +$(am__recursive_targets): + @fail=; \ + if $(am__make_keepgoing); then \ + failcom='fail=yes'; \ + else \ + failcom='exit 1'; \ + fi; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-recursive +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-recursive + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-recursive + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + $(am__make_dryrun) \ + || test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile $(MANS) $(DATA) +installdirs: installdirs-recursive +installdirs-am: + for dir in "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(man3dir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic clean-libtool clean-local mostlyclean-am + +distclean: distclean-recursive + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +html-am: + +info-am: + +install-data-am: install-data-local install-man + +install-dvi: install-dvi-recursive + +install-dvi-am: + +install-exec-am: + +install-html: install-html-recursive + +install-html-am: + +install-info: install-info-recursive + +install-info-am: + +install-man: install-man1 install-man3 + +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: uninstall-local uninstall-man + +uninstall-man: uninstall-man1 uninstall-man3 + +.MAKE: $(am__recursive_targets) install-am install-strip + +.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ + check-am clean clean-generic clean-libtool clean-local \ + cscopelist-am ctags ctags-am distclean distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-data-local install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-man1 \ + install-man3 install-pdf install-pdf-am install-ps \ + install-ps-am install-strip installcheck installcheck-am \ + installdirs installdirs-am maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \ + uninstall-am uninstall-local uninstall-man uninstall-man1 \ + uninstall-man3 + + +$(SPHINX_TARGETS) : + @$(SPHINX_BUILD) -M $@ "$(SPHINX_SOURCEDIR)" "$(SPHINX_BUILDDIR)" $(SPHINX_OPTS) $(O) + +# special case info target +info: + @$(SPHINX_BUILD) -M $@ "$(SPHINX_SOURCEDIR)" "$(SPHINX_BUILDDIR)" $(SPHINX_OPTS) $(O) + cp "$(SPHINX_BUILDDIR)/texinfo/gsl-ref.info" . + +install-data-local: $(srcdir)/gsl-ref.info + $(MKDIR_P) "$(DESTDIR)$(infodir)" + $(INSTALL_DATA) $(srcdir)/gsl-ref.info $(DESTDIR)$(infodir) + +uninstall-local: + rm -f "$(DESTDIR)$(infodir)/gsl-ref.info" + +clean-local: + rm -rf "$(SPHINX_BUILDDIR)" + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gsl-2.5/doc/TODO b/gsl-2.5/doc/TODO new file mode 100644 index 00000000..246c1c17 --- /dev/null +++ b/gsl-2.5/doc/TODO @@ -0,0 +1,2 @@ +1. in fft.rst, we reference doc/fftalgorithms.tex - make sure this file + is in the right place in the final dir structure diff --git a/gsl-2.5/doc/_static/fdl.txt b/gsl-2.5/doc/_static/fdl.txt new file mode 100644 index 00000000..2f7e03ca --- /dev/null +++ b/gsl-2.5/doc/_static/fdl.txt @@ -0,0 +1,451 @@ + + GNU Free Documentation License + Version 1.3, 3 November 2008 + + + Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc. + + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +0. PREAMBLE + +The purpose of this License is to make a manual, textbook, or other +functional and useful document "free" in the sense of freedom: to +assure everyone the effective freedom to copy and redistribute it, +with or without modifying it, either commercially or noncommercially. +Secondarily, this License preserves for the author and publisher a way +to get credit for their work, while not being considered responsible +for modifications made by others. + +This License is a kind of "copyleft", which means that derivative +works of the document must themselves be free in the same sense. It +complements the GNU General Public License, which is a copyleft +license designed for free software. + +We have designed this License in order to use it for manuals for free +software, because free software needs free documentation: a free +program should come with manuals providing the same freedoms that the +software does. But this License is not limited to software manuals; +it can be used for any textual work, regardless of subject matter or +whether it is published as a printed book. We recommend this License +principally for works whose purpose is instruction or reference. + + +1. APPLICABILITY AND DEFINITIONS + +This License applies to any manual or other work, in any medium, that +contains a notice placed by the copyright holder saying it can be +distributed under the terms of this License. Such a notice grants a +world-wide, royalty-free license, unlimited in duration, to use that +work under the conditions stated herein. The "Document", below, +refers to any such manual or work. Any member of the public is a +licensee, and is addressed as "you". You accept the license if you +copy, modify or distribute the work in a way requiring permission +under copyright law. + +A "Modified Version" of the Document means any work containing the +Document or a portion of it, either copied verbatim, or with +modifications and/or translated into another language. + +A "Secondary Section" is a named appendix or a front-matter section of +the Document that deals exclusively with the relationship of the +publishers or authors of the Document to the Document's overall +subject (or to related matters) and contains nothing that could fall +directly within that overall subject. (Thus, if the Document is in +part a textbook of mathematics, a Secondary Section may not explain +any mathematics.) The relationship could be a matter of historical +connection with the subject or with related matters, or of legal, +commercial, philosophical, ethical or political position regarding +them. + +The "Invariant Sections" are certain Secondary Sections whose titles +are designated, as being those of Invariant Sections, in the notice +that says that the Document is released under this License. If a +section does not fit the above definition of Secondary then it is not +allowed to be designated as Invariant. The Document may contain zero +Invariant Sections. If the Document does not identify any Invariant +Sections then there are none. + +The "Cover Texts" are certain short passages of text that are listed, +as Front-Cover Texts or Back-Cover Texts, in the notice that says that +the Document is released under this License. A Front-Cover Text may +be at most 5 words, and a Back-Cover Text may be at most 25 words. + +A "Transparent" copy of the Document means a machine-readable copy, +represented in a format whose specification is available to the +general public, that is suitable for revising the document +straightforwardly with generic text editors or (for images composed of +pixels) generic paint programs or (for drawings) some widely available +drawing editor, and that is suitable for input to text formatters or +for automatic translation to a variety of formats suitable for input +to text formatters. A copy made in an otherwise Transparent file +format whose markup, or absence of markup, has been arranged to thwart +or discourage subsequent modification by readers is not Transparent. +An image format is not Transparent if used for any substantial amount +of text. A copy that is not "Transparent" is called "Opaque". + +Examples of suitable formats for Transparent copies include plain +ASCII without markup, Texinfo input format, LaTeX input format, SGML +or XML using a publicly available DTD, and standard-conforming simple +HTML, PostScript or PDF designed for human modification. Examples of +transparent image formats include PNG, XCF and JPG. Opaque formats +include proprietary formats that can be read and edited only by +proprietary word processors, SGML or XML for which the DTD and/or +processing tools are not generally available, and the +machine-generated HTML, PostScript or PDF produced by some word +processors for output purposes only. + +The "Title Page" means, for a printed book, the title page itself, +plus such following pages as are needed to hold, legibly, the material +this License requires to appear in the title page. For works in +formats which do not have any title page as such, "Title Page" means +the text near the most prominent appearance of the work's title, +preceding the beginning of the body of the text. + +The "publisher" means any person or entity that distributes copies of +the Document to the public. + +A section "Entitled XYZ" means a named subunit of the Document whose +title either is precisely XYZ or contains XYZ in parentheses following +text that translates XYZ in another language. (Here XYZ stands for a +specific section name mentioned below, such as "Acknowledgements", +"Dedications", "Endorsements", or "History".) To "Preserve the Title" +of such a section when you modify the Document means that it remains a +section "Entitled XYZ" according to this definition. + +The Document may include Warranty Disclaimers next to the notice which +states that this License applies to the Document. These Warranty +Disclaimers are considered to be included by reference in this +License, but only as regards disclaiming warranties: any other +implication that these Warranty Disclaimers may have is void and has +no effect on the meaning of this License. + +2. VERBATIM COPYING + +You may copy and distribute the Document in any medium, either +commercially or noncommercially, provided that this License, the +copyright notices, and the license notice saying this License applies +to the Document are reproduced in all copies, and that you add no +other conditions whatsoever to those of this License. You may not use +technical measures to obstruct or control the reading or further +copying of the copies you make or distribute. However, you may accept +compensation in exchange for copies. If you distribute a large enough +number of copies you must also follow the conditions in section 3. + +You may also lend copies, under the same conditions stated above, and +you may publicly display copies. + + +3. COPYING IN QUANTITY + +If you publish printed copies (or copies in media that commonly have +printed covers) of the Document, numbering more than 100, and the +Document's license notice requires Cover Texts, you must enclose the +copies in covers that carry, clearly and legibly, all these Cover +Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on +the back cover. Both covers must also clearly and legibly identify +you as the publisher of these copies. The front cover must present +the full title with all words of the title equally prominent and +visible. You may add other material on the covers in addition. +Copying with changes limited to the covers, as long as they preserve +the title of the Document and satisfy these conditions, can be treated +as verbatim copying in other respects. + +If the required texts for either cover are too voluminous to fit +legibly, you should put the first ones listed (as many as fit +reasonably) on the actual cover, and continue the rest onto adjacent +pages. + +If you publish or distribute Opaque copies of the Document numbering +more than 100, you must either include a machine-readable Transparent +copy along with each Opaque copy, or state in or with each Opaque copy +a computer-network location from which the general network-using +public has access to download using public-standard network protocols +a complete Transparent copy of the Document, free of added material. +If you use the latter option, you must take reasonably prudent steps, +when you begin distribution of Opaque copies in quantity, to ensure +that this Transparent copy will remain thus accessible at the stated +location until at least one year after the last time you distribute an +Opaque copy (directly or through your agents or retailers) of that +edition to the public. + +It is requested, but not required, that you contact the authors of the +Document well before redistributing any large number of copies, to +give them a chance to provide you with an updated version of the +Document. + + +4. MODIFICATIONS + +You may copy and distribute a Modified Version of the Document under +the conditions of sections 2 and 3 above, provided that you release +the Modified Version under precisely this License, with the Modified +Version filling the role of the Document, thus licensing distribution +and modification of the Modified Version to whoever possesses a copy +of it. In addition, you must do these things in the Modified Version: + +A. Use in the Title Page (and on the covers, if any) a title distinct + from that of the Document, and from those of previous versions + (which should, if there were any, be listed in the History section + of the Document). You may use the same title as a previous version + if the original publisher of that version gives permission. +B. List on the Title Page, as authors, one or more persons or entities + responsible for authorship of the modifications in the Modified + Version, together with at least five of the principal authors of the + Document (all of its principal authors, if it has fewer than five), + unless they release you from this requirement. +C. State on the Title page the name of the publisher of the + Modified Version, as the publisher. +D. Preserve all the copyright notices of the Document. +E. Add an appropriate copyright notice for your modifications + adjacent to the other copyright notices. +F. Include, immediately after the copyright notices, a license notice + giving the public permission to use the Modified Version under the + terms of this License, in the form shown in the Addendum below. +G. Preserve in that license notice the full lists of Invariant Sections + and required Cover Texts given in the Document's license notice. +H. Include an unaltered copy of this License. +I. Preserve the section Entitled "History", Preserve its Title, and add + to it an item stating at least the title, year, new authors, and + publisher of the Modified Version as given on the Title Page. If + there is no section Entitled "History" in the Document, create one + stating the title, year, authors, and publisher of the Document as + given on its Title Page, then add an item describing the Modified + Version as stated in the previous sentence. +J. Preserve the network location, if any, given in the Document for + public access to a Transparent copy of the Document, and likewise + the network locations given in the Document for previous versions + it was based on. These may be placed in the "History" section. + You may omit a network location for a work that was published at + least four years before the Document itself, or if the original + publisher of the version it refers to gives permission. +K. For any section Entitled "Acknowledgements" or "Dedications", + Preserve the Title of the section, and preserve in the section all + the substance and tone of each of the contributor acknowledgements + and/or dedications given therein. +L. Preserve all the Invariant Sections of the Document, + unaltered in their text and in their titles. Section numbers + or the equivalent are not considered part of the section titles. +M. Delete any section Entitled "Endorsements". Such a section + may not be included in the Modified Version. +N. Do not retitle any existing section to be Entitled "Endorsements" + or to conflict in title with any Invariant Section. +O. Preserve any Warranty Disclaimers. + +If the Modified Version includes new front-matter sections or +appendices that qualify as Secondary Sections and contain no material +copied from the Document, you may at your option designate some or all +of these sections as invariant. To do this, add their titles to the +list of Invariant Sections in the Modified Version's license notice. +These titles must be distinct from any other section titles. + +You may add a section Entitled "Endorsements", provided it contains +nothing but endorsements of your Modified Version by various +parties--for example, statements of peer review or that the text has +been approved by an organization as the authoritative definition of a +standard. + +You may add a passage of up to five words as a Front-Cover Text, and a +passage of up to 25 words as a Back-Cover Text, to the end of the list +of Cover Texts in the Modified Version. Only one passage of +Front-Cover Text and one of Back-Cover Text may be added by (or +through arrangements made by) any one entity. If the Document already +includes a cover text for the same cover, previously added by you or +by arrangement made by the same entity you are acting on behalf of, +you may not add another; but you may replace the old one, on explicit +permission from the previous publisher that added the old one. + +The author(s) and publisher(s) of the Document do not by this License +give permission to use their names for publicity for or to assert or +imply endorsement of any Modified Version. + + +5. COMBINING DOCUMENTS + +You may combine the Document with other documents released under this +License, under the terms defined in section 4 above for modified +versions, provided that you include in the combination all of the +Invariant Sections of all of the original documents, unmodified, and +list them all as Invariant Sections of your combined work in its +license notice, and that you preserve all their Warranty Disclaimers. + +The combined work need only contain one copy of this License, and +multiple identical Invariant Sections may be replaced with a single +copy. If there are multiple Invariant Sections with the same name but +different contents, make the title of each such section unique by +adding at the end of it, in parentheses, the name of the original +author or publisher of that section if known, or else a unique number. +Make the same adjustment to the section titles in the list of +Invariant Sections in the license notice of the combined work. + +In the combination, you must combine any sections Entitled "History" +in the various original documents, forming one section Entitled +"History"; likewise combine any sections Entitled "Acknowledgements", +and any sections Entitled "Dedications". You must delete all sections +Entitled "Endorsements". + + +6. COLLECTIONS OF DOCUMENTS + +You may make a collection consisting of the Document and other +documents released under this License, and replace the individual +copies of this License in the various documents with a single copy +that is included in the collection, provided that you follow the rules +of this License for verbatim copying of each of the documents in all +other respects. + +You may extract a single document from such a collection, and +distribute it individually under this License, provided you insert a +copy of this License into the extracted document, and follow this +License in all other respects regarding verbatim copying of that +document. + + +7. AGGREGATION WITH INDEPENDENT WORKS + +A compilation of the Document or its derivatives with other separate +and independent documents or works, in or on a volume of a storage or +distribution medium, is called an "aggregate" if the copyright +resulting from the compilation is not used to limit the legal rights +of the compilation's users beyond what the individual works permit. +When the Document is included in an aggregate, this License does not +apply to the other works in the aggregate which are not themselves +derivative works of the Document. + +If the Cover Text requirement of section 3 is applicable to these +copies of the Document, then if the Document is less than one half of +the entire aggregate, the Document's Cover Texts may be placed on +covers that bracket the Document within the aggregate, or the +electronic equivalent of covers if the Document is in electronic form. +Otherwise they must appear on printed covers that bracket the whole +aggregate. + + +8. TRANSLATION + +Translation is considered a kind of modification, so you may +distribute translations of the Document under the terms of section 4. +Replacing Invariant Sections with translations requires special +permission from their copyright holders, but you may include +translations of some or all Invariant Sections in addition to the +original versions of these Invariant Sections. You may include a +translation of this License, and all the license notices in the +Document, and any Warranty Disclaimers, provided that you also include +the original English version of this License and the original versions +of those notices and disclaimers. In case of a disagreement between +the translation and the original version of this License or a notice +or disclaimer, the original version will prevail. + +If a section in the Document is Entitled "Acknowledgements", +"Dedications", or "History", the requirement (section 4) to Preserve +its Title (section 1) will typically require changing the actual +title. + + +9. TERMINATION + +You may not copy, modify, sublicense, or distribute the Document +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense, or distribute it is void, and +will automatically terminate your rights under this License. + +However, if you cease all violation of this License, then your license +from a particular copyright holder is reinstated (a) provisionally, +unless and until the copyright holder explicitly and finally +terminates your license, and (b) permanently, if the copyright holder +fails to notify you of the violation by some reasonable means prior to +60 days after the cessation. + +Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + +Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, receipt of a copy of some or all of the same material does +not give you any rights to use it. + + +10. FUTURE REVISIONS OF THIS LICENSE + +The Free Software Foundation may publish new, revised versions of the +GNU Free Documentation 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. See +http://www.gnu.org/copyleft/. + +Each version of the License is given a distinguishing version number. +If the Document specifies that a particular numbered version of this +License "or any later version" applies to it, you have the option of +following the terms and conditions either of that specified version or +of any later version that has been published (not as a draft) by the +Free Software Foundation. If the Document does not specify a version +number of this License, you may choose any version ever published (not +as a draft) by the Free Software Foundation. If the Document +specifies that a proxy can decide which future versions of this +License can be used, that proxy's public statement of acceptance of a +version permanently authorizes you to choose that version for the +Document. + +11. RELICENSING + +"Massive Multiauthor Collaboration Site" (or "MMC Site") means any +World Wide Web server that publishes copyrightable works and also +provides prominent facilities for anybody to edit those works. A +public wiki that anybody can edit is an example of such a server. A +"Massive Multiauthor Collaboration" (or "MMC") contained in the site +means any set of copyrightable works thus published on the MMC site. + +"CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0 +license published by Creative Commons Corporation, a not-for-profit +corporation with a principal place of business in San Francisco, +California, as well as future copyleft versions of that license +published by that same organization. + +"Incorporate" means to publish or republish a Document, in whole or in +part, as part of another Document. + +An MMC is "eligible for relicensing" if it is licensed under this +License, and if all works that were first published under this License +somewhere other than this MMC, and subsequently incorporated in whole or +in part into the MMC, (1) had no cover texts or invariant sections, and +(2) were thus incorporated prior to November 1, 2008. + +The operator of an MMC Site may republish an MMC contained in the site +under CC-BY-SA on the same site at any time before August 1, 2009, +provided the MMC is eligible for relicensing. + + +ADDENDUM: How to use this License for your documents + +To use this License in a document you have written, include a copy of +the License in the document and put the following copyright and +license notices just after the title page: + + Copyright (c) YEAR YOUR NAME. + Permission is granted to copy, distribute and/or modify this document + under the terms of the GNU Free Documentation License, Version 1.3 + or any later version published by the Free Software Foundation; + with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. + A copy of the license is included in the section entitled "GNU + Free Documentation License". + +If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, +replace the "with...Texts." line with this: + + with the Invariant Sections being LIST THEIR TITLES, with the + Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST. + +If you have Invariant Sections without Cover Texts, or some other +combination of the three, merge those two alternatives to suit the +situation. + +If your document contains nontrivial examples of program code, we +recommend releasing these examples in parallel under your choice of +free software license, such as the GNU General Public License, +to permit their use in free software. diff --git a/gsl-2.5/doc/_static/gpl.txt b/gsl-2.5/doc/_static/gpl.txt new file mode 100644 index 00000000..94a9ed02 --- /dev/null +++ b/gsl-2.5/doc/_static/gpl.txt @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + 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 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/gsl-2.5/doc/autoconf.rst b/gsl-2.5/doc/autoconf.rst new file mode 100644 index 00000000..b4aeb9ad --- /dev/null +++ b/gsl-2.5/doc/autoconf.rst @@ -0,0 +1,115 @@ +.. index:: + single: autoconf, using with GSL + +.. _chap_autoconf-macros: + +*************** +Autoconf Macros +*************** + +.. include:: include.rst + +For applications using :code:`autoconf` the standard macro +:code:`AC_CHECK_LIB` can be used to link with GSL automatically +from a :code:`configure` script. The library itself depends on the +presence of a |cblas| and math library as well, so these must also be +located before linking with the main :code:`libgsl` file. The following +commands should be placed in the :file:`configure.ac` file to perform +these tests:: + + AC_CHECK_LIB([m],[cos]) + AC_CHECK_LIB([gslcblas],[cblas_dgemm]) + AC_CHECK_LIB([gsl],[gsl_blas_dgemm]) + +It is important to check for :code:`libm` and :code:`libgslcblas` before +:code:`libgsl`, otherwise the tests will fail. Assuming the libraries +are found the output during the configure stage looks like this:: + + checking for cos in -lm... yes + checking for cblas_dgemm in -lgslcblas... yes + checking for gsl_blas_dgemm in -lgsl... yes + +If the library is found then the tests will define the macros +:code:`HAVE_LIBGSL`, :code:`HAVE_LIBGSLCBLAS`, :code:`HAVE_LIBM` and add +the options :code:`-lgsl -lgslcblas -lm` to the variable :code:`LIBS`. + +The tests above will find any version of the library. They are suitable +for general use, where the versions of the functions are not important. +An alternative macro is available in the file :file:`gsl.m4` to test for +a specific version of the library. To use this macro simply add the +following line to your :file:`configure.in` file instead of the tests +above:: + + AX_PATH_GSL(GSL_VERSION, + [action-if-found], + [action-if-not-found]) + +The argument :macro:`GSL_VERSION` should be the two or three digit +:code:`major.minor` or :code:`major.minor.micro` version number of the release +you require. A suitable choice for :code:`action-if-not-found` is:: + + AC_MSG_ERROR(could not find required version of GSL) + +Then you can add the variables :macro:`GSL_LIBS` and :macro:`GSL_CFLAGS` to +your Makefile.am files to obtain the correct compiler flags. +:macro:`GSL_LIBS` is equal to the output of the :code:`gsl-config --libs` +command and :macro:`GSL_CFLAGS` is equal to :code:`gsl-config --cflags` +command. For example:: + + libfoo_la_LDFLAGS = -lfoo $(GSL_LIBS) -lgslcblas + +Note that the macro :macro:`AX_PATH_GSL` needs to use the C compiler so it +should appear in the :file:`configure.in` file before the macro +:macro:`AC_LANG_CPLUSPLUS` for programs that use C++. + +To test for :code:`inline` the following test should be placed in your +:file:`configure.in` file:: + + AC_C_INLINE + + if test "$ac_cv_c_inline" != no ; then + AC_DEFINE(HAVE_INLINE,1) + AC_SUBST(HAVE_INLINE) + fi + +and the macro will then be defined in the compilation flags or by +including the file :file:`config.h` before any library headers. + +The following autoconf test will check for :code:`extern inline`:: + + dnl Check for "extern inline", using a modified version + dnl of the test for AC_C_INLINE from acspecific.mt + dnl + AC_CACHE_CHECK([for extern inline], ac_cv_c_extern_inline, + [ac_cv_c_extern_inline=no + AC_TRY_COMPILE([extern $ac_cv_c_inline double foo(double x); + extern $ac_cv_c_inline double foo(double x) { return x+1.0; }; + double foo (double x) { return x + 1.0; };], + [ foo(1.0) ], + [ac_cv_c_extern_inline="yes"]) + ]) + + if test "$ac_cv_c_extern_inline" != no ; then + AC_DEFINE(HAVE_INLINE,1) + AC_SUBST(HAVE_INLINE) + fi + +The substitution of portability functions can be made automatically if +you use :code:`autoconf`. For example, to test whether the BSD function +:func:`hypot` is available you can include the following line in the +configure file :file:`configure.in` for your application:: + + AC_CHECK_FUNCS(hypot) + +and place the following macro definitions in the file +:file:`config.h.in`:: + + /* Substitute gsl_hypot for missing system hypot */ + + #ifndef HAVE_HYPOT + #define hypot gsl_hypot + #endif + +The application source files can then use the include command +:code:`#include ` to substitute :func:`gsl_hypot` for each +occurrence of :func:`hypot` when :func:`hypot` is not available. diff --git a/gsl-2.5/doc/blas.rst b/gsl-2.5/doc/blas.rst new file mode 100644 index 00000000..8f456b65 --- /dev/null +++ b/gsl-2.5/doc/blas.rst @@ -0,0 +1,701 @@ +.. index:: + single: linear algebra, BLAS + single: matrix, operations + single: vector, operations + single: BLAS + single: CBLAS + single: Basic Linear Algebra Subroutines (BLAS) + +.. _chap_blas-support: + +************ +BLAS Support +************ + +The Basic Linear Algebra Subprograms (BLAS) define a set of fundamental +operations on vectors and matrices which can be used to create optimized +higher-level linear algebra functionality. + +The library provides a low-level layer which corresponds directly to the +C-language BLAS standard, referred to here as "CBLAS", and a +higher-level interface for operations on GSL vectors and matrices. +Users who are interested in simple operations on GSL vector and matrix +objects should use the high-level layer described +in this chapter. The functions are declared in the file +:file:`gsl_blas.h` and should satisfy the needs of most users. + +Note that GSL matrices are implemented using dense-storage so the +interface only includes the corresponding dense-storage BLAS +functions. The full BLAS functionality for band-format and +packed-format matrices is available through the low-level CBLAS +interface. Similarly, GSL vectors are restricted to positive strides, +whereas the low-level CBLAS interface supports negative +strides as specified in the BLAS standard [#f1]_. + +The interface for the :code:`gsl_cblas` layer is specified in the file +:file:`gsl_cblas.h`. This interface corresponds to the BLAS Technical +Forum's standard for the C interface to legacy BLAS +implementations. Users who have access to other conforming CBLAS +implementations can use these in place of the version provided by the +library. Note that users who have only a Fortran BLAS library can +use a CBLAS conformant wrapper to convert it into a CBLAS +library. A reference CBLAS wrapper for legacy Fortran +implementations exists as part of the CBLAS standard and can +be obtained from Netlib. The complete set of CBLAS functions is +listed in an :ref:`appendix `. + +There are three levels of BLAS operations, + +=========== =============================================================== +**Level 1** Vector operations, e.g. :math:`y = \alpha x + y` +**Level 2** Matrix-vector operations, e.g. :math:`y = \alpha A x + \beta y` +**Level 3** Matrix-matrix operations, e.g. :math:`C = \alpha A B + C` +=========== =============================================================== + +Each routine has a name which specifies the operation, the type of +matrices involved and their precisions. Some of the most common +operations and their names are given below, + +======== ===================================== +**DOT** scalar product, :math:`x^T y` +**AXPY** vector sum, :math:`\alpha x + y` +**MV** matrix-vector product, :math:`A x` +**SV** matrix-vector solve, :math:`inv(A) x` +**MM** matrix-matrix product, :math:`A B` +**SM** matrix-matrix solve, :math:`inv(A) B` +======== ===================================== + +The types of matrices are, + +====== ================= +**GE** general +**GB** general band +**SY** symmetric +**SB** symmetric band +**SP** symmetric packed +**HE** hermitian +**HB** hermitian band +**HP** hermitian packed +**TR** triangular +**TB** triangular band +**TP** triangular packed +====== ================= + +Each operation is defined for four precisions, + +===== ============== +**S** single real +**D** double real +**C** single complex +**Z** double complex +===== ============== + +Thus, for example, the name SGEMM stands for "single-precision +general matrix-matrix multiply" and ZGEMM stands for +"double-precision complex matrix-matrix multiply". + +Note that the vector and matrix arguments to BLAS functions must not +be aliased, as the results are undefined when the underlying arrays +overlap (:ref:`aliasing-of-arrays`). + +GSL BLAS Interface +================== + +GSL provides dense vector and matrix objects, based on the relevant +built-in types. The library provides an interface to the BLAS +operations which apply to these objects. The interface to this +functionality is given in the file :file:`gsl_blas.h`. + +.. CblasNoTrans, CblasTrans, CblasConjTrans +.. CblasUpper, CblasLower +.. CblasNonUnit, CblasUnit +.. CblasLeft, CblasRight + +Level 1 +------- + +.. index:: + single: DOT, Level-1 BLAS + +.. function:: int gsl_blas_sdsdot (float alpha, const gsl_vector_float * x, const gsl_vector_float * y, float * result) + + This function computes the sum :math:`\alpha + x^T y` for the vectors + :data:`x` and :data:`y`, returning the result in :data:`result`. + +.. function:: int gsl_blas_sdot (const gsl_vector_float * x, const gsl_vector_float * y, float * result) + int gsl_blas_dsdot (const gsl_vector_float * x, const gsl_vector_float * y, double * result) + int gsl_blas_ddot (const gsl_vector * x, const gsl_vector * y, double * result) + + These functions compute the scalar product :math:`x^T y` for the vectors + :data:`x` and :data:`y`, returning the result in :data:`result`. + +.. function:: int gsl_blas_cdotu (const gsl_vector_complex_float * x, const gsl_vector_complex_float * y, gsl_complex_float * dotu) + int gsl_blas_zdotu (const gsl_vector_complex * x, const gsl_vector_complex * y, gsl_complex * dotu) + + These functions compute the complex scalar product :math:`x^T y` for the + vectors :data:`x` and :data:`y`, returning the result in :data:`dotu` + +.. function:: int gsl_blas_cdotc (const gsl_vector_complex_float * x, const gsl_vector_complex_float * y, gsl_complex_float * dotc) + int gsl_blas_zdotc (const gsl_vector_complex * x, const gsl_vector_complex * y, gsl_complex * dotc) + + These functions compute the complex conjugate scalar product :math:`x^H y` + for the vectors :data:`x` and :data:`y`, returning the result in + :data:`dotc` + +.. index:: + single: NRM2, Level-1 BLAS + +.. function:: float gsl_blas_snrm2 (const gsl_vector_float * x) + double gsl_blas_dnrm2 (const gsl_vector * x) + + These functions compute the Euclidean norm + :math:`||x||_2 = \sqrt{\sum x_i^2}` of the vector :data:`x`. + +.. function:: float gsl_blas_scnrm2 (const gsl_vector_complex_float * x) + double gsl_blas_dznrm2 (const gsl_vector_complex * x) + + These functions compute the Euclidean norm of the complex vector :data:`x`, + + .. math:: ||x||_2 = \sqrt{\sum (\Re(x_i)^2 + \Im(x_i)^2)}. + +.. index:: + single: ASUM, Level-1 BLAS + +.. function:: float gsl_blas_sasum (const gsl_vector_float * x) + double gsl_blas_dasum (const gsl_vector * x) + + These functions compute the absolute sum :math:`\sum |x_i|` of the + elements of the vector :data:`x`. + +.. function:: float gsl_blas_scasum (const gsl_vector_complex_float * x) + double gsl_blas_dzasum (const gsl_vector_complex * x) + + These functions compute the sum of the magnitudes of the real and + imaginary parts of the complex vector :data:`x`, + :math:`\sum \left( |\Re(x_i)| + |\Im(x_i)| \right)`. + +.. index:: + single: AMAX, Level-1 BLAS + +.. function:: CBLAS_INDEX_t gsl_blas_isamax (const gsl_vector_float * x) + CBLAS_INDEX_t gsl_blas_idamax (const gsl_vector * x) + CBLAS_INDEX_t gsl_blas_icamax (const gsl_vector_complex_float * x) + CBLAS_INDEX_t gsl_blas_izamax (const gsl_vector_complex * x) + + These functions return the index of the largest element of the vector + :data:`x`. The largest element is determined by its absolute magnitude for + real vectors and by the sum of the magnitudes of the real and imaginary + parts :math:`|\Re(x_i)| + |\Im(x_i)|` for complex vectors. If the + largest value occurs several times then the index of the first + occurrence is returned. + +.. index:: + single: SWAP, Level-1 BLAS + +.. function:: int gsl_blas_sswap (gsl_vector_float * x, gsl_vector_float * y) + int gsl_blas_dswap (gsl_vector * x, gsl_vector * y) + int gsl_blas_cswap (gsl_vector_complex_float * x, gsl_vector_complex_float * y) + int gsl_blas_zswap (gsl_vector_complex * x, gsl_vector_complex * y) + + These functions exchange the elements of the vectors :data:`x` and :data:`y`. + +.. index:: + single: COPY, Level-1 BLAS + +.. function:: int gsl_blas_scopy (const gsl_vector_float * x, gsl_vector_float * y) + int gsl_blas_dcopy (const gsl_vector * x, gsl_vector * y) + int gsl_blas_ccopy (const gsl_vector_complex_float * x, gsl_vector_complex_float * y) + int gsl_blas_zcopy (const gsl_vector_complex * x, gsl_vector_complex * y) + + These functions copy the elements of the vector :data:`x` into the vector + :data:`y`. + +.. index:: + single: AXPY, Level-1 BLAS + single: DAXPY, Level-1 BLAS + single: SAXPY, Level-1 BLAS + +.. function:: int gsl_blas_saxpy (float alpha, const gsl_vector_float * x, gsl_vector_float * y) + int gsl_blas_daxpy (double alpha, const gsl_vector * x, gsl_vector * y) + int gsl_blas_caxpy (const gsl_complex_float alpha, const gsl_vector_complex_float * x, gsl_vector_complex_float * y) + int gsl_blas_zaxpy (const gsl_complex alpha, const gsl_vector_complex * x, gsl_vector_complex * y) + + These functions compute the sum :math:`y = \alpha x + y` for the vectors + :data:`x` and :data:`y`. + +.. index:: + single: SCAL, Level-1 BLAS + +.. function:: void gsl_blas_sscal (float alpha, gsl_vector_float * x) + void gsl_blas_dscal (double alpha, gsl_vector * x) + void gsl_blas_cscal (const gsl_complex_float alpha, gsl_vector_complex_float * x) + void gsl_blas_zscal (const gsl_complex alpha, gsl_vector_complex * x) + void gsl_blas_csscal (float alpha, gsl_vector_complex_float * x) + void gsl_blas_zdscal (double alpha, gsl_vector_complex * x) + + These functions rescale the vector :data:`x` by the multiplicative factor + :data:`alpha`. + +.. index:: + single: ROTG, Level-1 BLAS + single: Givens Rotation, BLAS + +.. function:: int gsl_blas_srotg (float a[], float b[], float c[], float s[]) + int gsl_blas_drotg (double a[], double b[], double c[], double s[]) + + These functions compute a Givens rotation :math:`(c,s)` which zeroes the + vector :math:`(a,b)`, + + .. only:: not texinfo + + .. math:: + + \left( + \begin{matrix} + c & s \\ + -s & c + \end{matrix} + \right) + \left( + \begin{matrix} + a \\ + b + \end{matrix} + \right) + = + \left( + \begin{matrix} + r' \\ + 0 + \end{matrix} + \right) + + .. only:: texinfo + + :: + + [ c s ] [ a ] = [ r ] + [ -s c ] [ b ] [ 0 ] + + The variables :data:`a` and :data:`b` are overwritten by the routine. + +.. function:: int gsl_blas_srot (gsl_vector_float * x, gsl_vector_float * y, float c, float s) + int gsl_blas_drot (gsl_vector * x, gsl_vector * y, const double c, const double s) + + These functions apply a Givens rotation :math:`(x', y') = (c x + s y, -s x + c y)` + to the vectors :data:`x`, :data:`y`. + +.. index:: + single: Modified Givens Rotation, BLAS + single: Givens Rotation, Modified, BLAS + +.. function:: int gsl_blas_srotmg (float d1[], float d2[], float b1[], float b2, float P[]) + int gsl_blas_drotmg (double d1[], double d2[], double b1[], double b2, double P[]) + + These functions compute a modified Givens transformation. The modified + Givens transformation is defined in the original Level-1 BLAS + specification, given in the references. + +.. function:: int gsl_blas_srotm (gsl_vector_float * x, gsl_vector_float * y, const float P[]) + int gsl_blas_drotm (gsl_vector * x, gsl_vector * y, const double P[]) + + These functions apply a modified Givens transformation. + +Level 2 +------- + +.. index:: + single: GEMV, Level-2 BLAS + +.. function:: int gsl_blas_sgemv (CBLAS_TRANSPOSE_t TransA, float alpha, const gsl_matrix_float * A, const gsl_vector_float * x, float beta, gsl_vector_float * y) + int gsl_blas_dgemv (CBLAS_TRANSPOSE_t TransA, double alpha, const gsl_matrix * A, const gsl_vector * x, double beta, gsl_vector * y) + int gsl_blas_cgemv (CBLAS_TRANSPOSE_t TransA, const gsl_complex_float alpha, const gsl_matrix_complex_float * A, const gsl_vector_complex_float * x, const gsl_complex_float beta, gsl_vector_complex_float * y) + int gsl_blas_zgemv (CBLAS_TRANSPOSE_t TransA, const gsl_complex alpha, const gsl_matrix_complex * A, const gsl_vector_complex * x, const gsl_complex beta, gsl_vector_complex * y) + + These functions compute the matrix-vector product and sum :math:`y = \alpha op(A) x + \beta y`, + where :math:`op(A) = A`, :math:`A^T`, :math:`A^H` for :data:`TransA` = :code:`CblasNoTrans`, + :code:`CblasTrans`, :code:`CblasConjTrans`. + +.. index:: + single: TRMV, Level-2 BLAS + +.. function:: int gsl_blas_strmv (CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t TransA, CBLAS_DIAG_t Diag, const gsl_matrix_float * A, gsl_vector_float * x) + int gsl_blas_dtrmv (CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t TransA, CBLAS_DIAG_t Diag, const gsl_matrix * A, gsl_vector * x) + int gsl_blas_ctrmv (CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t TransA, CBLAS_DIAG_t Diag, const gsl_matrix_complex_float * A, gsl_vector_complex_float * x) + int gsl_blas_ztrmv (CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t TransA, CBLAS_DIAG_t Diag, const gsl_matrix_complex * A, gsl_vector_complex * x) + + These functions compute the matrix-vector product + :math:`x = op(A) x` for the triangular matrix :data:`A`, where + :math:`op(A) = A`, :math:`A^T`, :math:`A^H` for :data:`TransA` = + :code:`CblasNoTrans`, :code:`CblasTrans`, :code:`CblasConjTrans`. When + :data:`Uplo` is :code:`CblasUpper` then the upper triangle of :data:`A` is + used, and when :data:`Uplo` is :code:`CblasLower` then the lower triangle + of :data:`A` is used. If :data:`Diag` is :code:`CblasNonUnit` then the + diagonal of the matrix is used, but if :data:`Diag` is :code:`CblasUnit` + then the diagonal elements of the matrix :data:`A` are taken as unity and + are not referenced. + +.. index:: + single: TRSV, Level-2 BLAS + +.. function:: int gsl_blas_strsv (CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t TransA, CBLAS_DIAG_t Diag, const gsl_matrix_float * A, gsl_vector_float * x) + int gsl_blas_dtrsv (CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t TransA, CBLAS_DIAG_t Diag, const gsl_matrix * A, gsl_vector * x) + int gsl_blas_ctrsv (CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t TransA, CBLAS_DIAG_t Diag, const gsl_matrix_complex_float * A, gsl_vector_complex_float * x) + int gsl_blas_ztrsv (CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t TransA, CBLAS_DIAG_t Diag, const gsl_matrix_complex * A, gsl_vector_complex * x) + + These functions compute :math:`inv(op(A)) x` for :data:`x`, where + :math:`op(A) = A`, :math:`A^T`, :math:`A^H` for :data:`TransA` = + :code:`CblasNoTrans`, :code:`CblasTrans`, :code:`CblasConjTrans`. When + :data:`Uplo` is :code:`CblasUpper` then the upper triangle of :data:`A` is + used, and when :data:`Uplo` is :code:`CblasLower` then the lower triangle + of :data:`A` is used. If :data:`Diag` is :code:`CblasNonUnit` then the + diagonal of the matrix is used, but if :data:`Diag` is :code:`CblasUnit` + then the diagonal elements of the matrix :data:`A` are taken as unity and + are not referenced. + +.. index:: + single: SYMV, Level-2 BLAS + +.. function:: int gsl_blas_ssymv (CBLAS_UPLO_t Uplo, float alpha, const gsl_matrix_float * A, const gsl_vector_float * x, float beta, gsl_vector_float * y) + int gsl_blas_dsymv (CBLAS_UPLO_t Uplo, double alpha, const gsl_matrix * A, const gsl_vector * x, double beta, gsl_vector * y) + + These functions compute the matrix-vector product and sum :math:`y = \alpha A x + \beta y` + for the symmetric matrix :data:`A`. Since the + matrix :data:`A` is symmetric only its upper half or lower half need to be + stored. When :data:`Uplo` is :code:`CblasUpper` then the upper triangle + and diagonal of :data:`A` are used, and when :data:`Uplo` is + :code:`CblasLower` then the lower triangle and diagonal of :data:`A` are + used. + +.. index:: + single: HEMV, Level-2 BLAS + +.. function:: int gsl_blas_chemv (CBLAS_UPLO_t Uplo, const gsl_complex_float alpha, const gsl_matrix_complex_float * A, const gsl_vector_complex_float * x, const gsl_complex_float beta, gsl_vector_complex_float * y) + int gsl_blas_zhemv (CBLAS_UPLO_t Uplo, const gsl_complex alpha, const gsl_matrix_complex * A, const gsl_vector_complex * x, const gsl_complex beta, gsl_vector_complex * y) + + These functions compute the matrix-vector product and sum :math:`y = \alpha A x + \beta y` + for the hermitian matrix :data:`A`. Since the + matrix :data:`A` is hermitian only its upper half or lower half need to be + stored. When :data:`Uplo` is :code:`CblasUpper` then the upper triangle + and diagonal of :data:`A` are used, and when :data:`Uplo` is + :code:`CblasLower` then the lower triangle and diagonal of :data:`A` are + used. The imaginary elements of the diagonal are automatically assumed + to be zero and are not referenced. + +.. index:: + single: GER, Level-2 BLAS + single: GERU, Level-2 BLAS + +.. function:: int gsl_blas_sger (float alpha, const gsl_vector_float * x, const gsl_vector_float * y, gsl_matrix_float * A) + int gsl_blas_dger (double alpha, const gsl_vector * x, const gsl_vector * y, gsl_matrix * A) + int gsl_blas_cgeru (const gsl_complex_float alpha, const gsl_vector_complex_float * x, const gsl_vector_complex_float * y, gsl_matrix_complex_float * A) + int gsl_blas_zgeru (const gsl_complex alpha, const gsl_vector_complex * x, const gsl_vector_complex * y, gsl_matrix_complex * A) + + These functions compute the rank-1 update :math:`A = \alpha x y^T + A` of + the matrix :data:`A`. + +.. index:: + single: GERC, Level-2 BLAS + +.. function:: int gsl_blas_cgerc (const gsl_complex_float alpha, const gsl_vector_complex_float * x, const gsl_vector_complex_float * y, gsl_matrix_complex_float * A) + int gsl_blas_zgerc (const gsl_complex alpha, const gsl_vector_complex * x, const gsl_vector_complex * y, gsl_matrix_complex * A) + + These functions compute the conjugate rank-1 update :math:`A = \alpha x y^H + A` + of the matrix :data:`A`. + +.. index:: + single: SYR, Level-2 BLAS + +.. function:: int gsl_blas_ssyr (CBLAS_UPLO_t Uplo, float alpha, const gsl_vector_float * x, gsl_matrix_float * A) + int gsl_blas_dsyr (CBLAS_UPLO_t Uplo, double alpha, const gsl_vector * x, gsl_matrix * A) + + These functions compute the symmetric rank-1 update :math:`A = \alpha x x^T + A` + of the symmetric matrix :data:`A`. Since the matrix :data:`A` is + symmetric only its upper half or lower half need to be stored. When + :data:`Uplo` is :code:`CblasUpper` then the upper triangle and diagonal of + :data:`A` are used, and when :data:`Uplo` is :code:`CblasLower` then the + lower triangle and diagonal of :data:`A` are used. + +.. index:: + single: HER, Level-2 BLAS + +.. function:: int gsl_blas_cher (CBLAS_UPLO_t Uplo, float alpha, const gsl_vector_complex_float * x, gsl_matrix_complex_float * A) + int gsl_blas_zher (CBLAS_UPLO_t Uplo, double alpha, const gsl_vector_complex * x, gsl_matrix_complex * A) + + These functions compute the hermitian rank-1 update :math:`A = \alpha x x^H + A` + of the hermitian matrix :data:`A`. Since the matrix :data:`A` is + hermitian only its upper half or lower half need to be stored. When + :data:`Uplo` is :code:`CblasUpper` then the upper triangle and diagonal of + :data:`A` are used, and when :data:`Uplo` is :code:`CblasLower` then the + lower triangle and diagonal of :data:`A` are used. The imaginary elements + of the diagonal are automatically set to zero. + +.. index:: + single: SYR2, Level-2 BLAS + +.. function:: int gsl_blas_ssyr2 (CBLAS_UPLO_t Uplo, float alpha, const gsl_vector_float * x, const gsl_vector_float * y, gsl_matrix_float * A) + int gsl_blas_dsyr2 (CBLAS_UPLO_t Uplo, double alpha, const gsl_vector * x, const gsl_vector * y, gsl_matrix * A) + + These functions compute the symmetric rank-2 update :math:`A = \alpha x y^T + \alpha y x^T + A` + of the symmetric matrix :data:`A`. Since the + matrix :data:`A` is symmetric only its upper half or lower half need to be + stored. When :data:`Uplo` is :code:`CblasUpper` then the upper triangle + and diagonal of :data:`A` are used, and when :data:`Uplo` is + :code:`CblasLower` then the lower triangle and diagonal of :data:`A` are + used. + +.. index:: + single: HER2, Level-2 BLAS + +.. function:: int gsl_blas_cher2 (CBLAS_UPLO_t Uplo, const gsl_complex_float alpha, const gsl_vector_complex_float * x, const gsl_vector_complex_float * y, gsl_matrix_complex_float * A) + int gsl_blas_zher2 (CBLAS_UPLO_t Uplo, const gsl_complex alpha, const gsl_vector_complex * x, const gsl_vector_complex * y, gsl_matrix_complex * A) + + These functions compute the hermitian rank-2 update :math:`A = \alpha x y^H + \alpha^* y x^H + A` + of the hermitian matrix :data:`A`. Since the + matrix :data:`A` is hermitian only its upper half or lower half need to be + stored. When :data:`Uplo` is :code:`CblasUpper` then the upper triangle + and diagonal of :data:`A` are used, and when :data:`Uplo` is + :code:`CblasLower` then the lower triangle and diagonal of :data:`A` are + used. The imaginary elements of the diagonal are automatically set to zero. + +Level 3 +------- + +.. index:: + single: GEMM, Level-3 BLAS + +.. function:: int gsl_blas_sgemm (CBLAS_TRANSPOSE_t TransA, CBLAS_TRANSPOSE_t TransB, float alpha, const gsl_matrix_float * A, const gsl_matrix_float * B, float beta, gsl_matrix_float * C) + int gsl_blas_dgemm (CBLAS_TRANSPOSE_t TransA, CBLAS_TRANSPOSE_t TransB, double alpha, const gsl_matrix * A, const gsl_matrix * B, double beta, gsl_matrix * C) + int gsl_blas_cgemm (CBLAS_TRANSPOSE_t TransA, CBLAS_TRANSPOSE_t TransB, const gsl_complex_float alpha, const gsl_matrix_complex_float * A, const gsl_matrix_complex_float * B, const gsl_complex_float beta, gsl_matrix_complex_float * C) + int gsl_blas_zgemm (CBLAS_TRANSPOSE_t TransA, CBLAS_TRANSPOSE_t TransB, const gsl_complex alpha, const gsl_matrix_complex * A, const gsl_matrix_complex * B, const gsl_complex beta, gsl_matrix_complex * C) + + These functions compute the matrix-matrix product and sum :math:`C = \alpha op(A) op(B) + \beta C` + where :math:`op(A) = A`, :math:`A^T`, + :math:`A^H` for :data:`TransA` = :code:`CblasNoTrans`, :code:`CblasTrans`, + :code:`CblasConjTrans` and similarly for the parameter :data:`TransB`. + +.. index:: + single: SYMM, Level-3 BLAS + +.. function:: int gsl_blas_ssymm (CBLAS_SIDE_t Side, CBLAS_UPLO_t Uplo, float alpha, const gsl_matrix_float * A, const gsl_matrix_float * B, float beta, gsl_matrix_float * C) + int gsl_blas_dsymm (CBLAS_SIDE_t Side, CBLAS_UPLO_t Uplo, double alpha, const gsl_matrix * A, const gsl_matrix * B, double beta, gsl_matrix * C) + int gsl_blas_csymm (CBLAS_SIDE_t Side, CBLAS_UPLO_t Uplo, const gsl_complex_float alpha, const gsl_matrix_complex_float * A, const gsl_matrix_complex_float * B, const gsl_complex_float beta, gsl_matrix_complex_float * C) + int gsl_blas_zsymm (CBLAS_SIDE_t Side, CBLAS_UPLO_t Uplo, const gsl_complex alpha, const gsl_matrix_complex * A, const gsl_matrix_complex * B, const gsl_complex beta, gsl_matrix_complex * C) + + These functions compute the matrix-matrix product and sum :math:`C = \alpha A B + \beta C` + for :data:`Side` is :code:`CblasLeft` and :math:`C = \alpha B A + \beta C` + for :data:`Side` is :code:`CblasRight`, where the + matrix :data:`A` is symmetric. When :data:`Uplo` is :code:`CblasUpper` then + the upper triangle and diagonal of :data:`A` are used, and when :data:`Uplo` + is :code:`CblasLower` then the lower triangle and diagonal of :data:`A` are + used. + +.. index:: + single: HEMM, Level-3 BLAS + +.. function:: int gsl_blas_chemm (CBLAS_SIDE_t Side, CBLAS_UPLO_t Uplo, const gsl_complex_float alpha, const gsl_matrix_complex_float * A, const gsl_matrix_complex_float * B, const gsl_complex_float beta, gsl_matrix_complex_float * C) + int gsl_blas_zhemm (CBLAS_SIDE_t Side, CBLAS_UPLO_t Uplo, const gsl_complex alpha, const gsl_matrix_complex * A, const gsl_matrix_complex * B, const gsl_complex beta, gsl_matrix_complex * C) + + These functions compute the matrix-matrix product and sum :math:`C = \alpha A B + \beta C` + for :data:`Side` is :code:`CblasLeft` and :math:`C = \alpha B A + \beta C` + for :data:`Side` is :code:`CblasRight`, where the + matrix :data:`A` is hermitian. When :data:`Uplo` is :code:`CblasUpper` then + the upper triangle and diagonal of :data:`A` are used, and when :data:`Uplo` + is :code:`CblasLower` then the lower triangle and diagonal of :data:`A` are + used. The imaginary elements of the diagonal are automatically set to + zero. + +.. index:: + single: TRMM, Level-3 BLAS + +.. function:: int gsl_blas_strmm (CBLAS_SIDE_t Side, CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t TransA, CBLAS_DIAG_t Diag, float alpha, const gsl_matrix_float * A, gsl_matrix_float * B) + int gsl_blas_dtrmm (CBLAS_SIDE_t Side, CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t TransA, CBLAS_DIAG_t Diag, double alpha, const gsl_matrix * A, gsl_matrix * B) + int gsl_blas_ctrmm (CBLAS_SIDE_t Side, CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t TransA, CBLAS_DIAG_t Diag, const gsl_complex_float alpha, const gsl_matrix_complex_float * A, gsl_matrix_complex_float * B) + int gsl_blas_ztrmm (CBLAS_SIDE_t Side, CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t TransA, CBLAS_DIAG_t Diag, const gsl_complex alpha, const gsl_matrix_complex * A, gsl_matrix_complex * B) + + These functions compute the matrix-matrix product :math:`B = \alpha op(A) B` + for :data:`Side` is :code:`CblasLeft` and :math:`B = \alpha B op(A)` for + :data:`Side` is :code:`CblasRight`. The matrix :data:`A` is triangular and + :math:`op(A) = A`, :math:`A^T`, :math:`A^H` for :data:`TransA` = + :code:`CblasNoTrans`, :code:`CblasTrans`, :code:`CblasConjTrans`. When + :data:`Uplo` is :code:`CblasUpper` then the upper triangle of :data:`A` is + used, and when :data:`Uplo` is :code:`CblasLower` then the lower triangle + of :data:`A` is used. If :data:`Diag` is :code:`CblasNonUnit` then the + diagonal of :data:`A` is used, but if :data:`Diag` is :code:`CblasUnit` then + the diagonal elements of the matrix :data:`A` are taken as unity and are + not referenced. + +.. index:: + single: TRSM, Level-3 BLAS + +.. function:: int gsl_blas_strsm (CBLAS_SIDE_t Side, CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t TransA, CBLAS_DIAG_t Diag, float alpha, const gsl_matrix_float * A, gsl_matrix_float * B) + int gsl_blas_dtrsm (CBLAS_SIDE_t Side, CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t TransA, CBLAS_DIAG_t Diag, double alpha, const gsl_matrix * A, gsl_matrix * B) + int gsl_blas_ctrsm (CBLAS_SIDE_t Side, CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t TransA, CBLAS_DIAG_t Diag, const gsl_complex_float alpha, const gsl_matrix_complex_float * A, gsl_matrix_complex_float * B) + int gsl_blas_ztrsm (CBLAS_SIDE_t Side, CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t TransA, CBLAS_DIAG_t Diag, const gsl_complex alpha, const gsl_matrix_complex * A, gsl_matrix_complex * B) + + These functions compute the inverse-matrix matrix product + :math:`B = \alpha op(inv(A))B` for :data:`Side` is + :code:`CblasLeft` and :math:`B = \alpha B op(inv(A))` for + :data:`Side` is :code:`CblasRight`. The matrix :data:`A` is triangular and + :math:`op(A) = A`, :math:`A^T`, :math:`A^H` for :data:`TransA` = + :code:`CblasNoTrans`, :code:`CblasTrans`, :code:`CblasConjTrans`. When + :data:`Uplo` is :code:`CblasUpper` then the upper triangle of :data:`A` is + used, and when :data:`Uplo` is :code:`CblasLower` then the lower triangle + of :data:`A` is used. If :data:`Diag` is :code:`CblasNonUnit` then the + diagonal of :data:`A` is used, but if :data:`Diag` is :code:`CblasUnit` then + the diagonal elements of the matrix :data:`A` are taken as unity and are + not referenced. + +.. index:: + single: SYRK, Level-3 BLAS + +.. function:: int gsl_blas_ssyrk (CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t Trans, float alpha, const gsl_matrix_float * A, float beta, gsl_matrix_float * C) + int gsl_blas_dsyrk (CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t Trans, double alpha, const gsl_matrix * A, double beta, gsl_matrix * C) + int gsl_blas_csyrk (CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t Trans, const gsl_complex_float alpha, const gsl_matrix_complex_float * A, const gsl_complex_float beta, gsl_matrix_complex_float * C) + int gsl_blas_zsyrk (CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t Trans, const gsl_complex alpha, const gsl_matrix_complex * A, const gsl_complex beta, gsl_matrix_complex * C) + + These functions compute a rank-k update of the symmetric matrix :data:`C`, + :math:`C = \alpha A A^T + \beta C` when :data:`Trans` is + :code:`CblasNoTrans` and :math:`C = \alpha A^T A + \beta C` when + :data:`Trans` is :code:`CblasTrans`. Since the matrix :data:`C` is symmetric + only its upper half or lower half need to be stored. When :data:`Uplo` is + :code:`CblasUpper` then the upper triangle and diagonal of :data:`C` are + used, and when :data:`Uplo` is :code:`CblasLower` then the lower triangle + and diagonal of :data:`C` are used. + +.. index:: + single: HERK, Level-3 BLAS + +.. function:: int gsl_blas_cherk (CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t Trans, float alpha, const gsl_matrix_complex_float * A, float beta, gsl_matrix_complex_float * C) + int gsl_blas_zherk (CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t Trans, double alpha, const gsl_matrix_complex * A, double beta, gsl_matrix_complex * C) + + These functions compute a rank-k update of the hermitian matrix :data:`C`, + :math:`C = \alpha A A^H + \beta C` when :data:`Trans` is + :code:`CblasNoTrans` and :math:`C = \alpha A^H A + \beta C` when + :data:`Trans` is :code:`CblasConjTrans`. Since the matrix :data:`C` is hermitian + only its upper half or lower half need to be stored. When :data:`Uplo` is + :code:`CblasUpper` then the upper triangle and diagonal of :data:`C` are + used, and when :data:`Uplo` is :code:`CblasLower` then the lower triangle + and diagonal of :data:`C` are used. The imaginary elements of the + diagonal are automatically set to zero. + +.. index:: + single: SYR2K, Level-3 BLAS + +.. function:: int gsl_blas_ssyr2k (CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t Trans, float alpha, const gsl_matrix_float * A, const gsl_matrix_float * B, float beta, gsl_matrix_float * C) + int gsl_blas_dsyr2k (CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t Trans, double alpha, const gsl_matrix * A, const gsl_matrix * B, double beta, gsl_matrix * C) + int gsl_blas_csyr2k (CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t Trans, const gsl_complex_float alpha, const gsl_matrix_complex_float * A, const gsl_matrix_complex_float * B, const gsl_complex_float beta, gsl_matrix_complex_float * C) + int gsl_blas_zsyr2k (CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t Trans, const gsl_complex alpha, const gsl_matrix_complex * A, const gsl_matrix_complex * B, const gsl_complex beta, gsl_matrix_complex * C) + + These functions compute a rank-2k update of the symmetric matrix :data:`C`, + :math:`C = \alpha A B^T + \alpha B A^T + \beta C` when :data:`Trans` is + :code:`CblasNoTrans` and :math:`C = \alpha A^T B + \alpha B^T A + \beta C` when + :data:`Trans` is :code:`CblasTrans`. Since the matrix :data:`C` is symmetric + only its upper half or lower half need to be stored. When :data:`Uplo` is + :code:`CblasUpper` then the upper triangle and diagonal of :data:`C` are + used, and when :data:`Uplo` is :code:`CblasLower` then the lower triangle + and diagonal of :data:`C` are used. + +.. index:: + single: HER2K, Level-3 BLAS + +.. function:: int gsl_blas_cher2k (CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t Trans, const gsl_complex_float alpha, const gsl_matrix_complex_float * A, const gsl_matrix_complex_float * B, float beta, gsl_matrix_complex_float * C) + int gsl_blas_zher2k (CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t Trans, const gsl_complex alpha, const gsl_matrix_complex * A, const gsl_matrix_complex * B, double beta, gsl_matrix_complex * C) + + These functions compute a rank-2k update of the hermitian matrix :data:`C`, + :math:`C = \alpha A B^H + \alpha^* B A^H + \beta C` when :data:`Trans` is + :code:`CblasNoTrans` and :math:`C = \alpha A^H B + \alpha^* B^H A + \beta C` when + :data:`Trans` is :code:`CblasConjTrans`. Since the matrix :data:`C` is hermitian + only its upper half or lower half need to be stored. When :data:`Uplo` is + :code:`CblasUpper` then the upper triangle and diagonal of :data:`C` are + used, and when :data:`Uplo` is :code:`CblasLower` then the lower triangle + and diagonal of :data:`C` are used. The imaginary elements of the + diagonal are automatically set to zero. + +Examples +======== + +The following program computes the product of two matrices using the +Level-3 BLAS function DGEMM, + +.. only:: not texinfo + + .. math:: + + \left( + \begin{matrix} + 0.11&0.12&0.13 \\ + 0.21&0.22&0.23 + \end{matrix} + \right) + \left( + \begin{matrix} + 1011&1012 \\ + 1021&1022 \\ + 1031&1031 + \end{matrix} + \right) + = + \left( + \begin{matrix} + 367.76&368.12 \\ + 674.06&674.72 + \end{matrix} + \right) + +.. only:: texinfo + + :: + + [ 0.11 0.12 0.13 ] [ 1011 1012 ] [ 367.76 368.12 ] + [ 0.21 0.22 0.23 ] [ 1021 1022 ] = [ 674.06 674.72 ] + [ 1031 1032 ] + +The matrices are stored in row major order, according to the C convention +for arrays. + +.. include:: examples/blas.c + :code: + +Here is the output from the program, + +.. include:: examples/blas.txt + :code: + +.. _sec_blas-references: + +References and Further Reading +============================== + +Information on the BLAS standards, including both the legacy and +updated interface standards, is available online from the BLAS +Homepage and BLAS Technical Forum web-site. + +* BLAS Homepage, http://www.netlib.org/blas/ + +* BLAS Technical Forum, http://www.netlib.org/blas/blast-forum/ + +The following papers contain the specifications for Level 1, Level 2 and +Level 3 BLAS. + +* C. Lawson, R. Hanson, D. Kincaid, F. Krogh, "Basic Linear Algebra + Subprograms for Fortran Usage", ACM Transactions on Mathematical + Software, Vol.: 5 (1979), Pages 308--325. + +* J.J. Dongarra, J. DuCroz, S. Hammarling, R. Hanson, "An Extended Set of + Fortran Basic Linear Algebra Subprograms", ACM Transactions on + Mathematical Software, Vol.: 14, No.: 1 (1988), Pages 1--32. + +* J.J. Dongarra, I. Duff, J. DuCroz, S. Hammarling, "A Set of + Level 3 Basic Linear Algebra Subprograms", ACM Transactions on + Mathematical Software, Vol.: 16 (1990), Pages 1--28. + +Postscript versions of the latter two papers are available from +http://www.netlib.org/blas/. A CBLAS wrapper for Fortran BLAS +libraries is available from the same location. + +.. rubric:: Footnotes + +.. [#f1] In the low-level CBLAS interface, a negative stride accesses the vector elements + in reverse order, i.e. the :math:`i`-th element is given by + :math:`(N-i)*|incx|` for :math:`incx < 0`. diff --git a/gsl-2.5/doc/bspline.rst b/gsl-2.5/doc/bspline.rst new file mode 100644 index 00000000..ba1908d5 --- /dev/null +++ b/gsl-2.5/doc/bspline.rst @@ -0,0 +1,268 @@ +.. index:: + single: basis splines, B-splines + single: splines, basis + +.. _chap_basis-splines: + +************* +Basis Splines +************* + +This chapter describes functions for the computation of smoothing +basis splines (B-splines). A smoothing spline differs from an +interpolating spline in that the resulting curve is not required to +pass through each datapoint. For information about +interpolating splines, see :ref:`sec_interpolation`. + +The header file :file:`gsl_bspline.h` contains the prototypes for the +bspline functions and related declarations. + +.. index:: + single: basis splines, overview + +Overview +======== + +B-splines are commonly used as basis functions to fit smoothing +curves to large data sets. To do this, the abscissa axis is +broken up into some number of intervals, where the endpoints +of each interval are called *breakpoints*. These breakpoints +are then converted to *knots* by imposing various continuity +and smoothness conditions at each interface. Given a nondecreasing +knot vector + +.. math:: t = \{t_0, t_1, \dots, t_{n+k-1}\} + +the :math:`n` basis splines of order :math:`k` are defined by + +.. only:: not texinfo + + .. math:: + + B_{i,1}(x) &= + \left\{ + \begin{array}{cc} + 1, & t_i \le x < t_{i+1} \\ + 0, & else + \end{array} + \right. \\ + B_{i,k}(x) &= {(x - t_i) \over (t_{i+k-1} - t_i)} B_{i,k-1}(x) + + {(t_{i+k} - x) \over (t_{i+k} - t_{i+1})} B_{i+1,k-1}(x) + +.. only:: texinfo + + :: + + B_(i,1)(x) = (1, t_i <= x < t_(i+1) + (0, else + B_(i,k)(x) = [(x - t_i)/(t_(i+k-1) - t_i)] B_(i,k-1)(x) + + [(t_(i+k) - x)/(t_(i+k) - t_(i+1))] B_(i+1,k-1)(x) + +for :math:`i = 0, \ldots, n-1`. The common case of cubic B-splines +is given by :math:`k = 4`. The above recurrence relation can be +evaluated in a numerically stable way by the de Boor algorithm. + +If we define appropriate knots on an interval :math:`[a,b]` then +the B-spline basis functions form a complete set on that interval. +Therefore we can expand a smoothing function as + +.. math:: f(x) = \sum_{i=0}^{n-1} c_i B_{i,k}(x) + +given enough :math:`(x_j, f(x_j))` data pairs. The coefficients +:math:`c_i` can be readily obtained from a least-squares fit. + +.. index:: + single: basis splines, initializing + +Initializing the B-splines solver +================================= + +.. type:: gsl_bspline_workspace + + The computation of B-spline functions requires a preallocated + workspace. + +.. function:: gsl_bspline_workspace * gsl_bspline_alloc (const size_t k, const size_t nbreak) + + This function allocates a workspace for computing B-splines of order + :data:`k`. The number of breakpoints is given by :data:`nbreak`. This + leads to :math:`n = nbreak + k - 2` basis functions. Cubic B-splines + are specified by :math:`k = 4`. The size of the workspace is + :math:`O(2k^2 + 5k + nbreak)`. + +.. function:: void gsl_bspline_free (gsl_bspline_workspace * w) + + This function frees the memory associated with the workspace :data:`w`. + +.. index:: + single: knots, basis splines + +Constructing the knots vector +============================= + +.. function:: int gsl_bspline_knots (const gsl_vector * breakpts, gsl_bspline_workspace * w) + + This function computes the knots associated with the given breakpoints + and stores them internally in :code:`w->knots`. + +.. function:: int gsl_bspline_knots_uniform (const double a, const double b, gsl_bspline_workspace * w) + + This function assumes uniformly spaced breakpoints on :math:`[a,b]` + and constructs the corresponding knot vector using the previously + specified :data:`nbreak` parameter. The knots are stored in + :code:`w->knots`. + +.. index:: + single: basis splines, evaluation + +Evaluation of B-splines +======================= + +.. function:: int gsl_bspline_eval (const double x, gsl_vector * B, gsl_bspline_workspace * w) + + This function evaluates all B-spline basis functions at the position + :data:`x` and stores them in the vector :data:`B`, so that the :math:`i`-th element + is :math:`B_i(x)`. The vector :data:`B` must be of length + :math:`n = nbreak + k - 2`. This value may also be obtained by calling + :func:`gsl_bspline_ncoeffs`. + Computing all the basis functions at once is more efficient than + computing them individually, due to the nature of the defining + recurrence relation. + +.. function:: int gsl_bspline_eval_nonzero (const double x, gsl_vector * Bk, size_t * istart, size_t * iend, gsl_bspline_workspace * w) + + This function evaluates all potentially nonzero B-spline basis + functions at the position :data:`x` and stores them in the vector :data:`Bk`, so + that the :math:`i`-th element is :math:`B_{(istart+i)}(x)`. + The last element of :data:`Bk` is :math:`B_{iend}(x)`. + The vector :data:`Bk` must be + of length :math:`k`. By returning only the nonzero basis functions, + this function + allows quantities involving linear combinations of the :math:`B_i(x)` + to be computed without unnecessary terms + (such linear combinations occur, for example, + when evaluating an interpolated function). + +.. function:: size_t gsl_bspline_ncoeffs (gsl_bspline_workspace * w) + + This function returns the number of B-spline coefficients given by + :math:`n = nbreak + k - 2`. + +.. index:: + single: basis splines, derivatives + +Evaluation of B-spline derivatives +================================== + +.. function:: int gsl_bspline_deriv_eval (const double x, const size_t nderiv, gsl_matrix * dB, gsl_bspline_workspace * w) + + This function evaluates all B-spline basis function derivatives of orders + :math:`0` through :data:`nderiv` (inclusive) at the position :data:`x` + and stores them in the matrix :data:`dB`. The :math:`(i,j)`-th element of :data:`dB` + is :math:`d^jB_i(x)/dx^j`. The matrix :data:`dB` must be + of size :math:`n = nbreak + k - 2` by :math:`nderiv + 1`. + The value :math:`n` may also be obtained + by calling :func:`gsl_bspline_ncoeffs`. Note that function evaluations + are included as the zeroth order derivatives in :data:`dB`. + Computing all the basis function derivatives at once is more efficient + than computing them individually, due to the nature of the defining + recurrence relation. + +.. function:: int gsl_bspline_deriv_eval_nonzero (const double x, const size_t nderiv, gsl_matrix * dB, size_t * istart, size_t * iend, gsl_bspline_workspace * w) + + This function evaluates all potentially nonzero B-spline basis function + derivatives of orders :math:`0` through :data:`nderiv` (inclusive) at + the position :data:`x` and stores them in the matrix :data:`dB`. The + :math:`(i,j)`-th element of :data:`dB` is :math:`d^jB_{(istart+i)}(x)/dx^j`. + The last row of :data:`dB` contains :math:`d^jB_{iend}(x)/dx^j`. + The matrix :data:`dB` must be + of size :math:`k` by at least :math:`nderiv + 1`. Note that function + evaluations are included as the zeroth order derivatives in :data:`dB`. + By returning only the nonzero basis functions, this function allows + quantities involving linear combinations of the :math:`B_i(x)` and + their derivatives to be computed without unnecessary terms. + +.. index:: + single: basis splines, Greville abscissae + single: basis splines, Marsden-Schoenberg points + +Working with the Greville abscissae +=================================== + +The Greville abscissae are defined to be the mean location of :math:`k-1` +consecutive knots in the knot vector for each basis spline function of order +:math:`k`. With the first and last knots in the :type:`gsl_bspline_workspace` +knot vector excluded, there are :func:`gsl_bspline_ncoeffs` Greville abscissae +for any given B-spline basis. These values are often used in B-spline +collocation applications and may also be called Marsden-Schoenberg points. + +.. function:: double gsl_bspline_greville_abscissa (size_t i, gsl_bspline_workspace * w) + + Returns the location of the :math:`i`-th Greville abscissa for the given + B-spline basis. For the ill-defined case when :math:`k = 1`, the implementation + chooses to return breakpoint interval midpoints. + +.. See https://savannah.gnu.org/bugs/index.php?34361 +.. @deftypefun int gsl_bspline_knots_greville (const gsl_vector * abscissae, gsl_bspline_workspace * w, double * abserr); +.. Given target Greville abscissae values in :data:`abscissae` and a workspace +.. :data:`w` where @code{abscissae->size == gsl_bspline_ncoeffs(w)}, this functions +.. computes and stores the knots required for the workspace to best approximate +.. the target abscissae. The approximation is optimal in that the first and last +.. values in :data:`abscissae` are preserved exactly while the 2-norm of the error +.. in any other abscissae is minimized. If not-@code{NULL}, the sum of the +.. absolute approximation errors over each abscissa is returned in :data:`abserr`. +.. +.. The workspace order must satisfy :math:`k > 1` and :data:`abscissae` should be +.. monotonically increasing. Beware that when @code{w->nbreak} is small relative +.. to @code{w->k} the best approximation may still be of poor quality for +.. non-uniformly spaced :data:`abscissae`. This function has memory and runtime +.. overhead that scales like a QR-based linear least squares solution on a +.. @code{(abscissae->size - 2)} by @code{(w->nbreak - 2)} problem. +.. @end deftypefun + +.. index:: + single: basis splines, examples + +Examples +======== + +The following program computes a linear least squares fit to data using +cubic B-spline basis functions with uniform breakpoints. The data is +generated from the curve :math:`y(x) = \cos{(x)} \exp{(-x/10)}` on +the interval :math:`[0, 15]` with Gaussian noise added. + +.. include:: examples/bspline.c + :code: + +The output is shown below:: + + $ ./a.out > bspline.txt + chisq/dof = 1.118217e+00, Rsq = 0.989771 + +The data and fitted model are shown in :numref:`fig_bspline`. + +.. _fig_bspline: + +.. figure:: /images/bspline.png + :scale: 60% + + Data (black) and fitted model (red) + +References and Further Reading +============================== + +Further information on the algorithms described in this section can be +found in the following book, + +* C. de Boor, *A Practical Guide to Splines* (1978), Springer-Verlag, + ISBN 0-387-90356-9. + +Further information of Greville abscissae and B-spline collocation +can be found in the following paper, + +* Richard W. Johnson, Higher order B-spline collocation at the Greville + abscissae. *Applied Numerical Mathematics*. vol.: 52, 2005, 63--75. + +A large collection of B-spline routines is available in the +PPPACK library available at http://www.netlib.org/pppack, +which is also part of SLATEC. diff --git a/gsl-2.5/doc/cblas.rst b/gsl-2.5/doc/cblas.rst new file mode 100644 index 00000000..81314003 --- /dev/null +++ b/gsl-2.5/doc/cblas.rst @@ -0,0 +1,370 @@ +.. index:: + single: Low-level CBLAS + single: CBLAS, Low-level interface + single: BLAS, Low-level C interface + single: Basic Linear Algebra Subroutines (BLAS) + +.. _chap_cblas: + +***************** +GSL CBLAS Library +***************** + +.. include:: include.rst + +The prototypes for the low-level |cblas| functions are declared in +the file :file:`gsl_cblas.h`. For the definition of the functions +consult the documentation available from Netlib (:ref:`see BLAS References and +Further Reading `). + +Level 1 +======= + +.. function:: float cblas_sdsdot (const int N, const float alpha, const float * x, const int incx, const float * y, const int incy) + +.. function:: double cblas_dsdot (const int N, const float * x, const int incx, const float * y, const int incy) + +.. function:: float cblas_sdot (const int N, const float * x, const int incx, const float * y, const int incy) + +.. function:: double cblas_ddot (const int N, const double * x, const int incx, const double * y, const int incy) + +.. function:: void cblas_cdotu_sub (const int N, const void * x, const int incx, const void * y, const int incy, void * dotu) + +.. function:: void cblas_cdotc_sub (const int N, const void * x, const int incx, const void * y, const int incy, void * dotc) + +.. function:: void cblas_zdotu_sub (const int N, const void * x, const int incx, const void * y, const int incy, void * dotu) + +.. function:: void cblas_zdotc_sub (const int N, const void * x, const int incx, const void * y, const int incy, void * dotc) + +.. function:: float cblas_snrm2 (const int N, const float * x, const int incx) + +.. function:: float cblas_sasum (const int N, const float * x, const int incx) + +.. function:: double cblas_dnrm2 (const int N, const double * x, const int incx) + +.. function:: double cblas_dasum (const int N, const double * x, const int incx) + +.. function:: float cblas_scnrm2 (const int N, const void * x, const int incx) + +.. function:: float cblas_scasum (const int N, const void * x, const int incx) + +.. function:: double cblas_dznrm2 (const int N, const void * x, const int incx) + +.. function:: double cblas_dzasum (const int N, const void * x, const int incx) + +.. function:: CBLAS_INDEX cblas_isamax (const int N, const float * x, const int incx) + +.. function:: CBLAS_INDEX cblas_idamax (const int N, const double * x, const int incx) + +.. function:: CBLAS_INDEX cblas_icamax (const int N, const void * x, const int incx) + +.. function:: CBLAS_INDEX cblas_izamax (const int N, const void * x, const int incx) + +.. function:: void cblas_sswap (const int N, float * x, const int incx, float * y, const int incy) + +.. function:: void cblas_scopy (const int N, const float * x, const int incx, float * y, const int incy) + +.. function:: void cblas_saxpy (const int N, const float alpha, const float * x, const int incx, float * y, const int incy) + +.. function:: void cblas_dswap (const int N, double * x, const int incx, double * y, const int incy) + +.. function:: void cblas_dcopy (const int N, const double * x, const int incx, double * y, const int incy) + +.. function:: void cblas_daxpy (const int N, const double alpha, const double * x, const int incx, double * y, const int incy) + +.. function:: void cblas_cswap (const int N, void * x, const int incx, void * y, const int incy) + +.. function:: void cblas_ccopy (const int N, const void * x, const int incx, void * y, const int incy) + +.. function:: void cblas_caxpy (const int N, const void * alpha, const void * x, const int incx, void * y, const int incy) + +.. function:: void cblas_zswap (const int N, void * x, const int incx, void * y, const int incy) + +.. function:: void cblas_zcopy (const int N, const void * x, const int incx, void * y, const int incy) + +.. function:: void cblas_zaxpy (const int N, const void * alpha, const void * x, const int incx, void * y, const int incy) + +.. function:: void cblas_srotg (float * a, float * b, float * c, float * s) + +.. function:: void cblas_srotmg (float * d1, float * d2, float * b1, const float b2, float * P) + +.. function:: void cblas_srot (const int N, float * x, const int incx, float * y, const int incy, const float c, const float s) + +.. function:: void cblas_srotm (const int N, float * x, const int incx, float * y, const int incy, const float * P) + +.. function:: void cblas_drotg (double * a, double * b, double * c, double * s) + +.. function:: void cblas_drotmg (double * d1, double * d2, double * b1, const double b2, double * P) + +.. function:: void cblas_drot (const int N, double * x, const int incx, double * y, const int incy, const double c, const double s) + +.. function:: void cblas_drotm (const int N, double * x, const int incx, double * y, const int incy, const double * P) + +.. function:: void cblas_sscal (const int N, const float alpha, float * x, const int incx) + +.. function:: void cblas_dscal (const int N, const double alpha, double * x, const int incx) + +.. function:: void cblas_cscal (const int N, const void * alpha, void * x, const int incx) + +.. function:: void cblas_zscal (const int N, const void * alpha, void * x, const int incx) + +.. function:: void cblas_csscal (const int N, const float alpha, void * x, const int incx) + +.. function:: void cblas_zdscal (const int N, const double alpha, void * x, const int incx) + +Level 2 +======= + +.. function:: void cblas_sgemv (const enum CBLAS_ORDER order, const enum CBLAS_TRANSPOSE TransA, const int M, const int N, const float alpha, const float * A, const int lda, const float * x, const int incx, const float beta, float * y, const int incy) + +.. function:: void cblas_sgbmv (const enum CBLAS_ORDER order, const enum CBLAS_TRANSPOSE TransA, const int M, const int N, const int KL, const int KU, const float alpha, const float * A, const int lda, const float * x, const int incx, const float beta, float * y, const int incy) + +.. function:: void cblas_strmv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, const int N, const float * A, const int lda, float * x, const int incx) + +.. function:: void cblas_stbmv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, const int N, const int K, const float * A, const int lda, float * x, const int incx) + +.. function:: void cblas_stpmv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, const int N, const float * Ap, float * x, const int incx) + +.. function:: void cblas_strsv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, const int N, const float * A, const int lda, float * x, const int incx) + +.. function:: void cblas_stbsv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, const int N, const int K, const float * A, const int lda, float * x, const int incx) + +.. function:: void cblas_stpsv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, const int N, const float * Ap, float * x, const int incx) + +.. function:: void cblas_dgemv (const enum CBLAS_ORDER order, const enum CBLAS_TRANSPOSE TransA, const int M, const int N, const double alpha, const double * A, const int lda, const double * x, const int incx, const double beta, double * y, const int incy) + +.. function:: void cblas_dgbmv (const enum CBLAS_ORDER order, const enum CBLAS_TRANSPOSE TransA, const int M, const int N, const int KL, const int KU, const double alpha, const double * A, const int lda, const double * x, const int incx, const double beta, double * y, const int incy) + +.. function:: void cblas_dtrmv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, const int N, const double * A, const int lda, double * x, const int incx) + +.. function:: void cblas_dtbmv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, const int N, const int K, const double * A, const int lda, double * x, const int incx) + +.. function:: void cblas_dtpmv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, const int N, const double * Ap, double * x, const int incx) + +.. function:: void cblas_dtrsv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, const int N, const double * A, const int lda, double * x, const int incx) + +.. function:: void cblas_dtbsv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, const int N, const int K, const double * A, const int lda, double * x, const int incx) + +.. function:: void cblas_dtpsv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, const int N, const double * Ap, double * x, const int incx) + +.. function:: void cblas_cgemv (const enum CBLAS_ORDER order, const enum CBLAS_TRANSPOSE TransA, const int M, const int N, const void * alpha, const void * A, const int lda, const void * x, const int incx, const void * beta, void * y, const int incy) + +.. function:: void cblas_cgbmv (const enum CBLAS_ORDER order, const enum CBLAS_TRANSPOSE TransA, const int M, const int N, const int KL, const int KU, const void * alpha, const void * A, const int lda, const void * x, const int incx, const void * beta, void * y, const int incy) + +.. function:: void cblas_ctrmv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, const int N, const void * A, const int lda, void * x, const int incx) + +.. function:: void cblas_ctbmv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, const int N, const int K, const void * A, const int lda, void * x, const int incx) + +.. function:: void cblas_ctpmv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, const int N, const void * Ap, void * x, const int incx) + +.. function:: void cblas_ctrsv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, const int N, const void * A, const int lda, void * x, const int incx) + +.. function:: void cblas_ctbsv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, const int N, const int K, const void * A, const int lda, void * x, const int incx) + +.. function:: void cblas_ctpsv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, const int N, const void * Ap, void * x, const int incx) + +.. function:: void cblas_zgemv (const enum CBLAS_ORDER order, const enum CBLAS_TRANSPOSE TransA, const int M, const int N, const void * alpha, const void * A, const int lda, const void * x, const int incx, const void * beta, void * y, const int incy) + +.. function:: void cblas_zgbmv (const enum CBLAS_ORDER order, const enum CBLAS_TRANSPOSE TransA, const int M, const int N, const int KL, const int KU, const void * alpha, const void * A, const int lda, const void * x, const int incx, const void * beta, void * y, const int incy) + +.. function:: void cblas_ztrmv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, const int N, const void * A, const int lda, void * x, const int incx) + +.. function:: void cblas_ztbmv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, const int N, const int K, const void * A, const int lda, void * x, const int incx) + +.. function:: void cblas_ztpmv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, const int N, const void * Ap, void * x, const int incx) + +.. function:: void cblas_ztrsv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, const int N, const void * A, const int lda, void * x, const int incx) + +.. function:: void cblas_ztbsv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, const int N, const int K, const void * A, const int lda, void * x, const int incx) + +.. function:: void cblas_ztpsv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, const int N, const void * Ap, void * x, const int incx) + +.. function:: void cblas_ssymv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const int N, const float alpha, const float * A, const int lda, const float * x, const int incx, const float beta, float * y, const int incy) + +.. function:: void cblas_ssbmv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const int N, const int K, const float alpha, const float * A, const int lda, const float * x, const int incx, const float beta, float * y, const int incy) + +.. function:: void cblas_sspmv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const int N, const float alpha, const float * Ap, const float * x, const int incx, const float beta, float * y, const int incy) + +.. function:: void cblas_sger (const enum CBLAS_ORDER order, const int M, const int N, const float alpha, const float * x, const int incx, const float * y, const int incy, float * A, const int lda) + +.. function:: void cblas_ssyr (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const int N, const float alpha, const float * x, const int incx, float * A, const int lda) + +.. function:: void cblas_sspr (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const int N, const float alpha, const float * x, const int incx, float * Ap) + +.. function:: void cblas_ssyr2 (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const int N, const float alpha, const float * x, const int incx, const float * y, const int incy, float * A, const int lda) + +.. function:: void cblas_sspr2 (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const int N, const float alpha, const float * x, const int incx, const float * y, const int incy, float * A) + +.. function:: void cblas_dsymv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const int N, const double alpha, const double * A, const int lda, const double * x, const int incx, const double beta, double * y, const int incy) + +.. function:: void cblas_dsbmv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const int N, const int K, const double alpha, const double * A, const int lda, const double * x, const int incx, const double beta, double * y, const int incy) + +.. function:: void cblas_dspmv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const int N, const double alpha, const double * Ap, const double * x, const int incx, const double beta, double * y, const int incy) + +.. function:: void cblas_dger (const enum CBLAS_ORDER order, const int M, const int N, const double alpha, const double * x, const int incx, const double * y, const int incy, double * A, const int lda) + +.. function:: void cblas_dsyr (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const int N, const double alpha, const double * x, const int incx, double * A, const int lda) + +.. function:: void cblas_dspr (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const int N, const double alpha, const double * x, const int incx, double * Ap) + +.. function:: void cblas_dsyr2 (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const int N, const double alpha, const double * x, const int incx, const double * y, const int incy, double * A, const int lda) + +.. function:: void cblas_dspr2 (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const int N, const double alpha, const double * x, const int incx, const double * y, const int incy, double * A) + +.. function:: void cblas_chemv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const int N, const void * alpha, const void * A, const int lda, const void * x, const int incx, const void * beta, void * y, const int incy) + +.. function:: void cblas_chbmv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const int N, const int K, const void * alpha, const void * A, const int lda, const void * x, const int incx, const void * beta, void * y, const int incy) + +.. function:: void cblas_chpmv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const int N, const void * alpha, const void * Ap, const void * x, const int incx, const void * beta, void * y, const int incy) + +.. function:: void cblas_cgeru (const enum CBLAS_ORDER order, const int M, const int N, const void * alpha, const void * x, const int incx, const void * y, const int incy, void * A, const int lda) + +.. function:: void cblas_cgerc (const enum CBLAS_ORDER order, const int M, const int N, const void * alpha, const void * x, const int incx, const void * y, const int incy, void * A, const int lda) + +.. function:: void cblas_cher (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const int N, const float alpha, const void * x, const int incx, void * A, const int lda) + +.. function:: void cblas_chpr (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const int N, const float alpha, const void * x, const int incx, void * A) + +.. function:: void cblas_cher2 (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const int N, const void * alpha, const void * x, const int incx, const void * y, const int incy, void * A, const int lda) + +.. function:: void cblas_chpr2 (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const int N, const void * alpha, const void * x, const int incx, const void * y, const int incy, void * Ap) + +.. function:: void cblas_zhemv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const int N, const void * alpha, const void * A, const int lda, const void * x, const int incx, const void * beta, void * y, const int incy) + +.. function:: void cblas_zhbmv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const int N, const int K, const void * alpha, const void * A, const int lda, const void * x, const int incx, const void * beta, void * y, const int incy) + +.. function:: void cblas_zhpmv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const int N, const void * alpha, const void * Ap, const void * x, const int incx, const void * beta, void * y, const int incy) + +.. function:: void cblas_zgeru (const enum CBLAS_ORDER order, const int M, const int N, const void * alpha, const void * x, const int incx, const void * y, const int incy, void * A, const int lda) + +.. function:: void cblas_zgerc (const enum CBLAS_ORDER order, const int M, const int N, const void * alpha, const void * x, const int incx, const void * y, const int incy, void * A, const int lda) + +.. function:: void cblas_zher (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const int N, const double alpha, const void * x, const int incx, void * A, const int lda) + +.. function:: void cblas_zhpr (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const int N, const double alpha, const void * x, const int incx, void * A) + +.. function:: void cblas_zher2 (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const int N, const void * alpha, const void * x, const int incx, const void * y, const int incy, void * A, const int lda) + +.. function:: void cblas_zhpr2 (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const int N, const void * alpha, const void * x, const int incx, const void * y, const int incy, void * Ap) + +Level 3 +======= + +.. function:: void cblas_sgemm (const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_TRANSPOSE TransB, const int M, const int N, const int K, const float alpha, const float * A, const int lda, const float * B, const int ldb, const float beta, float * C, const int ldc) + +.. function:: void cblas_ssymm (const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, const enum CBLAS_UPLO Uplo, const int M, const int N, const float alpha, const float * A, const int lda, const float * B, const int ldb, const float beta, float * C, const int ldc) + +.. function:: void cblas_ssyrk (const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE Trans, const int N, const int K, const float alpha, const float * A, const int lda, const float beta, float * C, const int ldc) + +.. function:: void cblas_ssyr2k (const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE Trans, const int N, const int K, const float alpha, const float * A, const int lda, const float * B, const int ldb, const float beta, float * C, const int ldc) + +.. function:: void cblas_strmm (const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, const int M, const int N, const float alpha, const float * A, const int lda, float * B, const int ldb) + +.. function:: void cblas_strsm (const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, const int M, const int N, const float alpha, const float * A, const int lda, float * B, const int ldb) + +.. function:: void cblas_dgemm (const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_TRANSPOSE TransB, const int M, const int N, const int K, const double alpha, const double * A, const int lda, const double * B, const int ldb, const double beta, double * C, const int ldc) + +.. function:: void cblas_dsymm (const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, const enum CBLAS_UPLO Uplo, const int M, const int N, const double alpha, const double * A, const int lda, const double * B, const int ldb, const double beta, double * C, const int ldc) + +.. function:: void cblas_dsyrk (const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE Trans, const int N, const int K, const double alpha, const double * A, const int lda, const double beta, double * C, const int ldc) + +.. function:: void cblas_dsyr2k (const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE Trans, const int N, const int K, const double alpha, const double * A, const int lda, const double * B, const int ldb, const double beta, double * C, const int ldc) + +.. function:: void cblas_dtrmm (const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, const int M, const int N, const double alpha, const double * A, const int lda, double * B, const int ldb) + +.. function:: void cblas_dtrsm (const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, const int M, const int N, const double alpha, const double * A, const int lda, double * B, const int ldb) + +.. function:: void cblas_cgemm (const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_TRANSPOSE TransB, const int M, const int N, const int K, const void * alpha, const void * A, const int lda, const void * B, const int ldb, const void * beta, void * C, const int ldc) + +.. function:: void cblas_csymm (const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, const enum CBLAS_UPLO Uplo, const int M, const int N, const void * alpha, const void * A, const int lda, const void * B, const int ldb, const void * beta, void * C, const int ldc) + +.. function:: void cblas_csyrk (const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE Trans, const int N, const int K, const void * alpha, const void * A, const int lda, const void * beta, void * C, const int ldc) + +.. function:: void cblas_csyr2k (const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE Trans, const int N, const int K, const void * alpha, const void * A, const int lda, const void * B, const int ldb, const void * beta, void * C, const int ldc) + +.. function:: void cblas_ctrmm (const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, const int M, const int N, const void * alpha, const void * A, const int lda, void * B, const int ldb) + +.. function:: void cblas_ctrsm (const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, const int M, const int N, const void * alpha, const void * A, const int lda, void * B, const int ldb) + +.. function:: void cblas_zgemm (const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_TRANSPOSE TransB, const int M, const int N, const int K, const void * alpha, const void * A, const int lda, const void * B, const int ldb, const void * beta, void * C, const int ldc) + +.. function:: void cblas_zsymm (const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, const enum CBLAS_UPLO Uplo, const int M, const int N, const void * alpha, const void * A, const int lda, const void * B, const int ldb, const void * beta, void * C, const int ldc) + +.. function:: void cblas_zsyrk (const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE Trans, const int N, const int K, const void * alpha, const void * A, const int lda, const void * beta, void * C, const int ldc) + +.. function:: void cblas_zsyr2k (const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE Trans, const int N, const int K, const void * alpha, const void * A, const int lda, const void * B, const int ldb, const void * beta, void * C, const int ldc) + +.. function:: void cblas_ztrmm (const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, const int M, const int N, const void * alpha, const void * A, const int lda, void * B, const int ldb) + +.. function:: void cblas_ztrsm (const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, const int M, const int N, const void * alpha, const void * A, const int lda, void * B, const int ldb) + +.. function:: void cblas_chemm (const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, const enum CBLAS_UPLO Uplo, const int M, const int N, const void * alpha, const void * A, const int lda, const void * B, const int ldb, const void * beta, void * C, const int ldc) + +.. function:: void cblas_cherk (const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE Trans, const int N, const int K, const float alpha, const void * A, const int lda, const float beta, void * C, const int ldc) + +.. function:: void cblas_cher2k (const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE Trans, const int N, const int K, const void * alpha, const void * A, const int lda, const void * B, const int ldb, const float beta, void * C, const int ldc) + +.. function:: void cblas_zhemm (const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, const enum CBLAS_UPLO Uplo, const int M, const int N, const void * alpha, const void * A, const int lda, const void * B, const int ldb, const void * beta, void * C, const int ldc) + +.. function:: void cblas_zherk (const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE Trans, const int N, const int K, const double alpha, const void * A, const int lda, const double beta, void * C, const int ldc) + +.. function:: void cblas_zher2k (const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE Trans, const int N, const int K, const void * alpha, const void * A, const int lda, const void * B, const int ldb, const double beta, void * C, const int ldc) + +.. function:: void cblas_xerbla (int p, const char * rout, const char * form, ...) + +Examples +======== + +The following program computes the product of two matrices using the +Level-3 |blas| function SGEMM, + +.. only:: not texinfo + + .. math:: + + \left( + \begin{array}{ccc} + 0.11 & 0.12 & 0.13\\ + 0.21 & 0.22 & 0.23 + \end{array} + \right) + \left( + \begin{array}{cc} + 1011 & 1012\\ + 1021 & 1022\\ + 1031 & 1032 + \end{array} + \right) + = + \left( + \begin{array}{cc} + 367.76 & 368.12\\ + 674.06 & 674.72 + \end{array} + \right) + +.. only:: texinfo + + :: + + [ 0.11 0.12 0.13 ] [ 1011 1012 ] [ 367.76 368.12 ] + [ 0.21 0.22 0.23 ] [ 1021 1022 ] = [ 674.06 674.72 ] + [ 1031 1032 ] + +The matrices are stored in row major order but could be stored in column +major order if the first argument of the call to :func:`cblas_sgemm` was +changed to :code:`CblasColMajor`. + +.. include:: examples/cblas.c + :code: + +To compile the program use the following command line:: + + $ gcc -Wall demo.c -lgslcblas + +There is no need to link with the main library :code:`-lgsl` in this +case as the |cblas| library is an independent unit. Here is the output +from the program, + +.. include:: examples/cblas.txt + :code: diff --git a/gsl-2.5/doc/cheb.rst b/gsl-2.5/doc/cheb.rst new file mode 100644 index 00000000..edb409e0 --- /dev/null +++ b/gsl-2.5/doc/cheb.rst @@ -0,0 +1,180 @@ +.. index:: + single: Chebyshev series + single: fitting, using Chebyshev polynomials + single: interpolation, using Chebyshev polynomials + +************************ +Chebyshev Approximations +************************ + +This chapter describes routines for computing Chebyshev approximations +to univariate functions. A Chebyshev approximation is a truncation of +the series :math:`f(x) = \sum c_n T_n(x)`, where the Chebyshev +polynomials :math:`T_n(x) = \cos(n \arccos x)` provide an orthogonal +basis of polynomials on the interval :math:`[-1,1]` with the weight +function :math:`1 / \sqrt{1-x^2}`. +The first few Chebyshev polynomials are, +:math:`T_0(x) = 1`, :math:`T_1(x) = x`, :math:`T_2(x) = 2 x^2 - 1`. +For further information see Abramowitz & Stegun, Chapter 22. + +The functions described in this chapter are declared in the header file +:file:`gsl_chebyshev.h`. + +Definitions +=========== + +.. type:: gsl_cheb_series + + A Chebyshev series is stored using the following structure:: + + typedef struct + { + double * c; /* coefficients c[0] .. c[order] */ + int order; /* order of expansion */ + double a; /* lower interval point */ + double b; /* upper interval point */ + ... + } gsl_cheb_series + +The approximation is made over the range :math:`[a,b]` using +:data:`order` + 1 terms, including the coefficient :math:`c[0]`. The series +is computed using the following convention, + +.. only:: not texinfo + + .. math:: f(x) = {c_0 \over 2} + \sum_{n=1} c_n T_n(x) + +.. only:: texinfo + + :: + + f(x) = (c_0 / 2) + \sum_{n=1} c_n T_n(x) + +which is needed when accessing the coefficients directly. + +Creation and Calculation of Chebyshev Series +============================================ + +.. function:: gsl_cheb_series * gsl_cheb_alloc (const size_t n) + + This function allocates space for a Chebyshev series of order :data:`n` + and returns a pointer to a new :type:`gsl_cheb_series` struct. + +.. function:: void gsl_cheb_free (gsl_cheb_series * cs) + + This function frees a previously allocated Chebyshev series :data:`cs`. + +.. function:: int gsl_cheb_init (gsl_cheb_series * cs, const gsl_function * f, const double a, const double b) + + This function computes the Chebyshev approximation :data:`cs` for the + function :data:`f` over the range :math:`(a,b)` to the previously specified + order. The computation of the Chebyshev approximation is an + :math:`O(n^2)` process, and requires :math:`n` function evaluations. + +Auxiliary Functions +=================== +The following functions provide information about an existing +Chebyshev series. + +.. function:: size_t gsl_cheb_order (const gsl_cheb_series * cs) + + This function returns the order of Chebyshev series :data:`cs`. + +.. function:: size_t gsl_cheb_size (const gsl_cheb_series * cs) + double * gsl_cheb_coeffs (const gsl_cheb_series * cs) + + These functions return the size of the Chebyshev coefficient array + :code:`c[]` and a pointer to its location in memory for the Chebyshev + series :data:`cs`. + +Chebyshev Series Evaluation +=========================== + +.. function:: double gsl_cheb_eval (const gsl_cheb_series * cs, double x) + + This function evaluates the Chebyshev series :data:`cs` at a given point :data:`x`. + +.. function:: int gsl_cheb_eval_err (const gsl_cheb_series * cs, const double x, double * result, double * abserr) + + This function computes the Chebyshev series :data:`cs` at a given point + :data:`x`, estimating both the series :data:`result` and its absolute error + :data:`abserr`. The error estimate is made from the first neglected term + in the series. + +.. function:: double gsl_cheb_eval_n (const gsl_cheb_series * cs, size_t order, double x) + + This function evaluates the Chebyshev series :data:`cs` at a given point + :data:`x`, to (at most) the given order :data:`order`. + +.. function:: int gsl_cheb_eval_n_err (const gsl_cheb_series * cs, const size_t order, const double x, double * result, double * abserr) + + This function evaluates a Chebyshev series :data:`cs` at a given point + :data:`x`, estimating both the series :data:`result` and its absolute error + :data:`abserr`, to (at most) the given order :data:`order`. The error + estimate is made from the first neglected term in the series. + +.. @deftypefun double gsl_cheb_eval_mode (const gsl_cheb_series * cs, double x, gsl_mode_t mode) +.. @end deftypefun + +.. @deftypefun int gsl_cheb_eval_mode_err (const gsl_cheb_series * cs, const double x, gsl_mode_t mode, double * result, double * abserr) +.. Evaluate a Chebyshev series at a given point, using the default +.. order for double precision mode(s) and the single precision +.. order for other modes. +.. @end deftypefun + +Derivatives and Integrals +========================= + +The following functions allow a Chebyshev series to be differentiated or +integrated, producing a new Chebyshev series. Note that the error +estimate produced by evaluating the derivative series will be +underestimated due to the contribution of higher order terms being +neglected. + +.. function:: int gsl_cheb_calc_deriv (gsl_cheb_series * deriv, const gsl_cheb_series * cs) + + This function computes the derivative of the series :data:`cs`, storing + the derivative coefficients in the previously allocated :data:`deriv`. + The two series :data:`cs` and :data:`deriv` must have been allocated with + the same order. + +.. function:: int gsl_cheb_calc_integ (gsl_cheb_series * integ, const gsl_cheb_series * cs) + + This function computes the integral of the series :data:`cs`, storing the + integral coefficients in the previously allocated :data:`integ`. The two + series :data:`cs` and :data:`integ` must have been allocated with the same + order. The lower limit of the integration is taken to be the left hand + end of the range :data:`a`. + +Examples +======== + +The following example program computes Chebyshev approximations to a +step function. This is an extremely difficult approximation to make, +due to the discontinuity, and was chosen as an example where +approximation error is visible. For smooth functions the Chebyshev +approximation converges extremely rapidly and errors would not be +visible. + +.. include:: examples/cheb.c + :code: + +:numref:`fig_cheb` shows output from the program with the original function, 10-th order +approximation and 40-th order approximation, all sampled at intervals of +0.001 in :math:`x`. + +.. _fig_cheb: + +.. figure:: /images/cheb.png + :scale: 60% + + Chebyshev approximations to a step function + +References and Further Reading +============================== + +The following paper describes the use of Chebyshev series, + +* R. Broucke, "Ten Subroutines for the Manipulation of Chebyshev Series + [C1] (Algorithm 446)". *Communications of the ACM* 16(4), 254--256 + (1973) diff --git a/gsl-2.5/doc/combination.rst b/gsl-2.5/doc/combination.rst new file mode 100644 index 00000000..7d367cae --- /dev/null +++ b/gsl-2.5/doc/combination.rst @@ -0,0 +1,206 @@ +.. index:: combinations + +************ +Combinations +************ + +.. include:: include.rst + +This chapter describes functions for creating and manipulating +combinations. A combination :math:`c` is represented by an array of +:math:`k` integers in the range 0 to :math:`n - 1`, where each value +:math:`c_i` occurs at most once. The combination :math:`c` corresponds to +indices of :math:`k` elements chosen from an :math:`n` element vector. +Combinations are useful for iterating over all :math:`k`-element subsets +of a set. + +The functions described in this chapter are defined in the header file +:file:`gsl_combination.h`. + +The Combination struct +====================== + +.. type:: gsl_combination + + A combination is defined by a structure containing three components, the + values of :math:`n` and :math:`k`, and a pointer to the combination array. + The elements of the combination array are all of type :code:`size_t`, and + are stored in increasing order. The :type:`gsl_combination` structure + looks like this:: + + typedef struct + { + size_t n; + size_t k; + size_t *data; + } gsl_combination; + +Combination allocation +====================== + +.. function:: gsl_combination * gsl_combination_alloc (size_t n, size_t k) + + This function allocates memory for a new combination with parameters + :data:`n`, :data:`k`. The combination is not initialized and its elements + are undefined. Use the function :func:`gsl_combination_calloc` if you + want to create a combination which is initialized to the + lexicographically first combination. A null pointer is returned if + insufficient memory is available to create the combination. + +.. function:: gsl_combination * gsl_combination_calloc (size_t n, size_t k) + + This function allocates memory for a new combination with parameters + :data:`n`, :data:`k` and initializes it to the lexicographically first + combination. A null pointer is returned if insufficient memory is + available to create the combination. + +.. function:: void gsl_combination_init_first (gsl_combination * c) + + This function initializes the combination :data:`c` to the + lexicographically first combination, i.e. :math:`(0, 1, 2, \dots, k - 1)`. + +.. function:: void gsl_combination_init_last (gsl_combination * c) + + This function initializes the combination :data:`c` to the + lexicographically last combination, i.e. :math:`(n - k, n - k + 1, \dots, n - 1)`. + +.. function:: void gsl_combination_free (gsl_combination * c) + + This function frees all the memory used by the combination :data:`c`. + +.. function:: int gsl_combination_memcpy (gsl_combination * dest, const gsl_combination * src) + + This function copies the elements of the combination :data:`src` into the + combination :data:`dest`. The two combinations must have the same size. + +Accessing combination elements +============================== + +The following function can be used to access the elements of a combination. + +.. function:: size_t gsl_combination_get (const gsl_combination * c, const size_t i) + + This function returns the value of the :data:`i`-th element of the + combination :data:`c`. If :data:`i` lies outside the allowed range of 0 to + :math:`k - 1` then the error handler is invoked and 0 is returned. |inlinefn| + +Combination properties +====================== + +.. function:: size_t gsl_combination_n (const gsl_combination * c) + + This function returns the range (:math:`n`) of the combination c. + +.. function:: size_t gsl_combination_k (const gsl_combination * c) + + This function returns the number of elements (:math:`k`) in the combination :data:`c`. + +.. function:: size_t * gsl_combination_data (const gsl_combination * c) + + This function returns a pointer to the array of elements in the + combination :data:`c`. + +.. index:: + single: checking combination for validity + single: testing combination for validity + +.. function:: int gsl_combination_valid (gsl_combination * c) + + This function checks that the combination :data:`c` is valid. The :data:`k` + elements should lie in the range 0 to :math:`n - 1`, with each + value occurring once at most and in increasing order. + +Combination functions +===================== + +.. index:: iterating through combinations + +.. function:: int gsl_combination_next (gsl_combination * c) + + This function advances the combination :data:`c` to the next combination + in lexicographic order and returns :macro:`GSL_SUCCESS`. If no further + combinations are available it returns :macro:`GSL_FAILURE` and leaves + :data:`c` unmodified. Starting with the first combination and + repeatedly applying this function will iterate through all possible + combinations of a given order. + +.. function:: int gsl_combination_prev (gsl_combination * c) + + This function steps backwards from the combination :data:`c` to the + previous combination in lexicographic order, returning + :macro:`GSL_SUCCESS`. If no previous combination is available it returns + :macro:`GSL_FAILURE` and leaves :data:`c` unmodified. + +Reading and writing combinations +================================ + +The library provides functions for reading and writing combinations to a +file as binary data or formatted text. + +.. function:: int gsl_combination_fwrite (FILE * stream, const gsl_combination * c) + + This function writes the elements of the combination :data:`c` to the + stream :data:`stream` in binary format. The function returns + :macro:`GSL_EFAILED` if there was a problem writing to the file. Since the + data is written in the native binary format it may not be portable + between different architectures. + +.. function:: int gsl_combination_fread (FILE * stream, gsl_combination * c) + + This function reads elements from the open stream :data:`stream` into the + combination :data:`c` in binary format. The combination :data:`c` must be + preallocated with correct values of :math:`n` and :math:`k` since the + function uses the size of :data:`c` to determine how many bytes to read. + The function returns :macro:`GSL_EFAILED` if there was a problem reading + from the file. The data is assumed to have been written in the native + binary format on the same architecture. + +.. function:: int gsl_combination_fprintf (FILE * stream, const gsl_combination * c, const char * format) + + This function writes the elements of the combination :data:`c` + line-by-line to the stream :data:`stream` using the format specifier + :data:`format`, which should be suitable for a type of :code:`size_t`. + In ISO C99 the type modifier :code:`z` represents :code:`size_t`, so + :code:`"%zu\n"` is a suitable format [#f1]_. + The function returns + :macro:`GSL_EFAILED` if there was a problem writing to the file. + +.. function:: int gsl_combination_fscanf (FILE * stream, gsl_combination * c) + + This function reads formatted data from the stream :data:`stream` into the + combination :data:`c`. The combination :data:`c` must be preallocated with + correct values of :math:`n` and :math:`k` since the function uses the size of :data:`c` to + determine how many numbers to read. The function returns + :macro:`GSL_EFAILED` if there was a problem reading from the file. + +Examples +======== + +The example program below prints all subsets of the set +:math:`{0,1,2,3}` ordered by size. Subsets of the same size are +ordered lexicographically. + +.. include:: examples/combination.c + :code: + +Here is the output from the program, + +.. include:: examples/combination.txt + :code: + +All 16 subsets are generated, and the subsets of each size are sorted +lexicographically. + +References and Further Reading +============================== + +Further information on combinations can be found in, + +* Donald L. Kreher, Douglas R. Stinson, Combinatorial Algorithms: + Generation, Enumeration and Search, 1998, CRC Press LLC, ISBN + 084933988X + +.. rubric:: Footnotes + +.. [#f1] In versions of the GNU C library prior to the ISO C99 standard, + the type modifier :code:`Z` was used instead. diff --git a/gsl-2.5/doc/complex.rst b/gsl-2.5/doc/complex.rst new file mode 100644 index 00000000..63c86a05 --- /dev/null +++ b/gsl-2.5/doc/complex.rst @@ -0,0 +1,485 @@ +.. index:: complex numbers + +*************** +Complex Numbers +*************** + +The functions described in this chapter provide support for complex +numbers. The algorithms take care to avoid unnecessary intermediate +underflows and overflows, allowing the functions to be evaluated over +as much of the complex plane as possible. + +.. FIXME: this still needs to be +.. done for the csc,sec,cot,csch,sech,coth functions + +For multiple-valued functions the branch cuts have been chosen to follow +the conventions of Abramowitz and Stegun. +The functions return principal values which are +the same as those in GNU Calc, which in turn are the same as those in +"Common Lisp, The Language (Second Edition)" [#f1]_ +and the HP-28/48 series of calculators. + +The complex types are defined in the header file :file:`gsl_complex.h`, +while the corresponding complex functions and arithmetic operations are +defined in :file:`gsl_complex_math.h`. + +.. index:: + single: representations of complex numbers + single: polar form of complex numbers + single: gsl_complex + +Representation of complex numbers +================================= + +Complex numbers are represented using the type :code:`gsl_complex`. The +internal representation of this type may vary across platforms and +should not be accessed directly. The functions and macros described +below allow complex numbers to be manipulated in a portable way. + +For reference, the default form of the :code:`gsl_complex` type is +given by the following struct:: + + typedef struct + { + double dat[2]; + } gsl_complex; + +The real and imaginary part are stored in contiguous elements of a two +element array. This eliminates any padding between the real and +imaginary parts, :code:`dat[0]` and :code:`dat[1]`, allowing the struct to +be mapped correctly onto packed complex arrays. + +.. function:: gsl_complex gsl_complex_rect (double x, double y) + + This function uses the rectangular Cartesian components + :math:`(x,y)` to return the complex number :math:`z = x + i y`. + An inline version of this function is used when :macro:`HAVE_INLINE` + is defined. + +.. function:: gsl_complex gsl_complex_polar (double r, double theta) + + This function returns the complex number :math:`z = r \exp(i \theta) = r + (\cos(\theta) + i \sin(\theta))` from the polar representation + (:data:`r`, :data:`theta`). + +.. macro:: + GSL_REAL (z) + GSL_IMAG (z) + + These macros return the real and imaginary parts of the complex number + :data:`z`. + +.. macro:: GSL_SET_COMPLEX (zp, x, y) + + This macro uses the Cartesian components (:data:`x`, :data:`y`) to set the + real and imaginary parts of the complex number pointed to by :data:`zp`. + For example:: + + GSL_SET_COMPLEX(&z, 3, 4) + + sets :math:`z` to be :math:`3 + 4i`. + +.. macro:: + GSL_SET_REAL (zp,x) + GSL_SET_IMAG (zp,y) + + These macros allow the real and imaginary parts of the complex number + pointed to by :data:`zp` to be set independently. + +Properties of complex numbers +============================= + +.. index:: argument of complex number + +.. function:: double gsl_complex_arg (gsl_complex z) + + This function returns the argument of the complex number :data:`z`, + :math:`\arg(z)`, where :math:`-\pi < \arg(z) <= \pi`. + +.. index:: magnitude of complex number + +.. function:: double gsl_complex_abs (gsl_complex z) + + This function returns the magnitude of the complex number :data:`z`, :math:`|z|`. + +.. function:: double gsl_complex_abs2 (gsl_complex z) + + This function returns the squared magnitude of the complex number + :data:`z`, :math:`|z|^2`. + +.. function:: double gsl_complex_logabs (gsl_complex z) + + This function returns the natural logarithm of the magnitude of the + complex number :data:`z`, :math:`\log|z|`. It allows an accurate + evaluation of :math:`\log|z|` when :math:`|z|` is close to one. The direct + evaluation of :code:`log(gsl_complex_abs(z))` would lead to a loss of + precision in this case. + +.. index:: complex arithmetic + +Complex arithmetic operators +============================ + +.. function:: gsl_complex gsl_complex_add (gsl_complex a, gsl_complex b) + + This function returns the sum of the complex numbers :data:`a` and + :data:`b`, :math:`z=a+b`. + +.. function:: gsl_complex gsl_complex_sub (gsl_complex a, gsl_complex b) + + This function returns the difference of the complex numbers :data:`a` and + :data:`b`, :math:`z=a-b`. + +.. function:: gsl_complex gsl_complex_mul (gsl_complex a, gsl_complex b) + + This function returns the product of the complex numbers :data:`a` and + :data:`b`, :math:`z=ab`. + +.. function:: gsl_complex gsl_complex_div (gsl_complex a, gsl_complex b) + + This function returns the quotient of the complex numbers :data:`a` and + :data:`b`, :math:`z=a/b`. + +.. function:: gsl_complex gsl_complex_add_real (gsl_complex a, double x) + + This function returns the sum of the complex number :data:`a` and the + real number :data:`x`, :math:`z=a+x`. + +.. function:: gsl_complex gsl_complex_sub_real (gsl_complex a, double x) + + This function returns the difference of the complex number :data:`a` and the + real number :data:`x`, :math:`z=a-x`. + +.. function:: gsl_complex gsl_complex_mul_real (gsl_complex a, double x) + + This function returns the product of the complex number :data:`a` and the + real number :data:`x`, :math:`z=ax`. + +.. function:: gsl_complex gsl_complex_div_real (gsl_complex a, double x) + + This function returns the quotient of the complex number :data:`a` and the + real number :data:`x`, :math:`z=a/x`. + +.. function:: gsl_complex gsl_complex_add_imag (gsl_complex a, double y) + + This function returns the sum of the complex number :data:`a` and the + imaginary number :math:`iy`, :math:`z=a+iy`. + +.. function:: gsl_complex gsl_complex_sub_imag (gsl_complex a, double y) + + This function returns the difference of the complex number :data:`a` and the + imaginary number :math:`iy`, :math:`z=a-iy`. + +.. function:: gsl_complex gsl_complex_mul_imag (gsl_complex a, double y) + + This function returns the product of the complex number :data:`a` and the + imaginary number :math:`iy`, :math:`z=a*(iy)`. + +.. function:: gsl_complex gsl_complex_div_imag (gsl_complex a, double y) + + This function returns the quotient of the complex number :data:`a` and the + imaginary number :math:`iy`, :math:`z=a/(iy)`. + +.. index:: conjugate of complex number + +.. function:: gsl_complex gsl_complex_conjugate (gsl_complex z) + + This function returns the complex conjugate of the complex number + :data:`z`, :math:`z^* = x - i y`. + +.. function:: gsl_complex gsl_complex_inverse (gsl_complex z) + + This function returns the inverse, or reciprocal, of the complex number + :data:`z`, :math:`1/z = (x - i y)/(x^2 + y^2)`. + +.. function:: gsl_complex gsl_complex_negative (gsl_complex z) + + This function returns the negative of the complex number + :data:`z`, :math:`-z = (-x) + i(-y)`. + + +Elementary Complex Functions +============================ + +.. index:: square root of complex number + +.. function:: gsl_complex gsl_complex_sqrt (gsl_complex z) + + This function returns the square root of the complex number :data:`z`, + :math:`\sqrt z`. The branch cut is the negative real axis. The result + always lies in the right half of the complex plane. + +.. function:: gsl_complex gsl_complex_sqrt_real (double x) + + This function returns the complex square root of the real number + :data:`x`, where :data:`x` may be negative. + +.. index:: + single: power of complex number + single: exponentiation of complex number + +.. function:: gsl_complex gsl_complex_pow (gsl_complex z, gsl_complex a) + + The function returns the complex number :data:`z` raised to the complex + power :data:`a`, :math:`z^a`. This is computed as :math:`\exp(\log(z)*a)` + using complex logarithms and complex exponentials. + +.. function:: gsl_complex gsl_complex_pow_real (gsl_complex z, double x) + + This function returns the complex number :data:`z` raised to the real + power :data:`x`, :math:`z^x`. + +.. function:: gsl_complex gsl_complex_exp (gsl_complex z) + + This function returns the complex exponential of the complex number + :data:`z`, :math:`\exp(z)`. + +.. index:: logarithm of complex number + +.. function:: gsl_complex gsl_complex_log (gsl_complex z) + + This function returns the complex natural logarithm (base :math:`e`) of + the complex number :data:`z`, :math:`\log(z)`. The branch cut is the + negative real axis. + +.. function:: gsl_complex gsl_complex_log10 (gsl_complex z) + + This function returns the complex base-10 logarithm of + the complex number :data:`z`, :math:`\log_{10} (z)`. + +.. function:: gsl_complex gsl_complex_log_b (gsl_complex z, gsl_complex b) + + This function returns the complex base-:data:`b` logarithm of the complex + number :data:`z`, :math:`\log_b(z)`. This quantity is computed as the ratio + :math:`\log(z)/\log(b)`. + +.. index:: trigonometric functions of complex numbers + +Complex Trigonometric Functions +=============================== + +.. index:: + single: sin, of complex number + +.. function:: gsl_complex gsl_complex_sin (gsl_complex z) + + This function returns the complex sine of the complex number :data:`z`, + :math:`\sin(z) = (\exp(iz) - \exp(-iz))/(2i)`. + +.. index:: cosine of complex number + +.. function:: gsl_complex gsl_complex_cos (gsl_complex z) + + This function returns the complex cosine of the complex number :data:`z`, + :math:`\cos(z) = (\exp(iz) + \exp(-iz))/2`. + +.. index:: tangent of complex number + +.. function:: gsl_complex gsl_complex_tan (gsl_complex z) + + This function returns the complex tangent of the complex number :data:`z`, + :math:`\tan(z) = \sin(z)/\cos(z)`. + +.. function:: gsl_complex gsl_complex_sec (gsl_complex z) + + This function returns the complex secant of the complex number :data:`z`, + :math:`\sec(z) = 1/\cos(z)`. + +.. function:: gsl_complex gsl_complex_csc (gsl_complex z) + + This function returns the complex cosecant of the complex number :data:`z`, + :math:`\csc(z) = 1/\sin(z)`. + +.. function:: gsl_complex gsl_complex_cot (gsl_complex z) + + This function returns the complex cotangent of the complex number :data:`z`, + :math:`\cot(z) = 1/\tan(z)`. + +.. index:: inverse complex trigonometric functions + +Inverse Complex Trigonometric Functions +======================================= + +.. function:: gsl_complex gsl_complex_arcsin (gsl_complex z) + + This function returns the complex arcsine of the complex number :data:`z`, + :math:`\arcsin(z)`. The branch cuts are on the real axis, less than :math:`-1` + and greater than :math:`1`. + +.. function:: gsl_complex gsl_complex_arcsin_real (double z) + + This function returns the complex arcsine of the real number :data:`z`, + :math:`\arcsin(z)`. For :math:`z` between :math:`-1` and :math:`1`, the + function returns a real value in the range :math:`[-\pi/2,\pi/2]`. For + :math:`z` less than :math:`-1` the result has a real part of :math:`-\pi/2` + and a positive imaginary part. For :math:`z` greater than :math:`1` the + result has a real part of :math:`\pi/2` and a negative imaginary part. + +.. function:: gsl_complex gsl_complex_arccos (gsl_complex z) + + This function returns the complex arccosine of the complex number :data:`z`, + :math:`\arccos(z)`. The branch cuts are on the real axis, less than :math:`-1` + and greater than :math:`1`. + +.. function:: gsl_complex gsl_complex_arccos_real (double z) + + This function returns the complex arccosine of the real number :data:`z`, + :math:`\arccos(z)`. For :math:`z` between :math:`-1` and :math:`1`, the + function returns a real value in the range :math:`[0,\pi]`. For :math:`z` + less than :math:`-1` the result has a real part of :math:`\pi` and a + negative imaginary part. For :math:`z` greater than :math:`1` the result + is purely imaginary and positive. + +.. function:: gsl_complex gsl_complex_arctan (gsl_complex z) + + This function returns the complex arctangent of the complex number + :data:`z`, :math:`\arctan(z)`. The branch cuts are on the imaginary axis, + below :math:`-i` and above :math:`i`. + +.. function:: gsl_complex gsl_complex_arcsec (gsl_complex z) + + This function returns the complex arcsecant of the complex number :data:`z`, + :math:`\arcsec(z) = \arccos(1/z)`. + +.. function:: gsl_complex gsl_complex_arcsec_real (double z) + + This function returns the complex arcsecant of the real number :data:`z`, + :math:`\arcsec(z) = \arccos(1/z)`. + +.. function:: gsl_complex gsl_complex_arccsc (gsl_complex z) + + This function returns the complex arccosecant of the complex number :data:`z`, + :math:`\arccsc(z) = \arcsin(1/z)`. + +.. function:: gsl_complex gsl_complex_arccsc_real (double z) + + This function returns the complex arccosecant of the real number :data:`z`, + :math:`\arccsc(z) = \arcsin(1/z)`. + +.. function:: gsl_complex gsl_complex_arccot (gsl_complex z) + + This function returns the complex arccotangent of the complex number :data:`z`, + :math:`\arccot(z) = \arctan(1/z)`. + +.. index:: + single: hyperbolic functions, complex numbers + +Complex Hyperbolic Functions +============================ + +.. function:: gsl_complex gsl_complex_sinh (gsl_complex z) + + This function returns the complex hyperbolic sine of the complex number + :data:`z`, :math:`\sinh(z) = (\exp(z) - \exp(-z))/2`. + +.. function:: gsl_complex gsl_complex_cosh (gsl_complex z) + + This function returns the complex hyperbolic cosine of the complex number + :data:`z`, :math:`\cosh(z) = (\exp(z) + \exp(-z))/2`. + +.. function:: gsl_complex gsl_complex_tanh (gsl_complex z) + + This function returns the complex hyperbolic tangent of the complex number + :data:`z`, :math:`\tanh(z) = \sinh(z)/\cosh(z)`. + +.. function:: gsl_complex gsl_complex_sech (gsl_complex z) + + This function returns the complex hyperbolic secant of the complex + number :data:`z`, :math:`\sech(z) = 1/\cosh(z)`. + +.. function:: gsl_complex gsl_complex_csch (gsl_complex z) + + This function returns the complex hyperbolic cosecant of the complex + number :data:`z`, :math:`\csch(z) = 1/\sinh(z)`. + +.. function:: gsl_complex gsl_complex_coth (gsl_complex z) + + This function returns the complex hyperbolic cotangent of the complex + number :data:`z`, :math:`\coth(z) = 1/\tanh(z)`. + +.. index:: + single: inverse hyperbolic functions, complex numbers + +Inverse Complex Hyperbolic Functions +==================================== + +.. function:: gsl_complex gsl_complex_arcsinh (gsl_complex z) + + This function returns the complex hyperbolic arcsine of the + complex number :data:`z`, :math:`\arcsinh(z)`. The branch cuts are on the + imaginary axis, below :math:`-i` and above :math:`i`. + +.. function:: gsl_complex gsl_complex_arccosh (gsl_complex z) + + This function returns the complex hyperbolic arccosine of the complex + number :data:`z`, :math:`\arccosh(z)`. The branch cut is on the real + axis, less than :math:`1`. Note that in this case we use the negative + square root in formula 4.6.21 of Abramowitz & Stegun giving + :math:`\arccosh(z)=\log(z-\sqrt{z^2-1})`. + +.. function:: gsl_complex gsl_complex_arccosh_real (double z) + + This function returns the complex hyperbolic arccosine of + the real number :data:`z`, :math:`\arccosh(z)`. + +.. function:: gsl_complex gsl_complex_arctanh (gsl_complex z) + + This function returns the complex hyperbolic arctangent of the complex + number :data:`z`, :math:`\arctanh(z)`. The branch cuts are on the real + axis, less than :math:`-1` and greater than :math:`1`. + +.. function:: gsl_complex gsl_complex_arctanh_real (double z) + + This function returns the complex hyperbolic arctangent of the real + number :data:`z`, :math:`\arctanh(z)`. + +.. function:: gsl_complex gsl_complex_arcsech (gsl_complex z) + + This function returns the complex hyperbolic arcsecant of the complex + number :data:`z`, :math:`\arcsech(z) = \arccosh(1/z)`. + +.. function:: gsl_complex gsl_complex_arccsch (gsl_complex z) + + This function returns the complex hyperbolic arccosecant of the complex + number :data:`z`, :math:`\arccsch(z) = \arcsinh(1/z)`. + +.. function:: gsl_complex gsl_complex_arccoth (gsl_complex z) + + This function returns the complex hyperbolic arccotangent of the complex + number :data:`z`, :math:`\arccoth(z) = \arctanh(1/z)`. + +References and Further Reading +============================== + +The implementations of the elementary and trigonometric functions are +based on the following papers, + +* T. E. Hull, Thomas F. Fairgrieve, Ping Tak Peter Tang, + "Implementing Complex Elementary Functions Using Exception + Handling", ACM Transactions on Mathematical Software, Volume 20 + (1994), pp 215--244, Corrigenda, p553 + +* T. E. Hull, Thomas F. Fairgrieve, Ping Tak Peter Tang, + "Implementing the complex arcsin and arccosine functions using exception + handling", ACM Transactions on Mathematical Software, Volume 23 + (1997) pp 299--335 + +The general formulas and details of branch cuts can be found in the +following books, + +* Abramowitz and Stegun, Handbook of Mathematical Functions, + "Circular Functions in Terms of Real and Imaginary Parts", Formulas + 4.3.55--58, + "Inverse Circular Functions in Terms of Real and Imaginary Parts", + Formulas 4.4.37--39, + "Hyperbolic Functions in Terms of Real and Imaginary Parts", + Formulas 4.5.49--52, + "Inverse Hyperbolic Functions---relation to Inverse Circular Functions", + Formulas 4.6.14--19. + +* Dave Gillespie, Calc Manual, Free Software Foundation, ISBN + 1-882114-18-3 + +.. rubric:: Footnotes + +.. [#f1] Note that the first edition uses different definitions. diff --git a/gsl-2.5/doc/conf.py b/gsl-2.5/doc/conf.py new file mode 100644 index 00000000..587e5d3c --- /dev/null +++ b/gsl-2.5/doc/conf.py @@ -0,0 +1,195 @@ +# -*- coding: utf-8 -*- +# +# GSL documentation build configuration file, created by +# sphinx-quickstart on Mon Feb 27 15:17:27 2017. +# +# This file is execfile()d with the current directory set to its +# containing dir. +# +# Note that not all possible configuration values are present in this +# autogenerated file. +# +# All configuration values have a default; values that are commented out +# serve to show the default. + +# If extensions (or modules to document with autodoc) are in another directory, +# add these directories to sys.path here. If the directory is relative to the +# documentation root, use os.path.abspath to make it absolute, like shown here. +# +# import os +# import sys +# sys.path.insert(0, os.path.abspath('.')) +import sphinx_rtd_theme + + +# -- General configuration ------------------------------------------------ + +# If your documentation needs a minimal Sphinx version, state it here. +# +# needs_sphinx = '1.0' + +# Add any Sphinx extension module names here, as strings. They can be +# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom +# ones. +extensions = ['sphinx.ext.imgmath'] + +# Add any paths that contain templates here, relative to this directory. +templates_path = ['_templates'] + +# The suffix(es) of source filenames. +# You can specify multiple suffix as a list of string: +# +# source_suffix = ['.rst', '.md'] +source_suffix = '.rst' + +# The master toctree document. +master_doc = 'index' + +# General information about the project. +project = u'GSL' +copyright = u'1996-2018 The GSL Team' +author = u'The GSL Team' +title = u'GNU Scientific Library' + +# The version info for the project you're documenting, acts as replacement for +# |version| and |release|, also used in various other places throughout the +# built documents. +# +# The short X.Y version. +version = u'2.5' +# The full version, including alpha/beta/rc tags. +release = u'2.5' + +primary_domain = 'c' +numfig = True + +# The language for content autogenerated by Sphinx. Refer to documentation +# for a list of supported languages. +# +# This is also used if you do content translation via gettext catalogs. +# Usually you set "language" from the command line for these cases. +language = None + +# List of patterns, relative to source directory, that match files and +# directories to ignore when looking for source files. +# This patterns also effect to html_static_path and html_extra_path +exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store', 'include.rst', 'specfunc-*.rst'] + +# The name of the Pygments (syntax highlighting) style to use. +pygments_style = 'sphinx' + +# If true, `todo` and `todoList` produce output, else they produce nothing. +todo_include_todos = False + + +# -- Options for HTML output ---------------------------------------------- + +# The theme to use for HTML and HTML Help pages. See the documentation for +# a list of builtin themes. +# +#html_theme = 'alabaster' +html_theme = 'sphinx_rtd_theme' +html_theme_path = [sphinx_rtd_theme.get_html_theme_path()] + +# Theme options are theme-specific and customize the look and feel of a theme +# further. For a list of options available for each theme, see the +# documentation. +# +html_theme_options = { + 'display_version': True, + 'prev_next_buttons_location': 'both' +} + +# Add any paths that contain custom static files (such as style sheets) here, +# relative to this directory. They are copied after the builtin static files, +# so a file named "default.css" will overwrite the builtin "default.css". +html_static_path = ['_static'] + + +# -- Options for HTMLHelp output ------------------------------------------ + +# Output file base name for HTML help builder. +htmlhelp_basename = 'GSLdoc' + + +# -- Options for LaTeX output --------------------------------------------- + +my_latex_preamble = '\\DeclareMathOperator\\arccosh{arccosh} \ + \\DeclareMathOperator\\arcsinh{arcsinh} \ + \\DeclareMathOperator\\arctanh{arctanh} \ + \\DeclareMathOperator\\arcsec{arcsec} \ + \\DeclareMathOperator\\arccsc{arccsc} \ + \\DeclareMathOperator\\arccot{arccot} \ + \\DeclareMathOperator\\csch{csch} \ + \\DeclareMathOperator\\sech{sech} \ + \\DeclareMathOperator\\arcsech{arcsech} \ + \\DeclareMathOperator\\arccsch{arccsch} \ + \\DeclareMathOperator\\arccoth{arccoth} \ + \\DeclareMathOperator\\erf{erf} \ + \\DeclareMathOperator\\erfc{erfc} \ + \\DeclareMathOperator\\sgn{sgn} \ + \\DeclareMathOperator\\sinc{sinc} \ + \\DeclareMathOperator\\Var{Var} \ + \\DeclareMathOperator\\diag{diag}' + +my_latex_authors = 'Mark Galassi \\\\ \ + Jim Davies \\\\ \ + James Theiler \\\\ \ + Brian Gough \\\\ \ + Gerard Jungman \\\\ \ + Patrick Alken \\\\ \ + Michael Booth \\\\ \ + Fabrice Rossi \\\\ \ + Rhys Ulerich' + +latex_elements = { + # The paper size ('letterpaper' or 'a4paper'). + # + # 'papersize': 'letterpaper', + + # The font size ('10pt', '11pt' or '12pt'). + # + # 'pointsize': '10pt', + + # Additional stuff for the LaTeX preamble. + # + 'preamble': my_latex_preamble, + + # Latex figure (float) alignment + # + # 'figure_align': 'htbp', +} + +# Grouping the document tree into LaTeX files. List of tuples +# (source start file, target name, title, +# author, documentclass [howto, manual, or own class]). +latex_documents = [ + (master_doc, 'gsl-ref.tex', title, + my_latex_authors, 'manual'), +] + +imgmath_latex_preamble = my_latex_preamble + + +# -- Options for manual page output --------------------------------------- + +# One entry per manual page. List of tuples +# (source start file, name, description, authors, manual section). +man_pages = [ + (master_doc, 'gsl', title, + [author], 1) +] + + +# -- Options for Texinfo output ------------------------------------------- + +# Grouping the document tree into Texinfo files. List of tuples +# (source start file, target name, title, author, +# dir menu entry, description, category) +texinfo_documents = [ + (master_doc, 'gsl-ref', title, + author, 'GSL', 'One line description of project.', + 'Miscellaneous'), +] + + diff --git a/gsl-2.5/doc/const.rst b/gsl-2.5/doc/const.rst new file mode 100644 index 00000000..5740d567 --- /dev/null +++ b/gsl-2.5/doc/const.rst @@ -0,0 +1,646 @@ +.. index:: + single: physical constants + single: constants, physical + single: conversion of units + single: units, conversion of + +****************** +Physical Constants +****************** + +This chapter describes macros for the values of physical constants, such +as the speed of light, :math:`c`, and gravitational constant, :math:`G`. +The values are available in different unit systems, including the +standard MKSA system (meters, kilograms, seconds, amperes) and the CGSM +system (centimeters, grams, seconds, gauss), which is commonly used in +Astronomy. + +The definitions of constants in the MKSA system are available in the file +:file:`gsl_const_mksa.h`. The constants in the CGSM system are defined in +:file:`gsl_const_cgsm.h`. Dimensionless constants, such as the fine +structure constant, which are pure numbers are defined in +:file:`gsl_const_num.h`. + +The full list of constants is described briefly below. Consult the +header files themselves for the values of the constants used in the +library. + +.. index:: + single: fundamental constants + single: constants, fundamental + +Fundamental Constants +===================== + +.. macro:: GSL_CONST_MKSA_SPEED_OF_LIGHT + + The speed of light in vacuum, :math:`c`. + +.. macro:: GSL_CONST_MKSA_VACUUM_PERMEABILITY + + The permeability of free space, :math:`\mu_0`. This constant is defined + in the MKSA system only. + +.. macro:: GSL_CONST_MKSA_VACUUM_PERMITTIVITY + + The permittivity of free space, :math:`\epsilon_0`. This constant is + defined in the MKSA system only. + +.. macro:: GSL_CONST_MKSA_PLANCKS_CONSTANT_H + + Planck's constant, :math:`h`. + +.. macro:: GSL_CONST_MKSA_PLANCKS_CONSTANT_HBAR + + Planck's constant divided by :math:`2\pi`, :math:`\hbar`. + +.. macro:: GSL_CONST_NUM_AVOGADRO + + Avogadro's number, :math:`N_a`. + +.. macro:: GSL_CONST_MKSA_FARADAY + + The molar charge of 1 Faraday. + +.. macro:: GSL_CONST_MKSA_BOLTZMANN + + The Boltzmann constant, :math:`k`. + +.. macro:: GSL_CONST_MKSA_MOLAR_GAS + + The molar gas constant, :math:`R_0`. + +.. macro:: GSL_CONST_MKSA_STANDARD_GAS_VOLUME + + The standard gas volume, :math:`V_0`. + +.. macro:: GSL_CONST_MKSA_STEFAN_BOLTZMANN_CONSTANT + + The Stefan-Boltzmann radiation constant, :math:`\sigma`. + +.. macro:: GSL_CONST_MKSA_GAUSS + + The magnetic field of 1 Gauss. + +.. index:: astronomical constants + +Astronomy and Astrophysics +========================== + +.. macro:: GSL_CONST_MKSA_ASTRONOMICAL_UNIT + + The length of 1 astronomical unit (mean earth-sun distance), :math:`au`. + +.. macro:: GSL_CONST_MKSA_GRAVITATIONAL_CONSTANT + + The gravitational constant, :math:`G`. + +.. macro:: GSL_CONST_MKSA_LIGHT_YEAR + + The distance of 1 light-year, :math:`ly`. + +.. macro:: GSL_CONST_MKSA_PARSEC + + The distance of 1 parsec, :math:`pc`. + +.. macro:: GSL_CONST_MKSA_GRAV_ACCEL + + The standard gravitational acceleration on Earth, :math:`g`. + +.. macro:: GSL_CONST_MKSA_SOLAR_MASS + + The mass of the Sun. + +.. index:: + single: atomic physics, constants + single: nuclear physics, constants + +Atomic and Nuclear Physics +========================== + +.. macro:: GSL_CONST_MKSA_ELECTRON_CHARGE + + The charge of the electron, :math:`e`. + +.. macro:: GSL_CONST_MKSA_ELECTRON_VOLT + + The energy of 1 electron volt, :math:`eV`. + +.. macro:: GSL_CONST_MKSA_UNIFIED_ATOMIC_MASS + + The unified atomic mass, :math:`amu`. + +.. macro:: GSL_CONST_MKSA_MASS_ELECTRON + + The mass of the electron, :math:`m_e`. + +.. macro:: GSL_CONST_MKSA_MASS_MUON + + The mass of the muon, :math:`m_\mu`. + +.. macro:: GSL_CONST_MKSA_MASS_PROTON + + The mass of the proton, :math:`m_p`. + +.. macro:: GSL_CONST_MKSA_MASS_NEUTRON + + The mass of the neutron, :math:`m_n`. + +.. macro:: GSL_CONST_NUM_FINE_STRUCTURE + + The electromagnetic fine structure constant :math:`\alpha`. + +.. macro:: GSL_CONST_MKSA_RYDBERG + + The Rydberg constant, :math:`Ry`, in units of energy. This is related to + the Rydberg inverse wavelength :math:`R_\infty` by :math:`Ry = h c R_\infty`. + +.. macro:: GSL_CONST_MKSA_BOHR_RADIUS + + The Bohr radius, :math:`a_0`. + +.. macro:: GSL_CONST_MKSA_ANGSTROM + + The length of 1 angstrom. + +.. macro:: GSL_CONST_MKSA_BARN + + The area of 1 barn. + +.. macro:: GSL_CONST_MKSA_BOHR_MAGNETON + + The Bohr Magneton, :math:`\mu_B`. + +.. macro:: GSL_CONST_MKSA_NUCLEAR_MAGNETON + + The Nuclear Magneton, :math:`\mu_N`. + +.. macro:: GSL_CONST_MKSA_ELECTRON_MAGNETIC_MOMENT + + The absolute value of the magnetic moment of the electron, :math:`\mu_e`. + The physical magnetic moment of the electron is negative. + +.. macro:: GSL_CONST_MKSA_PROTON_MAGNETIC_MOMENT + + The magnetic moment of the proton, :math:`\mu_p`. + +.. macro:: GSL_CONST_MKSA_THOMSON_CROSS_SECTION + + The Thomson cross section, :math:`\sigma_T`. + +.. macro:: GSL_CONST_MKSA_DEBYE + + The electric dipole moment of 1 Debye, :math:`D`. + +.. index:: time units + +Measurement of Time +=================== + +.. macro:: GSL_CONST_MKSA_MINUTE + + The number of seconds in 1 minute. + +.. macro:: GSL_CONST_MKSA_HOUR + + The number of seconds in 1 hour. + +.. macro:: GSL_CONST_MKSA_DAY + + The number of seconds in 1 day. + +.. macro:: GSL_CONST_MKSA_WEEK + + The number of seconds in 1 week. + +.. index:: + single: imperial units + single: units, imperial + +Imperial Units +============== + +.. macro:: GSL_CONST_MKSA_INCH + + The length of 1 inch. + +.. macro:: GSL_CONST_MKSA_FOOT + + The length of 1 foot. + +.. macro:: GSL_CONST_MKSA_YARD + + The length of 1 yard. + +.. macro:: GSL_CONST_MKSA_MILE + + The length of 1 mile. + +.. macro:: GSL_CONST_MKSA_MIL + + The length of 1 mil (1/1000th of an inch). + +.. index:: nautical units + +Speed and Nautical Units +======================== + +.. macro:: GSL_CONST_MKSA_KILOMETERS_PER_HOUR + + The speed of 1 kilometer per hour. + +.. macro:: GSL_CONST_MKSA_MILES_PER_HOUR + + The speed of 1 mile per hour. + +.. macro:: GSL_CONST_MKSA_NAUTICAL_MILE + + The length of 1 nautical mile. + +.. macro:: GSL_CONST_MKSA_FATHOM + + The length of 1 fathom. + +.. macro:: GSL_CONST_MKSA_KNOT + + The speed of 1 knot. + +.. index:: printers units + +Printers Units +============== + +.. macro:: GSL_CONST_MKSA_POINT + + The length of 1 printer's point (1/72 inch). + +.. macro:: GSL_CONST_MKSA_TEXPOINT + + The length of 1 TeX point (1/72.27 inch). + +.. index:: volume units + +Volume, Area and Length +======================= + +.. macro:: GSL_CONST_MKSA_MICRON + + The length of 1 micron. + +.. macro:: GSL_CONST_MKSA_HECTARE + + The area of 1 hectare. + +.. macro:: GSL_CONST_MKSA_ACRE + + The area of 1 acre. + +.. macro:: GSL_CONST_MKSA_LITER + + The volume of 1 liter. + +.. macro:: GSL_CONST_MKSA_US_GALLON + + The volume of 1 US gallon. + +.. macro:: GSL_CONST_MKSA_CANADIAN_GALLON + + The volume of 1 Canadian gallon. + +.. macro:: GSL_CONST_MKSA_UK_GALLON + + The volume of 1 UK gallon. + +.. macro:: GSL_CONST_MKSA_QUART + + The volume of 1 quart. + +.. macro:: GSL_CONST_MKSA_PINT + + The volume of 1 pint. + +.. @node Cookery +.. @section Cookery +.. @commentindex cookery units + +.. @table @commentode +.. @item GSL_CONST_MKSA_CUP +.. The volume of 1 cup. + +.. @item GSL_CONST_MKSA_FLUID_OUNCE +.. The volume of 1 fluid ounce. + +.. @item GSL_CONST_MKSA_TABLESPOON +.. The volume of 1 tablespoon. + +.. @item GSL_CONST_MKSA_TEASPOON +.. The volume of 1 teaspoon. +.. @end table + +.. index:: + single: mass, units of + single: weight, units of + +Mass and Weight +=============== + +.. macro:: GSL_CONST_MKSA_POUND_MASS + + The mass of 1 pound. + +.. macro:: GSL_CONST_MKSA_OUNCE_MASS + + The mass of 1 ounce. + +.. macro:: GSL_CONST_MKSA_TON + + The mass of 1 ton. + +.. macro:: GSL_CONST_MKSA_METRIC_TON + + The mass of 1 metric ton (1000 kg). + +.. macro:: GSL_CONST_MKSA_UK_TON + + The mass of 1 UK ton. + +.. macro:: GSL_CONST_MKSA_TROY_OUNCE + + The mass of 1 troy ounce. + +.. macro:: GSL_CONST_MKSA_CARAT + + The mass of 1 carat. + +.. macro:: GSL_CONST_MKSA_GRAM_FORCE + + The force of 1 gram weight. + +.. macro:: GSL_CONST_MKSA_POUND_FORCE + + The force of 1 pound weight. + +.. macro:: GSL_CONST_MKSA_KILOPOUND_FORCE + + The force of 1 kilopound weight. + +.. macro:: GSL_CONST_MKSA_POUNDAL + + The force of 1 poundal. + +.. index:: + single: energy, units of + single: power, units of + single: thermal energy, units of + +Thermal Energy and Power +======================== + +.. macro:: GSL_CONST_MKSA_CALORIE + + The energy of 1 calorie. + +.. macro:: GSL_CONST_MKSA_BTU + + The energy of 1 British Thermal Unit, :math:`btu`. + +.. macro:: GSL_CONST_MKSA_THERM + + The energy of 1 Therm. + +.. macro:: GSL_CONST_MKSA_HORSEPOWER + + The power of 1 horsepower. + +.. index:: pressure, units of + +Pressure +======== + +.. macro:: GSL_CONST_MKSA_BAR + + The pressure of 1 bar. + +.. macro:: GSL_CONST_MKSA_STD_ATMOSPHERE + + The pressure of 1 standard atmosphere. + +.. macro:: GSL_CONST_MKSA_TORR + + The pressure of 1 torr. + +.. macro:: GSL_CONST_MKSA_METER_OF_MERCURY + + The pressure of 1 meter of mercury. + +.. macro:: GSL_CONST_MKSA_INCH_OF_MERCURY + + The pressure of 1 inch of mercury. + +.. macro:: GSL_CONST_MKSA_INCH_OF_WATER + + The pressure of 1 inch of water. + +.. macro:: GSL_CONST_MKSA_PSI + + The pressure of 1 pound per square inch. + +.. index:: viscosity, units of + +Viscosity +========= + +.. macro:: GSL_CONST_MKSA_POISE + + The dynamic viscosity of 1 poise. + +.. macro:: GSL_CONST_MKSA_STOKES + + The kinematic viscosity of 1 stokes. + +.. index:: + single: light, units of + single: illumination, units of + +Light and Illumination +====================== + +.. macro:: GSL_CONST_MKSA_STILB + + The luminance of 1 stilb. + +.. macro:: GSL_CONST_MKSA_LUMEN + + The luminous flux of 1 lumen. + +.. macro:: GSL_CONST_MKSA_LUX + + The illuminance of 1 lux. + +.. macro:: GSL_CONST_MKSA_PHOT + + The illuminance of 1 phot. + +.. macro:: GSL_CONST_MKSA_FOOTCANDLE + + The illuminance of 1 footcandle. + +.. macro:: GSL_CONST_MKSA_LAMBERT + + The luminance of 1 lambert. + +.. macro:: GSL_CONST_MKSA_FOOTLAMBERT + + The luminance of 1 footlambert. + +.. index:: radioactivity, units of + +Radioactivity +============= + +.. macro:: GSL_CONST_MKSA_CURIE + + The activity of 1 curie. + +.. macro:: GSL_CONST_MKSA_ROENTGEN + + The exposure of 1 roentgen. + +.. macro:: GSL_CONST_MKSA_RAD + + The absorbed dose of 1 rad. + +.. index:: force and energy, units of + +Force and Energy +================ + +.. macro:: GSL_CONST_MKSA_NEWTON + + The SI unit of force, 1 Newton. + +.. macro:: GSL_CONST_MKSA_DYNE + + The force of 1 Dyne = :math:`10^{-5}` Newton. + +.. macro:: GSL_CONST_MKSA_JOULE + + The SI unit of energy, 1 Joule. + +.. macro:: GSL_CONST_MKSA_ERG + + The energy 1 erg = :math:`10^{-7}` Joule. + +.. index:: + single: prefixes + single: constants, prefixes + +Prefixes +======== + +These constants are dimensionless scaling factors. + +.. macro:: GSL_CONST_NUM_YOTTA + + :math:`10^{24}` + +.. macro:: GSL_CONST_NUM_ZETTA + + :math:`10^{21}` + +.. macro:: GSL_CONST_NUM_EXA + + :math:`10^{18}` + +.. macro:: GSL_CONST_NUM_PETA + + :math:`10^{15}` + +.. macro:: GSL_CONST_NUM_TERA + + :math:`10^{12}` + +.. macro:: GSL_CONST_NUM_GIGA + + :math:`10^9` + +.. macro:: GSL_CONST_NUM_MEGA + + :math:`10^6` + +.. macro:: GSL_CONST_NUM_KILO + + :math:`10^3` + +.. macro:: GSL_CONST_NUM_MILLI + + :math:`10^{-3}` + +.. macro:: GSL_CONST_NUM_MICRO + + :math:`10^{-6}` + +.. macro:: GSL_CONST_NUM_NANO + + :math:`10^{-9}` + +.. macro:: GSL_CONST_NUM_PICO + + :math:`10^{-12}` + +.. macro:: GSL_CONST_NUM_FEMTO + + :math:`10^{-15}` + +.. macro:: GSL_CONST_NUM_ATTO + + :math:`10^{-18}` + +.. macro:: GSL_CONST_NUM_ZEPTO + + :math:`10^{-21}` + +.. macro:: GSL_CONST_NUM_YOCTO + + :math:`10^{-24}` + +Examples +======== + +The following program demonstrates the use of the physical constants in +a calculation. In this case, the goal is to calculate the range of +light-travel times from Earth to Mars. + +The required data is the average distance of each planet from the Sun in +astronomical units (the eccentricities and inclinations of the orbits +will be neglected for the purposes of this calculation). The average +radius of the orbit of Mars is 1.52 astronomical units, and for the +orbit of Earth it is 1 astronomical unit (by definition). These values +are combined with the MKSA values of the constants for the speed of +light and the length of an astronomical unit to produce a result for the +shortest and longest light-travel times in seconds. The figures are +converted into minutes before being displayed. + +.. include:: examples/const.c + :code: + +Here is the output from the program, + +.. include:: examples/const.txt + :code: + +References and Further Reading +============================== + +The authoritative sources for physical constants are the 2006 CODATA +recommended values, published in the article below. Further +information on the values of physical constants is also available from +the NIST website. + +* P.J. Mohr, B.N. Taylor, D.B. Newell, "CODATA Recommended + Values of the Fundamental Physical Constants: 2006", Reviews of + Modern Physics, 80(2), pp. 633--730 (2008). + +* http://www.physics.nist.gov/cuu/Constants/index.html + +* http://physics.nist.gov/Pubs/SP811/appenB9.html diff --git a/gsl-2.5/doc/contrib.rst b/gsl-2.5/doc/contrib.rst new file mode 100644 index 00000000..0188671a --- /dev/null +++ b/gsl-2.5/doc/contrib.rst @@ -0,0 +1,150 @@ +******************* +Contributors to GSL +******************* + +.. include:: include.rst + +(See the :file:`AUTHORS` file in the distribution for up-to-date information.) + +Mark Galassi + + Conceived GSL (with James Theiler) and wrote the design document. Wrote + the simulated annealing package and the relevant chapter in the manual. + +James Theiler + + Conceived GSL (with Mark Galassi). Wrote the random number generators + and the relevant chapter in this manual. + +Jim Davies + + Wrote the statistical routines and the relevant chapter in this + manual. + +Brian Gough + + FFTs, numerical integration, random number generators and distributions, + root finding, minimization and fitting, polynomial solvers, complex + numbers, physical constants, permutations, vector and matrix functions, + histograms, statistics, ieee-utils, revised |cblas| Level 2 & 3, + matrix decompositions, eigensystems, cumulative distribution functions, + testing, documentation and releases. + +Reid Priedhorsky + + Wrote and documented the initial version of the root finding routines + while at Los Alamos National Laboratory, Mathematical Modeling and + Analysis Group. + +.. email: reid@reidster.net + +Gerard Jungman + + Special Functions, Series acceleration, ODEs, BLAS, Linear Algebra, + Eigensystems, Hankel Transforms. + +Patrick Alken + + Implementation of nonsymmetric and generalized eigensystems, B-splines, + linear and nonlinear least squares, matrix decompositions, + associated Legendre functions, running statistics, sparse matrices, + and sparse linear algebra. + +Mike Booth + + Wrote the Monte Carlo library. + +Jorma Olavi Tähtinen + + Wrote the initial complex arithmetic functions. + +Thomas Walter + + Wrote the initial heapsort routines and Cholesky decomposition. + +Fabrice Rossi + + Multidimensional minimization. + +Carlo Perassi + + Implementation of the random number generators in Knuth's + *Seminumerical Algorithms*, 3rd Ed. + +Szymon Jaroszewicz + + Wrote the routines for generating combinations. + +.. + +Nicolas Darnis + + Wrote the cyclic functions and the initial functions for canonical + permutations. + +Jason H. Stover + + Wrote the major cumulative distribution functions. + +.. (jason@sakla.net) + +Ivo Alxneit + + Wrote the routines for wavelet transforms. + +Tuomo Keskitalo + + Improved the implementation of the ODE solvers and wrote the + ode-initval2 routines. + +Lowell Johnson + + Implementation of the Mathieu functions. + +Rhys Ulerich + + Wrote the multiset routines. + +Pavel Holoborodko + + Wrote the fixed order Gauss-Legendre quadrature routines. + +Pedro Gonnet + + Wrote the |cquad| integration routines. + +Thanks to Nigel Lowry for help in proofreading the manual. + +The non-symmetric eigensystems routines contain code based on the +LAPACK linear algebra library. LAPACK is distributed under the +following license:: + + Copyright (c) 1992-2006 The University of Tennessee. All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer listed + in this license in the documentation and/or other materials + provided with the distribution. + + * Neither the name of the copyright holders nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/gsl-2.5/doc/debug.rst b/gsl-2.5/doc/debug.rst new file mode 100644 index 00000000..428bbfda --- /dev/null +++ b/gsl-2.5/doc/debug.rst @@ -0,0 +1,371 @@ +**************************** +Debugging Numerical Programs +**************************** + +This chapter describes some tips and tricks for debugging numerical +programs which use GSL. + +.. index:: + single: gdb + single: debugging numerical programs + single: breakpoints + +Using gdb +========= + +Any errors reported by the library are passed to the function +:func:`gsl_error`. By running your programs under gdb and setting a +breakpoint in this function you can automatically catch any library +errors. You can add a breakpoint for every session by putting:: + + break gsl_error + +into your :file:`.gdbinit` file in the directory where your program is +started. + +If the breakpoint catches an error then you can use a backtrace +(:code:`bt`) to see the call-tree, and the arguments which possibly +caused the error. By moving up into the calling function you can +investigate the values of variables at that point. Here is an example +from the program :code:`fft/test_trap`, which contains the following +line:: + + status = gsl_fft_complex_wavetable_alloc (0, &complex_wavetable); + +The function :func:`gsl_fft_complex_wavetable_alloc` takes the length of +an FFT as its first argument. When this line is executed an error will +be generated because the length of an FFT is not allowed to be zero. + +To debug this problem we start :code:`gdb`, using the file +:file:`.gdbinit` to define a breakpoint in :func:`gsl_error`:: + + $ gdb test_trap + + GDB is free software and you are welcome to distribute copies + of it under certain conditions; type "show copying" to see + the conditions. There is absolutely no warranty for GDB; + type "show warranty" for details. GDB 4.16 (i586-debian-linux), + Copyright 1996 Free Software Foundation, Inc. + + Breakpoint 1 at 0x8050b1e: file error.c, line 14. + +When we run the program this breakpoint catches the error and shows the +reason for it:: + + (gdb) run + Starting program: test_trap + + Breakpoint 1, gsl_error (reason=0x8052b0d + "length n must be positive integer", + file=0x8052b04 "c_init.c", line=108, gsl_errno=1) + at error.c:14 + 14 if (gsl_error_handler) + +The first argument of :func:`gsl_error` is always a string describing the +error. Now we can look at the backtrace to see what caused the problem:: + + (gdb) bt + #0 gsl_error (reason=0x8052b0d + "length n must be positive integer", + file=0x8052b04 "c_init.c", line=108, gsl_errno=1) + at error.c:14 + #1 0x8049376 in gsl_fft_complex_wavetable_alloc (n=0, + wavetable=0xbffff778) at c_init.c:108 + #2 0x8048a00 in main (argc=1, argv=0xbffff9bc) + at test_trap.c:94 + #3 0x80488be in ___crt_dummy__ () + +We can see that the error was generated in the function +:func:`gsl_fft_complex_wavetable_alloc` when it was called with an +argument of :code:`n = 0`. The original call came from line 94 in the +file :file:`test_trap.c`. + +By moving up to the level of the original call we can find the line that +caused the error:: + + (gdb) up + #1 0x8049376 in gsl_fft_complex_wavetable_alloc (n=0, + wavetable=0xbffff778) at c_init.c:108 + 108 GSL_ERROR ("length n must be positive integer", GSL_EDOM); + (gdb) up + #2 0x8048a00 in main (argc=1, argv=0xbffff9bc) + at test_trap.c:94 + 94 status = gsl_fft_complex_wavetable_alloc (0, + &complex_wavetable); + +Thus we have found the line that caused the problem. From this point we +could also print out the values of other variables such as +:code:`complex_wavetable`. + +.. index:: floating point registers + +Examining floating point registers +================================== + +The contents of floating point registers can be examined using the +command :code:`info float` (on supported platforms):: + + (gdb) info float + st0: 0xc4018b895aa17a945000 Valid Normal -7.838871e+308 + st1: 0x3ff9ea3f50e4d7275000 Valid Normal 0.0285946 + st2: 0x3fe790c64ce27dad4800 Valid Normal 6.7415931e-08 + st3: 0x3ffaa3ef0df6607d7800 Spec Normal 0.0400229 + st4: 0x3c028000000000000000 Valid Normal 4.4501477e-308 + st5: 0x3ffef5412c22219d9000 Zero Normal 0.9580257 + st6: 0x3fff8000000000000000 Valid Normal 1 + st7: 0xc4028b65a1f6d243c800 Valid Normal -1.566206e+309 + fctrl: 0x0272 53 bit; NEAR; mask DENOR UNDER LOS; + fstat: 0xb9ba flags 0001; top 7; excep DENOR OVERF UNDER LOS + ftag: 0x3fff + fip: 0x08048b5c + fcs: 0x051a0023 + fopoff: 0x08086820 + fopsel: 0x002b + +Individual registers can be examined using the variables :code:`$reg`, +where :code:`reg` is the register name:: + + (gdb) p $st1 + $1 = 0.02859464454261210347719 + +.. index:: + single: exceptions, floating point + single: floating point exceptions + +Handling floating point exceptions +================================== + +It is possible to stop the program whenever a :code:`SIGFPE` floating +point exception occurs. This can be useful for finding the cause of an +unexpected infinity or :code:`NaN`. The current handler settings can be +shown with the command :code:`info signal SIGFPE`:: + + (gdb) info signal SIGFPE + Signal Stop Print Pass to program Description + SIGFPE Yes Yes Yes Arithmetic exception + +Unless the program uses a signal handler the default setting should be +changed so that SIGFPE is not passed to the program, as this would cause +it to exit. The command :code:`handle SIGFPE stop nopass` prevents this:: + + (gdb) handle SIGFPE stop nopass + Signal Stop Print Pass to program Description + SIGFPE Yes Yes No Arithmetic exception + +Depending on the platform it may be necessary to instruct the kernel to +generate signals for floating point exceptions. For programs using GSL +this can be achieved using the :macro:`GSL_IEEE_MODE` environment variable +in conjunction with the function :func:`gsl_ieee_env_setup` as described +in :ref:`chap_ieee`:: + + (gdb) set env GSL_IEEE_MODE=double-precision + +.. index:: + single: warning options + single: gcc warning options + +GCC warning options for numerical programs +========================================== + +Writing reliable numerical programs in C requires great care. The +following GCC warning options are recommended when compiling numerical +programs:: + + gcc -ansi -pedantic -Werror -Wall -W + -Wmissing-prototypes -Wstrict-prototypes + -Wconversion -Wshadow -Wpointer-arith + -Wcast-qual -Wcast-align + -Wwrite-strings -Wnested-externs + -fshort-enums -fno-common -Dinline= -g -O2 + +.. Uninitialized variables, conversions to and from integers or from +.. signed to unsigned integers can all cause hard-to-find problems. For +.. many non-numerical programs compiling with :code:`gcc`'s warning option +.. :code:`-Wall` provides a good check against common errors. However, for +.. numerical programs :code:`-Wall` is not enough. + +.. If you are unconvinced take a look at this program which contains an +.. error that can occur in numerical code, + +.. @example +.. #include +.. #include + +.. double f (int x); + +.. int main () +.. @{ +.. double a = 1.5; +.. double y = f(a); +.. printf("a = %g, sqrt(a) = %g\n", a, y); +.. return 0; +.. @} + +.. double f(x) @{ +.. return sqrt(x); +.. @} +.. @end example + +.. @noindent +.. This code compiles cleanly with :code:`-Wall` but produces some strange +.. output, + +.. @example +.. bash$ gcc -Wall tmp.c -lm +.. bash$ ./a.out +.. a = 1.5, sqrt(a) = 1 +.. @end example + +.. @noindent +.. Note that adding :code:`-ansi` does not help here, since the program does +.. not contain any invalid constructs. What is happening is that the +.. prototype for the function :code:`f(int x)` is not consistent with the +.. function call :code:`f(y)`, where :code:`y` is a floating point +.. number. This results in the argument being silently converted to an +.. integer. This is valid C, but in a numerical program it also likely to +.. be a programming error so we would like to be warned about it. (If we +.. genuinely wanted to convert :code:`y` to an integer then we could use an +.. explicit cast, :code:`(int)y`). + +.. Fortunately GCC provides many additional warnings which can alert you to +.. problems such as this. You just have to remember to use them. Here is a +.. set of recommended warning options for numerical programs. + +For details of each option consult the manual *Using and Porting +GCC*. The following table gives a brief explanation of what types of +errors these options catch. + +:code:`-ansi -pedantic` + + Use ANSI C, and reject any non-ANSI extensions. These flags help in + writing portable programs that will compile on other systems. + +:code:`-Werror` + + Consider warnings to be errors, so that compilation stops. This prevents + warnings from scrolling off the top of the screen and being lost. You + won't be able to compile the program until it is completely + warning-free. + +:code:`-Wall` + + This turns on a set of warnings for common programming problems. You + need :code:`-Wall`, but it is not enough on its own. + +:code:`-O2` + + Turn on optimization. The warnings for uninitialized variables in + :code:`-Wall` rely on the optimizer to analyze the code. If there is no + optimization then these warnings aren't generated. + +:code:`-W` + + This turns on some extra warnings not included in :code:`-Wall`, such as + missing return values and comparisons between signed and unsigned + integers. + +:code:`-Wmissing-prototypes -Wstrict-prototypes` + + Warn if there are any missing or inconsistent prototypes. Without + prototypes it is harder to detect problems with incorrect arguments. + +:code:`-Wconversion` + + The main use of this option is to warn about conversions from signed to + unsigned integers. For example, :code:`unsigned int x = -1`. If you need + to perform such a conversion you can use an explicit cast. + +:code:`-Wshadow` + + This warns whenever a local variable shadows another local variable. If + two variables have the same name then it is a potential source of + confusion. + +:code:`-Wpointer-arith -Wcast-qual -Wcast-align` + + These options warn if you try to do pointer arithmetic for types which + don't have a size, such as :code:`void`, if you remove a :code:`const` + cast from a pointer, or if you cast a pointer to a type which has a + different size, causing an invalid alignment. + +:code:`-Wwrite-strings` + + This option gives string constants a :code:`const` qualifier so that it + will be a compile-time error to attempt to overwrite them. + +:code:`-fshort-enums` + + This option makes the type of :code:`enum` as short as possible. Normally + this makes an :code:`enum` different from an :code:`int`. Consequently any + attempts to assign a pointer-to-int to a pointer-to-enum will generate a + cast-alignment warning. + +:code:`-fno-common` + + This option prevents global variables being simultaneously defined in + different object files (you get an error at link time). Such a variable + should be defined in one file and referred to in other files with an + :code:`extern` declaration. + +:code:`-Wnested-externs` + + This warns if an :code:`extern` declaration is encountered within a + function. + +:code:`-Dinline=` + + The :code:`inline` keyword is not part of ANSI C. Thus if you want to use + :code:`-ansi` with a program which uses inline functions you can use this + preprocessor definition to remove the :code:`inline` keywords. + +:code:`-g` + + It always makes sense to put debugging symbols in the executable so that + you can debug it using :code:`gdb`. The only effect of debugging symbols + is to increase the size of the file, and you can use the :code:`strip` + command to remove them later if necessary. + +.. For comparison, this is what happens when the test program above is +.. compiled with these options. + +.. @example +.. bash$ gcc -ansi -pedantic -Werror -W -Wall -Wtraditional +.. -Wconversion -Wshadow -Wpointer-arith -Wcast-qual -Wcast-align +.. -Wwrite-strings -Waggregate-return -Wstrict-prototypes -fshort-enums +.. -fno-common -Wmissing-prototypes -Wnested-externs -Dinline= +.. -g -O4 tmp.c +.. cc1: warnings being treated as errors +.. tmp.c:7: warning: function declaration isn't a prototype +.. tmp.c: In function `main': +.. tmp.c:9: warning: passing arg 1 of `f' as integer rather than floating +.. due to prototype +.. tmp.c: In function `f': +.. tmp.c:14: warning: type of `x' defaults to `int' +.. tmp.c:15: warning: passing arg 1 of `sqrt' as floating rather than integer +.. due to prototype +.. make: *** [tmp] Error 1 +.. @end example + +.. @noindent +.. The error in the prototype is flagged, plus the fact that we should have +.. defined main as :code:`int main (void)` in ANSI C. Clearly there is some +.. work to do before this program is ready to run. + +References and Further Reading +============================== + +The following books are essential reading for anyone writing and +debugging numerical programs with :code:`gcc` and :code:`gdb`. + +* R.M. Stallman, *Using and Porting GNU CC*, Free Software + Foundation, ISBN 1882114388 + +* R.M. Stallman, R.H. Pesch, *Debugging with GDB: The GNU + Source-Level Debugger*, Free Software Foundation, ISBN 1882114779 + +For a tutorial introduction to the GNU C Compiler and related programs, +see + +* B.J. Gough, http://www.network-theory.co.uk/gcc/intro/,' + *An Introduction to GCC*, Network Theory + Ltd, ISBN 0954161793 diff --git a/gsl-2.5/doc/dht.rst b/gsl-2.5/doc/dht.rst new file mode 100644 index 00000000..d7873c84 --- /dev/null +++ b/gsl-2.5/doc/dht.rst @@ -0,0 +1,166 @@ +.. index:: + single: discrete Hankel transforms + single: Hankel transforms, discrete + single: transforms, Hankel + +************************** +Discrete Hankel Transforms +************************** + +This chapter describes functions for performing Discrete Hankel +Transforms (DHTs). The functions are declared in the header file +:file:`gsl_dht.h`. + +Definitions +=========== + +The discrete Hankel transform acts on a vector of sampled data, where +the samples are assumed to have been taken at points related to the +zeros of a Bessel function of fixed order; compare this to the case of +the discrete Fourier transform, where samples are taken at points +related to the zeroes of the sine or cosine function. + +Starting with its definition, the Hankel transform (or Bessel transform) of +order :math:`\nu` of a function :math:`f` with :math:`\nu > -1/2` is defined as +(see Johnson, 1987 and Lemoine, 1994) + +.. math:: F_\nu(u) = \int_0^\infty f(t) J_\nu(u t) t dt + +If the integral exists, :math:`F_\nu` is called the Hankel transformation +of :math:`f`. The reverse transform is given by + +.. math:: f(t) = \int_0^\infty F_\nu(u) J_\nu(u t) u du + +where :math:`\int_0^\infty f(t) t^{1/2} dt` must exist and be +absolutely convergent, and where :math:`f(t)` satisfies Dirichlet's +conditions (of limited total fluctuations) in the interval +:math:`[0,\infty]`. + +Now the discrete Hankel transform works on a discrete function +:math:`f`, which is sampled on points :math:`n=1...M` located at +positions :math:`t_n=(j_{\nu,n}/j_{\nu,M}) X` in real space and +at :math:`u_n=j_{\nu,n}/X` in reciprocal space. Here, +:math:`j_{\nu,m}` are the m-th zeros of the Bessel function +:math:`J_\nu(x)` arranged in ascending order. Moreover, the +discrete functions are assumed to be band limited, so +:math:`f(t_n)=0` and :math:`F(u_n)=0` for :math:`n>M`. Accordingly, +the function :math:`f` is defined on the interval :math:`[0,X]`. + +Following the work of Johnson, 1987 and +Lemoine, 1994, the discrete Hankel transform is given by + +.. only:: not texinfo + + .. math:: + + F_\nu(u_m) = {{2 X^2}\over{j_{\nu,M}^2}} + \sum_{k=1}^{M-1} f\left({{j_{\nu,k} X}\over{j_{\nu,M}}}\right) + {{J_\nu(j_{\nu,m} j_{\nu,k} / j_{\nu,M})}\over{J_{\nu+1}(j_{\nu,k})^2}}. + +.. only:: texinfo + + :: + + F_\nu(u_m) = (2 X^2 / j_(\nu,M)^2) + \sum_{k=1}^{M-1} f(j_(\nu,k) X/j_(\nu,M)) + (J_\nu(j_(\nu,m) j_(\nu,k) / j_(\nu,M)) / J_(\nu+1)(j_(\nu,k))^2). + +It is this discrete expression which defines the discrete Hankel +transform calculated by GSL. In GSL, forward and backward transforms +are defined equally and calculate :math:`F_\nu(u_m)`. +Following Johnson, the backward transform reads + +.. only:: not texinfo + + .. math:: + + f(t_k) = {{2}\over{X^2}} + \sum_{m=1}^{M-1} F\left({{j_{\nu,m}}\over{X}}\right) + {{J_\nu(j_{\nu,m} j_{\nu,k} / j_{\nu,M})}\over{J_{\nu+1}(j_{\nu,m})^2}}. + +.. only:: texinfo + + :: + + f(t_k) = (2 / X^2) + \sum_{m=1}^{M-1} F(j_(\nu,m)/X) + (J_\nu(j_(\nu,m) j_(\nu,k) / j_(\nu,M)) / J_(\nu+1)(j_(\nu,m))^2). + +Obviously, using the forward transform instead of the backward transform gives an +additional factor :math:`X^4/j_{\nu,M}^2=t_m^2/u_m^2`. + +The kernel in the summation above defines the matrix of the +:math:`\nu`-Hankel transform of size :math:`M-1`. The coefficients of +this matrix, being dependent on :math:`\nu` and :math:`M`, must be +precomputed and stored; the :type:`gsl_dht` object encapsulates this +data. The allocation function :func:`gsl_dht_alloc` returns a +:type:`gsl_dht` object which must be properly initialized with +:func:`gsl_dht_init` before it can be used to perform transforms on data +sample vectors, for fixed :math:`\nu` and :math:`M`, using the +:func:`gsl_dht_apply` function. The implementation allows to define the +length :math:`X` of the fundamental interval, for convenience, while +discrete Hankel transforms are often defined on the unit interval +instead of :math:`[0,X]`. + +Notice that by assumption :math:`f(t)` vanishes at the endpoints +of the interval, consistent with the inversion formula +and the sampling formula given above. Therefore, this transform +corresponds to an orthogonal expansion in eigenfunctions +of the Dirichlet problem for the Bessel differential equation. + +Functions +========= + +.. type:: gsl_dht + + Workspace for computing discrete Hankel transforms + +.. function:: gsl_dht * gsl_dht_alloc (size_t size) + + This function allocates a Discrete Hankel transform object of size + :data:`size`. + +.. function:: int gsl_dht_init (gsl_dht * t, double nu, double xmax) + + This function initializes the transform :data:`t` for the given values of + :data:`nu` and :data:`xmax`. + +.. function:: gsl_dht * gsl_dht_new (size_t size, double nu, double xmax) + + This function allocates a Discrete Hankel transform object of size + :data:`size` and initializes it for the given values of :data:`nu` and + :data:`xmax`. + +.. function:: void gsl_dht_free (gsl_dht * t) + + This function frees the transform :data:`t`. + +.. function:: int gsl_dht_apply (const gsl_dht * t, double * f_in, double * f_out) + + This function applies the transform :data:`t` to the array :data:`f_in` + whose size is equal to the size of the transform. The result is stored + in the array :data:`f_out` which must be of the same length. + + Applying this function to its output gives the original data + multiplied by :math:`(X^2/j_{\nu,M})^2`, + up to numerical errors. + +.. function:: double gsl_dht_x_sample (const gsl_dht * t, int n) + + This function returns the value of the :data:`n`-th sample point in the unit interval, + :math:`{({j_{\nu,n+1}} / {j_{\nu,M}}}) X`. + These are the points where the function :math:`f(t)` is assumed to be sampled. + +.. function:: double gsl_dht_k_sample (const gsl_dht * t, int n) + + This function returns the value of the :data:`n`-th sample point in "k-space", + :math:`{{j_{\nu,n+1}} / X}`. + +References and Further Reading +============================== + +The algorithms used by these functions are described in the following papers, + +* H. Fisk Johnson, Comp.: Phys.: Comm.: 43, 181 (1987). + +* D. Lemoine, J. Chem.: Phys.: 101, 3936 (1994). diff --git a/gsl-2.5/doc/diff.rst b/gsl-2.5/doc/diff.rst new file mode 100644 index 00000000..5a0865e6 --- /dev/null +++ b/gsl-2.5/doc/diff.rst @@ -0,0 +1,95 @@ +.. index:: + single: differentiation of functions, numeric + single: functions, numerical differentiation + single: derivatives, calculating numerically + single: numerical derivatives + single: slope, see numerical derivative + +************************* +Numerical Differentiation +************************* + +The functions described in this chapter compute numerical derivatives by +finite differencing. An adaptive algorithm is used to find the best +choice of finite difference and to estimate the error in the derivative. +These functions are declared in the header file :file:`gsl_deriv.h`. + +Functions +========= + +.. function:: int gsl_deriv_central (const gsl_function * f, double x, double h, double * result, double * abserr) + + This function computes the numerical derivative of the function :data:`f` + at the point :data:`x` using an adaptive central difference algorithm with + a step-size of :data:`h`. The derivative is returned in :data:`result` and an + estimate of its absolute error is returned in :data:`abserr`. + + The initial value of :data:`h` is used to estimate an optimal step-size, + based on the scaling of the truncation error and round-off error in the + derivative calculation. The derivative is computed using a 5-point rule + for equally spaced abscissae at :math:`x - h`, :math:`x - h/2`, :math:`x`, + :math:`x + h/2`, :math:`x+h`, with an error estimate taken from the difference + between the 5-point rule and the corresponding 3-point rule :math:`x-h`, + :math:`x`, :math:`x+h`. Note that the value of the function at :math:`x` + does not contribute to the derivative calculation, so only 4-points are + actually used. + +.. function:: int gsl_deriv_forward (const gsl_function * f, double x, double h, double * result, double * abserr) + + This function computes the numerical derivative of the function :data:`f` + at the point :data:`x` using an adaptive forward difference algorithm with + a step-size of :data:`h`. The function is evaluated only at points greater + than :data:`x`, and never at :data:`x` itself. The derivative is returned in + :data:`result` and an estimate of its absolute error is returned in + :data:`abserr`. This function should be used if :math:`f(x)` has a + discontinuity at :data:`x`, or is undefined for values less than :data:`x`. + + The initial value of :data:`h` is used to estimate an optimal step-size, + based on the scaling of the truncation error and round-off error in the + derivative calculation. The derivative at :math:`x` is computed using an + "open" 4-point rule for equally spaced abscissae at :math:`x+h/4`, + :math:`x + h/2`, :math:`x + 3h/4`, :math:`x+h`, with an error estimate taken + from the difference between the 4-point rule and the corresponding + 2-point rule :math:`x+h/2`, :math:`x+h`. + +.. function:: int gsl_deriv_backward (const gsl_function * f, double x, double h, double * result, double * abserr) + + This function computes the numerical derivative of the function :data:`f` + at the point :data:`x` using an adaptive backward difference algorithm + with a step-size of :data:`h`. The function is evaluated only at points + less than :data:`x`, and never at :data:`x` itself. The derivative is + returned in :data:`result` and an estimate of its absolute error is + returned in :data:`abserr`. This function should be used if :math:`f(x)` + has a discontinuity at :data:`x`, or is undefined for values greater than + :data:`x`. + + This function is equivalent to calling :func:`gsl_deriv_forward` with a + negative step-size. + +Examples +======== + +The following code estimates the derivative of the function +:math:`f(x) = x^{3/2}` +at :math:`x = 2` and at :math:`x = 0`. The function :math:`f(x)` is +undefined for :math:`x < 0` so the derivative at :math:`x=0` is computed +using :func:`gsl_deriv_forward`. + +.. include:: examples/diff.c + :code: + +Here is the output of the program, + +.. include:: examples/diff.txt + :code: + +References and Further Reading +============================== + +The algorithms used by these functions are described in the following sources: + +* Abramowitz and Stegun, *Handbook of Mathematical Functions*, + Section 25.3.4, and Table 25.5 (Coefficients for Differentiation). + +* S.D. Conte and Carl de Boor, *Elementary Numerical Analysis: An + Algorithmic Approach*, McGraw-Hill, 1972. diff --git a/gsl-2.5/doc/dwt.rst b/gsl-2.5/doc/dwt.rst new file mode 100644 index 00000000..c279ace5 --- /dev/null +++ b/gsl-2.5/doc/dwt.rst @@ -0,0 +1,377 @@ +.. index:: + single: DWT, see wavelet transforms + single: wavelet transforms + single: transforms, wavelet + +****************** +Wavelet Transforms +****************** + +This chapter describes functions for performing Discrete Wavelet +Transforms (DWTs). The library includes wavelets for real data in both +one and two dimensions. The wavelet functions are declared in the header +files :file:`gsl_wavelet.h` and :file:`gsl_wavelet2d.h`. + +.. index:: + single: DWT, mathematical definition + +Definitions +=========== + +The continuous wavelet transform and its inverse are defined by +the relations, + +.. math:: w(s, \tau) = \int_{-\infty}^\infty f(t) * \psi^*_{s,\tau}(t) dt + +and, + +.. math:: f(t) = \int_0^\infty ds \int_{-\infty}^\infty w(s, \tau) * \psi_{s,\tau}(t) d\tau + +where the basis functions :math:`\psi_{s,\tau}` +are obtained by scaling +and translation from a single function, referred to as the {mother +wavelet*. + +The discrete version of the wavelet transform acts on equally-spaced +samples, with fixed scaling and translation steps (:math:`s`, +:math:`\tau`). The frequency and time axes are sampled *dyadically* +on scales of :math:`2^j` through a level parameter :math:`j`. + +.. The wavelet :math:`\psi` +.. can be expressed in terms of a scaling function :math:`\varphi`, +.. +.. @tex +.. \beforedisplay +.. $$ +.. \psi(2^{j-1},t) = \sum_{k=0}^{2^j-1} g_j(k) * \bar{\varphi}(2^j t-k) +.. $$ +.. \afterdisplay +.. @end tex +.. @ifinfo +.. @example +.. \psi(2^@{j-1@},t) = \sum_@{k=0@}^@{2^j-1@} g_j(k) * \bar@{\varphi@}(2^j t-k) +.. @end example +.. @end ifinfo +.. @noindent +.. and +.. +.. @tex +.. \beforedisplay +.. $$ +.. \varphi(2^{j-1},t) = \sum_{k=0}^{2^j-1} h_j(k) * \bar{\varphi}(2^j t-k) +.. $$ +.. \afterdisplay +.. @end tex +.. @ifinfo +.. @example +.. \varphi(2^@{j-1@},t) = \sum_@{k=0@}^@{2^j-1@} h_j(k) * \bar@{\varphi@}(2^j t-k) +.. @end example +.. @end ifinfo +.. @noindent +.. The functions :math:`\psi` and :math:`\varphi` are related through the +.. coefficients +.. @c{$g_{n} = (-1)^n h_{L-1-n}$} +.. @math{g_@{n@} = (-1)^n h_@{L-1-n@}} +.. for @c{$n=0 \dots L-1$} +.. @math{n=0 ... L-1}, +.. where :math:`L` is the total number of coefficients. The two sets of +.. coefficients :math:`h_j` and :math:`g_i` define the scaling function and +.. the wavelet. + +The resulting family of functions :math:`\{\psi_{j,n}\}` +constitutes an orthonormal basis for square-integrable signals. +The discrete wavelet transform is an :math:`O(N)` algorithm, and is also +referred to as the *fast wavelet transform*. + +.. index:: DWT initialization + +Initialization +============== + +.. type:: gsl_wavelet + + This structure contains the filter coefficients + defining the wavelet and any associated offset parameters. + +.. function:: gsl_wavelet * gsl_wavelet_alloc (const gsl_wavelet_type * T, size_t k) + + This function allocates and initializes a wavelet object of type + :data:`T`. The parameter :data:`k` selects the specific member of the + wavelet family. A null pointer is returned if insufficient memory is + available or if a unsupported member is selected. + +The following wavelet types are implemented: + +.. type:: gsl_wavelet_type + + .. index:: + single: Daubechies wavelets + single: maximal phase, Daubechies wavelets + + .. var:: gsl_wavelet_daubechies + gsl_wavelet_daubechies_centered + + This is the Daubechies wavelet family of maximum phase with :math:`k/2` + vanishing moments. The implemented wavelets are + :math:`k=4, 6, \dots, 20`, with :data:`k` even. + + .. index:: Haar wavelets + + .. var:: gsl_wavelet_haar + gsl_wavelet_haar_centered + + This is the Haar wavelet. The only valid choice of :math:`k` for the + Haar wavelet is :math:`k=2`. + + .. index:: + single: biorthogonal wavelets + single: B-spline wavelets + + .. var:: gsl_wavelet_bspline + gsl_wavelet_bspline_centered + + This is the biorthogonal B-spline wavelet family of order :math:`(i,j)`. + The implemented values of :math:`k = 100*i + j` are 103, 105, 202, 204, + 206, 208, 301, 303, 305 307, 309. + +The centered forms of the wavelets align the coefficients of the various +sub-bands on edges. Thus the resulting visualization of the +coefficients of the wavelet transform in the phase plane is easier to +understand. + +.. function:: const char * gsl_wavelet_name (const gsl_wavelet * w) + + This function returns a pointer to the name of the wavelet family for + :data:`w`. + +.. @deftypefun {void} gsl_wavelet_print (const gsl_wavelet * w) +.. This function prints the filter coefficients (@code{**h1}, @code{**g1}, @code{**h2}, @code{**g2}) of the wavelet object :data:`w`. +.. @end deftypefun + +.. function:: void gsl_wavelet_free (gsl_wavelet * w) + + This function frees the wavelet object :data:`w`. + +.. type:: gsl_wavelet_workspace + + This structure contains scratch space of the + same size as the input data and is used to hold intermediate results + during the transform. + +.. function:: gsl_wavelet_workspace * gsl_wavelet_workspace_alloc (size_t n) + + This function allocates a workspace for the discrete wavelet transform. + To perform a one-dimensional transform on :data:`n` elements, a workspace + of size :data:`n` must be provided. For two-dimensional transforms of + :data:`n`-by-:data:`n` matrices it is sufficient to allocate a workspace of + size :data:`n`, since the transform operates on individual rows and + columns. A null pointer is returned if insufficient memory is available. + +.. function:: void gsl_wavelet_workspace_free (gsl_wavelet_workspace * work) + + This function frees the allocated workspace :data:`work`. + +Transform Functions +=================== + +This sections describes the actual functions performing the discrete +wavelet transform. Note that the transforms use periodic boundary +conditions. If the signal is not periodic in the sample length then +spurious coefficients will appear at the beginning and end of each level +of the transform. + +.. index:: + single: DWT, one dimensional + +Wavelet transforms in one dimension +----------------------------------- + +.. function:: int gsl_wavelet_transform (const gsl_wavelet * w, double * data, size_t stride, size_t n, gsl_wavelet_direction dir, gsl_wavelet_workspace * work) + int gsl_wavelet_transform_forward (const gsl_wavelet * w, double * data, size_t stride, size_t n, gsl_wavelet_workspace * work) + int gsl_wavelet_transform_inverse (const gsl_wavelet * w, double * data, size_t stride, size_t n, gsl_wavelet_workspace * work) + + These functions compute in-place forward and inverse discrete wavelet + transforms of length :data:`n` with stride :data:`stride` on the array + :data:`data`. The length of the transform :data:`n` is restricted to powers + of two. For the :code:`transform` version of the function the argument + :data:`dir` can be either :code:`forward` (:math:`+1`) or :code:`backward` + (:math:`-1`). A workspace :data:`work` of length :data:`n` must be provided. + + For the forward transform, the elements of the original array are + replaced by the discrete wavelet + transform :math:`f_i \rightarrow w_{j,k}` + in a packed triangular storage layout, + where :data:`j` is the index of the level + :math:`j = 0 \dots J-1` + and + :data:`k` is the index of the coefficient within each level, + :math:`k = 0 \dots 2^j - 1`. + The total number of levels is :math:`J = \log_2(n)`. The output data + has the following form, + + .. math:: (s_{-1,0}, d_{0,0}, d_{1,0}, d_{1,1}, d_{2,0},\cdots, d_{j,k},\cdots, d_{J-1,2^{J-1} - 1}) + + where the first element is the smoothing coefficient :math:`s_{-1,0}`, + followed by the detail coefficients :math:`d_{j,k}` + for each level + :math:`j`. The backward transform inverts these coefficients to obtain + the original data. + + These functions return a status of :macro:`GSL_SUCCESS` upon successful + completion. :macro:`GSL_EINVAL` is returned if :data:`n` is not an integer + power of 2 or if insufficient workspace is provided. + +.. index:: + single: DWT, two dimensional + +Wavelet transforms in two dimension +----------------------------------- + +The library provides functions to perform two-dimensional discrete +wavelet transforms on square matrices. The matrix dimensions must be an +integer power of two. There are two possible orderings of the rows and +columns in the two-dimensional wavelet transform, referred to as the +"standard" and "non-standard" forms. + +The "standard" transform performs a complete discrete wavelet +transform on the rows of the matrix, followed by a separate complete +discrete wavelet transform on the columns of the resulting +row-transformed matrix. This procedure uses the same ordering as a +two-dimensional Fourier transform. + +The "non-standard" transform is performed in interleaved passes on the +rows and columns of the matrix for each level of the transform. The +first level of the transform is applied to the matrix rows, and then to +the matrix columns. This procedure is then repeated across the rows and +columns of the data for the subsequent levels of the transform, until +the full discrete wavelet transform is complete. The non-standard form +of the discrete wavelet transform is typically used in image analysis. + +The functions described in this section are declared in the header file +:file:`gsl_wavelet2d.h`. + +.. function:: int gsl_wavelet2d_transform (const gsl_wavelet * w, double * data, size_t tda, size_t size1, size_t size2, gsl_wavelet_direction dir, gsl_wavelet_workspace * work) + int gsl_wavelet2d_transform_forward (const gsl_wavelet * w, double * data, size_t tda, size_t size1, size_t size2, gsl_wavelet_workspace * work) + int gsl_wavelet2d_transform_inverse (const gsl_wavelet * w, double * data, size_t tda, size_t size1, size_t size2, gsl_wavelet_workspace * work) + + These functions compute two-dimensional in-place forward and inverse + discrete wavelet transforms in standard form on the + array :data:`data` stored in row-major form with dimensions :data:`size1` + and :data:`size2` and physical row length :data:`tda`. The dimensions must + be equal (square matrix) and are restricted to powers of two. For the + :code:`transform` version of the function the argument :data:`dir` can be + either :code:`forward` (:math:`+1`) or :code:`backward` (:math:`-1`). A + workspace :data:`work` of the appropriate size must be provided. On exit, + the appropriate elements of the array :data:`data` are replaced by their + two-dimensional wavelet transform. + + The functions return a status of :macro:`GSL_SUCCESS` upon successful + completion. :macro:`GSL_EINVAL` is returned if :data:`size1` and + :data:`size2` are not equal and integer powers of 2, or if insufficient + workspace is provided. + +.. function:: int gsl_wavelet2d_transform_matrix (const gsl_wavelet * w, gsl_matrix * m, gsl_wavelet_direction dir, gsl_wavelet_workspace * work) + int gsl_wavelet2d_transform_matrix_forward (const gsl_wavelet * w, gsl_matrix * m, gsl_wavelet_workspace * work) + int gsl_wavelet2d_transform_matrix_inverse (const gsl_wavelet * w, gsl_matrix * m, gsl_wavelet_workspace * work) + + These functions compute the two-dimensional in-place wavelet transform + on a matrix :data:`m`. + +.. function:: int gsl_wavelet2d_nstransform (const gsl_wavelet * w, double * data, size_t tda, size_t size1, size_t size2, gsl_wavelet_direction dir, gsl_wavelet_workspace * work) + int gsl_wavelet2d_nstransform_forward (const gsl_wavelet * w, double * data, size_t tda, size_t size1, size_t size2, gsl_wavelet_workspace * work) + int gsl_wavelet2d_nstransform_inverse (const gsl_wavelet * w, double * data, size_t tda, size_t size1, size_t size2, gsl_wavelet_workspace * work) + + These functions compute the two-dimensional wavelet transform in + non-standard form. + +.. function:: int gsl_wavelet2d_nstransform_matrix (const gsl_wavelet * w, gsl_matrix * m, gsl_wavelet_direction dir, gsl_wavelet_workspace * work) + int gsl_wavelet2d_nstransform_matrix_forward (const gsl_wavelet * w, gsl_matrix * m, gsl_wavelet_workspace * work) + int gsl_wavelet2d_nstransform_matrix_inverse (const gsl_wavelet * w, gsl_matrix * m, gsl_wavelet_workspace * work) + + These functions compute the non-standard form of the two-dimensional + in-place wavelet transform on a matrix :data:`m`. + +Examples +======== + +The following program demonstrates the use of the one-dimensional +wavelet transform functions. It computes an approximation to an input +signal (of length 256) using the 20 largest components of the wavelet +transform, while setting the others to zero. + +.. include:: examples/dwt.c + :code: + +The output can be used with the GNU plotutils :code:`graph` program:: + + $ ./a.out ecg.dat > dwt.txt + $ graph -T ps -x 0 256 32 -h 0.3 -a dwt.txt > dwt.ps + +:numref:`fig_dwt` shows an original and compressed version of a sample ECG +recording from the MIT-BIH Arrhythmia Database, part of the PhysioNet +archive of public-domain of medical datasets. + +.. _fig_dwt: + +.. figure:: /images/dwt.png + :scale: 60% + + Original (upper) and wavelet-compressed (lower) ECG signals, using the + 20 largest components of the Daubechies(4) discrete wavelet transform. + +References and Further Reading +============================== + +The mathematical background to wavelet transforms is covered in the +original lectures by Daubechies, + +* Ingrid Daubechies. + Ten Lectures on Wavelets. + *CBMS-NSF Regional Conference Series in Applied Mathematics* (1992), + SIAM, ISBN 0898712742. + +An easy to read introduction to the subject with an emphasis on the +application of the wavelet transform in various branches of science is, + +* Paul S. Addison. *The Illustrated Wavelet Transform Handbook*. + Institute of Physics Publishing (2002), ISBN 0750306920. + +For extensive coverage of signal analysis by wavelets, wavelet packets +and local cosine bases see, + +* S. G. Mallat. *A wavelet tour of signal processing* (Second + edition). Academic Press (1999), ISBN 012466606X. + +The concept of multiresolution analysis underlying the wavelet transform +is described in, + +* S. G. Mallat. + Multiresolution Approximations and Wavelet Orthonormal Bases of L^2(R). + *Transactions of the American Mathematical Society*, 315(1), 1989, 69--87. + +* S. G. Mallat. + A Theory for Multiresolution Signal Decomposition---The Wavelet Representation. + *IEEE Transactions on Pattern Analysis and Machine Intelligence*, 11, 1989, + 674--693. + +The coefficients for the individual wavelet families implemented by the +library can be found in the following papers, + +* I. Daubechies. + Orthonormal Bases of Compactly Supported Wavelets. + *Communications on Pure and Applied Mathematics*, 41 (1988) 909--996. + +* A. Cohen, I. Daubechies, and J.-C. Feauveau. + Biorthogonal Bases of Compactly Supported Wavelets. + *Communications on Pure and Applied Mathematics*, 45 (1992) + 485--560. + +The PhysioNet archive of physiological datasets can be found online at +http://www.physionet.org/ and is described in the following +paper, + +* Goldberger et al. + PhysioBank, PhysioToolkit, and PhysioNet: Components + of a New Research Resource for Complex Physiologic + Signals. + *Circulation* 101(23):e215-e220 2000. diff --git a/gsl-2.5/doc/eigen.rst b/gsl-2.5/doc/eigen.rst new file mode 100644 index 00000000..971af750 --- /dev/null +++ b/gsl-2.5/doc/eigen.rst @@ -0,0 +1,764 @@ +.. index:: eigenvalues and eigenvectors + +************ +Eigensystems +************ + +.. include:: include.rst + +This chapter describes functions for computing eigenvalues and +eigenvectors of matrices. There are routines for real symmetric, +real nonsymmetric, complex hermitian, real generalized symmetric-definite, +complex generalized hermitian-definite, and real generalized nonsymmetric +eigensystems. Eigenvalues can be computed with or without eigenvectors. +The hermitian and real symmetric matrix algorithms are symmetric bidiagonalization +followed by QR reduction. The nonsymmetric algorithm is the Francis QR +double-shift. The generalized nonsymmetric algorithm is the QZ method due +to Moler and Stewart. + +The functions described in this chapter are declared in the header file +:file:`gsl_eigen.h`. + +Real Symmetric Matrices +======================= +.. index:: + single: symmetric matrix, real, eigensystem + single: real symmetric matrix, eigensystem + +For real symmetric matrices, the library uses the symmetric +bidiagonalization and QR reduction method. This is described in Golub +& van Loan, section 8.3. The computed eigenvalues are accurate to an +absolute accuracy of :math:`\epsilon ||A||_2`, where :math:`\epsilon` is +the machine precision. + +.. type:: gsl_eigen_symm_workspace + + This workspace contains internal parameters used for solving symmetric eigenvalue + problems. + +.. function:: gsl_eigen_symm_workspace * gsl_eigen_symm_alloc (const size_t n) + + This function allocates a workspace for computing eigenvalues of + :data:`n`-by-:data:`n` real symmetric matrices. The size of the workspace + is :math:`O(2n)`. + +.. function:: void gsl_eigen_symm_free (gsl_eigen_symm_workspace * w) + + This function frees the memory associated with the workspace :data:`w`. + +.. function:: int gsl_eigen_symm (gsl_matrix * A, gsl_vector * eval, gsl_eigen_symm_workspace * w) + + This function computes the eigenvalues of the real symmetric matrix + :data:`A`. Additional workspace of the appropriate size must be provided + in :data:`w`. The diagonal and lower triangular part of :data:`A` are + destroyed during the computation, but the strict upper triangular part + is not referenced. The eigenvalues are stored in the vector :data:`eval` + and are unordered. + +.. type:: gsl_eigen_symmv_workspace + + This workspace contains internal parameters used for solving symmetric eigenvalue + and eigenvector problems. + +.. function:: gsl_eigen_symmv_workspace * gsl_eigen_symmv_alloc (const size_t n) + + This function allocates a workspace for computing eigenvalues and + eigenvectors of :data:`n`-by-:data:`n` real symmetric matrices. The size of + the workspace is :math:`O(4n)`. + +.. function:: void gsl_eigen_symmv_free (gsl_eigen_symmv_workspace * w) + + This function frees the memory associated with the workspace :data:`w`. + +.. function:: int gsl_eigen_symmv (gsl_matrix * A, gsl_vector * eval, gsl_matrix * evec, gsl_eigen_symmv_workspace * w) + + This function computes the eigenvalues and eigenvectors of the real + symmetric matrix :data:`A`. Additional workspace of the appropriate size + must be provided in :data:`w`. The diagonal and lower triangular part of + :data:`A` are destroyed during the computation, but the strict upper + triangular part is not referenced. The eigenvalues are stored in the + vector :data:`eval` and are unordered. The corresponding eigenvectors are + stored in the columns of the matrix :data:`evec`. For example, the + eigenvector in the first column corresponds to the first eigenvalue. + The eigenvectors are guaranteed to be mutually orthogonal and normalised + to unit magnitude. + +Complex Hermitian Matrices +========================== + +For hermitian matrices, the library uses the complex form of +the symmetric bidiagonalization and QR reduction method. + +.. index:: + single: hermitian matrix, complex, eigensystem + single: complex hermitian matrix, eigensystem + +.. type:: gsl_eigen_herm_workspace + + This workspace contains internal parameters used for solving hermitian eigenvalue + problems. + +.. function:: gsl_eigen_herm_workspace * gsl_eigen_herm_alloc (const size_t n) + + This function allocates a workspace for computing eigenvalues of + :data:`n`-by-:data:`n` complex hermitian matrices. The size of the workspace + is :math:`O(3n)`. + +.. function:: void gsl_eigen_herm_free (gsl_eigen_herm_workspace * w) + + This function frees the memory associated with the workspace :data:`w`. + +.. function:: int gsl_eigen_herm (gsl_matrix_complex * A, gsl_vector * eval, gsl_eigen_herm_workspace * w) + + This function computes the eigenvalues of the complex hermitian matrix + :data:`A`. Additional workspace of the appropriate size must be provided + in :data:`w`. The diagonal and lower triangular part of :data:`A` are + destroyed during the computation, but the strict upper triangular part + is not referenced. The imaginary parts of the diagonal are assumed to be + zero and are not referenced. The eigenvalues are stored in the vector + :data:`eval` and are unordered. + +.. type:: gsl_eigen_hermv_workspace + + This workspace contains internal parameters used for solving hermitian eigenvalue + and eigenvector problems. + +.. function:: gsl_eigen_hermv_workspace * gsl_eigen_hermv_alloc (const size_t n) + + This function allocates a workspace for computing eigenvalues and + eigenvectors of :data:`n`-by-:data:`n` complex hermitian matrices. The size of + the workspace is :math:`O(5n)`. + +.. function:: void gsl_eigen_hermv_free (gsl_eigen_hermv_workspace * w) + + This function frees the memory associated with the workspace :data:`w`. + +.. function:: int gsl_eigen_hermv (gsl_matrix_complex * A, gsl_vector * eval, gsl_matrix_complex * evec, gsl_eigen_hermv_workspace * w) + + This function computes the eigenvalues and eigenvectors of the complex + hermitian matrix :data:`A`. Additional workspace of the appropriate size + must be provided in :data:`w`. The diagonal and lower triangular part of + :data:`A` are destroyed during the computation, but the strict upper + triangular part is not referenced. The imaginary parts of the diagonal + are assumed to be zero and are not referenced. The eigenvalues are + stored in the vector :data:`eval` and are unordered. The corresponding + complex eigenvectors are stored in the columns of the matrix :data:`evec`. + For example, the eigenvector in the first column corresponds to the + first eigenvalue. The eigenvectors are guaranteed to be mutually + orthogonal and normalised to unit magnitude. + +Real Nonsymmetric Matrices +========================== +.. index:: + single: nonsymmetric matrix, real, eigensystem + single: real nonsymmetric matrix, eigensystem + +The solution of the real nonsymmetric eigensystem problem for a +matrix :math:`A` involves computing the Schur decomposition + +.. math:: A = Z T Z^T + +where :math:`Z` is an orthogonal matrix of Schur vectors and :math:`T`, +the Schur form, is quasi upper triangular with diagonal +:math:`1`-by-:math:`1` blocks which are real eigenvalues of :math:`A`, and +diagonal :math:`2`-by-:math:`2` blocks whose eigenvalues are complex +conjugate eigenvalues of :math:`A`. The algorithm used is the double-shift +Francis method. + +.. type:: gsl_eigen_nonsymm_workspace + + This workspace contains internal parameters used for solving nonsymmetric eigenvalue + problems. + +.. function:: gsl_eigen_nonsymm_workspace * gsl_eigen_nonsymm_alloc (const size_t n) + + This function allocates a workspace for computing eigenvalues of + :data:`n`-by-:data:`n` real nonsymmetric matrices. The size of the workspace + is :math:`O(2n)`. + +.. function:: void gsl_eigen_nonsymm_free (gsl_eigen_nonsymm_workspace * w) + + This function frees the memory associated with the workspace :data:`w`. + +.. function:: void gsl_eigen_nonsymm_params (const int compute_t, const int balance, gsl_eigen_nonsymm_workspace * w) + + This function sets some parameters which determine how the eigenvalue + problem is solved in subsequent calls to :func:`gsl_eigen_nonsymm`. + + If :data:`compute_t` is set to 1, the full Schur form :math:`T` will be + computed by :func:`gsl_eigen_nonsymm`. If it is set to 0, + :math:`T` will not be computed (this is the default setting). Computing + the full Schur form :math:`T` requires approximately 1.5--2 times the + number of flops. + + If :data:`balance` is set to 1, a balancing transformation is applied + to the matrix prior to computing eigenvalues. This transformation is + designed to make the rows and columns of the matrix have comparable + norms, and can result in more accurate eigenvalues for matrices + whose entries vary widely in magnitude. See :ref:`Balancing ` for more + information. Note that the balancing transformation does not preserve + the orthogonality of the Schur vectors, so if you wish to compute the + Schur vectors with :func:`gsl_eigen_nonsymm_Z` you will obtain the Schur + vectors of the balanced matrix instead of the original matrix. The + relationship will be + + .. math:: T = Q^T D^{-1} A D Q + + where :data:`Q` is the matrix of Schur vectors for the balanced matrix, and + :data:`D` is the balancing transformation. Then :func:`gsl_eigen_nonsymm_Z` + will compute a matrix :data:`Z` which satisfies + + .. math:: T = Z^{-1} A Z + + with :math:`Z = D Q`. Note that :data:`Z` will not be orthogonal. For + this reason, balancing is not performed by default. + +.. function:: int gsl_eigen_nonsymm (gsl_matrix * A, gsl_vector_complex * eval, gsl_eigen_nonsymm_workspace * w) + + This function computes the eigenvalues of the real nonsymmetric matrix + :data:`A` and stores them in the vector :data:`eval`. If :math:`T` is + desired, it is stored in the upper portion of :data:`A` on output. + Otherwise, on output, the diagonal of :data:`A` will contain the + :math:`1`-by-:math:`1` real eigenvalues and :math:`2`-by-:math:`2` + complex conjugate eigenvalue systems, and the rest of :data:`A` is + destroyed. In rare cases, this function may fail to find all + eigenvalues. If this happens, an error code is returned + and the number of converged eigenvalues is stored in :code:`w->n_evals`. + The converged eigenvalues are stored in the beginning of :data:`eval`. + +.. function:: int gsl_eigen_nonsymm_Z (gsl_matrix * A, gsl_vector_complex * eval, gsl_matrix * Z, gsl_eigen_nonsymm_workspace * w) + + This function is identical to :func:`gsl_eigen_nonsymm` except that it also + computes the Schur vectors and stores them into :data:`Z`. + +.. type:: gsl_eigen_nonsymmv_workspace + + This workspace contains internal parameters used for solving nonsymmetric eigenvalue + and eigenvector problems. + +.. function:: gsl_eigen_nonsymmv_workspace * gsl_eigen_nonsymmv_alloc (const size_t n) + + This function allocates a workspace for computing eigenvalues and + eigenvectors of :data:`n`-by-:data:`n` real nonsymmetric matrices. The + size of the workspace is :math:`O(5n)`. + +.. function:: void gsl_eigen_nonsymmv_free (gsl_eigen_nonsymmv_workspace * w) + + This function frees the memory associated with the workspace :data:`w`. + +.. function:: void gsl_eigen_nonsymmv_params (const int balance, gsl_eigen_nonsymm_workspace * w) + + This function sets parameters which determine how the eigenvalue + problem is solved in subsequent calls to :func:`gsl_eigen_nonsymmv`. + If :data:`balance` is set to 1, a balancing transformation is applied + to the matrix. See :func:`gsl_eigen_nonsymm_params` for more information. + Balancing is turned off by default since it does not preserve the + orthogonality of the Schur vectors. + +.. function:: int gsl_eigen_nonsymmv (gsl_matrix * A, gsl_vector_complex * eval, gsl_matrix_complex * evec, gsl_eigen_nonsymmv_workspace * w) + + This function computes eigenvalues and right eigenvectors of the + :data:`n`-by-:data:`n` real nonsymmetric matrix :data:`A`. It first calls + :func:`gsl_eigen_nonsymm` to compute the eigenvalues, Schur form :math:`T`, and + Schur vectors. Then it finds eigenvectors of :math:`T` and backtransforms + them using the Schur vectors. The Schur vectors are destroyed in the + process, but can be saved by using :func:`gsl_eigen_nonsymmv_Z`. The + computed eigenvectors are normalized to have unit magnitude. On + output, the upper portion of :data:`A` contains the Schur form + :math:`T`. If :func:`gsl_eigen_nonsymm` fails, no eigenvectors are + computed, and an error code is returned. + +.. function:: int gsl_eigen_nonsymmv_Z (gsl_matrix * A, gsl_vector_complex * eval, gsl_matrix_complex * evec, gsl_matrix * Z, gsl_eigen_nonsymmv_workspace * w) + + This function is identical to :func:`gsl_eigen_nonsymmv` except that it also saves + the Schur vectors into :data:`Z`. + +Real Generalized Symmetric-Definite Eigensystems +================================================ +.. index:: generalized symmetric eigensystems + +The real generalized symmetric-definite eigenvalue problem is to find +eigenvalues :math:`\lambda` and eigenvectors :math:`x` such that + +.. math:: A x = \lambda B x + +where :math:`A` and :math:`B` are symmetric matrices, and :math:`B` is +positive-definite. This problem reduces to the standard symmetric +eigenvalue problem by applying the Cholesky decomposition to :math:`B`: + +.. only:: not texinfo + + .. math:: + + A x & = \lambda B x \\ + A x & = \lambda L L^T x \\ + \left( L^{-1} A L^{-T} \right) L^T x & = \lambda L^T x + +.. only:: texinfo + + :: + + A x = \lambda B x + A x = \lambda L L^T x + ( L^{-1} A L^{-T} ) L^T x = \lambda L^T x + +Therefore, the problem becomes :math:`C y = \lambda y` where +:math:`C = L^{-1} A L^{-T}` +is symmetric, and :math:`y = L^T x`. The standard +symmetric eigensolver can be applied to the matrix :math:`C`. +The resulting eigenvectors are backtransformed to find the +vectors of the original problem. The eigenvalues and eigenvectors +of the generalized symmetric-definite eigenproblem are always real. + +.. type:: gsl_eigen_gensymm_workspace + + This workspace contains internal parameters used for solving generalized symmetric eigenvalue + problems. + +.. function:: gsl_eigen_gensymm_workspace * gsl_eigen_gensymm_alloc (const size_t n) + + This function allocates a workspace for computing eigenvalues of + :data:`n`-by-:data:`n` real generalized symmetric-definite eigensystems. The + size of the workspace is :math:`O(2n)`. + +.. function:: void gsl_eigen_gensymm_free (gsl_eigen_gensymm_workspace * w) + + This function frees the memory associated with the workspace :data:`w`. + +.. function:: int gsl_eigen_gensymm (gsl_matrix * A, gsl_matrix * B, gsl_vector * eval, gsl_eigen_gensymm_workspace * w) + + This function computes the eigenvalues of the real generalized + symmetric-definite matrix pair (:data:`A`, :data:`B`), and stores them + in :data:`eval`, using the method outlined above. On output, :data:`B` + contains its Cholesky decomposition and :data:`A` is destroyed. + +.. type:: gsl_eigen_gensymmv_workspace + + This workspace contains internal parameters used for solving generalized symmetric eigenvalue + and eigenvector problems. + +.. function:: gsl_eigen_gensymmv_workspace * gsl_eigen_gensymmv_alloc (const size_t n) + + This function allocates a workspace for computing eigenvalues and + eigenvectors of :data:`n`-by-:data:`n` real generalized symmetric-definite + eigensystems. The size of the workspace is :math:`O(4n)`. + +.. function:: void gsl_eigen_gensymmv_free (gsl_eigen_gensymmv_workspace * w) + + This function frees the memory associated with the workspace :data:`w`. + +.. function:: int gsl_eigen_gensymmv (gsl_matrix * A, gsl_matrix * B, gsl_vector * eval, gsl_matrix * evec, gsl_eigen_gensymmv_workspace * w) + + This function computes the eigenvalues and eigenvectors of the real + generalized symmetric-definite matrix pair (:data:`A`, :data:`B`), and + stores them in :data:`eval` and :data:`evec` respectively. The computed + eigenvectors are normalized to have unit magnitude. On output, + :data:`B` contains its Cholesky decomposition and :data:`A` is destroyed. + +Complex Generalized Hermitian-Definite Eigensystems +=================================================== +.. index:: generalized hermitian definite eigensystems + +The complex generalized hermitian-definite eigenvalue problem is to find +eigenvalues :math:`\lambda` and eigenvectors :math:`x` such that + +.. math:: A x = \lambda B x + +where :math:`A` and :math:`B` are hermitian matrices, and :math:`B` is +positive-definite. Similarly to the real case, this can be reduced +to :math:`C y = \lambda y` where +:math:`C = L^{-1} A L^{-\dagger}` +is hermitian, and +:math:`y = L^{\dagger} x`. The standard +hermitian eigensolver can be applied to the matrix :math:`C`. +The resulting eigenvectors are backtransformed to find the +vectors of the original problem. The eigenvalues +of the generalized hermitian-definite eigenproblem are always real. + +.. type:: gsl_eigen_genherm_workspace + + This workspace contains internal parameters used for solving generalized hermitian eigenvalue + problems. + +.. function:: gsl_eigen_genherm_workspace * gsl_eigen_genherm_alloc (const size_t n) + + This function allocates a workspace for computing eigenvalues of + :data:`n`-by-:data:`n` complex generalized hermitian-definite eigensystems. The + size of the workspace is :math:`O(3n)`. + +.. function:: void gsl_eigen_genherm_free (gsl_eigen_genherm_workspace * w) + + This function frees the memory associated with the workspace :data:`w`. + +.. function:: int gsl_eigen_genherm (gsl_matrix_complex * A, gsl_matrix_complex * B, gsl_vector * eval, gsl_eigen_genherm_workspace * w) + + This function computes the eigenvalues of the complex generalized + hermitian-definite matrix pair (:data:`A`, :data:`B`), and stores them + in :data:`eval`, using the method outlined above. On output, :data:`B` + contains its Cholesky decomposition and :data:`A` is destroyed. + +.. type:: gsl_eigen_genhermv_workspace + + This workspace contains internal parameters used for solving generalized hermitian eigenvalue + and eigenvector problems. + +.. function:: gsl_eigen_genhermv_workspace * gsl_eigen_genhermv_alloc (const size_t n) + + This function allocates a workspace for computing eigenvalues and + eigenvectors of :data:`n`-by-:data:`n` complex generalized hermitian-definite + eigensystems. The size of the workspace is :math:`O(5n)`. + +.. function:: void gsl_eigen_genhermv_free (gsl_eigen_genhermv_workspace * w) + + This function frees the memory associated with the workspace :data:`w`. + +.. function:: int gsl_eigen_genhermv (gsl_matrix_complex * A, gsl_matrix_complex * B, gsl_vector * eval, gsl_matrix_complex * evec, gsl_eigen_genhermv_workspace * w) + + This function computes the eigenvalues and eigenvectors of the complex + generalized hermitian-definite matrix pair (:data:`A`, :data:`B`), and + stores them in :data:`eval` and :data:`evec` respectively. The computed + eigenvectors are normalized to have unit magnitude. On output, + :data:`B` contains its Cholesky decomposition and :data:`A` is destroyed. + +Real Generalized Nonsymmetric Eigensystems +========================================== +.. index:: generalized eigensystems + +Given two square matrices (:math:`A`, :math:`B`), the generalized +nonsymmetric eigenvalue problem is to find eigenvalues :math:`\lambda` and +eigenvectors :math:`x` such that + +.. math:: A x = \lambda B x + +We may also define the problem as finding eigenvalues :math:`\mu` and +eigenvectors :math:`y` such that + +.. math:: \mu A y = B y + +Note that these two problems are equivalent (with :math:`\lambda = 1/\mu`) +if neither :math:`\lambda` nor :math:`\mu` is zero. If say, :math:`\lambda` +is zero, then it is still a well defined eigenproblem, but its alternate +problem involving :math:`\mu` is not. Therefore, to allow for zero +(and infinite) eigenvalues, the problem which is actually solved is + +.. math:: \beta A x = \alpha B x + +The eigensolver routines below will return two values :math:`\alpha` +and :math:`\beta` and leave it to the user to perform the divisions +:math:`\lambda = \alpha / \beta` and :math:`\mu = \beta / \alpha`. + +If the determinant of the matrix pencil :math:`A - \lambda B` is zero +for all :math:`\lambda`, the problem is said to be singular; otherwise +it is called regular. Singularity normally leads to some +:math:`\alpha = \beta = 0` which means the eigenproblem is ill-conditioned +and generally does not have well defined eigenvalue solutions. The +routines below are intended for regular matrix pencils and could yield +unpredictable results when applied to singular pencils. + +The solution of the real generalized nonsymmetric eigensystem problem for a +matrix pair :math:`(A, B)` involves computing the generalized Schur +decomposition + +.. only:: not texinfo + + .. math:: + + A &= Q S Z^T \\ + B &= Q T Z^T + +.. only:: texinfo + + :: + + A = Q S Z^T + B = Q T Z^T + +where :math:`Q` and :math:`Z` are orthogonal matrices of left and right +Schur vectors respectively, and :math:`(S, T)` is the generalized Schur +form whose diagonal elements give the :math:`\alpha` and :math:`\beta` +values. The algorithm used is the QZ method due to Moler and Stewart +(see references). + +.. type:: gsl_eigen_gen_workspace + + This workspace contains internal parameters used for solving generalized eigenvalue + problems. + +.. function:: gsl_eigen_gen_workspace * gsl_eigen_gen_alloc (const size_t n) + + This function allocates a workspace for computing eigenvalues of + :data:`n`-by-:data:`n` real generalized nonsymmetric eigensystems. The + size of the workspace is :math:`O(n)`. + +.. function:: void gsl_eigen_gen_free (gsl_eigen_gen_workspace * w) + + This function frees the memory associated with the workspace :data:`w`. + +.. function:: void gsl_eigen_gen_params (const int compute_s, const int compute_t, const int balance, gsl_eigen_gen_workspace * w) + + This function sets some parameters which determine how the eigenvalue + problem is solved in subsequent calls to :func:`gsl_eigen_gen`. + + If :data:`compute_s` is set to 1, the full Schur form :math:`S` will be + computed by :func:`gsl_eigen_gen`. If it is set to 0, + :math:`S` will not be computed (this is the default setting). :math:`S` + is a quasi upper triangular matrix with 1-by-1 and 2-by-2 blocks + on its diagonal. 1-by-1 blocks correspond to real eigenvalues, and + 2-by-2 blocks correspond to complex eigenvalues. + + If :data:`compute_t` is set to 1, the full Schur form :math:`T` will be + computed by :func:`gsl_eigen_gen`. If it is set to 0, + :math:`T` will not be computed (this is the default setting). :math:`T` + is an upper triangular matrix with non-negative elements on its diagonal. + Any 2-by-2 blocks in :math:`S` will correspond to a 2-by-2 diagonal + block in :math:`T`. + + The :data:`balance` parameter is currently ignored, since generalized + balancing is not yet implemented. + +.. function:: int gsl_eigen_gen (gsl_matrix * A, gsl_matrix * B, gsl_vector_complex * alpha, gsl_vector * beta, gsl_eigen_gen_workspace * w) + + This function computes the eigenvalues of the real generalized nonsymmetric + matrix pair (:data:`A`, :data:`B`), and stores them as pairs in + (:data:`alpha`, :data:`beta`), where :data:`alpha` is complex and :data:`beta` is + real. If :math:`\beta_i` is non-zero, then + :math:`\lambda = \alpha_i / \beta_i` is an eigenvalue. Likewise, + if :math:`\alpha_i` is non-zero, then + :math:`\mu = \beta_i / \alpha_i` is an eigenvalue of the alternate + problem :math:`\mu A y = B y`. The elements of :data:`beta` are normalized + to be non-negative. + + If :math:`S` is desired, it is stored in :data:`A` on output. If :math:`T` + is desired, it is stored in :data:`B` on output. The ordering of + eigenvalues in (:data:`alpha`, :data:`beta`) follows the ordering + of the diagonal blocks in the Schur forms :math:`S` and :math:`T`. In rare + cases, this function may fail to find all eigenvalues. If this occurs, an + error code is returned. + +.. function:: int gsl_eigen_gen_QZ (gsl_matrix * A, gsl_matrix * B, gsl_vector_complex * alpha, gsl_vector * beta, gsl_matrix * Q, gsl_matrix * Z, gsl_eigen_gen_workspace * w) + + This function is identical to :func:`gsl_eigen_gen` except that it also + computes the left and right Schur vectors and stores them into :data:`Q` + and :data:`Z` respectively. + +.. type:: gsl_eigen_genv_workspace + + This workspace contains internal parameters used for solving generalized eigenvalue + and eigenvector problems. + +.. function:: gsl_eigen_genv_workspace * gsl_eigen_genv_alloc (const size_t n) + + This function allocates a workspace for computing eigenvalues and + eigenvectors of :data:`n`-by-:data:`n` real generalized nonsymmetric + eigensystems. The size of the workspace is :math:`O(7n)`. + +.. function:: void gsl_eigen_genv_free (gsl_eigen_genv_workspace * w) + + This function frees the memory associated with the workspace :data:`w`. + +.. function:: int gsl_eigen_genv (gsl_matrix * A, gsl_matrix * B, gsl_vector_complex * alpha, gsl_vector * beta, gsl_matrix_complex * evec, gsl_eigen_genv_workspace * w) + + This function computes eigenvalues and right eigenvectors of the + :data:`n`-by-:data:`n` real generalized nonsymmetric matrix pair + (:data:`A`, :data:`B`). The eigenvalues are stored in (:data:`alpha`, :data:`beta`) + and the eigenvectors are stored in :data:`evec`. It first calls + :func:`gsl_eigen_gen` to compute the eigenvalues, Schur forms, and + Schur vectors. Then it finds eigenvectors of the Schur forms and + backtransforms them using the Schur vectors. The Schur vectors are + destroyed in the process, but can be saved by using + :func:`gsl_eigen_genv_QZ`. The computed eigenvectors are normalized + to have unit magnitude. On output, (:data:`A`, :data:`B`) contains + the generalized Schur form (:math:`S`, :math:`T`). If :func:`gsl_eigen_gen` + fails, no eigenvectors are computed, and an error code is returned. + +.. function:: int gsl_eigen_genv_QZ (gsl_matrix * A, gsl_matrix * B, gsl_vector_complex * alpha, gsl_vector * beta, gsl_matrix_complex * evec, gsl_matrix * Q, gsl_matrix * Z, gsl_eigen_genv_workspace * w) + + This function is identical to :func:`gsl_eigen_genv` except that it also + computes the left and right Schur vectors and stores them into :data:`Q` + and :data:`Z` respectively. + +Sorting Eigenvalues and Eigenvectors +==================================== +.. index:: sorting eigenvalues and eigenvectors + +.. function:: int gsl_eigen_symmv_sort (gsl_vector * eval, gsl_matrix * evec, gsl_eigen_sort_t sort_type) + + This function simultaneously sorts the eigenvalues stored in the vector + :data:`eval` and the corresponding real eigenvectors stored in the columns + of the matrix :data:`evec` into ascending or descending order according to + the value of the parameter :data:`sort_type`, + + .. type:: gsl_eigen_sort_t + + ================================= =================================== + :macro:`GSL_EIGEN_SORT_VAL_ASC` ascending order in numerical value + :macro:`GSL_EIGEN_SORT_VAL_DESC` descending order in numerical value + :macro:`GSL_EIGEN_SORT_ABS_ASC` ascending order in magnitude + :macro:`GSL_EIGEN_SORT_ABS_DESC` descending order in magnitude + ================================= =================================== + +.. function:: int gsl_eigen_hermv_sort (gsl_vector * eval, gsl_matrix_complex * evec, gsl_eigen_sort_t sort_type) + + This function simultaneously sorts the eigenvalues stored in the vector + :data:`eval` and the corresponding complex eigenvectors stored in the + columns of the matrix :data:`evec` into ascending or descending order + according to the value of the parameter :data:`sort_type` as shown above. + +.. function:: int gsl_eigen_nonsymmv_sort (gsl_vector_complex * eval, gsl_matrix_complex * evec, gsl_eigen_sort_t sort_type) + + This function simultaneously sorts the eigenvalues stored in the vector + :data:`eval` and the corresponding complex eigenvectors stored in the + columns of the matrix :data:`evec` into ascending or descending order + according to the value of the parameter :data:`sort_type` as shown above. + Only :macro:`GSL_EIGEN_SORT_ABS_ASC` and :macro:`GSL_EIGEN_SORT_ABS_DESC` are + supported due to the eigenvalues being complex. + +.. function:: int gsl_eigen_gensymmv_sort (gsl_vector * eval, gsl_matrix * evec, gsl_eigen_sort_t sort_type) + + This function simultaneously sorts the eigenvalues stored in the vector + :data:`eval` and the corresponding real eigenvectors stored in the columns + of the matrix :data:`evec` into ascending or descending order according to + the value of the parameter :data:`sort_type` as shown above. + +.. function:: int gsl_eigen_genhermv_sort (gsl_vector * eval, gsl_matrix_complex * evec, gsl_eigen_sort_t sort_type) + + This function simultaneously sorts the eigenvalues stored in the vector + :data:`eval` and the corresponding complex eigenvectors stored in the columns + of the matrix :data:`evec` into ascending or descending order according to + the value of the parameter :data:`sort_type` as shown above. + +.. function:: int gsl_eigen_genv_sort (gsl_vector_complex * alpha, gsl_vector * beta, gsl_matrix_complex * evec, gsl_eigen_sort_t sort_type) + + This function simultaneously sorts the eigenvalues stored in the vectors + (:data:`alpha`, :data:`beta`) and the corresponding complex eigenvectors + stored in the columns of the matrix :data:`evec` into ascending or + descending order according to the value of the parameter :data:`sort_type` + as shown above. Only :macro:`GSL_EIGEN_SORT_ABS_ASC` and + :macro:`GSL_EIGEN_SORT_ABS_DESC` are supported due to the eigenvalues being + complex. + +Examples +======== + +The following program computes the eigenvalues and eigenvectors of the 4-th order Hilbert matrix, :math:`H(i,j) = 1/(i + j + 1)`. + +.. include:: examples/eigen.c + :code: + +Here is the beginning of the output from the program:: + + $ ./a.out + eigenvalue = 9.67023e-05 + eigenvector = + -0.0291933 + 0.328712 + -0.791411 + 0.514553 + ... + +This can be compared with the corresponding output from |octave|:: + + octave> [v,d] = eig(hilb(4)); + octave> diag(d) + ans = + + 9.6702e-05 + 6.7383e-03 + 1.6914e-01 + 1.5002e+00 + + octave> v + v = + + 0.029193 0.179186 -0.582076 0.792608 + -0.328712 -0.741918 0.370502 0.451923 + 0.791411 0.100228 0.509579 0.322416 + -0.514553 0.638283 0.514048 0.252161 + +Note that the eigenvectors can differ by a change of sign, since the +sign of an eigenvector is arbitrary. + +The following program illustrates the use of the nonsymmetric +eigensolver, by computing the eigenvalues and eigenvectors of +the Vandermonde matrix +:math:`V(x;i,j) = x_i^{n - j}` +with :math:`x = (-1,-2,3,4)`. + +.. include:: examples/eigen_nonsymm.c + :code: + +Here is the beginning of the output from the program:: + + $ ./a.out + eigenvalue = -6.41391 + 0i + eigenvector = + -0.0998822 + 0i + -0.111251 + 0i + 0.292501 + 0i + 0.944505 + 0i + eigenvalue = 5.54555 + 3.08545i + eigenvector = + -0.043487 + -0.0076308i + 0.0642377 + -0.142127i + -0.515253 + 0.0405118i + -0.840592 + -0.00148565i + ... + +This can be compared with the corresponding output from |octave|:: + + octave> [v,d] = eig(vander([-1 -2 3 4])); + octave> diag(d) + ans = + + -6.4139 + 0.0000i + 5.5456 + 3.0854i + 5.5456 - 3.0854i + 2.3228 + 0.0000i + + octave> v + v = + + Columns 1 through 3: + + -0.09988 + 0.00000i -0.04350 - 0.00755i -0.04350 + 0.00755i + -0.11125 + 0.00000i 0.06399 - 0.14224i 0.06399 + 0.14224i + 0.29250 + 0.00000i -0.51518 + 0.04142i -0.51518 - 0.04142i + 0.94451 + 0.00000i -0.84059 + 0.00000i -0.84059 - 0.00000i + + Column 4: + + -0.14493 + 0.00000i + 0.35660 + 0.00000i + 0.91937 + 0.00000i + 0.08118 + 0.00000i + +Note that the eigenvectors corresponding to the eigenvalue +:math:`5.54555 + 3.08545i` differ by the multiplicative constant +:math:`0.9999984 + 0.0017674i` which is an arbitrary phase factor +of magnitude 1. + +References and Further Reading +============================== + +Further information on the algorithms described in this section can be +found in the following book, + +* G. H. Golub, C. F. Van Loan, "Matrix Computations" (3rd Ed, 1996), + Johns Hopkins University Press, ISBN 0-8018-5414-8. + +Further information on the generalized eigensystems QZ algorithm +can be found in this paper, + +* C. Moler, G. Stewart, "An Algorithm for Generalized Matrix Eigenvalue + Problems", SIAM J. Numer. Anal., Vol 10, No 2, 1973. + +.. index:: LAPACK + +Eigensystem routines for very large matrices can be found in the +Fortran library |lapack|. The |lapack| library is described in, + +* LAPACK Users' Guide (Third Edition, 1999), Published by SIAM, + ISBN 0-89871-447-8. + +The |lapack| source code can be found at the website http://www.netlib.org/lapack +along with an online copy of the users guide. diff --git a/gsl-2.5/doc/err.rst b/gsl-2.5/doc/err.rst new file mode 100644 index 00000000..809f6f3d --- /dev/null +++ b/gsl-2.5/doc/err.rst @@ -0,0 +1,278 @@ +.. index:: error handling + +************** +Error Handling +************** + +This chapter describes the way that GSL functions report and handle +errors. By examining the status information returned by every function +you can determine whether it succeeded or failed, and if it failed you +can find out what the precise cause of failure was. You can also define +your own error handling functions to modify the default behavior of the +library. + +The functions described in this section are declared in the header file +:file:`gsl_errno.h`. + +Error Reporting +=============== + +The library follows the thread-safe error reporting conventions of the +POSIX Threads library. Functions return a non-zero error code to +indicate an error and :code:`0` to indicate success:: + + int status = gsl_function (...) + + if (status) { /* an error occurred */ + ..... + /* status value specifies the type of error */ + } + +The routines report an error whenever they cannot perform the task +requested of them. For example, a root-finding function would return a +non-zero error code if could not converge to the requested accuracy, or +exceeded a limit on the number of iterations. Situations like this are +a normal occurrence when using any mathematical library and you should +check the return status of the functions that you call. + +Whenever a routine reports an error the return value specifies the type +of error. The return value is analogous to the value of the variable +:code:`errno` in the C library. The caller can examine the return code +and decide what action to take, including ignoring the error if it is +not considered serious. + +In addition to reporting errors by return codes the library also has an +error handler function :func:`gsl_error`. This function is called by +other library functions when they report an error, just before they +return to the caller. The default behavior of the error handler is to +print a message and abort the program:: + + gsl: file.c:67: ERROR: invalid argument supplied by user + Default GSL error handler invoked. + Aborted + +The purpose of the :func:`gsl_error` handler is to provide a function +where a breakpoint can be set that will catch library errors when +running under the debugger. It is not intended for use in production +programs, which should handle any errors using the return codes. + +.. index:: + single: error codes, reserved + +Error Codes +=========== + +The error code numbers returned by library functions are defined in +the file :file:`gsl_errno.h`. They all have the prefix :code:`GSL_` and +expand to non-zero constant integer values. Error codes above 1024 are +reserved for applications, and are not used by the library. Many of +the error codes use the same base name as the corresponding error code +in the C library. Here are some of the most common error codes, + +.. index:: + single: error codes + +.. var:: int GSL_EDOM + + Domain error; used by mathematical functions when an argument value does + not fall into the domain over which the function is defined (like + :data:`EDOM` in the C library) + +.. var:: int GSL_ERANGE + + Range error; used by mathematical functions when the result value is not + representable because of overflow or underflow (like :data:`ERANGE` in the C + library) + +.. var:: int GSL_ENOMEM + + No memory available. The system cannot allocate more virtual memory + because its capacity is full (like :data:`ENOMEM` in the C library). This error + is reported when a GSL routine encounters problems when trying to + allocate memory with :func:`malloc`. + +.. var:: int GSL_EINVAL + + Invalid argument. This is used to indicate various kinds of problems + with passing the wrong argument to a library function (like :data:`EINVAL` in the C + library). + +The error codes can be converted into an error message using the +function :func:`gsl_strerror`. + +.. function:: const char * gsl_strerror (const int gsl_errno) + + This function returns a pointer to a string describing the error code + :data:`gsl_errno`. For example:: + + printf ("error: %s\n", gsl_strerror (status)); + + would print an error message like :code:`error: output range error` for a + status value of :data:`GSL_ERANGE`. + +.. index:: error handlers + +Error Handlers +============== + +The default behavior of the GSL error handler is to print a short +message and call :func:`abort`. When this default is in use programs +will stop with a core-dump whenever a library routine reports an error. +This is intended as a fail-safe default for programs which do not check +the return status of library routines (we don't encourage you to write +programs this way). + +If you turn off the default error handler it is your responsibility to +check the return values of routines and handle them yourself. You can +also customize the error behavior by providing a new error handler. For +example, an alternative error handler could log all errors to a file, +ignore certain error conditions (such as underflows), or start the +debugger and attach it to the current process when an error occurs. + +All GSL error handlers have the type :code:`gsl_error_handler_t`, which is +defined in :file:`gsl_errno.h`, + +.. type:: gsl_error_handler_t + + This is the type of GSL error handler functions. An error handler will + be passed four arguments which specify the reason for the error (a + string), the name of the source file in which it occurred (also a + string), the line number in that file (an integer) and the error number + (an integer). The source file and line number are set at compile time + using the :code:`__FILE__` and :code:`__LINE__` directives in the + preprocessor. An error handler function returns type :code:`void`. + Error handler functions should be defined like this:: + + void handler (const char * reason, + const char * file, + int line, + int gsl_errno) + +To request the use of your own error handler you need to call the +function :func:`gsl_set_error_handler` which is also declared in +:file:`gsl_errno.h`, + +.. function:: gsl_error_handler_t * gsl_set_error_handler (gsl_error_handler_t * new_handler) + + This function sets a new error handler, :data:`new_handler`, for the GSL + library routines. The previous handler is returned (so that you can + restore it later). Note that the pointer to a user defined error + handler function is stored in a static variable, so there can be only + one error handler per program. This function should be not be used in + multi-threaded programs except to set up a program-wide error handler + from a master thread. The following example shows how to set and + restore a new error handler:: + + /* save original handler, install new handler */ + old_handler = gsl_set_error_handler (&my_handler); + + /* code uses new handler */ + ..... + + /* restore original handler */ + gsl_set_error_handler (old_handler); + + To use the default behavior (:func:`abort` on error) set the error + handler to :code:`NULL`:: + + old_handler = gsl_set_error_handler (NULL); + +.. function:: gsl_error_handler_t * gsl_set_error_handler_off () + + This function turns off the error handler by defining an error handler + which does nothing. This will cause the program to continue after any + error, so the return values from any library routines must be checked. + This is the recommended behavior for production programs. The previous + handler is returned (so that you can restore it later). + +The error behavior can be changed for specific applications by +recompiling the library with a customized definition of the +:code:`GSL_ERROR` macro in the file :file:`gsl_errno.h`. + +.. index:: error handling macros + +Using GSL error reporting in your own functions +=============================================== + +If you are writing numerical functions in a program which also uses GSL +code you may find it convenient to adopt the same error reporting +conventions as in the library. + +To report an error you need to call the function :func:`gsl_error` with a +string describing the error and then return an appropriate error code +from :file:`gsl_errno.h`, or a special value, such as :code:`NaN`. For +convenience the file :file:`gsl_errno.h` defines two macros which carry +out these steps: + +.. macro:: GSL_ERROR (reason, gsl_errno) + + This macro reports an error using the GSL conventions and returns a + status value of :code:`gsl_errno`. It expands to the following code fragment:: + + gsl_error (reason, __FILE__, __LINE__, gsl_errno); + return gsl_errno; + + The macro definition in :file:`gsl_errno.h` actually wraps the code + in a :code:`do { ... } while (0)` block to prevent possible + parsing problems. + +Here is an example of how the macro could be used to report that a +routine did not achieve a requested tolerance. To report the error the +routine needs to return the error code :code:`GSL_ETOL`:: + + if (residual > tolerance) + { + GSL_ERROR("residual exceeds tolerance", GSL_ETOL); + } + +.. macro:: GSL_ERROR_VAL (reason, gsl_errno, value) + + This macro is the same as :code:`GSL_ERROR` but returns a user-defined + value of :data:`value` instead of an error code. It can be used for + mathematical functions that return a floating point value. + +The following example shows how to return a :code:`NaN` at a mathematical +singularity using the :code:`GSL_ERROR_VAL` macro:: + + if (x == 0) + { + GSL_ERROR_VAL("argument lies on singularity", GSL_ERANGE, GSL_NAN); + } + + +Examples +======== + +Here is an example of some code which checks the return value of a +function where an error might be reported:: + + #include + #include + #include + + ... + int status; + size_t n = 37; + + gsl_set_error_handler_off(); + + status = gsl_fft_complex_radix2_forward (data, stride, n); + + if (status) { + if (status == GSL_EINVAL) { + fprintf (stderr, "invalid argument, n=%d\n", n); + } else { + fprintf (stderr, "failed, gsl_errno=%d\n", status); + } + exit (-1); + } + ... + +The function :func:`gsl_fft_complex_radix2_forward` only accepts integer lengths +which are a power of two. If the variable :code:`n` is not a power of +two then the call to the library function will return :code:`GSL_EINVAL`, +indicating that the length argument is invalid. The function call to +:func:`gsl_set_error_handler_off` stops the default error handler from +aborting the program. The :code:`else` clause catches any other possible +errors. + diff --git a/gsl-2.5/doc/examples/.deps/blas.Po b/gsl-2.5/doc/examples/.deps/blas.Po new file mode 100644 index 00000000..cbd86c3b --- /dev/null +++ b/gsl-2.5/doc/examples/.deps/blas.Po @@ -0,0 +1,233 @@ +blas.o: blas.c /usr/include/stdc-predef.h /usr/include/stdio.h \ + /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../../gsl/gsl_blas.h ../../gsl/gsl_vector.h \ + ../../gsl/gsl_vector_complex_long_double.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../../gsl/gsl_types.h \ + ../../gsl/gsl_errno.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../../gsl/gsl_complex.h ../../gsl/gsl_check_range.h \ + ../../gsl/gsl_vector_long_double.h ../../gsl/gsl_inline.h \ + ../../gsl/gsl_block_long_double.h ../../gsl/gsl_vector_complex.h \ + ../../gsl/gsl_block_complex_long_double.h \ + ../../gsl/gsl_vector_complex_double.h ../../gsl/gsl_vector_double.h \ + ../../gsl/gsl_block_double.h ../../gsl/gsl_block_complex_double.h \ + ../../gsl/gsl_vector_complex_float.h ../../gsl/gsl_vector_float.h \ + ../../gsl/gsl_block_float.h ../../gsl/gsl_block_complex_float.h \ + ../../gsl/gsl_vector_ulong.h ../../gsl/gsl_block_ulong.h \ + ../../gsl/gsl_vector_long.h ../../gsl/gsl_block_long.h \ + ../../gsl/gsl_vector_uint.h ../../gsl/gsl_block_uint.h \ + ../../gsl/gsl_vector_int.h ../../gsl/gsl_block_int.h \ + ../../gsl/gsl_vector_ushort.h ../../gsl/gsl_block_ushort.h \ + ../../gsl/gsl_vector_short.h ../../gsl/gsl_block_short.h \ + ../../gsl/gsl_vector_uchar.h ../../gsl/gsl_block_uchar.h \ + ../../gsl/gsl_vector_char.h ../../gsl/gsl_block_char.h \ + ../../gsl/gsl_matrix.h ../../gsl/gsl_matrix_complex_long_double.h \ + ../../gsl/gsl_matrix_complex_double.h \ + ../../gsl/gsl_matrix_complex_float.h ../../gsl/gsl_matrix_long_double.h \ + ../../gsl/gsl_matrix_double.h ../../gsl/gsl_matrix_float.h \ + ../../gsl/gsl_matrix_ulong.h ../../gsl/gsl_matrix_long.h \ + ../../gsl/gsl_matrix_uint.h ../../gsl/gsl_matrix_int.h \ + ../../gsl/gsl_matrix_ushort.h ../../gsl/gsl_matrix_short.h \ + ../../gsl/gsl_matrix_uchar.h ../../gsl/gsl_matrix_char.h \ + ../../gsl/gsl_blas_types.h ../../gsl/gsl_cblas.h + +/usr/include/stdc-predef.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../../gsl/gsl_blas.h: + +../../gsl/gsl_vector.h: + +../../gsl/gsl_vector_complex_long_double.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../../gsl/gsl_types.h: + +../../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../../gsl/gsl_complex.h: + +../../gsl/gsl_check_range.h: + +../../gsl/gsl_vector_long_double.h: + +../../gsl/gsl_inline.h: + +../../gsl/gsl_block_long_double.h: + +../../gsl/gsl_vector_complex.h: + +../../gsl/gsl_block_complex_long_double.h: + +../../gsl/gsl_vector_complex_double.h: + +../../gsl/gsl_vector_double.h: + +../../gsl/gsl_block_double.h: + +../../gsl/gsl_block_complex_double.h: + +../../gsl/gsl_vector_complex_float.h: + +../../gsl/gsl_vector_float.h: + +../../gsl/gsl_block_float.h: + +../../gsl/gsl_block_complex_float.h: + +../../gsl/gsl_vector_ulong.h: + +../../gsl/gsl_block_ulong.h: + +../../gsl/gsl_vector_long.h: + +../../gsl/gsl_block_long.h: + +../../gsl/gsl_vector_uint.h: + +../../gsl/gsl_block_uint.h: + +../../gsl/gsl_vector_int.h: + +../../gsl/gsl_block_int.h: + +../../gsl/gsl_vector_ushort.h: + +../../gsl/gsl_block_ushort.h: + +../../gsl/gsl_vector_short.h: + +../../gsl/gsl_block_short.h: + +../../gsl/gsl_vector_uchar.h: + +../../gsl/gsl_block_uchar.h: + +../../gsl/gsl_vector_char.h: + +../../gsl/gsl_block_char.h: + +../../gsl/gsl_matrix.h: + +../../gsl/gsl_matrix_complex_long_double.h: + +../../gsl/gsl_matrix_complex_double.h: + +../../gsl/gsl_matrix_complex_float.h: + +../../gsl/gsl_matrix_long_double.h: + +../../gsl/gsl_matrix_double.h: + +../../gsl/gsl_matrix_float.h: + +../../gsl/gsl_matrix_ulong.h: + +../../gsl/gsl_matrix_long.h: + +../../gsl/gsl_matrix_uint.h: + +../../gsl/gsl_matrix_int.h: + +../../gsl/gsl_matrix_ushort.h: + +../../gsl/gsl_matrix_short.h: + +../../gsl/gsl_matrix_uchar.h: + +../../gsl/gsl_matrix_char.h: + +../../gsl/gsl_blas_types.h: + +../../gsl/gsl_cblas.h: diff --git a/gsl-2.5/doc/examples/.deps/block.Po b/gsl-2.5/doc/examples/.deps/block.Po new file mode 100644 index 00000000..f5271d8f --- /dev/null +++ b/gsl-2.5/doc/examples/.deps/block.Po @@ -0,0 +1,143 @@ +block.o: block.c /usr/include/stdc-predef.h /usr/include/stdio.h \ + /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../../gsl/gsl_block.h \ + ../../gsl/gsl_block_complex_long_double.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../../gsl/gsl_errno.h \ + /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../../gsl/gsl_types.h ../../gsl/gsl_block_complex_double.h \ + ../../gsl/gsl_block_complex_float.h ../../gsl/gsl_block_long_double.h \ + ../../gsl/gsl_block_double.h ../../gsl/gsl_block_float.h \ + ../../gsl/gsl_block_ulong.h ../../gsl/gsl_block_long.h \ + ../../gsl/gsl_block_uint.h ../../gsl/gsl_block_int.h \ + ../../gsl/gsl_block_ushort.h ../../gsl/gsl_block_short.h \ + ../../gsl/gsl_block_uchar.h ../../gsl/gsl_block_char.h + +/usr/include/stdc-predef.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../../gsl/gsl_block.h: + +../../gsl/gsl_block_complex_long_double.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../../gsl/gsl_types.h: + +../../gsl/gsl_block_complex_double.h: + +../../gsl/gsl_block_complex_float.h: + +../../gsl/gsl_block_long_double.h: + +../../gsl/gsl_block_double.h: + +../../gsl/gsl_block_float.h: + +../../gsl/gsl_block_ulong.h: + +../../gsl/gsl_block_long.h: + +../../gsl/gsl_block_uint.h: + +../../gsl/gsl_block_int.h: + +../../gsl/gsl_block_ushort.h: + +../../gsl/gsl_block_short.h: + +../../gsl/gsl_block_uchar.h: + +../../gsl/gsl_block_char.h: diff --git a/gsl-2.5/doc/examples/.deps/bspline.Po b/gsl-2.5/doc/examples/.deps/bspline.Po new file mode 100644 index 00000000..f6bbfcc9 --- /dev/null +++ b/gsl-2.5/doc/examples/.deps/bspline.Po @@ -0,0 +1,326 @@ +bspline.o: bspline.c /usr/include/stdc-predef.h /usr/include/stdio.h \ + /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../../gsl/gsl_bspline.h ../../gsl/gsl_math.h ../../gsl/gsl_sys.h \ + ../../gsl/gsl_inline.h ../../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../../gsl/gsl_precision.h ../../gsl/gsl_types.h ../../gsl/gsl_nan.h \ + ../../gsl/gsl_pow_int.h ../../gsl/gsl_minmax.h ../../gsl/gsl_vector.h \ + ../../gsl/gsl_vector_complex_long_double.h ../../gsl/gsl_errno.h \ + /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../../gsl/gsl_complex.h ../../gsl/gsl_check_range.h \ + ../../gsl/gsl_vector_long_double.h ../../gsl/gsl_block_long_double.h \ + ../../gsl/gsl_vector_complex.h ../../gsl/gsl_block_complex_long_double.h \ + ../../gsl/gsl_vector_complex_double.h ../../gsl/gsl_vector_double.h \ + ../../gsl/gsl_block_double.h ../../gsl/gsl_block_complex_double.h \ + ../../gsl/gsl_vector_complex_float.h ../../gsl/gsl_vector_float.h \ + ../../gsl/gsl_block_float.h ../../gsl/gsl_block_complex_float.h \ + ../../gsl/gsl_vector_ulong.h ../../gsl/gsl_block_ulong.h \ + ../../gsl/gsl_vector_long.h ../../gsl/gsl_block_long.h \ + ../../gsl/gsl_vector_uint.h ../../gsl/gsl_block_uint.h \ + ../../gsl/gsl_vector_int.h ../../gsl/gsl_block_int.h \ + ../../gsl/gsl_vector_ushort.h ../../gsl/gsl_block_ushort.h \ + ../../gsl/gsl_vector_short.h ../../gsl/gsl_block_short.h \ + ../../gsl/gsl_vector_uchar.h ../../gsl/gsl_block_uchar.h \ + ../../gsl/gsl_vector_char.h ../../gsl/gsl_block_char.h \ + ../../gsl/gsl_matrix.h ../../gsl/gsl_matrix_complex_long_double.h \ + ../../gsl/gsl_matrix_complex_double.h \ + ../../gsl/gsl_matrix_complex_float.h ../../gsl/gsl_matrix_long_double.h \ + ../../gsl/gsl_matrix_double.h ../../gsl/gsl_matrix_float.h \ + ../../gsl/gsl_matrix_ulong.h ../../gsl/gsl_matrix_long.h \ + ../../gsl/gsl_matrix_uint.h ../../gsl/gsl_matrix_int.h \ + ../../gsl/gsl_matrix_ushort.h ../../gsl/gsl_matrix_short.h \ + ../../gsl/gsl_matrix_uchar.h ../../gsl/gsl_matrix_char.h \ + ../../gsl/gsl_multifit.h ../../gsl/gsl_rng.h ../../gsl/gsl_randist.h \ + ../../gsl/gsl_statistics.h ../../gsl/gsl_statistics_long_double.h \ + ../../gsl/gsl_statistics_double.h ../../gsl/gsl_statistics_float.h \ + ../../gsl/gsl_statistics_ulong.h ../../gsl/gsl_statistics_long.h \ + ../../gsl/gsl_statistics_uint.h ../../gsl/gsl_statistics_int.h \ + ../../gsl/gsl_statistics_ushort.h ../../gsl/gsl_statistics_short.h \ + ../../gsl/gsl_statistics_uchar.h ../../gsl/gsl_statistics_char.h + +/usr/include/stdc-predef.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../../gsl/gsl_bspline.h: + +../../gsl/gsl_math.h: + +../../gsl/gsl_sys.h: + +../../gsl/gsl_inline.h: + +../../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../../gsl/gsl_precision.h: + +../../gsl/gsl_types.h: + +../../gsl/gsl_nan.h: + +../../gsl/gsl_pow_int.h: + +../../gsl/gsl_minmax.h: + +../../gsl/gsl_vector.h: + +../../gsl/gsl_vector_complex_long_double.h: + +../../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../../gsl/gsl_complex.h: + +../../gsl/gsl_check_range.h: + +../../gsl/gsl_vector_long_double.h: + +../../gsl/gsl_block_long_double.h: + +../../gsl/gsl_vector_complex.h: + +../../gsl/gsl_block_complex_long_double.h: + +../../gsl/gsl_vector_complex_double.h: + +../../gsl/gsl_vector_double.h: + +../../gsl/gsl_block_double.h: + +../../gsl/gsl_block_complex_double.h: + +../../gsl/gsl_vector_complex_float.h: + +../../gsl/gsl_vector_float.h: + +../../gsl/gsl_block_float.h: + +../../gsl/gsl_block_complex_float.h: + +../../gsl/gsl_vector_ulong.h: + +../../gsl/gsl_block_ulong.h: + +../../gsl/gsl_vector_long.h: + +../../gsl/gsl_block_long.h: + +../../gsl/gsl_vector_uint.h: + +../../gsl/gsl_block_uint.h: + +../../gsl/gsl_vector_int.h: + +../../gsl/gsl_block_int.h: + +../../gsl/gsl_vector_ushort.h: + +../../gsl/gsl_block_ushort.h: + +../../gsl/gsl_vector_short.h: + +../../gsl/gsl_block_short.h: + +../../gsl/gsl_vector_uchar.h: + +../../gsl/gsl_block_uchar.h: + +../../gsl/gsl_vector_char.h: + +../../gsl/gsl_block_char.h: + +../../gsl/gsl_matrix.h: + +../../gsl/gsl_matrix_complex_long_double.h: + +../../gsl/gsl_matrix_complex_double.h: + +../../gsl/gsl_matrix_complex_float.h: + +../../gsl/gsl_matrix_long_double.h: + +../../gsl/gsl_matrix_double.h: + +../../gsl/gsl_matrix_float.h: + +../../gsl/gsl_matrix_ulong.h: + +../../gsl/gsl_matrix_long.h: + +../../gsl/gsl_matrix_uint.h: + +../../gsl/gsl_matrix_int.h: + +../../gsl/gsl_matrix_ushort.h: + +../../gsl/gsl_matrix_short.h: + +../../gsl/gsl_matrix_uchar.h: + +../../gsl/gsl_matrix_char.h: + +../../gsl/gsl_multifit.h: + +../../gsl/gsl_rng.h: + +../../gsl/gsl_randist.h: + +../../gsl/gsl_statistics.h: + +../../gsl/gsl_statistics_long_double.h: + +../../gsl/gsl_statistics_double.h: + +../../gsl/gsl_statistics_float.h: + +../../gsl/gsl_statistics_ulong.h: + +../../gsl/gsl_statistics_long.h: + +../../gsl/gsl_statistics_uint.h: + +../../gsl/gsl_statistics_int.h: + +../../gsl/gsl_statistics_ushort.h: + +../../gsl/gsl_statistics_short.h: + +../../gsl/gsl_statistics_uchar.h: + +../../gsl/gsl_statistics_char.h: diff --git a/gsl-2.5/doc/examples/.deps/cblas.Po b/gsl-2.5/doc/examples/.deps/cblas.Po new file mode 100644 index 00000000..9e5b1e48 --- /dev/null +++ b/gsl-2.5/doc/examples/.deps/cblas.Po @@ -0,0 +1,46 @@ +cblas.o: cblas.c /usr/include/stdc-predef.h /usr/include/stdio.h \ + /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../../gsl/gsl_cblas.h + +/usr/include/stdc-predef.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../../gsl/gsl_cblas.h: diff --git a/gsl-2.5/doc/examples/.deps/cdf.Po b/gsl-2.5/doc/examples/.deps/cdf.Po new file mode 100644 index 00000000..41a630d8 --- /dev/null +++ b/gsl-2.5/doc/examples/.deps/cdf.Po @@ -0,0 +1,46 @@ +cdf.o: cdf.c /usr/include/stdc-predef.h /usr/include/stdio.h \ + /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../../gsl/gsl_cdf.h + +/usr/include/stdc-predef.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../../gsl/gsl_cdf.h: diff --git a/gsl-2.5/doc/examples/.deps/cheb.Po b/gsl-2.5/doc/examples/.deps/cheb.Po new file mode 100644 index 00000000..ed5348ca --- /dev/null +++ b/gsl-2.5/doc/examples/.deps/cheb.Po @@ -0,0 +1,114 @@ +cheb.o: cheb.c /usr/include/stdc-predef.h /usr/include/stdio.h \ + /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../../gsl/gsl_sys.h ../../gsl/gsl_inline.h ../../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../../gsl/gsl_precision.h ../../gsl/gsl_types.h ../../gsl/gsl_nan.h \ + ../../gsl/gsl_pow_int.h ../../gsl/gsl_minmax.h ../../gsl/gsl_chebyshev.h \ + ../../gsl/gsl_mode.h + +/usr/include/stdc-predef.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../../gsl/gsl_sys.h: + +../../gsl/gsl_inline.h: + +../../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../../gsl/gsl_precision.h: + +../../gsl/gsl_types.h: + +../../gsl/gsl_nan.h: + +../../gsl/gsl_pow_int.h: + +../../gsl/gsl_minmax.h: + +../../gsl/gsl_chebyshev.h: + +../../gsl/gsl_mode.h: diff --git a/gsl-2.5/doc/examples/.deps/combination.Po b/gsl-2.5/doc/examples/.deps/combination.Po new file mode 100644 index 00000000..84338311 --- /dev/null +++ b/gsl-2.5/doc/examples/.deps/combination.Po @@ -0,0 +1,112 @@ +combination.o: combination.c /usr/include/stdc-predef.h \ + /usr/include/stdio.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../../gsl/gsl_combination.h \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/byteswap.h \ + /usr/include/bits/byteswap-16.h /usr/include/sys/types.h \ + /usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib-float.h \ + ../../gsl/gsl_errno.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../../gsl/gsl_types.h ../../gsl/gsl_inline.h ../../gsl/gsl_check_range.h + +/usr/include/stdc-predef.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../../gsl/gsl_combination.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../../gsl/gsl_types.h: + +../../gsl/gsl_inline.h: + +../../gsl/gsl_check_range.h: diff --git a/gsl-2.5/doc/examples/.deps/const.Po b/gsl-2.5/doc/examples/.deps/const.Po new file mode 100644 index 00000000..19971e4b --- /dev/null +++ b/gsl-2.5/doc/examples/.deps/const.Po @@ -0,0 +1,46 @@ +const.o: const.c /usr/include/stdc-predef.h /usr/include/stdio.h \ + /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../../gsl/gsl_const_mksa.h + +/usr/include/stdc-predef.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../../gsl/gsl_const_mksa.h: diff --git a/gsl-2.5/doc/examples/.deps/diff.Po b/gsl-2.5/doc/examples/.deps/diff.Po new file mode 100644 index 00000000..df0546c3 --- /dev/null +++ b/gsl-2.5/doc/examples/.deps/diff.Po @@ -0,0 +1,111 @@ +diff.o: diff.c /usr/include/stdc-predef.h /usr/include/stdio.h \ + /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../../gsl/gsl_sys.h ../../gsl/gsl_inline.h ../../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../../gsl/gsl_precision.h ../../gsl/gsl_types.h ../../gsl/gsl_nan.h \ + ../../gsl/gsl_pow_int.h ../../gsl/gsl_minmax.h ../../gsl/gsl_deriv.h + +/usr/include/stdc-predef.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../../gsl/gsl_sys.h: + +../../gsl/gsl_inline.h: + +../../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../../gsl/gsl_precision.h: + +../../gsl/gsl_types.h: + +../../gsl/gsl_nan.h: + +../../gsl/gsl_pow_int.h: + +../../gsl/gsl_minmax.h: + +../../gsl/gsl_deriv.h: diff --git a/gsl-2.5/doc/examples/.deps/dwt.Po b/gsl-2.5/doc/examples/.deps/dwt.Po new file mode 100644 index 00000000..2d72cf5a --- /dev/null +++ b/gsl-2.5/doc/examples/.deps/dwt.Po @@ -0,0 +1,167 @@ +dwt.o: dwt.c /usr/include/stdc-predef.h /usr/include/stdio.h \ + /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../../gsl/gsl_sort.h ../../gsl/gsl_sort_long_double.h \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/byteswap.h \ + /usr/include/bits/byteswap-16.h /usr/include/sys/types.h \ + /usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib-float.h \ + ../../gsl/gsl_errno.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../../gsl/gsl_types.h ../../gsl/gsl_permutation.h ../../gsl/gsl_inline.h \ + ../../gsl/gsl_check_range.h ../../gsl/gsl_sort_double.h \ + ../../gsl/gsl_sort_float.h ../../gsl/gsl_sort_ulong.h \ + ../../gsl/gsl_sort_long.h ../../gsl/gsl_sort_uint.h \ + ../../gsl/gsl_sort_int.h ../../gsl/gsl_sort_ushort.h \ + ../../gsl/gsl_sort_short.h ../../gsl/gsl_sort_uchar.h \ + ../../gsl/gsl_sort_char.h ../../gsl/gsl_wavelet.h + +/usr/include/stdc-predef.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../../gsl/gsl_sort.h: + +../../gsl/gsl_sort_long_double.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../../gsl/gsl_types.h: + +../../gsl/gsl_permutation.h: + +../../gsl/gsl_inline.h: + +../../gsl/gsl_check_range.h: + +../../gsl/gsl_sort_double.h: + +../../gsl/gsl_sort_float.h: + +../../gsl/gsl_sort_ulong.h: + +../../gsl/gsl_sort_long.h: + +../../gsl/gsl_sort_uint.h: + +../../gsl/gsl_sort_int.h: + +../../gsl/gsl_sort_ushort.h: + +../../gsl/gsl_sort_short.h: + +../../gsl/gsl_sort_uchar.h: + +../../gsl/gsl_sort_char.h: + +../../gsl/gsl_wavelet.h: diff --git a/gsl-2.5/doc/examples/.deps/eigen.Po b/gsl-2.5/doc/examples/.deps/eigen.Po new file mode 100644 index 00000000..04080aa2 --- /dev/null +++ b/gsl-2.5/doc/examples/.deps/eigen.Po @@ -0,0 +1,288 @@ +eigen.o: eigen.c /usr/include/stdc-predef.h /usr/include/stdio.h \ + /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../../gsl/gsl_sys.h ../../gsl/gsl_inline.h ../../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../../gsl/gsl_precision.h ../../gsl/gsl_types.h ../../gsl/gsl_nan.h \ + ../../gsl/gsl_pow_int.h ../../gsl/gsl_minmax.h ../../gsl/gsl_eigen.h \ + ../../gsl/gsl_vector.h ../../gsl/gsl_vector_complex_long_double.h \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/byteswap.h \ + /usr/include/bits/byteswap-16.h /usr/include/sys/types.h \ + /usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib-float.h \ + ../../gsl/gsl_errno.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../../gsl/gsl_complex.h ../../gsl/gsl_check_range.h \ + ../../gsl/gsl_vector_long_double.h ../../gsl/gsl_block_long_double.h \ + ../../gsl/gsl_vector_complex.h ../../gsl/gsl_block_complex_long_double.h \ + ../../gsl/gsl_vector_complex_double.h ../../gsl/gsl_vector_double.h \ + ../../gsl/gsl_block_double.h ../../gsl/gsl_block_complex_double.h \ + ../../gsl/gsl_vector_complex_float.h ../../gsl/gsl_vector_float.h \ + ../../gsl/gsl_block_float.h ../../gsl/gsl_block_complex_float.h \ + ../../gsl/gsl_vector_ulong.h ../../gsl/gsl_block_ulong.h \ + ../../gsl/gsl_vector_long.h ../../gsl/gsl_block_long.h \ + ../../gsl/gsl_vector_uint.h ../../gsl/gsl_block_uint.h \ + ../../gsl/gsl_vector_int.h ../../gsl/gsl_block_int.h \ + ../../gsl/gsl_vector_ushort.h ../../gsl/gsl_block_ushort.h \ + ../../gsl/gsl_vector_short.h ../../gsl/gsl_block_short.h \ + ../../gsl/gsl_vector_uchar.h ../../gsl/gsl_block_uchar.h \ + ../../gsl/gsl_vector_char.h ../../gsl/gsl_block_char.h \ + ../../gsl/gsl_matrix.h ../../gsl/gsl_matrix_complex_long_double.h \ + ../../gsl/gsl_matrix_complex_double.h \ + ../../gsl/gsl_matrix_complex_float.h ../../gsl/gsl_matrix_long_double.h \ + ../../gsl/gsl_matrix_double.h ../../gsl/gsl_matrix_float.h \ + ../../gsl/gsl_matrix_ulong.h ../../gsl/gsl_matrix_long.h \ + ../../gsl/gsl_matrix_uint.h ../../gsl/gsl_matrix_int.h \ + ../../gsl/gsl_matrix_ushort.h ../../gsl/gsl_matrix_short.h \ + ../../gsl/gsl_matrix_uchar.h ../../gsl/gsl_matrix_char.h + +/usr/include/stdc-predef.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../../gsl/gsl_sys.h: + +../../gsl/gsl_inline.h: + +../../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../../gsl/gsl_precision.h: + +../../gsl/gsl_types.h: + +../../gsl/gsl_nan.h: + +../../gsl/gsl_pow_int.h: + +../../gsl/gsl_minmax.h: + +../../gsl/gsl_eigen.h: + +../../gsl/gsl_vector.h: + +../../gsl/gsl_vector_complex_long_double.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../../gsl/gsl_complex.h: + +../../gsl/gsl_check_range.h: + +../../gsl/gsl_vector_long_double.h: + +../../gsl/gsl_block_long_double.h: + +../../gsl/gsl_vector_complex.h: + +../../gsl/gsl_block_complex_long_double.h: + +../../gsl/gsl_vector_complex_double.h: + +../../gsl/gsl_vector_double.h: + +../../gsl/gsl_block_double.h: + +../../gsl/gsl_block_complex_double.h: + +../../gsl/gsl_vector_complex_float.h: + +../../gsl/gsl_vector_float.h: + +../../gsl/gsl_block_float.h: + +../../gsl/gsl_block_complex_float.h: + +../../gsl/gsl_vector_ulong.h: + +../../gsl/gsl_block_ulong.h: + +../../gsl/gsl_vector_long.h: + +../../gsl/gsl_block_long.h: + +../../gsl/gsl_vector_uint.h: + +../../gsl/gsl_block_uint.h: + +../../gsl/gsl_vector_int.h: + +../../gsl/gsl_block_int.h: + +../../gsl/gsl_vector_ushort.h: + +../../gsl/gsl_block_ushort.h: + +../../gsl/gsl_vector_short.h: + +../../gsl/gsl_block_short.h: + +../../gsl/gsl_vector_uchar.h: + +../../gsl/gsl_block_uchar.h: + +../../gsl/gsl_vector_char.h: + +../../gsl/gsl_block_char.h: + +../../gsl/gsl_matrix.h: + +../../gsl/gsl_matrix_complex_long_double.h: + +../../gsl/gsl_matrix_complex_double.h: + +../../gsl/gsl_matrix_complex_float.h: + +../../gsl/gsl_matrix_long_double.h: + +../../gsl/gsl_matrix_double.h: + +../../gsl/gsl_matrix_float.h: + +../../gsl/gsl_matrix_ulong.h: + +../../gsl/gsl_matrix_long.h: + +../../gsl/gsl_matrix_uint.h: + +../../gsl/gsl_matrix_int.h: + +../../gsl/gsl_matrix_ushort.h: + +../../gsl/gsl_matrix_short.h: + +../../gsl/gsl_matrix_uchar.h: + +../../gsl/gsl_matrix_char.h: diff --git a/gsl-2.5/doc/examples/.deps/eigen_nonsymm.Po b/gsl-2.5/doc/examples/.deps/eigen_nonsymm.Po new file mode 100644 index 00000000..70d36f18 --- /dev/null +++ b/gsl-2.5/doc/examples/.deps/eigen_nonsymm.Po @@ -0,0 +1,288 @@ +eigen_nonsymm.o: eigen_nonsymm.c /usr/include/stdc-predef.h \ + /usr/include/stdio.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../../gsl/gsl_sys.h ../../gsl/gsl_inline.h ../../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../../gsl/gsl_precision.h ../../gsl/gsl_types.h ../../gsl/gsl_nan.h \ + ../../gsl/gsl_pow_int.h ../../gsl/gsl_minmax.h ../../gsl/gsl_eigen.h \ + ../../gsl/gsl_vector.h ../../gsl/gsl_vector_complex_long_double.h \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/byteswap.h \ + /usr/include/bits/byteswap-16.h /usr/include/sys/types.h \ + /usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib-float.h \ + ../../gsl/gsl_errno.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../../gsl/gsl_complex.h ../../gsl/gsl_check_range.h \ + ../../gsl/gsl_vector_long_double.h ../../gsl/gsl_block_long_double.h \ + ../../gsl/gsl_vector_complex.h ../../gsl/gsl_block_complex_long_double.h \ + ../../gsl/gsl_vector_complex_double.h ../../gsl/gsl_vector_double.h \ + ../../gsl/gsl_block_double.h ../../gsl/gsl_block_complex_double.h \ + ../../gsl/gsl_vector_complex_float.h ../../gsl/gsl_vector_float.h \ + ../../gsl/gsl_block_float.h ../../gsl/gsl_block_complex_float.h \ + ../../gsl/gsl_vector_ulong.h ../../gsl/gsl_block_ulong.h \ + ../../gsl/gsl_vector_long.h ../../gsl/gsl_block_long.h \ + ../../gsl/gsl_vector_uint.h ../../gsl/gsl_block_uint.h \ + ../../gsl/gsl_vector_int.h ../../gsl/gsl_block_int.h \ + ../../gsl/gsl_vector_ushort.h ../../gsl/gsl_block_ushort.h \ + ../../gsl/gsl_vector_short.h ../../gsl/gsl_block_short.h \ + ../../gsl/gsl_vector_uchar.h ../../gsl/gsl_block_uchar.h \ + ../../gsl/gsl_vector_char.h ../../gsl/gsl_block_char.h \ + ../../gsl/gsl_matrix.h ../../gsl/gsl_matrix_complex_long_double.h \ + ../../gsl/gsl_matrix_complex_double.h \ + ../../gsl/gsl_matrix_complex_float.h ../../gsl/gsl_matrix_long_double.h \ + ../../gsl/gsl_matrix_double.h ../../gsl/gsl_matrix_float.h \ + ../../gsl/gsl_matrix_ulong.h ../../gsl/gsl_matrix_long.h \ + ../../gsl/gsl_matrix_uint.h ../../gsl/gsl_matrix_int.h \ + ../../gsl/gsl_matrix_ushort.h ../../gsl/gsl_matrix_short.h \ + ../../gsl/gsl_matrix_uchar.h ../../gsl/gsl_matrix_char.h + +/usr/include/stdc-predef.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../../gsl/gsl_sys.h: + +../../gsl/gsl_inline.h: + +../../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../../gsl/gsl_precision.h: + +../../gsl/gsl_types.h: + +../../gsl/gsl_nan.h: + +../../gsl/gsl_pow_int.h: + +../../gsl/gsl_minmax.h: + +../../gsl/gsl_eigen.h: + +../../gsl/gsl_vector.h: + +../../gsl/gsl_vector_complex_long_double.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../../gsl/gsl_complex.h: + +../../gsl/gsl_check_range.h: + +../../gsl/gsl_vector_long_double.h: + +../../gsl/gsl_block_long_double.h: + +../../gsl/gsl_vector_complex.h: + +../../gsl/gsl_block_complex_long_double.h: + +../../gsl/gsl_vector_complex_double.h: + +../../gsl/gsl_vector_double.h: + +../../gsl/gsl_block_double.h: + +../../gsl/gsl_block_complex_double.h: + +../../gsl/gsl_vector_complex_float.h: + +../../gsl/gsl_vector_float.h: + +../../gsl/gsl_block_float.h: + +../../gsl/gsl_block_complex_float.h: + +../../gsl/gsl_vector_ulong.h: + +../../gsl/gsl_block_ulong.h: + +../../gsl/gsl_vector_long.h: + +../../gsl/gsl_block_long.h: + +../../gsl/gsl_vector_uint.h: + +../../gsl/gsl_block_uint.h: + +../../gsl/gsl_vector_int.h: + +../../gsl/gsl_block_int.h: + +../../gsl/gsl_vector_ushort.h: + +../../gsl/gsl_block_ushort.h: + +../../gsl/gsl_vector_short.h: + +../../gsl/gsl_block_short.h: + +../../gsl/gsl_vector_uchar.h: + +../../gsl/gsl_block_uchar.h: + +../../gsl/gsl_vector_char.h: + +../../gsl/gsl_block_char.h: + +../../gsl/gsl_matrix.h: + +../../gsl/gsl_matrix_complex_long_double.h: + +../../gsl/gsl_matrix_complex_double.h: + +../../gsl/gsl_matrix_complex_float.h: + +../../gsl/gsl_matrix_long_double.h: + +../../gsl/gsl_matrix_double.h: + +../../gsl/gsl_matrix_float.h: + +../../gsl/gsl_matrix_ulong.h: + +../../gsl/gsl_matrix_long.h: + +../../gsl/gsl_matrix_uint.h: + +../../gsl/gsl_matrix_int.h: + +../../gsl/gsl_matrix_ushort.h: + +../../gsl/gsl_matrix_short.h: + +../../gsl/gsl_matrix_uchar.h: + +../../gsl/gsl_matrix_char.h: diff --git a/gsl-2.5/doc/examples/.deps/fft.Po b/gsl-2.5/doc/examples/.deps/fft.Po new file mode 100644 index 00000000..31a0c71b --- /dev/null +++ b/gsl-2.5/doc/examples/.deps/fft.Po @@ -0,0 +1,133 @@ +fft.o: fft.c /usr/include/stdc-predef.h /usr/include/stdio.h \ + /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../../gsl/gsl_errno.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../../gsl/gsl_types.h ../../gsl/gsl_fft_complex.h ../../gsl/gsl_math.h \ + ../../gsl/gsl_sys.h ../../gsl/gsl_inline.h ../../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../../gsl/gsl_precision.h ../../gsl/gsl_nan.h ../../gsl/gsl_pow_int.h \ + ../../gsl/gsl_minmax.h ../../gsl/gsl_complex.h ../../gsl/gsl_fft.h + +/usr/include/stdc-predef.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../../gsl/gsl_types.h: + +../../gsl/gsl_fft_complex.h: + +../../gsl/gsl_math.h: + +../../gsl/gsl_sys.h: + +../../gsl/gsl_inline.h: + +../../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../../gsl/gsl_precision.h: + +../../gsl/gsl_nan.h: + +../../gsl/gsl_pow_int.h: + +../../gsl/gsl_minmax.h: + +../../gsl/gsl_complex.h: + +../../gsl/gsl_fft.h: diff --git a/gsl-2.5/doc/examples/.deps/fftmr.Po b/gsl-2.5/doc/examples/.deps/fftmr.Po new file mode 100644 index 00000000..3d8ab49e --- /dev/null +++ b/gsl-2.5/doc/examples/.deps/fftmr.Po @@ -0,0 +1,133 @@ +fftmr.o: fftmr.c /usr/include/stdc-predef.h /usr/include/stdio.h \ + /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../../gsl/gsl_errno.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../../gsl/gsl_types.h ../../gsl/gsl_fft_complex.h ../../gsl/gsl_math.h \ + ../../gsl/gsl_sys.h ../../gsl/gsl_inline.h ../../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../../gsl/gsl_precision.h ../../gsl/gsl_nan.h ../../gsl/gsl_pow_int.h \ + ../../gsl/gsl_minmax.h ../../gsl/gsl_complex.h ../../gsl/gsl_fft.h + +/usr/include/stdc-predef.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../../gsl/gsl_types.h: + +../../gsl/gsl_fft_complex.h: + +../../gsl/gsl_math.h: + +../../gsl/gsl_sys.h: + +../../gsl/gsl_inline.h: + +../../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../../gsl/gsl_precision.h: + +../../gsl/gsl_nan.h: + +../../gsl/gsl_pow_int.h: + +../../gsl/gsl_minmax.h: + +../../gsl/gsl_complex.h: + +../../gsl/gsl_fft.h: diff --git a/gsl-2.5/doc/examples/.deps/fftreal.Po b/gsl-2.5/doc/examples/.deps/fftreal.Po new file mode 100644 index 00000000..27a8f7ca --- /dev/null +++ b/gsl-2.5/doc/examples/.deps/fftreal.Po @@ -0,0 +1,136 @@ +fftreal.o: fftreal.c /usr/include/stdc-predef.h /usr/include/stdio.h \ + /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../../gsl/gsl_errno.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../../gsl/gsl_types.h ../../gsl/gsl_fft_real.h ../../gsl/gsl_math.h \ + ../../gsl/gsl_sys.h ../../gsl/gsl_inline.h ../../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../../gsl/gsl_precision.h ../../gsl/gsl_nan.h ../../gsl/gsl_pow_int.h \ + ../../gsl/gsl_minmax.h ../../gsl/gsl_complex.h ../../gsl/gsl_fft.h \ + ../../gsl/gsl_fft_halfcomplex.h + +/usr/include/stdc-predef.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../../gsl/gsl_types.h: + +../../gsl/gsl_fft_real.h: + +../../gsl/gsl_math.h: + +../../gsl/gsl_sys.h: + +../../gsl/gsl_inline.h: + +../../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../../gsl/gsl_precision.h: + +../../gsl/gsl_nan.h: + +../../gsl/gsl_pow_int.h: + +../../gsl/gsl_minmax.h: + +../../gsl/gsl_complex.h: + +../../gsl/gsl_fft.h: + +../../gsl/gsl_fft_halfcomplex.h: diff --git a/gsl-2.5/doc/examples/.deps/filt_edge.Po b/gsl-2.5/doc/examples/.deps/filt_edge.Po new file mode 100644 index 00000000..bbccc12c --- /dev/null +++ b/gsl-2.5/doc/examples/.deps/filt_edge.Po @@ -0,0 +1,296 @@ +filt_edge.o: filt_edge.c /usr/include/stdc-predef.h /usr/include/stdio.h \ + /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../../gsl/gsl_sys.h \ + ../../gsl/gsl_inline.h ../../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../../gsl/gsl_precision.h ../../gsl/gsl_types.h ../../gsl/gsl_nan.h \ + ../../gsl/gsl_pow_int.h ../../gsl/gsl_minmax.h ../../gsl/gsl_filter.h \ + ../../gsl/gsl_vector.h ../../gsl/gsl_vector_complex_long_double.h \ + ../../gsl/gsl_errno.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../../gsl/gsl_complex.h ../../gsl/gsl_check_range.h \ + ../../gsl/gsl_vector_long_double.h ../../gsl/gsl_block_long_double.h \ + ../../gsl/gsl_vector_complex.h ../../gsl/gsl_block_complex_long_double.h \ + ../../gsl/gsl_vector_complex_double.h ../../gsl/gsl_vector_double.h \ + ../../gsl/gsl_block_double.h ../../gsl/gsl_block_complex_double.h \ + ../../gsl/gsl_vector_complex_float.h ../../gsl/gsl_vector_float.h \ + ../../gsl/gsl_block_float.h ../../gsl/gsl_block_complex_float.h \ + ../../gsl/gsl_vector_ulong.h ../../gsl/gsl_block_ulong.h \ + ../../gsl/gsl_vector_long.h ../../gsl/gsl_block_long.h \ + ../../gsl/gsl_vector_uint.h ../../gsl/gsl_block_uint.h \ + ../../gsl/gsl_vector_int.h ../../gsl/gsl_block_int.h \ + ../../gsl/gsl_vector_ushort.h ../../gsl/gsl_block_ushort.h \ + ../../gsl/gsl_vector_short.h ../../gsl/gsl_block_short.h \ + ../../gsl/gsl_vector_uchar.h ../../gsl/gsl_block_uchar.h \ + ../../gsl/gsl_vector_char.h ../../gsl/gsl_block_char.h \ + ../../gsl/gsl_movstat.h ../../gsl/gsl_rng.h ../../gsl/gsl_randist.h \ + ../../gsl/gsl_matrix.h ../../gsl/gsl_matrix_complex_long_double.h \ + ../../gsl/gsl_matrix_complex_double.h \ + ../../gsl/gsl_matrix_complex_float.h ../../gsl/gsl_matrix_long_double.h \ + ../../gsl/gsl_matrix_double.h ../../gsl/gsl_matrix_float.h \ + ../../gsl/gsl_matrix_ulong.h ../../gsl/gsl_matrix_long.h \ + ../../gsl/gsl_matrix_uint.h ../../gsl/gsl_matrix_int.h \ + ../../gsl/gsl_matrix_ushort.h ../../gsl/gsl_matrix_short.h \ + ../../gsl/gsl_matrix_uchar.h ../../gsl/gsl_matrix_char.h + +/usr/include/stdc-predef.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../../gsl/gsl_sys.h: + +../../gsl/gsl_inline.h: + +../../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../../gsl/gsl_precision.h: + +../../gsl/gsl_types.h: + +../../gsl/gsl_nan.h: + +../../gsl/gsl_pow_int.h: + +../../gsl/gsl_minmax.h: + +../../gsl/gsl_filter.h: + +../../gsl/gsl_vector.h: + +../../gsl/gsl_vector_complex_long_double.h: + +../../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../../gsl/gsl_complex.h: + +../../gsl/gsl_check_range.h: + +../../gsl/gsl_vector_long_double.h: + +../../gsl/gsl_block_long_double.h: + +../../gsl/gsl_vector_complex.h: + +../../gsl/gsl_block_complex_long_double.h: + +../../gsl/gsl_vector_complex_double.h: + +../../gsl/gsl_vector_double.h: + +../../gsl/gsl_block_double.h: + +../../gsl/gsl_block_complex_double.h: + +../../gsl/gsl_vector_complex_float.h: + +../../gsl/gsl_vector_float.h: + +../../gsl/gsl_block_float.h: + +../../gsl/gsl_block_complex_float.h: + +../../gsl/gsl_vector_ulong.h: + +../../gsl/gsl_block_ulong.h: + +../../gsl/gsl_vector_long.h: + +../../gsl/gsl_block_long.h: + +../../gsl/gsl_vector_uint.h: + +../../gsl/gsl_block_uint.h: + +../../gsl/gsl_vector_int.h: + +../../gsl/gsl_block_int.h: + +../../gsl/gsl_vector_ushort.h: + +../../gsl/gsl_block_ushort.h: + +../../gsl/gsl_vector_short.h: + +../../gsl/gsl_block_short.h: + +../../gsl/gsl_vector_uchar.h: + +../../gsl/gsl_block_uchar.h: + +../../gsl/gsl_vector_char.h: + +../../gsl/gsl_block_char.h: + +../../gsl/gsl_movstat.h: + +../../gsl/gsl_rng.h: + +../../gsl/gsl_randist.h: + +../../gsl/gsl_matrix.h: + +../../gsl/gsl_matrix_complex_long_double.h: + +../../gsl/gsl_matrix_complex_double.h: + +../../gsl/gsl_matrix_complex_float.h: + +../../gsl/gsl_matrix_long_double.h: + +../../gsl/gsl_matrix_double.h: + +../../gsl/gsl_matrix_float.h: + +../../gsl/gsl_matrix_ulong.h: + +../../gsl/gsl_matrix_long.h: + +../../gsl/gsl_matrix_uint.h: + +../../gsl/gsl_matrix_int.h: + +../../gsl/gsl_matrix_ushort.h: + +../../gsl/gsl_matrix_short.h: + +../../gsl/gsl_matrix_uchar.h: + +../../gsl/gsl_matrix_char.h: diff --git a/gsl-2.5/doc/examples/.deps/fitreg.Po b/gsl-2.5/doc/examples/.deps/fitreg.Po new file mode 100644 index 00000000..a68e50ad --- /dev/null +++ b/gsl-2.5/doc/examples/.deps/fitreg.Po @@ -0,0 +1,293 @@ +fitreg.o: fitreg.c /usr/include/stdc-predef.h ../../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../../gsl/gsl_sys.h \ + ../../gsl/gsl_inline.h ../../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../../gsl/gsl_precision.h ../../gsl/gsl_types.h ../../gsl/gsl_nan.h \ + ../../gsl/gsl_pow_int.h ../../gsl/gsl_minmax.h ../../gsl/gsl_vector.h \ + ../../gsl/gsl_vector_complex_long_double.h /usr/include/stdlib.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../../gsl/gsl_complex.h ../../gsl/gsl_check_range.h \ + ../../gsl/gsl_vector_long_double.h ../../gsl/gsl_block_long_double.h \ + ../../gsl/gsl_vector_complex.h ../../gsl/gsl_block_complex_long_double.h \ + ../../gsl/gsl_vector_complex_double.h ../../gsl/gsl_vector_double.h \ + ../../gsl/gsl_block_double.h ../../gsl/gsl_block_complex_double.h \ + ../../gsl/gsl_vector_complex_float.h ../../gsl/gsl_vector_float.h \ + ../../gsl/gsl_block_float.h ../../gsl/gsl_block_complex_float.h \ + ../../gsl/gsl_vector_ulong.h ../../gsl/gsl_block_ulong.h \ + ../../gsl/gsl_vector_long.h ../../gsl/gsl_block_long.h \ + ../../gsl/gsl_vector_uint.h ../../gsl/gsl_block_uint.h \ + ../../gsl/gsl_vector_int.h ../../gsl/gsl_block_int.h \ + ../../gsl/gsl_vector_ushort.h ../../gsl/gsl_block_ushort.h \ + ../../gsl/gsl_vector_short.h ../../gsl/gsl_block_short.h \ + ../../gsl/gsl_vector_uchar.h ../../gsl/gsl_block_uchar.h \ + ../../gsl/gsl_vector_char.h ../../gsl/gsl_block_char.h \ + ../../gsl/gsl_matrix.h ../../gsl/gsl_matrix_complex_long_double.h \ + ../../gsl/gsl_matrix_complex_double.h \ + ../../gsl/gsl_matrix_complex_float.h ../../gsl/gsl_matrix_long_double.h \ + ../../gsl/gsl_matrix_double.h ../../gsl/gsl_matrix_float.h \ + ../../gsl/gsl_matrix_ulong.h ../../gsl/gsl_matrix_long.h \ + ../../gsl/gsl_matrix_uint.h ../../gsl/gsl_matrix_int.h \ + ../../gsl/gsl_matrix_ushort.h ../../gsl/gsl_matrix_short.h \ + ../../gsl/gsl_matrix_uchar.h ../../gsl/gsl_matrix_char.h \ + ../../gsl/gsl_rng.h ../../gsl/gsl_randist.h ../../gsl/gsl_multifit.h + +/usr/include/stdc-predef.h: + +../../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../../gsl/gsl_sys.h: + +../../gsl/gsl_inline.h: + +../../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../../gsl/gsl_precision.h: + +../../gsl/gsl_types.h: + +../../gsl/gsl_nan.h: + +../../gsl/gsl_pow_int.h: + +../../gsl/gsl_minmax.h: + +../../gsl/gsl_vector.h: + +../../gsl/gsl_vector_complex_long_double.h: + +/usr/include/stdlib.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../../gsl/gsl_complex.h: + +../../gsl/gsl_check_range.h: + +../../gsl/gsl_vector_long_double.h: + +../../gsl/gsl_block_long_double.h: + +../../gsl/gsl_vector_complex.h: + +../../gsl/gsl_block_complex_long_double.h: + +../../gsl/gsl_vector_complex_double.h: + +../../gsl/gsl_vector_double.h: + +../../gsl/gsl_block_double.h: + +../../gsl/gsl_block_complex_double.h: + +../../gsl/gsl_vector_complex_float.h: + +../../gsl/gsl_vector_float.h: + +../../gsl/gsl_block_float.h: + +../../gsl/gsl_block_complex_float.h: + +../../gsl/gsl_vector_ulong.h: + +../../gsl/gsl_block_ulong.h: + +../../gsl/gsl_vector_long.h: + +../../gsl/gsl_block_long.h: + +../../gsl/gsl_vector_uint.h: + +../../gsl/gsl_block_uint.h: + +../../gsl/gsl_vector_int.h: + +../../gsl/gsl_block_int.h: + +../../gsl/gsl_vector_ushort.h: + +../../gsl/gsl_block_ushort.h: + +../../gsl/gsl_vector_short.h: + +../../gsl/gsl_block_short.h: + +../../gsl/gsl_vector_uchar.h: + +../../gsl/gsl_block_uchar.h: + +../../gsl/gsl_vector_char.h: + +../../gsl/gsl_block_char.h: + +../../gsl/gsl_matrix.h: + +../../gsl/gsl_matrix_complex_long_double.h: + +../../gsl/gsl_matrix_complex_double.h: + +../../gsl/gsl_matrix_complex_float.h: + +../../gsl/gsl_matrix_long_double.h: + +../../gsl/gsl_matrix_double.h: + +../../gsl/gsl_matrix_float.h: + +../../gsl/gsl_matrix_ulong.h: + +../../gsl/gsl_matrix_long.h: + +../../gsl/gsl_matrix_uint.h: + +../../gsl/gsl_matrix_int.h: + +../../gsl/gsl_matrix_ushort.h: + +../../gsl/gsl_matrix_short.h: + +../../gsl/gsl_matrix_uchar.h: + +../../gsl/gsl_matrix_char.h: + +../../gsl/gsl_rng.h: + +../../gsl/gsl_randist.h: + +../../gsl/gsl_multifit.h: diff --git a/gsl-2.5/doc/examples/.deps/fitreg2.Po b/gsl-2.5/doc/examples/.deps/fitreg2.Po new file mode 100644 index 00000000..b01ef77d --- /dev/null +++ b/gsl-2.5/doc/examples/.deps/fitreg2.Po @@ -0,0 +1,296 @@ +fitreg2.o: fitreg2.c /usr/include/stdc-predef.h ../../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../../gsl/gsl_sys.h \ + ../../gsl/gsl_inline.h ../../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../../gsl/gsl_precision.h ../../gsl/gsl_types.h ../../gsl/gsl_nan.h \ + ../../gsl/gsl_pow_int.h ../../gsl/gsl_minmax.h ../../gsl/gsl_vector.h \ + ../../gsl/gsl_vector_complex_long_double.h /usr/include/stdlib.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../../gsl/gsl_complex.h ../../gsl/gsl_check_range.h \ + ../../gsl/gsl_vector_long_double.h ../../gsl/gsl_block_long_double.h \ + ../../gsl/gsl_vector_complex.h ../../gsl/gsl_block_complex_long_double.h \ + ../../gsl/gsl_vector_complex_double.h ../../gsl/gsl_vector_double.h \ + ../../gsl/gsl_block_double.h ../../gsl/gsl_block_complex_double.h \ + ../../gsl/gsl_vector_complex_float.h ../../gsl/gsl_vector_float.h \ + ../../gsl/gsl_block_float.h ../../gsl/gsl_block_complex_float.h \ + ../../gsl/gsl_vector_ulong.h ../../gsl/gsl_block_ulong.h \ + ../../gsl/gsl_vector_long.h ../../gsl/gsl_block_long.h \ + ../../gsl/gsl_vector_uint.h ../../gsl/gsl_block_uint.h \ + ../../gsl/gsl_vector_int.h ../../gsl/gsl_block_int.h \ + ../../gsl/gsl_vector_ushort.h ../../gsl/gsl_block_ushort.h \ + ../../gsl/gsl_vector_short.h ../../gsl/gsl_block_short.h \ + ../../gsl/gsl_vector_uchar.h ../../gsl/gsl_block_uchar.h \ + ../../gsl/gsl_vector_char.h ../../gsl/gsl_block_char.h \ + ../../gsl/gsl_matrix.h ../../gsl/gsl_matrix_complex_long_double.h \ + ../../gsl/gsl_matrix_complex_double.h \ + ../../gsl/gsl_matrix_complex_float.h ../../gsl/gsl_matrix_long_double.h \ + ../../gsl/gsl_matrix_double.h ../../gsl/gsl_matrix_float.h \ + ../../gsl/gsl_matrix_ulong.h ../../gsl/gsl_matrix_long.h \ + ../../gsl/gsl_matrix_uint.h ../../gsl/gsl_matrix_int.h \ + ../../gsl/gsl_matrix_ushort.h ../../gsl/gsl_matrix_short.h \ + ../../gsl/gsl_matrix_uchar.h ../../gsl/gsl_matrix_char.h \ + ../../gsl/gsl_multifit.h ../../gsl/gsl_blas.h ../../gsl/gsl_blas_types.h \ + ../../gsl/gsl_cblas.h + +/usr/include/stdc-predef.h: + +../../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../../gsl/gsl_sys.h: + +../../gsl/gsl_inline.h: + +../../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../../gsl/gsl_precision.h: + +../../gsl/gsl_types.h: + +../../gsl/gsl_nan.h: + +../../gsl/gsl_pow_int.h: + +../../gsl/gsl_minmax.h: + +../../gsl/gsl_vector.h: + +../../gsl/gsl_vector_complex_long_double.h: + +/usr/include/stdlib.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../../gsl/gsl_complex.h: + +../../gsl/gsl_check_range.h: + +../../gsl/gsl_vector_long_double.h: + +../../gsl/gsl_block_long_double.h: + +../../gsl/gsl_vector_complex.h: + +../../gsl/gsl_block_complex_long_double.h: + +../../gsl/gsl_vector_complex_double.h: + +../../gsl/gsl_vector_double.h: + +../../gsl/gsl_block_double.h: + +../../gsl/gsl_block_complex_double.h: + +../../gsl/gsl_vector_complex_float.h: + +../../gsl/gsl_vector_float.h: + +../../gsl/gsl_block_float.h: + +../../gsl/gsl_block_complex_float.h: + +../../gsl/gsl_vector_ulong.h: + +../../gsl/gsl_block_ulong.h: + +../../gsl/gsl_vector_long.h: + +../../gsl/gsl_block_long.h: + +../../gsl/gsl_vector_uint.h: + +../../gsl/gsl_block_uint.h: + +../../gsl/gsl_vector_int.h: + +../../gsl/gsl_block_int.h: + +../../gsl/gsl_vector_ushort.h: + +../../gsl/gsl_block_ushort.h: + +../../gsl/gsl_vector_short.h: + +../../gsl/gsl_block_short.h: + +../../gsl/gsl_vector_uchar.h: + +../../gsl/gsl_block_uchar.h: + +../../gsl/gsl_vector_char.h: + +../../gsl/gsl_block_char.h: + +../../gsl/gsl_matrix.h: + +../../gsl/gsl_matrix_complex_long_double.h: + +../../gsl/gsl_matrix_complex_double.h: + +../../gsl/gsl_matrix_complex_float.h: + +../../gsl/gsl_matrix_long_double.h: + +../../gsl/gsl_matrix_double.h: + +../../gsl/gsl_matrix_float.h: + +../../gsl/gsl_matrix_ulong.h: + +../../gsl/gsl_matrix_long.h: + +../../gsl/gsl_matrix_uint.h: + +../../gsl/gsl_matrix_int.h: + +../../gsl/gsl_matrix_ushort.h: + +../../gsl/gsl_matrix_short.h: + +../../gsl/gsl_matrix_uchar.h: + +../../gsl/gsl_matrix_char.h: + +../../gsl/gsl_multifit.h: + +../../gsl/gsl_blas.h: + +../../gsl/gsl_blas_types.h: + +../../gsl/gsl_cblas.h: diff --git a/gsl-2.5/doc/examples/.deps/fitting.Po b/gsl-2.5/doc/examples/.deps/fitting.Po new file mode 100644 index 00000000..6669844c --- /dev/null +++ b/gsl-2.5/doc/examples/.deps/fitting.Po @@ -0,0 +1,154 @@ +fitting.o: fitting.c /usr/include/stdc-predef.h /usr/include/stdio.h \ + /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../../gsl/gsl_fit.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../../gsl/gsl_sys.h \ + ../../gsl/gsl_inline.h ../../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../../gsl/gsl_precision.h ../../gsl/gsl_types.h ../../gsl/gsl_nan.h \ + ../../gsl/gsl_pow_int.h ../../gsl/gsl_minmax.h + +/usr/include/stdc-predef.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../../gsl/gsl_fit.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../../gsl/gsl_sys.h: + +../../gsl/gsl_inline.h: + +../../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../../gsl/gsl_precision.h: + +../../gsl/gsl_types.h: + +../../gsl/gsl_nan.h: + +../../gsl/gsl_pow_int.h: + +../../gsl/gsl_minmax.h: diff --git a/gsl-2.5/doc/examples/.deps/fitting2.Po b/gsl-2.5/doc/examples/.deps/fitting2.Po new file mode 100644 index 00000000..14c2236b --- /dev/null +++ b/gsl-2.5/doc/examples/.deps/fitting2.Po @@ -0,0 +1,289 @@ +fitting2.o: fitting2.c /usr/include/stdc-predef.h /usr/include/stdio.h \ + /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../../gsl/gsl_multifit.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../../gsl/gsl_sys.h \ + ../../gsl/gsl_inline.h ../../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../../gsl/gsl_precision.h ../../gsl/gsl_types.h ../../gsl/gsl_nan.h \ + ../../gsl/gsl_pow_int.h ../../gsl/gsl_minmax.h ../../gsl/gsl_vector.h \ + ../../gsl/gsl_vector_complex_long_double.h ../../gsl/gsl_errno.h \ + /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../../gsl/gsl_complex.h ../../gsl/gsl_check_range.h \ + ../../gsl/gsl_vector_long_double.h ../../gsl/gsl_block_long_double.h \ + ../../gsl/gsl_vector_complex.h ../../gsl/gsl_block_complex_long_double.h \ + ../../gsl/gsl_vector_complex_double.h ../../gsl/gsl_vector_double.h \ + ../../gsl/gsl_block_double.h ../../gsl/gsl_block_complex_double.h \ + ../../gsl/gsl_vector_complex_float.h ../../gsl/gsl_vector_float.h \ + ../../gsl/gsl_block_float.h ../../gsl/gsl_block_complex_float.h \ + ../../gsl/gsl_vector_ulong.h ../../gsl/gsl_block_ulong.h \ + ../../gsl/gsl_vector_long.h ../../gsl/gsl_block_long.h \ + ../../gsl/gsl_vector_uint.h ../../gsl/gsl_block_uint.h \ + ../../gsl/gsl_vector_int.h ../../gsl/gsl_block_int.h \ + ../../gsl/gsl_vector_ushort.h ../../gsl/gsl_block_ushort.h \ + ../../gsl/gsl_vector_short.h ../../gsl/gsl_block_short.h \ + ../../gsl/gsl_vector_uchar.h ../../gsl/gsl_block_uchar.h \ + ../../gsl/gsl_vector_char.h ../../gsl/gsl_block_char.h \ + ../../gsl/gsl_matrix.h ../../gsl/gsl_matrix_complex_long_double.h \ + ../../gsl/gsl_matrix_complex_double.h \ + ../../gsl/gsl_matrix_complex_float.h ../../gsl/gsl_matrix_long_double.h \ + ../../gsl/gsl_matrix_double.h ../../gsl/gsl_matrix_float.h \ + ../../gsl/gsl_matrix_ulong.h ../../gsl/gsl_matrix_long.h \ + ../../gsl/gsl_matrix_uint.h ../../gsl/gsl_matrix_int.h \ + ../../gsl/gsl_matrix_ushort.h ../../gsl/gsl_matrix_short.h \ + ../../gsl/gsl_matrix_uchar.h ../../gsl/gsl_matrix_char.h + +/usr/include/stdc-predef.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../../gsl/gsl_multifit.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../../gsl/gsl_sys.h: + +../../gsl/gsl_inline.h: + +../../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../../gsl/gsl_precision.h: + +../../gsl/gsl_types.h: + +../../gsl/gsl_nan.h: + +../../gsl/gsl_pow_int.h: + +../../gsl/gsl_minmax.h: + +../../gsl/gsl_vector.h: + +../../gsl/gsl_vector_complex_long_double.h: + +../../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../../gsl/gsl_complex.h: + +../../gsl/gsl_check_range.h: + +../../gsl/gsl_vector_long_double.h: + +../../gsl/gsl_block_long_double.h: + +../../gsl/gsl_vector_complex.h: + +../../gsl/gsl_block_complex_long_double.h: + +../../gsl/gsl_vector_complex_double.h: + +../../gsl/gsl_vector_double.h: + +../../gsl/gsl_block_double.h: + +../../gsl/gsl_block_complex_double.h: + +../../gsl/gsl_vector_complex_float.h: + +../../gsl/gsl_vector_float.h: + +../../gsl/gsl_block_float.h: + +../../gsl/gsl_block_complex_float.h: + +../../gsl/gsl_vector_ulong.h: + +../../gsl/gsl_block_ulong.h: + +../../gsl/gsl_vector_long.h: + +../../gsl/gsl_block_long.h: + +../../gsl/gsl_vector_uint.h: + +../../gsl/gsl_block_uint.h: + +../../gsl/gsl_vector_int.h: + +../../gsl/gsl_block_int.h: + +../../gsl/gsl_vector_ushort.h: + +../../gsl/gsl_block_ushort.h: + +../../gsl/gsl_vector_short.h: + +../../gsl/gsl_block_short.h: + +../../gsl/gsl_vector_uchar.h: + +../../gsl/gsl_block_uchar.h: + +../../gsl/gsl_vector_char.h: + +../../gsl/gsl_block_char.h: + +../../gsl/gsl_matrix.h: + +../../gsl/gsl_matrix_complex_long_double.h: + +../../gsl/gsl_matrix_complex_double.h: + +../../gsl/gsl_matrix_complex_float.h: + +../../gsl/gsl_matrix_long_double.h: + +../../gsl/gsl_matrix_double.h: + +../../gsl/gsl_matrix_float.h: + +../../gsl/gsl_matrix_ulong.h: + +../../gsl/gsl_matrix_long.h: + +../../gsl/gsl_matrix_uint.h: + +../../gsl/gsl_matrix_int.h: + +../../gsl/gsl_matrix_ushort.h: + +../../gsl/gsl_matrix_short.h: + +../../gsl/gsl_matrix_uchar.h: + +../../gsl/gsl_matrix_char.h: diff --git a/gsl-2.5/doc/examples/.deps/fitting3.Po b/gsl-2.5/doc/examples/.deps/fitting3.Po new file mode 100644 index 00000000..e9323e5e --- /dev/null +++ b/gsl-2.5/doc/examples/.deps/fitting3.Po @@ -0,0 +1,253 @@ +fitting3.o: fitting3.c /usr/include/stdc-predef.h /usr/include/stdio.h \ + /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../../gsl/gsl_randist.h ../../gsl/gsl_rng.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../../gsl/gsl_types.h \ + ../../gsl/gsl_errno.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../../gsl/gsl_inline.h ../../gsl/gsl_vector.h \ + ../../gsl/gsl_vector_complex_long_double.h ../../gsl/gsl_complex.h \ + ../../gsl/gsl_check_range.h ../../gsl/gsl_vector_long_double.h \ + ../../gsl/gsl_block_long_double.h ../../gsl/gsl_vector_complex.h \ + ../../gsl/gsl_block_complex_long_double.h \ + ../../gsl/gsl_vector_complex_double.h ../../gsl/gsl_vector_double.h \ + ../../gsl/gsl_block_double.h ../../gsl/gsl_block_complex_double.h \ + ../../gsl/gsl_vector_complex_float.h ../../gsl/gsl_vector_float.h \ + ../../gsl/gsl_block_float.h ../../gsl/gsl_block_complex_float.h \ + ../../gsl/gsl_vector_ulong.h ../../gsl/gsl_block_ulong.h \ + ../../gsl/gsl_vector_long.h ../../gsl/gsl_block_long.h \ + ../../gsl/gsl_vector_uint.h ../../gsl/gsl_block_uint.h \ + ../../gsl/gsl_vector_int.h ../../gsl/gsl_block_int.h \ + ../../gsl/gsl_vector_ushort.h ../../gsl/gsl_block_ushort.h \ + ../../gsl/gsl_vector_short.h ../../gsl/gsl_block_short.h \ + ../../gsl/gsl_vector_uchar.h ../../gsl/gsl_block_uchar.h \ + ../../gsl/gsl_vector_char.h ../../gsl/gsl_block_char.h \ + ../../gsl/gsl_matrix.h ../../gsl/gsl_matrix_complex_long_double.h \ + ../../gsl/gsl_matrix_complex_double.h \ + ../../gsl/gsl_matrix_complex_float.h ../../gsl/gsl_matrix_long_double.h \ + ../../gsl/gsl_matrix_double.h ../../gsl/gsl_matrix_float.h \ + ../../gsl/gsl_matrix_ulong.h ../../gsl/gsl_matrix_long.h \ + ../../gsl/gsl_matrix_uint.h ../../gsl/gsl_matrix_int.h \ + ../../gsl/gsl_matrix_ushort.h ../../gsl/gsl_matrix_short.h \ + ../../gsl/gsl_matrix_uchar.h ../../gsl/gsl_matrix_char.h + +/usr/include/stdc-predef.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../../gsl/gsl_randist.h: + +../../gsl/gsl_rng.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../../gsl/gsl_types.h: + +../../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../../gsl/gsl_inline.h: + +../../gsl/gsl_vector.h: + +../../gsl/gsl_vector_complex_long_double.h: + +../../gsl/gsl_complex.h: + +../../gsl/gsl_check_range.h: + +../../gsl/gsl_vector_long_double.h: + +../../gsl/gsl_block_long_double.h: + +../../gsl/gsl_vector_complex.h: + +../../gsl/gsl_block_complex_long_double.h: + +../../gsl/gsl_vector_complex_double.h: + +../../gsl/gsl_vector_double.h: + +../../gsl/gsl_block_double.h: + +../../gsl/gsl_block_complex_double.h: + +../../gsl/gsl_vector_complex_float.h: + +../../gsl/gsl_vector_float.h: + +../../gsl/gsl_block_float.h: + +../../gsl/gsl_block_complex_float.h: + +../../gsl/gsl_vector_ulong.h: + +../../gsl/gsl_block_ulong.h: + +../../gsl/gsl_vector_long.h: + +../../gsl/gsl_block_long.h: + +../../gsl/gsl_vector_uint.h: + +../../gsl/gsl_block_uint.h: + +../../gsl/gsl_vector_int.h: + +../../gsl/gsl_block_int.h: + +../../gsl/gsl_vector_ushort.h: + +../../gsl/gsl_block_ushort.h: + +../../gsl/gsl_vector_short.h: + +../../gsl/gsl_block_short.h: + +../../gsl/gsl_vector_uchar.h: + +../../gsl/gsl_block_uchar.h: + +../../gsl/gsl_vector_char.h: + +../../gsl/gsl_block_char.h: + +../../gsl/gsl_matrix.h: + +../../gsl/gsl_matrix_complex_long_double.h: + +../../gsl/gsl_matrix_complex_double.h: + +../../gsl/gsl_matrix_complex_float.h: + +../../gsl/gsl_matrix_long_double.h: + +../../gsl/gsl_matrix_double.h: + +../../gsl/gsl_matrix_float.h: + +../../gsl/gsl_matrix_ulong.h: + +../../gsl/gsl_matrix_long.h: + +../../gsl/gsl_matrix_uint.h: + +../../gsl/gsl_matrix_int.h: + +../../gsl/gsl_matrix_ushort.h: + +../../gsl/gsl_matrix_short.h: + +../../gsl/gsl_matrix_uchar.h: + +../../gsl/gsl_matrix_char.h: diff --git a/gsl-2.5/doc/examples/.deps/gaussfilt.Po b/gsl-2.5/doc/examples/.deps/gaussfilt.Po new file mode 100644 index 00000000..a7696762 --- /dev/null +++ b/gsl-2.5/doc/examples/.deps/gaussfilt.Po @@ -0,0 +1,296 @@ +gaussfilt.o: gaussfilt.c /usr/include/stdc-predef.h /usr/include/stdio.h \ + /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../../gsl/gsl_sys.h \ + ../../gsl/gsl_inline.h ../../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../../gsl/gsl_precision.h ../../gsl/gsl_types.h ../../gsl/gsl_nan.h \ + ../../gsl/gsl_pow_int.h ../../gsl/gsl_minmax.h ../../gsl/gsl_filter.h \ + ../../gsl/gsl_vector.h ../../gsl/gsl_vector_complex_long_double.h \ + ../../gsl/gsl_errno.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../../gsl/gsl_complex.h ../../gsl/gsl_check_range.h \ + ../../gsl/gsl_vector_long_double.h ../../gsl/gsl_block_long_double.h \ + ../../gsl/gsl_vector_complex.h ../../gsl/gsl_block_complex_long_double.h \ + ../../gsl/gsl_vector_complex_double.h ../../gsl/gsl_vector_double.h \ + ../../gsl/gsl_block_double.h ../../gsl/gsl_block_complex_double.h \ + ../../gsl/gsl_vector_complex_float.h ../../gsl/gsl_vector_float.h \ + ../../gsl/gsl_block_float.h ../../gsl/gsl_block_complex_float.h \ + ../../gsl/gsl_vector_ulong.h ../../gsl/gsl_block_ulong.h \ + ../../gsl/gsl_vector_long.h ../../gsl/gsl_block_long.h \ + ../../gsl/gsl_vector_uint.h ../../gsl/gsl_block_uint.h \ + ../../gsl/gsl_vector_int.h ../../gsl/gsl_block_int.h \ + ../../gsl/gsl_vector_ushort.h ../../gsl/gsl_block_ushort.h \ + ../../gsl/gsl_vector_short.h ../../gsl/gsl_block_short.h \ + ../../gsl/gsl_vector_uchar.h ../../gsl/gsl_block_uchar.h \ + ../../gsl/gsl_vector_char.h ../../gsl/gsl_block_char.h \ + ../../gsl/gsl_movstat.h ../../gsl/gsl_rng.h ../../gsl/gsl_randist.h \ + ../../gsl/gsl_matrix.h ../../gsl/gsl_matrix_complex_long_double.h \ + ../../gsl/gsl_matrix_complex_double.h \ + ../../gsl/gsl_matrix_complex_float.h ../../gsl/gsl_matrix_long_double.h \ + ../../gsl/gsl_matrix_double.h ../../gsl/gsl_matrix_float.h \ + ../../gsl/gsl_matrix_ulong.h ../../gsl/gsl_matrix_long.h \ + ../../gsl/gsl_matrix_uint.h ../../gsl/gsl_matrix_int.h \ + ../../gsl/gsl_matrix_ushort.h ../../gsl/gsl_matrix_short.h \ + ../../gsl/gsl_matrix_uchar.h ../../gsl/gsl_matrix_char.h + +/usr/include/stdc-predef.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../../gsl/gsl_sys.h: + +../../gsl/gsl_inline.h: + +../../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../../gsl/gsl_precision.h: + +../../gsl/gsl_types.h: + +../../gsl/gsl_nan.h: + +../../gsl/gsl_pow_int.h: + +../../gsl/gsl_minmax.h: + +../../gsl/gsl_filter.h: + +../../gsl/gsl_vector.h: + +../../gsl/gsl_vector_complex_long_double.h: + +../../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../../gsl/gsl_complex.h: + +../../gsl/gsl_check_range.h: + +../../gsl/gsl_vector_long_double.h: + +../../gsl/gsl_block_long_double.h: + +../../gsl/gsl_vector_complex.h: + +../../gsl/gsl_block_complex_long_double.h: + +../../gsl/gsl_vector_complex_double.h: + +../../gsl/gsl_vector_double.h: + +../../gsl/gsl_block_double.h: + +../../gsl/gsl_block_complex_double.h: + +../../gsl/gsl_vector_complex_float.h: + +../../gsl/gsl_vector_float.h: + +../../gsl/gsl_block_float.h: + +../../gsl/gsl_block_complex_float.h: + +../../gsl/gsl_vector_ulong.h: + +../../gsl/gsl_block_ulong.h: + +../../gsl/gsl_vector_long.h: + +../../gsl/gsl_block_long.h: + +../../gsl/gsl_vector_uint.h: + +../../gsl/gsl_block_uint.h: + +../../gsl/gsl_vector_int.h: + +../../gsl/gsl_block_int.h: + +../../gsl/gsl_vector_ushort.h: + +../../gsl/gsl_block_ushort.h: + +../../gsl/gsl_vector_short.h: + +../../gsl/gsl_block_short.h: + +../../gsl/gsl_vector_uchar.h: + +../../gsl/gsl_block_uchar.h: + +../../gsl/gsl_vector_char.h: + +../../gsl/gsl_block_char.h: + +../../gsl/gsl_movstat.h: + +../../gsl/gsl_rng.h: + +../../gsl/gsl_randist.h: + +../../gsl/gsl_matrix.h: + +../../gsl/gsl_matrix_complex_long_double.h: + +../../gsl/gsl_matrix_complex_double.h: + +../../gsl/gsl_matrix_complex_float.h: + +../../gsl/gsl_matrix_long_double.h: + +../../gsl/gsl_matrix_double.h: + +../../gsl/gsl_matrix_float.h: + +../../gsl/gsl_matrix_ulong.h: + +../../gsl/gsl_matrix_long.h: + +../../gsl/gsl_matrix_uint.h: + +../../gsl/gsl_matrix_int.h: + +../../gsl/gsl_matrix_ushort.h: + +../../gsl/gsl_matrix_short.h: + +../../gsl/gsl_matrix_uchar.h: + +../../gsl/gsl_matrix_char.h: diff --git a/gsl-2.5/doc/examples/.deps/gaussfilt2.Po b/gsl-2.5/doc/examples/.deps/gaussfilt2.Po new file mode 100644 index 00000000..ef849665 --- /dev/null +++ b/gsl-2.5/doc/examples/.deps/gaussfilt2.Po @@ -0,0 +1,296 @@ +gaussfilt2.o: gaussfilt2.c /usr/include/stdc-predef.h \ + /usr/include/stdio.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../../gsl/gsl_sys.h \ + ../../gsl/gsl_inline.h ../../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../../gsl/gsl_precision.h ../../gsl/gsl_types.h ../../gsl/gsl_nan.h \ + ../../gsl/gsl_pow_int.h ../../gsl/gsl_minmax.h ../../gsl/gsl_filter.h \ + ../../gsl/gsl_vector.h ../../gsl/gsl_vector_complex_long_double.h \ + ../../gsl/gsl_errno.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../../gsl/gsl_complex.h ../../gsl/gsl_check_range.h \ + ../../gsl/gsl_vector_long_double.h ../../gsl/gsl_block_long_double.h \ + ../../gsl/gsl_vector_complex.h ../../gsl/gsl_block_complex_long_double.h \ + ../../gsl/gsl_vector_complex_double.h ../../gsl/gsl_vector_double.h \ + ../../gsl/gsl_block_double.h ../../gsl/gsl_block_complex_double.h \ + ../../gsl/gsl_vector_complex_float.h ../../gsl/gsl_vector_float.h \ + ../../gsl/gsl_block_float.h ../../gsl/gsl_block_complex_float.h \ + ../../gsl/gsl_vector_ulong.h ../../gsl/gsl_block_ulong.h \ + ../../gsl/gsl_vector_long.h ../../gsl/gsl_block_long.h \ + ../../gsl/gsl_vector_uint.h ../../gsl/gsl_block_uint.h \ + ../../gsl/gsl_vector_int.h ../../gsl/gsl_block_int.h \ + ../../gsl/gsl_vector_ushort.h ../../gsl/gsl_block_ushort.h \ + ../../gsl/gsl_vector_short.h ../../gsl/gsl_block_short.h \ + ../../gsl/gsl_vector_uchar.h ../../gsl/gsl_block_uchar.h \ + ../../gsl/gsl_vector_char.h ../../gsl/gsl_block_char.h \ + ../../gsl/gsl_movstat.h ../../gsl/gsl_rng.h ../../gsl/gsl_randist.h \ + ../../gsl/gsl_matrix.h ../../gsl/gsl_matrix_complex_long_double.h \ + ../../gsl/gsl_matrix_complex_double.h \ + ../../gsl/gsl_matrix_complex_float.h ../../gsl/gsl_matrix_long_double.h \ + ../../gsl/gsl_matrix_double.h ../../gsl/gsl_matrix_float.h \ + ../../gsl/gsl_matrix_ulong.h ../../gsl/gsl_matrix_long.h \ + ../../gsl/gsl_matrix_uint.h ../../gsl/gsl_matrix_int.h \ + ../../gsl/gsl_matrix_ushort.h ../../gsl/gsl_matrix_short.h \ + ../../gsl/gsl_matrix_uchar.h ../../gsl/gsl_matrix_char.h + +/usr/include/stdc-predef.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../../gsl/gsl_sys.h: + +../../gsl/gsl_inline.h: + +../../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../../gsl/gsl_precision.h: + +../../gsl/gsl_types.h: + +../../gsl/gsl_nan.h: + +../../gsl/gsl_pow_int.h: + +../../gsl/gsl_minmax.h: + +../../gsl/gsl_filter.h: + +../../gsl/gsl_vector.h: + +../../gsl/gsl_vector_complex_long_double.h: + +../../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../../gsl/gsl_complex.h: + +../../gsl/gsl_check_range.h: + +../../gsl/gsl_vector_long_double.h: + +../../gsl/gsl_block_long_double.h: + +../../gsl/gsl_vector_complex.h: + +../../gsl/gsl_block_complex_long_double.h: + +../../gsl/gsl_vector_complex_double.h: + +../../gsl/gsl_vector_double.h: + +../../gsl/gsl_block_double.h: + +../../gsl/gsl_block_complex_double.h: + +../../gsl/gsl_vector_complex_float.h: + +../../gsl/gsl_vector_float.h: + +../../gsl/gsl_block_float.h: + +../../gsl/gsl_block_complex_float.h: + +../../gsl/gsl_vector_ulong.h: + +../../gsl/gsl_block_ulong.h: + +../../gsl/gsl_vector_long.h: + +../../gsl/gsl_block_long.h: + +../../gsl/gsl_vector_uint.h: + +../../gsl/gsl_block_uint.h: + +../../gsl/gsl_vector_int.h: + +../../gsl/gsl_block_int.h: + +../../gsl/gsl_vector_ushort.h: + +../../gsl/gsl_block_ushort.h: + +../../gsl/gsl_vector_short.h: + +../../gsl/gsl_block_short.h: + +../../gsl/gsl_vector_uchar.h: + +../../gsl/gsl_block_uchar.h: + +../../gsl/gsl_vector_char.h: + +../../gsl/gsl_block_char.h: + +../../gsl/gsl_movstat.h: + +../../gsl/gsl_rng.h: + +../../gsl/gsl_randist.h: + +../../gsl/gsl_matrix.h: + +../../gsl/gsl_matrix_complex_long_double.h: + +../../gsl/gsl_matrix_complex_double.h: + +../../gsl/gsl_matrix_complex_float.h: + +../../gsl/gsl_matrix_long_double.h: + +../../gsl/gsl_matrix_double.h: + +../../gsl/gsl_matrix_float.h: + +../../gsl/gsl_matrix_ulong.h: + +../../gsl/gsl_matrix_long.h: + +../../gsl/gsl_matrix_uint.h: + +../../gsl/gsl_matrix_int.h: + +../../gsl/gsl_matrix_ushort.h: + +../../gsl/gsl_matrix_short.h: + +../../gsl/gsl_matrix_uchar.h: + +../../gsl/gsl_matrix_char.h: diff --git a/gsl-2.5/doc/examples/.deps/histogram.Po b/gsl-2.5/doc/examples/.deps/histogram.Po new file mode 100644 index 00000000..42976c9b --- /dev/null +++ b/gsl-2.5/doc/examples/.deps/histogram.Po @@ -0,0 +1,88 @@ +histogram.o: histogram.c /usr/include/stdc-predef.h /usr/include/stdio.h \ + /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../../gsl/gsl_histogram.h + +/usr/include/stdc-predef.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../../gsl/gsl_histogram.h: diff --git a/gsl-2.5/doc/examples/.deps/histogram2d.Po b/gsl-2.5/doc/examples/.deps/histogram2d.Po new file mode 100644 index 00000000..8c31febc --- /dev/null +++ b/gsl-2.5/doc/examples/.deps/histogram2d.Po @@ -0,0 +1,112 @@ +histogram2d.o: histogram2d.c /usr/include/stdc-predef.h \ + /usr/include/stdio.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../../gsl/gsl_rng.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../../gsl/gsl_types.h \ + ../../gsl/gsl_errno.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../../gsl/gsl_inline.h ../../gsl/gsl_histogram2d.h + +/usr/include/stdc-predef.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../../gsl/gsl_rng.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../../gsl/gsl_types.h: + +../../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../../gsl/gsl_inline.h: + +../../gsl/gsl_histogram2d.h: diff --git a/gsl-2.5/doc/examples/.deps/ieee.Po b/gsl-2.5/doc/examples/.deps/ieee.Po new file mode 100644 index 00000000..ff98d0e3 --- /dev/null +++ b/gsl-2.5/doc/examples/.deps/ieee.Po @@ -0,0 +1,46 @@ +ieee.o: ieee.c /usr/include/stdc-predef.h /usr/include/stdio.h \ + /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../../gsl/gsl_ieee_utils.h + +/usr/include/stdc-predef.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../../gsl/gsl_ieee_utils.h: diff --git a/gsl-2.5/doc/examples/.deps/ieeeround.Po b/gsl-2.5/doc/examples/.deps/ieeeround.Po new file mode 100644 index 00000000..aad03862 --- /dev/null +++ b/gsl-2.5/doc/examples/.deps/ieeeround.Po @@ -0,0 +1,112 @@ +ieeeround.o: ieeeround.c /usr/include/stdc-predef.h /usr/include/stdio.h \ + /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../../gsl/gsl_sys.h ../../gsl/gsl_inline.h ../../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../../gsl/gsl_precision.h ../../gsl/gsl_types.h ../../gsl/gsl_nan.h \ + ../../gsl/gsl_pow_int.h ../../gsl/gsl_minmax.h \ + ../../gsl/gsl_ieee_utils.h + +/usr/include/stdc-predef.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../../gsl/gsl_sys.h: + +../../gsl/gsl_inline.h: + +../../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../../gsl/gsl_precision.h: + +../../gsl/gsl_types.h: + +../../gsl/gsl_nan.h: + +../../gsl/gsl_pow_int.h: + +../../gsl/gsl_minmax.h: + +../../gsl/gsl_ieee_utils.h: diff --git a/gsl-2.5/doc/examples/.deps/impulse.Po b/gsl-2.5/doc/examples/.deps/impulse.Po new file mode 100644 index 00000000..5385c510 --- /dev/null +++ b/gsl-2.5/doc/examples/.deps/impulse.Po @@ -0,0 +1,296 @@ +impulse.o: impulse.c /usr/include/stdc-predef.h /usr/include/stdio.h \ + /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../../gsl/gsl_sys.h \ + ../../gsl/gsl_inline.h ../../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../../gsl/gsl_precision.h ../../gsl/gsl_types.h ../../gsl/gsl_nan.h \ + ../../gsl/gsl_pow_int.h ../../gsl/gsl_minmax.h ../../gsl/gsl_filter.h \ + ../../gsl/gsl_vector.h ../../gsl/gsl_vector_complex_long_double.h \ + ../../gsl/gsl_errno.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../../gsl/gsl_complex.h ../../gsl/gsl_check_range.h \ + ../../gsl/gsl_vector_long_double.h ../../gsl/gsl_block_long_double.h \ + ../../gsl/gsl_vector_complex.h ../../gsl/gsl_block_complex_long_double.h \ + ../../gsl/gsl_vector_complex_double.h ../../gsl/gsl_vector_double.h \ + ../../gsl/gsl_block_double.h ../../gsl/gsl_block_complex_double.h \ + ../../gsl/gsl_vector_complex_float.h ../../gsl/gsl_vector_float.h \ + ../../gsl/gsl_block_float.h ../../gsl/gsl_block_complex_float.h \ + ../../gsl/gsl_vector_ulong.h ../../gsl/gsl_block_ulong.h \ + ../../gsl/gsl_vector_long.h ../../gsl/gsl_block_long.h \ + ../../gsl/gsl_vector_uint.h ../../gsl/gsl_block_uint.h \ + ../../gsl/gsl_vector_int.h ../../gsl/gsl_block_int.h \ + ../../gsl/gsl_vector_ushort.h ../../gsl/gsl_block_ushort.h \ + ../../gsl/gsl_vector_short.h ../../gsl/gsl_block_short.h \ + ../../gsl/gsl_vector_uchar.h ../../gsl/gsl_block_uchar.h \ + ../../gsl/gsl_vector_char.h ../../gsl/gsl_block_char.h \ + ../../gsl/gsl_movstat.h ../../gsl/gsl_rng.h ../../gsl/gsl_randist.h \ + ../../gsl/gsl_matrix.h ../../gsl/gsl_matrix_complex_long_double.h \ + ../../gsl/gsl_matrix_complex_double.h \ + ../../gsl/gsl_matrix_complex_float.h ../../gsl/gsl_matrix_long_double.h \ + ../../gsl/gsl_matrix_double.h ../../gsl/gsl_matrix_float.h \ + ../../gsl/gsl_matrix_ulong.h ../../gsl/gsl_matrix_long.h \ + ../../gsl/gsl_matrix_uint.h ../../gsl/gsl_matrix_int.h \ + ../../gsl/gsl_matrix_ushort.h ../../gsl/gsl_matrix_short.h \ + ../../gsl/gsl_matrix_uchar.h ../../gsl/gsl_matrix_char.h + +/usr/include/stdc-predef.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../../gsl/gsl_sys.h: + +../../gsl/gsl_inline.h: + +../../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../../gsl/gsl_precision.h: + +../../gsl/gsl_types.h: + +../../gsl/gsl_nan.h: + +../../gsl/gsl_pow_int.h: + +../../gsl/gsl_minmax.h: + +../../gsl/gsl_filter.h: + +../../gsl/gsl_vector.h: + +../../gsl/gsl_vector_complex_long_double.h: + +../../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../../gsl/gsl_complex.h: + +../../gsl/gsl_check_range.h: + +../../gsl/gsl_vector_long_double.h: + +../../gsl/gsl_block_long_double.h: + +../../gsl/gsl_vector_complex.h: + +../../gsl/gsl_block_complex_long_double.h: + +../../gsl/gsl_vector_complex_double.h: + +../../gsl/gsl_vector_double.h: + +../../gsl/gsl_block_double.h: + +../../gsl/gsl_block_complex_double.h: + +../../gsl/gsl_vector_complex_float.h: + +../../gsl/gsl_vector_float.h: + +../../gsl/gsl_block_float.h: + +../../gsl/gsl_block_complex_float.h: + +../../gsl/gsl_vector_ulong.h: + +../../gsl/gsl_block_ulong.h: + +../../gsl/gsl_vector_long.h: + +../../gsl/gsl_block_long.h: + +../../gsl/gsl_vector_uint.h: + +../../gsl/gsl_block_uint.h: + +../../gsl/gsl_vector_int.h: + +../../gsl/gsl_block_int.h: + +../../gsl/gsl_vector_ushort.h: + +../../gsl/gsl_block_ushort.h: + +../../gsl/gsl_vector_short.h: + +../../gsl/gsl_block_short.h: + +../../gsl/gsl_vector_uchar.h: + +../../gsl/gsl_block_uchar.h: + +../../gsl/gsl_vector_char.h: + +../../gsl/gsl_block_char.h: + +../../gsl/gsl_movstat.h: + +../../gsl/gsl_rng.h: + +../../gsl/gsl_randist.h: + +../../gsl/gsl_matrix.h: + +../../gsl/gsl_matrix_complex_long_double.h: + +../../gsl/gsl_matrix_complex_double.h: + +../../gsl/gsl_matrix_complex_float.h: + +../../gsl/gsl_matrix_long_double.h: + +../../gsl/gsl_matrix_double.h: + +../../gsl/gsl_matrix_float.h: + +../../gsl/gsl_matrix_ulong.h: + +../../gsl/gsl_matrix_long.h: + +../../gsl/gsl_matrix_uint.h: + +../../gsl/gsl_matrix_int.h: + +../../gsl/gsl_matrix_ushort.h: + +../../gsl/gsl_matrix_short.h: + +../../gsl/gsl_matrix_uchar.h: + +../../gsl/gsl_matrix_char.h: diff --git a/gsl-2.5/doc/examples/.deps/integration.Po b/gsl-2.5/doc/examples/.deps/integration.Po new file mode 100644 index 00000000..e051ee18 --- /dev/null +++ b/gsl-2.5/doc/examples/.deps/integration.Po @@ -0,0 +1,154 @@ +integration.o: integration.c /usr/include/stdc-predef.h \ + /usr/include/stdio.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../../gsl/gsl_integration.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../../gsl/gsl_math.h \ + ../../gsl/gsl_sys.h ../../gsl/gsl_inline.h ../../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../../gsl/gsl_precision.h ../../gsl/gsl_types.h ../../gsl/gsl_nan.h \ + ../../gsl/gsl_pow_int.h ../../gsl/gsl_minmax.h + +/usr/include/stdc-predef.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../../gsl/gsl_integration.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../../gsl/gsl_math.h: + +../../gsl/gsl_sys.h: + +../../gsl/gsl_inline.h: + +../../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../../gsl/gsl_precision.h: + +../../gsl/gsl_types.h: + +../../gsl/gsl_nan.h: + +../../gsl/gsl_pow_int.h: + +../../gsl/gsl_minmax.h: diff --git a/gsl-2.5/doc/examples/.deps/integration2.Po b/gsl-2.5/doc/examples/.deps/integration2.Po new file mode 100644 index 00000000..fd50dadd --- /dev/null +++ b/gsl-2.5/doc/examples/.deps/integration2.Po @@ -0,0 +1,159 @@ +integration2.o: integration2.c /usr/include/stdc-predef.h \ + /usr/include/stdio.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../../gsl/gsl_integration.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../../gsl/gsl_math.h \ + ../../gsl/gsl_sys.h ../../gsl/gsl_inline.h ../../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../../gsl/gsl_precision.h ../../gsl/gsl_types.h ../../gsl/gsl_nan.h \ + ../../gsl/gsl_pow_int.h ../../gsl/gsl_minmax.h ../../gsl/gsl_sf_gamma.h \ + ../../gsl/gsl_sf_result.h + +/usr/include/stdc-predef.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../../gsl/gsl_integration.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../../gsl/gsl_math.h: + +../../gsl/gsl_sys.h: + +../../gsl/gsl_inline.h: + +../../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../../gsl/gsl_precision.h: + +../../gsl/gsl_types.h: + +../../gsl/gsl_nan.h: + +../../gsl/gsl_pow_int.h: + +../../gsl/gsl_minmax.h: + +../../gsl/gsl_sf_gamma.h: + +../../gsl/gsl_sf_result.h: diff --git a/gsl-2.5/doc/examples/.deps/interp.Po b/gsl-2.5/doc/examples/.deps/interp.Po new file mode 100644 index 00000000..1103bf83 --- /dev/null +++ b/gsl-2.5/doc/examples/.deps/interp.Po @@ -0,0 +1,135 @@ +interp.o: interp.c /usr/include/stdc-predef.h /usr/include/stdlib.h \ + /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../../gsl/gsl_errno.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../../gsl/gsl_types.h ../../gsl/gsl_spline.h ../../gsl/gsl_interp.h \ + ../../gsl/gsl_inline.h + +/usr/include/stdc-predef.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../../gsl/gsl_types.h: + +../../gsl/gsl_spline.h: + +../../gsl/gsl_interp.h: + +../../gsl/gsl_inline.h: diff --git a/gsl-2.5/doc/examples/.deps/interp2d.Po b/gsl-2.5/doc/examples/.deps/interp2d.Po new file mode 100644 index 00000000..ca300539 --- /dev/null +++ b/gsl-2.5/doc/examples/.deps/interp2d.Po @@ -0,0 +1,159 @@ +interp2d.o: interp2d.c /usr/include/stdc-predef.h /usr/include/stdio.h \ + /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../../gsl/gsl_sys.h \ + ../../gsl/gsl_inline.h ../../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../../gsl/gsl_precision.h ../../gsl/gsl_types.h ../../gsl/gsl_nan.h \ + ../../gsl/gsl_pow_int.h ../../gsl/gsl_minmax.h ../../gsl/gsl_interp2d.h \ + ../../gsl/gsl_interp.h ../../gsl/gsl_spline2d.h + +/usr/include/stdc-predef.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../../gsl/gsl_sys.h: + +../../gsl/gsl_inline.h: + +../../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../../gsl/gsl_precision.h: + +../../gsl/gsl_types.h: + +../../gsl/gsl_nan.h: + +../../gsl/gsl_pow_int.h: + +../../gsl/gsl_minmax.h: + +../../gsl/gsl_interp2d.h: + +../../gsl/gsl_interp.h: + +../../gsl/gsl_spline2d.h: diff --git a/gsl-2.5/doc/examples/.deps/interp_compare.Po b/gsl-2.5/doc/examples/.deps/interp_compare.Po new file mode 100644 index 00000000..77975e0c --- /dev/null +++ b/gsl-2.5/doc/examples/.deps/interp_compare.Po @@ -0,0 +1,157 @@ +interp_compare.o: interp_compare.c /usr/include/stdc-predef.h \ + /usr/include/stdio.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../../gsl/gsl_math.h ../../gsl/gsl_sys.h ../../gsl/gsl_inline.h \ + ../../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../../gsl/gsl_precision.h ../../gsl/gsl_types.h ../../gsl/gsl_nan.h \ + ../../gsl/gsl_pow_int.h ../../gsl/gsl_minmax.h ../../gsl/gsl_spline.h \ + ../../gsl/gsl_interp.h + +/usr/include/stdc-predef.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../../gsl/gsl_math.h: + +../../gsl/gsl_sys.h: + +../../gsl/gsl_inline.h: + +../../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../../gsl/gsl_precision.h: + +../../gsl/gsl_types.h: + +../../gsl/gsl_nan.h: + +../../gsl/gsl_pow_int.h: + +../../gsl/gsl_minmax.h: + +../../gsl/gsl_spline.h: + +../../gsl/gsl_interp.h: diff --git a/gsl-2.5/doc/examples/.deps/interpp.Po b/gsl-2.5/doc/examples/.deps/interpp.Po new file mode 100644 index 00000000..96305cc8 --- /dev/null +++ b/gsl-2.5/doc/examples/.deps/interpp.Po @@ -0,0 +1,135 @@ +interpp.o: interpp.c /usr/include/stdc-predef.h /usr/include/stdlib.h \ + /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../../gsl/gsl_errno.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../../gsl/gsl_types.h ../../gsl/gsl_spline.h ../../gsl/gsl_interp.h \ + ../../gsl/gsl_inline.h + +/usr/include/stdc-predef.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../../gsl/gsl_types.h: + +../../gsl/gsl_spline.h: + +../../gsl/gsl_interp.h: + +../../gsl/gsl_inline.h: diff --git a/gsl-2.5/doc/examples/.deps/intro.Po b/gsl-2.5/doc/examples/.deps/intro.Po new file mode 100644 index 00000000..6b8604fc --- /dev/null +++ b/gsl-2.5/doc/examples/.deps/intro.Po @@ -0,0 +1,100 @@ +intro.o: intro.c /usr/include/stdc-predef.h /usr/include/stdio.h \ + /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../../gsl/gsl_sf_bessel.h \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/byteswap.h \ + /usr/include/bits/byteswap-16.h /usr/include/sys/types.h \ + /usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib-float.h \ + ../../gsl/gsl_mode.h ../../gsl/gsl_inline.h ../../gsl/gsl_precision.h \ + ../../gsl/gsl_types.h ../../gsl/gsl_sf_result.h + +/usr/include/stdc-predef.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../../gsl/gsl_sf_bessel.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../../gsl/gsl_mode.h: + +../../gsl/gsl_inline.h: + +../../gsl/gsl_precision.h: + +../../gsl/gsl_types.h: + +../../gsl/gsl_sf_result.h: diff --git a/gsl-2.5/doc/examples/.deps/largefit.Po b/gsl-2.5/doc/examples/.deps/largefit.Po new file mode 100644 index 00000000..92e9f073 --- /dev/null +++ b/gsl-2.5/doc/examples/.deps/largefit.Po @@ -0,0 +1,303 @@ +largefit.o: largefit.c /usr/include/stdc-predef.h ../../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../../gsl/gsl_sys.h \ + ../../gsl/gsl_inline.h ../../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../../gsl/gsl_precision.h ../../gsl/gsl_types.h ../../gsl/gsl_nan.h \ + ../../gsl/gsl_pow_int.h ../../gsl/gsl_minmax.h ../../gsl/gsl_vector.h \ + ../../gsl/gsl_vector_complex_long_double.h /usr/include/stdlib.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../../gsl/gsl_complex.h ../../gsl/gsl_check_range.h \ + ../../gsl/gsl_vector_long_double.h ../../gsl/gsl_block_long_double.h \ + ../../gsl/gsl_vector_complex.h ../../gsl/gsl_block_complex_long_double.h \ + ../../gsl/gsl_vector_complex_double.h ../../gsl/gsl_vector_double.h \ + ../../gsl/gsl_block_double.h ../../gsl/gsl_block_complex_double.h \ + ../../gsl/gsl_vector_complex_float.h ../../gsl/gsl_vector_float.h \ + ../../gsl/gsl_block_float.h ../../gsl/gsl_block_complex_float.h \ + ../../gsl/gsl_vector_ulong.h ../../gsl/gsl_block_ulong.h \ + ../../gsl/gsl_vector_long.h ../../gsl/gsl_block_long.h \ + ../../gsl/gsl_vector_uint.h ../../gsl/gsl_block_uint.h \ + ../../gsl/gsl_vector_int.h ../../gsl/gsl_block_int.h \ + ../../gsl/gsl_vector_ushort.h ../../gsl/gsl_block_ushort.h \ + ../../gsl/gsl_vector_short.h ../../gsl/gsl_block_short.h \ + ../../gsl/gsl_vector_uchar.h ../../gsl/gsl_block_uchar.h \ + ../../gsl/gsl_vector_char.h ../../gsl/gsl_block_char.h \ + ../../gsl/gsl_matrix.h ../../gsl/gsl_matrix_complex_long_double.h \ + ../../gsl/gsl_matrix_complex_double.h \ + ../../gsl/gsl_matrix_complex_float.h ../../gsl/gsl_matrix_long_double.h \ + ../../gsl/gsl_matrix_double.h ../../gsl/gsl_matrix_float.h \ + ../../gsl/gsl_matrix_ulong.h ../../gsl/gsl_matrix_long.h \ + ../../gsl/gsl_matrix_uint.h ../../gsl/gsl_matrix_int.h \ + ../../gsl/gsl_matrix_ushort.h ../../gsl/gsl_matrix_short.h \ + ../../gsl/gsl_matrix_uchar.h ../../gsl/gsl_matrix_char.h \ + ../../gsl/gsl_rng.h ../../gsl/gsl_randist.h ../../gsl/gsl_multifit.h \ + ../../gsl/gsl_multilarge.h ../../gsl/gsl_blas.h \ + ../../gsl/gsl_blas_types.h ../../gsl/gsl_cblas.h + +/usr/include/stdc-predef.h: + +../../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../../gsl/gsl_sys.h: + +../../gsl/gsl_inline.h: + +../../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../../gsl/gsl_precision.h: + +../../gsl/gsl_types.h: + +../../gsl/gsl_nan.h: + +../../gsl/gsl_pow_int.h: + +../../gsl/gsl_minmax.h: + +../../gsl/gsl_vector.h: + +../../gsl/gsl_vector_complex_long_double.h: + +/usr/include/stdlib.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../../gsl/gsl_complex.h: + +../../gsl/gsl_check_range.h: + +../../gsl/gsl_vector_long_double.h: + +../../gsl/gsl_block_long_double.h: + +../../gsl/gsl_vector_complex.h: + +../../gsl/gsl_block_complex_long_double.h: + +../../gsl/gsl_vector_complex_double.h: + +../../gsl/gsl_vector_double.h: + +../../gsl/gsl_block_double.h: + +../../gsl/gsl_block_complex_double.h: + +../../gsl/gsl_vector_complex_float.h: + +../../gsl/gsl_vector_float.h: + +../../gsl/gsl_block_float.h: + +../../gsl/gsl_block_complex_float.h: + +../../gsl/gsl_vector_ulong.h: + +../../gsl/gsl_block_ulong.h: + +../../gsl/gsl_vector_long.h: + +../../gsl/gsl_block_long.h: + +../../gsl/gsl_vector_uint.h: + +../../gsl/gsl_block_uint.h: + +../../gsl/gsl_vector_int.h: + +../../gsl/gsl_block_int.h: + +../../gsl/gsl_vector_ushort.h: + +../../gsl/gsl_block_ushort.h: + +../../gsl/gsl_vector_short.h: + +../../gsl/gsl_block_short.h: + +../../gsl/gsl_vector_uchar.h: + +../../gsl/gsl_block_uchar.h: + +../../gsl/gsl_vector_char.h: + +../../gsl/gsl_block_char.h: + +../../gsl/gsl_matrix.h: + +../../gsl/gsl_matrix_complex_long_double.h: + +../../gsl/gsl_matrix_complex_double.h: + +../../gsl/gsl_matrix_complex_float.h: + +../../gsl/gsl_matrix_long_double.h: + +../../gsl/gsl_matrix_double.h: + +../../gsl/gsl_matrix_float.h: + +../../gsl/gsl_matrix_ulong.h: + +../../gsl/gsl_matrix_long.h: + +../../gsl/gsl_matrix_uint.h: + +../../gsl/gsl_matrix_int.h: + +../../gsl/gsl_matrix_ushort.h: + +../../gsl/gsl_matrix_short.h: + +../../gsl/gsl_matrix_uchar.h: + +../../gsl/gsl_matrix_char.h: + +../../gsl/gsl_rng.h: + +../../gsl/gsl_randist.h: + +../../gsl/gsl_multifit.h: + +../../gsl/gsl_multilarge.h: + +../../gsl/gsl_blas.h: + +../../gsl/gsl_blas_types.h: + +../../gsl/gsl_cblas.h: diff --git a/gsl-2.5/doc/examples/.deps/linalglu.Po b/gsl-2.5/doc/examples/.deps/linalglu.Po new file mode 100644 index 00000000..14cb93b8 --- /dev/null +++ b/gsl-2.5/doc/examples/.deps/linalglu.Po @@ -0,0 +1,301 @@ +linalglu.o: linalglu.c /usr/include/stdc-predef.h /usr/include/stdio.h \ + /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../../gsl/gsl_linalg.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../../gsl/gsl_mode.h \ + ../../gsl/gsl_inline.h ../../gsl/gsl_permutation.h ../../gsl/gsl_types.h \ + ../../gsl/gsl_errno.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../../gsl/gsl_check_range.h ../../gsl/gsl_vector.h \ + ../../gsl/gsl_vector_complex_long_double.h ../../gsl/gsl_complex.h \ + ../../gsl/gsl_vector_long_double.h ../../gsl/gsl_block_long_double.h \ + ../../gsl/gsl_vector_complex.h ../../gsl/gsl_block_complex_long_double.h \ + ../../gsl/gsl_vector_complex_double.h ../../gsl/gsl_vector_double.h \ + ../../gsl/gsl_block_double.h ../../gsl/gsl_block_complex_double.h \ + ../../gsl/gsl_vector_complex_float.h ../../gsl/gsl_vector_float.h \ + ../../gsl/gsl_block_float.h ../../gsl/gsl_block_complex_float.h \ + ../../gsl/gsl_vector_ulong.h ../../gsl/gsl_block_ulong.h \ + ../../gsl/gsl_vector_long.h ../../gsl/gsl_block_long.h \ + ../../gsl/gsl_vector_uint.h ../../gsl/gsl_block_uint.h \ + ../../gsl/gsl_vector_int.h ../../gsl/gsl_block_int.h \ + ../../gsl/gsl_vector_ushort.h ../../gsl/gsl_block_ushort.h \ + ../../gsl/gsl_vector_short.h ../../gsl/gsl_block_short.h \ + ../../gsl/gsl_vector_uchar.h ../../gsl/gsl_block_uchar.h \ + ../../gsl/gsl_vector_char.h ../../gsl/gsl_block_char.h \ + ../../gsl/gsl_matrix.h ../../gsl/gsl_matrix_complex_long_double.h \ + ../../gsl/gsl_matrix_complex_double.h \ + ../../gsl/gsl_matrix_complex_float.h ../../gsl/gsl_matrix_long_double.h \ + ../../gsl/gsl_matrix_double.h ../../gsl/gsl_matrix_float.h \ + ../../gsl/gsl_matrix_ulong.h ../../gsl/gsl_matrix_long.h \ + ../../gsl/gsl_matrix_uint.h ../../gsl/gsl_matrix_int.h \ + ../../gsl/gsl_matrix_ushort.h ../../gsl/gsl_matrix_short.h \ + ../../gsl/gsl_matrix_uchar.h ../../gsl/gsl_matrix_char.h \ + ../../gsl/gsl_math.h /usr/include/math.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../../gsl/gsl_sys.h \ + ../../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../../gsl/gsl_precision.h ../../gsl/gsl_nan.h ../../gsl/gsl_pow_int.h \ + ../../gsl/gsl_minmax.h ../../gsl/gsl_blas.h ../../gsl/gsl_blas_types.h \ + ../../gsl/gsl_cblas.h + +/usr/include/stdc-predef.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../../gsl/gsl_linalg.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../../gsl/gsl_mode.h: + +../../gsl/gsl_inline.h: + +../../gsl/gsl_permutation.h: + +../../gsl/gsl_types.h: + +../../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../../gsl/gsl_check_range.h: + +../../gsl/gsl_vector.h: + +../../gsl/gsl_vector_complex_long_double.h: + +../../gsl/gsl_complex.h: + +../../gsl/gsl_vector_long_double.h: + +../../gsl/gsl_block_long_double.h: + +../../gsl/gsl_vector_complex.h: + +../../gsl/gsl_block_complex_long_double.h: + +../../gsl/gsl_vector_complex_double.h: + +../../gsl/gsl_vector_double.h: + +../../gsl/gsl_block_double.h: + +../../gsl/gsl_block_complex_double.h: + +../../gsl/gsl_vector_complex_float.h: + +../../gsl/gsl_vector_float.h: + +../../gsl/gsl_block_float.h: + +../../gsl/gsl_block_complex_float.h: + +../../gsl/gsl_vector_ulong.h: + +../../gsl/gsl_block_ulong.h: + +../../gsl/gsl_vector_long.h: + +../../gsl/gsl_block_long.h: + +../../gsl/gsl_vector_uint.h: + +../../gsl/gsl_block_uint.h: + +../../gsl/gsl_vector_int.h: + +../../gsl/gsl_block_int.h: + +../../gsl/gsl_vector_ushort.h: + +../../gsl/gsl_block_ushort.h: + +../../gsl/gsl_vector_short.h: + +../../gsl/gsl_block_short.h: + +../../gsl/gsl_vector_uchar.h: + +../../gsl/gsl_block_uchar.h: + +../../gsl/gsl_vector_char.h: + +../../gsl/gsl_block_char.h: + +../../gsl/gsl_matrix.h: + +../../gsl/gsl_matrix_complex_long_double.h: + +../../gsl/gsl_matrix_complex_double.h: + +../../gsl/gsl_matrix_complex_float.h: + +../../gsl/gsl_matrix_long_double.h: + +../../gsl/gsl_matrix_double.h: + +../../gsl/gsl_matrix_float.h: + +../../gsl/gsl_matrix_ulong.h: + +../../gsl/gsl_matrix_long.h: + +../../gsl/gsl_matrix_uint.h: + +../../gsl/gsl_matrix_int.h: + +../../gsl/gsl_matrix_ushort.h: + +../../gsl/gsl_matrix_short.h: + +../../gsl/gsl_matrix_uchar.h: + +../../gsl/gsl_matrix_char.h: + +../../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../../gsl/gsl_sys.h: + +../../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../../gsl/gsl_precision.h: + +../../gsl/gsl_nan.h: + +../../gsl/gsl_pow_int.h: + +../../gsl/gsl_minmax.h: + +../../gsl/gsl_blas.h: + +../../gsl/gsl_blas_types.h: + +../../gsl/gsl_cblas.h: diff --git a/gsl-2.5/doc/examples/.deps/matrix.Po b/gsl-2.5/doc/examples/.deps/matrix.Po new file mode 100644 index 00000000..dc66ed81 --- /dev/null +++ b/gsl-2.5/doc/examples/.deps/matrix.Po @@ -0,0 +1,225 @@ +matrix.o: matrix.c /usr/include/stdc-predef.h /usr/include/stdio.h \ + /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../../gsl/gsl_matrix.h \ + ../../gsl/gsl_matrix_complex_long_double.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../../gsl/gsl_types.h \ + ../../gsl/gsl_errno.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../../gsl/gsl_complex.h ../../gsl/gsl_check_range.h \ + ../../gsl/gsl_vector_complex_long_double.h \ + ../../gsl/gsl_vector_long_double.h ../../gsl/gsl_inline.h \ + ../../gsl/gsl_block_long_double.h ../../gsl/gsl_vector_complex.h \ + ../../gsl/gsl_block_complex_long_double.h \ + ../../gsl/gsl_matrix_complex_double.h \ + ../../gsl/gsl_vector_complex_double.h ../../gsl/gsl_vector_double.h \ + ../../gsl/gsl_block_double.h ../../gsl/gsl_block_complex_double.h \ + ../../gsl/gsl_matrix_complex_float.h \ + ../../gsl/gsl_vector_complex_float.h ../../gsl/gsl_vector_float.h \ + ../../gsl/gsl_block_float.h ../../gsl/gsl_block_complex_float.h \ + ../../gsl/gsl_matrix_long_double.h ../../gsl/gsl_matrix_double.h \ + ../../gsl/gsl_matrix_float.h ../../gsl/gsl_matrix_ulong.h \ + ../../gsl/gsl_vector_ulong.h ../../gsl/gsl_block_ulong.h \ + ../../gsl/gsl_matrix_long.h ../../gsl/gsl_vector_long.h \ + ../../gsl/gsl_block_long.h ../../gsl/gsl_matrix_uint.h \ + ../../gsl/gsl_vector_uint.h ../../gsl/gsl_block_uint.h \ + ../../gsl/gsl_matrix_int.h ../../gsl/gsl_vector_int.h \ + ../../gsl/gsl_block_int.h ../../gsl/gsl_matrix_ushort.h \ + ../../gsl/gsl_vector_ushort.h ../../gsl/gsl_block_ushort.h \ + ../../gsl/gsl_matrix_short.h ../../gsl/gsl_vector_short.h \ + ../../gsl/gsl_block_short.h ../../gsl/gsl_matrix_uchar.h \ + ../../gsl/gsl_vector_uchar.h ../../gsl/gsl_block_uchar.h \ + ../../gsl/gsl_matrix_char.h ../../gsl/gsl_vector_char.h \ + ../../gsl/gsl_block_char.h + +/usr/include/stdc-predef.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../../gsl/gsl_matrix.h: + +../../gsl/gsl_matrix_complex_long_double.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../../gsl/gsl_types.h: + +../../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../../gsl/gsl_complex.h: + +../../gsl/gsl_check_range.h: + +../../gsl/gsl_vector_complex_long_double.h: + +../../gsl/gsl_vector_long_double.h: + +../../gsl/gsl_inline.h: + +../../gsl/gsl_block_long_double.h: + +../../gsl/gsl_vector_complex.h: + +../../gsl/gsl_block_complex_long_double.h: + +../../gsl/gsl_matrix_complex_double.h: + +../../gsl/gsl_vector_complex_double.h: + +../../gsl/gsl_vector_double.h: + +../../gsl/gsl_block_double.h: + +../../gsl/gsl_block_complex_double.h: + +../../gsl/gsl_matrix_complex_float.h: + +../../gsl/gsl_vector_complex_float.h: + +../../gsl/gsl_vector_float.h: + +../../gsl/gsl_block_float.h: + +../../gsl/gsl_block_complex_float.h: + +../../gsl/gsl_matrix_long_double.h: + +../../gsl/gsl_matrix_double.h: + +../../gsl/gsl_matrix_float.h: + +../../gsl/gsl_matrix_ulong.h: + +../../gsl/gsl_vector_ulong.h: + +../../gsl/gsl_block_ulong.h: + +../../gsl/gsl_matrix_long.h: + +../../gsl/gsl_vector_long.h: + +../../gsl/gsl_block_long.h: + +../../gsl/gsl_matrix_uint.h: + +../../gsl/gsl_vector_uint.h: + +../../gsl/gsl_block_uint.h: + +../../gsl/gsl_matrix_int.h: + +../../gsl/gsl_vector_int.h: + +../../gsl/gsl_block_int.h: + +../../gsl/gsl_matrix_ushort.h: + +../../gsl/gsl_vector_ushort.h: + +../../gsl/gsl_block_ushort.h: + +../../gsl/gsl_matrix_short.h: + +../../gsl/gsl_vector_short.h: + +../../gsl/gsl_block_short.h: + +../../gsl/gsl_matrix_uchar.h: + +../../gsl/gsl_vector_uchar.h: + +../../gsl/gsl_block_uchar.h: + +../../gsl/gsl_matrix_char.h: + +../../gsl/gsl_vector_char.h: + +../../gsl/gsl_block_char.h: diff --git a/gsl-2.5/doc/examples/.deps/matrixw.Po b/gsl-2.5/doc/examples/.deps/matrixw.Po new file mode 100644 index 00000000..ac95c86d --- /dev/null +++ b/gsl-2.5/doc/examples/.deps/matrixw.Po @@ -0,0 +1,225 @@ +matrixw.o: matrixw.c /usr/include/stdc-predef.h /usr/include/stdio.h \ + /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../../gsl/gsl_matrix.h \ + ../../gsl/gsl_matrix_complex_long_double.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../../gsl/gsl_types.h \ + ../../gsl/gsl_errno.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../../gsl/gsl_complex.h ../../gsl/gsl_check_range.h \ + ../../gsl/gsl_vector_complex_long_double.h \ + ../../gsl/gsl_vector_long_double.h ../../gsl/gsl_inline.h \ + ../../gsl/gsl_block_long_double.h ../../gsl/gsl_vector_complex.h \ + ../../gsl/gsl_block_complex_long_double.h \ + ../../gsl/gsl_matrix_complex_double.h \ + ../../gsl/gsl_vector_complex_double.h ../../gsl/gsl_vector_double.h \ + ../../gsl/gsl_block_double.h ../../gsl/gsl_block_complex_double.h \ + ../../gsl/gsl_matrix_complex_float.h \ + ../../gsl/gsl_vector_complex_float.h ../../gsl/gsl_vector_float.h \ + ../../gsl/gsl_block_float.h ../../gsl/gsl_block_complex_float.h \ + ../../gsl/gsl_matrix_long_double.h ../../gsl/gsl_matrix_double.h \ + ../../gsl/gsl_matrix_float.h ../../gsl/gsl_matrix_ulong.h \ + ../../gsl/gsl_vector_ulong.h ../../gsl/gsl_block_ulong.h \ + ../../gsl/gsl_matrix_long.h ../../gsl/gsl_vector_long.h \ + ../../gsl/gsl_block_long.h ../../gsl/gsl_matrix_uint.h \ + ../../gsl/gsl_vector_uint.h ../../gsl/gsl_block_uint.h \ + ../../gsl/gsl_matrix_int.h ../../gsl/gsl_vector_int.h \ + ../../gsl/gsl_block_int.h ../../gsl/gsl_matrix_ushort.h \ + ../../gsl/gsl_vector_ushort.h ../../gsl/gsl_block_ushort.h \ + ../../gsl/gsl_matrix_short.h ../../gsl/gsl_vector_short.h \ + ../../gsl/gsl_block_short.h ../../gsl/gsl_matrix_uchar.h \ + ../../gsl/gsl_vector_uchar.h ../../gsl/gsl_block_uchar.h \ + ../../gsl/gsl_matrix_char.h ../../gsl/gsl_vector_char.h \ + ../../gsl/gsl_block_char.h + +/usr/include/stdc-predef.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../../gsl/gsl_matrix.h: + +../../gsl/gsl_matrix_complex_long_double.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../../gsl/gsl_types.h: + +../../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../../gsl/gsl_complex.h: + +../../gsl/gsl_check_range.h: + +../../gsl/gsl_vector_complex_long_double.h: + +../../gsl/gsl_vector_long_double.h: + +../../gsl/gsl_inline.h: + +../../gsl/gsl_block_long_double.h: + +../../gsl/gsl_vector_complex.h: + +../../gsl/gsl_block_complex_long_double.h: + +../../gsl/gsl_matrix_complex_double.h: + +../../gsl/gsl_vector_complex_double.h: + +../../gsl/gsl_vector_double.h: + +../../gsl/gsl_block_double.h: + +../../gsl/gsl_block_complex_double.h: + +../../gsl/gsl_matrix_complex_float.h: + +../../gsl/gsl_vector_complex_float.h: + +../../gsl/gsl_vector_float.h: + +../../gsl/gsl_block_float.h: + +../../gsl/gsl_block_complex_float.h: + +../../gsl/gsl_matrix_long_double.h: + +../../gsl/gsl_matrix_double.h: + +../../gsl/gsl_matrix_float.h: + +../../gsl/gsl_matrix_ulong.h: + +../../gsl/gsl_vector_ulong.h: + +../../gsl/gsl_block_ulong.h: + +../../gsl/gsl_matrix_long.h: + +../../gsl/gsl_vector_long.h: + +../../gsl/gsl_block_long.h: + +../../gsl/gsl_matrix_uint.h: + +../../gsl/gsl_vector_uint.h: + +../../gsl/gsl_block_uint.h: + +../../gsl/gsl_matrix_int.h: + +../../gsl/gsl_vector_int.h: + +../../gsl/gsl_block_int.h: + +../../gsl/gsl_matrix_ushort.h: + +../../gsl/gsl_vector_ushort.h: + +../../gsl/gsl_block_ushort.h: + +../../gsl/gsl_matrix_short.h: + +../../gsl/gsl_vector_short.h: + +../../gsl/gsl_block_short.h: + +../../gsl/gsl_matrix_uchar.h: + +../../gsl/gsl_vector_uchar.h: + +../../gsl/gsl_block_uchar.h: + +../../gsl/gsl_matrix_char.h: + +../../gsl/gsl_vector_char.h: + +../../gsl/gsl_block_char.h: diff --git a/gsl-2.5/doc/examples/.deps/min.Po b/gsl-2.5/doc/examples/.deps/min.Po new file mode 100644 index 00000000..58cbb431 --- /dev/null +++ b/gsl-2.5/doc/examples/.deps/min.Po @@ -0,0 +1,171 @@ +min.o: min.c /usr/include/stdc-predef.h /usr/include/stdio.h \ + /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../../gsl/gsl_errno.h /usr/include/errno.h \ + /usr/include/bits/errno.h /usr/include/linux/errno.h \ + /usr/include/asm/errno.h /usr/include/asm-generic/errno.h \ + /usr/include/asm-generic/errno-base.h ../../gsl/gsl_types.h \ + ../../gsl/gsl_math.h /usr/include/math.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../../gsl/gsl_sys.h \ + ../../gsl/gsl_inline.h ../../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../../gsl/gsl_precision.h ../../gsl/gsl_nan.h ../../gsl/gsl_pow_int.h \ + ../../gsl/gsl_minmax.h ../../gsl/gsl_min.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h + +/usr/include/stdc-predef.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../../gsl/gsl_types.h: + +../../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../../gsl/gsl_sys.h: + +../../gsl/gsl_inline.h: + +../../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../../gsl/gsl_precision.h: + +../../gsl/gsl_nan.h: + +../../gsl/gsl_pow_int.h: + +../../gsl/gsl_minmax.h: + +../../gsl/gsl_min.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: diff --git a/gsl-2.5/doc/examples/.deps/monte.Po b/gsl-2.5/doc/examples/.deps/monte.Po new file mode 100644 index 00000000..1124846b --- /dev/null +++ b/gsl-2.5/doc/examples/.deps/monte.Po @@ -0,0 +1,181 @@ +monte.o: monte.c /usr/include/stdc-predef.h /usr/include/stdlib.h \ + /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../../gsl/gsl_sys.h \ + ../../gsl/gsl_inline.h ../../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../../gsl/gsl_precision.h ../../gsl/gsl_types.h ../../gsl/gsl_nan.h \ + ../../gsl/gsl_pow_int.h ../../gsl/gsl_minmax.h ../../gsl/gsl_monte.h \ + ../../gsl/gsl_monte_plain.h /usr/include/stdio.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../../gsl/gsl_rng.h ../../gsl/gsl_errno.h \ + /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../../gsl/gsl_monte_miser.h ../../gsl/gsl_monte_vegas.h + +/usr/include/stdc-predef.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../../gsl/gsl_sys.h: + +../../gsl/gsl_inline.h: + +../../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../../gsl/gsl_precision.h: + +../../gsl/gsl_types.h: + +../../gsl/gsl_nan.h: + +../../gsl/gsl_pow_int.h: + +../../gsl/gsl_minmax.h: + +../../gsl/gsl_monte.h: + +../../gsl/gsl_monte_plain.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../../gsl/gsl_rng.h: + +../../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../../gsl/gsl_monte_miser.h: + +../../gsl/gsl_monte_vegas.h: diff --git a/gsl-2.5/doc/examples/.deps/movstat1.Po b/gsl-2.5/doc/examples/.deps/movstat1.Po new file mode 100644 index 00000000..6eefdea9 --- /dev/null +++ b/gsl-2.5/doc/examples/.deps/movstat1.Po @@ -0,0 +1,294 @@ +movstat1.o: movstat1.c /usr/include/stdc-predef.h /usr/include/stdio.h \ + /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../../gsl/gsl_sys.h \ + ../../gsl/gsl_inline.h ../../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../../gsl/gsl_precision.h ../../gsl/gsl_types.h ../../gsl/gsl_nan.h \ + ../../gsl/gsl_pow_int.h ../../gsl/gsl_minmax.h ../../gsl/gsl_movstat.h \ + ../../gsl/gsl_vector.h ../../gsl/gsl_vector_complex_long_double.h \ + ../../gsl/gsl_errno.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../../gsl/gsl_complex.h ../../gsl/gsl_check_range.h \ + ../../gsl/gsl_vector_long_double.h ../../gsl/gsl_block_long_double.h \ + ../../gsl/gsl_vector_complex.h ../../gsl/gsl_block_complex_long_double.h \ + ../../gsl/gsl_vector_complex_double.h ../../gsl/gsl_vector_double.h \ + ../../gsl/gsl_block_double.h ../../gsl/gsl_block_complex_double.h \ + ../../gsl/gsl_vector_complex_float.h ../../gsl/gsl_vector_float.h \ + ../../gsl/gsl_block_float.h ../../gsl/gsl_block_complex_float.h \ + ../../gsl/gsl_vector_ulong.h ../../gsl/gsl_block_ulong.h \ + ../../gsl/gsl_vector_long.h ../../gsl/gsl_block_long.h \ + ../../gsl/gsl_vector_uint.h ../../gsl/gsl_block_uint.h \ + ../../gsl/gsl_vector_int.h ../../gsl/gsl_block_int.h \ + ../../gsl/gsl_vector_ushort.h ../../gsl/gsl_block_ushort.h \ + ../../gsl/gsl_vector_short.h ../../gsl/gsl_block_short.h \ + ../../gsl/gsl_vector_uchar.h ../../gsl/gsl_block_uchar.h \ + ../../gsl/gsl_vector_char.h ../../gsl/gsl_block_char.h \ + ../../gsl/gsl_rng.h ../../gsl/gsl_randist.h ../../gsl/gsl_matrix.h \ + ../../gsl/gsl_matrix_complex_long_double.h \ + ../../gsl/gsl_matrix_complex_double.h \ + ../../gsl/gsl_matrix_complex_float.h ../../gsl/gsl_matrix_long_double.h \ + ../../gsl/gsl_matrix_double.h ../../gsl/gsl_matrix_float.h \ + ../../gsl/gsl_matrix_ulong.h ../../gsl/gsl_matrix_long.h \ + ../../gsl/gsl_matrix_uint.h ../../gsl/gsl_matrix_int.h \ + ../../gsl/gsl_matrix_ushort.h ../../gsl/gsl_matrix_short.h \ + ../../gsl/gsl_matrix_uchar.h ../../gsl/gsl_matrix_char.h + +/usr/include/stdc-predef.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../../gsl/gsl_sys.h: + +../../gsl/gsl_inline.h: + +../../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../../gsl/gsl_precision.h: + +../../gsl/gsl_types.h: + +../../gsl/gsl_nan.h: + +../../gsl/gsl_pow_int.h: + +../../gsl/gsl_minmax.h: + +../../gsl/gsl_movstat.h: + +../../gsl/gsl_vector.h: + +../../gsl/gsl_vector_complex_long_double.h: + +../../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../../gsl/gsl_complex.h: + +../../gsl/gsl_check_range.h: + +../../gsl/gsl_vector_long_double.h: + +../../gsl/gsl_block_long_double.h: + +../../gsl/gsl_vector_complex.h: + +../../gsl/gsl_block_complex_long_double.h: + +../../gsl/gsl_vector_complex_double.h: + +../../gsl/gsl_vector_double.h: + +../../gsl/gsl_block_double.h: + +../../gsl/gsl_block_complex_double.h: + +../../gsl/gsl_vector_complex_float.h: + +../../gsl/gsl_vector_float.h: + +../../gsl/gsl_block_float.h: + +../../gsl/gsl_block_complex_float.h: + +../../gsl/gsl_vector_ulong.h: + +../../gsl/gsl_block_ulong.h: + +../../gsl/gsl_vector_long.h: + +../../gsl/gsl_block_long.h: + +../../gsl/gsl_vector_uint.h: + +../../gsl/gsl_block_uint.h: + +../../gsl/gsl_vector_int.h: + +../../gsl/gsl_block_int.h: + +../../gsl/gsl_vector_ushort.h: + +../../gsl/gsl_block_ushort.h: + +../../gsl/gsl_vector_short.h: + +../../gsl/gsl_block_short.h: + +../../gsl/gsl_vector_uchar.h: + +../../gsl/gsl_block_uchar.h: + +../../gsl/gsl_vector_char.h: + +../../gsl/gsl_block_char.h: + +../../gsl/gsl_rng.h: + +../../gsl/gsl_randist.h: + +../../gsl/gsl_matrix.h: + +../../gsl/gsl_matrix_complex_long_double.h: + +../../gsl/gsl_matrix_complex_double.h: + +../../gsl/gsl_matrix_complex_float.h: + +../../gsl/gsl_matrix_long_double.h: + +../../gsl/gsl_matrix_double.h: + +../../gsl/gsl_matrix_float.h: + +../../gsl/gsl_matrix_ulong.h: + +../../gsl/gsl_matrix_long.h: + +../../gsl/gsl_matrix_uint.h: + +../../gsl/gsl_matrix_int.h: + +../../gsl/gsl_matrix_ushort.h: + +../../gsl/gsl_matrix_short.h: + +../../gsl/gsl_matrix_uchar.h: + +../../gsl/gsl_matrix_char.h: diff --git a/gsl-2.5/doc/examples/.deps/movstat2.Po b/gsl-2.5/doc/examples/.deps/movstat2.Po new file mode 100644 index 00000000..8603ac93 --- /dev/null +++ b/gsl-2.5/doc/examples/.deps/movstat2.Po @@ -0,0 +1,294 @@ +movstat2.o: movstat2.c /usr/include/stdc-predef.h /usr/include/stdio.h \ + /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../../gsl/gsl_sys.h \ + ../../gsl/gsl_inline.h ../../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../../gsl/gsl_precision.h ../../gsl/gsl_types.h ../../gsl/gsl_nan.h \ + ../../gsl/gsl_pow_int.h ../../gsl/gsl_minmax.h ../../gsl/gsl_movstat.h \ + ../../gsl/gsl_vector.h ../../gsl/gsl_vector_complex_long_double.h \ + ../../gsl/gsl_errno.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../../gsl/gsl_complex.h ../../gsl/gsl_check_range.h \ + ../../gsl/gsl_vector_long_double.h ../../gsl/gsl_block_long_double.h \ + ../../gsl/gsl_vector_complex.h ../../gsl/gsl_block_complex_long_double.h \ + ../../gsl/gsl_vector_complex_double.h ../../gsl/gsl_vector_double.h \ + ../../gsl/gsl_block_double.h ../../gsl/gsl_block_complex_double.h \ + ../../gsl/gsl_vector_complex_float.h ../../gsl/gsl_vector_float.h \ + ../../gsl/gsl_block_float.h ../../gsl/gsl_block_complex_float.h \ + ../../gsl/gsl_vector_ulong.h ../../gsl/gsl_block_ulong.h \ + ../../gsl/gsl_vector_long.h ../../gsl/gsl_block_long.h \ + ../../gsl/gsl_vector_uint.h ../../gsl/gsl_block_uint.h \ + ../../gsl/gsl_vector_int.h ../../gsl/gsl_block_int.h \ + ../../gsl/gsl_vector_ushort.h ../../gsl/gsl_block_ushort.h \ + ../../gsl/gsl_vector_short.h ../../gsl/gsl_block_short.h \ + ../../gsl/gsl_vector_uchar.h ../../gsl/gsl_block_uchar.h \ + ../../gsl/gsl_vector_char.h ../../gsl/gsl_block_char.h \ + ../../gsl/gsl_rng.h ../../gsl/gsl_randist.h ../../gsl/gsl_matrix.h \ + ../../gsl/gsl_matrix_complex_long_double.h \ + ../../gsl/gsl_matrix_complex_double.h \ + ../../gsl/gsl_matrix_complex_float.h ../../gsl/gsl_matrix_long_double.h \ + ../../gsl/gsl_matrix_double.h ../../gsl/gsl_matrix_float.h \ + ../../gsl/gsl_matrix_ulong.h ../../gsl/gsl_matrix_long.h \ + ../../gsl/gsl_matrix_uint.h ../../gsl/gsl_matrix_int.h \ + ../../gsl/gsl_matrix_ushort.h ../../gsl/gsl_matrix_short.h \ + ../../gsl/gsl_matrix_uchar.h ../../gsl/gsl_matrix_char.h + +/usr/include/stdc-predef.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../../gsl/gsl_sys.h: + +../../gsl/gsl_inline.h: + +../../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../../gsl/gsl_precision.h: + +../../gsl/gsl_types.h: + +../../gsl/gsl_nan.h: + +../../gsl/gsl_pow_int.h: + +../../gsl/gsl_minmax.h: + +../../gsl/gsl_movstat.h: + +../../gsl/gsl_vector.h: + +../../gsl/gsl_vector_complex_long_double.h: + +../../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../../gsl/gsl_complex.h: + +../../gsl/gsl_check_range.h: + +../../gsl/gsl_vector_long_double.h: + +../../gsl/gsl_block_long_double.h: + +../../gsl/gsl_vector_complex.h: + +../../gsl/gsl_block_complex_long_double.h: + +../../gsl/gsl_vector_complex_double.h: + +../../gsl/gsl_vector_double.h: + +../../gsl/gsl_block_double.h: + +../../gsl/gsl_block_complex_double.h: + +../../gsl/gsl_vector_complex_float.h: + +../../gsl/gsl_vector_float.h: + +../../gsl/gsl_block_float.h: + +../../gsl/gsl_block_complex_float.h: + +../../gsl/gsl_vector_ulong.h: + +../../gsl/gsl_block_ulong.h: + +../../gsl/gsl_vector_long.h: + +../../gsl/gsl_block_long.h: + +../../gsl/gsl_vector_uint.h: + +../../gsl/gsl_block_uint.h: + +../../gsl/gsl_vector_int.h: + +../../gsl/gsl_block_int.h: + +../../gsl/gsl_vector_ushort.h: + +../../gsl/gsl_block_ushort.h: + +../../gsl/gsl_vector_short.h: + +../../gsl/gsl_block_short.h: + +../../gsl/gsl_vector_uchar.h: + +../../gsl/gsl_block_uchar.h: + +../../gsl/gsl_vector_char.h: + +../../gsl/gsl_block_char.h: + +../../gsl/gsl_rng.h: + +../../gsl/gsl_randist.h: + +../../gsl/gsl_matrix.h: + +../../gsl/gsl_matrix_complex_long_double.h: + +../../gsl/gsl_matrix_complex_double.h: + +../../gsl/gsl_matrix_complex_float.h: + +../../gsl/gsl_matrix_long_double.h: + +../../gsl/gsl_matrix_double.h: + +../../gsl/gsl_matrix_float.h: + +../../gsl/gsl_matrix_ulong.h: + +../../gsl/gsl_matrix_long.h: + +../../gsl/gsl_matrix_uint.h: + +../../gsl/gsl_matrix_int.h: + +../../gsl/gsl_matrix_ushort.h: + +../../gsl/gsl_matrix_short.h: + +../../gsl/gsl_matrix_uchar.h: + +../../gsl/gsl_matrix_char.h: diff --git a/gsl-2.5/doc/examples/.deps/movstat3.Po b/gsl-2.5/doc/examples/.deps/movstat3.Po new file mode 100644 index 00000000..bd81dab7 --- /dev/null +++ b/gsl-2.5/doc/examples/.deps/movstat3.Po @@ -0,0 +1,357 @@ +movstat3.o: movstat3.c /usr/include/stdc-predef.h /usr/include/stdio.h \ + /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../../gsl/gsl_sys.h \ + ../../gsl/gsl_inline.h ../../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../../gsl/gsl_precision.h ../../gsl/gsl_types.h ../../gsl/gsl_nan.h \ + ../../gsl/gsl_pow_int.h ../../gsl/gsl_minmax.h ../../gsl/gsl_movstat.h \ + ../../gsl/gsl_vector.h ../../gsl/gsl_vector_complex_long_double.h \ + ../../gsl/gsl_errno.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../../gsl/gsl_complex.h ../../gsl/gsl_check_range.h \ + ../../gsl/gsl_vector_long_double.h ../../gsl/gsl_block_long_double.h \ + ../../gsl/gsl_vector_complex.h ../../gsl/gsl_block_complex_long_double.h \ + ../../gsl/gsl_vector_complex_double.h ../../gsl/gsl_vector_double.h \ + ../../gsl/gsl_block_double.h ../../gsl/gsl_block_complex_double.h \ + ../../gsl/gsl_vector_complex_float.h ../../gsl/gsl_vector_float.h \ + ../../gsl/gsl_block_float.h ../../gsl/gsl_block_complex_float.h \ + ../../gsl/gsl_vector_ulong.h ../../gsl/gsl_block_ulong.h \ + ../../gsl/gsl_vector_long.h ../../gsl/gsl_block_long.h \ + ../../gsl/gsl_vector_uint.h ../../gsl/gsl_block_uint.h \ + ../../gsl/gsl_vector_int.h ../../gsl/gsl_block_int.h \ + ../../gsl/gsl_vector_ushort.h ../../gsl/gsl_block_ushort.h \ + ../../gsl/gsl_vector_short.h ../../gsl/gsl_block_short.h \ + ../../gsl/gsl_vector_uchar.h ../../gsl/gsl_block_uchar.h \ + ../../gsl/gsl_vector_char.h ../../gsl/gsl_block_char.h \ + ../../gsl/gsl_rng.h ../../gsl/gsl_randist.h ../../gsl/gsl_matrix.h \ + ../../gsl/gsl_matrix_complex_long_double.h \ + ../../gsl/gsl_matrix_complex_double.h \ + ../../gsl/gsl_matrix_complex_float.h ../../gsl/gsl_matrix_long_double.h \ + ../../gsl/gsl_matrix_double.h ../../gsl/gsl_matrix_float.h \ + ../../gsl/gsl_matrix_ulong.h ../../gsl/gsl_matrix_long.h \ + ../../gsl/gsl_matrix_uint.h ../../gsl/gsl_matrix_int.h \ + ../../gsl/gsl_matrix_ushort.h ../../gsl/gsl_matrix_short.h \ + ../../gsl/gsl_matrix_uchar.h ../../gsl/gsl_matrix_char.h \ + ../../gsl/gsl_sort.h ../../gsl/gsl_sort_long_double.h \ + ../../gsl/gsl_permutation.h ../../gsl/gsl_sort_double.h \ + ../../gsl/gsl_sort_float.h ../../gsl/gsl_sort_ulong.h \ + ../../gsl/gsl_sort_long.h ../../gsl/gsl_sort_uint.h \ + ../../gsl/gsl_sort_int.h ../../gsl/gsl_sort_ushort.h \ + ../../gsl/gsl_sort_short.h ../../gsl/gsl_sort_uchar.h \ + ../../gsl/gsl_sort_char.h ../../gsl/gsl_statistics.h \ + ../../gsl/gsl_statistics_long_double.h ../../gsl/gsl_statistics_double.h \ + ../../gsl/gsl_statistics_float.h ../../gsl/gsl_statistics_ulong.h \ + ../../gsl/gsl_statistics_long.h ../../gsl/gsl_statistics_uint.h \ + ../../gsl/gsl_statistics_int.h ../../gsl/gsl_statistics_ushort.h \ + ../../gsl/gsl_statistics_short.h ../../gsl/gsl_statistics_uchar.h \ + ../../gsl/gsl_statistics_char.h + +/usr/include/stdc-predef.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../../gsl/gsl_sys.h: + +../../gsl/gsl_inline.h: + +../../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../../gsl/gsl_precision.h: + +../../gsl/gsl_types.h: + +../../gsl/gsl_nan.h: + +../../gsl/gsl_pow_int.h: + +../../gsl/gsl_minmax.h: + +../../gsl/gsl_movstat.h: + +../../gsl/gsl_vector.h: + +../../gsl/gsl_vector_complex_long_double.h: + +../../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../../gsl/gsl_complex.h: + +../../gsl/gsl_check_range.h: + +../../gsl/gsl_vector_long_double.h: + +../../gsl/gsl_block_long_double.h: + +../../gsl/gsl_vector_complex.h: + +../../gsl/gsl_block_complex_long_double.h: + +../../gsl/gsl_vector_complex_double.h: + +../../gsl/gsl_vector_double.h: + +../../gsl/gsl_block_double.h: + +../../gsl/gsl_block_complex_double.h: + +../../gsl/gsl_vector_complex_float.h: + +../../gsl/gsl_vector_float.h: + +../../gsl/gsl_block_float.h: + +../../gsl/gsl_block_complex_float.h: + +../../gsl/gsl_vector_ulong.h: + +../../gsl/gsl_block_ulong.h: + +../../gsl/gsl_vector_long.h: + +../../gsl/gsl_block_long.h: + +../../gsl/gsl_vector_uint.h: + +../../gsl/gsl_block_uint.h: + +../../gsl/gsl_vector_int.h: + +../../gsl/gsl_block_int.h: + +../../gsl/gsl_vector_ushort.h: + +../../gsl/gsl_block_ushort.h: + +../../gsl/gsl_vector_short.h: + +../../gsl/gsl_block_short.h: + +../../gsl/gsl_vector_uchar.h: + +../../gsl/gsl_block_uchar.h: + +../../gsl/gsl_vector_char.h: + +../../gsl/gsl_block_char.h: + +../../gsl/gsl_rng.h: + +../../gsl/gsl_randist.h: + +../../gsl/gsl_matrix.h: + +../../gsl/gsl_matrix_complex_long_double.h: + +../../gsl/gsl_matrix_complex_double.h: + +../../gsl/gsl_matrix_complex_float.h: + +../../gsl/gsl_matrix_long_double.h: + +../../gsl/gsl_matrix_double.h: + +../../gsl/gsl_matrix_float.h: + +../../gsl/gsl_matrix_ulong.h: + +../../gsl/gsl_matrix_long.h: + +../../gsl/gsl_matrix_uint.h: + +../../gsl/gsl_matrix_int.h: + +../../gsl/gsl_matrix_ushort.h: + +../../gsl/gsl_matrix_short.h: + +../../gsl/gsl_matrix_uchar.h: + +../../gsl/gsl_matrix_char.h: + +../../gsl/gsl_sort.h: + +../../gsl/gsl_sort_long_double.h: + +../../gsl/gsl_permutation.h: + +../../gsl/gsl_sort_double.h: + +../../gsl/gsl_sort_float.h: + +../../gsl/gsl_sort_ulong.h: + +../../gsl/gsl_sort_long.h: + +../../gsl/gsl_sort_uint.h: + +../../gsl/gsl_sort_int.h: + +../../gsl/gsl_sort_ushort.h: + +../../gsl/gsl_sort_short.h: + +../../gsl/gsl_sort_uchar.h: + +../../gsl/gsl_sort_char.h: + +../../gsl/gsl_statistics.h: + +../../gsl/gsl_statistics_long_double.h: + +../../gsl/gsl_statistics_double.h: + +../../gsl/gsl_statistics_float.h: + +../../gsl/gsl_statistics_ulong.h: + +../../gsl/gsl_statistics_long.h: + +../../gsl/gsl_statistics_uint.h: + +../../gsl/gsl_statistics_int.h: + +../../gsl/gsl_statistics_ushort.h: + +../../gsl/gsl_statistics_short.h: + +../../gsl/gsl_statistics_uchar.h: + +../../gsl/gsl_statistics_char.h: diff --git a/gsl-2.5/doc/examples/.deps/multiset.Po b/gsl-2.5/doc/examples/.deps/multiset.Po new file mode 100644 index 00000000..d6822455 --- /dev/null +++ b/gsl-2.5/doc/examples/.deps/multiset.Po @@ -0,0 +1,112 @@ +multiset.o: multiset.c /usr/include/stdc-predef.h /usr/include/stdio.h \ + /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../../gsl/gsl_multiset.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../../gsl/gsl_errno.h \ + /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../../gsl/gsl_types.h ../../gsl/gsl_inline.h ../../gsl/gsl_check_range.h + +/usr/include/stdc-predef.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../../gsl/gsl_multiset.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../../gsl/gsl_types.h: + +../../gsl/gsl_inline.h: + +../../gsl/gsl_check_range.h: diff --git a/gsl-2.5/doc/examples/.deps/nlfit.Po b/gsl-2.5/doc/examples/.deps/nlfit.Po new file mode 100644 index 00000000..e6a267aa --- /dev/null +++ b/gsl-2.5/doc/examples/.deps/nlfit.Po @@ -0,0 +1,304 @@ +nlfit.o: nlfit.c /usr/include/stdc-predef.h /usr/include/stdlib.h \ + /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../../gsl/gsl_rng.h ../../gsl/gsl_types.h \ + ../../gsl/gsl_errno.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../../gsl/gsl_inline.h ../../gsl/gsl_randist.h ../../gsl/gsl_vector.h \ + ../../gsl/gsl_vector_complex_long_double.h ../../gsl/gsl_complex.h \ + ../../gsl/gsl_check_range.h ../../gsl/gsl_vector_long_double.h \ + ../../gsl/gsl_block_long_double.h ../../gsl/gsl_vector_complex.h \ + ../../gsl/gsl_block_complex_long_double.h \ + ../../gsl/gsl_vector_complex_double.h ../../gsl/gsl_vector_double.h \ + ../../gsl/gsl_block_double.h ../../gsl/gsl_block_complex_double.h \ + ../../gsl/gsl_vector_complex_float.h ../../gsl/gsl_vector_float.h \ + ../../gsl/gsl_block_float.h ../../gsl/gsl_block_complex_float.h \ + ../../gsl/gsl_vector_ulong.h ../../gsl/gsl_block_ulong.h \ + ../../gsl/gsl_vector_long.h ../../gsl/gsl_block_long.h \ + ../../gsl/gsl_vector_uint.h ../../gsl/gsl_block_uint.h \ + ../../gsl/gsl_vector_int.h ../../gsl/gsl_block_int.h \ + ../../gsl/gsl_vector_ushort.h ../../gsl/gsl_block_ushort.h \ + ../../gsl/gsl_vector_short.h ../../gsl/gsl_block_short.h \ + ../../gsl/gsl_vector_uchar.h ../../gsl/gsl_block_uchar.h \ + ../../gsl/gsl_vector_char.h ../../gsl/gsl_block_char.h \ + ../../gsl/gsl_matrix.h ../../gsl/gsl_matrix_complex_long_double.h \ + ../../gsl/gsl_matrix_complex_double.h \ + ../../gsl/gsl_matrix_complex_float.h ../../gsl/gsl_matrix_long_double.h \ + ../../gsl/gsl_matrix_double.h ../../gsl/gsl_matrix_float.h \ + ../../gsl/gsl_matrix_ulong.h ../../gsl/gsl_matrix_long.h \ + ../../gsl/gsl_matrix_uint.h ../../gsl/gsl_matrix_int.h \ + ../../gsl/gsl_matrix_ushort.h ../../gsl/gsl_matrix_short.h \ + ../../gsl/gsl_matrix_uchar.h ../../gsl/gsl_matrix_char.h \ + ../../gsl/gsl_blas.h ../../gsl/gsl_blas_types.h ../../gsl/gsl_cblas.h \ + ../../gsl/gsl_multifit_nlinear.h ../../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../../gsl/gsl_sys.h \ + ../../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../../gsl/gsl_precision.h ../../gsl/gsl_nan.h ../../gsl/gsl_pow_int.h \ + ../../gsl/gsl_minmax.h ../../gsl/gsl_permutation.h + +/usr/include/stdc-predef.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../../gsl/gsl_rng.h: + +../../gsl/gsl_types.h: + +../../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../../gsl/gsl_inline.h: + +../../gsl/gsl_randist.h: + +../../gsl/gsl_vector.h: + +../../gsl/gsl_vector_complex_long_double.h: + +../../gsl/gsl_complex.h: + +../../gsl/gsl_check_range.h: + +../../gsl/gsl_vector_long_double.h: + +../../gsl/gsl_block_long_double.h: + +../../gsl/gsl_vector_complex.h: + +../../gsl/gsl_block_complex_long_double.h: + +../../gsl/gsl_vector_complex_double.h: + +../../gsl/gsl_vector_double.h: + +../../gsl/gsl_block_double.h: + +../../gsl/gsl_block_complex_double.h: + +../../gsl/gsl_vector_complex_float.h: + +../../gsl/gsl_vector_float.h: + +../../gsl/gsl_block_float.h: + +../../gsl/gsl_block_complex_float.h: + +../../gsl/gsl_vector_ulong.h: + +../../gsl/gsl_block_ulong.h: + +../../gsl/gsl_vector_long.h: + +../../gsl/gsl_block_long.h: + +../../gsl/gsl_vector_uint.h: + +../../gsl/gsl_block_uint.h: + +../../gsl/gsl_vector_int.h: + +../../gsl/gsl_block_int.h: + +../../gsl/gsl_vector_ushort.h: + +../../gsl/gsl_block_ushort.h: + +../../gsl/gsl_vector_short.h: + +../../gsl/gsl_block_short.h: + +../../gsl/gsl_vector_uchar.h: + +../../gsl/gsl_block_uchar.h: + +../../gsl/gsl_vector_char.h: + +../../gsl/gsl_block_char.h: + +../../gsl/gsl_matrix.h: + +../../gsl/gsl_matrix_complex_long_double.h: + +../../gsl/gsl_matrix_complex_double.h: + +../../gsl/gsl_matrix_complex_float.h: + +../../gsl/gsl_matrix_long_double.h: + +../../gsl/gsl_matrix_double.h: + +../../gsl/gsl_matrix_float.h: + +../../gsl/gsl_matrix_ulong.h: + +../../gsl/gsl_matrix_long.h: + +../../gsl/gsl_matrix_uint.h: + +../../gsl/gsl_matrix_int.h: + +../../gsl/gsl_matrix_ushort.h: + +../../gsl/gsl_matrix_short.h: + +../../gsl/gsl_matrix_uchar.h: + +../../gsl/gsl_matrix_char.h: + +../../gsl/gsl_blas.h: + +../../gsl/gsl_blas_types.h: + +../../gsl/gsl_cblas.h: + +../../gsl/gsl_multifit_nlinear.h: + +../../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../../gsl/gsl_sys.h: + +../../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../../gsl/gsl_precision.h: + +../../gsl/gsl_nan.h: + +../../gsl/gsl_pow_int.h: + +../../gsl/gsl_minmax.h: + +../../gsl/gsl_permutation.h: diff --git a/gsl-2.5/doc/examples/.deps/nlfit2.Po b/gsl-2.5/doc/examples/.deps/nlfit2.Po new file mode 100644 index 00000000..3b8223ab --- /dev/null +++ b/gsl-2.5/doc/examples/.deps/nlfit2.Po @@ -0,0 +1,300 @@ +nlfit2.o: nlfit2.c /usr/include/stdc-predef.h /usr/include/stdlib.h \ + /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../../gsl/gsl_vector.h \ + ../../gsl/gsl_vector_complex_long_double.h ../../gsl/gsl_types.h \ + ../../gsl/gsl_errno.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../../gsl/gsl_complex.h ../../gsl/gsl_check_range.h \ + ../../gsl/gsl_vector_long_double.h ../../gsl/gsl_inline.h \ + ../../gsl/gsl_block_long_double.h ../../gsl/gsl_vector_complex.h \ + ../../gsl/gsl_block_complex_long_double.h \ + ../../gsl/gsl_vector_complex_double.h ../../gsl/gsl_vector_double.h \ + ../../gsl/gsl_block_double.h ../../gsl/gsl_block_complex_double.h \ + ../../gsl/gsl_vector_complex_float.h ../../gsl/gsl_vector_float.h \ + ../../gsl/gsl_block_float.h ../../gsl/gsl_block_complex_float.h \ + ../../gsl/gsl_vector_ulong.h ../../gsl/gsl_block_ulong.h \ + ../../gsl/gsl_vector_long.h ../../gsl/gsl_block_long.h \ + ../../gsl/gsl_vector_uint.h ../../gsl/gsl_block_uint.h \ + ../../gsl/gsl_vector_int.h ../../gsl/gsl_block_int.h \ + ../../gsl/gsl_vector_ushort.h ../../gsl/gsl_block_ushort.h \ + ../../gsl/gsl_vector_short.h ../../gsl/gsl_block_short.h \ + ../../gsl/gsl_vector_uchar.h ../../gsl/gsl_block_uchar.h \ + ../../gsl/gsl_vector_char.h ../../gsl/gsl_block_char.h \ + ../../gsl/gsl_matrix.h ../../gsl/gsl_matrix_complex_long_double.h \ + ../../gsl/gsl_matrix_complex_double.h \ + ../../gsl/gsl_matrix_complex_float.h ../../gsl/gsl_matrix_long_double.h \ + ../../gsl/gsl_matrix_double.h ../../gsl/gsl_matrix_float.h \ + ../../gsl/gsl_matrix_ulong.h ../../gsl/gsl_matrix_long.h \ + ../../gsl/gsl_matrix_uint.h ../../gsl/gsl_matrix_int.h \ + ../../gsl/gsl_matrix_ushort.h ../../gsl/gsl_matrix_short.h \ + ../../gsl/gsl_matrix_uchar.h ../../gsl/gsl_matrix_char.h \ + ../../gsl/gsl_blas.h ../../gsl/gsl_blas_types.h ../../gsl/gsl_cblas.h \ + ../../gsl/gsl_multifit_nlinear.h ../../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../../gsl/gsl_sys.h \ + ../../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../../gsl/gsl_precision.h ../../gsl/gsl_nan.h ../../gsl/gsl_pow_int.h \ + ../../gsl/gsl_minmax.h ../../gsl/gsl_permutation.h + +/usr/include/stdc-predef.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../../gsl/gsl_vector.h: + +../../gsl/gsl_vector_complex_long_double.h: + +../../gsl/gsl_types.h: + +../../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../../gsl/gsl_complex.h: + +../../gsl/gsl_check_range.h: + +../../gsl/gsl_vector_long_double.h: + +../../gsl/gsl_inline.h: + +../../gsl/gsl_block_long_double.h: + +../../gsl/gsl_vector_complex.h: + +../../gsl/gsl_block_complex_long_double.h: + +../../gsl/gsl_vector_complex_double.h: + +../../gsl/gsl_vector_double.h: + +../../gsl/gsl_block_double.h: + +../../gsl/gsl_block_complex_double.h: + +../../gsl/gsl_vector_complex_float.h: + +../../gsl/gsl_vector_float.h: + +../../gsl/gsl_block_float.h: + +../../gsl/gsl_block_complex_float.h: + +../../gsl/gsl_vector_ulong.h: + +../../gsl/gsl_block_ulong.h: + +../../gsl/gsl_vector_long.h: + +../../gsl/gsl_block_long.h: + +../../gsl/gsl_vector_uint.h: + +../../gsl/gsl_block_uint.h: + +../../gsl/gsl_vector_int.h: + +../../gsl/gsl_block_int.h: + +../../gsl/gsl_vector_ushort.h: + +../../gsl/gsl_block_ushort.h: + +../../gsl/gsl_vector_short.h: + +../../gsl/gsl_block_short.h: + +../../gsl/gsl_vector_uchar.h: + +../../gsl/gsl_block_uchar.h: + +../../gsl/gsl_vector_char.h: + +../../gsl/gsl_block_char.h: + +../../gsl/gsl_matrix.h: + +../../gsl/gsl_matrix_complex_long_double.h: + +../../gsl/gsl_matrix_complex_double.h: + +../../gsl/gsl_matrix_complex_float.h: + +../../gsl/gsl_matrix_long_double.h: + +../../gsl/gsl_matrix_double.h: + +../../gsl/gsl_matrix_float.h: + +../../gsl/gsl_matrix_ulong.h: + +../../gsl/gsl_matrix_long.h: + +../../gsl/gsl_matrix_uint.h: + +../../gsl/gsl_matrix_int.h: + +../../gsl/gsl_matrix_ushort.h: + +../../gsl/gsl_matrix_short.h: + +../../gsl/gsl_matrix_uchar.h: + +../../gsl/gsl_matrix_char.h: + +../../gsl/gsl_blas.h: + +../../gsl/gsl_blas_types.h: + +../../gsl/gsl_cblas.h: + +../../gsl/gsl_multifit_nlinear.h: + +../../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../../gsl/gsl_sys.h: + +../../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../../gsl/gsl_precision.h: + +../../gsl/gsl_nan.h: + +../../gsl/gsl_pow_int.h: + +../../gsl/gsl_minmax.h: + +../../gsl/gsl_permutation.h: diff --git a/gsl-2.5/doc/examples/.deps/nlfit2b.Po b/gsl-2.5/doc/examples/.deps/nlfit2b.Po new file mode 100644 index 00000000..0fb21c0f --- /dev/null +++ b/gsl-2.5/doc/examples/.deps/nlfit2b.Po @@ -0,0 +1,305 @@ +nlfit2b.o: nlfit2b.c /usr/include/stdc-predef.h /usr/include/stdlib.h \ + /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../../gsl/gsl_vector.h \ + ../../gsl/gsl_vector_complex_long_double.h ../../gsl/gsl_types.h \ + ../../gsl/gsl_errno.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../../gsl/gsl_complex.h ../../gsl/gsl_check_range.h \ + ../../gsl/gsl_vector_long_double.h ../../gsl/gsl_inline.h \ + ../../gsl/gsl_block_long_double.h ../../gsl/gsl_vector_complex.h \ + ../../gsl/gsl_block_complex_long_double.h \ + ../../gsl/gsl_vector_complex_double.h ../../gsl/gsl_vector_double.h \ + ../../gsl/gsl_block_double.h ../../gsl/gsl_block_complex_double.h \ + ../../gsl/gsl_vector_complex_float.h ../../gsl/gsl_vector_float.h \ + ../../gsl/gsl_block_float.h ../../gsl/gsl_block_complex_float.h \ + ../../gsl/gsl_vector_ulong.h ../../gsl/gsl_block_ulong.h \ + ../../gsl/gsl_vector_long.h ../../gsl/gsl_block_long.h \ + ../../gsl/gsl_vector_uint.h ../../gsl/gsl_block_uint.h \ + ../../gsl/gsl_vector_int.h ../../gsl/gsl_block_int.h \ + ../../gsl/gsl_vector_ushort.h ../../gsl/gsl_block_ushort.h \ + ../../gsl/gsl_vector_short.h ../../gsl/gsl_block_short.h \ + ../../gsl/gsl_vector_uchar.h ../../gsl/gsl_block_uchar.h \ + ../../gsl/gsl_vector_char.h ../../gsl/gsl_block_char.h \ + ../../gsl/gsl_matrix.h ../../gsl/gsl_matrix_complex_long_double.h \ + ../../gsl/gsl_matrix_complex_double.h \ + ../../gsl/gsl_matrix_complex_float.h ../../gsl/gsl_matrix_long_double.h \ + ../../gsl/gsl_matrix_double.h ../../gsl/gsl_matrix_float.h \ + ../../gsl/gsl_matrix_ulong.h ../../gsl/gsl_matrix_long.h \ + ../../gsl/gsl_matrix_uint.h ../../gsl/gsl_matrix_int.h \ + ../../gsl/gsl_matrix_ushort.h ../../gsl/gsl_matrix_short.h \ + ../../gsl/gsl_matrix_uchar.h ../../gsl/gsl_matrix_char.h \ + ../../gsl/gsl_blas.h ../../gsl/gsl_blas_types.h ../../gsl/gsl_cblas.h \ + ../../gsl/gsl_multifit_nlinear.h ../../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../../gsl/gsl_sys.h \ + ../../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../../gsl/gsl_precision.h ../../gsl/gsl_nan.h ../../gsl/gsl_pow_int.h \ + ../../gsl/gsl_minmax.h ../../gsl/gsl_permutation.h ../../gsl/gsl_rng.h \ + ../../gsl/gsl_randist.h + +/usr/include/stdc-predef.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../../gsl/gsl_vector.h: + +../../gsl/gsl_vector_complex_long_double.h: + +../../gsl/gsl_types.h: + +../../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../../gsl/gsl_complex.h: + +../../gsl/gsl_check_range.h: + +../../gsl/gsl_vector_long_double.h: + +../../gsl/gsl_inline.h: + +../../gsl/gsl_block_long_double.h: + +../../gsl/gsl_vector_complex.h: + +../../gsl/gsl_block_complex_long_double.h: + +../../gsl/gsl_vector_complex_double.h: + +../../gsl/gsl_vector_double.h: + +../../gsl/gsl_block_double.h: + +../../gsl/gsl_block_complex_double.h: + +../../gsl/gsl_vector_complex_float.h: + +../../gsl/gsl_vector_float.h: + +../../gsl/gsl_block_float.h: + +../../gsl/gsl_block_complex_float.h: + +../../gsl/gsl_vector_ulong.h: + +../../gsl/gsl_block_ulong.h: + +../../gsl/gsl_vector_long.h: + +../../gsl/gsl_block_long.h: + +../../gsl/gsl_vector_uint.h: + +../../gsl/gsl_block_uint.h: + +../../gsl/gsl_vector_int.h: + +../../gsl/gsl_block_int.h: + +../../gsl/gsl_vector_ushort.h: + +../../gsl/gsl_block_ushort.h: + +../../gsl/gsl_vector_short.h: + +../../gsl/gsl_block_short.h: + +../../gsl/gsl_vector_uchar.h: + +../../gsl/gsl_block_uchar.h: + +../../gsl/gsl_vector_char.h: + +../../gsl/gsl_block_char.h: + +../../gsl/gsl_matrix.h: + +../../gsl/gsl_matrix_complex_long_double.h: + +../../gsl/gsl_matrix_complex_double.h: + +../../gsl/gsl_matrix_complex_float.h: + +../../gsl/gsl_matrix_long_double.h: + +../../gsl/gsl_matrix_double.h: + +../../gsl/gsl_matrix_float.h: + +../../gsl/gsl_matrix_ulong.h: + +../../gsl/gsl_matrix_long.h: + +../../gsl/gsl_matrix_uint.h: + +../../gsl/gsl_matrix_int.h: + +../../gsl/gsl_matrix_ushort.h: + +../../gsl/gsl_matrix_short.h: + +../../gsl/gsl_matrix_uchar.h: + +../../gsl/gsl_matrix_char.h: + +../../gsl/gsl_blas.h: + +../../gsl/gsl_blas_types.h: + +../../gsl/gsl_cblas.h: + +../../gsl/gsl_multifit_nlinear.h: + +../../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../../gsl/gsl_sys.h: + +../../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../../gsl/gsl_precision.h: + +../../gsl/gsl_nan.h: + +../../gsl/gsl_pow_int.h: + +../../gsl/gsl_minmax.h: + +../../gsl/gsl_permutation.h: + +../../gsl/gsl_rng.h: + +../../gsl/gsl_randist.h: diff --git a/gsl-2.5/doc/examples/.deps/nlfit3.Po b/gsl-2.5/doc/examples/.deps/nlfit3.Po new file mode 100644 index 00000000..6043e9b4 --- /dev/null +++ b/gsl-2.5/doc/examples/.deps/nlfit3.Po @@ -0,0 +1,300 @@ +nlfit3.o: nlfit3.c /usr/include/stdc-predef.h /usr/include/stdlib.h \ + /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../../gsl/gsl_vector.h \ + ../../gsl/gsl_vector_complex_long_double.h ../../gsl/gsl_types.h \ + ../../gsl/gsl_errno.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../../gsl/gsl_complex.h ../../gsl/gsl_check_range.h \ + ../../gsl/gsl_vector_long_double.h ../../gsl/gsl_inline.h \ + ../../gsl/gsl_block_long_double.h ../../gsl/gsl_vector_complex.h \ + ../../gsl/gsl_block_complex_long_double.h \ + ../../gsl/gsl_vector_complex_double.h ../../gsl/gsl_vector_double.h \ + ../../gsl/gsl_block_double.h ../../gsl/gsl_block_complex_double.h \ + ../../gsl/gsl_vector_complex_float.h ../../gsl/gsl_vector_float.h \ + ../../gsl/gsl_block_float.h ../../gsl/gsl_block_complex_float.h \ + ../../gsl/gsl_vector_ulong.h ../../gsl/gsl_block_ulong.h \ + ../../gsl/gsl_vector_long.h ../../gsl/gsl_block_long.h \ + ../../gsl/gsl_vector_uint.h ../../gsl/gsl_block_uint.h \ + ../../gsl/gsl_vector_int.h ../../gsl/gsl_block_int.h \ + ../../gsl/gsl_vector_ushort.h ../../gsl/gsl_block_ushort.h \ + ../../gsl/gsl_vector_short.h ../../gsl/gsl_block_short.h \ + ../../gsl/gsl_vector_uchar.h ../../gsl/gsl_block_uchar.h \ + ../../gsl/gsl_vector_char.h ../../gsl/gsl_block_char.h \ + ../../gsl/gsl_matrix.h ../../gsl/gsl_matrix_complex_long_double.h \ + ../../gsl/gsl_matrix_complex_double.h \ + ../../gsl/gsl_matrix_complex_float.h ../../gsl/gsl_matrix_long_double.h \ + ../../gsl/gsl_matrix_double.h ../../gsl/gsl_matrix_float.h \ + ../../gsl/gsl_matrix_ulong.h ../../gsl/gsl_matrix_long.h \ + ../../gsl/gsl_matrix_uint.h ../../gsl/gsl_matrix_int.h \ + ../../gsl/gsl_matrix_ushort.h ../../gsl/gsl_matrix_short.h \ + ../../gsl/gsl_matrix_uchar.h ../../gsl/gsl_matrix_char.h \ + ../../gsl/gsl_blas.h ../../gsl/gsl_blas_types.h ../../gsl/gsl_cblas.h \ + ../../gsl/gsl_multifit_nlinear.h ../../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../../gsl/gsl_sys.h \ + ../../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../../gsl/gsl_precision.h ../../gsl/gsl_nan.h ../../gsl/gsl_pow_int.h \ + ../../gsl/gsl_minmax.h ../../gsl/gsl_permutation.h + +/usr/include/stdc-predef.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../../gsl/gsl_vector.h: + +../../gsl/gsl_vector_complex_long_double.h: + +../../gsl/gsl_types.h: + +../../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../../gsl/gsl_complex.h: + +../../gsl/gsl_check_range.h: + +../../gsl/gsl_vector_long_double.h: + +../../gsl/gsl_inline.h: + +../../gsl/gsl_block_long_double.h: + +../../gsl/gsl_vector_complex.h: + +../../gsl/gsl_block_complex_long_double.h: + +../../gsl/gsl_vector_complex_double.h: + +../../gsl/gsl_vector_double.h: + +../../gsl/gsl_block_double.h: + +../../gsl/gsl_block_complex_double.h: + +../../gsl/gsl_vector_complex_float.h: + +../../gsl/gsl_vector_float.h: + +../../gsl/gsl_block_float.h: + +../../gsl/gsl_block_complex_float.h: + +../../gsl/gsl_vector_ulong.h: + +../../gsl/gsl_block_ulong.h: + +../../gsl/gsl_vector_long.h: + +../../gsl/gsl_block_long.h: + +../../gsl/gsl_vector_uint.h: + +../../gsl/gsl_block_uint.h: + +../../gsl/gsl_vector_int.h: + +../../gsl/gsl_block_int.h: + +../../gsl/gsl_vector_ushort.h: + +../../gsl/gsl_block_ushort.h: + +../../gsl/gsl_vector_short.h: + +../../gsl/gsl_block_short.h: + +../../gsl/gsl_vector_uchar.h: + +../../gsl/gsl_block_uchar.h: + +../../gsl/gsl_vector_char.h: + +../../gsl/gsl_block_char.h: + +../../gsl/gsl_matrix.h: + +../../gsl/gsl_matrix_complex_long_double.h: + +../../gsl/gsl_matrix_complex_double.h: + +../../gsl/gsl_matrix_complex_float.h: + +../../gsl/gsl_matrix_long_double.h: + +../../gsl/gsl_matrix_double.h: + +../../gsl/gsl_matrix_float.h: + +../../gsl/gsl_matrix_ulong.h: + +../../gsl/gsl_matrix_long.h: + +../../gsl/gsl_matrix_uint.h: + +../../gsl/gsl_matrix_int.h: + +../../gsl/gsl_matrix_ushort.h: + +../../gsl/gsl_matrix_short.h: + +../../gsl/gsl_matrix_uchar.h: + +../../gsl/gsl_matrix_char.h: + +../../gsl/gsl_blas.h: + +../../gsl/gsl_blas_types.h: + +../../gsl/gsl_cblas.h: + +../../gsl/gsl_multifit_nlinear.h: + +../../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../../gsl/gsl_sys.h: + +../../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../../gsl/gsl_precision.h: + +../../gsl/gsl_nan.h: + +../../gsl/gsl_pow_int.h: + +../../gsl/gsl_minmax.h: + +../../gsl/gsl_permutation.h: diff --git a/gsl-2.5/doc/examples/.deps/nlfit4.Po b/gsl-2.5/doc/examples/.deps/nlfit4.Po new file mode 100644 index 00000000..bbc16d4d --- /dev/null +++ b/gsl-2.5/doc/examples/.deps/nlfit4.Po @@ -0,0 +1,307 @@ +nlfit4.o: nlfit4.c /usr/include/stdc-predef.h /usr/include/stdlib.h \ + /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/sys/time.h ../../gsl/gsl_vector.h \ + ../../gsl/gsl_vector_complex_long_double.h ../../gsl/gsl_types.h \ + ../../gsl/gsl_errno.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../../gsl/gsl_complex.h ../../gsl/gsl_check_range.h \ + ../../gsl/gsl_vector_long_double.h ../../gsl/gsl_inline.h \ + ../../gsl/gsl_block_long_double.h ../../gsl/gsl_vector_complex.h \ + ../../gsl/gsl_block_complex_long_double.h \ + ../../gsl/gsl_vector_complex_double.h ../../gsl/gsl_vector_double.h \ + ../../gsl/gsl_block_double.h ../../gsl/gsl_block_complex_double.h \ + ../../gsl/gsl_vector_complex_float.h ../../gsl/gsl_vector_float.h \ + ../../gsl/gsl_block_float.h ../../gsl/gsl_block_complex_float.h \ + ../../gsl/gsl_vector_ulong.h ../../gsl/gsl_block_ulong.h \ + ../../gsl/gsl_vector_long.h ../../gsl/gsl_block_long.h \ + ../../gsl/gsl_vector_uint.h ../../gsl/gsl_block_uint.h \ + ../../gsl/gsl_vector_int.h ../../gsl/gsl_block_int.h \ + ../../gsl/gsl_vector_ushort.h ../../gsl/gsl_block_ushort.h \ + ../../gsl/gsl_vector_short.h ../../gsl/gsl_block_short.h \ + ../../gsl/gsl_vector_uchar.h ../../gsl/gsl_block_uchar.h \ + ../../gsl/gsl_vector_char.h ../../gsl/gsl_block_char.h \ + ../../gsl/gsl_matrix.h ../../gsl/gsl_matrix_complex_long_double.h \ + ../../gsl/gsl_matrix_complex_double.h \ + ../../gsl/gsl_matrix_complex_float.h ../../gsl/gsl_matrix_long_double.h \ + ../../gsl/gsl_matrix_double.h ../../gsl/gsl_matrix_float.h \ + ../../gsl/gsl_matrix_ulong.h ../../gsl/gsl_matrix_long.h \ + ../../gsl/gsl_matrix_uint.h ../../gsl/gsl_matrix_int.h \ + ../../gsl/gsl_matrix_ushort.h ../../gsl/gsl_matrix_short.h \ + ../../gsl/gsl_matrix_uchar.h ../../gsl/gsl_matrix_char.h \ + ../../gsl/gsl_blas.h ../../gsl/gsl_blas_types.h ../../gsl/gsl_cblas.h \ + ../../gsl/gsl_multilarge_nlinear.h ../../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../../gsl/gsl_sys.h \ + ../../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../../gsl/gsl_precision.h ../../gsl/gsl_nan.h ../../gsl/gsl_pow_int.h \ + ../../gsl/gsl_minmax.h ../../gsl/gsl_permutation.h \ + ../../gsl/gsl_spblas.h ../../gsl/gsl_spmatrix.h + +/usr/include/stdc-predef.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/sys/time.h: + +../../gsl/gsl_vector.h: + +../../gsl/gsl_vector_complex_long_double.h: + +../../gsl/gsl_types.h: + +../../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../../gsl/gsl_complex.h: + +../../gsl/gsl_check_range.h: + +../../gsl/gsl_vector_long_double.h: + +../../gsl/gsl_inline.h: + +../../gsl/gsl_block_long_double.h: + +../../gsl/gsl_vector_complex.h: + +../../gsl/gsl_block_complex_long_double.h: + +../../gsl/gsl_vector_complex_double.h: + +../../gsl/gsl_vector_double.h: + +../../gsl/gsl_block_double.h: + +../../gsl/gsl_block_complex_double.h: + +../../gsl/gsl_vector_complex_float.h: + +../../gsl/gsl_vector_float.h: + +../../gsl/gsl_block_float.h: + +../../gsl/gsl_block_complex_float.h: + +../../gsl/gsl_vector_ulong.h: + +../../gsl/gsl_block_ulong.h: + +../../gsl/gsl_vector_long.h: + +../../gsl/gsl_block_long.h: + +../../gsl/gsl_vector_uint.h: + +../../gsl/gsl_block_uint.h: + +../../gsl/gsl_vector_int.h: + +../../gsl/gsl_block_int.h: + +../../gsl/gsl_vector_ushort.h: + +../../gsl/gsl_block_ushort.h: + +../../gsl/gsl_vector_short.h: + +../../gsl/gsl_block_short.h: + +../../gsl/gsl_vector_uchar.h: + +../../gsl/gsl_block_uchar.h: + +../../gsl/gsl_vector_char.h: + +../../gsl/gsl_block_char.h: + +../../gsl/gsl_matrix.h: + +../../gsl/gsl_matrix_complex_long_double.h: + +../../gsl/gsl_matrix_complex_double.h: + +../../gsl/gsl_matrix_complex_float.h: + +../../gsl/gsl_matrix_long_double.h: + +../../gsl/gsl_matrix_double.h: + +../../gsl/gsl_matrix_float.h: + +../../gsl/gsl_matrix_ulong.h: + +../../gsl/gsl_matrix_long.h: + +../../gsl/gsl_matrix_uint.h: + +../../gsl/gsl_matrix_int.h: + +../../gsl/gsl_matrix_ushort.h: + +../../gsl/gsl_matrix_short.h: + +../../gsl/gsl_matrix_uchar.h: + +../../gsl/gsl_matrix_char.h: + +../../gsl/gsl_blas.h: + +../../gsl/gsl_blas_types.h: + +../../gsl/gsl_cblas.h: + +../../gsl/gsl_multilarge_nlinear.h: + +../../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../../gsl/gsl_sys.h: + +../../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../../gsl/gsl_precision.h: + +../../gsl/gsl_nan.h: + +../../gsl/gsl_pow_int.h: + +../../gsl/gsl_minmax.h: + +../../gsl/gsl_permutation.h: + +../../gsl/gsl_spblas.h: + +../../gsl/gsl_spmatrix.h: diff --git a/gsl-2.5/doc/examples/.deps/ntupler.Po b/gsl-2.5/doc/examples/.deps/ntupler.Po new file mode 100644 index 00000000..91990ec3 --- /dev/null +++ b/gsl-2.5/doc/examples/.deps/ntupler.Po @@ -0,0 +1,133 @@ +ntupler.o: ntupler.c /usr/include/stdc-predef.h /usr/include/math.h \ + /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../../gsl/gsl_ntuple.h \ + /usr/include/stdlib.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../../gsl/gsl_errno.h /usr/include/errno.h \ + /usr/include/bits/errno.h /usr/include/linux/errno.h \ + /usr/include/asm/errno.h /usr/include/asm-generic/errno.h \ + /usr/include/asm-generic/errno-base.h ../../gsl/gsl_types.h \ + ../../gsl/gsl_histogram.h + +/usr/include/stdc-predef.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../../gsl/gsl_ntuple.h: + +/usr/include/stdlib.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../../gsl/gsl_types.h: + +../../gsl/gsl_histogram.h: diff --git a/gsl-2.5/doc/examples/.deps/ntuplew.Po b/gsl-2.5/doc/examples/.deps/ntuplew.Po new file mode 100644 index 00000000..c85962f5 --- /dev/null +++ b/gsl-2.5/doc/examples/.deps/ntuplew.Po @@ -0,0 +1,235 @@ +ntuplew.o: ntuplew.c /usr/include/stdc-predef.h ../../gsl/gsl_ntuple.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../../gsl/gsl_errno.h /usr/include/errno.h \ + /usr/include/bits/errno.h /usr/include/linux/errno.h \ + /usr/include/asm/errno.h /usr/include/asm-generic/errno.h \ + /usr/include/asm-generic/errno-base.h ../../gsl/gsl_types.h \ + ../../gsl/gsl_histogram.h ../../gsl/gsl_rng.h ../../gsl/gsl_inline.h \ + ../../gsl/gsl_randist.h ../../gsl/gsl_vector.h \ + ../../gsl/gsl_vector_complex_long_double.h ../../gsl/gsl_complex.h \ + ../../gsl/gsl_check_range.h ../../gsl/gsl_vector_long_double.h \ + ../../gsl/gsl_block_long_double.h ../../gsl/gsl_vector_complex.h \ + ../../gsl/gsl_block_complex_long_double.h \ + ../../gsl/gsl_vector_complex_double.h ../../gsl/gsl_vector_double.h \ + ../../gsl/gsl_block_double.h ../../gsl/gsl_block_complex_double.h \ + ../../gsl/gsl_vector_complex_float.h ../../gsl/gsl_vector_float.h \ + ../../gsl/gsl_block_float.h ../../gsl/gsl_block_complex_float.h \ + ../../gsl/gsl_vector_ulong.h ../../gsl/gsl_block_ulong.h \ + ../../gsl/gsl_vector_long.h ../../gsl/gsl_block_long.h \ + ../../gsl/gsl_vector_uint.h ../../gsl/gsl_block_uint.h \ + ../../gsl/gsl_vector_int.h ../../gsl/gsl_block_int.h \ + ../../gsl/gsl_vector_ushort.h ../../gsl/gsl_block_ushort.h \ + ../../gsl/gsl_vector_short.h ../../gsl/gsl_block_short.h \ + ../../gsl/gsl_vector_uchar.h ../../gsl/gsl_block_uchar.h \ + ../../gsl/gsl_vector_char.h ../../gsl/gsl_block_char.h \ + ../../gsl/gsl_matrix.h ../../gsl/gsl_matrix_complex_long_double.h \ + ../../gsl/gsl_matrix_complex_double.h \ + ../../gsl/gsl_matrix_complex_float.h ../../gsl/gsl_matrix_long_double.h \ + ../../gsl/gsl_matrix_double.h ../../gsl/gsl_matrix_float.h \ + ../../gsl/gsl_matrix_ulong.h ../../gsl/gsl_matrix_long.h \ + ../../gsl/gsl_matrix_uint.h ../../gsl/gsl_matrix_int.h \ + ../../gsl/gsl_matrix_ushort.h ../../gsl/gsl_matrix_short.h \ + ../../gsl/gsl_matrix_uchar.h ../../gsl/gsl_matrix_char.h + +/usr/include/stdc-predef.h: + +../../gsl/gsl_ntuple.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../../gsl/gsl_types.h: + +../../gsl/gsl_histogram.h: + +../../gsl/gsl_rng.h: + +../../gsl/gsl_inline.h: + +../../gsl/gsl_randist.h: + +../../gsl/gsl_vector.h: + +../../gsl/gsl_vector_complex_long_double.h: + +../../gsl/gsl_complex.h: + +../../gsl/gsl_check_range.h: + +../../gsl/gsl_vector_long_double.h: + +../../gsl/gsl_block_long_double.h: + +../../gsl/gsl_vector_complex.h: + +../../gsl/gsl_block_complex_long_double.h: + +../../gsl/gsl_vector_complex_double.h: + +../../gsl/gsl_vector_double.h: + +../../gsl/gsl_block_double.h: + +../../gsl/gsl_block_complex_double.h: + +../../gsl/gsl_vector_complex_float.h: + +../../gsl/gsl_vector_float.h: + +../../gsl/gsl_block_float.h: + +../../gsl/gsl_block_complex_float.h: + +../../gsl/gsl_vector_ulong.h: + +../../gsl/gsl_block_ulong.h: + +../../gsl/gsl_vector_long.h: + +../../gsl/gsl_block_long.h: + +../../gsl/gsl_vector_uint.h: + +../../gsl/gsl_block_uint.h: + +../../gsl/gsl_vector_int.h: + +../../gsl/gsl_block_int.h: + +../../gsl/gsl_vector_ushort.h: + +../../gsl/gsl_block_ushort.h: + +../../gsl/gsl_vector_short.h: + +../../gsl/gsl_block_short.h: + +../../gsl/gsl_vector_uchar.h: + +../../gsl/gsl_block_uchar.h: + +../../gsl/gsl_vector_char.h: + +../../gsl/gsl_block_char.h: + +../../gsl/gsl_matrix.h: + +../../gsl/gsl_matrix_complex_long_double.h: + +../../gsl/gsl_matrix_complex_double.h: + +../../gsl/gsl_matrix_complex_float.h: + +../../gsl/gsl_matrix_long_double.h: + +../../gsl/gsl_matrix_double.h: + +../../gsl/gsl_matrix_float.h: + +../../gsl/gsl_matrix_ulong.h: + +../../gsl/gsl_matrix_long.h: + +../../gsl/gsl_matrix_uint.h: + +../../gsl/gsl_matrix_int.h: + +../../gsl/gsl_matrix_ushort.h: + +../../gsl/gsl_matrix_short.h: + +../../gsl/gsl_matrix_uchar.h: + +../../gsl/gsl_matrix_char.h: diff --git a/gsl-2.5/doc/examples/.deps/ode-initval.Po b/gsl-2.5/doc/examples/.deps/ode-initval.Po new file mode 100644 index 00000000..5f649a62 --- /dev/null +++ b/gsl-2.5/doc/examples/.deps/ode-initval.Po @@ -0,0 +1,227 @@ +ode-initval.o: ode-initval.c /usr/include/stdc-predef.h \ + /usr/include/stdio.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../../gsl/gsl_errno.h /usr/include/errno.h \ + /usr/include/bits/errno.h /usr/include/linux/errno.h \ + /usr/include/asm/errno.h /usr/include/asm-generic/errno.h \ + /usr/include/asm-generic/errno-base.h ../../gsl/gsl_types.h \ + ../../gsl/gsl_matrix.h ../../gsl/gsl_matrix_complex_long_double.h \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/byteswap.h \ + /usr/include/bits/byteswap-16.h /usr/include/sys/types.h \ + /usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib-float.h \ + ../../gsl/gsl_complex.h ../../gsl/gsl_check_range.h \ + ../../gsl/gsl_vector_complex_long_double.h \ + ../../gsl/gsl_vector_long_double.h ../../gsl/gsl_inline.h \ + ../../gsl/gsl_block_long_double.h ../../gsl/gsl_vector_complex.h \ + ../../gsl/gsl_block_complex_long_double.h \ + ../../gsl/gsl_matrix_complex_double.h \ + ../../gsl/gsl_vector_complex_double.h ../../gsl/gsl_vector_double.h \ + ../../gsl/gsl_block_double.h ../../gsl/gsl_block_complex_double.h \ + ../../gsl/gsl_matrix_complex_float.h \ + ../../gsl/gsl_vector_complex_float.h ../../gsl/gsl_vector_float.h \ + ../../gsl/gsl_block_float.h ../../gsl/gsl_block_complex_float.h \ + ../../gsl/gsl_matrix_long_double.h ../../gsl/gsl_matrix_double.h \ + ../../gsl/gsl_matrix_float.h ../../gsl/gsl_matrix_ulong.h \ + ../../gsl/gsl_vector_ulong.h ../../gsl/gsl_block_ulong.h \ + ../../gsl/gsl_matrix_long.h ../../gsl/gsl_vector_long.h \ + ../../gsl/gsl_block_long.h ../../gsl/gsl_matrix_uint.h \ + ../../gsl/gsl_vector_uint.h ../../gsl/gsl_block_uint.h \ + ../../gsl/gsl_matrix_int.h ../../gsl/gsl_vector_int.h \ + ../../gsl/gsl_block_int.h ../../gsl/gsl_matrix_ushort.h \ + ../../gsl/gsl_vector_ushort.h ../../gsl/gsl_block_ushort.h \ + ../../gsl/gsl_matrix_short.h ../../gsl/gsl_vector_short.h \ + ../../gsl/gsl_block_short.h ../../gsl/gsl_matrix_uchar.h \ + ../../gsl/gsl_vector_uchar.h ../../gsl/gsl_block_uchar.h \ + ../../gsl/gsl_matrix_char.h ../../gsl/gsl_vector_char.h \ + ../../gsl/gsl_block_char.h ../../gsl/gsl_odeiv2.h + +/usr/include/stdc-predef.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../../gsl/gsl_types.h: + +../../gsl/gsl_matrix.h: + +../../gsl/gsl_matrix_complex_long_double.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../../gsl/gsl_complex.h: + +../../gsl/gsl_check_range.h: + +../../gsl/gsl_vector_complex_long_double.h: + +../../gsl/gsl_vector_long_double.h: + +../../gsl/gsl_inline.h: + +../../gsl/gsl_block_long_double.h: + +../../gsl/gsl_vector_complex.h: + +../../gsl/gsl_block_complex_long_double.h: + +../../gsl/gsl_matrix_complex_double.h: + +../../gsl/gsl_vector_complex_double.h: + +../../gsl/gsl_vector_double.h: + +../../gsl/gsl_block_double.h: + +../../gsl/gsl_block_complex_double.h: + +../../gsl/gsl_matrix_complex_float.h: + +../../gsl/gsl_vector_complex_float.h: + +../../gsl/gsl_vector_float.h: + +../../gsl/gsl_block_float.h: + +../../gsl/gsl_block_complex_float.h: + +../../gsl/gsl_matrix_long_double.h: + +../../gsl/gsl_matrix_double.h: + +../../gsl/gsl_matrix_float.h: + +../../gsl/gsl_matrix_ulong.h: + +../../gsl/gsl_vector_ulong.h: + +../../gsl/gsl_block_ulong.h: + +../../gsl/gsl_matrix_long.h: + +../../gsl/gsl_vector_long.h: + +../../gsl/gsl_block_long.h: + +../../gsl/gsl_matrix_uint.h: + +../../gsl/gsl_vector_uint.h: + +../../gsl/gsl_block_uint.h: + +../../gsl/gsl_matrix_int.h: + +../../gsl/gsl_vector_int.h: + +../../gsl/gsl_block_int.h: + +../../gsl/gsl_matrix_ushort.h: + +../../gsl/gsl_vector_ushort.h: + +../../gsl/gsl_block_ushort.h: + +../../gsl/gsl_matrix_short.h: + +../../gsl/gsl_vector_short.h: + +../../gsl/gsl_block_short.h: + +../../gsl/gsl_matrix_uchar.h: + +../../gsl/gsl_vector_uchar.h: + +../../gsl/gsl_block_uchar.h: + +../../gsl/gsl_matrix_char.h: + +../../gsl/gsl_vector_char.h: + +../../gsl/gsl_block_char.h: + +../../gsl/gsl_odeiv2.h: diff --git a/gsl-2.5/doc/examples/.deps/permseq.Po b/gsl-2.5/doc/examples/.deps/permseq.Po new file mode 100644 index 00000000..5bcdf188 --- /dev/null +++ b/gsl-2.5/doc/examples/.deps/permseq.Po @@ -0,0 +1,113 @@ +permseq.o: permseq.c /usr/include/stdc-predef.h /usr/include/stdio.h \ + /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../../gsl/gsl_permutation.h \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/byteswap.h \ + /usr/include/bits/byteswap-16.h /usr/include/sys/types.h \ + /usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib-float.h \ + ../../gsl/gsl_types.h ../../gsl/gsl_errno.h /usr/include/errno.h \ + /usr/include/bits/errno.h /usr/include/linux/errno.h \ + /usr/include/asm/errno.h /usr/include/asm-generic/errno.h \ + /usr/include/asm-generic/errno-base.h ../../gsl/gsl_inline.h \ + ../../gsl/gsl_check_range.h + +/usr/include/stdc-predef.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../../gsl/gsl_permutation.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../../gsl/gsl_types.h: + +../../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../../gsl/gsl_inline.h: + +../../gsl/gsl_check_range.h: diff --git a/gsl-2.5/doc/examples/.deps/permshuffle.Po b/gsl-2.5/doc/examples/.deps/permshuffle.Po new file mode 100644 index 00000000..ee768dd5 --- /dev/null +++ b/gsl-2.5/doc/examples/.deps/permshuffle.Po @@ -0,0 +1,233 @@ +permshuffle.o: permshuffle.c /usr/include/stdc-predef.h \ + /usr/include/stdio.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../../gsl/gsl_rng.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../../gsl/gsl_types.h \ + ../../gsl/gsl_errno.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../../gsl/gsl_inline.h ../../gsl/gsl_randist.h ../../gsl/gsl_vector.h \ + ../../gsl/gsl_vector_complex_long_double.h ../../gsl/gsl_complex.h \ + ../../gsl/gsl_check_range.h ../../gsl/gsl_vector_long_double.h \ + ../../gsl/gsl_block_long_double.h ../../gsl/gsl_vector_complex.h \ + ../../gsl/gsl_block_complex_long_double.h \ + ../../gsl/gsl_vector_complex_double.h ../../gsl/gsl_vector_double.h \ + ../../gsl/gsl_block_double.h ../../gsl/gsl_block_complex_double.h \ + ../../gsl/gsl_vector_complex_float.h ../../gsl/gsl_vector_float.h \ + ../../gsl/gsl_block_float.h ../../gsl/gsl_block_complex_float.h \ + ../../gsl/gsl_vector_ulong.h ../../gsl/gsl_block_ulong.h \ + ../../gsl/gsl_vector_long.h ../../gsl/gsl_block_long.h \ + ../../gsl/gsl_vector_uint.h ../../gsl/gsl_block_uint.h \ + ../../gsl/gsl_vector_int.h ../../gsl/gsl_block_int.h \ + ../../gsl/gsl_vector_ushort.h ../../gsl/gsl_block_ushort.h \ + ../../gsl/gsl_vector_short.h ../../gsl/gsl_block_short.h \ + ../../gsl/gsl_vector_uchar.h ../../gsl/gsl_block_uchar.h \ + ../../gsl/gsl_vector_char.h ../../gsl/gsl_block_char.h \ + ../../gsl/gsl_matrix.h ../../gsl/gsl_matrix_complex_long_double.h \ + ../../gsl/gsl_matrix_complex_double.h \ + ../../gsl/gsl_matrix_complex_float.h ../../gsl/gsl_matrix_long_double.h \ + ../../gsl/gsl_matrix_double.h ../../gsl/gsl_matrix_float.h \ + ../../gsl/gsl_matrix_ulong.h ../../gsl/gsl_matrix_long.h \ + ../../gsl/gsl_matrix_uint.h ../../gsl/gsl_matrix_int.h \ + ../../gsl/gsl_matrix_ushort.h ../../gsl/gsl_matrix_short.h \ + ../../gsl/gsl_matrix_uchar.h ../../gsl/gsl_matrix_char.h \ + ../../gsl/gsl_permutation.h + +/usr/include/stdc-predef.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../../gsl/gsl_rng.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../../gsl/gsl_types.h: + +../../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../../gsl/gsl_inline.h: + +../../gsl/gsl_randist.h: + +../../gsl/gsl_vector.h: + +../../gsl/gsl_vector_complex_long_double.h: + +../../gsl/gsl_complex.h: + +../../gsl/gsl_check_range.h: + +../../gsl/gsl_vector_long_double.h: + +../../gsl/gsl_block_long_double.h: + +../../gsl/gsl_vector_complex.h: + +../../gsl/gsl_block_complex_long_double.h: + +../../gsl/gsl_vector_complex_double.h: + +../../gsl/gsl_vector_double.h: + +../../gsl/gsl_block_double.h: + +../../gsl/gsl_block_complex_double.h: + +../../gsl/gsl_vector_complex_float.h: + +../../gsl/gsl_vector_float.h: + +../../gsl/gsl_block_float.h: + +../../gsl/gsl_block_complex_float.h: + +../../gsl/gsl_vector_ulong.h: + +../../gsl/gsl_block_ulong.h: + +../../gsl/gsl_vector_long.h: + +../../gsl/gsl_block_long.h: + +../../gsl/gsl_vector_uint.h: + +../../gsl/gsl_block_uint.h: + +../../gsl/gsl_vector_int.h: + +../../gsl/gsl_block_int.h: + +../../gsl/gsl_vector_ushort.h: + +../../gsl/gsl_block_ushort.h: + +../../gsl/gsl_vector_short.h: + +../../gsl/gsl_block_short.h: + +../../gsl/gsl_vector_uchar.h: + +../../gsl/gsl_block_uchar.h: + +../../gsl/gsl_vector_char.h: + +../../gsl/gsl_block_char.h: + +../../gsl/gsl_matrix.h: + +../../gsl/gsl_matrix_complex_long_double.h: + +../../gsl/gsl_matrix_complex_double.h: + +../../gsl/gsl_matrix_complex_float.h: + +../../gsl/gsl_matrix_long_double.h: + +../../gsl/gsl_matrix_double.h: + +../../gsl/gsl_matrix_float.h: + +../../gsl/gsl_matrix_ulong.h: + +../../gsl/gsl_matrix_long.h: + +../../gsl/gsl_matrix_uint.h: + +../../gsl/gsl_matrix_int.h: + +../../gsl/gsl_matrix_ushort.h: + +../../gsl/gsl_matrix_short.h: + +../../gsl/gsl_matrix_uchar.h: + +../../gsl/gsl_matrix_char.h: + +../../gsl/gsl_permutation.h: diff --git a/gsl-2.5/doc/examples/.deps/poisson.Po b/gsl-2.5/doc/examples/.deps/poisson.Po new file mode 100644 index 00000000..c57dfde3 --- /dev/null +++ b/gsl-2.5/doc/examples/.deps/poisson.Po @@ -0,0 +1,307 @@ +poisson.o: poisson.c /usr/include/stdc-predef.h /usr/include/stdio.h \ + /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../../gsl/gsl_math.h ../../gsl/gsl_sys.h ../../gsl/gsl_inline.h \ + ../../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../../gsl/gsl_precision.h ../../gsl/gsl_types.h ../../gsl/gsl_nan.h \ + ../../gsl/gsl_pow_int.h ../../gsl/gsl_minmax.h ../../gsl/gsl_vector.h \ + ../../gsl/gsl_vector_complex_long_double.h ../../gsl/gsl_errno.h \ + /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../../gsl/gsl_complex.h ../../gsl/gsl_check_range.h \ + ../../gsl/gsl_vector_long_double.h ../../gsl/gsl_block_long_double.h \ + ../../gsl/gsl_vector_complex.h ../../gsl/gsl_block_complex_long_double.h \ + ../../gsl/gsl_vector_complex_double.h ../../gsl/gsl_vector_double.h \ + ../../gsl/gsl_block_double.h ../../gsl/gsl_block_complex_double.h \ + ../../gsl/gsl_vector_complex_float.h ../../gsl/gsl_vector_float.h \ + ../../gsl/gsl_block_float.h ../../gsl/gsl_block_complex_float.h \ + ../../gsl/gsl_vector_ulong.h ../../gsl/gsl_block_ulong.h \ + ../../gsl/gsl_vector_long.h ../../gsl/gsl_block_long.h \ + ../../gsl/gsl_vector_uint.h ../../gsl/gsl_block_uint.h \ + ../../gsl/gsl_vector_int.h ../../gsl/gsl_block_int.h \ + ../../gsl/gsl_vector_ushort.h ../../gsl/gsl_block_ushort.h \ + ../../gsl/gsl_vector_short.h ../../gsl/gsl_block_short.h \ + ../../gsl/gsl_vector_uchar.h ../../gsl/gsl_block_uchar.h \ + ../../gsl/gsl_vector_char.h ../../gsl/gsl_block_char.h \ + ../../gsl/gsl_spmatrix.h ../../gsl/gsl_matrix.h \ + ../../gsl/gsl_matrix_complex_long_double.h \ + ../../gsl/gsl_matrix_complex_double.h \ + ../../gsl/gsl_matrix_complex_float.h ../../gsl/gsl_matrix_long_double.h \ + ../../gsl/gsl_matrix_double.h ../../gsl/gsl_matrix_float.h \ + ../../gsl/gsl_matrix_ulong.h ../../gsl/gsl_matrix_long.h \ + ../../gsl/gsl_matrix_uint.h ../../gsl/gsl_matrix_int.h \ + ../../gsl/gsl_matrix_ushort.h ../../gsl/gsl_matrix_short.h \ + ../../gsl/gsl_matrix_uchar.h ../../gsl/gsl_matrix_char.h \ + ../../gsl/gsl_splinalg.h ../../gsl/gsl_linalg.h ../../gsl/gsl_mode.h \ + ../../gsl/gsl_permutation.h ../../gsl/gsl_blas.h \ + ../../gsl/gsl_blas_types.h ../../gsl/gsl_cblas.h + +/usr/include/stdc-predef.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../../gsl/gsl_math.h: + +../../gsl/gsl_sys.h: + +../../gsl/gsl_inline.h: + +../../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../../gsl/gsl_precision.h: + +../../gsl/gsl_types.h: + +../../gsl/gsl_nan.h: + +../../gsl/gsl_pow_int.h: + +../../gsl/gsl_minmax.h: + +../../gsl/gsl_vector.h: + +../../gsl/gsl_vector_complex_long_double.h: + +../../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../../gsl/gsl_complex.h: + +../../gsl/gsl_check_range.h: + +../../gsl/gsl_vector_long_double.h: + +../../gsl/gsl_block_long_double.h: + +../../gsl/gsl_vector_complex.h: + +../../gsl/gsl_block_complex_long_double.h: + +../../gsl/gsl_vector_complex_double.h: + +../../gsl/gsl_vector_double.h: + +../../gsl/gsl_block_double.h: + +../../gsl/gsl_block_complex_double.h: + +../../gsl/gsl_vector_complex_float.h: + +../../gsl/gsl_vector_float.h: + +../../gsl/gsl_block_float.h: + +../../gsl/gsl_block_complex_float.h: + +../../gsl/gsl_vector_ulong.h: + +../../gsl/gsl_block_ulong.h: + +../../gsl/gsl_vector_long.h: + +../../gsl/gsl_block_long.h: + +../../gsl/gsl_vector_uint.h: + +../../gsl/gsl_block_uint.h: + +../../gsl/gsl_vector_int.h: + +../../gsl/gsl_block_int.h: + +../../gsl/gsl_vector_ushort.h: + +../../gsl/gsl_block_ushort.h: + +../../gsl/gsl_vector_short.h: + +../../gsl/gsl_block_short.h: + +../../gsl/gsl_vector_uchar.h: + +../../gsl/gsl_block_uchar.h: + +../../gsl/gsl_vector_char.h: + +../../gsl/gsl_block_char.h: + +../../gsl/gsl_spmatrix.h: + +../../gsl/gsl_matrix.h: + +../../gsl/gsl_matrix_complex_long_double.h: + +../../gsl/gsl_matrix_complex_double.h: + +../../gsl/gsl_matrix_complex_float.h: + +../../gsl/gsl_matrix_long_double.h: + +../../gsl/gsl_matrix_double.h: + +../../gsl/gsl_matrix_float.h: + +../../gsl/gsl_matrix_ulong.h: + +../../gsl/gsl_matrix_long.h: + +../../gsl/gsl_matrix_uint.h: + +../../gsl/gsl_matrix_int.h: + +../../gsl/gsl_matrix_ushort.h: + +../../gsl/gsl_matrix_short.h: + +../../gsl/gsl_matrix_uchar.h: + +../../gsl/gsl_matrix_char.h: + +../../gsl/gsl_splinalg.h: + +../../gsl/gsl_linalg.h: + +../../gsl/gsl_mode.h: + +../../gsl/gsl_permutation.h: + +../../gsl/gsl_blas.h: + +../../gsl/gsl_blas_types.h: + +../../gsl/gsl_cblas.h: diff --git a/gsl-2.5/doc/examples/.deps/polyroots.Po b/gsl-2.5/doc/examples/.deps/polyroots.Po new file mode 100644 index 00000000..c46e8db5 --- /dev/null +++ b/gsl-2.5/doc/examples/.deps/polyroots.Po @@ -0,0 +1,93 @@ +polyroots.o: polyroots.c /usr/include/stdc-predef.h /usr/include/stdio.h \ + /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../../gsl/gsl_poly.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../../gsl/gsl_inline.h \ + ../../gsl/gsl_complex.h + +/usr/include/stdc-predef.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../../gsl/gsl_poly.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../../gsl/gsl_inline.h: + +../../gsl/gsl_complex.h: diff --git a/gsl-2.5/doc/examples/.deps/qrng.Po b/gsl-2.5/doc/examples/.deps/qrng.Po new file mode 100644 index 00000000..ebc0edcf --- /dev/null +++ b/gsl-2.5/doc/examples/.deps/qrng.Po @@ -0,0 +1,110 @@ +qrng.o: qrng.c /usr/include/stdc-predef.h /usr/include/stdio.h \ + /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../../gsl/gsl_qrng.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../../gsl/gsl_types.h \ + ../../gsl/gsl_errno.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../../gsl/gsl_inline.h + +/usr/include/stdc-predef.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../../gsl/gsl_qrng.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../../gsl/gsl_types.h: + +../../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../../gsl/gsl_inline.h: diff --git a/gsl-2.5/doc/examples/.deps/randpoisson.Po b/gsl-2.5/doc/examples/.deps/randpoisson.Po new file mode 100644 index 00000000..c2cd1cc3 --- /dev/null +++ b/gsl-2.5/doc/examples/.deps/randpoisson.Po @@ -0,0 +1,230 @@ +randpoisson.o: randpoisson.c /usr/include/stdc-predef.h \ + /usr/include/stdio.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../../gsl/gsl_rng.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../../gsl/gsl_types.h \ + ../../gsl/gsl_errno.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../../gsl/gsl_inline.h ../../gsl/gsl_randist.h ../../gsl/gsl_vector.h \ + ../../gsl/gsl_vector_complex_long_double.h ../../gsl/gsl_complex.h \ + ../../gsl/gsl_check_range.h ../../gsl/gsl_vector_long_double.h \ + ../../gsl/gsl_block_long_double.h ../../gsl/gsl_vector_complex.h \ + ../../gsl/gsl_block_complex_long_double.h \ + ../../gsl/gsl_vector_complex_double.h ../../gsl/gsl_vector_double.h \ + ../../gsl/gsl_block_double.h ../../gsl/gsl_block_complex_double.h \ + ../../gsl/gsl_vector_complex_float.h ../../gsl/gsl_vector_float.h \ + ../../gsl/gsl_block_float.h ../../gsl/gsl_block_complex_float.h \ + ../../gsl/gsl_vector_ulong.h ../../gsl/gsl_block_ulong.h \ + ../../gsl/gsl_vector_long.h ../../gsl/gsl_block_long.h \ + ../../gsl/gsl_vector_uint.h ../../gsl/gsl_block_uint.h \ + ../../gsl/gsl_vector_int.h ../../gsl/gsl_block_int.h \ + ../../gsl/gsl_vector_ushort.h ../../gsl/gsl_block_ushort.h \ + ../../gsl/gsl_vector_short.h ../../gsl/gsl_block_short.h \ + ../../gsl/gsl_vector_uchar.h ../../gsl/gsl_block_uchar.h \ + ../../gsl/gsl_vector_char.h ../../gsl/gsl_block_char.h \ + ../../gsl/gsl_matrix.h ../../gsl/gsl_matrix_complex_long_double.h \ + ../../gsl/gsl_matrix_complex_double.h \ + ../../gsl/gsl_matrix_complex_float.h ../../gsl/gsl_matrix_long_double.h \ + ../../gsl/gsl_matrix_double.h ../../gsl/gsl_matrix_float.h \ + ../../gsl/gsl_matrix_ulong.h ../../gsl/gsl_matrix_long.h \ + ../../gsl/gsl_matrix_uint.h ../../gsl/gsl_matrix_int.h \ + ../../gsl/gsl_matrix_ushort.h ../../gsl/gsl_matrix_short.h \ + ../../gsl/gsl_matrix_uchar.h ../../gsl/gsl_matrix_char.h + +/usr/include/stdc-predef.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../../gsl/gsl_rng.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../../gsl/gsl_types.h: + +../../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../../gsl/gsl_inline.h: + +../../gsl/gsl_randist.h: + +../../gsl/gsl_vector.h: + +../../gsl/gsl_vector_complex_long_double.h: + +../../gsl/gsl_complex.h: + +../../gsl/gsl_check_range.h: + +../../gsl/gsl_vector_long_double.h: + +../../gsl/gsl_block_long_double.h: + +../../gsl/gsl_vector_complex.h: + +../../gsl/gsl_block_complex_long_double.h: + +../../gsl/gsl_vector_complex_double.h: + +../../gsl/gsl_vector_double.h: + +../../gsl/gsl_block_double.h: + +../../gsl/gsl_block_complex_double.h: + +../../gsl/gsl_vector_complex_float.h: + +../../gsl/gsl_vector_float.h: + +../../gsl/gsl_block_float.h: + +../../gsl/gsl_block_complex_float.h: + +../../gsl/gsl_vector_ulong.h: + +../../gsl/gsl_block_ulong.h: + +../../gsl/gsl_vector_long.h: + +../../gsl/gsl_block_long.h: + +../../gsl/gsl_vector_uint.h: + +../../gsl/gsl_block_uint.h: + +../../gsl/gsl_vector_int.h: + +../../gsl/gsl_block_int.h: + +../../gsl/gsl_vector_ushort.h: + +../../gsl/gsl_block_ushort.h: + +../../gsl/gsl_vector_short.h: + +../../gsl/gsl_block_short.h: + +../../gsl/gsl_vector_uchar.h: + +../../gsl/gsl_block_uchar.h: + +../../gsl/gsl_vector_char.h: + +../../gsl/gsl_block_char.h: + +../../gsl/gsl_matrix.h: + +../../gsl/gsl_matrix_complex_long_double.h: + +../../gsl/gsl_matrix_complex_double.h: + +../../gsl/gsl_matrix_complex_float.h: + +../../gsl/gsl_matrix_long_double.h: + +../../gsl/gsl_matrix_double.h: + +../../gsl/gsl_matrix_float.h: + +../../gsl/gsl_matrix_ulong.h: + +../../gsl/gsl_matrix_long.h: + +../../gsl/gsl_matrix_uint.h: + +../../gsl/gsl_matrix_int.h: + +../../gsl/gsl_matrix_ushort.h: + +../../gsl/gsl_matrix_short.h: + +../../gsl/gsl_matrix_uchar.h: + +../../gsl/gsl_matrix_char.h: diff --git a/gsl-2.5/doc/examples/.deps/randwalk.Po b/gsl-2.5/doc/examples/.deps/randwalk.Po new file mode 100644 index 00000000..fd5a2cbd --- /dev/null +++ b/gsl-2.5/doc/examples/.deps/randwalk.Po @@ -0,0 +1,230 @@ +randwalk.o: randwalk.c /usr/include/stdc-predef.h /usr/include/stdio.h \ + /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../../gsl/gsl_rng.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../../gsl/gsl_types.h \ + ../../gsl/gsl_errno.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../../gsl/gsl_inline.h ../../gsl/gsl_randist.h ../../gsl/gsl_vector.h \ + ../../gsl/gsl_vector_complex_long_double.h ../../gsl/gsl_complex.h \ + ../../gsl/gsl_check_range.h ../../gsl/gsl_vector_long_double.h \ + ../../gsl/gsl_block_long_double.h ../../gsl/gsl_vector_complex.h \ + ../../gsl/gsl_block_complex_long_double.h \ + ../../gsl/gsl_vector_complex_double.h ../../gsl/gsl_vector_double.h \ + ../../gsl/gsl_block_double.h ../../gsl/gsl_block_complex_double.h \ + ../../gsl/gsl_vector_complex_float.h ../../gsl/gsl_vector_float.h \ + ../../gsl/gsl_block_float.h ../../gsl/gsl_block_complex_float.h \ + ../../gsl/gsl_vector_ulong.h ../../gsl/gsl_block_ulong.h \ + ../../gsl/gsl_vector_long.h ../../gsl/gsl_block_long.h \ + ../../gsl/gsl_vector_uint.h ../../gsl/gsl_block_uint.h \ + ../../gsl/gsl_vector_int.h ../../gsl/gsl_block_int.h \ + ../../gsl/gsl_vector_ushort.h ../../gsl/gsl_block_ushort.h \ + ../../gsl/gsl_vector_short.h ../../gsl/gsl_block_short.h \ + ../../gsl/gsl_vector_uchar.h ../../gsl/gsl_block_uchar.h \ + ../../gsl/gsl_vector_char.h ../../gsl/gsl_block_char.h \ + ../../gsl/gsl_matrix.h ../../gsl/gsl_matrix_complex_long_double.h \ + ../../gsl/gsl_matrix_complex_double.h \ + ../../gsl/gsl_matrix_complex_float.h ../../gsl/gsl_matrix_long_double.h \ + ../../gsl/gsl_matrix_double.h ../../gsl/gsl_matrix_float.h \ + ../../gsl/gsl_matrix_ulong.h ../../gsl/gsl_matrix_long.h \ + ../../gsl/gsl_matrix_uint.h ../../gsl/gsl_matrix_int.h \ + ../../gsl/gsl_matrix_ushort.h ../../gsl/gsl_matrix_short.h \ + ../../gsl/gsl_matrix_uchar.h ../../gsl/gsl_matrix_char.h + +/usr/include/stdc-predef.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../../gsl/gsl_rng.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../../gsl/gsl_types.h: + +../../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../../gsl/gsl_inline.h: + +../../gsl/gsl_randist.h: + +../../gsl/gsl_vector.h: + +../../gsl/gsl_vector_complex_long_double.h: + +../../gsl/gsl_complex.h: + +../../gsl/gsl_check_range.h: + +../../gsl/gsl_vector_long_double.h: + +../../gsl/gsl_block_long_double.h: + +../../gsl/gsl_vector_complex.h: + +../../gsl/gsl_block_complex_long_double.h: + +../../gsl/gsl_vector_complex_double.h: + +../../gsl/gsl_vector_double.h: + +../../gsl/gsl_block_double.h: + +../../gsl/gsl_block_complex_double.h: + +../../gsl/gsl_vector_complex_float.h: + +../../gsl/gsl_vector_float.h: + +../../gsl/gsl_block_float.h: + +../../gsl/gsl_block_complex_float.h: + +../../gsl/gsl_vector_ulong.h: + +../../gsl/gsl_block_ulong.h: + +../../gsl/gsl_vector_long.h: + +../../gsl/gsl_block_long.h: + +../../gsl/gsl_vector_uint.h: + +../../gsl/gsl_block_uint.h: + +../../gsl/gsl_vector_int.h: + +../../gsl/gsl_block_int.h: + +../../gsl/gsl_vector_ushort.h: + +../../gsl/gsl_block_ushort.h: + +../../gsl/gsl_vector_short.h: + +../../gsl/gsl_block_short.h: + +../../gsl/gsl_vector_uchar.h: + +../../gsl/gsl_block_uchar.h: + +../../gsl/gsl_vector_char.h: + +../../gsl/gsl_block_char.h: + +../../gsl/gsl_matrix.h: + +../../gsl/gsl_matrix_complex_long_double.h: + +../../gsl/gsl_matrix_complex_double.h: + +../../gsl/gsl_matrix_complex_float.h: + +../../gsl/gsl_matrix_long_double.h: + +../../gsl/gsl_matrix_double.h: + +../../gsl/gsl_matrix_float.h: + +../../gsl/gsl_matrix_ulong.h: + +../../gsl/gsl_matrix_long.h: + +../../gsl/gsl_matrix_uint.h: + +../../gsl/gsl_matrix_int.h: + +../../gsl/gsl_matrix_ushort.h: + +../../gsl/gsl_matrix_short.h: + +../../gsl/gsl_matrix_uchar.h: + +../../gsl/gsl_matrix_char.h: diff --git a/gsl-2.5/doc/examples/.deps/rng.Po b/gsl-2.5/doc/examples/.deps/rng.Po new file mode 100644 index 00000000..287fb581 --- /dev/null +++ b/gsl-2.5/doc/examples/.deps/rng.Po @@ -0,0 +1,110 @@ +rng.o: rng.c /usr/include/stdc-predef.h /usr/include/stdio.h \ + /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../../gsl/gsl_rng.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../../gsl/gsl_types.h \ + ../../gsl/gsl_errno.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../../gsl/gsl_inline.h + +/usr/include/stdc-predef.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../../gsl/gsl_rng.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../../gsl/gsl_types.h: + +../../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../../gsl/gsl_inline.h: diff --git a/gsl-2.5/doc/examples/.deps/rngunif.Po b/gsl-2.5/doc/examples/.deps/rngunif.Po new file mode 100644 index 00000000..1a476c79 --- /dev/null +++ b/gsl-2.5/doc/examples/.deps/rngunif.Po @@ -0,0 +1,110 @@ +rngunif.o: rngunif.c /usr/include/stdc-predef.h /usr/include/stdio.h \ + /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../../gsl/gsl_rng.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../../gsl/gsl_types.h \ + ../../gsl/gsl_errno.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../../gsl/gsl_inline.h + +/usr/include/stdc-predef.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../../gsl/gsl_rng.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../../gsl/gsl_types.h: + +../../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../../gsl/gsl_inline.h: diff --git a/gsl-2.5/doc/examples/.deps/robfit.Po b/gsl-2.5/doc/examples/.deps/robfit.Po new file mode 100644 index 00000000..8c20a0aa --- /dev/null +++ b/gsl-2.5/doc/examples/.deps/robfit.Po @@ -0,0 +1,294 @@ +robfit.o: robfit.c /usr/include/stdc-predef.h /usr/include/stdio.h \ + /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../../gsl/gsl_multifit.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../../gsl/gsl_sys.h \ + ../../gsl/gsl_inline.h ../../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../../gsl/gsl_precision.h ../../gsl/gsl_types.h ../../gsl/gsl_nan.h \ + ../../gsl/gsl_pow_int.h ../../gsl/gsl_minmax.h ../../gsl/gsl_vector.h \ + ../../gsl/gsl_vector_complex_long_double.h ../../gsl/gsl_errno.h \ + /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../../gsl/gsl_complex.h ../../gsl/gsl_check_range.h \ + ../../gsl/gsl_vector_long_double.h ../../gsl/gsl_block_long_double.h \ + ../../gsl/gsl_vector_complex.h ../../gsl/gsl_block_complex_long_double.h \ + ../../gsl/gsl_vector_complex_double.h ../../gsl/gsl_vector_double.h \ + ../../gsl/gsl_block_double.h ../../gsl/gsl_block_complex_double.h \ + ../../gsl/gsl_vector_complex_float.h ../../gsl/gsl_vector_float.h \ + ../../gsl/gsl_block_float.h ../../gsl/gsl_block_complex_float.h \ + ../../gsl/gsl_vector_ulong.h ../../gsl/gsl_block_ulong.h \ + ../../gsl/gsl_vector_long.h ../../gsl/gsl_block_long.h \ + ../../gsl/gsl_vector_uint.h ../../gsl/gsl_block_uint.h \ + ../../gsl/gsl_vector_int.h ../../gsl/gsl_block_int.h \ + ../../gsl/gsl_vector_ushort.h ../../gsl/gsl_block_ushort.h \ + ../../gsl/gsl_vector_short.h ../../gsl/gsl_block_short.h \ + ../../gsl/gsl_vector_uchar.h ../../gsl/gsl_block_uchar.h \ + ../../gsl/gsl_vector_char.h ../../gsl/gsl_block_char.h \ + ../../gsl/gsl_matrix.h ../../gsl/gsl_matrix_complex_long_double.h \ + ../../gsl/gsl_matrix_complex_double.h \ + ../../gsl/gsl_matrix_complex_float.h ../../gsl/gsl_matrix_long_double.h \ + ../../gsl/gsl_matrix_double.h ../../gsl/gsl_matrix_float.h \ + ../../gsl/gsl_matrix_ulong.h ../../gsl/gsl_matrix_long.h \ + ../../gsl/gsl_matrix_uint.h ../../gsl/gsl_matrix_int.h \ + ../../gsl/gsl_matrix_ushort.h ../../gsl/gsl_matrix_short.h \ + ../../gsl/gsl_matrix_uchar.h ../../gsl/gsl_matrix_char.h \ + ../../gsl/gsl_randist.h ../../gsl/gsl_rng.h + +/usr/include/stdc-predef.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../../gsl/gsl_multifit.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../../gsl/gsl_sys.h: + +../../gsl/gsl_inline.h: + +../../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../../gsl/gsl_precision.h: + +../../gsl/gsl_types.h: + +../../gsl/gsl_nan.h: + +../../gsl/gsl_pow_int.h: + +../../gsl/gsl_minmax.h: + +../../gsl/gsl_vector.h: + +../../gsl/gsl_vector_complex_long_double.h: + +../../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../../gsl/gsl_complex.h: + +../../gsl/gsl_check_range.h: + +../../gsl/gsl_vector_long_double.h: + +../../gsl/gsl_block_long_double.h: + +../../gsl/gsl_vector_complex.h: + +../../gsl/gsl_block_complex_long_double.h: + +../../gsl/gsl_vector_complex_double.h: + +../../gsl/gsl_vector_double.h: + +../../gsl/gsl_block_double.h: + +../../gsl/gsl_block_complex_double.h: + +../../gsl/gsl_vector_complex_float.h: + +../../gsl/gsl_vector_float.h: + +../../gsl/gsl_block_float.h: + +../../gsl/gsl_block_complex_float.h: + +../../gsl/gsl_vector_ulong.h: + +../../gsl/gsl_block_ulong.h: + +../../gsl/gsl_vector_long.h: + +../../gsl/gsl_block_long.h: + +../../gsl/gsl_vector_uint.h: + +../../gsl/gsl_block_uint.h: + +../../gsl/gsl_vector_int.h: + +../../gsl/gsl_block_int.h: + +../../gsl/gsl_vector_ushort.h: + +../../gsl/gsl_block_ushort.h: + +../../gsl/gsl_vector_short.h: + +../../gsl/gsl_block_short.h: + +../../gsl/gsl_vector_uchar.h: + +../../gsl/gsl_block_uchar.h: + +../../gsl/gsl_vector_char.h: + +../../gsl/gsl_block_char.h: + +../../gsl/gsl_matrix.h: + +../../gsl/gsl_matrix_complex_long_double.h: + +../../gsl/gsl_matrix_complex_double.h: + +../../gsl/gsl_matrix_complex_float.h: + +../../gsl/gsl_matrix_long_double.h: + +../../gsl/gsl_matrix_double.h: + +../../gsl/gsl_matrix_float.h: + +../../gsl/gsl_matrix_ulong.h: + +../../gsl/gsl_matrix_long.h: + +../../gsl/gsl_matrix_uint.h: + +../../gsl/gsl_matrix_int.h: + +../../gsl/gsl_matrix_ushort.h: + +../../gsl/gsl_matrix_short.h: + +../../gsl/gsl_matrix_uchar.h: + +../../gsl/gsl_matrix_char.h: + +../../gsl/gsl_randist.h: + +../../gsl/gsl_rng.h: diff --git a/gsl-2.5/doc/examples/.deps/rootnewt.Po b/gsl-2.5/doc/examples/.deps/rootnewt.Po new file mode 100644 index 00000000..624030b2 --- /dev/null +++ b/gsl-2.5/doc/examples/.deps/rootnewt.Po @@ -0,0 +1,175 @@ +rootnewt.o: rootnewt.c /usr/include/stdc-predef.h /usr/include/stdio.h \ + /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../../gsl/gsl_errno.h /usr/include/errno.h \ + /usr/include/bits/errno.h /usr/include/linux/errno.h \ + /usr/include/asm/errno.h /usr/include/asm-generic/errno.h \ + /usr/include/asm-generic/errno-base.h ../../gsl/gsl_types.h \ + ../../gsl/gsl_math.h /usr/include/math.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../../gsl/gsl_sys.h \ + ../../gsl/gsl_inline.h ../../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../../gsl/gsl_precision.h ../../gsl/gsl_nan.h ../../gsl/gsl_pow_int.h \ + ../../gsl/gsl_minmax.h ../../gsl/gsl_roots.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h demo_fn.h demo_fn.c + +/usr/include/stdc-predef.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../../gsl/gsl_types.h: + +../../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../../gsl/gsl_sys.h: + +../../gsl/gsl_inline.h: + +../../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../../gsl/gsl_precision.h: + +../../gsl/gsl_nan.h: + +../../gsl/gsl_pow_int.h: + +../../gsl/gsl_minmax.h: + +../../gsl/gsl_roots.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +demo_fn.h: + +demo_fn.c: diff --git a/gsl-2.5/doc/examples/.deps/roots.Po b/gsl-2.5/doc/examples/.deps/roots.Po new file mode 100644 index 00000000..0e9ec64b --- /dev/null +++ b/gsl-2.5/doc/examples/.deps/roots.Po @@ -0,0 +1,175 @@ +roots.o: roots.c /usr/include/stdc-predef.h /usr/include/stdio.h \ + /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../../gsl/gsl_errno.h /usr/include/errno.h \ + /usr/include/bits/errno.h /usr/include/linux/errno.h \ + /usr/include/asm/errno.h /usr/include/asm-generic/errno.h \ + /usr/include/asm-generic/errno-base.h ../../gsl/gsl_types.h \ + ../../gsl/gsl_math.h /usr/include/math.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../../gsl/gsl_sys.h \ + ../../gsl/gsl_inline.h ../../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../../gsl/gsl_precision.h ../../gsl/gsl_nan.h ../../gsl/gsl_pow_int.h \ + ../../gsl/gsl_minmax.h ../../gsl/gsl_roots.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h demo_fn.h demo_fn.c + +/usr/include/stdc-predef.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../../gsl/gsl_types.h: + +../../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../../gsl/gsl_sys.h: + +../../gsl/gsl_inline.h: + +../../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../../gsl/gsl_precision.h: + +../../gsl/gsl_nan.h: + +../../gsl/gsl_pow_int.h: + +../../gsl/gsl_minmax.h: + +../../gsl/gsl_roots.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +demo_fn.h: + +demo_fn.c: diff --git a/gsl-2.5/doc/examples/.deps/rquantile.Po b/gsl-2.5/doc/examples/.deps/rquantile.Po new file mode 100644 index 00000000..f3894e3e --- /dev/null +++ b/gsl-2.5/doc/examples/.deps/rquantile.Po @@ -0,0 +1,296 @@ +rquantile.o: rquantile.c /usr/include/stdc-predef.h /usr/include/stdio.h \ + /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../../gsl/gsl_rstat.h \ + ../../gsl/gsl_statistics.h ../../gsl/gsl_statistics_long_double.h \ + ../../gsl/gsl_statistics_double.h ../../gsl/gsl_statistics_float.h \ + ../../gsl/gsl_statistics_ulong.h ../../gsl/gsl_statistics_long.h \ + ../../gsl/gsl_statistics_uint.h ../../gsl/gsl_statistics_int.h \ + ../../gsl/gsl_statistics_ushort.h ../../gsl/gsl_statistics_short.h \ + ../../gsl/gsl_statistics_uchar.h ../../gsl/gsl_statistics_char.h \ + ../../gsl/gsl_rng.h ../../gsl/gsl_types.h ../../gsl/gsl_errno.h \ + /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../../gsl/gsl_inline.h ../../gsl/gsl_randist.h ../../gsl/gsl_vector.h \ + ../../gsl/gsl_vector_complex_long_double.h ../../gsl/gsl_complex.h \ + ../../gsl/gsl_check_range.h ../../gsl/gsl_vector_long_double.h \ + ../../gsl/gsl_block_long_double.h ../../gsl/gsl_vector_complex.h \ + ../../gsl/gsl_block_complex_long_double.h \ + ../../gsl/gsl_vector_complex_double.h ../../gsl/gsl_vector_double.h \ + ../../gsl/gsl_block_double.h ../../gsl/gsl_block_complex_double.h \ + ../../gsl/gsl_vector_complex_float.h ../../gsl/gsl_vector_float.h \ + ../../gsl/gsl_block_float.h ../../gsl/gsl_block_complex_float.h \ + ../../gsl/gsl_vector_ulong.h ../../gsl/gsl_block_ulong.h \ + ../../gsl/gsl_vector_long.h ../../gsl/gsl_block_long.h \ + ../../gsl/gsl_vector_uint.h ../../gsl/gsl_block_uint.h \ + ../../gsl/gsl_vector_int.h ../../gsl/gsl_block_int.h \ + ../../gsl/gsl_vector_ushort.h ../../gsl/gsl_block_ushort.h \ + ../../gsl/gsl_vector_short.h ../../gsl/gsl_block_short.h \ + ../../gsl/gsl_vector_uchar.h ../../gsl/gsl_block_uchar.h \ + ../../gsl/gsl_vector_char.h ../../gsl/gsl_block_char.h \ + ../../gsl/gsl_matrix.h ../../gsl/gsl_matrix_complex_long_double.h \ + ../../gsl/gsl_matrix_complex_double.h \ + ../../gsl/gsl_matrix_complex_float.h ../../gsl/gsl_matrix_long_double.h \ + ../../gsl/gsl_matrix_double.h ../../gsl/gsl_matrix_float.h \ + ../../gsl/gsl_matrix_ulong.h ../../gsl/gsl_matrix_long.h \ + ../../gsl/gsl_matrix_uint.h ../../gsl/gsl_matrix_int.h \ + ../../gsl/gsl_matrix_ushort.h ../../gsl/gsl_matrix_short.h \ + ../../gsl/gsl_matrix_uchar.h ../../gsl/gsl_matrix_char.h \ + ../../gsl/gsl_sort.h ../../gsl/gsl_sort_long_double.h \ + ../../gsl/gsl_permutation.h ../../gsl/gsl_sort_double.h \ + ../../gsl/gsl_sort_float.h ../../gsl/gsl_sort_ulong.h \ + ../../gsl/gsl_sort_long.h ../../gsl/gsl_sort_uint.h \ + ../../gsl/gsl_sort_int.h ../../gsl/gsl_sort_ushort.h \ + ../../gsl/gsl_sort_short.h ../../gsl/gsl_sort_uchar.h \ + ../../gsl/gsl_sort_char.h + +/usr/include/stdc-predef.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../../gsl/gsl_rstat.h: + +../../gsl/gsl_statistics.h: + +../../gsl/gsl_statistics_long_double.h: + +../../gsl/gsl_statistics_double.h: + +../../gsl/gsl_statistics_float.h: + +../../gsl/gsl_statistics_ulong.h: + +../../gsl/gsl_statistics_long.h: + +../../gsl/gsl_statistics_uint.h: + +../../gsl/gsl_statistics_int.h: + +../../gsl/gsl_statistics_ushort.h: + +../../gsl/gsl_statistics_short.h: + +../../gsl/gsl_statistics_uchar.h: + +../../gsl/gsl_statistics_char.h: + +../../gsl/gsl_rng.h: + +../../gsl/gsl_types.h: + +../../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../../gsl/gsl_inline.h: + +../../gsl/gsl_randist.h: + +../../gsl/gsl_vector.h: + +../../gsl/gsl_vector_complex_long_double.h: + +../../gsl/gsl_complex.h: + +../../gsl/gsl_check_range.h: + +../../gsl/gsl_vector_long_double.h: + +../../gsl/gsl_block_long_double.h: + +../../gsl/gsl_vector_complex.h: + +../../gsl/gsl_block_complex_long_double.h: + +../../gsl/gsl_vector_complex_double.h: + +../../gsl/gsl_vector_double.h: + +../../gsl/gsl_block_double.h: + +../../gsl/gsl_block_complex_double.h: + +../../gsl/gsl_vector_complex_float.h: + +../../gsl/gsl_vector_float.h: + +../../gsl/gsl_block_float.h: + +../../gsl/gsl_block_complex_float.h: + +../../gsl/gsl_vector_ulong.h: + +../../gsl/gsl_block_ulong.h: + +../../gsl/gsl_vector_long.h: + +../../gsl/gsl_block_long.h: + +../../gsl/gsl_vector_uint.h: + +../../gsl/gsl_block_uint.h: + +../../gsl/gsl_vector_int.h: + +../../gsl/gsl_block_int.h: + +../../gsl/gsl_vector_ushort.h: + +../../gsl/gsl_block_ushort.h: + +../../gsl/gsl_vector_short.h: + +../../gsl/gsl_block_short.h: + +../../gsl/gsl_vector_uchar.h: + +../../gsl/gsl_block_uchar.h: + +../../gsl/gsl_vector_char.h: + +../../gsl/gsl_block_char.h: + +../../gsl/gsl_matrix.h: + +../../gsl/gsl_matrix_complex_long_double.h: + +../../gsl/gsl_matrix_complex_double.h: + +../../gsl/gsl_matrix_complex_float.h: + +../../gsl/gsl_matrix_long_double.h: + +../../gsl/gsl_matrix_double.h: + +../../gsl/gsl_matrix_float.h: + +../../gsl/gsl_matrix_ulong.h: + +../../gsl/gsl_matrix_long.h: + +../../gsl/gsl_matrix_uint.h: + +../../gsl/gsl_matrix_int.h: + +../../gsl/gsl_matrix_ushort.h: + +../../gsl/gsl_matrix_short.h: + +../../gsl/gsl_matrix_uchar.h: + +../../gsl/gsl_matrix_char.h: + +../../gsl/gsl_sort.h: + +../../gsl/gsl_sort_long_double.h: + +../../gsl/gsl_permutation.h: + +../../gsl/gsl_sort_double.h: + +../../gsl/gsl_sort_float.h: + +../../gsl/gsl_sort_ulong.h: + +../../gsl/gsl_sort_long.h: + +../../gsl/gsl_sort_uint.h: + +../../gsl/gsl_sort_int.h: + +../../gsl/gsl_sort_ushort.h: + +../../gsl/gsl_sort_short.h: + +../../gsl/gsl_sort_uchar.h: + +../../gsl/gsl_sort_char.h: diff --git a/gsl-2.5/doc/examples/.deps/rstat.Po b/gsl-2.5/doc/examples/.deps/rstat.Po new file mode 100644 index 00000000..b4bf8407 --- /dev/null +++ b/gsl-2.5/doc/examples/.deps/rstat.Po @@ -0,0 +1,46 @@ +rstat.o: rstat.c /usr/include/stdc-predef.h /usr/include/stdio.h \ + /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../../gsl/gsl_rstat.h + +/usr/include/stdc-predef.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../../gsl/gsl_rstat.h: diff --git a/gsl-2.5/doc/examples/.deps/siman.Po b/gsl-2.5/doc/examples/.deps/siman.Po new file mode 100644 index 00000000..47bf272a --- /dev/null +++ b/gsl-2.5/doc/examples/.deps/siman.Po @@ -0,0 +1,144 @@ +siman.o: siman.c /usr/include/stdc-predef.h /usr/include/math.h \ + /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h /usr/include/stdlib.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/string.h \ + /usr/include/xlocale.h /usr/include/bits/string.h \ + /usr/include/bits/string2.h ../../gsl/gsl_siman.h ../../gsl/gsl_rng.h \ + ../../gsl/gsl_types.h ../../gsl/gsl_errno.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../../gsl/gsl_inline.h + +/usr/include/stdc-predef.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +/usr/include/stdlib.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string.h: + +/usr/include/bits/string2.h: + +../../gsl/gsl_siman.h: + +../../gsl/gsl_rng.h: + +../../gsl/gsl_types.h: + +../../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../../gsl/gsl_inline.h: diff --git a/gsl-2.5/doc/examples/.deps/siman_tsp.Po b/gsl-2.5/doc/examples/.deps/siman_tsp.Po new file mode 100644 index 00000000..4509a195 --- /dev/null +++ b/gsl-2.5/doc/examples/.deps/siman_tsp.Po @@ -0,0 +1,188 @@ +siman_tsp.o: siman_tsp.c /usr/include/stdc-predef.h ../../config.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h /usr/include/string.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/xlocale.h /usr/include/bits/string.h \ + /usr/include/bits/string2.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/byteswap.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/bits/byteswap-16.h /usr/include/stdlib.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../../gsl/gsl_math.h ../../gsl/gsl_sys.h \ + ../../gsl/gsl_inline.h ../../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../../gsl/gsl_precision.h ../../gsl/gsl_types.h ../../gsl/gsl_nan.h \ + ../../gsl/gsl_pow_int.h ../../gsl/gsl_minmax.h ../../gsl/gsl_rng.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../../gsl/gsl_errno.h \ + /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../../gsl/gsl_siman.h ../../gsl/gsl_ieee_utils.h + +/usr/include/stdc-predef.h: + +../../config.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +/usr/include/string.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string.h: + +/usr/include/bits/string2.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/stdlib.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../../gsl/gsl_math.h: + +../../gsl/gsl_sys.h: + +../../gsl/gsl_inline.h: + +../../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../../gsl/gsl_precision.h: + +../../gsl/gsl_types.h: + +../../gsl/gsl_nan.h: + +../../gsl/gsl_pow_int.h: + +../../gsl/gsl_minmax.h: + +../../gsl/gsl_rng.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../../gsl/gsl_siman.h: + +../../gsl/gsl_ieee_utils.h: diff --git a/gsl-2.5/doc/examples/.deps/sortsmall.Po b/gsl-2.5/doc/examples/.deps/sortsmall.Po new file mode 100644 index 00000000..7b426dbe --- /dev/null +++ b/gsl-2.5/doc/examples/.deps/sortsmall.Po @@ -0,0 +1,117 @@ +sortsmall.o: sortsmall.c /usr/include/stdc-predef.h ../../gsl/gsl_rng.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../../gsl/gsl_types.h \ + ../../gsl/gsl_errno.h /usr/include/stdio.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../../gsl/gsl_inline.h ../../gsl/gsl_sort_double.h \ + ../../gsl/gsl_permutation.h ../../gsl/gsl_check_range.h + +/usr/include/stdc-predef.h: + +../../gsl/gsl_rng.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../../gsl/gsl_types.h: + +../../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../../gsl/gsl_inline.h: + +../../gsl/gsl_sort_double.h: + +../../gsl/gsl_permutation.h: + +../../gsl/gsl_check_range.h: diff --git a/gsl-2.5/doc/examples/.deps/specfun.Po b/gsl-2.5/doc/examples/.deps/specfun.Po new file mode 100644 index 00000000..7c7686a1 --- /dev/null +++ b/gsl-2.5/doc/examples/.deps/specfun.Po @@ -0,0 +1,100 @@ +specfun.o: specfun.c /usr/include/stdc-predef.h /usr/include/stdio.h \ + /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../../gsl/gsl_sf_bessel.h \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/byteswap.h \ + /usr/include/bits/byteswap-16.h /usr/include/sys/types.h \ + /usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib-float.h \ + ../../gsl/gsl_mode.h ../../gsl/gsl_inline.h ../../gsl/gsl_precision.h \ + ../../gsl/gsl_types.h ../../gsl/gsl_sf_result.h + +/usr/include/stdc-predef.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../../gsl/gsl_sf_bessel.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../../gsl/gsl_mode.h: + +../../gsl/gsl_inline.h: + +../../gsl/gsl_precision.h: + +../../gsl/gsl_types.h: + +../../gsl/gsl_sf_result.h: diff --git a/gsl-2.5/doc/examples/.deps/specfun_e.Po b/gsl-2.5/doc/examples/.deps/specfun_e.Po new file mode 100644 index 00000000..96fd810a --- /dev/null +++ b/gsl-2.5/doc/examples/.deps/specfun_e.Po @@ -0,0 +1,118 @@ +specfun_e.o: specfun_e.c /usr/include/stdc-predef.h /usr/include/stdio.h \ + /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../../gsl/gsl_errno.h /usr/include/errno.h \ + /usr/include/bits/errno.h /usr/include/linux/errno.h \ + /usr/include/asm/errno.h /usr/include/asm-generic/errno.h \ + /usr/include/asm-generic/errno-base.h ../../gsl/gsl_types.h \ + ../../gsl/gsl_sf_bessel.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../../gsl/gsl_mode.h \ + ../../gsl/gsl_inline.h ../../gsl/gsl_precision.h \ + ../../gsl/gsl_sf_result.h + +/usr/include/stdc-predef.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../../gsl/gsl_types.h: + +../../gsl/gsl_sf_bessel.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../../gsl/gsl_mode.h: + +../../gsl/gsl_inline.h: + +../../gsl/gsl_precision.h: + +../../gsl/gsl_sf_result.h: diff --git a/gsl-2.5/doc/examples/.deps/spmatrix.Po b/gsl-2.5/doc/examples/.deps/spmatrix.Po new file mode 100644 index 00000000..b6326f71 --- /dev/null +++ b/gsl-2.5/doc/examples/.deps/spmatrix.Po @@ -0,0 +1,289 @@ +spmatrix.o: spmatrix.c /usr/include/stdc-predef.h /usr/include/stdio.h \ + /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../../gsl/gsl_spmatrix.h \ + ../../gsl/gsl_math.h /usr/include/math.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../../gsl/gsl_sys.h \ + ../../gsl/gsl_inline.h ../../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../../gsl/gsl_precision.h ../../gsl/gsl_types.h ../../gsl/gsl_nan.h \ + ../../gsl/gsl_pow_int.h ../../gsl/gsl_minmax.h ../../gsl/gsl_vector.h \ + ../../gsl/gsl_vector_complex_long_double.h ../../gsl/gsl_errno.h \ + /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../../gsl/gsl_complex.h ../../gsl/gsl_check_range.h \ + ../../gsl/gsl_vector_long_double.h ../../gsl/gsl_block_long_double.h \ + ../../gsl/gsl_vector_complex.h ../../gsl/gsl_block_complex_long_double.h \ + ../../gsl/gsl_vector_complex_double.h ../../gsl/gsl_vector_double.h \ + ../../gsl/gsl_block_double.h ../../gsl/gsl_block_complex_double.h \ + ../../gsl/gsl_vector_complex_float.h ../../gsl/gsl_vector_float.h \ + ../../gsl/gsl_block_float.h ../../gsl/gsl_block_complex_float.h \ + ../../gsl/gsl_vector_ulong.h ../../gsl/gsl_block_ulong.h \ + ../../gsl/gsl_vector_long.h ../../gsl/gsl_block_long.h \ + ../../gsl/gsl_vector_uint.h ../../gsl/gsl_block_uint.h \ + ../../gsl/gsl_vector_int.h ../../gsl/gsl_block_int.h \ + ../../gsl/gsl_vector_ushort.h ../../gsl/gsl_block_ushort.h \ + ../../gsl/gsl_vector_short.h ../../gsl/gsl_block_short.h \ + ../../gsl/gsl_vector_uchar.h ../../gsl/gsl_block_uchar.h \ + ../../gsl/gsl_vector_char.h ../../gsl/gsl_block_char.h \ + ../../gsl/gsl_matrix.h ../../gsl/gsl_matrix_complex_long_double.h \ + ../../gsl/gsl_matrix_complex_double.h \ + ../../gsl/gsl_matrix_complex_float.h ../../gsl/gsl_matrix_long_double.h \ + ../../gsl/gsl_matrix_double.h ../../gsl/gsl_matrix_float.h \ + ../../gsl/gsl_matrix_ulong.h ../../gsl/gsl_matrix_long.h \ + ../../gsl/gsl_matrix_uint.h ../../gsl/gsl_matrix_int.h \ + ../../gsl/gsl_matrix_ushort.h ../../gsl/gsl_matrix_short.h \ + ../../gsl/gsl_matrix_uchar.h ../../gsl/gsl_matrix_char.h + +/usr/include/stdc-predef.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../../gsl/gsl_spmatrix.h: + +../../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../../gsl/gsl_sys.h: + +../../gsl/gsl_inline.h: + +../../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../../gsl/gsl_precision.h: + +../../gsl/gsl_types.h: + +../../gsl/gsl_nan.h: + +../../gsl/gsl_pow_int.h: + +../../gsl/gsl_minmax.h: + +../../gsl/gsl_vector.h: + +../../gsl/gsl_vector_complex_long_double.h: + +../../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../../gsl/gsl_complex.h: + +../../gsl/gsl_check_range.h: + +../../gsl/gsl_vector_long_double.h: + +../../gsl/gsl_block_long_double.h: + +../../gsl/gsl_vector_complex.h: + +../../gsl/gsl_block_complex_long_double.h: + +../../gsl/gsl_vector_complex_double.h: + +../../gsl/gsl_vector_double.h: + +../../gsl/gsl_block_double.h: + +../../gsl/gsl_block_complex_double.h: + +../../gsl/gsl_vector_complex_float.h: + +../../gsl/gsl_vector_float.h: + +../../gsl/gsl_block_float.h: + +../../gsl/gsl_block_complex_float.h: + +../../gsl/gsl_vector_ulong.h: + +../../gsl/gsl_block_ulong.h: + +../../gsl/gsl_vector_long.h: + +../../gsl/gsl_block_long.h: + +../../gsl/gsl_vector_uint.h: + +../../gsl/gsl_block_uint.h: + +../../gsl/gsl_vector_int.h: + +../../gsl/gsl_block_int.h: + +../../gsl/gsl_vector_ushort.h: + +../../gsl/gsl_block_ushort.h: + +../../gsl/gsl_vector_short.h: + +../../gsl/gsl_block_short.h: + +../../gsl/gsl_vector_uchar.h: + +../../gsl/gsl_block_uchar.h: + +../../gsl/gsl_vector_char.h: + +../../gsl/gsl_block_char.h: + +../../gsl/gsl_matrix.h: + +../../gsl/gsl_matrix_complex_long_double.h: + +../../gsl/gsl_matrix_complex_double.h: + +../../gsl/gsl_matrix_complex_float.h: + +../../gsl/gsl_matrix_long_double.h: + +../../gsl/gsl_matrix_double.h: + +../../gsl/gsl_matrix_float.h: + +../../gsl/gsl_matrix_ulong.h: + +../../gsl/gsl_matrix_long.h: + +../../gsl/gsl_matrix_uint.h: + +../../gsl/gsl_matrix_int.h: + +../../gsl/gsl_matrix_ushort.h: + +../../gsl/gsl_matrix_short.h: + +../../gsl/gsl_matrix_uchar.h: + +../../gsl/gsl_matrix_char.h: diff --git a/gsl-2.5/doc/examples/.deps/stat.Po b/gsl-2.5/doc/examples/.deps/stat.Po new file mode 100644 index 00000000..64fe9958 --- /dev/null +++ b/gsl-2.5/doc/examples/.deps/stat.Po @@ -0,0 +1,116 @@ +stat.o: stat.c /usr/include/stdc-predef.h /usr/include/stdio.h \ + /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../../gsl/gsl_statistics.h \ + ../../gsl/gsl_statistics_long_double.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../../gsl/gsl_statistics_double.h \ + ../../gsl/gsl_statistics_float.h ../../gsl/gsl_statistics_ulong.h \ + ../../gsl/gsl_statistics_long.h ../../gsl/gsl_statistics_uint.h \ + ../../gsl/gsl_statistics_int.h ../../gsl/gsl_statistics_ushort.h \ + ../../gsl/gsl_statistics_short.h ../../gsl/gsl_statistics_uchar.h \ + ../../gsl/gsl_statistics_char.h + +/usr/include/stdc-predef.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../../gsl/gsl_statistics.h: + +../../gsl/gsl_statistics_long_double.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../../gsl/gsl_statistics_double.h: + +../../gsl/gsl_statistics_float.h: + +../../gsl/gsl_statistics_ulong.h: + +../../gsl/gsl_statistics_long.h: + +../../gsl/gsl_statistics_uint.h: + +../../gsl/gsl_statistics_int.h: + +../../gsl/gsl_statistics_ushort.h: + +../../gsl/gsl_statistics_short.h: + +../../gsl/gsl_statistics_uchar.h: + +../../gsl/gsl_statistics_char.h: diff --git a/gsl-2.5/doc/examples/.deps/statsort.Po b/gsl-2.5/doc/examples/.deps/statsort.Po new file mode 100644 index 00000000..81d3cf28 --- /dev/null +++ b/gsl-2.5/doc/examples/.deps/statsort.Po @@ -0,0 +1,173 @@ +statsort.o: statsort.c /usr/include/stdc-predef.h /usr/include/stdio.h \ + /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../../gsl/gsl_sort.h \ + ../../gsl/gsl_sort_long_double.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../../gsl/gsl_errno.h \ + /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../../gsl/gsl_types.h ../../gsl/gsl_permutation.h ../../gsl/gsl_inline.h \ + ../../gsl/gsl_check_range.h ../../gsl/gsl_sort_double.h \ + ../../gsl/gsl_sort_float.h ../../gsl/gsl_sort_ulong.h \ + ../../gsl/gsl_sort_long.h ../../gsl/gsl_sort_uint.h \ + ../../gsl/gsl_sort_int.h ../../gsl/gsl_sort_ushort.h \ + ../../gsl/gsl_sort_short.h ../../gsl/gsl_sort_uchar.h \ + ../../gsl/gsl_sort_char.h ../../gsl/gsl_statistics.h \ + ../../gsl/gsl_statistics_long_double.h ../../gsl/gsl_statistics_double.h \ + ../../gsl/gsl_statistics_float.h ../../gsl/gsl_statistics_ulong.h \ + ../../gsl/gsl_statistics_long.h ../../gsl/gsl_statistics_uint.h \ + ../../gsl/gsl_statistics_int.h ../../gsl/gsl_statistics_ushort.h \ + ../../gsl/gsl_statistics_short.h ../../gsl/gsl_statistics_uchar.h \ + ../../gsl/gsl_statistics_char.h + +/usr/include/stdc-predef.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../../gsl/gsl_sort.h: + +../../gsl/gsl_sort_long_double.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../../gsl/gsl_types.h: + +../../gsl/gsl_permutation.h: + +../../gsl/gsl_inline.h: + +../../gsl/gsl_check_range.h: + +../../gsl/gsl_sort_double.h: + +../../gsl/gsl_sort_float.h: + +../../gsl/gsl_sort_ulong.h: + +../../gsl/gsl_sort_long.h: + +../../gsl/gsl_sort_uint.h: + +../../gsl/gsl_sort_int.h: + +../../gsl/gsl_sort_ushort.h: + +../../gsl/gsl_sort_short.h: + +../../gsl/gsl_sort_uchar.h: + +../../gsl/gsl_sort_char.h: + +../../gsl/gsl_statistics.h: + +../../gsl/gsl_statistics_long_double.h: + +../../gsl/gsl_statistics_double.h: + +../../gsl/gsl_statistics_float.h: + +../../gsl/gsl_statistics_ulong.h: + +../../gsl/gsl_statistics_long.h: + +../../gsl/gsl_statistics_uint.h: + +../../gsl/gsl_statistics_int.h: + +../../gsl/gsl_statistics_ushort.h: + +../../gsl/gsl_statistics_short.h: + +../../gsl/gsl_statistics_uchar.h: + +../../gsl/gsl_statistics_char.h: diff --git a/gsl-2.5/doc/examples/.deps/sum.Po b/gsl-2.5/doc/examples/.deps/sum.Po new file mode 100644 index 00000000..8f337ba8 --- /dev/null +++ b/gsl-2.5/doc/examples/.deps/sum.Po @@ -0,0 +1,153 @@ +sum.o: sum.c /usr/include/stdc-predef.h /usr/include/stdio.h \ + /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../../gsl/gsl_sys.h ../../gsl/gsl_inline.h ../../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../../gsl/gsl_precision.h ../../gsl/gsl_types.h ../../gsl/gsl_nan.h \ + ../../gsl/gsl_pow_int.h ../../gsl/gsl_minmax.h ../../gsl/gsl_sum.h \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/byteswap.h \ + /usr/include/bits/byteswap-16.h /usr/include/sys/types.h \ + /usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib-float.h + +/usr/include/stdc-predef.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../../gsl/gsl_sys.h: + +../../gsl/gsl_inline.h: + +../../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../../gsl/gsl_precision.h: + +../../gsl/gsl_types.h: + +../../gsl/gsl_nan.h: + +../../gsl/gsl_pow_int.h: + +../../gsl/gsl_minmax.h: + +../../gsl/gsl_sum.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: diff --git a/gsl-2.5/doc/examples/.deps/vector.Po b/gsl-2.5/doc/examples/.deps/vector.Po new file mode 100644 index 00000000..c0ff6fdb --- /dev/null +++ b/gsl-2.5/doc/examples/.deps/vector.Po @@ -0,0 +1,188 @@ +vector.o: vector.c /usr/include/stdc-predef.h /usr/include/stdio.h \ + /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../../gsl/gsl_vector.h \ + ../../gsl/gsl_vector_complex_long_double.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../../gsl/gsl_types.h \ + ../../gsl/gsl_errno.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../../gsl/gsl_complex.h ../../gsl/gsl_check_range.h \ + ../../gsl/gsl_vector_long_double.h ../../gsl/gsl_inline.h \ + ../../gsl/gsl_block_long_double.h ../../gsl/gsl_vector_complex.h \ + ../../gsl/gsl_block_complex_long_double.h \ + ../../gsl/gsl_vector_complex_double.h ../../gsl/gsl_vector_double.h \ + ../../gsl/gsl_block_double.h ../../gsl/gsl_block_complex_double.h \ + ../../gsl/gsl_vector_complex_float.h ../../gsl/gsl_vector_float.h \ + ../../gsl/gsl_block_float.h ../../gsl/gsl_block_complex_float.h \ + ../../gsl/gsl_vector_ulong.h ../../gsl/gsl_block_ulong.h \ + ../../gsl/gsl_vector_long.h ../../gsl/gsl_block_long.h \ + ../../gsl/gsl_vector_uint.h ../../gsl/gsl_block_uint.h \ + ../../gsl/gsl_vector_int.h ../../gsl/gsl_block_int.h \ + ../../gsl/gsl_vector_ushort.h ../../gsl/gsl_block_ushort.h \ + ../../gsl/gsl_vector_short.h ../../gsl/gsl_block_short.h \ + ../../gsl/gsl_vector_uchar.h ../../gsl/gsl_block_uchar.h \ + ../../gsl/gsl_vector_char.h ../../gsl/gsl_block_char.h + +/usr/include/stdc-predef.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../../gsl/gsl_vector.h: + +../../gsl/gsl_vector_complex_long_double.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../../gsl/gsl_types.h: + +../../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../../gsl/gsl_complex.h: + +../../gsl/gsl_check_range.h: + +../../gsl/gsl_vector_long_double.h: + +../../gsl/gsl_inline.h: + +../../gsl/gsl_block_long_double.h: + +../../gsl/gsl_vector_complex.h: + +../../gsl/gsl_block_complex_long_double.h: + +../../gsl/gsl_vector_complex_double.h: + +../../gsl/gsl_vector_double.h: + +../../gsl/gsl_block_double.h: + +../../gsl/gsl_block_complex_double.h: + +../../gsl/gsl_vector_complex_float.h: + +../../gsl/gsl_vector_float.h: + +../../gsl/gsl_block_float.h: + +../../gsl/gsl_block_complex_float.h: + +../../gsl/gsl_vector_ulong.h: + +../../gsl/gsl_block_ulong.h: + +../../gsl/gsl_vector_long.h: + +../../gsl/gsl_block_long.h: + +../../gsl/gsl_vector_uint.h: + +../../gsl/gsl_block_uint.h: + +../../gsl/gsl_vector_int.h: + +../../gsl/gsl_block_int.h: + +../../gsl/gsl_vector_ushort.h: + +../../gsl/gsl_block_ushort.h: + +../../gsl/gsl_vector_short.h: + +../../gsl/gsl_block_short.h: + +../../gsl/gsl_vector_uchar.h: + +../../gsl/gsl_block_uchar.h: + +../../gsl/gsl_vector_char.h: + +../../gsl/gsl_block_char.h: diff --git a/gsl-2.5/doc/examples/.deps/vectorr.Po b/gsl-2.5/doc/examples/.deps/vectorr.Po new file mode 100644 index 00000000..19dce2d7 --- /dev/null +++ b/gsl-2.5/doc/examples/.deps/vectorr.Po @@ -0,0 +1,188 @@ +vectorr.o: vectorr.c /usr/include/stdc-predef.h /usr/include/stdio.h \ + /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../../gsl/gsl_vector.h \ + ../../gsl/gsl_vector_complex_long_double.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../../gsl/gsl_types.h \ + ../../gsl/gsl_errno.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../../gsl/gsl_complex.h ../../gsl/gsl_check_range.h \ + ../../gsl/gsl_vector_long_double.h ../../gsl/gsl_inline.h \ + ../../gsl/gsl_block_long_double.h ../../gsl/gsl_vector_complex.h \ + ../../gsl/gsl_block_complex_long_double.h \ + ../../gsl/gsl_vector_complex_double.h ../../gsl/gsl_vector_double.h \ + ../../gsl/gsl_block_double.h ../../gsl/gsl_block_complex_double.h \ + ../../gsl/gsl_vector_complex_float.h ../../gsl/gsl_vector_float.h \ + ../../gsl/gsl_block_float.h ../../gsl/gsl_block_complex_float.h \ + ../../gsl/gsl_vector_ulong.h ../../gsl/gsl_block_ulong.h \ + ../../gsl/gsl_vector_long.h ../../gsl/gsl_block_long.h \ + ../../gsl/gsl_vector_uint.h ../../gsl/gsl_block_uint.h \ + ../../gsl/gsl_vector_int.h ../../gsl/gsl_block_int.h \ + ../../gsl/gsl_vector_ushort.h ../../gsl/gsl_block_ushort.h \ + ../../gsl/gsl_vector_short.h ../../gsl/gsl_block_short.h \ + ../../gsl/gsl_vector_uchar.h ../../gsl/gsl_block_uchar.h \ + ../../gsl/gsl_vector_char.h ../../gsl/gsl_block_char.h + +/usr/include/stdc-predef.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../../gsl/gsl_vector.h: + +../../gsl/gsl_vector_complex_long_double.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../../gsl/gsl_types.h: + +../../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../../gsl/gsl_complex.h: + +../../gsl/gsl_check_range.h: + +../../gsl/gsl_vector_long_double.h: + +../../gsl/gsl_inline.h: + +../../gsl/gsl_block_long_double.h: + +../../gsl/gsl_vector_complex.h: + +../../gsl/gsl_block_complex_long_double.h: + +../../gsl/gsl_vector_complex_double.h: + +../../gsl/gsl_vector_double.h: + +../../gsl/gsl_block_double.h: + +../../gsl/gsl_block_complex_double.h: + +../../gsl/gsl_vector_complex_float.h: + +../../gsl/gsl_vector_float.h: + +../../gsl/gsl_block_float.h: + +../../gsl/gsl_block_complex_float.h: + +../../gsl/gsl_vector_ulong.h: + +../../gsl/gsl_block_ulong.h: + +../../gsl/gsl_vector_long.h: + +../../gsl/gsl_block_long.h: + +../../gsl/gsl_vector_uint.h: + +../../gsl/gsl_block_uint.h: + +../../gsl/gsl_vector_int.h: + +../../gsl/gsl_block_int.h: + +../../gsl/gsl_vector_ushort.h: + +../../gsl/gsl_block_ushort.h: + +../../gsl/gsl_vector_short.h: + +../../gsl/gsl_block_short.h: + +../../gsl/gsl_vector_uchar.h: + +../../gsl/gsl_block_uchar.h: + +../../gsl/gsl_vector_char.h: + +../../gsl/gsl_block_char.h: diff --git a/gsl-2.5/doc/examples/.deps/vectorview.Po b/gsl-2.5/doc/examples/.deps/vectorview.Po new file mode 100644 index 00000000..ad1b701e --- /dev/null +++ b/gsl-2.5/doc/examples/.deps/vectorview.Po @@ -0,0 +1,256 @@ +vectorview.o: vectorview.c /usr/include/stdc-predef.h /usr/include/math.h \ + /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../../gsl/gsl_matrix.h \ + ../../gsl/gsl_matrix_complex_long_double.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../../gsl/gsl_types.h \ + ../../gsl/gsl_errno.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../../gsl/gsl_complex.h ../../gsl/gsl_check_range.h \ + ../../gsl/gsl_vector_complex_long_double.h \ + ../../gsl/gsl_vector_long_double.h ../../gsl/gsl_inline.h \ + ../../gsl/gsl_block_long_double.h ../../gsl/gsl_vector_complex.h \ + ../../gsl/gsl_block_complex_long_double.h \ + ../../gsl/gsl_matrix_complex_double.h \ + ../../gsl/gsl_vector_complex_double.h ../../gsl/gsl_vector_double.h \ + ../../gsl/gsl_block_double.h ../../gsl/gsl_block_complex_double.h \ + ../../gsl/gsl_matrix_complex_float.h \ + ../../gsl/gsl_vector_complex_float.h ../../gsl/gsl_vector_float.h \ + ../../gsl/gsl_block_float.h ../../gsl/gsl_block_complex_float.h \ + ../../gsl/gsl_matrix_long_double.h ../../gsl/gsl_matrix_double.h \ + ../../gsl/gsl_matrix_float.h ../../gsl/gsl_matrix_ulong.h \ + ../../gsl/gsl_vector_ulong.h ../../gsl/gsl_block_ulong.h \ + ../../gsl/gsl_matrix_long.h ../../gsl/gsl_vector_long.h \ + ../../gsl/gsl_block_long.h ../../gsl/gsl_matrix_uint.h \ + ../../gsl/gsl_vector_uint.h ../../gsl/gsl_block_uint.h \ + ../../gsl/gsl_matrix_int.h ../../gsl/gsl_vector_int.h \ + ../../gsl/gsl_block_int.h ../../gsl/gsl_matrix_ushort.h \ + ../../gsl/gsl_vector_ushort.h ../../gsl/gsl_block_ushort.h \ + ../../gsl/gsl_matrix_short.h ../../gsl/gsl_vector_short.h \ + ../../gsl/gsl_block_short.h ../../gsl/gsl_matrix_uchar.h \ + ../../gsl/gsl_vector_uchar.h ../../gsl/gsl_block_uchar.h \ + ../../gsl/gsl_matrix_char.h ../../gsl/gsl_vector_char.h \ + ../../gsl/gsl_block_char.h ../../gsl/gsl_blas.h ../../gsl/gsl_vector.h \ + ../../gsl/gsl_blas_types.h ../../gsl/gsl_cblas.h + +/usr/include/stdc-predef.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +/usr/include/stdio.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../../gsl/gsl_matrix.h: + +../../gsl/gsl_matrix_complex_long_double.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../../gsl/gsl_types.h: + +../../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../../gsl/gsl_complex.h: + +../../gsl/gsl_check_range.h: + +../../gsl/gsl_vector_complex_long_double.h: + +../../gsl/gsl_vector_long_double.h: + +../../gsl/gsl_inline.h: + +../../gsl/gsl_block_long_double.h: + +../../gsl/gsl_vector_complex.h: + +../../gsl/gsl_block_complex_long_double.h: + +../../gsl/gsl_matrix_complex_double.h: + +../../gsl/gsl_vector_complex_double.h: + +../../gsl/gsl_vector_double.h: + +../../gsl/gsl_block_double.h: + +../../gsl/gsl_block_complex_double.h: + +../../gsl/gsl_matrix_complex_float.h: + +../../gsl/gsl_vector_complex_float.h: + +../../gsl/gsl_vector_float.h: + +../../gsl/gsl_block_float.h: + +../../gsl/gsl_block_complex_float.h: + +../../gsl/gsl_matrix_long_double.h: + +../../gsl/gsl_matrix_double.h: + +../../gsl/gsl_matrix_float.h: + +../../gsl/gsl_matrix_ulong.h: + +../../gsl/gsl_vector_ulong.h: + +../../gsl/gsl_block_ulong.h: + +../../gsl/gsl_matrix_long.h: + +../../gsl/gsl_vector_long.h: + +../../gsl/gsl_block_long.h: + +../../gsl/gsl_matrix_uint.h: + +../../gsl/gsl_vector_uint.h: + +../../gsl/gsl_block_uint.h: + +../../gsl/gsl_matrix_int.h: + +../../gsl/gsl_vector_int.h: + +../../gsl/gsl_block_int.h: + +../../gsl/gsl_matrix_ushort.h: + +../../gsl/gsl_vector_ushort.h: + +../../gsl/gsl_block_ushort.h: + +../../gsl/gsl_matrix_short.h: + +../../gsl/gsl_vector_short.h: + +../../gsl/gsl_block_short.h: + +../../gsl/gsl_matrix_uchar.h: + +../../gsl/gsl_vector_uchar.h: + +../../gsl/gsl_block_uchar.h: + +../../gsl/gsl_matrix_char.h: + +../../gsl/gsl_vector_char.h: + +../../gsl/gsl_block_char.h: + +../../gsl/gsl_blas.h: + +../../gsl/gsl_vector.h: + +../../gsl/gsl_blas_types.h: + +../../gsl/gsl_cblas.h: diff --git a/gsl-2.5/doc/examples/.deps/vectorw.Po b/gsl-2.5/doc/examples/.deps/vectorw.Po new file mode 100644 index 00000000..8bf1c1ab --- /dev/null +++ b/gsl-2.5/doc/examples/.deps/vectorw.Po @@ -0,0 +1,188 @@ +vectorw.o: vectorw.c /usr/include/stdc-predef.h /usr/include/stdio.h \ + /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../../gsl/gsl_vector.h \ + ../../gsl/gsl_vector_complex_long_double.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../../gsl/gsl_types.h \ + ../../gsl/gsl_errno.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../../gsl/gsl_complex.h ../../gsl/gsl_check_range.h \ + ../../gsl/gsl_vector_long_double.h ../../gsl/gsl_inline.h \ + ../../gsl/gsl_block_long_double.h ../../gsl/gsl_vector_complex.h \ + ../../gsl/gsl_block_complex_long_double.h \ + ../../gsl/gsl_vector_complex_double.h ../../gsl/gsl_vector_double.h \ + ../../gsl/gsl_block_double.h ../../gsl/gsl_block_complex_double.h \ + ../../gsl/gsl_vector_complex_float.h ../../gsl/gsl_vector_float.h \ + ../../gsl/gsl_block_float.h ../../gsl/gsl_block_complex_float.h \ + ../../gsl/gsl_vector_ulong.h ../../gsl/gsl_block_ulong.h \ + ../../gsl/gsl_vector_long.h ../../gsl/gsl_block_long.h \ + ../../gsl/gsl_vector_uint.h ../../gsl/gsl_block_uint.h \ + ../../gsl/gsl_vector_int.h ../../gsl/gsl_block_int.h \ + ../../gsl/gsl_vector_ushort.h ../../gsl/gsl_block_ushort.h \ + ../../gsl/gsl_vector_short.h ../../gsl/gsl_block_short.h \ + ../../gsl/gsl_vector_uchar.h ../../gsl/gsl_block_uchar.h \ + ../../gsl/gsl_vector_char.h ../../gsl/gsl_block_char.h + +/usr/include/stdc-predef.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../../gsl/gsl_vector.h: + +../../gsl/gsl_vector_complex_long_double.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../../gsl/gsl_types.h: + +../../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../../gsl/gsl_complex.h: + +../../gsl/gsl_check_range.h: + +../../gsl/gsl_vector_long_double.h: + +../../gsl/gsl_inline.h: + +../../gsl/gsl_block_long_double.h: + +../../gsl/gsl_vector_complex.h: + +../../gsl/gsl_block_complex_long_double.h: + +../../gsl/gsl_vector_complex_double.h: + +../../gsl/gsl_vector_double.h: + +../../gsl/gsl_block_double.h: + +../../gsl/gsl_block_complex_double.h: + +../../gsl/gsl_vector_complex_float.h: + +../../gsl/gsl_vector_float.h: + +../../gsl/gsl_block_float.h: + +../../gsl/gsl_block_complex_float.h: + +../../gsl/gsl_vector_ulong.h: + +../../gsl/gsl_block_ulong.h: + +../../gsl/gsl_vector_long.h: + +../../gsl/gsl_block_long.h: + +../../gsl/gsl_vector_uint.h: + +../../gsl/gsl_block_uint.h: + +../../gsl/gsl_vector_int.h: + +../../gsl/gsl_block_int.h: + +../../gsl/gsl_vector_ushort.h: + +../../gsl/gsl_block_ushort.h: + +../../gsl/gsl_vector_short.h: + +../../gsl/gsl_block_short.h: + +../../gsl/gsl_vector_uchar.h: + +../../gsl/gsl_block_uchar.h: + +../../gsl/gsl_vector_char.h: + +../../gsl/gsl_block_char.h: diff --git a/gsl-2.5/doc/examples/.libs/blas b/gsl-2.5/doc/examples/.libs/blas new file mode 100755 index 00000000..ca2fa14d Binary files /dev/null and b/gsl-2.5/doc/examples/.libs/blas differ diff --git a/gsl-2.5/doc/examples/.libs/block b/gsl-2.5/doc/examples/.libs/block new file mode 100755 index 00000000..8b7d312e Binary files /dev/null and b/gsl-2.5/doc/examples/.libs/block differ diff --git a/gsl-2.5/doc/examples/.libs/bspline b/gsl-2.5/doc/examples/.libs/bspline new file mode 100755 index 00000000..4cd738bd Binary files /dev/null and b/gsl-2.5/doc/examples/.libs/bspline differ diff --git a/gsl-2.5/doc/examples/.libs/cblas b/gsl-2.5/doc/examples/.libs/cblas new file mode 100755 index 00000000..32867f2b Binary files /dev/null and b/gsl-2.5/doc/examples/.libs/cblas differ diff --git a/gsl-2.5/doc/examples/.libs/cdf b/gsl-2.5/doc/examples/.libs/cdf new file mode 100755 index 00000000..bf3a7490 Binary files /dev/null and b/gsl-2.5/doc/examples/.libs/cdf differ diff --git a/gsl-2.5/doc/examples/.libs/cheb b/gsl-2.5/doc/examples/.libs/cheb new file mode 100755 index 00000000..ffa0ca8a Binary files /dev/null and b/gsl-2.5/doc/examples/.libs/cheb differ diff --git a/gsl-2.5/doc/examples/.libs/combination b/gsl-2.5/doc/examples/.libs/combination new file mode 100755 index 00000000..b41154fb Binary files /dev/null and b/gsl-2.5/doc/examples/.libs/combination differ diff --git a/gsl-2.5/doc/examples/.libs/const b/gsl-2.5/doc/examples/.libs/const new file mode 100755 index 00000000..6a5f5bf5 Binary files /dev/null and b/gsl-2.5/doc/examples/.libs/const differ diff --git a/gsl-2.5/doc/examples/.libs/diff b/gsl-2.5/doc/examples/.libs/diff new file mode 100755 index 00000000..6639a53a Binary files /dev/null and b/gsl-2.5/doc/examples/.libs/diff differ diff --git a/gsl-2.5/doc/examples/.libs/dwt b/gsl-2.5/doc/examples/.libs/dwt new file mode 100755 index 00000000..f0600b5a Binary files /dev/null and b/gsl-2.5/doc/examples/.libs/dwt differ diff --git a/gsl-2.5/doc/examples/.libs/eigen b/gsl-2.5/doc/examples/.libs/eigen new file mode 100755 index 00000000..012375f7 Binary files /dev/null and b/gsl-2.5/doc/examples/.libs/eigen differ diff --git a/gsl-2.5/doc/examples/.libs/eigen_nonsymm b/gsl-2.5/doc/examples/.libs/eigen_nonsymm new file mode 100755 index 00000000..248b99de Binary files /dev/null and b/gsl-2.5/doc/examples/.libs/eigen_nonsymm differ diff --git a/gsl-2.5/doc/examples/.libs/fft b/gsl-2.5/doc/examples/.libs/fft new file mode 100755 index 00000000..38c3e6e1 Binary files /dev/null and b/gsl-2.5/doc/examples/.libs/fft differ diff --git a/gsl-2.5/doc/examples/.libs/fftmr b/gsl-2.5/doc/examples/.libs/fftmr new file mode 100755 index 00000000..be906cab Binary files /dev/null and b/gsl-2.5/doc/examples/.libs/fftmr differ diff --git a/gsl-2.5/doc/examples/.libs/fftreal b/gsl-2.5/doc/examples/.libs/fftreal new file mode 100755 index 00000000..e80bfb9d Binary files /dev/null and b/gsl-2.5/doc/examples/.libs/fftreal differ diff --git a/gsl-2.5/doc/examples/.libs/filt_edge b/gsl-2.5/doc/examples/.libs/filt_edge new file mode 100755 index 00000000..8af68d22 Binary files /dev/null and b/gsl-2.5/doc/examples/.libs/filt_edge differ diff --git a/gsl-2.5/doc/examples/.libs/fitreg b/gsl-2.5/doc/examples/.libs/fitreg new file mode 100755 index 00000000..8305ec03 Binary files /dev/null and b/gsl-2.5/doc/examples/.libs/fitreg differ diff --git a/gsl-2.5/doc/examples/.libs/fitreg2 b/gsl-2.5/doc/examples/.libs/fitreg2 new file mode 100755 index 00000000..a02d92b1 Binary files /dev/null and b/gsl-2.5/doc/examples/.libs/fitreg2 differ diff --git a/gsl-2.5/doc/examples/.libs/fitting b/gsl-2.5/doc/examples/.libs/fitting new file mode 100755 index 00000000..6a85b505 Binary files /dev/null and b/gsl-2.5/doc/examples/.libs/fitting differ diff --git a/gsl-2.5/doc/examples/.libs/fitting2 b/gsl-2.5/doc/examples/.libs/fitting2 new file mode 100755 index 00000000..efbcb0fc Binary files /dev/null and b/gsl-2.5/doc/examples/.libs/fitting2 differ diff --git a/gsl-2.5/doc/examples/.libs/fitting3 b/gsl-2.5/doc/examples/.libs/fitting3 new file mode 100755 index 00000000..37670e3a Binary files /dev/null and b/gsl-2.5/doc/examples/.libs/fitting3 differ diff --git a/gsl-2.5/doc/examples/.libs/gaussfilt b/gsl-2.5/doc/examples/.libs/gaussfilt new file mode 100755 index 00000000..d09452c1 Binary files /dev/null and b/gsl-2.5/doc/examples/.libs/gaussfilt differ diff --git a/gsl-2.5/doc/examples/.libs/gaussfilt2 b/gsl-2.5/doc/examples/.libs/gaussfilt2 new file mode 100755 index 00000000..7549fcff Binary files /dev/null and b/gsl-2.5/doc/examples/.libs/gaussfilt2 differ diff --git a/gsl-2.5/doc/examples/.libs/histogram b/gsl-2.5/doc/examples/.libs/histogram new file mode 100755 index 00000000..ed66d439 Binary files /dev/null and b/gsl-2.5/doc/examples/.libs/histogram differ diff --git a/gsl-2.5/doc/examples/.libs/histogram2d b/gsl-2.5/doc/examples/.libs/histogram2d new file mode 100755 index 00000000..9ef2edd2 Binary files /dev/null and b/gsl-2.5/doc/examples/.libs/histogram2d differ diff --git a/gsl-2.5/doc/examples/.libs/ieee b/gsl-2.5/doc/examples/.libs/ieee new file mode 100755 index 00000000..6485967d Binary files /dev/null and b/gsl-2.5/doc/examples/.libs/ieee differ diff --git a/gsl-2.5/doc/examples/.libs/ieeeround b/gsl-2.5/doc/examples/.libs/ieeeround new file mode 100755 index 00000000..f1a7c462 Binary files /dev/null and b/gsl-2.5/doc/examples/.libs/ieeeround differ diff --git a/gsl-2.5/doc/examples/.libs/impulse b/gsl-2.5/doc/examples/.libs/impulse new file mode 100755 index 00000000..970ca040 Binary files /dev/null and b/gsl-2.5/doc/examples/.libs/impulse differ diff --git a/gsl-2.5/doc/examples/.libs/integration b/gsl-2.5/doc/examples/.libs/integration new file mode 100755 index 00000000..202b32ff Binary files /dev/null and b/gsl-2.5/doc/examples/.libs/integration differ diff --git a/gsl-2.5/doc/examples/.libs/integration2 b/gsl-2.5/doc/examples/.libs/integration2 new file mode 100755 index 00000000..888b1978 Binary files /dev/null and b/gsl-2.5/doc/examples/.libs/integration2 differ diff --git a/gsl-2.5/doc/examples/.libs/interp b/gsl-2.5/doc/examples/.libs/interp new file mode 100755 index 00000000..8d20ca9e Binary files /dev/null and b/gsl-2.5/doc/examples/.libs/interp differ diff --git a/gsl-2.5/doc/examples/.libs/interp2d b/gsl-2.5/doc/examples/.libs/interp2d new file mode 100755 index 00000000..19f219d4 Binary files /dev/null and b/gsl-2.5/doc/examples/.libs/interp2d differ diff --git a/gsl-2.5/doc/examples/.libs/interp_compare b/gsl-2.5/doc/examples/.libs/interp_compare new file mode 100755 index 00000000..5bdeb0fb Binary files /dev/null and b/gsl-2.5/doc/examples/.libs/interp_compare differ diff --git a/gsl-2.5/doc/examples/.libs/interpp b/gsl-2.5/doc/examples/.libs/interpp new file mode 100755 index 00000000..20d94a56 Binary files /dev/null and b/gsl-2.5/doc/examples/.libs/interpp differ diff --git a/gsl-2.5/doc/examples/.libs/intro b/gsl-2.5/doc/examples/.libs/intro new file mode 100755 index 00000000..5dd13c94 Binary files /dev/null and b/gsl-2.5/doc/examples/.libs/intro differ diff --git a/gsl-2.5/doc/examples/.libs/largefit b/gsl-2.5/doc/examples/.libs/largefit new file mode 100755 index 00000000..10759b75 Binary files /dev/null and b/gsl-2.5/doc/examples/.libs/largefit differ diff --git a/gsl-2.5/doc/examples/.libs/linalglu b/gsl-2.5/doc/examples/.libs/linalglu new file mode 100755 index 00000000..90fc3c56 Binary files /dev/null and b/gsl-2.5/doc/examples/.libs/linalglu differ diff --git a/gsl-2.5/doc/examples/.libs/matrix b/gsl-2.5/doc/examples/.libs/matrix new file mode 100755 index 00000000..315161ea Binary files /dev/null and b/gsl-2.5/doc/examples/.libs/matrix differ diff --git a/gsl-2.5/doc/examples/.libs/matrixw b/gsl-2.5/doc/examples/.libs/matrixw new file mode 100755 index 00000000..63eeee6d Binary files /dev/null and b/gsl-2.5/doc/examples/.libs/matrixw differ diff --git a/gsl-2.5/doc/examples/.libs/min b/gsl-2.5/doc/examples/.libs/min new file mode 100755 index 00000000..406925e4 Binary files /dev/null and b/gsl-2.5/doc/examples/.libs/min differ diff --git a/gsl-2.5/doc/examples/.libs/monte b/gsl-2.5/doc/examples/.libs/monte new file mode 100755 index 00000000..96df0a36 Binary files /dev/null and b/gsl-2.5/doc/examples/.libs/monte differ diff --git a/gsl-2.5/doc/examples/.libs/movstat1 b/gsl-2.5/doc/examples/.libs/movstat1 new file mode 100755 index 00000000..dad7f44a Binary files /dev/null and b/gsl-2.5/doc/examples/.libs/movstat1 differ diff --git a/gsl-2.5/doc/examples/.libs/movstat2 b/gsl-2.5/doc/examples/.libs/movstat2 new file mode 100755 index 00000000..299a689a Binary files /dev/null and b/gsl-2.5/doc/examples/.libs/movstat2 differ diff --git a/gsl-2.5/doc/examples/.libs/movstat3 b/gsl-2.5/doc/examples/.libs/movstat3 new file mode 100755 index 00000000..88356cda Binary files /dev/null and b/gsl-2.5/doc/examples/.libs/movstat3 differ diff --git a/gsl-2.5/doc/examples/.libs/multiset b/gsl-2.5/doc/examples/.libs/multiset new file mode 100755 index 00000000..69982fd5 Binary files /dev/null and b/gsl-2.5/doc/examples/.libs/multiset differ diff --git a/gsl-2.5/doc/examples/.libs/nlfit b/gsl-2.5/doc/examples/.libs/nlfit new file mode 100755 index 00000000..238364da Binary files /dev/null and b/gsl-2.5/doc/examples/.libs/nlfit differ diff --git a/gsl-2.5/doc/examples/.libs/nlfit2 b/gsl-2.5/doc/examples/.libs/nlfit2 new file mode 100755 index 00000000..a2116292 Binary files /dev/null and b/gsl-2.5/doc/examples/.libs/nlfit2 differ diff --git a/gsl-2.5/doc/examples/.libs/nlfit2b b/gsl-2.5/doc/examples/.libs/nlfit2b new file mode 100755 index 00000000..ccbe5766 Binary files /dev/null and b/gsl-2.5/doc/examples/.libs/nlfit2b differ diff --git a/gsl-2.5/doc/examples/.libs/nlfit3 b/gsl-2.5/doc/examples/.libs/nlfit3 new file mode 100755 index 00000000..9b270071 Binary files /dev/null and b/gsl-2.5/doc/examples/.libs/nlfit3 differ diff --git a/gsl-2.5/doc/examples/.libs/nlfit4 b/gsl-2.5/doc/examples/.libs/nlfit4 new file mode 100755 index 00000000..58e932f0 Binary files /dev/null and b/gsl-2.5/doc/examples/.libs/nlfit4 differ diff --git a/gsl-2.5/doc/examples/.libs/ntupler b/gsl-2.5/doc/examples/.libs/ntupler new file mode 100755 index 00000000..f83e45e8 Binary files /dev/null and b/gsl-2.5/doc/examples/.libs/ntupler differ diff --git a/gsl-2.5/doc/examples/.libs/ntuplew b/gsl-2.5/doc/examples/.libs/ntuplew new file mode 100755 index 00000000..0e1d5b5a Binary files /dev/null and b/gsl-2.5/doc/examples/.libs/ntuplew differ diff --git a/gsl-2.5/doc/examples/.libs/ode-initval b/gsl-2.5/doc/examples/.libs/ode-initval new file mode 100755 index 00000000..01a92566 Binary files /dev/null and b/gsl-2.5/doc/examples/.libs/ode-initval differ diff --git a/gsl-2.5/doc/examples/.libs/permseq b/gsl-2.5/doc/examples/.libs/permseq new file mode 100755 index 00000000..701a28d8 Binary files /dev/null and b/gsl-2.5/doc/examples/.libs/permseq differ diff --git a/gsl-2.5/doc/examples/.libs/permshuffle b/gsl-2.5/doc/examples/.libs/permshuffle new file mode 100755 index 00000000..7a44e901 Binary files /dev/null and b/gsl-2.5/doc/examples/.libs/permshuffle differ diff --git a/gsl-2.5/doc/examples/.libs/poisson b/gsl-2.5/doc/examples/.libs/poisson new file mode 100755 index 00000000..1e8ee024 Binary files /dev/null and b/gsl-2.5/doc/examples/.libs/poisson differ diff --git a/gsl-2.5/doc/examples/.libs/polyroots b/gsl-2.5/doc/examples/.libs/polyroots new file mode 100755 index 00000000..2f632b3c Binary files /dev/null and b/gsl-2.5/doc/examples/.libs/polyroots differ diff --git a/gsl-2.5/doc/examples/.libs/qrng b/gsl-2.5/doc/examples/.libs/qrng new file mode 100755 index 00000000..50651622 Binary files /dev/null and b/gsl-2.5/doc/examples/.libs/qrng differ diff --git a/gsl-2.5/doc/examples/.libs/randpoisson b/gsl-2.5/doc/examples/.libs/randpoisson new file mode 100755 index 00000000..741e5da9 Binary files /dev/null and b/gsl-2.5/doc/examples/.libs/randpoisson differ diff --git a/gsl-2.5/doc/examples/.libs/randwalk b/gsl-2.5/doc/examples/.libs/randwalk new file mode 100755 index 00000000..bb2cc576 Binary files /dev/null and b/gsl-2.5/doc/examples/.libs/randwalk differ diff --git a/gsl-2.5/doc/examples/.libs/rng b/gsl-2.5/doc/examples/.libs/rng new file mode 100755 index 00000000..736593b7 Binary files /dev/null and b/gsl-2.5/doc/examples/.libs/rng differ diff --git a/gsl-2.5/doc/examples/.libs/rngunif b/gsl-2.5/doc/examples/.libs/rngunif new file mode 100755 index 00000000..bf45cbfd Binary files /dev/null and b/gsl-2.5/doc/examples/.libs/rngunif differ diff --git a/gsl-2.5/doc/examples/.libs/robfit b/gsl-2.5/doc/examples/.libs/robfit new file mode 100755 index 00000000..cf8c7c3a Binary files /dev/null and b/gsl-2.5/doc/examples/.libs/robfit differ diff --git a/gsl-2.5/doc/examples/.libs/rootnewt b/gsl-2.5/doc/examples/.libs/rootnewt new file mode 100755 index 00000000..1474d4c7 Binary files /dev/null and b/gsl-2.5/doc/examples/.libs/rootnewt differ diff --git a/gsl-2.5/doc/examples/.libs/roots b/gsl-2.5/doc/examples/.libs/roots new file mode 100755 index 00000000..6d3d30b8 Binary files /dev/null and b/gsl-2.5/doc/examples/.libs/roots differ diff --git a/gsl-2.5/doc/examples/.libs/rquantile b/gsl-2.5/doc/examples/.libs/rquantile new file mode 100755 index 00000000..27e0be49 Binary files /dev/null and b/gsl-2.5/doc/examples/.libs/rquantile differ diff --git a/gsl-2.5/doc/examples/.libs/rstat b/gsl-2.5/doc/examples/.libs/rstat new file mode 100755 index 00000000..7a828c1d Binary files /dev/null and b/gsl-2.5/doc/examples/.libs/rstat differ diff --git a/gsl-2.5/doc/examples/.libs/siman b/gsl-2.5/doc/examples/.libs/siman new file mode 100755 index 00000000..1f6a1c23 Binary files /dev/null and b/gsl-2.5/doc/examples/.libs/siman differ diff --git a/gsl-2.5/doc/examples/.libs/siman_tsp b/gsl-2.5/doc/examples/.libs/siman_tsp new file mode 100755 index 00000000..3d8dafa6 Binary files /dev/null and b/gsl-2.5/doc/examples/.libs/siman_tsp differ diff --git a/gsl-2.5/doc/examples/.libs/sortsmall b/gsl-2.5/doc/examples/.libs/sortsmall new file mode 100755 index 00000000..8bbc89b7 Binary files /dev/null and b/gsl-2.5/doc/examples/.libs/sortsmall differ diff --git a/gsl-2.5/doc/examples/.libs/specfun b/gsl-2.5/doc/examples/.libs/specfun new file mode 100755 index 00000000..f6b37a04 Binary files /dev/null and b/gsl-2.5/doc/examples/.libs/specfun differ diff --git a/gsl-2.5/doc/examples/.libs/specfun_e b/gsl-2.5/doc/examples/.libs/specfun_e new file mode 100755 index 00000000..ce4dc070 Binary files /dev/null and b/gsl-2.5/doc/examples/.libs/specfun_e differ diff --git a/gsl-2.5/doc/examples/.libs/spmatrix b/gsl-2.5/doc/examples/.libs/spmatrix new file mode 100755 index 00000000..0229aa9d Binary files /dev/null and b/gsl-2.5/doc/examples/.libs/spmatrix differ diff --git a/gsl-2.5/doc/examples/.libs/stat b/gsl-2.5/doc/examples/.libs/stat new file mode 100755 index 00000000..ca15fc7c Binary files /dev/null and b/gsl-2.5/doc/examples/.libs/stat differ diff --git a/gsl-2.5/doc/examples/.libs/statsort b/gsl-2.5/doc/examples/.libs/statsort new file mode 100755 index 00000000..a17d67c3 Binary files /dev/null and b/gsl-2.5/doc/examples/.libs/statsort differ diff --git a/gsl-2.5/doc/examples/.libs/sum b/gsl-2.5/doc/examples/.libs/sum new file mode 100755 index 00000000..d7312afa Binary files /dev/null and b/gsl-2.5/doc/examples/.libs/sum differ diff --git a/gsl-2.5/doc/examples/.libs/vector b/gsl-2.5/doc/examples/.libs/vector new file mode 100755 index 00000000..703ae585 Binary files /dev/null and b/gsl-2.5/doc/examples/.libs/vector differ diff --git a/gsl-2.5/doc/examples/.libs/vectorr b/gsl-2.5/doc/examples/.libs/vectorr new file mode 100755 index 00000000..d9a4abf0 Binary files /dev/null and b/gsl-2.5/doc/examples/.libs/vectorr differ diff --git a/gsl-2.5/doc/examples/.libs/vectorview b/gsl-2.5/doc/examples/.libs/vectorview new file mode 100755 index 00000000..42891a7b Binary files /dev/null and b/gsl-2.5/doc/examples/.libs/vectorview differ diff --git a/gsl-2.5/doc/examples/.libs/vectorw b/gsl-2.5/doc/examples/.libs/vectorw new file mode 100755 index 00000000..1bd90e1c Binary files /dev/null and b/gsl-2.5/doc/examples/.libs/vectorw differ diff --git a/gsl-2.5/doc/examples/Makefile b/gsl-2.5/doc/examples/Makefile new file mode 100644 index 00000000..076eab18 --- /dev/null +++ b/gsl-2.5/doc/examples/Makefile @@ -0,0 +1,1368 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# doc/examples/Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + + + +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/gsl +pkgincludedir = $(includedir)/gsl +pkglibdir = $(libdir)/gsl +pkglibexecdir = $(libexecdir)/gsl +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = x86_64-unknown-linux-gnu +host_triplet = x86_64-unknown-linux-gnu +check_PROGRAMS = blas$(EXEEXT) block$(EXEEXT) cblas$(EXEEXT) \ + cdf$(EXEEXT) cheb$(EXEEXT) combination$(EXEEXT) \ + multiset$(EXEEXT) const$(EXEEXT) diff$(EXEEXT) eigen$(EXEEXT) \ + fft$(EXEEXT) fftmr$(EXEEXT) fftreal$(EXEEXT) \ + filt_edge$(EXEEXT) fitting$(EXEEXT) fitting2$(EXEEXT) \ + fitting3$(EXEEXT) fitreg$(EXEEXT) fitreg2$(EXEEXT) \ + gaussfilt$(EXEEXT) gaussfilt2$(EXEEXT) histogram$(EXEEXT) \ + histogram2d$(EXEEXT) ieee$(EXEEXT) ieeeround$(EXEEXT) \ + impulse$(EXEEXT) integration$(EXEEXT) integration2$(EXEEXT) \ + interp$(EXEEXT) interp2d$(EXEEXT) intro$(EXEEXT) \ + linalglu$(EXEEXT) largefit$(EXEEXT) matrix$(EXEEXT) \ + matrixw$(EXEEXT) min$(EXEEXT) monte$(EXEEXT) movstat1$(EXEEXT) \ + movstat2$(EXEEXT) movstat3$(EXEEXT) ntupler$(EXEEXT) \ + ntuplew$(EXEEXT) ode-initval$(EXEEXT) permseq$(EXEEXT) \ + permshuffle$(EXEEXT) polyroots$(EXEEXT) qrng$(EXEEXT) \ + randpoisson$(EXEEXT) randwalk$(EXEEXT) rng$(EXEEXT) \ + rngunif$(EXEEXT) robfit$(EXEEXT) rootnewt$(EXEEXT) \ + roots$(EXEEXT) siman$(EXEEXT) siman_tsp$(EXEEXT) \ + sortsmall$(EXEEXT) specfun$(EXEEXT) specfun_e$(EXEEXT) \ + rstat$(EXEEXT) rquantile$(EXEEXT) stat$(EXEEXT) \ + statsort$(EXEEXT) sum$(EXEEXT) vector$(EXEEXT) \ + vectorr$(EXEEXT) vectorview$(EXEEXT) vectorw$(EXEEXT) \ + dwt$(EXEEXT) nlfit$(EXEEXT) nlfit2$(EXEEXT) nlfit2b$(EXEEXT) \ + nlfit3$(EXEEXT) nlfit4$(EXEEXT) interpp$(EXEEXT) \ + eigen_nonsymm$(EXEEXT) bspline$(EXEEXT) poisson$(EXEEXT) \ + interp_compare$(EXEEXT) spmatrix$(EXEEXT) +subdir = doc/examples +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp \ + $(dist_noinst_DATA) +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +blas_SOURCES = blas.c +blas_OBJECTS = blas.$(OBJEXT) +blas_LDADD = $(LDADD) +blas_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +AM_V_lt = $(am__v_lt_$(V)) +am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) +am__v_lt_0 = --silent +am__v_lt_1 = +block_SOURCES = block.c +block_OBJECTS = block.$(OBJEXT) +block_LDADD = $(LDADD) +block_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +bspline_SOURCES = bspline.c +bspline_OBJECTS = bspline.$(OBJEXT) +bspline_LDADD = $(LDADD) +bspline_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +cblas_SOURCES = cblas.c +cblas_OBJECTS = cblas.$(OBJEXT) +cblas_LDADD = $(LDADD) +cblas_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +cdf_SOURCES = cdf.c +cdf_OBJECTS = cdf.$(OBJEXT) +cdf_LDADD = $(LDADD) +cdf_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +cheb_SOURCES = cheb.c +cheb_OBJECTS = cheb.$(OBJEXT) +cheb_LDADD = $(LDADD) +cheb_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +combination_SOURCES = combination.c +combination_OBJECTS = combination.$(OBJEXT) +combination_LDADD = $(LDADD) +combination_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +const_SOURCES = const.c +const_OBJECTS = const.$(OBJEXT) +const_LDADD = $(LDADD) +const_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +diff_SOURCES = diff.c +diff_OBJECTS = diff.$(OBJEXT) +diff_LDADD = $(LDADD) +diff_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +dwt_SOURCES = dwt.c +dwt_OBJECTS = dwt.$(OBJEXT) +dwt_LDADD = $(LDADD) +dwt_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +eigen_SOURCES = eigen.c +eigen_OBJECTS = eigen.$(OBJEXT) +eigen_LDADD = $(LDADD) +eigen_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +eigen_nonsymm_SOURCES = eigen_nonsymm.c +eigen_nonsymm_OBJECTS = eigen_nonsymm.$(OBJEXT) +eigen_nonsymm_LDADD = $(LDADD) +eigen_nonsymm_DEPENDENCIES = ../../libgsl.la \ + ../../cblas/libgslcblas.la +fft_SOURCES = fft.c +fft_OBJECTS = fft.$(OBJEXT) +fft_LDADD = $(LDADD) +fft_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +fftmr_SOURCES = fftmr.c +fftmr_OBJECTS = fftmr.$(OBJEXT) +fftmr_LDADD = $(LDADD) +fftmr_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +fftreal_SOURCES = fftreal.c +fftreal_OBJECTS = fftreal.$(OBJEXT) +fftreal_LDADD = $(LDADD) +fftreal_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +filt_edge_SOURCES = filt_edge.c +filt_edge_OBJECTS = filt_edge.$(OBJEXT) +filt_edge_LDADD = $(LDADD) +filt_edge_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +fitreg_SOURCES = fitreg.c +fitreg_OBJECTS = fitreg.$(OBJEXT) +fitreg_LDADD = $(LDADD) +fitreg_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +fitreg2_SOURCES = fitreg2.c +fitreg2_OBJECTS = fitreg2.$(OBJEXT) +fitreg2_LDADD = $(LDADD) +fitreg2_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +fitting_SOURCES = fitting.c +fitting_OBJECTS = fitting.$(OBJEXT) +fitting_LDADD = $(LDADD) +fitting_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +fitting2_SOURCES = fitting2.c +fitting2_OBJECTS = fitting2.$(OBJEXT) +fitting2_LDADD = $(LDADD) +fitting2_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +fitting3_SOURCES = fitting3.c +fitting3_OBJECTS = fitting3.$(OBJEXT) +fitting3_LDADD = $(LDADD) +fitting3_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +gaussfilt_SOURCES = gaussfilt.c +gaussfilt_OBJECTS = gaussfilt.$(OBJEXT) +gaussfilt_LDADD = $(LDADD) +gaussfilt_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +gaussfilt2_SOURCES = gaussfilt2.c +gaussfilt2_OBJECTS = gaussfilt2.$(OBJEXT) +gaussfilt2_LDADD = $(LDADD) +gaussfilt2_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +histogram_SOURCES = histogram.c +histogram_OBJECTS = histogram.$(OBJEXT) +histogram_LDADD = $(LDADD) +histogram_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +histogram2d_SOURCES = histogram2d.c +histogram2d_OBJECTS = histogram2d.$(OBJEXT) +histogram2d_LDADD = $(LDADD) +histogram2d_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +ieee_SOURCES = ieee.c +ieee_OBJECTS = ieee.$(OBJEXT) +ieee_LDADD = $(LDADD) +ieee_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +ieeeround_SOURCES = ieeeround.c +ieeeround_OBJECTS = ieeeround.$(OBJEXT) +ieeeround_LDADD = $(LDADD) +ieeeround_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +impulse_SOURCES = impulse.c +impulse_OBJECTS = impulse.$(OBJEXT) +impulse_LDADD = $(LDADD) +impulse_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +integration_SOURCES = integration.c +integration_OBJECTS = integration.$(OBJEXT) +integration_LDADD = $(LDADD) +integration_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +integration2_SOURCES = integration2.c +integration2_OBJECTS = integration2.$(OBJEXT) +integration2_LDADD = $(LDADD) +integration2_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +interp_SOURCES = interp.c +interp_OBJECTS = interp.$(OBJEXT) +interp_LDADD = $(LDADD) +interp_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +interp2d_SOURCES = interp2d.c +interp2d_OBJECTS = interp2d.$(OBJEXT) +interp2d_LDADD = $(LDADD) +interp2d_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +interp_compare_SOURCES = interp_compare.c +interp_compare_OBJECTS = interp_compare.$(OBJEXT) +interp_compare_LDADD = $(LDADD) +interp_compare_DEPENDENCIES = ../../libgsl.la \ + ../../cblas/libgslcblas.la +interpp_SOURCES = interpp.c +interpp_OBJECTS = interpp.$(OBJEXT) +interpp_LDADD = $(LDADD) +interpp_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +intro_SOURCES = intro.c +intro_OBJECTS = intro.$(OBJEXT) +intro_LDADD = $(LDADD) +intro_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +largefit_SOURCES = largefit.c +largefit_OBJECTS = largefit.$(OBJEXT) +largefit_LDADD = $(LDADD) +largefit_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +linalglu_SOURCES = linalglu.c +linalglu_OBJECTS = linalglu.$(OBJEXT) +linalglu_LDADD = $(LDADD) +linalglu_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +matrix_SOURCES = matrix.c +matrix_OBJECTS = matrix.$(OBJEXT) +matrix_LDADD = $(LDADD) +matrix_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +matrixw_SOURCES = matrixw.c +matrixw_OBJECTS = matrixw.$(OBJEXT) +matrixw_LDADD = $(LDADD) +matrixw_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +min_SOURCES = min.c +min_OBJECTS = min.$(OBJEXT) +min_LDADD = $(LDADD) +min_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +monte_SOURCES = monte.c +monte_OBJECTS = monte.$(OBJEXT) +monte_LDADD = $(LDADD) +monte_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +movstat1_SOURCES = movstat1.c +movstat1_OBJECTS = movstat1.$(OBJEXT) +movstat1_LDADD = $(LDADD) +movstat1_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +movstat2_SOURCES = movstat2.c +movstat2_OBJECTS = movstat2.$(OBJEXT) +movstat2_LDADD = $(LDADD) +movstat2_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +movstat3_SOURCES = movstat3.c +movstat3_OBJECTS = movstat3.$(OBJEXT) +movstat3_LDADD = $(LDADD) +movstat3_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +multiset_SOURCES = multiset.c +multiset_OBJECTS = multiset.$(OBJEXT) +multiset_LDADD = $(LDADD) +multiset_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +nlfit_SOURCES = nlfit.c +nlfit_OBJECTS = nlfit.$(OBJEXT) +nlfit_LDADD = $(LDADD) +nlfit_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +nlfit2_SOURCES = nlfit2.c +nlfit2_OBJECTS = nlfit2.$(OBJEXT) +nlfit2_LDADD = $(LDADD) +nlfit2_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +nlfit2b_SOURCES = nlfit2b.c +nlfit2b_OBJECTS = nlfit2b.$(OBJEXT) +nlfit2b_LDADD = $(LDADD) +nlfit2b_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +nlfit3_SOURCES = nlfit3.c +nlfit3_OBJECTS = nlfit3.$(OBJEXT) +nlfit3_LDADD = $(LDADD) +nlfit3_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +nlfit4_SOURCES = nlfit4.c +nlfit4_OBJECTS = nlfit4.$(OBJEXT) +nlfit4_LDADD = $(LDADD) +nlfit4_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +ntupler_SOURCES = ntupler.c +ntupler_OBJECTS = ntupler.$(OBJEXT) +ntupler_LDADD = $(LDADD) +ntupler_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +ntuplew_SOURCES = ntuplew.c +ntuplew_OBJECTS = ntuplew.$(OBJEXT) +ntuplew_LDADD = $(LDADD) +ntuplew_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +ode_initval_SOURCES = ode-initval.c +ode_initval_OBJECTS = ode-initval.$(OBJEXT) +ode_initval_LDADD = $(LDADD) +ode_initval_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +permseq_SOURCES = permseq.c +permseq_OBJECTS = permseq.$(OBJEXT) +permseq_LDADD = $(LDADD) +permseq_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +permshuffle_SOURCES = permshuffle.c +permshuffle_OBJECTS = permshuffle.$(OBJEXT) +permshuffle_LDADD = $(LDADD) +permshuffle_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +poisson_SOURCES = poisson.c +poisson_OBJECTS = poisson.$(OBJEXT) +poisson_LDADD = $(LDADD) +poisson_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +polyroots_SOURCES = polyroots.c +polyroots_OBJECTS = polyroots.$(OBJEXT) +polyroots_LDADD = $(LDADD) +polyroots_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +qrng_SOURCES = qrng.c +qrng_OBJECTS = qrng.$(OBJEXT) +qrng_LDADD = $(LDADD) +qrng_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +randpoisson_SOURCES = randpoisson.c +randpoisson_OBJECTS = randpoisson.$(OBJEXT) +randpoisson_LDADD = $(LDADD) +randpoisson_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +randwalk_SOURCES = randwalk.c +randwalk_OBJECTS = randwalk.$(OBJEXT) +randwalk_LDADD = $(LDADD) +randwalk_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +rng_SOURCES = rng.c +rng_OBJECTS = rng.$(OBJEXT) +rng_LDADD = $(LDADD) +rng_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +rngunif_SOURCES = rngunif.c +rngunif_OBJECTS = rngunif.$(OBJEXT) +rngunif_LDADD = $(LDADD) +rngunif_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +robfit_SOURCES = robfit.c +robfit_OBJECTS = robfit.$(OBJEXT) +robfit_LDADD = $(LDADD) +robfit_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +rootnewt_SOURCES = rootnewt.c +rootnewt_OBJECTS = rootnewt.$(OBJEXT) +rootnewt_LDADD = $(LDADD) +rootnewt_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +roots_SOURCES = roots.c +roots_OBJECTS = roots.$(OBJEXT) +roots_LDADD = $(LDADD) +roots_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +rquantile_SOURCES = rquantile.c +rquantile_OBJECTS = rquantile.$(OBJEXT) +rquantile_LDADD = $(LDADD) +rquantile_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +rstat_SOURCES = rstat.c +rstat_OBJECTS = rstat.$(OBJEXT) +rstat_LDADD = $(LDADD) +rstat_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +siman_SOURCES = siman.c +siman_OBJECTS = siman.$(OBJEXT) +siman_LDADD = $(LDADD) +siman_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +siman_tsp_SOURCES = siman_tsp.c +siman_tsp_OBJECTS = siman_tsp.$(OBJEXT) +siman_tsp_LDADD = $(LDADD) +siman_tsp_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +sortsmall_SOURCES = sortsmall.c +sortsmall_OBJECTS = sortsmall.$(OBJEXT) +sortsmall_LDADD = $(LDADD) +sortsmall_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +specfun_SOURCES = specfun.c +specfun_OBJECTS = specfun.$(OBJEXT) +specfun_LDADD = $(LDADD) +specfun_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +specfun_e_SOURCES = specfun_e.c +specfun_e_OBJECTS = specfun_e.$(OBJEXT) +specfun_e_LDADD = $(LDADD) +specfun_e_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +spmatrix_SOURCES = spmatrix.c +spmatrix_OBJECTS = spmatrix.$(OBJEXT) +spmatrix_LDADD = $(LDADD) +spmatrix_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +stat_SOURCES = stat.c +stat_OBJECTS = stat.$(OBJEXT) +stat_LDADD = $(LDADD) +stat_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +statsort_SOURCES = statsort.c +statsort_OBJECTS = statsort.$(OBJEXT) +statsort_LDADD = $(LDADD) +statsort_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +sum_SOURCES = sum.c +sum_OBJECTS = sum.$(OBJEXT) +sum_LDADD = $(LDADD) +sum_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +vector_SOURCES = vector.c +vector_OBJECTS = vector.$(OBJEXT) +vector_LDADD = $(LDADD) +vector_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +vectorr_SOURCES = vectorr.c +vectorr_OBJECTS = vectorr.$(OBJEXT) +vectorr_LDADD = $(LDADD) +vectorr_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +vectorview_SOURCES = vectorview.c +vectorview_OBJECTS = vectorview.$(OBJEXT) +vectorview_LDADD = $(LDADD) +vectorview_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +vectorw_SOURCES = vectorw.c +vectorw_OBJECTS = vectorw.$(OBJEXT) +vectorw_LDADD = $(LDADD) +vectorw_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +AM_V_P = $(am__v_P_$(V)) +am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY)) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_$(V)) +am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_$(V)) +am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I. -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_$(V)) +am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_$(V)) +am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = blas.c block.c bspline.c cblas.c cdf.c cheb.c combination.c \ + const.c diff.c dwt.c eigen.c eigen_nonsymm.c fft.c fftmr.c \ + fftreal.c filt_edge.c fitreg.c fitreg2.c fitting.c fitting2.c \ + fitting3.c gaussfilt.c gaussfilt2.c histogram.c histogram2d.c \ + ieee.c ieeeround.c impulse.c integration.c integration2.c \ + interp.c interp2d.c interp_compare.c interpp.c intro.c \ + largefit.c linalglu.c matrix.c matrixw.c min.c monte.c \ + movstat1.c movstat2.c movstat3.c multiset.c nlfit.c nlfit2.c \ + nlfit2b.c nlfit3.c nlfit4.c ntupler.c ntuplew.c ode-initval.c \ + permseq.c permshuffle.c poisson.c polyroots.c qrng.c \ + randpoisson.c randwalk.c rng.c rngunif.c robfit.c rootnewt.c \ + roots.c rquantile.c rstat.c siman.c siman_tsp.c sortsmall.c \ + specfun.c specfun_e.c spmatrix.c stat.c statsort.c sum.c \ + vector.c vectorr.c vectorview.c vectorw.c +DIST_SOURCES = blas.c block.c bspline.c cblas.c cdf.c cheb.c \ + combination.c const.c diff.c dwt.c eigen.c eigen_nonsymm.c \ + fft.c fftmr.c fftreal.c filt_edge.c fitreg.c fitreg2.c \ + fitting.c fitting2.c fitting3.c gaussfilt.c gaussfilt2.c \ + histogram.c histogram2d.c ieee.c ieeeround.c impulse.c \ + integration.c integration2.c interp.c interp2d.c \ + interp_compare.c interpp.c intro.c largefit.c linalglu.c \ + matrix.c matrixw.c min.c monte.c movstat1.c movstat2.c \ + movstat3.c multiset.c nlfit.c nlfit2.c nlfit2b.c nlfit3.c \ + nlfit4.c ntupler.c ntuplew.c ode-initval.c permseq.c \ + permshuffle.c poisson.c polyroots.c qrng.c randpoisson.c \ + randwalk.c rng.c rngunif.c robfit.c rootnewt.c roots.c \ + rquantile.c rstat.c siman.c siman_tsp.c sortsmall.c specfun.c \ + specfun_e.c spmatrix.c stat.c statsort.c sum.c vector.c \ + vectorr.c vectorview.c vectorw.c +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +DATA = $(dist_noinst_DATA) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing aclocal-1.13 +AMTAR = $${TAR-tar} +AM_DEFAULT_VERBOSITY = 1 +AR = ar +AS = as +AUTOCONF = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing autoconf +AUTOHEADER = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing autoheader +AUTOMAKE = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing automake-1.13 +AWK = gawk +CC = gcc +CCDEPMODE = depmode=gcc3 +CFLAGS = -g -O2 +CPP = gcc -E +CPPFLAGS = +CYGPATH_W = echo +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +DLLTOOL = false +DSYMUTIL = +DUMPBIN = +ECHO_C = +ECHO_N = -n +ECHO_T = +EGREP = /usr/bin/grep -E +EXEEXT = +FGREP = /usr/bin/grep -F +GREP = /usr/bin/grep +GSLCBLAS_LDFLAGS = +GSL_CFLAGS = -I${prefix}/include +GSL_LDFLAGS = +GSL_LIBADD = +GSL_LIBM = -lm +GSL_LIBS = -L${exec_prefix}/lib -lgsl +GSL_LT_CBLAS_VERSION = 0:0:0 +GSL_LT_VERSION = 24:0:1 +GSL_MAJOR_VERSION = 2 +GSL_MINOR_VERSION = 5 +HAVE_AIX_IEEE_INTERFACE = +HAVE_DARWIN86_IEEE_INTERFACE = +HAVE_DARWIN_IEEE_INTERFACE = +HAVE_FREEBSD_IEEE_INTERFACE = +HAVE_GNUM68K_IEEE_INTERFACE = +HAVE_GNUPPC_IEEE_INTERFACE = +HAVE_GNUSPARC_IEEE_INTERFACE = +HAVE_GNUX86_IEEE_INTERFACE = +HAVE_HPUX11_IEEE_INTERFACE = +HAVE_HPUX_IEEE_INTERFACE = +HAVE_IRIX_IEEE_INTERFACE = +HAVE_NETBSD_IEEE_INTERFACE = +HAVE_OPENBSD_IEEE_INTERFACE = +HAVE_OS2EMX_IEEE_INTERFACE = +HAVE_SOLARIS_IEEE_INTERFACE = +HAVE_SUNOS4_IEEE_INTERFACE = +HAVE_TRU64_IEEE_INTERFACE = +INSTALL = /usr/bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = $(install_sh) -c -s +LD = /usr/bin/ld -m elf_x86_64 +LDFLAGS = +LIBM = -lm +LIBOBJS = +LIBS = -lm +LIBTOOL = $(SHELL) $(top_builddir)/libtool +LIPO = +LN_S = ln -s +LTLIBOBJS = +MAINT = # +MAKEINFO = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing makeinfo +MANIFEST_TOOL = : +MKDIR_P = /usr/bin/mkdir -p +NM = /usr/bin/nm -B +NMEDIT = +OBJDUMP = objdump +OBJEXT = o +OTOOL = +OTOOL64 = +PACKAGE = gsl +PACKAGE_BUGREPORT = +PACKAGE_NAME = gsl +PACKAGE_STRING = gsl 2.5 +PACKAGE_TARNAME = gsl +PACKAGE_URL = +PACKAGE_VERSION = 2.5 +PATH_SEPARATOR = : +RANLIB = ranlib +SED = /usr/bin/sed +SET_MAKE = +SHELL = /bin/sh +STRIP = strip +VERSION = 2.5 +abs_builddir = /home/groups/kipac/chto/package/gsl/gsl-2.5/doc/examples +abs_srcdir = /home/groups/kipac/chto/package/gsl/gsl-2.5/doc/examples +abs_top_builddir = /home/groups/kipac/chto/package/gsl/gsl-2.5 +abs_top_srcdir = /home/groups/kipac/chto/package/gsl/gsl-2.5 +ac_ct_AR = ar +ac_ct_CC = gcc +ac_ct_DUMPBIN = +am__include = include +am__leading_dot = . +am__quote = +am__tar = $${TAR-tar} chof - "$$tardir" +am__untar = $${TAR-tar} xf - +bindir = ${exec_prefix}/bin +build = x86_64-unknown-linux-gnu +build_alias = +build_cpu = x86_64 +build_os = linux-gnu +build_vendor = unknown +builddir = . +datadir = ${datarootdir} +datarootdir = ${prefix}/share +docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} +dvidir = ${docdir} +exec_prefix = ${prefix} +host = x86_64-unknown-linux-gnu +host_alias = +host_cpu = x86_64 +host_os = linux-gnu +host_vendor = unknown +htmldir = ${docdir} +includedir = ${prefix}/include +infodir = ${datarootdir}/info +install_sh = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/install-sh +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +localedir = ${datarootdir}/locale +localstatedir = ${prefix}/var +mandir = ${datarootdir}/man +mkdir_p = $(MKDIR_P) +oldincludedir = /usr/include +pdfdir = ${docdir} +prefix = /home/groups/kipac/chto/package/gsl/gsl_lib +program_transform_name = s,x,x, +psdir = ${docdir} +sbindir = ${exec_prefix}/sbin +sharedstatedir = ${prefix}/com +srcdir = . +sysconfdir = ${prefix}/etc +target_alias = +top_build_prefix = ../../ +top_builddir = ../.. +top_srcdir = ../.. +examples_src = blas.c block.c cblas.c cdf.c cheb.c combination.c multiset.c const.c demo_fn.c diff.c eigen.c fft.c fftmr.c fftreal.c filt_edge.c fitting.c fitting2.c fitting3.c fitreg.c fitreg2.c gaussfilt.c gaussfilt2.c histogram.c histogram2d.c ieee.c ieeeround.c impulse.c integration.c integration2.c interp.c interp2d.c intro.c linalglu.c largefit.c matrix.c matrixw.c min.c monte.c movstat1.c movstat2.c movstat3.c ntupler.c ntuplew.c ode-initval.c odefixed.c permseq.c permshuffle.c polyroots.c qrng.c randpoisson.c randwalk.c rng.c rngunif.c robfit.c rootnewt.c roots.c siman.c siman_tsp.c sortsmall.c specfun.c specfun_e.c rstat.c rquantile.c stat.c statsort.c sum.c vector.c vectorr.c vectorview.c vectorw.c demo_fn.h dwt.c nlfit.c nlfit2.c nlfit2b.c nlfit3.c interpp.c eigen_nonsymm.c bspline.c multimin.c multiminfn.c nmsimplex.c ode-initval-low-level.c poisson.c interp_compare.c spmatrix.c +examples_txt = blas.txt block.txt bspline.txt cblas.txt cdf.txt cheb.txt combination.txt const.txt diff.txt dwt.txt eigen_nonsymm.txt eigen.txt fftmr.txt fftreal.txt fft.txt fitreg.txt fitreg2.txt filt_edge.txt fitting2.txt fitting.txt gaussfilt.txt gaussfilt2.txt histogram2d.txt ieeeround.txt ieee.txt impulse.txt integration.txt integration2a.txt integration2b.txt interp2d.txt interp_compare.txt interpp.txt interp.txt intro.txt largefit.txt largefit2.txt linalglu.txt matrix.txt matrixw.txt min.txt monte.txt movstat1.txt movstat2.txt movstat3.txt multimin.txt multiset.txt nlfit.txt nlfit2.txt nlfit3.txt nmsimplex.txt ntuple.txt ode-initval.txt permseq.txt permshuffle.txt poisson.txt polyroots.txt qrng.txt randpoisson2.txt randpoisson.txt randwalk.txt rng.txt rngunif.txt rngunif2.txt robfit.txt rootnewt.txt roots.txt rquantile.txt rstat.txt siman.txt siman_tsp.txt sortsmall.txt specfun.txt specfun_e.txt spmatrix.txt statsort.txt stat.txt sum.txt vectorr.txt vectorview.txt +dist_noinst_DATA = $(examples_src) $(examples_txt) +LDADD = ../../libgsl.la ../../cblas/libgslcblas.la +AM_DEFAULT_SOURCE_EXT = .c +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/examples/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu doc/examples/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: # $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): # $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +blas$(EXEEXT): $(blas_OBJECTS) $(blas_DEPENDENCIES) $(EXTRA_blas_DEPENDENCIES) + @rm -f blas$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(blas_OBJECTS) $(blas_LDADD) $(LIBS) + +block$(EXEEXT): $(block_OBJECTS) $(block_DEPENDENCIES) $(EXTRA_block_DEPENDENCIES) + @rm -f block$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(block_OBJECTS) $(block_LDADD) $(LIBS) + +bspline$(EXEEXT): $(bspline_OBJECTS) $(bspline_DEPENDENCIES) $(EXTRA_bspline_DEPENDENCIES) + @rm -f bspline$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(bspline_OBJECTS) $(bspline_LDADD) $(LIBS) + +cblas$(EXEEXT): $(cblas_OBJECTS) $(cblas_DEPENDENCIES) $(EXTRA_cblas_DEPENDENCIES) + @rm -f cblas$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(cblas_OBJECTS) $(cblas_LDADD) $(LIBS) + +cdf$(EXEEXT): $(cdf_OBJECTS) $(cdf_DEPENDENCIES) $(EXTRA_cdf_DEPENDENCIES) + @rm -f cdf$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(cdf_OBJECTS) $(cdf_LDADD) $(LIBS) + +cheb$(EXEEXT): $(cheb_OBJECTS) $(cheb_DEPENDENCIES) $(EXTRA_cheb_DEPENDENCIES) + @rm -f cheb$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(cheb_OBJECTS) $(cheb_LDADD) $(LIBS) + +combination$(EXEEXT): $(combination_OBJECTS) $(combination_DEPENDENCIES) $(EXTRA_combination_DEPENDENCIES) + @rm -f combination$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(combination_OBJECTS) $(combination_LDADD) $(LIBS) + +const$(EXEEXT): $(const_OBJECTS) $(const_DEPENDENCIES) $(EXTRA_const_DEPENDENCIES) + @rm -f const$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(const_OBJECTS) $(const_LDADD) $(LIBS) + +diff$(EXEEXT): $(diff_OBJECTS) $(diff_DEPENDENCIES) $(EXTRA_diff_DEPENDENCIES) + @rm -f diff$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(diff_OBJECTS) $(diff_LDADD) $(LIBS) + +dwt$(EXEEXT): $(dwt_OBJECTS) $(dwt_DEPENDENCIES) $(EXTRA_dwt_DEPENDENCIES) + @rm -f dwt$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(dwt_OBJECTS) $(dwt_LDADD) $(LIBS) + +eigen$(EXEEXT): $(eigen_OBJECTS) $(eigen_DEPENDENCIES) $(EXTRA_eigen_DEPENDENCIES) + @rm -f eigen$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(eigen_OBJECTS) $(eigen_LDADD) $(LIBS) + +eigen_nonsymm$(EXEEXT): $(eigen_nonsymm_OBJECTS) $(eigen_nonsymm_DEPENDENCIES) $(EXTRA_eigen_nonsymm_DEPENDENCIES) + @rm -f eigen_nonsymm$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(eigen_nonsymm_OBJECTS) $(eigen_nonsymm_LDADD) $(LIBS) + +fft$(EXEEXT): $(fft_OBJECTS) $(fft_DEPENDENCIES) $(EXTRA_fft_DEPENDENCIES) + @rm -f fft$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(fft_OBJECTS) $(fft_LDADD) $(LIBS) + +fftmr$(EXEEXT): $(fftmr_OBJECTS) $(fftmr_DEPENDENCIES) $(EXTRA_fftmr_DEPENDENCIES) + @rm -f fftmr$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(fftmr_OBJECTS) $(fftmr_LDADD) $(LIBS) + +fftreal$(EXEEXT): $(fftreal_OBJECTS) $(fftreal_DEPENDENCIES) $(EXTRA_fftreal_DEPENDENCIES) + @rm -f fftreal$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(fftreal_OBJECTS) $(fftreal_LDADD) $(LIBS) + +filt_edge$(EXEEXT): $(filt_edge_OBJECTS) $(filt_edge_DEPENDENCIES) $(EXTRA_filt_edge_DEPENDENCIES) + @rm -f filt_edge$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(filt_edge_OBJECTS) $(filt_edge_LDADD) $(LIBS) + +fitreg$(EXEEXT): $(fitreg_OBJECTS) $(fitreg_DEPENDENCIES) $(EXTRA_fitreg_DEPENDENCIES) + @rm -f fitreg$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(fitreg_OBJECTS) $(fitreg_LDADD) $(LIBS) + +fitreg2$(EXEEXT): $(fitreg2_OBJECTS) $(fitreg2_DEPENDENCIES) $(EXTRA_fitreg2_DEPENDENCIES) + @rm -f fitreg2$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(fitreg2_OBJECTS) $(fitreg2_LDADD) $(LIBS) + +fitting$(EXEEXT): $(fitting_OBJECTS) $(fitting_DEPENDENCIES) $(EXTRA_fitting_DEPENDENCIES) + @rm -f fitting$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(fitting_OBJECTS) $(fitting_LDADD) $(LIBS) + +fitting2$(EXEEXT): $(fitting2_OBJECTS) $(fitting2_DEPENDENCIES) $(EXTRA_fitting2_DEPENDENCIES) + @rm -f fitting2$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(fitting2_OBJECTS) $(fitting2_LDADD) $(LIBS) + +fitting3$(EXEEXT): $(fitting3_OBJECTS) $(fitting3_DEPENDENCIES) $(EXTRA_fitting3_DEPENDENCIES) + @rm -f fitting3$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(fitting3_OBJECTS) $(fitting3_LDADD) $(LIBS) + +gaussfilt$(EXEEXT): $(gaussfilt_OBJECTS) $(gaussfilt_DEPENDENCIES) $(EXTRA_gaussfilt_DEPENDENCIES) + @rm -f gaussfilt$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(gaussfilt_OBJECTS) $(gaussfilt_LDADD) $(LIBS) + +gaussfilt2$(EXEEXT): $(gaussfilt2_OBJECTS) $(gaussfilt2_DEPENDENCIES) $(EXTRA_gaussfilt2_DEPENDENCIES) + @rm -f gaussfilt2$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(gaussfilt2_OBJECTS) $(gaussfilt2_LDADD) $(LIBS) + +histogram$(EXEEXT): $(histogram_OBJECTS) $(histogram_DEPENDENCIES) $(EXTRA_histogram_DEPENDENCIES) + @rm -f histogram$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(histogram_OBJECTS) $(histogram_LDADD) $(LIBS) + +histogram2d$(EXEEXT): $(histogram2d_OBJECTS) $(histogram2d_DEPENDENCIES) $(EXTRA_histogram2d_DEPENDENCIES) + @rm -f histogram2d$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(histogram2d_OBJECTS) $(histogram2d_LDADD) $(LIBS) + +ieee$(EXEEXT): $(ieee_OBJECTS) $(ieee_DEPENDENCIES) $(EXTRA_ieee_DEPENDENCIES) + @rm -f ieee$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(ieee_OBJECTS) $(ieee_LDADD) $(LIBS) + +ieeeround$(EXEEXT): $(ieeeround_OBJECTS) $(ieeeround_DEPENDENCIES) $(EXTRA_ieeeround_DEPENDENCIES) + @rm -f ieeeround$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(ieeeround_OBJECTS) $(ieeeround_LDADD) $(LIBS) + +impulse$(EXEEXT): $(impulse_OBJECTS) $(impulse_DEPENDENCIES) $(EXTRA_impulse_DEPENDENCIES) + @rm -f impulse$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(impulse_OBJECTS) $(impulse_LDADD) $(LIBS) + +integration$(EXEEXT): $(integration_OBJECTS) $(integration_DEPENDENCIES) $(EXTRA_integration_DEPENDENCIES) + @rm -f integration$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(integration_OBJECTS) $(integration_LDADD) $(LIBS) + +integration2$(EXEEXT): $(integration2_OBJECTS) $(integration2_DEPENDENCIES) $(EXTRA_integration2_DEPENDENCIES) + @rm -f integration2$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(integration2_OBJECTS) $(integration2_LDADD) $(LIBS) + +interp$(EXEEXT): $(interp_OBJECTS) $(interp_DEPENDENCIES) $(EXTRA_interp_DEPENDENCIES) + @rm -f interp$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(interp_OBJECTS) $(interp_LDADD) $(LIBS) + +interp2d$(EXEEXT): $(interp2d_OBJECTS) $(interp2d_DEPENDENCIES) $(EXTRA_interp2d_DEPENDENCIES) + @rm -f interp2d$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(interp2d_OBJECTS) $(interp2d_LDADD) $(LIBS) + +interp_compare$(EXEEXT): $(interp_compare_OBJECTS) $(interp_compare_DEPENDENCIES) $(EXTRA_interp_compare_DEPENDENCIES) + @rm -f interp_compare$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(interp_compare_OBJECTS) $(interp_compare_LDADD) $(LIBS) + +interpp$(EXEEXT): $(interpp_OBJECTS) $(interpp_DEPENDENCIES) $(EXTRA_interpp_DEPENDENCIES) + @rm -f interpp$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(interpp_OBJECTS) $(interpp_LDADD) $(LIBS) + +intro$(EXEEXT): $(intro_OBJECTS) $(intro_DEPENDENCIES) $(EXTRA_intro_DEPENDENCIES) + @rm -f intro$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(intro_OBJECTS) $(intro_LDADD) $(LIBS) + +largefit$(EXEEXT): $(largefit_OBJECTS) $(largefit_DEPENDENCIES) $(EXTRA_largefit_DEPENDENCIES) + @rm -f largefit$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(largefit_OBJECTS) $(largefit_LDADD) $(LIBS) + +linalglu$(EXEEXT): $(linalglu_OBJECTS) $(linalglu_DEPENDENCIES) $(EXTRA_linalglu_DEPENDENCIES) + @rm -f linalglu$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(linalglu_OBJECTS) $(linalglu_LDADD) $(LIBS) + +matrix$(EXEEXT): $(matrix_OBJECTS) $(matrix_DEPENDENCIES) $(EXTRA_matrix_DEPENDENCIES) + @rm -f matrix$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(matrix_OBJECTS) $(matrix_LDADD) $(LIBS) + +matrixw$(EXEEXT): $(matrixw_OBJECTS) $(matrixw_DEPENDENCIES) $(EXTRA_matrixw_DEPENDENCIES) + @rm -f matrixw$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(matrixw_OBJECTS) $(matrixw_LDADD) $(LIBS) + +min$(EXEEXT): $(min_OBJECTS) $(min_DEPENDENCIES) $(EXTRA_min_DEPENDENCIES) + @rm -f min$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(min_OBJECTS) $(min_LDADD) $(LIBS) + +monte$(EXEEXT): $(monte_OBJECTS) $(monte_DEPENDENCIES) $(EXTRA_monte_DEPENDENCIES) + @rm -f monte$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(monte_OBJECTS) $(monte_LDADD) $(LIBS) + +movstat1$(EXEEXT): $(movstat1_OBJECTS) $(movstat1_DEPENDENCIES) $(EXTRA_movstat1_DEPENDENCIES) + @rm -f movstat1$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(movstat1_OBJECTS) $(movstat1_LDADD) $(LIBS) + +movstat2$(EXEEXT): $(movstat2_OBJECTS) $(movstat2_DEPENDENCIES) $(EXTRA_movstat2_DEPENDENCIES) + @rm -f movstat2$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(movstat2_OBJECTS) $(movstat2_LDADD) $(LIBS) + +movstat3$(EXEEXT): $(movstat3_OBJECTS) $(movstat3_DEPENDENCIES) $(EXTRA_movstat3_DEPENDENCIES) + @rm -f movstat3$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(movstat3_OBJECTS) $(movstat3_LDADD) $(LIBS) + +multiset$(EXEEXT): $(multiset_OBJECTS) $(multiset_DEPENDENCIES) $(EXTRA_multiset_DEPENDENCIES) + @rm -f multiset$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(multiset_OBJECTS) $(multiset_LDADD) $(LIBS) + +nlfit$(EXEEXT): $(nlfit_OBJECTS) $(nlfit_DEPENDENCIES) $(EXTRA_nlfit_DEPENDENCIES) + @rm -f nlfit$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(nlfit_OBJECTS) $(nlfit_LDADD) $(LIBS) + +nlfit2$(EXEEXT): $(nlfit2_OBJECTS) $(nlfit2_DEPENDENCIES) $(EXTRA_nlfit2_DEPENDENCIES) + @rm -f nlfit2$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(nlfit2_OBJECTS) $(nlfit2_LDADD) $(LIBS) + +nlfit2b$(EXEEXT): $(nlfit2b_OBJECTS) $(nlfit2b_DEPENDENCIES) $(EXTRA_nlfit2b_DEPENDENCIES) + @rm -f nlfit2b$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(nlfit2b_OBJECTS) $(nlfit2b_LDADD) $(LIBS) + +nlfit3$(EXEEXT): $(nlfit3_OBJECTS) $(nlfit3_DEPENDENCIES) $(EXTRA_nlfit3_DEPENDENCIES) + @rm -f nlfit3$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(nlfit3_OBJECTS) $(nlfit3_LDADD) $(LIBS) + +nlfit4$(EXEEXT): $(nlfit4_OBJECTS) $(nlfit4_DEPENDENCIES) $(EXTRA_nlfit4_DEPENDENCIES) + @rm -f nlfit4$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(nlfit4_OBJECTS) $(nlfit4_LDADD) $(LIBS) + +ntupler$(EXEEXT): $(ntupler_OBJECTS) $(ntupler_DEPENDENCIES) $(EXTRA_ntupler_DEPENDENCIES) + @rm -f ntupler$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(ntupler_OBJECTS) $(ntupler_LDADD) $(LIBS) + +ntuplew$(EXEEXT): $(ntuplew_OBJECTS) $(ntuplew_DEPENDENCIES) $(EXTRA_ntuplew_DEPENDENCIES) + @rm -f ntuplew$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(ntuplew_OBJECTS) $(ntuplew_LDADD) $(LIBS) + +ode-initval$(EXEEXT): $(ode_initval_OBJECTS) $(ode_initval_DEPENDENCIES) $(EXTRA_ode_initval_DEPENDENCIES) + @rm -f ode-initval$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(ode_initval_OBJECTS) $(ode_initval_LDADD) $(LIBS) + +permseq$(EXEEXT): $(permseq_OBJECTS) $(permseq_DEPENDENCIES) $(EXTRA_permseq_DEPENDENCIES) + @rm -f permseq$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(permseq_OBJECTS) $(permseq_LDADD) $(LIBS) + +permshuffle$(EXEEXT): $(permshuffle_OBJECTS) $(permshuffle_DEPENDENCIES) $(EXTRA_permshuffle_DEPENDENCIES) + @rm -f permshuffle$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(permshuffle_OBJECTS) $(permshuffle_LDADD) $(LIBS) + +poisson$(EXEEXT): $(poisson_OBJECTS) $(poisson_DEPENDENCIES) $(EXTRA_poisson_DEPENDENCIES) + @rm -f poisson$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(poisson_OBJECTS) $(poisson_LDADD) $(LIBS) + +polyroots$(EXEEXT): $(polyroots_OBJECTS) $(polyroots_DEPENDENCIES) $(EXTRA_polyroots_DEPENDENCIES) + @rm -f polyroots$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(polyroots_OBJECTS) $(polyroots_LDADD) $(LIBS) + +qrng$(EXEEXT): $(qrng_OBJECTS) $(qrng_DEPENDENCIES) $(EXTRA_qrng_DEPENDENCIES) + @rm -f qrng$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(qrng_OBJECTS) $(qrng_LDADD) $(LIBS) + +randpoisson$(EXEEXT): $(randpoisson_OBJECTS) $(randpoisson_DEPENDENCIES) $(EXTRA_randpoisson_DEPENDENCIES) + @rm -f randpoisson$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(randpoisson_OBJECTS) $(randpoisson_LDADD) $(LIBS) + +randwalk$(EXEEXT): $(randwalk_OBJECTS) $(randwalk_DEPENDENCIES) $(EXTRA_randwalk_DEPENDENCIES) + @rm -f randwalk$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(randwalk_OBJECTS) $(randwalk_LDADD) $(LIBS) + +rng$(EXEEXT): $(rng_OBJECTS) $(rng_DEPENDENCIES) $(EXTRA_rng_DEPENDENCIES) + @rm -f rng$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(rng_OBJECTS) $(rng_LDADD) $(LIBS) + +rngunif$(EXEEXT): $(rngunif_OBJECTS) $(rngunif_DEPENDENCIES) $(EXTRA_rngunif_DEPENDENCIES) + @rm -f rngunif$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(rngunif_OBJECTS) $(rngunif_LDADD) $(LIBS) + +robfit$(EXEEXT): $(robfit_OBJECTS) $(robfit_DEPENDENCIES) $(EXTRA_robfit_DEPENDENCIES) + @rm -f robfit$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(robfit_OBJECTS) $(robfit_LDADD) $(LIBS) + +rootnewt$(EXEEXT): $(rootnewt_OBJECTS) $(rootnewt_DEPENDENCIES) $(EXTRA_rootnewt_DEPENDENCIES) + @rm -f rootnewt$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(rootnewt_OBJECTS) $(rootnewt_LDADD) $(LIBS) + +roots$(EXEEXT): $(roots_OBJECTS) $(roots_DEPENDENCIES) $(EXTRA_roots_DEPENDENCIES) + @rm -f roots$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(roots_OBJECTS) $(roots_LDADD) $(LIBS) + +rquantile$(EXEEXT): $(rquantile_OBJECTS) $(rquantile_DEPENDENCIES) $(EXTRA_rquantile_DEPENDENCIES) + @rm -f rquantile$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(rquantile_OBJECTS) $(rquantile_LDADD) $(LIBS) + +rstat$(EXEEXT): $(rstat_OBJECTS) $(rstat_DEPENDENCIES) $(EXTRA_rstat_DEPENDENCIES) + @rm -f rstat$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(rstat_OBJECTS) $(rstat_LDADD) $(LIBS) + +siman$(EXEEXT): $(siman_OBJECTS) $(siman_DEPENDENCIES) $(EXTRA_siman_DEPENDENCIES) + @rm -f siman$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(siman_OBJECTS) $(siman_LDADD) $(LIBS) + +siman_tsp$(EXEEXT): $(siman_tsp_OBJECTS) $(siman_tsp_DEPENDENCIES) $(EXTRA_siman_tsp_DEPENDENCIES) + @rm -f siman_tsp$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(siman_tsp_OBJECTS) $(siman_tsp_LDADD) $(LIBS) + +sortsmall$(EXEEXT): $(sortsmall_OBJECTS) $(sortsmall_DEPENDENCIES) $(EXTRA_sortsmall_DEPENDENCIES) + @rm -f sortsmall$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(sortsmall_OBJECTS) $(sortsmall_LDADD) $(LIBS) + +specfun$(EXEEXT): $(specfun_OBJECTS) $(specfun_DEPENDENCIES) $(EXTRA_specfun_DEPENDENCIES) + @rm -f specfun$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(specfun_OBJECTS) $(specfun_LDADD) $(LIBS) + +specfun_e$(EXEEXT): $(specfun_e_OBJECTS) $(specfun_e_DEPENDENCIES) $(EXTRA_specfun_e_DEPENDENCIES) + @rm -f specfun_e$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(specfun_e_OBJECTS) $(specfun_e_LDADD) $(LIBS) + +spmatrix$(EXEEXT): $(spmatrix_OBJECTS) $(spmatrix_DEPENDENCIES) $(EXTRA_spmatrix_DEPENDENCIES) + @rm -f spmatrix$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(spmatrix_OBJECTS) $(spmatrix_LDADD) $(LIBS) + +stat$(EXEEXT): $(stat_OBJECTS) $(stat_DEPENDENCIES) $(EXTRA_stat_DEPENDENCIES) + @rm -f stat$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(stat_OBJECTS) $(stat_LDADD) $(LIBS) + +statsort$(EXEEXT): $(statsort_OBJECTS) $(statsort_DEPENDENCIES) $(EXTRA_statsort_DEPENDENCIES) + @rm -f statsort$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(statsort_OBJECTS) $(statsort_LDADD) $(LIBS) + +sum$(EXEEXT): $(sum_OBJECTS) $(sum_DEPENDENCIES) $(EXTRA_sum_DEPENDENCIES) + @rm -f sum$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(sum_OBJECTS) $(sum_LDADD) $(LIBS) + +vector$(EXEEXT): $(vector_OBJECTS) $(vector_DEPENDENCIES) $(EXTRA_vector_DEPENDENCIES) + @rm -f vector$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(vector_OBJECTS) $(vector_LDADD) $(LIBS) + +vectorr$(EXEEXT): $(vectorr_OBJECTS) $(vectorr_DEPENDENCIES) $(EXTRA_vectorr_DEPENDENCIES) + @rm -f vectorr$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(vectorr_OBJECTS) $(vectorr_LDADD) $(LIBS) + +vectorview$(EXEEXT): $(vectorview_OBJECTS) $(vectorview_DEPENDENCIES) $(EXTRA_vectorview_DEPENDENCIES) + @rm -f vectorview$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(vectorview_OBJECTS) $(vectorview_LDADD) $(LIBS) + +vectorw$(EXEEXT): $(vectorw_OBJECTS) $(vectorw_DEPENDENCIES) $(EXTRA_vectorw_DEPENDENCIES) + @rm -f vectorw$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(vectorw_OBJECTS) $(vectorw_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +include ./$(DEPDIR)/blas.Po +include ./$(DEPDIR)/block.Po +include ./$(DEPDIR)/bspline.Po +include ./$(DEPDIR)/cblas.Po +include ./$(DEPDIR)/cdf.Po +include ./$(DEPDIR)/cheb.Po +include ./$(DEPDIR)/combination.Po +include ./$(DEPDIR)/const.Po +include ./$(DEPDIR)/diff.Po +include ./$(DEPDIR)/dwt.Po +include ./$(DEPDIR)/eigen.Po +include ./$(DEPDIR)/eigen_nonsymm.Po +include ./$(DEPDIR)/fft.Po +include ./$(DEPDIR)/fftmr.Po +include ./$(DEPDIR)/fftreal.Po +include ./$(DEPDIR)/filt_edge.Po +include ./$(DEPDIR)/fitreg.Po +include ./$(DEPDIR)/fitreg2.Po +include ./$(DEPDIR)/fitting.Po +include ./$(DEPDIR)/fitting2.Po +include ./$(DEPDIR)/fitting3.Po +include ./$(DEPDIR)/gaussfilt.Po +include ./$(DEPDIR)/gaussfilt2.Po +include ./$(DEPDIR)/histogram.Po +include ./$(DEPDIR)/histogram2d.Po +include ./$(DEPDIR)/ieee.Po +include ./$(DEPDIR)/ieeeround.Po +include ./$(DEPDIR)/impulse.Po +include ./$(DEPDIR)/integration.Po +include ./$(DEPDIR)/integration2.Po +include ./$(DEPDIR)/interp.Po +include ./$(DEPDIR)/interp2d.Po +include ./$(DEPDIR)/interp_compare.Po +include ./$(DEPDIR)/interpp.Po +include ./$(DEPDIR)/intro.Po +include ./$(DEPDIR)/largefit.Po +include ./$(DEPDIR)/linalglu.Po +include ./$(DEPDIR)/matrix.Po +include ./$(DEPDIR)/matrixw.Po +include ./$(DEPDIR)/min.Po +include ./$(DEPDIR)/monte.Po +include ./$(DEPDIR)/movstat1.Po +include ./$(DEPDIR)/movstat2.Po +include ./$(DEPDIR)/movstat3.Po +include ./$(DEPDIR)/multiset.Po +include ./$(DEPDIR)/nlfit.Po +include ./$(DEPDIR)/nlfit2.Po +include ./$(DEPDIR)/nlfit2b.Po +include ./$(DEPDIR)/nlfit3.Po +include ./$(DEPDIR)/nlfit4.Po +include ./$(DEPDIR)/ntupler.Po +include ./$(DEPDIR)/ntuplew.Po +include ./$(DEPDIR)/ode-initval.Po +include ./$(DEPDIR)/permseq.Po +include ./$(DEPDIR)/permshuffle.Po +include ./$(DEPDIR)/poisson.Po +include ./$(DEPDIR)/polyroots.Po +include ./$(DEPDIR)/qrng.Po +include ./$(DEPDIR)/randpoisson.Po +include ./$(DEPDIR)/randwalk.Po +include ./$(DEPDIR)/rng.Po +include ./$(DEPDIR)/rngunif.Po +include ./$(DEPDIR)/robfit.Po +include ./$(DEPDIR)/rootnewt.Po +include ./$(DEPDIR)/roots.Po +include ./$(DEPDIR)/rquantile.Po +include ./$(DEPDIR)/rstat.Po +include ./$(DEPDIR)/siman.Po +include ./$(DEPDIR)/siman_tsp.Po +include ./$(DEPDIR)/sortsmall.Po +include ./$(DEPDIR)/specfun.Po +include ./$(DEPDIR)/specfun_e.Po +include ./$(DEPDIR)/spmatrix.Po +include ./$(DEPDIR)/stat.Po +include ./$(DEPDIR)/statsort.Po +include ./$(DEPDIR)/sum.Po +include ./$(DEPDIR)/vector.Po +include ./$(DEPDIR)/vectorr.Po +include ./$(DEPDIR)/vectorview.Po +include ./$(DEPDIR)/vectorw.Po + +.c.o: + $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# $(AM_V_CC)source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(COMPILE) -c $< + +.c.obj: + $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# $(AM_V_CC)source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: + $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +# $(AM_V_CC)source='$<' object='$@' libtool=yes \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) +check: check-am +all-am: Makefile $(DATA) +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ + mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool cscopelist-am \ + ctags ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags tags-am uninstall uninstall-am + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gsl-2.5/doc/examples/Makefile.am b/gsl-2.5/doc/examples/Makefile.am new file mode 100644 index 00000000..5f0a2040 --- /dev/null +++ b/gsl-2.5/doc/examples/Makefile.am @@ -0,0 +1,12 @@ +## Process this file with automake to produce Makefile.in + +check_PROGRAMS = blas block cblas cdf cheb combination multiset const diff eigen fft fftmr fftreal filt_edge fitting fitting2 fitting3 fitreg fitreg2 gaussfilt gaussfilt2 histogram histogram2d ieee ieeeround impulse integration integration2 interp interp2d intro linalglu largefit matrix matrixw min monte movstat1 movstat2 movstat3 ntupler ntuplew ode-initval permseq permshuffle polyroots qrng randpoisson randwalk rng rngunif robfit rootnewt roots siman siman_tsp sortsmall specfun specfun_e rstat rquantile stat statsort sum vector vectorr vectorview vectorw dwt nlfit nlfit2 nlfit2b nlfit3 nlfit4 interpp eigen_nonsymm bspline poisson interp_compare spmatrix + +examples_src = blas.c block.c cblas.c cdf.c cheb.c combination.c multiset.c const.c demo_fn.c diff.c eigen.c fft.c fftmr.c fftreal.c filt_edge.c fitting.c fitting2.c fitting3.c fitreg.c fitreg2.c gaussfilt.c gaussfilt2.c histogram.c histogram2d.c ieee.c ieeeround.c impulse.c integration.c integration2.c interp.c interp2d.c intro.c linalglu.c largefit.c matrix.c matrixw.c min.c monte.c movstat1.c movstat2.c movstat3.c ntupler.c ntuplew.c ode-initval.c odefixed.c permseq.c permshuffle.c polyroots.c qrng.c randpoisson.c randwalk.c rng.c rngunif.c robfit.c rootnewt.c roots.c siman.c siman_tsp.c sortsmall.c specfun.c specfun_e.c rstat.c rquantile.c stat.c statsort.c sum.c vector.c vectorr.c vectorview.c vectorw.c demo_fn.h dwt.c nlfit.c nlfit2.c nlfit2b.c nlfit3.c interpp.c eigen_nonsymm.c bspline.c multimin.c multiminfn.c nmsimplex.c ode-initval-low-level.c poisson.c interp_compare.c spmatrix.c + +examples_txt = blas.txt block.txt bspline.txt cblas.txt cdf.txt cheb.txt combination.txt const.txt diff.txt dwt.txt eigen_nonsymm.txt eigen.txt fftmr.txt fftreal.txt fft.txt fitreg.txt fitreg2.txt filt_edge.txt fitting2.txt fitting.txt gaussfilt.txt gaussfilt2.txt histogram2d.txt ieeeround.txt ieee.txt impulse.txt integration.txt integration2a.txt integration2b.txt interp2d.txt interp_compare.txt interpp.txt interp.txt intro.txt largefit.txt largefit2.txt linalglu.txt matrix.txt matrixw.txt min.txt monte.txt movstat1.txt movstat2.txt movstat3.txt multimin.txt multiset.txt nlfit.txt nlfit2.txt nlfit3.txt nmsimplex.txt ntuple.txt ode-initval.txt permseq.txt permshuffle.txt poisson.txt polyroots.txt qrng.txt randpoisson2.txt randpoisson.txt randwalk.txt rng.txt rngunif.txt rngunif2.txt robfit.txt rootnewt.txt roots.txt rquantile.txt rstat.txt siman.txt siman_tsp.txt sortsmall.txt specfun.txt specfun_e.txt spmatrix.txt statsort.txt stat.txt sum.txt vectorr.txt vectorview.txt + +dist_noinst_DATA = $(examples_src) $(examples_txt) + +LDADD = ../../libgsl.la ../../cblas/libgslcblas.la +AM_DEFAULT_SOURCE_EXT = .c diff --git a/gsl-2.5/doc/examples/Makefile.in b/gsl-2.5/doc/examples/Makefile.in new file mode 100644 index 00000000..2ed08f3d --- /dev/null +++ b/gsl-2.5/doc/examples/Makefile.in @@ -0,0 +1,1368 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +check_PROGRAMS = blas$(EXEEXT) block$(EXEEXT) cblas$(EXEEXT) \ + cdf$(EXEEXT) cheb$(EXEEXT) combination$(EXEEXT) \ + multiset$(EXEEXT) const$(EXEEXT) diff$(EXEEXT) eigen$(EXEEXT) \ + fft$(EXEEXT) fftmr$(EXEEXT) fftreal$(EXEEXT) \ + filt_edge$(EXEEXT) fitting$(EXEEXT) fitting2$(EXEEXT) \ + fitting3$(EXEEXT) fitreg$(EXEEXT) fitreg2$(EXEEXT) \ + gaussfilt$(EXEEXT) gaussfilt2$(EXEEXT) histogram$(EXEEXT) \ + histogram2d$(EXEEXT) ieee$(EXEEXT) ieeeround$(EXEEXT) \ + impulse$(EXEEXT) integration$(EXEEXT) integration2$(EXEEXT) \ + interp$(EXEEXT) interp2d$(EXEEXT) intro$(EXEEXT) \ + linalglu$(EXEEXT) largefit$(EXEEXT) matrix$(EXEEXT) \ + matrixw$(EXEEXT) min$(EXEEXT) monte$(EXEEXT) movstat1$(EXEEXT) \ + movstat2$(EXEEXT) movstat3$(EXEEXT) ntupler$(EXEEXT) \ + ntuplew$(EXEEXT) ode-initval$(EXEEXT) permseq$(EXEEXT) \ + permshuffle$(EXEEXT) polyroots$(EXEEXT) qrng$(EXEEXT) \ + randpoisson$(EXEEXT) randwalk$(EXEEXT) rng$(EXEEXT) \ + rngunif$(EXEEXT) robfit$(EXEEXT) rootnewt$(EXEEXT) \ + roots$(EXEEXT) siman$(EXEEXT) siman_tsp$(EXEEXT) \ + sortsmall$(EXEEXT) specfun$(EXEEXT) specfun_e$(EXEEXT) \ + rstat$(EXEEXT) rquantile$(EXEEXT) stat$(EXEEXT) \ + statsort$(EXEEXT) sum$(EXEEXT) vector$(EXEEXT) \ + vectorr$(EXEEXT) vectorview$(EXEEXT) vectorw$(EXEEXT) \ + dwt$(EXEEXT) nlfit$(EXEEXT) nlfit2$(EXEEXT) nlfit2b$(EXEEXT) \ + nlfit3$(EXEEXT) nlfit4$(EXEEXT) interpp$(EXEEXT) \ + eigen_nonsymm$(EXEEXT) bspline$(EXEEXT) poisson$(EXEEXT) \ + interp_compare$(EXEEXT) spmatrix$(EXEEXT) +subdir = doc/examples +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp \ + $(dist_noinst_DATA) +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +blas_SOURCES = blas.c +blas_OBJECTS = blas.$(OBJEXT) +blas_LDADD = $(LDADD) +blas_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +block_SOURCES = block.c +block_OBJECTS = block.$(OBJEXT) +block_LDADD = $(LDADD) +block_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +bspline_SOURCES = bspline.c +bspline_OBJECTS = bspline.$(OBJEXT) +bspline_LDADD = $(LDADD) +bspline_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +cblas_SOURCES = cblas.c +cblas_OBJECTS = cblas.$(OBJEXT) +cblas_LDADD = $(LDADD) +cblas_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +cdf_SOURCES = cdf.c +cdf_OBJECTS = cdf.$(OBJEXT) +cdf_LDADD = $(LDADD) +cdf_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +cheb_SOURCES = cheb.c +cheb_OBJECTS = cheb.$(OBJEXT) +cheb_LDADD = $(LDADD) +cheb_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +combination_SOURCES = combination.c +combination_OBJECTS = combination.$(OBJEXT) +combination_LDADD = $(LDADD) +combination_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +const_SOURCES = const.c +const_OBJECTS = const.$(OBJEXT) +const_LDADD = $(LDADD) +const_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +diff_SOURCES = diff.c +diff_OBJECTS = diff.$(OBJEXT) +diff_LDADD = $(LDADD) +diff_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +dwt_SOURCES = dwt.c +dwt_OBJECTS = dwt.$(OBJEXT) +dwt_LDADD = $(LDADD) +dwt_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +eigen_SOURCES = eigen.c +eigen_OBJECTS = eigen.$(OBJEXT) +eigen_LDADD = $(LDADD) +eigen_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +eigen_nonsymm_SOURCES = eigen_nonsymm.c +eigen_nonsymm_OBJECTS = eigen_nonsymm.$(OBJEXT) +eigen_nonsymm_LDADD = $(LDADD) +eigen_nonsymm_DEPENDENCIES = ../../libgsl.la \ + ../../cblas/libgslcblas.la +fft_SOURCES = fft.c +fft_OBJECTS = fft.$(OBJEXT) +fft_LDADD = $(LDADD) +fft_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +fftmr_SOURCES = fftmr.c +fftmr_OBJECTS = fftmr.$(OBJEXT) +fftmr_LDADD = $(LDADD) +fftmr_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +fftreal_SOURCES = fftreal.c +fftreal_OBJECTS = fftreal.$(OBJEXT) +fftreal_LDADD = $(LDADD) +fftreal_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +filt_edge_SOURCES = filt_edge.c +filt_edge_OBJECTS = filt_edge.$(OBJEXT) +filt_edge_LDADD = $(LDADD) +filt_edge_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +fitreg_SOURCES = fitreg.c +fitreg_OBJECTS = fitreg.$(OBJEXT) +fitreg_LDADD = $(LDADD) +fitreg_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +fitreg2_SOURCES = fitreg2.c +fitreg2_OBJECTS = fitreg2.$(OBJEXT) +fitreg2_LDADD = $(LDADD) +fitreg2_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +fitting_SOURCES = fitting.c +fitting_OBJECTS = fitting.$(OBJEXT) +fitting_LDADD = $(LDADD) +fitting_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +fitting2_SOURCES = fitting2.c +fitting2_OBJECTS = fitting2.$(OBJEXT) +fitting2_LDADD = $(LDADD) +fitting2_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +fitting3_SOURCES = fitting3.c +fitting3_OBJECTS = fitting3.$(OBJEXT) +fitting3_LDADD = $(LDADD) +fitting3_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +gaussfilt_SOURCES = gaussfilt.c +gaussfilt_OBJECTS = gaussfilt.$(OBJEXT) +gaussfilt_LDADD = $(LDADD) +gaussfilt_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +gaussfilt2_SOURCES = gaussfilt2.c +gaussfilt2_OBJECTS = gaussfilt2.$(OBJEXT) +gaussfilt2_LDADD = $(LDADD) +gaussfilt2_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +histogram_SOURCES = histogram.c +histogram_OBJECTS = histogram.$(OBJEXT) +histogram_LDADD = $(LDADD) +histogram_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +histogram2d_SOURCES = histogram2d.c +histogram2d_OBJECTS = histogram2d.$(OBJEXT) +histogram2d_LDADD = $(LDADD) +histogram2d_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +ieee_SOURCES = ieee.c +ieee_OBJECTS = ieee.$(OBJEXT) +ieee_LDADD = $(LDADD) +ieee_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +ieeeround_SOURCES = ieeeround.c +ieeeround_OBJECTS = ieeeround.$(OBJEXT) +ieeeround_LDADD = $(LDADD) +ieeeround_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +impulse_SOURCES = impulse.c +impulse_OBJECTS = impulse.$(OBJEXT) +impulse_LDADD = $(LDADD) +impulse_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +integration_SOURCES = integration.c +integration_OBJECTS = integration.$(OBJEXT) +integration_LDADD = $(LDADD) +integration_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +integration2_SOURCES = integration2.c +integration2_OBJECTS = integration2.$(OBJEXT) +integration2_LDADD = $(LDADD) +integration2_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +interp_SOURCES = interp.c +interp_OBJECTS = interp.$(OBJEXT) +interp_LDADD = $(LDADD) +interp_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +interp2d_SOURCES = interp2d.c +interp2d_OBJECTS = interp2d.$(OBJEXT) +interp2d_LDADD = $(LDADD) +interp2d_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +interp_compare_SOURCES = interp_compare.c +interp_compare_OBJECTS = interp_compare.$(OBJEXT) +interp_compare_LDADD = $(LDADD) +interp_compare_DEPENDENCIES = ../../libgsl.la \ + ../../cblas/libgslcblas.la +interpp_SOURCES = interpp.c +interpp_OBJECTS = interpp.$(OBJEXT) +interpp_LDADD = $(LDADD) +interpp_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +intro_SOURCES = intro.c +intro_OBJECTS = intro.$(OBJEXT) +intro_LDADD = $(LDADD) +intro_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +largefit_SOURCES = largefit.c +largefit_OBJECTS = largefit.$(OBJEXT) +largefit_LDADD = $(LDADD) +largefit_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +linalglu_SOURCES = linalglu.c +linalglu_OBJECTS = linalglu.$(OBJEXT) +linalglu_LDADD = $(LDADD) +linalglu_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +matrix_SOURCES = matrix.c +matrix_OBJECTS = matrix.$(OBJEXT) +matrix_LDADD = $(LDADD) +matrix_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +matrixw_SOURCES = matrixw.c +matrixw_OBJECTS = matrixw.$(OBJEXT) +matrixw_LDADD = $(LDADD) +matrixw_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +min_SOURCES = min.c +min_OBJECTS = min.$(OBJEXT) +min_LDADD = $(LDADD) +min_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +monte_SOURCES = monte.c +monte_OBJECTS = monte.$(OBJEXT) +monte_LDADD = $(LDADD) +monte_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +movstat1_SOURCES = movstat1.c +movstat1_OBJECTS = movstat1.$(OBJEXT) +movstat1_LDADD = $(LDADD) +movstat1_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +movstat2_SOURCES = movstat2.c +movstat2_OBJECTS = movstat2.$(OBJEXT) +movstat2_LDADD = $(LDADD) +movstat2_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +movstat3_SOURCES = movstat3.c +movstat3_OBJECTS = movstat3.$(OBJEXT) +movstat3_LDADD = $(LDADD) +movstat3_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +multiset_SOURCES = multiset.c +multiset_OBJECTS = multiset.$(OBJEXT) +multiset_LDADD = $(LDADD) +multiset_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +nlfit_SOURCES = nlfit.c +nlfit_OBJECTS = nlfit.$(OBJEXT) +nlfit_LDADD = $(LDADD) +nlfit_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +nlfit2_SOURCES = nlfit2.c +nlfit2_OBJECTS = nlfit2.$(OBJEXT) +nlfit2_LDADD = $(LDADD) +nlfit2_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +nlfit2b_SOURCES = nlfit2b.c +nlfit2b_OBJECTS = nlfit2b.$(OBJEXT) +nlfit2b_LDADD = $(LDADD) +nlfit2b_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +nlfit3_SOURCES = nlfit3.c +nlfit3_OBJECTS = nlfit3.$(OBJEXT) +nlfit3_LDADD = $(LDADD) +nlfit3_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +nlfit4_SOURCES = nlfit4.c +nlfit4_OBJECTS = nlfit4.$(OBJEXT) +nlfit4_LDADD = $(LDADD) +nlfit4_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +ntupler_SOURCES = ntupler.c +ntupler_OBJECTS = ntupler.$(OBJEXT) +ntupler_LDADD = $(LDADD) +ntupler_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +ntuplew_SOURCES = ntuplew.c +ntuplew_OBJECTS = ntuplew.$(OBJEXT) +ntuplew_LDADD = $(LDADD) +ntuplew_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +ode_initval_SOURCES = ode-initval.c +ode_initval_OBJECTS = ode-initval.$(OBJEXT) +ode_initval_LDADD = $(LDADD) +ode_initval_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +permseq_SOURCES = permseq.c +permseq_OBJECTS = permseq.$(OBJEXT) +permseq_LDADD = $(LDADD) +permseq_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +permshuffle_SOURCES = permshuffle.c +permshuffle_OBJECTS = permshuffle.$(OBJEXT) +permshuffle_LDADD = $(LDADD) +permshuffle_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +poisson_SOURCES = poisson.c +poisson_OBJECTS = poisson.$(OBJEXT) +poisson_LDADD = $(LDADD) +poisson_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +polyroots_SOURCES = polyroots.c +polyroots_OBJECTS = polyroots.$(OBJEXT) +polyroots_LDADD = $(LDADD) +polyroots_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +qrng_SOURCES = qrng.c +qrng_OBJECTS = qrng.$(OBJEXT) +qrng_LDADD = $(LDADD) +qrng_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +randpoisson_SOURCES = randpoisson.c +randpoisson_OBJECTS = randpoisson.$(OBJEXT) +randpoisson_LDADD = $(LDADD) +randpoisson_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +randwalk_SOURCES = randwalk.c +randwalk_OBJECTS = randwalk.$(OBJEXT) +randwalk_LDADD = $(LDADD) +randwalk_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +rng_SOURCES = rng.c +rng_OBJECTS = rng.$(OBJEXT) +rng_LDADD = $(LDADD) +rng_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +rngunif_SOURCES = rngunif.c +rngunif_OBJECTS = rngunif.$(OBJEXT) +rngunif_LDADD = $(LDADD) +rngunif_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +robfit_SOURCES = robfit.c +robfit_OBJECTS = robfit.$(OBJEXT) +robfit_LDADD = $(LDADD) +robfit_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +rootnewt_SOURCES = rootnewt.c +rootnewt_OBJECTS = rootnewt.$(OBJEXT) +rootnewt_LDADD = $(LDADD) +rootnewt_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +roots_SOURCES = roots.c +roots_OBJECTS = roots.$(OBJEXT) +roots_LDADD = $(LDADD) +roots_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +rquantile_SOURCES = rquantile.c +rquantile_OBJECTS = rquantile.$(OBJEXT) +rquantile_LDADD = $(LDADD) +rquantile_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +rstat_SOURCES = rstat.c +rstat_OBJECTS = rstat.$(OBJEXT) +rstat_LDADD = $(LDADD) +rstat_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +siman_SOURCES = siman.c +siman_OBJECTS = siman.$(OBJEXT) +siman_LDADD = $(LDADD) +siman_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +siman_tsp_SOURCES = siman_tsp.c +siman_tsp_OBJECTS = siman_tsp.$(OBJEXT) +siman_tsp_LDADD = $(LDADD) +siman_tsp_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +sortsmall_SOURCES = sortsmall.c +sortsmall_OBJECTS = sortsmall.$(OBJEXT) +sortsmall_LDADD = $(LDADD) +sortsmall_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +specfun_SOURCES = specfun.c +specfun_OBJECTS = specfun.$(OBJEXT) +specfun_LDADD = $(LDADD) +specfun_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +specfun_e_SOURCES = specfun_e.c +specfun_e_OBJECTS = specfun_e.$(OBJEXT) +specfun_e_LDADD = $(LDADD) +specfun_e_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +spmatrix_SOURCES = spmatrix.c +spmatrix_OBJECTS = spmatrix.$(OBJEXT) +spmatrix_LDADD = $(LDADD) +spmatrix_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +stat_SOURCES = stat.c +stat_OBJECTS = stat.$(OBJEXT) +stat_LDADD = $(LDADD) +stat_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +statsort_SOURCES = statsort.c +statsort_OBJECTS = statsort.$(OBJEXT) +statsort_LDADD = $(LDADD) +statsort_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +sum_SOURCES = sum.c +sum_OBJECTS = sum.$(OBJEXT) +sum_LDADD = $(LDADD) +sum_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +vector_SOURCES = vector.c +vector_OBJECTS = vector.$(OBJEXT) +vector_LDADD = $(LDADD) +vector_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +vectorr_SOURCES = vectorr.c +vectorr_OBJECTS = vectorr.$(OBJEXT) +vectorr_LDADD = $(LDADD) +vectorr_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +vectorview_SOURCES = vectorview.c +vectorview_OBJECTS = vectorview.$(OBJEXT) +vectorview_LDADD = $(LDADD) +vectorview_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +vectorw_SOURCES = vectorw.c +vectorw_OBJECTS = vectorw.$(OBJEXT) +vectorw_LDADD = $(LDADD) +vectorw_DEPENDENCIES = ../../libgsl.la ../../cblas/libgslcblas.la +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = blas.c block.c bspline.c cblas.c cdf.c cheb.c combination.c \ + const.c diff.c dwt.c eigen.c eigen_nonsymm.c fft.c fftmr.c \ + fftreal.c filt_edge.c fitreg.c fitreg2.c fitting.c fitting2.c \ + fitting3.c gaussfilt.c gaussfilt2.c histogram.c histogram2d.c \ + ieee.c ieeeround.c impulse.c integration.c integration2.c \ + interp.c interp2d.c interp_compare.c interpp.c intro.c \ + largefit.c linalglu.c matrix.c matrixw.c min.c monte.c \ + movstat1.c movstat2.c movstat3.c multiset.c nlfit.c nlfit2.c \ + nlfit2b.c nlfit3.c nlfit4.c ntupler.c ntuplew.c ode-initval.c \ + permseq.c permshuffle.c poisson.c polyroots.c qrng.c \ + randpoisson.c randwalk.c rng.c rngunif.c robfit.c rootnewt.c \ + roots.c rquantile.c rstat.c siman.c siman_tsp.c sortsmall.c \ + specfun.c specfun_e.c spmatrix.c stat.c statsort.c sum.c \ + vector.c vectorr.c vectorview.c vectorw.c +DIST_SOURCES = blas.c block.c bspline.c cblas.c cdf.c cheb.c \ + combination.c const.c diff.c dwt.c eigen.c eigen_nonsymm.c \ + fft.c fftmr.c fftreal.c filt_edge.c fitreg.c fitreg2.c \ + fitting.c fitting2.c fitting3.c gaussfilt.c gaussfilt2.c \ + histogram.c histogram2d.c ieee.c ieeeround.c impulse.c \ + integration.c integration2.c interp.c interp2d.c \ + interp_compare.c interpp.c intro.c largefit.c linalglu.c \ + matrix.c matrixw.c min.c monte.c movstat1.c movstat2.c \ + movstat3.c multiset.c nlfit.c nlfit2.c nlfit2b.c nlfit3.c \ + nlfit4.c ntupler.c ntuplew.c ode-initval.c permseq.c \ + permshuffle.c poisson.c polyroots.c qrng.c randpoisson.c \ + randwalk.c rng.c rngunif.c robfit.c rootnewt.c roots.c \ + rquantile.c rstat.c siman.c siman_tsp.c sortsmall.c specfun.c \ + specfun_e.c spmatrix.c stat.c statsort.c sum.c vector.c \ + vectorr.c vectorview.c vectorw.c +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +DATA = $(dist_noinst_DATA) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +GSLCBLAS_LDFLAGS = @GSLCBLAS_LDFLAGS@ +GSL_CFLAGS = @GSL_CFLAGS@ +GSL_LDFLAGS = @GSL_LDFLAGS@ +GSL_LIBADD = @GSL_LIBADD@ +GSL_LIBM = @GSL_LIBM@ +GSL_LIBS = @GSL_LIBS@ +GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ +GSL_LT_VERSION = @GSL_LT_VERSION@ +GSL_MAJOR_VERSION = @GSL_MAJOR_VERSION@ +GSL_MINOR_VERSION = @GSL_MINOR_VERSION@ +HAVE_AIX_IEEE_INTERFACE = @HAVE_AIX_IEEE_INTERFACE@ +HAVE_DARWIN86_IEEE_INTERFACE = @HAVE_DARWIN86_IEEE_INTERFACE@ +HAVE_DARWIN_IEEE_INTERFACE = @HAVE_DARWIN_IEEE_INTERFACE@ +HAVE_FREEBSD_IEEE_INTERFACE = @HAVE_FREEBSD_IEEE_INTERFACE@ +HAVE_GNUM68K_IEEE_INTERFACE = @HAVE_GNUM68K_IEEE_INTERFACE@ +HAVE_GNUPPC_IEEE_INTERFACE = @HAVE_GNUPPC_IEEE_INTERFACE@ +HAVE_GNUSPARC_IEEE_INTERFACE = @HAVE_GNUSPARC_IEEE_INTERFACE@ +HAVE_GNUX86_IEEE_INTERFACE = @HAVE_GNUX86_IEEE_INTERFACE@ +HAVE_HPUX11_IEEE_INTERFACE = @HAVE_HPUX11_IEEE_INTERFACE@ +HAVE_HPUX_IEEE_INTERFACE = @HAVE_HPUX_IEEE_INTERFACE@ +HAVE_IRIX_IEEE_INTERFACE = @HAVE_IRIX_IEEE_INTERFACE@ +HAVE_NETBSD_IEEE_INTERFACE = @HAVE_NETBSD_IEEE_INTERFACE@ +HAVE_OPENBSD_IEEE_INTERFACE = @HAVE_OPENBSD_IEEE_INTERFACE@ +HAVE_OS2EMX_IEEE_INTERFACE = @HAVE_OS2EMX_IEEE_INTERFACE@ +HAVE_SOLARIS_IEEE_INTERFACE = @HAVE_SOLARIS_IEEE_INTERFACE@ +HAVE_SUNOS4_IEEE_INTERFACE = @HAVE_SUNOS4_IEEE_INTERFACE@ +HAVE_TRU64_IEEE_INTERFACE = @HAVE_TRU64_IEEE_INTERFACE@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBM = @LIBM@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +examples_src = blas.c block.c cblas.c cdf.c cheb.c combination.c multiset.c const.c demo_fn.c diff.c eigen.c fft.c fftmr.c fftreal.c filt_edge.c fitting.c fitting2.c fitting3.c fitreg.c fitreg2.c gaussfilt.c gaussfilt2.c histogram.c histogram2d.c ieee.c ieeeround.c impulse.c integration.c integration2.c interp.c interp2d.c intro.c linalglu.c largefit.c matrix.c matrixw.c min.c monte.c movstat1.c movstat2.c movstat3.c ntupler.c ntuplew.c ode-initval.c odefixed.c permseq.c permshuffle.c polyroots.c qrng.c randpoisson.c randwalk.c rng.c rngunif.c robfit.c rootnewt.c roots.c siman.c siman_tsp.c sortsmall.c specfun.c specfun_e.c rstat.c rquantile.c stat.c statsort.c sum.c vector.c vectorr.c vectorview.c vectorw.c demo_fn.h dwt.c nlfit.c nlfit2.c nlfit2b.c nlfit3.c interpp.c eigen_nonsymm.c bspline.c multimin.c multiminfn.c nmsimplex.c ode-initval-low-level.c poisson.c interp_compare.c spmatrix.c +examples_txt = blas.txt block.txt bspline.txt cblas.txt cdf.txt cheb.txt combination.txt const.txt diff.txt dwt.txt eigen_nonsymm.txt eigen.txt fftmr.txt fftreal.txt fft.txt fitreg.txt fitreg2.txt filt_edge.txt fitting2.txt fitting.txt gaussfilt.txt gaussfilt2.txt histogram2d.txt ieeeround.txt ieee.txt impulse.txt integration.txt integration2a.txt integration2b.txt interp2d.txt interp_compare.txt interpp.txt interp.txt intro.txt largefit.txt largefit2.txt linalglu.txt matrix.txt matrixw.txt min.txt monte.txt movstat1.txt movstat2.txt movstat3.txt multimin.txt multiset.txt nlfit.txt nlfit2.txt nlfit3.txt nmsimplex.txt ntuple.txt ode-initval.txt permseq.txt permshuffle.txt poisson.txt polyroots.txt qrng.txt randpoisson2.txt randpoisson.txt randwalk.txt rng.txt rngunif.txt rngunif2.txt robfit.txt rootnewt.txt roots.txt rquantile.txt rstat.txt siman.txt siman_tsp.txt sortsmall.txt specfun.txt specfun_e.txt spmatrix.txt statsort.txt stat.txt sum.txt vectorr.txt vectorview.txt +dist_noinst_DATA = $(examples_src) $(examples_txt) +LDADD = ../../libgsl.la ../../cblas/libgslcblas.la +AM_DEFAULT_SOURCE_EXT = .c +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/examples/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu doc/examples/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +blas$(EXEEXT): $(blas_OBJECTS) $(blas_DEPENDENCIES) $(EXTRA_blas_DEPENDENCIES) + @rm -f blas$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(blas_OBJECTS) $(blas_LDADD) $(LIBS) + +block$(EXEEXT): $(block_OBJECTS) $(block_DEPENDENCIES) $(EXTRA_block_DEPENDENCIES) + @rm -f block$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(block_OBJECTS) $(block_LDADD) $(LIBS) + +bspline$(EXEEXT): $(bspline_OBJECTS) $(bspline_DEPENDENCIES) $(EXTRA_bspline_DEPENDENCIES) + @rm -f bspline$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(bspline_OBJECTS) $(bspline_LDADD) $(LIBS) + +cblas$(EXEEXT): $(cblas_OBJECTS) $(cblas_DEPENDENCIES) $(EXTRA_cblas_DEPENDENCIES) + @rm -f cblas$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(cblas_OBJECTS) $(cblas_LDADD) $(LIBS) + +cdf$(EXEEXT): $(cdf_OBJECTS) $(cdf_DEPENDENCIES) $(EXTRA_cdf_DEPENDENCIES) + @rm -f cdf$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(cdf_OBJECTS) $(cdf_LDADD) $(LIBS) + +cheb$(EXEEXT): $(cheb_OBJECTS) $(cheb_DEPENDENCIES) $(EXTRA_cheb_DEPENDENCIES) + @rm -f cheb$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(cheb_OBJECTS) $(cheb_LDADD) $(LIBS) + +combination$(EXEEXT): $(combination_OBJECTS) $(combination_DEPENDENCIES) $(EXTRA_combination_DEPENDENCIES) + @rm -f combination$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(combination_OBJECTS) $(combination_LDADD) $(LIBS) + +const$(EXEEXT): $(const_OBJECTS) $(const_DEPENDENCIES) $(EXTRA_const_DEPENDENCIES) + @rm -f const$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(const_OBJECTS) $(const_LDADD) $(LIBS) + +diff$(EXEEXT): $(diff_OBJECTS) $(diff_DEPENDENCIES) $(EXTRA_diff_DEPENDENCIES) + @rm -f diff$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(diff_OBJECTS) $(diff_LDADD) $(LIBS) + +dwt$(EXEEXT): $(dwt_OBJECTS) $(dwt_DEPENDENCIES) $(EXTRA_dwt_DEPENDENCIES) + @rm -f dwt$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(dwt_OBJECTS) $(dwt_LDADD) $(LIBS) + +eigen$(EXEEXT): $(eigen_OBJECTS) $(eigen_DEPENDENCIES) $(EXTRA_eigen_DEPENDENCIES) + @rm -f eigen$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(eigen_OBJECTS) $(eigen_LDADD) $(LIBS) + +eigen_nonsymm$(EXEEXT): $(eigen_nonsymm_OBJECTS) $(eigen_nonsymm_DEPENDENCIES) $(EXTRA_eigen_nonsymm_DEPENDENCIES) + @rm -f eigen_nonsymm$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(eigen_nonsymm_OBJECTS) $(eigen_nonsymm_LDADD) $(LIBS) + +fft$(EXEEXT): $(fft_OBJECTS) $(fft_DEPENDENCIES) $(EXTRA_fft_DEPENDENCIES) + @rm -f fft$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(fft_OBJECTS) $(fft_LDADD) $(LIBS) + +fftmr$(EXEEXT): $(fftmr_OBJECTS) $(fftmr_DEPENDENCIES) $(EXTRA_fftmr_DEPENDENCIES) + @rm -f fftmr$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(fftmr_OBJECTS) $(fftmr_LDADD) $(LIBS) + +fftreal$(EXEEXT): $(fftreal_OBJECTS) $(fftreal_DEPENDENCIES) $(EXTRA_fftreal_DEPENDENCIES) + @rm -f fftreal$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(fftreal_OBJECTS) $(fftreal_LDADD) $(LIBS) + +filt_edge$(EXEEXT): $(filt_edge_OBJECTS) $(filt_edge_DEPENDENCIES) $(EXTRA_filt_edge_DEPENDENCIES) + @rm -f filt_edge$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(filt_edge_OBJECTS) $(filt_edge_LDADD) $(LIBS) + +fitreg$(EXEEXT): $(fitreg_OBJECTS) $(fitreg_DEPENDENCIES) $(EXTRA_fitreg_DEPENDENCIES) + @rm -f fitreg$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(fitreg_OBJECTS) $(fitreg_LDADD) $(LIBS) + +fitreg2$(EXEEXT): $(fitreg2_OBJECTS) $(fitreg2_DEPENDENCIES) $(EXTRA_fitreg2_DEPENDENCIES) + @rm -f fitreg2$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(fitreg2_OBJECTS) $(fitreg2_LDADD) $(LIBS) + +fitting$(EXEEXT): $(fitting_OBJECTS) $(fitting_DEPENDENCIES) $(EXTRA_fitting_DEPENDENCIES) + @rm -f fitting$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(fitting_OBJECTS) $(fitting_LDADD) $(LIBS) + +fitting2$(EXEEXT): $(fitting2_OBJECTS) $(fitting2_DEPENDENCIES) $(EXTRA_fitting2_DEPENDENCIES) + @rm -f fitting2$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(fitting2_OBJECTS) $(fitting2_LDADD) $(LIBS) + +fitting3$(EXEEXT): $(fitting3_OBJECTS) $(fitting3_DEPENDENCIES) $(EXTRA_fitting3_DEPENDENCIES) + @rm -f fitting3$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(fitting3_OBJECTS) $(fitting3_LDADD) $(LIBS) + +gaussfilt$(EXEEXT): $(gaussfilt_OBJECTS) $(gaussfilt_DEPENDENCIES) $(EXTRA_gaussfilt_DEPENDENCIES) + @rm -f gaussfilt$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(gaussfilt_OBJECTS) $(gaussfilt_LDADD) $(LIBS) + +gaussfilt2$(EXEEXT): $(gaussfilt2_OBJECTS) $(gaussfilt2_DEPENDENCIES) $(EXTRA_gaussfilt2_DEPENDENCIES) + @rm -f gaussfilt2$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(gaussfilt2_OBJECTS) $(gaussfilt2_LDADD) $(LIBS) + +histogram$(EXEEXT): $(histogram_OBJECTS) $(histogram_DEPENDENCIES) $(EXTRA_histogram_DEPENDENCIES) + @rm -f histogram$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(histogram_OBJECTS) $(histogram_LDADD) $(LIBS) + +histogram2d$(EXEEXT): $(histogram2d_OBJECTS) $(histogram2d_DEPENDENCIES) $(EXTRA_histogram2d_DEPENDENCIES) + @rm -f histogram2d$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(histogram2d_OBJECTS) $(histogram2d_LDADD) $(LIBS) + +ieee$(EXEEXT): $(ieee_OBJECTS) $(ieee_DEPENDENCIES) $(EXTRA_ieee_DEPENDENCIES) + @rm -f ieee$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(ieee_OBJECTS) $(ieee_LDADD) $(LIBS) + +ieeeround$(EXEEXT): $(ieeeround_OBJECTS) $(ieeeround_DEPENDENCIES) $(EXTRA_ieeeround_DEPENDENCIES) + @rm -f ieeeround$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(ieeeround_OBJECTS) $(ieeeround_LDADD) $(LIBS) + +impulse$(EXEEXT): $(impulse_OBJECTS) $(impulse_DEPENDENCIES) $(EXTRA_impulse_DEPENDENCIES) + @rm -f impulse$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(impulse_OBJECTS) $(impulse_LDADD) $(LIBS) + +integration$(EXEEXT): $(integration_OBJECTS) $(integration_DEPENDENCIES) $(EXTRA_integration_DEPENDENCIES) + @rm -f integration$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(integration_OBJECTS) $(integration_LDADD) $(LIBS) + +integration2$(EXEEXT): $(integration2_OBJECTS) $(integration2_DEPENDENCIES) $(EXTRA_integration2_DEPENDENCIES) + @rm -f integration2$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(integration2_OBJECTS) $(integration2_LDADD) $(LIBS) + +interp$(EXEEXT): $(interp_OBJECTS) $(interp_DEPENDENCIES) $(EXTRA_interp_DEPENDENCIES) + @rm -f interp$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(interp_OBJECTS) $(interp_LDADD) $(LIBS) + +interp2d$(EXEEXT): $(interp2d_OBJECTS) $(interp2d_DEPENDENCIES) $(EXTRA_interp2d_DEPENDENCIES) + @rm -f interp2d$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(interp2d_OBJECTS) $(interp2d_LDADD) $(LIBS) + +interp_compare$(EXEEXT): $(interp_compare_OBJECTS) $(interp_compare_DEPENDENCIES) $(EXTRA_interp_compare_DEPENDENCIES) + @rm -f interp_compare$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(interp_compare_OBJECTS) $(interp_compare_LDADD) $(LIBS) + +interpp$(EXEEXT): $(interpp_OBJECTS) $(interpp_DEPENDENCIES) $(EXTRA_interpp_DEPENDENCIES) + @rm -f interpp$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(interpp_OBJECTS) $(interpp_LDADD) $(LIBS) + +intro$(EXEEXT): $(intro_OBJECTS) $(intro_DEPENDENCIES) $(EXTRA_intro_DEPENDENCIES) + @rm -f intro$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(intro_OBJECTS) $(intro_LDADD) $(LIBS) + +largefit$(EXEEXT): $(largefit_OBJECTS) $(largefit_DEPENDENCIES) $(EXTRA_largefit_DEPENDENCIES) + @rm -f largefit$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(largefit_OBJECTS) $(largefit_LDADD) $(LIBS) + +linalglu$(EXEEXT): $(linalglu_OBJECTS) $(linalglu_DEPENDENCIES) $(EXTRA_linalglu_DEPENDENCIES) + @rm -f linalglu$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(linalglu_OBJECTS) $(linalglu_LDADD) $(LIBS) + +matrix$(EXEEXT): $(matrix_OBJECTS) $(matrix_DEPENDENCIES) $(EXTRA_matrix_DEPENDENCIES) + @rm -f matrix$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(matrix_OBJECTS) $(matrix_LDADD) $(LIBS) + +matrixw$(EXEEXT): $(matrixw_OBJECTS) $(matrixw_DEPENDENCIES) $(EXTRA_matrixw_DEPENDENCIES) + @rm -f matrixw$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(matrixw_OBJECTS) $(matrixw_LDADD) $(LIBS) + +min$(EXEEXT): $(min_OBJECTS) $(min_DEPENDENCIES) $(EXTRA_min_DEPENDENCIES) + @rm -f min$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(min_OBJECTS) $(min_LDADD) $(LIBS) + +monte$(EXEEXT): $(monte_OBJECTS) $(monte_DEPENDENCIES) $(EXTRA_monte_DEPENDENCIES) + @rm -f monte$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(monte_OBJECTS) $(monte_LDADD) $(LIBS) + +movstat1$(EXEEXT): $(movstat1_OBJECTS) $(movstat1_DEPENDENCIES) $(EXTRA_movstat1_DEPENDENCIES) + @rm -f movstat1$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(movstat1_OBJECTS) $(movstat1_LDADD) $(LIBS) + +movstat2$(EXEEXT): $(movstat2_OBJECTS) $(movstat2_DEPENDENCIES) $(EXTRA_movstat2_DEPENDENCIES) + @rm -f movstat2$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(movstat2_OBJECTS) $(movstat2_LDADD) $(LIBS) + +movstat3$(EXEEXT): $(movstat3_OBJECTS) $(movstat3_DEPENDENCIES) $(EXTRA_movstat3_DEPENDENCIES) + @rm -f movstat3$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(movstat3_OBJECTS) $(movstat3_LDADD) $(LIBS) + +multiset$(EXEEXT): $(multiset_OBJECTS) $(multiset_DEPENDENCIES) $(EXTRA_multiset_DEPENDENCIES) + @rm -f multiset$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(multiset_OBJECTS) $(multiset_LDADD) $(LIBS) + +nlfit$(EXEEXT): $(nlfit_OBJECTS) $(nlfit_DEPENDENCIES) $(EXTRA_nlfit_DEPENDENCIES) + @rm -f nlfit$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(nlfit_OBJECTS) $(nlfit_LDADD) $(LIBS) + +nlfit2$(EXEEXT): $(nlfit2_OBJECTS) $(nlfit2_DEPENDENCIES) $(EXTRA_nlfit2_DEPENDENCIES) + @rm -f nlfit2$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(nlfit2_OBJECTS) $(nlfit2_LDADD) $(LIBS) + +nlfit2b$(EXEEXT): $(nlfit2b_OBJECTS) $(nlfit2b_DEPENDENCIES) $(EXTRA_nlfit2b_DEPENDENCIES) + @rm -f nlfit2b$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(nlfit2b_OBJECTS) $(nlfit2b_LDADD) $(LIBS) + +nlfit3$(EXEEXT): $(nlfit3_OBJECTS) $(nlfit3_DEPENDENCIES) $(EXTRA_nlfit3_DEPENDENCIES) + @rm -f nlfit3$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(nlfit3_OBJECTS) $(nlfit3_LDADD) $(LIBS) + +nlfit4$(EXEEXT): $(nlfit4_OBJECTS) $(nlfit4_DEPENDENCIES) $(EXTRA_nlfit4_DEPENDENCIES) + @rm -f nlfit4$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(nlfit4_OBJECTS) $(nlfit4_LDADD) $(LIBS) + +ntupler$(EXEEXT): $(ntupler_OBJECTS) $(ntupler_DEPENDENCIES) $(EXTRA_ntupler_DEPENDENCIES) + @rm -f ntupler$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(ntupler_OBJECTS) $(ntupler_LDADD) $(LIBS) + +ntuplew$(EXEEXT): $(ntuplew_OBJECTS) $(ntuplew_DEPENDENCIES) $(EXTRA_ntuplew_DEPENDENCIES) + @rm -f ntuplew$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(ntuplew_OBJECTS) $(ntuplew_LDADD) $(LIBS) + +ode-initval$(EXEEXT): $(ode_initval_OBJECTS) $(ode_initval_DEPENDENCIES) $(EXTRA_ode_initval_DEPENDENCIES) + @rm -f ode-initval$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(ode_initval_OBJECTS) $(ode_initval_LDADD) $(LIBS) + +permseq$(EXEEXT): $(permseq_OBJECTS) $(permseq_DEPENDENCIES) $(EXTRA_permseq_DEPENDENCIES) + @rm -f permseq$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(permseq_OBJECTS) $(permseq_LDADD) $(LIBS) + +permshuffle$(EXEEXT): $(permshuffle_OBJECTS) $(permshuffle_DEPENDENCIES) $(EXTRA_permshuffle_DEPENDENCIES) + @rm -f permshuffle$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(permshuffle_OBJECTS) $(permshuffle_LDADD) $(LIBS) + +poisson$(EXEEXT): $(poisson_OBJECTS) $(poisson_DEPENDENCIES) $(EXTRA_poisson_DEPENDENCIES) + @rm -f poisson$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(poisson_OBJECTS) $(poisson_LDADD) $(LIBS) + +polyroots$(EXEEXT): $(polyroots_OBJECTS) $(polyroots_DEPENDENCIES) $(EXTRA_polyroots_DEPENDENCIES) + @rm -f polyroots$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(polyroots_OBJECTS) $(polyroots_LDADD) $(LIBS) + +qrng$(EXEEXT): $(qrng_OBJECTS) $(qrng_DEPENDENCIES) $(EXTRA_qrng_DEPENDENCIES) + @rm -f qrng$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(qrng_OBJECTS) $(qrng_LDADD) $(LIBS) + +randpoisson$(EXEEXT): $(randpoisson_OBJECTS) $(randpoisson_DEPENDENCIES) $(EXTRA_randpoisson_DEPENDENCIES) + @rm -f randpoisson$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(randpoisson_OBJECTS) $(randpoisson_LDADD) $(LIBS) + +randwalk$(EXEEXT): $(randwalk_OBJECTS) $(randwalk_DEPENDENCIES) $(EXTRA_randwalk_DEPENDENCIES) + @rm -f randwalk$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(randwalk_OBJECTS) $(randwalk_LDADD) $(LIBS) + +rng$(EXEEXT): $(rng_OBJECTS) $(rng_DEPENDENCIES) $(EXTRA_rng_DEPENDENCIES) + @rm -f rng$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(rng_OBJECTS) $(rng_LDADD) $(LIBS) + +rngunif$(EXEEXT): $(rngunif_OBJECTS) $(rngunif_DEPENDENCIES) $(EXTRA_rngunif_DEPENDENCIES) + @rm -f rngunif$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(rngunif_OBJECTS) $(rngunif_LDADD) $(LIBS) + +robfit$(EXEEXT): $(robfit_OBJECTS) $(robfit_DEPENDENCIES) $(EXTRA_robfit_DEPENDENCIES) + @rm -f robfit$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(robfit_OBJECTS) $(robfit_LDADD) $(LIBS) + +rootnewt$(EXEEXT): $(rootnewt_OBJECTS) $(rootnewt_DEPENDENCIES) $(EXTRA_rootnewt_DEPENDENCIES) + @rm -f rootnewt$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(rootnewt_OBJECTS) $(rootnewt_LDADD) $(LIBS) + +roots$(EXEEXT): $(roots_OBJECTS) $(roots_DEPENDENCIES) $(EXTRA_roots_DEPENDENCIES) + @rm -f roots$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(roots_OBJECTS) $(roots_LDADD) $(LIBS) + +rquantile$(EXEEXT): $(rquantile_OBJECTS) $(rquantile_DEPENDENCIES) $(EXTRA_rquantile_DEPENDENCIES) + @rm -f rquantile$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(rquantile_OBJECTS) $(rquantile_LDADD) $(LIBS) + +rstat$(EXEEXT): $(rstat_OBJECTS) $(rstat_DEPENDENCIES) $(EXTRA_rstat_DEPENDENCIES) + @rm -f rstat$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(rstat_OBJECTS) $(rstat_LDADD) $(LIBS) + +siman$(EXEEXT): $(siman_OBJECTS) $(siman_DEPENDENCIES) $(EXTRA_siman_DEPENDENCIES) + @rm -f siman$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(siman_OBJECTS) $(siman_LDADD) $(LIBS) + +siman_tsp$(EXEEXT): $(siman_tsp_OBJECTS) $(siman_tsp_DEPENDENCIES) $(EXTRA_siman_tsp_DEPENDENCIES) + @rm -f siman_tsp$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(siman_tsp_OBJECTS) $(siman_tsp_LDADD) $(LIBS) + +sortsmall$(EXEEXT): $(sortsmall_OBJECTS) $(sortsmall_DEPENDENCIES) $(EXTRA_sortsmall_DEPENDENCIES) + @rm -f sortsmall$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(sortsmall_OBJECTS) $(sortsmall_LDADD) $(LIBS) + +specfun$(EXEEXT): $(specfun_OBJECTS) $(specfun_DEPENDENCIES) $(EXTRA_specfun_DEPENDENCIES) + @rm -f specfun$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(specfun_OBJECTS) $(specfun_LDADD) $(LIBS) + +specfun_e$(EXEEXT): $(specfun_e_OBJECTS) $(specfun_e_DEPENDENCIES) $(EXTRA_specfun_e_DEPENDENCIES) + @rm -f specfun_e$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(specfun_e_OBJECTS) $(specfun_e_LDADD) $(LIBS) + +spmatrix$(EXEEXT): $(spmatrix_OBJECTS) $(spmatrix_DEPENDENCIES) $(EXTRA_spmatrix_DEPENDENCIES) + @rm -f spmatrix$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(spmatrix_OBJECTS) $(spmatrix_LDADD) $(LIBS) + +stat$(EXEEXT): $(stat_OBJECTS) $(stat_DEPENDENCIES) $(EXTRA_stat_DEPENDENCIES) + @rm -f stat$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(stat_OBJECTS) $(stat_LDADD) $(LIBS) + +statsort$(EXEEXT): $(statsort_OBJECTS) $(statsort_DEPENDENCIES) $(EXTRA_statsort_DEPENDENCIES) + @rm -f statsort$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(statsort_OBJECTS) $(statsort_LDADD) $(LIBS) + +sum$(EXEEXT): $(sum_OBJECTS) $(sum_DEPENDENCIES) $(EXTRA_sum_DEPENDENCIES) + @rm -f sum$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(sum_OBJECTS) $(sum_LDADD) $(LIBS) + +vector$(EXEEXT): $(vector_OBJECTS) $(vector_DEPENDENCIES) $(EXTRA_vector_DEPENDENCIES) + @rm -f vector$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(vector_OBJECTS) $(vector_LDADD) $(LIBS) + +vectorr$(EXEEXT): $(vectorr_OBJECTS) $(vectorr_DEPENDENCIES) $(EXTRA_vectorr_DEPENDENCIES) + @rm -f vectorr$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(vectorr_OBJECTS) $(vectorr_LDADD) $(LIBS) + +vectorview$(EXEEXT): $(vectorview_OBJECTS) $(vectorview_DEPENDENCIES) $(EXTRA_vectorview_DEPENDENCIES) + @rm -f vectorview$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(vectorview_OBJECTS) $(vectorview_LDADD) $(LIBS) + +vectorw$(EXEEXT): $(vectorw_OBJECTS) $(vectorw_DEPENDENCIES) $(EXTRA_vectorw_DEPENDENCIES) + @rm -f vectorw$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(vectorw_OBJECTS) $(vectorw_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/blas.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/block.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bspline.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cblas.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cdf.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cheb.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/combination.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/const.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/diff.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwt.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eigen.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eigen_nonsymm.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fft.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fftmr.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fftreal.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/filt_edge.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fitreg.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fitreg2.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fitting.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fitting2.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fitting3.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gaussfilt.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gaussfilt2.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/histogram.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/histogram2d.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ieee.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ieeeround.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/impulse.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/integration.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/integration2.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/interp.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/interp2d.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/interp_compare.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/interpp.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/intro.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/largefit.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/linalglu.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/matrix.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/matrixw.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/min.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/monte.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/movstat1.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/movstat2.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/movstat3.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/multiset.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlfit.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlfit2.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlfit2b.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlfit3.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlfit4.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ntupler.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ntuplew.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ode-initval.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/permseq.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/permshuffle.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/poisson.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/polyroots.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/qrng.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/randpoisson.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/randwalk.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rng.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rngunif.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/robfit.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rootnewt.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/roots.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rquantile.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rstat.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/siman.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/siman_tsp.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sortsmall.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/specfun.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/specfun_e.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/spmatrix.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stat.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/statsort.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sum.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vector.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vectorr.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vectorview.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vectorw.Po@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) +check: check-am +all-am: Makefile $(DATA) +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ + mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool cscopelist-am \ + ctags ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags tags-am uninstall uninstall-am + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gsl-2.5/doc/examples/blas b/gsl-2.5/doc/examples/blas new file mode 100755 index 00000000..eac3a496 --- /dev/null +++ b/gsl-2.5/doc/examples/blas @@ -0,0 +1,228 @@ +#! /bin/sh + +# blas - temporary wrapper script for .libs/blas +# Generated by libtool (GNU libtool) 2.4.2 +# +# The blas program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s/\([`"$\\]\)/\\\1/g' + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command="(cd /home/groups/kipac/chto/package/gsl/gsl-2.5/doc/examples; LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LIBRARY_PATH; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; LD_LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/fftw/include:/home/users/chto/lib/fftw/lib:/home/users/chto/lib/healpix/lib:/home/users/chto/lib/namaster/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/include:/home/users/chto/cpp/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LD_LIBRARY_PATH; PATH=/share/software/user/open/curl/7.54.0/bin:/share/software/user/open/libressl/2.5.3/bin:/home/users/chto/lib/cfitsio:/home/users/chto/lib/cfitsio/include:/home/users/chto/lib:/home/users/chto/bin/bin:/home/users/chto/bin:/home/users/chto/.texlive/bin/x86_64-linux:/home/groups/kipac/chto/anaconda2/envs/newenv3/bin:/home/users/chto/.local/bin/include:/home/users/chto/.local/bin/lib:/home/users/chto/.local/bin:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/bin64:/share/software/user/open/fftw/3.3.6/bin:/home/groups/kipac/chto/anaconda2/condabin:/share/software/user/restricted/ifort/2019/bin:/share/software/user/open/gsl/2.3/bin:/share/software/user/srcc/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/dell/srvadmin/bin:/opt/dell/srvadmin/iSM/bin:/home/users/chto/bin; export PATH; gcc -g -O2 -o \$progdir/\$file blas.o ../../.libs/libgsl.so ../../cblas/.libs/libgslcblas.so -lm -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/.libs -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/cblas/.libs -Wl,-rpath -Wl,/usr/local/lib)" + +# This environment variable determines our operation mode. +if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then + # install mode needs the following variables: + generated_by_libtool_version='2.4.2' + notinst_deplibs=' ../../libgsl.la ../../cblas/libgslcblas.la' +else + # When we are sourced in execute mode, $file and $ECHO are already set. + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + file="$0" + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + ECHO="printf %s\\n" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ which is used only on +# windows platforms, and (c) all begin with the string --lt- +# (application programs are unlikely to have options which match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's ../../libtool value, followed by no. +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=$0 + shift + for lt_opt + do + case "$lt_opt" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%/[^/]*$%%'` + test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=. + lt_dump_F=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%^.*/%%'` + cat "$lt_dump_D/$lt_dump_F" + exit 0 + ;; + --lt-*) + $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n "$lt_option_debug"; then + echo "blas:blas:${LINENO}: libtool wrapper (GNU libtool) 2.4.2" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + $ECHO "blas:blas:${LINENO}: newargv[$lt_dump_args_N]: $lt_arg" + lt_dump_args_N=`expr $lt_dump_args_N + 1` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ + + if test -n "$lt_option_debug"; then + $ECHO "blas:blas:${LINENO}: newargv[0]: $progdir/$program" 1>&2 + func_lt_dump_args ${1+"$@"} 1>&2 + fi + exec "$progdir/$program" ${1+"$@"} + + $ECHO "$0: cannot exec $program $*" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from $@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case " $* " in + *\ --lt-*) + for lt_wr_arg + do + case $lt_wr_arg in + --lt-*) ;; + *) set x "$@" "$lt_wr_arg"; shift;; + esac + shift + done ;; + esac + func_exec_program_core ${1+"$@"} +} + + # Parse options + func_parse_lt_options "$0" ${1+"$@"} + + # Find the directory that this script lives in. + thisdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + test "x$thisdir" = "x$file" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=`ls -ld "$file" | /usr/bin/sed -n 's/.*-> //p'` + while test -n "$file"; do + destdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + + # If there was a directory component, then change thisdir. + if test "x$destdir" != "x$file"; then + case "$destdir" in + [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;; + *) thisdir="$thisdir/$destdir" ;; + esac + fi + + file=`$ECHO "$file" | /usr/bin/sed 's%^.*/%%'` + file=`ls -ld "$thisdir/$file" | /usr/bin/sed -n 's/.*-> //p'` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no + if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then + # special case for '.' + if test "$thisdir" = "."; then + thisdir=`pwd` + fi + # remove .libs from thisdir + case "$thisdir" in + *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /usr/bin/sed 's%[\\/][^\\/]*$%%'` ;; + .libs ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=`cd "$thisdir" && pwd` + test -n "$absdir" && thisdir="$absdir" + + program=lt-'blas' + progdir="$thisdir/.libs" + + if test ! -f "$progdir/$program" || + { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /usr/bin/sed 1q`; \ + test "X$file" != "X$progdir/$program"; }; then + + file="$$-$program" + + if test ! -d "$progdir"; then + mkdir "$progdir" + else + rm -f "$progdir/$file" + fi + + # relink executable if necessary + if test -n "$relink_command"; then + if relink_command_output=`eval $relink_command 2>&1`; then : + else + printf %s\n "$relink_command_output" >&2 + rm -f "$progdir/$file" + exit 1 + fi + fi + + mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null || + { rm -f "$progdir/$program"; + mv -f "$progdir/$file" "$progdir/$program"; } + rm -f "$progdir/$file" + fi + + if test -f "$progdir/$program"; then + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + # Run the actual program with our arguments. + func_exec_program ${1+"$@"} + fi + else + # The program doesn't exist. + $ECHO "$0: error: \`$progdir/$program' does not exist" 1>&2 + $ECHO "This script is just a wrapper for $program." 1>&2 + $ECHO "See the libtool documentation for more information." 1>&2 + exit 1 + fi +fi diff --git a/gsl-2.5/doc/examples/blas.c b/gsl-2.5/doc/examples/blas.c new file mode 100644 index 00000000..ab4b39bd --- /dev/null +++ b/gsl-2.5/doc/examples/blas.c @@ -0,0 +1,31 @@ +#include +#include + +int +main (void) +{ + double a[] = { 0.11, 0.12, 0.13, + 0.21, 0.22, 0.23 }; + + double b[] = { 1011, 1012, + 1021, 1022, + 1031, 1032 }; + + double c[] = { 0.00, 0.00, + 0.00, 0.00 }; + + gsl_matrix_view A = gsl_matrix_view_array(a, 2, 3); + gsl_matrix_view B = gsl_matrix_view_array(b, 3, 2); + gsl_matrix_view C = gsl_matrix_view_array(c, 2, 2); + + /* Compute C = A B */ + + gsl_blas_dgemm (CblasNoTrans, CblasNoTrans, + 1.0, &A.matrix, &B.matrix, + 0.0, &C.matrix); + + printf ("[ %g, %g\n", c[0], c[1]); + printf (" %g, %g ]\n", c[2], c[3]); + + return 0; +} diff --git a/gsl-2.5/doc/examples/blas.txt b/gsl-2.5/doc/examples/blas.txt new file mode 100644 index 00000000..a0f51d74 --- /dev/null +++ b/gsl-2.5/doc/examples/blas.txt @@ -0,0 +1,2 @@ +[ 367.76, 368.12 + 674.06, 674.72 ] diff --git a/gsl-2.5/doc/examples/block b/gsl-2.5/doc/examples/block new file mode 100755 index 00000000..4630ab70 --- /dev/null +++ b/gsl-2.5/doc/examples/block @@ -0,0 +1,228 @@ +#! /bin/sh + +# block - temporary wrapper script for .libs/block +# Generated by libtool (GNU libtool) 2.4.2 +# +# The block program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s/\([`"$\\]\)/\\\1/g' + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command="(cd /home/groups/kipac/chto/package/gsl/gsl-2.5/doc/examples; LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LIBRARY_PATH; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; LD_LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/fftw/include:/home/users/chto/lib/fftw/lib:/home/users/chto/lib/healpix/lib:/home/users/chto/lib/namaster/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/include:/home/users/chto/cpp/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LD_LIBRARY_PATH; PATH=/share/software/user/open/curl/7.54.0/bin:/share/software/user/open/libressl/2.5.3/bin:/home/users/chto/lib/cfitsio:/home/users/chto/lib/cfitsio/include:/home/users/chto/lib:/home/users/chto/bin/bin:/home/users/chto/bin:/home/users/chto/.texlive/bin/x86_64-linux:/home/groups/kipac/chto/anaconda2/envs/newenv3/bin:/home/users/chto/.local/bin/include:/home/users/chto/.local/bin/lib:/home/users/chto/.local/bin:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/bin64:/share/software/user/open/fftw/3.3.6/bin:/home/groups/kipac/chto/anaconda2/condabin:/share/software/user/restricted/ifort/2019/bin:/share/software/user/open/gsl/2.3/bin:/share/software/user/srcc/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/dell/srvadmin/bin:/opt/dell/srvadmin/iSM/bin:/home/users/chto/bin; export PATH; gcc -g -O2 -o \$progdir/\$file block.o ../../.libs/libgsl.so ../../cblas/.libs/libgslcblas.so -lm -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/.libs -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/cblas/.libs -Wl,-rpath -Wl,/usr/local/lib)" + +# This environment variable determines our operation mode. +if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then + # install mode needs the following variables: + generated_by_libtool_version='2.4.2' + notinst_deplibs=' ../../libgsl.la ../../cblas/libgslcblas.la' +else + # When we are sourced in execute mode, $file and $ECHO are already set. + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + file="$0" + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + ECHO="printf %s\\n" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ which is used only on +# windows platforms, and (c) all begin with the string --lt- +# (application programs are unlikely to have options which match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's ../../libtool value, followed by no. +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=$0 + shift + for lt_opt + do + case "$lt_opt" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%/[^/]*$%%'` + test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=. + lt_dump_F=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%^.*/%%'` + cat "$lt_dump_D/$lt_dump_F" + exit 0 + ;; + --lt-*) + $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n "$lt_option_debug"; then + echo "block:block:${LINENO}: libtool wrapper (GNU libtool) 2.4.2" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + $ECHO "block:block:${LINENO}: newargv[$lt_dump_args_N]: $lt_arg" + lt_dump_args_N=`expr $lt_dump_args_N + 1` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ + + if test -n "$lt_option_debug"; then + $ECHO "block:block:${LINENO}: newargv[0]: $progdir/$program" 1>&2 + func_lt_dump_args ${1+"$@"} 1>&2 + fi + exec "$progdir/$program" ${1+"$@"} + + $ECHO "$0: cannot exec $program $*" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from $@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case " $* " in + *\ --lt-*) + for lt_wr_arg + do + case $lt_wr_arg in + --lt-*) ;; + *) set x "$@" "$lt_wr_arg"; shift;; + esac + shift + done ;; + esac + func_exec_program_core ${1+"$@"} +} + + # Parse options + func_parse_lt_options "$0" ${1+"$@"} + + # Find the directory that this script lives in. + thisdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + test "x$thisdir" = "x$file" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=`ls -ld "$file" | /usr/bin/sed -n 's/.*-> //p'` + while test -n "$file"; do + destdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + + # If there was a directory component, then change thisdir. + if test "x$destdir" != "x$file"; then + case "$destdir" in + [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;; + *) thisdir="$thisdir/$destdir" ;; + esac + fi + + file=`$ECHO "$file" | /usr/bin/sed 's%^.*/%%'` + file=`ls -ld "$thisdir/$file" | /usr/bin/sed -n 's/.*-> //p'` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no + if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then + # special case for '.' + if test "$thisdir" = "."; then + thisdir=`pwd` + fi + # remove .libs from thisdir + case "$thisdir" in + *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /usr/bin/sed 's%[\\/][^\\/]*$%%'` ;; + .libs ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=`cd "$thisdir" && pwd` + test -n "$absdir" && thisdir="$absdir" + + program=lt-'block' + progdir="$thisdir/.libs" + + if test ! -f "$progdir/$program" || + { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /usr/bin/sed 1q`; \ + test "X$file" != "X$progdir/$program"; }; then + + file="$$-$program" + + if test ! -d "$progdir"; then + mkdir "$progdir" + else + rm -f "$progdir/$file" + fi + + # relink executable if necessary + if test -n "$relink_command"; then + if relink_command_output=`eval $relink_command 2>&1`; then : + else + printf %s\n "$relink_command_output" >&2 + rm -f "$progdir/$file" + exit 1 + fi + fi + + mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null || + { rm -f "$progdir/$program"; + mv -f "$progdir/$file" "$progdir/$program"; } + rm -f "$progdir/$file" + fi + + if test -f "$progdir/$program"; then + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + # Run the actual program with our arguments. + func_exec_program ${1+"$@"} + fi + else + # The program doesn't exist. + $ECHO "$0: error: \`$progdir/$program' does not exist" 1>&2 + $ECHO "This script is just a wrapper for $program." 1>&2 + $ECHO "See the libtool documentation for more information." 1>&2 + exit 1 + fi +fi diff --git a/gsl-2.5/doc/examples/block.c b/gsl-2.5/doc/examples/block.c new file mode 100644 index 00000000..ca6e80e3 --- /dev/null +++ b/gsl-2.5/doc/examples/block.c @@ -0,0 +1,14 @@ +#include +#include + +int +main (void) +{ + gsl_block * b = gsl_block_alloc (100); + + printf ("length of block = %zu\n", b->size); + printf ("block data address = %p\n", b->data); + + gsl_block_free (b); + return 0; +} diff --git a/gsl-2.5/doc/examples/block.txt b/gsl-2.5/doc/examples/block.txt new file mode 100644 index 00000000..1f84cd01 --- /dev/null +++ b/gsl-2.5/doc/examples/block.txt @@ -0,0 +1,2 @@ +length of block = 100 +block data address = 0x804b0d8 diff --git a/gsl-2.5/doc/examples/bspline b/gsl-2.5/doc/examples/bspline new file mode 100755 index 00000000..22c6ceec --- /dev/null +++ b/gsl-2.5/doc/examples/bspline @@ -0,0 +1,228 @@ +#! /bin/sh + +# bspline - temporary wrapper script for .libs/bspline +# Generated by libtool (GNU libtool) 2.4.2 +# +# The bspline program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s/\([`"$\\]\)/\\\1/g' + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command="(cd /home/groups/kipac/chto/package/gsl/gsl-2.5/doc/examples; LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LIBRARY_PATH; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; LD_LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/fftw/include:/home/users/chto/lib/fftw/lib:/home/users/chto/lib/healpix/lib:/home/users/chto/lib/namaster/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/include:/home/users/chto/cpp/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LD_LIBRARY_PATH; PATH=/share/software/user/open/curl/7.54.0/bin:/share/software/user/open/libressl/2.5.3/bin:/home/users/chto/lib/cfitsio:/home/users/chto/lib/cfitsio/include:/home/users/chto/lib:/home/users/chto/bin/bin:/home/users/chto/bin:/home/users/chto/.texlive/bin/x86_64-linux:/home/groups/kipac/chto/anaconda2/envs/newenv3/bin:/home/users/chto/.local/bin/include:/home/users/chto/.local/bin/lib:/home/users/chto/.local/bin:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/bin64:/share/software/user/open/fftw/3.3.6/bin:/home/groups/kipac/chto/anaconda2/condabin:/share/software/user/restricted/ifort/2019/bin:/share/software/user/open/gsl/2.3/bin:/share/software/user/srcc/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/dell/srvadmin/bin:/opt/dell/srvadmin/iSM/bin:/home/users/chto/bin; export PATH; gcc -g -O2 -o \$progdir/\$file bspline.o ../../.libs/libgsl.so ../../cblas/.libs/libgslcblas.so -lm -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/.libs -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/cblas/.libs -Wl,-rpath -Wl,/usr/local/lib)" + +# This environment variable determines our operation mode. +if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then + # install mode needs the following variables: + generated_by_libtool_version='2.4.2' + notinst_deplibs=' ../../libgsl.la ../../cblas/libgslcblas.la' +else + # When we are sourced in execute mode, $file and $ECHO are already set. + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + file="$0" + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + ECHO="printf %s\\n" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ which is used only on +# windows platforms, and (c) all begin with the string --lt- +# (application programs are unlikely to have options which match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's ../../libtool value, followed by no. +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=$0 + shift + for lt_opt + do + case "$lt_opt" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%/[^/]*$%%'` + test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=. + lt_dump_F=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%^.*/%%'` + cat "$lt_dump_D/$lt_dump_F" + exit 0 + ;; + --lt-*) + $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n "$lt_option_debug"; then + echo "bspline:bspline:${LINENO}: libtool wrapper (GNU libtool) 2.4.2" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + $ECHO "bspline:bspline:${LINENO}: newargv[$lt_dump_args_N]: $lt_arg" + lt_dump_args_N=`expr $lt_dump_args_N + 1` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ + + if test -n "$lt_option_debug"; then + $ECHO "bspline:bspline:${LINENO}: newargv[0]: $progdir/$program" 1>&2 + func_lt_dump_args ${1+"$@"} 1>&2 + fi + exec "$progdir/$program" ${1+"$@"} + + $ECHO "$0: cannot exec $program $*" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from $@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case " $* " in + *\ --lt-*) + for lt_wr_arg + do + case $lt_wr_arg in + --lt-*) ;; + *) set x "$@" "$lt_wr_arg"; shift;; + esac + shift + done ;; + esac + func_exec_program_core ${1+"$@"} +} + + # Parse options + func_parse_lt_options "$0" ${1+"$@"} + + # Find the directory that this script lives in. + thisdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + test "x$thisdir" = "x$file" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=`ls -ld "$file" | /usr/bin/sed -n 's/.*-> //p'` + while test -n "$file"; do + destdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + + # If there was a directory component, then change thisdir. + if test "x$destdir" != "x$file"; then + case "$destdir" in + [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;; + *) thisdir="$thisdir/$destdir" ;; + esac + fi + + file=`$ECHO "$file" | /usr/bin/sed 's%^.*/%%'` + file=`ls -ld "$thisdir/$file" | /usr/bin/sed -n 's/.*-> //p'` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no + if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then + # special case for '.' + if test "$thisdir" = "."; then + thisdir=`pwd` + fi + # remove .libs from thisdir + case "$thisdir" in + *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /usr/bin/sed 's%[\\/][^\\/]*$%%'` ;; + .libs ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=`cd "$thisdir" && pwd` + test -n "$absdir" && thisdir="$absdir" + + program=lt-'bspline' + progdir="$thisdir/.libs" + + if test ! -f "$progdir/$program" || + { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /usr/bin/sed 1q`; \ + test "X$file" != "X$progdir/$program"; }; then + + file="$$-$program" + + if test ! -d "$progdir"; then + mkdir "$progdir" + else + rm -f "$progdir/$file" + fi + + # relink executable if necessary + if test -n "$relink_command"; then + if relink_command_output=`eval $relink_command 2>&1`; then : + else + printf %s\n "$relink_command_output" >&2 + rm -f "$progdir/$file" + exit 1 + fi + fi + + mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null || + { rm -f "$progdir/$program"; + mv -f "$progdir/$file" "$progdir/$program"; } + rm -f "$progdir/$file" + fi + + if test -f "$progdir/$program"; then + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + # Run the actual program with our arguments. + func_exec_program ${1+"$@"} + fi + else + # The program doesn't exist. + $ECHO "$0: error: \`$progdir/$program' does not exist" 1>&2 + $ECHO "This script is just a wrapper for $program." 1>&2 + $ECHO "See the libtool documentation for more information." 1>&2 + exit 1 + fi +fi diff --git a/gsl-2.5/doc/examples/bspline.c b/gsl-2.5/doc/examples/bspline.c new file mode 100644 index 00000000..311be68f --- /dev/null +++ b/gsl-2.5/doc/examples/bspline.c @@ -0,0 +1,124 @@ +#include +#include +#include +#include +#include +#include +#include +#include + +/* number of data points to fit */ +#define N 200 + +/* number of fit coefficients */ +#define NCOEFFS 12 + +/* nbreak = ncoeffs + 2 - k = ncoeffs - 2 since k = 4 */ +#define NBREAK (NCOEFFS - 2) + +int +main (void) +{ + const size_t n = N; + const size_t ncoeffs = NCOEFFS; + const size_t nbreak = NBREAK; + size_t i, j; + gsl_bspline_workspace *bw; + gsl_vector *B; + double dy; + gsl_rng *r; + gsl_vector *c, *w; + gsl_vector *x, *y; + gsl_matrix *X, *cov; + gsl_multifit_linear_workspace *mw; + double chisq, Rsq, dof, tss; + + gsl_rng_env_setup(); + r = gsl_rng_alloc(gsl_rng_default); + + /* allocate a cubic bspline workspace (k = 4) */ + bw = gsl_bspline_alloc(4, nbreak); + B = gsl_vector_alloc(ncoeffs); + + x = gsl_vector_alloc(n); + y = gsl_vector_alloc(n); + X = gsl_matrix_alloc(n, ncoeffs); + c = gsl_vector_alloc(ncoeffs); + w = gsl_vector_alloc(n); + cov = gsl_matrix_alloc(ncoeffs, ncoeffs); + mw = gsl_multifit_linear_alloc(n, ncoeffs); + + /* this is the data to be fitted */ + for (i = 0; i < n; ++i) + { + double sigma; + double xi = (15.0 / (N - 1)) * i; + double yi = cos(xi) * exp(-0.1 * xi); + + sigma = 0.1 * yi; + dy = gsl_ran_gaussian(r, sigma); + yi += dy; + + gsl_vector_set(x, i, xi); + gsl_vector_set(y, i, yi); + gsl_vector_set(w, i, 1.0 / (sigma * sigma)); + + printf("%f %f\n", xi, yi); + } + + /* use uniform breakpoints on [0, 15] */ + gsl_bspline_knots_uniform(0.0, 15.0, bw); + + /* construct the fit matrix X */ + for (i = 0; i < n; ++i) + { + double xi = gsl_vector_get(x, i); + + /* compute B_j(xi) for all j */ + gsl_bspline_eval(xi, B, bw); + + /* fill in row i of X */ + for (j = 0; j < ncoeffs; ++j) + { + double Bj = gsl_vector_get(B, j); + gsl_matrix_set(X, i, j, Bj); + } + } + + /* do the fit */ + gsl_multifit_wlinear(X, w, y, c, cov, &chisq, mw); + + dof = n - ncoeffs; + tss = gsl_stats_wtss(w->data, 1, y->data, 1, y->size); + Rsq = 1.0 - chisq / tss; + + fprintf(stderr, "chisq/dof = %e, Rsq = %f\n", + chisq / dof, Rsq); + + printf("\n\n"); + + /* output the smoothed curve */ + { + double xi, yi, yerr; + + for (xi = 0.0; xi < 15.0; xi += 0.1) + { + gsl_bspline_eval(xi, B, bw); + gsl_multifit_linear_est(B, c, cov, &yi, &yerr); + printf("%f %f\n", xi, yi); + } + } + + gsl_rng_free(r); + gsl_bspline_free(bw); + gsl_vector_free(B); + gsl_vector_free(x); + gsl_vector_free(y); + gsl_matrix_free(X); + gsl_vector_free(c); + gsl_vector_free(w); + gsl_matrix_free(cov); + gsl_multifit_linear_free(mw); + + return 0; +} /* main() */ diff --git a/gsl-2.5/doc/examples/bspline.txt b/gsl-2.5/doc/examples/bspline.txt new file mode 100644 index 00000000..57e4d7a8 --- /dev/null +++ b/gsl-2.5/doc/examples/bspline.txt @@ -0,0 +1,353 @@ +0.000000 1.013392 +0.075377 0.980953 +0.150754 1.136930 +0.226131 1.022649 +0.301508 1.018952 +0.376884 0.781034 +0.452261 0.653645 +0.527638 0.763919 +0.603015 0.772400 +0.678392 0.792524 +0.753769 0.674983 +0.829146 0.541142 +0.904523 0.526895 +0.979899 0.514283 +1.055276 0.480481 +1.130653 0.359657 +1.206030 0.296027 +1.281407 0.251224 +1.356784 0.173015 +1.432161 0.109840 +1.507538 0.057700 +1.582915 -0.009964 +1.658291 -0.071887 +1.733668 -0.123842 +1.809045 -0.185449 +1.884422 -0.257174 +1.959799 -0.313225 +2.035176 -0.337965 +2.110553 -0.410140 +2.185930 -0.532190 +2.261307 -0.497535 +2.336683 -0.534430 +2.412060 -0.577618 +2.487437 -0.461417 +2.562814 -0.685286 +2.638191 -0.670396 +2.713568 -0.677885 +2.788945 -0.760828 +2.864322 -0.836176 +2.939698 -0.701519 +3.015075 -0.820581 +3.090452 -0.864657 +3.165829 -0.675148 +3.241206 -0.674258 +3.316583 -0.853122 +3.391960 -0.627814 +3.467337 -0.786064 +3.542714 -0.735333 +3.618090 -0.595610 +3.693467 -0.570664 +3.768844 -0.625037 +3.844221 -0.505355 +3.919598 -0.479103 +3.994975 -0.476144 +4.070352 -0.420115 +4.145729 -0.357678 +4.221106 -0.351235 +4.296482 -0.263275 +4.371859 -0.231913 +4.447236 -0.141524 +4.522613 -0.117161 +4.597990 -0.074501 +4.673367 -0.024253 +4.748744 0.021384 +4.824121 0.059326 +4.899497 0.133528 +4.974874 0.164376 +5.050251 0.230545 +5.125628 0.257040 +5.201005 0.262619 +5.276382 0.356921 +5.351759 0.320297 +5.427136 0.410395 +5.502513 0.376859 +5.577889 0.432169 +5.653266 0.527822 +5.728643 0.498471 +5.804020 0.662444 +5.879397 0.602791 +5.954774 0.613485 +6.030151 0.565095 +6.105528 0.478371 +6.180905 0.553815 +6.256281 0.559066 +6.331658 0.405827 +6.407035 0.490786 +6.482412 0.401802 +6.557789 0.449565 +6.633166 0.461542 +6.708543 0.427638 +6.783920 0.453343 +6.859296 0.405652 +6.934673 0.331105 +7.010050 0.335669 +7.085427 0.342361 +7.160804 0.348337 +7.236181 0.333673 +7.311558 0.251268 +7.386935 0.219000 +7.462312 0.204136 +7.537688 0.154734 +7.613065 0.106188 +7.688442 0.079925 +7.763819 0.049781 +7.839196 0.008202 +7.914573 -0.026424 +7.989950 -0.056430 +8.065327 -0.081651 +8.140704 -0.107899 +8.216080 -0.149809 +8.291457 -0.212280 +8.366834 -0.184227 +8.442211 -0.213536 +8.517588 -0.259030 +8.592965 -0.290374 +8.668342 -0.377034 +8.743719 -0.335464 +8.819095 -0.352989 +8.894472 -0.328890 +8.969849 -0.429577 +9.045226 -0.362269 +9.120603 -0.456158 +9.195980 -0.404115 +9.271357 -0.351878 +9.346734 -0.402716 +9.422111 -0.376668 +9.497487 -0.420820 +9.572864 -0.429693 +9.648241 -0.401090 +9.723618 -0.347126 +9.798995 -0.369382 +9.874372 -0.314223 +9.949749 -0.302814 +10.025126 -0.325928 +10.100503 -0.289654 +10.175879 -0.252184 +10.251256 -0.254930 +10.326633 -0.210489 +10.402010 -0.198464 +10.477387 -0.182488 +10.552764 -0.191308 +10.628141 -0.115893 +10.703518 -0.092357 +10.778894 -0.086082 +10.854271 -0.054768 +10.929648 -0.022839 +11.005025 0.003120 +11.080402 0.027484 +11.155779 0.039650 +11.231156 0.068622 +11.306533 0.098587 +11.381910 0.120223 +11.457286 0.139761 +11.532663 0.163363 +11.608040 0.192581 +11.683417 0.184073 +11.758794 0.212051 +11.834171 0.224144 +11.909548 0.241003 +11.984925 0.286442 +12.060302 0.226233 +12.135678 0.296165 +12.211055 0.247044 +12.286432 0.298468 +12.361809 0.293579 +12.437186 0.294012 +12.512563 0.306141 +12.587940 0.277510 +12.663317 0.285759 +12.738693 0.302944 +12.814070 0.257310 +12.889447 0.243150 +12.964824 0.218764 +13.040201 0.264436 +13.115578 0.221957 +13.190955 0.196140 +13.266332 0.228542 +13.341709 0.156622 +13.417085 0.192438 +13.492462 0.156691 +13.567839 0.144335 +13.643216 0.148104 +13.718593 0.117823 +13.793970 0.082832 +13.869347 0.062686 +13.944724 0.040703 +14.020101 0.026491 +14.095477 0.010098 +14.170854 -0.007478 +14.246231 -0.029452 +14.321608 -0.042866 +14.396985 -0.057775 +14.472362 -0.071364 +14.547739 -0.098028 +14.623116 -0.130422 +14.698492 -0.133196 +14.773869 -0.131368 +14.849246 -0.152986 +14.924623 -0.156311 +15.000000 -0.163284 + + +0.000000 1.020318 +0.100000 1.001004 +0.200000 0.971769 +0.300000 0.933425 +0.400000 0.886787 +0.500000 0.832667 +0.600000 0.771879 +0.700000 0.705235 +0.800000 0.633550 +0.900000 0.557635 +1.000000 0.478304 +1.100000 0.396370 +1.200000 0.312647 +1.300000 0.227948 +1.400000 0.143085 +1.500000 0.058872 +1.600000 -0.023878 +1.700000 -0.104354 +1.800000 -0.181913 +1.900000 -0.256170 +2.000000 -0.326761 +2.100000 -0.393322 +2.200000 -0.455491 +2.300000 -0.512905 +2.400000 -0.565199 +2.500000 -0.612011 +2.600000 -0.652978 +2.700000 -0.687736 +2.800000 -0.715922 +2.900000 -0.737172 +3.000000 -0.751124 +3.100000 -0.757414 +3.200000 -0.755680 +3.300000 -0.745556 +3.400000 -0.726738 +3.500000 -0.699577 +3.600000 -0.664851 +3.700000 -0.623345 +3.800000 -0.575842 +3.900000 -0.523128 +4.000000 -0.465986 +4.100000 -0.405202 +4.200000 -0.341560 +4.300000 -0.275845 +4.400000 -0.208840 +4.500000 -0.141331 +4.600000 -0.074102 +4.700000 -0.007938 +4.800000 0.056378 +4.900000 0.118059 +5.000000 0.176323 +5.100000 0.230505 +5.200000 0.280423 +5.300000 0.326019 +5.400000 0.367230 +5.500000 0.403998 +5.600000 0.436261 +5.700000 0.463960 +5.800000 0.487034 +5.900000 0.505422 +6.000000 0.519064 +6.100000 0.527901 +6.200000 0.531871 +6.300000 0.530914 +6.400000 0.524970 +6.500000 0.513979 +6.600000 0.497880 +6.700000 0.476616 +6.800000 0.450349 +6.900000 0.419577 +7.000000 0.384827 +7.100000 0.346626 +7.200000 0.305503 +7.300000 0.261983 +7.400000 0.216596 +7.500000 0.169867 +7.600000 0.122325 +7.700000 0.074497 +7.800000 0.026910 +7.900000 -0.019908 +8.000000 -0.065431 +8.100000 -0.109130 +8.200000 -0.150478 +8.300000 -0.188949 +8.400000 -0.224041 +8.500000 -0.255567 +8.600000 -0.283542 +8.700000 -0.307985 +8.800000 -0.328913 +8.900000 -0.346344 +9.000000 -0.360298 +9.100000 -0.370791 +9.200000 -0.377843 +9.300000 -0.381471 +9.400000 -0.381694 +9.500000 -0.378529 +9.600000 -0.371996 +9.700000 -0.362111 +9.800000 -0.348894 +9.900000 -0.332363 +10.000000 -0.312535 +10.100000 -0.289491 +10.200000 -0.263558 +10.300000 -0.235124 +10.400000 -0.204580 +10.500000 -0.172313 +10.600000 -0.138713 +10.700000 -0.104170 +10.800000 -0.069070 +10.900000 -0.033805 +11.000000 0.001238 +11.100000 0.035668 +11.200000 0.069098 +11.300000 0.101139 +11.400000 0.131400 +11.500000 0.159494 +11.600000 0.185031 +11.700000 0.207625 +11.800000 0.227067 +11.900000 0.243418 +12.000000 0.256764 +12.100000 0.267192 +12.200000 0.274787 +12.300000 0.279636 +12.400000 0.281823 +12.500000 0.281436 +12.600000 0.278560 +12.700000 0.273281 +12.800000 0.265685 +12.900000 0.255858 +13.000000 0.243886 +13.100000 0.229854 +13.200000 0.213850 +13.300000 0.195957 +13.400000 0.176273 +13.500000 0.155000 +13.600000 0.132411 +13.700000 0.108780 +13.800000 0.084383 +13.900000 0.059492 +14.000000 0.034382 +14.100000 0.009328 +14.200000 -0.015397 +14.300000 -0.039517 +14.400000 -0.062760 +14.500000 -0.084850 +14.600000 -0.105514 +14.700000 -0.124477 +14.800000 -0.141465 +14.900000 -0.156204 +15.000000 -0.168419 diff --git a/gsl-2.5/doc/examples/cblas b/gsl-2.5/doc/examples/cblas new file mode 100755 index 00000000..a7cc11b0 --- /dev/null +++ b/gsl-2.5/doc/examples/cblas @@ -0,0 +1,228 @@ +#! /bin/sh + +# cblas - temporary wrapper script for .libs/cblas +# Generated by libtool (GNU libtool) 2.4.2 +# +# The cblas program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s/\([`"$\\]\)/\\\1/g' + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command="(cd /home/groups/kipac/chto/package/gsl/gsl-2.5/doc/examples; LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LIBRARY_PATH; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; LD_LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/fftw/include:/home/users/chto/lib/fftw/lib:/home/users/chto/lib/healpix/lib:/home/users/chto/lib/namaster/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/include:/home/users/chto/cpp/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LD_LIBRARY_PATH; PATH=/share/software/user/open/curl/7.54.0/bin:/share/software/user/open/libressl/2.5.3/bin:/home/users/chto/lib/cfitsio:/home/users/chto/lib/cfitsio/include:/home/users/chto/lib:/home/users/chto/bin/bin:/home/users/chto/bin:/home/users/chto/.texlive/bin/x86_64-linux:/home/groups/kipac/chto/anaconda2/envs/newenv3/bin:/home/users/chto/.local/bin/include:/home/users/chto/.local/bin/lib:/home/users/chto/.local/bin:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/bin64:/share/software/user/open/fftw/3.3.6/bin:/home/groups/kipac/chto/anaconda2/condabin:/share/software/user/restricted/ifort/2019/bin:/share/software/user/open/gsl/2.3/bin:/share/software/user/srcc/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/dell/srvadmin/bin:/opt/dell/srvadmin/iSM/bin:/home/users/chto/bin; export PATH; gcc -g -O2 -o \$progdir/\$file cblas.o ../../.libs/libgsl.so ../../cblas/.libs/libgslcblas.so -lm -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/.libs -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/cblas/.libs -Wl,-rpath -Wl,/usr/local/lib)" + +# This environment variable determines our operation mode. +if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then + # install mode needs the following variables: + generated_by_libtool_version='2.4.2' + notinst_deplibs=' ../../libgsl.la ../../cblas/libgslcblas.la' +else + # When we are sourced in execute mode, $file and $ECHO are already set. + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + file="$0" + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + ECHO="printf %s\\n" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ which is used only on +# windows platforms, and (c) all begin with the string --lt- +# (application programs are unlikely to have options which match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's ../../libtool value, followed by no. +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=$0 + shift + for lt_opt + do + case "$lt_opt" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%/[^/]*$%%'` + test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=. + lt_dump_F=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%^.*/%%'` + cat "$lt_dump_D/$lt_dump_F" + exit 0 + ;; + --lt-*) + $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n "$lt_option_debug"; then + echo "cblas:cblas:${LINENO}: libtool wrapper (GNU libtool) 2.4.2" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + $ECHO "cblas:cblas:${LINENO}: newargv[$lt_dump_args_N]: $lt_arg" + lt_dump_args_N=`expr $lt_dump_args_N + 1` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ + + if test -n "$lt_option_debug"; then + $ECHO "cblas:cblas:${LINENO}: newargv[0]: $progdir/$program" 1>&2 + func_lt_dump_args ${1+"$@"} 1>&2 + fi + exec "$progdir/$program" ${1+"$@"} + + $ECHO "$0: cannot exec $program $*" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from $@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case " $* " in + *\ --lt-*) + for lt_wr_arg + do + case $lt_wr_arg in + --lt-*) ;; + *) set x "$@" "$lt_wr_arg"; shift;; + esac + shift + done ;; + esac + func_exec_program_core ${1+"$@"} +} + + # Parse options + func_parse_lt_options "$0" ${1+"$@"} + + # Find the directory that this script lives in. + thisdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + test "x$thisdir" = "x$file" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=`ls -ld "$file" | /usr/bin/sed -n 's/.*-> //p'` + while test -n "$file"; do + destdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + + # If there was a directory component, then change thisdir. + if test "x$destdir" != "x$file"; then + case "$destdir" in + [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;; + *) thisdir="$thisdir/$destdir" ;; + esac + fi + + file=`$ECHO "$file" | /usr/bin/sed 's%^.*/%%'` + file=`ls -ld "$thisdir/$file" | /usr/bin/sed -n 's/.*-> //p'` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no + if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then + # special case for '.' + if test "$thisdir" = "."; then + thisdir=`pwd` + fi + # remove .libs from thisdir + case "$thisdir" in + *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /usr/bin/sed 's%[\\/][^\\/]*$%%'` ;; + .libs ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=`cd "$thisdir" && pwd` + test -n "$absdir" && thisdir="$absdir" + + program=lt-'cblas' + progdir="$thisdir/.libs" + + if test ! -f "$progdir/$program" || + { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /usr/bin/sed 1q`; \ + test "X$file" != "X$progdir/$program"; }; then + + file="$$-$program" + + if test ! -d "$progdir"; then + mkdir "$progdir" + else + rm -f "$progdir/$file" + fi + + # relink executable if necessary + if test -n "$relink_command"; then + if relink_command_output=`eval $relink_command 2>&1`; then : + else + printf %s\n "$relink_command_output" >&2 + rm -f "$progdir/$file" + exit 1 + fi + fi + + mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null || + { rm -f "$progdir/$program"; + mv -f "$progdir/$file" "$progdir/$program"; } + rm -f "$progdir/$file" + fi + + if test -f "$progdir/$program"; then + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + # Run the actual program with our arguments. + func_exec_program ${1+"$@"} + fi + else + # The program doesn't exist. + $ECHO "$0: error: \`$progdir/$program' does not exist" 1>&2 + $ECHO "This script is just a wrapper for $program." 1>&2 + $ECHO "See the libtool documentation for more information." 1>&2 + exit 1 + fi +fi diff --git a/gsl-2.5/doc/examples/cblas.c b/gsl-2.5/doc/examples/cblas.c new file mode 100644 index 00000000..cb6b31af --- /dev/null +++ b/gsl-2.5/doc/examples/cblas.c @@ -0,0 +1,33 @@ +#include +#include + +int +main (void) +{ + int lda = 3; + + float A[] = { 0.11, 0.12, 0.13, + 0.21, 0.22, 0.23 }; + + int ldb = 2; + + float B[] = { 1011, 1012, + 1021, 1022, + 1031, 1032 }; + + int ldc = 2; + + float C[] = { 0.00, 0.00, + 0.00, 0.00 }; + + /* Compute C = A B */ + + cblas_sgemm (CblasRowMajor, + CblasNoTrans, CblasNoTrans, 2, 2, 3, + 1.0, A, lda, B, ldb, 0.0, C, ldc); + + printf ("[ %g, %g\n", C[0], C[1]); + printf (" %g, %g ]\n", C[2], C[3]); + + return 0; +} diff --git a/gsl-2.5/doc/examples/cblas.txt b/gsl-2.5/doc/examples/cblas.txt new file mode 100644 index 00000000..a0f51d74 --- /dev/null +++ b/gsl-2.5/doc/examples/cblas.txt @@ -0,0 +1,2 @@ +[ 367.76, 368.12 + 674.06, 674.72 ] diff --git a/gsl-2.5/doc/examples/cdf b/gsl-2.5/doc/examples/cdf new file mode 100755 index 00000000..25498665 --- /dev/null +++ b/gsl-2.5/doc/examples/cdf @@ -0,0 +1,228 @@ +#! /bin/sh + +# cdf - temporary wrapper script for .libs/cdf +# Generated by libtool (GNU libtool) 2.4.2 +# +# The cdf program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s/\([`"$\\]\)/\\\1/g' + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command="(cd /home/groups/kipac/chto/package/gsl/gsl-2.5/doc/examples; LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LIBRARY_PATH; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; LD_LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/fftw/include:/home/users/chto/lib/fftw/lib:/home/users/chto/lib/healpix/lib:/home/users/chto/lib/namaster/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/include:/home/users/chto/cpp/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LD_LIBRARY_PATH; PATH=/share/software/user/open/curl/7.54.0/bin:/share/software/user/open/libressl/2.5.3/bin:/home/users/chto/lib/cfitsio:/home/users/chto/lib/cfitsio/include:/home/users/chto/lib:/home/users/chto/bin/bin:/home/users/chto/bin:/home/users/chto/.texlive/bin/x86_64-linux:/home/groups/kipac/chto/anaconda2/envs/newenv3/bin:/home/users/chto/.local/bin/include:/home/users/chto/.local/bin/lib:/home/users/chto/.local/bin:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/bin64:/share/software/user/open/fftw/3.3.6/bin:/home/groups/kipac/chto/anaconda2/condabin:/share/software/user/restricted/ifort/2019/bin:/share/software/user/open/gsl/2.3/bin:/share/software/user/srcc/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/dell/srvadmin/bin:/opt/dell/srvadmin/iSM/bin:/home/users/chto/bin; export PATH; gcc -g -O2 -o \$progdir/\$file cdf.o ../../.libs/libgsl.so ../../cblas/.libs/libgslcblas.so -lm -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/.libs -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/cblas/.libs -Wl,-rpath -Wl,/usr/local/lib)" + +# This environment variable determines our operation mode. +if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then + # install mode needs the following variables: + generated_by_libtool_version='2.4.2' + notinst_deplibs=' ../../libgsl.la ../../cblas/libgslcblas.la' +else + # When we are sourced in execute mode, $file and $ECHO are already set. + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + file="$0" + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + ECHO="printf %s\\n" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ which is used only on +# windows platforms, and (c) all begin with the string --lt- +# (application programs are unlikely to have options which match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's ../../libtool value, followed by no. +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=$0 + shift + for lt_opt + do + case "$lt_opt" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%/[^/]*$%%'` + test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=. + lt_dump_F=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%^.*/%%'` + cat "$lt_dump_D/$lt_dump_F" + exit 0 + ;; + --lt-*) + $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n "$lt_option_debug"; then + echo "cdf:cdf:${LINENO}: libtool wrapper (GNU libtool) 2.4.2" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + $ECHO "cdf:cdf:${LINENO}: newargv[$lt_dump_args_N]: $lt_arg" + lt_dump_args_N=`expr $lt_dump_args_N + 1` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ + + if test -n "$lt_option_debug"; then + $ECHO "cdf:cdf:${LINENO}: newargv[0]: $progdir/$program" 1>&2 + func_lt_dump_args ${1+"$@"} 1>&2 + fi + exec "$progdir/$program" ${1+"$@"} + + $ECHO "$0: cannot exec $program $*" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from $@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case " $* " in + *\ --lt-*) + for lt_wr_arg + do + case $lt_wr_arg in + --lt-*) ;; + *) set x "$@" "$lt_wr_arg"; shift;; + esac + shift + done ;; + esac + func_exec_program_core ${1+"$@"} +} + + # Parse options + func_parse_lt_options "$0" ${1+"$@"} + + # Find the directory that this script lives in. + thisdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + test "x$thisdir" = "x$file" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=`ls -ld "$file" | /usr/bin/sed -n 's/.*-> //p'` + while test -n "$file"; do + destdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + + # If there was a directory component, then change thisdir. + if test "x$destdir" != "x$file"; then + case "$destdir" in + [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;; + *) thisdir="$thisdir/$destdir" ;; + esac + fi + + file=`$ECHO "$file" | /usr/bin/sed 's%^.*/%%'` + file=`ls -ld "$thisdir/$file" | /usr/bin/sed -n 's/.*-> //p'` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no + if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then + # special case for '.' + if test "$thisdir" = "."; then + thisdir=`pwd` + fi + # remove .libs from thisdir + case "$thisdir" in + *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /usr/bin/sed 's%[\\/][^\\/]*$%%'` ;; + .libs ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=`cd "$thisdir" && pwd` + test -n "$absdir" && thisdir="$absdir" + + program=lt-'cdf' + progdir="$thisdir/.libs" + + if test ! -f "$progdir/$program" || + { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /usr/bin/sed 1q`; \ + test "X$file" != "X$progdir/$program"; }; then + + file="$$-$program" + + if test ! -d "$progdir"; then + mkdir "$progdir" + else + rm -f "$progdir/$file" + fi + + # relink executable if necessary + if test -n "$relink_command"; then + if relink_command_output=`eval $relink_command 2>&1`; then : + else + printf %s\n "$relink_command_output" >&2 + rm -f "$progdir/$file" + exit 1 + fi + fi + + mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null || + { rm -f "$progdir/$program"; + mv -f "$progdir/$file" "$progdir/$program"; } + rm -f "$progdir/$file" + fi + + if test -f "$progdir/$program"; then + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + # Run the actual program with our arguments. + func_exec_program ${1+"$@"} + fi + else + # The program doesn't exist. + $ECHO "$0: error: \`$progdir/$program' does not exist" 1>&2 + $ECHO "This script is just a wrapper for $program." 1>&2 + $ECHO "See the libtool documentation for more information." 1>&2 + exit 1 + fi +fi diff --git a/gsl-2.5/doc/examples/cdf.c b/gsl-2.5/doc/examples/cdf.c new file mode 100644 index 00000000..968eb96d --- /dev/null +++ b/gsl-2.5/doc/examples/cdf.c @@ -0,0 +1,23 @@ +#include +#include + +int +main (void) +{ + double P, Q; + double x = 2.0; + + P = gsl_cdf_ugaussian_P (x); + printf ("prob(x < %f) = %f\n", x, P); + + Q = gsl_cdf_ugaussian_Q (x); + printf ("prob(x > %f) = %f\n", x, Q); + + x = gsl_cdf_ugaussian_Pinv (P); + printf ("Pinv(%f) = %f\n", P, x); + + x = gsl_cdf_ugaussian_Qinv (Q); + printf ("Qinv(%f) = %f\n", Q, x); + + return 0; +} diff --git a/gsl-2.5/doc/examples/cdf.txt b/gsl-2.5/doc/examples/cdf.txt new file mode 100644 index 00000000..f04b75b6 --- /dev/null +++ b/gsl-2.5/doc/examples/cdf.txt @@ -0,0 +1,4 @@ +prob(x < 2.000000) = 0.977250 +prob(x > 2.000000) = 0.022750 +Pinv(0.977250) = 2.000000 +Qinv(0.022750) = 2.000000 diff --git a/gsl-2.5/doc/examples/cheb b/gsl-2.5/doc/examples/cheb new file mode 100755 index 00000000..8d01d609 --- /dev/null +++ b/gsl-2.5/doc/examples/cheb @@ -0,0 +1,228 @@ +#! /bin/sh + +# cheb - temporary wrapper script for .libs/cheb +# Generated by libtool (GNU libtool) 2.4.2 +# +# The cheb program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s/\([`"$\\]\)/\\\1/g' + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command="(cd /home/groups/kipac/chto/package/gsl/gsl-2.5/doc/examples; LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LIBRARY_PATH; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; LD_LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/fftw/include:/home/users/chto/lib/fftw/lib:/home/users/chto/lib/healpix/lib:/home/users/chto/lib/namaster/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/include:/home/users/chto/cpp/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LD_LIBRARY_PATH; PATH=/share/software/user/open/curl/7.54.0/bin:/share/software/user/open/libressl/2.5.3/bin:/home/users/chto/lib/cfitsio:/home/users/chto/lib/cfitsio/include:/home/users/chto/lib:/home/users/chto/bin/bin:/home/users/chto/bin:/home/users/chto/.texlive/bin/x86_64-linux:/home/groups/kipac/chto/anaconda2/envs/newenv3/bin:/home/users/chto/.local/bin/include:/home/users/chto/.local/bin/lib:/home/users/chto/.local/bin:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/bin64:/share/software/user/open/fftw/3.3.6/bin:/home/groups/kipac/chto/anaconda2/condabin:/share/software/user/restricted/ifort/2019/bin:/share/software/user/open/gsl/2.3/bin:/share/software/user/srcc/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/dell/srvadmin/bin:/opt/dell/srvadmin/iSM/bin:/home/users/chto/bin; export PATH; gcc -g -O2 -o \$progdir/\$file cheb.o ../../.libs/libgsl.so ../../cblas/.libs/libgslcblas.so -lm -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/.libs -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/cblas/.libs -Wl,-rpath -Wl,/usr/local/lib)" + +# This environment variable determines our operation mode. +if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then + # install mode needs the following variables: + generated_by_libtool_version='2.4.2' + notinst_deplibs=' ../../libgsl.la ../../cblas/libgslcblas.la' +else + # When we are sourced in execute mode, $file and $ECHO are already set. + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + file="$0" + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + ECHO="printf %s\\n" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ which is used only on +# windows platforms, and (c) all begin with the string --lt- +# (application programs are unlikely to have options which match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's ../../libtool value, followed by no. +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=$0 + shift + for lt_opt + do + case "$lt_opt" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%/[^/]*$%%'` + test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=. + lt_dump_F=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%^.*/%%'` + cat "$lt_dump_D/$lt_dump_F" + exit 0 + ;; + --lt-*) + $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n "$lt_option_debug"; then + echo "cheb:cheb:${LINENO}: libtool wrapper (GNU libtool) 2.4.2" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + $ECHO "cheb:cheb:${LINENO}: newargv[$lt_dump_args_N]: $lt_arg" + lt_dump_args_N=`expr $lt_dump_args_N + 1` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ + + if test -n "$lt_option_debug"; then + $ECHO "cheb:cheb:${LINENO}: newargv[0]: $progdir/$program" 1>&2 + func_lt_dump_args ${1+"$@"} 1>&2 + fi + exec "$progdir/$program" ${1+"$@"} + + $ECHO "$0: cannot exec $program $*" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from $@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case " $* " in + *\ --lt-*) + for lt_wr_arg + do + case $lt_wr_arg in + --lt-*) ;; + *) set x "$@" "$lt_wr_arg"; shift;; + esac + shift + done ;; + esac + func_exec_program_core ${1+"$@"} +} + + # Parse options + func_parse_lt_options "$0" ${1+"$@"} + + # Find the directory that this script lives in. + thisdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + test "x$thisdir" = "x$file" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=`ls -ld "$file" | /usr/bin/sed -n 's/.*-> //p'` + while test -n "$file"; do + destdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + + # If there was a directory component, then change thisdir. + if test "x$destdir" != "x$file"; then + case "$destdir" in + [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;; + *) thisdir="$thisdir/$destdir" ;; + esac + fi + + file=`$ECHO "$file" | /usr/bin/sed 's%^.*/%%'` + file=`ls -ld "$thisdir/$file" | /usr/bin/sed -n 's/.*-> //p'` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no + if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then + # special case for '.' + if test "$thisdir" = "."; then + thisdir=`pwd` + fi + # remove .libs from thisdir + case "$thisdir" in + *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /usr/bin/sed 's%[\\/][^\\/]*$%%'` ;; + .libs ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=`cd "$thisdir" && pwd` + test -n "$absdir" && thisdir="$absdir" + + program=lt-'cheb' + progdir="$thisdir/.libs" + + if test ! -f "$progdir/$program" || + { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /usr/bin/sed 1q`; \ + test "X$file" != "X$progdir/$program"; }; then + + file="$$-$program" + + if test ! -d "$progdir"; then + mkdir "$progdir" + else + rm -f "$progdir/$file" + fi + + # relink executable if necessary + if test -n "$relink_command"; then + if relink_command_output=`eval $relink_command 2>&1`; then : + else + printf %s\n "$relink_command_output" >&2 + rm -f "$progdir/$file" + exit 1 + fi + fi + + mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null || + { rm -f "$progdir/$program"; + mv -f "$progdir/$file" "$progdir/$program"; } + rm -f "$progdir/$file" + fi + + if test -f "$progdir/$program"; then + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + # Run the actual program with our arguments. + func_exec_program ${1+"$@"} + fi + else + # The program doesn't exist. + $ECHO "$0: error: \`$progdir/$program' does not exist" 1>&2 + $ECHO "This script is just a wrapper for $program." 1>&2 + $ECHO "See the libtool documentation for more information." 1>&2 + exit 1 + fi +fi diff --git a/gsl-2.5/doc/examples/cheb.c b/gsl-2.5/doc/examples/cheb.c new file mode 100644 index 00000000..d1bdf4be --- /dev/null +++ b/gsl-2.5/doc/examples/cheb.c @@ -0,0 +1,42 @@ +#include +#include +#include + +double +f (double x, void *p) +{ + (void)(p); /* avoid unused parameter warning */ + + if (x < 0.5) + return 0.25; + else + return 0.75; +} + +int +main (void) +{ + int i, n = 10000; + + gsl_cheb_series *cs = gsl_cheb_alloc (40); + + gsl_function F; + + F.function = f; + F.params = 0; + + gsl_cheb_init (cs, &F, 0.0, 1.0); + + for (i = 0; i < n; i++) + { + double x = i / (double)n; + double r10 = gsl_cheb_eval_n (cs, 10, x); + double r40 = gsl_cheb_eval (cs, x); + printf ("%g %g %g %g\n", + x, GSL_FN_EVAL (&F, x), r10, r40); + } + + gsl_cheb_free (cs); + + return 0; +} diff --git a/gsl-2.5/doc/examples/cheb.txt b/gsl-2.5/doc/examples/cheb.txt new file mode 100644 index 00000000..311842fa --- /dev/null +++ b/gsl-2.5/doc/examples/cheb.txt @@ -0,0 +1,10000 @@ +0 0.25 0.228925 0.256331 +0.0001 0.25 0.229373 0.25432 +0.0002 0.25 0.229818 0.252531 +0.0003 0.25 0.23026 0.250949 +0.0004 0.25 0.230698 0.249561 +0.0005 0.25 0.231134 0.248353 +0.0006 0.25 0.231567 0.247312 +0.0007 0.25 0.231997 0.246425 +0.0008 0.25 0.232423 0.245683 +0.0009 0.25 0.232847 0.245073 +0.001 0.25 0.233268 0.244585 +0.0011 0.25 0.233686 0.24421 +0.0012 0.25 0.234101 0.243938 +0.0013 0.25 0.234513 0.24376 +0.0014 0.25 0.234922 0.243667 +0.0015 0.25 0.235328 0.243653 +0.0016 0.25 0.235731 0.243709 +0.0017 0.25 0.236132 0.243829 +0.0018 0.25 0.236529 0.244006 +0.0019 0.25 0.236924 0.244233 +0.002 0.25 0.237316 0.244505 +0.0021 0.25 0.237705 0.244815 +0.0022 0.25 0.238091 0.24516 +0.0023 0.25 0.238474 0.245534 +0.0024 0.25 0.238855 0.245932 +0.0025 0.25 0.239232 0.246351 +0.0026 0.25 0.239607 0.246786 +0.0027 0.25 0.23998 0.247233 +0.0028 0.25 0.240349 0.247689 +0.0029 0.25 0.240716 0.248152 +0.003 0.25 0.24108 0.248617 +0.0031 0.25 0.241441 0.249083 +0.0032 0.25 0.2418 0.249546 +0.0033 0.25 0.242155 0.250005 +0.0034 0.25 0.242509 0.250457 +0.0035 0.25 0.242859 0.2509 +0.0036 0.25 0.243207 0.251333 +0.0037 0.25 0.243552 0.251754 +0.0038 0.25 0.243894 0.252162 +0.0039 0.25 0.244234 0.252555 +0.004 0.25 0.244571 0.252932 +0.0041 0.25 0.244906 0.253293 +0.0042 0.25 0.245238 0.253635 +0.0043 0.25 0.245567 0.25396 +0.0044 0.25 0.245894 0.254265 +0.0045 0.25 0.246218 0.254551 +0.0046 0.25 0.24654 0.254816 +0.0047 0.25 0.246859 0.255062 +0.0048 0.25 0.247176 0.255287 +0.0049 0.25 0.24749 0.255491 +0.005 0.25 0.247801 0.255674 +0.0051 0.25 0.24811 0.255837 +0.0052 0.25 0.248417 0.255978 +0.0053 0.25 0.248721 0.2561 +0.0054 0.25 0.249022 0.2562 +0.0055 0.25 0.249321 0.256281 +0.0056 0.25 0.249618 0.256342 +0.0057 0.25 0.249912 0.256383 +0.0058 0.25 0.250204 0.256405 +0.0059 0.25 0.250493 0.256408 +0.006 0.25 0.25078 0.256393 +0.0061 0.25 0.251064 0.25636 +0.0062 0.25 0.251346 0.25631 +0.0063 0.25 0.251626 0.256243 +0.0064 0.25 0.251903 0.256159 +0.0065 0.25 0.252178 0.256061 +0.0066 0.25 0.252451 0.255947 +0.0067 0.25 0.252721 0.255819 +0.0068 0.25 0.252989 0.255677 +0.0069 0.25 0.253254 0.255522 +0.007 0.25 0.253517 0.255354 +0.0071 0.25 0.253778 0.255175 +0.0072 0.25 0.254037 0.254985 +0.0073 0.25 0.254293 0.254784 +0.0074 0.25 0.254547 0.254573 +0.0075 0.25 0.254799 0.254354 +0.0076 0.25 0.255048 0.254126 +0.0077 0.25 0.255296 0.25389 +0.0078 0.25 0.255541 0.253647 +0.0079 0.25 0.255783 0.253397 +0.008 0.25 0.256024 0.253142 +0.0081 0.25 0.256262 0.252882 +0.0082 0.25 0.256498 0.252617 +0.0083 0.25 0.256732 0.252348 +0.0084 0.25 0.256964 0.252076 +0.0085 0.25 0.257194 0.251801 +0.0086 0.25 0.257421 0.251524 +0.0087 0.25 0.257646 0.251245 +0.0088 0.25 0.257869 0.250966 +0.0089 0.25 0.25809 0.250686 +0.009 0.25 0.258309 0.250407 +0.0091 0.25 0.258526 0.250128 +0.0092 0.25 0.25874 0.24985 +0.0093 0.25 0.258953 0.249573 +0.0094 0.25 0.259163 0.249299 +0.0095 0.25 0.259371 0.249028 +0.0096 0.25 0.259578 0.248759 +0.0097 0.25 0.259782 0.248494 +0.0098 0.25 0.259984 0.248233 +0.0099 0.25 0.260184 0.247976 +0.01 0.25 0.260382 0.247724 +0.0101 0.25 0.260578 0.247477 +0.0102 0.25 0.260772 0.247235 +0.0103 0.25 0.260964 0.246999 +0.0104 0.25 0.261154 0.246768 +0.0105 0.25 0.261342 0.246544 +0.0106 0.25 0.261528 0.246327 +0.0107 0.25 0.261712 0.246116 +0.0108 0.25 0.261894 0.245912 +0.0109 0.25 0.262074 0.245716 +0.011 0.25 0.262253 0.245527 +0.0111 0.25 0.262429 0.245346 +0.0112 0.25 0.262603 0.245172 +0.0113 0.25 0.262775 0.245007 +0.0114 0.25 0.262946 0.244849 +0.0115 0.25 0.263114 0.2447 +0.0116 0.25 0.263281 0.24456 +0.0117 0.25 0.263446 0.244427 +0.0118 0.25 0.263609 0.244304 +0.0119 0.25 0.26377 0.244189 +0.012 0.25 0.263929 0.244083 +0.0121 0.25 0.264086 0.243985 +0.0122 0.25 0.264242 0.243896 +0.0123 0.25 0.264396 0.243817 +0.0124 0.25 0.264547 0.243746 +0.0125 0.25 0.264697 0.243683 +0.0126 0.25 0.264846 0.24363 +0.0127 0.25 0.264992 0.243585 +0.0128 0.25 0.265137 0.243549 +0.0129 0.25 0.26528 0.243522 +0.013 0.25 0.265421 0.243504 +0.0131 0.25 0.26556 0.243493 +0.0132 0.25 0.265697 0.243492 +0.0133 0.25 0.265833 0.243499 +0.0134 0.25 0.265967 0.243514 +0.0135 0.25 0.2661 0.243537 +0.0136 0.25 0.26623 0.243568 +0.0137 0.25 0.266359 0.243608 +0.0138 0.25 0.266486 0.243655 +0.0139 0.25 0.266612 0.243709 +0.014 0.25 0.266735 0.243772 +0.0141 0.25 0.266857 0.243841 +0.0142 0.25 0.266978 0.243918 +0.0143 0.25 0.267097 0.244002 +0.0144 0.25 0.267214 0.244093 +0.0145 0.25 0.267329 0.244191 +0.0146 0.25 0.267443 0.244295 +0.0147 0.25 0.267555 0.244405 +0.0148 0.25 0.267666 0.244522 +0.0149 0.25 0.267774 0.244644 +0.015 0.25 0.267882 0.244772 +0.0151 0.25 0.267987 0.244906 +0.0152 0.25 0.268092 0.245045 +0.0153 0.25 0.268194 0.24519 +0.0154 0.25 0.268295 0.245339 +0.0155 0.25 0.268394 0.245493 +0.0156 0.25 0.268492 0.245652 +0.0157 0.25 0.268588 0.245815 +0.0158 0.25 0.268683 0.245982 +0.0159 0.25 0.268776 0.246153 +0.016 0.25 0.268868 0.246327 +0.0161 0.25 0.268958 0.246505 +0.0162 0.25 0.269046 0.246687 +0.0163 0.25 0.269133 0.246871 +0.0164 0.25 0.269219 0.247058 +0.0165 0.25 0.269303 0.247248 +0.0166 0.25 0.269386 0.24744 +0.0167 0.25 0.269467 0.247634 +0.0168 0.25 0.269546 0.24783 +0.0169 0.25 0.269624 0.248028 +0.017 0.25 0.269701 0.248227 +0.0171 0.25 0.269776 0.248428 +0.0172 0.25 0.26985 0.248629 +0.0173 0.25 0.269922 0.248832 +0.0174 0.25 0.269993 0.249035 +0.0175 0.25 0.270063 0.249239 +0.0176 0.25 0.270131 0.249443 +0.0177 0.25 0.270198 0.249647 +0.0178 0.25 0.270263 0.249851 +0.0179 0.25 0.270327 0.250054 +0.018 0.25 0.270389 0.250257 +0.0181 0.25 0.27045 0.25046 +0.0182 0.25 0.27051 0.250661 +0.0183 0.25 0.270568 0.250862 +0.0184 0.25 0.270625 0.251061 +0.0185 0.25 0.270681 0.251258 +0.0186 0.25 0.270735 0.251454 +0.0187 0.25 0.270788 0.251649 +0.0188 0.25 0.27084 0.251841 +0.0189 0.25 0.27089 0.252031 +0.019 0.25 0.27094 0.252219 +0.0191 0.25 0.270987 0.252405 +0.0192 0.25 0.271034 0.252588 +0.0193 0.25 0.271079 0.252768 +0.0194 0.25 0.271123 0.252946 +0.0195 0.25 0.271165 0.25312 +0.0196 0.25 0.271207 0.253292 +0.0197 0.25 0.271247 0.25346 +0.0198 0.25 0.271285 0.253625 +0.0199 0.25 0.271323 0.253786 +0.02 0.25 0.271359 0.253944 +0.0201 0.25 0.271394 0.254098 +0.0202 0.25 0.271428 0.254249 +0.0203 0.25 0.271461 0.254395 +0.0204 0.25 0.271492 0.254538 +0.0205 0.25 0.271522 0.254676 +0.0206 0.25 0.271551 0.25481 +0.0207 0.25 0.271579 0.25494 +0.0208 0.25 0.271605 0.255066 +0.0209 0.25 0.271631 0.255187 +0.021 0.25 0.271655 0.255303 +0.0211 0.25 0.271678 0.255416 +0.0212 0.25 0.2717 0.255523 +0.0213 0.25 0.271721 0.255626 +0.0214 0.25 0.27174 0.255724 +0.0215 0.25 0.271759 0.255817 +0.0216 0.25 0.271776 0.255906 +0.0217 0.25 0.271792 0.25599 +0.0218 0.25 0.271807 0.256068 +0.0219 0.25 0.271821 0.256142 +0.022 0.25 0.271834 0.256211 +0.0221 0.25 0.271846 0.256275 +0.0222 0.25 0.271856 0.256334 +0.0223 0.25 0.271866 0.256388 +0.0224 0.25 0.271874 0.256437 +0.0225 0.25 0.271881 0.256481 +0.0226 0.25 0.271888 0.25652 +0.0227 0.25 0.271893 0.256554 +0.0228 0.25 0.271897 0.256583 +0.0229 0.25 0.2719 0.256607 +0.023 0.25 0.271902 0.256625 +0.0231 0.25 0.271903 0.256639 +0.0232 0.25 0.271903 0.256648 +0.0233 0.25 0.271902 0.256652 +0.0234 0.25 0.2719 0.256651 +0.0235 0.25 0.271897 0.256646 +0.0236 0.25 0.271893 0.256635 +0.0237 0.25 0.271888 0.256619 +0.0238 0.25 0.271881 0.256599 +0.0239 0.25 0.271874 0.256574 +0.024 0.25 0.271866 0.256545 +0.0241 0.25 0.271857 0.25651 +0.0242 0.25 0.271847 0.256471 +0.0243 0.25 0.271836 0.256428 +0.0244 0.25 0.271824 0.25638 +0.0245 0.25 0.271811 0.256328 +0.0246 0.25 0.271797 0.256271 +0.0247 0.25 0.271782 0.25621 +0.0248 0.25 0.271766 0.256145 +0.0249 0.25 0.27175 0.256075 +0.025 0.25 0.271732 0.256002 +0.0251 0.25 0.271713 0.255924 +0.0252 0.25 0.271694 0.255843 +0.0253 0.25 0.271673 0.255757 +0.0254 0.25 0.271652 0.255668 +0.0255 0.25 0.27163 0.255575 +0.0256 0.25 0.271607 0.255479 +0.0257 0.25 0.271583 0.255379 +0.0258 0.25 0.271558 0.255275 +0.0259 0.25 0.271532 0.255169 +0.026 0.25 0.271506 0.255058 +0.0261 0.25 0.271478 0.254945 +0.0262 0.25 0.27145 0.254829 +0.0263 0.25 0.27142 0.254709 +0.0264 0.25 0.27139 0.254587 +0.0265 0.25 0.27136 0.254462 +0.0266 0.25 0.271328 0.254334 +0.0267 0.25 0.271295 0.254203 +0.0268 0.25 0.271262 0.25407 +0.0269 0.25 0.271228 0.253935 +0.027 0.25 0.271193 0.253797 +0.0271 0.25 0.271157 0.253657 +0.0272 0.25 0.27112 0.253514 +0.0273 0.25 0.271083 0.25337 +0.0274 0.25 0.271044 0.253224 +0.0275 0.25 0.271005 0.253076 +0.0276 0.25 0.270966 0.252926 +0.0277 0.25 0.270925 0.252775 +0.0278 0.25 0.270884 0.252622 +0.0279 0.25 0.270842 0.252467 +0.028 0.25 0.270799 0.252312 +0.0281 0.25 0.270755 0.252155 +0.0282 0.25 0.270711 0.251997 +0.0283 0.25 0.270666 0.251837 +0.0284 0.25 0.27062 0.251677 +0.0285 0.25 0.270573 0.251517 +0.0286 0.25 0.270526 0.251355 +0.0287 0.25 0.270478 0.251193 +0.0288 0.25 0.270429 0.25103 +0.0289 0.25 0.270379 0.250867 +0.029 0.25 0.270329 0.250704 +0.0291 0.25 0.270278 0.25054 +0.0292 0.25 0.270227 0.250376 +0.0293 0.25 0.270174 0.250213 +0.0294 0.25 0.270122 0.250049 +0.0295 0.25 0.270068 0.249886 +0.0296 0.25 0.270013 0.249722 +0.0297 0.25 0.269958 0.249559 +0.0298 0.25 0.269903 0.249397 +0.0299 0.25 0.269846 0.249235 +0.03 0.25 0.269789 0.249074 +0.0301 0.25 0.269732 0.248913 +0.0302 0.25 0.269673 0.248753 +0.0303 0.25 0.269615 0.248595 +0.0304 0.25 0.269555 0.248437 +0.0305 0.25 0.269495 0.24828 +0.0306 0.25 0.269434 0.248124 +0.0307 0.25 0.269372 0.24797 +0.0308 0.25 0.26931 0.247817 +0.0309 0.25 0.269248 0.247665 +0.031 0.25 0.269184 0.247515 +0.0311 0.25 0.26912 0.247366 +0.0312 0.25 0.269056 0.247219 +0.0313 0.25 0.268991 0.247074 +0.0314 0.25 0.268925 0.246931 +0.0315 0.25 0.268859 0.246789 +0.0316 0.25 0.268792 0.246649 +0.0317 0.25 0.268724 0.246512 +0.0318 0.25 0.268656 0.246376 +0.0319 0.25 0.268588 0.246242 +0.032 0.25 0.268519 0.246111 +0.0321 0.25 0.268449 0.245982 +0.0322 0.25 0.268379 0.245855 +0.0323 0.25 0.268308 0.245731 +0.0324 0.25 0.268236 0.245609 +0.0325 0.25 0.268165 0.245489 +0.0326 0.25 0.268092 0.245372 +0.0327 0.25 0.268019 0.245258 +0.0328 0.25 0.267946 0.245146 +0.0329 0.25 0.267872 0.245037 +0.033 0.25 0.267797 0.24493 +0.0331 0.25 0.267722 0.244827 +0.0332 0.25 0.267647 0.244726 +0.0333 0.25 0.267571 0.244628 +0.0334 0.25 0.267494 0.244533 +0.0335 0.25 0.267417 0.244441 +0.0336 0.25 0.267339 0.244352 +0.0337 0.25 0.267261 0.244266 +0.0338 0.25 0.267183 0.244183 +0.0339 0.25 0.267104 0.244103 +0.034 0.25 0.267024 0.244026 +0.0341 0.25 0.266945 0.243952 +0.0342 0.25 0.266864 0.243881 +0.0343 0.25 0.266783 0.243814 +0.0344 0.25 0.266702 0.24375 +0.0345 0.25 0.26662 0.243689 +0.0346 0.25 0.266538 0.243631 +0.0347 0.25 0.266455 0.243576 +0.0348 0.25 0.266372 0.243525 +0.0349 0.25 0.266289 0.243477 +0.035 0.25 0.266205 0.243433 +0.0351 0.25 0.266121 0.243391 +0.0352 0.25 0.266036 0.243353 +0.0353 0.25 0.265951 0.243318 +0.0354 0.25 0.265865 0.243287 +0.0355 0.25 0.265779 0.243259 +0.0356 0.25 0.265692 0.243234 +0.0357 0.25 0.265606 0.243213 +0.0358 0.25 0.265518 0.243195 +0.0359 0.25 0.265431 0.24318 +0.036 0.25 0.265343 0.243169 +0.0361 0.25 0.265254 0.243161 +0.0362 0.25 0.265165 0.243156 +0.0363 0.25 0.265076 0.243154 +0.0364 0.25 0.264987 0.243156 +0.0365 0.25 0.264897 0.243161 +0.0366 0.25 0.264807 0.243169 +0.0367 0.25 0.264716 0.243181 +0.0368 0.25 0.264625 0.243196 +0.0369 0.25 0.264534 0.243214 +0.037 0.25 0.264442 0.243235 +0.0371 0.25 0.26435 0.243259 +0.0372 0.25 0.264257 0.243287 +0.0373 0.25 0.264165 0.243318 +0.0374 0.25 0.264072 0.243351 +0.0375 0.25 0.263978 0.243388 +0.0376 0.25 0.263885 0.243428 +0.0377 0.25 0.263791 0.243471 +0.0378 0.25 0.263696 0.243517 +0.0379 0.25 0.263601 0.243566 +0.038 0.25 0.263506 0.243617 +0.0381 0.25 0.263411 0.243672 +0.0382 0.25 0.263316 0.24373 +0.0383 0.25 0.26322 0.24379 +0.0384 0.25 0.263123 0.243853 +0.0385 0.25 0.263027 0.243919 +0.0386 0.25 0.26293 0.243987 +0.0387 0.25 0.262833 0.244059 +0.0388 0.25 0.262736 0.244132 +0.0389 0.25 0.262638 0.244209 +0.039 0.25 0.26254 0.244288 +0.0391 0.25 0.262442 0.244369 +0.0392 0.25 0.262344 0.244453 +0.0393 0.25 0.262245 0.244539 +0.0394 0.25 0.262146 0.244628 +0.0395 0.25 0.262047 0.244719 +0.0396 0.25 0.261947 0.244812 +0.0397 0.25 0.261847 0.244908 +0.0398 0.25 0.261747 0.245006 +0.0399 0.25 0.261647 0.245105 +0.04 0.25 0.261547 0.245207 +0.0401 0.25 0.261446 0.245311 +0.0402 0.25 0.261345 0.245417 +0.0403 0.25 0.261244 0.245525 +0.0404 0.25 0.261143 0.245634 +0.0405 0.25 0.261041 0.245746 +0.0406 0.25 0.260939 0.245859 +0.0407 0.25 0.260837 0.245974 +0.0408 0.25 0.260735 0.24609 +0.0409 0.25 0.260632 0.246208 +0.041 0.25 0.26053 0.246328 +0.0411 0.25 0.260427 0.246449 +0.0412 0.25 0.260324 0.246572 +0.0413 0.25 0.26022 0.246696 +0.0414 0.25 0.260117 0.246821 +0.0415 0.25 0.260013 0.246948 +0.0416 0.25 0.259909 0.247075 +0.0417 0.25 0.259805 0.247204 +0.0418 0.25 0.259701 0.247334 +0.0419 0.25 0.259597 0.247465 +0.042 0.25 0.259492 0.247597 +0.0421 0.25 0.259387 0.24773 +0.0422 0.25 0.259282 0.247864 +0.0423 0.25 0.259177 0.247998 +0.0424 0.25 0.259072 0.248133 +0.0425 0.25 0.258967 0.248269 +0.0426 0.25 0.258861 0.248406 +0.0427 0.25 0.258755 0.248543 +0.0428 0.25 0.25865 0.248681 +0.0429 0.25 0.258544 0.248819 +0.043 0.25 0.258437 0.248957 +0.0431 0.25 0.258331 0.249096 +0.0432 0.25 0.258225 0.249235 +0.0433 0.25 0.258118 0.249374 +0.0434 0.25 0.258012 0.249514 +0.0435 0.25 0.257905 0.249653 +0.0436 0.25 0.257798 0.249793 +0.0437 0.25 0.257691 0.249933 +0.0438 0.25 0.257584 0.250072 +0.0439 0.25 0.257476 0.250212 +0.044 0.25 0.257369 0.250351 +0.0441 0.25 0.257261 0.25049 +0.0442 0.25 0.257154 0.250629 +0.0443 0.25 0.257046 0.250767 +0.0444 0.25 0.256938 0.250905 +0.0445 0.25 0.25683 0.251043 +0.0446 0.25 0.256722 0.25118 +0.0447 0.25 0.256614 0.251316 +0.0448 0.25 0.256506 0.251452 +0.0449 0.25 0.256398 0.251588 +0.045 0.25 0.256289 0.251722 +0.0451 0.25 0.256181 0.251856 +0.0452 0.25 0.256072 0.251989 +0.0453 0.25 0.255964 0.252121 +0.0454 0.25 0.255855 0.252253 +0.0455 0.25 0.255746 0.252383 +0.0456 0.25 0.255638 0.252512 +0.0457 0.25 0.255529 0.252641 +0.0458 0.25 0.25542 0.252768 +0.0459 0.25 0.255311 0.252894 +0.046 0.25 0.255202 0.253019 +0.0461 0.25 0.255093 0.253142 +0.0462 0.25 0.254983 0.253265 +0.0463 0.25 0.254874 0.253386 +0.0464 0.25 0.254765 0.253505 +0.0465 0.25 0.254656 0.253624 +0.0466 0.25 0.254546 0.253741 +0.0467 0.25 0.254437 0.253856 +0.0468 0.25 0.254327 0.25397 +0.0469 0.25 0.254218 0.254082 +0.047 0.25 0.254109 0.254193 +0.0471 0.25 0.253999 0.254302 +0.0472 0.25 0.25389 0.254409 +0.0473 0.25 0.25378 0.254515 +0.0474 0.25 0.25367 0.254619 +0.0475 0.25 0.253561 0.254721 +0.0476 0.25 0.253451 0.254822 +0.0477 0.25 0.253342 0.25492 +0.0478 0.25 0.253232 0.255017 +0.0479 0.25 0.253122 0.255112 +0.048 0.25 0.253013 0.255204 +0.0481 0.25 0.252903 0.255295 +0.0482 0.25 0.252793 0.255384 +0.0483 0.25 0.252684 0.255471 +0.0484 0.25 0.252574 0.255556 +0.0485 0.25 0.252465 0.255639 +0.0486 0.25 0.252355 0.255719 +0.0487 0.25 0.252245 0.255798 +0.0488 0.25 0.252136 0.255874 +0.0489 0.25 0.252026 0.255948 +0.049 0.25 0.251917 0.25602 +0.0491 0.25 0.251807 0.25609 +0.0492 0.25 0.251698 0.256158 +0.0493 0.25 0.251588 0.256223 +0.0494 0.25 0.251479 0.256286 +0.0495 0.25 0.251369 0.256347 +0.0496 0.25 0.25126 0.256406 +0.0497 0.25 0.251151 0.256462 +0.0498 0.25 0.251041 0.256516 +0.0499 0.25 0.250932 0.256567 +0.05 0.25 0.250823 0.256617 +0.0501 0.25 0.250713 0.256663 +0.0502 0.25 0.250604 0.256708 +0.0503 0.25 0.250495 0.25675 +0.0504 0.25 0.250386 0.25679 +0.0505 0.25 0.250277 0.256827 +0.0506 0.25 0.250168 0.256862 +0.0507 0.25 0.250059 0.256894 +0.0508 0.25 0.249951 0.256924 +0.0509 0.25 0.249842 0.256952 +0.051 0.25 0.249733 0.256977 +0.0511 0.25 0.249625 0.257 +0.0512 0.25 0.249516 0.25702 +0.0513 0.25 0.249407 0.257038 +0.0514 0.25 0.249299 0.257053 +0.0515 0.25 0.249191 0.257066 +0.0516 0.25 0.249082 0.257077 +0.0517 0.25 0.248974 0.257085 +0.0518 0.25 0.248866 0.257091 +0.0519 0.25 0.248758 0.257094 +0.052 0.25 0.24865 0.257095 +0.0521 0.25 0.248542 0.257093 +0.0522 0.25 0.248435 0.257089 +0.0523 0.25 0.248327 0.257083 +0.0524 0.25 0.248219 0.257074 +0.0525 0.25 0.248112 0.257063 +0.0526 0.25 0.248005 0.25705 +0.0527 0.25 0.247897 0.257034 +0.0528 0.25 0.24779 0.257015 +0.0529 0.25 0.247683 0.256995 +0.053 0.25 0.247576 0.256972 +0.0531 0.25 0.247469 0.256947 +0.0532 0.25 0.247362 0.256919 +0.0533 0.25 0.247256 0.256889 +0.0534 0.25 0.247149 0.256857 +0.0535 0.25 0.247043 0.256822 +0.0536 0.25 0.246937 0.256786 +0.0537 0.25 0.24683 0.256747 +0.0538 0.25 0.246724 0.256706 +0.0539 0.25 0.246618 0.256662 +0.054 0.25 0.246513 0.256617 +0.0541 0.25 0.246407 0.256569 +0.0542 0.25 0.246301 0.256519 +0.0543 0.25 0.246196 0.256468 +0.0544 0.25 0.246091 0.256414 +0.0545 0.25 0.245985 0.256357 +0.0546 0.25 0.24588 0.256299 +0.0547 0.25 0.245775 0.256239 +0.0548 0.25 0.245671 0.256177 +0.0549 0.25 0.245566 0.256113 +0.055 0.25 0.245462 0.256047 +0.0551 0.25 0.245357 0.255979 +0.0552 0.25 0.245253 0.255909 +0.0553 0.25 0.245149 0.255837 +0.0554 0.25 0.245045 0.255763 +0.0555 0.25 0.244941 0.255688 +0.0556 0.25 0.244838 0.255611 +0.0557 0.25 0.244734 0.255532 +0.0558 0.25 0.244631 0.255451 +0.0559 0.25 0.244528 0.255368 +0.056 0.25 0.244425 0.255284 +0.0561 0.25 0.244322 0.255198 +0.0562 0.25 0.244219 0.255111 +0.0563 0.25 0.244117 0.255022 +0.0564 0.25 0.244015 0.254931 +0.0565 0.25 0.243912 0.254839 +0.0566 0.25 0.24381 0.254746 +0.0567 0.25 0.243709 0.254651 +0.0568 0.25 0.243607 0.254554 +0.0569 0.25 0.243506 0.254457 +0.057 0.25 0.243404 0.254357 +0.0571 0.25 0.243303 0.254257 +0.0572 0.25 0.243202 0.254155 +0.0573 0.25 0.243101 0.254052 +0.0574 0.25 0.243001 0.253948 +0.0575 0.25 0.2429 0.253842 +0.0576 0.25 0.2428 0.253735 +0.0577 0.25 0.2427 0.253628 +0.0578 0.25 0.2426 0.253519 +0.0579 0.25 0.242501 0.253409 +0.058 0.25 0.242401 0.253298 +0.0581 0.25 0.242302 0.253186 +0.0582 0.25 0.242203 0.253073 +0.0583 0.25 0.242104 0.252959 +0.0584 0.25 0.242005 0.252845 +0.0585 0.25 0.241907 0.252729 +0.0586 0.25 0.241809 0.252613 +0.0587 0.25 0.24171 0.252496 +0.0588 0.25 0.241613 0.252379 +0.0589 0.25 0.241515 0.25226 +0.059 0.25 0.241417 0.252141 +0.0591 0.25 0.24132 0.252021 +0.0592 0.25 0.241223 0.251901 +0.0593 0.25 0.241126 0.25178 +0.0594 0.25 0.24103 0.251659 +0.0595 0.25 0.240933 0.251537 +0.0596 0.25 0.240837 0.251415 +0.0597 0.25 0.240741 0.251293 +0.0598 0.25 0.240645 0.25117 +0.0599 0.25 0.240549 0.251047 +0.06 0.25 0.240454 0.250923 +0.0601 0.25 0.240359 0.2508 +0.0602 0.25 0.240264 0.250676 +0.0603 0.25 0.240169 0.250552 +0.0604 0.25 0.240075 0.250427 +0.0605 0.25 0.23998 0.250303 +0.0606 0.25 0.239886 0.250179 +0.0607 0.25 0.239793 0.250055 +0.0608 0.25 0.239699 0.24993 +0.0609 0.25 0.239606 0.249806 +0.061 0.25 0.239513 0.249682 +0.0611 0.25 0.23942 0.249558 +0.0612 0.25 0.239327 0.249434 +0.0613 0.25 0.239235 0.24931 +0.0614 0.25 0.239142 0.249187 +0.0615 0.25 0.23905 0.249064 +0.0616 0.25 0.238959 0.248941 +0.0617 0.25 0.238867 0.248818 +0.0618 0.25 0.238776 0.248696 +0.0619 0.25 0.238685 0.248574 +0.062 0.25 0.238594 0.248453 +0.0621 0.25 0.238504 0.248332 +0.0622 0.25 0.238413 0.248212 +0.0623 0.25 0.238323 0.248092 +0.0624 0.25 0.238234 0.247973 +0.0625 0.25 0.238144 0.247855 +0.0626 0.25 0.238055 0.247737 +0.0627 0.25 0.237966 0.247619 +0.0628 0.25 0.237877 0.247503 +0.0629 0.25 0.237789 0.247387 +0.063 0.25 0.2377 0.247272 +0.0631 0.25 0.237612 0.247158 +0.0632 0.25 0.237524 0.247045 +0.0633 0.25 0.237437 0.246932 +0.0634 0.25 0.23735 0.246821 +0.0635 0.25 0.237263 0.24671 +0.0636 0.25 0.237176 0.2466 +0.0637 0.25 0.237089 0.246492 +0.0638 0.25 0.237003 0.246384 +0.0639 0.25 0.236917 0.246277 +0.064 0.25 0.236832 0.246172 +0.0641 0.25 0.236746 0.246067 +0.0642 0.25 0.236661 0.245964 +0.0643 0.25 0.236576 0.245862 +0.0644 0.25 0.236492 0.245761 +0.0645 0.25 0.236407 0.245661 +0.0646 0.25 0.236323 0.245562 +0.0647 0.25 0.236239 0.245465 +0.0648 0.25 0.236156 0.245369 +0.0649 0.25 0.236072 0.245274 +0.065 0.25 0.235989 0.245181 +0.0651 0.25 0.235907 0.245089 +0.0652 0.25 0.235824 0.244998 +0.0653 0.25 0.235742 0.244909 +0.0654 0.25 0.23566 0.244821 +0.0655 0.25 0.235579 0.244735 +0.0656 0.25 0.235497 0.24465 +0.0657 0.25 0.235416 0.244566 +0.0658 0.25 0.235335 0.244484 +0.0659 0.25 0.235255 0.244404 +0.066 0.25 0.235175 0.244325 +0.0661 0.25 0.235095 0.244248 +0.0662 0.25 0.235015 0.244172 +0.0663 0.25 0.234936 0.244098 +0.0664 0.25 0.234857 0.244026 +0.0665 0.25 0.234778 0.243955 +0.0666 0.25 0.234699 0.243885 +0.0667 0.25 0.234621 0.243818 +0.0668 0.25 0.234543 0.243752 +0.0669 0.25 0.234465 0.243688 +0.067 0.25 0.234388 0.243625 +0.0671 0.25 0.234311 0.243565 +0.0672 0.25 0.234234 0.243506 +0.0673 0.25 0.234158 0.243448 +0.0674 0.25 0.234081 0.243393 +0.0675 0.25 0.234006 0.243339 +0.0676 0.25 0.23393 0.243287 +0.0677 0.25 0.233855 0.243237 +0.0678 0.25 0.23378 0.243189 +0.0679 0.25 0.233705 0.243142 +0.068 0.25 0.23363 0.243098 +0.0681 0.25 0.233556 0.243055 +0.0682 0.25 0.233482 0.243014 +0.0683 0.25 0.233409 0.242975 +0.0684 0.25 0.233336 0.242938 +0.0685 0.25 0.233263 0.242902 +0.0686 0.25 0.23319 0.242869 +0.0687 0.25 0.233118 0.242837 +0.0688 0.25 0.233046 0.242807 +0.0689 0.25 0.232974 0.24278 +0.069 0.25 0.232903 0.242754 +0.0691 0.25 0.232832 0.24273 +0.0692 0.25 0.232761 0.242707 +0.0693 0.25 0.23269 0.242687 +0.0694 0.25 0.23262 0.242669 +0.0695 0.25 0.23255 0.242652 +0.0696 0.25 0.232481 0.242638 +0.0697 0.25 0.232411 0.242625 +0.0698 0.25 0.232342 0.242615 +0.0699 0.25 0.232274 0.242606 +0.07 0.25 0.232205 0.242599 +0.0701 0.25 0.232137 0.242594 +0.0702 0.25 0.23207 0.242591 +0.0703 0.25 0.232002 0.24259 +0.0704 0.25 0.231935 0.242591 +0.0705 0.25 0.231868 0.242593 +0.0706 0.25 0.231802 0.242598 +0.0707 0.25 0.231736 0.242604 +0.0708 0.25 0.23167 0.242613 +0.0709 0.25 0.231604 0.242623 +0.071 0.25 0.231539 0.242635 +0.0711 0.25 0.231474 0.242649 +0.0712 0.25 0.23141 0.242665 +0.0713 0.25 0.231345 0.242683 +0.0714 0.25 0.231281 0.242702 +0.0715 0.25 0.231218 0.242724 +0.0716 0.25 0.231154 0.242747 +0.0717 0.25 0.231091 0.242772 +0.0718 0.25 0.231029 0.242799 +0.0719 0.25 0.230966 0.242828 +0.072 0.25 0.230904 0.242858 +0.0721 0.25 0.230843 0.24289 +0.0722 0.25 0.230781 0.242925 +0.0723 0.25 0.23072 0.24296 +0.0724 0.25 0.230659 0.242998 +0.0725 0.25 0.230599 0.243037 +0.0726 0.25 0.230539 0.243078 +0.0727 0.25 0.230479 0.243121 +0.0728 0.25 0.23042 0.243166 +0.0729 0.25 0.23036 0.243212 +0.073 0.25 0.230302 0.24326 +0.0731 0.25 0.230243 0.243309 +0.0732 0.25 0.230185 0.243361 +0.0733 0.25 0.230127 0.243414 +0.0734 0.25 0.23007 0.243468 +0.0735 0.25 0.230013 0.243524 +0.0736 0.25 0.229956 0.243582 +0.0737 0.25 0.229899 0.243641 +0.0738 0.25 0.229843 0.243702 +0.0739 0.25 0.229787 0.243764 +0.074 0.25 0.229732 0.243828 +0.0741 0.25 0.229676 0.243893 +0.0742 0.25 0.229621 0.24396 +0.0743 0.25 0.229567 0.244029 +0.0744 0.25 0.229513 0.244098 +0.0745 0.25 0.229459 0.24417 +0.0746 0.25 0.229405 0.244242 +0.0747 0.25 0.229352 0.244316 +0.0748 0.25 0.229299 0.244392 +0.0749 0.25 0.229247 0.244468 +0.075 0.25 0.229194 0.244546 +0.0751 0.25 0.229142 0.244626 +0.0752 0.25 0.229091 0.244706 +0.0753 0.25 0.22904 0.244788 +0.0754 0.25 0.228989 0.244872 +0.0755 0.25 0.228938 0.244956 +0.0756 0.25 0.228888 0.245042 +0.0757 0.25 0.228838 0.245128 +0.0758 0.25 0.228788 0.245216 +0.0759 0.25 0.228739 0.245305 +0.076 0.25 0.22869 0.245396 +0.0761 0.25 0.228642 0.245487 +0.0762 0.25 0.228593 0.245579 +0.0763 0.25 0.228546 0.245673 +0.0764 0.25 0.228498 0.245767 +0.0765 0.25 0.228451 0.245862 +0.0766 0.25 0.228404 0.245959 +0.0767 0.25 0.228357 0.246056 +0.0768 0.25 0.228311 0.246154 +0.0769 0.25 0.228265 0.246254 +0.077 0.25 0.22822 0.246354 +0.0771 0.25 0.228174 0.246455 +0.0772 0.25 0.22813 0.246556 +0.0773 0.25 0.228085 0.246659 +0.0774 0.25 0.228041 0.246762 +0.0775 0.25 0.227997 0.246866 +0.0776 0.25 0.227953 0.246971 +0.0777 0.25 0.22791 0.247077 +0.0778 0.25 0.227867 0.247183 +0.0779 0.25 0.227825 0.247289 +0.078 0.25 0.227783 0.247397 +0.0781 0.25 0.227741 0.247505 +0.0782 0.25 0.227699 0.247614 +0.0783 0.25 0.227658 0.247723 +0.0784 0.25 0.227617 0.247832 +0.0785 0.25 0.227577 0.247943 +0.0786 0.25 0.227537 0.248053 +0.0787 0.25 0.227497 0.248164 +0.0788 0.25 0.227458 0.248276 +0.0789 0.25 0.227418 0.248388 +0.079 0.25 0.22738 0.2485 +0.0791 0.25 0.227341 0.248612 +0.0792 0.25 0.227303 0.248725 +0.0793 0.25 0.227265 0.248839 +0.0794 0.25 0.227228 0.248952 +0.0795 0.25 0.227191 0.249066 +0.0796 0.25 0.227154 0.24918 +0.0797 0.25 0.227118 0.249294 +0.0798 0.25 0.227082 0.249408 +0.0799 0.25 0.227046 0.249522 +0.08 0.25 0.22701 0.249637 +0.0801 0.25 0.226975 0.249751 +0.0802 0.25 0.226941 0.249866 +0.0803 0.25 0.226906 0.24998 +0.0804 0.25 0.226872 0.250095 +0.0805 0.25 0.226839 0.250209 +0.0806 0.25 0.226805 0.250324 +0.0807 0.25 0.226772 0.250438 +0.0808 0.25 0.22674 0.250553 +0.0809 0.25 0.226707 0.250667 +0.081 0.25 0.226675 0.250781 +0.0811 0.25 0.226644 0.250895 +0.0812 0.25 0.226612 0.251008 +0.0813 0.25 0.226581 0.251122 +0.0814 0.25 0.226551 0.251235 +0.0815 0.25 0.22652 0.251347 +0.0816 0.25 0.22649 0.25146 +0.0817 0.25 0.226461 0.251572 +0.0818 0.25 0.226432 0.251684 +0.0819 0.25 0.226403 0.251796 +0.082 0.25 0.226374 0.251907 +0.0821 0.25 0.226346 0.252017 +0.0822 0.25 0.226318 0.252127 +0.0823 0.25 0.22629 0.252237 +0.0824 0.25 0.226263 0.252346 +0.0825 0.25 0.226236 0.252455 +0.0826 0.25 0.22621 0.252563 +0.0827 0.25 0.226183 0.25267 +0.0828 0.25 0.226158 0.252777 +0.0829 0.25 0.226132 0.252884 +0.083 0.25 0.226107 0.252989 +0.0831 0.25 0.226082 0.253094 +0.0832 0.25 0.226058 0.253199 +0.0833 0.25 0.226033 0.253302 +0.0834 0.25 0.22601 0.253405 +0.0835 0.25 0.225986 0.253507 +0.0836 0.25 0.225963 0.253609 +0.0837 0.25 0.22594 0.253709 +0.0838 0.25 0.225918 0.253809 +0.0839 0.25 0.225895 0.253908 +0.084 0.25 0.225874 0.254006 +0.0841 0.25 0.225852 0.254103 +0.0842 0.25 0.225831 0.254199 +0.0843 0.25 0.22581 0.254295 +0.0844 0.25 0.22579 0.254389 +0.0845 0.25 0.22577 0.254483 +0.0846 0.25 0.22575 0.254575 +0.0847 0.25 0.225731 0.254666 +0.0848 0.25 0.225711 0.254757 +0.0849 0.25 0.225693 0.254846 +0.085 0.25 0.225674 0.254935 +0.0851 0.25 0.225656 0.255022 +0.0852 0.25 0.225638 0.255108 +0.0853 0.25 0.225621 0.255193 +0.0854 0.25 0.225604 0.255277 +0.0855 0.25 0.225587 0.25536 +0.0856 0.25 0.225571 0.255442 +0.0857 0.25 0.225555 0.255523 +0.0858 0.25 0.225539 0.255602 +0.0859 0.25 0.225524 0.25568 +0.086 0.25 0.225509 0.255757 +0.0861 0.25 0.225494 0.255833 +0.0862 0.25 0.225479 0.255907 +0.0863 0.25 0.225465 0.25598 +0.0864 0.25 0.225452 0.256052 +0.0865 0.25 0.225438 0.256123 +0.0866 0.25 0.225425 0.256192 +0.0867 0.25 0.225412 0.25626 +0.0868 0.25 0.2254 0.256327 +0.0869 0.25 0.225388 0.256392 +0.087 0.25 0.225376 0.256456 +0.0871 0.25 0.225365 0.256519 +0.0872 0.25 0.225354 0.25658 +0.0873 0.25 0.225343 0.25664 +0.0874 0.25 0.225333 0.256698 +0.0875 0.25 0.225323 0.256755 +0.0876 0.25 0.225313 0.256811 +0.0877 0.25 0.225304 0.256865 +0.0878 0.25 0.225295 0.256918 +0.0879 0.25 0.225286 0.256969 +0.088 0.25 0.225277 0.257019 +0.0881 0.25 0.225269 0.257067 +0.0882 0.25 0.225262 0.257114 +0.0883 0.25 0.225254 0.25716 +0.0884 0.25 0.225247 0.257204 +0.0885 0.25 0.22524 0.257246 +0.0886 0.25 0.225234 0.257287 +0.0887 0.25 0.225228 0.257326 +0.0888 0.25 0.225222 0.257364 +0.0889 0.25 0.225217 0.2574 +0.089 0.25 0.225212 0.257435 +0.0891 0.25 0.225207 0.257468 +0.0892 0.25 0.225202 0.2575 +0.0893 0.25 0.225198 0.25753 +0.0894 0.25 0.225194 0.257559 +0.0895 0.25 0.225191 0.257586 +0.0896 0.25 0.225188 0.257611 +0.0897 0.25 0.225185 0.257635 +0.0898 0.25 0.225182 0.257658 +0.0899 0.25 0.22518 0.257678 +0.09 0.25 0.225178 0.257698 +0.0901 0.25 0.225177 0.257715 +0.0902 0.25 0.225176 0.257731 +0.0903 0.25 0.225175 0.257746 +0.0904 0.25 0.225174 0.257759 +0.0905 0.25 0.225174 0.25777 +0.0906 0.25 0.225174 0.25778 +0.0907 0.25 0.225175 0.257788 +0.0908 0.25 0.225175 0.257794 +0.0909 0.25 0.225176 0.257799 +0.091 0.25 0.225178 0.257802 +0.0911 0.25 0.225179 0.257804 +0.0912 0.25 0.225182 0.257804 +0.0913 0.25 0.225184 0.257803 +0.0914 0.25 0.225187 0.2578 +0.0915 0.25 0.22519 0.257795 +0.0916 0.25 0.225193 0.257789 +0.0917 0.25 0.225196 0.257782 +0.0918 0.25 0.2252 0.257772 +0.0919 0.25 0.225205 0.257761 +0.092 0.25 0.225209 0.257749 +0.0921 0.25 0.225214 0.257735 +0.0922 0.25 0.225219 0.25772 +0.0923 0.25 0.225225 0.257702 +0.0924 0.25 0.225231 0.257684 +0.0925 0.25 0.225237 0.257664 +0.0926 0.25 0.225243 0.257642 +0.0927 0.25 0.22525 0.257619 +0.0928 0.25 0.225257 0.257594 +0.0929 0.25 0.225265 0.257568 +0.093 0.25 0.225272 0.25754 +0.0931 0.25 0.22528 0.257511 +0.0932 0.25 0.225289 0.25748 +0.0933 0.25 0.225297 0.257448 +0.0934 0.25 0.225306 0.257414 +0.0935 0.25 0.225316 0.257379 +0.0936 0.25 0.225325 0.257342 +0.0937 0.25 0.225335 0.257304 +0.0938 0.25 0.225345 0.257264 +0.0939 0.25 0.225356 0.257223 +0.094 0.25 0.225367 0.257181 +0.0941 0.25 0.225378 0.257137 +0.0942 0.25 0.225389 0.257092 +0.0943 0.25 0.225401 0.257045 +0.0944 0.25 0.225413 0.256997 +0.0945 0.25 0.225426 0.256948 +0.0946 0.25 0.225438 0.256897 +0.0947 0.25 0.225451 0.256845 +0.0948 0.25 0.225465 0.256791 +0.0949 0.25 0.225478 0.256736 +0.095 0.25 0.225492 0.25668 +0.0951 0.25 0.225506 0.256623 +0.0952 0.25 0.225521 0.256564 +0.0953 0.25 0.225536 0.256504 +0.0954 0.25 0.225551 0.256443 +0.0955 0.25 0.225566 0.25638 +0.0956 0.25 0.225582 0.256316 +0.0957 0.25 0.225598 0.256251 +0.0958 0.25 0.225614 0.256185 +0.0959 0.25 0.225631 0.256118 +0.096 0.25 0.225648 0.256049 +0.0961 0.25 0.225665 0.255979 +0.0962 0.25 0.225683 0.255908 +0.0963 0.25 0.225701 0.255836 +0.0964 0.25 0.225719 0.255763 +0.0965 0.25 0.225737 0.255689 +0.0966 0.25 0.225756 0.255613 +0.0967 0.25 0.225775 0.255537 +0.0968 0.25 0.225794 0.255459 +0.0969 0.25 0.225814 0.25538 +0.097 0.25 0.225834 0.255301 +0.0971 0.25 0.225854 0.25522 +0.0972 0.25 0.225875 0.255138 +0.0973 0.25 0.225895 0.255055 +0.0974 0.25 0.225916 0.254972 +0.0975 0.25 0.225938 0.254887 +0.0976 0.25 0.225959 0.254801 +0.0977 0.25 0.225981 0.254715 +0.0978 0.25 0.226004 0.254627 +0.0979 0.25 0.226026 0.254539 +0.098 0.25 0.226049 0.25445 +0.0981 0.25 0.226072 0.25436 +0.0982 0.25 0.226096 0.254269 +0.0983 0.25 0.226119 0.254177 +0.0984 0.25 0.226143 0.254085 +0.0985 0.25 0.226168 0.253992 +0.0986 0.25 0.226192 0.253898 +0.0987 0.25 0.226217 0.253803 +0.0988 0.25 0.226242 0.253708 +0.0989 0.25 0.226268 0.253611 +0.099 0.25 0.226293 0.253514 +0.0991 0.25 0.226319 0.253417 +0.0992 0.25 0.226346 0.253319 +0.0993 0.25 0.226372 0.25322 +0.0994 0.25 0.226399 0.25312 +0.0995 0.25 0.226426 0.25302 +0.0996 0.25 0.226453 0.25292 +0.0997 0.25 0.226481 0.252819 +0.0998 0.25 0.226509 0.252717 +0.0999 0.25 0.226537 0.252615 +0.1 0.25 0.226566 0.252512 +0.1001 0.25 0.226595 0.252409 +0.1002 0.25 0.226624 0.252305 +0.1003 0.25 0.226653 0.252201 +0.1004 0.25 0.226683 0.252097 +0.1005 0.25 0.226713 0.251992 +0.1006 0.25 0.226743 0.251887 +0.1007 0.25 0.226773 0.251781 +0.1008 0.25 0.226804 0.251675 +0.1009 0.25 0.226835 0.251569 +0.101 0.25 0.226866 0.251462 +0.1011 0.25 0.226898 0.251355 +0.1012 0.25 0.22693 0.251248 +0.1013 0.25 0.226962 0.251141 +0.1014 0.25 0.226994 0.251033 +0.1015 0.25 0.227027 0.250925 +0.1016 0.25 0.22706 0.250817 +0.1017 0.25 0.227093 0.250709 +0.1018 0.25 0.227126 0.250601 +0.1019 0.25 0.22716 0.250493 +0.102 0.25 0.227194 0.250384 +0.1021 0.25 0.227228 0.250276 +0.1022 0.25 0.227263 0.250167 +0.1023 0.25 0.227297 0.250058 +0.1024 0.25 0.227332 0.24995 +0.1025 0.25 0.227368 0.249841 +0.1026 0.25 0.227403 0.249732 +0.1027 0.25 0.227439 0.249624 +0.1028 0.25 0.227475 0.249515 +0.1029 0.25 0.227512 0.249406 +0.103 0.25 0.227548 0.249298 +0.1031 0.25 0.227585 0.24919 +0.1032 0.25 0.227622 0.249082 +0.1033 0.25 0.22766 0.248974 +0.1034 0.25 0.227697 0.248866 +0.1035 0.25 0.227735 0.248758 +0.1036 0.25 0.227773 0.248651 +0.1037 0.25 0.227812 0.248544 +0.1038 0.25 0.22785 0.248437 +0.1039 0.25 0.227889 0.24833 +0.104 0.25 0.227928 0.248224 +0.1041 0.25 0.227968 0.248118 +0.1042 0.25 0.228008 0.248012 +0.1043 0.25 0.228048 0.247907 +0.1044 0.25 0.228088 0.247802 +0.1045 0.25 0.228128 0.247697 +0.1046 0.25 0.228169 0.247593 +0.1047 0.25 0.22821 0.247489 +0.1048 0.25 0.228251 0.247386 +0.1049 0.25 0.228292 0.247283 +0.105 0.25 0.228334 0.24718 +0.1051 0.25 0.228376 0.247078 +0.1052 0.25 0.228418 0.246977 +0.1053 0.25 0.228461 0.246876 +0.1054 0.25 0.228503 0.246776 +0.1055 0.25 0.228546 0.246676 +0.1056 0.25 0.228589 0.246577 +0.1057 0.25 0.228633 0.246478 +0.1058 0.25 0.228677 0.24638 +0.1059 0.25 0.22872 0.246283 +0.106 0.25 0.228765 0.246186 +0.1061 0.25 0.228809 0.24609 +0.1062 0.25 0.228854 0.245995 +0.1063 0.25 0.228898 0.2459 +0.1064 0.25 0.228944 0.245806 +0.1065 0.25 0.228989 0.245713 +0.1066 0.25 0.229034 0.24562 +0.1067 0.25 0.22908 0.245528 +0.1068 0.25 0.229126 0.245438 +0.1069 0.25 0.229173 0.245347 +0.107 0.25 0.229219 0.245258 +0.1071 0.25 0.229266 0.24517 +0.1072 0.25 0.229313 0.245082 +0.1073 0.25 0.22936 0.244995 +0.1074 0.25 0.229407 0.244909 +0.1075 0.25 0.229455 0.244824 +0.1076 0.25 0.229503 0.24474 +0.1077 0.25 0.229551 0.244657 +0.1078 0.25 0.2296 0.244574 +0.1079 0.25 0.229648 0.244493 +0.108 0.25 0.229697 0.244412 +0.1081 0.25 0.229746 0.244333 +0.1082 0.25 0.229795 0.244254 +0.1083 0.25 0.229845 0.244177 +0.1084 0.25 0.229895 0.2441 +0.1085 0.25 0.229945 0.244025 +0.1086 0.25 0.229995 0.24395 +0.1087 0.25 0.230045 0.243877 +0.1088 0.25 0.230096 0.243804 +0.1089 0.25 0.230147 0.243733 +0.109 0.25 0.230198 0.243663 +0.1091 0.25 0.230249 0.243594 +0.1092 0.25 0.2303 0.243526 +0.1093 0.25 0.230352 0.243459 +0.1094 0.25 0.230404 0.243393 +0.1095 0.25 0.230456 0.243328 +0.1096 0.25 0.230509 0.243265 +0.1097 0.25 0.230561 0.243202 +0.1098 0.25 0.230614 0.243141 +0.1099 0.25 0.230667 0.243081 +0.11 0.25 0.23072 0.243022 +0.1101 0.25 0.230774 0.242964 +0.1102 0.25 0.230827 0.242908 +0.1103 0.25 0.230881 0.242852 +0.1104 0.25 0.230935 0.242798 +0.1105 0.25 0.23099 0.242745 +0.1106 0.25 0.231044 0.242694 +0.1107 0.25 0.231099 0.242643 +0.1108 0.25 0.231154 0.242594 +0.1109 0.25 0.231209 0.242546 +0.111 0.25 0.231264 0.2425 +0.1111 0.25 0.23132 0.242454 +0.1112 0.25 0.231376 0.24241 +0.1113 0.25 0.231432 0.242367 +0.1114 0.25 0.231488 0.242326 +0.1115 0.25 0.231544 0.242286 +0.1116 0.25 0.231601 0.242247 +0.1117 0.25 0.231657 0.242209 +0.1118 0.25 0.231714 0.242173 +0.1119 0.25 0.231771 0.242138 +0.112 0.25 0.231829 0.242104 +0.1121 0.25 0.231886 0.242072 +0.1122 0.25 0.231944 0.242041 +0.1123 0.25 0.232002 0.242011 +0.1124 0.25 0.23206 0.241983 +0.1125 0.25 0.232119 0.241956 +0.1126 0.25 0.232177 0.241931 +0.1127 0.25 0.232236 0.241906 +0.1128 0.25 0.232295 0.241883 +0.1129 0.25 0.232354 0.241862 +0.113 0.25 0.232413 0.241842 +0.1131 0.25 0.232473 0.241823 +0.1132 0.25 0.232532 0.241805 +0.1133 0.25 0.232592 0.241789 +0.1134 0.25 0.232652 0.241775 +0.1135 0.25 0.232713 0.241761 +0.1136 0.25 0.232773 0.241749 +0.1137 0.25 0.232834 0.241739 +0.1138 0.25 0.232895 0.24173 +0.1139 0.25 0.232956 0.241722 +0.114 0.25 0.233017 0.241715 +0.1141 0.25 0.233078 0.24171 +0.1142 0.25 0.23314 0.241706 +0.1143 0.25 0.233202 0.241704 +0.1144 0.25 0.233263 0.241703 +0.1145 0.25 0.233326 0.241704 +0.1146 0.25 0.233388 0.241705 +0.1147 0.25 0.23345 0.241709 +0.1148 0.25 0.233513 0.241713 +0.1149 0.25 0.233576 0.241719 +0.115 0.25 0.233639 0.241726 +0.1151 0.25 0.233702 0.241735 +0.1152 0.25 0.233765 0.241745 +0.1153 0.25 0.233829 0.241756 +0.1154 0.25 0.233893 0.241769 +0.1155 0.25 0.233956 0.241783 +0.1156 0.25 0.23402 0.241799 +0.1157 0.25 0.234085 0.241816 +0.1158 0.25 0.234149 0.241834 +0.1159 0.25 0.234214 0.241853 +0.116 0.25 0.234278 0.241874 +0.1161 0.25 0.234343 0.241896 +0.1162 0.25 0.234408 0.24192 +0.1163 0.25 0.234474 0.241944 +0.1164 0.25 0.234539 0.241971 +0.1165 0.25 0.234605 0.241998 +0.1166 0.25 0.23467 0.242027 +0.1167 0.25 0.234736 0.242057 +0.1168 0.25 0.234802 0.242088 +0.1169 0.25 0.234868 0.242121 +0.117 0.25 0.234935 0.242155 +0.1171 0.25 0.235001 0.24219 +0.1172 0.25 0.235068 0.242227 +0.1173 0.25 0.235135 0.242264 +0.1174 0.25 0.235202 0.242304 +0.1175 0.25 0.235269 0.242344 +0.1176 0.25 0.235337 0.242385 +0.1177 0.25 0.235404 0.242428 +0.1178 0.25 0.235472 0.242472 +0.1179 0.25 0.23554 0.242517 +0.118 0.25 0.235608 0.242564 +0.1181 0.25 0.235676 0.242612 +0.1182 0.25 0.235744 0.24266 +0.1183 0.25 0.235812 0.24271 +0.1184 0.25 0.235881 0.242762 +0.1185 0.25 0.23595 0.242814 +0.1186 0.25 0.236019 0.242868 +0.1187 0.25 0.236088 0.242922 +0.1188 0.25 0.236157 0.242978 +0.1189 0.25 0.236226 0.243035 +0.119 0.25 0.236296 0.243094 +0.1191 0.25 0.236365 0.243153 +0.1192 0.25 0.236435 0.243213 +0.1193 0.25 0.236505 0.243275 +0.1194 0.25 0.236575 0.243337 +0.1195 0.25 0.236645 0.243401 +0.1196 0.25 0.236715 0.243466 +0.1197 0.25 0.236786 0.243531 +0.1198 0.25 0.236856 0.243598 +0.1199 0.25 0.236927 0.243666 +0.12 0.25 0.236998 0.243735 +0.1201 0.25 0.237069 0.243805 +0.1202 0.25 0.23714 0.243876 +0.1203 0.25 0.237212 0.243947 +0.1204 0.25 0.237283 0.24402 +0.1205 0.25 0.237355 0.244094 +0.1206 0.25 0.237426 0.244169 +0.1207 0.25 0.237498 0.244245 +0.1208 0.25 0.23757 0.244321 +0.1209 0.25 0.237642 0.244399 +0.121 0.25 0.237715 0.244477 +0.1211 0.25 0.237787 0.244556 +0.1212 0.25 0.23786 0.244637 +0.1213 0.25 0.237932 0.244718 +0.1214 0.25 0.238005 0.244799 +0.1215 0.25 0.238078 0.244882 +0.1216 0.25 0.238151 0.244966 +0.1217 0.25 0.238224 0.24505 +0.1218 0.25 0.238297 0.245135 +0.1219 0.25 0.238371 0.245221 +0.122 0.25 0.238444 0.245308 +0.1221 0.25 0.238518 0.245395 +0.1222 0.25 0.238592 0.245484 +0.1223 0.25 0.238665 0.245573 +0.1224 0.25 0.238739 0.245662 +0.1225 0.25 0.238814 0.245752 +0.1226 0.25 0.238888 0.245843 +0.1227 0.25 0.238962 0.245935 +0.1228 0.25 0.239037 0.246027 +0.1229 0.25 0.239111 0.24612 +0.123 0.25 0.239186 0.246214 +0.1231 0.25 0.239261 0.246308 +0.1232 0.25 0.239336 0.246403 +0.1233 0.25 0.239411 0.246498 +0.1234 0.25 0.239486 0.246594 +0.1235 0.25 0.239561 0.246691 +0.1236 0.25 0.239637 0.246788 +0.1237 0.25 0.239712 0.246885 +0.1238 0.25 0.239788 0.246983 +0.1239 0.25 0.239864 0.247082 +0.124 0.25 0.239939 0.247181 +0.1241 0.25 0.240015 0.24728 +0.1242 0.25 0.240091 0.24738 +0.1243 0.25 0.240168 0.247481 +0.1244 0.25 0.240244 0.247581 +0.1245 0.25 0.24032 0.247683 +0.1246 0.25 0.240397 0.247784 +0.1247 0.25 0.240473 0.247886 +0.1248 0.25 0.24055 0.247988 +0.1249 0.25 0.240627 0.248091 +0.125 0.25 0.240704 0.248194 +0.1251 0.25 0.240781 0.248297 +0.1252 0.25 0.240858 0.2484 +0.1253 0.25 0.240935 0.248504 +0.1254 0.25 0.241012 0.248608 +0.1255 0.25 0.241089 0.248712 +0.1256 0.25 0.241167 0.248817 +0.1257 0.25 0.241245 0.248921 +0.1258 0.25 0.241322 0.249026 +0.1259 0.25 0.2414 0.249131 +0.126 0.25 0.241478 0.249236 +0.1261 0.25 0.241556 0.249341 +0.1262 0.25 0.241634 0.249447 +0.1263 0.25 0.241712 0.249552 +0.1264 0.25 0.24179 0.249658 +0.1265 0.25 0.241868 0.249764 +0.1266 0.25 0.241947 0.249869 +0.1267 0.25 0.242025 0.249975 +0.1268 0.25 0.242104 0.250081 +0.1269 0.25 0.242182 0.250187 +0.127 0.25 0.242261 0.250293 +0.1271 0.25 0.24234 0.250399 +0.1272 0.25 0.242419 0.250504 +0.1273 0.25 0.242498 0.25061 +0.1274 0.25 0.242577 0.250716 +0.1275 0.25 0.242656 0.250821 +0.1276 0.25 0.242735 0.250927 +0.1277 0.25 0.242815 0.251032 +0.1278 0.25 0.242894 0.251137 +0.1279 0.25 0.242973 0.251242 +0.128 0.25 0.243053 0.251347 +0.1281 0.25 0.243133 0.251452 +0.1282 0.25 0.243212 0.251556 +0.1283 0.25 0.243292 0.251661 +0.1284 0.25 0.243372 0.251765 +0.1285 0.25 0.243452 0.251869 +0.1286 0.25 0.243532 0.251972 +0.1287 0.25 0.243612 0.252076 +0.1288 0.25 0.243692 0.252179 +0.1289 0.25 0.243772 0.252281 +0.129 0.25 0.243853 0.252384 +0.1291 0.25 0.243933 0.252486 +0.1292 0.25 0.244013 0.252588 +0.1293 0.25 0.244094 0.252689 +0.1294 0.25 0.244174 0.25279 +0.1295 0.25 0.244255 0.252891 +0.1296 0.25 0.244336 0.252991 +0.1297 0.25 0.244416 0.253091 +0.1298 0.25 0.244497 0.25319 +0.1299 0.25 0.244578 0.253289 +0.13 0.25 0.244659 0.253387 +0.1301 0.25 0.24474 0.253485 +0.1302 0.25 0.244821 0.253583 +0.1303 0.25 0.244902 0.25368 +0.1304 0.25 0.244983 0.253776 +0.1305 0.25 0.245065 0.253872 +0.1306 0.25 0.245146 0.253967 +0.1307 0.25 0.245227 0.254062 +0.1308 0.25 0.245309 0.254156 +0.1309 0.25 0.24539 0.25425 +0.131 0.25 0.245472 0.254343 +0.1311 0.25 0.245553 0.254435 +0.1312 0.25 0.245635 0.254527 +0.1313 0.25 0.245717 0.254618 +0.1314 0.25 0.245798 0.254709 +0.1315 0.25 0.24588 0.254798 +0.1316 0.25 0.245962 0.254888 +0.1317 0.25 0.246044 0.254976 +0.1318 0.25 0.246126 0.255064 +0.1319 0.25 0.246208 0.255151 +0.132 0.25 0.24629 0.255237 +0.1321 0.25 0.246372 0.255322 +0.1322 0.25 0.246454 0.255407 +0.1323 0.25 0.246536 0.255491 +0.1324 0.25 0.246618 0.255574 +0.1325 0.25 0.246701 0.255657 +0.1326 0.25 0.246783 0.255738 +0.1327 0.25 0.246865 0.255819 +0.1328 0.25 0.246948 0.255899 +0.1329 0.25 0.24703 0.255978 +0.133 0.25 0.247113 0.256056 +0.1331 0.25 0.247195 0.256134 +0.1332 0.25 0.247278 0.25621 +0.1333 0.25 0.24736 0.256286 +0.1334 0.25 0.247443 0.25636 +0.1335 0.25 0.247526 0.256434 +0.1336 0.25 0.247608 0.256507 +0.1337 0.25 0.247691 0.256579 +0.1338 0.25 0.247774 0.25665 +0.1339 0.25 0.247857 0.25672 +0.134 0.25 0.247939 0.256789 +0.1341 0.25 0.248022 0.256858 +0.1342 0.25 0.248105 0.256925 +0.1343 0.25 0.248188 0.256991 +0.1344 0.25 0.248271 0.257056 +0.1345 0.25 0.248354 0.25712 +0.1346 0.25 0.248437 0.257184 +0.1347 0.25 0.24852 0.257246 +0.1348 0.25 0.248603 0.257307 +0.1349 0.25 0.248686 0.257367 +0.135 0.25 0.248769 0.257426 +0.1351 0.25 0.248852 0.257484 +0.1352 0.25 0.248936 0.257541 +0.1353 0.25 0.249019 0.257597 +0.1354 0.25 0.249102 0.257652 +0.1355 0.25 0.249185 0.257706 +0.1356 0.25 0.249268 0.257758 +0.1357 0.25 0.249352 0.25781 +0.1358 0.25 0.249435 0.25786 +0.1359 0.25 0.249518 0.25791 +0.136 0.25 0.249602 0.257958 +0.1361 0.25 0.249685 0.258005 +0.1362 0.25 0.249768 0.258051 +0.1363 0.25 0.249852 0.258096 +0.1364 0.25 0.249935 0.258139 +0.1365 0.25 0.250018 0.258182 +0.1366 0.25 0.250102 0.258223 +0.1367 0.25 0.250185 0.258263 +0.1368 0.25 0.250269 0.258302 +0.1369 0.25 0.250352 0.25834 +0.137 0.25 0.250436 0.258377 +0.1371 0.25 0.250519 0.258412 +0.1372 0.25 0.250603 0.258447 +0.1373 0.25 0.250686 0.25848 +0.1374 0.25 0.25077 0.258512 +0.1375 0.25 0.250853 0.258543 +0.1376 0.25 0.250937 0.258572 +0.1377 0.25 0.25102 0.258601 +0.1378 0.25 0.251104 0.258628 +0.1379 0.25 0.251187 0.258654 +0.138 0.25 0.251271 0.258678 +0.1381 0.25 0.251354 0.258702 +0.1382 0.25 0.251438 0.258724 +0.1383 0.25 0.251521 0.258745 +0.1384 0.25 0.251605 0.258765 +0.1385 0.25 0.251688 0.258783 +0.1386 0.25 0.251772 0.258801 +0.1387 0.25 0.251855 0.258817 +0.1388 0.25 0.251939 0.258832 +0.1389 0.25 0.252023 0.258845 +0.139 0.25 0.252106 0.258858 +0.1391 0.25 0.25219 0.258869 +0.1392 0.25 0.252273 0.258879 +0.1393 0.25 0.252357 0.258888 +0.1394 0.25 0.25244 0.258895 +0.1395 0.25 0.252524 0.258901 +0.1396 0.25 0.252607 0.258906 +0.1397 0.25 0.252691 0.25891 +0.1398 0.25 0.252774 0.258912 +0.1399 0.25 0.252858 0.258914 +0.14 0.25 0.252941 0.258914 +0.1401 0.25 0.253024 0.258912 +0.1402 0.25 0.253108 0.25891 +0.1403 0.25 0.253191 0.258906 +0.1404 0.25 0.253275 0.258901 +0.1405 0.25 0.253358 0.258895 +0.1406 0.25 0.253441 0.258887 +0.1407 0.25 0.253525 0.258879 +0.1408 0.25 0.253608 0.258869 +0.1409 0.25 0.253691 0.258857 +0.141 0.25 0.253775 0.258845 +0.1411 0.25 0.253858 0.258831 +0.1412 0.25 0.253941 0.258817 +0.1413 0.25 0.254025 0.2588 +0.1414 0.25 0.254108 0.258783 +0.1415 0.25 0.254191 0.258765 +0.1416 0.25 0.254274 0.258745 +0.1417 0.25 0.254357 0.258724 +0.1418 0.25 0.254441 0.258702 +0.1419 0.25 0.254524 0.258678 +0.142 0.25 0.254607 0.258654 +0.1421 0.25 0.25469 0.258628 +0.1422 0.25 0.254773 0.258601 +0.1423 0.25 0.254856 0.258573 +0.1424 0.25 0.254939 0.258543 +0.1425 0.25 0.255022 0.258513 +0.1426 0.25 0.255105 0.258481 +0.1427 0.25 0.255188 0.258448 +0.1428 0.25 0.255271 0.258414 +0.1429 0.25 0.255353 0.258379 +0.143 0.25 0.255436 0.258342 +0.1431 0.25 0.255519 0.258305 +0.1432 0.25 0.255602 0.258266 +0.1433 0.25 0.255684 0.258226 +0.1434 0.25 0.255767 0.258185 +0.1435 0.25 0.25585 0.258143 +0.1436 0.25 0.255932 0.2581 +0.1437 0.25 0.256015 0.258055 +0.1438 0.25 0.256098 0.25801 +0.1439 0.25 0.25618 0.257963 +0.144 0.25 0.256263 0.257916 +0.1441 0.25 0.256345 0.257867 +0.1442 0.25 0.256427 0.257817 +0.1443 0.25 0.25651 0.257766 +0.1444 0.25 0.256592 0.257714 +0.1445 0.25 0.256674 0.257661 +0.1446 0.25 0.256757 0.257607 +0.1447 0.25 0.256839 0.257551 +0.1448 0.25 0.256921 0.257495 +0.1449 0.25 0.257003 0.257438 +0.145 0.25 0.257085 0.25738 +0.1451 0.25 0.257167 0.25732 +0.1452 0.25 0.257249 0.25726 +0.1453 0.25 0.257331 0.257199 +0.1454 0.25 0.257413 0.257136 +0.1455 0.25 0.257495 0.257073 +0.1456 0.25 0.257576 0.257009 +0.1457 0.25 0.257658 0.256943 +0.1458 0.25 0.25774 0.256877 +0.1459 0.25 0.257821 0.25681 +0.146 0.25 0.257903 0.256742 +0.1461 0.25 0.257984 0.256673 +0.1462 0.25 0.258066 0.256603 +0.1463 0.25 0.258147 0.256532 +0.1464 0.25 0.258229 0.25646 +0.1465 0.25 0.25831 0.256388 +0.1466 0.25 0.258391 0.256314 +0.1467 0.25 0.258472 0.25624 +0.1468 0.25 0.258554 0.256165 +0.1469 0.25 0.258635 0.256088 +0.147 0.25 0.258716 0.256012 +0.1471 0.25 0.258797 0.255934 +0.1472 0.25 0.258878 0.255855 +0.1473 0.25 0.258958 0.255776 +0.1474 0.25 0.259039 0.255696 +0.1475 0.25 0.25912 0.255615 +0.1476 0.25 0.259201 0.255533 +0.1477 0.25 0.259281 0.25545 +0.1478 0.25 0.259362 0.255367 +0.1479 0.25 0.259442 0.255283 +0.148 0.25 0.259523 0.255198 +0.1481 0.25 0.259603 0.255113 +0.1482 0.25 0.259683 0.255026 +0.1483 0.25 0.259764 0.25494 +0.1484 0.25 0.259844 0.254852 +0.1485 0.25 0.259924 0.254764 +0.1486 0.25 0.260004 0.254675 +0.1487 0.25 0.260084 0.254585 +0.1488 0.25 0.260164 0.254495 +0.1489 0.25 0.260244 0.254404 +0.149 0.25 0.260323 0.254313 +0.1491 0.25 0.260403 0.254221 +0.1492 0.25 0.260483 0.254128 +0.1493 0.25 0.260562 0.254035 +0.1494 0.25 0.260642 0.253941 +0.1495 0.25 0.260721 0.253847 +0.1496 0.25 0.2608 0.253752 +0.1497 0.25 0.26088 0.253657 +0.1498 0.25 0.260959 0.253561 +0.1499 0.25 0.261038 0.253465 +0.15 0.25 0.261117 0.253368 +0.1501 0.25 0.261196 0.25327 +0.1502 0.25 0.261275 0.253172 +0.1503 0.25 0.261353 0.253074 +0.1504 0.25 0.261432 0.252975 +0.1505 0.25 0.261511 0.252876 +0.1506 0.25 0.261589 0.252777 +0.1507 0.25 0.261668 0.252677 +0.1508 0.25 0.261746 0.252577 +0.1509 0.25 0.261825 0.252476 +0.151 0.25 0.261903 0.252375 +0.1511 0.25 0.261981 0.252273 +0.1512 0.25 0.262059 0.252172 +0.1513 0.25 0.262137 0.25207 +0.1514 0.25 0.262215 0.251967 +0.1515 0.25 0.262293 0.251865 +0.1516 0.25 0.26237 0.251762 +0.1517 0.25 0.262448 0.251659 +0.1518 0.25 0.262526 0.251555 +0.1519 0.25 0.262603 0.251452 +0.152 0.25 0.26268 0.251348 +0.1521 0.25 0.262758 0.251244 +0.1522 0.25 0.262835 0.251139 +0.1523 0.25 0.262912 0.251035 +0.1524 0.25 0.262989 0.25093 +0.1525 0.25 0.263066 0.250825 +0.1526 0.25 0.263143 0.25072 +0.1527 0.25 0.26322 0.250615 +0.1528 0.25 0.263296 0.25051 +0.1529 0.25 0.263373 0.250405 +0.153 0.25 0.263449 0.250299 +0.1531 0.25 0.263526 0.250194 +0.1532 0.25 0.263602 0.250088 +0.1533 0.25 0.263678 0.249983 +0.1534 0.25 0.263754 0.249877 +0.1535 0.25 0.26383 0.249772 +0.1536 0.25 0.263906 0.249666 +0.1537 0.25 0.263982 0.24956 +0.1538 0.25 0.264058 0.249455 +0.1539 0.25 0.264133 0.249349 +0.154 0.25 0.264209 0.249244 +0.1541 0.25 0.264284 0.249138 +0.1542 0.25 0.264359 0.249033 +0.1543 0.25 0.264435 0.248928 +0.1544 0.25 0.26451 0.248822 +0.1545 0.25 0.264585 0.248717 +0.1546 0.25 0.26466 0.248612 +0.1547 0.25 0.264734 0.248508 +0.1548 0.25 0.264809 0.248403 +0.1549 0.25 0.264884 0.248298 +0.155 0.25 0.264958 0.248194 +0.1551 0.25 0.265032 0.24809 +0.1552 0.25 0.265107 0.247986 +0.1553 0.25 0.265181 0.247882 +0.1554 0.25 0.265255 0.247779 +0.1555 0.25 0.265329 0.247676 +0.1556 0.25 0.265403 0.247573 +0.1557 0.25 0.265476 0.24747 +0.1558 0.25 0.26555 0.247368 +0.1559 0.25 0.265624 0.247266 +0.156 0.25 0.265697 0.247164 +0.1561 0.25 0.26577 0.247063 +0.1562 0.25 0.265844 0.246962 +0.1563 0.25 0.265917 0.246861 +0.1564 0.25 0.26599 0.24676 +0.1565 0.25 0.266062 0.24666 +0.1566 0.25 0.266135 0.246561 +0.1567 0.25 0.266208 0.246462 +0.1568 0.25 0.26628 0.246363 +0.1569 0.25 0.266353 0.246265 +0.157 0.25 0.266425 0.246167 +0.1571 0.25 0.266497 0.246069 +0.1572 0.25 0.266569 0.245972 +0.1573 0.25 0.266641 0.245876 +0.1574 0.25 0.266713 0.24578 +0.1575 0.25 0.266785 0.245684 +0.1576 0.25 0.266856 0.245589 +0.1577 0.25 0.266928 0.245495 +0.1578 0.25 0.266999 0.245401 +0.1579 0.25 0.26707 0.245307 +0.158 0.25 0.267141 0.245214 +0.1581 0.25 0.267212 0.245122 +0.1582 0.25 0.267283 0.24503 +0.1583 0.25 0.267354 0.244939 +0.1584 0.25 0.267424 0.244849 +0.1585 0.25 0.267495 0.244759 +0.1586 0.25 0.267565 0.24467 +0.1587 0.25 0.267635 0.244581 +0.1588 0.25 0.267706 0.244493 +0.1589 0.25 0.267776 0.244406 +0.159 0.25 0.267845 0.244319 +0.1591 0.25 0.267915 0.244233 +0.1592 0.25 0.267985 0.244148 +0.1593 0.25 0.268054 0.244063 +0.1594 0.25 0.268124 0.243979 +0.1595 0.25 0.268193 0.243896 +0.1596 0.25 0.268262 0.243814 +0.1597 0.25 0.268331 0.243732 +0.1598 0.25 0.2684 0.243651 +0.1599 0.25 0.268468 0.243571 +0.16 0.25 0.268537 0.243492 +0.1601 0.25 0.268605 0.243413 +0.1602 0.25 0.268674 0.243336 +0.1603 0.25 0.268742 0.243259 +0.1604 0.25 0.26881 0.243183 +0.1605 0.25 0.268878 0.243107 +0.1606 0.25 0.268946 0.243033 +0.1607 0.25 0.269013 0.242959 +0.1608 0.25 0.269081 0.242886 +0.1609 0.25 0.269148 0.242814 +0.161 0.25 0.269216 0.242743 +0.1611 0.25 0.269283 0.242673 +0.1612 0.25 0.26935 0.242604 +0.1613 0.25 0.269416 0.242535 +0.1614 0.25 0.269483 0.242468 +0.1615 0.25 0.26955 0.242401 +0.1616 0.25 0.269616 0.242336 +0.1617 0.25 0.269682 0.242271 +0.1618 0.25 0.269749 0.242207 +0.1619 0.25 0.269815 0.242144 +0.162 0.25 0.26988 0.242082 +0.1621 0.25 0.269946 0.242021 +0.1622 0.25 0.270012 0.241961 +0.1623 0.25 0.270077 0.241902 +0.1624 0.25 0.270143 0.241844 +0.1625 0.25 0.270208 0.241787 +0.1626 0.25 0.270273 0.241731 +0.1627 0.25 0.270338 0.241676 +0.1628 0.25 0.270402 0.241622 +0.1629 0.25 0.270467 0.241569 +0.163 0.25 0.270531 0.241516 +0.1631 0.25 0.270596 0.241465 +0.1632 0.25 0.27066 0.241415 +0.1633 0.25 0.270724 0.241366 +0.1634 0.25 0.270788 0.241319 +0.1635 0.25 0.270851 0.241272 +0.1636 0.25 0.270915 0.241226 +0.1637 0.25 0.270978 0.241181 +0.1638 0.25 0.271042 0.241137 +0.1639 0.25 0.271105 0.241095 +0.164 0.25 0.271168 0.241053 +0.1641 0.25 0.271231 0.241013 +0.1642 0.25 0.271293 0.240973 +0.1643 0.25 0.271356 0.240935 +0.1644 0.25 0.271418 0.240898 +0.1645 0.25 0.27148 0.240862 +0.1646 0.25 0.271542 0.240827 +0.1647 0.25 0.271604 0.240793 +0.1648 0.25 0.271666 0.24076 +0.1649 0.25 0.271728 0.240729 +0.165 0.25 0.271789 0.240698 +0.1651 0.25 0.271851 0.240669 +0.1652 0.25 0.271912 0.24064 +0.1653 0.25 0.271973 0.240613 +0.1654 0.25 0.272034 0.240587 +0.1655 0.25 0.272094 0.240562 +0.1656 0.25 0.272155 0.240539 +0.1657 0.25 0.272215 0.240516 +0.1658 0.25 0.272275 0.240494 +0.1659 0.25 0.272335 0.240474 +0.166 0.25 0.272395 0.240455 +0.1661 0.25 0.272455 0.240437 +0.1662 0.25 0.272515 0.24042 +0.1663 0.25 0.272574 0.240404 +0.1664 0.25 0.272633 0.24039 +0.1665 0.25 0.272693 0.240376 +0.1666 0.25 0.272752 0.240364 +0.1667 0.25 0.27281 0.240353 +0.1668 0.25 0.272869 0.240343 +0.1669 0.25 0.272927 0.240334 +0.167 0.25 0.272986 0.240327 +0.1671 0.25 0.273044 0.24032 +0.1672 0.25 0.273102 0.240315 +0.1673 0.25 0.27316 0.240311 +0.1674 0.25 0.273217 0.240308 +0.1675 0.25 0.273275 0.240306 +0.1676 0.25 0.273332 0.240306 +0.1677 0.25 0.273389 0.240306 +0.1678 0.25 0.273446 0.240308 +0.1679 0.25 0.273503 0.240311 +0.168 0.25 0.27356 0.240315 +0.1681 0.25 0.273616 0.24032 +0.1682 0.25 0.273673 0.240327 +0.1683 0.25 0.273729 0.240334 +0.1684 0.25 0.273785 0.240343 +0.1685 0.25 0.273841 0.240353 +0.1686 0.25 0.273897 0.240364 +0.1687 0.25 0.273952 0.240376 +0.1688 0.25 0.274007 0.24039 +0.1689 0.25 0.274063 0.240404 +0.169 0.25 0.274118 0.24042 +0.1691 0.25 0.274172 0.240437 +0.1692 0.25 0.274227 0.240455 +0.1693 0.25 0.274282 0.240474 +0.1694 0.25 0.274336 0.240494 +0.1695 0.25 0.27439 0.240516 +0.1696 0.25 0.274444 0.240538 +0.1697 0.25 0.274498 0.240562 +0.1698 0.25 0.274552 0.240587 +0.1699 0.25 0.274605 0.240613 +0.17 0.25 0.274658 0.24064 +0.1701 0.25 0.274711 0.240668 +0.1702 0.25 0.274764 0.240698 +0.1703 0.25 0.274817 0.240728 +0.1704 0.25 0.27487 0.24076 +0.1705 0.25 0.274922 0.240792 +0.1706 0.25 0.274974 0.240826 +0.1707 0.25 0.275027 0.240861 +0.1708 0.25 0.275078 0.240897 +0.1709 0.25 0.27513 0.240934 +0.171 0.25 0.275182 0.240972 +0.1711 0.25 0.275233 0.241012 +0.1712 0.25 0.275284 0.241052 +0.1713 0.25 0.275335 0.241093 +0.1714 0.25 0.275386 0.241136 +0.1715 0.25 0.275437 0.241179 +0.1716 0.25 0.275487 0.241224 +0.1717 0.25 0.275538 0.24127 +0.1718 0.25 0.275588 0.241317 +0.1719 0.25 0.275638 0.241364 +0.172 0.25 0.275687 0.241413 +0.1721 0.25 0.275737 0.241463 +0.1722 0.25 0.275787 0.241514 +0.1723 0.25 0.275836 0.241566 +0.1724 0.25 0.275885 0.241619 +0.1725 0.25 0.275934 0.241673 +0.1726 0.25 0.275982 0.241728 +0.1727 0.25 0.276031 0.241784 +0.1728 0.25 0.276079 0.24184 +0.1729 0.25 0.276127 0.241898 +0.173 0.25 0.276175 0.241957 +0.1731 0.25 0.276223 0.242017 +0.1732 0.25 0.276271 0.242078 +0.1733 0.25 0.276318 0.24214 +0.1734 0.25 0.276365 0.242202 +0.1735 0.25 0.276412 0.242266 +0.1736 0.25 0.276459 0.242331 +0.1737 0.25 0.276506 0.242396 +0.1738 0.25 0.276552 0.242463 +0.1739 0.25 0.276599 0.24253 +0.174 0.25 0.276645 0.242598 +0.1741 0.25 0.276691 0.242667 +0.1742 0.25 0.276737 0.242737 +0.1743 0.25 0.276782 0.242808 +0.1744 0.25 0.276827 0.24288 +0.1745 0.25 0.276873 0.242953 +0.1746 0.25 0.276918 0.243026 +0.1747 0.25 0.276962 0.2431 +0.1748 0.25 0.277007 0.243176 +0.1749 0.25 0.277052 0.243252 +0.175 0.25 0.277096 0.243328 +0.1751 0.25 0.27714 0.243406 +0.1752 0.25 0.277184 0.243484 +0.1753 0.25 0.277227 0.243564 +0.1754 0.25 0.277271 0.243644 +0.1755 0.25 0.277314 0.243724 +0.1756 0.25 0.277357 0.243806 +0.1757 0.25 0.2774 0.243888 +0.1758 0.25 0.277443 0.243971 +0.1759 0.25 0.277486 0.244055 +0.176 0.25 0.277528 0.244139 +0.1761 0.25 0.27757 0.244225 +0.1762 0.25 0.277612 0.244311 +0.1763 0.25 0.277654 0.244397 +0.1764 0.25 0.277695 0.244484 +0.1765 0.25 0.277737 0.244572 +0.1766 0.25 0.277778 0.244661 +0.1767 0.25 0.277819 0.24475 +0.1768 0.25 0.27786 0.24484 +0.1769 0.25 0.2779 0.244931 +0.177 0.25 0.277941 0.245022 +0.1771 0.25 0.277981 0.245114 +0.1772 0.25 0.278021 0.245206 +0.1773 0.25 0.278061 0.245299 +0.1774 0.25 0.278101 0.245393 +0.1775 0.25 0.27814 0.245487 +0.1776 0.25 0.278179 0.245582 +0.1777 0.25 0.278218 0.245677 +0.1778 0.25 0.278257 0.245773 +0.1779 0.25 0.278296 0.245869 +0.178 0.25 0.278334 0.245966 +0.1781 0.25 0.278373 0.246063 +0.1782 0.25 0.278411 0.246161 +0.1783 0.25 0.278448 0.246259 +0.1784 0.25 0.278486 0.246358 +0.1785 0.25 0.278524 0.246457 +0.1786 0.25 0.278561 0.246557 +0.1787 0.25 0.278598 0.246657 +0.1788 0.25 0.278635 0.246758 +0.1789 0.25 0.278672 0.246859 +0.179 0.25 0.278708 0.24696 +0.1791 0.25 0.278744 0.247062 +0.1792 0.25 0.27878 0.247164 +0.1793 0.25 0.278816 0.247266 +0.1794 0.25 0.278852 0.247369 +0.1795 0.25 0.278887 0.247473 +0.1796 0.25 0.278923 0.247576 +0.1797 0.25 0.278958 0.24768 +0.1798 0.25 0.278993 0.247784 +0.1799 0.25 0.279027 0.247889 +0.18 0.25 0.279062 0.247994 +0.1801 0.25 0.279096 0.248099 +0.1802 0.25 0.27913 0.248204 +0.1803 0.25 0.279164 0.248309 +0.1804 0.25 0.279198 0.248415 +0.1805 0.25 0.279231 0.248521 +0.1806 0.25 0.279265 0.248628 +0.1807 0.25 0.279298 0.248734 +0.1808 0.25 0.279331 0.248841 +0.1809 0.25 0.279363 0.248947 +0.181 0.25 0.279396 0.249054 +0.1811 0.25 0.279428 0.249162 +0.1812 0.25 0.27946 0.249269 +0.1813 0.25 0.279492 0.249376 +0.1814 0.25 0.279523 0.249484 +0.1815 0.25 0.279555 0.249592 +0.1816 0.25 0.279586 0.249699 +0.1817 0.25 0.279617 0.249807 +0.1818 0.25 0.279648 0.249915 +0.1819 0.25 0.279679 0.250023 +0.182 0.25 0.279709 0.250131 +0.1821 0.25 0.279739 0.250239 +0.1822 0.25 0.279769 0.250347 +0.1823 0.25 0.279799 0.250455 +0.1824 0.25 0.279829 0.250563 +0.1825 0.25 0.279858 0.250671 +0.1826 0.25 0.279887 0.250779 +0.1827 0.25 0.279916 0.250887 +0.1828 0.25 0.279945 0.250995 +0.1829 0.25 0.279974 0.251103 +0.183 0.25 0.280002 0.251211 +0.1831 0.25 0.28003 0.251318 +0.1832 0.25 0.280058 0.251426 +0.1833 0.25 0.280086 0.251534 +0.1834 0.25 0.280113 0.251641 +0.1835 0.25 0.280141 0.251748 +0.1836 0.25 0.280168 0.251855 +0.1837 0.25 0.280195 0.251962 +0.1838 0.25 0.280221 0.252069 +0.1839 0.25 0.280248 0.252175 +0.184 0.25 0.280274 0.252282 +0.1841 0.25 0.2803 0.252388 +0.1842 0.25 0.280326 0.252494 +0.1843 0.25 0.280352 0.2526 +0.1844 0.25 0.280377 0.252705 +0.1845 0.25 0.280402 0.25281 +0.1846 0.25 0.280427 0.252915 +0.1847 0.25 0.280452 0.25302 +0.1848 0.25 0.280477 0.253124 +0.1849 0.25 0.280501 0.253229 +0.185 0.25 0.280525 0.253332 +0.1851 0.25 0.280549 0.253436 +0.1852 0.25 0.280573 0.253539 +0.1853 0.25 0.280596 0.253642 +0.1854 0.25 0.28062 0.253744 +0.1855 0.25 0.280643 0.253846 +0.1856 0.25 0.280666 0.253948 +0.1857 0.25 0.280689 0.254049 +0.1858 0.25 0.280711 0.25415 +0.1859 0.25 0.280733 0.25425 +0.186 0.25 0.280755 0.254351 +0.1861 0.25 0.280777 0.25445 +0.1862 0.25 0.280799 0.254549 +0.1863 0.25 0.28082 0.254648 +0.1864 0.25 0.280842 0.254746 +0.1865 0.25 0.280863 0.254844 +0.1866 0.25 0.280883 0.254941 +0.1867 0.25 0.280904 0.255038 +0.1868 0.25 0.280924 0.255134 +0.1869 0.25 0.280944 0.25523 +0.187 0.25 0.280964 0.255325 +0.1871 0.25 0.280984 0.25542 +0.1872 0.25 0.281004 0.255514 +0.1873 0.25 0.281023 0.255607 +0.1874 0.25 0.281042 0.2557 +0.1875 0.25 0.281061 0.255793 +0.1876 0.25 0.281079 0.255884 +0.1877 0.25 0.281098 0.255976 +0.1878 0.25 0.281116 0.256066 +0.1879 0.25 0.281134 0.256156 +0.188 0.25 0.281152 0.256245 +0.1881 0.25 0.28117 0.256334 +0.1882 0.25 0.281187 0.256422 +0.1883 0.25 0.281204 0.256509 +0.1884 0.25 0.281221 0.256596 +0.1885 0.25 0.281238 0.256682 +0.1886 0.25 0.281254 0.256767 +0.1887 0.25 0.281271 0.256852 +0.1888 0.25 0.281287 0.256936 +0.1889 0.25 0.281303 0.257019 +0.189 0.25 0.281318 0.257101 +0.1891 0.25 0.281334 0.257183 +0.1892 0.25 0.281349 0.257264 +0.1893 0.25 0.281364 0.257344 +0.1894 0.25 0.281379 0.257423 +0.1895 0.25 0.281393 0.257502 +0.1896 0.25 0.281408 0.25758 +0.1897 0.25 0.281422 0.257657 +0.1898 0.25 0.281436 0.257733 +0.1899 0.25 0.281449 0.257808 +0.19 0.25 0.281463 0.257883 +0.1901 0.25 0.281476 0.257957 +0.1902 0.25 0.281489 0.25803 +0.1903 0.25 0.281502 0.258102 +0.1904 0.25 0.281515 0.258173 +0.1905 0.25 0.281527 0.258244 +0.1906 0.25 0.281539 0.258313 +0.1907 0.25 0.281551 0.258382 +0.1908 0.25 0.281563 0.25845 +0.1909 0.25 0.281574 0.258517 +0.191 0.25 0.281586 0.258583 +0.1911 0.25 0.281597 0.258648 +0.1912 0.25 0.281608 0.258712 +0.1913 0.25 0.281618 0.258775 +0.1914 0.25 0.281629 0.258838 +0.1915 0.25 0.281639 0.258899 +0.1916 0.25 0.281649 0.25896 +0.1917 0.25 0.281659 0.259019 +0.1918 0.25 0.281669 0.259078 +0.1919 0.25 0.281678 0.259135 +0.192 0.25 0.281687 0.259192 +0.1921 0.25 0.281696 0.259248 +0.1922 0.25 0.281705 0.259303 +0.1923 0.25 0.281713 0.259356 +0.1924 0.25 0.281722 0.259409 +0.1925 0.25 0.28173 0.259461 +0.1926 0.25 0.281737 0.259512 +0.1927 0.25 0.281745 0.259562 +0.1928 0.25 0.281752 0.25961 +0.1929 0.25 0.28176 0.259658 +0.193 0.25 0.281767 0.259705 +0.1931 0.25 0.281773 0.259751 +0.1932 0.25 0.28178 0.259795 +0.1933 0.25 0.281786 0.259839 +0.1934 0.25 0.281792 0.259882 +0.1935 0.25 0.281798 0.259923 +0.1936 0.25 0.281804 0.259964 +0.1937 0.25 0.281809 0.260003 +0.1938 0.25 0.281814 0.260042 +0.1939 0.25 0.281819 0.260079 +0.194 0.25 0.281824 0.260115 +0.1941 0.25 0.281829 0.260151 +0.1942 0.25 0.281833 0.260185 +0.1943 0.25 0.281837 0.260218 +0.1944 0.25 0.281841 0.26025 +0.1945 0.25 0.281845 0.260281 +0.1946 0.25 0.281848 0.260311 +0.1947 0.25 0.281852 0.260339 +0.1948 0.25 0.281855 0.260367 +0.1949 0.25 0.281857 0.260394 +0.195 0.25 0.28186 0.260419 +0.1951 0.25 0.281862 0.260443 +0.1952 0.25 0.281865 0.260467 +0.1953 0.25 0.281867 0.260489 +0.1954 0.25 0.281868 0.26051 +0.1955 0.25 0.28187 0.26053 +0.1956 0.25 0.281871 0.260548 +0.1957 0.25 0.281872 0.260566 +0.1958 0.25 0.281873 0.260583 +0.1959 0.25 0.281874 0.260598 +0.196 0.25 0.281874 0.260613 +0.1961 0.25 0.281874 0.260626 +0.1962 0.25 0.281874 0.260638 +0.1963 0.25 0.281874 0.260649 +0.1964 0.25 0.281873 0.260659 +0.1965 0.25 0.281873 0.260667 +0.1966 0.25 0.281872 0.260675 +0.1967 0.25 0.281871 0.260681 +0.1968 0.25 0.281869 0.260686 +0.1969 0.25 0.281868 0.260691 +0.197 0.25 0.281866 0.260694 +0.1971 0.25 0.281864 0.260696 +0.1972 0.25 0.281862 0.260696 +0.1973 0.25 0.281859 0.260696 +0.1974 0.25 0.281857 0.260694 +0.1975 0.25 0.281854 0.260692 +0.1976 0.25 0.281851 0.260688 +0.1977 0.25 0.281847 0.260683 +0.1978 0.25 0.281844 0.260677 +0.1979 0.25 0.28184 0.26067 +0.198 0.25 0.281836 0.260661 +0.1981 0.25 0.281832 0.260652 +0.1982 0.25 0.281828 0.260641 +0.1983 0.25 0.281823 0.26063 +0.1984 0.25 0.281818 0.260617 +0.1985 0.25 0.281813 0.260603 +0.1986 0.25 0.281808 0.260588 +0.1987 0.25 0.281802 0.260572 +0.1988 0.25 0.281796 0.260554 +0.1989 0.25 0.28179 0.260536 +0.199 0.25 0.281784 0.260516 +0.1991 0.25 0.281778 0.260495 +0.1992 0.25 0.281771 0.260474 +0.1993 0.25 0.281765 0.260451 +0.1994 0.25 0.281757 0.260427 +0.1995 0.25 0.28175 0.260401 +0.1996 0.25 0.281743 0.260375 +0.1997 0.25 0.281735 0.260348 +0.1998 0.25 0.281727 0.260319 +0.1999 0.25 0.281719 0.26029 +0.2 0.25 0.281711 0.260259 +0.2001 0.25 0.281702 0.260227 +0.2002 0.25 0.281693 0.260194 +0.2003 0.25 0.281684 0.26016 +0.2004 0.25 0.281675 0.260125 +0.2005 0.25 0.281666 0.260089 +0.2006 0.25 0.281656 0.260052 +0.2007 0.25 0.281646 0.260014 +0.2008 0.25 0.281636 0.259974 +0.2009 0.25 0.281626 0.259934 +0.201 0.25 0.281615 0.259893 +0.2011 0.25 0.281604 0.25985 +0.2012 0.25 0.281593 0.259807 +0.2013 0.25 0.281582 0.259762 +0.2014 0.25 0.281571 0.259716 +0.2015 0.25 0.281559 0.25967 +0.2016 0.25 0.281547 0.259622 +0.2017 0.25 0.281535 0.259573 +0.2018 0.25 0.281523 0.259523 +0.2019 0.25 0.281511 0.259473 +0.202 0.25 0.281498 0.259421 +0.2021 0.25 0.281485 0.259368 +0.2022 0.25 0.281472 0.259314 +0.2023 0.25 0.281459 0.259259 +0.2024 0.25 0.281445 0.259203 +0.2025 0.25 0.281431 0.259147 +0.2026 0.25 0.281417 0.259089 +0.2027 0.25 0.281403 0.25903 +0.2028 0.25 0.281388 0.25897 +0.2029 0.25 0.281374 0.25891 +0.203 0.25 0.281359 0.258848 +0.2031 0.25 0.281344 0.258785 +0.2032 0.25 0.281329 0.258722 +0.2033 0.25 0.281313 0.258657 +0.2034 0.25 0.281297 0.258592 +0.2035 0.25 0.281281 0.258525 +0.2036 0.25 0.281265 0.258458 +0.2037 0.25 0.281249 0.25839 +0.2038 0.25 0.281232 0.258321 +0.2039 0.25 0.281215 0.258251 +0.204 0.25 0.281198 0.25818 +0.2041 0.25 0.281181 0.258108 +0.2042 0.25 0.281164 0.258036 +0.2043 0.25 0.281146 0.257962 +0.2044 0.25 0.281128 0.257888 +0.2045 0.25 0.28111 0.257812 +0.2046 0.25 0.281092 0.257736 +0.2047 0.25 0.281073 0.257659 +0.2048 0.25 0.281054 0.257582 +0.2049 0.25 0.281035 0.257503 +0.205 0.25 0.281016 0.257424 +0.2051 0.25 0.280997 0.257344 +0.2052 0.25 0.280977 0.257263 +0.2053 0.25 0.280957 0.257181 +0.2054 0.25 0.280937 0.257098 +0.2055 0.25 0.280917 0.257015 +0.2056 0.25 0.280897 0.256931 +0.2057 0.25 0.280876 0.256846 +0.2058 0.25 0.280855 0.25676 +0.2059 0.25 0.280834 0.256674 +0.206 0.25 0.280812 0.256587 +0.2061 0.25 0.280791 0.256499 +0.2062 0.25 0.280769 0.25641 +0.2063 0.25 0.280747 0.256321 +0.2064 0.25 0.280725 0.256231 +0.2065 0.25 0.280703 0.256141 +0.2066 0.25 0.28068 0.256049 +0.2067 0.25 0.280657 0.255957 +0.2068 0.25 0.280634 0.255865 +0.2069 0.25 0.280611 0.255771 +0.207 0.25 0.280587 0.255677 +0.2071 0.25 0.280564 0.255583 +0.2072 0.25 0.28054 0.255488 +0.2073 0.25 0.280516 0.255392 +0.2074 0.25 0.280492 0.255296 +0.2075 0.25 0.280467 0.255199 +0.2076 0.25 0.280442 0.255101 +0.2077 0.25 0.280417 0.255003 +0.2078 0.25 0.280392 0.254904 +0.2079 0.25 0.280367 0.254805 +0.208 0.25 0.280341 0.254705 +0.2081 0.25 0.280315 0.254605 +0.2082 0.25 0.280289 0.254504 +0.2083 0.25 0.280263 0.254402 +0.2084 0.25 0.280237 0.2543 +0.2085 0.25 0.28021 0.254198 +0.2086 0.25 0.280183 0.254095 +0.2087 0.25 0.280156 0.253992 +0.2088 0.25 0.280129 0.253888 +0.2089 0.25 0.280102 0.253784 +0.209 0.25 0.280074 0.253679 +0.2091 0.25 0.280046 0.253574 +0.2092 0.25 0.280018 0.253468 +0.2093 0.25 0.27999 0.253362 +0.2094 0.25 0.279961 0.253256 +0.2095 0.25 0.279932 0.253149 +0.2096 0.25 0.279903 0.253042 +0.2097 0.25 0.279874 0.252935 +0.2098 0.25 0.279845 0.252827 +0.2099 0.25 0.279815 0.252719 +0.21 0.25 0.279786 0.25261 +0.2101 0.25 0.279756 0.252501 +0.2102 0.25 0.279725 0.252392 +0.2103 0.25 0.279695 0.252282 +0.2104 0.25 0.279664 0.252173 +0.2105 0.25 0.279634 0.252063 +0.2106 0.25 0.279603 0.251952 +0.2107 0.25 0.279571 0.251842 +0.2108 0.25 0.27954 0.251731 +0.2109 0.25 0.279508 0.25162 +0.211 0.25 0.279476 0.251508 +0.2111 0.25 0.279444 0.251397 +0.2112 0.25 0.279412 0.251285 +0.2113 0.25 0.27938 0.251173 +0.2114 0.25 0.279347 0.251061 +0.2115 0.25 0.279314 0.250949 +0.2116 0.25 0.279281 0.250837 +0.2117 0.25 0.279248 0.250724 +0.2118 0.25 0.279214 0.250611 +0.2119 0.25 0.279181 0.250498 +0.212 0.25 0.279147 0.250385 +0.2121 0.25 0.279113 0.250272 +0.2122 0.25 0.279078 0.250159 +0.2123 0.25 0.279044 0.250046 +0.2124 0.25 0.279009 0.249933 +0.2125 0.25 0.278974 0.249819 +0.2126 0.25 0.278939 0.249706 +0.2127 0.25 0.278904 0.249593 +0.2128 0.25 0.278868 0.249479 +0.2129 0.25 0.278832 0.249366 +0.213 0.25 0.278796 0.249252 +0.2131 0.25 0.27876 0.249139 +0.2132 0.25 0.278724 0.249025 +0.2133 0.25 0.278687 0.248912 +0.2134 0.25 0.278651 0.248799 +0.2135 0.25 0.278614 0.248685 +0.2136 0.25 0.278577 0.248572 +0.2137 0.25 0.278539 0.248459 +0.2138 0.25 0.278502 0.248346 +0.2139 0.25 0.278464 0.248233 +0.214 0.25 0.278426 0.24812 +0.2141 0.25 0.278388 0.248007 +0.2142 0.25 0.278349 0.247895 +0.2143 0.25 0.278311 0.247782 +0.2144 0.25 0.278272 0.24767 +0.2145 0.25 0.278233 0.247558 +0.2146 0.25 0.278194 0.247446 +0.2147 0.25 0.278155 0.247334 +0.2148 0.25 0.278115 0.247223 +0.2149 0.25 0.278075 0.247111 +0.215 0.25 0.278035 0.247 +0.2151 0.25 0.277995 0.246889 +0.2152 0.25 0.277955 0.246779 +0.2153 0.25 0.277914 0.246668 +0.2154 0.25 0.277873 0.246558 +0.2155 0.25 0.277833 0.246448 +0.2156 0.25 0.277791 0.246339 +0.2157 0.25 0.27775 0.24623 +0.2158 0.25 0.277708 0.246121 +0.2159 0.25 0.277667 0.246012 +0.216 0.25 0.277625 0.245904 +0.2161 0.25 0.277583 0.245796 +0.2162 0.25 0.27754 0.245688 +0.2163 0.25 0.277498 0.245581 +0.2164 0.25 0.277455 0.245474 +0.2165 0.25 0.277412 0.245368 +0.2166 0.25 0.277369 0.245262 +0.2167 0.25 0.277326 0.245156 +0.2168 0.25 0.277282 0.245051 +0.2169 0.25 0.277238 0.244946 +0.217 0.25 0.277195 0.244842 +0.2171 0.25 0.277151 0.244738 +0.2172 0.25 0.277106 0.244634 +0.2173 0.25 0.277062 0.244531 +0.2174 0.25 0.277017 0.244429 +0.2175 0.25 0.276972 0.244327 +0.2176 0.25 0.276927 0.244225 +0.2177 0.25 0.276882 0.244124 +0.2178 0.25 0.276836 0.244024 +0.2179 0.25 0.276791 0.243924 +0.218 0.25 0.276745 0.243824 +0.2181 0.25 0.276699 0.243726 +0.2182 0.25 0.276653 0.243627 +0.2183 0.25 0.276606 0.24353 +0.2184 0.25 0.27656 0.243432 +0.2185 0.25 0.276513 0.243336 +0.2186 0.25 0.276466 0.24324 +0.2187 0.25 0.276419 0.243145 +0.2188 0.25 0.276371 0.24305 +0.2189 0.25 0.276324 0.242956 +0.219 0.25 0.276276 0.242862 +0.2191 0.25 0.276228 0.242769 +0.2192 0.25 0.27618 0.242677 +0.2193 0.25 0.276132 0.242586 +0.2194 0.25 0.276083 0.242495 +0.2195 0.25 0.276035 0.242405 +0.2196 0.25 0.275986 0.242315 +0.2197 0.25 0.275937 0.242227 +0.2198 0.25 0.275887 0.242138 +0.2199 0.25 0.275838 0.242051 +0.22 0.25 0.275788 0.241965 +0.2201 0.25 0.275739 0.241879 +0.2202 0.25 0.275689 0.241794 +0.2203 0.25 0.275638 0.241709 +0.2204 0.25 0.275588 0.241626 +0.2205 0.25 0.275537 0.241543 +0.2206 0.25 0.275487 0.241461 +0.2207 0.25 0.275436 0.241379 +0.2208 0.25 0.275385 0.241299 +0.2209 0.25 0.275333 0.241219 +0.221 0.25 0.275282 0.24114 +0.2211 0.25 0.27523 0.241062 +0.2212 0.25 0.275178 0.240985 +0.2213 0.25 0.275126 0.240909 +0.2214 0.25 0.275074 0.240833 +0.2215 0.25 0.275022 0.240758 +0.2216 0.25 0.274969 0.240685 +0.2217 0.25 0.274916 0.240612 +0.2218 0.25 0.274863 0.240539 +0.2219 0.25 0.27481 0.240468 +0.222 0.25 0.274757 0.240398 +0.2221 0.25 0.274703 0.240328 +0.2222 0.25 0.27465 0.24026 +0.2223 0.25 0.274596 0.240192 +0.2224 0.25 0.274542 0.240125 +0.2225 0.25 0.274488 0.24006 +0.2226 0.25 0.274433 0.239995 +0.2227 0.25 0.274379 0.239931 +0.2228 0.25 0.274324 0.239868 +0.2229 0.25 0.274269 0.239806 +0.223 0.25 0.274214 0.239744 +0.2231 0.25 0.274158 0.239684 +0.2232 0.25 0.274103 0.239625 +0.2233 0.25 0.274047 0.239567 +0.2234 0.25 0.273991 0.239509 +0.2235 0.25 0.273935 0.239453 +0.2236 0.25 0.273879 0.239398 +0.2237 0.25 0.273823 0.239344 +0.2238 0.25 0.273766 0.23929 +0.2239 0.25 0.27371 0.239238 +0.224 0.25 0.273653 0.239187 +0.2241 0.25 0.273596 0.239136 +0.2242 0.25 0.273538 0.239087 +0.2243 0.25 0.273481 0.239039 +0.2244 0.25 0.273423 0.238992 +0.2245 0.25 0.273366 0.238945 +0.2246 0.25 0.273308 0.2389 +0.2247 0.25 0.273249 0.238856 +0.2248 0.25 0.273191 0.238813 +0.2249 0.25 0.273133 0.238771 +0.225 0.25 0.273074 0.23873 +0.2251 0.25 0.273015 0.23869 +0.2252 0.25 0.272956 0.238652 +0.2253 0.25 0.272897 0.238614 +0.2254 0.25 0.272838 0.238577 +0.2255 0.25 0.272778 0.238541 +0.2256 0.25 0.272719 0.238507 +0.2257 0.25 0.272659 0.238474 +0.2258 0.25 0.272599 0.238441 +0.2259 0.25 0.272538 0.23841 +0.226 0.25 0.272478 0.23838 +0.2261 0.25 0.272418 0.238351 +0.2262 0.25 0.272357 0.238323 +0.2263 0.25 0.272296 0.238296 +0.2264 0.25 0.272235 0.23827 +0.2265 0.25 0.272174 0.238246 +0.2266 0.25 0.272112 0.238222 +0.2267 0.25 0.272051 0.2382 +0.2268 0.25 0.271989 0.238178 +0.2269 0.25 0.271927 0.238158 +0.227 0.25 0.271865 0.238139 +0.2271 0.25 0.271803 0.238121 +0.2272 0.25 0.271741 0.238104 +0.2273 0.25 0.271678 0.238089 +0.2274 0.25 0.271615 0.238074 +0.2275 0.25 0.271552 0.238061 +0.2276 0.25 0.271489 0.238048 +0.2277 0.25 0.271426 0.238037 +0.2278 0.25 0.271363 0.238027 +0.2279 0.25 0.271299 0.238018 +0.228 0.25 0.271236 0.238011 +0.2281 0.25 0.271172 0.238004 +0.2282 0.25 0.271108 0.237999 +0.2283 0.25 0.271043 0.237994 +0.2284 0.25 0.270979 0.237991 +0.2285 0.25 0.270915 0.237989 +0.2286 0.25 0.27085 0.237988 +0.2287 0.25 0.270785 0.237988 +0.2288 0.25 0.27072 0.23799 +0.2289 0.25 0.270655 0.237992 +0.229 0.25 0.27059 0.237996 +0.2291 0.25 0.270524 0.238001 +0.2292 0.25 0.270458 0.238007 +0.2293 0.25 0.270393 0.238014 +0.2294 0.25 0.270327 0.238022 +0.2295 0.25 0.270261 0.238032 +0.2296 0.25 0.270194 0.238042 +0.2297 0.25 0.270128 0.238054 +0.2298 0.25 0.270061 0.238067 +0.2299 0.25 0.269994 0.238081 +0.23 0.25 0.269928 0.238096 +0.2301 0.25 0.26986 0.238112 +0.2302 0.25 0.269793 0.23813 +0.2303 0.25 0.269726 0.238148 +0.2304 0.25 0.269658 0.238168 +0.2305 0.25 0.269591 0.238189 +0.2306 0.25 0.269523 0.238211 +0.2307 0.25 0.269455 0.238234 +0.2308 0.25 0.269387 0.238258 +0.2309 0.25 0.269318 0.238283 +0.231 0.25 0.26925 0.23831 +0.2311 0.25 0.269181 0.238337 +0.2312 0.25 0.269112 0.238366 +0.2313 0.25 0.269043 0.238396 +0.2314 0.25 0.268974 0.238427 +0.2315 0.25 0.268905 0.238459 +0.2316 0.25 0.268836 0.238492 +0.2317 0.25 0.268766 0.238526 +0.2318 0.25 0.268697 0.238561 +0.2319 0.25 0.268627 0.238598 +0.232 0.25 0.268557 0.238635 +0.2321 0.25 0.268487 0.238674 +0.2322 0.25 0.268416 0.238714 +0.2323 0.25 0.268346 0.238755 +0.2324 0.25 0.268275 0.238797 +0.2325 0.25 0.268205 0.23884 +0.2326 0.25 0.268134 0.238884 +0.2327 0.25 0.268063 0.238929 +0.2328 0.25 0.267991 0.238975 +0.2329 0.25 0.26792 0.239023 +0.233 0.25 0.267849 0.239071 +0.2331 0.25 0.267777 0.23912 +0.2332 0.25 0.267705 0.239171 +0.2333 0.25 0.267633 0.239222 +0.2334 0.25 0.267561 0.239275 +0.2335 0.25 0.267489 0.239329 +0.2336 0.25 0.267417 0.239383 +0.2337 0.25 0.267344 0.239439 +0.2338 0.25 0.267272 0.239496 +0.2339 0.25 0.267199 0.239553 +0.234 0.25 0.267126 0.239612 +0.2341 0.25 0.267053 0.239672 +0.2342 0.25 0.26698 0.239733 +0.2343 0.25 0.266906 0.239794 +0.2344 0.25 0.266833 0.239857 +0.2345 0.25 0.266759 0.239921 +0.2346 0.25 0.266686 0.239986 +0.2347 0.25 0.266612 0.240052 +0.2348 0.25 0.266538 0.240118 +0.2349 0.25 0.266463 0.240186 +0.235 0.25 0.266389 0.240255 +0.2351 0.25 0.266315 0.240324 +0.2352 0.25 0.26624 0.240395 +0.2353 0.25 0.266165 0.240466 +0.2354 0.25 0.26609 0.240539 +0.2355 0.25 0.266015 0.240612 +0.2356 0.25 0.26594 0.240686 +0.2357 0.25 0.265865 0.240761 +0.2358 0.25 0.26579 0.240838 +0.2359 0.25 0.265714 0.240915 +0.236 0.25 0.265638 0.240992 +0.2361 0.25 0.265562 0.241071 +0.2362 0.25 0.265486 0.241151 +0.2363 0.25 0.26541 0.241232 +0.2364 0.25 0.265334 0.241313 +0.2365 0.25 0.265258 0.241395 +0.2366 0.25 0.265181 0.241478 +0.2367 0.25 0.265105 0.241562 +0.2368 0.25 0.265028 0.241647 +0.2369 0.25 0.264951 0.241733 +0.237 0.25 0.264874 0.241819 +0.2371 0.25 0.264797 0.241907 +0.2372 0.25 0.264719 0.241995 +0.2373 0.25 0.264642 0.242084 +0.2374 0.25 0.264564 0.242174 +0.2375 0.25 0.264487 0.242264 +0.2376 0.25 0.264409 0.242355 +0.2377 0.25 0.264331 0.242447 +0.2378 0.25 0.264253 0.24254 +0.2379 0.25 0.264175 0.242634 +0.238 0.25 0.264096 0.242728 +0.2381 0.25 0.264018 0.242823 +0.2382 0.25 0.263939 0.242919 +0.2383 0.25 0.263861 0.243015 +0.2384 0.25 0.263782 0.243113 +0.2385 0.25 0.263703 0.243211 +0.2386 0.25 0.263624 0.243309 +0.2387 0.25 0.263545 0.243409 +0.2388 0.25 0.263465 0.243508 +0.2389 0.25 0.263386 0.243609 +0.239 0.25 0.263306 0.24371 +0.2391 0.25 0.263227 0.243812 +0.2392 0.25 0.263147 0.243915 +0.2393 0.25 0.263067 0.244018 +0.2394 0.25 0.262987 0.244122 +0.2395 0.25 0.262907 0.244226 +0.2396 0.25 0.262826 0.244332 +0.2397 0.25 0.262746 0.244437 +0.2398 0.25 0.262665 0.244543 +0.2399 0.25 0.262585 0.24465 +0.24 0.25 0.262504 0.244758 +0.2401 0.25 0.262423 0.244866 +0.2402 0.25 0.262342 0.244974 +0.2403 0.25 0.262261 0.245083 +0.2404 0.25 0.262179 0.245193 +0.2405 0.25 0.262098 0.245303 +0.2406 0.25 0.262017 0.245413 +0.2407 0.25 0.261935 0.245524 +0.2408 0.25 0.261853 0.245636 +0.2409 0.25 0.261771 0.245748 +0.241 0.25 0.261689 0.24586 +0.2411 0.25 0.261607 0.245973 +0.2412 0.25 0.261525 0.246087 +0.2413 0.25 0.261443 0.246201 +0.2414 0.25 0.26136 0.246315 +0.2415 0.25 0.261278 0.24643 +0.2416 0.25 0.261195 0.246545 +0.2417 0.25 0.261112 0.24666 +0.2418 0.25 0.26103 0.246776 +0.2419 0.25 0.260947 0.246892 +0.242 0.25 0.260863 0.247009 +0.2421 0.25 0.26078 0.247126 +0.2422 0.25 0.260697 0.247243 +0.2423 0.25 0.260613 0.247361 +0.2424 0.25 0.26053 0.247479 +0.2425 0.25 0.260446 0.247597 +0.2426 0.25 0.260363 0.247716 +0.2427 0.25 0.260279 0.247834 +0.2428 0.25 0.260195 0.247954 +0.2429 0.25 0.260111 0.248073 +0.243 0.25 0.260026 0.248193 +0.2431 0.25 0.259942 0.248313 +0.2432 0.25 0.259858 0.248433 +0.2433 0.25 0.259773 0.248553 +0.2434 0.25 0.259689 0.248674 +0.2435 0.25 0.259604 0.248795 +0.2436 0.25 0.259519 0.248916 +0.2437 0.25 0.259434 0.249037 +0.2438 0.25 0.259349 0.249158 +0.2439 0.25 0.259264 0.24928 +0.244 0.25 0.259179 0.249401 +0.2441 0.25 0.259093 0.249523 +0.2442 0.25 0.259008 0.249645 +0.2443 0.25 0.258922 0.249767 +0.2444 0.25 0.258837 0.249889 +0.2445 0.25 0.258751 0.250011 +0.2446 0.25 0.258665 0.250134 +0.2447 0.25 0.258579 0.250256 +0.2448 0.25 0.258493 0.250379 +0.2449 0.25 0.258407 0.250501 +0.245 0.25 0.258321 0.250624 +0.2451 0.25 0.258234 0.250746 +0.2452 0.25 0.258148 0.250869 +0.2453 0.25 0.258061 0.250992 +0.2454 0.25 0.257975 0.251114 +0.2455 0.25 0.257888 0.251237 +0.2456 0.25 0.257801 0.251359 +0.2457 0.25 0.257714 0.251482 +0.2458 0.25 0.257627 0.251604 +0.2459 0.25 0.25754 0.251727 +0.246 0.25 0.257453 0.251849 +0.2461 0.25 0.257366 0.251971 +0.2462 0.25 0.257278 0.252094 +0.2463 0.25 0.257191 0.252216 +0.2464 0.25 0.257103 0.252338 +0.2465 0.25 0.257016 0.252459 +0.2466 0.25 0.256928 0.252581 +0.2467 0.25 0.25684 0.252703 +0.2468 0.25 0.256752 0.252824 +0.2469 0.25 0.256664 0.252945 +0.247 0.25 0.256576 0.253066 +0.2471 0.25 0.256488 0.253187 +0.2472 0.25 0.256399 0.253308 +0.2473 0.25 0.256311 0.253428 +0.2474 0.25 0.256222 0.253549 +0.2475 0.25 0.256134 0.253669 +0.2476 0.25 0.256045 0.253788 +0.2477 0.25 0.255956 0.253908 +0.2478 0.25 0.255868 0.254027 +0.2479 0.25 0.255779 0.254146 +0.248 0.25 0.25569 0.254265 +0.2481 0.25 0.255601 0.254383 +0.2482 0.25 0.255512 0.254501 +0.2483 0.25 0.255422 0.254619 +0.2484 0.25 0.255333 0.254736 +0.2485 0.25 0.255244 0.254853 +0.2486 0.25 0.255154 0.25497 +0.2487 0.25 0.255064 0.255086 +0.2488 0.25 0.254975 0.255202 +0.2489 0.25 0.254885 0.255318 +0.249 0.25 0.254795 0.255433 +0.2491 0.25 0.254705 0.255547 +0.2492 0.25 0.254615 0.255662 +0.2493 0.25 0.254525 0.255776 +0.2494 0.25 0.254435 0.255889 +0.2495 0.25 0.254345 0.256002 +0.2496 0.25 0.254255 0.256115 +0.2497 0.25 0.254164 0.256227 +0.2498 0.25 0.254074 0.256339 +0.2499 0.25 0.253983 0.25645 +0.25 0.25 0.253893 0.25656 +0.2501 0.25 0.253802 0.256671 +0.2502 0.25 0.253711 0.25678 +0.2503 0.25 0.25362 0.256889 +0.2504 0.25 0.253529 0.256998 +0.2505 0.25 0.253438 0.257106 +0.2506 0.25 0.253347 0.257213 +0.2507 0.25 0.253256 0.25732 +0.2508 0.25 0.253165 0.257426 +0.2509 0.25 0.253074 0.257532 +0.251 0.25 0.252982 0.257637 +0.2511 0.25 0.252891 0.257742 +0.2512 0.25 0.252799 0.257846 +0.2513 0.25 0.252708 0.257949 +0.2514 0.25 0.252616 0.258052 +0.2515 0.25 0.252525 0.258154 +0.2516 0.25 0.252433 0.258255 +0.2517 0.25 0.252341 0.258356 +0.2518 0.25 0.252249 0.258456 +0.2519 0.25 0.252157 0.258555 +0.252 0.25 0.252065 0.258654 +0.2521 0.25 0.251973 0.258752 +0.2522 0.25 0.251881 0.258849 +0.2523 0.25 0.251789 0.258945 +0.2524 0.25 0.251696 0.259041 +0.2525 0.25 0.251604 0.259136 +0.2526 0.25 0.251511 0.25923 +0.2527 0.25 0.251419 0.259324 +0.2528 0.25 0.251326 0.259417 +0.2529 0.25 0.251234 0.259509 +0.253 0.25 0.251141 0.2596 +0.2531 0.25 0.251048 0.25969 +0.2532 0.25 0.250956 0.25978 +0.2533 0.25 0.250863 0.259869 +0.2534 0.25 0.25077 0.259957 +0.2535 0.25 0.250677 0.260044 +0.2536 0.25 0.250584 0.260131 +0.2537 0.25 0.250491 0.260216 +0.2538 0.25 0.250397 0.260301 +0.2539 0.25 0.250304 0.260385 +0.254 0.25 0.250211 0.260468 +0.2541 0.25 0.250118 0.26055 +0.2542 0.25 0.250024 0.260631 +0.2543 0.25 0.249931 0.260712 +0.2544 0.25 0.249837 0.260791 +0.2545 0.25 0.249744 0.26087 +0.2546 0.25 0.24965 0.260947 +0.2547 0.25 0.249556 0.261024 +0.2548 0.25 0.249463 0.2611 +0.2549 0.25 0.249369 0.261175 +0.255 0.25 0.249275 0.261249 +0.2551 0.25 0.249181 0.261322 +0.2552 0.25 0.249087 0.261394 +0.2553 0.25 0.248993 0.261465 +0.2554 0.25 0.248899 0.261536 +0.2555 0.25 0.248805 0.261605 +0.2556 0.25 0.248711 0.261673 +0.2557 0.25 0.248617 0.26174 +0.2558 0.25 0.248522 0.261807 +0.2559 0.25 0.248428 0.261872 +0.256 0.25 0.248334 0.261936 +0.2561 0.25 0.248239 0.262 +0.2562 0.25 0.248145 0.262062 +0.2563 0.25 0.24805 0.262123 +0.2564 0.25 0.247956 0.262183 +0.2565 0.25 0.247861 0.262243 +0.2566 0.25 0.247767 0.262301 +0.2567 0.25 0.247672 0.262358 +0.2568 0.25 0.247577 0.262414 +0.2569 0.25 0.247483 0.262469 +0.257 0.25 0.247388 0.262523 +0.2571 0.25 0.247293 0.262576 +0.2572 0.25 0.247198 0.262628 +0.2573 0.25 0.247103 0.262679 +0.2574 0.25 0.247008 0.262728 +0.2575 0.25 0.246913 0.262777 +0.2576 0.25 0.246818 0.262825 +0.2577 0.25 0.246723 0.262871 +0.2578 0.25 0.246628 0.262916 +0.2579 0.25 0.246533 0.262961 +0.258 0.25 0.246438 0.263004 +0.2581 0.25 0.246342 0.263046 +0.2582 0.25 0.246247 0.263087 +0.2583 0.25 0.246152 0.263127 +0.2584 0.25 0.246056 0.263165 +0.2585 0.25 0.245961 0.263203 +0.2586 0.25 0.245865 0.263239 +0.2587 0.25 0.24577 0.263275 +0.2588 0.25 0.245675 0.263309 +0.2589 0.25 0.245579 0.263342 +0.259 0.25 0.245483 0.263374 +0.2591 0.25 0.245388 0.263404 +0.2592 0.25 0.245292 0.263434 +0.2593 0.25 0.245196 0.263463 +0.2594 0.25 0.245101 0.26349 +0.2595 0.25 0.245005 0.263516 +0.2596 0.25 0.244909 0.263541 +0.2597 0.25 0.244813 0.263565 +0.2598 0.25 0.244718 0.263587 +0.2599 0.25 0.244622 0.263609 +0.26 0.25 0.244526 0.263629 +0.2601 0.25 0.24443 0.263648 +0.2602 0.25 0.244334 0.263666 +0.2603 0.25 0.244238 0.263683 +0.2604 0.25 0.244142 0.263698 +0.2605 0.25 0.244046 0.263713 +0.2606 0.25 0.24395 0.263726 +0.2607 0.25 0.243854 0.263738 +0.2608 0.25 0.243758 0.263749 +0.2609 0.25 0.243662 0.263759 +0.261 0.25 0.243566 0.263767 +0.2611 0.25 0.243469 0.263774 +0.2612 0.25 0.243373 0.26378 +0.2613 0.25 0.243277 0.263785 +0.2614 0.25 0.243181 0.263789 +0.2615 0.25 0.243084 0.263791 +0.2616 0.25 0.242988 0.263793 +0.2617 0.25 0.242892 0.263793 +0.2618 0.25 0.242796 0.263792 +0.2619 0.25 0.242699 0.263789 +0.262 0.25 0.242603 0.263786 +0.2621 0.25 0.242506 0.263781 +0.2622 0.25 0.24241 0.263775 +0.2623 0.25 0.242314 0.263768 +0.2624 0.25 0.242217 0.26376 +0.2625 0.25 0.242121 0.26375 +0.2626 0.25 0.242024 0.263739 +0.2627 0.25 0.241928 0.263727 +0.2628 0.25 0.241831 0.263714 +0.2629 0.25 0.241735 0.2637 +0.263 0.25 0.241638 0.263684 +0.2631 0.25 0.241542 0.263668 +0.2632 0.25 0.241445 0.26365 +0.2633 0.25 0.241349 0.263631 +0.2634 0.25 0.241252 0.26361 +0.2635 0.25 0.241155 0.263589 +0.2636 0.25 0.241059 0.263566 +0.2637 0.25 0.240962 0.263542 +0.2638 0.25 0.240865 0.263517 +0.2639 0.25 0.240769 0.263491 +0.264 0.25 0.240672 0.263463 +0.2641 0.25 0.240575 0.263435 +0.2642 0.25 0.240479 0.263405 +0.2643 0.25 0.240382 0.263374 +0.2644 0.25 0.240285 0.263342 +0.2645 0.25 0.240189 0.263308 +0.2646 0.25 0.240092 0.263274 +0.2647 0.25 0.239995 0.263238 +0.2648 0.25 0.239899 0.263201 +0.2649 0.25 0.239802 0.263163 +0.265 0.25 0.239705 0.263124 +0.2651 0.25 0.239608 0.263083 +0.2652 0.25 0.239512 0.263042 +0.2653 0.25 0.239415 0.262999 +0.2654 0.25 0.239318 0.262955 +0.2655 0.25 0.239222 0.26291 +0.2656 0.25 0.239125 0.262864 +0.2657 0.25 0.239028 0.262817 +0.2658 0.25 0.238931 0.262768 +0.2659 0.25 0.238835 0.262719 +0.266 0.25 0.238738 0.262668 +0.2661 0.25 0.238641 0.262616 +0.2662 0.25 0.238544 0.262563 +0.2663 0.25 0.238448 0.262509 +0.2664 0.25 0.238351 0.262454 +0.2665 0.25 0.238254 0.262397 +0.2666 0.25 0.238157 0.26234 +0.2667 0.25 0.238061 0.262281 +0.2668 0.25 0.237964 0.262222 +0.2669 0.25 0.237867 0.262161 +0.267 0.25 0.23777 0.262099 +0.2671 0.25 0.237674 0.262036 +0.2672 0.25 0.237577 0.261972 +0.2673 0.25 0.23748 0.261907 +0.2674 0.25 0.237384 0.261841 +0.2675 0.25 0.237287 0.261773 +0.2676 0.25 0.23719 0.261705 +0.2677 0.25 0.237094 0.261636 +0.2678 0.25 0.236997 0.261565 +0.2679 0.25 0.2369 0.261494 +0.268 0.25 0.236804 0.261421 +0.2681 0.25 0.236707 0.261348 +0.2682 0.25 0.23661 0.261273 +0.2683 0.25 0.236514 0.261198 +0.2684 0.25 0.236417 0.261121 +0.2685 0.25 0.236321 0.261043 +0.2686 0.25 0.236224 0.260965 +0.2687 0.25 0.236128 0.260885 +0.2688 0.25 0.236031 0.260804 +0.2689 0.25 0.235935 0.260723 +0.269 0.25 0.235838 0.26064 +0.2691 0.25 0.235742 0.260556 +0.2692 0.25 0.235645 0.260472 +0.2693 0.25 0.235549 0.260386 +0.2694 0.25 0.235452 0.2603 +0.2695 0.25 0.235356 0.260212 +0.2696 0.25 0.235259 0.260124 +0.2697 0.25 0.235163 0.260035 +0.2698 0.25 0.235067 0.259944 +0.2699 0.25 0.23497 0.259853 +0.27 0.25 0.234874 0.259761 +0.2701 0.25 0.234778 0.259668 +0.2702 0.25 0.234681 0.259574 +0.2703 0.25 0.234585 0.259479 +0.2704 0.25 0.234489 0.259384 +0.2705 0.25 0.234393 0.259287 +0.2706 0.25 0.234296 0.25919 +0.2707 0.25 0.2342 0.259091 +0.2708 0.25 0.234104 0.258992 +0.2709 0.25 0.234008 0.258892 +0.271 0.25 0.233912 0.258791 +0.2711 0.25 0.233816 0.25869 +0.2712 0.25 0.23372 0.258587 +0.2713 0.25 0.233624 0.258484 +0.2714 0.25 0.233528 0.25838 +0.2715 0.25 0.233432 0.258275 +0.2716 0.25 0.233336 0.258169 +0.2717 0.25 0.23324 0.258063 +0.2718 0.25 0.233144 0.257956 +0.2719 0.25 0.233048 0.257848 +0.272 0.25 0.232952 0.257739 +0.2721 0.25 0.232856 0.257629 +0.2722 0.25 0.232761 0.257519 +0.2723 0.25 0.232665 0.257408 +0.2724 0.25 0.232569 0.257296 +0.2725 0.25 0.232474 0.257184 +0.2726 0.25 0.232378 0.257071 +0.2727 0.25 0.232282 0.256957 +0.2728 0.25 0.232187 0.256843 +0.2729 0.25 0.232091 0.256727 +0.273 0.25 0.231996 0.256612 +0.2731 0.25 0.2319 0.256495 +0.2732 0.25 0.231805 0.256378 +0.2733 0.25 0.231709 0.25626 +0.2734 0.25 0.231614 0.256142 +0.2735 0.25 0.231519 0.256023 +0.2736 0.25 0.231423 0.255903 +0.2737 0.25 0.231328 0.255783 +0.2738 0.25 0.231233 0.255662 +0.2739 0.25 0.231138 0.255541 +0.274 0.25 0.231043 0.255419 +0.2741 0.25 0.230948 0.255296 +0.2742 0.25 0.230853 0.255173 +0.2743 0.25 0.230758 0.25505 +0.2744 0.25 0.230663 0.254925 +0.2745 0.25 0.230568 0.254801 +0.2746 0.25 0.230473 0.254676 +0.2747 0.25 0.230378 0.25455 +0.2748 0.25 0.230283 0.254424 +0.2749 0.25 0.230188 0.254297 +0.275 0.25 0.230094 0.25417 +0.2751 0.25 0.229999 0.254042 +0.2752 0.25 0.229904 0.253914 +0.2753 0.25 0.22981 0.253786 +0.2754 0.25 0.229715 0.253657 +0.2755 0.25 0.229621 0.253528 +0.2756 0.25 0.229526 0.253398 +0.2757 0.25 0.229432 0.253268 +0.2758 0.25 0.229338 0.253137 +0.2759 0.25 0.229243 0.253007 +0.276 0.25 0.229149 0.252875 +0.2761 0.25 0.229055 0.252744 +0.2762 0.25 0.228961 0.252612 +0.2763 0.25 0.228867 0.25248 +0.2764 0.25 0.228773 0.252347 +0.2765 0.25 0.228679 0.252214 +0.2766 0.25 0.228585 0.252081 +0.2767 0.25 0.228491 0.251947 +0.2768 0.25 0.228397 0.251814 +0.2769 0.25 0.228304 0.25168 +0.277 0.25 0.22821 0.251545 +0.2771 0.25 0.228116 0.251411 +0.2772 0.25 0.228023 0.251276 +0.2773 0.25 0.227929 0.251141 +0.2774 0.25 0.227836 0.251006 +0.2775 0.25 0.227742 0.250871 +0.2776 0.25 0.227649 0.250735 +0.2777 0.25 0.227555 0.250599 +0.2778 0.25 0.227462 0.250463 +0.2779 0.25 0.227369 0.250327 +0.278 0.25 0.227276 0.250191 +0.2781 0.25 0.227183 0.250055 +0.2782 0.25 0.22709 0.249918 +0.2783 0.25 0.226997 0.249782 +0.2784 0.25 0.226904 0.249645 +0.2785 0.25 0.226811 0.249508 +0.2786 0.25 0.226718 0.249371 +0.2787 0.25 0.226626 0.249234 +0.2788 0.25 0.226533 0.249097 +0.2789 0.25 0.22644 0.24896 +0.279 0.25 0.226348 0.248823 +0.2791 0.25 0.226256 0.248686 +0.2792 0.25 0.226163 0.248549 +0.2793 0.25 0.226071 0.248412 +0.2794 0.25 0.225979 0.248275 +0.2795 0.25 0.225886 0.248138 +0.2796 0.25 0.225794 0.248001 +0.2797 0.25 0.225702 0.247864 +0.2798 0.25 0.22561 0.247727 +0.2799 0.25 0.225518 0.24759 +0.28 0.25 0.225427 0.247454 +0.2801 0.25 0.225335 0.247317 +0.2802 0.25 0.225243 0.247181 +0.2803 0.25 0.225151 0.247044 +0.2804 0.25 0.22506 0.246908 +0.2805 0.25 0.224968 0.246772 +0.2806 0.25 0.224877 0.246636 +0.2807 0.25 0.224786 0.2465 +0.2808 0.25 0.224694 0.246364 +0.2809 0.25 0.224603 0.246229 +0.281 0.25 0.224512 0.246093 +0.2811 0.25 0.224421 0.245958 +0.2812 0.25 0.22433 0.245823 +0.2813 0.25 0.224239 0.245689 +0.2814 0.25 0.224148 0.245554 +0.2815 0.25 0.224058 0.24542 +0.2816 0.25 0.223967 0.245286 +0.2817 0.25 0.223876 0.245153 +0.2818 0.25 0.223786 0.245019 +0.2819 0.25 0.223696 0.244886 +0.282 0.25 0.223605 0.244754 +0.2821 0.25 0.223515 0.244621 +0.2822 0.25 0.223425 0.244489 +0.2823 0.25 0.223335 0.244357 +0.2824 0.25 0.223245 0.244226 +0.2825 0.25 0.223155 0.244095 +0.2826 0.25 0.223065 0.243964 +0.2827 0.25 0.222975 0.243834 +0.2828 0.25 0.222885 0.243704 +0.2829 0.25 0.222796 0.243575 +0.283 0.25 0.222706 0.243446 +0.2831 0.25 0.222617 0.243317 +0.2832 0.25 0.222527 0.243189 +0.2833 0.25 0.222438 0.243061 +0.2834 0.25 0.222349 0.242934 +0.2835 0.25 0.22226 0.242807 +0.2836 0.25 0.222171 0.242681 +0.2837 0.25 0.222082 0.242555 +0.2838 0.25 0.221993 0.24243 +0.2839 0.25 0.221904 0.242305 +0.284 0.25 0.221816 0.242181 +0.2841 0.25 0.221727 0.242057 +0.2842 0.25 0.221639 0.241934 +0.2843 0.25 0.22155 0.241811 +0.2844 0.25 0.221462 0.241689 +0.2845 0.25 0.221374 0.241568 +0.2846 0.25 0.221286 0.241447 +0.2847 0.25 0.221198 0.241326 +0.2848 0.25 0.22111 0.241207 +0.2849 0.25 0.221022 0.241088 +0.285 0.25 0.220934 0.240969 +0.2851 0.25 0.220846 0.240851 +0.2852 0.25 0.220759 0.240734 +0.2853 0.25 0.220671 0.240618 +0.2854 0.25 0.220584 0.240502 +0.2855 0.25 0.220497 0.240387 +0.2856 0.25 0.22041 0.240272 +0.2857 0.25 0.220323 0.240158 +0.2858 0.25 0.220236 0.240045 +0.2859 0.25 0.220149 0.239933 +0.286 0.25 0.220062 0.239821 +0.2861 0.25 0.219975 0.239711 +0.2862 0.25 0.219889 0.2396 +0.2863 0.25 0.219802 0.239491 +0.2864 0.25 0.219716 0.239382 +0.2865 0.25 0.219629 0.239275 +0.2866 0.25 0.219543 0.239168 +0.2867 0.25 0.219457 0.239061 +0.2868 0.25 0.219371 0.238956 +0.2869 0.25 0.219285 0.238851 +0.287 0.25 0.2192 0.238747 +0.2871 0.25 0.219114 0.238644 +0.2872 0.25 0.219028 0.238542 +0.2873 0.25 0.218943 0.238441 +0.2874 0.25 0.218858 0.23834 +0.2875 0.25 0.218772 0.238241 +0.2876 0.25 0.218687 0.238142 +0.2877 0.25 0.218602 0.238044 +0.2878 0.25 0.218517 0.237947 +0.2879 0.25 0.218432 0.237851 +0.288 0.25 0.218348 0.237756 +0.2881 0.25 0.218263 0.237662 +0.2882 0.25 0.218179 0.237569 +0.2883 0.25 0.218094 0.237476 +0.2884 0.25 0.21801 0.237385 +0.2885 0.25 0.217926 0.237294 +0.2886 0.25 0.217842 0.237205 +0.2887 0.25 0.217758 0.237116 +0.2888 0.25 0.217674 0.237029 +0.2889 0.25 0.21759 0.236942 +0.289 0.25 0.217507 0.236857 +0.2891 0.25 0.217423 0.236772 +0.2892 0.25 0.21734 0.236688 +0.2893 0.25 0.217257 0.236606 +0.2894 0.25 0.217173 0.236524 +0.2895 0.25 0.21709 0.236444 +0.2896 0.25 0.217007 0.236364 +0.2897 0.25 0.216925 0.236286 +0.2898 0.25 0.216842 0.236208 +0.2899 0.25 0.216759 0.236132 +0.29 0.25 0.216677 0.236057 +0.2901 0.25 0.216595 0.235982 +0.2902 0.25 0.216512 0.235909 +0.2903 0.25 0.21643 0.235837 +0.2904 0.25 0.216348 0.235766 +0.2905 0.25 0.216266 0.235696 +0.2906 0.25 0.216185 0.235627 +0.2907 0.25 0.216103 0.23556 +0.2908 0.25 0.216022 0.235493 +0.2909 0.25 0.21594 0.235428 +0.291 0.25 0.215859 0.235363 +0.2911 0.25 0.215778 0.2353 +0.2912 0.25 0.215697 0.235238 +0.2913 0.25 0.215616 0.235177 +0.2914 0.25 0.215535 0.235117 +0.2915 0.25 0.215455 0.235059 +0.2916 0.25 0.215374 0.235001 +0.2917 0.25 0.215294 0.234945 +0.2918 0.25 0.215213 0.23489 +0.2919 0.25 0.215133 0.234836 +0.292 0.25 0.215053 0.234783 +0.2921 0.25 0.214973 0.234732 +0.2922 0.25 0.214894 0.234681 +0.2923 0.25 0.214814 0.234632 +0.2924 0.25 0.214735 0.234584 +0.2925 0.25 0.214655 0.234538 +0.2926 0.25 0.214576 0.234492 +0.2927 0.25 0.214497 0.234448 +0.2928 0.25 0.214418 0.234405 +0.2929 0.25 0.214339 0.234363 +0.293 0.25 0.21426 0.234322 +0.2931 0.25 0.214182 0.234283 +0.2932 0.25 0.214103 0.234244 +0.2933 0.25 0.214025 0.234207 +0.2934 0.25 0.213947 0.234172 +0.2935 0.25 0.213869 0.234137 +0.2936 0.25 0.213791 0.234104 +0.2937 0.25 0.213713 0.234072 +0.2938 0.25 0.213636 0.234041 +0.2939 0.25 0.213558 0.234012 +0.294 0.25 0.213481 0.233984 +0.2941 0.25 0.213403 0.233957 +0.2942 0.25 0.213326 0.233931 +0.2943 0.25 0.213249 0.233907 +0.2944 0.25 0.213173 0.233884 +0.2945 0.25 0.213096 0.233862 +0.2946 0.25 0.213019 0.233842 +0.2947 0.25 0.212943 0.233823 +0.2948 0.25 0.212867 0.233805 +0.2949 0.25 0.212791 0.233788 +0.295 0.25 0.212715 0.233773 +0.2951 0.25 0.212639 0.233759 +0.2952 0.25 0.212563 0.233746 +0.2953 0.25 0.212487 0.233735 +0.2954 0.25 0.212412 0.233724 +0.2955 0.25 0.212337 0.233716 +0.2956 0.25 0.212262 0.233708 +0.2957 0.25 0.212187 0.233702 +0.2958 0.25 0.212112 0.233697 +0.2959 0.25 0.212037 0.233693 +0.296 0.25 0.211963 0.233691 +0.2961 0.25 0.211888 0.23369 +0.2962 0.25 0.211814 0.233691 +0.2963 0.25 0.21174 0.233692 +0.2964 0.25 0.211666 0.233695 +0.2965 0.25 0.211592 0.2337 +0.2966 0.25 0.211518 0.233705 +0.2967 0.25 0.211445 0.233712 +0.2968 0.25 0.211371 0.23372 +0.2969 0.25 0.211298 0.23373 +0.297 0.25 0.211225 0.233741 +0.2971 0.25 0.211152 0.233753 +0.2972 0.25 0.211079 0.233767 +0.2973 0.25 0.211007 0.233781 +0.2974 0.25 0.210934 0.233798 +0.2975 0.25 0.210862 0.233815 +0.2976 0.25 0.21079 0.233834 +0.2977 0.25 0.210718 0.233854 +0.2978 0.25 0.210646 0.233876 +0.2979 0.25 0.210574 0.233898 +0.298 0.25 0.210503 0.233922 +0.2981 0.25 0.210431 0.233948 +0.2982 0.25 0.21036 0.233974 +0.2983 0.25 0.210289 0.234003 +0.2984 0.25 0.210218 0.234032 +0.2985 0.25 0.210147 0.234062 +0.2986 0.25 0.210077 0.234094 +0.2987 0.25 0.210006 0.234128 +0.2988 0.25 0.209936 0.234162 +0.2989 0.25 0.209866 0.234198 +0.299 0.25 0.209796 0.234235 +0.2991 0.25 0.209726 0.234274 +0.2992 0.25 0.209656 0.234314 +0.2993 0.25 0.209587 0.234355 +0.2994 0.25 0.209517 0.234397 +0.2995 0.25 0.209448 0.234441 +0.2996 0.25 0.209379 0.234486 +0.2997 0.25 0.20931 0.234532 +0.2998 0.25 0.209242 0.234579 +0.2999 0.25 0.209173 0.234628 +0.3 0.25 0.209105 0.234678 +0.3001 0.25 0.209036 0.23473 +0.3002 0.25 0.208968 0.234782 +0.3003 0.25 0.2089 0.234836 +0.3004 0.25 0.208833 0.234891 +0.3005 0.25 0.208765 0.234948 +0.3006 0.25 0.208698 0.235006 +0.3007 0.25 0.208631 0.235064 +0.3008 0.25 0.208563 0.235125 +0.3009 0.25 0.208497 0.235186 +0.301 0.25 0.20843 0.235249 +0.3011 0.25 0.208363 0.235313 +0.3012 0.25 0.208297 0.235378 +0.3013 0.25 0.208231 0.235444 +0.3014 0.25 0.208165 0.235512 +0.3015 0.25 0.208099 0.235581 +0.3016 0.25 0.208033 0.235651 +0.3017 0.25 0.207967 0.235722 +0.3018 0.25 0.207902 0.235795 +0.3019 0.25 0.207837 0.235868 +0.302 0.25 0.207772 0.235943 +0.3021 0.25 0.207707 0.236019 +0.3022 0.25 0.207642 0.236097 +0.3023 0.25 0.207578 0.236175 +0.3024 0.25 0.207513 0.236255 +0.3025 0.25 0.207449 0.236336 +0.3026 0.25 0.207385 0.236418 +0.3027 0.25 0.207321 0.236501 +0.3028 0.25 0.207258 0.236585 +0.3029 0.25 0.207194 0.236671 +0.303 0.25 0.207131 0.236757 +0.3031 0.25 0.207068 0.236845 +0.3032 0.25 0.207005 0.236934 +0.3033 0.25 0.206942 0.237024 +0.3034 0.25 0.20688 0.237115 +0.3035 0.25 0.206817 0.237207 +0.3036 0.25 0.206755 0.237301 +0.3037 0.25 0.206693 0.237395 +0.3038 0.25 0.206631 0.237491 +0.3039 0.25 0.206569 0.237588 +0.304 0.25 0.206508 0.237685 +0.3041 0.25 0.206446 0.237784 +0.3042 0.25 0.206385 0.237884 +0.3043 0.25 0.206324 0.237985 +0.3044 0.25 0.206264 0.238087 +0.3045 0.25 0.206203 0.23819 +0.3046 0.25 0.206142 0.238294 +0.3047 0.25 0.206082 0.238399 +0.3048 0.25 0.206022 0.238506 +0.3049 0.25 0.205962 0.238613 +0.305 0.25 0.205903 0.238721 +0.3051 0.25 0.205843 0.23883 +0.3052 0.25 0.205784 0.23894 +0.3053 0.25 0.205725 0.239052 +0.3054 0.25 0.205666 0.239164 +0.3055 0.25 0.205607 0.239277 +0.3056 0.25 0.205548 0.239391 +0.3057 0.25 0.20549 0.239506 +0.3058 0.25 0.205432 0.239622 +0.3059 0.25 0.205374 0.239739 +0.306 0.25 0.205316 0.239857 +0.3061 0.25 0.205258 0.239976 +0.3062 0.25 0.205201 0.240096 +0.3063 0.25 0.205143 0.240216 +0.3064 0.25 0.205086 0.240338 +0.3065 0.25 0.20503 0.24046 +0.3066 0.25 0.204973 0.240584 +0.3067 0.25 0.204916 0.240708 +0.3068 0.25 0.20486 0.240833 +0.3069 0.25 0.204804 0.240959 +0.307 0.25 0.204748 0.241086 +0.3071 0.25 0.204692 0.241213 +0.3072 0.25 0.204637 0.241342 +0.3073 0.25 0.204581 0.241471 +0.3074 0.25 0.204526 0.241601 +0.3075 0.25 0.204471 0.241732 +0.3076 0.25 0.204416 0.241863 +0.3077 0.25 0.204362 0.241996 +0.3078 0.25 0.204308 0.242129 +0.3079 0.25 0.204253 0.242263 +0.308 0.25 0.204199 0.242398 +0.3081 0.25 0.204146 0.242533 +0.3082 0.25 0.204092 0.242669 +0.3083 0.25 0.204039 0.242806 +0.3084 0.25 0.203985 0.242944 +0.3085 0.25 0.203932 0.243082 +0.3086 0.25 0.20388 0.243221 +0.3087 0.25 0.203827 0.243361 +0.3088 0.25 0.203775 0.243501 +0.3089 0.25 0.203722 0.243642 +0.309 0.25 0.20367 0.243784 +0.3091 0.25 0.203619 0.243926 +0.3092 0.25 0.203567 0.244069 +0.3093 0.25 0.203516 0.244212 +0.3094 0.25 0.203464 0.244356 +0.3095 0.25 0.203413 0.244501 +0.3096 0.25 0.203363 0.244646 +0.3097 0.25 0.203312 0.244792 +0.3098 0.25 0.203262 0.244939 +0.3099 0.25 0.203211 0.245086 +0.31 0.25 0.203161 0.245233 +0.3101 0.25 0.203112 0.245381 +0.3102 0.25 0.203062 0.24553 +0.3103 0.25 0.203013 0.245679 +0.3104 0.25 0.202964 0.245829 +0.3105 0.25 0.202915 0.245979 +0.3106 0.25 0.202866 0.246129 +0.3107 0.25 0.202817 0.24628 +0.3108 0.25 0.202769 0.246432 +0.3109 0.25 0.202721 0.246584 +0.311 0.25 0.202673 0.246736 +0.3111 0.25 0.202625 0.246889 +0.3112 0.25 0.202578 0.247042 +0.3113 0.25 0.202531 0.247195 +0.3114 0.25 0.202483 0.247349 +0.3115 0.25 0.202437 0.247504 +0.3116 0.25 0.20239 0.247658 +0.3117 0.25 0.202343 0.247813 +0.3118 0.25 0.202297 0.247969 +0.3119 0.25 0.202251 0.248124 +0.312 0.25 0.202205 0.24828 +0.3121 0.25 0.20216 0.248437 +0.3122 0.25 0.202114 0.248593 +0.3123 0.25 0.202069 0.24875 +0.3124 0.25 0.202024 0.248907 +0.3125 0.25 0.20198 0.249065 +0.3126 0.25 0.201935 0.249222 +0.3127 0.25 0.201891 0.24938 +0.3128 0.25 0.201847 0.249538 +0.3129 0.25 0.201803 0.249696 +0.313 0.25 0.201759 0.249855 +0.3131 0.25 0.201716 0.250014 +0.3132 0.25 0.201672 0.250172 +0.3133 0.25 0.201629 0.250331 +0.3134 0.25 0.201586 0.25049 +0.3135 0.25 0.201544 0.25065 +0.3136 0.25 0.201502 0.250809 +0.3137 0.25 0.201459 0.250969 +0.3138 0.25 0.201417 0.251128 +0.3139 0.25 0.201376 0.251288 +0.314 0.25 0.201334 0.251448 +0.3141 0.25 0.201293 0.251607 +0.3142 0.25 0.201252 0.251767 +0.3143 0.25 0.201211 0.251927 +0.3144 0.25 0.20117 0.252087 +0.3145 0.25 0.20113 0.252247 +0.3146 0.25 0.20109 0.252407 +0.3147 0.25 0.20105 0.252567 +0.3148 0.25 0.20101 0.252727 +0.3149 0.25 0.200971 0.252887 +0.315 0.25 0.200931 0.253046 +0.3151 0.25 0.200892 0.253206 +0.3152 0.25 0.200853 0.253366 +0.3153 0.25 0.200815 0.253525 +0.3154 0.25 0.200776 0.253685 +0.3155 0.25 0.200738 0.253844 +0.3156 0.25 0.2007 0.254003 +0.3157 0.25 0.200663 0.254163 +0.3158 0.25 0.200625 0.254321 +0.3159 0.25 0.200588 0.25448 +0.316 0.25 0.200551 0.254639 +0.3161 0.25 0.200514 0.254797 +0.3162 0.25 0.200477 0.254956 +0.3163 0.25 0.200441 0.255114 +0.3164 0.25 0.200405 0.255271 +0.3165 0.25 0.200369 0.255429 +0.3166 0.25 0.200333 0.255586 +0.3167 0.25 0.200298 0.255743 +0.3168 0.25 0.200263 0.2559 +0.3169 0.25 0.200228 0.256057 +0.317 0.25 0.200193 0.256213 +0.3171 0.25 0.200158 0.256369 +0.3172 0.25 0.200124 0.256524 +0.3173 0.25 0.20009 0.256679 +0.3174 0.25 0.200056 0.256834 +0.3175 0.25 0.200023 0.256989 +0.3176 0.25 0.199989 0.257143 +0.3177 0.25 0.199956 0.257297 +0.3178 0.25 0.199923 0.25745 +0.3179 0.25 0.199891 0.257603 +0.318 0.25 0.199858 0.257756 +0.3181 0.25 0.199826 0.257908 +0.3182 0.25 0.199794 0.258059 +0.3183 0.25 0.199762 0.258211 +0.3184 0.25 0.199731 0.258361 +0.3185 0.25 0.199699 0.258512 +0.3186 0.25 0.199668 0.258661 +0.3187 0.25 0.199638 0.258811 +0.3188 0.25 0.199607 0.258959 +0.3189 0.25 0.199577 0.259108 +0.319 0.25 0.199547 0.259255 +0.3191 0.25 0.199517 0.259403 +0.3192 0.25 0.199487 0.259549 +0.3193 0.25 0.199458 0.259695 +0.3194 0.25 0.199429 0.259841 +0.3195 0.25 0.1994 0.259985 +0.3196 0.25 0.199371 0.26013 +0.3197 0.25 0.199343 0.260273 +0.3198 0.25 0.199315 0.260416 +0.3199 0.25 0.199287 0.260559 +0.32 0.25 0.199259 0.2607 +0.3201 0.25 0.199232 0.260841 +0.3202 0.25 0.199204 0.260982 +0.3203 0.25 0.199177 0.261121 +0.3204 0.25 0.199151 0.26126 +0.3205 0.25 0.199124 0.261398 +0.3206 0.25 0.199098 0.261536 +0.3207 0.25 0.199072 0.261673 +0.3208 0.25 0.199046 0.261809 +0.3209 0.25 0.199021 0.261944 +0.321 0.25 0.198995 0.262078 +0.3211 0.25 0.19897 0.262212 +0.3212 0.25 0.198946 0.262345 +0.3213 0.25 0.198921 0.262477 +0.3214 0.25 0.198897 0.262608 +0.3215 0.25 0.198873 0.262739 +0.3216 0.25 0.198849 0.262869 +0.3217 0.25 0.198825 0.262997 +0.3218 0.25 0.198802 0.263125 +0.3219 0.25 0.198779 0.263253 +0.322 0.25 0.198756 0.263379 +0.3221 0.25 0.198733 0.263504 +0.3222 0.25 0.198711 0.263629 +0.3223 0.25 0.198689 0.263752 +0.3224 0.25 0.198667 0.263875 +0.3225 0.25 0.198646 0.263996 +0.3226 0.25 0.198624 0.264117 +0.3227 0.25 0.198603 0.264237 +0.3228 0.25 0.198582 0.264356 +0.3229 0.25 0.198562 0.264474 +0.323 0.25 0.198541 0.264591 +0.3231 0.25 0.198521 0.264707 +0.3232 0.25 0.198502 0.264821 +0.3233 0.25 0.198482 0.264935 +0.3234 0.25 0.198463 0.265048 +0.3235 0.25 0.198444 0.26516 +0.3236 0.25 0.198425 0.265271 +0.3237 0.25 0.198406 0.265381 +0.3238 0.25 0.198388 0.26549 +0.3239 0.25 0.19837 0.265597 +0.324 0.25 0.198352 0.265704 +0.3241 0.25 0.198334 0.265809 +0.3242 0.25 0.198317 0.265914 +0.3243 0.25 0.1983 0.266017 +0.3244 0.25 0.198283 0.266119 +0.3245 0.25 0.198267 0.26622 +0.3246 0.25 0.19825 0.26632 +0.3247 0.25 0.198234 0.266419 +0.3248 0.25 0.198219 0.266517 +0.3249 0.25 0.198203 0.266614 +0.325 0.25 0.198188 0.266709 +0.3251 0.25 0.198173 0.266803 +0.3252 0.25 0.198158 0.266896 +0.3253 0.25 0.198143 0.266988 +0.3254 0.25 0.198129 0.267079 +0.3255 0.25 0.198115 0.267168 +0.3256 0.25 0.198102 0.267256 +0.3257 0.25 0.198088 0.267344 +0.3258 0.25 0.198075 0.267429 +0.3259 0.25 0.198062 0.267514 +0.326 0.25 0.198049 0.267597 +0.3261 0.25 0.198037 0.267679 +0.3262 0.25 0.198025 0.26776 +0.3263 0.25 0.198013 0.26784 +0.3264 0.25 0.198001 0.267918 +0.3265 0.25 0.19799 0.267995 +0.3266 0.25 0.197978 0.268071 +0.3267 0.25 0.197968 0.268145 +0.3268 0.25 0.197957 0.268218 +0.3269 0.25 0.197947 0.26829 +0.327 0.25 0.197937 0.268361 +0.3271 0.25 0.197927 0.26843 +0.3272 0.25 0.197917 0.268498 +0.3273 0.25 0.197908 0.268565 +0.3274 0.25 0.197899 0.26863 +0.3275 0.25 0.19789 0.268694 +0.3276 0.25 0.197882 0.268756 +0.3277 0.25 0.197873 0.268817 +0.3278 0.25 0.197865 0.268877 +0.3279 0.25 0.197858 0.268936 +0.328 0.25 0.19785 0.268993 +0.3281 0.25 0.197843 0.269048 +0.3282 0.25 0.197836 0.269103 +0.3283 0.25 0.197829 0.269155 +0.3284 0.25 0.197823 0.269207 +0.3285 0.25 0.197817 0.269257 +0.3286 0.25 0.197811 0.269306 +0.3287 0.25 0.197805 0.269353 +0.3288 0.25 0.1978 0.269399 +0.3289 0.25 0.197795 0.269443 +0.329 0.25 0.19779 0.269486 +0.3291 0.25 0.197786 0.269528 +0.3292 0.25 0.197782 0.269568 +0.3293 0.25 0.197778 0.269607 +0.3294 0.25 0.197774 0.269644 +0.3295 0.25 0.19777 0.26968 +0.3296 0.25 0.197767 0.269714 +0.3297 0.25 0.197764 0.269747 +0.3298 0.25 0.197762 0.269779 +0.3299 0.25 0.197759 0.269809 +0.33 0.25 0.197757 0.269837 +0.3301 0.25 0.197755 0.269864 +0.3302 0.25 0.197754 0.26989 +0.3303 0.25 0.197753 0.269914 +0.3304 0.25 0.197752 0.269936 +0.3305 0.25 0.197751 0.269957 +0.3306 0.25 0.19775 0.269977 +0.3307 0.25 0.19775 0.269995 +0.3308 0.25 0.19775 0.270012 +0.3309 0.25 0.197751 0.270027 +0.331 0.25 0.197751 0.27004 +0.3311 0.25 0.197752 0.270053 +0.3312 0.25 0.197753 0.270063 +0.3313 0.25 0.197755 0.270072 +0.3314 0.25 0.197756 0.27008 +0.3315 0.25 0.197758 0.270086 +0.3316 0.25 0.197761 0.27009 +0.3317 0.25 0.197763 0.270093 +0.3318 0.25 0.197766 0.270095 +0.3319 0.25 0.197769 0.270095 +0.332 0.25 0.197772 0.270093 +0.3321 0.25 0.197776 0.27009 +0.3322 0.25 0.19778 0.270086 +0.3323 0.25 0.197784 0.27008 +0.3324 0.25 0.197789 0.270072 +0.3325 0.25 0.197793 0.270063 +0.3326 0.25 0.197798 0.270052 +0.3327 0.25 0.197804 0.27004 +0.3328 0.25 0.197809 0.270026 +0.3329 0.25 0.197815 0.270011 +0.333 0.25 0.197821 0.269994 +0.3331 0.25 0.197828 0.269976 +0.3332 0.25 0.197834 0.269956 +0.3333 0.25 0.197841 0.269934 +0.3334 0.25 0.197849 0.269911 +0.3335 0.25 0.197856 0.269887 +0.3336 0.25 0.197864 0.269861 +0.3337 0.25 0.197872 0.269833 +0.3338 0.25 0.19788 0.269804 +0.3339 0.25 0.197889 0.269773 +0.334 0.25 0.197898 0.269741 +0.3341 0.25 0.197907 0.269708 +0.3342 0.25 0.197917 0.269672 +0.3343 0.25 0.197927 0.269636 +0.3344 0.25 0.197937 0.269597 +0.3345 0.25 0.197947 0.269557 +0.3346 0.25 0.197958 0.269516 +0.3347 0.25 0.197968 0.269473 +0.3348 0.25 0.19798 0.269429 +0.3349 0.25 0.197991 0.269383 +0.335 0.25 0.198003 0.269335 +0.3351 0.25 0.198015 0.269286 +0.3352 0.25 0.198027 0.269236 +0.3353 0.25 0.19804 0.269184 +0.3354 0.25 0.198053 0.26913 +0.3355 0.25 0.198066 0.269075 +0.3356 0.25 0.198079 0.269019 +0.3357 0.25 0.198093 0.268961 +0.3358 0.25 0.198107 0.268901 +0.3359 0.25 0.198121 0.26884 +0.336 0.25 0.198136 0.268778 +0.3361 0.25 0.198151 0.268714 +0.3362 0.25 0.198166 0.268648 +0.3363 0.25 0.198181 0.268581 +0.3364 0.25 0.198197 0.268513 +0.3365 0.25 0.198213 0.268443 +0.3366 0.25 0.198229 0.268371 +0.3367 0.25 0.198246 0.268298 +0.3368 0.25 0.198263 0.268224 +0.3369 0.25 0.19828 0.268148 +0.337 0.25 0.198298 0.268071 +0.3371 0.25 0.198315 0.267992 +0.3372 0.25 0.198333 0.267912 +0.3373 0.25 0.198352 0.26783 +0.3374 0.25 0.19837 0.267747 +0.3375 0.25 0.198389 0.267662 +0.3376 0.25 0.198408 0.267576 +0.3377 0.25 0.198428 0.267489 +0.3378 0.25 0.198448 0.2674 +0.3379 0.25 0.198468 0.26731 +0.338 0.25 0.198488 0.267218 +0.3381 0.25 0.198509 0.267125 +0.3382 0.25 0.19853 0.26703 +0.3383 0.25 0.198551 0.266934 +0.3384 0.25 0.198572 0.266837 +0.3385 0.25 0.198594 0.266738 +0.3386 0.25 0.198616 0.266638 +0.3387 0.25 0.198639 0.266537 +0.3388 0.25 0.198661 0.266434 +0.3389 0.25 0.198684 0.26633 +0.339 0.25 0.198707 0.266224 +0.3391 0.25 0.198731 0.266117 +0.3392 0.25 0.198755 0.266009 +0.3393 0.25 0.198779 0.265899 +0.3394 0.25 0.198803 0.265788 +0.3395 0.25 0.198828 0.265676 +0.3396 0.25 0.198853 0.265562 +0.3397 0.25 0.198878 0.265448 +0.3398 0.25 0.198904 0.265331 +0.3399 0.25 0.19893 0.265214 +0.34 0.25 0.198956 0.265095 +0.3401 0.25 0.198983 0.264975 +0.3402 0.25 0.199009 0.264854 +0.3403 0.25 0.199036 0.264731 +0.3404 0.25 0.199064 0.264607 +0.3405 0.25 0.199091 0.264482 +0.3406 0.25 0.199119 0.264355 +0.3407 0.25 0.199148 0.264228 +0.3408 0.25 0.199176 0.264099 +0.3409 0.25 0.199205 0.263969 +0.341 0.25 0.199234 0.263837 +0.3411 0.25 0.199263 0.263705 +0.3412 0.25 0.199293 0.263571 +0.3413 0.25 0.199323 0.263436 +0.3414 0.25 0.199354 0.2633 +0.3415 0.25 0.199384 0.263163 +0.3416 0.25 0.199415 0.263024 +0.3417 0.25 0.199446 0.262885 +0.3418 0.25 0.199478 0.262744 +0.3419 0.25 0.19951 0.262602 +0.342 0.25 0.199542 0.262459 +0.3421 0.25 0.199574 0.262315 +0.3422 0.25 0.199607 0.26217 +0.3423 0.25 0.19964 0.262023 +0.3424 0.25 0.199673 0.261876 +0.3425 0.25 0.199707 0.261727 +0.3426 0.25 0.19974 0.261578 +0.3427 0.25 0.199775 0.261427 +0.3428 0.25 0.199809 0.261275 +0.3429 0.25 0.199844 0.261123 +0.343 0.25 0.199879 0.260969 +0.3431 0.25 0.199914 0.260814 +0.3432 0.25 0.19995 0.260658 +0.3433 0.25 0.199986 0.260501 +0.3434 0.25 0.200022 0.260344 +0.3435 0.25 0.200059 0.260185 +0.3436 0.25 0.200096 0.260025 +0.3437 0.25 0.200133 0.259864 +0.3438 0.25 0.20017 0.259702 +0.3439 0.25 0.200208 0.25954 +0.344 0.25 0.200246 0.259376 +0.3441 0.25 0.200285 0.259212 +0.3442 0.25 0.200323 0.259046 +0.3443 0.25 0.200362 0.25888 +0.3444 0.25 0.200402 0.258713 +0.3445 0.25 0.200441 0.258545 +0.3446 0.25 0.200481 0.258376 +0.3447 0.25 0.200521 0.258206 +0.3448 0.25 0.200562 0.258036 +0.3449 0.25 0.200603 0.257864 +0.345 0.25 0.200644 0.257692 +0.3451 0.25 0.200685 0.257519 +0.3452 0.25 0.200727 0.257345 +0.3453 0.25 0.200769 0.25717 +0.3454 0.25 0.200811 0.256995 +0.3455 0.25 0.200854 0.256819 +0.3456 0.25 0.200897 0.256642 +0.3457 0.25 0.20094 0.256464 +0.3458 0.25 0.200984 0.256286 +0.3459 0.25 0.201027 0.256107 +0.346 0.25 0.201072 0.255927 +0.3461 0.25 0.201116 0.255747 +0.3462 0.25 0.201161 0.255566 +0.3463 0.25 0.201206 0.255384 +0.3464 0.25 0.201251 0.255201 +0.3465 0.25 0.201297 0.255018 +0.3466 0.25 0.201343 0.254835 +0.3467 0.25 0.201389 0.25465 +0.3468 0.25 0.201436 0.254465 +0.3469 0.25 0.201483 0.25428 +0.347 0.25 0.20153 0.254094 +0.3471 0.25 0.201577 0.253907 +0.3472 0.25 0.201625 0.25372 +0.3473 0.25 0.201673 0.253532 +0.3474 0.25 0.201722 0.253344 +0.3475 0.25 0.20177 0.253155 +0.3476 0.25 0.201819 0.252966 +0.3477 0.25 0.201869 0.252776 +0.3478 0.25 0.201918 0.252586 +0.3479 0.25 0.201968 0.252396 +0.348 0.25 0.202019 0.252205 +0.3481 0.25 0.202069 0.252013 +0.3482 0.25 0.20212 0.251821 +0.3483 0.25 0.202171 0.251629 +0.3484 0.25 0.202223 0.251436 +0.3485 0.25 0.202275 0.251243 +0.3486 0.25 0.202327 0.25105 +0.3487 0.25 0.202379 0.250856 +0.3488 0.25 0.202432 0.250662 +0.3489 0.25 0.202485 0.250467 +0.349 0.25 0.202538 0.250273 +0.3491 0.25 0.202592 0.250078 +0.3492 0.25 0.202646 0.249882 +0.3493 0.25 0.2027 0.249687 +0.3494 0.25 0.202755 0.249491 +0.3495 0.25 0.20281 0.249295 +0.3496 0.25 0.202865 0.249098 +0.3497 0.25 0.20292 0.248902 +0.3498 0.25 0.202976 0.248705 +0.3499 0.25 0.203032 0.248508 +0.35 0.25 0.203089 0.248311 +0.3501 0.25 0.203146 0.248114 +0.3502 0.25 0.203203 0.247917 +0.3503 0.25 0.20326 0.247719 +0.3504 0.25 0.203318 0.247522 +0.3505 0.25 0.203376 0.247324 +0.3506 0.25 0.203434 0.247126 +0.3507 0.25 0.203493 0.246929 +0.3508 0.25 0.203551 0.246731 +0.3509 0.25 0.203611 0.246533 +0.351 0.25 0.20367 0.246335 +0.3511 0.25 0.20373 0.246137 +0.3512 0.25 0.20379 0.245939 +0.3513 0.25 0.203851 0.245741 +0.3514 0.25 0.203912 0.245543 +0.3515 0.25 0.203973 0.245345 +0.3516 0.25 0.204034 0.245148 +0.3517 0.25 0.204096 0.24495 +0.3518 0.25 0.204158 0.244752 +0.3519 0.25 0.20422 0.244555 +0.352 0.25 0.204283 0.244357 +0.3521 0.25 0.204346 0.24416 +0.3522 0.25 0.204409 0.243963 +0.3523 0.25 0.204473 0.243766 +0.3524 0.25 0.204537 0.243569 +0.3525 0.25 0.204601 0.243373 +0.3526 0.25 0.204665 0.243176 +0.3527 0.25 0.20473 0.24298 +0.3528 0.25 0.204795 0.242784 +0.3529 0.25 0.204861 0.242589 +0.353 0.25 0.204927 0.242393 +0.3531 0.25 0.204993 0.242198 +0.3532 0.25 0.205059 0.242003 +0.3533 0.25 0.205126 0.241809 +0.3534 0.25 0.205193 0.241615 +0.3535 0.25 0.20526 0.241421 +0.3536 0.25 0.205328 0.241227 +0.3537 0.25 0.205396 0.241034 +0.3538 0.25 0.205464 0.240841 +0.3539 0.25 0.205533 0.240649 +0.354 0.25 0.205602 0.240457 +0.3541 0.25 0.205671 0.240266 +0.3542 0.25 0.205741 0.240074 +0.3543 0.25 0.205811 0.239884 +0.3544 0.25 0.205881 0.239694 +0.3545 0.25 0.205951 0.239504 +0.3546 0.25 0.206022 0.239315 +0.3547 0.25 0.206093 0.239126 +0.3548 0.25 0.206165 0.238938 +0.3549 0.25 0.206237 0.23875 +0.355 0.25 0.206309 0.238563 +0.3551 0.25 0.206381 0.238377 +0.3552 0.25 0.206454 0.238191 +0.3553 0.25 0.206527 0.238005 +0.3554 0.25 0.2066 0.237821 +0.3555 0.25 0.206674 0.237636 +0.3556 0.25 0.206748 0.237453 +0.3557 0.25 0.206822 0.23727 +0.3558 0.25 0.206897 0.237088 +0.3559 0.25 0.206972 0.236906 +0.356 0.25 0.207047 0.236726 +0.3561 0.25 0.207123 0.236546 +0.3562 0.25 0.207198 0.236366 +0.3563 0.25 0.207275 0.236188 +0.3564 0.25 0.207351 0.23601 +0.3565 0.25 0.207428 0.235833 +0.3566 0.25 0.207505 0.235656 +0.3567 0.25 0.207583 0.235481 +0.3568 0.25 0.20766 0.235306 +0.3569 0.25 0.207738 0.235132 +0.357 0.25 0.207817 0.234959 +0.3571 0.25 0.207896 0.234787 +0.3572 0.25 0.207975 0.234615 +0.3573 0.25 0.208054 0.234445 +0.3574 0.25 0.208134 0.234275 +0.3575 0.25 0.208214 0.234106 +0.3576 0.25 0.208294 0.233938 +0.3577 0.25 0.208375 0.233772 +0.3578 0.25 0.208456 0.233606 +0.3579 0.25 0.208537 0.233441 +0.358 0.25 0.208618 0.233277 +0.3581 0.25 0.2087 0.233113 +0.3582 0.25 0.208783 0.232951 +0.3583 0.25 0.208865 0.23279 +0.3584 0.25 0.208948 0.23263 +0.3585 0.25 0.209031 0.232471 +0.3586 0.25 0.209115 0.232313 +0.3587 0.25 0.209198 0.232156 +0.3588 0.25 0.209283 0.232 +0.3589 0.25 0.209367 0.231846 +0.359 0.25 0.209452 0.231692 +0.3591 0.25 0.209537 0.231539 +0.3592 0.25 0.209622 0.231388 +0.3593 0.25 0.209708 0.231237 +0.3594 0.25 0.209794 0.231088 +0.3595 0.25 0.20988 0.23094 +0.3596 0.25 0.209967 0.230793 +0.3597 0.25 0.210054 0.230648 +0.3598 0.25 0.210141 0.230503 +0.3599 0.25 0.210229 0.23036 +0.36 0.25 0.210317 0.230218 +0.3601 0.25 0.210405 0.230077 +0.3602 0.25 0.210494 0.229937 +0.3603 0.25 0.210583 0.229799 +0.3604 0.25 0.210672 0.229662 +0.3605 0.25 0.210762 0.229526 +0.3606 0.25 0.210852 0.229391 +0.3607 0.25 0.210942 0.229258 +0.3608 0.25 0.211032 0.229126 +0.3609 0.25 0.211123 0.228995 +0.361 0.25 0.211214 0.228866 +0.3611 0.25 0.211306 0.228738 +0.3612 0.25 0.211397 0.228611 +0.3613 0.25 0.21149 0.228486 +0.3614 0.25 0.211582 0.228362 +0.3615 0.25 0.211675 0.22824 +0.3616 0.25 0.211768 0.228119 +0.3617 0.25 0.211861 0.227999 +0.3618 0.25 0.211955 0.227881 +0.3619 0.25 0.212049 0.227764 +0.362 0.25 0.212143 0.227649 +0.3621 0.25 0.212238 0.227535 +0.3622 0.25 0.212333 0.227422 +0.3623 0.25 0.212428 0.227311 +0.3624 0.25 0.212524 0.227202 +0.3625 0.25 0.21262 0.227093 +0.3626 0.25 0.212716 0.226987 +0.3627 0.25 0.212813 0.226882 +0.3628 0.25 0.21291 0.226778 +0.3629 0.25 0.213007 0.226676 +0.363 0.25 0.213104 0.226576 +0.3631 0.25 0.213202 0.226477 +0.3632 0.25 0.2133 0.22638 +0.3633 0.25 0.213399 0.226284 +0.3634 0.25 0.213498 0.22619 +0.3635 0.25 0.213597 0.226097 +0.3636 0.25 0.213696 0.226006 +0.3637 0.25 0.213796 0.225916 +0.3638 0.25 0.213896 0.225829 +0.3639 0.25 0.213997 0.225742 +0.364 0.25 0.214097 0.225658 +0.3641 0.25 0.214198 0.225575 +0.3642 0.25 0.2143 0.225493 +0.3643 0.25 0.214402 0.225414 +0.3644 0.25 0.214504 0.225336 +0.3645 0.25 0.214606 0.225259 +0.3646 0.25 0.214709 0.225185 +0.3647 0.25 0.214812 0.225112 +0.3648 0.25 0.214915 0.22504 +0.3649 0.25 0.215019 0.224971 +0.365 0.25 0.215122 0.224903 +0.3651 0.25 0.215227 0.224837 +0.3652 0.25 0.215331 0.224772 +0.3653 0.25 0.215436 0.22471 +0.3654 0.25 0.215541 0.224649 +0.3655 0.25 0.215647 0.224589 +0.3656 0.25 0.215753 0.224532 +0.3657 0.25 0.215859 0.224476 +0.3658 0.25 0.215966 0.224422 +0.3659 0.25 0.216072 0.22437 +0.366 0.25 0.21618 0.224319 +0.3661 0.25 0.216287 0.224271 +0.3662 0.25 0.216395 0.224224 +0.3663 0.25 0.216503 0.224179 +0.3664 0.25 0.216611 0.224136 +0.3665 0.25 0.21672 0.224094 +0.3666 0.25 0.216829 0.224054 +0.3667 0.25 0.216939 0.224017 +0.3668 0.25 0.217048 0.223981 +0.3669 0.25 0.217158 0.223946 +0.367 0.25 0.217269 0.223914 +0.3671 0.25 0.217379 0.223883 +0.3672 0.25 0.217491 0.223855 +0.3673 0.25 0.217602 0.223828 +0.3674 0.25 0.217713 0.223803 +0.3675 0.25 0.217825 0.22378 +0.3676 0.25 0.217938 0.223758 +0.3677 0.25 0.21805 0.223739 +0.3678 0.25 0.218163 0.223721 +0.3679 0.25 0.218277 0.223706 +0.368 0.25 0.21839 0.223692 +0.3681 0.25 0.218504 0.22368 +0.3682 0.25 0.218618 0.22367 +0.3683 0.25 0.218733 0.223662 +0.3684 0.25 0.218848 0.223655 +0.3685 0.25 0.218963 0.223651 +0.3686 0.25 0.219078 0.223649 +0.3687 0.25 0.219194 0.223648 +0.3688 0.25 0.21931 0.223649 +0.3689 0.25 0.219427 0.223653 +0.369 0.25 0.219543 0.223658 +0.3691 0.25 0.219661 0.223665 +0.3692 0.25 0.219778 0.223674 +0.3693 0.25 0.219896 0.223685 +0.3694 0.25 0.220014 0.223697 +0.3695 0.25 0.220132 0.223712 +0.3696 0.25 0.220251 0.223729 +0.3697 0.25 0.22037 0.223747 +0.3698 0.25 0.220489 0.223768 +0.3699 0.25 0.220609 0.22379 +0.37 0.25 0.220729 0.223815 +0.3701 0.25 0.220849 0.223841 +0.3702 0.25 0.22097 0.223869 +0.3703 0.25 0.221091 0.223899 +0.3704 0.25 0.221212 0.223931 +0.3705 0.25 0.221334 0.223965 +0.3706 0.25 0.221455 0.224001 +0.3707 0.25 0.221578 0.224039 +0.3708 0.25 0.2217 0.224079 +0.3709 0.25 0.221823 0.224121 +0.371 0.25 0.221946 0.224164 +0.3711 0.25 0.22207 0.22421 +0.3712 0.25 0.222194 0.224257 +0.3713 0.25 0.222318 0.224307 +0.3714 0.25 0.222442 0.224358 +0.3715 0.25 0.222567 0.224412 +0.3716 0.25 0.222692 0.224467 +0.3717 0.25 0.222817 0.224524 +0.3718 0.25 0.222943 0.224583 +0.3719 0.25 0.223069 0.224644 +0.372 0.25 0.223196 0.224707 +0.3721 0.25 0.223322 0.224772 +0.3722 0.25 0.223449 0.224839 +0.3723 0.25 0.223577 0.224908 +0.3724 0.25 0.223704 0.224979 +0.3725 0.25 0.223832 0.225051 +0.3726 0.25 0.223961 0.225126 +0.3727 0.25 0.224089 0.225202 +0.3728 0.25 0.224218 0.225281 +0.3729 0.25 0.224347 0.225361 +0.373 0.25 0.224477 0.225443 +0.3731 0.25 0.224607 0.225527 +0.3732 0.25 0.224737 0.225613 +0.3733 0.25 0.224868 0.225701 +0.3734 0.25 0.224999 0.225791 +0.3735 0.25 0.22513 0.225883 +0.3736 0.25 0.225261 0.225976 +0.3737 0.25 0.225393 0.226072 +0.3738 0.25 0.225525 0.226169 +0.3739 0.25 0.225658 0.226268 +0.374 0.25 0.22579 0.22637 +0.3741 0.25 0.225923 0.226473 +0.3742 0.25 0.226057 0.226577 +0.3743 0.25 0.226191 0.226684 +0.3744 0.25 0.226325 0.226793 +0.3745 0.25 0.226459 0.226903 +0.3746 0.25 0.226594 0.227016 +0.3747 0.25 0.226729 0.22713 +0.3748 0.25 0.226864 0.227246 +0.3749 0.25 0.227 0.227363 +0.375 0.25 0.227135 0.227483 +0.3751 0.25 0.227272 0.227605 +0.3752 0.25 0.227408 0.227728 +0.3753 0.25 0.227545 0.227853 +0.3754 0.25 0.227682 0.22798 +0.3755 0.25 0.22782 0.228108 +0.3756 0.25 0.227958 0.228239 +0.3757 0.25 0.228096 0.228371 +0.3758 0.25 0.228235 0.228505 +0.3759 0.25 0.228373 0.228641 +0.376 0.25 0.228512 0.228779 +0.3761 0.25 0.228652 0.228918 +0.3762 0.25 0.228792 0.229059 +0.3763 0.25 0.228932 0.229202 +0.3764 0.25 0.229072 0.229347 +0.3765 0.25 0.229213 0.229493 +0.3766 0.25 0.229354 0.229641 +0.3767 0.25 0.229495 0.229791 +0.3768 0.25 0.229637 0.229943 +0.3769 0.25 0.229779 0.230096 +0.377 0.25 0.229921 0.230251 +0.3771 0.25 0.230064 0.230407 +0.3772 0.25 0.230207 0.230566 +0.3773 0.25 0.23035 0.230726 +0.3774 0.25 0.230494 0.230887 +0.3775 0.25 0.230637 0.23105 +0.3776 0.25 0.230782 0.231215 +0.3777 0.25 0.230926 0.231382 +0.3778 0.25 0.231071 0.23155 +0.3779 0.25 0.231216 0.23172 +0.378 0.25 0.231362 0.231891 +0.3781 0.25 0.231507 0.232064 +0.3782 0.25 0.231653 0.232239 +0.3783 0.25 0.2318 0.232415 +0.3784 0.25 0.231947 0.232593 +0.3785 0.25 0.232094 0.232772 +0.3786 0.25 0.232241 0.232953 +0.3787 0.25 0.232389 0.233136 +0.3788 0.25 0.232537 0.23332 +0.3789 0.25 0.232685 0.233505 +0.379 0.25 0.232834 0.233692 +0.3791 0.25 0.232983 0.233881 +0.3792 0.25 0.233132 0.234071 +0.3793 0.25 0.233281 0.234262 +0.3794 0.25 0.233431 0.234455 +0.3795 0.25 0.233581 0.23465 +0.3796 0.25 0.233732 0.234845 +0.3797 0.25 0.233883 0.235043 +0.3798 0.25 0.234034 0.235241 +0.3799 0.25 0.234185 0.235442 +0.38 0.25 0.234337 0.235643 +0.3801 0.25 0.234489 0.235846 +0.3802 0.25 0.234642 0.23605 +0.3803 0.25 0.234794 0.236256 +0.3804 0.25 0.234947 0.236463 +0.3805 0.25 0.235101 0.236672 +0.3806 0.25 0.235254 0.236881 +0.3807 0.25 0.235408 0.237092 +0.3808 0.25 0.235563 0.237305 +0.3809 0.25 0.235717 0.237518 +0.381 0.25 0.235872 0.237733 +0.3811 0.25 0.236027 0.23795 +0.3812 0.25 0.236183 0.238167 +0.3813 0.25 0.236339 0.238386 +0.3814 0.25 0.236495 0.238606 +0.3815 0.25 0.236651 0.238827 +0.3816 0.25 0.236808 0.239049 +0.3817 0.25 0.236965 0.239273 +0.3818 0.25 0.237123 0.239497 +0.3819 0.25 0.23728 0.239723 +0.382 0.25 0.237438 0.23995 +0.3821 0.25 0.237597 0.240179 +0.3822 0.25 0.237755 0.240408 +0.3823 0.25 0.237914 0.240638 +0.3824 0.25 0.238074 0.24087 +0.3825 0.25 0.238233 0.241102 +0.3826 0.25 0.238393 0.241336 +0.3827 0.25 0.238553 0.241571 +0.3828 0.25 0.238714 0.241807 +0.3829 0.25 0.238875 0.242043 +0.383 0.25 0.239036 0.242281 +0.3831 0.25 0.239197 0.24252 +0.3832 0.25 0.239359 0.24276 +0.3833 0.25 0.239521 0.243 +0.3834 0.25 0.239684 0.243242 +0.3835 0.25 0.239846 0.243485 +0.3836 0.25 0.240009 0.243728 +0.3837 0.25 0.240173 0.243973 +0.3838 0.25 0.240336 0.244218 +0.3839 0.25 0.2405 0.244464 +0.384 0.25 0.240664 0.244711 +0.3841 0.25 0.240829 0.244959 +0.3842 0.25 0.240994 0.245208 +0.3843 0.25 0.241159 0.245457 +0.3844 0.25 0.241325 0.245708 +0.3845 0.25 0.24149 0.245959 +0.3846 0.25 0.241657 0.246211 +0.3847 0.25 0.241823 0.246464 +0.3848 0.25 0.24199 0.246717 +0.3849 0.25 0.242157 0.246971 +0.385 0.25 0.242324 0.247226 +0.3851 0.25 0.242492 0.247481 +0.3852 0.25 0.24266 0.247737 +0.3853 0.25 0.242828 0.247994 +0.3854 0.25 0.242997 0.248252 +0.3855 0.25 0.243165 0.24851 +0.3856 0.25 0.243335 0.248768 +0.3857 0.25 0.243504 0.249028 +0.3858 0.25 0.243674 0.249287 +0.3859 0.25 0.243844 0.249548 +0.386 0.25 0.244015 0.249809 +0.3861 0.25 0.244185 0.25007 +0.3862 0.25 0.244356 0.250332 +0.3863 0.25 0.244528 0.250594 +0.3864 0.25 0.244699 0.250857 +0.3865 0.25 0.244871 0.25112 +0.3866 0.25 0.245044 0.251384 +0.3867 0.25 0.245216 0.251648 +0.3868 0.25 0.245389 0.251913 +0.3869 0.25 0.245562 0.252178 +0.387 0.25 0.245736 0.252443 +0.3871 0.25 0.245909 0.252709 +0.3872 0.25 0.246084 0.252975 +0.3873 0.25 0.246258 0.253241 +0.3874 0.25 0.246433 0.253507 +0.3875 0.25 0.246608 0.253774 +0.3876 0.25 0.246783 0.254041 +0.3877 0.25 0.246959 0.254309 +0.3878 0.25 0.247135 0.254576 +0.3879 0.25 0.247311 0.254844 +0.388 0.25 0.247487 0.255112 +0.3881 0.25 0.247664 0.25538 +0.3882 0.25 0.247841 0.255648 +0.3883 0.25 0.248019 0.255917 +0.3884 0.25 0.248197 0.256185 +0.3885 0.25 0.248375 0.256454 +0.3886 0.25 0.248553 0.256722 +0.3887 0.25 0.248732 0.256991 +0.3888 0.25 0.248911 0.25726 +0.3889 0.25 0.24909 0.257528 +0.389 0.25 0.24927 0.257797 +0.3891 0.25 0.249449 0.258066 +0.3892 0.25 0.24963 0.258335 +0.3893 0.25 0.24981 0.258603 +0.3894 0.25 0.249991 0.258872 +0.3895 0.25 0.250172 0.25914 +0.3896 0.25 0.250353 0.259409 +0.3897 0.25 0.250535 0.259677 +0.3898 0.25 0.250717 0.259945 +0.3899 0.25 0.250899 0.260213 +0.39 0.25 0.251082 0.260481 +0.3901 0.25 0.251265 0.260748 +0.3902 0.25 0.251448 0.261016 +0.3903 0.25 0.251632 0.261283 +0.3904 0.25 0.251815 0.261549 +0.3905 0.25 0.252 0.261816 +0.3906 0.25 0.252184 0.262082 +0.3907 0.25 0.252369 0.262348 +0.3908 0.25 0.252554 0.262614 +0.3909 0.25 0.252739 0.262879 +0.391 0.25 0.252925 0.263144 +0.3911 0.25 0.25311 0.263408 +0.3912 0.25 0.253297 0.263672 +0.3913 0.25 0.253483 0.263936 +0.3914 0.25 0.25367 0.264199 +0.3915 0.25 0.253857 0.264462 +0.3916 0.25 0.254044 0.264724 +0.3917 0.25 0.254232 0.264986 +0.3918 0.25 0.25442 0.265247 +0.3919 0.25 0.254608 0.265508 +0.392 0.25 0.254797 0.265768 +0.3921 0.25 0.254986 0.266027 +0.3922 0.25 0.255175 0.266286 +0.3923 0.25 0.255365 0.266545 +0.3924 0.25 0.255554 0.266802 +0.3925 0.25 0.255744 0.267059 +0.3926 0.25 0.255935 0.267316 +0.3927 0.25 0.256126 0.267571 +0.3928 0.25 0.256317 0.267826 +0.3929 0.25 0.256508 0.26808 +0.393 0.25 0.256699 0.268334 +0.3931 0.25 0.256891 0.268586 +0.3932 0.25 0.257083 0.268838 +0.3933 0.25 0.257276 0.269089 +0.3934 0.25 0.257469 0.26934 +0.3935 0.25 0.257662 0.269589 +0.3936 0.25 0.257855 0.269838 +0.3937 0.25 0.258049 0.270085 +0.3938 0.25 0.258242 0.270332 +0.3939 0.25 0.258437 0.270578 +0.394 0.25 0.258631 0.270823 +0.3941 0.25 0.258826 0.271067 +0.3942 0.25 0.259021 0.27131 +0.3943 0.25 0.259216 0.271552 +0.3944 0.25 0.259412 0.271793 +0.3945 0.25 0.259608 0.272033 +0.3946 0.25 0.259804 0.272272 +0.3947 0.25 0.260001 0.27251 +0.3948 0.25 0.260198 0.272746 +0.3949 0.25 0.260395 0.272982 +0.395 0.25 0.260592 0.273217 +0.3951 0.25 0.26079 0.27345 +0.3952 0.25 0.260988 0.273682 +0.3953 0.25 0.261187 0.273913 +0.3954 0.25 0.261385 0.274143 +0.3955 0.25 0.261584 0.274372 +0.3956 0.25 0.261783 0.274599 +0.3957 0.25 0.261983 0.274826 +0.3958 0.25 0.262183 0.275051 +0.3959 0.25 0.262383 0.275274 +0.396 0.25 0.262583 0.275497 +0.3961 0.25 0.262784 0.275718 +0.3962 0.25 0.262985 0.275937 +0.3963 0.25 0.263186 0.276156 +0.3964 0.25 0.263387 0.276373 +0.3965 0.25 0.263589 0.276588 +0.3966 0.25 0.263791 0.276802 +0.3967 0.25 0.263994 0.277015 +0.3968 0.25 0.264196 0.277226 +0.3969 0.25 0.264399 0.277436 +0.397 0.25 0.264602 0.277645 +0.3971 0.25 0.264806 0.277851 +0.3972 0.25 0.26501 0.278057 +0.3973 0.25 0.265214 0.278261 +0.3974 0.25 0.265418 0.278463 +0.3975 0.25 0.265623 0.278664 +0.3976 0.25 0.265828 0.278863 +0.3977 0.25 0.266033 0.27906 +0.3978 0.25 0.266239 0.279256 +0.3979 0.25 0.266445 0.279451 +0.398 0.25 0.266651 0.279643 +0.3981 0.25 0.266857 0.279834 +0.3982 0.25 0.267064 0.280024 +0.3983 0.25 0.267271 0.280211 +0.3984 0.25 0.267478 0.280397 +0.3985 0.25 0.267686 0.280582 +0.3986 0.25 0.267893 0.280764 +0.3987 0.25 0.268102 0.280945 +0.3988 0.25 0.26831 0.281124 +0.3989 0.25 0.268519 0.281301 +0.399 0.25 0.268728 0.281476 +0.3991 0.25 0.268937 0.28165 +0.3992 0.25 0.269146 0.281821 +0.3993 0.25 0.269356 0.281991 +0.3994 0.25 0.269566 0.282159 +0.3995 0.25 0.269777 0.282325 +0.3996 0.25 0.269987 0.282489 +0.3997 0.25 0.270198 0.282651 +0.3998 0.25 0.27041 0.282812 +0.3999 0.25 0.270621 0.28297 +0.4 0.25 0.270833 0.283127 +0.4001 0.25 0.271045 0.283281 +0.4002 0.25 0.271257 0.283433 +0.4003 0.25 0.27147 0.283584 +0.4004 0.25 0.271683 0.283732 +0.4005 0.25 0.271896 0.283879 +0.4006 0.25 0.27211 0.284023 +0.4007 0.25 0.272323 0.284165 +0.4008 0.25 0.272537 0.284306 +0.4009 0.25 0.272752 0.284444 +0.401 0.25 0.272966 0.28458 +0.4011 0.25 0.273181 0.284714 +0.4012 0.25 0.273396 0.284845 +0.4013 0.25 0.273612 0.284975 +0.4014 0.25 0.273827 0.285103 +0.4015 0.25 0.274043 0.285228 +0.4016 0.25 0.27426 0.285351 +0.4017 0.25 0.274476 0.285472 +0.4018 0.25 0.274693 0.285591 +0.4019 0.25 0.27491 0.285707 +0.402 0.25 0.275128 0.285821 +0.4021 0.25 0.275345 0.285933 +0.4022 0.25 0.275563 0.286043 +0.4023 0.25 0.275781 0.286151 +0.4024 0.25 0.276 0.286256 +0.4025 0.25 0.276219 0.286359 +0.4026 0.25 0.276438 0.286459 +0.4027 0.25 0.276657 0.286558 +0.4028 0.25 0.276877 0.286654 +0.4029 0.25 0.277096 0.286747 +0.403 0.25 0.277317 0.286838 +0.4031 0.25 0.277537 0.286927 +0.4032 0.25 0.277758 0.287014 +0.4033 0.25 0.277979 0.287098 +0.4034 0.25 0.2782 0.287179 +0.4035 0.25 0.278421 0.287259 +0.4036 0.25 0.278643 0.287336 +0.4037 0.25 0.278865 0.28741 +0.4038 0.25 0.279087 0.287482 +0.4039 0.25 0.27931 0.287552 +0.404 0.25 0.279533 0.287619 +0.4041 0.25 0.279756 0.287683 +0.4042 0.25 0.279979 0.287745 +0.4043 0.25 0.280203 0.287805 +0.4044 0.25 0.280427 0.287862 +0.4045 0.25 0.280651 0.287917 +0.4046 0.25 0.280876 0.287969 +0.4047 0.25 0.281101 0.288018 +0.4048 0.25 0.281326 0.288065 +0.4049 0.25 0.281551 0.28811 +0.405 0.25 0.281777 0.288152 +0.4051 0.25 0.282002 0.288191 +0.4052 0.25 0.282228 0.288228 +0.4053 0.25 0.282455 0.288262 +0.4054 0.25 0.282682 0.288294 +0.4055 0.25 0.282908 0.288322 +0.4056 0.25 0.283136 0.288349 +0.4057 0.25 0.283363 0.288373 +0.4058 0.25 0.283591 0.288394 +0.4059 0.25 0.283819 0.288412 +0.406 0.25 0.284047 0.288428 +0.4061 0.25 0.284276 0.288441 +0.4062 0.25 0.284504 0.288452 +0.4063 0.25 0.284733 0.28846 +0.4064 0.25 0.284963 0.288465 +0.4065 0.25 0.285192 0.288468 +0.4066 0.25 0.285422 0.288467 +0.4067 0.25 0.285652 0.288465 +0.4068 0.25 0.285883 0.288459 +0.4069 0.25 0.286113 0.288451 +0.407 0.25 0.286344 0.28844 +0.4071 0.25 0.286575 0.288427 +0.4072 0.25 0.286807 0.28841 +0.4073 0.25 0.287039 0.288391 +0.4074 0.25 0.287271 0.288369 +0.4075 0.25 0.287503 0.288345 +0.4076 0.25 0.287735 0.288318 +0.4077 0.25 0.287968 0.288288 +0.4078 0.25 0.288201 0.288255 +0.4079 0.25 0.288434 0.28822 +0.408 0.25 0.288668 0.288181 +0.4081 0.25 0.288902 0.28814 +0.4082 0.25 0.289136 0.288097 +0.4083 0.25 0.28937 0.28805 +0.4084 0.25 0.289605 0.288001 +0.4085 0.25 0.28984 0.287949 +0.4086 0.25 0.290075 0.287894 +0.4087 0.25 0.29031 0.287837 +0.4088 0.25 0.290546 0.287776 +0.4089 0.25 0.290782 0.287713 +0.409 0.25 0.291018 0.287647 +0.4091 0.25 0.291254 0.287578 +0.4092 0.25 0.291491 0.287507 +0.4093 0.25 0.291728 0.287433 +0.4094 0.25 0.291965 0.287356 +0.4095 0.25 0.292202 0.287276 +0.4096 0.25 0.29244 0.287193 +0.4097 0.25 0.292678 0.287108 +0.4098 0.25 0.292916 0.287019 +0.4099 0.25 0.293155 0.286928 +0.41 0.25 0.293393 0.286834 +0.4101 0.25 0.293632 0.286738 +0.4102 0.25 0.293871 0.286638 +0.4103 0.25 0.294111 0.286536 +0.4104 0.25 0.294351 0.286431 +0.4105 0.25 0.294591 0.286323 +0.4106 0.25 0.294831 0.286212 +0.4107 0.25 0.295071 0.286099 +0.4108 0.25 0.295312 0.285983 +0.4109 0.25 0.295553 0.285863 +0.411 0.25 0.295794 0.285742 +0.4111 0.25 0.296036 0.285617 +0.4112 0.25 0.296278 0.285489 +0.4113 0.25 0.29652 0.285359 +0.4114 0.25 0.296762 0.285226 +0.4115 0.25 0.297005 0.28509 +0.4116 0.25 0.297247 0.284952 +0.4117 0.25 0.29749 0.28481 +0.4118 0.25 0.297734 0.284666 +0.4119 0.25 0.297977 0.284519 +0.412 0.25 0.298221 0.284369 +0.4121 0.25 0.298465 0.284217 +0.4122 0.25 0.298709 0.284061 +0.4123 0.25 0.298954 0.283903 +0.4124 0.25 0.299199 0.283742 +0.4125 0.25 0.299444 0.283579 +0.4126 0.25 0.299689 0.283412 +0.4127 0.25 0.299934 0.283243 +0.4128 0.25 0.30018 0.283071 +0.4129 0.25 0.300426 0.282897 +0.413 0.25 0.300672 0.282719 +0.4131 0.25 0.300919 0.282539 +0.4132 0.25 0.301166 0.282357 +0.4133 0.25 0.301413 0.282171 +0.4134 0.25 0.30166 0.281983 +0.4135 0.25 0.301907 0.281792 +0.4136 0.25 0.302155 0.281598 +0.4137 0.25 0.302403 0.281402 +0.4138 0.25 0.302651 0.281203 +0.4139 0.25 0.3029 0.281001 +0.414 0.25 0.303149 0.280796 +0.4141 0.25 0.303398 0.280589 +0.4142 0.25 0.303647 0.280379 +0.4143 0.25 0.303896 0.280167 +0.4144 0.25 0.304146 0.279952 +0.4145 0.25 0.304396 0.279734 +0.4146 0.25 0.304646 0.279513 +0.4147 0.25 0.304896 0.27929 +0.4148 0.25 0.305147 0.279065 +0.4149 0.25 0.305398 0.278836 +0.415 0.25 0.305649 0.278605 +0.4151 0.25 0.3059 0.278372 +0.4152 0.25 0.306152 0.278136 +0.4153 0.25 0.306404 0.277897 +0.4154 0.25 0.306656 0.277656 +0.4155 0.25 0.306908 0.277412 +0.4156 0.25 0.307161 0.277165 +0.4157 0.25 0.307414 0.276916 +0.4158 0.25 0.307667 0.276665 +0.4159 0.25 0.30792 0.276411 +0.416 0.25 0.308174 0.276154 +0.4161 0.25 0.308428 0.275895 +0.4162 0.25 0.308682 0.275633 +0.4163 0.25 0.308936 0.275369 +0.4164 0.25 0.30919 0.275103 +0.4165 0.25 0.309445 0.274834 +0.4166 0.25 0.3097 0.274562 +0.4167 0.25 0.309955 0.274288 +0.4168 0.25 0.310211 0.274012 +0.4169 0.25 0.310466 0.273733 +0.417 0.25 0.310722 0.273452 +0.4171 0.25 0.310978 0.273169 +0.4172 0.25 0.311235 0.272883 +0.4173 0.25 0.311491 0.272594 +0.4174 0.25 0.311748 0.272304 +0.4175 0.25 0.312005 0.272011 +0.4176 0.25 0.312263 0.271715 +0.4177 0.25 0.31252 0.271417 +0.4178 0.25 0.312778 0.271117 +0.4179 0.25 0.313036 0.270815 +0.418 0.25 0.313294 0.270511 +0.4181 0.25 0.313553 0.270204 +0.4182 0.25 0.313811 0.269895 +0.4183 0.25 0.31407 0.269583 +0.4184 0.25 0.314329 0.26927 +0.4185 0.25 0.314589 0.268954 +0.4186 0.25 0.314848 0.268636 +0.4187 0.25 0.315108 0.268316 +0.4188 0.25 0.315368 0.267993 +0.4189 0.25 0.315629 0.267669 +0.419 0.25 0.315889 0.267342 +0.4191 0.25 0.31615 0.267014 +0.4192 0.25 0.316411 0.266683 +0.4193 0.25 0.316672 0.26635 +0.4194 0.25 0.316933 0.266015 +0.4195 0.25 0.317195 0.265678 +0.4196 0.25 0.317457 0.265339 +0.4197 0.25 0.317719 0.264997 +0.4198 0.25 0.317982 0.264654 +0.4199 0.25 0.318244 0.264309 +0.42 0.25 0.318507 0.263962 +0.4201 0.25 0.31877 0.263613 +0.4202 0.25 0.319033 0.263262 +0.4203 0.25 0.319297 0.262909 +0.4204 0.25 0.31956 0.262554 +0.4205 0.25 0.319824 0.262197 +0.4206 0.25 0.320088 0.261839 +0.4207 0.25 0.320353 0.261478 +0.4208 0.25 0.320617 0.261116 +0.4209 0.25 0.320882 0.260752 +0.421 0.25 0.321147 0.260386 +0.4211 0.25 0.321412 0.260018 +0.4212 0.25 0.321678 0.259649 +0.4213 0.25 0.321944 0.259278 +0.4214 0.25 0.32221 0.258905 +0.4215 0.25 0.322476 0.25853 +0.4216 0.25 0.322742 0.258154 +0.4217 0.25 0.323009 0.257776 +0.4218 0.25 0.323275 0.257397 +0.4219 0.25 0.323542 0.257015 +0.422 0.25 0.32381 0.256633 +0.4221 0.25 0.324077 0.256248 +0.4222 0.25 0.324345 0.255862 +0.4223 0.25 0.324613 0.255475 +0.4224 0.25 0.324881 0.255086 +0.4225 0.25 0.325149 0.254695 +0.4226 0.25 0.325418 0.254303 +0.4227 0.25 0.325686 0.25391 +0.4228 0.25 0.325955 0.253515 +0.4229 0.25 0.326224 0.253118 +0.423 0.25 0.326494 0.252721 +0.4231 0.25 0.326763 0.252322 +0.4232 0.25 0.327033 0.251921 +0.4233 0.25 0.327303 0.251519 +0.4234 0.25 0.327574 0.251116 +0.4235 0.25 0.327844 0.250712 +0.4236 0.25 0.328115 0.250306 +0.4237 0.25 0.328386 0.2499 +0.4238 0.25 0.328657 0.249492 +0.4239 0.25 0.328928 0.249082 +0.424 0.25 0.3292 0.248672 +0.4241 0.25 0.329471 0.24826 +0.4242 0.25 0.329743 0.247848 +0.4243 0.25 0.330015 0.247434 +0.4244 0.25 0.330288 0.247019 +0.4245 0.25 0.33056 0.246603 +0.4246 0.25 0.330833 0.246186 +0.4247 0.25 0.331106 0.245768 +0.4248 0.25 0.331379 0.245349 +0.4249 0.25 0.331653 0.244929 +0.425 0.25 0.331926 0.244508 +0.4251 0.25 0.3322 0.244087 +0.4252 0.25 0.332474 0.243664 +0.4253 0.25 0.332748 0.24324 +0.4254 0.25 0.333023 0.242816 +0.4255 0.25 0.333298 0.242391 +0.4256 0.25 0.333572 0.241965 +0.4257 0.25 0.333848 0.241538 +0.4258 0.25 0.334123 0.241111 +0.4259 0.25 0.334398 0.240683 +0.426 0.25 0.334674 0.240254 +0.4261 0.25 0.33495 0.239824 +0.4262 0.25 0.335226 0.239394 +0.4263 0.25 0.335502 0.238964 +0.4264 0.25 0.335779 0.238532 +0.4265 0.25 0.336055 0.2381 +0.4266 0.25 0.336332 0.237668 +0.4267 0.25 0.336609 0.237235 +0.4268 0.25 0.336887 0.236802 +0.4269 0.25 0.337164 0.236368 +0.427 0.25 0.337442 0.235933 +0.4271 0.25 0.33772 0.235499 +0.4272 0.25 0.337998 0.235064 +0.4273 0.25 0.338276 0.234628 +0.4274 0.25 0.338555 0.234193 +0.4275 0.25 0.338833 0.233757 +0.4276 0.25 0.339112 0.23332 +0.4277 0.25 0.339391 0.232884 +0.4278 0.25 0.339671 0.232447 +0.4279 0.25 0.33995 0.23201 +0.428 0.25 0.34023 0.231573 +0.4281 0.25 0.34051 0.231136 +0.4282 0.25 0.34079 0.230699 +0.4283 0.25 0.34107 0.230261 +0.4284 0.25 0.341351 0.229824 +0.4285 0.25 0.341631 0.229387 +0.4286 0.25 0.341912 0.228949 +0.4287 0.25 0.342193 0.228512 +0.4288 0.25 0.342474 0.228074 +0.4289 0.25 0.342756 0.227637 +0.429 0.25 0.343038 0.2272 +0.4291 0.25 0.343319 0.226763 +0.4292 0.25 0.343601 0.226326 +0.4293 0.25 0.343884 0.22589 +0.4294 0.25 0.344166 0.225453 +0.4295 0.25 0.344449 0.225017 +0.4296 0.25 0.344731 0.224582 +0.4297 0.25 0.345014 0.224146 +0.4298 0.25 0.345298 0.223711 +0.4299 0.25 0.345581 0.223276 +0.43 0.25 0.345864 0.222842 +0.4301 0.25 0.346148 0.222408 +0.4302 0.25 0.346432 0.221975 +0.4303 0.25 0.346716 0.221542 +0.4304 0.25 0.347001 0.22111 +0.4305 0.25 0.347285 0.220678 +0.4306 0.25 0.34757 0.220247 +0.4307 0.25 0.347855 0.219816 +0.4308 0.25 0.34814 0.219386 +0.4309 0.25 0.348425 0.218957 +0.431 0.25 0.34871 0.218528 +0.4311 0.25 0.348996 0.2181 +0.4312 0.25 0.349282 0.217673 +0.4313 0.25 0.349568 0.217247 +0.4314 0.25 0.349854 0.216821 +0.4315 0.25 0.35014 0.216397 +0.4316 0.25 0.350427 0.215973 +0.4317 0.25 0.350714 0.21555 +0.4318 0.25 0.351 0.215128 +0.4319 0.25 0.351287 0.214707 +0.432 0.25 0.351575 0.214287 +0.4321 0.25 0.351862 0.213868 +0.4322 0.25 0.35215 0.21345 +0.4323 0.25 0.352438 0.213033 +0.4324 0.25 0.352726 0.212618 +0.4325 0.25 0.353014 0.212203 +0.4326 0.25 0.353302 0.21179 +0.4327 0.25 0.353591 0.211378 +0.4328 0.25 0.353879 0.210967 +0.4329 0.25 0.354168 0.210557 +0.433 0.25 0.354457 0.210149 +0.4331 0.25 0.354747 0.209742 +0.4332 0.25 0.355036 0.209336 +0.4333 0.25 0.355326 0.208932 +0.4334 0.25 0.355615 0.208529 +0.4335 0.25 0.355905 0.208128 +0.4336 0.25 0.356195 0.207728 +0.4337 0.25 0.356486 0.20733 +0.4338 0.25 0.356776 0.206933 +0.4339 0.25 0.357067 0.206538 +0.434 0.25 0.357358 0.206144 +0.4341 0.25 0.357649 0.205752 +0.4342 0.25 0.35794 0.205362 +0.4343 0.25 0.358231 0.204973 +0.4344 0.25 0.358523 0.204586 +0.4345 0.25 0.358814 0.204201 +0.4346 0.25 0.359106 0.203817 +0.4347 0.25 0.359398 0.203436 +0.4348 0.25 0.359691 0.203056 +0.4349 0.25 0.359983 0.202678 +0.435 0.25 0.360276 0.202302 +0.4351 0.25 0.360568 0.201928 +0.4352 0.25 0.360861 0.201556 +0.4353 0.25 0.361154 0.201186 +0.4354 0.25 0.361447 0.200818 +0.4355 0.25 0.361741 0.200452 +0.4356 0.25 0.362034 0.200088 +0.4357 0.25 0.362328 0.199727 +0.4358 0.25 0.362622 0.199367 +0.4359 0.25 0.362916 0.19901 +0.436 0.25 0.36321 0.198655 +0.4361 0.25 0.363505 0.198302 +0.4362 0.25 0.363799 0.197951 +0.4363 0.25 0.364094 0.197602 +0.4364 0.25 0.364389 0.197256 +0.4365 0.25 0.364684 0.196913 +0.4366 0.25 0.364979 0.196571 +0.4367 0.25 0.365275 0.196233 +0.4368 0.25 0.36557 0.195896 +0.4369 0.25 0.365866 0.195562 +0.437 0.25 0.366162 0.195231 +0.4371 0.25 0.366458 0.194902 +0.4372 0.25 0.366754 0.194576 +0.4373 0.25 0.36705 0.194252 +0.4374 0.25 0.367347 0.193931 +0.4375 0.25 0.367644 0.193612 +0.4376 0.25 0.36794 0.193297 +0.4377 0.25 0.368237 0.192984 +0.4378 0.25 0.368535 0.192673 +0.4379 0.25 0.368832 0.192366 +0.438 0.25 0.369129 0.192061 +0.4381 0.25 0.369427 0.191759 +0.4382 0.25 0.369725 0.19146 +0.4383 0.25 0.370023 0.191164 +0.4384 0.25 0.370321 0.190871 +0.4385 0.25 0.370619 0.190581 +0.4386 0.25 0.370918 0.190294 +0.4387 0.25 0.371216 0.190009 +0.4388 0.25 0.371515 0.189728 +0.4389 0.25 0.371814 0.18945 +0.439 0.25 0.372113 0.189175 +0.4391 0.25 0.372412 0.188903 +0.4392 0.25 0.372711 0.188635 +0.4393 0.25 0.373011 0.188369 +0.4394 0.25 0.373311 0.188107 +0.4395 0.25 0.37361 0.187848 +0.4396 0.25 0.37391 0.187592 +0.4397 0.25 0.37421 0.187339 +0.4398 0.25 0.374511 0.18709 +0.4399 0.25 0.374811 0.186844 +0.44 0.25 0.375112 0.186602 +0.4401 0.25 0.375412 0.186363 +0.4402 0.25 0.375713 0.186127 +0.4403 0.25 0.376014 0.185895 +0.4404 0.25 0.376315 0.185667 +0.4405 0.25 0.376617 0.185442 +0.4406 0.25 0.376918 0.18522 +0.4407 0.25 0.37722 0.185002 +0.4408 0.25 0.377522 0.184788 +0.4409 0.25 0.377823 0.184577 +0.441 0.25 0.378126 0.18437 +0.4411 0.25 0.378428 0.184167 +0.4412 0.25 0.37873 0.183967 +0.4413 0.25 0.379033 0.183771 +0.4414 0.25 0.379335 0.183579 +0.4415 0.25 0.379638 0.183391 +0.4416 0.25 0.379941 0.183206 +0.4417 0.25 0.380244 0.183026 +0.4418 0.25 0.380547 0.182849 +0.4419 0.25 0.380851 0.182676 +0.442 0.25 0.381154 0.182507 +0.4421 0.25 0.381458 0.182342 +0.4422 0.25 0.381761 0.182181 +0.4423 0.25 0.382065 0.182024 +0.4424 0.25 0.382369 0.181871 +0.4425 0.25 0.382674 0.181722 +0.4426 0.25 0.382978 0.181578 +0.4427 0.25 0.383282 0.181437 +0.4428 0.25 0.383587 0.1813 +0.4429 0.25 0.383892 0.181168 +0.443 0.25 0.384197 0.18104 +0.4431 0.25 0.384502 0.180916 +0.4432 0.25 0.384807 0.180796 +0.4433 0.25 0.385112 0.18068 +0.4434 0.25 0.385418 0.180569 +0.4435 0.25 0.385723 0.180462 +0.4436 0.25 0.386029 0.18036 +0.4437 0.25 0.386335 0.180261 +0.4438 0.25 0.386641 0.180168 +0.4439 0.25 0.386947 0.180078 +0.444 0.25 0.387253 0.179993 +0.4441 0.25 0.38756 0.179913 +0.4442 0.25 0.387866 0.179837 +0.4443 0.25 0.388173 0.179765 +0.4444 0.25 0.38848 0.179698 +0.4445 0.25 0.388786 0.179635 +0.4446 0.25 0.389094 0.179577 +0.4447 0.25 0.389401 0.179524 +0.4448 0.25 0.389708 0.179475 +0.4449 0.25 0.390015 0.179431 +0.445 0.25 0.390323 0.179392 +0.4451 0.25 0.390631 0.179357 +0.4452 0.25 0.390939 0.179327 +0.4453 0.25 0.391247 0.179302 +0.4454 0.25 0.391555 0.179281 +0.4455 0.25 0.391863 0.179265 +0.4456 0.25 0.392171 0.179254 +0.4457 0.25 0.39248 0.179248 +0.4458 0.25 0.392788 0.179247 +0.4459 0.25 0.393097 0.17925 +0.446 0.25 0.393406 0.179259 +0.4461 0.25 0.393715 0.179272 +0.4462 0.25 0.394024 0.17929 +0.4463 0.25 0.394333 0.179313 +0.4464 0.25 0.394642 0.179341 +0.4465 0.25 0.394952 0.179374 +0.4466 0.25 0.395262 0.179413 +0.4467 0.25 0.395571 0.179456 +0.4468 0.25 0.395881 0.179504 +0.4469 0.25 0.396191 0.179557 +0.447 0.25 0.396501 0.179615 +0.4471 0.25 0.396811 0.179678 +0.4472 0.25 0.397122 0.179747 +0.4473 0.25 0.397432 0.17982 +0.4474 0.25 0.397743 0.179899 +0.4475 0.25 0.398053 0.179983 +0.4476 0.25 0.398364 0.180072 +0.4477 0.25 0.398675 0.180166 +0.4478 0.25 0.398986 0.180266 +0.4479 0.25 0.399297 0.180371 +0.448 0.25 0.399609 0.180481 +0.4481 0.25 0.39992 0.180596 +0.4482 0.25 0.400231 0.180717 +0.4483 0.25 0.400543 0.180843 +0.4484 0.25 0.400855 0.180974 +0.4485 0.25 0.401167 0.18111 +0.4486 0.25 0.401479 0.181252 +0.4487 0.25 0.401791 0.181399 +0.4488 0.25 0.402103 0.181552 +0.4489 0.25 0.402415 0.18171 +0.449 0.25 0.402728 0.181874 +0.4491 0.25 0.40304 0.182043 +0.4492 0.25 0.403353 0.182217 +0.4493 0.25 0.403666 0.182397 +0.4494 0.25 0.403979 0.182582 +0.4495 0.25 0.404292 0.182773 +0.4496 0.25 0.404605 0.182969 +0.4497 0.25 0.404918 0.183171 +0.4498 0.25 0.405231 0.183379 +0.4499 0.25 0.405545 0.183592 +0.45 0.25 0.405858 0.18381 +0.4501 0.25 0.406172 0.184034 +0.4502 0.25 0.406485 0.184264 +0.4503 0.25 0.406799 0.184499 +0.4504 0.25 0.407113 0.18474 +0.4505 0.25 0.407427 0.184987 +0.4506 0.25 0.407742 0.185239 +0.4507 0.25 0.408056 0.185497 +0.4508 0.25 0.40837 0.185761 +0.4509 0.25 0.408685 0.18603 +0.451 0.25 0.408999 0.186305 +0.4511 0.25 0.409314 0.186585 +0.4512 0.25 0.409629 0.186872 +0.4513 0.25 0.409944 0.187164 +0.4514 0.25 0.410259 0.187461 +0.4515 0.25 0.410574 0.187765 +0.4516 0.25 0.410889 0.188074 +0.4517 0.25 0.411204 0.188389 +0.4518 0.25 0.41152 0.18871 +0.4519 0.25 0.411835 0.189037 +0.452 0.25 0.412151 0.189369 +0.4521 0.25 0.412467 0.189707 +0.4522 0.25 0.412782 0.190051 +0.4523 0.25 0.413098 0.190401 +0.4524 0.25 0.413414 0.190757 +0.4525 0.25 0.41373 0.191119 +0.4526 0.25 0.414047 0.191486 +0.4527 0.25 0.414363 0.191859 +0.4528 0.25 0.414679 0.192238 +0.4529 0.25 0.414996 0.192623 +0.453 0.25 0.415312 0.193014 +0.4531 0.25 0.415629 0.193411 +0.4532 0.25 0.415946 0.193813 +0.4533 0.25 0.416263 0.194222 +0.4534 0.25 0.41658 0.194636 +0.4535 0.25 0.416897 0.195057 +0.4536 0.25 0.417214 0.195483 +0.4537 0.25 0.417531 0.195915 +0.4538 0.25 0.417849 0.196353 +0.4539 0.25 0.418166 0.196797 +0.454 0.25 0.418484 0.197247 +0.4541 0.25 0.418801 0.197703 +0.4542 0.25 0.419119 0.198165 +0.4543 0.25 0.419437 0.198633 +0.4544 0.25 0.419755 0.199107 +0.4545 0.25 0.420073 0.199587 +0.4546 0.25 0.420391 0.200072 +0.4547 0.25 0.420709 0.200564 +0.4548 0.25 0.421027 0.201062 +0.4549 0.25 0.421345 0.201565 +0.455 0.25 0.421664 0.202075 +0.4551 0.25 0.421982 0.20259 +0.4552 0.25 0.422301 0.203112 +0.4553 0.25 0.42262 0.20364 +0.4554 0.25 0.422938 0.204173 +0.4555 0.25 0.423257 0.204713 +0.4556 0.25 0.423576 0.205258 +0.4557 0.25 0.423895 0.20581 +0.4558 0.25 0.424214 0.206367 +0.4559 0.25 0.424534 0.206931 +0.456 0.25 0.424853 0.2075 +0.4561 0.25 0.425172 0.208076 +0.4562 0.25 0.425492 0.208657 +0.4563 0.25 0.425811 0.209245 +0.4564 0.25 0.426131 0.209838 +0.4565 0.25 0.42645 0.210438 +0.4566 0.25 0.42677 0.211043 +0.4567 0.25 0.42709 0.211654 +0.4568 0.25 0.42741 0.212272 +0.4569 0.25 0.42773 0.212895 +0.457 0.25 0.42805 0.213525 +0.4571 0.25 0.42837 0.21416 +0.4572 0.25 0.42869 0.214801 +0.4573 0.25 0.429011 0.215449 +0.4574 0.25 0.429331 0.216102 +0.4575 0.25 0.429651 0.216761 +0.4576 0.25 0.429972 0.217427 +0.4577 0.25 0.430293 0.218098 +0.4578 0.25 0.430613 0.218775 +0.4579 0.25 0.430934 0.219458 +0.458 0.25 0.431255 0.220147 +0.4581 0.25 0.431576 0.220842 +0.4582 0.25 0.431897 0.221543 +0.4583 0.25 0.432218 0.22225 +0.4584 0.25 0.432539 0.222963 +0.4585 0.25 0.43286 0.223682 +0.4586 0.25 0.433181 0.224407 +0.4587 0.25 0.433503 0.225137 +0.4588 0.25 0.433824 0.225874 +0.4589 0.25 0.434146 0.226616 +0.459 0.25 0.434467 0.227365 +0.4591 0.25 0.434789 0.228119 +0.4592 0.25 0.43511 0.228879 +0.4593 0.25 0.435432 0.229645 +0.4594 0.25 0.435754 0.230417 +0.4595 0.25 0.436076 0.231195 +0.4596 0.25 0.436398 0.231978 +0.4597 0.25 0.43672 0.232768 +0.4598 0.25 0.437042 0.233563 +0.4599 0.25 0.437364 0.234364 +0.46 0.25 0.437686 0.235171 +0.4601 0.25 0.438009 0.235984 +0.4602 0.25 0.438331 0.236802 +0.4603 0.25 0.438653 0.237627 +0.4604 0.25 0.438976 0.238457 +0.4605 0.25 0.439298 0.239293 +0.4606 0.25 0.439621 0.240134 +0.4607 0.25 0.439944 0.240982 +0.4608 0.25 0.440266 0.241835 +0.4609 0.25 0.440589 0.242694 +0.461 0.25 0.440912 0.243558 +0.4611 0.25 0.441235 0.244429 +0.4612 0.25 0.441558 0.245305 +0.4613 0.25 0.441881 0.246186 +0.4614 0.25 0.442204 0.247074 +0.4615 0.25 0.442527 0.247967 +0.4616 0.25 0.44285 0.248865 +0.4617 0.25 0.443174 0.24977 +0.4618 0.25 0.443497 0.25068 +0.4619 0.25 0.44382 0.251595 +0.462 0.25 0.444144 0.252516 +0.4621 0.25 0.444467 0.253443 +0.4622 0.25 0.444791 0.254375 +0.4623 0.25 0.445114 0.255313 +0.4624 0.25 0.445438 0.256256 +0.4625 0.25 0.445762 0.257205 +0.4626 0.25 0.446086 0.25816 +0.4627 0.25 0.446409 0.25912 +0.4628 0.25 0.446733 0.260085 +0.4629 0.25 0.447057 0.261056 +0.463 0.25 0.447381 0.262032 +0.4631 0.25 0.447705 0.263014 +0.4632 0.25 0.448029 0.264001 +0.4633 0.25 0.448353 0.264994 +0.4634 0.25 0.448678 0.265992 +0.4635 0.25 0.449002 0.266995 +0.4636 0.25 0.449326 0.268004 +0.4637 0.25 0.44965 0.269018 +0.4638 0.25 0.449975 0.270037 +0.4639 0.25 0.450299 0.271062 +0.464 0.25 0.450624 0.272091 +0.4641 0.25 0.450948 0.273127 +0.4642 0.25 0.451273 0.274167 +0.4643 0.25 0.451597 0.275213 +0.4644 0.25 0.451922 0.276263 +0.4645 0.25 0.452247 0.277319 +0.4646 0.25 0.452571 0.278381 +0.4647 0.25 0.452896 0.279447 +0.4648 0.25 0.453221 0.280518 +0.4649 0.25 0.453546 0.281595 +0.465 0.25 0.453871 0.282677 +0.4651 0.25 0.454196 0.283763 +0.4652 0.25 0.454521 0.284855 +0.4653 0.25 0.454846 0.285952 +0.4654 0.25 0.455171 0.287054 +0.4655 0.25 0.455496 0.288161 +0.4656 0.25 0.455821 0.289272 +0.4657 0.25 0.456146 0.290389 +0.4658 0.25 0.456472 0.291511 +0.4659 0.25 0.456797 0.292637 +0.466 0.25 0.457122 0.293769 +0.4661 0.25 0.457448 0.294905 +0.4662 0.25 0.457773 0.296046 +0.4663 0.25 0.458099 0.297192 +0.4664 0.25 0.458424 0.298343 +0.4665 0.25 0.45875 0.299498 +0.4666 0.25 0.459075 0.300658 +0.4667 0.25 0.459401 0.301823 +0.4668 0.25 0.459726 0.302993 +0.4669 0.25 0.460052 0.304167 +0.467 0.25 0.460378 0.305346 +0.4671 0.25 0.460703 0.30653 +0.4672 0.25 0.461029 0.307718 +0.4673 0.25 0.461355 0.308911 +0.4674 0.25 0.461681 0.310108 +0.4675 0.25 0.462007 0.31131 +0.4676 0.25 0.462332 0.312516 +0.4677 0.25 0.462658 0.313727 +0.4678 0.25 0.462984 0.314942 +0.4679 0.25 0.46331 0.316162 +0.468 0.25 0.463636 0.317386 +0.4681 0.25 0.463962 0.318614 +0.4682 0.25 0.464288 0.319847 +0.4683 0.25 0.464615 0.321084 +0.4684 0.25 0.464941 0.322326 +0.4685 0.25 0.465267 0.323572 +0.4686 0.25 0.465593 0.324821 +0.4687 0.25 0.465919 0.326076 +0.4688 0.25 0.466245 0.327334 +0.4689 0.25 0.466572 0.328596 +0.469 0.25 0.466898 0.329863 +0.4691 0.25 0.467224 0.331134 +0.4692 0.25 0.467551 0.332408 +0.4693 0.25 0.467877 0.333687 +0.4694 0.25 0.468203 0.33497 +0.4695 0.25 0.46853 0.336257 +0.4696 0.25 0.468856 0.337548 +0.4697 0.25 0.469183 0.338842 +0.4698 0.25 0.469509 0.340141 +0.4699 0.25 0.469836 0.341444 +0.47 0.25 0.470162 0.34275 +0.4701 0.25 0.470489 0.34406 +0.4702 0.25 0.470815 0.345374 +0.4703 0.25 0.471142 0.346692 +0.4704 0.25 0.471468 0.348013 +0.4705 0.25 0.471795 0.349338 +0.4706 0.25 0.472122 0.350667 +0.4707 0.25 0.472448 0.352 +0.4708 0.25 0.472775 0.353336 +0.4709 0.25 0.473102 0.354675 +0.471 0.25 0.473428 0.356018 +0.4711 0.25 0.473755 0.357365 +0.4712 0.25 0.474082 0.358715 +0.4713 0.25 0.474408 0.360069 +0.4714 0.25 0.474735 0.361426 +0.4715 0.25 0.475062 0.362786 +0.4716 0.25 0.475389 0.36415 +0.4717 0.25 0.475716 0.365517 +0.4718 0.25 0.476042 0.366888 +0.4719 0.25 0.476369 0.368261 +0.472 0.25 0.476696 0.369638 +0.4721 0.25 0.477023 0.371018 +0.4722 0.25 0.47735 0.372402 +0.4723 0.25 0.477677 0.373788 +0.4724 0.25 0.478003 0.375177 +0.4725 0.25 0.47833 0.37657 +0.4726 0.25 0.478657 0.377966 +0.4727 0.25 0.478984 0.379364 +0.4728 0.25 0.479311 0.380766 +0.4729 0.25 0.479638 0.38217 +0.473 0.25 0.479965 0.383577 +0.4731 0.25 0.480292 0.384988 +0.4732 0.25 0.480619 0.386401 +0.4733 0.25 0.480946 0.387817 +0.4734 0.25 0.481273 0.389235 +0.4735 0.25 0.4816 0.390657 +0.4736 0.25 0.481927 0.392081 +0.4737 0.25 0.482254 0.393507 +0.4738 0.25 0.482581 0.394937 +0.4739 0.25 0.482908 0.396369 +0.474 0.25 0.483235 0.397803 +0.4741 0.25 0.483562 0.39924 +0.4742 0.25 0.483889 0.40068 +0.4743 0.25 0.484216 0.402122 +0.4744 0.25 0.484543 0.403566 +0.4745 0.25 0.48487 0.405013 +0.4746 0.25 0.485197 0.406462 +0.4747 0.25 0.485524 0.407914 +0.4748 0.25 0.485851 0.409367 +0.4749 0.25 0.486178 0.410823 +0.475 0.25 0.486505 0.412281 +0.4751 0.25 0.486832 0.413742 +0.4752 0.25 0.487159 0.415204 +0.4753 0.25 0.487486 0.416669 +0.4754 0.25 0.487813 0.418135 +0.4755 0.25 0.48814 0.419604 +0.4756 0.25 0.488466 0.421075 +0.4757 0.25 0.488793 0.422547 +0.4758 0.25 0.48912 0.424022 +0.4759 0.25 0.489447 0.425498 +0.476 0.25 0.489774 0.426977 +0.4761 0.25 0.490101 0.428457 +0.4762 0.25 0.490428 0.429939 +0.4763 0.25 0.490755 0.431422 +0.4764 0.25 0.491082 0.432908 +0.4765 0.25 0.491409 0.434394 +0.4766 0.25 0.491736 0.435883 +0.4767 0.25 0.492063 0.437373 +0.4768 0.25 0.49239 0.438865 +0.4769 0.25 0.492717 0.440358 +0.477 0.25 0.493044 0.441853 +0.4771 0.25 0.49337 0.443349 +0.4772 0.25 0.493697 0.444847 +0.4773 0.25 0.494024 0.446346 +0.4774 0.25 0.494351 0.447846 +0.4775 0.25 0.494678 0.449347 +0.4776 0.25 0.495005 0.45085 +0.4777 0.25 0.495331 0.452354 +0.4778 0.25 0.495658 0.453859 +0.4779 0.25 0.495985 0.455366 +0.478 0.25 0.496312 0.456873 +0.4781 0.25 0.496638 0.458382 +0.4782 0.25 0.496965 0.459891 +0.4783 0.25 0.497292 0.461402 +0.4784 0.25 0.497619 0.462913 +0.4785 0.25 0.497945 0.464426 +0.4786 0.25 0.498272 0.465939 +0.4787 0.25 0.498599 0.467453 +0.4788 0.25 0.498925 0.468968 +0.4789 0.25 0.499252 0.470484 +0.479 0.25 0.499578 0.472 +0.4791 0.25 0.499905 0.473517 +0.4792 0.25 0.500231 0.475035 +0.4793 0.25 0.500558 0.476553 +0.4794 0.25 0.500885 0.478072 +0.4795 0.25 0.501211 0.479592 +0.4796 0.25 0.501537 0.481112 +0.4797 0.25 0.501864 0.482632 +0.4798 0.25 0.50219 0.484153 +0.4799 0.25 0.502517 0.485674 +0.48 0.25 0.502843 0.487196 +0.4801 0.25 0.503169 0.488718 +0.4802 0.25 0.503496 0.49024 +0.4803 0.25 0.503822 0.491762 +0.4804 0.25 0.504148 0.493285 +0.4805 0.25 0.504475 0.494807 +0.4806 0.25 0.504801 0.49633 +0.4807 0.25 0.505127 0.497853 +0.4808 0.25 0.505453 0.499376 +0.4809 0.25 0.505779 0.500899 +0.481 0.25 0.506105 0.502422 +0.4811 0.25 0.506432 0.503945 +0.4812 0.25 0.506758 0.505468 +0.4813 0.25 0.507084 0.50699 +0.4814 0.25 0.50741 0.508512 +0.4815 0.25 0.507736 0.510035 +0.4816 0.25 0.508062 0.511556 +0.4817 0.25 0.508388 0.513078 +0.4818 0.25 0.508713 0.514599 +0.4819 0.25 0.509039 0.51612 +0.482 0.25 0.509365 0.51764 +0.4821 0.25 0.509691 0.51916 +0.4822 0.25 0.510017 0.52068 +0.4823 0.25 0.510342 0.522199 +0.4824 0.25 0.510668 0.523717 +0.4825 0.25 0.510994 0.525235 +0.4826 0.25 0.511319 0.526752 +0.4827 0.25 0.511645 0.528268 +0.4828 0.25 0.51197 0.529784 +0.4829 0.25 0.512296 0.531299 +0.483 0.25 0.512621 0.532813 +0.4831 0.25 0.512947 0.534326 +0.4832 0.25 0.513272 0.535839 +0.4833 0.25 0.513598 0.53735 +0.4834 0.25 0.513923 0.53886 +0.4835 0.25 0.514248 0.54037 +0.4836 0.25 0.514574 0.541878 +0.4837 0.25 0.514899 0.543386 +0.4838 0.25 0.515224 0.544892 +0.4839 0.25 0.515549 0.546397 +0.484 0.25 0.515874 0.547901 +0.4841 0.25 0.516199 0.549404 +0.4842 0.25 0.516524 0.550906 +0.4843 0.25 0.516849 0.552406 +0.4844 0.25 0.517174 0.553905 +0.4845 0.25 0.517499 0.555402 +0.4846 0.25 0.517824 0.556898 +0.4847 0.25 0.518149 0.558393 +0.4848 0.25 0.518473 0.559886 +0.4849 0.25 0.518798 0.561378 +0.485 0.25 0.519123 0.562868 +0.4851 0.25 0.519447 0.564357 +0.4852 0.25 0.519772 0.565844 +0.4853 0.25 0.520097 0.567329 +0.4854 0.25 0.520421 0.568812 +0.4855 0.25 0.520745 0.570294 +0.4856 0.25 0.52107 0.571774 +0.4857 0.25 0.521394 0.573252 +0.4858 0.25 0.521718 0.574729 +0.4859 0.25 0.522043 0.576203 +0.486 0.25 0.522367 0.577676 +0.4861 0.25 0.522691 0.579147 +0.4862 0.25 0.523015 0.580615 +0.4863 0.25 0.523339 0.582082 +0.4864 0.25 0.523663 0.583546 +0.4865 0.25 0.523987 0.585009 +0.4866 0.25 0.524311 0.586469 +0.4867 0.25 0.524635 0.587927 +0.4868 0.25 0.524959 0.589383 +0.4869 0.25 0.525282 0.590837 +0.487 0.25 0.525606 0.592289 +0.4871 0.25 0.52593 0.593738 +0.4872 0.25 0.526253 0.595184 +0.4873 0.25 0.526577 0.596629 +0.4874 0.25 0.5269 0.598071 +0.4875 0.25 0.527224 0.59951 +0.4876 0.25 0.527547 0.600947 +0.4877 0.25 0.52787 0.602382 +0.4878 0.25 0.528194 0.603814 +0.4879 0.25 0.528517 0.605243 +0.488 0.25 0.52884 0.60667 +0.4881 0.25 0.529163 0.608094 +0.4882 0.25 0.529486 0.609516 +0.4883 0.25 0.529809 0.610934 +0.4884 0.25 0.530132 0.61235 +0.4885 0.25 0.530455 0.613763 +0.4886 0.25 0.530777 0.615174 +0.4887 0.25 0.5311 0.616581 +0.4888 0.25 0.531423 0.617986 +0.4889 0.25 0.531745 0.619387 +0.489 0.25 0.532068 0.620786 +0.4891 0.25 0.53239 0.622182 +0.4892 0.25 0.532713 0.623575 +0.4893 0.25 0.533035 0.624964 +0.4894 0.25 0.533357 0.626351 +0.4895 0.25 0.533679 0.627734 +0.4896 0.25 0.534002 0.629114 +0.4897 0.25 0.534324 0.630491 +0.4898 0.25 0.534646 0.631865 +0.4899 0.25 0.534968 0.633236 +0.49 0.25 0.53529 0.634603 +0.4901 0.25 0.535611 0.635967 +0.4902 0.25 0.535933 0.637328 +0.4903 0.25 0.536255 0.638685 +0.4904 0.25 0.536576 0.640039 +0.4905 0.25 0.536898 0.641389 +0.4906 0.25 0.537219 0.642736 +0.4907 0.25 0.537541 0.64408 +0.4908 0.25 0.537862 0.64542 +0.4909 0.25 0.538183 0.646756 +0.491 0.25 0.538505 0.648089 +0.4911 0.25 0.538826 0.649418 +0.4912 0.25 0.539147 0.650743 +0.4913 0.25 0.539468 0.652065 +0.4914 0.25 0.539789 0.653383 +0.4915 0.25 0.54011 0.654697 +0.4916 0.25 0.54043 0.656008 +0.4917 0.25 0.540751 0.657315 +0.4918 0.25 0.541072 0.658618 +0.4919 0.25 0.541392 0.659917 +0.492 0.25 0.541713 0.661212 +0.4921 0.25 0.542033 0.662503 +0.4922 0.25 0.542353 0.66379 +0.4923 0.25 0.542674 0.665074 +0.4924 0.25 0.542994 0.666353 +0.4925 0.25 0.543314 0.667628 +0.4926 0.25 0.543634 0.6689 +0.4927 0.25 0.543954 0.670167 +0.4928 0.25 0.544274 0.67143 +0.4929 0.25 0.544594 0.672689 +0.493 0.25 0.544913 0.673943 +0.4931 0.25 0.545233 0.675194 +0.4932 0.25 0.545552 0.67644 +0.4933 0.25 0.545872 0.677682 +0.4934 0.25 0.546191 0.67892 +0.4935 0.25 0.546511 0.680154 +0.4936 0.25 0.54683 0.681383 +0.4937 0.25 0.547149 0.682608 +0.4938 0.25 0.547468 0.683828 +0.4939 0.25 0.547787 0.685044 +0.494 0.25 0.548106 0.686256 +0.4941 0.25 0.548425 0.687463 +0.4942 0.25 0.548743 0.688665 +0.4943 0.25 0.549062 0.689864 +0.4944 0.25 0.549381 0.691057 +0.4945 0.25 0.549699 0.692246 +0.4946 0.25 0.550018 0.693431 +0.4947 0.25 0.550336 0.694611 +0.4948 0.25 0.550654 0.695786 +0.4949 0.25 0.550972 0.696957 +0.495 0.25 0.55129 0.698123 +0.4951 0.25 0.551608 0.699284 +0.4952 0.25 0.551926 0.70044 +0.4953 0.25 0.552244 0.701592 +0.4954 0.25 0.552562 0.702739 +0.4955 0.25 0.552879 0.703881 +0.4956 0.25 0.553197 0.705019 +0.4957 0.25 0.553514 0.706151 +0.4958 0.25 0.553832 0.707279 +0.4959 0.25 0.554149 0.708402 +0.496 0.25 0.554466 0.70952 +0.4961 0.25 0.554783 0.710633 +0.4962 0.25 0.5551 0.711741 +0.4963 0.25 0.555417 0.712844 +0.4964 0.25 0.555734 0.713942 +0.4965 0.25 0.55605 0.715035 +0.4966 0.25 0.556367 0.716124 +0.4967 0.25 0.556683 0.717207 +0.4968 0.25 0.557 0.718285 +0.4969 0.25 0.557316 0.719358 +0.497 0.25 0.557632 0.720425 +0.4971 0.25 0.557949 0.721488 +0.4972 0.25 0.558265 0.722546 +0.4973 0.25 0.558581 0.723598 +0.4974 0.25 0.558896 0.724645 +0.4975 0.25 0.559212 0.725687 +0.4976 0.25 0.559528 0.726724 +0.4977 0.25 0.559843 0.727756 +0.4978 0.25 0.560159 0.728782 +0.4979 0.25 0.560474 0.729803 +0.498 0.25 0.560789 0.730819 +0.4981 0.25 0.561105 0.731829 +0.4982 0.25 0.56142 0.732835 +0.4983 0.25 0.561735 0.733834 +0.4984 0.25 0.562049 0.734829 +0.4985 0.25 0.562364 0.735818 +0.4986 0.25 0.562679 0.736802 +0.4987 0.25 0.562993 0.73778 +0.4988 0.25 0.563308 0.738753 +0.4989 0.25 0.563622 0.739721 +0.499 0.25 0.563936 0.740683 +0.4991 0.25 0.564251 0.741639 +0.4992 0.25 0.564565 0.74259 +0.4993 0.25 0.564879 0.743536 +0.4994 0.25 0.565192 0.744476 +0.4995 0.25 0.565506 0.74541 +0.4996 0.25 0.56582 0.746339 +0.4997 0.25 0.566133 0.747263 +0.4998 0.25 0.566447 0.748181 +0.4999 0.25 0.56676 0.749093 +0.5 0.75 0.567073 0.75 +0.5001 0.75 0.567386 0.750901 +0.5002 0.75 0.567699 0.751797 +0.5003 0.75 0.568012 0.752687 +0.5004 0.75 0.568325 0.753571 +0.5005 0.75 0.568638 0.75445 +0.5006 0.75 0.56895 0.755323 +0.5007 0.75 0.569263 0.75619 +0.5008 0.75 0.569575 0.757051 +0.5009 0.75 0.569887 0.757907 +0.501 0.75 0.570199 0.758758 +0.5011 0.75 0.570511 0.759602 +0.5012 0.75 0.570823 0.760441 +0.5013 0.75 0.571135 0.761274 +0.5014 0.75 0.571446 0.762101 +0.5015 0.75 0.571758 0.762923 +0.5016 0.75 0.572069 0.763739 +0.5017 0.75 0.572381 0.764549 +0.5018 0.75 0.572692 0.765353 +0.5019 0.75 0.573003 0.766151 +0.502 0.75 0.573314 0.766944 +0.5021 0.75 0.573625 0.767731 +0.5022 0.75 0.573936 0.768512 +0.5023 0.75 0.574246 0.769287 +0.5024 0.75 0.574557 0.770056 +0.5025 0.75 0.574867 0.77082 +0.5026 0.75 0.575177 0.771578 +0.5027 0.75 0.575488 0.772329 +0.5028 0.75 0.575798 0.773075 +0.5029 0.75 0.576108 0.773816 +0.503 0.75 0.576417 0.77455 +0.5031 0.75 0.576727 0.775278 +0.5032 0.75 0.577037 0.776001 +0.5033 0.75 0.577346 0.776717 +0.5034 0.75 0.577655 0.777428 +0.5035 0.75 0.577965 0.778133 +0.5036 0.75 0.578274 0.778832 +0.5037 0.75 0.578583 0.779525 +0.5038 0.75 0.578891 0.780212 +0.5039 0.75 0.5792 0.780893 +0.504 0.75 0.579509 0.781568 +0.5041 0.75 0.579817 0.782237 +0.5042 0.75 0.580126 0.782901 +0.5043 0.75 0.580434 0.783558 +0.5044 0.75 0.580742 0.78421 +0.5045 0.75 0.58105 0.784855 +0.5046 0.75 0.581358 0.785495 +0.5047 0.75 0.581665 0.786129 +0.5048 0.75 0.581973 0.786756 +0.5049 0.75 0.582281 0.787378 +0.505 0.75 0.582588 0.787994 +0.5051 0.75 0.582895 0.788604 +0.5052 0.75 0.583202 0.789208 +0.5053 0.75 0.583509 0.789806 +0.5054 0.75 0.583816 0.790398 +0.5055 0.75 0.584123 0.790984 +0.5056 0.75 0.584429 0.791564 +0.5057 0.75 0.584736 0.792139 +0.5058 0.75 0.585042 0.792707 +0.5059 0.75 0.585348 0.793269 +0.506 0.75 0.585654 0.793826 +0.5061 0.75 0.58596 0.794376 +0.5062 0.75 0.586266 0.794921 +0.5063 0.75 0.586572 0.795459 +0.5064 0.75 0.586877 0.795992 +0.5065 0.75 0.587183 0.796518 +0.5066 0.75 0.587488 0.797039 +0.5067 0.75 0.587793 0.797554 +0.5068 0.75 0.588098 0.798063 +0.5069 0.75 0.588403 0.798566 +0.507 0.75 0.588708 0.799063 +0.5071 0.75 0.589012 0.799554 +0.5072 0.75 0.589317 0.800039 +0.5073 0.75 0.589621 0.800518 +0.5074 0.75 0.589925 0.800991 +0.5075 0.75 0.590229 0.801459 +0.5076 0.75 0.590533 0.80192 +0.5077 0.75 0.590837 0.802376 +0.5078 0.75 0.591141 0.802826 +0.5079 0.75 0.591444 0.80327 +0.508 0.75 0.591748 0.803707 +0.5081 0.75 0.592051 0.80414 +0.5082 0.75 0.592354 0.804566 +0.5083 0.75 0.592657 0.804986 +0.5084 0.75 0.59296 0.8054 +0.5085 0.75 0.593263 0.805809 +0.5086 0.75 0.593565 0.806212 +0.5087 0.75 0.593868 0.806609 +0.5088 0.75 0.59417 0.807 +0.5089 0.75 0.594472 0.807385 +0.509 0.75 0.594774 0.807764 +0.5091 0.75 0.595076 0.808138 +0.5092 0.75 0.595378 0.808506 +0.5093 0.75 0.595679 0.808868 +0.5094 0.75 0.595981 0.809224 +0.5095 0.75 0.596282 0.809574 +0.5096 0.75 0.596583 0.809919 +0.5097 0.75 0.596884 0.810258 +0.5098 0.75 0.597185 0.810591 +0.5099 0.75 0.597485 0.810919 +0.51 0.75 0.597786 0.81124 +0.5101 0.75 0.598086 0.811556 +0.5102 0.75 0.598387 0.811866 +0.5103 0.75 0.598687 0.812171 +0.5104 0.75 0.598987 0.81247 +0.5105 0.75 0.599287 0.812763 +0.5106 0.75 0.599586 0.81305 +0.5107 0.75 0.599886 0.813332 +0.5108 0.75 0.600185 0.813608 +0.5109 0.75 0.600484 0.813879 +0.511 0.75 0.600784 0.814144 +0.5111 0.75 0.601082 0.814403 +0.5112 0.75 0.601381 0.814657 +0.5113 0.75 0.60168 0.814905 +0.5114 0.75 0.601978 0.815147 +0.5115 0.75 0.602277 0.815384 +0.5116 0.75 0.602575 0.815616 +0.5117 0.75 0.602873 0.815841 +0.5118 0.75 0.603171 0.816062 +0.5119 0.75 0.603469 0.816277 +0.512 0.75 0.603766 0.816486 +0.5121 0.75 0.604064 0.81669 +0.5122 0.75 0.604361 0.816888 +0.5123 0.75 0.604658 0.817081 +0.5124 0.75 0.604955 0.817268 +0.5125 0.75 0.605252 0.81745 +0.5126 0.75 0.605548 0.817627 +0.5127 0.75 0.605845 0.817798 +0.5128 0.75 0.606141 0.817964 +0.5129 0.75 0.606437 0.818124 +0.513 0.75 0.606733 0.81828 +0.5131 0.75 0.607029 0.818429 +0.5132 0.75 0.607325 0.818574 +0.5133 0.75 0.607621 0.818713 +0.5134 0.75 0.607916 0.818847 +0.5135 0.75 0.608211 0.818975 +0.5136 0.75 0.608506 0.819099 +0.5137 0.75 0.608801 0.819217 +0.5138 0.75 0.609096 0.819329 +0.5139 0.75 0.609391 0.819437 +0.514 0.75 0.609685 0.81954 +0.5141 0.75 0.60998 0.819637 +0.5142 0.75 0.610274 0.819729 +0.5143 0.75 0.610568 0.819816 +0.5144 0.75 0.610862 0.819898 +0.5145 0.75 0.611155 0.819975 +0.5146 0.75 0.611449 0.820046 +0.5147 0.75 0.611742 0.820113 +0.5148 0.75 0.612035 0.820174 +0.5149 0.75 0.612328 0.820231 +0.515 0.75 0.612621 0.820283 +0.5151 0.75 0.612914 0.820329 +0.5152 0.75 0.613206 0.820371 +0.5153 0.75 0.613499 0.820407 +0.5154 0.75 0.613791 0.820439 +0.5155 0.75 0.614083 0.820466 +0.5156 0.75 0.614375 0.820488 +0.5157 0.75 0.614666 0.820505 +0.5158 0.75 0.614958 0.820517 +0.5159 0.75 0.615249 0.820524 +0.516 0.75 0.615541 0.820527 +0.5161 0.75 0.615832 0.820525 +0.5162 0.75 0.616122 0.820518 +0.5163 0.75 0.616413 0.820506 +0.5164 0.75 0.616704 0.82049 +0.5165 0.75 0.616994 0.820469 +0.5166 0.75 0.617284 0.820443 +0.5167 0.75 0.617574 0.820412 +0.5168 0.75 0.617864 0.820377 +0.5169 0.75 0.618154 0.820337 +0.517 0.75 0.618443 0.820293 +0.5171 0.75 0.618733 0.820244 +0.5172 0.75 0.619022 0.820191 +0.5173 0.75 0.619311 0.820133 +0.5174 0.75 0.6196 0.82007 +0.5175 0.75 0.619889 0.820003 +0.5176 0.75 0.620177 0.819932 +0.5177 0.75 0.620465 0.819856 +0.5178 0.75 0.620754 0.819776 +0.5179 0.75 0.621042 0.819691 +0.518 0.75 0.621329 0.819602 +0.5181 0.75 0.621617 0.819509 +0.5182 0.75 0.621904 0.819411 +0.5183 0.75 0.622192 0.819309 +0.5184 0.75 0.622479 0.819203 +0.5185 0.75 0.622766 0.819093 +0.5186 0.75 0.623053 0.818978 +0.5187 0.75 0.623339 0.818859 +0.5188 0.75 0.623626 0.818736 +0.5189 0.75 0.623912 0.818609 +0.519 0.75 0.624198 0.818477 +0.5191 0.75 0.624484 0.818342 +0.5192 0.75 0.62477 0.818203 +0.5193 0.75 0.625055 0.818059 +0.5194 0.75 0.62534 0.817912 +0.5195 0.75 0.625626 0.81776 +0.5196 0.75 0.625911 0.817604 +0.5197 0.75 0.626195 0.817445 +0.5198 0.75 0.62648 0.817282 +0.5199 0.75 0.626765 0.817114 +0.52 0.75 0.627049 0.816943 +0.5201 0.75 0.627333 0.816768 +0.5202 0.75 0.627617 0.816589 +0.5203 0.75 0.627901 0.816407 +0.5204 0.75 0.628184 0.81622 +0.5205 0.75 0.628468 0.81603 +0.5206 0.75 0.628751 0.815837 +0.5207 0.75 0.629034 0.815639 +0.5208 0.75 0.629317 0.815438 +0.5209 0.75 0.629599 0.815233 +0.521 0.75 0.629882 0.815025 +0.5211 0.75 0.630164 0.814813 +0.5212 0.75 0.630446 0.814597 +0.5213 0.75 0.630728 0.814378 +0.5214 0.75 0.63101 0.814156 +0.5215 0.75 0.631292 0.81393 +0.5216 0.75 0.631573 0.8137 +0.5217 0.75 0.631854 0.813468 +0.5218 0.75 0.632135 0.813231 +0.5219 0.75 0.632416 0.812992 +0.522 0.75 0.632697 0.812749 +0.5221 0.75 0.632977 0.812503 +0.5222 0.75 0.633257 0.812253 +0.5223 0.75 0.633537 0.812 +0.5224 0.75 0.633817 0.811744 +0.5225 0.75 0.634097 0.811485 +0.5226 0.75 0.634376 0.811223 +0.5227 0.75 0.634656 0.810957 +0.5228 0.75 0.634935 0.810689 +0.5229 0.75 0.635214 0.810417 +0.523 0.75 0.635493 0.810143 +0.5231 0.75 0.635771 0.809865 +0.5232 0.75 0.63605 0.809584 +0.5233 0.75 0.636328 0.8093 +0.5234 0.75 0.636606 0.809014 +0.5235 0.75 0.636884 0.808724 +0.5236 0.75 0.637161 0.808432 +0.5237 0.75 0.637439 0.808137 +0.5238 0.75 0.637716 0.807839 +0.5239 0.75 0.637993 0.807538 +0.524 0.75 0.63827 0.807234 +0.5241 0.75 0.638547 0.806928 +0.5242 0.75 0.638823 0.806619 +0.5243 0.75 0.639099 0.806307 +0.5244 0.75 0.639375 0.805992 +0.5245 0.75 0.639651 0.805675 +0.5246 0.75 0.639927 0.805356 +0.5247 0.75 0.640202 0.805034 +0.5248 0.75 0.640478 0.804709 +0.5249 0.75 0.640753 0.804382 +0.525 0.75 0.641028 0.804052 +0.5251 0.75 0.641303 0.80372 +0.5252 0.75 0.641577 0.803386 +0.5253 0.75 0.641851 0.803049 +0.5254 0.75 0.642126 0.802709 +0.5255 0.75 0.642399 0.802368 +0.5256 0.75 0.642673 0.802024 +0.5257 0.75 0.642947 0.801678 +0.5258 0.75 0.64322 0.801329 +0.5259 0.75 0.643493 0.800979 +0.526 0.75 0.643766 0.800626 +0.5261 0.75 0.644039 0.800271 +0.5262 0.75 0.644312 0.799914 +0.5263 0.75 0.644584 0.799555 +0.5264 0.75 0.644856 0.799194 +0.5265 0.75 0.645128 0.798831 +0.5266 0.75 0.6454 0.798465 +0.5267 0.75 0.645671 0.798098 +0.5268 0.75 0.645943 0.797729 +0.5269 0.75 0.646214 0.797358 +0.527 0.75 0.646485 0.796985 +0.5271 0.75 0.646756 0.79661 +0.5272 0.75 0.647026 0.796234 +0.5273 0.75 0.647297 0.795856 +0.5274 0.75 0.647567 0.795475 +0.5275 0.75 0.647837 0.795094 +0.5276 0.75 0.648106 0.79471 +0.5277 0.75 0.648376 0.794325 +0.5278 0.75 0.648645 0.793938 +0.5279 0.75 0.648914 0.793549 +0.528 0.75 0.649183 0.793159 +0.5281 0.75 0.649452 0.792768 +0.5282 0.75 0.649721 0.792375 +0.5283 0.75 0.649989 0.79198 +0.5284 0.75 0.650257 0.791584 +0.5285 0.75 0.650525 0.791186 +0.5286 0.75 0.650793 0.790787 +0.5287 0.75 0.65106 0.790387 +0.5288 0.75 0.651327 0.789986 +0.5289 0.75 0.651595 0.789583 +0.529 0.75 0.651861 0.789178 +0.5291 0.75 0.652128 0.788773 +0.5292 0.75 0.652395 0.788366 +0.5293 0.75 0.652661 0.787958 +0.5294 0.75 0.652927 0.787549 +0.5295 0.75 0.653193 0.787139 +0.5296 0.75 0.653458 0.786727 +0.5297 0.75 0.653724 0.786315 +0.5298 0.75 0.653989 0.785902 +0.5299 0.75 0.654254 0.785487 +0.53 0.75 0.654519 0.785072 +0.5301 0.75 0.654783 0.784655 +0.5302 0.75 0.655048 0.784238 +0.5303 0.75 0.655312 0.783819 +0.5304 0.75 0.655576 0.7834 +0.5305 0.75 0.65584 0.78298 +0.5306 0.75 0.656103 0.782559 +0.5307 0.75 0.656367 0.782138 +0.5308 0.75 0.65663 0.781715 +0.5309 0.75 0.656893 0.781292 +0.531 0.75 0.657155 0.780868 +0.5311 0.75 0.657418 0.780444 +0.5312 0.75 0.65768 0.780019 +0.5313 0.75 0.657942 0.779593 +0.5314 0.75 0.658204 0.779167 +0.5315 0.75 0.658466 0.77874 +0.5316 0.75 0.658727 0.778313 +0.5317 0.75 0.658988 0.777885 +0.5318 0.75 0.659249 0.777456 +0.5319 0.75 0.65951 0.777027 +0.532 0.75 0.65977 0.776598 +0.5321 0.75 0.660031 0.776169 +0.5322 0.75 0.660291 0.775739 +0.5323 0.75 0.660551 0.775308 +0.5324 0.75 0.660811 0.774878 +0.5325 0.75 0.66107 0.774447 +0.5326 0.75 0.661329 0.774016 +0.5327 0.75 0.661588 0.773584 +0.5328 0.75 0.661847 0.773153 +0.5329 0.75 0.662106 0.772721 +0.533 0.75 0.662364 0.772289 +0.5331 0.75 0.662622 0.771857 +0.5332 0.75 0.66288 0.771425 +0.5333 0.75 0.663138 0.770993 +0.5334 0.75 0.663395 0.770561 +0.5335 0.75 0.663653 0.770129 +0.5336 0.75 0.66391 0.769697 +0.5337 0.75 0.664167 0.769265 +0.5338 0.75 0.664423 0.768833 +0.5339 0.75 0.66468 0.768401 +0.534 0.75 0.664936 0.767969 +0.5341 0.75 0.665192 0.767538 +0.5342 0.75 0.665448 0.767106 +0.5343 0.75 0.665703 0.766675 +0.5344 0.75 0.665959 0.766244 +0.5345 0.75 0.666214 0.765813 +0.5346 0.75 0.666469 0.765383 +0.5347 0.75 0.666723 0.764953 +0.5348 0.75 0.666978 0.764523 +0.5349 0.75 0.667232 0.764094 +0.535 0.75 0.667486 0.763665 +0.5351 0.75 0.66774 0.763237 +0.5352 0.75 0.667993 0.762809 +0.5353 0.75 0.668246 0.762381 +0.5354 0.75 0.6685 0.761954 +0.5355 0.75 0.668752 0.761528 +0.5356 0.75 0.669005 0.761102 +0.5357 0.75 0.669257 0.760676 +0.5358 0.75 0.66951 0.760251 +0.5359 0.75 0.669762 0.759827 +0.536 0.75 0.670013 0.759404 +0.5361 0.75 0.670265 0.758981 +0.5362 0.75 0.670516 0.758559 +0.5363 0.75 0.670767 0.758137 +0.5364 0.75 0.671018 0.757717 +0.5365 0.75 0.671269 0.757297 +0.5366 0.75 0.671519 0.756878 +0.5367 0.75 0.671769 0.756459 +0.5368 0.75 0.672019 0.756042 +0.5369 0.75 0.672269 0.755625 +0.537 0.75 0.672518 0.75521 +0.5371 0.75 0.672768 0.754795 +0.5372 0.75 0.673017 0.754381 +0.5373 0.75 0.673265 0.753968 +0.5374 0.75 0.673514 0.753557 +0.5375 0.75 0.673762 0.753146 +0.5376 0.75 0.67401 0.752736 +0.5377 0.75 0.674258 0.752327 +0.5378 0.75 0.674506 0.75192 +0.5379 0.75 0.674753 0.751513 +0.538 0.75 0.675001 0.751107 +0.5381 0.75 0.675248 0.750703 +0.5382 0.75 0.675494 0.7503 +0.5383 0.75 0.675741 0.749898 +0.5384 0.75 0.675987 0.749497 +0.5385 0.75 0.676233 0.749098 +0.5386 0.75 0.676479 0.7487 +0.5387 0.75 0.676724 0.748303 +0.5388 0.75 0.67697 0.747907 +0.5389 0.75 0.677215 0.747513 +0.539 0.75 0.67746 0.74712 +0.5391 0.75 0.677704 0.746728 +0.5392 0.75 0.677949 0.746338 +0.5393 0.75 0.678193 0.745949 +0.5394 0.75 0.678437 0.745562 +0.5395 0.75 0.678681 0.745176 +0.5396 0.75 0.678924 0.744791 +0.5397 0.75 0.679167 0.744408 +0.5398 0.75 0.67941 0.744027 +0.5399 0.75 0.679653 0.743647 +0.54 0.75 0.679896 0.743268 +0.5401 0.75 0.680138 0.742891 +0.5402 0.75 0.68038 0.742516 +0.5403 0.75 0.680622 0.742142 +0.5404 0.75 0.680863 0.74177 +0.5405 0.75 0.681105 0.7414 +0.5406 0.75 0.681346 0.741031 +0.5407 0.75 0.681587 0.740664 +0.5408 0.75 0.681827 0.740298 +0.5409 0.75 0.682068 0.739935 +0.541 0.75 0.682308 0.739573 +0.5411 0.75 0.682548 0.739213 +0.5412 0.75 0.682788 0.738854 +0.5413 0.75 0.683027 0.738498 +0.5414 0.75 0.683266 0.738143 +0.5415 0.75 0.683505 0.73779 +0.5416 0.75 0.683744 0.737439 +0.5417 0.75 0.683983 0.737089 +0.5418 0.75 0.684221 0.736742 +0.5419 0.75 0.684459 0.736396 +0.542 0.75 0.684697 0.736053 +0.5421 0.75 0.684934 0.735711 +0.5422 0.75 0.685172 0.735371 +0.5423 0.75 0.685409 0.735033 +0.5424 0.75 0.685646 0.734697 +0.5425 0.75 0.685882 0.734364 +0.5426 0.75 0.686119 0.734032 +0.5427 0.75 0.686355 0.733702 +0.5428 0.75 0.686591 0.733374 +0.5429 0.75 0.686826 0.733048 +0.543 0.75 0.687062 0.732725 +0.5431 0.75 0.687297 0.732403 +0.5432 0.75 0.687532 0.732084 +0.5433 0.75 0.687766 0.731766 +0.5434 0.75 0.688001 0.731451 +0.5435 0.75 0.688235 0.731138 +0.5436 0.75 0.688469 0.730827 +0.5437 0.75 0.688703 0.730518 +0.5438 0.75 0.688936 0.730212 +0.5439 0.75 0.689169 0.729907 +0.544 0.75 0.689402 0.729605 +0.5441 0.75 0.689635 0.729305 +0.5442 0.75 0.689867 0.729007 +0.5443 0.75 0.6901 0.728712 +0.5444 0.75 0.690332 0.728418 +0.5445 0.75 0.690563 0.728127 +0.5446 0.75 0.690795 0.727839 +0.5447 0.75 0.691026 0.727552 +0.5448 0.75 0.691257 0.727268 +0.5449 0.75 0.691488 0.726987 +0.545 0.75 0.691718 0.726707 +0.5451 0.75 0.691949 0.72643 +0.5452 0.75 0.692179 0.726155 +0.5453 0.75 0.692409 0.725883 +0.5454 0.75 0.692638 0.725613 +0.5455 0.75 0.692867 0.725345 +0.5456 0.75 0.693096 0.72508 +0.5457 0.75 0.693325 0.724817 +0.5458 0.75 0.693554 0.724557 +0.5459 0.75 0.693782 0.724299 +0.546 0.75 0.69401 0.724044 +0.5461 0.75 0.694238 0.723791 +0.5462 0.75 0.694465 0.72354 +0.5463 0.75 0.694693 0.723292 +0.5464 0.75 0.69492 0.723046 +0.5465 0.75 0.695147 0.722803 +0.5466 0.75 0.695373 0.722563 +0.5467 0.75 0.6956 0.722325 +0.5468 0.75 0.695826 0.722089 +0.5469 0.75 0.696051 0.721856 +0.547 0.75 0.696277 0.721625 +0.5471 0.75 0.696502 0.721397 +0.5472 0.75 0.696727 0.721172 +0.5473 0.75 0.696952 0.720949 +0.5474 0.75 0.697177 0.720729 +0.5475 0.75 0.697401 0.720511 +0.5476 0.75 0.697625 0.720296 +0.5477 0.75 0.697849 0.720083 +0.5478 0.75 0.698073 0.719873 +0.5479 0.75 0.698296 0.719666 +0.548 0.75 0.698519 0.719461 +0.5481 0.75 0.698742 0.719259 +0.5482 0.75 0.698964 0.719059 +0.5483 0.75 0.699187 0.718862 +0.5484 0.75 0.699409 0.718668 +0.5485 0.75 0.699631 0.718476 +0.5486 0.75 0.699852 0.718287 +0.5487 0.75 0.700073 0.718101 +0.5488 0.75 0.700295 0.717917 +0.5489 0.75 0.700515 0.717736 +0.549 0.75 0.700736 0.717558 +0.5491 0.75 0.700956 0.717382 +0.5492 0.75 0.701176 0.717209 +0.5493 0.75 0.701396 0.717038 +0.5494 0.75 0.701616 0.716871 +0.5495 0.75 0.701835 0.716706 +0.5496 0.75 0.702054 0.716543 +0.5497 0.75 0.702273 0.716384 +0.5498 0.75 0.702491 0.716227 +0.5499 0.75 0.702709 0.716073 +0.55 0.75 0.702927 0.715921 +0.5501 0.75 0.703145 0.715772 +0.5502 0.75 0.703363 0.715626 +0.5503 0.75 0.70358 0.715483 +0.5504 0.75 0.703797 0.715342 +0.5505 0.75 0.704014 0.715204 +0.5506 0.75 0.70423 0.715069 +0.5507 0.75 0.704446 0.714936 +0.5508 0.75 0.704662 0.714806 +0.5509 0.75 0.704878 0.714679 +0.551 0.75 0.705093 0.714555 +0.5511 0.75 0.705309 0.714433 +0.5512 0.75 0.705524 0.714314 +0.5513 0.75 0.705738 0.714198 +0.5514 0.75 0.705953 0.714084 +0.5515 0.75 0.706167 0.713973 +0.5516 0.75 0.706381 0.713865 +0.5517 0.75 0.706594 0.71376 +0.5518 0.75 0.706808 0.713658 +0.5519 0.75 0.707021 0.713558 +0.552 0.75 0.707234 0.713461 +0.5521 0.75 0.707447 0.713366 +0.5522 0.75 0.707659 0.713274 +0.5523 0.75 0.707871 0.713186 +0.5524 0.75 0.708083 0.713099 +0.5525 0.75 0.708294 0.713016 +0.5526 0.75 0.708506 0.712935 +0.5527 0.75 0.708717 0.712857 +0.5528 0.75 0.708928 0.712782 +0.5529 0.75 0.709138 0.712709 +0.553 0.75 0.709348 0.712639 +0.5531 0.75 0.709558 0.712572 +0.5532 0.75 0.709768 0.712507 +0.5533 0.75 0.709978 0.712446 +0.5534 0.75 0.710187 0.712387 +0.5535 0.75 0.710396 0.71233 +0.5536 0.75 0.710605 0.712277 +0.5537 0.75 0.710813 0.712226 +0.5538 0.75 0.711021 0.712177 +0.5539 0.75 0.711229 0.712132 +0.554 0.75 0.711437 0.712089 +0.5541 0.75 0.711644 0.712049 +0.5542 0.75 0.711852 0.712011 +0.5543 0.75 0.712059 0.711976 +0.5544 0.75 0.712265 0.711944 +0.5545 0.75 0.712472 0.711915 +0.5546 0.75 0.712678 0.711888 +0.5547 0.75 0.712884 0.711864 +0.5548 0.75 0.713089 0.711842 +0.5549 0.75 0.713294 0.711823 +0.555 0.75 0.7135 0.711807 +0.5551 0.75 0.713704 0.711793 +0.5552 0.75 0.713909 0.711782 +0.5553 0.75 0.714113 0.711774 +0.5554 0.75 0.714317 0.711768 +0.5555 0.75 0.714521 0.711765 +0.5556 0.75 0.714724 0.711765 +0.5557 0.75 0.714928 0.711767 +0.5558 0.75 0.715131 0.711772 +0.5559 0.75 0.715333 0.711779 +0.556 0.75 0.715536 0.711789 +0.5561 0.75 0.715738 0.711801 +0.5562 0.75 0.71594 0.711816 +0.5563 0.75 0.716141 0.711834 +0.5564 0.75 0.716343 0.711854 +0.5565 0.75 0.716544 0.711877 +0.5566 0.75 0.716745 0.711902 +0.5567 0.75 0.716945 0.71193 +0.5568 0.75 0.717146 0.71196 +0.5569 0.75 0.717346 0.711993 +0.557 0.75 0.717545 0.712028 +0.5571 0.75 0.717745 0.712066 +0.5572 0.75 0.717944 0.712106 +0.5573 0.75 0.718143 0.712149 +0.5574 0.75 0.718342 0.712194 +0.5575 0.75 0.71854 0.712242 +0.5576 0.75 0.718739 0.712292 +0.5577 0.75 0.718936 0.712345 +0.5578 0.75 0.719134 0.7124 +0.5579 0.75 0.719332 0.712458 +0.558 0.75 0.719529 0.712518 +0.5581 0.75 0.719726 0.71258 +0.5582 0.75 0.719922 0.712645 +0.5583 0.75 0.720118 0.712712 +0.5584 0.75 0.720314 0.712782 +0.5585 0.75 0.72051 0.712853 +0.5586 0.75 0.720706 0.712928 +0.5587 0.75 0.720901 0.713004 +0.5588 0.75 0.721096 0.713083 +0.5589 0.75 0.721291 0.713165 +0.559 0.75 0.721485 0.713248 +0.5591 0.75 0.721679 0.713334 +0.5592 0.75 0.721873 0.713423 +0.5593 0.75 0.722067 0.713513 +0.5594 0.75 0.72226 0.713606 +0.5595 0.75 0.722453 0.713701 +0.5596 0.75 0.722646 0.713799 +0.5597 0.75 0.722839 0.713898 +0.5598 0.75 0.723031 0.714 +0.5599 0.75 0.723223 0.714104 +0.56 0.75 0.723415 0.71421 +0.5601 0.75 0.723606 0.714319 +0.5602 0.75 0.723798 0.714429 +0.5603 0.75 0.723989 0.714542 +0.5604 0.75 0.724179 0.714657 +0.5605 0.75 0.72437 0.714774 +0.5606 0.75 0.72456 0.714894 +0.5607 0.75 0.72475 0.715015 +0.5608 0.75 0.724939 0.715138 +0.5609 0.75 0.725129 0.715264 +0.561 0.75 0.725318 0.715392 +0.5611 0.75 0.725507 0.715522 +0.5612 0.75 0.725695 0.715653 +0.5613 0.75 0.725883 0.715787 +0.5614 0.75 0.726071 0.715923 +0.5615 0.75 0.726259 0.716061 +0.5616 0.75 0.726446 0.716201 +0.5617 0.75 0.726634 0.716343 +0.5618 0.75 0.72682 0.716487 +0.5619 0.75 0.727007 0.716633 +0.562 0.75 0.727193 0.71678 +0.5621 0.75 0.72738 0.71693 +0.5622 0.75 0.727565 0.717082 +0.5623 0.75 0.727751 0.717235 +0.5624 0.75 0.727936 0.717391 +0.5625 0.75 0.728121 0.717548 +0.5626 0.75 0.728306 0.717707 +0.5627 0.75 0.72849 0.717869 +0.5628 0.75 0.728675 0.718031 +0.5629 0.75 0.728858 0.718196 +0.563 0.75 0.729042 0.718363 +0.5631 0.75 0.729225 0.718531 +0.5632 0.75 0.729409 0.718701 +0.5633 0.75 0.729591 0.718873 +0.5634 0.75 0.729774 0.719047 +0.5635 0.75 0.729956 0.719222 +0.5636 0.75 0.730138 0.719399 +0.5637 0.75 0.73032 0.719578 +0.5638 0.75 0.730501 0.719758 +0.5639 0.75 0.730683 0.71994 +0.564 0.75 0.730863 0.720124 +0.5641 0.75 0.731044 0.72031 +0.5642 0.75 0.731224 0.720497 +0.5643 0.75 0.731405 0.720685 +0.5644 0.75 0.731584 0.720875 +0.5645 0.75 0.731764 0.721067 +0.5646 0.75 0.731943 0.721261 +0.5647 0.75 0.732122 0.721456 +0.5648 0.75 0.732301 0.721652 +0.5649 0.75 0.732479 0.72185 +0.565 0.75 0.732657 0.722049 +0.5651 0.75 0.732835 0.72225 +0.5652 0.75 0.733013 0.722453 +0.5653 0.75 0.73319 0.722656 +0.5654 0.75 0.733367 0.722862 +0.5655 0.75 0.733544 0.723068 +0.5656 0.75 0.733721 0.723276 +0.5657 0.75 0.733897 0.723486 +0.5658 0.75 0.734073 0.723697 +0.5659 0.75 0.734249 0.723909 +0.566 0.75 0.734424 0.724122 +0.5661 0.75 0.734599 0.724337 +0.5662 0.75 0.734774 0.724553 +0.5663 0.75 0.734949 0.724771 +0.5664 0.75 0.735123 0.724989 +0.5665 0.75 0.735297 0.725209 +0.5666 0.75 0.735471 0.72543 +0.5667 0.75 0.735644 0.725653 +0.5668 0.75 0.735818 0.725876 +0.5669 0.75 0.735991 0.726101 +0.567 0.75 0.736163 0.726327 +0.5671 0.75 0.736336 0.726554 +0.5672 0.75 0.736508 0.726782 +0.5673 0.75 0.73668 0.727011 +0.5674 0.75 0.736851 0.727241 +0.5675 0.75 0.737022 0.727473 +0.5676 0.75 0.737193 0.727705 +0.5677 0.75 0.737364 0.727939 +0.5678 0.75 0.737535 0.728173 +0.5679 0.75 0.737705 0.728408 +0.568 0.75 0.737875 0.728645 +0.5681 0.75 0.738044 0.728882 +0.5682 0.75 0.738214 0.729121 +0.5683 0.75 0.738383 0.72936 +0.5684 0.75 0.738552 0.7296 +0.5685 0.75 0.73872 0.729841 +0.5686 0.75 0.738888 0.730083 +0.5687 0.75 0.739056 0.730326 +0.5688 0.75 0.739224 0.73057 +0.5689 0.75 0.739391 0.730814 +0.569 0.75 0.739559 0.73106 +0.5691 0.75 0.739725 0.731306 +0.5692 0.75 0.739892 0.731553 +0.5693 0.75 0.740058 0.7318 +0.5694 0.75 0.740224 0.732049 +0.5695 0.75 0.74039 0.732298 +0.5696 0.75 0.740556 0.732548 +0.5697 0.75 0.740721 0.732798 +0.5698 0.75 0.740886 0.733049 +0.5699 0.75 0.74105 0.733301 +0.57 0.75 0.741215 0.733553 +0.5701 0.75 0.741379 0.733806 +0.5702 0.75 0.741543 0.73406 +0.5703 0.75 0.741706 0.734314 +0.5704 0.75 0.741869 0.734569 +0.5705 0.75 0.742032 0.734824 +0.5706 0.75 0.742195 0.73508 +0.5707 0.75 0.742358 0.735336 +0.5708 0.75 0.74252 0.735593 +0.5709 0.75 0.742682 0.73585 +0.571 0.75 0.742843 0.736108 +0.5711 0.75 0.743004 0.736366 +0.5712 0.75 0.743165 0.736625 +0.5713 0.75 0.743326 0.736883 +0.5714 0.75 0.743487 0.737143 +0.5715 0.75 0.743647 0.737402 +0.5716 0.75 0.743807 0.737662 +0.5717 0.75 0.743966 0.737923 +0.5718 0.75 0.744126 0.738183 +0.5719 0.75 0.744285 0.738444 +0.572 0.75 0.744444 0.738705 +0.5721 0.75 0.744602 0.738967 +0.5722 0.75 0.74476 0.739228 +0.5723 0.75 0.744918 0.73949 +0.5724 0.75 0.745076 0.739752 +0.5725 0.75 0.745233 0.740014 +0.5726 0.75 0.745391 0.740277 +0.5727 0.75 0.745547 0.740539 +0.5728 0.75 0.745704 0.740802 +0.5729 0.75 0.74586 0.741065 +0.573 0.75 0.746016 0.741327 +0.5731 0.75 0.746172 0.74159 +0.5732 0.75 0.746327 0.741853 +0.5733 0.75 0.746483 0.742116 +0.5734 0.75 0.746638 0.742379 +0.5735 0.75 0.746792 0.742642 +0.5736 0.75 0.746946 0.742905 +0.5737 0.75 0.747101 0.743168 +0.5738 0.75 0.747254 0.743431 +0.5739 0.75 0.747408 0.743694 +0.574 0.75 0.747561 0.743957 +0.5741 0.75 0.747714 0.744219 +0.5742 0.75 0.747867 0.744482 +0.5743 0.75 0.748019 0.744744 +0.5744 0.75 0.748171 0.745007 +0.5745 0.75 0.748323 0.745269 +0.5746 0.75 0.748474 0.745531 +0.5747 0.75 0.748626 0.745792 +0.5748 0.75 0.748777 0.746054 +0.5749 0.75 0.748927 0.746315 +0.575 0.75 0.749078 0.746576 +0.5751 0.75 0.749228 0.746836 +0.5752 0.75 0.749378 0.747097 +0.5753 0.75 0.749527 0.747357 +0.5754 0.75 0.749677 0.747617 +0.5755 0.75 0.749826 0.747876 +0.5756 0.75 0.749974 0.748135 +0.5757 0.75 0.750123 0.748394 +0.5758 0.75 0.750271 0.748652 +0.5759 0.75 0.750419 0.74891 +0.576 0.75 0.750567 0.749167 +0.5761 0.75 0.750714 0.749424 +0.5762 0.75 0.750861 0.749681 +0.5763 0.75 0.751008 0.749937 +0.5764 0.75 0.751154 0.750193 +0.5765 0.75 0.7513 0.750448 +0.5766 0.75 0.751446 0.750702 +0.5767 0.75 0.751592 0.750956 +0.5768 0.75 0.751737 0.75121 +0.5769 0.75 0.751882 0.751463 +0.577 0.75 0.752027 0.751715 +0.5771 0.75 0.752172 0.751967 +0.5772 0.75 0.752316 0.752218 +0.5773 0.75 0.75246 0.752468 +0.5774 0.75 0.752604 0.752718 +0.5775 0.75 0.752747 0.752967 +0.5776 0.75 0.75289 0.753215 +0.5777 0.75 0.753033 0.753463 +0.5778 0.75 0.753176 0.75371 +0.5779 0.75 0.753318 0.753957 +0.578 0.75 0.75346 0.754202 +0.5781 0.75 0.753602 0.754447 +0.5782 0.75 0.753743 0.754691 +0.5783 0.75 0.753884 0.754934 +0.5784 0.75 0.754025 0.755177 +0.5785 0.75 0.754166 0.755418 +0.5786 0.75 0.754306 0.755659 +0.5787 0.75 0.754446 0.755899 +0.5788 0.75 0.754586 0.756138 +0.5789 0.75 0.754726 0.756377 +0.579 0.75 0.754865 0.756614 +0.5791 0.75 0.755004 0.75685 +0.5792 0.75 0.755142 0.757086 +0.5793 0.75 0.755281 0.757321 +0.5794 0.75 0.755419 0.757554 +0.5795 0.75 0.755557 0.757787 +0.5796 0.75 0.755694 0.758019 +0.5797 0.75 0.755831 0.75825 +0.5798 0.75 0.755968 0.758479 +0.5799 0.75 0.756105 0.758708 +0.58 0.75 0.756241 0.758936 +0.5801 0.75 0.756377 0.759162 +0.5802 0.75 0.756513 0.759388 +0.5803 0.75 0.756649 0.759613 +0.5804 0.75 0.756784 0.759836 +0.5805 0.75 0.756919 0.760058 +0.5806 0.75 0.757054 0.76028 +0.5807 0.75 0.757188 0.7605 +0.5808 0.75 0.757322 0.760719 +0.5809 0.75 0.757456 0.760937 +0.581 0.75 0.75759 0.761153 +0.5811 0.75 0.757723 0.761369 +0.5812 0.75 0.757856 0.761583 +0.5813 0.75 0.757989 0.761796 +0.5814 0.75 0.758122 0.762008 +0.5815 0.75 0.758254 0.762219 +0.5816 0.75 0.758386 0.762429 +0.5817 0.75 0.758517 0.762637 +0.5818 0.75 0.758649 0.762844 +0.5819 0.75 0.75878 0.76305 +0.582 0.75 0.75891 0.763254 +0.5821 0.75 0.759041 0.763457 +0.5822 0.75 0.759171 0.763659 +0.5823 0.75 0.759301 0.76386 +0.5824 0.75 0.759431 0.764059 +0.5825 0.75 0.75956 0.764257 +0.5826 0.75 0.759689 0.764454 +0.5827 0.75 0.759818 0.764649 +0.5828 0.75 0.759947 0.764843 +0.5829 0.75 0.760075 0.765035 +0.583 0.75 0.760203 0.765226 +0.5831 0.75 0.760331 0.765416 +0.5832 0.75 0.760458 0.765604 +0.5833 0.75 0.760585 0.765791 +0.5834 0.75 0.760712 0.765976 +0.5835 0.75 0.760839 0.76616 +0.5836 0.75 0.760965 0.766343 +0.5837 0.75 0.761091 0.766524 +0.5838 0.75 0.761217 0.766704 +0.5839 0.75 0.761342 0.766882 +0.584 0.75 0.761467 0.767058 +0.5841 0.75 0.761592 0.767234 +0.5842 0.75 0.761717 0.767407 +0.5843 0.75 0.761841 0.767579 +0.5844 0.75 0.761965 0.76775 +0.5845 0.75 0.762089 0.767919 +0.5846 0.75 0.762213 0.768087 +0.5847 0.75 0.762336 0.768253 +0.5848 0.75 0.762459 0.768417 +0.5849 0.75 0.762582 0.76858 +0.585 0.75 0.762704 0.768741 +0.5851 0.75 0.762826 0.768901 +0.5852 0.75 0.762948 0.769059 +0.5853 0.75 0.763069 0.769216 +0.5854 0.75 0.763191 0.76937 +0.5855 0.75 0.763312 0.769524 +0.5856 0.75 0.763432 0.769675 +0.5857 0.75 0.763553 0.769825 +0.5858 0.75 0.763673 0.769974 +0.5859 0.75 0.763793 0.770121 +0.586 0.75 0.763912 0.770266 +0.5861 0.75 0.764032 0.770409 +0.5862 0.75 0.764151 0.770551 +0.5863 0.75 0.76427 0.770691 +0.5864 0.75 0.764388 0.770829 +0.5865 0.75 0.764506 0.770966 +0.5866 0.75 0.764624 0.771101 +0.5867 0.75 0.764742 0.771235 +0.5868 0.75 0.764859 0.771366 +0.5869 0.75 0.764976 0.771496 +0.587 0.75 0.765093 0.771624 +0.5871 0.75 0.76521 0.771751 +0.5872 0.75 0.765326 0.771876 +0.5873 0.75 0.765442 0.771999 +0.5874 0.75 0.765557 0.77212 +0.5875 0.75 0.765673 0.772239 +0.5876 0.75 0.765788 0.772357 +0.5877 0.75 0.765903 0.772473 +0.5878 0.75 0.766017 0.772588 +0.5879 0.75 0.766132 0.7727 +0.588 0.75 0.766246 0.772811 +0.5881 0.75 0.766359 0.77292 +0.5882 0.75 0.766473 0.773027 +0.5883 0.75 0.766586 0.773132 +0.5884 0.75 0.766699 0.773236 +0.5885 0.75 0.766812 0.773338 +0.5886 0.75 0.766924 0.773438 +0.5887 0.75 0.767036 0.773536 +0.5888 0.75 0.767148 0.773633 +0.5889 0.75 0.767259 0.773727 +0.589 0.75 0.767371 0.77382 +0.5891 0.75 0.767482 0.773911 +0.5892 0.75 0.767592 0.774 +0.5893 0.75 0.767703 0.774088 +0.5894 0.75 0.767813 0.774173 +0.5895 0.75 0.767923 0.774257 +0.5896 0.75 0.768032 0.774339 +0.5897 0.75 0.768141 0.774419 +0.5898 0.75 0.76825 0.774497 +0.5899 0.75 0.768359 0.774574 +0.59 0.75 0.768468 0.774648 +0.5901 0.75 0.768576 0.774721 +0.5902 0.75 0.768684 0.774792 +0.5903 0.75 0.768791 0.774861 +0.5904 0.75 0.768899 0.774928 +0.5905 0.75 0.769006 0.774994 +0.5906 0.75 0.769113 0.775057 +0.5907 0.75 0.769219 0.775119 +0.5908 0.75 0.769325 0.775179 +0.5909 0.75 0.769431 0.775237 +0.591 0.75 0.769537 0.775293 +0.5911 0.75 0.769642 0.775347 +0.5912 0.75 0.769747 0.7754 +0.5913 0.75 0.769852 0.77545 +0.5914 0.75 0.769957 0.775499 +0.5915 0.75 0.770061 0.775546 +0.5916 0.75 0.770165 0.775591 +0.5917 0.75 0.770269 0.775634 +0.5918 0.75 0.770372 0.775675 +0.5919 0.75 0.770476 0.775715 +0.592 0.75 0.770579 0.775752 +0.5921 0.75 0.770681 0.775788 +0.5922 0.75 0.770784 0.775822 +0.5923 0.75 0.770886 0.775854 +0.5924 0.75 0.770987 0.775884 +0.5925 0.75 0.771089 0.775913 +0.5926 0.75 0.77119 0.775939 +0.5927 0.75 0.771291 0.775964 +0.5928 0.75 0.771392 0.775986 +0.5929 0.75 0.771492 0.776007 +0.593 0.75 0.771593 0.776027 +0.5931 0.75 0.771692 0.776044 +0.5932 0.75 0.771792 0.776059 +0.5933 0.75 0.771891 0.776073 +0.5934 0.75 0.77199 0.776085 +0.5935 0.75 0.772089 0.776094 +0.5936 0.75 0.772188 0.776103 +0.5937 0.75 0.772286 0.776109 +0.5938 0.75 0.772384 0.776113 +0.5939 0.75 0.772482 0.776116 +0.594 0.75 0.772579 0.776117 +0.5941 0.75 0.772676 0.776115 +0.5942 0.75 0.772773 0.776113 +0.5943 0.75 0.77287 0.776108 +0.5944 0.75 0.772966 0.776101 +0.5945 0.75 0.773062 0.776093 +0.5946 0.75 0.773158 0.776083 +0.5947 0.75 0.773253 0.776071 +0.5948 0.75 0.773348 0.776057 +0.5949 0.75 0.773443 0.776042 +0.595 0.75 0.773538 0.776025 +0.5951 0.75 0.773632 0.776006 +0.5952 0.75 0.773727 0.775985 +0.5953 0.75 0.77382 0.775962 +0.5954 0.75 0.773914 0.775938 +0.5955 0.75 0.774007 0.775911 +0.5956 0.75 0.7741 0.775884 +0.5957 0.75 0.774193 0.775854 +0.5958 0.75 0.774286 0.775822 +0.5959 0.75 0.774378 0.775789 +0.596 0.75 0.77447 0.775754 +0.5961 0.75 0.774561 0.775718 +0.5962 0.75 0.774653 0.775679 +0.5963 0.75 0.774744 0.775639 +0.5964 0.75 0.774835 0.775597 +0.5965 0.75 0.774925 0.775554 +0.5966 0.75 0.775016 0.775508 +0.5967 0.75 0.775106 0.775461 +0.5968 0.75 0.775195 0.775412 +0.5969 0.75 0.775285 0.775362 +0.597 0.75 0.775374 0.77531 +0.5971 0.75 0.775463 0.775256 +0.5972 0.75 0.775552 0.775201 +0.5973 0.75 0.77564 0.775144 +0.5974 0.75 0.775728 0.775085 +0.5975 0.75 0.775816 0.775024 +0.5976 0.75 0.775904 0.774962 +0.5977 0.75 0.775991 0.774898 +0.5978 0.75 0.776078 0.774833 +0.5979 0.75 0.776165 0.774766 +0.598 0.75 0.776251 0.774697 +0.5981 0.75 0.776337 0.774627 +0.5982 0.75 0.776423 0.774555 +0.5983 0.75 0.776509 0.774482 +0.5984 0.75 0.776594 0.774407 +0.5985 0.75 0.77668 0.77433 +0.5986 0.75 0.776764 0.774252 +0.5987 0.75 0.776849 0.774172 +0.5988 0.75 0.776933 0.774091 +0.5989 0.75 0.777017 0.774008 +0.599 0.75 0.777101 0.773923 +0.5991 0.75 0.777185 0.773837 +0.5992 0.75 0.777268 0.77375 +0.5993 0.75 0.777351 0.773661 +0.5994 0.75 0.777434 0.77357 +0.5995 0.75 0.777516 0.773478 +0.5996 0.75 0.777598 0.773385 +0.5997 0.75 0.77768 0.773289 +0.5998 0.75 0.777762 0.773193 +0.5999 0.75 0.777843 0.773095 +0.6 0.75 0.777924 0.772995 +0.6001 0.75 0.778005 0.772894 +0.6002 0.75 0.778086 0.772792 +0.6003 0.75 0.778166 0.772688 +0.6004 0.75 0.778246 0.772583 +0.6005 0.75 0.778326 0.772476 +0.6006 0.75 0.778405 0.772368 +0.6007 0.75 0.778484 0.772259 +0.6008 0.75 0.778563 0.772148 +0.6009 0.75 0.778642 0.772036 +0.601 0.75 0.77872 0.771922 +0.6011 0.75 0.778799 0.771807 +0.6012 0.75 0.778876 0.771691 +0.6013 0.75 0.778954 0.771573 +0.6014 0.75 0.779031 0.771454 +0.6015 0.75 0.779108 0.771334 +0.6016 0.75 0.779185 0.771212 +0.6017 0.75 0.779262 0.771089 +0.6018 0.75 0.779338 0.770965 +0.6019 0.75 0.779414 0.77084 +0.602 0.75 0.77949 0.770713 +0.6021 0.75 0.779565 0.770585 +0.6022 0.75 0.779641 0.770456 +0.6023 0.75 0.779716 0.770325 +0.6024 0.75 0.77979 0.770194 +0.6025 0.75 0.779865 0.770061 +0.6026 0.75 0.779939 0.769927 +0.6027 0.75 0.780013 0.769791 +0.6028 0.75 0.780086 0.769655 +0.6029 0.75 0.78016 0.769517 +0.603 0.75 0.780233 0.769378 +0.6031 0.75 0.780305 0.769238 +0.6032 0.75 0.780378 0.769097 +0.6033 0.75 0.78045 0.768955 +0.6034 0.75 0.780522 0.768812 +0.6035 0.75 0.780594 0.768667 +0.6036 0.75 0.780666 0.768522 +0.6037 0.75 0.780737 0.768375 +0.6038 0.75 0.780808 0.768227 +0.6039 0.75 0.780879 0.768079 +0.604 0.75 0.780949 0.767929 +0.6041 0.75 0.781019 0.767778 +0.6042 0.75 0.781089 0.767626 +0.6043 0.75 0.781159 0.767473 +0.6044 0.75 0.781228 0.767319 +0.6045 0.75 0.781297 0.767165 +0.6046 0.75 0.781366 0.767009 +0.6047 0.75 0.781435 0.766852 +0.6048 0.75 0.781503 0.766694 +0.6049 0.75 0.781571 0.766536 +0.605 0.75 0.781639 0.766376 +0.6051 0.75 0.781706 0.766216 +0.6052 0.75 0.781774 0.766054 +0.6053 0.75 0.781841 0.765892 +0.6054 0.75 0.781907 0.765729 +0.6055 0.75 0.781974 0.765565 +0.6056 0.75 0.78204 0.7654 +0.6057 0.75 0.782106 0.765234 +0.6058 0.75 0.782172 0.765068 +0.6059 0.75 0.782237 0.7649 +0.606 0.75 0.782303 0.764732 +0.6061 0.75 0.782367 0.764563 +0.6062 0.75 0.782432 0.764394 +0.6063 0.75 0.782497 0.764223 +0.6064 0.75 0.782561 0.764052 +0.6065 0.75 0.782625 0.76388 +0.6066 0.75 0.782688 0.763708 +0.6067 0.75 0.782752 0.763534 +0.6068 0.75 0.782815 0.76336 +0.6069 0.75 0.782878 0.763185 +0.607 0.75 0.78294 0.76301 +0.6071 0.75 0.783002 0.762834 +0.6072 0.75 0.783064 0.762657 +0.6073 0.75 0.783126 0.76248 +0.6074 0.75 0.783188 0.762302 +0.6075 0.75 0.783249 0.762123 +0.6076 0.75 0.78331 0.761944 +0.6077 0.75 0.783371 0.761765 +0.6078 0.75 0.783431 0.761584 +0.6079 0.75 0.783492 0.761403 +0.608 0.75 0.783552 0.761222 +0.6081 0.75 0.783611 0.76104 +0.6082 0.75 0.783671 0.760858 +0.6083 0.75 0.78373 0.760675 +0.6084 0.75 0.783789 0.760491 +0.6085 0.75 0.783848 0.760308 +0.6086 0.75 0.783906 0.760123 +0.6087 0.75 0.783964 0.759938 +0.6088 0.75 0.784022 0.759753 +0.6089 0.75 0.78408 0.759568 +0.609 0.75 0.784138 0.759382 +0.6091 0.75 0.784195 0.759195 +0.6092 0.75 0.784252 0.759008 +0.6093 0.75 0.784308 0.758821 +0.6094 0.75 0.784365 0.758634 +0.6095 0.75 0.784421 0.758446 +0.6096 0.75 0.784477 0.758258 +0.6097 0.75 0.784532 0.758069 +0.6098 0.75 0.784588 0.75788 +0.6099 0.75 0.784643 0.757691 +0.61 0.75 0.784698 0.757502 +0.6101 0.75 0.784752 0.757312 +0.6102 0.75 0.784807 0.757123 +0.6103 0.75 0.784861 0.756932 +0.6104 0.75 0.784915 0.756742 +0.6105 0.75 0.784968 0.756552 +0.6106 0.75 0.785022 0.756361 +0.6107 0.75 0.785075 0.75617 +0.6108 0.75 0.785128 0.755979 +0.6109 0.75 0.78518 0.755788 +0.611 0.75 0.785232 0.755597 +0.6111 0.75 0.785284 0.755405 +0.6112 0.75 0.785336 0.755214 +0.6113 0.75 0.785388 0.755022 +0.6114 0.75 0.785439 0.754831 +0.6115 0.75 0.78549 0.754639 +0.6116 0.75 0.785541 0.754447 +0.6117 0.75 0.785592 0.754255 +0.6118 0.75 0.785642 0.754063 +0.6119 0.75 0.785692 0.753871 +0.612 0.75 0.785742 0.753679 +0.6121 0.75 0.785791 0.753487 +0.6122 0.75 0.785841 0.753296 +0.6123 0.75 0.78589 0.753104 +0.6124 0.75 0.785939 0.752912 +0.6125 0.75 0.785987 0.75272 +0.6126 0.75 0.786035 0.752529 +0.6127 0.75 0.786083 0.752337 +0.6128 0.75 0.786131 0.752146 +0.6129 0.75 0.786179 0.751954 +0.613 0.75 0.786226 0.751763 +0.6131 0.75 0.786273 0.751572 +0.6132 0.75 0.78632 0.751381 +0.6133 0.75 0.786366 0.751191 +0.6134 0.75 0.786413 0.751 +0.6135 0.75 0.786459 0.75081 +0.6136 0.75 0.786505 0.75062 +0.6137 0.75 0.78655 0.75043 +0.6138 0.75 0.786595 0.75024 +0.6139 0.75 0.786641 0.750051 +0.614 0.75 0.786685 0.749861 +0.6141 0.75 0.78673 0.749673 +0.6142 0.75 0.786774 0.749484 +0.6143 0.75 0.786818 0.749296 +0.6144 0.75 0.786862 0.749108 +0.6145 0.75 0.786906 0.74892 +0.6146 0.75 0.786949 0.748733 +0.6147 0.75 0.786992 0.748546 +0.6148 0.75 0.787035 0.748359 +0.6149 0.75 0.787077 0.748173 +0.615 0.75 0.78712 0.747987 +0.6151 0.75 0.787162 0.747802 +0.6152 0.75 0.787204 0.747617 +0.6153 0.75 0.787245 0.747432 +0.6154 0.75 0.787287 0.747248 +0.6155 0.75 0.787328 0.747064 +0.6156 0.75 0.787369 0.746881 +0.6157 0.75 0.787409 0.746698 +0.6158 0.75 0.78745 0.746516 +0.6159 0.75 0.78749 0.746334 +0.616 0.75 0.78753 0.746153 +0.6161 0.75 0.787569 0.745972 +0.6162 0.75 0.787609 0.745792 +0.6163 0.75 0.787648 0.745612 +0.6164 0.75 0.787687 0.745433 +0.6165 0.75 0.787726 0.745255 +0.6166 0.75 0.787764 0.745077 +0.6167 0.75 0.787802 0.744899 +0.6168 0.75 0.78784 0.744723 +0.6169 0.75 0.787878 0.744546 +0.617 0.75 0.787915 0.744371 +0.6171 0.75 0.787952 0.744196 +0.6172 0.75 0.787989 0.744022 +0.6173 0.75 0.788026 0.743848 +0.6174 0.75 0.788063 0.743675 +0.6175 0.75 0.788099 0.743503 +0.6176 0.75 0.788135 0.743332 +0.6177 0.75 0.788171 0.743161 +0.6178 0.75 0.788206 0.742991 +0.6179 0.75 0.788241 0.742821 +0.618 0.75 0.788277 0.742653 +0.6181 0.75 0.788311 0.742485 +0.6182 0.75 0.788346 0.742318 +0.6183 0.75 0.78838 0.742152 +0.6184 0.75 0.788414 0.741986 +0.6185 0.75 0.788448 0.741821 +0.6186 0.75 0.788482 0.741657 +0.6187 0.75 0.788515 0.741494 +0.6188 0.75 0.788548 0.741332 +0.6189 0.75 0.788581 0.741171 +0.619 0.75 0.788614 0.74101 +0.6191 0.75 0.788646 0.74085 +0.6192 0.75 0.788678 0.740691 +0.6193 0.75 0.78871 0.740533 +0.6194 0.75 0.788742 0.740376 +0.6195 0.75 0.788773 0.74022 +0.6196 0.75 0.788805 0.740065 +0.6197 0.75 0.788836 0.73991 +0.6198 0.75 0.788866 0.739757 +0.6199 0.75 0.788897 0.739604 +0.62 0.75 0.788927 0.739453 +0.6201 0.75 0.788957 0.739302 +0.6202 0.75 0.788987 0.739152 +0.6203 0.75 0.789017 0.739004 +0.6204 0.75 0.789046 0.738856 +0.6205 0.75 0.789075 0.738709 +0.6206 0.75 0.789104 0.738563 +0.6207 0.75 0.789133 0.738419 +0.6208 0.75 0.789161 0.738275 +0.6209 0.75 0.789189 0.738132 +0.621 0.75 0.789217 0.737991 +0.6211 0.75 0.789245 0.73785 +0.6212 0.75 0.789272 0.73771 +0.6213 0.75 0.7893 0.737572 +0.6214 0.75 0.789327 0.737435 +0.6215 0.75 0.789353 0.737298 +0.6216 0.75 0.78938 0.737163 +0.6217 0.75 0.789406 0.737029 +0.6218 0.75 0.789432 0.736896 +0.6219 0.75 0.789458 0.736764 +0.622 0.75 0.789484 0.736633 +0.6221 0.75 0.789509 0.736503 +0.6222 0.75 0.789534 0.736375 +0.6223 0.75 0.789559 0.736247 +0.6224 0.75 0.789584 0.736121 +0.6225 0.75 0.789608 0.735996 +0.6226 0.75 0.789632 0.735872 +0.6227 0.75 0.789656 0.735749 +0.6228 0.75 0.78968 0.735628 +0.6229 0.75 0.789704 0.735507 +0.623 0.75 0.789727 0.735388 +0.6231 0.75 0.78975 0.73527 +0.6232 0.75 0.789773 0.735153 +0.6233 0.75 0.789795 0.735038 +0.6234 0.75 0.789818 0.734924 +0.6235 0.75 0.78984 0.73481 +0.6236 0.75 0.789862 0.734698 +0.6237 0.75 0.789884 0.734588 +0.6238 0.75 0.789905 0.734478 +0.6239 0.75 0.789926 0.73437 +0.624 0.75 0.789947 0.734263 +0.6241 0.75 0.789968 0.734158 +0.6242 0.75 0.789989 0.734053 +0.6243 0.75 0.790009 0.73395 +0.6244 0.75 0.790029 0.733849 +0.6245 0.75 0.790049 0.733748 +0.6246 0.75 0.790069 0.733649 +0.6247 0.75 0.790088 0.733551 +0.6248 0.75 0.790107 0.733454 +0.6249 0.75 0.790126 0.733359 +0.625 0.75 0.790145 0.733265 +0.6251 0.75 0.790163 0.733172 +0.6252 0.75 0.790182 0.733081 +0.6253 0.75 0.7902 0.732991 +0.6254 0.75 0.790218 0.732902 +0.6255 0.75 0.790235 0.732815 +0.6256 0.75 0.790253 0.732729 +0.6257 0.75 0.79027 0.732644 +0.6258 0.75 0.790287 0.732561 +0.6259 0.75 0.790304 0.732479 +0.626 0.75 0.79032 0.732398 +0.6261 0.75 0.790336 0.732319 +0.6262 0.75 0.790352 0.732241 +0.6263 0.75 0.790368 0.732165 +0.6264 0.75 0.790384 0.73209 +0.6265 0.75 0.790399 0.732016 +0.6266 0.75 0.790414 0.731944 +0.6267 0.75 0.790429 0.731873 +0.6268 0.75 0.790444 0.731803 +0.6269 0.75 0.790459 0.731735 +0.627 0.75 0.790473 0.731669 +0.6271 0.75 0.790487 0.731603 +0.6272 0.75 0.790501 0.731539 +0.6273 0.75 0.790515 0.731477 +0.6274 0.75 0.790528 0.731416 +0.6275 0.75 0.790541 0.731356 +0.6276 0.75 0.790554 0.731298 +0.6277 0.75 0.790567 0.731241 +0.6278 0.75 0.790579 0.731185 +0.6279 0.75 0.790592 0.731131 +0.628 0.75 0.790604 0.731079 +0.6281 0.75 0.790616 0.731027 +0.6282 0.75 0.790627 0.730978 +0.6283 0.75 0.790639 0.730929 +0.6284 0.75 0.79065 0.730882 +0.6285 0.75 0.790661 0.730837 +0.6286 0.75 0.790672 0.730793 +0.6287 0.75 0.790682 0.73075 +0.6288 0.75 0.790693 0.730709 +0.6289 0.75 0.790703 0.730669 +0.629 0.75 0.790713 0.730631 +0.6291 0.75 0.790723 0.730594 +0.6292 0.75 0.790732 0.730559 +0.6293 0.75 0.790741 0.730525 +0.6294 0.75 0.79075 0.730493 +0.6295 0.75 0.790759 0.730461 +0.6296 0.75 0.790768 0.730432 +0.6297 0.75 0.790776 0.730404 +0.6298 0.75 0.790785 0.730377 +0.6299 0.75 0.790793 0.730352 +0.63 0.75 0.7908 0.730328 +0.6301 0.75 0.790808 0.730306 +0.6302 0.75 0.790815 0.730285 +0.6303 0.75 0.790823 0.730265 +0.6304 0.75 0.790829 0.730247 +0.6305 0.75 0.790836 0.730231 +0.6306 0.75 0.790843 0.730215 +0.6307 0.75 0.790849 0.730202 +0.6308 0.75 0.790855 0.730189 +0.6309 0.75 0.790861 0.730179 +0.631 0.75 0.790867 0.730169 +0.6311 0.75 0.790872 0.730161 +0.6312 0.75 0.790877 0.730155 +0.6313 0.75 0.790882 0.73015 +0.6314 0.75 0.790887 0.730146 +0.6315 0.75 0.790892 0.730144 +0.6316 0.75 0.790896 0.730143 +0.6317 0.75 0.790901 0.730144 +0.6318 0.75 0.790905 0.730146 +0.6319 0.75 0.790908 0.73015 +0.632 0.75 0.790912 0.730155 +0.6321 0.75 0.790915 0.730161 +0.6322 0.75 0.790918 0.730169 +0.6323 0.75 0.790921 0.730178 +0.6324 0.75 0.790924 0.730189 +0.6325 0.75 0.790927 0.730201 +0.6326 0.75 0.790929 0.730215 +0.6327 0.75 0.790931 0.73023 +0.6328 0.75 0.790933 0.730246 +0.6329 0.75 0.790935 0.730264 +0.633 0.75 0.790936 0.730283 +0.6331 0.75 0.790938 0.730303 +0.6332 0.75 0.790939 0.730325 +0.6333 0.75 0.79094 0.730349 +0.6334 0.75 0.79094 0.730373 +0.6335 0.75 0.790941 0.7304 +0.6336 0.75 0.790941 0.730427 +0.6337 0.75 0.790941 0.730456 +0.6338 0.75 0.790941 0.730486 +0.6339 0.75 0.790941 0.730518 +0.634 0.75 0.79094 0.730551 +0.6341 0.75 0.79094 0.730585 +0.6342 0.75 0.790939 0.730621 +0.6343 0.75 0.790937 0.730658 +0.6344 0.75 0.790936 0.730697 +0.6345 0.75 0.790935 0.730737 +0.6346 0.75 0.790933 0.730778 +0.6347 0.75 0.790931 0.73082 +0.6348 0.75 0.790929 0.730864 +0.6349 0.75 0.790926 0.730909 +0.635 0.75 0.790924 0.730956 +0.6351 0.75 0.790921 0.731004 +0.6352 0.75 0.790918 0.731053 +0.6353 0.75 0.790915 0.731103 +0.6354 0.75 0.790912 0.731155 +0.6355 0.75 0.790908 0.731208 +0.6356 0.75 0.790904 0.731263 +0.6357 0.75 0.790901 0.731318 +0.6358 0.75 0.790896 0.731375 +0.6359 0.75 0.790892 0.731433 +0.636 0.75 0.790888 0.731493 +0.6361 0.75 0.790883 0.731554 +0.6362 0.75 0.790878 0.731616 +0.6363 0.75 0.790873 0.731679 +0.6364 0.75 0.790867 0.731744 +0.6365 0.75 0.790862 0.73181 +0.6366 0.75 0.790856 0.731877 +0.6367 0.75 0.79085 0.731945 +0.6368 0.75 0.790844 0.732014 +0.6369 0.75 0.790838 0.732085 +0.637 0.75 0.790832 0.732157 +0.6371 0.75 0.790825 0.73223 +0.6372 0.75 0.790818 0.732305 +0.6373 0.75 0.790811 0.73238 +0.6374 0.75 0.790804 0.732457 +0.6375 0.75 0.790796 0.732535 +0.6376 0.75 0.790789 0.732614 +0.6377 0.75 0.790781 0.732695 +0.6378 0.75 0.790773 0.732776 +0.6379 0.75 0.790764 0.732859 +0.638 0.75 0.790756 0.732942 +0.6381 0.75 0.790747 0.733027 +0.6382 0.75 0.790739 0.733113 +0.6383 0.75 0.79073 0.733201 +0.6384 0.75 0.79072 0.733289 +0.6385 0.75 0.790711 0.733378 +0.6386 0.75 0.790701 0.733469 +0.6387 0.75 0.790692 0.73356 +0.6388 0.75 0.790682 0.733653 +0.6389 0.75 0.790672 0.733747 +0.639 0.75 0.790661 0.733842 +0.6391 0.75 0.790651 0.733938 +0.6392 0.75 0.79064 0.734035 +0.6393 0.75 0.790629 0.734133 +0.6394 0.75 0.790618 0.734232 +0.6395 0.75 0.790607 0.734332 +0.6396 0.75 0.790595 0.734433 +0.6397 0.75 0.790584 0.734535 +0.6398 0.75 0.790572 0.734638 +0.6399 0.75 0.79056 0.734742 +0.64 0.75 0.790548 0.734848 +0.6401 0.75 0.790535 0.734954 +0.6402 0.75 0.790523 0.735061 +0.6403 0.75 0.79051 0.735169 +0.6404 0.75 0.790497 0.735278 +0.6405 0.75 0.790484 0.735388 +0.6406 0.75 0.790471 0.735499 +0.6407 0.75 0.790457 0.735611 +0.6408 0.75 0.790443 0.735723 +0.6409 0.75 0.79043 0.735837 +0.641 0.75 0.790416 0.735951 +0.6411 0.75 0.790401 0.736067 +0.6412 0.75 0.790387 0.736183 +0.6413 0.75 0.790372 0.736301 +0.6414 0.75 0.790358 0.736419 +0.6415 0.75 0.790343 0.736538 +0.6416 0.75 0.790327 0.736657 +0.6417 0.75 0.790312 0.736778 +0.6418 0.75 0.790297 0.736899 +0.6419 0.75 0.790281 0.737022 +0.642 0.75 0.790265 0.737145 +0.6421 0.75 0.790249 0.737269 +0.6422 0.75 0.790233 0.737393 +0.6423 0.75 0.790216 0.737519 +0.6424 0.75 0.7902 0.737645 +0.6425 0.75 0.790183 0.737772 +0.6426 0.75 0.790166 0.7379 +0.6427 0.75 0.790149 0.738028 +0.6428 0.75 0.790132 0.738157 +0.6429 0.75 0.790114 0.738287 +0.643 0.75 0.790096 0.738418 +0.6431 0.75 0.790079 0.738549 +0.6432 0.75 0.790061 0.738681 +0.6433 0.75 0.790042 0.738814 +0.6434 0.75 0.790024 0.738947 +0.6435 0.75 0.790006 0.739081 +0.6436 0.75 0.789987 0.739216 +0.6437 0.75 0.789968 0.739351 +0.6438 0.75 0.789949 0.739487 +0.6439 0.75 0.78993 0.739623 +0.644 0.75 0.78991 0.739761 +0.6441 0.75 0.789891 0.739898 +0.6442 0.75 0.789871 0.740037 +0.6443 0.75 0.789851 0.740175 +0.6444 0.75 0.789831 0.740315 +0.6445 0.75 0.78981 0.740455 +0.6446 0.75 0.78979 0.740595 +0.6447 0.75 0.789769 0.740737 +0.6448 0.75 0.789749 0.740878 +0.6449 0.75 0.789728 0.74102 +0.645 0.75 0.789706 0.741163 +0.6451 0.75 0.789685 0.741306 +0.6452 0.75 0.789664 0.741449 +0.6453 0.75 0.789642 0.741594 +0.6454 0.75 0.78962 0.741738 +0.6455 0.75 0.789598 0.741883 +0.6456 0.75 0.789576 0.742028 +0.6457 0.75 0.789554 0.742174 +0.6458 0.75 0.789531 0.74232 +0.6459 0.75 0.789508 0.742467 +0.646 0.75 0.789485 0.742614 +0.6461 0.75 0.789462 0.742761 +0.6462 0.75 0.789439 0.742909 +0.6463 0.75 0.789416 0.743057 +0.6464 0.75 0.789392 0.743205 +0.6465 0.75 0.789369 0.743354 +0.6466 0.75 0.789345 0.743503 +0.6467 0.75 0.789321 0.743653 +0.6468 0.75 0.789297 0.743802 +0.6469 0.75 0.789272 0.743952 +0.647 0.75 0.789248 0.744103 +0.6471 0.75 0.789223 0.744253 +0.6472 0.75 0.789198 0.744404 +0.6473 0.75 0.789173 0.744555 +0.6474 0.75 0.789148 0.744706 +0.6475 0.75 0.789123 0.744858 +0.6476 0.75 0.789097 0.74501 +0.6477 0.75 0.789071 0.745161 +0.6478 0.75 0.789046 0.745314 +0.6479 0.75 0.78902 0.745466 +0.648 0.75 0.788993 0.745618 +0.6481 0.75 0.788967 0.745771 +0.6482 0.75 0.788941 0.745924 +0.6483 0.75 0.788914 0.746076 +0.6484 0.75 0.788887 0.746229 +0.6485 0.75 0.78886 0.746383 +0.6486 0.75 0.788833 0.746536 +0.6487 0.75 0.788806 0.746689 +0.6488 0.75 0.788778 0.746842 +0.6489 0.75 0.788751 0.746996 +0.649 0.75 0.788723 0.747149 +0.6491 0.75 0.788695 0.747303 +0.6492 0.75 0.788667 0.747456 +0.6493 0.75 0.788638 0.74761 +0.6494 0.75 0.78861 0.747763 +0.6495 0.75 0.788581 0.747917 +0.6496 0.75 0.788553 0.748071 +0.6497 0.75 0.788524 0.748224 +0.6498 0.75 0.788495 0.748378 +0.6499 0.75 0.788466 0.748531 +0.65 0.75 0.788436 0.748684 +0.6501 0.75 0.788407 0.748838 +0.6502 0.75 0.788377 0.748991 +0.6503 0.75 0.788347 0.749144 +0.6504 0.75 0.788317 0.749297 +0.6505 0.75 0.788287 0.74945 +0.6506 0.75 0.788257 0.749603 +0.6507 0.75 0.788226 0.749756 +0.6508 0.75 0.788196 0.749908 +0.6509 0.75 0.788165 0.75006 +0.651 0.75 0.788134 0.750213 +0.6511 0.75 0.788103 0.750365 +0.6512 0.75 0.788072 0.750516 +0.6513 0.75 0.78804 0.750668 +0.6514 0.75 0.788009 0.75082 +0.6515 0.75 0.787977 0.750971 +0.6516 0.75 0.787945 0.751122 +0.6517 0.75 0.787913 0.751272 +0.6518 0.75 0.787881 0.751423 +0.6519 0.75 0.787849 0.751573 +0.652 0.75 0.787816 0.751723 +0.6521 0.75 0.787784 0.751873 +0.6522 0.75 0.787751 0.752022 +0.6523 0.75 0.787718 0.752171 +0.6524 0.75 0.787685 0.75232 +0.6525 0.75 0.787652 0.752468 +0.6526 0.75 0.787619 0.752616 +0.6527 0.75 0.787585 0.752764 +0.6528 0.75 0.787552 0.752911 +0.6529 0.75 0.787518 0.753058 +0.653 0.75 0.787484 0.753204 +0.6531 0.75 0.78745 0.75335 +0.6532 0.75 0.787416 0.753496 +0.6533 0.75 0.787381 0.753642 +0.6534 0.75 0.787347 0.753786 +0.6535 0.75 0.787312 0.753931 +0.6536 0.75 0.787277 0.754075 +0.6537 0.75 0.787242 0.754218 +0.6538 0.75 0.787207 0.754362 +0.6539 0.75 0.787172 0.754504 +0.654 0.75 0.787137 0.754646 +0.6541 0.75 0.787101 0.754788 +0.6542 0.75 0.787066 0.754929 +0.6543 0.75 0.78703 0.75507 +0.6544 0.75 0.786994 0.75521 +0.6545 0.75 0.786958 0.755349 +0.6546 0.75 0.786921 0.755488 +0.6547 0.75 0.786885 0.755627 +0.6548 0.75 0.786849 0.755765 +0.6549 0.75 0.786812 0.755902 +0.655 0.75 0.786775 0.756039 +0.6551 0.75 0.786738 0.756175 +0.6552 0.75 0.786701 0.756311 +0.6553 0.75 0.786664 0.756445 +0.6554 0.75 0.786626 0.75658 +0.6555 0.75 0.786589 0.756713 +0.6556 0.75 0.786551 0.756847 +0.6557 0.75 0.786514 0.756979 +0.6558 0.75 0.786476 0.757111 +0.6559 0.75 0.786438 0.757242 +0.656 0.75 0.786399 0.757372 +0.6561 0.75 0.786361 0.757502 +0.6562 0.75 0.786323 0.757631 +0.6563 0.75 0.786284 0.757759 +0.6564 0.75 0.786245 0.757887 +0.6565 0.75 0.786206 0.758014 +0.6566 0.75 0.786167 0.75814 +0.6567 0.75 0.786128 0.758265 +0.6568 0.75 0.786089 0.75839 +0.6569 0.75 0.786049 0.758514 +0.657 0.75 0.78601 0.758637 +0.6571 0.75 0.78597 0.758759 +0.6572 0.75 0.78593 0.758881 +0.6573 0.75 0.78589 0.759002 +0.6574 0.75 0.78585 0.759122 +0.6575 0.75 0.78581 0.759241 +0.6576 0.75 0.78577 0.759359 +0.6577 0.75 0.785729 0.759477 +0.6578 0.75 0.785689 0.759594 +0.6579 0.75 0.785648 0.75971 +0.658 0.75 0.785607 0.759825 +0.6581 0.75 0.785566 0.759939 +0.6582 0.75 0.785525 0.760052 +0.6583 0.75 0.785484 0.760165 +0.6584 0.75 0.785442 0.760276 +0.6585 0.75 0.785401 0.760387 +0.6586 0.75 0.785359 0.760497 +0.6587 0.75 0.785317 0.760606 +0.6588 0.75 0.785275 0.760714 +0.6589 0.75 0.785233 0.760821 +0.659 0.75 0.785191 0.760927 +0.6591 0.75 0.785149 0.761032 +0.6592 0.75 0.785106 0.761137 +0.6593 0.75 0.785064 0.76124 +0.6594 0.75 0.785021 0.761343 +0.6595 0.75 0.784978 0.761444 +0.6596 0.75 0.784935 0.761545 +0.6597 0.75 0.784892 0.761644 +0.6598 0.75 0.784849 0.761743 +0.6599 0.75 0.784806 0.76184 +0.66 0.75 0.784762 0.761937 +0.6601 0.75 0.784719 0.762033 +0.6602 0.75 0.784675 0.762127 +0.6603 0.75 0.784631 0.762221 +0.6604 0.75 0.784587 0.762314 +0.6605 0.75 0.784543 0.762405 +0.6606 0.75 0.784499 0.762496 +0.6607 0.75 0.784455 0.762586 +0.6608 0.75 0.78441 0.762674 +0.6609 0.75 0.784366 0.762762 +0.661 0.75 0.784321 0.762848 +0.6611 0.75 0.784276 0.762933 +0.6612 0.75 0.784231 0.763018 +0.6613 0.75 0.784186 0.763101 +0.6614 0.75 0.784141 0.763183 +0.6615 0.75 0.784096 0.763264 +0.6616 0.75 0.78405 0.763344 +0.6617 0.75 0.784005 0.763423 +0.6618 0.75 0.783959 0.763501 +0.6619 0.75 0.783913 0.763578 +0.662 0.75 0.783868 0.763654 +0.6621 0.75 0.783822 0.763728 +0.6622 0.75 0.783775 0.763802 +0.6623 0.75 0.783729 0.763874 +0.6624 0.75 0.783683 0.763946 +0.6625 0.75 0.783636 0.764016 +0.6626 0.75 0.78359 0.764085 +0.6627 0.75 0.783543 0.764153 +0.6628 0.75 0.783496 0.76422 +0.6629 0.75 0.783449 0.764285 +0.663 0.75 0.783402 0.76435 +0.6631 0.75 0.783355 0.764413 +0.6632 0.75 0.783308 0.764475 +0.6633 0.75 0.783261 0.764536 +0.6634 0.75 0.783213 0.764596 +0.6635 0.75 0.783165 0.764655 +0.6636 0.75 0.783118 0.764713 +0.6637 0.75 0.78307 0.764769 +0.6638 0.75 0.783022 0.764824 +0.6639 0.75 0.782974 0.764878 +0.664 0.75 0.782926 0.764931 +0.6641 0.75 0.782877 0.764983 +0.6642 0.75 0.782829 0.765034 +0.6643 0.75 0.78278 0.765083 +0.6644 0.75 0.782732 0.765131 +0.6645 0.75 0.782683 0.765178 +0.6646 0.75 0.782634 0.765224 +0.6647 0.75 0.782585 0.765269 +0.6648 0.75 0.782536 0.765312 +0.6649 0.75 0.782487 0.765354 +0.665 0.75 0.782438 0.765395 +0.6651 0.75 0.782388 0.765435 +0.6652 0.75 0.782339 0.765474 +0.6653 0.75 0.782289 0.765511 +0.6654 0.75 0.78224 0.765547 +0.6655 0.75 0.78219 0.765582 +0.6656 0.75 0.78214 0.765616 +0.6657 0.75 0.78209 0.765649 +0.6658 0.75 0.78204 0.76568 +0.6659 0.75 0.78199 0.76571 +0.666 0.75 0.781939 0.765739 +0.6661 0.75 0.781889 0.765767 +0.6662 0.75 0.781838 0.765793 +0.6663 0.75 0.781788 0.765819 +0.6664 0.75 0.781737 0.765843 +0.6665 0.75 0.781686 0.765866 +0.6666 0.75 0.781635 0.765887 +0.6667 0.75 0.781584 0.765908 +0.6668 0.75 0.781533 0.765927 +0.6669 0.75 0.781481 0.765945 +0.667 0.75 0.78143 0.765962 +0.6671 0.75 0.781379 0.765977 +0.6672 0.75 0.781327 0.765991 +0.6673 0.75 0.781275 0.766004 +0.6674 0.75 0.781224 0.766016 +0.6675 0.75 0.781172 0.766027 +0.6676 0.75 0.78112 0.766036 +0.6677 0.75 0.781068 0.766044 +0.6678 0.75 0.781015 0.766051 +0.6679 0.75 0.780963 0.766057 +0.668 0.75 0.780911 0.766062 +0.6681 0.75 0.780858 0.766065 +0.6682 0.75 0.780806 0.766067 +0.6683 0.75 0.780753 0.766068 +0.6684 0.75 0.7807 0.766068 +0.6685 0.75 0.780647 0.766066 +0.6686 0.75 0.780595 0.766063 +0.6687 0.75 0.780541 0.766059 +0.6688 0.75 0.780488 0.766054 +0.6689 0.75 0.780435 0.766047 +0.669 0.75 0.780382 0.76604 +0.6691 0.75 0.780328 0.766031 +0.6692 0.75 0.780275 0.766021 +0.6693 0.75 0.780221 0.76601 +0.6694 0.75 0.780167 0.765997 +0.6695 0.75 0.780114 0.765983 +0.6696 0.75 0.78006 0.765969 +0.6697 0.75 0.780006 0.765952 +0.6698 0.75 0.779952 0.765935 +0.6699 0.75 0.779897 0.765917 +0.67 0.75 0.779843 0.765897 +0.6701 0.75 0.779789 0.765876 +0.6702 0.75 0.779734 0.765854 +0.6703 0.75 0.77968 0.765831 +0.6704 0.75 0.779625 0.765807 +0.6705 0.75 0.77957 0.765781 +0.6706 0.75 0.779516 0.765754 +0.6707 0.75 0.779461 0.765726 +0.6708 0.75 0.779406 0.765697 +0.6709 0.75 0.779351 0.765667 +0.671 0.75 0.779295 0.765636 +0.6711 0.75 0.77924 0.765603 +0.6712 0.75 0.779185 0.765569 +0.6713 0.75 0.779129 0.765534 +0.6714 0.75 0.779074 0.765498 +0.6715 0.75 0.779018 0.765461 +0.6716 0.75 0.778963 0.765423 +0.6717 0.75 0.778907 0.765383 +0.6718 0.75 0.778851 0.765343 +0.6719 0.75 0.778795 0.765301 +0.672 0.75 0.778739 0.765258 +0.6721 0.75 0.778683 0.765214 +0.6722 0.75 0.778627 0.765169 +0.6723 0.75 0.77857 0.765123 +0.6724 0.75 0.778514 0.765076 +0.6725 0.75 0.778457 0.765027 +0.6726 0.75 0.778401 0.764978 +0.6727 0.75 0.778344 0.764927 +0.6728 0.75 0.778288 0.764875 +0.6729 0.75 0.778231 0.764823 +0.673 0.75 0.778174 0.764769 +0.6731 0.75 0.778117 0.764714 +0.6732 0.75 0.77806 0.764658 +0.6733 0.75 0.778003 0.764601 +0.6734 0.75 0.777946 0.764542 +0.6735 0.75 0.777888 0.764483 +0.6736 0.75 0.777831 0.764423 +0.6737 0.75 0.777774 0.764362 +0.6738 0.75 0.777716 0.764299 +0.6739 0.75 0.777658 0.764236 +0.674 0.75 0.777601 0.764172 +0.6741 0.75 0.777543 0.764106 +0.6742 0.75 0.777485 0.76404 +0.6743 0.75 0.777427 0.763972 +0.6744 0.75 0.777369 0.763904 +0.6745 0.75 0.777311 0.763834 +0.6746 0.75 0.777253 0.763764 +0.6747 0.75 0.777195 0.763692 +0.6748 0.75 0.777137 0.76362 +0.6749 0.75 0.777078 0.763547 +0.675 0.75 0.77702 0.763472 +0.6751 0.75 0.776961 0.763397 +0.6752 0.75 0.776903 0.763321 +0.6753 0.75 0.776844 0.763243 +0.6754 0.75 0.776785 0.763165 +0.6755 0.75 0.776727 0.763086 +0.6756 0.75 0.776668 0.763006 +0.6757 0.75 0.776609 0.762925 +0.6758 0.75 0.77655 0.762843 +0.6759 0.75 0.776491 0.76276 +0.676 0.75 0.776431 0.762677 +0.6761 0.75 0.776372 0.762592 +0.6762 0.75 0.776313 0.762507 +0.6763 0.75 0.776254 0.76242 +0.6764 0.75 0.776194 0.762333 +0.6765 0.75 0.776135 0.762245 +0.6766 0.75 0.776075 0.762156 +0.6767 0.75 0.776015 0.762066 +0.6768 0.75 0.775956 0.761976 +0.6769 0.75 0.775896 0.761884 +0.677 0.75 0.775836 0.761792 +0.6771 0.75 0.775776 0.761699 +0.6772 0.75 0.775716 0.761605 +0.6773 0.75 0.775656 0.76151 +0.6774 0.75 0.775596 0.761415 +0.6775 0.75 0.775536 0.761318 +0.6776 0.75 0.775475 0.761221 +0.6777 0.75 0.775415 0.761123 +0.6778 0.75 0.775355 0.761025 +0.6779 0.75 0.775294 0.760925 +0.678 0.75 0.775234 0.760825 +0.6781 0.75 0.775173 0.760724 +0.6782 0.75 0.775112 0.760623 +0.6783 0.75 0.775052 0.76052 +0.6784 0.75 0.774991 0.760417 +0.6785 0.75 0.77493 0.760313 +0.6786 0.75 0.774869 0.760209 +0.6787 0.75 0.774808 0.760104 +0.6788 0.75 0.774747 0.759998 +0.6789 0.75 0.774686 0.759891 +0.679 0.75 0.774625 0.759784 +0.6791 0.75 0.774563 0.759676 +0.6792 0.75 0.774502 0.759568 +0.6793 0.75 0.774441 0.759459 +0.6794 0.75 0.774379 0.759349 +0.6795 0.75 0.774318 0.759238 +0.6796 0.75 0.774256 0.759127 +0.6797 0.75 0.774195 0.759016 +0.6798 0.75 0.774133 0.758904 +0.6799 0.75 0.774071 0.758791 +0.68 0.75 0.77401 0.758678 +0.6801 0.75 0.773948 0.758564 +0.6802 0.75 0.773886 0.758449 +0.6803 0.75 0.773824 0.758334 +0.6804 0.75 0.773762 0.758218 +0.6805 0.75 0.7737 0.758102 +0.6806 0.75 0.773638 0.757986 +0.6807 0.75 0.773576 0.757869 +0.6808 0.75 0.773514 0.757751 +0.6809 0.75 0.773451 0.757633 +0.681 0.75 0.773389 0.757514 +0.6811 0.75 0.773327 0.757395 +0.6812 0.75 0.773264 0.757276 +0.6813 0.75 0.773202 0.757156 +0.6814 0.75 0.773139 0.757035 +0.6815 0.75 0.773077 0.756914 +0.6816 0.75 0.773014 0.756793 +0.6817 0.75 0.772951 0.756671 +0.6818 0.75 0.772888 0.756549 +0.6819 0.75 0.772826 0.756426 +0.682 0.75 0.772763 0.756304 +0.6821 0.75 0.7727 0.75618 +0.6822 0.75 0.772637 0.756057 +0.6823 0.75 0.772574 0.755933 +0.6824 0.75 0.772511 0.755808 +0.6825 0.75 0.772448 0.755683 +0.6826 0.75 0.772385 0.755558 +0.6827 0.75 0.772321 0.755433 +0.6828 0.75 0.772258 0.755307 +0.6829 0.75 0.772195 0.755181 +0.683 0.75 0.772131 0.755055 +0.6831 0.75 0.772068 0.754929 +0.6832 0.75 0.772005 0.754802 +0.6833 0.75 0.771941 0.754675 +0.6834 0.75 0.771878 0.754547 +0.6835 0.75 0.771814 0.75442 +0.6836 0.75 0.77175 0.754292 +0.6837 0.75 0.771687 0.754164 +0.6838 0.75 0.771623 0.754036 +0.6839 0.75 0.771559 0.753907 +0.684 0.75 0.771495 0.753779 +0.6841 0.75 0.771431 0.75365 +0.6842 0.75 0.771367 0.753521 +0.6843 0.75 0.771304 0.753392 +0.6844 0.75 0.77124 0.753262 +0.6845 0.75 0.771176 0.753133 +0.6846 0.75 0.771111 0.753003 +0.6847 0.75 0.771047 0.752874 +0.6848 0.75 0.770983 0.752744 +0.6849 0.75 0.770919 0.752614 +0.685 0.75 0.770855 0.752484 +0.6851 0.75 0.77079 0.752354 +0.6852 0.75 0.770726 0.752224 +0.6853 0.75 0.770662 0.752094 +0.6854 0.75 0.770597 0.751964 +0.6855 0.75 0.770533 0.751833 +0.6856 0.75 0.770468 0.751703 +0.6857 0.75 0.770404 0.751573 +0.6858 0.75 0.770339 0.751442 +0.6859 0.75 0.770275 0.751312 +0.686 0.75 0.77021 0.751182 +0.6861 0.75 0.770145 0.751051 +0.6862 0.75 0.77008 0.750921 +0.6863 0.75 0.770016 0.750791 +0.6864 0.75 0.769951 0.750661 +0.6865 0.75 0.769886 0.750531 +0.6866 0.75 0.769821 0.750401 +0.6867 0.75 0.769756 0.750271 +0.6868 0.75 0.769691 0.750141 +0.6869 0.75 0.769626 0.750011 +0.687 0.75 0.769561 0.749881 +0.6871 0.75 0.769496 0.749752 +0.6872 0.75 0.769431 0.749623 +0.6873 0.75 0.769366 0.749493 +0.6874 0.75 0.769301 0.749364 +0.6875 0.75 0.769236 0.749235 +0.6876 0.75 0.769171 0.749106 +0.6877 0.75 0.769105 0.748978 +0.6878 0.75 0.76904 0.748849 +0.6879 0.75 0.768975 0.748721 +0.688 0.75 0.768909 0.748593 +0.6881 0.75 0.768844 0.748466 +0.6882 0.75 0.768779 0.748338 +0.6883 0.75 0.768713 0.748211 +0.6884 0.75 0.768648 0.748084 +0.6885 0.75 0.768582 0.747957 +0.6886 0.75 0.768517 0.74783 +0.6887 0.75 0.768451 0.747704 +0.6888 0.75 0.768385 0.747578 +0.6889 0.75 0.76832 0.747453 +0.689 0.75 0.768254 0.747327 +0.6891 0.75 0.768188 0.747202 +0.6892 0.75 0.768123 0.747077 +0.6893 0.75 0.768057 0.746953 +0.6894 0.75 0.767991 0.746829 +0.6895 0.75 0.767925 0.746705 +0.6896 0.75 0.76786 0.746582 +0.6897 0.75 0.767794 0.746459 +0.6898 0.75 0.767728 0.746337 +0.6899 0.75 0.767662 0.746215 +0.69 0.75 0.767596 0.746093 +0.6901 0.75 0.76753 0.745971 +0.6902 0.75 0.767464 0.745851 +0.6903 0.75 0.767398 0.74573 +0.6904 0.75 0.767332 0.74561 +0.6905 0.75 0.767266 0.74549 +0.6906 0.75 0.7672 0.745371 +0.6907 0.75 0.767134 0.745253 +0.6908 0.75 0.767068 0.745134 +0.6909 0.75 0.767002 0.745017 +0.691 0.75 0.766936 0.744899 +0.6911 0.75 0.76687 0.744783 +0.6912 0.75 0.766803 0.744666 +0.6913 0.75 0.766737 0.744551 +0.6914 0.75 0.766671 0.744436 +0.6915 0.75 0.766605 0.744321 +0.6916 0.75 0.766538 0.744207 +0.6917 0.75 0.766472 0.744093 +0.6918 0.75 0.766406 0.74398 +0.6919 0.75 0.766339 0.743868 +0.692 0.75 0.766273 0.743756 +0.6921 0.75 0.766207 0.743645 +0.6922 0.75 0.76614 0.743534 +0.6923 0.75 0.766074 0.743424 +0.6924 0.75 0.766007 0.743315 +0.6925 0.75 0.765941 0.743206 +0.6926 0.75 0.765875 0.743098 +0.6927 0.75 0.765808 0.74299 +0.6928 0.75 0.765742 0.742883 +0.6929 0.75 0.765675 0.742777 +0.693 0.75 0.765608 0.742671 +0.6931 0.75 0.765542 0.742566 +0.6932 0.75 0.765475 0.742462 +0.6933 0.75 0.765409 0.742358 +0.6934 0.75 0.765342 0.742255 +0.6935 0.75 0.765276 0.742153 +0.6936 0.75 0.765209 0.742052 +0.6937 0.75 0.765142 0.741951 +0.6938 0.75 0.765076 0.741851 +0.6939 0.75 0.765009 0.741752 +0.694 0.75 0.764942 0.741653 +0.6941 0.75 0.764876 0.741555 +0.6942 0.75 0.764809 0.741458 +0.6943 0.75 0.764742 0.741362 +0.6944 0.75 0.764676 0.741266 +0.6945 0.75 0.764609 0.741171 +0.6946 0.75 0.764542 0.741077 +0.6947 0.75 0.764475 0.740984 +0.6948 0.75 0.764409 0.740891 +0.6949 0.75 0.764342 0.7408 +0.695 0.75 0.764275 0.740709 +0.6951 0.75 0.764208 0.740619 +0.6952 0.75 0.764142 0.74053 +0.6953 0.75 0.764075 0.740441 +0.6954 0.75 0.764008 0.740354 +0.6955 0.75 0.763941 0.740267 +0.6956 0.75 0.763874 0.740181 +0.6957 0.75 0.763808 0.740096 +0.6958 0.75 0.763741 0.740012 +0.6959 0.75 0.763674 0.739928 +0.696 0.75 0.763607 0.739846 +0.6961 0.75 0.76354 0.739764 +0.6962 0.75 0.763473 0.739684 +0.6963 0.75 0.763406 0.739604 +0.6964 0.75 0.76334 0.739525 +0.6965 0.75 0.763273 0.739447 +0.6966 0.75 0.763206 0.73937 +0.6967 0.75 0.763139 0.739294 +0.6968 0.75 0.763072 0.739218 +0.6969 0.75 0.763005 0.739144 +0.697 0.75 0.762938 0.73907 +0.6971 0.75 0.762871 0.738998 +0.6972 0.75 0.762805 0.738926 +0.6973 0.75 0.762738 0.738856 +0.6974 0.75 0.762671 0.738786 +0.6975 0.75 0.762604 0.738717 +0.6976 0.75 0.762537 0.738649 +0.6977 0.75 0.76247 0.738582 +0.6978 0.75 0.762403 0.738517 +0.6979 0.75 0.762336 0.738452 +0.698 0.75 0.762269 0.738388 +0.6981 0.75 0.762202 0.738325 +0.6982 0.75 0.762136 0.738263 +0.6983 0.75 0.762069 0.738202 +0.6984 0.75 0.762002 0.738142 +0.6985 0.75 0.761935 0.738083 +0.6986 0.75 0.761868 0.738025 +0.6987 0.75 0.761801 0.737968 +0.6988 0.75 0.761734 0.737912 +0.6989 0.75 0.761667 0.737857 +0.699 0.75 0.7616 0.737803 +0.6991 0.75 0.761533 0.73775 +0.6992 0.75 0.761467 0.737698 +0.6993 0.75 0.7614 0.737647 +0.6994 0.75 0.761333 0.737597 +0.6995 0.75 0.761266 0.737548 +0.6996 0.75 0.761199 0.7375 +0.6997 0.75 0.761132 0.737453 +0.6998 0.75 0.761065 0.737408 +0.6999 0.75 0.760999 0.737363 +0.7 0.75 0.760932 0.737319 +0.7001 0.75 0.760865 0.737277 +0.7002 0.75 0.760798 0.737235 +0.7003 0.75 0.760731 0.737194 +0.7004 0.75 0.760665 0.737155 +0.7005 0.75 0.760598 0.737117 +0.7006 0.75 0.760531 0.737079 +0.7007 0.75 0.760464 0.737043 +0.7008 0.75 0.760397 0.737008 +0.7009 0.75 0.760331 0.736974 +0.701 0.75 0.760264 0.736941 +0.7011 0.75 0.760197 0.736909 +0.7012 0.75 0.76013 0.736878 +0.7013 0.75 0.760064 0.736848 +0.7014 0.75 0.759997 0.736819 +0.7015 0.75 0.75993 0.736791 +0.7016 0.75 0.759864 0.736765 +0.7017 0.75 0.759797 0.736739 +0.7018 0.75 0.75973 0.736715 +0.7019 0.75 0.759664 0.736691 +0.702 0.75 0.759597 0.736669 +0.7021 0.75 0.75953 0.736648 +0.7022 0.75 0.759464 0.736628 +0.7023 0.75 0.759397 0.736609 +0.7024 0.75 0.75933 0.736591 +0.7025 0.75 0.759264 0.736574 +0.7026 0.75 0.759197 0.736559 +0.7027 0.75 0.759131 0.736544 +0.7028 0.75 0.759064 0.73653 +0.7029 0.75 0.758998 0.736518 +0.703 0.75 0.758931 0.736507 +0.7031 0.75 0.758865 0.736496 +0.7032 0.75 0.758798 0.736487 +0.7033 0.75 0.758732 0.736479 +0.7034 0.75 0.758665 0.736472 +0.7035 0.75 0.758599 0.736466 +0.7036 0.75 0.758533 0.736461 +0.7037 0.75 0.758466 0.736458 +0.7038 0.75 0.7584 0.736455 +0.7039 0.75 0.758333 0.736454 +0.704 0.75 0.758267 0.736453 +0.7041 0.75 0.758201 0.736454 +0.7042 0.75 0.758134 0.736456 +0.7043 0.75 0.758068 0.736459 +0.7044 0.75 0.758002 0.736463 +0.7045 0.75 0.757936 0.736468 +0.7046 0.75 0.757869 0.736474 +0.7047 0.75 0.757803 0.736481 +0.7048 0.75 0.757737 0.736489 +0.7049 0.75 0.757671 0.736499 +0.705 0.75 0.757605 0.736509 +0.7051 0.75 0.757539 0.736521 +0.7052 0.75 0.757473 0.736533 +0.7053 0.75 0.757407 0.736547 +0.7054 0.75 0.757341 0.736562 +0.7055 0.75 0.757274 0.736578 +0.7056 0.75 0.757209 0.736595 +0.7057 0.75 0.757143 0.736613 +0.7058 0.75 0.757077 0.736632 +0.7059 0.75 0.757011 0.736652 +0.706 0.75 0.756945 0.736673 +0.7061 0.75 0.756879 0.736695 +0.7062 0.75 0.756813 0.736719 +0.7063 0.75 0.756747 0.736743 +0.7064 0.75 0.756681 0.736768 +0.7065 0.75 0.756616 0.736795 +0.7066 0.75 0.75655 0.736823 +0.7067 0.75 0.756484 0.736851 +0.7068 0.75 0.756418 0.736881 +0.7069 0.75 0.756353 0.736911 +0.707 0.75 0.756287 0.736943 +0.7071 0.75 0.756221 0.736976 +0.7072 0.75 0.756156 0.73701 +0.7073 0.75 0.75609 0.737044 +0.7074 0.75 0.756025 0.73708 +0.7075 0.75 0.755959 0.737117 +0.7076 0.75 0.755894 0.737155 +0.7077 0.75 0.755828 0.737194 +0.7078 0.75 0.755763 0.737234 +0.7079 0.75 0.755698 0.737275 +0.708 0.75 0.755632 0.737316 +0.7081 0.75 0.755567 0.737359 +0.7082 0.75 0.755502 0.737403 +0.7083 0.75 0.755436 0.737448 +0.7084 0.75 0.755371 0.737494 +0.7085 0.75 0.755306 0.737541 +0.7086 0.75 0.755241 0.737589 +0.7087 0.75 0.755176 0.737637 +0.7088 0.75 0.75511 0.737687 +0.7089 0.75 0.755045 0.737738 +0.709 0.75 0.75498 0.73779 +0.7091 0.75 0.754915 0.737842 +0.7092 0.75 0.75485 0.737896 +0.7093 0.75 0.754785 0.73795 +0.7094 0.75 0.754721 0.738006 +0.7095 0.75 0.754656 0.738062 +0.7096 0.75 0.754591 0.73812 +0.7097 0.75 0.754526 0.738178 +0.7098 0.75 0.754461 0.738237 +0.7099 0.75 0.754396 0.738297 +0.71 0.75 0.754332 0.738358 +0.7101 0.75 0.754267 0.73842 +0.7102 0.75 0.754203 0.738483 +0.7103 0.75 0.754138 0.738547 +0.7104 0.75 0.754073 0.738611 +0.7105 0.75 0.754009 0.738677 +0.7106 0.75 0.753944 0.738743 +0.7107 0.75 0.75388 0.73881 +0.7108 0.75 0.753816 0.738878 +0.7109 0.75 0.753751 0.738947 +0.711 0.75 0.753687 0.739017 +0.7111 0.75 0.753623 0.739088 +0.7112 0.75 0.753558 0.739159 +0.7113 0.75 0.753494 0.739231 +0.7114 0.75 0.75343 0.739304 +0.7115 0.75 0.753366 0.739378 +0.7116 0.75 0.753302 0.739453 +0.7117 0.75 0.753238 0.739529 +0.7118 0.75 0.753174 0.739605 +0.7119 0.75 0.75311 0.739682 +0.712 0.75 0.753046 0.73976 +0.7121 0.75 0.752982 0.739839 +0.7122 0.75 0.752918 0.739918 +0.7123 0.75 0.752854 0.739999 +0.7124 0.75 0.75279 0.74008 +0.7125 0.75 0.752727 0.740162 +0.7126 0.75 0.752663 0.740244 +0.7127 0.75 0.752599 0.740327 +0.7128 0.75 0.752536 0.740411 +0.7129 0.75 0.752472 0.740496 +0.713 0.75 0.752409 0.740581 +0.7131 0.75 0.752345 0.740668 +0.7132 0.75 0.752282 0.740754 +0.7133 0.75 0.752219 0.740842 +0.7134 0.75 0.752155 0.74093 +0.7135 0.75 0.752092 0.741019 +0.7136 0.75 0.752029 0.741109 +0.7137 0.75 0.751966 0.741199 +0.7138 0.75 0.751902 0.74129 +0.7139 0.75 0.751839 0.741381 +0.714 0.75 0.751776 0.741474 +0.7141 0.75 0.751713 0.741566 +0.7142 0.75 0.75165 0.74166 +0.7143 0.75 0.751587 0.741754 +0.7144 0.75 0.751525 0.741849 +0.7145 0.75 0.751462 0.741944 +0.7146 0.75 0.751399 0.74204 +0.7147 0.75 0.751336 0.742136 +0.7148 0.75 0.751274 0.742233 +0.7149 0.75 0.751211 0.742331 +0.715 0.75 0.751148 0.742429 +0.7151 0.75 0.751086 0.742528 +0.7152 0.75 0.751023 0.742627 +0.7153 0.75 0.750961 0.742727 +0.7154 0.75 0.750899 0.742827 +0.7155 0.75 0.750836 0.742928 +0.7156 0.75 0.750774 0.743029 +0.7157 0.75 0.750712 0.743131 +0.7158 0.75 0.75065 0.743233 +0.7159 0.75 0.750588 0.743336 +0.716 0.75 0.750526 0.743439 +0.7161 0.75 0.750464 0.743543 +0.7162 0.75 0.750402 0.743647 +0.7163 0.75 0.75034 0.743752 +0.7164 0.75 0.750278 0.743857 +0.7165 0.75 0.750216 0.743963 +0.7166 0.75 0.750154 0.744069 +0.7167 0.75 0.750093 0.744175 +0.7168 0.75 0.750031 0.744282 +0.7169 0.75 0.749969 0.744389 +0.717 0.75 0.749908 0.744496 +0.7171 0.75 0.749846 0.744604 +0.7172 0.75 0.749785 0.744713 +0.7173 0.75 0.749724 0.744821 +0.7174 0.75 0.749662 0.74493 +0.7175 0.75 0.749601 0.74504 +0.7176 0.75 0.74954 0.745149 +0.7177 0.75 0.749479 0.745259 +0.7178 0.75 0.749418 0.74537 +0.7179 0.75 0.749357 0.74548 +0.718 0.75 0.749296 0.745591 +0.7181 0.75 0.749235 0.745702 +0.7182 0.75 0.749174 0.745814 +0.7183 0.75 0.749113 0.745926 +0.7184 0.75 0.749052 0.746038 +0.7185 0.75 0.748992 0.74615 +0.7186 0.75 0.748931 0.746262 +0.7187 0.75 0.74887 0.746375 +0.7188 0.75 0.74881 0.746488 +0.7189 0.75 0.74875 0.746601 +0.719 0.75 0.748689 0.746715 +0.7191 0.75 0.748629 0.746828 +0.7192 0.75 0.748569 0.746942 +0.7193 0.75 0.748508 0.747056 +0.7194 0.75 0.748448 0.74717 +0.7195 0.75 0.748388 0.747284 +0.7196 0.75 0.748328 0.747398 +0.7197 0.75 0.748268 0.747513 +0.7198 0.75 0.748208 0.747627 +0.7199 0.75 0.748148 0.747742 +0.72 0.75 0.748089 0.747857 +0.7201 0.75 0.748029 0.747972 +0.7202 0.75 0.747969 0.748087 +0.7203 0.75 0.74791 0.748202 +0.7204 0.75 0.74785 0.748317 +0.7205 0.75 0.747791 0.748432 +0.7206 0.75 0.747731 0.748548 +0.7207 0.75 0.747672 0.748663 +0.7208 0.75 0.747613 0.748778 +0.7209 0.75 0.747553 0.748894 +0.721 0.75 0.747494 0.749009 +0.7211 0.75 0.747435 0.749124 +0.7212 0.75 0.747376 0.74924 +0.7213 0.75 0.747317 0.749355 +0.7214 0.75 0.747258 0.74947 +0.7215 0.75 0.747199 0.749586 +0.7216 0.75 0.747141 0.749701 +0.7217 0.75 0.747082 0.749816 +0.7218 0.75 0.747023 0.749931 +0.7219 0.75 0.746965 0.750046 +0.722 0.75 0.746906 0.750161 +0.7221 0.75 0.746848 0.750276 +0.7222 0.75 0.74679 0.750391 +0.7223 0.75 0.746731 0.750505 +0.7224 0.75 0.746673 0.75062 +0.7225 0.75 0.746615 0.750734 +0.7226 0.75 0.746557 0.750848 +0.7227 0.75 0.746499 0.750962 +0.7228 0.75 0.746441 0.751076 +0.7229 0.75 0.746383 0.75119 +0.723 0.75 0.746325 0.751304 +0.7231 0.75 0.746267 0.751417 +0.7232 0.75 0.74621 0.75153 +0.7233 0.75 0.746152 0.751643 +0.7234 0.75 0.746095 0.751756 +0.7235 0.75 0.746037 0.751868 +0.7236 0.75 0.74598 0.751981 +0.7237 0.75 0.745922 0.752093 +0.7238 0.75 0.745865 0.752205 +0.7239 0.75 0.745808 0.752316 +0.724 0.75 0.745751 0.752427 +0.7241 0.75 0.745694 0.752538 +0.7242 0.75 0.745637 0.752649 +0.7243 0.75 0.74558 0.752759 +0.7244 0.75 0.745523 0.752869 +0.7245 0.75 0.745466 0.752979 +0.7246 0.75 0.74541 0.753089 +0.7247 0.75 0.745353 0.753198 +0.7248 0.75 0.745297 0.753306 +0.7249 0.75 0.74524 0.753415 +0.725 0.75 0.745184 0.753523 +0.7251 0.75 0.745128 0.75363 +0.7252 0.75 0.745071 0.753738 +0.7253 0.75 0.745015 0.753845 +0.7254 0.75 0.744959 0.753951 +0.7255 0.75 0.744903 0.754057 +0.7256 0.75 0.744847 0.754163 +0.7257 0.75 0.744791 0.754268 +0.7258 0.75 0.744735 0.754373 +0.7259 0.75 0.74468 0.754477 +0.726 0.75 0.744624 0.754581 +0.7261 0.75 0.744569 0.754685 +0.7262 0.75 0.744513 0.754788 +0.7263 0.75 0.744458 0.75489 +0.7264 0.75 0.744402 0.754992 +0.7265 0.75 0.744347 0.755094 +0.7266 0.75 0.744292 0.755195 +0.7267 0.75 0.744237 0.755295 +0.7268 0.75 0.744182 0.755395 +0.7269 0.75 0.744127 0.755495 +0.727 0.75 0.744072 0.755594 +0.7271 0.75 0.744017 0.755692 +0.7272 0.75 0.743963 0.75579 +0.7273 0.75 0.743908 0.755887 +0.7274 0.75 0.743853 0.755984 +0.7275 0.75 0.743799 0.75608 +0.7276 0.75 0.743744 0.756176 +0.7277 0.75 0.74369 0.756271 +0.7278 0.75 0.743636 0.756365 +0.7279 0.75 0.743582 0.756459 +0.728 0.75 0.743528 0.756552 +0.7281 0.75 0.743474 0.756645 +0.7282 0.75 0.74342 0.756737 +0.7283 0.75 0.743366 0.756828 +0.7284 0.75 0.743312 0.756919 +0.7285 0.75 0.743259 0.757009 +0.7286 0.75 0.743205 0.757098 +0.7287 0.75 0.743151 0.757187 +0.7288 0.75 0.743098 0.757275 +0.7289 0.75 0.743045 0.757362 +0.729 0.75 0.742991 0.757449 +0.7291 0.75 0.742938 0.757535 +0.7292 0.75 0.742885 0.75762 +0.7293 0.75 0.742832 0.757704 +0.7294 0.75 0.742779 0.757788 +0.7295 0.75 0.742726 0.757871 +0.7296 0.75 0.742674 0.757954 +0.7297 0.75 0.742621 0.758035 +0.7298 0.75 0.742568 0.758116 +0.7299 0.75 0.742516 0.758196 +0.73 0.75 0.742463 0.758276 +0.7301 0.75 0.742411 0.758355 +0.7302 0.75 0.742359 0.758432 +0.7303 0.75 0.742307 0.75851 +0.7304 0.75 0.742255 0.758586 +0.7305 0.75 0.742203 0.758662 +0.7306 0.75 0.742151 0.758736 +0.7307 0.75 0.742099 0.75881 +0.7308 0.75 0.742047 0.758883 +0.7309 0.75 0.741995 0.758956 +0.731 0.75 0.741944 0.759027 +0.7311 0.75 0.741892 0.759098 +0.7312 0.75 0.741841 0.759168 +0.7313 0.75 0.74179 0.759237 +0.7314 0.75 0.741738 0.759305 +0.7315 0.75 0.741687 0.759373 +0.7316 0.75 0.741636 0.759439 +0.7317 0.75 0.741585 0.759505 +0.7318 0.75 0.741534 0.75957 +0.7319 0.75 0.741484 0.759634 +0.732 0.75 0.741433 0.759697 +0.7321 0.75 0.741382 0.759759 +0.7322 0.75 0.741332 0.759821 +0.7323 0.75 0.741281 0.759881 +0.7324 0.75 0.741231 0.759941 +0.7325 0.75 0.741181 0.759999 +0.7326 0.75 0.741131 0.760057 +0.7327 0.75 0.74108 0.760114 +0.7328 0.75 0.74103 0.76017 +0.7329 0.75 0.740981 0.760225 +0.733 0.75 0.740931 0.760279 +0.7331 0.75 0.740881 0.760333 +0.7332 0.75 0.740831 0.760385 +0.7333 0.75 0.740782 0.760436 +0.7334 0.75 0.740732 0.760487 +0.7335 0.75 0.740683 0.760536 +0.7336 0.75 0.740634 0.760585 +0.7337 0.75 0.740585 0.760633 +0.7338 0.75 0.740536 0.76068 +0.7339 0.75 0.740487 0.760725 +0.734 0.75 0.740438 0.76077 +0.7341 0.75 0.740389 0.760814 +0.7342 0.75 0.74034 0.760857 +0.7343 0.75 0.740292 0.760899 +0.7344 0.75 0.740243 0.76094 +0.7345 0.75 0.740195 0.76098 +0.7346 0.75 0.740146 0.761019 +0.7347 0.75 0.740098 0.761057 +0.7348 0.75 0.74005 0.761094 +0.7349 0.75 0.740002 0.76113 +0.735 0.75 0.739954 0.761165 +0.7351 0.75 0.739906 0.761199 +0.7352 0.75 0.739858 0.761233 +0.7353 0.75 0.739811 0.761265 +0.7354 0.75 0.739763 0.761296 +0.7355 0.75 0.739715 0.761326 +0.7356 0.75 0.739668 0.761355 +0.7357 0.75 0.739621 0.761383 +0.7358 0.75 0.739574 0.761411 +0.7359 0.75 0.739526 0.761437 +0.736 0.75 0.739479 0.761462 +0.7361 0.75 0.739432 0.761486 +0.7362 0.75 0.739386 0.761509 +0.7363 0.75 0.739339 0.761531 +0.7364 0.75 0.739292 0.761552 +0.7365 0.75 0.739246 0.761573 +0.7366 0.75 0.739199 0.761592 +0.7367 0.75 0.739153 0.76161 +0.7368 0.75 0.739107 0.761627 +0.7369 0.75 0.739061 0.761643 +0.737 0.75 0.739014 0.761658 +0.7371 0.75 0.738969 0.761672 +0.7372 0.75 0.738923 0.761685 +0.7373 0.75 0.738877 0.761697 +0.7374 0.75 0.738831 0.761708 +0.7375 0.75 0.738786 0.761718 +0.7376 0.75 0.73874 0.761727 +0.7377 0.75 0.738695 0.761734 +0.7378 0.75 0.73865 0.761741 +0.7379 0.75 0.738604 0.761747 +0.738 0.75 0.738559 0.761752 +0.7381 0.75 0.738514 0.761756 +0.7382 0.75 0.738469 0.761758 +0.7383 0.75 0.738425 0.76176 +0.7384 0.75 0.73838 0.761761 +0.7385 0.75 0.738335 0.761761 +0.7386 0.75 0.738291 0.761759 +0.7387 0.75 0.738247 0.761757 +0.7388 0.75 0.738202 0.761753 +0.7389 0.75 0.738158 0.761749 +0.739 0.75 0.738114 0.761744 +0.7391 0.75 0.73807 0.761737 +0.7392 0.75 0.738026 0.76173 +0.7393 0.75 0.737982 0.761721 +0.7394 0.75 0.737939 0.761712 +0.7395 0.75 0.737895 0.761701 +0.7396 0.75 0.737852 0.76169 +0.7397 0.75 0.737808 0.761677 +0.7398 0.75 0.737765 0.761664 +0.7399 0.75 0.737722 0.761649 +0.74 0.75 0.737679 0.761634 +0.7401 0.75 0.737636 0.761617 +0.7402 0.75 0.737593 0.761599 +0.7403 0.75 0.73755 0.761581 +0.7404 0.75 0.737508 0.761561 +0.7405 0.75 0.737465 0.761541 +0.7406 0.75 0.737423 0.761519 +0.7407 0.75 0.73738 0.761497 +0.7408 0.75 0.737338 0.761473 +0.7409 0.75 0.737296 0.761448 +0.741 0.75 0.737254 0.761423 +0.7411 0.75 0.737212 0.761396 +0.7412 0.75 0.73717 0.761369 +0.7413 0.75 0.737128 0.76134 +0.7414 0.75 0.737087 0.761311 +0.7415 0.75 0.737045 0.761281 +0.7416 0.75 0.737004 0.761249 +0.7417 0.75 0.736963 0.761217 +0.7418 0.75 0.736921 0.761184 +0.7419 0.75 0.73688 0.761149 +0.742 0.75 0.736839 0.761114 +0.7421 0.75 0.736798 0.761078 +0.7422 0.75 0.736758 0.761041 +0.7423 0.75 0.736717 0.761003 +0.7424 0.75 0.736676 0.760964 +0.7425 0.75 0.736636 0.760924 +0.7426 0.75 0.736596 0.760883 +0.7427 0.75 0.736555 0.760841 +0.7428 0.75 0.736515 0.760798 +0.7429 0.75 0.736475 0.760755 +0.743 0.75 0.736435 0.76071 +0.7431 0.75 0.736395 0.760664 +0.7432 0.75 0.736356 0.760618 +0.7433 0.75 0.736316 0.760571 +0.7434 0.75 0.736277 0.760522 +0.7435 0.75 0.736237 0.760473 +0.7436 0.75 0.736198 0.760423 +0.7437 0.75 0.736159 0.760372 +0.7438 0.75 0.73612 0.760321 +0.7439 0.75 0.736081 0.760268 +0.744 0.75 0.736042 0.760215 +0.7441 0.75 0.736003 0.76016 +0.7442 0.75 0.735964 0.760105 +0.7443 0.75 0.735926 0.760049 +0.7444 0.75 0.735887 0.759992 +0.7445 0.75 0.735849 0.759934 +0.7446 0.75 0.735811 0.759875 +0.7447 0.75 0.735773 0.759816 +0.7448 0.75 0.735735 0.759756 +0.7449 0.75 0.735697 0.759694 +0.745 0.75 0.735659 0.759632 +0.7451 0.75 0.735622 0.75957 +0.7452 0.75 0.735584 0.759506 +0.7453 0.75 0.735547 0.759442 +0.7454 0.75 0.735509 0.759376 +0.7455 0.75 0.735472 0.759311 +0.7456 0.75 0.735435 0.759244 +0.7457 0.75 0.735398 0.759176 +0.7458 0.75 0.735361 0.759108 +0.7459 0.75 0.735324 0.759039 +0.746 0.75 0.735287 0.758969 +0.7461 0.75 0.735251 0.758898 +0.7462 0.75 0.735214 0.758827 +0.7463 0.75 0.735178 0.758755 +0.7464 0.75 0.735142 0.758682 +0.7465 0.75 0.735106 0.758609 +0.7466 0.75 0.73507 0.758535 +0.7467 0.75 0.735034 0.75846 +0.7468 0.75 0.734998 0.758384 +0.7469 0.75 0.734962 0.758308 +0.747 0.75 0.734927 0.758231 +0.7471 0.75 0.734891 0.758153 +0.7472 0.75 0.734856 0.758074 +0.7473 0.75 0.734821 0.757995 +0.7474 0.75 0.734786 0.757916 +0.7475 0.75 0.734751 0.757835 +0.7476 0.75 0.734716 0.757754 +0.7477 0.75 0.734681 0.757672 +0.7478 0.75 0.734646 0.75759 +0.7479 0.75 0.734612 0.757507 +0.748 0.75 0.734577 0.757424 +0.7481 0.75 0.734543 0.757339 +0.7482 0.75 0.734509 0.757255 +0.7483 0.75 0.734475 0.757169 +0.7484 0.75 0.734441 0.757083 +0.7485 0.75 0.734407 0.756997 +0.7486 0.75 0.734373 0.75691 +0.7487 0.75 0.734339 0.756822 +0.7488 0.75 0.734306 0.756734 +0.7489 0.75 0.734272 0.756645 +0.749 0.75 0.734239 0.756556 +0.7491 0.75 0.734206 0.756466 +0.7492 0.75 0.734173 0.756376 +0.7493 0.75 0.73414 0.756285 +0.7494 0.75 0.734107 0.756193 +0.7495 0.75 0.734074 0.756101 +0.7496 0.75 0.734042 0.756009 +0.7497 0.75 0.734009 0.755916 +0.7498 0.75 0.733977 0.755823 +0.7499 0.75 0.733944 0.755729 +0.75 0.75 0.733912 0.755635 +0.7501 0.75 0.73388 0.75554 +0.7502 0.75 0.733848 0.755445 +0.7503 0.75 0.733816 0.755349 +0.7504 0.75 0.733785 0.755253 +0.7505 0.75 0.733753 0.755157 +0.7506 0.75 0.733722 0.75506 +0.7507 0.75 0.73369 0.754963 +0.7508 0.75 0.733659 0.754865 +0.7509 0.75 0.733628 0.754767 +0.751 0.75 0.733597 0.754669 +0.7511 0.75 0.733566 0.75457 +0.7512 0.75 0.733535 0.754471 +0.7513 0.75 0.733505 0.754372 +0.7514 0.75 0.733474 0.754272 +0.7515 0.75 0.733444 0.754172 +0.7516 0.75 0.733413 0.754072 +0.7517 0.75 0.733383 0.753971 +0.7518 0.75 0.733353 0.75387 +0.7519 0.75 0.733323 0.753769 +0.752 0.75 0.733293 0.753667 +0.7521 0.75 0.733263 0.753565 +0.7522 0.75 0.733234 0.753463 +0.7523 0.75 0.733204 0.753361 +0.7524 0.75 0.733175 0.753258 +0.7525 0.75 0.733146 0.753156 +0.7526 0.75 0.733117 0.753053 +0.7527 0.75 0.733087 0.752949 +0.7528 0.75 0.733059 0.752846 +0.7529 0.75 0.73303 0.752742 +0.753 0.75 0.733001 0.752638 +0.7531 0.75 0.732973 0.752534 +0.7532 0.75 0.732944 0.75243 +0.7533 0.75 0.732916 0.752326 +0.7534 0.75 0.732888 0.752221 +0.7535 0.75 0.732859 0.752117 +0.7536 0.75 0.732831 0.752012 +0.7537 0.75 0.732804 0.751907 +0.7538 0.75 0.732776 0.751802 +0.7539 0.75 0.732748 0.751697 +0.754 0.75 0.732721 0.751592 +0.7541 0.75 0.732693 0.751487 +0.7542 0.75 0.732666 0.751381 +0.7543 0.75 0.732639 0.751276 +0.7544 0.75 0.732612 0.751171 +0.7545 0.75 0.732585 0.751065 +0.7546 0.75 0.732558 0.75096 +0.7547 0.75 0.732532 0.750854 +0.7548 0.75 0.732505 0.750748 +0.7549 0.75 0.732479 0.750643 +0.755 0.75 0.732452 0.750537 +0.7551 0.75 0.732426 0.750432 +0.7552 0.75 0.7324 0.750326 +0.7553 0.75 0.732374 0.750221 +0.7554 0.75 0.732348 0.750115 +0.7555 0.75 0.732323 0.75001 +0.7556 0.75 0.732297 0.749904 +0.7557 0.75 0.732271 0.749799 +0.7558 0.75 0.732246 0.749694 +0.7559 0.75 0.732221 0.749589 +0.756 0.75 0.732196 0.749484 +0.7561 0.75 0.732171 0.749379 +0.7562 0.75 0.732146 0.749274 +0.7563 0.75 0.732121 0.74917 +0.7564 0.75 0.732096 0.749065 +0.7565 0.75 0.732072 0.748961 +0.7566 0.75 0.732048 0.748856 +0.7567 0.75 0.732023 0.748752 +0.7568 0.75 0.731999 0.748649 +0.7569 0.75 0.731975 0.748545 +0.757 0.75 0.731951 0.748441 +0.7571 0.75 0.731927 0.748338 +0.7572 0.75 0.731904 0.748235 +0.7573 0.75 0.73188 0.748132 +0.7574 0.75 0.731857 0.748029 +0.7575 0.75 0.731833 0.747927 +0.7576 0.75 0.73181 0.747825 +0.7577 0.75 0.731787 0.747723 +0.7578 0.75 0.731764 0.747621 +0.7579 0.75 0.731741 0.74752 +0.758 0.75 0.731719 0.747419 +0.7581 0.75 0.731696 0.747318 +0.7582 0.75 0.731674 0.747218 +0.7583 0.75 0.731651 0.747118 +0.7584 0.75 0.731629 0.747018 +0.7585 0.75 0.731607 0.746918 +0.7586 0.75 0.731585 0.746819 +0.7587 0.75 0.731563 0.74672 +0.7588 0.75 0.731541 0.746622 +0.7589 0.75 0.73152 0.746524 +0.759 0.75 0.731498 0.746426 +0.7591 0.75 0.731477 0.746329 +0.7592 0.75 0.731456 0.746232 +0.7593 0.75 0.731434 0.746135 +0.7594 0.75 0.731413 0.746039 +0.7595 0.75 0.731393 0.745943 +0.7596 0.75 0.731372 0.745848 +0.7597 0.75 0.731351 0.745753 +0.7598 0.75 0.731331 0.745659 +0.7599 0.75 0.73131 0.745565 +0.76 0.75 0.73129 0.745471 +0.7601 0.75 0.73127 0.745378 +0.7602 0.75 0.73125 0.745286 +0.7603 0.75 0.73123 0.745194 +0.7604 0.75 0.73121 0.745102 +0.7605 0.75 0.73119 0.745011 +0.7606 0.75 0.731171 0.744921 +0.7607 0.75 0.731151 0.744831 +0.7608 0.75 0.731132 0.744741 +0.7609 0.75 0.731113 0.744652 +0.761 0.75 0.731094 0.744564 +0.7611 0.75 0.731075 0.744476 +0.7612 0.75 0.731056 0.744389 +0.7613 0.75 0.731037 0.744302 +0.7614 0.75 0.731019 0.744216 +0.7615 0.75 0.731 0.74413 +0.7616 0.75 0.730982 0.744045 +0.7617 0.75 0.730964 0.743961 +0.7618 0.75 0.730946 0.743877 +0.7619 0.75 0.730928 0.743794 +0.762 0.75 0.73091 0.743711 +0.7621 0.75 0.730892 0.743629 +0.7622 0.75 0.730875 0.743548 +0.7623 0.75 0.730857 0.743467 +0.7624 0.75 0.73084 0.743387 +0.7625 0.75 0.730823 0.743308 +0.7626 0.75 0.730806 0.743229 +0.7627 0.75 0.730789 0.743151 +0.7628 0.75 0.730772 0.743074 +0.7629 0.75 0.730755 0.742997 +0.763 0.75 0.730739 0.742922 +0.7631 0.75 0.730722 0.742846 +0.7632 0.75 0.730706 0.742772 +0.7633 0.75 0.73069 0.742698 +0.7634 0.75 0.730673 0.742625 +0.7635 0.75 0.730657 0.742553 +0.7636 0.75 0.730642 0.742481 +0.7637 0.75 0.730626 0.74241 +0.7638 0.75 0.73061 0.74234 +0.7639 0.75 0.730595 0.74227 +0.764 0.75 0.730579 0.742202 +0.7641 0.75 0.730564 0.742134 +0.7642 0.75 0.730549 0.742067 +0.7643 0.75 0.730534 0.742001 +0.7644 0.75 0.730519 0.741935 +0.7645 0.75 0.730504 0.74187 +0.7646 0.75 0.73049 0.741806 +0.7647 0.75 0.730475 0.741743 +0.7648 0.75 0.730461 0.741681 +0.7649 0.75 0.730447 0.741619 +0.765 0.75 0.730432 0.741558 +0.7651 0.75 0.730418 0.741499 +0.7652 0.75 0.730405 0.741439 +0.7653 0.75 0.730391 0.741381 +0.7654 0.75 0.730377 0.741324 +0.7655 0.75 0.730364 0.741267 +0.7656 0.75 0.73035 0.741212 +0.7657 0.75 0.730337 0.741157 +0.7658 0.75 0.730324 0.741103 +0.7659 0.75 0.730311 0.741049 +0.766 0.75 0.730298 0.740997 +0.7661 0.75 0.730285 0.740946 +0.7662 0.75 0.730272 0.740895 +0.7663 0.75 0.73026 0.740846 +0.7664 0.75 0.730248 0.740797 +0.7665 0.75 0.730235 0.740749 +0.7666 0.75 0.730223 0.740702 +0.7667 0.75 0.730211 0.740656 +0.7668 0.75 0.730199 0.740611 +0.7669 0.75 0.730187 0.740567 +0.767 0.75 0.730176 0.740523 +0.7671 0.75 0.730164 0.740481 +0.7672 0.75 0.730153 0.740439 +0.7673 0.75 0.730141 0.740399 +0.7674 0.75 0.73013 0.740359 +0.7675 0.75 0.730119 0.74032 +0.7676 0.75 0.730108 0.740282 +0.7677 0.75 0.730098 0.740245 +0.7678 0.75 0.730087 0.74021 +0.7679 0.75 0.730076 0.740174 +0.768 0.75 0.730066 0.74014 +0.7681 0.75 0.730056 0.740107 +0.7682 0.75 0.730045 0.740075 +0.7683 0.75 0.730035 0.740044 +0.7684 0.75 0.730025 0.740014 +0.7685 0.75 0.730016 0.739984 +0.7686 0.75 0.730006 0.739956 +0.7687 0.75 0.729996 0.739929 +0.7688 0.75 0.729987 0.739902 +0.7689 0.75 0.729978 0.739877 +0.769 0.75 0.729968 0.739852 +0.7691 0.75 0.729959 0.739829 +0.7692 0.75 0.72995 0.739806 +0.7693 0.75 0.729942 0.739785 +0.7694 0.75 0.729933 0.739764 +0.7695 0.75 0.729924 0.739745 +0.7696 0.75 0.729916 0.739726 +0.7697 0.75 0.729908 0.739709 +0.7698 0.75 0.729899 0.739692 +0.7699 0.75 0.729891 0.739676 +0.77 0.75 0.729883 0.739662 +0.7701 0.75 0.729875 0.739648 +0.7702 0.75 0.729868 0.739635 +0.7703 0.75 0.72986 0.739624 +0.7704 0.75 0.729853 0.739613 +0.7705 0.75 0.729845 0.739603 +0.7706 0.75 0.729838 0.739594 +0.7707 0.75 0.729831 0.739587 +0.7708 0.75 0.729824 0.73958 +0.7709 0.75 0.729817 0.739574 +0.771 0.75 0.729811 0.73957 +0.7711 0.75 0.729804 0.739566 +0.7712 0.75 0.729797 0.739563 +0.7713 0.75 0.729791 0.739561 +0.7714 0.75 0.729785 0.739561 +0.7715 0.75 0.729779 0.739561 +0.7716 0.75 0.729773 0.739562 +0.7717 0.75 0.729767 0.739564 +0.7718 0.75 0.729761 0.739567 +0.7719 0.75 0.729756 0.739572 +0.772 0.75 0.72975 0.739577 +0.7721 0.75 0.729745 0.739583 +0.7722 0.75 0.729739 0.73959 +0.7723 0.75 0.729734 0.739598 +0.7724 0.75 0.729729 0.739608 +0.7725 0.75 0.729724 0.739618 +0.7726 0.75 0.72972 0.739629 +0.7727 0.75 0.729715 0.739641 +0.7728 0.75 0.729711 0.739654 +0.7729 0.75 0.729706 0.739668 +0.773 0.75 0.729702 0.739683 +0.7731 0.75 0.729698 0.739699 +0.7732 0.75 0.729694 0.739716 +0.7733 0.75 0.72969 0.739734 +0.7734 0.75 0.729686 0.739753 +0.7735 0.75 0.729682 0.739773 +0.7736 0.75 0.729679 0.739794 +0.7737 0.75 0.729676 0.739816 +0.7738 0.75 0.729672 0.739839 +0.7739 0.75 0.729669 0.739863 +0.774 0.75 0.729666 0.739888 +0.7741 0.75 0.729663 0.739913 +0.7742 0.75 0.72966 0.73994 +0.7743 0.75 0.729658 0.739968 +0.7744 0.75 0.729655 0.739996 +0.7745 0.75 0.729653 0.740026 +0.7746 0.75 0.72965 0.740056 +0.7747 0.75 0.729648 0.740088 +0.7748 0.75 0.729646 0.74012 +0.7749 0.75 0.729644 0.740154 +0.775 0.75 0.729642 0.740188 +0.7751 0.75 0.729641 0.740223 +0.7752 0.75 0.729639 0.740259 +0.7753 0.75 0.729638 0.740296 +0.7754 0.75 0.729636 0.740334 +0.7755 0.75 0.729635 0.740373 +0.7756 0.75 0.729634 0.740413 +0.7757 0.75 0.729633 0.740453 +0.7758 0.75 0.729632 0.740495 +0.7759 0.75 0.729632 0.740537 +0.776 0.75 0.729631 0.74058 +0.7761 0.75 0.729631 0.740625 +0.7762 0.75 0.72963 0.74067 +0.7763 0.75 0.72963 0.740716 +0.7764 0.75 0.72963 0.740763 +0.7765 0.75 0.72963 0.74081 +0.7766 0.75 0.72963 0.740859 +0.7767 0.75 0.72963 0.740908 +0.7768 0.75 0.729631 0.740959 +0.7769 0.75 0.729631 0.74101 +0.777 0.75 0.729632 0.741062 +0.7771 0.75 0.729632 0.741115 +0.7772 0.75 0.729633 0.741168 +0.7773 0.75 0.729634 0.741223 +0.7774 0.75 0.729635 0.741278 +0.7775 0.75 0.729637 0.741335 +0.7776 0.75 0.729638 0.741391 +0.7777 0.75 0.729639 0.741449 +0.7778 0.75 0.729641 0.741508 +0.7779 0.75 0.729643 0.741567 +0.778 0.75 0.729644 0.741627 +0.7781 0.75 0.729646 0.741688 +0.7782 0.75 0.729648 0.74175 +0.7783 0.75 0.729651 0.741813 +0.7784 0.75 0.729653 0.741876 +0.7785 0.75 0.729655 0.74194 +0.7786 0.75 0.729658 0.742005 +0.7787 0.75 0.729661 0.74207 +0.7788 0.75 0.729663 0.742136 +0.7789 0.75 0.729666 0.742203 +0.779 0.75 0.729669 0.742271 +0.7791 0.75 0.729672 0.74234 +0.7792 0.75 0.729676 0.742409 +0.7793 0.75 0.729679 0.742479 +0.7794 0.75 0.729683 0.742549 +0.7795 0.75 0.729686 0.74262 +0.7796 0.75 0.72969 0.742692 +0.7797 0.75 0.729694 0.742765 +0.7798 0.75 0.729698 0.742838 +0.7799 0.75 0.729702 0.742912 +0.78 0.75 0.729706 0.742987 +0.7801 0.75 0.72971 0.743062 +0.7802 0.75 0.729715 0.743138 +0.7803 0.75 0.729719 0.743214 +0.7804 0.75 0.729724 0.743292 +0.7805 0.75 0.729729 0.743369 +0.7806 0.75 0.729734 0.743448 +0.7807 0.75 0.729739 0.743527 +0.7808 0.75 0.729744 0.743606 +0.7809 0.75 0.729749 0.743686 +0.781 0.75 0.729755 0.743767 +0.7811 0.75 0.72976 0.743849 +0.7812 0.75 0.729766 0.74393 +0.7813 0.75 0.729772 0.744013 +0.7814 0.75 0.729778 0.744096 +0.7815 0.75 0.729784 0.744179 +0.7816 0.75 0.72979 0.744263 +0.7817 0.75 0.729796 0.744348 +0.7818 0.75 0.729802 0.744433 +0.7819 0.75 0.729809 0.744519 +0.782 0.75 0.729815 0.744605 +0.7821 0.75 0.729822 0.744691 +0.7822 0.75 0.729829 0.744779 +0.7823 0.75 0.729836 0.744866 +0.7824 0.75 0.729843 0.744954 +0.7825 0.75 0.72985 0.745043 +0.7826 0.75 0.729857 0.745132 +0.7827 0.75 0.729865 0.745221 +0.7828 0.75 0.729872 0.745311 +0.7829 0.75 0.72988 0.745401 +0.783 0.75 0.729887 0.745491 +0.7831 0.75 0.729895 0.745582 +0.7832 0.75 0.729903 0.745674 +0.7833 0.75 0.729911 0.745766 +0.7834 0.75 0.72992 0.745858 +0.7835 0.75 0.729928 0.74595 +0.7836 0.75 0.729936 0.746043 +0.7837 0.75 0.729945 0.746136 +0.7838 0.75 0.729954 0.74623 +0.7839 0.75 0.729962 0.746324 +0.784 0.75 0.729971 0.746418 +0.7841 0.75 0.72998 0.746513 +0.7842 0.75 0.729989 0.746607 +0.7843 0.75 0.729999 0.746703 +0.7844 0.75 0.730008 0.746798 +0.7845 0.75 0.730018 0.746894 +0.7846 0.75 0.730027 0.746989 +0.7847 0.75 0.730037 0.747086 +0.7848 0.75 0.730047 0.747182 +0.7849 0.75 0.730057 0.747279 +0.785 0.75 0.730067 0.747376 +0.7851 0.75 0.730077 0.747473 +0.7852 0.75 0.730087 0.74757 +0.7853 0.75 0.730098 0.747667 +0.7854 0.75 0.730108 0.747765 +0.7855 0.75 0.730119 0.747863 +0.7856 0.75 0.730129 0.747961 +0.7857 0.75 0.73014 0.748059 +0.7858 0.75 0.730151 0.748158 +0.7859 0.75 0.730162 0.748256 +0.786 0.75 0.730174 0.748355 +0.7861 0.75 0.730185 0.748453 +0.7862 0.75 0.730196 0.748552 +0.7863 0.75 0.730208 0.748651 +0.7864 0.75 0.73022 0.74875 +0.7865 0.75 0.730231 0.748849 +0.7866 0.75 0.730243 0.748948 +0.7867 0.75 0.730255 0.749047 +0.7868 0.75 0.730267 0.749147 +0.7869 0.75 0.73028 0.749246 +0.787 0.75 0.730292 0.749345 +0.7871 0.75 0.730304 0.749445 +0.7872 0.75 0.730317 0.749544 +0.7873 0.75 0.73033 0.749643 +0.7874 0.75 0.730342 0.749743 +0.7875 0.75 0.730355 0.749842 +0.7876 0.75 0.730368 0.749941 +0.7877 0.75 0.730381 0.75004 +0.7878 0.75 0.730395 0.75014 +0.7879 0.75 0.730408 0.750239 +0.788 0.75 0.730421 0.750338 +0.7881 0.75 0.730435 0.750437 +0.7882 0.75 0.730449 0.750536 +0.7883 0.75 0.730462 0.750634 +0.7884 0.75 0.730476 0.750733 +0.7885 0.75 0.73049 0.750832 +0.7886 0.75 0.730504 0.75093 +0.7887 0.75 0.730519 0.751028 +0.7888 0.75 0.730533 0.751126 +0.7889 0.75 0.730547 0.751224 +0.789 0.75 0.730562 0.751322 +0.7891 0.75 0.730577 0.75142 +0.7892 0.75 0.730591 0.751517 +0.7893 0.75 0.730606 0.751614 +0.7894 0.75 0.730621 0.751711 +0.7895 0.75 0.730636 0.751808 +0.7896 0.75 0.730652 0.751905 +0.7897 0.75 0.730667 0.752001 +0.7898 0.75 0.730682 0.752097 +0.7899 0.75 0.730698 0.752193 +0.79 0.75 0.730713 0.752289 +0.7901 0.75 0.730729 0.752384 +0.7902 0.75 0.730745 0.752479 +0.7903 0.75 0.730761 0.752574 +0.7904 0.75 0.730777 0.752668 +0.7905 0.75 0.730793 0.752762 +0.7906 0.75 0.73081 0.752856 +0.7907 0.75 0.730826 0.752949 +0.7908 0.75 0.730843 0.753042 +0.7909 0.75 0.730859 0.753135 +0.791 0.75 0.730876 0.753227 +0.7911 0.75 0.730893 0.753319 +0.7912 0.75 0.73091 0.753411 +0.7913 0.75 0.730927 0.753502 +0.7914 0.75 0.730944 0.753593 +0.7915 0.75 0.730961 0.753684 +0.7916 0.75 0.730979 0.753774 +0.7917 0.75 0.730996 0.753863 +0.7918 0.75 0.731014 0.753952 +0.7919 0.75 0.731031 0.754041 +0.792 0.75 0.731049 0.754129 +0.7921 0.75 0.731067 0.754217 +0.7922 0.75 0.731085 0.754304 +0.7923 0.75 0.731103 0.754391 +0.7924 0.75 0.731121 0.754477 +0.7925 0.75 0.73114 0.754563 +0.7926 0.75 0.731158 0.754649 +0.7927 0.75 0.731177 0.754734 +0.7928 0.75 0.731195 0.754818 +0.7929 0.75 0.731214 0.754902 +0.793 0.75 0.731233 0.754985 +0.7931 0.75 0.731252 0.755068 +0.7932 0.75 0.731271 0.75515 +0.7933 0.75 0.73129 0.755231 +0.7934 0.75 0.731309 0.755312 +0.7935 0.75 0.731329 0.755393 +0.7936 0.75 0.731348 0.755473 +0.7937 0.75 0.731368 0.755552 +0.7938 0.75 0.731387 0.75563 +0.7939 0.75 0.731407 0.755708 +0.794 0.75 0.731427 0.755786 +0.7941 0.75 0.731447 0.755863 +0.7942 0.75 0.731467 0.755939 +0.7943 0.75 0.731487 0.756014 +0.7944 0.75 0.731508 0.756089 +0.7945 0.75 0.731528 0.756163 +0.7946 0.75 0.731549 0.756237 +0.7947 0.75 0.731569 0.756309 +0.7948 0.75 0.73159 0.756382 +0.7949 0.75 0.731611 0.756453 +0.795 0.75 0.731632 0.756524 +0.7951 0.75 0.731653 0.756594 +0.7952 0.75 0.731674 0.756663 +0.7953 0.75 0.731695 0.756732 +0.7954 0.75 0.731716 0.7568 +0.7955 0.75 0.731738 0.756867 +0.7956 0.75 0.731759 0.756933 +0.7957 0.75 0.731781 0.756999 +0.7958 0.75 0.731803 0.757064 +0.7959 0.75 0.731824 0.757128 +0.796 0.75 0.731846 0.757191 +0.7961 0.75 0.731868 0.757254 +0.7962 0.75 0.731891 0.757316 +0.7963 0.75 0.731913 0.757377 +0.7964 0.75 0.731935 0.757437 +0.7965 0.75 0.731957 0.757497 +0.7966 0.75 0.73198 0.757555 +0.7967 0.75 0.732003 0.757613 +0.7968 0.75 0.732025 0.75767 +0.7969 0.75 0.732048 0.757727 +0.797 0.75 0.732071 0.757782 +0.7971 0.75 0.732094 0.757836 +0.7972 0.75 0.732117 0.75789 +0.7973 0.75 0.73214 0.757943 +0.7974 0.75 0.732164 0.757995 +0.7975 0.75 0.732187 0.758046 +0.7976 0.75 0.732211 0.758097 +0.7977 0.75 0.732234 0.758146 +0.7978 0.75 0.732258 0.758195 +0.7979 0.75 0.732282 0.758242 +0.798 0.75 0.732306 0.758289 +0.7981 0.75 0.73233 0.758335 +0.7982 0.75 0.732354 0.75838 +0.7983 0.75 0.732378 0.758424 +0.7984 0.75 0.732402 0.758468 +0.7985 0.75 0.732426 0.75851 +0.7986 0.75 0.732451 0.758552 +0.7987 0.75 0.732475 0.758592 +0.7988 0.75 0.7325 0.758632 +0.7989 0.75 0.732525 0.75867 +0.799 0.75 0.73255 0.758708 +0.7991 0.75 0.732575 0.758745 +0.7992 0.75 0.7326 0.758781 +0.7993 0.75 0.732625 0.758816 +0.7994 0.75 0.73265 0.75885 +0.7995 0.75 0.732675 0.758883 +0.7996 0.75 0.732701 0.758915 +0.7997 0.75 0.732726 0.758947 +0.7998 0.75 0.732752 0.758977 +0.7999 0.75 0.732778 0.759006 +0.8 0.75 0.732803 0.759034 +0.8001 0.75 0.732829 0.759062 +0.8002 0.75 0.732855 0.759088 +0.8003 0.75 0.732881 0.759114 +0.8004 0.75 0.732907 0.759138 +0.8005 0.75 0.732934 0.759162 +0.8006 0.75 0.73296 0.759184 +0.8007 0.75 0.732987 0.759206 +0.8008 0.75 0.733013 0.759227 +0.8009 0.75 0.73304 0.759246 +0.801 0.75 0.733066 0.759265 +0.8011 0.75 0.733093 0.759282 +0.8012 0.75 0.73312 0.759299 +0.8013 0.75 0.733147 0.759315 +0.8014 0.75 0.733174 0.759329 +0.8015 0.75 0.733201 0.759343 +0.8016 0.75 0.733229 0.759356 +0.8017 0.75 0.733256 0.759368 +0.8018 0.75 0.733283 0.759378 +0.8019 0.75 0.733311 0.759388 +0.802 0.75 0.733338 0.759397 +0.8021 0.75 0.733366 0.759404 +0.8022 0.75 0.733394 0.759411 +0.8023 0.75 0.733422 0.759417 +0.8024 0.75 0.73345 0.759422 +0.8025 0.75 0.733478 0.759425 +0.8026 0.75 0.733506 0.759428 +0.8027 0.75 0.733534 0.75943 +0.8028 0.75 0.733563 0.759431 +0.8029 0.75 0.733591 0.75943 +0.803 0.75 0.733619 0.759429 +0.8031 0.75 0.733648 0.759427 +0.8032 0.75 0.733677 0.759423 +0.8033 0.75 0.733705 0.759419 +0.8034 0.75 0.733734 0.759414 +0.8035 0.75 0.733763 0.759408 +0.8036 0.75 0.733792 0.7594 +0.8037 0.75 0.733821 0.759392 +0.8038 0.75 0.733851 0.759383 +0.8039 0.75 0.73388 0.759372 +0.804 0.75 0.733909 0.759361 +0.8041 0.75 0.733939 0.759349 +0.8042 0.75 0.733968 0.759336 +0.8043 0.75 0.733998 0.759322 +0.8044 0.75 0.734027 0.759306 +0.8045 0.75 0.734057 0.75929 +0.8046 0.75 0.734087 0.759273 +0.8047 0.75 0.734117 0.759255 +0.8048 0.75 0.734147 0.759236 +0.8049 0.75 0.734177 0.759215 +0.805 0.75 0.734207 0.759194 +0.8051 0.75 0.734238 0.759172 +0.8052 0.75 0.734268 0.759149 +0.8053 0.75 0.734299 0.759125 +0.8054 0.75 0.734329 0.7591 +0.8055 0.75 0.73436 0.759074 +0.8056 0.75 0.73439 0.759047 +0.8057 0.75 0.734421 0.759019 +0.8058 0.75 0.734452 0.75899 +0.8059 0.75 0.734483 0.758961 +0.806 0.75 0.734514 0.75893 +0.8061 0.75 0.734545 0.758898 +0.8062 0.75 0.734576 0.758866 +0.8063 0.75 0.734608 0.758832 +0.8064 0.75 0.734639 0.758798 +0.8065 0.75 0.73467 0.758762 +0.8066 0.75 0.734702 0.758726 +0.8067 0.75 0.734733 0.758688 +0.8068 0.75 0.734765 0.75865 +0.8069 0.75 0.734797 0.758611 +0.807 0.75 0.734829 0.758571 +0.8071 0.75 0.734861 0.75853 +0.8072 0.75 0.734893 0.758488 +0.8073 0.75 0.734925 0.758445 +0.8074 0.75 0.734957 0.758402 +0.8075 0.75 0.734989 0.758357 +0.8076 0.75 0.735021 0.758312 +0.8077 0.75 0.735054 0.758266 +0.8078 0.75 0.735086 0.758218 +0.8079 0.75 0.735119 0.75817 +0.808 0.75 0.735151 0.758121 +0.8081 0.75 0.735184 0.758072 +0.8082 0.75 0.735217 0.758021 +0.8083 0.75 0.73525 0.75797 +0.8084 0.75 0.735283 0.757917 +0.8085 0.75 0.735316 0.757864 +0.8086 0.75 0.735349 0.75781 +0.8087 0.75 0.735382 0.757755 +0.8088 0.75 0.735415 0.7577 +0.8089 0.75 0.735448 0.757643 +0.809 0.75 0.735482 0.757586 +0.8091 0.75 0.735515 0.757528 +0.8092 0.75 0.735549 0.757469 +0.8093 0.75 0.735582 0.757409 +0.8094 0.75 0.735616 0.757349 +0.8095 0.75 0.73565 0.757288 +0.8096 0.75 0.735683 0.757226 +0.8097 0.75 0.735717 0.757163 +0.8098 0.75 0.735751 0.7571 +0.8099 0.75 0.735785 0.757035 +0.81 0.75 0.735819 0.75697 +0.8101 0.75 0.735854 0.756905 +0.8102 0.75 0.735888 0.756838 +0.8103 0.75 0.735922 0.756771 +0.8104 0.75 0.735957 0.756703 +0.8105 0.75 0.735991 0.756635 +0.8106 0.75 0.736026 0.756565 +0.8107 0.75 0.73606 0.756495 +0.8108 0.75 0.736095 0.756425 +0.8109 0.75 0.73613 0.756353 +0.811 0.75 0.736164 0.756281 +0.8111 0.75 0.736199 0.756209 +0.8112 0.75 0.736234 0.756135 +0.8113 0.75 0.736269 0.756061 +0.8114 0.75 0.736304 0.755987 +0.8115 0.75 0.73634 0.755912 +0.8116 0.75 0.736375 0.755836 +0.8117 0.75 0.73641 0.755759 +0.8118 0.75 0.736446 0.755682 +0.8119 0.75 0.736481 0.755605 +0.812 0.75 0.736517 0.755527 +0.8121 0.75 0.736552 0.755448 +0.8122 0.75 0.736588 0.755368 +0.8123 0.75 0.736623 0.755288 +0.8124 0.75 0.736659 0.755208 +0.8125 0.75 0.736695 0.755127 +0.8126 0.75 0.736731 0.755045 +0.8127 0.75 0.736767 0.754963 +0.8128 0.75 0.736803 0.754881 +0.8129 0.75 0.736839 0.754798 +0.813 0.75 0.736875 0.754714 +0.8131 0.75 0.736912 0.75463 +0.8132 0.75 0.736948 0.754545 +0.8133 0.75 0.736984 0.75446 +0.8134 0.75 0.737021 0.754375 +0.8135 0.75 0.737057 0.754289 +0.8136 0.75 0.737094 0.754203 +0.8137 0.75 0.73713 0.754116 +0.8138 0.75 0.737167 0.754028 +0.8139 0.75 0.737204 0.753941 +0.814 0.75 0.737241 0.753853 +0.8141 0.75 0.737278 0.753764 +0.8142 0.75 0.737315 0.753675 +0.8143 0.75 0.737352 0.753586 +0.8144 0.75 0.737389 0.753497 +0.8145 0.75 0.737426 0.753407 +0.8146 0.75 0.737463 0.753317 +0.8147 0.75 0.7375 0.753226 +0.8148 0.75 0.737537 0.753135 +0.8149 0.75 0.737575 0.753044 +0.815 0.75 0.737612 0.752952 +0.8151 0.75 0.73765 0.75286 +0.8152 0.75 0.737687 0.752768 +0.8153 0.75 0.737725 0.752676 +0.8154 0.75 0.737763 0.752583 +0.8155 0.75 0.7378 0.75249 +0.8156 0.75 0.737838 0.752397 +0.8157 0.75 0.737876 0.752304 +0.8158 0.75 0.737914 0.75221 +0.8159 0.75 0.737952 0.752116 +0.816 0.75 0.73799 0.752022 +0.8161 0.75 0.738028 0.751928 +0.8162 0.75 0.738066 0.751834 +0.8163 0.75 0.738104 0.751739 +0.8164 0.75 0.738143 0.751644 +0.8165 0.75 0.738181 0.75155 +0.8166 0.75 0.738219 0.751455 +0.8167 0.75 0.738258 0.751359 +0.8168 0.75 0.738296 0.751264 +0.8169 0.75 0.738335 0.751169 +0.817 0.75 0.738374 0.751073 +0.8171 0.75 0.738412 0.750978 +0.8172 0.75 0.738451 0.750882 +0.8173 0.75 0.73849 0.750787 +0.8174 0.75 0.738528 0.750691 +0.8175 0.75 0.738567 0.750595 +0.8176 0.75 0.738606 0.750499 +0.8177 0.75 0.738645 0.750404 +0.8178 0.75 0.738684 0.750308 +0.8179 0.75 0.738723 0.750212 +0.818 0.75 0.738763 0.750116 +0.8181 0.75 0.738802 0.75002 +0.8182 0.75 0.738841 0.749925 +0.8183 0.75 0.73888 0.749829 +0.8184 0.75 0.73892 0.749733 +0.8185 0.75 0.738959 0.749638 +0.8186 0.75 0.738999 0.749542 +0.8187 0.75 0.739038 0.749447 +0.8188 0.75 0.739078 0.749351 +0.8189 0.75 0.739117 0.749256 +0.819 0.75 0.739157 0.749161 +0.8191 0.75 0.739197 0.749066 +0.8192 0.75 0.739236 0.748971 +0.8193 0.75 0.739276 0.748877 +0.8194 0.75 0.739316 0.748782 +0.8195 0.75 0.739356 0.748688 +0.8196 0.75 0.739396 0.748594 +0.8197 0.75 0.739436 0.7485 +0.8198 0.75 0.739476 0.748406 +0.8199 0.75 0.739516 0.748312 +0.82 0.75 0.739556 0.748219 +0.8201 0.75 0.739596 0.748126 +0.8202 0.75 0.739637 0.748033 +0.8203 0.75 0.739677 0.747941 +0.8204 0.75 0.739717 0.747848 +0.8205 0.75 0.739758 0.747756 +0.8206 0.75 0.739798 0.747665 +0.8207 0.75 0.739839 0.747573 +0.8208 0.75 0.739879 0.747482 +0.8209 0.75 0.73992 0.747391 +0.821 0.75 0.73996 0.747301 +0.8211 0.75 0.740001 0.747211 +0.8212 0.75 0.740042 0.747121 +0.8213 0.75 0.740083 0.747031 +0.8214 0.75 0.740123 0.746942 +0.8215 0.75 0.740164 0.746854 +0.8216 0.75 0.740205 0.746766 +0.8217 0.75 0.740246 0.746678 +0.8218 0.75 0.740287 0.74659 +0.8219 0.75 0.740328 0.746503 +0.822 0.75 0.740369 0.746417 +0.8221 0.75 0.74041 0.74633 +0.8222 0.75 0.740451 0.746245 +0.8223 0.75 0.740492 0.74616 +0.8224 0.75 0.740534 0.746075 +0.8225 0.75 0.740575 0.745991 +0.8226 0.75 0.740616 0.745907 +0.8227 0.75 0.740658 0.745823 +0.8228 0.75 0.740699 0.745741 +0.8229 0.75 0.74074 0.745658 +0.823 0.75 0.740782 0.745577 +0.8231 0.75 0.740823 0.745496 +0.8232 0.75 0.740865 0.745415 +0.8233 0.75 0.740907 0.745335 +0.8234 0.75 0.740948 0.745255 +0.8235 0.75 0.74099 0.745176 +0.8236 0.75 0.741032 0.745098 +0.8237 0.75 0.741073 0.74502 +0.8238 0.75 0.741115 0.744943 +0.8239 0.75 0.741157 0.744867 +0.824 0.75 0.741199 0.744791 +0.8241 0.75 0.741241 0.744715 +0.8242 0.75 0.741283 0.744641 +0.8243 0.75 0.741325 0.744567 +0.8244 0.75 0.741367 0.744493 +0.8245 0.75 0.741409 0.744421 +0.8246 0.75 0.741451 0.744349 +0.8247 0.75 0.741493 0.744277 +0.8248 0.75 0.741535 0.744207 +0.8249 0.75 0.741577 0.744137 +0.825 0.75 0.741619 0.744068 +0.8251 0.75 0.741661 0.743999 +0.8252 0.75 0.741704 0.743931 +0.8253 0.75 0.741746 0.743864 +0.8254 0.75 0.741788 0.743798 +0.8255 0.75 0.741831 0.743732 +0.8256 0.75 0.741873 0.743668 +0.8257 0.75 0.741916 0.743604 +0.8258 0.75 0.741958 0.74354 +0.8259 0.75 0.742001 0.743478 +0.826 0.75 0.742043 0.743416 +0.8261 0.75 0.742086 0.743355 +0.8262 0.75 0.742128 0.743295 +0.8263 0.75 0.742171 0.743236 +0.8264 0.75 0.742214 0.743177 +0.8265 0.75 0.742256 0.743119 +0.8266 0.75 0.742299 0.743062 +0.8267 0.75 0.742342 0.743006 +0.8268 0.75 0.742385 0.742951 +0.8269 0.75 0.742427 0.742897 +0.827 0.75 0.74247 0.742843 +0.8271 0.75 0.742513 0.742791 +0.8272 0.75 0.742556 0.742739 +0.8273 0.75 0.742599 0.742688 +0.8274 0.75 0.742642 0.742638 +0.8275 0.75 0.742685 0.742589 +0.8276 0.75 0.742728 0.742541 +0.8277 0.75 0.742771 0.742493 +0.8278 0.75 0.742814 0.742447 +0.8279 0.75 0.742857 0.742401 +0.828 0.75 0.7429 0.742357 +0.8281 0.75 0.742943 0.742313 +0.8282 0.75 0.742986 0.74227 +0.8283 0.75 0.74303 0.742228 +0.8284 0.75 0.743073 0.742187 +0.8285 0.75 0.743116 0.742147 +0.8286 0.75 0.743159 0.742108 +0.8287 0.75 0.743203 0.74207 +0.8288 0.75 0.743246 0.742033 +0.8289 0.75 0.743289 0.741997 +0.829 0.75 0.743333 0.741961 +0.8291 0.75 0.743376 0.741927 +0.8292 0.75 0.743419 0.741894 +0.8293 0.75 0.743463 0.741861 +0.8294 0.75 0.743506 0.74183 +0.8295 0.75 0.74355 0.7418 +0.8296 0.75 0.743593 0.74177 +0.8297 0.75 0.743637 0.741742 +0.8298 0.75 0.74368 0.741714 +0.8299 0.75 0.743724 0.741688 +0.83 0.75 0.743767 0.741662 +0.8301 0.75 0.743811 0.741638 +0.8302 0.75 0.743854 0.741615 +0.8303 0.75 0.743898 0.741592 +0.8304 0.75 0.743942 0.741571 +0.8305 0.75 0.743985 0.74155 +0.8306 0.75 0.744029 0.741531 +0.8307 0.75 0.744073 0.741513 +0.8308 0.75 0.744116 0.741495 +0.8309 0.75 0.74416 0.741479 +0.831 0.75 0.744204 0.741464 +0.8311 0.75 0.744248 0.741449 +0.8312 0.75 0.744291 0.741436 +0.8313 0.75 0.744335 0.741424 +0.8314 0.75 0.744379 0.741413 +0.8315 0.75 0.744423 0.741402 +0.8316 0.75 0.744467 0.741393 +0.8317 0.75 0.744511 0.741385 +0.8318 0.75 0.744554 0.741378 +0.8319 0.75 0.744598 0.741372 +0.832 0.75 0.744642 0.741367 +0.8321 0.75 0.744686 0.741363 +0.8322 0.75 0.74473 0.74136 +0.8323 0.75 0.744774 0.741359 +0.8324 0.75 0.744818 0.741358 +0.8325 0.75 0.744862 0.741358 +0.8326 0.75 0.744906 0.741359 +0.8327 0.75 0.74495 0.741362 +0.8328 0.75 0.744994 0.741365 +0.8329 0.75 0.745038 0.741369 +0.833 0.75 0.745082 0.741375 +0.8331 0.75 0.745126 0.741381 +0.8332 0.75 0.74517 0.741389 +0.8333 0.75 0.745214 0.741397 +0.8334 0.75 0.745258 0.741407 +0.8335 0.75 0.745302 0.741417 +0.8336 0.75 0.745346 0.741429 +0.8337 0.75 0.74539 0.741442 +0.8338 0.75 0.745435 0.741455 +0.8339 0.75 0.745479 0.74147 +0.834 0.75 0.745523 0.741486 +0.8341 0.75 0.745567 0.741503 +0.8342 0.75 0.745611 0.741521 +0.8343 0.75 0.745655 0.74154 +0.8344 0.75 0.745699 0.741559 +0.8345 0.75 0.745744 0.74158 +0.8346 0.75 0.745788 0.741602 +0.8347 0.75 0.745832 0.741625 +0.8348 0.75 0.745876 0.741649 +0.8349 0.75 0.74592 0.741674 +0.835 0.75 0.745964 0.7417 +0.8351 0.75 0.746009 0.741727 +0.8352 0.75 0.746053 0.741755 +0.8353 0.75 0.746097 0.741784 +0.8354 0.75 0.746141 0.741814 +0.8355 0.75 0.746186 0.741845 +0.8356 0.75 0.74623 0.741877 +0.8357 0.75 0.746274 0.74191 +0.8358 0.75 0.746318 0.741944 +0.8359 0.75 0.746362 0.741979 +0.836 0.75 0.746407 0.742014 +0.8361 0.75 0.746451 0.742051 +0.8362 0.75 0.746495 0.742089 +0.8363 0.75 0.746539 0.742128 +0.8364 0.75 0.746584 0.742167 +0.8365 0.75 0.746628 0.742208 +0.8366 0.75 0.746672 0.74225 +0.8367 0.75 0.746716 0.742292 +0.8368 0.75 0.746761 0.742336 +0.8369 0.75 0.746805 0.74238 +0.837 0.75 0.746849 0.742425 +0.8371 0.75 0.746893 0.742471 +0.8372 0.75 0.746937 0.742519 +0.8373 0.75 0.746982 0.742567 +0.8374 0.75 0.747026 0.742616 +0.8375 0.75 0.74707 0.742665 +0.8376 0.75 0.747114 0.742716 +0.8377 0.75 0.747159 0.742768 +0.8378 0.75 0.747203 0.74282 +0.8379 0.75 0.747247 0.742874 +0.838 0.75 0.747291 0.742928 +0.8381 0.75 0.747335 0.742983 +0.8382 0.75 0.74738 0.743039 +0.8383 0.75 0.747424 0.743096 +0.8384 0.75 0.747468 0.743153 +0.8385 0.75 0.747512 0.743212 +0.8386 0.75 0.747556 0.743271 +0.8387 0.75 0.747601 0.743331 +0.8388 0.75 0.747645 0.743392 +0.8389 0.75 0.747689 0.743454 +0.839 0.75 0.747733 0.743516 +0.8391 0.75 0.747777 0.74358 +0.8392 0.75 0.747821 0.743644 +0.8393 0.75 0.747865 0.743709 +0.8394 0.75 0.74791 0.743774 +0.8395 0.75 0.747954 0.743841 +0.8396 0.75 0.747998 0.743908 +0.8397 0.75 0.748042 0.743975 +0.8398 0.75 0.748086 0.744044 +0.8399 0.75 0.74813 0.744113 +0.84 0.75 0.748174 0.744183 +0.8401 0.75 0.748218 0.744254 +0.8402 0.75 0.748262 0.744326 +0.8403 0.75 0.748306 0.744398 +0.8404 0.75 0.74835 0.74447 +0.8405 0.75 0.748394 0.744544 +0.8406 0.75 0.748438 0.744618 +0.8407 0.75 0.748482 0.744693 +0.8408 0.75 0.748526 0.744768 +0.8409 0.75 0.74857 0.744844 +0.841 0.75 0.748614 0.744921 +0.8411 0.75 0.748658 0.744998 +0.8412 0.75 0.748702 0.745076 +0.8413 0.75 0.748746 0.745155 +0.8414 0.75 0.74879 0.745234 +0.8415 0.75 0.748834 0.745313 +0.8416 0.75 0.748878 0.745394 +0.8417 0.75 0.748922 0.745474 +0.8418 0.75 0.748966 0.745556 +0.8419 0.75 0.749009 0.745638 +0.842 0.75 0.749053 0.74572 +0.8421 0.75 0.749097 0.745803 +0.8422 0.75 0.749141 0.745886 +0.8423 0.75 0.749184 0.74597 +0.8424 0.75 0.749228 0.746055 +0.8425 0.75 0.749272 0.746139 +0.8426 0.75 0.749316 0.746225 +0.8427 0.75 0.749359 0.746311 +0.8428 0.75 0.749403 0.746397 +0.8429 0.75 0.749447 0.746483 +0.843 0.75 0.74949 0.746571 +0.8431 0.75 0.749534 0.746658 +0.8432 0.75 0.749578 0.746746 +0.8433 0.75 0.749621 0.746834 +0.8434 0.75 0.749665 0.746923 +0.8435 0.75 0.749708 0.747012 +0.8436 0.75 0.749752 0.747101 +0.8437 0.75 0.749795 0.747191 +0.8438 0.75 0.749839 0.747281 +0.8439 0.75 0.749882 0.747371 +0.844 0.75 0.749926 0.747462 +0.8441 0.75 0.749969 0.747553 +0.8442 0.75 0.750012 0.747644 +0.8443 0.75 0.750056 0.747736 +0.8444 0.75 0.750099 0.747828 +0.8445 0.75 0.750142 0.74792 +0.8446 0.75 0.750186 0.748012 +0.8447 0.75 0.750229 0.748105 +0.8448 0.75 0.750272 0.748197 +0.8449 0.75 0.750316 0.74829 +0.845 0.75 0.750359 0.748383 +0.8451 0.75 0.750402 0.748477 +0.8452 0.75 0.750445 0.74857 +0.8453 0.75 0.750488 0.748664 +0.8454 0.75 0.750531 0.748758 +0.8455 0.75 0.750574 0.748852 +0.8456 0.75 0.750617 0.748946 +0.8457 0.75 0.75066 0.74904 +0.8458 0.75 0.750703 0.749134 +0.8459 0.75 0.750746 0.749228 +0.846 0.75 0.750789 0.749323 +0.8461 0.75 0.750832 0.749417 +0.8462 0.75 0.750875 0.749512 +0.8463 0.75 0.750918 0.749606 +0.8464 0.75 0.750961 0.749701 +0.8465 0.75 0.751003 0.749795 +0.8466 0.75 0.751046 0.74989 +0.8467 0.75 0.751089 0.749985 +0.8468 0.75 0.751132 0.750079 +0.8469 0.75 0.751174 0.750174 +0.847 0.75 0.751217 0.750268 +0.8471 0.75 0.75126 0.750363 +0.8472 0.75 0.751302 0.750457 +0.8473 0.75 0.751345 0.750551 +0.8474 0.75 0.751387 0.750645 +0.8475 0.75 0.75143 0.750739 +0.8476 0.75 0.751472 0.750833 +0.8477 0.75 0.751515 0.750927 +0.8478 0.75 0.751557 0.751021 +0.8479 0.75 0.751599 0.751114 +0.848 0.75 0.751642 0.751208 +0.8481 0.75 0.751684 0.751301 +0.8482 0.75 0.751726 0.751394 +0.8483 0.75 0.751768 0.751486 +0.8484 0.75 0.75181 0.751579 +0.8485 0.75 0.751853 0.751671 +0.8486 0.75 0.751895 0.751763 +0.8487 0.75 0.751937 0.751855 +0.8488 0.75 0.751979 0.751946 +0.8489 0.75 0.752021 0.752038 +0.849 0.75 0.752063 0.752129 +0.8491 0.75 0.752105 0.752219 +0.8492 0.75 0.752146 0.75231 +0.8493 0.75 0.752188 0.7524 +0.8494 0.75 0.75223 0.752489 +0.8495 0.75 0.752272 0.752579 +0.8496 0.75 0.752314 0.752668 +0.8497 0.75 0.752355 0.752756 +0.8498 0.75 0.752397 0.752844 +0.8499 0.75 0.752439 0.752932 +0.85 0.75 0.75248 0.753019 +0.8501 0.75 0.752522 0.753106 +0.8502 0.75 0.752563 0.753193 +0.8503 0.75 0.752605 0.753279 +0.8504 0.75 0.752646 0.753365 +0.8505 0.75 0.752687 0.75345 +0.8506 0.75 0.752729 0.753534 +0.8507 0.75 0.75277 0.753619 +0.8508 0.75 0.752811 0.753702 +0.8509 0.75 0.752852 0.753786 +0.851 0.75 0.752893 0.753868 +0.8511 0.75 0.752935 0.75395 +0.8512 0.75 0.752976 0.754032 +0.8513 0.75 0.753017 0.754113 +0.8514 0.75 0.753058 0.754193 +0.8515 0.75 0.753098 0.754273 +0.8516 0.75 0.753139 0.754353 +0.8517 0.75 0.75318 0.754431 +0.8518 0.75 0.753221 0.754509 +0.8519 0.75 0.753262 0.754587 +0.852 0.75 0.753302 0.754664 +0.8521 0.75 0.753343 0.75474 +0.8522 0.75 0.753384 0.754815 +0.8523 0.75 0.753424 0.75489 +0.8524 0.75 0.753465 0.754964 +0.8525 0.75 0.753505 0.755038 +0.8526 0.75 0.753546 0.755111 +0.8527 0.75 0.753586 0.755183 +0.8528 0.75 0.753626 0.755254 +0.8529 0.75 0.753667 0.755325 +0.853 0.75 0.753707 0.755395 +0.8531 0.75 0.753747 0.755464 +0.8532 0.75 0.753787 0.755533 +0.8533 0.75 0.753827 0.7556 +0.8534 0.75 0.753867 0.755667 +0.8535 0.75 0.753907 0.755733 +0.8536 0.75 0.753947 0.755799 +0.8537 0.75 0.753987 0.755863 +0.8538 0.75 0.754027 0.755927 +0.8539 0.75 0.754067 0.75599 +0.854 0.75 0.754106 0.756052 +0.8541 0.75 0.754146 0.756114 +0.8542 0.75 0.754186 0.756174 +0.8543 0.75 0.754225 0.756234 +0.8544 0.75 0.754265 0.756292 +0.8545 0.75 0.754304 0.75635 +0.8546 0.75 0.754343 0.756407 +0.8547 0.75 0.754383 0.756464 +0.8548 0.75 0.754422 0.756519 +0.8549 0.75 0.754461 0.756573 +0.855 0.75 0.754501 0.756627 +0.8551 0.75 0.75454 0.756679 +0.8552 0.75 0.754579 0.756731 +0.8553 0.75 0.754618 0.756782 +0.8554 0.75 0.754657 0.756831 +0.8555 0.75 0.754696 0.75688 +0.8556 0.75 0.754734 0.756928 +0.8557 0.75 0.754773 0.756975 +0.8558 0.75 0.754812 0.757021 +0.8559 0.75 0.754851 0.757066 +0.856 0.75 0.754889 0.75711 +0.8561 0.75 0.754928 0.757153 +0.8562 0.75 0.754966 0.757195 +0.8563 0.75 0.755005 0.757236 +0.8564 0.75 0.755043 0.757276 +0.8565 0.75 0.755081 0.757315 +0.8566 0.75 0.75512 0.757353 +0.8567 0.75 0.755158 0.757391 +0.8568 0.75 0.755196 0.757427 +0.8569 0.75 0.755234 0.757462 +0.857 0.75 0.755272 0.757496 +0.8571 0.75 0.75531 0.757529 +0.8572 0.75 0.755348 0.75756 +0.8573 0.75 0.755386 0.757591 +0.8574 0.75 0.755424 0.757621 +0.8575 0.75 0.755461 0.75765 +0.8576 0.75 0.755499 0.757678 +0.8577 0.75 0.755537 0.757704 +0.8578 0.75 0.755574 0.75773 +0.8579 0.75 0.755612 0.757754 +0.858 0.75 0.755649 0.757778 +0.8581 0.75 0.755686 0.7578 +0.8582 0.75 0.755724 0.757821 +0.8583 0.75 0.755761 0.757841 +0.8584 0.75 0.755798 0.757861 +0.8585 0.75 0.755835 0.757879 +0.8586 0.75 0.755872 0.757895 +0.8587 0.75 0.755909 0.757911 +0.8588 0.75 0.755946 0.757926 +0.8589 0.75 0.755983 0.75794 +0.859 0.75 0.756019 0.757952 +0.8591 0.75 0.756056 0.757963 +0.8592 0.75 0.756093 0.757974 +0.8593 0.75 0.756129 0.757983 +0.8594 0.75 0.756166 0.757991 +0.8595 0.75 0.756202 0.757998 +0.8596 0.75 0.756238 0.758004 +0.8597 0.75 0.756275 0.758009 +0.8598 0.75 0.756311 0.758012 +0.8599 0.75 0.756347 0.758015 +0.86 0.75 0.756383 0.758016 +0.8601 0.75 0.756419 0.758016 +0.8602 0.75 0.756455 0.758015 +0.8603 0.75 0.756491 0.758013 +0.8604 0.75 0.756527 0.75801 +0.8605 0.75 0.756562 0.758006 +0.8606 0.75 0.756598 0.758001 +0.8607 0.75 0.756634 0.757994 +0.8608 0.75 0.756669 0.757987 +0.8609 0.75 0.756704 0.757978 +0.861 0.75 0.75674 0.757968 +0.8611 0.75 0.756775 0.757957 +0.8612 0.75 0.75681 0.757945 +0.8613 0.75 0.756845 0.757932 +0.8614 0.75 0.756881 0.757918 +0.8615 0.75 0.756916 0.757902 +0.8616 0.75 0.75695 0.757886 +0.8617 0.75 0.756985 0.757868 +0.8618 0.75 0.75702 0.75785 +0.8619 0.75 0.757055 0.75783 +0.862 0.75 0.757089 0.757809 +0.8621 0.75 0.757124 0.757787 +0.8622 0.75 0.757158 0.757764 +0.8623 0.75 0.757193 0.75774 +0.8624 0.75 0.757227 0.757714 +0.8625 0.75 0.757261 0.757688 +0.8626 0.75 0.757296 0.757661 +0.8627 0.75 0.75733 0.757632 +0.8628 0.75 0.757364 0.757602 +0.8629 0.75 0.757398 0.757572 +0.863 0.75 0.757431 0.75754 +0.8631 0.75 0.757465 0.757507 +0.8632 0.75 0.757499 0.757473 +0.8633 0.75 0.757533 0.757438 +0.8634 0.75 0.757566 0.757402 +0.8635 0.75 0.7576 0.757365 +0.8636 0.75 0.757633 0.757327 +0.8637 0.75 0.757666 0.757288 +0.8638 0.75 0.7577 0.757248 +0.8639 0.75 0.757733 0.757207 +0.864 0.75 0.757766 0.757165 +0.8641 0.75 0.757799 0.757121 +0.8642 0.75 0.757832 0.757077 +0.8643 0.75 0.757864 0.757032 +0.8644 0.75 0.757897 0.756986 +0.8645 0.75 0.75793 0.756939 +0.8646 0.75 0.757962 0.75689 +0.8647 0.75 0.757995 0.756841 +0.8648 0.75 0.758027 0.756791 +0.8649 0.75 0.75806 0.75674 +0.865 0.75 0.758092 0.756688 +0.8651 0.75 0.758124 0.756635 +0.8652 0.75 0.758156 0.756581 +0.8653 0.75 0.758188 0.756526 +0.8654 0.75 0.75822 0.75647 +0.8655 0.75 0.758252 0.756414 +0.8656 0.75 0.758284 0.756356 +0.8657 0.75 0.758315 0.756297 +0.8658 0.75 0.758347 0.756238 +0.8659 0.75 0.758379 0.756177 +0.866 0.75 0.75841 0.756116 +0.8661 0.75 0.758441 0.756054 +0.8662 0.75 0.758472 0.755991 +0.8663 0.75 0.758504 0.755927 +0.8664 0.75 0.758535 0.755863 +0.8665 0.75 0.758566 0.755797 +0.8666 0.75 0.758597 0.755731 +0.8667 0.75 0.758627 0.755664 +0.8668 0.75 0.758658 0.755596 +0.8669 0.75 0.758689 0.755527 +0.867 0.75 0.758719 0.755457 +0.8671 0.75 0.75875 0.755387 +0.8672 0.75 0.75878 0.755316 +0.8673 0.75 0.75881 0.755244 +0.8674 0.75 0.758841 0.755171 +0.8675 0.75 0.758871 0.755098 +0.8676 0.75 0.758901 0.755024 +0.8677 0.75 0.758931 0.754949 +0.8678 0.75 0.75896 0.754873 +0.8679 0.75 0.75899 0.754797 +0.868 0.75 0.75902 0.75472 +0.8681 0.75 0.759049 0.754643 +0.8682 0.75 0.759079 0.754564 +0.8683 0.75 0.759108 0.754486 +0.8684 0.75 0.759138 0.754406 +0.8685 0.75 0.759167 0.754326 +0.8686 0.75 0.759196 0.754245 +0.8687 0.75 0.759225 0.754164 +0.8688 0.75 0.759254 0.754082 +0.8689 0.75 0.759283 0.753999 +0.869 0.75 0.759311 0.753916 +0.8691 0.75 0.75934 0.753832 +0.8692 0.75 0.759369 0.753748 +0.8693 0.75 0.759397 0.753663 +0.8694 0.75 0.759425 0.753577 +0.8695 0.75 0.759454 0.753492 +0.8696 0.75 0.759482 0.753405 +0.8697 0.75 0.75951 0.753318 +0.8698 0.75 0.759538 0.753231 +0.8699 0.75 0.759566 0.753143 +0.87 0.75 0.759594 0.753055 +0.8701 0.75 0.759621 0.752966 +0.8702 0.75 0.759649 0.752877 +0.8703 0.75 0.759676 0.752788 +0.8704 0.75 0.759704 0.752698 +0.8705 0.75 0.759731 0.752607 +0.8706 0.75 0.759758 0.752517 +0.8707 0.75 0.759785 0.752426 +0.8708 0.75 0.759812 0.752334 +0.8709 0.75 0.759839 0.752243 +0.871 0.75 0.759866 0.752151 +0.8711 0.75 0.759893 0.752058 +0.8712 0.75 0.75992 0.751966 +0.8713 0.75 0.759946 0.751873 +0.8714 0.75 0.759972 0.751779 +0.8715 0.75 0.759999 0.751686 +0.8716 0.75 0.760025 0.751592 +0.8717 0.75 0.760051 0.751499 +0.8718 0.75 0.760077 0.751404 +0.8719 0.75 0.760103 0.75131 +0.872 0.75 0.760129 0.751216 +0.8721 0.75 0.760155 0.751121 +0.8722 0.75 0.76018 0.751026 +0.8723 0.75 0.760206 0.750931 +0.8724 0.75 0.760231 0.750836 +0.8725 0.75 0.760257 0.750741 +0.8726 0.75 0.760282 0.750646 +0.8727 0.75 0.760307 0.750551 +0.8728 0.75 0.760332 0.750455 +0.8729 0.75 0.760357 0.75036 +0.873 0.75 0.760382 0.750264 +0.8731 0.75 0.760407 0.750169 +0.8732 0.75 0.760431 0.750073 +0.8733 0.75 0.760456 0.749978 +0.8734 0.75 0.76048 0.749882 +0.8735 0.75 0.760504 0.749787 +0.8736 0.75 0.760529 0.749691 +0.8737 0.75 0.760553 0.749596 +0.8738 0.75 0.760577 0.749501 +0.8739 0.75 0.760601 0.749405 +0.874 0.75 0.760624 0.74931 +0.8741 0.75 0.760648 0.749215 +0.8742 0.75 0.760672 0.749121 +0.8743 0.75 0.760695 0.749026 +0.8744 0.75 0.760719 0.748931 +0.8745 0.75 0.760742 0.748837 +0.8746 0.75 0.760765 0.748743 +0.8747 0.75 0.760788 0.748649 +0.8748 0.75 0.760811 0.748555 +0.8749 0.75 0.760834 0.748462 +0.875 0.75 0.760857 0.748369 +0.8751 0.75 0.760879 0.748276 +0.8752 0.75 0.760902 0.748183 +0.8753 0.75 0.760924 0.748091 +0.8754 0.75 0.760946 0.747999 +0.8755 0.75 0.760969 0.747907 +0.8756 0.75 0.760991 0.747815 +0.8757 0.75 0.761013 0.747724 +0.8758 0.75 0.761035 0.747634 +0.8759 0.75 0.761056 0.747543 +0.876 0.75 0.761078 0.747453 +0.8761 0.75 0.761099 0.747364 +0.8762 0.75 0.761121 0.747275 +0.8763 0.75 0.761142 0.747186 +0.8764 0.75 0.761163 0.747098 +0.8765 0.75 0.761185 0.74701 +0.8766 0.75 0.761206 0.746923 +0.8767 0.75 0.761226 0.746836 +0.8768 0.75 0.761247 0.74675 +0.8769 0.75 0.761268 0.746664 +0.877 0.75 0.761288 0.746579 +0.8771 0.75 0.761309 0.746494 +0.8772 0.75 0.761329 0.74641 +0.8773 0.75 0.76135 0.746327 +0.8774 0.75 0.76137 0.746244 +0.8775 0.75 0.76139 0.746161 +0.8776 0.75 0.76141 0.74608 +0.8777 0.75 0.761429 0.745999 +0.8778 0.75 0.761449 0.745918 +0.8779 0.75 0.761469 0.745838 +0.878 0.75 0.761488 0.745759 +0.8781 0.75 0.761507 0.745681 +0.8782 0.75 0.761527 0.745603 +0.8783 0.75 0.761546 0.745526 +0.8784 0.75 0.761565 0.745449 +0.8785 0.75 0.761583 0.745374 +0.8786 0.75 0.761602 0.745299 +0.8787 0.75 0.761621 0.745225 +0.8788 0.75 0.761639 0.745151 +0.8789 0.75 0.761658 0.745079 +0.879 0.75 0.761676 0.745007 +0.8791 0.75 0.761694 0.744936 +0.8792 0.75 0.761712 0.744866 +0.8793 0.75 0.76173 0.744796 +0.8794 0.75 0.761748 0.744728 +0.8795 0.75 0.761766 0.74466 +0.8796 0.75 0.761784 0.744593 +0.8797 0.75 0.761801 0.744527 +0.8798 0.75 0.761818 0.744462 +0.8799 0.75 0.761836 0.744398 +0.88 0.75 0.761853 0.744334 +0.8801 0.75 0.76187 0.744272 +0.8802 0.75 0.761887 0.744211 +0.8803 0.75 0.761904 0.74415 +0.8804 0.75 0.76192 0.74409 +0.8805 0.75 0.761937 0.744032 +0.8806 0.75 0.761953 0.743974 +0.8807 0.75 0.76197 0.743917 +0.8808 0.75 0.761986 0.743861 +0.8809 0.75 0.762002 0.743807 +0.881 0.75 0.762018 0.743753 +0.8811 0.75 0.762034 0.7437 +0.8812 0.75 0.76205 0.743648 +0.8813 0.75 0.762065 0.743598 +0.8814 0.75 0.762081 0.743548 +0.8815 0.75 0.762096 0.743499 +0.8816 0.75 0.762111 0.743452 +0.8817 0.75 0.762126 0.743405 +0.8818 0.75 0.762142 0.74336 +0.8819 0.75 0.762156 0.743315 +0.882 0.75 0.762171 0.743272 +0.8821 0.75 0.762186 0.74323 +0.8822 0.75 0.7622 0.743189 +0.8823 0.75 0.762215 0.743149 +0.8824 0.75 0.762229 0.74311 +0.8825 0.75 0.762243 0.743072 +0.8826 0.75 0.762257 0.743035 +0.8827 0.75 0.762271 0.743 +0.8828 0.75 0.762285 0.742965 +0.8829 0.75 0.762299 0.742932 +0.883 0.75 0.762312 0.7429 +0.8831 0.75 0.762326 0.742869 +0.8832 0.75 0.762339 0.742839 +0.8833 0.75 0.762353 0.742811 +0.8834 0.75 0.762366 0.742784 +0.8835 0.75 0.762379 0.742757 +0.8836 0.75 0.762391 0.742732 +0.8837 0.75 0.762404 0.742708 +0.8838 0.75 0.762417 0.742686 +0.8839 0.75 0.762429 0.742664 +0.884 0.75 0.762442 0.742644 +0.8841 0.75 0.762454 0.742625 +0.8842 0.75 0.762466 0.742607 +0.8843 0.75 0.762478 0.742591 +0.8844 0.75 0.76249 0.742575 +0.8845 0.75 0.762502 0.742561 +0.8846 0.75 0.762513 0.742548 +0.8847 0.75 0.762525 0.742536 +0.8848 0.75 0.762536 0.742526 +0.8849 0.75 0.762547 0.742516 +0.885 0.75 0.762558 0.742508 +0.8851 0.75 0.762569 0.742502 +0.8852 0.75 0.76258 0.742496 +0.8853 0.75 0.762591 0.742492 +0.8854 0.75 0.762602 0.742489 +0.8855 0.75 0.762612 0.742487 +0.8856 0.75 0.762623 0.742486 +0.8857 0.75 0.762633 0.742487 +0.8858 0.75 0.762643 0.742489 +0.8859 0.75 0.762653 0.742492 +0.886 0.75 0.762663 0.742497 +0.8861 0.75 0.762673 0.742502 +0.8862 0.75 0.762682 0.742509 +0.8863 0.75 0.762692 0.742517 +0.8864 0.75 0.762701 0.742527 +0.8865 0.75 0.76271 0.742537 +0.8866 0.75 0.76272 0.742549 +0.8867 0.75 0.762729 0.742562 +0.8868 0.75 0.762737 0.742577 +0.8869 0.75 0.762746 0.742592 +0.887 0.75 0.762755 0.742609 +0.8871 0.75 0.762763 0.742627 +0.8872 0.75 0.762772 0.742647 +0.8873 0.75 0.76278 0.742667 +0.8874 0.75 0.762788 0.742689 +0.8875 0.75 0.762796 0.742712 +0.8876 0.75 0.762804 0.742736 +0.8877 0.75 0.762812 0.742762 +0.8878 0.75 0.762819 0.742788 +0.8879 0.75 0.762827 0.742816 +0.888 0.75 0.762834 0.742845 +0.8881 0.75 0.762841 0.742876 +0.8882 0.75 0.762848 0.742907 +0.8883 0.75 0.762855 0.74294 +0.8884 0.75 0.762862 0.742974 +0.8885 0.75 0.762869 0.743009 +0.8886 0.75 0.762875 0.743045 +0.8887 0.75 0.762882 0.743082 +0.8888 0.75 0.762888 0.743121 +0.8889 0.75 0.762894 0.743161 +0.889 0.75 0.7629 0.743202 +0.8891 0.75 0.762906 0.743244 +0.8892 0.75 0.762912 0.743287 +0.8893 0.75 0.762918 0.743332 +0.8894 0.75 0.762923 0.743377 +0.8895 0.75 0.762929 0.743424 +0.8896 0.75 0.762934 0.743471 +0.8897 0.75 0.762939 0.74352 +0.8898 0.75 0.762944 0.74357 +0.8899 0.75 0.762949 0.743621 +0.89 0.75 0.762954 0.743674 +0.8901 0.75 0.762958 0.743727 +0.8902 0.75 0.762963 0.743781 +0.8903 0.75 0.762967 0.743836 +0.8904 0.75 0.762972 0.743893 +0.8905 0.75 0.762976 0.74395 +0.8906 0.75 0.76298 0.744009 +0.8907 0.75 0.762984 0.744068 +0.8908 0.75 0.762987 0.744129 +0.8909 0.75 0.762991 0.744191 +0.891 0.75 0.762994 0.744253 +0.8911 0.75 0.762998 0.744317 +0.8912 0.75 0.763001 0.744381 +0.8913 0.75 0.763004 0.744447 +0.8914 0.75 0.763007 0.744513 +0.8915 0.75 0.76301 0.744581 +0.8916 0.75 0.763012 0.744649 +0.8917 0.75 0.763015 0.744718 +0.8918 0.75 0.763017 0.744789 +0.8919 0.75 0.76302 0.74486 +0.892 0.75 0.763022 0.744932 +0.8921 0.75 0.763024 0.745004 +0.8922 0.75 0.763026 0.745078 +0.8923 0.75 0.763027 0.745153 +0.8924 0.75 0.763029 0.745228 +0.8925 0.75 0.76303 0.745304 +0.8926 0.75 0.763032 0.745381 +0.8927 0.75 0.763033 0.745459 +0.8928 0.75 0.763034 0.745538 +0.8929 0.75 0.763035 0.745617 +0.893 0.75 0.763036 0.745698 +0.8931 0.75 0.763037 0.745779 +0.8932 0.75 0.763037 0.74586 +0.8933 0.75 0.763038 0.745943 +0.8934 0.75 0.763038 0.746026 +0.8935 0.75 0.763038 0.74611 +0.8936 0.75 0.763038 0.746194 +0.8937 0.75 0.763038 0.746279 +0.8938 0.75 0.763038 0.746365 +0.8939 0.75 0.763037 0.746452 +0.894 0.75 0.763037 0.746539 +0.8941 0.75 0.763036 0.746626 +0.8942 0.75 0.763035 0.746715 +0.8943 0.75 0.763035 0.746804 +0.8944 0.75 0.763034 0.746893 +0.8945 0.75 0.763032 0.746983 +0.8946 0.75 0.763031 0.747073 +0.8947 0.75 0.76303 0.747164 +0.8948 0.75 0.763028 0.747256 +0.8949 0.75 0.763026 0.747348 +0.895 0.75 0.763025 0.74744 +0.8951 0.75 0.763023 0.747533 +0.8952 0.75 0.763021 0.747627 +0.8953 0.75 0.763018 0.74772 +0.8954 0.75 0.763016 0.747815 +0.8955 0.75 0.763013 0.747909 +0.8956 0.75 0.763011 0.748004 +0.8957 0.75 0.763008 0.748099 +0.8958 0.75 0.763005 0.748195 +0.8959 0.75 0.763002 0.748291 +0.896 0.75 0.762999 0.748387 +0.8961 0.75 0.762996 0.748484 +0.8962 0.75 0.762992 0.748581 +0.8963 0.75 0.762989 0.748678 +0.8964 0.75 0.762985 0.748775 +0.8965 0.75 0.762981 0.748872 +0.8966 0.75 0.762977 0.74897 +0.8967 0.75 0.762973 0.749068 +0.8968 0.75 0.762969 0.749166 +0.8969 0.75 0.762964 0.749264 +0.897 0.75 0.76296 0.749363 +0.8971 0.75 0.762955 0.749461 +0.8972 0.75 0.762951 0.749559 +0.8973 0.75 0.762946 0.749658 +0.8974 0.75 0.762941 0.749757 +0.8975 0.75 0.762935 0.749855 +0.8976 0.75 0.76293 0.749954 +0.8977 0.75 0.762925 0.750053 +0.8978 0.75 0.762919 0.750152 +0.8979 0.75 0.762913 0.75025 +0.898 0.75 0.762908 0.750349 +0.8981 0.75 0.762902 0.750447 +0.8982 0.75 0.762896 0.750546 +0.8983 0.75 0.762889 0.750644 +0.8984 0.75 0.762883 0.750743 +0.8985 0.75 0.762876 0.750841 +0.8986 0.75 0.76287 0.750939 +0.8987 0.75 0.762863 0.751036 +0.8988 0.75 0.762856 0.751134 +0.8989 0.75 0.762849 0.751231 +0.899 0.75 0.762842 0.751328 +0.8991 0.75 0.762835 0.751425 +0.8992 0.75 0.762827 0.751522 +0.8993 0.75 0.762819 0.751618 +0.8994 0.75 0.762812 0.751714 +0.8995 0.75 0.762804 0.75181 +0.8996 0.75 0.762796 0.751905 +0.8997 0.75 0.762788 0.752 +0.8998 0.75 0.76278 0.752095 +0.8999 0.75 0.762771 0.752189 +0.9 0.75 0.762763 0.752283 +0.9001 0.75 0.762754 0.752376 +0.9002 0.75 0.762745 0.752469 +0.9003 0.75 0.762736 0.752562 +0.9004 0.75 0.762727 0.752654 +0.9005 0.75 0.762718 0.752745 +0.9006 0.75 0.762709 0.752836 +0.9007 0.75 0.762699 0.752927 +0.9008 0.75 0.76269 0.753017 +0.9009 0.75 0.76268 0.753106 +0.901 0.75 0.76267 0.753195 +0.9011 0.75 0.76266 0.753283 +0.9012 0.75 0.76265 0.75337 +0.9013 0.75 0.76264 0.753457 +0.9014 0.75 0.762629 0.753544 +0.9015 0.75 0.762619 0.753629 +0.9016 0.75 0.762608 0.753714 +0.9017 0.75 0.762597 0.753798 +0.9018 0.75 0.762586 0.753882 +0.9019 0.75 0.762575 0.753964 +0.902 0.75 0.762564 0.754046 +0.9021 0.75 0.762553 0.754127 +0.9022 0.75 0.762541 0.754208 +0.9023 0.75 0.76253 0.754287 +0.9024 0.75 0.762518 0.754366 +0.9025 0.75 0.762506 0.754444 +0.9026 0.75 0.762494 0.754521 +0.9027 0.75 0.762482 0.754597 +0.9028 0.75 0.76247 0.754673 +0.9029 0.75 0.762457 0.754747 +0.903 0.75 0.762445 0.754821 +0.9031 0.75 0.762432 0.754893 +0.9032 0.75 0.762419 0.754965 +0.9033 0.75 0.762406 0.755036 +0.9034 0.75 0.762393 0.755105 +0.9035 0.75 0.76238 0.755174 +0.9036 0.75 0.762367 0.755242 +0.9037 0.75 0.762353 0.755309 +0.9038 0.75 0.76234 0.755374 +0.9039 0.75 0.762326 0.755439 +0.904 0.75 0.762312 0.755503 +0.9041 0.75 0.762298 0.755565 +0.9042 0.75 0.762284 0.755627 +0.9043 0.75 0.76227 0.755687 +0.9044 0.75 0.762256 0.755746 +0.9045 0.75 0.762241 0.755805 +0.9046 0.75 0.762226 0.755862 +0.9047 0.75 0.762212 0.755918 +0.9048 0.75 0.762197 0.755972 +0.9049 0.75 0.762182 0.756026 +0.905 0.75 0.762167 0.756078 +0.9051 0.75 0.762151 0.75613 +0.9052 0.75 0.762136 0.75618 +0.9053 0.75 0.76212 0.756228 +0.9054 0.75 0.762105 0.756276 +0.9055 0.75 0.762089 0.756322 +0.9056 0.75 0.762073 0.756367 +0.9057 0.75 0.762057 0.756411 +0.9058 0.75 0.76204 0.756454 +0.9059 0.75 0.762024 0.756495 +0.906 0.75 0.762008 0.756535 +0.9061 0.75 0.761991 0.756574 +0.9062 0.75 0.761974 0.756612 +0.9063 0.75 0.761957 0.756648 +0.9064 0.75 0.76194 0.756683 +0.9065 0.75 0.761923 0.756716 +0.9066 0.75 0.761906 0.756748 +0.9067 0.75 0.761889 0.756779 +0.9068 0.75 0.761871 0.756809 +0.9069 0.75 0.761853 0.756837 +0.907 0.75 0.761836 0.756864 +0.9071 0.75 0.761818 0.756889 +0.9072 0.75 0.7618 0.756913 +0.9073 0.75 0.761781 0.756936 +0.9074 0.75 0.761763 0.756957 +0.9075 0.75 0.761745 0.756977 +0.9076 0.75 0.761726 0.756996 +0.9077 0.75 0.761707 0.757013 +0.9078 0.75 0.761689 0.757028 +0.9079 0.75 0.76167 0.757043 +0.908 0.75 0.761651 0.757056 +0.9081 0.75 0.761631 0.757067 +0.9082 0.75 0.761612 0.757077 +0.9083 0.75 0.761593 0.757086 +0.9084 0.75 0.761573 0.757093 +0.9085 0.75 0.761553 0.757099 +0.9086 0.75 0.761534 0.757103 +0.9087 0.75 0.761514 0.757106 +0.9088 0.75 0.761493 0.757107 +0.9089 0.75 0.761473 0.757107 +0.909 0.75 0.761453 0.757106 +0.9091 0.75 0.761432 0.757103 +0.9092 0.75 0.761412 0.757099 +0.9093 0.75 0.761391 0.757093 +0.9094 0.75 0.76137 0.757086 +0.9095 0.75 0.761349 0.757077 +0.9096 0.75 0.761328 0.757067 +0.9097 0.75 0.761307 0.757055 +0.9098 0.75 0.761285 0.757042 +0.9099 0.75 0.761264 0.757028 +0.91 0.75 0.761242 0.757012 +0.9101 0.75 0.761221 0.756995 +0.9102 0.75 0.761199 0.756976 +0.9103 0.75 0.761177 0.756956 +0.9104 0.75 0.761155 0.756934 +0.9105 0.75 0.761132 0.756911 +0.9106 0.75 0.76111 0.756887 +0.9107 0.75 0.761087 0.756861 +0.9108 0.75 0.761065 0.756833 +0.9109 0.75 0.761042 0.756805 +0.911 0.75 0.761019 0.756775 +0.9111 0.75 0.760996 0.756743 +0.9112 0.75 0.760973 0.75671 +0.9113 0.75 0.76095 0.756676 +0.9114 0.75 0.760927 0.75664 +0.9115 0.75 0.760903 0.756603 +0.9116 0.75 0.760879 0.756564 +0.9117 0.75 0.760856 0.756524 +0.9118 0.75 0.760832 0.756483 +0.9119 0.75 0.760808 0.756441 +0.912 0.75 0.760784 0.756397 +0.9121 0.75 0.760759 0.756351 +0.9122 0.75 0.760735 0.756305 +0.9123 0.75 0.760711 0.756257 +0.9124 0.75 0.760686 0.756208 +0.9125 0.75 0.760661 0.756157 +0.9126 0.75 0.760637 0.756105 +0.9127 0.75 0.760612 0.756052 +0.9128 0.75 0.760586 0.755998 +0.9129 0.75 0.760561 0.755942 +0.913 0.75 0.760536 0.755885 +0.9131 0.75 0.760511 0.755827 +0.9132 0.75 0.760485 0.755767 +0.9133 0.75 0.760459 0.755707 +0.9134 0.75 0.760433 0.755645 +0.9135 0.75 0.760408 0.755582 +0.9136 0.75 0.760382 0.755518 +0.9137 0.75 0.760355 0.755452 +0.9138 0.75 0.760329 0.755386 +0.9139 0.75 0.760303 0.755318 +0.914 0.75 0.760276 0.755249 +0.9141 0.75 0.760249 0.755179 +0.9142 0.75 0.760223 0.755108 +0.9143 0.75 0.760196 0.755035 +0.9144 0.75 0.760169 0.754962 +0.9145 0.75 0.760142 0.754888 +0.9146 0.75 0.760115 0.754812 +0.9147 0.75 0.760087 0.754736 +0.9148 0.75 0.76006 0.754658 +0.9149 0.75 0.760032 0.75458 +0.915 0.75 0.760004 0.7545 +0.9151 0.75 0.759977 0.75442 +0.9152 0.75 0.759949 0.754338 +0.9153 0.75 0.759921 0.754256 +0.9154 0.75 0.759893 0.754173 +0.9155 0.75 0.759864 0.754088 +0.9156 0.75 0.759836 0.754003 +0.9157 0.75 0.759807 0.753917 +0.9158 0.75 0.759779 0.75383 +0.9159 0.75 0.75975 0.753742 +0.916 0.75 0.759721 0.753654 +0.9161 0.75 0.759692 0.753565 +0.9162 0.75 0.759663 0.753474 +0.9163 0.75 0.759634 0.753384 +0.9164 0.75 0.759605 0.753292 +0.9165 0.75 0.759575 0.7532 +0.9166 0.75 0.759546 0.753106 +0.9167 0.75 0.759516 0.753013 +0.9168 0.75 0.759486 0.752918 +0.9169 0.75 0.759456 0.752823 +0.917 0.75 0.759426 0.752727 +0.9171 0.75 0.759396 0.752631 +0.9172 0.75 0.759366 0.752534 +0.9173 0.75 0.759336 0.752437 +0.9174 0.75 0.759305 0.752338 +0.9175 0.75 0.759275 0.75224 +0.9176 0.75 0.759244 0.752141 +0.9177 0.75 0.759213 0.752041 +0.9178 0.75 0.759183 0.751941 +0.9179 0.75 0.759152 0.751841 +0.918 0.75 0.75912 0.75174 +0.9181 0.75 0.759089 0.751639 +0.9182 0.75 0.759058 0.751537 +0.9183 0.75 0.759027 0.751435 +0.9184 0.75 0.758995 0.751332 +0.9185 0.75 0.758963 0.75123 +0.9186 0.75 0.758932 0.751127 +0.9187 0.75 0.7589 0.751024 +0.9188 0.75 0.758868 0.75092 +0.9189 0.75 0.758836 0.750816 +0.919 0.75 0.758804 0.750713 +0.9191 0.75 0.758771 0.750609 +0.9192 0.75 0.758739 0.750504 +0.9193 0.75 0.758707 0.7504 +0.9194 0.75 0.758674 0.750296 +0.9195 0.75 0.758641 0.750191 +0.9196 0.75 0.758608 0.750087 +0.9197 0.75 0.758576 0.749982 +0.9198 0.75 0.758543 0.749877 +0.9199 0.75 0.758509 0.749773 +0.92 0.75 0.758476 0.749668 +0.9201 0.75 0.758443 0.749564 +0.9202 0.75 0.75841 0.749459 +0.9203 0.75 0.758376 0.749355 +0.9204 0.75 0.758342 0.749251 +0.9205 0.75 0.758309 0.749147 +0.9206 0.75 0.758275 0.749043 +0.9207 0.75 0.758241 0.74894 +0.9208 0.75 0.758207 0.748836 +0.9209 0.75 0.758173 0.748733 +0.921 0.75 0.758139 0.74863 +0.9211 0.75 0.758104 0.748528 +0.9212 0.75 0.75807 0.748425 +0.9213 0.75 0.758035 0.748324 +0.9214 0.75 0.758001 0.748222 +0.9215 0.75 0.757966 0.748121 +0.9216 0.75 0.757931 0.74802 +0.9217 0.75 0.757896 0.74792 +0.9218 0.75 0.757861 0.74782 +0.9219 0.75 0.757826 0.747721 +0.922 0.75 0.757791 0.747623 +0.9221 0.75 0.757755 0.747524 +0.9222 0.75 0.75772 0.747427 +0.9223 0.75 0.757685 0.74733 +0.9224 0.75 0.757649 0.747233 +0.9225 0.75 0.757613 0.747138 +0.9226 0.75 0.757577 0.747042 +0.9227 0.75 0.757542 0.746948 +0.9228 0.75 0.757506 0.746854 +0.9229 0.75 0.75747 0.746761 +0.923 0.75 0.757433 0.746669 +0.9231 0.75 0.757397 0.746578 +0.9232 0.75 0.757361 0.746487 +0.9233 0.75 0.757324 0.746397 +0.9234 0.75 0.757288 0.746308 +0.9235 0.75 0.757251 0.74622 +0.9236 0.75 0.757214 0.746133 +0.9237 0.75 0.757178 0.746046 +0.9238 0.75 0.757141 0.745961 +0.9239 0.75 0.757104 0.745876 +0.924 0.75 0.757067 0.745793 +0.9241 0.75 0.757029 0.74571 +0.9242 0.75 0.756992 0.745629 +0.9243 0.75 0.756955 0.745548 +0.9244 0.75 0.756917 0.745469 +0.9245 0.75 0.75688 0.745391 +0.9246 0.75 0.756842 0.745313 +0.9247 0.75 0.756805 0.745237 +0.9248 0.75 0.756767 0.745162 +0.9249 0.75 0.756729 0.745088 +0.925 0.75 0.756691 0.745016 +0.9251 0.75 0.756653 0.744944 +0.9252 0.75 0.756615 0.744874 +0.9253 0.75 0.756577 0.744805 +0.9254 0.75 0.756538 0.744737 +0.9255 0.75 0.7565 0.744671 +0.9256 0.75 0.756461 0.744606 +0.9257 0.75 0.756423 0.744542 +0.9258 0.75 0.756384 0.744479 +0.9259 0.75 0.756345 0.744418 +0.926 0.75 0.756307 0.744358 +0.9261 0.75 0.756268 0.7443 +0.9262 0.75 0.756229 0.744243 +0.9263 0.75 0.75619 0.744187 +0.9264 0.75 0.756151 0.744133 +0.9265 0.75 0.756111 0.74408 +0.9266 0.75 0.756072 0.744028 +0.9267 0.75 0.756033 0.743978 +0.9268 0.75 0.755993 0.74393 +0.9269 0.75 0.755954 0.743883 +0.927 0.75 0.755914 0.743838 +0.9271 0.75 0.755875 0.743794 +0.9272 0.75 0.755835 0.743751 +0.9273 0.75 0.755795 0.74371 +0.9274 0.75 0.755755 0.743671 +0.9275 0.75 0.755715 0.743633 +0.9276 0.75 0.755675 0.743597 +0.9277 0.75 0.755635 0.743563 +0.9278 0.75 0.755595 0.74353 +0.9279 0.75 0.755554 0.743499 +0.928 0.75 0.755514 0.743469 +0.9281 0.75 0.755474 0.743441 +0.9282 0.75 0.755433 0.743414 +0.9283 0.75 0.755392 0.74339 +0.9284 0.75 0.755352 0.743367 +0.9285 0.75 0.755311 0.743345 +0.9286 0.75 0.75527 0.743325 +0.9287 0.75 0.755229 0.743307 +0.9288 0.75 0.755189 0.743291 +0.9289 0.75 0.755148 0.743276 +0.929 0.75 0.755106 0.743263 +0.9291 0.75 0.755065 0.743252 +0.9292 0.75 0.755024 0.743243 +0.9293 0.75 0.754983 0.743235 +0.9294 0.75 0.754942 0.743229 +0.9295 0.75 0.7549 0.743225 +0.9296 0.75 0.754859 0.743222 +0.9297 0.75 0.754817 0.743221 +0.9298 0.75 0.754775 0.743222 +0.9299 0.75 0.754734 0.743225 +0.93 0.75 0.754692 0.743229 +0.9301 0.75 0.75465 0.743235 +0.9302 0.75 0.754608 0.743243 +0.9303 0.75 0.754567 0.743253 +0.9304 0.75 0.754525 0.743264 +0.9305 0.75 0.754482 0.743277 +0.9306 0.75 0.75444 0.743292 +0.9307 0.75 0.754398 0.743309 +0.9308 0.75 0.754356 0.743327 +0.9309 0.75 0.754314 0.743347 +0.931 0.75 0.754271 0.743369 +0.9311 0.75 0.754229 0.743393 +0.9312 0.75 0.754186 0.743418 +0.9313 0.75 0.754144 0.743445 +0.9314 0.75 0.754101 0.743474 +0.9315 0.75 0.754059 0.743505 +0.9316 0.75 0.754016 0.743537 +0.9317 0.75 0.753973 0.743571 +0.9318 0.75 0.75393 0.743606 +0.9319 0.75 0.753888 0.743644 +0.932 0.75 0.753845 0.743683 +0.9321 0.75 0.753802 0.743724 +0.9322 0.75 0.753759 0.743766 +0.9323 0.75 0.753716 0.74381 +0.9324 0.75 0.753672 0.743856 +0.9325 0.75 0.753629 0.743903 +0.9326 0.75 0.753586 0.743952 +0.9327 0.75 0.753543 0.744003 +0.9328 0.75 0.753499 0.744055 +0.9329 0.75 0.753456 0.744109 +0.933 0.75 0.753413 0.744165 +0.9331 0.75 0.753369 0.744222 +0.9332 0.75 0.753326 0.74428 +0.9333 0.75 0.753282 0.74434 +0.9334 0.75 0.753238 0.744402 +0.9335 0.75 0.753195 0.744465 +0.9336 0.75 0.753151 0.74453 +0.9337 0.75 0.753107 0.744596 +0.9338 0.75 0.753063 0.744664 +0.9339 0.75 0.75302 0.744733 +0.934 0.75 0.752976 0.744804 +0.9341 0.75 0.752932 0.744876 +0.9342 0.75 0.752888 0.74495 +0.9343 0.75 0.752844 0.745025 +0.9344 0.75 0.7528 0.745101 +0.9345 0.75 0.752756 0.745179 +0.9346 0.75 0.752711 0.745258 +0.9347 0.75 0.752667 0.745338 +0.9348 0.75 0.752623 0.74542 +0.9349 0.75 0.752579 0.745503 +0.935 0.75 0.752535 0.745587 +0.9351 0.75 0.75249 0.745672 +0.9352 0.75 0.752446 0.745759 +0.9353 0.75 0.752401 0.745847 +0.9354 0.75 0.752357 0.745936 +0.9355 0.75 0.752313 0.746026 +0.9356 0.75 0.752268 0.746117 +0.9357 0.75 0.752223 0.74621 +0.9358 0.75 0.752179 0.746303 +0.9359 0.75 0.752134 0.746398 +0.936 0.75 0.75209 0.746493 +0.9361 0.75 0.752045 0.74659 +0.9362 0.75 0.752 0.746688 +0.9363 0.75 0.751956 0.746786 +0.9364 0.75 0.751911 0.746886 +0.9365 0.75 0.751866 0.746986 +0.9366 0.75 0.751821 0.747087 +0.9367 0.75 0.751776 0.74719 +0.9368 0.75 0.751731 0.747293 +0.9369 0.75 0.751687 0.747396 +0.937 0.75 0.751642 0.747501 +0.9371 0.75 0.751597 0.747606 +0.9372 0.75 0.751552 0.747712 +0.9373 0.75 0.751507 0.747819 +0.9374 0.75 0.751462 0.747926 +0.9375 0.75 0.751417 0.748034 +0.9376 0.75 0.751372 0.748143 +0.9377 0.75 0.751326 0.748252 +0.9378 0.75 0.751281 0.748362 +0.9379 0.75 0.751236 0.748472 +0.938 0.75 0.751191 0.748583 +0.9381 0.75 0.751146 0.748694 +0.9382 0.75 0.751101 0.748805 +0.9383 0.75 0.751055 0.748917 +0.9384 0.75 0.75101 0.749029 +0.9385 0.75 0.750965 0.749142 +0.9386 0.75 0.75092 0.749255 +0.9387 0.75 0.750875 0.749368 +0.9388 0.75 0.750829 0.749481 +0.9389 0.75 0.750784 0.749595 +0.939 0.75 0.750739 0.749708 +0.9391 0.75 0.750693 0.749822 +0.9392 0.75 0.750648 0.749936 +0.9393 0.75 0.750603 0.75005 +0.9394 0.75 0.750557 0.750164 +0.9395 0.75 0.750512 0.750278 +0.9396 0.75 0.750467 0.750392 +0.9397 0.75 0.750421 0.750506 +0.9398 0.75 0.750376 0.750619 +0.9399 0.75 0.75033 0.750733 +0.94 0.75 0.750285 0.750846 +0.9401 0.75 0.75024 0.75096 +0.9402 0.75 0.750194 0.751073 +0.9403 0.75 0.750149 0.751185 +0.9404 0.75 0.750103 0.751298 +0.9405 0.75 0.750058 0.75141 +0.9406 0.75 0.750012 0.751521 +0.9407 0.75 0.749967 0.751632 +0.9408 0.75 0.749922 0.751743 +0.9409 0.75 0.749876 0.751853 +0.941 0.75 0.749831 0.751963 +0.9411 0.75 0.749785 0.752072 +0.9412 0.75 0.74974 0.752181 +0.9413 0.75 0.749694 0.752289 +0.9414 0.75 0.749649 0.752396 +0.9415 0.75 0.749604 0.752503 +0.9416 0.75 0.749558 0.752609 +0.9417 0.75 0.749513 0.752714 +0.9418 0.75 0.749467 0.752818 +0.9419 0.75 0.749422 0.752922 +0.942 0.75 0.749377 0.753024 +0.9421 0.75 0.749331 0.753126 +0.9422 0.75 0.749286 0.753227 +0.9423 0.75 0.749241 0.753327 +0.9424 0.75 0.749195 0.753426 +0.9425 0.75 0.74915 0.753524 +0.9426 0.75 0.749105 0.753621 +0.9427 0.75 0.749059 0.753716 +0.9428 0.75 0.749014 0.753811 +0.9429 0.75 0.748969 0.753904 +0.943 0.75 0.748923 0.753997 +0.9431 0.75 0.748878 0.754088 +0.9432 0.75 0.748833 0.754178 +0.9433 0.75 0.748788 0.754266 +0.9434 0.75 0.748743 0.754353 +0.9435 0.75 0.748697 0.754439 +0.9436 0.75 0.748652 0.754524 +0.9437 0.75 0.748607 0.754607 +0.9438 0.75 0.748562 0.754689 +0.9439 0.75 0.748517 0.754769 +0.944 0.75 0.748472 0.754848 +0.9441 0.75 0.748427 0.754925 +0.9442 0.75 0.748382 0.755001 +0.9443 0.75 0.748337 0.755075 +0.9444 0.75 0.748292 0.755148 +0.9445 0.75 0.748247 0.755219 +0.9446 0.75 0.748202 0.755288 +0.9447 0.75 0.748157 0.755356 +0.9448 0.75 0.748112 0.755422 +0.9449 0.75 0.748067 0.755486 +0.945 0.75 0.748022 0.755548 +0.9451 0.75 0.747978 0.755609 +0.9452 0.75 0.747933 0.755668 +0.9453 0.75 0.747888 0.755725 +0.9454 0.75 0.747844 0.755781 +0.9455 0.75 0.747799 0.755834 +0.9456 0.75 0.747754 0.755886 +0.9457 0.75 0.74771 0.755935 +0.9458 0.75 0.747665 0.755983 +0.9459 0.75 0.747621 0.756029 +0.946 0.75 0.747576 0.756073 +0.9461 0.75 0.747532 0.756115 +0.9462 0.75 0.747488 0.756155 +0.9463 0.75 0.747443 0.756192 +0.9464 0.75 0.747399 0.756228 +0.9465 0.75 0.747355 0.756262 +0.9466 0.75 0.74731 0.756294 +0.9467 0.75 0.747266 0.756323 +0.9468 0.75 0.747222 0.756351 +0.9469 0.75 0.747178 0.756376 +0.947 0.75 0.747134 0.7564 +0.9471 0.75 0.74709 0.756421 +0.9472 0.75 0.747046 0.75644 +0.9473 0.75 0.747002 0.756457 +0.9474 0.75 0.746958 0.756472 +0.9475 0.75 0.746915 0.756484 +0.9476 0.75 0.746871 0.756495 +0.9477 0.75 0.746827 0.756503 +0.9478 0.75 0.746784 0.756509 +0.9479 0.75 0.74674 0.756512 +0.948 0.75 0.746697 0.756514 +0.9481 0.75 0.746653 0.756513 +0.9482 0.75 0.74661 0.756511 +0.9483 0.75 0.746566 0.756505 +0.9484 0.75 0.746523 0.756498 +0.9485 0.75 0.74648 0.756488 +0.9486 0.75 0.746437 0.756477 +0.9487 0.75 0.746394 0.756463 +0.9488 0.75 0.746351 0.756446 +0.9489 0.75 0.746308 0.756428 +0.949 0.75 0.746265 0.756407 +0.9491 0.75 0.746222 0.756384 +0.9492 0.75 0.746179 0.756359 +0.9493 0.75 0.746136 0.756331 +0.9494 0.75 0.746094 0.756302 +0.9495 0.75 0.746051 0.75627 +0.9496 0.75 0.746009 0.756236 +0.9497 0.75 0.745966 0.756199 +0.9498 0.75 0.745924 0.756161 +0.9499 0.75 0.745882 0.75612 +0.95 0.75 0.745839 0.756077 +0.9501 0.75 0.745797 0.756032 +0.9502 0.75 0.745755 0.755985 +0.9503 0.75 0.745713 0.755935 +0.9504 0.75 0.745671 0.755884 +0.9505 0.75 0.745629 0.75583 +0.9506 0.75 0.745588 0.755774 +0.9507 0.75 0.745546 0.755717 +0.9508 0.75 0.745504 0.755657 +0.9509 0.75 0.745463 0.755595 +0.951 0.75 0.745421 0.755531 +0.9511 0.75 0.74538 0.755465 +0.9512 0.75 0.745339 0.755396 +0.9513 0.75 0.745297 0.755326 +0.9514 0.75 0.745256 0.755254 +0.9515 0.75 0.745215 0.75518 +0.9516 0.75 0.745174 0.755104 +0.9517 0.75 0.745134 0.755027 +0.9518 0.75 0.745093 0.754947 +0.9519 0.75 0.745052 0.754865 +0.952 0.75 0.745012 0.754782 +0.9521 0.75 0.744971 0.754697 +0.9522 0.75 0.744931 0.75461 +0.9523 0.75 0.74489 0.754521 +0.9524 0.75 0.74485 0.75443 +0.9525 0.75 0.74481 0.754338 +0.9526 0.75 0.74477 0.754244 +0.9527 0.75 0.74473 0.754149 +0.9528 0.75 0.74469 0.754052 +0.9529 0.75 0.744651 0.753953 +0.953 0.75 0.744611 0.753853 +0.9531 0.75 0.744571 0.753752 +0.9532 0.75 0.744532 0.753648 +0.9533 0.75 0.744493 0.753544 +0.9534 0.75 0.744454 0.753438 +0.9535 0.75 0.744414 0.75333 +0.9536 0.75 0.744375 0.753222 +0.9537 0.75 0.744337 0.753112 +0.9538 0.75 0.744298 0.753001 +0.9539 0.75 0.744259 0.752888 +0.954 0.75 0.744221 0.752775 +0.9541 0.75 0.744182 0.75266 +0.9542 0.75 0.744144 0.752544 +0.9543 0.75 0.744106 0.752427 +0.9544 0.75 0.744068 0.752309 +0.9545 0.75 0.74403 0.752191 +0.9546 0.75 0.743992 0.752071 +0.9547 0.75 0.743954 0.75195 +0.9548 0.75 0.743916 0.751829 +0.9549 0.75 0.743879 0.751706 +0.955 0.75 0.743841 0.751583 +0.9551 0.75 0.743804 0.75146 +0.9552 0.75 0.743767 0.751335 +0.9553 0.75 0.74373 0.75121 +0.9554 0.75 0.743693 0.751085 +0.9555 0.75 0.743656 0.750959 +0.9556 0.75 0.74362 0.750832 +0.9557 0.75 0.743583 0.750705 +0.9558 0.75 0.743547 0.750578 +0.9559 0.75 0.74351 0.750451 +0.956 0.75 0.743474 0.750323 +0.9561 0.75 0.743438 0.750195 +0.9562 0.75 0.743402 0.750066 +0.9563 0.75 0.743367 0.749938 +0.9564 0.75 0.743331 0.74981 +0.9565 0.75 0.743296 0.749681 +0.9566 0.75 0.74326 0.749553 +0.9567 0.75 0.743225 0.749425 +0.9568 0.75 0.74319 0.749297 +0.9569 0.75 0.743155 0.749169 +0.957 0.75 0.74312 0.749041 +0.9571 0.75 0.743086 0.748914 +0.9572 0.75 0.743051 0.748787 +0.9573 0.75 0.743017 0.74866 +0.9574 0.75 0.742983 0.748534 +0.9575 0.75 0.742949 0.748408 +0.9576 0.75 0.742915 0.748283 +0.9577 0.75 0.742881 0.748159 +0.9578 0.75 0.742848 0.748035 +0.9579 0.75 0.742814 0.747912 +0.958 0.75 0.742781 0.74779 +0.9581 0.75 0.742748 0.747668 +0.9582 0.75 0.742715 0.747548 +0.9583 0.75 0.742682 0.747428 +0.9584 0.75 0.742649 0.74731 +0.9585 0.75 0.742617 0.747192 +0.9586 0.75 0.742584 0.747076 +0.9587 0.75 0.742552 0.74696 +0.9588 0.75 0.74252 0.746846 +0.9589 0.75 0.742488 0.746733 +0.959 0.75 0.742456 0.746622 +0.9591 0.75 0.742425 0.746512 +0.9592 0.75 0.742394 0.746403 +0.9593 0.75 0.742362 0.746296 +0.9594 0.75 0.742331 0.74619 +0.9595 0.75 0.7423 0.746086 +0.9596 0.75 0.74227 0.745983 +0.9597 0.75 0.742239 0.745882 +0.9598 0.75 0.742209 0.745783 +0.9599 0.75 0.742179 0.745685 +0.96 0.75 0.742149 0.74559 +0.9601 0.75 0.742119 0.745496 +0.9602 0.75 0.742089 0.745404 +0.9603 0.75 0.74206 0.745314 +0.9604 0.75 0.74203 0.745226 +0.9605 0.75 0.742001 0.74514 +0.9606 0.75 0.741972 0.745056 +0.9607 0.75 0.741943 0.744975 +0.9608 0.75 0.741915 0.744895 +0.9609 0.75 0.741886 0.744818 +0.961 0.75 0.741858 0.744743 +0.9611 0.75 0.74183 0.74467 +0.9612 0.75 0.741802 0.7446 +0.9613 0.75 0.741775 0.744532 +0.9614 0.75 0.741747 0.744466 +0.9615 0.75 0.74172 0.744403 +0.9616 0.75 0.741693 0.744342 +0.9617 0.75 0.741666 0.744284 +0.9618 0.75 0.741639 0.744228 +0.9619 0.75 0.741613 0.744175 +0.962 0.75 0.741586 0.744125 +0.9621 0.75 0.74156 0.744077 +0.9622 0.75 0.741534 0.744032 +0.9623 0.75 0.741509 0.74399 +0.9624 0.75 0.741483 0.74395 +0.9625 0.75 0.741458 0.743913 +0.9626 0.75 0.741433 0.743879 +0.9627 0.75 0.741408 0.743848 +0.9628 0.75 0.741383 0.74382 +0.9629 0.75 0.741359 0.743794 +0.963 0.75 0.741335 0.743772 +0.9631 0.75 0.741311 0.743752 +0.9632 0.75 0.741287 0.743736 +0.9633 0.75 0.741263 0.743722 +0.9634 0.75 0.74124 0.743711 +0.9635 0.75 0.741217 0.743703 +0.9636 0.75 0.741194 0.743698 +0.9637 0.75 0.741171 0.743697 +0.9638 0.75 0.741148 0.743698 +0.9639 0.75 0.741126 0.743702 +0.964 0.75 0.741104 0.74371 +0.9641 0.75 0.741082 0.74372 +0.9642 0.75 0.74106 0.743733 +0.9643 0.75 0.741039 0.74375 +0.9644 0.75 0.741018 0.74377 +0.9645 0.75 0.740997 0.743792 +0.9646 0.75 0.740976 0.743818 +0.9647 0.75 0.740955 0.743847 +0.9648 0.75 0.740935 0.743879 +0.9649 0.75 0.740915 0.743914 +0.965 0.75 0.740895 0.743952 +0.9651 0.75 0.740876 0.743993 +0.9652 0.75 0.740856 0.744037 +0.9653 0.75 0.740837 0.744084 +0.9654 0.75 0.740818 0.744134 +0.9655 0.75 0.7408 0.744187 +0.9656 0.75 0.740781 0.744243 +0.9657 0.75 0.740763 0.744302 +0.9658 0.75 0.740745 0.744364 +0.9659 0.75 0.740728 0.744429 +0.966 0.75 0.74071 0.744497 +0.9661 0.75 0.740693 0.744568 +0.9662 0.75 0.740676 0.744641 +0.9663 0.75 0.74066 0.744718 +0.9664 0.75 0.740643 0.744797 +0.9665 0.75 0.740627 0.744879 +0.9666 0.75 0.740611 0.744964 +0.9667 0.75 0.740595 0.745051 +0.9668 0.75 0.74058 0.745141 +0.9669 0.75 0.740565 0.745234 +0.967 0.75 0.74055 0.745329 +0.9671 0.75 0.740535 0.745427 +0.9672 0.75 0.740521 0.745528 +0.9673 0.75 0.740507 0.745631 +0.9674 0.75 0.740493 0.745736 +0.9675 0.75 0.74048 0.745844 +0.9676 0.75 0.740466 0.745954 +0.9677 0.75 0.740453 0.746066 +0.9678 0.75 0.740441 0.746181 +0.9679 0.75 0.740428 0.746297 +0.968 0.75 0.740416 0.746416 +0.9681 0.75 0.740404 0.746537 +0.9682 0.75 0.740392 0.74666 +0.9683 0.75 0.740381 0.746785 +0.9684 0.75 0.74037 0.746912 +0.9685 0.75 0.740359 0.747041 +0.9686 0.75 0.740348 0.747171 +0.9687 0.75 0.740338 0.747304 +0.9688 0.75 0.740328 0.747438 +0.9689 0.75 0.740318 0.747573 +0.969 0.75 0.740309 0.74771 +0.9691 0.75 0.7403 0.747848 +0.9692 0.75 0.740291 0.747988 +0.9693 0.75 0.740282 0.748129 +0.9694 0.75 0.740274 0.748271 +0.9695 0.75 0.740266 0.748415 +0.9696 0.75 0.740259 0.748559 +0.9697 0.75 0.740251 0.748705 +0.9698 0.75 0.740244 0.748851 +0.9699 0.75 0.740237 0.748998 +0.97 0.75 0.740231 0.749146 +0.9701 0.75 0.740225 0.749295 +0.9702 0.75 0.740219 0.749444 +0.9703 0.75 0.740213 0.749594 +0.9704 0.75 0.740208 0.749744 +0.9705 0.75 0.740203 0.749894 +0.9706 0.75 0.740198 0.750045 +0.9707 0.75 0.740194 0.750196 +0.9708 0.75 0.74019 0.750347 +0.9709 0.75 0.740186 0.750498 +0.971 0.75 0.740183 0.750649 +0.9711 0.75 0.74018 0.7508 +0.9712 0.75 0.740177 0.75095 +0.9713 0.75 0.740175 0.7511 +0.9714 0.75 0.740172 0.751249 +0.9715 0.75 0.740171 0.751398 +0.9716 0.75 0.740169 0.751547 +0.9717 0.75 0.740168 0.751694 +0.9718 0.75 0.740167 0.751841 +0.9719 0.75 0.740167 0.751987 +0.972 0.75 0.740166 0.752131 +0.9721 0.75 0.740166 0.752275 +0.9722 0.75 0.740167 0.752417 +0.9723 0.75 0.740168 0.752559 +0.9724 0.75 0.740169 0.752698 +0.9725 0.75 0.74017 0.752836 +0.9726 0.75 0.740172 0.752973 +0.9727 0.75 0.740174 0.753108 +0.9728 0.75 0.740177 0.753241 +0.9729 0.75 0.74018 0.753372 +0.973 0.75 0.740183 0.753502 +0.9731 0.75 0.740186 0.753629 +0.9732 0.75 0.74019 0.753754 +0.9733 0.75 0.740194 0.753877 +0.9734 0.75 0.740199 0.753997 +0.9735 0.75 0.740204 0.754115 +0.9736 0.75 0.740209 0.754231 +0.9737 0.75 0.740214 0.754344 +0.9738 0.75 0.74022 0.754454 +0.9739 0.75 0.740227 0.754561 +0.974 0.75 0.740233 0.754666 +0.9741 0.75 0.74024 0.754768 +0.9742 0.75 0.740248 0.754866 +0.9743 0.75 0.740255 0.754962 +0.9744 0.75 0.740264 0.755054 +0.9745 0.75 0.740272 0.755143 +0.9746 0.75 0.740281 0.755229 +0.9747 0.75 0.74029 0.755311 +0.9748 0.75 0.7403 0.75539 +0.9749 0.75 0.74031 0.755465 +0.975 0.75 0.74032 0.755537 +0.9751 0.75 0.74033 0.755605 +0.9752 0.75 0.740342 0.755669 +0.9753 0.75 0.740353 0.755729 +0.9754 0.75 0.740365 0.755786 +0.9755 0.75 0.740377 0.755838 +0.9756 0.75 0.740389 0.755887 +0.9757 0.75 0.740402 0.755931 +0.9758 0.75 0.740416 0.755971 +0.9759 0.75 0.740429 0.756007 +0.976 0.75 0.740444 0.756039 +0.9761 0.75 0.740458 0.756066 +0.9762 0.75 0.740473 0.756089 +0.9763 0.75 0.740488 0.756108 +0.9764 0.75 0.740504 0.756123 +0.9765 0.75 0.74052 0.756133 +0.9766 0.75 0.740536 0.756138 +0.9767 0.75 0.740553 0.756139 +0.9768 0.75 0.74057 0.756135 +0.9769 0.75 0.740588 0.756127 +0.977 0.75 0.740606 0.756114 +0.9771 0.75 0.740624 0.756097 +0.9772 0.75 0.740643 0.756075 +0.9773 0.75 0.740663 0.756049 +0.9774 0.75 0.740682 0.756017 +0.9775 0.75 0.740702 0.755982 +0.9776 0.75 0.740723 0.755941 +0.9777 0.75 0.740744 0.755896 +0.9778 0.75 0.740765 0.755846 +0.9779 0.75 0.740787 0.755792 +0.978 0.75 0.740809 0.755733 +0.9781 0.75 0.740831 0.75567 +0.9782 0.75 0.740854 0.755601 +0.9783 0.75 0.740878 0.755529 +0.9784 0.75 0.740902 0.755452 +0.9785 0.75 0.740926 0.75537 +0.9786 0.75 0.74095 0.755284 +0.9787 0.75 0.740976 0.755193 +0.9788 0.75 0.741001 0.755099 +0.9789 0.75 0.741027 0.754999 +0.979 0.75 0.741053 0.754896 +0.9791 0.75 0.74108 0.754788 +0.9792 0.75 0.741108 0.754677 +0.9793 0.75 0.741135 0.754561 +0.9794 0.75 0.741163 0.754441 +0.9795 0.75 0.741192 0.754317 +0.9796 0.75 0.741221 0.754189 +0.9797 0.75 0.74125 0.754058 +0.9798 0.75 0.74128 0.753923 +0.9799 0.75 0.741311 0.753784 +0.98 0.75 0.741342 0.753642 +0.9801 0.75 0.741373 0.753496 +0.9802 0.75 0.741405 0.753347 +0.9803 0.75 0.741437 0.753195 +0.9804 0.75 0.741469 0.75304 +0.9805 0.75 0.741502 0.752881 +0.9806 0.75 0.741536 0.75272 +0.9807 0.75 0.74157 0.752556 +0.9808 0.75 0.741604 0.75239 +0.9809 0.75 0.741639 0.752221 +0.981 0.75 0.741675 0.752049 +0.9811 0.75 0.741711 0.751876 +0.9812 0.75 0.741747 0.7517 +0.9813 0.75 0.741784 0.751523 +0.9814 0.75 0.741821 0.751343 +0.9815 0.75 0.741859 0.751162 +0.9816 0.75 0.741897 0.75098 +0.9817 0.75 0.741936 0.750796 +0.9818 0.75 0.741975 0.750611 +0.9819 0.75 0.742014 0.750425 +0.982 0.75 0.742055 0.750238 +0.9821 0.75 0.742095 0.75005 +0.9822 0.75 0.742136 0.749862 +0.9823 0.75 0.742178 0.749674 +0.9824 0.75 0.74222 0.749485 +0.9825 0.75 0.742263 0.749297 +0.9826 0.75 0.742306 0.749109 +0.9827 0.75 0.742349 0.748921 +0.9828 0.75 0.742393 0.748734 +0.9829 0.75 0.742438 0.748548 +0.983 0.75 0.742483 0.748362 +0.9831 0.75 0.742528 0.748178 +0.9832 0.75 0.742574 0.747995 +0.9833 0.75 0.742621 0.747814 +0.9834 0.75 0.742668 0.747635 +0.9835 0.75 0.742716 0.747457 +0.9836 0.75 0.742764 0.747282 +0.9837 0.75 0.742812 0.747109 +0.9838 0.75 0.742861 0.746939 +0.9839 0.75 0.742911 0.746771 +0.984 0.75 0.742961 0.746607 +0.9841 0.75 0.743012 0.746445 +0.9842 0.75 0.743063 0.746287 +0.9843 0.75 0.743115 0.746133 +0.9844 0.75 0.743167 0.745982 +0.9845 0.75 0.743219 0.745836 +0.9846 0.75 0.743273 0.745693 +0.9847 0.75 0.743327 0.745555 +0.9848 0.75 0.743381 0.745422 +0.9849 0.75 0.743436 0.745293 +0.985 0.75 0.743491 0.745169 +0.9851 0.75 0.743547 0.745051 +0.9852 0.75 0.743603 0.744937 +0.9853 0.75 0.74366 0.744829 +0.9854 0.75 0.743718 0.744727 +0.9855 0.75 0.743776 0.744631 +0.9856 0.75 0.743835 0.744541 +0.9857 0.75 0.743894 0.744457 +0.9858 0.75 0.743953 0.744379 +0.9859 0.75 0.744014 0.744308 +0.986 0.75 0.744074 0.744244 +0.9861 0.75 0.744136 0.744186 +0.9862 0.75 0.744198 0.744135 +0.9863 0.75 0.74426 0.744092 +0.9864 0.75 0.744323 0.744055 +0.9865 0.75 0.744387 0.744026 +0.9866 0.75 0.744451 0.744005 +0.9867 0.75 0.744516 0.743991 +0.9868 0.75 0.744581 0.743984 +0.9869 0.75 0.744647 0.743986 +0.987 0.75 0.744713 0.743995 +0.9871 0.75 0.74478 0.744012 +0.9872 0.75 0.744848 0.744037 +0.9873 0.75 0.744916 0.74407 +0.9874 0.75 0.744984 0.744111 +0.9875 0.75 0.745054 0.74416 +0.9876 0.75 0.745124 0.744218 +0.9877 0.75 0.745194 0.744284 +0.9878 0.75 0.745265 0.744357 +0.9879 0.75 0.745337 0.744439 +0.988 0.75 0.745409 0.744529 +0.9881 0.75 0.745482 0.744627 +0.9882 0.75 0.745555 0.744733 +0.9883 0.75 0.745629 0.744848 +0.9884 0.75 0.745703 0.74497 +0.9885 0.75 0.745778 0.7451 +0.9886 0.75 0.745854 0.745237 +0.9887 0.75 0.745931 0.745383 +0.9888 0.75 0.746007 0.745536 +0.9889 0.75 0.746085 0.745696 +0.989 0.75 0.746163 0.745864 +0.9891 0.75 0.746242 0.746038 +0.9892 0.75 0.746321 0.74622 +0.9893 0.75 0.746401 0.746408 +0.9894 0.75 0.746482 0.746603 +0.9895 0.75 0.746563 0.746804 +0.9896 0.75 0.746645 0.747011 +0.9897 0.75 0.746727 0.747224 +0.9898 0.75 0.74681 0.747443 +0.9899 0.75 0.746894 0.747667 +0.99 0.75 0.746978 0.747895 +0.9901 0.75 0.747063 0.748128 +0.9902 0.75 0.747149 0.748366 +0.9903 0.75 0.747235 0.748608 +0.9904 0.75 0.747322 0.748853 +0.9905 0.75 0.747409 0.749101 +0.9906 0.75 0.747497 0.749352 +0.9907 0.75 0.747586 0.749605 +0.9908 0.75 0.747675 0.749861 +0.9909 0.75 0.747765 0.750118 +0.991 0.75 0.747856 0.750376 +0.9911 0.75 0.747947 0.750635 +0.9912 0.75 0.748039 0.750894 +0.9913 0.75 0.748131 0.751152 +0.9914 0.75 0.748225 0.75141 +0.9915 0.75 0.748318 0.751666 +0.9916 0.75 0.748413 0.75192 +0.9917 0.75 0.748508 0.752172 +0.9918 0.75 0.748604 0.752421 +0.9919 0.75 0.7487 0.752666 +0.992 0.75 0.748798 0.752907 +0.9921 0.75 0.748895 0.753143 +0.9922 0.75 0.748994 0.753374 +0.9923 0.75 0.749093 0.753599 +0.9924 0.75 0.749193 0.753817 +0.9925 0.75 0.749293 0.754028 +0.9926 0.75 0.749394 0.754231 +0.9927 0.75 0.749496 0.754426 +0.9928 0.75 0.749599 0.754612 +0.9929 0.75 0.749702 0.754788 +0.993 0.75 0.749806 0.754954 +0.9931 0.75 0.74991 0.755109 +0.9932 0.75 0.750015 0.755253 +0.9933 0.75 0.750121 0.755384 +0.9934 0.75 0.750228 0.755503 +0.9935 0.75 0.750335 0.755608 +0.9936 0.75 0.750443 0.7557 +0.9937 0.75 0.750552 0.755777 +0.9938 0.75 0.750661 0.755839 +0.9939 0.75 0.750771 0.755885 +0.994 0.75 0.750882 0.755916 +0.9941 0.75 0.750993 0.75593 +0.9942 0.75 0.751105 0.755927 +0.9943 0.75 0.751218 0.755907 +0.9944 0.75 0.751332 0.755869 +0.9945 0.75 0.751446 0.755813 +0.9946 0.75 0.751561 0.755738 +0.9947 0.75 0.751677 0.755645 +0.9948 0.75 0.751793 0.755533 +0.9949 0.75 0.75191 0.755402 +0.995 0.75 0.752028 0.755252 +0.9951 0.75 0.752147 0.755082 +0.9952 0.75 0.752266 0.754893 +0.9953 0.75 0.752386 0.754685 +0.9954 0.75 0.752507 0.754458 +0.9955 0.75 0.752628 0.754212 +0.9956 0.75 0.75275 0.753948 +0.9957 0.75 0.752873 0.753665 +0.9958 0.75 0.752997 0.753365 +0.9959 0.75 0.753121 0.753048 +0.996 0.75 0.753246 0.752714 +0.9961 0.75 0.753372 0.752365 +0.9962 0.75 0.753499 0.752001 +0.9963 0.75 0.753626 0.751624 +0.9964 0.75 0.753754 0.751234 +0.9965 0.75 0.753883 0.750833 +0.9966 0.75 0.754013 0.750423 +0.9967 0.75 0.754143 0.750004 +0.9968 0.75 0.754274 0.74958 +0.9969 0.75 0.754406 0.749151 +0.997 0.75 0.754539 0.74872 +0.9971 0.75 0.754672 0.748289 +0.9972 0.75 0.754806 0.747861 +0.9973 0.75 0.754941 0.747438 +0.9974 0.75 0.755077 0.747024 +0.9975 0.75 0.755213 0.746621 +0.9976 0.75 0.75535 0.746234 +0.9977 0.75 0.755488 0.745865 +0.9978 0.75 0.755627 0.745518 +0.9979 0.75 0.755767 0.745199 +0.998 0.75 0.755907 0.744911 +0.9981 0.75 0.756048 0.74466 +0.9982 0.75 0.75619 0.744449 +0.9983 0.75 0.756333 0.744286 +0.9984 0.75 0.756476 0.744175 +0.9985 0.75 0.75662 0.744122 +0.9986 0.75 0.756765 0.744136 +0.9987 0.75 0.756911 0.744221 +0.9988 0.75 0.757058 0.744386 +0.9989 0.75 0.757205 0.744638 +0.999 0.75 0.757353 0.744985 +0.9991 0.75 0.757502 0.745437 +0.9992 0.75 0.757652 0.746002 +0.9993 0.75 0.757803 0.746689 +0.9994 0.75 0.757954 0.74751 +0.9995 0.75 0.758106 0.748474 +0.9996 0.75 0.758259 0.749594 +0.9997 0.75 0.758413 0.750879 +0.9998 0.75 0.758568 0.752344 +0.9999 0.75 0.758723 0.754001 diff --git a/gsl-2.5/doc/examples/combination b/gsl-2.5/doc/examples/combination new file mode 100755 index 00000000..730e3470 --- /dev/null +++ b/gsl-2.5/doc/examples/combination @@ -0,0 +1,228 @@ +#! /bin/sh + +# combination - temporary wrapper script for .libs/combination +# Generated by libtool (GNU libtool) 2.4.2 +# +# The combination program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s/\([`"$\\]\)/\\\1/g' + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command="(cd /home/groups/kipac/chto/package/gsl/gsl-2.5/doc/examples; LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LIBRARY_PATH; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; LD_LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/fftw/include:/home/users/chto/lib/fftw/lib:/home/users/chto/lib/healpix/lib:/home/users/chto/lib/namaster/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/include:/home/users/chto/cpp/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LD_LIBRARY_PATH; PATH=/share/software/user/open/curl/7.54.0/bin:/share/software/user/open/libressl/2.5.3/bin:/home/users/chto/lib/cfitsio:/home/users/chto/lib/cfitsio/include:/home/users/chto/lib:/home/users/chto/bin/bin:/home/users/chto/bin:/home/users/chto/.texlive/bin/x86_64-linux:/home/groups/kipac/chto/anaconda2/envs/newenv3/bin:/home/users/chto/.local/bin/include:/home/users/chto/.local/bin/lib:/home/users/chto/.local/bin:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/bin64:/share/software/user/open/fftw/3.3.6/bin:/home/groups/kipac/chto/anaconda2/condabin:/share/software/user/restricted/ifort/2019/bin:/share/software/user/open/gsl/2.3/bin:/share/software/user/srcc/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/dell/srvadmin/bin:/opt/dell/srvadmin/iSM/bin:/home/users/chto/bin; export PATH; gcc -g -O2 -o \$progdir/\$file combination.o ../../.libs/libgsl.so ../../cblas/.libs/libgslcblas.so -lm -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/.libs -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/cblas/.libs -Wl,-rpath -Wl,/usr/local/lib)" + +# This environment variable determines our operation mode. +if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then + # install mode needs the following variables: + generated_by_libtool_version='2.4.2' + notinst_deplibs=' ../../libgsl.la ../../cblas/libgslcblas.la' +else + # When we are sourced in execute mode, $file and $ECHO are already set. + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + file="$0" + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + ECHO="printf %s\\n" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ which is used only on +# windows platforms, and (c) all begin with the string --lt- +# (application programs are unlikely to have options which match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's ../../libtool value, followed by no. +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=$0 + shift + for lt_opt + do + case "$lt_opt" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%/[^/]*$%%'` + test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=. + lt_dump_F=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%^.*/%%'` + cat "$lt_dump_D/$lt_dump_F" + exit 0 + ;; + --lt-*) + $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n "$lt_option_debug"; then + echo "combination:combination:${LINENO}: libtool wrapper (GNU libtool) 2.4.2" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + $ECHO "combination:combination:${LINENO}: newargv[$lt_dump_args_N]: $lt_arg" + lt_dump_args_N=`expr $lt_dump_args_N + 1` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ + + if test -n "$lt_option_debug"; then + $ECHO "combination:combination:${LINENO}: newargv[0]: $progdir/$program" 1>&2 + func_lt_dump_args ${1+"$@"} 1>&2 + fi + exec "$progdir/$program" ${1+"$@"} + + $ECHO "$0: cannot exec $program $*" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from $@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case " $* " in + *\ --lt-*) + for lt_wr_arg + do + case $lt_wr_arg in + --lt-*) ;; + *) set x "$@" "$lt_wr_arg"; shift;; + esac + shift + done ;; + esac + func_exec_program_core ${1+"$@"} +} + + # Parse options + func_parse_lt_options "$0" ${1+"$@"} + + # Find the directory that this script lives in. + thisdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + test "x$thisdir" = "x$file" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=`ls -ld "$file" | /usr/bin/sed -n 's/.*-> //p'` + while test -n "$file"; do + destdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + + # If there was a directory component, then change thisdir. + if test "x$destdir" != "x$file"; then + case "$destdir" in + [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;; + *) thisdir="$thisdir/$destdir" ;; + esac + fi + + file=`$ECHO "$file" | /usr/bin/sed 's%^.*/%%'` + file=`ls -ld "$thisdir/$file" | /usr/bin/sed -n 's/.*-> //p'` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no + if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then + # special case for '.' + if test "$thisdir" = "."; then + thisdir=`pwd` + fi + # remove .libs from thisdir + case "$thisdir" in + *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /usr/bin/sed 's%[\\/][^\\/]*$%%'` ;; + .libs ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=`cd "$thisdir" && pwd` + test -n "$absdir" && thisdir="$absdir" + + program=lt-'combination' + progdir="$thisdir/.libs" + + if test ! -f "$progdir/$program" || + { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /usr/bin/sed 1q`; \ + test "X$file" != "X$progdir/$program"; }; then + + file="$$-$program" + + if test ! -d "$progdir"; then + mkdir "$progdir" + else + rm -f "$progdir/$file" + fi + + # relink executable if necessary + if test -n "$relink_command"; then + if relink_command_output=`eval $relink_command 2>&1`; then : + else + printf %s\n "$relink_command_output" >&2 + rm -f "$progdir/$file" + exit 1 + fi + fi + + mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null || + { rm -f "$progdir/$program"; + mv -f "$progdir/$file" "$progdir/$program"; } + rm -f "$progdir/$file" + fi + + if test -f "$progdir/$program"; then + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + # Run the actual program with our arguments. + func_exec_program ${1+"$@"} + fi + else + # The program doesn't exist. + $ECHO "$0: error: \`$progdir/$program' does not exist" 1>&2 + $ECHO "This script is just a wrapper for $program." 1>&2 + $ECHO "See the libtool documentation for more information." 1>&2 + exit 1 + fi +fi diff --git a/gsl-2.5/doc/examples/combination.c b/gsl-2.5/doc/examples/combination.c new file mode 100644 index 00000000..708174ff --- /dev/null +++ b/gsl-2.5/doc/examples/combination.c @@ -0,0 +1,25 @@ +#include +#include + +int +main (void) +{ + gsl_combination * c; + size_t i; + + printf ("All subsets of {0,1,2,3} by size:\n") ; + for (i = 0; i <= 4; i++) + { + c = gsl_combination_calloc (4, i); + do + { + printf ("{"); + gsl_combination_fprintf (stdout, c, " %u"); + printf (" }\n"); + } + while (gsl_combination_next (c) == GSL_SUCCESS); + gsl_combination_free (c); + } + + return 0; +} diff --git a/gsl-2.5/doc/examples/combination.txt b/gsl-2.5/doc/examples/combination.txt new file mode 100644 index 00000000..a9050ab2 --- /dev/null +++ b/gsl-2.5/doc/examples/combination.txt @@ -0,0 +1,17 @@ +All subsets of {0,1,2,3} by size: +{ } +{ 0 } +{ 1 } +{ 2 } +{ 3 } +{ 0 1 } +{ 0 2 } +{ 0 3 } +{ 1 2 } +{ 1 3 } +{ 2 3 } +{ 0 1 2 } +{ 0 1 3 } +{ 0 2 3 } +{ 1 2 3 } +{ 0 1 2 3 } diff --git a/gsl-2.5/doc/examples/const b/gsl-2.5/doc/examples/const new file mode 100755 index 00000000..2b8d255b --- /dev/null +++ b/gsl-2.5/doc/examples/const @@ -0,0 +1,228 @@ +#! /bin/sh + +# const - temporary wrapper script for .libs/const +# Generated by libtool (GNU libtool) 2.4.2 +# +# The const program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s/\([`"$\\]\)/\\\1/g' + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command="(cd /home/groups/kipac/chto/package/gsl/gsl-2.5/doc/examples; LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LIBRARY_PATH; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; LD_LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/fftw/include:/home/users/chto/lib/fftw/lib:/home/users/chto/lib/healpix/lib:/home/users/chto/lib/namaster/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/include:/home/users/chto/cpp/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LD_LIBRARY_PATH; PATH=/share/software/user/open/curl/7.54.0/bin:/share/software/user/open/libressl/2.5.3/bin:/home/users/chto/lib/cfitsio:/home/users/chto/lib/cfitsio/include:/home/users/chto/lib:/home/users/chto/bin/bin:/home/users/chto/bin:/home/users/chto/.texlive/bin/x86_64-linux:/home/groups/kipac/chto/anaconda2/envs/newenv3/bin:/home/users/chto/.local/bin/include:/home/users/chto/.local/bin/lib:/home/users/chto/.local/bin:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/bin64:/share/software/user/open/fftw/3.3.6/bin:/home/groups/kipac/chto/anaconda2/condabin:/share/software/user/restricted/ifort/2019/bin:/share/software/user/open/gsl/2.3/bin:/share/software/user/srcc/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/dell/srvadmin/bin:/opt/dell/srvadmin/iSM/bin:/home/users/chto/bin; export PATH; gcc -g -O2 -o \$progdir/\$file const.o ../../.libs/libgsl.so ../../cblas/.libs/libgslcblas.so -lm -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/.libs -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/cblas/.libs -Wl,-rpath -Wl,/usr/local/lib)" + +# This environment variable determines our operation mode. +if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then + # install mode needs the following variables: + generated_by_libtool_version='2.4.2' + notinst_deplibs=' ../../libgsl.la ../../cblas/libgslcblas.la' +else + # When we are sourced in execute mode, $file and $ECHO are already set. + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + file="$0" + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + ECHO="printf %s\\n" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ which is used only on +# windows platforms, and (c) all begin with the string --lt- +# (application programs are unlikely to have options which match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's ../../libtool value, followed by no. +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=$0 + shift + for lt_opt + do + case "$lt_opt" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%/[^/]*$%%'` + test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=. + lt_dump_F=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%^.*/%%'` + cat "$lt_dump_D/$lt_dump_F" + exit 0 + ;; + --lt-*) + $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n "$lt_option_debug"; then + echo "const:const:${LINENO}: libtool wrapper (GNU libtool) 2.4.2" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + $ECHO "const:const:${LINENO}: newargv[$lt_dump_args_N]: $lt_arg" + lt_dump_args_N=`expr $lt_dump_args_N + 1` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ + + if test -n "$lt_option_debug"; then + $ECHO "const:const:${LINENO}: newargv[0]: $progdir/$program" 1>&2 + func_lt_dump_args ${1+"$@"} 1>&2 + fi + exec "$progdir/$program" ${1+"$@"} + + $ECHO "$0: cannot exec $program $*" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from $@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case " $* " in + *\ --lt-*) + for lt_wr_arg + do + case $lt_wr_arg in + --lt-*) ;; + *) set x "$@" "$lt_wr_arg"; shift;; + esac + shift + done ;; + esac + func_exec_program_core ${1+"$@"} +} + + # Parse options + func_parse_lt_options "$0" ${1+"$@"} + + # Find the directory that this script lives in. + thisdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + test "x$thisdir" = "x$file" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=`ls -ld "$file" | /usr/bin/sed -n 's/.*-> //p'` + while test -n "$file"; do + destdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + + # If there was a directory component, then change thisdir. + if test "x$destdir" != "x$file"; then + case "$destdir" in + [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;; + *) thisdir="$thisdir/$destdir" ;; + esac + fi + + file=`$ECHO "$file" | /usr/bin/sed 's%^.*/%%'` + file=`ls -ld "$thisdir/$file" | /usr/bin/sed -n 's/.*-> //p'` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no + if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then + # special case for '.' + if test "$thisdir" = "."; then + thisdir=`pwd` + fi + # remove .libs from thisdir + case "$thisdir" in + *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /usr/bin/sed 's%[\\/][^\\/]*$%%'` ;; + .libs ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=`cd "$thisdir" && pwd` + test -n "$absdir" && thisdir="$absdir" + + program=lt-'const' + progdir="$thisdir/.libs" + + if test ! -f "$progdir/$program" || + { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /usr/bin/sed 1q`; \ + test "X$file" != "X$progdir/$program"; }; then + + file="$$-$program" + + if test ! -d "$progdir"; then + mkdir "$progdir" + else + rm -f "$progdir/$file" + fi + + # relink executable if necessary + if test -n "$relink_command"; then + if relink_command_output=`eval $relink_command 2>&1`; then : + else + printf %s\n "$relink_command_output" >&2 + rm -f "$progdir/$file" + exit 1 + fi + fi + + mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null || + { rm -f "$progdir/$program"; + mv -f "$progdir/$file" "$progdir/$program"; } + rm -f "$progdir/$file" + fi + + if test -f "$progdir/$program"; then + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + # Run the actual program with our arguments. + func_exec_program ${1+"$@"} + fi + else + # The program doesn't exist. + $ECHO "$0: error: \`$progdir/$program' does not exist" 1>&2 + $ECHO "This script is just a wrapper for $program." 1>&2 + $ECHO "See the libtool documentation for more information." 1>&2 + exit 1 + fi +fi diff --git a/gsl-2.5/doc/examples/const.c b/gsl-2.5/doc/examples/const.c new file mode 100644 index 00000000..47718c51 --- /dev/null +++ b/gsl-2.5/doc/examples/const.c @@ -0,0 +1,25 @@ +#include +#include + +int +main (void) +{ + double c = GSL_CONST_MKSA_SPEED_OF_LIGHT; + double au = GSL_CONST_MKSA_ASTRONOMICAL_UNIT; + double minutes = GSL_CONST_MKSA_MINUTE; + + /* distance stored in meters */ + double r_earth = 1.00 * au; + double r_mars = 1.52 * au; + + double t_min, t_max; + + t_min = (r_mars - r_earth) / c; + t_max = (r_mars + r_earth) / c; + + printf ("light travel time from Earth to Mars:\n"); + printf ("minimum = %.1f minutes\n", t_min / minutes); + printf ("maximum = %.1f minutes\n", t_max / minutes); + + return 0; +} diff --git a/gsl-2.5/doc/examples/const.txt b/gsl-2.5/doc/examples/const.txt new file mode 100644 index 00000000..6552a3d9 --- /dev/null +++ b/gsl-2.5/doc/examples/const.txt @@ -0,0 +1,3 @@ +light travel time from Earth to Mars: +minimum = 4.3 minutes +maximum = 21.0 minutes diff --git a/gsl-2.5/doc/examples/demo_fn.c b/gsl-2.5/doc/examples/demo_fn.c new file mode 100644 index 00000000..4910bafa --- /dev/null +++ b/gsl-2.5/doc/examples/demo_fn.c @@ -0,0 +1,39 @@ +double +quadratic (double x, void *params) +{ + struct quadratic_params *p + = (struct quadratic_params *) params; + + double a = p->a; + double b = p->b; + double c = p->c; + + return (a * x + b) * x + c; +} + +double +quadratic_deriv (double x, void *params) +{ + struct quadratic_params *p + = (struct quadratic_params *) params; + + double a = p->a; + double b = p->b; + + return 2.0 * a * x + b; +} + +void +quadratic_fdf (double x, void *params, + double *y, double *dy) +{ + struct quadratic_params *p + = (struct quadratic_params *) params; + + double a = p->a; + double b = p->b; + double c = p->c; + + *y = (a * x + b) * x + c; + *dy = 2.0 * a * x + b; +} diff --git a/gsl-2.5/doc/examples/demo_fn.h b/gsl-2.5/doc/examples/demo_fn.h new file mode 100644 index 00000000..77aeea1d --- /dev/null +++ b/gsl-2.5/doc/examples/demo_fn.h @@ -0,0 +1,9 @@ +struct quadratic_params + { + double a, b, c; + }; + +double quadratic (double x, void *params); +double quadratic_deriv (double x, void *params); +void quadratic_fdf (double x, void *params, + double *y, double *dy); diff --git a/gsl-2.5/doc/examples/diff b/gsl-2.5/doc/examples/diff new file mode 100755 index 00000000..8c5006df --- /dev/null +++ b/gsl-2.5/doc/examples/diff @@ -0,0 +1,228 @@ +#! /bin/sh + +# diff - temporary wrapper script for .libs/diff +# Generated by libtool (GNU libtool) 2.4.2 +# +# The diff program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s/\([`"$\\]\)/\\\1/g' + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command="(cd /home/groups/kipac/chto/package/gsl/gsl-2.5/doc/examples; LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LIBRARY_PATH; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; LD_LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/fftw/include:/home/users/chto/lib/fftw/lib:/home/users/chto/lib/healpix/lib:/home/users/chto/lib/namaster/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/include:/home/users/chto/cpp/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LD_LIBRARY_PATH; PATH=/share/software/user/open/curl/7.54.0/bin:/share/software/user/open/libressl/2.5.3/bin:/home/users/chto/lib/cfitsio:/home/users/chto/lib/cfitsio/include:/home/users/chto/lib:/home/users/chto/bin/bin:/home/users/chto/bin:/home/users/chto/.texlive/bin/x86_64-linux:/home/groups/kipac/chto/anaconda2/envs/newenv3/bin:/home/users/chto/.local/bin/include:/home/users/chto/.local/bin/lib:/home/users/chto/.local/bin:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/bin64:/share/software/user/open/fftw/3.3.6/bin:/home/groups/kipac/chto/anaconda2/condabin:/share/software/user/restricted/ifort/2019/bin:/share/software/user/open/gsl/2.3/bin:/share/software/user/srcc/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/dell/srvadmin/bin:/opt/dell/srvadmin/iSM/bin:/home/users/chto/bin; export PATH; gcc -g -O2 -o \$progdir/\$file diff.o ../../.libs/libgsl.so ../../cblas/.libs/libgslcblas.so -lm -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/.libs -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/cblas/.libs -Wl,-rpath -Wl,/usr/local/lib)" + +# This environment variable determines our operation mode. +if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then + # install mode needs the following variables: + generated_by_libtool_version='2.4.2' + notinst_deplibs=' ../../libgsl.la ../../cblas/libgslcblas.la' +else + # When we are sourced in execute mode, $file and $ECHO are already set. + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + file="$0" + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + ECHO="printf %s\\n" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ which is used only on +# windows platforms, and (c) all begin with the string --lt- +# (application programs are unlikely to have options which match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's ../../libtool value, followed by no. +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=$0 + shift + for lt_opt + do + case "$lt_opt" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%/[^/]*$%%'` + test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=. + lt_dump_F=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%^.*/%%'` + cat "$lt_dump_D/$lt_dump_F" + exit 0 + ;; + --lt-*) + $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n "$lt_option_debug"; then + echo "diff:diff:${LINENO}: libtool wrapper (GNU libtool) 2.4.2" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + $ECHO "diff:diff:${LINENO}: newargv[$lt_dump_args_N]: $lt_arg" + lt_dump_args_N=`expr $lt_dump_args_N + 1` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ + + if test -n "$lt_option_debug"; then + $ECHO "diff:diff:${LINENO}: newargv[0]: $progdir/$program" 1>&2 + func_lt_dump_args ${1+"$@"} 1>&2 + fi + exec "$progdir/$program" ${1+"$@"} + + $ECHO "$0: cannot exec $program $*" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from $@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case " $* " in + *\ --lt-*) + for lt_wr_arg + do + case $lt_wr_arg in + --lt-*) ;; + *) set x "$@" "$lt_wr_arg"; shift;; + esac + shift + done ;; + esac + func_exec_program_core ${1+"$@"} +} + + # Parse options + func_parse_lt_options "$0" ${1+"$@"} + + # Find the directory that this script lives in. + thisdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + test "x$thisdir" = "x$file" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=`ls -ld "$file" | /usr/bin/sed -n 's/.*-> //p'` + while test -n "$file"; do + destdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + + # If there was a directory component, then change thisdir. + if test "x$destdir" != "x$file"; then + case "$destdir" in + [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;; + *) thisdir="$thisdir/$destdir" ;; + esac + fi + + file=`$ECHO "$file" | /usr/bin/sed 's%^.*/%%'` + file=`ls -ld "$thisdir/$file" | /usr/bin/sed -n 's/.*-> //p'` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no + if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then + # special case for '.' + if test "$thisdir" = "."; then + thisdir=`pwd` + fi + # remove .libs from thisdir + case "$thisdir" in + *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /usr/bin/sed 's%[\\/][^\\/]*$%%'` ;; + .libs ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=`cd "$thisdir" && pwd` + test -n "$absdir" && thisdir="$absdir" + + program=lt-'diff' + progdir="$thisdir/.libs" + + if test ! -f "$progdir/$program" || + { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /usr/bin/sed 1q`; \ + test "X$file" != "X$progdir/$program"; }; then + + file="$$-$program" + + if test ! -d "$progdir"; then + mkdir "$progdir" + else + rm -f "$progdir/$file" + fi + + # relink executable if necessary + if test -n "$relink_command"; then + if relink_command_output=`eval $relink_command 2>&1`; then : + else + printf %s\n "$relink_command_output" >&2 + rm -f "$progdir/$file" + exit 1 + fi + fi + + mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null || + { rm -f "$progdir/$program"; + mv -f "$progdir/$file" "$progdir/$program"; } + rm -f "$progdir/$file" + fi + + if test -f "$progdir/$program"; then + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + # Run the actual program with our arguments. + func_exec_program ${1+"$@"} + fi + else + # The program doesn't exist. + $ECHO "$0: error: \`$progdir/$program' does not exist" 1>&2 + $ECHO "This script is just a wrapper for $program." 1>&2 + $ECHO "See the libtool documentation for more information." 1>&2 + exit 1 + fi +fi diff --git a/gsl-2.5/doc/examples/diff.c b/gsl-2.5/doc/examples/diff.c new file mode 100644 index 00000000..e32f1929 --- /dev/null +++ b/gsl-2.5/doc/examples/diff.c @@ -0,0 +1,33 @@ +#include +#include +#include + +double f (double x, void * params) +{ + (void)(params); /* avoid unused parameter warning */ + return pow (x, 1.5); +} + +int +main (void) +{ + gsl_function F; + double result, abserr; + + F.function = &f; + F.params = 0; + + printf ("f(x) = x^(3/2)\n"); + + gsl_deriv_central (&F, 2.0, 1e-8, &result, &abserr); + printf ("x = 2.0\n"); + printf ("f'(x) = %.10f +/- %.10f\n", result, abserr); + printf ("exact = %.10f\n\n", 1.5 * sqrt(2.0)); + + gsl_deriv_forward (&F, 0.0, 1e-8, &result, &abserr); + printf ("x = 0.0\n"); + printf ("f'(x) = %.10f +/- %.10f\n", result, abserr); + printf ("exact = %.10f\n", 0.0); + + return 0; +} diff --git a/gsl-2.5/doc/examples/diff.txt b/gsl-2.5/doc/examples/diff.txt new file mode 100644 index 00000000..34bffe6e --- /dev/null +++ b/gsl-2.5/doc/examples/diff.txt @@ -0,0 +1,8 @@ +f(x) = x^(3/2) +x = 2.0 +f'(x) = 2.1213203120 +/- 0.0000005006 +exact = 2.1213203436 + +x = 0.0 +f'(x) = 0.0000000160 +/- 0.0000000339 +exact = 0.0000000000 diff --git a/gsl-2.5/doc/examples/dwt b/gsl-2.5/doc/examples/dwt new file mode 100755 index 00000000..ee3d3d64 --- /dev/null +++ b/gsl-2.5/doc/examples/dwt @@ -0,0 +1,228 @@ +#! /bin/sh + +# dwt - temporary wrapper script for .libs/dwt +# Generated by libtool (GNU libtool) 2.4.2 +# +# The dwt program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s/\([`"$\\]\)/\\\1/g' + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command="(cd /home/groups/kipac/chto/package/gsl/gsl-2.5/doc/examples; LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LIBRARY_PATH; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; LD_LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/fftw/include:/home/users/chto/lib/fftw/lib:/home/users/chto/lib/healpix/lib:/home/users/chto/lib/namaster/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/include:/home/users/chto/cpp/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LD_LIBRARY_PATH; PATH=/share/software/user/open/curl/7.54.0/bin:/share/software/user/open/libressl/2.5.3/bin:/home/users/chto/lib/cfitsio:/home/users/chto/lib/cfitsio/include:/home/users/chto/lib:/home/users/chto/bin/bin:/home/users/chto/bin:/home/users/chto/.texlive/bin/x86_64-linux:/home/groups/kipac/chto/anaconda2/envs/newenv3/bin:/home/users/chto/.local/bin/include:/home/users/chto/.local/bin/lib:/home/users/chto/.local/bin:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/bin64:/share/software/user/open/fftw/3.3.6/bin:/home/groups/kipac/chto/anaconda2/condabin:/share/software/user/restricted/ifort/2019/bin:/share/software/user/open/gsl/2.3/bin:/share/software/user/srcc/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/dell/srvadmin/bin:/opt/dell/srvadmin/iSM/bin:/home/users/chto/bin; export PATH; gcc -g -O2 -o \$progdir/\$file dwt.o ../../.libs/libgsl.so ../../cblas/.libs/libgslcblas.so -lm -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/.libs -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/cblas/.libs -Wl,-rpath -Wl,/usr/local/lib)" + +# This environment variable determines our operation mode. +if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then + # install mode needs the following variables: + generated_by_libtool_version='2.4.2' + notinst_deplibs=' ../../libgsl.la ../../cblas/libgslcblas.la' +else + # When we are sourced in execute mode, $file and $ECHO are already set. + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + file="$0" + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + ECHO="printf %s\\n" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ which is used only on +# windows platforms, and (c) all begin with the string --lt- +# (application programs are unlikely to have options which match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's ../../libtool value, followed by no. +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=$0 + shift + for lt_opt + do + case "$lt_opt" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%/[^/]*$%%'` + test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=. + lt_dump_F=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%^.*/%%'` + cat "$lt_dump_D/$lt_dump_F" + exit 0 + ;; + --lt-*) + $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n "$lt_option_debug"; then + echo "dwt:dwt:${LINENO}: libtool wrapper (GNU libtool) 2.4.2" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + $ECHO "dwt:dwt:${LINENO}: newargv[$lt_dump_args_N]: $lt_arg" + lt_dump_args_N=`expr $lt_dump_args_N + 1` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ + + if test -n "$lt_option_debug"; then + $ECHO "dwt:dwt:${LINENO}: newargv[0]: $progdir/$program" 1>&2 + func_lt_dump_args ${1+"$@"} 1>&2 + fi + exec "$progdir/$program" ${1+"$@"} + + $ECHO "$0: cannot exec $program $*" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from $@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case " $* " in + *\ --lt-*) + for lt_wr_arg + do + case $lt_wr_arg in + --lt-*) ;; + *) set x "$@" "$lt_wr_arg"; shift;; + esac + shift + done ;; + esac + func_exec_program_core ${1+"$@"} +} + + # Parse options + func_parse_lt_options "$0" ${1+"$@"} + + # Find the directory that this script lives in. + thisdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + test "x$thisdir" = "x$file" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=`ls -ld "$file" | /usr/bin/sed -n 's/.*-> //p'` + while test -n "$file"; do + destdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + + # If there was a directory component, then change thisdir. + if test "x$destdir" != "x$file"; then + case "$destdir" in + [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;; + *) thisdir="$thisdir/$destdir" ;; + esac + fi + + file=`$ECHO "$file" | /usr/bin/sed 's%^.*/%%'` + file=`ls -ld "$thisdir/$file" | /usr/bin/sed -n 's/.*-> //p'` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no + if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then + # special case for '.' + if test "$thisdir" = "."; then + thisdir=`pwd` + fi + # remove .libs from thisdir + case "$thisdir" in + *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /usr/bin/sed 's%[\\/][^\\/]*$%%'` ;; + .libs ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=`cd "$thisdir" && pwd` + test -n "$absdir" && thisdir="$absdir" + + program=lt-'dwt' + progdir="$thisdir/.libs" + + if test ! -f "$progdir/$program" || + { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /usr/bin/sed 1q`; \ + test "X$file" != "X$progdir/$program"; }; then + + file="$$-$program" + + if test ! -d "$progdir"; then + mkdir "$progdir" + else + rm -f "$progdir/$file" + fi + + # relink executable if necessary + if test -n "$relink_command"; then + if relink_command_output=`eval $relink_command 2>&1`; then : + else + printf %s\n "$relink_command_output" >&2 + rm -f "$progdir/$file" + exit 1 + fi + fi + + mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null || + { rm -f "$progdir/$program"; + mv -f "$progdir/$file" "$progdir/$program"; } + rm -f "$progdir/$file" + fi + + if test -f "$progdir/$program"; then + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + # Run the actual program with our arguments. + func_exec_program ${1+"$@"} + fi + else + # The program doesn't exist. + $ECHO "$0: error: \`$progdir/$program' does not exist" 1>&2 + $ECHO "This script is just a wrapper for $program." 1>&2 + $ECHO "See the libtool documentation for more information." 1>&2 + exit 1 + fi +fi diff --git a/gsl-2.5/doc/examples/dwt.c b/gsl-2.5/doc/examples/dwt.c new file mode 100644 index 00000000..422c55d5 --- /dev/null +++ b/gsl-2.5/doc/examples/dwt.c @@ -0,0 +1,58 @@ +#include +#include +#include +#include + +int +main (int argc, char **argv) +{ + (void)(argc); /* avoid unused parameter warning */ + int i, n = 256, nc = 20; + double *orig_data = malloc (n * sizeof (double)); + double *data = malloc (n * sizeof (double)); + double *abscoeff = malloc (n * sizeof (double)); + size_t *p = malloc (n * sizeof (size_t)); + + FILE * f; + gsl_wavelet *w; + gsl_wavelet_workspace *work; + + w = gsl_wavelet_alloc (gsl_wavelet_daubechies, 4); + work = gsl_wavelet_workspace_alloc (n); + + f = fopen (argv[1], "r"); + for (i = 0; i < n; i++) + { + fscanf (f, "%lg", &orig_data[i]); + data[i] = orig_data[i]; + } + fclose (f); + + gsl_wavelet_transform_forward (w, data, 1, n, work); + + for (i = 0; i < n; i++) + { + abscoeff[i] = fabs (data[i]); + } + + gsl_sort_index (p, abscoeff, 1, n); + + for (i = 0; (i + nc) < n; i++) + data[p[i]] = 0; + + gsl_wavelet_transform_inverse (w, data, 1, n, work); + + for (i = 0; i < n; i++) + { + printf ("%g %g\n", orig_data[i], data[i]); + } + + gsl_wavelet_free (w); + gsl_wavelet_workspace_free (work); + + free (data); + free (orig_data); + free (abscoeff); + free (p); + return 0; +} diff --git a/gsl-2.5/doc/examples/dwt.txt b/gsl-2.5/doc/examples/dwt.txt new file mode 100644 index 00000000..297186fd --- /dev/null +++ b/gsl-2.5/doc/examples/dwt.txt @@ -0,0 +1,256 @@ +0.0462458 0.0167729 +0.0462458 0.031888 +0.0512458 0.0412921 +0.0712458 0.0522264 +0.0712458 0.0574496 +0.0662458 0.0642031 +0.0962458 0.0724869 +0.101246 0.0803607 +0.116246 0.0825233 +0.121246 0.0862162 +0.116246 0.0914394 +0.106246 0.0962525 +0.0912458 0.102596 +0.101246 0.108529 +0.0962458 0.114053 +0.0962458 0.119686 +0.0962458 0.104007 +0.0912458 0.094039 +0.0862458 0.0897813 +0.0812458 0.0839935 +0.0862458 0.0839162 +0.101246 0.0823088 +0.111246 0.0791713 +0.116246 0.0764437 +0.0762458 0.0509741 +0.0362458 0.0315983 +0.0362458 0.0183161 +0.0212458 0.00340114 +0.0112458 -0.00542012 +-0.00875415 -0.0158742 +-0.00875415 -0.0279611 +-0.00375415 -0.0396104 +0.00624585 -0.0160286 +0.00124585 -0.00188697 +0.00624585 0.00281451 +-0.00375415 0.0100455 +-0.0187542 0.00783627 +-0.0237542 0.00815656 +-0.0187542 0.0110063 +-0.0187542 0.0131783 +-0.0287542 0.00591016 +-0.0237542 0.00117148 +-0.0337542 -0.00103772 +-0.00875415 -0.00392469 +-0.0137542 -0.00428218 +-0.00875415 -0.00531744 +0.00124585 -0.00703047 +-0.0237542 -0.0085619 +-0.0337542 -0.014332 +-0.0187542 -0.0189663 +-0.00875415 -0.0224649 +-0.00375415 -0.0262678 +-0.00875415 -0.0289349 +-0.0287542 -0.0319064 +-0.0437542 -0.0351822 +-0.0387542 -0.0383765 +-0.0587542 -0.0801973 +-0.103754 -0.111668 +-0.123754 -0.132789 +-0.153754 -0.156683 +-0.188754 -0.162696 +-0.213754 -0.1735 +-0.183754 -0.189095 +-0.0937542 -0.203407 +0.0212458 -0.00510083 +0.161246 0.136235 +0.306246 0.341101 +0.556246 0.528945 +0.811246 0.801527 +1.04125 1.0514 +1.19625 1.15485 +1.26125 1.29754 +1.22625 1.16912 +1.07625 1.11335 +0.811246 0.760921 +0.486246 0.487984 +0.211246 0.24772 +0.0512458 -0.00129903 +-0.0687542 -0.0610099 +-0.128754 -0.171446 +-0.153754 -0.102442 +-0.133754 -0.081519 +-0.103754 -0.108677 +-0.0687542 -0.122951 +-0.0687542 -0.0931296 +-0.0637542 -0.0751235 +-0.0687542 -0.0689329 +-0.0587542 -0.0595764 +-0.0587542 -0.0723311 +-0.0587542 -0.0791611 +-0.0737542 -0.0800665 +-0.0637542 -0.0825593 +-0.0637542 -0.0791275 +-0.0637542 -0.0772832 +-0.0537542 -0.0770263 +-0.0737542 -0.0763442 +-0.0887542 -0.078946 +-0.0887542 -0.080668 +-0.0787542 -0.0815099 +-0.0737542 -0.0825877 +-0.0687542 -0.0827855 +-0.0837542 -0.083219 +-0.0737542 -0.0838884 +-0.0637542 -0.0844945 +-0.0537542 -0.0842208 +-0.0687542 -0.0841828 +-0.0687542 -0.0843805 +-0.0837542 -0.0845151 +-0.0887542 -0.0848855 +-0.0887542 -0.0851927 +-0.0687542 -0.0854368 +-0.0687542 -0.0856977 +-0.0737542 -0.0858204 +-0.0837542 -0.0859801 +-0.0937542 -0.0861769 +-0.0787542 -0.0863638 +-0.0887542 -0.0865877 +-0.0837542 -0.0868017 +-0.0887542 -0.0870057 +-0.0937542 -0.0872124 +-0.0887542 -0.0874562 +-0.0787542 -0.08769 +-0.0787542 -0.0879139 +-0.0737542 -0.0881405 +-0.0687542 -0.0883571 +-0.0837542 -0.0885764 +-0.0887542 -0.0887984 +-0.0687542 -0.0890196 +-0.0687542 -0.0890797 +-0.0637542 -0.0891829 +-0.0637542 -0.0893293 +-0.0887542 -0.0894642 +-0.0837542 -0.0896423 +-0.0737542 -0.0898087 +-0.0687542 -0.0899636 +-0.0537542 -0.0901216 +-0.0687542 -0.0903228 +-0.0737542 -0.0905125 +-0.0887542 -0.0906905 +-0.0787542 -0.0908717 +-0.0687542 -0.0910413 +-0.0687542 -0.0912139 +-0.0637542 -0.0913897 +-0.0837542 -0.0915647 +-0.0937542 -0.0917828 +-0.0937542 -0.0919894 +-0.0787542 -0.0921844 +-0.0737542 -0.0923825 +-0.0837542 -0.092569 +-0.0937542 -0.0927586 +-0.0987542 -0.0929514 +-0.0987542 -0.0931433 +-0.0887542 -0.0933236 +-0.0937542 -0.093507 +-0.103754 -0.0936935 +-0.0987542 -0.0938792 +-0.113754 -0.094068 +-0.108754 -0.094256 +-0.108754 -0.0944431 +-0.0987542 -0.0946305 +-0.108754 -0.103627 +-0.128754 -0.110264 +-0.133754 -0.11454 +-0.128754 -0.119448 +-0.113754 -0.121996 +-0.123754 -0.125177 +-0.128754 -0.12899 +-0.133754 -0.132633 +-0.148754 -0.133916 +-0.138754 -0.135831 +-0.133754 -0.138379 +-0.128754 -0.140758 +-0.133754 -0.143768 +-0.148754 -0.14661 +-0.153754 -0.149282 +-0.138754 -0.151999 +-0.128754 -0.121242 +-0.123754 -0.0994544 +-0.118754 -0.0866362 +-0.113754 -0.0714146 +-0.118754 -0.0651625 +-0.0887542 -0.056507 +-0.0737542 -0.0454482 +-0.0487542 -0.0350333 +-0.0437542 -0.033588 +-0.0387542 -0.0297392 +-0.0437542 -0.0234871 +-0.0187542 -0.017879 +-0.00375415 -0.00986753 +0.00624585 -0.00250002 +0.00124585 0.00422351 +-0.00875415 0.0111196 +-0.00875415 -0.00226639 +0.00124585 -0.0102178 +0.0112458 -0.0127347 +0.0212458 -0.0167077 +0.0212458 -0.0152462 +0.00124585 -0.0152409 +0.00124585 -0.0166917 +0.00624585 -0.0177524 +0.0162458 -0.0133785 +0.0162458 -0.0104608 +0.0262458 -0.00899926 +0.00124585 -0.00714755 +-0.00875415 -0.00675204 +0.0162458 -0.00596633 +0.0112458 -0.00479045 +0.0212458 -0.00371911 +0.0212458 0.00278678 +0.00124585 0.00783649 +-0.00375415 0.01143 +0.0112458 0.0154137 +0.0162458 0.0179412 +0.00624585 0.0208589 +0.0162458 0.0241668 +0.00624585 0.0273702 +0.00624585 0.0291173 +0.0112458 0.0312547 +0.0262458 0.0337822 +0.0312458 0.0362052 +0.0162458 0.0390183 +0.0112458 0.0417269 +0.00124585 0.044331 +0.00624585 0.0469631 +0.0212458 0.0347545 +0.00624585 0.0265225 +0.00624585 0.0222671 +0.00624585 0.0169461 +-0.00875415 0.0156016 +0.00624585 0.0131917 +0.00124585 0.00971622 +0.00624585 0.00652626 +-0.00375415 0.00731282 +-0.0137542 0.00703387 +-0.0187542 0.00568942 +-0.0137542 0.00463047 +-0.0137542 0.00250601 +-0.00875415 0.000667052 +-0.00375415 -0.000886403 +-0.0237542 -0.00251636 +-0.0287542 -0.000169788 +-0.0237542 0.00111128 +-0.0137542 0.00132683 +-0.00875415 0.00182789 +-0.00875415 0.00126344 +-0.0237542 0.000984496 +-0.0237542 0.000991051 +-0.0237542 0.000921107 +0.00124585 -0.000214344 +-0.00875415 -0.00106429 +-0.0137542 -0.00162874 +-0.0187542 -0.00226969 +-0.0337542 -0.00262514 +-0.0137542 -0.00305708 +-0.00875415 -0.00356553 +-0.00875415 -0.00405348 diff --git a/gsl-2.5/doc/examples/eigen b/gsl-2.5/doc/examples/eigen new file mode 100755 index 00000000..859bc850 --- /dev/null +++ b/gsl-2.5/doc/examples/eigen @@ -0,0 +1,228 @@ +#! /bin/sh + +# eigen - temporary wrapper script for .libs/eigen +# Generated by libtool (GNU libtool) 2.4.2 +# +# The eigen program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s/\([`"$\\]\)/\\\1/g' + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command="(cd /home/groups/kipac/chto/package/gsl/gsl-2.5/doc/examples; LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LIBRARY_PATH; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; LD_LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/fftw/include:/home/users/chto/lib/fftw/lib:/home/users/chto/lib/healpix/lib:/home/users/chto/lib/namaster/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/include:/home/users/chto/cpp/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LD_LIBRARY_PATH; PATH=/share/software/user/open/curl/7.54.0/bin:/share/software/user/open/libressl/2.5.3/bin:/home/users/chto/lib/cfitsio:/home/users/chto/lib/cfitsio/include:/home/users/chto/lib:/home/users/chto/bin/bin:/home/users/chto/bin:/home/users/chto/.texlive/bin/x86_64-linux:/home/groups/kipac/chto/anaconda2/envs/newenv3/bin:/home/users/chto/.local/bin/include:/home/users/chto/.local/bin/lib:/home/users/chto/.local/bin:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/bin64:/share/software/user/open/fftw/3.3.6/bin:/home/groups/kipac/chto/anaconda2/condabin:/share/software/user/restricted/ifort/2019/bin:/share/software/user/open/gsl/2.3/bin:/share/software/user/srcc/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/dell/srvadmin/bin:/opt/dell/srvadmin/iSM/bin:/home/users/chto/bin; export PATH; gcc -g -O2 -o \$progdir/\$file eigen.o ../../.libs/libgsl.so ../../cblas/.libs/libgslcblas.so -lm -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/.libs -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/cblas/.libs -Wl,-rpath -Wl,/usr/local/lib)" + +# This environment variable determines our operation mode. +if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then + # install mode needs the following variables: + generated_by_libtool_version='2.4.2' + notinst_deplibs=' ../../libgsl.la ../../cblas/libgslcblas.la' +else + # When we are sourced in execute mode, $file and $ECHO are already set. + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + file="$0" + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + ECHO="printf %s\\n" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ which is used only on +# windows platforms, and (c) all begin with the string --lt- +# (application programs are unlikely to have options which match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's ../../libtool value, followed by no. +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=$0 + shift + for lt_opt + do + case "$lt_opt" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%/[^/]*$%%'` + test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=. + lt_dump_F=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%^.*/%%'` + cat "$lt_dump_D/$lt_dump_F" + exit 0 + ;; + --lt-*) + $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n "$lt_option_debug"; then + echo "eigen:eigen:${LINENO}: libtool wrapper (GNU libtool) 2.4.2" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + $ECHO "eigen:eigen:${LINENO}: newargv[$lt_dump_args_N]: $lt_arg" + lt_dump_args_N=`expr $lt_dump_args_N + 1` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ + + if test -n "$lt_option_debug"; then + $ECHO "eigen:eigen:${LINENO}: newargv[0]: $progdir/$program" 1>&2 + func_lt_dump_args ${1+"$@"} 1>&2 + fi + exec "$progdir/$program" ${1+"$@"} + + $ECHO "$0: cannot exec $program $*" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from $@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case " $* " in + *\ --lt-*) + for lt_wr_arg + do + case $lt_wr_arg in + --lt-*) ;; + *) set x "$@" "$lt_wr_arg"; shift;; + esac + shift + done ;; + esac + func_exec_program_core ${1+"$@"} +} + + # Parse options + func_parse_lt_options "$0" ${1+"$@"} + + # Find the directory that this script lives in. + thisdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + test "x$thisdir" = "x$file" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=`ls -ld "$file" | /usr/bin/sed -n 's/.*-> //p'` + while test -n "$file"; do + destdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + + # If there was a directory component, then change thisdir. + if test "x$destdir" != "x$file"; then + case "$destdir" in + [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;; + *) thisdir="$thisdir/$destdir" ;; + esac + fi + + file=`$ECHO "$file" | /usr/bin/sed 's%^.*/%%'` + file=`ls -ld "$thisdir/$file" | /usr/bin/sed -n 's/.*-> //p'` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no + if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then + # special case for '.' + if test "$thisdir" = "."; then + thisdir=`pwd` + fi + # remove .libs from thisdir + case "$thisdir" in + *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /usr/bin/sed 's%[\\/][^\\/]*$%%'` ;; + .libs ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=`cd "$thisdir" && pwd` + test -n "$absdir" && thisdir="$absdir" + + program=lt-'eigen' + progdir="$thisdir/.libs" + + if test ! -f "$progdir/$program" || + { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /usr/bin/sed 1q`; \ + test "X$file" != "X$progdir/$program"; }; then + + file="$$-$program" + + if test ! -d "$progdir"; then + mkdir "$progdir" + else + rm -f "$progdir/$file" + fi + + # relink executable if necessary + if test -n "$relink_command"; then + if relink_command_output=`eval $relink_command 2>&1`; then : + else + printf %s\n "$relink_command_output" >&2 + rm -f "$progdir/$file" + exit 1 + fi + fi + + mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null || + { rm -f "$progdir/$program"; + mv -f "$progdir/$file" "$progdir/$program"; } + rm -f "$progdir/$file" + fi + + if test -f "$progdir/$program"; then + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + # Run the actual program with our arguments. + func_exec_program ${1+"$@"} + fi + else + # The program doesn't exist. + $ECHO "$0: error: \`$progdir/$program' does not exist" 1>&2 + $ECHO "This script is just a wrapper for $program." 1>&2 + $ECHO "See the libtool documentation for more information." 1>&2 + exit 1 + fi +fi diff --git a/gsl-2.5/doc/examples/eigen.c b/gsl-2.5/doc/examples/eigen.c new file mode 100644 index 00000000..a24c912f --- /dev/null +++ b/gsl-2.5/doc/examples/eigen.c @@ -0,0 +1,50 @@ +#include +#include +#include + +int +main (void) +{ + double data[] = { 1.0 , 1/2.0, 1/3.0, 1/4.0, + 1/2.0, 1/3.0, 1/4.0, 1/5.0, + 1/3.0, 1/4.0, 1/5.0, 1/6.0, + 1/4.0, 1/5.0, 1/6.0, 1/7.0 }; + + gsl_matrix_view m + = gsl_matrix_view_array (data, 4, 4); + + gsl_vector *eval = gsl_vector_alloc (4); + gsl_matrix *evec = gsl_matrix_alloc (4, 4); + + gsl_eigen_symmv_workspace * w = + gsl_eigen_symmv_alloc (4); + + gsl_eigen_symmv (&m.matrix, eval, evec, w); + + gsl_eigen_symmv_free (w); + + gsl_eigen_symmv_sort (eval, evec, + GSL_EIGEN_SORT_ABS_ASC); + + { + int i; + + for (i = 0; i < 4; i++) + { + double eval_i + = gsl_vector_get (eval, i); + gsl_vector_view evec_i + = gsl_matrix_column (evec, i); + + printf ("eigenvalue = %g\n", eval_i); + printf ("eigenvector = \n"); + gsl_vector_fprintf (stdout, + &evec_i.vector, "%g"); + } + } + + gsl_vector_free (eval); + gsl_matrix_free (evec); + + return 0; +} diff --git a/gsl-2.5/doc/examples/eigen.txt b/gsl-2.5/doc/examples/eigen.txt new file mode 100644 index 00000000..815d495e --- /dev/null +++ b/gsl-2.5/doc/examples/eigen.txt @@ -0,0 +1,24 @@ +eigenvalue = 9.67023e-05 +eigenvector = +-0.0291933 +0.328712 +-0.791411 +0.514553 +eigenvalue = 0.00673827 +eigenvector = +-0.179186 +0.741918 +-0.100228 +-0.638283 +eigenvalue = 0.169141 +eigenvector = +0.582076 +-0.370502 +-0.509579 +-0.514048 +eigenvalue = 1.50021 +eigenvector = +0.792608 +0.451923 +0.322416 +0.252161 diff --git a/gsl-2.5/doc/examples/eigen_nonsymm b/gsl-2.5/doc/examples/eigen_nonsymm new file mode 100755 index 00000000..0d3e013e --- /dev/null +++ b/gsl-2.5/doc/examples/eigen_nonsymm @@ -0,0 +1,228 @@ +#! /bin/sh + +# eigen_nonsymm - temporary wrapper script for .libs/eigen_nonsymm +# Generated by libtool (GNU libtool) 2.4.2 +# +# The eigen_nonsymm program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s/\([`"$\\]\)/\\\1/g' + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command="(cd /home/groups/kipac/chto/package/gsl/gsl-2.5/doc/examples; LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LIBRARY_PATH; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; LD_LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/fftw/include:/home/users/chto/lib/fftw/lib:/home/users/chto/lib/healpix/lib:/home/users/chto/lib/namaster/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/include:/home/users/chto/cpp/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LD_LIBRARY_PATH; PATH=/share/software/user/open/curl/7.54.0/bin:/share/software/user/open/libressl/2.5.3/bin:/home/users/chto/lib/cfitsio:/home/users/chto/lib/cfitsio/include:/home/users/chto/lib:/home/users/chto/bin/bin:/home/users/chto/bin:/home/users/chto/.texlive/bin/x86_64-linux:/home/groups/kipac/chto/anaconda2/envs/newenv3/bin:/home/users/chto/.local/bin/include:/home/users/chto/.local/bin/lib:/home/users/chto/.local/bin:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/bin64:/share/software/user/open/fftw/3.3.6/bin:/home/groups/kipac/chto/anaconda2/condabin:/share/software/user/restricted/ifort/2019/bin:/share/software/user/open/gsl/2.3/bin:/share/software/user/srcc/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/dell/srvadmin/bin:/opt/dell/srvadmin/iSM/bin:/home/users/chto/bin; export PATH; gcc -g -O2 -o \$progdir/\$file eigen_nonsymm.o ../../.libs/libgsl.so ../../cblas/.libs/libgslcblas.so -lm -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/.libs -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/cblas/.libs -Wl,-rpath -Wl,/usr/local/lib)" + +# This environment variable determines our operation mode. +if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then + # install mode needs the following variables: + generated_by_libtool_version='2.4.2' + notinst_deplibs=' ../../libgsl.la ../../cblas/libgslcblas.la' +else + # When we are sourced in execute mode, $file and $ECHO are already set. + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + file="$0" + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + ECHO="printf %s\\n" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ which is used only on +# windows platforms, and (c) all begin with the string --lt- +# (application programs are unlikely to have options which match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's ../../libtool value, followed by no. +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=$0 + shift + for lt_opt + do + case "$lt_opt" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%/[^/]*$%%'` + test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=. + lt_dump_F=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%^.*/%%'` + cat "$lt_dump_D/$lt_dump_F" + exit 0 + ;; + --lt-*) + $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n "$lt_option_debug"; then + echo "eigen_nonsymm:eigen_nonsymm:${LINENO}: libtool wrapper (GNU libtool) 2.4.2" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + $ECHO "eigen_nonsymm:eigen_nonsymm:${LINENO}: newargv[$lt_dump_args_N]: $lt_arg" + lt_dump_args_N=`expr $lt_dump_args_N + 1` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ + + if test -n "$lt_option_debug"; then + $ECHO "eigen_nonsymm:eigen_nonsymm:${LINENO}: newargv[0]: $progdir/$program" 1>&2 + func_lt_dump_args ${1+"$@"} 1>&2 + fi + exec "$progdir/$program" ${1+"$@"} + + $ECHO "$0: cannot exec $program $*" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from $@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case " $* " in + *\ --lt-*) + for lt_wr_arg + do + case $lt_wr_arg in + --lt-*) ;; + *) set x "$@" "$lt_wr_arg"; shift;; + esac + shift + done ;; + esac + func_exec_program_core ${1+"$@"} +} + + # Parse options + func_parse_lt_options "$0" ${1+"$@"} + + # Find the directory that this script lives in. + thisdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + test "x$thisdir" = "x$file" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=`ls -ld "$file" | /usr/bin/sed -n 's/.*-> //p'` + while test -n "$file"; do + destdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + + # If there was a directory component, then change thisdir. + if test "x$destdir" != "x$file"; then + case "$destdir" in + [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;; + *) thisdir="$thisdir/$destdir" ;; + esac + fi + + file=`$ECHO "$file" | /usr/bin/sed 's%^.*/%%'` + file=`ls -ld "$thisdir/$file" | /usr/bin/sed -n 's/.*-> //p'` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no + if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then + # special case for '.' + if test "$thisdir" = "."; then + thisdir=`pwd` + fi + # remove .libs from thisdir + case "$thisdir" in + *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /usr/bin/sed 's%[\\/][^\\/]*$%%'` ;; + .libs ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=`cd "$thisdir" && pwd` + test -n "$absdir" && thisdir="$absdir" + + program=lt-'eigen_nonsymm' + progdir="$thisdir/.libs" + + if test ! -f "$progdir/$program" || + { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /usr/bin/sed 1q`; \ + test "X$file" != "X$progdir/$program"; }; then + + file="$$-$program" + + if test ! -d "$progdir"; then + mkdir "$progdir" + else + rm -f "$progdir/$file" + fi + + # relink executable if necessary + if test -n "$relink_command"; then + if relink_command_output=`eval $relink_command 2>&1`; then : + else + printf %s\n "$relink_command_output" >&2 + rm -f "$progdir/$file" + exit 1 + fi + fi + + mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null || + { rm -f "$progdir/$program"; + mv -f "$progdir/$file" "$progdir/$program"; } + rm -f "$progdir/$file" + fi + + if test -f "$progdir/$program"; then + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + # Run the actual program with our arguments. + func_exec_program ${1+"$@"} + fi + else + # The program doesn't exist. + $ECHO "$0: error: \`$progdir/$program' does not exist" 1>&2 + $ECHO "This script is just a wrapper for $program." 1>&2 + $ECHO "See the libtool documentation for more information." 1>&2 + exit 1 + fi +fi diff --git a/gsl-2.5/doc/examples/eigen_nonsymm.c b/gsl-2.5/doc/examples/eigen_nonsymm.c new file mode 100644 index 00000000..eb1a4e59 --- /dev/null +++ b/gsl-2.5/doc/examples/eigen_nonsymm.c @@ -0,0 +1,55 @@ +#include +#include +#include + +int +main (void) +{ + double data[] = { -1.0, 1.0, -1.0, 1.0, + -8.0, 4.0, -2.0, 1.0, + 27.0, 9.0, 3.0, 1.0, + 64.0, 16.0, 4.0, 1.0 }; + + gsl_matrix_view m + = gsl_matrix_view_array (data, 4, 4); + + gsl_vector_complex *eval = gsl_vector_complex_alloc (4); + gsl_matrix_complex *evec = gsl_matrix_complex_alloc (4, 4); + + gsl_eigen_nonsymmv_workspace * w = + gsl_eigen_nonsymmv_alloc (4); + + gsl_eigen_nonsymmv (&m.matrix, eval, evec, w); + + gsl_eigen_nonsymmv_free (w); + + gsl_eigen_nonsymmv_sort (eval, evec, + GSL_EIGEN_SORT_ABS_DESC); + + { + int i, j; + + for (i = 0; i < 4; i++) + { + gsl_complex eval_i + = gsl_vector_complex_get (eval, i); + gsl_vector_complex_view evec_i + = gsl_matrix_complex_column (evec, i); + + printf ("eigenvalue = %g + %gi\n", + GSL_REAL(eval_i), GSL_IMAG(eval_i)); + printf ("eigenvector = \n"); + for (j = 0; j < 4; ++j) + { + gsl_complex z = + gsl_vector_complex_get(&evec_i.vector, j); + printf("%g + %gi\n", GSL_REAL(z), GSL_IMAG(z)); + } + } + } + + gsl_vector_complex_free(eval); + gsl_matrix_complex_free(evec); + + return 0; +} diff --git a/gsl-2.5/doc/examples/eigen_nonsymm.txt b/gsl-2.5/doc/examples/eigen_nonsymm.txt new file mode 100644 index 00000000..c60237be --- /dev/null +++ b/gsl-2.5/doc/examples/eigen_nonsymm.txt @@ -0,0 +1,24 @@ +eigenvalue = -6.41391 + 0i +eigenvector = +0.0998822 + 0i +0.111251 + 0i +-0.292501 + 0i +-0.944505 + 0i +eigenvalue = 5.54555 + 3.08545i +eigenvector = +0.0430757 + 0.00968662i +-0.0709124 + 0.138917i +0.516595 + -0.0160059i +0.839574 + 0.0413888i +eigenvalue = 5.54555 + -3.08545i +eigenvector = +0.0430757 + -0.00968662i +-0.0709124 + -0.138917i +0.516595 + 0.0160059i +0.839574 + -0.0413888i +eigenvalue = 2.3228 + 0i +eigenvector = +-0.144933 + 0i +0.356601 + 0i +0.919369 + 0i +0.0811836 + 0i diff --git a/gsl-2.5/doc/examples/fft b/gsl-2.5/doc/examples/fft new file mode 100755 index 00000000..5e2d952b --- /dev/null +++ b/gsl-2.5/doc/examples/fft @@ -0,0 +1,228 @@ +#! /bin/sh + +# fft - temporary wrapper script for .libs/fft +# Generated by libtool (GNU libtool) 2.4.2 +# +# The fft program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s/\([`"$\\]\)/\\\1/g' + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command="(cd /home/groups/kipac/chto/package/gsl/gsl-2.5/doc/examples; LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LIBRARY_PATH; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; LD_LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/fftw/include:/home/users/chto/lib/fftw/lib:/home/users/chto/lib/healpix/lib:/home/users/chto/lib/namaster/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/include:/home/users/chto/cpp/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LD_LIBRARY_PATH; PATH=/share/software/user/open/curl/7.54.0/bin:/share/software/user/open/libressl/2.5.3/bin:/home/users/chto/lib/cfitsio:/home/users/chto/lib/cfitsio/include:/home/users/chto/lib:/home/users/chto/bin/bin:/home/users/chto/bin:/home/users/chto/.texlive/bin/x86_64-linux:/home/groups/kipac/chto/anaconda2/envs/newenv3/bin:/home/users/chto/.local/bin/include:/home/users/chto/.local/bin/lib:/home/users/chto/.local/bin:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/bin64:/share/software/user/open/fftw/3.3.6/bin:/home/groups/kipac/chto/anaconda2/condabin:/share/software/user/restricted/ifort/2019/bin:/share/software/user/open/gsl/2.3/bin:/share/software/user/srcc/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/dell/srvadmin/bin:/opt/dell/srvadmin/iSM/bin:/home/users/chto/bin; export PATH; gcc -g -O2 -o \$progdir/\$file fft.o ../../.libs/libgsl.so ../../cblas/.libs/libgslcblas.so -lm -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/.libs -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/cblas/.libs -Wl,-rpath -Wl,/usr/local/lib)" + +# This environment variable determines our operation mode. +if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then + # install mode needs the following variables: + generated_by_libtool_version='2.4.2' + notinst_deplibs=' ../../libgsl.la ../../cblas/libgslcblas.la' +else + # When we are sourced in execute mode, $file and $ECHO are already set. + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + file="$0" + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + ECHO="printf %s\\n" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ which is used only on +# windows platforms, and (c) all begin with the string --lt- +# (application programs are unlikely to have options which match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's ../../libtool value, followed by no. +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=$0 + shift + for lt_opt + do + case "$lt_opt" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%/[^/]*$%%'` + test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=. + lt_dump_F=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%^.*/%%'` + cat "$lt_dump_D/$lt_dump_F" + exit 0 + ;; + --lt-*) + $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n "$lt_option_debug"; then + echo "fft:fft:${LINENO}: libtool wrapper (GNU libtool) 2.4.2" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + $ECHO "fft:fft:${LINENO}: newargv[$lt_dump_args_N]: $lt_arg" + lt_dump_args_N=`expr $lt_dump_args_N + 1` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ + + if test -n "$lt_option_debug"; then + $ECHO "fft:fft:${LINENO}: newargv[0]: $progdir/$program" 1>&2 + func_lt_dump_args ${1+"$@"} 1>&2 + fi + exec "$progdir/$program" ${1+"$@"} + + $ECHO "$0: cannot exec $program $*" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from $@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case " $* " in + *\ --lt-*) + for lt_wr_arg + do + case $lt_wr_arg in + --lt-*) ;; + *) set x "$@" "$lt_wr_arg"; shift;; + esac + shift + done ;; + esac + func_exec_program_core ${1+"$@"} +} + + # Parse options + func_parse_lt_options "$0" ${1+"$@"} + + # Find the directory that this script lives in. + thisdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + test "x$thisdir" = "x$file" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=`ls -ld "$file" | /usr/bin/sed -n 's/.*-> //p'` + while test -n "$file"; do + destdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + + # If there was a directory component, then change thisdir. + if test "x$destdir" != "x$file"; then + case "$destdir" in + [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;; + *) thisdir="$thisdir/$destdir" ;; + esac + fi + + file=`$ECHO "$file" | /usr/bin/sed 's%^.*/%%'` + file=`ls -ld "$thisdir/$file" | /usr/bin/sed -n 's/.*-> //p'` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no + if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then + # special case for '.' + if test "$thisdir" = "."; then + thisdir=`pwd` + fi + # remove .libs from thisdir + case "$thisdir" in + *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /usr/bin/sed 's%[\\/][^\\/]*$%%'` ;; + .libs ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=`cd "$thisdir" && pwd` + test -n "$absdir" && thisdir="$absdir" + + program=lt-'fft' + progdir="$thisdir/.libs" + + if test ! -f "$progdir/$program" || + { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /usr/bin/sed 1q`; \ + test "X$file" != "X$progdir/$program"; }; then + + file="$$-$program" + + if test ! -d "$progdir"; then + mkdir "$progdir" + else + rm -f "$progdir/$file" + fi + + # relink executable if necessary + if test -n "$relink_command"; then + if relink_command_output=`eval $relink_command 2>&1`; then : + else + printf %s\n "$relink_command_output" >&2 + rm -f "$progdir/$file" + exit 1 + fi + fi + + mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null || + { rm -f "$progdir/$program"; + mv -f "$progdir/$file" "$progdir/$program"; } + rm -f "$progdir/$file" + fi + + if test -f "$progdir/$program"; then + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + # Run the actual program with our arguments. + func_exec_program ${1+"$@"} + fi + else + # The program doesn't exist. + $ECHO "$0: error: \`$progdir/$program' does not exist" 1>&2 + $ECHO "This script is just a wrapper for $program." 1>&2 + $ECHO "See the libtool documentation for more information." 1>&2 + exit 1 + fi +fi diff --git a/gsl-2.5/doc/examples/fft.c b/gsl-2.5/doc/examples/fft.c new file mode 100644 index 00000000..3adc29a0 --- /dev/null +++ b/gsl-2.5/doc/examples/fft.c @@ -0,0 +1,43 @@ +#include +#include +#include +#include + +#define REAL(z,i) ((z)[2*(i)]) +#define IMAG(z,i) ((z)[2*(i)+1]) + +int +main (void) +{ + int i; double data[2*128]; + + for (i = 0; i < 128; i++) + { + REAL(data,i) = 0.0; IMAG(data,i) = 0.0; + } + + REAL(data,0) = 1.0; + + for (i = 1; i <= 10; i++) + { + REAL(data,i) = REAL(data,128-i) = 1.0; + } + + for (i = 0; i < 128; i++) + { + printf ("%d %e %e\n", i, + REAL(data,i), IMAG(data,i)); + } + printf ("\n\n"); + + gsl_fft_complex_radix2_forward (data, 1, 128); + + for (i = 0; i < 128; i++) + { + printf ("%d %e %e\n", i, + REAL(data,i)/sqrt(128), + IMAG(data,i)/sqrt(128)); + } + + return 0; +} diff --git a/gsl-2.5/doc/examples/fft.txt b/gsl-2.5/doc/examples/fft.txt new file mode 100644 index 00000000..ab60c64c --- /dev/null +++ b/gsl-2.5/doc/examples/fft.txt @@ -0,0 +1,258 @@ +0 1.000000e+00 0.000000e+00 +1 1.000000e+00 0.000000e+00 +2 1.000000e+00 0.000000e+00 +3 1.000000e+00 0.000000e+00 +4 1.000000e+00 0.000000e+00 +5 1.000000e+00 0.000000e+00 +6 1.000000e+00 0.000000e+00 +7 1.000000e+00 0.000000e+00 +8 1.000000e+00 0.000000e+00 +9 1.000000e+00 0.000000e+00 +10 1.000000e+00 0.000000e+00 +11 0.000000e+00 0.000000e+00 +12 0.000000e+00 0.000000e+00 +13 0.000000e+00 0.000000e+00 +14 0.000000e+00 0.000000e+00 +15 0.000000e+00 0.000000e+00 +16 0.000000e+00 0.000000e+00 +17 0.000000e+00 0.000000e+00 +18 0.000000e+00 0.000000e+00 +19 0.000000e+00 0.000000e+00 +20 0.000000e+00 0.000000e+00 +21 0.000000e+00 0.000000e+00 +22 0.000000e+00 0.000000e+00 +23 0.000000e+00 0.000000e+00 +24 0.000000e+00 0.000000e+00 +25 0.000000e+00 0.000000e+00 +26 0.000000e+00 0.000000e+00 +27 0.000000e+00 0.000000e+00 +28 0.000000e+00 0.000000e+00 +29 0.000000e+00 0.000000e+00 +30 0.000000e+00 0.000000e+00 +31 0.000000e+00 0.000000e+00 +32 0.000000e+00 0.000000e+00 +33 0.000000e+00 0.000000e+00 +34 0.000000e+00 0.000000e+00 +35 0.000000e+00 0.000000e+00 +36 0.000000e+00 0.000000e+00 +37 0.000000e+00 0.000000e+00 +38 0.000000e+00 0.000000e+00 +39 0.000000e+00 0.000000e+00 +40 0.000000e+00 0.000000e+00 +41 0.000000e+00 0.000000e+00 +42 0.000000e+00 0.000000e+00 +43 0.000000e+00 0.000000e+00 +44 0.000000e+00 0.000000e+00 +45 0.000000e+00 0.000000e+00 +46 0.000000e+00 0.000000e+00 +47 0.000000e+00 0.000000e+00 +48 0.000000e+00 0.000000e+00 +49 0.000000e+00 0.000000e+00 +50 0.000000e+00 0.000000e+00 +51 0.000000e+00 0.000000e+00 +52 0.000000e+00 0.000000e+00 +53 0.000000e+00 0.000000e+00 +54 0.000000e+00 0.000000e+00 +55 0.000000e+00 0.000000e+00 +56 0.000000e+00 0.000000e+00 +57 0.000000e+00 0.000000e+00 +58 0.000000e+00 0.000000e+00 +59 0.000000e+00 0.000000e+00 +60 0.000000e+00 0.000000e+00 +61 0.000000e+00 0.000000e+00 +62 0.000000e+00 0.000000e+00 +63 0.000000e+00 0.000000e+00 +64 0.000000e+00 0.000000e+00 +65 0.000000e+00 0.000000e+00 +66 0.000000e+00 0.000000e+00 +67 0.000000e+00 0.000000e+00 +68 0.000000e+00 0.000000e+00 +69 0.000000e+00 0.000000e+00 +70 0.000000e+00 0.000000e+00 +71 0.000000e+00 0.000000e+00 +72 0.000000e+00 0.000000e+00 +73 0.000000e+00 0.000000e+00 +74 0.000000e+00 0.000000e+00 +75 0.000000e+00 0.000000e+00 +76 0.000000e+00 0.000000e+00 +77 0.000000e+00 0.000000e+00 +78 0.000000e+00 0.000000e+00 +79 0.000000e+00 0.000000e+00 +80 0.000000e+00 0.000000e+00 +81 0.000000e+00 0.000000e+00 +82 0.000000e+00 0.000000e+00 +83 0.000000e+00 0.000000e+00 +84 0.000000e+00 0.000000e+00 +85 0.000000e+00 0.000000e+00 +86 0.000000e+00 0.000000e+00 +87 0.000000e+00 0.000000e+00 +88 0.000000e+00 0.000000e+00 +89 0.000000e+00 0.000000e+00 +90 0.000000e+00 0.000000e+00 +91 0.000000e+00 0.000000e+00 +92 0.000000e+00 0.000000e+00 +93 0.000000e+00 0.000000e+00 +94 0.000000e+00 0.000000e+00 +95 0.000000e+00 0.000000e+00 +96 0.000000e+00 0.000000e+00 +97 0.000000e+00 0.000000e+00 +98 0.000000e+00 0.000000e+00 +99 0.000000e+00 0.000000e+00 +100 0.000000e+00 0.000000e+00 +101 0.000000e+00 0.000000e+00 +102 0.000000e+00 0.000000e+00 +103 0.000000e+00 0.000000e+00 +104 0.000000e+00 0.000000e+00 +105 0.000000e+00 0.000000e+00 +106 0.000000e+00 0.000000e+00 +107 0.000000e+00 0.000000e+00 +108 0.000000e+00 0.000000e+00 +109 0.000000e+00 0.000000e+00 +110 0.000000e+00 0.000000e+00 +111 0.000000e+00 0.000000e+00 +112 0.000000e+00 0.000000e+00 +113 0.000000e+00 0.000000e+00 +114 0.000000e+00 0.000000e+00 +115 0.000000e+00 0.000000e+00 +116 0.000000e+00 0.000000e+00 +117 0.000000e+00 0.000000e+00 +118 1.000000e+00 0.000000e+00 +119 1.000000e+00 0.000000e+00 +120 1.000000e+00 0.000000e+00 +121 1.000000e+00 0.000000e+00 +122 1.000000e+00 0.000000e+00 +123 1.000000e+00 0.000000e+00 +124 1.000000e+00 0.000000e+00 +125 1.000000e+00 0.000000e+00 +126 1.000000e+00 0.000000e+00 +127 1.000000e+00 0.000000e+00 + + +0 1.856155e+00 0.000000e+00 +1 1.775235e+00 1.177569e-16 +2 1.545075e+00 0.000000e+00 +3 1.201145e+00 2.453269e-17 +4 7.952850e-01 -4.906539e-17 +5 3.863025e-01 -6.869155e-17 +6 2.955767e-02 -4.906539e-18 +7 -2.324518e-01 -9.813078e-18 +8 -3.767087e-01 2.943923e-17 +9 -4.023202e-01 -5.151866e-17 +10 -3.288421e-01 -1.226635e-17 +11 -1.908223e-01 -3.679904e-17 +12 -2.984509e-02 -5.397193e-17 +13 1.141877e-01 -1.054906e-16 +14 2.107341e-01 -1.496494e-16 +15 2.437478e-01 -2.526868e-16 +16 2.133883e-01 9.813078e-18 +17 1.341899e-01 -3.618572e-17 +18 3.033355e-02 -4.906539e-18 +19 -7.075117e-02 -5.887847e-17 +20 -1.449419e-01 2.453269e-18 +21 -1.766837e-01 -1.226635e-17 +22 -1.618772e-01 -9.813078e-18 +23 -1.079124e-01 1.471962e-17 +24 -3.103786e-02 3.925231e-17 +25 4.815112e-02 2.698596e-17 +26 1.099404e-01 2.759928e-17 +27 1.401760e-01 -2.943923e-17 +28 1.333280e-01 7.359808e-18 +29 9.330968e-02 -1.079439e-16 +30 3.198024e-02 -1.557826e-16 +31 -3.418842e-02 -1.711155e-16 +32 -8.838835e-02 0.000000e+00 +33 -1.176209e-01 1.103971e-17 +34 -1.157154e-01 5.642520e-17 +35 -8.454075e-02 -1.717289e-17 +36 -3.319203e-02 3.679904e-17 +37 2.456534e-02 -1.226635e-17 +38 7.390118e-02 -5.519856e-18 +39 1.026526e-01 -1.226635e-18 +40 1.042612e-01 9.813078e-18 +41 7.921898e-02 -1.717289e-17 +42 3.471627e-02 7.359808e-18 +43 -1.736727e-02 -2.207943e-17 +44 -6.358048e-02 -5.397193e-17 +45 -9.232361e-02 -6.133174e-17 +46 -9.671760e-02 -7.114481e-17 +47 -7.621953e-02 -6.133174e-17 +48 -3.661165e-02 0.000000e+00 +49 1.159674e-02 -3.066587e-18 +50 5.592184e-02 -4.906539e-18 +51 8.510068e-02 -3.679904e-18 +52 9.192081e-02 -4.906539e-18 +53 7.498108e-02 -2.453269e-18 +54 3.895842e-02 1.962616e-17 +55 -6.664175e-03 -4.906539e-18 +56 -5.006798e-02 0.000000e+00 +57 -8.013033e-02 -2.207943e-17 +58 -8.924785e-02 1.471962e-17 +59 -7.524106e-02 9.813078e-18 +60 -4.186758e-02 3.925231e-17 +61 2.175052e-03 5.887847e-17 +62 4.549549e-02 6.869155e-17 +63 7.692872e-02 7.359808e-17 +64 8.838835e-02 0.000000e+00 +65 7.692872e-02 -1.962616e-17 +66 4.549549e-02 -1.962616e-17 +67 2.175052e-03 4.906539e-18 +68 -4.186758e-02 9.813078e-18 +69 -7.524106e-02 9.813078e-18 +70 -8.924785e-02 1.471962e-17 +71 -8.013033e-02 0.000000e+00 +72 -5.006798e-02 -9.813078e-18 +73 -6.664175e-03 7.359808e-18 +74 3.895842e-02 7.359808e-18 +75 7.498108e-02 2.453269e-18 +76 9.192081e-02 4.906539e-18 +77 8.510068e-02 -1.226635e-17 +78 5.592184e-02 -2.207943e-17 +79 1.159674e-02 -5.642520e-17 +80 -3.661165e-02 -9.813078e-18 +81 -7.621953e-02 -3.618572e-17 +82 -9.671760e-02 -2.453269e-17 +83 -9.232361e-02 -2.943923e-17 +84 -6.358048e-02 1.717289e-17 +85 -1.736727e-02 -2.453269e-18 +86 3.471627e-02 9.813078e-18 +87 7.921898e-02 -4.906539e-18 +88 1.042612e-01 0.000000e+00 +89 1.026526e-01 -2.453269e-18 +90 7.390118e-02 1.839952e-18 +91 2.456534e-02 9.813078e-18 +92 -3.319203e-02 -4.661212e-17 +93 -8.454075e-02 9.813078e-18 +94 -1.157154e-01 3.802568e-17 +95 -1.176209e-01 7.298477e-17 +96 -8.838835e-02 0.000000e+00 +97 -3.418842e-02 -6.991818e-17 +98 3.198024e-02 -7.605135e-17 +99 9.330968e-02 7.359808e-18 +100 1.333280e-01 -3.679904e-17 +101 1.401760e-01 3.189250e-17 +102 1.099404e-01 1.533293e-17 +103 4.815112e-02 -4.783875e-17 +104 -3.103786e-02 -2.943923e-17 +105 -1.079124e-01 -2.698596e-17 +106 -1.618772e-01 1.717289e-17 +107 -1.766837e-01 -2.453269e-18 +108 -1.449419e-01 6.378501e-17 +109 -7.075117e-02 1.005840e-16 +110 3.033355e-02 1.251167e-16 +111 1.341899e-01 2.134344e-16 +112 2.133883e-01 0.000000e+00 +113 2.437478e-01 3.618572e-17 +114 2.107341e-01 -4.906539e-18 +115 1.141877e-01 3.311914e-17 +116 -2.984509e-02 2.453269e-17 +117 -1.908223e-01 -2.207943e-17 +118 -3.288421e-01 3.925231e-17 +119 -4.023202e-01 -2.453269e-17 +120 -3.767087e-01 -3.925231e-17 +121 -2.324518e-01 8.586443e-17 +122 2.955767e-02 1.471962e-17 +123 3.863025e-01 1.079439e-16 +124 7.952850e-01 3.925231e-17 +125 1.201145e+00 1.962616e-16 +126 1.545075e+00 8.831770e-17 +127 1.775235e+00 2.600466e-16 diff --git a/gsl-2.5/doc/examples/fftmr b/gsl-2.5/doc/examples/fftmr new file mode 100755 index 00000000..b4f3d632 --- /dev/null +++ b/gsl-2.5/doc/examples/fftmr @@ -0,0 +1,228 @@ +#! /bin/sh + +# fftmr - temporary wrapper script for .libs/fftmr +# Generated by libtool (GNU libtool) 2.4.2 +# +# The fftmr program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s/\([`"$\\]\)/\\\1/g' + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command="(cd /home/groups/kipac/chto/package/gsl/gsl-2.5/doc/examples; LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LIBRARY_PATH; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; LD_LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/fftw/include:/home/users/chto/lib/fftw/lib:/home/users/chto/lib/healpix/lib:/home/users/chto/lib/namaster/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/include:/home/users/chto/cpp/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LD_LIBRARY_PATH; PATH=/share/software/user/open/curl/7.54.0/bin:/share/software/user/open/libressl/2.5.3/bin:/home/users/chto/lib/cfitsio:/home/users/chto/lib/cfitsio/include:/home/users/chto/lib:/home/users/chto/bin/bin:/home/users/chto/bin:/home/users/chto/.texlive/bin/x86_64-linux:/home/groups/kipac/chto/anaconda2/envs/newenv3/bin:/home/users/chto/.local/bin/include:/home/users/chto/.local/bin/lib:/home/users/chto/.local/bin:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/bin64:/share/software/user/open/fftw/3.3.6/bin:/home/groups/kipac/chto/anaconda2/condabin:/share/software/user/restricted/ifort/2019/bin:/share/software/user/open/gsl/2.3/bin:/share/software/user/srcc/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/dell/srvadmin/bin:/opt/dell/srvadmin/iSM/bin:/home/users/chto/bin; export PATH; gcc -g -O2 -o \$progdir/\$file fftmr.o ../../.libs/libgsl.so ../../cblas/.libs/libgslcblas.so -lm -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/.libs -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/cblas/.libs -Wl,-rpath -Wl,/usr/local/lib)" + +# This environment variable determines our operation mode. +if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then + # install mode needs the following variables: + generated_by_libtool_version='2.4.2' + notinst_deplibs=' ../../libgsl.la ../../cblas/libgslcblas.la' +else + # When we are sourced in execute mode, $file and $ECHO are already set. + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + file="$0" + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + ECHO="printf %s\\n" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ which is used only on +# windows platforms, and (c) all begin with the string --lt- +# (application programs are unlikely to have options which match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's ../../libtool value, followed by no. +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=$0 + shift + for lt_opt + do + case "$lt_opt" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%/[^/]*$%%'` + test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=. + lt_dump_F=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%^.*/%%'` + cat "$lt_dump_D/$lt_dump_F" + exit 0 + ;; + --lt-*) + $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n "$lt_option_debug"; then + echo "fftmr:fftmr:${LINENO}: libtool wrapper (GNU libtool) 2.4.2" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + $ECHO "fftmr:fftmr:${LINENO}: newargv[$lt_dump_args_N]: $lt_arg" + lt_dump_args_N=`expr $lt_dump_args_N + 1` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ + + if test -n "$lt_option_debug"; then + $ECHO "fftmr:fftmr:${LINENO}: newargv[0]: $progdir/$program" 1>&2 + func_lt_dump_args ${1+"$@"} 1>&2 + fi + exec "$progdir/$program" ${1+"$@"} + + $ECHO "$0: cannot exec $program $*" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from $@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case " $* " in + *\ --lt-*) + for lt_wr_arg + do + case $lt_wr_arg in + --lt-*) ;; + *) set x "$@" "$lt_wr_arg"; shift;; + esac + shift + done ;; + esac + func_exec_program_core ${1+"$@"} +} + + # Parse options + func_parse_lt_options "$0" ${1+"$@"} + + # Find the directory that this script lives in. + thisdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + test "x$thisdir" = "x$file" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=`ls -ld "$file" | /usr/bin/sed -n 's/.*-> //p'` + while test -n "$file"; do + destdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + + # If there was a directory component, then change thisdir. + if test "x$destdir" != "x$file"; then + case "$destdir" in + [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;; + *) thisdir="$thisdir/$destdir" ;; + esac + fi + + file=`$ECHO "$file" | /usr/bin/sed 's%^.*/%%'` + file=`ls -ld "$thisdir/$file" | /usr/bin/sed -n 's/.*-> //p'` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no + if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then + # special case for '.' + if test "$thisdir" = "."; then + thisdir=`pwd` + fi + # remove .libs from thisdir + case "$thisdir" in + *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /usr/bin/sed 's%[\\/][^\\/]*$%%'` ;; + .libs ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=`cd "$thisdir" && pwd` + test -n "$absdir" && thisdir="$absdir" + + program=lt-'fftmr' + progdir="$thisdir/.libs" + + if test ! -f "$progdir/$program" || + { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /usr/bin/sed 1q`; \ + test "X$file" != "X$progdir/$program"; }; then + + file="$$-$program" + + if test ! -d "$progdir"; then + mkdir "$progdir" + else + rm -f "$progdir/$file" + fi + + # relink executable if necessary + if test -n "$relink_command"; then + if relink_command_output=`eval $relink_command 2>&1`; then : + else + printf %s\n "$relink_command_output" >&2 + rm -f "$progdir/$file" + exit 1 + fi + fi + + mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null || + { rm -f "$progdir/$program"; + mv -f "$progdir/$file" "$progdir/$program"; } + rm -f "$progdir/$file" + fi + + if test -f "$progdir/$program"; then + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + # Run the actual program with our arguments. + func_exec_program ${1+"$@"} + fi + else + # The program doesn't exist. + $ECHO "$0: error: \`$progdir/$program' does not exist" 1>&2 + $ECHO "This script is just a wrapper for $program." 1>&2 + $ECHO "See the libtool documentation for more information." 1>&2 + exit 1 + fi +fi diff --git a/gsl-2.5/doc/examples/fftmr.c b/gsl-2.5/doc/examples/fftmr.c new file mode 100644 index 00000000..b12dc766 --- /dev/null +++ b/gsl-2.5/doc/examples/fftmr.c @@ -0,0 +1,60 @@ +#include +#include +#include +#include + +#define REAL(z,i) ((z)[2*(i)]) +#define IMAG(z,i) ((z)[2*(i)+1]) + +int +main (void) +{ + int i; + const int n = 630; + double data[2*n]; + + gsl_fft_complex_wavetable * wavetable; + gsl_fft_complex_workspace * workspace; + + for (i = 0; i < n; i++) + { + REAL(data,i) = 0.0; + IMAG(data,i) = 0.0; + } + + data[0] = 1.0; + + for (i = 1; i <= 10; i++) + { + REAL(data,i) = REAL(data,n-i) = 1.0; + } + + for (i = 0; i < n; i++) + { + printf ("%d: %e %e\n", i, REAL(data,i), + IMAG(data,i)); + } + printf ("\n"); + + wavetable = gsl_fft_complex_wavetable_alloc (n); + workspace = gsl_fft_complex_workspace_alloc (n); + + for (i = 0; i < (int) wavetable->nf; i++) + { + printf ("# factor %d: %zu\n", i, + wavetable->factor[i]); + } + + gsl_fft_complex_forward (data, 1, n, + wavetable, workspace); + + for (i = 0; i < n; i++) + { + printf ("%d: %e %e\n", i, REAL(data,i), + IMAG(data,i)); + } + + gsl_fft_complex_wavetable_free (wavetable); + gsl_fft_complex_workspace_free (workspace); + return 0; +} diff --git a/gsl-2.5/doc/examples/fftmr.txt b/gsl-2.5/doc/examples/fftmr.txt new file mode 100644 index 00000000..96a05f3e --- /dev/null +++ b/gsl-2.5/doc/examples/fftmr.txt @@ -0,0 +1,1265 @@ +0: 1.000000e+00 0.000000e+00 +1: 1.000000e+00 0.000000e+00 +2: 1.000000e+00 0.000000e+00 +3: 1.000000e+00 0.000000e+00 +4: 1.000000e+00 0.000000e+00 +5: 1.000000e+00 0.000000e+00 +6: 1.000000e+00 0.000000e+00 +7: 1.000000e+00 0.000000e+00 +8: 1.000000e+00 0.000000e+00 +9: 1.000000e+00 0.000000e+00 +10: 1.000000e+00 0.000000e+00 +11: 0.000000e+00 0.000000e+00 +12: 0.000000e+00 0.000000e+00 +13: 0.000000e+00 0.000000e+00 +14: 0.000000e+00 0.000000e+00 +15: 0.000000e+00 0.000000e+00 +16: 0.000000e+00 0.000000e+00 +17: 0.000000e+00 0.000000e+00 +18: 0.000000e+00 0.000000e+00 +19: 0.000000e+00 0.000000e+00 +20: 0.000000e+00 0.000000e+00 +21: 0.000000e+00 0.000000e+00 +22: 0.000000e+00 0.000000e+00 +23: 0.000000e+00 0.000000e+00 +24: 0.000000e+00 0.000000e+00 +25: 0.000000e+00 0.000000e+00 +26: 0.000000e+00 0.000000e+00 +27: 0.000000e+00 0.000000e+00 +28: 0.000000e+00 0.000000e+00 +29: 0.000000e+00 0.000000e+00 +30: 0.000000e+00 0.000000e+00 +31: 0.000000e+00 0.000000e+00 +32: 0.000000e+00 0.000000e+00 +33: 0.000000e+00 0.000000e+00 +34: 0.000000e+00 0.000000e+00 +35: 0.000000e+00 0.000000e+00 +36: 0.000000e+00 0.000000e+00 +37: 0.000000e+00 0.000000e+00 +38: 0.000000e+00 0.000000e+00 +39: 0.000000e+00 0.000000e+00 +40: 0.000000e+00 0.000000e+00 +41: 0.000000e+00 0.000000e+00 +42: 0.000000e+00 0.000000e+00 +43: 0.000000e+00 0.000000e+00 +44: 0.000000e+00 0.000000e+00 +45: 0.000000e+00 0.000000e+00 +46: 0.000000e+00 0.000000e+00 +47: 0.000000e+00 0.000000e+00 +48: 0.000000e+00 0.000000e+00 +49: 0.000000e+00 0.000000e+00 +50: 0.000000e+00 0.000000e+00 +51: 0.000000e+00 0.000000e+00 +52: 0.000000e+00 0.000000e+00 +53: 0.000000e+00 0.000000e+00 +54: 0.000000e+00 0.000000e+00 +55: 0.000000e+00 0.000000e+00 +56: 0.000000e+00 0.000000e+00 +57: 0.000000e+00 0.000000e+00 +58: 0.000000e+00 0.000000e+00 +59: 0.000000e+00 0.000000e+00 +60: 0.000000e+00 0.000000e+00 +61: 0.000000e+00 0.000000e+00 +62: 0.000000e+00 0.000000e+00 +63: 0.000000e+00 0.000000e+00 +64: 0.000000e+00 0.000000e+00 +65: 0.000000e+00 0.000000e+00 +66: 0.000000e+00 0.000000e+00 +67: 0.000000e+00 0.000000e+00 +68: 0.000000e+00 0.000000e+00 +69: 0.000000e+00 0.000000e+00 +70: 0.000000e+00 0.000000e+00 +71: 0.000000e+00 0.000000e+00 +72: 0.000000e+00 0.000000e+00 +73: 0.000000e+00 0.000000e+00 +74: 0.000000e+00 0.000000e+00 +75: 0.000000e+00 0.000000e+00 +76: 0.000000e+00 0.000000e+00 +77: 0.000000e+00 0.000000e+00 +78: 0.000000e+00 0.000000e+00 +79: 0.000000e+00 0.000000e+00 +80: 0.000000e+00 0.000000e+00 +81: 0.000000e+00 0.000000e+00 +82: 0.000000e+00 0.000000e+00 +83: 0.000000e+00 0.000000e+00 +84: 0.000000e+00 0.000000e+00 +85: 0.000000e+00 0.000000e+00 +86: 0.000000e+00 0.000000e+00 +87: 0.000000e+00 0.000000e+00 +88: 0.000000e+00 0.000000e+00 +89: 0.000000e+00 0.000000e+00 +90: 0.000000e+00 0.000000e+00 +91: 0.000000e+00 0.000000e+00 +92: 0.000000e+00 0.000000e+00 +93: 0.000000e+00 0.000000e+00 +94: 0.000000e+00 0.000000e+00 +95: 0.000000e+00 0.000000e+00 +96: 0.000000e+00 0.000000e+00 +97: 0.000000e+00 0.000000e+00 +98: 0.000000e+00 0.000000e+00 +99: 0.000000e+00 0.000000e+00 +100: 0.000000e+00 0.000000e+00 +101: 0.000000e+00 0.000000e+00 +102: 0.000000e+00 0.000000e+00 +103: 0.000000e+00 0.000000e+00 +104: 0.000000e+00 0.000000e+00 +105: 0.000000e+00 0.000000e+00 +106: 0.000000e+00 0.000000e+00 +107: 0.000000e+00 0.000000e+00 +108: 0.000000e+00 0.000000e+00 +109: 0.000000e+00 0.000000e+00 +110: 0.000000e+00 0.000000e+00 +111: 0.000000e+00 0.000000e+00 +112: 0.000000e+00 0.000000e+00 +113: 0.000000e+00 0.000000e+00 +114: 0.000000e+00 0.000000e+00 +115: 0.000000e+00 0.000000e+00 +116: 0.000000e+00 0.000000e+00 +117: 0.000000e+00 0.000000e+00 +118: 0.000000e+00 0.000000e+00 +119: 0.000000e+00 0.000000e+00 +120: 0.000000e+00 0.000000e+00 +121: 0.000000e+00 0.000000e+00 +122: 0.000000e+00 0.000000e+00 +123: 0.000000e+00 0.000000e+00 +124: 0.000000e+00 0.000000e+00 +125: 0.000000e+00 0.000000e+00 +126: 0.000000e+00 0.000000e+00 +127: 0.000000e+00 0.000000e+00 +128: 0.000000e+00 0.000000e+00 +129: 0.000000e+00 0.000000e+00 +130: 0.000000e+00 0.000000e+00 +131: 0.000000e+00 0.000000e+00 +132: 0.000000e+00 0.000000e+00 +133: 0.000000e+00 0.000000e+00 +134: 0.000000e+00 0.000000e+00 +135: 0.000000e+00 0.000000e+00 +136: 0.000000e+00 0.000000e+00 +137: 0.000000e+00 0.000000e+00 +138: 0.000000e+00 0.000000e+00 +139: 0.000000e+00 0.000000e+00 +140: 0.000000e+00 0.000000e+00 +141: 0.000000e+00 0.000000e+00 +142: 0.000000e+00 0.000000e+00 +143: 0.000000e+00 0.000000e+00 +144: 0.000000e+00 0.000000e+00 +145: 0.000000e+00 0.000000e+00 +146: 0.000000e+00 0.000000e+00 +147: 0.000000e+00 0.000000e+00 +148: 0.000000e+00 0.000000e+00 +149: 0.000000e+00 0.000000e+00 +150: 0.000000e+00 0.000000e+00 +151: 0.000000e+00 0.000000e+00 +152: 0.000000e+00 0.000000e+00 +153: 0.000000e+00 0.000000e+00 +154: 0.000000e+00 0.000000e+00 +155: 0.000000e+00 0.000000e+00 +156: 0.000000e+00 0.000000e+00 +157: 0.000000e+00 0.000000e+00 +158: 0.000000e+00 0.000000e+00 +159: 0.000000e+00 0.000000e+00 +160: 0.000000e+00 0.000000e+00 +161: 0.000000e+00 0.000000e+00 +162: 0.000000e+00 0.000000e+00 +163: 0.000000e+00 0.000000e+00 +164: 0.000000e+00 0.000000e+00 +165: 0.000000e+00 0.000000e+00 +166: 0.000000e+00 0.000000e+00 +167: 0.000000e+00 0.000000e+00 +168: 0.000000e+00 0.000000e+00 +169: 0.000000e+00 0.000000e+00 +170: 0.000000e+00 0.000000e+00 +171: 0.000000e+00 0.000000e+00 +172: 0.000000e+00 0.000000e+00 +173: 0.000000e+00 0.000000e+00 +174: 0.000000e+00 0.000000e+00 +175: 0.000000e+00 0.000000e+00 +176: 0.000000e+00 0.000000e+00 +177: 0.000000e+00 0.000000e+00 +178: 0.000000e+00 0.000000e+00 +179: 0.000000e+00 0.000000e+00 +180: 0.000000e+00 0.000000e+00 +181: 0.000000e+00 0.000000e+00 +182: 0.000000e+00 0.000000e+00 +183: 0.000000e+00 0.000000e+00 +184: 0.000000e+00 0.000000e+00 +185: 0.000000e+00 0.000000e+00 +186: 0.000000e+00 0.000000e+00 +187: 0.000000e+00 0.000000e+00 +188: 0.000000e+00 0.000000e+00 +189: 0.000000e+00 0.000000e+00 +190: 0.000000e+00 0.000000e+00 +191: 0.000000e+00 0.000000e+00 +192: 0.000000e+00 0.000000e+00 +193: 0.000000e+00 0.000000e+00 +194: 0.000000e+00 0.000000e+00 +195: 0.000000e+00 0.000000e+00 +196: 0.000000e+00 0.000000e+00 +197: 0.000000e+00 0.000000e+00 +198: 0.000000e+00 0.000000e+00 +199: 0.000000e+00 0.000000e+00 +200: 0.000000e+00 0.000000e+00 +201: 0.000000e+00 0.000000e+00 +202: 0.000000e+00 0.000000e+00 +203: 0.000000e+00 0.000000e+00 +204: 0.000000e+00 0.000000e+00 +205: 0.000000e+00 0.000000e+00 +206: 0.000000e+00 0.000000e+00 +207: 0.000000e+00 0.000000e+00 +208: 0.000000e+00 0.000000e+00 +209: 0.000000e+00 0.000000e+00 +210: 0.000000e+00 0.000000e+00 +211: 0.000000e+00 0.000000e+00 +212: 0.000000e+00 0.000000e+00 +213: 0.000000e+00 0.000000e+00 +214: 0.000000e+00 0.000000e+00 +215: 0.000000e+00 0.000000e+00 +216: 0.000000e+00 0.000000e+00 +217: 0.000000e+00 0.000000e+00 +218: 0.000000e+00 0.000000e+00 +219: 0.000000e+00 0.000000e+00 +220: 0.000000e+00 0.000000e+00 +221: 0.000000e+00 0.000000e+00 +222: 0.000000e+00 0.000000e+00 +223: 0.000000e+00 0.000000e+00 +224: 0.000000e+00 0.000000e+00 +225: 0.000000e+00 0.000000e+00 +226: 0.000000e+00 0.000000e+00 +227: 0.000000e+00 0.000000e+00 +228: 0.000000e+00 0.000000e+00 +229: 0.000000e+00 0.000000e+00 +230: 0.000000e+00 0.000000e+00 +231: 0.000000e+00 0.000000e+00 +232: 0.000000e+00 0.000000e+00 +233: 0.000000e+00 0.000000e+00 +234: 0.000000e+00 0.000000e+00 +235: 0.000000e+00 0.000000e+00 +236: 0.000000e+00 0.000000e+00 +237: 0.000000e+00 0.000000e+00 +238: 0.000000e+00 0.000000e+00 +239: 0.000000e+00 0.000000e+00 +240: 0.000000e+00 0.000000e+00 +241: 0.000000e+00 0.000000e+00 +242: 0.000000e+00 0.000000e+00 +243: 0.000000e+00 0.000000e+00 +244: 0.000000e+00 0.000000e+00 +245: 0.000000e+00 0.000000e+00 +246: 0.000000e+00 0.000000e+00 +247: 0.000000e+00 0.000000e+00 +248: 0.000000e+00 0.000000e+00 +249: 0.000000e+00 0.000000e+00 +250: 0.000000e+00 0.000000e+00 +251: 0.000000e+00 0.000000e+00 +252: 0.000000e+00 0.000000e+00 +253: 0.000000e+00 0.000000e+00 +254: 0.000000e+00 0.000000e+00 +255: 0.000000e+00 0.000000e+00 +256: 0.000000e+00 0.000000e+00 +257: 0.000000e+00 0.000000e+00 +258: 0.000000e+00 0.000000e+00 +259: 0.000000e+00 0.000000e+00 +260: 0.000000e+00 0.000000e+00 +261: 0.000000e+00 0.000000e+00 +262: 0.000000e+00 0.000000e+00 +263: 0.000000e+00 0.000000e+00 +264: 0.000000e+00 0.000000e+00 +265: 0.000000e+00 0.000000e+00 +266: 0.000000e+00 0.000000e+00 +267: 0.000000e+00 0.000000e+00 +268: 0.000000e+00 0.000000e+00 +269: 0.000000e+00 0.000000e+00 +270: 0.000000e+00 0.000000e+00 +271: 0.000000e+00 0.000000e+00 +272: 0.000000e+00 0.000000e+00 +273: 0.000000e+00 0.000000e+00 +274: 0.000000e+00 0.000000e+00 +275: 0.000000e+00 0.000000e+00 +276: 0.000000e+00 0.000000e+00 +277: 0.000000e+00 0.000000e+00 +278: 0.000000e+00 0.000000e+00 +279: 0.000000e+00 0.000000e+00 +280: 0.000000e+00 0.000000e+00 +281: 0.000000e+00 0.000000e+00 +282: 0.000000e+00 0.000000e+00 +283: 0.000000e+00 0.000000e+00 +284: 0.000000e+00 0.000000e+00 +285: 0.000000e+00 0.000000e+00 +286: 0.000000e+00 0.000000e+00 +287: 0.000000e+00 0.000000e+00 +288: 0.000000e+00 0.000000e+00 +289: 0.000000e+00 0.000000e+00 +290: 0.000000e+00 0.000000e+00 +291: 0.000000e+00 0.000000e+00 +292: 0.000000e+00 0.000000e+00 +293: 0.000000e+00 0.000000e+00 +294: 0.000000e+00 0.000000e+00 +295: 0.000000e+00 0.000000e+00 +296: 0.000000e+00 0.000000e+00 +297: 0.000000e+00 0.000000e+00 +298: 0.000000e+00 0.000000e+00 +299: 0.000000e+00 0.000000e+00 +300: 0.000000e+00 0.000000e+00 +301: 0.000000e+00 0.000000e+00 +302: 0.000000e+00 0.000000e+00 +303: 0.000000e+00 0.000000e+00 +304: 0.000000e+00 0.000000e+00 +305: 0.000000e+00 0.000000e+00 +306: 0.000000e+00 0.000000e+00 +307: 0.000000e+00 0.000000e+00 +308: 0.000000e+00 0.000000e+00 +309: 0.000000e+00 0.000000e+00 +310: 0.000000e+00 0.000000e+00 +311: 0.000000e+00 0.000000e+00 +312: 0.000000e+00 0.000000e+00 +313: 0.000000e+00 0.000000e+00 +314: 0.000000e+00 0.000000e+00 +315: 0.000000e+00 0.000000e+00 +316: 0.000000e+00 0.000000e+00 +317: 0.000000e+00 0.000000e+00 +318: 0.000000e+00 0.000000e+00 +319: 0.000000e+00 0.000000e+00 +320: 0.000000e+00 0.000000e+00 +321: 0.000000e+00 0.000000e+00 +322: 0.000000e+00 0.000000e+00 +323: 0.000000e+00 0.000000e+00 +324: 0.000000e+00 0.000000e+00 +325: 0.000000e+00 0.000000e+00 +326: 0.000000e+00 0.000000e+00 +327: 0.000000e+00 0.000000e+00 +328: 0.000000e+00 0.000000e+00 +329: 0.000000e+00 0.000000e+00 +330: 0.000000e+00 0.000000e+00 +331: 0.000000e+00 0.000000e+00 +332: 0.000000e+00 0.000000e+00 +333: 0.000000e+00 0.000000e+00 +334: 0.000000e+00 0.000000e+00 +335: 0.000000e+00 0.000000e+00 +336: 0.000000e+00 0.000000e+00 +337: 0.000000e+00 0.000000e+00 +338: 0.000000e+00 0.000000e+00 +339: 0.000000e+00 0.000000e+00 +340: 0.000000e+00 0.000000e+00 +341: 0.000000e+00 0.000000e+00 +342: 0.000000e+00 0.000000e+00 +343: 0.000000e+00 0.000000e+00 +344: 0.000000e+00 0.000000e+00 +345: 0.000000e+00 0.000000e+00 +346: 0.000000e+00 0.000000e+00 +347: 0.000000e+00 0.000000e+00 +348: 0.000000e+00 0.000000e+00 +349: 0.000000e+00 0.000000e+00 +350: 0.000000e+00 0.000000e+00 +351: 0.000000e+00 0.000000e+00 +352: 0.000000e+00 0.000000e+00 +353: 0.000000e+00 0.000000e+00 +354: 0.000000e+00 0.000000e+00 +355: 0.000000e+00 0.000000e+00 +356: 0.000000e+00 0.000000e+00 +357: 0.000000e+00 0.000000e+00 +358: 0.000000e+00 0.000000e+00 +359: 0.000000e+00 0.000000e+00 +360: 0.000000e+00 0.000000e+00 +361: 0.000000e+00 0.000000e+00 +362: 0.000000e+00 0.000000e+00 +363: 0.000000e+00 0.000000e+00 +364: 0.000000e+00 0.000000e+00 +365: 0.000000e+00 0.000000e+00 +366: 0.000000e+00 0.000000e+00 +367: 0.000000e+00 0.000000e+00 +368: 0.000000e+00 0.000000e+00 +369: 0.000000e+00 0.000000e+00 +370: 0.000000e+00 0.000000e+00 +371: 0.000000e+00 0.000000e+00 +372: 0.000000e+00 0.000000e+00 +373: 0.000000e+00 0.000000e+00 +374: 0.000000e+00 0.000000e+00 +375: 0.000000e+00 0.000000e+00 +376: 0.000000e+00 0.000000e+00 +377: 0.000000e+00 0.000000e+00 +378: 0.000000e+00 0.000000e+00 +379: 0.000000e+00 0.000000e+00 +380: 0.000000e+00 0.000000e+00 +381: 0.000000e+00 0.000000e+00 +382: 0.000000e+00 0.000000e+00 +383: 0.000000e+00 0.000000e+00 +384: 0.000000e+00 0.000000e+00 +385: 0.000000e+00 0.000000e+00 +386: 0.000000e+00 0.000000e+00 +387: 0.000000e+00 0.000000e+00 +388: 0.000000e+00 0.000000e+00 +389: 0.000000e+00 0.000000e+00 +390: 0.000000e+00 0.000000e+00 +391: 0.000000e+00 0.000000e+00 +392: 0.000000e+00 0.000000e+00 +393: 0.000000e+00 0.000000e+00 +394: 0.000000e+00 0.000000e+00 +395: 0.000000e+00 0.000000e+00 +396: 0.000000e+00 0.000000e+00 +397: 0.000000e+00 0.000000e+00 +398: 0.000000e+00 0.000000e+00 +399: 0.000000e+00 0.000000e+00 +400: 0.000000e+00 0.000000e+00 +401: 0.000000e+00 0.000000e+00 +402: 0.000000e+00 0.000000e+00 +403: 0.000000e+00 0.000000e+00 +404: 0.000000e+00 0.000000e+00 +405: 0.000000e+00 0.000000e+00 +406: 0.000000e+00 0.000000e+00 +407: 0.000000e+00 0.000000e+00 +408: 0.000000e+00 0.000000e+00 +409: 0.000000e+00 0.000000e+00 +410: 0.000000e+00 0.000000e+00 +411: 0.000000e+00 0.000000e+00 +412: 0.000000e+00 0.000000e+00 +413: 0.000000e+00 0.000000e+00 +414: 0.000000e+00 0.000000e+00 +415: 0.000000e+00 0.000000e+00 +416: 0.000000e+00 0.000000e+00 +417: 0.000000e+00 0.000000e+00 +418: 0.000000e+00 0.000000e+00 +419: 0.000000e+00 0.000000e+00 +420: 0.000000e+00 0.000000e+00 +421: 0.000000e+00 0.000000e+00 +422: 0.000000e+00 0.000000e+00 +423: 0.000000e+00 0.000000e+00 +424: 0.000000e+00 0.000000e+00 +425: 0.000000e+00 0.000000e+00 +426: 0.000000e+00 0.000000e+00 +427: 0.000000e+00 0.000000e+00 +428: 0.000000e+00 0.000000e+00 +429: 0.000000e+00 0.000000e+00 +430: 0.000000e+00 0.000000e+00 +431: 0.000000e+00 0.000000e+00 +432: 0.000000e+00 0.000000e+00 +433: 0.000000e+00 0.000000e+00 +434: 0.000000e+00 0.000000e+00 +435: 0.000000e+00 0.000000e+00 +436: 0.000000e+00 0.000000e+00 +437: 0.000000e+00 0.000000e+00 +438: 0.000000e+00 0.000000e+00 +439: 0.000000e+00 0.000000e+00 +440: 0.000000e+00 0.000000e+00 +441: 0.000000e+00 0.000000e+00 +442: 0.000000e+00 0.000000e+00 +443: 0.000000e+00 0.000000e+00 +444: 0.000000e+00 0.000000e+00 +445: 0.000000e+00 0.000000e+00 +446: 0.000000e+00 0.000000e+00 +447: 0.000000e+00 0.000000e+00 +448: 0.000000e+00 0.000000e+00 +449: 0.000000e+00 0.000000e+00 +450: 0.000000e+00 0.000000e+00 +451: 0.000000e+00 0.000000e+00 +452: 0.000000e+00 0.000000e+00 +453: 0.000000e+00 0.000000e+00 +454: 0.000000e+00 0.000000e+00 +455: 0.000000e+00 0.000000e+00 +456: 0.000000e+00 0.000000e+00 +457: 0.000000e+00 0.000000e+00 +458: 0.000000e+00 0.000000e+00 +459: 0.000000e+00 0.000000e+00 +460: 0.000000e+00 0.000000e+00 +461: 0.000000e+00 0.000000e+00 +462: 0.000000e+00 0.000000e+00 +463: 0.000000e+00 0.000000e+00 +464: 0.000000e+00 0.000000e+00 +465: 0.000000e+00 0.000000e+00 +466: 0.000000e+00 0.000000e+00 +467: 0.000000e+00 0.000000e+00 +468: 0.000000e+00 0.000000e+00 +469: 0.000000e+00 0.000000e+00 +470: 0.000000e+00 0.000000e+00 +471: 0.000000e+00 0.000000e+00 +472: 0.000000e+00 0.000000e+00 +473: 0.000000e+00 0.000000e+00 +474: 0.000000e+00 0.000000e+00 +475: 0.000000e+00 0.000000e+00 +476: 0.000000e+00 0.000000e+00 +477: 0.000000e+00 0.000000e+00 +478: 0.000000e+00 0.000000e+00 +479: 0.000000e+00 0.000000e+00 +480: 0.000000e+00 0.000000e+00 +481: 0.000000e+00 0.000000e+00 +482: 0.000000e+00 0.000000e+00 +483: 0.000000e+00 0.000000e+00 +484: 0.000000e+00 0.000000e+00 +485: 0.000000e+00 0.000000e+00 +486: 0.000000e+00 0.000000e+00 +487: 0.000000e+00 0.000000e+00 +488: 0.000000e+00 0.000000e+00 +489: 0.000000e+00 0.000000e+00 +490: 0.000000e+00 0.000000e+00 +491: 0.000000e+00 0.000000e+00 +492: 0.000000e+00 0.000000e+00 +493: 0.000000e+00 0.000000e+00 +494: 0.000000e+00 0.000000e+00 +495: 0.000000e+00 0.000000e+00 +496: 0.000000e+00 0.000000e+00 +497: 0.000000e+00 0.000000e+00 +498: 0.000000e+00 0.000000e+00 +499: 0.000000e+00 0.000000e+00 +500: 0.000000e+00 0.000000e+00 +501: 0.000000e+00 0.000000e+00 +502: 0.000000e+00 0.000000e+00 +503: 0.000000e+00 0.000000e+00 +504: 0.000000e+00 0.000000e+00 +505: 0.000000e+00 0.000000e+00 +506: 0.000000e+00 0.000000e+00 +507: 0.000000e+00 0.000000e+00 +508: 0.000000e+00 0.000000e+00 +509: 0.000000e+00 0.000000e+00 +510: 0.000000e+00 0.000000e+00 +511: 0.000000e+00 0.000000e+00 +512: 0.000000e+00 0.000000e+00 +513: 0.000000e+00 0.000000e+00 +514: 0.000000e+00 0.000000e+00 +515: 0.000000e+00 0.000000e+00 +516: 0.000000e+00 0.000000e+00 +517: 0.000000e+00 0.000000e+00 +518: 0.000000e+00 0.000000e+00 +519: 0.000000e+00 0.000000e+00 +520: 0.000000e+00 0.000000e+00 +521: 0.000000e+00 0.000000e+00 +522: 0.000000e+00 0.000000e+00 +523: 0.000000e+00 0.000000e+00 +524: 0.000000e+00 0.000000e+00 +525: 0.000000e+00 0.000000e+00 +526: 0.000000e+00 0.000000e+00 +527: 0.000000e+00 0.000000e+00 +528: 0.000000e+00 0.000000e+00 +529: 0.000000e+00 0.000000e+00 +530: 0.000000e+00 0.000000e+00 +531: 0.000000e+00 0.000000e+00 +532: 0.000000e+00 0.000000e+00 +533: 0.000000e+00 0.000000e+00 +534: 0.000000e+00 0.000000e+00 +535: 0.000000e+00 0.000000e+00 +536: 0.000000e+00 0.000000e+00 +537: 0.000000e+00 0.000000e+00 +538: 0.000000e+00 0.000000e+00 +539: 0.000000e+00 0.000000e+00 +540: 0.000000e+00 0.000000e+00 +541: 0.000000e+00 0.000000e+00 +542: 0.000000e+00 0.000000e+00 +543: 0.000000e+00 0.000000e+00 +544: 0.000000e+00 0.000000e+00 +545: 0.000000e+00 0.000000e+00 +546: 0.000000e+00 0.000000e+00 +547: 0.000000e+00 0.000000e+00 +548: 0.000000e+00 0.000000e+00 +549: 0.000000e+00 0.000000e+00 +550: 0.000000e+00 0.000000e+00 +551: 0.000000e+00 0.000000e+00 +552: 0.000000e+00 0.000000e+00 +553: 0.000000e+00 0.000000e+00 +554: 0.000000e+00 0.000000e+00 +555: 0.000000e+00 0.000000e+00 +556: 0.000000e+00 0.000000e+00 +557: 0.000000e+00 0.000000e+00 +558: 0.000000e+00 0.000000e+00 +559: 0.000000e+00 0.000000e+00 +560: 0.000000e+00 0.000000e+00 +561: 0.000000e+00 0.000000e+00 +562: 0.000000e+00 0.000000e+00 +563: 0.000000e+00 0.000000e+00 +564: 0.000000e+00 0.000000e+00 +565: 0.000000e+00 0.000000e+00 +566: 0.000000e+00 0.000000e+00 +567: 0.000000e+00 0.000000e+00 +568: 0.000000e+00 0.000000e+00 +569: 0.000000e+00 0.000000e+00 +570: 0.000000e+00 0.000000e+00 +571: 0.000000e+00 0.000000e+00 +572: 0.000000e+00 0.000000e+00 +573: 0.000000e+00 0.000000e+00 +574: 0.000000e+00 0.000000e+00 +575: 0.000000e+00 0.000000e+00 +576: 0.000000e+00 0.000000e+00 +577: 0.000000e+00 0.000000e+00 +578: 0.000000e+00 0.000000e+00 +579: 0.000000e+00 0.000000e+00 +580: 0.000000e+00 0.000000e+00 +581: 0.000000e+00 0.000000e+00 +582: 0.000000e+00 0.000000e+00 +583: 0.000000e+00 0.000000e+00 +584: 0.000000e+00 0.000000e+00 +585: 0.000000e+00 0.000000e+00 +586: 0.000000e+00 0.000000e+00 +587: 0.000000e+00 0.000000e+00 +588: 0.000000e+00 0.000000e+00 +589: 0.000000e+00 0.000000e+00 +590: 0.000000e+00 0.000000e+00 +591: 0.000000e+00 0.000000e+00 +592: 0.000000e+00 0.000000e+00 +593: 0.000000e+00 0.000000e+00 +594: 0.000000e+00 0.000000e+00 +595: 0.000000e+00 0.000000e+00 +596: 0.000000e+00 0.000000e+00 +597: 0.000000e+00 0.000000e+00 +598: 0.000000e+00 0.000000e+00 +599: 0.000000e+00 0.000000e+00 +600: 0.000000e+00 0.000000e+00 +601: 0.000000e+00 0.000000e+00 +602: 0.000000e+00 0.000000e+00 +603: 0.000000e+00 0.000000e+00 +604: 0.000000e+00 0.000000e+00 +605: 0.000000e+00 0.000000e+00 +606: 0.000000e+00 0.000000e+00 +607: 0.000000e+00 0.000000e+00 +608: 0.000000e+00 0.000000e+00 +609: 0.000000e+00 0.000000e+00 +610: 0.000000e+00 0.000000e+00 +611: 0.000000e+00 0.000000e+00 +612: 0.000000e+00 0.000000e+00 +613: 0.000000e+00 0.000000e+00 +614: 0.000000e+00 0.000000e+00 +615: 0.000000e+00 0.000000e+00 +616: 0.000000e+00 0.000000e+00 +617: 0.000000e+00 0.000000e+00 +618: 0.000000e+00 0.000000e+00 +619: 0.000000e+00 0.000000e+00 +620: 1.000000e+00 0.000000e+00 +621: 1.000000e+00 0.000000e+00 +622: 1.000000e+00 0.000000e+00 +623: 1.000000e+00 0.000000e+00 +624: 1.000000e+00 0.000000e+00 +625: 1.000000e+00 0.000000e+00 +626: 1.000000e+00 0.000000e+00 +627: 1.000000e+00 0.000000e+00 +628: 1.000000e+00 0.000000e+00 +629: 1.000000e+00 0.000000e+00 + +# factor 0: 7 +# factor 1: 6 +# factor 2: 5 +# factor 3: 3 +0: 2.100000e+01 0.000000e+00 +1: 2.096173e+01 -1.051242e-15 +2: 2.084715e+01 1.373901e-15 +3: 2.065704e+01 6.383782e-16 +4: 2.039261e+01 6.397660e-15 +5: 2.005560e+01 5.939693e-15 +6: 1.964821e+01 7.355228e-15 +7: 1.917307e+01 6.383782e-16 +8: 1.863328e+01 -5.273559e-16 +9: 1.803232e+01 1.887379e-15 +10: 1.737406e+01 6.661338e-16 +11: 1.666272e+01 4.884981e-15 +12: 1.590285e+01 5.273559e-15 +13: 1.509927e+01 5.939693e-15 +14: 1.425706e+01 1.165734e-15 +15: 1.338149e+01 8.326673e-16 +16: 1.247803e+01 2.081668e-15 +17: 1.155225e+01 7.494005e-16 +18: 1.060982e+01 3.039236e-15 +19: 9.656443e+00 4.177214e-15 +20: 8.697842e+00 3.788636e-15 +21: 7.739681e+00 1.110223e-15 +22: 6.787549e+00 8.604228e-16 +23: 5.846909e+00 1.748601e-15 +24: 4.923063e+00 1.387779e-16 +25: 4.021112e+00 7.216450e-16 +26: 3.145923e+00 1.942890e-15 +27: 2.302090e+00 1.276756e-15 +28: 1.493907e+00 -1.665335e-16 +29: 7.253407e-01 -5.551115e-16 +30: -6.661338e-16 -2.220446e-16 +31: -6.788825e-01 -1.221245e-15 +32: -1.308472e+00 -2.498002e-15 +33: -1.886344e+00 -1.110223e-15 +34: -2.410503e+00 -2.220446e-15 +35: -2.879385e+00 -1.276756e-15 +36: -3.291865e+00 -1.332268e-15 +37: -3.647260e+00 -1.165734e-15 +38: -3.945325e+00 -3.108624e-15 +39: -4.186247e+00 -4.662937e-15 +40: -4.370640e+00 -3.774758e-15 +41: -4.499527e+00 -3.552714e-15 +42: -4.574329e+00 -2.220446e-16 +43: -4.596844e+00 -6.277699e-17 +44: -4.569225e+00 -3.979137e-16 +45: -4.493959e+00 -6.125144e-16 +46: -4.373836e+00 -2.588272e-15 +47: -4.211924e+00 -1.708533e-15 +48: -4.011536e+00 -1.610301e-15 +49: -3.776200e+00 -6.521231e-16 +50: -3.509623e+00 -9.518362e-16 +51: -3.215658e+00 -8.615412e-16 +52: -2.898269e+00 -8.023074e-16 +53: -2.561495e+00 -1.295581e-15 +54: -2.209413e+00 -1.882798e-15 +55: -1.846105e+00 -1.309680e-15 +56: -1.475622e+00 -8.731621e-17 +57: -1.101950e+00 -6.064088e-16 +58: -7.289764e-01 -5.283445e-16 +59: -3.604599e-01 -3.700906e-16 +60: -2.480852e-16 -3.217778e-16 +61: 3.489905e-01 -3.427744e-16 +62: 6.833118e-01 -5.628327e-17 +63: 1.000000e+00 9.525275e-17 +64: 1.296348e+00 -1.015236e-16 +65: 1.569925e+00 1.617614e-16 +66: 1.818588e+00 1.651517e-16 +67: 2.040501e+00 8.832176e-16 +68: 2.234139e+00 7.155281e-16 +69: 2.398296e+00 8.060351e-16 +70: 2.532089e+00 9.180115e-16 +71: 2.634960e+00 2.633349e-16 +72: 2.706672e+00 1.187041e-15 +73: 2.747304e+00 3.755772e-16 +74: 2.757241e+00 8.376828e-16 +75: 2.737169e+00 2.203930e-15 +76: 2.688054e+00 1.197283e-15 +77: 2.611133e+00 -2.998065e-16 +78: 2.507892e+00 -9.785191e-16 +79: 2.380048e+00 -9.898606e-16 +80: 2.229526e+00 -5.077927e-16 +81: 2.058436e+00 -5.413850e-16 +82: 1.869051e+00 6.993526e-16 +83: 1.663775e+00 -4.736301e-16 +84: 1.445125e+00 1.110223e-16 +85: 1.215696e+00 -2.373302e-16 +86: 9.781383e-01 2.565092e-16 +87: 7.351295e-01 -2.522207e-16 +88: 4.893460e-01 -1.473382e-16 +89: 2.434373e-01 1.109184e-15 +90: -1.989431e-15 -3.411591e-16 +91: -2.384474e-01 -5.318012e-16 +92: -4.694881e-01 2.328401e-16 +93: -6.908292e-01 -8.646065e-17 +94: -9.003229e-01 -7.857807e-16 +95: -1.095985e+00 -1.799037e-15 +96: -1.276012e+00 -2.161196e-16 +97: -1.438796e+00 -9.983452e-16 +98: -1.582939e+00 -6.065732e-16 +99: -1.707260e+00 2.152265e-16 +100: -1.810806e+00 -3.264639e-16 +101: -1.892859e+00 -5.055122e-16 +102: -1.952933e+00 -2.036075e-15 +103: -1.990783e+00 -1.452785e-15 +104: -2.006398e+00 -1.506787e-15 +105: -2.000000e+00 -3.771208e-16 +106: -1.972036e+00 3.323489e-16 +107: -1.923170e+00 -7.476386e-16 +108: -1.854275e+00 -9.508935e-17 +109: -1.766419e+00 -1.940360e-15 +110: -1.660850e+00 -1.760991e-15 +111: -1.538980e+00 -6.147117e-16 +112: -1.402374e+00 -8.585493e-16 +113: -1.252721e+00 -3.300750e-16 +114: -1.091826e+00 -1.311000e-15 +115: -9.215804e-01 -4.440252e-16 +116: -7.439464e-01 -2.073484e-15 +117: -5.609343e-01 -2.601855e-15 +118: -3.745807e-01 -8.979032e-16 +119: -1.869274e-01 2.912711e-16 +120: -1.715798e-15 5.664477e-16 +121: 1.842128e-01 1.230585e-16 +122: 3.637795e-01 1.061285e-15 +123: 5.368447e-01 8.829804e-16 +124: 7.016480e-01 -4.939307e-16 +125: 8.565403e-01 1.392795e-15 +126: 1.000000e+00 0.000000e+00 +127: 1.130647e+00 -1.528557e-17 +128: 1.247255e+00 -4.291169e-16 +129: 1.348762e+00 3.223830e-16 +130: 1.434281e+00 -6.912208e-16 +131: 1.503106e+00 -1.380961e-15 +132: 1.554714e+00 1.253781e-16 +133: 1.588775e+00 -1.792421e-16 +134: 1.605146e+00 -6.501297e-16 +135: 1.603875e+00 2.105874e-16 +136: 1.585197e+00 1.751581e-16 +137: 1.549526e+00 1.205978e-16 +138: 1.497454e+00 -1.026329e-15 +139: 1.429739e+00 2.034781e-17 +140: 1.347296e+00 -4.955509e-16 +141: 1.251187e+00 -1.428373e-15 +142: 1.142604e+00 -3.568238e-16 +143: 1.022861e+00 -3.836222e-16 +144: 8.933738e-01 -6.389491e-16 +145: 7.556456e-01 -1.247492e-15 +146: 6.112512e-01 -8.130105e-16 +147: 4.618187e-01 8.646065e-17 +148: 3.090116e-01 -6.532673e-16 +149: 1.545116e-01 -1.839025e-16 +150: -6.539201e-17 1.134394e-16 +151: -1.528597e-01 -3.883800e-16 +152: -3.024391e-01 -9.790769e-16 +153: -4.471621e-01 -3.570986e-16 +154: -5.855204e-01 -3.154104e-17 +155: -7.160894e-01 -3.803775e-16 +156: -8.375420e-01 -1.423005e-16 +157: -9.486618e-01 9.467191e-16 +158: -1.048355e+00 -1.075184e-15 +159: -1.135660e+00 2.958649e-16 +160: -1.209758e+00 -7.434995e-16 +161: -1.269978e+00 -1.197924e-15 +162: -1.315804e+00 -2.483837e-15 +163: -1.346880e+00 -1.986506e-15 +164: -1.363010e+00 -2.273250e-15 +165: -1.364160e+00 -3.362421e-15 +166: -1.350455e+00 -2.707155e-15 +167: -1.322180e+00 -2.640979e-15 +168: -1.279773e+00 2.220446e-16 +169: -1.223817e+00 -5.068662e-16 +170: -1.155037e+00 1.680655e-16 +171: -1.074290e+00 7.088856e-16 +172: -9.825500e-01 -1.675164e-16 +173: -8.809036e-01 -2.262585e-16 +174: -7.705329e-01 1.660555e-16 +175: -6.527036e-01 4.472323e-16 +176: -5.287511e-01 7.307475e-16 +177: -4.000650e-01 -3.172974e-16 +178: -2.680744e-01 4.137293e-16 +179: -1.342324e-01 -6.064496e-16 +180: 6.742551e-16 -1.470733e-16 +181: 1.331690e-01 1.504979e-16 +182: 2.638437e-01 -8.731621e-17 +183: 3.906312e-01 3.207541e-16 +184: 5.121908e-01 -7.590137e-16 +185: 6.272483e-01 -1.424316e-16 +186: 7.346089e-01 -7.936247e-16 +187: 8.331694e-01 -8.288514e-16 +188: 9.219291e-01 -6.631544e-16 +189: 1.000000e+00 -7.482822e-16 +190: 1.066615e+00 -2.159362e-16 +191: 1.121136e+00 -3.681989e-16 +192: 1.163060e+00 -9.267006e-16 +193: 1.192020e+00 -6.361458e-16 +194: 1.207795e+00 -1.250618e-15 +195: 1.210304e+00 -2.498760e-15 +196: 1.199610e+00 -1.082633e-15 +197: 1.175919e+00 -1.051684e-15 +198: 1.139572e+00 -2.953387e-15 +199: 1.091048e+00 -1.988494e-15 +200: 1.030951e+00 -2.573996e-15 +201: 9.600058e-01 -2.506964e-15 +202: 8.790504e-01 -2.525727e-15 +203: 7.890244e-01 -1.430320e-15 +204: 6.909592e-01 -7.940139e-16 +205: 5.859667e-01 -1.448806e-15 +206: 4.752260e-01 -3.331757e-15 +207: 3.599714e-01 -2.696823e-15 +208: 2.414782e-01 -1.273025e-15 +209: 1.210491e-01 -3.884812e-15 +210: 0.000000e+00 0.000000e+00 +211: -1.203541e-01 9.367507e-17 +212: -2.387131e-01 -8.326673e-17 +213: -3.538059e-01 -1.671241e-15 +214: -4.644036e-01 -1.032863e-15 +215: -5.693324e-01 -5.551115e-17 +216: -6.674861e-01 -2.656564e-15 +217: -7.578373e-01 -1.046741e-15 +218: -8.394483e-01 5.748960e-16 +219: -9.114803e-01 -1.110223e-16 +220: -9.732024e-01 -6.661338e-16 +221: -1.023998e+00 -4.440892e-16 +222: -1.063373e+00 -5.551115e-17 +223: -1.090956e+00 -3.092682e-15 +224: -1.106507e+00 -1.665335e-16 +225: -1.109916e+00 -3.330669e-16 +226: -1.101205e+00 -8.524518e-16 +227: -1.080526e+00 -1.352052e-15 +228: -1.048159e+00 -6.760261e-16 +229: -1.004510e+00 -3.707147e-16 +230: -9.501041e-01 -1.643486e-15 +231: -8.855794e-01 -7.731706e-16 +232: -8.116813e-01 -4.718448e-16 +233: -7.292528e-01 -6.343927e-16 +234: -6.392251e-01 -1.213274e-15 +235: -5.426076e-01 -1.354045e-15 +236: -4.404764e-01 2.775558e-17 +237: -3.339626e-01 -1.586978e-15 +238: -2.242400e-01 -3.845925e-16 +239: -1.125123e-01 2.200518e-16 +240: -2.369188e-16 -4.916293e-16 +241: 1.120728e-01 -3.439556e-16 +242: 2.224913e-01 -4.163336e-16 +243: 3.300635e-01 3.885781e-16 +244: 4.336325e-01 3.221783e-16 +245: 5.320889e-01 -2.131487e-16 +246: 6.243825e-01 5.134066e-16 +247: 7.095336e-01 5.709105e-16 +248: 7.866431e-01 7.096884e-16 +249: 8.549018e-01 3.468732e-16 +250: 9.135989e-01 1.042755e-15 +251: 9.621294e-01 1.342088e-15 +252: 1.000000e+00 3.033186e-16 +253: 1.026834e+00 2.702899e-16 +254: 1.042376e+00 6.785755e-16 +255: 1.046493e+00 5.789826e-16 +256: 1.039174e+00 1.089270e-15 +257: 1.020536e+00 3.671570e-16 +258: 9.908126e-01 4.396257e-16 +259: 9.503608e-01 3.728405e-16 +260: 8.996505e-01 3.804314e-16 +261: 8.392616e-01 -2.887396e-17 +262: 7.698769e-01 4.595749e-16 +263: 6.922746e-01 9.020201e-16 +264: 6.073198e-01 2.890403e-16 +265: 5.159547e-01 -3.175108e-18 +266: 4.191883e-01 3.195876e-16 +267: 3.180856e-01 1.301103e-16 +268: 2.137557e-01 5.687302e-16 +269: 1.073401e-01 6.100192e-16 +270: -2.894407e-16 5.826677e-16 +271: -1.070960e-01 -2.616340e-16 +272: -2.127847e-01 -1.107472e-15 +273: -3.159206e-01 -3.949178e-16 +274: -4.153883e-01 -4.401969e-17 +275: -5.101143e-01 5.618340e-17 +276: -5.990789e-01 -8.538336e-16 +277: -6.813264e-01 5.927817e-18 +278: -7.559760e-01 -1.212488e-15 +279: -8.222306e-01 -1.417329e-15 +280: -8.793852e-01 -6.323152e-16 +281: -9.268349e-01 2.641613e-17 +282: -9.640807e-01 -3.563825e-16 +283: -9.907347e-01 -2.201713e-16 +284: -1.006524e+00 -1.872807e-16 +285: -1.011295e+00 -1.030591e-15 +286: -1.005012e+00 -1.762599e-15 +287: -9.877604e-01 -1.287051e-15 +288: -9.597424e-01 8.416380e-17 +289: -9.212779e-01 -5.229262e-16 +290: -8.727990e-01 -6.623696e-16 +291: -8.148456e-01 -5.929106e-16 +292: -7.480596e-01 -1.254426e-15 +293: -6.731776e-01 -1.896992e-15 +294: -5.910229e-01 -1.516593e-16 +295: -5.024970e-01 2.399589e-16 +296: -4.085691e-01 -2.688540e-16 +297: -3.102660e-01 -3.933898e-17 +298: -2.086610e-01 -8.122086e-16 +299: -1.048621e-01 -8.027307e-16 +300: 7.718245e-16 -3.315040e-16 +301: 1.047837e-01 3.818447e-17 +302: 2.083493e-01 -1.594565e-16 +303: 3.095711e-01 -1.937644e-16 +304: 4.073493e-01 -2.527135e-16 +305: 5.006223e-01 -1.132903e-15 +306: 5.883777e-01 -1.074550e-15 +307: 6.696634e-01 2.412259e-16 +308: 7.435978e-01 4.441532e-16 +309: 8.093792e-01 4.332855e-16 +310: 8.662947e-01 1.765880e-16 +311: 9.137272e-01 4.971401e-16 +312: 9.511629e-01 -3.896002e-16 +313: 9.781962e-01 2.715655e-17 +314: 9.945343e-01 8.315841e-16 +315: 1.000000e+00 3.405386e-16 +316: 9.945343e-01 4.577114e-16 +317: 9.781962e-01 2.807765e-16 +318: 9.511629e-01 4.560366e-16 +319: 9.137272e-01 -1.015889e-16 +320: 8.662947e-01 2.889358e-16 +321: 8.093792e-01 9.202069e-16 +322: 7.435978e-01 -3.847117e-16 +323: 6.696634e-01 -6.442822e-16 +324: 5.883777e-01 9.510423e-17 +325: 5.006223e-01 -5.178621e-16 +326: 4.073493e-01 -2.175789e-16 +327: 3.095711e-01 -2.918347e-16 +328: 2.083493e-01 -1.411991e-16 +329: 1.047837e-01 1.072074e-15 +330: -9.220486e-16 4.483855e-17 +331: -1.048621e-01 3.913489e-16 +332: -2.086610e-01 3.703136e-16 +333: -3.102660e-01 -5.325539e-16 +334: -4.085691e-01 -5.660418e-16 +335: -5.024970e-01 -9.996290e-16 +336: -5.910229e-01 -7.211110e-17 +337: -6.731776e-01 -4.239151e-16 +338: -7.480596e-01 -9.777574e-17 +339: -8.148456e-01 -6.837208e-16 +340: -8.727990e-01 -2.689088e-16 +341: -9.212779e-01 -8.882634e-16 +342: -9.597424e-01 -1.457615e-15 +343: -9.877604e-01 -4.711380e-16 +344: -1.005012e+00 -4.166625e-16 +345: -1.011295e+00 -1.465166e-16 +346: -1.006524e+00 -6.866384e-17 +347: -9.907347e-01 -7.860160e-17 +348: -9.640807e-01 -3.190243e-16 +349: -9.268349e-01 -1.562645e-15 +350: -8.793852e-01 -6.689875e-16 +351: -8.222306e-01 -4.120382e-16 +352: -7.559760e-01 -6.006457e-16 +353: -6.813264e-01 -1.082422e-15 +354: -5.990789e-01 -3.007668e-16 +355: -5.101143e-01 -1.113625e-15 +356: -4.153883e-01 -1.059421e-15 +357: -3.159206e-01 -2.723691e-16 +358: -2.127847e-01 -8.842800e-17 +359: -1.070960e-01 -8.046626e-17 +360: -1.906317e-16 -4.332091e-16 +361: 1.073401e-01 -2.998168e-17 +362: 2.137557e-01 -9.919583e-16 +363: 3.180856e-01 -5.691174e-16 +364: 4.191883e-01 -2.426970e-16 +365: 5.159547e-01 -3.323034e-16 +366: 6.073198e-01 5.066994e-16 +367: 6.922746e-01 6.240069e-16 +368: 7.698769e-01 -3.540730e-16 +369: 8.392616e-01 2.615971e-16 +370: 8.996505e-01 2.214334e-16 +371: 9.503608e-01 -1.437466e-16 +372: 9.908126e-01 7.610382e-16 +373: 1.020536e+00 6.918356e-16 +374: 1.039174e+00 1.404292e-15 +375: 1.046493e+00 6.516396e-16 +376: 1.042376e+00 1.124964e-15 +377: 1.026834e+00 1.764577e-15 +378: 1.000000e+00 4.899035e-16 +379: 9.621294e-01 1.117297e-15 +380: 9.135989e-01 2.951538e-16 +381: 8.549018e-01 4.273443e-16 +382: 7.866431e-01 -2.086873e-16 +383: 7.095336e-01 1.243452e-15 +384: 6.243825e-01 5.610027e-16 +385: 5.320889e-01 2.120393e-16 +386: 4.336325e-01 4.199919e-16 +387: 3.300635e-01 1.840288e-16 +388: 2.224913e-01 -8.919745e-16 +389: 1.120728e-01 -3.674045e-16 +390: 3.723582e-16 1.676634e-16 +391: -1.125123e-01 -7.950819e-16 +392: -2.242400e-01 -3.173938e-16 +393: -3.339626e-01 -1.822978e-16 +394: -4.404764e-01 -7.659168e-16 +395: -5.426076e-01 -1.206964e-15 +396: -6.392251e-01 -1.343149e-15 +397: -7.292528e-01 -1.765238e-16 +398: -8.116813e-01 -2.792220e-15 +399: -8.855794e-01 -1.338977e-15 +400: -9.501041e-01 -9.920244e-16 +401: -1.004510e+00 -2.009620e-15 +402: -1.048159e+00 -2.005039e-15 +403: -1.080526e+00 -2.305180e-15 +404: -1.101205e+00 -1.099740e-15 +405: -1.109916e+00 -3.130874e-15 +406: -1.106507e+00 -1.687134e-15 +407: -1.090956e+00 -1.656185e-15 +408: -1.063373e+00 -1.085649e-15 +409: -1.023998e+00 -2.991394e-15 +410: -9.732024e-01 -1.503056e-15 +411: -9.114803e-01 -1.614514e-15 +412: -8.394483e-01 -4.325425e-15 +413: -7.578373e-01 -1.100952e-15 +414: -6.674861e-01 -1.412321e-15 +415: -5.693324e-01 -1.504031e-15 +416: -4.644036e-01 -1.876225e-15 +417: -3.538059e-01 -1.268903e-15 +418: -2.387131e-01 -1.355863e-15 +419: -1.203541e-01 -3.610669e-15 +420: 0.000000e+00 0.000000e+00 +421: 1.210491e-01 9.367507e-17 +422: 2.414782e-01 -8.326673e-17 +423: 3.599714e-01 -1.328711e-16 +424: 4.752260e-01 5.055071e-16 +425: 5.859667e-01 -5.551115e-17 +426: 6.909592e-01 -1.118194e-15 +427: 7.890244e-01 4.916293e-16 +428: 8.790504e-01 -9.634741e-16 +429: 9.600058e-01 -1.110223e-16 +430: 1.030951e+00 -6.661338e-16 +431: 1.091048e+00 -4.440892e-16 +432: 1.139572e+00 -5.551115e-17 +433: 1.175919e+00 -1.594209e-17 +434: 1.199610e+00 -1.665335e-16 +435: 1.210304e+00 -3.330669e-16 +436: 1.207795e+00 6.859183e-16 +437: 1.192020e+00 1.863180e-16 +438: 1.163060e+00 9.315899e-17 +439: 1.121136e+00 3.984703e-16 +440: 1.066615e+00 -1.051156e-16 +441: 1.000000e+00 -3.985521e-18 +442: 9.219291e-01 -4.718448e-16 +443: 8.331694e-01 1.347924e-16 +444: 7.346089e-01 3.250959e-16 +445: 6.272483e-01 -2.002673e-16 +446: 5.121908e-01 2.775558e-17 +447: 3.906312e-01 1.436882e-16 +448: 2.638437e-01 3.845925e-16 +449: 1.331690e-01 -1.645407e-16 +450: -4.292150e-16 1.046741e-15 +451: -1.342324e-01 2.329333e-16 +452: -2.680744e-01 -4.163336e-16 +453: -4.000650e-01 3.885781e-16 +454: -5.287511e-01 8.990671e-16 +455: -6.527036e-01 -1.174630e-15 +456: -7.705329e-01 -2.178741e-15 +457: -8.809036e-01 -1.736645e-15 +458: -9.825500e-01 -1.597867e-15 +459: -1.074290e+00 -2.345275e-15 +460: -1.155037e+00 -1.264800e-15 +461: -1.223817e+00 -2.119244e-15 +462: -1.279773e+00 -8.127397e-17 +463: -1.322180e+00 2.702899e-16 +464: -1.350455e+00 -4.752021e-16 +465: -1.364160e+00 1.943900e-16 +466: -1.363010e+00 -1.602877e-15 +467: -1.346880e+00 -7.866206e-16 +468: -1.315804e+00 -3.295594e-16 +469: -1.269978e+00 -1.175205e-17 +470: -1.209758e+00 3.804314e-16 +471: -1.135660e+00 -2.887396e-17 +472: -1.048355e+00 2.672787e-16 +473: -9.486618e-01 -8.286463e-16 +474: -8.375420e-01 -1.057034e-15 +475: -7.160894e-01 3.814174e-16 +476: -5.855204e-01 -1.611531e-16 +477: -4.471621e-01 3.224066e-16 +478: -3.024391e-01 3.991542e-17 +479: -1.528597e-01 2.735007e-16 +480: 1.536727e-15 -6.379847e-16 +481: 1.545116e-01 -1.006782e-15 +482: 3.090116e-01 9.116388e-16 +483: 4.618187e-01 8.582290e-17 +484: 6.112512e-01 3.405728e-16 +485: 7.556456e-01 -2.322610e-16 +486: 8.933738e-01 6.845365e-16 +487: 1.022861e+00 -5.709610e-16 +488: 1.142604e+00 -1.020192e-15 +489: 1.251187e+00 6.979304e-16 +490: 1.347296e+00 1.368698e-16 +491: 1.429739e+00 -1.658801e-16 +492: 1.497454e+00 -9.332713e-16 +493: 1.549526e+00 -2.787505e-17 +494: 1.585197e+00 1.973118e-16 +495: 1.603875e+00 -1.222888e-15 +496: 1.605146e+00 1.603633e-16 +497: 1.588775e+00 1.020505e-15 +498: 1.554714e+00 1.622534e-15 +499: 1.503106e+00 1.207740e-15 +500: 1.434281e+00 1.645186e-15 +501: 1.348762e+00 1.762744e-16 +502: 1.247255e+00 -6.775376e-16 +503: 1.130647e+00 1.948933e-15 +504: 1.000000e+00 4.063698e-17 +505: 8.565403e-01 -4.848547e-17 +506: 7.016480e-01 1.157385e-16 +507: 5.368447e-01 2.010314e-16 +508: 3.637795e-01 1.011987e-16 +509: 1.842128e-01 -8.508047e-16 +510: 2.184058e-16 3.826635e-16 +511: -1.869274e-01 2.304807e-16 +512: -3.745807e-01 -2.075306e-16 +513: -5.609343e-01 -1.456903e-16 +514: -7.439464e-01 1.799531e-16 +515: -9.215804e-01 -1.132903e-15 +516: -1.091826e+00 -6.899572e-16 +517: -1.252721e+00 -2.395148e-16 +518: -1.402374e+00 -3.250319e-16 +519: -1.538980e+00 -3.358995e-16 +520: -1.660850e+00 -4.964489e-16 +521: -1.766419e+00 -1.758968e-16 +522: -1.854275e+00 -1.351082e-15 +523: -1.923170e+00 -9.343248e-16 +524: -1.972036e+00 -5.144897e-16 +525: -2.000000e+00 -4.286464e-16 +526: -2.006398e+00 -7.922144e-16 +527: -1.990783e+00 -7.768530e-16 +528: -1.952933e+00 -3.131484e-16 +529: -1.892859e+00 -1.447663e-15 +530: -1.810806e+00 -4.802492e-16 +531: -1.707260e+00 -1.483496e-15 +532: -1.582939e+00 -1.191984e-19 +533: -1.438796e+00 3.171992e-16 +534: -1.276012e+00 -3.856364e-16 +535: -1.095985e+00 -3.712144e-17 +536: -9.003229e-01 -2.656530e-16 +537: -6.908292e-01 -7.485384e-16 +538: -4.694881e-01 -4.056065e-16 +539: -2.384474e-01 -1.571999e-15 +540: -6.928228e-16 -1.164851e-15 +541: 2.434373e-01 -8.946324e-16 +542: 4.893460e-01 -1.744945e-15 +543: 7.351295e-01 -5.325539e-16 +544: 9.781383e-01 -4.218196e-16 +545: 1.215696e+00 -7.111846e-16 +546: 1.445125e+00 7.211110e-17 +547: 1.663775e+00 3.933440e-16 +548: 1.869051e+00 2.387427e-16 +549: 2.058436e+00 6.623531e-16 +550: 2.229526e+00 8.848688e-16 +551: 2.380048e+00 4.578105e-16 +552: 2.507892e+00 1.042237e-15 +553: 2.611133e+00 7.787877e-16 +554: 2.688054e+00 4.486707e-16 +555: 2.737169e+00 -9.844252e-17 +556: 2.757241e+00 1.085114e-15 +557: 2.747304e+00 1.652065e-15 +558: 2.706672e+00 9.309014e-16 +559: 2.634960e+00 9.372066e-16 +560: 2.532089e+00 6.770864e-16 +561: 2.398296e+00 8.859616e-16 +562: 2.234139e+00 5.531319e-16 +563: 2.040501e+00 6.482444e-16 +564: 1.818588e+00 1.021270e-15 +565: 1.569925e+00 6.170418e-16 +566: 1.296348e+00 5.991342e-16 +567: 1.000000e+00 1.122235e-16 +568: 6.833118e-01 -5.237245e-17 +569: 3.489905e-01 4.572817e-17 +570: 1.255224e-15 -1.911841e-16 +571: -3.604599e-01 -3.304446e-16 +572: -7.289764e-01 -7.996621e-16 +573: -1.101950e+00 -9.777470e-16 +574: -1.475622e+00 -8.195858e-16 +575: -1.846105e+00 -4.284516e-16 +576: -2.209413e+00 -7.913004e-16 +577: -2.561495e+00 -1.395104e-15 +578: -2.898269e+00 -1.796295e-15 +579: -3.215658e+00 -2.334403e-15 +580: -3.509623e+00 -2.374566e-15 +581: -3.776200e+00 -1.585969e-15 +582: -4.011536e+00 -1.065776e-15 +583: -4.211924e+00 -2.000312e-15 +584: -4.373836e+00 -1.287856e-15 +585: -4.493959e+00 -2.713545e-15 +586: -4.569225e+00 -3.874739e-15 +587: -4.596844e+00 -3.715867e-15 +588: -4.574329e+00 -7.119481e-16 +589: -4.499527e+00 -1.326284e-16 +590: -4.370640e+00 -1.291290e-15 +591: -4.186247e+00 -3.418408e-16 +592: -3.945325e+00 -1.458613e-15 +593: -3.647260e+00 -2.362103e-15 +594: -3.291865e+00 -2.227293e-15 +595: -2.879385e+00 -3.167754e-16 +596: -2.410503e+00 7.084363e-16 +597: -1.886344e+00 -1.524897e-16 +598: -1.308472e+00 8.867659e-16 +599: -6.788825e-01 5.700398e-16 +600: 3.116723e-15 -1.372575e-16 +601: 7.253407e-01 3.466772e-16 +602: 1.493907e+00 4.758283e-16 +603: 2.302090e+00 4.907391e-16 +604: 3.145923e+00 5.801571e-16 +605: 4.021112e+00 2.254369e-15 +606: 4.923063e+00 3.752702e-15 +607: 5.846909e+00 2.515624e-15 +608: 6.787549e+00 4.130446e-15 +609: 7.739681e+00 2.506948e-15 +610: 8.697842e+00 1.892420e-15 +611: 9.656443e+00 2.605490e-15 +612: 1.060982e+01 4.148441e-15 +613: 1.155225e+01 7.694226e-15 +614: 1.247803e+01 6.592110e-15 +615: 1.338149e+01 8.791495e-15 +616: 1.425706e+01 4.850939e-15 +617: 1.509927e+01 4.881888e-15 +618: 1.590285e+01 5.837016e-15 +619: 1.666272e+01 7.008012e-15 +620: 1.737406e+01 1.234228e-14 +621: 1.803232e+01 9.923262e-15 +622: 1.863328e+01 1.259665e-14 +623: 1.917307e+01 8.898454e-15 +624: 1.964821e+01 7.817899e-15 +625: 2.005560e+01 9.264560e-15 +626: 2.039261e+01 1.119992e-14 +627: 2.065704e+01 1.719154e-14 +628: 2.084715e+01 1.479702e-14 +629: 2.096173e+01 1.715733e-14 diff --git a/gsl-2.5/doc/examples/fftreal b/gsl-2.5/doc/examples/fftreal new file mode 100755 index 00000000..ebf94e9d --- /dev/null +++ b/gsl-2.5/doc/examples/fftreal @@ -0,0 +1,228 @@ +#! /bin/sh + +# fftreal - temporary wrapper script for .libs/fftreal +# Generated by libtool (GNU libtool) 2.4.2 +# +# The fftreal program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s/\([`"$\\]\)/\\\1/g' + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command="(cd /home/groups/kipac/chto/package/gsl/gsl-2.5/doc/examples; LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LIBRARY_PATH; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; LD_LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/fftw/include:/home/users/chto/lib/fftw/lib:/home/users/chto/lib/healpix/lib:/home/users/chto/lib/namaster/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/include:/home/users/chto/cpp/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LD_LIBRARY_PATH; PATH=/share/software/user/open/curl/7.54.0/bin:/share/software/user/open/libressl/2.5.3/bin:/home/users/chto/lib/cfitsio:/home/users/chto/lib/cfitsio/include:/home/users/chto/lib:/home/users/chto/bin/bin:/home/users/chto/bin:/home/users/chto/.texlive/bin/x86_64-linux:/home/groups/kipac/chto/anaconda2/envs/newenv3/bin:/home/users/chto/.local/bin/include:/home/users/chto/.local/bin/lib:/home/users/chto/.local/bin:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/bin64:/share/software/user/open/fftw/3.3.6/bin:/home/groups/kipac/chto/anaconda2/condabin:/share/software/user/restricted/ifort/2019/bin:/share/software/user/open/gsl/2.3/bin:/share/software/user/srcc/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/dell/srvadmin/bin:/opt/dell/srvadmin/iSM/bin:/home/users/chto/bin; export PATH; gcc -g -O2 -o \$progdir/\$file fftreal.o ../../.libs/libgsl.so ../../cblas/.libs/libgslcblas.so -lm -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/.libs -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/cblas/.libs -Wl,-rpath -Wl,/usr/local/lib)" + +# This environment variable determines our operation mode. +if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then + # install mode needs the following variables: + generated_by_libtool_version='2.4.2' + notinst_deplibs=' ../../libgsl.la ../../cblas/libgslcblas.la' +else + # When we are sourced in execute mode, $file and $ECHO are already set. + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + file="$0" + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + ECHO="printf %s\\n" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ which is used only on +# windows platforms, and (c) all begin with the string --lt- +# (application programs are unlikely to have options which match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's ../../libtool value, followed by no. +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=$0 + shift + for lt_opt + do + case "$lt_opt" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%/[^/]*$%%'` + test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=. + lt_dump_F=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%^.*/%%'` + cat "$lt_dump_D/$lt_dump_F" + exit 0 + ;; + --lt-*) + $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n "$lt_option_debug"; then + echo "fftreal:fftreal:${LINENO}: libtool wrapper (GNU libtool) 2.4.2" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + $ECHO "fftreal:fftreal:${LINENO}: newargv[$lt_dump_args_N]: $lt_arg" + lt_dump_args_N=`expr $lt_dump_args_N + 1` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ + + if test -n "$lt_option_debug"; then + $ECHO "fftreal:fftreal:${LINENO}: newargv[0]: $progdir/$program" 1>&2 + func_lt_dump_args ${1+"$@"} 1>&2 + fi + exec "$progdir/$program" ${1+"$@"} + + $ECHO "$0: cannot exec $program $*" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from $@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case " $* " in + *\ --lt-*) + for lt_wr_arg + do + case $lt_wr_arg in + --lt-*) ;; + *) set x "$@" "$lt_wr_arg"; shift;; + esac + shift + done ;; + esac + func_exec_program_core ${1+"$@"} +} + + # Parse options + func_parse_lt_options "$0" ${1+"$@"} + + # Find the directory that this script lives in. + thisdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + test "x$thisdir" = "x$file" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=`ls -ld "$file" | /usr/bin/sed -n 's/.*-> //p'` + while test -n "$file"; do + destdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + + # If there was a directory component, then change thisdir. + if test "x$destdir" != "x$file"; then + case "$destdir" in + [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;; + *) thisdir="$thisdir/$destdir" ;; + esac + fi + + file=`$ECHO "$file" | /usr/bin/sed 's%^.*/%%'` + file=`ls -ld "$thisdir/$file" | /usr/bin/sed -n 's/.*-> //p'` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no + if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then + # special case for '.' + if test "$thisdir" = "."; then + thisdir=`pwd` + fi + # remove .libs from thisdir + case "$thisdir" in + *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /usr/bin/sed 's%[\\/][^\\/]*$%%'` ;; + .libs ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=`cd "$thisdir" && pwd` + test -n "$absdir" && thisdir="$absdir" + + program=lt-'fftreal' + progdir="$thisdir/.libs" + + if test ! -f "$progdir/$program" || + { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /usr/bin/sed 1q`; \ + test "X$file" != "X$progdir/$program"; }; then + + file="$$-$program" + + if test ! -d "$progdir"; then + mkdir "$progdir" + else + rm -f "$progdir/$file" + fi + + # relink executable if necessary + if test -n "$relink_command"; then + if relink_command_output=`eval $relink_command 2>&1`; then : + else + printf %s\n "$relink_command_output" >&2 + rm -f "$progdir/$file" + exit 1 + fi + fi + + mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null || + { rm -f "$progdir/$program"; + mv -f "$progdir/$file" "$progdir/$program"; } + rm -f "$progdir/$file" + fi + + if test -f "$progdir/$program"; then + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + # Run the actual program with our arguments. + func_exec_program ${1+"$@"} + fi + else + # The program doesn't exist. + $ECHO "$0: error: \`$progdir/$program' does not exist" 1>&2 + $ECHO "This script is just a wrapper for $program." 1>&2 + $ECHO "See the libtool documentation for more information." 1>&2 + exit 1 + fi +fi diff --git a/gsl-2.5/doc/examples/fftreal.c b/gsl-2.5/doc/examples/fftreal.c new file mode 100644 index 00000000..ec344582 --- /dev/null +++ b/gsl-2.5/doc/examples/fftreal.c @@ -0,0 +1,59 @@ +#include +#include +#include +#include +#include + +int +main (void) +{ + int i, n = 100; + double data[n]; + + gsl_fft_real_wavetable * real; + gsl_fft_halfcomplex_wavetable * hc; + gsl_fft_real_workspace * work; + + for (i = 0; i < n; i++) + { + data[i] = 0.0; + } + + for (i = n / 3; i < 2 * n / 3; i++) + { + data[i] = 1.0; + } + + for (i = 0; i < n; i++) + { + printf ("%d: %e\n", i, data[i]); + } + printf ("\n"); + + work = gsl_fft_real_workspace_alloc (n); + real = gsl_fft_real_wavetable_alloc (n); + + gsl_fft_real_transform (data, 1, n, + real, work); + + gsl_fft_real_wavetable_free (real); + + for (i = 11; i < n; i++) + { + data[i] = 0; + } + + hc = gsl_fft_halfcomplex_wavetable_alloc (n); + + gsl_fft_halfcomplex_inverse (data, 1, n, + hc, work); + gsl_fft_halfcomplex_wavetable_free (hc); + + for (i = 0; i < n; i++) + { + printf ("%d: %e\n", i, data[i]); + } + + gsl_fft_real_workspace_free (work); + return 0; +} diff --git a/gsl-2.5/doc/examples/fftreal.txt b/gsl-2.5/doc/examples/fftreal.txt new file mode 100644 index 00000000..87f38d26 --- /dev/null +++ b/gsl-2.5/doc/examples/fftreal.txt @@ -0,0 +1,201 @@ +0: 0.000000e+00 +1: 0.000000e+00 +2: 0.000000e+00 +3: 0.000000e+00 +4: 0.000000e+00 +5: 0.000000e+00 +6: 0.000000e+00 +7: 0.000000e+00 +8: 0.000000e+00 +9: 0.000000e+00 +10: 0.000000e+00 +11: 0.000000e+00 +12: 0.000000e+00 +13: 0.000000e+00 +14: 0.000000e+00 +15: 0.000000e+00 +16: 0.000000e+00 +17: 0.000000e+00 +18: 0.000000e+00 +19: 0.000000e+00 +20: 0.000000e+00 +21: 0.000000e+00 +22: 0.000000e+00 +23: 0.000000e+00 +24: 0.000000e+00 +25: 0.000000e+00 +26: 0.000000e+00 +27: 0.000000e+00 +28: 0.000000e+00 +29: 0.000000e+00 +30: 0.000000e+00 +31: 0.000000e+00 +32: 0.000000e+00 +33: 1.000000e+00 +34: 1.000000e+00 +35: 1.000000e+00 +36: 1.000000e+00 +37: 1.000000e+00 +38: 1.000000e+00 +39: 1.000000e+00 +40: 1.000000e+00 +41: 1.000000e+00 +42: 1.000000e+00 +43: 1.000000e+00 +44: 1.000000e+00 +45: 1.000000e+00 +46: 1.000000e+00 +47: 1.000000e+00 +48: 1.000000e+00 +49: 1.000000e+00 +50: 1.000000e+00 +51: 1.000000e+00 +52: 1.000000e+00 +53: 1.000000e+00 +54: 1.000000e+00 +55: 1.000000e+00 +56: 1.000000e+00 +57: 1.000000e+00 +58: 1.000000e+00 +59: 1.000000e+00 +60: 1.000000e+00 +61: 1.000000e+00 +62: 1.000000e+00 +63: 1.000000e+00 +64: 1.000000e+00 +65: 1.000000e+00 +66: 0.000000e+00 +67: 0.000000e+00 +68: 0.000000e+00 +69: 0.000000e+00 +70: 0.000000e+00 +71: 0.000000e+00 +72: 0.000000e+00 +73: 0.000000e+00 +74: 0.000000e+00 +75: 0.000000e+00 +76: 0.000000e+00 +77: 0.000000e+00 +78: 0.000000e+00 +79: 0.000000e+00 +80: 0.000000e+00 +81: 0.000000e+00 +82: 0.000000e+00 +83: 0.000000e+00 +84: 0.000000e+00 +85: 0.000000e+00 +86: 0.000000e+00 +87: 0.000000e+00 +88: 0.000000e+00 +89: 0.000000e+00 +90: 0.000000e+00 +91: 0.000000e+00 +92: 0.000000e+00 +93: 0.000000e+00 +94: 0.000000e+00 +95: 0.000000e+00 +96: 0.000000e+00 +97: 0.000000e+00 +98: 0.000000e+00 +99: 0.000000e+00 + +0: 3.122705e-02 +1: 2.450194e-02 +2: 1.427646e-02 +3: 1.899536e-03 +4: -1.097701e-02 +5: -2.260263e-02 +6: -3.134804e-02 +7: -3.591554e-02 +8: -3.551489e-02 +9: -2.998321e-02 +10: -1.983327e-02 +11: -6.221841e-03 +12: 9.161253e-03 +13: 2.427436e-02 +14: 3.695824e-02 +15: 4.519985e-02 +16: 4.739798e-02 +17: 4.260194e-02 +18: 3.069621e-02 +19: 1.250816e-02 +20: -1.017626e-02 +21: -3.469604e-02 +22: -5.769429e-02 +23: -7.538051e-02 +24: -8.385398e-02 +25: -7.945977e-02 +26: -5.914429e-02 +27: -2.077636e-02 +28: 3.659819e-02 +29: 1.125953e-01 +30: 2.054434e-01 +31: 3.120546e-01 +32: 4.282146e-01 +33: 5.488770e-01 +34: 6.685387e-01 +35: 7.816653e-01 +36: 8.831282e-01 +37: 9.686159e-01 +38: 1.034981e+00 +39: 1.080492e+00 +40: 1.104967e+00 +41: 1.109770e+00 +42: 1.097677e+00 +43: 1.072623e+00 +44: 1.039334e+00 +45: 1.002904e+00 +46: 9.683306e-01 +47: 9.400659e-01 +48: 9.216117e-01 +49: 9.152040e-01 +50: 9.216117e-01 +51: 9.400659e-01 +52: 9.683306e-01 +53: 1.002904e+00 +54: 1.039334e+00 +55: 1.072623e+00 +56: 1.097677e+00 +57: 1.109770e+00 +58: 1.104967e+00 +59: 1.080492e+00 +60: 1.034981e+00 +61: 9.686159e-01 +62: 8.831282e-01 +63: 7.816653e-01 +64: 6.685387e-01 +65: 5.488770e-01 +66: 4.282146e-01 +67: 3.120546e-01 +68: 2.054434e-01 +69: 1.125953e-01 +70: 3.659819e-02 +71: -2.077636e-02 +72: -5.914429e-02 +73: -7.945977e-02 +74: -8.385398e-02 +75: -7.538051e-02 +76: -5.769429e-02 +77: -3.469604e-02 +78: -1.017626e-02 +79: 1.250816e-02 +80: 3.069621e-02 +81: 4.260194e-02 +82: 4.739798e-02 +83: 4.519985e-02 +84: 3.695824e-02 +85: 2.427436e-02 +86: 9.161253e-03 +87: -6.221841e-03 +88: -1.983327e-02 +89: -2.998321e-02 +90: -3.551489e-02 +91: -3.591554e-02 +92: -3.134804e-02 +93: -2.260263e-02 +94: -1.097701e-02 +95: 1.899536e-03 +96: 1.427646e-02 +97: 2.450194e-02 +98: 3.122705e-02 +99: 3.357077e-02 diff --git a/gsl-2.5/doc/examples/filt_edge b/gsl-2.5/doc/examples/filt_edge new file mode 100755 index 00000000..f689af15 --- /dev/null +++ b/gsl-2.5/doc/examples/filt_edge @@ -0,0 +1,228 @@ +#! /bin/sh + +# filt_edge - temporary wrapper script for .libs/filt_edge +# Generated by libtool (GNU libtool) 2.4.2 +# +# The filt_edge program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s/\([`"$\\]\)/\\\1/g' + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command="(cd /home/groups/kipac/chto/package/gsl/gsl-2.5/doc/examples; LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LIBRARY_PATH; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; LD_LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/fftw/include:/home/users/chto/lib/fftw/lib:/home/users/chto/lib/healpix/lib:/home/users/chto/lib/namaster/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/include:/home/users/chto/cpp/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LD_LIBRARY_PATH; PATH=/share/software/user/open/curl/7.54.0/bin:/share/software/user/open/libressl/2.5.3/bin:/home/users/chto/lib/cfitsio:/home/users/chto/lib/cfitsio/include:/home/users/chto/lib:/home/users/chto/bin/bin:/home/users/chto/bin:/home/users/chto/.texlive/bin/x86_64-linux:/home/groups/kipac/chto/anaconda2/envs/newenv3/bin:/home/users/chto/.local/bin/include:/home/users/chto/.local/bin/lib:/home/users/chto/.local/bin:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/bin64:/share/software/user/open/fftw/3.3.6/bin:/home/groups/kipac/chto/anaconda2/condabin:/share/software/user/restricted/ifort/2019/bin:/share/software/user/open/gsl/2.3/bin:/share/software/user/srcc/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/dell/srvadmin/bin:/opt/dell/srvadmin/iSM/bin:/home/users/chto/bin; export PATH; gcc -g -O2 -o \$progdir/\$file filt_edge.o ../../.libs/libgsl.so ../../cblas/.libs/libgslcblas.so -lm -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/.libs -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/cblas/.libs -Wl,-rpath -Wl,/usr/local/lib)" + +# This environment variable determines our operation mode. +if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then + # install mode needs the following variables: + generated_by_libtool_version='2.4.2' + notinst_deplibs=' ../../libgsl.la ../../cblas/libgslcblas.la' +else + # When we are sourced in execute mode, $file and $ECHO are already set. + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + file="$0" + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + ECHO="printf %s\\n" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ which is used only on +# windows platforms, and (c) all begin with the string --lt- +# (application programs are unlikely to have options which match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's ../../libtool value, followed by no. +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=$0 + shift + for lt_opt + do + case "$lt_opt" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%/[^/]*$%%'` + test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=. + lt_dump_F=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%^.*/%%'` + cat "$lt_dump_D/$lt_dump_F" + exit 0 + ;; + --lt-*) + $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n "$lt_option_debug"; then + echo "filt_edge:filt_edge:${LINENO}: libtool wrapper (GNU libtool) 2.4.2" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + $ECHO "filt_edge:filt_edge:${LINENO}: newargv[$lt_dump_args_N]: $lt_arg" + lt_dump_args_N=`expr $lt_dump_args_N + 1` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ + + if test -n "$lt_option_debug"; then + $ECHO "filt_edge:filt_edge:${LINENO}: newargv[0]: $progdir/$program" 1>&2 + func_lt_dump_args ${1+"$@"} 1>&2 + fi + exec "$progdir/$program" ${1+"$@"} + + $ECHO "$0: cannot exec $program $*" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from $@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case " $* " in + *\ --lt-*) + for lt_wr_arg + do + case $lt_wr_arg in + --lt-*) ;; + *) set x "$@" "$lt_wr_arg"; shift;; + esac + shift + done ;; + esac + func_exec_program_core ${1+"$@"} +} + + # Parse options + func_parse_lt_options "$0" ${1+"$@"} + + # Find the directory that this script lives in. + thisdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + test "x$thisdir" = "x$file" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=`ls -ld "$file" | /usr/bin/sed -n 's/.*-> //p'` + while test -n "$file"; do + destdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + + # If there was a directory component, then change thisdir. + if test "x$destdir" != "x$file"; then + case "$destdir" in + [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;; + *) thisdir="$thisdir/$destdir" ;; + esac + fi + + file=`$ECHO "$file" | /usr/bin/sed 's%^.*/%%'` + file=`ls -ld "$thisdir/$file" | /usr/bin/sed -n 's/.*-> //p'` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no + if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then + # special case for '.' + if test "$thisdir" = "."; then + thisdir=`pwd` + fi + # remove .libs from thisdir + case "$thisdir" in + *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /usr/bin/sed 's%[\\/][^\\/]*$%%'` ;; + .libs ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=`cd "$thisdir" && pwd` + test -n "$absdir" && thisdir="$absdir" + + program=lt-'filt_edge' + progdir="$thisdir/.libs" + + if test ! -f "$progdir/$program" || + { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /usr/bin/sed 1q`; \ + test "X$file" != "X$progdir/$program"; }; then + + file="$$-$program" + + if test ! -d "$progdir"; then + mkdir "$progdir" + else + rm -f "$progdir/$file" + fi + + # relink executable if necessary + if test -n "$relink_command"; then + if relink_command_output=`eval $relink_command 2>&1`; then : + else + printf %s\n "$relink_command_output" >&2 + rm -f "$progdir/$file" + exit 1 + fi + fi + + mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null || + { rm -f "$progdir/$program"; + mv -f "$progdir/$file" "$progdir/$program"; } + rm -f "$progdir/$file" + fi + + if test -f "$progdir/$program"; then + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + # Run the actual program with our arguments. + func_exec_program ${1+"$@"} + fi + else + # The program doesn't exist. + $ECHO "$0: error: \`$progdir/$program' does not exist" 1>&2 + $ECHO "This script is just a wrapper for $program." 1>&2 + $ECHO "See the libtool documentation for more information." 1>&2 + exit 1 + fi +fi diff --git a/gsl-2.5/doc/examples/filt_edge.c b/gsl-2.5/doc/examples/filt_edge.c new file mode 100644 index 00000000..a1dddaa2 --- /dev/null +++ b/gsl-2.5/doc/examples/filt_edge.c @@ -0,0 +1,63 @@ +#include +#include + +#include +#include +#include +#include +#include + +int +main(void) +{ + const size_t N = 1000; /* length of time series */ + const size_t K = 7; /* window size */ + const double f = 5.0; /* frequency of square wave in Hz */ + gsl_filter_median_workspace *median_p = gsl_filter_median_alloc(K); + gsl_filter_rmedian_workspace *rmedian_p = gsl_filter_rmedian_alloc(K); + gsl_vector *t = gsl_vector_alloc(N); /* time */ + gsl_vector *x = gsl_vector_alloc(N); /* input vector */ + gsl_vector *y_median = gsl_vector_alloc(N); /* median filtered output */ + gsl_vector *y_rmedian = gsl_vector_alloc(N); /* recursive median filtered output */ + gsl_rng *r = gsl_rng_alloc(gsl_rng_default); + size_t i; + + /* generate input signal */ + for (i = 0; i < N; ++i) + { + double ti = (double) i / (N - 1.0); + double tmp = sin(2.0 * M_PI * f * ti); + double xi = (tmp >= 0.0) ? 1.0 : -1.0; + double ei = gsl_ran_gaussian(r, 0.1); + + gsl_vector_set(t, i, ti); + gsl_vector_set(x, i, xi + ei); + } + + gsl_filter_median(GSL_FILTER_END_PADVALUE, x, y_median, median_p); + gsl_filter_rmedian(GSL_FILTER_END_PADVALUE, x, y_rmedian, rmedian_p); + + /* print results */ + for (i = 0; i < N; ++i) + { + double ti = gsl_vector_get(t, i); + double xi = gsl_vector_get(x, i); + double medi = gsl_vector_get(y_median, i); + double rmedi = gsl_vector_get(y_rmedian, i); + + printf("%f %f %f %f\n", + ti, + xi, + medi, + rmedi); + } + + gsl_vector_free(t); + gsl_vector_free(x); + gsl_vector_free(y_median); + gsl_vector_free(y_rmedian); + gsl_rng_free(r); + gsl_filter_median_free(median_p); + + return 0; +} diff --git a/gsl-2.5/doc/examples/filt_edge.txt b/gsl-2.5/doc/examples/filt_edge.txt new file mode 100644 index 00000000..45b55858 --- /dev/null +++ b/gsl-2.5/doc/examples/filt_edge.txt @@ -0,0 +1,1000 @@ +0.000000 1.013392 1.013392 1.013392 +0.001001 0.991190 1.013392 1.013392 +0.002002 1.167441 1.013392 1.013392 +0.003003 1.073364 1.013392 1.013392 +0.004004 1.099752 0.991190 1.013392 +0.005005 0.872250 0.996091 0.996091 +0.006006 0.760328 0.996091 0.996091 +0.007007 0.932072 0.996091 0.996091 +0.008008 0.996091 0.932072 0.996091 +0.009009 1.089356 0.933202 0.996091 +0.010010 0.998235 0.996091 0.996091 +0.011011 0.870344 0.998235 0.996091 +0.012012 0.933202 0.998235 0.996091 +0.013013 1.018171 0.945175 0.996091 +0.014014 1.083105 0.945175 0.996091 +0.015015 0.945175 0.945175 0.996091 +0.016016 0.936197 0.945175 0.996091 +0.017017 1.000709 0.945175 0.996091 +0.018018 0.933015 0.945175 0.996091 +0.019019 0.917224 0.963241 0.996091 +0.020020 1.061250 0.963241 0.996091 +0.021021 0.963241 0.941619 0.971051 +0.022022 0.971051 0.963241 0.971051 +0.023023 0.908313 0.971051 0.971051 +0.024024 0.941619 0.963241 0.971051 +0.025025 1.006462 0.971051 0.971051 +0.026026 1.004674 0.985577 0.971051 +0.027027 0.924927 0.985577 0.971051 +0.028028 0.985577 0.985577 0.973930 +0.029029 1.147556 0.985577 0.973930 +0.030030 0.979352 0.979352 0.973930 +0.031031 0.973930 0.985577 0.973930 +0.032032 0.986178 0.986178 0.973930 +0.033033 0.745660 0.979352 0.973930 +0.034034 1.057742 0.986178 0.977383 +0.035035 0.996389 0.996389 0.977383 +0.036036 0.977383 0.996389 0.977383 +0.037037 1.071500 1.057742 0.977383 +0.038038 1.157727 1.071500 0.977383 +0.039039 0.960773 1.071500 0.977383 +0.040040 1.118277 1.071500 0.977383 +0.041041 1.179311 1.118277 0.977383 +0.042042 0.926865 0.960773 0.977383 +0.043043 0.937018 1.118277 0.977383 +0.044044 1.207069 1.138309 0.977383 +0.045045 0.909699 0.962463 0.977383 +0.046046 1.173555 0.969569 0.977383 +0.047047 1.138309 1.125357 0.977383 +0.048048 0.962463 0.972615 0.977383 +0.049049 0.969569 0.995367 0.977383 +0.050050 1.125357 0.995367 0.977383 +0.051051 0.972615 0.995367 0.977383 +0.052052 0.995367 1.008585 0.995367 +0.053053 1.079898 1.053996 1.008585 +0.054054 1.053996 1.008585 1.008585 +0.055055 1.008585 1.053996 1.008585 +0.056056 1.135529 1.053996 1.008585 +0.057057 1.001385 1.008585 1.008585 +0.058058 1.075136 1.008585 1.008585 +0.059059 0.842509 1.001385 1.008585 +0.060060 0.976262 0.992040 1.008585 +0.061061 1.033649 0.976262 1.008585 +0.062062 0.992040 0.976262 1.008585 +0.063063 0.945913 0.992040 1.008585 +0.064064 0.861957 1.033649 1.008585 +0.065065 1.171655 1.041811 1.041811 +0.066066 1.041811 1.041811 1.041811 +0.067067 1.152496 1.068648 1.041811 +0.068068 1.068648 1.068648 1.041811 +0.069069 0.941144 1.068648 1.041811 +0.070070 1.131675 1.068648 1.041811 +0.071071 0.916702 0.991457 1.041811 +0.072072 1.077396 0.991457 1.041811 +0.073073 0.919648 1.039777 1.041811 +0.074074 0.991457 1.039777 1.041811 +0.075075 1.149620 1.077396 1.041811 +0.076076 1.039777 1.149620 1.041811 +0.077077 1.333843 1.149620 1.066747 +0.078078 1.180094 1.149620 1.066747 +0.079079 1.175628 1.066747 1.066747 +0.080080 1.066747 1.066747 1.066747 +0.081081 0.894983 1.045508 1.045508 +0.082082 1.032937 1.032937 1.045508 +0.083083 1.045508 0.938610 1.045508 +0.084084 0.765299 0.899866 0.938610 +0.085085 0.938610 0.938610 0.938610 +0.086086 0.783820 0.918244 0.938610 +0.087087 0.899866 0.918244 0.938610 +0.088088 0.953773 0.938610 0.938610 +0.089089 0.918244 0.918244 0.938610 +0.090090 1.018439 0.918244 0.938610 +0.091091 0.960508 0.953773 0.938610 +0.092092 0.833044 0.960508 0.938610 +0.093093 0.905485 1.000357 0.938610 +0.094094 1.000357 1.000357 1.000357 +0.095095 1.115574 1.011220 1.011220 +0.096096 1.187743 1.018121 1.011220 +0.097097 1.011220 1.018121 1.011220 +0.098098 1.018121 1.018121 1.011220 +0.099099 1.127830 1.011220 1.011220 +0.100100 -0.942894 -0.798267 -0.798267 +0.101101 -1.047091 -0.798267 -0.798267 +0.102102 -0.953664 -0.942894 -0.798267 +0.103103 -0.798267 -0.953664 -0.798267 +0.104104 -0.785030 -1.037108 -0.798267 +0.105105 -1.037108 -1.037108 -1.037108 +0.106106 -1.074429 -1.038247 -1.038247 +0.107107 -1.128072 -1.038247 -1.038247 +0.108108 -1.138866 -1.074429 -1.038247 +0.109109 -1.038247 -1.104828 -1.038247 +0.110110 -0.851868 -1.104828 -1.038247 +0.111111 -1.133167 -1.038247 -1.038247 +0.112112 -1.104828 -1.014377 -1.038247 +0.113113 -1.014377 -0.981914 -1.014377 +0.114114 -0.981914 -0.981914 -0.981914 +0.115115 -0.766508 -0.981914 -0.981914 +0.116116 -0.964830 -0.964830 -0.981914 +0.117117 -0.962859 -0.964830 -0.981914 +0.118118 -1.072111 -0.962859 -0.981914 +0.119119 -0.827322 -0.962859 -0.981914 +0.120120 -1.036341 -0.962859 -0.981914 +0.121121 -0.809783 -0.971401 -0.981914 +0.122122 -0.959242 -0.971401 -0.981914 +0.123123 -1.100144 -0.971401 -0.981914 +0.124124 -0.971401 -0.959242 -0.981914 +0.125125 -1.033599 -0.959242 -0.981914 +0.126126 -0.909272 -0.971401 -0.981914 +0.127127 -0.868429 -0.942727 -0.981914 +0.128128 -0.920571 -0.942727 -0.981914 +0.129129 -1.039569 -0.942727 -0.981914 +0.130130 -0.942727 -0.942727 -0.981914 +0.131131 -1.063445 -0.980697 -0.981914 +0.132132 -1.053542 -1.039569 -0.981914 +0.133133 -0.923584 -0.980697 -0.981914 +0.134134 -0.980697 -1.045511 -0.981914 +0.135135 -1.045511 -0.995902 -0.981914 +0.136136 -0.951093 -0.980697 -0.981914 +0.137137 -1.046745 -0.980697 -0.981914 +0.138138 -0.995902 -0.995902 -0.981914 +0.139139 -0.949519 -0.995902 -0.981914 +0.140140 -0.717364 -0.995902 -0.981914 +0.141141 -1.066168 -0.949519 -0.981914 +0.142142 -1.064500 -0.949519 -0.981914 +0.143143 -0.823432 -0.965808 -0.981914 +0.144144 -0.848632 -1.007814 -0.981914 +0.145145 -0.965808 -1.007814 -0.981914 +0.146146 -1.007814 -1.007814 -1.007814 +0.147147 -1.017617 -1.007814 -1.007814 +0.148148 -1.241573 -1.007814 -1.007814 +0.149149 -1.096119 -1.013401 -1.007814 +0.150150 -1.001898 -1.013401 -1.007814 +0.151151 -1.004153 -1.004153 -1.007814 +0.152152 -1.013401 -1.004153 -1.007814 +0.153153 -0.988305 -1.004153 -1.007814 +0.154154 -0.930549 -1.005780 -1.007814 +0.155155 -1.067372 -1.005780 -1.007814 +0.156156 -1.005780 -0.998717 -1.007814 +0.157157 -1.015813 -1.005780 -1.007814 +0.158158 -0.998717 -1.005780 -1.007814 +0.159159 -0.863679 -1.005780 -1.007814 +0.160160 -1.136045 -0.998717 -1.007814 +0.161161 -0.903092 -0.967850 -1.007814 +0.162162 -1.106479 -0.967850 -1.007814 +0.163163 -0.938953 -0.967850 -0.971655 +0.164164 -0.967850 -0.967850 -0.971655 +0.165165 -0.971655 -0.971655 -0.971655 +0.166166 -0.928571 -0.967850 -0.971655 +0.167167 -1.022612 -0.971655 -0.971655 +0.168168 -0.981399 -0.981399 -0.971655 +0.169169 -0.900799 -1.022612 -0.971655 +0.170170 -1.044069 -1.022612 -0.971655 +0.171171 -1.069476 -1.034055 -0.971655 +0.172172 -1.132120 -1.044069 -0.971655 +0.173173 -0.905177 -1.044069 -0.971655 +0.174174 -1.034055 -1.069476 -0.971655 +0.175175 -1.095702 -1.034055 -0.971655 +0.176176 -0.874021 -0.994997 -0.971655 +0.177177 -1.167346 -0.994997 -0.971655 +0.178178 -0.883632 -0.960145 -0.971655 +0.179179 -0.994997 -0.883632 -0.971655 +0.180180 -0.960145 -0.960145 -0.971655 +0.181181 -0.777616 -0.960145 -0.971655 +0.182182 -0.857104 -0.994997 -0.971655 +0.183183 -1.022139 -1.022139 -1.022139 +0.184184 -1.051866 -1.022139 -1.022139 +0.185185 -1.141736 -1.051866 -1.022139 +0.186186 -1.078396 -1.051866 -1.022139 +0.187187 -1.008043 -1.051866 -1.022139 +0.188188 -1.084173 -1.051096 -1.022139 +0.189189 -0.875380 -1.051096 -1.022139 +0.190190 -1.021183 -1.021183 -1.022139 +0.191191 -1.051096 -1.021183 -1.022139 +0.192192 -1.077697 -0.947963 -1.022139 +0.193193 -0.947963 -1.021183 -1.022139 +0.194194 -0.794787 -0.966380 -1.022139 +0.195195 -0.911884 -0.966380 -1.022139 +0.196196 -1.031894 -0.966380 -1.022139 +0.197197 -0.966380 -0.966380 -1.022139 +0.198198 -1.018746 -0.966380 -1.022139 +0.199199 -1.036727 -0.966380 -1.022139 +0.200200 1.006607 0.986276 0.986276 +0.201201 1.054580 0.986276 0.986276 +0.202202 1.007550 0.986276 0.986276 +0.203203 0.986276 1.006607 0.986276 +0.204204 0.954824 1.007550 0.986276 +0.205205 0.852908 0.986276 0.986276 +0.206206 1.065333 0.954824 0.986276 +0.207207 1.068682 0.929528 0.986276 +0.208208 0.830604 0.929528 0.986276 +0.209209 0.929528 1.065333 0.986276 +0.210210 0.926479 1.068682 0.986276 +0.211211 1.075258 1.075258 1.075258 +0.212212 1.130040 1.075258 1.075258 +0.213213 1.077117 1.075258 1.075258 +0.214214 1.103507 1.077117 1.075258 +0.215215 0.933721 1.077455 1.075258 +0.216216 1.064553 1.077117 1.075258 +0.217217 1.083792 1.064553 1.075258 +0.218218 1.077455 1.064553 1.075258 +0.219219 0.970880 1.064553 1.075258 +0.220220 1.029817 1.077455 1.075258 +0.221221 1.099270 1.029817 1.075258 +0.222222 0.850993 0.970880 1.075258 +0.223223 1.167110 0.978298 1.075258 +0.224224 0.853920 0.873921 0.978298 +0.225225 0.873921 0.873921 0.978298 +0.226226 0.978298 0.873921 0.978298 +0.227227 0.808870 0.873921 0.978298 +0.228228 0.987740 0.976703 0.978298 +0.229229 0.749353 0.978298 0.978298 +0.230230 1.032934 0.987740 0.978298 +0.231231 0.976703 0.989241 0.978298 +0.232232 1.032472 0.989241 0.978298 +0.233233 0.989241 0.989241 0.978298 +0.234234 1.014932 0.989241 0.978298 +0.235235 0.935244 1.014148 0.978298 +0.236236 0.986942 1.014148 0.986942 +0.237237 1.060568 1.014148 0.986942 +0.238238 1.014148 0.998139 0.986942 +0.239239 1.045752 1.014148 0.986942 +0.240240 0.933664 1.014148 0.986942 +0.241241 0.998139 0.998139 0.986942 +0.242242 1.121821 0.933664 0.986942 +0.243243 0.731363 0.933664 0.986942 +0.244244 0.876419 0.937800 0.986942 +0.245245 0.836826 0.937800 0.986942 +0.246246 1.106871 0.933816 0.986942 +0.247247 0.937800 0.937800 0.986942 +0.248248 0.964280 0.937800 0.986942 +0.249249 0.933816 0.964280 0.986942 +0.250250 1.267770 0.958790 0.986942 +0.251251 0.806962 0.964280 0.986942 +0.252252 1.038791 1.038791 0.986942 +0.253253 0.958790 1.038791 0.986942 +0.254254 1.096977 0.958790 0.986942 +0.255255 1.169623 1.038791 0.986942 +0.256256 0.876329 0.987048 0.986942 +0.257257 0.914208 0.987048 0.986942 +0.258258 1.116598 0.987048 0.986942 +0.259259 0.987048 0.961421 0.986942 +0.260260 0.879691 0.962462 0.986942 +0.261261 1.110347 0.968402 0.986942 +0.262262 0.961421 0.968402 0.979114 +0.263263 0.962462 0.968402 0.979114 +0.264264 0.968402 0.979114 0.979114 +0.265265 0.979114 0.968402 0.979114 +0.266266 1.032279 0.968402 0.979114 +0.267267 1.017372 0.979114 0.979114 +0.268268 0.945319 0.979114 0.979114 +0.269269 0.944262 1.017372 0.979114 +0.270270 1.138088 0.997787 0.979114 +0.271271 0.886344 0.997787 0.979114 +0.272272 1.040078 0.997787 0.979114 +0.273273 0.997787 0.997787 0.979114 +0.274274 1.121320 0.988147 0.979114 +0.275275 0.973989 0.997787 0.979114 +0.276276 0.988147 0.988147 0.979114 +0.277277 0.918430 0.988147 0.979114 +0.278278 1.056636 0.988147 0.979114 +0.279279 0.933528 0.988147 0.979114 +0.280280 1.053830 1.053830 0.979114 +0.281281 1.055011 1.053830 0.979114 +0.282282 0.907715 1.053830 0.979114 +0.283283 1.195056 1.055011 1.032876 +0.284284 1.032876 1.055011 1.032876 +0.285285 1.105013 1.055517 1.032876 +0.286286 1.055517 1.105013 1.032876 +0.287287 1.007373 1.055517 1.032876 +0.288288 1.116544 1.055517 1.032876 +0.289289 1.164682 1.037840 1.032876 +0.290290 1.037840 1.009883 1.032876 +0.291291 0.987761 1.037840 1.032876 +0.292292 1.009883 1.009883 1.032876 +0.293293 0.939728 1.009883 1.032876 +0.294294 1.081717 0.987761 1.032876 +0.295295 0.953627 0.953627 1.032876 +0.296296 1.085279 0.939728 1.032876 +0.297297 0.936744 0.936744 0.936744 +0.298298 0.897699 0.906055 0.906055 +0.299299 0.906055 0.897699 0.906055 +0.300300 -0.995125 -0.916487 -0.916487 +0.301301 -0.916487 -0.932416 -0.916487 +0.302302 -1.013257 -0.995125 -0.932416 +0.303303 -1.150853 -0.995125 -0.932416 +0.304304 -0.932416 -0.975364 -0.932416 +0.305305 -1.000858 -0.975364 -0.932416 +0.306306 -0.975364 -0.975364 -0.932416 +0.307307 -0.885650 -0.975364 -0.932416 +0.308308 -0.860636 -1.000858 -0.932416 +0.309309 -1.055208 -0.975364 -0.932416 +0.310310 -1.141977 -0.988565 -0.932416 +0.311311 -1.058503 -0.988565 -0.932416 +0.312312 -0.894889 -1.055208 -0.932416 +0.313313 -0.988565 -0.988565 -0.932416 +0.314314 -0.978403 -0.978403 -0.932416 +0.315315 -1.082404 -0.978403 -0.932416 +0.316316 -0.884420 -0.978403 -0.932416 +0.317317 -0.716201 -0.978403 -0.932416 +0.318318 -0.981999 -0.981999 -0.932416 +0.319319 -0.930800 -0.930800 -0.932416 +0.320320 -1.030369 -0.981999 -0.932416 +0.321321 -1.265205 -1.030369 -0.932416 +0.322322 -0.899489 -1.090589 -0.932416 +0.323323 -1.090589 -1.090589 -0.945577 +0.324324 -1.100610 -1.094045 -0.945577 +0.325325 -1.131515 -1.090589 -0.945577 +0.326326 -0.945577 -1.090589 -0.945577 +0.327327 -1.094045 -1.094045 -0.945577 +0.328328 -0.943864 -1.062146 -0.945577 +0.329329 -0.995991 -1.025363 -0.995991 +0.330330 -1.145327 -1.025363 -0.995991 +0.331331 -1.062146 -0.995991 -0.995991 +0.332332 -1.025363 -1.025363 -0.995991 +0.333333 -0.965019 -1.025363 -0.995991 +0.334334 -0.961221 -1.011833 -0.995991 +0.335335 -1.084413 -0.989153 -0.995991 +0.336336 -0.954786 -0.987399 -0.995991 +0.337337 -1.011833 -0.987399 -0.995991 +0.338338 -0.989153 -0.989153 -0.995991 +0.339339 -0.987399 -0.989153 -0.995991 +0.340340 -0.853203 -0.996738 -0.995991 +0.341341 -1.155231 -0.996738 -0.996738 +0.342342 -0.996738 -1.005604 -0.996738 +0.343343 -1.005604 -1.005604 -0.996738 +0.344344 -1.226129 -1.100704 -0.996738 +0.345345 -1.100704 -1.005604 -0.996738 +0.346346 -0.978910 -1.005604 -0.996738 +0.347347 -1.107348 -1.058052 -0.996738 +0.348348 -0.992635 -0.992635 -0.996738 +0.349349 -0.980931 -0.980931 -0.996738 +0.350350 -1.058052 -0.992635 -0.996738 +0.351351 -0.771305 -0.992635 -0.996738 +0.352352 -0.932188 -1.058052 -0.996738 +0.353353 -1.082284 -1.058052 -0.996738 +0.354354 -1.113189 -0.932188 -0.996738 +0.355355 -1.126075 -1.012862 -0.996738 +0.356356 -0.894258 -1.012862 -0.996738 +0.357357 -0.775181 -0.944488 -0.996738 +0.358358 -1.012862 -0.894258 -0.996738 +0.359359 -0.891133 -0.891133 -0.944488 +0.360360 -0.944488 -0.891133 -0.944488 +0.361361 -0.862502 -0.931726 -0.944488 +0.362362 -0.859313 -0.931726 -0.944488 +0.363363 -1.023125 -0.944488 -0.944488 +0.364364 -0.931726 -0.931726 -0.944488 +0.365365 -0.998059 -0.998059 -0.944488 +0.366366 -1.027395 -0.998059 -0.944488 +0.367367 -0.866360 -0.998059 -0.944488 +0.368368 -1.001268 -0.998059 -0.944488 +0.369369 -0.969452 -1.001268 -0.944488 +0.370370 -1.057421 -0.975792 -0.944488 +0.371371 -0.873957 -0.975792 -0.944488 +0.372372 -1.015086 -0.975792 -0.944488 +0.373373 -0.975792 -0.975792 -0.944488 +0.374374 -0.935769 -0.975792 -0.944488 +0.375375 -1.145432 -1.007669 -0.944488 +0.376376 -0.892147 -0.975792 -0.944488 +0.377377 -1.076760 -1.007669 -0.944488 +0.378378 -1.007669 -1.042330 -0.944488 +0.379379 -0.913363 -1.042330 -0.944488 +0.380380 -1.084825 -1.042330 -0.992801 +0.381381 -1.042330 -1.007669 -0.992801 +0.382382 -1.089807 -0.992801 -0.992801 +0.383383 -0.992801 -0.992801 -0.992801 +0.384384 -0.975382 -0.978509 -0.978509 +0.385385 -0.978509 -0.978509 -0.978509 +0.386386 -0.835577 -0.975382 -0.978509 +0.387387 -0.973500 -0.973500 -0.978509 +0.388388 -1.001632 -0.942696 -0.978509 +0.389389 -0.925964 -0.942696 -0.978509 +0.390390 -0.942696 -0.942696 -0.978509 +0.391391 -0.824995 -0.942696 -0.978509 +0.392392 -1.228095 -0.925964 -0.978509 +0.393393 -0.886478 -0.942696 -0.978509 +0.394394 -1.027876 -0.917555 -0.978509 +0.395395 -0.778815 -1.027876 -0.978509 +0.396396 -1.052251 -1.027876 -0.978509 +0.397397 -0.917555 -1.027876 -0.978509 +0.398398 -1.218049 -0.917555 -0.978509 +0.399399 -1.234098 -0.917555 -0.978509 +0.400400 1.033670 0.915335 0.915335 +0.401401 0.915335 0.995140 0.915335 +0.402402 1.079662 0.995140 0.915335 +0.403403 1.016567 0.995140 0.915335 +0.404404 0.995140 0.980236 0.915335 +0.405405 0.833239 0.980236 0.915335 +0.406406 0.827633 0.980236 0.915335 +0.407407 0.980236 0.980236 0.974061 +0.408408 0.974061 0.974061 0.974061 +0.409409 1.036462 0.980236 0.974061 +0.410410 1.013655 1.012310 0.974061 +0.411411 0.967479 1.013655 0.974061 +0.412412 1.012310 1.036462 1.012310 +0.413413 1.114161 1.013655 1.012310 +0.414414 1.084870 1.084870 1.012310 +0.415415 1.143169 1.084870 1.012310 +0.416416 0.928768 1.084870 1.012310 +0.417417 1.152667 0.990423 1.012310 +0.418418 0.990423 0.990423 0.994635 +0.419419 0.990405 0.990423 0.994635 +0.420420 0.900778 0.990423 0.994635 +0.421421 0.994635 0.990405 0.994635 +0.422422 1.081658 0.990405 0.994635 +0.423423 0.982925 0.982925 0.994635 +0.424424 0.969630 0.994635 0.994635 +0.425425 1.038684 0.998721 0.994635 +0.426426 0.952673 0.998721 0.994635 +0.427427 1.042233 1.038684 0.998721 +0.428428 0.998721 1.042233 0.998721 +0.429429 1.067383 1.045432 1.045432 +0.430430 1.053154 1.045432 1.045432 +0.431431 1.108807 1.045432 1.045432 +0.432432 1.045432 1.053154 1.045432 +0.433433 1.014645 1.045432 1.045432 +0.434434 0.985161 1.026470 1.045432 +0.435435 1.116414 1.014645 1.045432 +0.436436 1.026470 0.985161 1.026470 +0.437437 0.898915 0.983648 0.983648 +0.438438 0.983648 0.972407 0.983648 +0.439439 0.972407 0.972407 0.974419 +0.440440 0.938105 0.972407 0.974419 +0.441441 0.908041 0.974419 0.974419 +0.442442 0.974419 0.974419 0.974419 +0.443443 1.009199 0.974419 0.974419 +0.444444 1.081841 0.974419 0.974419 +0.445445 1.104344 0.974419 0.974419 +0.446446 0.817090 1.009199 0.974419 +0.447447 0.945641 1.024809 0.974419 +0.448448 0.944475 0.945641 0.974419 +0.449449 1.024809 0.945641 0.974419 +0.450450 1.088122 1.024809 0.974419 +0.451451 0.930830 1.088122 0.974419 +0.452452 1.190865 1.088122 0.974419 +0.453453 1.119551 1.088122 0.974419 +0.454454 1.173042 1.037794 0.974419 +0.455455 0.906440 1.037794 0.974419 +0.456456 1.037794 1.037794 0.974419 +0.457457 0.985984 0.985984 0.974419 +0.458458 0.911667 0.985984 0.974419 +0.459459 1.156843 0.985984 0.974419 +0.460460 0.918847 0.985984 0.974419 +0.461461 1.248386 0.918847 0.974419 +0.462462 0.880343 0.918847 0.974419 +0.463463 1.070315 0.918847 0.974419 +0.464464 0.899536 0.927855 0.945224 +0.465465 0.816511 0.899536 0.945224 +0.466466 0.927855 0.927855 0.945224 +0.467467 0.945224 0.921068 0.945224 +0.468468 0.882944 0.927855 0.945224 +0.469469 1.243633 0.945224 0.945224 +0.470470 0.921068 1.035685 0.945224 +0.471471 1.105427 1.073244 1.035685 +0.472472 1.035685 1.073244 1.035685 +0.473473 1.114231 1.035685 1.035685 +0.474474 1.073244 1.035685 1.035685 +0.475475 0.944953 1.035685 1.035685 +0.476476 0.836672 0.944953 1.035685 +0.477477 0.896687 0.944953 1.035685 +0.478478 1.078094 0.944953 1.035685 +0.479479 0.879165 0.970868 1.035685 +0.480480 1.061934 1.010889 1.035685 +0.481481 0.970868 1.010889 1.035685 +0.482482 1.010889 0.995403 1.035685 +0.483483 1.095526 0.995403 1.035685 +0.484484 0.995403 0.995403 1.017179 +0.485485 0.943299 0.995403 1.017179 +0.486486 0.952845 0.952845 1.017179 +0.487487 1.017179 0.952356 1.017179 +0.488488 0.952356 0.943299 0.952356 +0.489489 0.922158 0.952356 0.952356 +0.490490 0.924796 0.924796 0.952356 +0.491491 0.902148 0.924796 0.952356 +0.492492 1.116699 0.924796 0.952356 +0.493493 0.886781 1.032454 0.952356 +0.494494 1.056146 1.032454 1.012846 +0.495495 1.032454 1.056146 1.012846 +0.496496 1.128205 1.037536 1.012846 +0.497497 1.012846 1.037536 1.012846 +0.498498 1.092972 1.032454 1.012846 +0.499499 1.037536 1.012846 1.012846 +0.500501 -1.001848 -0.922699 -0.922699 +0.501502 -0.987462 -0.987462 -0.922699 +0.502503 -1.038674 -0.996367 -0.922699 +0.503504 -0.922699 -0.996367 -0.922699 +0.504505 -1.129106 -0.987462 -0.922699 +0.505506 -0.996367 -0.996367 -0.922699 +0.506507 -0.740711 -0.978921 -0.922699 +0.507508 -0.978921 -0.996367 -0.922699 +0.508509 -1.099845 -0.996367 -0.922699 +0.509510 -0.922510 -0.978921 -0.922699 +0.510511 -1.037193 -0.978921 -0.933620 +0.511512 -1.012562 -1.012562 -0.933620 +0.512513 -0.964857 -0.965026 -0.933620 +0.513514 -0.933620 -1.012562 -0.933620 +0.514515 -1.091809 -1.009397 -0.965026 +0.515516 -0.965026 -1.009397 -0.965026 +0.516517 -1.088903 -1.041278 -1.009397 +0.517518 -1.009397 -1.075060 -1.009397 +0.518519 -1.041278 -1.041278 -1.009397 +0.519520 -1.120630 -1.041278 -1.009397 +0.520521 -1.075060 -1.041278 -1.009397 +0.521522 -0.931622 -1.075060 -1.009397 +0.522523 -0.924344 -1.075060 -1.009397 +0.523524 -1.089267 -1.057970 -1.012578 +0.524525 -1.098603 -1.012578 -1.012578 +0.525526 -1.012578 -1.012578 -1.012578 +0.526527 -1.057970 -1.012578 -1.012578 +0.527528 -0.925645 -1.012578 -1.012578 +0.528529 -0.900765 -0.969156 -1.012578 +0.529530 -0.969156 -0.946823 -1.012578 +0.530531 -1.123824 -0.925645 -1.012578 +0.531532 -0.805045 -0.946823 -1.012578 +0.532533 -0.946823 -0.969156 -1.012578 +0.533534 -0.887435 -0.951774 -1.012578 +0.534535 -1.126562 -0.951774 -1.012578 +0.535536 -1.099649 -0.951774 -1.012578 +0.536537 -0.951774 -0.951774 -0.988341 +0.537538 -0.988341 -0.988341 -0.988341 +0.538539 -0.896448 -0.951774 -0.988341 +0.539540 -0.817105 -0.951774 -0.988341 +0.540541 -1.103667 -0.960359 -0.988341 +0.541542 -0.857447 -0.960359 -0.988341 +0.542543 -0.960359 -0.960359 -0.988341 +0.543544 -0.985688 -0.960359 -0.988341 +0.544545 -1.091140 -0.857447 -0.988341 +0.545546 -0.837472 -0.960359 -0.988341 +0.546547 -0.809949 -0.960556 -0.988341 +0.547548 -0.815240 -0.960556 -0.988341 +0.548549 -1.008858 -0.960556 -0.988341 +0.549550 -0.960556 -1.008858 -0.988341 +0.550551 -1.103693 -1.008858 -0.988341 +0.551552 -1.071774 -1.018721 -0.988341 +0.552553 -1.018721 -1.054117 -0.988341 +0.553554 -0.779820 -1.054117 -0.988341 +0.554555 -1.054117 -1.054117 -1.029304 +0.555556 -1.096938 -1.054117 -1.029304 +0.556557 -1.029304 -1.054117 -1.029304 +0.557558 -1.057701 -1.054117 -1.029304 +0.558559 -1.058982 -1.029304 -1.029304 +0.559560 -0.983257 -1.029304 -1.029304 +0.560561 -0.934961 -0.983257 -1.029304 +0.561562 -0.845732 -0.981656 -1.029304 +0.562563 -1.114829 -0.934961 -1.029304 +0.563564 -0.903578 -0.934961 -1.029304 +0.564565 -0.981656 -0.981656 -1.029304 +0.565566 -0.885808 -0.984766 -1.029304 +0.566567 -1.094164 -0.984766 -1.029304 +0.567568 -0.984766 -0.992331 -1.029304 +0.568569 -0.992331 -0.992331 -1.029304 +0.569570 -1.108422 -1.008850 -1.029304 +0.570571 -1.008850 -0.992331 -1.029304 +0.571572 -0.947116 -0.992331 -1.029304 +0.572573 -1.044118 -1.001552 -1.029304 +0.573574 -0.922465 -1.001552 -1.029304 +0.574575 -0.962390 -1.000724 -1.029304 +0.575576 -1.001552 -1.000724 -1.029304 +0.576577 -1.032196 -1.000724 -1.029304 +0.577578 -1.000724 -1.001552 -1.029304 +0.578579 -0.969995 -1.001552 -1.029304 +0.579580 -1.090725 -1.030514 -1.029304 +0.580581 -1.061230 -1.030514 -1.029304 +0.581582 -0.991319 -1.030514 -1.029304 +0.582583 -1.030514 -1.030514 -1.029304 +0.583584 -1.066191 -1.030514 -1.029304 +0.584585 -0.954107 -0.991319 -1.029304 +0.585586 -0.779156 -0.969716 -1.029304 +0.586587 -1.069758 -0.954107 -1.029304 +0.587588 -0.969716 -0.954107 -1.002956 +0.588589 -0.743242 -0.969716 -1.002956 +0.589590 -0.951760 -1.002956 -1.002956 +0.590591 -1.002956 -1.002956 -1.002956 +0.591592 -1.085492 -1.085492 -1.085492 +0.592593 -1.089551 -1.085492 -1.085492 +0.593594 -1.086053 -1.085492 -1.085492 +0.594595 -1.110056 -1.085492 -1.085492 +0.595596 -1.021996 -1.072438 -1.072438 +0.596597 -1.072438 -1.072438 -1.072438 +0.597598 -1.043094 -1.043094 -1.072438 +0.598599 -0.901986 -1.021996 -1.072438 +0.599600 -1.128909 -0.901986 -1.072438 +0.600601 0.970657 0.892529 0.892529 +0.601602 0.892529 0.920892 0.892529 +0.602603 0.920892 0.970657 0.920892 +0.603604 1.095492 0.970657 0.944694 +0.604605 1.066045 0.944694 0.944694 +0.605606 1.140103 0.944694 0.944694 +0.606607 0.944694 0.944694 0.944694 +0.607608 0.864106 0.944694 0.944694 +0.608609 0.781177 0.944694 0.944694 +0.609610 0.779575 0.944694 0.944694 +0.610611 0.947531 0.947531 0.947531 +0.611612 1.066546 0.950324 0.950324 +0.612613 0.950324 0.981624 0.950324 +0.613614 1.079367 0.981624 0.950324 +0.614615 0.981624 1.027965 0.950324 +0.615616 1.098933 1.027965 0.950324 +0.616617 0.920009 1.069023 0.950324 +0.617618 1.027965 1.027965 0.978972 +0.618619 1.069023 1.027965 0.978972 +0.619620 1.155675 1.027203 0.978972 +0.620621 0.978972 1.027203 0.978972 +0.621622 1.006711 1.009979 1.006711 +0.622623 1.027203 1.007877 1.006711 +0.623624 1.009979 1.006711 1.006711 +0.624625 1.007877 1.006711 1.006711 +0.625626 1.000107 1.007877 1.006711 +0.626627 0.816269 1.007877 1.006711 +0.627628 0.833719 1.007877 1.006711 +0.628629 1.112972 1.006380 1.006711 +0.629630 1.046157 1.006380 1.006711 +0.630631 1.117500 1.006380 1.006711 +0.631632 1.006380 1.046157 1.006711 +0.632633 0.840640 1.046157 1.006711 +0.633634 0.905722 1.006380 1.006711 +0.634635 1.148664 1.006380 1.006711 +0.635636 1.129631 0.991007 1.006711 +0.636637 0.991007 0.991007 1.006711 +0.637638 1.117614 0.991007 1.006711 +0.638639 0.822380 0.991007 1.006711 +0.639640 0.989991 0.989991 1.006711 +0.640641 0.806354 0.989991 1.006711 +0.641642 1.025584 0.989991 1.006711 +0.642643 0.980950 1.025584 1.006711 +0.643644 1.071078 1.025584 1.008575 +0.644645 1.046765 1.025584 1.008575 +0.645646 1.074255 1.033308 1.008575 +0.646647 1.008575 1.033308 1.008575 +0.647648 0.942786 1.033308 1.008575 +0.648649 1.033308 1.019651 1.008575 +0.649650 1.001322 1.008575 1.008575 +0.650651 1.076166 1.019651 1.008575 +0.651652 1.019651 1.033308 1.008575 +0.652653 0.883037 1.053398 1.008575 +0.653654 1.079249 1.053398 1.008575 +0.654655 1.053398 1.053398 1.008575 +0.655656 1.080504 1.053398 1.008575 +0.656657 0.952499 1.053398 1.008575 +0.657658 1.167163 0.989525 1.008575 +0.658659 0.989525 0.952976 0.989525 +0.659660 0.880931 0.952499 0.952976 +0.660661 0.952976 0.952976 0.952976 +0.661662 0.769248 0.952976 0.952976 +0.662663 0.734106 0.952976 0.952976 +0.663664 1.186583 0.952976 0.952976 +0.664665 0.985570 0.913157 0.952976 +0.665666 1.092416 0.985570 0.952976 +0.666667 0.913157 0.985570 0.952976 +0.667668 0.897221 0.985570 0.952976 +0.668669 1.006310 1.006310 0.970026 +0.669670 0.970026 0.970026 0.970026 +0.670671 1.023602 0.970026 0.970026 +0.671672 1.147413 1.006310 0.970026 +0.672673 0.874538 0.977717 0.970026 +0.673674 0.862297 0.989969 0.970026 +0.674675 1.182952 0.977717 0.970026 +0.675676 0.977717 0.977717 0.970026 +0.676677 0.989969 0.989969 0.970026 +0.677678 0.869557 0.989969 0.970026 +0.678679 1.046425 0.989969 0.970026 +0.679680 1.005145 0.989969 0.970026 +0.680681 0.894338 0.970871 0.970026 +0.681682 1.086951 0.970871 0.970026 +0.682683 0.948711 0.970871 0.970026 +0.683684 0.970871 0.948711 0.970026 +0.684685 0.933560 0.948711 0.970026 +0.685686 1.109971 0.948711 0.970026 +0.686687 0.814965 0.941825 0.970026 +0.687688 0.941825 0.941825 0.970026 +0.688689 1.064734 1.014226 0.970026 +0.689690 0.833250 1.014226 0.970026 +0.690691 1.014226 1.014226 0.970026 +0.691692 1.048965 1.014226 0.970026 +0.692693 1.155149 0.981877 0.970026 +0.693694 0.875025 0.981877 0.970026 +0.694695 0.981877 0.981877 0.970026 +0.695696 0.957818 0.981877 0.970026 +0.696697 0.911143 0.957818 0.970026 +0.697698 1.059730 0.957818 0.970026 +0.698699 1.006925 0.939637 0.970026 +0.699700 0.939637 0.911143 0.939637 +0.700701 -0.911019 -0.906186 -0.906186 +0.701702 -0.906186 -0.911019 -0.906186 +0.702703 -1.110617 -0.913814 -0.913814 +0.703704 -0.913814 -0.993275 -0.913814 +0.704705 -0.993275 -0.993275 -0.913814 +0.705706 -1.192603 -1.046887 -0.913814 +0.706707 -1.108023 -1.046887 -0.913814 +0.707708 -0.911053 -1.047154 -0.913814 +0.708709 -1.046887 -1.047154 -0.927873 +0.709710 -1.062364 -1.047154 -0.927873 +0.710711 -1.047154 -1.046887 -0.927873 +0.711712 -0.927873 -1.047154 -0.927873 +0.712713 -1.166649 -1.062364 -0.971158 +0.713714 -0.971158 -1.047154 -0.971158 +0.714715 -1.143378 -1.087565 -0.971158 +0.715716 -1.107369 -1.087565 -0.971158 +0.716717 -0.820283 -1.087565 -0.971158 +0.717718 -1.087565 -1.087565 -1.017027 +0.718719 -1.017027 -1.059867 -1.017027 +0.719720 -1.136362 -1.017027 -1.017027 +0.720721 -1.059867 -1.059867 -1.017027 +0.721722 -0.925779 -1.059867 -1.017027 +0.722723 -1.006464 -1.068214 -1.017027 +0.723724 -1.126647 -1.059867 -1.017027 +0.724725 -1.068214 -1.006464 -1.017027 +0.725726 -1.085730 -1.068214 -1.017027 +0.726727 -0.837002 -1.068214 -1.017027 +0.727728 -0.735864 -0.984632 -1.017027 +0.728729 -1.153167 -0.984632 -1.017027 +0.729730 -0.984632 -0.914208 -1.017027 +0.730731 -0.862189 -0.978263 -1.017027 +0.731732 -1.090935 -0.978263 -1.017027 +0.732733 -0.914208 -0.978263 -1.017027 +0.733734 -0.978263 -0.952004 -1.017027 +0.734735 -0.951601 -0.978263 -1.017027 +0.735736 -1.224286 -0.952004 -1.017027 +0.736737 -0.952004 -0.952004 -1.017027 +0.737738 -1.055500 -0.952004 -1.017027 +0.738739 -0.929464 -0.955044 -1.017027 +0.739740 -0.822103 -0.955044 -1.017027 +0.740741 -0.955044 -1.045408 -1.017027 +0.741742 -1.165534 -1.026513 -1.026513 +0.742743 -1.045408 -1.045408 -1.026513 +0.743744 -1.056825 -1.045408 -1.026513 +0.744745 -1.026513 -1.045408 -1.026513 +0.745746 -1.101514 -1.045408 -1.026513 +0.746747 -0.986148 -1.035299 -1.026513 +0.747748 -1.035299 -1.026513 -1.026513 +0.748749 -1.079721 -1.007938 -1.026513 +0.749750 -0.876128 -1.007938 -1.026513 +0.750751 -0.873911 -1.007938 -1.026513 +0.751752 -1.007938 -1.007938 -1.026513 +0.752753 -1.032951 -1.007938 -1.026513 +0.753754 -0.869400 -1.014131 -1.026513 +0.754755 -1.083610 -1.032951 -1.026513 +0.755756 -1.069374 -1.032951 -1.026513 +0.756757 -1.014131 -1.014131 -1.026513 +0.757758 -1.081904 -1.014131 -1.026513 +0.758759 -0.918121 -0.996725 -0.996725 +0.759760 -0.959004 -0.996725 -0.996725 +0.760761 -0.996725 -0.996725 -0.996725 +0.761762 -0.776560 -0.975081 -0.996725 +0.762763 -1.084557 -0.996725 -0.996725 +0.763764 -1.034342 -1.026880 -0.996725 +0.764765 -0.975081 -1.026880 -0.996725 +0.765766 -1.137779 -1.034342 -0.996725 +0.766767 -1.026880 -1.026880 -0.996725 +0.767768 -0.960985 -1.026880 -0.996725 +0.768769 -1.048023 -1.026880 -0.996725 +0.769770 -1.007062 -1.007062 -0.996725 +0.770771 -1.047944 -0.960985 -0.996725 +0.771772 -0.944100 -0.944100 -0.944100 +0.772773 -0.914600 -0.944100 -0.944100 +0.773774 -0.924960 -0.944100 -0.944100 +0.774775 -0.856741 -0.944100 -0.944100 +0.775776 -0.981180 -0.924960 -0.944100 +0.776777 -0.984263 -0.981180 -0.944100 +0.777778 -1.059917 -0.981180 -0.944100 +0.778779 -0.869323 -0.984263 -0.944100 +0.779780 -1.037951 -0.984263 -0.944100 +0.780781 -0.890921 -0.939045 -0.944100 +0.781782 -1.062185 -0.939045 -0.944100 +0.782783 -0.911323 -0.978142 -0.944100 +0.783784 -0.939045 -0.978142 -0.944100 +0.784785 -1.063107 -1.011504 -0.978142 +0.785786 -0.978142 -1.011504 -0.978142 +0.786787 -1.011504 -1.011504 -0.978142 +0.787788 -1.017804 -1.017804 -0.978142 +0.788789 -1.117121 -1.011504 -0.978142 +0.789790 -0.940740 -1.017804 -0.978142 +0.790791 -1.113807 -1.017804 -0.978142 +0.791792 -0.901391 -1.058149 -0.978142 +0.792793 -1.106908 -0.974865 -0.978142 +0.793794 -0.876389 -1.058149 -0.978142 +0.794795 -1.058149 -0.974865 -0.978142 +0.795796 -0.974865 -0.974865 -0.978142 +0.796797 -1.189802 -0.974865 -0.978142 +0.797798 -0.912651 -0.974865 -0.978142 +0.798799 -0.879006 -0.912651 -0.978142 +0.799800 -0.985442 -0.879006 -0.978142 +0.800801 1.023632 0.843021 0.843021 +0.801802 0.995685 0.949317 0.843021 +0.802803 1.018838 0.995685 0.843021 +0.803804 0.843021 1.018838 0.843021 +0.804805 0.949317 1.018838 0.949317 +0.805806 1.048800 1.018838 0.949317 +0.806807 1.136285 0.958832 0.949317 +0.807808 1.032274 1.032274 0.949317 +0.808809 0.862087 1.048800 0.949317 +0.809810 0.958832 1.032274 0.958832 +0.810811 1.079200 1.032274 0.967741 +0.811812 1.112963 1.031519 0.967741 +0.812813 0.967741 1.065816 0.967741 +0.813814 1.183002 1.065816 0.996525 +0.814815 1.031519 1.031519 0.996525 +0.815816 1.065816 1.023044 0.996525 +0.816817 0.996525 1.031519 0.996525 +0.817818 0.974504 1.023044 0.996525 +0.818819 1.023044 1.023044 0.996525 +0.819820 1.120328 1.023044 0.996525 +0.820821 0.996234 1.023044 0.996525 +0.821822 1.070633 1.060572 0.996525 +0.822823 1.134608 1.060572 0.996525 +0.823824 0.798514 1.060572 0.996525 +0.824825 1.060572 1.070633 0.996525 +0.825826 0.977756 1.060572 0.996525 +0.826827 1.078943 0.994731 0.996525 +0.827828 1.164112 1.003613 0.996525 +0.828829 0.994731 1.003613 0.996525 +0.829830 0.949198 1.003613 0.996525 +0.830831 1.003613 1.000293 0.996525 +0.831832 1.056715 1.000293 0.996525 +0.832833 0.848661 1.003613 0.996525 +0.833834 1.000293 1.003613 0.996525 +0.834835 1.079153 1.019520 0.996525 +0.835836 1.020737 1.019520 0.996525 +0.836837 0.888400 1.019520 0.996525 +0.837838 1.019520 1.020737 0.996525 +0.838839 1.081925 1.019520 0.996525 +0.839840 0.932174 1.005562 0.996525 +0.840841 1.106511 1.005562 0.996525 +0.841842 0.940557 0.996572 0.996525 +0.842843 1.005562 0.981819 0.996525 +0.843844 0.926743 0.981819 0.996525 +0.844845 0.996572 0.981819 0.996525 +0.845846 0.981819 0.981819 0.996525 +0.846847 0.950211 0.950211 0.996525 +0.847848 1.015902 0.981819 0.996525 +0.848849 0.893365 0.981819 0.996525 +0.849850 0.833039 0.971493 0.996525 +0.850851 1.147515 1.015902 0.996525 +0.851852 1.047047 1.047047 0.996525 +0.852853 0.971493 1.047047 0.996525 +0.853854 1.070280 1.047047 0.996525 +0.854855 1.069243 1.041830 0.996525 +0.855856 0.899169 0.971493 0.996525 +0.856857 1.041830 0.989923 0.996525 +0.857858 0.871786 0.971376 0.989923 +0.858859 0.971376 0.971376 0.989923 +0.859860 0.989923 0.980163 0.989923 +0.860861 0.912046 0.971376 0.989923 +0.861862 1.119451 0.971376 0.989923 +0.862863 0.980163 0.980163 0.989923 +0.863864 0.887588 0.923543 0.989923 +0.864865 0.923543 0.923543 0.989923 +0.865866 1.054477 0.923543 0.989923 +0.866867 0.783186 0.923543 0.989923 +0.867868 0.902512 0.985315 0.989923 +0.868869 1.102924 0.985315 0.989923 +0.869870 1.098880 0.963032 0.989923 +0.870871 0.985315 0.963032 0.985315 +0.871872 0.948365 0.985315 0.985315 +0.872873 0.963032 0.985315 0.985315 +0.873874 0.826784 0.985315 0.985315 +0.874875 0.989051 0.989051 0.989051 +0.875876 1.078874 0.989051 0.989051 +0.876877 1.013207 1.013207 0.989051 +0.877878 1.046607 1.013207 0.989051 +0.878879 0.981190 1.013207 0.989051 +0.879880 1.056491 1.013207 0.989051 +0.880881 0.984530 0.984530 0.989051 +0.881882 0.939341 0.981190 0.989051 +0.882883 1.109094 0.961929 0.989051 +0.883884 0.961929 0.961929 0.989051 +0.884885 0.785377 0.947221 0.989051 +0.885886 0.923587 0.961929 0.989051 +0.886887 1.015101 0.961929 0.989051 +0.887888 0.947221 0.972248 0.989051 +0.888889 1.087944 1.015101 0.989051 +0.889890 0.972248 1.025127 0.989051 +0.890891 1.025127 1.068689 1.025127 +0.891892 1.068689 1.068689 1.025127 +0.892893 1.155018 1.068340 1.025127 +0.893894 1.100955 1.068340 1.025127 +0.894895 0.994063 1.068340 1.025127 +0.895896 1.068340 1.055374 1.025127 +0.896897 1.055374 1.020238 1.025127 +0.897898 1.020238 0.994063 1.020238 +0.898899 0.989032 0.989032 0.989032 +0.899900 0.953212 0.953212 0.953212 +0.900901 -1.007789 -1.007789 -1.007789 +0.901902 -1.176085 -1.094983 -1.094983 +0.902903 -1.164879 -1.094983 -1.094983 +0.903904 -1.164542 -1.094983 -1.094983 +0.904905 -1.094983 -1.124927 -1.094983 +0.905906 -1.006529 -1.094983 -1.094983 +0.906907 -0.968188 -1.067852 -1.094983 +0.907908 -1.124927 -1.067852 -1.094983 +0.908909 -1.067852 -1.037228 -1.094983 +0.909910 -1.037228 -1.037228 -1.094983 +0.910911 -1.103390 -1.037228 -1.094983 +0.911912 -0.945288 -0.967433 -0.967433 +0.912913 -0.967433 -0.967433 -0.967433 +0.913914 -0.806734 -0.967433 -0.967433 +0.914915 -0.901846 -0.945288 -0.967433 +0.915916 -1.042688 -0.967433 -0.967433 +0.916917 -1.066534 -1.042688 -0.967433 +0.917918 -0.921212 -1.063397 -0.967433 +0.918919 -1.170383 -1.063397 -0.967433 +0.919920 -1.072656 -1.063397 -0.967433 +0.920921 -1.063397 -1.034496 -0.967433 +0.921922 -0.938396 -1.034496 -0.967433 +0.922923 -0.914668 -1.017289 -0.967433 +0.923924 -1.034496 -0.964569 -0.967433 +0.924925 -1.017289 -0.964569 -0.967433 +0.925926 -0.849914 -1.017289 -0.967433 +0.926927 -0.964569 -1.017289 -0.967433 +0.927928 -1.046299 -0.976907 -0.967433 +0.928929 -1.158337 -0.976907 -0.967433 +0.929930 -0.976907 -0.977310 -0.967433 +0.930931 -0.846939 -0.977310 -0.967433 +0.931932 -1.015479 -0.977310 -0.967433 +0.932933 -0.977310 -0.977310 -0.967433 +0.933934 -0.943085 -0.977310 -0.967433 +0.934935 -0.979259 -0.977310 -0.967433 +0.935936 -1.096315 -0.977310 -0.967433 +0.936937 -0.832212 -0.979259 -0.967433 +0.937938 -0.953367 -0.979259 -0.967433 +0.938939 -1.112492 -0.953367 -0.967433 +0.939940 -1.157141 -0.926518 -0.967433 +0.940941 -0.926518 -0.953367 -0.967433 +0.941942 -0.845823 -0.926518 -0.967433 +0.942943 -0.884902 -0.926518 -0.967433 +0.943944 -0.978584 -0.884902 -0.967433 +0.944945 -0.847677 -0.884902 -0.967433 +0.945946 -1.016207 -0.950823 -0.967433 +0.946947 -0.852127 -0.978584 -0.967433 +0.947948 -0.950823 -1.016207 -0.967433 +0.948949 -1.146084 -1.033939 -1.033939 +0.949950 -1.033939 -1.033939 -1.033939 +0.950951 -1.117612 -1.033939 -1.033939 +0.951952 -1.078361 -1.033939 -1.033939 +0.952953 -0.975721 -0.997481 -0.997481 +0.953954 -0.884575 -0.997481 -0.997481 +0.954955 -0.911318 -0.975721 -0.997481 +0.955956 -0.997481 -0.943935 -0.997481 +0.956957 -1.079103 -0.924027 -0.997481 +0.957958 -0.943935 -0.943935 -0.997481 +0.958959 -0.880973 -0.997481 -0.997481 +0.959960 -0.924027 -1.059478 -0.997481 +0.960961 -1.073152 -1.059478 -1.059478 +0.961962 -1.124449 -1.059478 -1.059478 +0.962963 -1.059478 -1.059478 -1.059478 +0.963964 -1.236161 -1.059478 -1.059478 +0.964965 -0.958308 -1.059478 -1.059478 +0.965966 -0.873004 -1.059478 -1.059478 +0.966967 -0.943995 -1.013754 -1.059478 +0.967968 -1.082743 -1.013754 -1.059478 +0.968969 -1.067188 -1.030715 -1.059478 +0.969970 -1.013754 -1.030715 -1.044710 +0.970971 -1.030715 -1.044710 -1.044710 +0.971972 -1.044710 -1.030715 -1.044710 +0.972973 -0.956291 -1.030715 -1.044710 +0.973974 -1.140589 -1.044710 -1.044710 +0.974975 -1.012261 -1.044710 -1.044710 +0.975976 -1.066830 -1.012261 -1.044710 +0.976977 -1.217543 -1.026077 -1.044710 +0.977978 -0.944184 -1.012261 -1.026077 +0.978979 -0.911439 -0.978617 -1.026077 +0.979980 -1.026077 -0.978617 -1.026077 +0.980981 -0.839689 -0.978617 -1.026077 +0.981982 -0.978617 -0.978617 -1.026077 +0.982983 -0.981761 -0.978617 -1.026077 +0.983984 -1.044297 -0.978617 -1.026077 +0.984985 -0.965432 -0.981761 -1.026077 +0.985986 -0.892152 -1.044297 -1.026077 +0.986987 -1.051986 -1.044297 -1.026077 +0.987988 -1.101437 -0.984559 -1.026077 +0.988989 -1.134384 -1.035690 -1.026077 +0.989990 -0.837896 -1.035690 -1.026077 +0.990991 -0.984559 -1.008052 -1.026077 +0.991992 -1.035690 -0.984559 -1.026077 +0.992993 -1.008052 -0.951003 -1.008052 +0.993994 -0.951003 -0.984559 -1.008052 +0.994995 -0.896396 -0.951003 -1.008052 +0.995996 -0.939782 -0.951003 -1.008052 +0.996997 -1.069954 -0.951003 -1.008052 +0.997998 -0.868794 -0.978381 -1.008052 +0.998999 -0.978381 -1.061624 -1.008052 +1.000000 -1.061624 -1.061624 -1.061624 diff --git a/gsl-2.5/doc/examples/fitreg b/gsl-2.5/doc/examples/fitreg new file mode 100755 index 00000000..97985120 --- /dev/null +++ b/gsl-2.5/doc/examples/fitreg @@ -0,0 +1,228 @@ +#! /bin/sh + +# fitreg - temporary wrapper script for .libs/fitreg +# Generated by libtool (GNU libtool) 2.4.2 +# +# The fitreg program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s/\([`"$\\]\)/\\\1/g' + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command="(cd /home/groups/kipac/chto/package/gsl/gsl-2.5/doc/examples; LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LIBRARY_PATH; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; LD_LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/fftw/include:/home/users/chto/lib/fftw/lib:/home/users/chto/lib/healpix/lib:/home/users/chto/lib/namaster/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/include:/home/users/chto/cpp/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LD_LIBRARY_PATH; PATH=/share/software/user/open/curl/7.54.0/bin:/share/software/user/open/libressl/2.5.3/bin:/home/users/chto/lib/cfitsio:/home/users/chto/lib/cfitsio/include:/home/users/chto/lib:/home/users/chto/bin/bin:/home/users/chto/bin:/home/users/chto/.texlive/bin/x86_64-linux:/home/groups/kipac/chto/anaconda2/envs/newenv3/bin:/home/users/chto/.local/bin/include:/home/users/chto/.local/bin/lib:/home/users/chto/.local/bin:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/bin64:/share/software/user/open/fftw/3.3.6/bin:/home/groups/kipac/chto/anaconda2/condabin:/share/software/user/restricted/ifort/2019/bin:/share/software/user/open/gsl/2.3/bin:/share/software/user/srcc/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/dell/srvadmin/bin:/opt/dell/srvadmin/iSM/bin:/home/users/chto/bin; export PATH; gcc -g -O2 -o \$progdir/\$file fitreg.o ../../.libs/libgsl.so ../../cblas/.libs/libgslcblas.so -lm -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/.libs -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/cblas/.libs -Wl,-rpath -Wl,/usr/local/lib)" + +# This environment variable determines our operation mode. +if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then + # install mode needs the following variables: + generated_by_libtool_version='2.4.2' + notinst_deplibs=' ../../libgsl.la ../../cblas/libgslcblas.la' +else + # When we are sourced in execute mode, $file and $ECHO are already set. + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + file="$0" + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + ECHO="printf %s\\n" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ which is used only on +# windows platforms, and (c) all begin with the string --lt- +# (application programs are unlikely to have options which match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's ../../libtool value, followed by no. +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=$0 + shift + for lt_opt + do + case "$lt_opt" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%/[^/]*$%%'` + test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=. + lt_dump_F=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%^.*/%%'` + cat "$lt_dump_D/$lt_dump_F" + exit 0 + ;; + --lt-*) + $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n "$lt_option_debug"; then + echo "fitreg:fitreg:${LINENO}: libtool wrapper (GNU libtool) 2.4.2" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + $ECHO "fitreg:fitreg:${LINENO}: newargv[$lt_dump_args_N]: $lt_arg" + lt_dump_args_N=`expr $lt_dump_args_N + 1` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ + + if test -n "$lt_option_debug"; then + $ECHO "fitreg:fitreg:${LINENO}: newargv[0]: $progdir/$program" 1>&2 + func_lt_dump_args ${1+"$@"} 1>&2 + fi + exec "$progdir/$program" ${1+"$@"} + + $ECHO "$0: cannot exec $program $*" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from $@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case " $* " in + *\ --lt-*) + for lt_wr_arg + do + case $lt_wr_arg in + --lt-*) ;; + *) set x "$@" "$lt_wr_arg"; shift;; + esac + shift + done ;; + esac + func_exec_program_core ${1+"$@"} +} + + # Parse options + func_parse_lt_options "$0" ${1+"$@"} + + # Find the directory that this script lives in. + thisdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + test "x$thisdir" = "x$file" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=`ls -ld "$file" | /usr/bin/sed -n 's/.*-> //p'` + while test -n "$file"; do + destdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + + # If there was a directory component, then change thisdir. + if test "x$destdir" != "x$file"; then + case "$destdir" in + [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;; + *) thisdir="$thisdir/$destdir" ;; + esac + fi + + file=`$ECHO "$file" | /usr/bin/sed 's%^.*/%%'` + file=`ls -ld "$thisdir/$file" | /usr/bin/sed -n 's/.*-> //p'` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no + if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then + # special case for '.' + if test "$thisdir" = "."; then + thisdir=`pwd` + fi + # remove .libs from thisdir + case "$thisdir" in + *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /usr/bin/sed 's%[\\/][^\\/]*$%%'` ;; + .libs ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=`cd "$thisdir" && pwd` + test -n "$absdir" && thisdir="$absdir" + + program=lt-'fitreg' + progdir="$thisdir/.libs" + + if test ! -f "$progdir/$program" || + { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /usr/bin/sed 1q`; \ + test "X$file" != "X$progdir/$program"; }; then + + file="$$-$program" + + if test ! -d "$progdir"; then + mkdir "$progdir" + else + rm -f "$progdir/$file" + fi + + # relink executable if necessary + if test -n "$relink_command"; then + if relink_command_output=`eval $relink_command 2>&1`; then : + else + printf %s\n "$relink_command_output" >&2 + rm -f "$progdir/$file" + exit 1 + fi + fi + + mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null || + { rm -f "$progdir/$program"; + mv -f "$progdir/$file" "$progdir/$program"; } + rm -f "$progdir/$file" + fi + + if test -f "$progdir/$program"; then + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + # Run the actual program with our arguments. + func_exec_program ${1+"$@"} + fi + else + # The program doesn't exist. + $ECHO "$0: error: \`$progdir/$program' does not exist" 1>&2 + $ECHO "This script is just a wrapper for $program." 1>&2 + $ECHO "See the libtool documentation for more information." 1>&2 + exit 1 + fi +fi diff --git a/gsl-2.5/doc/examples/fitreg.c b/gsl-2.5/doc/examples/fitreg.c new file mode 100644 index 00000000..72082067 --- /dev/null +++ b/gsl-2.5/doc/examples/fitreg.c @@ -0,0 +1,140 @@ +#include +#include +#include +#include +#include +#include + +int +main() +{ + const size_t n = 1000; /* number of observations */ + const size_t p = 2; /* number of model parameters */ + size_t i; + gsl_rng *r = gsl_rng_alloc(gsl_rng_default); + gsl_matrix *X = gsl_matrix_alloc(n, p); + gsl_vector *y = gsl_vector_alloc(n); + + for (i = 0; i < n; ++i) + { + /* generate first random variable u */ + double ui = 5.0 * gsl_ran_gaussian(r, 1.0); + + /* set v = u + noise */ + double vi = ui + gsl_ran_gaussian(r, 0.001); + + /* set y = u + v + noise */ + double yi = ui + vi + gsl_ran_gaussian(r, 1.0); + + /* since u =~ v, the matrix X is ill-conditioned */ + gsl_matrix_set(X, i, 0, ui); + gsl_matrix_set(X, i, 1, vi); + + /* rhs vector */ + gsl_vector_set(y, i, yi); + } + + { + const size_t npoints = 200; /* number of points on L-curve and GCV curve */ + gsl_multifit_linear_workspace *w = + gsl_multifit_linear_alloc(n, p); + gsl_vector *c = gsl_vector_alloc(p); /* OLS solution */ + gsl_vector *c_lcurve = gsl_vector_alloc(p); /* regularized solution (L-curve) */ + gsl_vector *c_gcv = gsl_vector_alloc(p); /* regularized solution (GCV) */ + gsl_vector *reg_param = gsl_vector_alloc(npoints); + gsl_vector *rho = gsl_vector_alloc(npoints); /* residual norms */ + gsl_vector *eta = gsl_vector_alloc(npoints); /* solution norms */ + gsl_vector *G = gsl_vector_alloc(npoints); /* GCV function values */ + double lambda_l; /* optimal regularization parameter (L-curve) */ + double lambda_gcv; /* optimal regularization parameter (GCV) */ + double G_gcv; /* G(lambda_gcv) */ + size_t reg_idx; /* index of optimal lambda */ + double rcond; /* reciprocal condition number of X */ + double chisq, rnorm, snorm; + + /* compute SVD of X */ + gsl_multifit_linear_svd(X, w); + + rcond = gsl_multifit_linear_rcond(w); + fprintf(stderr, "matrix condition number = %e\n\n", 1.0 / rcond); + + /* unregularized (standard) least squares fit, lambda = 0 */ + gsl_multifit_linear_solve(0.0, X, y, c, &rnorm, &snorm, w); + chisq = pow(rnorm, 2.0); + + fprintf(stderr, "=== Unregularized fit ===\n"); + fprintf(stderr, "best fit: y = %g u + %g v\n", + gsl_vector_get(c, 0), gsl_vector_get(c, 1)); + fprintf(stderr, "residual norm = %g\n", rnorm); + fprintf(stderr, "solution norm = %g\n", snorm); + fprintf(stderr, "chisq/dof = %g\n", chisq / (n - p)); + + /* calculate L-curve and find its corner */ + gsl_multifit_linear_lcurve(y, reg_param, rho, eta, w); + gsl_multifit_linear_lcorner(rho, eta, ®_idx); + + /* store optimal regularization parameter */ + lambda_l = gsl_vector_get(reg_param, reg_idx); + + /* regularize with lambda_l */ + gsl_multifit_linear_solve(lambda_l, X, y, c_lcurve, &rnorm, &snorm, w); + chisq = pow(rnorm, 2.0) + pow(lambda_l * snorm, 2.0); + + fprintf(stderr, "\n=== Regularized fit (L-curve) ===\n"); + fprintf(stderr, "optimal lambda: %g\n", lambda_l); + fprintf(stderr, "best fit: y = %g u + %g v\n", + gsl_vector_get(c_lcurve, 0), gsl_vector_get(c_lcurve, 1)); + fprintf(stderr, "residual norm = %g\n", rnorm); + fprintf(stderr, "solution norm = %g\n", snorm); + fprintf(stderr, "chisq/dof = %g\n", chisq / (n - p)); + + /* calculate GCV curve and find its minimum */ + gsl_multifit_linear_gcv(y, reg_param, G, &lambda_gcv, &G_gcv, w); + + /* regularize with lambda_gcv */ + gsl_multifit_linear_solve(lambda_gcv, X, y, c_gcv, &rnorm, &snorm, w); + chisq = pow(rnorm, 2.0) + pow(lambda_gcv * snorm, 2.0); + + fprintf(stderr, "\n=== Regularized fit (GCV) ===\n"); + fprintf(stderr, "optimal lambda: %g\n", lambda_gcv); + fprintf(stderr, "best fit: y = %g u + %g v\n", + gsl_vector_get(c_gcv, 0), gsl_vector_get(c_gcv, 1)); + fprintf(stderr, "residual norm = %g\n", rnorm); + fprintf(stderr, "solution norm = %g\n", snorm); + fprintf(stderr, "chisq/dof = %g\n", chisq / (n - p)); + + /* output L-curve and GCV curve */ + for (i = 0; i < npoints; ++i) + { + printf("%e %e %e %e\n", + gsl_vector_get(reg_param, i), + gsl_vector_get(rho, i), + gsl_vector_get(eta, i), + gsl_vector_get(G, i)); + } + + /* output L-curve corner point */ + printf("\n\n%f %f\n", + gsl_vector_get(rho, reg_idx), + gsl_vector_get(eta, reg_idx)); + + /* output GCV curve corner minimum */ + printf("\n\n%e %e\n", + lambda_gcv, + G_gcv); + + gsl_multifit_linear_free(w); + gsl_vector_free(c); + gsl_vector_free(c_lcurve); + gsl_vector_free(reg_param); + gsl_vector_free(rho); + gsl_vector_free(eta); + gsl_vector_free(G); + } + + gsl_rng_free(r); + gsl_matrix_free(X); + gsl_vector_free(y); + + return 0; +} diff --git a/gsl-2.5/doc/examples/fitreg.txt b/gsl-2.5/doc/examples/fitreg.txt new file mode 100755 index 00000000..85d2974a --- /dev/null +++ b/gsl-2.5/doc/examples/fitreg.txt @@ -0,0 +1,206 @@ +2.224664e+02 1.608585e+02 7.089304e-01 2.590135e-02 +2.123781e+02 1.536944e+02 7.418066e-01 2.364670e-02 +2.027474e+02 1.465757e+02 7.745418e-01 2.150793e-02 +1.935533e+02 1.395346e+02 8.069972e-01 1.949208e-02 +1.847762e+02 1.326021e+02 8.390388e-01 1.760414e-02 +1.763970e+02 1.258080e+02 8.705396e-01 1.584709e-02 +1.683979e+02 1.191799e+02 9.013813e-01 1.422193e-02 +1.607615e+02 1.127436e+02 9.314562e-01 1.272784e-02 +1.534714e+02 1.065220e+02 9.606681e-01 1.136232e-02 +1.465119e+02 1.005353e+02 9.889334e-01 1.012146e-02 +1.398679e+02 9.480095e+01 1.016182e+00 9.000116e-03 +1.335253e+02 8.933330e+01 1.042357e+00 7.992184e-03 +1.274703e+02 8.414375e+01 1.067414e+00 7.090842e-03 +1.216898e+02 7.924077e+01 1.091323e+00 6.288777e-03 +1.161715e+02 7.462999e+01 1.114065e+00 5.578398e-03 +1.109034e+02 7.031430e+01 1.135633e+00 4.952031e-03 +1.058743e+02 6.629405e+01 1.156030e+00 4.402076e-03 +1.010731e+02 6.256714e+01 1.175267e+00 3.921145e-03 +9.648973e+01 5.912926e+01 1.193366e+00 3.502162e-03 +9.211417e+01 5.597400e+01 1.210352e+00 3.138444e-03 +8.793704e+01 5.309306e+01 1.226260e+00 2.823755e-03 +8.394932e+01 5.047643e+01 1.241126e+00 2.552337e-03 +8.014244e+01 4.811257e+01 1.254992e+00 2.318922e-03 +7.650819e+01 4.598859e+01 1.267902e+00 2.118738e-03 +7.303874e+01 4.409052e+01 1.279901e+00 1.947488e-03 +6.972663e+01 4.240351e+01 1.291035e+00 1.801336e-03 +6.656471e+01 4.091211e+01 1.301353e+00 1.676878e-03 +6.354617e+01 3.960054e+01 1.310901e+00 1.571107e-03 +6.066452e+01 3.845296e+01 1.319726e+00 1.481387e-03 +5.791354e+01 3.745374e+01 1.327872e+00 1.405414e-03 +5.528732e+01 3.658771e+01 1.335385e+00 1.341185e-03 +5.278018e+01 3.584034e+01 1.342306e+00 1.286966e-03 +5.038674e+01 3.519797e+01 1.348676e+00 1.241257e-03 +4.810183e+01 3.464788e+01 1.354534e+00 1.202773e-03 +4.592054e+01 3.417841e+01 1.359918e+00 1.170408e-03 +4.383816e+01 3.377896e+01 1.364862e+00 1.143218e-03 +4.185022e+01 3.344003e+01 1.369399e+00 1.120399e-03 +3.995242e+01 3.315315e+01 1.373561e+00 1.101264e-03 +3.814068e+01 3.291086e+01 1.377375e+00 1.085232e-03 +3.641110e+01 3.270663e+01 1.380870e+00 1.071811e-03 +3.475995e+01 3.253478e+01 1.384071e+00 1.060581e-03 +3.318368e+01 3.239039e+01 1.387001e+00 1.051193e-03 +3.167889e+01 3.226924e+01 1.389682e+00 1.043348e-03 +3.024233e+01 3.216770e+01 1.392134e+00 1.036796e-03 +2.887092e+01 3.208269e+01 1.394377e+00 1.031327e-03 +2.756170e+01 3.201158e+01 1.396427e+00 1.026763e-03 +2.631185e+01 3.195215e+01 1.398300e+00 1.022957e-03 +2.511868e+01 3.190252e+01 1.400012e+00 1.019783e-03 +2.397961e+01 3.186109e+01 1.401576e+00 1.017139e-03 +2.289220e+01 3.182652e+01 1.403005e+00 1.014935e-03 +2.185410e+01 3.179770e+01 1.404309e+00 1.013100e-03 +2.086307e+01 3.177368e+01 1.405500e+00 1.011571e-03 +1.991699e+01 3.175367e+01 1.406587e+00 1.010299e-03 +1.901380e+01 3.173700e+01 1.407579e+00 1.009240e-03 +1.815158e+01 3.172311e+01 1.408484e+00 1.008358e-03 +1.732845e+01 3.171156e+01 1.409310e+00 1.007625e-03 +1.654265e+01 3.170194e+01 1.410064e+00 1.007015e-03 +1.579248e+01 3.169394e+01 1.410752e+00 1.006508e-03 +1.507634e+01 3.168728e+01 1.411379e+00 1.006086e-03 +1.439266e+01 3.168175e+01 1.411951e+00 1.005735e-03 +1.373999e+01 3.167714e+01 1.412473e+00 1.005444e-03 +1.311692e+01 3.167331e+01 1.412949e+00 1.005201e-03 +1.252210e+01 3.167013e+01 1.413383e+00 1.005000e-03 +1.195426e+01 3.166748e+01 1.413779e+00 1.004832e-03 +1.141216e+01 3.166528e+01 1.414139e+00 1.004693e-03 +1.089465e+01 3.166345e+01 1.414468e+00 1.004577e-03 +1.040061e+01 3.166193e+01 1.414769e+00 1.004481e-03 +9.928969e+00 3.166067e+01 1.415042e+00 1.004402e-03 +9.478716e+00 3.165962e+01 1.415291e+00 1.004335e-03 +9.048881e+00 3.165874e+01 1.415519e+00 1.004280e-03 +8.638538e+00 3.165802e+01 1.415726e+00 1.004235e-03 +8.246803e+00 3.165741e+01 1.415915e+00 1.004197e-03 +7.872832e+00 3.165691e+01 1.416087e+00 1.004165e-03 +7.515820e+00 3.165650e+01 1.416244e+00 1.004139e-03 +7.174997e+00 3.165615e+01 1.416388e+00 1.004117e-03 +6.849630e+00 3.165587e+01 1.416518e+00 1.004099e-03 +6.539017e+00 3.165563e+01 1.416637e+00 1.004084e-03 +6.242490e+00 3.165543e+01 1.416745e+00 1.004072e-03 +5.959409e+00 3.165526e+01 1.416844e+00 1.004061e-03 +5.689166e+00 3.165513e+01 1.416934e+00 1.004053e-03 +5.431177e+00 3.165501e+01 1.417017e+00 1.004046e-03 +5.184887e+00 3.165492e+01 1.417091e+00 1.004040e-03 +4.949766e+00 3.165484e+01 1.417160e+00 1.004035e-03 +4.725307e+00 3.165477e+01 1.417222e+00 1.004031e-03 +4.511027e+00 3.165472e+01 1.417279e+00 1.004028e-03 +4.306464e+00 3.165467e+01 1.417331e+00 1.004025e-03 +4.111177e+00 3.165464e+01 1.417378e+00 1.004022e-03 +3.924746e+00 3.165461e+01 1.417421e+00 1.004021e-03 +3.746769e+00 3.165458e+01 1.417460e+00 1.004019e-03 +3.576863e+00 3.165456e+01 1.417496e+00 1.004018e-03 +3.414661e+00 3.165454e+01 1.417529e+00 1.004017e-03 +3.259815e+00 3.165453e+01 1.417559e+00 1.004016e-03 +3.111991e+00 3.165451e+01 1.417587e+00 1.004015e-03 +2.970871e+00 3.165450e+01 1.417612e+00 1.004014e-03 +2.836149e+00 3.165449e+01 1.417635e+00 1.004014e-03 +2.707537e+00 3.165449e+01 1.417657e+00 1.004013e-03 +2.584758e+00 3.165448e+01 1.417676e+00 1.004013e-03 +2.467546e+00 3.165448e+01 1.417695e+00 1.004013e-03 +2.355649e+00 3.165447e+01 1.417712e+00 1.004012e-03 +2.248826e+00 3.165447e+01 1.417728e+00 1.004012e-03 +2.146848e+00 3.165446e+01 1.417743e+00 1.004012e-03 +2.049494e+00 3.165446e+01 1.417758e+00 1.004012e-03 +1.956555e+00 3.165446e+01 1.417772e+00 1.004012e-03 +1.867830e+00 3.165446e+01 1.417786e+00 1.004012e-03 +1.783129e+00 3.165445e+01 1.417801e+00 1.004012e-03 +1.702269e+00 3.165445e+01 1.417815e+00 1.004012e-03 +1.625075e+00 3.165445e+01 1.417830e+00 1.004011e-03 +1.551383e+00 3.165445e+01 1.417846e+00 1.004011e-03 +1.481031e+00 3.165445e+01 1.417863e+00 1.004011e-03 +1.413870e+00 3.165444e+01 1.417882e+00 1.004011e-03 +1.349755e+00 3.165444e+01 1.417903e+00 1.004011e-03 +1.288547e+00 3.165444e+01 1.417926e+00 1.004011e-03 +1.230115e+00 3.165444e+01 1.417954e+00 1.004011e-03 +1.174333e+00 3.165444e+01 1.417985e+00 1.004011e-03 +1.121080e+00 3.165443e+01 1.418022e+00 1.004011e-03 +1.070242e+00 3.165443e+01 1.418066e+00 1.004011e-03 +1.021709e+00 3.165443e+01 1.418117e+00 1.004011e-03 +9.753771e-01 3.165443e+01 1.418178e+00 1.004011e-03 +9.311463e-01 3.165442e+01 1.418250e+00 1.004011e-03 +8.889213e-01 3.165442e+01 1.418337e+00 1.004011e-03 +8.486110e-01 3.165442e+01 1.418441e+00 1.004010e-03 +8.101288e-01 3.165441e+01 1.418565e+00 1.004010e-03 +7.733915e-01 3.165441e+01 1.418714e+00 1.004010e-03 +7.383203e-01 3.165440e+01 1.418893e+00 1.004010e-03 +7.048394e-01 3.165440e+01 1.419108e+00 1.004010e-03 +6.728768e-01 3.165439e+01 1.419366e+00 1.004010e-03 +6.423636e-01 3.165439e+01 1.419676e+00 1.004010e-03 +6.132340e-01 3.165438e+01 1.420049e+00 1.004009e-03 +5.854255e-01 3.165437e+01 1.420498e+00 1.004009e-03 +5.588780e-01 3.165437e+01 1.421037e+00 1.004009e-03 +5.335343e-01 3.165436e+01 1.421685e+00 1.004009e-03 +5.093399e-01 3.165435e+01 1.422465e+00 1.004008e-03 +4.862427e-01 3.165434e+01 1.423403e+00 1.004008e-03 +4.641929e-01 3.165433e+01 1.424530e+00 1.004008e-03 +4.431429e-01 3.165431e+01 1.425885e+00 1.004007e-03 +4.230476e-01 3.165430e+01 1.427514e+00 1.004007e-03 +4.038635e-01 3.165429e+01 1.429470e+00 1.004007e-03 +3.855493e-01 3.165427e+01 1.431820e+00 1.004006e-03 +3.680657e-01 3.165425e+01 1.434642e+00 1.004006e-03 +3.513749e-01 3.165423e+01 1.438028e+00 1.004005e-03 +3.354409e-01 3.165421e+01 1.442091e+00 1.004004e-03 +3.202296e-01 3.165419e+01 1.446961e+00 1.004004e-03 +3.057080e-01 3.165416e+01 1.452795e+00 1.004003e-03 +2.918449e-01 3.165413e+01 1.459779e+00 1.004002e-03 +2.786105e-01 3.165410e+01 1.468130e+00 1.004001e-03 +2.659763e-01 3.165406e+01 1.478105e+00 1.004000e-03 +2.539149e-01 3.165403e+01 1.490005e+00 1.003999e-03 +2.424006e-01 3.165399e+01 1.504178e+00 1.003998e-03 +2.314083e-01 3.165394e+01 1.521030e+00 1.003996e-03 +2.209146e-01 3.165389e+01 1.541026e+00 1.003995e-03 +2.108967e-01 3.165384e+01 1.564700e+00 1.003993e-03 +2.013331e-01 3.165378e+01 1.592654e+00 1.003992e-03 +1.922031e-01 3.165371e+01 1.625568e+00 1.003990e-03 +1.834872e-01 3.165364e+01 1.664198e+00 1.003988e-03 +1.751666e-01 3.165357e+01 1.709378e+00 1.003985e-03 +1.672232e-01 3.165348e+01 1.762018e+00 1.003983e-03 +1.596401e-01 3.165339e+01 1.823102e+00 1.003980e-03 +1.524008e-01 3.165329e+01 1.893683e+00 1.003977e-03 +1.454898e-01 3.165318e+01 1.974875e+00 1.003974e-03 +1.388923e-01 3.165306e+01 2.067851e+00 1.003971e-03 +1.325939e-01 3.165293e+01 2.173834e+00 1.003967e-03 +1.265811e-01 3.165279e+01 2.294096e+00 1.003963e-03 +1.208410e-01 3.165263e+01 2.429951e+00 1.003959e-03 +1.153611e-01 3.165246e+01 2.582761e+00 1.003954e-03 +1.101298e-01 3.165228e+01 2.753932e+00 1.003949e-03 +1.051357e-01 3.165208e+01 2.944919e+00 1.003943e-03 +1.003681e-01 3.165186e+01 3.157231e+00 1.003937e-03 +9.581665e-02 3.165163e+01 3.392436e+00 1.003930e-03 +9.147162e-02 3.165138e+01 3.652162e+00 1.003923e-03 +8.732362e-02 3.165110e+01 3.938104e+00 1.003916e-03 +8.336372e-02 3.165081e+01 4.252021e+00 1.003908e-03 +7.958340e-02 3.165049e+01 4.595739e+00 1.003899e-03 +7.597450e-02 3.165015e+01 4.971143e+00 1.003890e-03 +7.252925e-02 3.164978e+01 5.380172e+00 1.003880e-03 +6.924024e-02 3.164938e+01 5.824807e+00 1.003870e-03 +6.610038e-02 3.164896e+01 6.307055e+00 1.003859e-03 +6.310290e-02 3.164851e+01 6.828932e+00 1.003847e-03 +6.024135e-02 3.164803e+01 7.392437e+00 1.003835e-03 +5.750956e-02 3.164752e+01 7.999525e+00 1.003822e-03 +5.490165e-02 3.164698e+01 8.652072e+00 1.003809e-03 +5.241201e-02 3.164640e+01 9.351841e+00 1.003795e-03 +5.003526e-02 3.164580e+01 1.010044e+01 1.003781e-03 +4.776629e-02 3.164517e+01 1.089926e+01 1.003766e-03 +4.560022e-02 3.164451e+01 1.174946e+01 1.003752e-03 +4.353237e-02 3.164382e+01 1.265188e+01 1.003737e-03 +4.155829e-02 3.164310e+01 1.360703e+01 1.003722e-03 +3.967373e-02 3.164236e+01 1.461497e+01 1.003707e-03 +3.787463e-02 3.164160e+01 1.567535e+01 1.003693e-03 +3.615711e-02 3.164082e+01 1.678729e+01 1.003679e-03 +3.451748e-02 3.164002e+01 1.794939e+01 1.003665e-03 +3.295221e-02 3.163921e+01 1.915966e+01 1.003653e-03 +3.145791e-02 3.163840e+01 2.041553e+01 1.003641e-03 +3.003138e-02 3.163758e+01 2.171386e+01 1.003631e-03 +2.866953e-02 3.163677e+01 2.305089e+01 1.003622e-03 +2.736944e-02 3.163596e+01 2.442232e+01 1.003614e-03 +2.612831e-02 3.163517e+01 2.582333e+01 1.003608e-03 +2.494346e-02 3.163439e+01 2.724862e+01 1.003604e-03 +2.381234e-02 3.163363e+01 2.869253e+01 1.003602e-03 +2.273251e-02 3.163290e+01 3.014906e+01 1.003602e-03 +2.170165e-02 3.163219e+01 3.161203e+01 1.003604e-03 + + +31.654720 1.417279 + + +2.320286e-02 1.003602e-03 diff --git a/gsl-2.5/doc/examples/fitreg2 b/gsl-2.5/doc/examples/fitreg2 new file mode 100755 index 00000000..c1edb6a0 --- /dev/null +++ b/gsl-2.5/doc/examples/fitreg2 @@ -0,0 +1,228 @@ +#! /bin/sh + +# fitreg2 - temporary wrapper script for .libs/fitreg2 +# Generated by libtool (GNU libtool) 2.4.2 +# +# The fitreg2 program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s/\([`"$\\]\)/\\\1/g' + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command="(cd /home/groups/kipac/chto/package/gsl/gsl-2.5/doc/examples; LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LIBRARY_PATH; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; LD_LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/fftw/include:/home/users/chto/lib/fftw/lib:/home/users/chto/lib/healpix/lib:/home/users/chto/lib/namaster/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/include:/home/users/chto/cpp/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LD_LIBRARY_PATH; PATH=/share/software/user/open/curl/7.54.0/bin:/share/software/user/open/libressl/2.5.3/bin:/home/users/chto/lib/cfitsio:/home/users/chto/lib/cfitsio/include:/home/users/chto/lib:/home/users/chto/bin/bin:/home/users/chto/bin:/home/users/chto/.texlive/bin/x86_64-linux:/home/groups/kipac/chto/anaconda2/envs/newenv3/bin:/home/users/chto/.local/bin/include:/home/users/chto/.local/bin/lib:/home/users/chto/.local/bin:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/bin64:/share/software/user/open/fftw/3.3.6/bin:/home/groups/kipac/chto/anaconda2/condabin:/share/software/user/restricted/ifort/2019/bin:/share/software/user/open/gsl/2.3/bin:/share/software/user/srcc/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/dell/srvadmin/bin:/opt/dell/srvadmin/iSM/bin:/home/users/chto/bin; export PATH; gcc -g -O2 -o \$progdir/\$file fitreg2.o ../../.libs/libgsl.so ../../cblas/.libs/libgslcblas.so -lm -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/.libs -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/cblas/.libs -Wl,-rpath -Wl,/usr/local/lib)" + +# This environment variable determines our operation mode. +if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then + # install mode needs the following variables: + generated_by_libtool_version='2.4.2' + notinst_deplibs=' ../../libgsl.la ../../cblas/libgslcblas.la' +else + # When we are sourced in execute mode, $file and $ECHO are already set. + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + file="$0" + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + ECHO="printf %s\\n" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ which is used only on +# windows platforms, and (c) all begin with the string --lt- +# (application programs are unlikely to have options which match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's ../../libtool value, followed by no. +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=$0 + shift + for lt_opt + do + case "$lt_opt" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%/[^/]*$%%'` + test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=. + lt_dump_F=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%^.*/%%'` + cat "$lt_dump_D/$lt_dump_F" + exit 0 + ;; + --lt-*) + $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n "$lt_option_debug"; then + echo "fitreg2:fitreg2:${LINENO}: libtool wrapper (GNU libtool) 2.4.2" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + $ECHO "fitreg2:fitreg2:${LINENO}: newargv[$lt_dump_args_N]: $lt_arg" + lt_dump_args_N=`expr $lt_dump_args_N + 1` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ + + if test -n "$lt_option_debug"; then + $ECHO "fitreg2:fitreg2:${LINENO}: newargv[0]: $progdir/$program" 1>&2 + func_lt_dump_args ${1+"$@"} 1>&2 + fi + exec "$progdir/$program" ${1+"$@"} + + $ECHO "$0: cannot exec $program $*" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from $@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case " $* " in + *\ --lt-*) + for lt_wr_arg + do + case $lt_wr_arg in + --lt-*) ;; + *) set x "$@" "$lt_wr_arg"; shift;; + esac + shift + done ;; + esac + func_exec_program_core ${1+"$@"} +} + + # Parse options + func_parse_lt_options "$0" ${1+"$@"} + + # Find the directory that this script lives in. + thisdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + test "x$thisdir" = "x$file" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=`ls -ld "$file" | /usr/bin/sed -n 's/.*-> //p'` + while test -n "$file"; do + destdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + + # If there was a directory component, then change thisdir. + if test "x$destdir" != "x$file"; then + case "$destdir" in + [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;; + *) thisdir="$thisdir/$destdir" ;; + esac + fi + + file=`$ECHO "$file" | /usr/bin/sed 's%^.*/%%'` + file=`ls -ld "$thisdir/$file" | /usr/bin/sed -n 's/.*-> //p'` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no + if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then + # special case for '.' + if test "$thisdir" = "."; then + thisdir=`pwd` + fi + # remove .libs from thisdir + case "$thisdir" in + *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /usr/bin/sed 's%[\\/][^\\/]*$%%'` ;; + .libs ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=`cd "$thisdir" && pwd` + test -n "$absdir" && thisdir="$absdir" + + program=lt-'fitreg2' + progdir="$thisdir/.libs" + + if test ! -f "$progdir/$program" || + { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /usr/bin/sed 1q`; \ + test "X$file" != "X$progdir/$program"; }; then + + file="$$-$program" + + if test ! -d "$progdir"; then + mkdir "$progdir" + else + rm -f "$progdir/$file" + fi + + # relink executable if necessary + if test -n "$relink_command"; then + if relink_command_output=`eval $relink_command 2>&1`; then : + else + printf %s\n "$relink_command_output" >&2 + rm -f "$progdir/$file" + exit 1 + fi + fi + + mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null || + { rm -f "$progdir/$program"; + mv -f "$progdir/$file" "$progdir/$program"; } + rm -f "$progdir/$file" + fi + + if test -f "$progdir/$program"; then + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + # Run the actual program with our arguments. + func_exec_program ${1+"$@"} + fi + else + # The program doesn't exist. + $ECHO "$0: error: \`$progdir/$program' does not exist" 1>&2 + $ECHO "This script is just a wrapper for $program." 1>&2 + $ECHO "See the libtool documentation for more information." 1>&2 + exit 1 + fi +fi diff --git a/gsl-2.5/doc/examples/fitreg2.c b/gsl-2.5/doc/examples/fitreg2.c new file mode 100644 index 00000000..8f448d67 --- /dev/null +++ b/gsl-2.5/doc/examples/fitreg2.c @@ -0,0 +1,142 @@ +#include +#include +#include +#include +#include + +static int +hilbert_matrix(gsl_matrix * m) +{ + const size_t N = m->size1; + const size_t M = m->size2; + size_t i, j; + + for (i = 0; i < N; i++) + { + for (j = 0; j < M; j++) + { + gsl_matrix_set(m, i, j, 1.0/(i+j+1.0)); + } + } + + return GSL_SUCCESS; +} + +int +main() +{ + const size_t n = 10; /* number of observations */ + const size_t p = 8; /* number of model parameters */ + size_t i; + gsl_matrix *X = gsl_matrix_alloc(n, p); + gsl_vector *y = gsl_vector_alloc(n); + + /* construct Hilbert matrix and rhs vector */ + hilbert_matrix(X); + + { + double val = 1.0; + for (i = 0; i < n; ++i) + { + gsl_vector_set(y, i, val); + val *= -1.0; + } + } + + { + const size_t npoints = 200; /* number of points on L-curve and GCV curve */ + gsl_multifit_linear_workspace *w = + gsl_multifit_linear_alloc(n, p); + gsl_vector *c = gsl_vector_alloc(p); /* OLS solution */ + gsl_vector *c_lcurve = gsl_vector_alloc(p); /* regularized solution (L-curve) */ + gsl_vector *c_gcv = gsl_vector_alloc(p); /* regularized solution (GCV) */ + gsl_vector *reg_param = gsl_vector_alloc(npoints); + gsl_vector *rho = gsl_vector_alloc(npoints); /* residual norms */ + gsl_vector *eta = gsl_vector_alloc(npoints); /* solution norms */ + gsl_vector *G = gsl_vector_alloc(npoints); /* GCV function values */ + double lambda_l; /* optimal regularization parameter (L-curve) */ + double lambda_gcv; /* optimal regularization parameter (GCV) */ + double G_gcv; /* G(lambda_gcv) */ + size_t reg_idx; /* index of optimal lambda */ + double rcond; /* reciprocal condition number of X */ + double chisq, rnorm, snorm; + + /* compute SVD of X */ + gsl_multifit_linear_svd(X, w); + + rcond = gsl_multifit_linear_rcond(w); + fprintf(stderr, "matrix condition number = %e\n", 1.0 / rcond); + + /* unregularized (standard) least squares fit, lambda = 0 */ + gsl_multifit_linear_solve(0.0, X, y, c, &rnorm, &snorm, w); + chisq = pow(rnorm, 2.0); + + fprintf(stderr, "\n=== Unregularized fit ===\n"); + fprintf(stderr, "residual norm = %g\n", rnorm); + fprintf(stderr, "solution norm = %g\n", snorm); + fprintf(stderr, "chisq/dof = %g\n", chisq / (n - p)); + + /* calculate L-curve and find its corner */ + gsl_multifit_linear_lcurve(y, reg_param, rho, eta, w); + gsl_multifit_linear_lcorner(rho, eta, ®_idx); + + /* store optimal regularization parameter */ + lambda_l = gsl_vector_get(reg_param, reg_idx); + + /* regularize with lambda_l */ + gsl_multifit_linear_solve(lambda_l, X, y, c_lcurve, &rnorm, &snorm, w); + chisq = pow(rnorm, 2.0) + pow(lambda_l * snorm, 2.0); + + fprintf(stderr, "\n=== Regularized fit (L-curve) ===\n"); + fprintf(stderr, "optimal lambda: %g\n", lambda_l); + fprintf(stderr, "residual norm = %g\n", rnorm); + fprintf(stderr, "solution norm = %g\n", snorm); + fprintf(stderr, "chisq/dof = %g\n", chisq / (n - p)); + + /* calculate GCV curve and find its minimum */ + gsl_multifit_linear_gcv(y, reg_param, G, &lambda_gcv, &G_gcv, w); + + /* regularize with lambda_gcv */ + gsl_multifit_linear_solve(lambda_gcv, X, y, c_gcv, &rnorm, &snorm, w); + chisq = pow(rnorm, 2.0) + pow(lambda_gcv * snorm, 2.0); + + fprintf(stderr, "\n=== Regularized fit (GCV) ===\n"); + fprintf(stderr, "optimal lambda: %g\n", lambda_gcv); + fprintf(stderr, "residual norm = %g\n", rnorm); + fprintf(stderr, "solution norm = %g\n", snorm); + fprintf(stderr, "chisq/dof = %g\n", chisq / (n - p)); + + /* output L-curve and GCV curve */ + for (i = 0; i < npoints; ++i) + { + printf("%e %e %e %e\n", + gsl_vector_get(reg_param, i), + gsl_vector_get(rho, i), + gsl_vector_get(eta, i), + gsl_vector_get(G, i)); + } + + /* output L-curve corner point */ + printf("\n\n%f %f\n", + gsl_vector_get(rho, reg_idx), + gsl_vector_get(eta, reg_idx)); + + /* output GCV curve corner minimum */ + printf("\n\n%e %e\n", + lambda_gcv, + G_gcv); + + gsl_multifit_linear_free(w); + gsl_vector_free(c); + gsl_vector_free(c_lcurve); + gsl_vector_free(reg_param); + gsl_vector_free(rho); + gsl_vector_free(eta); + gsl_vector_free(G); + } + + gsl_matrix_free(X); + gsl_vector_free(y); + + return 0; +} diff --git a/gsl-2.5/doc/examples/fitreg2.txt b/gsl-2.5/doc/examples/fitreg2.txt new file mode 100644 index 00000000..8327e3a3 --- /dev/null +++ b/gsl-2.5/doc/examples/fitreg2.txt @@ -0,0 +1,206 @@ +1.722777e+00 3.137496e+00 1.393571e-01 1.098466e-01 +1.542511e+00 3.134851e+00 1.602537e-01 1.111355e-01 +1.381107e+00 3.132105e+00 1.838003e-01 1.124535e-01 +1.236592e+00 3.129220e+00 2.106938e-01 1.137782e-01 +1.107199e+00 3.126141e+00 2.418828e-01 1.150910e-01 +9.913452e-01 3.122801e+00 2.785467e-01 1.163793e-01 +8.876139e-01 3.119134e+00 3.220259e-01 1.176379e-01 +7.947367e-01 3.115081e+00 3.737063e-01 1.188693e-01 +7.115778e-01 3.110606e+00 4.348745e-01 1.200830e-01 +6.371205e-01 3.105701e+00 5.065595e-01 1.212938e-01 +5.704542e-01 3.100403e+00 5.893764e-01 1.225198e-01 +5.107636e-01 3.094792e+00 6.833863e-01 1.237793e-01 +4.573188e-01 3.088992e+00 7.879919e-01 1.250887e-01 +4.094664e-01 3.083163e+00 9.018923e-01 1.264594e-01 +3.666211e-01 3.077483e+00 1.023126e+00 1.278954e-01 +3.282590e-01 3.072126e+00 1.149218e+00 1.293921e-01 +2.939109e-01 3.067236e+00 1.277432e+00 1.309363e-01 +2.631570e-01 3.062913e+00 1.405101e+00 1.325071e-01 +2.356210e-01 3.059197e+00 1.529994e+00 1.340794e-01 +2.109664e-01 3.056073e+00 1.650666e+00 1.356271e-01 +1.888915e-01 3.053481e+00 1.766774e+00 1.371273e-01 +1.691265e-01 3.051330e+00 1.879334e+00 1.385633e-01 +1.514296e-01 3.049515e+00 1.990948e+00 1.399270e-01 +1.355845e-01 3.047928e+00 2.106019e+00 1.412191e-01 +1.213973e-01 3.046466e+00 2.230932e+00 1.424491e-01 +1.086947e-01 3.045040e+00 2.374177e+00 1.436337e-01 +9.732119e-02 3.043574e+00 2.546260e+00 1.447959e-01 +8.713780e-02 3.042004e+00 2.759286e+00 1.459626e-01 +7.801997e-02 3.040285e+00 3.026090e+00 1.471633e-01 +6.985619e-02 3.038387e+00 3.358992e+00 1.484283e-01 +6.254665e-02 3.036296e+00 3.768366e+00 1.497867e-01 +5.600196e-02 3.034020e+00 4.261340e+00 1.512642e-01 +5.014209e-02 3.031585e+00 4.840819e+00 1.528812e-01 +4.489537e-02 3.029040e+00 5.504952e+00 1.546495e-01 +4.019766e-02 3.026446e+00 6.247119e+00 1.565704e-01 +3.599150e-02 3.023875e+00 7.056539e+00 1.586327e-01 +3.222546e-02 3.021398e+00 7.919639e+00 1.608119e-01 +2.885348e-02 3.019073e+00 8.822262e+00 1.630712e-01 +2.583434e-02 3.016940e+00 9.752649e+00 1.653647e-01 +2.313112e-02 3.015010e+00 1.070504e+01 1.676419e-01 +2.071075e-02 3.013269e+00 1.168365e+01 1.698529e-01 +1.854364e-02 3.011679e+00 1.270683e+01 1.719539e-01 +1.660329e-02 3.010183e+00 1.381130e+01 1.739109e-01 +1.486597e-02 3.008713e+00 1.505601e+01 1.757021e-01 +1.331044e-02 3.007191e+00 1.652543e+01 1.773182e-01 +1.191768e-02 3.005538e+00 1.833101e+01 1.787612e-01 +1.067065e-02 3.003668e+00 2.061036e+01 1.800425e-01 +9.554103e-03 3.001496e+00 2.352383e+01 1.811809e-01 +8.554391e-03 2.998932e+00 2.724970e+01 1.821998e-01 +7.659285e-03 2.995886e+00 3.197972e+01 1.831262e-01 +6.857841e-03 2.992265e+00 3.791607e+01 1.839890e-01 +6.140258e-03 2.987980e+00 4.526885e+01 1.848187e-01 +5.497760e-03 2.982950e+00 5.425209e+01 1.856470e-01 +4.922491e-03 2.977113e+00 6.507580e+01 1.865067e-01 +4.407416e-03 2.970435e+00 7.793223e+01 1.874314e-01 +3.946238e-03 2.962928e+00 9.297574e+01 1.884557e-01 +3.533316e-03 2.954661e+00 1.102970e+02 1.896138e-01 +3.163600e-03 2.945771e+00 1.298942e+02 1.909381e-01 +2.832571e-03 2.936465e+00 1.516468e+02 1.924564e-01 +2.536179e-03 2.927011e+00 1.752965e+02 1.941885e-01 +2.270801e-03 2.917712e+00 2.004452e+02 1.961420e-01 +2.033191e-03 2.908878e+00 2.265717e+02 1.983087e-01 +1.820444e-03 2.900780e+00 2.530716e+02 2.006625e-01 +1.629959e-03 2.893622e+00 2.793116e+02 2.031597e-01 +1.459405e-03 2.887516e+00 3.046926e+02 2.057427e-01 +1.306697e-03 2.882479e+00 3.287068e+02 2.083462e-01 +1.169968e-03 2.878452e+00 3.509813e+02 2.109050e-01 +1.047546e-03 2.875317e+00 3.713028e+02 2.133613e-01 +9.379343e-04 2.872926e+00 3.896242e+02 2.156706e-01 +8.397917e-04 2.871127e+00 4.060614e+02 2.178043e-01 +7.519185e-04 2.869774e+00 4.208862e+02 2.197508e-01 +6.732400e-04 2.868742e+00 4.345280e+02 2.215136e-01 +6.027942e-04 2.867925e+00 4.475887e+02 2.231087e-01 +5.397197e-04 2.867240e+00 4.608802e+02 2.245616e-01 +4.832451e-04 2.866619e+00 4.754845e+02 2.259049e-01 +4.326798e-04 2.866007e+00 4.928343e+02 2.271761e-01 +3.874055e-04 2.865362e+00 5.147993e+02 2.284162e-01 +3.468686e-04 2.864647e+00 5.437503e+02 2.296689e-01 +3.105733e-04 2.863829e+00 5.825596e+02 2.309801e-01 +2.780758e-04 2.862880e+00 6.345001e+02 2.323980e-01 +2.489788e-04 2.861776e+00 7.030369e+02 2.339728e-01 +2.229264e-04 2.860499e+00 7.915470e+02 2.357562e-01 +1.996001e-04 2.859036e+00 9.030327e+02 2.378005e-01 +1.787146e-04 2.857384e+00 1.039868e+03 2.401564e-01 +1.600144e-04 2.855552e+00 1.203580e+03 2.428702e-01 +1.432710e-04 2.853565e+00 1.394632e+03 2.459795e-01 +1.282795e-04 2.851464e+00 1.612233e+03 2.495081e-01 +1.148568e-04 2.849301e+00 1.854184e+03 2.534599e-01 +1.028385e-04 2.847142e+00 2.116859e+03 2.578138e-01 +9.207780e-05 2.845053e+00 2.395388e+03 2.625202e-01 +8.244306e-05 2.843097e+00 2.684085e+03 2.675006e-01 +7.381647e-05 2.841321e+00 2.977118e+03 2.726516e-01 +6.609254e-05 2.839753e+00 3.269361e+03 2.778528e-01 +5.917682e-05 2.838397e+00 3.557342e+03 2.829790e-01 +5.298473e-05 2.837240e+00 3.840201e+03 2.879116e-01 +4.744057e-05 2.836251e+00 4.120650e+03 2.925500e-01 +4.247654e-05 2.835386e+00 4.405963e+03 2.968191e-01 +3.803192e-05 2.834600e+00 4.709062e+03 3.006723e-01 +3.405238e-05 2.833841e+00 5.049753e+03 3.040905e-01 +3.048924e-05 2.833062e+00 5.456018e+03 3.070781e-01 +2.729894e-05 2.832211e+00 5.965090e+03 3.096580e-01 +2.444246e-05 2.831239e+00 6.623983e+03 3.118655e-01 +2.188488e-05 2.830091e+00 7.489257e+03 3.137428e-01 +1.959491e-05 2.828710e+00 8.626347e+03 3.153358e-01 +1.754456e-05 2.827031e+00 1.010924e+04 3.166905e-01 +1.570875e-05 2.824979e+00 1.202123e+04 3.178516e-01 +1.406503e-05 2.822470e+00 1.445704e+04 3.188617e-01 +1.259331e-05 2.819406e+00 1.752562e+04 3.197610e-01 +1.127559e-05 2.815678e+00 2.135312e+04 3.205881e-01 +1.009574e-05 2.811161e+00 2.608500e+04 3.213810e-01 +9.039355e-06 2.805726e+00 3.188670e+04 3.221777e-01 +8.093504e-06 2.799237e+00 3.894202e+04 3.230184e-01 +7.246625e-06 2.791566e+00 4.744843e+04 3.239468e-01 +6.488360e-06 2.782605e+00 5.760813e+04 3.250117e-01 +5.809438e-06 2.772286e+00 6.961416e+04 3.262684e-01 +5.201556e-06 2.760602e+00 8.363085e+04 3.277796e-01 +4.657281e-06 2.747633e+00 9.976912e+04 3.296152e-01 +4.169957e-06 2.733562e+00 1.180587e+05 3.318499e-01 +3.733626e-06 2.718689e+00 1.384212e+05 3.345583e-01 +3.342950e-06 2.703419e+00 1.606491e+05 3.378069e-01 +2.993154e-06 2.688234e+00 1.843986e+05 3.416434e-01 +2.679960e-06 2.673643e+00 2.092005e+05 3.460840e-01 +2.399537e-06 2.660116e+00 2.344916e+05 3.511029e-01 +2.148457e-06 2.648030e+00 2.596630e+05 3.566257e-01 +1.923649e-06 2.637620e+00 2.841185e+05 3.625315e-01 +1.722364e-06 2.628969e+00 3.073291e+05 3.686627e-01 +1.542141e-06 2.622018e+00 3.288765e+05 3.748433e-01 +1.380776e-06 2.616606e+00 3.484761e+05 3.808989e-01 +1.236296e-06 2.612510e+00 3.659817e+05 3.866765e-01 +1.106934e-06 2.609484e+00 3.813726e+05 3.920571e-01 +9.911075e-07 2.607295e+00 3.947318e+05 3.969632e-01 +8.874010e-07 2.605735e+00 4.062212e+05 4.013572e-01 +7.945461e-07 2.604636e+00 4.160595e+05 4.052372e-01 +7.114072e-07 2.603862e+00 4.245066e+05 4.086289e-01 +6.369677e-07 2.603312e+00 4.318573e+05 4.115774e-01 +5.703174e-07 2.602910e+00 4.384463e+05 4.141403e-01 +5.106411e-07 2.602602e+00 4.446656e+05 4.163818e-01 +4.572092e-07 2.602348e+00 4.509978e+05 4.183691e-01 +4.093682e-07 2.602117e+00 4.580674e+05 4.201702e-01 +3.665332e-07 2.601887e+00 4.667134e+05 4.218530e-01 +3.281802e-07 2.601639e+00 4.780848e+05 4.234853e-01 +2.938405e-07 2.601359e+00 4.937527e+05 4.251364e-01 +2.630939e-07 2.601029e+00 5.158218e+05 4.268778e-01 +2.355646e-07 2.600636e+00 5.470072e+05 4.287857e-01 +2.109158e-07 2.600165e+00 5.906325e+05 4.309424e-01 +1.888462e-07 2.599598e+00 6.505218e+05 4.334390e-01 +1.690859e-07 2.598921e+00 7.308011e+05 4.363771e-01 +1.513933e-07 2.598116e+00 8.356695e+05 4.398698e-01 +1.355519e-07 2.597169e+00 9.692012e+05 4.440427e-01 +1.213682e-07 2.596067e+00 1.135182e+06 4.490330e-01 +1.086686e-07 2.594806e+00 1.336932e+06 4.549863e-01 +9.729786e-08 2.593385e+00 1.577052e+06 4.620509e-01 +8.711690e-08 2.591819e+00 1.857073e+06 4.703688e-01 +7.800126e-08 2.590132e+00 2.177024e+06 4.800613e-01 +6.983944e-08 2.588362e+00 2.535010e+06 4.912121e-01 +6.253166e-08 2.586559e+00 2.926897e+06 5.038476e-01 +5.598853e-08 2.584781e+00 3.346241e+06 5.179163e-01 +5.013007e-08 2.583085e+00 3.784553e+06 5.332744e-01 +4.488461e-08 2.581523e+00 4.231936e+06 5.496803e-01 +4.018802e-08 2.580133e+00 4.678037e+06 5.668022e-01 +3.598287e-08 2.578938e+00 5.113157e+06 5.842421e-01 +3.221773e-08 2.577940e+00 5.529355e+06 6.015712e-01 +2.884656e-08 2.577129e+00 5.921393e+06 6.183721e-01 +2.582815e-08 2.576482e+00 6.287444e+06 6.342778e-01 +2.312557e-08 2.575968e+00 6.629644e+06 6.490016e-01 +2.070578e-08 2.575557e+00 6.954609e+06 6.623514e-01 +1.853919e-08 2.575218e+00 7.274153e+06 6.742307e-01 +1.659931e-08 2.574923e+00 7.606397e+06 6.846274e-01 +1.486241e-08 2.574646e+00 7.977424e+06 6.935959e-01 +1.330725e-08 2.574366e+00 8.423477e+06 7.012373e-01 +1.191482e-08 2.574061e+00 8.993390e+06 7.076806e-01 +1.066809e-08 2.573713e+00 9.750697e+06 7.130674e-01 +9.551812e-09 2.573299e+00 1.077472e+07 7.175402e-01 +8.552340e-09 2.572797e+00 1.216047e+07 7.212348e-01 +7.657449e-09 2.572182e+00 1.401811e+07 7.242757e-01 +6.856197e-09 2.571422e+00 1.647375e+07 7.267742e-01 +6.138785e-09 2.570481e+00 1.967292e+07 7.288276e-01 +5.496441e-09 2.569314e+00 2.378700e+07 7.305201e-01 +4.921311e-09 2.567867e+00 2.902207e+07 7.319240e-01 +4.406360e-09 2.566074e+00 3.562921e+07 7.331015e-01 +3.945292e-09 2.563853e+00 4.391592e+07 7.341066e-01 +3.532468e-09 2.561108e+00 5.425840e+07 7.349869e-01 +3.162842e-09 2.557722e+00 6.711471e+07 7.357857e-01 +2.831891e-09 2.553557e+00 8.303847e+07 7.365440e-01 +2.535571e-09 2.548448e+00 1.026925e+08 7.373029e-01 +2.270257e-09 2.542210e+00 1.268609e+08 7.381063e-01 +2.032704e-09 2.534630e+00 1.564577e+08 7.390036e-01 +1.820008e-09 2.525476e+00 1.925281e+08 7.400539e-01 +1.629568e-09 2.514504e+00 2.362389e+08 7.413306e-01 +1.459055e-09 2.501475e+00 2.888508e+08 7.429267e-01 +1.306384e-09 2.486172e+00 3.516668e+08 7.449623e-01 +1.169688e-09 2.468436e+00 4.259500e+08 7.475918e-01 +1.047295e-09 2.448205e+00 5.128065e+08 7.510116e-01 +9.377094e-10 2.425553e+00 6.130339e+08 7.554664e-01 +8.395904e-10 2.400735e+00 7.269474e+08 7.612503e-01 +7.517382e-10 2.374214e+00 8.542031e+08 7.687001e-01 +6.730786e-10 2.346657e+00 9.936560e+08 7.781758e-01 +6.026497e-10 2.318902e+00 1.143292e+09 7.900244e-01 +5.395903e-10 2.291876e+00 1.300270e+09 8.045283e-01 +4.831292e-10 2.266486e+00 1.461099e+09 8.218422e-01 + + +2.603862 424506.610976 + + +1.722777e+00 1.098466e-01 diff --git a/gsl-2.5/doc/examples/fitting b/gsl-2.5/doc/examples/fitting new file mode 100755 index 00000000..97a4ea74 --- /dev/null +++ b/gsl-2.5/doc/examples/fitting @@ -0,0 +1,228 @@ +#! /bin/sh + +# fitting - temporary wrapper script for .libs/fitting +# Generated by libtool (GNU libtool) 2.4.2 +# +# The fitting program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s/\([`"$\\]\)/\\\1/g' + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command="(cd /home/groups/kipac/chto/package/gsl/gsl-2.5/doc/examples; LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LIBRARY_PATH; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; LD_LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/fftw/include:/home/users/chto/lib/fftw/lib:/home/users/chto/lib/healpix/lib:/home/users/chto/lib/namaster/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/include:/home/users/chto/cpp/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LD_LIBRARY_PATH; PATH=/share/software/user/open/curl/7.54.0/bin:/share/software/user/open/libressl/2.5.3/bin:/home/users/chto/lib/cfitsio:/home/users/chto/lib/cfitsio/include:/home/users/chto/lib:/home/users/chto/bin/bin:/home/users/chto/bin:/home/users/chto/.texlive/bin/x86_64-linux:/home/groups/kipac/chto/anaconda2/envs/newenv3/bin:/home/users/chto/.local/bin/include:/home/users/chto/.local/bin/lib:/home/users/chto/.local/bin:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/bin64:/share/software/user/open/fftw/3.3.6/bin:/home/groups/kipac/chto/anaconda2/condabin:/share/software/user/restricted/ifort/2019/bin:/share/software/user/open/gsl/2.3/bin:/share/software/user/srcc/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/dell/srvadmin/bin:/opt/dell/srvadmin/iSM/bin:/home/users/chto/bin; export PATH; gcc -g -O2 -o \$progdir/\$file fitting.o ../../.libs/libgsl.so ../../cblas/.libs/libgslcblas.so -lm -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/.libs -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/cblas/.libs -Wl,-rpath -Wl,/usr/local/lib)" + +# This environment variable determines our operation mode. +if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then + # install mode needs the following variables: + generated_by_libtool_version='2.4.2' + notinst_deplibs=' ../../libgsl.la ../../cblas/libgslcblas.la' +else + # When we are sourced in execute mode, $file and $ECHO are already set. + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + file="$0" + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + ECHO="printf %s\\n" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ which is used only on +# windows platforms, and (c) all begin with the string --lt- +# (application programs are unlikely to have options which match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's ../../libtool value, followed by no. +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=$0 + shift + for lt_opt + do + case "$lt_opt" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%/[^/]*$%%'` + test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=. + lt_dump_F=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%^.*/%%'` + cat "$lt_dump_D/$lt_dump_F" + exit 0 + ;; + --lt-*) + $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n "$lt_option_debug"; then + echo "fitting:fitting:${LINENO}: libtool wrapper (GNU libtool) 2.4.2" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + $ECHO "fitting:fitting:${LINENO}: newargv[$lt_dump_args_N]: $lt_arg" + lt_dump_args_N=`expr $lt_dump_args_N + 1` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ + + if test -n "$lt_option_debug"; then + $ECHO "fitting:fitting:${LINENO}: newargv[0]: $progdir/$program" 1>&2 + func_lt_dump_args ${1+"$@"} 1>&2 + fi + exec "$progdir/$program" ${1+"$@"} + + $ECHO "$0: cannot exec $program $*" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from $@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case " $* " in + *\ --lt-*) + for lt_wr_arg + do + case $lt_wr_arg in + --lt-*) ;; + *) set x "$@" "$lt_wr_arg"; shift;; + esac + shift + done ;; + esac + func_exec_program_core ${1+"$@"} +} + + # Parse options + func_parse_lt_options "$0" ${1+"$@"} + + # Find the directory that this script lives in. + thisdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + test "x$thisdir" = "x$file" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=`ls -ld "$file" | /usr/bin/sed -n 's/.*-> //p'` + while test -n "$file"; do + destdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + + # If there was a directory component, then change thisdir. + if test "x$destdir" != "x$file"; then + case "$destdir" in + [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;; + *) thisdir="$thisdir/$destdir" ;; + esac + fi + + file=`$ECHO "$file" | /usr/bin/sed 's%^.*/%%'` + file=`ls -ld "$thisdir/$file" | /usr/bin/sed -n 's/.*-> //p'` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no + if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then + # special case for '.' + if test "$thisdir" = "."; then + thisdir=`pwd` + fi + # remove .libs from thisdir + case "$thisdir" in + *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /usr/bin/sed 's%[\\/][^\\/]*$%%'` ;; + .libs ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=`cd "$thisdir" && pwd` + test -n "$absdir" && thisdir="$absdir" + + program=lt-'fitting' + progdir="$thisdir/.libs" + + if test ! -f "$progdir/$program" || + { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /usr/bin/sed 1q`; \ + test "X$file" != "X$progdir/$program"; }; then + + file="$$-$program" + + if test ! -d "$progdir"; then + mkdir "$progdir" + else + rm -f "$progdir/$file" + fi + + # relink executable if necessary + if test -n "$relink_command"; then + if relink_command_output=`eval $relink_command 2>&1`; then : + else + printf %s\n "$relink_command_output" >&2 + rm -f "$progdir/$file" + exit 1 + fi + fi + + mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null || + { rm -f "$progdir/$program"; + mv -f "$progdir/$file" "$progdir/$program"; } + rm -f "$progdir/$file" + fi + + if test -f "$progdir/$program"; then + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + # Run the actual program with our arguments. + func_exec_program ${1+"$@"} + fi + else + # The program doesn't exist. + $ECHO "$0: error: \`$progdir/$program' does not exist" 1>&2 + $ECHO "This script is just a wrapper for $program." 1>&2 + $ECHO "See the libtool documentation for more information." 1>&2 + exit 1 + fi +fi diff --git a/gsl-2.5/doc/examples/fitting.c b/gsl-2.5/doc/examples/fitting.c new file mode 100644 index 00000000..5c369697 --- /dev/null +++ b/gsl-2.5/doc/examples/fitting.c @@ -0,0 +1,45 @@ +#include +#include + +int +main (void) +{ + int i, n = 4; + double x[4] = { 1970, 1980, 1990, 2000 }; + double y[4] = { 12, 11, 14, 13 }; + double w[4] = { 0.1, 0.2, 0.3, 0.4 }; + + double c0, c1, cov00, cov01, cov11, chisq; + + gsl_fit_wlinear (x, 1, w, 1, y, 1, n, + &c0, &c1, &cov00, &cov01, &cov11, + &chisq); + + printf ("# best fit: Y = %g + %g X\n", c0, c1); + printf ("# covariance matrix:\n"); + printf ("# [ %g, %g\n# %g, %g]\n", + cov00, cov01, cov01, cov11); + printf ("# chisq = %g\n", chisq); + + for (i = 0; i < n; i++) + printf ("data: %g %g %g\n", + x[i], y[i], 1/sqrt(w[i])); + + printf ("\n"); + + for (i = -30; i < 130; i++) + { + double xf = x[0] + (i/100.0) * (x[n-1] - x[0]); + double yf, yf_err; + + gsl_fit_linear_est (xf, + c0, c1, + cov00, cov01, cov11, + &yf, &yf_err); + + printf ("fit: %g %g\n", xf, yf); + printf ("hi : %g %g\n", xf, yf + yf_err); + printf ("lo : %g %g\n", xf, yf - yf_err); + } + return 0; +} diff --git a/gsl-2.5/doc/examples/fitting.txt b/gsl-2.5/doc/examples/fitting.txt new file mode 100644 index 00000000..ff9354ea --- /dev/null +++ b/gsl-2.5/doc/examples/fitting.txt @@ -0,0 +1,490 @@ +# best fit: Y = -106.6 + 0.06 X +# covariance matrix: +# [ 39602, -19.9 +# -19.9, 0.01] +# chisq = 0.8 +data: 1970 12 3.16228 +data: 1980 11 2.23607 +data: 1990 14 1.82574 +data: 2000 13 1.58114 + +fit: 1961 11.06 +hi : 1961 14.1276 +lo : 1961 7.99243 +fit: 1961.3 11.078 +hi : 1961.3 14.1172 +lo : 1961.3 8.03877 +fit: 1961.6 11.096 +hi : 1961.6 14.1069 +lo : 1961.6 8.08509 +fit: 1961.9 11.114 +hi : 1961.9 14.0966 +lo : 1961.9 8.13137 +fit: 1962.2 11.132 +hi : 1962.2 14.0864 +lo : 1962.2 8.17761 +fit: 1962.5 11.15 +hi : 1962.5 14.0762 +lo : 1962.5 8.22383 +fit: 1962.8 11.168 +hi : 1962.8 14.066 +lo : 1962.8 8.27 +fit: 1963.1 11.186 +hi : 1963.1 14.0559 +lo : 1963.1 8.31614 +fit: 1963.4 11.204 +hi : 1963.4 14.0458 +lo : 1963.4 8.36224 +fit: 1963.7 11.222 +hi : 1963.7 14.0357 +lo : 1963.7 8.4083 +fit: 1964 11.24 +hi : 1964 14.0257 +lo : 1964 8.45432 +fit: 1964.3 11.258 +hi : 1964.3 14.0157 +lo : 1964.3 8.5003 +fit: 1964.6 11.276 +hi : 1964.6 14.0058 +lo : 1964.6 8.54624 +fit: 1964.9 11.294 +hi : 1964.9 13.9959 +lo : 1964.9 8.59213 +fit: 1965.2 11.312 +hi : 1965.2 13.986 +lo : 1965.2 8.63798 +fit: 1965.5 11.33 +hi : 1965.5 13.9762 +lo : 1965.5 8.68378 +fit: 1965.8 11.348 +hi : 1965.8 13.9665 +lo : 1965.8 8.72953 +fit: 1966.1 11.366 +hi : 1966.1 13.9568 +lo : 1966.1 8.77523 +fit: 1966.4 11.384 +hi : 1966.4 13.9471 +lo : 1966.4 8.82088 +fit: 1966.7 11.402 +hi : 1966.7 13.9375 +lo : 1966.7 8.86647 +fit: 1967 11.42 +hi : 1967 13.928 +lo : 1967 8.91201 +fit: 1967.3 11.438 +hi : 1967.3 13.9185 +lo : 1967.3 8.9575 +fit: 1967.6 11.456 +hi : 1967.6 13.9091 +lo : 1967.6 9.00292 +fit: 1967.9 11.474 +hi : 1967.9 13.8997 +lo : 1967.9 9.04828 +fit: 1968.2 11.492 +hi : 1968.2 13.8904 +lo : 1968.2 9.09358 +fit: 1968.5 11.51 +hi : 1968.5 13.8812 +lo : 1968.5 9.13882 +fit: 1968.8 11.528 +hi : 1968.8 13.872 +lo : 1968.8 9.18399 +fit: 1969.1 11.546 +hi : 1969.1 13.8629 +lo : 1969.1 9.22908 +fit: 1969.4 11.564 +hi : 1969.4 13.8539 +lo : 1969.4 9.27411 +fit: 1969.7 11.582 +hi : 1969.7 13.8449 +lo : 1969.7 9.31906 +fit: 1970 11.6 +hi : 1970 13.8361 +lo : 1970 9.36393 +fit: 1970.3 11.618 +hi : 1970.3 13.8273 +lo : 1970.3 9.40872 +fit: 1970.6 11.636 +hi : 1970.6 13.8186 +lo : 1970.6 9.45343 +fit: 1970.9 11.654 +hi : 1970.9 13.8099 +lo : 1970.9 9.49805 +fit: 1971.2 11.672 +hi : 1971.2 13.8014 +lo : 1971.2 9.54259 +fit: 1971.5 11.69 +hi : 1971.5 13.793 +lo : 1971.5 9.58703 +fit: 1971.8 11.708 +hi : 1971.8 13.7846 +lo : 1971.8 9.63137 +fit: 1972.1 11.726 +hi : 1972.1 13.7764 +lo : 1972.1 9.67561 +fit: 1972.4 11.744 +hi : 1972.4 13.7683 +lo : 1972.4 9.71975 +fit: 1972.7 11.762 +hi : 1972.7 13.7602 +lo : 1972.7 9.76378 +fit: 1973 11.78 +hi : 1973 13.7523 +lo : 1973 9.80769 +fit: 1973.3 11.798 +hi : 1973.3 13.7445 +lo : 1973.3 9.85149 +fit: 1973.6 11.816 +hi : 1973.6 13.7368 +lo : 1973.6 9.89517 +fit: 1973.9 11.834 +hi : 1973.9 13.7293 +lo : 1973.9 9.93872 +fit: 1974.2 11.852 +hi : 1974.2 13.7219 +lo : 1974.2 9.98213 +fit: 1974.5 11.87 +hi : 1974.5 13.7146 +lo : 1974.5 10.0254 +fit: 1974.8 11.888 +hi : 1974.8 13.7075 +lo : 1974.8 10.0685 +fit: 1975.1 11.906 +hi : 1975.1 13.7005 +lo : 1975.1 10.1115 +fit: 1975.4 11.924 +hi : 1975.4 13.6936 +lo : 1975.4 10.1544 +fit: 1975.7 11.942 +hi : 1975.7 13.687 +lo : 1975.7 10.197 +fit: 1976 11.96 +hi : 1976 13.6805 +lo : 1976 10.2395 +fit: 1976.3 11.978 +hi : 1976.3 13.6741 +lo : 1976.3 10.2819 +fit: 1976.6 11.996 +hi : 1976.6 13.668 +lo : 1976.6 10.324 +fit: 1976.9 12.014 +hi : 1976.9 13.6621 +lo : 1976.9 10.3659 +fit: 1977.2 12.032 +hi : 1977.2 13.6563 +lo : 1977.2 10.4077 +fit: 1977.5 12.05 +hi : 1977.5 13.6508 +lo : 1977.5 10.4492 +fit: 1977.8 12.068 +hi : 1977.8 13.6455 +lo : 1977.8 10.4905 +fit: 1978.1 12.086 +hi : 1978.1 13.6404 +lo : 1978.1 10.5316 +fit: 1978.4 12.104 +hi : 1978.4 13.6355 +lo : 1978.4 10.5725 +fit: 1978.7 12.122 +hi : 1978.7 13.6309 +lo : 1978.7 10.6131 +fit: 1979 12.14 +hi : 1979 13.6266 +lo : 1979 10.6534 +fit: 1979.3 12.158 +hi : 1979.3 13.6225 +lo : 1979.3 10.6935 +fit: 1979.6 12.176 +hi : 1979.6 13.6188 +lo : 1979.6 10.7332 +fit: 1979.9 12.194 +hi : 1979.9 13.6153 +lo : 1979.9 10.7727 +fit: 1980.2 12.212 +hi : 1980.2 13.6121 +lo : 1980.2 10.8119 +fit: 1980.5 12.23 +hi : 1980.5 13.6093 +lo : 1980.5 10.8507 +fit: 1980.8 12.248 +hi : 1980.8 13.6068 +lo : 1980.8 10.8892 +fit: 1981.1 12.266 +hi : 1981.1 13.6047 +lo : 1981.1 10.9273 +fit: 1981.4 12.284 +hi : 1981.4 13.6029 +lo : 1981.4 10.9651 +fit: 1981.7 12.302 +hi : 1981.7 13.6016 +lo : 1981.7 11.0024 +fit: 1982 12.32 +hi : 1982 13.6006 +lo : 1982 11.0394 +fit: 1982.3 12.338 +hi : 1982.3 13.6001 +lo : 1982.3 11.0759 +fit: 1982.6 12.356 +hi : 1982.6 13.6 +lo : 1982.6 11.112 +fit: 1982.9 12.374 +hi : 1982.9 13.6004 +lo : 1982.9 11.1476 +fit: 1983.2 12.392 +hi : 1983.2 13.6013 +lo : 1983.2 11.1827 +fit: 1983.5 12.41 +hi : 1983.5 13.6027 +lo : 1983.5 11.2173 +fit: 1983.8 12.428 +hi : 1983.8 13.6046 +lo : 1983.8 11.2514 +fit: 1984.1 12.446 +hi : 1984.1 13.6071 +lo : 1984.1 11.2849 +fit: 1984.4 12.464 +hi : 1984.4 13.6101 +lo : 1984.4 11.3179 +fit: 1984.7 12.482 +hi : 1984.7 13.6138 +lo : 1984.7 11.3502 +fit: 1985 12.5 +hi : 1985 13.618 +lo : 1985 11.382 +fit: 1985.3 12.518 +hi : 1985.3 13.6229 +lo : 1985.3 11.4131 +fit: 1985.6 12.536 +hi : 1985.6 13.6285 +lo : 1985.6 11.4435 +fit: 1985.9 12.554 +hi : 1985.9 13.6348 +lo : 1985.9 11.4732 +fit: 1986.2 12.572 +hi : 1986.2 13.6418 +lo : 1986.2 11.5022 +fit: 1986.5 12.59 +hi : 1986.5 13.6495 +lo : 1986.5 11.5305 +fit: 1986.8 12.608 +hi : 1986.8 13.658 +lo : 1986.8 11.558 +fit: 1987.1 12.626 +hi : 1987.1 13.6672 +lo : 1987.1 11.5848 +fit: 1987.4 12.644 +hi : 1987.4 13.6772 +lo : 1987.4 11.6108 +fit: 1987.7 12.662 +hi : 1987.7 13.6881 +lo : 1987.7 11.6359 +fit: 1988 12.68 +hi : 1988 13.6998 +lo : 1988 11.6602 +fit: 1988.3 12.698 +hi : 1988.3 13.7123 +lo : 1988.3 11.6837 +fit: 1988.6 12.716 +hi : 1988.6 13.7258 +lo : 1988.6 11.7062 +fit: 1988.9 12.734 +hi : 1988.9 13.74 +lo : 1988.9 11.728 +fit: 1989.2 12.752 +hi : 1989.2 13.7552 +lo : 1989.2 11.7488 +fit: 1989.5 12.77 +hi : 1989.5 13.7712 +lo : 1989.5 11.7688 +fit: 1989.8 12.788 +hi : 1989.8 13.7882 +lo : 1989.8 11.7878 +fit: 1990.1 12.806 +hi : 1990.1 13.806 +lo : 1990.1 11.806 +fit: 1990.4 12.824 +hi : 1990.4 13.8248 +lo : 1990.4 11.8232 +fit: 1990.7 12.842 +hi : 1990.7 13.8444 +lo : 1990.7 11.8396 +fit: 1991 12.86 +hi : 1991 13.865 +lo : 1991 11.855 +fit: 1991.3 12.878 +hi : 1991.3 13.8864 +lo : 1991.3 11.8696 +fit: 1991.6 12.896 +hi : 1991.6 13.9087 +lo : 1991.6 11.8833 +fit: 1991.9 12.914 +hi : 1991.9 13.9319 +lo : 1991.9 11.8961 +fit: 1992.2 12.932 +hi : 1992.2 13.9559 +lo : 1992.2 11.9081 +fit: 1992.5 12.95 +hi : 1992.5 13.9808 +lo : 1992.5 11.9192 +fit: 1992.8 12.968 +hi : 1992.8 14.0065 +lo : 1992.8 11.9295 +fit: 1993.1 12.986 +hi : 1993.1 14.0329 +lo : 1993.1 11.9391 +fit: 1993.4 13.004 +hi : 1993.4 14.0602 +lo : 1993.4 11.9478 +fit: 1993.7 13.022 +hi : 1993.7 14.0883 +lo : 1993.7 11.9557 +fit: 1994 13.04 +hi : 1994 14.117 +lo : 1994 11.963 +fit: 1994.3 13.058 +hi : 1994.3 14.1465 +lo : 1994.3 11.9695 +fit: 1994.6 13.076 +hi : 1994.6 14.1767 +lo : 1994.6 11.9753 +fit: 1994.9 13.094 +hi : 1994.9 14.2076 +lo : 1994.9 11.9804 +fit: 1995.2 13.112 +hi : 1995.2 14.2391 +lo : 1995.2 11.9849 +fit: 1995.5 13.13 +hi : 1995.5 14.2713 +lo : 1995.5 11.9887 +fit: 1995.8 13.148 +hi : 1995.8 14.304 +lo : 1995.8 11.992 +fit: 1996.1 13.166 +hi : 1996.1 14.3374 +lo : 1996.1 11.9946 +fit: 1996.4 13.184 +hi : 1996.4 14.3713 +lo : 1996.4 11.9967 +fit: 1996.7 13.202 +hi : 1996.7 14.4057 +lo : 1996.7 11.9983 +fit: 1997 13.22 +hi : 1997 14.4407 +lo : 1997 11.9993 +fit: 1997.3 13.238 +hi : 1997.3 14.4761 +lo : 1997.3 11.9999 +fit: 1997.6 13.256 +hi : 1997.6 14.512 +lo : 1997.6 12 +fit: 1997.9 13.274 +hi : 1997.9 14.5484 +lo : 1997.9 11.9996 +fit: 1998.2 13.292 +hi : 1998.2 14.5852 +lo : 1998.2 11.9988 +fit: 1998.5 13.31 +hi : 1998.5 14.6224 +lo : 1998.5 11.9976 +fit: 1998.8 13.328 +hi : 1998.8 14.6601 +lo : 1998.8 11.9959 +fit: 1999.1 13.346 +hi : 1999.1 14.6981 +lo : 1999.1 11.9939 +fit: 1999.4 13.364 +hi : 1999.4 14.7364 +lo : 1999.4 11.9916 +fit: 1999.7 13.382 +hi : 1999.7 14.7752 +lo : 1999.7 11.9888 +fit: 2000 13.4 +hi : 2000 14.8142 +lo : 2000 11.9858 +fit: 2000.3 13.418 +hi : 2000.3 14.8536 +lo : 2000.3 11.9824 +fit: 2000.6 13.436 +hi : 2000.6 14.8933 +lo : 2000.6 11.9787 +fit: 2000.9 13.454 +hi : 2000.9 14.9332 +lo : 2000.9 11.9748 +fit: 2001.2 13.472 +hi : 2001.2 14.9735 +lo : 2001.2 11.9705 +fit: 2001.5 13.49 +hi : 2001.5 15.014 +lo : 2001.5 11.966 +fit: 2001.8 13.508 +hi : 2001.8 15.0547 +lo : 2001.8 11.9613 +fit: 2002.1 13.526 +hi : 2002.1 15.0957 +lo : 2002.1 11.9563 +fit: 2002.4 13.544 +hi : 2002.4 15.137 +lo : 2002.4 11.951 +fit: 2002.7 13.562 +hi : 2002.7 15.1784 +lo : 2002.7 11.9456 +fit: 2003 13.58 +hi : 2003 15.2201 +lo : 2003 11.9399 +fit: 2003.3 13.598 +hi : 2003.3 15.262 +lo : 2003.3 11.934 +fit: 2003.6 13.616 +hi : 2003.6 15.3041 +lo : 2003.6 11.9279 +fit: 2003.9 13.634 +hi : 2003.9 15.3463 +lo : 2003.9 11.9217 +fit: 2004.2 13.652 +hi : 2004.2 15.3888 +lo : 2004.2 11.9152 +fit: 2004.5 13.67 +hi : 2004.5 15.4314 +lo : 2004.5 11.9086 +fit: 2004.8 13.688 +hi : 2004.8 15.4742 +lo : 2004.8 11.9018 +fit: 2005.1 13.706 +hi : 2005.1 15.5171 +lo : 2005.1 11.8949 +fit: 2005.4 13.724 +hi : 2005.4 15.5602 +lo : 2005.4 11.8878 +fit: 2005.7 13.742 +hi : 2005.7 15.6034 +lo : 2005.7 11.8806 +fit: 2006 13.76 +hi : 2006 15.6468 +lo : 2006 11.8732 +fit: 2006.3 13.778 +hi : 2006.3 15.6903 +lo : 2006.3 11.8657 +fit: 2006.6 13.796 +hi : 2006.6 15.7339 +lo : 2006.6 11.8581 +fit: 2006.9 13.814 +hi : 2006.9 15.7777 +lo : 2006.9 11.8503 +fit: 2007.2 13.832 +hi : 2007.2 15.8216 +lo : 2007.2 11.8424 +fit: 2007.5 13.85 +hi : 2007.5 15.8656 +lo : 2007.5 11.8344 +fit: 2007.8 13.868 +hi : 2007.8 15.9097 +lo : 2007.8 11.8263 +fit: 2008.1 13.886 +hi : 2008.1 15.9539 +lo : 2008.1 11.8181 +fit: 2008.4 13.904 +hi : 2008.4 15.9982 +lo : 2008.4 11.8098 +fit: 2008.7 13.922 +hi : 2008.7 16.0426 +lo : 2008.7 11.8014 diff --git a/gsl-2.5/doc/examples/fitting2 b/gsl-2.5/doc/examples/fitting2 new file mode 100755 index 00000000..7a64413f --- /dev/null +++ b/gsl-2.5/doc/examples/fitting2 @@ -0,0 +1,228 @@ +#! /bin/sh + +# fitting2 - temporary wrapper script for .libs/fitting2 +# Generated by libtool (GNU libtool) 2.4.2 +# +# The fitting2 program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s/\([`"$\\]\)/\\\1/g' + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command="(cd /home/groups/kipac/chto/package/gsl/gsl-2.5/doc/examples; LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LIBRARY_PATH; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; LD_LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/fftw/include:/home/users/chto/lib/fftw/lib:/home/users/chto/lib/healpix/lib:/home/users/chto/lib/namaster/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/include:/home/users/chto/cpp/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LD_LIBRARY_PATH; PATH=/share/software/user/open/curl/7.54.0/bin:/share/software/user/open/libressl/2.5.3/bin:/home/users/chto/lib/cfitsio:/home/users/chto/lib/cfitsio/include:/home/users/chto/lib:/home/users/chto/bin/bin:/home/users/chto/bin:/home/users/chto/.texlive/bin/x86_64-linux:/home/groups/kipac/chto/anaconda2/envs/newenv3/bin:/home/users/chto/.local/bin/include:/home/users/chto/.local/bin/lib:/home/users/chto/.local/bin:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/bin64:/share/software/user/open/fftw/3.3.6/bin:/home/groups/kipac/chto/anaconda2/condabin:/share/software/user/restricted/ifort/2019/bin:/share/software/user/open/gsl/2.3/bin:/share/software/user/srcc/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/dell/srvadmin/bin:/opt/dell/srvadmin/iSM/bin:/home/users/chto/bin; export PATH; gcc -g -O2 -o \$progdir/\$file fitting2.o ../../.libs/libgsl.so ../../cblas/.libs/libgslcblas.so -lm -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/.libs -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/cblas/.libs -Wl,-rpath -Wl,/usr/local/lib)" + +# This environment variable determines our operation mode. +if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then + # install mode needs the following variables: + generated_by_libtool_version='2.4.2' + notinst_deplibs=' ../../libgsl.la ../../cblas/libgslcblas.la' +else + # When we are sourced in execute mode, $file and $ECHO are already set. + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + file="$0" + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + ECHO="printf %s\\n" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ which is used only on +# windows platforms, and (c) all begin with the string --lt- +# (application programs are unlikely to have options which match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's ../../libtool value, followed by no. +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=$0 + shift + for lt_opt + do + case "$lt_opt" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%/[^/]*$%%'` + test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=. + lt_dump_F=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%^.*/%%'` + cat "$lt_dump_D/$lt_dump_F" + exit 0 + ;; + --lt-*) + $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n "$lt_option_debug"; then + echo "fitting2:fitting2:${LINENO}: libtool wrapper (GNU libtool) 2.4.2" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + $ECHO "fitting2:fitting2:${LINENO}: newargv[$lt_dump_args_N]: $lt_arg" + lt_dump_args_N=`expr $lt_dump_args_N + 1` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ + + if test -n "$lt_option_debug"; then + $ECHO "fitting2:fitting2:${LINENO}: newargv[0]: $progdir/$program" 1>&2 + func_lt_dump_args ${1+"$@"} 1>&2 + fi + exec "$progdir/$program" ${1+"$@"} + + $ECHO "$0: cannot exec $program $*" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from $@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case " $* " in + *\ --lt-*) + for lt_wr_arg + do + case $lt_wr_arg in + --lt-*) ;; + *) set x "$@" "$lt_wr_arg"; shift;; + esac + shift + done ;; + esac + func_exec_program_core ${1+"$@"} +} + + # Parse options + func_parse_lt_options "$0" ${1+"$@"} + + # Find the directory that this script lives in. + thisdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + test "x$thisdir" = "x$file" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=`ls -ld "$file" | /usr/bin/sed -n 's/.*-> //p'` + while test -n "$file"; do + destdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + + # If there was a directory component, then change thisdir. + if test "x$destdir" != "x$file"; then + case "$destdir" in + [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;; + *) thisdir="$thisdir/$destdir" ;; + esac + fi + + file=`$ECHO "$file" | /usr/bin/sed 's%^.*/%%'` + file=`ls -ld "$thisdir/$file" | /usr/bin/sed -n 's/.*-> //p'` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no + if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then + # special case for '.' + if test "$thisdir" = "."; then + thisdir=`pwd` + fi + # remove .libs from thisdir + case "$thisdir" in + *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /usr/bin/sed 's%[\\/][^\\/]*$%%'` ;; + .libs ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=`cd "$thisdir" && pwd` + test -n "$absdir" && thisdir="$absdir" + + program=lt-'fitting2' + progdir="$thisdir/.libs" + + if test ! -f "$progdir/$program" || + { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /usr/bin/sed 1q`; \ + test "X$file" != "X$progdir/$program"; }; then + + file="$$-$program" + + if test ! -d "$progdir"; then + mkdir "$progdir" + else + rm -f "$progdir/$file" + fi + + # relink executable if necessary + if test -n "$relink_command"; then + if relink_command_output=`eval $relink_command 2>&1`; then : + else + printf %s\n "$relink_command_output" >&2 + rm -f "$progdir/$file" + exit 1 + fi + fi + + mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null || + { rm -f "$progdir/$program"; + mv -f "$progdir/$file" "$progdir/$program"; } + rm -f "$progdir/$file" + fi + + if test -f "$progdir/$program"; then + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + # Run the actual program with our arguments. + func_exec_program ${1+"$@"} + fi + else + # The program doesn't exist. + $ECHO "$0: error: \`$progdir/$program' does not exist" 1>&2 + $ECHO "This script is just a wrapper for $program." 1>&2 + $ECHO "See the libtool documentation for more information." 1>&2 + exit 1 + fi +fi diff --git a/gsl-2.5/doc/examples/fitting2.c b/gsl-2.5/doc/examples/fitting2.c new file mode 100644 index 00000000..43f8c067 --- /dev/null +++ b/gsl-2.5/doc/examples/fitting2.c @@ -0,0 +1,80 @@ +#include +#include + +int +main (int argc, char **argv) +{ + int i, n; + double xi, yi, ei, chisq; + gsl_matrix *X, *cov; + gsl_vector *y, *w, *c; + + if (argc != 2) + { + fprintf (stderr,"usage: fit n < data\n"); + exit (-1); + } + + n = atoi (argv[1]); + + X = gsl_matrix_alloc (n, 3); + y = gsl_vector_alloc (n); + w = gsl_vector_alloc (n); + + c = gsl_vector_alloc (3); + cov = gsl_matrix_alloc (3, 3); + + for (i = 0; i < n; i++) + { + int count = fscanf (stdin, "%lg %lg %lg", + &xi, &yi, &ei); + + if (count != 3) + { + fprintf (stderr, "error reading file\n"); + exit (-1); + } + + printf ("%g %g +/- %g\n", xi, yi, ei); + + gsl_matrix_set (X, i, 0, 1.0); + gsl_matrix_set (X, i, 1, xi); + gsl_matrix_set (X, i, 2, xi*xi); + + gsl_vector_set (y, i, yi); + gsl_vector_set (w, i, 1.0/(ei*ei)); + } + + { + gsl_multifit_linear_workspace * work + = gsl_multifit_linear_alloc (n, 3); + gsl_multifit_wlinear (X, w, y, c, cov, + &chisq, work); + gsl_multifit_linear_free (work); + } + +#define C(i) (gsl_vector_get(c,(i))) +#define COV(i,j) (gsl_matrix_get(cov,(i),(j))) + + { + printf ("# best fit: Y = %g + %g X + %g X^2\n", + C(0), C(1), C(2)); + + printf ("# covariance matrix:\n"); + printf ("[ %+.5e, %+.5e, %+.5e \n", + COV(0,0), COV(0,1), COV(0,2)); + printf (" %+.5e, %+.5e, %+.5e \n", + COV(1,0), COV(1,1), COV(1,2)); + printf (" %+.5e, %+.5e, %+.5e ]\n", + COV(2,0), COV(2,1), COV(2,2)); + printf ("# chisq = %g\n", chisq); + } + + gsl_matrix_free (X); + gsl_vector_free (y); + gsl_vector_free (w); + gsl_vector_free (c); + gsl_matrix_free (cov); + + return 0; +} diff --git a/gsl-2.5/doc/examples/fitting2.txt b/gsl-2.5/doc/examples/fitting2.txt new file mode 100644 index 00000000..1e29597e --- /dev/null +++ b/gsl-2.5/doc/examples/fitting2.txt @@ -0,0 +1,25 @@ +0.1 0.97935 +/- 0.110517 +0.2 1.3359 +/- 0.12214 +0.3 1.52573 +/- 0.134986 +0.4 1.60318 +/- 0.149182 +0.5 1.81731 +/- 0.164872 +0.6 1.92475 +/- 0.182212 +0.7 1.93249 +/- 0.201375 +0.8 2.5107 +/- 0.222554 +0.9 2.45078 +/- 0.24596 +1 2.24949 +/- 0.271828 +1.1 3.08955 +/- 0.300417 +1.2 3.82315 +/- 0.332012 +1.3 4.26766 +/- 0.36693 +1.4 3.2597 +/- 0.40552 +1.5 4.98914 +/- 0.448169 +1.6 4.14527 +/- 0.495303 +1.7 5.22382 +/- 0.547395 +1.8 6.3838 +/- 0.604965 +1.9 6.00277 +/- 0.668589 +# best fit: Y = 1.02318 + 0.956201 X + 0.876796 X^2 +# covariance matrix: +[ +1.25612e-02, -3.64387e-02, +1.94389e-02 + -3.64387e-02, +1.42339e-01, -8.48761e-02 + +1.94389e-02, -8.48761e-02, +5.60243e-02 ] +# chisq = 23.0987 diff --git a/gsl-2.5/doc/examples/fitting3 b/gsl-2.5/doc/examples/fitting3 new file mode 100755 index 00000000..22afcfac --- /dev/null +++ b/gsl-2.5/doc/examples/fitting3 @@ -0,0 +1,228 @@ +#! /bin/sh + +# fitting3 - temporary wrapper script for .libs/fitting3 +# Generated by libtool (GNU libtool) 2.4.2 +# +# The fitting3 program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s/\([`"$\\]\)/\\\1/g' + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command="(cd /home/groups/kipac/chto/package/gsl/gsl-2.5/doc/examples; LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LIBRARY_PATH; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; LD_LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/fftw/include:/home/users/chto/lib/fftw/lib:/home/users/chto/lib/healpix/lib:/home/users/chto/lib/namaster/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/include:/home/users/chto/cpp/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LD_LIBRARY_PATH; PATH=/share/software/user/open/curl/7.54.0/bin:/share/software/user/open/libressl/2.5.3/bin:/home/users/chto/lib/cfitsio:/home/users/chto/lib/cfitsio/include:/home/users/chto/lib:/home/users/chto/bin/bin:/home/users/chto/bin:/home/users/chto/.texlive/bin/x86_64-linux:/home/groups/kipac/chto/anaconda2/envs/newenv3/bin:/home/users/chto/.local/bin/include:/home/users/chto/.local/bin/lib:/home/users/chto/.local/bin:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/bin64:/share/software/user/open/fftw/3.3.6/bin:/home/groups/kipac/chto/anaconda2/condabin:/share/software/user/restricted/ifort/2019/bin:/share/software/user/open/gsl/2.3/bin:/share/software/user/srcc/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/dell/srvadmin/bin:/opt/dell/srvadmin/iSM/bin:/home/users/chto/bin; export PATH; gcc -g -O2 -o \$progdir/\$file fitting3.o ../../.libs/libgsl.so ../../cblas/.libs/libgslcblas.so -lm -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/.libs -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/cblas/.libs -Wl,-rpath -Wl,/usr/local/lib)" + +# This environment variable determines our operation mode. +if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then + # install mode needs the following variables: + generated_by_libtool_version='2.4.2' + notinst_deplibs=' ../../libgsl.la ../../cblas/libgslcblas.la' +else + # When we are sourced in execute mode, $file and $ECHO are already set. + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + file="$0" + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + ECHO="printf %s\\n" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ which is used only on +# windows platforms, and (c) all begin with the string --lt- +# (application programs are unlikely to have options which match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's ../../libtool value, followed by no. +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=$0 + shift + for lt_opt + do + case "$lt_opt" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%/[^/]*$%%'` + test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=. + lt_dump_F=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%^.*/%%'` + cat "$lt_dump_D/$lt_dump_F" + exit 0 + ;; + --lt-*) + $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n "$lt_option_debug"; then + echo "fitting3:fitting3:${LINENO}: libtool wrapper (GNU libtool) 2.4.2" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + $ECHO "fitting3:fitting3:${LINENO}: newargv[$lt_dump_args_N]: $lt_arg" + lt_dump_args_N=`expr $lt_dump_args_N + 1` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ + + if test -n "$lt_option_debug"; then + $ECHO "fitting3:fitting3:${LINENO}: newargv[0]: $progdir/$program" 1>&2 + func_lt_dump_args ${1+"$@"} 1>&2 + fi + exec "$progdir/$program" ${1+"$@"} + + $ECHO "$0: cannot exec $program $*" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from $@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case " $* " in + *\ --lt-*) + for lt_wr_arg + do + case $lt_wr_arg in + --lt-*) ;; + *) set x "$@" "$lt_wr_arg"; shift;; + esac + shift + done ;; + esac + func_exec_program_core ${1+"$@"} +} + + # Parse options + func_parse_lt_options "$0" ${1+"$@"} + + # Find the directory that this script lives in. + thisdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + test "x$thisdir" = "x$file" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=`ls -ld "$file" | /usr/bin/sed -n 's/.*-> //p'` + while test -n "$file"; do + destdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + + # If there was a directory component, then change thisdir. + if test "x$destdir" != "x$file"; then + case "$destdir" in + [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;; + *) thisdir="$thisdir/$destdir" ;; + esac + fi + + file=`$ECHO "$file" | /usr/bin/sed 's%^.*/%%'` + file=`ls -ld "$thisdir/$file" | /usr/bin/sed -n 's/.*-> //p'` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no + if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then + # special case for '.' + if test "$thisdir" = "."; then + thisdir=`pwd` + fi + # remove .libs from thisdir + case "$thisdir" in + *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /usr/bin/sed 's%[\\/][^\\/]*$%%'` ;; + .libs ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=`cd "$thisdir" && pwd` + test -n "$absdir" && thisdir="$absdir" + + program=lt-'fitting3' + progdir="$thisdir/.libs" + + if test ! -f "$progdir/$program" || + { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /usr/bin/sed 1q`; \ + test "X$file" != "X$progdir/$program"; }; then + + file="$$-$program" + + if test ! -d "$progdir"; then + mkdir "$progdir" + else + rm -f "$progdir/$file" + fi + + # relink executable if necessary + if test -n "$relink_command"; then + if relink_command_output=`eval $relink_command 2>&1`; then : + else + printf %s\n "$relink_command_output" >&2 + rm -f "$progdir/$file" + exit 1 + fi + fi + + mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null || + { rm -f "$progdir/$program"; + mv -f "$progdir/$file" "$progdir/$program"; } + rm -f "$progdir/$file" + fi + + if test -f "$progdir/$program"; then + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + # Run the actual program with our arguments. + func_exec_program ${1+"$@"} + fi + else + # The program doesn't exist. + $ECHO "$0: error: \`$progdir/$program' does not exist" 1>&2 + $ECHO "This script is just a wrapper for $program." 1>&2 + $ECHO "See the libtool documentation for more information." 1>&2 + exit 1 + fi +fi diff --git a/gsl-2.5/doc/examples/fitting3.c b/gsl-2.5/doc/examples/fitting3.c new file mode 100644 index 00000000..a3f1e328 --- /dev/null +++ b/gsl-2.5/doc/examples/fitting3.c @@ -0,0 +1,29 @@ +#include +#include +#include + +int +main (void) +{ + double x; + const gsl_rng_type * T; + gsl_rng * r; + + gsl_rng_env_setup (); + + T = gsl_rng_default; + r = gsl_rng_alloc (T); + + for (x = 0.1; x < 2; x+= 0.1) + { + double y0 = exp (x); + double sigma = 0.1 * y0; + double dy = gsl_ran_gaussian (r, sigma); + + printf ("%g %g %g\n", x, y0 + dy, sigma); + } + + gsl_rng_free(r); + + return 0; +} diff --git a/gsl-2.5/doc/examples/gaussfilt b/gsl-2.5/doc/examples/gaussfilt new file mode 100755 index 00000000..925934d6 --- /dev/null +++ b/gsl-2.5/doc/examples/gaussfilt @@ -0,0 +1,228 @@ +#! /bin/sh + +# gaussfilt - temporary wrapper script for .libs/gaussfilt +# Generated by libtool (GNU libtool) 2.4.2 +# +# The gaussfilt program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s/\([`"$\\]\)/\\\1/g' + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command="(cd /home/groups/kipac/chto/package/gsl/gsl-2.5/doc/examples; LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LIBRARY_PATH; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; LD_LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/fftw/include:/home/users/chto/lib/fftw/lib:/home/users/chto/lib/healpix/lib:/home/users/chto/lib/namaster/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/include:/home/users/chto/cpp/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LD_LIBRARY_PATH; PATH=/share/software/user/open/curl/7.54.0/bin:/share/software/user/open/libressl/2.5.3/bin:/home/users/chto/lib/cfitsio:/home/users/chto/lib/cfitsio/include:/home/users/chto/lib:/home/users/chto/bin/bin:/home/users/chto/bin:/home/users/chto/.texlive/bin/x86_64-linux:/home/groups/kipac/chto/anaconda2/envs/newenv3/bin:/home/users/chto/.local/bin/include:/home/users/chto/.local/bin/lib:/home/users/chto/.local/bin:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/bin64:/share/software/user/open/fftw/3.3.6/bin:/home/groups/kipac/chto/anaconda2/condabin:/share/software/user/restricted/ifort/2019/bin:/share/software/user/open/gsl/2.3/bin:/share/software/user/srcc/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/dell/srvadmin/bin:/opt/dell/srvadmin/iSM/bin:/home/users/chto/bin; export PATH; gcc -g -O2 -o \$progdir/\$file gaussfilt.o ../../.libs/libgsl.so ../../cblas/.libs/libgslcblas.so -lm -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/.libs -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/cblas/.libs -Wl,-rpath -Wl,/usr/local/lib)" + +# This environment variable determines our operation mode. +if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then + # install mode needs the following variables: + generated_by_libtool_version='2.4.2' + notinst_deplibs=' ../../libgsl.la ../../cblas/libgslcblas.la' +else + # When we are sourced in execute mode, $file and $ECHO are already set. + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + file="$0" + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + ECHO="printf %s\\n" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ which is used only on +# windows platforms, and (c) all begin with the string --lt- +# (application programs are unlikely to have options which match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's ../../libtool value, followed by no. +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=$0 + shift + for lt_opt + do + case "$lt_opt" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%/[^/]*$%%'` + test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=. + lt_dump_F=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%^.*/%%'` + cat "$lt_dump_D/$lt_dump_F" + exit 0 + ;; + --lt-*) + $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n "$lt_option_debug"; then + echo "gaussfilt:gaussfilt:${LINENO}: libtool wrapper (GNU libtool) 2.4.2" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + $ECHO "gaussfilt:gaussfilt:${LINENO}: newargv[$lt_dump_args_N]: $lt_arg" + lt_dump_args_N=`expr $lt_dump_args_N + 1` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ + + if test -n "$lt_option_debug"; then + $ECHO "gaussfilt:gaussfilt:${LINENO}: newargv[0]: $progdir/$program" 1>&2 + func_lt_dump_args ${1+"$@"} 1>&2 + fi + exec "$progdir/$program" ${1+"$@"} + + $ECHO "$0: cannot exec $program $*" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from $@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case " $* " in + *\ --lt-*) + for lt_wr_arg + do + case $lt_wr_arg in + --lt-*) ;; + *) set x "$@" "$lt_wr_arg"; shift;; + esac + shift + done ;; + esac + func_exec_program_core ${1+"$@"} +} + + # Parse options + func_parse_lt_options "$0" ${1+"$@"} + + # Find the directory that this script lives in. + thisdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + test "x$thisdir" = "x$file" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=`ls -ld "$file" | /usr/bin/sed -n 's/.*-> //p'` + while test -n "$file"; do + destdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + + # If there was a directory component, then change thisdir. + if test "x$destdir" != "x$file"; then + case "$destdir" in + [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;; + *) thisdir="$thisdir/$destdir" ;; + esac + fi + + file=`$ECHO "$file" | /usr/bin/sed 's%^.*/%%'` + file=`ls -ld "$thisdir/$file" | /usr/bin/sed -n 's/.*-> //p'` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no + if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then + # special case for '.' + if test "$thisdir" = "."; then + thisdir=`pwd` + fi + # remove .libs from thisdir + case "$thisdir" in + *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /usr/bin/sed 's%[\\/][^\\/]*$%%'` ;; + .libs ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=`cd "$thisdir" && pwd` + test -n "$absdir" && thisdir="$absdir" + + program=lt-'gaussfilt' + progdir="$thisdir/.libs" + + if test ! -f "$progdir/$program" || + { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /usr/bin/sed 1q`; \ + test "X$file" != "X$progdir/$program"; }; then + + file="$$-$program" + + if test ! -d "$progdir"; then + mkdir "$progdir" + else + rm -f "$progdir/$file" + fi + + # relink executable if necessary + if test -n "$relink_command"; then + if relink_command_output=`eval $relink_command 2>&1`; then : + else + printf %s\n "$relink_command_output" >&2 + rm -f "$progdir/$file" + exit 1 + fi + fi + + mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null || + { rm -f "$progdir/$program"; + mv -f "$progdir/$file" "$progdir/$program"; } + rm -f "$progdir/$file" + fi + + if test -f "$progdir/$program"; then + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + # Run the actual program with our arguments. + func_exec_program ${1+"$@"} + fi + else + # The program doesn't exist. + $ECHO "$0: error: \`$progdir/$program' does not exist" 1>&2 + $ECHO "This script is just a wrapper for $program." 1>&2 + $ECHO "See the libtool documentation for more information." 1>&2 + exit 1 + fi +fi diff --git a/gsl-2.5/doc/examples/gaussfilt.c b/gsl-2.5/doc/examples/gaussfilt.c new file mode 100644 index 00000000..a4a1a28c --- /dev/null +++ b/gsl-2.5/doc/examples/gaussfilt.c @@ -0,0 +1,80 @@ +#include +#include + +#include +#include +#include +#include +#include + +int +main(void) +{ + const size_t N = 500; /* length of time series */ + const size_t K = 51; /* window size */ + const double alpha[3] = { 0.5, 3.0, 10.0 }; /* alpha values */ + gsl_vector *x = gsl_vector_alloc(N); /* input vector */ + gsl_vector *y1 = gsl_vector_alloc(N); /* filtered output vector for alpha1 */ + gsl_vector *y2 = gsl_vector_alloc(N); /* filtered output vector for alpha2 */ + gsl_vector *y3 = gsl_vector_alloc(N); /* filtered output vector for alpha3 */ + gsl_vector *k1 = gsl_vector_alloc(K); /* Gaussian kernel for alpha1 */ + gsl_vector *k2 = gsl_vector_alloc(K); /* Gaussian kernel for alpha2 */ + gsl_vector *k3 = gsl_vector_alloc(K); /* Gaussian kernel for alpha3 */ + gsl_rng *r = gsl_rng_alloc(gsl_rng_default); + gsl_filter_gaussian_workspace *gauss_p = gsl_filter_gaussian_alloc(K); + size_t i; + double sum = 0.0; + + /* generate input signal */ + for (i = 0; i < N; ++i) + { + double ui = gsl_ran_gaussian(r, 1.0); + sum += ui; + gsl_vector_set(x, i, sum); + } + + /* compute kernels without normalization */ + gsl_filter_gaussian_kernel(alpha[0], 0, 0, k1); + gsl_filter_gaussian_kernel(alpha[1], 0, 0, k2); + gsl_filter_gaussian_kernel(alpha[2], 0, 0, k3); + + /* apply filters */ + gsl_filter_gaussian(GSL_FILTER_END_PADVALUE, alpha[0], 0, x, y1, gauss_p); + gsl_filter_gaussian(GSL_FILTER_END_PADVALUE, alpha[1], 0, x, y2, gauss_p); + gsl_filter_gaussian(GSL_FILTER_END_PADVALUE, alpha[2], 0, x, y3, gauss_p); + + /* print kernels */ + for (i = 0; i < K; ++i) + { + double k1i = gsl_vector_get(k1, i); + double k2i = gsl_vector_get(k2, i); + double k3i = gsl_vector_get(k3, i); + + printf("%e %e %e\n", k1i, k2i, k3i); + } + + printf("\n\n"); + + /* print filter results */ + for (i = 0; i < N; ++i) + { + double xi = gsl_vector_get(x, i); + double y1i = gsl_vector_get(y1, i); + double y2i = gsl_vector_get(y2, i); + double y3i = gsl_vector_get(y3, i); + + printf("%.12e %.12e %.12e %.12e\n", xi, y1i, y2i, y3i); + } + + gsl_vector_free(x); + gsl_vector_free(y1); + gsl_vector_free(y2); + gsl_vector_free(y3); + gsl_vector_free(k1); + gsl_vector_free(k2); + gsl_vector_free(k3); + gsl_rng_free(r); + gsl_filter_gaussian_free(gauss_p); + + return 0; +} diff --git a/gsl-2.5/doc/examples/gaussfilt.txt b/gsl-2.5/doc/examples/gaussfilt.txt new file mode 100644 index 00000000..6f236492 --- /dev/null +++ b/gsl-2.5/doc/examples/gaussfilt.txt @@ -0,0 +1,553 @@ +8.824969e-01 1.110900e-02 1.928750e-22 +8.911879e-01 1.580862e-02 9.720985e-21 +8.996046e-01 2.217477e-02 4.175010e-19 +9.077375e-01 3.065989e-02 1.527980e-17 +9.155777e-01 4.178575e-02 4.765305e-16 +9.231163e-01 5.613476e-02 1.266417e-14 +9.303448e-01 7.433302e-02 2.867975e-13 +9.372549e-01 9.702370e-02 5.534610e-12 +9.438387e-01 1.248303e-01 9.101471e-11 +9.500886e-01 1.583100e-01 1.275408e-09 +9.559975e-01 1.978987e-01 1.522998e-08 +9.615584e-01 2.438505e-01 1.549753e-07 +9.667648e-01 2.961764e-01 1.343812e-06 +9.716108e-01 3.545875e-01 9.929504e-06 +9.760905e-01 4.184491e-01 6.252150e-05 +9.801987e-01 4.867523e-01 3.354626e-04 +9.839305e-01 5.581096e-01 1.533811e-03 +9.872816e-01 6.307788e-01 5.976023e-03 +9.902479e-01 7.027177e-01 1.984109e-02 +9.928259e-01 7.716687e-01 5.613476e-02 +9.950125e-01 8.352702e-01 1.353353e-01 +9.968051e-01 8.911879e-01 2.780373e-01 +9.982016e-01 9.372549e-01 4.867523e-01 +9.992003e-01 9.716108e-01 7.261490e-01 +9.998000e-01 9.928259e-01 9.231163e-01 +1.000000e+00 1.000000e+00 1.000000e+00 +9.998000e-01 9.928259e-01 9.231163e-01 +9.992003e-01 9.716108e-01 7.261490e-01 +9.982016e-01 9.372549e-01 4.867523e-01 +9.968051e-01 8.911879e-01 2.780373e-01 +9.950125e-01 8.352702e-01 1.353353e-01 +9.928259e-01 7.716687e-01 5.613476e-02 +9.902479e-01 7.027177e-01 1.984109e-02 +9.872816e-01 6.307788e-01 5.976023e-03 +9.839305e-01 5.581096e-01 1.533811e-03 +9.801987e-01 4.867523e-01 3.354626e-04 +9.760905e-01 4.184491e-01 6.252150e-05 +9.716108e-01 3.545875e-01 9.929504e-06 +9.667648e-01 2.961764e-01 1.343812e-06 +9.615584e-01 2.438505e-01 1.549753e-07 +9.559975e-01 1.978987e-01 1.522998e-08 +9.500886e-01 1.583100e-01 1.275408e-09 +9.438387e-01 1.248303e-01 9.101471e-11 +9.372549e-01 9.702370e-02 5.534610e-12 +9.303448e-01 7.433302e-02 2.867975e-13 +9.231163e-01 5.613476e-02 1.266417e-14 +9.155777e-01 4.178575e-02 4.765305e-16 +9.077375e-01 3.065989e-02 1.527980e-17 +8.996046e-01 2.217477e-02 4.175010e-19 +8.911879e-01 1.580862e-02 9.720985e-21 +8.824969e-01 1.110900e-02 1.928750e-22 + + +1.339186081187e-01 -6.070493125425e-01 2.239349873726e-01 6.686289175208e-01 +4.581761628724e-02 -7.086638672628e-01 1.775996159801e-01 9.498404054028e-01 +1.720226022541e+00 -8.245219701383e-01 1.161862442933e-01 1.209594922857e+00 +2.453867129834e+00 -9.437690360386e-01 3.872998648548e-02 1.351442163044e+00 +3.451391761436e+00 -1.037140782454e+00 -5.478716622101e-02 1.299949983543e+00 +2.173889680433e+00 -1.134703560609e+00 -1.654348363323e-01 1.045266677505e+00 +-2.228256023004e-01 -1.237437128405e+00 -2.933055042800e-01 6.508268378924e-01 +-9.021057670296e-01 -1.343138636054e+00 -4.380236339223e-01 2.147792705380e-01 +-9.411970854632e-01 -1.495222756662e+00 -6.001690829276e-01 -1.854328314680e-01 +-4.764153994235e-02 -1.637749130671e+00 -7.775792833451e-01 -5.226678353009e-01 +-6.528933453213e-02 -1.781637748222e+00 -9.692755572326e-01 -8.079987482231e-01 +-1.361846243309e+00 -1.930273603246e+00 -1.173943753038e+00 -1.059689373754e+00 +-2.029826749318e+00 -2.066648068805e+00 -1.389558626196e+00 -1.286440780500e+00 +-1.848117971010e+00 -2.175008040515e+00 -1.613846909930e+00 -1.494016029216e+00 +-1.017067180669e+00 -2.290583582906e+00 -1.845754527356e+00 -1.697215318882e+00 +-1.565315652066e+00 -2.384959713176e+00 -2.082648212411e+00 -1.918348654150e+00 +-2.203347154760e+00 -2.446858416322e+00 -2.322078331445e+00 -2.173498714681e+00 +-2.196258623064e+00 -2.521503954927e+00 -2.563057400406e+00 -2.462192827137e+00 +-2.866112317442e+00 -2.607162938195e+00 -2.803638031757e+00 -2.770979816627e+00 +-3.693874648829e+00 -2.655151181545e+00 -3.040504881271e+00 -3.086634323094e+00 +-3.081374618468e+00 -2.718758966857e+00 -3.272803761337e+00 -3.406142807249e+00 +-3.448963028626e+00 -2.750478393504e+00 -3.497203587731e+00 -3.734530573136e+00 +-3.738456437745e+00 -2.756335953060e+00 -3.711414477380e+00 -4.073172482348e+00 +-4.655331108560e+00 -2.767818979076e+00 -3.913829249274e+00 -4.409769737866e+00 +-5.239136567358e+00 -2.783701288416e+00 -4.102120225411e+00 -4.718778051537e+00 +-5.174521277199e+00 -2.775896077214e+00 -4.273137079472e+00 -4.971344371386e+00 +-5.127777417426e+00 -2.771749499910e+00 -4.425034469660e+00 -5.148057294654e+00 +-5.878504396094e+00 -2.765624574186e+00 -4.555274734934e+00 -5.249919972829e+00 +-6.022737083459e+00 -2.773781917316e+00 -4.661710767281e+00 -5.304979107315e+00 +-4.547176286537e+00 -2.783625044889e+00 -4.741511349811e+00 -5.364959037747e+00 +-4.753655261457e+00 -2.807832165868e+00 -4.792752863391e+00 -5.485988392084e+00 +-5.014352540332e+00 -2.782612968365e+00 -4.811954079811e+00 -5.698069331607e+00 +-5.152570512223e+00 -2.712180256119e+00 -4.797773826966e+00 -5.981370354061e+00 +-7.695967729274e+00 -2.614374434295e+00 -4.749480982760e+00 -6.267361770366e+00 +-7.118549192565e+00 -2.542663408959e+00 -4.667584005347e+00 -6.466046922899e+00 +-7.154659055671e+00 -2.489888517259e+00 -4.551654769137e+00 -6.502368813716e+00 +-7.380831623831e+00 -2.429303895362e+00 -4.401280016514e+00 -6.341546197271e+00 +-6.665829406702e+00 -2.345532297905e+00 -4.217093869227e+00 -5.994516323951e+00 +-5.088562520160e+00 -2.258424361803e+00 -4.001301764787e+00 -5.507570520400e+00 +-5.480836381648e+00 -2.198584704729e+00 -3.756984997601e+00 -4.944506401559e+00 +-4.298065525855e+00 -2.121946613049e+00 -3.485733306718e+00 -4.366727459184e+00 +-2.504951838444e+00 -2.026870780451e+00 -3.190592860527e+00 -3.814681444014e+00 +-3.236297805750e+00 -1.891831514730e+00 -2.874612667443e+00 -3.296752260529e+00 +-3.866115487020e+00 -1.743391028298e+00 -2.542182557628e+00 -2.793544189031e+00 +-1.795420916217e+00 -1.592404763057e+00 -2.197620550529e+00 -2.278335052080e+00 +-2.698426923651e+00 -1.401937950089e+00 -1.844128055772e+00 -1.741330088670e+00 +-9.628813860394e-01 -1.236533730909e+00 -1.487212940488e+00 -1.200040761302e+00 +4.202074740873e-01 -1.049765129013e+00 -1.129517538614e+00 -6.884034367950e-01 +4.484083421036e-02 -8.715110105691e-01 -7.753376998318e-01 -2.342840450497e-01 +-2.594693653010e-01 -6.778633924510e-01 -4.274001878315e-01 1.572402469889e-01 +9.941018835254e-01 -4.464764349007e-01 -8.784792874812e-02 5.049173472051e-01 +7.202567042782e-01 -2.086944751338e-01 2.405341182491e-01 8.398393318263e-01 +6.739273228542e-01 8.889531232368e-02 5.578358038596e-01 1.190386144566e+00 +1.472909792962e+00 4.332963423032e-01 8.632897536179e-01 1.569585589700e+00 +2.012865682211e+00 8.129315704827e-01 1.156792027811e+00 1.967176988021e+00 +2.098716021157e+00 1.179350491252e+00 1.438151333358e+00 2.348741017839e+00 +3.454007241898e+00 1.531863328652e+00 1.708760894892e+00 2.664880480298e+00 +3.467858102729e+00 1.895990565284e+00 1.971080864819e+00 2.869868505346e+00 +4.219221797752e+00 2.271693031487e+00 2.227627972813e+00 2.941866135934e+00 +2.644312619546e+00 2.651284464904e+00 2.480818486744e+00 2.892948056943e+00 +2.406934366490e+00 3.009244966425e+00 2.732915144040e+00 2.763821064135e+00 +2.743424959118e+00 3.328452110180e+00 2.986690508853e+00 2.610648935920e+00 +2.663825286326e+00 3.632734628041e+00 3.245723685248e+00 2.494986096332e+00 +2.122953044027e+00 3.914664974200e+00 3.512763958692e+00 2.477296465679e+00 +7.425191012479e-01 4.152355431580e+00 3.789919013923e+00 2.605048966480e+00 +2.459070961522e+00 4.399146955367e+00 4.080485448186e+00 2.893429908871e+00 +2.877182765522e+00 4.616294943171e+00 4.384787931426e+00 3.312090816339e+00 +4.402139352969e+00 4.769934255557e+00 4.702383743835e+00 3.793169674932e+00 +5.088615684241e+00 4.918224077972e+00 5.033816062949e+00 4.259439176601e+00 +4.500059713384e+00 5.076111257795e+00 5.377430946295e+00 4.655714603310e+00 +5.816807622764e+00 5.215954455545e+00 5.729829882331e+00 4.968052556583e+00 +4.983823477935e+00 5.404469976316e+00 6.088995490134e+00 5.228023160031e+00 +5.757783775313e+00 5.562731818754e+00 6.448331936942e+00 5.506599662134e+00 +4.954268368849e+00 5.698564176239e+00 6.802582036849e+00 5.898732757387e+00 +4.868838093827e+00 5.863440496573e+00 7.146870811635e+00 6.495728856143e+00 +6.365035989067e+00 6.043424798965e+00 7.474363914164e+00 7.348029265534e+00 +6.762802782586e+00 6.191841916238e+00 7.777449489628e+00 8.432633291626e+00 +1.010123264945e+01 6.352950446917e+00 8.051046512343e+00 9.644808846243e+00 +1.190216767581e+01 6.550720041773e+00 8.290389862232e+00 1.082422101753e+01 +1.365844628642e+01 6.772724934204e+00 8.491163248720e+00 1.180508189712e+01 +1.432591994604e+01 6.978542246304e+00 8.649637500801e+00 1.246380993813e+01 +1.327575184119e+01 7.169509457143e+00 8.764414632385e+00 1.274100159350e+01 +1.360512237744e+01 7.313063717087e+00 8.834960207243e+00 1.263578554697e+01 +1.406020341590e+01 7.431193356530e+00 8.863725097946e+00 1.218966064086e+01 +1.171319609542e+01 7.528588371676e+00 8.854418593120e+00 1.147545821406e+01 +1.109929685799e+01 7.680510651323e+00 8.814129954974e+00 1.059036812584e+01 +8.937496269310e+00 7.812189184697e+00 8.747491065200e+00 9.641908582205e+00 +7.936153149078e+00 7.918148861272e+00 8.661707504052e+00 8.723567734754e+00 +7.473885520818e+00 8.021989464721e+00 8.565266160831e+00 7.891929519877e+00 +6.656324459441e+00 8.137738548785e+00 8.466507998232e+00 7.162278563485e+00 +6.840716497645e+00 8.319190904972e+00 8.374526204808e+00 6.529035371439e+00 +6.445799521618e+00 8.475297928153e+00 8.294382827562e+00 5.998520795679e+00 +4.776242212647e+00 8.629951358986e+00 8.232825223891e+00 5.609051317510e+00 +3.831094369022e+00 8.743735462308e+00 8.193544042265e+00 5.419864834606e+00 +3.834664362508e+00 8.875947585491e+00 8.181188197081e+00 5.474781859900e+00 +4.990403828916e+00 9.012034602574e+00 8.196888330889e+00 5.769024065149e+00 +6.867835182982e+00 9.158632954484e+00 8.240846824444e+00 6.245942871291e+00 +6.980034113270e+00 9.327721467922e+00 8.312087847142e+00 6.825242436059e+00 +7.161247351020e+00 9.465004518813e+00 8.406620368808e+00 7.440494569726e+00 +8.439551801312e+00 9.621837887281e+00 8.522143484639e+00 8.061453675627e+00 +9.010609576921e+00 9.774011067640e+00 8.653962510208e+00 8.690516332677e+00 +8.539701847907e+00 9.915578391980e+00 8.797853737798e+00 9.336752981588e+00 +9.003060222708e+00 1.007394255366e+01 8.950702393371e+00 9.981551335442e+00 +1.102038532000e+01 1.018739166256e+01 9.107792659510e+00 1.055890825740e+01 +1.317009018593e+01 1.026263804078e+01 9.266685753640e+00 1.097100830688e+01 +1.279900686717e+01 1.031819580454e+01 9.425887705730e+00 1.113620345097e+01 +1.205471585264e+01 1.035213133242e+01 9.584218492408e+00 1.103702868062e+01 +1.077399199324e+01 1.039692041362e+01 9.741976133090e+00 1.073145373239e+01 +9.385327486748e+00 1.045105829917e+01 9.899602371256e+00 1.032027662127e+01 +9.002858899680e+00 1.050215872714e+01 1.005818723768e+01 9.900026951721e+00 +1.048417968866e+01 1.058869245036e+01 1.022030108959e+01 9.538361936534e+00 +9.152510915816e+00 1.069617883927e+01 1.038750452598e+01 9.281356100446e+00 +8.104228842110e+00 1.083494326811e+01 1.056207756328e+01 9.169208929532e+00 +7.960456473003e+00 1.099288674134e+01 1.074554659947e+01 9.233701155077e+00 +8.141314292285e+00 1.116851092234e+01 1.093954571855e+01 9.478557541846e+00 +1.047623381423e+01 1.141002567755e+01 1.114667027358e+01 9.868438512825e+00 +1.082793268590e+01 1.163682025278e+01 1.136578765422e+01 1.034438425356e+01 +1.119934407313e+01 1.185937888799e+01 1.159709958410e+01 1.085378841896e+01 +1.047823790038e+01 1.214373943696e+01 1.184158099371e+01 1.136727851767e+01 +1.220501966529e+01 1.247232041337e+01 1.209782664789e+01 1.187049826699e+01 +1.184161321013e+01 1.280699663415e+01 1.236359053435e+01 1.234616573907e+01 +1.374378616248e+01 1.311953720451e+01 1.263660604756e+01 1.277029157667e+01 +1.415136610369e+01 1.339536066091e+01 1.291482902486e+01 1.312861602057e+01 +1.314992360103e+01 1.362579170728e+01 1.319599383158e+01 1.343554306742e+01 +1.343590914317e+01 1.383535342875e+01 1.347847282361e+01 1.373277262463e+01 +1.309991732600e+01 1.402122830417e+01 1.376039268740e+01 1.406319499200e+01 +1.400719628167e+01 1.419580903019e+01 1.404058899156e+01 1.443920303210e+01 +1.532290997156e+01 1.437607827926e+01 1.431817020454e+01 1.483089421701e+01 +1.611720414236e+01 1.454968842671e+01 1.459186565333e+01 1.518346909503e+01 +1.572151811127e+01 1.469933257730e+01 1.486082447167e+01 1.545009012088e+01 +1.629424832483e+01 1.479837568927e+01 1.512421942176e+01 1.561647176652e+01 +1.565980315992e+01 1.490321989411e+01 1.538310378232e+01 1.570266966838e+01 +1.512438205027e+01 1.501859860201e+01 1.563715614895e+01 1.574586104879e+01 +1.588853740476e+01 1.515697124363e+01 1.588618696660e+01 1.578048300377e+01 +1.608157237947e+01 1.534436146467e+01 1.613034245229e+01 1.583063134768e+01 +1.562645817174e+01 1.551352918474e+01 1.636730546914e+01 1.591664915363e+01 +1.611552770065e+01 1.567284139771e+01 1.659651193562e+01 1.606446088502e+01 +1.564807418295e+01 1.583623871292e+01 1.681716079877e+01 1.630419649438e+01 +1.568905379985e+01 1.602840471962e+01 1.702823028026e+01 1.665634290816e+01 +1.619386413076e+01 1.622780500917e+01 1.722759525231e+01 1.711801509291e+01 +1.902022760786e+01 1.642791200453e+01 1.741345997261e+01 1.766290358868e+01 +1.835854912980e+01 1.659801979736e+01 1.758363680261e+01 1.825275854222e+01 +1.771355323604e+01 1.675709302726e+01 1.773721247759e+01 1.884415060598e+01 +1.947923035058e+01 1.691218758865e+01 1.787304261979e+01 1.938186345631e+01 +2.099291012771e+01 1.709743165202e+01 1.799108653446e+01 1.979225497625e+01 +2.133482724331e+01 1.724318930124e+01 1.808937475683e+01 1.999710797352e+01 +2.125668874628e+01 1.738241649235e+01 1.816889802766e+01 1.994889535174e+01 +2.108051450581e+01 1.746306547564e+01 1.822907265718e+01 1.966350520684e+01 +1.866478566299e+01 1.755290398607e+01 1.827295248105e+01 1.922336862166e+01 +1.770359348012e+01 1.765406053001e+01 1.830237581892e+01 1.874523200648e+01 +1.768461484942e+01 1.773211101576e+01 1.831858956871e+01 1.833241213320e+01 +1.764308038484e+01 1.783804933522e+01 1.832540440359e+01 1.804008970119e+01 +1.750907463610e+01 1.789682228206e+01 1.832370064829e+01 1.786967808036e+01 +1.762602357199e+01 1.795219738307e+01 1.831732872413e+01 1.778806816579e+01 +1.832053388647e+01 1.799381992289e+01 1.830875932492e+01 1.775549948171e+01 +1.764681057440e+01 1.804939137105e+01 1.830092500657e+01 1.774602974889e+01 +1.758900851504e+01 1.813454290160e+01 1.829628739442e+01 1.775217655732e+01 +1.743088236673e+01 1.825698257234e+01 1.829683509977e+01 1.777575643081e+01 +1.744371498966e+01 1.838524700747e+01 1.830296302822e+01 1.781590834261e+01 +1.880692277278e+01 1.849056078824e+01 1.831467229775e+01 1.786602027181e+01 +1.744647283342e+01 1.856691492452e+01 1.833203031845e+01 1.792150727414e+01 +1.841554900158e+01 1.863708125744e+01 1.835528068892e+01 1.798889343597e+01 +1.735075787519e+01 1.869663671338e+01 1.838381836270e+01 1.808532095530e+01 +1.796122940451e+01 1.874898576096e+01 1.841700705849e+01 1.822742338094e+01 +1.828273126862e+01 1.882248459787e+01 1.845478296623e+01 1.841849137372e+01 +1.856618105033e+01 1.888272792816e+01 1.849568294601e+01 1.864312678778e+01 +1.928047537034e+01 1.888285447360e+01 1.853804684064e+01 1.887072178164e+01 +1.905435618113e+01 1.888082735616e+01 1.858267488512e+01 1.906293103508e+01 +1.924036982732e+01 1.889950987171e+01 1.862945998163e+01 1.918184020372e+01 +2.023238402267e+01 1.892344381909e+01 1.867797198062e+01 1.919988943863e+01 +1.979169013966e+01 1.893668064384e+01 1.872814355493e+01 1.911106576321e+01 +1.909692868167e+01 1.893892707764e+01 1.878012428874e+01 1.893651209631e+01 +1.777573088272e+01 1.894952157793e+01 1.883446859795e+01 1.871761350236e+01 +1.872395726372e+01 1.896080165017e+01 1.889109690566e+01 1.850004265805e+01 +1.838340759288e+01 1.900947512868e+01 1.895078926682e+01 1.832151814185e+01 +1.742638646358e+01 1.907684037048e+01 1.901291570218e+01 1.821189855955e+01 +1.868617402525e+01 1.915453028548e+01 1.907728075493e+01 1.820101782100e+01 +1.701271348021e+01 1.923452483009e+01 1.914364989227e+01 1.832162924342e+01 +1.817639047987e+01 1.931461279400e+01 1.921174673149e+01 1.859859350765e+01 +1.822642092792e+01 1.938455102793e+01 1.928096884837e+01 1.902668670572e+01 +1.862496719241e+01 1.941552663159e+01 1.935012906874e+01 1.955081111740e+01 +2.084880963303e+01 1.947019506951e+01 1.942024616111e+01 2.006688600440e+01 +2.227777381274e+01 1.953812747786e+01 1.949073311649e+01 2.045286822637e+01 +2.205638805464e+01 1.957821825204e+01 1.956022146872e+01 2.061865856218e+01 +2.153772918936e+01 1.960491807046e+01 1.962866433869e+01 2.054612283459e+01 +2.012036815271e+01 1.959340148398e+01 1.969528708883e+01 2.029348819903e+01 +1.933640888649e+01 1.961932901795e+01 1.976180873294e+01 1.996204088226e+01 +1.925598004000e+01 1.965083328062e+01 1.982752209550e+01 1.964811584718e+01 +1.841424896642e+01 1.971511373963e+01 1.989322826439e+01 1.941054254656e+01 +1.966045042678e+01 1.978691689746e+01 1.995839322369e+01 1.926966706424e+01 +1.944861798288e+01 1.984102730721e+01 2.002238835137e+01 1.922999031787e+01 +1.893765314201e+01 1.990166765685e+01 2.008556733917e+01 1.930126066570e+01 +1.816068090066e+01 1.996476048200e+01 2.014757329580e+01 1.949657248838e+01 +1.868105505429e+01 2.004623268994e+01 2.020837731798e+01 1.980987393666e+01 +2.073318443850e+01 2.011954714122e+01 2.026670189720e+01 2.019790907733e+01 +2.161434686465e+01 2.018089516218e+01 2.032183266351e+01 2.058903074954e+01 +2.129541164511e+01 2.026863937788e+01 2.037417813019e+01 2.091529637465e+01 +2.163161147573e+01 2.034256066615e+01 2.042213032895e+01 2.114241886059e+01 +2.144415089824e+01 2.047050879322e+01 2.046697801797e+01 2.127560441925e+01 +2.107687618821e+01 2.055539022457e+01 2.050647966236e+01 2.134078687786e+01 +2.114295042048e+01 2.062372706363e+01 2.054160062319e+01 2.135855116670e+01 +2.168874580766e+01 2.070506576305e+01 2.057368827101e+01 2.132992676063e+01 +2.176425067517e+01 2.072894677167e+01 2.060207638041e+01 2.124157558087e+01 +2.162700644810e+01 2.077996421369e+01 2.063009262325e+01 2.108228289281e+01 +2.117524323194e+01 2.076401529917e+01 2.065681496687e+01 2.085480179099e+01 +1.970432419772e+01 2.075196549187e+01 2.068549664546e+01 2.057448397501e+01 +2.035764921351e+01 2.072750263835e+01 2.071722782739e+01 2.026225386499e+01 +2.104446529649e+01 2.066810830918e+01 2.075280473795e+01 1.994575502162e+01 +1.935050962506e+01 2.058066730563e+01 2.079332637026e+01 1.966926262326e+01 +1.864578495982e+01 2.049958356565e+01 2.083974262347e+01 1.949567599218e+01 +1.791057267615e+01 2.041579172104e+01 2.089107531641e+01 1.948672905854e+01 +1.866315216877e+01 2.035450073472e+01 2.094634585575e+01 1.967082307467e+01 +1.996355674268e+01 2.031741910934e+01 2.100336721558e+01 2.002495453953e+01 +2.073472853959e+01 2.028356972342e+01 2.105886304374e+01 2.048723518029e+01 +2.176979777023e+01 2.027228939310e+01 2.110996260582e+01 2.098959010100e+01 +2.110701180994e+01 2.022595554502e+01 2.115154689781e+01 2.148444371144e+01 +2.175254622124e+01 2.018239404107e+01 2.118059913551e+01 2.194881234353e+01 +2.259046566192e+01 2.016925882692e+01 2.119391200050e+01 2.237124279460e+01 +2.336501509470e+01 2.012093818558e+01 2.118607574288e+01 2.273820794895e+01 +2.307381957164e+01 2.003982099878e+01 2.115370382056e+01 2.302937608778e+01 +2.337199214908e+01 1.989127927007e+01 2.109341096172e+01 2.321893496606e+01 +2.436469656783e+01 1.974513159525e+01 2.100532529669e+01 2.327745585854e+01 +2.287463000447e+01 1.959270775442e+01 2.088849616840e+01 2.317453482891e+01 +2.454573208515e+01 1.942696097325e+01 2.074286671403e+01 2.288578299954e+01 +2.308492781106e+01 1.925180462163e+01 2.056960449753e+01 2.240392947986e+01 +2.182413851721e+01 1.913066024241e+01 2.037239909271e+01 2.174848947118e+01 +2.160711524236e+01 1.897304543862e+01 2.015187870552e+01 2.096839941455e+01 +1.969581882490e+01 1.881196295345e+01 1.991208562039e+01 2.013628139162e+01 +1.957321573425e+01 1.864160350164e+01 1.965650623311e+01 1.933567410874e+01 +1.706674965570e+01 1.849072270301e+01 1.938954750459e+01 1.864269390269e+01 +1.739609122067e+01 1.837826952807e+01 1.911543780629e+01 1.810609787357e+01 +1.716311970107e+01 1.826977467960e+01 1.883662236942e+01 1.773491749636e+01 +1.748783777818e+01 1.813365934384e+01 1.855510638924e+01 1.750274229124e+01 +1.738024887458e+01 1.800588618906e+01 1.827437076278e+01 1.736771057852e+01 +1.752957320570e+01 1.790600653111e+01 1.799687238479e+01 1.729507857079e+01 +1.688201360475e+01 1.779666355791e+01 1.772294786972e+01 1.726713421643e+01 +1.675143077387e+01 1.771974828814e+01 1.745464516531e+01 1.727582992109e+01 +1.735711508271e+01 1.762188244534e+01 1.719157010770e+01 1.730698196984e+01 +1.749859252807e+01 1.749357396943e+01 1.693421401695e+01 1.732922310725e+01 +1.795610973936e+01 1.734557766187e+01 1.668342478621e+01 1.729433832808e+01 +1.729275187722e+01 1.717525366400e+01 1.643969026194e+01 1.714769515891e+01 +1.727414199069e+01 1.702276578916e+01 1.620456555884e+01 1.684577988205e+01 +1.849235548007e+01 1.686203634190e+01 1.597815514939e+01 1.637749422955e+01 +1.580598897382e+01 1.667682921073e+01 1.576099750052e+01 1.577973307710e+01 +1.457017707228e+01 1.646820909115e+01 1.555407550523e+01 1.513310200669e+01 +1.293843766936e+01 1.629033915032e+01 1.535976286305e+01 1.453384276735e+01 +1.400714269543e+01 1.608749462611e+01 1.517766273381e+01 1.405770376201e+01 +1.338514148246e+01 1.587494057873e+01 1.500899414371e+01 1.373822496916e+01 +1.302794170672e+01 1.568974704110e+01 1.485523214769e+01 1.356807737109e+01 +1.236609911348e+01 1.549750799621e+01 1.471596548417e+01 1.351561307687e+01 +1.504380128541e+01 1.532819434554e+01 1.459202373752e+01 1.354491147912e+01 +1.311342317969e+01 1.518053165611e+01 1.448282685762e+01 1.363046907114e+01 +1.350133374518e+01 1.502307489519e+01 1.438679089382e+01 1.375939298368e+01 +1.308923159943e+01 1.491092714259e+01 1.430413925176e+01 1.392024695159e+01 +1.405899666061e+01 1.478968250204e+01 1.423221450745e+01 1.409027072016e+01 +1.575522392099e+01 1.472356958756e+01 1.417105177906e+01 1.423633506289e+01 +1.451851061332e+01 1.466178089601e+01 1.411796838745e+01 1.433031812382e+01 +1.366059280934e+01 1.458795521689e+01 1.407119635444e+01 1.436309910075e+01 +1.482657202526e+01 1.454382456829e+01 1.403056997605e+01 1.434391376906e+01 +1.469705353717e+01 1.450826630423e+01 1.399470057810e+01 1.428840610579e+01 +1.349396644313e+01 1.448976947619e+01 1.396311875795e+01 1.420799637993e+01 +1.459744072020e+01 1.449386881370e+01 1.393559142327e+01 1.410794314709e+01 +1.421164696705e+01 1.450261554851e+01 1.391157211450e+01 1.399212460484e+01 +1.383626912130e+01 1.452255166178e+01 1.389159548208e+01 1.386810432736e+01 +1.352029251996e+01 1.457098614135e+01 1.387694098264e+01 1.374726964709e+01 +1.331142868951e+01 1.461967988735e+01 1.386803935572e+01 1.364006235609e+01 +1.363421422871e+01 1.467976135063e+01 1.386636580417e+01 1.355166793188e+01 +1.380793232016e+01 1.474353657385e+01 1.387310882860e+01 1.348306442028e+01 +1.326112215349e+01 1.477622302981e+01 1.388905543507e+01 1.343604360114e+01 +1.270373851281e+01 1.487334528986e+01 1.391812434961e+01 1.341652487495e+01 +1.408461644805e+01 1.498546986062e+01 1.396064602185e+01 1.343280818252e+01 +1.294805441130e+01 1.514309317780e+01 1.401905590527e+01 1.348980938786e+01 +1.334883037045e+01 1.527093032448e+01 1.409333879522e+01 1.358220222882e+01 +1.332670111475e+01 1.539218275490e+01 1.418564178356e+01 1.369057083460e+01 +1.453989840093e+01 1.550327918578e+01 1.429706332040e+01 1.378573813410e+01 +1.427979024613e+01 1.562722788157e+01 1.442911578849e+01 1.384256220621e+01 +1.416125985733e+01 1.571837984620e+01 1.458161937125e+01 1.385568310790e+01 +1.334555840017e+01 1.584223026193e+01 1.475653122706e+01 1.384572276732e+01 +1.391191897733e+01 1.593207238357e+01 1.495171849858e+01 1.385176044056e+01 +1.324719509513e+01 1.604140506436e+01 1.516757010037e+01 1.391695196075e+01 +1.378549233337e+01 1.613317613179e+01 1.540179637933e+01 1.407690797079e+01 +1.433560508435e+01 1.619914268947e+01 1.565227345428e+01 1.435395060915e+01 +1.341275686372e+01 1.630825125377e+01 1.591804538286e+01 1.475446281080e+01 +1.536331888714e+01 1.645818731128e+01 1.619582872847e+01 1.526795844043e+01 +1.569207831694e+01 1.657768540474e+01 1.648031692860e+01 1.587046815017e+01 +1.674220600908e+01 1.667429803550e+01 1.676758489680e+01 1.653279162727e+01 +1.729737809658e+01 1.678196145077e+01 1.705391138009e+01 1.722731689051e+01 +1.737110853251e+01 1.688862081102e+01 1.733469223709e+01 1.792630205698e+01 +1.853654499554e+01 1.700433073634e+01 1.760612187197e+01 1.859434479202e+01 +2.018336876154e+01 1.713064361187e+01 1.786434258083e+01 1.918713844113e+01 +2.056176993111e+01 1.724763967654e+01 1.810540368156e+01 1.966388547109e+01 +2.043937566744e+01 1.738889829385e+01 1.832737732151e+01 2.000511018355e+01 +2.053820794918e+01 1.757541189515e+01 1.852916279344e+01 2.021911470510e+01 +1.993548748297e+01 1.776236236568e+01 1.870892471195e+01 2.032968496506e+01 +2.075265546264e+01 1.797187044498e+01 1.886715579926e+01 2.035541345215e+01 +2.028892117103e+01 1.818609848943e+01 1.900419187235e+01 2.029910154475e+01 +2.114171610480e+01 1.832776549380e+01 1.911959169602e+01 2.015647573186e+01 +2.050915836771e+01 1.850761616848e+01 1.921817773541e+01 1.993542769348e+01 +1.948614983111e+01 1.866357715580e+01 1.930116312839e+01 1.966663862706e+01 +1.854669506479e+01 1.880124728817e+01 1.937170944370e+01 1.939444147655e+01 +1.859544481125e+01 1.889272620739e+01 1.943232292505e+01 1.915671927751e+01 +1.943057832717e+01 1.899786507886e+01 1.948770096974e+01 1.897394469761e+01 +1.929800641447e+01 1.908733599101e+01 1.954011299147e+01 1.885659745877e+01 +1.778947498968e+01 1.920048805121e+01 1.959314422065e+01 1.881868280000e+01 +1.846531675998e+01 1.930311808525e+01 1.964827150477e+01 1.887774441569e+01 +1.845673468277e+01 1.939033803683e+01 1.970695982305e+01 1.903698078210e+01 +1.870309766874e+01 1.945524533049e+01 1.976986945796e+01 1.926599706087e+01 +1.984659453812e+01 1.950423105277e+01 1.983740837668e+01 1.950207819328e+01 +2.124023176141e+01 1.957455427983e+01 1.990995170211e+01 1.967837575399e+01 +2.068814879408e+01 1.961541445579e+01 1.998518807781e+01 1.976174546499e+01 +1.926838009447e+01 1.963396915577e+01 2.006154509593e+01 1.977218592543e+01 +1.868335096169e+01 1.964063118794e+01 2.013686396583e+01 1.977035898431e+01 +1.973445989330e+01 1.963422000694e+01 2.020831761917e+01 1.982683816733e+01 +1.984881096734e+01 1.962751913154e+01 2.027301539592e+01 1.999735418385e+01 +2.006477707002e+01 1.960137017382e+01 2.032721811755e+01 2.031192741263e+01 +1.924073269269e+01 1.957164748606e+01 2.036830301321e+01 2.076663124873e+01 +2.039652841282e+01 1.950706848323e+01 2.039251730972e+01 2.131154149820e+01 +2.323452196250e+01 1.944500989281e+01 2.039791013711e+01 2.184856953447e+01 +2.341452821843e+01 1.937992210446e+01 2.038213040723e+01 2.225641060493e+01 +2.410653167120e+01 1.928455539947e+01 2.034274599629e+01 2.243679640048e+01 +2.380284547822e+01 1.915568662498e+01 2.027857954069e+01 2.235288362524e+01 +2.115079054922e+01 1.903820998569e+01 2.019055070213e+01 2.203495416559e+01 +2.215589852540e+01 1.888539648989e+01 2.007808189408e+01 2.155580318436e+01 +2.125000939446e+01 1.874451889700e+01 1.994354166038e+01 2.099855138293e+01 +2.024390610728e+01 1.862461510985e+01 1.978893792236e+01 2.043493663592e+01 +1.892875466886e+01 1.851015637149e+01 1.961611803113e+01 1.991466003975e+01 +1.947298404512e+01 1.843502069736e+01 1.942873649629e+01 1.945928550170e+01 +1.853253344160e+01 1.835656161487e+01 1.922902343295e+01 1.906156746722e+01 +1.909389819896e+01 1.826528282431e+01 1.901977366088e+01 1.869659308291e+01 +1.913398677598e+01 1.818005883395e+01 1.880398628753e+01 1.834331562070e+01 +1.768071427364e+01 1.805907231390e+01 1.858289590382e+01 1.800256174034e+01 +1.705925696754e+01 1.795635465924e+01 1.835992941247e+01 1.769714811703e+01 +1.680563089964e+01 1.788908505282e+01 1.813743746402e+01 1.745478901574e+01 +1.715544563779e+01 1.779880056297e+01 1.791554087584e+01 1.728981274137e+01 +1.754323957708e+01 1.770323572894e+01 1.769583134445e+01 1.719864731703e+01 +1.669910489502e+01 1.762802875589e+01 1.747972513924e+01 1.716838505562e+01 +1.715124961901e+01 1.760352696741e+01 1.726845287208e+01 1.718529613709e+01 +1.703291893382e+01 1.761539713835e+01 1.706229156450e+01 1.723313508448e+01 +1.714138630002e+01 1.760497474217e+01 1.686066537246e+01 1.728383119407e+01 +1.726739780890e+01 1.760567050250e+01 1.666545614825e+01 1.729186458115e+01 +1.873536450952e+01 1.760384617380e+01 1.647767317210e+01 1.720128038219e+01 +1.718305651861e+01 1.761284582096e+01 1.629923784856e+01 1.696456760750e+01 +1.721567340688e+01 1.762616449499e+01 1.613219582351e+01 1.656402597301e+01 +1.715963313690e+01 1.758983529250e+01 1.597812812583e+01 1.602434927019e+01 +1.489833993767e+01 1.755764496166e+01 1.584139025013e+01 1.540965850023e+01 +1.389130054279e+01 1.750466052822e+01 1.572445113362e+01 1.480598751287e+01 +1.410219802706e+01 1.748184581144e+01 1.563181675388e+01 1.429748241552e+01 +1.302871308152e+01 1.750587403939e+01 1.556698820591e+01 1.394620358373e+01 +1.310236719537e+01 1.751795246439e+01 1.553154705869e+01 1.377952201512e+01 +1.329305881816e+01 1.755968680125e+01 1.552939517520e+01 1.378320343194e+01 +1.271253505374e+01 1.759494538395e+01 1.556175887986e+01 1.390159625696e+01 +1.499948211095e+01 1.767452047668e+01 1.563135796621e+01 1.405399099137e+01 +1.567759998093e+01 1.773176998762e+01 1.573747653246e+01 1.417163961031e+01 +1.485475627338e+01 1.780564051186e+01 1.588105084233e+01 1.423915843550e+01 +1.372286448708e+01 1.788610133901e+01 1.606105636872e+01 1.430888522001e+01 +1.246211786569e+01 1.795173745554e+01 1.627531660311e+01 1.447140841882e+01 +1.351953835432e+01 1.803673563686e+01 1.652189122605e+01 1.480172600508e+01 +1.576772922147e+01 1.811727550429e+01 1.679659280458e+01 1.532099525292e+01 +1.563911270904e+01 1.820398499039e+01 1.709551641628e+01 1.599622885962e+01 +1.672778275093e+01 1.828915292216e+01 1.741390421332e+01 1.676555355267e+01 +1.728290554980e+01 1.837160759908e+01 1.774679880058e+01 1.756249200857e+01 +1.865788523078e+01 1.849925020191e+01 1.809023460217e+01 1.832761947360e+01 +2.006475644249e+01 1.862410316896e+01 1.843791232065e+01 1.901453331627e+01 +1.983350211942e+01 1.875136414413e+01 1.878489341849e+01 1.959748399521e+01 +2.051624412243e+01 1.889056636446e+01 1.912663610262e+01 2.007667013952e+01 +2.053565524390e+01 1.903847501646e+01 1.945879639829e+01 2.047328726110e+01 +2.026170919659e+01 1.919242697661e+01 1.977780764349e+01 2.081517315823e+01 +2.159810662235e+01 1.933414682661e+01 2.008004230260e+01 2.112332241581e+01 +2.158542480112e+01 1.949623045213e+01 2.036369068820e+01 2.140788344718e+01 +2.189090673097e+01 1.965487978267e+01 2.062662961582e+01 2.167187401781e+01 +2.131669277293e+01 1.989435723476e+01 2.087012605695e+01 2.191434676694e+01 +2.257711782687e+01 2.014277368195e+01 2.109244320705e+01 2.212918100861e+01 +2.242626062928e+01 2.040231048119e+01 2.129454703582e+01 2.230405709059e+01 +2.266833836773e+01 2.064175969846e+01 2.147713544424e+01 2.242510595984e+01 +2.331064939037e+01 2.083703518874e+01 2.164134429009e+01 2.248537403151e+01 +2.185633181249e+01 2.103390513996e+01 2.179067190638e+01 2.248929843779e+01 +2.293486629244e+01 2.122480862798e+01 2.192764746460e+01 2.244817836830e+01 +2.216726754887e+01 2.138783296548e+01 2.205477076752e+01 2.237032478222e+01 +2.209057566490e+01 2.154084313906e+01 2.217563694153e+01 2.225561852686e+01 +2.295694814522e+01 2.170689338480e+01 2.229348963643e+01 2.210169476314e+01 +2.210870055539e+01 2.186205191172e+01 2.240984481255e+01 2.191906256221e+01 +2.168539618104e+01 2.200703878690e+01 2.252616993510e+01 2.174294901354e+01 +2.078732307358e+01 2.212737549142e+01 2.264318304393e+01 2.162959768252e+01 +2.085931669479e+01 2.220077733896e+01 2.276099393158e+01 2.163586570983e+01 +2.110549876267e+01 2.228132949196e+01 2.288067039311e+01 2.179429468687e+01 +2.132040831859e+01 2.234317044624e+01 2.300046367953e+01 2.209977175855e+01 +2.296463612848e+01 2.238770082900e+01 2.311852520544e+01 2.251515453541e+01 +2.322963472932e+01 2.240838792506e+01 2.323213761573e+01 2.298934094877e+01 +2.321331136587e+01 2.242331940414e+01 2.333880845136e+01 2.347425956164e+01 +2.395366809681e+01 2.245694689125e+01 2.343579695886e+01 2.393317493188e+01 +2.452670920809e+01 2.250356374581e+01 2.351951481874e+01 2.434375406484e+01 +2.627675892227e+01 2.253668598655e+01 2.358590209894e+01 2.470078440538e+01 +2.399581102519e+01 2.260184937814e+01 2.363293881628e+01 2.501367438737e+01 +2.513102828038e+01 2.264118652197e+01 2.365680893466e+01 2.529009231638e+01 +2.485226521886e+01 2.267902333790e+01 2.365632886370e+01 2.551132812795e+01 +2.706411848030e+01 2.269345916797e+01 2.362990735493e+01 2.562245011573e+01 +2.654160872188e+01 2.271703557706e+01 2.357821524915e+01 2.555569032940e+01 +2.736605952100e+01 2.273255384622e+01 2.350196410793e+01 2.527689375203e+01 +2.518556960078e+01 2.274778774777e+01 2.340353329378e+01 2.481954521528e+01 +2.284458571031e+01 2.275325119216e+01 2.328567990990e+01 2.427567886490e+01 +2.318128829368e+01 2.275424780150e+01 2.315246407933e+01 2.374597690353e+01 +2.233463721884e+01 2.277291027862e+01 2.300889173876e+01 2.328401932299e+01 +2.313126093342e+01 2.277978149268e+01 2.285922908358e+01 2.287429459710e+01 +2.329692867833e+01 2.280027553459e+01 2.270940054664e+01 2.245782106821e+01 +2.324832666637e+01 2.283429351293e+01 2.256463826802e+01 2.198479071506e+01 +2.158071938869e+01 2.286251064082e+01 2.242963797827e+01 2.145621300158e+01 +1.985704467738e+01 2.292587084480e+01 2.231008323696e+01 2.092755893477e+01 +1.965940424379e+01 2.300536120672e+01 2.220948590741e+01 2.047747150415e+01 +1.940001788066e+01 2.310389069518e+01 2.213106913816e+01 2.016942949691e+01 +1.976463684168e+01 2.319863012372e+01 2.207655079336e+01 2.003367339331e+01 +1.990118291379e+01 2.331012381582e+01 2.204794885562e+01 2.007380117723e+01 +1.957597458187e+01 2.342291474803e+01 2.204555097674e+01 2.028086700968e+01 +1.969907298641e+01 2.348847754110e+01 2.206792179719e+01 2.063728619856e+01 +2.084068748212e+01 2.354685922630e+01 2.211496702942e+01 2.110967258054e+01 +2.168939013693e+01 2.360105776009e+01 2.218500294804e+01 2.164349630011e+01 +2.312107794726e+01 2.363128311134e+01 2.227535659503e+01 2.216982959415e+01 +2.240875915748e+01 2.363510796857e+01 2.238347054428e+01 2.262220632328e+01 +2.393542775663e+01 2.360341307669e+01 2.250655404214e+01 2.295454629461e+01 +2.383966104185e+01 2.361480642651e+01 2.264380335866e+01 2.315283243365e+01 +2.374370925794e+01 2.362093759543e+01 2.279151547443e+01 2.323651962103e+01 +2.275148870834e+01 2.365149450018e+01 2.294834671617e+01 2.324774310162e+01 +2.269783771445e+01 2.361021879124e+01 2.310996316462e+01 2.323186482016e+01 +2.351442150625e+01 2.356927197243e+01 2.327612276458e+01 2.322045156585e+01 +2.334367378550e+01 2.350417936271e+01 2.344432495440e+01 2.322760189987e+01 +2.303997330569e+01 2.348321742624e+01 2.361436465479e+01 2.325966294898e+01 +2.342681549738e+01 2.352033214270e+01 2.378469312716e+01 2.332765208522e+01 +2.295355034830e+01 2.353897636472e+01 2.395173230569e+01 2.345163242468e+01 +2.337587823641e+01 2.360717682131e+01 2.411557464198e+01 2.365447847884e+01 +2.336308873154e+01 2.368285269979e+01 2.427377104656e+01 2.394991757557e+01 +2.403691781429e+01 2.378727546982e+01 2.442548239663e+01 2.433230536951e+01 +2.456845905429e+01 2.387644381267e+01 2.456808989915e+01 2.477428047164e+01 +2.565652754014e+01 2.400279818786e+01 2.470119387273e+01 2.523404214369e+01 +2.611084942588e+01 2.415770301061e+01 2.482308148761e+01 2.566755502495e+01 +2.625729899630e+01 2.430006733072e+01 2.493159558865e+01 2.603727807051e+01 +2.610891254666e+01 2.447501676796e+01 2.502731920007e+01 2.631311965740e+01 +2.727305080805e+01 2.462860359707e+01 2.510895559819e+01 2.647017019657e+01 +2.753774865286e+01 2.482427268520e+01 2.517873673885e+01 2.649102092843e+01 +2.652690304671e+01 2.500423484875e+01 2.523648635708e+01 2.637393801736e+01 +2.636338476968e+01 2.519443978159e+01 2.528454683830e+01 2.614037401661e+01 +2.608745132773e+01 2.534593330882e+01 2.532410256662e+01 2.583515551112e+01 +2.546850158205e+01 2.544893150969e+01 2.535754529882e+01 2.551738312747e+01 +2.454891366316e+01 2.551290078578e+01 2.538800269394e+01 2.524307614169e+01 +2.429310097266e+01 2.557940222916e+01 2.541945675666e+01 2.504367886704e+01 +2.438509370374e+01 2.559691410919e+01 2.545352727849e+01 2.491132203661e+01 +2.520350455103e+01 2.565961716304e+01 2.549542564121e+01 2.480500419339e+01 +2.624694109170e+01 2.570967411573e+01 2.554620187519e+01 2.468070973487e+01 +2.441784536454e+01 2.579621047421e+01 2.560883288324e+01 2.452784606275e+01 +2.387425389054e+01 2.588983748764e+01 2.568384629581e+01 2.438545632487e+01 +2.331900682277e+01 2.598920603185e+01 2.577187706291e+01 2.432656081672e+01 +2.356709927541e+01 2.610488619637e+01 2.587310539580e+01 2.442310464617e+01 +2.444832423572e+01 2.621615227343e+01 2.598599148377e+01 2.471337657111e+01 +2.375662478034e+01 2.629091477159e+01 2.610786035233e+01 2.518483393213e+01 +2.566527253731e+01 2.635512747571e+01 2.623674049223e+01 2.577474562081e+01 +2.686078054219e+01 2.642523913438e+01 2.637012225923e+01 2.638866197712e+01 +2.859120498668e+01 2.647330189974e+01 2.650413233987e+01 2.693398260278e+01 +2.765560474350e+01 2.651980337313e+01 2.663595613588e+01 2.735593991280e+01 +2.803354895494e+01 2.655106262233e+01 2.676212416516e+01 2.765599664499e+01 +2.789339016955e+01 2.656439048851e+01 2.687966760178e+01 2.788031795063e+01 +2.701006229312e+01 2.658660934542e+01 2.698683418357e+01 2.808456426938e+01 +2.857849542012e+01 2.660539166620e+01 2.708139299547e+01 2.829544859629e+01 +2.776696961526e+01 2.661660881662e+01 2.716178376359e+01 2.849020130554e+01 +3.025082942190e+01 2.659838780224e+01 2.722668744973e+01 2.860454398775e+01 +2.905426101876e+01 2.657855075706e+01 2.727667440183e+01 2.856509288695e+01 +2.975740700864e+01 2.656827417427e+01 2.731229683364e+01 2.833013895259e+01 +2.875277193763e+01 2.654668811521e+01 2.733369127294e+01 2.791858545705e+01 +2.691787754629e+01 2.651610936884e+01 2.734191075935e+01 2.741235666337e+01 +2.619642516308e+01 2.647839783154e+01 2.733810348113e+01 2.693046208293e+01 +2.564866240934e+01 2.647738457701e+01 2.732458778215e+01 2.658706280211e+01 +2.447810363098e+01 2.645973457028e+01 2.730127801917e+01 2.645363216497e+01 +2.691443096918e+01 2.644956382298e+01 2.726982587561e+01 2.654127337492e+01 +2.612511322796e+01 2.642973414122e+01 2.723081279301e+01 2.680561640482e+01 +2.717938482538e+01 2.641372953046e+01 2.718541659826e+01 2.716430948218e+01 +2.753623803554e+01 2.643249471097e+01 2.713478614911e+01 2.751678415661e+01 +2.867854962748e+01 2.647720619378e+01 2.707880247304e+01 2.776535892597e+01 +2.941098855070e+01 2.653812231887e+01 2.701735083705e+01 2.784085448341e+01 +2.886052095881e+01 2.659405884843e+01 2.694997395544e+01 2.772674551584e+01 +2.722724451145e+01 2.663373179007e+01 2.687652763678e+01 2.746598789327e+01 +2.619411242253e+01 2.668540829428e+01 2.679782655328e+01 2.714127707666e+01 +2.697505313528e+01 2.670247312423e+01 2.671309047067e+01 2.683911995895e+01 +2.576670765688e+01 2.669802163507e+01 2.662332504661e+01 2.661919153949e+01 +2.638604788895e+01 2.666271776761e+01 2.652919807806e+01 2.650191675889e+01 +2.609472519095e+01 2.664454442211e+01 2.643289657894e+01 2.647169079614e+01 +2.620361344496e+01 2.661986181332e+01 2.633509217922e+01 2.648753325830e+01 +2.715887735869e+01 2.659801048208e+01 2.623763465188e+01 2.649708386376e+01 +2.711290687779e+01 2.659225764061e+01 2.614263776691e+01 2.645218631783e+01 +2.654589788889e+01 2.655862477978e+01 2.605114247192e+01 2.632145305731e+01 +2.607435231016e+01 2.653995037398e+01 2.596639183220e+01 2.609490582000e+01 +2.624614355650e+01 2.647719378113e+01 2.588919317572e+01 2.578190116327e+01 +2.576970719107e+01 2.643661298253e+01 2.582324548716e+01 2.540833576667e+01 +2.499128412930e+01 2.638404775853e+01 2.576945445495e+01 2.501548479649e+01 +2.423924259790e+01 2.635016756015e+01 2.573002615043e+01 2.465637410204e+01 +2.326072291241e+01 2.634963845945e+01 2.570621613562e+01 2.438623728074e+01 +2.442770880915e+01 2.636222345366e+01 2.569803247322e+01 2.425011626721e+01 +2.329551401255e+01 2.638468220910e+01 2.570549993933e+01 2.427330519539e+01 +2.385697221889e+01 2.642803923489e+01 2.572842666722e+01 2.445655909185e+01 +2.418151605729e+01 2.642759960761e+01 2.576446391127e+01 2.477499865226e+01 +2.546356563906e+01 2.644146351847e+01 2.581375543162e+01 2.518132181277e+01 +2.559202826489e+01 2.643653078314e+01 2.587368864419e+01 2.561531328219e+01 +2.652174880719e+01 2.642546115534e+01 2.594253765556e+01 2.601854287576e+01 +2.689710500557e+01 2.639428397085e+01 2.601772128932e+01 2.634877900964e+01 diff --git a/gsl-2.5/doc/examples/gaussfilt2 b/gsl-2.5/doc/examples/gaussfilt2 new file mode 100755 index 00000000..3cf2b601 --- /dev/null +++ b/gsl-2.5/doc/examples/gaussfilt2 @@ -0,0 +1,228 @@ +#! /bin/sh + +# gaussfilt2 - temporary wrapper script for .libs/gaussfilt2 +# Generated by libtool (GNU libtool) 2.4.2 +# +# The gaussfilt2 program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s/\([`"$\\]\)/\\\1/g' + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command="(cd /home/groups/kipac/chto/package/gsl/gsl-2.5/doc/examples; LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LIBRARY_PATH; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; LD_LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/fftw/include:/home/users/chto/lib/fftw/lib:/home/users/chto/lib/healpix/lib:/home/users/chto/lib/namaster/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/include:/home/users/chto/cpp/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LD_LIBRARY_PATH; PATH=/share/software/user/open/curl/7.54.0/bin:/share/software/user/open/libressl/2.5.3/bin:/home/users/chto/lib/cfitsio:/home/users/chto/lib/cfitsio/include:/home/users/chto/lib:/home/users/chto/bin/bin:/home/users/chto/bin:/home/users/chto/.texlive/bin/x86_64-linux:/home/groups/kipac/chto/anaconda2/envs/newenv3/bin:/home/users/chto/.local/bin/include:/home/users/chto/.local/bin/lib:/home/users/chto/.local/bin:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/bin64:/share/software/user/open/fftw/3.3.6/bin:/home/groups/kipac/chto/anaconda2/condabin:/share/software/user/restricted/ifort/2019/bin:/share/software/user/open/gsl/2.3/bin:/share/software/user/srcc/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/dell/srvadmin/bin:/opt/dell/srvadmin/iSM/bin:/home/users/chto/bin; export PATH; gcc -g -O2 -o \$progdir/\$file gaussfilt2.o ../../.libs/libgsl.so ../../cblas/.libs/libgslcblas.so -lm -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/.libs -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/cblas/.libs -Wl,-rpath -Wl,/usr/local/lib)" + +# This environment variable determines our operation mode. +if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then + # install mode needs the following variables: + generated_by_libtool_version='2.4.2' + notinst_deplibs=' ../../libgsl.la ../../cblas/libgslcblas.la' +else + # When we are sourced in execute mode, $file and $ECHO are already set. + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + file="$0" + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + ECHO="printf %s\\n" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ which is used only on +# windows platforms, and (c) all begin with the string --lt- +# (application programs are unlikely to have options which match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's ../../libtool value, followed by no. +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=$0 + shift + for lt_opt + do + case "$lt_opt" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%/[^/]*$%%'` + test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=. + lt_dump_F=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%^.*/%%'` + cat "$lt_dump_D/$lt_dump_F" + exit 0 + ;; + --lt-*) + $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n "$lt_option_debug"; then + echo "gaussfilt2:gaussfilt2:${LINENO}: libtool wrapper (GNU libtool) 2.4.2" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + $ECHO "gaussfilt2:gaussfilt2:${LINENO}: newargv[$lt_dump_args_N]: $lt_arg" + lt_dump_args_N=`expr $lt_dump_args_N + 1` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ + + if test -n "$lt_option_debug"; then + $ECHO "gaussfilt2:gaussfilt2:${LINENO}: newargv[0]: $progdir/$program" 1>&2 + func_lt_dump_args ${1+"$@"} 1>&2 + fi + exec "$progdir/$program" ${1+"$@"} + + $ECHO "$0: cannot exec $program $*" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from $@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case " $* " in + *\ --lt-*) + for lt_wr_arg + do + case $lt_wr_arg in + --lt-*) ;; + *) set x "$@" "$lt_wr_arg"; shift;; + esac + shift + done ;; + esac + func_exec_program_core ${1+"$@"} +} + + # Parse options + func_parse_lt_options "$0" ${1+"$@"} + + # Find the directory that this script lives in. + thisdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + test "x$thisdir" = "x$file" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=`ls -ld "$file" | /usr/bin/sed -n 's/.*-> //p'` + while test -n "$file"; do + destdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + + # If there was a directory component, then change thisdir. + if test "x$destdir" != "x$file"; then + case "$destdir" in + [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;; + *) thisdir="$thisdir/$destdir" ;; + esac + fi + + file=`$ECHO "$file" | /usr/bin/sed 's%^.*/%%'` + file=`ls -ld "$thisdir/$file" | /usr/bin/sed -n 's/.*-> //p'` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no + if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then + # special case for '.' + if test "$thisdir" = "."; then + thisdir=`pwd` + fi + # remove .libs from thisdir + case "$thisdir" in + *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /usr/bin/sed 's%[\\/][^\\/]*$%%'` ;; + .libs ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=`cd "$thisdir" && pwd` + test -n "$absdir" && thisdir="$absdir" + + program=lt-'gaussfilt2' + progdir="$thisdir/.libs" + + if test ! -f "$progdir/$program" || + { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /usr/bin/sed 1q`; \ + test "X$file" != "X$progdir/$program"; }; then + + file="$$-$program" + + if test ! -d "$progdir"; then + mkdir "$progdir" + else + rm -f "$progdir/$file" + fi + + # relink executable if necessary + if test -n "$relink_command"; then + if relink_command_output=`eval $relink_command 2>&1`; then : + else + printf %s\n "$relink_command_output" >&2 + rm -f "$progdir/$file" + exit 1 + fi + fi + + mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null || + { rm -f "$progdir/$program"; + mv -f "$progdir/$file" "$progdir/$program"; } + rm -f "$progdir/$file" + fi + + if test -f "$progdir/$program"; then + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + # Run the actual program with our arguments. + func_exec_program ${1+"$@"} + fi + else + # The program doesn't exist. + $ECHO "$0: error: \`$progdir/$program' does not exist" 1>&2 + $ECHO "This script is just a wrapper for $program." 1>&2 + $ECHO "See the libtool documentation for more information." 1>&2 + exit 1 + fi +fi diff --git a/gsl-2.5/doc/examples/gaussfilt2.c b/gsl-2.5/doc/examples/gaussfilt2.c new file mode 100644 index 00000000..9db707f0 --- /dev/null +++ b/gsl-2.5/doc/examples/gaussfilt2.c @@ -0,0 +1,71 @@ +#include +#include + +#include +#include +#include +#include +#include + +int +main(void) +{ + const size_t N = 1000; /* length of time series */ + const size_t K = 61; /* window size */ + const double alpha = 3.0; /* Gaussian kernel has +/- 3 standard deviations */ + gsl_vector *x = gsl_vector_alloc(N); /* input vector */ + gsl_vector *y = gsl_vector_alloc(N); /* filtered output vector */ + gsl_vector *dy = gsl_vector_alloc(N); /* first derivative filtered vector */ + gsl_vector *d2y = gsl_vector_alloc(N); /* second derivative filtered vector */ + gsl_rng *r = gsl_rng_alloc(gsl_rng_default); + gsl_filter_gaussian_workspace *gauss_p = gsl_filter_gaussian_alloc(K); + size_t i; + + /* generate input signal */ + for (i = 0; i < N; ++i) + { + double xi = (i > N / 2) ? 0.5 : 0.0; + double ei = gsl_ran_gaussian(r, 0.1); + + gsl_vector_set(x, i, xi + ei); + } + + /* apply filters */ + gsl_filter_gaussian(GSL_FILTER_END_PADVALUE, alpha, 0, x, y, gauss_p); + gsl_filter_gaussian(GSL_FILTER_END_PADVALUE, alpha, 1, x, dy, gauss_p); + gsl_filter_gaussian(GSL_FILTER_END_PADVALUE, alpha, 2, x, d2y, gauss_p); + + /* print results */ + for (i = 0; i < N; ++i) + { + double xi = gsl_vector_get(x, i); + double yi = gsl_vector_get(y, i); + double dyi = gsl_vector_get(dy, i); + double d2yi = gsl_vector_get(d2y, i); + double dxi; + + /* compute finite difference of x vector */ + if (i == 0) + dxi = gsl_vector_get(x, i + 1) - xi; + else if (i == N - 1) + dxi = gsl_vector_get(x, i) - gsl_vector_get(x, i - 1); + else + dxi = 0.5 * (gsl_vector_get(x, i + 1) - gsl_vector_get(x, i - 1)); + + printf("%.12e %.12e %.12e %.12e %.12e\n", + xi, + yi, + dxi, + dyi, + d2yi); + } + + gsl_vector_free(x); + gsl_vector_free(y); + gsl_vector_free(dy); + gsl_vector_free(d2y); + gsl_rng_free(r); + gsl_filter_gaussian_free(gauss_p); + + return 0; +} diff --git a/gsl-2.5/doc/examples/gaussfilt2.txt b/gsl-2.5/doc/examples/gaussfilt2.txt new file mode 100644 index 00000000..78678b25 --- /dev/null +++ b/gsl-2.5/doc/examples/gaussfilt2.txt @@ -0,0 +1,1000 @@ +1.339186081187e-02 1.871557820404e-03 -2.220195999501e-02 -1.573169611469e-03 -8.780933065889e-05 +-8.810099183144e-03 2.415680115678e-04 7.702448990675e-02 -1.653816610174e-03 -7.005130799944e-05 +1.674408406254e-01 -1.454282712577e-03 4.108710495620e-02 -1.713695984914e-03 -4.919451563066e-05 +7.336411072926e-02 -3.306034888695e-03 -3.384418873259e-02 -1.783635876377e-03 -3.472562516214e-05 +9.975246316020e-02 -5.081926575132e-03 -1.005571594148e-01 -1.797742614170e-03 -9.791367133915e-06 +-1.277502081003e-01 -6.886517573974e-03 -1.697119957168e-01 -1.794540678705e-03 1.394740395800e-05 +-2.396715282733e-01 -8.684487585528e-03 2.991109581368e-02 -1.770188198653e-03 3.677209095397e-05 +-6.792801647292e-02 -1.040504637514e-02 1.178811982150e-01 -1.710981218632e-03 6.179293643257e-05 +-3.909131843359e-03 -1.201573660787e-02 7.864178551250e-02 -1.615736647016e-03 8.884204822403e-05 +8.935555455208e-02 -1.360525848411e-02 1.072176192190e-03 -1.520044775751e-03 1.081313502520e-04 +-1.764779458978e-03 -1.501991219708e-02 -1.095056227149e-01 -1.385387202482e-03 1.303213239924e-04 +-1.296556908777e-01 -1.626198081420e-02 -3.251663557094e-02 -1.221246546222e-03 1.529854510433e-04 +-6.679805060086e-02 -1.744091505144e-02 7.391328435427e-02 -1.068685416631e-03 1.654942663557e-04 +1.817087783080e-02 -1.845705073427e-02 7.495156481747e-02 -9.038477536258e-04 1.751758671492e-04 +8.310507903407e-02 -1.918407911513e-02 -3.649786248524e-02 -6.949241925893e-04 1.912854247622e-04 +-5.482484713968e-02 -1.982637352378e-02 -7.345411465170e-02 -5.099625338587e-04 1.960049564819e-04 +-6.380315026934e-02 -2.016464203437e-02 2.776685015461e-02 -2.866171416268e-04 2.071097411276e-04 +7.088531695428e-04 -2.028979940521e-02 -1.591109584209e-03 -5.724068925701e-05 2.162677520576e-04 +-6.698536943776e-02 -2.025923242644e-02 -4.174254315412e-02 1.575094262484e-04 2.185205888168e-04 +-8.277623313869e-02 -2.000995387708e-02 6.411768623691e-02 3.744948162908e-04 2.190930556687e-04 +6.125000303605e-02 -1.947452200865e-02 2.300869606146e-02 6.118521903759e-04 2.232633096190e-04 +-3.675884101578e-02 -1.876761828155e-02 -4.509967197398e-02 8.326570840256e-04 2.212724176753e-04 +-2.894934091191e-02 -1.783113384070e-02 -2.746431303284e-02 1.053487569511e-03 2.180154419193e-04 +-9.168746708146e-02 -1.663824928790e-02 -1.471560248396e-02 1.281262021665e-03 2.155843598936e-04 +-5.838054587982e-02 -1.523059769679e-02 4.907449804867e-02 1.502285947755e-03 2.104581433189e-04 +6.461529015869e-03 -1.362501860026e-02 3.152746592858e-02 1.711034228145e-03 2.014748297262e-04 +4.674385977342e-03 -1.175926667966e-02 -4.076711344134e-02 1.926285906608e-03 1.940885263869e-04 +-7.507269786680e-02 -9.741891073338e-03 -9.548827356906e-03 2.115225424765e-03 1.798184279671e-04 +-1.442326873647e-02 -7.510499062373e-03 1.113143887795e-01 2.298069934070e-03 1.648311423671e-04 +1.475560796922e-01 -5.207561936769e-03 -3.112314377764e-03 2.433507631725e-03 1.387413154366e-04 +-2.064789749200e-02 -2.723606303483e-03 -8.681290378986e-02 2.558311348821e-03 1.126430419545e-04 +-2.606972788753e-02 -1.030257826429e-04 3.413050151456e-03 2.662808533086e-03 8.490266321611e-05 +-1.382179718908e-02 2.596464419364e-03 -1.141349969088e-01 2.730271334044e-03 5.338954370435e-05 +-2.543397217052e-01 5.268954596640e-03 3.578182543003e-02 2.776465611888e-03 1.236646176699e-05 +5.774185367097e-02 7.960356274602e-03 1.253643676972e-01 2.760073528894e-03 -3.056491722833e-05 +-3.610986310676e-03 1.074241071818e-02 -4.017955524345e-02 2.743474156440e-03 -6.558367109374e-05 +-2.261725681593e-02 1.350731785655e-02 3.755560401180e-02 2.651947528600e-03 -9.764599140462e-05 +7.150022171291e-02 1.625039095980e-02 9.017197273503e-02 2.531536878966e-03 -1.228282378203e-04 +1.577266886541e-01 1.876714402116e-02 -5.536380393083e-02 2.392749558747e-03 -1.544773942329e-04 +-3.922738614874e-02 2.105217343415e-02 -1.972480153745e-02 2.213329136277e-03 -1.892465936792e-04 +1.182770855792e-01 2.319506509447e-02 1.092693774449e-01 2.035746477432e-03 -2.162343890414e-04 +1.793113687411e-01 2.508229440944e-02 -9.570584115491e-02 1.796523467735e-03 -2.416656010038e-04 +-7.313459673059e-02 2.683164719697e-02 -1.211465684341e-01 1.542744324677e-03 -2.528145296266e-04 +-6.298176812702e-02 2.823196053893e-02 1.401020269054e-01 1.266102492149e-03 -2.653794257844e-04 +2.070694570803e-01 2.935433718760e-02 -1.365941630819e-02 9.978300408839e-04 -2.722888410824e-04 +-9.030060074339e-02 3.025509025609e-02 -1.675745165959e-02 7.536387375223e-04 -2.687876332880e-04 +1.735545537611e-01 3.091113613083e-02 1.143047433780e-01 4.883915044989e-04 -2.571809741572e-04 +1.383088860127e-01 3.144231497398e-02 -1.055456088744e-01 2.760503833692e-04 -2.288973332126e-04 +-3.753666398769e-02 3.168720635546e-02 -8.436995298190e-02 8.203308679792e-05 -1.999750310869e-04 +-3.043101995114e-02 3.177386057518e-02 8.144689443517e-02 -8.714389997872e-05 -1.626518900041e-04 +1.253571248826e-01 3.166774027672e-02 1.523251013207e-03 -2.323373680662e-04 -1.233393076262e-04 +-2.738451792472e-02 3.131325651773e-02 -6.499503151252e-02 -3.446447640491e-04 -9.068062957442e-05 +-4.632938142394e-03 3.095652626726e-02 5.364138246776e-02 -4.148376469146e-04 -4.858016700655e-05 +7.989824701079e-02 3.055386156076e-02 2.931426353365e-02 -4.399746821099e-04 -5.503686238907e-06 +5.399558892491e-02 3.004365219459e-02 -3.565660655810e-02 -4.658613897120e-04 2.891960632728e-05 +8.585033894587e-03 2.959014119311e-02 4.076676657457e-02 -4.330336720089e-04 6.391502934445e-05 +1.355291220741e-01 2.909626166452e-02 -3.599973905726e-03 -3.814324162442e-04 8.699160863910e-05 +1.385086083134e-03 2.871656951911e-02 -3.019637628587e-02 -2.947924315440e-04 1.073351548449e-04 +7.513636950232e-02 2.848256166847e-02 -7.943800195185e-02 -1.923264719514e-04 1.244195890968e-04 +-1.574909178206e-01 2.832252708080e-02 -4.943709740400e-02 -7.557450556358e-05 1.299515117566e-04 +-2.373782530568e-02 2.827197268808e-02 9.556998854168e-02 7.195075201348e-05 1.252628926726e-04 +3.364905926279e-02 2.839464912051e-02 7.888929013239e-03 1.861012499984e-04 1.154102993742e-04 +-7.959967279201e-03 2.857010988481e-02 -4.386814174634e-02 2.680805549799e-04 9.164445557554e-05 +-5.408722422989e-02 2.884210172953e-02 -6.504171349934e-02 3.320073117016e-04 5.981109875036e-05 +-1.380433942779e-01 2.928146600021e-02 1.128712051287e-01 3.477716370906e-04 2.916720818601e-05 +1.716551860274e-01 2.966878263266e-02 8.992728733895e-02 3.755401784967e-04 -1.465283608251e-05 +4.181118040001e-02 3.011342084624e-02 -9.579763641416e-03 3.609077382076e-04 -5.780120992919e-05 +1.524956587446e-01 3.044935035391e-02 1.341822636362e-02 2.768320148499e-04 -1.079659429754e-04 +6.864763312725e-02 3.064820832293e-02 -1.056756279152e-01 1.526795900951e-04 -1.608963833680e-04 +-5.885559708574e-02 3.071731461534e-02 3.151357890540e-02 1.720664675615e-07 -2.095349267326e-04 +1.316747909381e-01 3.064369705685e-02 -1.222140869860e-02 -2.271917632214e-04 -2.483091508045e-04 +-8.329841448294e-02 3.022662065650e-02 -2.713938060011e-02 -4.876768968775e-04 -2.876917035402e-04 +7.739602973783e-02 2.955247624900e-02 1.473436918277e-03 -7.640368646928e-04 -3.154200358312e-04 +-8.035154064639e-02 2.874189341622e-02 -4.296952862004e-02 -1.066668830659e-03 -3.174968047473e-04 +-8.543027502252e-03 2.763249012690e-02 1.149856650852e-01 -1.361632944326e-03 -3.052271367386e-04 +1.496197895241e-01 2.603642057367e-02 2.415985342709e-02 -1.642793749927e-03 -2.939498493657e-04 +3.977667935192e-02 2.424823288261e-02 9.211159858135e-02 -1.940009896307e-03 -2.600551802797e-04 +3.338429866868e-01 2.207167812716e-02 7.015841164175e-02 -2.177366495845e-03 -2.230132113904e-04 +1.800935026354e-01 1.968515943263e-02 -7.910756281289e-02 -2.376408465567e-03 -1.731535658420e-04 +1.756278610610e-01 1.722847354302e-02 -5.667306833665e-02 -2.525129338530e-03 -1.054404414581e-04 +6.674736596213e-02 1.473850218041e-02 -1.403223357728e-01 -2.577358336631e-03 -2.538564400394e-05 +-1.050168104847e-01 1.206120817707e-02 -1.690515616878e-02 -2.568820516554e-03 4.449794975256e-05 +3.293705362457e-02 9.490046346518e-03 7.526245716532e-02 -2.502138487845e-03 1.189879303270e-04 +4.550810384591e-02 7.054784988395e-03 -1.338188928364e-01 -2.349030256266e-03 1.905547324162e-04 +-2.347007320482e-01 4.793917081331e-03 -5.344901379397e-02 -2.115317992673e-03 2.525681723330e-04 +-6.138992374203e-02 2.900259156721e-03 9.260336589885e-03 -1.798666991899e-03 3.121509289343e-04 +-2.161800588684e-01 1.277929045051e-03 -1.937219414059e-02 -1.459227772024e-03 3.541075699427e-04 +-1.001343120232e-01 -2.719625174994e-05 8.497664802117e-02 -1.072317248001e-03 3.770508214232e-04 +-4.622676282608e-02 -9.411313531490e-04 9.189102942768e-03 -6.984246874668e-04 3.842130030982e-04 +-8.175610613768e-02 -1.395953477289e-03 3.233298332326e-02 -2.860940694787e-04 3.803908914441e-04 +1.843920382043e-02 -1.459465065641e-03 2.113220426750e-02 6.371117880009e-05 3.614767319837e-04 +-3.949169760269e-02 -1.128468849121e-03 -9.269746735876e-02 4.304174778314e-04 3.313296209648e-04 +-1.669557308971e-01 -5.328247181917e-04 -2.751154337991e-02 7.475970915718e-04 2.842015429647e-04 +-9.451478436250e-02 3.060639438584e-04 8.365636512283e-02 9.905662526818e-04 2.256303061926e-04 +3.569993485712e-04 1.429847529450e-03 1.050443655017e-01 1.184342883857e-03 1.673133548275e-04 +1.155739466408e-01 2.717732096965e-03 9.369306802902e-02 1.302007663652e-03 1.077870837367e-04 +1.877431354066e-01 4.047380179628e-03 -5.217702680601e-02 1.408411808873e-03 4.503591438342e-05 +1.121989302880e-02 5.513801734057e-03 -8.481090581584e-02 1.447706075482e-03 -5.397428463681e-06 +1.812132377494e-02 6.936330311721e-03 5.830527600021e-02 1.445247991918e-03 -5.163097897937e-05 +1.278304450292e-01 8.309711379610e-03 1.949222689298e-02 1.377743207154e-03 -8.839161697230e-05 +5.710577756089e-02 9.683743925279e-03 -8.746060896531e-02 1.278780620319e-03 -1.073518886997e-04 +-4.709077290139e-02 1.083514758391e-02 -5.384970040374e-03 1.169576767204e-03 -1.250427074487e-04 +4.633583748014e-02 1.194511139035e-02 1.244116413153e-01 1.027603602715e-03 -1.256695203332e-04 +2.017325097293e-01 1.291928601412e-02 8.431732455616e-02 9.227311549852e-04 -1.182640196020e-04 +2.149704865925e-01 1.382003644701e-02 -1.194204208023e-01 8.059496604060e-04 -1.001617942053e-04 +-3.710833187533e-02 1.456161910202e-02 -1.446997940231e-01 7.084272681736e-04 -8.174277179946e-05 +-7.442910145369e-02 1.520552148700e-02 -4.548202703200e-02 6.592940680493e-04 -6.217318942569e-05 +-1.280723859393e-01 1.580391943501e-02 -3.221867459784e-02 6.068314165534e-04 -4.132223173378e-05 +-1.388664506494e-01 1.628629586942e-02 4.491276361623e-02 6.109015421777e-04 -2.920244979253e-05 +-3.824685870686e-02 1.684950064837e-02 1.434992647736e-01 6.168383022635e-04 -1.309897763538e-05 +1.481320788979e-01 1.753061138966e-02 -4.746000928867e-02 6.673046075419e-04 7.053827047688e-06 +-1.331668772842e-01 1.815244029918e-02 -1.264801431343e-01 6.787611852633e-04 1.456123039590e-05 +-1.048282073707e-01 1.884528710936e-02 5.939482018676e-02 6.769841194981e-04 1.989200423297e-05 +-1.437723691069e-02 1.959957996907e-02 6.145699464946e-02 7.226264843872e-04 2.192136097253e-05 +1.808578192825e-02 2.038446451240e-02 1.239345945525e-01 7.659961839768e-04 1.845496164137e-05 +2.334919521944e-01 2.125011614817e-02 8.542052619537e-03 7.601969073070e-04 1.567300609918e-05 +3.516988716732e-02 2.203239175548e-02 -9.817540673567e-02 7.613438859780e-04 2.282302630988e-06 +3.714113872303e-02 2.285509655623e-02 -5.364025222138e-02 7.310962720226e-04 -8.804606815248e-06 +-7.211061727544e-02 2.350426134241e-02 6.776851888394e-02 6.709494848491e-04 -3.234352703243e-05 +1.726781764909e-01 2.412827373191e-02 1.788498587988e-02 6.115736632638e-04 -5.316259952696e-05 +-3.634064551569e-02 2.473619949593e-02 8.769559371904e-03 5.410004286741e-04 -6.815528687603e-05 +1.902172952347e-01 2.523267115184e-02 3.854931981830e-02 4.666041637255e-04 -8.334746011555e-05 +4.075799412091e-02 2.566262965055e-02 -1.451807727500e-01 3.717670397791e-04 -9.348082120019e-05 +-1.001442502652e-01 2.604612391132e-02 -6.079719953604e-03 2.588705061742e-04 -9.581127184836e-05 +2.859855421370e-02 2.631791782388e-02 3.327253427390e-02 1.599619129124e-04 -9.562864262339e-05 +-3.359918171739e-02 2.639959176380e-02 3.106467067680e-02 5.422718083639e-05 -9.986941333048e-05 +9.072789556730e-02 2.636341064804e-02 8.258527535324e-02 -3.478397448066e-05 -1.031958052396e-04 +1.315713689891e-01 2.620889049798e-02 -5.649239243746e-03 -1.199092022419e-04 -1.066326593138e-04 +7.942941707981e-02 2.603323878112e-02 -8.556998604908e-02 -2.231960979720e-04 -1.028300439517e-04 +-3.956860310906e-02 2.581391165524e-02 -1.107819786190e-02 -3.040531659108e-04 -9.466981646095e-05 +5.727302135601e-02 2.536098096431e-02 -1.193795669092e-02 -4.016844164659e-04 -9.887873350308e-05 +-6.344451649090e-02 2.493472924459e-02 -5.540756616063e-02 -4.803421336860e-04 -9.426956096898e-05 +-5.354211096524e-02 2.437584667391e-02 6.993002597026e-02 -5.922184909094e-04 -9.422692235098e-05 +7.641553544962e-02 2.374852023757e-02 3.642280421815e-02 -6.734752354137e-04 -9.328802926790e-05 +1.930349747106e-02 2.297665541481e-02 -6.096347811159e-02 -7.419504278373e-04 -9.782498093587e-05 +-4.551142077357e-02 2.212821314542e-02 1.480172770990e-02 -8.135330295160e-04 -1.016018439504e-04 +4.890695289085e-02 2.130826351998e-02 -6.169654981857e-04 -9.078494442464e-04 -9.486611779088e-05 +-4.674535176994e-02 2.036799167588e-02 -2.240449560054e-02 -1.011171103199e-03 -8.909867780968e-05 +4.097961689768e-03 1.936332265092e-02 4.861319243066e-02 -1.108134943728e-03 -7.913257920560e-05 +5.048103309137e-02 1.830630761606e-02 1.392691930104e-01 -1.184560740511e-03 -6.401870479764e-05 +2.826363477106e-01 1.708435185065e-02 -5.832444044916e-02 -1.253181614618e-03 -5.358840128930e-05 +-6.616784780695e-02 1.572719402911e-02 -1.735679685433e-01 -1.294293150520e-03 -4.621948010436e-05 +-6.449958937596e-02 1.439755599266e-02 1.213677796306e-01 -1.362954718097e-03 -2.927619350873e-05 +1.765677114543e-01 1.309943190153e-02 1.079337835445e-01 -1.381051186886e-03 -4.160175939721e-06 +1.513679777130e-01 1.170931542457e-02 -7.118799994705e-02 -1.380820959208e-03 1.613307123524e-05 +3.419171156019e-02 1.029177997157e-02 -7.959091370786e-02 -1.364611502469e-03 3.434976941703e-05 +-7.813849702685e-03 8.927479474851e-03 -2.590456780356e-02 -1.278904300528e-03 5.389833020785e-05 +-1.761742404694e-02 7.593590650136e-03 -1.168795172901e-01 -1.232058726509e-03 7.000867618067e-05 +-2.415728842828e-01 6.439431935802e-03 -3.925089711962e-02 -1.132804109400e-03 9.249422744228e-05 +-9.611921828617e-02 5.381692721457e-03 1.198375106059e-01 -1.038177037181e-03 1.115910102287e-04 +-1.897863070918e-03 4.362670771751e-03 4.598288591432e-02 -8.973555974496e-04 1.201304097098e-04 +-4.153446457531e-03 3.637682078127e-03 -5.751355901644e-03 -7.466407180202e-04 1.374393410753e-04 +-1.340057487421e-02 2.961939872520e-03 7.924170023270e-03 -5.681046684931e-04 1.417911809545e-04 +1.169489358901e-02 2.442088588915e-03 4.142580316102e-02 -4.237241241764e-04 1.418329360469e-04 +6.945103144784e-02 2.098774029568e-03 -3.953361239770e-02 -2.999333364678e-04 1.401294608773e-04 +-6.737233120639e-02 1.795423281697e-03 -3.761561869230e-02 -1.794244438931e-04 1.263991278641e-04 +-5.780205936755e-03 1.653472320963e-03 2.577985818788e-02 -7.272397802643e-05 1.123790816760e-04 +-1.581261483063e-02 1.601152697177e-03 3.531734114753e-03 4.018609925233e-05 9.398322605724e-05 +1.283262292751e-03 1.605144557864e-03 7.606669657136e-02 1.281076729612e-04 7.069710082618e-05 +1.363207783121e-01 1.795112456969e-03 -6.866412811447e-02 2.149430160106e-04 5.575899414047e-05 +-1.360449939362e-01 2.038875059967e-03 -1.970658074797e-02 2.560643862503e-04 4.061978490402e-05 +9.690761681616e-02 2.271249020163e-03 1.478294064879e-02 2.880889039399e-04 2.220982817770e-05 +-1.064791126386e-01 2.554386014467e-03 -1.793023194208e-02 2.866214385933e-04 7.751706574770e-06 +6.104715293200e-02 2.883331919331e-03 6.931464952454e-02 2.893608783261e-04 -1.590083656990e-06 +3.215018641048e-02 3.236177693813e-03 -1.635108738045e-02 3.173991933551e-04 -7.046248985918e-06 +2.834497817111e-02 3.581736694466e-03 1.963962279546e-02 3.207334272166e-04 -1.073917296646e-05 +7.142943200140e-02 3.897192712795e-03 -2.547844854603e-02 2.992814703804e-04 -1.394362490799e-05 +-2.261191892094e-02 4.188004457922e-03 -2.641403369137e-02 2.935966449706e-04 -1.622849324172e-05 +1.860136461866e-02 4.480398296531e-03 6.090666922823e-02 2.699736542221e-04 -1.568581640753e-05 +9.920141953552e-02 4.724905527246e-03 -3.133537646025e-02 2.499403829415e-04 -1.671854055423e-05 +-4.406938830183e-02 4.952987596249e-03 -8.433878266717e-02 2.395250939177e-04 -1.725854000061e-05 +-6.947614579882e-02 5.115779051270e-03 -4.402519579645e-02 2.588105599755e-04 -2.213210735091e-05 +-1.321197798947e-01 5.389095485591e-03 8.214939194939e-02 2.326057984675e-04 -1.680956884695e-05 +9.482263809997e-02 5.628722925628e-03 4.903240640553e-02 2.086121985907e-04 -1.317393167653e-05 +-3.405496708369e-02 5.753106404145e-03 -9.526237551516e-02 2.080407333176e-04 -1.841625215489e-05 +-9.570211293036e-02 5.837347691392e-03 8.001686162523e-02 1.862911985200e-04 -2.618807838998e-05 +1.259787561668e-01 6.028558265940e-03 -3.582197078666e-02 1.728142813905e-04 -2.387900683323e-05 +-1.673460545037e-01 6.222706233294e-03 -4.805528100591e-03 1.578946412059e-04 -2.009286505821e-05 +1.163676999656e-01 6.301305030731e-03 8.617454965467e-02 1.141144586747e-04 -2.429243474580e-05 +5.003044805673e-03 6.451021559237e-03 -3.825653675848e-02 5.576360835742e-05 -2.031758411206e-05 +3.985462644862e-02 6.495004853214e-03 1.086905996284e-01 1.458593784544e-05 -2.283006127744e-05 +2.223842440624e-01 6.531587580015e-03 5.152089576082e-02 -3.253693151459e-07 -2.394102321633e-05 +1.428964179703e-01 6.577869771682e-03 -1.222614099360e-01 -8.996791483192e-06 -2.248701360912e-05 +-2.213857580950e-02 6.595888216284e-03 -9.738115224897e-02 -2.372054508238e-05 -2.167967521708e-05 +-5.186588652768e-02 6.603173436623e-03 -5.979876392803e-02 -3.132976859342e-05 -2.016107124217e-05 +-1.417361036656e-01 6.509420094081e-03 -1.326502004684e-02 -5.376167902934e-05 -2.545937408092e-05 +-7.839592662136e-02 6.493471000814e-03 6.684660950803e-02 -7.804400720984e-05 -2.248592874778e-05 +-8.042884649495e-03 6.443077212778e-03 -2.888590368219e-03 -9.061253127830e-05 -2.068088880429e-05 +-8.417310735779e-02 6.381590618285e-03 6.633151534258e-02 -1.029190030795e-04 -1.813593308335e-05 +1.246201460357e-01 6.256262829331e-03 3.149493148419e-02 -1.247411497699e-04 -1.898856899062e-05 +-2.118324438940e-02 6.090714484028e-03 -8.785831506140e-02 -1.256544490959e-04 -2.110828872938e-05 +-5.109648408714e-02 6.043558753592e-03 -2.825698987287e-02 -1.460652228794e-04 -1.102026049623e-05 +-7.769722413513e-02 5.794653669878e-03 5.156694972481e-02 -1.652715439885e-04 -1.510426786667e-05 +5.203741536248e-02 5.731696003366e-03 1.414550812785e-01 -1.665338281246e-04 -1.137905700952e-06 +2.052129384218e-01 5.480877637195e-03 1.803941362587e-02 -1.773713914530e-04 -5.640034429313e-07 +8.811624261422e-02 5.238062478592e-03 -1.185532301880e-01 -1.872924599352e-04 2.703604945794e-06 +-3.189352195412e-02 5.034713487491e-03 -2.724812977604e-02 -1.800100168248e-04 1.053746889224e-05 +3.361998306215e-02 4.753397381968e-03 6.573732102553e-03 -1.825199993979e-04 1.220605033552e-05 +-1.874605774901e-02 4.580566557858e-03 -3.517372703263e-02 -1.693633253368e-04 2.213289104754e-05 +-3.672747100311e-02 4.306364004937e-03 1.267674048807e-02 -1.742163773811e-04 2.159203221505e-05 +6.607423227128e-03 4.126085783579e-03 4.565350486069e-02 -1.352720367319e-04 2.538632357638e-05 +5.457953871826e-02 4.008329130630e-03 4.715317621101e-04 -1.153674739248e-04 2.946870545396e-05 +7.550486751349e-03 3.944973697461e-03 -3.415198071262e-02 -8.846579055446e-05 3.225276861957e-05 +-1.372442270698e-02 3.910521950872e-03 -2.636340418378e-02 -7.301299253889e-05 3.096953923197e-05 +-4.517632161622e-02 3.827101682079e-03 -6.668374035758e-02 -3.504438035405e-05 1.886036151732e-05 +-1.470919034221e-01 3.781781640556e-03 5.525441159763e-02 -3.473219800640e-05 3.854343848737e-06 +6.533250157905e-02 3.771568147043e-03 1.078867558600e-01 -5.133347904280e-05 -1.258684545052e-05 +6.868160829776e-02 3.695891889713e-03 -1.173640343607e-01 -5.430914663849e-05 -3.699642034207e-05 +-1.693955671424e-01 3.680207439208e-03 -6.957703741121e-02 -1.183596576916e-04 -5.600964789157e-05 +-7.047246652465e-02 3.511683100920e-03 4.793716938770e-02 -1.696188260614e-04 -8.401823615578e-05 +-7.352122836696e-02 3.264789825046e-03 7.286520789335e-02 -2.744011324345e-04 -1.111466437490e-04 +7.525794926205e-02 2.917000532555e-03 1.017808428790e-01 -3.934441447194e-04 -1.352045878800e-04 +1.300404573910e-01 2.433946764713e-03 9.296152143915e-04 -4.995639800688e-04 -1.557844852689e-04 +7.711717969083e-02 1.688348016243e-03 -1.326676716347e-02 -6.824656785619e-04 -1.799548758996e-04 +1.035069230641e-01 8.671207797737e-04 -7.169788785993e-02 -8.842616462577e-04 -1.887957149295e-04 +-6.627859602902e-02 -1.671526203570e-04 -1.947674096703e-02 -1.100088450568e-03 -1.918761425581e-04 +6.455344113001e-02 -1.268375250810e-03 7.503527004843e-02 -1.289004400436e-03 -1.765366267331e-04 +8.379194406784e-02 -2.645353598540e-03 6.450751074183e-03 -1.474682203135e-03 -1.609680244343e-04 +7.745494327837e-02 -4.210334286989e-03 -5.645574818672e-02 -1.630655730402e-03 -1.396267980931e-04 +-2.911955230561e-02 -5.908084829327e-03 -2.381884276758e-02 -1.773710915415e-03 -1.107007070285e-04 +2.981725774322e-02 -7.653660970284e-03 6.419499709035e-02 -1.819840197418e-03 -7.145036061396e-05 +9.927044187508e-02 -9.581492931470e-03 -8.941195703950e-02 -1.899401050732e-03 -3.769421255893e-05 +-1.490066563358e-01 -1.145911746076e-02 3.391988309650e-02 -1.917087288243e-03 5.293682213602e-06 +1.671102080681e-01 -1.335972717084e-02 1.463114463528e-03 -1.905124904419e-03 4.591661525312e-05 +-1.460804274087e-01 -1.520957600819e-02 -1.465945687265e-01 -1.822282366578e-03 8.483738755988e-05 +-1.260789293849e-01 -1.697538620990e-02 6.218904996191e-02 -1.676493948597e-03 1.193616934232e-04 +-2.170232748490e-02 -1.867043798552e-02 -3.252535618092e-02 -1.548260682000e-03 1.443443003428e-04 +-1.911296417467e-01 -2.016971098771e-02 4.721009209825e-03 -1.405420611649e-03 1.674063440861e-04 +-1.226030906525e-02 -2.144745069587e-02 -2.975848305381e-02 -1.209777338914e-03 1.880006958290e-04 +-2.506466078543e-01 -2.256062238412e-02 2.259723278080e-02 -1.019026208568e-03 1.997049668550e-04 +3.293415649636e-02 -2.352012940086e-02 1.136747279474e-01 -8.360942273116e-04 2.014185501143e-04 +-2.329715195959e-02 -2.420877168775e-02 -2.311743928977e-04 -6.198563966755e-04 2.031520299857e-04 +3.247180771056e-02 -2.476285382691e-02 6.269130800161e-03 -4.188626542197e-04 1.944474007504e-04 +-1.075889035926e-02 -2.510505909339e-02 -8.769687299189e-03 -2.330405629185e-04 1.836229993411e-04 +1.493243311218e-02 -2.525774235600e-02 -2.699853486825e-02 -6.084081312085e-05 1.709375187200e-04 +-6.475596009576e-02 -2.522983556102e-02 -1.399535809997e-02 9.598298288855e-05 1.578413447408e-04 +-1.305828308776e-02 -2.499484434178e-02 6.266219549015e-02 2.359572954375e-04 1.486678030794e-04 +6.056843088455e-02 -2.470071653442e-02 1.360301381143e-02 3.861411103471e-04 1.327269097146e-04 +1.414774453511e-02 -2.429722411709e-02 -7.408354877708e-03 5.118942049806e-04 1.157163860282e-04 +4.575172112913e-02 -2.369881299373e-02 -4.024176537456e-02 5.968889955588e-04 1.064787001182e-04 +-6.633578621402e-02 -2.296641560255e-02 -2.380635489066e-02 7.082254209643e-04 1.007497697572e-04 +-1.860988652191e-03 -2.223611077399e-02 9.407856757571e-02 7.807565913562e-04 8.770664507498e-05 +1.218213489374e-01 -2.142033369421e-02 -1.333878309862e-01 8.754782587892e-04 7.513716194002e-05 +-2.686366506246e-01 -2.055266935303e-02 -1.227012695458e-01 9.580529905182e-04 6.043074683887e-05 +-1.235811901542e-01 -1.953749151250e-02 5.273135516607e-02 1.037259566965e-03 5.201087001924e-05 +-1.631739402925e-01 -1.852128213682e-02 1.152258463810e-01 1.091442156055e-03 3.828361465470e-05 +1.068705026078e-01 -1.739595052460e-02 5.048690949776e-02 1.116306301027e-03 2.932152901422e-05 +-6.220012129697e-02 -1.632430975853e-02 -7.129524009086e-02 1.135402042169e-03 1.263535778143e-05 +-3.571997757391e-02 -1.518700932724e-02 -1.992069013867e-03 1.157632161215e-03 -7.611442989527e-07 +-6.618425932470e-02 -1.408673224247e-02 1.517450973834e-01 1.149597687847e-03 -1.791999807324e-05 +2.677702171928e-01 -1.291478087843e-02 -6.342677562326e-02 1.129498789550e-03 -2.797222025176e-05 +-1.930378105712e-01 -1.178665058696e-02 -1.144895803219e-01 1.105747981573e-03 -3.899989945884e-05 +3.879105654894e-02 -1.077569029269e-02 7.591379799814e-02 1.059210227882e-03 -5.547170823209e-05 +-4.121021457494e-02 -9.610334522868e-03 2.909272478441e-02 1.010024222579e-03 -5.321633720521e-05 +9.697650611776e-02 -8.668163203473e-03 1.054164703062e-01 9.748630280822e-04 -6.290283282504e-05 +1.696227260375e-01 -7.630737501136e-03 -1.103239184424e-01 9.098485063205e-04 -5.716110145599e-05 +-1.236713307670e-01 -6.683547654679e-03 -1.277072532175e-01 8.473550499970e-04 -5.098808762995e-05 +-8.579178039754e-02 -5.850875532669e-03 1.201346261794e-01 7.965692467331e-04 -4.674395673685e-05 +1.165979215919e-01 -4.962399544343e-03 3.641996579428e-02 7.488628626564e-04 -3.092843116771e-05 +-1.295184880899e-02 -4.150497600399e-03 -1.184533154980e-01 7.427620423049e-04 -1.603134057307e-05 +-1.203087094041e-01 -3.314902547856e-03 6.164963825827e-02 7.123420957819e-04 4.770170556316e-06 +1.103474277076e-01 -2.614300935814e-03 4.086466704419e-02 7.251859684710e-04 1.642675795077e-05 +-3.857937531571e-02 -1.866510535485e-03 -7.394260614128e-02 7.477221210509e-04 3.188851593209e-05 +-3.753778457500e-02 -1.137785454319e-03 3.490857590899e-03 7.822681122016e-04 4.361340905322e-05 +-3.159766013391e-02 -2.915168801719e-04 8.325700765324e-03 8.427572849749e-04 6.080436802876e-05 +-2.088638304435e-02 5.584206279814e-04 3.193810702655e-02 9.056269403274e-04 7.190263315958e-05 +3.227855391920e-02 1.560976905279e-03 1.912909609474e-02 9.878989522824e-04 8.748454539560e-05 +1.737180914514e-02 2.570280862318e-03 -4.347978529296e-02 1.069959807376e-03 9.376053383105e-05 +-5.468101666672e-02 3.622700446507e-03 -3.655508660641e-02 1.158644747409e-03 9.262741915143e-05 +-5.573836406768e-02 4.781444753701e-03 9.638440509506e-02 1.240457804813e-03 8.871422429389e-05 +1.380877935234e-01 6.052751638592e-03 -2.895891980351e-02 1.332191332920e-03 8.226576531803e-05 +-1.136562036747e-01 7.483464945861e-03 -4.900509880406e-02 1.414367578487e-03 7.732189867637e-05 +4.007759591529e-02 8.929021010344e-03 5.572163905216e-02 1.482961928237e-03 6.258957503846e-05 +-2.212925570379e-03 1.033340646654e-02 4.062106635113e-02 1.528704481336e-03 3.484220812828e-05 +1.213197286176e-01 1.199374016362e-02 -1.189894495471e-02 1.533787877489e-03 2.110080914495e-05 +-2.601081547980e-02 1.357349948228e-02 -6.658638374860e-02 1.528105237100e-03 -4.245401671084e-06 +-1.185303887964e-02 1.515854014055e-02 -2.777966511835e-02 1.494539270284e-03 -3.124563122078e-05 +-8.157014571650e-02 1.664744911949e-02 3.424454829802e-02 1.471899125070e-03 -6.535336328267e-05 +5.663605771639e-02 1.816325278863e-02 7.548878748236e-03 1.401726647664e-03 -9.281308544093e-05 +-6.647238822003e-02 1.950022133868e-02 -1.403166946418e-03 1.281413043419e-03 -1.265668495724e-04 +5.382972382356e-02 2.067160728326e-02 6.074183165901e-02 1.113269059946e-03 -1.611794334663e-04 +5.501127509799e-02 2.158550743001e-02 -7.305727294292e-02 9.562769668098e-04 -2.005599017292e-04 +-9.228482206229e-02 2.254717809900e-02 7.002246362194e-02 7.376514718131e-04 -2.155681934339e-04 +1.950562023419e-01 2.316595986977e-02 6.258038252090e-02 5.174026513890e-04 -2.355251402606e-04 +3.287594297951e-02 2.358633199430e-02 -4.502171656378e-02 2.737938234190e-04 -2.460020216702e-04 +1.050127692143e-01 2.366757806384e-02 1.132063288508e-02 2.339716640366e-05 -2.569172088527e-04 +5.551720874966e-02 2.355839084665e-02 -4.881986281058e-02 -2.003651943428e-04 -2.552570166132e-04 +7.373043593134e-03 2.339863096766e-02 3.051321877695e-02 -4.250130931252e-04 -2.297608472917e-04 +1.165436463036e-01 2.289798635514e-02 7.865466650334e-02 -6.512804737976e-04 -2.058456555524e-04 +1.646823765998e-01 2.214066063604e-02 -3.935176467356e-02 -8.228322786336e-04 -1.790639178184e-04 +3.784011695644e-02 2.122467388804e-02 -8.846090148298e-02 -9.901401932086e-04 -1.446106742318e-04 +-1.223942636615e-02 2.009026204260e-02 -1.397844439126e-02 -1.162791133481e-03 -1.109317058331e-04 +9.883228173914e-03 1.888708773397e-02 -2.401631012736e-02 -1.229327108075e-03 -7.049633115165e-05 +-6.027204662086e-02 1.760202647280e-02 3.591678489644e-02 -1.294421814411e-03 -2.977872471768e-05 +8.171679796680e-02 1.626726428805e-02 6.949308729666e-03 -1.320625128722e-03 9.044684486179e-06 +-4.637342916153e-02 1.490953870539e-02 1.781347705235e-03 -1.313094482642e-03 4.314817824542e-05 +8.527949337727e-02 1.365464596113e-02 -8.441172273892e-03 -1.248174136993e-03 7.811335848887e-05 +-6.325577370931e-02 1.239795767602e-02 -9.379017351845e-02 -1.165254038981e-03 1.009473044823e-04 +-1.023008536596e-01 1.130601781890e-02 -1.534485146126e-02 -1.044588055303e-03 1.221728774387e-04 +-9.394547663184e-02 1.034463336714e-02 5.358791415272e-02 -9.204616720357e-04 1.364800173638e-04 +4.874974645806e-03 9.447161105805e-03 8.872941411206e-02 -8.061790190734e-04 1.372099549363e-04 +8.351335159228e-02 8.636236893560e-03 -9.066082958008e-03 -6.651575538779e-04 1.259532826759e-04 +-1.325719127021e-02 8.058248314768e-03 -1.171832470357e-01 -5.597022738281e-04 1.158503558108e-04 +-1.508531424790e-01 7.555772179967e-03 4.042068414992e-02 -4.447363571459e-04 9.568129656459e-05 +6.758417702962e-02 7.172801268327e-03 7.499746737925e-02 -3.564027085041e-04 7.170744647461e-05 +-8.582077205386e-04 6.770289589297e-03 -2.147393921617e-02 -2.980059376251e-04 3.597496410241e-05 +2.463629859728e-02 6.513652302206e-03 5.760394732882e-02 -2.743905681903e-04 6.512703490850e-06 +1.143496869371e-01 6.235721205305e-03 5.736371186627e-02 -2.869287336421e-04 -2.610812883278e-05 +1.393637223298e-01 5.961897602013e-03 -8.477899183525e-02 -3.359027762545e-04 -5.517702391262e-05 +-5.520829673338e-02 5.580402471826e-03 -1.406702961452e-01 -3.986763495050e-04 -8.576169735184e-05 +-1.419768699605e-01 5.221516265486e-03 -1.647308272665e-03 -4.843164422453e-04 -1.032004560216e-04 +-5.850291327871e-02 4.595766096191e-03 1.235438815610e-01 -6.122304011550e-04 -1.281035842952e-04 +1.051108931615e-01 3.900663114111e-03 3.496901034100e-02 -7.407851686916e-04 -1.412552596908e-04 +1.143510740330e-02 3.116032718147e-03 -4.175714144659e-02 -8.946647319896e-04 -1.425696528811e-04 +2.159661026838e-02 1.986033147557e-03 -4.691977256827e-02 -1.046444243117e-03 -1.525081828992e-04 +-8.240443773324e-02 8.093331939240e-04 4.699148087235e-02 -1.204244830447e-03 -1.462228740641e-04 +1.155795720131e-01 -4.904623766814e-04 1.831018963506e-01 -1.328996504841e-03 -1.313594438938e-04 +2.837993549680e-01 -1.947249965279e-03 -4.878947320973e-02 -1.457548065076e-03 -1.128959196337e-04 +1.800062559362e-02 -3.455891026098e-03 -1.072995048458e-01 -1.555056150858e-03 -8.488653421815e-05 +6.920034527635e-02 -5.077984537900e-03 -2.418462244590e-02 -1.610181899256e-03 -5.632046065472e-05 +-3.036861929819e-02 -6.790460657902e-03 -1.672029190880e-01 -1.640765175407e-03 -2.939953369411e-05 +-2.652054928996e-01 -8.351014832581e-03 6.543970845794e-02 -1.618745274037e-03 1.167058553411e-05 +1.005107976177e-01 -9.923980141238e-03 8.730828990300e-02 -1.581927166504e-03 4.873859156025e-05 +-9.058891309362e-02 -1.151587560070e-02 -1.005605631679e-01 -1.526944843815e-03 7.736421921491e-05 +-1.006103287182e-01 -1.302996351903e-02 -2.046311537405e-02 -1.456815193182e-03 1.022070701836e-04 +-1.315151438417e-01 -1.451473532139e-02 7.751663317179e-02 -1.352240662340e-03 1.162775576197e-04 +5.442293762542e-02 -1.574398256421e-02 1.873504174496e-02 -1.218725371355e-03 1.360576844260e-04 +-9.404506035180e-02 -1.682093428252e-02 8.567690555066e-04 -1.038880126287e-03 1.510352223570e-04 +5.613647573643e-02 -1.776803002682e-02 4.902695902659e-02 -8.923904334086e-04 1.586872459176e-04 +4.008857701367e-03 -1.849886478873e-02 -1.007318629848e-01 -7.286916922647e-04 1.664905887063e-04 +-1.453272502332e-01 -1.908918151498e-02 -3.307729415584e-02 -5.653426880796e-04 1.685770879724e-04 +-6.214573061031e-02 -1.951155369320e-02 5.998232172185e-02 -3.804277121591e-04 1.680407294547e-04 +-2.536260678954e-02 -1.977369656842e-02 4.856360221234e-02 -1.878482432644e-04 1.651918790119e-04 +3.498147381436e-02 -1.988556015739e-02 3.207100035938e-02 -2.911339682992e-05 1.607383801165e-04 +3.877939392923e-02 -1.975522024692e-02 -5.969747101024e-02 1.235445414394e-04 1.638685571357e-04 +-8.441346820611e-02 -1.957150148098e-02 3.217539234833e-03 2.931298618537e-04 1.595471445653e-04 +4.521447239890e-02 -1.921057366460e-02 3.629019984386e-02 4.487600686966e-04 1.585792758316e-04 +-1.183306851839e-02 -1.863101732456e-02 -1.718386788950e-02 6.283606110863e-04 1.643696552161e-04 +1.084673661990e-02 -1.795775799092e-02 1.221710970300e-02 8.063910837239e-04 1.658065699799e-04 +1.260115088760e-02 -1.709945630111e-02 6.797496672093e-02 9.936539367633e-04 1.695525897142e-04 +1.467966700618e-01 -1.602712438831e-02 -8.391597498902e-02 1.153930346775e-03 1.769515878335e-04 +-1.552307990904e-01 -1.468117297395e-02 -7.176749061743e-02 1.336416234625e-03 1.914629469254e-04 +3.261688826900e-03 -1.323579592618e-02 7.481338604589e-02 1.522156638752e-03 1.966128837894e-04 +-5.604026998657e-03 -1.163877069491e-02 -1.146955043745e-01 1.733193528877e-03 1.949602303456e-04 +-2.261293199221e-01 -9.783593498697e-03 -4.754995624482e-02 1.936826270377e-03 1.940211230007e-04 +-1.007039394883e-01 -7.822452809069e-03 1.236095341746e-01 2.110355411670e-03 1.807017497477e-04 +2.108974842706e-02 -5.549021198784e-03 -3.322277533118e-03 2.290307513993e-03 1.722764016356e-04 +-1.073484945545e-01 -3.247696847982e-03 -6.862168520767e-03 2.454278751659e-03 1.456129169348e-04 +7.365411385529e-03 -8.211653166289e-04 6.320882841679e-02 2.614735870193e-03 1.103824288509e-04 +1.906916227905e-02 1.876363068008e-03 -3.270889391396e-02 2.723259975813e-03 8.144812287224e-05 +-5.805237644238e-02 4.574152136965e-03 1.048127717210e-01 2.782631988755e-03 4.001783747444e-05 +2.286947057211e-01 7.361209129852e-03 6.293208172002e-02 2.793573510554e-03 -2.031669167425e-06 +6.781178699766e-02 1.019325991231e-02 -1.554895382379e-01 2.730185035416e-03 -4.313482633154e-05 +-8.228437075476e-02 1.286392721080e-02 -9.050048281356e-02 2.673455410111e-03 -9.536373816889e-05 +-1.131891786295e-01 1.552210889836e-02 -2.189514569244e-02 2.547636555179e-03 -1.408878728218e-04 +-1.260746621396e-01 1.803373996986e-02 1.094656137463e-01 2.375351702061e-03 -1.849467032064e-04 +1.057420488632e-01 2.042509526346e-02 1.754468744276e-01 2.176280709748e-03 -2.200355091139e-04 +2.248190867155e-01 2.247857131883e-02 -5.930185005315e-02 1.945338562585e-03 -2.595168307645e-04 +-1.286165124314e-02 2.431866343059e-02 -5.797604126319e-02 1.659693397951e-03 -2.884244990846e-04 +1.088670041891e-01 2.584426137646e-02 3.418696556474e-02 1.374012174289e-03 -3.116202802195e-04 +5.551227988634e-02 2.708380259574e-02 1.431548195458e-02 1.062399806661e-03 -3.242719385413e-04 +1.374979680983e-01 2.810817661375e-02 4.258742064213e-02 7.434512370234e-04 -3.189058671516e-04 +1.406871211706e-01 2.861162194176e-02 -8.031170020236e-02 3.894933519679e-04 -3.203686520566e-04 +-2.312543230646e-02 2.890126581749e-02 -3.620646043493e-02 8.686005389242e-05 -3.037925742388e-04 +6.827420030075e-02 2.881555847863e-02 1.253327222671e-02 -2.072584660513e-04 -2.847419899698e-04 +1.941112146955e-03 2.855595172496e-02 -4.783440251597e-02 -4.448860710956e-04 -2.494206160575e-04 +-2.739460473120e-02 2.799669691286e-02 6.584931521468e-02 -6.918552497010e-04 -2.119700779547e-04 +1.336397425763e-01 2.722732329475e-02 1.306321130409e-02 -8.681169249494e-04 -1.693388487533e-04 +-1.268182123023e-03 2.618900917006e-02 -5.154577479586e-02 -1.045232829335e-03 -1.313495171230e-04 +3.054819298460e-02 2.497807383498e-02 -2.807660684008e-02 -1.184114246152e-03 -9.474124149089e-05 +-5.742139580318e-02 2.376464980766e-02 4.774715620457e-02 -1.251449973694e-03 -5.085802761892e-05 +1.260425053937e-01 2.240908060277e-02 2.116783802194e-02 -1.277861403421e-03 -1.685660219653e-05 +-1.508571975930e-02 2.121545251709e-02 -5.091736577445e-02 -1.280707883255e-03 2.784473535702e-05 +2.420777384483e-02 1.996048937307e-02 3.965841101173e-02 -1.233967702633e-03 6.008545587960e-05 +6.423110226415e-02 1.876078430013e-02 -8.481976581652e-02 -1.161746844546e-03 8.564153283725e-05 +-1.454317577882e-01 1.764519134474e-02 2.181117286561e-02 -1.111489737866e-03 1.044262658011e-04 +1.078534479954e-01 1.654395400873e-02 3.433594171555e-02 -1.035683860247e-03 1.089892475150e-04 +-7.675987435711e-02 1.554706912917e-02 -5.776131819609e-02 -9.275489424835e-04 1.056617692919e-04 +-7.669188396814e-03 1.469466661796e-02 8.169856119452e-02 -8.404895130043e-04 9.801649452000e-05 +8.663724803194e-02 1.391428641963e-02 -3.857778529326e-02 -7.451971842936e-04 8.133938135387e-05 +-8.482475898333e-02 1.320589571712e-02 -6.448384273347e-02 -6.713891409335e-04 5.780702929022e-05 +-4.233043743501e-02 1.256347805569e-02 -2.491275881111e-03 -6.374640647930e-04 3.031217678598e-05 +-8.980731074555e-02 1.186656060246e-02 2.476489977807e-02 -5.979888359967e-04 -7.453500946046e-06 +7.199362121134e-03 1.128811833206e-02 5.721275876690e-02 -5.990808893612e-04 -3.688345541154e-05 +2.461820678824e-02 1.073021060989e-02 7.145796735285e-03 -6.480356447050e-04 -6.137128159345e-05 +2.149095559170e-02 1.014746550312e-02 6.990228710022e-02 -7.157178183354e-04 -8.030064946866e-05 +1.644227809887e-01 9.397303378448e-03 2.504452246126e-03 -8.298788222332e-04 -1.014765614749e-04 +2.649986008396e-02 8.546719521990e-03 -8.302755866669e-02 -9.094572412759e-04 -1.161898574990e-04 +-1.632336344686e-03 7.499719233917e-03 2.376790650475e-02 -1.008503993144e-03 -1.302703187937e-04 +7.403567309346e-02 6.426105353760e-03 2.946822373660e-02 -1.140765686802e-03 -1.275984564289e-04 +5.730411112851e-02 5.143347185659e-03 5.048464916234e-02 -1.265580433831e-03 -1.227847543138e-04 +1.750049714181e-01 3.798808927201e-03 -1.426994504185e-01 -1.374111747043e-03 -1.044757615147e-04 +-2.280947897085e-01 2.368123351090e-03 -3.074162294943e-02 -1.440197093271e-03 -7.710280186845e-05 +1.135217255193e-01 8.415899304672e-04 1.001092417782e-01 -1.487441788649e-03 -4.495557134202e-05 +-2.787630615215e-02 -6.673114152411e-04 5.383180031254e-02 -1.517800127825e-03 -2.703674753622e-06 +2.211853261443e-01 -2.184150667149e-03 -1.218733484475e-02 -1.485867930738e-03 4.220530234805e-05 +-5.225097584165e-02 -3.662696853503e-03 -6.937012311654e-02 -1.426136289029e-03 8.772338972017e-05 +8.244507991127e-02 -5.009541098246e-03 -8.289900808988e-02 -1.312555590375e-03 1.356078549604e-04 +-2.180489920214e-01 -6.291390298161e-03 -1.582717344794e-01 -1.142051333870e-03 1.740358765838e-04 +-2.340983890475e-01 -7.309557990208e-03 1.258596251792e-01 -9.398809606511e-04 2.139080195940e-04 +3.367025833693e-02 -8.123464395667e-03 7.471664078202e-02 -6.998943768298e-04 2.453347540179e-04 +-8.466510748345e-02 -8.629486740811e-03 2.299605656055e-02 -4.340677682499e-04 2.728687243369e-04 +7.966237145803e-02 -8.945677160208e-03 5.061594098714e-02 -1.351737777525e-04 2.836018835133e-04 +1.656677449083e-02 -8.926572944929e-03 -4.226128632719e-02 1.515114320346e-04 2.881387312061e-04 +-4.860201196352e-03 -8.646199693560e-03 -9.166375112951e-02 4.376389132607e-04 2.802720322942e-04 +-1.667607277682e-01 -8.040075187528e-03 -8.375363496694e-02 7.325626985783e-04 2.662896618261e-04 +-1.723674711302e-01 -7.118588893526e-03 7.349834220449e-02 9.764888467808e-04 2.477494553476e-04 +-1.976404335919e-02 -6.103414913619e-03 7.321441740866e-02 1.206531789981e-03 2.097314657150e-04 +-2.593863631290e-02 -4.780090324216e-03 2.811296973037e-02 1.388267033288e-03 1.745050643542e-04 +3.646189610155e-02 -3.321041131305e-03 1.979662176214e-02 1.538029061698e-03 1.327431498227e-04 +1.365460721137e-02 -1.779614560612e-03 -3.449136464717e-02 1.649944177026e-03 8.524549297859e-05 +-3.252083319279e-02 -1.072599235247e-04 -6.723833784757e-04 1.692942380497e-03 4.176070349082e-05 +1.230984045442e-02 1.601928314590e-03 7.334114138209e-02 1.705700239098e-03 -1.366975277530e-07 +1.141614495714e-01 3.334307212869e-03 3.628021251289e-02 1.677590529736e-03 -3.682304323863e-05 +8.487026548020e-02 5.021316286246e-03 1.450366573114e-02 1.634099719271e-03 -6.993903353842e-05 +1.431687810337e-01 6.653502532716e-03 -7.805107222934e-02 1.565087991453e-03 -9.698820165583e-05 +-7.123187897848e-02 8.077649959487e-03 4.749039441053e-03 1.433655085477e-03 -1.276622226738e-04 +1.526668599158e-01 9.366030176267e-03 3.082760374992e-02 1.305273037019e-03 -1.536945837682e-04 +-9.576671478635e-03 1.055860500188e-02 -8.113101915313e-02 1.139528982261e-03 -1.703408582119e-04 +-9.595178390504e-03 1.162269174427e-02 -4.482269174105e-02 9.670129060242e-04 -1.793990020440e-04 +-9.922205496074e-02 1.251373366359e-02 2.115039500771e-03 8.034898364966e-04 -1.845706120721e-04 +-5.365099388963e-03 1.317499990995e-02 9.044021707046e-02 6.142829014836e-04 -1.906627754985e-04 +8.165837918018e-02 1.372137567865e-02 -5.854836342987e-03 4.667372538508e-04 -1.886370956768e-04 +-1.707477207494e-02 1.422230012899e-02 -5.601421358070e-02 2.731021069033e-04 -1.732293757802e-04 +-3.037004798123e-02 1.444939513008e-02 2.787949562236e-02 1.372745668520e-04 -1.643193111938e-04 +3.868421916978e-02 1.447367059984e-02 -8.478233463705e-03 -3.748368495543e-05 -1.568139089197e-04 +-4.732651490864e-02 1.430390807415e-02 1.774284820574e-03 -1.614430379392e-04 -1.506480368073e-04 +4.223278881093e-02 1.408040373187e-02 2.302378221091e-02 -3.120449147848e-04 -1.349259757851e-04 +-1.278950486817e-03 1.363728847247e-02 1.257505973216e-02 -4.424130387693e-04 -1.241185399094e-04 +6.738290827524e-02 1.327682631581e-02 2.721653724353e-02 -5.588438056498e-04 -9.422484141409e-05 +5.315412400024e-02 1.271473917977e-02 2.071197015464e-02 -6.777411368939e-04 -7.028707376820e-05 +1.088068485845e-01 1.210447588166e-02 -3.860967712829e-03 -7.014652574349e-04 -4.190472716712e-05 +4.543218857458e-02 1.136072171457e-02 -4.708094577134e-02 -7.555296885010e-04 -1.861745831236e-05 +1.464495704184e-02 1.060523914016e-02 -3.013541676924e-02 -7.440005907336e-04 7.293895476548e-06 +-1.483864496390e-02 9.819467007056e-03 5.088443454834e-02 -7.344813496860e-04 3.125100781211e-05 +1.164138261385e-01 9.025295649688e-03 2.065421472225e-02 -7.143925408455e-04 5.236206446109e-05 +2.646978448059e-02 8.363858218752e-03 -1.087491933764e-01 -6.759878228046e-04 7.935496884205e-05 +-1.010845606143e-01 7.763231029892e-03 -2.141080609202e-02 -6.108189975973e-04 1.029807244452e-04 +-1.635182770344e-02 7.161136511464e-03 3.674560820994e-02 -5.173348088566e-04 1.149036500915e-04 +-2.759334419440e-02 6.819802388317e-03 -2.277157343257e-02 -3.673143317690e-04 1.339570215110e-04 +-6.189497456859e-02 6.473669526663e-03 -3.218272384718e-02 -2.368110121352e-04 1.358596170466e-04 +-9.195879188876e-02 6.347260860384e-03 1.815685275932e-02 -8.545372045127e-05 1.382338982027e-04 +-2.558126904995e-02 6.356573285953e-03 5.057903249850e-02 5.140265770673e-05 1.336315384006e-04 +9.199273108238e-03 6.519548772722e-03 5.371117688913e-02 1.953759482774e-04 1.240125697535e-04 +8.184108472831e-02 6.769255948798e-03 4.757219047974e-02 3.320074890046e-04 1.049976799073e-04 +1.043436540677e-01 7.098013714352e-03 -1.323753287223e-01 4.275612577544e-04 7.842797747803e-05 +-1.829095727162e-01 7.441147309866e-03 -7.935140073382e-02 4.859625317079e-04 4.242433920368e-05 +-5.435914739992e-02 7.920954928062e-03 6.369243296966e-02 4.928921020664e-04 1.139460048292e-05 +-5.552470677691e-02 8.398927644467e-03 3.958419633197e-02 5.142045988530e-04 -2.219307255537e-05 +2.480924526401e-02 8.846435111118e-03 7.182360140381e-02 4.597925251828e-04 -5.631237376197e-05 +8.812249603071e-02 9.303750559386e-03 -4.698959540118e-02 3.959452889208e-04 -8.301690448041e-05 +-6.916994553836e-02 9.673354595891e-03 5.137113983306e-02 2.860075661659e-04 -1.064713334235e-04 +1.908647756968e-01 9.908965122241e-03 9.436037301356e-02 1.694070795280e-04 -1.270717056157e-04 +1.195508004888e-01 1.002775722762e-02 -8.911165623861e-03 5.529637542302e-05 -1.410194996069e-04 +1.730424444491e-01 1.001463385270e-02 -1.065554124036e-01 -9.215866183908e-05 -1.477314732829e-04 +-9.356002431854e-02 9.833037745977e-03 -6.762401165258e-02 -2.512275951398e-04 -1.491350078657e-04 +3.779442114395e-02 9.474329770374e-03 3.977207289003e-02 -4.003497674297e-04 -1.460830907229e-04 +-1.401587853848e-02 9.025789312033e-03 -6.306360439385e-02 -5.435393017389e-04 -1.323926920493e-04 +-8.833278764374e-02 8.383646962718e-03 8.542959561939e-02 -6.700441571771e-04 -1.186118883189e-04 +1.568433127003e-01 7.623414567049e-03 3.590103578789e-03 -7.891915443544e-04 -1.008744801361e-04 +-8.115258048616e-02 6.731959786820e-03 4.577133398215e-02 -8.822432238888e-04 -8.315065588722e-05 +2.483859806646e-01 5.751109956936e-03 -1.925212991419e-02 -9.615106119688e-04 -6.504380930815e-05 +-1.196568403145e-01 4.777020857033e-03 -8.903569083813e-02 -9.888099700687e-04 -4.188103334688e-05 +7.031459898835e-02 3.705852369093e-03 9.596666606616e-03 -1.030011138909e-03 -2.525934559997e-05 +-1.004635071013e-01 2.686576031710e-03 -1.269020190611e-01 -1.036777293589e-03 -5.177048734541e-06 +-1.834894391338e-01 1.669226174896e-03 1.415913439030e-02 -1.031065203554e-03 1.191744389193e-05 +-7.214523832071e-02 6.650939962570e-04 6.435658187995e-02 -9.839755450828e-04 2.510179503877e-05 +-5.477627537394e-02 -3.074746653538e-04 -2.245531975766e-02 -9.491765812874e-04 3.480854505032e-05 +-1.170558778360e-01 -1.163573119579e-03 1.492045045969e-01 -9.085398495256e-04 4.782999453449e-05 +2.436327338198e-01 -2.025377017172e-03 1.906205185713e-02 -8.550853357215e-04 5.380611008136e-05 +-7.893177412177e-02 -2.844869735464e-03 -6.910278703910e-02 -8.029643516901e-04 5.699601636642e-05 +1.054271597416e-01 -3.371171744656e-03 5.730854756870e-02 -6.832898117679e-04 7.816667817721e-05 +3.568532101563e-02 -3.779549517942e-03 4.401999726641e-03 -5.505509926032e-04 1.021580742959e-04 +1.142311591949e-01 -4.012694963115e-03 1.877928565310e-02 -3.694223878525e-04 1.330426994769e-04 +7.324389232184e-02 -4.151171808349e-03 -8.463895919199e-02 -1.778172661223e-04 1.629569124774e-04 +-5.504675918911e-02 -4.046787693150e-03 -1.182857685290e-01 7.215804740346e-05 2.024392794934e-04 +-1.633276447361e-01 -3.565013171725e-03 -2.413322485119e-02 4.024277789583e-04 2.593589356927e-04 +-1.033132088915e-01 -2.734355225907e-03 1.207108580053e-01 7.344652713637e-04 3.274641987063e-04 +7.809407127448e-02 -1.632101370848e-03 -8.760669474301e-03 1.135473164828e-03 3.954948972672e-04 +-1.208345478401e-01 -1.442816628053e-05 -8.080024033537e-03 1.631715920812e-03 4.770846598401e-04 +6.193402320741e-02 2.064344638669e-03 4.585113901993e-02 2.206293004982e-03 5.598725735466e-04 +-2.913226980024e-02 4.750302836072e-03 -2.552259890320e-02 2.876295558873e-03 6.472691407509e-04 +1.088882540100e-02 8.223398885568e-03 6.232933058642e-02 3.626214120645e-03 7.446194594461e-04 +9.552639137260e-02 1.242401322887e-02 -7.742936745527e-03 4.504500291123e-03 8.362038811719e-04 +-4.597048090056e-03 1.750181805376e-02 -7.611364513107e-02 5.445997082885e-03 9.234907592416e-04 +-5.670089888954e-02 2.360270986618e-02 -2.127875489173e-02 6.494379309464e-03 1.007679621257e-03 +-4.715455787351e-02 3.082507214254e-02 3.694001176225e-02 7.579398966958e-03 1.086365698521e-03 +1.717912463497e-02 3.916172193076e-02 -2.445393348657e-04 8.759728990737e-03 1.148941992147e-03 +-4.764363654325e-02 4.871004038283e-02 -4.751071540588e-02 9.984717120917e-03 1.194415308512e-03 +-7.784230617679e-02 5.949172079031e-02 -1.378025829864e-02 1.122657801598e-02 1.217651520647e-03 +-7.520415314053e-02 7.146268091778e-02 -1.000483118612e-02 1.251002421727e-02 1.209915351644e-03 +-9.785196854903e-02 8.485058894022e-02 9.595137140726e-02 1.376777841374e-02 1.187780419285e-03 +1.166985896740e-01 9.937584709824e-02 -7.683755555629e-03 1.502376865200e-02 1.128371424661e-03 +-1.132194796603e-01 1.151702285398e-01 -3.027638451987e-02 1.614776563469e-02 1.046941138879e-03 +5.614582063426e-02 1.319765193185e-01 7.283693175017e-02 1.719334315493e-02 9.299583533409e-04 +3.245438384007e-02 1.498594294793e-01 3.602956877136e-02 1.810235853324e-02 7.937697384858e-04 +1.282049581770e-01 1.685860108839e-01 -9.804060628377e-03 1.884803399391e-02 6.335389505649e-04 +1.284626258331e-02 1.879966736699e-01 -1.761645197372e-02 1.945119961640e-02 4.531980676792e-04 +9.297205422953e-02 2.079229913729e-01 1.234467862729e-02 1.987121014111e-02 2.583693167320e-04 +3.753561983789e-02 2.281601981988e-01 -4.741000551627e-02 2.007604842249e-02 5.406217645732e-05 +-1.847956803011e-03 2.483124372121e-01 2.375010835743e-01 2.009029615810e-02 -1.694043253863e-04 +5.125377869864e-01 2.686148061724e-01 2.315871218596e-01 1.989225548091e-02 -3.685931987519e-04 +4.613262869162e-01 2.884976672112e-01 3.238174071326e-02 1.949952431767e-02 -5.675792472007e-04 +5.773012684129e-01 3.079400510909e-01 -4.521601708472e-02 1.891647057837e-02 -7.459053294134e-04 +3.708942527468e-01 3.265817161875e-01 -3.683424857368e-02 1.814171519112e-02 -9.130838110424e-04 +5.036327712656e-01 3.443943831472e-01 1.941971331671e-01 1.721127241711e-02 -1.053435758111e-03 +7.592885190810e-01 3.613186243123e-01 8.723125336616e-03 1.616077094223e-02 -1.157296804451e-03 +5.210790219388e-01 3.771645620310e-01 -1.795668727796e-01 1.500536319956e-02 -1.229522742435e-03 +4.001547735218e-01 3.918450881793e-01 2.820549822887e-02 1.381090486642e-02 -1.270459979156e-03 +5.774900183965e-01 4.052916508233e-01 3.132590132995e-02 1.261981146236e-02 -1.283225942097e-03 +4.628065761817e-01 4.174837885870e-01 -4.502613513866e-02 1.137310363056e-02 -1.269880722630e-03 +4.874377481192e-01 4.284895981131e-01 3.616813253004e-02 1.020350906129e-02 -1.228685800263e-03 +5.351428412417e-01 4.383346399485e-01 3.947122613496e-02 9.064362559528e-03 -1.164825436279e-03 +5.663802003891e-01 4.470513067512e-01 -6.347610975406e-02 7.999166124057e-03 -1.084939217950e-03 +4.081906217336e-01 4.546706059148e-01 -1.570309662054e-02 7.015513842376e-03 -9.977522676693e-04 +5.349740071481e-01 4.614968856025e-01 1.453107732675e-03 6.147210306977e-03 -8.905292217981e-04 +4.110968371990e-01 4.675387473744e-01 -2.218568568701e-02 5.387291748808e-03 -7.760163141727e-04 +4.906026357740e-01 4.728727365255e-01 2.381281334618e-02 4.742785704863e-03 -6.613204222428e-04 +4.587224638913e-01 4.775121588510e-01 -5.561642199975e-02 4.192548741383e-03 -5.581654147437e-04 +3.793697917745e-01 4.816945542440e-01 -1.689118333193e-02 3.742057559295e-03 -4.584777773702e-04 +4.249400972275e-01 4.854211101552e-01 9.450426207188e-02 3.364531019073e-03 -3.725266658193e-04 +5.683783159183e-01 4.888243950410e-01 7.535781219804e-02 3.071310663763e-03 -2.980893090735e-04 +5.756557216236e-01 4.920004597254e-01 -7.882265266589e-02 2.850664714367e-03 -2.345193314382e-04 +4.107330105865e-01 4.950212847406e-01 -8.712934659425e-02 2.740454228795e-03 -1.820098463547e-04 +4.013970284351e-01 4.979099230249e-01 3.834436660366e-02 2.617871727701e-03 -1.426575036430e-04 +4.874217437939e-01 5.006189929903e-01 2.031640164097e-02 2.539604340318e-03 -1.224971333539e-04 +4.420298317170e-01 5.032957724307e-01 4.346640447164e-02 2.482432287465e-03 -1.104592813604e-04 +5.743545527371e-01 5.058757604933e-01 7.860274948758e-02 2.438264190945e-03 -1.118618682777e-04 +5.992353306922e-01 5.084466822093e-01 -2.175549887224e-02 2.376664295483e-03 -1.181579262276e-04 +5.308435549927e-01 5.109589338535e-01 -1.115295634215e-01 2.323078895386e-03 -1.316205047988e-04 +3.761762038492e-01 5.134495680337e-01 8.205580167910e-02 2.254181603207e-03 -1.468942062142e-04 +6.949551583509e-01 5.159155265879e-01 8.850032021208e-02 2.175946904166e-03 -1.615597517154e-04 +5.531768442734e-01 5.180076086377e-01 -4.119483818578e-02 2.098405473696e-03 -2.020181796856e-04 +6.125654819793e-01 5.201126017259e-01 -8.986962110593e-02 2.003609540329e-03 -2.329424501225e-04 +3.734376020616e-01 5.220350769728e-01 -1.061073854668e-01 1.880476867733e-03 -2.673357536937e-04 +4.003507110457e-01 5.239279265385e-01 8.739406509658e-02 1.716429394092e-03 -2.890995913478e-04 +5.482257322547e-01 5.255103813415e-01 5.565409328125e-02 1.518008628130e-03 -3.184923362766e-04 +5.116588976082e-01 5.268451554409e-01 2.766304296466e-02 1.332395171078e-03 -3.477882359892e-04 +6.035518181840e-01 5.280553511535e-01 8.561800907283e-02 1.095448775286e-03 -3.642986343705e-04 +6.828949157539e-01 5.290091916374e-01 -1.036092261707e-01 8.167268546502e-04 -3.764883541977e-04 +3.963333658427e-01 5.296649851122e-01 -2.017093189072e-02 5.589131432569e-04 -3.864208972631e-04 +6.425530519724e-01 5.301239571963e-01 7.165399784376e-02 2.907180237443e-04 -3.849729832240e-04 +5.396413615302e-01 5.302652715749e-01 -6.412031313450e-02 1.645298656857e-05 -3.818160106555e-04 +5.143124257034e-01 5.301732013437e-01 -6.539071942301e-02 -2.309559423105e-04 -3.704160115690e-04 +4.088599226842e-01 5.298125280424e-01 7.410786681474e-02 -4.659194914434e-04 -3.549696578033e-04 +6.625281593329e-01 5.292600074501e-01 1.405953667627e-01 -7.037558944625e-04 -3.306383356067e-04 +6.900506562097e-01 5.284273574711e-01 1.111605056164e-02 -9.065045698517e-04 -3.071355189658e-04 +6.847602604562e-01 5.274588930204e-01 -9.945409402982e-02 -1.092246599695e-03 -2.754279040981e-04 +4.911424681501e-01 5.263085309052e-01 -7.265791117773e-02 -1.233036646847e-03 -2.428773529750e-04 +5.394444381008e-01 5.249907942108e-01 -4.741757927135e-02 -1.359659605733e-03 -2.120291954998e-04 +3.963073096074e-01 5.236008760206e-01 -5.560936001205e-02 -1.459812464482e-03 -1.786222201461e-04 +4.282257180767e-01 5.221433137735e-01 4.248584371751e-02 -1.513648133596e-03 -1.462690760818e-04 +4.812789970424e-01 5.205833474051e-01 1.459771209173e-01 -1.526943737005e-03 -1.218178805151e-04 +7.201799599112e-01 5.190036503559e-01 -1.769784809460e-02 -1.521139029595e-03 -1.016846972883e-04 +4.458833008532e-01 5.175429754163e-01 -1.585590909455e-01 -1.498952343238e-03 -7.695697890432e-05 +4.030617780201e-01 5.161968315753e-01 1.240626418000e-02 -1.432049723967e-03 -5.054349781534e-05 +4.706958292132e-01 5.147729627671e-01 1.961874174439e-02 -1.370464184102e-03 -4.030539073577e-05 +4.422992615089e-01 5.134742674758e-01 -1.483889286814e-02 -1.292410794682e-03 -3.020782292010e-05 +4.410180434769e-01 5.123152287685e-01 3.722186603915e-02 -1.162782284722e-03 -1.997481129022e-05 +5.167429935872e-01 5.111899967818e-01 6.201024192390e-02 -1.048652946425e-03 -1.865156394108e-05 +5.650385273247e-01 5.101789265201e-01 6.876272403755e-02 -9.477798269213e-04 -1.873294004116e-05 +6.542684416623e-01 5.092823642240e-01 -8.993361450944e-02 -8.745678293846e-04 -1.902035600424e-05 +3.851712983058e-01 5.083522361909e-01 -2.892339807514e-02 -7.711537341636e-04 -3.095224793877e-05 +5.964216455120e-01 5.075675486465e-01 6.658635057689e-02 -6.935313006891e-04 -3.857419291498e-05 +5.183439994596e-01 5.068264891550e-01 8.885366680933e-03 -6.209115101875e-04 -4.907669462911e-05 +6.141923788739e-01 5.062702258221e-01 -5.625390549142e-02 -5.712826818035e-04 -4.959000021621e-05 +4.058361884768e-01 5.057320106854e-01 -4.947937122921e-02 -5.264590047849e-04 -5.320135410227e-05 +5.152336364155e-01 5.052013302869e-01 5.091646380508e-02 -4.666223075741e-04 -6.052566908439e-05 +5.076691160869e-01 5.048015728640e-01 -6.182786892944e-02 -3.987431024253e-04 -6.130607066030e-05 +3.915778985566e-01 5.043386136983e-01 -8.259317336599e-03 -3.519765023263e-04 -7.161472204999e-05 +4.911504814137e-01 5.039354559177e-01 8.065287947979e-02 -2.944019158033e-04 -8.114911036268e-05 +5.528836575162e-01 5.036442749215e-01 -1.763445234772e-02 -2.857519227662e-04 -8.527957681756e-05 +4.558815767183e-01 5.032911770132e-01 1.232581747749e-02 -2.539212727165e-04 -9.833036651441e-05 +5.775352924712e-01 5.030743951976e-01 4.086433556034e-02 -2.230704329295e-04 -1.038696492764e-04 +5.376102478390e-01 5.028807112693e-01 -3.954353141528e-02 -2.048455557459e-04 -1.109294108045e-04 +4.984482296406e-01 5.027688862131e-01 -3.490294009740e-02 -1.952905581539e-04 -1.139058164436e-04 +4.678043676442e-01 5.024950383331e-01 4.141164471926e-04 -1.896728354013e-04 -1.322098651715e-04 +4.992764625350e-01 5.021727301955e-01 3.110024670897e-02 -2.106456189361e-04 -1.547878945143e-04 +5.300048610621e-01 5.017829125617e-01 -4.500071328271e-02 -2.661992078636e-04 -1.809331762857e-04 +4.092750359696e-01 5.013869573495e-01 -4.561742764466e-02 -3.683344623129e-04 -2.027453294330e-04 +4.387700057728e-01 5.009364237669e-01 4.970292799631e-02 -4.659459433282e-04 -2.217170467366e-04 +5.086808919622e-01 5.004786169599e-01 1.535794303108e-02 -5.808841565998e-04 -2.316301875072e-04 +4.694858918349e-01 4.998391083820e-01 -3.743597848595e-02 -7.171197955473e-04 -2.446272918009e-04 +4.338089349903e-01 4.990971728043e-01 3.820340350601e-02 -8.426562809655e-04 -2.521359910401e-04 +5.458926988470e-01 4.981050610706e-01 1.435174218779e-01 -9.621729259892e-04 -2.650865882816e-04 +7.208437787461e-01 4.971299004103e-01 -5.782558382578e-02 -1.103768863554e-03 -2.599242174542e-04 +4.302415311954e-01 4.959512008218e-01 -9.527986089258e-02 -1.265571293247e-03 -2.541818183473e-04 +5.302840569609e-01 4.946400938292e-01 1.632583735248e-01 -1.398231589104e-03 -2.422059753105e-04 +7.567582782450e-01 4.932307806350e-01 8.978112421007e-03 -1.513542589402e-03 -2.224367171070e-04 +5.482402818029e-01 4.917558613337e-01 -1.298572426704e-01 -1.594952392831e-03 -1.941898157809e-04 +4.970437929042e-01 4.901113214537e-01 -6.686602192044e-02 -1.661144038993e-03 -1.687807726314e-04 +4.145082379620e-01 4.884104925180e-01 -4.329721711495e-02 -1.691301514985e-03 -1.398695394356e-04 +4.104493586743e-01 4.866744468619e-01 -2.808090664285e-04 -1.679013255174e-03 -1.094524984184e-04 +4.139466198292e-01 4.850468762209e-01 -1.025283395563e-02 -1.664414580309e-03 -6.927785904642e-05 +3.899436907631e-01 4.833838749787e-01 3.202873601018e-02 -1.588562739087e-03 -3.547134004833e-05 +4.780040918495e-01 4.818357821857e-01 1.880908661737e-02 -1.487797267216e-03 1.894978253048e-07 +4.275618639978e-01 4.802929849351e-01 -1.054927871376e-02 -1.366953349079e-03 2.481406989115e-05 +4.569055344220e-01 4.789587372960e-01 8.522607450135e-02 -1.242101280621e-03 5.213083062453e-05 +5.980140130005e-01 4.778502363342e-01 -4.290711148239e-02 -1.044615485558e-03 8.013935633642e-05 +3.710913114572e-01 4.769253985077e-01 -6.367836689794e-02 -8.306882552365e-04 1.021128411108e-04 +4.706572792046e-01 4.762943747525e-01 1.071879212136e-02 -5.994866365982e-04 1.249799920679e-04 +3.925288956999e-01 4.758231349528e-01 -2.488263175625e-02 -3.527880910565e-04 1.357478575973e-04 +4.208920156921e-01 4.755092072567e-01 1.014814612155e-01 -1.139579617015e-04 1.332263505929e-04 +5.954918181309e-01 4.754923971967e-01 7.257652093847e-02 1.177969711131e-04 1.289366542810e-04 +5.660450575691e-01 4.757720940080e-01 2.230561906021e-02 3.864317650712e-04 1.227471987439e-04 +6.401030562514e-01 4.763212401725e-01 -6.067551223454e-02 6.401756349189e-04 1.128396312418e-04 +4.446940331000e-01 4.770697108650e-01 -1.379985825597e-01 8.594494075818e-04 9.497263274382e-05 +3.641058911319e-01 4.780939464754e-01 -8.175874537526e-02 1.072099362704e-03 7.753072984892e-05 +2.811765423495e-01 4.791800647298e-01 -4.226539607583e-02 1.229400173867e-03 4.535170886370e-05 +2.795750989802e-01 4.804709756755e-01 8.317699739164e-02 1.377575563374e-03 1.357231276992e-05 +4.475305371327e-01 4.818517049686e-01 1.434852908486e-01 1.456005772682e-03 -2.364552842860e-05 +5.665456806775e-01 4.833793369680e-01 1.396487710138e-03 1.527540340741e-03 -5.751318287478e-05 +4.503235125530e-01 4.849187117773e-01 6.410875526119e-03 1.565985347804e-03 -9.546486141383e-05 +5.793674317297e-01 4.865305093094e-01 1.565031345307e-02 1.574815203352e-03 -1.283094482687e-04 +4.816241394591e-01 4.881359541164e-01 9.782725575223e-03 1.545064866668e-03 -1.585512311785e-04 +5.989328828802e-01 4.896725308275e-01 -3.080774487281e-02 1.501636099871e-03 -1.877370153520e-04 +4.200086497135e-01 4.910654619430e-01 -3.548386752687e-02 1.440569002882e-03 -2.189585098563e-04 +5.279651478264e-01 4.924487116478e-01 7.450705194836e-02 1.313237947984e-03 -2.378212801712e-04 +5.690227536102e-01 4.937033701364e-01 6.385482047853e-02 1.191433925926e-03 -2.518790079902e-04 +6.556747887835e-01 4.947418363695e-01 -4.502540925036e-02 1.077311084044e-03 -2.674144244882e-04 +4.789719351095e-01 4.957611374771e-01 -7.448201879104e-02 9.400577968429e-04 -2.672992892072e-04 +5.067107512014e-01 4.966358986477e-01 2.411572378584e-02 7.931675165275e-04 -2.618573424693e-04 +5.272033826812e-01 4.973336262752e-01 1.633981026425e-03 6.274981881409e-04 -2.543163263907e-04 +5.099787132543e-01 4.979583544547e-01 -9.663162987187e-03 4.963106263370e-04 -2.374163147166e-04 +5.078770567068e-01 4.984482533786e-01 -4.935660138421e-03 3.805139403347e-04 -2.184865348960e-04 +5.001073929774e-01 4.988521068255e-01 -9.580420214561e-02 2.859512099701e-04 -1.957895873315e-04 +3.162686524156e-01 4.990873221654e-01 -8.319430196716e-02 2.067428501044e-04 -1.786886522125e-04 +3.337187890431e-01 4.993638170103e-01 1.483519229221e-01 1.682868400657e-04 -1.523629874622e-04 +6.129724982597e-01 4.995266637071e-01 1.062193367282e-01 1.359197212674e-04 -1.323467375097e-04 +5.461574624995e-01 4.995725772568e-01 2.263717307951e-03 1.229901221598e-04 -1.211380013601e-04 +6.174999328756e-01 4.997172296936e-01 -1.988877823032e-02 1.070836992570e-04 -1.026198657194e-04 +5.063799060389e-01 4.997405050480e-01 -1.384297245466e-01 9.374936085866e-05 -9.663469739300e-05 +3.406404837825e-01 4.997626881208e-01 -5.032881234843e-02 7.159567688815e-05 -9.418161397440e-05 +4.057222813420e-01 4.999546932107e-01 1.540116357363e-01 1.121908894473e-04 -8.228846312769e-05 +6.486637552550e-01 5.000464111831e-01 1.119541157546e-01 1.545107750352e-04 -8.463594752266e-05 +6.296305128512e-01 5.002359521033e-01 -7.882819105646e-02 2.044482542287e-04 -8.495266233291e-05 +4.910073731421e-01 5.003710657564e-01 -6.008370204867e-03 2.367090254436e-04 -9.568316286722e-05 +6.176137724414e-01 5.005895050672e-01 -8.431377633407e-02 2.348568547346e-04 -1.043317645777e-04 +3.223798204739e-01 5.008759001645e-01 -6.381155819097e-02 2.285897713380e-04 -1.110352141507e-04 +4.899906560595e-01 5.011631150466e-01 -8.012841501296e-03 2.005981205190e-04 -1.201249199392e-04 +3.063541374714e-01 5.014414858792e-01 1.779643864186e-02 1.686347498980e-04 -1.308556199591e-04 +5.255835333432e-01 5.016821051449e-01 8.729804218539e-02 1.582486311914e-04 -1.442438137079e-04 +4.809502218421e-01 5.017455495675e-01 2.274706752116e-02 1.104858650189e-04 -1.699310213209e-04 +5.710776683855e-01 5.017810059038e-01 3.290751202917e-02 2.363428322454e-05 -1.926302143048e-04 +5.467652459005e-01 5.018183988469e-01 1.588808141082e-03 -3.018832715785e-05 -2.076502075061e-04 +5.742552846677e-01 5.017359615642e-01 -1.909498443553e-02 -1.342687744006e-04 -2.229699800252e-04 +5.085752770294e-01 5.015092623515e-01 -6.573451899650e-02 -2.387536950684e-04 -2.382669988529e-04 +4.427862466747e-01 5.011762570367e-01 1.236643274878e-02 -3.905285538865e-04 -2.482621835721e-04 +5.333081425270e-01 5.007301689223e-01 2.926787939281e-02 -5.163265930385e-04 -2.520327395277e-04 +5.013220054603e-01 5.001255364784e-01 2.142907189589e-02 -6.444515818089e-04 -2.527972038384e-04 +5.761662863188e-01 4.993157770432e-01 9.164526253494e-03 -7.763886728023e-04 -2.540769611571e-04 +5.196510579673e-01 4.985177754889e-01 -9.656478563259e-02 -8.991310850387e-04 -2.381118336072e-04 +3.830367150536e-01 4.975354457345e-01 2.979921389653e-02 -1.018761984559e-03 -2.223697829012e-04 +5.792494857604e-01 4.964452019863e-01 8.518086699848e-02 -1.115508820295e-03 -2.023165154412e-04 +5.533984490505e-01 4.952579424016e-01 6.271910318497e-04 -1.197048236540e-03 -1.795122164146e-04 +5.805038678241e-01 4.940799957551e-01 -5.044957516810e-02 -1.231333840653e-03 -1.482668715120e-04 +4.524992987143e-01 4.927553304978e-01 4.332941067771e-02 -1.273195878786e-03 -1.249060215592e-04 +6.671626891795e-01 4.915168701122e-01 1.851264306214e-02 -1.293989800862e-03 -9.318296094764e-05 +4.895245848386e-01 4.903219277566e-01 -1.431159727684e-01 -1.266252121345e-03 -6.045277697736e-05 +3.809307436427e-01 4.889764027662e-01 -1.827436691218e-02 -1.209599864660e-03 -4.659463072649e-05 +4.529758510143e-01 4.877961362282e-01 -5.584113553130e-02 -1.123579683225e-03 -2.829801093227e-05 +2.692484725801e-01 4.867024845871e-01 -1.094350770901e-01 -1.009301164738e-03 -1.472505536182e-05 +2.341056968341e-01 4.858128312698e-01 2.086674402181e-01 -8.804514063529e-04 1.925921319064e-06 +6.865833530163e-01 4.849895346045e-01 1.257322131736e-01 -7.910678155805e-04 9.385747024283e-06 +4.855701231813e-01 4.842843178825e-01 -4.708360049439e-02 -6.769308369332e-04 1.175019832914e-05 +5.924161520275e-01 4.836032745402e-01 -3.620645387990e-02 -5.416906563363e-04 1.083002896530e-06 +4.131572154215e-01 4.830370613056e-01 -9.759740221334e-02 -4.269757311013e-04 -1.403196553234e-05 +3.972213476009e-01 4.826888316073e-01 4.657624752670e-02 -3.233126905477e-04 -2.317867087382e-05 +5.063097104749e-01 4.823743949830e-01 3.640252368075e-02 -2.240931838598e-04 -3.979669953217e-05 +4.700263949624e-01 4.822175218501e-01 8.646310700680e-03 -1.807607320060e-04 -5.098616974998e-05 +5.236023318763e-01 4.821094767337e-01 8.869320949721e-02 -1.127539825580e-04 -6.348939222716e-05 +6.474128139568e-01 4.821256806603e-01 -7.453224077923e-02 -7.454042141927e-05 -6.904792061769e-05 +3.745378503178e-01 4.820149379410e-01 -1.425577491402e-01 -4.620021274497e-05 -8.650713591108e-05 +3.622973156764e-01 4.820261828426e-01 1.542072908259e-01 -1.257615188892e-05 -9.355393273849e-05 +6.829524319697e-01 4.820033461929e-01 5.771005154990e-02 1.445340882876e-05 -1.021016576100e-04 +4.777174187762e-01 4.819233623083e-01 -9.649171895198e-02 5.938825117259e-06 -1.129791201637e-04 +4.899689940658e-01 4.818583600255e-01 -5.407996428894e-02 1.686625581986e-06 -1.195474722223e-04 +3.695574901983e-01 4.818952447264e-01 2.822799664986e-02 1.169689965562e-05 -1.148662280680e-04 +5.464249873655e-01 4.819062048518e-01 6.779350735027e-02 3.153544586280e-06 -1.101389396664e-04 +5.051445048988e-01 4.818746576975e-01 -7.604334893410e-02 6.997679213279e-06 -1.075502422093e-04 +3.943382894973e-01 4.818656311932e-01 4.090310905261e-02 1.263468441476e-05 -1.028100723675e-04 +5.869507230041e-01 4.818930905222e-01 2.718617788150e-02 4.647264592633e-05 -9.613363612649e-05 +4.487106452603e-01 4.818702850301e-01 -5.803999345862e-02 4.975763687435e-05 -9.580551376655e-05 +4.708707360868e-01 4.819821180780e-01 -7.575075257313e-03 6.438609683178e-05 -8.714984053759e-05 +4.335604947456e-01 4.819717814039e-01 6.955025115886e-02 8.348428575309e-05 -9.248919717028e-05 +6.099712384045e-01 4.820018899949e-01 -5.929763379802e-02 9.806532509896e-05 -9.861538227701e-05 +3.149652271496e-01 4.821616611749e-01 -8.407306974625e-02 1.460071611181e-04 -9.839078882329e-05 +4.418250989120e-01 4.822925611568e-01 1.248842767463e-01 1.452398082115e-04 -1.046522129164e-04 +5.647337806423e-01 4.823800486620e-01 -5.428777175810e-02 1.677304379883e-04 -1.177471807909e-04 +3.332495553958e-01 4.824884588833e-01 -2.525388009111e-02 1.426770183550e-04 -1.310553216170e-04 +5.142260204601e-01 4.826342242714e-01 1.078579513570e-01 1.020891530199e-04 -1.412920923230e-04 +5.489654581098e-01 4.827698634096e-01 7.046143957785e-02 7.530580747932e-05 -1.509331660037e-04 +6.551488996158e-01 4.828982315699e-01 -8.696998607218e-02 9.568250480287e-06 -1.579206428042e-04 +3.750254859654e-01 4.829153647288e-01 -8.663586583637e-02 -8.307019749973e-05 -1.686644230529e-04 +4.818771679430e-01 4.827121424725e-01 4.139608736885e-02 -1.331399355524e-04 -1.907377729190e-04 +4.578176607031e-01 4.825064168738e-01 -3.536716217223e-02 -2.263066035226e-04 -2.042808618899e-04 +4.111428435986e-01 4.822766343092e-01 5.095604593202e-02 -2.878619232637e-04 -2.095926060154e-04 +5.597297525672e-01 4.820871718466e-01 4.789129643097e-02 -3.566894056555e-04 -2.006548102345e-04 +5.069254364605e-01 4.816541460647e-01 -6.004627742057e-02 -4.709485081388e-04 -2.002608621860e-04 +4.396371977260e-01 4.811466611085e-01 4.102802461146e-02 -5.499050042769e-04 -1.942017801088e-04 +5.889814856834e-01 4.806303154006e-01 7.708830881385e-02 -6.077823503483e-04 -1.780201997671e-04 +5.938138153537e-01 4.799459287167e-01 -9.979933659433e-02 -6.718392520120e-04 -1.661336381074e-04 +3.893828124948e-01 4.792419962756e-01 -3.813928004785e-03 -6.861046480038e-04 -1.479989624151e-04 +5.861859593442e-01 4.785946185683e-01 5.867130626435e-02 -7.159236549561e-04 -1.194866943895e-04 +5.067254250235e-01 4.779478733037e-01 -1.393943486338e-01 -7.139143578618e-04 -8.778104721240e-05 +3.073972620765e-01 4.770931252800e-01 -5.737403535671e-02 -6.832627373795e-04 -7.347365529711e-05 +3.919773543101e-01 4.764644183237e-01 1.407747629987e-01 -6.226488440347e-04 -4.356165462519e-05 +5.889467880739e-01 4.758612816396e-01 3.056787684621e-02 -5.447589876689e-04 -1.801247634131e-05 +4.531131080025e-01 4.754439105305e-01 -7.565550554900e-02 -4.377228913232e-04 1.327065455230e-05 +4.376357769759e-01 4.751385466803e-01 -1.337579249415e-04 -2.685207424401e-04 4.050484641027e-05 +4.528455921526e-01 4.749702344167e-01 6.724568553288e-02 -9.471713613701e-05 6.260388820104e-05 +5.721271480417e-01 4.749289816357e-01 -5.974718298256e-02 6.013180964506e-05 7.671486499561e-05 +3.333512261875e-01 4.750388284189e-01 -2.164247686903e-02 2.613261259763e-04 8.289812113918e-05 +5.288421943036e-01 4.753923163325e-01 1.163515700237e-02 4.506128215959e-04 8.739568945541e-05 +3.566215401922e-01 4.759424544539e-01 -6.810542654902e-02 6.473937390461e-04 8.572048694734e-05 +3.926313412056e-01 4.766663769507e-01 1.615478965771e-01 8.255348998522e-04 7.606271715736e-05 +6.797173333464e-01 4.775558966496e-01 9.901779724768e-03 1.023708363498e-03 5.837665500504e-05 +4.124349006551e-01 4.787086914754e-01 -9.837219674682e-02 1.165266238100e-03 4.244165609971e-05 +4.829729398527e-01 4.799326704782e-01 -2.439833694886e-02 1.294470837172e-03 1.474061321216e-05 +3.636382267574e-01 4.813212796685e-01 -2.141989425362e-02 1.432866980658e-03 -1.448303997538e-05 +4.401331513455e-01 4.829100929147e-01 1.052911750200e-01 1.517805706621e-03 -3.898265364344e-05 +5.742205767973e-01 4.844523928718e-01 2.670118937917e-02 1.577584374966e-03 -7.542889500115e-05 +4.935355301039e-01 4.860136201872e-01 -1.004336378636e-01 1.600732785044e-03 -1.142923419257e-04 +3.733533010700e-01 4.876165122651e-01 -3.087464853091e-02 1.617839506138e-03 -1.496408734641e-04 +4.317862330420e-01 4.892160108138e-01 2.045830572360e-02 1.544486860189e-03 -1.807574592141e-04 +4.142699125172e-01 4.906981535975e-01 1.156058038354e-01 1.453466395593e-03 -2.127611728361e-04 +6.629978407129e-01 4.921062431134e-01 1.749330461561e-01 1.337060426068e-03 -2.385648985341e-04 +7.641360048294e-01 4.933709590660e-01 -1.580824310081e-01 1.183388073573e-03 -2.607047577341e-04 +3.468329786968e-01 4.944957794469e-01 -1.243841886523e-01 1.046746352142e-03 -2.765925411326e-04 +5.153676275248e-01 4.954763587470e-01 1.454889071353e-01 8.870693640912e-04 -2.850691627518e-04 +6.378107929675e-01 4.962994443855e-01 -5.315125872929e-02 7.104978589463e-04 -2.861028813833e-04 +4.090651100662e-01 4.969953562318e-01 -2.600927143368e-02 5.804359377419e-04 -2.774669417243e-04 +5.857922501001e-01 4.974285664047e-01 5.633599659817e-02 4.227501475869e-04 -2.713877095286e-04 +5.217371032626e-01 4.977973141472e-01 -1.869647588110e-02 2.598682266530e-04 -2.523653845881e-04 +5.483992983379e-01 4.979751886880e-01 -1.230113459881e-01 1.456829033993e-04 -2.333369936758e-04 +2.757144112864e-01 4.980028831386e-01 -2.016930196847e-04 2.295892319628e-05 -2.136988942279e-04 +5.479959122985e-01 4.980324207339e-01 8.439290434961e-02 -8.497811306652e-05 -1.835378198114e-04 +4.445002199856e-01 4.979705956483e-01 1.127018245133e-02 -1.456816007950e-04 -1.541907239285e-04 +5.705362772012e-01 4.977595010256e-01 1.166983007574e-01 -1.689420330784e-04 -1.342677356359e-04 +6.778968215004e-01 4.975976051616e-01 -1.279013860204e-02 -1.811832193313e-04 -1.104323219905e-04 +5.449559999971e-01 4.974218167656e-01 -1.717155449833e-01 -1.780794756881e-04 -9.071387161888e-05 +3.344657315337e-01 4.972994389186e-01 -4.518182146101e-02 -1.420058723231e-04 -7.212279982849e-05 +4.545923570751e-01 4.971958213588e-01 5.435487937811e-02 -7.328993400980e-05 -5.988687437203e-05 +4.431754902900e-01 4.972400749086e-01 9.447141820423e-03 -1.959489784598e-05 -4.460500223545e-05 +4.734866407159e-01 4.973111201215e-01 -2.234461370660e-02 7.581468993129e-05 -3.735738049511e-05 +3.984862628768e-01 4.974818435823e-01 2.018257762078e-02 1.430167155831e-04 -3.238850557406e-05 +5.138517959575e-01 4.977083483368e-01 3.310748162463e-02 2.162252059991e-04 -3.284290074324e-05 +4.647012261260e-01 4.978796397198e-01 -4.678649921415e-02 3.063020952805e-04 -4.741877623611e-05 +4.202787975292e-01 4.983056456941e-01 7.958522554889e-02 3.793345359058e-04 -4.908701038897e-05 +6.238716772238e-01 4.987056545313e-01 1.029049676436e-01 4.348471257114e-04 -5.963538243506e-05 +6.260887328164e-01 4.992601125642e-01 -6.590473441715e-02 4.868046338471e-04 -6.244251158350e-05 +4.920622083895e-01 4.997640303640e-01 -7.952000215669e-02 5.210214227961e-04 -7.307375497892e-05 +4.670487285030e-01 5.003199928016e-01 6.926885252066e-02 5.784502108426e-04 -8.177352359323e-05 +6.305999134308e-01 5.009436112378e-01 -2.532912152022e-02 6.167305422917e-04 -8.624427446212e-05 +4.163904854626e-01 5.015879268549e-01 -9.998674131757e-02 6.230491616381e-04 -8.920784138849e-05 +4.306264307957e-01 5.022558347524e-01 3.473945531693e-02 6.441008680529e-04 -8.990652149154e-05 +4.858693960964e-01 5.029356848279e-01 -6.265390876748e-03 6.591961866167e-04 -8.938976540822e-05 +4.180956490422e-01 5.035468746759e-01 4.800500872247e-02 6.998756142698e-04 -9.485119972434e-05 +5.818794135414e-01 5.041191928461e-01 6.145018994230e-02 7.333235909213e-04 -1.044368566696e-04 +5.409960289268e-01 5.049353859220e-01 -3.930211848836e-02 7.389890915602e-04 -9.487704943475e-05 +5.032751765646e-01 5.056297997978e-01 9.122180662469e-02 7.477402929892e-04 -9.733528318781e-05 +7.234396421762e-01 5.063856915189e-01 -4.391622457335e-02 7.938079411455e-04 -9.776893565723e-05 +4.154427274180e-01 5.071710111914e-01 -1.288906606563e-01 7.887148315614e-04 -9.941516615223e-05 +4.656583208636e-01 5.079942766570e-01 5.473820147534e-02 8.286048535651e-04 -1.019952976674e-04 +5.249191303686e-01 5.087961379158e-01 -5.171886572247e-02 8.344593333115e-04 -1.107336521908e-04 +3.622205894187e-01 5.096271577931e-01 -2.589935547907e-02 8.435991756229e-04 -1.208525304436e-04 +4.731204194105e-01 5.104556052554e-01 8.839737517315e-02 7.849163173285e-04 -1.336591108419e-04 +5.390153397650e-01 5.112519114306e-01 -1.057158217046e-02 7.749786643345e-04 -1.502520618035e-04 +4.519772550696e-01 5.120785652679e-01 -2.303861484257e-02 7.417047613407e-04 -1.640537347498e-04 +4.929381100798e-01 5.127763149543e-01 3.949430031339e-05 6.927343558312e-04 -1.860139399944e-04 +4.520562436702e-01 5.133829878097e-01 3.148073123620e-02 6.339379318852e-04 -2.104614131909e-04 +5.558995725522e-01 5.139500443654e-01 6.667166829578e-02 5.343831198976e-04 -2.301820710664e-04 +5.853995802618e-01 5.144871589727e-01 9.570320707945e-03 3.976785131788e-04 -2.412617931142e-04 +5.750402139681e-01 5.147648550337e-01 2.892995598797e-02 2.394813881207e-04 -2.601119182208e-04 +6.432594922377e-01 5.149262348658e-01 -2.810995522959e-02 7.652618508358e-05 -2.725657332558e-04 +5.188203035089e-01 5.149533005223e-01 -6.376137518407e-02 -8.071155105095e-05 -2.785504825344e-04 +5.157367418695e-01 5.148844295312e-01 -3.936884123191e-02 -2.372398970715e-04 -2.739301109175e-04 +4.400826210451e-01 5.145783544600e-01 5.747032386998e-02 -3.883108965387e-04 -2.702124791069e-04 +6.306773896095e-01 5.140645898834e-01 1.098321257208e-02 -5.602594274143e-04 -2.650386405833e-04 +4.620490461893e-01 5.134396804733e-01 -1.079931399245e-02 -7.165832651703e-04 -2.511447424357e-04 +6.090787616246e-01 5.126528662322e-01 -1.211692564298e-02 -8.203359963630e-04 -2.348903131442e-04 +4.378151949033e-01 5.117856186549e-01 -1.020102927086e-02 -9.003899351410e-04 -2.122290742782e-04 +5.886767030829e-01 5.108298179596e-01 6.156994710610e-02 -9.884047447710e-04 -1.864665475984e-04 +5.609550891155e-01 5.099029527037e-01 -7.589183700152e-02 -1.023778454697e-03 -1.510864732458e-04 +4.368930290798e-01 5.088378946926e-01 -1.954857160337e-02 -1.026403713742e-03 -1.239417608834e-04 +5.218579459088e-01 5.078693039045e-01 2.580144755866e-02 -1.018667045108e-03 -8.896627925366e-05 +4.884959241972e-01 5.068902618907e-01 -1.983110983890e-02 -9.844841763348e-04 -5.847123841946e-05 +4.821957262310e-01 5.059323342948e-01 -5.280853174917e-02 -9.185059448205e-04 -3.319163259681e-05 +3.828788606988e-01 5.050962351952e-01 3.853190654556e-02 -8.293142754582e-04 -7.705236196456e-06 +5.592595393221e-01 5.043509999661e-01 1.657134641743e-03 -6.870349694316e-04 1.258418014589e-05 +3.861931299823e-01 5.037160516589e-01 1.967453358197e-02 -5.463680137562e-04 2.714439689167e-05 +5.986086064860e-01 5.032737989233e-01 3.449612897018e-03 -3.870139978812e-04 4.146536730653e-05 +3.930923557763e-01 5.029537808215e-01 1.250126832502e-02 -1.842899264282e-04 4.822737660229e-05 +6.236111431361e-01 5.027911635944e-01 2.437955308998e-02 -5.162751107579e-05 5.019494284959e-05 +4.418514619563e-01 5.028611198097e-01 -4.923804988841e-02 1.199157050250e-04 5.386346124623e-05 +5.251350433593e-01 5.030476604622e-01 -6.582664488559e-02 2.883150647834e-04 4.940300204557e-05 +3.101981721851e-01 5.034980027983e-01 3.110722511720e-02 4.474746786010e-04 4.966570278254e-05 +5.873494935937e-01 5.041085750775e-01 1.553978231356e-01 6.277827177619e-04 4.647904583414e-05 +6.209938184563e-01 5.048007932302e-01 -3.639561421094e-02 7.882780300714e-04 3.401186274569e-05 +5.145582651718e-01 5.056552077570e-01 -4.868079770559e-02 9.203954451012e-04 2.038936012109e-05 +5.236322230451e-01 5.066452179425e-01 -9.436560868010e-03 1.048896393537e-03 4.767551901735e-06 +4.956851434358e-01 5.077925675629e-01 -2.397155694675e-03 1.163736339579e-03 -9.718814437748e-06 +5.188379116557e-01 5.089208290385e-01 -7.633207688219e-02 1.246117592108e-03 -3.605275568365e-05 +3.430209896714e-01 5.101756047512e-01 -3.476031673628e-02 1.324175294173e-03 -6.022612261970e-05 +4.493172781832e-01 5.115346056620e-01 1.028894415144e-01 1.387020273684e-03 -8.227740616211e-05 +5.487998727001e-01 5.128970962538e-01 9.348403866086e-02 1.426833889424e-03 -1.085130954060e-04 +6.362853555049e-01 5.142682499022e-01 -8.262938903161e-03 1.410174140502e-03 -1.358429248918e-04 +5.322739948938e-01 5.156680688697e-01 -1.370993287104e-01 1.382569512535e-03 -1.599219302493e-04 +3.620866980841e-01 5.170807081682e-01 -3.672092428325e-02 1.331466590546e-03 -1.796666503347e-04 +4.588321463273e-01 5.183035254376e-01 1.085566599856e-01 1.260277008513e-03 -2.094354884705e-04 +5.792000180553e-01 5.195731321666e-01 7.706541208000e-02 1.166080831860e-03 -2.268946605458e-04 +6.129629704873e-01 5.206182953075e-01 -5.572946656931e-02 1.048290480016e-03 -2.521424109708e-04 +4.677410849167e-01 5.216184029130e-01 3.501938785369e-02 8.977706653425e-04 -2.677036429491e-04 +6.830017461947e-01 5.223761846321e-01 3.188878695870e-02 7.376716377370e-04 -2.878664731175e-04 +5.315186588341e-01 5.230044172785e-01 -5.859288428056e-02 5.655220983275e-04 -3.014827412268e-04 +5.658159776336e-01 5.234884016135e-01 -1.749701291806e-02 3.671335008460e-04 -3.082097189928e-04 +4.965246329980e-01 5.237293016353e-01 -4.565592438340e-02 1.680244775122e-04 -3.152224671702e-04 +4.745041288668e-01 5.238083016593e-01 1.325948544355e-02 -3.089396271594e-05 -3.152937504394e-04 +5.230436038851e-01 5.236366365569e-01 7.291186069121e-02 -2.448830280603e-04 -3.156099626405e-04 +6.203278502492e-01 5.232570143986e-01 -1.340472761541e-02 -4.759186376873e-04 -3.125459241181e-04 +4.962341486542e-01 5.227300434373e-01 -2.484724082159e-02 -6.434445739970e-04 -3.020768612919e-04 +5.706333686060e-01 5.220535891545e-01 6.918716669473e-02 -8.291624829769e-04 -2.857607942556e-04 +6.346084820437e-01 5.210968565615e-01 -1.360598316828e-01 -9.859035834469e-04 -2.758261108981e-04 +2.985137052404e-01 5.200999909510e-01 -3.701814711504e-02 -1.139028552304e-03 -2.539417753635e-04 +5.605721878136e-01 5.188852798767e-01 8.962125671351e-02 -1.246192177444e-03 -2.370052354558e-04 +4.777562186674e-01 5.175563155228e-01 9.185212818326e-03 -1.376129589147e-03 -2.182726954283e-04 +5.789426134503e-01 5.161428373919e-01 9.317772882562e-02 -1.460019415586e-03 -1.972009882077e-04 +6.641116763187e-01 5.146510101408e-01 -4.210581655138e-02 -1.566844787203e-03 -1.752358056906e-04 +4.947309803475e-01 5.130164671940e-01 -1.074569629605e-01 -1.611404793681e-03 -1.597990474685e-04 +4.491977503977e-01 5.113423281705e-01 4.441176746246e-03 -1.634591308561e-03 -1.446271676323e-04 +5.036133338400e-01 5.096528578159e-01 5.375886363718e-02 -1.663768731299e-03 -1.292519196767e-04 +5.567154776721e-01 5.080307813102e-01 -7.747613103253e-02 -1.649845557537e-03 -1.084822783201e-04 +3.486610717749e-01 5.063802670037e-01 -2.821118121530e-02 -1.636627073786e-03 -9.202515265122e-05 +5.002931152415e-01 5.047022526024e-01 1.152460974671e-01 -1.617675504770e-03 -8.100131678396e-05 +5.791532667092e-01 5.031218773105e-01 1.022196623499e-02 -1.601852524905e-03 -6.597594204300e-05 +5.207370477115e-01 5.015876568475e-01 -9.537638895243e-02 -1.544375364144e-03 -5.250350224527e-05 +3.884004888043e-01 4.999643363167e-01 -6.082946629564e-04 -1.500176770234e-03 -5.285372055626e-05 +5.195204583855e-01 4.984089107889e-01 9.676213969409e-02 -1.433025737899e-03 -5.445066681058e-05 +5.819247681925e-01 4.970426247263e-01 -4.367312518408e-02 -1.352209799782e-03 -4.781938681134e-05 +4.321742080174e-01 4.958142244542e-01 1.229314489529e-02 -1.283090770206e-03 -3.754058440266e-05 +6.065110579831e-01 4.945776248378e-01 4.191359737483e-03 -1.209996825688e-03 -3.594036342890e-05 +4.405569274923e-01 4.933587711296e-01 -5.047476266394e-02 -1.128972215769e-03 -4.094639980879e-05 +5.055615326552e-01 4.922136820015e-01 -6.906900513135e-03 -1.048223535158e-03 -4.768303969625e-05 +4.267431264661e-01 4.911328468511e-01 -4.494584059489e-03 -1.007570886032e-03 -5.608128313858e-05 +4.965723645362e-01 4.900895768339e-01 2.753786057036e-02 -9.332920198079e-04 -6.765705327917e-05 +4.818188476068e-01 4.892042913258e-01 -2.318045505477e-02 -8.740045408734e-04 -7.176310361306e-05 +4.502114544267e-01 4.883358287528e-01 1.704162578612e-02 -8.241078498690e-04 -7.910976553370e-05 +5.159020991790e-01 4.875511397430e-01 -2.842336665854e-02 -7.840435290592e-04 -8.304514052855e-05 +3.933647211096e-01 4.867827765614e-01 -9.143166709608e-02 -7.586094378171e-04 -8.806549533375e-05 +3.330387649869e-01 4.860549588854e-01 1.270749580452e-01 -7.230130213026e-04 -9.124537459149e-05 +6.475146371999e-01 4.852976401400e-01 1.070041403717e-01 -6.893555192242e-04 -9.772440569559e-05 +5.470470457302e-01 4.845916991197e-01 -8.801061459083e-02 -6.795816984065e-04 -9.984491036580e-05 +4.714934080183e-01 4.839457567335e-01 1.161629307648e-02 -6.410219269491e-04 -9.652750310654e-05 +5.702796318832e-01 4.832543016530e-01 4.887478348733e-02 -6.104933599130e-04 -9.667032425702e-05 +5.692429749929e-01 4.826254062614e-01 -8.555516046937e-02 -6.363187575817e-04 -9.078660505650e-05 +3.991693109444e-01 4.819490479483e-01 -1.370645714953e-02 -6.117515510189e-04 -8.843299362826e-05 +5.418300606939e-01 4.813664599269e-01 -1.369181909692e-02 -5.802840096254e-04 -7.906710412584e-05 +3.717856727506e-01 4.807569416321e-01 -3.522708307967e-02 -5.376356253507e-04 -7.386125738273e-05 +4.713758945345e-01 4.802274334745e-01 5.906858304877e-02 -4.620052418794e-04 -6.542605775818e-05 +4.899228388481e-01 4.797821346177e-01 -2.966483768223e-02 -4.097007857011e-04 -5.474950529436e-05 +4.120462191701e-01 4.794327073043e-01 6.476387153753e-02 -3.448282379823e-04 -4.208707744821e-05 +6.194505819232e-01 4.791557636805e-01 3.405863211635e-02 -2.567444240866e-04 -3.105232612740e-05 +4.801634834028e-01 4.789931675840e-01 -1.159313016917e-01 -1.413909412281e-04 -1.983475762354e-05 +3.875879785399e-01 4.789955402694e-01 -2.831028111363e-02 -4.345698958809e-05 -5.340302879291e-06 +4.235429211755e-01 4.790055346305e-01 8.344444629555e-02 6.883203862118e-05 -1.473228359674e-06 +5.544768711310e-01 4.791365320546e-01 -7.017830068952e-02 2.017104288042e-04 4.379995964767e-07 +2.831863197965e-01 4.794145209667e-01 -7.598222112953e-02 3.282166362815e-04 2.299191406267e-06 +4.025124288719e-01 4.798474025965e-01 1.598687451548e-01 4.376788640971e-04 5.111844647620e-06 +6.029238101062e-01 4.803339567795e-01 9.818356251327e-02 5.579190757755e-04 8.356719721372e-07 +5.988795538985e-01 4.809020533406e-01 -5.880453449175e-02 6.748120502941e-04 -7.673683272414e-06 +4.853147411227e-01 4.816490087493e-01 -7.525739030302e-02 7.727992383781e-04 -1.131654972744e-05 +4.483647732924e-01 4.823600949665e-01 -1.114124473449e-02 8.618449545774e-04 -2.691011337185e-05 +4.630322516537e-01 4.832115784878e-01 -6.079034620211e-02 9.194423654619e-04 -3.844105255172e-05 +3.267840808882e-01 4.840934186409e-01 1.300953566098e-02 9.711323273382e-04 -5.382251242345e-05 +4.890513229757e-01 4.850756955527e-01 1.260448450622e-01 1.007900943893e-03 -6.615521457220e-05 +5.788737710127e-01 4.861047136017e-01 1.207773100246e-02 1.050344128897e-03 -7.906684010837e-05 +5.132067849806e-01 4.871914674634e-01 -1.613314001344e-02 1.083139591958e-03 -9.092655372846e-05 +5.466074909858e-01 4.882457029644e-01 -1.600838335766e-02 1.079643640428e-03 -1.081675629004e-04 +4.811900182653e-01 4.892912740453e-01 4.941947636336e-03 1.071989500494e-03 -1.276751609294e-04 +5.564913862584e-01 4.903728593588e-01 1.669932753139e-03 1.035548015092e-03 -1.445405658239e-04 +4.845298837715e-01 4.913994921712e-01 -5.857537326285e-02 9.659735216725e-04 -1.647162917299e-04 +4.393406397327e-01 4.923131262806e-01 6.228229688398e-02 9.274275608487e-04 -1.916873385853e-04 +6.090944775395e-01 4.931977765610e-01 1.129424228958e-02 8.487328148118e-04 -2.166405424577e-04 +4.619291243119e-01 4.940872687421e-01 -1.618587309358e-01 7.585317961319e-04 -2.342558075980e-04 +2.853770156680e-01 4.948033010708e-01 -1.917083250947e-02 6.485434217658e-04 -2.568900790462e-04 +4.235874592930e-01 4.953361281879e-01 1.148621130576e-01 4.980631670562e-04 -2.822697847596e-04 +5.151012417832e-01 4.957512130048e-01 1.181673642431e-02 3.028118513180e-04 -3.014029952294e-04 +4.472209321416e-01 4.959796449330e-01 3.642145550467e-02 1.233091850510e-04 -3.170748792225e-04 +5.879441527925e-01 4.959666610700e-01 1.251376363609e-02 -1.194882036656e-04 -3.308757665877e-04 +4.722484594138e-01 4.957154248889e-01 -3.140857420161e-02 -3.509704657138e-04 -3.398370926553e-04 +5.251270043893e-01 4.952273471540e-01 4.822010988108e-02 -5.850118292837e-04 -3.422586083941e-04 +5.686886791759e-01 4.945863025991e-01 6.494556320554e-02 -8.089109824400e-04 -3.303221568803e-04 +6.550181308004e-01 4.936713894667e-01 1.613293698125e-02 -9.923445047501e-04 -3.146936422312e-04 +6.009545531384e-01 4.925749673411e-01 -8.047753345168e-02 -1.185074313843e-03 -2.890901347712e-04 +4.940630638970e-01 4.913379101974e-01 -1.630703752413e-02 -1.355323916721e-03 -2.524476641095e-04 +5.683404780902e-01 4.900125969866e-01 3.065528681827e-02 -1.459734529033e-03 -2.045940345336e-04 +5.553736375336e-01 4.885141385321e-01 -2.405140807199e-02 -1.514924339160e-03 -1.580503965823e-04 +5.202376619462e-01 4.870371341364e-01 -3.317074659668e-02 -1.559545432469e-03 -1.022243884859e-04 +4.890321443402e-01 4.854546506270e-01 -3.351258302977e-02 -1.551049708053e-03 -5.389472158972e-05 +4.532124958866e-01 4.839194617056e-01 1.589261568590e-03 -1.450821951717e-03 -7.436568239734e-06 +4.922106674774e-01 4.825664818922e-01 -6.464864986406e-02 -1.288243137609e-03 4.130211449562e-05 +3.239151961585e-01 4.813622326003e-01 -7.854484565314e-02 -1.112610978720e-03 8.351224609704e-05 +3.351209761711e-01 4.803825540973e-01 5.771571819289e-03 -8.971654175746e-04 1.203659701254e-04 +3.354583397971e-01 4.796456731016e-01 3.494799293173e-02 -6.432917345606e-04 1.488820676228e-04 +4.050169620346e-01 4.792038880995e-01 7.900618409390e-02 -3.843136826066e-04 1.703393136007e-04 +4.934707079849e-01 4.789248417852e-01 6.339773331269e-02 -1.085263902491e-04 1.720475518939e-04 +5.318124286600e-01 4.790085571593e-01 -5.919905554842e-02 2.079438638162e-04 1.699917010298e-04 +3.750725968881e-01 4.793741567059e-01 -4.983211026782e-02 4.958623719699e-04 1.582907743953e-04 +4.321482081243e-01 4.799389222567e-01 4.384955898408e-02 7.504748609509e-04 1.326476926319e-04 +4.627717148562e-01 4.807458455106e-01 -1.776895006870e-02 9.632525456552e-04 1.002964626199e-04 +3.966103079869e-01 4.818260500450e-01 4.596991205050e-02 1.178799505560e-03 6.777055933679e-05 +5.547115389572e-01 4.831645037190e-01 6.797850233365e-02 1.364020596655e-03 3.794447596958e-05 +5.325673126542e-01 4.846705952648e-01 6.927731428719e-02 1.509378993425e-03 7.838106704748e-06 +6.932661675316e-01 4.862098981609e-01 3.279348393312e-02 1.629753814198e-03 -2.934517015925e-05 +5.981542805205e-01 4.879577449707e-01 -1.179770219029e-01 1.716778420758e-03 -5.489229977959e-05 +4.573121237258e-01 4.897634117211e-01 -8.234409011624e-02 1.739789086556e-03 -7.743869929222e-05 +4.334661002880e-01 4.916088186322e-01 6.073771424593e-02 1.777299355138e-03 -9.561912052466e-05 +5.787875522177e-01 4.934097010835e-01 -5.192450409843e-02 1.795366680202e-03 -1.146090991943e-04 +3.296170920911e-01 4.951555310888e-01 -7.572159256405e-02 1.764181682163e-03 -1.333442214992e-04 +4.273443670896e-01 4.968650588228e-01 5.349315538511e-02 1.745006191066e-03 -1.491183919043e-04 +4.366034028614e-01 4.985489575875e-01 6.712968709222e-02 1.689288724264e-03 -1.604801669630e-04 +5.616037412740e-01 5.001719255199e-01 7.436448520011e-02 1.633810431014e-03 -1.700752827515e-04 +5.853323732616e-01 5.017662568763e-01 -4.804980322549e-02 1.587727817364e-03 -1.756244172567e-04 +4.655041348231e-01 5.033242937386e-01 -5.131066847580e-02 1.557997401946e-03 -1.785234195914e-04 +4.827110363100e-01 5.048573968535e-01 9.229080594936e-02 1.517555750600e-03 -1.784948688625e-04 +6.500857467218e-01 5.063470076556e-01 2.635989017352e-02 1.455412838320e-03 -1.774099710946e-04 +5.354308166570e-01 5.077143232216e-01 -9.819216488431e-02 1.390643821970e-03 -1.821409660994e-04 +4.537014169532e-01 5.090785702267e-01 -9.688393763372e-02 1.337155212193e-03 -1.831576386774e-04 +3.416629413896e-01 5.104281663087e-01 3.469554949778e-02 1.287088543820e-03 -1.817437313876e-04 +5.230925159487e-01 5.117193996486e-01 1.556988772121e-01 1.229246366112e-03 -1.815291807913e-04 +6.530606958138e-01 5.128982223911e-01 -1.928571556483e-02 1.147631084848e-03 -1.865226246647e-04 +4.845210848191e-01 5.139570154460e-01 -6.518530027358e-02 1.057065140668e-03 -1.965644567602e-04 +5.226900952666e-01 5.150038311603e-01 3.619717899524e-02 9.469753608559e-04 -2.016389710863e-04 +5.569154428095e-01 5.158554565850e-01 -9.743388209806e-04 8.081896272213e-04 -2.156474591429e-04 +5.207414176247e-01 5.166840485554e-01 -7.661500431708e-02 6.908051028360e-04 -2.230409969010e-04 +4.036854341754e-01 5.174065606484e-01 7.352315253931e-02 5.841392549445e-04 -2.298776229833e-04 +6.677877227033e-01 5.179586886587e-01 7.147387209858e-02 4.707752128454e-04 -2.403645045292e-04 +5.466331783725e-01 5.183183412443e-01 -1.401400886316e-01 3.333026343851e-04 -2.548196614237e-04 +3.875075454402e-01 5.185917801404e-01 -1.018868839920e-01 1.683189194940e-04 -2.626943576114e-04 +3.428594103886e-01 5.187015011260e-01 9.298736631223e-02 8.860363341912e-06 -2.692351044151e-04 +5.734822780646e-01 5.186312914809e-01 1.556588812835e-01 -1.551972034160e-04 -2.749969242127e-04 +6.541771729556e-01 5.184100124848e-01 2.080776679033e-02 -3.323218314437e-04 -2.768095019560e-04 +6.150978116453e-01 5.179985700053e-01 -6.638034868002e-02 -4.823464078476e-04 -2.777500553343e-04 +5.214164755956e-01 5.173626864123e-01 1.861253759401e-02 -6.581167912615e-04 -2.806200130854e-04 +6.523228868333e-01 5.165543593734e-01 -1.881150950795e-02 -8.022310536871e-04 -2.812933000856e-04 +4.837934565797e-01 5.156091456904e-01 -2.224819303970e-03 -9.619798387019e-04 -2.773726832957e-04 +6.478732482254e-01 5.144857172793e-01 3.269193061353e-02 -1.150993317083e-03 -2.725257053434e-04 +5.491773178068e-01 5.133048982947e-01 -1.469783916998e-01 -1.301276291940e-03 -2.576282472400e-04 +3.539164648257e-01 5.119484383263e-01 -4.155808272027e-02 -1.416862354049e-03 -2.443182364881e-04 +4.660611523662e-01 5.105141179403e-01 1.423568568713e-02 -1.558497038387e-03 -2.256817778168e-04 +3.823878362000e-01 5.089982158601e-01 -2.221105677268e-02 -1.646918411971e-03 -2.035489567188e-04 +4.216390388209e-01 5.073405099434e-01 7.094568852817e-02 -1.729893992406e-03 -1.848237504653e-04 +5.242792132563e-01 5.055669964626e-01 9.689302398583e-02 -1.781485914644e-03 -1.689628080194e-04 +6.154250867925e-01 5.037145272519e-01 3.220122261394e-02 -1.822388188365e-03 -1.545126759181e-04 +5.886816584842e-01 5.019028145871e-01 -5.645315800007e-02 -1.850003553531e-03 -1.329414550556e-04 +5.025187707924e-01 5.001012983569e-01 -8.389231473884e-02 -1.844206481789e-03 -1.085878253705e-04 +4.208970290065e-01 4.981921885289e-01 2.677313735325e-02 -1.817661180515e-03 -9.320742509971e-05 +5.560650454989e-01 4.963330937613e-01 9.906493426622e-02 -1.793365364655e-03 -7.521735214237e-05 +6.190268975390e-01 4.945193659657e-01 9.954211373285e-03 -1.763928734587e-03 -5.647846170005e-05 +5.759734682455e-01 4.929125831164e-01 -9.608933496405e-02 -1.688364448161e-03 -2.560624823031e-05 +4.268482276109e-01 4.912722280907e-01 -1.002111185184e-01 -1.583114746516e-03 -5.168184090829e-06 +3.755512312087e-01 4.896820488650e-01 6.836688848916e-03 -1.451143424378e-03 9.522887464534e-06 +4.405216053087e-01 4.882986105245e-01 -5.585632091721e-02 -1.318048250269e-03 2.953541611263e-05 +2.638385893743e-01 4.870708102143e-01 5.058525557711e-02 -1.154407631661e-03 4.851850629556e-05 +5.416921164629e-01 4.860289107208e-01 1.815789054742e-01 -9.619011028865e-04 6.664855681415e-05 +6.269964003227e-01 4.851808934953e-01 7.156599013982e-03 -7.615234336351e-04 8.256156608184e-05 +5.560053144909e-01 4.845212738040e-01 -1.048696081831e-01 -5.758073490492e-04 9.437843941655e-05 +4.172571839565e-01 4.840553365128e-01 -6.159687316647e-02 -3.271450304407e-04 1.008602859311e-04 +4.328115681579e-01 4.838319668879e-01 3.449450020719e-02 -9.989783368443e-05 1.048118762360e-04 +4.862461843709e-01 4.838522850888e-01 1.823647013341e-02 1.020645570638e-04 1.062753092506e-04 +4.692845084248e-01 4.840889442801e-01 -1.547809557092e-02 2.980432089655e-04 1.031743084465e-04 +4.552899932291e-01 4.844435129896e-01 3.721228074960e-02 5.113206492165e-04 8.759471301796e-05 +5.437090699240e-01 4.849764347765e-01 -4.793959564328e-02 7.150751747344e-04 6.549217015035e-05 +3.594108019425e-01 4.857142560009e-01 -2.798501464340e-02 8.909693162395e-04 4.094103741403e-05 +4.877390406372e-01 4.866457674790e-01 3.687968253372e-02 1.031012840181e-03 1.551651935680e-05 +4.331701670099e-01 4.876611181367e-01 -1.026411816566e-01 1.157056621027e-03 -1.721624679688e-05 +2.824566773241e-01 4.888409490464e-01 6.132298546076e-02 1.232150070844e-03 -4.732379421819e-05 +5.558161379315e-01 4.900266371829e-01 1.530519655589e-01 1.292451490258e-03 -8.459304284016e-05 +5.885606084419e-01 4.912861680821e-01 -4.094634902063e-02 1.305074340489e-03 -1.197498989644e-04 +4.739234398902e-01 4.926045454470e-01 3.587500894522e-02 1.262358744074e-03 -1.499928882443e-04 +6.603106263323e-01 4.938281583735e-01 2.372963470607e-02 1.200200940628e-03 -1.843953365850e-04 +5.213827093023e-01 4.949998845065e-01 -7.103590762764e-02 1.095406660243e-03 -2.157887568107e-04 +5.182388110771e-01 4.960383827290e-01 -3.284006264524e-02 9.635825948743e-04 -2.473932357636e-04 +4.557025840119e-01 4.968959371884e-01 8.164736762583e-03 8.114707106764e-04 -2.799799334712e-04 +5.345682846022e-01 4.975557534089e-01 7.607287745704e-02 6.375764824487e-04 -3.119488625535e-04 +6.078483389259e-01 4.980351348267e-01 -4.327723737796e-02 4.310746519393e-04 -3.389574634430e-04 +4.480138098463e-01 4.983234342144e-01 -1.046426631079e-01 1.909680220185e-04 -3.591836280627e-04 +3.985630127102e-01 4.983889119982e-01 -4.119868560246e-02 -7.561436769295e-05 -3.729723879935e-04 +3.656164386414e-01 4.981373050847e-01 1.317702649205e-01 -3.402970748995e-04 -3.865599642805e-04 +6.621035425512e-01 4.975944726788e-01 7.491218543652e-02 -6.095674116247e-04 -3.966662341506e-04 +5.154408095144e-01 4.967923831057e-01 -9.889696285946e-02 -8.904016328049e-04 -3.997180681217e-04 +4.643096168323e-01 4.957576977524e-01 -1.174665290180e-02 -1.186611060539e-03 -3.929267079075e-04 +4.919475037108e-01 4.944477808560e-01 4.234347274537e-02 -1.478870623182e-03 -3.799331918944e-04 +5.489965623230e-01 4.928315791344e-01 5.582848765563e-02 -1.749285101234e-03 -3.642457964425e-04 +6.036044790221e-01 4.910114827838e-01 5.610601004413e-03 -2.019477164603e-03 -3.386695574289e-04 +5.602177643318e-01 4.888436048250e-01 -8.677902077242e-02 -2.234097424520e-03 -3.173661919824e-04 +4.300464374773e-01 4.864446895970e-01 3.549410074085e-02 -2.416196512038e-03 -2.934632424295e-04 +6.312059658135e-01 4.838997037326e-01 4.578635206015e-02 -2.579139771401e-03 -2.627993842353e-04 +5.216191415975e-01 4.812531298806e-01 -9.641496569592e-02 -2.723763322244e-03 -2.249108376355e-04 +4.383760344217e-01 4.784760592091e-01 -8.324310717584e-02 -2.828131635023e-03 -1.860399488934e-04 diff --git a/gsl-2.5/doc/examples/histogram b/gsl-2.5/doc/examples/histogram new file mode 100755 index 00000000..b6c68084 --- /dev/null +++ b/gsl-2.5/doc/examples/histogram @@ -0,0 +1,228 @@ +#! /bin/sh + +# histogram - temporary wrapper script for .libs/histogram +# Generated by libtool (GNU libtool) 2.4.2 +# +# The histogram program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s/\([`"$\\]\)/\\\1/g' + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command="(cd /home/groups/kipac/chto/package/gsl/gsl-2.5/doc/examples; LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LIBRARY_PATH; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; LD_LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/fftw/include:/home/users/chto/lib/fftw/lib:/home/users/chto/lib/healpix/lib:/home/users/chto/lib/namaster/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/include:/home/users/chto/cpp/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LD_LIBRARY_PATH; PATH=/share/software/user/open/curl/7.54.0/bin:/share/software/user/open/libressl/2.5.3/bin:/home/users/chto/lib/cfitsio:/home/users/chto/lib/cfitsio/include:/home/users/chto/lib:/home/users/chto/bin/bin:/home/users/chto/bin:/home/users/chto/.texlive/bin/x86_64-linux:/home/groups/kipac/chto/anaconda2/envs/newenv3/bin:/home/users/chto/.local/bin/include:/home/users/chto/.local/bin/lib:/home/users/chto/.local/bin:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/bin64:/share/software/user/open/fftw/3.3.6/bin:/home/groups/kipac/chto/anaconda2/condabin:/share/software/user/restricted/ifort/2019/bin:/share/software/user/open/gsl/2.3/bin:/share/software/user/srcc/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/dell/srvadmin/bin:/opt/dell/srvadmin/iSM/bin:/home/users/chto/bin; export PATH; gcc -g -O2 -o \$progdir/\$file histogram.o ../../.libs/libgsl.so ../../cblas/.libs/libgslcblas.so -lm -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/.libs -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/cblas/.libs -Wl,-rpath -Wl,/usr/local/lib)" + +# This environment variable determines our operation mode. +if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then + # install mode needs the following variables: + generated_by_libtool_version='2.4.2' + notinst_deplibs=' ../../libgsl.la ../../cblas/libgslcblas.la' +else + # When we are sourced in execute mode, $file and $ECHO are already set. + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + file="$0" + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + ECHO="printf %s\\n" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ which is used only on +# windows platforms, and (c) all begin with the string --lt- +# (application programs are unlikely to have options which match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's ../../libtool value, followed by no. +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=$0 + shift + for lt_opt + do + case "$lt_opt" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%/[^/]*$%%'` + test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=. + lt_dump_F=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%^.*/%%'` + cat "$lt_dump_D/$lt_dump_F" + exit 0 + ;; + --lt-*) + $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n "$lt_option_debug"; then + echo "histogram:histogram:${LINENO}: libtool wrapper (GNU libtool) 2.4.2" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + $ECHO "histogram:histogram:${LINENO}: newargv[$lt_dump_args_N]: $lt_arg" + lt_dump_args_N=`expr $lt_dump_args_N + 1` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ + + if test -n "$lt_option_debug"; then + $ECHO "histogram:histogram:${LINENO}: newargv[0]: $progdir/$program" 1>&2 + func_lt_dump_args ${1+"$@"} 1>&2 + fi + exec "$progdir/$program" ${1+"$@"} + + $ECHO "$0: cannot exec $program $*" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from $@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case " $* " in + *\ --lt-*) + for lt_wr_arg + do + case $lt_wr_arg in + --lt-*) ;; + *) set x "$@" "$lt_wr_arg"; shift;; + esac + shift + done ;; + esac + func_exec_program_core ${1+"$@"} +} + + # Parse options + func_parse_lt_options "$0" ${1+"$@"} + + # Find the directory that this script lives in. + thisdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + test "x$thisdir" = "x$file" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=`ls -ld "$file" | /usr/bin/sed -n 's/.*-> //p'` + while test -n "$file"; do + destdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + + # If there was a directory component, then change thisdir. + if test "x$destdir" != "x$file"; then + case "$destdir" in + [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;; + *) thisdir="$thisdir/$destdir" ;; + esac + fi + + file=`$ECHO "$file" | /usr/bin/sed 's%^.*/%%'` + file=`ls -ld "$thisdir/$file" | /usr/bin/sed -n 's/.*-> //p'` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no + if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then + # special case for '.' + if test "$thisdir" = "."; then + thisdir=`pwd` + fi + # remove .libs from thisdir + case "$thisdir" in + *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /usr/bin/sed 's%[\\/][^\\/]*$%%'` ;; + .libs ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=`cd "$thisdir" && pwd` + test -n "$absdir" && thisdir="$absdir" + + program=lt-'histogram' + progdir="$thisdir/.libs" + + if test ! -f "$progdir/$program" || + { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /usr/bin/sed 1q`; \ + test "X$file" != "X$progdir/$program"; }; then + + file="$$-$program" + + if test ! -d "$progdir"; then + mkdir "$progdir" + else + rm -f "$progdir/$file" + fi + + # relink executable if necessary + if test -n "$relink_command"; then + if relink_command_output=`eval $relink_command 2>&1`; then : + else + printf %s\n "$relink_command_output" >&2 + rm -f "$progdir/$file" + exit 1 + fi + fi + + mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null || + { rm -f "$progdir/$program"; + mv -f "$progdir/$file" "$progdir/$program"; } + rm -f "$progdir/$file" + fi + + if test -f "$progdir/$program"; then + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + # Run the actual program with our arguments. + func_exec_program ${1+"$@"} + fi + else + # The program doesn't exist. + $ECHO "$0: error: \`$progdir/$program' does not exist" 1>&2 + $ECHO "This script is just a wrapper for $program." 1>&2 + $ECHO "See the libtool documentation for more information." 1>&2 + exit 1 + fi +fi diff --git a/gsl-2.5/doc/examples/histogram.c b/gsl-2.5/doc/examples/histogram.c new file mode 100644 index 00000000..a3c51500 --- /dev/null +++ b/gsl-2.5/doc/examples/histogram.c @@ -0,0 +1,37 @@ +#include +#include +#include + +int +main (int argc, char **argv) +{ + double a, b; + size_t n; + + if (argc != 4) + { + printf ("Usage: gsl-histogram xmin xmax n\n" + "Computes a histogram of the data " + "on stdin using n bins from xmin " + "to xmax\n"); + exit (0); + } + + a = atof (argv[1]); + b = atof (argv[2]); + n = atoi (argv[3]); + + { + double x; + gsl_histogram * h = gsl_histogram_alloc (n); + gsl_histogram_set_ranges_uniform (h, a, b); + + while (fscanf (stdin, "%lg", &x) == 1) + { + gsl_histogram_increment (h, x); + } + gsl_histogram_fprintf (stdout, h, "%g", "%g"); + gsl_histogram_free (h); + } + exit (0); +} diff --git a/gsl-2.5/doc/examples/histogram2d b/gsl-2.5/doc/examples/histogram2d new file mode 100755 index 00000000..1afc7199 --- /dev/null +++ b/gsl-2.5/doc/examples/histogram2d @@ -0,0 +1,228 @@ +#! /bin/sh + +# histogram2d - temporary wrapper script for .libs/histogram2d +# Generated by libtool (GNU libtool) 2.4.2 +# +# The histogram2d program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s/\([`"$\\]\)/\\\1/g' + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command="(cd /home/groups/kipac/chto/package/gsl/gsl-2.5/doc/examples; LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LIBRARY_PATH; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; LD_LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/fftw/include:/home/users/chto/lib/fftw/lib:/home/users/chto/lib/healpix/lib:/home/users/chto/lib/namaster/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/include:/home/users/chto/cpp/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LD_LIBRARY_PATH; PATH=/share/software/user/open/curl/7.54.0/bin:/share/software/user/open/libressl/2.5.3/bin:/home/users/chto/lib/cfitsio:/home/users/chto/lib/cfitsio/include:/home/users/chto/lib:/home/users/chto/bin/bin:/home/users/chto/bin:/home/users/chto/.texlive/bin/x86_64-linux:/home/groups/kipac/chto/anaconda2/envs/newenv3/bin:/home/users/chto/.local/bin/include:/home/users/chto/.local/bin/lib:/home/users/chto/.local/bin:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/bin64:/share/software/user/open/fftw/3.3.6/bin:/home/groups/kipac/chto/anaconda2/condabin:/share/software/user/restricted/ifort/2019/bin:/share/software/user/open/gsl/2.3/bin:/share/software/user/srcc/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/dell/srvadmin/bin:/opt/dell/srvadmin/iSM/bin:/home/users/chto/bin; export PATH; gcc -g -O2 -o \$progdir/\$file histogram2d.o ../../.libs/libgsl.so ../../cblas/.libs/libgslcblas.so -lm -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/.libs -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/cblas/.libs -Wl,-rpath -Wl,/usr/local/lib)" + +# This environment variable determines our operation mode. +if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then + # install mode needs the following variables: + generated_by_libtool_version='2.4.2' + notinst_deplibs=' ../../libgsl.la ../../cblas/libgslcblas.la' +else + # When we are sourced in execute mode, $file and $ECHO are already set. + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + file="$0" + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + ECHO="printf %s\\n" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ which is used only on +# windows platforms, and (c) all begin with the string --lt- +# (application programs are unlikely to have options which match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's ../../libtool value, followed by no. +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=$0 + shift + for lt_opt + do + case "$lt_opt" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%/[^/]*$%%'` + test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=. + lt_dump_F=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%^.*/%%'` + cat "$lt_dump_D/$lt_dump_F" + exit 0 + ;; + --lt-*) + $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n "$lt_option_debug"; then + echo "histogram2d:histogram2d:${LINENO}: libtool wrapper (GNU libtool) 2.4.2" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + $ECHO "histogram2d:histogram2d:${LINENO}: newargv[$lt_dump_args_N]: $lt_arg" + lt_dump_args_N=`expr $lt_dump_args_N + 1` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ + + if test -n "$lt_option_debug"; then + $ECHO "histogram2d:histogram2d:${LINENO}: newargv[0]: $progdir/$program" 1>&2 + func_lt_dump_args ${1+"$@"} 1>&2 + fi + exec "$progdir/$program" ${1+"$@"} + + $ECHO "$0: cannot exec $program $*" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from $@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case " $* " in + *\ --lt-*) + for lt_wr_arg + do + case $lt_wr_arg in + --lt-*) ;; + *) set x "$@" "$lt_wr_arg"; shift;; + esac + shift + done ;; + esac + func_exec_program_core ${1+"$@"} +} + + # Parse options + func_parse_lt_options "$0" ${1+"$@"} + + # Find the directory that this script lives in. + thisdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + test "x$thisdir" = "x$file" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=`ls -ld "$file" | /usr/bin/sed -n 's/.*-> //p'` + while test -n "$file"; do + destdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + + # If there was a directory component, then change thisdir. + if test "x$destdir" != "x$file"; then + case "$destdir" in + [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;; + *) thisdir="$thisdir/$destdir" ;; + esac + fi + + file=`$ECHO "$file" | /usr/bin/sed 's%^.*/%%'` + file=`ls -ld "$thisdir/$file" | /usr/bin/sed -n 's/.*-> //p'` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no + if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then + # special case for '.' + if test "$thisdir" = "."; then + thisdir=`pwd` + fi + # remove .libs from thisdir + case "$thisdir" in + *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /usr/bin/sed 's%[\\/][^\\/]*$%%'` ;; + .libs ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=`cd "$thisdir" && pwd` + test -n "$absdir" && thisdir="$absdir" + + program=lt-'histogram2d' + progdir="$thisdir/.libs" + + if test ! -f "$progdir/$program" || + { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /usr/bin/sed 1q`; \ + test "X$file" != "X$progdir/$program"; }; then + + file="$$-$program" + + if test ! -d "$progdir"; then + mkdir "$progdir" + else + rm -f "$progdir/$file" + fi + + # relink executable if necessary + if test -n "$relink_command"; then + if relink_command_output=`eval $relink_command 2>&1`; then : + else + printf %s\n "$relink_command_output" >&2 + rm -f "$progdir/$file" + exit 1 + fi + fi + + mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null || + { rm -f "$progdir/$program"; + mv -f "$progdir/$file" "$progdir/$program"; } + rm -f "$progdir/$file" + fi + + if test -f "$progdir/$program"; then + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + # Run the actual program with our arguments. + func_exec_program ${1+"$@"} + fi + else + # The program doesn't exist. + $ECHO "$0: error: \`$progdir/$program' does not exist" 1>&2 + $ECHO "This script is just a wrapper for $program." 1>&2 + $ECHO "See the libtool documentation for more information." 1>&2 + exit 1 + fi +fi diff --git a/gsl-2.5/doc/examples/histogram2d.c b/gsl-2.5/doc/examples/histogram2d.c new file mode 100644 index 00000000..3fcabb48 --- /dev/null +++ b/gsl-2.5/doc/examples/histogram2d.c @@ -0,0 +1,50 @@ +#include +#include +#include + +int +main (void) +{ + const gsl_rng_type * T; + gsl_rng * r; + + gsl_histogram2d * h = gsl_histogram2d_alloc (10, 10); + + gsl_histogram2d_set_ranges_uniform (h, + 0.0, 1.0, + 0.0, 1.0); + + gsl_histogram2d_accumulate (h, 0.3, 0.3, 1); + gsl_histogram2d_accumulate (h, 0.8, 0.1, 5); + gsl_histogram2d_accumulate (h, 0.7, 0.9, 0.5); + + gsl_rng_env_setup (); + + T = gsl_rng_default; + r = gsl_rng_alloc (T); + + { + int i; + gsl_histogram2d_pdf * p + = gsl_histogram2d_pdf_alloc (h->nx, h->ny); + + gsl_histogram2d_pdf_init (p, h); + + for (i = 0; i < 1000; i++) { + double x, y; + double u = gsl_rng_uniform (r); + double v = gsl_rng_uniform (r); + + gsl_histogram2d_pdf_sample (p, u, v, &x, &y); + + printf ("%g %g\n", x, y); + } + + gsl_histogram2d_pdf_free (p); + } + + gsl_histogram2d_free (h); + gsl_rng_free (r); + + return 0; +} diff --git a/gsl-2.5/doc/examples/histogram2d.txt b/gsl-2.5/doc/examples/histogram2d.txt new file mode 100644 index 00000000..5fc1cbdc --- /dev/null +++ b/gsl-2.5/doc/examples/histogram2d.txt @@ -0,0 +1,1000 @@ +0.899966 0.116291 +0.80674 0.19472 +0.800115 0.148497 +0.894472 0.174431 +0.840206 0.173995 +0.868793 0.165864 +0.811033 0.18044 +0.837557 0.116857 +0.831819 0.139231 +0.788168 0.921319 +0.319718 0.333354 +0.752394 0.994372 +0.845391 0.18983 +0.856523 0.149861 +0.842882 0.118228 +0.808548 0.111741 +0.340896 0.364813 +0.864304 0.163713 +0.862805 0.109958 +0.860905 0.110781 +0.384008 0.35024 +0.770114 0.928891 +0.354064 0.312812 +0.841158 0.108232 +0.807978 0.189162 +0.795253 0.943185 +0.391476 0.340039 +0.859303 0.117067 +0.827307 0.104534 +0.810469 0.150618 +0.737134 0.951103 +0.866302 0.136599 +0.709051 0.946011 +0.851619 0.16776 +0.860766 0.147854 +0.35857 0.333873 +0.361889 0.343654 +0.831708 0.141925 +0.87108 0.162461 +0.897457 0.137043 +0.878006 0.114081 +0.866731 0.182974 +0.820844 0.162196 +0.815071 0.104617 +0.849699 0.156737 +0.834856 0.17238 +0.393958 0.30423 +0.810402 0.112164 +0.801469 0.138106 +0.827217 0.15998 +0.853795 0.143263 +0.842276 0.171684 +0.853507 0.168578 +0.362503 0.312293 +0.337048 0.382007 +0.381601 0.331575 +0.734737 0.914223 +0.856376 0.168519 +0.748303 0.943634 +0.89538 0.186816 +0.385072 0.348444 +0.818705 0.190048 +0.732254 0.967964 +0.850974 0.198366 +0.827293 0.180474 +0.89933 0.154155 +0.803268 0.163895 +0.844868 0.125872 +0.749071 0.944566 +0.397023 0.399672 +0.379145 0.365154 +0.318067 0.338998 +0.877629 0.128381 +0.849326 0.123641 +0.823407 0.167771 +0.880126 0.164926 +0.352899 0.312083 +0.832296 0.177788 +0.831357 0.194334 +0.897504 0.133455 +0.763468 0.934284 +0.854961 0.168276 +0.849292 0.109993 +0.869613 0.173558 +0.801348 0.126318 +0.894913 0.14234 +0.813688 0.100025 +0.882949 0.100375 +0.7156 0.901182 +0.848839 0.172997 +0.849797 0.196577 +0.834623 0.152989 +0.830009 0.171303 +0.845395 0.16828 +0.89401 0.102366 +0.806414 0.186953 +0.808913 0.131955 +0.809124 0.194111 +0.880257 0.175335 +0.839972 0.140848 +0.776083 0.907614 +0.807692 0.101978 +0.801362 0.138462 +0.829138 0.137398 +0.827225 0.11179 +0.874706 0.116489 +0.806729 0.117269 +0.89166 0.168095 +0.386903 0.325476 +0.821928 0.136924 +0.864427 0.127784 +0.860164 0.150035 +0.376964 0.31513 +0.858588 0.172067 +0.897354 0.169678 +0.842437 0.168082 +0.894196 0.159821 +0.870159 0.19136 +0.855665 0.167097 +0.845164 0.195304 +0.7118 0.933506 +0.893737 0.110966 +0.850509 0.195682 +0.898082 0.107074 +0.835303 0.168072 +0.841932 0.158701 +0.859911 0.146265 +0.844653 0.107289 +0.852975 0.138776 +0.787248 0.900223 +0.834435 0.119132 +0.314472 0.390359 +0.866022 0.144453 +0.824301 0.176086 +0.826908 0.119098 +0.845025 0.113269 +0.811317 0.148692 +0.892082 0.193395 +0.347879 0.361244 +0.836917 0.162466 +0.384919 0.364521 +0.387197 0.365293 +0.804477 0.138181 +0.846728 0.16697 +0.842063 0.10195 +0.739651 0.999118 +0.844578 0.163776 +0.847331 0.151524 +0.81299 0.139674 +0.884916 0.177149 +0.84788 0.102473 +0.307968 0.369845 +0.804579 0.17367 +0.899996 0.174979 +0.833044 0.18237 +0.850961 0.190251 +0.336728 0.373908 +0.818903 0.10368 +0.870906 0.183735 +0.814861 0.108184 +0.789408 0.915248 +0.822153 0.153161 +0.875522 0.104078 +0.376628 0.357519 +0.878207 0.120464 +0.801034 0.199693 +0.803617 0.189206 +0.880092 0.130658 +0.321686 0.370642 +0.7517 0.950898 +0.314004 0.367273 +0.875763 0.180728 +0.832598 0.153752 +0.87151 0.133585 +0.860904 0.142586 +0.877281 0.194561 +0.842129 0.17105 +0.819187 0.164834 +0.329687 0.315548 +0.885096 0.172157 +0.895017 0.14303 +0.38582 0.343933 +0.830734 0.141008 +0.806036 0.127851 +0.894101 0.180436 +0.895906 0.199972 +0.893131 0.124855 +0.304358 0.344473 +0.857626 0.149648 +0.313656 0.383176 +0.370555 0.309315 +0.885727 0.144595 +0.887898 0.155404 +0.868726 0.181555 +0.839286 0.105514 +0.335091 0.389919 +0.39549 0.348265 +0.343747 0.328116 +0.89127 0.150732 +0.843385 0.180071 +0.853965 0.130922 +0.331074 0.325197 +0.862805 0.167099 +0.848687 0.114827 +0.873383 0.166528 +0.881059 0.181053 +0.346244 0.306879 +0.885761 0.175805 +0.345702 0.385209 +0.870796 0.16849 +0.800492 0.146158 +0.891737 0.166495 +0.829758 0.188782 +0.844701 0.103017 +0.869756 0.134548 +0.849186 0.121754 +0.853689 0.157139 +0.8743 0.196234 +0.82223 0.199655 +0.866973 0.144841 +0.821452 0.112339 +0.83924 0.183338 +0.889298 0.182561 +0.827969 0.126714 +0.856372 0.176686 +0.856576 0.150396 +0.87857 0.162241 +0.82948 0.155498 +0.817556 0.16563 +0.889215 0.127605 +0.378789 0.396618 +0.860667 0.144355 +0.851925 0.136835 +0.800965 0.130027 +0.862343 0.104747 +0.834028 0.108125 +0.379311 0.39931 +0.816162 0.176486 +0.887533 0.139611 +0.876228 0.134897 +0.804605 0.13675 +0.867801 0.15878 +0.833625 0.167347 +0.812678 0.185395 +0.878209 0.115959 +0.811913 0.195017 +0.361995 0.323102 +0.881879 0.135963 +0.89803 0.103198 +0.877724 0.151681 +0.833623 0.196398 +0.894817 0.168182 +0.881902 0.145583 +0.813211 0.105915 +0.828792 0.121735 +0.814929 0.154997 +0.811291 0.189298 +0.833706 0.125648 +0.89597 0.191064 +0.794733 0.932783 +0.807271 0.114252 +0.364533 0.319233 +0.810089 0.187142 +0.820849 0.178866 +0.761061 0.998648 +0.884772 0.110986 +0.816057 0.155574 +0.859791 0.164382 +0.817204 0.107886 +0.761067 0.971697 +0.866766 0.176764 +0.801908 0.166801 +0.885309 0.136685 +0.839102 0.150284 +0.810891 0.162254 +0.312938 0.367636 +0.825876 0.123284 +0.898391 0.130657 +0.834303 0.174861 +0.88594 0.104529 +0.825583 0.122698 +0.832929 0.116465 +0.358375 0.338426 +0.315493 0.332973 +0.83906 0.147668 +0.884073 0.14555 +0.834649 0.139618 +0.885196 0.173607 +0.370796 0.339792 +0.879535 0.18262 +0.891765 0.124559 +0.85316 0.149334 +0.347742 0.378014 +0.327373 0.370112 +0.892268 0.170055 +0.870979 0.119274 +0.304501 0.384298 +0.889512 0.124208 +0.747131 0.973508 +0.713879 0.999031 +0.89777 0.165717 +0.312203 0.37596 +0.816484 0.150902 +0.866057 0.156792 +0.807577 0.141502 +0.897537 0.136588 +0.837324 0.184421 +0.895856 0.125889 +0.83218 0.143734 +0.819322 0.120308 +0.841607 0.125554 +0.841513 0.187048 +0.80136 0.115711 +0.783739 0.911628 +0.867372 0.115829 +0.831926 0.154533 +0.884267 0.101714 +0.840588 0.131802 +0.872545 0.187172 +0.866004 0.109233 +0.809182 0.16371 +0.844303 0.171281 +0.853758 0.123048 +0.89632 0.196616 +0.807945 0.117529 +0.810675 0.198465 +0.843891 0.184447 +0.393882 0.345994 +0.849027 0.118412 +0.814565 0.160643 +0.878966 0.118619 +0.319678 0.330739 +0.381436 0.327039 +0.883641 0.137051 +0.88625 0.1408 +0.884644 0.164795 +0.800808 0.152881 +0.808185 0.109432 +0.89149 0.112168 +0.815459 0.106703 +0.853486 0.169245 +0.81354 0.137424 +0.810805 0.153874 +0.364085 0.349051 +0.812736 0.170973 +0.884621 0.1393 +0.881052 0.146378 +0.838517 0.149331 +0.804812 0.158308 +0.337278 0.395934 +0.870284 0.104272 +0.834796 0.105229 +0.843002 0.196036 +0.850576 0.152863 +0.860771 0.118616 +0.84202 0.166612 +0.399275 0.394875 +0.742874 0.958051 +0.880633 0.110687 +0.857862 0.179605 +0.855494 0.100935 +0.768148 0.963642 +0.324867 0.367771 +0.858129 0.167168 +0.821521 0.16616 +0.852337 0.196212 +0.899052 0.109934 +0.344131 0.342601 +0.893116 0.170833 +0.830686 0.104484 +0.867316 0.167837 +0.774198 0.939849 +0.893978 0.10289 +0.89165 0.184693 +0.856159 0.186791 +0.854807 0.14528 +0.80968 0.135203 +0.806354 0.123605 +0.317552 0.365206 +0.86256 0.161993 +0.381535 0.345279 +0.889903 0.112084 +0.822495 0.126029 +0.87125 0.166784 +0.317413 0.349133 +0.888958 0.170403 +0.851666 0.157834 +0.85179 0.173041 +0.853371 0.146371 +0.849858 0.125447 +0.875129 0.122898 +0.828562 0.187424 +0.763606 0.952371 +0.382237 0.35794 +0.804045 0.120777 +0.841869 0.18514 +0.836767 0.155826 +0.856599 0.199897 +0.731756 0.911674 +0.344477 0.362271 +0.810883 0.188983 +0.874842 0.142992 +0.83821 0.145268 +0.851997 0.156659 +0.894652 0.190805 +0.861117 0.137703 +0.858894 0.119809 +0.850262 0.141373 +0.877066 0.175558 +0.861403 0.136429 +0.876572 0.175158 +0.3317 0.352857 +0.850177 0.127094 +0.874109 0.123517 +0.887492 0.12588 +0.748737 0.901241 +0.880944 0.162101 +0.881262 0.114011 +0.883449 0.170884 +0.360217 0.302075 +0.871743 0.103008 +0.835599 0.108162 +0.870554 0.187258 +0.884404 0.188352 +0.883416 0.145872 +0.887299 0.15479 +0.336392 0.359118 +0.843312 0.177613 +0.808424 0.104085 +0.821814 0.128227 +0.874873 0.150716 +0.85946 0.149466 +0.829091 0.142148 +0.325514 0.30912 +0.821196 0.113537 +0.895925 0.181168 +0.812376 0.1962 +0.365183 0.310292 +0.809944 0.133368 +0.881536 0.152292 +0.850015 0.198156 +0.873673 0.119881 +0.829372 0.157097 +0.779381 0.968643 +0.806218 0.117974 +0.821675 0.116286 +0.874341 0.108365 +0.852975 0.123086 +0.845412 0.186429 +0.891256 0.182139 +0.832477 0.163637 +0.735961 0.94692 +0.810206 0.166881 +0.863904 0.157486 +0.838621 0.180923 +0.898295 0.132386 +0.848832 0.175956 +0.872826 0.106993 +0.841561 0.10093 +0.872002 0.168904 +0.895266 0.151644 +0.816433 0.148234 +0.825895 0.199631 +0.848153 0.1785 +0.89617 0.148785 +0.361702 0.397933 +0.378571 0.363026 +0.752522 0.921308 +0.309489 0.336667 +0.814213 0.172179 +0.817779 0.102103 +0.385597 0.358676 +0.865369 0.186364 +0.389047 0.305243 +0.822809 0.124166 +0.831419 0.187222 +0.829114 0.107158 +0.810828 0.149282 +0.866424 0.169478 +0.897773 0.131975 +0.874546 0.105347 +0.867 0.130347 +0.360503 0.393453 +0.867093 0.110005 +0.863639 0.121075 +0.895203 0.174919 +0.866151 0.151007 +0.35674 0.365002 +0.353537 0.372692 +0.83924 0.174931 +0.881965 0.10347 +0.36053 0.365526 +0.894737 0.148706 +0.881786 0.108479 +0.86341 0.185092 +0.876455 0.171627 +0.823069 0.163659 +0.838099 0.137204 +0.815945 0.159805 +0.363366 0.327635 +0.830124 0.16268 +0.717562 0.929106 +0.819273 0.189725 +0.889623 0.188949 +0.829135 0.144268 +0.836247 0.137433 +0.822904 0.19765 +0.81784 0.11125 +0.801468 0.169538 +0.89537 0.191735 +0.336984 0.365184 +0.889404 0.106429 +0.89432 0.146251 +0.829836 0.125841 +0.825965 0.129243 +0.866793 0.107128 +0.728253 0.943304 +0.807663 0.154252 +0.854678 0.197385 +0.742775 0.942044 +0.891946 0.172129 +0.811272 0.173145 +0.897055 0.102304 +0.803476 0.176486 +0.82882 0.179162 +0.79981 0.933256 +0.820002 0.169783 +0.325439 0.34104 +0.89168 0.144097 +0.837094 0.110958 +0.73852 0.948742 +0.80801 0.161061 +0.892927 0.126314 +0.89878 0.12125 +0.886638 0.121405 +0.805034 0.145919 +0.87593 0.108601 +0.880843 0.178815 +0.877678 0.120557 +0.369679 0.385181 +0.391426 0.368508 +0.854451 0.149913 +0.817572 0.192036 +0.76975 0.962605 +0.815622 0.181443 +0.839968 0.197315 +0.857016 0.196723 +0.373833 0.344159 +0.316118 0.32969 +0.811795 0.167347 +0.830065 0.19898 +0.833357 0.111303 +0.314904 0.368326 +0.819208 0.149162 +0.866229 0.107569 +0.874317 0.1308 +0.302638 0.311626 +0.860183 0.117928 +0.359574 0.335186 +0.866013 0.151279 +0.863533 0.182445 +0.300713 0.380895 +0.814188 0.159962 +0.827448 0.144729 +0.804141 0.141768 +0.805786 0.142367 +0.887465 0.162925 +0.843153 0.190503 +0.870828 0.121444 +0.840672 0.168627 +0.301934 0.318779 +0.856546 0.174779 +0.839502 0.172994 +0.847336 0.146206 +0.88028 0.106257 +0.866252 0.155547 +0.37095 0.344299 +0.871458 0.199763 +0.803762 0.12719 +0.826329 0.175 +0.893337 0.192424 +0.817331 0.144659 +0.832914 0.160164 +0.815635 0.122196 +0.885821 0.185214 +0.316989 0.31792 +0.870953 0.177478 +0.832255 0.111237 +0.844802 0.133626 +0.837412 0.10615 +0.759292 0.918901 +0.815619 0.121267 +0.378633 0.314083 +0.839548 0.157009 +0.828274 0.107626 +0.83284 0.187813 +0.890613 0.116485 +0.810089 0.153584 +0.814939 0.179072 +0.800258 0.177972 +0.895225 0.169157 +0.73314 0.931236 +0.848721 0.133783 +0.81551 0.11701 +0.868687 0.176634 +0.896957 0.113196 +0.389054 0.38854 +0.812717 0.132332 +0.87371 0.177684 +0.33352 0.382369 +0.846023 0.101822 +0.344 0.356494 +0.304544 0.366331 +0.832386 0.189727 +0.704722 0.910009 +0.310869 0.342362 +0.871299 0.116465 +0.837278 0.10274 +0.338403 0.365092 +0.783904 0.940099 +0.399713 0.306701 +0.889798 0.120483 +0.824056 0.108129 +0.844994 0.107482 +0.848904 0.112933 +0.826871 0.152845 +0.89664 0.12968 +0.85261 0.11861 +0.89598 0.12436 +0.876881 0.109845 +0.899763 0.139582 +0.856317 0.154608 +0.39 0.379794 +0.329216 0.382024 +0.818369 0.159607 +0.867544 0.151943 +0.816073 0.15709 +0.808482 0.193333 +0.361735 0.349184 +0.811246 0.196906 +0.377963 0.354646 +0.876862 0.139507 +0.801098 0.176761 +0.839471 0.117372 +0.370493 0.351441 +0.831857 0.157395 +0.892061 0.174507 +0.879924 0.184602 +0.814486 0.116701 +0.880326 0.198282 +0.329637 0.377028 +0.800409 0.173463 +0.858756 0.146521 +0.770298 0.909789 +0.89663 0.16985 +0.822317 0.151358 +0.863366 0.159056 +0.837438 0.109562 +0.375746 0.371853 +0.863035 0.13597 +0.341681 0.344239 +0.837191 0.102117 +0.857518 0.130338 +0.877843 0.198342 +0.831355 0.149361 +0.833199 0.194458 +0.861883 0.18576 +0.383883 0.394117 +0.80223 0.194725 +0.836584 0.109057 +0.830883 0.11098 +0.34931 0.343051 +0.87322 0.119193 +0.801568 0.179643 +0.83499 0.189089 +0.883306 0.162157 +0.855331 0.136167 +0.827353 0.15642 +0.835304 0.196587 +0.81356 0.178226 +0.855351 0.126984 +0.336538 0.32047 +0.871382 0.106942 +0.807136 0.126974 +0.719391 0.978292 +0.896613 0.177678 +0.392088 0.384363 +0.859672 0.100289 +0.814092 0.181898 +0.313111 0.317176 +0.833546 0.171589 +0.886529 0.191697 +0.858925 0.121079 +0.818901 0.161709 +0.384935 0.369578 +0.364446 0.35636 +0.805596 0.123281 +0.821475 0.167794 +0.842239 0.167674 +0.845516 0.162248 +0.325251 0.341913 +0.872824 0.158441 +0.885137 0.111048 +0.720571 0.994662 +0.889353 0.109002 +0.805082 0.101511 +0.893938 0.185086 +0.811223 0.12091 +0.897962 0.121979 +0.842313 0.106499 +0.888678 0.140187 +0.829431 0.162015 +0.800891 0.139997 +0.841009 0.11087 +0.85185 0.102892 +0.810698 0.199516 +0.730386 0.903186 +0.817545 0.106374 +0.841119 0.10445 +0.892531 0.166033 +0.855301 0.155058 +0.848869 0.160545 +0.837631 0.114136 +0.811895 0.182398 +0.348722 0.383998 +0.887236 0.158492 +0.815834 0.160024 +0.894654 0.124858 +0.83974 0.110182 +0.891484 0.160042 +0.879151 0.186509 +0.357824 0.385019 +0.815063 0.11887 +0.759898 0.948135 +0.821577 0.195292 +0.715555 0.920154 +0.863761 0.161641 +0.304333 0.334237 +0.881743 0.164423 +0.306421 0.340543 +0.865609 0.145499 +0.821731 0.149971 +0.885233 0.163874 +0.813339 0.114897 +0.874204 0.122921 +0.889057 0.154288 +0.871624 0.14409 +0.869097 0.136601 +0.807429 0.191712 +0.345041 0.321563 +0.83931 0.163284 +0.842468 0.106195 +0.396883 0.305262 +0.894628 0.128521 +0.886603 0.167256 +0.831638 0.157452 +0.840055 0.196995 +0.896967 0.135328 +0.844651 0.109273 +0.804906 0.123718 +0.829203 0.108781 +0.859297 0.133713 +0.8879 0.124796 +0.805 0.115723 +0.87793 0.136908 +0.822777 0.18758 +0.852614 0.123744 +0.885222 0.123751 +0.817925 0.116679 +0.309115 0.378005 +0.857027 0.112186 +0.350599 0.311118 +0.854424 0.185159 +0.863059 0.187469 +0.339618 0.392343 +0.396734 0.305498 +0.849875 0.159409 +0.734899 0.92365 +0.87443 0.198857 +0.82217 0.12192 +0.841567 0.140441 +0.833852 0.135251 +0.72093 0.930449 +0.80088 0.163544 +0.8089 0.102041 +0.879216 0.126808 +0.801086 0.174111 +0.896652 0.129354 +0.883714 0.189499 +0.372874 0.342523 +0.862953 0.173727 +0.357003 0.392382 +0.899427 0.132473 +0.84053 0.107673 +0.876139 0.15687 +0.313842 0.393008 +0.872346 0.171484 +0.779851 0.9059 +0.819865 0.166208 +0.810167 0.104493 +0.316024 0.358873 +0.862212 0.194171 +0.804558 0.151345 +0.875668 0.151805 +0.874691 0.150023 +0.316198 0.321145 +0.839726 0.129373 +0.847198 0.139909 +0.846986 0.184295 +0.781493 0.959652 +0.304141 0.391514 +0.855865 0.176878 +0.882039 0.152038 +0.842595 0.125085 +0.863633 0.123826 +0.818991 0.169564 +0.827721 0.181941 +0.323965 0.341294 +0.848177 0.155645 +0.839904 0.128129 +0.893658 0.14229 +0.84368 0.141728 +0.815819 0.19684 +0.875087 0.19956 +0.885086 0.142388 +0.882871 0.116048 +0.783763 0.974167 +0.89856 0.167246 +0.710974 0.977611 +0.846421 0.192404 +0.871532 0.151592 +0.73495 0.926971 +0.728067 0.993653 +0.883032 0.177956 +0.898197 0.151945 +0.868946 0.167706 +0.832313 0.199476 +0.814887 0.138395 +0.345664 0.300573 +0.881858 0.111975 +0.890711 0.183273 +0.862358 0.160852 +0.87707 0.168116 +0.801645 0.169858 +0.804203 0.143015 +0.845769 0.170608 +0.392847 0.346741 +0.85175 0.119732 +0.875177 0.117237 +0.879914 0.112512 +0.829533 0.143015 +0.837703 0.142995 +0.898297 0.192427 +0.832538 0.170702 +0.38302 0.344929 +0.805033 0.170622 +0.859109 0.115442 +0.854626 0.116947 +0.891335 0.17453 +0.3722 0.3248 +0.384064 0.358592 +0.311068 0.316408 +0.849568 0.172909 +0.851721 0.12168 +0.818386 0.100143 +0.818008 0.126522 +0.834449 0.171644 +0.882466 0.142316 +0.853358 0.102178 +0.853925 0.136591 +0.808353 0.155302 +0.876852 0.15125 +0.8433 0.113038 +0.806072 0.179906 +0.827626 0.103574 +0.804642 0.146007 +0.844456 0.105955 +0.3178 0.327756 +0.81962 0.183569 +0.845153 0.135188 +0.867568 0.193784 +0.344677 0.31555 +0.868502 0.139399 +0.869761 0.182259 +0.840942 0.12611 +0.823803 0.198989 +0.866021 0.189405 +0.830472 0.176892 +0.852984 0.122694 +0.726376 0.945389 +0.389562 0.387719 +0.751666 0.93967 +0.860234 0.138943 +0.867301 0.160167 +0.365457 0.379815 +0.820076 0.106114 +0.853005 0.187446 +0.806597 0.166647 +0.859759 0.127026 +0.8194 0.154785 +0.7781 0.903768 +0.896834 0.162089 +0.826042 0.135529 +0.855017 0.140164 +0.858975 0.160018 +0.877841 0.120589 +0.804365 0.140328 +0.857401 0.100001 +0.381695 0.394184 +0.880224 0.128239 +0.86796 0.164248 +0.82237 0.138774 +0.362795 0.369231 +0.826243 0.121746 +0.852736 0.117037 +0.823795 0.16244 +0.309912 0.37166 +0.815552 0.11289 +0.891685 0.137729 +0.840182 0.119087 +0.873933 0.121337 +0.88245 0.10173 +0.838509 0.19346 +0.872295 0.148754 +0.831451 0.116719 +0.85136 0.107784 +0.803645 0.131614 +0.877537 0.103931 +0.833487 0.175673 +0.837578 0.152661 +0.846693 0.126021 +0.881463 0.100271 +0.88044 0.154582 +0.834019 0.181083 +0.323731 0.370423 +0.807529 0.136034 +0.851471 0.155154 +0.86134 0.152341 +0.892364 0.192783 +0.879169 0.168451 +0.829042 0.142818 +0.887935 0.192168 +0.878671 0.177224 +0.773011 0.936844 +0.824737 0.193255 +0.841652 0.171013 +0.853776 0.19503 +0.840213 0.147429 +0.778386 0.940366 +0.896618 0.180843 +0.814105 0.145469 +0.874934 0.143933 +0.813603 0.117846 +0.876049 0.153262 +0.884423 0.126604 +0.870341 0.199748 +0.85078 0.145573 +0.898638 0.129449 +0.385363 0.39931 +0.891271 0.17511 +0.854424 0.176049 +0.843832 0.182309 +0.898589 0.13482 +0.892447 0.144832 +0.390647 0.310097 +0.37252 0.327555 +0.814935 0.170354 +0.812245 0.113686 +0.870132 0.134055 +0.310231 0.383543 +0.885627 0.144317 +0.861609 0.139202 +0.868226 0.172905 +0.301905 0.314431 +0.726291 0.961717 +0.896298 0.153264 +0.839346 0.162739 +0.862207 0.117241 +0.884096 0.134364 +0.888349 0.164626 +0.832364 0.119022 +0.889722 0.194606 +0.363968 0.305376 +0.819101 0.199337 +0.72635 0.914251 +0.870371 0.157249 +0.802227 0.14205 +0.338385 0.327053 +0.885202 0.105487 +0.723888 0.934808 +0.876837 0.170572 +0.808673 0.161296 +0.858623 0.187924 +0.823542 0.176925 +0.373642 0.39793 +0.821952 0.198513 +0.713005 0.998107 +0.872504 0.153095 +0.777351 0.918793 +0.815999 0.163651 diff --git a/gsl-2.5/doc/examples/ieee b/gsl-2.5/doc/examples/ieee new file mode 100755 index 00000000..03f062cc --- /dev/null +++ b/gsl-2.5/doc/examples/ieee @@ -0,0 +1,228 @@ +#! /bin/sh + +# ieee - temporary wrapper script for .libs/ieee +# Generated by libtool (GNU libtool) 2.4.2 +# +# The ieee program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s/\([`"$\\]\)/\\\1/g' + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command="(cd /home/groups/kipac/chto/package/gsl/gsl-2.5/doc/examples; LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LIBRARY_PATH; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; LD_LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/fftw/include:/home/users/chto/lib/fftw/lib:/home/users/chto/lib/healpix/lib:/home/users/chto/lib/namaster/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/include:/home/users/chto/cpp/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LD_LIBRARY_PATH; PATH=/share/software/user/open/curl/7.54.0/bin:/share/software/user/open/libressl/2.5.3/bin:/home/users/chto/lib/cfitsio:/home/users/chto/lib/cfitsio/include:/home/users/chto/lib:/home/users/chto/bin/bin:/home/users/chto/bin:/home/users/chto/.texlive/bin/x86_64-linux:/home/groups/kipac/chto/anaconda2/envs/newenv3/bin:/home/users/chto/.local/bin/include:/home/users/chto/.local/bin/lib:/home/users/chto/.local/bin:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/bin64:/share/software/user/open/fftw/3.3.6/bin:/home/groups/kipac/chto/anaconda2/condabin:/share/software/user/restricted/ifort/2019/bin:/share/software/user/open/gsl/2.3/bin:/share/software/user/srcc/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/dell/srvadmin/bin:/opt/dell/srvadmin/iSM/bin:/home/users/chto/bin; export PATH; gcc -g -O2 -o \$progdir/\$file ieee.o ../../.libs/libgsl.so ../../cblas/.libs/libgslcblas.so -lm -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/.libs -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/cblas/.libs -Wl,-rpath -Wl,/usr/local/lib)" + +# This environment variable determines our operation mode. +if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then + # install mode needs the following variables: + generated_by_libtool_version='2.4.2' + notinst_deplibs=' ../../libgsl.la ../../cblas/libgslcblas.la' +else + # When we are sourced in execute mode, $file and $ECHO are already set. + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + file="$0" + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + ECHO="printf %s\\n" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ which is used only on +# windows platforms, and (c) all begin with the string --lt- +# (application programs are unlikely to have options which match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's ../../libtool value, followed by no. +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=$0 + shift + for lt_opt + do + case "$lt_opt" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%/[^/]*$%%'` + test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=. + lt_dump_F=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%^.*/%%'` + cat "$lt_dump_D/$lt_dump_F" + exit 0 + ;; + --lt-*) + $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n "$lt_option_debug"; then + echo "ieee:ieee:${LINENO}: libtool wrapper (GNU libtool) 2.4.2" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + $ECHO "ieee:ieee:${LINENO}: newargv[$lt_dump_args_N]: $lt_arg" + lt_dump_args_N=`expr $lt_dump_args_N + 1` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ + + if test -n "$lt_option_debug"; then + $ECHO "ieee:ieee:${LINENO}: newargv[0]: $progdir/$program" 1>&2 + func_lt_dump_args ${1+"$@"} 1>&2 + fi + exec "$progdir/$program" ${1+"$@"} + + $ECHO "$0: cannot exec $program $*" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from $@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case " $* " in + *\ --lt-*) + for lt_wr_arg + do + case $lt_wr_arg in + --lt-*) ;; + *) set x "$@" "$lt_wr_arg"; shift;; + esac + shift + done ;; + esac + func_exec_program_core ${1+"$@"} +} + + # Parse options + func_parse_lt_options "$0" ${1+"$@"} + + # Find the directory that this script lives in. + thisdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + test "x$thisdir" = "x$file" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=`ls -ld "$file" | /usr/bin/sed -n 's/.*-> //p'` + while test -n "$file"; do + destdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + + # If there was a directory component, then change thisdir. + if test "x$destdir" != "x$file"; then + case "$destdir" in + [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;; + *) thisdir="$thisdir/$destdir" ;; + esac + fi + + file=`$ECHO "$file" | /usr/bin/sed 's%^.*/%%'` + file=`ls -ld "$thisdir/$file" | /usr/bin/sed -n 's/.*-> //p'` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no + if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then + # special case for '.' + if test "$thisdir" = "."; then + thisdir=`pwd` + fi + # remove .libs from thisdir + case "$thisdir" in + *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /usr/bin/sed 's%[\\/][^\\/]*$%%'` ;; + .libs ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=`cd "$thisdir" && pwd` + test -n "$absdir" && thisdir="$absdir" + + program=lt-'ieee' + progdir="$thisdir/.libs" + + if test ! -f "$progdir/$program" || + { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /usr/bin/sed 1q`; \ + test "X$file" != "X$progdir/$program"; }; then + + file="$$-$program" + + if test ! -d "$progdir"; then + mkdir "$progdir" + else + rm -f "$progdir/$file" + fi + + # relink executable if necessary + if test -n "$relink_command"; then + if relink_command_output=`eval $relink_command 2>&1`; then : + else + printf %s\n "$relink_command_output" >&2 + rm -f "$progdir/$file" + exit 1 + fi + fi + + mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null || + { rm -f "$progdir/$program"; + mv -f "$progdir/$file" "$progdir/$program"; } + rm -f "$progdir/$file" + fi + + if test -f "$progdir/$program"; then + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + # Run the actual program with our arguments. + func_exec_program ${1+"$@"} + fi + else + # The program doesn't exist. + $ECHO "$0: error: \`$progdir/$program' does not exist" 1>&2 + $ECHO "This script is just a wrapper for $program." 1>&2 + $ECHO "See the libtool documentation for more information." 1>&2 + exit 1 + fi +fi diff --git a/gsl-2.5/doc/examples/ieee.c b/gsl-2.5/doc/examples/ieee.c new file mode 100644 index 00000000..c7f11109 --- /dev/null +++ b/gsl-2.5/doc/examples/ieee.c @@ -0,0 +1,22 @@ +#include +#include + +int +main (void) +{ + float f = 1.0/3.0; + double d = 1.0/3.0; + + double fd = f; /* promote from float to double */ + + printf (" f="); gsl_ieee_printf_float(&f); + printf ("\n"); + + printf ("fd="); gsl_ieee_printf_double(&fd); + printf ("\n"); + + printf (" d="); gsl_ieee_printf_double(&d); + printf ("\n"); + + return 0; +} diff --git a/gsl-2.5/doc/examples/ieee.txt b/gsl-2.5/doc/examples/ieee.txt new file mode 100644 index 00000000..2d2fb42a --- /dev/null +++ b/gsl-2.5/doc/examples/ieee.txt @@ -0,0 +1,3 @@ + f= 1.01010101010101010101011*2^-2 +fd= 1.0101010101010101010101100000000000000000000000000000*2^-2 + d= 1.0101010101010101010101010101010101010101010101010101*2^-2 diff --git a/gsl-2.5/doc/examples/ieeeround b/gsl-2.5/doc/examples/ieeeround new file mode 100755 index 00000000..eb4ae638 --- /dev/null +++ b/gsl-2.5/doc/examples/ieeeround @@ -0,0 +1,228 @@ +#! /bin/sh + +# ieeeround - temporary wrapper script for .libs/ieeeround +# Generated by libtool (GNU libtool) 2.4.2 +# +# The ieeeround program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s/\([`"$\\]\)/\\\1/g' + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command="(cd /home/groups/kipac/chto/package/gsl/gsl-2.5/doc/examples; LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LIBRARY_PATH; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; LD_LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/fftw/include:/home/users/chto/lib/fftw/lib:/home/users/chto/lib/healpix/lib:/home/users/chto/lib/namaster/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/include:/home/users/chto/cpp/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LD_LIBRARY_PATH; PATH=/share/software/user/open/curl/7.54.0/bin:/share/software/user/open/libressl/2.5.3/bin:/home/users/chto/lib/cfitsio:/home/users/chto/lib/cfitsio/include:/home/users/chto/lib:/home/users/chto/bin/bin:/home/users/chto/bin:/home/users/chto/.texlive/bin/x86_64-linux:/home/groups/kipac/chto/anaconda2/envs/newenv3/bin:/home/users/chto/.local/bin/include:/home/users/chto/.local/bin/lib:/home/users/chto/.local/bin:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/bin64:/share/software/user/open/fftw/3.3.6/bin:/home/groups/kipac/chto/anaconda2/condabin:/share/software/user/restricted/ifort/2019/bin:/share/software/user/open/gsl/2.3/bin:/share/software/user/srcc/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/dell/srvadmin/bin:/opt/dell/srvadmin/iSM/bin:/home/users/chto/bin; export PATH; gcc -g -O2 -o \$progdir/\$file ieeeround.o ../../.libs/libgsl.so ../../cblas/.libs/libgslcblas.so -lm -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/.libs -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/cblas/.libs -Wl,-rpath -Wl,/usr/local/lib)" + +# This environment variable determines our operation mode. +if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then + # install mode needs the following variables: + generated_by_libtool_version='2.4.2' + notinst_deplibs=' ../../libgsl.la ../../cblas/libgslcblas.la' +else + # When we are sourced in execute mode, $file and $ECHO are already set. + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + file="$0" + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + ECHO="printf %s\\n" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ which is used only on +# windows platforms, and (c) all begin with the string --lt- +# (application programs are unlikely to have options which match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's ../../libtool value, followed by no. +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=$0 + shift + for lt_opt + do + case "$lt_opt" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%/[^/]*$%%'` + test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=. + lt_dump_F=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%^.*/%%'` + cat "$lt_dump_D/$lt_dump_F" + exit 0 + ;; + --lt-*) + $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n "$lt_option_debug"; then + echo "ieeeround:ieeeround:${LINENO}: libtool wrapper (GNU libtool) 2.4.2" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + $ECHO "ieeeround:ieeeround:${LINENO}: newargv[$lt_dump_args_N]: $lt_arg" + lt_dump_args_N=`expr $lt_dump_args_N + 1` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ + + if test -n "$lt_option_debug"; then + $ECHO "ieeeround:ieeeround:${LINENO}: newargv[0]: $progdir/$program" 1>&2 + func_lt_dump_args ${1+"$@"} 1>&2 + fi + exec "$progdir/$program" ${1+"$@"} + + $ECHO "$0: cannot exec $program $*" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from $@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case " $* " in + *\ --lt-*) + for lt_wr_arg + do + case $lt_wr_arg in + --lt-*) ;; + *) set x "$@" "$lt_wr_arg"; shift;; + esac + shift + done ;; + esac + func_exec_program_core ${1+"$@"} +} + + # Parse options + func_parse_lt_options "$0" ${1+"$@"} + + # Find the directory that this script lives in. + thisdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + test "x$thisdir" = "x$file" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=`ls -ld "$file" | /usr/bin/sed -n 's/.*-> //p'` + while test -n "$file"; do + destdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + + # If there was a directory component, then change thisdir. + if test "x$destdir" != "x$file"; then + case "$destdir" in + [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;; + *) thisdir="$thisdir/$destdir" ;; + esac + fi + + file=`$ECHO "$file" | /usr/bin/sed 's%^.*/%%'` + file=`ls -ld "$thisdir/$file" | /usr/bin/sed -n 's/.*-> //p'` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no + if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then + # special case for '.' + if test "$thisdir" = "."; then + thisdir=`pwd` + fi + # remove .libs from thisdir + case "$thisdir" in + *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /usr/bin/sed 's%[\\/][^\\/]*$%%'` ;; + .libs ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=`cd "$thisdir" && pwd` + test -n "$absdir" && thisdir="$absdir" + + program=lt-'ieeeround' + progdir="$thisdir/.libs" + + if test ! -f "$progdir/$program" || + { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /usr/bin/sed 1q`; \ + test "X$file" != "X$progdir/$program"; }; then + + file="$$-$program" + + if test ! -d "$progdir"; then + mkdir "$progdir" + else + rm -f "$progdir/$file" + fi + + # relink executable if necessary + if test -n "$relink_command"; then + if relink_command_output=`eval $relink_command 2>&1`; then : + else + printf %s\n "$relink_command_output" >&2 + rm -f "$progdir/$file" + exit 1 + fi + fi + + mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null || + { rm -f "$progdir/$program"; + mv -f "$progdir/$file" "$progdir/$program"; } + rm -f "$progdir/$file" + fi + + if test -f "$progdir/$program"; then + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + # Run the actual program with our arguments. + func_exec_program ${1+"$@"} + fi + else + # The program doesn't exist. + $ECHO "$0: error: \`$progdir/$program' does not exist" 1>&2 + $ECHO "This script is just a wrapper for $program." 1>&2 + $ECHO "See the libtool documentation for more information." 1>&2 + exit 1 + fi +fi diff --git a/gsl-2.5/doc/examples/ieeeround.c b/gsl-2.5/doc/examples/ieeeround.c new file mode 100644 index 00000000..04f837db --- /dev/null +++ b/gsl-2.5/doc/examples/ieeeround.c @@ -0,0 +1,30 @@ +#include +#include +#include + +int +main (void) +{ + double x = 1, oldsum = 0, sum = 0; + int i = 0; + + gsl_ieee_env_setup (); /* read GSL_IEEE_MODE */ + + do + { + i++; + + oldsum = sum; + sum += x; + x = x / i; + + printf ("i=%2d sum=%.18f error=%g\n", + i, sum, sum - M_E); + + if (i > 30) + break; + } + while (sum != oldsum); + + return 0; +} diff --git a/gsl-2.5/doc/examples/ieeeround.txt b/gsl-2.5/doc/examples/ieeeround.txt new file mode 100644 index 00000000..92c0d267 --- /dev/null +++ b/gsl-2.5/doc/examples/ieeeround.txt @@ -0,0 +1,19 @@ +i= 1 sum=1.000000000000000000 error=-1.71828 +i= 2 sum=2.000000000000000000 error=-0.718282 +i= 3 sum=2.500000000000000000 error=-0.218282 +i= 4 sum=2.666666666666666519 error=-0.0516152 +i= 5 sum=2.708333333333333037 error=-0.0099485 +i= 6 sum=2.716666666666666341 error=-0.00161516 +i= 7 sum=2.718055555555555447 error=-0.000226273 +i= 8 sum=2.718253968253968367 error=-2.78602e-05 +i= 9 sum=2.718278769841270037 error=-3.05862e-06 +i=10 sum=2.718281525573192248 error=-3.02886e-07 +i=11 sum=2.718281801146384513 error=-2.73127e-08 +i=12 sum=2.718281826198492901 error=-2.26055e-09 +i=13 sum=2.718281828286168711 error=-1.72876e-10 +i=14 sum=2.718281828446759363 error=-1.22857e-11 +i=15 sum=2.718281828458230187 error=-8.14904e-13 +i=16 sum=2.718281828458994909 error=-5.01821e-14 +i=17 sum=2.718281828459042870 error=-2.22045e-15 +i=18 sum=2.718281828459045535 error=4.44089e-16 +i=19 sum=2.718281828459045535 error=4.44089e-16 diff --git a/gsl-2.5/doc/examples/impulse b/gsl-2.5/doc/examples/impulse new file mode 100755 index 00000000..9e38ae63 --- /dev/null +++ b/gsl-2.5/doc/examples/impulse @@ -0,0 +1,228 @@ +#! /bin/sh + +# impulse - temporary wrapper script for .libs/impulse +# Generated by libtool (GNU libtool) 2.4.2 +# +# The impulse program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s/\([`"$\\]\)/\\\1/g' + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command="(cd /home/groups/kipac/chto/package/gsl/gsl-2.5/doc/examples; LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LIBRARY_PATH; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; LD_LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/fftw/include:/home/users/chto/lib/fftw/lib:/home/users/chto/lib/healpix/lib:/home/users/chto/lib/namaster/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/include:/home/users/chto/cpp/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LD_LIBRARY_PATH; PATH=/share/software/user/open/curl/7.54.0/bin:/share/software/user/open/libressl/2.5.3/bin:/home/users/chto/lib/cfitsio:/home/users/chto/lib/cfitsio/include:/home/users/chto/lib:/home/users/chto/bin/bin:/home/users/chto/bin:/home/users/chto/.texlive/bin/x86_64-linux:/home/groups/kipac/chto/anaconda2/envs/newenv3/bin:/home/users/chto/.local/bin/include:/home/users/chto/.local/bin/lib:/home/users/chto/.local/bin:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/bin64:/share/software/user/open/fftw/3.3.6/bin:/home/groups/kipac/chto/anaconda2/condabin:/share/software/user/restricted/ifort/2019/bin:/share/software/user/open/gsl/2.3/bin:/share/software/user/srcc/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/dell/srvadmin/bin:/opt/dell/srvadmin/iSM/bin:/home/users/chto/bin; export PATH; gcc -g -O2 -o \$progdir/\$file impulse.o ../../.libs/libgsl.so ../../cblas/.libs/libgslcblas.so -lm -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/.libs -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/cblas/.libs -Wl,-rpath -Wl,/usr/local/lib)" + +# This environment variable determines our operation mode. +if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then + # install mode needs the following variables: + generated_by_libtool_version='2.4.2' + notinst_deplibs=' ../../libgsl.la ../../cblas/libgslcblas.la' +else + # When we are sourced in execute mode, $file and $ECHO are already set. + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + file="$0" + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + ECHO="printf %s\\n" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ which is used only on +# windows platforms, and (c) all begin with the string --lt- +# (application programs are unlikely to have options which match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's ../../libtool value, followed by no. +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=$0 + shift + for lt_opt + do + case "$lt_opt" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%/[^/]*$%%'` + test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=. + lt_dump_F=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%^.*/%%'` + cat "$lt_dump_D/$lt_dump_F" + exit 0 + ;; + --lt-*) + $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n "$lt_option_debug"; then + echo "impulse:impulse:${LINENO}: libtool wrapper (GNU libtool) 2.4.2" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + $ECHO "impulse:impulse:${LINENO}: newargv[$lt_dump_args_N]: $lt_arg" + lt_dump_args_N=`expr $lt_dump_args_N + 1` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ + + if test -n "$lt_option_debug"; then + $ECHO "impulse:impulse:${LINENO}: newargv[0]: $progdir/$program" 1>&2 + func_lt_dump_args ${1+"$@"} 1>&2 + fi + exec "$progdir/$program" ${1+"$@"} + + $ECHO "$0: cannot exec $program $*" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from $@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case " $* " in + *\ --lt-*) + for lt_wr_arg + do + case $lt_wr_arg in + --lt-*) ;; + *) set x "$@" "$lt_wr_arg"; shift;; + esac + shift + done ;; + esac + func_exec_program_core ${1+"$@"} +} + + # Parse options + func_parse_lt_options "$0" ${1+"$@"} + + # Find the directory that this script lives in. + thisdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + test "x$thisdir" = "x$file" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=`ls -ld "$file" | /usr/bin/sed -n 's/.*-> //p'` + while test -n "$file"; do + destdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + + # If there was a directory component, then change thisdir. + if test "x$destdir" != "x$file"; then + case "$destdir" in + [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;; + *) thisdir="$thisdir/$destdir" ;; + esac + fi + + file=`$ECHO "$file" | /usr/bin/sed 's%^.*/%%'` + file=`ls -ld "$thisdir/$file" | /usr/bin/sed -n 's/.*-> //p'` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no + if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then + # special case for '.' + if test "$thisdir" = "."; then + thisdir=`pwd` + fi + # remove .libs from thisdir + case "$thisdir" in + *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /usr/bin/sed 's%[\\/][^\\/]*$%%'` ;; + .libs ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=`cd "$thisdir" && pwd` + test -n "$absdir" && thisdir="$absdir" + + program=lt-'impulse' + progdir="$thisdir/.libs" + + if test ! -f "$progdir/$program" || + { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /usr/bin/sed 1q`; \ + test "X$file" != "X$progdir/$program"; }; then + + file="$$-$program" + + if test ! -d "$progdir"; then + mkdir "$progdir" + else + rm -f "$progdir/$file" + fi + + # relink executable if necessary + if test -n "$relink_command"; then + if relink_command_output=`eval $relink_command 2>&1`; then : + else + printf %s\n "$relink_command_output" >&2 + rm -f "$progdir/$file" + exit 1 + fi + fi + + mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null || + { rm -f "$progdir/$program"; + mv -f "$progdir/$file" "$progdir/$program"; } + rm -f "$progdir/$file" + fi + + if test -f "$progdir/$program"; then + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + # Run the actual program with our arguments. + func_exec_program ${1+"$@"} + fi + else + # The program doesn't exist. + $ECHO "$0: error: \`$progdir/$program' does not exist" 1>&2 + $ECHO "This script is just a wrapper for $program." 1>&2 + $ECHO "See the libtool documentation for more information." 1>&2 + exit 1 + fi +fi diff --git a/gsl-2.5/doc/examples/impulse.c b/gsl-2.5/doc/examples/impulse.c new file mode 100644 index 00000000..6a81193f --- /dev/null +++ b/gsl-2.5/doc/examples/impulse.c @@ -0,0 +1,68 @@ +#include +#include + +#include +#include +#include +#include +#include + +int +main(void) +{ + const size_t N = 1000; /* length of time series */ + const size_t K = 25; /* window size */ + const double t = 4.0; /* number of scale factors for outlier detection */ + gsl_vector *x = gsl_vector_alloc(N); /* input vector */ + gsl_vector *y = gsl_vector_alloc(N); /* output (filtered) vector */ + gsl_vector *xmedian = gsl_vector_alloc(N); /* window medians */ + gsl_vector *xsigma = gsl_vector_alloc(N); /* window scale estimates */ + gsl_vector_int *ioutlier = gsl_vector_int_alloc(N); /* outlier detected? */ + gsl_filter_impulse_workspace * w = gsl_filter_impulse_alloc(K); + gsl_rng *r = gsl_rng_alloc(gsl_rng_default); + size_t noutlier; + size_t i; + + /* generate input signal */ + for (i = 0; i < N; ++i) + { + double xi = 10.0 * sin(2.0 * M_PI * i / (double) N); + double ei = gsl_ran_gaussian(r, 2.0); + double u = gsl_rng_uniform(r); + double outlier = (u < 0.01) ? 15.0*GSL_SIGN(ei) : 0.0; + + gsl_vector_set(x, i, xi + ei + outlier); + } + + /* apply impulse detection filter */ + gsl_filter_impulse(GSL_FILTER_END_TRUNCATE, GSL_FILTER_SCALE_QN, t, x, y, + xmedian, xsigma, &noutlier, ioutlier, w); + + /* print results */ + for (i = 0; i < N; ++i) + { + double xi = gsl_vector_get(x, i); + double yi = gsl_vector_get(y, i); + double xmedi = gsl_vector_get(xmedian, i); + double xsigmai = gsl_vector_get(xsigma, i); + int outlier = gsl_vector_int_get(ioutlier, i); + + printf("%zu %f %f %f %f %d\n", + i, + xi, + yi, + xmedi + t * xsigmai, + xmedi - t * xsigmai, + outlier); + } + + gsl_vector_free(x); + gsl_vector_free(y); + gsl_vector_free(xmedian); + gsl_vector_free(xsigma); + gsl_vector_int_free(ioutlier); + gsl_filter_impulse_free(w); + gsl_rng_free(r); + + return 0; +} diff --git a/gsl-2.5/doc/examples/impulse.txt b/gsl-2.5/doc/examples/impulse.txt new file mode 100644 index 00000000..ce3e1a9f --- /dev/null +++ b/gsl-2.5/doc/examples/impulse.txt @@ -0,0 +1,1000 @@ +0 0.267837 0.267837 7.086028 -6.488589 0 +1 1.251089 1.251089 7.185481 -6.618925 0 +2 3.474477 3.474477 7.982536 -7.446861 0 +3 -2.385455 -2.385455 7.333649 -6.767092 0 +4 -2.303703 -2.303703 6.860939 -6.263500 0 +5 -2.365765 -2.365765 6.384663 -5.661314 0 +6 0.298719 0.298719 6.383899 -5.534638 0 +7 0.667774 0.667774 6.993067 -6.120060 0 +8 0.467148 0.467148 6.445286 -5.548534 0 +9 -0.579585 -0.579585 6.878966 -5.963442 0 +10 0.991323 0.991323 6.238783 -5.304488 0 +11 3.461237 3.461237 6.799291 -5.883767 0 +12 -0.522795 -0.522795 7.309829 -6.375534 0 +13 -2.115389 -2.115389 8.549063 -7.313561 0 +14 -0.777013 -0.777013 8.904994 -7.669491 0 +15 0.448376 0.448376 8.597245 -7.662949 0 +16 0.424630 0.424630 8.670336 -7.434833 0 +17 0.617751 0.617751 7.592533 -6.357030 0 +18 1.257794 1.257794 6.394977 -5.159474 0 +19 4.604154 4.604154 6.394977 -5.159474 0 +20 0.964867 0.964867 6.753645 -5.819350 0 +21 3.681283 3.681283 7.152683 -5.917180 0 +22 0.856508 0.856508 7.555626 -5.842609 0 +23 -0.651680 -0.651680 7.881223 -6.168206 0 +24 2.657093 2.657093 8.045661 -6.332644 0 +25 3.741497 3.741497 8.765068 -7.052052 0 +26 3.056376 3.056376 8.052739 -6.123005 0 +27 -1.341791 -1.341791 8.312972 -5.797383 0 +28 4.115772 4.115772 9.095099 -6.356424 0 +29 0.399023 0.399023 9.748974 -6.358940 0 +30 0.411121 0.411121 10.187616 -5.920299 0 +31 -0.133195 -0.133195 10.346130 -5.697171 0 +32 0.191088 0.191088 9.860073 -5.592756 0 +33 3.836998 3.836998 9.858131 -5.590814 0 +34 1.369338 1.369338 9.817099 -5.549782 0 +35 2.997870 2.997870 9.559169 -4.910210 0 +36 1.695017 1.695017 9.451341 -4.755629 0 +37 -2.352311 -2.352311 9.581057 -4.932098 0 +38 3.444902 3.444902 10.346130 -5.697171 0 +39 2.347856 2.347856 10.516084 -5.867125 0 +40 2.514601 2.514601 9.783262 -5.134303 0 +41 4.604232 4.604232 10.129567 -5.862250 0 +42 2.133659 2.133659 10.586098 -5.937139 0 +43 2.324479 2.324479 10.272998 -5.577286 0 +44 1.647775 1.647775 10.439743 -5.410542 0 +45 1.808555 1.808555 10.052014 -4.461141 0 +46 3.686416 3.686416 10.478877 -4.888004 0 +47 2.795436 2.795436 10.478877 -4.888004 0 +48 4.343368 4.343368 11.057055 -5.466182 0 +49 0.861866 0.861866 11.479494 -5.888621 0 +50 5.723666 5.723666 10.478877 -4.888004 0 +51 3.591039 3.591039 9.990002 -4.850017 0 +52 1.602405 1.602405 10.254219 -4.663346 0 +53 -15.384532 2.795436 10.254219 -4.663346 1 +54 6.320591 6.320591 10.146072 -5.006087 0 +55 3.380744 3.380744 11.169962 -5.579090 0 +56 7.048299 7.048299 11.830315 -5.851912 0 +57 4.049829 4.049829 12.360317 -5.598829 0 +58 4.899066 4.899066 12.784621 -5.602543 0 +59 1.287136 1.287136 12.811733 -5.629656 0 +60 4.591408 4.591408 13.017568 -4.917911 0 +61 1.031623 1.031623 13.017568 -4.917911 0 +62 2.569992 2.569992 13.029816 -4.065434 0 +63 1.917971 1.917971 13.029127 -4.064746 0 +64 2.989201 2.989201 13.516125 -4.419354 0 +65 2.359780 2.359780 14.245773 -5.062958 0 +66 0.689950 0.689950 13.559147 -4.376332 0 +67 5.997274 5.997274 13.223050 -4.040235 0 +68 6.455235 6.455235 12.363100 -3.180285 0 +69 5.255499 5.255499 11.610613 -2.513841 0 +70 4.482191 4.482191 11.765932 -2.669160 0 +71 4.813373 4.813373 13.150880 -4.054109 0 +72 5.513273 5.513273 12.257609 -3.074794 0 +73 5.167341 5.167341 13.002466 -3.905695 0 +74 5.410549 5.410549 12.400990 -2.880875 0 +75 4.548386 4.548386 13.267454 -3.640707 0 +76 8.895208 8.895208 12.227249 -2.600502 0 +77 9.438126 9.438126 12.104269 -1.769588 0 +78 2.145592 2.145592 11.624270 -1.113271 0 +79 4.760058 4.760058 11.659073 -0.951921 0 +80 4.052600 4.052600 11.281908 -0.770910 0 +81 4.139740 4.139740 11.193750 -0.859068 0 +82 2.830709 2.830709 11.907940 -1.573258 0 +83 6.420421 6.420421 11.907940 -1.573258 0 +84 5.397948 5.397948 12.947706 -2.240554 0 +85 3.199579 3.199579 12.581216 -2.246535 0 +86 5.887218 5.887218 13.146814 -2.439662 0 +87 7.870819 7.870819 12.893940 -2.692536 0 +88 4.524933 4.524933 13.506636 -2.799484 0 +89 5.353576 5.353576 12.668741 -2.467337 0 +90 6.173428 6.173428 12.022822 -1.821418 0 +91 7.260273 7.260273 12.275696 -1.568544 0 +92 4.791960 4.791960 12.275696 -1.568544 0 +93 3.384643 3.384643 12.334876 -1.538981 0 +94 8.200184 8.200184 13.455257 -1.680821 0 +95 4.173493 4.173493 12.917990 -1.143554 0 +96 6.818150 6.818150 13.191185 -2.395290 0 +97 5.100702 5.100702 14.382786 -2.608350 0 +98 6.161797 6.161797 14.234090 -2.021633 0 +99 4.535586 4.535586 14.657365 -2.333771 0 +100 6.855992 6.855992 14.336318 -2.123861 0 +101 4.103610 4.103610 14.336318 -2.123861 0 +102 6.988670 6.988670 14.508887 -2.185293 0 +103 9.017243 9.017243 14.581556 -2.257962 0 +104 4.789311 4.789311 14.696500 -2.372907 0 +105 6.289369 6.289369 15.172261 -2.593523 0 +106 9.205956 9.205956 15.011282 -1.828236 0 +107 4.115150 4.115150 14.938613 -1.755567 0 +108 1.445456 1.445456 14.938613 -1.755567 0 +109 10.151837 10.151837 14.810936 -2.024470 0 +110 6.106228 6.106228 14.623322 -1.836857 0 +111 9.542699 9.542699 15.126226 -1.943181 0 +112 5.123113 5.123113 15.390695 -1.678712 0 +113 5.002891 5.002891 15.408626 -1.660781 0 +114 6.591523 6.591523 14.927868 -1.180024 0 +115 7.721164 7.721164 15.104012 -1.356167 0 +116 8.598271 8.598271 15.153033 -1.969987 0 +117 7.456962 7.456962 15.271304 -1.523460 0 +118 7.396332 7.396332 15.571961 -0.888218 0 +119 7.624535 7.624535 15.521721 -1.773876 0 +120 6.393233 6.393233 14.986306 -1.121586 0 +121 5.904074 5.904074 15.395817 -0.712075 0 +122 6.055145 6.055145 14.371231 -0.506512 0 +123 9.256512 9.256512 14.780743 -0.097000 0 +124 8.922952 8.922952 14.886066 -0.202323 0 +125 6.873922 6.873922 14.994365 -0.201702 0 +126 6.434257 6.434257 14.488965 0.303699 0 +127 7.341871 7.341871 14.488965 0.303699 0 +128 3.856169 3.856169 14.994365 -0.201702 0 +129 8.686101 8.686101 13.882945 0.800798 0 +130 8.086779 8.086779 13.882945 0.800798 0 +131 3.214626 3.214626 14.487172 -0.416884 0 +132 6.932360 6.932360 14.645270 -0.574982 0 +133 11.535909 11.535909 15.259491 -1.189203 0 +134 5.891493 5.891493 15.884419 -1.814130 0 +135 7.480259 7.480259 16.057033 -1.986744 0 +136 10.034917 10.034917 15.954248 -2.089529 0 +137 10.000651 10.000651 15.336973 -1.472254 0 +138 6.070481 6.070481 15.645911 -1.781192 0 +139 7.035144 7.035144 15.336973 -1.472254 0 +140 9.467457 9.467457 16.026665 -2.161945 0 +141 6.794247 6.794247 15.748696 -1.678407 0 +142 7.409702 7.409702 15.748696 -1.678407 0 +143 3.994103 3.994103 15.748696 -1.678407 0 +144 8.013894 8.013894 15.786670 -0.967267 0 +145 3.920389 3.920389 16.457912 -1.497394 0 +146 4.998066 4.998066 15.555881 -0.595363 0 +147 4.173885 4.173885 14.741335 0.219184 0 +148 4.627759 4.627759 15.978082 -0.775855 0 +149 7.794908 7.794908 16.578767 -1.376540 0 +150 6.619745 6.619745 16.387355 -1.567951 0 +151 6.927545 6.927545 16.475275 -1.273048 0 +152 10.764202 10.764202 17.406799 -2.204572 0 +153 7.601114 7.601114 16.765408 -1.563181 0 +154 10.305464 10.305464 16.959203 -1.369387 0 +155 10.221445 10.221445 18.335622 -2.353424 0 +156 9.855058 9.855058 17.178189 -1.150401 0 +157 9.390841 9.390841 17.395402 -0.933187 0 +158 10.360689 10.360689 18.575631 -2.113415 0 +159 6.953842 6.953842 17.395402 -0.933187 0 +160 11.785483 11.785483 16.979465 -0.387203 0 +161 8.296131 8.296131 16.971849 -0.379587 0 +162 5.988366 5.988366 17.036257 -0.062937 0 +163 7.991099 7.991099 16.786314 0.423359 0 +164 4.752674 4.752674 16.991229 0.218444 0 +165 8.231108 8.231108 16.384063 0.825610 0 +166 9.297917 9.297917 16.336095 0.873578 0 +167 10.891405 10.891405 16.139820 1.069853 0 +168 8.486660 8.486660 17.067633 0.142040 0 +169 9.383381 9.383381 16.687256 0.522417 0 +170 -7.532052 8.604837 16.991229 0.218444 1 +171 7.366873 7.366873 16.064121 1.094682 0 +172 9.105867 9.105867 16.139820 1.069853 0 +173 5.417777 5.417777 15.522268 1.636536 0 +174 8.844145 8.844145 16.981751 0.227922 0 +175 8.604837 8.604837 17.304231 0.384059 0 +176 6.466790 6.466790 17.950170 0.261564 0 +177 9.635887 9.635887 17.565953 0.645781 0 +178 7.750050 7.750050 17.226795 0.984939 0 +179 9.670796 9.670796 17.826946 0.384788 0 +180 14.403675 14.403675 17.685871 0.525864 0 +181 9.137232 9.137232 17.482781 0.728953 0 +182 9.876881 9.876881 17.826946 0.384788 0 +183 8.579402 8.579402 17.737244 0.474490 0 +184 12.544866 12.544866 17.466014 0.808451 0 +185 8.105213 8.105213 18.031133 0.740161 0 +186 11.534277 11.534277 17.255353 1.515941 0 +187 13.771462 13.771462 18.025133 0.746161 0 +188 11.457721 11.457721 18.280417 0.490876 0 +189 7.802379 7.802379 18.049049 1.222726 0 +190 8.665812 8.665812 17.965650 0.805643 0 +191 11.230922 11.230922 17.965650 0.805643 0 +192 9.690726 9.690726 18.025133 0.746161 0 +193 8.695821 8.695821 17.714428 1.056866 0 +194 12.149094 12.149094 18.036785 1.344666 0 +195 6.443993 6.443993 18.135953 1.245498 0 +196 9.385647 9.385647 18.618854 0.890506 0 +197 10.753240 10.753240 18.334684 1.174677 0 +198 9.233922 9.233922 18.126380 1.382981 0 +199 5.990353 5.990353 18.270729 1.110722 0 +200 8.181117 8.181117 18.002493 1.378959 0 +201 9.754680 9.754680 17.830875 0.940419 0 +202 7.702949 7.702949 17.830875 0.940419 0 +203 7.721974 7.721974 18.585496 0.795955 0 +204 10.242737 10.242737 18.402308 0.612767 0 +205 10.233953 10.233953 18.387530 0.383764 0 +206 10.730621 10.730621 19.056600 -0.041525 0 +207 11.983465 11.983465 18.509420 0.505654 0 +208 12.947464 12.947464 18.126380 1.382981 0 +209 10.908156 10.908156 18.403979 2.063928 0 +210 8.480391 8.480391 18.257990 1.251371 0 +211 7.584665 7.584665 18.257990 1.251371 0 +212 11.421907 11.421907 17.976201 2.214923 0 +213 6.013883 6.013883 18.121571 2.069553 0 +214 7.866359 7.866359 18.138853 2.329054 0 +215 12.380644 12.380644 18.549067 1.936406 0 +216 9.507537 9.507537 18.290636 2.238618 0 +217 9.298467 9.298467 18.298128 2.231126 0 +218 11.150234 11.150234 19.266510 1.262744 0 +219 11.535475 11.535475 19.093752 1.435502 0 +220 12.109866 12.109866 19.991457 0.284595 0 +221 11.474620 11.474620 19.294543 0.981508 0 +222 7.006106 7.006106 19.111347 1.164704 0 +223 9.301365 9.301365 19.093752 1.435502 0 +224 10.095562 10.095562 18.570957 1.958296 0 +225 6.726845 6.726845 18.570957 1.958296 0 +226 12.198109 12.198109 17.970736 2.558518 0 +227 13.752106 13.752106 18.004448 3.791782 0 +228 10.264627 10.264627 17.455432 4.056278 0 +229 10.138026 10.138026 17.428687 4.083024 0 +230 4.617037 4.617037 17.230802 4.552516 0 +231 11.016086 11.016086 17.254699 4.528619 0 +232 8.124335 8.124335 17.229841 4.281869 0 +233 10.898115 10.898115 16.913198 3.616056 0 +234 11.037969 11.037969 17.595542 2.894294 0 +235 12.177649 12.177649 17.740643 2.788610 0 +236 10.041513 10.041513 18.009017 2.520237 0 +237 11.648894 11.648894 18.423198 2.106056 0 +238 9.464337 9.464337 17.617773 3.225817 0 +239 11.999112 11.999112 17.381569 3.147684 0 +240 10.755855 10.755855 16.624520 3.865316 0 +241 9.993788 9.993788 16.681103 3.611934 0 +242 10.891659 10.891659 17.147767 3.342068 0 +243 11.823212 11.823212 16.663326 3.826509 0 +244 10.244918 10.244918 17.049368 3.243669 0 +245 8.537142 8.537142 16.485662 3.807376 0 +246 6.892226 6.892226 15.831689 4.251338 0 +247 13.948369 13.948369 16.279409 3.803617 0 +248 5.476624 5.476624 16.421115 3.661911 0 +249 9.586733 9.586733 17.050137 3.242900 0 +250 10.421795 10.421795 16.385567 3.602008 0 +251 9.382996 9.382996 17.586808 2.400767 0 +252 10.146519 10.146519 17.634521 2.353054 0 +253 9.597132 9.597132 17.966881 1.693841 0 +254 11.353078 11.353078 18.479345 1.181376 0 +255 9.227084 9.227084 18.603772 0.856501 0 +256 7.471401 7.471401 17.786014 1.482783 0 +257 9.830361 9.830361 18.533646 0.735152 0 +258 9.730137 9.730137 19.120312 0.148485 0 +259 12.416126 12.416126 17.718503 1.589380 0 +260 12.730227 12.730227 16.289174 3.018710 0 +261 11.924813 11.924813 16.121916 3.338357 0 +262 9.509080 9.509080 16.681255 2.779018 0 +263 5.530217 5.530217 16.472607 2.987666 0 +264 12.634131 12.634131 17.794698 1.665575 0 +265 8.123016 8.123016 18.588804 0.871470 0 +266 10.560474 10.560474 18.609898 0.892563 0 +267 7.067415 7.067415 18.150279 1.352182 0 +268 9.634399 9.634399 17.419340 2.241382 0 +269 13.057941 13.057941 17.248913 2.591152 0 +270 7.012512 7.012512 18.224980 2.449054 0 +271 9.653942 9.653942 19.195684 1.478350 0 +272 9.751230 9.751230 19.435485 0.404580 0 +273 11.921285 11.921285 19.237144 0.265317 0 +274 8.190022 8.190022 19.827486 -0.325025 0 +275 9.920032 9.920032 20.015243 -0.512782 0 +276 8.070713 8.070713 20.015243 -0.512782 0 +277 11.540664 11.540664 19.721905 -0.414021 0 +278 10.338007 10.338007 19.721905 -0.414021 0 +279 10.337017 10.337017 19.721905 -0.414021 0 +280 10.352870 10.352870 19.700492 -0.392609 0 +281 12.100791 12.100791 19.511397 -0.203514 0 +282 11.279264 11.279264 18.415279 0.697945 0 +283 8.427866 8.427866 18.865828 0.247397 0 +284 5.210785 5.210785 18.865828 0.247397 0 +285 8.073820 8.073820 18.706753 0.406472 0 +286 14.168975 14.168975 18.706753 0.406472 0 +287 8.020899 8.020899 18.190048 0.923177 0 +288 5.355337 5.355337 18.011363 0.438629 0 +289 7.135108 7.135108 17.968488 1.144737 0 +290 7.992529 7.992529 17.636871 0.813121 0 +291 10.951329 10.951329 18.422825 -0.475627 0 +292 9.556612 9.556612 18.147694 -0.200496 0 +293 8.720282 8.720282 18.500534 -0.553336 0 +294 9.224996 9.224996 18.123740 -0.176542 0 +295 6.156037 6.156037 17.323914 0.539477 0 +296 9.858310 9.858310 17.759966 0.187232 0 +297 10.907875 10.907875 17.910204 0.036995 0 +298 11.831874 11.831874 18.238551 -0.061731 0 +299 8.973599 8.973599 17.149681 1.027139 0 +300 8.085928 8.085928 16.982089 1.467903 0 +301 10.827044 10.827044 16.596427 1.853565 0 +302 7.486542 7.486542 16.544963 2.542380 0 +303 5.711353 5.711353 15.988842 3.098500 0 +304 9.088410 9.088410 15.346503 3.103489 0 +305 12.082218 12.082218 15.477221 2.972771 0 +306 10.161023 10.161023 15.477221 2.972771 0 +307 8.931696 8.931696 16.949973 2.137369 0 +308 10.187945 10.187945 16.441484 2.759606 0 +309 4.731625 4.731625 17.278876 1.808466 0 +310 10.360847 10.360847 17.092265 1.233440 0 +311 9.600545 9.600545 17.047213 1.278491 0 +312 9.543671 9.543671 17.364590 0.961114 0 +313 8.399960 8.399960 17.532006 1.555336 0 +314 11.530595 11.530595 17.899796 1.187546 0 +315 9.162852 9.162852 17.756504 1.444586 0 +316 8.825375 8.825375 16.788096 2.412994 0 +317 9.827699 9.827699 17.378258 2.277139 0 +318 8.589434 8.589434 17.588880 1.612210 0 +319 12.694501 12.694501 17.726550 1.431051 0 +320 11.135144 11.135144 18.715490 0.485600 0 +321 5.705885 5.705885 18.238375 0.919226 0 +322 7.883558 7.883558 17.588880 1.612210 0 +323 10.916514 10.916514 17.463161 1.694440 0 +324 7.555015 7.555015 18.049063 1.038279 0 +325 10.014571 10.014571 18.267074 0.400793 0 +326 12.342213 12.342213 18.959607 0.197994 0 +327 11.223638 11.223638 18.455599 0.212269 0 +328 9.578801 9.578801 18.455599 0.212269 0 +329 11.721221 11.721221 18.714740 -0.046873 0 +330 6.996411 6.996411 18.537792 -0.223821 0 +331 8.317932 8.317932 19.278614 -0.964643 0 +332 13.669557 13.669557 19.081916 -0.767945 0 +333 9.333934 9.333934 18.342516 -0.385658 0 +334 10.045526 10.045526 17.866513 0.447458 0 +335 8.978429 8.978429 17.893311 0.420661 0 +336 7.132362 7.132362 18.521073 -0.207101 0 +337 7.488959 7.488959 18.521073 -0.207101 0 +338 13.382599 13.382599 17.714754 0.242103 0 +339 8.413182 8.413182 16.463526 1.220228 0 +340 9.156986 9.156986 15.217216 1.609149 0 +341 7.094379 7.094379 15.797614 0.920891 0 +342 7.274345 7.274345 15.257634 1.378230 0 +343 5.886317 5.886317 14.996107 1.639757 0 +344 9.867840 9.867840 15.644862 1.073643 0 +345 7.600415 7.600415 15.037427 1.681077 0 +346 9.474006 9.474006 15.003232 1.715273 0 +347 8.841877 8.841877 14.616349 1.894245 0 +348 23.381169 8.184780 14.537342 1.832218 1 +349 7.611702 7.611702 14.988813 1.380747 0 +350 7.998229 7.998229 14.894325 1.475235 0 +351 8.184780 8.184780 14.640320 1.729240 0 +352 8.359252 8.359252 14.708652 1.660908 0 +353 5.777821 5.777821 15.363583 0.632875 0 +354 6.383058 6.383058 15.060778 0.935680 0 +355 8.255297 8.255297 14.649390 1.347068 0 +356 10.196856 10.196856 14.537342 1.832218 0 +357 9.702046 9.702046 14.459191 1.537267 0 +358 8.907539 8.907539 14.503793 1.492665 0 +359 6.840563 6.840563 14.103408 1.893050 0 +360 7.962058 7.962058 13.598345 2.386741 0 +361 4.203045 4.203045 13.429538 2.509128 0 +362 7.587466 7.587466 14.074512 1.864153 0 +363 10.178787 10.178787 14.430294 1.508371 0 +364 9.088539 9.088539 15.234237 0.689878 0 +365 1.673164 1.673164 15.708002 0.097138 0 +366 7.880992 7.880992 15.733646 0.071495 0 +367 7.969333 7.969333 15.728807 0.195308 0 +368 8.924932 8.924932 15.728807 0.195308 0 +369 4.439469 4.439469 15.608783 0.315332 0 +370 7.992543 7.992543 15.793133 0.130982 0 +371 8.300413 8.300413 15.963209 -0.158068 0 +372 7.902570 7.902570 16.460880 -0.655739 0 +373 6.030105 6.030105 16.439625 -0.677641 0 +374 6.289806 6.289806 16.439302 -0.677318 0 +375 8.838022 8.838022 16.599369 -0.837385 0 +376 5.525302 5.525302 15.892711 -0.130727 0 +377 7.217574 7.217574 16.029222 -0.304276 0 +378 5.151193 5.151193 15.801274 -0.076329 0 +379 9.654268 9.654268 15.384323 -0.949175 0 +380 8.332562 8.332562 15.121795 -1.995471 0 +381 9.838362 9.838362 15.074049 -1.948780 0 +382 10.652431 10.652431 15.251547 -2.125222 0 +383 6.562635 6.562635 15.120945 -1.995675 0 +384 4.128871 4.128871 14.936918 -1.811648 0 +385 7.862473 7.862473 14.637325 -1.968897 0 +386 4.572872 4.572872 14.869491 -2.201064 0 +387 5.521192 5.521192 15.075644 -2.040975 0 +388 8.541596 8.541596 14.822030 -2.153602 0 +389 6.334214 6.334214 15.057004 -2.388577 0 +390 4.300907 4.300907 14.266381 -3.179200 0 +391 4.400149 4.400149 14.263999 -3.173179 0 +392 6.563162 6.563162 14.055005 -2.967824 0 +393 5.145591 5.145591 14.055005 -2.967824 0 +394 9.979609 9.979609 14.031407 -2.944225 0 +395 5.292745 5.292745 12.993509 -1.951126 0 +396 6.868192 6.868192 12.567765 -1.525382 0 +397 5.543591 5.543591 12.600447 -1.513265 0 +398 3.905196 3.905196 12.574038 -1.531654 0 +399 6.517334 6.517334 12.803186 -1.716005 0 +400 5.503432 5.503432 13.695224 -2.608042 0 +401 3.130641 3.130641 13.828988 -2.822123 0 +402 3.836963 3.836963 13.618301 -3.032811 0 +403 5.545410 5.545410 14.026047 -3.019182 0 +404 4.493050 4.493050 14.023483 -3.016618 0 +405 8.123038 8.123038 14.102507 -3.517016 0 +406 8.654125 8.654125 14.297967 -3.291102 0 +407 4.678703 4.678703 13.639838 -2.632973 0 +408 5.830823 5.830823 13.203921 -2.197056 0 +409 6.388378 6.388378 13.406502 -2.399637 0 +410 3.474992 3.474992 13.406502 -2.399637 0 +411 7.557681 7.557681 12.911699 -1.904834 0 +412 3.083304 3.083304 12.260782 -2.250389 0 +413 0.279635 0.279635 12.260782 -2.250389 0 +414 4.262027 4.262027 13.604743 -2.550001 0 +415 6.891936 6.891936 13.448479 -2.357659 0 +416 5.005197 5.005197 14.706181 -3.651439 0 +417 0.499105 0.499105 13.855964 -2.801223 0 +418 5.527371 5.527371 13.082569 -3.072175 0 +419 5.597482 5.597482 12.026603 -2.031869 0 +420 4.991155 4.991155 11.951146 -1.940753 0 +421 7.835988 7.835988 11.733583 -1.738850 0 +422 5.624893 5.624893 12.894224 -2.911915 0 +423 4.997367 4.997367 11.593225 -1.598492 0 +424 3.200629 3.200629 11.153218 -1.158485 0 +425 5.665661 5.665661 11.146653 -1.151920 0 +426 9.618998 9.618998 11.101214 -1.106481 0 +427 6.332037 6.332037 11.532358 -1.537625 0 +428 2.580145 2.580145 11.561083 -1.578774 0 +429 4.835941 4.835941 12.030025 -2.130870 0 +430 3.817875 3.817875 11.400850 -1.501696 0 +431 4.816852 4.816852 11.975480 -2.185415 0 +432 6.104036 6.104036 13.027082 -3.355199 0 +433 4.949577 4.949577 13.244553 -3.610849 0 +434 1.879642 1.879642 12.054193 -3.763456 0 +435 5.319233 5.319233 12.009015 -4.373266 0 +436 5.823573 5.823573 12.009015 -4.373266 0 +437 4.145368 4.145368 12.009015 -4.373266 0 +438 2.691672 2.691672 11.878367 -4.487684 0 +439 3.695342 3.695342 11.701783 -4.311100 0 +440 -0.695224 -0.695224 10.486591 -4.146611 0 +441 1.543020 1.543020 11.184007 -3.793324 0 +442 4.895032 4.895032 11.234223 -4.894243 0 +443 1.713209 1.713209 11.212757 -4.872777 0 +444 3.078912 3.078912 11.566334 -5.226354 0 +445 2.613552 2.613552 11.326330 -5.004306 0 +446 1.728368 1.728368 11.121679 -4.963855 0 +447 2.545995 2.545995 11.369256 -5.047232 0 +448 4.589891 4.589891 11.352152 -5.030128 0 +449 2.840381 2.840381 11.401490 -5.079466 0 +450 2.669609 2.669609 11.591050 -5.433226 0 +451 6.299739 6.299739 12.122904 -5.800880 0 +452 3.169990 3.169990 11.794997 -5.637173 0 +453 5.709799 5.709799 11.750190 -5.428166 0 +454 -0.824434 -0.824434 11.049524 -4.709544 0 +455 5.862470 5.862470 11.723355 -5.401331 0 +456 18.652669 3.169990 10.580246 -4.240266 1 +457 3.161012 3.161012 11.671545 -5.331564 0 +458 2.736013 2.736013 11.671545 -5.331564 0 +459 4.239602 4.239602 11.370021 -4.405610 0 +460 5.460174 5.460174 11.983760 -5.019349 0 +461 5.911840 5.911840 12.399270 -6.059290 0 +462 -1.187414 -1.187414 12.165547 -5.742824 0 +463 5.605434 5.605434 13.429308 -7.006585 0 +464 2.754378 2.754378 14.378958 -8.038978 0 +465 4.272463 4.272463 14.867402 -8.545378 0 +466 3.541624 3.541624 14.279138 -8.770381 0 +467 0.185253 0.185253 14.460769 -8.952012 0 +468 3.482205 3.482205 15.323209 -9.851183 0 +469 -0.736499 -0.736499 13.973959 -8.894007 0 +470 2.539976 2.539976 14.246366 -9.166414 0 +471 5.020245 5.020245 14.824536 -10.538033 0 +472 2.143252 2.143252 14.721528 -10.806542 0 +473 -14.628129 1.696534 14.348131 -10.955063 1 +474 3.211361 3.211361 12.976464 -10.275347 0 +475 -0.663691 -0.663691 13.185284 -10.066528 0 +476 0.552242 0.552242 12.853966 -10.152849 0 +477 -0.080934 -0.080934 11.836815 -10.581122 0 +478 -1.003482 -1.003482 11.340857 -10.236374 0 +479 1.957493 1.957493 10.478555 -9.374072 0 +480 -3.361698 -3.361698 10.539870 -9.374398 0 +481 1.696534 1.696534 10.539870 -9.374398 0 +482 4.860231 4.860231 10.554160 -9.298467 0 +483 -2.318603 -2.318603 11.124527 -9.868834 0 +484 -0.733239 -0.733239 10.550038 -9.294345 0 +485 -0.038200 -0.038200 10.806957 -9.551264 0 +486 1.350559 1.350559 9.951934 -8.696241 0 +487 1.559378 1.559378 9.222653 -8.057181 0 +488 -1.755975 -1.755975 9.144510 -7.979038 0 +489 0.627846 0.627846 9.144510 -7.979038 0 +490 0.182254 0.182254 9.906824 -8.741352 0 +491 0.582736 0.582736 10.036788 -8.871316 0 +492 1.430943 1.430943 10.158094 -9.297982 0 +493 6.045474 6.045474 9.906824 -8.741352 0 +494 2.115916 2.115916 9.640037 -8.779925 0 +495 5.013403 5.013403 8.474157 -7.905116 0 +496 2.450726 2.450726 8.228316 -7.368204 0 +497 2.721429 2.721429 8.605954 -7.745842 0 +498 -1.037838 -1.037838 8.605954 -7.745842 0 +499 0.430056 0.430056 8.605954 -7.745842 0 +500 0.284520 0.284520 8.561873 -7.701761 0 +501 -0.233270 -0.233270 8.808920 -7.948808 0 +502 -2.625151 -2.625151 8.924437 -8.355397 0 +503 -2.413166 -2.413166 9.549345 -8.980304 0 +504 -1.094948 -1.094948 9.181555 -9.367505 0 +505 2.537661 2.537661 9.033974 -9.219923 0 +506 -0.238393 -0.238393 8.516936 -8.702885 0 +507 -0.092975 -0.092975 8.563166 -9.029706 0 +508 1.373833 1.373833 7.671468 -8.148254 0 +509 -2.066324 -2.066324 6.934499 -7.411285 0 +510 -0.493397 -0.493397 6.488480 -6.965267 0 +511 2.014530 2.014530 7.011178 -7.487965 0 +512 1.025668 1.025668 7.487417 -8.340964 0 +513 -2.145715 -2.145715 7.487417 -8.340964 0 +514 -1.821600 -1.821600 8.206499 -9.060046 0 +515 -3.266027 -3.266027 9.126253 -9.603039 0 +516 -0.426773 -0.426773 9.126253 -9.603039 0 +517 0.121232 0.121232 9.846584 -10.323370 0 +518 2.465783 2.465783 9.670341 -10.147127 0 +519 -3.011704 -3.011704 8.951845 -9.805391 0 +520 -1.593874 -1.593874 8.854164 -9.840957 0 +521 -0.238189 -0.238189 8.231858 -9.218651 0 +522 0.106509 0.106509 7.757179 -8.743972 0 +523 -7.543083 -7.543083 8.975374 -10.038212 0 +524 -2.866531 -2.866531 8.975374 -10.038212 0 +525 0.303255 0.303255 8.190985 -10.249213 0 +526 1.633585 1.633585 8.560060 -10.618287 0 +527 3.273476 3.273476 8.560060 -10.618287 0 +528 -1.442878 -1.442878 8.560060 -10.618287 0 +529 -3.908796 -3.908796 8.835319 -11.155625 0 +530 -0.157968 -0.157968 8.286159 -11.171915 0 +531 -0.531419 -0.531419 7.649997 -10.837744 0 +532 -1.029114 -1.029114 7.800993 -10.686749 0 +533 -0.341502 -0.341502 7.800993 -10.686749 0 +534 -1.160153 -1.160153 7.672243 -10.960878 0 +535 -4.418606 -4.418606 7.613339 -11.223731 0 +536 1.315229 1.315229 7.251516 -10.861908 0 +537 -2.191284 -2.191284 7.575781 -10.864416 0 +538 -3.273143 -3.273143 7.944856 -11.233491 0 +539 -3.539737 -3.539737 7.414903 -11.025294 0 +540 -3.017166 -3.017166 6.122166 -10.418292 0 +541 -1.644318 -1.644318 6.122166 -10.418292 0 +542 -3.314391 -3.314391 6.122166 -10.418292 0 +543 -2.148063 -2.148063 5.498660 -9.881229 0 +544 -0.252086 -0.252086 4.275164 -10.309496 0 +545 -1.805196 -1.805196 4.827314 -11.115179 0 +546 -3.509218 -3.509218 3.831438 -10.377724 0 +547 -4.967225 -4.967225 3.759604 -10.305890 0 +548 -4.357887 -4.357887 3.971547 -10.259412 0 +549 0.535519 0.535519 2.760661 -9.306946 0 +550 13.547418 -3.314391 2.374110 -9.002891 1 +551 -3.660851 -3.660851 3.172002 -10.014772 0 +552 -3.143933 -3.143933 4.036477 -10.665258 0 +553 -0.383074 -0.383074 4.726713 -11.569482 0 +554 -4.015029 -4.015029 5.226349 -12.244786 0 +555 -3.993904 -3.993904 6.207155 -13.528856 0 +556 -3.984021 -3.984021 5.424119 -12.745820 0 +557 -6.592861 -6.592861 5.116996 -12.438697 0 +558 -3.705357 -3.705357 3.984588 -11.395301 0 +559 -1.513520 -1.513520 3.855850 -11.823892 0 +560 -1.973254 -1.973254 3.953448 -11.364161 0 +561 -4.192480 -4.192480 3.972216 -11.382929 0 +562 -3.421385 -3.421385 3.410123 -10.820836 0 +563 -6.806633 -6.806633 2.692188 -10.660230 0 +564 -1.300189 -1.300189 3.121576 -11.109383 0 +565 -6.456484 -6.456484 3.436372 -11.466430 0 +566 -5.272760 -5.272760 2.925413 -10.955471 0 +567 -5.371250 -5.371250 2.842293 -10.830100 0 +568 -2.924654 -2.924654 2.790071 -11.175030 0 +569 -2.863352 -2.863352 3.115339 -11.674911 0 +570 -4.487874 -4.487874 3.658482 -12.218054 0 +571 -4.412896 -4.412896 3.916005 -12.605790 0 +572 -3.185967 -3.185967 3.619695 -12.309479 0 +573 -4.810513 -4.810513 2.915812 -11.741604 0 +574 -2.511660 -2.511660 3.620352 -12.596101 0 +575 -4.279786 -4.279786 3.791655 -13.412681 0 +576 -5.758769 -5.758769 3.970091 -12.945840 0 +577 -6.560281 -6.560281 2.518195 -12.139221 0 +578 -2.960049 -2.960049 1.981907 -11.437697 0 +579 -3.733358 -3.733358 2.667231 -12.123020 0 +580 -4.344892 -4.344892 2.600813 -12.056603 0 +581 -6.356539 -6.356539 2.162541 -11.618330 0 +582 -8.066854 -8.066854 2.030501 -11.651527 0 +583 -5.838075 -5.838075 1.916214 -12.039979 0 +584 -2.310525 -2.310525 2.962012 -13.572131 0 +585 -5.061883 -5.061883 3.062592 -14.129493 0 +586 -7.902661 -7.902661 3.760352 -14.827253 0 +587 -7.654868 -7.654868 3.649729 -14.937876 0 +588 -2.992487 -2.992487 2.929761 -14.447300 0 +589 -5.305060 -5.305060 2.951969 -14.240116 0 +590 -4.727895 -4.727895 2.622998 -13.911144 0 +591 -7.806376 -7.806376 2.622998 -13.911144 0 +592 -5.533451 -5.533451 1.922773 -13.533945 0 +593 -4.720891 -4.720891 1.986777 -13.597948 0 +594 -5.644073 -5.644073 2.507102 -14.118274 0 +595 -6.054865 -6.054865 2.825490 -14.436662 0 +596 -9.702415 -9.702415 2.887155 -14.498327 0 +597 -9.498429 -9.498429 2.887155 -14.498327 0 +598 -2.493494 -2.493494 3.048636 -14.995011 0 +599 -8.335606 -8.335606 3.551274 -15.497649 0 +600 -5.805586 -5.805586 3.171096 -15.117471 0 +601 -5.601854 -5.601854 2.966959 -15.076688 0 +602 -5.973188 -5.973188 3.495245 -16.380830 0 +603 -4.030868 -4.030868 2.554052 -16.584334 0 +604 -8.311293 -8.311293 3.682921 -16.568506 0 +605 -3.100040 -3.100040 3.682921 -16.568506 0 +606 -7.535112 -7.535112 3.506708 -16.392293 0 +607 -7.015141 -7.015141 2.922896 -16.953178 0 +608 -7.465775 -7.465775 2.893797 -16.924078 0 +609 -2.258369 -2.258369 3.291708 -16.177293 0 +610 -6.442793 -6.442793 2.922864 -15.808449 0 +611 -9.013013 -9.013013 2.125692 -15.011277 0 +612 -7.466331 -7.466331 1.764878 -14.650464 0 +613 -8.716577 -8.716577 1.981141 -14.866727 0 +614 -9.905082 -9.905082 1.981141 -14.866727 0 +615 -7.192530 -7.192530 1.839250 -14.724835 0 +616 -3.709826 -3.709826 1.192530 -15.222812 0 +617 -4.835126 -4.835126 1.981141 -14.866727 0 +618 -5.347735 -5.347735 0.386000 -13.271585 0 +619 -7.256794 -7.256794 0.802973 -12.854612 0 +620 -6.008870 -6.008870 1.242898 -13.294536 0 +621 -5.710140 -5.710140 0.802973 -12.854612 0 +622 -7.138076 -7.138076 -0.166413 -12.719173 0 +623 -5.486622 -5.486622 0.691131 -13.669095 0 +624 -7.423230 -7.423230 -0.061292 -12.916673 0 +625 -5.992552 -5.992552 0.031051 -13.009016 0 +626 -6.025819 -6.025819 0.031051 -13.009016 0 +627 -5.763488 -5.763488 -0.061292 -12.916673 0 +628 -9.152842 -9.152842 0.643131 -13.621095 0 +629 -4.947763 -4.947763 -0.267572 -13.337683 0 +630 -5.312095 -5.312095 -0.603021 -13.673132 0 +631 -5.140594 -5.140594 -0.493181 -13.782972 0 +632 -8.114486 -8.114486 -0.281520 -13.323736 0 +633 -6.488982 -6.488982 -0.309284 -13.966869 0 +634 -7.678385 -7.678385 -0.291117 -14.555343 0 +635 -10.031836 -10.031836 -0.896886 -14.459884 0 +636 -7.918713 -7.918713 -0.896886 -14.459884 0 +637 -6.802628 -6.802628 -0.587367 -15.250060 0 +638 -8.837612 -8.837612 -0.727296 -15.389990 0 +639 -8.622168 -8.622168 -0.421981 -15.806991 0 +640 -11.997592 -11.997592 -0.721350 -16.522985 0 +641 -8.803812 -8.803812 -0.201202 -17.043133 0 +642 -8.840204 -8.840204 -0.312285 -16.996481 0 +643 -6.756679 -6.756679 -0.753566 -16.555200 0 +644 -6.489111 -6.489111 -1.234777 -16.073989 0 +645 -9.432196 -9.432196 -0.560687 -17.046938 0 +646 -8.058643 -8.058643 -1.064698 -16.610527 0 +647 -8.654383 -8.654383 -1.371945 -16.308463 0 +648 -7.610917 -7.610917 -1.418007 -16.257218 0 +649 -9.723912 -9.723912 -1.418007 -16.257218 0 +650 -9.025920 -9.025920 -0.740110 -16.935114 0 +651 -13.479297 -13.479297 -0.461714 -17.145910 0 +652 -11.460973 -11.460973 -0.217291 -17.390333 0 +653 -9.836700 -9.836700 -0.706310 -16.901314 0 +654 -10.134987 -10.134987 -0.742702 -16.937706 0 +655 -6.124257 -6.124257 -1.000439 -16.308327 0 +656 -7.669710 -7.669710 -1.442329 -16.609511 0 +657 -25.717885 -9.025920 -1.994991 -16.056849 1 +658 -9.732316 -9.732316 -1.327212 -15.981554 0 +659 -9.400018 -9.400018 -1.994991 -16.056849 0 +660 -7.349048 -7.349048 -2.138168 -15.913672 0 +661 -6.918614 -6.918614 -2.039774 -16.012066 0 +662 -4.644621 -4.644621 -1.100392 -15.754733 0 +663 -7.814512 -7.814512 -1.374915 -15.347208 0 +664 -6.999516 -6.999516 -1.719792 -15.002332 0 +665 -10.638205 -10.638205 -1.719792 -15.002332 0 +666 -9.907166 -9.907166 -1.752506 -14.370272 0 +667 -7.567737 -7.567737 -1.717077 -14.405701 0 +668 -9.391755 -9.391755 -2.450894 -13.671884 0 +669 -7.753135 -7.753135 -2.389669 -14.150705 0 +670 -8.054450 -8.054450 -2.929273 -13.193505 0 +671 -9.472058 -9.472058 -2.272019 -13.850759 0 +672 -8.361062 -8.361062 -2.118481 -13.990420 0 +673 -7.271663 -7.271663 -1.604673 -14.504228 0 +674 -8.427563 -8.427563 -1.941543 -14.181235 0 +675 -7.340866 -7.340866 -2.611289 -13.511489 0 +676 -8.523586 -8.523586 -2.245041 -14.192503 0 +677 -11.649602 -11.649602 -2.429402 -14.008142 0 +678 -8.061389 -8.061389 -3.226213 -13.211331 0 +679 -9.327534 -9.327534 -3.129554 -13.307991 0 +680 -7.578625 -7.578625 -2.695602 -13.844772 0 +681 -8.270187 -8.270187 -3.179044 -13.258501 0 +682 -6.799103 -6.799103 -2.296456 -14.243919 0 +683 -11.897201 -11.897201 -1.749922 -14.972202 0 +684 -6.105954 -6.105954 -2.000122 -14.540252 0 +685 -6.308229 -6.308229 -1.829805 -14.710570 0 +686 -8.218772 -8.218772 -1.731857 -15.123268 0 +687 -7.465009 -7.465009 -1.328047 -15.719125 0 +688 -9.929549 -9.929549 -0.897629 -16.149543 0 +689 -8.053036 -8.053036 -0.644230 -15.896144 0 +690 -8.812181 -8.812181 -0.721288 -15.819086 0 +691 -11.775775 -11.775775 -1.031546 -15.508829 0 +692 -9.292914 -9.292914 -0.721288 -15.819086 0 +693 -8.089849 -8.089849 -0.644230 -15.896144 0 +694 -10.969398 -10.969398 -0.407474 -17.216887 0 +695 -12.694388 -12.694388 -1.181684 -17.077759 0 +696 -7.910436 -7.910436 -0.068489 -18.190954 0 +697 -9.129722 -9.129722 -0.409930 -18.175898 0 +698 -10.660551 -10.660551 -2.005819 -17.740754 0 +699 -11.503712 -11.503712 -1.524843 -18.334255 0 +700 -6.970637 -6.970637 -1.524843 -18.334255 0 +701 -7.484025 -7.484025 -1.782309 -18.460539 0 +702 -11.203502 -11.203502 -2.332060 -18.066995 0 +703 -7.645138 -7.645138 -2.518332 -17.880723 0 +704 -10.199528 -10.199528 -2.895493 -17.503562 0 +705 -7.888185 -7.888185 -2.967228 -17.447497 0 +706 -12.432061 -12.432061 -2.435747 -17.978979 0 +707 -11.482637 -11.482637 -1.251547 -19.163179 0 +708 -14.004683 -14.004683 -2.337757 -18.061298 0 +709 -9.873287 -9.873287 -2.427912 -17.971144 0 +710 -10.207363 -10.207363 -2.251490 -18.147565 0 +711 -12.076098 -12.076098 -2.251490 -18.147565 0 +712 -9.351541 -9.351541 -2.173387 -18.069461 0 +713 -10.121424 -10.121424 -2.792862 -17.449986 0 +714 -10.631217 -10.631217 -3.035069 -17.363986 0 +715 -9.994583 -9.994583 -2.259653 -17.983195 0 +716 -10.812405 -10.812405 -2.949891 -17.449164 0 +717 -11.948369 -11.948369 -2.889291 -17.388564 0 +718 8.443520 -10.207363 -3.615804 -16.798922 1 +719 -13.624900 -13.624900 -3.566211 -16.711645 0 +720 -9.983922 -9.983922 -3.697051 -16.545797 0 +721 -7.574850 -7.574850 -3.649616 -16.339550 0 +722 -8.641288 -8.641288 -3.622406 -16.620442 0 +723 -10.607213 -10.607213 -3.495565 -16.493601 0 +724 -9.434477 -9.434477 -3.898877 -16.090289 0 +725 -9.205209 -9.205209 -3.652368 -16.336798 0 +726 -11.799755 -11.799755 -3.453147 -16.514698 0 +727 -7.297338 -7.297338 -2.834490 -17.133355 0 +728 -11.497214 -11.497214 -2.267255 -17.412340 0 +729 -10.138928 -10.138928 -2.187089 -16.681864 0 +730 -10.712078 -10.712078 -2.187089 -16.681864 0 +731 -8.922397 -8.922397 -2.915529 -15.953424 0 +732 -9.839797 -9.839797 -3.303184 -15.494596 0 +733 -8.428877 -8.428877 -3.056675 -15.741104 0 +734 -11.203789 -11.203789 -3.358568 -15.510385 0 +735 -9.398890 -9.398890 -3.415425 -16.264170 0 +736 -10.705525 -10.705525 -3.340779 -16.338816 0 +737 -8.654351 -8.654351 -2.458968 -17.818888 0 +738 -8.913498 -8.913498 -2.458968 -17.818888 0 +739 -14.056843 -14.056843 -2.458968 -17.818888 0 +740 -8.479419 -8.479419 -3.616584 -16.762018 0 +741 -9.064292 -9.064292 -2.458968 -17.818888 0 +742 -11.963697 -11.963697 -2.509506 -17.170089 0 +743 -7.918956 -7.918956 -3.172250 -16.406007 0 +744 -8.893071 -8.893071 -2.453181 -17.125076 0 +745 -11.978043 -11.978043 -1.695487 -17.882771 0 +746 -10.506286 -10.506286 -1.942463 -18.436139 0 +747 -11.985041 -11.985041 -1.597522 -18.781080 0 +748 -12.585050 -12.585050 -1.193377 -19.221824 0 +749 -13.011362 -13.011362 -1.193377 -19.221824 0 +750 -8.661657 -8.661657 -1.521559 -19.491012 0 +751 -10.207601 -10.207601 -1.521559 -19.491012 0 +752 -10.189301 -10.189301 -1.615822 -18.799380 0 +753 -6.594348 -6.594348 -2.004469 -18.410732 0 +754 -9.789129 -9.789129 -2.052858 -18.362344 0 +755 -9.222485 -9.222485 -2.051107 -18.364095 0 +756 -7.785350 -7.785350 -2.423251 -18.589320 0 +757 -12.943592 -12.943592 -2.259448 -18.753123 0 +758 -11.676527 -11.676527 -1.615822 -18.799380 0 +759 -13.376047 -13.376047 -1.207002 -19.171600 0 +760 -10.901260 -10.901260 -1.105132 -19.069730 0 +761 -10.603267 -10.603267 -1.708391 -18.466471 0 +762 -10.935113 -10.935113 -2.438315 -17.736547 0 +763 -8.887820 -8.887820 -2.095659 -18.282943 0 +764 -10.087431 -10.087431 -1.641725 -18.533137 0 +765 -9.862144 -9.862144 -1.006042 -18.745178 0 +766 -9.875610 -9.875610 -2.505344 -17.595850 0 +767 -13.787036 -13.787036 -2.401481 -17.699713 0 +768 -12.572964 -12.572964 -2.661687 -17.471029 0 +769 -7.673684 -7.673684 -3.026587 -17.148275 0 +770 -6.286761 -6.286761 -3.403508 -16.771354 0 +771 -8.308769 -8.308769 -3.671243 -16.461473 0 +772 -8.221577 -8.221577 -3.671243 -16.461473 0 +773 -10.528450 -10.528450 -3.905278 -16.195917 0 +774 -10.667655 -10.667655 -4.068707 -15.682512 0 +775 -13.192959 -13.192959 -4.284206 -15.440081 0 +776 -8.484980 -8.484980 -3.467029 -16.257258 0 +777 -8.194163 -8.194163 -3.070691 -16.086382 0 +778 -10.050597 -10.050597 -3.064374 -16.080065 0 +779 -9.063724 -9.063724 -2.350779 -16.793659 0 +780 -10.066358 -10.066358 -1.818750 -16.377697 0 +781 -10.441165 -10.441165 -1.759431 -16.437015 0 +782 -10.201032 -10.201032 -1.818750 -16.377697 0 +783 -9.098223 -9.098223 -2.297895 -16.846544 0 +784 -12.829292 -12.829292 -2.010255 -17.146819 0 +785 -9.572219 -9.572219 -2.692047 -17.409148 0 +786 -9.578537 -9.578537 -1.400063 -17.757011 0 +787 -8.875957 -8.875957 -1.104937 -18.039502 0 +788 -6.473736 -6.473736 -1.599477 -17.544962 0 +789 -8.898824 -8.898824 -1.599477 -17.544962 0 +790 -8.342426 -8.342426 -2.266312 -16.878127 0 +791 -13.415238 -13.415238 -0.993542 -17.202904 0 +792 -4.318092 -4.318092 -0.340125 -18.804313 0 +793 -11.400119 -11.400119 -0.759957 -18.384482 0 +794 -8.086774 -8.086774 0.939858 -19.136304 0 +795 -12.536231 -12.536231 0.412671 -18.609117 0 +796 -11.160834 -11.160834 1.608785 -19.406434 0 +797 -10.442468 -10.442468 1.790913 -19.588562 0 +798 -6.271823 -6.271823 1.631653 -19.383567 0 +799 -7.609191 -7.609191 2.319737 -20.071650 0 +800 -9.725720 -9.725720 2.727157 -20.433160 0 +801 -8.258947 -8.258947 2.681334 -20.478983 0 +802 -8.853002 -8.853002 2.447473 -21.349660 0 +803 -6.288309 -6.288309 2.447473 -21.349660 0 +804 -11.002650 -11.002650 1.654608 -19.360611 0 +805 -9.905660 -9.905660 0.528883 -19.431069 0 +806 -6.452553 -6.452553 0.906350 -18.612353 0 +807 -9.451093 -9.451093 0.231632 -19.133818 0 +808 -6.623700 -6.623700 0.288792 -17.994795 0 +809 -15.518919 -15.518919 0.060491 -17.766494 0 +810 -8.660969 -8.660969 -0.048101 -17.657902 0 +811 -12.053808 -12.053808 -0.542785 -18.152586 0 +812 -6.397409 -6.397409 -0.580373 -18.114998 0 +813 -11.636788 -11.636788 -0.580373 -18.114998 0 +814 -9.680276 -9.680276 -0.638831 -18.263356 0 +815 -8.466938 -8.466938 -0.463420 -18.438767 0 +816 -7.471020 -7.471020 -1.018390 -18.342163 0 +817 -11.608259 -11.608259 -1.018390 -18.342163 0 +818 -8.563042 -8.563042 -1.018390 -18.342163 0 +819 -10.589499 -10.589499 -1.417694 -17.973635 0 +820 -8.002144 -8.002144 -0.807272 -18.584058 0 +821 -9.347686 -9.347686 -1.358403 -18.032927 0 +822 -9.695665 -9.695665 -1.579434 -17.781119 0 +823 -11.666017 -11.666017 -1.641128 -17.719424 0 +824 -8.521872 -8.521872 -1.846304 -17.368883 0 +825 -10.158995 -10.158995 -1.918986 -17.441566 0 +826 -12.508431 -12.508431 -1.568445 -17.646742 0 +827 -8.633912 -8.633912 -0.654764 -18.143556 0 +828 -10.647953 -10.647953 -0.257367 -18.540954 0 +829 -11.338906 -11.338906 -0.183199 -18.615121 0 +830 -10.274801 -10.274801 -0.439601 -18.255771 0 +831 -10.233446 -10.233446 -0.439601 -18.255771 0 +832 -5.802513 -5.802513 0.025827 -18.290956 0 +833 -9.399160 -9.399160 -0.224479 -18.040649 0 +834 -7.458099 -7.458099 0.432187 -18.692143 0 +835 -9.132564 -9.132564 1.156693 -18.424518 0 +836 -9.607594 -9.607594 0.956806 -18.210830 0 +837 -13.156607 -13.156607 1.027440 -18.281463 0 +838 -6.104133 -6.104133 1.027440 -18.281463 0 +839 7.701354 -8.627012 0.490559 -17.744583 1 +840 -5.666991 -5.666991 0.714457 -17.717465 0 +841 -5.010128 -5.010128 0.703727 -17.531416 0 +842 -9.129978 -9.129978 1.620508 -16.696275 0 +843 -8.627012 -8.627012 1.196916 -16.272683 0 +844 -6.093441 -6.093441 0.790409 -15.706607 0 +845 -8.501504 -8.501504 0.790409 -15.706607 0 +846 -6.955774 -6.955774 1.739069 -16.398702 0 +847 -7.537883 -7.537883 1.739069 -16.398702 0 +848 -6.353031 -6.353031 1.622828 -16.282462 0 +849 -8.413845 -8.413845 0.849326 -15.508959 0 +850 -9.921840 -9.921840 -0.200358 -14.459276 0 +851 -9.254802 -9.254802 0.215441 -14.904275 0 +852 -7.187916 -7.187916 -1.077569 -13.998198 0 +853 -6.804699 -6.804699 -1.077569 -13.998198 0 +854 -3.821995 -3.821995 -1.484674 -13.591093 0 +855 -8.941027 -8.941027 -1.433411 -13.255424 0 +856 -7.329817 -7.329817 -1.756458 -12.932376 0 +857 -5.660773 -5.660773 -1.707594 -13.305267 0 +858 -5.748305 -5.748305 -1.390320 -13.298514 0 +859 -7.344417 -7.344417 -1.433411 -13.255424 0 +860 -7.963998 -7.963998 -0.294135 -14.374185 0 +861 -7.707752 -7.707752 0.353113 -15.021433 0 +862 -9.081348 -9.081348 0.849326 -15.508959 0 +863 -9.853057 -9.853057 0.847627 -15.507261 0 +864 -7.859553 -7.859553 0.447082 -14.822913 0 +865 -6.093459 -6.093459 1.131720 -15.223168 0 +866 -6.882726 -6.882726 1.962823 -16.622456 0 +867 -7.045724 -7.045724 0.486540 -15.146173 0 +868 -7.506431 -7.506431 0.797015 -14.888462 0 +869 -10.560757 -10.560757 1.131720 -15.223168 0 +870 -4.134631 -4.134631 2.006073 -16.097520 0 +871 -7.334160 -7.334160 1.717637 -16.385957 0 +872 -2.543407 -2.543407 2.696338 -16.787786 0 +873 -5.551132 -5.551132 3.359296 -17.413601 0 +874 -5.557472 -5.557472 3.359296 -17.413601 0 +875 -9.597129 -9.597129 2.679465 -16.444917 0 +876 -6.234376 -6.234376 2.265183 -16.030635 0 +877 -5.719000 -5.719000 3.327815 -15.796567 0 +878 -10.253305 -10.253305 3.500156 -15.968909 0 +879 -7.027153 -7.027153 4.107391 -16.576143 0 +880 -3.277825 -3.277825 4.002682 -16.471434 0 +881 -8.024966 -8.024966 3.074034 -15.542787 0 +882 -4.088218 -4.088218 2.181800 -14.524466 0 +883 -9.886444 -9.886444 1.833792 -14.176458 0 +884 -5.465992 -5.465992 1.679668 -14.022334 0 +885 -4.626248 -4.626248 0.993107 -13.335774 0 +886 -8.139784 -8.139784 0.966924 -13.309590 0 +887 -6.171333 -6.171333 1.446066 -13.788732 0 +888 -7.487844 -7.487844 1.144210 -13.486877 0 +889 -4.201900 -4.201900 2.112739 -14.455406 0 +890 -4.935970 -4.935970 2.181800 -14.524466 0 +891 -8.051641 -8.051641 2.776652 -14.008275 0 +892 -6.283575 -6.283575 2.717340 -13.948963 0 +893 -6.577917 -6.577917 2.001588 -13.233210 0 +894 -5.582490 -5.582490 2.034909 -13.199889 0 +895 -4.613300 -4.613300 2.531026 -13.696006 0 +896 -6.489681 -6.489681 2.132861 -13.297842 0 +897 -5.615811 -5.615811 2.315248 -13.546871 0 +898 -5.383020 -5.383020 2.099540 -13.331163 0 +899 -3.559161 -3.559161 2.488447 -13.653427 0 +900 -7.797923 -7.797923 2.687918 -13.453957 0 +901 -9.805537 -9.805537 1.992106 -12.758146 0 +902 -4.040180 -4.040180 2.132861 -13.297842 0 +903 -0.019255 -0.019255 2.837078 -14.002058 0 +904 -5.857598 -5.857598 2.744540 -13.510579 0 +905 -4.796007 -4.796007 3.025108 -13.512337 0 +906 -3.665905 -3.665905 3.873442 -13.465457 0 +907 -2.701801 -2.701801 4.681279 -13.907879 0 +908 -6.459681 -6.459681 4.913691 -14.007474 0 +909 -6.111748 -6.111748 4.560972 -13.465441 0 +910 -4.546891 -4.546891 4.369087 -13.273556 0 +911 -0.992039 -0.992039 4.369087 -13.273556 0 +912 -5.243615 -5.243615 4.913691 -14.007474 0 +913 -5.849748 -5.849748 3.872676 -12.966459 0 +914 -8.657230 -8.657230 3.340663 -12.245132 0 +915 0.013710 0.013710 3.767670 -12.672139 0 +916 -4.272747 -4.272747 4.193908 -13.098377 0 +917 -3.859143 -3.859143 4.739573 -13.285066 0 +918 -0.285185 -0.285185 5.746194 -13.631048 0 +919 -0.368422 -0.368422 5.311762 -13.857256 0 +920 -4.452234 -4.452234 4.739573 -13.285066 0 +921 -3.942427 -3.942427 4.414149 -12.505867 0 +922 -5.078934 -5.078934 4.477141 -12.361995 0 +923 -5.528790 -5.528790 4.789178 -12.507464 0 +924 -6.955623 -6.955623 4.449488 -12.278772 0 +925 -5.044986 -5.044986 4.415567 -12.133853 0 +926 -3.839739 -3.839739 4.045286 -11.724764 0 +927 -2.714237 -2.714237 3.700820 -11.380299 0 +928 -2.209695 -2.209695 2.625013 -10.304491 0 +929 -2.679171 -2.679171 3.348472 -11.027951 0 +930 -1.227082 -1.227082 3.700820 -11.380299 0 +931 -4.513613 -4.513613 2.819757 -10.499235 0 +932 -3.503033 -3.503033 1.724761 -9.404239 0 +933 -4.045859 -4.045859 1.880733 -9.560211 0 +934 -1.208698 -1.208698 2.373978 -9.422515 0 +935 -3.343872 -3.343872 2.473880 -9.522417 0 +936 -3.914642 -3.914642 2.388507 -9.407986 0 +937 -2.926197 -2.926197 1.949169 -8.968648 0 +938 -2.127830 -2.127830 1.767915 -8.773980 0 +939 -5.020633 -5.020633 2.025069 -8.712812 0 +940 -3.509739 -3.509739 2.257104 -8.944848 0 +941 -5.458266 -5.458266 2.448082 -9.135825 0 +942 -4.941477 -4.941477 2.432743 -9.120486 0 +943 -3.524269 -3.524269 2.115037 -8.802781 0 +944 -2.819701 -2.819701 2.483792 -8.367135 0 +945 -4.930667 -4.930667 2.191604 -8.043997 0 +946 -1.568355 -1.568355 2.298100 -7.937501 0 +947 -4.789208 -4.789208 2.115106 -7.967499 0 +948 -2.455575 -2.455575 2.208019 -8.060412 0 +949 -4.368546 -4.368546 2.039036 -7.891430 0 +950 -2.732531 -2.732531 2.605763 -8.245165 0 +951 -2.084439 -2.084439 2.648658 -8.532001 0 +952 -1.534714 -1.534714 3.334589 -8.973990 0 +953 -1.219135 -1.219135 3.078546 -8.717948 0 +954 -2.941671 -2.941671 2.692933 -8.157995 0 +955 -2.328370 -2.328370 2.857798 -8.322861 0 +956 -2.686642 -2.686642 2.697365 -8.070648 0 +957 -2.602175 -2.602175 2.682271 -8.055554 0 +958 -1.349286 -1.349286 2.928461 -8.132812 0 +959 -3.443697 -3.443697 2.917203 -8.121554 0 +960 -3.791500 -3.791500 2.585727 -7.496878 0 +961 -2.989025 -2.989025 3.161788 -7.818528 0 +962 -1.357979 -1.357979 2.699634 -7.356374 0 +963 -4.459286 -4.459286 3.161788 -7.818528 0 +964 1.278043 1.278043 3.631898 -8.288637 0 +965 -3.261486 -3.261486 4.073094 -8.729833 0 +966 -2.255023 -2.255023 4.073094 -8.729833 0 +967 -5.573807 -5.573807 4.740080 -9.250126 0 +968 -2.125162 -2.125162 5.648860 -9.899183 0 +969 -2.725776 -2.725776 6.488144 -10.515743 0 +970 -0.181174 -0.181174 6.602848 -10.630446 0 +971 -1.630094 -1.630094 7.157691 -11.185290 0 +972 -2.013799 -2.013799 7.542343 -10.802530 0 +973 -1.289570 -1.289570 7.648779 -10.908966 0 +974 -2.762209 -2.762209 7.648779 -10.908966 0 +975 -4.026165 -4.026165 7.265073 -11.292672 0 +976 2.373612 2.373612 6.795451 -10.055638 0 +977 2.287711 2.287711 6.463232 -9.723419 0 +978 -0.742487 -0.742487 6.649116 -9.402798 0 +979 -0.735738 -0.735738 7.361328 -9.940469 0 +980 1.444976 1.444976 6.954431 -8.886205 0 +981 0.499573 0.499573 6.948494 -8.880268 0 +982 -3.549683 -3.549683 7.115226 -8.600199 0 +983 0.231040 0.231040 7.173007 -8.657980 0 +984 -0.434319 -0.434319 7.290218 -8.761695 0 +985 -3.857747 -3.857747 7.481174 -8.349812 0 +986 -2.283152 -2.283152 7.591638 -8.460276 0 +987 -2.322953 -2.322953 7.814671 -8.683308 0 +988 -1.376841 -1.376841 7.469332 -7.910807 0 +989 -0.007156 -0.007156 7.443955 -8.312592 0 +990 -0.965887 -0.965887 6.579616 -7.749673 0 +991 0.978217 0.978217 7.305529 -8.174167 0 +992 0.303988 0.303988 6.837712 -7.279187 0 +993 -1.384319 -1.384319 7.030861 -7.899499 0 +994 0.511217 0.511217 6.524228 -7.924435 0 +995 0.995050 0.995050 6.974820 -7.843458 0 +996 1.217818 1.217818 6.174443 -7.574649 0 +997 0.453970 0.453970 6.698121 -8.629895 0 +998 -2.531342 -2.531342 6.110080 -7.083124 0 +999 -4.902825 -4.902825 6.110777 -6.125089 0 diff --git a/gsl-2.5/doc/examples/integration b/gsl-2.5/doc/examples/integration new file mode 100755 index 00000000..de30af2f --- /dev/null +++ b/gsl-2.5/doc/examples/integration @@ -0,0 +1,228 @@ +#! /bin/sh + +# integration - temporary wrapper script for .libs/integration +# Generated by libtool (GNU libtool) 2.4.2 +# +# The integration program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s/\([`"$\\]\)/\\\1/g' + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command="(cd /home/groups/kipac/chto/package/gsl/gsl-2.5/doc/examples; LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LIBRARY_PATH; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; LD_LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/fftw/include:/home/users/chto/lib/fftw/lib:/home/users/chto/lib/healpix/lib:/home/users/chto/lib/namaster/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/include:/home/users/chto/cpp/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LD_LIBRARY_PATH; PATH=/share/software/user/open/curl/7.54.0/bin:/share/software/user/open/libressl/2.5.3/bin:/home/users/chto/lib/cfitsio:/home/users/chto/lib/cfitsio/include:/home/users/chto/lib:/home/users/chto/bin/bin:/home/users/chto/bin:/home/users/chto/.texlive/bin/x86_64-linux:/home/groups/kipac/chto/anaconda2/envs/newenv3/bin:/home/users/chto/.local/bin/include:/home/users/chto/.local/bin/lib:/home/users/chto/.local/bin:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/bin64:/share/software/user/open/fftw/3.3.6/bin:/home/groups/kipac/chto/anaconda2/condabin:/share/software/user/restricted/ifort/2019/bin:/share/software/user/open/gsl/2.3/bin:/share/software/user/srcc/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/dell/srvadmin/bin:/opt/dell/srvadmin/iSM/bin:/home/users/chto/bin; export PATH; gcc -g -O2 -o \$progdir/\$file integration.o ../../.libs/libgsl.so ../../cblas/.libs/libgslcblas.so -lm -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/.libs -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/cblas/.libs -Wl,-rpath -Wl,/usr/local/lib)" + +# This environment variable determines our operation mode. +if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then + # install mode needs the following variables: + generated_by_libtool_version='2.4.2' + notinst_deplibs=' ../../libgsl.la ../../cblas/libgslcblas.la' +else + # When we are sourced in execute mode, $file and $ECHO are already set. + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + file="$0" + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + ECHO="printf %s\\n" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ which is used only on +# windows platforms, and (c) all begin with the string --lt- +# (application programs are unlikely to have options which match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's ../../libtool value, followed by no. +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=$0 + shift + for lt_opt + do + case "$lt_opt" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%/[^/]*$%%'` + test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=. + lt_dump_F=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%^.*/%%'` + cat "$lt_dump_D/$lt_dump_F" + exit 0 + ;; + --lt-*) + $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n "$lt_option_debug"; then + echo "integration:integration:${LINENO}: libtool wrapper (GNU libtool) 2.4.2" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + $ECHO "integration:integration:${LINENO}: newargv[$lt_dump_args_N]: $lt_arg" + lt_dump_args_N=`expr $lt_dump_args_N + 1` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ + + if test -n "$lt_option_debug"; then + $ECHO "integration:integration:${LINENO}: newargv[0]: $progdir/$program" 1>&2 + func_lt_dump_args ${1+"$@"} 1>&2 + fi + exec "$progdir/$program" ${1+"$@"} + + $ECHO "$0: cannot exec $program $*" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from $@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case " $* " in + *\ --lt-*) + for lt_wr_arg + do + case $lt_wr_arg in + --lt-*) ;; + *) set x "$@" "$lt_wr_arg"; shift;; + esac + shift + done ;; + esac + func_exec_program_core ${1+"$@"} +} + + # Parse options + func_parse_lt_options "$0" ${1+"$@"} + + # Find the directory that this script lives in. + thisdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + test "x$thisdir" = "x$file" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=`ls -ld "$file" | /usr/bin/sed -n 's/.*-> //p'` + while test -n "$file"; do + destdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + + # If there was a directory component, then change thisdir. + if test "x$destdir" != "x$file"; then + case "$destdir" in + [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;; + *) thisdir="$thisdir/$destdir" ;; + esac + fi + + file=`$ECHO "$file" | /usr/bin/sed 's%^.*/%%'` + file=`ls -ld "$thisdir/$file" | /usr/bin/sed -n 's/.*-> //p'` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no + if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then + # special case for '.' + if test "$thisdir" = "."; then + thisdir=`pwd` + fi + # remove .libs from thisdir + case "$thisdir" in + *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /usr/bin/sed 's%[\\/][^\\/]*$%%'` ;; + .libs ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=`cd "$thisdir" && pwd` + test -n "$absdir" && thisdir="$absdir" + + program=lt-'integration' + progdir="$thisdir/.libs" + + if test ! -f "$progdir/$program" || + { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /usr/bin/sed 1q`; \ + test "X$file" != "X$progdir/$program"; }; then + + file="$$-$program" + + if test ! -d "$progdir"; then + mkdir "$progdir" + else + rm -f "$progdir/$file" + fi + + # relink executable if necessary + if test -n "$relink_command"; then + if relink_command_output=`eval $relink_command 2>&1`; then : + else + printf %s\n "$relink_command_output" >&2 + rm -f "$progdir/$file" + exit 1 + fi + fi + + mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null || + { rm -f "$progdir/$program"; + mv -f "$progdir/$file" "$progdir/$program"; } + rm -f "$progdir/$file" + fi + + if test -f "$progdir/$program"; then + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + # Run the actual program with our arguments. + func_exec_program ${1+"$@"} + fi + else + # The program doesn't exist. + $ECHO "$0: error: \`$progdir/$program' does not exist" 1>&2 + $ECHO "This script is just a wrapper for $program." 1>&2 + $ECHO "See the libtool documentation for more information." 1>&2 + exit 1 + fi +fi diff --git a/gsl-2.5/doc/examples/integration.c b/gsl-2.5/doc/examples/integration.c new file mode 100644 index 00000000..79dd1c39 --- /dev/null +++ b/gsl-2.5/doc/examples/integration.c @@ -0,0 +1,37 @@ +#include +#include +#include + +double f (double x, void * params) { + double alpha = *(double *) params; + double f = log(alpha*x) / sqrt(x); + return f; +} + +int +main (void) +{ + gsl_integration_workspace * w + = gsl_integration_workspace_alloc (1000); + + double result, error; + double expected = -4.0; + double alpha = 1.0; + + gsl_function F; + F.function = &f; + F.params = α + + gsl_integration_qags (&F, 0, 1, 0, 1e-7, 1000, + w, &result, &error); + + printf ("result = % .18f\n", result); + printf ("exact result = % .18f\n", expected); + printf ("estimated error = % .18f\n", error); + printf ("actual error = % .18f\n", result - expected); + printf ("intervals = %zu\n", w->size); + + gsl_integration_workspace_free (w); + + return 0; +} diff --git a/gsl-2.5/doc/examples/integration.txt b/gsl-2.5/doc/examples/integration.txt new file mode 100644 index 00000000..61369fb6 --- /dev/null +++ b/gsl-2.5/doc/examples/integration.txt @@ -0,0 +1,5 @@ +result = -4.000000000000085265 +exact result = -4.000000000000000000 +estimated error = 0.000000000000135447 +actual error = -0.000000000000085265 +intervals = 8 diff --git a/gsl-2.5/doc/examples/integration2 b/gsl-2.5/doc/examples/integration2 new file mode 100755 index 00000000..d3ac5575 --- /dev/null +++ b/gsl-2.5/doc/examples/integration2 @@ -0,0 +1,228 @@ +#! /bin/sh + +# integration2 - temporary wrapper script for .libs/integration2 +# Generated by libtool (GNU libtool) 2.4.2 +# +# The integration2 program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s/\([`"$\\]\)/\\\1/g' + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command="(cd /home/groups/kipac/chto/package/gsl/gsl-2.5/doc/examples; LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LIBRARY_PATH; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; LD_LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/fftw/include:/home/users/chto/lib/fftw/lib:/home/users/chto/lib/healpix/lib:/home/users/chto/lib/namaster/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/include:/home/users/chto/cpp/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LD_LIBRARY_PATH; PATH=/share/software/user/open/curl/7.54.0/bin:/share/software/user/open/libressl/2.5.3/bin:/home/users/chto/lib/cfitsio:/home/users/chto/lib/cfitsio/include:/home/users/chto/lib:/home/users/chto/bin/bin:/home/users/chto/bin:/home/users/chto/.texlive/bin/x86_64-linux:/home/groups/kipac/chto/anaconda2/envs/newenv3/bin:/home/users/chto/.local/bin/include:/home/users/chto/.local/bin/lib:/home/users/chto/.local/bin:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/bin64:/share/software/user/open/fftw/3.3.6/bin:/home/groups/kipac/chto/anaconda2/condabin:/share/software/user/restricted/ifort/2019/bin:/share/software/user/open/gsl/2.3/bin:/share/software/user/srcc/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/dell/srvadmin/bin:/opt/dell/srvadmin/iSM/bin:/home/users/chto/bin; export PATH; gcc -g -O2 -o \$progdir/\$file integration2.o ../../.libs/libgsl.so ../../cblas/.libs/libgslcblas.so -lm -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/.libs -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/cblas/.libs -Wl,-rpath -Wl,/usr/local/lib)" + +# This environment variable determines our operation mode. +if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then + # install mode needs the following variables: + generated_by_libtool_version='2.4.2' + notinst_deplibs=' ../../libgsl.la ../../cblas/libgslcblas.la' +else + # When we are sourced in execute mode, $file and $ECHO are already set. + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + file="$0" + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + ECHO="printf %s\\n" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ which is used only on +# windows platforms, and (c) all begin with the string --lt- +# (application programs are unlikely to have options which match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's ../../libtool value, followed by no. +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=$0 + shift + for lt_opt + do + case "$lt_opt" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%/[^/]*$%%'` + test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=. + lt_dump_F=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%^.*/%%'` + cat "$lt_dump_D/$lt_dump_F" + exit 0 + ;; + --lt-*) + $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n "$lt_option_debug"; then + echo "integration2:integration2:${LINENO}: libtool wrapper (GNU libtool) 2.4.2" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + $ECHO "integration2:integration2:${LINENO}: newargv[$lt_dump_args_N]: $lt_arg" + lt_dump_args_N=`expr $lt_dump_args_N + 1` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ + + if test -n "$lt_option_debug"; then + $ECHO "integration2:integration2:${LINENO}: newargv[0]: $progdir/$program" 1>&2 + func_lt_dump_args ${1+"$@"} 1>&2 + fi + exec "$progdir/$program" ${1+"$@"} + + $ECHO "$0: cannot exec $program $*" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from $@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case " $* " in + *\ --lt-*) + for lt_wr_arg + do + case $lt_wr_arg in + --lt-*) ;; + *) set x "$@" "$lt_wr_arg"; shift;; + esac + shift + done ;; + esac + func_exec_program_core ${1+"$@"} +} + + # Parse options + func_parse_lt_options "$0" ${1+"$@"} + + # Find the directory that this script lives in. + thisdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + test "x$thisdir" = "x$file" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=`ls -ld "$file" | /usr/bin/sed -n 's/.*-> //p'` + while test -n "$file"; do + destdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + + # If there was a directory component, then change thisdir. + if test "x$destdir" != "x$file"; then + case "$destdir" in + [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;; + *) thisdir="$thisdir/$destdir" ;; + esac + fi + + file=`$ECHO "$file" | /usr/bin/sed 's%^.*/%%'` + file=`ls -ld "$thisdir/$file" | /usr/bin/sed -n 's/.*-> //p'` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no + if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then + # special case for '.' + if test "$thisdir" = "."; then + thisdir=`pwd` + fi + # remove .libs from thisdir + case "$thisdir" in + *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /usr/bin/sed 's%[\\/][^\\/]*$%%'` ;; + .libs ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=`cd "$thisdir" && pwd` + test -n "$absdir" && thisdir="$absdir" + + program=lt-'integration2' + progdir="$thisdir/.libs" + + if test ! -f "$progdir/$program" || + { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /usr/bin/sed 1q`; \ + test "X$file" != "X$progdir/$program"; }; then + + file="$$-$program" + + if test ! -d "$progdir"; then + mkdir "$progdir" + else + rm -f "$progdir/$file" + fi + + # relink executable if necessary + if test -n "$relink_command"; then + if relink_command_output=`eval $relink_command 2>&1`; then : + else + printf %s\n "$relink_command_output" >&2 + rm -f "$progdir/$file" + exit 1 + fi + fi + + mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null || + { rm -f "$progdir/$program"; + mv -f "$progdir/$file" "$progdir/$program"; } + rm -f "$progdir/$file" + fi + + if test -f "$progdir/$program"; then + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + # Run the actual program with our arguments. + func_exec_program ${1+"$@"} + fi + else + # The program doesn't exist. + $ECHO "$0: error: \`$progdir/$program' does not exist" 1>&2 + $ECHO "This script is just a wrapper for $program." 1>&2 + $ECHO "See the libtool documentation for more information." 1>&2 + exit 1 + fi +fi diff --git a/gsl-2.5/doc/examples/integration2.c b/gsl-2.5/doc/examples/integration2.c new file mode 100644 index 00000000..7638a5b8 --- /dev/null +++ b/gsl-2.5/doc/examples/integration2.c @@ -0,0 +1,51 @@ +#include +#include +#include +#include + +double +f(double x, void * params) +{ + int m = *(int *) params; + double f = gsl_pow_int(x, m) + 1.0; + return f; +} + +int +main (int argc, char *argv[]) +{ + gsl_integration_fixed_workspace * w; + const gsl_integration_fixed_type * T = gsl_integration_fixed_hermite; + int m = 10; + int n = 6; + double expected, result; + gsl_function F; + + if (argc > 1) + m = atoi(argv[1]); + + if (argc > 2) + n = atoi(argv[2]); + + w = gsl_integration_fixed_alloc(T, n, 0.0, 1.0, 0.0, 0.0); + + F.function = &f; + F.params = &m; + + gsl_integration_fixed(&F, &result, w); + + if (m % 2 == 0) + expected = M_SQRTPI + gsl_sf_gamma(0.5*(1.0 + m)); + else + expected = M_SQRTPI; + + printf ("m = %d\n", m); + printf ("intervals = %zu\n", gsl_integration_fixed_n(w)); + printf ("result = % .18f\n", result); + printf ("exact result = % .18f\n", expected); + printf ("actual error = % .18f\n", result - expected); + + gsl_integration_fixed_free (w); + + return 0; +} diff --git a/gsl-2.5/doc/examples/integration2a.txt b/gsl-2.5/doc/examples/integration2a.txt new file mode 100644 index 00000000..7a81db82 --- /dev/null +++ b/gsl-2.5/doc/examples/integration2a.txt @@ -0,0 +1,5 @@ +m = 10 +intervals = 5 +result = 47.468529694563351029 +exact result = 54.115231635459025483 +actual error = -6.646701940895674454 diff --git a/gsl-2.5/doc/examples/integration2b.txt b/gsl-2.5/doc/examples/integration2b.txt new file mode 100644 index 00000000..3bc36a2c --- /dev/null +++ b/gsl-2.5/doc/examples/integration2b.txt @@ -0,0 +1,5 @@ +m = 10 +intervals = 6 +result = 54.115231635459096537 +exact result = 54.115231635459025483 +actual error = 0.000000000000071054 diff --git a/gsl-2.5/doc/examples/interp b/gsl-2.5/doc/examples/interp new file mode 100755 index 00000000..be2b78c9 --- /dev/null +++ b/gsl-2.5/doc/examples/interp @@ -0,0 +1,228 @@ +#! /bin/sh + +# interp - temporary wrapper script for .libs/interp +# Generated by libtool (GNU libtool) 2.4.2 +# +# The interp program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s/\([`"$\\]\)/\\\1/g' + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command="(cd /home/groups/kipac/chto/package/gsl/gsl-2.5/doc/examples; LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LIBRARY_PATH; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; LD_LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/fftw/include:/home/users/chto/lib/fftw/lib:/home/users/chto/lib/healpix/lib:/home/users/chto/lib/namaster/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/include:/home/users/chto/cpp/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LD_LIBRARY_PATH; PATH=/share/software/user/open/curl/7.54.0/bin:/share/software/user/open/libressl/2.5.3/bin:/home/users/chto/lib/cfitsio:/home/users/chto/lib/cfitsio/include:/home/users/chto/lib:/home/users/chto/bin/bin:/home/users/chto/bin:/home/users/chto/.texlive/bin/x86_64-linux:/home/groups/kipac/chto/anaconda2/envs/newenv3/bin:/home/users/chto/.local/bin/include:/home/users/chto/.local/bin/lib:/home/users/chto/.local/bin:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/bin64:/share/software/user/open/fftw/3.3.6/bin:/home/groups/kipac/chto/anaconda2/condabin:/share/software/user/restricted/ifort/2019/bin:/share/software/user/open/gsl/2.3/bin:/share/software/user/srcc/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/dell/srvadmin/bin:/opt/dell/srvadmin/iSM/bin:/home/users/chto/bin; export PATH; gcc -g -O2 -o \$progdir/\$file interp.o ../../.libs/libgsl.so ../../cblas/.libs/libgslcblas.so -lm -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/.libs -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/cblas/.libs -Wl,-rpath -Wl,/usr/local/lib)" + +# This environment variable determines our operation mode. +if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then + # install mode needs the following variables: + generated_by_libtool_version='2.4.2' + notinst_deplibs=' ../../libgsl.la ../../cblas/libgslcblas.la' +else + # When we are sourced in execute mode, $file and $ECHO are already set. + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + file="$0" + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + ECHO="printf %s\\n" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ which is used only on +# windows platforms, and (c) all begin with the string --lt- +# (application programs are unlikely to have options which match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's ../../libtool value, followed by no. +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=$0 + shift + for lt_opt + do + case "$lt_opt" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%/[^/]*$%%'` + test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=. + lt_dump_F=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%^.*/%%'` + cat "$lt_dump_D/$lt_dump_F" + exit 0 + ;; + --lt-*) + $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n "$lt_option_debug"; then + echo "interp:interp:${LINENO}: libtool wrapper (GNU libtool) 2.4.2" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + $ECHO "interp:interp:${LINENO}: newargv[$lt_dump_args_N]: $lt_arg" + lt_dump_args_N=`expr $lt_dump_args_N + 1` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ + + if test -n "$lt_option_debug"; then + $ECHO "interp:interp:${LINENO}: newargv[0]: $progdir/$program" 1>&2 + func_lt_dump_args ${1+"$@"} 1>&2 + fi + exec "$progdir/$program" ${1+"$@"} + + $ECHO "$0: cannot exec $program $*" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from $@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case " $* " in + *\ --lt-*) + for lt_wr_arg + do + case $lt_wr_arg in + --lt-*) ;; + *) set x "$@" "$lt_wr_arg"; shift;; + esac + shift + done ;; + esac + func_exec_program_core ${1+"$@"} +} + + # Parse options + func_parse_lt_options "$0" ${1+"$@"} + + # Find the directory that this script lives in. + thisdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + test "x$thisdir" = "x$file" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=`ls -ld "$file" | /usr/bin/sed -n 's/.*-> //p'` + while test -n "$file"; do + destdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + + # If there was a directory component, then change thisdir. + if test "x$destdir" != "x$file"; then + case "$destdir" in + [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;; + *) thisdir="$thisdir/$destdir" ;; + esac + fi + + file=`$ECHO "$file" | /usr/bin/sed 's%^.*/%%'` + file=`ls -ld "$thisdir/$file" | /usr/bin/sed -n 's/.*-> //p'` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no + if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then + # special case for '.' + if test "$thisdir" = "."; then + thisdir=`pwd` + fi + # remove .libs from thisdir + case "$thisdir" in + *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /usr/bin/sed 's%[\\/][^\\/]*$%%'` ;; + .libs ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=`cd "$thisdir" && pwd` + test -n "$absdir" && thisdir="$absdir" + + program=lt-'interp' + progdir="$thisdir/.libs" + + if test ! -f "$progdir/$program" || + { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /usr/bin/sed 1q`; \ + test "X$file" != "X$progdir/$program"; }; then + + file="$$-$program" + + if test ! -d "$progdir"; then + mkdir "$progdir" + else + rm -f "$progdir/$file" + fi + + # relink executable if necessary + if test -n "$relink_command"; then + if relink_command_output=`eval $relink_command 2>&1`; then : + else + printf %s\n "$relink_command_output" >&2 + rm -f "$progdir/$file" + exit 1 + fi + fi + + mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null || + { rm -f "$progdir/$program"; + mv -f "$progdir/$file" "$progdir/$program"; } + rm -f "$progdir/$file" + fi + + if test -f "$progdir/$program"; then + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + # Run the actual program with our arguments. + func_exec_program ${1+"$@"} + fi + else + # The program doesn't exist. + $ECHO "$0: error: \`$progdir/$program' does not exist" 1>&2 + $ECHO "This script is just a wrapper for $program." 1>&2 + $ECHO "See the libtool documentation for more information." 1>&2 + exit 1 + fi +fi diff --git a/gsl-2.5/doc/examples/interp.c b/gsl-2.5/doc/examples/interp.c new file mode 100644 index 00000000..b7d6aabb --- /dev/null +++ b/gsl-2.5/doc/examples/interp.c @@ -0,0 +1,41 @@ +#include +#include +#include +#include +#include + +int +main (void) +{ + int i; + double xi, yi, x[10], y[10]; + + printf ("#m=0,S=17\n"); + + for (i = 0; i < 10; i++) + { + x[i] = i + 0.5 * sin (i); + y[i] = i + cos (i * i); + printf ("%g %g\n", x[i], y[i]); + } + + printf ("#m=1,S=0\n"); + + { + gsl_interp_accel *acc + = gsl_interp_accel_alloc (); + gsl_spline *spline + = gsl_spline_alloc (gsl_interp_cspline, 10); + + gsl_spline_init (spline, x, y, 10); + + for (xi = x[0]; xi < x[9]; xi += 0.01) + { + yi = gsl_spline_eval (spline, xi, acc); + printf ("%g %g\n", xi, yi); + } + gsl_spline_free (spline); + gsl_interp_accel_free (acc); + } + return 0; +} diff --git a/gsl-2.5/doc/examples/interp.txt b/gsl-2.5/doc/examples/interp.txt new file mode 100644 index 00000000..1add107f --- /dev/null +++ b/gsl-2.5/doc/examples/interp.txt @@ -0,0 +1,933 @@ +#m=0,S=17 +0 1 +1.42074 1.5403 +2.45465 1.34636 +3.07056 2.08887 +3.6216 3.04234 +4.52054 5.9912 +5.86029 5.87204 +7.32849 7.30059 +8.49468 8.39186 +9.20606 9.77669 +#m=1,S=0 +0 1 +0.01 1.00699 +0.02 1.01397 +0.03 1.02096 +0.04 1.02794 +0.05 1.03492 +0.06 1.04189 +0.07 1.04886 +0.08 1.05582 +0.09 1.06278 +0.1 1.06972 +0.11 1.07666 +0.12 1.08358 +0.13 1.0905 +0.14 1.0974 +0.15 1.10429 +0.16 1.11116 +0.17 1.11802 +0.18 1.12487 +0.19 1.13169 +0.2 1.1385 +0.21 1.14529 +0.22 1.15206 +0.23 1.15881 +0.24 1.16553 +0.25 1.17224 +0.26 1.17892 +0.27 1.18557 +0.28 1.1922 +0.29 1.19881 +0.3 1.20538 +0.31 1.21193 +0.32 1.21845 +0.33 1.22494 +0.34 1.23139 +0.35 1.23782 +0.36 1.24421 +0.37 1.25057 +0.38 1.25689 +0.39 1.26317 +0.4 1.26942 +0.41 1.27564 +0.42 1.28181 +0.43 1.28794 +0.44 1.29403 +0.45 1.30008 +0.46 1.30609 +0.47 1.31206 +0.48 1.31798 +0.49 1.32385 +0.5 1.32968 +0.51 1.33546 +0.52 1.34119 +0.53 1.34688 +0.54 1.35251 +0.55 1.35809 +0.56 1.36362 +0.57 1.3691 +0.58 1.37452 +0.59 1.37989 +0.6 1.3852 +0.61 1.39046 +0.62 1.39565 +0.63 1.40079 +0.64 1.40587 +0.65 1.41089 +0.66 1.41585 +0.67 1.42074 +0.68 1.42557 +0.69 1.43034 +0.7 1.43504 +0.71 1.43968 +0.72 1.44424 +0.73 1.44874 +0.74 1.45317 +0.75 1.45754 +0.76 1.46182 +0.77 1.46604 +0.78 1.47019 +0.79 1.47426 +0.8 1.47825 +0.81 1.48217 +0.82 1.48602 +0.83 1.48978 +0.84 1.49347 +0.85 1.49708 +0.86 1.50061 +0.87 1.50405 +0.88 1.50742 +0.89 1.5107 +0.9 1.51389 +0.91 1.517 +0.92 1.52003 +0.93 1.52297 +0.94 1.52582 +0.95 1.52858 +0.96 1.53125 +0.97 1.53383 +0.98 1.53631 +0.99 1.53871 +1 1.54101 +1.01 1.54322 +1.02 1.54533 +1.03 1.54734 +1.04 1.54926 +1.05 1.55108 +1.06 1.5528 +1.07 1.55442 +1.08 1.55593 +1.09 1.55735 +1.1 1.55866 +1.11 1.55987 +1.12 1.56097 +1.13 1.56197 +1.14 1.56286 +1.15 1.56364 +1.16 1.56431 +1.17 1.56488 +1.18 1.56533 +1.19 1.56567 +1.2 1.5659 +1.21 1.56601 +1.22 1.56601 +1.23 1.5659 +1.24 1.56566 +1.25 1.56531 +1.26 1.56485 +1.27 1.56426 +1.28 1.56355 +1.29 1.56272 +1.3 1.56177 +1.31 1.5607 +1.32 1.5595 +1.33 1.55818 +1.34 1.55673 +1.35 1.55515 +1.36 1.55345 +1.37 1.55162 +1.38 1.54965 +1.39 1.54756 +1.4 1.54534 +1.41 1.54298 +1.42 1.54049 +1.43 1.53787 +1.44 1.53511 +1.45 1.53223 +1.46 1.52923 +1.47 1.52611 +1.48 1.52287 +1.49 1.51953 +1.5 1.51608 +1.51 1.51254 +1.52 1.50889 +1.53 1.50516 +1.54 1.50133 +1.55 1.49742 +1.56 1.49344 +1.57 1.48938 +1.58 1.48525 +1.59 1.48105 +1.6 1.47679 +1.61 1.47247 +1.62 1.4681 +1.63 1.46368 +1.64 1.45922 +1.65 1.45471 +1.66 1.45017 +1.67 1.4456 +1.68 1.441 +1.69 1.43638 +1.7 1.43173 +1.71 1.42708 +1.72 1.42241 +1.73 1.41774 +1.74 1.41306 +1.75 1.40839 +1.76 1.40372 +1.77 1.39907 +1.78 1.39443 +1.79 1.38981 +1.8 1.38521 +1.81 1.38064 +1.82 1.37611 +1.83 1.37161 +1.84 1.36715 +1.85 1.36274 +1.86 1.35838 +1.87 1.35407 +1.88 1.34982 +1.89 1.34563 +1.9 1.34151 +1.91 1.33746 +1.92 1.33349 +1.93 1.32959 +1.94 1.32578 +1.95 1.32206 +1.96 1.31843 +1.97 1.3149 +1.98 1.31147 +1.99 1.30814 +2 1.30493 +2.01 1.30182 +2.02 1.29884 +2.03 1.29598 +2.04 1.29325 +2.05 1.29064 +2.06 1.28817 +2.07 1.28585 +2.08 1.28366 +2.09 1.28163 +2.1 1.27975 +2.11 1.27802 +2.12 1.27646 +2.13 1.27506 +2.14 1.27383 +2.15 1.27277 +2.16 1.2719 +2.17 1.2712 +2.18 1.2707 +2.19 1.27038 +2.2 1.27026 +2.21 1.27034 +2.22 1.27063 +2.23 1.27112 +2.24 1.27183 +2.25 1.27275 +2.26 1.27389 +2.27 1.27526 +2.28 1.27686 +2.29 1.27869 +2.3 1.28077 +2.31 1.28308 +2.32 1.28564 +2.33 1.28846 +2.34 1.29153 +2.35 1.29486 +2.36 1.29845 +2.37 1.30231 +2.38 1.30644 +2.39 1.31086 +2.4 1.31555 +2.41 1.32053 +2.42 1.3258 +2.43 1.33136 +2.44 1.33722 +2.45 1.34339 +2.46 1.34986 +2.47 1.35663 +2.48 1.36371 +2.49 1.37108 +2.5 1.37874 +2.51 1.38668 +2.52 1.39489 +2.53 1.40337 +2.54 1.41212 +2.55 1.42112 +2.56 1.43037 +2.57 1.43986 +2.58 1.44959 +2.59 1.45955 +2.6 1.46974 +2.61 1.48015 +2.62 1.49077 +2.63 1.50159 +2.64 1.51262 +2.65 1.52384 +2.66 1.53525 +2.67 1.54684 +2.68 1.5586 +2.69 1.57054 +2.7 1.58263 +2.71 1.59489 +2.72 1.60729 +2.73 1.61984 +2.74 1.63253 +2.75 1.64535 +2.76 1.65829 +2.77 1.67136 +2.78 1.68454 +2.79 1.69782 +2.8 1.71121 +2.81 1.72469 +2.82 1.73826 +2.83 1.75191 +2.84 1.76564 +2.85 1.77943 +2.86 1.7933 +2.87 1.80722 +2.88 1.82119 +2.89 1.8352 +2.9 1.84925 +2.91 1.86334 +2.92 1.87745 +2.93 1.89159 +2.94 1.90573 +2.95 1.91989 +2.96 1.93405 +2.97 1.9482 +2.98 1.96234 +2.99 1.97646 +3 1.99057 +3.01 2.00464 +3.02 2.01867 +3.03 2.03267 +3.04 2.04661 +3.05 2.06051 +3.06 2.07434 +3.07 2.0881 +3.08 2.1018 +3.09 2.11543 +3.1 2.12901 +3.11 2.14254 +3.12 2.15605 +3.13 2.16954 +3.14 2.18303 +3.15 2.19651 +3.16 2.21002 +3.17 2.22354 +3.18 2.23711 +3.19 2.25072 +3.2 2.26439 +3.21 2.27813 +3.22 2.29195 +3.23 2.30586 +3.24 2.31988 +3.25 2.33401 +3.26 2.34826 +3.27 2.36266 +3.28 2.37719 +3.29 2.39189 +3.3 2.40676 +3.31 2.42181 +3.32 2.43704 +3.33 2.45249 +3.34 2.46814 +3.35 2.48402 +3.36 2.50014 +3.37 2.5165 +3.38 2.53312 +3.39 2.55001 +3.4 2.56718 +3.41 2.58464 +3.42 2.6024 +3.43 2.62047 +3.44 2.63887 +3.45 2.65761 +3.46 2.67669 +3.47 2.69613 +3.48 2.71593 +3.49 2.73612 +3.5 2.7567 +3.51 2.77768 +3.52 2.79907 +3.53 2.82088 +3.54 2.84313 +3.55 2.86583 +3.56 2.88898 +3.57 2.9126 +3.58 2.9367 +3.59 2.96129 +3.6 2.98638 +3.61 3.01199 +3.62 3.03811 +3.63 3.06477 +3.64 3.09196 +3.65 3.11965 +3.66 3.14785 +3.67 3.17653 +3.68 3.20568 +3.69 3.23529 +3.7 3.26534 +3.71 3.29583 +3.72 3.32674 +3.73 3.35806 +3.74 3.38977 +3.75 3.42185 +3.76 3.45431 +3.77 3.48712 +3.78 3.52026 +3.79 3.55374 +3.8 3.58753 +3.81 3.62162 +3.82 3.656 +3.83 3.69065 +3.84 3.72556 +3.85 3.76072 +3.86 3.79612 +3.87 3.83174 +3.88 3.86756 +3.89 3.90358 +3.9 3.93979 +3.91 3.97616 +3.92 4.01269 +3.93 4.04936 +3.94 4.08616 +3.95 4.12307 +3.96 4.16009 +3.97 4.1972 +3.98 4.23438 +3.99 4.27163 +4 4.30892 +4.01 4.34626 +4.02 4.38361 +4.03 4.42098 +4.04 4.45835 +4.05 4.4957 +4.06 4.53302 +4.07 4.5703 +4.08 4.60752 +4.09 4.64467 +4.1 4.68174 +4.11 4.71872 +4.12 4.75559 +4.13 4.79233 +4.14 4.82895 +4.15 4.86541 +4.16 4.90171 +4.17 4.93784 +4.18 4.97378 +4.19 5.00953 +4.2 5.04505 +4.21 5.08035 +4.22 5.11541 +4.23 5.15022 +4.24 5.18476 +4.25 5.21902 +4.26 5.25299 +4.27 5.28665 +4.28 5.31999 +4.29 5.353 +4.3 5.38566 +4.31 5.41796 +4.32 5.44989 +4.33 5.48144 +4.34 5.51259 +4.35 5.54332 +4.36 5.57364 +4.37 5.60351 +4.38 5.63293 +4.39 5.66189 +4.4 5.69037 +4.41 5.71835 +4.42 5.74584 +4.43 5.77281 +4.44 5.79924 +4.45 5.82514 +4.46 5.85047 +4.47 5.87524 +4.48 5.89942 +4.49 5.92301 +4.5 5.94598 +4.51 5.96834 +4.52 5.99005 +4.53 6.01112 +4.54 6.03155 +4.55 6.05134 +4.56 6.07051 +4.57 6.08905 +4.58 6.10697 +4.59 6.12429 +4.6 6.14101 +4.61 6.15713 +4.62 6.17267 +4.63 6.18763 +4.64 6.20202 +4.65 6.21584 +4.66 6.22911 +4.67 6.24182 +4.68 6.25399 +4.69 6.26562 +4.7 6.27673 +4.71 6.28731 +4.72 6.29738 +4.73 6.30693 +4.74 6.31599 +4.75 6.32456 +4.76 6.33263 +4.77 6.34023 +4.78 6.34736 +4.79 6.35402 +4.8 6.36022 +4.81 6.36597 +4.82 6.37128 +4.83 6.37615 +4.84 6.38059 +4.85 6.38461 +4.86 6.38821 +4.87 6.3914 +4.88 6.39419 +4.89 6.39659 +4.9 6.3986 +4.91 6.40024 +4.92 6.40149 +4.93 6.40239 +4.94 6.40292 +4.95 6.4031 +4.96 6.40294 +4.97 6.40244 +4.98 6.40162 +4.99 6.40046 +5 6.399 +5.01 6.39722 +5.02 6.39514 +5.03 6.39277 +5.04 6.39011 +5.05 6.38717 +5.06 6.38396 +5.07 6.38048 +5.08 6.37674 +5.09 6.37275 +5.1 6.36852 +5.11 6.36404 +5.12 6.35934 +5.13 6.35441 +5.14 6.34927 +5.15 6.34392 +5.16 6.33837 +5.17 6.33262 +5.18 6.32668 +5.19 6.32057 +5.2 6.31428 +5.21 6.30782 +5.22 6.3012 +5.23 6.29444 +5.24 6.28752 +5.25 6.28047 +5.26 6.27329 +5.27 6.26598 +5.28 6.25856 +5.29 6.25103 +5.3 6.2434 +5.31 6.23567 +5.32 6.22785 +5.33 6.21995 +5.34 6.21198 +5.35 6.20394 +5.36 6.19584 +5.37 6.18769 +5.38 6.17949 +5.39 6.17126 +5.4 6.16299 +5.41 6.1547 +5.42 6.14639 +5.43 6.13807 +5.44 6.12975 +5.45 6.12144 +5.46 6.11313 +5.47 6.10485 +5.48 6.09659 +5.49 6.08836 +5.5 6.08017 +5.51 6.07203 +5.52 6.06395 +5.53 6.05592 +5.54 6.04797 +5.55 6.04009 +5.56 6.03229 +5.57 6.02458 +5.58 6.01697 +5.59 6.00946 +5.6 6.00207 +5.61 5.99479 +5.62 5.98764 +5.63 5.98062 +5.64 5.97374 +5.65 5.967 +5.66 5.96042 +5.67 5.954 +5.68 5.94775 +5.69 5.94168 +5.7 5.93578 +5.71 5.93008 +5.72 5.92457 +5.73 5.91927 +5.74 5.91418 +5.75 5.9093 +5.76 5.90465 +5.77 5.90023 +5.78 5.89605 +5.79 5.89212 +5.8 5.88844 +5.81 5.88502 +5.82 5.88187 +5.83 5.879 +5.84 5.8764 +5.85 5.8741 +5.86 5.87209 +5.87 5.87038 +5.88 5.86898 +5.89 5.86787 +5.9 5.86705 +5.91 5.86653 +5.92 5.8663 +5.93 5.86635 +5.94 5.86668 +5.95 5.8673 +5.96 5.86819 +5.97 5.86935 +5.98 5.87079 +5.99 5.87249 +6 5.87446 +6.01 5.87669 +6.02 5.87918 +6.03 5.88193 +6.04 5.88492 +6.05 5.88817 +6.06 5.89167 +6.07 5.89541 +6.08 5.89939 +6.09 5.9036 +6.1 5.90806 +6.11 5.91274 +6.12 5.91766 +6.13 5.9228 +6.14 5.92816 +6.15 5.93374 +6.16 5.93955 +6.17 5.94556 +6.18 5.95179 +6.19 5.95822 +6.2 5.96486 +6.21 5.9717 +6.22 5.97875 +6.23 5.98598 +6.24 5.99342 +6.25 6.00104 +6.26 6.00885 +6.27 6.01684 +6.28 6.02502 +6.29 6.03337 +6.3 6.0419 +6.31 6.0506 +6.32 6.05947 +6.33 6.06851 +6.34 6.07771 +6.35 6.08707 +6.36 6.09659 +6.37 6.10627 +6.38 6.11609 +6.39 6.12607 +6.4 6.13619 +6.41 6.14645 +6.42 6.15686 +6.43 6.1674 +6.44 6.17807 +6.45 6.18887 +6.46 6.19981 +6.47 6.21086 +6.48 6.22204 +6.49 6.23334 +6.5 6.24475 +6.51 6.25628 +6.52 6.26792 +6.53 6.27966 +6.54 6.29151 +6.55 6.30346 +6.56 6.31551 +6.57 6.32765 +6.58 6.33988 +6.59 6.35221 +6.6 6.36462 +6.61 6.37711 +6.62 6.38968 +6.63 6.40233 +6.64 6.41506 +6.65 6.42786 +6.66 6.44072 +6.67 6.45365 +6.68 6.46664 +6.69 6.47969 +6.7 6.4928 +6.71 6.50596 +6.72 6.51917 +6.73 6.53243 +6.74 6.54574 +6.75 6.55908 +6.76 6.57246 +6.77 6.58588 +6.78 6.59933 +6.79 6.61282 +6.8 6.62632 +6.81 6.63986 +6.82 6.65341 +6.83 6.66698 +6.84 6.68056 +6.85 6.69416 +6.86 6.70776 +6.87 6.72137 +6.88 6.73499 +6.89 6.7486 +6.9 6.76221 +6.91 6.77581 +6.92 6.78941 +6.93 6.80299 +6.94 6.81656 +6.95 6.83011 +6.96 6.84364 +6.97 6.85714 +6.98 6.87062 +6.99 6.88407 +7 6.89748 +7.01 6.91086 +7.02 6.9242 +7.03 6.9375 +7.04 6.95075 +7.05 6.96396 +7.06 6.97711 +7.07 6.99021 +7.08 7.00326 +7.09 7.01624 +7.1 7.02916 +7.11 7.04202 +7.12 7.0548 +7.13 7.06752 +7.14 7.08016 +7.15 7.09272 +7.16 7.10521 +7.17 7.1176 +7.18 7.12992 +7.19 7.14214 +7.2 7.15427 +7.21 7.1663 +7.22 7.17824 +7.23 7.19008 +7.24 7.20181 +7.25 7.21343 +7.26 7.22494 +7.27 7.23634 +7.28 7.24762 +7.29 7.25879 +7.3 7.26983 +7.31 7.28075 +7.32 7.29153 +7.33 7.30219 +7.34 7.31271 +7.35 7.32311 +7.36 7.33337 +7.37 7.34351 +7.38 7.35353 +7.39 7.36343 +7.4 7.37322 +7.41 7.38289 +7.42 7.39245 +7.43 7.40191 +7.44 7.41125 +7.45 7.4205 +7.46 7.42965 +7.47 7.43871 +7.48 7.44767 +7.49 7.45654 +7.5 7.46532 +7.51 7.47402 +7.52 7.48264 +7.53 7.49118 +7.54 7.49964 +7.55 7.50803 +7.56 7.51635 +7.57 7.52461 +7.58 7.5328 +7.59 7.54093 +7.6 7.549 +7.61 7.55702 +7.62 7.56498 +7.63 7.57289 +7.64 7.58076 +7.65 7.58858 +7.66 7.59637 +7.67 7.60411 +7.68 7.61182 +7.69 7.6195 +7.7 7.62715 +7.71 7.63477 +7.72 7.64237 +7.73 7.64994 +7.74 7.6575 +7.75 7.66505 +7.76 7.67258 +7.77 7.6801 +7.78 7.68762 +7.79 7.69513 +7.8 7.70265 +7.81 7.71016 +7.82 7.71768 +7.83 7.72521 +7.84 7.73275 +7.85 7.74031 +7.86 7.74788 +7.87 7.75547 +7.88 7.76308 +7.89 7.77072 +7.9 7.77839 +7.91 7.78609 +7.92 7.79382 +7.93 7.80159 +7.94 7.8094 +7.95 7.81725 +7.96 7.82515 +7.97 7.8331 +7.98 7.8411 +7.99 7.84915 +8 7.85726 +8.01 7.86543 +8.02 7.87367 +8.03 7.88197 +8.04 7.89034 +8.05 7.89878 +8.06 7.90729 +8.07 7.91588 +8.08 7.92456 +8.09 7.93331 +8.1 7.94216 +8.11 7.95109 +8.12 7.96011 +8.13 7.96923 +8.14 7.97844 +8.15 7.98776 +8.16 7.99718 +8.17 8.00671 +8.18 8.01634 +8.19 8.02609 +8.2 8.03596 +8.21 8.04594 +8.22 8.05604 +8.23 8.06626 +8.24 8.07662 +8.25 8.0871 +8.26 8.09771 +8.27 8.10846 +8.28 8.11935 +8.29 8.13038 +8.3 8.14155 +8.31 8.15287 +8.32 8.16434 +8.33 8.17596 +8.34 8.18774 +8.35 8.19967 +8.36 8.21177 +8.37 8.22403 +8.38 8.23646 +8.39 8.24906 +8.4 8.26183 +8.41 8.27478 +8.42 8.2879 +8.43 8.30121 +8.44 8.3147 +8.45 8.32838 +8.46 8.34225 +8.47 8.35631 +8.48 8.37057 +8.49 8.38502 +8.5 8.39968 +8.51 8.41454 +8.52 8.4296 +8.53 8.44485 +8.54 8.4603 +8.55 8.47594 +8.56 8.49176 +8.57 8.50777 +8.58 8.52396 +8.59 8.54033 +8.6 8.55688 +8.61 8.57359 +8.62 8.59048 +8.63 8.60754 +8.64 8.62476 +8.65 8.64214 +8.66 8.65968 +8.67 8.67737 +8.68 8.69522 +8.69 8.71322 +8.7 8.73137 +8.71 8.74966 +8.72 8.76809 +8.73 8.78666 +8.74 8.80537 +8.75 8.82421 +8.76 8.84318 +8.77 8.86228 +8.78 8.8815 +8.79 8.90085 +8.8 8.92031 +8.81 8.93989 +8.82 8.95958 +8.83 8.97938 +8.84 8.99929 +8.85 9.0193 +8.86 9.03942 +8.87 9.05963 +8.88 9.07994 +8.89 9.10035 +8.9 9.12084 +8.91 9.14142 +8.92 9.16208 +8.93 9.18283 +8.94 9.20366 +8.95 9.22456 +8.96 9.24553 +8.97 9.26658 +8.98 9.28769 +8.99 9.30887 +9 9.33011 +9.01 9.3514 +9.02 9.37276 +9.03 9.39416 +9.04 9.41562 +9.05 9.43712 +9.06 9.45867 +9.07 9.48026 +9.08 9.50189 +9.09 9.52356 +9.1 9.54526 +9.11 9.56698 +9.12 9.58874 +9.13 9.61052 +9.14 9.63232 +9.15 9.65414 +9.16 9.67598 +9.17 9.69783 +9.18 9.71969 +9.19 9.74156 +9.2 9.76343 diff --git a/gsl-2.5/doc/examples/interp2d b/gsl-2.5/doc/examples/interp2d new file mode 100755 index 00000000..976e9660 --- /dev/null +++ b/gsl-2.5/doc/examples/interp2d @@ -0,0 +1,228 @@ +#! /bin/sh + +# interp2d - temporary wrapper script for .libs/interp2d +# Generated by libtool (GNU libtool) 2.4.2 +# +# The interp2d program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s/\([`"$\\]\)/\\\1/g' + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command="(cd /home/groups/kipac/chto/package/gsl/gsl-2.5/doc/examples; LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LIBRARY_PATH; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; LD_LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/fftw/include:/home/users/chto/lib/fftw/lib:/home/users/chto/lib/healpix/lib:/home/users/chto/lib/namaster/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/include:/home/users/chto/cpp/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LD_LIBRARY_PATH; PATH=/share/software/user/open/curl/7.54.0/bin:/share/software/user/open/libressl/2.5.3/bin:/home/users/chto/lib/cfitsio:/home/users/chto/lib/cfitsio/include:/home/users/chto/lib:/home/users/chto/bin/bin:/home/users/chto/bin:/home/users/chto/.texlive/bin/x86_64-linux:/home/groups/kipac/chto/anaconda2/envs/newenv3/bin:/home/users/chto/.local/bin/include:/home/users/chto/.local/bin/lib:/home/users/chto/.local/bin:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/bin64:/share/software/user/open/fftw/3.3.6/bin:/home/groups/kipac/chto/anaconda2/condabin:/share/software/user/restricted/ifort/2019/bin:/share/software/user/open/gsl/2.3/bin:/share/software/user/srcc/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/dell/srvadmin/bin:/opt/dell/srvadmin/iSM/bin:/home/users/chto/bin; export PATH; gcc -g -O2 -o \$progdir/\$file interp2d.o ../../.libs/libgsl.so ../../cblas/.libs/libgslcblas.so -lm -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/.libs -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/cblas/.libs -Wl,-rpath -Wl,/usr/local/lib)" + +# This environment variable determines our operation mode. +if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then + # install mode needs the following variables: + generated_by_libtool_version='2.4.2' + notinst_deplibs=' ../../libgsl.la ../../cblas/libgslcblas.la' +else + # When we are sourced in execute mode, $file and $ECHO are already set. + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + file="$0" + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + ECHO="printf %s\\n" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ which is used only on +# windows platforms, and (c) all begin with the string --lt- +# (application programs are unlikely to have options which match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's ../../libtool value, followed by no. +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=$0 + shift + for lt_opt + do + case "$lt_opt" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%/[^/]*$%%'` + test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=. + lt_dump_F=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%^.*/%%'` + cat "$lt_dump_D/$lt_dump_F" + exit 0 + ;; + --lt-*) + $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n "$lt_option_debug"; then + echo "interp2d:interp2d:${LINENO}: libtool wrapper (GNU libtool) 2.4.2" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + $ECHO "interp2d:interp2d:${LINENO}: newargv[$lt_dump_args_N]: $lt_arg" + lt_dump_args_N=`expr $lt_dump_args_N + 1` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ + + if test -n "$lt_option_debug"; then + $ECHO "interp2d:interp2d:${LINENO}: newargv[0]: $progdir/$program" 1>&2 + func_lt_dump_args ${1+"$@"} 1>&2 + fi + exec "$progdir/$program" ${1+"$@"} + + $ECHO "$0: cannot exec $program $*" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from $@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case " $* " in + *\ --lt-*) + for lt_wr_arg + do + case $lt_wr_arg in + --lt-*) ;; + *) set x "$@" "$lt_wr_arg"; shift;; + esac + shift + done ;; + esac + func_exec_program_core ${1+"$@"} +} + + # Parse options + func_parse_lt_options "$0" ${1+"$@"} + + # Find the directory that this script lives in. + thisdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + test "x$thisdir" = "x$file" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=`ls -ld "$file" | /usr/bin/sed -n 's/.*-> //p'` + while test -n "$file"; do + destdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + + # If there was a directory component, then change thisdir. + if test "x$destdir" != "x$file"; then + case "$destdir" in + [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;; + *) thisdir="$thisdir/$destdir" ;; + esac + fi + + file=`$ECHO "$file" | /usr/bin/sed 's%^.*/%%'` + file=`ls -ld "$thisdir/$file" | /usr/bin/sed -n 's/.*-> //p'` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no + if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then + # special case for '.' + if test "$thisdir" = "."; then + thisdir=`pwd` + fi + # remove .libs from thisdir + case "$thisdir" in + *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /usr/bin/sed 's%[\\/][^\\/]*$%%'` ;; + .libs ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=`cd "$thisdir" && pwd` + test -n "$absdir" && thisdir="$absdir" + + program=lt-'interp2d' + progdir="$thisdir/.libs" + + if test ! -f "$progdir/$program" || + { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /usr/bin/sed 1q`; \ + test "X$file" != "X$progdir/$program"; }; then + + file="$$-$program" + + if test ! -d "$progdir"; then + mkdir "$progdir" + else + rm -f "$progdir/$file" + fi + + # relink executable if necessary + if test -n "$relink_command"; then + if relink_command_output=`eval $relink_command 2>&1`; then : + else + printf %s\n "$relink_command_output" >&2 + rm -f "$progdir/$file" + exit 1 + fi + fi + + mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null || + { rm -f "$progdir/$program"; + mv -f "$progdir/$file" "$progdir/$program"; } + rm -f "$progdir/$file" + fi + + if test -f "$progdir/$program"; then + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + # Run the actual program with our arguments. + func_exec_program ${1+"$@"} + fi + else + # The program doesn't exist. + $ECHO "$0: error: \`$progdir/$program' does not exist" 1>&2 + $ECHO "This script is just a wrapper for $program." 1>&2 + $ECHO "See the libtool documentation for more information." 1>&2 + exit 1 + fi +fi diff --git a/gsl-2.5/doc/examples/interp2d.c b/gsl-2.5/doc/examples/interp2d.c new file mode 100644 index 00000000..3777c107 --- /dev/null +++ b/gsl-2.5/doc/examples/interp2d.c @@ -0,0 +1,53 @@ +#include +#include + +#include +#include +#include + +int +main() +{ + const gsl_interp2d_type *T = gsl_interp2d_bilinear; + const size_t N = 100; /* number of points to interpolate */ + const double xa[] = { 0.0, 1.0 }; /* define unit square */ + const double ya[] = { 0.0, 1.0 }; + const size_t nx = sizeof(xa) / sizeof(double); /* x grid points */ + const size_t ny = sizeof(ya) / sizeof(double); /* y grid points */ + double *za = malloc(nx * ny * sizeof(double)); + gsl_spline2d *spline = gsl_spline2d_alloc(T, nx, ny); + gsl_interp_accel *xacc = gsl_interp_accel_alloc(); + gsl_interp_accel *yacc = gsl_interp_accel_alloc(); + size_t i, j; + + /* set z grid values */ + gsl_spline2d_set(spline, za, 0, 0, 0.0); + gsl_spline2d_set(spline, za, 0, 1, 1.0); + gsl_spline2d_set(spline, za, 1, 1, 0.5); + gsl_spline2d_set(spline, za, 1, 0, 1.0); + + /* initialize interpolation */ + gsl_spline2d_init(spline, xa, ya, za, nx, ny); + + /* interpolate N values in x and y and print out grid for plotting */ + for (i = 0; i < N; ++i) + { + double xi = i / (N - 1.0); + + for (j = 0; j < N; ++j) + { + double yj = j / (N - 1.0); + double zij = gsl_spline2d_eval(spline, xi, yj, xacc, yacc); + + printf("%f %f %f\n", xi, yj, zij); + } + printf("\n"); + } + + gsl_spline2d_free(spline); + gsl_interp_accel_free(xacc); + gsl_interp_accel_free(yacc); + free(za); + + return 0; +} diff --git a/gsl-2.5/doc/examples/interp2d.txt b/gsl-2.5/doc/examples/interp2d.txt new file mode 100644 index 00000000..44829b14 --- /dev/null +++ b/gsl-2.5/doc/examples/interp2d.txt @@ -0,0 +1,10100 @@ +0.000000 0.000000 0.000000 +0.000000 0.010101 0.010101 +0.000000 0.020202 0.020202 +0.000000 0.030303 0.030303 +0.000000 0.040404 0.040404 +0.000000 0.050505 0.050505 +0.000000 0.060606 0.060606 +0.000000 0.070707 0.070707 +0.000000 0.080808 0.080808 +0.000000 0.090909 0.090909 +0.000000 0.101010 0.101010 +0.000000 0.111111 0.111111 +0.000000 0.121212 0.121212 +0.000000 0.131313 0.131313 +0.000000 0.141414 0.141414 +0.000000 0.151515 0.151515 +0.000000 0.161616 0.161616 +0.000000 0.171717 0.171717 +0.000000 0.181818 0.181818 +0.000000 0.191919 0.191919 +0.000000 0.202020 0.202020 +0.000000 0.212121 0.212121 +0.000000 0.222222 0.222222 +0.000000 0.232323 0.232323 +0.000000 0.242424 0.242424 +0.000000 0.252525 0.252525 +0.000000 0.262626 0.262626 +0.000000 0.272727 0.272727 +0.000000 0.282828 0.282828 +0.000000 0.292929 0.292929 +0.000000 0.303030 0.303030 +0.000000 0.313131 0.313131 +0.000000 0.323232 0.323232 +0.000000 0.333333 0.333333 +0.000000 0.343434 0.343434 +0.000000 0.353535 0.353535 +0.000000 0.363636 0.363636 +0.000000 0.373737 0.373737 +0.000000 0.383838 0.383838 +0.000000 0.393939 0.393939 +0.000000 0.404040 0.404040 +0.000000 0.414141 0.414141 +0.000000 0.424242 0.424242 +0.000000 0.434343 0.434343 +0.000000 0.444444 0.444444 +0.000000 0.454545 0.454545 +0.000000 0.464646 0.464646 +0.000000 0.474747 0.474747 +0.000000 0.484848 0.484848 +0.000000 0.494949 0.494949 +0.000000 0.505051 0.505051 +0.000000 0.515152 0.515152 +0.000000 0.525253 0.525253 +0.000000 0.535354 0.535354 +0.000000 0.545455 0.545455 +0.000000 0.555556 0.555556 +0.000000 0.565657 0.565657 +0.000000 0.575758 0.575758 +0.000000 0.585859 0.585859 +0.000000 0.595960 0.595960 +0.000000 0.606061 0.606061 +0.000000 0.616162 0.616162 +0.000000 0.626263 0.626263 +0.000000 0.636364 0.636364 +0.000000 0.646465 0.646465 +0.000000 0.656566 0.656566 +0.000000 0.666667 0.666667 +0.000000 0.676768 0.676768 +0.000000 0.686869 0.686869 +0.000000 0.696970 0.696970 +0.000000 0.707071 0.707071 +0.000000 0.717172 0.717172 +0.000000 0.727273 0.727273 +0.000000 0.737374 0.737374 +0.000000 0.747475 0.747475 +0.000000 0.757576 0.757576 +0.000000 0.767677 0.767677 +0.000000 0.777778 0.777778 +0.000000 0.787879 0.787879 +0.000000 0.797980 0.797980 +0.000000 0.808081 0.808081 +0.000000 0.818182 0.818182 +0.000000 0.828283 0.828283 +0.000000 0.838384 0.838384 +0.000000 0.848485 0.848485 +0.000000 0.858586 0.858586 +0.000000 0.868687 0.868687 +0.000000 0.878788 0.878788 +0.000000 0.888889 0.888889 +0.000000 0.898990 0.898990 +0.000000 0.909091 0.909091 +0.000000 0.919192 0.919192 +0.000000 0.929293 0.929293 +0.000000 0.939394 0.939394 +0.000000 0.949495 0.949495 +0.000000 0.959596 0.959596 +0.000000 0.969697 0.969697 +0.000000 0.979798 0.979798 +0.000000 0.989899 0.989899 +0.000000 1.000000 1.000000 + +0.010101 0.000000 0.010101 +0.010101 0.010101 0.020049 +0.010101 0.020202 0.029997 +0.010101 0.030303 0.039945 +0.010101 0.040404 0.049893 +0.010101 0.050505 0.059841 +0.010101 0.060606 0.069789 +0.010101 0.070707 0.079737 +0.010101 0.080808 0.089685 +0.010101 0.090909 0.099633 +0.010101 0.101010 0.109581 +0.010101 0.111111 0.119529 +0.010101 0.121212 0.129477 +0.010101 0.131313 0.139425 +0.010101 0.141414 0.149373 +0.010101 0.151515 0.159320 +0.010101 0.161616 0.169268 +0.010101 0.171717 0.179216 +0.010101 0.181818 0.189164 +0.010101 0.191919 0.199112 +0.010101 0.202020 0.209060 +0.010101 0.212121 0.219008 +0.010101 0.222222 0.228956 +0.010101 0.232323 0.238904 +0.010101 0.242424 0.248852 +0.010101 0.252525 0.258800 +0.010101 0.262626 0.268748 +0.010101 0.272727 0.278696 +0.010101 0.282828 0.288644 +0.010101 0.292929 0.298592 +0.010101 0.303030 0.308540 +0.010101 0.313131 0.318488 +0.010101 0.323232 0.328436 +0.010101 0.333333 0.338384 +0.010101 0.343434 0.348332 +0.010101 0.353535 0.358280 +0.010101 0.363636 0.368228 +0.010101 0.373737 0.378176 +0.010101 0.383838 0.388124 +0.010101 0.393939 0.398072 +0.010101 0.404040 0.408020 +0.010101 0.414141 0.417968 +0.010101 0.424242 0.427916 +0.010101 0.434343 0.437863 +0.010101 0.444444 0.447811 +0.010101 0.454545 0.457759 +0.010101 0.464646 0.467707 +0.010101 0.474747 0.477655 +0.010101 0.484848 0.487603 +0.010101 0.494949 0.497551 +0.010101 0.505051 0.507499 +0.010101 0.515152 0.517447 +0.010101 0.525253 0.527395 +0.010101 0.535354 0.537343 +0.010101 0.545455 0.547291 +0.010101 0.555556 0.557239 +0.010101 0.565657 0.567187 +0.010101 0.575758 0.577135 +0.010101 0.585859 0.587083 +0.010101 0.595960 0.597031 +0.010101 0.606061 0.606979 +0.010101 0.616162 0.616927 +0.010101 0.626263 0.626875 +0.010101 0.636364 0.636823 +0.010101 0.646465 0.646771 +0.010101 0.656566 0.656719 +0.010101 0.666667 0.666667 +0.010101 0.676768 0.676615 +0.010101 0.686869 0.686563 +0.010101 0.696970 0.696511 +0.010101 0.707071 0.706459 +0.010101 0.717172 0.716406 +0.010101 0.727273 0.726354 +0.010101 0.737374 0.736302 +0.010101 0.747475 0.746250 +0.010101 0.757576 0.756198 +0.010101 0.767677 0.766146 +0.010101 0.777778 0.776094 +0.010101 0.787879 0.786042 +0.010101 0.797980 0.795990 +0.010101 0.808081 0.805938 +0.010101 0.818182 0.815886 +0.010101 0.828283 0.825834 +0.010101 0.838384 0.835782 +0.010101 0.848485 0.845730 +0.010101 0.858586 0.855678 +0.010101 0.868687 0.865626 +0.010101 0.878788 0.875574 +0.010101 0.888889 0.885522 +0.010101 0.898990 0.895470 +0.010101 0.909091 0.905418 +0.010101 0.919192 0.915366 +0.010101 0.929293 0.925314 +0.010101 0.939394 0.935262 +0.010101 0.949495 0.945210 +0.010101 0.959596 0.955158 +0.010101 0.969697 0.965106 +0.010101 0.979798 0.975054 +0.010101 0.989899 0.985002 +0.010101 1.000000 0.994949 + +0.020202 0.000000 0.020202 +0.020202 0.010101 0.029997 +0.020202 0.020202 0.039792 +0.020202 0.030303 0.049587 +0.020202 0.040404 0.059382 +0.020202 0.050505 0.069177 +0.020202 0.060606 0.078972 +0.020202 0.070707 0.088766 +0.020202 0.080808 0.098561 +0.020202 0.090909 0.108356 +0.020202 0.101010 0.118151 +0.020202 0.111111 0.127946 +0.020202 0.121212 0.137741 +0.020202 0.131313 0.147536 +0.020202 0.141414 0.157331 +0.020202 0.151515 0.167126 +0.020202 0.161616 0.176921 +0.020202 0.171717 0.186716 +0.020202 0.181818 0.196511 +0.020202 0.191919 0.206305 +0.020202 0.202020 0.216100 +0.020202 0.212121 0.225895 +0.020202 0.222222 0.235690 +0.020202 0.232323 0.245485 +0.020202 0.242424 0.255280 +0.020202 0.252525 0.265075 +0.020202 0.262626 0.274870 +0.020202 0.272727 0.284665 +0.020202 0.282828 0.294460 +0.020202 0.292929 0.304255 +0.020202 0.303030 0.314050 +0.020202 0.313131 0.323845 +0.020202 0.323232 0.333639 +0.020202 0.333333 0.343434 +0.020202 0.343434 0.353229 +0.020202 0.353535 0.363024 +0.020202 0.363636 0.372819 +0.020202 0.373737 0.382614 +0.020202 0.383838 0.392409 +0.020202 0.393939 0.402204 +0.020202 0.404040 0.411999 +0.020202 0.414141 0.421794 +0.020202 0.424242 0.431589 +0.020202 0.434343 0.441384 +0.020202 0.444444 0.451178 +0.020202 0.454545 0.460973 +0.020202 0.464646 0.470768 +0.020202 0.474747 0.480563 +0.020202 0.484848 0.490358 +0.020202 0.494949 0.500153 +0.020202 0.505051 0.509948 +0.020202 0.515152 0.519743 +0.020202 0.525253 0.529538 +0.020202 0.535354 0.539333 +0.020202 0.545455 0.549128 +0.020202 0.555556 0.558923 +0.020202 0.565657 0.568717 +0.020202 0.575758 0.578512 +0.020202 0.585859 0.588307 +0.020202 0.595960 0.598102 +0.020202 0.606061 0.607897 +0.020202 0.616162 0.617692 +0.020202 0.626263 0.627487 +0.020202 0.636364 0.637282 +0.020202 0.646465 0.647077 +0.020202 0.656566 0.656872 +0.020202 0.666667 0.666667 +0.020202 0.676768 0.676462 +0.020202 0.686869 0.686257 +0.020202 0.696970 0.696051 +0.020202 0.707071 0.705846 +0.020202 0.717172 0.715641 +0.020202 0.727273 0.725436 +0.020202 0.737374 0.735231 +0.020202 0.747475 0.745026 +0.020202 0.757576 0.754821 +0.020202 0.767677 0.764616 +0.020202 0.777778 0.774411 +0.020202 0.787879 0.784206 +0.020202 0.797980 0.794001 +0.020202 0.808081 0.803796 +0.020202 0.818182 0.813590 +0.020202 0.828283 0.823385 +0.020202 0.838384 0.833180 +0.020202 0.848485 0.842975 +0.020202 0.858586 0.852770 +0.020202 0.868687 0.862565 +0.020202 0.878788 0.872360 +0.020202 0.888889 0.882155 +0.020202 0.898990 0.891950 +0.020202 0.909091 0.901745 +0.020202 0.919192 0.911540 +0.020202 0.929293 0.921335 +0.020202 0.939394 0.931129 +0.020202 0.949495 0.940924 +0.020202 0.959596 0.950719 +0.020202 0.969697 0.960514 +0.020202 0.979798 0.970309 +0.020202 0.989899 0.980104 +0.020202 1.000000 0.989899 + +0.030303 0.000000 0.030303 +0.030303 0.010101 0.039945 +0.030303 0.020202 0.049587 +0.030303 0.030303 0.059229 +0.030303 0.040404 0.068871 +0.030303 0.050505 0.078512 +0.030303 0.060606 0.088154 +0.030303 0.070707 0.097796 +0.030303 0.080808 0.107438 +0.030303 0.090909 0.117080 +0.030303 0.101010 0.126722 +0.030303 0.111111 0.136364 +0.030303 0.121212 0.146006 +0.030303 0.131313 0.155647 +0.030303 0.141414 0.165289 +0.030303 0.151515 0.174931 +0.030303 0.161616 0.184573 +0.030303 0.171717 0.194215 +0.030303 0.181818 0.203857 +0.030303 0.191919 0.213499 +0.030303 0.202020 0.223140 +0.030303 0.212121 0.232782 +0.030303 0.222222 0.242424 +0.030303 0.232323 0.252066 +0.030303 0.242424 0.261708 +0.030303 0.252525 0.271350 +0.030303 0.262626 0.280992 +0.030303 0.272727 0.290634 +0.030303 0.282828 0.300275 +0.030303 0.292929 0.309917 +0.030303 0.303030 0.319559 +0.030303 0.313131 0.329201 +0.030303 0.323232 0.338843 +0.030303 0.333333 0.348485 +0.030303 0.343434 0.358127 +0.030303 0.353535 0.367769 +0.030303 0.363636 0.377410 +0.030303 0.373737 0.387052 +0.030303 0.383838 0.396694 +0.030303 0.393939 0.406336 +0.030303 0.404040 0.415978 +0.030303 0.414141 0.425620 +0.030303 0.424242 0.435262 +0.030303 0.434343 0.444904 +0.030303 0.444444 0.454545 +0.030303 0.454545 0.464187 +0.030303 0.464646 0.473829 +0.030303 0.474747 0.483471 +0.030303 0.484848 0.493113 +0.030303 0.494949 0.502755 +0.030303 0.505051 0.512397 +0.030303 0.515152 0.522039 +0.030303 0.525253 0.531680 +0.030303 0.535354 0.541322 +0.030303 0.545455 0.550964 +0.030303 0.555556 0.560606 +0.030303 0.565657 0.570248 +0.030303 0.575758 0.579890 +0.030303 0.585859 0.589532 +0.030303 0.595960 0.599174 +0.030303 0.606061 0.608815 +0.030303 0.616162 0.618457 +0.030303 0.626263 0.628099 +0.030303 0.636364 0.637741 +0.030303 0.646465 0.647383 +0.030303 0.656566 0.657025 +0.030303 0.666667 0.666667 +0.030303 0.676768 0.676309 +0.030303 0.686869 0.685950 +0.030303 0.696970 0.695592 +0.030303 0.707071 0.705234 +0.030303 0.717172 0.714876 +0.030303 0.727273 0.724518 +0.030303 0.737374 0.734160 +0.030303 0.747475 0.743802 +0.030303 0.757576 0.753444 +0.030303 0.767677 0.763085 +0.030303 0.777778 0.772727 +0.030303 0.787879 0.782369 +0.030303 0.797980 0.792011 +0.030303 0.808081 0.801653 +0.030303 0.818182 0.811295 +0.030303 0.828283 0.820937 +0.030303 0.838384 0.830579 +0.030303 0.848485 0.840220 +0.030303 0.858586 0.849862 +0.030303 0.868687 0.859504 +0.030303 0.878788 0.869146 +0.030303 0.888889 0.878788 +0.030303 0.898990 0.888430 +0.030303 0.909091 0.898072 +0.030303 0.919192 0.907713 +0.030303 0.929293 0.917355 +0.030303 0.939394 0.926997 +0.030303 0.949495 0.936639 +0.030303 0.959596 0.946281 +0.030303 0.969697 0.955923 +0.030303 0.979798 0.965565 +0.030303 0.989899 0.975207 +0.030303 1.000000 0.984848 + +0.040404 0.000000 0.040404 +0.040404 0.010101 0.049893 +0.040404 0.020202 0.059382 +0.040404 0.030303 0.068871 +0.040404 0.040404 0.078359 +0.040404 0.050505 0.087848 +0.040404 0.060606 0.097337 +0.040404 0.070707 0.106826 +0.040404 0.080808 0.116315 +0.040404 0.090909 0.125803 +0.040404 0.101010 0.135292 +0.040404 0.111111 0.144781 +0.040404 0.121212 0.154270 +0.040404 0.131313 0.163759 +0.040404 0.141414 0.173248 +0.040404 0.151515 0.182736 +0.040404 0.161616 0.192225 +0.040404 0.171717 0.201714 +0.040404 0.181818 0.211203 +0.040404 0.191919 0.220692 +0.040404 0.202020 0.230181 +0.040404 0.212121 0.239669 +0.040404 0.222222 0.249158 +0.040404 0.232323 0.258647 +0.040404 0.242424 0.268136 +0.040404 0.252525 0.277625 +0.040404 0.262626 0.287114 +0.040404 0.272727 0.296602 +0.040404 0.282828 0.306091 +0.040404 0.292929 0.315580 +0.040404 0.303030 0.325069 +0.040404 0.313131 0.334558 +0.040404 0.323232 0.344047 +0.040404 0.333333 0.353535 +0.040404 0.343434 0.363024 +0.040404 0.353535 0.372513 +0.040404 0.363636 0.382002 +0.040404 0.373737 0.391491 +0.040404 0.383838 0.400979 +0.040404 0.393939 0.410468 +0.040404 0.404040 0.419957 +0.040404 0.414141 0.429446 +0.040404 0.424242 0.438935 +0.040404 0.434343 0.448424 +0.040404 0.444444 0.457912 +0.040404 0.454545 0.467401 +0.040404 0.464646 0.476890 +0.040404 0.474747 0.486379 +0.040404 0.484848 0.495868 +0.040404 0.494949 0.505357 +0.040404 0.505051 0.514845 +0.040404 0.515152 0.524334 +0.040404 0.525253 0.533823 +0.040404 0.535354 0.543312 +0.040404 0.545455 0.552801 +0.040404 0.555556 0.562290 +0.040404 0.565657 0.571778 +0.040404 0.575758 0.581267 +0.040404 0.585859 0.590756 +0.040404 0.595960 0.600245 +0.040404 0.606061 0.609734 +0.040404 0.616162 0.619223 +0.040404 0.626263 0.628711 +0.040404 0.636364 0.638200 +0.040404 0.646465 0.647689 +0.040404 0.656566 0.657178 +0.040404 0.666667 0.666667 +0.040404 0.676768 0.676155 +0.040404 0.686869 0.685644 +0.040404 0.696970 0.695133 +0.040404 0.707071 0.704622 +0.040404 0.717172 0.714111 +0.040404 0.727273 0.723600 +0.040404 0.737374 0.733088 +0.040404 0.747475 0.742577 +0.040404 0.757576 0.752066 +0.040404 0.767677 0.761555 +0.040404 0.777778 0.771044 +0.040404 0.787879 0.780533 +0.040404 0.797980 0.790021 +0.040404 0.808081 0.799510 +0.040404 0.818182 0.808999 +0.040404 0.828283 0.818488 +0.040404 0.838384 0.827977 +0.040404 0.848485 0.837466 +0.040404 0.858586 0.846954 +0.040404 0.868687 0.856443 +0.040404 0.878788 0.865932 +0.040404 0.888889 0.875421 +0.040404 0.898990 0.884910 +0.040404 0.909091 0.894399 +0.040404 0.919192 0.903887 +0.040404 0.929293 0.913376 +0.040404 0.939394 0.922865 +0.040404 0.949495 0.932354 +0.040404 0.959596 0.941843 +0.040404 0.969697 0.951331 +0.040404 0.979798 0.960820 +0.040404 0.989899 0.970309 +0.040404 1.000000 0.979798 + +0.050505 0.000000 0.050505 +0.050505 0.010101 0.059841 +0.050505 0.020202 0.069177 +0.050505 0.030303 0.078512 +0.050505 0.040404 0.087848 +0.050505 0.050505 0.097184 +0.050505 0.060606 0.106520 +0.050505 0.070707 0.115856 +0.050505 0.080808 0.125191 +0.050505 0.090909 0.134527 +0.050505 0.101010 0.143863 +0.050505 0.111111 0.153199 +0.050505 0.121212 0.162534 +0.050505 0.131313 0.171870 +0.050505 0.141414 0.181206 +0.050505 0.151515 0.190542 +0.050505 0.161616 0.199878 +0.050505 0.171717 0.209213 +0.050505 0.181818 0.218549 +0.050505 0.191919 0.227885 +0.050505 0.202020 0.237221 +0.050505 0.212121 0.246556 +0.050505 0.222222 0.255892 +0.050505 0.232323 0.265228 +0.050505 0.242424 0.274564 +0.050505 0.252525 0.283900 +0.050505 0.262626 0.293235 +0.050505 0.272727 0.302571 +0.050505 0.282828 0.311907 +0.050505 0.292929 0.321243 +0.050505 0.303030 0.330579 +0.050505 0.313131 0.339914 +0.050505 0.323232 0.349250 +0.050505 0.333333 0.358586 +0.050505 0.343434 0.367922 +0.050505 0.353535 0.377257 +0.050505 0.363636 0.386593 +0.050505 0.373737 0.395929 +0.050505 0.383838 0.405265 +0.050505 0.393939 0.414601 +0.050505 0.404040 0.423936 +0.050505 0.414141 0.433272 +0.050505 0.424242 0.442608 +0.050505 0.434343 0.451944 +0.050505 0.444444 0.461279 +0.050505 0.454545 0.470615 +0.050505 0.464646 0.479951 +0.050505 0.474747 0.489287 +0.050505 0.484848 0.498623 +0.050505 0.494949 0.507958 +0.050505 0.505051 0.517294 +0.050505 0.515152 0.526630 +0.050505 0.525253 0.535966 +0.050505 0.535354 0.545301 +0.050505 0.545455 0.554637 +0.050505 0.555556 0.563973 +0.050505 0.565657 0.573309 +0.050505 0.575758 0.582645 +0.050505 0.585859 0.591980 +0.050505 0.595960 0.601316 +0.050505 0.606061 0.610652 +0.050505 0.616162 0.619988 +0.050505 0.626263 0.629324 +0.050505 0.636364 0.638659 +0.050505 0.646465 0.647995 +0.050505 0.656566 0.657331 +0.050505 0.666667 0.666667 +0.050505 0.676768 0.676002 +0.050505 0.686869 0.685338 +0.050505 0.696970 0.694674 +0.050505 0.707071 0.704010 +0.050505 0.717172 0.713346 +0.050505 0.727273 0.722681 +0.050505 0.737374 0.732017 +0.050505 0.747475 0.741353 +0.050505 0.757576 0.750689 +0.050505 0.767677 0.760024 +0.050505 0.777778 0.769360 +0.050505 0.787879 0.778696 +0.050505 0.797980 0.788032 +0.050505 0.808081 0.797368 +0.050505 0.818182 0.806703 +0.050505 0.828283 0.816039 +0.050505 0.838384 0.825375 +0.050505 0.848485 0.834711 +0.050505 0.858586 0.844047 +0.050505 0.868687 0.853382 +0.050505 0.878788 0.862718 +0.050505 0.888889 0.872054 +0.050505 0.898990 0.881390 +0.050505 0.909091 0.890725 +0.050505 0.919192 0.900061 +0.050505 0.929293 0.909397 +0.050505 0.939394 0.918733 +0.050505 0.949495 0.928069 +0.050505 0.959596 0.937404 +0.050505 0.969697 0.946740 +0.050505 0.979798 0.956076 +0.050505 0.989899 0.965412 +0.050505 1.000000 0.974747 + +0.060606 0.000000 0.060606 +0.060606 0.010101 0.069789 +0.060606 0.020202 0.078972 +0.060606 0.030303 0.088154 +0.060606 0.040404 0.097337 +0.060606 0.050505 0.106520 +0.060606 0.060606 0.115702 +0.060606 0.070707 0.124885 +0.060606 0.080808 0.134068 +0.060606 0.090909 0.143251 +0.060606 0.101010 0.152433 +0.060606 0.111111 0.161616 +0.060606 0.121212 0.170799 +0.060606 0.131313 0.179982 +0.060606 0.141414 0.189164 +0.060606 0.151515 0.198347 +0.060606 0.161616 0.207530 +0.060606 0.171717 0.216713 +0.060606 0.181818 0.225895 +0.060606 0.191919 0.235078 +0.060606 0.202020 0.244261 +0.060606 0.212121 0.253444 +0.060606 0.222222 0.262626 +0.060606 0.232323 0.271809 +0.060606 0.242424 0.280992 +0.060606 0.252525 0.290174 +0.060606 0.262626 0.299357 +0.060606 0.272727 0.308540 +0.060606 0.282828 0.317723 +0.060606 0.292929 0.326905 +0.060606 0.303030 0.336088 +0.060606 0.313131 0.345271 +0.060606 0.323232 0.354454 +0.060606 0.333333 0.363636 +0.060606 0.343434 0.372819 +0.060606 0.353535 0.382002 +0.060606 0.363636 0.391185 +0.060606 0.373737 0.400367 +0.060606 0.383838 0.409550 +0.060606 0.393939 0.418733 +0.060606 0.404040 0.427916 +0.060606 0.414141 0.437098 +0.060606 0.424242 0.446281 +0.060606 0.434343 0.455464 +0.060606 0.444444 0.464646 +0.060606 0.454545 0.473829 +0.060606 0.464646 0.483012 +0.060606 0.474747 0.492195 +0.060606 0.484848 0.501377 +0.060606 0.494949 0.510560 +0.060606 0.505051 0.519743 +0.060606 0.515152 0.528926 +0.060606 0.525253 0.538108 +0.060606 0.535354 0.547291 +0.060606 0.545455 0.556474 +0.060606 0.555556 0.565657 +0.060606 0.565657 0.574839 +0.060606 0.575758 0.584022 +0.060606 0.585859 0.593205 +0.060606 0.595960 0.602388 +0.060606 0.606061 0.611570 +0.060606 0.616162 0.620753 +0.060606 0.626263 0.629936 +0.060606 0.636364 0.639118 +0.060606 0.646465 0.648301 +0.060606 0.656566 0.657484 +0.060606 0.666667 0.666667 +0.060606 0.676768 0.675849 +0.060606 0.686869 0.685032 +0.060606 0.696970 0.694215 +0.060606 0.707071 0.703398 +0.060606 0.717172 0.712580 +0.060606 0.727273 0.721763 +0.060606 0.737374 0.730946 +0.060606 0.747475 0.740129 +0.060606 0.757576 0.749311 +0.060606 0.767677 0.758494 +0.060606 0.777778 0.767677 +0.060606 0.787879 0.776860 +0.060606 0.797980 0.786042 +0.060606 0.808081 0.795225 +0.060606 0.818182 0.804408 +0.060606 0.828283 0.813590 +0.060606 0.838384 0.822773 +0.060606 0.848485 0.831956 +0.060606 0.858586 0.841139 +0.060606 0.868687 0.850321 +0.060606 0.878788 0.859504 +0.060606 0.888889 0.868687 +0.060606 0.898990 0.877870 +0.060606 0.909091 0.887052 +0.060606 0.919192 0.896235 +0.060606 0.929293 0.905418 +0.060606 0.939394 0.914601 +0.060606 0.949495 0.923783 +0.060606 0.959596 0.932966 +0.060606 0.969697 0.942149 +0.060606 0.979798 0.951331 +0.060606 0.989899 0.960514 +0.060606 1.000000 0.969697 + +0.070707 0.000000 0.070707 +0.070707 0.010101 0.079737 +0.070707 0.020202 0.088766 +0.070707 0.030303 0.097796 +0.070707 0.040404 0.106826 +0.070707 0.050505 0.115856 +0.070707 0.060606 0.124885 +0.070707 0.070707 0.133915 +0.070707 0.080808 0.142945 +0.070707 0.090909 0.151974 +0.070707 0.101010 0.161004 +0.070707 0.111111 0.170034 +0.070707 0.121212 0.179063 +0.070707 0.131313 0.188093 +0.070707 0.141414 0.197123 +0.070707 0.151515 0.206152 +0.070707 0.161616 0.215182 +0.070707 0.171717 0.224212 +0.070707 0.181818 0.233242 +0.070707 0.191919 0.242271 +0.070707 0.202020 0.251301 +0.070707 0.212121 0.260331 +0.070707 0.222222 0.269360 +0.070707 0.232323 0.278390 +0.070707 0.242424 0.287420 +0.070707 0.252525 0.296449 +0.070707 0.262626 0.305479 +0.070707 0.272727 0.314509 +0.070707 0.282828 0.323538 +0.070707 0.292929 0.332568 +0.070707 0.303030 0.341598 +0.070707 0.313131 0.350627 +0.070707 0.323232 0.359657 +0.070707 0.333333 0.368687 +0.070707 0.343434 0.377717 +0.070707 0.353535 0.386746 +0.070707 0.363636 0.395776 +0.070707 0.373737 0.404806 +0.070707 0.383838 0.413835 +0.070707 0.393939 0.422865 +0.070707 0.404040 0.431895 +0.070707 0.414141 0.440924 +0.070707 0.424242 0.449954 +0.070707 0.434343 0.458984 +0.070707 0.444444 0.468013 +0.070707 0.454545 0.477043 +0.070707 0.464646 0.486073 +0.070707 0.474747 0.495103 +0.070707 0.484848 0.504132 +0.070707 0.494949 0.513162 +0.070707 0.505051 0.522192 +0.070707 0.515152 0.531221 +0.070707 0.525253 0.540251 +0.070707 0.535354 0.549281 +0.070707 0.545455 0.558310 +0.070707 0.555556 0.567340 +0.070707 0.565657 0.576370 +0.070707 0.575758 0.585399 +0.070707 0.585859 0.594429 +0.070707 0.595960 0.603459 +0.070707 0.606061 0.612489 +0.070707 0.616162 0.621518 +0.070707 0.626263 0.630548 +0.070707 0.636364 0.639578 +0.070707 0.646465 0.648607 +0.070707 0.656566 0.657637 +0.070707 0.666667 0.666667 +0.070707 0.676768 0.675696 +0.070707 0.686869 0.684726 +0.070707 0.696970 0.693756 +0.070707 0.707071 0.702785 +0.070707 0.717172 0.711815 +0.070707 0.727273 0.720845 +0.070707 0.737374 0.729875 +0.070707 0.747475 0.738904 +0.070707 0.757576 0.747934 +0.070707 0.767677 0.756964 +0.070707 0.777778 0.765993 +0.070707 0.787879 0.775023 +0.070707 0.797980 0.784053 +0.070707 0.808081 0.793082 +0.070707 0.818182 0.802112 +0.070707 0.828283 0.811142 +0.070707 0.838384 0.820171 +0.070707 0.848485 0.829201 +0.070707 0.858586 0.838231 +0.070707 0.868687 0.847260 +0.070707 0.878788 0.856290 +0.070707 0.888889 0.865320 +0.070707 0.898990 0.874350 +0.070707 0.909091 0.883379 +0.070707 0.919192 0.892409 +0.070707 0.929293 0.901439 +0.070707 0.939394 0.910468 +0.070707 0.949495 0.919498 +0.070707 0.959596 0.928528 +0.070707 0.969697 0.937557 +0.070707 0.979798 0.946587 +0.070707 0.989899 0.955617 +0.070707 1.000000 0.964646 + +0.080808 0.000000 0.080808 +0.080808 0.010101 0.089685 +0.080808 0.020202 0.098561 +0.080808 0.030303 0.107438 +0.080808 0.040404 0.116315 +0.080808 0.050505 0.125191 +0.080808 0.060606 0.134068 +0.080808 0.070707 0.142945 +0.080808 0.080808 0.151821 +0.080808 0.090909 0.160698 +0.080808 0.101010 0.169575 +0.080808 0.111111 0.178451 +0.080808 0.121212 0.187328 +0.080808 0.131313 0.196204 +0.080808 0.141414 0.205081 +0.080808 0.151515 0.213958 +0.080808 0.161616 0.222834 +0.080808 0.171717 0.231711 +0.080808 0.181818 0.240588 +0.080808 0.191919 0.249464 +0.080808 0.202020 0.258341 +0.080808 0.212121 0.267218 +0.080808 0.222222 0.276094 +0.080808 0.232323 0.284971 +0.080808 0.242424 0.293848 +0.080808 0.252525 0.302724 +0.080808 0.262626 0.311601 +0.080808 0.272727 0.320478 +0.080808 0.282828 0.329354 +0.080808 0.292929 0.338231 +0.080808 0.303030 0.347107 +0.080808 0.313131 0.355984 +0.080808 0.323232 0.364861 +0.080808 0.333333 0.373737 +0.080808 0.343434 0.382614 +0.080808 0.353535 0.391491 +0.080808 0.363636 0.400367 +0.080808 0.373737 0.409244 +0.080808 0.383838 0.418121 +0.080808 0.393939 0.426997 +0.080808 0.404040 0.435874 +0.080808 0.414141 0.444751 +0.080808 0.424242 0.453627 +0.080808 0.434343 0.462504 +0.080808 0.444444 0.471380 +0.080808 0.454545 0.480257 +0.080808 0.464646 0.489134 +0.080808 0.474747 0.498010 +0.080808 0.484848 0.506887 +0.080808 0.494949 0.515764 +0.080808 0.505051 0.524640 +0.080808 0.515152 0.533517 +0.080808 0.525253 0.542394 +0.080808 0.535354 0.551270 +0.080808 0.545455 0.560147 +0.080808 0.555556 0.569024 +0.080808 0.565657 0.577900 +0.080808 0.575758 0.586777 +0.080808 0.585859 0.595654 +0.080808 0.595960 0.604530 +0.080808 0.606061 0.613407 +0.080808 0.616162 0.622283 +0.080808 0.626263 0.631160 +0.080808 0.636364 0.640037 +0.080808 0.646465 0.648913 +0.080808 0.656566 0.657790 +0.080808 0.666667 0.666667 +0.080808 0.676768 0.675543 +0.080808 0.686869 0.684420 +0.080808 0.696970 0.693297 +0.080808 0.707071 0.702173 +0.080808 0.717172 0.711050 +0.080808 0.727273 0.719927 +0.080808 0.737374 0.728803 +0.080808 0.747475 0.737680 +0.080808 0.757576 0.746556 +0.080808 0.767677 0.755433 +0.080808 0.777778 0.764310 +0.080808 0.787879 0.773186 +0.080808 0.797980 0.782063 +0.080808 0.808081 0.790940 +0.080808 0.818182 0.799816 +0.080808 0.828283 0.808693 +0.080808 0.838384 0.817570 +0.080808 0.848485 0.826446 +0.080808 0.858586 0.835323 +0.080808 0.868687 0.844200 +0.080808 0.878788 0.853076 +0.080808 0.888889 0.861953 +0.080808 0.898990 0.870830 +0.080808 0.909091 0.879706 +0.080808 0.919192 0.888583 +0.080808 0.929293 0.897459 +0.080808 0.939394 0.906336 +0.080808 0.949495 0.915213 +0.080808 0.959596 0.924089 +0.080808 0.969697 0.932966 +0.080808 0.979798 0.941843 +0.080808 0.989899 0.950719 +0.080808 1.000000 0.959596 + +0.090909 0.000000 0.090909 +0.090909 0.010101 0.099633 +0.090909 0.020202 0.108356 +0.090909 0.030303 0.117080 +0.090909 0.040404 0.125803 +0.090909 0.050505 0.134527 +0.090909 0.060606 0.143251 +0.090909 0.070707 0.151974 +0.090909 0.080808 0.160698 +0.090909 0.090909 0.169421 +0.090909 0.101010 0.178145 +0.090909 0.111111 0.186869 +0.090909 0.121212 0.195592 +0.090909 0.131313 0.204316 +0.090909 0.141414 0.213039 +0.090909 0.151515 0.221763 +0.090909 0.161616 0.230487 +0.090909 0.171717 0.239210 +0.090909 0.181818 0.247934 +0.090909 0.191919 0.256657 +0.090909 0.202020 0.265381 +0.090909 0.212121 0.274105 +0.090909 0.222222 0.282828 +0.090909 0.232323 0.291552 +0.090909 0.242424 0.300275 +0.090909 0.252525 0.308999 +0.090909 0.262626 0.317723 +0.090909 0.272727 0.326446 +0.090909 0.282828 0.335170 +0.090909 0.292929 0.343893 +0.090909 0.303030 0.352617 +0.090909 0.313131 0.361341 +0.090909 0.323232 0.370064 +0.090909 0.333333 0.378788 +0.090909 0.343434 0.387511 +0.090909 0.353535 0.396235 +0.090909 0.363636 0.404959 +0.090909 0.373737 0.413682 +0.090909 0.383838 0.422406 +0.090909 0.393939 0.431129 +0.090909 0.404040 0.439853 +0.090909 0.414141 0.448577 +0.090909 0.424242 0.457300 +0.090909 0.434343 0.466024 +0.090909 0.444444 0.474747 +0.090909 0.454545 0.483471 +0.090909 0.464646 0.492195 +0.090909 0.474747 0.500918 +0.090909 0.484848 0.509642 +0.090909 0.494949 0.518365 +0.090909 0.505051 0.527089 +0.090909 0.515152 0.535813 +0.090909 0.525253 0.544536 +0.090909 0.535354 0.553260 +0.090909 0.545455 0.561983 +0.090909 0.555556 0.570707 +0.090909 0.565657 0.579431 +0.090909 0.575758 0.588154 +0.090909 0.585859 0.596878 +0.090909 0.595960 0.605601 +0.090909 0.606061 0.614325 +0.090909 0.616162 0.623049 +0.090909 0.626263 0.631772 +0.090909 0.636364 0.640496 +0.090909 0.646465 0.649219 +0.090909 0.656566 0.657943 +0.090909 0.666667 0.666667 +0.090909 0.676768 0.675390 +0.090909 0.686869 0.684114 +0.090909 0.696970 0.692837 +0.090909 0.707071 0.701561 +0.090909 0.717172 0.710285 +0.090909 0.727273 0.719008 +0.090909 0.737374 0.727732 +0.090909 0.747475 0.736455 +0.090909 0.757576 0.745179 +0.090909 0.767677 0.753903 +0.090909 0.777778 0.762626 +0.090909 0.787879 0.771350 +0.090909 0.797980 0.780073 +0.090909 0.808081 0.788797 +0.090909 0.818182 0.797521 +0.090909 0.828283 0.806244 +0.090909 0.838384 0.814968 +0.090909 0.848485 0.823691 +0.090909 0.858586 0.832415 +0.090909 0.868687 0.841139 +0.090909 0.878788 0.849862 +0.090909 0.888889 0.858586 +0.090909 0.898990 0.867309 +0.090909 0.909091 0.876033 +0.090909 0.919192 0.884757 +0.090909 0.929293 0.893480 +0.090909 0.939394 0.902204 +0.090909 0.949495 0.910927 +0.090909 0.959596 0.919651 +0.090909 0.969697 0.928375 +0.090909 0.979798 0.937098 +0.090909 0.989899 0.945822 +0.090909 1.000000 0.954545 + +0.101010 0.000000 0.101010 +0.101010 0.010101 0.109581 +0.101010 0.020202 0.118151 +0.101010 0.030303 0.126722 +0.101010 0.040404 0.135292 +0.101010 0.050505 0.143863 +0.101010 0.060606 0.152433 +0.101010 0.070707 0.161004 +0.101010 0.080808 0.169575 +0.101010 0.090909 0.178145 +0.101010 0.101010 0.186716 +0.101010 0.111111 0.195286 +0.101010 0.121212 0.203857 +0.101010 0.131313 0.212427 +0.101010 0.141414 0.220998 +0.101010 0.151515 0.229568 +0.101010 0.161616 0.238139 +0.101010 0.171717 0.246710 +0.101010 0.181818 0.255280 +0.101010 0.191919 0.263851 +0.101010 0.202020 0.272421 +0.101010 0.212121 0.280992 +0.101010 0.222222 0.289562 +0.101010 0.232323 0.298133 +0.101010 0.242424 0.306703 +0.101010 0.252525 0.315274 +0.101010 0.262626 0.323845 +0.101010 0.272727 0.332415 +0.101010 0.282828 0.340986 +0.101010 0.292929 0.349556 +0.101010 0.303030 0.358127 +0.101010 0.313131 0.366697 +0.101010 0.323232 0.375268 +0.101010 0.333333 0.383838 +0.101010 0.343434 0.392409 +0.101010 0.353535 0.400979 +0.101010 0.363636 0.409550 +0.101010 0.373737 0.418121 +0.101010 0.383838 0.426691 +0.101010 0.393939 0.435262 +0.101010 0.404040 0.443832 +0.101010 0.414141 0.452403 +0.101010 0.424242 0.460973 +0.101010 0.434343 0.469544 +0.101010 0.444444 0.478114 +0.101010 0.454545 0.486685 +0.101010 0.464646 0.495256 +0.101010 0.474747 0.503826 +0.101010 0.484848 0.512397 +0.101010 0.494949 0.520967 +0.101010 0.505051 0.529538 +0.101010 0.515152 0.538108 +0.101010 0.525253 0.546679 +0.101010 0.535354 0.555249 +0.101010 0.545455 0.563820 +0.101010 0.555556 0.572391 +0.101010 0.565657 0.580961 +0.101010 0.575758 0.589532 +0.101010 0.585859 0.598102 +0.101010 0.595960 0.606673 +0.101010 0.606061 0.615243 +0.101010 0.616162 0.623814 +0.101010 0.626263 0.632384 +0.101010 0.636364 0.640955 +0.101010 0.646465 0.649526 +0.101010 0.656566 0.658096 +0.101010 0.666667 0.666667 +0.101010 0.676768 0.675237 +0.101010 0.686869 0.683808 +0.101010 0.696970 0.692378 +0.101010 0.707071 0.700949 +0.101010 0.717172 0.709519 +0.101010 0.727273 0.718090 +0.101010 0.737374 0.726661 +0.101010 0.747475 0.735231 +0.101010 0.757576 0.743802 +0.101010 0.767677 0.752372 +0.101010 0.777778 0.760943 +0.101010 0.787879 0.769513 +0.101010 0.797980 0.778084 +0.101010 0.808081 0.786654 +0.101010 0.818182 0.795225 +0.101010 0.828283 0.803796 +0.101010 0.838384 0.812366 +0.101010 0.848485 0.820937 +0.101010 0.858586 0.829507 +0.101010 0.868687 0.838078 +0.101010 0.878788 0.846648 +0.101010 0.888889 0.855219 +0.101010 0.898990 0.863789 +0.101010 0.909091 0.872360 +0.101010 0.919192 0.880931 +0.101010 0.929293 0.889501 +0.101010 0.939394 0.898072 +0.101010 0.949495 0.906642 +0.101010 0.959596 0.915213 +0.101010 0.969697 0.923783 +0.101010 0.979798 0.932354 +0.101010 0.989899 0.940924 +0.101010 1.000000 0.949495 + +0.111111 0.000000 0.111111 +0.111111 0.010101 0.119529 +0.111111 0.020202 0.127946 +0.111111 0.030303 0.136364 +0.111111 0.040404 0.144781 +0.111111 0.050505 0.153199 +0.111111 0.060606 0.161616 +0.111111 0.070707 0.170034 +0.111111 0.080808 0.178451 +0.111111 0.090909 0.186869 +0.111111 0.101010 0.195286 +0.111111 0.111111 0.203704 +0.111111 0.121212 0.212121 +0.111111 0.131313 0.220539 +0.111111 0.141414 0.228956 +0.111111 0.151515 0.237374 +0.111111 0.161616 0.245791 +0.111111 0.171717 0.254209 +0.111111 0.181818 0.262626 +0.111111 0.191919 0.271044 +0.111111 0.202020 0.279461 +0.111111 0.212121 0.287879 +0.111111 0.222222 0.296296 +0.111111 0.232323 0.304714 +0.111111 0.242424 0.313131 +0.111111 0.252525 0.321549 +0.111111 0.262626 0.329966 +0.111111 0.272727 0.338384 +0.111111 0.282828 0.346801 +0.111111 0.292929 0.355219 +0.111111 0.303030 0.363636 +0.111111 0.313131 0.372054 +0.111111 0.323232 0.380471 +0.111111 0.333333 0.388889 +0.111111 0.343434 0.397306 +0.111111 0.353535 0.405724 +0.111111 0.363636 0.414141 +0.111111 0.373737 0.422559 +0.111111 0.383838 0.430976 +0.111111 0.393939 0.439394 +0.111111 0.404040 0.447811 +0.111111 0.414141 0.456229 +0.111111 0.424242 0.464646 +0.111111 0.434343 0.473064 +0.111111 0.444444 0.481481 +0.111111 0.454545 0.489899 +0.111111 0.464646 0.498316 +0.111111 0.474747 0.506734 +0.111111 0.484848 0.515152 +0.111111 0.494949 0.523569 +0.111111 0.505051 0.531987 +0.111111 0.515152 0.540404 +0.111111 0.525253 0.548822 +0.111111 0.535354 0.557239 +0.111111 0.545455 0.565657 +0.111111 0.555556 0.574074 +0.111111 0.565657 0.582492 +0.111111 0.575758 0.590909 +0.111111 0.585859 0.599327 +0.111111 0.595960 0.607744 +0.111111 0.606061 0.616162 +0.111111 0.616162 0.624579 +0.111111 0.626263 0.632997 +0.111111 0.636364 0.641414 +0.111111 0.646465 0.649832 +0.111111 0.656566 0.658249 +0.111111 0.666667 0.666667 +0.111111 0.676768 0.675084 +0.111111 0.686869 0.683502 +0.111111 0.696970 0.691919 +0.111111 0.707071 0.700337 +0.111111 0.717172 0.708754 +0.111111 0.727273 0.717172 +0.111111 0.737374 0.725589 +0.111111 0.747475 0.734007 +0.111111 0.757576 0.742424 +0.111111 0.767677 0.750842 +0.111111 0.777778 0.759259 +0.111111 0.787879 0.767677 +0.111111 0.797980 0.776094 +0.111111 0.808081 0.784512 +0.111111 0.818182 0.792929 +0.111111 0.828283 0.801347 +0.111111 0.838384 0.809764 +0.111111 0.848485 0.818182 +0.111111 0.858586 0.826599 +0.111111 0.868687 0.835017 +0.111111 0.878788 0.843434 +0.111111 0.888889 0.851852 +0.111111 0.898990 0.860269 +0.111111 0.909091 0.868687 +0.111111 0.919192 0.877104 +0.111111 0.929293 0.885522 +0.111111 0.939394 0.893939 +0.111111 0.949495 0.902357 +0.111111 0.959596 0.910774 +0.111111 0.969697 0.919192 +0.111111 0.979798 0.927609 +0.111111 0.989899 0.936027 +0.111111 1.000000 0.944444 + +0.121212 0.000000 0.121212 +0.121212 0.010101 0.129477 +0.121212 0.020202 0.137741 +0.121212 0.030303 0.146006 +0.121212 0.040404 0.154270 +0.121212 0.050505 0.162534 +0.121212 0.060606 0.170799 +0.121212 0.070707 0.179063 +0.121212 0.080808 0.187328 +0.121212 0.090909 0.195592 +0.121212 0.101010 0.203857 +0.121212 0.111111 0.212121 +0.121212 0.121212 0.220386 +0.121212 0.131313 0.228650 +0.121212 0.141414 0.236915 +0.121212 0.151515 0.245179 +0.121212 0.161616 0.253444 +0.121212 0.171717 0.261708 +0.121212 0.181818 0.269972 +0.121212 0.191919 0.278237 +0.121212 0.202020 0.286501 +0.121212 0.212121 0.294766 +0.121212 0.222222 0.303030 +0.121212 0.232323 0.311295 +0.121212 0.242424 0.319559 +0.121212 0.252525 0.327824 +0.121212 0.262626 0.336088 +0.121212 0.272727 0.344353 +0.121212 0.282828 0.352617 +0.121212 0.292929 0.360882 +0.121212 0.303030 0.369146 +0.121212 0.313131 0.377410 +0.121212 0.323232 0.385675 +0.121212 0.333333 0.393939 +0.121212 0.343434 0.402204 +0.121212 0.353535 0.410468 +0.121212 0.363636 0.418733 +0.121212 0.373737 0.426997 +0.121212 0.383838 0.435262 +0.121212 0.393939 0.443526 +0.121212 0.404040 0.451791 +0.121212 0.414141 0.460055 +0.121212 0.424242 0.468320 +0.121212 0.434343 0.476584 +0.121212 0.444444 0.484848 +0.121212 0.454545 0.493113 +0.121212 0.464646 0.501377 +0.121212 0.474747 0.509642 +0.121212 0.484848 0.517906 +0.121212 0.494949 0.526171 +0.121212 0.505051 0.534435 +0.121212 0.515152 0.542700 +0.121212 0.525253 0.550964 +0.121212 0.535354 0.559229 +0.121212 0.545455 0.567493 +0.121212 0.555556 0.575758 +0.121212 0.565657 0.584022 +0.121212 0.575758 0.592287 +0.121212 0.585859 0.600551 +0.121212 0.595960 0.608815 +0.121212 0.606061 0.617080 +0.121212 0.616162 0.625344 +0.121212 0.626263 0.633609 +0.121212 0.636364 0.641873 +0.121212 0.646465 0.650138 +0.121212 0.656566 0.658402 +0.121212 0.666667 0.666667 +0.121212 0.676768 0.674931 +0.121212 0.686869 0.683196 +0.121212 0.696970 0.691460 +0.121212 0.707071 0.699725 +0.121212 0.717172 0.707989 +0.121212 0.727273 0.716253 +0.121212 0.737374 0.724518 +0.121212 0.747475 0.732782 +0.121212 0.757576 0.741047 +0.121212 0.767677 0.749311 +0.121212 0.777778 0.757576 +0.121212 0.787879 0.765840 +0.121212 0.797980 0.774105 +0.121212 0.808081 0.782369 +0.121212 0.818182 0.790634 +0.121212 0.828283 0.798898 +0.121212 0.838384 0.807163 +0.121212 0.848485 0.815427 +0.121212 0.858586 0.823691 +0.121212 0.868687 0.831956 +0.121212 0.878788 0.840220 +0.121212 0.888889 0.848485 +0.121212 0.898990 0.856749 +0.121212 0.909091 0.865014 +0.121212 0.919192 0.873278 +0.121212 0.929293 0.881543 +0.121212 0.939394 0.889807 +0.121212 0.949495 0.898072 +0.121212 0.959596 0.906336 +0.121212 0.969697 0.914601 +0.121212 0.979798 0.922865 +0.121212 0.989899 0.931129 +0.121212 1.000000 0.939394 + +0.131313 0.000000 0.131313 +0.131313 0.010101 0.139425 +0.131313 0.020202 0.147536 +0.131313 0.030303 0.155647 +0.131313 0.040404 0.163759 +0.131313 0.050505 0.171870 +0.131313 0.060606 0.179982 +0.131313 0.070707 0.188093 +0.131313 0.080808 0.196204 +0.131313 0.090909 0.204316 +0.131313 0.101010 0.212427 +0.131313 0.111111 0.220539 +0.131313 0.121212 0.228650 +0.131313 0.131313 0.236762 +0.131313 0.141414 0.244873 +0.131313 0.151515 0.252984 +0.131313 0.161616 0.261096 +0.131313 0.171717 0.269207 +0.131313 0.181818 0.277319 +0.131313 0.191919 0.285430 +0.131313 0.202020 0.293541 +0.131313 0.212121 0.301653 +0.131313 0.222222 0.309764 +0.131313 0.232323 0.317876 +0.131313 0.242424 0.325987 +0.131313 0.252525 0.334099 +0.131313 0.262626 0.342210 +0.131313 0.272727 0.350321 +0.131313 0.282828 0.358433 +0.131313 0.292929 0.366544 +0.131313 0.303030 0.374656 +0.131313 0.313131 0.382767 +0.131313 0.323232 0.390878 +0.131313 0.333333 0.398990 +0.131313 0.343434 0.407101 +0.131313 0.353535 0.415213 +0.131313 0.363636 0.423324 +0.131313 0.373737 0.431436 +0.131313 0.383838 0.439547 +0.131313 0.393939 0.447658 +0.131313 0.404040 0.455770 +0.131313 0.414141 0.463881 +0.131313 0.424242 0.471993 +0.131313 0.434343 0.480104 +0.131313 0.444444 0.488215 +0.131313 0.454545 0.496327 +0.131313 0.464646 0.504438 +0.131313 0.474747 0.512550 +0.131313 0.484848 0.520661 +0.131313 0.494949 0.528773 +0.131313 0.505051 0.536884 +0.131313 0.515152 0.544995 +0.131313 0.525253 0.553107 +0.131313 0.535354 0.561218 +0.131313 0.545455 0.569330 +0.131313 0.555556 0.577441 +0.131313 0.565657 0.585552 +0.131313 0.575758 0.593664 +0.131313 0.585859 0.601775 +0.131313 0.595960 0.609887 +0.131313 0.606061 0.617998 +0.131313 0.616162 0.626110 +0.131313 0.626263 0.634221 +0.131313 0.636364 0.642332 +0.131313 0.646465 0.650444 +0.131313 0.656566 0.658555 +0.131313 0.666667 0.666667 +0.131313 0.676768 0.674778 +0.131313 0.686869 0.682890 +0.131313 0.696970 0.691001 +0.131313 0.707071 0.699112 +0.131313 0.717172 0.707224 +0.131313 0.727273 0.715335 +0.131313 0.737374 0.723447 +0.131313 0.747475 0.731558 +0.131313 0.757576 0.739669 +0.131313 0.767677 0.747781 +0.131313 0.777778 0.755892 +0.131313 0.787879 0.764004 +0.131313 0.797980 0.772115 +0.131313 0.808081 0.780227 +0.131313 0.818182 0.788338 +0.131313 0.828283 0.796449 +0.131313 0.838384 0.804561 +0.131313 0.848485 0.812672 +0.131313 0.858586 0.820784 +0.131313 0.868687 0.828895 +0.131313 0.878788 0.837006 +0.131313 0.888889 0.845118 +0.131313 0.898990 0.853229 +0.131313 0.909091 0.861341 +0.131313 0.919192 0.869452 +0.131313 0.929293 0.877564 +0.131313 0.939394 0.885675 +0.131313 0.949495 0.893786 +0.131313 0.959596 0.901898 +0.131313 0.969697 0.910009 +0.131313 0.979798 0.918121 +0.131313 0.989899 0.926232 +0.131313 1.000000 0.934343 + +0.141414 0.000000 0.141414 +0.141414 0.010101 0.149373 +0.141414 0.020202 0.157331 +0.141414 0.030303 0.165289 +0.141414 0.040404 0.173248 +0.141414 0.050505 0.181206 +0.141414 0.060606 0.189164 +0.141414 0.070707 0.197123 +0.141414 0.080808 0.205081 +0.141414 0.090909 0.213039 +0.141414 0.101010 0.220998 +0.141414 0.111111 0.228956 +0.141414 0.121212 0.236915 +0.141414 0.131313 0.244873 +0.141414 0.141414 0.252831 +0.141414 0.151515 0.260790 +0.141414 0.161616 0.268748 +0.141414 0.171717 0.276706 +0.141414 0.181818 0.284665 +0.141414 0.191919 0.292623 +0.141414 0.202020 0.300582 +0.141414 0.212121 0.308540 +0.141414 0.222222 0.316498 +0.141414 0.232323 0.324457 +0.141414 0.242424 0.332415 +0.141414 0.252525 0.340373 +0.141414 0.262626 0.348332 +0.141414 0.272727 0.356290 +0.141414 0.282828 0.364249 +0.141414 0.292929 0.372207 +0.141414 0.303030 0.380165 +0.141414 0.313131 0.388124 +0.141414 0.323232 0.396082 +0.141414 0.333333 0.404040 +0.141414 0.343434 0.411999 +0.141414 0.353535 0.419957 +0.141414 0.363636 0.427916 +0.141414 0.373737 0.435874 +0.141414 0.383838 0.443832 +0.141414 0.393939 0.451791 +0.141414 0.404040 0.459749 +0.141414 0.414141 0.467707 +0.141414 0.424242 0.475666 +0.141414 0.434343 0.483624 +0.141414 0.444444 0.491582 +0.141414 0.454545 0.499541 +0.141414 0.464646 0.507499 +0.141414 0.474747 0.515458 +0.141414 0.484848 0.523416 +0.141414 0.494949 0.531374 +0.141414 0.505051 0.539333 +0.141414 0.515152 0.547291 +0.141414 0.525253 0.555249 +0.141414 0.535354 0.563208 +0.141414 0.545455 0.571166 +0.141414 0.555556 0.579125 +0.141414 0.565657 0.587083 +0.141414 0.575758 0.595041 +0.141414 0.585859 0.603000 +0.141414 0.595960 0.610958 +0.141414 0.606061 0.618916 +0.141414 0.616162 0.626875 +0.141414 0.626263 0.634833 +0.141414 0.636364 0.642792 +0.141414 0.646465 0.650750 +0.141414 0.656566 0.658708 +0.141414 0.666667 0.666667 +0.141414 0.676768 0.674625 +0.141414 0.686869 0.682583 +0.141414 0.696970 0.690542 +0.141414 0.707071 0.698500 +0.141414 0.717172 0.706459 +0.141414 0.727273 0.714417 +0.141414 0.737374 0.722375 +0.141414 0.747475 0.730334 +0.141414 0.757576 0.738292 +0.141414 0.767677 0.746250 +0.141414 0.777778 0.754209 +0.141414 0.787879 0.762167 +0.141414 0.797980 0.770125 +0.141414 0.808081 0.778084 +0.141414 0.818182 0.786042 +0.141414 0.828283 0.794001 +0.141414 0.838384 0.801959 +0.141414 0.848485 0.809917 +0.141414 0.858586 0.817876 +0.141414 0.868687 0.825834 +0.141414 0.878788 0.833792 +0.141414 0.888889 0.841751 +0.141414 0.898990 0.849709 +0.141414 0.909091 0.857668 +0.141414 0.919192 0.865626 +0.141414 0.929293 0.873584 +0.141414 0.939394 0.881543 +0.141414 0.949495 0.889501 +0.141414 0.959596 0.897459 +0.141414 0.969697 0.905418 +0.141414 0.979798 0.913376 +0.141414 0.989899 0.921335 +0.141414 1.000000 0.929293 + +0.151515 0.000000 0.151515 +0.151515 0.010101 0.159320 +0.151515 0.020202 0.167126 +0.151515 0.030303 0.174931 +0.151515 0.040404 0.182736 +0.151515 0.050505 0.190542 +0.151515 0.060606 0.198347 +0.151515 0.070707 0.206152 +0.151515 0.080808 0.213958 +0.151515 0.090909 0.221763 +0.151515 0.101010 0.229568 +0.151515 0.111111 0.237374 +0.151515 0.121212 0.245179 +0.151515 0.131313 0.252984 +0.151515 0.141414 0.260790 +0.151515 0.151515 0.268595 +0.151515 0.161616 0.276400 +0.151515 0.171717 0.284206 +0.151515 0.181818 0.292011 +0.151515 0.191919 0.299816 +0.151515 0.202020 0.307622 +0.151515 0.212121 0.315427 +0.151515 0.222222 0.323232 +0.151515 0.232323 0.331038 +0.151515 0.242424 0.338843 +0.151515 0.252525 0.346648 +0.151515 0.262626 0.354454 +0.151515 0.272727 0.362259 +0.151515 0.282828 0.370064 +0.151515 0.292929 0.377870 +0.151515 0.303030 0.385675 +0.151515 0.313131 0.393480 +0.151515 0.323232 0.401286 +0.151515 0.333333 0.409091 +0.151515 0.343434 0.416896 +0.151515 0.353535 0.424702 +0.151515 0.363636 0.432507 +0.151515 0.373737 0.440312 +0.151515 0.383838 0.448118 +0.151515 0.393939 0.455923 +0.151515 0.404040 0.463728 +0.151515 0.414141 0.471534 +0.151515 0.424242 0.479339 +0.151515 0.434343 0.487144 +0.151515 0.444444 0.494949 +0.151515 0.454545 0.502755 +0.151515 0.464646 0.510560 +0.151515 0.474747 0.518365 +0.151515 0.484848 0.526171 +0.151515 0.494949 0.533976 +0.151515 0.505051 0.541781 +0.151515 0.515152 0.549587 +0.151515 0.525253 0.557392 +0.151515 0.535354 0.565197 +0.151515 0.545455 0.573003 +0.151515 0.555556 0.580808 +0.151515 0.565657 0.588613 +0.151515 0.575758 0.596419 +0.151515 0.585859 0.604224 +0.151515 0.595960 0.612029 +0.151515 0.606061 0.619835 +0.151515 0.616162 0.627640 +0.151515 0.626263 0.635445 +0.151515 0.636364 0.643251 +0.151515 0.646465 0.651056 +0.151515 0.656566 0.658861 +0.151515 0.666667 0.666667 +0.151515 0.676768 0.674472 +0.151515 0.686869 0.682277 +0.151515 0.696970 0.690083 +0.151515 0.707071 0.697888 +0.151515 0.717172 0.705693 +0.151515 0.727273 0.713499 +0.151515 0.737374 0.721304 +0.151515 0.747475 0.729109 +0.151515 0.757576 0.736915 +0.151515 0.767677 0.744720 +0.151515 0.777778 0.752525 +0.151515 0.787879 0.760331 +0.151515 0.797980 0.768136 +0.151515 0.808081 0.775941 +0.151515 0.818182 0.783747 +0.151515 0.828283 0.791552 +0.151515 0.838384 0.799357 +0.151515 0.848485 0.807163 +0.151515 0.858586 0.814968 +0.151515 0.868687 0.822773 +0.151515 0.878788 0.830579 +0.151515 0.888889 0.838384 +0.151515 0.898990 0.846189 +0.151515 0.909091 0.853994 +0.151515 0.919192 0.861800 +0.151515 0.929293 0.869605 +0.151515 0.939394 0.877410 +0.151515 0.949495 0.885216 +0.151515 0.959596 0.893021 +0.151515 0.969697 0.900826 +0.151515 0.979798 0.908632 +0.151515 0.989899 0.916437 +0.151515 1.000000 0.924242 + +0.161616 0.000000 0.161616 +0.161616 0.010101 0.169268 +0.161616 0.020202 0.176921 +0.161616 0.030303 0.184573 +0.161616 0.040404 0.192225 +0.161616 0.050505 0.199878 +0.161616 0.060606 0.207530 +0.161616 0.070707 0.215182 +0.161616 0.080808 0.222834 +0.161616 0.090909 0.230487 +0.161616 0.101010 0.238139 +0.161616 0.111111 0.245791 +0.161616 0.121212 0.253444 +0.161616 0.131313 0.261096 +0.161616 0.141414 0.268748 +0.161616 0.151515 0.276400 +0.161616 0.161616 0.284053 +0.161616 0.171717 0.291705 +0.161616 0.181818 0.299357 +0.161616 0.191919 0.307009 +0.161616 0.202020 0.314662 +0.161616 0.212121 0.322314 +0.161616 0.222222 0.329966 +0.161616 0.232323 0.337619 +0.161616 0.242424 0.345271 +0.161616 0.252525 0.352923 +0.161616 0.262626 0.360575 +0.161616 0.272727 0.368228 +0.161616 0.282828 0.375880 +0.161616 0.292929 0.383532 +0.161616 0.303030 0.391185 +0.161616 0.313131 0.398837 +0.161616 0.323232 0.406489 +0.161616 0.333333 0.414141 +0.161616 0.343434 0.421794 +0.161616 0.353535 0.429446 +0.161616 0.363636 0.437098 +0.161616 0.373737 0.444751 +0.161616 0.383838 0.452403 +0.161616 0.393939 0.460055 +0.161616 0.404040 0.467707 +0.161616 0.414141 0.475360 +0.161616 0.424242 0.483012 +0.161616 0.434343 0.490664 +0.161616 0.444444 0.498316 +0.161616 0.454545 0.505969 +0.161616 0.464646 0.513621 +0.161616 0.474747 0.521273 +0.161616 0.484848 0.528926 +0.161616 0.494949 0.536578 +0.161616 0.505051 0.544230 +0.161616 0.515152 0.551882 +0.161616 0.525253 0.559535 +0.161616 0.535354 0.567187 +0.161616 0.545455 0.574839 +0.161616 0.555556 0.582492 +0.161616 0.565657 0.590144 +0.161616 0.575758 0.597796 +0.161616 0.585859 0.605448 +0.161616 0.595960 0.613101 +0.161616 0.606061 0.620753 +0.161616 0.616162 0.628405 +0.161616 0.626263 0.636058 +0.161616 0.636364 0.643710 +0.161616 0.646465 0.651362 +0.161616 0.656566 0.659014 +0.161616 0.666667 0.666667 +0.161616 0.676768 0.674319 +0.161616 0.686869 0.681971 +0.161616 0.696970 0.689624 +0.161616 0.707071 0.697276 +0.161616 0.717172 0.704928 +0.161616 0.727273 0.712580 +0.161616 0.737374 0.720233 +0.161616 0.747475 0.727885 +0.161616 0.757576 0.735537 +0.161616 0.767677 0.743189 +0.161616 0.777778 0.750842 +0.161616 0.787879 0.758494 +0.161616 0.797980 0.766146 +0.161616 0.808081 0.773799 +0.161616 0.818182 0.781451 +0.161616 0.828283 0.789103 +0.161616 0.838384 0.796755 +0.161616 0.848485 0.804408 +0.161616 0.858586 0.812060 +0.161616 0.868687 0.819712 +0.161616 0.878788 0.827365 +0.161616 0.888889 0.835017 +0.161616 0.898990 0.842669 +0.161616 0.909091 0.850321 +0.161616 0.919192 0.857974 +0.161616 0.929293 0.865626 +0.161616 0.939394 0.873278 +0.161616 0.949495 0.880931 +0.161616 0.959596 0.888583 +0.161616 0.969697 0.896235 +0.161616 0.979798 0.903887 +0.161616 0.989899 0.911540 +0.161616 1.000000 0.919192 + +0.171717 0.000000 0.171717 +0.171717 0.010101 0.179216 +0.171717 0.020202 0.186716 +0.171717 0.030303 0.194215 +0.171717 0.040404 0.201714 +0.171717 0.050505 0.209213 +0.171717 0.060606 0.216713 +0.171717 0.070707 0.224212 +0.171717 0.080808 0.231711 +0.171717 0.090909 0.239210 +0.171717 0.101010 0.246710 +0.171717 0.111111 0.254209 +0.171717 0.121212 0.261708 +0.171717 0.131313 0.269207 +0.171717 0.141414 0.276706 +0.171717 0.151515 0.284206 +0.171717 0.161616 0.291705 +0.171717 0.171717 0.299204 +0.171717 0.181818 0.306703 +0.171717 0.191919 0.314203 +0.171717 0.202020 0.321702 +0.171717 0.212121 0.329201 +0.171717 0.222222 0.336700 +0.171717 0.232323 0.344200 +0.171717 0.242424 0.351699 +0.171717 0.252525 0.359198 +0.171717 0.262626 0.366697 +0.171717 0.272727 0.374197 +0.171717 0.282828 0.381696 +0.171717 0.292929 0.389195 +0.171717 0.303030 0.396694 +0.171717 0.313131 0.404193 +0.171717 0.323232 0.411693 +0.171717 0.333333 0.419192 +0.171717 0.343434 0.426691 +0.171717 0.353535 0.434190 +0.171717 0.363636 0.441690 +0.171717 0.373737 0.449189 +0.171717 0.383838 0.456688 +0.171717 0.393939 0.464187 +0.171717 0.404040 0.471687 +0.171717 0.414141 0.479186 +0.171717 0.424242 0.486685 +0.171717 0.434343 0.494184 +0.171717 0.444444 0.501684 +0.171717 0.454545 0.509183 +0.171717 0.464646 0.516682 +0.171717 0.474747 0.524181 +0.171717 0.484848 0.531680 +0.171717 0.494949 0.539180 +0.171717 0.505051 0.546679 +0.171717 0.515152 0.554178 +0.171717 0.525253 0.561677 +0.171717 0.535354 0.569177 +0.171717 0.545455 0.576676 +0.171717 0.555556 0.584175 +0.171717 0.565657 0.591674 +0.171717 0.575758 0.599174 +0.171717 0.585859 0.606673 +0.171717 0.595960 0.614172 +0.171717 0.606061 0.621671 +0.171717 0.616162 0.629170 +0.171717 0.626263 0.636670 +0.171717 0.636364 0.644169 +0.171717 0.646465 0.651668 +0.171717 0.656566 0.659167 +0.171717 0.666667 0.666667 +0.171717 0.676768 0.674166 +0.171717 0.686869 0.681665 +0.171717 0.696970 0.689164 +0.171717 0.707071 0.696664 +0.171717 0.717172 0.704163 +0.171717 0.727273 0.711662 +0.171717 0.737374 0.719161 +0.171717 0.747475 0.726661 +0.171717 0.757576 0.734160 +0.171717 0.767677 0.741659 +0.171717 0.777778 0.749158 +0.171717 0.787879 0.756657 +0.171717 0.797980 0.764157 +0.171717 0.808081 0.771656 +0.171717 0.818182 0.779155 +0.171717 0.828283 0.786654 +0.171717 0.838384 0.794154 +0.171717 0.848485 0.801653 +0.171717 0.858586 0.809152 +0.171717 0.868687 0.816651 +0.171717 0.878788 0.824151 +0.171717 0.888889 0.831650 +0.171717 0.898990 0.839149 +0.171717 0.909091 0.846648 +0.171717 0.919192 0.854148 +0.171717 0.929293 0.861647 +0.171717 0.939394 0.869146 +0.171717 0.949495 0.876645 +0.171717 0.959596 0.884144 +0.171717 0.969697 0.891644 +0.171717 0.979798 0.899143 +0.171717 0.989899 0.906642 +0.171717 1.000000 0.914141 + +0.181818 0.000000 0.181818 +0.181818 0.010101 0.189164 +0.181818 0.020202 0.196511 +0.181818 0.030303 0.203857 +0.181818 0.040404 0.211203 +0.181818 0.050505 0.218549 +0.181818 0.060606 0.225895 +0.181818 0.070707 0.233242 +0.181818 0.080808 0.240588 +0.181818 0.090909 0.247934 +0.181818 0.101010 0.255280 +0.181818 0.111111 0.262626 +0.181818 0.121212 0.269972 +0.181818 0.131313 0.277319 +0.181818 0.141414 0.284665 +0.181818 0.151515 0.292011 +0.181818 0.161616 0.299357 +0.181818 0.171717 0.306703 +0.181818 0.181818 0.314050 +0.181818 0.191919 0.321396 +0.181818 0.202020 0.328742 +0.181818 0.212121 0.336088 +0.181818 0.222222 0.343434 +0.181818 0.232323 0.350781 +0.181818 0.242424 0.358127 +0.181818 0.252525 0.365473 +0.181818 0.262626 0.372819 +0.181818 0.272727 0.380165 +0.181818 0.282828 0.387511 +0.181818 0.292929 0.394858 +0.181818 0.303030 0.402204 +0.181818 0.313131 0.409550 +0.181818 0.323232 0.416896 +0.181818 0.333333 0.424242 +0.181818 0.343434 0.431589 +0.181818 0.353535 0.438935 +0.181818 0.363636 0.446281 +0.181818 0.373737 0.453627 +0.181818 0.383838 0.460973 +0.181818 0.393939 0.468320 +0.181818 0.404040 0.475666 +0.181818 0.414141 0.483012 +0.181818 0.424242 0.490358 +0.181818 0.434343 0.497704 +0.181818 0.444444 0.505051 +0.181818 0.454545 0.512397 +0.181818 0.464646 0.519743 +0.181818 0.474747 0.527089 +0.181818 0.484848 0.534435 +0.181818 0.494949 0.541781 +0.181818 0.505051 0.549128 +0.181818 0.515152 0.556474 +0.181818 0.525253 0.563820 +0.181818 0.535354 0.571166 +0.181818 0.545455 0.578512 +0.181818 0.555556 0.585859 +0.181818 0.565657 0.593205 +0.181818 0.575758 0.600551 +0.181818 0.585859 0.607897 +0.181818 0.595960 0.615243 +0.181818 0.606061 0.622590 +0.181818 0.616162 0.629936 +0.181818 0.626263 0.637282 +0.181818 0.636364 0.644628 +0.181818 0.646465 0.651974 +0.181818 0.656566 0.659320 +0.181818 0.666667 0.666667 +0.181818 0.676768 0.674013 +0.181818 0.686869 0.681359 +0.181818 0.696970 0.688705 +0.181818 0.707071 0.696051 +0.181818 0.717172 0.703398 +0.181818 0.727273 0.710744 +0.181818 0.737374 0.718090 +0.181818 0.747475 0.725436 +0.181818 0.757576 0.732782 +0.181818 0.767677 0.740129 +0.181818 0.777778 0.747475 +0.181818 0.787879 0.754821 +0.181818 0.797980 0.762167 +0.181818 0.808081 0.769513 +0.181818 0.818182 0.776860 +0.181818 0.828283 0.784206 +0.181818 0.838384 0.791552 +0.181818 0.848485 0.798898 +0.181818 0.858586 0.806244 +0.181818 0.868687 0.813590 +0.181818 0.878788 0.820937 +0.181818 0.888889 0.828283 +0.181818 0.898990 0.835629 +0.181818 0.909091 0.842975 +0.181818 0.919192 0.850321 +0.181818 0.929293 0.857668 +0.181818 0.939394 0.865014 +0.181818 0.949495 0.872360 +0.181818 0.959596 0.879706 +0.181818 0.969697 0.887052 +0.181818 0.979798 0.894399 +0.181818 0.989899 0.901745 +0.181818 1.000000 0.909091 + +0.191919 0.000000 0.191919 +0.191919 0.010101 0.199112 +0.191919 0.020202 0.206305 +0.191919 0.030303 0.213499 +0.191919 0.040404 0.220692 +0.191919 0.050505 0.227885 +0.191919 0.060606 0.235078 +0.191919 0.070707 0.242271 +0.191919 0.080808 0.249464 +0.191919 0.090909 0.256657 +0.191919 0.101010 0.263851 +0.191919 0.111111 0.271044 +0.191919 0.121212 0.278237 +0.191919 0.131313 0.285430 +0.191919 0.141414 0.292623 +0.191919 0.151515 0.299816 +0.191919 0.161616 0.307009 +0.191919 0.171717 0.314203 +0.191919 0.181818 0.321396 +0.191919 0.191919 0.328589 +0.191919 0.202020 0.335782 +0.191919 0.212121 0.342975 +0.191919 0.222222 0.350168 +0.191919 0.232323 0.357361 +0.191919 0.242424 0.364555 +0.191919 0.252525 0.371748 +0.191919 0.262626 0.378941 +0.191919 0.272727 0.386134 +0.191919 0.282828 0.393327 +0.191919 0.292929 0.400520 +0.191919 0.303030 0.407713 +0.191919 0.313131 0.414907 +0.191919 0.323232 0.422100 +0.191919 0.333333 0.429293 +0.191919 0.343434 0.436486 +0.191919 0.353535 0.443679 +0.191919 0.363636 0.450872 +0.191919 0.373737 0.458066 +0.191919 0.383838 0.465259 +0.191919 0.393939 0.472452 +0.191919 0.404040 0.479645 +0.191919 0.414141 0.486838 +0.191919 0.424242 0.494031 +0.191919 0.434343 0.501224 +0.191919 0.444444 0.508418 +0.191919 0.454545 0.515611 +0.191919 0.464646 0.522804 +0.191919 0.474747 0.529997 +0.191919 0.484848 0.537190 +0.191919 0.494949 0.544383 +0.191919 0.505051 0.551576 +0.191919 0.515152 0.558770 +0.191919 0.525253 0.565963 +0.191919 0.535354 0.573156 +0.191919 0.545455 0.580349 +0.191919 0.555556 0.587542 +0.191919 0.565657 0.594735 +0.191919 0.575758 0.601928 +0.191919 0.585859 0.609122 +0.191919 0.595960 0.616315 +0.191919 0.606061 0.623508 +0.191919 0.616162 0.630701 +0.191919 0.626263 0.637894 +0.191919 0.636364 0.645087 +0.191919 0.646465 0.652280 +0.191919 0.656566 0.659474 +0.191919 0.666667 0.666667 +0.191919 0.676768 0.673860 +0.191919 0.686869 0.681053 +0.191919 0.696970 0.688246 +0.191919 0.707071 0.695439 +0.191919 0.717172 0.702632 +0.191919 0.727273 0.709826 +0.191919 0.737374 0.717019 +0.191919 0.747475 0.724212 +0.191919 0.757576 0.731405 +0.191919 0.767677 0.738598 +0.191919 0.777778 0.745791 +0.191919 0.787879 0.752984 +0.191919 0.797980 0.760178 +0.191919 0.808081 0.767371 +0.191919 0.818182 0.774564 +0.191919 0.828283 0.781757 +0.191919 0.838384 0.788950 +0.191919 0.848485 0.796143 +0.191919 0.858586 0.803336 +0.191919 0.868687 0.810530 +0.191919 0.878788 0.817723 +0.191919 0.888889 0.824916 +0.191919 0.898990 0.832109 +0.191919 0.909091 0.839302 +0.191919 0.919192 0.846495 +0.191919 0.929293 0.853688 +0.191919 0.939394 0.860882 +0.191919 0.949495 0.868075 +0.191919 0.959596 0.875268 +0.191919 0.969697 0.882461 +0.191919 0.979798 0.889654 +0.191919 0.989899 0.896847 +0.191919 1.000000 0.904040 + +0.202020 0.000000 0.202020 +0.202020 0.010101 0.209060 +0.202020 0.020202 0.216100 +0.202020 0.030303 0.223140 +0.202020 0.040404 0.230181 +0.202020 0.050505 0.237221 +0.202020 0.060606 0.244261 +0.202020 0.070707 0.251301 +0.202020 0.080808 0.258341 +0.202020 0.090909 0.265381 +0.202020 0.101010 0.272421 +0.202020 0.111111 0.279461 +0.202020 0.121212 0.286501 +0.202020 0.131313 0.293541 +0.202020 0.141414 0.300582 +0.202020 0.151515 0.307622 +0.202020 0.161616 0.314662 +0.202020 0.171717 0.321702 +0.202020 0.181818 0.328742 +0.202020 0.191919 0.335782 +0.202020 0.202020 0.342822 +0.202020 0.212121 0.349862 +0.202020 0.222222 0.356902 +0.202020 0.232323 0.363942 +0.202020 0.242424 0.370983 +0.202020 0.252525 0.378023 +0.202020 0.262626 0.385063 +0.202020 0.272727 0.392103 +0.202020 0.282828 0.399143 +0.202020 0.292929 0.406183 +0.202020 0.303030 0.413223 +0.202020 0.313131 0.420263 +0.202020 0.323232 0.427303 +0.202020 0.333333 0.434343 +0.202020 0.343434 0.441384 +0.202020 0.353535 0.448424 +0.202020 0.363636 0.455464 +0.202020 0.373737 0.462504 +0.202020 0.383838 0.469544 +0.202020 0.393939 0.476584 +0.202020 0.404040 0.483624 +0.202020 0.414141 0.490664 +0.202020 0.424242 0.497704 +0.202020 0.434343 0.504744 +0.202020 0.444444 0.511785 +0.202020 0.454545 0.518825 +0.202020 0.464646 0.525865 +0.202020 0.474747 0.532905 +0.202020 0.484848 0.539945 +0.202020 0.494949 0.546985 +0.202020 0.505051 0.554025 +0.202020 0.515152 0.561065 +0.202020 0.525253 0.568105 +0.202020 0.535354 0.575145 +0.202020 0.545455 0.582185 +0.202020 0.555556 0.589226 +0.202020 0.565657 0.596266 +0.202020 0.575758 0.603306 +0.202020 0.585859 0.610346 +0.202020 0.595960 0.617386 +0.202020 0.606061 0.624426 +0.202020 0.616162 0.631466 +0.202020 0.626263 0.638506 +0.202020 0.636364 0.645546 +0.202020 0.646465 0.652586 +0.202020 0.656566 0.659627 +0.202020 0.666667 0.666667 +0.202020 0.676768 0.673707 +0.202020 0.686869 0.680747 +0.202020 0.696970 0.687787 +0.202020 0.707071 0.694827 +0.202020 0.717172 0.701867 +0.202020 0.727273 0.708907 +0.202020 0.737374 0.715947 +0.202020 0.747475 0.722987 +0.202020 0.757576 0.730028 +0.202020 0.767677 0.737068 +0.202020 0.777778 0.744108 +0.202020 0.787879 0.751148 +0.202020 0.797980 0.758188 +0.202020 0.808081 0.765228 +0.202020 0.818182 0.772268 +0.202020 0.828283 0.779308 +0.202020 0.838384 0.786348 +0.202020 0.848485 0.793388 +0.202020 0.858586 0.800429 +0.202020 0.868687 0.807469 +0.202020 0.878788 0.814509 +0.202020 0.888889 0.821549 +0.202020 0.898990 0.828589 +0.202020 0.909091 0.835629 +0.202020 0.919192 0.842669 +0.202020 0.929293 0.849709 +0.202020 0.939394 0.856749 +0.202020 0.949495 0.863789 +0.202020 0.959596 0.870830 +0.202020 0.969697 0.877870 +0.202020 0.979798 0.884910 +0.202020 0.989899 0.891950 +0.202020 1.000000 0.898990 + +0.212121 0.000000 0.212121 +0.212121 0.010101 0.219008 +0.212121 0.020202 0.225895 +0.212121 0.030303 0.232782 +0.212121 0.040404 0.239669 +0.212121 0.050505 0.246556 +0.212121 0.060606 0.253444 +0.212121 0.070707 0.260331 +0.212121 0.080808 0.267218 +0.212121 0.090909 0.274105 +0.212121 0.101010 0.280992 +0.212121 0.111111 0.287879 +0.212121 0.121212 0.294766 +0.212121 0.131313 0.301653 +0.212121 0.141414 0.308540 +0.212121 0.151515 0.315427 +0.212121 0.161616 0.322314 +0.212121 0.171717 0.329201 +0.212121 0.181818 0.336088 +0.212121 0.191919 0.342975 +0.212121 0.202020 0.349862 +0.212121 0.212121 0.356749 +0.212121 0.222222 0.363636 +0.212121 0.232323 0.370523 +0.212121 0.242424 0.377410 +0.212121 0.252525 0.384298 +0.212121 0.262626 0.391185 +0.212121 0.272727 0.398072 +0.212121 0.282828 0.404959 +0.212121 0.292929 0.411846 +0.212121 0.303030 0.418733 +0.212121 0.313131 0.425620 +0.212121 0.323232 0.432507 +0.212121 0.333333 0.439394 +0.212121 0.343434 0.446281 +0.212121 0.353535 0.453168 +0.212121 0.363636 0.460055 +0.212121 0.373737 0.466942 +0.212121 0.383838 0.473829 +0.212121 0.393939 0.480716 +0.212121 0.404040 0.487603 +0.212121 0.414141 0.494490 +0.212121 0.424242 0.501377 +0.212121 0.434343 0.508264 +0.212121 0.444444 0.515152 +0.212121 0.454545 0.522039 +0.212121 0.464646 0.528926 +0.212121 0.474747 0.535813 +0.212121 0.484848 0.542700 +0.212121 0.494949 0.549587 +0.212121 0.505051 0.556474 +0.212121 0.515152 0.563361 +0.212121 0.525253 0.570248 +0.212121 0.535354 0.577135 +0.212121 0.545455 0.584022 +0.212121 0.555556 0.590909 +0.212121 0.565657 0.597796 +0.212121 0.575758 0.604683 +0.212121 0.585859 0.611570 +0.212121 0.595960 0.618457 +0.212121 0.606061 0.625344 +0.212121 0.616162 0.632231 +0.212121 0.626263 0.639118 +0.212121 0.636364 0.646006 +0.212121 0.646465 0.652893 +0.212121 0.656566 0.659780 +0.212121 0.666667 0.666667 +0.212121 0.676768 0.673554 +0.212121 0.686869 0.680441 +0.212121 0.696970 0.687328 +0.212121 0.707071 0.694215 +0.212121 0.717172 0.701102 +0.212121 0.727273 0.707989 +0.212121 0.737374 0.714876 +0.212121 0.747475 0.721763 +0.212121 0.757576 0.728650 +0.212121 0.767677 0.735537 +0.212121 0.777778 0.742424 +0.212121 0.787879 0.749311 +0.212121 0.797980 0.756198 +0.212121 0.808081 0.763085 +0.212121 0.818182 0.769972 +0.212121 0.828283 0.776860 +0.212121 0.838384 0.783747 +0.212121 0.848485 0.790634 +0.212121 0.858586 0.797521 +0.212121 0.868687 0.804408 +0.212121 0.878788 0.811295 +0.212121 0.888889 0.818182 +0.212121 0.898990 0.825069 +0.212121 0.909091 0.831956 +0.212121 0.919192 0.838843 +0.212121 0.929293 0.845730 +0.212121 0.939394 0.852617 +0.212121 0.949495 0.859504 +0.212121 0.959596 0.866391 +0.212121 0.969697 0.873278 +0.212121 0.979798 0.880165 +0.212121 0.989899 0.887052 +0.212121 1.000000 0.893939 + +0.222222 0.000000 0.222222 +0.222222 0.010101 0.228956 +0.222222 0.020202 0.235690 +0.222222 0.030303 0.242424 +0.222222 0.040404 0.249158 +0.222222 0.050505 0.255892 +0.222222 0.060606 0.262626 +0.222222 0.070707 0.269360 +0.222222 0.080808 0.276094 +0.222222 0.090909 0.282828 +0.222222 0.101010 0.289562 +0.222222 0.111111 0.296296 +0.222222 0.121212 0.303030 +0.222222 0.131313 0.309764 +0.222222 0.141414 0.316498 +0.222222 0.151515 0.323232 +0.222222 0.161616 0.329966 +0.222222 0.171717 0.336700 +0.222222 0.181818 0.343434 +0.222222 0.191919 0.350168 +0.222222 0.202020 0.356902 +0.222222 0.212121 0.363636 +0.222222 0.222222 0.370370 +0.222222 0.232323 0.377104 +0.222222 0.242424 0.383838 +0.222222 0.252525 0.390572 +0.222222 0.262626 0.397306 +0.222222 0.272727 0.404040 +0.222222 0.282828 0.410774 +0.222222 0.292929 0.417508 +0.222222 0.303030 0.424242 +0.222222 0.313131 0.430976 +0.222222 0.323232 0.437710 +0.222222 0.333333 0.444444 +0.222222 0.343434 0.451178 +0.222222 0.353535 0.457912 +0.222222 0.363636 0.464646 +0.222222 0.373737 0.471380 +0.222222 0.383838 0.478114 +0.222222 0.393939 0.484848 +0.222222 0.404040 0.491582 +0.222222 0.414141 0.498316 +0.222222 0.424242 0.505051 +0.222222 0.434343 0.511785 +0.222222 0.444444 0.518519 +0.222222 0.454545 0.525253 +0.222222 0.464646 0.531987 +0.222222 0.474747 0.538721 +0.222222 0.484848 0.545455 +0.222222 0.494949 0.552189 +0.222222 0.505051 0.558923 +0.222222 0.515152 0.565657 +0.222222 0.525253 0.572391 +0.222222 0.535354 0.579125 +0.222222 0.545455 0.585859 +0.222222 0.555556 0.592593 +0.222222 0.565657 0.599327 +0.222222 0.575758 0.606061 +0.222222 0.585859 0.612795 +0.222222 0.595960 0.619529 +0.222222 0.606061 0.626263 +0.222222 0.616162 0.632997 +0.222222 0.626263 0.639731 +0.222222 0.636364 0.646465 +0.222222 0.646465 0.653199 +0.222222 0.656566 0.659933 +0.222222 0.666667 0.666667 +0.222222 0.676768 0.673401 +0.222222 0.686869 0.680135 +0.222222 0.696970 0.686869 +0.222222 0.707071 0.693603 +0.222222 0.717172 0.700337 +0.222222 0.727273 0.707071 +0.222222 0.737374 0.713805 +0.222222 0.747475 0.720539 +0.222222 0.757576 0.727273 +0.222222 0.767677 0.734007 +0.222222 0.777778 0.740741 +0.222222 0.787879 0.747475 +0.222222 0.797980 0.754209 +0.222222 0.808081 0.760943 +0.222222 0.818182 0.767677 +0.222222 0.828283 0.774411 +0.222222 0.838384 0.781145 +0.222222 0.848485 0.787879 +0.222222 0.858586 0.794613 +0.222222 0.868687 0.801347 +0.222222 0.878788 0.808081 +0.222222 0.888889 0.814815 +0.222222 0.898990 0.821549 +0.222222 0.909091 0.828283 +0.222222 0.919192 0.835017 +0.222222 0.929293 0.841751 +0.222222 0.939394 0.848485 +0.222222 0.949495 0.855219 +0.222222 0.959596 0.861953 +0.222222 0.969697 0.868687 +0.222222 0.979798 0.875421 +0.222222 0.989899 0.882155 +0.222222 1.000000 0.888889 + +0.232323 0.000000 0.232323 +0.232323 0.010101 0.238904 +0.232323 0.020202 0.245485 +0.232323 0.030303 0.252066 +0.232323 0.040404 0.258647 +0.232323 0.050505 0.265228 +0.232323 0.060606 0.271809 +0.232323 0.070707 0.278390 +0.232323 0.080808 0.284971 +0.232323 0.090909 0.291552 +0.232323 0.101010 0.298133 +0.232323 0.111111 0.304714 +0.232323 0.121212 0.311295 +0.232323 0.131313 0.317876 +0.232323 0.141414 0.324457 +0.232323 0.151515 0.331038 +0.232323 0.161616 0.337619 +0.232323 0.171717 0.344200 +0.232323 0.181818 0.350781 +0.232323 0.191919 0.357361 +0.232323 0.202020 0.363942 +0.232323 0.212121 0.370523 +0.232323 0.222222 0.377104 +0.232323 0.232323 0.383685 +0.232323 0.242424 0.390266 +0.232323 0.252525 0.396847 +0.232323 0.262626 0.403428 +0.232323 0.272727 0.410009 +0.232323 0.282828 0.416590 +0.232323 0.292929 0.423171 +0.232323 0.303030 0.429752 +0.232323 0.313131 0.436333 +0.232323 0.323232 0.442914 +0.232323 0.333333 0.449495 +0.232323 0.343434 0.456076 +0.232323 0.353535 0.462657 +0.232323 0.363636 0.469238 +0.232323 0.373737 0.475819 +0.232323 0.383838 0.482400 +0.232323 0.393939 0.488981 +0.232323 0.404040 0.495562 +0.232323 0.414141 0.502143 +0.232323 0.424242 0.508724 +0.232323 0.434343 0.515305 +0.232323 0.444444 0.521886 +0.232323 0.454545 0.528466 +0.232323 0.464646 0.535047 +0.232323 0.474747 0.541628 +0.232323 0.484848 0.548209 +0.232323 0.494949 0.554790 +0.232323 0.505051 0.561371 +0.232323 0.515152 0.567952 +0.232323 0.525253 0.574533 +0.232323 0.535354 0.581114 +0.232323 0.545455 0.587695 +0.232323 0.555556 0.594276 +0.232323 0.565657 0.600857 +0.232323 0.575758 0.607438 +0.232323 0.585859 0.614019 +0.232323 0.595960 0.620600 +0.232323 0.606061 0.627181 +0.232323 0.616162 0.633762 +0.232323 0.626263 0.640343 +0.232323 0.636364 0.646924 +0.232323 0.646465 0.653505 +0.232323 0.656566 0.660086 +0.232323 0.666667 0.666667 +0.232323 0.676768 0.673248 +0.232323 0.686869 0.679829 +0.232323 0.696970 0.686410 +0.232323 0.707071 0.692991 +0.232323 0.717172 0.699571 +0.232323 0.727273 0.706152 +0.232323 0.737374 0.712733 +0.232323 0.747475 0.719314 +0.232323 0.757576 0.725895 +0.232323 0.767677 0.732476 +0.232323 0.777778 0.739057 +0.232323 0.787879 0.745638 +0.232323 0.797980 0.752219 +0.232323 0.808081 0.758800 +0.232323 0.818182 0.765381 +0.232323 0.828283 0.771962 +0.232323 0.838384 0.778543 +0.232323 0.848485 0.785124 +0.232323 0.858586 0.791705 +0.232323 0.868687 0.798286 +0.232323 0.878788 0.804867 +0.232323 0.888889 0.811448 +0.232323 0.898990 0.818029 +0.232323 0.909091 0.824610 +0.232323 0.919192 0.831191 +0.232323 0.929293 0.837772 +0.232323 0.939394 0.844353 +0.232323 0.949495 0.850934 +0.232323 0.959596 0.857515 +0.232323 0.969697 0.864096 +0.232323 0.979798 0.870676 +0.232323 0.989899 0.877257 +0.232323 1.000000 0.883838 + +0.242424 0.000000 0.242424 +0.242424 0.010101 0.248852 +0.242424 0.020202 0.255280 +0.242424 0.030303 0.261708 +0.242424 0.040404 0.268136 +0.242424 0.050505 0.274564 +0.242424 0.060606 0.280992 +0.242424 0.070707 0.287420 +0.242424 0.080808 0.293848 +0.242424 0.090909 0.300275 +0.242424 0.101010 0.306703 +0.242424 0.111111 0.313131 +0.242424 0.121212 0.319559 +0.242424 0.131313 0.325987 +0.242424 0.141414 0.332415 +0.242424 0.151515 0.338843 +0.242424 0.161616 0.345271 +0.242424 0.171717 0.351699 +0.242424 0.181818 0.358127 +0.242424 0.191919 0.364555 +0.242424 0.202020 0.370983 +0.242424 0.212121 0.377410 +0.242424 0.222222 0.383838 +0.242424 0.232323 0.390266 +0.242424 0.242424 0.396694 +0.242424 0.252525 0.403122 +0.242424 0.262626 0.409550 +0.242424 0.272727 0.415978 +0.242424 0.282828 0.422406 +0.242424 0.292929 0.428834 +0.242424 0.303030 0.435262 +0.242424 0.313131 0.441690 +0.242424 0.323232 0.448118 +0.242424 0.333333 0.454545 +0.242424 0.343434 0.460973 +0.242424 0.353535 0.467401 +0.242424 0.363636 0.473829 +0.242424 0.373737 0.480257 +0.242424 0.383838 0.486685 +0.242424 0.393939 0.493113 +0.242424 0.404040 0.499541 +0.242424 0.414141 0.505969 +0.242424 0.424242 0.512397 +0.242424 0.434343 0.518825 +0.242424 0.444444 0.525253 +0.242424 0.454545 0.531680 +0.242424 0.464646 0.538108 +0.242424 0.474747 0.544536 +0.242424 0.484848 0.550964 +0.242424 0.494949 0.557392 +0.242424 0.505051 0.563820 +0.242424 0.515152 0.570248 +0.242424 0.525253 0.576676 +0.242424 0.535354 0.583104 +0.242424 0.545455 0.589532 +0.242424 0.555556 0.595960 +0.242424 0.565657 0.602388 +0.242424 0.575758 0.608815 +0.242424 0.585859 0.615243 +0.242424 0.595960 0.621671 +0.242424 0.606061 0.628099 +0.242424 0.616162 0.634527 +0.242424 0.626263 0.640955 +0.242424 0.636364 0.647383 +0.242424 0.646465 0.653811 +0.242424 0.656566 0.660239 +0.242424 0.666667 0.666667 +0.242424 0.676768 0.673095 +0.242424 0.686869 0.679522 +0.242424 0.696970 0.685950 +0.242424 0.707071 0.692378 +0.242424 0.717172 0.698806 +0.242424 0.727273 0.705234 +0.242424 0.737374 0.711662 +0.242424 0.747475 0.718090 +0.242424 0.757576 0.724518 +0.242424 0.767677 0.730946 +0.242424 0.777778 0.737374 +0.242424 0.787879 0.743802 +0.242424 0.797980 0.750230 +0.242424 0.808081 0.756657 +0.242424 0.818182 0.763085 +0.242424 0.828283 0.769513 +0.242424 0.838384 0.775941 +0.242424 0.848485 0.782369 +0.242424 0.858586 0.788797 +0.242424 0.868687 0.795225 +0.242424 0.878788 0.801653 +0.242424 0.888889 0.808081 +0.242424 0.898990 0.814509 +0.242424 0.909091 0.820937 +0.242424 0.919192 0.827365 +0.242424 0.929293 0.833792 +0.242424 0.939394 0.840220 +0.242424 0.949495 0.846648 +0.242424 0.959596 0.853076 +0.242424 0.969697 0.859504 +0.242424 0.979798 0.865932 +0.242424 0.989899 0.872360 +0.242424 1.000000 0.878788 + +0.252525 0.000000 0.252525 +0.252525 0.010101 0.258800 +0.252525 0.020202 0.265075 +0.252525 0.030303 0.271350 +0.252525 0.040404 0.277625 +0.252525 0.050505 0.283900 +0.252525 0.060606 0.290174 +0.252525 0.070707 0.296449 +0.252525 0.080808 0.302724 +0.252525 0.090909 0.308999 +0.252525 0.101010 0.315274 +0.252525 0.111111 0.321549 +0.252525 0.121212 0.327824 +0.252525 0.131313 0.334099 +0.252525 0.141414 0.340373 +0.252525 0.151515 0.346648 +0.252525 0.161616 0.352923 +0.252525 0.171717 0.359198 +0.252525 0.181818 0.365473 +0.252525 0.191919 0.371748 +0.252525 0.202020 0.378023 +0.252525 0.212121 0.384298 +0.252525 0.222222 0.390572 +0.252525 0.232323 0.396847 +0.252525 0.242424 0.403122 +0.252525 0.252525 0.409397 +0.252525 0.262626 0.415672 +0.252525 0.272727 0.421947 +0.252525 0.282828 0.428222 +0.252525 0.292929 0.434496 +0.252525 0.303030 0.440771 +0.252525 0.313131 0.447046 +0.252525 0.323232 0.453321 +0.252525 0.333333 0.459596 +0.252525 0.343434 0.465871 +0.252525 0.353535 0.472146 +0.252525 0.363636 0.478421 +0.252525 0.373737 0.484695 +0.252525 0.383838 0.490970 +0.252525 0.393939 0.497245 +0.252525 0.404040 0.503520 +0.252525 0.414141 0.509795 +0.252525 0.424242 0.516070 +0.252525 0.434343 0.522345 +0.252525 0.444444 0.528620 +0.252525 0.454545 0.534894 +0.252525 0.464646 0.541169 +0.252525 0.474747 0.547444 +0.252525 0.484848 0.553719 +0.252525 0.494949 0.559994 +0.252525 0.505051 0.566269 +0.252525 0.515152 0.572544 +0.252525 0.525253 0.578818 +0.252525 0.535354 0.585093 +0.252525 0.545455 0.591368 +0.252525 0.555556 0.597643 +0.252525 0.565657 0.603918 +0.252525 0.575758 0.610193 +0.252525 0.585859 0.616468 +0.252525 0.595960 0.622743 +0.252525 0.606061 0.629017 +0.252525 0.616162 0.635292 +0.252525 0.626263 0.641567 +0.252525 0.636364 0.647842 +0.252525 0.646465 0.654117 +0.252525 0.656566 0.660392 +0.252525 0.666667 0.666667 +0.252525 0.676768 0.672942 +0.252525 0.686869 0.679216 +0.252525 0.696970 0.685491 +0.252525 0.707071 0.691766 +0.252525 0.717172 0.698041 +0.252525 0.727273 0.704316 +0.252525 0.737374 0.710591 +0.252525 0.747475 0.716866 +0.252525 0.757576 0.723140 +0.252525 0.767677 0.729415 +0.252525 0.777778 0.735690 +0.252525 0.787879 0.741965 +0.252525 0.797980 0.748240 +0.252525 0.808081 0.754515 +0.252525 0.818182 0.760790 +0.252525 0.828283 0.767065 +0.252525 0.838384 0.773339 +0.252525 0.848485 0.779614 +0.252525 0.858586 0.785889 +0.252525 0.868687 0.792164 +0.252525 0.878788 0.798439 +0.252525 0.888889 0.804714 +0.252525 0.898990 0.810989 +0.252525 0.909091 0.817264 +0.252525 0.919192 0.823538 +0.252525 0.929293 0.829813 +0.252525 0.939394 0.836088 +0.252525 0.949495 0.842363 +0.252525 0.959596 0.848638 +0.252525 0.969697 0.854913 +0.252525 0.979798 0.861188 +0.252525 0.989899 0.867463 +0.252525 1.000000 0.873737 + +0.262626 0.000000 0.262626 +0.262626 0.010101 0.268748 +0.262626 0.020202 0.274870 +0.262626 0.030303 0.280992 +0.262626 0.040404 0.287114 +0.262626 0.050505 0.293235 +0.262626 0.060606 0.299357 +0.262626 0.070707 0.305479 +0.262626 0.080808 0.311601 +0.262626 0.090909 0.317723 +0.262626 0.101010 0.323845 +0.262626 0.111111 0.329966 +0.262626 0.121212 0.336088 +0.262626 0.131313 0.342210 +0.262626 0.141414 0.348332 +0.262626 0.151515 0.354454 +0.262626 0.161616 0.360575 +0.262626 0.171717 0.366697 +0.262626 0.181818 0.372819 +0.262626 0.191919 0.378941 +0.262626 0.202020 0.385063 +0.262626 0.212121 0.391185 +0.262626 0.222222 0.397306 +0.262626 0.232323 0.403428 +0.262626 0.242424 0.409550 +0.262626 0.252525 0.415672 +0.262626 0.262626 0.421794 +0.262626 0.272727 0.427916 +0.262626 0.282828 0.434037 +0.262626 0.292929 0.440159 +0.262626 0.303030 0.446281 +0.262626 0.313131 0.452403 +0.262626 0.323232 0.458525 +0.262626 0.333333 0.464646 +0.262626 0.343434 0.470768 +0.262626 0.353535 0.476890 +0.262626 0.363636 0.483012 +0.262626 0.373737 0.489134 +0.262626 0.383838 0.495256 +0.262626 0.393939 0.501377 +0.262626 0.404040 0.507499 +0.262626 0.414141 0.513621 +0.262626 0.424242 0.519743 +0.262626 0.434343 0.525865 +0.262626 0.444444 0.531987 +0.262626 0.454545 0.538108 +0.262626 0.464646 0.544230 +0.262626 0.474747 0.550352 +0.262626 0.484848 0.556474 +0.262626 0.494949 0.562596 +0.262626 0.505051 0.568717 +0.262626 0.515152 0.574839 +0.262626 0.525253 0.580961 +0.262626 0.535354 0.587083 +0.262626 0.545455 0.593205 +0.262626 0.555556 0.599327 +0.262626 0.565657 0.605448 +0.262626 0.575758 0.611570 +0.262626 0.585859 0.617692 +0.262626 0.595960 0.623814 +0.262626 0.606061 0.629936 +0.262626 0.616162 0.636058 +0.262626 0.626263 0.642179 +0.262626 0.636364 0.648301 +0.262626 0.646465 0.654423 +0.262626 0.656566 0.660545 +0.262626 0.666667 0.666667 +0.262626 0.676768 0.672788 +0.262626 0.686869 0.678910 +0.262626 0.696970 0.685032 +0.262626 0.707071 0.691154 +0.262626 0.717172 0.697276 +0.262626 0.727273 0.703398 +0.262626 0.737374 0.709519 +0.262626 0.747475 0.715641 +0.262626 0.757576 0.721763 +0.262626 0.767677 0.727885 +0.262626 0.777778 0.734007 +0.262626 0.787879 0.740129 +0.262626 0.797980 0.746250 +0.262626 0.808081 0.752372 +0.262626 0.818182 0.758494 +0.262626 0.828283 0.764616 +0.262626 0.838384 0.770738 +0.262626 0.848485 0.776860 +0.262626 0.858586 0.782981 +0.262626 0.868687 0.789103 +0.262626 0.878788 0.795225 +0.262626 0.888889 0.801347 +0.262626 0.898990 0.807469 +0.262626 0.909091 0.813590 +0.262626 0.919192 0.819712 +0.262626 0.929293 0.825834 +0.262626 0.939394 0.831956 +0.262626 0.949495 0.838078 +0.262626 0.959596 0.844200 +0.262626 0.969697 0.850321 +0.262626 0.979798 0.856443 +0.262626 0.989899 0.862565 +0.262626 1.000000 0.868687 + +0.272727 0.000000 0.272727 +0.272727 0.010101 0.278696 +0.272727 0.020202 0.284665 +0.272727 0.030303 0.290634 +0.272727 0.040404 0.296602 +0.272727 0.050505 0.302571 +0.272727 0.060606 0.308540 +0.272727 0.070707 0.314509 +0.272727 0.080808 0.320478 +0.272727 0.090909 0.326446 +0.272727 0.101010 0.332415 +0.272727 0.111111 0.338384 +0.272727 0.121212 0.344353 +0.272727 0.131313 0.350321 +0.272727 0.141414 0.356290 +0.272727 0.151515 0.362259 +0.272727 0.161616 0.368228 +0.272727 0.171717 0.374197 +0.272727 0.181818 0.380165 +0.272727 0.191919 0.386134 +0.272727 0.202020 0.392103 +0.272727 0.212121 0.398072 +0.272727 0.222222 0.404040 +0.272727 0.232323 0.410009 +0.272727 0.242424 0.415978 +0.272727 0.252525 0.421947 +0.272727 0.262626 0.427916 +0.272727 0.272727 0.433884 +0.272727 0.282828 0.439853 +0.272727 0.292929 0.445822 +0.272727 0.303030 0.451791 +0.272727 0.313131 0.457759 +0.272727 0.323232 0.463728 +0.272727 0.333333 0.469697 +0.272727 0.343434 0.475666 +0.272727 0.353535 0.481635 +0.272727 0.363636 0.487603 +0.272727 0.373737 0.493572 +0.272727 0.383838 0.499541 +0.272727 0.393939 0.505510 +0.272727 0.404040 0.511478 +0.272727 0.414141 0.517447 +0.272727 0.424242 0.523416 +0.272727 0.434343 0.529385 +0.272727 0.444444 0.535354 +0.272727 0.454545 0.541322 +0.272727 0.464646 0.547291 +0.272727 0.474747 0.553260 +0.272727 0.484848 0.559229 +0.272727 0.494949 0.565197 +0.272727 0.505051 0.571166 +0.272727 0.515152 0.577135 +0.272727 0.525253 0.583104 +0.272727 0.535354 0.589073 +0.272727 0.545455 0.595041 +0.272727 0.555556 0.601010 +0.272727 0.565657 0.606979 +0.272727 0.575758 0.612948 +0.272727 0.585859 0.618916 +0.272727 0.595960 0.624885 +0.272727 0.606061 0.630854 +0.272727 0.616162 0.636823 +0.272727 0.626263 0.642792 +0.272727 0.636364 0.648760 +0.272727 0.646465 0.654729 +0.272727 0.656566 0.660698 +0.272727 0.666667 0.666667 +0.272727 0.676768 0.672635 +0.272727 0.686869 0.678604 +0.272727 0.696970 0.684573 +0.272727 0.707071 0.690542 +0.272727 0.717172 0.696511 +0.272727 0.727273 0.702479 +0.272727 0.737374 0.708448 +0.272727 0.747475 0.714417 +0.272727 0.757576 0.720386 +0.272727 0.767677 0.726354 +0.272727 0.777778 0.732323 +0.272727 0.787879 0.738292 +0.272727 0.797980 0.744261 +0.272727 0.808081 0.750230 +0.272727 0.818182 0.756198 +0.272727 0.828283 0.762167 +0.272727 0.838384 0.768136 +0.272727 0.848485 0.774105 +0.272727 0.858586 0.780073 +0.272727 0.868687 0.786042 +0.272727 0.878788 0.792011 +0.272727 0.888889 0.797980 +0.272727 0.898990 0.803949 +0.272727 0.909091 0.809917 +0.272727 0.919192 0.815886 +0.272727 0.929293 0.821855 +0.272727 0.939394 0.827824 +0.272727 0.949495 0.833792 +0.272727 0.959596 0.839761 +0.272727 0.969697 0.845730 +0.272727 0.979798 0.851699 +0.272727 0.989899 0.857668 +0.272727 1.000000 0.863636 + +0.282828 0.000000 0.282828 +0.282828 0.010101 0.288644 +0.282828 0.020202 0.294460 +0.282828 0.030303 0.300275 +0.282828 0.040404 0.306091 +0.282828 0.050505 0.311907 +0.282828 0.060606 0.317723 +0.282828 0.070707 0.323538 +0.282828 0.080808 0.329354 +0.282828 0.090909 0.335170 +0.282828 0.101010 0.340986 +0.282828 0.111111 0.346801 +0.282828 0.121212 0.352617 +0.282828 0.131313 0.358433 +0.282828 0.141414 0.364249 +0.282828 0.151515 0.370064 +0.282828 0.161616 0.375880 +0.282828 0.171717 0.381696 +0.282828 0.181818 0.387511 +0.282828 0.191919 0.393327 +0.282828 0.202020 0.399143 +0.282828 0.212121 0.404959 +0.282828 0.222222 0.410774 +0.282828 0.232323 0.416590 +0.282828 0.242424 0.422406 +0.282828 0.252525 0.428222 +0.282828 0.262626 0.434037 +0.282828 0.272727 0.439853 +0.282828 0.282828 0.445669 +0.282828 0.292929 0.451485 +0.282828 0.303030 0.457300 +0.282828 0.313131 0.463116 +0.282828 0.323232 0.468932 +0.282828 0.333333 0.474747 +0.282828 0.343434 0.480563 +0.282828 0.353535 0.486379 +0.282828 0.363636 0.492195 +0.282828 0.373737 0.498010 +0.282828 0.383838 0.503826 +0.282828 0.393939 0.509642 +0.282828 0.404040 0.515458 +0.282828 0.414141 0.521273 +0.282828 0.424242 0.527089 +0.282828 0.434343 0.532905 +0.282828 0.444444 0.538721 +0.282828 0.454545 0.544536 +0.282828 0.464646 0.550352 +0.282828 0.474747 0.556168 +0.282828 0.484848 0.561983 +0.282828 0.494949 0.567799 +0.282828 0.505051 0.573615 +0.282828 0.515152 0.579431 +0.282828 0.525253 0.585246 +0.282828 0.535354 0.591062 +0.282828 0.545455 0.596878 +0.282828 0.555556 0.602694 +0.282828 0.565657 0.608509 +0.282828 0.575758 0.614325 +0.282828 0.585859 0.620141 +0.282828 0.595960 0.625957 +0.282828 0.606061 0.631772 +0.282828 0.616162 0.637588 +0.282828 0.626263 0.643404 +0.282828 0.636364 0.649219 +0.282828 0.646465 0.655035 +0.282828 0.656566 0.660851 +0.282828 0.666667 0.666667 +0.282828 0.676768 0.672482 +0.282828 0.686869 0.678298 +0.282828 0.696970 0.684114 +0.282828 0.707071 0.689930 +0.282828 0.717172 0.695745 +0.282828 0.727273 0.701561 +0.282828 0.737374 0.707377 +0.282828 0.747475 0.713193 +0.282828 0.757576 0.719008 +0.282828 0.767677 0.724824 +0.282828 0.777778 0.730640 +0.282828 0.787879 0.736455 +0.282828 0.797980 0.742271 +0.282828 0.808081 0.748087 +0.282828 0.818182 0.753903 +0.282828 0.828283 0.759718 +0.282828 0.838384 0.765534 +0.282828 0.848485 0.771350 +0.282828 0.858586 0.777166 +0.282828 0.868687 0.782981 +0.282828 0.878788 0.788797 +0.282828 0.888889 0.794613 +0.282828 0.898990 0.800429 +0.282828 0.909091 0.806244 +0.282828 0.919192 0.812060 +0.282828 0.929293 0.817876 +0.282828 0.939394 0.823691 +0.282828 0.949495 0.829507 +0.282828 0.959596 0.835323 +0.282828 0.969697 0.841139 +0.282828 0.979798 0.846954 +0.282828 0.989899 0.852770 +0.282828 1.000000 0.858586 + +0.292929 0.000000 0.292929 +0.292929 0.010101 0.298592 +0.292929 0.020202 0.304255 +0.292929 0.030303 0.309917 +0.292929 0.040404 0.315580 +0.292929 0.050505 0.321243 +0.292929 0.060606 0.326905 +0.292929 0.070707 0.332568 +0.292929 0.080808 0.338231 +0.292929 0.090909 0.343893 +0.292929 0.101010 0.349556 +0.292929 0.111111 0.355219 +0.292929 0.121212 0.360882 +0.292929 0.131313 0.366544 +0.292929 0.141414 0.372207 +0.292929 0.151515 0.377870 +0.292929 0.161616 0.383532 +0.292929 0.171717 0.389195 +0.292929 0.181818 0.394858 +0.292929 0.191919 0.400520 +0.292929 0.202020 0.406183 +0.292929 0.212121 0.411846 +0.292929 0.222222 0.417508 +0.292929 0.232323 0.423171 +0.292929 0.242424 0.428834 +0.292929 0.252525 0.434496 +0.292929 0.262626 0.440159 +0.292929 0.272727 0.445822 +0.292929 0.282828 0.451485 +0.292929 0.292929 0.457147 +0.292929 0.303030 0.462810 +0.292929 0.313131 0.468473 +0.292929 0.323232 0.474135 +0.292929 0.333333 0.479798 +0.292929 0.343434 0.485461 +0.292929 0.353535 0.491123 +0.292929 0.363636 0.496786 +0.292929 0.373737 0.502449 +0.292929 0.383838 0.508111 +0.292929 0.393939 0.513774 +0.292929 0.404040 0.519437 +0.292929 0.414141 0.525099 +0.292929 0.424242 0.530762 +0.292929 0.434343 0.536425 +0.292929 0.444444 0.542088 +0.292929 0.454545 0.547750 +0.292929 0.464646 0.553413 +0.292929 0.474747 0.559076 +0.292929 0.484848 0.564738 +0.292929 0.494949 0.570401 +0.292929 0.505051 0.576064 +0.292929 0.515152 0.581726 +0.292929 0.525253 0.587389 +0.292929 0.535354 0.593052 +0.292929 0.545455 0.598714 +0.292929 0.555556 0.604377 +0.292929 0.565657 0.610040 +0.292929 0.575758 0.615702 +0.292929 0.585859 0.621365 +0.292929 0.595960 0.627028 +0.292929 0.606061 0.632691 +0.292929 0.616162 0.638353 +0.292929 0.626263 0.644016 +0.292929 0.636364 0.649679 +0.292929 0.646465 0.655341 +0.292929 0.656566 0.661004 +0.292929 0.666667 0.666667 +0.292929 0.676768 0.672329 +0.292929 0.686869 0.677992 +0.292929 0.696970 0.683655 +0.292929 0.707071 0.689317 +0.292929 0.717172 0.694980 +0.292929 0.727273 0.700643 +0.292929 0.737374 0.706305 +0.292929 0.747475 0.711968 +0.292929 0.757576 0.717631 +0.292929 0.767677 0.723294 +0.292929 0.777778 0.728956 +0.292929 0.787879 0.734619 +0.292929 0.797980 0.740282 +0.292929 0.808081 0.745944 +0.292929 0.818182 0.751607 +0.292929 0.828283 0.757270 +0.292929 0.838384 0.762932 +0.292929 0.848485 0.768595 +0.292929 0.858586 0.774258 +0.292929 0.868687 0.779920 +0.292929 0.878788 0.785583 +0.292929 0.888889 0.791246 +0.292929 0.898990 0.796908 +0.292929 0.909091 0.802571 +0.292929 0.919192 0.808234 +0.292929 0.929293 0.813897 +0.292929 0.939394 0.819559 +0.292929 0.949495 0.825222 +0.292929 0.959596 0.830885 +0.292929 0.969697 0.836547 +0.292929 0.979798 0.842210 +0.292929 0.989899 0.847873 +0.292929 1.000000 0.853535 + +0.303030 0.000000 0.303030 +0.303030 0.010101 0.308540 +0.303030 0.020202 0.314050 +0.303030 0.030303 0.319559 +0.303030 0.040404 0.325069 +0.303030 0.050505 0.330579 +0.303030 0.060606 0.336088 +0.303030 0.070707 0.341598 +0.303030 0.080808 0.347107 +0.303030 0.090909 0.352617 +0.303030 0.101010 0.358127 +0.303030 0.111111 0.363636 +0.303030 0.121212 0.369146 +0.303030 0.131313 0.374656 +0.303030 0.141414 0.380165 +0.303030 0.151515 0.385675 +0.303030 0.161616 0.391185 +0.303030 0.171717 0.396694 +0.303030 0.181818 0.402204 +0.303030 0.191919 0.407713 +0.303030 0.202020 0.413223 +0.303030 0.212121 0.418733 +0.303030 0.222222 0.424242 +0.303030 0.232323 0.429752 +0.303030 0.242424 0.435262 +0.303030 0.252525 0.440771 +0.303030 0.262626 0.446281 +0.303030 0.272727 0.451791 +0.303030 0.282828 0.457300 +0.303030 0.292929 0.462810 +0.303030 0.303030 0.468320 +0.303030 0.313131 0.473829 +0.303030 0.323232 0.479339 +0.303030 0.333333 0.484848 +0.303030 0.343434 0.490358 +0.303030 0.353535 0.495868 +0.303030 0.363636 0.501377 +0.303030 0.373737 0.506887 +0.303030 0.383838 0.512397 +0.303030 0.393939 0.517906 +0.303030 0.404040 0.523416 +0.303030 0.414141 0.528926 +0.303030 0.424242 0.534435 +0.303030 0.434343 0.539945 +0.303030 0.444444 0.545455 +0.303030 0.454545 0.550964 +0.303030 0.464646 0.556474 +0.303030 0.474747 0.561983 +0.303030 0.484848 0.567493 +0.303030 0.494949 0.573003 +0.303030 0.505051 0.578512 +0.303030 0.515152 0.584022 +0.303030 0.525253 0.589532 +0.303030 0.535354 0.595041 +0.303030 0.545455 0.600551 +0.303030 0.555556 0.606061 +0.303030 0.565657 0.611570 +0.303030 0.575758 0.617080 +0.303030 0.585859 0.622590 +0.303030 0.595960 0.628099 +0.303030 0.606061 0.633609 +0.303030 0.616162 0.639118 +0.303030 0.626263 0.644628 +0.303030 0.636364 0.650138 +0.303030 0.646465 0.655647 +0.303030 0.656566 0.661157 +0.303030 0.666667 0.666667 +0.303030 0.676768 0.672176 +0.303030 0.686869 0.677686 +0.303030 0.696970 0.683196 +0.303030 0.707071 0.688705 +0.303030 0.717172 0.694215 +0.303030 0.727273 0.699725 +0.303030 0.737374 0.705234 +0.303030 0.747475 0.710744 +0.303030 0.757576 0.716253 +0.303030 0.767677 0.721763 +0.303030 0.777778 0.727273 +0.303030 0.787879 0.732782 +0.303030 0.797980 0.738292 +0.303030 0.808081 0.743802 +0.303030 0.818182 0.749311 +0.303030 0.828283 0.754821 +0.303030 0.838384 0.760331 +0.303030 0.848485 0.765840 +0.303030 0.858586 0.771350 +0.303030 0.868687 0.776860 +0.303030 0.878788 0.782369 +0.303030 0.888889 0.787879 +0.303030 0.898990 0.793388 +0.303030 0.909091 0.798898 +0.303030 0.919192 0.804408 +0.303030 0.929293 0.809917 +0.303030 0.939394 0.815427 +0.303030 0.949495 0.820937 +0.303030 0.959596 0.826446 +0.303030 0.969697 0.831956 +0.303030 0.979798 0.837466 +0.303030 0.989899 0.842975 +0.303030 1.000000 0.848485 + +0.313131 0.000000 0.313131 +0.313131 0.010101 0.318488 +0.313131 0.020202 0.323845 +0.313131 0.030303 0.329201 +0.313131 0.040404 0.334558 +0.313131 0.050505 0.339914 +0.313131 0.060606 0.345271 +0.313131 0.070707 0.350627 +0.313131 0.080808 0.355984 +0.313131 0.090909 0.361341 +0.313131 0.101010 0.366697 +0.313131 0.111111 0.372054 +0.313131 0.121212 0.377410 +0.313131 0.131313 0.382767 +0.313131 0.141414 0.388124 +0.313131 0.151515 0.393480 +0.313131 0.161616 0.398837 +0.313131 0.171717 0.404193 +0.313131 0.181818 0.409550 +0.313131 0.191919 0.414907 +0.313131 0.202020 0.420263 +0.313131 0.212121 0.425620 +0.313131 0.222222 0.430976 +0.313131 0.232323 0.436333 +0.313131 0.242424 0.441690 +0.313131 0.252525 0.447046 +0.313131 0.262626 0.452403 +0.313131 0.272727 0.457759 +0.313131 0.282828 0.463116 +0.313131 0.292929 0.468473 +0.313131 0.303030 0.473829 +0.313131 0.313131 0.479186 +0.313131 0.323232 0.484542 +0.313131 0.333333 0.489899 +0.313131 0.343434 0.495256 +0.313131 0.353535 0.500612 +0.313131 0.363636 0.505969 +0.313131 0.373737 0.511325 +0.313131 0.383838 0.516682 +0.313131 0.393939 0.522039 +0.313131 0.404040 0.527395 +0.313131 0.414141 0.532752 +0.313131 0.424242 0.538108 +0.313131 0.434343 0.543465 +0.313131 0.444444 0.548822 +0.313131 0.454545 0.554178 +0.313131 0.464646 0.559535 +0.313131 0.474747 0.564891 +0.313131 0.484848 0.570248 +0.313131 0.494949 0.575605 +0.313131 0.505051 0.580961 +0.313131 0.515152 0.586318 +0.313131 0.525253 0.591674 +0.313131 0.535354 0.597031 +0.313131 0.545455 0.602388 +0.313131 0.555556 0.607744 +0.313131 0.565657 0.613101 +0.313131 0.575758 0.618457 +0.313131 0.585859 0.623814 +0.313131 0.595960 0.629170 +0.313131 0.606061 0.634527 +0.313131 0.616162 0.639884 +0.313131 0.626263 0.645240 +0.313131 0.636364 0.650597 +0.313131 0.646465 0.655953 +0.313131 0.656566 0.661310 +0.313131 0.666667 0.666667 +0.313131 0.676768 0.672023 +0.313131 0.686869 0.677380 +0.313131 0.696970 0.682736 +0.313131 0.707071 0.688093 +0.313131 0.717172 0.693450 +0.313131 0.727273 0.698806 +0.313131 0.737374 0.704163 +0.313131 0.747475 0.709519 +0.313131 0.757576 0.714876 +0.313131 0.767677 0.720233 +0.313131 0.777778 0.725589 +0.313131 0.787879 0.730946 +0.313131 0.797980 0.736302 +0.313131 0.808081 0.741659 +0.313131 0.818182 0.747016 +0.313131 0.828283 0.752372 +0.313131 0.838384 0.757729 +0.313131 0.848485 0.763085 +0.313131 0.858586 0.768442 +0.313131 0.868687 0.773799 +0.313131 0.878788 0.779155 +0.313131 0.888889 0.784512 +0.313131 0.898990 0.789868 +0.313131 0.909091 0.795225 +0.313131 0.919192 0.800582 +0.313131 0.929293 0.805938 +0.313131 0.939394 0.811295 +0.313131 0.949495 0.816651 +0.313131 0.959596 0.822008 +0.313131 0.969697 0.827365 +0.313131 0.979798 0.832721 +0.313131 0.989899 0.838078 +0.313131 1.000000 0.843434 + +0.323232 0.000000 0.323232 +0.323232 0.010101 0.328436 +0.323232 0.020202 0.333639 +0.323232 0.030303 0.338843 +0.323232 0.040404 0.344047 +0.323232 0.050505 0.349250 +0.323232 0.060606 0.354454 +0.323232 0.070707 0.359657 +0.323232 0.080808 0.364861 +0.323232 0.090909 0.370064 +0.323232 0.101010 0.375268 +0.323232 0.111111 0.380471 +0.323232 0.121212 0.385675 +0.323232 0.131313 0.390878 +0.323232 0.141414 0.396082 +0.323232 0.151515 0.401286 +0.323232 0.161616 0.406489 +0.323232 0.171717 0.411693 +0.323232 0.181818 0.416896 +0.323232 0.191919 0.422100 +0.323232 0.202020 0.427303 +0.323232 0.212121 0.432507 +0.323232 0.222222 0.437710 +0.323232 0.232323 0.442914 +0.323232 0.242424 0.448118 +0.323232 0.252525 0.453321 +0.323232 0.262626 0.458525 +0.323232 0.272727 0.463728 +0.323232 0.282828 0.468932 +0.323232 0.292929 0.474135 +0.323232 0.303030 0.479339 +0.323232 0.313131 0.484542 +0.323232 0.323232 0.489746 +0.323232 0.333333 0.494949 +0.323232 0.343434 0.500153 +0.323232 0.353535 0.505357 +0.323232 0.363636 0.510560 +0.323232 0.373737 0.515764 +0.323232 0.383838 0.520967 +0.323232 0.393939 0.526171 +0.323232 0.404040 0.531374 +0.323232 0.414141 0.536578 +0.323232 0.424242 0.541781 +0.323232 0.434343 0.546985 +0.323232 0.444444 0.552189 +0.323232 0.454545 0.557392 +0.323232 0.464646 0.562596 +0.323232 0.474747 0.567799 +0.323232 0.484848 0.573003 +0.323232 0.494949 0.578206 +0.323232 0.505051 0.583410 +0.323232 0.515152 0.588613 +0.323232 0.525253 0.593817 +0.323232 0.535354 0.599021 +0.323232 0.545455 0.604224 +0.323232 0.555556 0.609428 +0.323232 0.565657 0.614631 +0.323232 0.575758 0.619835 +0.323232 0.585859 0.625038 +0.323232 0.595960 0.630242 +0.323232 0.606061 0.635445 +0.323232 0.616162 0.640649 +0.323232 0.626263 0.645852 +0.323232 0.636364 0.651056 +0.323232 0.646465 0.656260 +0.323232 0.656566 0.661463 +0.323232 0.666667 0.666667 +0.323232 0.676768 0.671870 +0.323232 0.686869 0.677074 +0.323232 0.696970 0.682277 +0.323232 0.707071 0.687481 +0.323232 0.717172 0.692684 +0.323232 0.727273 0.697888 +0.323232 0.737374 0.703092 +0.323232 0.747475 0.708295 +0.323232 0.757576 0.713499 +0.323232 0.767677 0.718702 +0.323232 0.777778 0.723906 +0.323232 0.787879 0.729109 +0.323232 0.797980 0.734313 +0.323232 0.808081 0.739516 +0.323232 0.818182 0.744720 +0.323232 0.828283 0.749923 +0.323232 0.838384 0.755127 +0.323232 0.848485 0.760331 +0.323232 0.858586 0.765534 +0.323232 0.868687 0.770738 +0.323232 0.878788 0.775941 +0.323232 0.888889 0.781145 +0.323232 0.898990 0.786348 +0.323232 0.909091 0.791552 +0.323232 0.919192 0.796755 +0.323232 0.929293 0.801959 +0.323232 0.939394 0.807163 +0.323232 0.949495 0.812366 +0.323232 0.959596 0.817570 +0.323232 0.969697 0.822773 +0.323232 0.979798 0.827977 +0.323232 0.989899 0.833180 +0.323232 1.000000 0.838384 + +0.333333 0.000000 0.333333 +0.333333 0.010101 0.338384 +0.333333 0.020202 0.343434 +0.333333 0.030303 0.348485 +0.333333 0.040404 0.353535 +0.333333 0.050505 0.358586 +0.333333 0.060606 0.363636 +0.333333 0.070707 0.368687 +0.333333 0.080808 0.373737 +0.333333 0.090909 0.378788 +0.333333 0.101010 0.383838 +0.333333 0.111111 0.388889 +0.333333 0.121212 0.393939 +0.333333 0.131313 0.398990 +0.333333 0.141414 0.404040 +0.333333 0.151515 0.409091 +0.333333 0.161616 0.414141 +0.333333 0.171717 0.419192 +0.333333 0.181818 0.424242 +0.333333 0.191919 0.429293 +0.333333 0.202020 0.434343 +0.333333 0.212121 0.439394 +0.333333 0.222222 0.444444 +0.333333 0.232323 0.449495 +0.333333 0.242424 0.454545 +0.333333 0.252525 0.459596 +0.333333 0.262626 0.464646 +0.333333 0.272727 0.469697 +0.333333 0.282828 0.474747 +0.333333 0.292929 0.479798 +0.333333 0.303030 0.484848 +0.333333 0.313131 0.489899 +0.333333 0.323232 0.494949 +0.333333 0.333333 0.500000 +0.333333 0.343434 0.505051 +0.333333 0.353535 0.510101 +0.333333 0.363636 0.515152 +0.333333 0.373737 0.520202 +0.333333 0.383838 0.525253 +0.333333 0.393939 0.530303 +0.333333 0.404040 0.535354 +0.333333 0.414141 0.540404 +0.333333 0.424242 0.545455 +0.333333 0.434343 0.550505 +0.333333 0.444444 0.555556 +0.333333 0.454545 0.560606 +0.333333 0.464646 0.565657 +0.333333 0.474747 0.570707 +0.333333 0.484848 0.575758 +0.333333 0.494949 0.580808 +0.333333 0.505051 0.585859 +0.333333 0.515152 0.590909 +0.333333 0.525253 0.595960 +0.333333 0.535354 0.601010 +0.333333 0.545455 0.606061 +0.333333 0.555556 0.611111 +0.333333 0.565657 0.616162 +0.333333 0.575758 0.621212 +0.333333 0.585859 0.626263 +0.333333 0.595960 0.631313 +0.333333 0.606061 0.636364 +0.333333 0.616162 0.641414 +0.333333 0.626263 0.646465 +0.333333 0.636364 0.651515 +0.333333 0.646465 0.656566 +0.333333 0.656566 0.661616 +0.333333 0.666667 0.666667 +0.333333 0.676768 0.671717 +0.333333 0.686869 0.676768 +0.333333 0.696970 0.681818 +0.333333 0.707071 0.686869 +0.333333 0.717172 0.691919 +0.333333 0.727273 0.696970 +0.333333 0.737374 0.702020 +0.333333 0.747475 0.707071 +0.333333 0.757576 0.712121 +0.333333 0.767677 0.717172 +0.333333 0.777778 0.722222 +0.333333 0.787879 0.727273 +0.333333 0.797980 0.732323 +0.333333 0.808081 0.737374 +0.333333 0.818182 0.742424 +0.333333 0.828283 0.747475 +0.333333 0.838384 0.752525 +0.333333 0.848485 0.757576 +0.333333 0.858586 0.762626 +0.333333 0.868687 0.767677 +0.333333 0.878788 0.772727 +0.333333 0.888889 0.777778 +0.333333 0.898990 0.782828 +0.333333 0.909091 0.787879 +0.333333 0.919192 0.792929 +0.333333 0.929293 0.797980 +0.333333 0.939394 0.803030 +0.333333 0.949495 0.808081 +0.333333 0.959596 0.813131 +0.333333 0.969697 0.818182 +0.333333 0.979798 0.823232 +0.333333 0.989899 0.828283 +0.333333 1.000000 0.833333 + +0.343434 0.000000 0.343434 +0.343434 0.010101 0.348332 +0.343434 0.020202 0.353229 +0.343434 0.030303 0.358127 +0.343434 0.040404 0.363024 +0.343434 0.050505 0.367922 +0.343434 0.060606 0.372819 +0.343434 0.070707 0.377717 +0.343434 0.080808 0.382614 +0.343434 0.090909 0.387511 +0.343434 0.101010 0.392409 +0.343434 0.111111 0.397306 +0.343434 0.121212 0.402204 +0.343434 0.131313 0.407101 +0.343434 0.141414 0.411999 +0.343434 0.151515 0.416896 +0.343434 0.161616 0.421794 +0.343434 0.171717 0.426691 +0.343434 0.181818 0.431589 +0.343434 0.191919 0.436486 +0.343434 0.202020 0.441384 +0.343434 0.212121 0.446281 +0.343434 0.222222 0.451178 +0.343434 0.232323 0.456076 +0.343434 0.242424 0.460973 +0.343434 0.252525 0.465871 +0.343434 0.262626 0.470768 +0.343434 0.272727 0.475666 +0.343434 0.282828 0.480563 +0.343434 0.292929 0.485461 +0.343434 0.303030 0.490358 +0.343434 0.313131 0.495256 +0.343434 0.323232 0.500153 +0.343434 0.333333 0.505051 +0.343434 0.343434 0.509948 +0.343434 0.353535 0.514845 +0.343434 0.363636 0.519743 +0.343434 0.373737 0.524640 +0.343434 0.383838 0.529538 +0.343434 0.393939 0.534435 +0.343434 0.404040 0.539333 +0.343434 0.414141 0.544230 +0.343434 0.424242 0.549128 +0.343434 0.434343 0.554025 +0.343434 0.444444 0.558923 +0.343434 0.454545 0.563820 +0.343434 0.464646 0.568717 +0.343434 0.474747 0.573615 +0.343434 0.484848 0.578512 +0.343434 0.494949 0.583410 +0.343434 0.505051 0.588307 +0.343434 0.515152 0.593205 +0.343434 0.525253 0.598102 +0.343434 0.535354 0.603000 +0.343434 0.545455 0.607897 +0.343434 0.555556 0.612795 +0.343434 0.565657 0.617692 +0.343434 0.575758 0.622590 +0.343434 0.585859 0.627487 +0.343434 0.595960 0.632384 +0.343434 0.606061 0.637282 +0.343434 0.616162 0.642179 +0.343434 0.626263 0.647077 +0.343434 0.636364 0.651974 +0.343434 0.646465 0.656872 +0.343434 0.656566 0.661769 +0.343434 0.666667 0.666667 +0.343434 0.676768 0.671564 +0.343434 0.686869 0.676462 +0.343434 0.696970 0.681359 +0.343434 0.707071 0.686257 +0.343434 0.717172 0.691154 +0.343434 0.727273 0.696051 +0.343434 0.737374 0.700949 +0.343434 0.747475 0.705846 +0.343434 0.757576 0.710744 +0.343434 0.767677 0.715641 +0.343434 0.777778 0.720539 +0.343434 0.787879 0.725436 +0.343434 0.797980 0.730334 +0.343434 0.808081 0.735231 +0.343434 0.818182 0.740129 +0.343434 0.828283 0.745026 +0.343434 0.838384 0.749923 +0.343434 0.848485 0.754821 +0.343434 0.858586 0.759718 +0.343434 0.868687 0.764616 +0.343434 0.878788 0.769513 +0.343434 0.888889 0.774411 +0.343434 0.898990 0.779308 +0.343434 0.909091 0.784206 +0.343434 0.919192 0.789103 +0.343434 0.929293 0.794001 +0.343434 0.939394 0.798898 +0.343434 0.949495 0.803796 +0.343434 0.959596 0.808693 +0.343434 0.969697 0.813590 +0.343434 0.979798 0.818488 +0.343434 0.989899 0.823385 +0.343434 1.000000 0.828283 + +0.353535 0.000000 0.353535 +0.353535 0.010101 0.358280 +0.353535 0.020202 0.363024 +0.353535 0.030303 0.367769 +0.353535 0.040404 0.372513 +0.353535 0.050505 0.377257 +0.353535 0.060606 0.382002 +0.353535 0.070707 0.386746 +0.353535 0.080808 0.391491 +0.353535 0.090909 0.396235 +0.353535 0.101010 0.400979 +0.353535 0.111111 0.405724 +0.353535 0.121212 0.410468 +0.353535 0.131313 0.415213 +0.353535 0.141414 0.419957 +0.353535 0.151515 0.424702 +0.353535 0.161616 0.429446 +0.353535 0.171717 0.434190 +0.353535 0.181818 0.438935 +0.353535 0.191919 0.443679 +0.353535 0.202020 0.448424 +0.353535 0.212121 0.453168 +0.353535 0.222222 0.457912 +0.353535 0.232323 0.462657 +0.353535 0.242424 0.467401 +0.353535 0.252525 0.472146 +0.353535 0.262626 0.476890 +0.353535 0.272727 0.481635 +0.353535 0.282828 0.486379 +0.353535 0.292929 0.491123 +0.353535 0.303030 0.495868 +0.353535 0.313131 0.500612 +0.353535 0.323232 0.505357 +0.353535 0.333333 0.510101 +0.353535 0.343434 0.514845 +0.353535 0.353535 0.519590 +0.353535 0.363636 0.524334 +0.353535 0.373737 0.529079 +0.353535 0.383838 0.533823 +0.353535 0.393939 0.538567 +0.353535 0.404040 0.543312 +0.353535 0.414141 0.548056 +0.353535 0.424242 0.552801 +0.353535 0.434343 0.557545 +0.353535 0.444444 0.562290 +0.353535 0.454545 0.567034 +0.353535 0.464646 0.571778 +0.353535 0.474747 0.576523 +0.353535 0.484848 0.581267 +0.353535 0.494949 0.586012 +0.353535 0.505051 0.590756 +0.353535 0.515152 0.595500 +0.353535 0.525253 0.600245 +0.353535 0.535354 0.604989 +0.353535 0.545455 0.609734 +0.353535 0.555556 0.614478 +0.353535 0.565657 0.619223 +0.353535 0.575758 0.623967 +0.353535 0.585859 0.628711 +0.353535 0.595960 0.633456 +0.353535 0.606061 0.638200 +0.353535 0.616162 0.642945 +0.353535 0.626263 0.647689 +0.353535 0.636364 0.652433 +0.353535 0.646465 0.657178 +0.353535 0.656566 0.661922 +0.353535 0.666667 0.666667 +0.353535 0.676768 0.671411 +0.353535 0.686869 0.676155 +0.353535 0.696970 0.680900 +0.353535 0.707071 0.685644 +0.353535 0.717172 0.690389 +0.353535 0.727273 0.695133 +0.353535 0.737374 0.699878 +0.353535 0.747475 0.704622 +0.353535 0.757576 0.709366 +0.353535 0.767677 0.714111 +0.353535 0.777778 0.718855 +0.353535 0.787879 0.723600 +0.353535 0.797980 0.728344 +0.353535 0.808081 0.733088 +0.353535 0.818182 0.737833 +0.353535 0.828283 0.742577 +0.353535 0.838384 0.747322 +0.353535 0.848485 0.752066 +0.353535 0.858586 0.756811 +0.353535 0.868687 0.761555 +0.353535 0.878788 0.766299 +0.353535 0.888889 0.771044 +0.353535 0.898990 0.775788 +0.353535 0.909091 0.780533 +0.353535 0.919192 0.785277 +0.353535 0.929293 0.790021 +0.353535 0.939394 0.794766 +0.353535 0.949495 0.799510 +0.353535 0.959596 0.804255 +0.353535 0.969697 0.808999 +0.353535 0.979798 0.813743 +0.353535 0.989899 0.818488 +0.353535 1.000000 0.823232 + +0.363636 0.000000 0.363636 +0.363636 0.010101 0.368228 +0.363636 0.020202 0.372819 +0.363636 0.030303 0.377410 +0.363636 0.040404 0.382002 +0.363636 0.050505 0.386593 +0.363636 0.060606 0.391185 +0.363636 0.070707 0.395776 +0.363636 0.080808 0.400367 +0.363636 0.090909 0.404959 +0.363636 0.101010 0.409550 +0.363636 0.111111 0.414141 +0.363636 0.121212 0.418733 +0.363636 0.131313 0.423324 +0.363636 0.141414 0.427916 +0.363636 0.151515 0.432507 +0.363636 0.161616 0.437098 +0.363636 0.171717 0.441690 +0.363636 0.181818 0.446281 +0.363636 0.191919 0.450872 +0.363636 0.202020 0.455464 +0.363636 0.212121 0.460055 +0.363636 0.222222 0.464646 +0.363636 0.232323 0.469238 +0.363636 0.242424 0.473829 +0.363636 0.252525 0.478421 +0.363636 0.262626 0.483012 +0.363636 0.272727 0.487603 +0.363636 0.282828 0.492195 +0.363636 0.292929 0.496786 +0.363636 0.303030 0.501377 +0.363636 0.313131 0.505969 +0.363636 0.323232 0.510560 +0.363636 0.333333 0.515152 +0.363636 0.343434 0.519743 +0.363636 0.353535 0.524334 +0.363636 0.363636 0.528926 +0.363636 0.373737 0.533517 +0.363636 0.383838 0.538108 +0.363636 0.393939 0.542700 +0.363636 0.404040 0.547291 +0.363636 0.414141 0.551882 +0.363636 0.424242 0.556474 +0.363636 0.434343 0.561065 +0.363636 0.444444 0.565657 +0.363636 0.454545 0.570248 +0.363636 0.464646 0.574839 +0.363636 0.474747 0.579431 +0.363636 0.484848 0.584022 +0.363636 0.494949 0.588613 +0.363636 0.505051 0.593205 +0.363636 0.515152 0.597796 +0.363636 0.525253 0.602388 +0.363636 0.535354 0.606979 +0.363636 0.545455 0.611570 +0.363636 0.555556 0.616162 +0.363636 0.565657 0.620753 +0.363636 0.575758 0.625344 +0.363636 0.585859 0.629936 +0.363636 0.595960 0.634527 +0.363636 0.606061 0.639118 +0.363636 0.616162 0.643710 +0.363636 0.626263 0.648301 +0.363636 0.636364 0.652893 +0.363636 0.646465 0.657484 +0.363636 0.656566 0.662075 +0.363636 0.666667 0.666667 +0.363636 0.676768 0.671258 +0.363636 0.686869 0.675849 +0.363636 0.696970 0.680441 +0.363636 0.707071 0.685032 +0.363636 0.717172 0.689624 +0.363636 0.727273 0.694215 +0.363636 0.737374 0.698806 +0.363636 0.747475 0.703398 +0.363636 0.757576 0.707989 +0.363636 0.767677 0.712580 +0.363636 0.777778 0.717172 +0.363636 0.787879 0.721763 +0.363636 0.797980 0.726354 +0.363636 0.808081 0.730946 +0.363636 0.818182 0.735537 +0.363636 0.828283 0.740129 +0.363636 0.838384 0.744720 +0.363636 0.848485 0.749311 +0.363636 0.858586 0.753903 +0.363636 0.868687 0.758494 +0.363636 0.878788 0.763085 +0.363636 0.888889 0.767677 +0.363636 0.898990 0.772268 +0.363636 0.909091 0.776860 +0.363636 0.919192 0.781451 +0.363636 0.929293 0.786042 +0.363636 0.939394 0.790634 +0.363636 0.949495 0.795225 +0.363636 0.959596 0.799816 +0.363636 0.969697 0.804408 +0.363636 0.979798 0.808999 +0.363636 0.989899 0.813590 +0.363636 1.000000 0.818182 + +0.373737 0.000000 0.373737 +0.373737 0.010101 0.378176 +0.373737 0.020202 0.382614 +0.373737 0.030303 0.387052 +0.373737 0.040404 0.391491 +0.373737 0.050505 0.395929 +0.373737 0.060606 0.400367 +0.373737 0.070707 0.404806 +0.373737 0.080808 0.409244 +0.373737 0.090909 0.413682 +0.373737 0.101010 0.418121 +0.373737 0.111111 0.422559 +0.373737 0.121212 0.426997 +0.373737 0.131313 0.431436 +0.373737 0.141414 0.435874 +0.373737 0.151515 0.440312 +0.373737 0.161616 0.444751 +0.373737 0.171717 0.449189 +0.373737 0.181818 0.453627 +0.373737 0.191919 0.458066 +0.373737 0.202020 0.462504 +0.373737 0.212121 0.466942 +0.373737 0.222222 0.471380 +0.373737 0.232323 0.475819 +0.373737 0.242424 0.480257 +0.373737 0.252525 0.484695 +0.373737 0.262626 0.489134 +0.373737 0.272727 0.493572 +0.373737 0.282828 0.498010 +0.373737 0.292929 0.502449 +0.373737 0.303030 0.506887 +0.373737 0.313131 0.511325 +0.373737 0.323232 0.515764 +0.373737 0.333333 0.520202 +0.373737 0.343434 0.524640 +0.373737 0.353535 0.529079 +0.373737 0.363636 0.533517 +0.373737 0.373737 0.537955 +0.373737 0.383838 0.542394 +0.373737 0.393939 0.546832 +0.373737 0.404040 0.551270 +0.373737 0.414141 0.555709 +0.373737 0.424242 0.560147 +0.373737 0.434343 0.564585 +0.373737 0.444444 0.569024 +0.373737 0.454545 0.573462 +0.373737 0.464646 0.577900 +0.373737 0.474747 0.582339 +0.373737 0.484848 0.586777 +0.373737 0.494949 0.591215 +0.373737 0.505051 0.595654 +0.373737 0.515152 0.600092 +0.373737 0.525253 0.604530 +0.373737 0.535354 0.608968 +0.373737 0.545455 0.613407 +0.373737 0.555556 0.617845 +0.373737 0.565657 0.622283 +0.373737 0.575758 0.626722 +0.373737 0.585859 0.631160 +0.373737 0.595960 0.635598 +0.373737 0.606061 0.640037 +0.373737 0.616162 0.644475 +0.373737 0.626263 0.648913 +0.373737 0.636364 0.653352 +0.373737 0.646465 0.657790 +0.373737 0.656566 0.662228 +0.373737 0.666667 0.666667 +0.373737 0.676768 0.671105 +0.373737 0.686869 0.675543 +0.373737 0.696970 0.679982 +0.373737 0.707071 0.684420 +0.373737 0.717172 0.688858 +0.373737 0.727273 0.693297 +0.373737 0.737374 0.697735 +0.373737 0.747475 0.702173 +0.373737 0.757576 0.706612 +0.373737 0.767677 0.711050 +0.373737 0.777778 0.715488 +0.373737 0.787879 0.719927 +0.373737 0.797980 0.724365 +0.373737 0.808081 0.728803 +0.373737 0.818182 0.733242 +0.373737 0.828283 0.737680 +0.373737 0.838384 0.742118 +0.373737 0.848485 0.746556 +0.373737 0.858586 0.750995 +0.373737 0.868687 0.755433 +0.373737 0.878788 0.759871 +0.373737 0.888889 0.764310 +0.373737 0.898990 0.768748 +0.373737 0.909091 0.773186 +0.373737 0.919192 0.777625 +0.373737 0.929293 0.782063 +0.373737 0.939394 0.786501 +0.373737 0.949495 0.790940 +0.373737 0.959596 0.795378 +0.373737 0.969697 0.799816 +0.373737 0.979798 0.804255 +0.373737 0.989899 0.808693 +0.373737 1.000000 0.813131 + +0.383838 0.000000 0.383838 +0.383838 0.010101 0.388124 +0.383838 0.020202 0.392409 +0.383838 0.030303 0.396694 +0.383838 0.040404 0.400979 +0.383838 0.050505 0.405265 +0.383838 0.060606 0.409550 +0.383838 0.070707 0.413835 +0.383838 0.080808 0.418121 +0.383838 0.090909 0.422406 +0.383838 0.101010 0.426691 +0.383838 0.111111 0.430976 +0.383838 0.121212 0.435262 +0.383838 0.131313 0.439547 +0.383838 0.141414 0.443832 +0.383838 0.151515 0.448118 +0.383838 0.161616 0.452403 +0.383838 0.171717 0.456688 +0.383838 0.181818 0.460973 +0.383838 0.191919 0.465259 +0.383838 0.202020 0.469544 +0.383838 0.212121 0.473829 +0.383838 0.222222 0.478114 +0.383838 0.232323 0.482400 +0.383838 0.242424 0.486685 +0.383838 0.252525 0.490970 +0.383838 0.262626 0.495256 +0.383838 0.272727 0.499541 +0.383838 0.282828 0.503826 +0.383838 0.292929 0.508111 +0.383838 0.303030 0.512397 +0.383838 0.313131 0.516682 +0.383838 0.323232 0.520967 +0.383838 0.333333 0.525253 +0.383838 0.343434 0.529538 +0.383838 0.353535 0.533823 +0.383838 0.363636 0.538108 +0.383838 0.373737 0.542394 +0.383838 0.383838 0.546679 +0.383838 0.393939 0.550964 +0.383838 0.404040 0.555249 +0.383838 0.414141 0.559535 +0.383838 0.424242 0.563820 +0.383838 0.434343 0.568105 +0.383838 0.444444 0.572391 +0.383838 0.454545 0.576676 +0.383838 0.464646 0.580961 +0.383838 0.474747 0.585246 +0.383838 0.484848 0.589532 +0.383838 0.494949 0.593817 +0.383838 0.505051 0.598102 +0.383838 0.515152 0.602388 +0.383838 0.525253 0.606673 +0.383838 0.535354 0.610958 +0.383838 0.545455 0.615243 +0.383838 0.555556 0.619529 +0.383838 0.565657 0.623814 +0.383838 0.575758 0.628099 +0.383838 0.585859 0.632384 +0.383838 0.595960 0.636670 +0.383838 0.606061 0.640955 +0.383838 0.616162 0.645240 +0.383838 0.626263 0.649526 +0.383838 0.636364 0.653811 +0.383838 0.646465 0.658096 +0.383838 0.656566 0.662381 +0.383838 0.666667 0.666667 +0.383838 0.676768 0.670952 +0.383838 0.686869 0.675237 +0.383838 0.696970 0.679522 +0.383838 0.707071 0.683808 +0.383838 0.717172 0.688093 +0.383838 0.727273 0.692378 +0.383838 0.737374 0.696664 +0.383838 0.747475 0.700949 +0.383838 0.757576 0.705234 +0.383838 0.767677 0.709519 +0.383838 0.777778 0.713805 +0.383838 0.787879 0.718090 +0.383838 0.797980 0.722375 +0.383838 0.808081 0.726661 +0.383838 0.818182 0.730946 +0.383838 0.828283 0.735231 +0.383838 0.838384 0.739516 +0.383838 0.848485 0.743802 +0.383838 0.858586 0.748087 +0.383838 0.868687 0.752372 +0.383838 0.878788 0.756657 +0.383838 0.888889 0.760943 +0.383838 0.898990 0.765228 +0.383838 0.909091 0.769513 +0.383838 0.919192 0.773799 +0.383838 0.929293 0.778084 +0.383838 0.939394 0.782369 +0.383838 0.949495 0.786654 +0.383838 0.959596 0.790940 +0.383838 0.969697 0.795225 +0.383838 0.979798 0.799510 +0.383838 0.989899 0.803796 +0.383838 1.000000 0.808081 + +0.393939 0.000000 0.393939 +0.393939 0.010101 0.398072 +0.393939 0.020202 0.402204 +0.393939 0.030303 0.406336 +0.393939 0.040404 0.410468 +0.393939 0.050505 0.414601 +0.393939 0.060606 0.418733 +0.393939 0.070707 0.422865 +0.393939 0.080808 0.426997 +0.393939 0.090909 0.431129 +0.393939 0.101010 0.435262 +0.393939 0.111111 0.439394 +0.393939 0.121212 0.443526 +0.393939 0.131313 0.447658 +0.393939 0.141414 0.451791 +0.393939 0.151515 0.455923 +0.393939 0.161616 0.460055 +0.393939 0.171717 0.464187 +0.393939 0.181818 0.468320 +0.393939 0.191919 0.472452 +0.393939 0.202020 0.476584 +0.393939 0.212121 0.480716 +0.393939 0.222222 0.484848 +0.393939 0.232323 0.488981 +0.393939 0.242424 0.493113 +0.393939 0.252525 0.497245 +0.393939 0.262626 0.501377 +0.393939 0.272727 0.505510 +0.393939 0.282828 0.509642 +0.393939 0.292929 0.513774 +0.393939 0.303030 0.517906 +0.393939 0.313131 0.522039 +0.393939 0.323232 0.526171 +0.393939 0.333333 0.530303 +0.393939 0.343434 0.534435 +0.393939 0.353535 0.538567 +0.393939 0.363636 0.542700 +0.393939 0.373737 0.546832 +0.393939 0.383838 0.550964 +0.393939 0.393939 0.555096 +0.393939 0.404040 0.559229 +0.393939 0.414141 0.563361 +0.393939 0.424242 0.567493 +0.393939 0.434343 0.571625 +0.393939 0.444444 0.575758 +0.393939 0.454545 0.579890 +0.393939 0.464646 0.584022 +0.393939 0.474747 0.588154 +0.393939 0.484848 0.592287 +0.393939 0.494949 0.596419 +0.393939 0.505051 0.600551 +0.393939 0.515152 0.604683 +0.393939 0.525253 0.608815 +0.393939 0.535354 0.612948 +0.393939 0.545455 0.617080 +0.393939 0.555556 0.621212 +0.393939 0.565657 0.625344 +0.393939 0.575758 0.629477 +0.393939 0.585859 0.633609 +0.393939 0.595960 0.637741 +0.393939 0.606061 0.641873 +0.393939 0.616162 0.646006 +0.393939 0.626263 0.650138 +0.393939 0.636364 0.654270 +0.393939 0.646465 0.658402 +0.393939 0.656566 0.662534 +0.393939 0.666667 0.666667 +0.393939 0.676768 0.670799 +0.393939 0.686869 0.674931 +0.393939 0.696970 0.679063 +0.393939 0.707071 0.683196 +0.393939 0.717172 0.687328 +0.393939 0.727273 0.691460 +0.393939 0.737374 0.695592 +0.393939 0.747475 0.699725 +0.393939 0.757576 0.703857 +0.393939 0.767677 0.707989 +0.393939 0.777778 0.712121 +0.393939 0.787879 0.716253 +0.393939 0.797980 0.720386 +0.393939 0.808081 0.724518 +0.393939 0.818182 0.728650 +0.393939 0.828283 0.732782 +0.393939 0.838384 0.736915 +0.393939 0.848485 0.741047 +0.393939 0.858586 0.745179 +0.393939 0.868687 0.749311 +0.393939 0.878788 0.753444 +0.393939 0.888889 0.757576 +0.393939 0.898990 0.761708 +0.393939 0.909091 0.765840 +0.393939 0.919192 0.769972 +0.393939 0.929293 0.774105 +0.393939 0.939394 0.778237 +0.393939 0.949495 0.782369 +0.393939 0.959596 0.786501 +0.393939 0.969697 0.790634 +0.393939 0.979798 0.794766 +0.393939 0.989899 0.798898 +0.393939 1.000000 0.803030 + +0.404040 0.000000 0.404040 +0.404040 0.010101 0.408020 +0.404040 0.020202 0.411999 +0.404040 0.030303 0.415978 +0.404040 0.040404 0.419957 +0.404040 0.050505 0.423936 +0.404040 0.060606 0.427916 +0.404040 0.070707 0.431895 +0.404040 0.080808 0.435874 +0.404040 0.090909 0.439853 +0.404040 0.101010 0.443832 +0.404040 0.111111 0.447811 +0.404040 0.121212 0.451791 +0.404040 0.131313 0.455770 +0.404040 0.141414 0.459749 +0.404040 0.151515 0.463728 +0.404040 0.161616 0.467707 +0.404040 0.171717 0.471687 +0.404040 0.181818 0.475666 +0.404040 0.191919 0.479645 +0.404040 0.202020 0.483624 +0.404040 0.212121 0.487603 +0.404040 0.222222 0.491582 +0.404040 0.232323 0.495562 +0.404040 0.242424 0.499541 +0.404040 0.252525 0.503520 +0.404040 0.262626 0.507499 +0.404040 0.272727 0.511478 +0.404040 0.282828 0.515458 +0.404040 0.292929 0.519437 +0.404040 0.303030 0.523416 +0.404040 0.313131 0.527395 +0.404040 0.323232 0.531374 +0.404040 0.333333 0.535354 +0.404040 0.343434 0.539333 +0.404040 0.353535 0.543312 +0.404040 0.363636 0.547291 +0.404040 0.373737 0.551270 +0.404040 0.383838 0.555249 +0.404040 0.393939 0.559229 +0.404040 0.404040 0.563208 +0.404040 0.414141 0.567187 +0.404040 0.424242 0.571166 +0.404040 0.434343 0.575145 +0.404040 0.444444 0.579125 +0.404040 0.454545 0.583104 +0.404040 0.464646 0.587083 +0.404040 0.474747 0.591062 +0.404040 0.484848 0.595041 +0.404040 0.494949 0.599021 +0.404040 0.505051 0.603000 +0.404040 0.515152 0.606979 +0.404040 0.525253 0.610958 +0.404040 0.535354 0.614937 +0.404040 0.545455 0.618916 +0.404040 0.555556 0.622896 +0.404040 0.565657 0.626875 +0.404040 0.575758 0.630854 +0.404040 0.585859 0.634833 +0.404040 0.595960 0.638812 +0.404040 0.606061 0.642792 +0.404040 0.616162 0.646771 +0.404040 0.626263 0.650750 +0.404040 0.636364 0.654729 +0.404040 0.646465 0.658708 +0.404040 0.656566 0.662687 +0.404040 0.666667 0.666667 +0.404040 0.676768 0.670646 +0.404040 0.686869 0.674625 +0.404040 0.696970 0.678604 +0.404040 0.707071 0.682583 +0.404040 0.717172 0.686563 +0.404040 0.727273 0.690542 +0.404040 0.737374 0.694521 +0.404040 0.747475 0.698500 +0.404040 0.757576 0.702479 +0.404040 0.767677 0.706459 +0.404040 0.777778 0.710438 +0.404040 0.787879 0.714417 +0.404040 0.797980 0.718396 +0.404040 0.808081 0.722375 +0.404040 0.818182 0.726354 +0.404040 0.828283 0.730334 +0.404040 0.838384 0.734313 +0.404040 0.848485 0.738292 +0.404040 0.858586 0.742271 +0.404040 0.868687 0.746250 +0.404040 0.878788 0.750230 +0.404040 0.888889 0.754209 +0.404040 0.898990 0.758188 +0.404040 0.909091 0.762167 +0.404040 0.919192 0.766146 +0.404040 0.929293 0.770125 +0.404040 0.939394 0.774105 +0.404040 0.949495 0.778084 +0.404040 0.959596 0.782063 +0.404040 0.969697 0.786042 +0.404040 0.979798 0.790021 +0.404040 0.989899 0.794001 +0.404040 1.000000 0.797980 + +0.414141 0.000000 0.414141 +0.414141 0.010101 0.417968 +0.414141 0.020202 0.421794 +0.414141 0.030303 0.425620 +0.414141 0.040404 0.429446 +0.414141 0.050505 0.433272 +0.414141 0.060606 0.437098 +0.414141 0.070707 0.440924 +0.414141 0.080808 0.444751 +0.414141 0.090909 0.448577 +0.414141 0.101010 0.452403 +0.414141 0.111111 0.456229 +0.414141 0.121212 0.460055 +0.414141 0.131313 0.463881 +0.414141 0.141414 0.467707 +0.414141 0.151515 0.471534 +0.414141 0.161616 0.475360 +0.414141 0.171717 0.479186 +0.414141 0.181818 0.483012 +0.414141 0.191919 0.486838 +0.414141 0.202020 0.490664 +0.414141 0.212121 0.494490 +0.414141 0.222222 0.498316 +0.414141 0.232323 0.502143 +0.414141 0.242424 0.505969 +0.414141 0.252525 0.509795 +0.414141 0.262626 0.513621 +0.414141 0.272727 0.517447 +0.414141 0.282828 0.521273 +0.414141 0.292929 0.525099 +0.414141 0.303030 0.528926 +0.414141 0.313131 0.532752 +0.414141 0.323232 0.536578 +0.414141 0.333333 0.540404 +0.414141 0.343434 0.544230 +0.414141 0.353535 0.548056 +0.414141 0.363636 0.551882 +0.414141 0.373737 0.555709 +0.414141 0.383838 0.559535 +0.414141 0.393939 0.563361 +0.414141 0.404040 0.567187 +0.414141 0.414141 0.571013 +0.414141 0.424242 0.574839 +0.414141 0.434343 0.578665 +0.414141 0.444444 0.582492 +0.414141 0.454545 0.586318 +0.414141 0.464646 0.590144 +0.414141 0.474747 0.593970 +0.414141 0.484848 0.597796 +0.414141 0.494949 0.601622 +0.414141 0.505051 0.605448 +0.414141 0.515152 0.609275 +0.414141 0.525253 0.613101 +0.414141 0.535354 0.616927 +0.414141 0.545455 0.620753 +0.414141 0.555556 0.624579 +0.414141 0.565657 0.628405 +0.414141 0.575758 0.632231 +0.414141 0.585859 0.636058 +0.414141 0.595960 0.639884 +0.414141 0.606061 0.643710 +0.414141 0.616162 0.647536 +0.414141 0.626263 0.651362 +0.414141 0.636364 0.655188 +0.414141 0.646465 0.659014 +0.414141 0.656566 0.662841 +0.414141 0.666667 0.666667 +0.414141 0.676768 0.670493 +0.414141 0.686869 0.674319 +0.414141 0.696970 0.678145 +0.414141 0.707071 0.681971 +0.414141 0.717172 0.685797 +0.414141 0.727273 0.689624 +0.414141 0.737374 0.693450 +0.414141 0.747475 0.697276 +0.414141 0.757576 0.701102 +0.414141 0.767677 0.704928 +0.414141 0.777778 0.708754 +0.414141 0.787879 0.712580 +0.414141 0.797980 0.716406 +0.414141 0.808081 0.720233 +0.414141 0.818182 0.724059 +0.414141 0.828283 0.727885 +0.414141 0.838384 0.731711 +0.414141 0.848485 0.735537 +0.414141 0.858586 0.739363 +0.414141 0.868687 0.743189 +0.414141 0.878788 0.747016 +0.414141 0.888889 0.750842 +0.414141 0.898990 0.754668 +0.414141 0.909091 0.758494 +0.414141 0.919192 0.762320 +0.414141 0.929293 0.766146 +0.414141 0.939394 0.769972 +0.414141 0.949495 0.773799 +0.414141 0.959596 0.777625 +0.414141 0.969697 0.781451 +0.414141 0.979798 0.785277 +0.414141 0.989899 0.789103 +0.414141 1.000000 0.792929 + +0.424242 0.000000 0.424242 +0.424242 0.010101 0.427916 +0.424242 0.020202 0.431589 +0.424242 0.030303 0.435262 +0.424242 0.040404 0.438935 +0.424242 0.050505 0.442608 +0.424242 0.060606 0.446281 +0.424242 0.070707 0.449954 +0.424242 0.080808 0.453627 +0.424242 0.090909 0.457300 +0.424242 0.101010 0.460973 +0.424242 0.111111 0.464646 +0.424242 0.121212 0.468320 +0.424242 0.131313 0.471993 +0.424242 0.141414 0.475666 +0.424242 0.151515 0.479339 +0.424242 0.161616 0.483012 +0.424242 0.171717 0.486685 +0.424242 0.181818 0.490358 +0.424242 0.191919 0.494031 +0.424242 0.202020 0.497704 +0.424242 0.212121 0.501377 +0.424242 0.222222 0.505051 +0.424242 0.232323 0.508724 +0.424242 0.242424 0.512397 +0.424242 0.252525 0.516070 +0.424242 0.262626 0.519743 +0.424242 0.272727 0.523416 +0.424242 0.282828 0.527089 +0.424242 0.292929 0.530762 +0.424242 0.303030 0.534435 +0.424242 0.313131 0.538108 +0.424242 0.323232 0.541781 +0.424242 0.333333 0.545455 +0.424242 0.343434 0.549128 +0.424242 0.353535 0.552801 +0.424242 0.363636 0.556474 +0.424242 0.373737 0.560147 +0.424242 0.383838 0.563820 +0.424242 0.393939 0.567493 +0.424242 0.404040 0.571166 +0.424242 0.414141 0.574839 +0.424242 0.424242 0.578512 +0.424242 0.434343 0.582185 +0.424242 0.444444 0.585859 +0.424242 0.454545 0.589532 +0.424242 0.464646 0.593205 +0.424242 0.474747 0.596878 +0.424242 0.484848 0.600551 +0.424242 0.494949 0.604224 +0.424242 0.505051 0.607897 +0.424242 0.515152 0.611570 +0.424242 0.525253 0.615243 +0.424242 0.535354 0.618916 +0.424242 0.545455 0.622590 +0.424242 0.555556 0.626263 +0.424242 0.565657 0.629936 +0.424242 0.575758 0.633609 +0.424242 0.585859 0.637282 +0.424242 0.595960 0.640955 +0.424242 0.606061 0.644628 +0.424242 0.616162 0.648301 +0.424242 0.626263 0.651974 +0.424242 0.636364 0.655647 +0.424242 0.646465 0.659320 +0.424242 0.656566 0.662994 +0.424242 0.666667 0.666667 +0.424242 0.676768 0.670340 +0.424242 0.686869 0.674013 +0.424242 0.696970 0.677686 +0.424242 0.707071 0.681359 +0.424242 0.717172 0.685032 +0.424242 0.727273 0.688705 +0.424242 0.737374 0.692378 +0.424242 0.747475 0.696051 +0.424242 0.757576 0.699725 +0.424242 0.767677 0.703398 +0.424242 0.777778 0.707071 +0.424242 0.787879 0.710744 +0.424242 0.797980 0.714417 +0.424242 0.808081 0.718090 +0.424242 0.818182 0.721763 +0.424242 0.828283 0.725436 +0.424242 0.838384 0.729109 +0.424242 0.848485 0.732782 +0.424242 0.858586 0.736455 +0.424242 0.868687 0.740129 +0.424242 0.878788 0.743802 +0.424242 0.888889 0.747475 +0.424242 0.898990 0.751148 +0.424242 0.909091 0.754821 +0.424242 0.919192 0.758494 +0.424242 0.929293 0.762167 +0.424242 0.939394 0.765840 +0.424242 0.949495 0.769513 +0.424242 0.959596 0.773186 +0.424242 0.969697 0.776860 +0.424242 0.979798 0.780533 +0.424242 0.989899 0.784206 +0.424242 1.000000 0.787879 + +0.434343 0.000000 0.434343 +0.434343 0.010101 0.437863 +0.434343 0.020202 0.441384 +0.434343 0.030303 0.444904 +0.434343 0.040404 0.448424 +0.434343 0.050505 0.451944 +0.434343 0.060606 0.455464 +0.434343 0.070707 0.458984 +0.434343 0.080808 0.462504 +0.434343 0.090909 0.466024 +0.434343 0.101010 0.469544 +0.434343 0.111111 0.473064 +0.434343 0.121212 0.476584 +0.434343 0.131313 0.480104 +0.434343 0.141414 0.483624 +0.434343 0.151515 0.487144 +0.434343 0.161616 0.490664 +0.434343 0.171717 0.494184 +0.434343 0.181818 0.497704 +0.434343 0.191919 0.501224 +0.434343 0.202020 0.504744 +0.434343 0.212121 0.508264 +0.434343 0.222222 0.511785 +0.434343 0.232323 0.515305 +0.434343 0.242424 0.518825 +0.434343 0.252525 0.522345 +0.434343 0.262626 0.525865 +0.434343 0.272727 0.529385 +0.434343 0.282828 0.532905 +0.434343 0.292929 0.536425 +0.434343 0.303030 0.539945 +0.434343 0.313131 0.543465 +0.434343 0.323232 0.546985 +0.434343 0.333333 0.550505 +0.434343 0.343434 0.554025 +0.434343 0.353535 0.557545 +0.434343 0.363636 0.561065 +0.434343 0.373737 0.564585 +0.434343 0.383838 0.568105 +0.434343 0.393939 0.571625 +0.434343 0.404040 0.575145 +0.434343 0.414141 0.578665 +0.434343 0.424242 0.582185 +0.434343 0.434343 0.585706 +0.434343 0.444444 0.589226 +0.434343 0.454545 0.592746 +0.434343 0.464646 0.596266 +0.434343 0.474747 0.599786 +0.434343 0.484848 0.603306 +0.434343 0.494949 0.606826 +0.434343 0.505051 0.610346 +0.434343 0.515152 0.613866 +0.434343 0.525253 0.617386 +0.434343 0.535354 0.620906 +0.434343 0.545455 0.624426 +0.434343 0.555556 0.627946 +0.434343 0.565657 0.631466 +0.434343 0.575758 0.634986 +0.434343 0.585859 0.638506 +0.434343 0.595960 0.642026 +0.434343 0.606061 0.645546 +0.434343 0.616162 0.649066 +0.434343 0.626263 0.652586 +0.434343 0.636364 0.656107 +0.434343 0.646465 0.659627 +0.434343 0.656566 0.663147 +0.434343 0.666667 0.666667 +0.434343 0.676768 0.670187 +0.434343 0.686869 0.673707 +0.434343 0.696970 0.677227 +0.434343 0.707071 0.680747 +0.434343 0.717172 0.684267 +0.434343 0.727273 0.687787 +0.434343 0.737374 0.691307 +0.434343 0.747475 0.694827 +0.434343 0.757576 0.698347 +0.434343 0.767677 0.701867 +0.434343 0.777778 0.705387 +0.434343 0.787879 0.708907 +0.434343 0.797980 0.712427 +0.434343 0.808081 0.715947 +0.434343 0.818182 0.719467 +0.434343 0.828283 0.722987 +0.434343 0.838384 0.726507 +0.434343 0.848485 0.730028 +0.434343 0.858586 0.733548 +0.434343 0.868687 0.737068 +0.434343 0.878788 0.740588 +0.434343 0.888889 0.744108 +0.434343 0.898990 0.747628 +0.434343 0.909091 0.751148 +0.434343 0.919192 0.754668 +0.434343 0.929293 0.758188 +0.434343 0.939394 0.761708 +0.434343 0.949495 0.765228 +0.434343 0.959596 0.768748 +0.434343 0.969697 0.772268 +0.434343 0.979798 0.775788 +0.434343 0.989899 0.779308 +0.434343 1.000000 0.782828 + +0.444444 0.000000 0.444444 +0.444444 0.010101 0.447811 +0.444444 0.020202 0.451178 +0.444444 0.030303 0.454545 +0.444444 0.040404 0.457912 +0.444444 0.050505 0.461279 +0.444444 0.060606 0.464646 +0.444444 0.070707 0.468013 +0.444444 0.080808 0.471380 +0.444444 0.090909 0.474747 +0.444444 0.101010 0.478114 +0.444444 0.111111 0.481481 +0.444444 0.121212 0.484848 +0.444444 0.131313 0.488215 +0.444444 0.141414 0.491582 +0.444444 0.151515 0.494949 +0.444444 0.161616 0.498316 +0.444444 0.171717 0.501684 +0.444444 0.181818 0.505051 +0.444444 0.191919 0.508418 +0.444444 0.202020 0.511785 +0.444444 0.212121 0.515152 +0.444444 0.222222 0.518519 +0.444444 0.232323 0.521886 +0.444444 0.242424 0.525253 +0.444444 0.252525 0.528620 +0.444444 0.262626 0.531987 +0.444444 0.272727 0.535354 +0.444444 0.282828 0.538721 +0.444444 0.292929 0.542088 +0.444444 0.303030 0.545455 +0.444444 0.313131 0.548822 +0.444444 0.323232 0.552189 +0.444444 0.333333 0.555556 +0.444444 0.343434 0.558923 +0.444444 0.353535 0.562290 +0.444444 0.363636 0.565657 +0.444444 0.373737 0.569024 +0.444444 0.383838 0.572391 +0.444444 0.393939 0.575758 +0.444444 0.404040 0.579125 +0.444444 0.414141 0.582492 +0.444444 0.424242 0.585859 +0.444444 0.434343 0.589226 +0.444444 0.444444 0.592593 +0.444444 0.454545 0.595960 +0.444444 0.464646 0.599327 +0.444444 0.474747 0.602694 +0.444444 0.484848 0.606061 +0.444444 0.494949 0.609428 +0.444444 0.505051 0.612795 +0.444444 0.515152 0.616162 +0.444444 0.525253 0.619529 +0.444444 0.535354 0.622896 +0.444444 0.545455 0.626263 +0.444444 0.555556 0.629630 +0.444444 0.565657 0.632997 +0.444444 0.575758 0.636364 +0.444444 0.585859 0.639731 +0.444444 0.595960 0.643098 +0.444444 0.606061 0.646465 +0.444444 0.616162 0.649832 +0.444444 0.626263 0.653199 +0.444444 0.636364 0.656566 +0.444444 0.646465 0.659933 +0.444444 0.656566 0.663300 +0.444444 0.666667 0.666667 +0.444444 0.676768 0.670034 +0.444444 0.686869 0.673401 +0.444444 0.696970 0.676768 +0.444444 0.707071 0.680135 +0.444444 0.717172 0.683502 +0.444444 0.727273 0.686869 +0.444444 0.737374 0.690236 +0.444444 0.747475 0.693603 +0.444444 0.757576 0.696970 +0.444444 0.767677 0.700337 +0.444444 0.777778 0.703704 +0.444444 0.787879 0.707071 +0.444444 0.797980 0.710438 +0.444444 0.808081 0.713805 +0.444444 0.818182 0.717172 +0.444444 0.828283 0.720539 +0.444444 0.838384 0.723906 +0.444444 0.848485 0.727273 +0.444444 0.858586 0.730640 +0.444444 0.868687 0.734007 +0.444444 0.878788 0.737374 +0.444444 0.888889 0.740741 +0.444444 0.898990 0.744108 +0.444444 0.909091 0.747475 +0.444444 0.919192 0.750842 +0.444444 0.929293 0.754209 +0.444444 0.939394 0.757576 +0.444444 0.949495 0.760943 +0.444444 0.959596 0.764310 +0.444444 0.969697 0.767677 +0.444444 0.979798 0.771044 +0.444444 0.989899 0.774411 +0.444444 1.000000 0.777778 + +0.454545 0.000000 0.454545 +0.454545 0.010101 0.457759 +0.454545 0.020202 0.460973 +0.454545 0.030303 0.464187 +0.454545 0.040404 0.467401 +0.454545 0.050505 0.470615 +0.454545 0.060606 0.473829 +0.454545 0.070707 0.477043 +0.454545 0.080808 0.480257 +0.454545 0.090909 0.483471 +0.454545 0.101010 0.486685 +0.454545 0.111111 0.489899 +0.454545 0.121212 0.493113 +0.454545 0.131313 0.496327 +0.454545 0.141414 0.499541 +0.454545 0.151515 0.502755 +0.454545 0.161616 0.505969 +0.454545 0.171717 0.509183 +0.454545 0.181818 0.512397 +0.454545 0.191919 0.515611 +0.454545 0.202020 0.518825 +0.454545 0.212121 0.522039 +0.454545 0.222222 0.525253 +0.454545 0.232323 0.528466 +0.454545 0.242424 0.531680 +0.454545 0.252525 0.534894 +0.454545 0.262626 0.538108 +0.454545 0.272727 0.541322 +0.454545 0.282828 0.544536 +0.454545 0.292929 0.547750 +0.454545 0.303030 0.550964 +0.454545 0.313131 0.554178 +0.454545 0.323232 0.557392 +0.454545 0.333333 0.560606 +0.454545 0.343434 0.563820 +0.454545 0.353535 0.567034 +0.454545 0.363636 0.570248 +0.454545 0.373737 0.573462 +0.454545 0.383838 0.576676 +0.454545 0.393939 0.579890 +0.454545 0.404040 0.583104 +0.454545 0.414141 0.586318 +0.454545 0.424242 0.589532 +0.454545 0.434343 0.592746 +0.454545 0.444444 0.595960 +0.454545 0.454545 0.599174 +0.454545 0.464646 0.602388 +0.454545 0.474747 0.605601 +0.454545 0.484848 0.608815 +0.454545 0.494949 0.612029 +0.454545 0.505051 0.615243 +0.454545 0.515152 0.618457 +0.454545 0.525253 0.621671 +0.454545 0.535354 0.624885 +0.454545 0.545455 0.628099 +0.454545 0.555556 0.631313 +0.454545 0.565657 0.634527 +0.454545 0.575758 0.637741 +0.454545 0.585859 0.640955 +0.454545 0.595960 0.644169 +0.454545 0.606061 0.647383 +0.454545 0.616162 0.650597 +0.454545 0.626263 0.653811 +0.454545 0.636364 0.657025 +0.454545 0.646465 0.660239 +0.454545 0.656566 0.663453 +0.454545 0.666667 0.666667 +0.454545 0.676768 0.669881 +0.454545 0.686869 0.673095 +0.454545 0.696970 0.676309 +0.454545 0.707071 0.679522 +0.454545 0.717172 0.682736 +0.454545 0.727273 0.685950 +0.454545 0.737374 0.689164 +0.454545 0.747475 0.692378 +0.454545 0.757576 0.695592 +0.454545 0.767677 0.698806 +0.454545 0.777778 0.702020 +0.454545 0.787879 0.705234 +0.454545 0.797980 0.708448 +0.454545 0.808081 0.711662 +0.454545 0.818182 0.714876 +0.454545 0.828283 0.718090 +0.454545 0.838384 0.721304 +0.454545 0.848485 0.724518 +0.454545 0.858586 0.727732 +0.454545 0.868687 0.730946 +0.454545 0.878788 0.734160 +0.454545 0.888889 0.737374 +0.454545 0.898990 0.740588 +0.454545 0.909091 0.743802 +0.454545 0.919192 0.747016 +0.454545 0.929293 0.750230 +0.454545 0.939394 0.753444 +0.454545 0.949495 0.756657 +0.454545 0.959596 0.759871 +0.454545 0.969697 0.763085 +0.454545 0.979798 0.766299 +0.454545 0.989899 0.769513 +0.454545 1.000000 0.772727 + +0.464646 0.000000 0.464646 +0.464646 0.010101 0.467707 +0.464646 0.020202 0.470768 +0.464646 0.030303 0.473829 +0.464646 0.040404 0.476890 +0.464646 0.050505 0.479951 +0.464646 0.060606 0.483012 +0.464646 0.070707 0.486073 +0.464646 0.080808 0.489134 +0.464646 0.090909 0.492195 +0.464646 0.101010 0.495256 +0.464646 0.111111 0.498316 +0.464646 0.121212 0.501377 +0.464646 0.131313 0.504438 +0.464646 0.141414 0.507499 +0.464646 0.151515 0.510560 +0.464646 0.161616 0.513621 +0.464646 0.171717 0.516682 +0.464646 0.181818 0.519743 +0.464646 0.191919 0.522804 +0.464646 0.202020 0.525865 +0.464646 0.212121 0.528926 +0.464646 0.222222 0.531987 +0.464646 0.232323 0.535047 +0.464646 0.242424 0.538108 +0.464646 0.252525 0.541169 +0.464646 0.262626 0.544230 +0.464646 0.272727 0.547291 +0.464646 0.282828 0.550352 +0.464646 0.292929 0.553413 +0.464646 0.303030 0.556474 +0.464646 0.313131 0.559535 +0.464646 0.323232 0.562596 +0.464646 0.333333 0.565657 +0.464646 0.343434 0.568717 +0.464646 0.353535 0.571778 +0.464646 0.363636 0.574839 +0.464646 0.373737 0.577900 +0.464646 0.383838 0.580961 +0.464646 0.393939 0.584022 +0.464646 0.404040 0.587083 +0.464646 0.414141 0.590144 +0.464646 0.424242 0.593205 +0.464646 0.434343 0.596266 +0.464646 0.444444 0.599327 +0.464646 0.454545 0.602388 +0.464646 0.464646 0.605448 +0.464646 0.474747 0.608509 +0.464646 0.484848 0.611570 +0.464646 0.494949 0.614631 +0.464646 0.505051 0.617692 +0.464646 0.515152 0.620753 +0.464646 0.525253 0.623814 +0.464646 0.535354 0.626875 +0.464646 0.545455 0.629936 +0.464646 0.555556 0.632997 +0.464646 0.565657 0.636058 +0.464646 0.575758 0.639118 +0.464646 0.585859 0.642179 +0.464646 0.595960 0.645240 +0.464646 0.606061 0.648301 +0.464646 0.616162 0.651362 +0.464646 0.626263 0.654423 +0.464646 0.636364 0.657484 +0.464646 0.646465 0.660545 +0.464646 0.656566 0.663606 +0.464646 0.666667 0.666667 +0.464646 0.676768 0.669728 +0.464646 0.686869 0.672788 +0.464646 0.696970 0.675849 +0.464646 0.707071 0.678910 +0.464646 0.717172 0.681971 +0.464646 0.727273 0.685032 +0.464646 0.737374 0.688093 +0.464646 0.747475 0.691154 +0.464646 0.757576 0.694215 +0.464646 0.767677 0.697276 +0.464646 0.777778 0.700337 +0.464646 0.787879 0.703398 +0.464646 0.797980 0.706459 +0.464646 0.808081 0.709519 +0.464646 0.818182 0.712580 +0.464646 0.828283 0.715641 +0.464646 0.838384 0.718702 +0.464646 0.848485 0.721763 +0.464646 0.858586 0.724824 +0.464646 0.868687 0.727885 +0.464646 0.878788 0.730946 +0.464646 0.888889 0.734007 +0.464646 0.898990 0.737068 +0.464646 0.909091 0.740129 +0.464646 0.919192 0.743189 +0.464646 0.929293 0.746250 +0.464646 0.939394 0.749311 +0.464646 0.949495 0.752372 +0.464646 0.959596 0.755433 +0.464646 0.969697 0.758494 +0.464646 0.979798 0.761555 +0.464646 0.989899 0.764616 +0.464646 1.000000 0.767677 + +0.474747 0.000000 0.474747 +0.474747 0.010101 0.477655 +0.474747 0.020202 0.480563 +0.474747 0.030303 0.483471 +0.474747 0.040404 0.486379 +0.474747 0.050505 0.489287 +0.474747 0.060606 0.492195 +0.474747 0.070707 0.495103 +0.474747 0.080808 0.498010 +0.474747 0.090909 0.500918 +0.474747 0.101010 0.503826 +0.474747 0.111111 0.506734 +0.474747 0.121212 0.509642 +0.474747 0.131313 0.512550 +0.474747 0.141414 0.515458 +0.474747 0.151515 0.518365 +0.474747 0.161616 0.521273 +0.474747 0.171717 0.524181 +0.474747 0.181818 0.527089 +0.474747 0.191919 0.529997 +0.474747 0.202020 0.532905 +0.474747 0.212121 0.535813 +0.474747 0.222222 0.538721 +0.474747 0.232323 0.541628 +0.474747 0.242424 0.544536 +0.474747 0.252525 0.547444 +0.474747 0.262626 0.550352 +0.474747 0.272727 0.553260 +0.474747 0.282828 0.556168 +0.474747 0.292929 0.559076 +0.474747 0.303030 0.561983 +0.474747 0.313131 0.564891 +0.474747 0.323232 0.567799 +0.474747 0.333333 0.570707 +0.474747 0.343434 0.573615 +0.474747 0.353535 0.576523 +0.474747 0.363636 0.579431 +0.474747 0.373737 0.582339 +0.474747 0.383838 0.585246 +0.474747 0.393939 0.588154 +0.474747 0.404040 0.591062 +0.474747 0.414141 0.593970 +0.474747 0.424242 0.596878 +0.474747 0.434343 0.599786 +0.474747 0.444444 0.602694 +0.474747 0.454545 0.605601 +0.474747 0.464646 0.608509 +0.474747 0.474747 0.611417 +0.474747 0.484848 0.614325 +0.474747 0.494949 0.617233 +0.474747 0.505051 0.620141 +0.474747 0.515152 0.623049 +0.474747 0.525253 0.625957 +0.474747 0.535354 0.628864 +0.474747 0.545455 0.631772 +0.474747 0.555556 0.634680 +0.474747 0.565657 0.637588 +0.474747 0.575758 0.640496 +0.474747 0.585859 0.643404 +0.474747 0.595960 0.646312 +0.474747 0.606061 0.649219 +0.474747 0.616162 0.652127 +0.474747 0.626263 0.655035 +0.474747 0.636364 0.657943 +0.474747 0.646465 0.660851 +0.474747 0.656566 0.663759 +0.474747 0.666667 0.666667 +0.474747 0.676768 0.669575 +0.474747 0.686869 0.672482 +0.474747 0.696970 0.675390 +0.474747 0.707071 0.678298 +0.474747 0.717172 0.681206 +0.474747 0.727273 0.684114 +0.474747 0.737374 0.687022 +0.474747 0.747475 0.689930 +0.474747 0.757576 0.692837 +0.474747 0.767677 0.695745 +0.474747 0.777778 0.698653 +0.474747 0.787879 0.701561 +0.474747 0.797980 0.704469 +0.474747 0.808081 0.707377 +0.474747 0.818182 0.710285 +0.474747 0.828283 0.713193 +0.474747 0.838384 0.716100 +0.474747 0.848485 0.719008 +0.474747 0.858586 0.721916 +0.474747 0.868687 0.724824 +0.474747 0.878788 0.727732 +0.474747 0.888889 0.730640 +0.474747 0.898990 0.733548 +0.474747 0.909091 0.736455 +0.474747 0.919192 0.739363 +0.474747 0.929293 0.742271 +0.474747 0.939394 0.745179 +0.474747 0.949495 0.748087 +0.474747 0.959596 0.750995 +0.474747 0.969697 0.753903 +0.474747 0.979798 0.756811 +0.474747 0.989899 0.759718 +0.474747 1.000000 0.762626 + +0.484848 0.000000 0.484848 +0.484848 0.010101 0.487603 +0.484848 0.020202 0.490358 +0.484848 0.030303 0.493113 +0.484848 0.040404 0.495868 +0.484848 0.050505 0.498623 +0.484848 0.060606 0.501377 +0.484848 0.070707 0.504132 +0.484848 0.080808 0.506887 +0.484848 0.090909 0.509642 +0.484848 0.101010 0.512397 +0.484848 0.111111 0.515152 +0.484848 0.121212 0.517906 +0.484848 0.131313 0.520661 +0.484848 0.141414 0.523416 +0.484848 0.151515 0.526171 +0.484848 0.161616 0.528926 +0.484848 0.171717 0.531680 +0.484848 0.181818 0.534435 +0.484848 0.191919 0.537190 +0.484848 0.202020 0.539945 +0.484848 0.212121 0.542700 +0.484848 0.222222 0.545455 +0.484848 0.232323 0.548209 +0.484848 0.242424 0.550964 +0.484848 0.252525 0.553719 +0.484848 0.262626 0.556474 +0.484848 0.272727 0.559229 +0.484848 0.282828 0.561983 +0.484848 0.292929 0.564738 +0.484848 0.303030 0.567493 +0.484848 0.313131 0.570248 +0.484848 0.323232 0.573003 +0.484848 0.333333 0.575758 +0.484848 0.343434 0.578512 +0.484848 0.353535 0.581267 +0.484848 0.363636 0.584022 +0.484848 0.373737 0.586777 +0.484848 0.383838 0.589532 +0.484848 0.393939 0.592287 +0.484848 0.404040 0.595041 +0.484848 0.414141 0.597796 +0.484848 0.424242 0.600551 +0.484848 0.434343 0.603306 +0.484848 0.444444 0.606061 +0.484848 0.454545 0.608815 +0.484848 0.464646 0.611570 +0.484848 0.474747 0.614325 +0.484848 0.484848 0.617080 +0.484848 0.494949 0.619835 +0.484848 0.505051 0.622590 +0.484848 0.515152 0.625344 +0.484848 0.525253 0.628099 +0.484848 0.535354 0.630854 +0.484848 0.545455 0.633609 +0.484848 0.555556 0.636364 +0.484848 0.565657 0.639118 +0.484848 0.575758 0.641873 +0.484848 0.585859 0.644628 +0.484848 0.595960 0.647383 +0.484848 0.606061 0.650138 +0.484848 0.616162 0.652893 +0.484848 0.626263 0.655647 +0.484848 0.636364 0.658402 +0.484848 0.646465 0.661157 +0.484848 0.656566 0.663912 +0.484848 0.666667 0.666667 +0.484848 0.676768 0.669421 +0.484848 0.686869 0.672176 +0.484848 0.696970 0.674931 +0.484848 0.707071 0.677686 +0.484848 0.717172 0.680441 +0.484848 0.727273 0.683196 +0.484848 0.737374 0.685950 +0.484848 0.747475 0.688705 +0.484848 0.757576 0.691460 +0.484848 0.767677 0.694215 +0.484848 0.777778 0.696970 +0.484848 0.787879 0.699725 +0.484848 0.797980 0.702479 +0.484848 0.808081 0.705234 +0.484848 0.818182 0.707989 +0.484848 0.828283 0.710744 +0.484848 0.838384 0.713499 +0.484848 0.848485 0.716253 +0.484848 0.858586 0.719008 +0.484848 0.868687 0.721763 +0.484848 0.878788 0.724518 +0.484848 0.888889 0.727273 +0.484848 0.898990 0.730028 +0.484848 0.909091 0.732782 +0.484848 0.919192 0.735537 +0.484848 0.929293 0.738292 +0.484848 0.939394 0.741047 +0.484848 0.949495 0.743802 +0.484848 0.959596 0.746556 +0.484848 0.969697 0.749311 +0.484848 0.979798 0.752066 +0.484848 0.989899 0.754821 +0.484848 1.000000 0.757576 + +0.494949 0.000000 0.494949 +0.494949 0.010101 0.497551 +0.494949 0.020202 0.500153 +0.494949 0.030303 0.502755 +0.494949 0.040404 0.505357 +0.494949 0.050505 0.507958 +0.494949 0.060606 0.510560 +0.494949 0.070707 0.513162 +0.494949 0.080808 0.515764 +0.494949 0.090909 0.518365 +0.494949 0.101010 0.520967 +0.494949 0.111111 0.523569 +0.494949 0.121212 0.526171 +0.494949 0.131313 0.528773 +0.494949 0.141414 0.531374 +0.494949 0.151515 0.533976 +0.494949 0.161616 0.536578 +0.494949 0.171717 0.539180 +0.494949 0.181818 0.541781 +0.494949 0.191919 0.544383 +0.494949 0.202020 0.546985 +0.494949 0.212121 0.549587 +0.494949 0.222222 0.552189 +0.494949 0.232323 0.554790 +0.494949 0.242424 0.557392 +0.494949 0.252525 0.559994 +0.494949 0.262626 0.562596 +0.494949 0.272727 0.565197 +0.494949 0.282828 0.567799 +0.494949 0.292929 0.570401 +0.494949 0.303030 0.573003 +0.494949 0.313131 0.575605 +0.494949 0.323232 0.578206 +0.494949 0.333333 0.580808 +0.494949 0.343434 0.583410 +0.494949 0.353535 0.586012 +0.494949 0.363636 0.588613 +0.494949 0.373737 0.591215 +0.494949 0.383838 0.593817 +0.494949 0.393939 0.596419 +0.494949 0.404040 0.599021 +0.494949 0.414141 0.601622 +0.494949 0.424242 0.604224 +0.494949 0.434343 0.606826 +0.494949 0.444444 0.609428 +0.494949 0.454545 0.612029 +0.494949 0.464646 0.614631 +0.494949 0.474747 0.617233 +0.494949 0.484848 0.619835 +0.494949 0.494949 0.622436 +0.494949 0.505051 0.625038 +0.494949 0.515152 0.627640 +0.494949 0.525253 0.630242 +0.494949 0.535354 0.632844 +0.494949 0.545455 0.635445 +0.494949 0.555556 0.638047 +0.494949 0.565657 0.640649 +0.494949 0.575758 0.643251 +0.494949 0.585859 0.645852 +0.494949 0.595960 0.648454 +0.494949 0.606061 0.651056 +0.494949 0.616162 0.653658 +0.494949 0.626263 0.656260 +0.494949 0.636364 0.658861 +0.494949 0.646465 0.661463 +0.494949 0.656566 0.664065 +0.494949 0.666667 0.666667 +0.494949 0.676768 0.669268 +0.494949 0.686869 0.671870 +0.494949 0.696970 0.674472 +0.494949 0.707071 0.677074 +0.494949 0.717172 0.679676 +0.494949 0.727273 0.682277 +0.494949 0.737374 0.684879 +0.494949 0.747475 0.687481 +0.494949 0.757576 0.690083 +0.494949 0.767677 0.692684 +0.494949 0.777778 0.695286 +0.494949 0.787879 0.697888 +0.494949 0.797980 0.700490 +0.494949 0.808081 0.703092 +0.494949 0.818182 0.705693 +0.494949 0.828283 0.708295 +0.494949 0.838384 0.710897 +0.494949 0.848485 0.713499 +0.494949 0.858586 0.716100 +0.494949 0.868687 0.718702 +0.494949 0.878788 0.721304 +0.494949 0.888889 0.723906 +0.494949 0.898990 0.726507 +0.494949 0.909091 0.729109 +0.494949 0.919192 0.731711 +0.494949 0.929293 0.734313 +0.494949 0.939394 0.736915 +0.494949 0.949495 0.739516 +0.494949 0.959596 0.742118 +0.494949 0.969697 0.744720 +0.494949 0.979798 0.747322 +0.494949 0.989899 0.749923 +0.494949 1.000000 0.752525 + +0.505051 0.000000 0.505051 +0.505051 0.010101 0.507499 +0.505051 0.020202 0.509948 +0.505051 0.030303 0.512397 +0.505051 0.040404 0.514845 +0.505051 0.050505 0.517294 +0.505051 0.060606 0.519743 +0.505051 0.070707 0.522192 +0.505051 0.080808 0.524640 +0.505051 0.090909 0.527089 +0.505051 0.101010 0.529538 +0.505051 0.111111 0.531987 +0.505051 0.121212 0.534435 +0.505051 0.131313 0.536884 +0.505051 0.141414 0.539333 +0.505051 0.151515 0.541781 +0.505051 0.161616 0.544230 +0.505051 0.171717 0.546679 +0.505051 0.181818 0.549128 +0.505051 0.191919 0.551576 +0.505051 0.202020 0.554025 +0.505051 0.212121 0.556474 +0.505051 0.222222 0.558923 +0.505051 0.232323 0.561371 +0.505051 0.242424 0.563820 +0.505051 0.252525 0.566269 +0.505051 0.262626 0.568717 +0.505051 0.272727 0.571166 +0.505051 0.282828 0.573615 +0.505051 0.292929 0.576064 +0.505051 0.303030 0.578512 +0.505051 0.313131 0.580961 +0.505051 0.323232 0.583410 +0.505051 0.333333 0.585859 +0.505051 0.343434 0.588307 +0.505051 0.353535 0.590756 +0.505051 0.363636 0.593205 +0.505051 0.373737 0.595654 +0.505051 0.383838 0.598102 +0.505051 0.393939 0.600551 +0.505051 0.404040 0.603000 +0.505051 0.414141 0.605448 +0.505051 0.424242 0.607897 +0.505051 0.434343 0.610346 +0.505051 0.444444 0.612795 +0.505051 0.454545 0.615243 +0.505051 0.464646 0.617692 +0.505051 0.474747 0.620141 +0.505051 0.484848 0.622590 +0.505051 0.494949 0.625038 +0.505051 0.505051 0.627487 +0.505051 0.515152 0.629936 +0.505051 0.525253 0.632384 +0.505051 0.535354 0.634833 +0.505051 0.545455 0.637282 +0.505051 0.555556 0.639731 +0.505051 0.565657 0.642179 +0.505051 0.575758 0.644628 +0.505051 0.585859 0.647077 +0.505051 0.595960 0.649526 +0.505051 0.606061 0.651974 +0.505051 0.616162 0.654423 +0.505051 0.626263 0.656872 +0.505051 0.636364 0.659320 +0.505051 0.646465 0.661769 +0.505051 0.656566 0.664218 +0.505051 0.666667 0.666667 +0.505051 0.676768 0.669115 +0.505051 0.686869 0.671564 +0.505051 0.696970 0.674013 +0.505051 0.707071 0.676462 +0.505051 0.717172 0.678910 +0.505051 0.727273 0.681359 +0.505051 0.737374 0.683808 +0.505051 0.747475 0.686257 +0.505051 0.757576 0.688705 +0.505051 0.767677 0.691154 +0.505051 0.777778 0.693603 +0.505051 0.787879 0.696051 +0.505051 0.797980 0.698500 +0.505051 0.808081 0.700949 +0.505051 0.818182 0.703398 +0.505051 0.828283 0.705846 +0.505051 0.838384 0.708295 +0.505051 0.848485 0.710744 +0.505051 0.858586 0.713193 +0.505051 0.868687 0.715641 +0.505051 0.878788 0.718090 +0.505051 0.888889 0.720539 +0.505051 0.898990 0.722987 +0.505051 0.909091 0.725436 +0.505051 0.919192 0.727885 +0.505051 0.929293 0.730334 +0.505051 0.939394 0.732782 +0.505051 0.949495 0.735231 +0.505051 0.959596 0.737680 +0.505051 0.969697 0.740129 +0.505051 0.979798 0.742577 +0.505051 0.989899 0.745026 +0.505051 1.000000 0.747475 + +0.515152 0.000000 0.515152 +0.515152 0.010101 0.517447 +0.515152 0.020202 0.519743 +0.515152 0.030303 0.522039 +0.515152 0.040404 0.524334 +0.515152 0.050505 0.526630 +0.515152 0.060606 0.528926 +0.515152 0.070707 0.531221 +0.515152 0.080808 0.533517 +0.515152 0.090909 0.535813 +0.515152 0.101010 0.538108 +0.515152 0.111111 0.540404 +0.515152 0.121212 0.542700 +0.515152 0.131313 0.544995 +0.515152 0.141414 0.547291 +0.515152 0.151515 0.549587 +0.515152 0.161616 0.551882 +0.515152 0.171717 0.554178 +0.515152 0.181818 0.556474 +0.515152 0.191919 0.558770 +0.515152 0.202020 0.561065 +0.515152 0.212121 0.563361 +0.515152 0.222222 0.565657 +0.515152 0.232323 0.567952 +0.515152 0.242424 0.570248 +0.515152 0.252525 0.572544 +0.515152 0.262626 0.574839 +0.515152 0.272727 0.577135 +0.515152 0.282828 0.579431 +0.515152 0.292929 0.581726 +0.515152 0.303030 0.584022 +0.515152 0.313131 0.586318 +0.515152 0.323232 0.588613 +0.515152 0.333333 0.590909 +0.515152 0.343434 0.593205 +0.515152 0.353535 0.595500 +0.515152 0.363636 0.597796 +0.515152 0.373737 0.600092 +0.515152 0.383838 0.602388 +0.515152 0.393939 0.604683 +0.515152 0.404040 0.606979 +0.515152 0.414141 0.609275 +0.515152 0.424242 0.611570 +0.515152 0.434343 0.613866 +0.515152 0.444444 0.616162 +0.515152 0.454545 0.618457 +0.515152 0.464646 0.620753 +0.515152 0.474747 0.623049 +0.515152 0.484848 0.625344 +0.515152 0.494949 0.627640 +0.515152 0.505051 0.629936 +0.515152 0.515152 0.632231 +0.515152 0.525253 0.634527 +0.515152 0.535354 0.636823 +0.515152 0.545455 0.639118 +0.515152 0.555556 0.641414 +0.515152 0.565657 0.643710 +0.515152 0.575758 0.646006 +0.515152 0.585859 0.648301 +0.515152 0.595960 0.650597 +0.515152 0.606061 0.652893 +0.515152 0.616162 0.655188 +0.515152 0.626263 0.657484 +0.515152 0.636364 0.659780 +0.515152 0.646465 0.662075 +0.515152 0.656566 0.664371 +0.515152 0.666667 0.666667 +0.515152 0.676768 0.668962 +0.515152 0.686869 0.671258 +0.515152 0.696970 0.673554 +0.515152 0.707071 0.675849 +0.515152 0.717172 0.678145 +0.515152 0.727273 0.680441 +0.515152 0.737374 0.682736 +0.515152 0.747475 0.685032 +0.515152 0.757576 0.687328 +0.515152 0.767677 0.689624 +0.515152 0.777778 0.691919 +0.515152 0.787879 0.694215 +0.515152 0.797980 0.696511 +0.515152 0.808081 0.698806 +0.515152 0.818182 0.701102 +0.515152 0.828283 0.703398 +0.515152 0.838384 0.705693 +0.515152 0.848485 0.707989 +0.515152 0.858586 0.710285 +0.515152 0.868687 0.712580 +0.515152 0.878788 0.714876 +0.515152 0.888889 0.717172 +0.515152 0.898990 0.719467 +0.515152 0.909091 0.721763 +0.515152 0.919192 0.724059 +0.515152 0.929293 0.726354 +0.515152 0.939394 0.728650 +0.515152 0.949495 0.730946 +0.515152 0.959596 0.733242 +0.515152 0.969697 0.735537 +0.515152 0.979798 0.737833 +0.515152 0.989899 0.740129 +0.515152 1.000000 0.742424 + +0.525253 0.000000 0.525253 +0.525253 0.010101 0.527395 +0.525253 0.020202 0.529538 +0.525253 0.030303 0.531680 +0.525253 0.040404 0.533823 +0.525253 0.050505 0.535966 +0.525253 0.060606 0.538108 +0.525253 0.070707 0.540251 +0.525253 0.080808 0.542394 +0.525253 0.090909 0.544536 +0.525253 0.101010 0.546679 +0.525253 0.111111 0.548822 +0.525253 0.121212 0.550964 +0.525253 0.131313 0.553107 +0.525253 0.141414 0.555249 +0.525253 0.151515 0.557392 +0.525253 0.161616 0.559535 +0.525253 0.171717 0.561677 +0.525253 0.181818 0.563820 +0.525253 0.191919 0.565963 +0.525253 0.202020 0.568105 +0.525253 0.212121 0.570248 +0.525253 0.222222 0.572391 +0.525253 0.232323 0.574533 +0.525253 0.242424 0.576676 +0.525253 0.252525 0.578818 +0.525253 0.262626 0.580961 +0.525253 0.272727 0.583104 +0.525253 0.282828 0.585246 +0.525253 0.292929 0.587389 +0.525253 0.303030 0.589532 +0.525253 0.313131 0.591674 +0.525253 0.323232 0.593817 +0.525253 0.333333 0.595960 +0.525253 0.343434 0.598102 +0.525253 0.353535 0.600245 +0.525253 0.363636 0.602388 +0.525253 0.373737 0.604530 +0.525253 0.383838 0.606673 +0.525253 0.393939 0.608815 +0.525253 0.404040 0.610958 +0.525253 0.414141 0.613101 +0.525253 0.424242 0.615243 +0.525253 0.434343 0.617386 +0.525253 0.444444 0.619529 +0.525253 0.454545 0.621671 +0.525253 0.464646 0.623814 +0.525253 0.474747 0.625957 +0.525253 0.484848 0.628099 +0.525253 0.494949 0.630242 +0.525253 0.505051 0.632384 +0.525253 0.515152 0.634527 +0.525253 0.525253 0.636670 +0.525253 0.535354 0.638812 +0.525253 0.545455 0.640955 +0.525253 0.555556 0.643098 +0.525253 0.565657 0.645240 +0.525253 0.575758 0.647383 +0.525253 0.585859 0.649526 +0.525253 0.595960 0.651668 +0.525253 0.606061 0.653811 +0.525253 0.616162 0.655953 +0.525253 0.626263 0.658096 +0.525253 0.636364 0.660239 +0.525253 0.646465 0.662381 +0.525253 0.656566 0.664524 +0.525253 0.666667 0.666667 +0.525253 0.676768 0.668809 +0.525253 0.686869 0.670952 +0.525253 0.696970 0.673095 +0.525253 0.707071 0.675237 +0.525253 0.717172 0.677380 +0.525253 0.727273 0.679522 +0.525253 0.737374 0.681665 +0.525253 0.747475 0.683808 +0.525253 0.757576 0.685950 +0.525253 0.767677 0.688093 +0.525253 0.777778 0.690236 +0.525253 0.787879 0.692378 +0.525253 0.797980 0.694521 +0.525253 0.808081 0.696664 +0.525253 0.818182 0.698806 +0.525253 0.828283 0.700949 +0.525253 0.838384 0.703092 +0.525253 0.848485 0.705234 +0.525253 0.858586 0.707377 +0.525253 0.868687 0.709519 +0.525253 0.878788 0.711662 +0.525253 0.888889 0.713805 +0.525253 0.898990 0.715947 +0.525253 0.909091 0.718090 +0.525253 0.919192 0.720233 +0.525253 0.929293 0.722375 +0.525253 0.939394 0.724518 +0.525253 0.949495 0.726661 +0.525253 0.959596 0.728803 +0.525253 0.969697 0.730946 +0.525253 0.979798 0.733088 +0.525253 0.989899 0.735231 +0.525253 1.000000 0.737374 + +0.535354 0.000000 0.535354 +0.535354 0.010101 0.537343 +0.535354 0.020202 0.539333 +0.535354 0.030303 0.541322 +0.535354 0.040404 0.543312 +0.535354 0.050505 0.545301 +0.535354 0.060606 0.547291 +0.535354 0.070707 0.549281 +0.535354 0.080808 0.551270 +0.535354 0.090909 0.553260 +0.535354 0.101010 0.555249 +0.535354 0.111111 0.557239 +0.535354 0.121212 0.559229 +0.535354 0.131313 0.561218 +0.535354 0.141414 0.563208 +0.535354 0.151515 0.565197 +0.535354 0.161616 0.567187 +0.535354 0.171717 0.569177 +0.535354 0.181818 0.571166 +0.535354 0.191919 0.573156 +0.535354 0.202020 0.575145 +0.535354 0.212121 0.577135 +0.535354 0.222222 0.579125 +0.535354 0.232323 0.581114 +0.535354 0.242424 0.583104 +0.535354 0.252525 0.585093 +0.535354 0.262626 0.587083 +0.535354 0.272727 0.589073 +0.535354 0.282828 0.591062 +0.535354 0.292929 0.593052 +0.535354 0.303030 0.595041 +0.535354 0.313131 0.597031 +0.535354 0.323232 0.599021 +0.535354 0.333333 0.601010 +0.535354 0.343434 0.603000 +0.535354 0.353535 0.604989 +0.535354 0.363636 0.606979 +0.535354 0.373737 0.608968 +0.535354 0.383838 0.610958 +0.535354 0.393939 0.612948 +0.535354 0.404040 0.614937 +0.535354 0.414141 0.616927 +0.535354 0.424242 0.618916 +0.535354 0.434343 0.620906 +0.535354 0.444444 0.622896 +0.535354 0.454545 0.624885 +0.535354 0.464646 0.626875 +0.535354 0.474747 0.628864 +0.535354 0.484848 0.630854 +0.535354 0.494949 0.632844 +0.535354 0.505051 0.634833 +0.535354 0.515152 0.636823 +0.535354 0.525253 0.638812 +0.535354 0.535354 0.640802 +0.535354 0.545455 0.642792 +0.535354 0.555556 0.644781 +0.535354 0.565657 0.646771 +0.535354 0.575758 0.648760 +0.535354 0.585859 0.650750 +0.535354 0.595960 0.652740 +0.535354 0.606061 0.654729 +0.535354 0.616162 0.656719 +0.535354 0.626263 0.658708 +0.535354 0.636364 0.660698 +0.535354 0.646465 0.662687 +0.535354 0.656566 0.664677 +0.535354 0.666667 0.666667 +0.535354 0.676768 0.668656 +0.535354 0.686869 0.670646 +0.535354 0.696970 0.672635 +0.535354 0.707071 0.674625 +0.535354 0.717172 0.676615 +0.535354 0.727273 0.678604 +0.535354 0.737374 0.680594 +0.535354 0.747475 0.682583 +0.535354 0.757576 0.684573 +0.535354 0.767677 0.686563 +0.535354 0.777778 0.688552 +0.535354 0.787879 0.690542 +0.535354 0.797980 0.692531 +0.535354 0.808081 0.694521 +0.535354 0.818182 0.696511 +0.535354 0.828283 0.698500 +0.535354 0.838384 0.700490 +0.535354 0.848485 0.702479 +0.535354 0.858586 0.704469 +0.535354 0.868687 0.706459 +0.535354 0.878788 0.708448 +0.535354 0.888889 0.710438 +0.535354 0.898990 0.712427 +0.535354 0.909091 0.714417 +0.535354 0.919192 0.716406 +0.535354 0.929293 0.718396 +0.535354 0.939394 0.720386 +0.535354 0.949495 0.722375 +0.535354 0.959596 0.724365 +0.535354 0.969697 0.726354 +0.535354 0.979798 0.728344 +0.535354 0.989899 0.730334 +0.535354 1.000000 0.732323 + +0.545455 0.000000 0.545455 +0.545455 0.010101 0.547291 +0.545455 0.020202 0.549128 +0.545455 0.030303 0.550964 +0.545455 0.040404 0.552801 +0.545455 0.050505 0.554637 +0.545455 0.060606 0.556474 +0.545455 0.070707 0.558310 +0.545455 0.080808 0.560147 +0.545455 0.090909 0.561983 +0.545455 0.101010 0.563820 +0.545455 0.111111 0.565657 +0.545455 0.121212 0.567493 +0.545455 0.131313 0.569330 +0.545455 0.141414 0.571166 +0.545455 0.151515 0.573003 +0.545455 0.161616 0.574839 +0.545455 0.171717 0.576676 +0.545455 0.181818 0.578512 +0.545455 0.191919 0.580349 +0.545455 0.202020 0.582185 +0.545455 0.212121 0.584022 +0.545455 0.222222 0.585859 +0.545455 0.232323 0.587695 +0.545455 0.242424 0.589532 +0.545455 0.252525 0.591368 +0.545455 0.262626 0.593205 +0.545455 0.272727 0.595041 +0.545455 0.282828 0.596878 +0.545455 0.292929 0.598714 +0.545455 0.303030 0.600551 +0.545455 0.313131 0.602388 +0.545455 0.323232 0.604224 +0.545455 0.333333 0.606061 +0.545455 0.343434 0.607897 +0.545455 0.353535 0.609734 +0.545455 0.363636 0.611570 +0.545455 0.373737 0.613407 +0.545455 0.383838 0.615243 +0.545455 0.393939 0.617080 +0.545455 0.404040 0.618916 +0.545455 0.414141 0.620753 +0.545455 0.424242 0.622590 +0.545455 0.434343 0.624426 +0.545455 0.444444 0.626263 +0.545455 0.454545 0.628099 +0.545455 0.464646 0.629936 +0.545455 0.474747 0.631772 +0.545455 0.484848 0.633609 +0.545455 0.494949 0.635445 +0.545455 0.505051 0.637282 +0.545455 0.515152 0.639118 +0.545455 0.525253 0.640955 +0.545455 0.535354 0.642792 +0.545455 0.545455 0.644628 +0.545455 0.555556 0.646465 +0.545455 0.565657 0.648301 +0.545455 0.575758 0.650138 +0.545455 0.585859 0.651974 +0.545455 0.595960 0.653811 +0.545455 0.606061 0.655647 +0.545455 0.616162 0.657484 +0.545455 0.626263 0.659320 +0.545455 0.636364 0.661157 +0.545455 0.646465 0.662994 +0.545455 0.656566 0.664830 +0.545455 0.666667 0.666667 +0.545455 0.676768 0.668503 +0.545455 0.686869 0.670340 +0.545455 0.696970 0.672176 +0.545455 0.707071 0.674013 +0.545455 0.717172 0.675849 +0.545455 0.727273 0.677686 +0.545455 0.737374 0.679522 +0.545455 0.747475 0.681359 +0.545455 0.757576 0.683196 +0.545455 0.767677 0.685032 +0.545455 0.777778 0.686869 +0.545455 0.787879 0.688705 +0.545455 0.797980 0.690542 +0.545455 0.808081 0.692378 +0.545455 0.818182 0.694215 +0.545455 0.828283 0.696051 +0.545455 0.838384 0.697888 +0.545455 0.848485 0.699725 +0.545455 0.858586 0.701561 +0.545455 0.868687 0.703398 +0.545455 0.878788 0.705234 +0.545455 0.888889 0.707071 +0.545455 0.898990 0.708907 +0.545455 0.909091 0.710744 +0.545455 0.919192 0.712580 +0.545455 0.929293 0.714417 +0.545455 0.939394 0.716253 +0.545455 0.949495 0.718090 +0.545455 0.959596 0.719927 +0.545455 0.969697 0.721763 +0.545455 0.979798 0.723600 +0.545455 0.989899 0.725436 +0.545455 1.000000 0.727273 + +0.555556 0.000000 0.555556 +0.555556 0.010101 0.557239 +0.555556 0.020202 0.558923 +0.555556 0.030303 0.560606 +0.555556 0.040404 0.562290 +0.555556 0.050505 0.563973 +0.555556 0.060606 0.565657 +0.555556 0.070707 0.567340 +0.555556 0.080808 0.569024 +0.555556 0.090909 0.570707 +0.555556 0.101010 0.572391 +0.555556 0.111111 0.574074 +0.555556 0.121212 0.575758 +0.555556 0.131313 0.577441 +0.555556 0.141414 0.579125 +0.555556 0.151515 0.580808 +0.555556 0.161616 0.582492 +0.555556 0.171717 0.584175 +0.555556 0.181818 0.585859 +0.555556 0.191919 0.587542 +0.555556 0.202020 0.589226 +0.555556 0.212121 0.590909 +0.555556 0.222222 0.592593 +0.555556 0.232323 0.594276 +0.555556 0.242424 0.595960 +0.555556 0.252525 0.597643 +0.555556 0.262626 0.599327 +0.555556 0.272727 0.601010 +0.555556 0.282828 0.602694 +0.555556 0.292929 0.604377 +0.555556 0.303030 0.606061 +0.555556 0.313131 0.607744 +0.555556 0.323232 0.609428 +0.555556 0.333333 0.611111 +0.555556 0.343434 0.612795 +0.555556 0.353535 0.614478 +0.555556 0.363636 0.616162 +0.555556 0.373737 0.617845 +0.555556 0.383838 0.619529 +0.555556 0.393939 0.621212 +0.555556 0.404040 0.622896 +0.555556 0.414141 0.624579 +0.555556 0.424242 0.626263 +0.555556 0.434343 0.627946 +0.555556 0.444444 0.629630 +0.555556 0.454545 0.631313 +0.555556 0.464646 0.632997 +0.555556 0.474747 0.634680 +0.555556 0.484848 0.636364 +0.555556 0.494949 0.638047 +0.555556 0.505051 0.639731 +0.555556 0.515152 0.641414 +0.555556 0.525253 0.643098 +0.555556 0.535354 0.644781 +0.555556 0.545455 0.646465 +0.555556 0.555556 0.648148 +0.555556 0.565657 0.649832 +0.555556 0.575758 0.651515 +0.555556 0.585859 0.653199 +0.555556 0.595960 0.654882 +0.555556 0.606061 0.656566 +0.555556 0.616162 0.658249 +0.555556 0.626263 0.659933 +0.555556 0.636364 0.661616 +0.555556 0.646465 0.663300 +0.555556 0.656566 0.664983 +0.555556 0.666667 0.666667 +0.555556 0.676768 0.668350 +0.555556 0.686869 0.670034 +0.555556 0.696970 0.671717 +0.555556 0.707071 0.673401 +0.555556 0.717172 0.675084 +0.555556 0.727273 0.676768 +0.555556 0.737374 0.678451 +0.555556 0.747475 0.680135 +0.555556 0.757576 0.681818 +0.555556 0.767677 0.683502 +0.555556 0.777778 0.685185 +0.555556 0.787879 0.686869 +0.555556 0.797980 0.688552 +0.555556 0.808081 0.690236 +0.555556 0.818182 0.691919 +0.555556 0.828283 0.693603 +0.555556 0.838384 0.695286 +0.555556 0.848485 0.696970 +0.555556 0.858586 0.698653 +0.555556 0.868687 0.700337 +0.555556 0.878788 0.702020 +0.555556 0.888889 0.703704 +0.555556 0.898990 0.705387 +0.555556 0.909091 0.707071 +0.555556 0.919192 0.708754 +0.555556 0.929293 0.710438 +0.555556 0.939394 0.712121 +0.555556 0.949495 0.713805 +0.555556 0.959596 0.715488 +0.555556 0.969697 0.717172 +0.555556 0.979798 0.718855 +0.555556 0.989899 0.720539 +0.555556 1.000000 0.722222 + +0.565657 0.000000 0.565657 +0.565657 0.010101 0.567187 +0.565657 0.020202 0.568717 +0.565657 0.030303 0.570248 +0.565657 0.040404 0.571778 +0.565657 0.050505 0.573309 +0.565657 0.060606 0.574839 +0.565657 0.070707 0.576370 +0.565657 0.080808 0.577900 +0.565657 0.090909 0.579431 +0.565657 0.101010 0.580961 +0.565657 0.111111 0.582492 +0.565657 0.121212 0.584022 +0.565657 0.131313 0.585552 +0.565657 0.141414 0.587083 +0.565657 0.151515 0.588613 +0.565657 0.161616 0.590144 +0.565657 0.171717 0.591674 +0.565657 0.181818 0.593205 +0.565657 0.191919 0.594735 +0.565657 0.202020 0.596266 +0.565657 0.212121 0.597796 +0.565657 0.222222 0.599327 +0.565657 0.232323 0.600857 +0.565657 0.242424 0.602388 +0.565657 0.252525 0.603918 +0.565657 0.262626 0.605448 +0.565657 0.272727 0.606979 +0.565657 0.282828 0.608509 +0.565657 0.292929 0.610040 +0.565657 0.303030 0.611570 +0.565657 0.313131 0.613101 +0.565657 0.323232 0.614631 +0.565657 0.333333 0.616162 +0.565657 0.343434 0.617692 +0.565657 0.353535 0.619223 +0.565657 0.363636 0.620753 +0.565657 0.373737 0.622283 +0.565657 0.383838 0.623814 +0.565657 0.393939 0.625344 +0.565657 0.404040 0.626875 +0.565657 0.414141 0.628405 +0.565657 0.424242 0.629936 +0.565657 0.434343 0.631466 +0.565657 0.444444 0.632997 +0.565657 0.454545 0.634527 +0.565657 0.464646 0.636058 +0.565657 0.474747 0.637588 +0.565657 0.484848 0.639118 +0.565657 0.494949 0.640649 +0.565657 0.505051 0.642179 +0.565657 0.515152 0.643710 +0.565657 0.525253 0.645240 +0.565657 0.535354 0.646771 +0.565657 0.545455 0.648301 +0.565657 0.555556 0.649832 +0.565657 0.565657 0.651362 +0.565657 0.575758 0.652893 +0.565657 0.585859 0.654423 +0.565657 0.595960 0.655953 +0.565657 0.606061 0.657484 +0.565657 0.616162 0.659014 +0.565657 0.626263 0.660545 +0.565657 0.636364 0.662075 +0.565657 0.646465 0.663606 +0.565657 0.656566 0.665136 +0.565657 0.666667 0.666667 +0.565657 0.676768 0.668197 +0.565657 0.686869 0.669728 +0.565657 0.696970 0.671258 +0.565657 0.707071 0.672788 +0.565657 0.717172 0.674319 +0.565657 0.727273 0.675849 +0.565657 0.737374 0.677380 +0.565657 0.747475 0.678910 +0.565657 0.757576 0.680441 +0.565657 0.767677 0.681971 +0.565657 0.777778 0.683502 +0.565657 0.787879 0.685032 +0.565657 0.797980 0.686563 +0.565657 0.808081 0.688093 +0.565657 0.818182 0.689624 +0.565657 0.828283 0.691154 +0.565657 0.838384 0.692684 +0.565657 0.848485 0.694215 +0.565657 0.858586 0.695745 +0.565657 0.868687 0.697276 +0.565657 0.878788 0.698806 +0.565657 0.888889 0.700337 +0.565657 0.898990 0.701867 +0.565657 0.909091 0.703398 +0.565657 0.919192 0.704928 +0.565657 0.929293 0.706459 +0.565657 0.939394 0.707989 +0.565657 0.949495 0.709519 +0.565657 0.959596 0.711050 +0.565657 0.969697 0.712580 +0.565657 0.979798 0.714111 +0.565657 0.989899 0.715641 +0.565657 1.000000 0.717172 + +0.575758 0.000000 0.575758 +0.575758 0.010101 0.577135 +0.575758 0.020202 0.578512 +0.575758 0.030303 0.579890 +0.575758 0.040404 0.581267 +0.575758 0.050505 0.582645 +0.575758 0.060606 0.584022 +0.575758 0.070707 0.585399 +0.575758 0.080808 0.586777 +0.575758 0.090909 0.588154 +0.575758 0.101010 0.589532 +0.575758 0.111111 0.590909 +0.575758 0.121212 0.592287 +0.575758 0.131313 0.593664 +0.575758 0.141414 0.595041 +0.575758 0.151515 0.596419 +0.575758 0.161616 0.597796 +0.575758 0.171717 0.599174 +0.575758 0.181818 0.600551 +0.575758 0.191919 0.601928 +0.575758 0.202020 0.603306 +0.575758 0.212121 0.604683 +0.575758 0.222222 0.606061 +0.575758 0.232323 0.607438 +0.575758 0.242424 0.608815 +0.575758 0.252525 0.610193 +0.575758 0.262626 0.611570 +0.575758 0.272727 0.612948 +0.575758 0.282828 0.614325 +0.575758 0.292929 0.615702 +0.575758 0.303030 0.617080 +0.575758 0.313131 0.618457 +0.575758 0.323232 0.619835 +0.575758 0.333333 0.621212 +0.575758 0.343434 0.622590 +0.575758 0.353535 0.623967 +0.575758 0.363636 0.625344 +0.575758 0.373737 0.626722 +0.575758 0.383838 0.628099 +0.575758 0.393939 0.629477 +0.575758 0.404040 0.630854 +0.575758 0.414141 0.632231 +0.575758 0.424242 0.633609 +0.575758 0.434343 0.634986 +0.575758 0.444444 0.636364 +0.575758 0.454545 0.637741 +0.575758 0.464646 0.639118 +0.575758 0.474747 0.640496 +0.575758 0.484848 0.641873 +0.575758 0.494949 0.643251 +0.575758 0.505051 0.644628 +0.575758 0.515152 0.646006 +0.575758 0.525253 0.647383 +0.575758 0.535354 0.648760 +0.575758 0.545455 0.650138 +0.575758 0.555556 0.651515 +0.575758 0.565657 0.652893 +0.575758 0.575758 0.654270 +0.575758 0.585859 0.655647 +0.575758 0.595960 0.657025 +0.575758 0.606061 0.658402 +0.575758 0.616162 0.659780 +0.575758 0.626263 0.661157 +0.575758 0.636364 0.662534 +0.575758 0.646465 0.663912 +0.575758 0.656566 0.665289 +0.575758 0.666667 0.666667 +0.575758 0.676768 0.668044 +0.575758 0.686869 0.669421 +0.575758 0.696970 0.670799 +0.575758 0.707071 0.672176 +0.575758 0.717172 0.673554 +0.575758 0.727273 0.674931 +0.575758 0.737374 0.676309 +0.575758 0.747475 0.677686 +0.575758 0.757576 0.679063 +0.575758 0.767677 0.680441 +0.575758 0.777778 0.681818 +0.575758 0.787879 0.683196 +0.575758 0.797980 0.684573 +0.575758 0.808081 0.685950 +0.575758 0.818182 0.687328 +0.575758 0.828283 0.688705 +0.575758 0.838384 0.690083 +0.575758 0.848485 0.691460 +0.575758 0.858586 0.692837 +0.575758 0.868687 0.694215 +0.575758 0.878788 0.695592 +0.575758 0.888889 0.696970 +0.575758 0.898990 0.698347 +0.575758 0.909091 0.699725 +0.575758 0.919192 0.701102 +0.575758 0.929293 0.702479 +0.575758 0.939394 0.703857 +0.575758 0.949495 0.705234 +0.575758 0.959596 0.706612 +0.575758 0.969697 0.707989 +0.575758 0.979798 0.709366 +0.575758 0.989899 0.710744 +0.575758 1.000000 0.712121 + +0.585859 0.000000 0.585859 +0.585859 0.010101 0.587083 +0.585859 0.020202 0.588307 +0.585859 0.030303 0.589532 +0.585859 0.040404 0.590756 +0.585859 0.050505 0.591980 +0.585859 0.060606 0.593205 +0.585859 0.070707 0.594429 +0.585859 0.080808 0.595654 +0.585859 0.090909 0.596878 +0.585859 0.101010 0.598102 +0.585859 0.111111 0.599327 +0.585859 0.121212 0.600551 +0.585859 0.131313 0.601775 +0.585859 0.141414 0.603000 +0.585859 0.151515 0.604224 +0.585859 0.161616 0.605448 +0.585859 0.171717 0.606673 +0.585859 0.181818 0.607897 +0.585859 0.191919 0.609122 +0.585859 0.202020 0.610346 +0.585859 0.212121 0.611570 +0.585859 0.222222 0.612795 +0.585859 0.232323 0.614019 +0.585859 0.242424 0.615243 +0.585859 0.252525 0.616468 +0.585859 0.262626 0.617692 +0.585859 0.272727 0.618916 +0.585859 0.282828 0.620141 +0.585859 0.292929 0.621365 +0.585859 0.303030 0.622590 +0.585859 0.313131 0.623814 +0.585859 0.323232 0.625038 +0.585859 0.333333 0.626263 +0.585859 0.343434 0.627487 +0.585859 0.353535 0.628711 +0.585859 0.363636 0.629936 +0.585859 0.373737 0.631160 +0.585859 0.383838 0.632384 +0.585859 0.393939 0.633609 +0.585859 0.404040 0.634833 +0.585859 0.414141 0.636058 +0.585859 0.424242 0.637282 +0.585859 0.434343 0.638506 +0.585859 0.444444 0.639731 +0.585859 0.454545 0.640955 +0.585859 0.464646 0.642179 +0.585859 0.474747 0.643404 +0.585859 0.484848 0.644628 +0.585859 0.494949 0.645852 +0.585859 0.505051 0.647077 +0.585859 0.515152 0.648301 +0.585859 0.525253 0.649526 +0.585859 0.535354 0.650750 +0.585859 0.545455 0.651974 +0.585859 0.555556 0.653199 +0.585859 0.565657 0.654423 +0.585859 0.575758 0.655647 +0.585859 0.585859 0.656872 +0.585859 0.595960 0.658096 +0.585859 0.606061 0.659320 +0.585859 0.616162 0.660545 +0.585859 0.626263 0.661769 +0.585859 0.636364 0.662994 +0.585859 0.646465 0.664218 +0.585859 0.656566 0.665442 +0.585859 0.666667 0.666667 +0.585859 0.676768 0.667891 +0.585859 0.686869 0.669115 +0.585859 0.696970 0.670340 +0.585859 0.707071 0.671564 +0.585859 0.717172 0.672788 +0.585859 0.727273 0.674013 +0.585859 0.737374 0.675237 +0.585859 0.747475 0.676462 +0.585859 0.757576 0.677686 +0.585859 0.767677 0.678910 +0.585859 0.777778 0.680135 +0.585859 0.787879 0.681359 +0.585859 0.797980 0.682583 +0.585859 0.808081 0.683808 +0.585859 0.818182 0.685032 +0.585859 0.828283 0.686257 +0.585859 0.838384 0.687481 +0.585859 0.848485 0.688705 +0.585859 0.858586 0.689930 +0.585859 0.868687 0.691154 +0.585859 0.878788 0.692378 +0.585859 0.888889 0.693603 +0.585859 0.898990 0.694827 +0.585859 0.909091 0.696051 +0.585859 0.919192 0.697276 +0.585859 0.929293 0.698500 +0.585859 0.939394 0.699725 +0.585859 0.949495 0.700949 +0.585859 0.959596 0.702173 +0.585859 0.969697 0.703398 +0.585859 0.979798 0.704622 +0.585859 0.989899 0.705846 +0.585859 1.000000 0.707071 + +0.595960 0.000000 0.595960 +0.595960 0.010101 0.597031 +0.595960 0.020202 0.598102 +0.595960 0.030303 0.599174 +0.595960 0.040404 0.600245 +0.595960 0.050505 0.601316 +0.595960 0.060606 0.602388 +0.595960 0.070707 0.603459 +0.595960 0.080808 0.604530 +0.595960 0.090909 0.605601 +0.595960 0.101010 0.606673 +0.595960 0.111111 0.607744 +0.595960 0.121212 0.608815 +0.595960 0.131313 0.609887 +0.595960 0.141414 0.610958 +0.595960 0.151515 0.612029 +0.595960 0.161616 0.613101 +0.595960 0.171717 0.614172 +0.595960 0.181818 0.615243 +0.595960 0.191919 0.616315 +0.595960 0.202020 0.617386 +0.595960 0.212121 0.618457 +0.595960 0.222222 0.619529 +0.595960 0.232323 0.620600 +0.595960 0.242424 0.621671 +0.595960 0.252525 0.622743 +0.595960 0.262626 0.623814 +0.595960 0.272727 0.624885 +0.595960 0.282828 0.625957 +0.595960 0.292929 0.627028 +0.595960 0.303030 0.628099 +0.595960 0.313131 0.629170 +0.595960 0.323232 0.630242 +0.595960 0.333333 0.631313 +0.595960 0.343434 0.632384 +0.595960 0.353535 0.633456 +0.595960 0.363636 0.634527 +0.595960 0.373737 0.635598 +0.595960 0.383838 0.636670 +0.595960 0.393939 0.637741 +0.595960 0.404040 0.638812 +0.595960 0.414141 0.639884 +0.595960 0.424242 0.640955 +0.595960 0.434343 0.642026 +0.595960 0.444444 0.643098 +0.595960 0.454545 0.644169 +0.595960 0.464646 0.645240 +0.595960 0.474747 0.646312 +0.595960 0.484848 0.647383 +0.595960 0.494949 0.648454 +0.595960 0.505051 0.649526 +0.595960 0.515152 0.650597 +0.595960 0.525253 0.651668 +0.595960 0.535354 0.652740 +0.595960 0.545455 0.653811 +0.595960 0.555556 0.654882 +0.595960 0.565657 0.655953 +0.595960 0.575758 0.657025 +0.595960 0.585859 0.658096 +0.595960 0.595960 0.659167 +0.595960 0.606061 0.660239 +0.595960 0.616162 0.661310 +0.595960 0.626263 0.662381 +0.595960 0.636364 0.663453 +0.595960 0.646465 0.664524 +0.595960 0.656566 0.665595 +0.595960 0.666667 0.666667 +0.595960 0.676768 0.667738 +0.595960 0.686869 0.668809 +0.595960 0.696970 0.669881 +0.595960 0.707071 0.670952 +0.595960 0.717172 0.672023 +0.595960 0.727273 0.673095 +0.595960 0.737374 0.674166 +0.595960 0.747475 0.675237 +0.595960 0.757576 0.676309 +0.595960 0.767677 0.677380 +0.595960 0.777778 0.678451 +0.595960 0.787879 0.679522 +0.595960 0.797980 0.680594 +0.595960 0.808081 0.681665 +0.595960 0.818182 0.682736 +0.595960 0.828283 0.683808 +0.595960 0.838384 0.684879 +0.595960 0.848485 0.685950 +0.595960 0.858586 0.687022 +0.595960 0.868687 0.688093 +0.595960 0.878788 0.689164 +0.595960 0.888889 0.690236 +0.595960 0.898990 0.691307 +0.595960 0.909091 0.692378 +0.595960 0.919192 0.693450 +0.595960 0.929293 0.694521 +0.595960 0.939394 0.695592 +0.595960 0.949495 0.696664 +0.595960 0.959596 0.697735 +0.595960 0.969697 0.698806 +0.595960 0.979798 0.699878 +0.595960 0.989899 0.700949 +0.595960 1.000000 0.702020 + +0.606061 0.000000 0.606061 +0.606061 0.010101 0.606979 +0.606061 0.020202 0.607897 +0.606061 0.030303 0.608815 +0.606061 0.040404 0.609734 +0.606061 0.050505 0.610652 +0.606061 0.060606 0.611570 +0.606061 0.070707 0.612489 +0.606061 0.080808 0.613407 +0.606061 0.090909 0.614325 +0.606061 0.101010 0.615243 +0.606061 0.111111 0.616162 +0.606061 0.121212 0.617080 +0.606061 0.131313 0.617998 +0.606061 0.141414 0.618916 +0.606061 0.151515 0.619835 +0.606061 0.161616 0.620753 +0.606061 0.171717 0.621671 +0.606061 0.181818 0.622590 +0.606061 0.191919 0.623508 +0.606061 0.202020 0.624426 +0.606061 0.212121 0.625344 +0.606061 0.222222 0.626263 +0.606061 0.232323 0.627181 +0.606061 0.242424 0.628099 +0.606061 0.252525 0.629017 +0.606061 0.262626 0.629936 +0.606061 0.272727 0.630854 +0.606061 0.282828 0.631772 +0.606061 0.292929 0.632691 +0.606061 0.303030 0.633609 +0.606061 0.313131 0.634527 +0.606061 0.323232 0.635445 +0.606061 0.333333 0.636364 +0.606061 0.343434 0.637282 +0.606061 0.353535 0.638200 +0.606061 0.363636 0.639118 +0.606061 0.373737 0.640037 +0.606061 0.383838 0.640955 +0.606061 0.393939 0.641873 +0.606061 0.404040 0.642792 +0.606061 0.414141 0.643710 +0.606061 0.424242 0.644628 +0.606061 0.434343 0.645546 +0.606061 0.444444 0.646465 +0.606061 0.454545 0.647383 +0.606061 0.464646 0.648301 +0.606061 0.474747 0.649219 +0.606061 0.484848 0.650138 +0.606061 0.494949 0.651056 +0.606061 0.505051 0.651974 +0.606061 0.515152 0.652893 +0.606061 0.525253 0.653811 +0.606061 0.535354 0.654729 +0.606061 0.545455 0.655647 +0.606061 0.555556 0.656566 +0.606061 0.565657 0.657484 +0.606061 0.575758 0.658402 +0.606061 0.585859 0.659320 +0.606061 0.595960 0.660239 +0.606061 0.606061 0.661157 +0.606061 0.616162 0.662075 +0.606061 0.626263 0.662994 +0.606061 0.636364 0.663912 +0.606061 0.646465 0.664830 +0.606061 0.656566 0.665748 +0.606061 0.666667 0.666667 +0.606061 0.676768 0.667585 +0.606061 0.686869 0.668503 +0.606061 0.696970 0.669421 +0.606061 0.707071 0.670340 +0.606061 0.717172 0.671258 +0.606061 0.727273 0.672176 +0.606061 0.737374 0.673095 +0.606061 0.747475 0.674013 +0.606061 0.757576 0.674931 +0.606061 0.767677 0.675849 +0.606061 0.777778 0.676768 +0.606061 0.787879 0.677686 +0.606061 0.797980 0.678604 +0.606061 0.808081 0.679522 +0.606061 0.818182 0.680441 +0.606061 0.828283 0.681359 +0.606061 0.838384 0.682277 +0.606061 0.848485 0.683196 +0.606061 0.858586 0.684114 +0.606061 0.868687 0.685032 +0.606061 0.878788 0.685950 +0.606061 0.888889 0.686869 +0.606061 0.898990 0.687787 +0.606061 0.909091 0.688705 +0.606061 0.919192 0.689624 +0.606061 0.929293 0.690542 +0.606061 0.939394 0.691460 +0.606061 0.949495 0.692378 +0.606061 0.959596 0.693297 +0.606061 0.969697 0.694215 +0.606061 0.979798 0.695133 +0.606061 0.989899 0.696051 +0.606061 1.000000 0.696970 + +0.616162 0.000000 0.616162 +0.616162 0.010101 0.616927 +0.616162 0.020202 0.617692 +0.616162 0.030303 0.618457 +0.616162 0.040404 0.619223 +0.616162 0.050505 0.619988 +0.616162 0.060606 0.620753 +0.616162 0.070707 0.621518 +0.616162 0.080808 0.622283 +0.616162 0.090909 0.623049 +0.616162 0.101010 0.623814 +0.616162 0.111111 0.624579 +0.616162 0.121212 0.625344 +0.616162 0.131313 0.626110 +0.616162 0.141414 0.626875 +0.616162 0.151515 0.627640 +0.616162 0.161616 0.628405 +0.616162 0.171717 0.629170 +0.616162 0.181818 0.629936 +0.616162 0.191919 0.630701 +0.616162 0.202020 0.631466 +0.616162 0.212121 0.632231 +0.616162 0.222222 0.632997 +0.616162 0.232323 0.633762 +0.616162 0.242424 0.634527 +0.616162 0.252525 0.635292 +0.616162 0.262626 0.636058 +0.616162 0.272727 0.636823 +0.616162 0.282828 0.637588 +0.616162 0.292929 0.638353 +0.616162 0.303030 0.639118 +0.616162 0.313131 0.639884 +0.616162 0.323232 0.640649 +0.616162 0.333333 0.641414 +0.616162 0.343434 0.642179 +0.616162 0.353535 0.642945 +0.616162 0.363636 0.643710 +0.616162 0.373737 0.644475 +0.616162 0.383838 0.645240 +0.616162 0.393939 0.646006 +0.616162 0.404040 0.646771 +0.616162 0.414141 0.647536 +0.616162 0.424242 0.648301 +0.616162 0.434343 0.649066 +0.616162 0.444444 0.649832 +0.616162 0.454545 0.650597 +0.616162 0.464646 0.651362 +0.616162 0.474747 0.652127 +0.616162 0.484848 0.652893 +0.616162 0.494949 0.653658 +0.616162 0.505051 0.654423 +0.616162 0.515152 0.655188 +0.616162 0.525253 0.655953 +0.616162 0.535354 0.656719 +0.616162 0.545455 0.657484 +0.616162 0.555556 0.658249 +0.616162 0.565657 0.659014 +0.616162 0.575758 0.659780 +0.616162 0.585859 0.660545 +0.616162 0.595960 0.661310 +0.616162 0.606061 0.662075 +0.616162 0.616162 0.662841 +0.616162 0.626263 0.663606 +0.616162 0.636364 0.664371 +0.616162 0.646465 0.665136 +0.616162 0.656566 0.665901 +0.616162 0.666667 0.666667 +0.616162 0.676768 0.667432 +0.616162 0.686869 0.668197 +0.616162 0.696970 0.668962 +0.616162 0.707071 0.669728 +0.616162 0.717172 0.670493 +0.616162 0.727273 0.671258 +0.616162 0.737374 0.672023 +0.616162 0.747475 0.672788 +0.616162 0.757576 0.673554 +0.616162 0.767677 0.674319 +0.616162 0.777778 0.675084 +0.616162 0.787879 0.675849 +0.616162 0.797980 0.676615 +0.616162 0.808081 0.677380 +0.616162 0.818182 0.678145 +0.616162 0.828283 0.678910 +0.616162 0.838384 0.679676 +0.616162 0.848485 0.680441 +0.616162 0.858586 0.681206 +0.616162 0.868687 0.681971 +0.616162 0.878788 0.682736 +0.616162 0.888889 0.683502 +0.616162 0.898990 0.684267 +0.616162 0.909091 0.685032 +0.616162 0.919192 0.685797 +0.616162 0.929293 0.686563 +0.616162 0.939394 0.687328 +0.616162 0.949495 0.688093 +0.616162 0.959596 0.688858 +0.616162 0.969697 0.689624 +0.616162 0.979798 0.690389 +0.616162 0.989899 0.691154 +0.616162 1.000000 0.691919 + +0.626263 0.000000 0.626263 +0.626263 0.010101 0.626875 +0.626263 0.020202 0.627487 +0.626263 0.030303 0.628099 +0.626263 0.040404 0.628711 +0.626263 0.050505 0.629324 +0.626263 0.060606 0.629936 +0.626263 0.070707 0.630548 +0.626263 0.080808 0.631160 +0.626263 0.090909 0.631772 +0.626263 0.101010 0.632384 +0.626263 0.111111 0.632997 +0.626263 0.121212 0.633609 +0.626263 0.131313 0.634221 +0.626263 0.141414 0.634833 +0.626263 0.151515 0.635445 +0.626263 0.161616 0.636058 +0.626263 0.171717 0.636670 +0.626263 0.181818 0.637282 +0.626263 0.191919 0.637894 +0.626263 0.202020 0.638506 +0.626263 0.212121 0.639118 +0.626263 0.222222 0.639731 +0.626263 0.232323 0.640343 +0.626263 0.242424 0.640955 +0.626263 0.252525 0.641567 +0.626263 0.262626 0.642179 +0.626263 0.272727 0.642792 +0.626263 0.282828 0.643404 +0.626263 0.292929 0.644016 +0.626263 0.303030 0.644628 +0.626263 0.313131 0.645240 +0.626263 0.323232 0.645852 +0.626263 0.333333 0.646465 +0.626263 0.343434 0.647077 +0.626263 0.353535 0.647689 +0.626263 0.363636 0.648301 +0.626263 0.373737 0.648913 +0.626263 0.383838 0.649526 +0.626263 0.393939 0.650138 +0.626263 0.404040 0.650750 +0.626263 0.414141 0.651362 +0.626263 0.424242 0.651974 +0.626263 0.434343 0.652586 +0.626263 0.444444 0.653199 +0.626263 0.454545 0.653811 +0.626263 0.464646 0.654423 +0.626263 0.474747 0.655035 +0.626263 0.484848 0.655647 +0.626263 0.494949 0.656260 +0.626263 0.505051 0.656872 +0.626263 0.515152 0.657484 +0.626263 0.525253 0.658096 +0.626263 0.535354 0.658708 +0.626263 0.545455 0.659320 +0.626263 0.555556 0.659933 +0.626263 0.565657 0.660545 +0.626263 0.575758 0.661157 +0.626263 0.585859 0.661769 +0.626263 0.595960 0.662381 +0.626263 0.606061 0.662994 +0.626263 0.616162 0.663606 +0.626263 0.626263 0.664218 +0.626263 0.636364 0.664830 +0.626263 0.646465 0.665442 +0.626263 0.656566 0.666054 +0.626263 0.666667 0.666667 +0.626263 0.676768 0.667279 +0.626263 0.686869 0.667891 +0.626263 0.696970 0.668503 +0.626263 0.707071 0.669115 +0.626263 0.717172 0.669728 +0.626263 0.727273 0.670340 +0.626263 0.737374 0.670952 +0.626263 0.747475 0.671564 +0.626263 0.757576 0.672176 +0.626263 0.767677 0.672788 +0.626263 0.777778 0.673401 +0.626263 0.787879 0.674013 +0.626263 0.797980 0.674625 +0.626263 0.808081 0.675237 +0.626263 0.818182 0.675849 +0.626263 0.828283 0.676462 +0.626263 0.838384 0.677074 +0.626263 0.848485 0.677686 +0.626263 0.858586 0.678298 +0.626263 0.868687 0.678910 +0.626263 0.878788 0.679522 +0.626263 0.888889 0.680135 +0.626263 0.898990 0.680747 +0.626263 0.909091 0.681359 +0.626263 0.919192 0.681971 +0.626263 0.929293 0.682583 +0.626263 0.939394 0.683196 +0.626263 0.949495 0.683808 +0.626263 0.959596 0.684420 +0.626263 0.969697 0.685032 +0.626263 0.979798 0.685644 +0.626263 0.989899 0.686257 +0.626263 1.000000 0.686869 + +0.636364 0.000000 0.636364 +0.636364 0.010101 0.636823 +0.636364 0.020202 0.637282 +0.636364 0.030303 0.637741 +0.636364 0.040404 0.638200 +0.636364 0.050505 0.638659 +0.636364 0.060606 0.639118 +0.636364 0.070707 0.639578 +0.636364 0.080808 0.640037 +0.636364 0.090909 0.640496 +0.636364 0.101010 0.640955 +0.636364 0.111111 0.641414 +0.636364 0.121212 0.641873 +0.636364 0.131313 0.642332 +0.636364 0.141414 0.642792 +0.636364 0.151515 0.643251 +0.636364 0.161616 0.643710 +0.636364 0.171717 0.644169 +0.636364 0.181818 0.644628 +0.636364 0.191919 0.645087 +0.636364 0.202020 0.645546 +0.636364 0.212121 0.646006 +0.636364 0.222222 0.646465 +0.636364 0.232323 0.646924 +0.636364 0.242424 0.647383 +0.636364 0.252525 0.647842 +0.636364 0.262626 0.648301 +0.636364 0.272727 0.648760 +0.636364 0.282828 0.649219 +0.636364 0.292929 0.649679 +0.636364 0.303030 0.650138 +0.636364 0.313131 0.650597 +0.636364 0.323232 0.651056 +0.636364 0.333333 0.651515 +0.636364 0.343434 0.651974 +0.636364 0.353535 0.652433 +0.636364 0.363636 0.652893 +0.636364 0.373737 0.653352 +0.636364 0.383838 0.653811 +0.636364 0.393939 0.654270 +0.636364 0.404040 0.654729 +0.636364 0.414141 0.655188 +0.636364 0.424242 0.655647 +0.636364 0.434343 0.656107 +0.636364 0.444444 0.656566 +0.636364 0.454545 0.657025 +0.636364 0.464646 0.657484 +0.636364 0.474747 0.657943 +0.636364 0.484848 0.658402 +0.636364 0.494949 0.658861 +0.636364 0.505051 0.659320 +0.636364 0.515152 0.659780 +0.636364 0.525253 0.660239 +0.636364 0.535354 0.660698 +0.636364 0.545455 0.661157 +0.636364 0.555556 0.661616 +0.636364 0.565657 0.662075 +0.636364 0.575758 0.662534 +0.636364 0.585859 0.662994 +0.636364 0.595960 0.663453 +0.636364 0.606061 0.663912 +0.636364 0.616162 0.664371 +0.636364 0.626263 0.664830 +0.636364 0.636364 0.665289 +0.636364 0.646465 0.665748 +0.636364 0.656566 0.666208 +0.636364 0.666667 0.666667 +0.636364 0.676768 0.667126 +0.636364 0.686869 0.667585 +0.636364 0.696970 0.668044 +0.636364 0.707071 0.668503 +0.636364 0.717172 0.668962 +0.636364 0.727273 0.669421 +0.636364 0.737374 0.669881 +0.636364 0.747475 0.670340 +0.636364 0.757576 0.670799 +0.636364 0.767677 0.671258 +0.636364 0.777778 0.671717 +0.636364 0.787879 0.672176 +0.636364 0.797980 0.672635 +0.636364 0.808081 0.673095 +0.636364 0.818182 0.673554 +0.636364 0.828283 0.674013 +0.636364 0.838384 0.674472 +0.636364 0.848485 0.674931 +0.636364 0.858586 0.675390 +0.636364 0.868687 0.675849 +0.636364 0.878788 0.676309 +0.636364 0.888889 0.676768 +0.636364 0.898990 0.677227 +0.636364 0.909091 0.677686 +0.636364 0.919192 0.678145 +0.636364 0.929293 0.678604 +0.636364 0.939394 0.679063 +0.636364 0.949495 0.679522 +0.636364 0.959596 0.679982 +0.636364 0.969697 0.680441 +0.636364 0.979798 0.680900 +0.636364 0.989899 0.681359 +0.636364 1.000000 0.681818 + +0.646465 0.000000 0.646465 +0.646465 0.010101 0.646771 +0.646465 0.020202 0.647077 +0.646465 0.030303 0.647383 +0.646465 0.040404 0.647689 +0.646465 0.050505 0.647995 +0.646465 0.060606 0.648301 +0.646465 0.070707 0.648607 +0.646465 0.080808 0.648913 +0.646465 0.090909 0.649219 +0.646465 0.101010 0.649526 +0.646465 0.111111 0.649832 +0.646465 0.121212 0.650138 +0.646465 0.131313 0.650444 +0.646465 0.141414 0.650750 +0.646465 0.151515 0.651056 +0.646465 0.161616 0.651362 +0.646465 0.171717 0.651668 +0.646465 0.181818 0.651974 +0.646465 0.191919 0.652280 +0.646465 0.202020 0.652586 +0.646465 0.212121 0.652893 +0.646465 0.222222 0.653199 +0.646465 0.232323 0.653505 +0.646465 0.242424 0.653811 +0.646465 0.252525 0.654117 +0.646465 0.262626 0.654423 +0.646465 0.272727 0.654729 +0.646465 0.282828 0.655035 +0.646465 0.292929 0.655341 +0.646465 0.303030 0.655647 +0.646465 0.313131 0.655953 +0.646465 0.323232 0.656260 +0.646465 0.333333 0.656566 +0.646465 0.343434 0.656872 +0.646465 0.353535 0.657178 +0.646465 0.363636 0.657484 +0.646465 0.373737 0.657790 +0.646465 0.383838 0.658096 +0.646465 0.393939 0.658402 +0.646465 0.404040 0.658708 +0.646465 0.414141 0.659014 +0.646465 0.424242 0.659320 +0.646465 0.434343 0.659627 +0.646465 0.444444 0.659933 +0.646465 0.454545 0.660239 +0.646465 0.464646 0.660545 +0.646465 0.474747 0.660851 +0.646465 0.484848 0.661157 +0.646465 0.494949 0.661463 +0.646465 0.505051 0.661769 +0.646465 0.515152 0.662075 +0.646465 0.525253 0.662381 +0.646465 0.535354 0.662687 +0.646465 0.545455 0.662994 +0.646465 0.555556 0.663300 +0.646465 0.565657 0.663606 +0.646465 0.575758 0.663912 +0.646465 0.585859 0.664218 +0.646465 0.595960 0.664524 +0.646465 0.606061 0.664830 +0.646465 0.616162 0.665136 +0.646465 0.626263 0.665442 +0.646465 0.636364 0.665748 +0.646465 0.646465 0.666054 +0.646465 0.656566 0.666361 +0.646465 0.666667 0.666667 +0.646465 0.676768 0.666973 +0.646465 0.686869 0.667279 +0.646465 0.696970 0.667585 +0.646465 0.707071 0.667891 +0.646465 0.717172 0.668197 +0.646465 0.727273 0.668503 +0.646465 0.737374 0.668809 +0.646465 0.747475 0.669115 +0.646465 0.757576 0.669421 +0.646465 0.767677 0.669728 +0.646465 0.777778 0.670034 +0.646465 0.787879 0.670340 +0.646465 0.797980 0.670646 +0.646465 0.808081 0.670952 +0.646465 0.818182 0.671258 +0.646465 0.828283 0.671564 +0.646465 0.838384 0.671870 +0.646465 0.848485 0.672176 +0.646465 0.858586 0.672482 +0.646465 0.868687 0.672788 +0.646465 0.878788 0.673095 +0.646465 0.888889 0.673401 +0.646465 0.898990 0.673707 +0.646465 0.909091 0.674013 +0.646465 0.919192 0.674319 +0.646465 0.929293 0.674625 +0.646465 0.939394 0.674931 +0.646465 0.949495 0.675237 +0.646465 0.959596 0.675543 +0.646465 0.969697 0.675849 +0.646465 0.979798 0.676155 +0.646465 0.989899 0.676462 +0.646465 1.000000 0.676768 + +0.656566 0.000000 0.656566 +0.656566 0.010101 0.656719 +0.656566 0.020202 0.656872 +0.656566 0.030303 0.657025 +0.656566 0.040404 0.657178 +0.656566 0.050505 0.657331 +0.656566 0.060606 0.657484 +0.656566 0.070707 0.657637 +0.656566 0.080808 0.657790 +0.656566 0.090909 0.657943 +0.656566 0.101010 0.658096 +0.656566 0.111111 0.658249 +0.656566 0.121212 0.658402 +0.656566 0.131313 0.658555 +0.656566 0.141414 0.658708 +0.656566 0.151515 0.658861 +0.656566 0.161616 0.659014 +0.656566 0.171717 0.659167 +0.656566 0.181818 0.659320 +0.656566 0.191919 0.659474 +0.656566 0.202020 0.659627 +0.656566 0.212121 0.659780 +0.656566 0.222222 0.659933 +0.656566 0.232323 0.660086 +0.656566 0.242424 0.660239 +0.656566 0.252525 0.660392 +0.656566 0.262626 0.660545 +0.656566 0.272727 0.660698 +0.656566 0.282828 0.660851 +0.656566 0.292929 0.661004 +0.656566 0.303030 0.661157 +0.656566 0.313131 0.661310 +0.656566 0.323232 0.661463 +0.656566 0.333333 0.661616 +0.656566 0.343434 0.661769 +0.656566 0.353535 0.661922 +0.656566 0.363636 0.662075 +0.656566 0.373737 0.662228 +0.656566 0.383838 0.662381 +0.656566 0.393939 0.662534 +0.656566 0.404040 0.662687 +0.656566 0.414141 0.662841 +0.656566 0.424242 0.662994 +0.656566 0.434343 0.663147 +0.656566 0.444444 0.663300 +0.656566 0.454545 0.663453 +0.656566 0.464646 0.663606 +0.656566 0.474747 0.663759 +0.656566 0.484848 0.663912 +0.656566 0.494949 0.664065 +0.656566 0.505051 0.664218 +0.656566 0.515152 0.664371 +0.656566 0.525253 0.664524 +0.656566 0.535354 0.664677 +0.656566 0.545455 0.664830 +0.656566 0.555556 0.664983 +0.656566 0.565657 0.665136 +0.656566 0.575758 0.665289 +0.656566 0.585859 0.665442 +0.656566 0.595960 0.665595 +0.656566 0.606061 0.665748 +0.656566 0.616162 0.665901 +0.656566 0.626263 0.666054 +0.656566 0.636364 0.666208 +0.656566 0.646465 0.666361 +0.656566 0.656566 0.666514 +0.656566 0.666667 0.666667 +0.656566 0.676768 0.666820 +0.656566 0.686869 0.666973 +0.656566 0.696970 0.667126 +0.656566 0.707071 0.667279 +0.656566 0.717172 0.667432 +0.656566 0.727273 0.667585 +0.656566 0.737374 0.667738 +0.656566 0.747475 0.667891 +0.656566 0.757576 0.668044 +0.656566 0.767677 0.668197 +0.656566 0.777778 0.668350 +0.656566 0.787879 0.668503 +0.656566 0.797980 0.668656 +0.656566 0.808081 0.668809 +0.656566 0.818182 0.668962 +0.656566 0.828283 0.669115 +0.656566 0.838384 0.669268 +0.656566 0.848485 0.669421 +0.656566 0.858586 0.669575 +0.656566 0.868687 0.669728 +0.656566 0.878788 0.669881 +0.656566 0.888889 0.670034 +0.656566 0.898990 0.670187 +0.656566 0.909091 0.670340 +0.656566 0.919192 0.670493 +0.656566 0.929293 0.670646 +0.656566 0.939394 0.670799 +0.656566 0.949495 0.670952 +0.656566 0.959596 0.671105 +0.656566 0.969697 0.671258 +0.656566 0.979798 0.671411 +0.656566 0.989899 0.671564 +0.656566 1.000000 0.671717 + +0.666667 0.000000 0.666667 +0.666667 0.010101 0.666667 +0.666667 0.020202 0.666667 +0.666667 0.030303 0.666667 +0.666667 0.040404 0.666667 +0.666667 0.050505 0.666667 +0.666667 0.060606 0.666667 +0.666667 0.070707 0.666667 +0.666667 0.080808 0.666667 +0.666667 0.090909 0.666667 +0.666667 0.101010 0.666667 +0.666667 0.111111 0.666667 +0.666667 0.121212 0.666667 +0.666667 0.131313 0.666667 +0.666667 0.141414 0.666667 +0.666667 0.151515 0.666667 +0.666667 0.161616 0.666667 +0.666667 0.171717 0.666667 +0.666667 0.181818 0.666667 +0.666667 0.191919 0.666667 +0.666667 0.202020 0.666667 +0.666667 0.212121 0.666667 +0.666667 0.222222 0.666667 +0.666667 0.232323 0.666667 +0.666667 0.242424 0.666667 +0.666667 0.252525 0.666667 +0.666667 0.262626 0.666667 +0.666667 0.272727 0.666667 +0.666667 0.282828 0.666667 +0.666667 0.292929 0.666667 +0.666667 0.303030 0.666667 +0.666667 0.313131 0.666667 +0.666667 0.323232 0.666667 +0.666667 0.333333 0.666667 +0.666667 0.343434 0.666667 +0.666667 0.353535 0.666667 +0.666667 0.363636 0.666667 +0.666667 0.373737 0.666667 +0.666667 0.383838 0.666667 +0.666667 0.393939 0.666667 +0.666667 0.404040 0.666667 +0.666667 0.414141 0.666667 +0.666667 0.424242 0.666667 +0.666667 0.434343 0.666667 +0.666667 0.444444 0.666667 +0.666667 0.454545 0.666667 +0.666667 0.464646 0.666667 +0.666667 0.474747 0.666667 +0.666667 0.484848 0.666667 +0.666667 0.494949 0.666667 +0.666667 0.505051 0.666667 +0.666667 0.515152 0.666667 +0.666667 0.525253 0.666667 +0.666667 0.535354 0.666667 +0.666667 0.545455 0.666667 +0.666667 0.555556 0.666667 +0.666667 0.565657 0.666667 +0.666667 0.575758 0.666667 +0.666667 0.585859 0.666667 +0.666667 0.595960 0.666667 +0.666667 0.606061 0.666667 +0.666667 0.616162 0.666667 +0.666667 0.626263 0.666667 +0.666667 0.636364 0.666667 +0.666667 0.646465 0.666667 +0.666667 0.656566 0.666667 +0.666667 0.666667 0.666667 +0.666667 0.676768 0.666667 +0.666667 0.686869 0.666667 +0.666667 0.696970 0.666667 +0.666667 0.707071 0.666667 +0.666667 0.717172 0.666667 +0.666667 0.727273 0.666667 +0.666667 0.737374 0.666667 +0.666667 0.747475 0.666667 +0.666667 0.757576 0.666667 +0.666667 0.767677 0.666667 +0.666667 0.777778 0.666667 +0.666667 0.787879 0.666667 +0.666667 0.797980 0.666667 +0.666667 0.808081 0.666667 +0.666667 0.818182 0.666667 +0.666667 0.828283 0.666667 +0.666667 0.838384 0.666667 +0.666667 0.848485 0.666667 +0.666667 0.858586 0.666667 +0.666667 0.868687 0.666667 +0.666667 0.878788 0.666667 +0.666667 0.888889 0.666667 +0.666667 0.898990 0.666667 +0.666667 0.909091 0.666667 +0.666667 0.919192 0.666667 +0.666667 0.929293 0.666667 +0.666667 0.939394 0.666667 +0.666667 0.949495 0.666667 +0.666667 0.959596 0.666667 +0.666667 0.969697 0.666667 +0.666667 0.979798 0.666667 +0.666667 0.989899 0.666667 +0.666667 1.000000 0.666667 + +0.676768 0.000000 0.676768 +0.676768 0.010101 0.676615 +0.676768 0.020202 0.676462 +0.676768 0.030303 0.676309 +0.676768 0.040404 0.676155 +0.676768 0.050505 0.676002 +0.676768 0.060606 0.675849 +0.676768 0.070707 0.675696 +0.676768 0.080808 0.675543 +0.676768 0.090909 0.675390 +0.676768 0.101010 0.675237 +0.676768 0.111111 0.675084 +0.676768 0.121212 0.674931 +0.676768 0.131313 0.674778 +0.676768 0.141414 0.674625 +0.676768 0.151515 0.674472 +0.676768 0.161616 0.674319 +0.676768 0.171717 0.674166 +0.676768 0.181818 0.674013 +0.676768 0.191919 0.673860 +0.676768 0.202020 0.673707 +0.676768 0.212121 0.673554 +0.676768 0.222222 0.673401 +0.676768 0.232323 0.673248 +0.676768 0.242424 0.673095 +0.676768 0.252525 0.672942 +0.676768 0.262626 0.672788 +0.676768 0.272727 0.672635 +0.676768 0.282828 0.672482 +0.676768 0.292929 0.672329 +0.676768 0.303030 0.672176 +0.676768 0.313131 0.672023 +0.676768 0.323232 0.671870 +0.676768 0.333333 0.671717 +0.676768 0.343434 0.671564 +0.676768 0.353535 0.671411 +0.676768 0.363636 0.671258 +0.676768 0.373737 0.671105 +0.676768 0.383838 0.670952 +0.676768 0.393939 0.670799 +0.676768 0.404040 0.670646 +0.676768 0.414141 0.670493 +0.676768 0.424242 0.670340 +0.676768 0.434343 0.670187 +0.676768 0.444444 0.670034 +0.676768 0.454545 0.669881 +0.676768 0.464646 0.669728 +0.676768 0.474747 0.669575 +0.676768 0.484848 0.669421 +0.676768 0.494949 0.669268 +0.676768 0.505051 0.669115 +0.676768 0.515152 0.668962 +0.676768 0.525253 0.668809 +0.676768 0.535354 0.668656 +0.676768 0.545455 0.668503 +0.676768 0.555556 0.668350 +0.676768 0.565657 0.668197 +0.676768 0.575758 0.668044 +0.676768 0.585859 0.667891 +0.676768 0.595960 0.667738 +0.676768 0.606061 0.667585 +0.676768 0.616162 0.667432 +0.676768 0.626263 0.667279 +0.676768 0.636364 0.667126 +0.676768 0.646465 0.666973 +0.676768 0.656566 0.666820 +0.676768 0.666667 0.666667 +0.676768 0.676768 0.666514 +0.676768 0.686869 0.666361 +0.676768 0.696970 0.666208 +0.676768 0.707071 0.666054 +0.676768 0.717172 0.665901 +0.676768 0.727273 0.665748 +0.676768 0.737374 0.665595 +0.676768 0.747475 0.665442 +0.676768 0.757576 0.665289 +0.676768 0.767677 0.665136 +0.676768 0.777778 0.664983 +0.676768 0.787879 0.664830 +0.676768 0.797980 0.664677 +0.676768 0.808081 0.664524 +0.676768 0.818182 0.664371 +0.676768 0.828283 0.664218 +0.676768 0.838384 0.664065 +0.676768 0.848485 0.663912 +0.676768 0.858586 0.663759 +0.676768 0.868687 0.663606 +0.676768 0.878788 0.663453 +0.676768 0.888889 0.663300 +0.676768 0.898990 0.663147 +0.676768 0.909091 0.662994 +0.676768 0.919192 0.662841 +0.676768 0.929293 0.662687 +0.676768 0.939394 0.662534 +0.676768 0.949495 0.662381 +0.676768 0.959596 0.662228 +0.676768 0.969697 0.662075 +0.676768 0.979798 0.661922 +0.676768 0.989899 0.661769 +0.676768 1.000000 0.661616 + +0.686869 0.000000 0.686869 +0.686869 0.010101 0.686563 +0.686869 0.020202 0.686257 +0.686869 0.030303 0.685950 +0.686869 0.040404 0.685644 +0.686869 0.050505 0.685338 +0.686869 0.060606 0.685032 +0.686869 0.070707 0.684726 +0.686869 0.080808 0.684420 +0.686869 0.090909 0.684114 +0.686869 0.101010 0.683808 +0.686869 0.111111 0.683502 +0.686869 0.121212 0.683196 +0.686869 0.131313 0.682890 +0.686869 0.141414 0.682583 +0.686869 0.151515 0.682277 +0.686869 0.161616 0.681971 +0.686869 0.171717 0.681665 +0.686869 0.181818 0.681359 +0.686869 0.191919 0.681053 +0.686869 0.202020 0.680747 +0.686869 0.212121 0.680441 +0.686869 0.222222 0.680135 +0.686869 0.232323 0.679829 +0.686869 0.242424 0.679522 +0.686869 0.252525 0.679216 +0.686869 0.262626 0.678910 +0.686869 0.272727 0.678604 +0.686869 0.282828 0.678298 +0.686869 0.292929 0.677992 +0.686869 0.303030 0.677686 +0.686869 0.313131 0.677380 +0.686869 0.323232 0.677074 +0.686869 0.333333 0.676768 +0.686869 0.343434 0.676462 +0.686869 0.353535 0.676155 +0.686869 0.363636 0.675849 +0.686869 0.373737 0.675543 +0.686869 0.383838 0.675237 +0.686869 0.393939 0.674931 +0.686869 0.404040 0.674625 +0.686869 0.414141 0.674319 +0.686869 0.424242 0.674013 +0.686869 0.434343 0.673707 +0.686869 0.444444 0.673401 +0.686869 0.454545 0.673095 +0.686869 0.464646 0.672788 +0.686869 0.474747 0.672482 +0.686869 0.484848 0.672176 +0.686869 0.494949 0.671870 +0.686869 0.505051 0.671564 +0.686869 0.515152 0.671258 +0.686869 0.525253 0.670952 +0.686869 0.535354 0.670646 +0.686869 0.545455 0.670340 +0.686869 0.555556 0.670034 +0.686869 0.565657 0.669728 +0.686869 0.575758 0.669421 +0.686869 0.585859 0.669115 +0.686869 0.595960 0.668809 +0.686869 0.606061 0.668503 +0.686869 0.616162 0.668197 +0.686869 0.626263 0.667891 +0.686869 0.636364 0.667585 +0.686869 0.646465 0.667279 +0.686869 0.656566 0.666973 +0.686869 0.666667 0.666667 +0.686869 0.676768 0.666361 +0.686869 0.686869 0.666054 +0.686869 0.696970 0.665748 +0.686869 0.707071 0.665442 +0.686869 0.717172 0.665136 +0.686869 0.727273 0.664830 +0.686869 0.737374 0.664524 +0.686869 0.747475 0.664218 +0.686869 0.757576 0.663912 +0.686869 0.767677 0.663606 +0.686869 0.777778 0.663300 +0.686869 0.787879 0.662994 +0.686869 0.797980 0.662687 +0.686869 0.808081 0.662381 +0.686869 0.818182 0.662075 +0.686869 0.828283 0.661769 +0.686869 0.838384 0.661463 +0.686869 0.848485 0.661157 +0.686869 0.858586 0.660851 +0.686869 0.868687 0.660545 +0.686869 0.878788 0.660239 +0.686869 0.888889 0.659933 +0.686869 0.898990 0.659627 +0.686869 0.909091 0.659320 +0.686869 0.919192 0.659014 +0.686869 0.929293 0.658708 +0.686869 0.939394 0.658402 +0.686869 0.949495 0.658096 +0.686869 0.959596 0.657790 +0.686869 0.969697 0.657484 +0.686869 0.979798 0.657178 +0.686869 0.989899 0.656872 +0.686869 1.000000 0.656566 + +0.696970 0.000000 0.696970 +0.696970 0.010101 0.696511 +0.696970 0.020202 0.696051 +0.696970 0.030303 0.695592 +0.696970 0.040404 0.695133 +0.696970 0.050505 0.694674 +0.696970 0.060606 0.694215 +0.696970 0.070707 0.693756 +0.696970 0.080808 0.693297 +0.696970 0.090909 0.692837 +0.696970 0.101010 0.692378 +0.696970 0.111111 0.691919 +0.696970 0.121212 0.691460 +0.696970 0.131313 0.691001 +0.696970 0.141414 0.690542 +0.696970 0.151515 0.690083 +0.696970 0.161616 0.689624 +0.696970 0.171717 0.689164 +0.696970 0.181818 0.688705 +0.696970 0.191919 0.688246 +0.696970 0.202020 0.687787 +0.696970 0.212121 0.687328 +0.696970 0.222222 0.686869 +0.696970 0.232323 0.686410 +0.696970 0.242424 0.685950 +0.696970 0.252525 0.685491 +0.696970 0.262626 0.685032 +0.696970 0.272727 0.684573 +0.696970 0.282828 0.684114 +0.696970 0.292929 0.683655 +0.696970 0.303030 0.683196 +0.696970 0.313131 0.682736 +0.696970 0.323232 0.682277 +0.696970 0.333333 0.681818 +0.696970 0.343434 0.681359 +0.696970 0.353535 0.680900 +0.696970 0.363636 0.680441 +0.696970 0.373737 0.679982 +0.696970 0.383838 0.679522 +0.696970 0.393939 0.679063 +0.696970 0.404040 0.678604 +0.696970 0.414141 0.678145 +0.696970 0.424242 0.677686 +0.696970 0.434343 0.677227 +0.696970 0.444444 0.676768 +0.696970 0.454545 0.676309 +0.696970 0.464646 0.675849 +0.696970 0.474747 0.675390 +0.696970 0.484848 0.674931 +0.696970 0.494949 0.674472 +0.696970 0.505051 0.674013 +0.696970 0.515152 0.673554 +0.696970 0.525253 0.673095 +0.696970 0.535354 0.672635 +0.696970 0.545455 0.672176 +0.696970 0.555556 0.671717 +0.696970 0.565657 0.671258 +0.696970 0.575758 0.670799 +0.696970 0.585859 0.670340 +0.696970 0.595960 0.669881 +0.696970 0.606061 0.669421 +0.696970 0.616162 0.668962 +0.696970 0.626263 0.668503 +0.696970 0.636364 0.668044 +0.696970 0.646465 0.667585 +0.696970 0.656566 0.667126 +0.696970 0.666667 0.666667 +0.696970 0.676768 0.666208 +0.696970 0.686869 0.665748 +0.696970 0.696970 0.665289 +0.696970 0.707071 0.664830 +0.696970 0.717172 0.664371 +0.696970 0.727273 0.663912 +0.696970 0.737374 0.663453 +0.696970 0.747475 0.662994 +0.696970 0.757576 0.662534 +0.696970 0.767677 0.662075 +0.696970 0.777778 0.661616 +0.696970 0.787879 0.661157 +0.696970 0.797980 0.660698 +0.696970 0.808081 0.660239 +0.696970 0.818182 0.659780 +0.696970 0.828283 0.659320 +0.696970 0.838384 0.658861 +0.696970 0.848485 0.658402 +0.696970 0.858586 0.657943 +0.696970 0.868687 0.657484 +0.696970 0.878788 0.657025 +0.696970 0.888889 0.656566 +0.696970 0.898990 0.656107 +0.696970 0.909091 0.655647 +0.696970 0.919192 0.655188 +0.696970 0.929293 0.654729 +0.696970 0.939394 0.654270 +0.696970 0.949495 0.653811 +0.696970 0.959596 0.653352 +0.696970 0.969697 0.652893 +0.696970 0.979798 0.652433 +0.696970 0.989899 0.651974 +0.696970 1.000000 0.651515 + +0.707071 0.000000 0.707071 +0.707071 0.010101 0.706459 +0.707071 0.020202 0.705846 +0.707071 0.030303 0.705234 +0.707071 0.040404 0.704622 +0.707071 0.050505 0.704010 +0.707071 0.060606 0.703398 +0.707071 0.070707 0.702785 +0.707071 0.080808 0.702173 +0.707071 0.090909 0.701561 +0.707071 0.101010 0.700949 +0.707071 0.111111 0.700337 +0.707071 0.121212 0.699725 +0.707071 0.131313 0.699112 +0.707071 0.141414 0.698500 +0.707071 0.151515 0.697888 +0.707071 0.161616 0.697276 +0.707071 0.171717 0.696664 +0.707071 0.181818 0.696051 +0.707071 0.191919 0.695439 +0.707071 0.202020 0.694827 +0.707071 0.212121 0.694215 +0.707071 0.222222 0.693603 +0.707071 0.232323 0.692991 +0.707071 0.242424 0.692378 +0.707071 0.252525 0.691766 +0.707071 0.262626 0.691154 +0.707071 0.272727 0.690542 +0.707071 0.282828 0.689930 +0.707071 0.292929 0.689317 +0.707071 0.303030 0.688705 +0.707071 0.313131 0.688093 +0.707071 0.323232 0.687481 +0.707071 0.333333 0.686869 +0.707071 0.343434 0.686257 +0.707071 0.353535 0.685644 +0.707071 0.363636 0.685032 +0.707071 0.373737 0.684420 +0.707071 0.383838 0.683808 +0.707071 0.393939 0.683196 +0.707071 0.404040 0.682583 +0.707071 0.414141 0.681971 +0.707071 0.424242 0.681359 +0.707071 0.434343 0.680747 +0.707071 0.444444 0.680135 +0.707071 0.454545 0.679522 +0.707071 0.464646 0.678910 +0.707071 0.474747 0.678298 +0.707071 0.484848 0.677686 +0.707071 0.494949 0.677074 +0.707071 0.505051 0.676462 +0.707071 0.515152 0.675849 +0.707071 0.525253 0.675237 +0.707071 0.535354 0.674625 +0.707071 0.545455 0.674013 +0.707071 0.555556 0.673401 +0.707071 0.565657 0.672788 +0.707071 0.575758 0.672176 +0.707071 0.585859 0.671564 +0.707071 0.595960 0.670952 +0.707071 0.606061 0.670340 +0.707071 0.616162 0.669728 +0.707071 0.626263 0.669115 +0.707071 0.636364 0.668503 +0.707071 0.646465 0.667891 +0.707071 0.656566 0.667279 +0.707071 0.666667 0.666667 +0.707071 0.676768 0.666054 +0.707071 0.686869 0.665442 +0.707071 0.696970 0.664830 +0.707071 0.707071 0.664218 +0.707071 0.717172 0.663606 +0.707071 0.727273 0.662994 +0.707071 0.737374 0.662381 +0.707071 0.747475 0.661769 +0.707071 0.757576 0.661157 +0.707071 0.767677 0.660545 +0.707071 0.777778 0.659933 +0.707071 0.787879 0.659320 +0.707071 0.797980 0.658708 +0.707071 0.808081 0.658096 +0.707071 0.818182 0.657484 +0.707071 0.828283 0.656872 +0.707071 0.838384 0.656260 +0.707071 0.848485 0.655647 +0.707071 0.858586 0.655035 +0.707071 0.868687 0.654423 +0.707071 0.878788 0.653811 +0.707071 0.888889 0.653199 +0.707071 0.898990 0.652586 +0.707071 0.909091 0.651974 +0.707071 0.919192 0.651362 +0.707071 0.929293 0.650750 +0.707071 0.939394 0.650138 +0.707071 0.949495 0.649526 +0.707071 0.959596 0.648913 +0.707071 0.969697 0.648301 +0.707071 0.979798 0.647689 +0.707071 0.989899 0.647077 +0.707071 1.000000 0.646465 + +0.717172 0.000000 0.717172 +0.717172 0.010101 0.716406 +0.717172 0.020202 0.715641 +0.717172 0.030303 0.714876 +0.717172 0.040404 0.714111 +0.717172 0.050505 0.713346 +0.717172 0.060606 0.712580 +0.717172 0.070707 0.711815 +0.717172 0.080808 0.711050 +0.717172 0.090909 0.710285 +0.717172 0.101010 0.709519 +0.717172 0.111111 0.708754 +0.717172 0.121212 0.707989 +0.717172 0.131313 0.707224 +0.717172 0.141414 0.706459 +0.717172 0.151515 0.705693 +0.717172 0.161616 0.704928 +0.717172 0.171717 0.704163 +0.717172 0.181818 0.703398 +0.717172 0.191919 0.702632 +0.717172 0.202020 0.701867 +0.717172 0.212121 0.701102 +0.717172 0.222222 0.700337 +0.717172 0.232323 0.699571 +0.717172 0.242424 0.698806 +0.717172 0.252525 0.698041 +0.717172 0.262626 0.697276 +0.717172 0.272727 0.696511 +0.717172 0.282828 0.695745 +0.717172 0.292929 0.694980 +0.717172 0.303030 0.694215 +0.717172 0.313131 0.693450 +0.717172 0.323232 0.692684 +0.717172 0.333333 0.691919 +0.717172 0.343434 0.691154 +0.717172 0.353535 0.690389 +0.717172 0.363636 0.689624 +0.717172 0.373737 0.688858 +0.717172 0.383838 0.688093 +0.717172 0.393939 0.687328 +0.717172 0.404040 0.686563 +0.717172 0.414141 0.685797 +0.717172 0.424242 0.685032 +0.717172 0.434343 0.684267 +0.717172 0.444444 0.683502 +0.717172 0.454545 0.682736 +0.717172 0.464646 0.681971 +0.717172 0.474747 0.681206 +0.717172 0.484848 0.680441 +0.717172 0.494949 0.679676 +0.717172 0.505051 0.678910 +0.717172 0.515152 0.678145 +0.717172 0.525253 0.677380 +0.717172 0.535354 0.676615 +0.717172 0.545455 0.675849 +0.717172 0.555556 0.675084 +0.717172 0.565657 0.674319 +0.717172 0.575758 0.673554 +0.717172 0.585859 0.672788 +0.717172 0.595960 0.672023 +0.717172 0.606061 0.671258 +0.717172 0.616162 0.670493 +0.717172 0.626263 0.669728 +0.717172 0.636364 0.668962 +0.717172 0.646465 0.668197 +0.717172 0.656566 0.667432 +0.717172 0.666667 0.666667 +0.717172 0.676768 0.665901 +0.717172 0.686869 0.665136 +0.717172 0.696970 0.664371 +0.717172 0.707071 0.663606 +0.717172 0.717172 0.662841 +0.717172 0.727273 0.662075 +0.717172 0.737374 0.661310 +0.717172 0.747475 0.660545 +0.717172 0.757576 0.659780 +0.717172 0.767677 0.659014 +0.717172 0.777778 0.658249 +0.717172 0.787879 0.657484 +0.717172 0.797980 0.656719 +0.717172 0.808081 0.655953 +0.717172 0.818182 0.655188 +0.717172 0.828283 0.654423 +0.717172 0.838384 0.653658 +0.717172 0.848485 0.652893 +0.717172 0.858586 0.652127 +0.717172 0.868687 0.651362 +0.717172 0.878788 0.650597 +0.717172 0.888889 0.649832 +0.717172 0.898990 0.649066 +0.717172 0.909091 0.648301 +0.717172 0.919192 0.647536 +0.717172 0.929293 0.646771 +0.717172 0.939394 0.646006 +0.717172 0.949495 0.645240 +0.717172 0.959596 0.644475 +0.717172 0.969697 0.643710 +0.717172 0.979798 0.642945 +0.717172 0.989899 0.642179 +0.717172 1.000000 0.641414 + +0.727273 0.000000 0.727273 +0.727273 0.010101 0.726354 +0.727273 0.020202 0.725436 +0.727273 0.030303 0.724518 +0.727273 0.040404 0.723600 +0.727273 0.050505 0.722681 +0.727273 0.060606 0.721763 +0.727273 0.070707 0.720845 +0.727273 0.080808 0.719927 +0.727273 0.090909 0.719008 +0.727273 0.101010 0.718090 +0.727273 0.111111 0.717172 +0.727273 0.121212 0.716253 +0.727273 0.131313 0.715335 +0.727273 0.141414 0.714417 +0.727273 0.151515 0.713499 +0.727273 0.161616 0.712580 +0.727273 0.171717 0.711662 +0.727273 0.181818 0.710744 +0.727273 0.191919 0.709826 +0.727273 0.202020 0.708907 +0.727273 0.212121 0.707989 +0.727273 0.222222 0.707071 +0.727273 0.232323 0.706152 +0.727273 0.242424 0.705234 +0.727273 0.252525 0.704316 +0.727273 0.262626 0.703398 +0.727273 0.272727 0.702479 +0.727273 0.282828 0.701561 +0.727273 0.292929 0.700643 +0.727273 0.303030 0.699725 +0.727273 0.313131 0.698806 +0.727273 0.323232 0.697888 +0.727273 0.333333 0.696970 +0.727273 0.343434 0.696051 +0.727273 0.353535 0.695133 +0.727273 0.363636 0.694215 +0.727273 0.373737 0.693297 +0.727273 0.383838 0.692378 +0.727273 0.393939 0.691460 +0.727273 0.404040 0.690542 +0.727273 0.414141 0.689624 +0.727273 0.424242 0.688705 +0.727273 0.434343 0.687787 +0.727273 0.444444 0.686869 +0.727273 0.454545 0.685950 +0.727273 0.464646 0.685032 +0.727273 0.474747 0.684114 +0.727273 0.484848 0.683196 +0.727273 0.494949 0.682277 +0.727273 0.505051 0.681359 +0.727273 0.515152 0.680441 +0.727273 0.525253 0.679522 +0.727273 0.535354 0.678604 +0.727273 0.545455 0.677686 +0.727273 0.555556 0.676768 +0.727273 0.565657 0.675849 +0.727273 0.575758 0.674931 +0.727273 0.585859 0.674013 +0.727273 0.595960 0.673095 +0.727273 0.606061 0.672176 +0.727273 0.616162 0.671258 +0.727273 0.626263 0.670340 +0.727273 0.636364 0.669421 +0.727273 0.646465 0.668503 +0.727273 0.656566 0.667585 +0.727273 0.666667 0.666667 +0.727273 0.676768 0.665748 +0.727273 0.686869 0.664830 +0.727273 0.696970 0.663912 +0.727273 0.707071 0.662994 +0.727273 0.717172 0.662075 +0.727273 0.727273 0.661157 +0.727273 0.737374 0.660239 +0.727273 0.747475 0.659320 +0.727273 0.757576 0.658402 +0.727273 0.767677 0.657484 +0.727273 0.777778 0.656566 +0.727273 0.787879 0.655647 +0.727273 0.797980 0.654729 +0.727273 0.808081 0.653811 +0.727273 0.818182 0.652893 +0.727273 0.828283 0.651974 +0.727273 0.838384 0.651056 +0.727273 0.848485 0.650138 +0.727273 0.858586 0.649219 +0.727273 0.868687 0.648301 +0.727273 0.878788 0.647383 +0.727273 0.888889 0.646465 +0.727273 0.898990 0.645546 +0.727273 0.909091 0.644628 +0.727273 0.919192 0.643710 +0.727273 0.929293 0.642792 +0.727273 0.939394 0.641873 +0.727273 0.949495 0.640955 +0.727273 0.959596 0.640037 +0.727273 0.969697 0.639118 +0.727273 0.979798 0.638200 +0.727273 0.989899 0.637282 +0.727273 1.000000 0.636364 + +0.737374 0.000000 0.737374 +0.737374 0.010101 0.736302 +0.737374 0.020202 0.735231 +0.737374 0.030303 0.734160 +0.737374 0.040404 0.733088 +0.737374 0.050505 0.732017 +0.737374 0.060606 0.730946 +0.737374 0.070707 0.729875 +0.737374 0.080808 0.728803 +0.737374 0.090909 0.727732 +0.737374 0.101010 0.726661 +0.737374 0.111111 0.725589 +0.737374 0.121212 0.724518 +0.737374 0.131313 0.723447 +0.737374 0.141414 0.722375 +0.737374 0.151515 0.721304 +0.737374 0.161616 0.720233 +0.737374 0.171717 0.719161 +0.737374 0.181818 0.718090 +0.737374 0.191919 0.717019 +0.737374 0.202020 0.715947 +0.737374 0.212121 0.714876 +0.737374 0.222222 0.713805 +0.737374 0.232323 0.712733 +0.737374 0.242424 0.711662 +0.737374 0.252525 0.710591 +0.737374 0.262626 0.709519 +0.737374 0.272727 0.708448 +0.737374 0.282828 0.707377 +0.737374 0.292929 0.706305 +0.737374 0.303030 0.705234 +0.737374 0.313131 0.704163 +0.737374 0.323232 0.703092 +0.737374 0.333333 0.702020 +0.737374 0.343434 0.700949 +0.737374 0.353535 0.699878 +0.737374 0.363636 0.698806 +0.737374 0.373737 0.697735 +0.737374 0.383838 0.696664 +0.737374 0.393939 0.695592 +0.737374 0.404040 0.694521 +0.737374 0.414141 0.693450 +0.737374 0.424242 0.692378 +0.737374 0.434343 0.691307 +0.737374 0.444444 0.690236 +0.737374 0.454545 0.689164 +0.737374 0.464646 0.688093 +0.737374 0.474747 0.687022 +0.737374 0.484848 0.685950 +0.737374 0.494949 0.684879 +0.737374 0.505051 0.683808 +0.737374 0.515152 0.682736 +0.737374 0.525253 0.681665 +0.737374 0.535354 0.680594 +0.737374 0.545455 0.679522 +0.737374 0.555556 0.678451 +0.737374 0.565657 0.677380 +0.737374 0.575758 0.676309 +0.737374 0.585859 0.675237 +0.737374 0.595960 0.674166 +0.737374 0.606061 0.673095 +0.737374 0.616162 0.672023 +0.737374 0.626263 0.670952 +0.737374 0.636364 0.669881 +0.737374 0.646465 0.668809 +0.737374 0.656566 0.667738 +0.737374 0.666667 0.666667 +0.737374 0.676768 0.665595 +0.737374 0.686869 0.664524 +0.737374 0.696970 0.663453 +0.737374 0.707071 0.662381 +0.737374 0.717172 0.661310 +0.737374 0.727273 0.660239 +0.737374 0.737374 0.659167 +0.737374 0.747475 0.658096 +0.737374 0.757576 0.657025 +0.737374 0.767677 0.655953 +0.737374 0.777778 0.654882 +0.737374 0.787879 0.653811 +0.737374 0.797980 0.652740 +0.737374 0.808081 0.651668 +0.737374 0.818182 0.650597 +0.737374 0.828283 0.649526 +0.737374 0.838384 0.648454 +0.737374 0.848485 0.647383 +0.737374 0.858586 0.646312 +0.737374 0.868687 0.645240 +0.737374 0.878788 0.644169 +0.737374 0.888889 0.643098 +0.737374 0.898990 0.642026 +0.737374 0.909091 0.640955 +0.737374 0.919192 0.639884 +0.737374 0.929293 0.638812 +0.737374 0.939394 0.637741 +0.737374 0.949495 0.636670 +0.737374 0.959596 0.635598 +0.737374 0.969697 0.634527 +0.737374 0.979798 0.633456 +0.737374 0.989899 0.632384 +0.737374 1.000000 0.631313 + +0.747475 0.000000 0.747475 +0.747475 0.010101 0.746250 +0.747475 0.020202 0.745026 +0.747475 0.030303 0.743802 +0.747475 0.040404 0.742577 +0.747475 0.050505 0.741353 +0.747475 0.060606 0.740129 +0.747475 0.070707 0.738904 +0.747475 0.080808 0.737680 +0.747475 0.090909 0.736455 +0.747475 0.101010 0.735231 +0.747475 0.111111 0.734007 +0.747475 0.121212 0.732782 +0.747475 0.131313 0.731558 +0.747475 0.141414 0.730334 +0.747475 0.151515 0.729109 +0.747475 0.161616 0.727885 +0.747475 0.171717 0.726661 +0.747475 0.181818 0.725436 +0.747475 0.191919 0.724212 +0.747475 0.202020 0.722987 +0.747475 0.212121 0.721763 +0.747475 0.222222 0.720539 +0.747475 0.232323 0.719314 +0.747475 0.242424 0.718090 +0.747475 0.252525 0.716866 +0.747475 0.262626 0.715641 +0.747475 0.272727 0.714417 +0.747475 0.282828 0.713193 +0.747475 0.292929 0.711968 +0.747475 0.303030 0.710744 +0.747475 0.313131 0.709519 +0.747475 0.323232 0.708295 +0.747475 0.333333 0.707071 +0.747475 0.343434 0.705846 +0.747475 0.353535 0.704622 +0.747475 0.363636 0.703398 +0.747475 0.373737 0.702173 +0.747475 0.383838 0.700949 +0.747475 0.393939 0.699725 +0.747475 0.404040 0.698500 +0.747475 0.414141 0.697276 +0.747475 0.424242 0.696051 +0.747475 0.434343 0.694827 +0.747475 0.444444 0.693603 +0.747475 0.454545 0.692378 +0.747475 0.464646 0.691154 +0.747475 0.474747 0.689930 +0.747475 0.484848 0.688705 +0.747475 0.494949 0.687481 +0.747475 0.505051 0.686257 +0.747475 0.515152 0.685032 +0.747475 0.525253 0.683808 +0.747475 0.535354 0.682583 +0.747475 0.545455 0.681359 +0.747475 0.555556 0.680135 +0.747475 0.565657 0.678910 +0.747475 0.575758 0.677686 +0.747475 0.585859 0.676462 +0.747475 0.595960 0.675237 +0.747475 0.606061 0.674013 +0.747475 0.616162 0.672788 +0.747475 0.626263 0.671564 +0.747475 0.636364 0.670340 +0.747475 0.646465 0.669115 +0.747475 0.656566 0.667891 +0.747475 0.666667 0.666667 +0.747475 0.676768 0.665442 +0.747475 0.686869 0.664218 +0.747475 0.696970 0.662994 +0.747475 0.707071 0.661769 +0.747475 0.717172 0.660545 +0.747475 0.727273 0.659320 +0.747475 0.737374 0.658096 +0.747475 0.747475 0.656872 +0.747475 0.757576 0.655647 +0.747475 0.767677 0.654423 +0.747475 0.777778 0.653199 +0.747475 0.787879 0.651974 +0.747475 0.797980 0.650750 +0.747475 0.808081 0.649526 +0.747475 0.818182 0.648301 +0.747475 0.828283 0.647077 +0.747475 0.838384 0.645852 +0.747475 0.848485 0.644628 +0.747475 0.858586 0.643404 +0.747475 0.868687 0.642179 +0.747475 0.878788 0.640955 +0.747475 0.888889 0.639731 +0.747475 0.898990 0.638506 +0.747475 0.909091 0.637282 +0.747475 0.919192 0.636058 +0.747475 0.929293 0.634833 +0.747475 0.939394 0.633609 +0.747475 0.949495 0.632384 +0.747475 0.959596 0.631160 +0.747475 0.969697 0.629936 +0.747475 0.979798 0.628711 +0.747475 0.989899 0.627487 +0.747475 1.000000 0.626263 + +0.757576 0.000000 0.757576 +0.757576 0.010101 0.756198 +0.757576 0.020202 0.754821 +0.757576 0.030303 0.753444 +0.757576 0.040404 0.752066 +0.757576 0.050505 0.750689 +0.757576 0.060606 0.749311 +0.757576 0.070707 0.747934 +0.757576 0.080808 0.746556 +0.757576 0.090909 0.745179 +0.757576 0.101010 0.743802 +0.757576 0.111111 0.742424 +0.757576 0.121212 0.741047 +0.757576 0.131313 0.739669 +0.757576 0.141414 0.738292 +0.757576 0.151515 0.736915 +0.757576 0.161616 0.735537 +0.757576 0.171717 0.734160 +0.757576 0.181818 0.732782 +0.757576 0.191919 0.731405 +0.757576 0.202020 0.730028 +0.757576 0.212121 0.728650 +0.757576 0.222222 0.727273 +0.757576 0.232323 0.725895 +0.757576 0.242424 0.724518 +0.757576 0.252525 0.723140 +0.757576 0.262626 0.721763 +0.757576 0.272727 0.720386 +0.757576 0.282828 0.719008 +0.757576 0.292929 0.717631 +0.757576 0.303030 0.716253 +0.757576 0.313131 0.714876 +0.757576 0.323232 0.713499 +0.757576 0.333333 0.712121 +0.757576 0.343434 0.710744 +0.757576 0.353535 0.709366 +0.757576 0.363636 0.707989 +0.757576 0.373737 0.706612 +0.757576 0.383838 0.705234 +0.757576 0.393939 0.703857 +0.757576 0.404040 0.702479 +0.757576 0.414141 0.701102 +0.757576 0.424242 0.699725 +0.757576 0.434343 0.698347 +0.757576 0.444444 0.696970 +0.757576 0.454545 0.695592 +0.757576 0.464646 0.694215 +0.757576 0.474747 0.692837 +0.757576 0.484848 0.691460 +0.757576 0.494949 0.690083 +0.757576 0.505051 0.688705 +0.757576 0.515152 0.687328 +0.757576 0.525253 0.685950 +0.757576 0.535354 0.684573 +0.757576 0.545455 0.683196 +0.757576 0.555556 0.681818 +0.757576 0.565657 0.680441 +0.757576 0.575758 0.679063 +0.757576 0.585859 0.677686 +0.757576 0.595960 0.676309 +0.757576 0.606061 0.674931 +0.757576 0.616162 0.673554 +0.757576 0.626263 0.672176 +0.757576 0.636364 0.670799 +0.757576 0.646465 0.669421 +0.757576 0.656566 0.668044 +0.757576 0.666667 0.666667 +0.757576 0.676768 0.665289 +0.757576 0.686869 0.663912 +0.757576 0.696970 0.662534 +0.757576 0.707071 0.661157 +0.757576 0.717172 0.659780 +0.757576 0.727273 0.658402 +0.757576 0.737374 0.657025 +0.757576 0.747475 0.655647 +0.757576 0.757576 0.654270 +0.757576 0.767677 0.652893 +0.757576 0.777778 0.651515 +0.757576 0.787879 0.650138 +0.757576 0.797980 0.648760 +0.757576 0.808081 0.647383 +0.757576 0.818182 0.646006 +0.757576 0.828283 0.644628 +0.757576 0.838384 0.643251 +0.757576 0.848485 0.641873 +0.757576 0.858586 0.640496 +0.757576 0.868687 0.639118 +0.757576 0.878788 0.637741 +0.757576 0.888889 0.636364 +0.757576 0.898990 0.634986 +0.757576 0.909091 0.633609 +0.757576 0.919192 0.632231 +0.757576 0.929293 0.630854 +0.757576 0.939394 0.629477 +0.757576 0.949495 0.628099 +0.757576 0.959596 0.626722 +0.757576 0.969697 0.625344 +0.757576 0.979798 0.623967 +0.757576 0.989899 0.622590 +0.757576 1.000000 0.621212 + +0.767677 0.000000 0.767677 +0.767677 0.010101 0.766146 +0.767677 0.020202 0.764616 +0.767677 0.030303 0.763085 +0.767677 0.040404 0.761555 +0.767677 0.050505 0.760024 +0.767677 0.060606 0.758494 +0.767677 0.070707 0.756964 +0.767677 0.080808 0.755433 +0.767677 0.090909 0.753903 +0.767677 0.101010 0.752372 +0.767677 0.111111 0.750842 +0.767677 0.121212 0.749311 +0.767677 0.131313 0.747781 +0.767677 0.141414 0.746250 +0.767677 0.151515 0.744720 +0.767677 0.161616 0.743189 +0.767677 0.171717 0.741659 +0.767677 0.181818 0.740129 +0.767677 0.191919 0.738598 +0.767677 0.202020 0.737068 +0.767677 0.212121 0.735537 +0.767677 0.222222 0.734007 +0.767677 0.232323 0.732476 +0.767677 0.242424 0.730946 +0.767677 0.252525 0.729415 +0.767677 0.262626 0.727885 +0.767677 0.272727 0.726354 +0.767677 0.282828 0.724824 +0.767677 0.292929 0.723294 +0.767677 0.303030 0.721763 +0.767677 0.313131 0.720233 +0.767677 0.323232 0.718702 +0.767677 0.333333 0.717172 +0.767677 0.343434 0.715641 +0.767677 0.353535 0.714111 +0.767677 0.363636 0.712580 +0.767677 0.373737 0.711050 +0.767677 0.383838 0.709519 +0.767677 0.393939 0.707989 +0.767677 0.404040 0.706459 +0.767677 0.414141 0.704928 +0.767677 0.424242 0.703398 +0.767677 0.434343 0.701867 +0.767677 0.444444 0.700337 +0.767677 0.454545 0.698806 +0.767677 0.464646 0.697276 +0.767677 0.474747 0.695745 +0.767677 0.484848 0.694215 +0.767677 0.494949 0.692684 +0.767677 0.505051 0.691154 +0.767677 0.515152 0.689624 +0.767677 0.525253 0.688093 +0.767677 0.535354 0.686563 +0.767677 0.545455 0.685032 +0.767677 0.555556 0.683502 +0.767677 0.565657 0.681971 +0.767677 0.575758 0.680441 +0.767677 0.585859 0.678910 +0.767677 0.595960 0.677380 +0.767677 0.606061 0.675849 +0.767677 0.616162 0.674319 +0.767677 0.626263 0.672788 +0.767677 0.636364 0.671258 +0.767677 0.646465 0.669728 +0.767677 0.656566 0.668197 +0.767677 0.666667 0.666667 +0.767677 0.676768 0.665136 +0.767677 0.686869 0.663606 +0.767677 0.696970 0.662075 +0.767677 0.707071 0.660545 +0.767677 0.717172 0.659014 +0.767677 0.727273 0.657484 +0.767677 0.737374 0.655953 +0.767677 0.747475 0.654423 +0.767677 0.757576 0.652893 +0.767677 0.767677 0.651362 +0.767677 0.777778 0.649832 +0.767677 0.787879 0.648301 +0.767677 0.797980 0.646771 +0.767677 0.808081 0.645240 +0.767677 0.818182 0.643710 +0.767677 0.828283 0.642179 +0.767677 0.838384 0.640649 +0.767677 0.848485 0.639118 +0.767677 0.858586 0.637588 +0.767677 0.868687 0.636058 +0.767677 0.878788 0.634527 +0.767677 0.888889 0.632997 +0.767677 0.898990 0.631466 +0.767677 0.909091 0.629936 +0.767677 0.919192 0.628405 +0.767677 0.929293 0.626875 +0.767677 0.939394 0.625344 +0.767677 0.949495 0.623814 +0.767677 0.959596 0.622283 +0.767677 0.969697 0.620753 +0.767677 0.979798 0.619223 +0.767677 0.989899 0.617692 +0.767677 1.000000 0.616162 + +0.777778 0.000000 0.777778 +0.777778 0.010101 0.776094 +0.777778 0.020202 0.774411 +0.777778 0.030303 0.772727 +0.777778 0.040404 0.771044 +0.777778 0.050505 0.769360 +0.777778 0.060606 0.767677 +0.777778 0.070707 0.765993 +0.777778 0.080808 0.764310 +0.777778 0.090909 0.762626 +0.777778 0.101010 0.760943 +0.777778 0.111111 0.759259 +0.777778 0.121212 0.757576 +0.777778 0.131313 0.755892 +0.777778 0.141414 0.754209 +0.777778 0.151515 0.752525 +0.777778 0.161616 0.750842 +0.777778 0.171717 0.749158 +0.777778 0.181818 0.747475 +0.777778 0.191919 0.745791 +0.777778 0.202020 0.744108 +0.777778 0.212121 0.742424 +0.777778 0.222222 0.740741 +0.777778 0.232323 0.739057 +0.777778 0.242424 0.737374 +0.777778 0.252525 0.735690 +0.777778 0.262626 0.734007 +0.777778 0.272727 0.732323 +0.777778 0.282828 0.730640 +0.777778 0.292929 0.728956 +0.777778 0.303030 0.727273 +0.777778 0.313131 0.725589 +0.777778 0.323232 0.723906 +0.777778 0.333333 0.722222 +0.777778 0.343434 0.720539 +0.777778 0.353535 0.718855 +0.777778 0.363636 0.717172 +0.777778 0.373737 0.715488 +0.777778 0.383838 0.713805 +0.777778 0.393939 0.712121 +0.777778 0.404040 0.710438 +0.777778 0.414141 0.708754 +0.777778 0.424242 0.707071 +0.777778 0.434343 0.705387 +0.777778 0.444444 0.703704 +0.777778 0.454545 0.702020 +0.777778 0.464646 0.700337 +0.777778 0.474747 0.698653 +0.777778 0.484848 0.696970 +0.777778 0.494949 0.695286 +0.777778 0.505051 0.693603 +0.777778 0.515152 0.691919 +0.777778 0.525253 0.690236 +0.777778 0.535354 0.688552 +0.777778 0.545455 0.686869 +0.777778 0.555556 0.685185 +0.777778 0.565657 0.683502 +0.777778 0.575758 0.681818 +0.777778 0.585859 0.680135 +0.777778 0.595960 0.678451 +0.777778 0.606061 0.676768 +0.777778 0.616162 0.675084 +0.777778 0.626263 0.673401 +0.777778 0.636364 0.671717 +0.777778 0.646465 0.670034 +0.777778 0.656566 0.668350 +0.777778 0.666667 0.666667 +0.777778 0.676768 0.664983 +0.777778 0.686869 0.663300 +0.777778 0.696970 0.661616 +0.777778 0.707071 0.659933 +0.777778 0.717172 0.658249 +0.777778 0.727273 0.656566 +0.777778 0.737374 0.654882 +0.777778 0.747475 0.653199 +0.777778 0.757576 0.651515 +0.777778 0.767677 0.649832 +0.777778 0.777778 0.648148 +0.777778 0.787879 0.646465 +0.777778 0.797980 0.644781 +0.777778 0.808081 0.643098 +0.777778 0.818182 0.641414 +0.777778 0.828283 0.639731 +0.777778 0.838384 0.638047 +0.777778 0.848485 0.636364 +0.777778 0.858586 0.634680 +0.777778 0.868687 0.632997 +0.777778 0.878788 0.631313 +0.777778 0.888889 0.629630 +0.777778 0.898990 0.627946 +0.777778 0.909091 0.626263 +0.777778 0.919192 0.624579 +0.777778 0.929293 0.622896 +0.777778 0.939394 0.621212 +0.777778 0.949495 0.619529 +0.777778 0.959596 0.617845 +0.777778 0.969697 0.616162 +0.777778 0.979798 0.614478 +0.777778 0.989899 0.612795 +0.777778 1.000000 0.611111 + +0.787879 0.000000 0.787879 +0.787879 0.010101 0.786042 +0.787879 0.020202 0.784206 +0.787879 0.030303 0.782369 +0.787879 0.040404 0.780533 +0.787879 0.050505 0.778696 +0.787879 0.060606 0.776860 +0.787879 0.070707 0.775023 +0.787879 0.080808 0.773186 +0.787879 0.090909 0.771350 +0.787879 0.101010 0.769513 +0.787879 0.111111 0.767677 +0.787879 0.121212 0.765840 +0.787879 0.131313 0.764004 +0.787879 0.141414 0.762167 +0.787879 0.151515 0.760331 +0.787879 0.161616 0.758494 +0.787879 0.171717 0.756657 +0.787879 0.181818 0.754821 +0.787879 0.191919 0.752984 +0.787879 0.202020 0.751148 +0.787879 0.212121 0.749311 +0.787879 0.222222 0.747475 +0.787879 0.232323 0.745638 +0.787879 0.242424 0.743802 +0.787879 0.252525 0.741965 +0.787879 0.262626 0.740129 +0.787879 0.272727 0.738292 +0.787879 0.282828 0.736455 +0.787879 0.292929 0.734619 +0.787879 0.303030 0.732782 +0.787879 0.313131 0.730946 +0.787879 0.323232 0.729109 +0.787879 0.333333 0.727273 +0.787879 0.343434 0.725436 +0.787879 0.353535 0.723600 +0.787879 0.363636 0.721763 +0.787879 0.373737 0.719927 +0.787879 0.383838 0.718090 +0.787879 0.393939 0.716253 +0.787879 0.404040 0.714417 +0.787879 0.414141 0.712580 +0.787879 0.424242 0.710744 +0.787879 0.434343 0.708907 +0.787879 0.444444 0.707071 +0.787879 0.454545 0.705234 +0.787879 0.464646 0.703398 +0.787879 0.474747 0.701561 +0.787879 0.484848 0.699725 +0.787879 0.494949 0.697888 +0.787879 0.505051 0.696051 +0.787879 0.515152 0.694215 +0.787879 0.525253 0.692378 +0.787879 0.535354 0.690542 +0.787879 0.545455 0.688705 +0.787879 0.555556 0.686869 +0.787879 0.565657 0.685032 +0.787879 0.575758 0.683196 +0.787879 0.585859 0.681359 +0.787879 0.595960 0.679522 +0.787879 0.606061 0.677686 +0.787879 0.616162 0.675849 +0.787879 0.626263 0.674013 +0.787879 0.636364 0.672176 +0.787879 0.646465 0.670340 +0.787879 0.656566 0.668503 +0.787879 0.666667 0.666667 +0.787879 0.676768 0.664830 +0.787879 0.686869 0.662994 +0.787879 0.696970 0.661157 +0.787879 0.707071 0.659320 +0.787879 0.717172 0.657484 +0.787879 0.727273 0.655647 +0.787879 0.737374 0.653811 +0.787879 0.747475 0.651974 +0.787879 0.757576 0.650138 +0.787879 0.767677 0.648301 +0.787879 0.777778 0.646465 +0.787879 0.787879 0.644628 +0.787879 0.797980 0.642792 +0.787879 0.808081 0.640955 +0.787879 0.818182 0.639118 +0.787879 0.828283 0.637282 +0.787879 0.838384 0.635445 +0.787879 0.848485 0.633609 +0.787879 0.858586 0.631772 +0.787879 0.868687 0.629936 +0.787879 0.878788 0.628099 +0.787879 0.888889 0.626263 +0.787879 0.898990 0.624426 +0.787879 0.909091 0.622590 +0.787879 0.919192 0.620753 +0.787879 0.929293 0.618916 +0.787879 0.939394 0.617080 +0.787879 0.949495 0.615243 +0.787879 0.959596 0.613407 +0.787879 0.969697 0.611570 +0.787879 0.979798 0.609734 +0.787879 0.989899 0.607897 +0.787879 1.000000 0.606061 + +0.797980 0.000000 0.797980 +0.797980 0.010101 0.795990 +0.797980 0.020202 0.794001 +0.797980 0.030303 0.792011 +0.797980 0.040404 0.790021 +0.797980 0.050505 0.788032 +0.797980 0.060606 0.786042 +0.797980 0.070707 0.784053 +0.797980 0.080808 0.782063 +0.797980 0.090909 0.780073 +0.797980 0.101010 0.778084 +0.797980 0.111111 0.776094 +0.797980 0.121212 0.774105 +0.797980 0.131313 0.772115 +0.797980 0.141414 0.770125 +0.797980 0.151515 0.768136 +0.797980 0.161616 0.766146 +0.797980 0.171717 0.764157 +0.797980 0.181818 0.762167 +0.797980 0.191919 0.760178 +0.797980 0.202020 0.758188 +0.797980 0.212121 0.756198 +0.797980 0.222222 0.754209 +0.797980 0.232323 0.752219 +0.797980 0.242424 0.750230 +0.797980 0.252525 0.748240 +0.797980 0.262626 0.746250 +0.797980 0.272727 0.744261 +0.797980 0.282828 0.742271 +0.797980 0.292929 0.740282 +0.797980 0.303030 0.738292 +0.797980 0.313131 0.736302 +0.797980 0.323232 0.734313 +0.797980 0.333333 0.732323 +0.797980 0.343434 0.730334 +0.797980 0.353535 0.728344 +0.797980 0.363636 0.726354 +0.797980 0.373737 0.724365 +0.797980 0.383838 0.722375 +0.797980 0.393939 0.720386 +0.797980 0.404040 0.718396 +0.797980 0.414141 0.716406 +0.797980 0.424242 0.714417 +0.797980 0.434343 0.712427 +0.797980 0.444444 0.710438 +0.797980 0.454545 0.708448 +0.797980 0.464646 0.706459 +0.797980 0.474747 0.704469 +0.797980 0.484848 0.702479 +0.797980 0.494949 0.700490 +0.797980 0.505051 0.698500 +0.797980 0.515152 0.696511 +0.797980 0.525253 0.694521 +0.797980 0.535354 0.692531 +0.797980 0.545455 0.690542 +0.797980 0.555556 0.688552 +0.797980 0.565657 0.686563 +0.797980 0.575758 0.684573 +0.797980 0.585859 0.682583 +0.797980 0.595960 0.680594 +0.797980 0.606061 0.678604 +0.797980 0.616162 0.676615 +0.797980 0.626263 0.674625 +0.797980 0.636364 0.672635 +0.797980 0.646465 0.670646 +0.797980 0.656566 0.668656 +0.797980 0.666667 0.666667 +0.797980 0.676768 0.664677 +0.797980 0.686869 0.662687 +0.797980 0.696970 0.660698 +0.797980 0.707071 0.658708 +0.797980 0.717172 0.656719 +0.797980 0.727273 0.654729 +0.797980 0.737374 0.652740 +0.797980 0.747475 0.650750 +0.797980 0.757576 0.648760 +0.797980 0.767677 0.646771 +0.797980 0.777778 0.644781 +0.797980 0.787879 0.642792 +0.797980 0.797980 0.640802 +0.797980 0.808081 0.638812 +0.797980 0.818182 0.636823 +0.797980 0.828283 0.634833 +0.797980 0.838384 0.632844 +0.797980 0.848485 0.630854 +0.797980 0.858586 0.628864 +0.797980 0.868687 0.626875 +0.797980 0.878788 0.624885 +0.797980 0.888889 0.622896 +0.797980 0.898990 0.620906 +0.797980 0.909091 0.618916 +0.797980 0.919192 0.616927 +0.797980 0.929293 0.614937 +0.797980 0.939394 0.612948 +0.797980 0.949495 0.610958 +0.797980 0.959596 0.608968 +0.797980 0.969697 0.606979 +0.797980 0.979798 0.604989 +0.797980 0.989899 0.603000 +0.797980 1.000000 0.601010 + +0.808081 0.000000 0.808081 +0.808081 0.010101 0.805938 +0.808081 0.020202 0.803796 +0.808081 0.030303 0.801653 +0.808081 0.040404 0.799510 +0.808081 0.050505 0.797368 +0.808081 0.060606 0.795225 +0.808081 0.070707 0.793082 +0.808081 0.080808 0.790940 +0.808081 0.090909 0.788797 +0.808081 0.101010 0.786654 +0.808081 0.111111 0.784512 +0.808081 0.121212 0.782369 +0.808081 0.131313 0.780227 +0.808081 0.141414 0.778084 +0.808081 0.151515 0.775941 +0.808081 0.161616 0.773799 +0.808081 0.171717 0.771656 +0.808081 0.181818 0.769513 +0.808081 0.191919 0.767371 +0.808081 0.202020 0.765228 +0.808081 0.212121 0.763085 +0.808081 0.222222 0.760943 +0.808081 0.232323 0.758800 +0.808081 0.242424 0.756657 +0.808081 0.252525 0.754515 +0.808081 0.262626 0.752372 +0.808081 0.272727 0.750230 +0.808081 0.282828 0.748087 +0.808081 0.292929 0.745944 +0.808081 0.303030 0.743802 +0.808081 0.313131 0.741659 +0.808081 0.323232 0.739516 +0.808081 0.333333 0.737374 +0.808081 0.343434 0.735231 +0.808081 0.353535 0.733088 +0.808081 0.363636 0.730946 +0.808081 0.373737 0.728803 +0.808081 0.383838 0.726661 +0.808081 0.393939 0.724518 +0.808081 0.404040 0.722375 +0.808081 0.414141 0.720233 +0.808081 0.424242 0.718090 +0.808081 0.434343 0.715947 +0.808081 0.444444 0.713805 +0.808081 0.454545 0.711662 +0.808081 0.464646 0.709519 +0.808081 0.474747 0.707377 +0.808081 0.484848 0.705234 +0.808081 0.494949 0.703092 +0.808081 0.505051 0.700949 +0.808081 0.515152 0.698806 +0.808081 0.525253 0.696664 +0.808081 0.535354 0.694521 +0.808081 0.545455 0.692378 +0.808081 0.555556 0.690236 +0.808081 0.565657 0.688093 +0.808081 0.575758 0.685950 +0.808081 0.585859 0.683808 +0.808081 0.595960 0.681665 +0.808081 0.606061 0.679522 +0.808081 0.616162 0.677380 +0.808081 0.626263 0.675237 +0.808081 0.636364 0.673095 +0.808081 0.646465 0.670952 +0.808081 0.656566 0.668809 +0.808081 0.666667 0.666667 +0.808081 0.676768 0.664524 +0.808081 0.686869 0.662381 +0.808081 0.696970 0.660239 +0.808081 0.707071 0.658096 +0.808081 0.717172 0.655953 +0.808081 0.727273 0.653811 +0.808081 0.737374 0.651668 +0.808081 0.747475 0.649526 +0.808081 0.757576 0.647383 +0.808081 0.767677 0.645240 +0.808081 0.777778 0.643098 +0.808081 0.787879 0.640955 +0.808081 0.797980 0.638812 +0.808081 0.808081 0.636670 +0.808081 0.818182 0.634527 +0.808081 0.828283 0.632384 +0.808081 0.838384 0.630242 +0.808081 0.848485 0.628099 +0.808081 0.858586 0.625957 +0.808081 0.868687 0.623814 +0.808081 0.878788 0.621671 +0.808081 0.888889 0.619529 +0.808081 0.898990 0.617386 +0.808081 0.909091 0.615243 +0.808081 0.919192 0.613101 +0.808081 0.929293 0.610958 +0.808081 0.939394 0.608815 +0.808081 0.949495 0.606673 +0.808081 0.959596 0.604530 +0.808081 0.969697 0.602388 +0.808081 0.979798 0.600245 +0.808081 0.989899 0.598102 +0.808081 1.000000 0.595960 + +0.818182 0.000000 0.818182 +0.818182 0.010101 0.815886 +0.818182 0.020202 0.813590 +0.818182 0.030303 0.811295 +0.818182 0.040404 0.808999 +0.818182 0.050505 0.806703 +0.818182 0.060606 0.804408 +0.818182 0.070707 0.802112 +0.818182 0.080808 0.799816 +0.818182 0.090909 0.797521 +0.818182 0.101010 0.795225 +0.818182 0.111111 0.792929 +0.818182 0.121212 0.790634 +0.818182 0.131313 0.788338 +0.818182 0.141414 0.786042 +0.818182 0.151515 0.783747 +0.818182 0.161616 0.781451 +0.818182 0.171717 0.779155 +0.818182 0.181818 0.776860 +0.818182 0.191919 0.774564 +0.818182 0.202020 0.772268 +0.818182 0.212121 0.769972 +0.818182 0.222222 0.767677 +0.818182 0.232323 0.765381 +0.818182 0.242424 0.763085 +0.818182 0.252525 0.760790 +0.818182 0.262626 0.758494 +0.818182 0.272727 0.756198 +0.818182 0.282828 0.753903 +0.818182 0.292929 0.751607 +0.818182 0.303030 0.749311 +0.818182 0.313131 0.747016 +0.818182 0.323232 0.744720 +0.818182 0.333333 0.742424 +0.818182 0.343434 0.740129 +0.818182 0.353535 0.737833 +0.818182 0.363636 0.735537 +0.818182 0.373737 0.733242 +0.818182 0.383838 0.730946 +0.818182 0.393939 0.728650 +0.818182 0.404040 0.726354 +0.818182 0.414141 0.724059 +0.818182 0.424242 0.721763 +0.818182 0.434343 0.719467 +0.818182 0.444444 0.717172 +0.818182 0.454545 0.714876 +0.818182 0.464646 0.712580 +0.818182 0.474747 0.710285 +0.818182 0.484848 0.707989 +0.818182 0.494949 0.705693 +0.818182 0.505051 0.703398 +0.818182 0.515152 0.701102 +0.818182 0.525253 0.698806 +0.818182 0.535354 0.696511 +0.818182 0.545455 0.694215 +0.818182 0.555556 0.691919 +0.818182 0.565657 0.689624 +0.818182 0.575758 0.687328 +0.818182 0.585859 0.685032 +0.818182 0.595960 0.682736 +0.818182 0.606061 0.680441 +0.818182 0.616162 0.678145 +0.818182 0.626263 0.675849 +0.818182 0.636364 0.673554 +0.818182 0.646465 0.671258 +0.818182 0.656566 0.668962 +0.818182 0.666667 0.666667 +0.818182 0.676768 0.664371 +0.818182 0.686869 0.662075 +0.818182 0.696970 0.659780 +0.818182 0.707071 0.657484 +0.818182 0.717172 0.655188 +0.818182 0.727273 0.652893 +0.818182 0.737374 0.650597 +0.818182 0.747475 0.648301 +0.818182 0.757576 0.646006 +0.818182 0.767677 0.643710 +0.818182 0.777778 0.641414 +0.818182 0.787879 0.639118 +0.818182 0.797980 0.636823 +0.818182 0.808081 0.634527 +0.818182 0.818182 0.632231 +0.818182 0.828283 0.629936 +0.818182 0.838384 0.627640 +0.818182 0.848485 0.625344 +0.818182 0.858586 0.623049 +0.818182 0.868687 0.620753 +0.818182 0.878788 0.618457 +0.818182 0.888889 0.616162 +0.818182 0.898990 0.613866 +0.818182 0.909091 0.611570 +0.818182 0.919192 0.609275 +0.818182 0.929293 0.606979 +0.818182 0.939394 0.604683 +0.818182 0.949495 0.602388 +0.818182 0.959596 0.600092 +0.818182 0.969697 0.597796 +0.818182 0.979798 0.595500 +0.818182 0.989899 0.593205 +0.818182 1.000000 0.590909 + +0.828283 0.000000 0.828283 +0.828283 0.010101 0.825834 +0.828283 0.020202 0.823385 +0.828283 0.030303 0.820937 +0.828283 0.040404 0.818488 +0.828283 0.050505 0.816039 +0.828283 0.060606 0.813590 +0.828283 0.070707 0.811142 +0.828283 0.080808 0.808693 +0.828283 0.090909 0.806244 +0.828283 0.101010 0.803796 +0.828283 0.111111 0.801347 +0.828283 0.121212 0.798898 +0.828283 0.131313 0.796449 +0.828283 0.141414 0.794001 +0.828283 0.151515 0.791552 +0.828283 0.161616 0.789103 +0.828283 0.171717 0.786654 +0.828283 0.181818 0.784206 +0.828283 0.191919 0.781757 +0.828283 0.202020 0.779308 +0.828283 0.212121 0.776860 +0.828283 0.222222 0.774411 +0.828283 0.232323 0.771962 +0.828283 0.242424 0.769513 +0.828283 0.252525 0.767065 +0.828283 0.262626 0.764616 +0.828283 0.272727 0.762167 +0.828283 0.282828 0.759718 +0.828283 0.292929 0.757270 +0.828283 0.303030 0.754821 +0.828283 0.313131 0.752372 +0.828283 0.323232 0.749923 +0.828283 0.333333 0.747475 +0.828283 0.343434 0.745026 +0.828283 0.353535 0.742577 +0.828283 0.363636 0.740129 +0.828283 0.373737 0.737680 +0.828283 0.383838 0.735231 +0.828283 0.393939 0.732782 +0.828283 0.404040 0.730334 +0.828283 0.414141 0.727885 +0.828283 0.424242 0.725436 +0.828283 0.434343 0.722987 +0.828283 0.444444 0.720539 +0.828283 0.454545 0.718090 +0.828283 0.464646 0.715641 +0.828283 0.474747 0.713193 +0.828283 0.484848 0.710744 +0.828283 0.494949 0.708295 +0.828283 0.505051 0.705846 +0.828283 0.515152 0.703398 +0.828283 0.525253 0.700949 +0.828283 0.535354 0.698500 +0.828283 0.545455 0.696051 +0.828283 0.555556 0.693603 +0.828283 0.565657 0.691154 +0.828283 0.575758 0.688705 +0.828283 0.585859 0.686257 +0.828283 0.595960 0.683808 +0.828283 0.606061 0.681359 +0.828283 0.616162 0.678910 +0.828283 0.626263 0.676462 +0.828283 0.636364 0.674013 +0.828283 0.646465 0.671564 +0.828283 0.656566 0.669115 +0.828283 0.666667 0.666667 +0.828283 0.676768 0.664218 +0.828283 0.686869 0.661769 +0.828283 0.696970 0.659320 +0.828283 0.707071 0.656872 +0.828283 0.717172 0.654423 +0.828283 0.727273 0.651974 +0.828283 0.737374 0.649526 +0.828283 0.747475 0.647077 +0.828283 0.757576 0.644628 +0.828283 0.767677 0.642179 +0.828283 0.777778 0.639731 +0.828283 0.787879 0.637282 +0.828283 0.797980 0.634833 +0.828283 0.808081 0.632384 +0.828283 0.818182 0.629936 +0.828283 0.828283 0.627487 +0.828283 0.838384 0.625038 +0.828283 0.848485 0.622590 +0.828283 0.858586 0.620141 +0.828283 0.868687 0.617692 +0.828283 0.878788 0.615243 +0.828283 0.888889 0.612795 +0.828283 0.898990 0.610346 +0.828283 0.909091 0.607897 +0.828283 0.919192 0.605448 +0.828283 0.929293 0.603000 +0.828283 0.939394 0.600551 +0.828283 0.949495 0.598102 +0.828283 0.959596 0.595654 +0.828283 0.969697 0.593205 +0.828283 0.979798 0.590756 +0.828283 0.989899 0.588307 +0.828283 1.000000 0.585859 + +0.838384 0.000000 0.838384 +0.838384 0.010101 0.835782 +0.838384 0.020202 0.833180 +0.838384 0.030303 0.830579 +0.838384 0.040404 0.827977 +0.838384 0.050505 0.825375 +0.838384 0.060606 0.822773 +0.838384 0.070707 0.820171 +0.838384 0.080808 0.817570 +0.838384 0.090909 0.814968 +0.838384 0.101010 0.812366 +0.838384 0.111111 0.809764 +0.838384 0.121212 0.807163 +0.838384 0.131313 0.804561 +0.838384 0.141414 0.801959 +0.838384 0.151515 0.799357 +0.838384 0.161616 0.796755 +0.838384 0.171717 0.794154 +0.838384 0.181818 0.791552 +0.838384 0.191919 0.788950 +0.838384 0.202020 0.786348 +0.838384 0.212121 0.783747 +0.838384 0.222222 0.781145 +0.838384 0.232323 0.778543 +0.838384 0.242424 0.775941 +0.838384 0.252525 0.773339 +0.838384 0.262626 0.770738 +0.838384 0.272727 0.768136 +0.838384 0.282828 0.765534 +0.838384 0.292929 0.762932 +0.838384 0.303030 0.760331 +0.838384 0.313131 0.757729 +0.838384 0.323232 0.755127 +0.838384 0.333333 0.752525 +0.838384 0.343434 0.749923 +0.838384 0.353535 0.747322 +0.838384 0.363636 0.744720 +0.838384 0.373737 0.742118 +0.838384 0.383838 0.739516 +0.838384 0.393939 0.736915 +0.838384 0.404040 0.734313 +0.838384 0.414141 0.731711 +0.838384 0.424242 0.729109 +0.838384 0.434343 0.726507 +0.838384 0.444444 0.723906 +0.838384 0.454545 0.721304 +0.838384 0.464646 0.718702 +0.838384 0.474747 0.716100 +0.838384 0.484848 0.713499 +0.838384 0.494949 0.710897 +0.838384 0.505051 0.708295 +0.838384 0.515152 0.705693 +0.838384 0.525253 0.703092 +0.838384 0.535354 0.700490 +0.838384 0.545455 0.697888 +0.838384 0.555556 0.695286 +0.838384 0.565657 0.692684 +0.838384 0.575758 0.690083 +0.838384 0.585859 0.687481 +0.838384 0.595960 0.684879 +0.838384 0.606061 0.682277 +0.838384 0.616162 0.679676 +0.838384 0.626263 0.677074 +0.838384 0.636364 0.674472 +0.838384 0.646465 0.671870 +0.838384 0.656566 0.669268 +0.838384 0.666667 0.666667 +0.838384 0.676768 0.664065 +0.838384 0.686869 0.661463 +0.838384 0.696970 0.658861 +0.838384 0.707071 0.656260 +0.838384 0.717172 0.653658 +0.838384 0.727273 0.651056 +0.838384 0.737374 0.648454 +0.838384 0.747475 0.645852 +0.838384 0.757576 0.643251 +0.838384 0.767677 0.640649 +0.838384 0.777778 0.638047 +0.838384 0.787879 0.635445 +0.838384 0.797980 0.632844 +0.838384 0.808081 0.630242 +0.838384 0.818182 0.627640 +0.838384 0.828283 0.625038 +0.838384 0.838384 0.622436 +0.838384 0.848485 0.619835 +0.838384 0.858586 0.617233 +0.838384 0.868687 0.614631 +0.838384 0.878788 0.612029 +0.838384 0.888889 0.609428 +0.838384 0.898990 0.606826 +0.838384 0.909091 0.604224 +0.838384 0.919192 0.601622 +0.838384 0.929293 0.599021 +0.838384 0.939394 0.596419 +0.838384 0.949495 0.593817 +0.838384 0.959596 0.591215 +0.838384 0.969697 0.588613 +0.838384 0.979798 0.586012 +0.838384 0.989899 0.583410 +0.838384 1.000000 0.580808 + +0.848485 0.000000 0.848485 +0.848485 0.010101 0.845730 +0.848485 0.020202 0.842975 +0.848485 0.030303 0.840220 +0.848485 0.040404 0.837466 +0.848485 0.050505 0.834711 +0.848485 0.060606 0.831956 +0.848485 0.070707 0.829201 +0.848485 0.080808 0.826446 +0.848485 0.090909 0.823691 +0.848485 0.101010 0.820937 +0.848485 0.111111 0.818182 +0.848485 0.121212 0.815427 +0.848485 0.131313 0.812672 +0.848485 0.141414 0.809917 +0.848485 0.151515 0.807163 +0.848485 0.161616 0.804408 +0.848485 0.171717 0.801653 +0.848485 0.181818 0.798898 +0.848485 0.191919 0.796143 +0.848485 0.202020 0.793388 +0.848485 0.212121 0.790634 +0.848485 0.222222 0.787879 +0.848485 0.232323 0.785124 +0.848485 0.242424 0.782369 +0.848485 0.252525 0.779614 +0.848485 0.262626 0.776860 +0.848485 0.272727 0.774105 +0.848485 0.282828 0.771350 +0.848485 0.292929 0.768595 +0.848485 0.303030 0.765840 +0.848485 0.313131 0.763085 +0.848485 0.323232 0.760331 +0.848485 0.333333 0.757576 +0.848485 0.343434 0.754821 +0.848485 0.353535 0.752066 +0.848485 0.363636 0.749311 +0.848485 0.373737 0.746556 +0.848485 0.383838 0.743802 +0.848485 0.393939 0.741047 +0.848485 0.404040 0.738292 +0.848485 0.414141 0.735537 +0.848485 0.424242 0.732782 +0.848485 0.434343 0.730028 +0.848485 0.444444 0.727273 +0.848485 0.454545 0.724518 +0.848485 0.464646 0.721763 +0.848485 0.474747 0.719008 +0.848485 0.484848 0.716253 +0.848485 0.494949 0.713499 +0.848485 0.505051 0.710744 +0.848485 0.515152 0.707989 +0.848485 0.525253 0.705234 +0.848485 0.535354 0.702479 +0.848485 0.545455 0.699725 +0.848485 0.555556 0.696970 +0.848485 0.565657 0.694215 +0.848485 0.575758 0.691460 +0.848485 0.585859 0.688705 +0.848485 0.595960 0.685950 +0.848485 0.606061 0.683196 +0.848485 0.616162 0.680441 +0.848485 0.626263 0.677686 +0.848485 0.636364 0.674931 +0.848485 0.646465 0.672176 +0.848485 0.656566 0.669421 +0.848485 0.666667 0.666667 +0.848485 0.676768 0.663912 +0.848485 0.686869 0.661157 +0.848485 0.696970 0.658402 +0.848485 0.707071 0.655647 +0.848485 0.717172 0.652893 +0.848485 0.727273 0.650138 +0.848485 0.737374 0.647383 +0.848485 0.747475 0.644628 +0.848485 0.757576 0.641873 +0.848485 0.767677 0.639118 +0.848485 0.777778 0.636364 +0.848485 0.787879 0.633609 +0.848485 0.797980 0.630854 +0.848485 0.808081 0.628099 +0.848485 0.818182 0.625344 +0.848485 0.828283 0.622590 +0.848485 0.838384 0.619835 +0.848485 0.848485 0.617080 +0.848485 0.858586 0.614325 +0.848485 0.868687 0.611570 +0.848485 0.878788 0.608815 +0.848485 0.888889 0.606061 +0.848485 0.898990 0.603306 +0.848485 0.909091 0.600551 +0.848485 0.919192 0.597796 +0.848485 0.929293 0.595041 +0.848485 0.939394 0.592287 +0.848485 0.949495 0.589532 +0.848485 0.959596 0.586777 +0.848485 0.969697 0.584022 +0.848485 0.979798 0.581267 +0.848485 0.989899 0.578512 +0.848485 1.000000 0.575758 + +0.858586 0.000000 0.858586 +0.858586 0.010101 0.855678 +0.858586 0.020202 0.852770 +0.858586 0.030303 0.849862 +0.858586 0.040404 0.846954 +0.858586 0.050505 0.844047 +0.858586 0.060606 0.841139 +0.858586 0.070707 0.838231 +0.858586 0.080808 0.835323 +0.858586 0.090909 0.832415 +0.858586 0.101010 0.829507 +0.858586 0.111111 0.826599 +0.858586 0.121212 0.823691 +0.858586 0.131313 0.820784 +0.858586 0.141414 0.817876 +0.858586 0.151515 0.814968 +0.858586 0.161616 0.812060 +0.858586 0.171717 0.809152 +0.858586 0.181818 0.806244 +0.858586 0.191919 0.803336 +0.858586 0.202020 0.800429 +0.858586 0.212121 0.797521 +0.858586 0.222222 0.794613 +0.858586 0.232323 0.791705 +0.858586 0.242424 0.788797 +0.858586 0.252525 0.785889 +0.858586 0.262626 0.782981 +0.858586 0.272727 0.780073 +0.858586 0.282828 0.777166 +0.858586 0.292929 0.774258 +0.858586 0.303030 0.771350 +0.858586 0.313131 0.768442 +0.858586 0.323232 0.765534 +0.858586 0.333333 0.762626 +0.858586 0.343434 0.759718 +0.858586 0.353535 0.756811 +0.858586 0.363636 0.753903 +0.858586 0.373737 0.750995 +0.858586 0.383838 0.748087 +0.858586 0.393939 0.745179 +0.858586 0.404040 0.742271 +0.858586 0.414141 0.739363 +0.858586 0.424242 0.736455 +0.858586 0.434343 0.733548 +0.858586 0.444444 0.730640 +0.858586 0.454545 0.727732 +0.858586 0.464646 0.724824 +0.858586 0.474747 0.721916 +0.858586 0.484848 0.719008 +0.858586 0.494949 0.716100 +0.858586 0.505051 0.713193 +0.858586 0.515152 0.710285 +0.858586 0.525253 0.707377 +0.858586 0.535354 0.704469 +0.858586 0.545455 0.701561 +0.858586 0.555556 0.698653 +0.858586 0.565657 0.695745 +0.858586 0.575758 0.692837 +0.858586 0.585859 0.689930 +0.858586 0.595960 0.687022 +0.858586 0.606061 0.684114 +0.858586 0.616162 0.681206 +0.858586 0.626263 0.678298 +0.858586 0.636364 0.675390 +0.858586 0.646465 0.672482 +0.858586 0.656566 0.669575 +0.858586 0.666667 0.666667 +0.858586 0.676768 0.663759 +0.858586 0.686869 0.660851 +0.858586 0.696970 0.657943 +0.858586 0.707071 0.655035 +0.858586 0.717172 0.652127 +0.858586 0.727273 0.649219 +0.858586 0.737374 0.646312 +0.858586 0.747475 0.643404 +0.858586 0.757576 0.640496 +0.858586 0.767677 0.637588 +0.858586 0.777778 0.634680 +0.858586 0.787879 0.631772 +0.858586 0.797980 0.628864 +0.858586 0.808081 0.625957 +0.858586 0.818182 0.623049 +0.858586 0.828283 0.620141 +0.858586 0.838384 0.617233 +0.858586 0.848485 0.614325 +0.858586 0.858586 0.611417 +0.858586 0.868687 0.608509 +0.858586 0.878788 0.605601 +0.858586 0.888889 0.602694 +0.858586 0.898990 0.599786 +0.858586 0.909091 0.596878 +0.858586 0.919192 0.593970 +0.858586 0.929293 0.591062 +0.858586 0.939394 0.588154 +0.858586 0.949495 0.585246 +0.858586 0.959596 0.582339 +0.858586 0.969697 0.579431 +0.858586 0.979798 0.576523 +0.858586 0.989899 0.573615 +0.858586 1.000000 0.570707 + +0.868687 0.000000 0.868687 +0.868687 0.010101 0.865626 +0.868687 0.020202 0.862565 +0.868687 0.030303 0.859504 +0.868687 0.040404 0.856443 +0.868687 0.050505 0.853382 +0.868687 0.060606 0.850321 +0.868687 0.070707 0.847260 +0.868687 0.080808 0.844200 +0.868687 0.090909 0.841139 +0.868687 0.101010 0.838078 +0.868687 0.111111 0.835017 +0.868687 0.121212 0.831956 +0.868687 0.131313 0.828895 +0.868687 0.141414 0.825834 +0.868687 0.151515 0.822773 +0.868687 0.161616 0.819712 +0.868687 0.171717 0.816651 +0.868687 0.181818 0.813590 +0.868687 0.191919 0.810530 +0.868687 0.202020 0.807469 +0.868687 0.212121 0.804408 +0.868687 0.222222 0.801347 +0.868687 0.232323 0.798286 +0.868687 0.242424 0.795225 +0.868687 0.252525 0.792164 +0.868687 0.262626 0.789103 +0.868687 0.272727 0.786042 +0.868687 0.282828 0.782981 +0.868687 0.292929 0.779920 +0.868687 0.303030 0.776860 +0.868687 0.313131 0.773799 +0.868687 0.323232 0.770738 +0.868687 0.333333 0.767677 +0.868687 0.343434 0.764616 +0.868687 0.353535 0.761555 +0.868687 0.363636 0.758494 +0.868687 0.373737 0.755433 +0.868687 0.383838 0.752372 +0.868687 0.393939 0.749311 +0.868687 0.404040 0.746250 +0.868687 0.414141 0.743189 +0.868687 0.424242 0.740129 +0.868687 0.434343 0.737068 +0.868687 0.444444 0.734007 +0.868687 0.454545 0.730946 +0.868687 0.464646 0.727885 +0.868687 0.474747 0.724824 +0.868687 0.484848 0.721763 +0.868687 0.494949 0.718702 +0.868687 0.505051 0.715641 +0.868687 0.515152 0.712580 +0.868687 0.525253 0.709519 +0.868687 0.535354 0.706459 +0.868687 0.545455 0.703398 +0.868687 0.555556 0.700337 +0.868687 0.565657 0.697276 +0.868687 0.575758 0.694215 +0.868687 0.585859 0.691154 +0.868687 0.595960 0.688093 +0.868687 0.606061 0.685032 +0.868687 0.616162 0.681971 +0.868687 0.626263 0.678910 +0.868687 0.636364 0.675849 +0.868687 0.646465 0.672788 +0.868687 0.656566 0.669728 +0.868687 0.666667 0.666667 +0.868687 0.676768 0.663606 +0.868687 0.686869 0.660545 +0.868687 0.696970 0.657484 +0.868687 0.707071 0.654423 +0.868687 0.717172 0.651362 +0.868687 0.727273 0.648301 +0.868687 0.737374 0.645240 +0.868687 0.747475 0.642179 +0.868687 0.757576 0.639118 +0.868687 0.767677 0.636058 +0.868687 0.777778 0.632997 +0.868687 0.787879 0.629936 +0.868687 0.797980 0.626875 +0.868687 0.808081 0.623814 +0.868687 0.818182 0.620753 +0.868687 0.828283 0.617692 +0.868687 0.838384 0.614631 +0.868687 0.848485 0.611570 +0.868687 0.858586 0.608509 +0.868687 0.868687 0.605448 +0.868687 0.878788 0.602388 +0.868687 0.888889 0.599327 +0.868687 0.898990 0.596266 +0.868687 0.909091 0.593205 +0.868687 0.919192 0.590144 +0.868687 0.929293 0.587083 +0.868687 0.939394 0.584022 +0.868687 0.949495 0.580961 +0.868687 0.959596 0.577900 +0.868687 0.969697 0.574839 +0.868687 0.979798 0.571778 +0.868687 0.989899 0.568717 +0.868687 1.000000 0.565657 + +0.878788 0.000000 0.878788 +0.878788 0.010101 0.875574 +0.878788 0.020202 0.872360 +0.878788 0.030303 0.869146 +0.878788 0.040404 0.865932 +0.878788 0.050505 0.862718 +0.878788 0.060606 0.859504 +0.878788 0.070707 0.856290 +0.878788 0.080808 0.853076 +0.878788 0.090909 0.849862 +0.878788 0.101010 0.846648 +0.878788 0.111111 0.843434 +0.878788 0.121212 0.840220 +0.878788 0.131313 0.837006 +0.878788 0.141414 0.833792 +0.878788 0.151515 0.830579 +0.878788 0.161616 0.827365 +0.878788 0.171717 0.824151 +0.878788 0.181818 0.820937 +0.878788 0.191919 0.817723 +0.878788 0.202020 0.814509 +0.878788 0.212121 0.811295 +0.878788 0.222222 0.808081 +0.878788 0.232323 0.804867 +0.878788 0.242424 0.801653 +0.878788 0.252525 0.798439 +0.878788 0.262626 0.795225 +0.878788 0.272727 0.792011 +0.878788 0.282828 0.788797 +0.878788 0.292929 0.785583 +0.878788 0.303030 0.782369 +0.878788 0.313131 0.779155 +0.878788 0.323232 0.775941 +0.878788 0.333333 0.772727 +0.878788 0.343434 0.769513 +0.878788 0.353535 0.766299 +0.878788 0.363636 0.763085 +0.878788 0.373737 0.759871 +0.878788 0.383838 0.756657 +0.878788 0.393939 0.753444 +0.878788 0.404040 0.750230 +0.878788 0.414141 0.747016 +0.878788 0.424242 0.743802 +0.878788 0.434343 0.740588 +0.878788 0.444444 0.737374 +0.878788 0.454545 0.734160 +0.878788 0.464646 0.730946 +0.878788 0.474747 0.727732 +0.878788 0.484848 0.724518 +0.878788 0.494949 0.721304 +0.878788 0.505051 0.718090 +0.878788 0.515152 0.714876 +0.878788 0.525253 0.711662 +0.878788 0.535354 0.708448 +0.878788 0.545455 0.705234 +0.878788 0.555556 0.702020 +0.878788 0.565657 0.698806 +0.878788 0.575758 0.695592 +0.878788 0.585859 0.692378 +0.878788 0.595960 0.689164 +0.878788 0.606061 0.685950 +0.878788 0.616162 0.682736 +0.878788 0.626263 0.679522 +0.878788 0.636364 0.676309 +0.878788 0.646465 0.673095 +0.878788 0.656566 0.669881 +0.878788 0.666667 0.666667 +0.878788 0.676768 0.663453 +0.878788 0.686869 0.660239 +0.878788 0.696970 0.657025 +0.878788 0.707071 0.653811 +0.878788 0.717172 0.650597 +0.878788 0.727273 0.647383 +0.878788 0.737374 0.644169 +0.878788 0.747475 0.640955 +0.878788 0.757576 0.637741 +0.878788 0.767677 0.634527 +0.878788 0.777778 0.631313 +0.878788 0.787879 0.628099 +0.878788 0.797980 0.624885 +0.878788 0.808081 0.621671 +0.878788 0.818182 0.618457 +0.878788 0.828283 0.615243 +0.878788 0.838384 0.612029 +0.878788 0.848485 0.608815 +0.878788 0.858586 0.605601 +0.878788 0.868687 0.602388 +0.878788 0.878788 0.599174 +0.878788 0.888889 0.595960 +0.878788 0.898990 0.592746 +0.878788 0.909091 0.589532 +0.878788 0.919192 0.586318 +0.878788 0.929293 0.583104 +0.878788 0.939394 0.579890 +0.878788 0.949495 0.576676 +0.878788 0.959596 0.573462 +0.878788 0.969697 0.570248 +0.878788 0.979798 0.567034 +0.878788 0.989899 0.563820 +0.878788 1.000000 0.560606 + +0.888889 0.000000 0.888889 +0.888889 0.010101 0.885522 +0.888889 0.020202 0.882155 +0.888889 0.030303 0.878788 +0.888889 0.040404 0.875421 +0.888889 0.050505 0.872054 +0.888889 0.060606 0.868687 +0.888889 0.070707 0.865320 +0.888889 0.080808 0.861953 +0.888889 0.090909 0.858586 +0.888889 0.101010 0.855219 +0.888889 0.111111 0.851852 +0.888889 0.121212 0.848485 +0.888889 0.131313 0.845118 +0.888889 0.141414 0.841751 +0.888889 0.151515 0.838384 +0.888889 0.161616 0.835017 +0.888889 0.171717 0.831650 +0.888889 0.181818 0.828283 +0.888889 0.191919 0.824916 +0.888889 0.202020 0.821549 +0.888889 0.212121 0.818182 +0.888889 0.222222 0.814815 +0.888889 0.232323 0.811448 +0.888889 0.242424 0.808081 +0.888889 0.252525 0.804714 +0.888889 0.262626 0.801347 +0.888889 0.272727 0.797980 +0.888889 0.282828 0.794613 +0.888889 0.292929 0.791246 +0.888889 0.303030 0.787879 +0.888889 0.313131 0.784512 +0.888889 0.323232 0.781145 +0.888889 0.333333 0.777778 +0.888889 0.343434 0.774411 +0.888889 0.353535 0.771044 +0.888889 0.363636 0.767677 +0.888889 0.373737 0.764310 +0.888889 0.383838 0.760943 +0.888889 0.393939 0.757576 +0.888889 0.404040 0.754209 +0.888889 0.414141 0.750842 +0.888889 0.424242 0.747475 +0.888889 0.434343 0.744108 +0.888889 0.444444 0.740741 +0.888889 0.454545 0.737374 +0.888889 0.464646 0.734007 +0.888889 0.474747 0.730640 +0.888889 0.484848 0.727273 +0.888889 0.494949 0.723906 +0.888889 0.505051 0.720539 +0.888889 0.515152 0.717172 +0.888889 0.525253 0.713805 +0.888889 0.535354 0.710438 +0.888889 0.545455 0.707071 +0.888889 0.555556 0.703704 +0.888889 0.565657 0.700337 +0.888889 0.575758 0.696970 +0.888889 0.585859 0.693603 +0.888889 0.595960 0.690236 +0.888889 0.606061 0.686869 +0.888889 0.616162 0.683502 +0.888889 0.626263 0.680135 +0.888889 0.636364 0.676768 +0.888889 0.646465 0.673401 +0.888889 0.656566 0.670034 +0.888889 0.666667 0.666667 +0.888889 0.676768 0.663300 +0.888889 0.686869 0.659933 +0.888889 0.696970 0.656566 +0.888889 0.707071 0.653199 +0.888889 0.717172 0.649832 +0.888889 0.727273 0.646465 +0.888889 0.737374 0.643098 +0.888889 0.747475 0.639731 +0.888889 0.757576 0.636364 +0.888889 0.767677 0.632997 +0.888889 0.777778 0.629630 +0.888889 0.787879 0.626263 +0.888889 0.797980 0.622896 +0.888889 0.808081 0.619529 +0.888889 0.818182 0.616162 +0.888889 0.828283 0.612795 +0.888889 0.838384 0.609428 +0.888889 0.848485 0.606061 +0.888889 0.858586 0.602694 +0.888889 0.868687 0.599327 +0.888889 0.878788 0.595960 +0.888889 0.888889 0.592593 +0.888889 0.898990 0.589226 +0.888889 0.909091 0.585859 +0.888889 0.919192 0.582492 +0.888889 0.929293 0.579125 +0.888889 0.939394 0.575758 +0.888889 0.949495 0.572391 +0.888889 0.959596 0.569024 +0.888889 0.969697 0.565657 +0.888889 0.979798 0.562290 +0.888889 0.989899 0.558923 +0.888889 1.000000 0.555556 + +0.898990 0.000000 0.898990 +0.898990 0.010101 0.895470 +0.898990 0.020202 0.891950 +0.898990 0.030303 0.888430 +0.898990 0.040404 0.884910 +0.898990 0.050505 0.881390 +0.898990 0.060606 0.877870 +0.898990 0.070707 0.874350 +0.898990 0.080808 0.870830 +0.898990 0.090909 0.867309 +0.898990 0.101010 0.863789 +0.898990 0.111111 0.860269 +0.898990 0.121212 0.856749 +0.898990 0.131313 0.853229 +0.898990 0.141414 0.849709 +0.898990 0.151515 0.846189 +0.898990 0.161616 0.842669 +0.898990 0.171717 0.839149 +0.898990 0.181818 0.835629 +0.898990 0.191919 0.832109 +0.898990 0.202020 0.828589 +0.898990 0.212121 0.825069 +0.898990 0.222222 0.821549 +0.898990 0.232323 0.818029 +0.898990 0.242424 0.814509 +0.898990 0.252525 0.810989 +0.898990 0.262626 0.807469 +0.898990 0.272727 0.803949 +0.898990 0.282828 0.800429 +0.898990 0.292929 0.796908 +0.898990 0.303030 0.793388 +0.898990 0.313131 0.789868 +0.898990 0.323232 0.786348 +0.898990 0.333333 0.782828 +0.898990 0.343434 0.779308 +0.898990 0.353535 0.775788 +0.898990 0.363636 0.772268 +0.898990 0.373737 0.768748 +0.898990 0.383838 0.765228 +0.898990 0.393939 0.761708 +0.898990 0.404040 0.758188 +0.898990 0.414141 0.754668 +0.898990 0.424242 0.751148 +0.898990 0.434343 0.747628 +0.898990 0.444444 0.744108 +0.898990 0.454545 0.740588 +0.898990 0.464646 0.737068 +0.898990 0.474747 0.733548 +0.898990 0.484848 0.730028 +0.898990 0.494949 0.726507 +0.898990 0.505051 0.722987 +0.898990 0.515152 0.719467 +0.898990 0.525253 0.715947 +0.898990 0.535354 0.712427 +0.898990 0.545455 0.708907 +0.898990 0.555556 0.705387 +0.898990 0.565657 0.701867 +0.898990 0.575758 0.698347 +0.898990 0.585859 0.694827 +0.898990 0.595960 0.691307 +0.898990 0.606061 0.687787 +0.898990 0.616162 0.684267 +0.898990 0.626263 0.680747 +0.898990 0.636364 0.677227 +0.898990 0.646465 0.673707 +0.898990 0.656566 0.670187 +0.898990 0.666667 0.666667 +0.898990 0.676768 0.663147 +0.898990 0.686869 0.659627 +0.898990 0.696970 0.656107 +0.898990 0.707071 0.652586 +0.898990 0.717172 0.649066 +0.898990 0.727273 0.645546 +0.898990 0.737374 0.642026 +0.898990 0.747475 0.638506 +0.898990 0.757576 0.634986 +0.898990 0.767677 0.631466 +0.898990 0.777778 0.627946 +0.898990 0.787879 0.624426 +0.898990 0.797980 0.620906 +0.898990 0.808081 0.617386 +0.898990 0.818182 0.613866 +0.898990 0.828283 0.610346 +0.898990 0.838384 0.606826 +0.898990 0.848485 0.603306 +0.898990 0.858586 0.599786 +0.898990 0.868687 0.596266 +0.898990 0.878788 0.592746 +0.898990 0.888889 0.589226 +0.898990 0.898990 0.585706 +0.898990 0.909091 0.582185 +0.898990 0.919192 0.578665 +0.898990 0.929293 0.575145 +0.898990 0.939394 0.571625 +0.898990 0.949495 0.568105 +0.898990 0.959596 0.564585 +0.898990 0.969697 0.561065 +0.898990 0.979798 0.557545 +0.898990 0.989899 0.554025 +0.898990 1.000000 0.550505 + +0.909091 0.000000 0.909091 +0.909091 0.010101 0.905418 +0.909091 0.020202 0.901745 +0.909091 0.030303 0.898072 +0.909091 0.040404 0.894399 +0.909091 0.050505 0.890725 +0.909091 0.060606 0.887052 +0.909091 0.070707 0.883379 +0.909091 0.080808 0.879706 +0.909091 0.090909 0.876033 +0.909091 0.101010 0.872360 +0.909091 0.111111 0.868687 +0.909091 0.121212 0.865014 +0.909091 0.131313 0.861341 +0.909091 0.141414 0.857668 +0.909091 0.151515 0.853994 +0.909091 0.161616 0.850321 +0.909091 0.171717 0.846648 +0.909091 0.181818 0.842975 +0.909091 0.191919 0.839302 +0.909091 0.202020 0.835629 +0.909091 0.212121 0.831956 +0.909091 0.222222 0.828283 +0.909091 0.232323 0.824610 +0.909091 0.242424 0.820937 +0.909091 0.252525 0.817264 +0.909091 0.262626 0.813590 +0.909091 0.272727 0.809917 +0.909091 0.282828 0.806244 +0.909091 0.292929 0.802571 +0.909091 0.303030 0.798898 +0.909091 0.313131 0.795225 +0.909091 0.323232 0.791552 +0.909091 0.333333 0.787879 +0.909091 0.343434 0.784206 +0.909091 0.353535 0.780533 +0.909091 0.363636 0.776860 +0.909091 0.373737 0.773186 +0.909091 0.383838 0.769513 +0.909091 0.393939 0.765840 +0.909091 0.404040 0.762167 +0.909091 0.414141 0.758494 +0.909091 0.424242 0.754821 +0.909091 0.434343 0.751148 +0.909091 0.444444 0.747475 +0.909091 0.454545 0.743802 +0.909091 0.464646 0.740129 +0.909091 0.474747 0.736455 +0.909091 0.484848 0.732782 +0.909091 0.494949 0.729109 +0.909091 0.505051 0.725436 +0.909091 0.515152 0.721763 +0.909091 0.525253 0.718090 +0.909091 0.535354 0.714417 +0.909091 0.545455 0.710744 +0.909091 0.555556 0.707071 +0.909091 0.565657 0.703398 +0.909091 0.575758 0.699725 +0.909091 0.585859 0.696051 +0.909091 0.595960 0.692378 +0.909091 0.606061 0.688705 +0.909091 0.616162 0.685032 +0.909091 0.626263 0.681359 +0.909091 0.636364 0.677686 +0.909091 0.646465 0.674013 +0.909091 0.656566 0.670340 +0.909091 0.666667 0.666667 +0.909091 0.676768 0.662994 +0.909091 0.686869 0.659320 +0.909091 0.696970 0.655647 +0.909091 0.707071 0.651974 +0.909091 0.717172 0.648301 +0.909091 0.727273 0.644628 +0.909091 0.737374 0.640955 +0.909091 0.747475 0.637282 +0.909091 0.757576 0.633609 +0.909091 0.767677 0.629936 +0.909091 0.777778 0.626263 +0.909091 0.787879 0.622590 +0.909091 0.797980 0.618916 +0.909091 0.808081 0.615243 +0.909091 0.818182 0.611570 +0.909091 0.828283 0.607897 +0.909091 0.838384 0.604224 +0.909091 0.848485 0.600551 +0.909091 0.858586 0.596878 +0.909091 0.868687 0.593205 +0.909091 0.878788 0.589532 +0.909091 0.888889 0.585859 +0.909091 0.898990 0.582185 +0.909091 0.909091 0.578512 +0.909091 0.919192 0.574839 +0.909091 0.929293 0.571166 +0.909091 0.939394 0.567493 +0.909091 0.949495 0.563820 +0.909091 0.959596 0.560147 +0.909091 0.969697 0.556474 +0.909091 0.979798 0.552801 +0.909091 0.989899 0.549128 +0.909091 1.000000 0.545455 + +0.919192 0.000000 0.919192 +0.919192 0.010101 0.915366 +0.919192 0.020202 0.911540 +0.919192 0.030303 0.907713 +0.919192 0.040404 0.903887 +0.919192 0.050505 0.900061 +0.919192 0.060606 0.896235 +0.919192 0.070707 0.892409 +0.919192 0.080808 0.888583 +0.919192 0.090909 0.884757 +0.919192 0.101010 0.880931 +0.919192 0.111111 0.877104 +0.919192 0.121212 0.873278 +0.919192 0.131313 0.869452 +0.919192 0.141414 0.865626 +0.919192 0.151515 0.861800 +0.919192 0.161616 0.857974 +0.919192 0.171717 0.854148 +0.919192 0.181818 0.850321 +0.919192 0.191919 0.846495 +0.919192 0.202020 0.842669 +0.919192 0.212121 0.838843 +0.919192 0.222222 0.835017 +0.919192 0.232323 0.831191 +0.919192 0.242424 0.827365 +0.919192 0.252525 0.823538 +0.919192 0.262626 0.819712 +0.919192 0.272727 0.815886 +0.919192 0.282828 0.812060 +0.919192 0.292929 0.808234 +0.919192 0.303030 0.804408 +0.919192 0.313131 0.800582 +0.919192 0.323232 0.796755 +0.919192 0.333333 0.792929 +0.919192 0.343434 0.789103 +0.919192 0.353535 0.785277 +0.919192 0.363636 0.781451 +0.919192 0.373737 0.777625 +0.919192 0.383838 0.773799 +0.919192 0.393939 0.769972 +0.919192 0.404040 0.766146 +0.919192 0.414141 0.762320 +0.919192 0.424242 0.758494 +0.919192 0.434343 0.754668 +0.919192 0.444444 0.750842 +0.919192 0.454545 0.747016 +0.919192 0.464646 0.743189 +0.919192 0.474747 0.739363 +0.919192 0.484848 0.735537 +0.919192 0.494949 0.731711 +0.919192 0.505051 0.727885 +0.919192 0.515152 0.724059 +0.919192 0.525253 0.720233 +0.919192 0.535354 0.716406 +0.919192 0.545455 0.712580 +0.919192 0.555556 0.708754 +0.919192 0.565657 0.704928 +0.919192 0.575758 0.701102 +0.919192 0.585859 0.697276 +0.919192 0.595960 0.693450 +0.919192 0.606061 0.689624 +0.919192 0.616162 0.685797 +0.919192 0.626263 0.681971 +0.919192 0.636364 0.678145 +0.919192 0.646465 0.674319 +0.919192 0.656566 0.670493 +0.919192 0.666667 0.666667 +0.919192 0.676768 0.662841 +0.919192 0.686869 0.659014 +0.919192 0.696970 0.655188 +0.919192 0.707071 0.651362 +0.919192 0.717172 0.647536 +0.919192 0.727273 0.643710 +0.919192 0.737374 0.639884 +0.919192 0.747475 0.636058 +0.919192 0.757576 0.632231 +0.919192 0.767677 0.628405 +0.919192 0.777778 0.624579 +0.919192 0.787879 0.620753 +0.919192 0.797980 0.616927 +0.919192 0.808081 0.613101 +0.919192 0.818182 0.609275 +0.919192 0.828283 0.605448 +0.919192 0.838384 0.601622 +0.919192 0.848485 0.597796 +0.919192 0.858586 0.593970 +0.919192 0.868687 0.590144 +0.919192 0.878788 0.586318 +0.919192 0.888889 0.582492 +0.919192 0.898990 0.578665 +0.919192 0.909091 0.574839 +0.919192 0.919192 0.571013 +0.919192 0.929293 0.567187 +0.919192 0.939394 0.563361 +0.919192 0.949495 0.559535 +0.919192 0.959596 0.555709 +0.919192 0.969697 0.551882 +0.919192 0.979798 0.548056 +0.919192 0.989899 0.544230 +0.919192 1.000000 0.540404 + +0.929293 0.000000 0.929293 +0.929293 0.010101 0.925314 +0.929293 0.020202 0.921335 +0.929293 0.030303 0.917355 +0.929293 0.040404 0.913376 +0.929293 0.050505 0.909397 +0.929293 0.060606 0.905418 +0.929293 0.070707 0.901439 +0.929293 0.080808 0.897459 +0.929293 0.090909 0.893480 +0.929293 0.101010 0.889501 +0.929293 0.111111 0.885522 +0.929293 0.121212 0.881543 +0.929293 0.131313 0.877564 +0.929293 0.141414 0.873584 +0.929293 0.151515 0.869605 +0.929293 0.161616 0.865626 +0.929293 0.171717 0.861647 +0.929293 0.181818 0.857668 +0.929293 0.191919 0.853688 +0.929293 0.202020 0.849709 +0.929293 0.212121 0.845730 +0.929293 0.222222 0.841751 +0.929293 0.232323 0.837772 +0.929293 0.242424 0.833792 +0.929293 0.252525 0.829813 +0.929293 0.262626 0.825834 +0.929293 0.272727 0.821855 +0.929293 0.282828 0.817876 +0.929293 0.292929 0.813897 +0.929293 0.303030 0.809917 +0.929293 0.313131 0.805938 +0.929293 0.323232 0.801959 +0.929293 0.333333 0.797980 +0.929293 0.343434 0.794001 +0.929293 0.353535 0.790021 +0.929293 0.363636 0.786042 +0.929293 0.373737 0.782063 +0.929293 0.383838 0.778084 +0.929293 0.393939 0.774105 +0.929293 0.404040 0.770125 +0.929293 0.414141 0.766146 +0.929293 0.424242 0.762167 +0.929293 0.434343 0.758188 +0.929293 0.444444 0.754209 +0.929293 0.454545 0.750230 +0.929293 0.464646 0.746250 +0.929293 0.474747 0.742271 +0.929293 0.484848 0.738292 +0.929293 0.494949 0.734313 +0.929293 0.505051 0.730334 +0.929293 0.515152 0.726354 +0.929293 0.525253 0.722375 +0.929293 0.535354 0.718396 +0.929293 0.545455 0.714417 +0.929293 0.555556 0.710438 +0.929293 0.565657 0.706459 +0.929293 0.575758 0.702479 +0.929293 0.585859 0.698500 +0.929293 0.595960 0.694521 +0.929293 0.606061 0.690542 +0.929293 0.616162 0.686563 +0.929293 0.626263 0.682583 +0.929293 0.636364 0.678604 +0.929293 0.646465 0.674625 +0.929293 0.656566 0.670646 +0.929293 0.666667 0.666667 +0.929293 0.676768 0.662687 +0.929293 0.686869 0.658708 +0.929293 0.696970 0.654729 +0.929293 0.707071 0.650750 +0.929293 0.717172 0.646771 +0.929293 0.727273 0.642792 +0.929293 0.737374 0.638812 +0.929293 0.747475 0.634833 +0.929293 0.757576 0.630854 +0.929293 0.767677 0.626875 +0.929293 0.777778 0.622896 +0.929293 0.787879 0.618916 +0.929293 0.797980 0.614937 +0.929293 0.808081 0.610958 +0.929293 0.818182 0.606979 +0.929293 0.828283 0.603000 +0.929293 0.838384 0.599021 +0.929293 0.848485 0.595041 +0.929293 0.858586 0.591062 +0.929293 0.868687 0.587083 +0.929293 0.878788 0.583104 +0.929293 0.888889 0.579125 +0.929293 0.898990 0.575145 +0.929293 0.909091 0.571166 +0.929293 0.919192 0.567187 +0.929293 0.929293 0.563208 +0.929293 0.939394 0.559229 +0.929293 0.949495 0.555249 +0.929293 0.959596 0.551270 +0.929293 0.969697 0.547291 +0.929293 0.979798 0.543312 +0.929293 0.989899 0.539333 +0.929293 1.000000 0.535354 + +0.939394 0.000000 0.939394 +0.939394 0.010101 0.935262 +0.939394 0.020202 0.931129 +0.939394 0.030303 0.926997 +0.939394 0.040404 0.922865 +0.939394 0.050505 0.918733 +0.939394 0.060606 0.914601 +0.939394 0.070707 0.910468 +0.939394 0.080808 0.906336 +0.939394 0.090909 0.902204 +0.939394 0.101010 0.898072 +0.939394 0.111111 0.893939 +0.939394 0.121212 0.889807 +0.939394 0.131313 0.885675 +0.939394 0.141414 0.881543 +0.939394 0.151515 0.877410 +0.939394 0.161616 0.873278 +0.939394 0.171717 0.869146 +0.939394 0.181818 0.865014 +0.939394 0.191919 0.860882 +0.939394 0.202020 0.856749 +0.939394 0.212121 0.852617 +0.939394 0.222222 0.848485 +0.939394 0.232323 0.844353 +0.939394 0.242424 0.840220 +0.939394 0.252525 0.836088 +0.939394 0.262626 0.831956 +0.939394 0.272727 0.827824 +0.939394 0.282828 0.823691 +0.939394 0.292929 0.819559 +0.939394 0.303030 0.815427 +0.939394 0.313131 0.811295 +0.939394 0.323232 0.807163 +0.939394 0.333333 0.803030 +0.939394 0.343434 0.798898 +0.939394 0.353535 0.794766 +0.939394 0.363636 0.790634 +0.939394 0.373737 0.786501 +0.939394 0.383838 0.782369 +0.939394 0.393939 0.778237 +0.939394 0.404040 0.774105 +0.939394 0.414141 0.769972 +0.939394 0.424242 0.765840 +0.939394 0.434343 0.761708 +0.939394 0.444444 0.757576 +0.939394 0.454545 0.753444 +0.939394 0.464646 0.749311 +0.939394 0.474747 0.745179 +0.939394 0.484848 0.741047 +0.939394 0.494949 0.736915 +0.939394 0.505051 0.732782 +0.939394 0.515152 0.728650 +0.939394 0.525253 0.724518 +0.939394 0.535354 0.720386 +0.939394 0.545455 0.716253 +0.939394 0.555556 0.712121 +0.939394 0.565657 0.707989 +0.939394 0.575758 0.703857 +0.939394 0.585859 0.699725 +0.939394 0.595960 0.695592 +0.939394 0.606061 0.691460 +0.939394 0.616162 0.687328 +0.939394 0.626263 0.683196 +0.939394 0.636364 0.679063 +0.939394 0.646465 0.674931 +0.939394 0.656566 0.670799 +0.939394 0.666667 0.666667 +0.939394 0.676768 0.662534 +0.939394 0.686869 0.658402 +0.939394 0.696970 0.654270 +0.939394 0.707071 0.650138 +0.939394 0.717172 0.646006 +0.939394 0.727273 0.641873 +0.939394 0.737374 0.637741 +0.939394 0.747475 0.633609 +0.939394 0.757576 0.629477 +0.939394 0.767677 0.625344 +0.939394 0.777778 0.621212 +0.939394 0.787879 0.617080 +0.939394 0.797980 0.612948 +0.939394 0.808081 0.608815 +0.939394 0.818182 0.604683 +0.939394 0.828283 0.600551 +0.939394 0.838384 0.596419 +0.939394 0.848485 0.592287 +0.939394 0.858586 0.588154 +0.939394 0.868687 0.584022 +0.939394 0.878788 0.579890 +0.939394 0.888889 0.575758 +0.939394 0.898990 0.571625 +0.939394 0.909091 0.567493 +0.939394 0.919192 0.563361 +0.939394 0.929293 0.559229 +0.939394 0.939394 0.555096 +0.939394 0.949495 0.550964 +0.939394 0.959596 0.546832 +0.939394 0.969697 0.542700 +0.939394 0.979798 0.538567 +0.939394 0.989899 0.534435 +0.939394 1.000000 0.530303 + +0.949495 0.000000 0.949495 +0.949495 0.010101 0.945210 +0.949495 0.020202 0.940924 +0.949495 0.030303 0.936639 +0.949495 0.040404 0.932354 +0.949495 0.050505 0.928069 +0.949495 0.060606 0.923783 +0.949495 0.070707 0.919498 +0.949495 0.080808 0.915213 +0.949495 0.090909 0.910927 +0.949495 0.101010 0.906642 +0.949495 0.111111 0.902357 +0.949495 0.121212 0.898072 +0.949495 0.131313 0.893786 +0.949495 0.141414 0.889501 +0.949495 0.151515 0.885216 +0.949495 0.161616 0.880931 +0.949495 0.171717 0.876645 +0.949495 0.181818 0.872360 +0.949495 0.191919 0.868075 +0.949495 0.202020 0.863789 +0.949495 0.212121 0.859504 +0.949495 0.222222 0.855219 +0.949495 0.232323 0.850934 +0.949495 0.242424 0.846648 +0.949495 0.252525 0.842363 +0.949495 0.262626 0.838078 +0.949495 0.272727 0.833792 +0.949495 0.282828 0.829507 +0.949495 0.292929 0.825222 +0.949495 0.303030 0.820937 +0.949495 0.313131 0.816651 +0.949495 0.323232 0.812366 +0.949495 0.333333 0.808081 +0.949495 0.343434 0.803796 +0.949495 0.353535 0.799510 +0.949495 0.363636 0.795225 +0.949495 0.373737 0.790940 +0.949495 0.383838 0.786654 +0.949495 0.393939 0.782369 +0.949495 0.404040 0.778084 +0.949495 0.414141 0.773799 +0.949495 0.424242 0.769513 +0.949495 0.434343 0.765228 +0.949495 0.444444 0.760943 +0.949495 0.454545 0.756657 +0.949495 0.464646 0.752372 +0.949495 0.474747 0.748087 +0.949495 0.484848 0.743802 +0.949495 0.494949 0.739516 +0.949495 0.505051 0.735231 +0.949495 0.515152 0.730946 +0.949495 0.525253 0.726661 +0.949495 0.535354 0.722375 +0.949495 0.545455 0.718090 +0.949495 0.555556 0.713805 +0.949495 0.565657 0.709519 +0.949495 0.575758 0.705234 +0.949495 0.585859 0.700949 +0.949495 0.595960 0.696664 +0.949495 0.606061 0.692378 +0.949495 0.616162 0.688093 +0.949495 0.626263 0.683808 +0.949495 0.636364 0.679522 +0.949495 0.646465 0.675237 +0.949495 0.656566 0.670952 +0.949495 0.666667 0.666667 +0.949495 0.676768 0.662381 +0.949495 0.686869 0.658096 +0.949495 0.696970 0.653811 +0.949495 0.707071 0.649526 +0.949495 0.717172 0.645240 +0.949495 0.727273 0.640955 +0.949495 0.737374 0.636670 +0.949495 0.747475 0.632384 +0.949495 0.757576 0.628099 +0.949495 0.767677 0.623814 +0.949495 0.777778 0.619529 +0.949495 0.787879 0.615243 +0.949495 0.797980 0.610958 +0.949495 0.808081 0.606673 +0.949495 0.818182 0.602388 +0.949495 0.828283 0.598102 +0.949495 0.838384 0.593817 +0.949495 0.848485 0.589532 +0.949495 0.858586 0.585246 +0.949495 0.868687 0.580961 +0.949495 0.878788 0.576676 +0.949495 0.888889 0.572391 +0.949495 0.898990 0.568105 +0.949495 0.909091 0.563820 +0.949495 0.919192 0.559535 +0.949495 0.929293 0.555249 +0.949495 0.939394 0.550964 +0.949495 0.949495 0.546679 +0.949495 0.959596 0.542394 +0.949495 0.969697 0.538108 +0.949495 0.979798 0.533823 +0.949495 0.989899 0.529538 +0.949495 1.000000 0.525253 + +0.959596 0.000000 0.959596 +0.959596 0.010101 0.955158 +0.959596 0.020202 0.950719 +0.959596 0.030303 0.946281 +0.959596 0.040404 0.941843 +0.959596 0.050505 0.937404 +0.959596 0.060606 0.932966 +0.959596 0.070707 0.928528 +0.959596 0.080808 0.924089 +0.959596 0.090909 0.919651 +0.959596 0.101010 0.915213 +0.959596 0.111111 0.910774 +0.959596 0.121212 0.906336 +0.959596 0.131313 0.901898 +0.959596 0.141414 0.897459 +0.959596 0.151515 0.893021 +0.959596 0.161616 0.888583 +0.959596 0.171717 0.884144 +0.959596 0.181818 0.879706 +0.959596 0.191919 0.875268 +0.959596 0.202020 0.870830 +0.959596 0.212121 0.866391 +0.959596 0.222222 0.861953 +0.959596 0.232323 0.857515 +0.959596 0.242424 0.853076 +0.959596 0.252525 0.848638 +0.959596 0.262626 0.844200 +0.959596 0.272727 0.839761 +0.959596 0.282828 0.835323 +0.959596 0.292929 0.830885 +0.959596 0.303030 0.826446 +0.959596 0.313131 0.822008 +0.959596 0.323232 0.817570 +0.959596 0.333333 0.813131 +0.959596 0.343434 0.808693 +0.959596 0.353535 0.804255 +0.959596 0.363636 0.799816 +0.959596 0.373737 0.795378 +0.959596 0.383838 0.790940 +0.959596 0.393939 0.786501 +0.959596 0.404040 0.782063 +0.959596 0.414141 0.777625 +0.959596 0.424242 0.773186 +0.959596 0.434343 0.768748 +0.959596 0.444444 0.764310 +0.959596 0.454545 0.759871 +0.959596 0.464646 0.755433 +0.959596 0.474747 0.750995 +0.959596 0.484848 0.746556 +0.959596 0.494949 0.742118 +0.959596 0.505051 0.737680 +0.959596 0.515152 0.733242 +0.959596 0.525253 0.728803 +0.959596 0.535354 0.724365 +0.959596 0.545455 0.719927 +0.959596 0.555556 0.715488 +0.959596 0.565657 0.711050 +0.959596 0.575758 0.706612 +0.959596 0.585859 0.702173 +0.959596 0.595960 0.697735 +0.959596 0.606061 0.693297 +0.959596 0.616162 0.688858 +0.959596 0.626263 0.684420 +0.959596 0.636364 0.679982 +0.959596 0.646465 0.675543 +0.959596 0.656566 0.671105 +0.959596 0.666667 0.666667 +0.959596 0.676768 0.662228 +0.959596 0.686869 0.657790 +0.959596 0.696970 0.653352 +0.959596 0.707071 0.648913 +0.959596 0.717172 0.644475 +0.959596 0.727273 0.640037 +0.959596 0.737374 0.635598 +0.959596 0.747475 0.631160 +0.959596 0.757576 0.626722 +0.959596 0.767677 0.622283 +0.959596 0.777778 0.617845 +0.959596 0.787879 0.613407 +0.959596 0.797980 0.608968 +0.959596 0.808081 0.604530 +0.959596 0.818182 0.600092 +0.959596 0.828283 0.595654 +0.959596 0.838384 0.591215 +0.959596 0.848485 0.586777 +0.959596 0.858586 0.582339 +0.959596 0.868687 0.577900 +0.959596 0.878788 0.573462 +0.959596 0.888889 0.569024 +0.959596 0.898990 0.564585 +0.959596 0.909091 0.560147 +0.959596 0.919192 0.555709 +0.959596 0.929293 0.551270 +0.959596 0.939394 0.546832 +0.959596 0.949495 0.542394 +0.959596 0.959596 0.537955 +0.959596 0.969697 0.533517 +0.959596 0.979798 0.529079 +0.959596 0.989899 0.524640 +0.959596 1.000000 0.520202 + +0.969697 0.000000 0.969697 +0.969697 0.010101 0.965106 +0.969697 0.020202 0.960514 +0.969697 0.030303 0.955923 +0.969697 0.040404 0.951331 +0.969697 0.050505 0.946740 +0.969697 0.060606 0.942149 +0.969697 0.070707 0.937557 +0.969697 0.080808 0.932966 +0.969697 0.090909 0.928375 +0.969697 0.101010 0.923783 +0.969697 0.111111 0.919192 +0.969697 0.121212 0.914601 +0.969697 0.131313 0.910009 +0.969697 0.141414 0.905418 +0.969697 0.151515 0.900826 +0.969697 0.161616 0.896235 +0.969697 0.171717 0.891644 +0.969697 0.181818 0.887052 +0.969697 0.191919 0.882461 +0.969697 0.202020 0.877870 +0.969697 0.212121 0.873278 +0.969697 0.222222 0.868687 +0.969697 0.232323 0.864096 +0.969697 0.242424 0.859504 +0.969697 0.252525 0.854913 +0.969697 0.262626 0.850321 +0.969697 0.272727 0.845730 +0.969697 0.282828 0.841139 +0.969697 0.292929 0.836547 +0.969697 0.303030 0.831956 +0.969697 0.313131 0.827365 +0.969697 0.323232 0.822773 +0.969697 0.333333 0.818182 +0.969697 0.343434 0.813590 +0.969697 0.353535 0.808999 +0.969697 0.363636 0.804408 +0.969697 0.373737 0.799816 +0.969697 0.383838 0.795225 +0.969697 0.393939 0.790634 +0.969697 0.404040 0.786042 +0.969697 0.414141 0.781451 +0.969697 0.424242 0.776860 +0.969697 0.434343 0.772268 +0.969697 0.444444 0.767677 +0.969697 0.454545 0.763085 +0.969697 0.464646 0.758494 +0.969697 0.474747 0.753903 +0.969697 0.484848 0.749311 +0.969697 0.494949 0.744720 +0.969697 0.505051 0.740129 +0.969697 0.515152 0.735537 +0.969697 0.525253 0.730946 +0.969697 0.535354 0.726354 +0.969697 0.545455 0.721763 +0.969697 0.555556 0.717172 +0.969697 0.565657 0.712580 +0.969697 0.575758 0.707989 +0.969697 0.585859 0.703398 +0.969697 0.595960 0.698806 +0.969697 0.606061 0.694215 +0.969697 0.616162 0.689624 +0.969697 0.626263 0.685032 +0.969697 0.636364 0.680441 +0.969697 0.646465 0.675849 +0.969697 0.656566 0.671258 +0.969697 0.666667 0.666667 +0.969697 0.676768 0.662075 +0.969697 0.686869 0.657484 +0.969697 0.696970 0.652893 +0.969697 0.707071 0.648301 +0.969697 0.717172 0.643710 +0.969697 0.727273 0.639118 +0.969697 0.737374 0.634527 +0.969697 0.747475 0.629936 +0.969697 0.757576 0.625344 +0.969697 0.767677 0.620753 +0.969697 0.777778 0.616162 +0.969697 0.787879 0.611570 +0.969697 0.797980 0.606979 +0.969697 0.808081 0.602388 +0.969697 0.818182 0.597796 +0.969697 0.828283 0.593205 +0.969697 0.838384 0.588613 +0.969697 0.848485 0.584022 +0.969697 0.858586 0.579431 +0.969697 0.868687 0.574839 +0.969697 0.878788 0.570248 +0.969697 0.888889 0.565657 +0.969697 0.898990 0.561065 +0.969697 0.909091 0.556474 +0.969697 0.919192 0.551882 +0.969697 0.929293 0.547291 +0.969697 0.939394 0.542700 +0.969697 0.949495 0.538108 +0.969697 0.959596 0.533517 +0.969697 0.969697 0.528926 +0.969697 0.979798 0.524334 +0.969697 0.989899 0.519743 +0.969697 1.000000 0.515152 + +0.979798 0.000000 0.979798 +0.979798 0.010101 0.975054 +0.979798 0.020202 0.970309 +0.979798 0.030303 0.965565 +0.979798 0.040404 0.960820 +0.979798 0.050505 0.956076 +0.979798 0.060606 0.951331 +0.979798 0.070707 0.946587 +0.979798 0.080808 0.941843 +0.979798 0.090909 0.937098 +0.979798 0.101010 0.932354 +0.979798 0.111111 0.927609 +0.979798 0.121212 0.922865 +0.979798 0.131313 0.918121 +0.979798 0.141414 0.913376 +0.979798 0.151515 0.908632 +0.979798 0.161616 0.903887 +0.979798 0.171717 0.899143 +0.979798 0.181818 0.894399 +0.979798 0.191919 0.889654 +0.979798 0.202020 0.884910 +0.979798 0.212121 0.880165 +0.979798 0.222222 0.875421 +0.979798 0.232323 0.870676 +0.979798 0.242424 0.865932 +0.979798 0.252525 0.861188 +0.979798 0.262626 0.856443 +0.979798 0.272727 0.851699 +0.979798 0.282828 0.846954 +0.979798 0.292929 0.842210 +0.979798 0.303030 0.837466 +0.979798 0.313131 0.832721 +0.979798 0.323232 0.827977 +0.979798 0.333333 0.823232 +0.979798 0.343434 0.818488 +0.979798 0.353535 0.813743 +0.979798 0.363636 0.808999 +0.979798 0.373737 0.804255 +0.979798 0.383838 0.799510 +0.979798 0.393939 0.794766 +0.979798 0.404040 0.790021 +0.979798 0.414141 0.785277 +0.979798 0.424242 0.780533 +0.979798 0.434343 0.775788 +0.979798 0.444444 0.771044 +0.979798 0.454545 0.766299 +0.979798 0.464646 0.761555 +0.979798 0.474747 0.756811 +0.979798 0.484848 0.752066 +0.979798 0.494949 0.747322 +0.979798 0.505051 0.742577 +0.979798 0.515152 0.737833 +0.979798 0.525253 0.733088 +0.979798 0.535354 0.728344 +0.979798 0.545455 0.723600 +0.979798 0.555556 0.718855 +0.979798 0.565657 0.714111 +0.979798 0.575758 0.709366 +0.979798 0.585859 0.704622 +0.979798 0.595960 0.699878 +0.979798 0.606061 0.695133 +0.979798 0.616162 0.690389 +0.979798 0.626263 0.685644 +0.979798 0.636364 0.680900 +0.979798 0.646465 0.676155 +0.979798 0.656566 0.671411 +0.979798 0.666667 0.666667 +0.979798 0.676768 0.661922 +0.979798 0.686869 0.657178 +0.979798 0.696970 0.652433 +0.979798 0.707071 0.647689 +0.979798 0.717172 0.642945 +0.979798 0.727273 0.638200 +0.979798 0.737374 0.633456 +0.979798 0.747475 0.628711 +0.979798 0.757576 0.623967 +0.979798 0.767677 0.619223 +0.979798 0.777778 0.614478 +0.979798 0.787879 0.609734 +0.979798 0.797980 0.604989 +0.979798 0.808081 0.600245 +0.979798 0.818182 0.595500 +0.979798 0.828283 0.590756 +0.979798 0.838384 0.586012 +0.979798 0.848485 0.581267 +0.979798 0.858586 0.576523 +0.979798 0.868687 0.571778 +0.979798 0.878788 0.567034 +0.979798 0.888889 0.562290 +0.979798 0.898990 0.557545 +0.979798 0.909091 0.552801 +0.979798 0.919192 0.548056 +0.979798 0.929293 0.543312 +0.979798 0.939394 0.538567 +0.979798 0.949495 0.533823 +0.979798 0.959596 0.529079 +0.979798 0.969697 0.524334 +0.979798 0.979798 0.519590 +0.979798 0.989899 0.514845 +0.979798 1.000000 0.510101 + +0.989899 0.000000 0.989899 +0.989899 0.010101 0.985002 +0.989899 0.020202 0.980104 +0.989899 0.030303 0.975207 +0.989899 0.040404 0.970309 +0.989899 0.050505 0.965412 +0.989899 0.060606 0.960514 +0.989899 0.070707 0.955617 +0.989899 0.080808 0.950719 +0.989899 0.090909 0.945822 +0.989899 0.101010 0.940924 +0.989899 0.111111 0.936027 +0.989899 0.121212 0.931129 +0.989899 0.131313 0.926232 +0.989899 0.141414 0.921335 +0.989899 0.151515 0.916437 +0.989899 0.161616 0.911540 +0.989899 0.171717 0.906642 +0.989899 0.181818 0.901745 +0.989899 0.191919 0.896847 +0.989899 0.202020 0.891950 +0.989899 0.212121 0.887052 +0.989899 0.222222 0.882155 +0.989899 0.232323 0.877257 +0.989899 0.242424 0.872360 +0.989899 0.252525 0.867463 +0.989899 0.262626 0.862565 +0.989899 0.272727 0.857668 +0.989899 0.282828 0.852770 +0.989899 0.292929 0.847873 +0.989899 0.303030 0.842975 +0.989899 0.313131 0.838078 +0.989899 0.323232 0.833180 +0.989899 0.333333 0.828283 +0.989899 0.343434 0.823385 +0.989899 0.353535 0.818488 +0.989899 0.363636 0.813590 +0.989899 0.373737 0.808693 +0.989899 0.383838 0.803796 +0.989899 0.393939 0.798898 +0.989899 0.404040 0.794001 +0.989899 0.414141 0.789103 +0.989899 0.424242 0.784206 +0.989899 0.434343 0.779308 +0.989899 0.444444 0.774411 +0.989899 0.454545 0.769513 +0.989899 0.464646 0.764616 +0.989899 0.474747 0.759718 +0.989899 0.484848 0.754821 +0.989899 0.494949 0.749923 +0.989899 0.505051 0.745026 +0.989899 0.515152 0.740129 +0.989899 0.525253 0.735231 +0.989899 0.535354 0.730334 +0.989899 0.545455 0.725436 +0.989899 0.555556 0.720539 +0.989899 0.565657 0.715641 +0.989899 0.575758 0.710744 +0.989899 0.585859 0.705846 +0.989899 0.595960 0.700949 +0.989899 0.606061 0.696051 +0.989899 0.616162 0.691154 +0.989899 0.626263 0.686257 +0.989899 0.636364 0.681359 +0.989899 0.646465 0.676462 +0.989899 0.656566 0.671564 +0.989899 0.666667 0.666667 +0.989899 0.676768 0.661769 +0.989899 0.686869 0.656872 +0.989899 0.696970 0.651974 +0.989899 0.707071 0.647077 +0.989899 0.717172 0.642179 +0.989899 0.727273 0.637282 +0.989899 0.737374 0.632384 +0.989899 0.747475 0.627487 +0.989899 0.757576 0.622590 +0.989899 0.767677 0.617692 +0.989899 0.777778 0.612795 +0.989899 0.787879 0.607897 +0.989899 0.797980 0.603000 +0.989899 0.808081 0.598102 +0.989899 0.818182 0.593205 +0.989899 0.828283 0.588307 +0.989899 0.838384 0.583410 +0.989899 0.848485 0.578512 +0.989899 0.858586 0.573615 +0.989899 0.868687 0.568717 +0.989899 0.878788 0.563820 +0.989899 0.888889 0.558923 +0.989899 0.898990 0.554025 +0.989899 0.909091 0.549128 +0.989899 0.919192 0.544230 +0.989899 0.929293 0.539333 +0.989899 0.939394 0.534435 +0.989899 0.949495 0.529538 +0.989899 0.959596 0.524640 +0.989899 0.969697 0.519743 +0.989899 0.979798 0.514845 +0.989899 0.989899 0.509948 +0.989899 1.000000 0.505051 + +1.000000 0.000000 1.000000 +1.000000 0.010101 0.994949 +1.000000 0.020202 0.989899 +1.000000 0.030303 0.984848 +1.000000 0.040404 0.979798 +1.000000 0.050505 0.974747 +1.000000 0.060606 0.969697 +1.000000 0.070707 0.964646 +1.000000 0.080808 0.959596 +1.000000 0.090909 0.954545 +1.000000 0.101010 0.949495 +1.000000 0.111111 0.944444 +1.000000 0.121212 0.939394 +1.000000 0.131313 0.934343 +1.000000 0.141414 0.929293 +1.000000 0.151515 0.924242 +1.000000 0.161616 0.919192 +1.000000 0.171717 0.914141 +1.000000 0.181818 0.909091 +1.000000 0.191919 0.904040 +1.000000 0.202020 0.898990 +1.000000 0.212121 0.893939 +1.000000 0.222222 0.888889 +1.000000 0.232323 0.883838 +1.000000 0.242424 0.878788 +1.000000 0.252525 0.873737 +1.000000 0.262626 0.868687 +1.000000 0.272727 0.863636 +1.000000 0.282828 0.858586 +1.000000 0.292929 0.853535 +1.000000 0.303030 0.848485 +1.000000 0.313131 0.843434 +1.000000 0.323232 0.838384 +1.000000 0.333333 0.833333 +1.000000 0.343434 0.828283 +1.000000 0.353535 0.823232 +1.000000 0.363636 0.818182 +1.000000 0.373737 0.813131 +1.000000 0.383838 0.808081 +1.000000 0.393939 0.803030 +1.000000 0.404040 0.797980 +1.000000 0.414141 0.792929 +1.000000 0.424242 0.787879 +1.000000 0.434343 0.782828 +1.000000 0.444444 0.777778 +1.000000 0.454545 0.772727 +1.000000 0.464646 0.767677 +1.000000 0.474747 0.762626 +1.000000 0.484848 0.757576 +1.000000 0.494949 0.752525 +1.000000 0.505051 0.747475 +1.000000 0.515152 0.742424 +1.000000 0.525253 0.737374 +1.000000 0.535354 0.732323 +1.000000 0.545455 0.727273 +1.000000 0.555556 0.722222 +1.000000 0.565657 0.717172 +1.000000 0.575758 0.712121 +1.000000 0.585859 0.707071 +1.000000 0.595960 0.702020 +1.000000 0.606061 0.696970 +1.000000 0.616162 0.691919 +1.000000 0.626263 0.686869 +1.000000 0.636364 0.681818 +1.000000 0.646465 0.676768 +1.000000 0.656566 0.671717 +1.000000 0.666667 0.666667 +1.000000 0.676768 0.661616 +1.000000 0.686869 0.656566 +1.000000 0.696970 0.651515 +1.000000 0.707071 0.646465 +1.000000 0.717172 0.641414 +1.000000 0.727273 0.636364 +1.000000 0.737374 0.631313 +1.000000 0.747475 0.626263 +1.000000 0.757576 0.621212 +1.000000 0.767677 0.616162 +1.000000 0.777778 0.611111 +1.000000 0.787879 0.606061 +1.000000 0.797980 0.601010 +1.000000 0.808081 0.595960 +1.000000 0.818182 0.590909 +1.000000 0.828283 0.585859 +1.000000 0.838384 0.580808 +1.000000 0.848485 0.575758 +1.000000 0.858586 0.570707 +1.000000 0.868687 0.565657 +1.000000 0.878788 0.560606 +1.000000 0.888889 0.555556 +1.000000 0.898990 0.550505 +1.000000 0.909091 0.545455 +1.000000 0.919192 0.540404 +1.000000 0.929293 0.535354 +1.000000 0.939394 0.530303 +1.000000 0.949495 0.525253 +1.000000 0.959596 0.520202 +1.000000 0.969697 0.515152 +1.000000 0.979798 0.510101 +1.000000 0.989899 0.505051 +1.000000 1.000000 0.500000 + diff --git a/gsl-2.5/doc/examples/interp_compare b/gsl-2.5/doc/examples/interp_compare new file mode 100755 index 00000000..9870a55c --- /dev/null +++ b/gsl-2.5/doc/examples/interp_compare @@ -0,0 +1,228 @@ +#! /bin/sh + +# interp_compare - temporary wrapper script for .libs/interp_compare +# Generated by libtool (GNU libtool) 2.4.2 +# +# The interp_compare program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s/\([`"$\\]\)/\\\1/g' + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command="(cd /home/groups/kipac/chto/package/gsl/gsl-2.5/doc/examples; LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LIBRARY_PATH; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; LD_LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/fftw/include:/home/users/chto/lib/fftw/lib:/home/users/chto/lib/healpix/lib:/home/users/chto/lib/namaster/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/include:/home/users/chto/cpp/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LD_LIBRARY_PATH; PATH=/share/software/user/open/curl/7.54.0/bin:/share/software/user/open/libressl/2.5.3/bin:/home/users/chto/lib/cfitsio:/home/users/chto/lib/cfitsio/include:/home/users/chto/lib:/home/users/chto/bin/bin:/home/users/chto/bin:/home/users/chto/.texlive/bin/x86_64-linux:/home/groups/kipac/chto/anaconda2/envs/newenv3/bin:/home/users/chto/.local/bin/include:/home/users/chto/.local/bin/lib:/home/users/chto/.local/bin:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/bin64:/share/software/user/open/fftw/3.3.6/bin:/home/groups/kipac/chto/anaconda2/condabin:/share/software/user/restricted/ifort/2019/bin:/share/software/user/open/gsl/2.3/bin:/share/software/user/srcc/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/dell/srvadmin/bin:/opt/dell/srvadmin/iSM/bin:/home/users/chto/bin; export PATH; gcc -g -O2 -o \$progdir/\$file interp_compare.o ../../.libs/libgsl.so ../../cblas/.libs/libgslcblas.so -lm -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/.libs -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/cblas/.libs -Wl,-rpath -Wl,/usr/local/lib)" + +# This environment variable determines our operation mode. +if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then + # install mode needs the following variables: + generated_by_libtool_version='2.4.2' + notinst_deplibs=' ../../libgsl.la ../../cblas/libgslcblas.la' +else + # When we are sourced in execute mode, $file and $ECHO are already set. + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + file="$0" + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + ECHO="printf %s\\n" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ which is used only on +# windows platforms, and (c) all begin with the string --lt- +# (application programs are unlikely to have options which match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's ../../libtool value, followed by no. +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=$0 + shift + for lt_opt + do + case "$lt_opt" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%/[^/]*$%%'` + test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=. + lt_dump_F=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%^.*/%%'` + cat "$lt_dump_D/$lt_dump_F" + exit 0 + ;; + --lt-*) + $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n "$lt_option_debug"; then + echo "interp_compare:interp_compare:${LINENO}: libtool wrapper (GNU libtool) 2.4.2" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + $ECHO "interp_compare:interp_compare:${LINENO}: newargv[$lt_dump_args_N]: $lt_arg" + lt_dump_args_N=`expr $lt_dump_args_N + 1` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ + + if test -n "$lt_option_debug"; then + $ECHO "interp_compare:interp_compare:${LINENO}: newargv[0]: $progdir/$program" 1>&2 + func_lt_dump_args ${1+"$@"} 1>&2 + fi + exec "$progdir/$program" ${1+"$@"} + + $ECHO "$0: cannot exec $program $*" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from $@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case " $* " in + *\ --lt-*) + for lt_wr_arg + do + case $lt_wr_arg in + --lt-*) ;; + *) set x "$@" "$lt_wr_arg"; shift;; + esac + shift + done ;; + esac + func_exec_program_core ${1+"$@"} +} + + # Parse options + func_parse_lt_options "$0" ${1+"$@"} + + # Find the directory that this script lives in. + thisdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + test "x$thisdir" = "x$file" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=`ls -ld "$file" | /usr/bin/sed -n 's/.*-> //p'` + while test -n "$file"; do + destdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + + # If there was a directory component, then change thisdir. + if test "x$destdir" != "x$file"; then + case "$destdir" in + [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;; + *) thisdir="$thisdir/$destdir" ;; + esac + fi + + file=`$ECHO "$file" | /usr/bin/sed 's%^.*/%%'` + file=`ls -ld "$thisdir/$file" | /usr/bin/sed -n 's/.*-> //p'` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no + if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then + # special case for '.' + if test "$thisdir" = "."; then + thisdir=`pwd` + fi + # remove .libs from thisdir + case "$thisdir" in + *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /usr/bin/sed 's%[\\/][^\\/]*$%%'` ;; + .libs ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=`cd "$thisdir" && pwd` + test -n "$absdir" && thisdir="$absdir" + + program=lt-'interp_compare' + progdir="$thisdir/.libs" + + if test ! -f "$progdir/$program" || + { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /usr/bin/sed 1q`; \ + test "X$file" != "X$progdir/$program"; }; then + + file="$$-$program" + + if test ! -d "$progdir"; then + mkdir "$progdir" + else + rm -f "$progdir/$file" + fi + + # relink executable if necessary + if test -n "$relink_command"; then + if relink_command_output=`eval $relink_command 2>&1`; then : + else + printf %s\n "$relink_command_output" >&2 + rm -f "$progdir/$file" + exit 1 + fi + fi + + mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null || + { rm -f "$progdir/$program"; + mv -f "$progdir/$file" "$progdir/$program"; } + rm -f "$progdir/$file" + fi + + if test -f "$progdir/$program"; then + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + # Run the actual program with our arguments. + func_exec_program ${1+"$@"} + fi + else + # The program doesn't exist. + $ECHO "$0: error: \`$progdir/$program' does not exist" 1>&2 + $ECHO "This script is just a wrapper for $program." 1>&2 + $ECHO "See the libtool documentation for more information." 1>&2 + exit 1 + fi +fi diff --git a/gsl-2.5/doc/examples/interp_compare.c b/gsl-2.5/doc/examples/interp_compare.c new file mode 100644 index 00000000..2049df48 --- /dev/null +++ b/gsl-2.5/doc/examples/interp_compare.c @@ -0,0 +1,53 @@ +#include +#include +#include + +#include +#include + +int +main(void) +{ + size_t i; + const size_t N = 9; + + /* this dataset is taken from + * J. M. Hyman, Accurate Monotonicity preserving cubic interpolation, + * SIAM J. Sci. Stat. Comput. 4, 4, 1983. */ + const double x[] = { 7.99, 8.09, 8.19, 8.7, 9.2, + 10.0, 12.0, 15.0, 20.0 }; + const double y[] = { 0.0, 2.76429e-5, 4.37498e-2, + 0.169183, 0.469428, 0.943740, + 0.998636, 0.999919, 0.999994 }; + + gsl_interp_accel *acc = gsl_interp_accel_alloc(); + gsl_spline *spline_cubic = gsl_spline_alloc(gsl_interp_cspline, N); + gsl_spline *spline_akima = gsl_spline_alloc(gsl_interp_akima, N); + gsl_spline *spline_steffen = gsl_spline_alloc(gsl_interp_steffen, N); + + gsl_spline_init(spline_cubic, x, y, N); + gsl_spline_init(spline_akima, x, y, N); + gsl_spline_init(spline_steffen, x, y, N); + + for (i = 0; i < N; ++i) + printf("%g %g\n", x[i], y[i]); + + printf("\n\n"); + + for (i = 0; i <= 100; ++i) + { + double xi = (1 - i / 100.0) * x[0] + (i / 100.0) * x[N-1]; + double yi_cubic = gsl_spline_eval(spline_cubic, xi, acc); + double yi_akima = gsl_spline_eval(spline_akima, xi, acc); + double yi_steffen = gsl_spline_eval(spline_steffen, xi, acc); + + printf("%g %g %g %g\n", xi, yi_cubic, yi_akima, yi_steffen); + } + + gsl_spline_free(spline_cubic); + gsl_spline_free(spline_akima); + gsl_spline_free(spline_steffen); + gsl_interp_accel_free(acc); + + return 0; +} diff --git a/gsl-2.5/doc/examples/interp_compare.txt b/gsl-2.5/doc/examples/interp_compare.txt new file mode 100644 index 00000000..459eac7c --- /dev/null +++ b/gsl-2.5/doc/examples/interp_compare.txt @@ -0,0 +1,112 @@ +7.99 0 +8.09 2.76429e-05 +8.19 0.0437498 +8.7 0.169183 +9.2 0.469428 +10 0.94374 +12 0.998636 +15 0.999919 +20 0.999994 + + +7.99 0 0 0 +8.1101 0.00610446 0.00744955 0.00331374 +8.2302 0.0614194 0.0555643 0.0585695 +8.3503 0.0977872 0.077852 0.0890428 +8.4704 0.119747 0.0939162 0.109376 +8.5905 0.140403 0.120807 0.133115 +8.7106 0.172856 0.175411 0.173766 +8.8307 0.226073 0.246775 0.235226 +8.9508 0.296298 0.319125 0.309035 +9.0709 0.377336 0.391778 0.387772 +9.191 0.462995 0.464047 0.464021 +9.3111 0.54776 0.537332 0.542831 +9.4312 0.629514 0.612947 0.632609 +9.5513 0.707207 0.688966 0.724776 +9.6714 0.779786 0.76345 0.810671 +9.7915 0.846198 0.834458 0.881632 +9.9116 0.905394 0.900051 0.928998 +10.0317 0.956324 0.958173 0.945466 +10.1518 0.998494 1.0054 0.951748 +10.2719 1.03243 1.04165 0.957624 +10.392 1.05878 1.06799 0.963098 +10.5121 1.07819 1.08551 0.96817 +10.6322 1.0913 1.09528 0.972843 +10.7523 1.09875 1.09837 0.97712 +10.8724 1.10119 1.09586 0.981003 +10.9925 1.09925 1.08883 0.984493 +11.1126 1.09359 1.07836 0.987594 +11.2327 1.08484 1.06552 0.990307 +11.3528 1.07366 1.05138 0.992634 +11.4729 1.06067 1.03704 0.994578 +11.593 1.04654 1.02355 0.996142 +11.7131 1.03189 1.012 0.997326 +11.8332 1.01737 1.00347 0.998134 +11.9533 1.00363 0.999027 0.998568 +12.0734 0.991283 0.998669 0.998698 +12.1935 0.980549 0.998727 0.998796 +12.3136 0.971356 0.998787 0.998889 +12.4337 0.963625 0.99885 0.998979 +12.5538 0.957277 0.998914 0.999063 +12.6739 0.952232 0.99898 0.999144 +12.794 0.94841 0.999047 0.999221 +12.9141 0.945733 0.999114 0.999293 +13.0342 0.944121 0.999182 0.999361 +13.1543 0.943493 0.999249 0.999425 +13.2744 0.943772 0.999316 0.999485 +13.3945 0.944877 0.999381 0.999541 +13.5146 0.946729 0.999445 0.999593 +13.6347 0.949248 0.999507 0.999641 +13.7548 0.952355 0.999566 0.999685 +13.8749 0.955971 0.999622 0.999725 +13.995 0.960016 0.999674 0.999762 +14.1151 0.964411 0.999723 0.999794 +14.2352 0.969075 0.999767 0.999823 +14.3553 0.973931 0.999807 0.999848 +14.4754 0.978897 0.999841 0.999869 +14.5955 0.983896 0.99987 0.999887 +14.7156 0.988847 0.999893 0.9999 +14.8357 0.99367 0.999909 0.999911 +14.9558 0.998288 0.999918 0.999917 +15.0759 1.00262 0.999921 0.999921 +15.196 1.00665 0.999925 0.999925 +15.3161 1.01037 0.999929 0.999928 +15.4362 1.0138 0.999935 0.999931 +15.5563 1.01694 0.999941 0.999934 +15.6764 1.01979 0.999949 0.999937 +15.7965 1.02238 0.999956 0.999939 +15.9166 1.0247 0.999965 0.999942 +16.0367 1.02677 0.999974 0.999944 +16.1568 1.02858 0.999983 0.999947 +16.2769 1.03015 0.999993 0.999949 +16.397 1.03149 1 0.999951 +16.5171 1.0326 1.00001 0.999953 +16.6372 1.03349 1.00002 0.999955 +16.7573 1.03417 1.00003 0.999956 +16.8774 1.03464 1.00004 0.999958 +16.9975 1.03492 1.00005 0.99996 +17.1176 1.035 1.00006 0.999961 +17.2377 1.03491 1.00007 0.999963 +17.3578 1.03464 1.00008 0.999964 +17.4779 1.03421 1.00009 0.999966 +17.598 1.03361 1.0001 0.999967 +17.7181 1.03287 1.0001 0.999968 +17.8382 1.03198 1.00011 0.99997 +17.9583 1.03095 1.00011 0.999971 +18.0784 1.0298 1.00012 0.999972 +18.1985 1.02852 1.00012 0.999973 +18.3186 1.02713 1.00012 0.999974 +18.4387 1.02563 1.00013 0.999976 +18.5588 1.02404 1.00012 0.999977 +18.6789 1.02236 1.00012 0.999978 +18.799 1.02059 1.00012 0.999979 +18.9191 1.01875 1.00012 0.999981 +19.0392 1.01683 1.00011 0.999982 +19.1593 1.01486 1.0001 0.999983 +19.2794 1.01284 1.00009 0.999985 +19.3995 1.01076 1.00008 0.999986 +19.5196 1.00866 1.00007 0.999987 +19.6397 1.00652 1.00005 0.999989 +19.7598 1.00436 1.00004 0.999991 +19.8799 1.00218 1.00002 0.999992 +20 0.999994 0.999994 0.999994 diff --git a/gsl-2.5/doc/examples/interpp b/gsl-2.5/doc/examples/interpp new file mode 100755 index 00000000..e28df8fd --- /dev/null +++ b/gsl-2.5/doc/examples/interpp @@ -0,0 +1,228 @@ +#! /bin/sh + +# interpp - temporary wrapper script for .libs/interpp +# Generated by libtool (GNU libtool) 2.4.2 +# +# The interpp program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s/\([`"$\\]\)/\\\1/g' + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command="(cd /home/groups/kipac/chto/package/gsl/gsl-2.5/doc/examples; LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LIBRARY_PATH; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; LD_LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/fftw/include:/home/users/chto/lib/fftw/lib:/home/users/chto/lib/healpix/lib:/home/users/chto/lib/namaster/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/include:/home/users/chto/cpp/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LD_LIBRARY_PATH; PATH=/share/software/user/open/curl/7.54.0/bin:/share/software/user/open/libressl/2.5.3/bin:/home/users/chto/lib/cfitsio:/home/users/chto/lib/cfitsio/include:/home/users/chto/lib:/home/users/chto/bin/bin:/home/users/chto/bin:/home/users/chto/.texlive/bin/x86_64-linux:/home/groups/kipac/chto/anaconda2/envs/newenv3/bin:/home/users/chto/.local/bin/include:/home/users/chto/.local/bin/lib:/home/users/chto/.local/bin:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/bin64:/share/software/user/open/fftw/3.3.6/bin:/home/groups/kipac/chto/anaconda2/condabin:/share/software/user/restricted/ifort/2019/bin:/share/software/user/open/gsl/2.3/bin:/share/software/user/srcc/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/dell/srvadmin/bin:/opt/dell/srvadmin/iSM/bin:/home/users/chto/bin; export PATH; gcc -g -O2 -o \$progdir/\$file interpp.o ../../.libs/libgsl.so ../../cblas/.libs/libgslcblas.so -lm -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/.libs -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/cblas/.libs -Wl,-rpath -Wl,/usr/local/lib)" + +# This environment variable determines our operation mode. +if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then + # install mode needs the following variables: + generated_by_libtool_version='2.4.2' + notinst_deplibs=' ../../libgsl.la ../../cblas/libgslcblas.la' +else + # When we are sourced in execute mode, $file and $ECHO are already set. + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + file="$0" + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + ECHO="printf %s\\n" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ which is used only on +# windows platforms, and (c) all begin with the string --lt- +# (application programs are unlikely to have options which match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's ../../libtool value, followed by no. +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=$0 + shift + for lt_opt + do + case "$lt_opt" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%/[^/]*$%%'` + test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=. + lt_dump_F=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%^.*/%%'` + cat "$lt_dump_D/$lt_dump_F" + exit 0 + ;; + --lt-*) + $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n "$lt_option_debug"; then + echo "interpp:interpp:${LINENO}: libtool wrapper (GNU libtool) 2.4.2" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + $ECHO "interpp:interpp:${LINENO}: newargv[$lt_dump_args_N]: $lt_arg" + lt_dump_args_N=`expr $lt_dump_args_N + 1` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ + + if test -n "$lt_option_debug"; then + $ECHO "interpp:interpp:${LINENO}: newargv[0]: $progdir/$program" 1>&2 + func_lt_dump_args ${1+"$@"} 1>&2 + fi + exec "$progdir/$program" ${1+"$@"} + + $ECHO "$0: cannot exec $program $*" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from $@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case " $* " in + *\ --lt-*) + for lt_wr_arg + do + case $lt_wr_arg in + --lt-*) ;; + *) set x "$@" "$lt_wr_arg"; shift;; + esac + shift + done ;; + esac + func_exec_program_core ${1+"$@"} +} + + # Parse options + func_parse_lt_options "$0" ${1+"$@"} + + # Find the directory that this script lives in. + thisdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + test "x$thisdir" = "x$file" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=`ls -ld "$file" | /usr/bin/sed -n 's/.*-> //p'` + while test -n "$file"; do + destdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + + # If there was a directory component, then change thisdir. + if test "x$destdir" != "x$file"; then + case "$destdir" in + [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;; + *) thisdir="$thisdir/$destdir" ;; + esac + fi + + file=`$ECHO "$file" | /usr/bin/sed 's%^.*/%%'` + file=`ls -ld "$thisdir/$file" | /usr/bin/sed -n 's/.*-> //p'` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no + if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then + # special case for '.' + if test "$thisdir" = "."; then + thisdir=`pwd` + fi + # remove .libs from thisdir + case "$thisdir" in + *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /usr/bin/sed 's%[\\/][^\\/]*$%%'` ;; + .libs ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=`cd "$thisdir" && pwd` + test -n "$absdir" && thisdir="$absdir" + + program=lt-'interpp' + progdir="$thisdir/.libs" + + if test ! -f "$progdir/$program" || + { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /usr/bin/sed 1q`; \ + test "X$file" != "X$progdir/$program"; }; then + + file="$$-$program" + + if test ! -d "$progdir"; then + mkdir "$progdir" + else + rm -f "$progdir/$file" + fi + + # relink executable if necessary + if test -n "$relink_command"; then + if relink_command_output=`eval $relink_command 2>&1`; then : + else + printf %s\n "$relink_command_output" >&2 + rm -f "$progdir/$file" + exit 1 + fi + fi + + mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null || + { rm -f "$progdir/$program"; + mv -f "$progdir/$file" "$progdir/$program"; } + rm -f "$progdir/$file" + fi + + if test -f "$progdir/$program"; then + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + # Run the actual program with our arguments. + func_exec_program ${1+"$@"} + fi + else + # The program doesn't exist. + $ECHO "$0: error: \`$progdir/$program' does not exist" 1>&2 + $ECHO "This script is just a wrapper for $program." 1>&2 + $ECHO "See the libtool documentation for more information." 1>&2 + exit 1 + fi +fi diff --git a/gsl-2.5/doc/examples/interpp.c b/gsl-2.5/doc/examples/interpp.c new file mode 100644 index 00000000..02488a1c --- /dev/null +++ b/gsl-2.5/doc/examples/interpp.c @@ -0,0 +1,40 @@ +#include +#include +#include +#include +#include + +int +main (void) +{ + int N = 4; + double x[4] = {0.00, 0.10, 0.27, 0.30}; + double y[4] = {0.15, 0.70, -0.10, 0.15}; + /* Note: y[0] == y[3] for periodic data */ + + gsl_interp_accel *acc = gsl_interp_accel_alloc (); + const gsl_interp_type *t = gsl_interp_cspline_periodic; + gsl_spline *spline = gsl_spline_alloc (t, N); + + int i; double xi, yi; + + printf ("#m=0,S=5\n"); + for (i = 0; i < N; i++) + { + printf ("%g %g\n", x[i], y[i]); + } + + printf ("#m=1,S=0\n"); + gsl_spline_init (spline, x, y, N); + + for (i = 0; i <= 100; i++) + { + xi = (1 - i / 100.0) * x[0] + (i / 100.0) * x[N-1]; + yi = gsl_spline_eval (spline, xi, acc); + printf ("%g %g\n", xi, yi); + } + + gsl_spline_free (spline); + gsl_interp_accel_free (acc); + return 0; +} diff --git a/gsl-2.5/doc/examples/interpp.txt b/gsl-2.5/doc/examples/interpp.txt new file mode 100644 index 00000000..d9b7a3a4 --- /dev/null +++ b/gsl-2.5/doc/examples/interpp.txt @@ -0,0 +1,107 @@ +#m=0,S=5 +0 0.15 +0.1 0.7 +0.27 -0.1 +0.3 0.15 +#m=1,S=0 +0 0.15 +0.003 0.178463 +0.006 0.206683 +0.009 0.234613 +0.012 0.262204 +0.015 0.28941 +0.018 0.316182 +0.021 0.342474 +0.024 0.368236 +0.027 0.393423 +0.03 0.417986 +0.033 0.441878 +0.036 0.465051 +0.039 0.487458 +0.042 0.50905 +0.045 0.529781 +0.048 0.549603 +0.051 0.568468 +0.054 0.586329 +0.057 0.603138 +0.06 0.618847 +0.063 0.633409 +0.066 0.646777 +0.069 0.658902 +0.072 0.669737 +0.075 0.679235 +0.078 0.687348 +0.081 0.694029 +0.084 0.699229 +0.087 0.702901 +0.09 0.704998 +0.093 0.705472 +0.096 0.704276 +0.099 0.701362 +0.102 0.696687 +0.105 0.690283 +0.108 0.682225 +0.111 0.672587 +0.114 0.661448 +0.117 0.648882 +0.12 0.634965 +0.123 0.619775 +0.126 0.603387 +0.129 0.585877 +0.132 0.567321 +0.135 0.547796 +0.138 0.527377 +0.141 0.506141 +0.144 0.484164 +0.147 0.461522 +0.15 0.43829 +0.153 0.414546 +0.156 0.390366 +0.159 0.365824 +0.162 0.340999 +0.165 0.315964 +0.168 0.290798 +0.171 0.265576 +0.174 0.240373 +0.177 0.215267 +0.18 0.190333 +0.183 0.165648 +0.186 0.141287 +0.189 0.117326 +0.192 0.0938429 +0.195 0.0709122 +0.198 0.0486106 +0.201 0.0270141 +0.204 0.00619895 +0.207 -0.0137588 +0.21 -0.0327831 +0.213 -0.0507978 +0.216 -0.0677266 +0.219 -0.0834936 +0.222 -0.0980226 +0.225 -0.111237 +0.228 -0.123062 +0.231 -0.13342 +0.234 -0.142236 +0.237 -0.149433 +0.24 -0.154935 +0.243 -0.158667 +0.246 -0.160551 +0.249 -0.160512 +0.252 -0.158475 +0.255 -0.154361 +0.258 -0.148096 +0.261 -0.139604 +0.264 -0.128808 +0.267 -0.115632 +0.27 -0.1 +0.273 -0.0818941 +0.276 -0.0615288 +0.279 -0.0391769 +0.282 -0.0151111 +0.285 0.0103957 +0.288 0.0370709 +0.291 0.0646417 +0.294 0.0928353 +0.297 0.121379 +0.3 0.15 diff --git a/gsl-2.5/doc/examples/intro b/gsl-2.5/doc/examples/intro new file mode 100755 index 00000000..08d72b55 --- /dev/null +++ b/gsl-2.5/doc/examples/intro @@ -0,0 +1,228 @@ +#! /bin/sh + +# intro - temporary wrapper script for .libs/intro +# Generated by libtool (GNU libtool) 2.4.2 +# +# The intro program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s/\([`"$\\]\)/\\\1/g' + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command="(cd /home/groups/kipac/chto/package/gsl/gsl-2.5/doc/examples; LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LIBRARY_PATH; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; LD_LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/fftw/include:/home/users/chto/lib/fftw/lib:/home/users/chto/lib/healpix/lib:/home/users/chto/lib/namaster/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/include:/home/users/chto/cpp/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LD_LIBRARY_PATH; PATH=/share/software/user/open/curl/7.54.0/bin:/share/software/user/open/libressl/2.5.3/bin:/home/users/chto/lib/cfitsio:/home/users/chto/lib/cfitsio/include:/home/users/chto/lib:/home/users/chto/bin/bin:/home/users/chto/bin:/home/users/chto/.texlive/bin/x86_64-linux:/home/groups/kipac/chto/anaconda2/envs/newenv3/bin:/home/users/chto/.local/bin/include:/home/users/chto/.local/bin/lib:/home/users/chto/.local/bin:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/bin64:/share/software/user/open/fftw/3.3.6/bin:/home/groups/kipac/chto/anaconda2/condabin:/share/software/user/restricted/ifort/2019/bin:/share/software/user/open/gsl/2.3/bin:/share/software/user/srcc/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/dell/srvadmin/bin:/opt/dell/srvadmin/iSM/bin:/home/users/chto/bin; export PATH; gcc -g -O2 -o \$progdir/\$file intro.o ../../.libs/libgsl.so ../../cblas/.libs/libgslcblas.so -lm -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/.libs -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/cblas/.libs -Wl,-rpath -Wl,/usr/local/lib)" + +# This environment variable determines our operation mode. +if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then + # install mode needs the following variables: + generated_by_libtool_version='2.4.2' + notinst_deplibs=' ../../libgsl.la ../../cblas/libgslcblas.la' +else + # When we are sourced in execute mode, $file and $ECHO are already set. + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + file="$0" + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + ECHO="printf %s\\n" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ which is used only on +# windows platforms, and (c) all begin with the string --lt- +# (application programs are unlikely to have options which match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's ../../libtool value, followed by no. +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=$0 + shift + for lt_opt + do + case "$lt_opt" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%/[^/]*$%%'` + test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=. + lt_dump_F=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%^.*/%%'` + cat "$lt_dump_D/$lt_dump_F" + exit 0 + ;; + --lt-*) + $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n "$lt_option_debug"; then + echo "intro:intro:${LINENO}: libtool wrapper (GNU libtool) 2.4.2" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + $ECHO "intro:intro:${LINENO}: newargv[$lt_dump_args_N]: $lt_arg" + lt_dump_args_N=`expr $lt_dump_args_N + 1` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ + + if test -n "$lt_option_debug"; then + $ECHO "intro:intro:${LINENO}: newargv[0]: $progdir/$program" 1>&2 + func_lt_dump_args ${1+"$@"} 1>&2 + fi + exec "$progdir/$program" ${1+"$@"} + + $ECHO "$0: cannot exec $program $*" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from $@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case " $* " in + *\ --lt-*) + for lt_wr_arg + do + case $lt_wr_arg in + --lt-*) ;; + *) set x "$@" "$lt_wr_arg"; shift;; + esac + shift + done ;; + esac + func_exec_program_core ${1+"$@"} +} + + # Parse options + func_parse_lt_options "$0" ${1+"$@"} + + # Find the directory that this script lives in. + thisdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + test "x$thisdir" = "x$file" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=`ls -ld "$file" | /usr/bin/sed -n 's/.*-> //p'` + while test -n "$file"; do + destdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + + # If there was a directory component, then change thisdir. + if test "x$destdir" != "x$file"; then + case "$destdir" in + [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;; + *) thisdir="$thisdir/$destdir" ;; + esac + fi + + file=`$ECHO "$file" | /usr/bin/sed 's%^.*/%%'` + file=`ls -ld "$thisdir/$file" | /usr/bin/sed -n 's/.*-> //p'` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no + if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then + # special case for '.' + if test "$thisdir" = "."; then + thisdir=`pwd` + fi + # remove .libs from thisdir + case "$thisdir" in + *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /usr/bin/sed 's%[\\/][^\\/]*$%%'` ;; + .libs ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=`cd "$thisdir" && pwd` + test -n "$absdir" && thisdir="$absdir" + + program=lt-'intro' + progdir="$thisdir/.libs" + + if test ! -f "$progdir/$program" || + { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /usr/bin/sed 1q`; \ + test "X$file" != "X$progdir/$program"; }; then + + file="$$-$program" + + if test ! -d "$progdir"; then + mkdir "$progdir" + else + rm -f "$progdir/$file" + fi + + # relink executable if necessary + if test -n "$relink_command"; then + if relink_command_output=`eval $relink_command 2>&1`; then : + else + printf %s\n "$relink_command_output" >&2 + rm -f "$progdir/$file" + exit 1 + fi + fi + + mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null || + { rm -f "$progdir/$program"; + mv -f "$progdir/$file" "$progdir/$program"; } + rm -f "$progdir/$file" + fi + + if test -f "$progdir/$program"; then + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + # Run the actual program with our arguments. + func_exec_program ${1+"$@"} + fi + else + # The program doesn't exist. + $ECHO "$0: error: \`$progdir/$program' does not exist" 1>&2 + $ECHO "This script is just a wrapper for $program." 1>&2 + $ECHO "See the libtool documentation for more information." 1>&2 + exit 1 + fi +fi diff --git a/gsl-2.5/doc/examples/intro.c b/gsl-2.5/doc/examples/intro.c new file mode 100644 index 00000000..bd284827 --- /dev/null +++ b/gsl-2.5/doc/examples/intro.c @@ -0,0 +1,11 @@ +#include +#include + +int +main (void) +{ + double x = 5.0; + double y = gsl_sf_bessel_J0 (x); + printf ("J0(%g) = %.18e\n", x, y); + return 0; +} diff --git a/gsl-2.5/doc/examples/intro.txt b/gsl-2.5/doc/examples/intro.txt new file mode 100644 index 00000000..dae05990 --- /dev/null +++ b/gsl-2.5/doc/examples/intro.txt @@ -0,0 +1 @@ +J0(5) = -1.775967713143382642e-01 diff --git a/gsl-2.5/doc/examples/largefit b/gsl-2.5/doc/examples/largefit new file mode 100755 index 00000000..eaa38fd4 --- /dev/null +++ b/gsl-2.5/doc/examples/largefit @@ -0,0 +1,228 @@ +#! /bin/sh + +# largefit - temporary wrapper script for .libs/largefit +# Generated by libtool (GNU libtool) 2.4.2 +# +# The largefit program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s/\([`"$\\]\)/\\\1/g' + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command="(cd /home/groups/kipac/chto/package/gsl/gsl-2.5/doc/examples; LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LIBRARY_PATH; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; LD_LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/fftw/include:/home/users/chto/lib/fftw/lib:/home/users/chto/lib/healpix/lib:/home/users/chto/lib/namaster/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/include:/home/users/chto/cpp/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LD_LIBRARY_PATH; PATH=/share/software/user/open/curl/7.54.0/bin:/share/software/user/open/libressl/2.5.3/bin:/home/users/chto/lib/cfitsio:/home/users/chto/lib/cfitsio/include:/home/users/chto/lib:/home/users/chto/bin/bin:/home/users/chto/bin:/home/users/chto/.texlive/bin/x86_64-linux:/home/groups/kipac/chto/anaconda2/envs/newenv3/bin:/home/users/chto/.local/bin/include:/home/users/chto/.local/bin/lib:/home/users/chto/.local/bin:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/bin64:/share/software/user/open/fftw/3.3.6/bin:/home/groups/kipac/chto/anaconda2/condabin:/share/software/user/restricted/ifort/2019/bin:/share/software/user/open/gsl/2.3/bin:/share/software/user/srcc/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/dell/srvadmin/bin:/opt/dell/srvadmin/iSM/bin:/home/users/chto/bin; export PATH; gcc -g -O2 -o \$progdir/\$file largefit.o ../../.libs/libgsl.so ../../cblas/.libs/libgslcblas.so -lm -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/.libs -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/cblas/.libs -Wl,-rpath -Wl,/usr/local/lib)" + +# This environment variable determines our operation mode. +if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then + # install mode needs the following variables: + generated_by_libtool_version='2.4.2' + notinst_deplibs=' ../../libgsl.la ../../cblas/libgslcblas.la' +else + # When we are sourced in execute mode, $file and $ECHO are already set. + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + file="$0" + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + ECHO="printf %s\\n" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ which is used only on +# windows platforms, and (c) all begin with the string --lt- +# (application programs are unlikely to have options which match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's ../../libtool value, followed by no. +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=$0 + shift + for lt_opt + do + case "$lt_opt" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%/[^/]*$%%'` + test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=. + lt_dump_F=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%^.*/%%'` + cat "$lt_dump_D/$lt_dump_F" + exit 0 + ;; + --lt-*) + $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n "$lt_option_debug"; then + echo "largefit:largefit:${LINENO}: libtool wrapper (GNU libtool) 2.4.2" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + $ECHO "largefit:largefit:${LINENO}: newargv[$lt_dump_args_N]: $lt_arg" + lt_dump_args_N=`expr $lt_dump_args_N + 1` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ + + if test -n "$lt_option_debug"; then + $ECHO "largefit:largefit:${LINENO}: newargv[0]: $progdir/$program" 1>&2 + func_lt_dump_args ${1+"$@"} 1>&2 + fi + exec "$progdir/$program" ${1+"$@"} + + $ECHO "$0: cannot exec $program $*" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from $@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case " $* " in + *\ --lt-*) + for lt_wr_arg + do + case $lt_wr_arg in + --lt-*) ;; + *) set x "$@" "$lt_wr_arg"; shift;; + esac + shift + done ;; + esac + func_exec_program_core ${1+"$@"} +} + + # Parse options + func_parse_lt_options "$0" ${1+"$@"} + + # Find the directory that this script lives in. + thisdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + test "x$thisdir" = "x$file" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=`ls -ld "$file" | /usr/bin/sed -n 's/.*-> //p'` + while test -n "$file"; do + destdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + + # If there was a directory component, then change thisdir. + if test "x$destdir" != "x$file"; then + case "$destdir" in + [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;; + *) thisdir="$thisdir/$destdir" ;; + esac + fi + + file=`$ECHO "$file" | /usr/bin/sed 's%^.*/%%'` + file=`ls -ld "$thisdir/$file" | /usr/bin/sed -n 's/.*-> //p'` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no + if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then + # special case for '.' + if test "$thisdir" = "."; then + thisdir=`pwd` + fi + # remove .libs from thisdir + case "$thisdir" in + *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /usr/bin/sed 's%[\\/][^\\/]*$%%'` ;; + .libs ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=`cd "$thisdir" && pwd` + test -n "$absdir" && thisdir="$absdir" + + program=lt-'largefit' + progdir="$thisdir/.libs" + + if test ! -f "$progdir/$program" || + { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /usr/bin/sed 1q`; \ + test "X$file" != "X$progdir/$program"; }; then + + file="$$-$program" + + if test ! -d "$progdir"; then + mkdir "$progdir" + else + rm -f "$progdir/$file" + fi + + # relink executable if necessary + if test -n "$relink_command"; then + if relink_command_output=`eval $relink_command 2>&1`; then : + else + printf %s\n "$relink_command_output" >&2 + rm -f "$progdir/$file" + exit 1 + fi + fi + + mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null || + { rm -f "$progdir/$program"; + mv -f "$progdir/$file" "$progdir/$program"; } + rm -f "$progdir/$file" + fi + + if test -f "$progdir/$program"; then + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + # Run the actual program with our arguments. + func_exec_program ${1+"$@"} + fi + else + # The program doesn't exist. + $ECHO "$0: error: \`$progdir/$program' does not exist" 1>&2 + $ECHO "This script is just a wrapper for $program." 1>&2 + $ECHO "See the libtool documentation for more information." 1>&2 + exit 1 + fi +fi diff --git a/gsl-2.5/doc/examples/largefit.c b/gsl-2.5/doc/examples/largefit.c new file mode 100644 index 00000000..82820559 --- /dev/null +++ b/gsl-2.5/doc/examples/largefit.c @@ -0,0 +1,173 @@ +#include +#include +#include +#include +#include +#include +#include +#include + +/* function to be fitted */ +double +func(const double t) +{ + double x = sin(10.0 * t); + return exp(x*x*x); +} + +/* construct a row of the least squares matrix */ +int +build_row(const double t, gsl_vector *row) +{ + const size_t p = row->size; + double Xj = 1.0; + size_t j; + + for (j = 0; j < p; ++j) + { + gsl_vector_set(row, j, Xj); + Xj *= t; + } + + return 0; +} + +int +solve_system(const int print_data, const gsl_multilarge_linear_type * T, + const double lambda, const size_t n, const size_t p, + gsl_vector * c) +{ + const size_t nblock = 5; /* number of blocks to accumulate */ + const size_t nrows = n / nblock; /* number of rows per block */ + gsl_multilarge_linear_workspace * w = + gsl_multilarge_linear_alloc(T, p); + gsl_matrix *X = gsl_matrix_alloc(nrows, p); + gsl_vector *y = gsl_vector_alloc(nrows); + gsl_rng *r = gsl_rng_alloc(gsl_rng_default); + const size_t nlcurve = 200; + gsl_vector *reg_param = gsl_vector_alloc(nlcurve); + gsl_vector *rho = gsl_vector_alloc(nlcurve); + gsl_vector *eta = gsl_vector_alloc(nlcurve); + size_t rowidx = 0; + double rnorm, snorm, rcond; + double t = 0.0; + double dt = 1.0 / (n - 1.0); + + while (rowidx < n) + { + size_t nleft = n - rowidx; /* number of rows left to accumulate */ + size_t nr = GSL_MIN(nrows, nleft); /* number of rows in this block */ + gsl_matrix_view Xv = gsl_matrix_submatrix(X, 0, 0, nr, p); + gsl_vector_view yv = gsl_vector_subvector(y, 0, nr); + size_t i; + + /* build (X,y) block with 'nr' rows */ + for (i = 0; i < nr; ++i) + { + gsl_vector_view row = gsl_matrix_row(&Xv.matrix, i); + double fi = func(t); + double ei = gsl_ran_gaussian (r, 0.1 * fi); /* noise */ + double yi = fi + ei; + + /* construct this row of LS matrix */ + build_row(t, &row.vector); + + /* set right hand side value with added noise */ + gsl_vector_set(&yv.vector, i, yi); + + if (print_data && (i % 100 == 0)) + printf("%f %f\n", t, yi); + + t += dt; + } + + /* accumulate (X,y) block into LS system */ + gsl_multilarge_linear_accumulate(&Xv.matrix, &yv.vector, w); + + rowidx += nr; + } + + if (print_data) + printf("\n\n"); + + /* compute L-curve */ + gsl_multilarge_linear_lcurve(reg_param, rho, eta, w); + + /* solve large LS system and store solution in c */ + gsl_multilarge_linear_solve(lambda, c, &rnorm, &snorm, w); + + /* compute reciprocal condition number */ + gsl_multilarge_linear_rcond(&rcond, w); + + fprintf(stderr, "=== Method %s ===\n", gsl_multilarge_linear_name(w)); + fprintf(stderr, "condition number = %e\n", 1.0 / rcond); + fprintf(stderr, "residual norm = %e\n", rnorm); + fprintf(stderr, "solution norm = %e\n", snorm); + + /* output L-curve */ + { + size_t i; + for (i = 0; i < nlcurve; ++i) + { + printf("%.12e %.12e %.12e\n", + gsl_vector_get(reg_param, i), + gsl_vector_get(rho, i), + gsl_vector_get(eta, i)); + } + printf("\n\n"); + } + + gsl_matrix_free(X); + gsl_vector_free(y); + gsl_multilarge_linear_free(w); + gsl_rng_free(r); + gsl_vector_free(reg_param); + gsl_vector_free(rho); + gsl_vector_free(eta); + + return 0; +} + +int +main(int argc, char *argv[]) +{ + const size_t n = 50000; /* number of observations */ + const size_t p = 16; /* polynomial order + 1 */ + double lambda = 0.0; /* regularization parameter */ + gsl_vector *c_tsqr = gsl_vector_alloc(p); + gsl_vector *c_normal = gsl_vector_alloc(p); + + if (argc > 1) + lambda = atof(argv[1]); + + /* solve system with TSQR method */ + solve_system(1, gsl_multilarge_linear_tsqr, lambda, n, p, c_tsqr); + + /* solve system with Normal equations method */ + solve_system(0, gsl_multilarge_linear_normal, lambda, n, p, c_normal); + + /* output solutions */ + { + gsl_vector *v = gsl_vector_alloc(p); + double t; + + for (t = 0.0; t <= 1.0; t += 0.01) + { + double f_exact = func(t); + double f_tsqr, f_normal; + + build_row(t, v); + gsl_blas_ddot(v, c_tsqr, &f_tsqr); + gsl_blas_ddot(v, c_normal, &f_normal); + + printf("%f %e %e %e\n", t, f_exact, f_tsqr, f_normal); + } + + gsl_vector_free(v); + } + + gsl_vector_free(c_tsqr); + gsl_vector_free(c_normal); + + return 0; +} diff --git a/gsl-2.5/doc/examples/largefit.txt b/gsl-2.5/doc/examples/largefit.txt new file mode 100644 index 00000000..c459b010 --- /dev/null +++ b/gsl-2.5/doc/examples/largefit.txt @@ -0,0 +1,1006 @@ +0.000000 1.013392 +0.002000 1.057114 +0.004000 1.006672 +0.006000 1.005092 +0.008000 1.034198 +0.010000 0.999146 +0.012000 0.972324 +0.014000 1.091945 +0.016000 1.027780 +0.018000 0.997921 +0.020000 0.911458 +0.022000 1.176001 +0.024000 1.249657 +0.026001 0.873918 +0.028001 0.996930 +0.030001 1.168647 +0.032001 1.042424 +0.034001 0.956186 +0.036001 1.032493 +0.038001 1.016478 +0.040001 0.916054 +0.042001 1.160628 +0.044001 1.129574 +0.046001 1.134291 +0.048001 1.103102 +0.050001 1.067503 +0.052001 1.242134 +0.054001 1.210027 +0.056001 1.286558 +0.058001 1.167437 +0.060001 1.270989 +0.062001 1.238484 +0.064001 1.247879 +0.066001 1.318323 +0.068001 1.290329 +0.070001 1.076233 +0.072001 1.364227 +0.074001 1.331892 +0.076002 1.644310 +0.078002 1.272358 +0.080002 1.444683 +0.082002 1.379124 +0.084002 1.681307 +0.086002 1.662120 +0.088002 1.616803 +0.090002 1.563115 +0.092002 1.980689 +0.094002 1.605972 +0.096002 1.714268 +0.098002 1.721501 +0.100002 1.835777 +0.102002 1.843517 +0.104002 1.874658 +0.106002 1.839987 +0.108002 2.096691 +0.110002 1.874711 +0.112002 2.227526 +0.114002 2.198516 +0.116002 2.531939 +0.118002 2.440293 +0.120002 2.474498 +0.122002 1.886756 +0.124002 2.395872 +0.126003 2.424067 +0.128003 2.533481 +0.130003 2.920822 +0.132003 2.639199 +0.134003 2.178261 +0.136003 2.563181 +0.138003 2.330377 +0.140003 2.482197 +0.142003 2.944214 +0.144003 2.375046 +0.146003 2.706059 +0.148003 2.644492 +0.150003 2.344976 +0.152003 2.700872 +0.154003 3.176028 +0.156003 2.982176 +0.158003 2.663030 +0.160003 2.816813 +0.162003 2.245545 +0.164003 2.257987 +0.166003 2.447319 +0.168003 2.955995 +0.170003 2.754546 +0.172003 3.082176 +0.174003 2.488766 +0.176004 2.452559 +0.178004 2.407845 +0.180004 2.795500 +0.182004 2.230950 +0.184004 2.287802 +0.186004 2.460347 +0.188004 2.083690 +0.190004 2.204919 +0.192004 2.696174 +0.194004 2.395705 +0.196004 2.178485 +0.198004 2.307372 +0.200004 2.255902 +0.202004 1.987918 +0.204004 1.887785 +0.206004 2.075691 +0.208004 1.686572 +0.210004 1.982841 +0.212004 2.020780 +0.214004 1.649430 +0.216004 1.963334 +0.218004 1.816612 +0.220004 2.047502 +0.222004 1.570563 +0.224004 1.573427 +0.226005 1.335974 +0.228005 1.378628 +0.230005 1.628469 +0.232005 1.620938 +0.234005 1.216537 +0.236005 1.638633 +0.238005 1.554498 +0.240005 1.391226 +0.242005 1.431787 +0.244005 1.263934 +0.246005 1.425465 +0.248005 1.105883 +0.250005 1.265657 +0.252005 1.168639 +0.254005 1.242218 +0.256005 1.245104 +0.258005 1.108120 +0.260005 1.211894 +0.262005 1.078647 +0.264005 1.057431 +0.266005 1.108110 +0.268005 1.266898 +0.270005 1.100118 +0.272005 0.990081 +0.274005 1.023601 +0.276006 1.238272 +0.278006 1.145608 +0.280006 1.064366 +0.282006 1.025441 +0.284006 1.121463 +0.286006 0.977097 +0.288006 1.032786 +0.290006 1.166776 +0.292006 1.089725 +0.294006 1.048237 +0.296006 0.994855 +0.298006 0.981623 +0.300006 0.964743 +0.302006 1.170996 +0.304006 0.909883 +0.306006 1.060783 +0.308006 1.066695 +0.310006 1.235120 +0.312006 0.983080 +0.314006 0.818831 +0.316006 1.173228 +0.318006 1.052397 +0.320006 0.958336 +0.322006 1.063317 +0.324006 1.045760 +0.326007 0.918851 +0.328007 0.828151 +0.330007 0.922930 +0.332007 0.960096 +0.334007 0.837558 +0.336007 1.093800 +0.338007 0.822421 +0.340007 0.982303 +0.342007 0.857034 +0.344007 0.929809 +0.346007 1.098484 +0.348007 0.912742 +0.350007 0.877250 +0.352007 0.875453 +0.354007 0.842108 +0.356007 0.885992 +0.358007 0.906674 +0.360007 0.948593 +0.362007 0.826321 +0.364007 0.794805 +0.366007 0.799018 +0.368007 0.762520 +0.370007 0.854828 +0.372007 0.913891 +0.374007 0.900230 +0.376008 0.764344 +0.378008 0.893758 +0.380008 0.843119 +0.382008 0.637597 +0.384008 0.732940 +0.386008 0.632072 +0.388008 0.820424 +0.390008 0.653834 +0.392008 0.723423 +0.394008 0.668586 +0.396008 0.587775 +0.398008 0.638778 +0.400008 0.675101 +0.402008 0.679205 +0.404008 0.558361 +0.406008 0.669089 +0.408008 0.659724 +0.410008 0.599887 +0.412008 0.691995 +0.414008 0.577313 +0.416008 0.483322 +0.418008 0.536498 +0.420008 0.504125 +0.422008 0.548830 +0.424008 0.493233 +0.426009 0.477806 +0.428009 0.407442 +0.430009 0.503880 +0.432009 0.460940 +0.434009 0.469029 +0.436009 0.501596 +0.438009 0.405411 +0.440009 0.418834 +0.442009 0.478496 +0.444009 0.420672 +0.446009 0.447649 +0.448009 0.375458 +0.450009 0.400451 +0.452009 0.373357 +0.454009 0.434920 +0.456009 0.422812 +0.458009 0.340769 +0.460009 0.414966 +0.462009 0.369741 +0.464009 0.385961 +0.466009 0.366010 +0.468009 0.353909 +0.470009 0.320795 +0.472009 0.422465 +0.474009 0.402222 +0.476010 0.335765 +0.478010 0.409413 +0.480010 0.384967 +0.482010 0.381460 +0.484010 0.357884 +0.486010 0.423619 +0.488010 0.450770 +0.490010 0.421563 +0.492010 0.386944 +0.494010 0.434098 +0.496010 0.414335 +0.498010 0.373130 +0.500010 0.494584 +0.502010 0.399168 +0.504010 0.327445 +0.506010 0.414090 +0.508010 0.548788 +0.510010 0.413589 +0.512010 0.415560 +0.514010 0.402811 +0.516010 0.467932 +0.518010 0.447742 +0.520010 0.514848 +0.522010 0.545292 +0.524010 0.585226 +0.526011 0.481420 +0.528011 0.542183 +0.530011 0.566527 +0.532011 0.639324 +0.534011 0.665601 +0.536011 0.728721 +0.538011 0.628460 +0.540011 0.745176 +0.542011 0.629362 +0.544011 0.755605 +0.546011 0.730199 +0.548011 0.538527 +0.550011 0.716283 +0.552011 0.653197 +0.554011 0.750977 +0.556011 0.751317 +0.558011 0.669732 +0.560011 0.890732 +0.562011 0.801524 +0.564011 0.896916 +0.566011 0.728432 +0.568011 0.873384 +0.570011 0.915557 +0.572011 0.801362 +0.574011 0.939248 +0.576012 0.841058 +0.578012 0.982556 +0.580012 0.801244 +0.582012 0.944939 +0.584012 0.849316 +0.586012 1.044572 +0.588012 0.991711 +0.590012 0.775179 +0.592012 0.900808 +0.594012 1.054818 +0.596012 0.949419 +0.598012 1.055190 +0.600012 0.960703 +0.602012 0.994899 +0.604012 0.942069 +0.606012 0.782694 +0.608012 0.862081 +0.610012 0.972296 +0.612012 1.084091 +0.614012 0.859938 +0.616012 0.945606 +0.618012 0.991509 +0.620012 1.135856 +0.622012 1.113732 +0.624012 1.075624 +0.626013 1.136413 +0.628013 0.989279 +0.630013 0.986572 +0.632013 0.963125 +0.634013 0.976137 +0.636013 1.133298 +0.638013 0.942319 +0.640013 1.061070 +0.642013 1.010832 +0.644013 1.017137 +0.646013 1.033211 +0.648013 1.023089 +0.650013 1.207996 +0.652013 1.029256 +0.654013 0.894798 +0.656013 1.034056 +0.658013 1.023175 +0.660013 0.972134 +0.662013 1.000921 +0.664013 1.059754 +0.666013 1.205824 +0.668013 1.291515 +0.670013 1.253979 +0.672013 1.021328 +0.674013 1.099351 +0.676014 1.250217 +0.678014 1.053546 +0.680014 1.240934 +0.682014 1.132546 +0.684014 1.207390 +0.686014 1.143019 +0.688014 1.187569 +0.690014 1.117158 +0.692014 1.017676 +0.694014 1.148909 +0.696014 1.307952 +0.698014 1.134271 +0.700014 1.339668 +0.702014 1.360803 +0.704014 1.209263 +0.706014 1.643307 +0.708014 1.482189 +0.710014 1.620002 +0.712014 1.531291 +0.714014 1.508616 +0.716014 1.551789 +0.718014 1.820704 +0.720014 1.190510 +0.722014 1.871826 +0.724014 1.808171 +0.726015 1.639588 +0.728015 1.896243 +0.730015 1.814870 +0.732015 2.268629 +0.734015 1.860003 +0.736015 1.909307 +0.738015 2.091058 +0.740015 2.307699 +0.742015 1.724754 +0.744015 2.136682 +0.746015 2.482358 +0.748015 2.739133 +0.750015 2.183903 +0.752015 2.505655 +0.754015 2.256298 +0.756015 2.232645 +0.758015 2.418358 +0.760015 2.743980 +0.762015 2.490451 +0.764015 2.591839 +0.766015 2.890467 +0.768015 2.441939 +0.770015 2.795238 +0.772015 2.882743 +0.774015 2.704971 +0.776016 2.864923 +0.778016 2.931144 +0.780016 2.595133 +0.782016 2.778879 +0.784016 2.588524 +0.786016 2.424629 +0.788016 3.490356 +0.790016 2.725991 +0.792016 2.819722 +0.794016 2.795897 +0.796016 2.278287 +0.798016 2.709274 +0.800016 2.864658 +0.802016 2.495316 +0.804016 2.481585 +0.806016 2.761135 +0.808016 2.443268 +0.810016 2.565330 +0.812016 2.160156 +0.814016 2.817464 +0.816016 2.687451 +0.818016 2.225290 +0.820016 2.234668 +0.822016 2.366997 +0.824016 1.801739 +0.826017 1.999203 +0.828017 2.121902 +0.830017 1.658141 +0.832017 2.048377 +0.834017 1.987455 +0.836017 2.056994 +0.838017 1.748644 +0.840017 2.035117 +0.842017 1.991255 +0.844017 1.933487 +0.846017 1.927148 +0.848017 1.526116 +0.850017 1.825349 +0.852017 1.448218 +0.854017 1.266984 +0.856017 1.574851 +0.858017 1.569314 +0.860017 1.461266 +0.862017 1.241627 +0.864017 1.385409 +0.866017 1.438944 +0.868017 1.458593 +0.870017 1.045023 +0.872017 1.156637 +0.874017 1.231397 +0.876018 1.060101 +0.878018 1.208137 +0.880018 1.297885 +0.882018 1.261846 +0.884018 1.073377 +0.886018 1.146843 +0.888018 1.110004 +0.890018 1.142169 +0.892018 1.091117 +0.894018 1.018172 +0.896018 1.325115 +0.898018 1.055748 +0.900018 0.984488 +0.902018 0.967879 +0.904018 0.961651 +0.906018 1.085517 +0.908018 0.924754 +0.910018 1.080906 +0.912018 0.949908 +0.914018 1.084287 +0.916018 1.115371 +0.918018 1.150677 +0.920018 1.197850 +0.922018 0.909476 +0.924018 0.920649 +0.926019 1.061322 +0.928019 0.867733 +0.930019 1.122616 +0.932019 0.730512 +0.934019 1.068192 +0.936019 1.051183 +0.938019 0.939787 +0.940019 0.793864 +0.942019 0.954387 +0.944019 0.949134 +0.946019 0.950377 +0.948019 0.837390 +0.950019 0.920521 +0.952019 1.038896 +0.954019 1.054405 +0.956019 0.800492 +0.958019 1.108765 +0.960019 1.029235 +0.962019 0.886213 +0.964019 1.086449 +0.966019 0.845174 +0.968019 0.825587 +0.970019 0.979444 +0.972019 0.801748 +0.974019 1.027216 +0.976020 1.065852 +0.978020 0.918422 +0.980020 1.073070 +0.982020 0.794571 +0.984020 1.009434 +0.986020 0.789657 +0.988020 1.017966 +0.990020 0.877302 +0.992020 1.009978 +0.994020 0.872902 +0.996020 0.866302 +0.998020 0.851322 + + +3.049679424205e+02 2.259835726033e+02 4.582825874915e-01 +2.680463954339e+02 2.141625880951e+02 5.231740188551e-01 +2.355948285412e+02 2.030649087681e+02 5.890884464064e-01 +2.070720747634e+02 1.929847787351e+02 6.548268076391e-01 +1.820024845720e+02 1.841072060161e+02 7.193815491988e-01 +1.599679938893e+02 1.765119161116e+02 7.819322821113e-01 +1.406011523916e+02 1.701896640168e+02 8.418163499861e-01 +1.235789958554e+02 1.650602877714e+02 8.985336544077e-01 +1.086176603596e+02 1.609890697240e+02 9.518223955972e-01 +9.546764852977e+01 1.578034068101e+02 1.001803566519e+00 +8.390966888471e+01 1.553114384423e+02 1.049166704959e+00 +7.375097889990e+01 1.533208888884e+02 1.095369478520e+00 +6.482217080569e+01 1.516545543003e+02 1.142835180762e+00 +5.697434651904e+01 1.501600821886e+02 1.195128756643e+00 +5.007663459779e+01 1.487142619106e+02 1.257054974652e+00 +4.401400780969e+01 1.472238754460e+02 1.334559527277e+00 +3.868536492180e+01 1.456254596505e+02 1.434275177416e+00 +3.400184472188e+01 1.438854289541e+02 1.562623610255e+00 +2.988534415606e+01 1.420005556014e+02 1.724596948917e+00 +2.626721587113e+01 1.399974024973e+02 1.922589454722e+00 +2.308712344143e+01 1.379285302548e+02 2.155726253457e+00 +2.029203518998e+01 1.358637352439e+02 2.419978906549e+00 +1.783533982465e+01 1.338764658641e+02 2.709110562615e+00 +1.567606914154e+01 1.320282596578e+02 3.016297482822e+00 +1.377821483337e+01 1.303559182938e+02 3.336147029939e+00 +1.211012800981e+01 1.288656178663e+02 3.666761776237e+00 +1.064399141598e+01 1.275352277273e+02 4.011506063370e+00 +9.355355547988e+00 1.263226219087e+02 4.380226295606e+00 +8.222730929480e+00 1.251758562191e+02 4.789832968191e+00 +7.227229750040e+00 1.240414585308e+02 5.264340172168e+00 +6.352250889373e+00 1.228688803423e+02 5.834649703649e+00 +5.583203074639e+00 1.216111234489e+02 6.538466669693e+00 +4.907261554294e+00 1.202229496636e+02 7.420551016472e+00 +4.313154230704e+00 1.186587305709e+02 8.532950836315e+00 +3.790973685020e+00 1.168719533463e+02 9.934207301729e+00 +3.332011959648e+00 1.148178006003e+02 1.168632231592e+01 +2.928615343100e+00 1.124592892136e+02 1.384882214885e+01 +2.574056735603e+00 1.097764132560e+02 1.647021807289e+01 +2.262423467019e+00 1.067766702154e+02 1.957804508552e+01 +1.988518696314e+00 1.035042389902e+02 2.316931526695e+01 +1.747774748288e+00 1.000441263405e+02 2.720379867731e+01 +1.536176942372e+00 9.651751550744e+01 3.160290211673e+01 +1.350196643238e+00 9.306632436152e+01 3.625646867326e+01 +1.186732416773e+00 8.982894691955e+01 4.103808359877e+01 +1.043058310116e+00 8.691391183585e+01 4.582676062570e+01 +9.167783932792e-01 8.438070050596e+01 5.053038948883e+01 +8.057868042778e-01 8.223470407157e+01 5.510530773189e+01 +7.082326314713e-01 8.043702331377e+01 5.956711649011e+01 +6.224890474974e-01 7.892357938800e+01 6.398958416973e+01 +5.471261800648e-01 7.762560078773e+01 6.849028056538e+01 +4.808872671990e-01 7.648531883774e+01 7.320362439154e+01 +4.226676992988e-01 7.546418427863e+01 7.824535039656e+01 +3.714965985086e-01 7.454378223531e+01 8.367705422653e+01 +3.265206282203e-01 7.372122857792e+01 8.948281171216e+01 +2.869897627095e-01 7.300159914866e+01 9.556798423928e+01 +2.522447795993e-01 7.239018973299e+01 1.017823565619e+02 +2.217062665734e-01 7.188699034993e+01 1.079600203842e+02 +1.948649590132e-01 7.148458809107e+01 1.139628834504e+02 +1.712732474282e-01 7.116922187338e+01 1.197157695454e+02 +1.505377130561e-01 7.092365340987e+01 1.252264459579e+02 +1.323125671547e-01 7.073032520221e+01 1.305894207317e+02 +1.162938845799e-01 7.057376516914e+01 1.359754401985e+02 +1.022145354861e-01 7.044186488844e+01 1.416096903477e+02 +8.983973063048e-02 7.032612844923e+01 1.477431961358e+02 +7.896310599444e-02 7.022118277132e+01 1.546258673032e+02 +6.940328142717e-02 7.012386456067e+01 1.624950613229e+02 +6.100083592454e-02 7.003217179598e+01 1.715957508969e+02 +5.361564910151e-02 6.994433015584e+01 1.822423835322e+02 +4.712456452454e-02 6.985815866212e+01 1.949179608667e+02 +4.141933593721e-02 6.977081093619e+01 2.103878858382e+02 +3.640482213021e-02 6.967884969909e+01 2.297913717301e+02 +3.199740035286e-02 6.957853426728e+01 2.546684078657e+02 +2.812357180813e-02 6.946618683456e+01 2.868951226109e+02 +2.471873597619e-02 6.933853021627e+01 3.285416801955e+02 +2.172611332691e-02 6.919291616778e+01 3.817194980868e+02 +1.909579845621e-02 6.902736812910e+01 4.485119002619e+02 +1.678392785646e-02 6.884035987401e+01 5.310659202446e+02 +1.475194844232e-02 6.863027944213e+01 6.318835512218e+02 +1.296597463394e-02 6.839461346375e+01 7.543092624425e+02 +1.139622327623e-02 6.812901417531e+01 9.031585111281e+02 +1.001651697063e-02 6.782651456142e+01 1.085359927714e+03 +8.803847537122e-03 6.747716659000e+01 1.310418952090e+03 +7.737992326490e-03 6.706828588715e+01 1.590506790044e+03 +6.801176984534e-03 6.658536327462e+01 1.940059864352e+03 +5.977779044391e-03 6.601363178470e+01 2.374889252061e+03 +5.254067404042e-03 6.534026945891e+01 2.910855638793e+03 +4.617973344485e-03 6.455719732250e+01 3.562138386906e+03 +4.058889270048e-03 6.366428932867e+01 4.339102681606e+03 +3.567491814604e-03 6.267248832862e+01 5.245859720167e+03 +3.135586363782e-03 6.160588907903e+01 6.277853533189e+03 +2.755970400406e-03 6.050155242530e+01 7.420104055499e+03 +2.422313394281e-03 5.940602862165e+01 8.646904275189e+03 +2.129051233368e-03 5.836855639358e+01 9.923613104847e+03 +1.871293435858e-03 5.743244640608e+01 1.121063715501e+04 +1.644741595788e-03 5.662739636684e+01 1.246893675602e+04 +1.445617702215e-03 5.596542477358e+01 1.366581501745e+04 +1.270601136561e-03 5.544155166517e+01 1.477969701783e+04 +1.116773297502e-03 5.503826835667e+01 1.580309946444e+04 +9.815689299551e-04 5.473156687373e+01 1.674369511751e+04 +8.627333465155e-04 5.449640043827e+01 1.762385046111e+04 +7.582848279681e-04 5.431042986004e+01 1.847900635574e+04 +6.664815758530e-04 5.415593441138e+01 1.935484503417e+04 +5.857926659852e-04 5.402033332951e+01 2.030270337697e+04 +5.148725185431e-04 5.389585865836e+01 2.137270142245e+04 +4.525384589871e-04 5.377876456271e+01 2.260501851422e+04 +3.977509956095e-04 5.366827635539e+01 2.402150709753e+04 +3.495964848212e-04 5.356539678304e+01 2.562124943888e+04 +3.072718951013e-04 5.347170769179e+01 2.738330307216e+04 +2.700714155276e-04 5.338835905032e+01 2.927752258345e+04 +2.373746855730e-04 5.331543087285e+01 3.128147567889e+04 +2.086364498842e-04 5.325174979972e+01 3.339987703278e+04 +1.833774655255e-04 5.319509292624e+01 3.568305894010e+04 +1.611765100547e-04 5.314260887537e+01 3.824166167882e+04 +1.416633571578e-04 5.309128027256e+01 4.125447176857e+04 +1.245126027012e-04 5.303831969727e+01 4.496484882641e+04 +1.094382382465e-04 5.298147262353e+01 4.966040333759e+04 +9.618888153220e-05 5.291924900503e+01 5.563383515992e+04 +8.454358438755e-05 5.285110689565e+01 6.313071752292e+04 +7.430814816890e-05 5.277757941862e+01 7.229717397212e+04 +6.531188527540e-05 5.270029563775e+01 8.314068461487e+04 +5.740477273813e-05 5.262182638889e+01 9.551210236273e+04 +5.045495041555e-05 5.254531378210e+01 1.091125928936e+05 +4.434652207489e-05 5.247392203016e+01 1.235271215048e+05 +3.897762268998e-05 5.241024302340e+01 1.382828041506e+05 +3.425871972545e-05 5.235583933623e+01 1.529245504406e+05 +3.011112007939e-05 5.231106435988e+01 1.670954150499e+05 +2.646565778586e-05 5.227518193852e+01 1.806094911526e+05 +2.326154059335e-05 5.224668972485e+01 1.935119799947e+05 +2.044533618452e-05 5.222369908601e+01 2.061305143217e+05 +1.797008113114e-05 5.220425083049e+01 2.191280230144e+05 +1.579449772533e-05 5.218651154871e+01 2.335655557254e+05 +1.388230562649e-05 5.216885414581e+01 2.509716911627e+05 +1.220161684523e-05 5.214985583332e+01 2.733973324070e+05 +1.072440397463e-05 5.212824939940e+01 3.034255308554e+05 +9.426032801221e-06 5.210285127069e+01 3.441286227233e+05 +8.284851501294e-06 5.207247405350e+01 3.990242380564e+05 +7.281829571992e-06 5.203581896811e+01 4.721336506966e+05 +6.400240475916e-06 5.199133865623e+01 5.682316956516e+05 +5.625382706993e-06 5.193706450555e+01 6.933025701832e+05 +4.944334626053e-06 5.187040273270e+01 8.551440096070e+05 +4.345738977722e-06 5.178791397898e+01 1.064035103089e+06 +3.819613495208e-06 5.168509532479e+01 1.333397492723e+06 +3.357184434584e-06 5.155617973127e+01 1.680418230300e+06 +2.950740262582e-06 5.139396237027e+01 2.126640761294e+06 +2.593503057958e-06 5.118966656947e+01 2.698536351414e+06 +2.279515481906e-06 5.093288121229e+01 3.428020357099e+06 +2.003541432621e-06 5.061163611976e+01 4.352780805349e+06 +1.760978727319e-06 5.021272592245e+01 5.516163242910e+06 +1.547782355572e-06 4.972243530928e+01 6.966230762767e+06 +1.360397024141e-06 4.912784091228e+01 8.753521489096e+06 +1.195697868392e-06 4.841883568674e+01 1.092701093981e+07 +1.050938341606e-06 4.759089389166e+01 1.352794387497e+07 +9.237044131753e-07 4.664832218953e+01 1.658164028060e+07 +8.118743118798e-07 4.560732261099e+01 2.008816503830e+07 +7.135831429282e-07 4.449773910327e+01 2.401376999151e+07 +6.271917887047e-07 4.336215166050e+01 2.828587218909e+07 +5.512595746088e-07 4.225139784199e+01 3.279438219587e+07 +4.845202441592e-07 4.121682990561e+01 3.740090786786e+07 +4.258608427195e-07 4.030127349128e+01 4.195485557181e+07 +3.743031577071e-07 3.953173297308e+01 4.631278202120e+07 +3.289874057797e-07 3.891642339257e+01 5.035599138393e+07 +2.891578949660e-07 3.844676343210e+01 5.400216182414e+07 +2.541504226369e-07 3.810280148913e+01 5.720924257908e+07 +2.233811991685e-07 3.785954274835e+01 5.997258460255e+07 +1.963371125817e-07 3.769210926731e+01 6.231799311050e+07 +1.725671718139e-07 3.757885546304e+01 6.429372180437e+07 +1.516749859274e-07 3.750258812543e+01 6.596375020163e+07 +1.333121538371e-07 3.745051689113e+01 6.740362385498e+07 +1.171724543240e-07 3.741358003337e+01 6.869911719292e+07 +1.029867394468e-07 3.738560108985e+01 6.994710253322e+07 +9.051844619181e-08 3.736252106902e+01 7.125718563003e+07 +7.955965151425e-08 3.734179686937e+01 7.275186740938e+07 +6.992760498403e-08 3.732196707845e+01 7.456253628416e+07 +6.146168121320e-08 3.730234421251e+01 7.681932313605e+07 +5.402070124404e-08 3.728278048869e+01 7.963573818349e+07 +4.748057822849e-08 3.726346243053e+01 8.309395524530e+07 +4.173224813812e-08 3.724471192961e+01 8.724121987765e+07 +3.667985099677e-08 3.722679910599e+01 9.210837630022e+07 +3.223913230585e-08 3.720979199425e+01 9.775638111824e+07 +2.833603800423e-08 3.719346822868e+01 1.043487916304e+08 +2.490547953214e-08 3.717729492105e+01 1.122419448656e+08 +2.189024840499e-08 3.716045855081e+01 1.220806229921e+08 +1.924006219650e-08 3.714191300791e+01 1.348824173316e+08 +1.691072602177e-08 3.712041695171e+01 1.520889847190e+08 +1.486339553702e-08 3.709454560502e+01 1.755672020785e+08 +1.306392916575e-08 3.706267739824e+01 2.075689433456e+08 +1.148231874895e-08 3.702296679654e+01 2.506905659759e+08 +1.009218912470e-08 3.697332095515e+01 3.078742741709e+08 +8.870358292231e-09 3.691140209812e+01 3.824534649951e+08 +7.796450825514e-09 3.683468187906e+01 4.781999433549e+08 +6.852558089779e-09 3.674057841140e+01 5.993131653022e+08 +6.022939594530e-09 3.662670799804e+01 7.502945321952e+08 +5.293760502879e-09 3.649127521517e+01 9.356581119542e+08 +4.652860919823e-09 3.633359756823e+01 1.159442820756e+09 +4.089553112091e-09 3.615470633857e+01 1.424521991192e+09 +3.594443277976e-09 3.595788592371e+01 1.731766078313e+09 +3.159274894948e-09 3.574893609636e+01 2.079201726433e+09 +2.776791032705e-09 3.553592108066e+01 2.461399457379e+09 +2.440613335560e-09 3.532827065242e+01 2.869359696485e+09 +2.145135656071e-09 3.513533667002e+01 3.291094515703e+09 + + +3.049679424205e+02 2.259835726033e+02 4.582825874915e-01 +2.580143967012e+02 2.107917110746e+02 5.426082927241e-01 +2.182899237760e+02 1.969684354706e+02 6.280418497061e-01 +1.846815194475e+02 1.850487061133e+02 7.121585522137e-01 +1.562475401313e+02 1.752656274770e+02 7.930682981603e-01 +1.321913197927e+02 1.675964837258e+02 8.693421204564e-01 +1.118388488795e+02 1.618268821054e+02 9.400558583882e-01 +9.461988985585e+01 1.576110875095e+02 1.005149540682e+00 +8.005200023099e+01 1.545371696057e+02 1.066046743531e+00 +6.772701543772e+01 1.521942914640e+02 1.126373406299e+00 +5.729961283748e+01 1.502241872559e+02 1.192658486550e+00 +4.847763643658e+01 1.483466628748e+02 1.274825221439e+00 +4.101391123083e+01 1.463656702668e+02 1.385929772224e+00 +3.469931783187e+01 1.441690985792e+02 1.540301316776e+00 +2.935693333953e+01 1.417297421472e+02 1.749806092407e+00 +2.483707429862e+01 1.391041033590e+02 2.019585643005e+00 +2.101310285311e+01 1.364177628998e+02 2.345735002147e+00 +1.777787859417e+01 1.338283415434e+02 2.716599205799e+00 +1.504075668969e+01 1.314720392843e+02 3.117640207549e+00 +1.272504818840e+01 1.294169569152e+02 3.538511961844e+00 +1.076587134131e+01 1.276471559312e+02 3.980317715907e+00 +9.108333738442e+00 1.260812049620e+02 4.461112370318e+00 +7.705994327879e+00 1.246070234525e+02 5.018597491481e+00 +6.519562225819e+00 1.231104890422e+02 5.710329194894e+00 +5.515795860705e+00 1.214867211134e+02 6.613138593918e+00 +4.666571607597e+00 1.196368388221e+02 7.823580755521e+00 +3.948095817681e+00 1.174610443004e+02 9.458350960490e+00 +3.340238165469e+00 1.148598056939e+02 1.164917560198e+01 +2.825967635357e+00 1.117502412693e+02 1.452604760013e+01 +2.390875344951e+00 1.080972264270e+02 1.818796364880e+01 +2.022770835581e+00 1.039503446808e+02 2.266732295247e+01 +1.711340518826e+00 9.946934383099e+01 2.789962785978e+01 +1.447858709380e+00 9.491587394605e+01 3.371400985489e+01 +1.224943147940e+00 9.059756018016e+01 3.985883912724e+01 +1.036348164336e+00 8.677789061808e+01 4.606460668162e+01 +8.767896857335e-01 8.359646347455e+01 5.212653786163e+01 +7.417971869529e-01 8.104571911451e+01 5.797568302676e+01 +6.275884348605e-01 7.901219010388e+01 6.370905876257e+01 +5.309635173847e-01 7.734832525030e+01 6.956172344971e+01 +4.492151880655e-01 7.593296422152e+01 7.581897226351e+01 +3.800530141556e-01 7.469915091790e+01 8.268988116780e+01 +3.215392030504e-01 7.362996788669e+01 9.019565601143e+01 +2.720343090240e-01 7.273474094259e+01 9.813916665329e+01 +2.301512990768e-01 7.202192463254e+01 1.061832261122e+02 +1.947166909085e-01 7.148248866532e+01 1.139975843316e+02 +1.647376741754e-01 7.108865833154e+01 1.213999943425e+02 +1.393742938322e-01 7.080299585605e+01 1.284368825002e+02 +1.179159161890e-01 7.058920502254e+01 1.353897398723e+02 +9.976131830610e-02 7.041904289990e+01 1.427184814670e+02 +8.440184287099e-02 7.027423887434e+01 1.509648598701e+02 +7.140714658724e-02 7.014478571731e+01 1.606625767605e+02 +6.041314277373e-02 7.002547201602e+01 1.723360934395e+02 +5.111180034816e-02 6.991233631353e+01 1.866698902479e+02 +4.324251338182e-02 6.980030144257e+01 2.048512607612e+02 +3.658479941695e-02 6.968249354276e+01 2.289602472619e+02 +3.095212196757e-02 6.955090952728e+01 2.621794592607e+02 +2.618666412181e-02 6.939767543500e+01 3.086242096507e+02 +2.215490681210e-02 6.921620850188e+01 3.728421070701e+02 +1.874388786482e-02 6.900177043142e+01 4.593858154564e+02 +1.585803701495e-02 6.875094124020e+01 5.729767296634e+02 +1.341649820897e-02 6.845968368576e+01 7.195640314556e+02 +1.135086417200e-02 6.812026175427e+01 9.082478531752e+02 +9.603259766031e-03 6.771817256197e+01 1.153588955293e+03 +8.124720438586e-03 6.723070460904e+01 1.477311918389e+03 +6.873820329080e-03 6.662828151778e+01 1.908279926652e+03 +5.815511594968e-03 6.587892354475e+01 2.480185026957e+03 +4.920142437842e-03 6.495574734126e+01 3.227081011554e+03 +4.162626316419e-03 6.384720900213e+01 4.176967938403e+03 +3.521739069356e-03 6.256865185603e+01 5.343610016092e+03 +2.979524254605e-03 6.117107240471e+01 6.717761704343e+03 +2.520790044052e-03 5.974038296860e+01 8.260991136084e+03 +2.132683577376e-03 5.838168094622e+01 9.906593124929e+03 +1.804330849347e-03 5.719097351245e+01 1.157044754920e+04 +1.526532040872e-03 5.622731665128e+01 1.316986820656e+04 +1.291503757557e-03 5.550068025654e+01 1.464383902609e+04 +1.092660953800e-03 5.498030660407e+01 1.596756996356e+04 +9.244324323271e-04 5.461483823207e+01 1.715835023547e+04 +7.821047498462e-04 5.435156904376e+01 1.827395545075e+04 +6.616901553228e-04 5.414797212023e+01 1.940534856590e+04 +5.598148607808e-04 5.397562114610e+01 2.066231255729e+04 +4.736245141778e-04 5.381940468664e+01 2.214936214812e+04 +4.007042258887e-04 5.367450654534e+01 2.393457955958e+04 +3.390109080900e-04 5.354229985126e+01 2.602639663440e+04 +2.868160313236e-04 5.342604724619e+01 2.837817555207e+04 +2.426571943885e-04 5.332736508149e+01 3.092967785648e+04 +2.052971506396e-04 5.324459080968e+01 3.367054173808e+04 +1.736891426893e-04 5.317299906526e+01 3.671050569139e+04 +1.469475742560e-04 5.310630424053e+01 4.032974244152e+04 +1.243231974398e-04 5.303819740723e+01 4.499743271301e+04 +1.051821202216e-04 5.296362103615e+01 5.132199424049e+04 +8.898804601339e-05 5.287975482181e+01 5.991429886061e+04 +7.528724764817e-05 5.278641293981e+01 7.122146357710e+04 +6.369585480710e-05 5.268658738576e+01 8.532818479701e+04 +5.388909870323e-05 5.258592744926e+01 1.018857103170e+05 +4.559221267760e-05 5.249113326898e+01 1.201705707293e+05 +3.857273375988e-05 5.240863762809e+01 1.391467466499e+05 +3.263398949798e-05 5.234177351724e+01 1.578504886232e+05 +2.760958756991e-05 5.229076495765e+01 1.755532601109e+05 +2.335875378730e-05 5.225329742770e+01 1.920099678601e+05 +1.976238787030e-05 5.222562200334e+01 2.076530752312e+05 +1.671972648424e-05 5.220315733218e+01 2.239381257502e+05 +1.414552004253e-05 5.218315775742e+01 2.429197584341e+05 +1.196764417542e-05 5.216240796147e+01 2.684093632441e+05 +1.012507894223e-05 5.213794233797e+01 3.046802204850e+05 +8.566199168660e-06 5.210910669969e+01 3.577988367371e+05 +7.247328007599e-06 5.207584536028e+01 4.301821112814e+05 +6.131513196879e-06 5.203088670405e+01 5.412010475005e+05 +5.187491727169e-06 5.183122774103e+01 9.969792728200e+05 +4.388813911898e-06 5.190699188272e+01 9.893521774544e+05 +3.713102317328e-06 5.190798847671e+01 9.961181134401e+05 +3.141424789410e-06 5.182411236510e+01 1.341532374497e+06 +2.657764010829e-06 5.147839905729e+01 2.509821409081e+06 +2.248568726226e-06 5.046109021201e+01 5.732483448678e+06 +1.902374061791e-06 5.184220134806e+01 2.005716766290e+06 +1.609480301297e-06 5.187119094759e+01 1.692576367374e+06 +1.361681118499e-06 5.186791358945e+01 1.721948981712e+06 +1.152033651473e-06 5.186832227990e+01 1.719877644338e+06 +9.746639768273e-07 5.186808539121e+01 1.767622829488e+06 +8.246025335369e-07 5.187135128498e+01 1.773673814186e+06 +6.976448852957e-07 5.186817629358e+01 1.780216661561e+06 +5.902339202035e-07 5.187107789658e+01 1.795770998166e+06 +4.993601872550e-07 5.186433526457e+01 1.795350920380e+06 +4.224775772450e-07 5.186090336890e+01 1.814290881152e+06 +3.574319856293e-07 5.186090336890e+01 1.814290881152e+06 +3.024009586119e-07 5.186039910453e+01 1.853208087651e+06 +2.558426314545e-07 5.186039910453e+01 1.853208087651e+06 +2.164525283584e-07 5.186039910453e+01 1.853208087651e+06 +1.831270135332e-07 5.186039910453e+01 1.853208087651e+06 +1.549323694204e-07 5.186039910453e+01 1.853208087651e+06 +1.310786357025e-07 5.186039910453e+01 1.853208087651e+06 +1.108974761176e-07 5.186039910453e+01 1.853208087651e+06 +9.382345294742e-08 5.186039910453e+01 1.853208087651e+06 +7.937818452824e-08 5.186039910453e+01 1.853208087651e+06 +6.715694190588e-08 5.186039910453e+01 1.853208087651e+06 +5.681730910015e-08 5.186039910453e+01 1.853208087651e+06 +4.806958926013e-08 5.186039910453e+01 1.853208087651e+06 +4.066868790926e-08 5.186039910453e+01 1.853208087651e+06 +3.440724586412e-08 5.186039910453e+01 1.853208087651e+06 +2.910982942443e-08 5.186039910453e+01 1.853208087651e+06 +2.462801505433e-08 5.186039910453e+01 1.853208087651e+06 +2.083623083710e-08 5.186039910453e+01 1.853208087651e+06 +1.762823818888e-08 5.186039910453e+01 1.853208087651e+06 +1.491415525550e-08 5.186039910453e+01 1.853208087651e+06 +1.261793859385e-08 5.186039910453e+01 1.853208087651e+06 +1.067525257923e-08 5.186039910453e+01 1.853208087651e+06 +9.031666843409e-09 5.186039910453e+01 1.853208087651e+06 +7.641131239281e-09 5.186039910453e+01 1.853208087651e+06 +6.464685603247e-09 5.186039910453e+01 1.853208087651e+06 +5.469368165539e-09 5.186039910453e+01 1.853208087651e+06 +4.627292024099e-09 5.186039910453e+01 1.853208087651e+06 +3.914863806610e-09 5.186039910453e+01 1.853208087651e+06 +3.312122629063e-09 5.186039910453e+01 1.853208087651e+06 +2.802180829747e-09 5.186039910453e+01 1.853208087651e+06 +2.370750809073e-09 5.186039910453e+01 1.853208087651e+06 +2.005744718205e-09 5.186039910453e+01 1.853208087651e+06 +1.696935780518e-09 5.186039910453e+01 1.853208087651e+06 +1.435671756763e-09 5.186039910453e+01 1.853208087651e+06 +1.214632525773e-09 5.186039910453e+01 1.853208087651e+06 +1.027624988593e-09 5.186039910453e+01 1.853208087651e+06 +8.694095496150e-10 5.186039910453e+01 1.853208087651e+06 +7.355533130786e-10 5.186039910453e+01 1.853208087651e+06 +6.223058817568e-10 5.186039910453e+01 1.853208087651e+06 +5.264942779582e-10 5.186039910453e+01 1.853208087651e+06 +4.454340427254e-10 5.186039910453e+01 1.853208087651e+06 +3.768540223992e-10 5.186039910453e+01 1.853208087651e+06 +3.188327352115e-10 5.186039910453e+01 1.853208087651e+06 +2.697445350199e-10 5.186039910453e+01 1.853208087651e+06 +2.282140637938e-10 5.186039910453e+01 1.853208087651e+06 +1.930777166975e-10 5.186039910453e+01 1.853208087651e+06 +1.633510400954e-10 5.186039910453e+01 1.853208087651e+06 +1.382011490329e-10 5.186039910453e+01 1.853208087651e+06 +1.169233913838e-10 5.186039910453e+01 1.853208087651e+06 +9.892160483726e-11 5.186039910453e+01 1.853208087651e+06 +8.369141356375e-11 5.186039910453e+01 1.853208087651e+06 +7.080609656325e-11 5.186039910453e+01 1.853208087651e+06 +5.990463175419e-11 5.186039910453e+01 1.853208087651e+06 +5.068158082121e-11 5.186039910453e+01 1.853208087651e+06 +4.287853141435e-11 5.186039910453e+01 1.853208087651e+06 +3.627685692634e-11 5.186039910453e+01 1.853208087651e+06 +3.069159099076e-11 5.186039910453e+01 1.853208087651e+06 +2.596624507622e-11 5.186039910453e+01 1.853208087651e+06 +2.196842397520e-11 5.186039910453e+01 1.853208087651e+06 +1.858611634209e-11 5.186039910453e+01 1.853208087651e+06 +1.572455634832e-11 5.186039910453e+01 1.853208087651e+06 +1.330356852397e-11 5.186039910453e+01 1.853208087651e+06 +1.125532139360e-11 5.186039910453e+01 1.853208087651e+06 +9.522426967234e-12 5.186039910453e+01 1.853208087651e+06 +8.056332838073e-12 5.186039910453e+01 1.853208087651e+06 +6.815961836321e-12 5.186039910453e+01 1.853208087651e+06 +5.766561125012e-12 5.186039910453e+01 1.853208087651e+06 +4.878728491596e-12 5.186039910453e+01 1.853208087651e+06 +4.127588553857e-12 5.186039910453e+01 1.853208087651e+06 +3.492095798993e-12 5.186039910453e+01 1.853208087651e+06 +2.954444928371e-12 5.186039910453e+01 1.853208087651e+06 +2.499571986912e-12 5.186039910453e+01 1.853208087651e+06 +2.114732299715e-12 5.186039910453e+01 1.853208087651e+06 +1.789143390499e-12 5.186039910453e+01 1.853208087651e+06 +1.513682877117e-12 5.186039910453e+01 1.853208087651e+06 +1.280632879759e-12 5.186039910453e+01 1.853208087651e+06 +1.083463780633e-12 5.186039910453e+01 1.853208087651e+06 + + +0.000000 1.000000e+00 1.106435e+00 1.564761e+00 +0.010000 1.000996e+00 9.643174e-01 1.046171e+00 +0.020000 1.007872e+00 9.985518e-01 8.072637e-01 +0.030000 1.026144e+00 1.055627e+00 7.663715e-01 +0.040000 1.060833e+00 1.095438e+00 8.584341e-01 +0.050000 1.116496e+00 1.129109e+00 1.032520e+00 +0.060000 1.197241e+00 1.182450e+00 1.249602e+00 +0.070000 1.306512e+00 1.276822e+00 1.480568e+00 +0.080000 1.446506e+00 1.421306e+00 1.704470e+00 +0.090000 1.617126e+00 1.611688e+00 1.906976e+00 +0.100000 1.814524e+00 1.833147e+00 2.079037e+00 +0.110000 2.029607e+00 2.064484e+00 2.215728e+00 +0.120000 2.247143e+00 2.282520e+00 2.315273e+00 +0.130000 2.446382e+00 2.465879e+00 2.378215e+00 +0.140000 2.603824e+00 2.597737e+00 2.406738e+00 +0.150000 2.697981e+00 2.667444e+00 2.404107e+00 +0.160000 2.714808e+00 2.671077e+00 2.374229e+00 +0.170000 2.651704e+00 2.611102e+00 2.321300e+00 +0.180000 2.518282e+00 2.495385e+00 2.249549e+00 +0.190000 2.333563e+00 2.335779e+00 2.163044e+00 +0.200000 2.120871e+00 2.146524e+00 2.065565e+00 +0.210000 1.902566e+00 1.942651e+00 1.960518e+00 +0.220000 1.696364e+00 1.738537e+00 1.850899e+00 +0.230000 1.513870e+00 1.546724e+00 1.739278e+00 +0.240000 1.360947e+00 1.377063e+00 1.627814e+00 +0.250000 1.239061e+00 1.236213e+00 1.518278e+00 +0.260000 1.146817e+00 1.127472e+00 1.412091e+00 +0.270000 1.081190e+00 1.050925e+00 1.310369e+00 +0.280000 1.038307e+00 1.003833e+00 1.213964e+00 +0.290000 1.013789e+00 9.812211e-01 1.123505e+00 +0.300000 1.002814e+00 9.765745e-01 1.039440e+00 +0.310000 1.000072e+00 9.825851e-01 9.620688e-01 +0.320000 9.998011e-01 9.918822e-01 8.915680e-01 +0.330000 9.960824e-01 9.976926e-01 8.280159e-01 +0.340000 9.834513e-01 9.943849e-01 7.714069e-01 +0.350000 9.577548e-01 9.778718e-01 7.216631e-01 +0.360000 9.169922e-01 9.458505e-01 6.786410e-01 +0.370000 8.617940e-01 8.978799e-01 6.421348e-01 +0.380000 7.952798e-01 8.353015e-01 6.118786e-01 +0.390000 7.222899e-01 7.610231e-01 5.875475e-01 +0.400000 6.482631e-01 6.791917e-01 5.687590e-01 +0.410000 5.781627e-01 5.947875e-01 5.550766e-01 +0.420000 5.157735e-01 5.131735e-01 5.460150e-01 +0.430000 4.634795e-01 4.396378e-01 5.410488e-01 +0.440000 4.224349e-01 3.789614e-01 5.396247e-01 +0.450000 3.929418e-01 3.350427e-01 5.411772e-01 +0.460000 3.748639e-01 3.106037e-01 5.451478e-01 +0.470000 3.679641e-01 3.069960e-01 5.510064e-01 +0.480000 3.721204e-01 3.241182e-01 5.582759e-01 +0.490000 3.874083e-01 3.604473e-01 5.665579e-01 +0.500000 4.140514e-01 4.131796e-01 5.755570e-01 +0.510000 4.522382e-01 4.784692e-01 5.851062e-01 +0.520000 5.018122e-01 5.517453e-01 5.951866e-01 +0.530000 5.618693e-01 6.280851e-01 6.059456e-01 +0.540000 6.303577e-01 7.026157e-01 6.177069e-01 +0.550000 7.038367e-01 7.709139e-01 6.309742e-01 +0.560000 7.775882e-01 8.293771e-01 6.464270e-01 +0.570000 8.462014e-01 8.755360e-01 6.649054e-01 +0.580000 9.045780e-01 9.082848e-01 6.873860e-01 +0.590000 9.490803e-01 9.280111e-01 7.149463e-01 +0.600000 9.784214e-01 9.366110e-01 7.487197e-01 +0.610000 9.939735e-01 9.373849e-01 7.898396e-01 +0.620000 9.994265e-01 9.348157e-01 8.393758e-01 +0.630000 1.000005e+00 9.342404e-01 8.982640e-01 +0.640000 1.001584e+00 9.414336e-01 9.672299e-01 +0.650000 1.010005e+00 9.621283e-01 1.046713e+00 +0.660000 1.030699e+00 1.001506e+00 1.136789e+00 +0.670000 1.068607e+00 1.063689e+00 1.237105e+00 +0.680000 1.128215e+00 1.151285e+00 1.346812e+00 +0.690000 1.213540e+00 1.264999e+00 1.464524e+00 +0.700000 1.327870e+00 1.403374e+00 1.588287e+00 +0.710000 1.473103e+00 1.562677e+00 1.715577e+00 +0.720000 1.648620e+00 1.736952e+00 1.843317e+00 +0.730000 1.849790e+00 1.918257e+00 1.967934e+00 +0.740000 2.066518e+00 2.097091e+00 2.085446e+00 +0.750000 2.282551e+00 2.262978e+00 2.191578e+00 +0.760000 2.476419e+00 2.405206e+00 2.281925e+00 +0.770000 2.624586e+00 2.513653e+00 2.352140e+00 +0.780000 2.706446e+00 2.579667e+00 2.398161e+00 +0.790000 2.709671e+00 2.596905e+00 2.416458e+00 +0.800000 2.633762e+00 2.562085e+00 2.404298e+00 +0.810000 2.490197e+00 2.475547e+00 2.360025e+00 +0.820000 2.299110e+00 2.341554e+00 2.283317e+00 +0.830000 2.084002e+00 2.168269e+00 2.175433e+00 +0.840000 1.866653e+00 1.967353e+00 2.039403e+00 +0.850000 1.663794e+00 1.753153e+00 1.880148e+00 +0.860000 1.486002e+00 1.541503e+00 1.704501e+00 +0.870000 1.338291e+00 1.348178e+00 1.521091e+00 +0.880000 1.221545e+00 1.187118e+00 1.340059e+00 +0.890000 1.134018e+00 1.068574e+00 1.172570e+00 +0.900000 1.072503e+00 9.974043e-01 1.030068e+00 +0.910000 1.033025e+00 9.717928e-01 9.232463e-01 +0.920000 1.011135e+00 9.827288e-01 8.606868e-01 +0.930000 1.001930e+00 1.014601e+00 8.471216e-01 +0.940000 1.000015e+00 1.047279e+00 8.812897e-01 +0.950000 9.995757e-01 1.060013e+00 9.533524e-01 +0.960000 9.947162e-01 1.037401e+00 1.041848e+00 +0.970000 9.801295e-01 9.774923e-01 1.110176e+00 +0.980000 9.519710e-01 9.018439e-01 1.102617e+00 +0.990000 9.086638e-01 8.669304e-01 9.399196e-01 diff --git a/gsl-2.5/doc/examples/largefit2.txt b/gsl-2.5/doc/examples/largefit2.txt new file mode 100644 index 00000000..527827e9 --- /dev/null +++ b/gsl-2.5/doc/examples/largefit2.txt @@ -0,0 +1,1006 @@ +0.000000 1.013392 +0.002000 1.057114 +0.004000 1.006672 +0.006000 1.005092 +0.008000 1.034198 +0.010000 0.999146 +0.012000 0.972324 +0.014000 1.091945 +0.016000 1.027780 +0.018000 0.997921 +0.020000 0.911458 +0.022000 1.176001 +0.024000 1.249657 +0.026001 0.873918 +0.028001 0.996930 +0.030001 1.168647 +0.032001 1.042424 +0.034001 0.956186 +0.036001 1.032493 +0.038001 1.016478 +0.040001 0.916054 +0.042001 1.160628 +0.044001 1.129574 +0.046001 1.134291 +0.048001 1.103102 +0.050001 1.067503 +0.052001 1.242134 +0.054001 1.210027 +0.056001 1.286558 +0.058001 1.167437 +0.060001 1.270989 +0.062001 1.238484 +0.064001 1.247879 +0.066001 1.318323 +0.068001 1.290329 +0.070001 1.076233 +0.072001 1.364227 +0.074001 1.331892 +0.076002 1.644310 +0.078002 1.272358 +0.080002 1.444683 +0.082002 1.379124 +0.084002 1.681307 +0.086002 1.662120 +0.088002 1.616803 +0.090002 1.563115 +0.092002 1.980689 +0.094002 1.605972 +0.096002 1.714268 +0.098002 1.721501 +0.100002 1.835777 +0.102002 1.843517 +0.104002 1.874658 +0.106002 1.839987 +0.108002 2.096691 +0.110002 1.874711 +0.112002 2.227526 +0.114002 2.198516 +0.116002 2.531939 +0.118002 2.440293 +0.120002 2.474498 +0.122002 1.886756 +0.124002 2.395872 +0.126003 2.424067 +0.128003 2.533481 +0.130003 2.920822 +0.132003 2.639199 +0.134003 2.178261 +0.136003 2.563181 +0.138003 2.330377 +0.140003 2.482197 +0.142003 2.944214 +0.144003 2.375046 +0.146003 2.706059 +0.148003 2.644492 +0.150003 2.344976 +0.152003 2.700872 +0.154003 3.176028 +0.156003 2.982176 +0.158003 2.663030 +0.160003 2.816813 +0.162003 2.245545 +0.164003 2.257987 +0.166003 2.447319 +0.168003 2.955995 +0.170003 2.754546 +0.172003 3.082176 +0.174003 2.488766 +0.176004 2.452559 +0.178004 2.407845 +0.180004 2.795500 +0.182004 2.230950 +0.184004 2.287802 +0.186004 2.460347 +0.188004 2.083690 +0.190004 2.204919 +0.192004 2.696174 +0.194004 2.395705 +0.196004 2.178485 +0.198004 2.307372 +0.200004 2.255902 +0.202004 1.987918 +0.204004 1.887785 +0.206004 2.075691 +0.208004 1.686572 +0.210004 1.982841 +0.212004 2.020780 +0.214004 1.649430 +0.216004 1.963334 +0.218004 1.816612 +0.220004 2.047502 +0.222004 1.570563 +0.224004 1.573427 +0.226005 1.335974 +0.228005 1.378628 +0.230005 1.628469 +0.232005 1.620938 +0.234005 1.216537 +0.236005 1.638633 +0.238005 1.554498 +0.240005 1.391226 +0.242005 1.431787 +0.244005 1.263934 +0.246005 1.425465 +0.248005 1.105883 +0.250005 1.265657 +0.252005 1.168639 +0.254005 1.242218 +0.256005 1.245104 +0.258005 1.108120 +0.260005 1.211894 +0.262005 1.078647 +0.264005 1.057431 +0.266005 1.108110 +0.268005 1.266898 +0.270005 1.100118 +0.272005 0.990081 +0.274005 1.023601 +0.276006 1.238272 +0.278006 1.145608 +0.280006 1.064366 +0.282006 1.025441 +0.284006 1.121463 +0.286006 0.977097 +0.288006 1.032786 +0.290006 1.166776 +0.292006 1.089725 +0.294006 1.048237 +0.296006 0.994855 +0.298006 0.981623 +0.300006 0.964743 +0.302006 1.170996 +0.304006 0.909883 +0.306006 1.060783 +0.308006 1.066695 +0.310006 1.235120 +0.312006 0.983080 +0.314006 0.818831 +0.316006 1.173228 +0.318006 1.052397 +0.320006 0.958336 +0.322006 1.063317 +0.324006 1.045760 +0.326007 0.918851 +0.328007 0.828151 +0.330007 0.922930 +0.332007 0.960096 +0.334007 0.837558 +0.336007 1.093800 +0.338007 0.822421 +0.340007 0.982303 +0.342007 0.857034 +0.344007 0.929809 +0.346007 1.098484 +0.348007 0.912742 +0.350007 0.877250 +0.352007 0.875453 +0.354007 0.842108 +0.356007 0.885992 +0.358007 0.906674 +0.360007 0.948593 +0.362007 0.826321 +0.364007 0.794805 +0.366007 0.799018 +0.368007 0.762520 +0.370007 0.854828 +0.372007 0.913891 +0.374007 0.900230 +0.376008 0.764344 +0.378008 0.893758 +0.380008 0.843119 +0.382008 0.637597 +0.384008 0.732940 +0.386008 0.632072 +0.388008 0.820424 +0.390008 0.653834 +0.392008 0.723423 +0.394008 0.668586 +0.396008 0.587775 +0.398008 0.638778 +0.400008 0.675101 +0.402008 0.679205 +0.404008 0.558361 +0.406008 0.669089 +0.408008 0.659724 +0.410008 0.599887 +0.412008 0.691995 +0.414008 0.577313 +0.416008 0.483322 +0.418008 0.536498 +0.420008 0.504125 +0.422008 0.548830 +0.424008 0.493233 +0.426009 0.477806 +0.428009 0.407442 +0.430009 0.503880 +0.432009 0.460940 +0.434009 0.469029 +0.436009 0.501596 +0.438009 0.405411 +0.440009 0.418834 +0.442009 0.478496 +0.444009 0.420672 +0.446009 0.447649 +0.448009 0.375458 +0.450009 0.400451 +0.452009 0.373357 +0.454009 0.434920 +0.456009 0.422812 +0.458009 0.340769 +0.460009 0.414966 +0.462009 0.369741 +0.464009 0.385961 +0.466009 0.366010 +0.468009 0.353909 +0.470009 0.320795 +0.472009 0.422465 +0.474009 0.402222 +0.476010 0.335765 +0.478010 0.409413 +0.480010 0.384967 +0.482010 0.381460 +0.484010 0.357884 +0.486010 0.423619 +0.488010 0.450770 +0.490010 0.421563 +0.492010 0.386944 +0.494010 0.434098 +0.496010 0.414335 +0.498010 0.373130 +0.500010 0.494584 +0.502010 0.399168 +0.504010 0.327445 +0.506010 0.414090 +0.508010 0.548788 +0.510010 0.413589 +0.512010 0.415560 +0.514010 0.402811 +0.516010 0.467932 +0.518010 0.447742 +0.520010 0.514848 +0.522010 0.545292 +0.524010 0.585226 +0.526011 0.481420 +0.528011 0.542183 +0.530011 0.566527 +0.532011 0.639324 +0.534011 0.665601 +0.536011 0.728721 +0.538011 0.628460 +0.540011 0.745176 +0.542011 0.629362 +0.544011 0.755605 +0.546011 0.730199 +0.548011 0.538527 +0.550011 0.716283 +0.552011 0.653197 +0.554011 0.750977 +0.556011 0.751317 +0.558011 0.669732 +0.560011 0.890732 +0.562011 0.801524 +0.564011 0.896916 +0.566011 0.728432 +0.568011 0.873384 +0.570011 0.915557 +0.572011 0.801362 +0.574011 0.939248 +0.576012 0.841058 +0.578012 0.982556 +0.580012 0.801244 +0.582012 0.944939 +0.584012 0.849316 +0.586012 1.044572 +0.588012 0.991711 +0.590012 0.775179 +0.592012 0.900808 +0.594012 1.054818 +0.596012 0.949419 +0.598012 1.055190 +0.600012 0.960703 +0.602012 0.994899 +0.604012 0.942069 +0.606012 0.782694 +0.608012 0.862081 +0.610012 0.972296 +0.612012 1.084091 +0.614012 0.859938 +0.616012 0.945606 +0.618012 0.991509 +0.620012 1.135856 +0.622012 1.113732 +0.624012 1.075624 +0.626013 1.136413 +0.628013 0.989279 +0.630013 0.986572 +0.632013 0.963125 +0.634013 0.976137 +0.636013 1.133298 +0.638013 0.942319 +0.640013 1.061070 +0.642013 1.010832 +0.644013 1.017137 +0.646013 1.033211 +0.648013 1.023089 +0.650013 1.207996 +0.652013 1.029256 +0.654013 0.894798 +0.656013 1.034056 +0.658013 1.023175 +0.660013 0.972134 +0.662013 1.000921 +0.664013 1.059754 +0.666013 1.205824 +0.668013 1.291515 +0.670013 1.253979 +0.672013 1.021328 +0.674013 1.099351 +0.676014 1.250217 +0.678014 1.053546 +0.680014 1.240934 +0.682014 1.132546 +0.684014 1.207390 +0.686014 1.143019 +0.688014 1.187569 +0.690014 1.117158 +0.692014 1.017676 +0.694014 1.148909 +0.696014 1.307952 +0.698014 1.134271 +0.700014 1.339668 +0.702014 1.360803 +0.704014 1.209263 +0.706014 1.643307 +0.708014 1.482189 +0.710014 1.620002 +0.712014 1.531291 +0.714014 1.508616 +0.716014 1.551789 +0.718014 1.820704 +0.720014 1.190510 +0.722014 1.871826 +0.724014 1.808171 +0.726015 1.639588 +0.728015 1.896243 +0.730015 1.814870 +0.732015 2.268629 +0.734015 1.860003 +0.736015 1.909307 +0.738015 2.091058 +0.740015 2.307699 +0.742015 1.724754 +0.744015 2.136682 +0.746015 2.482358 +0.748015 2.739133 +0.750015 2.183903 +0.752015 2.505655 +0.754015 2.256298 +0.756015 2.232645 +0.758015 2.418358 +0.760015 2.743980 +0.762015 2.490451 +0.764015 2.591839 +0.766015 2.890467 +0.768015 2.441939 +0.770015 2.795238 +0.772015 2.882743 +0.774015 2.704971 +0.776016 2.864923 +0.778016 2.931144 +0.780016 2.595133 +0.782016 2.778879 +0.784016 2.588524 +0.786016 2.424629 +0.788016 3.490356 +0.790016 2.725991 +0.792016 2.819722 +0.794016 2.795897 +0.796016 2.278287 +0.798016 2.709274 +0.800016 2.864658 +0.802016 2.495316 +0.804016 2.481585 +0.806016 2.761135 +0.808016 2.443268 +0.810016 2.565330 +0.812016 2.160156 +0.814016 2.817464 +0.816016 2.687451 +0.818016 2.225290 +0.820016 2.234668 +0.822016 2.366997 +0.824016 1.801739 +0.826017 1.999203 +0.828017 2.121902 +0.830017 1.658141 +0.832017 2.048377 +0.834017 1.987455 +0.836017 2.056994 +0.838017 1.748644 +0.840017 2.035117 +0.842017 1.991255 +0.844017 1.933487 +0.846017 1.927148 +0.848017 1.526116 +0.850017 1.825349 +0.852017 1.448218 +0.854017 1.266984 +0.856017 1.574851 +0.858017 1.569314 +0.860017 1.461266 +0.862017 1.241627 +0.864017 1.385409 +0.866017 1.438944 +0.868017 1.458593 +0.870017 1.045023 +0.872017 1.156637 +0.874017 1.231397 +0.876018 1.060101 +0.878018 1.208137 +0.880018 1.297885 +0.882018 1.261846 +0.884018 1.073377 +0.886018 1.146843 +0.888018 1.110004 +0.890018 1.142169 +0.892018 1.091117 +0.894018 1.018172 +0.896018 1.325115 +0.898018 1.055748 +0.900018 0.984488 +0.902018 0.967879 +0.904018 0.961651 +0.906018 1.085517 +0.908018 0.924754 +0.910018 1.080906 +0.912018 0.949908 +0.914018 1.084287 +0.916018 1.115371 +0.918018 1.150677 +0.920018 1.197850 +0.922018 0.909476 +0.924018 0.920649 +0.926019 1.061322 +0.928019 0.867733 +0.930019 1.122616 +0.932019 0.730512 +0.934019 1.068192 +0.936019 1.051183 +0.938019 0.939787 +0.940019 0.793864 +0.942019 0.954387 +0.944019 0.949134 +0.946019 0.950377 +0.948019 0.837390 +0.950019 0.920521 +0.952019 1.038896 +0.954019 1.054405 +0.956019 0.800492 +0.958019 1.108765 +0.960019 1.029235 +0.962019 0.886213 +0.964019 1.086449 +0.966019 0.845174 +0.968019 0.825587 +0.970019 0.979444 +0.972019 0.801748 +0.974019 1.027216 +0.976020 1.065852 +0.978020 0.918422 +0.980020 1.073070 +0.982020 0.794571 +0.984020 1.009434 +0.986020 0.789657 +0.988020 1.017966 +0.990020 0.877302 +0.992020 1.009978 +0.994020 0.872902 +0.996020 0.866302 +0.998020 0.851322 + + +3.049679424205e+02 2.259835726033e+02 4.582825874915e-01 +2.680463954339e+02 2.141625880951e+02 5.231740188551e-01 +2.355948285412e+02 2.030649087681e+02 5.890884464064e-01 +2.070720747634e+02 1.929847787351e+02 6.548268076391e-01 +1.820024845720e+02 1.841072060161e+02 7.193815491988e-01 +1.599679938893e+02 1.765119161116e+02 7.819322821113e-01 +1.406011523916e+02 1.701896640168e+02 8.418163499861e-01 +1.235789958554e+02 1.650602877714e+02 8.985336544077e-01 +1.086176603596e+02 1.609890697240e+02 9.518223955972e-01 +9.546764852977e+01 1.578034068101e+02 1.001803566519e+00 +8.390966888471e+01 1.553114384423e+02 1.049166704959e+00 +7.375097889990e+01 1.533208888884e+02 1.095369478520e+00 +6.482217080569e+01 1.516545543003e+02 1.142835180762e+00 +5.697434651904e+01 1.501600821886e+02 1.195128756643e+00 +5.007663459779e+01 1.487142619106e+02 1.257054974652e+00 +4.401400780969e+01 1.472238754460e+02 1.334559527277e+00 +3.868536492180e+01 1.456254596505e+02 1.434275177416e+00 +3.400184472188e+01 1.438854289541e+02 1.562623610255e+00 +2.988534415606e+01 1.420005556014e+02 1.724596948917e+00 +2.626721587113e+01 1.399974024973e+02 1.922589454722e+00 +2.308712344143e+01 1.379285302548e+02 2.155726253457e+00 +2.029203518998e+01 1.358637352439e+02 2.419978906549e+00 +1.783533982465e+01 1.338764658641e+02 2.709110562615e+00 +1.567606914154e+01 1.320282596578e+02 3.016297482822e+00 +1.377821483337e+01 1.303559182938e+02 3.336147029939e+00 +1.211012800981e+01 1.288656178663e+02 3.666761776237e+00 +1.064399141598e+01 1.275352277273e+02 4.011506063370e+00 +9.355355547988e+00 1.263226219087e+02 4.380226295606e+00 +8.222730929480e+00 1.251758562191e+02 4.789832968191e+00 +7.227229750040e+00 1.240414585308e+02 5.264340172168e+00 +6.352250889373e+00 1.228688803423e+02 5.834649703649e+00 +5.583203074639e+00 1.216111234489e+02 6.538466669693e+00 +4.907261554294e+00 1.202229496636e+02 7.420551016472e+00 +4.313154230704e+00 1.186587305709e+02 8.532950836315e+00 +3.790973685020e+00 1.168719533463e+02 9.934207301729e+00 +3.332011959648e+00 1.148178006003e+02 1.168632231592e+01 +2.928615343100e+00 1.124592892136e+02 1.384882214885e+01 +2.574056735603e+00 1.097764132560e+02 1.647021807289e+01 +2.262423467019e+00 1.067766702154e+02 1.957804508552e+01 +1.988518696314e+00 1.035042389902e+02 2.316931526695e+01 +1.747774748288e+00 1.000441263405e+02 2.720379867731e+01 +1.536176942372e+00 9.651751550744e+01 3.160290211673e+01 +1.350196643238e+00 9.306632436152e+01 3.625646867326e+01 +1.186732416773e+00 8.982894691955e+01 4.103808359877e+01 +1.043058310116e+00 8.691391183585e+01 4.582676062570e+01 +9.167783932792e-01 8.438070050596e+01 5.053038948883e+01 +8.057868042778e-01 8.223470407157e+01 5.510530773189e+01 +7.082326314713e-01 8.043702331377e+01 5.956711649011e+01 +6.224890474974e-01 7.892357938800e+01 6.398958416973e+01 +5.471261800648e-01 7.762560078773e+01 6.849028056538e+01 +4.808872671990e-01 7.648531883774e+01 7.320362439154e+01 +4.226676992988e-01 7.546418427863e+01 7.824535039656e+01 +3.714965985086e-01 7.454378223531e+01 8.367705422653e+01 +3.265206282203e-01 7.372122857792e+01 8.948281171216e+01 +2.869897627095e-01 7.300159914866e+01 9.556798423928e+01 +2.522447795993e-01 7.239018973299e+01 1.017823565619e+02 +2.217062665734e-01 7.188699034993e+01 1.079600203842e+02 +1.948649590132e-01 7.148458809107e+01 1.139628834504e+02 +1.712732474282e-01 7.116922187338e+01 1.197157695454e+02 +1.505377130561e-01 7.092365340987e+01 1.252264459579e+02 +1.323125671547e-01 7.073032520221e+01 1.305894207317e+02 +1.162938845799e-01 7.057376516914e+01 1.359754401985e+02 +1.022145354861e-01 7.044186488844e+01 1.416096903477e+02 +8.983973063048e-02 7.032612844923e+01 1.477431961358e+02 +7.896310599444e-02 7.022118277132e+01 1.546258673032e+02 +6.940328142717e-02 7.012386456067e+01 1.624950613229e+02 +6.100083592454e-02 7.003217179598e+01 1.715957508969e+02 +5.361564910151e-02 6.994433015584e+01 1.822423835322e+02 +4.712456452454e-02 6.985815866212e+01 1.949179608667e+02 +4.141933593721e-02 6.977081093619e+01 2.103878858382e+02 +3.640482213021e-02 6.967884969909e+01 2.297913717301e+02 +3.199740035286e-02 6.957853426728e+01 2.546684078657e+02 +2.812357180813e-02 6.946618683456e+01 2.868951226109e+02 +2.471873597619e-02 6.933853021627e+01 3.285416801955e+02 +2.172611332691e-02 6.919291616778e+01 3.817194980868e+02 +1.909579845621e-02 6.902736812910e+01 4.485119002619e+02 +1.678392785646e-02 6.884035987401e+01 5.310659202446e+02 +1.475194844232e-02 6.863027944213e+01 6.318835512218e+02 +1.296597463394e-02 6.839461346375e+01 7.543092624425e+02 +1.139622327623e-02 6.812901417531e+01 9.031585111281e+02 +1.001651697063e-02 6.782651456142e+01 1.085359927714e+03 +8.803847537122e-03 6.747716659000e+01 1.310418952090e+03 +7.737992326490e-03 6.706828588715e+01 1.590506790044e+03 +6.801176984534e-03 6.658536327462e+01 1.940059864352e+03 +5.977779044391e-03 6.601363178470e+01 2.374889252061e+03 +5.254067404042e-03 6.534026945891e+01 2.910855638793e+03 +4.617973344485e-03 6.455719732250e+01 3.562138386906e+03 +4.058889270048e-03 6.366428932867e+01 4.339102681606e+03 +3.567491814604e-03 6.267248832862e+01 5.245859720167e+03 +3.135586363782e-03 6.160588907903e+01 6.277853533189e+03 +2.755970400406e-03 6.050155242530e+01 7.420104055499e+03 +2.422313394281e-03 5.940602862165e+01 8.646904275189e+03 +2.129051233368e-03 5.836855639358e+01 9.923613104847e+03 +1.871293435858e-03 5.743244640608e+01 1.121063715501e+04 +1.644741595788e-03 5.662739636684e+01 1.246893675602e+04 +1.445617702215e-03 5.596542477358e+01 1.366581501745e+04 +1.270601136561e-03 5.544155166517e+01 1.477969701783e+04 +1.116773297502e-03 5.503826835667e+01 1.580309946444e+04 +9.815689299551e-04 5.473156687373e+01 1.674369511751e+04 +8.627333465155e-04 5.449640043827e+01 1.762385046111e+04 +7.582848279681e-04 5.431042986004e+01 1.847900635574e+04 +6.664815758530e-04 5.415593441138e+01 1.935484503417e+04 +5.857926659852e-04 5.402033332951e+01 2.030270337697e+04 +5.148725185431e-04 5.389585865836e+01 2.137270142245e+04 +4.525384589871e-04 5.377876456271e+01 2.260501851422e+04 +3.977509956095e-04 5.366827635539e+01 2.402150709753e+04 +3.495964848212e-04 5.356539678304e+01 2.562124943888e+04 +3.072718951013e-04 5.347170769179e+01 2.738330307216e+04 +2.700714155276e-04 5.338835905032e+01 2.927752258345e+04 +2.373746855730e-04 5.331543087285e+01 3.128147567889e+04 +2.086364498842e-04 5.325174979972e+01 3.339987703278e+04 +1.833774655255e-04 5.319509292624e+01 3.568305894010e+04 +1.611765100547e-04 5.314260887537e+01 3.824166167882e+04 +1.416633571578e-04 5.309128027256e+01 4.125447176857e+04 +1.245126027012e-04 5.303831969727e+01 4.496484882641e+04 +1.094382382465e-04 5.298147262353e+01 4.966040333759e+04 +9.618888153220e-05 5.291924900503e+01 5.563383515992e+04 +8.454358438755e-05 5.285110689565e+01 6.313071752292e+04 +7.430814816890e-05 5.277757941862e+01 7.229717397212e+04 +6.531188527540e-05 5.270029563775e+01 8.314068461487e+04 +5.740477273813e-05 5.262182638889e+01 9.551210236273e+04 +5.045495041555e-05 5.254531378210e+01 1.091125928936e+05 +4.434652207489e-05 5.247392203016e+01 1.235271215048e+05 +3.897762268998e-05 5.241024302340e+01 1.382828041506e+05 +3.425871972545e-05 5.235583933623e+01 1.529245504406e+05 +3.011112007939e-05 5.231106435988e+01 1.670954150499e+05 +2.646565778586e-05 5.227518193852e+01 1.806094911526e+05 +2.326154059335e-05 5.224668972485e+01 1.935119799947e+05 +2.044533618452e-05 5.222369908601e+01 2.061305143217e+05 +1.797008113114e-05 5.220425083049e+01 2.191280230144e+05 +1.579449772533e-05 5.218651154871e+01 2.335655557254e+05 +1.388230562649e-05 5.216885414581e+01 2.509716911627e+05 +1.220161684523e-05 5.214985583332e+01 2.733973324070e+05 +1.072440397463e-05 5.212824939940e+01 3.034255308554e+05 +9.426032801221e-06 5.210285127069e+01 3.441286227233e+05 +8.284851501294e-06 5.207247405350e+01 3.990242380564e+05 +7.281829571992e-06 5.203581896811e+01 4.721336506966e+05 +6.400240475916e-06 5.199133865623e+01 5.682316956516e+05 +5.625382706993e-06 5.193706450555e+01 6.933025701832e+05 +4.944334626053e-06 5.187040273270e+01 8.551440096070e+05 +4.345738977722e-06 5.178791397898e+01 1.064035103089e+06 +3.819613495208e-06 5.168509532479e+01 1.333397492723e+06 +3.357184434584e-06 5.155617973127e+01 1.680418230300e+06 +2.950740262582e-06 5.139396237027e+01 2.126640761294e+06 +2.593503057958e-06 5.118966656947e+01 2.698536351414e+06 +2.279515481906e-06 5.093288121229e+01 3.428020357099e+06 +2.003541432621e-06 5.061163611976e+01 4.352780805349e+06 +1.760978727319e-06 5.021272592245e+01 5.516163242910e+06 +1.547782355572e-06 4.972243530928e+01 6.966230762767e+06 +1.360397024141e-06 4.912784091228e+01 8.753521489096e+06 +1.195697868392e-06 4.841883568674e+01 1.092701093981e+07 +1.050938341606e-06 4.759089389166e+01 1.352794387497e+07 +9.237044131753e-07 4.664832218953e+01 1.658164028060e+07 +8.118743118798e-07 4.560732261099e+01 2.008816503830e+07 +7.135831429282e-07 4.449773910327e+01 2.401376999151e+07 +6.271917887047e-07 4.336215166050e+01 2.828587218909e+07 +5.512595746088e-07 4.225139784199e+01 3.279438219587e+07 +4.845202441592e-07 4.121682990561e+01 3.740090786786e+07 +4.258608427195e-07 4.030127349128e+01 4.195485557181e+07 +3.743031577071e-07 3.953173297308e+01 4.631278202120e+07 +3.289874057797e-07 3.891642339257e+01 5.035599138393e+07 +2.891578949660e-07 3.844676343210e+01 5.400216182414e+07 +2.541504226369e-07 3.810280148913e+01 5.720924257908e+07 +2.233811991685e-07 3.785954274835e+01 5.997258460255e+07 +1.963371125817e-07 3.769210926731e+01 6.231799311050e+07 +1.725671718139e-07 3.757885546304e+01 6.429372180437e+07 +1.516749859274e-07 3.750258812543e+01 6.596375020163e+07 +1.333121538371e-07 3.745051689113e+01 6.740362385498e+07 +1.171724543240e-07 3.741358003337e+01 6.869911719292e+07 +1.029867394468e-07 3.738560108985e+01 6.994710253322e+07 +9.051844619181e-08 3.736252106902e+01 7.125718563003e+07 +7.955965151425e-08 3.734179686937e+01 7.275186740938e+07 +6.992760498403e-08 3.732196707845e+01 7.456253628416e+07 +6.146168121320e-08 3.730234421251e+01 7.681932313605e+07 +5.402070124404e-08 3.728278048869e+01 7.963573818349e+07 +4.748057822849e-08 3.726346243053e+01 8.309395524530e+07 +4.173224813812e-08 3.724471192961e+01 8.724121987765e+07 +3.667985099677e-08 3.722679910599e+01 9.210837630022e+07 +3.223913230585e-08 3.720979199425e+01 9.775638111824e+07 +2.833603800423e-08 3.719346822868e+01 1.043487916304e+08 +2.490547953214e-08 3.717729492105e+01 1.122419448656e+08 +2.189024840499e-08 3.716045855081e+01 1.220806229921e+08 +1.924006219650e-08 3.714191300791e+01 1.348824173316e+08 +1.691072602177e-08 3.712041695171e+01 1.520889847190e+08 +1.486339553702e-08 3.709454560502e+01 1.755672020785e+08 +1.306392916575e-08 3.706267739824e+01 2.075689433456e+08 +1.148231874895e-08 3.702296679654e+01 2.506905659759e+08 +1.009218912470e-08 3.697332095515e+01 3.078742741709e+08 +8.870358292231e-09 3.691140209812e+01 3.824534649951e+08 +7.796450825514e-09 3.683468187906e+01 4.781999433549e+08 +6.852558089779e-09 3.674057841140e+01 5.993131653022e+08 +6.022939594530e-09 3.662670799804e+01 7.502945321952e+08 +5.293760502879e-09 3.649127521517e+01 9.356581119542e+08 +4.652860919823e-09 3.633359756823e+01 1.159442820756e+09 +4.089553112091e-09 3.615470633857e+01 1.424521991192e+09 +3.594443277976e-09 3.595788592371e+01 1.731766078313e+09 +3.159274894948e-09 3.574893609636e+01 2.079201726433e+09 +2.776791032705e-09 3.553592108066e+01 2.461399457379e+09 +2.440613335560e-09 3.532827065242e+01 2.869359696485e+09 +2.145135656071e-09 3.513533667002e+01 3.291094515703e+09 + + +3.049679424205e+02 2.259835726033e+02 4.582825874915e-01 +2.580143967012e+02 2.107917110746e+02 5.426082927241e-01 +2.182899237760e+02 1.969684354706e+02 6.280418497061e-01 +1.846815194475e+02 1.850487061133e+02 7.121585522137e-01 +1.562475401313e+02 1.752656274770e+02 7.930682981603e-01 +1.321913197927e+02 1.675964837258e+02 8.693421204564e-01 +1.118388488795e+02 1.618268821054e+02 9.400558583882e-01 +9.461988985585e+01 1.576110875095e+02 1.005149540682e+00 +8.005200023099e+01 1.545371696057e+02 1.066046743531e+00 +6.772701543772e+01 1.521942914640e+02 1.126373406299e+00 +5.729961283748e+01 1.502241872559e+02 1.192658486550e+00 +4.847763643658e+01 1.483466628748e+02 1.274825221439e+00 +4.101391123083e+01 1.463656702668e+02 1.385929772224e+00 +3.469931783187e+01 1.441690985792e+02 1.540301316776e+00 +2.935693333953e+01 1.417297421472e+02 1.749806092407e+00 +2.483707429862e+01 1.391041033590e+02 2.019585643005e+00 +2.101310285311e+01 1.364177628998e+02 2.345735002147e+00 +1.777787859417e+01 1.338283415434e+02 2.716599205799e+00 +1.504075668969e+01 1.314720392843e+02 3.117640207549e+00 +1.272504818840e+01 1.294169569152e+02 3.538511961844e+00 +1.076587134131e+01 1.276471559312e+02 3.980317715907e+00 +9.108333738442e+00 1.260812049620e+02 4.461112370318e+00 +7.705994327879e+00 1.246070234525e+02 5.018597491481e+00 +6.519562225819e+00 1.231104890422e+02 5.710329194894e+00 +5.515795860705e+00 1.214867211134e+02 6.613138593918e+00 +4.666571607597e+00 1.196368388221e+02 7.823580755521e+00 +3.948095817681e+00 1.174610443004e+02 9.458350960490e+00 +3.340238165469e+00 1.148598056939e+02 1.164917560198e+01 +2.825967635357e+00 1.117502412693e+02 1.452604760013e+01 +2.390875344951e+00 1.080972264270e+02 1.818796364880e+01 +2.022770835581e+00 1.039503446808e+02 2.266732295247e+01 +1.711340518826e+00 9.946934383099e+01 2.789962785978e+01 +1.447858709380e+00 9.491587394605e+01 3.371400985489e+01 +1.224943147940e+00 9.059756018016e+01 3.985883912724e+01 +1.036348164336e+00 8.677789061808e+01 4.606460668162e+01 +8.767896857335e-01 8.359646347455e+01 5.212653786163e+01 +7.417971869529e-01 8.104571911451e+01 5.797568302676e+01 +6.275884348605e-01 7.901219010388e+01 6.370905876257e+01 +5.309635173847e-01 7.734832525030e+01 6.956172344971e+01 +4.492151880655e-01 7.593296422152e+01 7.581897226351e+01 +3.800530141556e-01 7.469915091790e+01 8.268988116780e+01 +3.215392030504e-01 7.362996788669e+01 9.019565601143e+01 +2.720343090240e-01 7.273474094259e+01 9.813916665329e+01 +2.301512990768e-01 7.202192463254e+01 1.061832261122e+02 +1.947166909085e-01 7.148248866532e+01 1.139975843316e+02 +1.647376741754e-01 7.108865833154e+01 1.213999943425e+02 +1.393742938322e-01 7.080299585605e+01 1.284368825002e+02 +1.179159161890e-01 7.058920502254e+01 1.353897398723e+02 +9.976131830610e-02 7.041904289990e+01 1.427184814670e+02 +8.440184287099e-02 7.027423887434e+01 1.509648598701e+02 +7.140714658724e-02 7.014478571731e+01 1.606625767605e+02 +6.041314277373e-02 7.002547201602e+01 1.723360934395e+02 +5.111180034816e-02 6.991233631353e+01 1.866698902479e+02 +4.324251338182e-02 6.980030144257e+01 2.048512607612e+02 +3.658479941695e-02 6.968249354276e+01 2.289602472619e+02 +3.095212196757e-02 6.955090952728e+01 2.621794592607e+02 +2.618666412181e-02 6.939767543500e+01 3.086242096507e+02 +2.215490681210e-02 6.921620850188e+01 3.728421070701e+02 +1.874388786482e-02 6.900177043142e+01 4.593858154564e+02 +1.585803701495e-02 6.875094124020e+01 5.729767296634e+02 +1.341649820897e-02 6.845968368576e+01 7.195640314556e+02 +1.135086417200e-02 6.812026175427e+01 9.082478531752e+02 +9.603259766031e-03 6.771817256197e+01 1.153588955293e+03 +8.124720438586e-03 6.723070460904e+01 1.477311918389e+03 +6.873820329080e-03 6.662828151778e+01 1.908279926652e+03 +5.815511594968e-03 6.587892354475e+01 2.480185026957e+03 +4.920142437842e-03 6.495574734126e+01 3.227081011554e+03 +4.162626316419e-03 6.384720900213e+01 4.176967938403e+03 +3.521739069356e-03 6.256865185603e+01 5.343610016092e+03 +2.979524254605e-03 6.117107240471e+01 6.717761704343e+03 +2.520790044052e-03 5.974038296860e+01 8.260991136084e+03 +2.132683577376e-03 5.838168094622e+01 9.906593124929e+03 +1.804330849347e-03 5.719097351245e+01 1.157044754920e+04 +1.526532040872e-03 5.622731665128e+01 1.316986820656e+04 +1.291503757557e-03 5.550068025654e+01 1.464383902609e+04 +1.092660953800e-03 5.498030660407e+01 1.596756996356e+04 +9.244324323271e-04 5.461483823207e+01 1.715835023547e+04 +7.821047498462e-04 5.435156904376e+01 1.827395545075e+04 +6.616901553228e-04 5.414797212023e+01 1.940534856590e+04 +5.598148607808e-04 5.397562114610e+01 2.066231255729e+04 +4.736245141778e-04 5.381940468664e+01 2.214936214812e+04 +4.007042258887e-04 5.367450654534e+01 2.393457955958e+04 +3.390109080900e-04 5.354229985126e+01 2.602639663440e+04 +2.868160313236e-04 5.342604724619e+01 2.837817555207e+04 +2.426571943885e-04 5.332736508149e+01 3.092967785648e+04 +2.052971506396e-04 5.324459080968e+01 3.367054173808e+04 +1.736891426893e-04 5.317299906526e+01 3.671050569139e+04 +1.469475742560e-04 5.310630424053e+01 4.032974244152e+04 +1.243231974398e-04 5.303819740723e+01 4.499743271301e+04 +1.051821202216e-04 5.296362103615e+01 5.132199424049e+04 +8.898804601339e-05 5.287975482181e+01 5.991429886061e+04 +7.528724764817e-05 5.278641293981e+01 7.122146357710e+04 +6.369585480710e-05 5.268658738576e+01 8.532818479701e+04 +5.388909870323e-05 5.258592744926e+01 1.018857103170e+05 +4.559221267760e-05 5.249113326898e+01 1.201705707293e+05 +3.857273375988e-05 5.240863762809e+01 1.391467466499e+05 +3.263398949798e-05 5.234177351724e+01 1.578504886232e+05 +2.760958756991e-05 5.229076495765e+01 1.755532601109e+05 +2.335875378730e-05 5.225329742770e+01 1.920099678601e+05 +1.976238787030e-05 5.222562200334e+01 2.076530752312e+05 +1.671972648424e-05 5.220315733218e+01 2.239381257502e+05 +1.414552004253e-05 5.218315775742e+01 2.429197584341e+05 +1.196764417542e-05 5.216240796147e+01 2.684093632441e+05 +1.012507894223e-05 5.213794233797e+01 3.046802204850e+05 +8.566199168660e-06 5.210910669969e+01 3.577988367371e+05 +7.247328007599e-06 5.207584536028e+01 4.301821112814e+05 +6.131513196879e-06 5.203088670405e+01 5.412010475005e+05 +5.187491727169e-06 5.183122774103e+01 9.969792728200e+05 +4.388813911898e-06 5.190699188272e+01 9.893521774544e+05 +3.713102317328e-06 5.190798847671e+01 9.961181134401e+05 +3.141424789410e-06 5.182411236510e+01 1.341532374497e+06 +2.657764010829e-06 5.147839905729e+01 2.509821409081e+06 +2.248568726226e-06 5.046109021201e+01 5.732483448678e+06 +1.902374061791e-06 5.184220134806e+01 2.005716766290e+06 +1.609480301297e-06 5.187119094759e+01 1.692576367374e+06 +1.361681118499e-06 5.186791358945e+01 1.721948981712e+06 +1.152033651473e-06 5.186832227990e+01 1.719877644338e+06 +9.746639768273e-07 5.186808539121e+01 1.767622829488e+06 +8.246025335369e-07 5.187135128498e+01 1.773673814186e+06 +6.976448852957e-07 5.186817629358e+01 1.780216661561e+06 +5.902339202035e-07 5.187107789658e+01 1.795770998166e+06 +4.993601872550e-07 5.186433526457e+01 1.795350920380e+06 +4.224775772450e-07 5.186090336890e+01 1.814290881152e+06 +3.574319856293e-07 5.186090336890e+01 1.814290881152e+06 +3.024009586119e-07 5.186039910453e+01 1.853208087651e+06 +2.558426314545e-07 5.186039910453e+01 1.853208087651e+06 +2.164525283584e-07 5.186039910453e+01 1.853208087651e+06 +1.831270135332e-07 5.186039910453e+01 1.853208087651e+06 +1.549323694204e-07 5.186039910453e+01 1.853208087651e+06 +1.310786357025e-07 5.186039910453e+01 1.853208087651e+06 +1.108974761176e-07 5.186039910453e+01 1.853208087651e+06 +9.382345294742e-08 5.186039910453e+01 1.853208087651e+06 +7.937818452824e-08 5.186039910453e+01 1.853208087651e+06 +6.715694190588e-08 5.186039910453e+01 1.853208087651e+06 +5.681730910015e-08 5.186039910453e+01 1.853208087651e+06 +4.806958926013e-08 5.186039910453e+01 1.853208087651e+06 +4.066868790926e-08 5.186039910453e+01 1.853208087651e+06 +3.440724586412e-08 5.186039910453e+01 1.853208087651e+06 +2.910982942443e-08 5.186039910453e+01 1.853208087651e+06 +2.462801505433e-08 5.186039910453e+01 1.853208087651e+06 +2.083623083710e-08 5.186039910453e+01 1.853208087651e+06 +1.762823818888e-08 5.186039910453e+01 1.853208087651e+06 +1.491415525550e-08 5.186039910453e+01 1.853208087651e+06 +1.261793859385e-08 5.186039910453e+01 1.853208087651e+06 +1.067525257923e-08 5.186039910453e+01 1.853208087651e+06 +9.031666843409e-09 5.186039910453e+01 1.853208087651e+06 +7.641131239281e-09 5.186039910453e+01 1.853208087651e+06 +6.464685603247e-09 5.186039910453e+01 1.853208087651e+06 +5.469368165539e-09 5.186039910453e+01 1.853208087651e+06 +4.627292024099e-09 5.186039910453e+01 1.853208087651e+06 +3.914863806610e-09 5.186039910453e+01 1.853208087651e+06 +3.312122629063e-09 5.186039910453e+01 1.853208087651e+06 +2.802180829747e-09 5.186039910453e+01 1.853208087651e+06 +2.370750809073e-09 5.186039910453e+01 1.853208087651e+06 +2.005744718205e-09 5.186039910453e+01 1.853208087651e+06 +1.696935780518e-09 5.186039910453e+01 1.853208087651e+06 +1.435671756763e-09 5.186039910453e+01 1.853208087651e+06 +1.214632525773e-09 5.186039910453e+01 1.853208087651e+06 +1.027624988593e-09 5.186039910453e+01 1.853208087651e+06 +8.694095496150e-10 5.186039910453e+01 1.853208087651e+06 +7.355533130786e-10 5.186039910453e+01 1.853208087651e+06 +6.223058817568e-10 5.186039910453e+01 1.853208087651e+06 +5.264942779582e-10 5.186039910453e+01 1.853208087651e+06 +4.454340427254e-10 5.186039910453e+01 1.853208087651e+06 +3.768540223992e-10 5.186039910453e+01 1.853208087651e+06 +3.188327352115e-10 5.186039910453e+01 1.853208087651e+06 +2.697445350199e-10 5.186039910453e+01 1.853208087651e+06 +2.282140637938e-10 5.186039910453e+01 1.853208087651e+06 +1.930777166975e-10 5.186039910453e+01 1.853208087651e+06 +1.633510400954e-10 5.186039910453e+01 1.853208087651e+06 +1.382011490329e-10 5.186039910453e+01 1.853208087651e+06 +1.169233913838e-10 5.186039910453e+01 1.853208087651e+06 +9.892160483726e-11 5.186039910453e+01 1.853208087651e+06 +8.369141356375e-11 5.186039910453e+01 1.853208087651e+06 +7.080609656325e-11 5.186039910453e+01 1.853208087651e+06 +5.990463175419e-11 5.186039910453e+01 1.853208087651e+06 +5.068158082121e-11 5.186039910453e+01 1.853208087651e+06 +4.287853141435e-11 5.186039910453e+01 1.853208087651e+06 +3.627685692634e-11 5.186039910453e+01 1.853208087651e+06 +3.069159099076e-11 5.186039910453e+01 1.853208087651e+06 +2.596624507622e-11 5.186039910453e+01 1.853208087651e+06 +2.196842397520e-11 5.186039910453e+01 1.853208087651e+06 +1.858611634209e-11 5.186039910453e+01 1.853208087651e+06 +1.572455634832e-11 5.186039910453e+01 1.853208087651e+06 +1.330356852397e-11 5.186039910453e+01 1.853208087651e+06 +1.125532139360e-11 5.186039910453e+01 1.853208087651e+06 +9.522426967234e-12 5.186039910453e+01 1.853208087651e+06 +8.056332838073e-12 5.186039910453e+01 1.853208087651e+06 +6.815961836321e-12 5.186039910453e+01 1.853208087651e+06 +5.766561125012e-12 5.186039910453e+01 1.853208087651e+06 +4.878728491596e-12 5.186039910453e+01 1.853208087651e+06 +4.127588553857e-12 5.186039910453e+01 1.853208087651e+06 +3.492095798993e-12 5.186039910453e+01 1.853208087651e+06 +2.954444928371e-12 5.186039910453e+01 1.853208087651e+06 +2.499571986912e-12 5.186039910453e+01 1.853208087651e+06 +2.114732299715e-12 5.186039910453e+01 1.853208087651e+06 +1.789143390499e-12 5.186039910453e+01 1.853208087651e+06 +1.513682877117e-12 5.186039910453e+01 1.853208087651e+06 +1.280632879759e-12 5.186039910453e+01 1.853208087651e+06 +1.083463780633e-12 5.186039910453e+01 1.853208087651e+06 + + +0.000000 1.000000e+00 1.320696e+00 1.561410e+00 +0.010000 1.000996e+00 1.052953e+00 1.045781e+00 +0.020000 1.007872e+00 8.988771e-01 8.083334e-01 +0.030000 1.026144e+00 8.543474e-01 7.678692e-01 +0.040000 1.060833e+00 9.048302e-01 8.597155e-01 +0.050000 1.116496e+00 1.030102e+00 1.033247e+00 +0.060000 1.197241e+00 1.207755e+00 1.249664e+00 +0.070000 1.306512e+00 1.415701e+00 1.480016e+00 +0.080000 1.446506e+00 1.633851e+00 1.703452e+00 +0.090000 1.617126e+00 1.845151e+00 1.905692e+00 +0.100000 1.814524e+00 2.036098e+00 2.077696e+00 +0.110000 2.029607e+00 2.196880e+00 2.214522e+00 +0.120000 2.247143e+00 2.321225e+00 2.314354e+00 +0.130000 2.446382e+00 2.406059e+00 2.377688e+00 +0.140000 2.603824e+00 2.451050e+00 2.406653e+00 +0.150000 2.697981e+00 2.458079e+00 2.404465e+00 +0.160000 2.714808e+00 2.430697e+00 2.374983e+00 +0.170000 2.651704e+00 2.373608e+00 2.322369e+00 +0.180000 2.518282e+00 2.292186e+00 2.250825e+00 +0.190000 2.333563e+00 2.192052e+00 2.164408e+00 +0.200000 2.120871e+00 2.078735e+00 2.066892e+00 +0.210000 1.902566e+00 1.957391e+00 1.961695e+00 +0.220000 1.696364e+00 1.832606e+00 1.851827e+00 +0.230000 1.513870e+00 1.708267e+00 1.739883e+00 +0.240000 1.360947e+00 1.587501e+00 1.628049e+00 +0.250000 1.239061e+00 1.472656e+00 1.518125e+00 +0.260000 1.146817e+00 1.365347e+00 1.411564e+00 +0.270000 1.081190e+00 1.266515e+00 1.309507e+00 +0.280000 1.038307e+00 1.176531e+00 1.212831e+00 +0.290000 1.013789e+00 1.095299e+00 1.122183e+00 +0.300000 1.002814e+00 1.022375e+00 1.038023e+00 +0.310000 1.000072e+00 9.570805e-01 9.606555e-01 +0.320000 9.998011e-01 8.986103e-01 8.902566e-01 +0.330000 9.960824e-01 8.461235e-01 8.268962e-01 +0.340000 9.834513e-01 7.988224e-01 7.705551e-01 +0.350000 9.577548e-01 7.560100e-01 7.211372e-01 +0.360000 9.169922e-01 7.171291e-01 6.784768e-01 +0.370000 8.617940e-01 6.817822e-01 6.423447e-01 +0.380000 7.952798e-01 6.497336e-01 6.124505e-01 +0.390000 7.222899e-01 6.208967e-01 5.884460e-01 +0.400000 6.482631e-01 5.953087e-01 5.699278e-01 +0.410000 5.781627e-01 5.730971e-01 5.564420e-01 +0.420000 5.157735e-01 5.544402e-01 5.474905e-01 +0.430000 4.634795e-01 5.395280e-01 5.425407e-01 +0.440000 4.224349e-01 5.285235e-01 5.410380e-01 +0.450000 3.929418e-01 5.215305e-01 5.424213e-01 +0.460000 3.748639e-01 5.185692e-01 5.461420e-01 +0.470000 3.679641e-01 5.195620e-01 5.516852e-01 +0.480000 3.721204e-01 5.243302e-01 5.585935e-01 +0.490000 3.874083e-01 5.326029e-01 5.664907e-01 +0.500000 4.140514e-01 5.440364e-01 5.751059e-01 +0.510000 4.522382e-01 5.582450e-01 5.842963e-01 +0.520000 5.018122e-01 5.748387e-01 5.940669e-01 +0.530000 5.618693e-01 5.934668e-01 6.045855e-01 +0.540000 6.303577e-01 6.138641e-01 6.161926e-01 +0.550000 7.038367e-01 6.358952e-01 6.294037e-01 +0.560000 7.775882e-01 6.595946e-01 6.449037e-01 +0.570000 8.462014e-01 6.851967e-01 6.635316e-01 +0.580000 9.045780e-01 7.131548e-01 6.862563e-01 +0.590000 9.490803e-01 7.441439e-01 7.141411e-01 +0.600000 9.784214e-01 7.790452e-01 7.482988e-01 +0.610000 9.939735e-01 8.189122e-01 7.898381e-01 +0.620000 9.994265e-01 8.649154e-01 8.398003e-01 +0.630000 1.000005e+00 9.182684e-01 8.990911e-01 +0.640000 1.001584e+00 9.801360e-01 9.684065e-01 +0.650000 1.010005e+00 1.051528e+00 1.048158e+00 +0.660000 1.030699e+00 1.133185e+00 1.138401e+00 +0.670000 1.068607e+00 1.225456e+00 1.238764e+00 +0.680000 1.128215e+00 1.328188e+00 1.348390e+00 +0.690000 1.213540e+00 1.440615e+00 1.465895e+00 +0.700000 1.327870e+00 1.561279e+00 1.589337e+00 +0.710000 1.473103e+00 1.687976e+00 1.716210e+00 +0.720000 1.648620e+00 1.817733e+00 1.843471e+00 +0.730000 1.849790e+00 1.946844e+00 1.967584e+00 +0.740000 2.066518e+00 2.070947e+00 2.084608e+00 +0.750000 2.282551e+00 2.185163e+00 2.190315e+00 +0.760000 2.476419e+00 2.284296e+00 2.280342e+00 +0.770000 2.624586e+00 2.363084e+00 2.350381e+00 +0.780000 2.706446e+00 2.416507e+00 2.396395e+00 +0.790000 2.709671e+00 2.440138e+00 2.414867e+00 +0.800000 2.633762e+00 2.430512e+00 2.403061e+00 +0.810000 2.490197e+00 2.385512e+00 2.359293e+00 +0.820000 2.299110e+00 2.304722e+00 2.283198e+00 +0.830000 2.084002e+00 2.189740e+00 2.175969e+00 +0.840000 1.866653e+00 2.044391e+00 2.040558e+00 +0.850000 1.663794e+00 1.874817e+00 1.881798e+00 +0.860000 1.486002e+00 1.689399e+00 1.706439e+00 +0.870000 1.338291e+00 1.498464e+00 1.523040e+00 +0.880000 1.221545e+00 1.313751e+00 1.341704e+00 +0.890000 1.134018e+00 1.147597e+00 1.173601e+00 +0.900000 1.072503e+00 1.011844e+00 1.030238e+00 +0.910000 1.033025e+00 9.164632e-01 9.224422e-01 +0.920000 1.011135e+00 8.679496e-01 8.589928e-01 +0.930000 1.001930e+00 8.675563e-01 8.448692e-01 +0.940000 1.000015e+00 9.095173e-01 8.790638e-01 +0.950000 9.995757e-01 9.794604e-01 9.519200e-01 +0.960000 9.947162e-01 1.053310e+00 1.041957e+00 +0.970000 9.801295e-01 1.097087e+00 1.112156e+00 +0.980000 9.519710e-01 1.068153e+00 1.105690e+00 +0.990000 9.086638e-01 9.186056e-01 9.411008e-01 diff --git a/gsl-2.5/doc/examples/linalglu b/gsl-2.5/doc/examples/linalglu new file mode 100755 index 00000000..652f7976 --- /dev/null +++ b/gsl-2.5/doc/examples/linalglu @@ -0,0 +1,228 @@ +#! /bin/sh + +# linalglu - temporary wrapper script for .libs/linalglu +# Generated by libtool (GNU libtool) 2.4.2 +# +# The linalglu program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s/\([`"$\\]\)/\\\1/g' + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command="(cd /home/groups/kipac/chto/package/gsl/gsl-2.5/doc/examples; LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LIBRARY_PATH; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; LD_LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/fftw/include:/home/users/chto/lib/fftw/lib:/home/users/chto/lib/healpix/lib:/home/users/chto/lib/namaster/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/include:/home/users/chto/cpp/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LD_LIBRARY_PATH; PATH=/share/software/user/open/curl/7.54.0/bin:/share/software/user/open/libressl/2.5.3/bin:/home/users/chto/lib/cfitsio:/home/users/chto/lib/cfitsio/include:/home/users/chto/lib:/home/users/chto/bin/bin:/home/users/chto/bin:/home/users/chto/.texlive/bin/x86_64-linux:/home/groups/kipac/chto/anaconda2/envs/newenv3/bin:/home/users/chto/.local/bin/include:/home/users/chto/.local/bin/lib:/home/users/chto/.local/bin:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/bin64:/share/software/user/open/fftw/3.3.6/bin:/home/groups/kipac/chto/anaconda2/condabin:/share/software/user/restricted/ifort/2019/bin:/share/software/user/open/gsl/2.3/bin:/share/software/user/srcc/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/dell/srvadmin/bin:/opt/dell/srvadmin/iSM/bin:/home/users/chto/bin; export PATH; gcc -g -O2 -o \$progdir/\$file linalglu.o ../../.libs/libgsl.so ../../cblas/.libs/libgslcblas.so -lm -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/.libs -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/cblas/.libs -Wl,-rpath -Wl,/usr/local/lib)" + +# This environment variable determines our operation mode. +if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then + # install mode needs the following variables: + generated_by_libtool_version='2.4.2' + notinst_deplibs=' ../../libgsl.la ../../cblas/libgslcblas.la' +else + # When we are sourced in execute mode, $file and $ECHO are already set. + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + file="$0" + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + ECHO="printf %s\\n" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ which is used only on +# windows platforms, and (c) all begin with the string --lt- +# (application programs are unlikely to have options which match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's ../../libtool value, followed by no. +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=$0 + shift + for lt_opt + do + case "$lt_opt" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%/[^/]*$%%'` + test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=. + lt_dump_F=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%^.*/%%'` + cat "$lt_dump_D/$lt_dump_F" + exit 0 + ;; + --lt-*) + $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n "$lt_option_debug"; then + echo "linalglu:linalglu:${LINENO}: libtool wrapper (GNU libtool) 2.4.2" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + $ECHO "linalglu:linalglu:${LINENO}: newargv[$lt_dump_args_N]: $lt_arg" + lt_dump_args_N=`expr $lt_dump_args_N + 1` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ + + if test -n "$lt_option_debug"; then + $ECHO "linalglu:linalglu:${LINENO}: newargv[0]: $progdir/$program" 1>&2 + func_lt_dump_args ${1+"$@"} 1>&2 + fi + exec "$progdir/$program" ${1+"$@"} + + $ECHO "$0: cannot exec $program $*" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from $@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case " $* " in + *\ --lt-*) + for lt_wr_arg + do + case $lt_wr_arg in + --lt-*) ;; + *) set x "$@" "$lt_wr_arg"; shift;; + esac + shift + done ;; + esac + func_exec_program_core ${1+"$@"} +} + + # Parse options + func_parse_lt_options "$0" ${1+"$@"} + + # Find the directory that this script lives in. + thisdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + test "x$thisdir" = "x$file" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=`ls -ld "$file" | /usr/bin/sed -n 's/.*-> //p'` + while test -n "$file"; do + destdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + + # If there was a directory component, then change thisdir. + if test "x$destdir" != "x$file"; then + case "$destdir" in + [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;; + *) thisdir="$thisdir/$destdir" ;; + esac + fi + + file=`$ECHO "$file" | /usr/bin/sed 's%^.*/%%'` + file=`ls -ld "$thisdir/$file" | /usr/bin/sed -n 's/.*-> //p'` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no + if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then + # special case for '.' + if test "$thisdir" = "."; then + thisdir=`pwd` + fi + # remove .libs from thisdir + case "$thisdir" in + *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /usr/bin/sed 's%[\\/][^\\/]*$%%'` ;; + .libs ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=`cd "$thisdir" && pwd` + test -n "$absdir" && thisdir="$absdir" + + program=lt-'linalglu' + progdir="$thisdir/.libs" + + if test ! -f "$progdir/$program" || + { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /usr/bin/sed 1q`; \ + test "X$file" != "X$progdir/$program"; }; then + + file="$$-$program" + + if test ! -d "$progdir"; then + mkdir "$progdir" + else + rm -f "$progdir/$file" + fi + + # relink executable if necessary + if test -n "$relink_command"; then + if relink_command_output=`eval $relink_command 2>&1`; then : + else + printf %s\n "$relink_command_output" >&2 + rm -f "$progdir/$file" + exit 1 + fi + fi + + mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null || + { rm -f "$progdir/$program"; + mv -f "$progdir/$file" "$progdir/$program"; } + rm -f "$progdir/$file" + fi + + if test -f "$progdir/$program"; then + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + # Run the actual program with our arguments. + func_exec_program ${1+"$@"} + fi + else + # The program doesn't exist. + $ECHO "$0: error: \`$progdir/$program' does not exist" 1>&2 + $ECHO "This script is just a wrapper for $program." 1>&2 + $ECHO "See the libtool documentation for more information." 1>&2 + exit 1 + fi +fi diff --git a/gsl-2.5/doc/examples/linalglu.c b/gsl-2.5/doc/examples/linalglu.c new file mode 100644 index 00000000..61b5293e --- /dev/null +++ b/gsl-2.5/doc/examples/linalglu.c @@ -0,0 +1,36 @@ +#include +#include + +int +main (void) +{ + double a_data[] = { 0.18, 0.60, 0.57, 0.96, + 0.41, 0.24, 0.99, 0.58, + 0.14, 0.30, 0.97, 0.66, + 0.51, 0.13, 0.19, 0.85 }; + + double b_data[] = { 1.0, 2.0, 3.0, 4.0 }; + + gsl_matrix_view m + = gsl_matrix_view_array (a_data, 4, 4); + + gsl_vector_view b + = gsl_vector_view_array (b_data, 4); + + gsl_vector *x = gsl_vector_alloc (4); + + int s; + + gsl_permutation * p = gsl_permutation_alloc (4); + + gsl_linalg_LU_decomp (&m.matrix, p, &s); + + gsl_linalg_LU_solve (&m.matrix, p, &b.vector, x); + + printf ("x = \n"); + gsl_vector_fprintf (stdout, x, "%g"); + + gsl_permutation_free (p); + gsl_vector_free (x); + return 0; +} diff --git a/gsl-2.5/doc/examples/linalglu.txt b/gsl-2.5/doc/examples/linalglu.txt new file mode 100644 index 00000000..e1607fe3 --- /dev/null +++ b/gsl-2.5/doc/examples/linalglu.txt @@ -0,0 +1,5 @@ +x = +-4.05205 +-12.6056 +1.66091 +8.69377 diff --git a/gsl-2.5/doc/examples/matrix b/gsl-2.5/doc/examples/matrix new file mode 100755 index 00000000..427f6585 --- /dev/null +++ b/gsl-2.5/doc/examples/matrix @@ -0,0 +1,228 @@ +#! /bin/sh + +# matrix - temporary wrapper script for .libs/matrix +# Generated by libtool (GNU libtool) 2.4.2 +# +# The matrix program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s/\([`"$\\]\)/\\\1/g' + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command="(cd /home/groups/kipac/chto/package/gsl/gsl-2.5/doc/examples; LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LIBRARY_PATH; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; LD_LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/fftw/include:/home/users/chto/lib/fftw/lib:/home/users/chto/lib/healpix/lib:/home/users/chto/lib/namaster/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/include:/home/users/chto/cpp/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LD_LIBRARY_PATH; PATH=/share/software/user/open/curl/7.54.0/bin:/share/software/user/open/libressl/2.5.3/bin:/home/users/chto/lib/cfitsio:/home/users/chto/lib/cfitsio/include:/home/users/chto/lib:/home/users/chto/bin/bin:/home/users/chto/bin:/home/users/chto/.texlive/bin/x86_64-linux:/home/groups/kipac/chto/anaconda2/envs/newenv3/bin:/home/users/chto/.local/bin/include:/home/users/chto/.local/bin/lib:/home/users/chto/.local/bin:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/bin64:/share/software/user/open/fftw/3.3.6/bin:/home/groups/kipac/chto/anaconda2/condabin:/share/software/user/restricted/ifort/2019/bin:/share/software/user/open/gsl/2.3/bin:/share/software/user/srcc/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/dell/srvadmin/bin:/opt/dell/srvadmin/iSM/bin:/home/users/chto/bin; export PATH; gcc -g -O2 -o \$progdir/\$file matrix.o ../../.libs/libgsl.so ../../cblas/.libs/libgslcblas.so -lm -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/.libs -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/cblas/.libs -Wl,-rpath -Wl,/usr/local/lib)" + +# This environment variable determines our operation mode. +if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then + # install mode needs the following variables: + generated_by_libtool_version='2.4.2' + notinst_deplibs=' ../../libgsl.la ../../cblas/libgslcblas.la' +else + # When we are sourced in execute mode, $file and $ECHO are already set. + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + file="$0" + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + ECHO="printf %s\\n" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ which is used only on +# windows platforms, and (c) all begin with the string --lt- +# (application programs are unlikely to have options which match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's ../../libtool value, followed by no. +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=$0 + shift + for lt_opt + do + case "$lt_opt" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%/[^/]*$%%'` + test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=. + lt_dump_F=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%^.*/%%'` + cat "$lt_dump_D/$lt_dump_F" + exit 0 + ;; + --lt-*) + $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n "$lt_option_debug"; then + echo "matrix:matrix:${LINENO}: libtool wrapper (GNU libtool) 2.4.2" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + $ECHO "matrix:matrix:${LINENO}: newargv[$lt_dump_args_N]: $lt_arg" + lt_dump_args_N=`expr $lt_dump_args_N + 1` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ + + if test -n "$lt_option_debug"; then + $ECHO "matrix:matrix:${LINENO}: newargv[0]: $progdir/$program" 1>&2 + func_lt_dump_args ${1+"$@"} 1>&2 + fi + exec "$progdir/$program" ${1+"$@"} + + $ECHO "$0: cannot exec $program $*" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from $@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case " $* " in + *\ --lt-*) + for lt_wr_arg + do + case $lt_wr_arg in + --lt-*) ;; + *) set x "$@" "$lt_wr_arg"; shift;; + esac + shift + done ;; + esac + func_exec_program_core ${1+"$@"} +} + + # Parse options + func_parse_lt_options "$0" ${1+"$@"} + + # Find the directory that this script lives in. + thisdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + test "x$thisdir" = "x$file" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=`ls -ld "$file" | /usr/bin/sed -n 's/.*-> //p'` + while test -n "$file"; do + destdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + + # If there was a directory component, then change thisdir. + if test "x$destdir" != "x$file"; then + case "$destdir" in + [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;; + *) thisdir="$thisdir/$destdir" ;; + esac + fi + + file=`$ECHO "$file" | /usr/bin/sed 's%^.*/%%'` + file=`ls -ld "$thisdir/$file" | /usr/bin/sed -n 's/.*-> //p'` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no + if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then + # special case for '.' + if test "$thisdir" = "."; then + thisdir=`pwd` + fi + # remove .libs from thisdir + case "$thisdir" in + *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /usr/bin/sed 's%[\\/][^\\/]*$%%'` ;; + .libs ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=`cd "$thisdir" && pwd` + test -n "$absdir" && thisdir="$absdir" + + program=lt-'matrix' + progdir="$thisdir/.libs" + + if test ! -f "$progdir/$program" || + { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /usr/bin/sed 1q`; \ + test "X$file" != "X$progdir/$program"; }; then + + file="$$-$program" + + if test ! -d "$progdir"; then + mkdir "$progdir" + else + rm -f "$progdir/$file" + fi + + # relink executable if necessary + if test -n "$relink_command"; then + if relink_command_output=`eval $relink_command 2>&1`; then : + else + printf %s\n "$relink_command_output" >&2 + rm -f "$progdir/$file" + exit 1 + fi + fi + + mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null || + { rm -f "$progdir/$program"; + mv -f "$progdir/$file" "$progdir/$program"; } + rm -f "$progdir/$file" + fi + + if test -f "$progdir/$program"; then + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + # Run the actual program with our arguments. + func_exec_program ${1+"$@"} + fi + else + # The program doesn't exist. + $ECHO "$0: error: \`$progdir/$program' does not exist" 1>&2 + $ECHO "This script is just a wrapper for $program." 1>&2 + $ECHO "See the libtool documentation for more information." 1>&2 + exit 1 + fi +fi diff --git a/gsl-2.5/doc/examples/matrix.c b/gsl-2.5/doc/examples/matrix.c new file mode 100644 index 00000000..77046876 --- /dev/null +++ b/gsl-2.5/doc/examples/matrix.c @@ -0,0 +1,22 @@ +#include +#include + +int +main (void) +{ + int i, j; + gsl_matrix * m = gsl_matrix_alloc (10, 3); + + for (i = 0; i < 10; i++) + for (j = 0; j < 3; j++) + gsl_matrix_set (m, i, j, 0.23 + 100*i + j); + + for (i = 0; i < 100; i++) /* OUT OF RANGE ERROR */ + for (j = 0; j < 3; j++) + printf ("m(%d,%d) = %g\n", i, j, + gsl_matrix_get (m, i, j)); + + gsl_matrix_free (m); + + return 0; +} diff --git a/gsl-2.5/doc/examples/matrix.txt b/gsl-2.5/doc/examples/matrix.txt new file mode 100644 index 00000000..9d72f45d --- /dev/null +++ b/gsl-2.5/doc/examples/matrix.txt @@ -0,0 +1,30 @@ +m(0,0) = 0.23 +m(0,1) = 1.23 +m(0,2) = 2.23 +m(1,0) = 100.23 +m(1,1) = 101.23 +m(1,2) = 102.23 +m(2,0) = 200.23 +m(2,1) = 201.23 +m(2,2) = 202.23 +m(3,0) = 300.23 +m(3,1) = 301.23 +m(3,2) = 302.23 +m(4,0) = 400.23 +m(4,1) = 401.23 +m(4,2) = 402.23 +m(5,0) = 500.23 +m(5,1) = 501.23 +m(5,2) = 502.23 +m(6,0) = 600.23 +m(6,1) = 601.23 +m(6,2) = 602.23 +m(7,0) = 700.23 +m(7,1) = 701.23 +m(7,2) = 702.23 +m(8,0) = 800.23 +m(8,1) = 801.23 +m(8,2) = 802.23 +m(9,0) = 900.23 +m(9,1) = 901.23 +m(9,2) = 902.23 diff --git a/gsl-2.5/doc/examples/matrixw b/gsl-2.5/doc/examples/matrixw new file mode 100755 index 00000000..8fcf7dad --- /dev/null +++ b/gsl-2.5/doc/examples/matrixw @@ -0,0 +1,228 @@ +#! /bin/sh + +# matrixw - temporary wrapper script for .libs/matrixw +# Generated by libtool (GNU libtool) 2.4.2 +# +# The matrixw program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s/\([`"$\\]\)/\\\1/g' + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command="(cd /home/groups/kipac/chto/package/gsl/gsl-2.5/doc/examples; LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LIBRARY_PATH; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; LD_LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/fftw/include:/home/users/chto/lib/fftw/lib:/home/users/chto/lib/healpix/lib:/home/users/chto/lib/namaster/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/include:/home/users/chto/cpp/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LD_LIBRARY_PATH; PATH=/share/software/user/open/curl/7.54.0/bin:/share/software/user/open/libressl/2.5.3/bin:/home/users/chto/lib/cfitsio:/home/users/chto/lib/cfitsio/include:/home/users/chto/lib:/home/users/chto/bin/bin:/home/users/chto/bin:/home/users/chto/.texlive/bin/x86_64-linux:/home/groups/kipac/chto/anaconda2/envs/newenv3/bin:/home/users/chto/.local/bin/include:/home/users/chto/.local/bin/lib:/home/users/chto/.local/bin:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/bin64:/share/software/user/open/fftw/3.3.6/bin:/home/groups/kipac/chto/anaconda2/condabin:/share/software/user/restricted/ifort/2019/bin:/share/software/user/open/gsl/2.3/bin:/share/software/user/srcc/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/dell/srvadmin/bin:/opt/dell/srvadmin/iSM/bin:/home/users/chto/bin; export PATH; gcc -g -O2 -o \$progdir/\$file matrixw.o ../../.libs/libgsl.so ../../cblas/.libs/libgslcblas.so -lm -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/.libs -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/cblas/.libs -Wl,-rpath -Wl,/usr/local/lib)" + +# This environment variable determines our operation mode. +if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then + # install mode needs the following variables: + generated_by_libtool_version='2.4.2' + notinst_deplibs=' ../../libgsl.la ../../cblas/libgslcblas.la' +else + # When we are sourced in execute mode, $file and $ECHO are already set. + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + file="$0" + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + ECHO="printf %s\\n" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ which is used only on +# windows platforms, and (c) all begin with the string --lt- +# (application programs are unlikely to have options which match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's ../../libtool value, followed by no. +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=$0 + shift + for lt_opt + do + case "$lt_opt" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%/[^/]*$%%'` + test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=. + lt_dump_F=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%^.*/%%'` + cat "$lt_dump_D/$lt_dump_F" + exit 0 + ;; + --lt-*) + $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n "$lt_option_debug"; then + echo "matrixw:matrixw:${LINENO}: libtool wrapper (GNU libtool) 2.4.2" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + $ECHO "matrixw:matrixw:${LINENO}: newargv[$lt_dump_args_N]: $lt_arg" + lt_dump_args_N=`expr $lt_dump_args_N + 1` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ + + if test -n "$lt_option_debug"; then + $ECHO "matrixw:matrixw:${LINENO}: newargv[0]: $progdir/$program" 1>&2 + func_lt_dump_args ${1+"$@"} 1>&2 + fi + exec "$progdir/$program" ${1+"$@"} + + $ECHO "$0: cannot exec $program $*" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from $@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case " $* " in + *\ --lt-*) + for lt_wr_arg + do + case $lt_wr_arg in + --lt-*) ;; + *) set x "$@" "$lt_wr_arg"; shift;; + esac + shift + done ;; + esac + func_exec_program_core ${1+"$@"} +} + + # Parse options + func_parse_lt_options "$0" ${1+"$@"} + + # Find the directory that this script lives in. + thisdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + test "x$thisdir" = "x$file" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=`ls -ld "$file" | /usr/bin/sed -n 's/.*-> //p'` + while test -n "$file"; do + destdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + + # If there was a directory component, then change thisdir. + if test "x$destdir" != "x$file"; then + case "$destdir" in + [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;; + *) thisdir="$thisdir/$destdir" ;; + esac + fi + + file=`$ECHO "$file" | /usr/bin/sed 's%^.*/%%'` + file=`ls -ld "$thisdir/$file" | /usr/bin/sed -n 's/.*-> //p'` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no + if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then + # special case for '.' + if test "$thisdir" = "."; then + thisdir=`pwd` + fi + # remove .libs from thisdir + case "$thisdir" in + *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /usr/bin/sed 's%[\\/][^\\/]*$%%'` ;; + .libs ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=`cd "$thisdir" && pwd` + test -n "$absdir" && thisdir="$absdir" + + program=lt-'matrixw' + progdir="$thisdir/.libs" + + if test ! -f "$progdir/$program" || + { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /usr/bin/sed 1q`; \ + test "X$file" != "X$progdir/$program"; }; then + + file="$$-$program" + + if test ! -d "$progdir"; then + mkdir "$progdir" + else + rm -f "$progdir/$file" + fi + + # relink executable if necessary + if test -n "$relink_command"; then + if relink_command_output=`eval $relink_command 2>&1`; then : + else + printf %s\n "$relink_command_output" >&2 + rm -f "$progdir/$file" + exit 1 + fi + fi + + mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null || + { rm -f "$progdir/$program"; + mv -f "$progdir/$file" "$progdir/$program"; } + rm -f "$progdir/$file" + fi + + if test -f "$progdir/$program"; then + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + # Run the actual program with our arguments. + func_exec_program ${1+"$@"} + fi + else + # The program doesn't exist. + $ECHO "$0: error: \`$progdir/$program' does not exist" 1>&2 + $ECHO "This script is just a wrapper for $program." 1>&2 + $ECHO "See the libtool documentation for more information." 1>&2 + exit 1 + fi +fi diff --git a/gsl-2.5/doc/examples/matrixw.c b/gsl-2.5/doc/examples/matrixw.c new file mode 100644 index 00000000..b05ffbd0 --- /dev/null +++ b/gsl-2.5/doc/examples/matrixw.c @@ -0,0 +1,40 @@ +#include +#include + +int +main (void) +{ + int i, j, k = 0; + gsl_matrix * m = gsl_matrix_alloc (100, 100); + gsl_matrix * a = gsl_matrix_alloc (100, 100); + + for (i = 0; i < 100; i++) + for (j = 0; j < 100; j++) + gsl_matrix_set (m, i, j, 0.23 + i + j); + + { + FILE * f = fopen ("test.dat", "wb"); + gsl_matrix_fwrite (f, m); + fclose (f); + } + + { + FILE * f = fopen ("test.dat", "rb"); + gsl_matrix_fread (f, a); + fclose (f); + } + + for (i = 0; i < 100; i++) + for (j = 0; j < 100; j++) + { + double mij = gsl_matrix_get (m, i, j); + double aij = gsl_matrix_get (a, i, j); + if (mij != aij) k++; + } + + gsl_matrix_free (m); + gsl_matrix_free (a); + + printf ("differences = %d (should be zero)\n", k); + return (k > 0); +} diff --git a/gsl-2.5/doc/examples/matrixw.txt b/gsl-2.5/doc/examples/matrixw.txt new file mode 100644 index 00000000..b62ee216 --- /dev/null +++ b/gsl-2.5/doc/examples/matrixw.txt @@ -0,0 +1 @@ +differences = 0 (should be zero) diff --git a/gsl-2.5/doc/examples/min b/gsl-2.5/doc/examples/min new file mode 100755 index 00000000..138f3b52 --- /dev/null +++ b/gsl-2.5/doc/examples/min @@ -0,0 +1,228 @@ +#! /bin/sh + +# min - temporary wrapper script for .libs/min +# Generated by libtool (GNU libtool) 2.4.2 +# +# The min program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s/\([`"$\\]\)/\\\1/g' + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command="(cd /home/groups/kipac/chto/package/gsl/gsl-2.5/doc/examples; LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LIBRARY_PATH; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; LD_LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/fftw/include:/home/users/chto/lib/fftw/lib:/home/users/chto/lib/healpix/lib:/home/users/chto/lib/namaster/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/include:/home/users/chto/cpp/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LD_LIBRARY_PATH; PATH=/share/software/user/open/curl/7.54.0/bin:/share/software/user/open/libressl/2.5.3/bin:/home/users/chto/lib/cfitsio:/home/users/chto/lib/cfitsio/include:/home/users/chto/lib:/home/users/chto/bin/bin:/home/users/chto/bin:/home/users/chto/.texlive/bin/x86_64-linux:/home/groups/kipac/chto/anaconda2/envs/newenv3/bin:/home/users/chto/.local/bin/include:/home/users/chto/.local/bin/lib:/home/users/chto/.local/bin:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/bin64:/share/software/user/open/fftw/3.3.6/bin:/home/groups/kipac/chto/anaconda2/condabin:/share/software/user/restricted/ifort/2019/bin:/share/software/user/open/gsl/2.3/bin:/share/software/user/srcc/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/dell/srvadmin/bin:/opt/dell/srvadmin/iSM/bin:/home/users/chto/bin; export PATH; gcc -g -O2 -o \$progdir/\$file min.o ../../.libs/libgsl.so ../../cblas/.libs/libgslcblas.so -lm -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/.libs -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/cblas/.libs -Wl,-rpath -Wl,/usr/local/lib)" + +# This environment variable determines our operation mode. +if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then + # install mode needs the following variables: + generated_by_libtool_version='2.4.2' + notinst_deplibs=' ../../libgsl.la ../../cblas/libgslcblas.la' +else + # When we are sourced in execute mode, $file and $ECHO are already set. + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + file="$0" + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + ECHO="printf %s\\n" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ which is used only on +# windows platforms, and (c) all begin with the string --lt- +# (application programs are unlikely to have options which match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's ../../libtool value, followed by no. +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=$0 + shift + for lt_opt + do + case "$lt_opt" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%/[^/]*$%%'` + test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=. + lt_dump_F=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%^.*/%%'` + cat "$lt_dump_D/$lt_dump_F" + exit 0 + ;; + --lt-*) + $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n "$lt_option_debug"; then + echo "min:min:${LINENO}: libtool wrapper (GNU libtool) 2.4.2" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + $ECHO "min:min:${LINENO}: newargv[$lt_dump_args_N]: $lt_arg" + lt_dump_args_N=`expr $lt_dump_args_N + 1` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ + + if test -n "$lt_option_debug"; then + $ECHO "min:min:${LINENO}: newargv[0]: $progdir/$program" 1>&2 + func_lt_dump_args ${1+"$@"} 1>&2 + fi + exec "$progdir/$program" ${1+"$@"} + + $ECHO "$0: cannot exec $program $*" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from $@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case " $* " in + *\ --lt-*) + for lt_wr_arg + do + case $lt_wr_arg in + --lt-*) ;; + *) set x "$@" "$lt_wr_arg"; shift;; + esac + shift + done ;; + esac + func_exec_program_core ${1+"$@"} +} + + # Parse options + func_parse_lt_options "$0" ${1+"$@"} + + # Find the directory that this script lives in. + thisdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + test "x$thisdir" = "x$file" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=`ls -ld "$file" | /usr/bin/sed -n 's/.*-> //p'` + while test -n "$file"; do + destdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + + # If there was a directory component, then change thisdir. + if test "x$destdir" != "x$file"; then + case "$destdir" in + [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;; + *) thisdir="$thisdir/$destdir" ;; + esac + fi + + file=`$ECHO "$file" | /usr/bin/sed 's%^.*/%%'` + file=`ls -ld "$thisdir/$file" | /usr/bin/sed -n 's/.*-> //p'` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no + if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then + # special case for '.' + if test "$thisdir" = "."; then + thisdir=`pwd` + fi + # remove .libs from thisdir + case "$thisdir" in + *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /usr/bin/sed 's%[\\/][^\\/]*$%%'` ;; + .libs ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=`cd "$thisdir" && pwd` + test -n "$absdir" && thisdir="$absdir" + + program=lt-'min' + progdir="$thisdir/.libs" + + if test ! -f "$progdir/$program" || + { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /usr/bin/sed 1q`; \ + test "X$file" != "X$progdir/$program"; }; then + + file="$$-$program" + + if test ! -d "$progdir"; then + mkdir "$progdir" + else + rm -f "$progdir/$file" + fi + + # relink executable if necessary + if test -n "$relink_command"; then + if relink_command_output=`eval $relink_command 2>&1`; then : + else + printf %s\n "$relink_command_output" >&2 + rm -f "$progdir/$file" + exit 1 + fi + fi + + mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null || + { rm -f "$progdir/$program"; + mv -f "$progdir/$file" "$progdir/$program"; } + rm -f "$progdir/$file" + fi + + if test -f "$progdir/$program"; then + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + # Run the actual program with our arguments. + func_exec_program ${1+"$@"} + fi + else + # The program doesn't exist. + $ECHO "$0: error: \`$progdir/$program' does not exist" 1>&2 + $ECHO "This script is just a wrapper for $program." 1>&2 + $ECHO "See the libtool documentation for more information." 1>&2 + exit 1 + fi +fi diff --git a/gsl-2.5/doc/examples/min.c b/gsl-2.5/doc/examples/min.c new file mode 100644 index 00000000..62b589dd --- /dev/null +++ b/gsl-2.5/doc/examples/min.c @@ -0,0 +1,66 @@ +#include +#include +#include +#include + +double fn1 (double x, void * params) +{ + (void)(params); /* avoid unused parameter warning */ + return cos(x) + 1.0; +} + +int +main (void) +{ + int status; + int iter = 0, max_iter = 100; + const gsl_min_fminimizer_type *T; + gsl_min_fminimizer *s; + double m = 2.0, m_expected = M_PI; + double a = 0.0, b = 6.0; + gsl_function F; + + F.function = &fn1; + F.params = 0; + + T = gsl_min_fminimizer_brent; + s = gsl_min_fminimizer_alloc (T); + gsl_min_fminimizer_set (s, &F, m, a, b); + + printf ("using %s method\n", + gsl_min_fminimizer_name (s)); + + printf ("%5s [%9s, %9s] %9s %10s %9s\n", + "iter", "lower", "upper", "min", + "err", "err(est)"); + + printf ("%5d [%.7f, %.7f] %.7f %+.7f %.7f\n", + iter, a, b, + m, m - m_expected, b - a); + + do + { + iter++; + status = gsl_min_fminimizer_iterate (s); + + m = gsl_min_fminimizer_x_minimum (s); + a = gsl_min_fminimizer_x_lower (s); + b = gsl_min_fminimizer_x_upper (s); + + status + = gsl_min_test_interval (a, b, 0.001, 0.0); + + if (status == GSL_SUCCESS) + printf ("Converged:\n"); + + printf ("%5d [%.7f, %.7f] " + "%.7f %+.7f %.7f\n", + iter, a, b, + m, m - m_expected, b - a); + } + while (status == GSL_CONTINUE && iter < max_iter); + + gsl_min_fminimizer_free (s); + + return status; +} diff --git a/gsl-2.5/doc/examples/min.txt b/gsl-2.5/doc/examples/min.txt new file mode 100644 index 00000000..375f95e1 --- /dev/null +++ b/gsl-2.5/doc/examples/min.txt @@ -0,0 +1,10 @@ +using brent method + iter [ lower, upper] min err err(est) + 0 [0.0000000, 6.0000000] 2.0000000 -1.1415927 6.0000000 + 1 [2.0000000, 6.0000000] 3.5278640 +0.3862713 4.0000000 + 2 [2.0000000, 3.5278640] 3.1748217 +0.0332290 1.5278640 + 3 [2.0000000, 3.1748217] 3.1264576 -0.0151351 1.1748217 + 4 [3.1264576, 3.1748217] 3.1414743 -0.0001183 0.0483641 + 5 [3.1414743, 3.1748217] 3.1415930 +0.0000004 0.0333474 +Converged: + 6 [3.1414743, 3.1415930] 3.1415927 +0.0000000 0.0001187 diff --git a/gsl-2.5/doc/examples/monte b/gsl-2.5/doc/examples/monte new file mode 100755 index 00000000..2cd71796 --- /dev/null +++ b/gsl-2.5/doc/examples/monte @@ -0,0 +1,228 @@ +#! /bin/sh + +# monte - temporary wrapper script for .libs/monte +# Generated by libtool (GNU libtool) 2.4.2 +# +# The monte program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s/\([`"$\\]\)/\\\1/g' + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command="(cd /home/groups/kipac/chto/package/gsl/gsl-2.5/doc/examples; LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LIBRARY_PATH; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; LD_LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/fftw/include:/home/users/chto/lib/fftw/lib:/home/users/chto/lib/healpix/lib:/home/users/chto/lib/namaster/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/include:/home/users/chto/cpp/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LD_LIBRARY_PATH; PATH=/share/software/user/open/curl/7.54.0/bin:/share/software/user/open/libressl/2.5.3/bin:/home/users/chto/lib/cfitsio:/home/users/chto/lib/cfitsio/include:/home/users/chto/lib:/home/users/chto/bin/bin:/home/users/chto/bin:/home/users/chto/.texlive/bin/x86_64-linux:/home/groups/kipac/chto/anaconda2/envs/newenv3/bin:/home/users/chto/.local/bin/include:/home/users/chto/.local/bin/lib:/home/users/chto/.local/bin:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/bin64:/share/software/user/open/fftw/3.3.6/bin:/home/groups/kipac/chto/anaconda2/condabin:/share/software/user/restricted/ifort/2019/bin:/share/software/user/open/gsl/2.3/bin:/share/software/user/srcc/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/dell/srvadmin/bin:/opt/dell/srvadmin/iSM/bin:/home/users/chto/bin; export PATH; gcc -g -O2 -o \$progdir/\$file monte.o ../../.libs/libgsl.so ../../cblas/.libs/libgslcblas.so -lm -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/.libs -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/cblas/.libs -Wl,-rpath -Wl,/usr/local/lib)" + +# This environment variable determines our operation mode. +if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then + # install mode needs the following variables: + generated_by_libtool_version='2.4.2' + notinst_deplibs=' ../../libgsl.la ../../cblas/libgslcblas.la' +else + # When we are sourced in execute mode, $file and $ECHO are already set. + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + file="$0" + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + ECHO="printf %s\\n" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ which is used only on +# windows platforms, and (c) all begin with the string --lt- +# (application programs are unlikely to have options which match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's ../../libtool value, followed by no. +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=$0 + shift + for lt_opt + do + case "$lt_opt" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%/[^/]*$%%'` + test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=. + lt_dump_F=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%^.*/%%'` + cat "$lt_dump_D/$lt_dump_F" + exit 0 + ;; + --lt-*) + $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n "$lt_option_debug"; then + echo "monte:monte:${LINENO}: libtool wrapper (GNU libtool) 2.4.2" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + $ECHO "monte:monte:${LINENO}: newargv[$lt_dump_args_N]: $lt_arg" + lt_dump_args_N=`expr $lt_dump_args_N + 1` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ + + if test -n "$lt_option_debug"; then + $ECHO "monte:monte:${LINENO}: newargv[0]: $progdir/$program" 1>&2 + func_lt_dump_args ${1+"$@"} 1>&2 + fi + exec "$progdir/$program" ${1+"$@"} + + $ECHO "$0: cannot exec $program $*" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from $@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case " $* " in + *\ --lt-*) + for lt_wr_arg + do + case $lt_wr_arg in + --lt-*) ;; + *) set x "$@" "$lt_wr_arg"; shift;; + esac + shift + done ;; + esac + func_exec_program_core ${1+"$@"} +} + + # Parse options + func_parse_lt_options "$0" ${1+"$@"} + + # Find the directory that this script lives in. + thisdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + test "x$thisdir" = "x$file" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=`ls -ld "$file" | /usr/bin/sed -n 's/.*-> //p'` + while test -n "$file"; do + destdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + + # If there was a directory component, then change thisdir. + if test "x$destdir" != "x$file"; then + case "$destdir" in + [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;; + *) thisdir="$thisdir/$destdir" ;; + esac + fi + + file=`$ECHO "$file" | /usr/bin/sed 's%^.*/%%'` + file=`ls -ld "$thisdir/$file" | /usr/bin/sed -n 's/.*-> //p'` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no + if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then + # special case for '.' + if test "$thisdir" = "."; then + thisdir=`pwd` + fi + # remove .libs from thisdir + case "$thisdir" in + *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /usr/bin/sed 's%[\\/][^\\/]*$%%'` ;; + .libs ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=`cd "$thisdir" && pwd` + test -n "$absdir" && thisdir="$absdir" + + program=lt-'monte' + progdir="$thisdir/.libs" + + if test ! -f "$progdir/$program" || + { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /usr/bin/sed 1q`; \ + test "X$file" != "X$progdir/$program"; }; then + + file="$$-$program" + + if test ! -d "$progdir"; then + mkdir "$progdir" + else + rm -f "$progdir/$file" + fi + + # relink executable if necessary + if test -n "$relink_command"; then + if relink_command_output=`eval $relink_command 2>&1`; then : + else + printf %s\n "$relink_command_output" >&2 + rm -f "$progdir/$file" + exit 1 + fi + fi + + mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null || + { rm -f "$progdir/$program"; + mv -f "$progdir/$file" "$progdir/$program"; } + rm -f "$progdir/$file" + fi + + if test -f "$progdir/$program"; then + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + # Run the actual program with our arguments. + func_exec_program ${1+"$@"} + fi + else + # The program doesn't exist. + $ECHO "$0: error: \`$progdir/$program' does not exist" 1>&2 + $ECHO "This script is just a wrapper for $program." 1>&2 + $ECHO "See the libtool documentation for more information." 1>&2 + exit 1 + fi +fi diff --git a/gsl-2.5/doc/examples/monte.c b/gsl-2.5/doc/examples/monte.c new file mode 100644 index 00000000..f3f5063d --- /dev/null +++ b/gsl-2.5/doc/examples/monte.c @@ -0,0 +1,108 @@ +#include +#include +#include +#include +#include +#include + +/* Computation of the integral, + + I = int (dx dy dz)/(2pi)^3 1/(1-cos(x)cos(y)cos(z)) + + over (-pi,-pi,-pi) to (+pi, +pi, +pi). The exact answer + is Gamma(1/4)^4/(4 pi^3). This example is taken from + C.Itzykson, J.M.Drouffe, "Statistical Field Theory - + Volume 1", Section 1.1, p21, which cites the original + paper M.L.Glasser, I.J.Zucker, Proc.Natl.Acad.Sci.USA 74 + 1800 (1977) */ + +/* For simplicity we compute the integral over the region + (0,0,0) -> (pi,pi,pi) and multiply by 8 */ + +double exact = 1.3932039296856768591842462603255; + +double +g (double *k, size_t dim, void *params) +{ + (void)(dim); /* avoid unused parameter warnings */ + (void)(params); + double A = 1.0 / (M_PI * M_PI * M_PI); + return A / (1.0 - cos (k[0]) * cos (k[1]) * cos (k[2])); +} + +void +display_results (char *title, double result, double error) +{ + printf ("%s ==================\n", title); + printf ("result = % .6f\n", result); + printf ("sigma = % .6f\n", error); + printf ("exact = % .6f\n", exact); + printf ("error = % .6f = %.2g sigma\n", result - exact, + fabs (result - exact) / error); +} + +int +main (void) +{ + double res, err; + + double xl[3] = { 0, 0, 0 }; + double xu[3] = { M_PI, M_PI, M_PI }; + + const gsl_rng_type *T; + gsl_rng *r; + + gsl_monte_function G = { &g, 3, 0 }; + + size_t calls = 500000; + + gsl_rng_env_setup (); + + T = gsl_rng_default; + r = gsl_rng_alloc (T); + + { + gsl_monte_plain_state *s = gsl_monte_plain_alloc (3); + gsl_monte_plain_integrate (&G, xl, xu, 3, calls, r, s, + &res, &err); + gsl_monte_plain_free (s); + + display_results ("plain", res, err); + } + + { + gsl_monte_miser_state *s = gsl_monte_miser_alloc (3); + gsl_monte_miser_integrate (&G, xl, xu, 3, calls, r, s, + &res, &err); + gsl_monte_miser_free (s); + + display_results ("miser", res, err); + } + + { + gsl_monte_vegas_state *s = gsl_monte_vegas_alloc (3); + + gsl_monte_vegas_integrate (&G, xl, xu, 3, 10000, r, s, + &res, &err); + display_results ("vegas warm-up", res, err); + + printf ("converging...\n"); + + do + { + gsl_monte_vegas_integrate (&G, xl, xu, 3, calls/5, r, s, + &res, &err); + printf ("result = % .6f sigma = % .6f " + "chisq/dof = %.1f\n", res, err, gsl_monte_vegas_chisq (s)); + } + while (fabs (gsl_monte_vegas_chisq (s) - 1.0) > 0.5); + + display_results ("vegas final", res, err); + + gsl_monte_vegas_free (s); + } + + gsl_rng_free (r); + + return 0; +} diff --git a/gsl-2.5/doc/examples/monte.txt b/gsl-2.5/doc/examples/monte.txt new file mode 100644 index 00000000..17bd74a4 --- /dev/null +++ b/gsl-2.5/doc/examples/monte.txt @@ -0,0 +1,22 @@ +plain ================== +result = 1.412209 +sigma = 0.013436 +exact = 1.393204 +error = 0.019005 = 1.4 sigma +miser ================== +result = 1.391322 +sigma = 0.003461 +exact = 1.393204 +error = -0.001882 = 0.54 sigma +vegas warm-up ================== +result = 1.392673 +sigma = 0.003410 +exact = 1.393204 +error = -0.000531 = 0.16 sigma +converging... +result = 1.393281 sigma = 0.000362 chisq/dof = 1.5 +vegas final ================== +result = 1.393281 +sigma = 0.000362 +exact = 1.393204 +error = 0.000077 = 0.21 sigma diff --git a/gsl-2.5/doc/examples/movstat1 b/gsl-2.5/doc/examples/movstat1 new file mode 100755 index 00000000..fcc34a82 --- /dev/null +++ b/gsl-2.5/doc/examples/movstat1 @@ -0,0 +1,228 @@ +#! /bin/sh + +# movstat1 - temporary wrapper script for .libs/movstat1 +# Generated by libtool (GNU libtool) 2.4.2 +# +# The movstat1 program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s/\([`"$\\]\)/\\\1/g' + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command="(cd /home/groups/kipac/chto/package/gsl/gsl-2.5/doc/examples; LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LIBRARY_PATH; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; LD_LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/fftw/include:/home/users/chto/lib/fftw/lib:/home/users/chto/lib/healpix/lib:/home/users/chto/lib/namaster/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/include:/home/users/chto/cpp/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LD_LIBRARY_PATH; PATH=/share/software/user/open/curl/7.54.0/bin:/share/software/user/open/libressl/2.5.3/bin:/home/users/chto/lib/cfitsio:/home/users/chto/lib/cfitsio/include:/home/users/chto/lib:/home/users/chto/bin/bin:/home/users/chto/bin:/home/users/chto/.texlive/bin/x86_64-linux:/home/groups/kipac/chto/anaconda2/envs/newenv3/bin:/home/users/chto/.local/bin/include:/home/users/chto/.local/bin/lib:/home/users/chto/.local/bin:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/bin64:/share/software/user/open/fftw/3.3.6/bin:/home/groups/kipac/chto/anaconda2/condabin:/share/software/user/restricted/ifort/2019/bin:/share/software/user/open/gsl/2.3/bin:/share/software/user/srcc/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/dell/srvadmin/bin:/opt/dell/srvadmin/iSM/bin:/home/users/chto/bin; export PATH; gcc -g -O2 -o \$progdir/\$file movstat1.o ../../.libs/libgsl.so ../../cblas/.libs/libgslcblas.so -lm -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/.libs -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/cblas/.libs -Wl,-rpath -Wl,/usr/local/lib)" + +# This environment variable determines our operation mode. +if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then + # install mode needs the following variables: + generated_by_libtool_version='2.4.2' + notinst_deplibs=' ../../libgsl.la ../../cblas/libgslcblas.la' +else + # When we are sourced in execute mode, $file and $ECHO are already set. + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + file="$0" + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + ECHO="printf %s\\n" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ which is used only on +# windows platforms, and (c) all begin with the string --lt- +# (application programs are unlikely to have options which match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's ../../libtool value, followed by no. +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=$0 + shift + for lt_opt + do + case "$lt_opt" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%/[^/]*$%%'` + test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=. + lt_dump_F=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%^.*/%%'` + cat "$lt_dump_D/$lt_dump_F" + exit 0 + ;; + --lt-*) + $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n "$lt_option_debug"; then + echo "movstat1:movstat1:${LINENO}: libtool wrapper (GNU libtool) 2.4.2" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + $ECHO "movstat1:movstat1:${LINENO}: newargv[$lt_dump_args_N]: $lt_arg" + lt_dump_args_N=`expr $lt_dump_args_N + 1` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ + + if test -n "$lt_option_debug"; then + $ECHO "movstat1:movstat1:${LINENO}: newargv[0]: $progdir/$program" 1>&2 + func_lt_dump_args ${1+"$@"} 1>&2 + fi + exec "$progdir/$program" ${1+"$@"} + + $ECHO "$0: cannot exec $program $*" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from $@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case " $* " in + *\ --lt-*) + for lt_wr_arg + do + case $lt_wr_arg in + --lt-*) ;; + *) set x "$@" "$lt_wr_arg"; shift;; + esac + shift + done ;; + esac + func_exec_program_core ${1+"$@"} +} + + # Parse options + func_parse_lt_options "$0" ${1+"$@"} + + # Find the directory that this script lives in. + thisdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + test "x$thisdir" = "x$file" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=`ls -ld "$file" | /usr/bin/sed -n 's/.*-> //p'` + while test -n "$file"; do + destdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + + # If there was a directory component, then change thisdir. + if test "x$destdir" != "x$file"; then + case "$destdir" in + [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;; + *) thisdir="$thisdir/$destdir" ;; + esac + fi + + file=`$ECHO "$file" | /usr/bin/sed 's%^.*/%%'` + file=`ls -ld "$thisdir/$file" | /usr/bin/sed -n 's/.*-> //p'` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no + if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then + # special case for '.' + if test "$thisdir" = "."; then + thisdir=`pwd` + fi + # remove .libs from thisdir + case "$thisdir" in + *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /usr/bin/sed 's%[\\/][^\\/]*$%%'` ;; + .libs ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=`cd "$thisdir" && pwd` + test -n "$absdir" && thisdir="$absdir" + + program=lt-'movstat1' + progdir="$thisdir/.libs" + + if test ! -f "$progdir/$program" || + { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /usr/bin/sed 1q`; \ + test "X$file" != "X$progdir/$program"; }; then + + file="$$-$program" + + if test ! -d "$progdir"; then + mkdir "$progdir" + else + rm -f "$progdir/$file" + fi + + # relink executable if necessary + if test -n "$relink_command"; then + if relink_command_output=`eval $relink_command 2>&1`; then : + else + printf %s\n "$relink_command_output" >&2 + rm -f "$progdir/$file" + exit 1 + fi + fi + + mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null || + { rm -f "$progdir/$program"; + mv -f "$progdir/$file" "$progdir/$program"; } + rm -f "$progdir/$file" + fi + + if test -f "$progdir/$program"; then + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + # Run the actual program with our arguments. + func_exec_program ${1+"$@"} + fi + else + # The program doesn't exist. + $ECHO "$0: error: \`$progdir/$program' does not exist" 1>&2 + $ECHO "This script is just a wrapper for $program." 1>&2 + $ECHO "See the libtool documentation for more information." 1>&2 + exit 1 + fi +fi diff --git a/gsl-2.5/doc/examples/movstat1.c b/gsl-2.5/doc/examples/movstat1.c new file mode 100644 index 00000000..c0fac524 --- /dev/null +++ b/gsl-2.5/doc/examples/movstat1.c @@ -0,0 +1,52 @@ +#include +#include + +#include +#include +#include +#include +#include + +int +main(void) +{ + const size_t N = 500; /* length of time series */ + const size_t K = 11; /* window size */ + gsl_movstat_workspace * w = gsl_movstat_alloc(K); + gsl_vector *x = gsl_vector_alloc(N); + gsl_vector *xmean = gsl_vector_alloc(N); + gsl_vector *xmin = gsl_vector_alloc(N); + gsl_vector *xmax = gsl_vector_alloc(N); + gsl_rng *r = gsl_rng_alloc(gsl_rng_default); + size_t i; + + for (i = 0; i < N; ++i) + { + double xi = cos(2.0 * M_PI * i / (double) N); + double ei = gsl_ran_gaussian(r, 0.1); + + gsl_vector_set(x, i, xi + ei); + } + + /* compute moving statistics */ + gsl_movstat_mean(GSL_MOVSTAT_END_PADVALUE, x, xmean, w); + gsl_movstat_minmax(GSL_MOVSTAT_END_PADVALUE, x, xmin, xmax, w); + + /* print results */ + for (i = 0; i < N; ++i) + { + printf("%zu %f %f %f %f\n", + i, + gsl_vector_get(x, i), + gsl_vector_get(xmean, i), + gsl_vector_get(xmin, i), + gsl_vector_get(xmax, i)); + } + + gsl_vector_free(x); + gsl_vector_free(xmean); + gsl_rng_free(r); + gsl_movstat_free(w); + + return 0; +} diff --git a/gsl-2.5/doc/examples/movstat1.txt b/gsl-2.5/doc/examples/movstat1.txt new file mode 100644 index 00000000..cdafb2cb --- /dev/null +++ b/gsl-2.5/doc/examples/movstat1.txt @@ -0,0 +1,500 @@ +0 1.013392 1.025455 0.870277 1.167125 +1 0.991111 1.002191 0.757487 1.167125 +2 1.167125 0.994447 0.757487 1.167125 +3 1.072654 0.992415 0.757487 1.167125 +4 1.098489 0.998740 0.757487 1.167125 +5 0.870277 0.996645 0.757487 1.167125 +6 0.757487 0.982774 0.757487 1.167125 +7 0.928206 0.976478 0.757487 1.167125 +8 0.991042 0.961726 0.757487 1.098489 +9 1.082967 0.961273 0.757487 1.098489 +10 0.990350 0.945725 0.757487 1.082967 +11 0.860806 0.949887 0.757487 1.082967 +12 0.921854 0.969931 0.860806 1.082967 +13 1.004857 0.968052 0.860806 1.082967 +14 1.067669 0.958763 0.860806 1.082967 +15 0.927462 0.953932 0.860806 1.067669 +16 0.916052 0.948321 0.860806 1.067669 +17 0.977977 0.954891 0.888855 1.067669 +18 0.907542 0.949889 0.866834 1.067669 +19 0.888855 0.940037 0.866834 1.067669 +20 1.029833 0.930024 0.866834 1.029833 +21 0.928623 0.932234 0.866834 1.029833 +22 0.933078 0.927858 0.866834 1.029833 +23 0.866834 0.922979 0.866834 1.029833 +24 0.896484 0.938828 0.866834 1.081885 +25 0.957518 0.940671 0.866834 1.081885 +26 0.951773 0.928778 0.866834 1.081885 +27 0.867918 0.926759 0.866834 1.081885 +28 0.924311 0.902015 0.660901 1.081885 +29 1.081885 0.911199 0.660901 1.081885 +30 0.909129 0.911629 0.660901 1.081885 +31 0.899007 0.904290 0.660901 1.081885 +32 0.906410 0.905523 0.660901 1.081885 +33 0.660901 0.921700 0.660901 1.081885 +34 0.967848 0.914314 0.660901 1.081885 +35 0.901216 0.906377 0.660901 1.045863 +36 0.876788 0.919138 0.660901 1.049495 +37 0.965342 0.909300 0.660901 1.049495 +38 1.045863 0.899130 0.660901 1.049495 +39 0.843064 0.935236 0.790789 1.058064 +40 0.994584 0.915798 0.754027 1.058064 +41 1.049495 0.925786 0.754027 1.058064 +42 0.790789 0.934160 0.754027 1.058064 +43 0.794545 0.917856 0.754027 1.058064 +44 1.058064 0.894224 0.754027 1.058064 +45 0.754027 0.902525 0.754027 1.058064 +46 1.011083 0.882488 0.754027 1.058064 +47 0.968905 0.858839 0.754027 1.058064 +48 0.785996 0.865693 0.754027 1.058064 +49 0.785908 0.869140 0.754027 1.058064 +50 0.934374 0.843780 0.754027 1.011083 +51 0.774182 0.856865 0.774182 1.011083 +52 0.789357 0.833643 0.755636 0.968905 +53 0.866187 0.820204 0.755636 0.934374 +54 0.832458 0.801479 0.580022 0.934374 +55 0.779098 0.794145 0.580022 0.934374 +56 0.897972 0.777744 0.580022 0.897972 +57 0.755636 0.771325 0.580022 0.897972 +58 0.821078 0.758525 0.580022 0.897972 +59 0.580022 0.730291 0.555610 0.897972 +60 0.705231 0.732450 0.555610 0.897972 +61 0.753958 0.726817 0.555610 0.897972 +62 0.703576 0.719593 0.555610 0.856202 +63 0.648563 0.716829 0.555610 0.856202 +64 0.555610 0.695659 0.555610 0.856202 +65 0.856202 0.712848 0.555610 0.856202 +66 0.717144 0.698226 0.544393 0.856202 +67 0.818508 0.692889 0.544393 0.856202 +68 0.725233 0.676890 0.527579 0.856202 +69 0.588200 0.671508 0.527579 0.856202 +70 0.769099 0.688035 0.527579 0.856202 +71 0.544393 0.666321 0.527579 0.818508 +72 0.695256 0.683045 0.527579 0.901112 +73 0.527579 0.675632 0.527579 0.901112 +74 0.589362 0.675341 0.527579 0.901112 +75 0.737405 0.676647 0.527579 0.901112 +76 0.617349 0.644925 0.420158 0.901112 +77 0.901112 0.645197 0.420158 0.901112 +78 0.736969 0.631913 0.420158 0.901112 +79 0.722022 0.607408 0.258027 0.901112 +80 0.602574 0.592044 0.258027 0.901112 +81 0.420158 0.548146 0.254524 0.901112 +82 0.547377 0.524700 0.254524 0.901112 +83 0.549131 0.479341 0.254524 0.736969 +84 0.258027 0.444649 0.254524 0.722022 +85 0.420364 0.419394 0.254524 0.602574 +86 0.254524 0.398695 0.254524 0.549131 +87 0.359446 0.381949 0.235951 0.549131 +88 0.402156 0.359174 0.235951 0.549131 +89 0.355360 0.343811 0.235951 0.444218 +90 0.444218 0.364327 0.235951 0.483698 +91 0.374884 0.375581 0.235951 0.544155 +92 0.235951 0.384793 0.235951 0.544155 +93 0.296859 0.384020 0.235951 0.544155 +94 0.380136 0.388258 0.235951 0.544155 +95 0.483698 0.389237 0.235951 0.544155 +96 0.544155 0.371576 0.235951 0.544155 +97 0.355863 0.367619 0.235951 0.544155 +98 0.350941 0.389322 0.249951 0.544155 +99 0.448774 0.405590 0.249951 0.544155 +100 0.366123 0.390267 0.211582 0.544155 +101 0.249951 0.361028 0.162070 0.544155 +102 0.331355 0.320305 0.096198 0.475812 +103 0.474684 0.294603 0.073141 0.475812 +104 0.475812 0.277378 0.073141 0.475812 +105 0.211582 0.267081 0.073141 0.475812 +106 0.162070 0.237602 0.041856 0.475812 +107 0.096198 0.220135 0.041856 0.475812 +108 0.073141 0.202362 0.041856 0.475812 +109 0.161463 0.173379 0.041856 0.475812 +110 0.335513 0.162744 0.041856 0.358825 +111 0.041856 0.156966 0.041856 0.358825 +112 0.057809 0.154733 0.041856 0.358825 +113 0.135848 0.147418 0.015741 0.358825 +114 0.155876 0.163315 0.015741 0.358825 +115 0.358825 0.151041 0.015741 0.358825 +116 0.148026 0.142400 0.015741 0.358825 +117 0.137503 0.145727 0.015741 0.358825 +118 0.015741 0.133652 -0.075014 0.358825 +119 0.248005 0.125044 -0.075014 0.358825 +120 0.026450 0.107819 -0.075014 0.358825 +121 0.240462 0.082304 -0.075014 0.248005 +122 0.078448 0.078524 -0.075014 0.248005 +123 -0.075014 0.069818 -0.075014 0.248005 +124 0.041165 0.060222 -0.089813 0.248005 +125 -0.033599 0.037175 -0.089813 0.240462 +126 0.078162 0.022155 -0.138771 0.240462 +127 0.106441 -0.012559 -0.141393 0.106441 +128 0.041739 -0.021868 -0.141393 0.106441 +129 -0.089813 -0.023553 -0.141393 0.106441 +130 -0.005517 -0.042827 -0.170845 0.106441 +131 -0.138771 -0.047853 -0.170845 0.106441 +132 -0.141393 -0.072865 -0.196971 0.106441 +133 -0.023946 -0.096954 -0.196971 0.041739 +134 -0.093553 -0.112070 -0.196971 -0.005517 +135 -0.170845 -0.095246 -0.196971 0.095255 +136 -0.088883 -0.118915 -0.265878 0.095255 +137 -0.196971 -0.131437 -0.276507 0.095255 +138 -0.158539 -0.122919 -0.276507 0.095255 +139 -0.124542 -0.128482 -0.276507 0.095255 +140 0.095255 -0.139477 -0.276507 0.095255 +141 -0.265878 -0.148368 -0.276507 0.095255 +142 -0.276507 -0.166704 -0.290569 0.095255 +143 -0.047703 -0.196669 -0.526592 0.095255 +144 -0.085131 -0.217998 -0.526592 0.095255 +145 -0.214498 -0.234941 -0.526592 0.095255 +146 -0.268655 -0.273155 -0.526592 -0.047703 +147 -0.290569 -0.280459 -0.526592 -0.047703 +148 -0.526592 -0.285590 -0.526592 -0.047703 +149 -0.393161 -0.307341 -0.526592 -0.085131 +150 -0.310915 -0.339192 -0.526592 -0.214498 +151 -0.325097 -0.354743 -0.526592 -0.268655 +152 -0.346220 -0.367337 -0.526592 -0.286961 +153 -0.332948 -0.377433 -0.526592 -0.286961 +154 -0.286961 -0.354838 -0.435497 -0.278055 +155 -0.435497 -0.370171 -0.561824 -0.278055 +156 -0.385559 -0.372834 -0.561824 -0.278055 +157 -0.407186 -0.393722 -0.561824 -0.278055 +158 -0.401623 -0.398478 -0.561824 -0.278055 +159 -0.278055 -0.408078 -0.561824 -0.278055 +160 -0.561824 -0.423210 -0.561824 -0.278055 +161 -0.340208 -0.421919 -0.561824 -0.278055 +162 -0.554862 -0.434708 -0.561824 -0.278055 +163 -0.398533 -0.442767 -0.561824 -0.278055 +164 -0.438554 -0.444981 -0.561824 -0.278055 +165 -0.453409 -0.472421 -0.579896 -0.340208 +166 -0.421298 -0.477334 -0.615870 -0.340208 +167 -0.526235 -0.509042 -0.688995 -0.398533 +168 -0.495838 -0.501550 -0.688995 -0.398533 +169 -0.425973 -0.520922 -0.688995 -0.421298 +170 -0.579896 -0.543189 -0.688995 -0.421298 +171 -0.615870 -0.544872 -0.688995 -0.421298 +172 -0.688995 -0.577052 -0.775276 -0.425973 +173 -0.472446 -0.574803 -0.775276 -0.425973 +174 -0.611628 -0.586334 -0.775276 -0.425973 +175 -0.683487 -0.601934 -0.775276 -0.471926 +176 -0.471926 -0.587823 -0.775276 -0.424672 +177 -0.775276 -0.578534 -0.775276 -0.424672 +178 -0.501492 -0.578457 -0.775276 -0.424672 +179 -0.622688 -0.601616 -0.775276 -0.424672 +180 -0.597569 -0.621130 -0.826283 -0.424672 +181 -0.424672 -0.629181 -0.826283 -0.424672 +182 -0.513689 -0.650887 -0.826283 -0.424672 +183 -0.688150 -0.652745 -0.826283 -0.424672 +184 -0.727199 -0.661308 -0.826283 -0.424672 +185 -0.826283 -0.672896 -0.826283 -0.424672 +186 -0.772049 -0.690263 -0.826283 -0.424672 +187 -0.710693 -0.726533 -0.826283 -0.513689 +188 -0.795709 -0.743671 -0.826283 -0.595689 +189 -0.595689 -0.731770 -0.826283 -0.557230 +190 -0.750152 -0.727697 -0.826283 -0.557230 +191 -0.788610 -0.726249 -0.823638 -0.557230 +192 -0.823638 -0.724487 -0.823638 -0.557230 +193 -0.702214 -0.733764 -0.823638 -0.557230 +194 -0.557230 -0.737635 -0.838294 -0.557230 +195 -0.682397 -0.756428 -0.838294 -0.557230 +196 -0.810356 -0.757483 -0.838294 -0.557230 +197 -0.752668 -0.759971 -0.838294 -0.557230 +198 -0.812736 -0.761852 -0.844320 -0.557230 +199 -0.838294 -0.778260 -0.882704 -0.557230 +200 -0.802410 -0.817732 -0.991420 -0.682397 +201 -0.761760 -0.827119 -0.991420 -0.752668 +202 -0.815982 -0.825164 -0.991420 -0.752668 +203 -0.844320 -0.850678 -1.033319 -0.761760 +204 -0.882704 -0.862307 -1.033319 -0.761760 +205 -0.991420 -0.872446 -1.033319 -0.761760 +206 -0.785662 -0.872866 -1.033319 -0.761760 +207 -0.788845 -0.872533 -1.033319 -0.758096 +208 -1.033319 -0.872601 -1.033319 -0.758096 +209 -0.940656 -0.868199 -1.033319 -0.758096 +210 -0.949828 -0.876235 -1.033319 -0.758096 +211 -0.807033 -0.862975 -1.033319 -0.758096 +212 -0.758096 -0.867137 -1.033319 -0.758096 +213 -0.816724 -0.872040 -1.033319 -0.758096 +214 -0.795898 -0.864847 -0.971106 -0.758096 +215 -0.971106 -0.861147 -0.971106 -0.758096 +216 -0.845553 -0.850714 -0.971106 -0.758096 +217 -0.831449 -0.876233 -1.087741 -0.758096 +218 -0.842777 -0.877849 -1.087741 -0.775880 +219 -0.954197 -0.902982 -1.093179 -0.775880 +220 -0.899959 -0.928549 -1.093179 -0.775880 +221 -0.835059 -0.929045 -1.093179 -0.775880 +222 -1.087741 -0.956690 -1.149651 -0.775880 +223 -0.775880 -0.969676 -1.149651 -0.775880 +224 -1.093179 -1.003608 -1.216028 -0.775880 +225 -1.077135 -1.001921 -1.216028 -0.775880 +226 -0.976567 -1.010555 -1.216028 -0.775880 +227 -1.149651 -1.020282 -1.216028 -0.775880 +228 -0.974288 -1.011217 -1.216028 -0.775880 +229 -1.216028 -1.028403 -1.216028 -0.935649 +230 -0.935649 -1.024209 -1.216028 -0.935649 +231 -0.994929 -1.016980 -1.216028 -0.935649 +232 -0.942055 -1.012394 -1.216028 -0.926118 +233 -0.988027 -0.996471 -1.216028 -0.926118 +234 -0.964923 -0.993783 -1.216028 -0.926118 +235 -1.047043 -0.979457 -1.058450 -0.926118 +236 -0.997623 -0.984896 -1.058450 -0.926118 +237 -0.926118 -0.973823 -1.058450 -0.873130 +238 -0.974504 -1.003161 -1.264770 -0.873130 +239 -0.944710 -1.015226 -1.264770 -0.873130 +240 -1.058450 -1.033069 -1.264770 -0.873130 +241 -0.995472 -1.018962 -1.264770 -0.873130 +242 -0.873130 -1.024768 -1.264770 -0.873130 +243 -1.264770 -1.034703 -1.264770 -0.873130 +244 -1.120740 -1.043031 -1.264770 -0.873130 +245 -1.161201 -1.023714 -1.264770 -0.732230 +246 -0.891866 -1.035942 -1.264770 -0.732230 +247 -1.061490 -1.032799 -1.264770 -0.732230 +248 -1.035404 -1.048014 -1.264770 -0.732230 +249 -1.066105 -1.015013 -1.192959 -0.732230 +250 -0.732230 -0.988437 -1.192959 -0.732230 +251 -1.192959 -0.984767 -1.192959 -0.732230 +252 -0.960893 -1.002046 -1.192959 -0.732230 +253 -1.040500 -0.985397 -1.192959 -0.732230 +254 -0.901760 -0.982775 -1.192959 -0.732230 +255 -0.828404 -0.986986 -1.192959 -0.732230 +256 -1.120830 -1.000430 -1.192959 -0.828404 +257 -1.081925 -0.985363 -1.120830 -0.828404 +258 -0.878353 -0.991121 -1.120830 -0.828404 +259 -1.006563 -0.988908 -1.120830 -0.828404 +260 -1.112423 -0.998128 -1.120830 -0.828404 +261 -0.880114 -1.008961 -1.120830 -0.878353 +262 -1.027231 -0.994331 -1.112423 -0.878353 +263 -1.024224 -0.989539 -1.112423 -0.878353 +264 -1.016162 -1.003086 -1.112423 -0.880114 +265 -1.003174 -0.987079 -1.112423 -0.830495 +266 -0.947576 -0.984044 -1.079038 -0.830495 +267 -0.959896 -0.987848 -1.079038 -0.830495 +268 -1.029208 -0.981803 -1.079038 -0.830495 +269 -1.027370 -0.964468 -1.079038 -0.830495 +270 -0.830495 -0.960914 -1.079038 -0.830495 +271 -1.079038 -0.956894 -1.079038 -0.830495 +272 -0.921950 -0.963892 -1.079038 -0.830495 +273 -0.960735 -0.956820 -1.079038 -0.830495 +274 -0.833545 -0.954237 -1.079038 -0.830495 +275 -0.977067 -0.940472 -1.079038 -0.830495 +276 -0.958951 -0.944069 -1.079038 -0.833545 +277 -1.024561 -0.938022 -1.024561 -0.833545 +278 -0.882098 -0.919679 -1.024561 -0.720185 +279 -1.000801 -0.912088 -1.024561 -0.720185 +280 -0.875947 -0.909022 -1.024561 -0.720185 +281 -0.870066 -0.896914 -1.024561 -0.720185 +282 -1.012517 -0.890325 -1.024561 -0.720185 +283 -0.720185 -0.867328 -1.012517 -0.720185 +284 -0.877230 -0.852374 -1.012517 -0.717609 +285 -0.799814 -0.837617 -1.012517 -0.717609 +286 -0.843888 -0.838205 -1.012517 -0.717609 +287 -0.886468 -0.836749 -1.012517 -0.717609 +288 -0.771593 -0.828138 -0.917799 -0.717609 +289 -0.717609 -0.832601 -0.917799 -0.717609 +290 -0.838467 -0.833825 -0.917799 -0.717609 +291 -0.882423 -0.829501 -0.917799 -0.717609 +292 -0.854040 -0.834043 -0.917799 -0.717609 +293 -0.917799 -0.837622 -0.925833 -0.717609 +294 -0.769278 -0.850230 -0.925833 -0.717609 +295 -0.890701 -0.858097 -0.925833 -0.752249 +296 -0.752249 -0.847150 -0.925833 -0.718054 +297 -0.893852 -0.840316 -0.925833 -0.718054 +298 -0.925833 -0.847871 -0.937142 -0.718054 +299 -0.910285 -0.829060 -0.937142 -0.710878 +300 -0.804142 -0.829250 -0.937142 -0.710878 +301 -0.718054 -0.815351 -0.937142 -0.710878 +302 -0.807248 -0.805137 -0.937142 -0.639902 +303 -0.937142 -0.779022 -0.937142 -0.606577 +304 -0.710878 -0.766921 -0.937142 -0.606577 +305 -0.771371 -0.763344 -0.937142 -0.606577 +306 -0.737806 -0.761042 -0.937142 -0.606577 +307 -0.639902 -0.750893 -0.937142 -0.606425 +308 -0.606577 -0.740345 -0.937142 -0.606425 +309 -0.792721 -0.716246 -0.870945 -0.606425 +310 -0.870945 -0.721344 -0.870945 -0.606425 +311 -0.778812 -0.702106 -0.870945 -0.559753 +312 -0.606425 -0.669779 -0.870945 -0.382213 +313 -0.691215 -0.669660 -0.870945 -0.382213 +314 -0.672057 -0.667048 -0.870945 -0.382213 +315 -0.766952 -0.655691 -0.870945 -0.382213 +316 -0.559753 -0.657687 -0.892897 -0.382213 +317 -0.382213 -0.633918 -0.892897 -0.382213 +318 -0.638585 -0.642290 -0.892897 -0.382213 +319 -0.577856 -0.642953 -0.892897 -0.382213 +320 -0.667793 -0.647248 -0.892897 -0.382213 +321 -0.892897 -0.625084 -0.892897 -0.382213 +322 -0.517349 -0.634317 -0.892897 -0.382213 +323 -0.698519 -0.645092 -0.892897 -0.500739 +324 -0.698515 -0.636347 -0.892897 -0.500739 +325 -0.719300 -0.645738 -0.892897 -0.500739 +326 -0.523150 -0.638422 -0.892897 -0.500739 +327 -0.661314 -0.606323 -0.719300 -0.500739 +328 -0.500739 -0.601895 -0.719300 -0.468642 +329 -0.542385 -0.579661 -0.719300 -0.453948 +330 -0.681154 -0.567629 -0.719300 -0.453948 +331 -0.587320 -0.540919 -0.681154 -0.425489 +332 -0.539802 -0.536216 -0.681154 -0.425489 +333 -0.468642 -0.515872 -0.681154 -0.425489 +334 -0.453948 -0.508943 -0.681154 -0.424515 +335 -0.566167 -0.484997 -0.681154 -0.278983 +336 -0.425489 -0.474857 -0.587320 -0.278983 +337 -0.471413 -0.457795 -0.569606 -0.278983 +338 -0.437536 -0.444811 -0.569606 -0.278983 +339 -0.424515 -0.457290 -0.605908 -0.278983 +340 -0.278983 -0.458643 -0.605908 -0.278983 +341 -0.569606 -0.437657 -0.605908 -0.278983 +342 -0.399645 -0.440066 -0.605908 -0.278983 +343 -0.396978 -0.426797 -0.605908 -0.278983 +344 -0.605908 -0.414464 -0.605908 -0.278983 +345 -0.468828 -0.409242 -0.605908 -0.278983 +346 -0.335322 -0.390093 -0.605908 -0.068347 +347 -0.451991 -0.358057 -0.605908 -0.068347 +348 -0.325454 -0.354020 -0.605908 -0.068347 +349 -0.301874 -0.351934 -0.605908 -0.068347 +350 -0.367069 -0.330921 -0.468828 -0.068347 +351 -0.068347 -0.300187 -0.451991 -0.068347 +352 -0.217207 -0.269653 -0.451991 0.000548 +353 -0.355236 -0.249006 -0.374765 0.000548 +354 -0.374031 -0.227677 -0.374765 0.000548 +355 -0.374765 -0.212222 -0.374765 0.000548 +356 -0.130757 -0.182264 -0.374765 0.000548 +357 0.000548 -0.178046 -0.374765 0.000548 +358 -0.224869 -0.174059 -0.374765 0.000548 +359 -0.090843 -0.148084 -0.374765 0.000548 +360 -0.131869 -0.125299 -0.374765 0.000548 +361 -0.037525 -0.103980 -0.224869 0.000548 +362 -0.021950 -0.089067 -0.224869 0.033278 +363 -0.173351 -0.097219 -0.224869 0.033278 +364 -0.069516 -0.080847 -0.173351 0.033278 +365 -0.123392 -0.083517 -0.173351 0.033278 +366 -0.140251 -0.064638 -0.173351 0.075798 +367 0.033278 -0.066025 -0.173351 0.075798 +368 -0.089119 -0.064113 -0.173351 0.075798 +369 -0.044779 -0.043657 -0.140251 0.075798 +370 -0.120212 -0.050558 -0.145432 0.075798 +371 0.075798 -0.028394 -0.145432 0.120419 +372 -0.052776 -0.020337 -0.145432 0.120419 +373 -0.000922 -0.020633 -0.145432 0.120419 +374 0.051665 -0.000088 -0.145432 0.136882 +375 -0.145432 0.001980 -0.145432 0.136882 +376 0.120419 0.015908 -0.145432 0.136882 +377 -0.051630 0.008839 -0.145432 0.136882 +378 0.030021 0.023415 -0.145432 0.136882 +379 0.136882 0.035997 -0.145432 0.137475 +380 -0.022034 0.044648 -0.145432 0.146824 +381 0.032996 0.085343 -0.051630 0.302213 +382 -0.001956 0.090462 -0.051630 0.302213 +383 0.107561 0.109792 -0.022034 0.302213 +384 0.137475 0.129705 -0.022034 0.302213 +385 0.146824 0.139505 -0.022034 0.302213 +386 0.302213 0.175573 -0.001956 0.374715 +387 0.176725 0.171111 -0.016088 0.374715 +388 0.161005 0.201997 -0.016088 0.374715 +389 0.249059 0.211184 -0.016088 0.374715 +390 0.244685 0.241403 -0.016088 0.469875 +391 0.374715 0.247018 -0.016088 0.469875 +392 -0.016088 0.251853 -0.016088 0.469875 +393 0.337792 0.241875 -0.016088 0.469875 +394 0.208623 0.232960 -0.016088 0.469875 +395 0.469875 0.241472 -0.016088 0.469875 +396 0.208591 0.240708 -0.016088 0.469875 +397 0.355397 0.244141 -0.016088 0.469875 +398 0.066970 0.278441 0.062943 0.469875 +399 0.062943 0.279692 0.062943 0.469875 +400 0.342687 0.279032 0.062943 0.469875 +401 0.236279 0.255171 0.062943 0.412482 +402 0.412482 0.269991 0.062943 0.412482 +403 0.361210 0.271952 0.062943 0.412482 +404 0.351552 0.306849 0.062943 0.450837 +405 0.201364 0.341076 0.201364 0.450837 +406 0.207412 0.346704 0.201364 0.450837 +407 0.371610 0.367105 0.201364 0.460693 +408 0.376968 0.381765 0.201364 0.573741 +409 0.450837 0.399434 0.201364 0.573741 +410 0.439434 0.424286 0.201364 0.624922 +411 0.404595 0.444298 0.207412 0.624922 +412 0.460693 0.485105 0.371610 0.656290 +413 0.573741 0.497219 0.376968 0.656290 +414 0.555574 0.509820 0.404595 0.656290 +415 0.624922 0.508527 0.404595 0.656290 +416 0.421495 0.517763 0.404595 0.656290 +417 0.656290 0.539030 0.421495 0.656290 +418 0.504863 0.547166 0.421495 0.656290 +419 0.515579 0.544754 0.421495 0.656290 +420 0.436605 0.551199 0.421495 0.656290 +421 0.541029 0.544440 0.421495 0.656290 +422 0.638534 0.565228 0.436605 0.656290 +423 0.550194 0.561618 0.436605 0.650163 +424 0.547203 0.578910 0.436605 0.695074 +425 0.626469 0.594819 0.436605 0.695074 +426 0.550578 0.623842 0.541029 0.755863 +427 0.650163 0.638478 0.547203 0.755863 +428 0.616581 0.642307 0.547203 0.755863 +429 0.695074 0.652334 0.547203 0.755863 +430 0.690578 0.675403 0.550578 0.800961 +431 0.755863 0.683917 0.550578 0.800961 +432 0.702018 0.688552 0.601565 0.800961 +433 0.680657 0.692645 0.601565 0.800961 +434 0.660494 0.699567 0.601565 0.800961 +435 0.800961 0.697021 0.601565 0.800961 +436 0.720123 0.692928 0.601565 0.800961 +437 0.601565 0.689701 0.601565 0.800961 +438 0.695184 0.695285 0.601565 0.800961 +439 0.692716 0.710160 0.601565 0.844284 +440 0.667074 0.729648 0.601565 0.874857 +441 0.645554 0.710975 0.595553 0.874857 +442 0.720360 0.712048 0.595553 0.874857 +443 0.763451 0.724493 0.595553 0.874857 +444 0.844284 0.736420 0.595553 0.874857 +445 0.874857 0.755004 0.595553 0.897139 +446 0.595553 0.762285 0.595553 0.897139 +447 0.731929 0.795816 0.595553 1.014397 +448 0.738466 0.816706 0.595553 1.014397 +449 0.826376 0.839172 0.595553 1.014397 +450 0.897139 0.830670 0.595553 1.014397 +451 0.747169 0.831937 0.595553 1.014397 +452 1.014397 0.854478 0.731929 1.014397 +453 0.950147 0.858448 0.738466 1.014397 +454 1.010570 0.884680 0.747169 1.027027 +455 0.750768 0.881842 0.747169 1.027027 +456 0.888789 0.903073 0.747169 1.130677 +457 0.843511 0.905010 0.750768 1.130677 +458 0.775591 0.900443 0.750768 1.130677 +459 1.027027 0.886697 0.750768 1.130677 +460 0.795154 0.860403 0.721338 1.130677 +461 1.130677 0.868329 0.721338 1.130677 +462 0.768480 0.865755 0.721338 1.130677 +463 0.964156 0.862088 0.721338 1.130677 +464 0.798942 0.897826 0.721338 1.168710 +465 0.721338 0.881809 0.721338 1.168710 +466 0.837961 0.904046 0.721338 1.168710 +467 0.860465 0.889841 0.721338 1.168710 +468 0.803176 0.916090 0.721338 1.168710 +469 1.168710 0.921198 0.721338 1.168710 +470 0.850845 0.930022 0.721338 1.168710 +471 1.039756 0.936404 0.791537 1.168710 +472 0.974419 0.937972 0.791537 1.168710 +473 1.057222 0.954304 0.791537 1.168710 +474 1.020342 0.958065 0.791537 1.168710 +475 0.896010 0.945502 0.791537 1.057222 +476 0.791537 0.953835 0.791537 1.057222 +477 0.855209 0.948894 0.791537 1.057222 +478 1.040122 0.957838 0.791537 1.072795 +479 0.844547 0.950386 0.791537 1.072795 +480 1.030517 0.941772 0.791537 1.072795 +481 0.942499 0.945536 0.791537 1.072795 +482 0.985416 0.964838 0.844547 1.072795 +483 1.072795 0.972638 0.844547 1.072795 +484 0.975258 0.961047 0.844547 1.072795 +485 0.925586 0.967626 0.912619 1.072795 +486 0.937410 0.955375 0.895759 1.072795 +487 1.003865 0.970752 0.895759 1.111650 +488 0.941008 0.961434 0.882914 1.111650 +489 0.912619 0.959662 0.882914 1.111650 +490 0.916911 0.964683 0.882914 1.111650 +491 0.895759 0.982988 0.882914 1.126942 +492 1.111650 0.989781 0.882914 1.126942 +493 0.882914 0.997853 0.882914 1.126942 +494 1.053305 1.006621 0.882914 1.126942 +495 1.030481 1.017970 0.882914 1.126942 +496 1.126942 1.028928 0.882914 1.126942 +497 1.012136 1.041810 0.882914 1.126942 +498 1.092656 1.035065 0.882914 1.126942 +499 1.037457 1.049115 1.012136 1.126942 diff --git a/gsl-2.5/doc/examples/movstat2 b/gsl-2.5/doc/examples/movstat2 new file mode 100755 index 00000000..cc169c81 --- /dev/null +++ b/gsl-2.5/doc/examples/movstat2 @@ -0,0 +1,228 @@ +#! /bin/sh + +# movstat2 - temporary wrapper script for .libs/movstat2 +# Generated by libtool (GNU libtool) 2.4.2 +# +# The movstat2 program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s/\([`"$\\]\)/\\\1/g' + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command="(cd /home/groups/kipac/chto/package/gsl/gsl-2.5/doc/examples; LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LIBRARY_PATH; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; LD_LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/fftw/include:/home/users/chto/lib/fftw/lib:/home/users/chto/lib/healpix/lib:/home/users/chto/lib/namaster/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/include:/home/users/chto/cpp/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LD_LIBRARY_PATH; PATH=/share/software/user/open/curl/7.54.0/bin:/share/software/user/open/libressl/2.5.3/bin:/home/users/chto/lib/cfitsio:/home/users/chto/lib/cfitsio/include:/home/users/chto/lib:/home/users/chto/bin/bin:/home/users/chto/bin:/home/users/chto/.texlive/bin/x86_64-linux:/home/groups/kipac/chto/anaconda2/envs/newenv3/bin:/home/users/chto/.local/bin/include:/home/users/chto/.local/bin/lib:/home/users/chto/.local/bin:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/bin64:/share/software/user/open/fftw/3.3.6/bin:/home/groups/kipac/chto/anaconda2/condabin:/share/software/user/restricted/ifort/2019/bin:/share/software/user/open/gsl/2.3/bin:/share/software/user/srcc/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/dell/srvadmin/bin:/opt/dell/srvadmin/iSM/bin:/home/users/chto/bin; export PATH; gcc -g -O2 -o \$progdir/\$file movstat2.o ../../.libs/libgsl.so ../../cblas/.libs/libgslcblas.so -lm -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/.libs -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/cblas/.libs -Wl,-rpath -Wl,/usr/local/lib)" + +# This environment variable determines our operation mode. +if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then + # install mode needs the following variables: + generated_by_libtool_version='2.4.2' + notinst_deplibs=' ../../libgsl.la ../../cblas/libgslcblas.la' +else + # When we are sourced in execute mode, $file and $ECHO are already set. + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + file="$0" + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + ECHO="printf %s\\n" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ which is used only on +# windows platforms, and (c) all begin with the string --lt- +# (application programs are unlikely to have options which match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's ../../libtool value, followed by no. +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=$0 + shift + for lt_opt + do + case "$lt_opt" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%/[^/]*$%%'` + test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=. + lt_dump_F=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%^.*/%%'` + cat "$lt_dump_D/$lt_dump_F" + exit 0 + ;; + --lt-*) + $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n "$lt_option_debug"; then + echo "movstat2:movstat2:${LINENO}: libtool wrapper (GNU libtool) 2.4.2" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + $ECHO "movstat2:movstat2:${LINENO}: newargv[$lt_dump_args_N]: $lt_arg" + lt_dump_args_N=`expr $lt_dump_args_N + 1` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ + + if test -n "$lt_option_debug"; then + $ECHO "movstat2:movstat2:${LINENO}: newargv[0]: $progdir/$program" 1>&2 + func_lt_dump_args ${1+"$@"} 1>&2 + fi + exec "$progdir/$program" ${1+"$@"} + + $ECHO "$0: cannot exec $program $*" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from $@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case " $* " in + *\ --lt-*) + for lt_wr_arg + do + case $lt_wr_arg in + --lt-*) ;; + *) set x "$@" "$lt_wr_arg"; shift;; + esac + shift + done ;; + esac + func_exec_program_core ${1+"$@"} +} + + # Parse options + func_parse_lt_options "$0" ${1+"$@"} + + # Find the directory that this script lives in. + thisdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + test "x$thisdir" = "x$file" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=`ls -ld "$file" | /usr/bin/sed -n 's/.*-> //p'` + while test -n "$file"; do + destdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + + # If there was a directory component, then change thisdir. + if test "x$destdir" != "x$file"; then + case "$destdir" in + [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;; + *) thisdir="$thisdir/$destdir" ;; + esac + fi + + file=`$ECHO "$file" | /usr/bin/sed 's%^.*/%%'` + file=`ls -ld "$thisdir/$file" | /usr/bin/sed -n 's/.*-> //p'` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no + if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then + # special case for '.' + if test "$thisdir" = "."; then + thisdir=`pwd` + fi + # remove .libs from thisdir + case "$thisdir" in + *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /usr/bin/sed 's%[\\/][^\\/]*$%%'` ;; + .libs ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=`cd "$thisdir" && pwd` + test -n "$absdir" && thisdir="$absdir" + + program=lt-'movstat2' + progdir="$thisdir/.libs" + + if test ! -f "$progdir/$program" || + { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /usr/bin/sed 1q`; \ + test "X$file" != "X$progdir/$program"; }; then + + file="$$-$program" + + if test ! -d "$progdir"; then + mkdir "$progdir" + else + rm -f "$progdir/$file" + fi + + # relink executable if necessary + if test -n "$relink_command"; then + if relink_command_output=`eval $relink_command 2>&1`; then : + else + printf %s\n "$relink_command_output" >&2 + rm -f "$progdir/$file" + exit 1 + fi + fi + + mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null || + { rm -f "$progdir/$program"; + mv -f "$progdir/$file" "$progdir/$program"; } + rm -f "$progdir/$file" + fi + + if test -f "$progdir/$program"; then + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + # Run the actual program with our arguments. + func_exec_program ${1+"$@"} + fi + else + # The program doesn't exist. + $ECHO "$0: error: \`$progdir/$program' does not exist" 1>&2 + $ECHO "This script is just a wrapper for $program." 1>&2 + $ECHO "See the libtool documentation for more information." 1>&2 + exit 1 + fi +fi diff --git a/gsl-2.5/doc/examples/movstat2.c b/gsl-2.5/doc/examples/movstat2.c new file mode 100644 index 00000000..bc841b1d --- /dev/null +++ b/gsl-2.5/doc/examples/movstat2.c @@ -0,0 +1,81 @@ +#include +#include + +#include +#include +#include +#include +#include + +int +main(void) +{ + const size_t N = 1000; /* length of time series */ + const double sigma[] = { 1.0, 5.0, 1.0, 3.0, 5.0 }; /* variances */ + const size_t N_sigma[] = { 200, 450, 600, 850, 1000 }; /* samples where variance changes */ + const size_t K = 41; /* window size */ + gsl_vector *x = gsl_vector_alloc(N); + gsl_vector *xmedian = gsl_vector_alloc(N); + gsl_vector *xmad = gsl_vector_alloc(N); + gsl_vector *xiqr = gsl_vector_alloc(N); + gsl_vector *xSn = gsl_vector_alloc(N); + gsl_vector *xQn = gsl_vector_alloc(N); + gsl_vector *xsd = gsl_vector_alloc(N); + gsl_rng *r = gsl_rng_alloc(gsl_rng_default); + gsl_movstat_workspace * w = gsl_movstat_alloc(K); + size_t idx = 0; + size_t i; + + for (i = 0; i < N; ++i) + { + double gi = gsl_ran_gaussian(r, sigma[idx]); + double u = gsl_rng_uniform(r); + double outlier = (u < 0.01) ? 15.0*GSL_SIGN(gi) : 0.0; + double xi = gi + outlier; + + gsl_vector_set(x, i, xi); + + if (i == N_sigma[idx] - 1) + ++idx; + } + + /* compute moving statistics */ + gsl_movstat_mad(GSL_MOVSTAT_END_TRUNCATE, x, xmedian, xmad, w); + gsl_movstat_qqr(GSL_MOVSTAT_END_TRUNCATE, x, 0.25, xiqr, w); + gsl_movstat_Sn(GSL_MOVSTAT_END_TRUNCATE, x, xSn, w); + gsl_movstat_Qn(GSL_MOVSTAT_END_TRUNCATE, x, xQn, w); + gsl_movstat_sd(GSL_MOVSTAT_END_TRUNCATE, x, xsd, w); + + /* scale IQR by factor to approximate standard deviation */ + gsl_vector_scale(xiqr, 0.7413); + + /* print results */ + idx = 0; + for (i = 0; i < N; ++i) + { + printf("%zu %f %f %f %f %f %f %f\n", + i, + gsl_vector_get(x, i), + sigma[idx], + gsl_vector_get(xmad, i), + gsl_vector_get(xiqr, i), + gsl_vector_get(xSn, i), + gsl_vector_get(xQn, i), + gsl_vector_get(xsd, i)); + + if (i == N_sigma[idx] - 1) + ++idx; + } + + gsl_vector_free(x); + gsl_vector_free(xmedian); + gsl_vector_free(xmad); + gsl_vector_free(xiqr); + gsl_vector_free(xSn); + gsl_vector_free(xQn); + gsl_vector_free(xsd); + gsl_rng_free(r); + gsl_movstat_free(w); + + return 0; +} diff --git a/gsl-2.5/doc/examples/movstat2.txt b/gsl-2.5/doc/examples/movstat2.txt new file mode 100644 index 00000000..2cb78550 --- /dev/null +++ b/gsl-2.5/doc/examples/movstat2.txt @@ -0,0 +1,1000 @@ +0 0.133919 1.000000 0.634780 0.572247 0.808577 0.746831 0.911713 +1 0.594129 1.000000 0.761385 0.586651 0.842338 0.851958 0.932072 +2 1.674408 1.000000 0.634780 0.565628 0.805441 0.786105 0.911598 +3 -1.286970 1.000000 0.624178 0.616265 0.818638 0.793885 0.913578 +4 -1.277502 1.000000 0.732107 0.607673 0.845620 0.853599 0.904846 +5 -1.339936 1.000000 0.901014 0.815512 0.899332 0.892324 0.915826 +6 -0.039091 1.000000 0.914039 0.882875 0.973002 0.931867 0.909640 +7 0.114046 1.000000 1.004368 0.939272 0.955987 0.962021 0.936883 +8 -0.017648 1.000000 0.938813 0.913400 0.994361 0.989223 0.948653 +9 -0.572385 1.000000 1.004368 0.948380 0.977622 0.975446 0.940535 +10 0.181709 1.000000 1.013403 0.967178 1.006853 0.996549 0.932949 +11 1.385318 1.000000 1.041662 0.991152 1.002304 0.976706 0.933625 +12 -0.638032 1.000000 1.006429 1.041661 1.007452 0.991973 0.929606 +13 -1.465648 1.000000 1.097440 1.033083 1.002304 0.982959 0.931635 +14 -0.827762 1.000000 1.006429 1.012117 0.991703 0.982032 0.919095 +15 -0.246354 1.000000 1.009916 0.991152 0.924432 0.966532 0.909800 +16 -0.289493 1.000000 0.937596 0.970187 0.923188 0.958141 0.897614 +17 -0.224180 1.000000 0.972012 0.992435 0.924432 0.980047 0.956973 +18 0.064615 1.000000 1.006429 0.992038 0.945551 1.001505 0.950711 +19 1.706591 1.000000 1.009916 0.967227 0.940569 0.975836 0.938556 +20 -0.144233 1.000000 1.013403 0.942416 0.961679 0.974183 0.927016 +21 1.182820 1.000000 1.014380 0.970187 0.976290 1.003298 0.943637 +22 -0.260697 1.000000 0.937596 0.942416 0.919517 0.967429 0.937187 +23 -1.045894 1.000000 0.894872 0.844759 0.844112 0.910789 0.891896 +24 0.577419 1.000000 0.751925 0.826354 0.833473 0.862953 0.875977 +25 1.088576 1.000000 0.715114 0.775585 0.819886 0.829490 0.859125 +26 0.715002 1.000000 0.792076 0.734255 0.813865 0.798872 0.840971 +27 -1.515063 1.000000 0.792076 0.734255 0.813865 0.798872 0.840949 +28 1.182771 1.000000 0.828887 0.824578 0.827717 0.847499 0.849113 +29 -0.706517 1.000000 0.894872 0.873242 0.831686 0.872197 0.863533 +30 -0.731346 1.000000 0.875302 0.901013 0.843749 0.922323 0.887804 +31 -1.034345 1.000000 0.875302 0.901013 0.843749 0.940883 0.888084 +32 -0.903006 1.000000 0.894872 0.924011 0.831686 0.915578 0.864894 +33 0.889186 1.000000 0.937596 0.942416 0.844140 0.984041 2.751313 +34 -0.375367 1.000000 0.935885 0.951782 0.909712 0.979339 2.764234 +35 0.408219 1.000000 0.870455 0.828989 0.887733 0.953368 2.764266 +36 -0.273845 1.000000 0.962290 0.909833 0.947194 1.003298 2.785699 +37 -2.328102 1.000000 0.989562 0.909833 0.940293 1.007373 2.787434 +38 0.539956 1.000000 1.022690 0.909833 0.970569 1.027996 2.791884 +39 -0.039068 1.000000 1.047520 1.032626 0.996669 1.055270 2.794225 +40 0.013851 1.000000 1.026373 1.018540 0.955638 1.007373 2.777936 +41 1.028263 1.000000 1.047520 1.036945 0.987347 1.042200 2.781737 +42 -0.237378 1.000000 0.999101 0.970187 0.975734 1.007373 2.770074 +43 -0.172270 1.000000 1.074792 1.023686 0.993536 1.022731 2.771019 +44 -0.540872 1.000000 0.999101 0.970187 0.975734 1.005811 2.769515 +45 -0.490678 1.000000 0.939346 0.995915 0.992322 1.000660 2.764966 +46 0.418112 1.000000 0.986861 0.934728 1.061442 1.022731 2.759020 +47 -0.057463 1.000000 0.986861 0.934728 1.061442 1.033751 2.762056 +48 0.686476 1.000000 0.939346 0.995915 0.992322 1.022731 2.770365 +49 -1.084243 1.000000 0.939346 0.986549 0.978580 1.005811 2.762342 +50 1.316748 1.000000 0.999101 0.986549 0.962601 1.007373 2.763825 +51 0.220587 1.000000 0.858462 0.986549 0.947194 1.003500 2.765904 +52 -0.803515 1.000000 0.851570 0.855353 0.906389 0.980266 2.768981 +53 -16.826706 1.000000 0.822434 0.801218 0.895637 0.955649 2.770614 +54 1.496198 1.000000 0.780004 0.791852 0.884705 0.943552 2.766481 +55 -0.003318 1.000000 0.780004 0.791852 0.841112 0.934656 2.767213 +56 1.800935 1.000000 0.822434 0.801218 0.884705 0.996285 2.793084 +57 0.272243 1.000000 0.851705 0.824274 0.991485 1.040969 2.825814 +58 0.667474 1.000000 0.851705 0.824274 0.963355 1.015499 2.811598 +59 -1.167809 1.000000 0.826116 0.824274 0.895637 1.000660 2.809012 +60 0.455081 1.000000 0.826116 0.824274 0.917388 1.005811 2.808804 +61 -1.353985 1.000000 0.840365 0.824274 0.963639 1.016996 2.808428 +62 -0.613899 1.000000 0.848375 0.845987 1.001663 1.015499 2.802740 +63 -0.968935 1.000000 0.916455 0.878409 1.001663 1.016996 2.807617 +64 -0.462268 1.000000 0.893827 0.878409 0.963639 1.016996 2.808621 +65 -0.805850 1.000000 0.893827 1.018971 1.001663 1.005811 2.810159 +66 -1.669557 1.000000 0.835189 1.018971 0.919256 0.981250 2.812080 +67 0.955392 1.000000 0.953499 1.090444 1.011756 1.020490 2.821579 +68 1.155739 1.000000 0.953499 1.090444 1.011756 1.035414 2.821388 +69 0.527321 1.000000 0.900067 1.018971 1.011756 1.023422 2.817582 +70 0.112199 1.000000 0.835189 0.878409 0.998036 0.993358 2.816845 +71 0.249406 1.000000 0.835189 0.878409 0.919256 0.981445 2.812003 +72 0.571058 1.000000 0.851705 0.878409 0.986470 0.997608 2.810899 +73 0.369879 1.000000 0.851705 0.878409 0.986470 1.003898 2.812401 +74 0.463358 1.000000 0.835189 0.837477 0.974701 0.986197 0.969756 +75 0.004240 1.000000 0.851705 0.878409 0.964608 0.964104 0.954479 +76 2.149705 1.000000 0.835189 0.879648 0.974701 0.964104 0.957241 +77 2.393308 1.000000 0.823252 0.878409 0.935121 0.915411 0.919993 +78 -1.280724 1.000000 0.823252 0.878409 0.935121 0.921353 0.919612 +79 -0.001162 1.000000 0.813205 0.869530 0.933139 0.915411 0.920612 +80 -0.382469 1.000000 0.733395 0.845987 0.945214 0.880601 0.903238 +81 -0.366381 1.000000 0.813205 0.869530 0.933139 0.905382 0.913601 +82 -1.048282 1.000000 0.733395 0.845987 0.961340 0.862525 0.888996 +83 0.719285 1.000000 0.811337 0.766004 0.961340 0.906725 0.908871 +84 0.180858 1.000000 0.811337 0.766004 0.961340 0.887721 0.900477 +85 -0.945417 1.000000 0.806927 0.706849 0.856607 0.874078 0.895459 +86 0.371411 1.000000 0.824981 0.696163 0.894144 0.880746 0.906899 +87 1.336323 1.000000 0.824981 0.696163 0.868543 0.862525 0.879876 +88 -0.363406 1.000000 0.806927 0.706849 0.961340 0.880746 0.962966 +89 0.024232 1.000000 0.806927 0.706849 0.986470 0.896215 0.989880 +90 0.407580 1.000000 0.709543 0.706849 0.974701 0.897554 0.989059 +91 0.924530 1.000000 0.811337 0.708089 1.021867 0.986197 1.013604 +92 -0.335992 1.000000 0.947584 0.902700 1.033113 0.993358 1.022123 +93 -1.065908 1.000000 0.993182 0.903192 1.031373 0.981805 1.029552 +94 1.315714 1.000000 0.976282 0.903192 1.031373 0.954886 1.028894 +95 -0.723670 1.000000 0.976282 0.903192 1.039481 0.989289 1.029767 +96 0.572730 1.000000 1.030487 1.011833 1.040474 1.048340 1.038201 +97 -0.311810 1.000000 0.993182 0.903192 1.025245 0.948526 0.987965 +98 0.193035 1.000000 0.992199 0.889324 0.980151 0.874459 0.917902 +99 -0.645659 1.000000 0.730301 0.888833 0.995759 0.845335 0.894647 +100 0.489070 1.000000 0.730301 0.888833 0.995759 0.860992 0.895874 +101 -0.912479 1.000000 0.850541 0.888833 0.995759 0.862411 0.897471 +102 0.504810 1.000000 0.850541 0.888833 0.995759 0.874459 0.898461 +103 1.493974 1.000000 0.921514 0.790420 0.976565 0.880601 0.895020 +104 -0.644996 1.000000 0.999852 0.790420 0.988788 0.895750 0.899506 +105 0.080149 1.000000 0.850541 0.790420 0.988788 0.897169 0.900195 +106 1.513680 1.000000 0.772203 0.751251 0.976565 0.887574 0.887050 +107 -1.056364 1.000000 0.772203 0.751251 0.931100 0.880746 0.886311 +108 -2.415729 1.000000 0.785469 0.776552 0.932787 0.896344 0.908634 +109 1.913067 1.000000 0.850541 0.790420 0.928780 0.898312 0.911728 +110 -0.134006 1.000000 0.867004 0.790420 0.968049 0.898684 0.912953 +111 1.560086 1.000000 0.948325 0.902700 0.997878 0.957183 0.971343 +112 -0.673723 1.000000 0.830105 0.888833 0.988788 0.908120 0.961586 +113 -0.757723 1.000000 0.948325 0.902700 1.024635 1.018413 1.011598 +114 0.012833 1.000000 0.948325 0.902700 1.024635 1.008893 1.004640 +115 0.554023 1.000000 0.830105 0.888833 0.974090 0.948227 0.984805 +116 0.969076 1.000000 0.850541 0.790420 0.993825 0.974084 0.994552 +117 0.375053 1.000000 0.948325 0.899432 0.997878 1.008893 1.007153 +118 0.321502 1.000000 1.075102 1.011712 1.159322 1.033102 1.014558 +119 0.412501 1.000000 0.976282 1.011712 1.084628 1.018413 1.016412 +120 -0.226119 1.000000 1.075102 1.019061 1.087173 1.033102 1.017086 +121 -0.493532 1.000000 1.017889 1.019061 1.084628 1.013358 1.019450 +122 -0.440694 1.000000 0.975298 1.005614 1.024635 0.992813 1.007760 +123 1.137429 1.000000 0.983407 1.019061 1.084628 1.044047 1.054007 +124 0.948226 1.000000 0.940815 0.899432 0.932787 0.989613 1.028517 +125 -0.098573 1.000000 0.983407 0.899432 1.041084 1.039852 1.070832 +126 -0.340550 1.000000 0.977257 1.033008 1.093148 1.125720 1.094564 +127 0.091253 1.000000 0.953264 0.972397 1.093148 1.111274 1.102403 +128 -1.673461 1.000000 0.953264 0.972397 1.118139 1.103869 1.120081 +129 0.719785 1.000000 0.932019 0.910128 1.084628 1.033102 1.059777 +130 0.398546 1.000000 0.891350 0.850800 0.993825 0.989613 1.014061 +131 -2.058964 1.000000 0.868815 0.850800 1.007764 1.002214 1.016375 +132 -0.221386 1.000000 0.868815 0.850800 1.007764 0.988137 1.006077 +133 2.059246 1.000000 0.868815 0.850800 1.007764 0.948213 1.003151 +134 -0.783959 1.000000 0.898645 0.855254 1.084628 0.949440 1.015792 +135 -0.010426 1.000000 0.960558 0.978133 1.109619 1.002214 1.030059 +136 1.246201 1.000000 0.960558 1.018730 1.118139 0.988137 1.034131 +137 1.208516 1.000000 0.960558 0.978133 1.109619 0.968823 1.024990 +138 -0.776972 1.000000 0.969790 1.018730 1.118139 0.963562 1.036711 +139 -0.314893 1.000000 0.889504 1.113693 1.147632 0.961287 1.039220 +140 0.881162 1.000000 1.056337 1.192725 1.213913 0.994310 1.073273 +141 -0.475392 1.000000 0.970917 1.192725 1.191793 1.000106 1.073040 +142 -0.187461 1.000000 1.258537 1.198219 1.213913 1.071636 1.086984 +143 -1.914903 1.000000 1.258537 1.198219 1.213913 1.071636 1.086002 +144 0.075505 1.000000 1.345084 1.150143 1.214410 1.086597 1.103572 +145 -1.990580 1.000000 1.057369 1.109546 1.067205 1.063068 1.088914 +146 -1.470919 1.000000 1.057369 1.109546 1.153104 1.090701 1.091951 +147 -1.902030 1.000000 1.345084 1.150143 1.213913 1.128318 1.110274 +148 -1.693956 1.000000 1.345084 1.150143 1.213913 1.125720 1.109612 +149 -0.129086 1.000000 0.970917 1.119186 1.293248 1.106648 1.085023 +150 -0.735212 1.000000 1.056337 1.150143 1.303892 1.171344 2.651855 +151 -0.599698 1.000000 1.057369 1.150143 1.195968 1.169232 2.648025 +152 1.300405 1.000000 0.884370 1.119186 1.109619 1.111274 2.638670 +153 -0.299204 1.000000 1.056337 1.150143 1.178096 1.169856 2.645304 +154 1.035069 1.000000 0.884370 0.965173 1.109619 1.096684 2.614401 +155 0.975320 1.000000 0.925674 0.934216 1.069006 1.030642 2.614966 +156 0.774549 1.000000 1.056337 0.965173 1.118139 1.105160 2.615599 +157 0.525028 1.000000 0.874011 0.824111 1.069006 1.096684 2.603500 +158 0.992704 1.000000 0.811066 0.820110 0.979526 1.070511 2.587245 +159 -0.727802 1.000000 0.801111 0.789154 1.059970 1.052355 2.591621 +160 1.671102 1.000000 0.863761 0.793154 1.173043 1.122667 2.642193 +161 -0.090324 1.000000 0.852774 0.789154 1.059970 1.096684 2.633997 +162 -1.260789 1.000000 0.887658 0.793154 1.154410 1.100049 2.638234 +163 -0.275838 1.000000 0.887658 0.793154 1.154410 1.098172 2.637971 +164 -1.911296 1.000000 0.919529 0.827078 1.154410 1.111274 2.651606 +165 -0.188156 1.000000 0.887658 0.827078 1.154410 1.122667 2.650210 +166 0.329342 1.000000 0.919529 0.917858 1.154410 1.117701 2.651070 +167 1.110349 1.000000 0.923396 1.035263 1.155203 1.133913 2.677685 +168 -0.107589 1.000000 1.029720 1.167561 1.155203 1.118189 2.674187 +169 0.325378 1.000000 1.029720 1.167561 1.154410 1.098172 2.665319 +170 -15.647560 1.000000 1.029720 1.167561 1.154410 1.098172 2.665329 +171 -0.713145 1.000000 1.102100 1.120465 1.155203 1.106648 2.670217 +172 0.141477 1.000000 1.131935 0.957238 1.155203 1.090701 2.669896 +173 -1.717268 1.000000 0.968429 0.956236 1.093226 1.042184 2.659742 +174 -0.018610 1.000000 1.131935 0.971221 1.155203 1.090701 2.671078 +175 -0.152614 1.000000 1.102100 1.105480 1.154410 1.106773 2.671900 +176 -1.235812 1.000000 0.894589 0.971634 1.049746 1.059605 2.665282 +177 0.334738 1.000000 0.894589 0.880272 1.049150 1.059605 2.664174 +178 -0.622001 1.000000 0.889371 0.880272 0.970274 1.021298 2.661407 +179 0.324728 1.000000 0.788265 0.748648 0.970274 1.029574 2.663541 +180 2.677702 1.000000 0.788265 0.748648 1.049150 1.080184 2.703795 +181 0.031194 1.000000 0.788265 0.748648 0.980272 1.030642 2.688135 +182 0.387911 1.000000 0.897799 0.816213 1.050539 1.118189 2.765993 +183 -0.273757 1.000000 0.897799 0.816213 1.055372 1.135571 2.836766 +184 1.696227 1.000000 0.998434 0.945426 1.160036 1.247624 2.858211 +185 -0.536167 1.000000 0.993216 0.943901 1.160036 1.231895 2.869043 +186 1.165979 1.000000 1.103559 1.169109 1.266341 1.326080 2.913577 +187 2.272367 1.000000 1.137498 1.279095 1.294253 1.432352 3.072539 +188 1.103474 1.000000 1.137498 1.279095 1.294253 1.496162 3.342283 +189 -0.736036 1.000000 1.301004 1.325430 1.498434 1.663867 3.379302 +190 -0.315977 1.000000 1.589765 1.392995 1.679350 1.876527 3.410838 +191 0.955105 1.000000 1.589765 1.392995 1.679350 1.840987 2.490017 +192 0.173718 1.000000 1.518929 1.484734 1.755566 2.023496 2.566998 +193 -0.334839 1.000000 1.878466 1.569269 1.869889 2.237125 2.970150 +194 1.380878 1.000000 1.878466 1.569269 2.062122 2.258532 3.049667 +195 -1.482407 1.000000 2.081312 1.715055 2.190484 2.420870 3.218398 +196 -0.022129 1.000000 2.081312 1.715055 2.257412 2.425033 3.220501 +197 0.651304 1.000000 2.063892 1.715055 2.257412 2.425033 3.220319 +198 -0.118530 1.000000 2.081312 1.764171 2.338202 2.596382 3.260310 +199 -1.750304 1.000000 2.033388 1.803037 2.581295 2.773204 3.320026 +200 -3.323619 5.000000 2.381455 2.230130 2.907379 3.026913 3.425691 +201 0.562217 5.000000 2.381455 2.230130 2.907379 3.075772 3.455961 +202 -4.614241 5.000000 2.772937 2.587673 3.169419 3.364469 3.652797 +203 -4.612867 5.000000 2.455375 2.713210 3.375916 3.458025 3.662293 +204 1.643797 5.000000 2.890957 2.713210 3.375916 3.458025 3.661587 +205 1.577542 5.000000 2.852559 2.783414 3.491394 3.616436 3.868408 +206 2.775860 5.000000 3.281952 3.156654 3.661902 3.774702 3.968982 +207 5.865571 5.000000 3.428549 3.393494 3.811989 4.114441 4.232382 +208 8.234119 5.000000 3.428549 3.393494 3.767490 3.998191 4.222691 +209 3.095353 5.000000 3.428549 3.393494 3.767490 3.998191 4.221204 +210 -3.013602 5.000000 3.755633 3.592086 3.918902 4.372677 4.725675 +211 -5.291502 5.000000 3.755402 3.592086 4.122688 4.576830 4.743418 +212 4.263975 5.000000 4.176478 4.528569 4.193060 4.794995 4.796623 +213 -9.292755 5.000000 4.176247 4.528569 4.193060 4.871193 4.811104 +214 -4.697274 5.000000 4.162337 4.528569 4.242076 4.794995 4.828620 +215 6.553692 5.000000 5.231606 4.738991 4.582639 5.000304 4.899242 +216 -0.662860 5.000000 5.231606 4.738991 4.571658 4.945563 4.891604 +217 -1.218356 5.000000 5.269586 5.273625 4.760161 4.945563 4.929741 +218 3.379209 5.000000 5.315659 5.273625 4.800042 5.021326 4.936126 +219 4.311424 5.000000 4.987390 5.351584 5.006539 5.000304 4.990401 +220 5.717484 5.000000 4.219000 5.351584 4.864391 4.879123 4.982976 +221 4.100420 5.000000 4.145204 4.146305 4.864391 4.794995 4.945355 +222 -7.098843 5.000000 4.243435 4.146305 4.816507 4.782220 4.951947 +223 -1.387704 5.000000 3.918867 4.100949 4.755502 4.610035 4.915036 +224 0.571755 5.000000 3.857478 4.064052 4.302735 4.190221 4.835901 +225 -7.875097 5.000000 3.918867 4.100949 4.688771 4.589972 4.888980 +226 5.778979 5.000000 4.623493 4.189589 4.787967 4.713386 5.070206 +227 9.640863 5.000000 4.681058 4.224764 5.069979 5.021326 5.261907 +228 0.900031 5.000000 5.057739 5.394868 5.320686 5.246220 5.527964 +229 0.562373 5.000000 5.387654 5.351584 4.970126 5.021326 5.387885 +230 -13.260275 5.000000 5.387654 5.351584 4.919430 4.996126 5.369747 +231 2.718149 5.000000 5.301086 4.260697 4.919430 4.966821 5.353048 +232 -4.529446 5.000000 5.145167 4.146305 4.800042 4.652996 5.281081 +233 2.387767 5.000000 4.162337 4.068346 4.603683 4.644887 5.246485 +234 2.721147 5.000000 4.075898 3.979706 4.468489 4.520211 5.043787 +235 5.555074 5.000000 3.780652 3.979706 4.442412 4.399273 4.990713 +236 0.200443 5.000000 3.694213 3.542148 4.550858 4.405824 5.008626 +237 4.205586 5.000000 3.694213 3.542148 4.550858 4.405824 5.007600 +238 -1.268130 5.000000 3.694213 3.542148 4.550858 4.385338 5.004178 +239 5.057468 5.000000 3.694213 4.068346 4.603683 4.463309 5.063598 +240 1.938970 5.000000 3.694213 4.068346 4.603683 4.596383 5.129349 +241 0.024430 5.000000 3.694213 4.068346 4.603683 4.589972 5.109072 +242 2.260724 5.000000 3.200603 3.542148 4.448770 4.500147 5.079116 +243 4.582206 5.000000 3.200603 3.542148 4.448770 4.534378 5.258559 +244 0.630058 5.000000 3.694213 4.057666 4.679094 4.628659 5.349815 +245 -3.644809 5.000000 4.193120 4.260697 4.883738 5.002537 5.404640 +246 -7.761540 5.000000 3.780652 4.057666 4.636933 4.644887 5.249803 +247 9.875363 5.000000 3.680303 3.656540 4.636933 4.893271 5.311000 +248 -11.306466 5.000000 3.483934 3.160282 4.170773 4.598910 5.089286 +249 -1.032675 5.000000 3.488380 3.656540 4.636933 4.879310 5.236676 +250 1.054487 5.000000 4.729718 3.936705 5.098362 5.384008 5.358965 +251 -1.542016 5.000000 3.737201 3.656540 4.636933 4.964392 4.932118 +252 0.368271 5.000000 3.998158 3.656540 4.622022 4.847064 4.915745 +253 -1.002730 5.000000 3.737201 4.057666 4.636933 4.644887 4.918690 +254 3.390589 5.000000 4.990675 4.260697 4.705442 4.879310 4.957943 +255 -1.919953 5.000000 4.990675 4.260697 4.622022 4.534378 4.940991 +256 -6.303733 5.000000 4.835284 3.936705 4.688771 4.651672 4.912625 +257 -0.399922 5.000000 5.595413 4.540862 4.918525 4.966821 4.959404 +258 -0.643083 5.000000 4.835284 3.936705 4.893415 4.857668 4.917188 +259 6.080277 5.000000 4.990675 3.936705 4.622022 4.831081 4.918276 +260 6.874898 5.000000 3.315534 3.099136 3.873154 4.603781 4.855329 +261 4.871720 5.000000 4.990675 3.936705 4.622022 4.644887 4.931465 +262 -1.156272 5.000000 5.328340 4.167394 5.001482 4.963970 4.966330 +263 -11.091105 5.000000 5.595413 5.260739 5.019805 5.041774 4.981375 +264 6.681987 5.000000 5.619820 5.215340 5.019805 5.229324 5.224911 +265 -4.581508 5.000000 5.334633 5.636815 5.269179 5.575973 5.253475 +266 1.527410 5.000000 5.695144 5.867504 5.586700 5.738940 5.535770 +267 -7.188982 5.000000 5.695144 5.867504 5.586700 5.691624 5.443611 +268 -0.754286 5.000000 5.385009 5.657474 5.586700 5.661132 5.452097 +269 7.822788 5.000000 5.385009 5.657474 5.303160 5.474633 5.263990 +270 -7.271588 5.000000 5.385009 5.657474 5.303781 5.712579 5.294837 +271 -0.647836 5.000000 5.702634 5.657474 5.303781 5.770878 5.322557 +272 -0.383459 5.000000 5.695144 5.657474 5.303160 5.752622 5.320580 +273 5.063808 5.000000 5.702634 5.657474 5.054122 5.737772 5.325291 +274 -4.241238 5.000000 5.702634 5.657474 5.054122 5.737772 5.325265 +275 0.107873 5.000000 5.696942 5.543813 5.364874 5.874387 5.428538 +276 -4.490366 5.000000 5.702634 5.543813 5.342140 5.947527 5.431649 +277 4.210545 5.000000 5.695144 5.628783 5.344592 5.884553 5.398343 +278 1.230910 5.000000 5.769927 5.888162 5.994389 5.960932 5.487853 +279 1.256412 5.000000 5.769927 5.888162 5.994389 6.036620 5.489710 +280 1.324993 5.000000 5.696942 5.628783 5.428206 5.960932 5.407547 +281 5.724715 5.000000 5.696942 5.620125 5.344592 5.752622 5.310821 +282 3.701784 5.000000 5.539120 5.543813 5.344581 5.707877 5.270076 +283 -3.394856 5.000000 5.674248 5.703303 5.479595 5.960932 5.427475 +284 -11.404739 5.000000 5.539120 5.543813 5.294530 5.682901 5.193445 +285 -4.213370 5.000000 5.539120 5.543813 5.294530 5.682901 5.193502 +286 11.059266 5.000000 5.377961 5.518625 5.335961 5.605745 5.180578 +287 -4.275216 5.000000 5.220139 5.518625 5.277917 5.646749 5.166872 +288 -10.902450 5.000000 5.327585 5.512708 5.175387 5.335664 5.087248 +289 -6.415396 5.000000 5.377961 5.518625 5.843820 5.706934 5.359813 +290 -4.233255 5.000000 5.327585 5.114187 5.640505 5.356382 5.207455 +291 3.203285 5.000000 5.520715 5.108270 5.303781 5.082667 5.118572 +292 -0.243010 5.000000 5.312485 5.108270 4.981409 5.063582 5.124535 +293 -2.292388 5.000000 5.312485 5.108270 5.554852 5.074195 5.127643 +294 -0.988202 5.000000 5.312485 5.108270 5.554852 5.106748 5.150840 +295 -8.617249 5.000000 5.006661 5.093529 4.383496 5.035319 5.123388 +296 0.682730 5.000000 5.109485 5.093529 5.084121 5.038606 5.121570 +297 3.351886 5.000000 4.978758 4.610367 4.383496 4.867844 5.100909 +298 5.708072 5.000000 4.672934 4.205568 4.902923 4.722350 5.042756 +299 -1.390486 5.000000 4.920140 4.610367 5.113957 5.106748 5.262576 +300 -3.561594 5.000000 5.109485 5.014805 5.128198 5.391971 5.332633 +301 3.340206 5.000000 5.126282 5.497967 5.718812 5.706934 5.461842 +302 -4.961103 5.000000 5.010479 5.093529 5.336958 5.511373 5.372576 +303 -9.348193 5.000000 5.010479 5.093529 5.336958 5.577010 5.400782 +304 -0.853739 5.000000 5.010479 5.093529 5.336958 5.589529 5.401533 +305 6.683526 5.000000 5.064071 4.687134 5.211245 5.399548 5.158954 +306 1.934211 5.000000 4.920140 4.938380 5.292158 5.570167 5.318262 +307 -1.084508 5.000000 4.920140 4.938380 5.128198 5.473333 5.102231 +308 2.111639 5.000000 4.803662 4.432619 5.084121 5.356382 5.074232 +309 -11.472716 5.000000 4.076637 4.175442 4.902923 5.279437 4.908097 +310 2.657706 5.000000 4.076637 4.175442 4.902923 5.106748 4.849805 +311 0.815234 5.000000 3.957296 4.008303 4.853005 4.881096 4.800551 +312 0.732248 5.000000 4.076637 4.016961 5.084121 5.279437 5.139921 +313 -2.066920 5.000000 4.150052 4.016961 5.084121 5.371390 5.140675 +314 5.820691 5.000000 4.003762 3.636978 4.853005 5.304413 5.137616 +315 -0.036735 5.000000 3.837284 3.636978 4.363936 5.184403 5.129738 +316 -0.817591 5.000000 3.837284 3.636978 4.363936 5.058771 4.955603 +317 1.751958 5.000000 4.439564 4.138418 4.853005 5.159427 4.987217 +318 -1.279063 5.000000 5.281118 5.146236 5.283907 5.473333 5.278802 +319 9.049142 5.000000 4.273087 4.138418 5.283907 5.251880 5.229896 +320 5.217183 5.000000 4.439564 4.138418 4.853005 5.294091 5.217850 +321 -8.288637 5.000000 4.439564 4.138418 4.853005 5.228289 5.211998 +322 -2.776235 5.000000 5.114641 4.559194 5.348747 5.204853 5.231451 +323 4.875258 5.000000 5.114641 4.559194 5.348747 5.294091 5.267383 +324 -3.458497 5.000000 4.439564 4.426764 4.955135 4.978755 5.026550 +325 2.761264 5.000000 4.439564 4.426764 4.955135 4.978755 5.036502 +326 8.652122 5.000000 4.413978 4.138418 4.772958 4.711363 4.968877 +327 5.928311 5.000000 4.413978 4.138418 4.772958 4.718688 4.967719 +328 1.889721 5.000000 4.865704 4.426764 4.955135 5.182514 5.443802 +329 7.320146 5.000000 4.439564 4.426764 5.283907 5.178847 5.459672 +330 -4.416639 5.000000 4.413978 4.136959 4.772958 4.641304 5.065697 +331 -1.036730 5.000000 4.273087 4.136959 4.487097 4.534561 5.067312 +332 12.419299 5.000000 4.337910 4.136959 4.487097 4.591389 5.067146 +333 1.658067 5.000000 4.515632 4.426764 4.631147 4.915916 5.186128 +334 3.515730 5.000000 5.179464 4.847541 5.040168 5.142322 5.224802 +335 0.927521 5.000000 4.515632 4.559194 4.631147 4.730982 5.177288 +336 -3.607262 5.000000 5.217139 4.847541 5.040168 4.978755 5.220703 +337 -2.634539 5.000000 5.455767 5.433643 5.314278 5.228289 5.232270 +338 12.181637 5.000000 5.455767 5.433643 5.314278 5.228289 5.235794 +339 -0.158993 5.000000 5.455767 5.433643 5.314278 5.293852 5.251487 +340 1.784266 5.000000 5.217139 4.847541 4.567238 4.804339 5.114469 +341 -3.287667 5.000000 5.179464 4.646519 4.715363 5.159204 5.308371 +342 -2.752338 5.000000 4.625905 4.559194 4.434477 4.730982 5.099029 +343 -6.136168 5.000000 4.663580 4.570761 4.487097 4.798812 5.122461 +344 3.904704 5.000000 4.477957 4.541376 4.487097 4.739118 5.107991 +345 -1.675977 5.000000 4.477957 4.541376 4.825596 5.142322 5.640669 +346 3.096701 5.000000 4.477957 4.541376 4.641262 4.959511 5.634822 +347 1.605890 5.000000 4.419186 4.282415 4.359785 4.645731 5.504573 +348 15.544441 5.000000 4.419186 4.282415 4.322957 4.629714 5.467235 +349 -1.288100 5.000000 4.470853 4.559194 4.497622 4.915916 5.609190 +350 -0.229852 5.000000 4.456861 4.248568 4.439661 4.609383 5.510586 +351 0.329253 5.000000 3.901263 3.971789 4.065422 4.449698 5.462203 +352 0.858956 5.000000 3.859952 3.971789 3.929714 4.288101 5.457372 +353 -5.500308 5.000000 3.901263 4.034029 3.929714 4.166432 5.154648 +354 -3.892115 5.000000 4.333399 4.034029 4.199089 4.275990 5.164648 +355 0.884368 5.000000 4.456861 4.034029 4.311449 4.343885 5.180551 +356 5.834929 5.000000 4.778057 4.121353 4.497622 4.469879 5.218446 +357 4.695344 5.000000 4.304709 4.034029 4.311449 4.372944 5.182654 +358 2.807291 5.000000 4.304709 4.121353 4.311449 4.427750 5.216447 +359 -2.261169 5.000000 4.304709 4.121353 4.005256 4.372944 4.974854 +360 0.642313 5.000000 4.456861 4.335893 3.978050 4.469879 5.005713 +361 -8.654712 5.000000 4.470853 4.796260 4.175938 4.731294 5.131351 +362 -0.092398 5.000000 4.433178 4.541376 4.186231 4.915916 5.299535 +363 6.487920 5.000000 4.419186 4.395123 4.136632 4.731294 5.273712 +364 3.865063 5.000000 4.419186 4.395123 4.136632 4.731294 5.280065 +365 -14.569866 5.000000 4.371074 4.285903 4.136632 4.709270 5.269798 +366 1.053951 5.000000 4.419186 4.432156 4.504785 4.742014 5.332498 +367 1.379787 5.000000 4.470853 4.603911 4.474791 4.851329 5.339864 +368 3.874501 5.000000 4.625905 4.713131 4.667231 5.173955 5.387031 +369 -7.232712 5.000000 4.648220 4.603911 4.322957 4.709270 4.827389 +370 1.757142 5.000000 4.778057 4.848752 4.463610 4.842387 4.895612 +371 2.634704 5.000000 4.792049 5.538047 4.667231 5.068787 4.955838 +372 1.748700 5.000000 4.756907 5.538047 4.633249 5.047151 4.956826 +373 -2.823149 5.000000 4.963795 5.538047 4.667231 5.148903 4.972983 +374 -2.063877 5.000000 5.072482 4.957972 4.889501 5.305669 5.113165 +375 4.417386 5.000000 4.756907 4.870919 4.722181 5.313927 5.083906 +376 -3.752995 5.000000 4.756907 4.870919 4.899794 5.228880 5.089637 +377 0.589799 5.000000 4.778057 4.761699 4.837104 5.133296 5.018975 +378 -4.463349 5.000000 4.855914 4.408166 4.903747 5.172565 5.034793 +379 6.907824 5.000000 4.855914 4.408166 4.802487 5.148903 5.020191 +380 3.717728 5.000000 4.855914 4.408166 4.727607 5.131172 5.010025 +381 7.597070 5.000000 5.427210 5.097461 4.972918 5.173955 5.116314 +382 9.747758 5.000000 5.427210 5.097461 4.972918 5.073570 4.992504 +383 -0.360552 5.000000 5.236867 5.097461 5.078670 5.049937 4.992743 +384 -6.328120 5.000000 5.029643 4.735202 5.173245 4.858752 4.896177 +385 3.123386 5.000000 5.029643 4.735202 5.173245 4.988539 4.961658 +386 -4.982464 5.000000 4.958070 4.501532 5.078670 4.858752 4.565345 +387 -2.492864 5.000000 5.029643 4.501532 5.002814 4.869931 4.577641 +388 5.177591 5.000000 5.029643 4.501532 5.002814 4.858752 4.575117 +389 -0.220782 5.000000 4.440774 4.139272 5.002814 4.802576 4.551337 +390 -5.183332 5.000000 4.440774 4.139272 5.002814 4.599155 4.465799 +391 -4.813882 5.000000 5.029643 4.501532 5.301365 4.737383 4.540566 +392 0.715621 5.000000 5.293875 5.097461 5.222898 4.737383 4.609255 +393 -2.705716 5.000000 5.592584 5.624047 5.364765 5.034031 4.987675 +394 9.502533 5.000000 5.592584 5.624047 5.324491 5.065919 4.980714 +395 -2.090813 5.000000 6.175048 6.064632 5.470516 5.173955 5.026604 +396 1.972222 5.000000 5.954235 5.624047 5.430242 5.034031 4.974397 +397 -1.214261 5.000000 6.175048 5.805547 5.596937 5.323906 5.236500 +398 -5.184635 5.000000 6.175048 5.805547 5.596937 5.313927 5.242685 +399 1.471915 5.000000 6.046467 5.805547 5.646401 5.350998 5.211639 +400 -0.936050 5.000000 5.165294 5.301113 5.528275 5.209911 5.087036 +401 -6.740659 5.000000 5.165294 5.301113 5.561079 5.301063 5.203150 +402 -4.846911 5.000000 4.156424 5.191195 5.528275 5.174001 5.066682 +403 -0.447279 5.000000 3.936586 4.952190 4.829758 4.829573 4.804838 +404 -2.949098 5.000000 4.285006 4.952190 5.347469 4.858752 4.825368 +405 6.255510 5.000000 4.045008 4.286611 4.829758 4.829573 4.769609 +406 7.713422 5.000000 4.045008 4.286611 5.347469 5.149333 5.176752 +407 -2.094391 5.000000 4.257306 3.997098 4.912404 5.274512 5.177156 +408 0.917200 5.000000 4.287655 4.396529 4.954329 5.286284 5.210216 +409 2.442914 5.000000 4.257306 4.286611 4.912404 4.862131 5.147818 +410 -4.708191 5.000000 4.257306 4.286611 4.912404 5.090271 5.149978 +411 5.631424 5.000000 3.914019 3.887179 4.650344 4.839602 5.092908 +412 -5.421105 5.000000 4.331485 3.816679 4.573163 5.072900 5.089364 +413 -12.296347 5.000000 4.552420 3.816679 4.573163 5.103898 5.097737 +414 -2.205921 5.000000 4.552420 3.997098 4.573163 5.184600 5.153410 +415 4.503806 5.000000 4.387065 3.997098 4.484631 4.857745 4.962289 +416 -0.077589 5.000000 4.630346 4.272474 4.437477 4.957424 5.003673 +417 -11.206864 5.000000 4.552420 4.272474 4.484631 4.839602 4.996563 +418 1.500243 5.000000 5.381754 4.272474 4.609187 4.956988 5.013333 +419 1.812451 5.000000 4.552420 4.136224 4.484631 4.724219 4.940300 +420 0.434045 5.000000 5.172976 4.272474 4.961299 5.096248 5.236862 +421 7.684015 5.000000 5.445477 4.671906 4.962531 5.205085 5.297417 +422 2.294635 5.000000 5.381754 4.652682 4.609187 5.017013 5.215906 +423 0.864640 5.000000 5.381754 4.652682 4.609187 4.986194 5.207489 +424 -3.487923 5.000000 5.381754 4.652682 4.609187 5.072900 5.209310 +425 2.814391 5.000000 4.552420 4.516431 4.519173 5.090271 5.196782 +426 12.837914 5.000000 4.343642 4.671906 4.279213 4.986194 5.141610 +427 4.761137 5.000000 4.289523 4.396529 4.192072 4.752178 4.992292 +428 -4.477532 5.000000 4.043526 4.671906 4.279213 4.551350 5.018673 +429 1.303452 5.000000 4.351943 4.671906 4.279213 4.688257 5.016155 +430 -1.099795 5.000000 5.048072 4.671906 4.364926 4.662450 4.997656 +431 1.539987 5.000000 4.289523 4.136224 4.243410 4.415913 4.956182 +432 4.900701 5.000000 4.024678 3.750929 4.188295 4.134028 4.869178 +433 2.157716 5.000000 3.529107 3.336262 4.065719 3.945399 4.805683 +434 -5.373555 5.000000 3.511712 3.135109 3.910426 3.763098 4.404351 +435 3.369386 5.000000 3.752517 3.063013 3.935502 3.686000 4.393520 +436 4.774591 5.000000 3.752517 3.063013 4.033002 3.742874 4.957682 +437 0.723821 5.000000 3.752517 3.063013 3.935502 3.742874 4.957018 +438 -2.765298 5.000000 3.099484 3.040700 3.310097 3.561608 4.590831 +439 -0.110626 5.000000 3.099484 3.040700 3.310097 3.529767 4.589366 +440 -10.941173 5.000000 3.099484 3.040700 3.310097 3.529767 4.587770 +441 -5.199335 5.000000 2.918419 3.040700 3.310097 3.561608 4.590097 +442 3.327284 5.000000 3.099484 2.939203 3.310097 3.478121 4.470489 +443 -4.480336 5.000000 3.099484 2.631717 3.310097 3.478121 4.465326 +444 -0.918793 5.000000 3.012703 2.631717 3.310097 3.442915 4.465203 +445 -1.934569 5.000000 2.703698 2.608728 3.131815 3.231079 4.419449 +446 -3.999568 5.000000 2.416004 2.540414 2.933102 3.099830 4.405615 +447 -1.807214 5.000000 2.068133 2.528496 2.827115 2.969671 3.948695 +448 3.451138 5.000000 2.044298 2.458291 2.553253 2.685466 3.882998 +449 -0.773710 5.000000 2.044298 2.131967 2.428477 2.591104 3.820045 +450 -0.210281 1.000000 2.044298 2.131967 2.251567 2.591104 3.816161 +451 1.634693 1.000000 1.929772 2.179489 2.395212 2.580917 3.816587 +452 0.099787 1.000000 2.044298 2.179489 2.218302 2.565652 3.811095 +453 1.399718 1.000000 2.058885 2.455542 2.218302 2.572988 4.475544 +454 -1.837313 1.000000 2.013519 2.418743 2.115226 2.423295 4.462064 +455 1.536279 1.000000 2.013519 2.092419 2.101201 2.210105 4.390144 +456 15.461575 1.000000 1.942993 2.027986 2.082939 2.139251 4.352843 +457 0.245996 1.000000 1.927281 1.765415 2.069165 2.022400 4.276809 +458 0.063799 1.000000 1.980637 1.765415 2.035218 2.099358 4.274333 +459 0.845947 1.000000 1.913268 1.657701 1.858039 1.964217 4.260197 +460 1.486638 1.000000 1.927281 1.765415 2.035218 2.101232 4.270235 +461 1.742924 1.000000 1.912745 1.657701 1.843216 1.932605 3.927183 +462 -1.776202 1.000000 1.839378 1.863433 1.734962 1.861585 3.855941 +463 1.650770 1.000000 1.912745 1.657701 1.670353 1.790977 3.826878 +464 0.255835 1.000000 1.783879 1.600862 1.628975 1.709738 3.765389 +465 1.045515 1.000000 1.783879 1.600862 1.628975 1.688697 3.763496 +466 0.710777 1.000000 1.725297 1.469406 1.484396 1.591194 3.751352 +467 -0.936687 1.000000 1.652247 1.418806 1.454122 1.499168 3.696021 +468 0.742553 1.000000 1.652247 1.418806 1.380636 1.481326 3.689802 +469 -1.335997 1.000000 1.497032 1.270866 1.359474 1.374527 3.651517 +470 0.333081 1.000000 1.477478 1.270866 1.315445 1.306576 3.649411 +471 1.604094 1.000000 1.477478 1.270866 1.315445 1.315489 3.649156 +472 0.196511 1.000000 1.200154 1.231242 1.145298 1.261929 3.641195 +473 -15.658232 1.000000 1.492264 1.270866 1.315445 1.388793 3.666623 +474 0.792495 1.000000 1.185369 1.270866 1.177150 1.366498 3.662891 +475 -1.114018 1.000000 1.175309 1.208340 1.177150 1.380593 3.665994 +476 -0.475007 1.000000 1.175309 1.208340 1.145298 1.354679 3.662644 +477 -0.760521 1.000000 1.175309 1.208340 1.069780 1.274487 2.736621 +478 -1.190693 1.000000 1.237276 1.208340 1.162648 1.312312 2.736617 +479 0.320925 1.000000 1.237276 1.208340 1.162648 1.304296 2.736947 +480 -2.307515 1.000000 1.212431 1.208340 1.138404 1.302200 2.732584 +481 0.252781 1.000000 1.153849 1.151250 1.100690 1.252087 2.719429 +482 1.865834 1.000000 1.134726 1.194220 1.098508 1.195271 2.705248 +483 -1.692357 1.000000 1.134726 1.194220 1.098508 1.188332 2.698193 +484 -0.868428 1.000000 1.073418 1.170664 1.089281 1.154155 2.680321 +485 -0.489642 1.000000 1.078218 1.194220 1.164161 1.195271 2.693005 +486 0.236023 1.000000 1.072278 1.170664 1.089281 1.173121 2.685026 +487 0.371736 1.000000 1.072278 0.987914 1.080448 1.163880 2.681108 +488 -1.254621 1.000000 1.073418 1.114228 1.009357 1.188784 2.686777 +489 -0.031377 1.000000 1.186457 0.907922 1.138735 1.188784 2.682394 +490 -0.222826 1.000000 1.072278 0.900546 1.004602 1.138235 2.678284 +491 0.008775 1.000000 1.186457 1.143874 1.098508 1.176948 2.689050 +492 0.464250 1.000000 1.186457 1.143874 1.098508 1.162788 2.678840 +493 2.802897 1.000000 1.189422 1.143874 1.126600 1.175016 2.678260 +494 0.869507 1.000000 1.085500 1.080370 1.080448 1.107148 1.071941 +495 2.349648 1.000000 1.125806 0.900546 1.032490 1.097603 1.081688 +496 1.099712 1.000000 1.085500 0.837042 1.080448 1.065844 1.067468 +497 1.266472 1.000000 1.088466 0.932983 1.022144 1.065844 1.067622 +498 -0.581749 1.000000 1.078218 1.075816 1.034653 1.124375 1.092542 +499 0.183612 1.000000 1.078218 1.075816 1.034653 1.093282 1.084930 +500 0.142260 1.000000 1.088466 1.075816 1.022144 1.067466 1.085543 +501 -0.085219 1.000000 1.073418 1.007537 0.925369 1.017065 1.014907 +502 -1.249745 1.000000 1.073418 1.007537 0.943281 1.050149 1.018502 +503 -1.112341 1.000000 0.997719 0.981448 0.943281 1.061808 1.103952 +504 -0.421823 1.000000 0.997719 0.981448 0.943281 1.027143 1.074166 +505 1.425884 1.000000 1.073418 1.007537 0.920746 1.032999 1.070014 +506 0.069254 1.000000 1.061713 1.008918 0.978240 1.059877 1.089199 +507 0.173353 1.000000 1.119516 1.041781 1.049548 1.128557 1.145746 +508 0.938138 1.000000 1.090886 1.041781 1.043157 1.133280 1.145720 +509 -0.750569 1.000000 1.090886 1.041781 1.043157 1.121444 1.139363 +510 0.067254 1.000000 1.119516 1.041781 1.006157 1.133280 1.142146 +511 1.352565 1.000000 1.112230 1.041781 1.052769 1.134882 1.141073 +512 0.889468 1.000000 1.053011 1.041781 1.080448 1.125722 1.140414 +513 -0.664905 1.000000 1.053011 1.041781 1.104522 1.134882 1.143359 +514 -0.471544 1.000000 0.963271 1.008918 1.063664 1.052303 1.072888 +515 -1.162472 1.000000 1.112230 1.090613 1.009540 1.067466 1.089835 +516 0.288422 1.000000 1.112230 1.090613 1.009540 1.057772 1.065324 +517 0.593672 1.000000 1.061713 1.067702 0.962455 1.052303 1.055861 +518 1.797173 1.000000 1.045065 1.067228 0.964114 1.050149 1.045766 +519 -0.910366 1.000000 1.045065 1.048787 0.964114 1.050149 1.045345 +520 -0.170271 1.000000 1.061043 1.048787 0.980201 1.044728 1.047216 +521 0.538727 1.000000 1.045065 1.048787 0.980201 1.031639 1.048434 +522 0.742206 1.000000 1.045065 1.048787 1.020586 1.031639 1.050677 +523 -3.051487 1.000000 1.014944 0.985534 0.964894 0.979797 1.027336 +524 -0.682138 1.000000 0.998268 0.973059 0.962455 0.975757 1.019779 +525 0.933800 1.000000 0.950955 0.973059 0.951256 0.940912 1.015302 +526 1.629978 1.000000 0.909526 0.972585 0.962171 0.914593 1.001206 +527 2.480905 1.000000 0.932541 0.985534 0.964894 0.940912 1.019382 +528 0.153676 1.000000 0.998268 1.048787 1.030724 0.940912 1.028396 +529 -1.048369 1.000000 0.998268 1.048787 1.112643 0.970398 1.052656 +530 0.857923 1.000000 0.956838 0.986008 1.123092 1.051045 2.652727 +531 0.702038 1.000000 0.956838 0.986008 1.127931 1.056405 2.654764 +532 0.483993 1.000000 0.932541 0.985534 1.089465 1.027175 2.653062 +533 0.858562 1.000000 0.998268 0.985534 1.127151 1.057754 2.656292 +534 0.479959 1.000000 0.909526 0.972585 1.069988 1.063013 2.653079 +535 -1.118587 1.000000 0.895336 0.897648 1.069988 1.051045 2.651571 +536 1.778968 1.000000 0.886720 0.890553 1.047198 0.980895 2.640665 +537 0.056305 1.000000 0.901056 0.897648 1.144511 1.082007 2.661266 +538 -0.454076 1.000000 0.957365 0.897648 1.036490 1.061768 2.662966 +539 -0.556872 1.000000 0.957365 0.897648 1.036490 1.041062 2.656623 +540 -0.265134 1.000000 0.901056 0.890553 1.112643 1.030154 2.647348 +541 0.451695 1.000000 0.901056 0.890553 1.127151 1.008409 2.647745 +542 -0.352988 1.000000 0.901056 0.890553 1.061264 0.999284 2.648347 +543 0.260478 1.000000 0.957365 0.897648 1.036490 1.041263 2.666717 +544 1.238717 1.000000 1.038295 0.891027 1.036490 0.977273 2.608369 +545 0.492358 1.000000 1.038295 0.891027 1.036490 1.041062 2.616674 +546 -0.329513 1.000000 0.957365 0.897648 0.987749 1.033279 2.622681 +547 -1.028432 1.000000 0.970511 0.969674 0.959953 0.968247 2.623117 +548 -0.693736 1.000000 0.874178 0.857027 0.945648 0.916548 2.603750 +549 1.782936 1.000000 0.942936 0.857027 0.987749 0.937164 2.603574 +550 15.818794 1.000000 0.874178 0.782090 0.953131 0.905967 2.594181 +551 -0.255493 1.000000 0.802867 0.757416 0.913007 0.886705 2.594710 +552 0.032752 1.000000 0.802867 0.713530 0.913007 0.875255 2.594504 +553 1.442903 1.000000 0.817254 0.713530 0.878542 0.860304 2.596434 +554 -0.343417 1.000000 0.817254 0.713530 0.878542 0.864776 2.597031 +555 -0.303262 1.000000 0.817254 0.713530 0.823233 0.845104 2.597463 +556 -0.268796 1.000000 0.774383 0.713530 0.798197 0.822710 2.590808 +557 -1.543759 1.000000 0.751394 0.775898 0.748980 0.805205 2.590720 +558 -0.070619 1.000000 0.781834 0.788467 0.756806 0.824487 2.591346 +559 1.054617 1.000000 0.834670 0.713530 0.874077 0.834041 2.587819 +560 0.853996 1.000000 0.835712 0.706435 0.910085 0.835011 2.583300 +561 -0.226444 1.000000 0.849057 0.713530 0.916851 0.873077 2.587618 +562 0.188203 1.000000 0.867516 0.882915 0.941887 0.920355 2.606325 +563 -1.475397 1.000000 0.867516 0.882915 0.941887 0.924734 2.606878 +564 1.306774 1.000000 0.923834 0.926801 0.953131 0.951755 2.611340 +565 -1.242503 1.000000 0.867516 0.882915 0.922189 0.920355 2.608540 +566 -0.621848 1.000000 0.929559 0.912836 0.894256 0.926640 2.622731 +567 -0.642380 1.000000 0.933376 0.928056 0.966058 0.976884 2.632097 +568 0.609551 1.000000 0.983283 0.956722 0.955139 0.985566 2.626332 +569 0.668753 1.000000 0.951479 0.926801 0.938918 0.964261 2.621618 +570 -0.115041 1.000000 0.879498 0.882915 0.916851 0.914806 2.611912 +571 -0.049168 1.000000 0.867516 0.900267 0.903496 0.852394 0.844950 +572 0.592595 1.000000 0.879498 0.900267 0.860845 0.852394 0.844481 +573 -0.191465 1.000000 0.879498 0.900267 0.898372 0.901035 0.847517 +574 0.986086 1.000000 0.849057 0.842384 0.806022 0.825155 0.812627 +575 0.130059 1.000000 0.849057 0.842384 0.806022 0.834041 0.811912 +576 -0.581485 1.000000 0.879498 0.857604 0.875408 0.914806 0.865156 +577 -0.954385 1.000000 0.951479 0.931466 0.923408 0.955787 0.907232 +578 0.873495 1.000000 0.934416 0.915487 0.923408 0.975591 0.923398 +579 0.514512 1.000000 0.959554 0.989350 0.938532 1.017289 0.940851 +580 0.236322 1.000000 0.934416 0.931466 0.915476 0.975591 0.922564 +581 -0.742019 1.000000 0.896561 0.913349 0.883543 0.964261 0.914375 +582 -1.569790 1.000000 0.900868 0.913349 0.867634 0.964261 0.914680 +583 -0.428112 1.000000 0.930109 0.931466 0.915476 1.071690 1.037852 +584 1.362854 1.000000 0.930109 0.931466 0.915476 1.096653 1.137038 +585 0.014266 1.000000 0.930109 0.931466 0.939227 1.125413 1.334542 +586 -1.379133 1.000000 0.930109 0.931466 0.955731 1.138339 1.357751 +587 -1.228347 1.000000 0.955247 1.088893 0.972625 1.147308 1.366202 +588 1.129630 1.000000 1.043020 1.256805 1.007069 1.148425 1.389272 +589 0.000026 1.000000 1.048593 1.256805 1.063383 1.205405 1.692282 +590 0.315187 1.000000 1.044287 1.238687 1.036973 1.177336 1.689192 +591 -1.197582 1.000000 1.350878 1.251058 1.181140 1.273989 1.795091 +592 -0.034754 1.000000 1.359141 1.273864 1.329732 1.317496 1.808411 +593 0.397784 1.000000 1.598342 1.224727 1.460323 1.408617 1.870814 +594 -0.037659 1.000000 1.614428 1.317228 1.508528 1.589512 2.014759 +595 -0.217015 1.000000 1.453790 1.255999 1.516079 1.564340 2.005114 +596 -2.014863 1.000000 1.499403 1.317228 1.657350 1.668902 2.140207 +597 -1.887054 1.000000 1.668696 1.385642 1.761323 1.818586 2.192964 +598 1.641117 1.000000 1.765318 1.403759 1.931545 1.901629 2.218456 +599 -1.254351 1.000000 1.707249 1.385642 1.924872 1.825985 2.214361 +600 0.108400 3.000000 1.827246 1.385642 1.924872 1.954925 2.222985 +601 0.490072 3.000000 1.892251 1.859746 1.924987 2.096900 2.242326 +602 0.008793 3.000000 1.892251 1.859746 1.924987 2.096900 2.240242 +603 2.997641 3.000000 1.916353 1.860109 1.973322 2.215651 2.256421 +604 -3.347985 3.000000 1.916353 1.860109 1.973322 2.215651 2.257366 +605 4.543545 3.000000 1.916353 1.860109 1.973322 2.302730 2.261569 +606 -2.034774 3.000000 1.988873 2.129106 2.103072 2.396861 2.275871 +607 -1.180894 3.000000 2.162972 2.122085 2.185209 2.411543 2.286230 +608 -1.783292 3.000000 2.450041 2.141361 2.199375 2.461461 2.326376 +609 6.100999 3.000000 2.474552 2.146410 2.237281 2.540909 2.379937 +610 -0.102829 3.000000 2.484649 2.243061 2.265744 2.601845 2.420237 +611 -3.885730 3.000000 2.592387 2.481996 2.424726 2.658816 2.467381 +612 -1.493656 3.000000 2.592387 2.481996 2.424726 2.644251 2.466087 +613 -3.297359 3.000000 2.613389 2.481996 2.580747 2.699986 2.471461 +614 -5.008837 3.000000 2.588080 2.481996 2.528738 2.699986 2.473525 +615 -0.869117 3.000000 2.645296 2.659393 2.698299 2.808248 2.554917 +616 4.425439 3.000000 2.645296 2.659393 2.729840 2.762799 2.556960 +617 2.807595 3.000000 2.613389 2.481996 2.780789 2.740275 2.536087 +618 2.108389 3.000000 2.613389 2.481996 2.780789 2.701181 2.534669 +619 -0.685891 3.000000 2.550970 2.616546 2.660747 2.685061 2.539093 +620 1.254902 3.000000 2.575480 2.659393 2.848193 2.906569 2.735396 +621 1.771498 3.000000 2.846728 2.729457 2.868415 2.906569 2.747831 +622 -0.302315 3.000000 2.885491 2.729457 2.868415 2.896194 2.758460 +623 2.242549 3.000000 2.885491 2.729457 2.970128 2.903450 2.769875 +624 -0.595095 3.000000 2.885491 2.704880 2.970128 2.865029 2.748574 +625 1.617774 3.000000 2.885491 2.704880 2.916815 2.725071 2.721230 +626 1.634306 3.000000 2.860391 2.490523 2.780789 2.618938 2.623792 +627 2.093815 3.000000 2.860391 2.486965 2.780789 2.555220 2.609599 +628 -2.924627 3.000000 2.821627 2.486965 2.767425 2.606765 2.605268 +629 3.448153 3.000000 2.846728 2.486965 2.780789 2.689642 2.619958 +630 2.966387 3.000000 2.860391 2.385265 2.668373 2.509029 2.436651 +631 3.287939 3.000000 2.901382 2.388823 2.807509 2.593412 2.725013 +632 -1.109032 3.000000 2.901382 2.388823 2.885745 2.620717 2.763630 +633 1.392653 3.000000 2.901382 2.560515 2.917290 2.739487 2.776920 +634 -0.328460 3.000000 2.901382 2.560515 2.917290 2.693841 2.766323 +635 -3.796088 3.000000 2.910002 2.490523 2.913214 2.580587 2.725111 +636 -0.564299 3.000000 2.871239 2.490523 2.921761 2.618938 2.729533 +637 1.171487 3.000000 2.910002 2.560515 2.953642 2.683576 3.876342 +638 -1.819781 3.000000 2.879141 2.708212 2.877988 2.683576 3.838504 +639 -1.435856 3.000000 2.758637 2.695662 2.676878 2.620717 3.809517 +640 -6.438690 3.000000 2.879141 2.708212 2.875264 2.624484 3.831074 +641 -1.588172 3.000000 2.901382 2.720467 2.877988 2.618938 3.850043 +642 -1.583372 3.000000 2.901382 2.720467 2.959294 2.749752 3.968964 +643 1.600844 3.000000 2.901382 2.720467 3.238340 2.743285 3.979167 +644 2.060660 3.000000 2.901382 2.720467 3.238340 2.743285 3.981488 +645 -2.295968 3.000000 3.210046 2.913512 3.539941 2.848598 3.997507 +646 -0.178108 3.000000 3.011935 2.913512 3.231812 2.758265 3.981881 +647 -1.014658 3.000000 3.011935 2.918731 3.231812 2.758265 3.982202 +648 0.607130 3.000000 2.949265 2.888707 2.875264 2.743285 3.953410 +649 -2.506250 3.000000 3.011935 2.695662 3.059425 2.718478 3.958630 +650 -1.403625 3.000000 3.011935 2.598099 3.053427 2.689642 3.910942 +651 -8.028533 3.000000 2.924752 2.541330 2.762414 2.538213 3.861135 +652 -4.946371 3.000000 2.714866 2.377379 2.676878 2.365749 3.809720 +653 -2.455768 3.000000 2.919289 2.541330 3.033267 2.475046 3.847652 +654 -2.849491 3.000000 2.720328 2.377379 3.033267 2.492932 3.838198 +655 3.219823 3.000000 2.919289 2.598099 3.193748 2.528325 3.872865 +656 0.954373 3.000000 2.567376 2.499020 3.149137 2.249963 3.853050 +657 -18.565652 3.000000 2.919289 2.598099 3.193748 2.492932 3.884630 +658 -2.035554 3.000000 2.919289 2.598099 3.193748 2.365749 3.887860 +659 -1.485858 3.000000 2.755101 2.598099 3.189256 2.446993 3.885785 +660 1.641346 3.000000 2.697527 2.695662 2.976980 2.446993 3.914385 +661 2.337248 3.000000 2.565077 2.596583 2.905234 2.207343 3.819874 +662 5.797985 3.000000 2.542671 2.626607 2.351580 2.365749 3.868440 +663 1.092394 3.000000 2.542671 2.725686 2.434436 2.446993 3.907315 +664 2.363627 3.000000 2.567210 2.735403 2.722161 2.725088 3.975097 +665 -3.046177 3.000000 2.581780 2.735403 2.722161 2.957221 4.026025 +666 -1.901898 3.000000 2.513546 2.636324 2.708998 2.781497 4.025248 +667 1.654455 3.000000 2.536907 3.044049 2.943128 2.781497 4.051945 +668 -1.034876 3.000000 2.536907 3.044049 2.947405 2.781497 4.051962 +669 1.469234 3.000000 2.924490 3.044049 3.033051 2.697463 4.063035 +670 1.062924 3.000000 2.502937 2.735639 2.561448 2.539779 4.049163 +671 -1.018342 3.000000 2.502937 3.044049 2.577433 2.659349 4.082257 +672 0.692775 3.000000 2.100257 2.735639 2.411250 2.452413 3.885650 +673 2.370975 3.000000 1.939318 2.401326 2.241089 2.339270 3.814896 +674 0.680703 3.000000 1.939318 2.401326 2.241089 2.339270 3.813503 +675 2.353799 3.000000 1.939318 2.401326 2.241089 2.372086 3.867918 +676 0.622243 3.000000 1.928424 2.401326 2.046340 2.313725 3.851750 +677 -4.024787 3.000000 1.928424 2.401326 2.101096 2.339270 3.849786 +678 1.398995 3.000000 1.928424 2.401326 2.101096 2.195268 2.459831 +679 -0.459292 3.000000 1.928424 2.401326 2.101096 2.313725 2.489612 +680 2.204468 3.000000 1.884733 2.444471 2.101096 2.350454 2.523394 +681 1.206986 3.000000 1.895627 2.487499 2.334113 2.436448 2.548028 +682 3.452934 3.000000 2.256842 2.456728 2.411250 2.496133 2.577908 +683 -4.155428 3.000000 2.256842 2.456728 2.334113 2.429935 2.466030 +684 4.569687 3.000000 2.446058 2.456728 2.577433 2.470298 2.472619 +685 4.303976 3.000000 2.589427 2.456728 2.577433 2.489142 2.477002 +686 1.475320 3.000000 2.589427 2.456728 2.577433 2.508606 2.523933 +687 2.642578 3.000000 2.589427 2.456728 2.627244 2.509973 2.546866 +688 -1.018165 3.000000 2.536907 3.012314 2.815284 2.761247 2.753353 +689 1.832124 3.000000 2.536645 3.012314 2.705022 2.664034 2.747922 +690 0.728376 3.000000 2.518746 3.012314 2.752862 2.888544 2.743551 +691 -3.682597 3.000000 2.592674 3.448745 3.003536 2.999890 2.797642 +692 0.075563 3.000000 2.592674 3.448745 2.983071 2.897447 2.794217 +693 1.913475 3.000000 2.703985 3.448745 3.003536 2.919299 2.793748 +694 -2.373089 3.000000 2.776077 3.393343 2.928443 2.993320 2.774841 +695 -4.928370 3.000000 3.267123 3.393343 3.040472 2.999890 2.772328 +696 2.279204 3.000000 3.228184 3.177630 3.059849 2.999890 2.752379 +697 0.481364 3.000000 3.360464 3.258577 2.985805 3.060622 2.788998 +698 -1.784352 3.000000 3.288980 3.393343 3.118642 3.130957 4.154187 +699 -3.019125 3.000000 3.580452 3.474290 3.248101 3.292068 4.253630 +700 3.809892 3.000000 3.651936 3.474290 3.118954 3.292068 4.253050 +701 3.068653 3.000000 3.651936 3.529691 3.209772 3.299164 4.271650 +702 -2.482284 3.000000 3.651936 3.529691 3.220083 3.316380 4.276435 +703 2.882974 3.000000 3.360464 3.258577 3.187937 3.230511 4.247706 +704 -0.921465 3.000000 3.228184 3.177630 3.115824 3.140602 4.195075 +705 2.572128 3.000000 3.168368 3.117324 2.948163 3.038754 4.137857 +706 -4.217676 3.000000 3.201911 3.179300 2.982675 2.909659 4.105819 +707 -2.768101 3.000000 3.239852 3.198271 2.985805 3.059858 4.146381 +708 -6.526300 3.000000 3.235694 3.179300 3.003536 2.931256 4.139220 +709 -0.304908 3.000000 3.201911 3.179300 2.916958 2.909659 4.137100 +710 -0.782297 3.000000 2.811942 2.586985 2.692556 2.842997 4.127723 +711 -3.562248 3.000000 3.106499 2.959216 2.911837 2.909659 4.134044 +712 0.547164 3.000000 3.018246 2.889990 2.732246 2.846009 4.096676 +713 -0.585658 3.000000 3.156699 3.110074 2.804846 2.919359 4.113546 +714 -1.328922 3.000000 2.811942 2.889990 2.692556 2.846009 4.110689 +715 -0.353123 3.000000 3.018246 2.889990 2.732246 2.882257 4.097908 +716 -1.559586 3.000000 2.761742 2.513794 2.589684 2.717177 4.027700 +717 -3.243840 3.000000 2.761742 2.513794 2.589684 2.702338 4.023627 +718 19.863106 3.000000 2.876634 2.571240 2.655020 2.770927 4.030568 +719 -5.720992 3.000000 3.018246 2.947436 2.804846 2.900036 4.135098 +720 -0.241575 3.000000 3.039515 2.733878 2.830864 2.878981 4.123004 +721 3.389403 3.000000 2.855365 2.571240 2.649434 2.801957 4.085030 +722 1.806533 3.000000 2.876634 2.889990 2.732246 2.801957 4.080391 +723 -1.126151 3.000000 2.855365 2.571240 2.649434 2.818511 4.093769 +724 0.648574 3.000000 2.855365 2.571240 2.649434 2.781123 4.076470 +725 1.007511 3.000000 2.948174 2.947436 2.725765 2.834541 4.100098 +726 -2.869856 3.000000 2.876634 2.889990 2.741013 2.804224 4.078977 +727 3.897635 3.000000 2.876634 2.889990 2.741013 2.721434 4.052790 +728 -2.388899 3.000000 2.876634 2.889990 2.741013 2.801957 4.074435 +729 -0.338777 3.000000 2.876634 2.889990 2.741013 2.770927 4.007605 +730 -1.186396 3.000000 2.969444 2.947436 2.772607 2.818511 4.021189 +731 1.509644 3.000000 2.948174 2.947436 2.649434 2.801957 4.019758 +732 0.144474 3.000000 2.815216 2.571240 2.568901 2.702338 3.980612 +733 2.271196 3.000000 2.908025 2.617644 2.683003 2.906037 4.058393 +734 -1.881418 3.000000 2.868645 2.617644 2.683003 2.906037 4.056808 +735 0.835095 3.000000 2.804062 2.617644 2.780351 2.861612 4.052573 +736 -1.116284 3.000000 2.704250 2.733878 2.795581 2.994796 4.079903 +737 1.968463 3.000000 2.762149 3.110074 2.859741 3.085075 4.137025 +738 1.587137 3.000000 2.762149 3.110074 2.859741 3.074505 4.123536 +739 -6.121077 3.000000 3.183628 3.101207 2.859741 3.028435 2.780199 +740 2.251272 3.000000 3.036529 2.993840 2.795581 2.881229 2.650197 +741 1.379585 3.000000 3.101112 2.993840 2.827970 2.919359 2.652425 +742 -2.964491 3.000000 2.908025 2.947436 2.813371 2.846009 2.592848 +743 3.107060 3.000000 2.861358 2.947436 2.813371 2.846009 2.589043 +744 1.649736 3.000000 2.821978 2.947436 2.780351 2.821071 2.586465 +745 -2.974466 3.000000 2.821978 2.947436 2.702828 2.836899 2.582718 +746 -0.764166 3.000000 2.821978 2.947436 2.479890 2.871637 2.574512 +747 -2.980226 3.000000 2.821978 2.947436 2.702828 2.882671 2.681601 +748 -3.878759 3.000000 2.861358 2.997357 2.702828 2.861612 2.642274 +749 -4.517339 3.000000 2.821978 3.054803 2.827970 2.919359 2.700840 +750 2.007515 3.000000 2.726325 3.077874 3.097630 3.100053 2.857255 +751 -0.311697 3.000000 2.811999 3.101207 3.138391 3.100053 2.886718 +752 -0.285136 3.000000 2.953741 3.337480 3.175423 3.116427 2.906802 +753 5.105813 3.000000 3.256769 3.337480 3.175423 3.133703 2.907982 +754 0.311570 3.000000 3.333779 3.101207 3.224720 3.144749 2.881762 +755 1.158871 3.000000 3.341190 3.420526 3.314432 3.183738 2.961575 +756 3.311317 3.000000 3.399089 3.656798 3.379695 3.191304 2.981240 +757 -4.429894 3.000000 3.476099 3.685748 3.388083 3.183738 3.013271 +758 -2.533736 3.000000 3.495910 3.685748 3.364041 3.191304 2.990726 +759 -5.088047 3.000000 3.495910 3.685748 3.224720 3.144749 2.984364 +760 -1.381488 3.000000 3.399089 3.366429 3.114643 3.039905 2.840284 +761 -0.940713 3.000000 3.300724 3.101207 2.975714 2.940805 2.813460 +762 -1.445287 3.000000 3.294399 3.101207 3.045089 2.912642 2.800264 +763 1.618259 3.000000 2.901700 2.294340 2.972874 2.857299 2.777626 +764 -0.189142 3.000000 2.908025 3.077874 3.019963 2.857299 2.802392 +765 0.140214 3.000000 2.861358 2.737330 2.942170 2.742694 2.784559 +766 0.110850 3.000000 2.173943 1.930462 2.893244 2.586012 2.758536 +767 -5.766043 3.000000 2.324243 2.022140 2.838440 2.629138 2.770795 +768 -3.955276 3.000000 2.181923 2.223713 2.841829 2.648474 2.856138 +769 3.382713 3.000000 2.212545 2.068202 2.822768 2.564291 2.801673 +770 5.451579 3.000000 2.191354 2.191689 2.795581 2.480934 2.726770 +771 2.406461 3.000000 2.212545 2.068202 2.832027 2.564291 2.850405 +772 2.524557 3.000000 2.256079 2.362386 2.896445 2.758102 3.117517 +773 -0.949033 3.000000 2.350666 2.517897 2.972874 2.876728 3.146689 +774 -1.171706 3.000000 2.350666 2.517897 2.902398 2.771888 3.063528 +775 -4.974113 3.000000 2.823257 2.565191 3.152246 2.876728 3.138506 +776 2.072820 3.000000 3.268027 3.245806 3.230040 3.024616 3.150593 +777 2.493424 3.000000 3.048219 2.951622 3.183387 2.924566 3.103674 +778 -0.307431 3.000000 3.223594 2.565191 3.186841 2.986586 3.137744 +779 1.156092 3.000000 2.823257 2.560679 3.193314 2.940556 3.146619 +780 -0.365228 3.000000 2.307132 2.509924 3.068760 2.846933 3.038874 +781 -0.945390 3.000000 2.531999 2.405167 2.992629 2.859828 3.040044 +782 -0.603722 3.000000 2.513581 2.405167 2.943193 2.824677 3.036075 +783 1.031379 3.000000 2.571849 2.408696 2.996484 2.921351 3.101589 +784 -4.584915 3.000000 2.702371 2.573764 2.953074 3.032406 3.125446 +785 0.280422 3.000000 2.702371 2.573764 2.972874 3.107682 3.128952 +786 0.250098 3.000000 2.994607 2.652496 3.207917 3.273325 3.193153 +787 1.282542 3.000000 2.994607 2.652496 3.221877 3.273325 3.193948 +788 4.863871 3.000000 2.775968 2.551893 3.170940 3.253183 3.086084 +789 1.203662 3.000000 2.775968 2.551893 3.170940 3.277231 3.383899 +790 2.015108 3.000000 2.479282 2.487428 2.953074 3.231410 3.353705 +791 -5.617834 3.000000 2.657413 2.573764 2.953074 3.253183 3.332458 +792 8.003587 3.000000 2.657413 2.573764 2.965529 3.333674 3.375635 +793 -2.644323 3.000000 2.702371 2.509924 3.068760 3.355007 3.409329 +794 2.300254 3.000000 2.702371 2.509924 3.068760 3.400091 3.407694 +795 -4.399941 3.000000 2.657413 2.509924 2.965529 3.352244 3.404238 +796 -2.363424 3.000000 2.437263 2.405996 2.890444 3.264131 3.320509 +797 -1.313021 3.000000 2.994607 2.678521 2.965529 3.349792 3.369088 +798 4.915234 3.000000 2.571849 2.467142 2.937447 3.258930 3.350963 +799 2.880904 3.000000 2.994607 3.178020 2.989573 3.350737 3.372162 +800 -0.322732 3.000000 2.994607 3.178020 2.989573 3.355007 3.375897 +801 1.848021 3.000000 2.994607 3.178020 3.054059 3.407512 3.376424 +802 0.926972 3.000000 2.994607 3.178020 3.054059 3.404221 3.377329 +803 4.743483 3.000000 3.323497 3.242613 3.125989 3.432812 3.438656 +804 -2.359116 3.000000 3.323497 3.242613 3.125989 3.432812 3.436363 +805 -0.745278 3.000000 3.193255 3.178020 3.125989 3.407512 3.370436 +806 4.402179 3.000000 3.368456 3.242613 3.414675 3.586689 3.480014 +807 -0.128392 3.000000 3.263202 3.242613 3.414675 3.586689 3.480188 +808 4.079384 3.000000 3.313663 3.245806 3.625801 3.608663 3.499044 +809 -9.297312 3.000000 3.441995 3.330174 3.584094 3.576037 3.452184 +810 0.955193 3.000000 3.332951 3.330174 3.679062 3.576037 3.456104 +811 -4.169035 3.000000 2.995781 3.123477 3.749098 3.515430 3.445217 +812 4.280045 3.000000 3.194716 3.121944 3.749098 3.508401 3.428276 +813 -3.615090 3.000000 2.857547 2.915246 3.674526 3.316028 3.162917 +814 -0.716937 3.000000 3.052247 3.062177 3.305526 3.316775 3.163299 +815 1.065912 3.000000 2.643256 2.912053 3.268416 3.264792 3.134189 +816 2.522087 3.000000 2.479103 2.847461 3.018496 3.129667 3.075868 +817 -3.722015 3.000000 2.643256 2.847461 3.181533 3.307408 3.227247 +818 0.807026 3.000000 3.052247 2.997584 3.268416 3.330214 3.287613 +819 -2.271982 3.000000 3.052247 2.997584 3.268416 3.451125 4.168753 +820 1.569190 3.000000 3.052247 2.997584 3.416289 3.512087 4.196434 +821 -0.489519 3.000000 3.332951 3.054158 3.737556 3.630207 4.272992 +822 -1.052418 3.000000 2.995781 2.997584 3.729138 3.517509 4.267200 +823 -4.049410 3.000000 2.995781 2.997584 3.674526 3.451125 4.265009 +824 0.624813 3.000000 2.995781 2.997584 3.449086 3.433325 4.230699 +825 -1.873395 3.000000 3.052247 2.994337 3.245795 3.350737 4.215219 +826 -5.440599 3.000000 3.263273 3.103771 3.268416 3.586689 4.224431 +827 0.327601 3.000000 2.963026 2.994337 3.169845 3.410289 4.169533 +828 -2.737561 3.000000 3.263273 3.103771 3.526914 3.527665 4.191745 +829 -3.818614 3.000000 2.964529 2.994337 3.169845 3.351781 4.141487 +830 -2.267602 3.000000 2.964529 2.994337 2.916132 3.316032 3.939834 +831 -2.251232 3.000000 3.332951 2.997584 3.138594 3.316775 3.964966 +832 4.348987 3.000000 3.264776 3.103771 3.120870 3.307408 3.923187 +833 -1.092680 3.000000 3.264776 3.103771 3.120870 3.258930 3.892682 +834 1.771703 3.000000 3.263273 3.202874 3.169845 3.325399 4.162102 +835 -0.787716 3.000000 3.263273 3.215009 3.241395 3.367788 4.184917 +836 -1.548491 3.000000 3.263273 3.215009 3.241395 3.422484 4.186276 +837 -6.920749 3.000000 3.263273 3.215009 3.295995 3.603606 4.247523 +838 3.608718 3.000000 3.339778 3.681870 3.568225 3.724733 4.255643 +839 16.767200 3.000000 3.339778 3.681870 3.568225 3.724733 4.255948 +840 4.164433 3.000000 3.339778 3.401780 3.506953 3.612689 4.235673 +841 5.098976 3.000000 3.339778 3.401780 3.295995 3.517509 4.234960 +842 -1.132046 3.000000 3.358650 3.681870 3.465326 3.672786 4.284294 +843 -0.429341 3.000000 3.545664 3.694005 3.580101 3.826235 4.387368 +844 3.318777 3.000000 3.358650 3.681870 3.526914 3.777243 4.333033 +845 -0.346047 3.000000 3.545664 3.843156 3.580101 3.817264 4.358146 +846 1.919328 3.000000 3.694106 3.843156 3.834766 3.862258 4.341850 +847 0.992457 3.000000 3.823383 3.322214 3.955246 3.767985 4.229888 +848 2.715543 3.000000 3.226797 3.322214 3.955246 3.789384 4.233095 +849 -0.430354 3.000000 3.226797 3.322214 3.966313 3.847345 4.422802 +850 -4.579176 5.000000 3.542740 3.299395 3.998499 3.928876 4.501671 +851 -3.004309 5.000000 3.056060 3.270213 3.711497 3.847345 4.476080 +852 2.069386 5.000000 3.149793 3.196283 3.711497 4.017648 4.740379 +853 2.933114 5.000000 3.149793 3.196283 3.711497 4.017648 4.735483 +854 10.294773 5.000000 3.435550 3.259076 4.048533 4.038927 4.735075 +855 -2.598693 5.000000 3.746049 3.262695 4.447061 4.285211 4.888453 +856 1.332669 5.000000 3.732592 3.262695 4.313934 4.333337 4.878284 +857 5.407839 5.000000 3.241649 3.154884 4.277709 4.233788 4.863772 +858 5.090794 5.000000 3.241649 3.154884 4.277709 4.235181 4.927157 +859 1.001533 5.000000 3.195159 3.088472 4.116225 4.235181 4.922075 +860 -0.647163 5.000000 3.195159 3.088472 4.116225 4.227250 4.435368 +861 -0.107056 5.000000 3.208617 3.047762 4.249352 4.333337 4.455799 +862 -3.642306 5.000000 3.208617 3.047762 4.263725 4.442465 4.498559 +863 -5.673594 5.000000 3.449007 3.047762 4.447061 4.636900 4.700873 +864 -0.792598 5.000000 3.435550 3.047762 4.313934 4.608596 4.708123 +865 3.519129 5.000000 3.732592 3.196283 4.558236 4.675652 4.736074 +866 1.441713 5.000000 4.289433 4.535141 4.879622 4.814103 4.793635 +867 0.929235 5.000000 4.302890 4.535141 4.879622 4.814103 4.790707 +868 -0.328249 5.000000 4.583239 4.535141 4.926736 4.893770 4.819760 +869 -8.070508 5.000000 5.148255 4.813561 5.016210 5.088720 4.868617 +870 7.887639 5.000000 5.255445 4.813561 5.033105 5.040657 4.883139 +871 -0.219072 5.000000 5.255445 4.813561 5.033105 5.040657 4.875855 +872 11.649209 5.000000 4.476050 4.772432 4.922872 4.893770 4.837691 +873 4.020583 5.000000 4.583239 4.772432 4.879622 4.936753 4.843386 +874 3.894712 5.000000 4.583239 4.772432 4.879622 4.865796 4.833743 +875 -6.315154 5.000000 4.396623 4.694384 4.859083 4.736603 4.619699 +876 1.980309 5.000000 4.240527 3.569635 4.751241 4.675652 4.597745 +877 3.156636 5.000000 4.240527 3.569635 4.751241 4.606157 4.597084 +878 -8.291929 5.000000 3.953270 3.426007 4.514987 4.466974 4.538681 +879 -0.340037 5.000000 3.953270 3.426007 4.514987 4.528842 4.560734 +880 8.919116 5.000000 4.332040 4.550756 4.859083 4.777980 4.640380 +881 -3.063581 5.000000 4.488136 4.936506 4.887829 4.961961 4.919543 +882 6.662776 5.000000 4.583239 5.080135 4.918285 4.995592 4.958527 +883 -7.948970 5.000000 4.428344 4.772432 4.998998 5.121459 5.362227 +884 2.985318 5.000000 4.241728 3.647683 4.891199 4.969578 5.263995 +885 4.967178 5.000000 3.658555 3.647683 4.769389 4.954401 5.258546 +886 -3.934817 5.000000 3.823438 3.740991 4.786110 4.970073 5.276477 +887 0.867510 5.000000 4.223627 3.976936 4.923732 5.136797 5.357228 +888 -2.543210 5.000000 4.843741 5.061755 5.100099 5.287745 5.388664 +889 5.551567 5.000000 4.843741 5.061755 5.310979 5.402935 5.403018 +890 3.595675 5.000000 4.806010 4.514671 4.818862 5.058228 5.199951 +891 -4.314848 5.000000 4.806010 4.514671 5.074988 5.121459 5.309229 +892 -0.016654 5.000000 4.806010 4.514671 5.074988 5.141809 5.307494 +893 -0.875097 5.000000 4.624252 4.278726 4.877776 4.961961 5.068873 +894 1.490265 5.000000 4.900235 4.732501 5.310979 5.141809 5.275762 +895 3.789427 5.000000 5.223289 5.061755 5.574519 5.478655 5.578500 +896 -1.025945 5.000000 4.805729 4.514671 5.310979 5.196787 5.454534 +897 1.033710 5.000000 4.805729 4.514671 5.310979 5.287745 5.458927 +898 1.490075 5.000000 4.843741 4.824727 5.585001 5.600300 5.687619 +899 5.923518 5.000000 4.843459 4.889699 5.585001 5.562792 5.670075 +900 -4.800176 5.000000 4.843459 4.889699 5.549839 5.600300 5.660922 +901 -9.946581 5.000000 4.806010 4.733989 5.265883 5.366831 5.550287 +902 4.338869 5.000000 4.624534 4.286992 4.635090 5.175071 5.513526 +903 14.262665 5.000000 4.624252 4.423933 4.641008 4.941615 5.493358 +904 -0.462271 5.000000 4.624252 4.423933 4.641008 4.940752 5.412793 +905 2.062066 5.000000 4.129121 4.423933 4.852603 4.941615 5.427730 +906 4.757129 5.000000 4.085632 4.016632 4.519414 4.874650 5.400482 +907 7.036645 5.000000 4.141334 4.111298 4.462945 4.822055 5.346344 +908 -2.489345 5.000000 4.223346 4.152445 4.641008 4.941615 5.375744 +909 -1.751339 5.000000 4.045482 3.976936 4.635090 4.917066 5.341423 +910 2.028441 5.000000 4.045482 3.976936 4.635090 5.070249 5.384630 +911 10.782682 5.000000 4.141053 3.976936 4.641008 5.070249 5.395836 +912 0.020329 5.000000 3.975680 3.905617 4.608938 4.868846 5.303650 +913 -1.628935 5.000000 3.975680 3.905617 4.595912 4.874650 5.302531 +914 -8.782086 5.000000 4.045482 4.215673 4.253523 5.070249 5.337491 +915 12.760311 5.000000 4.045482 4.215673 4.253523 5.070249 5.337227 +916 1.908713 5.000000 4.057973 4.215673 4.608938 4.907286 5.342695 +917 2.806770 5.000000 4.045482 4.106074 4.177078 4.894889 5.318387 +918 11.605220 5.000000 4.208290 4.106074 4.253523 4.941615 5.323241 +919 11.260197 5.000000 4.223068 4.215673 4.966874 5.196787 5.391405 +920 0.913256 5.000000 4.045482 3.905617 4.861485 4.940752 5.364741 +921 2.049888 5.000000 4.045482 3.905617 4.861485 4.926536 5.358075 +922 -0.929736 5.000000 4.045482 3.905617 4.861485 4.860429 5.082622 +923 -2.193199 5.000000 3.975680 3.864470 4.462945 4.647129 5.083263 +924 -5.899560 5.000000 3.863491 3.784069 3.949733 4.366170 4.697244 +925 -1.262703 5.000000 4.024294 4.030897 4.098989 4.510821 4.767767 +926 1.610233 5.000000 4.196631 4.111298 4.627504 4.685223 4.785785 +927 4.283363 5.000000 4.195058 4.302385 4.587521 4.661326 4.839312 +928 5.403657 5.000000 4.027551 4.238315 4.088715 4.438356 4.760266 +929 4.088473 5.000000 4.027551 4.238315 4.088715 4.438915 4.772583 +930 7.576778 5.000000 3.866747 3.966827 3.939460 4.365322 4.746189 +931 -0.781889 5.000000 3.866747 3.966827 3.939460 4.359429 4.747410 +932 1.601807 5.000000 3.738607 3.596756 3.939460 4.131427 4.523862 +933 0.101579 5.000000 3.863491 3.966827 4.083307 4.250072 4.540969 +934 7.050916 5.000000 3.735350 3.719998 4.083307 4.182880 4.522551 +935 1.569018 5.000000 3.704658 3.610399 3.503161 3.900190 4.215072 +936 -0.002263 5.000000 3.482203 3.240329 3.431770 3.593768 3.831949 +937 2.324108 5.000000 3.089134 3.240329 3.245351 3.544593 3.835892 +938 4.174902 5.000000 3.089134 3.240329 3.452905 3.560577 3.839468 +939 -3.202602 5.000000 3.226081 3.022695 3.450227 3.448255 3.511829 +940 0.428766 5.000000 3.197676 2.689056 3.164886 3.306090 3.170430 +941 -4.588781 5.000000 2.870346 2.796455 3.164886 3.430238 3.186843 +942 -3.443394 5.000000 3.096802 2.909683 3.164886 3.430238 3.192906 +943 -0.047314 5.000000 3.887330 3.492061 3.707641 3.522594 3.320903 +944 1.566821 5.000000 3.412475 3.376922 3.707641 3.672888 3.532972 +945 -3.858219 5.000000 3.412475 3.376922 3.707641 3.526577 3.414776 +946 4.399602 5.000000 3.412475 3.376922 3.707641 3.522594 3.403349 +947 -3.800820 5.000000 4.031281 3.993973 3.839183 3.844337 3.721307 +948 1.884652 5.000000 3.568748 3.526735 3.815276 3.801018 3.677873 +949 -3.046701 5.000000 3.479915 3.413507 3.245329 3.657918 3.613366 +950 0.894097 5.000000 3.479915 3.413507 3.245329 3.665471 3.617136 +951 2.364784 5.000000 3.347108 3.383354 3.013588 3.395144 3.427585 +952 3.589254 5.000000 3.347108 3.383354 3.013588 3.381011 3.426777 +953 4.228067 5.000000 3.347108 3.383354 3.013588 3.360118 3.421810 +954 -0.228697 5.000000 3.479915 3.724471 3.127481 3.451760 3.453902 +955 1.153853 5.000000 3.509390 3.502082 3.127481 3.381011 3.404449 +956 0.107194 5.000000 3.735846 3.827852 3.348653 3.672888 3.731989 +957 0.167111 5.000000 4.162151 3.858005 3.815276 3.982862 4.007414 +958 3.147823 5.000000 4.162151 3.858005 3.815276 3.886087 3.999301 +959 -2.239973 5.000000 3.573565 3.502082 3.460174 3.665471 3.953648 +960 -3.261503 5.000000 3.568748 3.754624 3.821580 3.902935 4.049106 +961 -1.407582 5.000000 4.250984 3.867852 4.042150 4.038791 4.093972 +962 2.517527 5.000000 4.250984 3.867852 4.042150 4.123780 4.145083 +963 -5.388479 5.000000 3.995440 3.993973 4.161425 4.081666 4.120984 +964 8.801876 5.000000 3.995847 3.993973 4.233123 4.035219 4.121813 +965 -2.700134 5.000000 4.133449 4.335091 4.466806 4.410819 4.298934 +966 -0.337379 5.000000 4.133449 4.335091 4.466806 4.410819 4.290690 +967 -8.787952 5.000000 4.419210 3.971233 4.344644 4.396896 4.290204 +968 -0.320155 5.000000 4.250984 3.867852 4.249740 4.175697 4.251973 +969 -1.975703 5.000000 4.250984 3.867852 4.249740 4.142849 4.250381 +970 4.231599 5.000000 3.568748 3.526735 4.144564 4.069873 4.221413 +971 0.454910 5.000000 4.250984 3.993973 4.344644 4.265449 4.256900 +972 -0.658922 5.000000 4.250984 3.993973 4.344644 4.274367 4.253187 +973 0.996911 5.000000 3.660233 3.616893 4.144564 4.264021 4.242248 +974 -2.839593 5.000000 3.573565 3.396556 4.138318 4.081666 4.206367 +975 -6.154551 5.000000 3.749066 3.616893 4.387216 4.118500 4.233324 +976 9.689669 5.000000 4.250984 4.084132 4.402248 4.301085 4.264703 +977 9.319547 5.000000 4.133449 4.084132 4.402248 4.289885 4.269196 +978 1.588541 5.000000 4.175757 4.335091 4.757726 4.419468 4.383903 +979 1.449763 5.000000 4.207153 3.971233 5.021169 4.806105 4.759353 +980 6.745770 5.000000 4.508943 4.183849 4.910948 4.805979 4.808167 +981 4.226361 5.000000 4.177951 4.188394 4.799851 4.807988 4.843379 +982 -6.052798 5.000000 4.473302 4.348665 4.760599 4.809336 4.903000 +983 3.242879 5.000000 4.677676 4.508936 5.072554 4.977193 4.952553 +984 1.423245 5.000000 4.473302 4.436964 4.760599 4.843016 4.939043 +985 -7.291660 5.000000 4.177951 4.078226 4.665393 4.777649 4.776579 +986 -3.511600 5.000000 4.187240 4.230841 4.710933 4.587962 4.827588 +987 -3.767617 5.000000 4.242607 4.508936 4.894074 4.810059 4.902228 +988 -1.558932 5.000000 4.015952 4.248744 4.710933 4.510046 4.720420 +989 1.708610 5.000000 4.155905 4.342892 4.391040 4.757592 4.797493 +990 -0.844955 5.000000 3.863556 4.437040 4.177548 4.527021 4.861991 +991 3.858505 5.000000 3.610522 4.508936 4.311348 4.738681 4.889573 +992 2.016079 5.000000 3.863556 4.639039 4.731916 4.713819 4.978938 +993 -2.361595 5.000000 4.116591 4.769141 4.321601 4.782224 5.071283 +994 2.220296 5.000000 4.288644 4.899244 5.313357 4.885008 5.168955 +995 3.272895 5.000000 3.910838 5.029346 5.035401 4.802522 5.239045 +996 3.672797 5.000000 3.759372 4.464084 4.177548 4.671521 5.174955 +997 1.606136 5.000000 3.607907 4.591971 3.446223 4.604706 4.900145 +998 -6.014203 5.000000 3.486680 4.604460 3.002670 4.187014 4.576577 +999 -12.099984 5.000000 3.571207 5.007095 3.459641 4.455075 4.669759 diff --git a/gsl-2.5/doc/examples/movstat3 b/gsl-2.5/doc/examples/movstat3 new file mode 100755 index 00000000..ddc31492 --- /dev/null +++ b/gsl-2.5/doc/examples/movstat3 @@ -0,0 +1,228 @@ +#! /bin/sh + +# movstat3 - temporary wrapper script for .libs/movstat3 +# Generated by libtool (GNU libtool) 2.4.2 +# +# The movstat3 program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s/\([`"$\\]\)/\\\1/g' + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command="(cd /home/groups/kipac/chto/package/gsl/gsl-2.5/doc/examples; LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LIBRARY_PATH; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; LD_LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/fftw/include:/home/users/chto/lib/fftw/lib:/home/users/chto/lib/healpix/lib:/home/users/chto/lib/namaster/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/include:/home/users/chto/cpp/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LD_LIBRARY_PATH; PATH=/share/software/user/open/curl/7.54.0/bin:/share/software/user/open/libressl/2.5.3/bin:/home/users/chto/lib/cfitsio:/home/users/chto/lib/cfitsio/include:/home/users/chto/lib:/home/users/chto/bin/bin:/home/users/chto/bin:/home/users/chto/.texlive/bin/x86_64-linux:/home/groups/kipac/chto/anaconda2/envs/newenv3/bin:/home/users/chto/.local/bin/include:/home/users/chto/.local/bin/lib:/home/users/chto/.local/bin:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/bin64:/share/software/user/open/fftw/3.3.6/bin:/home/groups/kipac/chto/anaconda2/condabin:/share/software/user/restricted/ifort/2019/bin:/share/software/user/open/gsl/2.3/bin:/share/software/user/srcc/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/dell/srvadmin/bin:/opt/dell/srvadmin/iSM/bin:/home/users/chto/bin; export PATH; gcc -g -O2 -o \$progdir/\$file movstat3.o ../../.libs/libgsl.so ../../cblas/.libs/libgslcblas.so -lm -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/.libs -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/cblas/.libs -Wl,-rpath -Wl,/usr/local/lib)" + +# This environment variable determines our operation mode. +if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then + # install mode needs the following variables: + generated_by_libtool_version='2.4.2' + notinst_deplibs=' ../../libgsl.la ../../cblas/libgslcblas.la' +else + # When we are sourced in execute mode, $file and $ECHO are already set. + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + file="$0" + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + ECHO="printf %s\\n" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ which is used only on +# windows platforms, and (c) all begin with the string --lt- +# (application programs are unlikely to have options which match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's ../../libtool value, followed by no. +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=$0 + shift + for lt_opt + do + case "$lt_opt" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%/[^/]*$%%'` + test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=. + lt_dump_F=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%^.*/%%'` + cat "$lt_dump_D/$lt_dump_F" + exit 0 + ;; + --lt-*) + $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n "$lt_option_debug"; then + echo "movstat3:movstat3:${LINENO}: libtool wrapper (GNU libtool) 2.4.2" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + $ECHO "movstat3:movstat3:${LINENO}: newargv[$lt_dump_args_N]: $lt_arg" + lt_dump_args_N=`expr $lt_dump_args_N + 1` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ + + if test -n "$lt_option_debug"; then + $ECHO "movstat3:movstat3:${LINENO}: newargv[0]: $progdir/$program" 1>&2 + func_lt_dump_args ${1+"$@"} 1>&2 + fi + exec "$progdir/$program" ${1+"$@"} + + $ECHO "$0: cannot exec $program $*" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from $@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case " $* " in + *\ --lt-*) + for lt_wr_arg + do + case $lt_wr_arg in + --lt-*) ;; + *) set x "$@" "$lt_wr_arg"; shift;; + esac + shift + done ;; + esac + func_exec_program_core ${1+"$@"} +} + + # Parse options + func_parse_lt_options "$0" ${1+"$@"} + + # Find the directory that this script lives in. + thisdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + test "x$thisdir" = "x$file" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=`ls -ld "$file" | /usr/bin/sed -n 's/.*-> //p'` + while test -n "$file"; do + destdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + + # If there was a directory component, then change thisdir. + if test "x$destdir" != "x$file"; then + case "$destdir" in + [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;; + *) thisdir="$thisdir/$destdir" ;; + esac + fi + + file=`$ECHO "$file" | /usr/bin/sed 's%^.*/%%'` + file=`ls -ld "$thisdir/$file" | /usr/bin/sed -n 's/.*-> //p'` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no + if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then + # special case for '.' + if test "$thisdir" = "."; then + thisdir=`pwd` + fi + # remove .libs from thisdir + case "$thisdir" in + *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /usr/bin/sed 's%[\\/][^\\/]*$%%'` ;; + .libs ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=`cd "$thisdir" && pwd` + test -n "$absdir" && thisdir="$absdir" + + program=lt-'movstat3' + progdir="$thisdir/.libs" + + if test ! -f "$progdir/$program" || + { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /usr/bin/sed 1q`; \ + test "X$file" != "X$progdir/$program"; }; then + + file="$$-$program" + + if test ! -d "$progdir"; then + mkdir "$progdir" + else + rm -f "$progdir/$file" + fi + + # relink executable if necessary + if test -n "$relink_command"; then + if relink_command_output=`eval $relink_command 2>&1`; then : + else + printf %s\n "$relink_command_output" >&2 + rm -f "$progdir/$file" + exit 1 + fi + fi + + mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null || + { rm -f "$progdir/$program"; + mv -f "$progdir/$file" "$progdir/$program"; } + rm -f "$progdir/$file" + fi + + if test -f "$progdir/$program"; then + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + # Run the actual program with our arguments. + func_exec_program ${1+"$@"} + fi + else + # The program doesn't exist. + $ECHO "$0: error: \`$progdir/$program' does not exist" 1>&2 + $ECHO "This script is just a wrapper for $program." 1>&2 + $ECHO "See the libtool documentation for more information." 1>&2 + exit 1 + fi +fi diff --git a/gsl-2.5/doc/examples/movstat3.c b/gsl-2.5/doc/examples/movstat3.c new file mode 100644 index 00000000..5a603140 --- /dev/null +++ b/gsl-2.5/doc/examples/movstat3.c @@ -0,0 +1,65 @@ +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +double +func(const size_t n, double x[], void * params) +{ + const double alpha = *(double *) params; + + gsl_sort(x, 1, n); + + return gsl_stats_trmean_from_sorted_data(alpha, x, 1, n); +} + +int +main(void) +{ + const size_t N = 1000; /* length of time series */ + const size_t K = 11; /* window size */ + double alpha = 0.1; /* trimmed mean parameter */ + gsl_vector *x = gsl_vector_alloc(N); /* input vector */ + gsl_vector *y = gsl_vector_alloc(N); /* filtered output vector for alpha1 */ + gsl_rng *r = gsl_rng_alloc(gsl_rng_default); + gsl_movstat_workspace *w = gsl_movstat_alloc(K); + gsl_movstat_function F; + size_t i; + double sum = 0.0; + + /* generate input signal */ + for (i = 0; i < N; ++i) + { + double ui = gsl_ran_gaussian(r, 1.0); + double outlier = (gsl_rng_uniform(r) < 0.01) ? 10.0*GSL_SIGN(ui) : 0.0; + sum += ui; + gsl_vector_set(x, i, sum + outlier); + } + + /* apply moving window function */ + F.function = func; + F.params = α + gsl_movstat_apply(GSL_MOVSTAT_END_PADVALUE, &F, x, y, w); + + /* print results */ + for (i = 0; i < N; ++i) + { + double xi = gsl_vector_get(x, i); + double yi = gsl_vector_get(y, i); + + printf("%f %f\n", xi, yi); + } + + gsl_vector_free(x); + gsl_vector_free(y); + gsl_rng_free(r); + gsl_movstat_free(w); + + return 0; +} diff --git a/gsl-2.5/doc/examples/movstat3.txt b/gsl-2.5/doc/examples/movstat3.txt new file mode 100644 index 00000000..8908969a --- /dev/null +++ b/gsl-2.5/doc/examples/movstat3.txt @@ -0,0 +1,1000 @@ +0.133919 0.276114 +0.728047 0.094351 +2.402456 -0.079084 +1.115486 -0.254480 +-0.162016 -0.440587 +-1.501952 -0.659391 +-1.541044 -0.724272 +-1.426997 -0.926058 +-1.444645 -1.274116 +-2.017030 -1.539856 +-1.835321 -1.865572 +-0.450003 -2.101777 +-1.088034 -2.365805 +-2.553682 -2.660233 +-3.381444 -2.763080 +-3.627798 -2.818354 +-3.917291 -2.762394 +-4.141471 -2.818432 +-4.076856 -2.963609 +-2.370265 -2.908849 +-2.514497 -2.681098 +-1.331678 -2.386039 +-1.592375 -2.147711 +-2.638269 -1.760234 +-2.060850 -1.611102 +-0.972274 -1.573009 +-0.257272 -1.586761 +-1.772335 -1.778994 +-0.589564 -1.943796 +-1.296081 -2.034095 +-2.027427 -2.143194 +-3.061772 -2.403673 +-3.964778 -2.778696 +-3.075592 -3.148963 +-3.450958 -3.576487 +-3.042740 -3.921212 +-3.316585 -4.038872 +-5.644687 -4.180794 +-5.104731 -4.241522 +-5.143800 -4.461146 +-5.129949 -4.693582 +-4.101686 -4.894492 +-4.339064 -5.014553 +-4.511335 -4.898206 +-5.052207 -4.946890 +-5.542885 -4.849052 +-5.124773 -4.734800 +-5.182236 -4.817522 +-4.495760 -4.955404 +-5.580003 -5.029333 +-4.263255 -5.043533 +-4.042668 -4.876842 +-4.846184 -4.682876 +-16.672890 -4.452275 +-5.176692 -4.353543 +-5.180009 -4.083774 +-3.379074 -4.110754 +-3.106832 -4.230454 +-2.439358 -4.368534 +-3.607167 -4.368534 +-3.152086 -4.521254 +-4.506071 -4.763144 +-5.119970 -5.284490 +-6.088904 -5.707670 +-6.551172 -6.067230 +-7.357022 -6.363759 +-9.026579 -6.532698 +-8.071187 -6.569975 +-6.915448 -6.569975 +-6.388126 -6.458495 +-6.275928 -6.244167 +-6.026521 -5.939830 +-5.455463 -5.317285 +-5.085584 -4.699535 +-4.622226 -4.140505 +-4.617985 -3.636438 +-2.468281 -3.200792 +-0.074973 -2.945073 +-1.355697 -2.650531 +-1.356859 -2.387378 +-1.739327 -2.229742 +-2.105708 -2.188474 +-3.153990 -2.079946 +-2.434705 -2.135417 +-2.253847 -2.188067 +-3.199265 -2.188067 +-2.827853 -2.152933 +-1.491530 -2.011698 +-1.854937 -1.872420 +-1.830705 -1.666873 +-1.423125 -1.561829 +-0.498595 -1.329370 +-0.834586 -1.234596 +-1.900494 -1.163814 +-0.584780 -1.124394 +-1.308451 -1.033325 +-0.735721 -1.086366 +-1.047530 -1.179030 +-0.854495 -1.151274 +-1.500155 -1.003416 +-1.011085 -0.992844 +-1.923564 -0.839102 +-1.418754 -0.760946 +0.075220 -0.858283 +-0.569776 -0.822780 +-0.489626 -0.730427 +1.024053 -0.519072 +-0.032311 -0.281189 +-2.448040 -0.183587 +-0.534972 -0.250557 +-0.668978 -0.184302 +0.891108 -0.019278 +0.217385 -0.019278 +-0.540338 0.136607 +-0.527505 0.398954 +0.026518 0.667121 +0.995594 0.881047 +1.370647 0.886958 +1.692149 1.094108 +2.104650 1.386569 +1.878530 1.709333 +1.384998 1.892281 +0.944305 2.079669 +2.081734 2.039445 +3.029960 2.043475 +2.931387 2.045954 +2.590838 1.942151 +2.682091 1.795818 +1.008630 1.902657 +1.728415 1.796009 +2.126962 1.593796 +0.067998 1.557750 +-0.153388 1.567889 +1.905858 1.579792 +1.121899 1.742647 +1.111473 1.923433 +2.357674 2.007114 +3.566190 2.298741 +2.789218 2.298741 +2.474325 2.181783 +3.355488 2.143542 +2.880096 1.893674 +2.692635 1.341903 +0.777733 0.467928 +0.853238 -0.531346 +-1.137343 -1.509975 +-2.608262 -2.615379 +-4.510291 -3.622099 +-6.204247 -4.457685 +-6.333333 -5.169875 +-7.068545 -5.560910 +-7.668243 -5.702448 +-6.367839 -5.702448 +-6.667043 -5.574312 +-5.631973 -5.228527 +-4.656653 -4.787531 +-3.882104 -4.170070 +-3.357076 -3.737308 +-2.364371 -3.368439 +-3.092173 -3.293700 +-1.421071 -3.293700 +-1.511396 -3.311642 +-2.772185 -3.292273 +-3.048023 -3.343195 +-4.959319 -3.468265 +-5.147475 -3.696632 +-4.818134 -4.067665 +-3.707785 -4.282892 +-3.815373 -4.658277 +-3.489995 -4.986622 +-14.137555 -5.168666 +-4.850700 -5.467116 +-4.709223 -5.764967 +-6.426491 -6.255301 +-6.445101 -6.697600 +-6.597715 -6.743059 +-7.833527 -6.405990 +-7.498788 -6.390270 +-8.120790 -6.419580 +-7.796062 -6.227665 +-5.118359 -5.935204 +-5.087165 -5.566212 +-4.699255 -4.989928 +-4.973012 -4.198352 +-3.276785 -3.332919 +-3.812951 -2.800117 +-2.646972 -2.164659 +-0.374605 -1.531116 +0.728869 -0.956661 +-0.007167 -0.443480 +-0.323144 -0.038358 +0.631962 0.294326 +0.805680 0.446891 +0.470841 0.580569 +1.851719 0.463679 +0.369312 0.367770 +0.347183 0.245605 +0.998487 0.004824 +0.879957 -0.345305 +-0.870347 -0.724208 +-1.535071 -1.126683 +-1.422628 -1.397563 +-2.345476 -1.535638 +-3.268049 -1.549930 +-2.939290 -1.549930 +-2.623782 -1.367927 +-2.068610 -1.229655 +-0.895495 -1.009122 +0.751328 -0.892555 +1.370399 -0.814393 +0.767679 -0.625650 +-0.290622 -0.494743 +0.562173 -0.409490 +-1.296378 -0.379490 +-2.235833 -0.436661 +-0.925094 -0.436661 +-1.057666 -0.368594 +-1.301337 -0.249569 +-0.625496 -0.256137 +0.236789 -0.043494 +1.380286 -0.005302 +2.200370 0.119508 +0.780601 0.473288 +0.503061 0.824175 +0.617412 1.149937 +-0.957608 1.097715 +0.198188 0.978840 +2.126361 0.668191 +2.306367 0.568356 +2.418842 0.559828 +-0.233213 0.662040 +0.310416 0.903472 +-0.595473 1.150177 +-0.117919 1.154459 +0.426310 1.166957 +1.537325 1.251130 +1.577413 1.673063 +2.418531 2.035137 +2.164905 2.495042 +3.176398 2.996303 +3.564192 3.307124 +3.569078 3.441012 +4.021223 3.729076 +4.937664 3.737704 +5.063676 3.737704 +4.334714 3.662610 +2.782406 3.520994 +4.757479 3.376185 +2.496185 3.172954 +2.289650 2.929144 +2.500548 2.662689 +2.192145 2.410526 +2.265799 2.223440 +2.065253 2.031805 +2.743371 1.988461 +2.359380 2.038874 +1.098633 2.147821 +1.018649 2.373600 +0.890033 2.344726 +2.106088 2.486624 +3.481068 2.451364 +4.455412 2.492713 +4.224157 2.514389 +2.005936 2.528190 +3.342334 2.702030 +2.426032 2.607253 +2.731514 2.347452 +1.293718 2.002939 +1.142861 1.860413 +2.707418 1.772126 +1.253101 1.605617 +1.123533 1.452373 +1.046841 1.282323 +2.059603 1.296704 +1.211356 1.355768 +1.232930 1.342415 +0.334857 1.432026 +1.176966 1.649897 +1.423148 1.883110 +1.674430 1.750355 +1.939429 1.652967 +3.084372 1.764195 +3.824729 1.880205 +3.145757 1.751891 +0.864810 1.504703 +0.022136 1.087030 +2.233989 0.617025 +1.378946 0.014404 +-0.801544 -0.645980 +-2.084624 -1.219898 +-2.931275 -1.648804 +-2.290618 -2.160401 +-2.339220 -2.748269 +-2.797697 -2.967014 +-2.995338 -3.074094 +-4.718787 -3.237433 +-4.582241 -3.255361 +-3.911864 -3.449319 +-2.770250 -3.665823 +-3.048347 -4.016577 +-3.760666 -4.215820 +-3.092624 -4.180587 +-4.084845 -4.184625 +-5.954484 -4.216224 +-6.125231 -4.558100 +-4.788526 -4.876615 +-4.401684 -5.102787 +-4.618585 -5.276667 +-4.196258 -5.484099 +-6.490801 -5.366824 +-5.959260 -5.231394 +-5.796213 -5.262655 +-5.649763 -5.297966 +-6.063147 -5.337600 +-4.899009 -5.337600 +-4.906356 -5.015635 +-5.069874 -4.773469 +-4.719483 -4.611112 +-4.975295 -4.356689 +-3.165467 -4.243553 +-2.122030 -4.088041 +-3.779758 -3.778672 +-4.335005 -3.422414 +-3.359953 -2.962839 +-4.051653 -2.503991 +-3.499400 -2.110569 +-1.768976 -1.856123 +-0.583313 -1.296298 +-0.205369 -0.551465 +1.258660 0.153358 +0.375332 0.951803 +0.167986 1.498429 +2.651846 1.854770 +2.983459 2.307823 +3.686605 2.847855 +3.872109 3.270235 +3.150657 3.753820 +2.623749 3.926418 +5.060077 3.959535 +5.028278 4.042577 +5.385131 4.010247 +4.727598 4.026122 +4.177130 4.157845 +2.949897 4.428426 +3.730838 4.331465 +3.395642 4.232930 +4.014982 4.102061 +4.336160 4.063339 +14.445049 3.963551 +4.187429 3.963551 +4.141458 3.846512 +4.207309 3.896382 +4.379100 3.981778 +3.279038 4.093871 +2.500615 4.043623 +2.677489 4.136268 +3.844475 4.041694 +4.783544 3.937749 +5.345002 3.958893 +4.892768 4.188156 +5.021231 4.188156 +3.290288 4.183904 +3.271809 4.080649 +4.569393 3.959153 +5.342405 3.635378 +2.428432 3.380067 +2.639222 3.169031 +2.915180 3.189182 +3.690080 3.148649 +2.243538 2.918077 +2.594966 2.883370 +3.121907 2.905447 +3.471647 2.917209 +2.907017 2.842582 +2.494242 2.816174 +3.377719 2.952630 +2.627120 3.106247 +2.745080 3.370139 +1.852410 3.803776 +3.233974 4.159524 +3.977520 4.630545 +5.496934 4.892680 +7.446486 5.182818 +7.374375 5.574907 +6.108751 5.907768 +6.733428 6.042828 +5.736936 6.042828 +5.238363 5.917991 +6.273881 5.568648 +6.229725 5.457463 +5.193058 5.369225 +4.230282 5.306466 +4.373406 5.276384 +3.832263 5.186485 +5.732769 5.019144 +5.314607 4.886219 +5.709051 4.735020 +5.466199 4.619246 +4.429272 4.379860 +4.723655 4.190661 +4.536445 3.866406 +3.188313 3.757388 +2.218931 3.584984 +2.129475 3.515467 +1.539656 3.532947 +2.790758 3.428320 +4.333442 3.433891 +3.914564 3.489302 +4.098004 3.413827 +4.586587 3.313635 +3.644949 3.330042 +4.771233 3.205714 +3.687012 2.811615 +1.227743 2.346717 +0.786559 1.901713 +1.687320 1.412067 +1.671802 1.197804 +-0.569571 1.029859 +-0.269522 1.029859 +0.092968 1.076871 +0.179777 1.235446 +1.716580 1.308903 +2.175507 1.654404 +2.348435 2.221910 +1.650850 2.778105 +2.213728 3.300214 +4.781311 3.693093 +5.733539 4.139422 +4.838032 4.582910 +5.098723 4.935721 +4.878764 5.378375 +5.186761 5.580279 +6.166901 5.837445 +6.598444 5.949744 +5.523733 6.154560 +6.197611 6.130120 +7.152529 6.091799 +7.297293 5.977655 +6.744233 5.680667 +6.722108 5.310106 +4.533874 5.038540 +3.494007 4.649108 +4.159463 4.064695 +3.263396 3.562179 +3.079638 3.044929 +2.692724 2.747451 +1.892810 2.673207 +1.531368 2.683990 +2.221595 2.683990 +2.066853 2.671774 +1.856572 2.850674 +3.491266 3.106013 +3.591053 3.495401 +4.990771 3.895905 +3.153458 4.349845 +4.689737 4.986161 +15.151312 5.695400 +5.397308 6.169750 +5.461107 6.816431 +6.307054 7.336014 +7.793692 8.005214 +9.536615 8.674770 +7.760413 8.570693 +9.411183 9.211590 +9.667019 9.610048 +10.712534 9.884032 +11.423310 10.287323 +10.486624 10.542182 +11.229177 10.542182 +9.893180 10.832814 +10.226261 10.986157 +11.830355 10.970554 +12.026865 10.791473 +1.368634 10.584169 +12.161129 10.330018 +11.047111 9.967920 +10.572104 9.596900 +9.811583 9.254963 +8.620890 8.703151 +8.941815 8.703151 +6.634300 8.163708 +6.887081 7.648865 +8.752915 7.259827 +7.060557 6.899902 +6.192129 6.503761 +5.702488 6.089465 +5.938511 5.886787 +6.310247 5.707606 +5.055626 5.707606 +5.024249 5.820582 +4.801423 6.126663 +4.810198 6.748219 +5.274448 7.465742 +8.077345 8.218041 +8.946852 9.130143 +11.296500 10.061539 +12.396212 11.007249 +13.662685 11.762515 +13.080936 12.082755 +13.264548 12.259513 +13.406808 12.417945 +13.321589 12.499758 +12.071844 12.478642 +10.959503 12.449476 +10.537680 12.373121 +11.963564 12.283837 +12.032818 12.283837 +12.206172 12.338501 +13.144310 12.556976 +12.393740 12.846651 +12.460995 12.895600 +13.813560 12.968901 +14.703027 13.088905 +14.038123 13.345492 +13.566579 13.459792 +12.404107 13.637417 +12.692529 13.868581 +13.286200 14.009671 +15.083374 13.754236 +14.173008 13.553576 +14.002737 13.433272 +14.541464 13.623240 +15.283670 13.911145 +12.232182 14.278759 +11.550045 14.347277 +12.483844 14.612271 +14.113823 14.917345 +16.594728 15.219404 +16.748404 15.492773 +15.700035 16.200592 +16.557958 16.809489 +17.259995 17.361566 +17.743988 17.810772 +18.602550 18.116371 +19.082509 18.343020 +17.963922 18.561371 +19.742891 18.751905 +19.799196 18.849442 +19.345119 18.951484 +18.788247 19.084445 +18.523113 19.199834 +18.974808 19.395473 +18.621820 19.341310 +18.882299 19.203810 +20.121015 19.314867 +20.613373 19.517659 +20.283860 19.778352 +19.255429 19.996782 +18.561693 20.414756 +20.344629 20.765631 +31.163423 20.945174 +20.907931 21.040145 +20.940683 21.000200 +22.383586 21.066678 +22.040169 21.183857 +21.736907 21.341382 +21.468111 21.247194 +19.924352 21.337880 +19.853733 21.260994 +20.908350 21.207140 +21.762346 21.046100 +21.535902 20.836858 +21.724105 20.639416 +20.248708 20.609855 +21.555482 20.662446 +20.312980 20.585076 +19.691132 20.411603 +19.048752 20.324885 +19.658303 20.214718 +20.327055 20.359313 +20.212015 20.359313 +20.162847 20.446608 +20.755442 20.496955 +20.563977 20.648004 +21.550063 20.802227 +21.680123 20.952568 +21.098637 21.043073 +20.144252 21.041007 +21.017747 20.896710 +21.532259 20.877548 +21.768581 20.750405 +21.026562 20.455798 +19.456772 20.225577 +19.028660 20.090430 +20.391514 19.858231 +20.405780 19.603884 +19.026646 19.272662 +17.798299 19.006554 +18.927929 18.890089 +18.927955 18.817008 +19.243142 18.568386 +18.045560 18.407848 +18.010806 18.087005 +18.408590 17.875317 +18.370932 17.398744 +18.153916 16.926182 +16.139053 16.529478 +14.251999 16.173437 +15.893116 15.932280 +14.638765 15.527111 +14.674898 15.314334 +14.838256 15.238972 +14.841187 15.130969 +15.840401 15.130969 +14.724406 15.169392 +16.238921 15.384195 +15.560663 15.451067 +15.167031 15.444467 +14.572601 15.414625 +16.606267 15.174551 +16.571990 14.872965 +15.276747 14.534815 +14.778862 14.376012 +13.679742 14.339034 +12.010130 14.342701 +11.720424 14.170691 +13.195570 14.170691 +14.131435 14.197012 +14.834232 14.289849 +14.605601 14.554631 +15.023902 15.026966 +15.614401 15.405463 +15.513630 15.740504 +16.261146 15.992090 +16.062781 16.326591 +16.602039 16.659408 +17.146807 17.047677 +17.844746 17.505449 +16.869870 17.954477 +18.019254 18.379803 +19.008050 18.626657 +20.104029 18.822851 +19.734352 19.031663 +20.198570 19.095527 +20.089083 19.095527 +18.823720 19.086822 +18.635620 18.729780 +19.026116 18.192142 +18.419522 17.696225 +17.940904 17.237216 +15.794674 16.811277 +15.265283 16.401231 +14.737492 15.974504 +15.271107 15.594275 +15.957994 15.238340 +15.192671 15.038790 +15.133302 14.805401 +14.795082 14.333479 +14.997459 13.737002 +14.162042 12.990280 +13.694167 12.265989 +11.017989 11.583642 +9.369199 10.761789 +8.550610 9.909570 +7.600779 9.072657 +8.674054 8.348520 +8.992178 8.008302 +-2.196372 8.008302 +7.125110 8.066022 +6.629824 8.255156 +7.176939 8.524547 +7.956022 8.604244 +9.888684 8.709871 +10.252815 9.039653 +11.040690 9.368819 +10.025298 9.731593 +9.391332 9.970087 +9.942817 10.074760 +9.597858 10.202760 +10.087603 10.299527 +10.441911 10.333963 +10.102464 10.568398 +10.333389 10.724307 +11.123714 10.893701 +11.350615 11.029997 +12.135215 11.246289 +12.342629 11.457480 +11.001033 11.692816 +11.467365 11.827952 +11.314267 12.103361 +12.049090 12.368902 +12.451419 12.706672 +13.602397 13.076037 +12.217254 13.619828 +13.740483 14.184318 +15.175142 14.714318 +15.666915 15.116218 +16.547774 15.494898 +16.208386 15.816562 +16.819094 16.034990 +17.061886 16.034990 +15.834354 15.995894 +15.859541 15.919986 +16.497367 15.680116 +15.706337 15.441801 +14.063547 15.201073 +14.823281 15.109746 +14.983736 15.000151 +14.388952 14.994534 +13.382577 14.960406 +14.652541 14.971811 +15.675425 15.070675 +14.847997 14.982601 +15.808988 14.804694 +15.501833 14.523164 +16.359209 14.342161 +14.953317 13.991077 +14.030617 13.414669 +11.855184 12.909932 +11.753548 12.296993 +11.492782 11.668963 +10.305366 11.088800 +10.487754 10.553397 +10.292535 10.553397 +9.849561 10.139567 +9.731853 9.705256 +9.211991 9.416505 +8.130711 9.326598 +19.751746 9.174716 +7.844749 9.068547 +7.764224 9.048912 +8.894025 8.936065 +9.496203 9.025337 +9.120819 9.146274 +9.337011 9.045249 +9.672848 9.141471 +8.716229 9.197384 +10.015441 9.238283 +9.219141 9.295977 +9.106215 9.326113 +8.710750 9.363158 +9.213964 9.321544 +9.262122 9.459126 +10.019188 9.459543 +9.392049 9.403055 +9.670414 9.412763 +9.298319 9.517506 +9.954473 9.456542 +10.483519 9.505303 +8.443160 9.531046 +9.193584 9.516307 +9.653446 9.442335 +8.665282 9.347318 +9.700969 9.131405 +10.250881 8.738901 +9.259392 8.454298 +9.004671 8.074770 +8.011262 7.633586 +6.718342 7.491302 +5.212562 7.245482 +5.881734 7.091647 +5.777835 7.088755 +5.682790 6.924685 +7.384727 6.774260 +7.488584 6.606951 +7.874875 6.579047 +8.978647 6.425623 +7.502016 6.248903 +6.657437 6.089150 +4.961421 5.733288 +4.500925 5.371078 +4.187354 4.970054 +3.705592 4.548229 +4.245012 4.068918 +4.181964 3.756847 +4.228702 3.697853 +4.265653 3.697853 +2.343638 3.762828 +1.025213 3.939685 +2.152784 4.013210 +3.969977 3.909514 +4.772131 3.877396 +5.613650 3.933521 +5.297305 4.191817 +4.906737 4.514138 +3.248699 4.701163 +3.939639 4.773031 +4.770780 4.733412 +4.668303 4.673639 +5.053668 4.473087 +4.931925 4.297284 +4.616795 4.314971 +4.415554 4.303389 +4.759347 4.334821 +3.231042 4.422419 +3.324516 4.511779 +3.407882 4.481232 +3.835396 4.693767 +5.456687 4.919085 +5.857908 5.191399 +6.529610 5.460178 +4.656999 5.632159 +7.324861 5.708009 +6.443420 5.890055 +7.210172 6.074507 +5.743525 6.202426 +4.955717 6.290787 +4.518043 6.620585 +6.156455 6.688287 +7.116756 6.942237 +7.009178 7.083388 +7.625185 7.502479 +7.934176 8.052414 +9.515337 8.473689 +8.728965 8.602206 +8.480539 8.754147 +9.947932 8.754147 +9.905135 8.853707 +11.264929 8.785042 +8.165825 8.516065 +8.484223 8.372016 +7.094545 8.348980 +8.521226 8.030012 +7.316196 7.740725 +7.077217 7.575316 +7.432522 7.453257 +8.273217 7.277689 +7.032545 7.217552 +7.301554 7.025442 +6.544227 6.813840 +7.067290 6.605650 +6.904117 6.311738 +6.553311 5.843008 +5.203508 5.392034 +5.411779 4.847942 +4.787313 4.220538 +2.973780 3.469160 +3.082981 2.834456 +2.170460 2.286119 +0.897589 1.826542 +0.141722 1.384034 +-0.608689 1.073545 +0.840973 0.675493 +0.476747 0.343727 +1.067315 0.343727 +0.804743 0.373082 +0.288579 0.675273 +-2.018337 1.018915 +-0.815431 1.185582 +9.773635 1.515636 +1.161779 1.767255 +2.861438 2.119135 +2.484089 2.565124 +2.340976 3.234356 +3.447235 3.667960 +3.331886 3.550261 +3.971662 3.684321 +4.302480 3.806538 +5.207661 4.035863 +5.064210 4.244282 +4.148375 4.537615 +3.547513 4.849420 +3.961390 5.142232 +4.548013 5.490327 +6.606968 5.850974 +6.087229 6.235436 +6.353763 6.719278 +7.435331 7.142955 +8.453489 7.375373 +8.653796 7.419154 +8.524364 7.483388 +8.502952 7.607795 +7.774491 7.738685 +6.639772 7.756273 +6.481253 7.537135 +7.185079 7.429656 +7.473421 7.319686 +7.659268 7.319686 +7.593618 7.549529 +5.979517 7.994797 +7.557045 8.403891 +7.513230 8.778790 +9.843072 9.191797 +10.647189 9.399890 +11.426131 9.607721 +10.163100 10.022686 +10.559162 10.364704 +11.190489 10.582708 +9.532104 10.642140 +9.464096 10.678567 +11.247919 10.738748 +10.635203 10.851903 +11.967758 10.940330 +10.377964 10.902093 +10.975028 11.171490 +11.968463 11.348212 +11.181500 11.410981 +11.355002 11.541459 +10.846360 11.504429 +11.956673 11.625116 +12.675808 11.814092 +11.812839 11.871511 +11.809508 12.039170 +11.634489 12.187723 +11.932542 12.338334 +12.690427 12.478111 +12.485238 12.362409 +12.691980 12.393551 +12.989995 12.656350 +14.174699 13.013985 +13.214663 13.348775 +11.225347 13.634907 +12.093121 14.049552 +14.945654 14.542276 +14.853200 14.962969 +15.265613 15.297104 +16.217039 15.787072 +17.624368 16.592109 +17.126499 17.054724 +16.776231 17.311909 +17.181919 17.764898 +19.338456 18.164381 +19.342522 18.544146 +19.016734 18.892047 +17.260317 19.553161 +19.812379 20.458343 +20.194122 21.375109 +20.755476 22.085863 +23.076520 22.747427 +25.328559 23.314089 +25.511210 23.764285 +25.921188 24.207849 +25.735241 24.684226 +25.296601 25.000300 +24.116689 25.251350 +23.864148 25.430543 +24.186195 25.740438 +25.042868 26.022156 +26.123599 26.342755 +26.941294 26.714350 +28.456649 27.373732 +28.300271 28.060209 +28.620633 28.651549 +28.640949 29.174406 +30.051132 29.628013 +30.364935 29.940152 +30.364483 30.132942 +30.829304 30.230992 +31.664285 30.325733 +31.023764 30.360552 +31.109518 30.298606 +30.191761 30.248642 +29.503083 30.114266 +29.493620 29.970124 +29.806984 29.739660 +29.035340 29.526075 +29.915261 29.457487 +29.155097 29.457487 +29.532027 29.545179 +28.922687 29.722798 +29.101506 29.870680 +29.574463 30.124860 +30.292314 30.283653 +31.137927 30.530622 +31.092188 30.755885 +31.322958 30.956505 +31.344397 31.073295 +31.377819 31.166269 +32.007384 31.166269 +31.559389 31.241139 +30.907089 31.261088 +30.625572 31.247899 +31.129078 31.104230 +30.051382 30.889657 +31.811757 30.619755 +31.271730 30.428024 +31.204254 30.318880 +29.446664 30.226373 +29.382633 30.100075 +28.987492 30.030418 +29.833812 29.776614 +29.924794 29.657419 +29.793010 29.657419 +29.992392 29.940612 +29.424473 30.266221 +28.193563 30.667952 +30.131497 31.125553 +31.995406 31.532457 +32.313114 32.026068 +32.603067 32.529153 +33.952221 32.933304 +34.797493 33.180860 +33.586933 33.180860 +34.235509 33.137591 +34.520158 33.062347 +33.061826 32.936109 +32.359506 32.745710 +31.605983 32.537009 +31.294197 32.379519 +31.635919 32.199305 +31.466928 32.199305 +32.238629 32.222231 +32.641844 32.404811 +32.169525 32.573158 +32.613585 32.573158 +33.268164 32.469291 +34.002723 32.384200 +34.323950 32.213365 +33.121110 31.997729 +30.701113 31.834572 diff --git a/gsl-2.5/doc/examples/multimin.c b/gsl-2.5/doc/examples/multimin.c new file mode 100644 index 00000000..4ebe61f8 --- /dev/null +++ b/gsl-2.5/doc/examples/multimin.c @@ -0,0 +1,58 @@ +int +main (void) +{ + size_t iter = 0; + int status; + + const gsl_multimin_fdfminimizer_type *T; + gsl_multimin_fdfminimizer *s; + + /* Position of the minimum (1,2), scale factors + 10,20, height 30. */ + double par[5] = { 1.0, 2.0, 10.0, 20.0, 30.0 }; + + gsl_vector *x; + gsl_multimin_function_fdf my_func; + + my_func.n = 2; + my_func.f = my_f; + my_func.df = my_df; + my_func.fdf = my_fdf; + my_func.params = par; + + /* Starting point, x = (5,7) */ + x = gsl_vector_alloc (2); + gsl_vector_set (x, 0, 5.0); + gsl_vector_set (x, 1, 7.0); + + T = gsl_multimin_fdfminimizer_conjugate_fr; + s = gsl_multimin_fdfminimizer_alloc (T, 2); + + gsl_multimin_fdfminimizer_set (s, &my_func, x, 0.01, 1e-4); + + do + { + iter++; + status = gsl_multimin_fdfminimizer_iterate (s); + + if (status) + break; + + status = gsl_multimin_test_gradient (s->gradient, 1e-3); + + if (status == GSL_SUCCESS) + printf ("Minimum found at:\n"); + + printf ("%5d %.5f %.5f %10.5f\n", iter, + gsl_vector_get (s->x, 0), + gsl_vector_get (s->x, 1), + s->f); + + } + while (status == GSL_CONTINUE && iter < 100); + + gsl_multimin_fdfminimizer_free (s); + gsl_vector_free (x); + + return 0; +} diff --git a/gsl-2.5/doc/examples/multimin.txt b/gsl-2.5/doc/examples/multimin.txt new file mode 100644 index 00000000..21bab990 --- /dev/null +++ b/gsl-2.5/doc/examples/multimin.txt @@ -0,0 +1,15 @@ + x y f + 1 4.99629 6.99072 687.84780 + 2 4.98886 6.97215 683.55456 + 3 4.97400 6.93501 675.01278 + 4 4.94429 6.86073 658.10798 + 5 4.88487 6.71217 625.01340 + 6 4.76602 6.41506 561.68440 + 7 4.52833 5.82083 446.46694 + 8 4.05295 4.63238 261.79422 + 9 3.10219 2.25548 75.49762 + 10 2.85185 1.62963 67.03704 + 11 2.19088 1.76182 45.31640 + 12 0.86892 2.02622 30.18555 +Minimum found at: + 13 1.00000 2.00000 30.00000 diff --git a/gsl-2.5/doc/examples/multiminfn.c b/gsl-2.5/doc/examples/multiminfn.c new file mode 100644 index 00000000..dd2d388c --- /dev/null +++ b/gsl-2.5/doc/examples/multiminfn.c @@ -0,0 +1,39 @@ +/* Paraboloid centered on (p[0],p[1]), with + scale factors (p[2],p[3]) and minimum p[4] */ + +double +my_f (const gsl_vector *v, void *params) +{ + double x, y; + double *p = (double *)params; + + x = gsl_vector_get(v, 0); + y = gsl_vector_get(v, 1); + + return p[2] * (x - p[0]) * (x - p[0]) + + p[3] * (y - p[1]) * (y - p[1]) + p[4]; +} + +/* The gradient of f, df = (df/dx, df/dy). */ +void +my_df (const gsl_vector *v, void *params, + gsl_vector *df) +{ + double x, y; + double *p = (double *)params; + + x = gsl_vector_get(v, 0); + y = gsl_vector_get(v, 1); + + gsl_vector_set(df, 0, 2.0 * p[2] * (x - p[0])); + gsl_vector_set(df, 1, 2.0 * p[3] * (y - p[1])); +} + +/* Compute both f and df together. */ +void +my_fdf (const gsl_vector *x, void *params, + double *f, gsl_vector *df) +{ + *f = my_f(x, params); + my_df(x, params, df); +} diff --git a/gsl-2.5/doc/examples/multiset b/gsl-2.5/doc/examples/multiset new file mode 100755 index 00000000..af5203fd --- /dev/null +++ b/gsl-2.5/doc/examples/multiset @@ -0,0 +1,228 @@ +#! /bin/sh + +# multiset - temporary wrapper script for .libs/multiset +# Generated by libtool (GNU libtool) 2.4.2 +# +# The multiset program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s/\([`"$\\]\)/\\\1/g' + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command="(cd /home/groups/kipac/chto/package/gsl/gsl-2.5/doc/examples; LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LIBRARY_PATH; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; LD_LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/fftw/include:/home/users/chto/lib/fftw/lib:/home/users/chto/lib/healpix/lib:/home/users/chto/lib/namaster/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/include:/home/users/chto/cpp/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LD_LIBRARY_PATH; PATH=/share/software/user/open/curl/7.54.0/bin:/share/software/user/open/libressl/2.5.3/bin:/home/users/chto/lib/cfitsio:/home/users/chto/lib/cfitsio/include:/home/users/chto/lib:/home/users/chto/bin/bin:/home/users/chto/bin:/home/users/chto/.texlive/bin/x86_64-linux:/home/groups/kipac/chto/anaconda2/envs/newenv3/bin:/home/users/chto/.local/bin/include:/home/users/chto/.local/bin/lib:/home/users/chto/.local/bin:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/bin64:/share/software/user/open/fftw/3.3.6/bin:/home/groups/kipac/chto/anaconda2/condabin:/share/software/user/restricted/ifort/2019/bin:/share/software/user/open/gsl/2.3/bin:/share/software/user/srcc/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/dell/srvadmin/bin:/opt/dell/srvadmin/iSM/bin:/home/users/chto/bin; export PATH; gcc -g -O2 -o \$progdir/\$file multiset.o ../../.libs/libgsl.so ../../cblas/.libs/libgslcblas.so -lm -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/.libs -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/cblas/.libs -Wl,-rpath -Wl,/usr/local/lib)" + +# This environment variable determines our operation mode. +if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then + # install mode needs the following variables: + generated_by_libtool_version='2.4.2' + notinst_deplibs=' ../../libgsl.la ../../cblas/libgslcblas.la' +else + # When we are sourced in execute mode, $file and $ECHO are already set. + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + file="$0" + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + ECHO="printf %s\\n" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ which is used only on +# windows platforms, and (c) all begin with the string --lt- +# (application programs are unlikely to have options which match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's ../../libtool value, followed by no. +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=$0 + shift + for lt_opt + do + case "$lt_opt" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%/[^/]*$%%'` + test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=. + lt_dump_F=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%^.*/%%'` + cat "$lt_dump_D/$lt_dump_F" + exit 0 + ;; + --lt-*) + $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n "$lt_option_debug"; then + echo "multiset:multiset:${LINENO}: libtool wrapper (GNU libtool) 2.4.2" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + $ECHO "multiset:multiset:${LINENO}: newargv[$lt_dump_args_N]: $lt_arg" + lt_dump_args_N=`expr $lt_dump_args_N + 1` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ + + if test -n "$lt_option_debug"; then + $ECHO "multiset:multiset:${LINENO}: newargv[0]: $progdir/$program" 1>&2 + func_lt_dump_args ${1+"$@"} 1>&2 + fi + exec "$progdir/$program" ${1+"$@"} + + $ECHO "$0: cannot exec $program $*" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from $@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case " $* " in + *\ --lt-*) + for lt_wr_arg + do + case $lt_wr_arg in + --lt-*) ;; + *) set x "$@" "$lt_wr_arg"; shift;; + esac + shift + done ;; + esac + func_exec_program_core ${1+"$@"} +} + + # Parse options + func_parse_lt_options "$0" ${1+"$@"} + + # Find the directory that this script lives in. + thisdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + test "x$thisdir" = "x$file" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=`ls -ld "$file" | /usr/bin/sed -n 's/.*-> //p'` + while test -n "$file"; do + destdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + + # If there was a directory component, then change thisdir. + if test "x$destdir" != "x$file"; then + case "$destdir" in + [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;; + *) thisdir="$thisdir/$destdir" ;; + esac + fi + + file=`$ECHO "$file" | /usr/bin/sed 's%^.*/%%'` + file=`ls -ld "$thisdir/$file" | /usr/bin/sed -n 's/.*-> //p'` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no + if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then + # special case for '.' + if test "$thisdir" = "."; then + thisdir=`pwd` + fi + # remove .libs from thisdir + case "$thisdir" in + *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /usr/bin/sed 's%[\\/][^\\/]*$%%'` ;; + .libs ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=`cd "$thisdir" && pwd` + test -n "$absdir" && thisdir="$absdir" + + program=lt-'multiset' + progdir="$thisdir/.libs" + + if test ! -f "$progdir/$program" || + { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /usr/bin/sed 1q`; \ + test "X$file" != "X$progdir/$program"; }; then + + file="$$-$program" + + if test ! -d "$progdir"; then + mkdir "$progdir" + else + rm -f "$progdir/$file" + fi + + # relink executable if necessary + if test -n "$relink_command"; then + if relink_command_output=`eval $relink_command 2>&1`; then : + else + printf %s\n "$relink_command_output" >&2 + rm -f "$progdir/$file" + exit 1 + fi + fi + + mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null || + { rm -f "$progdir/$program"; + mv -f "$progdir/$file" "$progdir/$program"; } + rm -f "$progdir/$file" + fi + + if test -f "$progdir/$program"; then + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + # Run the actual program with our arguments. + func_exec_program ${1+"$@"} + fi + else + # The program doesn't exist. + $ECHO "$0: error: \`$progdir/$program' does not exist" 1>&2 + $ECHO "This script is just a wrapper for $program." 1>&2 + $ECHO "See the libtool documentation for more information." 1>&2 + exit 1 + fi +fi diff --git a/gsl-2.5/doc/examples/multiset.c b/gsl-2.5/doc/examples/multiset.c new file mode 100644 index 00000000..6ac1e7c1 --- /dev/null +++ b/gsl-2.5/doc/examples/multiset.c @@ -0,0 +1,25 @@ +#include +#include + +int +main (void) +{ + gsl_multiset * c; + size_t i; + + printf ("All multisets of {0,1,2,3} by size:\n") ; + for (i = 0; i <= 4; i++) + { + c = gsl_multiset_calloc (4, i); + do + { + printf ("{"); + gsl_multiset_fprintf (stdout, c, " %u"); + printf (" }\n"); + } + while (gsl_multiset_next (c) == GSL_SUCCESS); + gsl_multiset_free (c); + } + + return 0; +} diff --git a/gsl-2.5/doc/examples/multiset.txt b/gsl-2.5/doc/examples/multiset.txt new file mode 100644 index 00000000..e2a15cc6 --- /dev/null +++ b/gsl-2.5/doc/examples/multiset.txt @@ -0,0 +1,71 @@ +All multisets of {0,1,2,3} by size: +{ } +{ 0 } +{ 1 } +{ 2 } +{ 3 } +{ 0 0 } +{ 0 1 } +{ 0 2 } +{ 0 3 } +{ 1 1 } +{ 1 2 } +{ 1 3 } +{ 2 2 } +{ 2 3 } +{ 3 3 } +{ 0 0 0 } +{ 0 0 1 } +{ 0 0 2 } +{ 0 0 3 } +{ 0 1 1 } +{ 0 1 2 } +{ 0 1 3 } +{ 0 2 2 } +{ 0 2 3 } +{ 0 3 3 } +{ 1 1 1 } +{ 1 1 2 } +{ 1 1 3 } +{ 1 2 2 } +{ 1 2 3 } +{ 1 3 3 } +{ 2 2 2 } +{ 2 2 3 } +{ 2 3 3 } +{ 3 3 3 } +{ 0 0 0 0 } +{ 0 0 0 1 } +{ 0 0 0 2 } +{ 0 0 0 3 } +{ 0 0 1 1 } +{ 0 0 1 2 } +{ 0 0 1 3 } +{ 0 0 2 2 } +{ 0 0 2 3 } +{ 0 0 3 3 } +{ 0 1 1 1 } +{ 0 1 1 2 } +{ 0 1 1 3 } +{ 0 1 2 2 } +{ 0 1 2 3 } +{ 0 1 3 3 } +{ 0 2 2 2 } +{ 0 2 2 3 } +{ 0 2 3 3 } +{ 0 3 3 3 } +{ 1 1 1 1 } +{ 1 1 1 2 } +{ 1 1 1 3 } +{ 1 1 2 2 } +{ 1 1 2 3 } +{ 1 1 3 3 } +{ 1 2 2 2 } +{ 1 2 2 3 } +{ 1 2 3 3 } +{ 1 3 3 3 } +{ 2 2 2 2 } +{ 2 2 2 3 } +{ 2 2 3 3 } +{ 2 3 3 3 } +{ 3 3 3 3 } diff --git a/gsl-2.5/doc/examples/nlfit b/gsl-2.5/doc/examples/nlfit new file mode 100755 index 00000000..f7ad95c5 --- /dev/null +++ b/gsl-2.5/doc/examples/nlfit @@ -0,0 +1,228 @@ +#! /bin/sh + +# nlfit - temporary wrapper script for .libs/nlfit +# Generated by libtool (GNU libtool) 2.4.2 +# +# The nlfit program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s/\([`"$\\]\)/\\\1/g' + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command="(cd /home/groups/kipac/chto/package/gsl/gsl-2.5/doc/examples; LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LIBRARY_PATH; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; LD_LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/fftw/include:/home/users/chto/lib/fftw/lib:/home/users/chto/lib/healpix/lib:/home/users/chto/lib/namaster/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/include:/home/users/chto/cpp/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LD_LIBRARY_PATH; PATH=/share/software/user/open/curl/7.54.0/bin:/share/software/user/open/libressl/2.5.3/bin:/home/users/chto/lib/cfitsio:/home/users/chto/lib/cfitsio/include:/home/users/chto/lib:/home/users/chto/bin/bin:/home/users/chto/bin:/home/users/chto/.texlive/bin/x86_64-linux:/home/groups/kipac/chto/anaconda2/envs/newenv3/bin:/home/users/chto/.local/bin/include:/home/users/chto/.local/bin/lib:/home/users/chto/.local/bin:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/bin64:/share/software/user/open/fftw/3.3.6/bin:/home/groups/kipac/chto/anaconda2/condabin:/share/software/user/restricted/ifort/2019/bin:/share/software/user/open/gsl/2.3/bin:/share/software/user/srcc/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/dell/srvadmin/bin:/opt/dell/srvadmin/iSM/bin:/home/users/chto/bin; export PATH; gcc -g -O2 -o \$progdir/\$file nlfit.o ../../.libs/libgsl.so ../../cblas/.libs/libgslcblas.so -lm -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/.libs -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/cblas/.libs -Wl,-rpath -Wl,/usr/local/lib)" + +# This environment variable determines our operation mode. +if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then + # install mode needs the following variables: + generated_by_libtool_version='2.4.2' + notinst_deplibs=' ../../libgsl.la ../../cblas/libgslcblas.la' +else + # When we are sourced in execute mode, $file and $ECHO are already set. + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + file="$0" + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + ECHO="printf %s\\n" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ which is used only on +# windows platforms, and (c) all begin with the string --lt- +# (application programs are unlikely to have options which match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's ../../libtool value, followed by no. +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=$0 + shift + for lt_opt + do + case "$lt_opt" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%/[^/]*$%%'` + test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=. + lt_dump_F=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%^.*/%%'` + cat "$lt_dump_D/$lt_dump_F" + exit 0 + ;; + --lt-*) + $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n "$lt_option_debug"; then + echo "nlfit:nlfit:${LINENO}: libtool wrapper (GNU libtool) 2.4.2" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + $ECHO "nlfit:nlfit:${LINENO}: newargv[$lt_dump_args_N]: $lt_arg" + lt_dump_args_N=`expr $lt_dump_args_N + 1` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ + + if test -n "$lt_option_debug"; then + $ECHO "nlfit:nlfit:${LINENO}: newargv[0]: $progdir/$program" 1>&2 + func_lt_dump_args ${1+"$@"} 1>&2 + fi + exec "$progdir/$program" ${1+"$@"} + + $ECHO "$0: cannot exec $program $*" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from $@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case " $* " in + *\ --lt-*) + for lt_wr_arg + do + case $lt_wr_arg in + --lt-*) ;; + *) set x "$@" "$lt_wr_arg"; shift;; + esac + shift + done ;; + esac + func_exec_program_core ${1+"$@"} +} + + # Parse options + func_parse_lt_options "$0" ${1+"$@"} + + # Find the directory that this script lives in. + thisdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + test "x$thisdir" = "x$file" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=`ls -ld "$file" | /usr/bin/sed -n 's/.*-> //p'` + while test -n "$file"; do + destdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + + # If there was a directory component, then change thisdir. + if test "x$destdir" != "x$file"; then + case "$destdir" in + [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;; + *) thisdir="$thisdir/$destdir" ;; + esac + fi + + file=`$ECHO "$file" | /usr/bin/sed 's%^.*/%%'` + file=`ls -ld "$thisdir/$file" | /usr/bin/sed -n 's/.*-> //p'` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no + if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then + # special case for '.' + if test "$thisdir" = "."; then + thisdir=`pwd` + fi + # remove .libs from thisdir + case "$thisdir" in + *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /usr/bin/sed 's%[\\/][^\\/]*$%%'` ;; + .libs ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=`cd "$thisdir" && pwd` + test -n "$absdir" && thisdir="$absdir" + + program=lt-'nlfit' + progdir="$thisdir/.libs" + + if test ! -f "$progdir/$program" || + { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /usr/bin/sed 1q`; \ + test "X$file" != "X$progdir/$program"; }; then + + file="$$-$program" + + if test ! -d "$progdir"; then + mkdir "$progdir" + else + rm -f "$progdir/$file" + fi + + # relink executable if necessary + if test -n "$relink_command"; then + if relink_command_output=`eval $relink_command 2>&1`; then : + else + printf %s\n "$relink_command_output" >&2 + rm -f "$progdir/$file" + exit 1 + fi + fi + + mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null || + { rm -f "$progdir/$program"; + mv -f "$progdir/$file" "$progdir/$program"; } + rm -f "$progdir/$file" + fi + + if test -f "$progdir/$program"; then + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + # Run the actual program with our arguments. + func_exec_program ${1+"$@"} + fi + else + # The program doesn't exist. + $ECHO "$0: error: \`$progdir/$program' does not exist" 1>&2 + $ECHO "This script is just a wrapper for $program." 1>&2 + $ECHO "See the libtool documentation for more information." 1>&2 + exit 1 + fi +fi diff --git a/gsl-2.5/doc/examples/nlfit.c b/gsl-2.5/doc/examples/nlfit.c new file mode 100644 index 00000000..095a0619 --- /dev/null +++ b/gsl-2.5/doc/examples/nlfit.c @@ -0,0 +1,197 @@ +#include +#include +#include +#include +#include +#include +#include +#include + +#define N 100 /* number of data points to fit */ +#define TMAX (40.0) /* time variable in [0,TMAX] */ + +struct data { + size_t n; + double * t; + double * y; +}; + +int +expb_f (const gsl_vector * x, void *data, + gsl_vector * f) +{ + size_t n = ((struct data *)data)->n; + double *t = ((struct data *)data)->t; + double *y = ((struct data *)data)->y; + + double A = gsl_vector_get (x, 0); + double lambda = gsl_vector_get (x, 1); + double b = gsl_vector_get (x, 2); + + size_t i; + + for (i = 0; i < n; i++) + { + /* Model Yi = A * exp(-lambda * t_i) + b */ + double Yi = A * exp (-lambda * t[i]) + b; + gsl_vector_set (f, i, Yi - y[i]); + } + + return GSL_SUCCESS; +} + +int +expb_df (const gsl_vector * x, void *data, + gsl_matrix * J) +{ + size_t n = ((struct data *)data)->n; + double *t = ((struct data *)data)->t; + + double A = gsl_vector_get (x, 0); + double lambda = gsl_vector_get (x, 1); + + size_t i; + + for (i = 0; i < n; i++) + { + /* Jacobian matrix J(i,j) = dfi / dxj, */ + /* where fi = (Yi - yi)/sigma[i], */ + /* Yi = A * exp(-lambda * t_i) + b */ + /* and the xj are the parameters (A,lambda,b) */ + double e = exp(-lambda * t[i]); + gsl_matrix_set (J, i, 0, e); + gsl_matrix_set (J, i, 1, -t[i] * A * e); + gsl_matrix_set (J, i, 2, 1.0); + } + + return GSL_SUCCESS; +} + +void +callback(const size_t iter, void *params, + const gsl_multifit_nlinear_workspace *w) +{ + gsl_vector *f = gsl_multifit_nlinear_residual(w); + gsl_vector *x = gsl_multifit_nlinear_position(w); + double rcond; + + /* compute reciprocal condition number of J(x) */ + gsl_multifit_nlinear_rcond(&rcond, w); + + fprintf(stderr, "iter %2zu: A = %.4f, lambda = %.4f, b = %.4f, cond(J) = %8.4f, |f(x)| = %.4f\n", + iter, + gsl_vector_get(x, 0), + gsl_vector_get(x, 1), + gsl_vector_get(x, 2), + 1.0 / rcond, + gsl_blas_dnrm2(f)); +} + +int +main (void) +{ + const gsl_multifit_nlinear_type *T = gsl_multifit_nlinear_trust; + gsl_multifit_nlinear_workspace *w; + gsl_multifit_nlinear_fdf fdf; + gsl_multifit_nlinear_parameters fdf_params = + gsl_multifit_nlinear_default_parameters(); + const size_t n = N; + const size_t p = 3; + + gsl_vector *f; + gsl_matrix *J; + gsl_matrix *covar = gsl_matrix_alloc (p, p); + double t[N], y[N], weights[N]; + struct data d = { n, t, y }; + double x_init[3] = { 1.0, 1.0, 0.0 }; /* starting values */ + gsl_vector_view x = gsl_vector_view_array (x_init, p); + gsl_vector_view wts = gsl_vector_view_array(weights, n); + gsl_rng * r; + double chisq, chisq0; + int status, info; + size_t i; + + const double xtol = 1e-8; + const double gtol = 1e-8; + const double ftol = 0.0; + + gsl_rng_env_setup(); + r = gsl_rng_alloc(gsl_rng_default); + + /* define the function to be minimized */ + fdf.f = expb_f; + fdf.df = expb_df; /* set to NULL for finite-difference Jacobian */ + fdf.fvv = NULL; /* not using geodesic acceleration */ + fdf.n = n; + fdf.p = p; + fdf.params = &d; + + /* this is the data to be fitted */ + for (i = 0; i < n; i++) + { + double ti = i * TMAX / (n - 1.0); + double yi = 1.0 + 5 * exp (-0.1 * ti); + double si = 0.1 * yi; + double dy = gsl_ran_gaussian(r, si); + + t[i] = ti; + y[i] = yi + dy; + weights[i] = 1.0 / (si * si); + printf ("data: %g %g %g\n", ti, y[i], si); + }; + + /* allocate workspace with default parameters */ + w = gsl_multifit_nlinear_alloc (T, &fdf_params, n, p); + + /* initialize solver with starting point and weights */ + gsl_multifit_nlinear_winit (&x.vector, &wts.vector, &fdf, w); + + /* compute initial cost function */ + f = gsl_multifit_nlinear_residual(w); + gsl_blas_ddot(f, f, &chisq0); + + /* solve the system with a maximum of 100 iterations */ + status = gsl_multifit_nlinear_driver(100, xtol, gtol, ftol, + callback, NULL, &info, w); + + /* compute covariance of best fit parameters */ + J = gsl_multifit_nlinear_jac(w); + gsl_multifit_nlinear_covar (J, 0.0, covar); + + /* compute final cost */ + gsl_blas_ddot(f, f, &chisq); + +#define FIT(i) gsl_vector_get(w->x, i) +#define ERR(i) sqrt(gsl_matrix_get(covar,i,i)) + + fprintf(stderr, "summary from method '%s/%s'\n", + gsl_multifit_nlinear_name(w), + gsl_multifit_nlinear_trs_name(w)); + fprintf(stderr, "number of iterations: %zu\n", + gsl_multifit_nlinear_niter(w)); + fprintf(stderr, "function evaluations: %zu\n", fdf.nevalf); + fprintf(stderr, "Jacobian evaluations: %zu\n", fdf.nevaldf); + fprintf(stderr, "reason for stopping: %s\n", + (info == 1) ? "small step size" : "small gradient"); + fprintf(stderr, "initial |f(x)| = %f\n", sqrt(chisq0)); + fprintf(stderr, "final |f(x)| = %f\n", sqrt(chisq)); + + { + double dof = n - p; + double c = GSL_MAX_DBL(1, sqrt(chisq / dof)); + + fprintf(stderr, "chisq/dof = %g\n", chisq / dof); + + fprintf (stderr, "A = %.5f +/- %.5f\n", FIT(0), c*ERR(0)); + fprintf (stderr, "lambda = %.5f +/- %.5f\n", FIT(1), c*ERR(1)); + fprintf (stderr, "b = %.5f +/- %.5f\n", FIT(2), c*ERR(2)); + } + + fprintf (stderr, "status = %s\n", gsl_strerror (status)); + + gsl_multifit_nlinear_free (w); + gsl_matrix_free (covar); + gsl_rng_free (r); + + return 0; +} diff --git a/gsl-2.5/doc/examples/nlfit.txt b/gsl-2.5/doc/examples/nlfit.txt new file mode 100644 index 00000000..54c88cac --- /dev/null +++ b/gsl-2.5/doc/examples/nlfit.txt @@ -0,0 +1,100 @@ +data: 0 6.08035 0.6 +data: 0.40404 5.75089 0.580201 +data: 0.808081 6.55151 0.561185 +data: 1.21212 5.82754 0.542923 +data: 1.61616 5.77792 0.525384 +data: 2.0202 4.43573 0.508539 +data: 2.42424 3.74357 0.492362 +data: 2.82828 4.44435 0.476825 +data: 3.23232 4.60097 0.461903 +data: 3.63636 4.87565 0.447572 +data: 4.0404 4.33043 0.433809 +data: 4.44444 3.66058 0.42059 +data: 4.84848 3.80649 0.407895 +data: 5.25253 4.02893 0.395703 +data: 5.65657 4.15905 0.383994 +data: 6.06061 3.52312 0.372748 +data: 6.46465 3.38854 0.361947 +data: 6.86869 3.51824 0.351575 +data: 7.27273 3.18729 0.341613 +data: 7.67677 3.0456 0.332045 +data: 8.08081 3.42631 0.322856 +data: 8.48485 3.02488 0.314032 +data: 8.88889 2.9671 0.305556 +data: 9.29293 2.70147 0.297416 +data: 9.69697 2.72692 0.289599 +data: 10.101 2.83914 0.282091 +data: 10.5051 2.76165 0.274881 +data: 10.9091 2.47839 0.267955 +data: 11.3131 2.57536 0.261305 +data: 11.7172 2.92532 0.254917 +data: 12.1212 2.43646 0.248783 +data: 12.5253 2.36559 0.242891 +data: 12.9293 2.33954 0.237233 +data: 13.3333 1.72843 0.231799 +data: 13.7374 2.39663 0.22658 +data: 14.1414 2.20767 0.221567 +data: 14.5455 2.11851 0.216753 +data: 14.9495 2.27297 0.21213 +data: 15.3535 2.40448 0.20769 +data: 15.7576 1.95446 0.203425 +data: 16.1616 2.22906 0.19933 +data: 16.5657 2.30433 0.195397 +data: 16.9697 1.77605 0.191619 +data: 17.3737 1.76151 0.187991 +data: 17.7778 2.22712 0.184507 +data: 18.1818 1.64801 0.18116 +data: 18.5859 2.0883 0.177946 +data: 18.9899 1.99045 0.17486 +data: 19.3939 1.65443 0.171896 +data: 19.798 1.63904 0.169049 +data: 20.202 1.87163 0.166314 +data: 20.6061 1.59206 0.163688 +data: 21.0101 1.6042 0.161166 +data: 21.4141 1.71428 0.158744 +data: 21.8182 1.64864 0.156418 +data: 22.2222 1.55508 0.154184 +data: 22.6263 1.72644 0.152038 +data: 23.0303 1.50185 0.149978 +data: 23.4343 1.59119 0.147999 +data: 23.8384 1.23089 0.146098 +data: 24.2424 1.40848 0.144273 +data: 24.6465 1.47315 0.142519 +data: 25.0505 1.39715 0.140836 +data: 25.4545 1.31689 0.139219 +data: 25.8586 1.18662 0.137666 +data: 26.2626 1.59549 0.136174 +data: 26.6667 1.40375 0.134742 +data: 27.0707 1.53704 0.133366 +data: 27.4747 1.41109 0.132045 +data: 27.8788 1.23079 0.130776 +data: 28.2828 1.46617 0.129557 +data: 28.6869 1.17692 0.128387 +data: 29.0909 1.37112 0.127263 +data: 29.4949 1.16044 0.126183 +data: 29.899 1.24077 0.125146 +data: 30.303 1.42726 0.12415 +data: 30.7071 1.28094 0.123194 +data: 31.1111 1.63097 0.122276 +data: 31.5152 1.43256 0.121394 +data: 31.9192 1.41718 0.120546 +data: 32.3232 1.27725 0.119733 +data: 32.7273 1.0646 0.118951 +data: 33.1313 1.22094 0.118201 +data: 33.5354 1.22827 0.11748 +data: 33.9394 0.893778 0.116788 +data: 34.3434 1.08994 0.116123 +data: 34.7475 0.905193 0.115485 +data: 35.1515 1.03369 0.114872 +data: 35.5556 1.09 0.114283 +data: 35.9596 1.0442 0.113717 +data: 36.3636 1.15261 0.113174 +data: 36.7677 1.08203 0.112652 +data: 37.1717 0.93427 0.112151 +data: 37.5758 1.01116 0.11167 +data: 37.9798 1.11248 0.111208 +data: 38.3838 1.23566 0.110764 +data: 38.7879 1.31053 0.110338 +data: 39.1919 1.11162 0.109929 +data: 39.596 1.1152 0.109535 +data: 40 1.23112 0.109158 diff --git a/gsl-2.5/doc/examples/nlfit2 b/gsl-2.5/doc/examples/nlfit2 new file mode 100755 index 00000000..634c31d9 --- /dev/null +++ b/gsl-2.5/doc/examples/nlfit2 @@ -0,0 +1,228 @@ +#! /bin/sh + +# nlfit2 - temporary wrapper script for .libs/nlfit2 +# Generated by libtool (GNU libtool) 2.4.2 +# +# The nlfit2 program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s/\([`"$\\]\)/\\\1/g' + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command="(cd /home/groups/kipac/chto/package/gsl/gsl-2.5/doc/examples; LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LIBRARY_PATH; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; LD_LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/fftw/include:/home/users/chto/lib/fftw/lib:/home/users/chto/lib/healpix/lib:/home/users/chto/lib/namaster/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/include:/home/users/chto/cpp/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LD_LIBRARY_PATH; PATH=/share/software/user/open/curl/7.54.0/bin:/share/software/user/open/libressl/2.5.3/bin:/home/users/chto/lib/cfitsio:/home/users/chto/lib/cfitsio/include:/home/users/chto/lib:/home/users/chto/bin/bin:/home/users/chto/bin:/home/users/chto/.texlive/bin/x86_64-linux:/home/groups/kipac/chto/anaconda2/envs/newenv3/bin:/home/users/chto/.local/bin/include:/home/users/chto/.local/bin/lib:/home/users/chto/.local/bin:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/bin64:/share/software/user/open/fftw/3.3.6/bin:/home/groups/kipac/chto/anaconda2/condabin:/share/software/user/restricted/ifort/2019/bin:/share/software/user/open/gsl/2.3/bin:/share/software/user/srcc/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/dell/srvadmin/bin:/opt/dell/srvadmin/iSM/bin:/home/users/chto/bin; export PATH; gcc -g -O2 -o \$progdir/\$file nlfit2.o ../../.libs/libgsl.so ../../cblas/.libs/libgslcblas.so -lm -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/.libs -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/cblas/.libs -Wl,-rpath -Wl,/usr/local/lib)" + +# This environment variable determines our operation mode. +if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then + # install mode needs the following variables: + generated_by_libtool_version='2.4.2' + notinst_deplibs=' ../../libgsl.la ../../cblas/libgslcblas.la' +else + # When we are sourced in execute mode, $file and $ECHO are already set. + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + file="$0" + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + ECHO="printf %s\\n" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ which is used only on +# windows platforms, and (c) all begin with the string --lt- +# (application programs are unlikely to have options which match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's ../../libtool value, followed by no. +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=$0 + shift + for lt_opt + do + case "$lt_opt" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%/[^/]*$%%'` + test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=. + lt_dump_F=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%^.*/%%'` + cat "$lt_dump_D/$lt_dump_F" + exit 0 + ;; + --lt-*) + $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n "$lt_option_debug"; then + echo "nlfit2:nlfit2:${LINENO}: libtool wrapper (GNU libtool) 2.4.2" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + $ECHO "nlfit2:nlfit2:${LINENO}: newargv[$lt_dump_args_N]: $lt_arg" + lt_dump_args_N=`expr $lt_dump_args_N + 1` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ + + if test -n "$lt_option_debug"; then + $ECHO "nlfit2:nlfit2:${LINENO}: newargv[0]: $progdir/$program" 1>&2 + func_lt_dump_args ${1+"$@"} 1>&2 + fi + exec "$progdir/$program" ${1+"$@"} + + $ECHO "$0: cannot exec $program $*" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from $@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case " $* " in + *\ --lt-*) + for lt_wr_arg + do + case $lt_wr_arg in + --lt-*) ;; + *) set x "$@" "$lt_wr_arg"; shift;; + esac + shift + done ;; + esac + func_exec_program_core ${1+"$@"} +} + + # Parse options + func_parse_lt_options "$0" ${1+"$@"} + + # Find the directory that this script lives in. + thisdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + test "x$thisdir" = "x$file" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=`ls -ld "$file" | /usr/bin/sed -n 's/.*-> //p'` + while test -n "$file"; do + destdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + + # If there was a directory component, then change thisdir. + if test "x$destdir" != "x$file"; then + case "$destdir" in + [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;; + *) thisdir="$thisdir/$destdir" ;; + esac + fi + + file=`$ECHO "$file" | /usr/bin/sed 's%^.*/%%'` + file=`ls -ld "$thisdir/$file" | /usr/bin/sed -n 's/.*-> //p'` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no + if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then + # special case for '.' + if test "$thisdir" = "."; then + thisdir=`pwd` + fi + # remove .libs from thisdir + case "$thisdir" in + *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /usr/bin/sed 's%[\\/][^\\/]*$%%'` ;; + .libs ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=`cd "$thisdir" && pwd` + test -n "$absdir" && thisdir="$absdir" + + program=lt-'nlfit2' + progdir="$thisdir/.libs" + + if test ! -f "$progdir/$program" || + { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /usr/bin/sed 1q`; \ + test "X$file" != "X$progdir/$program"; }; then + + file="$$-$program" + + if test ! -d "$progdir"; then + mkdir "$progdir" + else + rm -f "$progdir/$file" + fi + + # relink executable if necessary + if test -n "$relink_command"; then + if relink_command_output=`eval $relink_command 2>&1`; then : + else + printf %s\n "$relink_command_output" >&2 + rm -f "$progdir/$file" + exit 1 + fi + fi + + mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null || + { rm -f "$progdir/$program"; + mv -f "$progdir/$file" "$progdir/$program"; } + rm -f "$progdir/$file" + fi + + if test -f "$progdir/$program"; then + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + # Run the actual program with our arguments. + func_exec_program ${1+"$@"} + fi + else + # The program doesn't exist. + $ECHO "$0: error: \`$progdir/$program' does not exist" 1>&2 + $ECHO "This script is just a wrapper for $program." 1>&2 + $ECHO "See the libtool documentation for more information." 1>&2 + exit 1 + fi +fi diff --git a/gsl-2.5/doc/examples/nlfit2.c b/gsl-2.5/doc/examples/nlfit2.c new file mode 100644 index 00000000..f9ff2357 --- /dev/null +++ b/gsl-2.5/doc/examples/nlfit2.c @@ -0,0 +1,165 @@ +#include +#include +#include +#include +#include +#include + +int +func_f (const gsl_vector * x, void *params, gsl_vector * f) +{ + double x1 = gsl_vector_get(x, 0); + double x2 = gsl_vector_get(x, 1); + + gsl_vector_set(f, 0, 100.0 * (x2 - x1*x1)); + gsl_vector_set(f, 1, 1.0 - x1); + + return GSL_SUCCESS; +} + +int +func_df (const gsl_vector * x, void *params, gsl_matrix * J) +{ + double x1 = gsl_vector_get(x, 0); + + gsl_matrix_set(J, 0, 0, -200.0*x1); + gsl_matrix_set(J, 0, 1, 100.0); + gsl_matrix_set(J, 1, 0, -1.0); + gsl_matrix_set(J, 1, 1, 0.0); + + return GSL_SUCCESS; +} + +int +func_fvv (const gsl_vector * x, const gsl_vector * v, + void *params, gsl_vector * fvv) +{ + double v1 = gsl_vector_get(v, 0); + + gsl_vector_set(fvv, 0, -200.0 * v1 * v1); + gsl_vector_set(fvv, 1, 0.0); + + return GSL_SUCCESS; +} + +void +callback(const size_t iter, void *params, + const gsl_multifit_nlinear_workspace *w) +{ + gsl_vector * x = gsl_multifit_nlinear_position(w); + + /* print out current location */ + printf("%f %f\n", + gsl_vector_get(x, 0), + gsl_vector_get(x, 1)); +} + +void +solve_system(gsl_vector *x0, gsl_multifit_nlinear_fdf *fdf, + gsl_multifit_nlinear_parameters *params) +{ + const gsl_multifit_nlinear_type *T = gsl_multifit_nlinear_trust; + const size_t max_iter = 200; + const double xtol = 1.0e-8; + const double gtol = 1.0e-8; + const double ftol = 1.0e-8; + const size_t n = fdf->n; + const size_t p = fdf->p; + gsl_multifit_nlinear_workspace *work = + gsl_multifit_nlinear_alloc(T, params, n, p); + gsl_vector * f = gsl_multifit_nlinear_residual(work); + gsl_vector * x = gsl_multifit_nlinear_position(work); + int info; + double chisq0, chisq, rcond; + + /* initialize solver */ + gsl_multifit_nlinear_init(x0, fdf, work); + + /* store initial cost */ + gsl_blas_ddot(f, f, &chisq0); + + /* iterate until convergence */ + gsl_multifit_nlinear_driver(max_iter, xtol, gtol, ftol, + callback, NULL, &info, work); + + /* store final cost */ + gsl_blas_ddot(f, f, &chisq); + + /* store cond(J(x)) */ + gsl_multifit_nlinear_rcond(&rcond, work); + + /* print summary */ + + fprintf(stderr, "NITER = %zu\n", gsl_multifit_nlinear_niter(work)); + fprintf(stderr, "NFEV = %zu\n", fdf->nevalf); + fprintf(stderr, "NJEV = %zu\n", fdf->nevaldf); + fprintf(stderr, "NAEV = %zu\n", fdf->nevalfvv); + fprintf(stderr, "initial cost = %.12e\n", chisq0); + fprintf(stderr, "final cost = %.12e\n", chisq); + fprintf(stderr, "final x = (%.12e, %.12e)\n", + gsl_vector_get(x, 0), gsl_vector_get(x, 1)); + fprintf(stderr, "final cond(J) = %.12e\n", 1.0 / rcond); + + printf("\n\n"); + + gsl_multifit_nlinear_free(work); +} + +int +main (void) +{ + const size_t n = 2; + const size_t p = 2; + gsl_vector *f = gsl_vector_alloc(n); + gsl_vector *x = gsl_vector_alloc(p); + gsl_multifit_nlinear_fdf fdf; + gsl_multifit_nlinear_parameters fdf_params = + gsl_multifit_nlinear_default_parameters(); + + /* print map of Phi(x1, x2) */ + { + double x1, x2, chisq; + double *f1 = gsl_vector_ptr(f, 0); + double *f2 = gsl_vector_ptr(f, 1); + + for (x1 = -1.2; x1 < 1.3; x1 += 0.1) + { + for (x2 = -0.5; x2 < 2.1; x2 += 0.1) + { + gsl_vector_set(x, 0, x1); + gsl_vector_set(x, 1, x2); + func_f(x, NULL, f); + + chisq = (*f1) * (*f1) + (*f2) * (*f2); + printf("%f %f %f\n", x1, x2, chisq); + } + printf("\n"); + } + printf("\n\n"); + } + + /* define function to be minimized */ + fdf.f = func_f; + fdf.df = func_df; + fdf.fvv = func_fvv; + fdf.n = n; + fdf.p = p; + fdf.params = NULL; + + /* starting point */ + gsl_vector_set(x, 0, -0.5); + gsl_vector_set(x, 1, 1.75); + + fprintf(stderr, "=== Solving system without acceleration ===\n"); + fdf_params.trs = gsl_multifit_nlinear_trs_lm; + solve_system(x, &fdf, &fdf_params); + + fprintf(stderr, "=== Solving system with acceleration ===\n"); + fdf_params.trs = gsl_multifit_nlinear_trs_lmaccel; + solve_system(x, &fdf, &fdf_params); + + gsl_vector_free(f); + gsl_vector_free(x); + + return 0; +} diff --git a/gsl-2.5/doc/examples/nlfit2.txt b/gsl-2.5/doc/examples/nlfit2.txt new file mode 100644 index 00000000..022fea6f --- /dev/null +++ b/gsl-2.5/doc/examples/nlfit2.txt @@ -0,0 +1,751 @@ +-1.200000 -0.500000 37640.840000 +-1.200000 -0.400000 33860.840000 +-1.200000 -0.300000 30280.840000 +-1.200000 -0.200000 26900.840000 +-1.200000 -0.100000 23720.840000 +-1.200000 -0.000000 20740.840000 +-1.200000 0.100000 17960.840000 +-1.200000 0.200000 15380.840000 +-1.200000 0.300000 13000.840000 +-1.200000 0.400000 10820.840000 +-1.200000 0.500000 8840.840000 +-1.200000 0.600000 7060.840000 +-1.200000 0.700000 5480.840000 +-1.200000 0.800000 4100.840000 +-1.200000 0.900000 2920.840000 +-1.200000 1.000000 1940.840000 +-1.200000 1.100000 1160.840000 +-1.200000 1.200000 580.840000 +-1.200000 1.300000 200.840000 +-1.200000 1.400000 20.840000 +-1.200000 1.500000 40.840000 +-1.200000 1.600000 260.840000 +-1.200000 1.700000 680.840000 +-1.200000 1.800000 1300.840000 +-1.200000 1.900000 2120.840000 +-1.200000 2.000000 3140.840000 + +-1.100000 -0.500000 29245.410000 +-1.100000 -0.400000 25925.410000 +-1.100000 -0.300000 22805.410000 +-1.100000 -0.200000 19885.410000 +-1.100000 -0.100000 17165.410000 +-1.100000 -0.000000 14645.410000 +-1.100000 0.100000 12325.410000 +-1.100000 0.200000 10205.410000 +-1.100000 0.300000 8285.410000 +-1.100000 0.400000 6565.410000 +-1.100000 0.500000 5045.410000 +-1.100000 0.600000 3725.410000 +-1.100000 0.700000 2605.410000 +-1.100000 0.800000 1685.410000 +-1.100000 0.900000 965.410000 +-1.100000 1.000000 445.410000 +-1.100000 1.100000 125.410000 +-1.100000 1.200000 5.410000 +-1.100000 1.300000 85.410000 +-1.100000 1.400000 365.410000 +-1.100000 1.500000 845.410000 +-1.100000 1.600000 1525.410000 +-1.100000 1.700000 2405.410000 +-1.100000 1.800000 3485.410000 +-1.100000 1.900000 4765.410000 +-1.100000 2.000000 6245.410000 + +-1.000000 -0.500000 22504.000000 +-1.000000 -0.400000 19604.000000 +-1.000000 -0.300000 16904.000000 +-1.000000 -0.200000 14404.000000 +-1.000000 -0.100000 12104.000000 +-1.000000 -0.000000 10004.000000 +-1.000000 0.100000 8104.000000 +-1.000000 0.200000 6404.000000 +-1.000000 0.300000 4904.000000 +-1.000000 0.400000 3604.000000 +-1.000000 0.500000 2504.000000 +-1.000000 0.600000 1604.000000 +-1.000000 0.700000 904.000000 +-1.000000 0.800000 404.000000 +-1.000000 0.900000 104.000000 +-1.000000 1.000000 4.000000 +-1.000000 1.100000 104.000000 +-1.000000 1.200000 404.000000 +-1.000000 1.300000 904.000000 +-1.000000 1.400000 1604.000000 +-1.000000 1.500000 2504.000000 +-1.000000 1.600000 3604.000000 +-1.000000 1.700000 4904.000000 +-1.000000 1.800000 6404.000000 +-1.000000 1.900000 8104.000000 +-1.000000 2.000000 10004.000000 + +-0.900000 -0.500000 17164.610000 +-0.900000 -0.400000 14644.610000 +-0.900000 -0.300000 12324.610000 +-0.900000 -0.200000 10204.610000 +-0.900000 -0.100000 8284.610000 +-0.900000 -0.000000 6564.610000 +-0.900000 0.100000 5044.610000 +-0.900000 0.200000 3724.610000 +-0.900000 0.300000 2604.610000 +-0.900000 0.400000 1684.610000 +-0.900000 0.500000 964.610000 +-0.900000 0.600000 444.610000 +-0.900000 0.700000 124.610000 +-0.900000 0.800000 4.610000 +-0.900000 0.900000 84.610000 +-0.900000 1.000000 364.610000 +-0.900000 1.100000 844.610000 +-0.900000 1.200000 1524.610000 +-0.900000 1.300000 2404.610000 +-0.900000 1.400000 3484.610000 +-0.900000 1.500000 4764.610000 +-0.900000 1.600000 6244.610000 +-0.900000 1.700000 7924.610000 +-0.900000 1.800000 9804.610000 +-0.900000 1.900000 11884.610000 +-0.900000 2.000000 14164.610000 + +-0.800000 -0.500000 12999.240000 +-0.800000 -0.400000 10819.240000 +-0.800000 -0.300000 8839.240000 +-0.800000 -0.200000 7059.240000 +-0.800000 -0.100000 5479.240000 +-0.800000 -0.000000 4099.240000 +-0.800000 0.100000 2919.240000 +-0.800000 0.200000 1939.240000 +-0.800000 0.300000 1159.240000 +-0.800000 0.400000 579.240000 +-0.800000 0.500000 199.240000 +-0.800000 0.600000 19.240000 +-0.800000 0.700000 39.240000 +-0.800000 0.800000 259.240000 +-0.800000 0.900000 679.240000 +-0.800000 1.000000 1299.240000 +-0.800000 1.100000 2119.240000 +-0.800000 1.200000 3139.240000 +-0.800000 1.300000 4359.240000 +-0.800000 1.400000 5779.240000 +-0.800000 1.500000 7399.240000 +-0.800000 1.600000 9219.240000 +-0.800000 1.700000 11239.240000 +-0.800000 1.800000 13459.240000 +-0.800000 1.900000 15879.240000 +-0.800000 2.000000 18499.240000 + +-0.700000 -0.500000 9803.890000 +-0.700000 -0.400000 7923.890000 +-0.700000 -0.300000 6243.890000 +-0.700000 -0.200000 4763.890000 +-0.700000 -0.100000 3483.890000 +-0.700000 -0.000000 2403.890000 +-0.700000 0.100000 1523.890000 +-0.700000 0.200000 843.890000 +-0.700000 0.300000 363.890000 +-0.700000 0.400000 83.890000 +-0.700000 0.500000 3.890000 +-0.700000 0.600000 123.890000 +-0.700000 0.700000 443.890000 +-0.700000 0.800000 963.890000 +-0.700000 0.900000 1683.890000 +-0.700000 1.000000 2603.890000 +-0.700000 1.100000 3723.890000 +-0.700000 1.200000 5043.890000 +-0.700000 1.300000 6563.890000 +-0.700000 1.400000 8283.890000 +-0.700000 1.500000 10203.890000 +-0.700000 1.600000 12323.890000 +-0.700000 1.700000 14643.890000 +-0.700000 1.800000 17163.890000 +-0.700000 1.900000 19883.890000 +-0.700000 2.000000 22803.890000 + +-0.600000 -0.500000 7398.560000 +-0.600000 -0.400000 5778.560000 +-0.600000 -0.300000 4358.560000 +-0.600000 -0.200000 3138.560000 +-0.600000 -0.100000 2118.560000 +-0.600000 -0.000000 1298.560000 +-0.600000 0.100000 678.560000 +-0.600000 0.200000 258.560000 +-0.600000 0.300000 38.560000 +-0.600000 0.400000 18.560000 +-0.600000 0.500000 198.560000 +-0.600000 0.600000 578.560000 +-0.600000 0.700000 1158.560000 +-0.600000 0.800000 1938.560000 +-0.600000 0.900000 2918.560000 +-0.600000 1.000000 4098.560000 +-0.600000 1.100000 5478.560000 +-0.600000 1.200000 7058.560000 +-0.600000 1.300000 8838.560000 +-0.600000 1.400000 10818.560000 +-0.600000 1.500000 12998.560000 +-0.600000 1.600000 15378.560000 +-0.600000 1.700000 17958.560000 +-0.600000 1.800000 20738.560000 +-0.600000 1.900000 23718.560000 +-0.600000 2.000000 26898.560000 + +-0.500000 -0.500000 5627.250000 +-0.500000 -0.400000 4227.250000 +-0.500000 -0.300000 3027.250000 +-0.500000 -0.200000 2027.250000 +-0.500000 -0.100000 1227.250000 +-0.500000 -0.000000 627.250000 +-0.500000 0.100000 227.250000 +-0.500000 0.200000 27.250000 +-0.500000 0.300000 27.250000 +-0.500000 0.400000 227.250000 +-0.500000 0.500000 627.250000 +-0.500000 0.600000 1227.250000 +-0.500000 0.700000 2027.250000 +-0.500000 0.800000 3027.250000 +-0.500000 0.900000 4227.250000 +-0.500000 1.000000 5627.250000 +-0.500000 1.100000 7227.250000 +-0.500000 1.200000 9027.250000 +-0.500000 1.300000 11027.250000 +-0.500000 1.400000 13227.250000 +-0.500000 1.500000 15627.250000 +-0.500000 1.600000 18227.250000 +-0.500000 1.700000 21027.250000 +-0.500000 1.800000 24027.250000 +-0.500000 1.900000 27227.250000 +-0.500000 2.000000 30627.250000 + +-0.400000 -0.500000 4357.960000 +-0.400000 -0.400000 3137.960000 +-0.400000 -0.300000 2117.960000 +-0.400000 -0.200000 1297.960000 +-0.400000 -0.100000 677.960000 +-0.400000 -0.000000 257.960000 +-0.400000 0.100000 37.960000 +-0.400000 0.200000 17.960000 +-0.400000 0.300000 197.960000 +-0.400000 0.400000 577.960000 +-0.400000 0.500000 1157.960000 +-0.400000 0.600000 1937.960000 +-0.400000 0.700000 2917.960000 +-0.400000 0.800000 4097.960000 +-0.400000 0.900000 5477.960000 +-0.400000 1.000000 7057.960000 +-0.400000 1.100000 8837.960000 +-0.400000 1.200000 10817.960000 +-0.400000 1.300000 12997.960000 +-0.400000 1.400000 15377.960000 +-0.400000 1.500000 17957.960000 +-0.400000 1.600000 20737.960000 +-0.400000 1.700000 23717.960000 +-0.400000 1.800000 26897.960000 +-0.400000 1.900000 30277.960000 +-0.400000 2.000000 33857.960000 + +-0.300000 -0.500000 3482.690000 +-0.300000 -0.400000 2402.690000 +-0.300000 -0.300000 1522.690000 +-0.300000 -0.200000 842.690000 +-0.300000 -0.100000 362.690000 +-0.300000 -0.000000 82.690000 +-0.300000 0.100000 2.690000 +-0.300000 0.200000 122.690000 +-0.300000 0.300000 442.690000 +-0.300000 0.400000 962.690000 +-0.300000 0.500000 1682.690000 +-0.300000 0.600000 2602.690000 +-0.300000 0.700000 3722.690000 +-0.300000 0.800000 5042.690000 +-0.300000 0.900000 6562.690000 +-0.300000 1.000000 8282.690000 +-0.300000 1.100000 10202.690000 +-0.300000 1.200000 12322.690000 +-0.300000 1.300000 14642.690000 +-0.300000 1.400000 17162.690000 +-0.300000 1.500000 19882.690000 +-0.300000 1.600000 22802.690000 +-0.300000 1.700000 25922.690000 +-0.300000 1.800000 29242.690000 +-0.300000 1.900000 32762.690000 +-0.300000 2.000000 36482.690000 + +-0.200000 -0.500000 2917.440000 +-0.200000 -0.400000 1937.440000 +-0.200000 -0.300000 1157.440000 +-0.200000 -0.200000 577.440000 +-0.200000 -0.100000 197.440000 +-0.200000 -0.000000 17.440000 +-0.200000 0.100000 37.440000 +-0.200000 0.200000 257.440000 +-0.200000 0.300000 677.440000 +-0.200000 0.400000 1297.440000 +-0.200000 0.500000 2117.440000 +-0.200000 0.600000 3137.440000 +-0.200000 0.700000 4357.440000 +-0.200000 0.800000 5777.440000 +-0.200000 0.900000 7397.440000 +-0.200000 1.000000 9217.440000 +-0.200000 1.100000 11237.440000 +-0.200000 1.200000 13457.440000 +-0.200000 1.300000 15877.440000 +-0.200000 1.400000 18497.440000 +-0.200000 1.500000 21317.440000 +-0.200000 1.600000 24337.440000 +-0.200000 1.700000 27557.440000 +-0.200000 1.800000 30977.440000 +-0.200000 1.900000 34597.440000 +-0.200000 2.000000 38417.440000 + +-0.100000 -0.500000 2602.210000 +-0.100000 -0.400000 1682.210000 +-0.100000 -0.300000 962.210000 +-0.100000 -0.200000 442.210000 +-0.100000 -0.100000 122.210000 +-0.100000 -0.000000 2.210000 +-0.100000 0.100000 82.210000 +-0.100000 0.200000 362.210000 +-0.100000 0.300000 842.210000 +-0.100000 0.400000 1522.210000 +-0.100000 0.500000 2402.210000 +-0.100000 0.600000 3482.210000 +-0.100000 0.700000 4762.210000 +-0.100000 0.800000 6242.210000 +-0.100000 0.900000 7922.210000 +-0.100000 1.000000 9802.210000 +-0.100000 1.100000 11882.210000 +-0.100000 1.200000 14162.210000 +-0.100000 1.300000 16642.210000 +-0.100000 1.400000 19322.210000 +-0.100000 1.500000 22202.210000 +-0.100000 1.600000 25282.210000 +-0.100000 1.700000 28562.210000 +-0.100000 1.800000 32042.210000 +-0.100000 1.900000 35722.210000 +-0.100000 2.000000 39602.210000 + +-0.000000 -0.500000 2501.000000 +-0.000000 -0.400000 1601.000000 +-0.000000 -0.300000 901.000000 +-0.000000 -0.200000 401.000000 +-0.000000 -0.100000 101.000000 +-0.000000 -0.000000 1.000000 +-0.000000 0.100000 101.000000 +-0.000000 0.200000 401.000000 +-0.000000 0.300000 901.000000 +-0.000000 0.400000 1601.000000 +-0.000000 0.500000 2501.000000 +-0.000000 0.600000 3601.000000 +-0.000000 0.700000 4901.000000 +-0.000000 0.800000 6401.000000 +-0.000000 0.900000 8101.000000 +-0.000000 1.000000 10001.000000 +-0.000000 1.100000 12101.000000 +-0.000000 1.200000 14401.000000 +-0.000000 1.300000 16901.000000 +-0.000000 1.400000 19601.000000 +-0.000000 1.500000 22501.000000 +-0.000000 1.600000 25601.000000 +-0.000000 1.700000 28901.000000 +-0.000000 1.800000 32401.000000 +-0.000000 1.900000 36101.000000 +-0.000000 2.000000 40001.000000 + +0.100000 -0.500000 2601.810000 +0.100000 -0.400000 1681.810000 +0.100000 -0.300000 961.810000 +0.100000 -0.200000 441.810000 +0.100000 -0.100000 121.810000 +0.100000 -0.000000 1.810000 +0.100000 0.100000 81.810000 +0.100000 0.200000 361.810000 +0.100000 0.300000 841.810000 +0.100000 0.400000 1521.810000 +0.100000 0.500000 2401.810000 +0.100000 0.600000 3481.810000 +0.100000 0.700000 4761.810000 +0.100000 0.800000 6241.810000 +0.100000 0.900000 7921.810000 +0.100000 1.000000 9801.810000 +0.100000 1.100000 11881.810000 +0.100000 1.200000 14161.810000 +0.100000 1.300000 16641.810000 +0.100000 1.400000 19321.810000 +0.100000 1.500000 22201.810000 +0.100000 1.600000 25281.810000 +0.100000 1.700000 28561.810000 +0.100000 1.800000 32041.810000 +0.100000 1.900000 35721.810000 +0.100000 2.000000 39601.810000 + +0.200000 -0.500000 2916.640000 +0.200000 -0.400000 1936.640000 +0.200000 -0.300000 1156.640000 +0.200000 -0.200000 576.640000 +0.200000 -0.100000 196.640000 +0.200000 -0.000000 16.640000 +0.200000 0.100000 36.640000 +0.200000 0.200000 256.640000 +0.200000 0.300000 676.640000 +0.200000 0.400000 1296.640000 +0.200000 0.500000 2116.640000 +0.200000 0.600000 3136.640000 +0.200000 0.700000 4356.640000 +0.200000 0.800000 5776.640000 +0.200000 0.900000 7396.640000 +0.200000 1.000000 9216.640000 +0.200000 1.100000 11236.640000 +0.200000 1.200000 13456.640000 +0.200000 1.300000 15876.640000 +0.200000 1.400000 18496.640000 +0.200000 1.500000 21316.640000 +0.200000 1.600000 24336.640000 +0.200000 1.700000 27556.640000 +0.200000 1.800000 30976.640000 +0.200000 1.900000 34596.640000 +0.200000 2.000000 38416.640000 + +0.300000 -0.500000 3481.490000 +0.300000 -0.400000 2401.490000 +0.300000 -0.300000 1521.490000 +0.300000 -0.200000 841.490000 +0.300000 -0.100000 361.490000 +0.300000 -0.000000 81.490000 +0.300000 0.100000 1.490000 +0.300000 0.200000 121.490000 +0.300000 0.300000 441.490000 +0.300000 0.400000 961.490000 +0.300000 0.500000 1681.490000 +0.300000 0.600000 2601.490000 +0.300000 0.700000 3721.490000 +0.300000 0.800000 5041.490000 +0.300000 0.900000 6561.490000 +0.300000 1.000000 8281.490000 +0.300000 1.100000 10201.490000 +0.300000 1.200000 12321.490000 +0.300000 1.300000 14641.490000 +0.300000 1.400000 17161.490000 +0.300000 1.500000 19881.490000 +0.300000 1.600000 22801.490000 +0.300000 1.700000 25921.490000 +0.300000 1.800000 29241.490000 +0.300000 1.900000 32761.490000 +0.300000 2.000000 36481.490000 + +0.400000 -0.500000 4356.360000 +0.400000 -0.400000 3136.360000 +0.400000 -0.300000 2116.360000 +0.400000 -0.200000 1296.360000 +0.400000 -0.100000 676.360000 +0.400000 -0.000000 256.360000 +0.400000 0.100000 36.360000 +0.400000 0.200000 16.360000 +0.400000 0.300000 196.360000 +0.400000 0.400000 576.360000 +0.400000 0.500000 1156.360000 +0.400000 0.600000 1936.360000 +0.400000 0.700000 2916.360000 +0.400000 0.800000 4096.360000 +0.400000 0.900000 5476.360000 +0.400000 1.000000 7056.360000 +0.400000 1.100000 8836.360000 +0.400000 1.200000 10816.360000 +0.400000 1.300000 12996.360000 +0.400000 1.400000 15376.360000 +0.400000 1.500000 17956.360000 +0.400000 1.600000 20736.360000 +0.400000 1.700000 23716.360000 +0.400000 1.800000 26896.360000 +0.400000 1.900000 30276.360000 +0.400000 2.000000 33856.360000 + +0.500000 -0.500000 5625.250000 +0.500000 -0.400000 4225.250000 +0.500000 -0.300000 3025.250000 +0.500000 -0.200000 2025.250000 +0.500000 -0.100000 1225.250000 +0.500000 -0.000000 625.250000 +0.500000 0.100000 225.250000 +0.500000 0.200000 25.250000 +0.500000 0.300000 25.250000 +0.500000 0.400000 225.250000 +0.500000 0.500000 625.250000 +0.500000 0.600000 1225.250000 +0.500000 0.700000 2025.250000 +0.500000 0.800000 3025.250000 +0.500000 0.900000 4225.250000 +0.500000 1.000000 5625.250000 +0.500000 1.100000 7225.250000 +0.500000 1.200000 9025.250000 +0.500000 1.300000 11025.250000 +0.500000 1.400000 13225.250000 +0.500000 1.500000 15625.250000 +0.500000 1.600000 18225.250000 +0.500000 1.700000 21025.250000 +0.500000 1.800000 24025.250000 +0.500000 1.900000 27225.250000 +0.500000 2.000000 30625.250000 + +0.600000 -0.500000 7396.160000 +0.600000 -0.400000 5776.160000 +0.600000 -0.300000 4356.160000 +0.600000 -0.200000 3136.160000 +0.600000 -0.100000 2116.160000 +0.600000 -0.000000 1296.160000 +0.600000 0.100000 676.160000 +0.600000 0.200000 256.160000 +0.600000 0.300000 36.160000 +0.600000 0.400000 16.160000 +0.600000 0.500000 196.160000 +0.600000 0.600000 576.160000 +0.600000 0.700000 1156.160000 +0.600000 0.800000 1936.160000 +0.600000 0.900000 2916.160000 +0.600000 1.000000 4096.160000 +0.600000 1.100000 5476.160000 +0.600000 1.200000 7056.160000 +0.600000 1.300000 8836.160000 +0.600000 1.400000 10816.160000 +0.600000 1.500000 12996.160000 +0.600000 1.600000 15376.160000 +0.600000 1.700000 17956.160000 +0.600000 1.800000 20736.160000 +0.600000 1.900000 23716.160000 +0.600000 2.000000 26896.160000 + +0.700000 -0.500000 9801.090000 +0.700000 -0.400000 7921.090000 +0.700000 -0.300000 6241.090000 +0.700000 -0.200000 4761.090000 +0.700000 -0.100000 3481.090000 +0.700000 -0.000000 2401.090000 +0.700000 0.100000 1521.090000 +0.700000 0.200000 841.090000 +0.700000 0.300000 361.090000 +0.700000 0.400000 81.090000 +0.700000 0.500000 1.090000 +0.700000 0.600000 121.090000 +0.700000 0.700000 441.090000 +0.700000 0.800000 961.090000 +0.700000 0.900000 1681.090000 +0.700000 1.000000 2601.090000 +0.700000 1.100000 3721.090000 +0.700000 1.200000 5041.090000 +0.700000 1.300000 6561.090000 +0.700000 1.400000 8281.090000 +0.700000 1.500000 10201.090000 +0.700000 1.600000 12321.090000 +0.700000 1.700000 14641.090000 +0.700000 1.800000 17161.090000 +0.700000 1.900000 19881.090000 +0.700000 2.000000 22801.090000 + +0.800000 -0.500000 12996.040000 +0.800000 -0.400000 10816.040000 +0.800000 -0.300000 8836.040000 +0.800000 -0.200000 7056.040000 +0.800000 -0.100000 5476.040000 +0.800000 -0.000000 4096.040000 +0.800000 0.100000 2916.040000 +0.800000 0.200000 1936.040000 +0.800000 0.300000 1156.040000 +0.800000 0.400000 576.040000 +0.800000 0.500000 196.040000 +0.800000 0.600000 16.040000 +0.800000 0.700000 36.040000 +0.800000 0.800000 256.040000 +0.800000 0.900000 676.040000 +0.800000 1.000000 1296.040000 +0.800000 1.100000 2116.040000 +0.800000 1.200000 3136.040000 +0.800000 1.300000 4356.040000 +0.800000 1.400000 5776.040000 +0.800000 1.500000 7396.040000 +0.800000 1.600000 9216.040000 +0.800000 1.700000 11236.040000 +0.800000 1.800000 13456.040000 +0.800000 1.900000 15876.040000 +0.800000 2.000000 18496.040000 + +0.900000 -0.500000 17161.010000 +0.900000 -0.400000 14641.010000 +0.900000 -0.300000 12321.010000 +0.900000 -0.200000 10201.010000 +0.900000 -0.100000 8281.010000 +0.900000 -0.000000 6561.010000 +0.900000 0.100000 5041.010000 +0.900000 0.200000 3721.010000 +0.900000 0.300000 2601.010000 +0.900000 0.400000 1681.010000 +0.900000 0.500000 961.010000 +0.900000 0.600000 441.010000 +0.900000 0.700000 121.010000 +0.900000 0.800000 1.010000 +0.900000 0.900000 81.010000 +0.900000 1.000000 361.010000 +0.900000 1.100000 841.010000 +0.900000 1.200000 1521.010000 +0.900000 1.300000 2401.010000 +0.900000 1.400000 3481.010000 +0.900000 1.500000 4761.010000 +0.900000 1.600000 6241.010000 +0.900000 1.700000 7921.010000 +0.900000 1.800000 9801.010000 +0.900000 1.900000 11881.010000 +0.900000 2.000000 14161.010000 + +1.000000 -0.500000 22500.000000 +1.000000 -0.400000 19600.000000 +1.000000 -0.300000 16900.000000 +1.000000 -0.200000 14400.000000 +1.000000 -0.100000 12100.000000 +1.000000 -0.000000 10000.000000 +1.000000 0.100000 8100.000000 +1.000000 0.200000 6400.000000 +1.000000 0.300000 4900.000000 +1.000000 0.400000 3600.000000 +1.000000 0.500000 2500.000000 +1.000000 0.600000 1600.000000 +1.000000 0.700000 900.000000 +1.000000 0.800000 400.000000 +1.000000 0.900000 100.000000 +1.000000 1.000000 0.000000 +1.000000 1.100000 100.000000 +1.000000 1.200000 400.000000 +1.000000 1.300000 900.000000 +1.000000 1.400000 1600.000000 +1.000000 1.500000 2500.000000 +1.000000 1.600000 3600.000000 +1.000000 1.700000 4900.000000 +1.000000 1.800000 6400.000000 +1.000000 1.900000 8100.000000 +1.000000 2.000000 10000.000000 + +1.100000 -0.500000 29241.010000 +1.100000 -0.400000 25921.010000 +1.100000 -0.300000 22801.010000 +1.100000 -0.200000 19881.010000 +1.100000 -0.100000 17161.010000 +1.100000 -0.000000 14641.010000 +1.100000 0.100000 12321.010000 +1.100000 0.200000 10201.010000 +1.100000 0.300000 8281.010000 +1.100000 0.400000 6561.010000 +1.100000 0.500000 5041.010000 +1.100000 0.600000 3721.010000 +1.100000 0.700000 2601.010000 +1.100000 0.800000 1681.010000 +1.100000 0.900000 961.010000 +1.100000 1.000000 441.010000 +1.100000 1.100000 121.010000 +1.100000 1.200000 1.010000 +1.100000 1.300000 81.010000 +1.100000 1.400000 361.010000 +1.100000 1.500000 841.010000 +1.100000 1.600000 1521.010000 +1.100000 1.700000 2401.010000 +1.100000 1.800000 3481.010000 +1.100000 1.900000 4761.010000 +1.100000 2.000000 6241.010000 + +1.200000 -0.500000 37636.040000 +1.200000 -0.400000 33856.040000 +1.200000 -0.300000 30276.040000 +1.200000 -0.200000 26896.040000 +1.200000 -0.100000 23716.040000 +1.200000 -0.000000 20736.040000 +1.200000 0.100000 17956.040000 +1.200000 0.200000 15376.040000 +1.200000 0.300000 12996.040000 +1.200000 0.400000 10816.040000 +1.200000 0.500000 8836.040000 +1.200000 0.600000 7056.040000 +1.200000 0.700000 5476.040000 +1.200000 0.800000 4096.040000 +1.200000 0.900000 2916.040000 +1.200000 1.000000 1936.040000 +1.200000 1.100000 1156.040000 +1.200000 1.200000 576.040000 +1.200000 1.300000 196.040000 +1.200000 1.400000 16.040000 +1.200000 1.500000 36.040000 +1.200000 1.600000 256.040000 +1.200000 1.700000 676.040000 +1.200000 1.800000 1296.040000 +1.200000 1.900000 2116.040000 +1.200000 2.000000 3136.040000 + + + +-0.500000 1.750000 +-1.142419 0.893275 +-1.002809 0.986100 +-0.918244 0.836060 +-0.843637 0.706196 +-0.767030 0.582503 +-0.689381 0.469250 +-0.611125 0.367380 +-0.532857 0.277838 +-0.455124 0.201118 +-0.378459 0.137373 +-0.303367 0.086408 +-0.230328 0.047728 +-0.159798 0.020569 +-0.092192 0.003934 +-0.027873 -0.003358 +0.032893 -0.002611 +0.089988 0.004836 +0.143479 0.017721 +0.193621 0.034970 +0.240795 0.055751 +0.285430 0.079471 +0.327928 0.105723 +0.368632 0.134225 +0.407805 0.164762 +0.445640 0.197155 +0.482269 0.231234 +0.517778 0.266826 +0.552221 0.303754 +0.585627 0.341835 +0.618008 0.380878 +0.649364 0.420684 +0.679689 0.461051 +0.708966 0.501770 +0.737174 0.542625 +0.764288 0.583396 +0.790274 0.623854 +0.815097 0.663764 +0.838715 0.702882 +0.861079 0.740954 +0.882134 0.777714 +0.901817 0.812884 +0.920054 0.846166 +0.936762 0.877243 +0.951840 0.905772 +0.965169 0.931373 +0.976604 0.953625 +0.985967 0.972043 +0.993042 0.986082 +0.997603 0.995191 +0.999638 0.999272 +0.999980 0.999959 +1.000000 0.999999 +1.000000 1.000000 + + +-0.500000 1.750000 +-0.946006 1.109349 +-0.921962 0.850093 +-0.691178 0.472692 +-0.415856 0.165195 +-0.135440 0.012083 +0.128552 0.014498 +0.393660 0.156838 +0.667141 0.449487 +0.796457 0.635023 +0.923422 0.853111 +0.985892 0.972006 +0.998922 0.997845 +0.999970 0.999941 +1.000000 0.999999 +1.000000 1.000000 + + diff --git a/gsl-2.5/doc/examples/nlfit2b b/gsl-2.5/doc/examples/nlfit2b new file mode 100755 index 00000000..9a6e3e53 --- /dev/null +++ b/gsl-2.5/doc/examples/nlfit2b @@ -0,0 +1,228 @@ +#! /bin/sh + +# nlfit2b - temporary wrapper script for .libs/nlfit2b +# Generated by libtool (GNU libtool) 2.4.2 +# +# The nlfit2b program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s/\([`"$\\]\)/\\\1/g' + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command="(cd /home/groups/kipac/chto/package/gsl/gsl-2.5/doc/examples; LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LIBRARY_PATH; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; LD_LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/fftw/include:/home/users/chto/lib/fftw/lib:/home/users/chto/lib/healpix/lib:/home/users/chto/lib/namaster/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/include:/home/users/chto/cpp/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LD_LIBRARY_PATH; PATH=/share/software/user/open/curl/7.54.0/bin:/share/software/user/open/libressl/2.5.3/bin:/home/users/chto/lib/cfitsio:/home/users/chto/lib/cfitsio/include:/home/users/chto/lib:/home/users/chto/bin/bin:/home/users/chto/bin:/home/users/chto/.texlive/bin/x86_64-linux:/home/groups/kipac/chto/anaconda2/envs/newenv3/bin:/home/users/chto/.local/bin/include:/home/users/chto/.local/bin/lib:/home/users/chto/.local/bin:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/bin64:/share/software/user/open/fftw/3.3.6/bin:/home/groups/kipac/chto/anaconda2/condabin:/share/software/user/restricted/ifort/2019/bin:/share/software/user/open/gsl/2.3/bin:/share/software/user/srcc/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/dell/srvadmin/bin:/opt/dell/srvadmin/iSM/bin:/home/users/chto/bin; export PATH; gcc -g -O2 -o \$progdir/\$file nlfit2b.o ../../.libs/libgsl.so ../../cblas/.libs/libgslcblas.so -lm -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/.libs -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/cblas/.libs -Wl,-rpath -Wl,/usr/local/lib)" + +# This environment variable determines our operation mode. +if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then + # install mode needs the following variables: + generated_by_libtool_version='2.4.2' + notinst_deplibs=' ../../libgsl.la ../../cblas/libgslcblas.la' +else + # When we are sourced in execute mode, $file and $ECHO are already set. + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + file="$0" + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + ECHO="printf %s\\n" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ which is used only on +# windows platforms, and (c) all begin with the string --lt- +# (application programs are unlikely to have options which match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's ../../libtool value, followed by no. +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=$0 + shift + for lt_opt + do + case "$lt_opt" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%/[^/]*$%%'` + test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=. + lt_dump_F=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%^.*/%%'` + cat "$lt_dump_D/$lt_dump_F" + exit 0 + ;; + --lt-*) + $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n "$lt_option_debug"; then + echo "nlfit2b:nlfit2b:${LINENO}: libtool wrapper (GNU libtool) 2.4.2" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + $ECHO "nlfit2b:nlfit2b:${LINENO}: newargv[$lt_dump_args_N]: $lt_arg" + lt_dump_args_N=`expr $lt_dump_args_N + 1` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ + + if test -n "$lt_option_debug"; then + $ECHO "nlfit2b:nlfit2b:${LINENO}: newargv[0]: $progdir/$program" 1>&2 + func_lt_dump_args ${1+"$@"} 1>&2 + fi + exec "$progdir/$program" ${1+"$@"} + + $ECHO "$0: cannot exec $program $*" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from $@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case " $* " in + *\ --lt-*) + for lt_wr_arg + do + case $lt_wr_arg in + --lt-*) ;; + *) set x "$@" "$lt_wr_arg"; shift;; + esac + shift + done ;; + esac + func_exec_program_core ${1+"$@"} +} + + # Parse options + func_parse_lt_options "$0" ${1+"$@"} + + # Find the directory that this script lives in. + thisdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + test "x$thisdir" = "x$file" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=`ls -ld "$file" | /usr/bin/sed -n 's/.*-> //p'` + while test -n "$file"; do + destdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + + # If there was a directory component, then change thisdir. + if test "x$destdir" != "x$file"; then + case "$destdir" in + [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;; + *) thisdir="$thisdir/$destdir" ;; + esac + fi + + file=`$ECHO "$file" | /usr/bin/sed 's%^.*/%%'` + file=`ls -ld "$thisdir/$file" | /usr/bin/sed -n 's/.*-> //p'` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no + if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then + # special case for '.' + if test "$thisdir" = "."; then + thisdir=`pwd` + fi + # remove .libs from thisdir + case "$thisdir" in + *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /usr/bin/sed 's%[\\/][^\\/]*$%%'` ;; + .libs ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=`cd "$thisdir" && pwd` + test -n "$absdir" && thisdir="$absdir" + + program=lt-'nlfit2b' + progdir="$thisdir/.libs" + + if test ! -f "$progdir/$program" || + { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /usr/bin/sed 1q`; \ + test "X$file" != "X$progdir/$program"; }; then + + file="$$-$program" + + if test ! -d "$progdir"; then + mkdir "$progdir" + else + rm -f "$progdir/$file" + fi + + # relink executable if necessary + if test -n "$relink_command"; then + if relink_command_output=`eval $relink_command 2>&1`; then : + else + printf %s\n "$relink_command_output" >&2 + rm -f "$progdir/$file" + exit 1 + fi + fi + + mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null || + { rm -f "$progdir/$program"; + mv -f "$progdir/$file" "$progdir/$program"; } + rm -f "$progdir/$file" + fi + + if test -f "$progdir/$program"; then + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + # Run the actual program with our arguments. + func_exec_program ${1+"$@"} + fi + else + # The program doesn't exist. + $ECHO "$0: error: \`$progdir/$program' does not exist" 1>&2 + $ECHO "This script is just a wrapper for $program." 1>&2 + $ECHO "See the libtool documentation for more information." 1>&2 + exit 1 + fi +fi diff --git a/gsl-2.5/doc/examples/nlfit2b.c b/gsl-2.5/doc/examples/nlfit2b.c new file mode 100644 index 00000000..befc3b9a --- /dev/null +++ b/gsl-2.5/doc/examples/nlfit2b.c @@ -0,0 +1,254 @@ +#include +#include +#include +#include +#include +#include +#include +#include + +struct data +{ + double *t; + double *y; + size_t n; +}; + +/* model function: a * exp( -1/2 * [ (t - b) / c ]^2 ) */ +double +gaussian(const double a, const double b, const double c, const double t) +{ + const double z = (t - b) / c; + return (a * exp(-0.5 * z * z)); +} + +int +func_f (const gsl_vector * x, void *params, gsl_vector * f) +{ + struct data *d = (struct data *) params; + double a = gsl_vector_get(x, 0); + double b = gsl_vector_get(x, 1); + double c = gsl_vector_get(x, 2); + size_t i; + + for (i = 0; i < d->n; ++i) + { + double ti = d->t[i]; + double yi = d->y[i]; + double y = gaussian(a, b, c, ti); + + gsl_vector_set(f, i, yi - y); + } + + return GSL_SUCCESS; +} + +int +func_df (const gsl_vector * x, void *params, gsl_matrix * J) +{ + struct data *d = (struct data *) params; + double a = gsl_vector_get(x, 0); + double b = gsl_vector_get(x, 1); + double c = gsl_vector_get(x, 2); + size_t i; + + for (i = 0; i < d->n; ++i) + { + double ti = d->t[i]; + double zi = (ti - b) / c; + double ei = exp(-0.5 * zi * zi); + + gsl_matrix_set(J, i, 0, -ei); + gsl_matrix_set(J, i, 1, -(a / c) * ei * zi); + gsl_matrix_set(J, i, 2, -(a / c) * ei * zi * zi); + } + + return GSL_SUCCESS; +} + +int +func_fvv (const gsl_vector * x, const gsl_vector * v, + void *params, gsl_vector * fvv) +{ + struct data *d = (struct data *) params; + double a = gsl_vector_get(x, 0); + double b = gsl_vector_get(x, 1); + double c = gsl_vector_get(x, 2); + double va = gsl_vector_get(v, 0); + double vb = gsl_vector_get(v, 1); + double vc = gsl_vector_get(v, 2); + size_t i; + + for (i = 0; i < d->n; ++i) + { + double ti = d->t[i]; + double zi = (ti - b) / c; + double ei = exp(-0.5 * zi * zi); + double Dab = -zi * ei / c; + double Dac = -zi * zi * ei / c; + double Dbb = a * ei / (c * c) * (1.0 - zi*zi); + double Dbc = a * zi * ei / (c * c) * (2.0 - zi*zi); + double Dcc = a * zi * zi * ei / (c * c) * (3.0 - zi*zi); + double sum; + + sum = 2.0 * va * vb * Dab + + 2.0 * va * vc * Dac + + vb * vb * Dbb + + 2.0 * vb * vc * Dbc + + vc * vc * Dcc; + + gsl_vector_set(fvv, i, sum); + } + + return GSL_SUCCESS; +} + +void +callback(const size_t iter, void *params, + const gsl_multifit_nlinear_workspace *w) +{ + gsl_vector *f = gsl_multifit_nlinear_residual(w); + gsl_vector *x = gsl_multifit_nlinear_position(w); + double avratio = gsl_multifit_nlinear_avratio(w); + double rcond; + + (void) params; /* not used */ + + /* compute reciprocal condition number of J(x) */ + gsl_multifit_nlinear_rcond(&rcond, w); + + fprintf(stderr, "iter %2zu: a = %.4f, b = %.4f, c = %.4f, |a|/|v| = %.4f cond(J) = %8.4f, |f(x)| = %.4f\n", + iter, + gsl_vector_get(x, 0), + gsl_vector_get(x, 1), + gsl_vector_get(x, 2), + avratio, + 1.0 / rcond, + gsl_blas_dnrm2(f)); +} + +void +solve_system(gsl_vector *x, gsl_multifit_nlinear_fdf *fdf, + gsl_multifit_nlinear_parameters *params) +{ + const gsl_multifit_nlinear_type *T = gsl_multifit_nlinear_trust; + const size_t max_iter = 200; + const double xtol = 1.0e-8; + const double gtol = 1.0e-8; + const double ftol = 1.0e-8; + const size_t n = fdf->n; + const size_t p = fdf->p; + gsl_multifit_nlinear_workspace *work = + gsl_multifit_nlinear_alloc(T, params, n, p); + gsl_vector * f = gsl_multifit_nlinear_residual(work); + gsl_vector * y = gsl_multifit_nlinear_position(work); + int info; + double chisq0, chisq, rcond; + + /* initialize solver */ + gsl_multifit_nlinear_init(x, fdf, work); + + /* store initial cost */ + gsl_blas_ddot(f, f, &chisq0); + + /* iterate until convergence */ + gsl_multifit_nlinear_driver(max_iter, xtol, gtol, ftol, + callback, NULL, &info, work); + + /* store final cost */ + gsl_blas_ddot(f, f, &chisq); + + /* store cond(J(x)) */ + gsl_multifit_nlinear_rcond(&rcond, work); + + gsl_vector_memcpy(x, y); + + /* print summary */ + + fprintf(stderr, "NITER = %zu\n", gsl_multifit_nlinear_niter(work)); + fprintf(stderr, "NFEV = %zu\n", fdf->nevalf); + fprintf(stderr, "NJEV = %zu\n", fdf->nevaldf); + fprintf(stderr, "NAEV = %zu\n", fdf->nevalfvv); + fprintf(stderr, "initial cost = %.12e\n", chisq0); + fprintf(stderr, "final cost = %.12e\n", chisq); + fprintf(stderr, "final x = (%.12e, %.12e, %12e)\n", + gsl_vector_get(x, 0), gsl_vector_get(x, 1), gsl_vector_get(x, 2)); + fprintf(stderr, "final cond(J) = %.12e\n", 1.0 / rcond); + + gsl_multifit_nlinear_free(work); +} + +int +main (void) +{ + const size_t n = 300; /* number of data points to fit */ + const size_t p = 3; /* number of model parameters */ + const double a = 5.0; /* amplitude */ + const double b = 0.4; /* center */ + const double c = 0.15; /* width */ + const gsl_rng_type * T = gsl_rng_default; + gsl_vector *f = gsl_vector_alloc(n); + gsl_vector *x = gsl_vector_alloc(p); + gsl_multifit_nlinear_fdf fdf; + gsl_multifit_nlinear_parameters fdf_params = + gsl_multifit_nlinear_default_parameters(); + struct data fit_data; + gsl_rng * r; + size_t i; + + gsl_rng_env_setup (); + r = gsl_rng_alloc (T); + + fit_data.t = malloc(n * sizeof(double)); + fit_data.y = malloc(n * sizeof(double)); + fit_data.n = n; + + /* generate synthetic data with noise */ + for (i = 0; i < n; ++i) + { + double t = (double)i / (double) n; + double y0 = gaussian(a, b, c, t); + double dy = gsl_ran_gaussian (r, 0.1 * y0); + + fit_data.t[i] = t; + fit_data.y[i] = y0 + dy; + } + + /* define function to be minimized */ + fdf.f = func_f; + fdf.df = func_df; + fdf.fvv = func_fvv; + fdf.n = n; + fdf.p = p; + fdf.params = &fit_data; + + /* starting point */ + gsl_vector_set(x, 0, 1.0); + gsl_vector_set(x, 1, 0.0); + gsl_vector_set(x, 2, 1.0); + + fdf_params.trs = gsl_multifit_nlinear_trs_lmaccel; + solve_system(x, &fdf, &fdf_params); + + /* print data and model */ + { + double A = gsl_vector_get(x, 0); + double B = gsl_vector_get(x, 1); + double C = gsl_vector_get(x, 2); + + for (i = 0; i < n; ++i) + { + double ti = fit_data.t[i]; + double yi = fit_data.y[i]; + double fi = gaussian(A, B, C, ti); + + printf("%f %f %f\n", ti, yi, fi); + } + } + + gsl_vector_free(f); + gsl_vector_free(x); + gsl_rng_free(r); + + return 0; +} diff --git a/gsl-2.5/doc/examples/nlfit3 b/gsl-2.5/doc/examples/nlfit3 new file mode 100755 index 00000000..982ddd66 --- /dev/null +++ b/gsl-2.5/doc/examples/nlfit3 @@ -0,0 +1,228 @@ +#! /bin/sh + +# nlfit3 - temporary wrapper script for .libs/nlfit3 +# Generated by libtool (GNU libtool) 2.4.2 +# +# The nlfit3 program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s/\([`"$\\]\)/\\\1/g' + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command="(cd /home/groups/kipac/chto/package/gsl/gsl-2.5/doc/examples; LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LIBRARY_PATH; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; LD_LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/fftw/include:/home/users/chto/lib/fftw/lib:/home/users/chto/lib/healpix/lib:/home/users/chto/lib/namaster/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/include:/home/users/chto/cpp/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LD_LIBRARY_PATH; PATH=/share/software/user/open/curl/7.54.0/bin:/share/software/user/open/libressl/2.5.3/bin:/home/users/chto/lib/cfitsio:/home/users/chto/lib/cfitsio/include:/home/users/chto/lib:/home/users/chto/bin/bin:/home/users/chto/bin:/home/users/chto/.texlive/bin/x86_64-linux:/home/groups/kipac/chto/anaconda2/envs/newenv3/bin:/home/users/chto/.local/bin/include:/home/users/chto/.local/bin/lib:/home/users/chto/.local/bin:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/bin64:/share/software/user/open/fftw/3.3.6/bin:/home/groups/kipac/chto/anaconda2/condabin:/share/software/user/restricted/ifort/2019/bin:/share/software/user/open/gsl/2.3/bin:/share/software/user/srcc/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/dell/srvadmin/bin:/opt/dell/srvadmin/iSM/bin:/home/users/chto/bin; export PATH; gcc -g -O2 -o \$progdir/\$file nlfit3.o ../../.libs/libgsl.so ../../cblas/.libs/libgslcblas.so -lm -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/.libs -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/cblas/.libs -Wl,-rpath -Wl,/usr/local/lib)" + +# This environment variable determines our operation mode. +if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then + # install mode needs the following variables: + generated_by_libtool_version='2.4.2' + notinst_deplibs=' ../../libgsl.la ../../cblas/libgslcblas.la' +else + # When we are sourced in execute mode, $file and $ECHO are already set. + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + file="$0" + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + ECHO="printf %s\\n" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ which is used only on +# windows platforms, and (c) all begin with the string --lt- +# (application programs are unlikely to have options which match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's ../../libtool value, followed by no. +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=$0 + shift + for lt_opt + do + case "$lt_opt" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%/[^/]*$%%'` + test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=. + lt_dump_F=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%^.*/%%'` + cat "$lt_dump_D/$lt_dump_F" + exit 0 + ;; + --lt-*) + $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n "$lt_option_debug"; then + echo "nlfit3:nlfit3:${LINENO}: libtool wrapper (GNU libtool) 2.4.2" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + $ECHO "nlfit3:nlfit3:${LINENO}: newargv[$lt_dump_args_N]: $lt_arg" + lt_dump_args_N=`expr $lt_dump_args_N + 1` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ + + if test -n "$lt_option_debug"; then + $ECHO "nlfit3:nlfit3:${LINENO}: newargv[0]: $progdir/$program" 1>&2 + func_lt_dump_args ${1+"$@"} 1>&2 + fi + exec "$progdir/$program" ${1+"$@"} + + $ECHO "$0: cannot exec $program $*" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from $@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case " $* " in + *\ --lt-*) + for lt_wr_arg + do + case $lt_wr_arg in + --lt-*) ;; + *) set x "$@" "$lt_wr_arg"; shift;; + esac + shift + done ;; + esac + func_exec_program_core ${1+"$@"} +} + + # Parse options + func_parse_lt_options "$0" ${1+"$@"} + + # Find the directory that this script lives in. + thisdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + test "x$thisdir" = "x$file" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=`ls -ld "$file" | /usr/bin/sed -n 's/.*-> //p'` + while test -n "$file"; do + destdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + + # If there was a directory component, then change thisdir. + if test "x$destdir" != "x$file"; then + case "$destdir" in + [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;; + *) thisdir="$thisdir/$destdir" ;; + esac + fi + + file=`$ECHO "$file" | /usr/bin/sed 's%^.*/%%'` + file=`ls -ld "$thisdir/$file" | /usr/bin/sed -n 's/.*-> //p'` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no + if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then + # special case for '.' + if test "$thisdir" = "."; then + thisdir=`pwd` + fi + # remove .libs from thisdir + case "$thisdir" in + *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /usr/bin/sed 's%[\\/][^\\/]*$%%'` ;; + .libs ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=`cd "$thisdir" && pwd` + test -n "$absdir" && thisdir="$absdir" + + program=lt-'nlfit3' + progdir="$thisdir/.libs" + + if test ! -f "$progdir/$program" || + { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /usr/bin/sed 1q`; \ + test "X$file" != "X$progdir/$program"; }; then + + file="$$-$program" + + if test ! -d "$progdir"; then + mkdir "$progdir" + else + rm -f "$progdir/$file" + fi + + # relink executable if necessary + if test -n "$relink_command"; then + if relink_command_output=`eval $relink_command 2>&1`; then : + else + printf %s\n "$relink_command_output" >&2 + rm -f "$progdir/$file" + exit 1 + fi + fi + + mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null || + { rm -f "$progdir/$program"; + mv -f "$progdir/$file" "$progdir/$program"; } + rm -f "$progdir/$file" + fi + + if test -f "$progdir/$program"; then + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + # Run the actual program with our arguments. + func_exec_program ${1+"$@"} + fi + else + # The program doesn't exist. + $ECHO "$0: error: \`$progdir/$program' does not exist" 1>&2 + $ECHO "This script is just a wrapper for $program." 1>&2 + $ECHO "See the libtool documentation for more information." 1>&2 + exit 1 + fi +fi diff --git a/gsl-2.5/doc/examples/nlfit3.c b/gsl-2.5/doc/examples/nlfit3.c new file mode 100644 index 00000000..9dbf2783 --- /dev/null +++ b/gsl-2.5/doc/examples/nlfit3.c @@ -0,0 +1,209 @@ +#include +#include +#include +#include +#include +#include + +/* parameters to model */ +struct model_params +{ + double a1; + double a2; + double a3; + double a4; + double a5; +}; + +/* Branin function */ +int +func_f (const gsl_vector * x, void *params, gsl_vector * f) +{ + struct model_params *par = (struct model_params *) params; + double x1 = gsl_vector_get(x, 0); + double x2 = gsl_vector_get(x, 1); + double f1 = x2 + par->a1 * x1 * x1 + par->a2 * x1 + par->a3; + double f2 = sqrt(par->a4) * sqrt(1.0 + (1.0 - par->a5) * cos(x1)); + + gsl_vector_set(f, 0, f1); + gsl_vector_set(f, 1, f2); + + return GSL_SUCCESS; +} + +int +func_df (const gsl_vector * x, void *params, gsl_matrix * J) +{ + struct model_params *par = (struct model_params *) params; + double x1 = gsl_vector_get(x, 0); + double f2 = sqrt(par->a4) * sqrt(1.0 + (1.0 - par->a5) * cos(x1)); + + gsl_matrix_set(J, 0, 0, 2.0 * par->a1 * x1 + par->a2); + gsl_matrix_set(J, 0, 1, 1.0); + + gsl_matrix_set(J, 1, 0, -0.5 * par->a4 / f2 * (1.0 - par->a5) * sin(x1)); + gsl_matrix_set(J, 1, 1, 0.0); + + return GSL_SUCCESS; +} + +int +func_fvv (const gsl_vector * x, const gsl_vector * v, + void *params, gsl_vector * fvv) +{ + struct model_params *par = (struct model_params *) params; + double x1 = gsl_vector_get(x, 0); + double v1 = gsl_vector_get(v, 0); + double c = cos(x1); + double s = sin(x1); + double f2 = sqrt(par->a4) * sqrt(1.0 + (1.0 - par->a5) * c); + double t = 0.5 * par->a4 * (1.0 - par->a5) / f2; + + gsl_vector_set(fvv, 0, 2.0 * par->a1 * v1 * v1); + gsl_vector_set(fvv, 1, -t * (c + s*s/f2) * v1 * v1); + + return GSL_SUCCESS; +} + +void +callback(const size_t iter, void *params, + const gsl_multifit_nlinear_workspace *w) +{ + gsl_vector * x = gsl_multifit_nlinear_position(w); + double x1 = gsl_vector_get(x, 0); + double x2 = gsl_vector_get(x, 1); + + /* print out current location */ + printf("%f %f\n", x1, x2); +} + +void +solve_system(gsl_vector *x0, gsl_multifit_nlinear_fdf *fdf, + gsl_multifit_nlinear_parameters *params) +{ + const gsl_multifit_nlinear_type *T = gsl_multifit_nlinear_trust; + const size_t max_iter = 200; + const double xtol = 1.0e-8; + const double gtol = 1.0e-8; + const double ftol = 1.0e-8; + const size_t n = fdf->n; + const size_t p = fdf->p; + gsl_multifit_nlinear_workspace *work = + gsl_multifit_nlinear_alloc(T, params, n, p); + gsl_vector * f = gsl_multifit_nlinear_residual(work); + gsl_vector * x = gsl_multifit_nlinear_position(work); + int info; + double chisq0, chisq, rcond; + + printf("# %s/%s\n", + gsl_multifit_nlinear_name(work), + gsl_multifit_nlinear_trs_name(work)); + + /* initialize solver */ + gsl_multifit_nlinear_init(x0, fdf, work); + + /* store initial cost */ + gsl_blas_ddot(f, f, &chisq0); + + /* iterate until convergence */ + gsl_multifit_nlinear_driver(max_iter, xtol, gtol, ftol, + callback, NULL, &info, work); + + /* store final cost */ + gsl_blas_ddot(f, f, &chisq); + + /* store cond(J(x)) */ + gsl_multifit_nlinear_rcond(&rcond, work); + + /* print summary */ + fprintf(stderr, "%-25s %-6zu %-5zu %-5zu %-13.4e %-12.4e %-13.4e (%.2e, %.2e)\n", + gsl_multifit_nlinear_trs_name(work), + gsl_multifit_nlinear_niter(work), + fdf->nevalf, + fdf->nevaldf, + chisq0, + chisq, + 1.0 / rcond, + gsl_vector_get(x, 0), + gsl_vector_get(x, 1)); + + printf("\n\n"); + + gsl_multifit_nlinear_free(work); +} + +int +main (void) +{ + const size_t n = 2; + const size_t p = 2; + gsl_vector *f = gsl_vector_alloc(n); + gsl_vector *x = gsl_vector_alloc(p); + gsl_multifit_nlinear_fdf fdf; + gsl_multifit_nlinear_parameters fdf_params = + gsl_multifit_nlinear_default_parameters(); + struct model_params params; + + params.a1 = -5.1 / (4.0 * M_PI * M_PI); + params.a2 = 5.0 / M_PI; + params.a3 = -6.0; + params.a4 = 10.0; + params.a5 = 1.0 / (8.0 * M_PI); + + /* print map of Phi(x1, x2) */ + { + double x1, x2, chisq; + + for (x1 = -5.0; x1 < 15.0; x1 += 0.1) + { + for (x2 = -5.0; x2 < 15.0; x2 += 0.1) + { + gsl_vector_set(x, 0, x1); + gsl_vector_set(x, 1, x2); + func_f(x, ¶ms, f); + + gsl_blas_ddot(f, f, &chisq); + + printf("%f %f %f\n", x1, x2, chisq); + } + printf("\n"); + } + printf("\n\n"); + } + + /* define function to be minimized */ + fdf.f = func_f; + fdf.df = func_df; + fdf.fvv = func_fvv; + fdf.n = n; + fdf.p = p; + fdf.params = ¶ms; + + /* starting point */ + gsl_vector_set(x, 0, 6.0); + gsl_vector_set(x, 1, 14.5); + + fprintf(stderr, "%-25s %-6s %-5s %-5s %-13s %-12s %-13s %-15s\n", + "Method", "NITER", "NFEV", "NJEV", "Initial Cost", + "Final cost", "Final cond(J)", "Final x"); + + fdf_params.trs = gsl_multifit_nlinear_trs_lm; + solve_system(x, &fdf, &fdf_params); + + fdf_params.trs = gsl_multifit_nlinear_trs_lmaccel; + solve_system(x, &fdf, &fdf_params); + + fdf_params.trs = gsl_multifit_nlinear_trs_dogleg; + solve_system(x, &fdf, &fdf_params); + + fdf_params.trs = gsl_multifit_nlinear_trs_ddogleg; + solve_system(x, &fdf, &fdf_params); + + fdf_params.trs = gsl_multifit_nlinear_trs_subspace2D; + solve_system(x, &fdf, &fdf_params); + + gsl_vector_free(f); + gsl_vector_free(x); + + return 0; +} diff --git a/gsl-2.5/doc/examples/nlfit3.txt b/gsl-2.5/doc/examples/nlfit3.txt new file mode 100644 index 00000000..eeb3d8cc --- /dev/null +++ b/gsl-2.5/doc/examples/nlfit3.txt @@ -0,0 +1,40741 @@ +-5.000000 -5.000000 505.002695 +-5.000000 -4.900000 500.575223 +-5.000000 -4.800000 496.167751 +-5.000000 -4.700000 491.780279 +-5.000000 -4.600000 487.412807 +-5.000000 -4.500000 483.065335 +-5.000000 -4.400000 478.737863 +-5.000000 -4.300000 474.430391 +-5.000000 -4.200000 470.142919 +-5.000000 -4.100000 465.875447 +-5.000000 -4.000000 461.627975 +-5.000000 -3.900000 457.400503 +-5.000000 -3.800000 453.193031 +-5.000000 -3.700000 449.005559 +-5.000000 -3.600000 444.838087 +-5.000000 -3.500000 440.690615 +-5.000000 -3.400000 436.563143 +-5.000000 -3.300000 432.455671 +-5.000000 -3.200000 428.368199 +-5.000000 -3.100000 424.300727 +-5.000000 -3.000000 420.253255 +-5.000000 -2.900000 416.225783 +-5.000000 -2.800000 412.218311 +-5.000000 -2.700000 408.230839 +-5.000000 -2.600000 404.263367 +-5.000000 -2.500000 400.315895 +-5.000000 -2.400000 396.388423 +-5.000000 -2.300000 392.480951 +-5.000000 -2.200000 388.593479 +-5.000000 -2.100000 384.726008 +-5.000000 -2.000000 380.878536 +-5.000000 -1.900000 377.051064 +-5.000000 -1.800000 373.243592 +-5.000000 -1.700000 369.456120 +-5.000000 -1.600000 365.688648 +-5.000000 -1.500000 361.941176 +-5.000000 -1.400000 358.213704 +-5.000000 -1.300000 354.506232 +-5.000000 -1.200000 350.818760 +-5.000000 -1.100000 347.151288 +-5.000000 -1.000000 343.503816 +-5.000000 -0.900000 339.876344 +-5.000000 -0.800000 336.268872 +-5.000000 -0.700000 332.681400 +-5.000000 -0.600000 329.113928 +-5.000000 -0.500000 325.566456 +-5.000000 -0.400000 322.038984 +-5.000000 -0.300000 318.531512 +-5.000000 -0.200000 315.044040 +-5.000000 -0.100000 311.576568 +-5.000000 -0.000000 308.129096 +-5.000000 0.100000 304.701624 +-5.000000 0.200000 301.294152 +-5.000000 0.300000 297.906680 +-5.000000 0.400000 294.539208 +-5.000000 0.500000 291.191736 +-5.000000 0.600000 287.864264 +-5.000000 0.700000 284.556792 +-5.000000 0.800000 281.269320 +-5.000000 0.900000 278.001848 +-5.000000 1.000000 274.754376 +-5.000000 1.100000 271.526904 +-5.000000 1.200000 268.319432 +-5.000000 1.300000 265.131960 +-5.000000 1.400000 261.964488 +-5.000000 1.500000 258.817016 +-5.000000 1.600000 255.689544 +-5.000000 1.700000 252.582072 +-5.000000 1.800000 249.494600 +-5.000000 1.900000 246.427128 +-5.000000 2.000000 243.379656 +-5.000000 2.100000 240.352185 +-5.000000 2.200000 237.344713 +-5.000000 2.300000 234.357241 +-5.000000 2.400000 231.389769 +-5.000000 2.500000 228.442297 +-5.000000 2.600000 225.514825 +-5.000000 2.700000 222.607353 +-5.000000 2.800000 219.719881 +-5.000000 2.900000 216.852409 +-5.000000 3.000000 214.004937 +-5.000000 3.100000 211.177465 +-5.000000 3.200000 208.369993 +-5.000000 3.300000 205.582521 +-5.000000 3.400000 202.815049 +-5.000000 3.500000 200.067577 +-5.000000 3.600000 197.340105 +-5.000000 3.700000 194.632633 +-5.000000 3.800000 191.945161 +-5.000000 3.900000 189.277689 +-5.000000 4.000000 186.630217 +-5.000000 4.100000 184.002745 +-5.000000 4.200000 181.395273 +-5.000000 4.300000 178.807801 +-5.000000 4.400000 176.240329 +-5.000000 4.500000 173.692857 +-5.000000 4.600000 171.165385 +-5.000000 4.700000 168.657913 +-5.000000 4.800000 166.170441 +-5.000000 4.900000 163.702969 +-5.000000 5.000000 161.255497 +-5.000000 5.100000 158.828025 +-5.000000 5.200000 156.420553 +-5.000000 5.300000 154.033081 +-5.000000 5.400000 151.665609 +-5.000000 5.500000 149.318137 +-5.000000 5.600000 146.990665 +-5.000000 5.700000 144.683193 +-5.000000 5.800000 142.395721 +-5.000000 5.900000 140.128249 +-5.000000 6.000000 137.880777 +-5.000000 6.100000 135.653305 +-5.000000 6.200000 133.445833 +-5.000000 6.300000 131.258361 +-5.000000 6.400000 129.090890 +-5.000000 6.500000 126.943418 +-5.000000 6.600000 124.815946 +-5.000000 6.700000 122.708474 +-5.000000 6.800000 120.621002 +-5.000000 6.900000 118.553530 +-5.000000 7.000000 116.506058 +-5.000000 7.100000 114.478586 +-5.000000 7.200000 112.471114 +-5.000000 7.300000 110.483642 +-5.000000 7.400000 108.516170 +-5.000000 7.500000 106.568698 +-5.000000 7.600000 104.641226 +-5.000000 7.700000 102.733754 +-5.000000 7.800000 100.846282 +-5.000000 7.900000 98.978810 +-5.000000 8.000000 97.131338 +-5.000000 8.100000 95.303866 +-5.000000 8.200000 93.496394 +-5.000000 8.300000 91.708922 +-5.000000 8.400000 89.941450 +-5.000000 8.500000 88.193978 +-5.000000 8.600000 86.466506 +-5.000000 8.700000 84.759034 +-5.000000 8.800000 83.071562 +-5.000000 8.900000 81.404090 +-5.000000 9.000000 79.756618 +-5.000000 9.100000 78.129146 +-5.000000 9.200000 76.521674 +-5.000000 9.300000 74.934202 +-5.000000 9.400000 73.366730 +-5.000000 9.500000 71.819258 +-5.000000 9.600000 70.291786 +-5.000000 9.700000 68.784314 +-5.000000 9.800000 67.296842 +-5.000000 9.900000 65.829370 +-5.000000 10.000000 64.381898 +-5.000000 10.100000 62.954426 +-5.000000 10.200000 61.546954 +-5.000000 10.300000 60.159482 +-5.000000 10.400000 58.792010 +-5.000000 10.500000 57.444538 +-5.000000 10.600000 56.117066 +-5.000000 10.700000 54.809595 +-5.000000 10.800000 53.522123 +-5.000000 10.900000 52.254651 +-5.000000 11.000000 51.007179 +-5.000000 11.100000 49.779707 +-5.000000 11.200000 48.572235 +-5.000000 11.300000 47.384763 +-5.000000 11.400000 46.217291 +-5.000000 11.500000 45.069819 +-5.000000 11.600000 43.942347 +-5.000000 11.700000 42.834875 +-5.000000 11.800000 41.747403 +-5.000000 11.900000 40.679931 +-5.000000 12.000000 39.632459 +-5.000000 12.100000 38.604987 +-5.000000 12.200000 37.597515 +-5.000000 12.300000 36.610043 +-5.000000 12.400000 35.642571 +-5.000000 12.500000 34.695099 +-5.000000 12.600000 33.767627 +-5.000000 12.700000 32.860155 +-5.000000 12.800000 31.972683 +-5.000000 12.900000 31.105211 +-5.000000 13.000000 30.257739 +-5.000000 13.100000 29.430267 +-5.000000 13.200000 28.622795 +-5.000000 13.300000 27.835323 +-5.000000 13.400000 27.067851 +-5.000000 13.500000 26.320379 +-5.000000 13.600000 25.592907 +-5.000000 13.700000 24.885435 +-5.000000 13.800000 24.197963 +-5.000000 13.900000 23.530491 +-5.000000 14.000000 22.883019 +-5.000000 14.100000 22.255547 +-5.000000 14.200000 21.648075 +-5.000000 14.300000 21.060603 +-5.000000 14.400000 20.493131 +-5.000000 14.500000 19.945659 +-5.000000 14.600000 19.418187 +-5.000000 14.700000 18.910715 +-5.000000 14.800000 18.423243 +-5.000000 14.900000 17.955771 +-5.000000 15.000000 17.508300 + +-4.900000 -5.000000 491.414591 +-4.900000 -4.900000 487.044528 +-4.900000 -4.800000 482.694466 +-4.900000 -4.700000 478.364403 +-4.900000 -4.600000 474.054341 +-4.900000 -4.500000 469.764278 +-4.900000 -4.400000 465.494216 +-4.900000 -4.300000 461.244153 +-4.900000 -4.200000 457.014091 +-4.900000 -4.100000 452.804028 +-4.900000 -4.000000 448.613966 +-4.900000 -3.900000 444.443904 +-4.900000 -3.800000 440.293841 +-4.900000 -3.700000 436.163779 +-4.900000 -3.600000 432.053716 +-4.900000 -3.500000 427.963654 +-4.900000 -3.400000 423.893591 +-4.900000 -3.300000 419.843529 +-4.900000 -3.200000 415.813466 +-4.900000 -3.100000 411.803404 +-4.900000 -3.000000 407.813341 +-4.900000 -2.900000 403.843279 +-4.900000 -2.800000 399.893217 +-4.900000 -2.700000 395.963154 +-4.900000 -2.600000 392.053092 +-4.900000 -2.500000 388.163029 +-4.900000 -2.400000 384.292967 +-4.900000 -2.300000 380.442904 +-4.900000 -2.200000 376.612842 +-4.900000 -2.100000 372.802779 +-4.900000 -2.000000 369.012717 +-4.900000 -1.900000 365.242654 +-4.900000 -1.800000 361.492592 +-4.900000 -1.700000 357.762530 +-4.900000 -1.600000 354.052467 +-4.900000 -1.500000 350.362405 +-4.900000 -1.400000 346.692342 +-4.900000 -1.300000 343.042280 +-4.900000 -1.200000 339.412217 +-4.900000 -1.100000 335.802155 +-4.900000 -1.000000 332.212092 +-4.900000 -0.900000 328.642030 +-4.900000 -0.800000 325.091967 +-4.900000 -0.700000 321.561905 +-4.900000 -0.600000 318.051843 +-4.900000 -0.500000 314.561780 +-4.900000 -0.400000 311.091718 +-4.900000 -0.300000 307.641655 +-4.900000 -0.200000 304.211593 +-4.900000 -0.100000 300.801530 +-4.900000 -0.000000 297.411468 +-4.900000 0.100000 294.041405 +-4.900000 0.200000 290.691343 +-4.900000 0.300000 287.361280 +-4.900000 0.400000 284.051218 +-4.900000 0.500000 280.761156 +-4.900000 0.600000 277.491093 +-4.900000 0.700000 274.241031 +-4.900000 0.800000 271.010968 +-4.900000 0.900000 267.800906 +-4.900000 1.000000 264.610843 +-4.900000 1.100000 261.440781 +-4.900000 1.200000 258.290718 +-4.900000 1.300000 255.160656 +-4.900000 1.400000 252.050593 +-4.900000 1.500000 248.960531 +-4.900000 1.600000 245.890469 +-4.900000 1.700000 242.840406 +-4.900000 1.800000 239.810344 +-4.900000 1.900000 236.800281 +-4.900000 2.000000 233.810219 +-4.900000 2.100000 230.840156 +-4.900000 2.200000 227.890094 +-4.900000 2.300000 224.960031 +-4.900000 2.400000 222.049969 +-4.900000 2.500000 219.159906 +-4.900000 2.600000 216.289844 +-4.900000 2.700000 213.439782 +-4.900000 2.800000 210.609719 +-4.900000 2.900000 207.799657 +-4.900000 3.000000 205.009594 +-4.900000 3.100000 202.239532 +-4.900000 3.200000 199.489469 +-4.900000 3.300000 196.759407 +-4.900000 3.400000 194.049344 +-4.900000 3.500000 191.359282 +-4.900000 3.600000 188.689219 +-4.900000 3.700000 186.039157 +-4.900000 3.800000 183.409095 +-4.900000 3.900000 180.799032 +-4.900000 4.000000 178.208970 +-4.900000 4.100000 175.638907 +-4.900000 4.200000 173.088845 +-4.900000 4.300000 170.558782 +-4.900000 4.400000 168.048720 +-4.900000 4.500000 165.558657 +-4.900000 4.600000 163.088595 +-4.900000 4.700000 160.638532 +-4.900000 4.800000 158.208470 +-4.900000 4.900000 155.798408 +-4.900000 5.000000 153.408345 +-4.900000 5.100000 151.038283 +-4.900000 5.200000 148.688220 +-4.900000 5.300000 146.358158 +-4.900000 5.400000 144.048095 +-4.900000 5.500000 141.758033 +-4.900000 5.600000 139.487970 +-4.900000 5.700000 137.237908 +-4.900000 5.800000 135.007845 +-4.900000 5.900000 132.797783 +-4.900000 6.000000 130.607720 +-4.900000 6.100000 128.437658 +-4.900000 6.200000 126.287596 +-4.900000 6.300000 124.157533 +-4.900000 6.400000 122.047471 +-4.900000 6.500000 119.957408 +-4.900000 6.600000 117.887346 +-4.900000 6.700000 115.837283 +-4.900000 6.800000 113.807221 +-4.900000 6.900000 111.797158 +-4.900000 7.000000 109.807096 +-4.900000 7.100000 107.837033 +-4.900000 7.200000 105.886971 +-4.900000 7.300000 103.956909 +-4.900000 7.400000 102.046846 +-4.900000 7.500000 100.156784 +-4.900000 7.600000 98.286721 +-4.900000 7.700000 96.436659 +-4.900000 7.800000 94.606596 +-4.900000 7.900000 92.796534 +-4.900000 8.000000 91.006471 +-4.900000 8.100000 89.236409 +-4.900000 8.200000 87.486346 +-4.900000 8.300000 85.756284 +-4.900000 8.400000 84.046222 +-4.900000 8.500000 82.356159 +-4.900000 8.600000 80.686097 +-4.900000 8.700000 79.036034 +-4.900000 8.800000 77.405972 +-4.900000 8.900000 75.795909 +-4.900000 9.000000 74.205847 +-4.900000 9.100000 72.635784 +-4.900000 9.200000 71.085722 +-4.900000 9.300000 69.555659 +-4.900000 9.400000 68.045597 +-4.900000 9.500000 66.555535 +-4.900000 9.600000 65.085472 +-4.900000 9.700000 63.635410 +-4.900000 9.800000 62.205347 +-4.900000 9.900000 60.795285 +-4.900000 10.000000 59.405222 +-4.900000 10.100000 58.035160 +-4.900000 10.200000 56.685097 +-4.900000 10.300000 55.355035 +-4.900000 10.400000 54.044972 +-4.900000 10.500000 52.754910 +-4.900000 10.600000 51.484848 +-4.900000 10.700000 50.234785 +-4.900000 10.800000 49.004723 +-4.900000 10.900000 47.794660 +-4.900000 11.000000 46.604598 +-4.900000 11.100000 45.434535 +-4.900000 11.200000 44.284473 +-4.900000 11.300000 43.154410 +-4.900000 11.400000 42.044348 +-4.900000 11.500000 40.954285 +-4.900000 11.600000 39.884223 +-4.900000 11.700000 38.834161 +-4.900000 11.800000 37.804098 +-4.900000 11.900000 36.794036 +-4.900000 12.000000 35.803973 +-4.900000 12.100000 34.833911 +-4.900000 12.200000 33.883848 +-4.900000 12.300000 32.953786 +-4.900000 12.400000 32.043723 +-4.900000 12.500000 31.153661 +-4.900000 12.600000 30.283598 +-4.900000 12.700000 29.433536 +-4.900000 12.800000 28.603474 +-4.900000 12.900000 27.793411 +-4.900000 13.000000 27.003349 +-4.900000 13.100000 26.233286 +-4.900000 13.200000 25.483224 +-4.900000 13.300000 24.753161 +-4.900000 13.400000 24.043099 +-4.900000 13.500000 23.353036 +-4.900000 13.600000 22.682974 +-4.900000 13.700000 22.032911 +-4.900000 13.800000 21.402849 +-4.900000 13.900000 20.792787 +-4.900000 14.000000 20.202724 +-4.900000 14.100000 19.632662 +-4.900000 14.200000 19.082599 +-4.900000 14.300000 18.552537 +-4.900000 14.400000 18.042474 +-4.900000 14.500000 17.552412 +-4.900000 14.600000 17.082349 +-4.900000 14.700000 16.632287 +-4.900000 14.800000 16.202224 +-4.900000 14.900000 15.792162 +-4.900000 15.000000 15.402100 + +-4.800000 -5.000000 478.085075 +-4.800000 -4.900000 473.771906 +-4.800000 -4.800000 469.478736 +-4.800000 -4.700000 465.205566 +-4.800000 -4.600000 460.952397 +-4.800000 -4.500000 456.719227 +-4.800000 -4.400000 452.506057 +-4.800000 -4.300000 448.312888 +-4.800000 -4.200000 444.139718 +-4.800000 -4.100000 439.986548 +-4.800000 -4.000000 435.853379 +-4.800000 -3.900000 431.740209 +-4.800000 -3.800000 427.647039 +-4.800000 -3.700000 423.573870 +-4.800000 -3.600000 419.520700 +-4.800000 -3.500000 415.487530 +-4.800000 -3.400000 411.474361 +-4.800000 -3.300000 407.481191 +-4.800000 -3.200000 403.508021 +-4.800000 -3.100000 399.554852 +-4.800000 -3.000000 395.621682 +-4.800000 -2.900000 391.708512 +-4.800000 -2.800000 387.815343 +-4.800000 -2.700000 383.942173 +-4.800000 -2.600000 380.089003 +-4.800000 -2.500000 376.255834 +-4.800000 -2.400000 372.442664 +-4.800000 -2.300000 368.649494 +-4.800000 -2.200000 364.876325 +-4.800000 -2.100000 361.123155 +-4.800000 -2.000000 357.389985 +-4.800000 -1.900000 353.676816 +-4.800000 -1.800000 349.983646 +-4.800000 -1.700000 346.310476 +-4.800000 -1.600000 342.657307 +-4.800000 -1.500000 339.024137 +-4.800000 -1.400000 335.410967 +-4.800000 -1.300000 331.817798 +-4.800000 -1.200000 328.244628 +-4.800000 -1.100000 324.691458 +-4.800000 -1.000000 321.158289 +-4.800000 -0.900000 317.645119 +-4.800000 -0.800000 314.151949 +-4.800000 -0.700000 310.678779 +-4.800000 -0.600000 307.225610 +-4.800000 -0.500000 303.792440 +-4.800000 -0.400000 300.379270 +-4.800000 -0.300000 296.986101 +-4.800000 -0.200000 293.612931 +-4.800000 -0.100000 290.259761 +-4.800000 -0.000000 286.926592 +-4.800000 0.100000 283.613422 +-4.800000 0.200000 280.320252 +-4.800000 0.300000 277.047083 +-4.800000 0.400000 273.793913 +-4.800000 0.500000 270.560743 +-4.800000 0.600000 267.347574 +-4.800000 0.700000 264.154404 +-4.800000 0.800000 260.981234 +-4.800000 0.900000 257.828065 +-4.800000 1.000000 254.694895 +-4.800000 1.100000 251.581725 +-4.800000 1.200000 248.488556 +-4.800000 1.300000 245.415386 +-4.800000 1.400000 242.362216 +-4.800000 1.500000 239.329047 +-4.800000 1.600000 236.315877 +-4.800000 1.700000 233.322707 +-4.800000 1.800000 230.349538 +-4.800000 1.900000 227.396368 +-4.800000 2.000000 224.463198 +-4.800000 2.100000 221.550029 +-4.800000 2.200000 218.656859 +-4.800000 2.300000 215.783689 +-4.800000 2.400000 212.930520 +-4.800000 2.500000 210.097350 +-4.800000 2.600000 207.284180 +-4.800000 2.700000 204.491011 +-4.800000 2.800000 201.717841 +-4.800000 2.900000 198.964671 +-4.800000 3.000000 196.231502 +-4.800000 3.100000 193.518332 +-4.800000 3.200000 190.825162 +-4.800000 3.300000 188.151993 +-4.800000 3.400000 185.498823 +-4.800000 3.500000 182.865653 +-4.800000 3.600000 180.252484 +-4.800000 3.700000 177.659314 +-4.800000 3.800000 175.086144 +-4.800000 3.900000 172.532975 +-4.800000 4.000000 169.999805 +-4.800000 4.100000 167.486635 +-4.800000 4.200000 164.993466 +-4.800000 4.300000 162.520296 +-4.800000 4.400000 160.067126 +-4.800000 4.500000 157.633957 +-4.800000 4.600000 155.220787 +-4.800000 4.700000 152.827617 +-4.800000 4.800000 150.454448 +-4.800000 4.900000 148.101278 +-4.800000 5.000000 145.768108 +-4.800000 5.100000 143.454939 +-4.800000 5.200000 141.161769 +-4.800000 5.300000 138.888599 +-4.800000 5.400000 136.635430 +-4.800000 5.500000 134.402260 +-4.800000 5.600000 132.189090 +-4.800000 5.700000 129.995920 +-4.800000 5.800000 127.822751 +-4.800000 5.900000 125.669581 +-4.800000 6.000000 123.536411 +-4.800000 6.100000 121.423242 +-4.800000 6.200000 119.330072 +-4.800000 6.300000 117.256902 +-4.800000 6.400000 115.203733 +-4.800000 6.500000 113.170563 +-4.800000 6.600000 111.157393 +-4.800000 6.700000 109.164224 +-4.800000 6.800000 107.191054 +-4.800000 6.900000 105.237884 +-4.800000 7.000000 103.304715 +-4.800000 7.100000 101.391545 +-4.800000 7.200000 99.498375 +-4.800000 7.300000 97.625206 +-4.800000 7.400000 95.772036 +-4.800000 7.500000 93.938866 +-4.800000 7.600000 92.125697 +-4.800000 7.700000 90.332527 +-4.800000 7.800000 88.559357 +-4.800000 7.900000 86.806188 +-4.800000 8.000000 85.073018 +-4.800000 8.100000 83.359848 +-4.800000 8.200000 81.666679 +-4.800000 8.300000 79.993509 +-4.800000 8.400000 78.340339 +-4.800000 8.500000 76.707170 +-4.800000 8.600000 75.094000 +-4.800000 8.700000 73.500830 +-4.800000 8.800000 71.927661 +-4.800000 8.900000 70.374491 +-4.800000 9.000000 68.841321 +-4.800000 9.100000 67.328152 +-4.800000 9.200000 65.834982 +-4.800000 9.300000 64.361812 +-4.800000 9.400000 62.908643 +-4.800000 9.500000 61.475473 +-4.800000 9.600000 60.062303 +-4.800000 9.700000 58.669134 +-4.800000 9.800000 57.295964 +-4.800000 9.900000 55.942794 +-4.800000 10.000000 54.609625 +-4.800000 10.100000 53.296455 +-4.800000 10.200000 52.003285 +-4.800000 10.300000 50.730116 +-4.800000 10.400000 49.476946 +-4.800000 10.500000 48.243776 +-4.800000 10.600000 47.030607 +-4.800000 10.700000 45.837437 +-4.800000 10.800000 44.664267 +-4.800000 10.900000 43.511098 +-4.800000 11.000000 42.377928 +-4.800000 11.100000 41.264758 +-4.800000 11.200000 40.171589 +-4.800000 11.300000 39.098419 +-4.800000 11.400000 38.045249 +-4.800000 11.500000 37.012080 +-4.800000 11.600000 35.998910 +-4.800000 11.700000 35.005740 +-4.800000 11.800000 34.032571 +-4.800000 11.900000 33.079401 +-4.800000 12.000000 32.146231 +-4.800000 12.100000 31.233061 +-4.800000 12.200000 30.339892 +-4.800000 12.300000 29.466722 +-4.800000 12.400000 28.613552 +-4.800000 12.500000 27.780383 +-4.800000 12.600000 26.967213 +-4.800000 12.700000 26.174043 +-4.800000 12.800000 25.400874 +-4.800000 12.900000 24.647704 +-4.800000 13.000000 23.914534 +-4.800000 13.100000 23.201365 +-4.800000 13.200000 22.508195 +-4.800000 13.300000 21.835025 +-4.800000 13.400000 21.181856 +-4.800000 13.500000 20.548686 +-4.800000 13.600000 19.935516 +-4.800000 13.700000 19.342347 +-4.800000 13.800000 18.769177 +-4.800000 13.900000 18.216007 +-4.800000 14.000000 17.682838 +-4.800000 14.100000 17.169668 +-4.800000 14.200000 16.676498 +-4.800000 14.300000 16.203329 +-4.800000 14.400000 15.750159 +-4.800000 14.500000 15.316989 +-4.800000 14.600000 14.903820 +-4.800000 14.700000 14.510650 +-4.800000 14.800000 14.137480 +-4.800000 14.900000 13.784311 +-4.800000 15.000000 13.451141 + +-4.700000 -5.000000 465.019239 +-4.700000 -4.900000 460.762445 +-4.700000 -4.800000 456.525652 +-4.700000 -4.700000 452.308858 +-4.700000 -4.600000 448.112064 +-4.700000 -4.500000 443.935271 +-4.700000 -4.400000 439.778477 +-4.700000 -4.300000 435.641684 +-4.700000 -4.200000 431.524890 +-4.700000 -4.100000 427.428096 +-4.700000 -4.000000 423.351303 +-4.700000 -3.900000 419.294509 +-4.700000 -3.800000 415.257715 +-4.700000 -3.700000 411.240922 +-4.700000 -3.600000 407.244128 +-4.700000 -3.500000 403.267335 +-4.700000 -3.400000 399.310541 +-4.700000 -3.300000 395.373747 +-4.700000 -3.200000 391.456954 +-4.700000 -3.100000 387.560160 +-4.700000 -3.000000 383.683366 +-4.700000 -2.900000 379.826573 +-4.700000 -2.800000 375.989779 +-4.700000 -2.700000 372.172986 +-4.700000 -2.600000 368.376192 +-4.700000 -2.500000 364.599398 +-4.700000 -2.400000 360.842605 +-4.700000 -2.300000 357.105811 +-4.700000 -2.200000 353.389017 +-4.700000 -2.100000 349.692224 +-4.700000 -2.000000 346.015430 +-4.700000 -1.900000 342.358637 +-4.700000 -1.800000 338.721843 +-4.700000 -1.700000 335.105049 +-4.700000 -1.600000 331.508256 +-4.700000 -1.500000 327.931462 +-4.700000 -1.400000 324.374668 +-4.700000 -1.300000 320.837875 +-4.700000 -1.200000 317.321081 +-4.700000 -1.100000 313.824287 +-4.700000 -1.000000 310.347494 +-4.700000 -0.900000 306.890700 +-4.700000 -0.800000 303.453907 +-4.700000 -0.700000 300.037113 +-4.700000 -0.600000 296.640319 +-4.700000 -0.500000 293.263526 +-4.700000 -0.400000 289.906732 +-4.700000 -0.300000 286.569938 +-4.700000 -0.200000 283.253145 +-4.700000 -0.100000 279.956351 +-4.700000 -0.000000 276.679558 +-4.700000 0.100000 273.422764 +-4.700000 0.200000 270.185970 +-4.700000 0.300000 266.969177 +-4.700000 0.400000 263.772383 +-4.700000 0.500000 260.595589 +-4.700000 0.600000 257.438796 +-4.700000 0.700000 254.302002 +-4.700000 0.800000 251.185209 +-4.700000 0.900000 248.088415 +-4.700000 1.000000 245.011621 +-4.700000 1.100000 241.954828 +-4.700000 1.200000 238.918034 +-4.700000 1.300000 235.901240 +-4.700000 1.400000 232.904447 +-4.700000 1.500000 229.927653 +-4.700000 1.600000 226.970860 +-4.700000 1.700000 224.034066 +-4.700000 1.800000 221.117272 +-4.700000 1.900000 218.220479 +-4.700000 2.000000 215.343685 +-4.700000 2.100000 212.486891 +-4.700000 2.200000 209.650098 +-4.700000 2.300000 206.833304 +-4.700000 2.400000 204.036511 +-4.700000 2.500000 201.259717 +-4.700000 2.600000 198.502923 +-4.700000 2.700000 195.766130 +-4.700000 2.800000 193.049336 +-4.700000 2.900000 190.352542 +-4.700000 3.000000 187.675749 +-4.700000 3.100000 185.018955 +-4.700000 3.200000 182.382162 +-4.700000 3.300000 179.765368 +-4.700000 3.400000 177.168574 +-4.700000 3.500000 174.591781 +-4.700000 3.600000 172.034987 +-4.700000 3.700000 169.498193 +-4.700000 3.800000 166.981400 +-4.700000 3.900000 164.484606 +-4.700000 4.000000 162.007813 +-4.700000 4.100000 159.551019 +-4.700000 4.200000 157.114225 +-4.700000 4.300000 154.697432 +-4.700000 4.400000 152.300638 +-4.700000 4.500000 149.923844 +-4.700000 4.600000 147.567051 +-4.700000 4.700000 145.230257 +-4.700000 4.800000 142.913464 +-4.700000 4.900000 140.616670 +-4.700000 5.000000 138.339876 +-4.700000 5.100000 136.083083 +-4.700000 5.200000 133.846289 +-4.700000 5.300000 131.629495 +-4.700000 5.400000 129.432702 +-4.700000 5.500000 127.255908 +-4.700000 5.600000 125.099115 +-4.700000 5.700000 122.962321 +-4.700000 5.800000 120.845527 +-4.700000 5.900000 118.748734 +-4.700000 6.000000 116.671940 +-4.700000 6.100000 114.615146 +-4.700000 6.200000 112.578353 +-4.700000 6.300000 110.561559 +-4.700000 6.400000 108.564766 +-4.700000 6.500000 106.587972 +-4.700000 6.600000 104.631178 +-4.700000 6.700000 102.694385 +-4.700000 6.800000 100.777591 +-4.700000 6.900000 98.880797 +-4.700000 7.000000 97.004004 +-4.700000 7.100000 95.147210 +-4.700000 7.200000 93.310416 +-4.700000 7.300000 91.493623 +-4.700000 7.400000 89.696829 +-4.700000 7.500000 87.920036 +-4.700000 7.600000 86.163242 +-4.700000 7.700000 84.426448 +-4.700000 7.800000 82.709655 +-4.700000 7.900000 81.012861 +-4.700000 8.000000 79.336067 +-4.700000 8.100000 77.679274 +-4.700000 8.200000 76.042480 +-4.700000 8.300000 74.425687 +-4.700000 8.400000 72.828893 +-4.700000 8.500000 71.252099 +-4.700000 8.600000 69.695306 +-4.700000 8.700000 68.158512 +-4.700000 8.800000 66.641718 +-4.700000 8.900000 65.144925 +-4.700000 9.000000 63.668131 +-4.700000 9.100000 62.211338 +-4.700000 9.200000 60.774544 +-4.700000 9.300000 59.357750 +-4.700000 9.400000 57.960957 +-4.700000 9.500000 56.584163 +-4.700000 9.600000 55.227369 +-4.700000 9.700000 53.890576 +-4.700000 9.800000 52.573782 +-4.700000 9.900000 51.276989 +-4.700000 10.000000 50.000195 +-4.700000 10.100000 48.743401 +-4.700000 10.200000 47.506608 +-4.700000 10.300000 46.289814 +-4.700000 10.400000 45.093020 +-4.700000 10.500000 43.916227 +-4.700000 10.600000 42.759433 +-4.700000 10.700000 41.622640 +-4.700000 10.800000 40.505846 +-4.700000 10.900000 39.409052 +-4.700000 11.000000 38.332259 +-4.700000 11.100000 37.275465 +-4.700000 11.200000 36.238671 +-4.700000 11.300000 35.221878 +-4.700000 11.400000 34.225084 +-4.700000 11.500000 33.248291 +-4.700000 11.600000 32.291497 +-4.700000 11.700000 31.354703 +-4.700000 11.800000 30.437910 +-4.700000 11.900000 29.541116 +-4.700000 12.000000 28.664322 +-4.700000 12.100000 27.807529 +-4.700000 12.200000 26.970735 +-4.700000 12.300000 26.153942 +-4.700000 12.400000 25.357148 +-4.700000 12.500000 24.580354 +-4.700000 12.600000 23.823561 +-4.700000 12.700000 23.086767 +-4.700000 12.800000 22.369973 +-4.700000 12.900000 21.673180 +-4.700000 13.000000 20.996386 +-4.700000 13.100000 20.339593 +-4.700000 13.200000 19.702799 +-4.700000 13.300000 19.086005 +-4.700000 13.400000 18.489212 +-4.700000 13.500000 17.912418 +-4.700000 13.600000 17.355624 +-4.700000 13.700000 16.818831 +-4.700000 13.800000 16.302037 +-4.700000 13.900000 15.805244 +-4.700000 14.000000 15.328450 +-4.700000 14.100000 14.871656 +-4.700000 14.200000 14.434863 +-4.700000 14.300000 14.018069 +-4.700000 14.400000 13.621275 +-4.700000 14.500000 13.244482 +-4.700000 14.600000 12.887688 +-4.700000 14.700000 12.550895 +-4.700000 14.800000 12.234101 +-4.700000 14.900000 11.937307 +-4.700000 15.000000 11.660514 + +-4.600000 -5.000000 452.222295 +-4.600000 -4.900000 448.021360 +-4.600000 -4.800000 443.840426 +-4.600000 -4.700000 439.679492 +-4.600000 -4.600000 435.538558 +-4.600000 -4.500000 431.417623 +-4.600000 -4.400000 427.316689 +-4.600000 -4.300000 423.235755 +-4.600000 -4.200000 419.174820 +-4.600000 -4.100000 415.133886 +-4.600000 -4.000000 411.112952 +-4.600000 -3.900000 407.112017 +-4.600000 -3.800000 403.131083 +-4.600000 -3.700000 399.170149 +-4.600000 -3.600000 395.229214 +-4.600000 -3.500000 391.308280 +-4.600000 -3.400000 387.407346 +-4.600000 -3.300000 383.526411 +-4.600000 -3.200000 379.665477 +-4.600000 -3.100000 375.824543 +-4.600000 -3.000000 372.003608 +-4.600000 -2.900000 368.202674 +-4.600000 -2.800000 364.421740 +-4.600000 -2.700000 360.660805 +-4.600000 -2.600000 356.919871 +-4.600000 -2.500000 353.198937 +-4.600000 -2.400000 349.498003 +-4.600000 -2.300000 345.817068 +-4.600000 -2.200000 342.156134 +-4.600000 -2.100000 338.515200 +-4.600000 -2.000000 334.894265 +-4.600000 -1.900000 331.293331 +-4.600000 -1.800000 327.712397 +-4.600000 -1.700000 324.151462 +-4.600000 -1.600000 320.610528 +-4.600000 -1.500000 317.089594 +-4.600000 -1.400000 313.588659 +-4.600000 -1.300000 310.107725 +-4.600000 -1.200000 306.646791 +-4.600000 -1.100000 303.205856 +-4.600000 -1.000000 299.784922 +-4.600000 -0.900000 296.383988 +-4.600000 -0.800000 293.003053 +-4.600000 -0.700000 289.642119 +-4.600000 -0.600000 286.301185 +-4.600000 -0.500000 282.980250 +-4.600000 -0.400000 279.679316 +-4.600000 -0.300000 276.398382 +-4.600000 -0.200000 273.137447 +-4.600000 -0.100000 269.896513 +-4.600000 -0.000000 266.675579 +-4.600000 0.100000 263.474645 +-4.600000 0.200000 260.293710 +-4.600000 0.300000 257.132776 +-4.600000 0.400000 253.991842 +-4.600000 0.500000 250.870907 +-4.600000 0.600000 247.769973 +-4.600000 0.700000 244.689039 +-4.600000 0.800000 241.628104 +-4.600000 0.900000 238.587170 +-4.600000 1.000000 235.566236 +-4.600000 1.100000 232.565301 +-4.600000 1.200000 229.584367 +-4.600000 1.300000 226.623433 +-4.600000 1.400000 223.682498 +-4.600000 1.500000 220.761564 +-4.600000 1.600000 217.860630 +-4.600000 1.700000 214.979695 +-4.600000 1.800000 212.118761 +-4.600000 1.900000 209.277827 +-4.600000 2.000000 206.456892 +-4.600000 2.100000 203.655958 +-4.600000 2.200000 200.875024 +-4.600000 2.300000 198.114090 +-4.600000 2.400000 195.373155 +-4.600000 2.500000 192.652221 +-4.600000 2.600000 189.951287 +-4.600000 2.700000 187.270352 +-4.600000 2.800000 184.609418 +-4.600000 2.900000 181.968484 +-4.600000 3.000000 179.347549 +-4.600000 3.100000 176.746615 +-4.600000 3.200000 174.165681 +-4.600000 3.300000 171.604746 +-4.600000 3.400000 169.063812 +-4.600000 3.500000 166.542878 +-4.600000 3.600000 164.041943 +-4.600000 3.700000 161.561009 +-4.600000 3.800000 159.100075 +-4.600000 3.900000 156.659140 +-4.600000 4.000000 154.238206 +-4.600000 4.100000 151.837272 +-4.600000 4.200000 149.456337 +-4.600000 4.300000 147.095403 +-4.600000 4.400000 144.754469 +-4.600000 4.500000 142.433534 +-4.600000 4.600000 140.132600 +-4.600000 4.700000 137.851666 +-4.600000 4.800000 135.590732 +-4.600000 4.900000 133.349797 +-4.600000 5.000000 131.128863 +-4.600000 5.100000 128.927929 +-4.600000 5.200000 126.746994 +-4.600000 5.300000 124.586060 +-4.600000 5.400000 122.445126 +-4.600000 5.500000 120.324191 +-4.600000 5.600000 118.223257 +-4.600000 5.700000 116.142323 +-4.600000 5.800000 114.081388 +-4.600000 5.900000 112.040454 +-4.600000 6.000000 110.019520 +-4.600000 6.100000 108.018585 +-4.600000 6.200000 106.037651 +-4.600000 6.300000 104.076717 +-4.600000 6.400000 102.135782 +-4.600000 6.500000 100.214848 +-4.600000 6.600000 98.313914 +-4.600000 6.700000 96.432979 +-4.600000 6.800000 94.572045 +-4.600000 6.900000 92.731111 +-4.600000 7.000000 90.910177 +-4.600000 7.100000 89.109242 +-4.600000 7.200000 87.328308 +-4.600000 7.300000 85.567374 +-4.600000 7.400000 83.826439 +-4.600000 7.500000 82.105505 +-4.600000 7.600000 80.404571 +-4.600000 7.700000 78.723636 +-4.600000 7.800000 77.062702 +-4.600000 7.900000 75.421768 +-4.600000 8.000000 73.800833 +-4.600000 8.100000 72.199899 +-4.600000 8.200000 70.618965 +-4.600000 8.300000 69.058030 +-4.600000 8.400000 67.517096 +-4.600000 8.500000 65.996162 +-4.600000 8.600000 64.495227 +-4.600000 8.700000 63.014293 +-4.600000 8.800000 61.553359 +-4.600000 8.900000 60.112424 +-4.600000 9.000000 58.691490 +-4.600000 9.100000 57.290556 +-4.600000 9.200000 55.909621 +-4.600000 9.300000 54.548687 +-4.600000 9.400000 53.207753 +-4.600000 9.500000 51.886819 +-4.600000 9.600000 50.585884 +-4.600000 9.700000 49.304950 +-4.600000 9.800000 48.044016 +-4.600000 9.900000 46.803081 +-4.600000 10.000000 45.582147 +-4.600000 10.100000 44.381213 +-4.600000 10.200000 43.200278 +-4.600000 10.300000 42.039344 +-4.600000 10.400000 40.898410 +-4.600000 10.500000 39.777475 +-4.600000 10.600000 38.676541 +-4.600000 10.700000 37.595607 +-4.600000 10.800000 36.534672 +-4.600000 10.900000 35.493738 +-4.600000 11.000000 34.472804 +-4.600000 11.100000 33.471869 +-4.600000 11.200000 32.490935 +-4.600000 11.300000 31.530001 +-4.600000 11.400000 30.589066 +-4.600000 11.500000 29.668132 +-4.600000 11.600000 28.767198 +-4.600000 11.700000 27.886264 +-4.600000 11.800000 27.025329 +-4.600000 11.900000 26.184395 +-4.600000 12.000000 25.363461 +-4.600000 12.100000 24.562526 +-4.600000 12.200000 23.781592 +-4.600000 12.300000 23.020658 +-4.600000 12.400000 22.279723 +-4.600000 12.500000 21.558789 +-4.600000 12.600000 20.857855 +-4.600000 12.700000 20.176920 +-4.600000 12.800000 19.515986 +-4.600000 12.900000 18.875052 +-4.600000 13.000000 18.254117 +-4.600000 13.100000 17.653183 +-4.600000 13.200000 17.072249 +-4.600000 13.300000 16.511314 +-4.600000 13.400000 15.970380 +-4.600000 13.500000 15.449446 +-4.600000 13.600000 14.948511 +-4.600000 13.700000 14.467577 +-4.600000 13.800000 14.006643 +-4.600000 13.900000 13.565708 +-4.600000 14.000000 13.144774 +-4.600000 14.100000 12.743840 +-4.600000 14.200000 12.362906 +-4.600000 14.300000 12.001971 +-4.600000 14.400000 11.661037 +-4.600000 14.500000 11.340103 +-4.600000 14.600000 11.039168 +-4.600000 14.700000 10.758234 +-4.600000 14.800000 10.497300 +-4.600000 14.900000 10.256365 +-4.600000 15.000000 10.035431 + +-4.500000 -5.000000 439.699485 +-4.500000 -4.900000 435.553893 +-4.500000 -4.800000 431.428301 +-4.500000 -4.700000 427.322710 +-4.500000 -4.600000 423.237118 +-4.500000 -4.500000 419.171526 +-4.500000 -4.400000 415.125934 +-4.500000 -4.300000 411.100343 +-4.500000 -4.200000 407.094751 +-4.500000 -4.100000 403.109159 +-4.500000 -4.000000 399.143567 +-4.500000 -3.900000 395.197976 +-4.500000 -3.800000 391.272384 +-4.500000 -3.700000 387.366792 +-4.500000 -3.600000 383.481200 +-4.500000 -3.500000 379.615609 +-4.500000 -3.400000 375.770017 +-4.500000 -3.300000 371.944425 +-4.500000 -3.200000 368.138833 +-4.500000 -3.100000 364.353242 +-4.500000 -3.000000 360.587650 +-4.500000 -2.900000 356.842058 +-4.500000 -2.800000 353.116466 +-4.500000 -2.700000 349.410875 +-4.500000 -2.600000 345.725283 +-4.500000 -2.500000 342.059691 +-4.500000 -2.400000 338.414099 +-4.500000 -2.300000 334.788508 +-4.500000 -2.200000 331.182916 +-4.500000 -2.100000 327.597324 +-4.500000 -2.000000 324.031732 +-4.500000 -1.900000 320.486141 +-4.500000 -1.800000 316.960549 +-4.500000 -1.700000 313.454957 +-4.500000 -1.600000 309.969365 +-4.500000 -1.500000 306.503774 +-4.500000 -1.400000 303.058182 +-4.500000 -1.300000 299.632590 +-4.500000 -1.200000 296.226998 +-4.500000 -1.100000 292.841407 +-4.500000 -1.000000 289.475815 +-4.500000 -0.900000 286.130223 +-4.500000 -0.800000 282.804631 +-4.500000 -0.700000 279.499040 +-4.500000 -0.600000 276.213448 +-4.500000 -0.500000 272.947856 +-4.500000 -0.400000 269.702264 +-4.500000 -0.300000 266.476673 +-4.500000 -0.200000 263.271081 +-4.500000 -0.100000 260.085489 +-4.500000 -0.000000 256.919897 +-4.500000 0.100000 253.774306 +-4.500000 0.200000 250.648714 +-4.500000 0.300000 247.543122 +-4.500000 0.400000 244.457530 +-4.500000 0.500000 241.391939 +-4.500000 0.600000 238.346347 +-4.500000 0.700000 235.320755 +-4.500000 0.800000 232.315163 +-4.500000 0.900000 229.329572 +-4.500000 1.000000 226.363980 +-4.500000 1.100000 223.418388 +-4.500000 1.200000 220.492796 +-4.500000 1.300000 217.587205 +-4.500000 1.400000 214.701613 +-4.500000 1.500000 211.836021 +-4.500000 1.600000 208.990429 +-4.500000 1.700000 206.164838 +-4.500000 1.800000 203.359246 +-4.500000 1.900000 200.573654 +-4.500000 2.000000 197.808062 +-4.500000 2.100000 195.062471 +-4.500000 2.200000 192.336879 +-4.500000 2.300000 189.631287 +-4.500000 2.400000 186.945695 +-4.500000 2.500000 184.280104 +-4.500000 2.600000 181.634512 +-4.500000 2.700000 179.008920 +-4.500000 2.800000 176.403328 +-4.500000 2.900000 173.817737 +-4.500000 3.000000 171.252145 +-4.500000 3.100000 168.706553 +-4.500000 3.200000 166.180961 +-4.500000 3.300000 163.675370 +-4.500000 3.400000 161.189778 +-4.500000 3.500000 158.724186 +-4.500000 3.600000 156.278594 +-4.500000 3.700000 153.853003 +-4.500000 3.800000 151.447411 +-4.500000 3.900000 149.061819 +-4.500000 4.000000 146.696227 +-4.500000 4.100000 144.350636 +-4.500000 4.200000 142.025044 +-4.500000 4.300000 139.719452 +-4.500000 4.400000 137.433860 +-4.500000 4.500000 135.168269 +-4.500000 4.600000 132.922677 +-4.500000 4.700000 130.697085 +-4.500000 4.800000 128.491493 +-4.500000 4.900000 126.305902 +-4.500000 5.000000 124.140310 +-4.500000 5.100000 121.994718 +-4.500000 5.200000 119.869126 +-4.500000 5.300000 117.763535 +-4.500000 5.400000 115.677943 +-4.500000 5.500000 113.612351 +-4.500000 5.600000 111.566759 +-4.500000 5.700000 109.541168 +-4.500000 5.800000 107.535576 +-4.500000 5.900000 105.549984 +-4.500000 6.000000 103.584392 +-4.500000 6.100000 101.638801 +-4.500000 6.200000 99.713209 +-4.500000 6.300000 97.807617 +-4.500000 6.400000 95.922025 +-4.500000 6.500000 94.056434 +-4.500000 6.600000 92.210842 +-4.500000 6.700000 90.385250 +-4.500000 6.800000 88.579658 +-4.500000 6.900000 86.794067 +-4.500000 7.000000 85.028475 +-4.500000 7.100000 83.282883 +-4.500000 7.200000 81.557291 +-4.500000 7.300000 79.851700 +-4.500000 7.400000 78.166108 +-4.500000 7.500000 76.500516 +-4.500000 7.600000 74.854924 +-4.500000 7.700000 73.229333 +-4.500000 7.800000 71.623741 +-4.500000 7.900000 70.038149 +-4.500000 8.000000 68.472557 +-4.500000 8.100000 66.926966 +-4.500000 8.200000 65.401374 +-4.500000 8.300000 63.895782 +-4.500000 8.400000 62.410190 +-4.500000 8.500000 60.944599 +-4.500000 8.600000 59.499007 +-4.500000 8.700000 58.073415 +-4.500000 8.800000 56.667823 +-4.500000 8.900000 55.282232 +-4.500000 9.000000 53.916640 +-4.500000 9.100000 52.571048 +-4.500000 9.200000 51.245456 +-4.500000 9.300000 49.939865 +-4.500000 9.400000 48.654273 +-4.500000 9.500000 47.388681 +-4.500000 9.600000 46.143089 +-4.500000 9.700000 44.917498 +-4.500000 9.800000 43.711906 +-4.500000 9.900000 42.526314 +-4.500000 10.000000 41.360722 +-4.500000 10.100000 40.215131 +-4.500000 10.200000 39.089539 +-4.500000 10.300000 37.983947 +-4.500000 10.400000 36.898355 +-4.500000 10.500000 35.832764 +-4.500000 10.600000 34.787172 +-4.500000 10.700000 33.761580 +-4.500000 10.800000 32.755988 +-4.500000 10.900000 31.770397 +-4.500000 11.000000 30.804805 +-4.500000 11.100000 29.859213 +-4.500000 11.200000 28.933621 +-4.500000 11.300000 28.028030 +-4.500000 11.400000 27.142438 +-4.500000 11.500000 26.276846 +-4.500000 11.600000 25.431254 +-4.500000 11.700000 24.605663 +-4.500000 11.800000 23.800071 +-4.500000 11.900000 23.014479 +-4.500000 12.000000 22.248887 +-4.500000 12.100000 21.503296 +-4.500000 12.200000 20.777704 +-4.500000 12.300000 20.072112 +-4.500000 12.400000 19.386520 +-4.500000 12.500000 18.720929 +-4.500000 12.600000 18.075337 +-4.500000 12.700000 17.449745 +-4.500000 12.800000 16.844153 +-4.500000 12.900000 16.258562 +-4.500000 13.000000 15.692970 +-4.500000 13.100000 15.147378 +-4.500000 13.200000 14.621786 +-4.500000 13.300000 14.116195 +-4.500000 13.400000 13.630603 +-4.500000 13.500000 13.165011 +-4.500000 13.600000 12.719419 +-4.500000 13.700000 12.293828 +-4.500000 13.800000 11.888236 +-4.500000 13.900000 11.502644 +-4.500000 14.000000 11.137052 +-4.500000 14.100000 10.791461 +-4.500000 14.200000 10.465869 +-4.500000 14.300000 10.160277 +-4.500000 14.400000 9.874685 +-4.500000 14.500000 9.609094 +-4.500000 14.600000 9.363502 +-4.500000 14.700000 9.137910 +-4.500000 14.800000 8.932318 +-4.500000 14.900000 8.746727 +-4.500000 15.000000 8.581135 + +-4.400000 -5.000000 427.455983 +-4.400000 -4.900000 423.365217 +-4.400000 -4.800000 419.294451 +-4.400000 -4.700000 415.243685 +-4.400000 -4.600000 411.212919 +-4.400000 -4.500000 407.202154 +-4.400000 -4.400000 403.211388 +-4.400000 -4.300000 399.240622 +-4.400000 -4.200000 395.289856 +-4.400000 -4.100000 391.359090 +-4.400000 -4.000000 387.448324 +-4.400000 -3.900000 383.557558 +-4.400000 -3.800000 379.686792 +-4.400000 -3.700000 375.836026 +-4.400000 -3.600000 372.005260 +-4.400000 -3.500000 368.194494 +-4.400000 -3.400000 364.403728 +-4.400000 -3.300000 360.632963 +-4.400000 -3.200000 356.882197 +-4.400000 -3.100000 353.151431 +-4.400000 -3.000000 349.440665 +-4.400000 -2.900000 345.749899 +-4.400000 -2.800000 342.079133 +-4.400000 -2.700000 338.428367 +-4.400000 -2.600000 334.797601 +-4.400000 -2.500000 331.186835 +-4.400000 -2.400000 327.596069 +-4.400000 -2.300000 324.025303 +-4.400000 -2.200000 320.474537 +-4.400000 -2.100000 316.943772 +-4.400000 -2.000000 313.433006 +-4.400000 -1.900000 309.942240 +-4.400000 -1.800000 306.471474 +-4.400000 -1.700000 303.020708 +-4.400000 -1.600000 299.589942 +-4.400000 -1.500000 296.179176 +-4.400000 -1.400000 292.788410 +-4.400000 -1.300000 289.417644 +-4.400000 -1.200000 286.066878 +-4.400000 -1.100000 282.736112 +-4.400000 -1.000000 279.425346 +-4.400000 -0.900000 276.134580 +-4.400000 -0.800000 272.863815 +-4.400000 -0.700000 269.613049 +-4.400000 -0.600000 266.382283 +-4.400000 -0.500000 263.171517 +-4.400000 -0.400000 259.980751 +-4.400000 -0.300000 256.809985 +-4.400000 -0.200000 253.659219 +-4.400000 -0.100000 250.528453 +-4.400000 -0.000000 247.417687 +-4.400000 0.100000 244.326921 +-4.400000 0.200000 241.256155 +-4.400000 0.300000 238.205389 +-4.400000 0.400000 235.174624 +-4.400000 0.500000 232.163858 +-4.400000 0.600000 229.173092 +-4.400000 0.700000 226.202326 +-4.400000 0.800000 223.251560 +-4.400000 0.900000 220.320794 +-4.400000 1.000000 217.410028 +-4.400000 1.100000 214.519262 +-4.400000 1.200000 211.648496 +-4.400000 1.300000 208.797730 +-4.400000 1.400000 205.966964 +-4.400000 1.500000 203.156198 +-4.400000 1.600000 200.365433 +-4.400000 1.700000 197.594667 +-4.400000 1.800000 194.843901 +-4.400000 1.900000 192.113135 +-4.400000 2.000000 189.402369 +-4.400000 2.100000 186.711603 +-4.400000 2.200000 184.040837 +-4.400000 2.300000 181.390071 +-4.400000 2.400000 178.759305 +-4.400000 2.500000 176.148539 +-4.400000 2.600000 173.557773 +-4.400000 2.700000 170.987007 +-4.400000 2.800000 168.436241 +-4.400000 2.900000 165.905476 +-4.400000 3.000000 163.394710 +-4.400000 3.100000 160.903944 +-4.400000 3.200000 158.433178 +-4.400000 3.300000 155.982412 +-4.400000 3.400000 153.551646 +-4.400000 3.500000 151.140880 +-4.400000 3.600000 148.750114 +-4.400000 3.700000 146.379348 +-4.400000 3.800000 144.028582 +-4.400000 3.900000 141.697816 +-4.400000 4.000000 139.387050 +-4.400000 4.100000 137.096285 +-4.400000 4.200000 134.825519 +-4.400000 4.300000 132.574753 +-4.400000 4.400000 130.343987 +-4.400000 4.500000 128.133221 +-4.400000 4.600000 125.942455 +-4.400000 4.700000 123.771689 +-4.400000 4.800000 121.620923 +-4.400000 4.900000 119.490157 +-4.400000 5.000000 117.379391 +-4.400000 5.100000 115.288625 +-4.400000 5.200000 113.217859 +-4.400000 5.300000 111.167094 +-4.400000 5.400000 109.136328 +-4.400000 5.500000 107.125562 +-4.400000 5.600000 105.134796 +-4.400000 5.700000 103.164030 +-4.400000 5.800000 101.213264 +-4.400000 5.900000 99.282498 +-4.400000 6.000000 97.371732 +-4.400000 6.100000 95.480966 +-4.400000 6.200000 93.610200 +-4.400000 6.300000 91.759434 +-4.400000 6.400000 89.928668 +-4.400000 6.500000 88.117903 +-4.400000 6.600000 86.327137 +-4.400000 6.700000 84.556371 +-4.400000 6.800000 82.805605 +-4.400000 6.900000 81.074839 +-4.400000 7.000000 79.364073 +-4.400000 7.100000 77.673307 +-4.400000 7.200000 76.002541 +-4.400000 7.300000 74.351775 +-4.400000 7.400000 72.721009 +-4.400000 7.500000 71.110243 +-4.400000 7.600000 69.519477 +-4.400000 7.700000 67.948711 +-4.400000 7.800000 66.397946 +-4.400000 7.900000 64.867180 +-4.400000 8.000000 63.356414 +-4.400000 8.100000 61.865648 +-4.400000 8.200000 60.394882 +-4.400000 8.300000 58.944116 +-4.400000 8.400000 57.513350 +-4.400000 8.500000 56.102584 +-4.400000 8.600000 54.711818 +-4.400000 8.700000 53.341052 +-4.400000 8.800000 51.990286 +-4.400000 8.900000 50.659520 +-4.400000 9.000000 49.348755 +-4.400000 9.100000 48.057989 +-4.400000 9.200000 46.787223 +-4.400000 9.300000 45.536457 +-4.400000 9.400000 44.305691 +-4.400000 9.500000 43.094925 +-4.400000 9.600000 41.904159 +-4.400000 9.700000 40.733393 +-4.400000 9.800000 39.582627 +-4.400000 9.900000 38.451861 +-4.400000 10.000000 37.341095 +-4.400000 10.100000 36.250329 +-4.400000 10.200000 35.179564 +-4.400000 10.300000 34.128798 +-4.400000 10.400000 33.098032 +-4.400000 10.500000 32.087266 +-4.400000 10.600000 31.096500 +-4.400000 10.700000 30.125734 +-4.400000 10.800000 29.174968 +-4.400000 10.900000 28.244202 +-4.400000 11.000000 27.333436 +-4.400000 11.100000 26.442670 +-4.400000 11.200000 25.571904 +-4.400000 11.300000 24.721138 +-4.400000 11.400000 23.890372 +-4.400000 11.500000 23.079607 +-4.400000 11.600000 22.288841 +-4.400000 11.700000 21.518075 +-4.400000 11.800000 20.767309 +-4.400000 11.900000 20.036543 +-4.400000 12.000000 19.325777 +-4.400000 12.100000 18.635011 +-4.400000 12.200000 17.964245 +-4.400000 12.300000 17.313479 +-4.400000 12.400000 16.682713 +-4.400000 12.500000 16.071947 +-4.400000 12.600000 15.481181 +-4.400000 12.700000 14.910416 +-4.400000 12.800000 14.359650 +-4.400000 12.900000 13.828884 +-4.400000 13.000000 13.318118 +-4.400000 13.100000 12.827352 +-4.400000 13.200000 12.356586 +-4.400000 13.300000 11.905820 +-4.400000 13.400000 11.475054 +-4.400000 13.500000 11.064288 +-4.400000 13.600000 10.673522 +-4.400000 13.700000 10.302756 +-4.400000 13.800000 9.951990 +-4.400000 13.900000 9.621225 +-4.400000 14.000000 9.310459 +-4.400000 14.100000 9.019693 +-4.400000 14.200000 8.748927 +-4.400000 14.300000 8.498161 +-4.400000 14.400000 8.267395 +-4.400000 14.500000 8.056629 +-4.400000 14.600000 7.865863 +-4.400000 14.700000 7.695097 +-4.400000 14.800000 7.544331 +-4.400000 14.900000 7.413565 +-4.400000 15.000000 7.302799 + +-4.300000 -5.000000 415.496802 +-4.300000 -4.900000 411.460345 +-4.300000 -4.800000 407.443889 +-4.300000 -4.700000 403.447432 +-4.300000 -4.600000 399.470975 +-4.300000 -4.500000 395.514518 +-4.300000 -4.400000 391.578061 +-4.300000 -4.300000 387.661604 +-4.300000 -4.200000 383.765148 +-4.300000 -4.100000 379.888691 +-4.300000 -4.000000 376.032234 +-4.300000 -3.900000 372.195777 +-4.300000 -3.800000 368.379320 +-4.300000 -3.700000 364.582863 +-4.300000 -3.600000 360.806407 +-4.300000 -3.500000 357.049950 +-4.300000 -3.400000 353.313493 +-4.300000 -3.300000 349.597036 +-4.300000 -3.200000 345.900579 +-4.300000 -3.100000 342.224123 +-4.300000 -3.000000 338.567666 +-4.300000 -2.900000 334.931209 +-4.300000 -2.800000 331.314752 +-4.300000 -2.700000 327.718295 +-4.300000 -2.600000 324.141838 +-4.300000 -2.500000 320.585382 +-4.300000 -2.400000 317.048925 +-4.300000 -2.300000 313.532468 +-4.300000 -2.200000 310.036011 +-4.300000 -2.100000 306.559554 +-4.300000 -2.000000 303.103097 +-4.300000 -1.900000 299.666641 +-4.300000 -1.800000 296.250184 +-4.300000 -1.700000 292.853727 +-4.300000 -1.600000 289.477270 +-4.300000 -1.500000 286.120813 +-4.300000 -1.400000 282.784356 +-4.300000 -1.300000 279.467900 +-4.300000 -1.200000 276.171443 +-4.300000 -1.100000 272.894986 +-4.300000 -1.000000 269.638529 +-4.300000 -0.900000 266.402072 +-4.300000 -0.800000 263.185616 +-4.300000 -0.700000 259.989159 +-4.300000 -0.600000 256.812702 +-4.300000 -0.500000 253.656245 +-4.300000 -0.400000 250.519788 +-4.300000 -0.300000 247.403331 +-4.300000 -0.200000 244.306875 +-4.300000 -0.100000 241.230418 +-4.300000 -0.000000 238.173961 +-4.300000 0.100000 235.137504 +-4.300000 0.200000 232.121047 +-4.300000 0.300000 229.124590 +-4.300000 0.400000 226.148134 +-4.300000 0.500000 223.191677 +-4.300000 0.600000 220.255220 +-4.300000 0.700000 217.338763 +-4.300000 0.800000 214.442306 +-4.300000 0.900000 211.565850 +-4.300000 1.000000 208.709393 +-4.300000 1.100000 205.872936 +-4.300000 1.200000 203.056479 +-4.300000 1.300000 200.260022 +-4.300000 1.400000 197.483565 +-4.300000 1.500000 194.727109 +-4.300000 1.600000 191.990652 +-4.300000 1.700000 189.274195 +-4.300000 1.800000 186.577738 +-4.300000 1.900000 183.901281 +-4.300000 2.000000 181.244824 +-4.300000 2.100000 178.608368 +-4.300000 2.200000 175.991911 +-4.300000 2.300000 173.395454 +-4.300000 2.400000 170.818997 +-4.300000 2.500000 168.262540 +-4.300000 2.600000 165.726083 +-4.300000 2.700000 163.209627 +-4.300000 2.800000 160.713170 +-4.300000 2.900000 158.236713 +-4.300000 3.000000 155.780256 +-4.300000 3.100000 153.343799 +-4.300000 3.200000 150.927343 +-4.300000 3.300000 148.530886 +-4.300000 3.400000 146.154429 +-4.300000 3.500000 143.797972 +-4.300000 3.600000 141.461515 +-4.300000 3.700000 139.145058 +-4.300000 3.800000 136.848602 +-4.300000 3.900000 134.572145 +-4.300000 4.000000 132.315688 +-4.300000 4.100000 130.079231 +-4.300000 4.200000 127.862774 +-4.300000 4.300000 125.666317 +-4.300000 4.400000 123.489861 +-4.300000 4.500000 121.333404 +-4.300000 4.600000 119.196947 +-4.300000 4.700000 117.080490 +-4.300000 4.800000 114.984033 +-4.300000 4.900000 112.907576 +-4.300000 5.000000 110.851120 +-4.300000 5.100000 108.814663 +-4.300000 5.200000 106.798206 +-4.300000 5.300000 104.801749 +-4.300000 5.400000 102.825292 +-4.300000 5.500000 100.868836 +-4.300000 5.600000 98.932379 +-4.300000 5.700000 97.015922 +-4.300000 5.800000 95.119465 +-4.300000 5.900000 93.243008 +-4.300000 6.000000 91.386551 +-4.300000 6.100000 89.550095 +-4.300000 6.200000 87.733638 +-4.300000 6.300000 85.937181 +-4.300000 6.400000 84.160724 +-4.300000 6.500000 82.404267 +-4.300000 6.600000 80.667810 +-4.300000 6.700000 78.951354 +-4.300000 6.800000 77.254897 +-4.300000 6.900000 75.578440 +-4.300000 7.000000 73.921983 +-4.300000 7.100000 72.285526 +-4.300000 7.200000 70.669069 +-4.300000 7.300000 69.072613 +-4.300000 7.400000 67.496156 +-4.300000 7.500000 65.939699 +-4.300000 7.600000 64.403242 +-4.300000 7.700000 62.886785 +-4.300000 7.800000 61.390329 +-4.300000 7.900000 59.913872 +-4.300000 8.000000 58.457415 +-4.300000 8.100000 57.020958 +-4.300000 8.200000 55.604501 +-4.300000 8.300000 54.208044 +-4.300000 8.400000 52.831588 +-4.300000 8.500000 51.475131 +-4.300000 8.600000 50.138674 +-4.300000 8.700000 48.822217 +-4.300000 8.800000 47.525760 +-4.300000 8.900000 46.249303 +-4.300000 9.000000 44.992847 +-4.300000 9.100000 43.756390 +-4.300000 9.200000 42.539933 +-4.300000 9.300000 41.343476 +-4.300000 9.400000 40.167019 +-4.300000 9.500000 39.010563 +-4.300000 9.600000 37.874106 +-4.300000 9.700000 36.757649 +-4.300000 9.800000 35.661192 +-4.300000 9.900000 34.584735 +-4.300000 10.000000 33.528278 +-4.300000 10.100000 32.491822 +-4.300000 10.200000 31.475365 +-4.300000 10.300000 30.478908 +-4.300000 10.400000 29.502451 +-4.300000 10.500000 28.545994 +-4.300000 10.600000 27.609537 +-4.300000 10.700000 26.693081 +-4.300000 10.800000 25.796624 +-4.300000 10.900000 24.920167 +-4.300000 11.000000 24.063710 +-4.300000 11.100000 23.227253 +-4.300000 11.200000 22.410796 +-4.300000 11.300000 21.614340 +-4.300000 11.400000 20.837883 +-4.300000 11.500000 20.081426 +-4.300000 11.600000 19.344969 +-4.300000 11.700000 18.628512 +-4.300000 11.800000 17.932056 +-4.300000 11.900000 17.255599 +-4.300000 12.000000 16.599142 +-4.300000 12.100000 15.962685 +-4.300000 12.200000 15.346228 +-4.300000 12.300000 14.749771 +-4.300000 12.400000 14.173315 +-4.300000 12.500000 13.616858 +-4.300000 12.600000 13.080401 +-4.300000 12.700000 12.563944 +-4.300000 12.800000 12.067487 +-4.300000 12.900000 11.591030 +-4.300000 13.000000 11.134574 +-4.300000 13.100000 10.698117 +-4.300000 13.200000 10.281660 +-4.300000 13.300000 9.885203 +-4.300000 13.400000 9.508746 +-4.300000 13.500000 9.152289 +-4.300000 13.600000 8.815833 +-4.300000 13.700000 8.499376 +-4.300000 13.800000 8.202919 +-4.300000 13.900000 7.926462 +-4.300000 14.000000 7.670005 +-4.300000 14.100000 7.433549 +-4.300000 14.200000 7.217092 +-4.300000 14.300000 7.020635 +-4.300000 14.400000 6.844178 +-4.300000 14.500000 6.687721 +-4.300000 14.600000 6.551264 +-4.300000 14.700000 6.434808 +-4.300000 14.800000 6.338351 +-4.300000 14.900000 6.261894 +-4.300000 15.000000 6.205437 + +-4.200000 -5.000000 403.826700 +-4.200000 -4.900000 399.844035 +-4.200000 -4.800000 395.881371 +-4.200000 -4.700000 391.938706 +-4.200000 -4.600000 388.016042 +-4.200000 -4.500000 384.113377 +-4.200000 -4.400000 380.230713 +-4.200000 -4.300000 376.368048 +-4.200000 -4.200000 372.525384 +-4.200000 -4.100000 368.702719 +-4.200000 -4.000000 364.900055 +-4.200000 -3.900000 361.117390 +-4.200000 -3.800000 357.354726 +-4.200000 -3.700000 353.612062 +-4.200000 -3.600000 349.889397 +-4.200000 -3.500000 346.186733 +-4.200000 -3.400000 342.504068 +-4.200000 -3.300000 338.841404 +-4.200000 -3.200000 335.198739 +-4.200000 -3.100000 331.576075 +-4.200000 -3.000000 327.973410 +-4.200000 -2.900000 324.390746 +-4.200000 -2.800000 320.828081 +-4.200000 -2.700000 317.285417 +-4.200000 -2.600000 313.762752 +-4.200000 -2.500000 310.260088 +-4.200000 -2.400000 306.777423 +-4.200000 -2.300000 303.314759 +-4.200000 -2.200000 299.872094 +-4.200000 -2.100000 296.449430 +-4.200000 -2.000000 293.046766 +-4.200000 -1.900000 289.664101 +-4.200000 -1.800000 286.301437 +-4.200000 -1.700000 282.958772 +-4.200000 -1.600000 279.636108 +-4.200000 -1.500000 276.333443 +-4.200000 -1.400000 273.050779 +-4.200000 -1.300000 269.788114 +-4.200000 -1.200000 266.545450 +-4.200000 -1.100000 263.322785 +-4.200000 -1.000000 260.120121 +-4.200000 -0.900000 256.937456 +-4.200000 -0.800000 253.774792 +-4.200000 -0.700000 250.632127 +-4.200000 -0.600000 247.509463 +-4.200000 -0.500000 244.406799 +-4.200000 -0.400000 241.324134 +-4.200000 -0.300000 238.261470 +-4.200000 -0.200000 235.218805 +-4.200000 -0.100000 232.196141 +-4.200000 -0.000000 229.193476 +-4.200000 0.100000 226.210812 +-4.200000 0.200000 223.248147 +-4.200000 0.300000 220.305483 +-4.200000 0.400000 217.382818 +-4.200000 0.500000 214.480154 +-4.200000 0.600000 211.597489 +-4.200000 0.700000 208.734825 +-4.200000 0.800000 205.892160 +-4.200000 0.900000 203.069496 +-4.200000 1.000000 200.266831 +-4.200000 1.100000 197.484167 +-4.200000 1.200000 194.721503 +-4.200000 1.300000 191.978838 +-4.200000 1.400000 189.256174 +-4.200000 1.500000 186.553509 +-4.200000 1.600000 183.870845 +-4.200000 1.700000 181.208180 +-4.200000 1.800000 178.565516 +-4.200000 1.900000 175.942851 +-4.200000 2.000000 173.340187 +-4.200000 2.100000 170.757522 +-4.200000 2.200000 168.194858 +-4.200000 2.300000 165.652193 +-4.200000 2.400000 163.129529 +-4.200000 2.500000 160.626864 +-4.200000 2.600000 158.144200 +-4.200000 2.700000 155.681535 +-4.200000 2.800000 153.238871 +-4.200000 2.900000 150.816207 +-4.200000 3.000000 148.413542 +-4.200000 3.100000 146.030878 +-4.200000 3.200000 143.668213 +-4.200000 3.300000 141.325549 +-4.200000 3.400000 139.002884 +-4.200000 3.500000 136.700220 +-4.200000 3.600000 134.417555 +-4.200000 3.700000 132.154891 +-4.200000 3.800000 129.912226 +-4.200000 3.900000 127.689562 +-4.200000 4.000000 125.486897 +-4.200000 4.100000 123.304233 +-4.200000 4.200000 121.141568 +-4.200000 4.300000 118.998904 +-4.200000 4.400000 116.876239 +-4.200000 4.500000 114.773575 +-4.200000 4.600000 112.690911 +-4.200000 4.700000 110.628246 +-4.200000 4.800000 108.585582 +-4.200000 4.900000 106.562917 +-4.200000 5.000000 104.560253 +-4.200000 5.100000 102.577588 +-4.200000 5.200000 100.614924 +-4.200000 5.300000 98.672259 +-4.200000 5.400000 96.749595 +-4.200000 5.500000 94.846930 +-4.200000 5.600000 92.964266 +-4.200000 5.700000 91.101601 +-4.200000 5.800000 89.258937 +-4.200000 5.900000 87.436272 +-4.200000 6.000000 85.633608 +-4.200000 6.100000 83.850943 +-4.200000 6.200000 82.088279 +-4.200000 6.300000 80.345615 +-4.200000 6.400000 78.622950 +-4.200000 6.500000 76.920286 +-4.200000 6.600000 75.237621 +-4.200000 6.700000 73.574957 +-4.200000 6.800000 71.932292 +-4.200000 6.900000 70.309628 +-4.200000 7.000000 68.706963 +-4.200000 7.100000 67.124299 +-4.200000 7.200000 65.561634 +-4.200000 7.300000 64.018970 +-4.200000 7.400000 62.496305 +-4.200000 7.500000 60.993641 +-4.200000 7.600000 59.510976 +-4.200000 7.700000 58.048312 +-4.200000 7.800000 56.605647 +-4.200000 7.900000 55.182983 +-4.200000 8.000000 53.780319 +-4.200000 8.100000 52.397654 +-4.200000 8.200000 51.034990 +-4.200000 8.300000 49.692325 +-4.200000 8.400000 48.369661 +-4.200000 8.500000 47.066996 +-4.200000 8.600000 45.784332 +-4.200000 8.700000 44.521667 +-4.200000 8.800000 43.279003 +-4.200000 8.900000 42.056338 +-4.200000 9.000000 40.853674 +-4.200000 9.100000 39.671009 +-4.200000 9.200000 38.508345 +-4.200000 9.300000 37.365680 +-4.200000 9.400000 36.243016 +-4.200000 9.500000 35.140351 +-4.200000 9.600000 34.057687 +-4.200000 9.700000 32.995023 +-4.200000 9.800000 31.952358 +-4.200000 9.900000 30.929694 +-4.200000 10.000000 29.927029 +-4.200000 10.100000 28.944365 +-4.200000 10.200000 27.981700 +-4.200000 10.300000 27.039036 +-4.200000 10.400000 26.116371 +-4.200000 10.500000 25.213707 +-4.200000 10.600000 24.331042 +-4.200000 10.700000 23.468378 +-4.200000 10.800000 22.625713 +-4.200000 10.900000 21.803049 +-4.200000 11.000000 21.000384 +-4.200000 11.100000 20.217720 +-4.200000 11.200000 19.455055 +-4.200000 11.300000 18.712391 +-4.200000 11.400000 17.989727 +-4.200000 11.500000 17.287062 +-4.200000 11.600000 16.604398 +-4.200000 11.700000 15.941733 +-4.200000 11.800000 15.299069 +-4.200000 11.900000 14.676404 +-4.200000 12.000000 14.073740 +-4.200000 12.100000 13.491075 +-4.200000 12.200000 12.928411 +-4.200000 12.300000 12.385746 +-4.200000 12.400000 11.863082 +-4.200000 12.500000 11.360417 +-4.200000 12.600000 10.877753 +-4.200000 12.700000 10.415088 +-4.200000 12.800000 9.972424 +-4.200000 12.900000 9.549759 +-4.200000 13.000000 9.147095 +-4.200000 13.100000 8.764431 +-4.200000 13.200000 8.401766 +-4.200000 13.300000 8.059102 +-4.200000 13.400000 7.736437 +-4.200000 13.500000 7.433773 +-4.200000 13.600000 7.151108 +-4.200000 13.700000 6.888444 +-4.200000 13.800000 6.645779 +-4.200000 13.900000 6.423115 +-4.200000 14.000000 6.220450 +-4.200000 14.100000 6.037786 +-4.200000 14.200000 5.875121 +-4.200000 14.300000 5.732457 +-4.200000 14.400000 5.609792 +-4.200000 14.500000 5.507128 +-4.200000 14.600000 5.424464 +-4.200000 14.700000 5.361799 +-4.200000 14.800000 5.319135 +-4.200000 14.900000 5.296470 +-4.200000 15.000000 5.293806 + +-4.100000 -5.000000 392.450089 +-4.100000 -4.900000 388.520700 +-4.100000 -4.800000 384.611311 +-4.100000 -4.700000 380.721923 +-4.100000 -4.600000 376.852534 +-4.100000 -4.500000 373.003145 +-4.100000 -4.400000 369.173756 +-4.100000 -4.300000 365.364367 +-4.100000 -4.200000 361.574978 +-4.100000 -4.100000 357.805589 +-4.100000 -4.000000 354.056201 +-4.100000 -3.900000 350.326812 +-4.100000 -3.800000 346.617423 +-4.100000 -3.700000 342.928034 +-4.100000 -3.600000 339.258645 +-4.100000 -3.500000 335.609256 +-4.100000 -3.400000 331.979867 +-4.100000 -3.300000 328.370479 +-4.100000 -3.200000 324.781090 +-4.100000 -3.100000 321.211701 +-4.100000 -3.000000 317.662312 +-4.100000 -2.900000 314.132923 +-4.100000 -2.800000 310.623534 +-4.100000 -2.700000 307.134145 +-4.100000 -2.600000 303.664757 +-4.100000 -2.500000 300.215368 +-4.100000 -2.400000 296.785979 +-4.100000 -2.300000 293.376590 +-4.100000 -2.200000 289.987201 +-4.100000 -2.100000 286.617812 +-4.100000 -2.000000 283.268424 +-4.100000 -1.900000 279.939035 +-4.100000 -1.800000 276.629646 +-4.100000 -1.700000 273.340257 +-4.100000 -1.600000 270.070868 +-4.100000 -1.500000 266.821479 +-4.100000 -1.400000 263.592090 +-4.100000 -1.300000 260.382702 +-4.100000 -1.200000 257.193313 +-4.100000 -1.100000 254.023924 +-4.100000 -1.000000 250.874535 +-4.100000 -0.900000 247.745146 +-4.100000 -0.800000 244.635757 +-4.100000 -0.700000 241.546368 +-4.100000 -0.600000 238.476980 +-4.100000 -0.500000 235.427591 +-4.100000 -0.400000 232.398202 +-4.100000 -0.300000 229.388813 +-4.100000 -0.200000 226.399424 +-4.100000 -0.100000 223.430035 +-4.100000 -0.000000 220.480646 +-4.100000 0.100000 217.551258 +-4.100000 0.200000 214.641869 +-4.100000 0.300000 211.752480 +-4.100000 0.400000 208.883091 +-4.100000 0.500000 206.033702 +-4.100000 0.600000 203.204313 +-4.100000 0.700000 200.394924 +-4.100000 0.800000 197.605536 +-4.100000 0.900000 194.836147 +-4.100000 1.000000 192.086758 +-4.100000 1.100000 189.357369 +-4.100000 1.200000 186.647980 +-4.100000 1.300000 183.958591 +-4.100000 1.400000 181.289203 +-4.100000 1.500000 178.639814 +-4.100000 1.600000 176.010425 +-4.100000 1.700000 173.401036 +-4.100000 1.800000 170.811647 +-4.100000 1.900000 168.242258 +-4.100000 2.000000 165.692869 +-4.100000 2.100000 163.163481 +-4.100000 2.200000 160.654092 +-4.100000 2.300000 158.164703 +-4.100000 2.400000 155.695314 +-4.100000 2.500000 153.245925 +-4.100000 2.600000 150.816536 +-4.100000 2.700000 148.407147 +-4.100000 2.800000 146.017759 +-4.100000 2.900000 143.648370 +-4.100000 3.000000 141.298981 +-4.100000 3.100000 138.969592 +-4.100000 3.200000 136.660203 +-4.100000 3.300000 134.370814 +-4.100000 3.400000 132.101425 +-4.100000 3.500000 129.852037 +-4.100000 3.600000 127.622648 +-4.100000 3.700000 125.413259 +-4.100000 3.800000 123.223870 +-4.100000 3.900000 121.054481 +-4.100000 4.000000 118.905092 +-4.100000 4.100000 116.775703 +-4.100000 4.200000 114.666315 +-4.100000 4.300000 112.576926 +-4.100000 4.400000 110.507537 +-4.100000 4.500000 108.458148 +-4.100000 4.600000 106.428759 +-4.100000 4.700000 104.419370 +-4.100000 4.800000 102.429982 +-4.100000 4.900000 100.460593 +-4.100000 5.000000 98.511204 +-4.100000 5.100000 96.581815 +-4.100000 5.200000 94.672426 +-4.100000 5.300000 92.783037 +-4.100000 5.400000 90.913648 +-4.100000 5.500000 89.064260 +-4.100000 5.600000 87.234871 +-4.100000 5.700000 85.425482 +-4.100000 5.800000 83.636093 +-4.100000 5.900000 81.866704 +-4.100000 6.000000 80.117315 +-4.100000 6.100000 78.387926 +-4.100000 6.200000 76.678538 +-4.100000 6.300000 74.989149 +-4.100000 6.400000 73.319760 +-4.100000 6.500000 71.670371 +-4.100000 6.600000 70.040982 +-4.100000 6.700000 68.431593 +-4.100000 6.800000 66.842204 +-4.100000 6.900000 65.272816 +-4.100000 7.000000 63.723427 +-4.100000 7.100000 62.194038 +-4.100000 7.200000 60.684649 +-4.100000 7.300000 59.195260 +-4.100000 7.400000 57.725871 +-4.100000 7.500000 56.276482 +-4.100000 7.600000 54.847094 +-4.100000 7.700000 53.437705 +-4.100000 7.800000 52.048316 +-4.100000 7.900000 50.678927 +-4.100000 8.000000 49.329538 +-4.100000 8.100000 48.000149 +-4.100000 8.200000 46.690761 +-4.100000 8.300000 45.401372 +-4.100000 8.400000 44.131983 +-4.100000 8.500000 42.882594 +-4.100000 8.600000 41.653205 +-4.100000 8.700000 40.443816 +-4.100000 8.800000 39.254427 +-4.100000 8.900000 38.085039 +-4.100000 9.000000 36.935650 +-4.100000 9.100000 35.806261 +-4.100000 9.200000 34.696872 +-4.100000 9.300000 33.607483 +-4.100000 9.400000 32.538094 +-4.100000 9.500000 31.488705 +-4.100000 9.600000 30.459317 +-4.100000 9.700000 29.449928 +-4.100000 9.800000 28.460539 +-4.100000 9.900000 27.491150 +-4.100000 10.000000 26.541761 +-4.100000 10.100000 25.612372 +-4.100000 10.200000 24.702983 +-4.100000 10.300000 23.813595 +-4.100000 10.400000 22.944206 +-4.100000 10.500000 22.094817 +-4.100000 10.600000 21.265428 +-4.100000 10.700000 20.456039 +-4.100000 10.800000 19.666650 +-4.100000 10.900000 18.897261 +-4.100000 11.000000 18.147873 +-4.100000 11.100000 17.418484 +-4.100000 11.200000 16.709095 +-4.100000 11.300000 16.019706 +-4.100000 11.400000 15.350317 +-4.100000 11.500000 14.700928 +-4.100000 11.600000 14.071539 +-4.100000 11.700000 13.462151 +-4.100000 11.800000 12.872762 +-4.100000 11.900000 12.303373 +-4.100000 12.000000 11.753984 +-4.100000 12.100000 11.224595 +-4.100000 12.200000 10.715206 +-4.100000 12.300000 10.225818 +-4.100000 12.400000 9.756429 +-4.100000 12.500000 9.307040 +-4.100000 12.600000 8.877651 +-4.100000 12.700000 8.468262 +-4.100000 12.800000 8.078873 +-4.100000 12.900000 7.709484 +-4.100000 13.000000 7.360096 +-4.100000 13.100000 7.030707 +-4.100000 13.200000 6.721318 +-4.100000 13.300000 6.431929 +-4.100000 13.400000 6.162540 +-4.100000 13.500000 5.913151 +-4.100000 13.600000 5.683762 +-4.100000 13.700000 5.474374 +-4.100000 13.800000 5.284985 +-4.100000 13.900000 5.115596 +-4.100000 14.000000 4.966207 +-4.100000 14.100000 4.836818 +-4.100000 14.200000 4.727429 +-4.100000 14.300000 4.638040 +-4.100000 14.400000 4.568652 +-4.100000 14.500000 4.519263 +-4.100000 14.600000 4.489874 +-4.100000 14.700000 4.480485 +-4.100000 14.800000 4.491096 +-4.100000 14.900000 4.521707 +-4.100000 15.000000 4.572318 + +-4.000000 -5.000000 381.370954 +-4.000000 -4.900000 377.494324 +-4.000000 -4.800000 373.637694 +-4.000000 -4.700000 369.801064 +-4.000000 -4.600000 365.984434 +-4.000000 -4.500000 362.187804 +-4.000000 -4.400000 358.411174 +-4.000000 -4.300000 354.654544 +-4.000000 -4.200000 350.917914 +-4.000000 -4.100000 347.201284 +-4.000000 -4.000000 343.504654 +-4.000000 -3.900000 339.828024 +-4.000000 -3.800000 336.171395 +-4.000000 -3.700000 332.534765 +-4.000000 -3.600000 328.918135 +-4.000000 -3.500000 325.321505 +-4.000000 -3.400000 321.744875 +-4.000000 -3.300000 318.188245 +-4.000000 -3.200000 314.651615 +-4.000000 -3.100000 311.134985 +-4.000000 -3.000000 307.638355 +-4.000000 -2.900000 304.161725 +-4.000000 -2.800000 300.705095 +-4.000000 -2.700000 297.268465 +-4.000000 -2.600000 293.851835 +-4.000000 -2.500000 290.455205 +-4.000000 -2.400000 287.078575 +-4.000000 -2.300000 283.721945 +-4.000000 -2.200000 280.385315 +-4.000000 -2.100000 277.068685 +-4.000000 -2.000000 273.772055 +-4.000000 -1.900000 270.495425 +-4.000000 -1.800000 267.238795 +-4.000000 -1.700000 264.002165 +-4.000000 -1.600000 260.785535 +-4.000000 -1.500000 257.588905 +-4.000000 -1.400000 254.412275 +-4.000000 -1.300000 251.255645 +-4.000000 -1.200000 248.119015 +-4.000000 -1.100000 245.002385 +-4.000000 -1.000000 241.905755 +-4.000000 -0.900000 238.829125 +-4.000000 -0.800000 235.772495 +-4.000000 -0.700000 232.735865 +-4.000000 -0.600000 229.719235 +-4.000000 -0.500000 226.722605 +-4.000000 -0.400000 223.745975 +-4.000000 -0.300000 220.789345 +-4.000000 -0.200000 217.852715 +-4.000000 -0.100000 214.936085 +-4.000000 -0.000000 212.039455 +-4.000000 0.100000 209.162826 +-4.000000 0.200000 206.306196 +-4.000000 0.300000 203.469566 +-4.000000 0.400000 200.652936 +-4.000000 0.500000 197.856306 +-4.000000 0.600000 195.079676 +-4.000000 0.700000 192.323046 +-4.000000 0.800000 189.586416 +-4.000000 0.900000 186.869786 +-4.000000 1.000000 184.173156 +-4.000000 1.100000 181.496526 +-4.000000 1.200000 178.839896 +-4.000000 1.300000 176.203266 +-4.000000 1.400000 173.586636 +-4.000000 1.500000 170.990006 +-4.000000 1.600000 168.413376 +-4.000000 1.700000 165.856746 +-4.000000 1.800000 163.320116 +-4.000000 1.900000 160.803486 +-4.000000 2.000000 158.306856 +-4.000000 2.100000 155.830226 +-4.000000 2.200000 153.373596 +-4.000000 2.300000 150.936966 +-4.000000 2.400000 148.520336 +-4.000000 2.500000 146.123706 +-4.000000 2.600000 143.747076 +-4.000000 2.700000 141.390446 +-4.000000 2.800000 139.053816 +-4.000000 2.900000 136.737186 +-4.000000 3.000000 134.440556 +-4.000000 3.100000 132.163926 +-4.000000 3.200000 129.907296 +-4.000000 3.300000 127.670666 +-4.000000 3.400000 125.454036 +-4.000000 3.500000 123.257406 +-4.000000 3.600000 121.080776 +-4.000000 3.700000 118.924146 +-4.000000 3.800000 116.787516 +-4.000000 3.900000 114.670887 +-4.000000 4.000000 112.574257 +-4.000000 4.100000 110.497627 +-4.000000 4.200000 108.440997 +-4.000000 4.300000 106.404367 +-4.000000 4.400000 104.387737 +-4.000000 4.500000 102.391107 +-4.000000 4.600000 100.414477 +-4.000000 4.700000 98.457847 +-4.000000 4.800000 96.521217 +-4.000000 4.900000 94.604587 +-4.000000 5.000000 92.707957 +-4.000000 5.100000 90.831327 +-4.000000 5.200000 88.974697 +-4.000000 5.300000 87.138067 +-4.000000 5.400000 85.321437 +-4.000000 5.500000 83.524807 +-4.000000 5.600000 81.748177 +-4.000000 5.700000 79.991547 +-4.000000 5.800000 78.254917 +-4.000000 5.900000 76.538287 +-4.000000 6.000000 74.841657 +-4.000000 6.100000 73.165027 +-4.000000 6.200000 71.508397 +-4.000000 6.300000 69.871767 +-4.000000 6.400000 68.255137 +-4.000000 6.500000 66.658507 +-4.000000 6.600000 65.081877 +-4.000000 6.700000 63.525247 +-4.000000 6.800000 61.988617 +-4.000000 6.900000 60.471987 +-4.000000 7.000000 58.975357 +-4.000000 7.100000 57.498727 +-4.000000 7.200000 56.042097 +-4.000000 7.300000 54.605467 +-4.000000 7.400000 53.188837 +-4.000000 7.500000 51.792207 +-4.000000 7.600000 50.415577 +-4.000000 7.700000 49.058947 +-4.000000 7.800000 47.722318 +-4.000000 7.900000 46.405688 +-4.000000 8.000000 45.109058 +-4.000000 8.100000 43.832428 +-4.000000 8.200000 42.575798 +-4.000000 8.300000 41.339168 +-4.000000 8.400000 40.122538 +-4.000000 8.500000 38.925908 +-4.000000 8.600000 37.749278 +-4.000000 8.700000 36.592648 +-4.000000 8.800000 35.456018 +-4.000000 8.900000 34.339388 +-4.000000 9.000000 33.242758 +-4.000000 9.100000 32.166128 +-4.000000 9.200000 31.109498 +-4.000000 9.300000 30.072868 +-4.000000 9.400000 29.056238 +-4.000000 9.500000 28.059608 +-4.000000 9.600000 27.082978 +-4.000000 9.700000 26.126348 +-4.000000 9.800000 25.189718 +-4.000000 9.900000 24.273088 +-4.000000 10.000000 23.376458 +-4.000000 10.100000 22.499828 +-4.000000 10.200000 21.643198 +-4.000000 10.300000 20.806568 +-4.000000 10.400000 19.989938 +-4.000000 10.500000 19.193308 +-4.000000 10.600000 18.416678 +-4.000000 10.700000 17.660048 +-4.000000 10.800000 16.923418 +-4.000000 10.900000 16.206788 +-4.000000 11.000000 15.510158 +-4.000000 11.100000 14.833528 +-4.000000 11.200000 14.176898 +-4.000000 11.300000 13.540268 +-4.000000 11.400000 12.923638 +-4.000000 11.500000 12.327008 +-4.000000 11.600000 11.750379 +-4.000000 11.700000 11.193749 +-4.000000 11.800000 10.657119 +-4.000000 11.900000 10.140489 +-4.000000 12.000000 9.643859 +-4.000000 12.100000 9.167229 +-4.000000 12.200000 8.710599 +-4.000000 12.300000 8.273969 +-4.000000 12.400000 7.857339 +-4.000000 12.500000 7.460709 +-4.000000 12.600000 7.084079 +-4.000000 12.700000 6.727449 +-4.000000 12.800000 6.390819 +-4.000000 12.900000 6.074189 +-4.000000 13.000000 5.777559 +-4.000000 13.100000 5.500929 +-4.000000 13.200000 5.244299 +-4.000000 13.300000 5.007669 +-4.000000 13.400000 4.791039 +-4.000000 13.500000 4.594409 +-4.000000 13.600000 4.417779 +-4.000000 13.700000 4.261149 +-4.000000 13.800000 4.124519 +-4.000000 13.900000 4.007889 +-4.000000 14.000000 3.911259 +-4.000000 14.100000 3.834629 +-4.000000 14.200000 3.777999 +-4.000000 14.300000 3.741369 +-4.000000 14.400000 3.724739 +-4.000000 14.500000 3.728109 +-4.000000 14.600000 3.751479 +-4.000000 14.700000 3.794849 +-4.000000 14.800000 3.858219 +-4.000000 14.900000 3.941589 +-4.000000 15.000000 4.044959 + +-3.900000 -5.000000 370.592768 +-3.900000 -4.900000 366.768380 +-3.900000 -4.800000 362.963992 +-3.900000 -4.700000 359.179604 +-3.900000 -4.600000 355.415216 +-3.900000 -4.500000 351.670828 +-3.900000 -4.400000 347.946441 +-3.900000 -4.300000 344.242053 +-3.900000 -4.200000 340.557665 +-3.900000 -4.100000 336.893277 +-3.900000 -4.000000 333.248889 +-3.900000 -3.900000 329.624501 +-3.900000 -3.800000 326.020114 +-3.900000 -3.700000 322.435726 +-3.900000 -3.600000 318.871338 +-3.900000 -3.500000 315.326950 +-3.900000 -3.400000 311.802562 +-3.900000 -3.300000 308.298174 +-3.900000 -3.200000 304.813787 +-3.900000 -3.100000 301.349399 +-3.900000 -3.000000 297.905011 +-3.900000 -2.900000 294.480623 +-3.900000 -2.800000 291.076235 +-3.900000 -2.700000 287.691847 +-3.900000 -2.600000 284.327460 +-3.900000 -2.500000 280.983072 +-3.900000 -2.400000 277.658684 +-3.900000 -2.300000 274.354296 +-3.900000 -2.200000 271.069908 +-3.900000 -2.100000 267.805520 +-3.900000 -2.000000 264.561133 +-3.900000 -1.900000 261.336745 +-3.900000 -1.800000 258.132357 +-3.900000 -1.700000 254.947969 +-3.900000 -1.600000 251.783581 +-3.900000 -1.500000 248.639193 +-3.900000 -1.400000 245.514806 +-3.900000 -1.300000 242.410418 +-3.900000 -1.200000 239.326030 +-3.900000 -1.100000 236.261642 +-3.900000 -1.000000 233.217254 +-3.900000 -0.900000 230.192866 +-3.900000 -0.800000 227.188479 +-3.900000 -0.700000 224.204091 +-3.900000 -0.600000 221.239703 +-3.900000 -0.500000 218.295315 +-3.900000 -0.400000 215.370927 +-3.900000 -0.300000 212.466539 +-3.900000 -0.200000 209.582152 +-3.900000 -0.100000 206.717764 +-3.900000 -0.000000 203.873376 +-3.900000 0.100000 201.048988 +-3.900000 0.200000 198.244600 +-3.900000 0.300000 195.460212 +-3.900000 0.400000 192.695825 +-3.900000 0.500000 189.951437 +-3.900000 0.600000 187.227049 +-3.900000 0.700000 184.522661 +-3.900000 0.800000 181.838273 +-3.900000 0.900000 179.173885 +-3.900000 1.000000 176.529498 +-3.900000 1.100000 173.905110 +-3.900000 1.200000 171.300722 +-3.900000 1.300000 168.716334 +-3.900000 1.400000 166.151946 +-3.900000 1.500000 163.607558 +-3.900000 1.600000 161.083171 +-3.900000 1.700000 158.578783 +-3.900000 1.800000 156.094395 +-3.900000 1.900000 153.630007 +-3.900000 2.000000 151.185619 +-3.900000 2.100000 148.761231 +-3.900000 2.200000 146.356844 +-3.900000 2.300000 143.972456 +-3.900000 2.400000 141.608068 +-3.900000 2.500000 139.263680 +-3.900000 2.600000 136.939292 +-3.900000 2.700000 134.634904 +-3.900000 2.800000 132.350517 +-3.900000 2.900000 130.086129 +-3.900000 3.000000 127.841741 +-3.900000 3.100000 125.617353 +-3.900000 3.200000 123.412965 +-3.900000 3.300000 121.228577 +-3.900000 3.400000 119.064190 +-3.900000 3.500000 116.919802 +-3.900000 3.600000 114.795414 +-3.900000 3.700000 112.691026 +-3.900000 3.800000 110.606638 +-3.900000 3.900000 108.542250 +-3.900000 4.000000 106.497863 +-3.900000 4.100000 104.473475 +-3.900000 4.200000 102.469087 +-3.900000 4.300000 100.484699 +-3.900000 4.400000 98.520311 +-3.900000 4.500000 96.575923 +-3.900000 4.600000 94.651536 +-3.900000 4.700000 92.747148 +-3.900000 4.800000 90.862760 +-3.900000 4.900000 88.998372 +-3.900000 5.000000 87.153984 +-3.900000 5.100000 85.329596 +-3.900000 5.200000 83.525209 +-3.900000 5.300000 81.740821 +-3.900000 5.400000 79.976433 +-3.900000 5.500000 78.232045 +-3.900000 5.600000 76.507657 +-3.900000 5.700000 74.803269 +-3.900000 5.800000 73.118882 +-3.900000 5.900000 71.454494 +-3.900000 6.000000 69.810106 +-3.900000 6.100000 68.185718 +-3.900000 6.200000 66.581330 +-3.900000 6.300000 64.996942 +-3.900000 6.400000 63.432555 +-3.900000 6.500000 61.888167 +-3.900000 6.600000 60.363779 +-3.900000 6.700000 58.859391 +-3.900000 6.800000 57.375003 +-3.900000 6.900000 55.910615 +-3.900000 7.000000 54.466228 +-3.900000 7.100000 53.041840 +-3.900000 7.200000 51.637452 +-3.900000 7.300000 50.253064 +-3.900000 7.400000 48.888676 +-3.900000 7.500000 47.544288 +-3.900000 7.600000 46.219901 +-3.900000 7.700000 44.915513 +-3.900000 7.800000 43.631125 +-3.900000 7.900000 42.366737 +-3.900000 8.000000 41.122349 +-3.900000 8.100000 39.897961 +-3.900000 8.200000 38.693574 +-3.900000 8.300000 37.509186 +-3.900000 8.400000 36.344798 +-3.900000 8.500000 35.200410 +-3.900000 8.600000 34.076022 +-3.900000 8.700000 32.971634 +-3.900000 8.800000 31.887247 +-3.900000 8.900000 30.822859 +-3.900000 9.000000 29.778471 +-3.900000 9.100000 28.754083 +-3.900000 9.200000 27.749695 +-3.900000 9.300000 26.765307 +-3.900000 9.400000 25.800920 +-3.900000 9.500000 24.856532 +-3.900000 9.600000 23.932144 +-3.900000 9.700000 23.027756 +-3.900000 9.800000 22.143368 +-3.900000 9.900000 21.278980 +-3.900000 10.000000 20.434593 +-3.900000 10.100000 19.610205 +-3.900000 10.200000 18.805817 +-3.900000 10.300000 18.021429 +-3.900000 10.400000 17.257041 +-3.900000 10.500000 16.512653 +-3.900000 10.600000 15.788266 +-3.900000 10.700000 15.083878 +-3.900000 10.800000 14.399490 +-3.900000 10.900000 13.735102 +-3.900000 11.000000 13.090714 +-3.900000 11.100000 12.466326 +-3.900000 11.200000 11.861939 +-3.900000 11.300000 11.277551 +-3.900000 11.400000 10.713163 +-3.900000 11.500000 10.168775 +-3.900000 11.600000 9.644387 +-3.900000 11.700000 9.139999 +-3.900000 11.800000 8.655612 +-3.900000 11.900000 8.191224 +-3.900000 12.000000 7.746836 +-3.900000 12.100000 7.322448 +-3.900000 12.200000 6.918060 +-3.900000 12.300000 6.533672 +-3.900000 12.400000 6.169285 +-3.900000 12.500000 5.824897 +-3.900000 12.600000 5.500509 +-3.900000 12.700000 5.196121 +-3.900000 12.800000 4.911733 +-3.900000 12.900000 4.647345 +-3.900000 13.000000 4.402958 +-3.900000 13.100000 4.178570 +-3.900000 13.200000 3.974182 +-3.900000 13.300000 3.789794 +-3.900000 13.400000 3.625406 +-3.900000 13.500000 3.481018 +-3.900000 13.600000 3.356631 +-3.900000 13.700000 3.252243 +-3.900000 13.800000 3.167855 +-3.900000 13.900000 3.103467 +-3.900000 14.000000 3.059079 +-3.900000 14.100000 3.034691 +-3.900000 14.200000 3.030304 +-3.900000 14.300000 3.045916 +-3.900000 14.400000 3.081528 +-3.900000 14.500000 3.137140 +-3.900000 14.600000 3.212752 +-3.900000 14.700000 3.308364 +-3.900000 14.800000 3.423977 +-3.900000 14.900000 3.559589 +-3.900000 15.000000 3.715201 + +-3.800000 -5.000000 360.118415 +-3.800000 -4.900000 356.345753 +-3.800000 -4.800000 352.593091 +-3.800000 -4.700000 348.860428 +-3.800000 -4.600000 345.147766 +-3.800000 -4.500000 341.455103 +-3.800000 -4.400000 337.782441 +-3.800000 -4.300000 334.129778 +-3.800000 -4.200000 330.497116 +-3.800000 -4.100000 326.884454 +-3.800000 -4.000000 323.291791 +-3.800000 -3.900000 319.719129 +-3.800000 -3.800000 316.166466 +-3.800000 -3.700000 312.633804 +-3.800000 -3.600000 309.121141 +-3.800000 -3.500000 305.628479 +-3.800000 -3.400000 302.155817 +-3.800000 -3.300000 298.703154 +-3.800000 -3.200000 295.270492 +-3.800000 -3.100000 291.857829 +-3.800000 -3.000000 288.465167 +-3.800000 -2.900000 285.092504 +-3.800000 -2.800000 281.739842 +-3.800000 -2.700000 278.407180 +-3.800000 -2.600000 275.094517 +-3.800000 -2.500000 271.801855 +-3.800000 -2.400000 268.529192 +-3.800000 -2.300000 265.276530 +-3.800000 -2.200000 262.043867 +-3.800000 -2.100000 258.831205 +-3.800000 -2.000000 255.638543 +-3.800000 -1.900000 252.465880 +-3.800000 -1.800000 249.313218 +-3.800000 -1.700000 246.180555 +-3.800000 -1.600000 243.067893 +-3.800000 -1.500000 239.975230 +-3.800000 -1.400000 236.902568 +-3.800000 -1.300000 233.849905 +-3.800000 -1.200000 230.817243 +-3.800000 -1.100000 227.804581 +-3.800000 -1.000000 224.811918 +-3.800000 -0.900000 221.839256 +-3.800000 -0.800000 218.886593 +-3.800000 -0.700000 215.953931 +-3.800000 -0.600000 213.041268 +-3.800000 -0.500000 210.148606 +-3.800000 -0.400000 207.275944 +-3.800000 -0.300000 204.423281 +-3.800000 -0.200000 201.590619 +-3.800000 -0.100000 198.777956 +-3.800000 -0.000000 195.985294 +-3.800000 0.100000 193.212631 +-3.800000 0.200000 190.459969 +-3.800000 0.300000 187.727307 +-3.800000 0.400000 185.014644 +-3.800000 0.500000 182.321982 +-3.800000 0.600000 179.649319 +-3.800000 0.700000 176.996657 +-3.800000 0.800000 174.363994 +-3.800000 0.900000 171.751332 +-3.800000 1.000000 169.158670 +-3.800000 1.100000 166.586007 +-3.800000 1.200000 164.033345 +-3.800000 1.300000 161.500682 +-3.800000 1.400000 158.988020 +-3.800000 1.500000 156.495357 +-3.800000 1.600000 154.022695 +-3.800000 1.700000 151.570033 +-3.800000 1.800000 149.137370 +-3.800000 1.900000 146.724708 +-3.800000 2.000000 144.332045 +-3.800000 2.100000 141.959383 +-3.800000 2.200000 139.606720 +-3.800000 2.300000 137.274058 +-3.800000 2.400000 134.961396 +-3.800000 2.500000 132.668733 +-3.800000 2.600000 130.396071 +-3.800000 2.700000 128.143408 +-3.800000 2.800000 125.910746 +-3.800000 2.900000 123.698083 +-3.800000 3.000000 121.505421 +-3.800000 3.100000 119.332759 +-3.800000 3.200000 117.180096 +-3.800000 3.300000 115.047434 +-3.800000 3.400000 112.934771 +-3.800000 3.500000 110.842109 +-3.800000 3.600000 108.769446 +-3.800000 3.700000 106.716784 +-3.800000 3.800000 104.684122 +-3.800000 3.900000 102.671459 +-3.800000 4.000000 100.678797 +-3.800000 4.100000 98.706134 +-3.800000 4.200000 96.753472 +-3.800000 4.300000 94.820809 +-3.800000 4.400000 92.908147 +-3.800000 4.500000 91.015485 +-3.800000 4.600000 89.142822 +-3.800000 4.700000 87.290160 +-3.800000 4.800000 85.457497 +-3.800000 4.900000 83.644835 +-3.800000 5.000000 81.852172 +-3.800000 5.100000 80.079510 +-3.800000 5.200000 78.326848 +-3.800000 5.300000 76.594185 +-3.800000 5.400000 74.881523 +-3.800000 5.500000 73.188860 +-3.800000 5.600000 71.516198 +-3.800000 5.700000 69.863535 +-3.800000 5.800000 68.230873 +-3.800000 5.900000 66.618211 +-3.800000 6.000000 65.025548 +-3.800000 6.100000 63.452886 +-3.800000 6.200000 61.900223 +-3.800000 6.300000 60.367561 +-3.800000 6.400000 58.854898 +-3.800000 6.500000 57.362236 +-3.800000 6.600000 55.889574 +-3.800000 6.700000 54.436911 +-3.800000 6.800000 53.004249 +-3.800000 6.900000 51.591586 +-3.800000 7.000000 50.198924 +-3.800000 7.100000 48.826261 +-3.800000 7.200000 47.473599 +-3.800000 7.300000 46.140937 +-3.800000 7.400000 44.828274 +-3.800000 7.500000 43.535612 +-3.800000 7.600000 42.262949 +-3.800000 7.700000 41.010287 +-3.800000 7.800000 39.777624 +-3.800000 7.900000 38.564962 +-3.800000 8.000000 37.372300 +-3.800000 8.100000 36.199637 +-3.800000 8.200000 35.046975 +-3.800000 8.300000 33.914312 +-3.800000 8.400000 32.801650 +-3.800000 8.500000 31.708987 +-3.800000 8.600000 30.636325 +-3.800000 8.700000 29.583663 +-3.800000 8.800000 28.551000 +-3.800000 8.900000 27.538338 +-3.800000 9.000000 26.545675 +-3.800000 9.100000 25.573013 +-3.800000 9.200000 24.620350 +-3.800000 9.300000 23.687688 +-3.800000 9.400000 22.775025 +-3.800000 9.500000 21.882363 +-3.800000 9.600000 21.009701 +-3.800000 9.700000 20.157038 +-3.800000 9.800000 19.324376 +-3.800000 9.900000 18.511713 +-3.800000 10.000000 17.719051 +-3.800000 10.100000 16.946388 +-3.800000 10.200000 16.193726 +-3.800000 10.300000 15.461064 +-3.800000 10.400000 14.748401 +-3.800000 10.500000 14.055739 +-3.800000 10.600000 13.383076 +-3.800000 10.700000 12.730414 +-3.800000 10.800000 12.097751 +-3.800000 10.900000 11.485089 +-3.800000 11.000000 10.892427 +-3.800000 11.100000 10.319764 +-3.800000 11.200000 9.767102 +-3.800000 11.300000 9.234439 +-3.800000 11.400000 8.721777 +-3.800000 11.500000 8.229114 +-3.800000 11.600000 7.756452 +-3.800000 11.700000 7.303790 +-3.800000 11.800000 6.871127 +-3.800000 11.900000 6.458465 +-3.800000 12.000000 6.065802 +-3.800000 12.100000 5.693140 +-3.800000 12.200000 5.340477 +-3.800000 12.300000 5.007815 +-3.800000 12.400000 4.695153 +-3.800000 12.500000 4.402490 +-3.800000 12.600000 4.129828 +-3.800000 12.700000 3.877165 +-3.800000 12.800000 3.644503 +-3.800000 12.900000 3.431840 +-3.800000 13.000000 3.239178 +-3.800000 13.100000 3.066516 +-3.800000 13.200000 2.913853 +-3.800000 13.300000 2.781191 +-3.800000 13.400000 2.668528 +-3.800000 13.500000 2.575866 +-3.800000 13.600000 2.503203 +-3.800000 13.700000 2.450541 +-3.800000 13.800000 2.417879 +-3.800000 13.900000 2.405216 +-3.800000 14.000000 2.412554 +-3.800000 14.100000 2.439891 +-3.800000 14.200000 2.487229 +-3.800000 14.300000 2.554566 +-3.800000 14.400000 2.641904 +-3.800000 14.500000 2.749242 +-3.800000 14.600000 2.876579 +-3.800000 14.700000 3.023917 +-3.800000 14.800000 3.191254 +-3.800000 14.900000 3.378592 +-3.800000 15.000000 3.585929 + +-3.700000 -5.000000 349.950128 +-3.700000 -4.900000 346.228674 +-3.700000 -4.800000 342.527220 +-3.700000 -4.700000 338.845767 +-3.700000 -4.600000 335.184313 +-3.700000 -4.500000 331.542859 +-3.700000 -4.400000 327.921405 +-3.700000 -4.300000 324.319952 +-3.700000 -4.200000 320.738498 +-3.700000 -4.100000 317.177044 +-3.700000 -4.000000 313.635590 +-3.700000 -3.900000 310.114137 +-3.700000 -3.800000 306.612683 +-3.700000 -3.700000 303.131229 +-3.700000 -3.600000 299.669775 +-3.700000 -3.500000 296.228321 +-3.700000 -3.400000 292.806868 +-3.700000 -3.300000 289.405414 +-3.700000 -3.200000 286.023960 +-3.700000 -3.100000 282.662506 +-3.700000 -3.000000 279.321053 +-3.700000 -2.900000 275.999599 +-3.700000 -2.800000 272.698145 +-3.700000 -2.700000 269.416691 +-3.700000 -2.600000 266.155238 +-3.700000 -2.500000 262.913784 +-3.700000 -2.400000 259.692330 +-3.700000 -2.300000 256.490876 +-3.700000 -2.200000 253.309423 +-3.700000 -2.100000 250.147969 +-3.700000 -2.000000 247.006515 +-3.700000 -1.900000 243.885061 +-3.700000 -1.800000 240.783607 +-3.700000 -1.700000 237.702154 +-3.700000 -1.600000 234.640700 +-3.700000 -1.500000 231.599246 +-3.700000 -1.400000 228.577792 +-3.700000 -1.300000 225.576339 +-3.700000 -1.200000 222.594885 +-3.700000 -1.100000 219.633431 +-3.700000 -1.000000 216.691977 +-3.700000 -0.900000 213.770524 +-3.700000 -0.800000 210.869070 +-3.700000 -0.700000 207.987616 +-3.700000 -0.600000 205.126162 +-3.700000 -0.500000 202.284709 +-3.700000 -0.400000 199.463255 +-3.700000 -0.300000 196.661801 +-3.700000 -0.200000 193.880347 +-3.700000 -0.100000 191.118893 +-3.700000 -0.000000 188.377440 +-3.700000 0.100000 185.655986 +-3.700000 0.200000 182.954532 +-3.700000 0.300000 180.273078 +-3.700000 0.400000 177.611625 +-3.700000 0.500000 174.970171 +-3.700000 0.600000 172.348717 +-3.700000 0.700000 169.747263 +-3.700000 0.800000 167.165810 +-3.700000 0.900000 164.604356 +-3.700000 1.000000 162.062902 +-3.700000 1.100000 159.541448 +-3.700000 1.200000 157.039995 +-3.700000 1.300000 154.558541 +-3.700000 1.400000 152.097087 +-3.700000 1.500000 149.655633 +-3.700000 1.600000 147.234179 +-3.700000 1.700000 144.832726 +-3.700000 1.800000 142.451272 +-3.700000 1.900000 140.089818 +-3.700000 2.000000 137.748364 +-3.700000 2.100000 135.426911 +-3.700000 2.200000 133.125457 +-3.700000 2.300000 130.844003 +-3.700000 2.400000 128.582549 +-3.700000 2.500000 126.341096 +-3.700000 2.600000 124.119642 +-3.700000 2.700000 121.918188 +-3.700000 2.800000 119.736734 +-3.700000 2.900000 117.575281 +-3.700000 3.000000 115.433827 +-3.700000 3.100000 113.312373 +-3.700000 3.200000 111.210919 +-3.700000 3.300000 109.129465 +-3.700000 3.400000 107.068012 +-3.700000 3.500000 105.026558 +-3.700000 3.600000 103.005104 +-3.700000 3.700000 101.003650 +-3.700000 3.800000 99.022197 +-3.700000 3.900000 97.060743 +-3.700000 4.000000 95.119289 +-3.700000 4.100000 93.197835 +-3.700000 4.200000 91.296382 +-3.700000 4.300000 89.414928 +-3.700000 4.400000 87.553474 +-3.700000 4.500000 85.712020 +-3.700000 4.600000 83.890567 +-3.700000 4.700000 82.089113 +-3.700000 4.800000 80.307659 +-3.700000 4.900000 78.546205 +-3.700000 5.000000 76.804751 +-3.700000 5.100000 75.083298 +-3.700000 5.200000 73.381844 +-3.700000 5.300000 71.700390 +-3.700000 5.400000 70.038936 +-3.700000 5.500000 68.397483 +-3.700000 5.600000 66.776029 +-3.700000 5.700000 65.174575 +-3.700000 5.800000 63.593121 +-3.700000 5.900000 62.031668 +-3.700000 6.000000 60.490214 +-3.700000 6.100000 58.968760 +-3.700000 6.200000 57.467306 +-3.700000 6.300000 55.985853 +-3.700000 6.400000 54.524399 +-3.700000 6.500000 53.082945 +-3.700000 6.600000 51.661491 +-3.700000 6.700000 50.260037 +-3.700000 6.800000 48.878584 +-3.700000 6.900000 47.517130 +-3.700000 7.000000 46.175676 +-3.700000 7.100000 44.854222 +-3.700000 7.200000 43.552769 +-3.700000 7.300000 42.271315 +-3.700000 7.400000 41.009861 +-3.700000 7.500000 39.768407 +-3.700000 7.600000 38.546954 +-3.700000 7.700000 37.345500 +-3.700000 7.800000 36.164046 +-3.700000 7.900000 35.002592 +-3.700000 8.000000 33.861139 +-3.700000 8.100000 32.739685 +-3.700000 8.200000 31.638231 +-3.700000 8.300000 30.556777 +-3.700000 8.400000 29.495323 +-3.700000 8.500000 28.453870 +-3.700000 8.600000 27.432416 +-3.700000 8.700000 26.430962 +-3.700000 8.800000 25.449508 +-3.700000 8.900000 24.488055 +-3.700000 9.000000 23.546601 +-3.700000 9.100000 22.625147 +-3.700000 9.200000 21.723693 +-3.700000 9.300000 20.842240 +-3.700000 9.400000 19.980786 +-3.700000 9.500000 19.139332 +-3.700000 9.600000 18.317878 +-3.700000 9.700000 17.516425 +-3.700000 9.800000 16.734971 +-3.700000 9.900000 15.973517 +-3.700000 10.000000 15.232063 +-3.700000 10.100000 14.510609 +-3.700000 10.200000 13.809156 +-3.700000 10.300000 13.127702 +-3.700000 10.400000 12.466248 +-3.700000 10.500000 11.824794 +-3.700000 10.600000 11.203341 +-3.700000 10.700000 10.601887 +-3.700000 10.800000 10.020433 +-3.700000 10.900000 9.458979 +-3.700000 11.000000 8.917526 +-3.700000 11.100000 8.396072 +-3.700000 11.200000 7.894618 +-3.700000 11.300000 7.413164 +-3.700000 11.400000 6.951711 +-3.700000 11.500000 6.510257 +-3.700000 11.600000 6.088803 +-3.700000 11.700000 5.687349 +-3.700000 11.800000 5.305895 +-3.700000 11.900000 4.944442 +-3.700000 12.000000 4.602988 +-3.700000 12.100000 4.281534 +-3.700000 12.200000 3.980080 +-3.700000 12.300000 3.698627 +-3.700000 12.400000 3.437173 +-3.700000 12.500000 3.195719 +-3.700000 12.600000 2.974265 +-3.700000 12.700000 2.772812 +-3.700000 12.800000 2.591358 +-3.700000 12.900000 2.429904 +-3.700000 13.000000 2.288450 +-3.700000 13.100000 2.166997 +-3.700000 13.200000 2.065543 +-3.700000 13.300000 1.984089 +-3.700000 13.400000 1.922635 +-3.700000 13.500000 1.881181 +-3.700000 13.600000 1.859728 +-3.700000 13.700000 1.858274 +-3.700000 13.800000 1.876820 +-3.700000 13.900000 1.915366 +-3.700000 14.000000 1.973913 +-3.700000 14.100000 2.052459 +-3.700000 14.200000 2.151005 +-3.700000 14.300000 2.269551 +-3.700000 14.400000 2.408098 +-3.700000 14.500000 2.566644 +-3.700000 14.600000 2.745190 +-3.700000 14.700000 2.943736 +-3.700000 14.800000 3.162283 +-3.700000 14.900000 3.400829 +-3.700000 15.000000 3.659375 + +-3.600000 -5.000000 340.089417 +-3.600000 -4.900000 336.418656 +-3.600000 -4.800000 332.767894 +-3.600000 -4.700000 329.137132 +-3.600000 -4.600000 325.526370 +-3.600000 -4.500000 321.935608 +-3.600000 -4.400000 318.364846 +-3.600000 -4.300000 314.814085 +-3.600000 -4.200000 311.283323 +-3.600000 -4.100000 307.772561 +-3.600000 -4.000000 304.281799 +-3.600000 -3.900000 300.811037 +-3.600000 -3.800000 297.360275 +-3.600000 -3.700000 293.929513 +-3.600000 -3.600000 290.518752 +-3.600000 -3.500000 287.127990 +-3.600000 -3.400000 283.757228 +-3.600000 -3.300000 280.406466 +-3.600000 -3.200000 277.075704 +-3.600000 -3.100000 273.764942 +-3.600000 -3.000000 270.474181 +-3.600000 -2.900000 267.203419 +-3.600000 -2.800000 263.952657 +-3.600000 -2.700000 260.721895 +-3.600000 -2.600000 257.511133 +-3.600000 -2.500000 254.320371 +-3.600000 -2.400000 251.149610 +-3.600000 -2.300000 247.998848 +-3.600000 -2.200000 244.868086 +-3.600000 -2.100000 241.757324 +-3.600000 -2.000000 238.666562 +-3.600000 -1.900000 235.595800 +-3.600000 -1.800000 232.545039 +-3.600000 -1.700000 229.514277 +-3.600000 -1.600000 226.503515 +-3.600000 -1.500000 223.512753 +-3.600000 -1.400000 220.541991 +-3.600000 -1.300000 217.591229 +-3.600000 -1.200000 214.660468 +-3.600000 -1.100000 211.749706 +-3.600000 -1.000000 208.858944 +-3.600000 -0.900000 205.988182 +-3.600000 -0.800000 203.137420 +-3.600000 -0.700000 200.306658 +-3.600000 -0.600000 197.495896 +-3.600000 -0.500000 194.705135 +-3.600000 -0.400000 191.934373 +-3.600000 -0.300000 189.183611 +-3.600000 -0.200000 186.452849 +-3.600000 -0.100000 183.742087 +-3.600000 -0.000000 181.051325 +-3.600000 0.100000 178.380564 +-3.600000 0.200000 175.729802 +-3.600000 0.300000 173.099040 +-3.600000 0.400000 170.488278 +-3.600000 0.500000 167.897516 +-3.600000 0.600000 165.326754 +-3.600000 0.700000 162.775993 +-3.600000 0.800000 160.245231 +-3.600000 0.900000 157.734469 +-3.600000 1.000000 155.243707 +-3.600000 1.100000 152.772945 +-3.600000 1.200000 150.322183 +-3.600000 1.300000 147.891422 +-3.600000 1.400000 145.480660 +-3.600000 1.500000 143.089898 +-3.600000 1.600000 140.719136 +-3.600000 1.700000 138.368374 +-3.600000 1.800000 136.037612 +-3.600000 1.900000 133.726851 +-3.600000 2.000000 131.436089 +-3.600000 2.100000 129.165327 +-3.600000 2.200000 126.914565 +-3.600000 2.300000 124.683803 +-3.600000 2.400000 122.473041 +-3.600000 2.500000 120.282280 +-3.600000 2.600000 118.111518 +-3.600000 2.700000 115.960756 +-3.600000 2.800000 113.829994 +-3.600000 2.900000 111.719232 +-3.600000 3.000000 109.628470 +-3.600000 3.100000 107.557708 +-3.600000 3.200000 105.506947 +-3.600000 3.300000 103.476185 +-3.600000 3.400000 101.465423 +-3.600000 3.500000 99.474661 +-3.600000 3.600000 97.503899 +-3.600000 3.700000 95.553137 +-3.600000 3.800000 93.622376 +-3.600000 3.900000 91.711614 +-3.600000 4.000000 89.820852 +-3.600000 4.100000 87.950090 +-3.600000 4.200000 86.099328 +-3.600000 4.300000 84.268566 +-3.600000 4.400000 82.457805 +-3.600000 4.500000 80.667043 +-3.600000 4.600000 78.896281 +-3.600000 4.700000 77.145519 +-3.600000 4.800000 75.414757 +-3.600000 4.900000 73.703995 +-3.600000 5.000000 72.013234 +-3.600000 5.100000 70.342472 +-3.600000 5.200000 68.691710 +-3.600000 5.300000 67.060948 +-3.600000 5.400000 65.450186 +-3.600000 5.500000 63.859424 +-3.600000 5.600000 62.288663 +-3.600000 5.700000 60.737901 +-3.600000 5.800000 59.207139 +-3.600000 5.900000 57.696377 +-3.600000 6.000000 56.205615 +-3.600000 6.100000 54.734853 +-3.600000 6.200000 53.284092 +-3.600000 6.300000 51.853330 +-3.600000 6.400000 50.442568 +-3.600000 6.500000 49.051806 +-3.600000 6.600000 47.681044 +-3.600000 6.700000 46.330282 +-3.600000 6.800000 44.999520 +-3.600000 6.900000 43.688759 +-3.600000 7.000000 42.397997 +-3.600000 7.100000 41.127235 +-3.600000 7.200000 39.876473 +-3.600000 7.300000 38.645711 +-3.600000 7.400000 37.434949 +-3.600000 7.500000 36.244188 +-3.600000 7.600000 35.073426 +-3.600000 7.700000 33.922664 +-3.600000 7.800000 32.791902 +-3.600000 7.900000 31.681140 +-3.600000 8.000000 30.590378 +-3.600000 8.100000 29.519617 +-3.600000 8.200000 28.468855 +-3.600000 8.300000 27.438093 +-3.600000 8.400000 26.427331 +-3.600000 8.500000 25.436569 +-3.600000 8.600000 24.465807 +-3.600000 8.700000 23.515046 +-3.600000 8.800000 22.584284 +-3.600000 8.900000 21.673522 +-3.600000 9.000000 20.782760 +-3.600000 9.100000 19.911998 +-3.600000 9.200000 19.061236 +-3.600000 9.300000 18.230475 +-3.600000 9.400000 17.419713 +-3.600000 9.500000 16.628951 +-3.600000 9.600000 15.858189 +-3.600000 9.700000 15.107427 +-3.600000 9.800000 14.376665 +-3.600000 9.900000 13.665904 +-3.600000 10.000000 12.975142 +-3.600000 10.100000 12.304380 +-3.600000 10.200000 11.653618 +-3.600000 10.300000 11.022856 +-3.600000 10.400000 10.412094 +-3.600000 10.500000 9.821332 +-3.600000 10.600000 9.250571 +-3.600000 10.700000 8.699809 +-3.600000 10.800000 8.169047 +-3.600000 10.900000 7.658285 +-3.600000 11.000000 7.167523 +-3.600000 11.100000 6.696761 +-3.600000 11.200000 6.246000 +-3.600000 11.300000 5.815238 +-3.600000 11.400000 5.404476 +-3.600000 11.500000 5.013714 +-3.600000 11.600000 4.642952 +-3.600000 11.700000 4.292190 +-3.600000 11.800000 3.961429 +-3.600000 11.900000 3.650667 +-3.600000 12.000000 3.359905 +-3.600000 12.100000 3.089143 +-3.600000 12.200000 2.838381 +-3.600000 12.300000 2.607619 +-3.600000 12.400000 2.396858 +-3.600000 12.500000 2.206096 +-3.600000 12.600000 2.035334 +-3.600000 12.700000 1.884572 +-3.600000 12.800000 1.753810 +-3.600000 12.900000 1.643048 +-3.600000 13.000000 1.552287 +-3.600000 13.100000 1.481525 +-3.600000 13.200000 1.430763 +-3.600000 13.300000 1.400001 +-3.600000 13.400000 1.389239 +-3.600000 13.500000 1.398477 +-3.600000 13.600000 1.427716 +-3.600000 13.700000 1.476954 +-3.600000 13.800000 1.546192 +-3.600000 13.900000 1.635430 +-3.600000 14.000000 1.744668 +-3.600000 14.100000 1.873906 +-3.600000 14.200000 2.023144 +-3.600000 14.300000 2.192383 +-3.600000 14.400000 2.381621 +-3.600000 14.500000 2.590859 +-3.600000 14.600000 2.820097 +-3.600000 14.700000 3.069335 +-3.600000 14.800000 3.338573 +-3.600000 14.900000 3.627812 +-3.600000 15.000000 3.937050 + +-3.500000 -5.000000 330.537023 +-3.500000 -4.900000 326.916436 +-3.500000 -4.800000 323.315850 +-3.500000 -4.700000 319.735263 +-3.500000 -4.600000 316.174676 +-3.500000 -4.500000 312.634090 +-3.500000 -4.400000 309.113503 +-3.500000 -4.300000 305.612916 +-3.500000 -4.200000 302.132330 +-3.500000 -4.100000 298.671743 +-3.500000 -4.000000 295.231156 +-3.500000 -3.900000 291.810570 +-3.500000 -3.800000 288.409983 +-3.500000 -3.700000 285.029396 +-3.500000 -3.600000 281.668810 +-3.500000 -3.500000 278.328223 +-3.500000 -3.400000 275.007636 +-3.500000 -3.300000 271.707050 +-3.500000 -3.200000 268.426463 +-3.500000 -3.100000 265.165876 +-3.500000 -3.000000 261.925290 +-3.500000 -2.900000 258.704703 +-3.500000 -2.800000 255.504117 +-3.500000 -2.700000 252.323530 +-3.500000 -2.600000 249.162943 +-3.500000 -2.500000 246.022357 +-3.500000 -2.400000 242.901770 +-3.500000 -2.300000 239.801183 +-3.500000 -2.200000 236.720597 +-3.500000 -2.100000 233.660010 +-3.500000 -2.000000 230.619423 +-3.500000 -1.900000 227.598837 +-3.500000 -1.800000 224.598250 +-3.500000 -1.700000 221.617663 +-3.500000 -1.600000 218.657077 +-3.500000 -1.500000 215.716490 +-3.500000 -1.400000 212.795903 +-3.500000 -1.300000 209.895317 +-3.500000 -1.200000 207.014730 +-3.500000 -1.100000 204.154143 +-3.500000 -1.000000 201.313557 +-3.500000 -0.900000 198.492970 +-3.500000 -0.800000 195.692384 +-3.500000 -0.700000 192.911797 +-3.500000 -0.600000 190.151210 +-3.500000 -0.500000 187.410624 +-3.500000 -0.400000 184.690037 +-3.500000 -0.300000 181.989450 +-3.500000 -0.200000 179.308864 +-3.500000 -0.100000 176.648277 +-3.500000 -0.000000 174.007690 +-3.500000 0.100000 171.387104 +-3.500000 0.200000 168.786517 +-3.500000 0.300000 166.205930 +-3.500000 0.400000 163.645344 +-3.500000 0.500000 161.104757 +-3.500000 0.600000 158.584170 +-3.500000 0.700000 156.083584 +-3.500000 0.800000 153.602997 +-3.500000 0.900000 151.142411 +-3.500000 1.000000 148.701824 +-3.500000 1.100000 146.281237 +-3.500000 1.200000 143.880651 +-3.500000 1.300000 141.500064 +-3.500000 1.400000 139.139477 +-3.500000 1.500000 136.798891 +-3.500000 1.600000 134.478304 +-3.500000 1.700000 132.177717 +-3.500000 1.800000 129.897131 +-3.500000 1.900000 127.636544 +-3.500000 2.000000 125.395957 +-3.500000 2.100000 123.175371 +-3.500000 2.200000 120.974784 +-3.500000 2.300000 118.794197 +-3.500000 2.400000 116.633611 +-3.500000 2.500000 114.493024 +-3.500000 2.600000 112.372437 +-3.500000 2.700000 110.271851 +-3.500000 2.800000 108.191264 +-3.500000 2.900000 106.130678 +-3.500000 3.000000 104.090091 +-3.500000 3.100000 102.069504 +-3.500000 3.200000 100.068918 +-3.500000 3.300000 98.088331 +-3.500000 3.400000 96.127744 +-3.500000 3.500000 94.187158 +-3.500000 3.600000 92.266571 +-3.500000 3.700000 90.365984 +-3.500000 3.800000 88.485398 +-3.500000 3.900000 86.624811 +-3.500000 4.000000 84.784224 +-3.500000 4.100000 82.963638 +-3.500000 4.200000 81.163051 +-3.500000 4.300000 79.382464 +-3.500000 4.400000 77.621878 +-3.500000 4.500000 75.881291 +-3.500000 4.600000 74.160705 +-3.500000 4.700000 72.460118 +-3.500000 4.800000 70.779531 +-3.500000 4.900000 69.118945 +-3.500000 5.000000 67.478358 +-3.500000 5.100000 65.857771 +-3.500000 5.200000 64.257185 +-3.500000 5.300000 62.676598 +-3.500000 5.400000 61.116011 +-3.500000 5.500000 59.575425 +-3.500000 5.600000 58.054838 +-3.500000 5.700000 56.554251 +-3.500000 5.800000 55.073665 +-3.500000 5.900000 53.613078 +-3.500000 6.000000 52.172491 +-3.500000 6.100000 50.751905 +-3.500000 6.200000 49.351318 +-3.500000 6.300000 47.970731 +-3.500000 6.400000 46.610145 +-3.500000 6.500000 45.269558 +-3.500000 6.600000 43.948972 +-3.500000 6.700000 42.648385 +-3.500000 6.800000 41.367798 +-3.500000 6.900000 40.107212 +-3.500000 7.000000 38.866625 +-3.500000 7.100000 37.646038 +-3.500000 7.200000 36.445452 +-3.500000 7.300000 35.264865 +-3.500000 7.400000 34.104278 +-3.500000 7.500000 32.963692 +-3.500000 7.600000 31.843105 +-3.500000 7.700000 30.742518 +-3.500000 7.800000 29.661932 +-3.500000 7.900000 28.601345 +-3.500000 8.000000 27.560758 +-3.500000 8.100000 26.540172 +-3.500000 8.200000 25.539585 +-3.500000 8.300000 24.558998 +-3.500000 8.400000 23.598412 +-3.500000 8.500000 22.657825 +-3.500000 8.600000 21.737239 +-3.500000 8.700000 20.836652 +-3.500000 8.800000 19.956065 +-3.500000 8.900000 19.095479 +-3.500000 9.000000 18.254892 +-3.500000 9.100000 17.434305 +-3.500000 9.200000 16.633719 +-3.500000 9.300000 15.853132 +-3.500000 9.400000 15.092545 +-3.500000 9.500000 14.351959 +-3.500000 9.600000 13.631372 +-3.500000 9.700000 12.930785 +-3.500000 9.800000 12.250199 +-3.500000 9.900000 11.589612 +-3.500000 10.000000 10.949025 +-3.500000 10.100000 10.328439 +-3.500000 10.200000 9.727852 +-3.500000 10.300000 9.147266 +-3.500000 10.400000 8.586679 +-3.500000 10.500000 8.046092 +-3.500000 10.600000 7.525506 +-3.500000 10.700000 7.024919 +-3.500000 10.800000 6.544332 +-3.500000 10.900000 6.083746 +-3.500000 11.000000 5.643159 +-3.500000 11.100000 5.222572 +-3.500000 11.200000 4.821986 +-3.500000 11.300000 4.441399 +-3.500000 11.400000 4.080812 +-3.500000 11.500000 3.740226 +-3.500000 11.600000 3.419639 +-3.500000 11.700000 3.119052 +-3.500000 11.800000 2.838466 +-3.500000 11.900000 2.577879 +-3.500000 12.000000 2.337292 +-3.500000 12.100000 2.116706 +-3.500000 12.200000 1.916119 +-3.500000 12.300000 1.735533 +-3.500000 12.400000 1.574946 +-3.500000 12.500000 1.434359 +-3.500000 12.600000 1.313773 +-3.500000 12.700000 1.213186 +-3.500000 12.800000 1.132599 +-3.500000 12.900000 1.072013 +-3.500000 13.000000 1.031426 +-3.500000 13.100000 1.010839 +-3.500000 13.200000 1.010253 +-3.500000 13.300000 1.029666 +-3.500000 13.400000 1.069079 +-3.500000 13.500000 1.128493 +-3.500000 13.600000 1.207906 +-3.500000 13.700000 1.307319 +-3.500000 13.800000 1.426733 +-3.500000 13.900000 1.566146 +-3.500000 14.000000 1.725559 +-3.500000 14.100000 1.904973 +-3.500000 14.200000 2.104386 +-3.500000 14.300000 2.323800 +-3.500000 14.400000 2.563213 +-3.500000 14.500000 2.822626 +-3.500000 14.600000 3.102040 +-3.500000 14.700000 3.401453 +-3.500000 14.800000 3.720866 +-3.500000 14.900000 4.060280 +-3.500000 15.000000 4.419693 + +-3.400000 -5.000000 321.292864 +-3.400000 -4.900000 317.721936 +-3.400000 -4.800000 314.171007 +-3.400000 -4.700000 310.640079 +-3.400000 -4.600000 307.129151 +-3.400000 -4.500000 303.638223 +-3.400000 -4.400000 300.167295 +-3.400000 -4.300000 296.716366 +-3.400000 -4.200000 293.285438 +-3.400000 -4.100000 289.874510 +-3.400000 -4.000000 286.483582 +-3.400000 -3.900000 283.112654 +-3.400000 -3.800000 279.761725 +-3.400000 -3.700000 276.430797 +-3.400000 -3.600000 273.119869 +-3.400000 -3.500000 269.828941 +-3.400000 -3.400000 266.558013 +-3.400000 -3.300000 263.307084 +-3.400000 -3.200000 260.076156 +-3.400000 -3.100000 256.865228 +-3.400000 -3.000000 253.674300 +-3.400000 -2.900000 250.503372 +-3.400000 -2.800000 247.352444 +-3.400000 -2.700000 244.221515 +-3.400000 -2.600000 241.110587 +-3.400000 -2.500000 238.019659 +-3.400000 -2.400000 234.948731 +-3.400000 -2.300000 231.897803 +-3.400000 -2.200000 228.866874 +-3.400000 -2.100000 225.855946 +-3.400000 -2.000000 222.865018 +-3.400000 -1.900000 219.894090 +-3.400000 -1.800000 216.943162 +-3.400000 -1.700000 214.012233 +-3.400000 -1.600000 211.101305 +-3.400000 -1.500000 208.210377 +-3.400000 -1.400000 205.339449 +-3.400000 -1.300000 202.488521 +-3.400000 -1.200000 199.657592 +-3.400000 -1.100000 196.846664 +-3.400000 -1.000000 194.055736 +-3.400000 -0.900000 191.284808 +-3.400000 -0.800000 188.533880 +-3.400000 -0.700000 185.802951 +-3.400000 -0.600000 183.092023 +-3.400000 -0.500000 180.401095 +-3.400000 -0.400000 177.730167 +-3.400000 -0.300000 175.079239 +-3.400000 -0.200000 172.448310 +-3.400000 -0.100000 169.837382 +-3.400000 -0.000000 167.246454 +-3.400000 0.100000 164.675526 +-3.400000 0.200000 162.124598 +-3.400000 0.300000 159.593669 +-3.400000 0.400000 157.082741 +-3.400000 0.500000 154.591813 +-3.400000 0.600000 152.120885 +-3.400000 0.700000 149.669957 +-3.400000 0.800000 147.239028 +-3.400000 0.900000 144.828100 +-3.400000 1.000000 142.437172 +-3.400000 1.100000 140.066244 +-3.400000 1.200000 137.715316 +-3.400000 1.300000 135.384387 +-3.400000 1.400000 133.073459 +-3.400000 1.500000 130.782531 +-3.400000 1.600000 128.511603 +-3.400000 1.700000 126.260675 +-3.400000 1.800000 124.029746 +-3.400000 1.900000 121.818818 +-3.400000 2.000000 119.627890 +-3.400000 2.100000 117.456962 +-3.400000 2.200000 115.306034 +-3.400000 2.300000 113.175105 +-3.400000 2.400000 111.064177 +-3.400000 2.500000 108.973249 +-3.400000 2.600000 106.902321 +-3.400000 2.700000 104.851393 +-3.400000 2.800000 102.820464 +-3.400000 2.900000 100.809536 +-3.400000 3.000000 98.818608 +-3.400000 3.100000 96.847680 +-3.400000 3.200000 94.896752 +-3.400000 3.300000 92.965823 +-3.400000 3.400000 91.054895 +-3.400000 3.500000 89.163967 +-3.400000 3.600000 87.293039 +-3.400000 3.700000 85.442111 +-3.400000 3.800000 83.611182 +-3.400000 3.900000 81.800254 +-3.400000 4.000000 80.009326 +-3.400000 4.100000 78.238398 +-3.400000 4.200000 76.487470 +-3.400000 4.300000 74.756541 +-3.400000 4.400000 73.045613 +-3.400000 4.500000 71.354685 +-3.400000 4.600000 69.683757 +-3.400000 4.700000 68.032829 +-3.400000 4.800000 66.401900 +-3.400000 4.900000 64.790972 +-3.400000 5.000000 63.200044 +-3.400000 5.100000 61.629116 +-3.400000 5.200000 60.078188 +-3.400000 5.300000 58.547259 +-3.400000 5.400000 57.036331 +-3.400000 5.500000 55.545403 +-3.400000 5.600000 54.074475 +-3.400000 5.700000 52.623547 +-3.400000 5.800000 51.192618 +-3.400000 5.900000 49.781690 +-3.400000 6.000000 48.390762 +-3.400000 6.100000 47.019834 +-3.400000 6.200000 45.668906 +-3.400000 6.300000 44.337977 +-3.400000 6.400000 43.027049 +-3.400000 6.500000 41.736121 +-3.400000 6.600000 40.465193 +-3.400000 6.700000 39.214265 +-3.400000 6.800000 37.983336 +-3.400000 6.900000 36.772408 +-3.400000 7.000000 35.581480 +-3.400000 7.100000 34.410552 +-3.400000 7.200000 33.259624 +-3.400000 7.300000 32.128695 +-3.400000 7.400000 31.017767 +-3.400000 7.500000 29.926839 +-3.400000 7.600000 28.855911 +-3.400000 7.700000 27.804983 +-3.400000 7.800000 26.774054 +-3.400000 7.900000 25.763126 +-3.400000 8.000000 24.772198 +-3.400000 8.100000 23.801270 +-3.400000 8.200000 22.850342 +-3.400000 8.300000 21.919414 +-3.400000 8.400000 21.008485 +-3.400000 8.500000 20.117557 +-3.400000 8.600000 19.246629 +-3.400000 8.700000 18.395701 +-3.400000 8.800000 17.564773 +-3.400000 8.900000 16.753844 +-3.400000 9.000000 15.962916 +-3.400000 9.100000 15.191988 +-3.400000 9.200000 14.441060 +-3.400000 9.300000 13.710132 +-3.400000 9.400000 12.999203 +-3.400000 9.500000 12.308275 +-3.400000 9.600000 11.637347 +-3.400000 9.700000 10.986419 +-3.400000 9.800000 10.355491 +-3.400000 9.900000 9.744562 +-3.400000 10.000000 9.153634 +-3.400000 10.100000 8.582706 +-3.400000 10.200000 8.031778 +-3.400000 10.300000 7.500850 +-3.400000 10.400000 6.989921 +-3.400000 10.500000 6.498993 +-3.400000 10.600000 6.028065 +-3.400000 10.700000 5.577137 +-3.400000 10.800000 5.146209 +-3.400000 10.900000 4.735280 +-3.400000 11.000000 4.344352 +-3.400000 11.100000 3.973424 +-3.400000 11.200000 3.622496 +-3.400000 11.300000 3.291568 +-3.400000 11.400000 2.980639 +-3.400000 11.500000 2.689711 +-3.400000 11.600000 2.418783 +-3.400000 11.700000 2.167855 +-3.400000 11.800000 1.936927 +-3.400000 11.900000 1.725998 +-3.400000 12.000000 1.535070 +-3.400000 12.100000 1.364142 +-3.400000 12.200000 1.213214 +-3.400000 12.300000 1.082286 +-3.400000 12.400000 0.971357 +-3.400000 12.500000 0.880429 +-3.400000 12.600000 0.809501 +-3.400000 12.700000 0.758573 +-3.400000 12.800000 0.727645 +-3.400000 12.900000 0.716716 +-3.400000 13.000000 0.725788 +-3.400000 13.100000 0.754860 +-3.400000 13.200000 0.803932 +-3.400000 13.300000 0.873004 +-3.400000 13.400000 0.962075 +-3.400000 13.500000 1.071147 +-3.400000 13.600000 1.200219 +-3.400000 13.700000 1.349291 +-3.400000 13.800000 1.518363 +-3.400000 13.900000 1.707434 +-3.400000 14.000000 1.916506 +-3.400000 14.100000 2.145578 +-3.400000 14.200000 2.394650 +-3.400000 14.300000 2.663722 +-3.400000 14.400000 2.952793 +-3.400000 14.500000 3.261865 +-3.400000 14.600000 3.590937 +-3.400000 14.700000 3.940009 +-3.400000 14.800000 4.309081 +-3.400000 14.900000 4.698152 +-3.400000 15.000000 5.107224 + +-3.300000 -5.000000 312.356002 +-3.300000 -4.900000 308.834216 +-3.300000 -4.800000 305.332429 +-3.300000 -4.700000 301.850643 +-3.300000 -4.600000 298.388857 +-3.300000 -4.500000 294.947070 +-3.300000 -4.400000 291.525284 +-3.300000 -4.300000 288.123497 +-3.300000 -4.200000 284.741711 +-3.300000 -4.100000 281.379924 +-3.300000 -4.000000 278.038138 +-3.300000 -3.900000 274.716351 +-3.300000 -3.800000 271.414565 +-3.300000 -3.700000 268.132778 +-3.300000 -3.600000 264.870992 +-3.300000 -3.500000 261.629205 +-3.300000 -3.400000 258.407419 +-3.300000 -3.300000 255.205632 +-3.300000 -3.200000 252.023846 +-3.300000 -3.100000 248.862059 +-3.300000 -3.000000 245.720273 +-3.300000 -2.900000 242.598486 +-3.300000 -2.800000 239.496700 +-3.300000 -2.700000 236.414913 +-3.300000 -2.600000 233.353127 +-3.300000 -2.500000 230.311340 +-3.300000 -2.400000 227.289554 +-3.300000 -2.300000 224.287767 +-3.300000 -2.200000 221.305981 +-3.300000 -2.100000 218.344194 +-3.300000 -2.000000 215.402408 +-3.300000 -1.900000 212.480621 +-3.300000 -1.800000 209.578835 +-3.300000 -1.700000 206.697048 +-3.300000 -1.600000 203.835262 +-3.300000 -1.500000 200.993475 +-3.300000 -1.400000 198.171689 +-3.300000 -1.300000 195.369903 +-3.300000 -1.200000 192.588116 +-3.300000 -1.100000 189.826330 +-3.300000 -1.000000 187.084543 +-3.300000 -0.900000 184.362757 +-3.300000 -0.800000 181.660970 +-3.300000 -0.700000 178.979184 +-3.300000 -0.600000 176.317397 +-3.300000 -0.500000 173.675611 +-3.300000 -0.400000 171.053824 +-3.300000 -0.300000 168.452038 +-3.300000 -0.200000 165.870251 +-3.300000 -0.100000 163.308465 +-3.300000 -0.000000 160.766678 +-3.300000 0.100000 158.244892 +-3.300000 0.200000 155.743105 +-3.300000 0.300000 153.261319 +-3.300000 0.400000 150.799532 +-3.300000 0.500000 148.357746 +-3.300000 0.600000 145.935959 +-3.300000 0.700000 143.534173 +-3.300000 0.800000 141.152386 +-3.300000 0.900000 138.790600 +-3.300000 1.000000 136.448813 +-3.300000 1.100000 134.127027 +-3.300000 1.200000 131.825240 +-3.300000 1.300000 129.543454 +-3.300000 1.400000 127.281667 +-3.300000 1.500000 125.039881 +-3.300000 1.600000 122.818094 +-3.300000 1.700000 120.616308 +-3.300000 1.800000 118.434521 +-3.300000 1.900000 116.272735 +-3.300000 2.000000 114.130948 +-3.300000 2.100000 112.009162 +-3.300000 2.200000 109.907376 +-3.300000 2.300000 107.825589 +-3.300000 2.400000 105.763803 +-3.300000 2.500000 103.722016 +-3.300000 2.600000 101.700230 +-3.300000 2.700000 99.698443 +-3.300000 2.800000 97.716657 +-3.300000 2.900000 95.754870 +-3.300000 3.000000 93.813084 +-3.300000 3.100000 91.891297 +-3.300000 3.200000 89.989511 +-3.300000 3.300000 88.107724 +-3.300000 3.400000 86.245938 +-3.300000 3.500000 84.404151 +-3.300000 3.600000 82.582365 +-3.300000 3.700000 80.780578 +-3.300000 3.800000 78.998792 +-3.300000 3.900000 77.237005 +-3.300000 4.000000 75.495219 +-3.300000 4.100000 73.773432 +-3.300000 4.200000 72.071646 +-3.300000 4.300000 70.389859 +-3.300000 4.400000 68.728073 +-3.300000 4.500000 67.086286 +-3.300000 4.600000 65.464500 +-3.300000 4.700000 63.862713 +-3.300000 4.800000 62.280927 +-3.300000 4.900000 60.719140 +-3.300000 5.000000 59.177354 +-3.300000 5.100000 57.655567 +-3.300000 5.200000 56.153781 +-3.300000 5.300000 54.671994 +-3.300000 5.400000 53.210208 +-3.300000 5.500000 51.768422 +-3.300000 5.600000 50.346635 +-3.300000 5.700000 48.944849 +-3.300000 5.800000 47.563062 +-3.300000 5.900000 46.201276 +-3.300000 6.000000 44.859489 +-3.300000 6.100000 43.537703 +-3.300000 6.200000 42.235916 +-3.300000 6.300000 40.954130 +-3.300000 6.400000 39.692343 +-3.300000 6.500000 38.450557 +-3.300000 6.600000 37.228770 +-3.300000 6.700000 36.026984 +-3.300000 6.800000 34.845197 +-3.300000 6.900000 33.683411 +-3.300000 7.000000 32.541624 +-3.300000 7.100000 31.419838 +-3.300000 7.200000 30.318051 +-3.300000 7.300000 29.236265 +-3.300000 7.400000 28.174478 +-3.300000 7.500000 27.132692 +-3.300000 7.600000 26.110905 +-3.300000 7.700000 25.109119 +-3.300000 7.800000 24.127332 +-3.300000 7.900000 23.165546 +-3.300000 8.000000 22.223759 +-3.300000 8.100000 21.301973 +-3.300000 8.200000 20.400186 +-3.300000 8.300000 19.518400 +-3.300000 8.400000 18.656613 +-3.300000 8.500000 17.814827 +-3.300000 8.600000 16.993040 +-3.300000 8.700000 16.191254 +-3.300000 8.800000 15.409467 +-3.300000 8.900000 14.647681 +-3.300000 9.000000 13.905895 +-3.300000 9.100000 13.184108 +-3.300000 9.200000 12.482322 +-3.300000 9.300000 11.800535 +-3.300000 9.400000 11.138749 +-3.300000 9.500000 10.496962 +-3.300000 9.600000 9.875176 +-3.300000 9.700000 9.273389 +-3.300000 9.800000 8.691603 +-3.300000 9.900000 8.129816 +-3.300000 10.000000 7.588030 +-3.300000 10.100000 7.066243 +-3.300000 10.200000 6.564457 +-3.300000 10.300000 6.082670 +-3.300000 10.400000 5.620884 +-3.300000 10.500000 5.179097 +-3.300000 10.600000 4.757311 +-3.300000 10.700000 4.355524 +-3.300000 10.800000 3.973738 +-3.300000 10.900000 3.611951 +-3.300000 11.000000 3.270165 +-3.300000 11.100000 2.948378 +-3.300000 11.200000 2.646592 +-3.300000 11.300000 2.364805 +-3.300000 11.400000 2.103019 +-3.300000 11.500000 1.861232 +-3.300000 11.600000 1.639446 +-3.300000 11.700000 1.437659 +-3.300000 11.800000 1.255873 +-3.300000 11.900000 1.094086 +-3.300000 12.000000 0.952300 +-3.300000 12.100000 0.830513 +-3.300000 12.200000 0.728727 +-3.300000 12.300000 0.646941 +-3.300000 12.400000 0.585154 +-3.300000 12.500000 0.543368 +-3.300000 12.600000 0.521581 +-3.300000 12.700000 0.519795 +-3.300000 12.800000 0.538008 +-3.300000 12.900000 0.576222 +-3.300000 13.000000 0.634435 +-3.300000 13.100000 0.712649 +-3.300000 13.200000 0.810862 +-3.300000 13.300000 0.929076 +-3.300000 13.400000 1.067289 +-3.300000 13.500000 1.225503 +-3.300000 13.600000 1.403716 +-3.300000 13.700000 1.601930 +-3.300000 13.800000 1.820143 +-3.300000 13.900000 2.058357 +-3.300000 14.000000 2.316570 +-3.300000 14.100000 2.594784 +-3.300000 14.200000 2.892997 +-3.300000 14.300000 3.211211 +-3.300000 14.400000 3.549424 +-3.300000 14.500000 3.907638 +-3.300000 14.600000 4.285851 +-3.300000 14.700000 4.684065 +-3.300000 14.800000 5.102278 +-3.300000 14.900000 5.540492 +-3.300000 15.000000 5.998705 + +-3.200000 -5.000000 303.724614 +-3.200000 -4.900000 300.251452 +-3.200000 -4.800000 296.798291 +-3.200000 -4.700000 293.365129 +-3.200000 -4.600000 289.951968 +-3.200000 -4.500000 286.558806 +-3.200000 -4.400000 283.185645 +-3.200000 -4.300000 279.832483 +-3.200000 -4.200000 276.499322 +-3.200000 -4.100000 273.186160 +-3.200000 -4.000000 269.892999 +-3.200000 -3.900000 266.619837 +-3.200000 -3.800000 263.366676 +-3.200000 -3.700000 260.133514 +-3.200000 -3.600000 256.920353 +-3.200000 -3.500000 253.727191 +-3.200000 -3.400000 250.554030 +-3.200000 -3.300000 247.400868 +-3.200000 -3.200000 244.267707 +-3.200000 -3.100000 241.154545 +-3.200000 -3.000000 238.061384 +-3.200000 -2.900000 234.988222 +-3.200000 -2.800000 231.935061 +-3.200000 -2.700000 228.901899 +-3.200000 -2.600000 225.888738 +-3.200000 -2.500000 222.895576 +-3.200000 -2.400000 219.922415 +-3.200000 -2.300000 216.969253 +-3.200000 -2.200000 214.036092 +-3.200000 -2.100000 211.122930 +-3.200000 -2.000000 208.229769 +-3.200000 -1.900000 205.356607 +-3.200000 -1.800000 202.503445 +-3.200000 -1.700000 199.670284 +-3.200000 -1.600000 196.857122 +-3.200000 -1.500000 194.063961 +-3.200000 -1.400000 191.290799 +-3.200000 -1.300000 188.537638 +-3.200000 -1.200000 185.804476 +-3.200000 -1.100000 183.091315 +-3.200000 -1.000000 180.398153 +-3.200000 -0.900000 177.724992 +-3.200000 -0.800000 175.071830 +-3.200000 -0.700000 172.438669 +-3.200000 -0.600000 169.825507 +-3.200000 -0.500000 167.232346 +-3.200000 -0.400000 164.659184 +-3.200000 -0.300000 162.106023 +-3.200000 -0.200000 159.572861 +-3.200000 -0.100000 157.059700 +-3.200000 -0.000000 154.566538 +-3.200000 0.100000 152.093377 +-3.200000 0.200000 149.640215 +-3.200000 0.300000 147.207054 +-3.200000 0.400000 144.793892 +-3.200000 0.500000 142.400731 +-3.200000 0.600000 140.027569 +-3.200000 0.700000 137.674408 +-3.200000 0.800000 135.341246 +-3.200000 0.900000 133.028085 +-3.200000 1.000000 130.734923 +-3.200000 1.100000 128.461762 +-3.200000 1.200000 126.208600 +-3.200000 1.300000 123.975439 +-3.200000 1.400000 121.762277 +-3.200000 1.500000 119.569116 +-3.200000 1.600000 117.395954 +-3.200000 1.700000 115.242793 +-3.200000 1.800000 113.109631 +-3.200000 1.900000 110.996470 +-3.200000 2.000000 108.903308 +-3.200000 2.100000 106.830147 +-3.200000 2.200000 104.776985 +-3.200000 2.300000 102.743824 +-3.200000 2.400000 100.730662 +-3.200000 2.500000 98.737501 +-3.200000 2.600000 96.764339 +-3.200000 2.700000 94.811178 +-3.200000 2.800000 92.878016 +-3.200000 2.900000 90.964854 +-3.200000 3.000000 89.071693 +-3.200000 3.100000 87.198531 +-3.200000 3.200000 85.345370 +-3.200000 3.300000 83.512208 +-3.200000 3.400000 81.699047 +-3.200000 3.500000 79.905885 +-3.200000 3.600000 78.132724 +-3.200000 3.700000 76.379562 +-3.200000 3.800000 74.646401 +-3.200000 3.900000 72.933239 +-3.200000 4.000000 71.240078 +-3.200000 4.100000 69.566916 +-3.200000 4.200000 67.913755 +-3.200000 4.300000 66.280593 +-3.200000 4.400000 64.667432 +-3.200000 4.500000 63.074270 +-3.200000 4.600000 61.501109 +-3.200000 4.700000 59.947947 +-3.200000 4.800000 58.414786 +-3.200000 4.900000 56.901624 +-3.200000 5.000000 55.408463 +-3.200000 5.100000 53.935301 +-3.200000 5.200000 52.482140 +-3.200000 5.300000 51.048978 +-3.200000 5.400000 49.635817 +-3.200000 5.500000 48.242655 +-3.200000 5.600000 46.869494 +-3.200000 5.700000 45.516332 +-3.200000 5.800000 44.183171 +-3.200000 5.900000 42.870009 +-3.200000 6.000000 41.576848 +-3.200000 6.100000 40.303686 +-3.200000 6.200000 39.050525 +-3.200000 6.300000 37.817363 +-3.200000 6.400000 36.604202 +-3.200000 6.500000 35.411040 +-3.200000 6.600000 34.237879 +-3.200000 6.700000 33.084717 +-3.200000 6.800000 31.951556 +-3.200000 6.900000 30.838394 +-3.200000 7.000000 29.745233 +-3.200000 7.100000 28.672071 +-3.200000 7.200000 27.618910 +-3.200000 7.300000 26.585748 +-3.200000 7.400000 25.572587 +-3.200000 7.500000 24.579425 +-3.200000 7.600000 23.606263 +-3.200000 7.700000 22.653102 +-3.200000 7.800000 21.719940 +-3.200000 7.900000 20.806779 +-3.200000 8.000000 19.913617 +-3.200000 8.100000 19.040456 +-3.200000 8.200000 18.187294 +-3.200000 8.300000 17.354133 +-3.200000 8.400000 16.540971 +-3.200000 8.500000 15.747810 +-3.200000 8.600000 14.974648 +-3.200000 8.700000 14.221487 +-3.200000 8.800000 13.488325 +-3.200000 8.900000 12.775164 +-3.200000 9.000000 12.082002 +-3.200000 9.100000 11.408841 +-3.200000 9.200000 10.755679 +-3.200000 9.300000 10.122518 +-3.200000 9.400000 9.509356 +-3.200000 9.500000 8.916195 +-3.200000 9.600000 8.343033 +-3.200000 9.700000 7.789872 +-3.200000 9.800000 7.256710 +-3.200000 9.900000 6.743549 +-3.200000 10.000000 6.250387 +-3.200000 10.100000 5.777226 +-3.200000 10.200000 5.324064 +-3.200000 10.300000 4.890903 +-3.200000 10.400000 4.477741 +-3.200000 10.500000 4.084580 +-3.200000 10.600000 3.711418 +-3.200000 10.700000 3.358257 +-3.200000 10.800000 3.025095 +-3.200000 10.900000 2.711934 +-3.200000 11.000000 2.418772 +-3.200000 11.100000 2.145611 +-3.200000 11.200000 1.892449 +-3.200000 11.300000 1.659288 +-3.200000 11.400000 1.446126 +-3.200000 11.500000 1.252965 +-3.200000 11.600000 1.079803 +-3.200000 11.700000 0.926642 +-3.200000 11.800000 0.793480 +-3.200000 11.900000 0.680319 +-3.200000 12.000000 0.587157 +-3.200000 12.100000 0.513996 +-3.200000 12.200000 0.460834 +-3.200000 12.300000 0.427673 +-3.200000 12.400000 0.414511 +-3.200000 12.500000 0.421349 +-3.200000 12.600000 0.448188 +-3.200000 12.700000 0.495026 +-3.200000 12.800000 0.561865 +-3.200000 12.900000 0.648703 +-3.200000 13.000000 0.755542 +-3.200000 13.100000 0.882380 +-3.200000 13.200000 1.029219 +-3.200000 13.300000 1.196057 +-3.200000 13.400000 1.382896 +-3.200000 13.500000 1.589734 +-3.200000 13.600000 1.816573 +-3.200000 13.700000 2.063411 +-3.200000 13.800000 2.330250 +-3.200000 13.900000 2.617088 +-3.200000 14.000000 2.923927 +-3.200000 14.100000 3.250765 +-3.200000 14.200000 3.597604 +-3.200000 14.300000 3.964442 +-3.200000 14.400000 4.351281 +-3.200000 14.500000 4.758119 +-3.200000 14.600000 5.184958 +-3.200000 14.700000 5.631796 +-3.200000 14.800000 6.098635 +-3.200000 14.900000 6.585473 +-3.200000 15.000000 7.092312 + +-3.100000 -5.000000 295.395967 +-3.100000 -4.900000 291.970913 +-3.100000 -4.800000 288.565860 +-3.100000 -4.700000 285.180807 +-3.100000 -4.600000 281.815753 +-3.100000 -4.500000 278.470700 +-3.100000 -4.400000 275.145647 +-3.100000 -4.300000 271.840594 +-3.100000 -4.200000 268.555540 +-3.100000 -4.100000 265.290487 +-3.100000 -4.000000 262.045434 +-3.100000 -3.900000 258.820381 +-3.100000 -3.800000 255.615327 +-3.100000 -3.700000 252.430274 +-3.100000 -3.600000 249.265221 +-3.100000 -3.500000 246.120167 +-3.100000 -3.400000 242.995114 +-3.100000 -3.300000 239.890061 +-3.100000 -3.200000 236.805008 +-3.100000 -3.100000 233.739954 +-3.100000 -3.000000 230.694901 +-3.100000 -2.900000 227.669848 +-3.100000 -2.800000 224.664795 +-3.100000 -2.700000 221.679741 +-3.100000 -2.600000 218.714688 +-3.100000 -2.500000 215.769635 +-3.100000 -2.400000 212.844581 +-3.100000 -2.300000 209.939528 +-3.100000 -2.200000 207.054475 +-3.100000 -2.100000 204.189422 +-3.100000 -2.000000 201.344368 +-3.100000 -1.900000 198.519315 +-3.100000 -1.800000 195.714262 +-3.100000 -1.700000 192.929209 +-3.100000 -1.600000 190.164155 +-3.100000 -1.500000 187.419102 +-3.100000 -1.400000 184.694049 +-3.100000 -1.300000 181.988995 +-3.100000 -1.200000 179.303942 +-3.100000 -1.100000 176.638889 +-3.100000 -1.000000 173.993836 +-3.100000 -0.900000 171.368782 +-3.100000 -0.800000 168.763729 +-3.100000 -0.700000 166.178676 +-3.100000 -0.600000 163.613623 +-3.100000 -0.500000 161.068569 +-3.100000 -0.400000 158.543516 +-3.100000 -0.300000 156.038463 +-3.100000 -0.200000 153.553409 +-3.100000 -0.100000 151.088356 +-3.100000 -0.000000 148.643303 +-3.100000 0.100000 146.218250 +-3.100000 0.200000 143.813196 +-3.100000 0.300000 141.428143 +-3.100000 0.400000 139.063090 +-3.100000 0.500000 136.718037 +-3.100000 0.600000 134.392983 +-3.100000 0.700000 132.087930 +-3.100000 0.800000 129.802877 +-3.100000 0.900000 127.537823 +-3.100000 1.000000 125.292770 +-3.100000 1.100000 123.067717 +-3.100000 1.200000 120.862664 +-3.100000 1.300000 118.677610 +-3.100000 1.400000 116.512557 +-3.100000 1.500000 114.367504 +-3.100000 1.600000 112.242451 +-3.100000 1.700000 110.137397 +-3.100000 1.800000 108.052344 +-3.100000 1.900000 105.987291 +-3.100000 2.000000 103.942237 +-3.100000 2.100000 101.917184 +-3.100000 2.200000 99.912131 +-3.100000 2.300000 97.927078 +-3.100000 2.400000 95.962024 +-3.100000 2.500000 94.016971 +-3.100000 2.600000 92.091918 +-3.100000 2.700000 90.186865 +-3.100000 2.800000 88.301811 +-3.100000 2.900000 86.436758 +-3.100000 3.000000 84.591705 +-3.100000 3.100000 82.766651 +-3.100000 3.200000 80.961598 +-3.100000 3.300000 79.176545 +-3.100000 3.400000 77.411492 +-3.100000 3.500000 75.666438 +-3.100000 3.600000 73.941385 +-3.100000 3.700000 72.236332 +-3.100000 3.800000 70.551278 +-3.100000 3.900000 68.886225 +-3.100000 4.000000 67.241172 +-3.100000 4.100000 65.616119 +-3.100000 4.200000 64.011065 +-3.100000 4.300000 62.426012 +-3.100000 4.400000 60.860959 +-3.100000 4.500000 59.315906 +-3.100000 4.600000 57.790852 +-3.100000 4.700000 56.285799 +-3.100000 4.800000 54.800746 +-3.100000 4.900000 53.335692 +-3.100000 5.000000 51.890639 +-3.100000 5.100000 50.465586 +-3.100000 5.200000 49.060533 +-3.100000 5.300000 47.675479 +-3.100000 5.400000 46.310426 +-3.100000 5.500000 44.965373 +-3.100000 5.600000 43.640320 +-3.100000 5.700000 42.335266 +-3.100000 5.800000 41.050213 +-3.100000 5.900000 39.785160 +-3.100000 6.000000 38.540106 +-3.100000 6.100000 37.315053 +-3.100000 6.200000 36.110000 +-3.100000 6.300000 34.924947 +-3.100000 6.400000 33.759893 +-3.100000 6.500000 32.614840 +-3.100000 6.600000 31.489787 +-3.100000 6.700000 30.384734 +-3.100000 6.800000 29.299680 +-3.100000 6.900000 28.234627 +-3.100000 7.000000 27.189574 +-3.100000 7.100000 26.164520 +-3.100000 7.200000 25.159467 +-3.100000 7.300000 24.174414 +-3.100000 7.400000 23.209361 +-3.100000 7.500000 22.264307 +-3.100000 7.600000 21.339254 +-3.100000 7.700000 20.434201 +-3.100000 7.800000 19.549148 +-3.100000 7.900000 18.684094 +-3.100000 8.000000 17.839041 +-3.100000 8.100000 17.013988 +-3.100000 8.200000 16.208934 +-3.100000 8.300000 15.423881 +-3.100000 8.400000 14.658828 +-3.100000 8.500000 13.913775 +-3.100000 8.600000 13.188721 +-3.100000 8.700000 12.483668 +-3.100000 8.800000 11.798615 +-3.100000 8.900000 11.133562 +-3.100000 9.000000 10.488508 +-3.100000 9.100000 9.863455 +-3.100000 9.200000 9.258402 +-3.100000 9.300000 8.673348 +-3.100000 9.400000 8.108295 +-3.100000 9.500000 7.563242 +-3.100000 9.600000 7.038189 +-3.100000 9.700000 6.533135 +-3.100000 9.800000 6.048082 +-3.100000 9.900000 5.583029 +-3.100000 10.000000 5.137976 +-3.100000 10.100000 4.712922 +-3.100000 10.200000 4.307869 +-3.100000 10.300000 3.922816 +-3.100000 10.400000 3.557762 +-3.100000 10.500000 3.212709 +-3.100000 10.600000 2.887656 +-3.100000 10.700000 2.582603 +-3.100000 10.800000 2.297549 +-3.100000 10.900000 2.032496 +-3.100000 11.000000 1.787443 +-3.100000 11.100000 1.562390 +-3.100000 11.200000 1.357336 +-3.100000 11.300000 1.172283 +-3.100000 11.400000 1.007230 +-3.100000 11.500000 0.862176 +-3.100000 11.600000 0.737123 +-3.100000 11.700000 0.632070 +-3.100000 11.800000 0.547017 +-3.100000 11.900000 0.481963 +-3.100000 12.000000 0.436910 +-3.100000 12.100000 0.411857 +-3.100000 12.200000 0.406803 +-3.100000 12.300000 0.421750 +-3.100000 12.400000 0.456697 +-3.100000 12.500000 0.511644 +-3.100000 12.600000 0.586590 +-3.100000 12.700000 0.681537 +-3.100000 12.800000 0.796484 +-3.100000 12.900000 0.931431 +-3.100000 13.000000 1.086377 +-3.100000 13.100000 1.261324 +-3.100000 13.200000 1.456271 +-3.100000 13.300000 1.671217 +-3.100000 13.400000 1.906164 +-3.100000 13.500000 2.161111 +-3.100000 13.600000 2.436058 +-3.100000 13.700000 2.731004 +-3.100000 13.800000 3.045951 +-3.100000 13.900000 3.380898 +-3.100000 14.000000 3.735845 +-3.100000 14.100000 4.110791 +-3.100000 14.200000 4.505738 +-3.100000 14.300000 4.920685 +-3.100000 14.400000 5.355631 +-3.100000 14.500000 5.810578 +-3.100000 14.600000 6.285525 +-3.100000 14.700000 6.780472 +-3.100000 14.800000 7.295418 +-3.100000 14.900000 7.830365 +-3.100000 15.000000 8.385312 + +-3.000000 -5.000000 287.366412 +-3.000000 -4.900000 283.988951 +-3.000000 -4.800000 280.631489 +-3.000000 -4.700000 277.294027 +-3.000000 -4.600000 273.976565 +-3.000000 -4.500000 270.679104 +-3.000000 -4.400000 267.401642 +-3.000000 -4.300000 264.144180 +-3.000000 -4.200000 260.906718 +-3.000000 -4.100000 257.689256 +-3.000000 -4.000000 254.491795 +-3.000000 -3.900000 251.314333 +-3.000000 -3.800000 248.156871 +-3.000000 -3.700000 245.019409 +-3.000000 -3.600000 241.901948 +-3.000000 -3.500000 238.804486 +-3.000000 -3.400000 235.727024 +-3.000000 -3.300000 232.669562 +-3.000000 -3.200000 229.632101 +-3.000000 -3.100000 226.614639 +-3.000000 -3.000000 223.617177 +-3.000000 -2.900000 220.639715 +-3.000000 -2.800000 217.682253 +-3.000000 -2.700000 214.744792 +-3.000000 -2.600000 211.827330 +-3.000000 -2.500000 208.929868 +-3.000000 -2.400000 206.052406 +-3.000000 -2.300000 203.194945 +-3.000000 -2.200000 200.357483 +-3.000000 -2.100000 197.540021 +-3.000000 -2.000000 194.742559 +-3.000000 -1.900000 191.965097 +-3.000000 -1.800000 189.207636 +-3.000000 -1.700000 186.470174 +-3.000000 -1.600000 183.752712 +-3.000000 -1.500000 181.055250 +-3.000000 -1.400000 178.377789 +-3.000000 -1.300000 175.720327 +-3.000000 -1.200000 173.082865 +-3.000000 -1.100000 170.465403 +-3.000000 -1.000000 167.867941 +-3.000000 -0.900000 165.290480 +-3.000000 -0.800000 162.733018 +-3.000000 -0.700000 160.195556 +-3.000000 -0.600000 157.678094 +-3.000000 -0.500000 155.180633 +-3.000000 -0.400000 152.703171 +-3.000000 -0.300000 150.245709 +-3.000000 -0.200000 147.808247 +-3.000000 -0.100000 145.390785 +-3.000000 -0.000000 142.993324 +-3.000000 0.100000 140.615862 +-3.000000 0.200000 138.258400 +-3.000000 0.300000 135.920938 +-3.000000 0.400000 133.603477 +-3.000000 0.500000 131.306015 +-3.000000 0.600000 129.028553 +-3.000000 0.700000 126.771091 +-3.000000 0.800000 124.533630 +-3.000000 0.900000 122.316168 +-3.000000 1.000000 120.118706 +-3.000000 1.100000 117.941244 +-3.000000 1.200000 115.783782 +-3.000000 1.300000 113.646321 +-3.000000 1.400000 111.528859 +-3.000000 1.500000 109.431397 +-3.000000 1.600000 107.353935 +-3.000000 1.700000 105.296474 +-3.000000 1.800000 103.259012 +-3.000000 1.900000 101.241550 +-3.000000 2.000000 99.244088 +-3.000000 2.100000 97.266626 +-3.000000 2.200000 95.309165 +-3.000000 2.300000 93.371703 +-3.000000 2.400000 91.454241 +-3.000000 2.500000 89.556779 +-3.000000 2.600000 87.679318 +-3.000000 2.700000 85.821856 +-3.000000 2.800000 83.984394 +-3.000000 2.900000 82.166932 +-3.000000 3.000000 80.369470 +-3.000000 3.100000 78.592009 +-3.000000 3.200000 76.834547 +-3.000000 3.300000 75.097085 +-3.000000 3.400000 73.379623 +-3.000000 3.500000 71.682162 +-3.000000 3.600000 70.004700 +-3.000000 3.700000 68.347238 +-3.000000 3.800000 66.709776 +-3.000000 3.900000 65.092314 +-3.000000 4.000000 63.494853 +-3.000000 4.100000 61.917391 +-3.000000 4.200000 60.359929 +-3.000000 4.300000 58.822467 +-3.000000 4.400000 57.305006 +-3.000000 4.500000 55.807544 +-3.000000 4.600000 54.330082 +-3.000000 4.700000 52.872620 +-3.000000 4.800000 51.435159 +-3.000000 4.900000 50.017697 +-3.000000 5.000000 48.620235 +-3.000000 5.100000 47.242773 +-3.000000 5.200000 45.885311 +-3.000000 5.300000 44.547850 +-3.000000 5.400000 43.230388 +-3.000000 5.500000 41.932926 +-3.000000 5.600000 40.655464 +-3.000000 5.700000 39.398003 +-3.000000 5.800000 38.160541 +-3.000000 5.900000 36.943079 +-3.000000 6.000000 35.745617 +-3.000000 6.100000 34.568155 +-3.000000 6.200000 33.410694 +-3.000000 6.300000 32.273232 +-3.000000 6.400000 31.155770 +-3.000000 6.500000 30.058308 +-3.000000 6.600000 28.980847 +-3.000000 6.700000 27.923385 +-3.000000 6.800000 26.885923 +-3.000000 6.900000 25.868461 +-3.000000 7.000000 24.870999 +-3.000000 7.100000 23.893538 +-3.000000 7.200000 22.936076 +-3.000000 7.300000 21.998614 +-3.000000 7.400000 21.081152 +-3.000000 7.500000 20.183691 +-3.000000 7.600000 19.306229 +-3.000000 7.700000 18.448767 +-3.000000 7.800000 17.611305 +-3.000000 7.900000 16.793843 +-3.000000 8.000000 15.996382 +-3.000000 8.100000 15.218920 +-3.000000 8.200000 14.461458 +-3.000000 8.300000 13.723996 +-3.000000 8.400000 13.006535 +-3.000000 8.500000 12.309073 +-3.000000 8.600000 11.631611 +-3.000000 8.700000 10.974149 +-3.000000 8.800000 10.336688 +-3.000000 8.900000 9.719226 +-3.000000 9.000000 9.121764 +-3.000000 9.100000 8.544302 +-3.000000 9.200000 7.986840 +-3.000000 9.300000 7.449379 +-3.000000 9.400000 6.931917 +-3.000000 9.500000 6.434455 +-3.000000 9.600000 5.956993 +-3.000000 9.700000 5.499532 +-3.000000 9.800000 5.062070 +-3.000000 9.900000 4.644608 +-3.000000 10.000000 4.247146 +-3.000000 10.100000 3.869684 +-3.000000 10.200000 3.512223 +-3.000000 10.300000 3.174761 +-3.000000 10.400000 2.857299 +-3.000000 10.500000 2.559837 +-3.000000 10.600000 2.282376 +-3.000000 10.700000 2.024914 +-3.000000 10.800000 1.787452 +-3.000000 10.900000 1.569990 +-3.000000 11.000000 1.372528 +-3.000000 11.100000 1.195067 +-3.000000 11.200000 1.037605 +-3.000000 11.300000 0.900143 +-3.000000 11.400000 0.782681 +-3.000000 11.500000 0.685220 +-3.000000 11.600000 0.607758 +-3.000000 11.700000 0.550296 +-3.000000 11.800000 0.512834 +-3.000000 11.900000 0.495372 +-3.000000 12.000000 0.497911 +-3.000000 12.100000 0.520449 +-3.000000 12.200000 0.562987 +-3.000000 12.300000 0.625525 +-3.000000 12.400000 0.708064 +-3.000000 12.500000 0.810602 +-3.000000 12.600000 0.933140 +-3.000000 12.700000 1.075678 +-3.000000 12.800000 1.238217 +-3.000000 12.900000 1.420755 +-3.000000 13.000000 1.623293 +-3.000000 13.100000 1.845831 +-3.000000 13.200000 2.088369 +-3.000000 13.300000 2.350908 +-3.000000 13.400000 2.633446 +-3.000000 13.500000 2.935984 +-3.000000 13.600000 3.258522 +-3.000000 13.700000 3.601061 +-3.000000 13.800000 3.963599 +-3.000000 13.900000 4.346137 +-3.000000 14.000000 4.748675 +-3.000000 14.100000 5.171213 +-3.000000 14.200000 5.613752 +-3.000000 14.300000 6.076290 +-3.000000 14.400000 6.558828 +-3.000000 14.500000 7.061366 +-3.000000 14.600000 7.583905 +-3.000000 14.700000 8.126443 +-3.000000 14.800000 8.688981 +-3.000000 14.900000 9.271519 +-3.000000 15.000000 9.874057 + +-2.900000 -5.000000 279.631385 +-2.900000 -4.900000 276.300998 +-2.900000 -4.800000 272.990611 +-2.900000 -4.700000 269.700224 +-2.900000 -4.600000 266.429837 +-2.900000 -4.500000 263.179450 +-2.900000 -4.400000 259.949063 +-2.900000 -4.300000 256.738676 +-2.900000 -4.200000 253.548289 +-2.900000 -4.100000 250.377902 +-2.900000 -4.000000 247.227515 +-2.900000 -3.900000 244.097128 +-2.900000 -3.800000 240.986741 +-2.900000 -3.700000 237.896354 +-2.900000 -3.600000 234.825967 +-2.900000 -3.500000 231.775580 +-2.900000 -3.400000 228.745193 +-2.900000 -3.300000 225.734806 +-2.900000 -3.200000 222.744419 +-2.900000 -3.100000 219.774032 +-2.900000 -3.000000 216.823645 +-2.900000 -2.900000 213.893258 +-2.900000 -2.800000 210.982871 +-2.900000 -2.700000 208.092484 +-2.900000 -2.600000 205.222097 +-2.900000 -2.500000 202.371710 +-2.900000 -2.400000 199.541323 +-2.900000 -2.300000 196.730936 +-2.900000 -2.200000 193.940549 +-2.900000 -2.100000 191.170162 +-2.900000 -2.000000 188.419775 +-2.900000 -1.900000 185.689388 +-2.900000 -1.800000 182.979001 +-2.900000 -1.700000 180.288614 +-2.900000 -1.600000 177.618227 +-2.900000 -1.500000 174.967840 +-2.900000 -1.400000 172.337453 +-2.900000 -1.300000 169.727066 +-2.900000 -1.200000 167.136679 +-2.900000 -1.100000 164.566292 +-2.900000 -1.000000 162.015905 +-2.900000 -0.900000 159.485518 +-2.900000 -0.800000 156.975131 +-2.900000 -0.700000 154.484744 +-2.900000 -0.600000 152.014357 +-2.900000 -0.500000 149.563970 +-2.900000 -0.400000 147.133583 +-2.900000 -0.300000 144.723196 +-2.900000 -0.200000 142.332809 +-2.900000 -0.100000 139.962422 +-2.900000 -0.000000 137.612035 +-2.900000 0.100000 135.281648 +-2.900000 0.200000 132.971261 +-2.900000 0.300000 130.680874 +-2.900000 0.400000 128.410487 +-2.900000 0.500000 126.160100 +-2.900000 0.600000 123.929713 +-2.900000 0.700000 121.719326 +-2.900000 0.800000 119.528939 +-2.900000 0.900000 117.358552 +-2.900000 1.000000 115.208165 +-2.900000 1.100000 113.077778 +-2.900000 1.200000 110.967391 +-2.900000 1.300000 108.877004 +-2.900000 1.400000 106.806617 +-2.900000 1.500000 104.756230 +-2.900000 1.600000 102.725843 +-2.900000 1.700000 100.715456 +-2.900000 1.800000 98.725068 +-2.900000 1.900000 96.754681 +-2.900000 2.000000 94.804294 +-2.900000 2.100000 92.873907 +-2.900000 2.200000 90.963520 +-2.900000 2.300000 89.073133 +-2.900000 2.400000 87.202746 +-2.900000 2.500000 85.352359 +-2.900000 2.600000 83.521972 +-2.900000 2.700000 81.711585 +-2.900000 2.800000 79.921198 +-2.900000 2.900000 78.150811 +-2.900000 3.000000 76.400424 +-2.900000 3.100000 74.670037 +-2.900000 3.200000 72.959650 +-2.900000 3.300000 71.269263 +-2.900000 3.400000 69.598876 +-2.900000 3.500000 67.948489 +-2.900000 3.600000 66.318102 +-2.900000 3.700000 64.707715 +-2.900000 3.800000 63.117328 +-2.900000 3.900000 61.546941 +-2.900000 4.000000 59.996554 +-2.900000 4.100000 58.466167 +-2.900000 4.200000 56.955780 +-2.900000 4.300000 55.465393 +-2.900000 4.400000 53.995006 +-2.900000 4.500000 52.544619 +-2.900000 4.600000 51.114232 +-2.900000 4.700000 49.703845 +-2.900000 4.800000 48.313458 +-2.900000 4.900000 46.943071 +-2.900000 5.000000 45.592684 +-2.900000 5.100000 44.262297 +-2.900000 5.200000 42.951910 +-2.900000 5.300000 41.661523 +-2.900000 5.400000 40.391136 +-2.900000 5.500000 39.140749 +-2.900000 5.600000 37.910362 +-2.900000 5.700000 36.699975 +-2.900000 5.800000 35.509588 +-2.900000 5.900000 34.339201 +-2.900000 6.000000 33.188814 +-2.900000 6.100000 32.058427 +-2.900000 6.200000 30.948040 +-2.900000 6.300000 29.857653 +-2.900000 6.400000 28.787266 +-2.900000 6.500000 27.736879 +-2.900000 6.600000 26.706492 +-2.900000 6.700000 25.696105 +-2.900000 6.800000 24.705718 +-2.900000 6.900000 23.735331 +-2.900000 7.000000 22.784944 +-2.900000 7.100000 21.854557 +-2.900000 7.200000 20.944170 +-2.900000 7.300000 20.053783 +-2.900000 7.400000 19.183396 +-2.900000 7.500000 18.333009 +-2.900000 7.600000 17.502622 +-2.900000 7.700000 16.692235 +-2.900000 7.800000 15.901848 +-2.900000 7.900000 15.131461 +-2.900000 8.000000 14.381074 +-2.900000 8.100000 13.650687 +-2.900000 8.200000 12.940300 +-2.900000 8.300000 12.249913 +-2.900000 8.400000 11.579526 +-2.900000 8.500000 10.929139 +-2.900000 8.600000 10.298752 +-2.900000 8.700000 9.688365 +-2.900000 8.800000 9.097977 +-2.900000 8.900000 8.527590 +-2.900000 9.000000 7.977203 +-2.900000 9.100000 7.446816 +-2.900000 9.200000 6.936429 +-2.900000 9.300000 6.446042 +-2.900000 9.400000 5.975655 +-2.900000 9.500000 5.525268 +-2.900000 9.600000 5.094881 +-2.900000 9.700000 4.684494 +-2.900000 9.800000 4.294107 +-2.900000 9.900000 3.923720 +-2.900000 10.000000 3.573333 +-2.900000 10.100000 3.242946 +-2.900000 10.200000 2.932559 +-2.900000 10.300000 2.642172 +-2.900000 10.400000 2.371785 +-2.900000 10.500000 2.121398 +-2.900000 10.600000 1.891011 +-2.900000 10.700000 1.680624 +-2.900000 10.800000 1.490237 +-2.900000 10.900000 1.319850 +-2.900000 11.000000 1.169463 +-2.900000 11.100000 1.039076 +-2.900000 11.200000 0.928689 +-2.900000 11.300000 0.838302 +-2.900000 11.400000 0.767915 +-2.900000 11.500000 0.717528 +-2.900000 11.600000 0.687141 +-2.900000 11.700000 0.676754 +-2.900000 11.800000 0.686367 +-2.900000 11.900000 0.715980 +-2.900000 12.000000 0.765593 +-2.900000 12.100000 0.835206 +-2.900000 12.200000 0.924819 +-2.900000 12.300000 1.034432 +-2.900000 12.400000 1.164045 +-2.900000 12.500000 1.313658 +-2.900000 12.600000 1.483271 +-2.900000 12.700000 1.672884 +-2.900000 12.800000 1.882497 +-2.900000 12.900000 2.112110 +-2.900000 13.000000 2.361723 +-2.900000 13.100000 2.631336 +-2.900000 13.200000 2.920949 +-2.900000 13.300000 3.230562 +-2.900000 13.400000 3.560175 +-2.900000 13.500000 3.909788 +-2.900000 13.600000 4.279401 +-2.900000 13.700000 4.669014 +-2.900000 13.800000 5.078627 +-2.900000 13.900000 5.508240 +-2.900000 14.000000 5.957853 +-2.900000 14.100000 6.427466 +-2.900000 14.200000 6.917079 +-2.900000 14.300000 7.426692 +-2.900000 14.400000 7.956305 +-2.900000 14.500000 8.505918 +-2.900000 14.600000 9.075531 +-2.900000 14.700000 9.665144 +-2.900000 14.800000 10.274757 +-2.900000 14.900000 10.904370 +-2.900000 15.000000 11.553983 + +-2.800000 -5.000000 272.185411 +-2.800000 -4.900000 268.901582 +-2.800000 -4.800000 265.637753 +-2.800000 -4.700000 262.393924 +-2.800000 -4.600000 259.170095 +-2.800000 -4.500000 255.966266 +-2.800000 -4.400000 252.782437 +-2.800000 -4.300000 249.618608 +-2.800000 -4.200000 246.474779 +-2.800000 -4.100000 243.350950 +-2.800000 -4.000000 240.247121 +-2.800000 -3.900000 237.163292 +-2.800000 -3.800000 234.099463 +-2.800000 -3.700000 231.055634 +-2.800000 -3.600000 228.031805 +-2.800000 -3.500000 225.027976 +-2.800000 -3.400000 222.044147 +-2.800000 -3.300000 219.080318 +-2.800000 -3.200000 216.136489 +-2.800000 -3.100000 213.212660 +-2.800000 -3.000000 210.308831 +-2.800000 -2.900000 207.425002 +-2.800000 -2.800000 204.561173 +-2.800000 -2.700000 201.717344 +-2.800000 -2.600000 198.893515 +-2.800000 -2.500000 196.089686 +-2.800000 -2.400000 193.305857 +-2.800000 -2.300000 190.542028 +-2.800000 -2.200000 187.798199 +-2.800000 -2.100000 185.074370 +-2.800000 -2.000000 182.370541 +-2.800000 -1.900000 179.686712 +-2.800000 -1.800000 177.022883 +-2.800000 -1.700000 174.379054 +-2.800000 -1.600000 171.755225 +-2.800000 -1.500000 169.151396 +-2.800000 -1.400000 166.567567 +-2.800000 -1.300000 164.003738 +-2.800000 -1.200000 161.459909 +-2.800000 -1.100000 158.936080 +-2.800000 -1.000000 156.432251 +-2.800000 -0.900000 153.948422 +-2.800000 -0.800000 151.484593 +-2.800000 -0.700000 149.040764 +-2.800000 -0.600000 146.616935 +-2.800000 -0.500000 144.213106 +-2.800000 -0.400000 141.829277 +-2.800000 -0.300000 139.465448 +-2.800000 -0.200000 137.121619 +-2.800000 -0.100000 134.797790 +-2.800000 -0.000000 132.493961 +-2.800000 0.100000 130.210132 +-2.800000 0.200000 127.946303 +-2.800000 0.300000 125.702474 +-2.800000 0.400000 123.478645 +-2.800000 0.500000 121.274816 +-2.800000 0.600000 119.090987 +-2.800000 0.700000 116.927158 +-2.800000 0.800000 114.783329 +-2.800000 0.900000 112.659500 +-2.800000 1.000000 110.555671 +-2.800000 1.100000 108.471842 +-2.800000 1.200000 106.408013 +-2.800000 1.300000 104.364184 +-2.800000 1.400000 102.340355 +-2.800000 1.500000 100.336526 +-2.800000 1.600000 98.352697 +-2.800000 1.700000 96.388868 +-2.800000 1.800000 94.445039 +-2.800000 1.900000 92.521210 +-2.800000 2.000000 90.617381 +-2.800000 2.100000 88.733552 +-2.800000 2.200000 86.869723 +-2.800000 2.300000 85.025894 +-2.800000 2.400000 83.202065 +-2.800000 2.500000 81.398236 +-2.800000 2.600000 79.614407 +-2.800000 2.700000 77.850578 +-2.800000 2.800000 76.106749 +-2.800000 2.900000 74.382920 +-2.800000 3.000000 72.679091 +-2.800000 3.100000 70.995262 +-2.800000 3.200000 69.331433 +-2.800000 3.300000 67.687604 +-2.800000 3.400000 66.063775 +-2.800000 3.500000 64.459946 +-2.800000 3.600000 62.876117 +-2.800000 3.700000 61.312288 +-2.800000 3.800000 59.768459 +-2.800000 3.900000 58.244630 +-2.800000 4.000000 56.740801 +-2.800000 4.100000 55.256972 +-2.800000 4.200000 53.793143 +-2.800000 4.300000 52.349314 +-2.800000 4.400000 50.925485 +-2.800000 4.500000 49.521656 +-2.800000 4.600000 48.137827 +-2.800000 4.700000 46.773998 +-2.800000 4.800000 45.430169 +-2.800000 4.900000 44.106340 +-2.800000 5.000000 42.802511 +-2.800000 5.100000 41.518682 +-2.800000 5.200000 40.254853 +-2.800000 5.300000 39.011024 +-2.800000 5.400000 37.787195 +-2.800000 5.500000 36.583366 +-2.800000 5.600000 35.399537 +-2.800000 5.700000 34.235709 +-2.800000 5.800000 33.091880 +-2.800000 5.900000 31.968051 +-2.800000 6.000000 30.864222 +-2.800000 6.100000 29.780393 +-2.800000 6.200000 28.716564 +-2.800000 6.300000 27.672735 +-2.800000 6.400000 26.648906 +-2.800000 6.500000 25.645077 +-2.800000 6.600000 24.661248 +-2.800000 6.700000 23.697419 +-2.800000 6.800000 22.753590 +-2.800000 6.900000 21.829761 +-2.800000 7.000000 20.925932 +-2.800000 7.100000 20.042103 +-2.800000 7.200000 19.178274 +-2.800000 7.300000 18.334445 +-2.800000 7.400000 17.510616 +-2.800000 7.500000 16.706787 +-2.800000 7.600000 15.922958 +-2.800000 7.700000 15.159129 +-2.800000 7.800000 14.415300 +-2.800000 7.900000 13.691471 +-2.800000 8.000000 12.987642 +-2.800000 8.100000 12.303813 +-2.800000 8.200000 11.639984 +-2.800000 8.300000 10.996155 +-2.800000 8.400000 10.372326 +-2.800000 8.500000 9.768497 +-2.800000 8.600000 9.184668 +-2.800000 8.700000 8.620839 +-2.800000 8.800000 8.077010 +-2.800000 8.900000 7.553181 +-2.800000 9.000000 7.049352 +-2.800000 9.100000 6.565523 +-2.800000 9.200000 6.101694 +-2.800000 9.300000 5.657865 +-2.800000 9.400000 5.234036 +-2.800000 9.500000 4.830207 +-2.800000 9.600000 4.446378 +-2.800000 9.700000 4.082549 +-2.800000 9.800000 3.738720 +-2.800000 9.900000 3.414891 +-2.800000 10.000000 3.111062 +-2.800000 10.100000 2.827233 +-2.800000 10.200000 2.563404 +-2.800000 10.300000 2.319575 +-2.800000 10.400000 2.095746 +-2.800000 10.500000 1.891917 +-2.800000 10.600000 1.708088 +-2.800000 10.700000 1.544259 +-2.800000 10.800000 1.400430 +-2.800000 10.900000 1.276601 +-2.800000 11.000000 1.172772 +-2.800000 11.100000 1.088943 +-2.800000 11.200000 1.025114 +-2.800000 11.300000 0.981285 +-2.800000 11.400000 0.957456 +-2.800000 11.500000 0.953627 +-2.800000 11.600000 0.969798 +-2.800000 11.700000 1.005969 +-2.800000 11.800000 1.062140 +-2.800000 11.900000 1.138311 +-2.800000 12.000000 1.234482 +-2.800000 12.100000 1.350653 +-2.800000 12.200000 1.486824 +-2.800000 12.300000 1.642995 +-2.800000 12.400000 1.819166 +-2.800000 12.500000 2.015337 +-2.800000 12.600000 2.231508 +-2.800000 12.700000 2.467679 +-2.800000 12.800000 2.723850 +-2.800000 12.900000 3.000021 +-2.800000 13.000000 3.296192 +-2.800000 13.100000 3.612363 +-2.800000 13.200000 3.948534 +-2.800000 13.300000 4.304705 +-2.800000 13.400000 4.680876 +-2.800000 13.500000 5.077047 +-2.800000 13.600000 5.493218 +-2.800000 13.700000 5.929389 +-2.800000 13.800000 6.385560 +-2.800000 13.900000 6.861731 +-2.800000 14.000000 7.357902 +-2.800000 14.100000 7.874073 +-2.800000 14.200000 8.410244 +-2.800000 14.300000 8.966415 +-2.800000 14.400000 9.542586 +-2.800000 14.500000 10.138757 +-2.800000 14.600000 10.754928 +-2.800000 14.700000 11.391099 +-2.800000 14.800000 12.047270 +-2.800000 14.900000 12.723441 +-2.800000 15.000000 13.419612 + +-2.700000 -5.000000 265.022122 +-2.700000 -4.900000 261.784334 +-2.700000 -4.800000 258.566547 +-2.700000 -4.700000 255.368759 +-2.700000 -4.600000 252.190971 +-2.700000 -4.500000 249.033184 +-2.700000 -4.400000 245.895396 +-2.700000 -4.300000 242.777608 +-2.700000 -4.200000 239.679821 +-2.700000 -4.100000 236.602033 +-2.700000 -4.000000 233.544245 +-2.700000 -3.900000 230.506457 +-2.700000 -3.800000 227.488670 +-2.700000 -3.700000 224.490882 +-2.700000 -3.600000 221.513094 +-2.700000 -3.500000 218.555307 +-2.700000 -3.400000 215.617519 +-2.700000 -3.300000 212.699731 +-2.700000 -3.200000 209.801943 +-2.700000 -3.100000 206.924156 +-2.700000 -3.000000 204.066368 +-2.700000 -2.900000 201.228580 +-2.700000 -2.800000 198.410793 +-2.700000 -2.700000 195.613005 +-2.700000 -2.600000 192.835217 +-2.700000 -2.500000 190.077430 +-2.700000 -2.400000 187.339642 +-2.700000 -2.300000 184.621854 +-2.700000 -2.200000 181.924066 +-2.700000 -2.100000 179.246279 +-2.700000 -2.000000 176.588491 +-2.700000 -1.900000 173.950703 +-2.700000 -1.800000 171.332916 +-2.700000 -1.700000 168.735128 +-2.700000 -1.600000 166.157340 +-2.700000 -1.500000 163.599552 +-2.700000 -1.400000 161.061765 +-2.700000 -1.300000 158.543977 +-2.700000 -1.200000 156.046189 +-2.700000 -1.100000 153.568402 +-2.700000 -1.000000 151.110614 +-2.700000 -0.900000 148.672826 +-2.700000 -0.800000 146.255039 +-2.700000 -0.700000 143.857251 +-2.700000 -0.600000 141.479463 +-2.700000 -0.500000 139.121675 +-2.700000 -0.400000 136.783888 +-2.700000 -0.300000 134.466100 +-2.700000 -0.200000 132.168312 +-2.700000 -0.100000 129.890525 +-2.700000 -0.000000 127.632737 +-2.700000 0.100000 125.394949 +-2.700000 0.200000 123.177161 +-2.700000 0.300000 120.979374 +-2.700000 0.400000 118.801586 +-2.700000 0.500000 116.643798 +-2.700000 0.600000 114.506011 +-2.700000 0.700000 112.388223 +-2.700000 0.800000 110.290435 +-2.700000 0.900000 108.212647 +-2.700000 1.000000 106.154860 +-2.700000 1.100000 104.117072 +-2.700000 1.200000 102.099284 +-2.700000 1.300000 100.101497 +-2.700000 1.400000 98.123709 +-2.700000 1.500000 96.165921 +-2.700000 1.600000 94.228134 +-2.700000 1.700000 92.310346 +-2.700000 1.800000 90.412558 +-2.700000 1.900000 88.534770 +-2.700000 2.000000 86.676983 +-2.700000 2.100000 84.839195 +-2.700000 2.200000 83.021407 +-2.700000 2.300000 81.223620 +-2.700000 2.400000 79.445832 +-2.700000 2.500000 77.688044 +-2.700000 2.600000 75.950256 +-2.700000 2.700000 74.232469 +-2.700000 2.800000 72.534681 +-2.700000 2.900000 70.856893 +-2.700000 3.000000 69.199106 +-2.700000 3.100000 67.561318 +-2.700000 3.200000 65.943530 +-2.700000 3.300000 64.345743 +-2.700000 3.400000 62.767955 +-2.700000 3.500000 61.210167 +-2.700000 3.600000 59.672379 +-2.700000 3.700000 58.154592 +-2.700000 3.800000 56.656804 +-2.700000 3.900000 55.179016 +-2.700000 4.000000 53.721229 +-2.700000 4.100000 52.283441 +-2.700000 4.200000 50.865653 +-2.700000 4.300000 49.467865 +-2.700000 4.400000 48.090078 +-2.700000 4.500000 46.732290 +-2.700000 4.600000 45.394502 +-2.700000 4.700000 44.076715 +-2.700000 4.800000 42.778927 +-2.700000 4.900000 41.501139 +-2.700000 5.000000 40.243352 +-2.700000 5.100000 39.005564 +-2.700000 5.200000 37.787776 +-2.700000 5.300000 36.589988 +-2.700000 5.400000 35.412201 +-2.700000 5.500000 34.254413 +-2.700000 5.600000 33.116625 +-2.700000 5.700000 31.998838 +-2.700000 5.800000 30.901050 +-2.700000 5.900000 29.823262 +-2.700000 6.000000 28.765474 +-2.700000 6.100000 27.727687 +-2.700000 6.200000 26.709899 +-2.700000 6.300000 25.712111 +-2.700000 6.400000 24.734324 +-2.700000 6.500000 23.776536 +-2.700000 6.600000 22.838748 +-2.700000 6.700000 21.920960 +-2.700000 6.800000 21.023173 +-2.700000 6.900000 20.145385 +-2.700000 7.000000 19.287597 +-2.700000 7.100000 18.449810 +-2.700000 7.200000 17.632022 +-2.700000 7.300000 16.834234 +-2.700000 7.400000 16.056447 +-2.700000 7.500000 15.298659 +-2.700000 7.600000 14.560871 +-2.700000 7.700000 13.843083 +-2.700000 7.800000 13.145296 +-2.700000 7.900000 12.467508 +-2.700000 8.000000 11.809720 +-2.700000 8.100000 11.171933 +-2.700000 8.200000 10.554145 +-2.700000 8.300000 9.956357 +-2.700000 8.400000 9.378569 +-2.700000 8.500000 8.820782 +-2.700000 8.600000 8.282994 +-2.700000 8.700000 7.765206 +-2.700000 8.800000 7.267419 +-2.700000 8.900000 6.789631 +-2.700000 9.000000 6.331843 +-2.700000 9.100000 5.894056 +-2.700000 9.200000 5.476268 +-2.700000 9.300000 5.078480 +-2.700000 9.400000 4.700692 +-2.700000 9.500000 4.342905 +-2.700000 9.600000 4.005117 +-2.700000 9.700000 3.687329 +-2.700000 9.800000 3.389542 +-2.700000 9.900000 3.111754 +-2.700000 10.000000 2.853966 +-2.700000 10.100000 2.616178 +-2.700000 10.200000 2.398391 +-2.700000 10.300000 2.200603 +-2.700000 10.400000 2.022815 +-2.700000 10.500000 1.865028 +-2.700000 10.600000 1.727240 +-2.700000 10.700000 1.609452 +-2.700000 10.800000 1.511664 +-2.700000 10.900000 1.433877 +-2.700000 11.000000 1.376089 +-2.700000 11.100000 1.338301 +-2.700000 11.200000 1.320514 +-2.700000 11.300000 1.322726 +-2.700000 11.400000 1.344938 +-2.700000 11.500000 1.387151 +-2.700000 11.600000 1.449363 +-2.700000 11.700000 1.531575 +-2.700000 11.800000 1.633787 +-2.700000 11.900000 1.756000 +-2.700000 12.000000 1.898212 +-2.700000 12.100000 2.060424 +-2.700000 12.200000 2.242637 +-2.700000 12.300000 2.444849 +-2.700000 12.400000 2.667061 +-2.700000 12.500000 2.909273 +-2.700000 12.600000 3.171486 +-2.700000 12.700000 3.453698 +-2.700000 12.800000 3.755910 +-2.700000 12.900000 4.078123 +-2.700000 13.000000 4.420335 +-2.700000 13.100000 4.782547 +-2.700000 13.200000 5.164760 +-2.700000 13.300000 5.566972 +-2.700000 13.400000 5.989184 +-2.700000 13.500000 6.431396 +-2.700000 13.600000 6.893609 +-2.700000 13.700000 7.375821 +-2.700000 13.800000 7.878033 +-2.700000 13.900000 8.400246 +-2.700000 14.000000 8.942458 +-2.700000 14.100000 9.504670 +-2.700000 14.200000 10.086882 +-2.700000 14.300000 10.689095 +-2.700000 14.400000 11.311307 +-2.700000 14.500000 11.953519 +-2.700000 14.600000 12.615732 +-2.700000 14.700000 13.297944 +-2.700000 14.800000 14.000156 +-2.700000 14.900000 14.722369 +-2.700000 15.000000 15.464581 + +-2.600000 -5.000000 258.134291 +-2.600000 -4.900000 254.942028 +-2.600000 -4.800000 251.769765 +-2.600000 -4.700000 248.617502 +-2.600000 -4.600000 245.485239 +-2.600000 -4.500000 242.372976 +-2.600000 -4.400000 239.280712 +-2.600000 -4.300000 236.208449 +-2.600000 -4.200000 233.156186 +-2.600000 -4.100000 230.123923 +-2.600000 -4.000000 227.111660 +-2.600000 -3.900000 224.119397 +-2.600000 -3.800000 221.147133 +-2.600000 -3.700000 218.194870 +-2.600000 -3.600000 215.262607 +-2.600000 -3.500000 212.350344 +-2.600000 -3.400000 209.458081 +-2.600000 -3.300000 206.585818 +-2.600000 -3.200000 203.733554 +-2.600000 -3.100000 200.901291 +-2.600000 -3.000000 198.089028 +-2.600000 -2.900000 195.296765 +-2.600000 -2.800000 192.524502 +-2.600000 -2.700000 189.772239 +-2.600000 -2.600000 187.039976 +-2.600000 -2.500000 184.327712 +-2.600000 -2.400000 181.635449 +-2.600000 -2.300000 178.963186 +-2.600000 -2.200000 176.310923 +-2.600000 -2.100000 173.678660 +-2.600000 -2.000000 171.066397 +-2.600000 -1.900000 168.474133 +-2.600000 -1.800000 165.901870 +-2.600000 -1.700000 163.349607 +-2.600000 -1.600000 160.817344 +-2.600000 -1.500000 158.305081 +-2.600000 -1.400000 155.812818 +-2.600000 -1.300000 153.340554 +-2.600000 -1.200000 150.888291 +-2.600000 -1.100000 148.456028 +-2.600000 -1.000000 146.043765 +-2.600000 -0.900000 143.651502 +-2.600000 -0.800000 141.279239 +-2.600000 -0.700000 138.926975 +-2.600000 -0.600000 136.594712 +-2.600000 -0.500000 134.282449 +-2.600000 -0.400000 131.990186 +-2.600000 -0.300000 129.717923 +-2.600000 -0.200000 127.465660 +-2.600000 -0.100000 125.233397 +-2.600000 -0.000000 123.021133 +-2.600000 0.100000 120.828870 +-2.600000 0.200000 118.656607 +-2.600000 0.300000 116.504344 +-2.600000 0.400000 114.372081 +-2.600000 0.500000 112.259818 +-2.600000 0.600000 110.167554 +-2.600000 0.700000 108.095291 +-2.600000 0.800000 106.043028 +-2.600000 0.900000 104.010765 +-2.600000 1.000000 101.998502 +-2.600000 1.100000 100.006239 +-2.600000 1.200000 98.033975 +-2.600000 1.300000 96.081712 +-2.600000 1.400000 94.149449 +-2.600000 1.500000 92.237186 +-2.600000 1.600000 90.344923 +-2.600000 1.700000 88.472660 +-2.600000 1.800000 86.620396 +-2.600000 1.900000 84.788133 +-2.600000 2.000000 82.975870 +-2.600000 2.100000 81.183607 +-2.600000 2.200000 79.411344 +-2.600000 2.300000 77.659081 +-2.600000 2.400000 75.926818 +-2.600000 2.500000 74.214554 +-2.600000 2.600000 72.522291 +-2.600000 2.700000 70.850028 +-2.600000 2.800000 69.197765 +-2.600000 2.900000 67.565502 +-2.600000 3.000000 65.953239 +-2.600000 3.100000 64.360975 +-2.600000 3.200000 62.788712 +-2.600000 3.300000 61.236449 +-2.600000 3.400000 59.704186 +-2.600000 3.500000 58.191923 +-2.600000 3.600000 56.699660 +-2.600000 3.700000 55.227396 +-2.600000 3.800000 53.775133 +-2.600000 3.900000 52.342870 +-2.600000 4.000000 50.930607 +-2.600000 4.100000 49.538344 +-2.600000 4.200000 48.166081 +-2.600000 4.300000 46.813817 +-2.600000 4.400000 45.481554 +-2.600000 4.500000 44.169291 +-2.600000 4.600000 42.877028 +-2.600000 4.700000 41.604765 +-2.600000 4.800000 40.352502 +-2.600000 4.900000 39.120239 +-2.600000 5.000000 37.907975 +-2.600000 5.100000 36.715712 +-2.600000 5.200000 35.543449 +-2.600000 5.300000 34.391186 +-2.600000 5.400000 33.258923 +-2.600000 5.500000 32.146660 +-2.600000 5.600000 31.054396 +-2.600000 5.700000 29.982133 +-2.600000 5.800000 28.929870 +-2.600000 5.900000 27.897607 +-2.600000 6.000000 26.885344 +-2.600000 6.100000 25.893081 +-2.600000 6.200000 24.920817 +-2.600000 6.300000 23.968554 +-2.600000 6.400000 23.036291 +-2.600000 6.500000 22.124028 +-2.600000 6.600000 21.231765 +-2.600000 6.700000 20.359502 +-2.600000 6.800000 19.507238 +-2.600000 6.900000 18.674975 +-2.600000 7.000000 17.862712 +-2.600000 7.100000 17.070449 +-2.600000 7.200000 16.298186 +-2.600000 7.300000 15.545923 +-2.600000 7.400000 14.813659 +-2.600000 7.500000 14.101396 +-2.600000 7.600000 13.409133 +-2.600000 7.700000 12.736870 +-2.600000 7.800000 12.084607 +-2.600000 7.900000 11.452344 +-2.600000 8.000000 10.840081 +-2.600000 8.100000 10.247817 +-2.600000 8.200000 9.675554 +-2.600000 8.300000 9.123291 +-2.600000 8.400000 8.591028 +-2.600000 8.500000 8.078765 +-2.600000 8.600000 7.586502 +-2.600000 8.700000 7.114238 +-2.600000 8.800000 6.661975 +-2.600000 8.900000 6.229712 +-2.600000 9.000000 5.817449 +-2.600000 9.100000 5.425186 +-2.600000 9.200000 5.052923 +-2.600000 9.300000 4.700659 +-2.600000 9.400000 4.368396 +-2.600000 9.500000 4.056133 +-2.600000 9.600000 3.763870 +-2.600000 9.700000 3.491607 +-2.600000 9.800000 3.239344 +-2.600000 9.900000 3.007080 +-2.600000 10.000000 2.794817 +-2.600000 10.100000 2.602554 +-2.600000 10.200000 2.430291 +-2.600000 10.300000 2.278028 +-2.600000 10.400000 2.145765 +-2.600000 10.500000 2.033502 +-2.600000 10.600000 1.941238 +-2.600000 10.700000 1.868975 +-2.600000 10.800000 1.816712 +-2.600000 10.900000 1.784449 +-2.600000 11.000000 1.772186 +-2.600000 11.100000 1.779923 +-2.600000 11.200000 1.807659 +-2.600000 11.300000 1.855396 +-2.600000 11.400000 1.923133 +-2.600000 11.500000 2.010870 +-2.600000 11.600000 2.118607 +-2.600000 11.700000 2.246344 +-2.600000 11.800000 2.394080 +-2.600000 11.900000 2.561817 +-2.600000 12.000000 2.749554 +-2.600000 12.100000 2.957291 +-2.600000 12.200000 3.185028 +-2.600000 12.300000 3.432765 +-2.600000 12.400000 3.700501 +-2.600000 12.500000 3.988238 +-2.600000 12.600000 4.295975 +-2.600000 12.700000 4.623712 +-2.600000 12.800000 4.971449 +-2.600000 12.900000 5.339186 +-2.600000 13.000000 5.726923 +-2.600000 13.100000 6.134659 +-2.600000 13.200000 6.562396 +-2.600000 13.300000 7.010133 +-2.600000 13.400000 7.477870 +-2.600000 13.500000 7.965607 +-2.600000 13.600000 8.473344 +-2.600000 13.700000 9.001080 +-2.600000 13.800000 9.548817 +-2.600000 13.900000 10.116554 +-2.600000 14.000000 10.704291 +-2.600000 14.100000 11.312028 +-2.600000 14.200000 11.939765 +-2.600000 14.300000 12.587501 +-2.600000 14.400000 13.255238 +-2.600000 14.500000 13.942975 +-2.600000 14.600000 14.650712 +-2.600000 14.700000 15.378449 +-2.600000 14.800000 16.126186 +-2.600000 14.900000 16.893922 +-2.600000 15.000000 17.681659 + +-2.500000 -5.000000 251.513863 +-2.500000 -4.900000 248.366607 +-2.500000 -4.800000 245.239352 +-2.500000 -4.700000 242.132097 +-2.500000 -4.600000 239.044841 +-2.500000 -4.500000 235.977586 +-2.500000 -4.400000 232.930331 +-2.500000 -4.300000 229.903075 +-2.500000 -4.200000 226.895820 +-2.500000 -4.100000 223.908565 +-2.500000 -4.000000 220.941309 +-2.500000 -3.900000 217.994054 +-2.500000 -3.800000 215.066798 +-2.500000 -3.700000 212.159543 +-2.500000 -3.600000 209.272288 +-2.500000 -3.500000 206.405032 +-2.500000 -3.400000 203.557777 +-2.500000 -3.300000 200.730522 +-2.500000 -3.200000 197.923266 +-2.500000 -3.100000 195.136011 +-2.500000 -3.000000 192.368756 +-2.500000 -2.900000 189.621500 +-2.500000 -2.800000 186.894245 +-2.500000 -2.700000 184.186990 +-2.500000 -2.600000 181.499734 +-2.500000 -2.500000 178.832479 +-2.500000 -2.400000 176.185224 +-2.500000 -2.300000 173.557968 +-2.500000 -2.200000 170.950713 +-2.500000 -2.100000 168.363457 +-2.500000 -2.000000 165.796202 +-2.500000 -1.900000 163.248947 +-2.500000 -1.800000 160.721691 +-2.500000 -1.700000 158.214436 +-2.500000 -1.600000 155.727181 +-2.500000 -1.500000 153.259925 +-2.500000 -1.400000 150.812670 +-2.500000 -1.300000 148.385415 +-2.500000 -1.200000 145.978159 +-2.500000 -1.100000 143.590904 +-2.500000 -1.000000 141.223649 +-2.500000 -0.900000 138.876393 +-2.500000 -0.800000 136.549138 +-2.500000 -0.700000 134.241883 +-2.500000 -0.600000 131.954627 +-2.500000 -0.500000 129.687372 +-2.500000 -0.400000 127.440116 +-2.500000 -0.300000 125.212861 +-2.500000 -0.200000 123.005606 +-2.500000 -0.100000 120.818350 +-2.500000 -0.000000 118.651095 +-2.500000 0.100000 116.503840 +-2.500000 0.200000 114.376584 +-2.500000 0.300000 112.269329 +-2.500000 0.400000 110.182074 +-2.500000 0.500000 108.114818 +-2.500000 0.600000 106.067563 +-2.500000 0.700000 104.040308 +-2.500000 0.800000 102.033052 +-2.500000 0.900000 100.045797 +-2.500000 1.000000 98.078542 +-2.500000 1.100000 96.131286 +-2.500000 1.200000 94.204031 +-2.500000 1.300000 92.296776 +-2.500000 1.400000 90.409520 +-2.500000 1.500000 88.542265 +-2.500000 1.600000 86.695009 +-2.500000 1.700000 84.867754 +-2.500000 1.800000 83.060499 +-2.500000 1.900000 81.273243 +-2.500000 2.000000 79.505988 +-2.500000 2.100000 77.758733 +-2.500000 2.200000 76.031477 +-2.500000 2.300000 74.324222 +-2.500000 2.400000 72.636967 +-2.500000 2.500000 70.969711 +-2.500000 2.600000 69.322456 +-2.500000 2.700000 67.695201 +-2.500000 2.800000 66.087945 +-2.500000 2.900000 64.500690 +-2.500000 3.000000 62.933435 +-2.500000 3.100000 61.386179 +-2.500000 3.200000 59.858924 +-2.500000 3.300000 58.351668 +-2.500000 3.400000 56.864413 +-2.500000 3.500000 55.397158 +-2.500000 3.600000 53.949902 +-2.500000 3.700000 52.522647 +-2.500000 3.800000 51.115392 +-2.500000 3.900000 49.728136 +-2.500000 4.000000 48.360881 +-2.500000 4.100000 47.013626 +-2.500000 4.200000 45.686370 +-2.500000 4.300000 44.379115 +-2.500000 4.400000 43.091860 +-2.500000 4.500000 41.824604 +-2.500000 4.600000 40.577349 +-2.500000 4.700000 39.350094 +-2.500000 4.800000 38.142838 +-2.500000 4.900000 36.955583 +-2.500000 5.000000 35.788327 +-2.500000 5.100000 34.641072 +-2.500000 5.200000 33.513817 +-2.500000 5.300000 32.406561 +-2.500000 5.400000 31.319306 +-2.500000 5.500000 30.252051 +-2.500000 5.600000 29.204795 +-2.500000 5.700000 28.177540 +-2.500000 5.800000 27.170285 +-2.500000 5.900000 26.183029 +-2.500000 6.000000 25.215774 +-2.500000 6.100000 24.268519 +-2.500000 6.200000 23.341263 +-2.500000 6.300000 22.434008 +-2.500000 6.400000 21.546753 +-2.500000 6.500000 20.679497 +-2.500000 6.600000 19.832242 +-2.500000 6.700000 19.004987 +-2.500000 6.800000 18.197731 +-2.500000 6.900000 17.410476 +-2.500000 7.000000 16.643220 +-2.500000 7.100000 15.895965 +-2.500000 7.200000 15.168710 +-2.500000 7.300000 14.461454 +-2.500000 7.400000 13.774199 +-2.500000 7.500000 13.106944 +-2.500000 7.600000 12.459688 +-2.500000 7.700000 11.832433 +-2.500000 7.800000 11.225178 +-2.500000 7.900000 10.637922 +-2.500000 8.000000 10.070667 +-2.500000 8.100000 9.523412 +-2.500000 8.200000 8.996156 +-2.500000 8.300000 8.488901 +-2.500000 8.400000 8.001646 +-2.500000 8.500000 7.534390 +-2.500000 8.600000 7.087135 +-2.500000 8.700000 6.659879 +-2.500000 8.800000 6.252624 +-2.500000 8.900000 5.865369 +-2.500000 9.000000 5.498113 +-2.500000 9.100000 5.150858 +-2.500000 9.200000 4.823603 +-2.500000 9.300000 4.516347 +-2.500000 9.400000 4.229092 +-2.500000 9.500000 3.961837 +-2.500000 9.600000 3.714581 +-2.500000 9.700000 3.487326 +-2.500000 9.800000 3.280071 +-2.500000 9.900000 3.092815 +-2.500000 10.000000 2.925560 +-2.500000 10.100000 2.778305 +-2.500000 10.200000 2.651049 +-2.500000 10.300000 2.543794 +-2.500000 10.400000 2.456538 +-2.500000 10.500000 2.389283 +-2.500000 10.600000 2.342028 +-2.500000 10.700000 2.314772 +-2.500000 10.800000 2.307517 +-2.500000 10.900000 2.320262 +-2.500000 11.000000 2.353006 +-2.500000 11.100000 2.405751 +-2.500000 11.200000 2.478496 +-2.500000 11.300000 2.571240 +-2.500000 11.400000 2.683985 +-2.500000 11.500000 2.816730 +-2.500000 11.600000 2.969474 +-2.500000 11.700000 3.142219 +-2.500000 11.800000 3.334964 +-2.500000 11.900000 3.547708 +-2.500000 12.000000 3.780453 +-2.500000 12.100000 4.033198 +-2.500000 12.200000 4.305942 +-2.500000 12.300000 4.598687 +-2.500000 12.400000 4.911431 +-2.500000 12.500000 5.244176 +-2.500000 12.600000 5.596921 +-2.500000 12.700000 5.969665 +-2.500000 12.800000 6.362410 +-2.500000 12.900000 6.775155 +-2.500000 13.000000 7.207899 +-2.500000 13.100000 7.660644 +-2.500000 13.200000 8.133389 +-2.500000 13.300000 8.626133 +-2.500000 13.400000 9.138878 +-2.500000 13.500000 9.671623 +-2.500000 13.600000 10.224367 +-2.500000 13.700000 10.797112 +-2.500000 13.800000 11.389857 +-2.500000 13.900000 12.002601 +-2.500000 14.000000 12.635346 +-2.500000 14.100000 13.288090 +-2.500000 14.200000 13.960835 +-2.500000 14.300000 14.653580 +-2.500000 14.400000 15.366324 +-2.500000 14.500000 16.099069 +-2.500000 14.600000 16.851814 +-2.500000 14.700000 17.624558 +-2.500000 14.800000 18.417303 +-2.500000 14.900000 19.230048 +-2.500000 15.000000 20.062792 + +-2.400000 -5.000000 245.151999 +-2.400000 -4.900000 242.049235 +-2.400000 -4.800000 238.966471 +-2.400000 -4.700000 235.903706 +-2.400000 -4.600000 232.860942 +-2.400000 -4.500000 229.838178 +-2.400000 -4.400000 226.835414 +-2.400000 -4.300000 223.852649 +-2.400000 -4.200000 220.889885 +-2.400000 -4.100000 217.947121 +-2.400000 -4.000000 215.024356 +-2.400000 -3.900000 212.121592 +-2.400000 -3.800000 209.238828 +-2.400000 -3.700000 206.376064 +-2.400000 -3.600000 203.533299 +-2.400000 -3.500000 200.710535 +-2.400000 -3.400000 197.907771 +-2.400000 -3.300000 195.125006 +-2.400000 -3.200000 192.362242 +-2.400000 -3.100000 189.619478 +-2.400000 -3.000000 186.896714 +-2.400000 -2.900000 184.193949 +-2.400000 -2.800000 181.511185 +-2.400000 -2.700000 178.848421 +-2.400000 -2.600000 176.205657 +-2.400000 -2.500000 173.582892 +-2.400000 -2.400000 170.980128 +-2.400000 -2.300000 168.397364 +-2.400000 -2.200000 165.834599 +-2.400000 -2.100000 163.291835 +-2.400000 -2.000000 160.769071 +-2.400000 -1.900000 158.266307 +-2.400000 -1.800000 155.783542 +-2.400000 -1.700000 153.320778 +-2.400000 -1.600000 150.878014 +-2.400000 -1.500000 148.455249 +-2.400000 -1.400000 146.052485 +-2.400000 -1.300000 143.669721 +-2.400000 -1.200000 141.306957 +-2.400000 -1.100000 138.964192 +-2.400000 -1.000000 136.641428 +-2.400000 -0.900000 134.338664 +-2.400000 -0.800000 132.055899 +-2.400000 -0.700000 129.793135 +-2.400000 -0.600000 127.550371 +-2.400000 -0.500000 125.327607 +-2.400000 -0.400000 123.124842 +-2.400000 -0.300000 120.942078 +-2.400000 -0.200000 118.779314 +-2.400000 -0.100000 116.636549 +-2.400000 -0.000000 114.513785 +-2.400000 0.100000 112.411021 +-2.400000 0.200000 110.328257 +-2.400000 0.300000 108.265492 +-2.400000 0.400000 106.222728 +-2.400000 0.500000 104.199964 +-2.400000 0.600000 102.197200 +-2.400000 0.700000 100.214435 +-2.400000 0.800000 98.251671 +-2.400000 0.900000 96.308907 +-2.400000 1.000000 94.386142 +-2.400000 1.100000 92.483378 +-2.400000 1.200000 90.600614 +-2.400000 1.300000 88.737850 +-2.400000 1.400000 86.895085 +-2.400000 1.500000 85.072321 +-2.400000 1.600000 83.269557 +-2.400000 1.700000 81.486792 +-2.400000 1.800000 79.724028 +-2.400000 1.900000 77.981264 +-2.400000 2.000000 76.258500 +-2.400000 2.100000 74.555735 +-2.400000 2.200000 72.872971 +-2.400000 2.300000 71.210207 +-2.400000 2.400000 69.567442 +-2.400000 2.500000 67.944678 +-2.400000 2.600000 66.341914 +-2.400000 2.700000 64.759150 +-2.400000 2.800000 63.196385 +-2.400000 2.900000 61.653621 +-2.400000 3.000000 60.130857 +-2.400000 3.100000 58.628092 +-2.400000 3.200000 57.145328 +-2.400000 3.300000 55.682564 +-2.400000 3.400000 54.239800 +-2.400000 3.500000 52.817035 +-2.400000 3.600000 51.414271 +-2.400000 3.700000 50.031507 +-2.400000 3.800000 48.668743 +-2.400000 3.900000 47.325978 +-2.400000 4.000000 46.003214 +-2.400000 4.100000 44.700450 +-2.400000 4.200000 43.417685 +-2.400000 4.300000 42.154921 +-2.400000 4.400000 40.912157 +-2.400000 4.500000 39.689393 +-2.400000 4.600000 38.486628 +-2.400000 4.700000 37.303864 +-2.400000 4.800000 36.141100 +-2.400000 4.900000 34.998335 +-2.400000 5.000000 33.875571 +-2.400000 5.100000 32.772807 +-2.400000 5.200000 31.690043 +-2.400000 5.300000 30.627278 +-2.400000 5.400000 29.584514 +-2.400000 5.500000 28.561750 +-2.400000 5.600000 27.558985 +-2.400000 5.700000 26.576221 +-2.400000 5.800000 25.613457 +-2.400000 5.900000 24.670693 +-2.400000 6.000000 23.747928 +-2.400000 6.100000 22.845164 +-2.400000 6.200000 21.962400 +-2.400000 6.300000 21.099635 +-2.400000 6.400000 20.256871 +-2.400000 6.500000 19.434107 +-2.400000 6.600000 18.631343 +-2.400000 6.700000 17.848578 +-2.400000 6.800000 17.085814 +-2.400000 6.900000 16.343050 +-2.400000 7.000000 15.620286 +-2.400000 7.100000 14.917521 +-2.400000 7.200000 14.234757 +-2.400000 7.300000 13.571993 +-2.400000 7.400000 12.929228 +-2.400000 7.500000 12.306464 +-2.400000 7.600000 11.703700 +-2.400000 7.700000 11.120936 +-2.400000 7.800000 10.558171 +-2.400000 7.900000 10.015407 +-2.400000 8.000000 9.492643 +-2.400000 8.100000 8.989878 +-2.400000 8.200000 8.507114 +-2.400000 8.300000 8.044350 +-2.400000 8.400000 7.601586 +-2.400000 8.500000 7.178821 +-2.400000 8.600000 6.776057 +-2.400000 8.700000 6.393293 +-2.400000 8.800000 6.030528 +-2.400000 8.900000 5.687764 +-2.400000 9.000000 5.365000 +-2.400000 9.100000 5.062236 +-2.400000 9.200000 4.779471 +-2.400000 9.300000 4.516707 +-2.400000 9.400000 4.273943 +-2.400000 9.500000 4.051178 +-2.400000 9.600000 3.848414 +-2.400000 9.700000 3.665650 +-2.400000 9.800000 3.502886 +-2.400000 9.900000 3.360121 +-2.400000 10.000000 3.237357 +-2.400000 10.100000 3.134593 +-2.400000 10.200000 3.051828 +-2.400000 10.300000 2.989064 +-2.400000 10.400000 2.946300 +-2.400000 10.500000 2.923536 +-2.400000 10.600000 2.920771 +-2.400000 10.700000 2.938007 +-2.400000 10.800000 2.975243 +-2.400000 10.900000 3.032479 +-2.400000 11.000000 3.109714 +-2.400000 11.100000 3.206950 +-2.400000 11.200000 3.324186 +-2.400000 11.300000 3.461421 +-2.400000 11.400000 3.618657 +-2.400000 11.500000 3.795893 +-2.400000 11.600000 3.993129 +-2.400000 11.700000 4.210364 +-2.400000 11.800000 4.447600 +-2.400000 11.900000 4.704836 +-2.400000 12.000000 4.982071 +-2.400000 12.100000 5.279307 +-2.400000 12.200000 5.596543 +-2.400000 12.300000 5.933779 +-2.400000 12.400000 6.291014 +-2.400000 12.500000 6.668250 +-2.400000 12.600000 7.065486 +-2.400000 12.700000 7.482721 +-2.400000 12.800000 7.919957 +-2.400000 12.900000 8.377193 +-2.400000 13.000000 8.854429 +-2.400000 13.100000 9.351664 +-2.400000 13.200000 9.868900 +-2.400000 13.300000 10.406136 +-2.400000 13.400000 10.963371 +-2.400000 13.500000 11.540607 +-2.400000 13.600000 12.137843 +-2.400000 13.700000 12.755079 +-2.400000 13.800000 13.392314 +-2.400000 13.900000 14.049550 +-2.400000 14.000000 14.726786 +-2.400000 14.100000 15.424022 +-2.400000 14.200000 16.141257 +-2.400000 14.300000 16.878493 +-2.400000 14.400000 17.635729 +-2.400000 14.500000 18.412964 +-2.400000 14.600000 19.210200 +-2.400000 14.700000 20.027436 +-2.400000 14.800000 20.864672 +-2.400000 14.900000 21.721907 +-2.400000 15.000000 22.599143 + +-2.300000 -5.000000 239.039136 +-2.300000 -4.900000 235.980346 +-2.300000 -4.800000 232.941556 +-2.300000 -4.700000 229.922767 +-2.300000 -4.600000 226.923977 +-2.300000 -4.500000 223.945187 +-2.300000 -4.400000 220.986397 +-2.300000 -4.300000 218.047607 +-2.300000 -4.200000 215.128817 +-2.300000 -4.100000 212.230027 +-2.300000 -4.000000 209.351237 +-2.300000 -3.900000 206.492447 +-2.300000 -3.800000 203.653657 +-2.300000 -3.700000 200.834867 +-2.300000 -3.600000 198.036077 +-2.300000 -3.500000 195.257287 +-2.300000 -3.400000 192.498497 +-2.300000 -3.300000 189.759707 +-2.300000 -3.200000 187.040917 +-2.300000 -3.100000 184.342127 +-2.300000 -3.000000 181.663337 +-2.300000 -2.900000 179.004547 +-2.300000 -2.800000 176.365757 +-2.300000 -2.700000 173.746968 +-2.300000 -2.600000 171.148178 +-2.300000 -2.500000 168.569388 +-2.300000 -2.400000 166.010598 +-2.300000 -2.300000 163.471808 +-2.300000 -2.200000 160.953018 +-2.300000 -2.100000 158.454228 +-2.300000 -2.000000 155.975438 +-2.300000 -1.900000 153.516648 +-2.300000 -1.800000 151.077858 +-2.300000 -1.700000 148.659068 +-2.300000 -1.600000 146.260278 +-2.300000 -1.500000 143.881488 +-2.300000 -1.400000 141.522698 +-2.300000 -1.300000 139.183908 +-2.300000 -1.200000 136.865118 +-2.300000 -1.100000 134.566328 +-2.300000 -1.000000 132.287538 +-2.300000 -0.900000 130.028748 +-2.300000 -0.800000 127.789959 +-2.300000 -0.700000 125.571169 +-2.300000 -0.600000 123.372379 +-2.300000 -0.500000 121.193589 +-2.300000 -0.400000 119.034799 +-2.300000 -0.300000 116.896009 +-2.300000 -0.200000 114.777219 +-2.300000 -0.100000 112.678429 +-2.300000 -0.000000 110.599639 +-2.300000 0.100000 108.540849 +-2.300000 0.200000 106.502059 +-2.300000 0.300000 104.483269 +-2.300000 0.400000 102.484479 +-2.300000 0.500000 100.505689 +-2.300000 0.600000 98.546899 +-2.300000 0.700000 96.608109 +-2.300000 0.800000 94.689319 +-2.300000 0.900000 92.790529 +-2.300000 1.000000 90.911739 +-2.300000 1.100000 89.052949 +-2.300000 1.200000 87.214160 +-2.300000 1.300000 85.395370 +-2.300000 1.400000 83.596580 +-2.300000 1.500000 81.817790 +-2.300000 1.600000 80.059000 +-2.300000 1.700000 78.320210 +-2.300000 1.800000 76.601420 +-2.300000 1.900000 74.902630 +-2.300000 2.000000 73.223840 +-2.300000 2.100000 71.565050 +-2.300000 2.200000 69.926260 +-2.300000 2.300000 68.307470 +-2.300000 2.400000 66.708680 +-2.300000 2.500000 65.129890 +-2.300000 2.600000 63.571100 +-2.300000 2.700000 62.032310 +-2.300000 2.800000 60.513520 +-2.300000 2.900000 59.014730 +-2.300000 3.000000 57.535940 +-2.300000 3.100000 56.077150 +-2.300000 3.200000 54.638361 +-2.300000 3.300000 53.219571 +-2.300000 3.400000 51.820781 +-2.300000 3.500000 50.441991 +-2.300000 3.600000 49.083201 +-2.300000 3.700000 47.744411 +-2.300000 3.800000 46.425621 +-2.300000 3.900000 45.126831 +-2.300000 4.000000 43.848041 +-2.300000 4.100000 42.589251 +-2.300000 4.200000 41.350461 +-2.300000 4.300000 40.131671 +-2.300000 4.400000 38.932881 +-2.300000 4.500000 37.754091 +-2.300000 4.600000 36.595301 +-2.300000 4.700000 35.456511 +-2.300000 4.800000 34.337721 +-2.300000 4.900000 33.238931 +-2.300000 5.000000 32.160141 +-2.300000 5.100000 31.101352 +-2.300000 5.200000 30.062562 +-2.300000 5.300000 29.043772 +-2.300000 5.400000 28.044982 +-2.300000 5.500000 27.066192 +-2.300000 5.600000 26.107402 +-2.300000 5.700000 25.168612 +-2.300000 5.800000 24.249822 +-2.300000 5.900000 23.351032 +-2.300000 6.000000 22.472242 +-2.300000 6.100000 21.613452 +-2.300000 6.200000 20.774662 +-2.300000 6.300000 19.955872 +-2.300000 6.400000 19.157082 +-2.300000 6.500000 18.378292 +-2.300000 6.600000 17.619502 +-2.300000 6.700000 16.880712 +-2.300000 6.800000 16.161922 +-2.300000 6.900000 15.463132 +-2.300000 7.000000 14.784342 +-2.300000 7.100000 14.125553 +-2.300000 7.200000 13.486763 +-2.300000 7.300000 12.867973 +-2.300000 7.400000 12.269183 +-2.300000 7.500000 11.690393 +-2.300000 7.600000 11.131603 +-2.300000 7.700000 10.592813 +-2.300000 7.800000 10.074023 +-2.300000 7.900000 9.575233 +-2.300000 8.000000 9.096443 +-2.300000 8.100000 8.637653 +-2.300000 8.200000 8.198863 +-2.300000 8.300000 7.780073 +-2.300000 8.400000 7.381283 +-2.300000 8.500000 7.002493 +-2.300000 8.600000 6.643703 +-2.300000 8.700000 6.304913 +-2.300000 8.800000 5.986123 +-2.300000 8.900000 5.687333 +-2.300000 9.000000 5.408544 +-2.300000 9.100000 5.149754 +-2.300000 9.200000 4.910964 +-2.300000 9.300000 4.692174 +-2.300000 9.400000 4.493384 +-2.300000 9.500000 4.314594 +-2.300000 9.600000 4.155804 +-2.300000 9.700000 4.017014 +-2.300000 9.800000 3.898224 +-2.300000 9.900000 3.799434 +-2.300000 10.000000 3.720644 +-2.300000 10.100000 3.661854 +-2.300000 10.200000 3.623064 +-2.300000 10.300000 3.604274 +-2.300000 10.400000 3.605484 +-2.300000 10.500000 3.626694 +-2.300000 10.600000 3.667904 +-2.300000 10.700000 3.729114 +-2.300000 10.800000 3.810324 +-2.300000 10.900000 3.911534 +-2.300000 11.000000 4.032745 +-2.300000 11.100000 4.173955 +-2.300000 11.200000 4.335165 +-2.300000 11.300000 4.516375 +-2.300000 11.400000 4.717585 +-2.300000 11.500000 4.938795 +-2.300000 11.600000 5.180005 +-2.300000 11.700000 5.441215 +-2.300000 11.800000 5.722425 +-2.300000 11.900000 6.023635 +-2.300000 12.000000 6.344845 +-2.300000 12.100000 6.686055 +-2.300000 12.200000 7.047265 +-2.300000 12.300000 7.428475 +-2.300000 12.400000 7.829685 +-2.300000 12.500000 8.250895 +-2.300000 12.600000 8.692105 +-2.300000 12.700000 9.153315 +-2.300000 12.800000 9.634525 +-2.300000 12.900000 10.135736 +-2.300000 13.000000 10.656946 +-2.300000 13.100000 11.198156 +-2.300000 13.200000 11.759366 +-2.300000 13.300000 12.340576 +-2.300000 13.400000 12.941786 +-2.300000 13.500000 13.562996 +-2.300000 13.600000 14.204206 +-2.300000 13.700000 14.865416 +-2.300000 13.800000 15.546626 +-2.300000 13.900000 16.247836 +-2.300000 14.000000 16.969046 +-2.300000 14.100000 17.710256 +-2.300000 14.200000 18.471466 +-2.300000 14.300000 19.252676 +-2.300000 14.400000 20.053886 +-2.300000 14.500000 20.875096 +-2.300000 14.600000 21.716306 +-2.300000 14.700000 22.577516 +-2.300000 14.800000 23.458726 +-2.300000 14.900000 24.359937 +-2.300000 15.000000 25.281147 + +-2.200000 -5.000000 233.165042 +-2.200000 -4.900000 230.149710 +-2.200000 -4.800000 227.154378 +-2.200000 -4.700000 224.179045 +-2.200000 -4.600000 221.223713 +-2.200000 -4.500000 218.288381 +-2.200000 -4.400000 215.373048 +-2.200000 -4.300000 212.477716 +-2.200000 -4.200000 209.602384 +-2.200000 -4.100000 206.747051 +-2.200000 -4.000000 203.911719 +-2.200000 -3.900000 201.096386 +-2.200000 -3.800000 198.301054 +-2.200000 -3.700000 195.525722 +-2.200000 -3.600000 192.770389 +-2.200000 -3.500000 190.035057 +-2.200000 -3.400000 187.319725 +-2.200000 -3.300000 184.624392 +-2.200000 -3.200000 181.949060 +-2.200000 -3.100000 179.293728 +-2.200000 -3.000000 176.658395 +-2.200000 -2.900000 174.043063 +-2.200000 -2.800000 171.447731 +-2.200000 -2.700000 168.872398 +-2.200000 -2.600000 166.317066 +-2.200000 -2.500000 163.781733 +-2.200000 -2.400000 161.266401 +-2.200000 -2.300000 158.771069 +-2.200000 -2.200000 156.295736 +-2.200000 -2.100000 153.840404 +-2.200000 -2.000000 151.405072 +-2.200000 -1.900000 148.989739 +-2.200000 -1.800000 146.594407 +-2.200000 -1.700000 144.219075 +-2.200000 -1.600000 141.863742 +-2.200000 -1.500000 139.528410 +-2.200000 -1.400000 137.213078 +-2.200000 -1.300000 134.917745 +-2.200000 -1.200000 132.642413 +-2.200000 -1.100000 130.387081 +-2.200000 -1.000000 128.151748 +-2.200000 -0.900000 125.936416 +-2.200000 -0.800000 123.741083 +-2.200000 -0.700000 121.565751 +-2.200000 -0.600000 119.410419 +-2.200000 -0.500000 117.275086 +-2.200000 -0.400000 115.159754 +-2.200000 -0.300000 113.064422 +-2.200000 -0.200000 110.989089 +-2.200000 -0.100000 108.933757 +-2.200000 -0.000000 106.898425 +-2.200000 0.100000 104.883092 +-2.200000 0.200000 102.887760 +-2.200000 0.300000 100.912428 +-2.200000 0.400000 98.957095 +-2.200000 0.500000 97.021763 +-2.200000 0.600000 95.106431 +-2.200000 0.700000 93.211098 +-2.200000 0.800000 91.335766 +-2.200000 0.900000 89.480433 +-2.200000 1.000000 87.645101 +-2.200000 1.100000 85.829769 +-2.200000 1.200000 84.034436 +-2.200000 1.300000 82.259104 +-2.200000 1.400000 80.503772 +-2.200000 1.500000 78.768439 +-2.200000 1.600000 77.053107 +-2.200000 1.700000 75.357775 +-2.200000 1.800000 73.682442 +-2.200000 1.900000 72.027110 +-2.200000 2.000000 70.391778 +-2.200000 2.100000 68.776445 +-2.200000 2.200000 67.181113 +-2.200000 2.300000 65.605780 +-2.200000 2.400000 64.050448 +-2.200000 2.500000 62.515116 +-2.200000 2.600000 60.999783 +-2.200000 2.700000 59.504451 +-2.200000 2.800000 58.029119 +-2.200000 2.900000 56.573786 +-2.200000 3.000000 55.138454 +-2.200000 3.100000 53.723122 +-2.200000 3.200000 52.327789 +-2.200000 3.300000 50.952457 +-2.200000 3.400000 49.597125 +-2.200000 3.500000 48.261792 +-2.200000 3.600000 46.946460 +-2.200000 3.700000 45.651128 +-2.200000 3.800000 44.375795 +-2.200000 3.900000 43.120463 +-2.200000 4.000000 41.885130 +-2.200000 4.100000 40.669798 +-2.200000 4.200000 39.474466 +-2.200000 4.300000 38.299133 +-2.200000 4.400000 37.143801 +-2.200000 4.500000 36.008469 +-2.200000 4.600000 34.893136 +-2.200000 4.700000 33.797804 +-2.200000 4.800000 32.722472 +-2.200000 4.900000 31.667139 +-2.200000 5.000000 30.631807 +-2.200000 5.100000 29.616475 +-2.200000 5.200000 28.621142 +-2.200000 5.300000 27.645810 +-2.200000 5.400000 26.690477 +-2.200000 5.500000 25.755145 +-2.200000 5.600000 24.839813 +-2.200000 5.700000 23.944480 +-2.200000 5.800000 23.069148 +-2.200000 5.900000 22.213816 +-2.200000 6.000000 21.378483 +-2.200000 6.100000 20.563151 +-2.200000 6.200000 19.767819 +-2.200000 6.300000 18.992486 +-2.200000 6.400000 18.237154 +-2.200000 6.500000 17.501822 +-2.200000 6.600000 16.786489 +-2.200000 6.700000 16.091157 +-2.200000 6.800000 15.415825 +-2.200000 6.900000 14.760492 +-2.200000 7.000000 14.125160 +-2.200000 7.100000 13.509827 +-2.200000 7.200000 12.914495 +-2.200000 7.300000 12.339163 +-2.200000 7.400000 11.783830 +-2.200000 7.500000 11.248498 +-2.200000 7.600000 10.733166 +-2.200000 7.700000 10.237833 +-2.200000 7.800000 9.762501 +-2.200000 7.900000 9.307169 +-2.200000 8.000000 8.871836 +-2.200000 8.100000 8.456504 +-2.200000 8.200000 8.061172 +-2.200000 8.300000 7.685839 +-2.200000 8.400000 7.330507 +-2.200000 8.500000 6.995175 +-2.200000 8.600000 6.679842 +-2.200000 8.700000 6.384510 +-2.200000 8.800000 6.109177 +-2.200000 8.900000 5.853845 +-2.200000 9.000000 5.618513 +-2.200000 9.100000 5.403180 +-2.200000 9.200000 5.207848 +-2.200000 9.300000 5.032516 +-2.200000 9.400000 4.877183 +-2.200000 9.500000 4.741851 +-2.200000 9.600000 4.626519 +-2.200000 9.700000 4.531186 +-2.200000 9.800000 4.455854 +-2.200000 9.900000 4.400522 +-2.200000 10.000000 4.365189 +-2.200000 10.100000 4.349857 +-2.200000 10.200000 4.354524 +-2.200000 10.300000 4.379192 +-2.200000 10.400000 4.423860 +-2.200000 10.500000 4.488527 +-2.200000 10.600000 4.573195 +-2.200000 10.700000 4.677863 +-2.200000 10.800000 4.802530 +-2.200000 10.900000 4.947198 +-2.200000 11.000000 5.111866 +-2.200000 11.100000 5.296533 +-2.200000 11.200000 5.501201 +-2.200000 11.300000 5.725869 +-2.200000 11.400000 5.970536 +-2.200000 11.500000 6.235204 +-2.200000 11.600000 6.519872 +-2.200000 11.700000 6.824539 +-2.200000 11.800000 7.149207 +-2.200000 11.900000 7.493874 +-2.200000 12.000000 7.858542 +-2.200000 12.100000 8.243210 +-2.200000 12.200000 8.647877 +-2.200000 12.300000 9.072545 +-2.200000 12.400000 9.517213 +-2.200000 12.500000 9.981880 +-2.200000 12.600000 10.466548 +-2.200000 12.700000 10.971216 +-2.200000 12.800000 11.495883 +-2.200000 12.900000 12.040551 +-2.200000 13.000000 12.605219 +-2.200000 13.100000 13.189886 +-2.200000 13.200000 13.794554 +-2.200000 13.300000 14.419221 +-2.200000 13.400000 15.063889 +-2.200000 13.500000 15.728557 +-2.200000 13.600000 16.413224 +-2.200000 13.700000 17.117892 +-2.200000 13.800000 17.842560 +-2.200000 13.900000 18.587227 +-2.200000 14.000000 19.351895 +-2.200000 14.100000 20.136563 +-2.200000 14.200000 20.941230 +-2.200000 14.300000 21.765898 +-2.200000 14.400000 22.610566 +-2.200000 14.500000 23.475233 +-2.200000 14.600000 24.359901 +-2.200000 14.700000 25.264569 +-2.200000 14.800000 26.189236 +-2.200000 14.900000 27.133904 +-2.200000 15.000000 28.098571 + +-2.100000 -5.000000 227.518887 +-2.100000 -4.900000 224.546496 +-2.100000 -4.800000 221.594104 +-2.100000 -4.700000 218.661713 +-2.100000 -4.600000 215.749321 +-2.100000 -4.500000 212.856930 +-2.100000 -4.400000 209.984538 +-2.100000 -4.300000 207.132147 +-2.100000 -4.200000 204.299755 +-2.100000 -4.100000 201.487364 +-2.100000 -4.000000 198.694972 +-2.100000 -3.900000 195.922581 +-2.100000 -3.800000 193.170189 +-2.100000 -3.700000 190.437798 +-2.100000 -3.600000 187.725406 +-2.100000 -3.500000 185.033015 +-2.100000 -3.400000 182.360623 +-2.100000 -3.300000 179.708232 +-2.100000 -3.200000 177.075840 +-2.100000 -3.100000 174.463449 +-2.100000 -3.000000 171.871057 +-2.100000 -2.900000 169.298666 +-2.100000 -2.800000 166.746274 +-2.100000 -2.700000 164.213883 +-2.100000 -2.600000 161.701491 +-2.100000 -2.500000 159.209100 +-2.100000 -2.400000 156.736708 +-2.100000 -2.300000 154.284317 +-2.100000 -2.200000 151.851925 +-2.100000 -2.100000 149.439534 +-2.100000 -2.000000 147.047142 +-2.100000 -1.900000 144.674751 +-2.100000 -1.800000 142.322359 +-2.100000 -1.700000 139.989968 +-2.100000 -1.600000 137.677576 +-2.100000 -1.500000 135.385185 +-2.100000 -1.400000 133.112793 +-2.100000 -1.300000 130.860402 +-2.100000 -1.200000 128.628010 +-2.100000 -1.100000 126.415619 +-2.100000 -1.000000 124.223227 +-2.100000 -0.900000 122.050836 +-2.100000 -0.800000 119.898444 +-2.100000 -0.700000 117.766053 +-2.100000 -0.600000 115.653661 +-2.100000 -0.500000 113.561270 +-2.100000 -0.400000 111.488878 +-2.100000 -0.300000 109.436487 +-2.100000 -0.200000 107.404095 +-2.100000 -0.100000 105.391704 +-2.100000 -0.000000 103.399312 +-2.100000 0.100000 101.426921 +-2.100000 0.200000 99.474529 +-2.100000 0.300000 97.542138 +-2.100000 0.400000 95.629746 +-2.100000 0.500000 93.737355 +-2.100000 0.600000 91.864963 +-2.100000 0.700000 90.012572 +-2.100000 0.800000 88.180180 +-2.100000 0.900000 86.367789 +-2.100000 1.000000 84.575397 +-2.100000 1.100000 82.803006 +-2.100000 1.200000 81.050614 +-2.100000 1.300000 79.318223 +-2.100000 1.400000 77.605831 +-2.100000 1.500000 75.913440 +-2.100000 1.600000 74.241048 +-2.100000 1.700000 72.588657 +-2.100000 1.800000 70.956265 +-2.100000 1.900000 69.343874 +-2.100000 2.000000 67.751482 +-2.100000 2.100000 66.179091 +-2.100000 2.200000 64.626699 +-2.100000 2.300000 63.094308 +-2.100000 2.400000 61.581916 +-2.100000 2.500000 60.089525 +-2.100000 2.600000 58.617133 +-2.100000 2.700000 57.164742 +-2.100000 2.800000 55.732350 +-2.100000 2.900000 54.319959 +-2.100000 3.000000 52.927567 +-2.100000 3.100000 51.555176 +-2.100000 3.200000 50.202784 +-2.100000 3.300000 48.870393 +-2.100000 3.400000 47.558001 +-2.100000 3.500000 46.265610 +-2.100000 3.600000 44.993218 +-2.100000 3.700000 43.740827 +-2.100000 3.800000 42.508435 +-2.100000 3.900000 41.296044 +-2.100000 4.000000 40.103652 +-2.100000 4.100000 38.931261 +-2.100000 4.200000 37.778869 +-2.100000 4.300000 36.646478 +-2.100000 4.400000 35.534086 +-2.100000 4.500000 34.441695 +-2.100000 4.600000 33.369303 +-2.100000 4.700000 32.316912 +-2.100000 4.800000 31.284520 +-2.100000 4.900000 30.272129 +-2.100000 5.000000 29.279737 +-2.100000 5.100000 28.307346 +-2.100000 5.200000 27.354954 +-2.100000 5.300000 26.422563 +-2.100000 5.400000 25.510171 +-2.100000 5.500000 24.617780 +-2.100000 5.600000 23.745388 +-2.100000 5.700000 22.892997 +-2.100000 5.800000 22.060605 +-2.100000 5.900000 21.248214 +-2.100000 6.000000 20.455822 +-2.100000 6.100000 19.683431 +-2.100000 6.200000 18.931039 +-2.100000 6.300000 18.198648 +-2.100000 6.400000 17.486256 +-2.100000 6.500000 16.793865 +-2.100000 6.600000 16.121473 +-2.100000 6.700000 15.469082 +-2.100000 6.800000 14.836690 +-2.100000 6.900000 14.224299 +-2.100000 7.000000 13.631907 +-2.100000 7.100000 13.059516 +-2.100000 7.200000 12.507124 +-2.100000 7.300000 11.974733 +-2.100000 7.400000 11.462341 +-2.100000 7.500000 10.969950 +-2.100000 7.600000 10.497558 +-2.100000 7.700000 10.045167 +-2.100000 7.800000 9.612775 +-2.100000 7.900000 9.200384 +-2.100000 8.000000 8.807992 +-2.100000 8.100000 8.435601 +-2.100000 8.200000 8.083209 +-2.100000 8.300000 7.750818 +-2.100000 8.400000 7.438426 +-2.100000 8.500000 7.146035 +-2.100000 8.600000 6.873643 +-2.100000 8.700000 6.621252 +-2.100000 8.800000 6.388860 +-2.100000 8.900000 6.176469 +-2.100000 9.000000 5.984077 +-2.100000 9.100000 5.811686 +-2.100000 9.200000 5.659294 +-2.100000 9.300000 5.526903 +-2.100000 9.400000 5.414511 +-2.100000 9.500000 5.322120 +-2.100000 9.600000 5.249728 +-2.100000 9.700000 5.197337 +-2.100000 9.800000 5.164945 +-2.100000 9.900000 5.152554 +-2.100000 10.000000 5.160162 +-2.100000 10.100000 5.187771 +-2.100000 10.200000 5.235379 +-2.100000 10.300000 5.302988 +-2.100000 10.400000 5.390596 +-2.100000 10.500000 5.498205 +-2.100000 10.600000 5.625813 +-2.100000 10.700000 5.773422 +-2.100000 10.800000 5.941030 +-2.100000 10.900000 6.128639 +-2.100000 11.000000 6.336247 +-2.100000 11.100000 6.563856 +-2.100000 11.200000 6.811464 +-2.100000 11.300000 7.079073 +-2.100000 11.400000 7.366681 +-2.100000 11.500000 7.674290 +-2.100000 11.600000 8.001898 +-2.100000 11.700000 8.349507 +-2.100000 11.800000 8.717115 +-2.100000 11.900000 9.104724 +-2.100000 12.000000 9.512332 +-2.100000 12.100000 9.939941 +-2.100000 12.200000 10.387549 +-2.100000 12.300000 10.855158 +-2.100000 12.400000 11.342766 +-2.100000 12.500000 11.850375 +-2.100000 12.600000 12.377983 +-2.100000 12.700000 12.925592 +-2.100000 12.800000 13.493200 +-2.100000 12.900000 14.080809 +-2.100000 13.000000 14.688417 +-2.100000 13.100000 15.316026 +-2.100000 13.200000 15.963634 +-2.100000 13.300000 16.631243 +-2.100000 13.400000 17.318851 +-2.100000 13.500000 18.026460 +-2.100000 13.600000 18.754068 +-2.100000 13.700000 19.501677 +-2.100000 13.800000 20.269285 +-2.100000 13.900000 21.056894 +-2.100000 14.000000 21.864502 +-2.100000 14.100000 22.692111 +-2.100000 14.200000 23.539719 +-2.100000 14.300000 24.407328 +-2.100000 14.400000 25.294936 +-2.100000 14.500000 26.202545 +-2.100000 14.600000 27.130153 +-2.100000 14.700000 28.077762 +-2.100000 14.800000 29.045370 +-2.100000 14.900000 30.032979 +-2.100000 15.000000 31.040587 + +-2.000000 -5.000000 222.089316 +-2.000000 -4.900000 219.159349 +-2.000000 -4.800000 216.249381 +-2.000000 -4.700000 213.359414 +-2.000000 -4.600000 210.489447 +-2.000000 -4.500000 207.639479 +-2.000000 -4.400000 204.809512 +-2.000000 -4.300000 201.999544 +-2.000000 -4.200000 199.209577 +-2.000000 -4.100000 196.439610 +-2.000000 -4.000000 193.689642 +-2.000000 -3.900000 190.959675 +-2.000000 -3.800000 188.249707 +-2.000000 -3.700000 185.559740 +-2.000000 -3.600000 182.889773 +-2.000000 -3.500000 180.239805 +-2.000000 -3.400000 177.609838 +-2.000000 -3.300000 174.999871 +-2.000000 -3.200000 172.409903 +-2.000000 -3.100000 169.839936 +-2.000000 -3.000000 167.289968 +-2.000000 -2.900000 164.760001 +-2.000000 -2.800000 162.250034 +-2.000000 -2.700000 159.760066 +-2.000000 -2.600000 157.290099 +-2.000000 -2.500000 154.840132 +-2.000000 -2.400000 152.410164 +-2.000000 -2.300000 150.000197 +-2.000000 -2.200000 147.610229 +-2.000000 -2.100000 145.240262 +-2.000000 -2.000000 142.890295 +-2.000000 -1.900000 140.560327 +-2.000000 -1.800000 138.250360 +-2.000000 -1.700000 135.960393 +-2.000000 -1.600000 133.690425 +-2.000000 -1.500000 131.440458 +-2.000000 -1.400000 129.210490 +-2.000000 -1.300000 127.000523 +-2.000000 -1.200000 124.810556 +-2.000000 -1.100000 122.640588 +-2.000000 -1.000000 120.490621 +-2.000000 -0.900000 118.360653 +-2.000000 -0.800000 116.250686 +-2.000000 -0.700000 114.160719 +-2.000000 -0.600000 112.090751 +-2.000000 -0.500000 110.040784 +-2.000000 -0.400000 108.010817 +-2.000000 -0.300000 106.000849 +-2.000000 -0.200000 104.010882 +-2.000000 -0.100000 102.040914 +-2.000000 -0.000000 100.090947 +-2.000000 0.100000 98.160980 +-2.000000 0.200000 96.251012 +-2.000000 0.300000 94.361045 +-2.000000 0.400000 92.491078 +-2.000000 0.500000 90.641110 +-2.000000 0.600000 88.811143 +-2.000000 0.700000 87.001175 +-2.000000 0.800000 85.211208 +-2.000000 0.900000 83.441241 +-2.000000 1.000000 81.691273 +-2.000000 1.100000 79.961306 +-2.000000 1.200000 78.251338 +-2.000000 1.300000 76.561371 +-2.000000 1.400000 74.891404 +-2.000000 1.500000 73.241436 +-2.000000 1.600000 71.611469 +-2.000000 1.700000 70.001502 +-2.000000 1.800000 68.411534 +-2.000000 1.900000 66.841567 +-2.000000 2.000000 65.291599 +-2.000000 2.100000 63.761632 +-2.000000 2.200000 62.251665 +-2.000000 2.300000 60.761697 +-2.000000 2.400000 59.291730 +-2.000000 2.500000 57.841763 +-2.000000 2.600000 56.411795 +-2.000000 2.700000 55.001828 +-2.000000 2.800000 53.611860 +-2.000000 2.900000 52.241893 +-2.000000 3.000000 50.891926 +-2.000000 3.100000 49.561958 +-2.000000 3.200000 48.251991 +-2.000000 3.300000 46.962024 +-2.000000 3.400000 45.692056 +-2.000000 3.500000 44.442089 +-2.000000 3.600000 43.212121 +-2.000000 3.700000 42.002154 +-2.000000 3.800000 40.812187 +-2.000000 3.900000 39.642219 +-2.000000 4.000000 38.492252 +-2.000000 4.100000 37.362284 +-2.000000 4.200000 36.252317 +-2.000000 4.300000 35.162350 +-2.000000 4.400000 34.092382 +-2.000000 4.500000 33.042415 +-2.000000 4.600000 32.012448 +-2.000000 4.700000 31.002480 +-2.000000 4.800000 30.012513 +-2.000000 4.900000 29.042545 +-2.000000 5.000000 28.092578 +-2.000000 5.100000 27.162611 +-2.000000 5.200000 26.252643 +-2.000000 5.300000 25.362676 +-2.000000 5.400000 24.492709 +-2.000000 5.500000 23.642741 +-2.000000 5.600000 22.812774 +-2.000000 5.700000 22.002806 +-2.000000 5.800000 21.212839 +-2.000000 5.900000 20.442872 +-2.000000 6.000000 19.692904 +-2.000000 6.100000 18.962937 +-2.000000 6.200000 18.252970 +-2.000000 6.300000 17.563002 +-2.000000 6.400000 16.893035 +-2.000000 6.500000 16.243067 +-2.000000 6.600000 15.613100 +-2.000000 6.700000 15.003133 +-2.000000 6.800000 14.413165 +-2.000000 6.900000 13.843198 +-2.000000 7.000000 13.293230 +-2.000000 7.100000 12.763263 +-2.000000 7.200000 12.253296 +-2.000000 7.300000 11.763328 +-2.000000 7.400000 11.293361 +-2.000000 7.500000 10.843394 +-2.000000 7.600000 10.413426 +-2.000000 7.700000 10.003459 +-2.000000 7.800000 9.613491 +-2.000000 7.900000 9.243524 +-2.000000 8.000000 8.893557 +-2.000000 8.100000 8.563589 +-2.000000 8.200000 8.253622 +-2.000000 8.300000 7.963655 +-2.000000 8.400000 7.693687 +-2.000000 8.500000 7.443720 +-2.000000 8.600000 7.213752 +-2.000000 8.700000 7.003785 +-2.000000 8.800000 6.813818 +-2.000000 8.900000 6.643850 +-2.000000 9.000000 6.493883 +-2.000000 9.100000 6.363916 +-2.000000 9.200000 6.253948 +-2.000000 9.300000 6.163981 +-2.000000 9.400000 6.094013 +-2.000000 9.500000 6.044046 +-2.000000 9.600000 6.014079 +-2.000000 9.700000 6.004111 +-2.000000 9.800000 6.014144 +-2.000000 9.900000 6.044176 +-2.000000 10.000000 6.094209 +-2.000000 10.100000 6.164242 +-2.000000 10.200000 6.254274 +-2.000000 10.300000 6.364307 +-2.000000 10.400000 6.494340 +-2.000000 10.500000 6.644372 +-2.000000 10.600000 6.814405 +-2.000000 10.700000 7.004437 +-2.000000 10.800000 7.214470 +-2.000000 10.900000 7.444503 +-2.000000 11.000000 7.694535 +-2.000000 11.100000 7.964568 +-2.000000 11.200000 8.254601 +-2.000000 11.300000 8.564633 +-2.000000 11.400000 8.894666 +-2.000000 11.500000 9.244698 +-2.000000 11.600000 9.614731 +-2.000000 11.700000 10.004764 +-2.000000 11.800000 10.414796 +-2.000000 11.900000 10.844829 +-2.000000 12.000000 11.294861 +-2.000000 12.100000 11.764894 +-2.000000 12.200000 12.254927 +-2.000000 12.300000 12.764959 +-2.000000 12.400000 13.294992 +-2.000000 12.500000 13.845025 +-2.000000 12.600000 14.415057 +-2.000000 12.700000 15.005090 +-2.000000 12.800000 15.615122 +-2.000000 12.900000 16.245155 +-2.000000 13.000000 16.895188 +-2.000000 13.100000 17.565220 +-2.000000 13.200000 18.255253 +-2.000000 13.300000 18.965286 +-2.000000 13.400000 19.695318 +-2.000000 13.500000 20.445351 +-2.000000 13.600000 21.215383 +-2.000000 13.700000 22.005416 +-2.000000 13.800000 22.815449 +-2.000000 13.900000 23.645481 +-2.000000 14.000000 24.495514 +-2.000000 14.100000 25.365547 +-2.000000 14.200000 26.255579 +-2.000000 14.300000 27.165612 +-2.000000 14.400000 28.095644 +-2.000000 14.500000 29.045677 +-2.000000 14.600000 30.015710 +-2.000000 14.700000 31.005742 +-2.000000 14.800000 32.015775 +-2.000000 14.900000 33.045807 +-2.000000 15.000000 34.095840 + +-1.900000 -5.000000 216.864531 +-1.900000 -4.900000 213.976471 +-1.900000 -4.800000 211.108411 +-1.900000 -4.700000 208.260351 +-1.900000 -4.600000 205.432291 +-1.900000 -4.500000 202.624231 +-1.900000 -4.400000 199.836171 +-1.900000 -4.300000 197.068111 +-1.900000 -4.200000 194.320051 +-1.900000 -4.100000 191.591991 +-1.900000 -4.000000 188.883931 +-1.900000 -3.900000 186.195871 +-1.900000 -3.800000 183.527811 +-1.900000 -3.700000 180.879751 +-1.900000 -3.600000 178.251691 +-1.900000 -3.500000 175.643631 +-1.900000 -3.400000 173.055571 +-1.900000 -3.300000 170.487511 +-1.900000 -3.200000 167.939451 +-1.900000 -3.100000 165.411391 +-1.900000 -3.000000 162.903331 +-1.900000 -2.900000 160.415271 +-1.900000 -2.800000 157.947211 +-1.900000 -2.700000 155.499151 +-1.900000 -2.600000 153.071091 +-1.900000 -2.500000 150.663031 +-1.900000 -2.400000 148.274971 +-1.900000 -2.300000 145.906911 +-1.900000 -2.200000 143.558851 +-1.900000 -2.100000 141.230791 +-1.900000 -2.000000 138.922731 +-1.900000 -1.900000 136.634671 +-1.900000 -1.800000 134.366611 +-1.900000 -1.700000 132.118551 +-1.900000 -1.600000 129.890491 +-1.900000 -1.500000 127.682431 +-1.900000 -1.400000 125.494371 +-1.900000 -1.300000 123.326311 +-1.900000 -1.200000 121.178251 +-1.900000 -1.100000 119.050191 +-1.900000 -1.000000 116.942131 +-1.900000 -0.900000 114.854071 +-1.900000 -0.800000 112.786011 +-1.900000 -0.700000 110.737951 +-1.900000 -0.600000 108.709891 +-1.900000 -0.500000 106.701831 +-1.900000 -0.400000 104.713771 +-1.900000 -0.300000 102.745711 +-1.900000 -0.200000 100.797651 +-1.900000 -0.100000 98.869591 +-1.900000 -0.000000 96.961531 +-1.900000 0.100000 95.073471 +-1.900000 0.200000 93.205411 +-1.900000 0.300000 91.357351 +-1.900000 0.400000 89.529291 +-1.900000 0.500000 87.721231 +-1.900000 0.600000 85.933171 +-1.900000 0.700000 84.165111 +-1.900000 0.800000 82.417051 +-1.900000 0.900000 80.688991 +-1.900000 1.000000 78.980931 +-1.900000 1.100000 77.292871 +-1.900000 1.200000 75.624811 +-1.900000 1.300000 73.976751 +-1.900000 1.400000 72.348691 +-1.900000 1.500000 70.740631 +-1.900000 1.600000 69.152571 +-1.900000 1.700000 67.584511 +-1.900000 1.800000 66.036451 +-1.900000 1.900000 64.508391 +-1.900000 2.000000 63.000331 +-1.900000 2.100000 61.512271 +-1.900000 2.200000 60.044211 +-1.900000 2.300000 58.596151 +-1.900000 2.400000 57.168091 +-1.900000 2.500000 55.760031 +-1.900000 2.600000 54.371971 +-1.900000 2.700000 53.003911 +-1.900000 2.800000 51.655851 +-1.900000 2.900000 50.327791 +-1.900000 3.000000 49.019731 +-1.900000 3.100000 47.731671 +-1.900000 3.200000 46.463611 +-1.900000 3.300000 45.215551 +-1.900000 3.400000 43.987491 +-1.900000 3.500000 42.779431 +-1.900000 3.600000 41.591371 +-1.900000 3.700000 40.423311 +-1.900000 3.800000 39.275251 +-1.900000 3.900000 38.147191 +-1.900000 4.000000 37.039131 +-1.900000 4.100000 35.951071 +-1.900000 4.200000 34.883011 +-1.900000 4.300000 33.834951 +-1.900000 4.400000 32.806891 +-1.900000 4.500000 31.798831 +-1.900000 4.600000 30.810771 +-1.900000 4.700000 29.842711 +-1.900000 4.800000 28.894651 +-1.900000 4.900000 27.966591 +-1.900000 5.000000 27.058531 +-1.900000 5.100000 26.170471 +-1.900000 5.200000 25.302411 +-1.900000 5.300000 24.454351 +-1.900000 5.400000 23.626291 +-1.900000 5.500000 22.818231 +-1.900000 5.600000 22.030171 +-1.900000 5.700000 21.262111 +-1.900000 5.800000 20.514051 +-1.900000 5.900000 19.785991 +-1.900000 6.000000 19.077931 +-1.900000 6.100000 18.389871 +-1.900000 6.200000 17.721811 +-1.900000 6.300000 17.073751 +-1.900000 6.400000 16.445691 +-1.900000 6.500000 15.837631 +-1.900000 6.600000 15.249571 +-1.900000 6.700000 14.681511 +-1.900000 6.800000 14.133451 +-1.900000 6.900000 13.605391 +-1.900000 7.000000 13.097331 +-1.900000 7.100000 12.609271 +-1.900000 7.200000 12.141211 +-1.900000 7.300000 11.693151 +-1.900000 7.400000 11.265091 +-1.900000 7.500000 10.857031 +-1.900000 7.600000 10.468971 +-1.900000 7.700000 10.100911 +-1.900000 7.800000 9.752851 +-1.900000 7.900000 9.424791 +-1.900000 8.000000 9.116731 +-1.900000 8.100000 8.828671 +-1.900000 8.200000 8.560611 +-1.900000 8.300000 8.312551 +-1.900000 8.400000 8.084491 +-1.900000 8.500000 7.876431 +-1.900000 8.600000 7.688371 +-1.900000 8.700000 7.520311 +-1.900000 8.800000 7.372251 +-1.900000 8.900000 7.244191 +-1.900000 9.000000 7.136131 +-1.900000 9.100000 7.048071 +-1.900000 9.200000 6.980011 +-1.900000 9.300000 6.931951 +-1.900000 9.400000 6.903891 +-1.900000 9.500000 6.895831 +-1.900000 9.600000 6.907771 +-1.900000 9.700000 6.939711 +-1.900000 9.800000 6.991651 +-1.900000 9.900000 7.063591 +-1.900000 10.000000 7.155531 +-1.900000 10.100000 7.267471 +-1.900000 10.200000 7.399411 +-1.900000 10.300000 7.551351 +-1.900000 10.400000 7.723291 +-1.900000 10.500000 7.915231 +-1.900000 10.600000 8.127171 +-1.900000 10.700000 8.359111 +-1.900000 10.800000 8.611051 +-1.900000 10.900000 8.882991 +-1.900000 11.000000 9.174931 +-1.900000 11.100000 9.486871 +-1.900000 11.200000 9.818811 +-1.900000 11.300000 10.170751 +-1.900000 11.400000 10.542691 +-1.900000 11.500000 10.934631 +-1.900000 11.600000 11.346571 +-1.900000 11.700000 11.778511 +-1.900000 11.800000 12.230451 +-1.900000 11.900000 12.702391 +-1.900000 12.000000 13.194331 +-1.900000 12.100000 13.706271 +-1.900000 12.200000 14.238211 +-1.900000 12.300000 14.790151 +-1.900000 12.400000 15.362091 +-1.900000 12.500000 15.954031 +-1.900000 12.600000 16.565971 +-1.900000 12.700000 17.197911 +-1.900000 12.800000 17.849851 +-1.900000 12.900000 18.521791 +-1.900000 13.000000 19.213731 +-1.900000 13.100000 19.925671 +-1.900000 13.200000 20.657611 +-1.900000 13.300000 21.409551 +-1.900000 13.400000 22.181491 +-1.900000 13.500000 22.973431 +-1.900000 13.600000 23.785371 +-1.900000 13.700000 24.617311 +-1.900000 13.800000 25.469251 +-1.900000 13.900000 26.341191 +-1.900000 14.000000 27.233131 +-1.900000 14.100000 28.145071 +-1.900000 14.200000 29.077011 +-1.900000 14.300000 30.028951 +-1.900000 14.400000 31.000891 +-1.900000 14.500000 31.992831 +-1.900000 14.600000 33.004771 +-1.900000 14.700000 34.036711 +-1.900000 14.800000 35.088651 +-1.900000 14.900000 36.160591 +-1.900000 15.000000 37.252531 + +-1.800000 -5.000000 211.832375 +-1.800000 -4.900000 208.985706 +-1.800000 -4.800000 206.159037 +-1.800000 -4.700000 203.352367 +-1.800000 -4.600000 200.565698 +-1.800000 -4.500000 197.799028 +-1.800000 -4.400000 195.052359 +-1.800000 -4.300000 192.325690 +-1.800000 -4.200000 189.619020 +-1.800000 -4.100000 186.932351 +-1.800000 -4.000000 184.265682 +-1.800000 -3.900000 181.619012 +-1.800000 -3.800000 178.992343 +-1.800000 -3.700000 176.385674 +-1.800000 -3.600000 173.799004 +-1.800000 -3.500000 171.232335 +-1.800000 -3.400000 168.685666 +-1.800000 -3.300000 166.158996 +-1.800000 -3.200000 163.652327 +-1.800000 -3.100000 161.165657 +-1.800000 -3.000000 158.698988 +-1.800000 -2.900000 156.252319 +-1.800000 -2.800000 153.825649 +-1.800000 -2.700000 151.418980 +-1.800000 -2.600000 149.032311 +-1.800000 -2.500000 146.665641 +-1.800000 -2.400000 144.318972 +-1.800000 -2.300000 141.992303 +-1.800000 -2.200000 139.685633 +-1.800000 -2.100000 137.398964 +-1.800000 -2.000000 135.132295 +-1.800000 -1.900000 132.885625 +-1.800000 -1.800000 130.658956 +-1.800000 -1.700000 128.452286 +-1.800000 -1.600000 126.265617 +-1.800000 -1.500000 124.098948 +-1.800000 -1.400000 121.952278 +-1.800000 -1.300000 119.825609 +-1.800000 -1.200000 117.718940 +-1.800000 -1.100000 115.632270 +-1.800000 -1.000000 113.565601 +-1.800000 -0.900000 111.518932 +-1.800000 -0.800000 109.492262 +-1.800000 -0.700000 107.485593 +-1.800000 -0.600000 105.498924 +-1.800000 -0.500000 103.532254 +-1.800000 -0.400000 101.585585 +-1.800000 -0.300000 99.658916 +-1.800000 -0.200000 97.752246 +-1.800000 -0.100000 95.865577 +-1.800000 -0.000000 93.998907 +-1.800000 0.100000 92.152238 +-1.800000 0.200000 90.325569 +-1.800000 0.300000 88.518899 +-1.800000 0.400000 86.732230 +-1.800000 0.500000 84.965561 +-1.800000 0.600000 83.218891 +-1.800000 0.700000 81.492222 +-1.800000 0.800000 79.785553 +-1.800000 0.900000 78.098883 +-1.800000 1.000000 76.432214 +-1.800000 1.100000 74.785545 +-1.800000 1.200000 73.158875 +-1.800000 1.300000 71.552206 +-1.800000 1.400000 69.965536 +-1.800000 1.500000 68.398867 +-1.800000 1.600000 66.852198 +-1.800000 1.700000 65.325528 +-1.800000 1.800000 63.818859 +-1.800000 1.900000 62.332190 +-1.800000 2.000000 60.865520 +-1.800000 2.100000 59.418851 +-1.800000 2.200000 57.992182 +-1.800000 2.300000 56.585512 +-1.800000 2.400000 55.198843 +-1.800000 2.500000 53.832174 +-1.800000 2.600000 52.485504 +-1.800000 2.700000 51.158835 +-1.800000 2.800000 49.852165 +-1.800000 2.900000 48.565496 +-1.800000 3.000000 47.298827 +-1.800000 3.100000 46.052157 +-1.800000 3.200000 44.825488 +-1.800000 3.300000 43.618819 +-1.800000 3.400000 42.432149 +-1.800000 3.500000 41.265480 +-1.800000 3.600000 40.118811 +-1.800000 3.700000 38.992141 +-1.800000 3.800000 37.885472 +-1.800000 3.900000 36.798803 +-1.800000 4.000000 35.732133 +-1.800000 4.100000 34.685464 +-1.800000 4.200000 33.658794 +-1.800000 4.300000 32.652125 +-1.800000 4.400000 31.665456 +-1.800000 4.500000 30.698786 +-1.800000 4.600000 29.752117 +-1.800000 4.700000 28.825448 +-1.800000 4.800000 27.918778 +-1.800000 4.900000 27.032109 +-1.800000 5.000000 26.165440 +-1.800000 5.100000 25.318770 +-1.800000 5.200000 24.492101 +-1.800000 5.300000 23.685432 +-1.800000 5.400000 22.898762 +-1.800000 5.500000 22.132093 +-1.800000 5.600000 21.385423 +-1.800000 5.700000 20.658754 +-1.800000 5.800000 19.952085 +-1.800000 5.900000 19.265415 +-1.800000 6.000000 18.598746 +-1.800000 6.100000 17.952077 +-1.800000 6.200000 17.325407 +-1.800000 6.300000 16.718738 +-1.800000 6.400000 16.132069 +-1.800000 6.500000 15.565399 +-1.800000 6.600000 15.018730 +-1.800000 6.700000 14.492061 +-1.800000 6.800000 13.985391 +-1.800000 6.900000 13.498722 +-1.800000 7.000000 13.032052 +-1.800000 7.100000 12.585383 +-1.800000 7.200000 12.158714 +-1.800000 7.300000 11.752044 +-1.800000 7.400000 11.365375 +-1.800000 7.500000 10.998706 +-1.800000 7.600000 10.652036 +-1.800000 7.700000 10.325367 +-1.800000 7.800000 10.018698 +-1.800000 7.900000 9.732028 +-1.800000 8.000000 9.465359 +-1.800000 8.100000 9.218690 +-1.800000 8.200000 8.992020 +-1.800000 8.300000 8.785351 +-1.800000 8.400000 8.598681 +-1.800000 8.500000 8.432012 +-1.800000 8.600000 8.285343 +-1.800000 8.700000 8.158673 +-1.800000 8.800000 8.052004 +-1.800000 8.900000 7.965335 +-1.800000 9.000000 7.898665 +-1.800000 9.100000 7.851996 +-1.800000 9.200000 7.825327 +-1.800000 9.300000 7.818657 +-1.800000 9.400000 7.831988 +-1.800000 9.500000 7.865319 +-1.800000 9.600000 7.918649 +-1.800000 9.700000 7.991980 +-1.800000 9.800000 8.085310 +-1.800000 9.900000 8.198641 +-1.800000 10.000000 8.331972 +-1.800000 10.100000 8.485302 +-1.800000 10.200000 8.658633 +-1.800000 10.300000 8.851964 +-1.800000 10.400000 9.065294 +-1.800000 10.500000 9.298625 +-1.800000 10.600000 9.551956 +-1.800000 10.700000 9.825286 +-1.800000 10.800000 10.118617 +-1.800000 10.900000 10.431948 +-1.800000 11.000000 10.765278 +-1.800000 11.100000 11.118609 +-1.800000 11.200000 11.491939 +-1.800000 11.300000 11.885270 +-1.800000 11.400000 12.298601 +-1.800000 11.500000 12.731931 +-1.800000 11.600000 13.185262 +-1.800000 11.700000 13.658593 +-1.800000 11.800000 14.151923 +-1.800000 11.900000 14.665254 +-1.800000 12.000000 15.198585 +-1.800000 12.100000 15.751915 +-1.800000 12.200000 16.325246 +-1.800000 12.300000 16.918577 +-1.800000 12.400000 17.531907 +-1.800000 12.500000 18.165238 +-1.800000 12.600000 18.818568 +-1.800000 12.700000 19.491899 +-1.800000 12.800000 20.185230 +-1.800000 12.900000 20.898560 +-1.800000 13.000000 21.631891 +-1.800000 13.100000 22.385222 +-1.800000 13.200000 23.158552 +-1.800000 13.300000 23.951883 +-1.800000 13.400000 24.765214 +-1.800000 13.500000 25.598544 +-1.800000 13.600000 26.451875 +-1.800000 13.700000 27.325206 +-1.800000 13.800000 28.218536 +-1.800000 13.900000 29.131867 +-1.800000 14.000000 30.065197 +-1.800000 14.100000 31.018528 +-1.800000 14.200000 31.991859 +-1.800000 14.300000 32.985189 +-1.800000 14.400000 33.998520 +-1.800000 14.500000 35.031851 +-1.800000 14.600000 36.085181 +-1.800000 14.700000 37.158512 +-1.800000 14.800000 38.251843 +-1.800000 14.900000 39.365173 +-1.800000 15.000000 40.498504 + +-1.700000 -5.000000 206.980421 +-1.700000 -4.900000 204.174626 +-1.700000 -4.800000 201.388831 +-1.700000 -4.700000 198.623035 +-1.700000 -4.600000 195.877240 +-1.700000 -4.500000 193.151444 +-1.700000 -4.400000 190.445649 +-1.700000 -4.300000 187.759853 +-1.700000 -4.200000 185.094058 +-1.700000 -4.100000 182.448262 +-1.700000 -4.000000 179.822467 +-1.700000 -3.900000 177.216671 +-1.700000 -3.800000 174.630876 +-1.700000 -3.700000 172.065081 +-1.700000 -3.600000 169.519285 +-1.700000 -3.500000 166.993490 +-1.700000 -3.400000 164.487694 +-1.700000 -3.300000 162.001899 +-1.700000 -3.200000 159.536103 +-1.700000 -3.100000 157.090308 +-1.700000 -3.000000 154.664512 +-1.700000 -2.900000 152.258717 +-1.700000 -2.800000 149.872921 +-1.700000 -2.700000 147.507126 +-1.700000 -2.600000 145.161331 +-1.700000 -2.500000 142.835535 +-1.700000 -2.400000 140.529740 +-1.700000 -2.300000 138.243944 +-1.700000 -2.200000 135.978149 +-1.700000 -2.100000 133.732353 +-1.700000 -2.000000 131.506558 +-1.700000 -1.900000 129.300762 +-1.700000 -1.800000 127.114967 +-1.700000 -1.700000 124.949172 +-1.700000 -1.600000 122.803376 +-1.700000 -1.500000 120.677581 +-1.700000 -1.400000 118.571785 +-1.700000 -1.300000 116.485990 +-1.700000 -1.200000 114.420194 +-1.700000 -1.100000 112.374399 +-1.700000 -1.000000 110.348603 +-1.700000 -0.900000 108.342808 +-1.700000 -0.800000 106.357012 +-1.700000 -0.700000 104.391217 +-1.700000 -0.600000 102.445422 +-1.700000 -0.500000 100.519626 +-1.700000 -0.400000 98.613831 +-1.700000 -0.300000 96.728035 +-1.700000 -0.200000 94.862240 +-1.700000 -0.100000 93.016444 +-1.700000 -0.000000 91.190649 +-1.700000 0.100000 89.384853 +-1.700000 0.200000 87.599058 +-1.700000 0.300000 85.833262 +-1.700000 0.400000 84.087467 +-1.700000 0.500000 82.361672 +-1.700000 0.600000 80.655876 +-1.700000 0.700000 78.970081 +-1.700000 0.800000 77.304285 +-1.700000 0.900000 75.658490 +-1.700000 1.000000 74.032694 +-1.700000 1.100000 72.426899 +-1.700000 1.200000 70.841103 +-1.700000 1.300000 69.275308 +-1.700000 1.400000 67.729512 +-1.700000 1.500000 66.203717 +-1.700000 1.600000 64.697922 +-1.700000 1.700000 63.212126 +-1.700000 1.800000 61.746331 +-1.700000 1.900000 60.300535 +-1.700000 2.000000 58.874740 +-1.700000 2.100000 57.468944 +-1.700000 2.200000 56.083149 +-1.700000 2.300000 54.717353 +-1.700000 2.400000 53.371558 +-1.700000 2.500000 52.045762 +-1.700000 2.600000 50.739967 +-1.700000 2.700000 49.454172 +-1.700000 2.800000 48.188376 +-1.700000 2.900000 46.942581 +-1.700000 3.000000 45.716785 +-1.700000 3.100000 44.510990 +-1.700000 3.200000 43.325194 +-1.700000 3.300000 42.159399 +-1.700000 3.400000 41.013603 +-1.700000 3.500000 39.887808 +-1.700000 3.600000 38.782013 +-1.700000 3.700000 37.696217 +-1.700000 3.800000 36.630422 +-1.700000 3.900000 35.584626 +-1.700000 4.000000 34.558831 +-1.700000 4.100000 33.553035 +-1.700000 4.200000 32.567240 +-1.700000 4.300000 31.601444 +-1.700000 4.400000 30.655649 +-1.700000 4.500000 29.729853 +-1.700000 4.600000 28.824058 +-1.700000 4.700000 27.938263 +-1.700000 4.800000 27.072467 +-1.700000 4.900000 26.226672 +-1.700000 5.000000 25.400876 +-1.700000 5.100000 24.595081 +-1.700000 5.200000 23.809285 +-1.700000 5.300000 23.043490 +-1.700000 5.400000 22.297694 +-1.700000 5.500000 21.571899 +-1.700000 5.600000 20.866103 +-1.700000 5.700000 20.180308 +-1.700000 5.800000 19.514513 +-1.700000 5.900000 18.868717 +-1.700000 6.000000 18.242922 +-1.700000 6.100000 17.637126 +-1.700000 6.200000 17.051331 +-1.700000 6.300000 16.485535 +-1.700000 6.400000 15.939740 +-1.700000 6.500000 15.413944 +-1.700000 6.600000 14.908149 +-1.700000 6.700000 14.422353 +-1.700000 6.800000 13.956558 +-1.700000 6.900000 13.510763 +-1.700000 7.000000 13.084967 +-1.700000 7.100000 12.679172 +-1.700000 7.200000 12.293376 +-1.700000 7.300000 11.927581 +-1.700000 7.400000 11.581785 +-1.700000 7.500000 11.255990 +-1.700000 7.600000 10.950194 +-1.700000 7.700000 10.664399 +-1.700000 7.800000 10.398603 +-1.700000 7.900000 10.152808 +-1.700000 8.000000 9.927013 +-1.700000 8.100000 9.721217 +-1.700000 8.200000 9.535422 +-1.700000 8.300000 9.369626 +-1.700000 8.400000 9.223831 +-1.700000 8.500000 9.098035 +-1.700000 8.600000 8.992240 +-1.700000 8.700000 8.906444 +-1.700000 8.800000 8.840649 +-1.700000 8.900000 8.794854 +-1.700000 9.000000 8.769058 +-1.700000 9.100000 8.763263 +-1.700000 9.200000 8.777467 +-1.700000 9.300000 8.811672 +-1.700000 9.400000 8.865876 +-1.700000 9.500000 8.940081 +-1.700000 9.600000 9.034285 +-1.700000 9.700000 9.148490 +-1.700000 9.800000 9.282694 +-1.700000 9.900000 9.436899 +-1.700000 10.000000 9.611104 +-1.700000 10.100000 9.805308 +-1.700000 10.200000 10.019513 +-1.700000 10.300000 10.253717 +-1.700000 10.400000 10.507922 +-1.700000 10.500000 10.782126 +-1.700000 10.600000 11.076331 +-1.700000 10.700000 11.390535 +-1.700000 10.800000 11.724740 +-1.700000 10.900000 12.078944 +-1.700000 11.000000 12.453149 +-1.700000 11.100000 12.847354 +-1.700000 11.200000 13.261558 +-1.700000 11.300000 13.695763 +-1.700000 11.400000 14.149967 +-1.700000 11.500000 14.624172 +-1.700000 11.600000 15.118376 +-1.700000 11.700000 15.632581 +-1.700000 11.800000 16.166785 +-1.700000 11.900000 16.720990 +-1.700000 12.000000 17.295194 +-1.700000 12.100000 17.889399 +-1.700000 12.200000 18.503604 +-1.700000 12.300000 19.137808 +-1.700000 12.400000 19.792013 +-1.700000 12.500000 20.466217 +-1.700000 12.600000 21.160422 +-1.700000 12.700000 21.874626 +-1.700000 12.800000 22.608831 +-1.700000 12.900000 23.363035 +-1.700000 13.000000 24.137240 +-1.700000 13.100000 24.931444 +-1.700000 13.200000 25.745649 +-1.700000 13.300000 26.579854 +-1.700000 13.400000 27.434058 +-1.700000 13.500000 28.308263 +-1.700000 13.600000 29.202467 +-1.700000 13.700000 30.116672 +-1.700000 13.800000 31.050876 +-1.700000 13.900000 32.005081 +-1.700000 14.000000 32.979285 +-1.700000 14.100000 33.973490 +-1.700000 14.200000 34.987695 +-1.700000 14.300000 36.021899 +-1.700000 14.400000 37.076104 +-1.700000 14.500000 38.150308 +-1.700000 14.600000 39.244513 +-1.700000 14.700000 40.358717 +-1.700000 14.800000 41.492922 +-1.700000 14.900000 42.647126 +-1.700000 15.000000 43.821331 + +-1.600000 -5.000000 202.296065 +-1.600000 -4.900000 199.530627 +-1.600000 -4.800000 196.785188 +-1.600000 -4.700000 194.059750 +-1.600000 -4.600000 191.354312 +-1.600000 -4.500000 188.668874 +-1.600000 -4.400000 186.003435 +-1.600000 -4.300000 183.357997 +-1.600000 -4.200000 180.732559 +-1.600000 -4.100000 178.127120 +-1.600000 -4.000000 175.541682 +-1.600000 -3.900000 172.976244 +-1.600000 -3.800000 170.430806 +-1.600000 -3.700000 167.905367 +-1.600000 -3.600000 165.399929 +-1.600000 -3.500000 162.914491 +-1.600000 -3.400000 160.449052 +-1.600000 -3.300000 158.003614 +-1.600000 -3.200000 155.578176 +-1.600000 -3.100000 153.172738 +-1.600000 -3.000000 150.787299 +-1.600000 -2.900000 148.421861 +-1.600000 -2.800000 146.076423 +-1.600000 -2.700000 143.750984 +-1.600000 -2.600000 141.445546 +-1.600000 -2.500000 139.160108 +-1.600000 -2.400000 136.894670 +-1.600000 -2.300000 134.649231 +-1.600000 -2.200000 132.423793 +-1.600000 -2.100000 130.218355 +-1.600000 -2.000000 128.032916 +-1.600000 -1.900000 125.867478 +-1.600000 -1.800000 123.722040 +-1.600000 -1.700000 121.596602 +-1.600000 -1.600000 119.491163 +-1.600000 -1.500000 117.405725 +-1.600000 -1.400000 115.340287 +-1.600000 -1.300000 113.294848 +-1.600000 -1.200000 111.269410 +-1.600000 -1.100000 109.263972 +-1.600000 -1.000000 107.278533 +-1.600000 -0.900000 105.313095 +-1.600000 -0.800000 103.367657 +-1.600000 -0.700000 101.442219 +-1.600000 -0.600000 99.536780 +-1.600000 -0.500000 97.651342 +-1.600000 -0.400000 95.785904 +-1.600000 -0.300000 93.940465 +-1.600000 -0.200000 92.115027 +-1.600000 -0.100000 90.309589 +-1.600000 -0.000000 88.524151 +-1.600000 0.100000 86.758712 +-1.600000 0.200000 85.013274 +-1.600000 0.300000 83.287836 +-1.600000 0.400000 81.582397 +-1.600000 0.500000 79.896959 +-1.600000 0.600000 78.231521 +-1.600000 0.700000 76.586083 +-1.600000 0.800000 74.960644 +-1.600000 0.900000 73.355206 +-1.600000 1.000000 71.769768 +-1.600000 1.100000 70.204329 +-1.600000 1.200000 68.658891 +-1.600000 1.300000 67.133453 +-1.600000 1.400000 65.628015 +-1.600000 1.500000 64.142576 +-1.600000 1.600000 62.677138 +-1.600000 1.700000 61.231700 +-1.600000 1.800000 59.806261 +-1.600000 1.900000 58.400823 +-1.600000 2.000000 57.015385 +-1.600000 2.100000 55.649947 +-1.600000 2.200000 54.304508 +-1.600000 2.300000 52.979070 +-1.600000 2.400000 51.673632 +-1.600000 2.500000 50.388193 +-1.600000 2.600000 49.122755 +-1.600000 2.700000 47.877317 +-1.600000 2.800000 46.651879 +-1.600000 2.900000 45.446440 +-1.600000 3.000000 44.261002 +-1.600000 3.100000 43.095564 +-1.600000 3.200000 41.950125 +-1.600000 3.300000 40.824687 +-1.600000 3.400000 39.719249 +-1.600000 3.500000 38.633811 +-1.600000 3.600000 37.568372 +-1.600000 3.700000 36.522934 +-1.600000 3.800000 35.497496 +-1.600000 3.900000 34.492057 +-1.600000 4.000000 33.506619 +-1.600000 4.100000 32.541181 +-1.600000 4.200000 31.595743 +-1.600000 4.300000 30.670304 +-1.600000 4.400000 29.764866 +-1.600000 4.500000 28.879428 +-1.600000 4.600000 28.013989 +-1.600000 4.700000 27.168551 +-1.600000 4.800000 26.343113 +-1.600000 4.900000 25.537675 +-1.600000 5.000000 24.752236 +-1.600000 5.100000 23.986798 +-1.600000 5.200000 23.241360 +-1.600000 5.300000 22.515921 +-1.600000 5.400000 21.810483 +-1.600000 5.500000 21.125045 +-1.600000 5.600000 20.459607 +-1.600000 5.700000 19.814168 +-1.600000 5.800000 19.188730 +-1.600000 5.900000 18.583292 +-1.600000 6.000000 17.997853 +-1.600000 6.100000 17.432415 +-1.600000 6.200000 16.886977 +-1.600000 6.300000 16.361539 +-1.600000 6.400000 15.856100 +-1.600000 6.500000 15.370662 +-1.600000 6.600000 14.905224 +-1.600000 6.700000 14.459785 +-1.600000 6.800000 14.034347 +-1.600000 6.900000 13.628909 +-1.600000 7.000000 13.243471 +-1.600000 7.100000 12.878032 +-1.600000 7.200000 12.532594 +-1.600000 7.300000 12.207156 +-1.600000 7.400000 11.901717 +-1.600000 7.500000 11.616279 +-1.600000 7.600000 11.350841 +-1.600000 7.700000 11.105403 +-1.600000 7.800000 10.879964 +-1.600000 7.900000 10.674526 +-1.600000 8.000000 10.489088 +-1.600000 8.100000 10.323649 +-1.600000 8.200000 10.178211 +-1.600000 8.300000 10.052773 +-1.600000 8.400000 9.947335 +-1.600000 8.500000 9.861896 +-1.600000 8.600000 9.796458 +-1.600000 8.700000 9.751020 +-1.600000 8.800000 9.725581 +-1.600000 8.900000 9.720143 +-1.600000 9.000000 9.734705 +-1.600000 9.100000 9.769267 +-1.600000 9.200000 9.823828 +-1.600000 9.300000 9.898390 +-1.600000 9.400000 9.992952 +-1.600000 9.500000 10.107513 +-1.600000 9.600000 10.242075 +-1.600000 9.700000 10.396637 +-1.600000 9.800000 10.571199 +-1.600000 9.900000 10.765760 +-1.600000 10.000000 10.980322 +-1.600000 10.100000 11.214884 +-1.600000 10.200000 11.469445 +-1.600000 10.300000 11.744007 +-1.600000 10.400000 12.038569 +-1.600000 10.500000 12.353131 +-1.600000 10.600000 12.687692 +-1.600000 10.700000 13.042254 +-1.600000 10.800000 13.416816 +-1.600000 10.900000 13.811377 +-1.600000 11.000000 14.225939 +-1.600000 11.100000 14.660501 +-1.600000 11.200000 15.115063 +-1.600000 11.300000 15.589624 +-1.600000 11.400000 16.084186 +-1.600000 11.500000 16.598748 +-1.600000 11.600000 17.133309 +-1.600000 11.700000 17.687871 +-1.600000 11.800000 18.262433 +-1.600000 11.900000 18.856995 +-1.600000 12.000000 19.471556 +-1.600000 12.100000 20.106118 +-1.600000 12.200000 20.760680 +-1.600000 12.300000 21.435241 +-1.600000 12.400000 22.129803 +-1.600000 12.500000 22.844365 +-1.600000 12.600000 23.578927 +-1.600000 12.700000 24.333488 +-1.600000 12.800000 25.108050 +-1.600000 12.900000 25.902612 +-1.600000 13.000000 26.717173 +-1.600000 13.100000 27.551735 +-1.600000 13.200000 28.406297 +-1.600000 13.300000 29.280859 +-1.600000 13.400000 30.175420 +-1.600000 13.500000 31.089982 +-1.600000 13.600000 32.024544 +-1.600000 13.700000 32.979105 +-1.600000 13.800000 33.953667 +-1.600000 13.900000 34.948229 +-1.600000 14.000000 35.962791 +-1.600000 14.100000 36.997352 +-1.600000 14.200000 38.051914 +-1.600000 14.300000 39.126476 +-1.600000 14.400000 40.221037 +-1.600000 14.500000 41.335599 +-1.600000 14.600000 42.470161 +-1.600000 14.700000 43.624723 +-1.600000 14.800000 44.799284 +-1.600000 14.900000 45.993846 +-1.600000 15.000000 47.208408 + +-1.500000 -5.000000 197.766618 +-1.500000 -4.900000 195.041020 +-1.500000 -4.800000 192.335422 +-1.500000 -4.700000 189.649824 +-1.500000 -4.600000 186.984226 +-1.500000 -4.500000 184.338628 +-1.500000 -4.400000 181.713030 +-1.500000 -4.300000 179.107433 +-1.500000 -4.200000 176.521835 +-1.500000 -4.100000 173.956237 +-1.500000 -4.000000 171.410639 +-1.500000 -3.900000 168.885041 +-1.500000 -3.800000 166.379443 +-1.500000 -3.700000 163.893845 +-1.500000 -3.600000 161.428248 +-1.500000 -3.500000 158.982650 +-1.500000 -3.400000 156.557052 +-1.500000 -3.300000 154.151454 +-1.500000 -3.200000 151.765856 +-1.500000 -3.100000 149.400258 +-1.500000 -3.000000 147.054660 +-1.500000 -2.900000 144.729063 +-1.500000 -2.800000 142.423465 +-1.500000 -2.700000 140.137867 +-1.500000 -2.600000 137.872269 +-1.500000 -2.500000 135.626671 +-1.500000 -2.400000 133.401073 +-1.500000 -2.300000 131.195475 +-1.500000 -2.200000 129.009878 +-1.500000 -2.100000 126.844280 +-1.500000 -2.000000 124.698682 +-1.500000 -1.900000 122.573084 +-1.500000 -1.800000 120.467486 +-1.500000 -1.700000 118.381888 +-1.500000 -1.600000 116.316290 +-1.500000 -1.500000 114.270693 +-1.500000 -1.400000 112.245095 +-1.500000 -1.300000 110.239497 +-1.500000 -1.200000 108.253899 +-1.500000 -1.100000 106.288301 +-1.500000 -1.000000 104.342703 +-1.500000 -0.900000 102.417105 +-1.500000 -0.800000 100.511508 +-1.500000 -0.700000 98.625910 +-1.500000 -0.600000 96.760312 +-1.500000 -0.500000 94.914714 +-1.500000 -0.400000 93.089116 +-1.500000 -0.300000 91.283518 +-1.500000 -0.200000 89.497920 +-1.500000 -0.100000 87.732323 +-1.500000 -0.000000 85.986725 +-1.500000 0.100000 84.261127 +-1.500000 0.200000 82.555529 +-1.500000 0.300000 80.869931 +-1.500000 0.400000 79.204333 +-1.500000 0.500000 77.558735 +-1.500000 0.600000 75.933138 +-1.500000 0.700000 74.327540 +-1.500000 0.800000 72.741942 +-1.500000 0.900000 71.176344 +-1.500000 1.000000 69.630746 +-1.500000 1.100000 68.105148 +-1.500000 1.200000 66.599550 +-1.500000 1.300000 65.113953 +-1.500000 1.400000 63.648355 +-1.500000 1.500000 62.202757 +-1.500000 1.600000 60.777159 +-1.500000 1.700000 59.371561 +-1.500000 1.800000 57.985963 +-1.500000 1.900000 56.620365 +-1.500000 2.000000 55.274768 +-1.500000 2.100000 53.949170 +-1.500000 2.200000 52.643572 +-1.500000 2.300000 51.357974 +-1.500000 2.400000 50.092376 +-1.500000 2.500000 48.846778 +-1.500000 2.600000 47.621180 +-1.500000 2.700000 46.415583 +-1.500000 2.800000 45.229985 +-1.500000 2.900000 44.064387 +-1.500000 3.000000 42.918789 +-1.500000 3.100000 41.793191 +-1.500000 3.200000 40.687593 +-1.500000 3.300000 39.601995 +-1.500000 3.400000 38.536398 +-1.500000 3.500000 37.490800 +-1.500000 3.600000 36.465202 +-1.500000 3.700000 35.459604 +-1.500000 3.800000 34.474006 +-1.500000 3.900000 33.508408 +-1.500000 4.000000 32.562810 +-1.500000 4.100000 31.637213 +-1.500000 4.200000 30.731615 +-1.500000 4.300000 29.846017 +-1.500000 4.400000 28.980419 +-1.500000 4.500000 28.134821 +-1.500000 4.600000 27.309223 +-1.500000 4.700000 26.503625 +-1.500000 4.800000 25.718028 +-1.500000 4.900000 24.952430 +-1.500000 5.000000 24.206832 +-1.500000 5.100000 23.481234 +-1.500000 5.200000 22.775636 +-1.500000 5.300000 22.090038 +-1.500000 5.400000 21.424440 +-1.500000 5.500000 20.778843 +-1.500000 5.600000 20.153245 +-1.500000 5.700000 19.547647 +-1.500000 5.800000 18.962049 +-1.500000 5.900000 18.396451 +-1.500000 6.000000 17.850853 +-1.500000 6.100000 17.325255 +-1.500000 6.200000 16.819658 +-1.500000 6.300000 16.334060 +-1.500000 6.400000 15.868462 +-1.500000 6.500000 15.422864 +-1.500000 6.600000 14.997266 +-1.500000 6.700000 14.591668 +-1.500000 6.800000 14.206070 +-1.500000 6.900000 13.840473 +-1.500000 7.000000 13.494875 +-1.500000 7.100000 13.169277 +-1.500000 7.200000 12.863679 +-1.500000 7.300000 12.578081 +-1.500000 7.400000 12.312483 +-1.500000 7.500000 12.066885 +-1.500000 7.600000 11.841287 +-1.500000 7.700000 11.635690 +-1.500000 7.800000 11.450092 +-1.500000 7.900000 11.284494 +-1.500000 8.000000 11.138896 +-1.500000 8.100000 11.013298 +-1.500000 8.200000 10.907700 +-1.500000 8.300000 10.822102 +-1.500000 8.400000 10.756505 +-1.500000 8.500000 10.710907 +-1.500000 8.600000 10.685309 +-1.500000 8.700000 10.679711 +-1.500000 8.800000 10.694113 +-1.500000 8.900000 10.728515 +-1.500000 9.000000 10.782917 +-1.500000 9.100000 10.857320 +-1.500000 9.200000 10.951722 +-1.500000 9.300000 11.066124 +-1.500000 9.400000 11.200526 +-1.500000 9.500000 11.354928 +-1.500000 9.600000 11.529330 +-1.500000 9.700000 11.723732 +-1.500000 9.800000 11.938135 +-1.500000 9.900000 12.172537 +-1.500000 10.000000 12.426939 +-1.500000 10.100000 12.701341 +-1.500000 10.200000 12.995743 +-1.500000 10.300000 13.310145 +-1.500000 10.400000 13.644547 +-1.500000 10.500000 13.998950 +-1.500000 10.600000 14.373352 +-1.500000 10.700000 14.767754 +-1.500000 10.800000 15.182156 +-1.500000 10.900000 15.616558 +-1.500000 11.000000 16.070960 +-1.500000 11.100000 16.545362 +-1.500000 11.200000 17.039765 +-1.500000 11.300000 17.554167 +-1.500000 11.400000 18.088569 +-1.500000 11.500000 18.642971 +-1.500000 11.600000 19.217373 +-1.500000 11.700000 19.811775 +-1.500000 11.800000 20.426177 +-1.500000 11.900000 21.060580 +-1.500000 12.000000 21.714982 +-1.500000 12.100000 22.389384 +-1.500000 12.200000 23.083786 +-1.500000 12.300000 23.798188 +-1.500000 12.400000 24.532590 +-1.500000 12.500000 25.286992 +-1.500000 12.600000 26.061395 +-1.500000 12.700000 26.855797 +-1.500000 12.800000 27.670199 +-1.500000 12.900000 28.504601 +-1.500000 13.000000 29.359003 +-1.500000 13.100000 30.233405 +-1.500000 13.200000 31.127807 +-1.500000 13.300000 32.042210 +-1.500000 13.400000 32.976612 +-1.500000 13.500000 33.931014 +-1.500000 13.600000 34.905416 +-1.500000 13.700000 35.899818 +-1.500000 13.800000 36.914220 +-1.500000 13.900000 37.948622 +-1.500000 14.000000 39.003025 +-1.500000 14.100000 40.077427 +-1.500000 14.200000 41.171829 +-1.500000 14.300000 42.286231 +-1.500000 14.400000 43.420633 +-1.500000 14.500000 44.575035 +-1.500000 14.600000 45.749437 +-1.500000 14.700000 46.943840 +-1.500000 14.800000 48.158242 +-1.500000 14.900000 49.392644 +-1.500000 15.000000 50.647046 + +-1.400000 -5.000000 193.379403 +-1.400000 -4.900000 190.693129 +-1.400000 -4.800000 188.026855 +-1.400000 -4.700000 185.380581 +-1.400000 -4.600000 182.754307 +-1.400000 -4.500000 180.148033 +-1.400000 -4.400000 177.561758 +-1.400000 -4.300000 174.995484 +-1.400000 -4.200000 172.449210 +-1.400000 -4.100000 169.922936 +-1.400000 -4.000000 167.416662 +-1.400000 -3.900000 164.930388 +-1.400000 -3.800000 162.464113 +-1.400000 -3.700000 160.017839 +-1.400000 -3.600000 157.591565 +-1.400000 -3.500000 155.185291 +-1.400000 -3.400000 152.799017 +-1.400000 -3.300000 150.432743 +-1.400000 -3.200000 148.086468 +-1.400000 -3.100000 145.760194 +-1.400000 -3.000000 143.453920 +-1.400000 -2.900000 141.167646 +-1.400000 -2.800000 138.901372 +-1.400000 -2.700000 136.655098 +-1.400000 -2.600000 134.428823 +-1.400000 -2.500000 132.222549 +-1.400000 -2.400000 130.036275 +-1.400000 -2.300000 127.870001 +-1.400000 -2.200000 125.723727 +-1.400000 -2.100000 123.597453 +-1.400000 -2.000000 121.491178 +-1.400000 -1.900000 119.404904 +-1.400000 -1.800000 117.338630 +-1.400000 -1.700000 115.292356 +-1.400000 -1.600000 113.266082 +-1.400000 -1.500000 111.259808 +-1.400000 -1.400000 109.273533 +-1.400000 -1.300000 107.307259 +-1.400000 -1.200000 105.360985 +-1.400000 -1.100000 103.434711 +-1.400000 -1.000000 101.528437 +-1.400000 -0.900000 99.642163 +-1.400000 -0.800000 97.775888 +-1.400000 -0.700000 95.929614 +-1.400000 -0.600000 94.103340 +-1.400000 -0.500000 92.297066 +-1.400000 -0.400000 90.510792 +-1.400000 -0.300000 88.744518 +-1.400000 -0.200000 86.998243 +-1.400000 -0.100000 85.271969 +-1.400000 -0.000000 83.565695 +-1.400000 0.100000 81.879421 +-1.400000 0.200000 80.213147 +-1.400000 0.300000 78.566872 +-1.400000 0.400000 76.940598 +-1.400000 0.500000 75.334324 +-1.400000 0.600000 73.748050 +-1.400000 0.700000 72.181776 +-1.400000 0.800000 70.635502 +-1.400000 0.900000 69.109227 +-1.400000 1.000000 67.602953 +-1.400000 1.100000 66.116679 +-1.400000 1.200000 64.650405 +-1.400000 1.300000 63.204131 +-1.400000 1.400000 61.777857 +-1.400000 1.500000 60.371582 +-1.400000 1.600000 58.985308 +-1.400000 1.700000 57.619034 +-1.400000 1.800000 56.272760 +-1.400000 1.900000 54.946486 +-1.400000 2.000000 53.640212 +-1.400000 2.100000 52.353937 +-1.400000 2.200000 51.087663 +-1.400000 2.300000 49.841389 +-1.400000 2.400000 48.615115 +-1.400000 2.500000 47.408841 +-1.400000 2.600000 46.222567 +-1.400000 2.700000 45.056292 +-1.400000 2.800000 43.910018 +-1.400000 2.900000 42.783744 +-1.400000 3.000000 41.677470 +-1.400000 3.100000 40.591196 +-1.400000 3.200000 39.524922 +-1.400000 3.300000 38.478647 +-1.400000 3.400000 37.452373 +-1.400000 3.500000 36.446099 +-1.400000 3.600000 35.459825 +-1.400000 3.700000 34.493551 +-1.400000 3.800000 33.547277 +-1.400000 3.900000 32.621002 +-1.400000 4.000000 31.714728 +-1.400000 4.100000 30.828454 +-1.400000 4.200000 29.962180 +-1.400000 4.300000 29.115906 +-1.400000 4.400000 28.289632 +-1.400000 4.500000 27.483357 +-1.400000 4.600000 26.697083 +-1.400000 4.700000 25.930809 +-1.400000 4.800000 25.184535 +-1.400000 4.900000 24.458261 +-1.400000 5.000000 23.751987 +-1.400000 5.100000 23.065712 +-1.400000 5.200000 22.399438 +-1.400000 5.300000 21.753164 +-1.400000 5.400000 21.126890 +-1.400000 5.500000 20.520616 +-1.400000 5.600000 19.934342 +-1.400000 5.700000 19.368067 +-1.400000 5.800000 18.821793 +-1.400000 5.900000 18.295519 +-1.400000 6.000000 17.789245 +-1.400000 6.100000 17.302971 +-1.400000 6.200000 16.836697 +-1.400000 6.300000 16.390422 +-1.400000 6.400000 15.964148 +-1.400000 6.500000 15.557874 +-1.400000 6.600000 15.171600 +-1.400000 6.700000 14.805326 +-1.400000 6.800000 14.459052 +-1.400000 6.900000 14.132777 +-1.400000 7.000000 13.826503 +-1.400000 7.100000 13.540229 +-1.400000 7.200000 13.273955 +-1.400000 7.300000 13.027681 +-1.400000 7.400000 12.801407 +-1.400000 7.500000 12.595132 +-1.400000 7.600000 12.408858 +-1.400000 7.700000 12.242584 +-1.400000 7.800000 12.096310 +-1.400000 7.900000 11.970036 +-1.400000 8.000000 11.863762 +-1.400000 8.100000 11.777487 +-1.400000 8.200000 11.711213 +-1.400000 8.300000 11.664939 +-1.400000 8.400000 11.638665 +-1.400000 8.500000 11.632391 +-1.400000 8.600000 11.646117 +-1.400000 8.700000 11.679842 +-1.400000 8.800000 11.733568 +-1.400000 8.900000 11.807294 +-1.400000 9.000000 11.901020 +-1.400000 9.100000 12.014746 +-1.400000 9.200000 12.148472 +-1.400000 9.300000 12.302197 +-1.400000 9.400000 12.475923 +-1.400000 9.500000 12.669649 +-1.400000 9.600000 12.883375 +-1.400000 9.700000 13.117101 +-1.400000 9.800000 13.370827 +-1.400000 9.900000 13.644552 +-1.400000 10.000000 13.938278 +-1.400000 10.100000 14.252004 +-1.400000 10.200000 14.585730 +-1.400000 10.300000 14.939456 +-1.400000 10.400000 15.313182 +-1.400000 10.500000 15.706907 +-1.400000 10.600000 16.120633 +-1.400000 10.700000 16.554359 +-1.400000 10.800000 17.008085 +-1.400000 10.900000 17.481811 +-1.400000 11.000000 17.975536 +-1.400000 11.100000 18.489262 +-1.400000 11.200000 19.022988 +-1.400000 11.300000 19.576714 +-1.400000 11.400000 20.150440 +-1.400000 11.500000 20.744166 +-1.400000 11.600000 21.357891 +-1.400000 11.700000 21.991617 +-1.400000 11.800000 22.645343 +-1.400000 11.900000 23.319069 +-1.400000 12.000000 24.012795 +-1.400000 12.100000 24.726521 +-1.400000 12.200000 25.460246 +-1.400000 12.300000 26.213972 +-1.400000 12.400000 26.987698 +-1.400000 12.500000 27.781424 +-1.400000 12.600000 28.595150 +-1.400000 12.700000 29.428876 +-1.400000 12.800000 30.282601 +-1.400000 12.900000 31.156327 +-1.400000 13.000000 32.050053 +-1.400000 13.100000 32.963779 +-1.400000 13.200000 33.897505 +-1.400000 13.300000 34.851231 +-1.400000 13.400000 35.824956 +-1.400000 13.500000 36.818682 +-1.400000 13.600000 37.832408 +-1.400000 13.700000 38.866134 +-1.400000 13.800000 39.919860 +-1.400000 13.900000 40.993586 +-1.400000 14.000000 42.087311 +-1.400000 14.100000 43.201037 +-1.400000 14.200000 44.334763 +-1.400000 14.300000 45.488489 +-1.400000 14.400000 46.662215 +-1.400000 14.500000 47.855941 +-1.400000 14.600000 49.069666 +-1.400000 14.700000 50.303392 +-1.400000 14.800000 51.557118 +-1.400000 14.900000 52.830844 +-1.400000 15.000000 54.124570 + +-1.300000 -5.000000 189.121854 +-1.300000 -4.900000 186.474387 +-1.300000 -4.800000 183.846920 +-1.300000 -4.700000 181.239452 +-1.300000 -4.600000 178.651985 +-1.300000 -4.500000 176.084518 +-1.300000 -4.400000 173.537051 +-1.300000 -4.300000 171.009583 +-1.300000 -4.200000 168.502116 +-1.300000 -4.100000 166.014649 +-1.300000 -4.000000 163.547182 +-1.300000 -3.900000 161.099715 +-1.300000 -3.800000 158.672247 +-1.300000 -3.700000 156.264780 +-1.300000 -3.600000 153.877313 +-1.300000 -3.500000 151.509846 +-1.300000 -3.400000 149.162379 +-1.300000 -3.300000 146.834911 +-1.300000 -3.200000 144.527444 +-1.300000 -3.100000 142.239977 +-1.300000 -3.000000 139.972510 +-1.300000 -2.900000 137.725042 +-1.300000 -2.800000 135.497575 +-1.300000 -2.700000 133.290108 +-1.300000 -2.600000 131.102641 +-1.300000 -2.500000 128.935174 +-1.300000 -2.400000 126.787706 +-1.300000 -2.300000 124.660239 +-1.300000 -2.200000 122.552772 +-1.300000 -2.100000 120.465305 +-1.300000 -2.000000 118.397838 +-1.300000 -1.900000 116.350370 +-1.300000 -1.800000 114.322903 +-1.300000 -1.700000 112.315436 +-1.300000 -1.600000 110.327969 +-1.300000 -1.500000 108.360501 +-1.300000 -1.400000 106.413034 +-1.300000 -1.300000 104.485567 +-1.300000 -1.200000 102.578100 +-1.300000 -1.100000 100.690633 +-1.300000 -1.000000 98.823165 +-1.300000 -0.900000 96.975698 +-1.300000 -0.800000 95.148231 +-1.300000 -0.700000 93.340764 +-1.300000 -0.600000 91.553296 +-1.300000 -0.500000 89.785829 +-1.300000 -0.400000 88.038362 +-1.300000 -0.300000 86.310895 +-1.300000 -0.200000 84.603428 +-1.300000 -0.100000 82.915960 +-1.300000 -0.000000 81.248493 +-1.300000 0.100000 79.601026 +-1.300000 0.200000 77.973559 +-1.300000 0.300000 76.366092 +-1.300000 0.400000 74.778624 +-1.300000 0.500000 73.211157 +-1.300000 0.600000 71.663690 +-1.300000 0.700000 70.136223 +-1.300000 0.800000 68.628755 +-1.300000 0.900000 67.141288 +-1.300000 1.000000 65.673821 +-1.300000 1.100000 64.226354 +-1.300000 1.200000 62.798887 +-1.300000 1.300000 61.391419 +-1.300000 1.400000 60.003952 +-1.300000 1.500000 58.636485 +-1.300000 1.600000 57.289018 +-1.300000 1.700000 55.961551 +-1.300000 1.800000 54.654083 +-1.300000 1.900000 53.366616 +-1.300000 2.000000 52.099149 +-1.300000 2.100000 50.851682 +-1.300000 2.200000 49.624214 +-1.300000 2.300000 48.416747 +-1.300000 2.400000 47.229280 +-1.300000 2.500000 46.061813 +-1.300000 2.600000 44.914346 +-1.300000 2.700000 43.786878 +-1.300000 2.800000 42.679411 +-1.300000 2.900000 41.591944 +-1.300000 3.000000 40.524477 +-1.300000 3.100000 39.477009 +-1.300000 3.200000 38.449542 +-1.300000 3.300000 37.442075 +-1.300000 3.400000 36.454608 +-1.300000 3.500000 35.487141 +-1.300000 3.600000 34.539673 +-1.300000 3.700000 33.612206 +-1.300000 3.800000 32.704739 +-1.300000 3.900000 31.817272 +-1.300000 4.000000 30.949805 +-1.300000 4.100000 30.102337 +-1.300000 4.200000 29.274870 +-1.300000 4.300000 28.467403 +-1.300000 4.400000 27.679936 +-1.300000 4.500000 26.912468 +-1.300000 4.600000 26.165001 +-1.300000 4.700000 25.437534 +-1.300000 4.800000 24.730067 +-1.300000 4.900000 24.042600 +-1.300000 5.000000 23.375132 +-1.300000 5.100000 22.727665 +-1.300000 5.200000 22.100198 +-1.300000 5.300000 21.492731 +-1.300000 5.400000 20.905264 +-1.300000 5.500000 20.337796 +-1.300000 5.600000 19.790329 +-1.300000 5.700000 19.262862 +-1.300000 5.800000 18.755395 +-1.300000 5.900000 18.267927 +-1.300000 6.000000 17.800460 +-1.300000 6.100000 17.352993 +-1.300000 6.200000 16.925526 +-1.300000 6.300000 16.518059 +-1.300000 6.400000 16.130591 +-1.300000 6.500000 15.763124 +-1.300000 6.600000 15.415657 +-1.300000 6.700000 15.088190 +-1.300000 6.800000 14.780723 +-1.300000 6.900000 14.493255 +-1.300000 7.000000 14.225788 +-1.300000 7.100000 13.978321 +-1.300000 7.200000 13.750854 +-1.300000 7.300000 13.543386 +-1.300000 7.400000 13.355919 +-1.300000 7.500000 13.188452 +-1.300000 7.600000 13.040985 +-1.300000 7.700000 12.913518 +-1.300000 7.800000 12.806050 +-1.300000 7.900000 12.718583 +-1.300000 8.000000 12.651116 +-1.300000 8.100000 12.603649 +-1.300000 8.200000 12.576181 +-1.300000 8.300000 12.568714 +-1.300000 8.400000 12.581247 +-1.300000 8.500000 12.613780 +-1.300000 8.600000 12.666313 +-1.300000 8.700000 12.738845 +-1.300000 8.800000 12.831378 +-1.300000 8.900000 12.943911 +-1.300000 9.000000 13.076444 +-1.300000 9.100000 13.228977 +-1.300000 9.200000 13.401509 +-1.300000 9.300000 13.594042 +-1.300000 9.400000 13.806575 +-1.300000 9.500000 14.039108 +-1.300000 9.600000 14.291640 +-1.300000 9.700000 14.564173 +-1.300000 9.800000 14.856706 +-1.300000 9.900000 15.169239 +-1.300000 10.000000 15.501772 +-1.300000 10.100000 15.854304 +-1.300000 10.200000 16.226837 +-1.300000 10.300000 16.619370 +-1.300000 10.400000 17.031903 +-1.300000 10.500000 17.464436 +-1.300000 10.600000 17.916968 +-1.300000 10.700000 18.389501 +-1.300000 10.800000 18.882034 +-1.300000 10.900000 19.394567 +-1.300000 11.000000 19.927099 +-1.300000 11.100000 20.479632 +-1.300000 11.200000 21.052165 +-1.300000 11.300000 21.644698 +-1.300000 11.400000 22.257231 +-1.300000 11.500000 22.889763 +-1.300000 11.600000 23.542296 +-1.300000 11.700000 24.214829 +-1.300000 11.800000 24.907362 +-1.300000 11.900000 25.619894 +-1.300000 12.000000 26.352427 +-1.300000 12.100000 27.104960 +-1.300000 12.200000 27.877493 +-1.300000 12.300000 28.670026 +-1.300000 12.400000 29.482558 +-1.300000 12.500000 30.315091 +-1.300000 12.600000 31.167624 +-1.300000 12.700000 32.040157 +-1.300000 12.800000 32.932690 +-1.300000 12.900000 33.845222 +-1.300000 13.000000 34.777755 +-1.300000 13.100000 35.730288 +-1.300000 13.200000 36.702821 +-1.300000 13.300000 37.695353 +-1.300000 13.400000 38.707886 +-1.300000 13.500000 39.740419 +-1.300000 13.600000 40.792952 +-1.300000 13.700000 41.865485 +-1.300000 13.800000 42.958017 +-1.300000 13.900000 44.070550 +-1.300000 14.000000 45.203083 +-1.300000 14.100000 46.355616 +-1.300000 14.200000 47.528149 +-1.300000 14.300000 48.720681 +-1.300000 14.400000 49.933214 +-1.300000 14.500000 51.165747 +-1.300000 14.600000 52.418280 +-1.300000 14.700000 53.690812 +-1.300000 14.800000 54.983345 +-1.300000 14.900000 56.295878 +-1.300000 15.000000 57.628411 + +-1.200000 -5.000000 184.981604 +-1.200000 -4.900000 182.372427 +-1.200000 -4.800000 179.783250 +-1.200000 -4.700000 177.214073 +-1.200000 -4.600000 174.664896 +-1.200000 -4.500000 172.135719 +-1.200000 -4.400000 169.626542 +-1.200000 -4.300000 167.137365 +-1.200000 -4.200000 164.668188 +-1.200000 -4.100000 162.219011 +-1.200000 -4.000000 159.789834 +-1.200000 -3.900000 157.380657 +-1.200000 -3.800000 154.991480 +-1.200000 -3.700000 152.622303 +-1.200000 -3.600000 150.273126 +-1.200000 -3.500000 147.943949 +-1.200000 -3.400000 145.634772 +-1.200000 -3.300000 143.345595 +-1.200000 -3.200000 141.076418 +-1.200000 -3.100000 138.827241 +-1.200000 -3.000000 136.598064 +-1.200000 -2.900000 134.388887 +-1.200000 -2.800000 132.199710 +-1.200000 -2.700000 130.030533 +-1.200000 -2.600000 127.881356 +-1.200000 -2.500000 125.752179 +-1.200000 -2.400000 123.643002 +-1.200000 -2.300000 121.553825 +-1.200000 -2.200000 119.484648 +-1.200000 -2.100000 117.435471 +-1.200000 -2.000000 115.406294 +-1.200000 -1.900000 113.397117 +-1.200000 -1.800000 111.407940 +-1.200000 -1.700000 109.438763 +-1.200000 -1.600000 107.489586 +-1.200000 -1.500000 105.560409 +-1.200000 -1.400000 103.651232 +-1.200000 -1.300000 101.762055 +-1.200000 -1.200000 99.892878 +-1.200000 -1.100000 98.043701 +-1.200000 -1.000000 96.214524 +-1.200000 -0.900000 94.405347 +-1.200000 -0.800000 92.616170 +-1.200000 -0.700000 90.846993 +-1.200000 -0.600000 89.097816 +-1.200000 -0.500000 87.368639 +-1.200000 -0.400000 85.659462 +-1.200000 -0.300000 83.970285 +-1.200000 -0.200000 82.301108 +-1.200000 -0.100000 80.651931 +-1.200000 -0.000000 79.022754 +-1.200000 0.100000 77.413577 +-1.200000 0.200000 75.824400 +-1.200000 0.300000 74.255223 +-1.200000 0.400000 72.706046 +-1.200000 0.500000 71.176869 +-1.200000 0.600000 69.667692 +-1.200000 0.700000 68.178515 +-1.200000 0.800000 66.709338 +-1.200000 0.900000 65.260161 +-1.200000 1.000000 63.830984 +-1.200000 1.100000 62.421807 +-1.200000 1.200000 61.032630 +-1.200000 1.300000 59.663453 +-1.200000 1.400000 58.314276 +-1.200000 1.500000 56.985099 +-1.200000 1.600000 55.675922 +-1.200000 1.700000 54.386745 +-1.200000 1.800000 53.117568 +-1.200000 1.900000 51.868391 +-1.200000 2.000000 50.639214 +-1.200000 2.100000 49.430037 +-1.200000 2.200000 48.240860 +-1.200000 2.300000 47.071683 +-1.200000 2.400000 45.922506 +-1.200000 2.500000 44.793329 +-1.200000 2.600000 43.684152 +-1.200000 2.700000 42.594975 +-1.200000 2.800000 41.525798 +-1.200000 2.900000 40.476621 +-1.200000 3.000000 39.447444 +-1.200000 3.100000 38.438267 +-1.200000 3.200000 37.449090 +-1.200000 3.300000 36.479913 +-1.200000 3.400000 35.530736 +-1.200000 3.500000 34.601559 +-1.200000 3.600000 33.692382 +-1.200000 3.700000 32.803205 +-1.200000 3.800000 31.934028 +-1.200000 3.900000 31.084851 +-1.200000 4.000000 30.255674 +-1.200000 4.100000 29.446497 +-1.200000 4.200000 28.657320 +-1.200000 4.300000 27.888143 +-1.200000 4.400000 27.138966 +-1.200000 4.500000 26.409789 +-1.200000 4.600000 25.700612 +-1.200000 4.700000 25.011435 +-1.200000 4.800000 24.342258 +-1.200000 4.900000 23.693081 +-1.200000 5.000000 23.063904 +-1.200000 5.100000 22.454727 +-1.200000 5.200000 21.865550 +-1.200000 5.300000 21.296373 +-1.200000 5.400000 20.747196 +-1.200000 5.500000 20.218019 +-1.200000 5.600000 19.708842 +-1.200000 5.700000 19.219665 +-1.200000 5.800000 18.750488 +-1.200000 5.900000 18.301311 +-1.200000 6.000000 17.872134 +-1.200000 6.100000 17.462957 +-1.200000 6.200000 17.073780 +-1.200000 6.300000 16.704603 +-1.200000 6.400000 16.355426 +-1.200000 6.500000 16.026249 +-1.200000 6.600000 15.717072 +-1.200000 6.700000 15.427895 +-1.200000 6.800000 15.158718 +-1.200000 6.900000 14.909541 +-1.200000 7.000000 14.680364 +-1.200000 7.100000 14.471187 +-1.200000 7.200000 14.282010 +-1.200000 7.300000 14.112833 +-1.200000 7.400000 13.963656 +-1.200000 7.500000 13.834479 +-1.200000 7.600000 13.725302 +-1.200000 7.700000 13.636125 +-1.200000 7.800000 13.566948 +-1.200000 7.900000 13.517771 +-1.200000 8.000000 13.488594 +-1.200000 8.100000 13.479417 +-1.200000 8.200000 13.490240 +-1.200000 8.300000 13.521063 +-1.200000 8.400000 13.571886 +-1.200000 8.500000 13.642709 +-1.200000 8.600000 13.733532 +-1.200000 8.700000 13.844355 +-1.200000 8.800000 13.975178 +-1.200000 8.900000 14.126001 +-1.200000 9.000000 14.296824 +-1.200000 9.100000 14.487647 +-1.200000 9.200000 14.698470 +-1.200000 9.300000 14.929293 +-1.200000 9.400000 15.180116 +-1.200000 9.500000 15.450939 +-1.200000 9.600000 15.741762 +-1.200000 9.700000 16.052585 +-1.200000 9.800000 16.383408 +-1.200000 9.900000 16.734231 +-1.200000 10.000000 17.105054 +-1.200000 10.100000 17.495877 +-1.200000 10.200000 17.906700 +-1.200000 10.300000 18.337523 +-1.200000 10.400000 18.788346 +-1.200000 10.500000 19.259169 +-1.200000 10.600000 19.749992 +-1.200000 10.700000 20.260815 +-1.200000 10.800000 20.791638 +-1.200000 10.900000 21.342461 +-1.200000 11.000000 21.913284 +-1.200000 11.100000 22.504107 +-1.200000 11.200000 23.114930 +-1.200000 11.300000 23.745753 +-1.200000 11.400000 24.396576 +-1.200000 11.500000 25.067399 +-1.200000 11.600000 25.758222 +-1.200000 11.700000 26.469045 +-1.200000 11.800000 27.199868 +-1.200000 11.900000 27.950691 +-1.200000 12.000000 28.721514 +-1.200000 12.100000 29.512337 +-1.200000 12.200000 30.323160 +-1.200000 12.300000 31.153983 +-1.200000 12.400000 32.004806 +-1.200000 12.500000 32.875629 +-1.200000 12.600000 33.766452 +-1.200000 12.700000 34.677275 +-1.200000 12.800000 35.608098 +-1.200000 12.900000 36.558921 +-1.200000 13.000000 37.529744 +-1.200000 13.100000 38.520567 +-1.200000 13.200000 39.531390 +-1.200000 13.300000 40.562213 +-1.200000 13.400000 41.613036 +-1.200000 13.500000 42.683859 +-1.200000 13.600000 43.774682 +-1.200000 13.700000 44.885505 +-1.200000 13.800000 46.016328 +-1.200000 13.900000 47.167151 +-1.200000 14.000000 48.337974 +-1.200000 14.100000 49.528797 +-1.200000 14.200000 50.739620 +-1.200000 14.300000 51.970443 +-1.200000 14.400000 53.221266 +-1.200000 14.500000 54.492089 +-1.200000 14.600000 55.782912 +-1.200000 14.700000 57.093735 +-1.200000 14.800000 58.424558 +-1.200000 14.900000 59.775381 +-1.200000 15.000000 61.146204 + +-1.100000 -5.000000 180.946585 +-1.100000 -4.900000 178.375182 +-1.100000 -4.800000 175.823778 +-1.100000 -4.700000 173.292375 +-1.100000 -4.600000 170.780971 +-1.100000 -4.500000 168.289568 +-1.100000 -4.400000 165.818164 +-1.100000 -4.300000 163.366760 +-1.100000 -4.200000 160.935357 +-1.100000 -4.100000 158.523953 +-1.100000 -4.000000 156.132550 +-1.100000 -3.900000 153.761146 +-1.100000 -3.800000 151.409743 +-1.100000 -3.700000 149.078339 +-1.100000 -3.600000 146.766936 +-1.100000 -3.500000 144.475532 +-1.100000 -3.400000 142.204129 +-1.100000 -3.300000 139.952725 +-1.100000 -3.200000 137.721322 +-1.100000 -3.100000 135.509918 +-1.100000 -3.000000 133.318515 +-1.100000 -2.900000 131.147111 +-1.100000 -2.800000 128.995708 +-1.100000 -2.700000 126.864304 +-1.100000 -2.600000 124.752901 +-1.100000 -2.500000 122.661497 +-1.100000 -2.400000 120.590093 +-1.100000 -2.300000 118.538690 +-1.100000 -2.200000 116.507286 +-1.100000 -2.100000 114.495883 +-1.100000 -2.000000 112.504479 +-1.100000 -1.900000 110.533076 +-1.100000 -1.800000 108.581672 +-1.100000 -1.700000 106.650269 +-1.100000 -1.600000 104.738865 +-1.100000 -1.500000 102.847462 +-1.100000 -1.400000 100.976058 +-1.100000 -1.300000 99.124655 +-1.100000 -1.200000 97.293251 +-1.100000 -1.100000 95.481848 +-1.100000 -1.000000 93.690444 +-1.100000 -0.900000 91.919041 +-1.100000 -0.800000 90.167637 +-1.100000 -0.700000 88.436234 +-1.100000 -0.600000 86.724830 +-1.100000 -0.500000 85.033426 +-1.100000 -0.400000 83.362023 +-1.100000 -0.300000 81.710619 +-1.100000 -0.200000 80.079216 +-1.100000 -0.100000 78.467812 +-1.100000 -0.000000 76.876409 +-1.100000 0.100000 75.305005 +-1.100000 0.200000 73.753602 +-1.100000 0.300000 72.222198 +-1.100000 0.400000 70.710795 +-1.100000 0.500000 69.219391 +-1.100000 0.600000 67.747988 +-1.100000 0.700000 66.296584 +-1.100000 0.800000 64.865181 +-1.100000 0.900000 63.453777 +-1.100000 1.000000 62.062374 +-1.100000 1.100000 60.690970 +-1.100000 1.200000 59.339567 +-1.100000 1.300000 58.008163 +-1.100000 1.400000 56.696759 +-1.100000 1.500000 55.405356 +-1.100000 1.600000 54.133952 +-1.100000 1.700000 52.882549 +-1.100000 1.800000 51.651145 +-1.100000 1.900000 50.439742 +-1.100000 2.000000 49.248338 +-1.100000 2.100000 48.076935 +-1.100000 2.200000 46.925531 +-1.100000 2.300000 45.794128 +-1.100000 2.400000 44.682724 +-1.100000 2.500000 43.591321 +-1.100000 2.600000 42.519917 +-1.100000 2.700000 41.468514 +-1.100000 2.800000 40.437110 +-1.100000 2.900000 39.425707 +-1.100000 3.000000 38.434303 +-1.100000 3.100000 37.462900 +-1.100000 3.200000 36.511496 +-1.100000 3.300000 35.580092 +-1.100000 3.400000 34.668689 +-1.100000 3.500000 33.777285 +-1.100000 3.600000 32.905882 +-1.100000 3.700000 32.054478 +-1.100000 3.800000 31.223075 +-1.100000 3.900000 30.411671 +-1.100000 4.000000 29.620268 +-1.100000 4.100000 28.848864 +-1.100000 4.200000 28.097461 +-1.100000 4.300000 27.366057 +-1.100000 4.400000 26.654654 +-1.100000 4.500000 25.963250 +-1.100000 4.600000 25.291847 +-1.100000 4.700000 24.640443 +-1.100000 4.800000 24.009040 +-1.100000 4.900000 23.397636 +-1.100000 5.000000 22.806233 +-1.100000 5.100000 22.234829 +-1.100000 5.200000 21.683426 +-1.100000 5.300000 21.152022 +-1.100000 5.400000 20.640618 +-1.100000 5.500000 20.149215 +-1.100000 5.600000 19.677811 +-1.100000 5.700000 19.226408 +-1.100000 5.800000 18.795004 +-1.100000 5.900000 18.383601 +-1.100000 6.000000 17.992197 +-1.100000 6.100000 17.620794 +-1.100000 6.200000 17.269390 +-1.100000 6.300000 16.937987 +-1.100000 6.400000 16.626583 +-1.100000 6.500000 16.335180 +-1.100000 6.600000 16.063776 +-1.100000 6.700000 15.812373 +-1.100000 6.800000 15.580969 +-1.100000 6.900000 15.369566 +-1.100000 7.000000 15.178162 +-1.100000 7.100000 15.006759 +-1.100000 7.200000 14.855355 +-1.100000 7.300000 14.723951 +-1.100000 7.400000 14.612548 +-1.100000 7.500000 14.521144 +-1.100000 7.600000 14.449741 +-1.100000 7.700000 14.398337 +-1.100000 7.800000 14.366934 +-1.100000 7.900000 14.355530 +-1.100000 8.000000 14.364127 +-1.100000 8.100000 14.392723 +-1.100000 8.200000 14.441320 +-1.100000 8.300000 14.509916 +-1.100000 8.400000 14.598513 +-1.100000 8.500000 14.707109 +-1.100000 8.600000 14.835706 +-1.100000 8.700000 14.984302 +-1.100000 8.800000 15.152899 +-1.100000 8.900000 15.341495 +-1.100000 9.000000 15.550092 +-1.100000 9.100000 15.778688 +-1.100000 9.200000 16.027284 +-1.100000 9.300000 16.295881 +-1.100000 9.400000 16.584477 +-1.100000 9.500000 16.893074 +-1.100000 9.600000 17.221670 +-1.100000 9.700000 17.570267 +-1.100000 9.800000 17.938863 +-1.100000 9.900000 18.327460 +-1.100000 10.000000 18.736056 +-1.100000 10.100000 19.164653 +-1.100000 10.200000 19.613249 +-1.100000 10.300000 20.081846 +-1.100000 10.400000 20.570442 +-1.100000 10.500000 21.079039 +-1.100000 10.600000 21.607635 +-1.100000 10.700000 22.156232 +-1.100000 10.800000 22.724828 +-1.100000 10.900000 23.313425 +-1.100000 11.000000 23.922021 +-1.100000 11.100000 24.550617 +-1.100000 11.200000 25.199214 +-1.100000 11.300000 25.867810 +-1.100000 11.400000 26.556407 +-1.100000 11.500000 27.265003 +-1.100000 11.600000 27.993600 +-1.100000 11.700000 28.742196 +-1.100000 11.800000 29.510793 +-1.100000 11.900000 30.299389 +-1.100000 12.000000 31.107986 +-1.100000 12.100000 31.936582 +-1.100000 12.200000 32.785179 +-1.100000 12.300000 33.653775 +-1.100000 12.400000 34.542372 +-1.100000 12.500000 35.450968 +-1.100000 12.600000 36.379565 +-1.100000 12.700000 37.328161 +-1.100000 12.800000 38.296758 +-1.100000 12.900000 39.285354 +-1.100000 13.000000 40.293950 +-1.100000 13.100000 41.322547 +-1.100000 13.200000 42.371143 +-1.100000 13.300000 43.439740 +-1.100000 13.400000 44.528336 +-1.100000 13.500000 45.636933 +-1.100000 13.600000 46.765529 +-1.100000 13.700000 47.914126 +-1.100000 13.800000 49.082722 +-1.100000 13.900000 50.271319 +-1.100000 14.000000 51.479915 +-1.100000 14.100000 52.708512 +-1.100000 14.200000 53.957108 +-1.100000 14.300000 55.225705 +-1.100000 14.400000 56.514301 +-1.100000 14.500000 57.822898 +-1.100000 14.600000 59.151494 +-1.100000 14.700000 60.500091 +-1.100000 14.800000 61.868687 +-1.100000 14.900000 63.257283 +-1.100000 15.000000 64.665880 + +-1.000000 -5.000000 177.005116 +-1.000000 -4.900000 174.470969 +-1.000000 -4.800000 171.956822 +-1.000000 -4.700000 169.462675 +-1.000000 -4.600000 166.988528 +-1.000000 -4.500000 164.534382 +-1.000000 -4.400000 162.100235 +-1.000000 -4.300000 159.686088 +-1.000000 -4.200000 157.291941 +-1.000000 -4.100000 154.917794 +-1.000000 -4.000000 152.563648 +-1.000000 -3.900000 150.229501 +-1.000000 -3.800000 147.915354 +-1.000000 -3.700000 145.621207 +-1.000000 -3.600000 143.347061 +-1.000000 -3.500000 141.092914 +-1.000000 -3.400000 138.858767 +-1.000000 -3.300000 136.644620 +-1.000000 -3.200000 134.450473 +-1.000000 -3.100000 132.276327 +-1.000000 -3.000000 130.122180 +-1.000000 -2.900000 127.988033 +-1.000000 -2.800000 125.873886 +-1.000000 -2.700000 123.779739 +-1.000000 -2.600000 121.705593 +-1.000000 -2.500000 119.651446 +-1.000000 -2.400000 117.617299 +-1.000000 -2.300000 115.603152 +-1.000000 -2.200000 113.609006 +-1.000000 -2.100000 111.634859 +-1.000000 -2.000000 109.680712 +-1.000000 -1.900000 107.746565 +-1.000000 -1.800000 105.832418 +-1.000000 -1.700000 103.938272 +-1.000000 -1.600000 102.064125 +-1.000000 -1.500000 100.209978 +-1.000000 -1.400000 98.375831 +-1.000000 -1.300000 96.561684 +-1.000000 -1.200000 94.767538 +-1.000000 -1.100000 92.993391 +-1.000000 -1.000000 91.239244 +-1.000000 -0.900000 89.505097 +-1.000000 -0.800000 87.790950 +-1.000000 -0.700000 86.096804 +-1.000000 -0.600000 84.422657 +-1.000000 -0.500000 82.768510 +-1.000000 -0.400000 81.134363 +-1.000000 -0.300000 79.520217 +-1.000000 -0.200000 77.926070 +-1.000000 -0.100000 76.351923 +-1.000000 -0.000000 74.797776 +-1.000000 0.100000 73.263629 +-1.000000 0.200000 71.749483 +-1.000000 0.300000 70.255336 +-1.000000 0.400000 68.781189 +-1.000000 0.500000 67.327042 +-1.000000 0.600000 65.892895 +-1.000000 0.700000 64.478749 +-1.000000 0.800000 63.084602 +-1.000000 0.900000 61.710455 +-1.000000 1.000000 60.356308 +-1.000000 1.100000 59.022162 +-1.000000 1.200000 57.708015 +-1.000000 1.300000 56.413868 +-1.000000 1.400000 55.139721 +-1.000000 1.500000 53.885574 +-1.000000 1.600000 52.651428 +-1.000000 1.700000 51.437281 +-1.000000 1.800000 50.243134 +-1.000000 1.900000 49.068987 +-1.000000 2.000000 47.914840 +-1.000000 2.100000 46.780694 +-1.000000 2.200000 45.666547 +-1.000000 2.300000 44.572400 +-1.000000 2.400000 43.498253 +-1.000000 2.500000 42.444106 +-1.000000 2.600000 41.409960 +-1.000000 2.700000 40.395813 +-1.000000 2.800000 39.401666 +-1.000000 2.900000 38.427519 +-1.000000 3.000000 37.473373 +-1.000000 3.100000 36.539226 +-1.000000 3.200000 35.625079 +-1.000000 3.300000 34.730932 +-1.000000 3.400000 33.856785 +-1.000000 3.500000 33.002639 +-1.000000 3.600000 32.168492 +-1.000000 3.700000 31.354345 +-1.000000 3.800000 30.560198 +-1.000000 3.900000 29.786051 +-1.000000 4.000000 29.031905 +-1.000000 4.100000 28.297758 +-1.000000 4.200000 27.583611 +-1.000000 4.300000 26.889464 +-1.000000 4.400000 26.215318 +-1.000000 4.500000 25.561171 +-1.000000 4.600000 24.927024 +-1.000000 4.700000 24.312877 +-1.000000 4.800000 23.718730 +-1.000000 4.900000 23.144584 +-1.000000 5.000000 22.590437 +-1.000000 5.100000 22.056290 +-1.000000 5.200000 21.542143 +-1.000000 5.300000 21.047996 +-1.000000 5.400000 20.573850 +-1.000000 5.500000 20.119703 +-1.000000 5.600000 19.685556 +-1.000000 5.700000 19.271409 +-1.000000 5.800000 18.877262 +-1.000000 5.900000 18.503116 +-1.000000 6.000000 18.148969 +-1.000000 6.100000 17.814822 +-1.000000 6.200000 17.500675 +-1.000000 6.300000 17.206529 +-1.000000 6.400000 16.932382 +-1.000000 6.500000 16.678235 +-1.000000 6.600000 16.444088 +-1.000000 6.700000 16.229941 +-1.000000 6.800000 16.035795 +-1.000000 6.900000 15.861648 +-1.000000 7.000000 15.707501 +-1.000000 7.100000 15.573354 +-1.000000 7.200000 15.459207 +-1.000000 7.300000 15.365061 +-1.000000 7.400000 15.290914 +-1.000000 7.500000 15.236767 +-1.000000 7.600000 15.202620 +-1.000000 7.700000 15.188473 +-1.000000 7.800000 15.194327 +-1.000000 7.900000 15.220180 +-1.000000 8.000000 15.266033 +-1.000000 8.100000 15.331886 +-1.000000 8.200000 15.417740 +-1.000000 8.300000 15.523593 +-1.000000 8.400000 15.649446 +-1.000000 8.500000 15.795299 +-1.000000 8.600000 15.961152 +-1.000000 8.700000 16.147006 +-1.000000 8.800000 16.352859 +-1.000000 8.900000 16.578712 +-1.000000 9.000000 16.824565 +-1.000000 9.100000 17.090418 +-1.000000 9.200000 17.376272 +-1.000000 9.300000 17.682125 +-1.000000 9.400000 18.007978 +-1.000000 9.500000 18.353831 +-1.000000 9.600000 18.719685 +-1.000000 9.700000 19.105538 +-1.000000 9.800000 19.511391 +-1.000000 9.900000 19.937244 +-1.000000 10.000000 20.383097 +-1.000000 10.100000 20.848951 +-1.000000 10.200000 21.334804 +-1.000000 10.300000 21.840657 +-1.000000 10.400000 22.366510 +-1.000000 10.500000 22.912363 +-1.000000 10.600000 23.478217 +-1.000000 10.700000 24.064070 +-1.000000 10.800000 24.669923 +-1.000000 10.900000 25.295776 +-1.000000 11.000000 25.941629 +-1.000000 11.100000 26.607483 +-1.000000 11.200000 27.293336 +-1.000000 11.300000 27.999189 +-1.000000 11.400000 28.725042 +-1.000000 11.500000 29.470896 +-1.000000 11.600000 30.236749 +-1.000000 11.700000 31.022602 +-1.000000 11.800000 31.828455 +-1.000000 11.900000 32.654308 +-1.000000 12.000000 33.500162 +-1.000000 12.100000 34.366015 +-1.000000 12.200000 35.251868 +-1.000000 12.300000 36.157721 +-1.000000 12.400000 37.083574 +-1.000000 12.500000 38.029428 +-1.000000 12.600000 38.995281 +-1.000000 12.700000 39.981134 +-1.000000 12.800000 40.986987 +-1.000000 12.900000 42.012841 +-1.000000 13.000000 43.058694 +-1.000000 13.100000 44.124547 +-1.000000 13.200000 45.210400 +-1.000000 13.300000 46.316253 +-1.000000 13.400000 47.442107 +-1.000000 13.500000 48.587960 +-1.000000 13.600000 49.753813 +-1.000000 13.700000 50.939666 +-1.000000 13.800000 52.145519 +-1.000000 13.900000 53.371373 +-1.000000 14.000000 54.617226 +-1.000000 14.100000 55.883079 +-1.000000 14.200000 57.168932 +-1.000000 14.300000 58.474785 +-1.000000 14.400000 59.800639 +-1.000000 14.500000 61.146492 +-1.000000 14.600000 62.512345 +-1.000000 14.700000 63.898198 +-1.000000 14.800000 65.304052 +-1.000000 14.900000 66.729905 +-1.000000 15.000000 68.175758 + +-0.900000 -5.000000 173.145989 +-0.900000 -4.900000 170.648582 +-0.900000 -4.800000 168.171175 +-0.900000 -4.700000 165.713769 +-0.900000 -4.600000 163.276362 +-0.900000 -4.500000 160.858955 +-0.900000 -4.400000 158.461548 +-0.900000 -4.300000 156.084141 +-0.900000 -4.200000 153.726735 +-0.900000 -4.100000 151.389328 +-0.900000 -4.000000 149.071921 +-0.900000 -3.900000 146.774514 +-0.900000 -3.800000 144.497107 +-0.900000 -3.700000 142.239701 +-0.900000 -3.600000 140.002294 +-0.900000 -3.500000 137.784887 +-0.900000 -3.400000 135.587480 +-0.900000 -3.300000 133.410074 +-0.900000 -3.200000 131.252667 +-0.900000 -3.100000 129.115260 +-0.900000 -3.000000 126.997853 +-0.900000 -2.900000 124.900446 +-0.900000 -2.800000 122.823040 +-0.900000 -2.700000 120.765633 +-0.900000 -2.600000 118.728226 +-0.900000 -2.500000 116.710819 +-0.900000 -2.400000 114.713412 +-0.900000 -2.300000 112.736006 +-0.900000 -2.200000 110.778599 +-0.900000 -2.100000 108.841192 +-0.900000 -2.000000 106.923785 +-0.900000 -1.900000 105.026379 +-0.900000 -1.800000 103.148972 +-0.900000 -1.700000 101.291565 +-0.900000 -1.600000 99.454158 +-0.900000 -1.500000 97.636751 +-0.900000 -1.400000 95.839345 +-0.900000 -1.300000 94.061938 +-0.900000 -1.200000 92.304531 +-0.900000 -1.100000 90.567124 +-0.900000 -1.000000 88.849717 +-0.900000 -0.900000 87.152311 +-0.900000 -0.800000 85.474904 +-0.900000 -0.700000 83.817497 +-0.900000 -0.600000 82.180090 +-0.900000 -0.500000 80.562683 +-0.900000 -0.400000 78.965277 +-0.900000 -0.300000 77.387870 +-0.900000 -0.200000 75.830463 +-0.900000 -0.100000 74.293056 +-0.900000 -0.000000 72.775650 +-0.900000 0.100000 71.278243 +-0.900000 0.200000 69.800836 +-0.900000 0.300000 68.343429 +-0.900000 0.400000 66.906022 +-0.900000 0.500000 65.488616 +-0.900000 0.600000 64.091209 +-0.900000 0.700000 62.713802 +-0.900000 0.800000 61.356395 +-0.900000 0.900000 60.018988 +-0.900000 1.000000 58.701582 +-0.900000 1.100000 57.404175 +-0.900000 1.200000 56.126768 +-0.900000 1.300000 54.869361 +-0.900000 1.400000 53.631955 +-0.900000 1.500000 52.414548 +-0.900000 1.600000 51.217141 +-0.900000 1.700000 50.039734 +-0.900000 1.800000 48.882327 +-0.900000 1.900000 47.744921 +-0.900000 2.000000 46.627514 +-0.900000 2.100000 45.530107 +-0.900000 2.200000 44.452700 +-0.900000 2.300000 43.395293 +-0.900000 2.400000 42.357887 +-0.900000 2.500000 41.340480 +-0.900000 2.600000 40.343073 +-0.900000 2.700000 39.365666 +-0.900000 2.800000 38.408259 +-0.900000 2.900000 37.470853 +-0.900000 3.000000 36.553446 +-0.900000 3.100000 35.656039 +-0.900000 3.200000 34.778632 +-0.900000 3.300000 33.921226 +-0.900000 3.400000 33.083819 +-0.900000 3.500000 32.266412 +-0.900000 3.600000 31.469005 +-0.900000 3.700000 30.691598 +-0.900000 3.800000 29.934192 +-0.900000 3.900000 29.196785 +-0.900000 4.000000 28.479378 +-0.900000 4.100000 27.781971 +-0.900000 4.200000 27.104564 +-0.900000 4.300000 26.447158 +-0.900000 4.400000 25.809751 +-0.900000 4.500000 25.192344 +-0.900000 4.600000 24.594937 +-0.900000 4.700000 24.017531 +-0.900000 4.800000 23.460124 +-0.900000 4.900000 22.922717 +-0.900000 5.000000 22.405310 +-0.900000 5.100000 21.907903 +-0.900000 5.200000 21.430497 +-0.900000 5.300000 20.973090 +-0.900000 5.400000 20.535683 +-0.900000 5.500000 20.118276 +-0.900000 5.600000 19.720869 +-0.900000 5.700000 19.343463 +-0.900000 5.800000 18.986056 +-0.900000 5.900000 18.648649 +-0.900000 6.000000 18.331242 +-0.900000 6.100000 18.033835 +-0.900000 6.200000 17.756429 +-0.900000 6.300000 17.499022 +-0.900000 6.400000 17.261615 +-0.900000 6.500000 17.044208 +-0.900000 6.600000 16.846802 +-0.900000 6.700000 16.669395 +-0.900000 6.800000 16.511988 +-0.900000 6.900000 16.374581 +-0.900000 7.000000 16.257174 +-0.900000 7.100000 16.159768 +-0.900000 7.200000 16.082361 +-0.900000 7.300000 16.024954 +-0.900000 7.400000 15.987547 +-0.900000 7.500000 15.970140 +-0.900000 7.600000 15.972734 +-0.900000 7.700000 15.995327 +-0.900000 7.800000 16.037920 +-0.900000 7.900000 16.100513 +-0.900000 8.000000 16.183107 +-0.900000 8.100000 16.285700 +-0.900000 8.200000 16.408293 +-0.900000 8.300000 16.550886 +-0.900000 8.400000 16.713479 +-0.900000 8.500000 16.896073 +-0.900000 8.600000 17.098666 +-0.900000 8.700000 17.321259 +-0.900000 8.800000 17.563852 +-0.900000 8.900000 17.826445 +-0.900000 9.000000 18.109039 +-0.900000 9.100000 18.411632 +-0.900000 9.200000 18.734225 +-0.900000 9.300000 19.076818 +-0.900000 9.400000 19.439411 +-0.900000 9.500000 19.822005 +-0.900000 9.600000 20.224598 +-0.900000 9.700000 20.647191 +-0.900000 9.800000 21.089784 +-0.900000 9.900000 21.552378 +-0.900000 10.000000 22.034971 +-0.900000 10.100000 22.537564 +-0.900000 10.200000 23.060157 +-0.900000 10.300000 23.602750 +-0.900000 10.400000 24.165344 +-0.900000 10.500000 24.747937 +-0.900000 10.600000 25.350530 +-0.900000 10.700000 25.973123 +-0.900000 10.800000 26.615716 +-0.900000 10.900000 27.278310 +-0.900000 11.000000 27.960903 +-0.900000 11.100000 28.663496 +-0.900000 11.200000 29.386089 +-0.900000 11.300000 30.128683 +-0.900000 11.400000 30.891276 +-0.900000 11.500000 31.673869 +-0.900000 11.600000 32.476462 +-0.900000 11.700000 33.299055 +-0.900000 11.800000 34.141649 +-0.900000 11.900000 35.004242 +-0.900000 12.000000 35.886835 +-0.900000 12.100000 36.789428 +-0.900000 12.200000 37.712021 +-0.900000 12.300000 38.654615 +-0.900000 12.400000 39.617208 +-0.900000 12.500000 40.599801 +-0.900000 12.600000 41.602394 +-0.900000 12.700000 42.624987 +-0.900000 12.800000 43.667581 +-0.900000 12.900000 44.730174 +-0.900000 13.000000 45.812767 +-0.900000 13.100000 46.915360 +-0.900000 13.200000 48.037954 +-0.900000 13.300000 49.180547 +-0.900000 13.400000 50.343140 +-0.900000 13.500000 51.525733 +-0.900000 13.600000 52.728326 +-0.900000 13.700000 53.950920 +-0.900000 13.800000 55.193513 +-0.900000 13.900000 56.456106 +-0.900000 14.000000 57.738699 +-0.900000 14.100000 59.041292 +-0.900000 14.200000 60.363886 +-0.900000 14.300000 61.706479 +-0.900000 14.400000 63.069072 +-0.900000 14.500000 64.451665 +-0.900000 14.600000 65.854258 +-0.900000 14.700000 67.276852 +-0.900000 14.800000 68.719445 +-0.900000 14.900000 70.182038 +-0.900000 15.000000 71.664631 + +-0.800000 -5.000000 169.358557 +-0.800000 -4.900000 166.897373 +-0.800000 -4.800000 164.456190 +-0.800000 -4.700000 162.035006 +-0.800000 -4.600000 159.633823 +-0.800000 -4.500000 157.252639 +-0.800000 -4.400000 154.891456 +-0.800000 -4.300000 152.550272 +-0.800000 -4.200000 150.229089 +-0.800000 -4.100000 147.927905 +-0.800000 -4.000000 145.646722 +-0.800000 -3.900000 143.385538 +-0.800000 -3.800000 141.144354 +-0.800000 -3.700000 138.923171 +-0.800000 -3.600000 136.721987 +-0.800000 -3.500000 134.540804 +-0.800000 -3.400000 132.379620 +-0.800000 -3.300000 130.238437 +-0.800000 -3.200000 128.117253 +-0.800000 -3.100000 126.016070 +-0.800000 -3.000000 123.934886 +-0.800000 -2.900000 121.873703 +-0.800000 -2.800000 119.832519 +-0.800000 -2.700000 117.811336 +-0.800000 -2.600000 115.810152 +-0.800000 -2.500000 113.828969 +-0.800000 -2.400000 111.867785 +-0.800000 -2.300000 109.926602 +-0.800000 -2.200000 108.005418 +-0.800000 -2.100000 106.104235 +-0.800000 -2.000000 104.223051 +-0.800000 -1.900000 102.361867 +-0.800000 -1.800000 100.520684 +-0.800000 -1.700000 98.699500 +-0.800000 -1.600000 96.898317 +-0.800000 -1.500000 95.117133 +-0.800000 -1.400000 93.355950 +-0.800000 -1.300000 91.614766 +-0.800000 -1.200000 89.893583 +-0.800000 -1.100000 88.192399 +-0.800000 -1.000000 86.511216 +-0.800000 -0.900000 84.850032 +-0.800000 -0.800000 83.208849 +-0.800000 -0.700000 81.587665 +-0.800000 -0.600000 79.986482 +-0.800000 -0.500000 78.405298 +-0.800000 -0.400000 76.844115 +-0.800000 -0.300000 75.302931 +-0.800000 -0.200000 73.781748 +-0.800000 -0.100000 72.280564 +-0.800000 -0.000000 70.799380 +-0.800000 0.100000 69.338197 +-0.800000 0.200000 67.897013 +-0.800000 0.300000 66.475830 +-0.800000 0.400000 65.074646 +-0.800000 0.500000 63.693463 +-0.800000 0.600000 62.332279 +-0.800000 0.700000 60.991096 +-0.800000 0.800000 59.669912 +-0.800000 0.900000 58.368729 +-0.800000 1.000000 57.087545 +-0.800000 1.100000 55.826362 +-0.800000 1.200000 54.585178 +-0.800000 1.300000 53.363995 +-0.800000 1.400000 52.162811 +-0.800000 1.500000 50.981628 +-0.800000 1.600000 49.820444 +-0.800000 1.700000 48.679261 +-0.800000 1.800000 47.558077 +-0.800000 1.900000 46.456893 +-0.800000 2.000000 45.375710 +-0.800000 2.100000 44.314526 +-0.800000 2.200000 43.273343 +-0.800000 2.300000 42.252159 +-0.800000 2.400000 41.250976 +-0.800000 2.500000 40.269792 +-0.800000 2.600000 39.308609 +-0.800000 2.700000 38.367425 +-0.800000 2.800000 37.446242 +-0.800000 2.900000 36.545058 +-0.800000 3.000000 35.663875 +-0.800000 3.100000 34.802691 +-0.800000 3.200000 33.961508 +-0.800000 3.300000 33.140324 +-0.800000 3.400000 32.339141 +-0.800000 3.500000 31.557957 +-0.800000 3.600000 30.796774 +-0.800000 3.700000 30.055590 +-0.800000 3.800000 29.334406 +-0.800000 3.900000 28.633223 +-0.800000 4.000000 27.952039 +-0.800000 4.100000 27.290856 +-0.800000 4.200000 26.649672 +-0.800000 4.300000 26.028489 +-0.800000 4.400000 25.427305 +-0.800000 4.500000 24.846122 +-0.800000 4.600000 24.284938 +-0.800000 4.700000 23.743755 +-0.800000 4.800000 23.222571 +-0.800000 4.900000 22.721388 +-0.800000 5.000000 22.240204 +-0.800000 5.100000 21.779021 +-0.800000 5.200000 21.337837 +-0.800000 5.300000 20.916654 +-0.800000 5.400000 20.515470 +-0.800000 5.500000 20.134287 +-0.800000 5.600000 19.773103 +-0.800000 5.700000 19.431920 +-0.800000 5.800000 19.110736 +-0.800000 5.900000 18.809552 +-0.800000 6.000000 18.528369 +-0.800000 6.100000 18.267185 +-0.800000 6.200000 18.026002 +-0.800000 6.300000 17.804818 +-0.800000 6.400000 17.603635 +-0.800000 6.500000 17.422451 +-0.800000 6.600000 17.261268 +-0.800000 6.700000 17.120084 +-0.800000 6.800000 16.998901 +-0.800000 6.900000 16.897717 +-0.800000 7.000000 16.816534 +-0.800000 7.100000 16.755350 +-0.800000 7.200000 16.714167 +-0.800000 7.300000 16.692983 +-0.800000 7.400000 16.691800 +-0.800000 7.500000 16.710616 +-0.800000 7.600000 16.749433 +-0.800000 7.700000 16.808249 +-0.800000 7.800000 16.887065 +-0.800000 7.900000 16.985882 +-0.800000 8.000000 17.104698 +-0.800000 8.100000 17.243515 +-0.800000 8.200000 17.402331 +-0.800000 8.300000 17.581148 +-0.800000 8.400000 17.779964 +-0.800000 8.500000 17.998781 +-0.800000 8.600000 18.237597 +-0.800000 8.700000 18.496414 +-0.800000 8.800000 18.775230 +-0.800000 8.900000 19.074047 +-0.800000 9.000000 19.392863 +-0.800000 9.100000 19.731680 +-0.800000 9.200000 20.090496 +-0.800000 9.300000 20.469313 +-0.800000 9.400000 20.868129 +-0.800000 9.500000 21.286946 +-0.800000 9.600000 21.725762 +-0.800000 9.700000 22.184578 +-0.800000 9.800000 22.663395 +-0.800000 9.900000 23.162211 +-0.800000 10.000000 23.681028 +-0.800000 10.100000 24.219844 +-0.800000 10.200000 24.778661 +-0.800000 10.300000 25.357477 +-0.800000 10.400000 25.956294 +-0.800000 10.500000 26.575110 +-0.800000 10.600000 27.213927 +-0.800000 10.700000 27.872743 +-0.800000 10.800000 28.551560 +-0.800000 10.900000 29.250376 +-0.800000 11.000000 29.969193 +-0.800000 11.100000 30.708009 +-0.800000 11.200000 31.466826 +-0.800000 11.300000 32.245642 +-0.800000 11.400000 33.044459 +-0.800000 11.500000 33.863275 +-0.800000 11.600000 34.702091 +-0.800000 11.700000 35.560908 +-0.800000 11.800000 36.439724 +-0.800000 11.900000 37.338541 +-0.800000 12.000000 38.257357 +-0.800000 12.100000 39.196174 +-0.800000 12.200000 40.154990 +-0.800000 12.300000 41.133807 +-0.800000 12.400000 42.132623 +-0.800000 12.500000 43.151440 +-0.800000 12.600000 44.190256 +-0.800000 12.700000 45.249073 +-0.800000 12.800000 46.327889 +-0.800000 12.900000 47.426706 +-0.800000 13.000000 48.545522 +-0.800000 13.100000 49.684339 +-0.800000 13.200000 50.843155 +-0.800000 13.300000 52.021972 +-0.800000 13.400000 53.220788 +-0.800000 13.500000 54.439604 +-0.800000 13.600000 55.678421 +-0.800000 13.700000 56.937237 +-0.800000 13.800000 58.216054 +-0.800000 13.900000 59.514870 +-0.800000 14.000000 60.833687 +-0.800000 14.100000 62.172503 +-0.800000 14.200000 63.531320 +-0.800000 14.300000 64.910136 +-0.800000 14.400000 66.308953 +-0.800000 14.500000 67.727769 +-0.800000 14.600000 69.166586 +-0.800000 14.700000 70.625402 +-0.800000 14.800000 72.104219 +-0.800000 14.900000 73.603035 +-0.800000 15.000000 75.121852 + +-0.700000 -5.000000 165.632807 +-0.700000 -4.900000 163.207330 +-0.700000 -4.800000 160.801853 +-0.700000 -4.700000 158.416376 +-0.700000 -4.600000 156.050899 +-0.700000 -4.500000 153.705422 +-0.700000 -4.400000 151.379945 +-0.700000 -4.300000 149.074468 +-0.700000 -4.200000 146.788991 +-0.700000 -4.100000 144.523514 +-0.700000 -4.000000 142.278037 +-0.700000 -3.900000 140.052560 +-0.700000 -3.800000 137.847083 +-0.700000 -3.700000 135.661606 +-0.700000 -3.600000 133.496129 +-0.700000 -3.500000 131.350652 +-0.700000 -3.400000 129.225175 +-0.700000 -3.300000 127.119698 +-0.700000 -3.200000 125.034221 +-0.700000 -3.100000 122.968744 +-0.700000 -3.000000 120.923267 +-0.700000 -2.900000 118.897789 +-0.700000 -2.800000 116.892312 +-0.700000 -2.700000 114.906835 +-0.700000 -2.600000 112.941358 +-0.700000 -2.500000 110.995881 +-0.700000 -2.400000 109.070404 +-0.700000 -2.300000 107.164927 +-0.700000 -2.200000 105.279450 +-0.700000 -2.100000 103.413973 +-0.700000 -2.000000 101.568496 +-0.700000 -1.900000 99.743019 +-0.700000 -1.800000 97.937542 +-0.700000 -1.700000 96.152065 +-0.700000 -1.600000 94.386588 +-0.700000 -1.500000 92.641111 +-0.700000 -1.400000 90.915634 +-0.700000 -1.300000 89.210157 +-0.700000 -1.200000 87.524680 +-0.700000 -1.100000 85.859203 +-0.700000 -1.000000 84.213726 +-0.700000 -0.900000 82.588249 +-0.700000 -0.800000 80.982772 +-0.700000 -0.700000 79.397295 +-0.700000 -0.600000 77.831818 +-0.700000 -0.500000 76.286341 +-0.700000 -0.400000 74.760864 +-0.700000 -0.300000 73.255387 +-0.700000 -0.200000 71.769910 +-0.700000 -0.100000 70.304433 +-0.700000 -0.000000 68.858956 +-0.700000 0.100000 67.433479 +-0.700000 0.200000 66.028002 +-0.700000 0.300000 64.642525 +-0.700000 0.400000 63.277048 +-0.700000 0.500000 61.931571 +-0.700000 0.600000 60.606094 +-0.700000 0.700000 59.300617 +-0.700000 0.800000 58.015140 +-0.700000 0.900000 56.749663 +-0.700000 1.000000 55.504186 +-0.700000 1.100000 54.278709 +-0.700000 1.200000 53.073232 +-0.700000 1.300000 51.887755 +-0.700000 1.400000 50.722278 +-0.700000 1.500000 49.576801 +-0.700000 1.600000 48.451324 +-0.700000 1.700000 47.345847 +-0.700000 1.800000 46.260370 +-0.700000 1.900000 45.194893 +-0.700000 2.000000 44.149416 +-0.700000 2.100000 43.123939 +-0.700000 2.200000 42.118462 +-0.700000 2.300000 41.132985 +-0.700000 2.400000 40.167508 +-0.700000 2.500000 39.222031 +-0.700000 2.600000 38.296554 +-0.700000 2.700000 37.391077 +-0.700000 2.800000 36.505600 +-0.700000 2.900000 35.640123 +-0.700000 3.000000 34.794646 +-0.700000 3.100000 33.969169 +-0.700000 3.200000 33.163692 +-0.700000 3.300000 32.378215 +-0.700000 3.400000 31.612738 +-0.700000 3.500000 30.867261 +-0.700000 3.600000 30.141784 +-0.700000 3.700000 29.436307 +-0.700000 3.800000 28.750830 +-0.700000 3.900000 28.085353 +-0.700000 4.000000 27.439876 +-0.700000 4.100000 26.814399 +-0.700000 4.200000 26.208922 +-0.700000 4.300000 25.623445 +-0.700000 4.400000 25.057968 +-0.700000 4.500000 24.512491 +-0.700000 4.600000 23.987014 +-0.700000 4.700000 23.481537 +-0.700000 4.800000 22.996060 +-0.700000 4.900000 22.530583 +-0.700000 5.000000 22.085106 +-0.700000 5.100000 21.659629 +-0.700000 5.200000 21.254152 +-0.700000 5.300000 20.868675 +-0.700000 5.400000 20.503198 +-0.700000 5.500000 20.157721 +-0.700000 5.600000 19.832244 +-0.700000 5.700000 19.526767 +-0.700000 5.800000 19.241290 +-0.700000 5.900000 18.975813 +-0.700000 6.000000 18.730336 +-0.700000 6.100000 18.504859 +-0.700000 6.200000 18.299382 +-0.700000 6.300000 18.113905 +-0.700000 6.400000 17.948428 +-0.700000 6.500000 17.802951 +-0.700000 6.600000 17.677474 +-0.700000 6.700000 17.571997 +-0.700000 6.800000 17.486520 +-0.700000 6.900000 17.421043 +-0.700000 7.000000 17.375566 +-0.700000 7.100000 17.350089 +-0.700000 7.200000 17.344612 +-0.700000 7.300000 17.359135 +-0.700000 7.400000 17.393658 +-0.700000 7.500000 17.448181 +-0.700000 7.600000 17.522704 +-0.700000 7.700000 17.617227 +-0.700000 7.800000 17.731750 +-0.700000 7.900000 17.866273 +-0.700000 8.000000 18.020796 +-0.700000 8.100000 18.195319 +-0.700000 8.200000 18.389842 +-0.700000 8.300000 18.604365 +-0.700000 8.400000 18.838888 +-0.700000 8.500000 19.093411 +-0.700000 8.600000 19.367934 +-0.700000 8.700000 19.662457 +-0.700000 8.800000 19.976980 +-0.700000 8.900000 20.311503 +-0.700000 9.000000 20.666026 +-0.700000 9.100000 21.040549 +-0.700000 9.200000 21.435072 +-0.700000 9.300000 21.849595 +-0.700000 9.400000 22.284118 +-0.700000 9.500000 22.738641 +-0.700000 9.600000 23.213164 +-0.700000 9.700000 23.707687 +-0.700000 9.800000 24.222210 +-0.700000 9.900000 24.756733 +-0.700000 10.000000 25.311256 +-0.700000 10.100000 25.885779 +-0.700000 10.200000 26.480302 +-0.700000 10.300000 27.094825 +-0.700000 10.400000 27.729348 +-0.700000 10.500000 28.383871 +-0.700000 10.600000 29.058394 +-0.700000 10.700000 29.752917 +-0.700000 10.800000 30.467440 +-0.700000 10.900000 31.201963 +-0.700000 11.000000 31.956486 +-0.700000 11.100000 32.731009 +-0.700000 11.200000 33.525532 +-0.700000 11.300000 34.340055 +-0.700000 11.400000 35.174578 +-0.700000 11.500000 36.029101 +-0.700000 11.600000 36.903624 +-0.700000 11.700000 37.798147 +-0.700000 11.800000 38.712670 +-0.700000 11.900000 39.647193 +-0.700000 12.000000 40.601716 +-0.700000 12.100000 41.576239 +-0.700000 12.200000 42.570762 +-0.700000 12.300000 43.585285 +-0.700000 12.400000 44.619808 +-0.700000 12.500000 45.674331 +-0.700000 12.600000 46.748854 +-0.700000 12.700000 47.843377 +-0.700000 12.800000 48.957900 +-0.700000 12.900000 50.092423 +-0.700000 13.000000 51.246946 +-0.700000 13.100000 52.421469 +-0.700000 13.200000 53.615992 +-0.700000 13.300000 54.830515 +-0.700000 13.400000 56.065038 +-0.700000 13.500000 57.319561 +-0.700000 13.600000 58.594084 +-0.700000 13.700000 59.888607 +-0.700000 13.800000 61.203130 +-0.700000 13.900000 62.537653 +-0.700000 14.000000 63.892176 +-0.700000 14.100000 65.266699 +-0.700000 14.200000 66.661222 +-0.700000 14.300000 68.075745 +-0.700000 14.400000 69.510268 +-0.700000 14.500000 70.964791 +-0.700000 14.600000 72.439314 +-0.700000 14.700000 73.933837 +-0.700000 14.800000 75.448360 +-0.700000 14.900000 76.982883 +-0.700000 15.000000 78.537406 + +-0.600000 -5.000000 161.959434 +-0.600000 -4.900000 159.569146 +-0.600000 -4.800000 157.198859 +-0.600000 -4.700000 154.848572 +-0.600000 -4.600000 152.518285 +-0.600000 -4.500000 150.207997 +-0.600000 -4.400000 147.917710 +-0.600000 -4.300000 145.647423 +-0.600000 -4.200000 143.397136 +-0.600000 -4.100000 141.166849 +-0.600000 -4.000000 138.956561 +-0.600000 -3.900000 136.766274 +-0.600000 -3.800000 134.595987 +-0.600000 -3.700000 132.445700 +-0.600000 -3.600000 130.315413 +-0.600000 -3.500000 128.205125 +-0.600000 -3.400000 126.114838 +-0.600000 -3.300000 124.044551 +-0.600000 -3.200000 121.994264 +-0.600000 -3.100000 119.963976 +-0.600000 -3.000000 117.953689 +-0.600000 -2.900000 115.963402 +-0.600000 -2.800000 113.993115 +-0.600000 -2.700000 112.042828 +-0.600000 -2.600000 110.112540 +-0.600000 -2.500000 108.202253 +-0.600000 -2.400000 106.311966 +-0.600000 -2.300000 104.441679 +-0.600000 -2.200000 102.591392 +-0.600000 -2.100000 100.761104 +-0.600000 -2.000000 98.950817 +-0.600000 -1.900000 97.160530 +-0.600000 -1.800000 95.390243 +-0.600000 -1.700000 93.639955 +-0.600000 -1.600000 91.909668 +-0.600000 -1.500000 90.199381 +-0.600000 -1.400000 88.509094 +-0.600000 -1.300000 86.838807 +-0.600000 -1.200000 85.188519 +-0.600000 -1.100000 83.558232 +-0.600000 -1.000000 81.947945 +-0.600000 -0.900000 80.357658 +-0.600000 -0.800000 78.787370 +-0.600000 -0.700000 77.237083 +-0.600000 -0.600000 75.706796 +-0.600000 -0.500000 74.196509 +-0.600000 -0.400000 72.706222 +-0.600000 -0.300000 71.235934 +-0.600000 -0.200000 69.785647 +-0.600000 -0.100000 68.355360 +-0.600000 -0.000000 66.945073 +-0.600000 0.100000 65.554786 +-0.600000 0.200000 64.184498 +-0.600000 0.300000 62.834211 +-0.600000 0.400000 61.503924 +-0.600000 0.500000 60.193637 +-0.600000 0.600000 58.903349 +-0.600000 0.700000 57.633062 +-0.600000 0.800000 56.382775 +-0.600000 0.900000 55.152488 +-0.600000 1.000000 53.942201 +-0.600000 1.100000 52.751913 +-0.600000 1.200000 51.581626 +-0.600000 1.300000 50.431339 +-0.600000 1.400000 49.301052 +-0.600000 1.500000 48.190765 +-0.600000 1.600000 47.100477 +-0.600000 1.700000 46.030190 +-0.600000 1.800000 44.979903 +-0.600000 1.900000 43.949616 +-0.600000 2.000000 42.939328 +-0.600000 2.100000 41.949041 +-0.600000 2.200000 40.978754 +-0.600000 2.300000 40.028467 +-0.600000 2.400000 39.098180 +-0.600000 2.500000 38.187892 +-0.600000 2.600000 37.297605 +-0.600000 2.700000 36.427318 +-0.600000 2.800000 35.577031 +-0.600000 2.900000 34.746743 +-0.600000 3.000000 33.936456 +-0.600000 3.100000 33.146169 +-0.600000 3.200000 32.375882 +-0.600000 3.300000 31.625595 +-0.600000 3.400000 30.895307 +-0.600000 3.500000 30.185020 +-0.600000 3.600000 29.494733 +-0.600000 3.700000 28.824446 +-0.600000 3.800000 28.174159 +-0.600000 3.900000 27.543871 +-0.600000 4.000000 26.933584 +-0.600000 4.100000 26.343297 +-0.600000 4.200000 25.773010 +-0.600000 4.300000 25.222722 +-0.600000 4.400000 24.692435 +-0.600000 4.500000 24.182148 +-0.600000 4.600000 23.691861 +-0.600000 4.700000 23.221574 +-0.600000 4.800000 22.771286 +-0.600000 4.900000 22.340999 +-0.600000 5.000000 21.930712 +-0.600000 5.100000 21.540425 +-0.600000 5.200000 21.170137 +-0.600000 5.300000 20.819850 +-0.600000 5.400000 20.489563 +-0.600000 5.500000 20.179276 +-0.600000 5.600000 19.888989 +-0.600000 5.700000 19.618701 +-0.600000 5.800000 19.368414 +-0.600000 5.900000 19.138127 +-0.600000 6.000000 18.927840 +-0.600000 6.100000 18.737553 +-0.600000 6.200000 18.567265 +-0.600000 6.300000 18.416978 +-0.600000 6.400000 18.286691 +-0.600000 6.500000 18.176404 +-0.600000 6.600000 18.086116 +-0.600000 6.700000 18.015829 +-0.600000 6.800000 17.965542 +-0.600000 6.900000 17.935255 +-0.600000 7.000000 17.924968 +-0.600000 7.100000 17.934680 +-0.600000 7.200000 17.964393 +-0.600000 7.300000 18.014106 +-0.600000 7.400000 18.083819 +-0.600000 7.500000 18.173532 +-0.600000 7.600000 18.283244 +-0.600000 7.700000 18.412957 +-0.600000 7.800000 18.562670 +-0.600000 7.900000 18.732383 +-0.600000 8.000000 18.922095 +-0.600000 8.100000 19.131808 +-0.600000 8.200000 19.361521 +-0.600000 8.300000 19.611234 +-0.600000 8.400000 19.880947 +-0.600000 8.500000 20.170659 +-0.600000 8.600000 20.480372 +-0.600000 8.700000 20.810085 +-0.600000 8.800000 21.159798 +-0.600000 8.900000 21.529510 +-0.600000 9.000000 21.919223 +-0.600000 9.100000 22.328936 +-0.600000 9.200000 22.758649 +-0.600000 9.300000 23.208362 +-0.600000 9.400000 23.678074 +-0.600000 9.500000 24.167787 +-0.600000 9.600000 24.677500 +-0.600000 9.700000 25.207213 +-0.600000 9.800000 25.756926 +-0.600000 9.900000 26.326638 +-0.600000 10.000000 26.916351 +-0.600000 10.100000 27.526064 +-0.600000 10.200000 28.155777 +-0.600000 10.300000 28.805489 +-0.600000 10.400000 29.475202 +-0.600000 10.500000 30.164915 +-0.600000 10.600000 30.874628 +-0.600000 10.700000 31.604341 +-0.600000 10.800000 32.354053 +-0.600000 10.900000 33.123766 +-0.600000 11.000000 33.913479 +-0.600000 11.100000 34.723192 +-0.600000 11.200000 35.552905 +-0.600000 11.300000 36.402617 +-0.600000 11.400000 37.272330 +-0.600000 11.500000 38.162043 +-0.600000 11.600000 39.071756 +-0.600000 11.700000 40.001468 +-0.600000 11.800000 40.951181 +-0.600000 11.900000 41.920894 +-0.600000 12.000000 42.910607 +-0.600000 12.100000 43.920320 +-0.600000 12.200000 44.950032 +-0.600000 12.300000 45.999745 +-0.600000 12.400000 47.069458 +-0.600000 12.500000 48.159171 +-0.600000 12.600000 49.268883 +-0.600000 12.700000 50.398596 +-0.600000 12.800000 51.548309 +-0.600000 12.900000 52.718022 +-0.600000 13.000000 53.907735 +-0.600000 13.100000 55.117447 +-0.600000 13.200000 56.347160 +-0.600000 13.300000 57.596873 +-0.600000 13.400000 58.866586 +-0.600000 13.500000 60.156299 +-0.600000 13.600000 61.466011 +-0.600000 13.700000 62.795724 +-0.600000 13.800000 64.145437 +-0.600000 13.900000 65.515150 +-0.600000 14.000000 66.904862 +-0.600000 14.100000 68.314575 +-0.600000 14.200000 69.744288 +-0.600000 14.300000 71.194001 +-0.600000 14.400000 72.663714 +-0.600000 14.500000 74.153426 +-0.600000 14.600000 75.663139 +-0.600000 14.700000 77.192852 +-0.600000 14.800000 78.742565 +-0.600000 14.900000 80.312278 +-0.600000 15.000000 81.901990 + +-0.500000 -5.000000 158.329906 +-0.500000 -4.900000 155.974292 +-0.500000 -4.800000 153.638678 +-0.500000 -4.700000 151.323064 +-0.500000 -4.600000 149.027450 +-0.500000 -4.500000 146.751836 +-0.500000 -4.400000 144.496221 +-0.500000 -4.300000 142.260607 +-0.500000 -4.200000 140.044993 +-0.500000 -4.100000 137.849379 +-0.500000 -4.000000 135.673765 +-0.500000 -3.900000 133.518151 +-0.500000 -3.800000 131.382536 +-0.500000 -3.700000 129.266922 +-0.500000 -3.600000 127.171308 +-0.500000 -3.500000 125.095694 +-0.500000 -3.400000 123.040080 +-0.500000 -3.300000 121.004466 +-0.500000 -3.200000 118.988851 +-0.500000 -3.100000 116.993237 +-0.500000 -3.000000 115.017623 +-0.500000 -2.900000 113.062009 +-0.500000 -2.800000 111.126395 +-0.500000 -2.700000 109.210781 +-0.500000 -2.600000 107.315166 +-0.500000 -2.500000 105.439552 +-0.500000 -2.400000 103.583938 +-0.500000 -2.300000 101.748324 +-0.500000 -2.200000 99.932710 +-0.500000 -2.100000 98.137096 +-0.500000 -2.000000 96.361481 +-0.500000 -1.900000 94.605867 +-0.500000 -1.800000 92.870253 +-0.500000 -1.700000 91.154639 +-0.500000 -1.600000 89.459025 +-0.500000 -1.500000 87.783411 +-0.500000 -1.400000 86.127796 +-0.500000 -1.300000 84.492182 +-0.500000 -1.200000 82.876568 +-0.500000 -1.100000 81.280954 +-0.500000 -1.000000 79.705340 +-0.500000 -0.900000 78.149726 +-0.500000 -0.800000 76.614111 +-0.500000 -0.700000 75.098497 +-0.500000 -0.600000 73.602883 +-0.500000 -0.500000 72.127269 +-0.500000 -0.400000 70.671655 +-0.500000 -0.300000 69.236041 +-0.500000 -0.200000 67.820426 +-0.500000 -0.100000 66.424812 +-0.500000 -0.000000 65.049198 +-0.500000 0.100000 63.693584 +-0.500000 0.200000 62.357970 +-0.500000 0.300000 61.042356 +-0.500000 0.400000 59.746741 +-0.500000 0.500000 58.471127 +-0.500000 0.600000 57.215513 +-0.500000 0.700000 55.979899 +-0.500000 0.800000 54.764285 +-0.500000 0.900000 53.568671 +-0.500000 1.000000 52.393056 +-0.500000 1.100000 51.237442 +-0.500000 1.200000 50.101828 +-0.500000 1.300000 48.986214 +-0.500000 1.400000 47.890600 +-0.500000 1.500000 46.814986 +-0.500000 1.600000 45.759371 +-0.500000 1.700000 44.723757 +-0.500000 1.800000 43.708143 +-0.500000 1.900000 42.712529 +-0.500000 2.000000 41.736915 +-0.500000 2.100000 40.781301 +-0.500000 2.200000 39.845686 +-0.500000 2.300000 38.930072 +-0.500000 2.400000 38.034458 +-0.500000 2.500000 37.158844 +-0.500000 2.600000 36.303230 +-0.500000 2.700000 35.467615 +-0.500000 2.800000 34.652001 +-0.500000 2.900000 33.856387 +-0.500000 3.000000 33.080773 +-0.500000 3.100000 32.325159 +-0.500000 3.200000 31.589545 +-0.500000 3.300000 30.873930 +-0.500000 3.400000 30.178316 +-0.500000 3.500000 29.502702 +-0.500000 3.600000 28.847088 +-0.500000 3.700000 28.211474 +-0.500000 3.800000 27.595860 +-0.500000 3.900000 27.000245 +-0.500000 4.000000 26.424631 +-0.500000 4.100000 25.869017 +-0.500000 4.200000 25.333403 +-0.500000 4.300000 24.817789 +-0.500000 4.400000 24.322175 +-0.500000 4.500000 23.846560 +-0.500000 4.600000 23.390946 +-0.500000 4.700000 22.955332 +-0.500000 4.800000 22.539718 +-0.500000 4.900000 22.144104 +-0.500000 5.000000 21.768490 +-0.500000 5.100000 21.412875 +-0.500000 5.200000 21.077261 +-0.500000 5.300000 20.761647 +-0.500000 5.400000 20.466033 +-0.500000 5.500000 20.190419 +-0.500000 5.600000 19.934805 +-0.500000 5.700000 19.699190 +-0.500000 5.800000 19.483576 +-0.500000 5.900000 19.287962 +-0.500000 6.000000 19.112348 +-0.500000 6.100000 18.956734 +-0.500000 6.200000 18.821120 +-0.500000 6.300000 18.705505 +-0.500000 6.400000 18.609891 +-0.500000 6.500000 18.534277 +-0.500000 6.600000 18.478663 +-0.500000 6.700000 18.443049 +-0.500000 6.800000 18.427435 +-0.500000 6.900000 18.431820 +-0.500000 7.000000 18.456206 +-0.500000 7.100000 18.500592 +-0.500000 7.200000 18.564978 +-0.500000 7.300000 18.649364 +-0.500000 7.400000 18.753750 +-0.500000 7.500000 18.878135 +-0.500000 7.600000 19.022521 +-0.500000 7.700000 19.186907 +-0.500000 7.800000 19.371293 +-0.500000 7.900000 19.575679 +-0.500000 8.000000 19.800065 +-0.500000 8.100000 20.044450 +-0.500000 8.200000 20.308836 +-0.500000 8.300000 20.593222 +-0.500000 8.400000 20.897608 +-0.500000 8.500000 21.221994 +-0.500000 8.600000 21.566380 +-0.500000 8.700000 21.930765 +-0.500000 8.800000 22.315151 +-0.500000 8.900000 22.719537 +-0.500000 9.000000 23.143923 +-0.500000 9.100000 23.588309 +-0.500000 9.200000 24.052695 +-0.500000 9.300000 24.537080 +-0.500000 9.400000 25.041466 +-0.500000 9.500000 25.565852 +-0.500000 9.600000 26.110238 +-0.500000 9.700000 26.674624 +-0.500000 9.800000 27.259010 +-0.500000 9.900000 27.863395 +-0.500000 10.000000 28.487781 +-0.500000 10.100000 29.132167 +-0.500000 10.200000 29.796553 +-0.500000 10.300000 30.480939 +-0.500000 10.400000 31.185325 +-0.500000 10.500000 31.909710 +-0.500000 10.600000 32.654096 +-0.500000 10.700000 33.418482 +-0.500000 10.800000 34.202868 +-0.500000 10.900000 35.007254 +-0.500000 11.000000 35.831640 +-0.500000 11.100000 36.676025 +-0.500000 11.200000 37.540411 +-0.500000 11.300000 38.424797 +-0.500000 11.400000 39.329183 +-0.500000 11.500000 40.253569 +-0.500000 11.600000 41.197954 +-0.500000 11.700000 42.162340 +-0.500000 11.800000 43.146726 +-0.500000 11.900000 44.151112 +-0.500000 12.000000 45.175498 +-0.500000 12.100000 46.219884 +-0.500000 12.200000 47.284269 +-0.500000 12.300000 48.368655 +-0.500000 12.400000 49.473041 +-0.500000 12.500000 50.597427 +-0.500000 12.600000 51.741813 +-0.500000 12.700000 52.906199 +-0.500000 12.800000 54.090584 +-0.500000 12.900000 55.294970 +-0.500000 13.000000 56.519356 +-0.500000 13.100000 57.763742 +-0.500000 13.200000 59.028128 +-0.500000 13.300000 60.312514 +-0.500000 13.400000 61.616899 +-0.500000 13.500000 62.941285 +-0.500000 13.600000 64.285671 +-0.500000 13.700000 65.650057 +-0.500000 13.800000 67.034443 +-0.500000 13.900000 68.438829 +-0.500000 14.000000 69.863214 +-0.500000 14.100000 71.307600 +-0.500000 14.200000 72.771986 +-0.500000 14.300000 74.256372 +-0.500000 14.400000 75.760758 +-0.500000 14.500000 77.285144 +-0.500000 14.600000 78.829529 +-0.500000 14.700000 80.393915 +-0.500000 14.800000 81.978301 +-0.500000 14.900000 83.582687 +-0.500000 15.000000 85.207073 + +-0.400000 -5.000000 154.736525 +-0.400000 -4.900000 152.415067 +-0.400000 -4.800000 150.113609 +-0.400000 -4.700000 147.832152 +-0.400000 -4.600000 145.570694 +-0.400000 -4.500000 143.329236 +-0.400000 -4.400000 141.107778 +-0.400000 -4.300000 138.906320 +-0.400000 -4.200000 136.724862 +-0.400000 -4.100000 134.563404 +-0.400000 -4.000000 132.421947 +-0.400000 -3.900000 130.300489 +-0.400000 -3.800000 128.199031 +-0.400000 -3.700000 126.117573 +-0.400000 -3.600000 124.056115 +-0.400000 -3.500000 122.014657 +-0.400000 -3.400000 119.993199 +-0.400000 -3.300000 117.991741 +-0.400000 -3.200000 116.010284 +-0.400000 -3.100000 114.048826 +-0.400000 -3.000000 112.107368 +-0.400000 -2.900000 110.185910 +-0.400000 -2.800000 108.284452 +-0.400000 -2.700000 106.402994 +-0.400000 -2.600000 104.541536 +-0.400000 -2.500000 102.700079 +-0.400000 -2.400000 100.878621 +-0.400000 -2.300000 99.077163 +-0.400000 -2.200000 97.295705 +-0.400000 -2.100000 95.534247 +-0.400000 -2.000000 93.792789 +-0.400000 -1.900000 92.071331 +-0.400000 -1.800000 90.369874 +-0.400000 -1.700000 88.688416 +-0.400000 -1.600000 87.026958 +-0.400000 -1.500000 85.385500 +-0.400000 -1.400000 83.764042 +-0.400000 -1.300000 82.162584 +-0.400000 -1.200000 80.581126 +-0.400000 -1.100000 79.019669 +-0.400000 -1.000000 77.478211 +-0.400000 -0.900000 75.956753 +-0.400000 -0.800000 74.455295 +-0.400000 -0.700000 72.973837 +-0.400000 -0.600000 71.512379 +-0.400000 -0.500000 70.070921 +-0.400000 -0.400000 68.649464 +-0.400000 -0.300000 67.248006 +-0.400000 -0.200000 65.866548 +-0.400000 -0.100000 64.505090 +-0.400000 -0.000000 63.163632 +-0.400000 0.100000 61.842174 +-0.400000 0.200000 60.540716 +-0.400000 0.300000 59.259259 +-0.400000 0.400000 57.997801 +-0.400000 0.500000 56.756343 +-0.400000 0.600000 55.534885 +-0.400000 0.700000 54.333427 +-0.400000 0.800000 53.151969 +-0.400000 0.900000 51.990511 +-0.400000 1.000000 50.849054 +-0.400000 1.100000 49.727596 +-0.400000 1.200000 48.626138 +-0.400000 1.300000 47.544680 +-0.400000 1.400000 46.483222 +-0.400000 1.500000 45.441764 +-0.400000 1.600000 44.420306 +-0.400000 1.700000 43.418849 +-0.400000 1.800000 42.437391 +-0.400000 1.900000 41.475933 +-0.400000 2.000000 40.534475 +-0.400000 2.100000 39.613017 +-0.400000 2.200000 38.711559 +-0.400000 2.300000 37.830101 +-0.400000 2.400000 36.968644 +-0.400000 2.500000 36.127186 +-0.400000 2.600000 35.305728 +-0.400000 2.700000 34.504270 +-0.400000 2.800000 33.722812 +-0.400000 2.900000 32.961354 +-0.400000 3.000000 32.219896 +-0.400000 3.100000 31.498439 +-0.400000 3.200000 30.796981 +-0.400000 3.300000 30.115523 +-0.400000 3.400000 29.454065 +-0.400000 3.500000 28.812607 +-0.400000 3.600000 28.191149 +-0.400000 3.700000 27.589691 +-0.400000 3.800000 27.008234 +-0.400000 3.900000 26.446776 +-0.400000 4.000000 25.905318 +-0.400000 4.100000 25.383860 +-0.400000 4.200000 24.882402 +-0.400000 4.300000 24.400944 +-0.400000 4.400000 23.939486 +-0.400000 4.500000 23.498029 +-0.400000 4.600000 23.076571 +-0.400000 4.700000 22.675113 +-0.400000 4.800000 22.293655 +-0.400000 4.900000 21.932197 +-0.400000 5.000000 21.590739 +-0.400000 5.100000 21.269281 +-0.400000 5.200000 20.967824 +-0.400000 5.300000 20.686366 +-0.400000 5.400000 20.424908 +-0.400000 5.500000 20.183450 +-0.400000 5.600000 19.961992 +-0.400000 5.700000 19.760534 +-0.400000 5.800000 19.579076 +-0.400000 5.900000 19.417618 +-0.400000 6.000000 19.276161 +-0.400000 6.100000 19.154703 +-0.400000 6.200000 19.053245 +-0.400000 6.300000 18.971787 +-0.400000 6.400000 18.910329 +-0.400000 6.500000 18.868871 +-0.400000 6.600000 18.847413 +-0.400000 6.700000 18.845956 +-0.400000 6.800000 18.864498 +-0.400000 6.900000 18.903040 +-0.400000 7.000000 18.961582 +-0.400000 7.100000 19.040124 +-0.400000 7.200000 19.138666 +-0.400000 7.300000 19.257208 +-0.400000 7.400000 19.395751 +-0.400000 7.500000 19.554293 +-0.400000 7.600000 19.732835 +-0.400000 7.700000 19.931377 +-0.400000 7.800000 20.149919 +-0.400000 7.900000 20.388461 +-0.400000 8.000000 20.647003 +-0.400000 8.100000 20.925546 +-0.400000 8.200000 21.224088 +-0.400000 8.300000 21.542630 +-0.400000 8.400000 21.881172 +-0.400000 8.500000 22.239714 +-0.400000 8.600000 22.618256 +-0.400000 8.700000 23.016798 +-0.400000 8.800000 23.435341 +-0.400000 8.900000 23.873883 +-0.400000 9.000000 24.332425 +-0.400000 9.100000 24.810967 +-0.400000 9.200000 25.309509 +-0.400000 9.300000 25.828051 +-0.400000 9.400000 26.366593 +-0.400000 9.500000 26.925136 +-0.400000 9.600000 27.503678 +-0.400000 9.700000 28.102220 +-0.400000 9.800000 28.720762 +-0.400000 9.900000 29.359304 +-0.400000 10.000000 30.017846 +-0.400000 10.100000 30.696388 +-0.400000 10.200000 31.394931 +-0.400000 10.300000 32.113473 +-0.400000 10.400000 32.852015 +-0.400000 10.500000 33.610557 +-0.400000 10.600000 34.389099 +-0.400000 10.700000 35.187641 +-0.400000 10.800000 36.006183 +-0.400000 10.900000 36.844726 +-0.400000 11.000000 37.703268 +-0.400000 11.100000 38.581810 +-0.400000 11.200000 39.480352 +-0.400000 11.300000 40.398894 +-0.400000 11.400000 41.337436 +-0.400000 11.500000 42.295978 +-0.400000 11.600000 43.274521 +-0.400000 11.700000 44.273063 +-0.400000 11.800000 45.291605 +-0.400000 11.900000 46.330147 +-0.400000 12.000000 47.388689 +-0.400000 12.100000 48.467231 +-0.400000 12.200000 49.565773 +-0.400000 12.300000 50.684316 +-0.400000 12.400000 51.822858 +-0.400000 12.500000 52.981400 +-0.400000 12.600000 54.159942 +-0.400000 12.700000 55.358484 +-0.400000 12.800000 56.577026 +-0.400000 12.900000 57.815568 +-0.400000 13.000000 59.074111 +-0.400000 13.100000 60.352653 +-0.400000 13.200000 61.651195 +-0.400000 13.300000 62.969737 +-0.400000 13.400000 64.308279 +-0.400000 13.500000 65.666821 +-0.400000 13.600000 67.045363 +-0.400000 13.700000 68.443906 +-0.400000 13.800000 69.862448 +-0.400000 13.900000 71.300990 +-0.400000 14.000000 72.759532 +-0.400000 14.100000 74.238074 +-0.400000 14.200000 75.736616 +-0.400000 14.300000 77.255158 +-0.400000 14.400000 78.793700 +-0.400000 14.500000 80.352243 +-0.400000 14.600000 81.930785 +-0.400000 14.700000 83.529327 +-0.400000 14.800000 85.147869 +-0.400000 14.900000 86.786411 +-0.400000 15.000000 88.444953 + +-0.300000 -5.000000 151.172471 +-0.300000 -4.900000 148.884652 +-0.300000 -4.800000 146.616834 +-0.300000 -4.700000 144.369016 +-0.300000 -4.600000 142.141197 +-0.300000 -4.500000 139.933379 +-0.300000 -4.400000 137.745561 +-0.300000 -4.300000 135.577743 +-0.300000 -4.200000 133.429924 +-0.300000 -4.100000 131.302106 +-0.300000 -4.000000 129.194288 +-0.300000 -3.900000 127.106469 +-0.300000 -3.800000 125.038651 +-0.300000 -3.700000 122.990833 +-0.300000 -3.600000 120.963015 +-0.300000 -3.500000 118.955196 +-0.300000 -3.400000 116.967378 +-0.300000 -3.300000 114.999560 +-0.300000 -3.200000 113.051741 +-0.300000 -3.100000 111.123923 +-0.300000 -3.000000 109.216105 +-0.300000 -2.900000 107.328287 +-0.300000 -2.800000 105.460468 +-0.300000 -2.700000 103.612650 +-0.300000 -2.600000 101.784832 +-0.300000 -2.500000 99.977013 +-0.300000 -2.400000 98.189195 +-0.300000 -2.300000 96.421377 +-0.300000 -2.200000 94.673559 +-0.300000 -2.100000 92.945740 +-0.300000 -2.000000 91.237922 +-0.300000 -1.900000 89.550104 +-0.300000 -1.800000 87.882285 +-0.300000 -1.700000 86.234467 +-0.300000 -1.600000 84.606649 +-0.300000 -1.500000 82.998831 +-0.300000 -1.400000 81.411012 +-0.300000 -1.300000 79.843194 +-0.300000 -1.200000 78.295376 +-0.300000 -1.100000 76.767557 +-0.300000 -1.000000 75.259739 +-0.300000 -0.900000 73.771921 +-0.300000 -0.800000 72.304103 +-0.300000 -0.700000 70.856284 +-0.300000 -0.600000 69.428466 +-0.300000 -0.500000 68.020648 +-0.300000 -0.400000 66.632829 +-0.300000 -0.300000 65.265011 +-0.300000 -0.200000 63.917193 +-0.300000 -0.100000 62.589375 +-0.300000 -0.000000 61.281556 +-0.300000 0.100000 59.993738 +-0.300000 0.200000 58.725920 +-0.300000 0.300000 57.478101 +-0.300000 0.400000 56.250283 +-0.300000 0.500000 55.042465 +-0.300000 0.600000 53.854647 +-0.300000 0.700000 52.686828 +-0.300000 0.800000 51.539010 +-0.300000 0.900000 50.411192 +-0.300000 1.000000 49.303373 +-0.300000 1.100000 48.215555 +-0.300000 1.200000 47.147737 +-0.300000 1.300000 46.099919 +-0.300000 1.400000 45.072100 +-0.300000 1.500000 44.064282 +-0.300000 1.600000 43.076464 +-0.300000 1.700000 42.108645 +-0.300000 1.800000 41.160827 +-0.300000 1.900000 40.233009 +-0.300000 2.000000 39.325190 +-0.300000 2.100000 38.437372 +-0.300000 2.200000 37.569554 +-0.300000 2.300000 36.721736 +-0.300000 2.400000 35.893917 +-0.300000 2.500000 35.086099 +-0.300000 2.600000 34.298281 +-0.300000 2.700000 33.530462 +-0.300000 2.800000 32.782644 +-0.300000 2.900000 32.054826 +-0.300000 3.000000 31.347008 +-0.300000 3.100000 30.659189 +-0.300000 3.200000 29.991371 +-0.300000 3.300000 29.343553 +-0.300000 3.400000 28.715734 +-0.300000 3.500000 28.107916 +-0.300000 3.600000 27.520098 +-0.300000 3.700000 26.952280 +-0.300000 3.800000 26.404461 +-0.300000 3.900000 25.876643 +-0.300000 4.000000 25.368825 +-0.300000 4.100000 24.881006 +-0.300000 4.200000 24.413188 +-0.300000 4.300000 23.965370 +-0.300000 4.400000 23.537552 +-0.300000 4.500000 23.129733 +-0.300000 4.600000 22.741915 +-0.300000 4.700000 22.374097 +-0.300000 4.800000 22.026278 +-0.300000 4.900000 21.698460 +-0.300000 5.000000 21.390642 +-0.300000 5.100000 21.102824 +-0.300000 5.200000 20.835005 +-0.300000 5.300000 20.587187 +-0.300000 5.400000 20.359369 +-0.300000 5.500000 20.151550 +-0.300000 5.600000 19.963732 +-0.300000 5.700000 19.795914 +-0.300000 5.800000 19.648096 +-0.300000 5.900000 19.520277 +-0.300000 6.000000 19.412459 +-0.300000 6.100000 19.324641 +-0.300000 6.200000 19.256822 +-0.300000 6.300000 19.209004 +-0.300000 6.400000 19.181186 +-0.300000 6.500000 19.173368 +-0.300000 6.600000 19.185549 +-0.300000 6.700000 19.217731 +-0.300000 6.800000 19.269913 +-0.300000 6.900000 19.342094 +-0.300000 7.000000 19.434276 +-0.300000 7.100000 19.546458 +-0.300000 7.200000 19.678640 +-0.300000 7.300000 19.830821 +-0.300000 7.400000 20.003003 +-0.300000 7.500000 20.195185 +-0.300000 7.600000 20.407366 +-0.300000 7.700000 20.639548 +-0.300000 7.800000 20.891730 +-0.300000 7.900000 21.163912 +-0.300000 8.000000 21.456093 +-0.300000 8.100000 21.768275 +-0.300000 8.200000 22.100457 +-0.300000 8.300000 22.452638 +-0.300000 8.400000 22.824820 +-0.300000 8.500000 23.217002 +-0.300000 8.600000 23.629184 +-0.300000 8.700000 24.061365 +-0.300000 8.800000 24.513547 +-0.300000 8.900000 24.985729 +-0.300000 9.000000 25.477910 +-0.300000 9.100000 25.990092 +-0.300000 9.200000 26.522274 +-0.300000 9.300000 27.074456 +-0.300000 9.400000 27.646637 +-0.300000 9.500000 28.238819 +-0.300000 9.600000 28.851001 +-0.300000 9.700000 29.483182 +-0.300000 9.800000 30.135364 +-0.300000 9.900000 30.807546 +-0.300000 10.000000 31.499728 +-0.300000 10.100000 32.211909 +-0.300000 10.200000 32.944091 +-0.300000 10.300000 33.696273 +-0.300000 10.400000 34.468454 +-0.300000 10.500000 35.260636 +-0.300000 10.600000 36.072818 +-0.300000 10.700000 36.905000 +-0.300000 10.800000 37.757181 +-0.300000 10.900000 38.629363 +-0.300000 11.000000 39.521545 +-0.300000 11.100000 40.433726 +-0.300000 11.200000 41.365908 +-0.300000 11.300000 42.318090 +-0.300000 11.400000 43.290272 +-0.300000 11.500000 44.282453 +-0.300000 11.600000 45.294635 +-0.300000 11.700000 46.326817 +-0.300000 11.800000 47.378998 +-0.300000 11.900000 48.451180 +-0.300000 12.000000 49.543362 +-0.300000 12.100000 50.655544 +-0.300000 12.200000 51.787725 +-0.300000 12.300000 52.939907 +-0.300000 12.400000 54.112089 +-0.300000 12.500000 55.304270 +-0.300000 12.600000 56.516452 +-0.300000 12.700000 57.748634 +-0.300000 12.800000 59.000815 +-0.300000 12.900000 60.272997 +-0.300000 13.000000 61.565179 +-0.300000 13.100000 62.877361 +-0.300000 13.200000 64.209542 +-0.300000 13.300000 65.561724 +-0.300000 13.400000 66.933906 +-0.300000 13.500000 68.326087 +-0.300000 13.600000 69.738269 +-0.300000 13.700000 71.170451 +-0.300000 13.800000 72.622633 +-0.300000 13.900000 74.094814 +-0.300000 14.000000 75.586996 +-0.300000 14.100000 77.099178 +-0.300000 14.200000 78.631359 +-0.300000 14.300000 80.183541 +-0.300000 14.400000 81.755723 +-0.300000 14.500000 83.347905 +-0.300000 14.600000 84.960086 +-0.300000 14.700000 86.592268 +-0.300000 14.800000 88.244450 +-0.300000 14.900000 89.916631 +-0.300000 15.000000 91.608813 + +-0.200000 -5.000000 147.631847 +-0.200000 -4.900000 145.377152 +-0.200000 -4.800000 143.142456 +-0.200000 -4.700000 140.927761 +-0.200000 -4.600000 138.733065 +-0.200000 -4.500000 136.558370 +-0.200000 -4.400000 134.403674 +-0.200000 -4.300000 132.268979 +-0.200000 -4.200000 130.154283 +-0.200000 -4.100000 128.059588 +-0.200000 -4.000000 125.984893 +-0.200000 -3.900000 123.930197 +-0.200000 -3.800000 121.895502 +-0.200000 -3.700000 119.880806 +-0.200000 -3.600000 117.886111 +-0.200000 -3.500000 115.911415 +-0.200000 -3.400000 113.956720 +-0.200000 -3.300000 112.022024 +-0.200000 -3.200000 110.107329 +-0.200000 -3.100000 108.212633 +-0.200000 -3.000000 106.337938 +-0.200000 -2.900000 104.483243 +-0.200000 -2.800000 102.648547 +-0.200000 -2.700000 100.833852 +-0.200000 -2.600000 99.039156 +-0.200000 -2.500000 97.264461 +-0.200000 -2.400000 95.509765 +-0.200000 -2.300000 93.775070 +-0.200000 -2.200000 92.060374 +-0.200000 -2.100000 90.365679 +-0.200000 -2.000000 88.690983 +-0.200000 -1.900000 87.036288 +-0.200000 -1.800000 85.401593 +-0.200000 -1.700000 83.786897 +-0.200000 -1.600000 82.192202 +-0.200000 -1.500000 80.617506 +-0.200000 -1.400000 79.062811 +-0.200000 -1.300000 77.528115 +-0.200000 -1.200000 76.013420 +-0.200000 -1.100000 74.518724 +-0.200000 -1.000000 73.044029 +-0.200000 -0.900000 71.589333 +-0.200000 -0.800000 70.154638 +-0.200000 -0.700000 68.739943 +-0.200000 -0.600000 67.345247 +-0.200000 -0.500000 65.970552 +-0.200000 -0.400000 64.615856 +-0.200000 -0.300000 63.281161 +-0.200000 -0.200000 61.966465 +-0.200000 -0.100000 60.671770 +-0.200000 -0.000000 59.397074 +-0.200000 0.100000 58.142379 +-0.200000 0.200000 56.907684 +-0.200000 0.300000 55.692988 +-0.200000 0.400000 54.498293 +-0.200000 0.500000 53.323597 +-0.200000 0.600000 52.168902 +-0.200000 0.700000 51.034206 +-0.200000 0.800000 49.919511 +-0.200000 0.900000 48.824815 +-0.200000 1.000000 47.750120 +-0.200000 1.100000 46.695424 +-0.200000 1.200000 45.660729 +-0.200000 1.300000 44.646034 +-0.200000 1.400000 43.651338 +-0.200000 1.500000 42.676643 +-0.200000 1.600000 41.721947 +-0.200000 1.700000 40.787252 +-0.200000 1.800000 39.872556 +-0.200000 1.900000 38.977861 +-0.200000 2.000000 38.103165 +-0.200000 2.100000 37.248470 +-0.200000 2.200000 36.413774 +-0.200000 2.300000 35.599079 +-0.200000 2.400000 34.804384 +-0.200000 2.500000 34.029688 +-0.200000 2.600000 33.274993 +-0.200000 2.700000 32.540297 +-0.200000 2.800000 31.825602 +-0.200000 2.900000 31.130906 +-0.200000 3.000000 30.456211 +-0.200000 3.100000 29.801515 +-0.200000 3.200000 29.166820 +-0.200000 3.300000 28.552124 +-0.200000 3.400000 27.957429 +-0.200000 3.500000 27.382734 +-0.200000 3.600000 26.828038 +-0.200000 3.700000 26.293343 +-0.200000 3.800000 25.778647 +-0.200000 3.900000 25.283952 +-0.200000 4.000000 24.809256 +-0.200000 4.100000 24.354561 +-0.200000 4.200000 23.919865 +-0.200000 4.300000 23.505170 +-0.200000 4.400000 23.110474 +-0.200000 4.500000 22.735779 +-0.200000 4.600000 22.381084 +-0.200000 4.700000 22.046388 +-0.200000 4.800000 21.731693 +-0.200000 4.900000 21.436997 +-0.200000 5.000000 21.162302 +-0.200000 5.100000 20.907606 +-0.200000 5.200000 20.672911 +-0.200000 5.300000 20.458215 +-0.200000 5.400000 20.263520 +-0.200000 5.500000 20.088824 +-0.200000 5.600000 19.934129 +-0.200000 5.700000 19.799434 +-0.200000 5.800000 19.684738 +-0.200000 5.900000 19.590043 +-0.200000 6.000000 19.515347 +-0.200000 6.100000 19.460652 +-0.200000 6.200000 19.425956 +-0.200000 6.300000 19.411261 +-0.200000 6.400000 19.416565 +-0.200000 6.500000 19.441870 +-0.200000 6.600000 19.487174 +-0.200000 6.700000 19.552479 +-0.200000 6.800000 19.637784 +-0.200000 6.900000 19.743088 +-0.200000 7.000000 19.868393 +-0.200000 7.100000 20.013697 +-0.200000 7.200000 20.179002 +-0.200000 7.300000 20.364306 +-0.200000 7.400000 20.569611 +-0.200000 7.500000 20.794915 +-0.200000 7.600000 21.040220 +-0.200000 7.700000 21.305525 +-0.200000 7.800000 21.590829 +-0.200000 7.900000 21.896134 +-0.200000 8.000000 22.221438 +-0.200000 8.100000 22.566743 +-0.200000 8.200000 22.932047 +-0.200000 8.300000 23.317352 +-0.200000 8.400000 23.722656 +-0.200000 8.500000 24.147961 +-0.200000 8.600000 24.593265 +-0.200000 8.700000 25.058570 +-0.200000 8.800000 25.543875 +-0.200000 8.900000 26.049179 +-0.200000 9.000000 26.574484 +-0.200000 9.100000 27.119788 +-0.200000 9.200000 27.685093 +-0.200000 9.300000 28.270397 +-0.200000 9.400000 28.875702 +-0.200000 9.500000 29.501006 +-0.200000 9.600000 30.146311 +-0.200000 9.700000 30.811615 +-0.200000 9.800000 31.496920 +-0.200000 9.900000 32.202225 +-0.200000 10.000000 32.927529 +-0.200000 10.100000 33.672834 +-0.200000 10.200000 34.438138 +-0.200000 10.300000 35.223443 +-0.200000 10.400000 36.028747 +-0.200000 10.500000 36.854052 +-0.200000 10.600000 37.699356 +-0.200000 10.700000 38.564661 +-0.200000 10.800000 39.449965 +-0.200000 10.900000 40.355270 +-0.200000 11.000000 41.280575 +-0.200000 11.100000 42.225879 +-0.200000 11.200000 43.191184 +-0.200000 11.300000 44.176488 +-0.200000 11.400000 45.181793 +-0.200000 11.500000 46.207097 +-0.200000 11.600000 47.252402 +-0.200000 11.700000 48.317706 +-0.200000 11.800000 49.403011 +-0.200000 11.900000 50.508315 +-0.200000 12.000000 51.633620 +-0.200000 12.100000 52.778925 +-0.200000 12.200000 53.944229 +-0.200000 12.300000 55.129534 +-0.200000 12.400000 56.334838 +-0.200000 12.500000 57.560143 +-0.200000 12.600000 58.805447 +-0.200000 12.700000 60.070752 +-0.200000 12.800000 61.356056 +-0.200000 12.900000 62.661361 +-0.200000 13.000000 63.986665 +-0.200000 13.100000 65.331970 +-0.200000 13.200000 66.697275 +-0.200000 13.300000 68.082579 +-0.200000 13.400000 69.487884 +-0.200000 13.500000 70.913188 +-0.200000 13.600000 72.358493 +-0.200000 13.700000 73.823797 +-0.200000 13.800000 75.309102 +-0.200000 13.900000 76.814406 +-0.200000 14.000000 78.339711 +-0.200000 14.100000 79.885016 +-0.200000 14.200000 81.450320 +-0.200000 14.300000 83.035625 +-0.200000 14.400000 84.640929 +-0.200000 14.500000 86.266234 +-0.200000 14.600000 87.911538 +-0.200000 14.700000 89.576843 +-0.200000 14.800000 91.262147 +-0.200000 14.900000 92.967452 +-0.200000 15.000000 94.692756 + +-0.100000 -5.000000 144.109715 +-0.100000 -4.900000 141.887625 +-0.100000 -4.800000 139.685536 +-0.100000 -4.700000 137.503447 +-0.100000 -4.600000 135.341357 +-0.100000 -4.500000 133.199268 +-0.100000 -4.400000 131.077178 +-0.100000 -4.300000 128.975089 +-0.100000 -4.200000 126.893000 +-0.100000 -4.100000 124.830910 +-0.100000 -4.000000 122.788821 +-0.100000 -3.900000 120.766732 +-0.100000 -3.800000 118.764642 +-0.100000 -3.700000 116.782553 +-0.100000 -3.600000 114.820464 +-0.100000 -3.500000 112.878374 +-0.100000 -3.400000 110.956285 +-0.100000 -3.300000 109.054196 +-0.100000 -3.200000 107.172106 +-0.100000 -3.100000 105.310017 +-0.100000 -3.000000 103.467927 +-0.100000 -2.900000 101.645838 +-0.100000 -2.800000 99.843749 +-0.100000 -2.700000 98.061659 +-0.100000 -2.600000 96.299570 +-0.100000 -2.500000 94.557481 +-0.100000 -2.400000 92.835391 +-0.100000 -2.300000 91.133302 +-0.100000 -2.200000 89.451213 +-0.100000 -2.100000 87.789123 +-0.100000 -2.000000 86.147034 +-0.100000 -1.900000 84.524944 +-0.100000 -1.800000 82.922855 +-0.100000 -1.700000 81.340766 +-0.100000 -1.600000 79.778676 +-0.100000 -1.500000 78.236587 +-0.100000 -1.400000 76.714498 +-0.100000 -1.300000 75.212408 +-0.100000 -1.200000 73.730319 +-0.100000 -1.100000 72.268230 +-0.100000 -1.000000 70.826140 +-0.100000 -0.900000 69.404051 +-0.100000 -0.800000 68.001962 +-0.100000 -0.700000 66.619872 +-0.100000 -0.600000 65.257783 +-0.100000 -0.500000 63.915693 +-0.100000 -0.400000 62.593604 +-0.100000 -0.300000 61.291515 +-0.100000 -0.200000 60.009425 +-0.100000 -0.100000 58.747336 +-0.100000 -0.000000 57.505247 +-0.100000 0.100000 56.283157 +-0.100000 0.200000 55.081068 +-0.100000 0.300000 53.898979 +-0.100000 0.400000 52.736889 +-0.100000 0.500000 51.594800 +-0.100000 0.600000 50.472711 +-0.100000 0.700000 49.370621 +-0.100000 0.800000 48.288532 +-0.100000 0.900000 47.226442 +-0.100000 1.000000 46.184353 +-0.100000 1.100000 45.162264 +-0.100000 1.200000 44.160174 +-0.100000 1.300000 43.178085 +-0.100000 1.400000 42.215996 +-0.100000 1.500000 41.273906 +-0.100000 1.600000 40.351817 +-0.100000 1.700000 39.449728 +-0.100000 1.800000 38.567638 +-0.100000 1.900000 37.705549 +-0.100000 2.000000 36.863460 +-0.100000 2.100000 36.041370 +-0.100000 2.200000 35.239281 +-0.100000 2.300000 34.457191 +-0.100000 2.400000 33.695102 +-0.100000 2.500000 32.953013 +-0.100000 2.600000 32.230923 +-0.100000 2.700000 31.528834 +-0.100000 2.800000 30.846745 +-0.100000 2.900000 30.184655 +-0.100000 3.000000 29.542566 +-0.100000 3.100000 28.920477 +-0.100000 3.200000 28.318387 +-0.100000 3.300000 27.736298 +-0.100000 3.400000 27.174209 +-0.100000 3.500000 26.632119 +-0.100000 3.600000 26.110030 +-0.100000 3.700000 25.607940 +-0.100000 3.800000 25.125851 +-0.100000 3.900000 24.663762 +-0.100000 4.000000 24.221672 +-0.100000 4.100000 23.799583 +-0.100000 4.200000 23.397494 +-0.100000 4.300000 23.015404 +-0.100000 4.400000 22.653315 +-0.100000 4.500000 22.311226 +-0.100000 4.600000 21.989136 +-0.100000 4.700000 21.687047 +-0.100000 4.800000 21.404958 +-0.100000 4.900000 21.142868 +-0.100000 5.000000 20.900779 +-0.100000 5.100000 20.678689 +-0.100000 5.200000 20.476600 +-0.100000 5.300000 20.294511 +-0.100000 5.400000 20.132421 +-0.100000 5.500000 19.990332 +-0.100000 5.600000 19.868243 +-0.100000 5.700000 19.766153 +-0.100000 5.800000 19.684064 +-0.100000 5.900000 19.621975 +-0.100000 6.000000 19.579885 +-0.100000 6.100000 19.557796 +-0.100000 6.200000 19.555707 +-0.100000 6.300000 19.573617 +-0.100000 6.400000 19.611528 +-0.100000 6.500000 19.669438 +-0.100000 6.600000 19.747349 +-0.100000 6.700000 19.845260 +-0.100000 6.800000 19.963170 +-0.100000 6.900000 20.101081 +-0.100000 7.000000 20.258992 +-0.100000 7.100000 20.436902 +-0.100000 7.200000 20.634813 +-0.100000 7.300000 20.852724 +-0.100000 7.400000 21.090634 +-0.100000 7.500000 21.348545 +-0.100000 7.600000 21.626456 +-0.100000 7.700000 21.924366 +-0.100000 7.800000 22.242277 +-0.100000 7.900000 22.580187 +-0.100000 8.000000 22.938098 +-0.100000 8.100000 23.316009 +-0.100000 8.200000 23.713919 +-0.100000 8.300000 24.131830 +-0.100000 8.400000 24.569741 +-0.100000 8.500000 25.027651 +-0.100000 8.600000 25.505562 +-0.100000 8.700000 26.003473 +-0.100000 8.800000 26.521383 +-0.100000 8.900000 27.059294 +-0.100000 9.000000 27.617205 +-0.100000 9.100000 28.195115 +-0.100000 9.200000 28.793026 +-0.100000 9.300000 29.410936 +-0.100000 9.400000 30.048847 +-0.100000 9.500000 30.706758 +-0.100000 9.600000 31.384668 +-0.100000 9.700000 32.082579 +-0.100000 9.800000 32.800490 +-0.100000 9.900000 33.538400 +-0.100000 10.000000 34.296311 +-0.100000 10.100000 35.074222 +-0.100000 10.200000 35.872132 +-0.100000 10.300000 36.690043 +-0.100000 10.400000 37.527954 +-0.100000 10.500000 38.385864 +-0.100000 10.600000 39.263775 +-0.100000 10.700000 40.161685 +-0.100000 10.800000 41.079596 +-0.100000 10.900000 42.017507 +-0.100000 11.000000 42.975417 +-0.100000 11.100000 43.953328 +-0.100000 11.200000 44.951239 +-0.100000 11.300000 45.969149 +-0.100000 11.400000 47.007060 +-0.100000 11.500000 48.064971 +-0.100000 11.600000 49.142881 +-0.100000 11.700000 50.240792 +-0.100000 11.800000 51.358703 +-0.100000 11.900000 52.496613 +-0.100000 12.000000 53.654524 +-0.100000 12.100000 54.832434 +-0.100000 12.200000 56.030345 +-0.100000 12.300000 57.248256 +-0.100000 12.400000 58.486166 +-0.100000 12.500000 59.744077 +-0.100000 12.600000 61.021988 +-0.100000 12.700000 62.319898 +-0.100000 12.800000 63.637809 +-0.100000 12.900000 64.975720 +-0.100000 13.000000 66.333630 +-0.100000 13.100000 67.711541 +-0.100000 13.200000 69.109451 +-0.100000 13.300000 70.527362 +-0.100000 13.400000 71.965273 +-0.100000 13.500000 73.423183 +-0.100000 13.600000 74.901094 +-0.100000 13.700000 76.399005 +-0.100000 13.800000 77.916915 +-0.100000 13.900000 79.454826 +-0.100000 14.000000 81.012737 +-0.100000 14.100000 82.590647 +-0.100000 14.200000 84.188558 +-0.100000 14.300000 85.806469 +-0.100000 14.400000 87.444379 +-0.100000 14.500000 89.102290 +-0.100000 14.600000 90.780200 +-0.100000 14.700000 92.478111 +-0.100000 14.800000 94.196022 +-0.100000 14.900000 95.933932 +-0.100000 15.000000 97.691843 + +-0.000000 -5.000000 140.602113 +-0.000000 -4.900000 138.412113 +-0.000000 -4.800000 136.242113 +-0.000000 -4.700000 134.092113 +-0.000000 -4.600000 131.962113 +-0.000000 -4.500000 129.852113 +-0.000000 -4.400000 127.762113 +-0.000000 -4.300000 125.692113 +-0.000000 -4.200000 123.642113 +-0.000000 -4.100000 121.612113 +-0.000000 -4.000000 119.602113 +-0.000000 -3.900000 117.612113 +-0.000000 -3.800000 115.642113 +-0.000000 -3.700000 113.692113 +-0.000000 -3.600000 111.762113 +-0.000000 -3.500000 109.852113 +-0.000000 -3.400000 107.962113 +-0.000000 -3.300000 106.092113 +-0.000000 -3.200000 104.242113 +-0.000000 -3.100000 102.412113 +-0.000000 -3.000000 100.602113 +-0.000000 -2.900000 98.812113 +-0.000000 -2.800000 97.042113 +-0.000000 -2.700000 95.292113 +-0.000000 -2.600000 93.562113 +-0.000000 -2.500000 91.852113 +-0.000000 -2.400000 90.162113 +-0.000000 -2.300000 88.492113 +-0.000000 -2.200000 86.842113 +-0.000000 -2.100000 85.212113 +-0.000000 -2.000000 83.602113 +-0.000000 -1.900000 82.012113 +-0.000000 -1.800000 80.442113 +-0.000000 -1.700000 78.892113 +-0.000000 -1.600000 77.362113 +-0.000000 -1.500000 75.852113 +-0.000000 -1.400000 74.362113 +-0.000000 -1.300000 72.892113 +-0.000000 -1.200000 71.442113 +-0.000000 -1.100000 70.012113 +-0.000000 -1.000000 68.602113 +-0.000000 -0.900000 67.212113 +-0.000000 -0.800000 65.842113 +-0.000000 -0.700000 64.492113 +-0.000000 -0.600000 63.162113 +-0.000000 -0.500000 61.852113 +-0.000000 -0.400000 60.562113 +-0.000000 -0.300000 59.292113 +-0.000000 -0.200000 58.042113 +-0.000000 -0.100000 56.812113 +-0.000000 -0.000000 55.602113 +-0.000000 0.100000 54.412113 +-0.000000 0.200000 53.242113 +-0.000000 0.300000 52.092113 +-0.000000 0.400000 50.962113 +-0.000000 0.500000 49.852113 +-0.000000 0.600000 48.762113 +-0.000000 0.700000 47.692113 +-0.000000 0.800000 46.642113 +-0.000000 0.900000 45.612113 +-0.000000 1.000000 44.602113 +-0.000000 1.100000 43.612113 +-0.000000 1.200000 42.642113 +-0.000000 1.300000 41.692113 +-0.000000 1.400000 40.762113 +-0.000000 1.500000 39.852113 +-0.000000 1.600000 38.962113 +-0.000000 1.700000 38.092113 +-0.000000 1.800000 37.242113 +-0.000000 1.900000 36.412113 +-0.000000 2.000000 35.602113 +-0.000000 2.100000 34.812113 +-0.000000 2.200000 34.042113 +-0.000000 2.300000 33.292113 +-0.000000 2.400000 32.562113 +-0.000000 2.500000 31.852113 +-0.000000 2.600000 31.162113 +-0.000000 2.700000 30.492113 +-0.000000 2.800000 29.842113 +-0.000000 2.900000 29.212113 +-0.000000 3.000000 28.602113 +-0.000000 3.100000 28.012113 +-0.000000 3.200000 27.442113 +-0.000000 3.300000 26.892113 +-0.000000 3.400000 26.362113 +-0.000000 3.500000 25.852113 +-0.000000 3.600000 25.362113 +-0.000000 3.700000 24.892113 +-0.000000 3.800000 24.442113 +-0.000000 3.900000 24.012113 +-0.000000 4.000000 23.602113 +-0.000000 4.100000 23.212113 +-0.000000 4.200000 22.842113 +-0.000000 4.300000 22.492113 +-0.000000 4.400000 22.162113 +-0.000000 4.500000 21.852113 +-0.000000 4.600000 21.562113 +-0.000000 4.700000 21.292113 +-0.000000 4.800000 21.042113 +-0.000000 4.900000 20.812113 +-0.000000 5.000000 20.602113 +-0.000000 5.100000 20.412113 +-0.000000 5.200000 20.242113 +-0.000000 5.300000 20.092113 +-0.000000 5.400000 19.962113 +-0.000000 5.500000 19.852113 +-0.000000 5.600000 19.762113 +-0.000000 5.700000 19.692113 +-0.000000 5.800000 19.642113 +-0.000000 5.900000 19.612113 +-0.000000 6.000000 19.602113 +-0.000000 6.100000 19.612113 +-0.000000 6.200000 19.642113 +-0.000000 6.300000 19.692113 +-0.000000 6.400000 19.762113 +-0.000000 6.500000 19.852113 +-0.000000 6.600000 19.962113 +-0.000000 6.700000 20.092113 +-0.000000 6.800000 20.242113 +-0.000000 6.900000 20.412113 +-0.000000 7.000000 20.602113 +-0.000000 7.100000 20.812113 +-0.000000 7.200000 21.042113 +-0.000000 7.300000 21.292113 +-0.000000 7.400000 21.562113 +-0.000000 7.500000 21.852113 +-0.000000 7.600000 22.162113 +-0.000000 7.700000 22.492113 +-0.000000 7.800000 22.842113 +-0.000000 7.900000 23.212113 +-0.000000 8.000000 23.602113 +-0.000000 8.100000 24.012113 +-0.000000 8.200000 24.442113 +-0.000000 8.300000 24.892113 +-0.000000 8.400000 25.362113 +-0.000000 8.500000 25.852113 +-0.000000 8.600000 26.362113 +-0.000000 8.700000 26.892113 +-0.000000 8.800000 27.442113 +-0.000000 8.900000 28.012113 +-0.000000 9.000000 28.602113 +-0.000000 9.100000 29.212113 +-0.000000 9.200000 29.842113 +-0.000000 9.300000 30.492113 +-0.000000 9.400000 31.162113 +-0.000000 9.500000 31.852113 +-0.000000 9.600000 32.562113 +-0.000000 9.700000 33.292113 +-0.000000 9.800000 34.042113 +-0.000000 9.900000 34.812113 +-0.000000 10.000000 35.602113 +-0.000000 10.100000 36.412113 +-0.000000 10.200000 37.242113 +-0.000000 10.300000 38.092113 +-0.000000 10.400000 38.962113 +-0.000000 10.500000 39.852113 +-0.000000 10.600000 40.762113 +-0.000000 10.700000 41.692113 +-0.000000 10.800000 42.642113 +-0.000000 10.900000 43.612113 +-0.000000 11.000000 44.602113 +-0.000000 11.100000 45.612113 +-0.000000 11.200000 46.642113 +-0.000000 11.300000 47.692113 +-0.000000 11.400000 48.762113 +-0.000000 11.500000 49.852113 +-0.000000 11.600000 50.962113 +-0.000000 11.700000 52.092113 +-0.000000 11.800000 53.242113 +-0.000000 11.900000 54.412113 +-0.000000 12.000000 55.602113 +-0.000000 12.100000 56.812113 +-0.000000 12.200000 58.042113 +-0.000000 12.300000 59.292113 +-0.000000 12.400000 60.562113 +-0.000000 12.500000 61.852113 +-0.000000 12.600000 63.162113 +-0.000000 12.700000 64.492113 +-0.000000 12.800000 65.842113 +-0.000000 12.900000 67.212113 +-0.000000 13.000000 68.602113 +-0.000000 13.100000 70.012113 +-0.000000 13.200000 71.442113 +-0.000000 13.300000 72.892113 +-0.000000 13.400000 74.362113 +-0.000000 13.500000 75.852113 +-0.000000 13.600000 77.362113 +-0.000000 13.700000 78.892113 +-0.000000 13.800000 80.442113 +-0.000000 13.900000 82.012113 +-0.000000 14.000000 83.602113 +-0.000000 14.100000 85.212113 +-0.000000 14.200000 86.842113 +-0.000000 14.300000 88.492113 +-0.000000 14.400000 90.162113 +-0.000000 14.500000 91.852113 +-0.000000 14.600000 93.562113 +-0.000000 14.700000 95.292113 +-0.000000 14.800000 97.042113 +-0.000000 14.900000 98.812113 +-0.000000 15.000000 100.602113 + +0.100000 -5.000000 137.106075 +0.100000 -4.900000 134.947647 +0.100000 -4.800000 132.809220 +0.100000 -4.700000 130.690793 +0.100000 -4.600000 128.592365 +0.100000 -4.500000 126.513938 +0.100000 -4.400000 124.455510 +0.100000 -4.300000 122.417083 +0.100000 -4.200000 120.398656 +0.100000 -4.100000 118.400228 +0.100000 -4.000000 116.421801 +0.100000 -3.900000 114.463373 +0.100000 -3.800000 112.524946 +0.100000 -3.700000 110.606519 +0.100000 -3.600000 108.708091 +0.100000 -3.500000 106.829664 +0.100000 -3.400000 104.971237 +0.100000 -3.300000 103.132809 +0.100000 -3.200000 101.314382 +0.100000 -3.100000 99.515954 +0.100000 -3.000000 97.737527 +0.100000 -2.900000 95.979100 +0.100000 -2.800000 94.240672 +0.100000 -2.700000 92.522245 +0.100000 -2.600000 90.823818 +0.100000 -2.500000 89.145390 +0.100000 -2.400000 87.486963 +0.100000 -2.300000 85.848535 +0.100000 -2.200000 84.230108 +0.100000 -2.100000 82.631681 +0.100000 -2.000000 81.053253 +0.100000 -1.900000 79.494826 +0.100000 -1.800000 77.956399 +0.100000 -1.700000 76.437971 +0.100000 -1.600000 74.939544 +0.100000 -1.500000 73.461116 +0.100000 -1.400000 72.002689 +0.100000 -1.300000 70.564262 +0.100000 -1.200000 69.145834 +0.100000 -1.100000 67.747407 +0.100000 -1.000000 66.368979 +0.100000 -0.900000 65.010552 +0.100000 -0.800000 63.672125 +0.100000 -0.700000 62.353697 +0.100000 -0.600000 61.055270 +0.100000 -0.500000 59.776843 +0.100000 -0.400000 58.518415 +0.100000 -0.300000 57.279988 +0.100000 -0.200000 56.061560 +0.100000 -0.100000 54.863133 +0.100000 -0.000000 53.684706 +0.100000 0.100000 52.526278 +0.100000 0.200000 51.387851 +0.100000 0.300000 50.269424 +0.100000 0.400000 49.170996 +0.100000 0.500000 48.092569 +0.100000 0.600000 47.034141 +0.100000 0.700000 45.995714 +0.100000 0.800000 44.977287 +0.100000 0.900000 43.978859 +0.100000 1.000000 43.000432 +0.100000 1.100000 42.042004 +0.100000 1.200000 41.103577 +0.100000 1.300000 40.185150 +0.100000 1.400000 39.286722 +0.100000 1.500000 38.408295 +0.100000 1.600000 37.549868 +0.100000 1.700000 36.711440 +0.100000 1.800000 35.893013 +0.100000 1.900000 35.094585 +0.100000 2.000000 34.316158 +0.100000 2.100000 33.557731 +0.100000 2.200000 32.819303 +0.100000 2.300000 32.100876 +0.100000 2.400000 31.402449 +0.100000 2.500000 30.724021 +0.100000 2.600000 30.065594 +0.100000 2.700000 29.427166 +0.100000 2.800000 28.808739 +0.100000 2.900000 28.210312 +0.100000 3.000000 27.631884 +0.100000 3.100000 27.073457 +0.100000 3.200000 26.535029 +0.100000 3.300000 26.016602 +0.100000 3.400000 25.518175 +0.100000 3.500000 25.039747 +0.100000 3.600000 24.581320 +0.100000 3.700000 24.142893 +0.100000 3.800000 23.724465 +0.100000 3.900000 23.326038 +0.100000 4.000000 22.947610 +0.100000 4.100000 22.589183 +0.100000 4.200000 22.250756 +0.100000 4.300000 21.932328 +0.100000 4.400000 21.633901 +0.100000 4.500000 21.355474 +0.100000 4.600000 21.097046 +0.100000 4.700000 20.858619 +0.100000 4.800000 20.640191 +0.100000 4.900000 20.441764 +0.100000 5.000000 20.263337 +0.100000 5.100000 20.104909 +0.100000 5.200000 19.966482 +0.100000 5.300000 19.848054 +0.100000 5.400000 19.749627 +0.100000 5.500000 19.671200 +0.100000 5.600000 19.612772 +0.100000 5.700000 19.574345 +0.100000 5.800000 19.555918 +0.100000 5.900000 19.557490 +0.100000 6.000000 19.579063 +0.100000 6.100000 19.620635 +0.100000 6.200000 19.682208 +0.100000 6.300000 19.763781 +0.100000 6.400000 19.865353 +0.100000 6.500000 19.986926 +0.100000 6.600000 20.128499 +0.100000 6.700000 20.290071 +0.100000 6.800000 20.471644 +0.100000 6.900000 20.673216 +0.100000 7.000000 20.894789 +0.100000 7.100000 21.136362 +0.100000 7.200000 21.397934 +0.100000 7.300000 21.679507 +0.100000 7.400000 21.981080 +0.100000 7.500000 22.302652 +0.100000 7.600000 22.644225 +0.100000 7.700000 23.005797 +0.100000 7.800000 23.387370 +0.100000 7.900000 23.788943 +0.100000 8.000000 24.210515 +0.100000 8.100000 24.652088 +0.100000 8.200000 25.113660 +0.100000 8.300000 25.595233 +0.100000 8.400000 26.096806 +0.100000 8.500000 26.618378 +0.100000 8.600000 27.159951 +0.100000 8.700000 27.721524 +0.100000 8.800000 28.303096 +0.100000 8.900000 28.904669 +0.100000 9.000000 29.526241 +0.100000 9.100000 30.167814 +0.100000 9.200000 30.829387 +0.100000 9.300000 31.510959 +0.100000 9.400000 32.212532 +0.100000 9.500000 32.934105 +0.100000 9.600000 33.675677 +0.100000 9.700000 34.437250 +0.100000 9.800000 35.218822 +0.100000 9.900000 36.020395 +0.100000 10.000000 36.841968 +0.100000 10.100000 37.683540 +0.100000 10.200000 38.545113 +0.100000 10.300000 39.426685 +0.100000 10.400000 40.328258 +0.100000 10.500000 41.249831 +0.100000 10.600000 42.191403 +0.100000 10.700000 43.152976 +0.100000 10.800000 44.134549 +0.100000 10.900000 45.136121 +0.100000 11.000000 46.157694 +0.100000 11.100000 47.199266 +0.100000 11.200000 48.260839 +0.100000 11.300000 49.342412 +0.100000 11.400000 50.443984 +0.100000 11.500000 51.565557 +0.100000 11.600000 52.707130 +0.100000 11.700000 53.868702 +0.100000 11.800000 55.050275 +0.100000 11.900000 56.251847 +0.100000 12.000000 57.473420 +0.100000 12.100000 58.714993 +0.100000 12.200000 59.976565 +0.100000 12.300000 61.258138 +0.100000 12.400000 62.559710 +0.100000 12.500000 63.881283 +0.100000 12.600000 65.222856 +0.100000 12.700000 66.584428 +0.100000 12.800000 67.966001 +0.100000 12.900000 69.367574 +0.100000 13.000000 70.789146 +0.100000 13.100000 72.230719 +0.100000 13.200000 73.692291 +0.100000 13.300000 75.173864 +0.100000 13.400000 76.675437 +0.100000 13.500000 78.197009 +0.100000 13.600000 79.738582 +0.100000 13.700000 81.300155 +0.100000 13.800000 82.881727 +0.100000 13.900000 84.483300 +0.100000 14.000000 86.104872 +0.100000 14.100000 87.746445 +0.100000 14.200000 89.408018 +0.100000 14.300000 91.089590 +0.100000 14.400000 92.791163 +0.100000 14.500000 94.512735 +0.100000 14.600000 96.254308 +0.100000 14.700000 98.015881 +0.100000 14.800000 99.797453 +0.100000 14.900000 101.599026 +0.100000 15.000000 103.420599 + +0.200000 -5.000000 133.619633 +0.200000 -4.900000 131.492261 +0.200000 -4.800000 129.384890 +0.200000 -4.700000 127.297518 +0.200000 -4.600000 125.230147 +0.200000 -4.500000 123.182775 +0.200000 -4.400000 121.155404 +0.200000 -4.300000 119.148032 +0.200000 -4.200000 117.160661 +0.200000 -4.100000 115.193289 +0.200000 -4.000000 113.245918 +0.200000 -3.900000 111.318546 +0.200000 -3.800000 109.411175 +0.200000 -3.700000 107.523803 +0.200000 -3.600000 105.656432 +0.200000 -3.500000 103.809060 +0.200000 -3.400000 101.981689 +0.200000 -3.300000 100.174317 +0.200000 -3.200000 98.386946 +0.200000 -3.100000 96.619574 +0.200000 -3.000000 94.872203 +0.200000 -2.900000 93.144831 +0.200000 -2.800000 91.437460 +0.200000 -2.700000 89.750088 +0.200000 -2.600000 88.082717 +0.200000 -2.500000 86.435345 +0.200000 -2.400000 84.807974 +0.200000 -2.300000 83.200602 +0.200000 -2.200000 81.613231 +0.200000 -2.100000 80.045859 +0.200000 -2.000000 78.498488 +0.200000 -1.900000 76.971116 +0.200000 -1.800000 75.463745 +0.200000 -1.700000 73.976373 +0.200000 -1.600000 72.509002 +0.200000 -1.500000 71.061630 +0.200000 -1.400000 69.634259 +0.200000 -1.300000 68.226887 +0.200000 -1.200000 66.839516 +0.200000 -1.100000 65.472144 +0.200000 -1.000000 64.124773 +0.200000 -0.900000 62.797401 +0.200000 -0.800000 61.490030 +0.200000 -0.700000 60.202658 +0.200000 -0.600000 58.935287 +0.200000 -0.500000 57.687915 +0.200000 -0.400000 56.460544 +0.200000 -0.300000 55.253172 +0.200000 -0.200000 54.065801 +0.200000 -0.100000 52.898429 +0.200000 -0.000000 51.751058 +0.200000 0.100000 50.623686 +0.200000 0.200000 49.516315 +0.200000 0.300000 48.428943 +0.200000 0.400000 47.361572 +0.200000 0.500000 46.314200 +0.200000 0.600000 45.286829 +0.200000 0.700000 44.279457 +0.200000 0.800000 43.292086 +0.200000 0.900000 42.324714 +0.200000 1.000000 41.377343 +0.200000 1.100000 40.449971 +0.200000 1.200000 39.542600 +0.200000 1.300000 38.655228 +0.200000 1.400000 37.787857 +0.200000 1.500000 36.940485 +0.200000 1.600000 36.113114 +0.200000 1.700000 35.305742 +0.200000 1.800000 34.518371 +0.200000 1.900000 33.750999 +0.200000 2.000000 33.003628 +0.200000 2.100000 32.276256 +0.200000 2.200000 31.568885 +0.200000 2.300000 30.881513 +0.200000 2.400000 30.214142 +0.200000 2.500000 29.566770 +0.200000 2.600000 28.939399 +0.200000 2.700000 28.332027 +0.200000 2.800000 27.744656 +0.200000 2.900000 27.177284 +0.200000 3.000000 26.629913 +0.200000 3.100000 26.102541 +0.200000 3.200000 25.595170 +0.200000 3.300000 25.107798 +0.200000 3.400000 24.640427 +0.200000 3.500000 24.193055 +0.200000 3.600000 23.765684 +0.200000 3.700000 23.358312 +0.200000 3.800000 22.970941 +0.200000 3.900000 22.603569 +0.200000 4.000000 22.256198 +0.200000 4.100000 21.928826 +0.200000 4.200000 21.621455 +0.200000 4.300000 21.334083 +0.200000 4.400000 21.066712 +0.200000 4.500000 20.819340 +0.200000 4.600000 20.591969 +0.200000 4.700000 20.384597 +0.200000 4.800000 20.197226 +0.200000 4.900000 20.029854 +0.200000 5.000000 19.882483 +0.200000 5.100000 19.755111 +0.200000 5.200000 19.647740 +0.200000 5.300000 19.560368 +0.200000 5.400000 19.492997 +0.200000 5.500000 19.445625 +0.200000 5.600000 19.418254 +0.200000 5.700000 19.410882 +0.200000 5.800000 19.423511 +0.200000 5.900000 19.456139 +0.200000 6.000000 19.508768 +0.200000 6.100000 19.581396 +0.200000 6.200000 19.674025 +0.200000 6.300000 19.786653 +0.200000 6.400000 19.919282 +0.200000 6.500000 20.071910 +0.200000 6.600000 20.244539 +0.200000 6.700000 20.437167 +0.200000 6.800000 20.649796 +0.200000 6.900000 20.882424 +0.200000 7.000000 21.135053 +0.200000 7.100000 21.407681 +0.200000 7.200000 21.700310 +0.200000 7.300000 22.012938 +0.200000 7.400000 22.345567 +0.200000 7.500000 22.698195 +0.200000 7.600000 23.070824 +0.200000 7.700000 23.463452 +0.200000 7.800000 23.876081 +0.200000 7.900000 24.308709 +0.200000 8.000000 24.761338 +0.200000 8.100000 25.233966 +0.200000 8.200000 25.726595 +0.200000 8.300000 26.239223 +0.200000 8.400000 26.771852 +0.200000 8.500000 27.324480 +0.200000 8.600000 27.897109 +0.200000 8.700000 28.489737 +0.200000 8.800000 29.102366 +0.200000 8.900000 29.734994 +0.200000 9.000000 30.387623 +0.200000 9.100000 31.060251 +0.200000 9.200000 31.752880 +0.200000 9.300000 32.465508 +0.200000 9.400000 33.198137 +0.200000 9.500000 33.950765 +0.200000 9.600000 34.723394 +0.200000 9.700000 35.516022 +0.200000 9.800000 36.328651 +0.200000 9.900000 37.161279 +0.200000 10.000000 38.013908 +0.200000 10.100000 38.886536 +0.200000 10.200000 39.779165 +0.200000 10.300000 40.691793 +0.200000 10.400000 41.624422 +0.200000 10.500000 42.577050 +0.200000 10.600000 43.549679 +0.200000 10.700000 44.542307 +0.200000 10.800000 45.554936 +0.200000 10.900000 46.587564 +0.200000 11.000000 47.640193 +0.200000 11.100000 48.712821 +0.200000 11.200000 49.805450 +0.200000 11.300000 50.918078 +0.200000 11.400000 52.050707 +0.200000 11.500000 53.203335 +0.200000 11.600000 54.375964 +0.200000 11.700000 55.568592 +0.200000 11.800000 56.781221 +0.200000 11.900000 58.013849 +0.200000 12.000000 59.266478 +0.200000 12.100000 60.539106 +0.200000 12.200000 61.831735 +0.200000 12.300000 63.144363 +0.200000 12.400000 64.476992 +0.200000 12.500000 65.829620 +0.200000 12.600000 67.202249 +0.200000 12.700000 68.594877 +0.200000 12.800000 70.007506 +0.200000 12.900000 71.440134 +0.200000 13.000000 72.892763 +0.200000 13.100000 74.365391 +0.200000 13.200000 75.858020 +0.200000 13.300000 77.370648 +0.200000 13.400000 78.903277 +0.200000 13.500000 80.455905 +0.200000 13.600000 82.028534 +0.200000 13.700000 83.621162 +0.200000 13.800000 85.233791 +0.200000 13.900000 86.866419 +0.200000 14.000000 88.519048 +0.200000 14.100000 90.191677 +0.200000 14.200000 91.884305 +0.200000 14.300000 93.596934 +0.200000 14.400000 95.329562 +0.200000 14.500000 97.082191 +0.200000 14.600000 98.854819 +0.200000 14.700000 100.647448 +0.200000 14.800000 102.460076 +0.200000 14.900000 104.292705 +0.200000 15.000000 106.145333 + +0.300000 -5.000000 130.141813 +0.300000 -4.900000 128.044981 +0.300000 -4.800000 125.968148 +0.300000 -4.700000 123.911316 +0.300000 -4.600000 121.874483 +0.300000 -4.500000 119.857651 +0.300000 -4.400000 117.860819 +0.300000 -4.300000 115.883986 +0.300000 -4.200000 113.927154 +0.300000 -4.100000 111.990322 +0.300000 -4.000000 110.073489 +0.300000 -3.900000 108.176657 +0.300000 -3.800000 106.299825 +0.300000 -3.700000 104.442992 +0.300000 -3.600000 102.606160 +0.300000 -3.500000 100.789328 +0.300000 -3.400000 98.992495 +0.300000 -3.300000 97.215663 +0.300000 -3.200000 95.458831 +0.300000 -3.100000 93.721998 +0.300000 -3.000000 92.005166 +0.300000 -2.900000 90.308333 +0.300000 -2.800000 88.631501 +0.300000 -2.700000 86.974669 +0.300000 -2.600000 85.337836 +0.300000 -2.500000 83.721004 +0.300000 -2.400000 82.124172 +0.300000 -2.300000 80.547339 +0.300000 -2.200000 78.990507 +0.300000 -2.100000 77.453675 +0.300000 -2.000000 75.936842 +0.300000 -1.900000 74.440010 +0.300000 -1.800000 72.963178 +0.300000 -1.700000 71.506345 +0.300000 -1.600000 70.069513 +0.300000 -1.500000 68.652680 +0.300000 -1.400000 67.255848 +0.300000 -1.300000 65.879016 +0.300000 -1.200000 64.522183 +0.300000 -1.100000 63.185351 +0.300000 -1.000000 61.868519 +0.300000 -0.900000 60.571686 +0.300000 -0.800000 59.294854 +0.300000 -0.700000 58.038022 +0.300000 -0.600000 56.801189 +0.300000 -0.500000 55.584357 +0.300000 -0.400000 54.387525 +0.300000 -0.300000 53.210692 +0.300000 -0.200000 52.053860 +0.300000 -0.100000 50.917028 +0.300000 -0.000000 49.800195 +0.300000 0.100000 48.703363 +0.300000 0.200000 47.626530 +0.300000 0.300000 46.569698 +0.300000 0.400000 45.532866 +0.300000 0.500000 44.516033 +0.300000 0.600000 43.519201 +0.300000 0.700000 42.542369 +0.300000 0.800000 41.585536 +0.300000 0.900000 40.648704 +0.300000 1.000000 39.731872 +0.300000 1.100000 38.835039 +0.300000 1.200000 37.958207 +0.300000 1.300000 37.101375 +0.300000 1.400000 36.264542 +0.300000 1.500000 35.447710 +0.300000 1.600000 34.650877 +0.300000 1.700000 33.874045 +0.300000 1.800000 33.117213 +0.300000 1.900000 32.380380 +0.300000 2.000000 31.663548 +0.300000 2.100000 30.966716 +0.300000 2.200000 30.289883 +0.300000 2.300000 29.633051 +0.300000 2.400000 28.996219 +0.300000 2.500000 28.379386 +0.300000 2.600000 27.782554 +0.300000 2.700000 27.205722 +0.300000 2.800000 26.648889 +0.300000 2.900000 26.112057 +0.300000 3.000000 25.595224 +0.300000 3.100000 25.098392 +0.300000 3.200000 24.621560 +0.300000 3.300000 24.164727 +0.300000 3.400000 23.727895 +0.300000 3.500000 23.311063 +0.300000 3.600000 22.914230 +0.300000 3.700000 22.537398 +0.300000 3.800000 22.180566 +0.300000 3.900000 21.843733 +0.300000 4.000000 21.526901 +0.300000 4.100000 21.230069 +0.300000 4.200000 20.953236 +0.300000 4.300000 20.696404 +0.300000 4.400000 20.459572 +0.300000 4.500000 20.242739 +0.300000 4.600000 20.045907 +0.300000 4.700000 19.869074 +0.300000 4.800000 19.712242 +0.300000 4.900000 19.575410 +0.300000 5.000000 19.458577 +0.300000 5.100000 19.361745 +0.300000 5.200000 19.284913 +0.300000 5.300000 19.228080 +0.300000 5.400000 19.191248 +0.300000 5.500000 19.174416 +0.300000 5.600000 19.177583 +0.300000 5.700000 19.200751 +0.300000 5.800000 19.243919 +0.300000 5.900000 19.307086 +0.300000 6.000000 19.390254 +0.300000 6.100000 19.493421 +0.300000 6.200000 19.616589 +0.300000 6.300000 19.759757 +0.300000 6.400000 19.922924 +0.300000 6.500000 20.106092 +0.300000 6.600000 20.309260 +0.300000 6.700000 20.532427 +0.300000 6.800000 20.775595 +0.300000 6.900000 21.038763 +0.300000 7.000000 21.321930 +0.300000 7.100000 21.625098 +0.300000 7.200000 21.948266 +0.300000 7.300000 22.291433 +0.300000 7.400000 22.654601 +0.300000 7.500000 23.037769 +0.300000 7.600000 23.440936 +0.300000 7.700000 23.864104 +0.300000 7.800000 24.307271 +0.300000 7.900000 24.770439 +0.300000 8.000000 25.253607 +0.300000 8.100000 25.756774 +0.300000 8.200000 26.279942 +0.300000 8.300000 26.823110 +0.300000 8.400000 27.386277 +0.300000 8.500000 27.969445 +0.300000 8.600000 28.572613 +0.300000 8.700000 29.195780 +0.300000 8.800000 29.838948 +0.300000 8.900000 30.502116 +0.300000 9.000000 31.185283 +0.300000 9.100000 31.888451 +0.300000 9.200000 32.611618 +0.300000 9.300000 33.354786 +0.300000 9.400000 34.117954 +0.300000 9.500000 34.901121 +0.300000 9.600000 35.704289 +0.300000 9.700000 36.527457 +0.300000 9.800000 37.370624 +0.300000 9.900000 38.233792 +0.300000 10.000000 39.116960 +0.300000 10.100000 40.020127 +0.300000 10.200000 40.943295 +0.300000 10.300000 41.886463 +0.300000 10.400000 42.849630 +0.300000 10.500000 43.832798 +0.300000 10.600000 44.835965 +0.300000 10.700000 45.859133 +0.300000 10.800000 46.902301 +0.300000 10.900000 47.965468 +0.300000 11.000000 49.048636 +0.300000 11.100000 50.151804 +0.300000 11.200000 51.274971 +0.300000 11.300000 52.418139 +0.300000 11.400000 53.581307 +0.300000 11.500000 54.764474 +0.300000 11.600000 55.967642 +0.300000 11.700000 57.190810 +0.300000 11.800000 58.433977 +0.300000 11.900000 59.697145 +0.300000 12.000000 60.980313 +0.300000 12.100000 62.283480 +0.300000 12.200000 63.606648 +0.300000 12.300000 64.949815 +0.300000 12.400000 66.312983 +0.300000 12.500000 67.696151 +0.300000 12.600000 69.099318 +0.300000 12.700000 70.522486 +0.300000 12.800000 71.965654 +0.300000 12.900000 73.428821 +0.300000 13.000000 74.911989 +0.300000 13.100000 76.415157 +0.300000 13.200000 77.938324 +0.300000 13.300000 79.481492 +0.300000 13.400000 81.044660 +0.300000 13.500000 82.627827 +0.300000 13.600000 84.230995 +0.300000 13.700000 85.854162 +0.300000 13.800000 87.497330 +0.300000 13.900000 89.160498 +0.300000 14.000000 90.843665 +0.300000 14.100000 92.546833 +0.300000 14.200000 94.270001 +0.300000 14.300000 96.013168 +0.300000 14.400000 97.776336 +0.300000 14.500000 99.559504 +0.300000 14.600000 101.362671 +0.300000 14.700000 103.185839 +0.300000 14.800000 105.029007 +0.300000 14.900000 106.892174 +0.300000 15.000000 108.775342 + +0.400000 -5.000000 126.672621 +0.400000 -4.900000 124.605811 +0.400000 -4.800000 122.559001 +0.400000 -4.700000 120.532191 +0.400000 -4.600000 118.525381 +0.400000 -4.500000 116.538571 +0.400000 -4.400000 114.571761 +0.400000 -4.300000 112.624951 +0.400000 -4.200000 110.698141 +0.400000 -4.100000 108.791331 +0.400000 -4.000000 106.904521 +0.400000 -3.900000 105.037711 +0.400000 -3.800000 103.190901 +0.400000 -3.700000 101.364091 +0.400000 -3.600000 99.557281 +0.400000 -3.500000 97.770471 +0.400000 -3.400000 96.003661 +0.400000 -3.300000 94.256851 +0.400000 -3.200000 92.530042 +0.400000 -3.100000 90.823232 +0.400000 -3.000000 89.136422 +0.400000 -2.900000 87.469612 +0.400000 -2.800000 85.822802 +0.400000 -2.700000 84.195992 +0.400000 -2.600000 82.589182 +0.400000 -2.500000 81.002372 +0.400000 -2.400000 79.435562 +0.400000 -2.300000 77.888752 +0.400000 -2.200000 76.361942 +0.400000 -2.100000 74.855132 +0.400000 -2.000000 73.368322 +0.400000 -1.900000 71.901512 +0.400000 -1.800000 70.454702 +0.400000 -1.700000 69.027892 +0.400000 -1.600000 67.621082 +0.400000 -1.500000 66.234272 +0.400000 -1.400000 64.867462 +0.400000 -1.300000 63.520652 +0.400000 -1.200000 62.193843 +0.400000 -1.100000 60.887033 +0.400000 -1.000000 59.600223 +0.400000 -0.900000 58.333413 +0.400000 -0.800000 57.086603 +0.400000 -0.700000 55.859793 +0.400000 -0.600000 54.652983 +0.400000 -0.500000 53.466173 +0.400000 -0.400000 52.299363 +0.400000 -0.300000 51.152553 +0.400000 -0.200000 50.025743 +0.400000 -0.100000 48.918933 +0.400000 -0.000000 47.832123 +0.400000 0.100000 46.765313 +0.400000 0.200000 45.718503 +0.400000 0.300000 44.691693 +0.400000 0.400000 43.684883 +0.400000 0.500000 42.698073 +0.400000 0.600000 41.731263 +0.400000 0.700000 40.784453 +0.400000 0.800000 39.857644 +0.400000 0.900000 38.950834 +0.400000 1.000000 38.064024 +0.400000 1.100000 37.197214 +0.400000 1.200000 36.350404 +0.400000 1.300000 35.523594 +0.400000 1.400000 34.716784 +0.400000 1.500000 33.929974 +0.400000 1.600000 33.163164 +0.400000 1.700000 32.416354 +0.400000 1.800000 31.689544 +0.400000 1.900000 30.982734 +0.400000 2.000000 30.295924 +0.400000 2.100000 29.629114 +0.400000 2.200000 28.982304 +0.400000 2.300000 28.355494 +0.400000 2.400000 27.748684 +0.400000 2.500000 27.161874 +0.400000 2.600000 26.595064 +0.400000 2.700000 26.048254 +0.400000 2.800000 25.521445 +0.400000 2.900000 25.014635 +0.400000 3.000000 24.527825 +0.400000 3.100000 24.061015 +0.400000 3.200000 23.614205 +0.400000 3.300000 23.187395 +0.400000 3.400000 22.780585 +0.400000 3.500000 22.393775 +0.400000 3.600000 22.026965 +0.400000 3.700000 21.680155 +0.400000 3.800000 21.353345 +0.400000 3.900000 21.046535 +0.400000 4.000000 20.759725 +0.400000 4.100000 20.492915 +0.400000 4.200000 20.246105 +0.400000 4.300000 20.019295 +0.400000 4.400000 19.812485 +0.400000 4.500000 19.625675 +0.400000 4.600000 19.458865 +0.400000 4.700000 19.312055 +0.400000 4.800000 19.185246 +0.400000 4.900000 19.078436 +0.400000 5.000000 18.991626 +0.400000 5.100000 18.924816 +0.400000 5.200000 18.878006 +0.400000 5.300000 18.851196 +0.400000 5.400000 18.844386 +0.400000 5.500000 18.857576 +0.400000 5.600000 18.890766 +0.400000 5.700000 18.943956 +0.400000 5.800000 19.017146 +0.400000 5.900000 19.110336 +0.400000 6.000000 19.223526 +0.400000 6.100000 19.356716 +0.400000 6.200000 19.509906 +0.400000 6.300000 19.683096 +0.400000 6.400000 19.876286 +0.400000 6.500000 20.089476 +0.400000 6.600000 20.322666 +0.400000 6.700000 20.575856 +0.400000 6.800000 20.849047 +0.400000 6.900000 21.142237 +0.400000 7.000000 21.455427 +0.400000 7.100000 21.788617 +0.400000 7.200000 22.141807 +0.400000 7.300000 22.514997 +0.400000 7.400000 22.908187 +0.400000 7.500000 23.321377 +0.400000 7.600000 23.754567 +0.400000 7.700000 24.207757 +0.400000 7.800000 24.680947 +0.400000 7.900000 25.174137 +0.400000 8.000000 25.687327 +0.400000 8.100000 26.220517 +0.400000 8.200000 26.773707 +0.400000 8.300000 27.346897 +0.400000 8.400000 27.940087 +0.400000 8.500000 28.553277 +0.400000 8.600000 29.186467 +0.400000 8.700000 29.839657 +0.400000 8.800000 30.512848 +0.400000 8.900000 31.206038 +0.400000 9.000000 31.919228 +0.400000 9.100000 32.652418 +0.400000 9.200000 33.405608 +0.400000 9.300000 34.178798 +0.400000 9.400000 34.971988 +0.400000 9.500000 35.785178 +0.400000 9.600000 36.618368 +0.400000 9.700000 37.471558 +0.400000 9.800000 38.344748 +0.400000 9.900000 39.237938 +0.400000 10.000000 40.151128 +0.400000 10.100000 41.084318 +0.400000 10.200000 42.037508 +0.400000 10.300000 43.010698 +0.400000 10.400000 44.003888 +0.400000 10.500000 45.017078 +0.400000 10.600000 46.050268 +0.400000 10.700000 47.103458 +0.400000 10.800000 48.176649 +0.400000 10.900000 49.269839 +0.400000 11.000000 50.383029 +0.400000 11.100000 51.516219 +0.400000 11.200000 52.669409 +0.400000 11.300000 53.842599 +0.400000 11.400000 55.035789 +0.400000 11.500000 56.248979 +0.400000 11.600000 57.482169 +0.400000 11.700000 58.735359 +0.400000 11.800000 60.008549 +0.400000 11.900000 61.301739 +0.400000 12.000000 62.614929 +0.400000 12.100000 63.948119 +0.400000 12.200000 65.301309 +0.400000 12.300000 66.674499 +0.400000 12.400000 68.067689 +0.400000 12.500000 69.480879 +0.400000 12.600000 70.914069 +0.400000 12.700000 72.367259 +0.400000 12.800000 73.840450 +0.400000 12.900000 75.333640 +0.400000 13.000000 76.846830 +0.400000 13.100000 78.380020 +0.400000 13.200000 79.933210 +0.400000 13.300000 81.506400 +0.400000 13.400000 83.099590 +0.400000 13.500000 84.712780 +0.400000 13.600000 86.345970 +0.400000 13.700000 87.999160 +0.400000 13.800000 89.672350 +0.400000 13.900000 91.365540 +0.400000 14.000000 93.078730 +0.400000 14.100000 94.811920 +0.400000 14.200000 96.565110 +0.400000 14.300000 98.338300 +0.400000 14.400000 100.131490 +0.400000 14.500000 101.944680 +0.400000 14.600000 103.777870 +0.400000 14.700000 105.631060 +0.400000 14.800000 107.504251 +0.400000 14.900000 109.397441 +0.400000 15.000000 111.310631 + +0.500000 -5.000000 123.213017 +0.500000 -4.900000 121.175713 +0.500000 -4.800000 119.158409 +0.500000 -4.700000 117.161104 +0.500000 -4.600000 115.183800 +0.500000 -4.500000 113.226496 +0.500000 -4.400000 111.289192 +0.500000 -4.300000 109.371887 +0.500000 -4.200000 107.474583 +0.500000 -4.100000 105.597279 +0.500000 -4.000000 103.739974 +0.500000 -3.900000 101.902670 +0.500000 -3.800000 100.085366 +0.500000 -3.700000 98.288062 +0.500000 -3.600000 96.510757 +0.500000 -3.500000 94.753453 +0.500000 -3.400000 93.016149 +0.500000 -3.300000 91.298844 +0.500000 -3.200000 89.601540 +0.500000 -3.100000 87.924236 +0.500000 -3.000000 86.266932 +0.500000 -2.900000 84.629627 +0.500000 -2.800000 83.012323 +0.500000 -2.700000 81.415019 +0.500000 -2.600000 79.837714 +0.500000 -2.500000 78.280410 +0.500000 -2.400000 76.743106 +0.500000 -2.300000 75.225802 +0.500000 -2.200000 73.728497 +0.500000 -2.100000 72.251193 +0.500000 -2.000000 70.793889 +0.500000 -1.900000 69.356584 +0.500000 -1.800000 67.939280 +0.500000 -1.700000 66.541976 +0.500000 -1.600000 65.164672 +0.500000 -1.500000 63.807367 +0.500000 -1.400000 62.470063 +0.500000 -1.300000 61.152759 +0.500000 -1.200000 59.855454 +0.500000 -1.100000 58.578150 +0.500000 -1.000000 57.320846 +0.500000 -0.900000 56.083542 +0.500000 -0.800000 54.866237 +0.500000 -0.700000 53.668933 +0.500000 -0.600000 52.491629 +0.500000 -0.500000 51.334325 +0.500000 -0.400000 50.197020 +0.500000 -0.300000 49.079716 +0.500000 -0.200000 47.982412 +0.500000 -0.100000 46.905107 +0.500000 -0.000000 45.847803 +0.500000 0.100000 44.810499 +0.500000 0.200000 43.793195 +0.500000 0.300000 42.795890 +0.500000 0.400000 41.818586 +0.500000 0.500000 40.861282 +0.500000 0.600000 39.923977 +0.500000 0.700000 39.006673 +0.500000 0.800000 38.109369 +0.500000 0.900000 37.232065 +0.500000 1.000000 36.374760 +0.500000 1.100000 35.537456 +0.500000 1.200000 34.720152 +0.500000 1.300000 33.922847 +0.500000 1.400000 33.145543 +0.500000 1.500000 32.388239 +0.500000 1.600000 31.650935 +0.500000 1.700000 30.933630 +0.500000 1.800000 30.236326 +0.500000 1.900000 29.559022 +0.500000 2.000000 28.901717 +0.500000 2.100000 28.264413 +0.500000 2.200000 27.647109 +0.500000 2.300000 27.049805 +0.500000 2.400000 26.472500 +0.500000 2.500000 25.915196 +0.500000 2.600000 25.377892 +0.500000 2.700000 24.860587 +0.500000 2.800000 24.363283 +0.500000 2.900000 23.885979 +0.500000 3.000000 23.428675 +0.500000 3.100000 22.991370 +0.500000 3.200000 22.574066 +0.500000 3.300000 22.176762 +0.500000 3.400000 21.799458 +0.500000 3.500000 21.442153 +0.500000 3.600000 21.104849 +0.500000 3.700000 20.787545 +0.500000 3.800000 20.490240 +0.500000 3.900000 20.212936 +0.500000 4.000000 19.955632 +0.500000 4.100000 19.718328 +0.500000 4.200000 19.501023 +0.500000 4.300000 19.303719 +0.500000 4.400000 19.126415 +0.500000 4.500000 18.969110 +0.500000 4.600000 18.831806 +0.500000 4.700000 18.714502 +0.500000 4.800000 18.617198 +0.500000 4.900000 18.539893 +0.500000 5.000000 18.482589 +0.500000 5.100000 18.445285 +0.500000 5.200000 18.427980 +0.500000 5.300000 18.430676 +0.500000 5.400000 18.453372 +0.500000 5.500000 18.496068 +0.500000 5.600000 18.558763 +0.500000 5.700000 18.641459 +0.500000 5.800000 18.744155 +0.500000 5.900000 18.866850 +0.500000 6.000000 19.009546 +0.500000 6.100000 19.172242 +0.500000 6.200000 19.354938 +0.500000 6.300000 19.557633 +0.500000 6.400000 19.780329 +0.500000 6.500000 20.023025 +0.500000 6.600000 20.285720 +0.500000 6.700000 20.568416 +0.500000 6.800000 20.871112 +0.500000 6.900000 21.193808 +0.500000 7.000000 21.536503 +0.500000 7.100000 21.899199 +0.500000 7.200000 22.281895 +0.500000 7.300000 22.684590 +0.500000 7.400000 23.107286 +0.500000 7.500000 23.549982 +0.500000 7.600000 24.012678 +0.500000 7.700000 24.495373 +0.500000 7.800000 24.998069 +0.500000 7.900000 25.520765 +0.500000 8.000000 26.063461 +0.500000 8.100000 26.626156 +0.500000 8.200000 27.208852 +0.500000 8.300000 27.811548 +0.500000 8.400000 28.434243 +0.500000 8.500000 29.076939 +0.500000 8.600000 29.739635 +0.500000 8.700000 30.422331 +0.500000 8.800000 31.125026 +0.500000 8.900000 31.847722 +0.500000 9.000000 32.590418 +0.500000 9.100000 33.353113 +0.500000 9.200000 34.135809 +0.500000 9.300000 34.938505 +0.500000 9.400000 35.761201 +0.500000 9.500000 36.603896 +0.500000 9.600000 37.466592 +0.500000 9.700000 38.349288 +0.500000 9.800000 39.251983 +0.500000 9.900000 40.174679 +0.500000 10.000000 41.117375 +0.500000 10.100000 42.080071 +0.500000 10.200000 43.062766 +0.500000 10.300000 44.065462 +0.500000 10.400000 45.088158 +0.500000 10.500000 46.130853 +0.500000 10.600000 47.193549 +0.500000 10.700000 48.276245 +0.500000 10.800000 49.378941 +0.500000 10.900000 50.501636 +0.500000 11.000000 51.644332 +0.500000 11.100000 52.807028 +0.500000 11.200000 53.989723 +0.500000 11.300000 55.192419 +0.500000 11.400000 56.415115 +0.500000 11.500000 57.657811 +0.500000 11.600000 58.920506 +0.500000 11.700000 60.203202 +0.500000 11.800000 61.505898 +0.500000 11.900000 62.828594 +0.500000 12.000000 64.171289 +0.500000 12.100000 65.533985 +0.500000 12.200000 66.916681 +0.500000 12.300000 68.319376 +0.500000 12.400000 69.742072 +0.500000 12.500000 71.184768 +0.500000 12.600000 72.647464 +0.500000 12.700000 74.130159 +0.500000 12.800000 75.632855 +0.500000 12.900000 77.155551 +0.500000 13.000000 78.698246 +0.500000 13.100000 80.260942 +0.500000 13.200000 81.843638 +0.500000 13.300000 83.446334 +0.500000 13.400000 85.069029 +0.500000 13.500000 86.711725 +0.500000 13.600000 88.374421 +0.500000 13.700000 90.057116 +0.500000 13.800000 91.759812 +0.500000 13.900000 93.482508 +0.500000 14.000000 95.225204 +0.500000 14.100000 96.987899 +0.500000 14.200000 98.770595 +0.500000 14.300000 100.573291 +0.500000 14.400000 102.395986 +0.500000 14.500000 104.238682 +0.500000 14.600000 106.101378 +0.500000 14.700000 107.984074 +0.500000 14.800000 109.886769 +0.500000 14.900000 111.809465 +0.500000 15.000000 113.752161 + +0.600000 -5.000000 119.764887 +0.600000 -4.900000 117.756572 +0.600000 -4.800000 115.768256 +0.600000 -4.700000 113.799941 +0.600000 -4.600000 111.851626 +0.600000 -4.500000 109.923310 +0.600000 -4.400000 108.014995 +0.600000 -4.300000 106.126680 +0.600000 -4.200000 104.258364 +0.600000 -4.100000 102.410049 +0.600000 -4.000000 100.581734 +0.600000 -3.900000 98.773418 +0.600000 -3.800000 96.985103 +0.600000 -3.700000 95.216788 +0.600000 -3.600000 93.468472 +0.600000 -3.500000 91.740157 +0.600000 -3.400000 90.031841 +0.600000 -3.300000 88.343526 +0.600000 -3.200000 86.675211 +0.600000 -3.100000 85.026895 +0.600000 -3.000000 83.398580 +0.600000 -2.900000 81.790265 +0.600000 -2.800000 80.201949 +0.600000 -2.700000 78.633634 +0.600000 -2.600000 77.085319 +0.600000 -2.500000 75.557003 +0.600000 -2.400000 74.048688 +0.600000 -2.300000 72.560373 +0.600000 -2.200000 71.092057 +0.600000 -2.100000 69.643742 +0.600000 -2.000000 68.215427 +0.600000 -1.900000 66.807111 +0.600000 -1.800000 65.418796 +0.600000 -1.700000 64.050480 +0.600000 -1.600000 62.702165 +0.600000 -1.500000 61.373850 +0.600000 -1.400000 60.065534 +0.600000 -1.300000 58.777219 +0.600000 -1.200000 57.508904 +0.600000 -1.100000 56.260588 +0.600000 -1.000000 55.032273 +0.600000 -0.900000 53.823958 +0.600000 -0.800000 52.635642 +0.600000 -0.700000 51.467327 +0.600000 -0.600000 50.319012 +0.600000 -0.500000 49.190696 +0.600000 -0.400000 48.082381 +0.600000 -0.300000 46.994066 +0.600000 -0.200000 45.925750 +0.600000 -0.100000 44.877435 +0.600000 -0.000000 43.849119 +0.600000 0.100000 42.840804 +0.600000 0.200000 41.852489 +0.600000 0.300000 40.884173 +0.600000 0.400000 39.935858 +0.600000 0.500000 39.007543 +0.600000 0.600000 38.099227 +0.600000 0.700000 37.210912 +0.600000 0.800000 36.342597 +0.600000 0.900000 35.494281 +0.600000 1.000000 34.665966 +0.600000 1.100000 33.857651 +0.600000 1.200000 33.069335 +0.600000 1.300000 32.301020 +0.600000 1.400000 31.552705 +0.600000 1.500000 30.824389 +0.600000 1.600000 30.116074 +0.600000 1.700000 29.427758 +0.600000 1.800000 28.759443 +0.600000 1.900000 28.111128 +0.600000 2.000000 27.482812 +0.600000 2.100000 26.874497 +0.600000 2.200000 26.286182 +0.600000 2.300000 25.717866 +0.600000 2.400000 25.169551 +0.600000 2.500000 24.641236 +0.600000 2.600000 24.132920 +0.600000 2.700000 23.644605 +0.600000 2.800000 23.176290 +0.600000 2.900000 22.727974 +0.600000 3.000000 22.299659 +0.600000 3.100000 21.891344 +0.600000 3.200000 21.503028 +0.600000 3.300000 21.134713 +0.600000 3.400000 20.786397 +0.600000 3.500000 20.458082 +0.600000 3.600000 20.149767 +0.600000 3.700000 19.861451 +0.600000 3.800000 19.593136 +0.600000 3.900000 19.344821 +0.600000 4.000000 19.116505 +0.600000 4.100000 18.908190 +0.600000 4.200000 18.719875 +0.600000 4.300000 18.551559 +0.600000 4.400000 18.403244 +0.600000 4.500000 18.274929 +0.600000 4.600000 18.166613 +0.600000 4.700000 18.078298 +0.600000 4.800000 18.009983 +0.600000 4.900000 17.961667 +0.600000 5.000000 17.933352 +0.600000 5.100000 17.925036 +0.600000 5.200000 17.936721 +0.600000 5.300000 17.968406 +0.600000 5.400000 18.020090 +0.600000 5.500000 18.091775 +0.600000 5.600000 18.183460 +0.600000 5.700000 18.295144 +0.600000 5.800000 18.426829 +0.600000 5.900000 18.578514 +0.600000 6.000000 18.750198 +0.600000 6.100000 18.941883 +0.600000 6.200000 19.153568 +0.600000 6.300000 19.385252 +0.600000 6.400000 19.636937 +0.600000 6.500000 19.908622 +0.600000 6.600000 20.200306 +0.600000 6.700000 20.511991 +0.600000 6.800000 20.843675 +0.600000 6.900000 21.195360 +0.600000 7.000000 21.567045 +0.600000 7.100000 21.958729 +0.600000 7.200000 22.370414 +0.600000 7.300000 22.802099 +0.600000 7.400000 23.253783 +0.600000 7.500000 23.725468 +0.600000 7.600000 24.217153 +0.600000 7.700000 24.728837 +0.600000 7.800000 25.260522 +0.600000 7.900000 25.812207 +0.600000 8.000000 26.383891 +0.600000 8.100000 26.975576 +0.600000 8.200000 27.587261 +0.600000 8.300000 28.218945 +0.600000 8.400000 28.870630 +0.600000 8.500000 29.542314 +0.600000 8.600000 30.233999 +0.600000 8.700000 30.945684 +0.600000 8.800000 31.677368 +0.600000 8.900000 32.429053 +0.600000 9.000000 33.200738 +0.600000 9.100000 33.992422 +0.600000 9.200000 34.804107 +0.600000 9.300000 35.635792 +0.600000 9.400000 36.487476 +0.600000 9.500000 37.359161 +0.600000 9.600000 38.250846 +0.600000 9.700000 39.162530 +0.600000 9.800000 40.094215 +0.600000 9.900000 41.045900 +0.600000 10.000000 42.017584 +0.600000 10.100000 43.009269 +0.600000 10.200000 44.020953 +0.600000 10.300000 45.052638 +0.600000 10.400000 46.104323 +0.600000 10.500000 47.176007 +0.600000 10.600000 48.267692 +0.600000 10.700000 49.379377 +0.600000 10.800000 50.511061 +0.600000 10.900000 51.662746 +0.600000 11.000000 52.834431 +0.600000 11.100000 54.026115 +0.600000 11.200000 55.237800 +0.600000 11.300000 56.469485 +0.600000 11.400000 57.721169 +0.600000 11.500000 58.992854 +0.600000 11.600000 60.284539 +0.600000 11.700000 61.596223 +0.600000 11.800000 62.927908 +0.600000 11.900000 64.279592 +0.600000 12.000000 65.651277 +0.600000 12.100000 67.042962 +0.600000 12.200000 68.454646 +0.600000 12.300000 69.886331 +0.600000 12.400000 71.338016 +0.600000 12.500000 72.809700 +0.600000 12.600000 74.301385 +0.600000 12.700000 75.813070 +0.600000 12.800000 77.344754 +0.600000 12.900000 78.896439 +0.600000 13.000000 80.468124 +0.600000 13.100000 82.059808 +0.600000 13.200000 83.671493 +0.600000 13.300000 85.303178 +0.600000 13.400000 86.954862 +0.600000 13.500000 88.626547 +0.600000 13.600000 90.318231 +0.600000 13.700000 92.029916 +0.600000 13.800000 93.761601 +0.600000 13.900000 95.513285 +0.600000 14.000000 97.284970 +0.600000 14.100000 99.076655 +0.600000 14.200000 100.888339 +0.600000 14.300000 102.720024 +0.600000 14.400000 104.571709 +0.600000 14.500000 106.443393 +0.600000 14.600000 108.335078 +0.600000 14.700000 110.246763 +0.600000 14.800000 112.178447 +0.600000 14.900000 114.130132 +0.600000 15.000000 116.101817 + +0.700000 -5.000000 116.330996 +0.700000 -4.900000 114.351153 +0.700000 -4.800000 112.391310 +0.700000 -4.700000 110.451467 +0.700000 -4.600000 108.531623 +0.700000 -4.500000 106.631780 +0.700000 -4.400000 104.751937 +0.700000 -4.300000 102.892094 +0.700000 -4.200000 101.052251 +0.700000 -4.100000 99.232408 +0.700000 -4.000000 97.432564 +0.700000 -3.900000 95.652721 +0.700000 -3.800000 93.892878 +0.700000 -3.700000 92.153035 +0.700000 -3.600000 90.433192 +0.700000 -3.500000 88.733349 +0.700000 -3.400000 87.053505 +0.700000 -3.300000 85.393662 +0.700000 -3.200000 83.753819 +0.700000 -3.100000 82.133976 +0.700000 -3.000000 80.534133 +0.700000 -2.900000 78.954290 +0.700000 -2.800000 77.394446 +0.700000 -2.700000 75.854603 +0.700000 -2.600000 74.334760 +0.700000 -2.500000 72.834917 +0.700000 -2.400000 71.355074 +0.700000 -2.300000 69.895231 +0.700000 -2.200000 68.455388 +0.700000 -2.100000 67.035544 +0.700000 -2.000000 65.635701 +0.700000 -1.900000 64.255858 +0.700000 -1.800000 62.896015 +0.700000 -1.700000 61.556172 +0.700000 -1.600000 60.236329 +0.700000 -1.500000 58.936485 +0.700000 -1.400000 57.656642 +0.700000 -1.300000 56.396799 +0.700000 -1.200000 55.156956 +0.700000 -1.100000 53.937113 +0.700000 -1.000000 52.737270 +0.700000 -0.900000 51.557426 +0.700000 -0.800000 50.397583 +0.700000 -0.700000 49.257740 +0.700000 -0.600000 48.137897 +0.700000 -0.500000 47.038054 +0.700000 -0.400000 45.958211 +0.700000 -0.300000 44.898367 +0.700000 -0.200000 43.858524 +0.700000 -0.100000 42.838681 +0.700000 -0.000000 41.838838 +0.700000 0.100000 40.858995 +0.700000 0.200000 39.899152 +0.700000 0.300000 38.959308 +0.700000 0.400000 38.039465 +0.700000 0.500000 37.139622 +0.700000 0.600000 36.259779 +0.700000 0.700000 35.399936 +0.700000 0.800000 34.560093 +0.700000 0.900000 33.740249 +0.700000 1.000000 32.940406 +0.700000 1.100000 32.160563 +0.700000 1.200000 31.400720 +0.700000 1.300000 30.660877 +0.700000 1.400000 29.941034 +0.700000 1.500000 29.241191 +0.700000 1.600000 28.561347 +0.700000 1.700000 27.901504 +0.700000 1.800000 27.261661 +0.700000 1.900000 26.641818 +0.700000 2.000000 26.041975 +0.700000 2.100000 25.462132 +0.700000 2.200000 24.902288 +0.700000 2.300000 24.362445 +0.700000 2.400000 23.842602 +0.700000 2.500000 23.342759 +0.700000 2.600000 22.862916 +0.700000 2.700000 22.403073 +0.700000 2.800000 21.963229 +0.700000 2.900000 21.543386 +0.700000 3.000000 21.143543 +0.700000 3.100000 20.763700 +0.700000 3.200000 20.403857 +0.700000 3.300000 20.064014 +0.700000 3.400000 19.744170 +0.700000 3.500000 19.444327 +0.700000 3.600000 19.164484 +0.700000 3.700000 18.904641 +0.700000 3.800000 18.664798 +0.700000 3.900000 18.444955 +0.700000 4.000000 18.245111 +0.700000 4.100000 18.065268 +0.700000 4.200000 17.905425 +0.700000 4.300000 17.765582 +0.700000 4.400000 17.645739 +0.700000 4.500000 17.545896 +0.700000 4.600000 17.466053 +0.700000 4.700000 17.406209 +0.700000 4.800000 17.366366 +0.700000 4.900000 17.346523 +0.700000 5.000000 17.346680 +0.700000 5.100000 17.366837 +0.700000 5.200000 17.406994 +0.700000 5.300000 17.467150 +0.700000 5.400000 17.547307 +0.700000 5.500000 17.647464 +0.700000 5.600000 17.767621 +0.700000 5.700000 17.907778 +0.700000 5.800000 18.067935 +0.700000 5.900000 18.248091 +0.700000 6.000000 18.448248 +0.700000 6.100000 18.668405 +0.700000 6.200000 18.908562 +0.700000 6.300000 19.168719 +0.700000 6.400000 19.448876 +0.700000 6.500000 19.749032 +0.700000 6.600000 20.069189 +0.700000 6.700000 20.409346 +0.700000 6.800000 20.769503 +0.700000 6.900000 21.149660 +0.700000 7.000000 21.549817 +0.700000 7.100000 21.969973 +0.700000 7.200000 22.410130 +0.700000 7.300000 22.870287 +0.700000 7.400000 23.350444 +0.700000 7.500000 23.850601 +0.700000 7.600000 24.370758 +0.700000 7.700000 24.910915 +0.700000 7.800000 25.471071 +0.700000 7.900000 26.051228 +0.700000 8.000000 26.651385 +0.700000 8.100000 27.271542 +0.700000 8.200000 27.911699 +0.700000 8.300000 28.571856 +0.700000 8.400000 29.252012 +0.700000 8.500000 29.952169 +0.700000 8.600000 30.672326 +0.700000 8.700000 31.412483 +0.700000 8.800000 32.172640 +0.700000 8.900000 32.952797 +0.700000 9.000000 33.752953 +0.700000 9.100000 34.573110 +0.700000 9.200000 35.413267 +0.700000 9.300000 36.273424 +0.700000 9.400000 37.153581 +0.700000 9.500000 38.053738 +0.700000 9.600000 38.973894 +0.700000 9.700000 39.914051 +0.700000 9.800000 40.874208 +0.700000 9.900000 41.854365 +0.700000 10.000000 42.854522 +0.700000 10.100000 43.874679 +0.700000 10.200000 44.914835 +0.700000 10.300000 45.974992 +0.700000 10.400000 47.055149 +0.700000 10.500000 48.155306 +0.700000 10.600000 49.275463 +0.700000 10.700000 50.415620 +0.700000 10.800000 51.575776 +0.700000 10.900000 52.755933 +0.700000 11.000000 53.956090 +0.700000 11.100000 55.176247 +0.700000 11.200000 56.416404 +0.700000 11.300000 57.676561 +0.700000 11.400000 58.956718 +0.700000 11.500000 60.256874 +0.700000 11.600000 61.577031 +0.700000 11.700000 62.917188 +0.700000 11.800000 64.277345 +0.700000 11.900000 65.657502 +0.700000 12.000000 67.057659 +0.700000 12.100000 68.477815 +0.700000 12.200000 69.917972 +0.700000 12.300000 71.378129 +0.700000 12.400000 72.858286 +0.700000 12.500000 74.358443 +0.700000 12.600000 75.878600 +0.700000 12.700000 77.418756 +0.700000 12.800000 78.978913 +0.700000 12.900000 80.559070 +0.700000 13.000000 82.159227 +0.700000 13.100000 83.779384 +0.700000 13.200000 85.419541 +0.700000 13.300000 87.079697 +0.700000 13.400000 88.759854 +0.700000 13.500000 90.460011 +0.700000 13.600000 92.180168 +0.700000 13.700000 93.920325 +0.700000 13.800000 95.680482 +0.700000 13.900000 97.460638 +0.700000 14.000000 99.260795 +0.700000 14.100000 101.080952 +0.700000 14.200000 102.921109 +0.700000 14.300000 104.781266 +0.700000 14.400000 106.661423 +0.700000 14.500000 108.561580 +0.700000 14.600000 110.481736 +0.700000 14.700000 112.421893 +0.700000 14.800000 114.382050 +0.700000 14.900000 116.362207 +0.700000 15.000000 118.362364 + +0.800000 -5.000000 112.914941 +0.800000 -4.900000 110.963053 +0.800000 -4.800000 109.031165 +0.800000 -4.700000 107.119278 +0.800000 -4.600000 105.227390 +0.800000 -4.500000 103.355502 +0.800000 -4.400000 101.503615 +0.800000 -4.300000 99.671727 +0.800000 -4.200000 97.859839 +0.800000 -4.100000 96.067951 +0.800000 -4.000000 94.296064 +0.800000 -3.900000 92.544176 +0.800000 -3.800000 90.812288 +0.800000 -3.700000 89.100401 +0.800000 -3.600000 87.408513 +0.800000 -3.500000 85.736625 +0.800000 -3.400000 84.084737 +0.800000 -3.300000 82.452850 +0.800000 -3.200000 80.840962 +0.800000 -3.100000 79.249074 +0.800000 -3.000000 77.677187 +0.800000 -2.900000 76.125299 +0.800000 -2.800000 74.593411 +0.800000 -2.700000 73.081524 +0.800000 -2.600000 71.589636 +0.800000 -2.500000 70.117748 +0.800000 -2.400000 68.665860 +0.800000 -2.300000 67.233973 +0.800000 -2.200000 65.822085 +0.800000 -2.100000 64.430197 +0.800000 -2.000000 63.058310 +0.800000 -1.900000 61.706422 +0.800000 -1.800000 60.374534 +0.800000 -1.700000 59.062646 +0.800000 -1.600000 57.770759 +0.800000 -1.500000 56.498871 +0.800000 -1.400000 55.246983 +0.800000 -1.300000 54.015096 +0.800000 -1.200000 52.803208 +0.800000 -1.100000 51.611320 +0.800000 -1.000000 50.439432 +0.800000 -0.900000 49.287545 +0.800000 -0.800000 48.155657 +0.800000 -0.700000 47.043769 +0.800000 -0.600000 45.951882 +0.800000 -0.500000 44.879994 +0.800000 -0.400000 43.828106 +0.800000 -0.300000 42.796219 +0.800000 -0.200000 41.784331 +0.800000 -0.100000 40.792443 +0.800000 -0.000000 39.820555 +0.800000 0.100000 38.868668 +0.800000 0.200000 37.936780 +0.800000 0.300000 37.024892 +0.800000 0.400000 36.133005 +0.800000 0.500000 35.261117 +0.800000 0.600000 34.409229 +0.800000 0.700000 33.577341 +0.800000 0.800000 32.765454 +0.800000 0.900000 31.973566 +0.800000 1.000000 31.201678 +0.800000 1.100000 30.449791 +0.800000 1.200000 29.717903 +0.800000 1.300000 29.006015 +0.800000 1.400000 28.314127 +0.800000 1.500000 27.642240 +0.800000 1.600000 26.990352 +0.800000 1.700000 26.358464 +0.800000 1.800000 25.746577 +0.800000 1.900000 25.154689 +0.800000 2.000000 24.582801 +0.800000 2.100000 24.030914 +0.800000 2.200000 23.499026 +0.800000 2.300000 22.987138 +0.800000 2.400000 22.495250 +0.800000 2.500000 22.023363 +0.800000 2.600000 21.571475 +0.800000 2.700000 21.139587 +0.800000 2.800000 20.727700 +0.800000 2.900000 20.335812 +0.800000 3.000000 19.963924 +0.800000 3.100000 19.612036 +0.800000 3.200000 19.280149 +0.800000 3.300000 18.968261 +0.800000 3.400000 18.676373 +0.800000 3.500000 18.404486 +0.800000 3.600000 18.152598 +0.800000 3.700000 17.920710 +0.800000 3.800000 17.708822 +0.800000 3.900000 17.516935 +0.800000 4.000000 17.345047 +0.800000 4.100000 17.193159 +0.800000 4.200000 17.061272 +0.800000 4.300000 16.949384 +0.800000 4.400000 16.857496 +0.800000 4.500000 16.785609 +0.800000 4.600000 16.733721 +0.800000 4.700000 16.701833 +0.800000 4.800000 16.689945 +0.800000 4.900000 16.698058 +0.800000 5.000000 16.726170 +0.800000 5.100000 16.774282 +0.800000 5.200000 16.842395 +0.800000 5.300000 16.930507 +0.800000 5.400000 17.038619 +0.800000 5.500000 17.166731 +0.800000 5.600000 17.314844 +0.800000 5.700000 17.482956 +0.800000 5.800000 17.671068 +0.800000 5.900000 17.879181 +0.800000 6.000000 18.107293 +0.800000 6.100000 18.355405 +0.800000 6.200000 18.623517 +0.800000 6.300000 18.911630 +0.800000 6.400000 19.219742 +0.800000 6.500000 19.547854 +0.800000 6.600000 19.895967 +0.800000 6.700000 20.264079 +0.800000 6.800000 20.652191 +0.800000 6.900000 21.060304 +0.800000 7.000000 21.488416 +0.800000 7.100000 21.936528 +0.800000 7.200000 22.404640 +0.800000 7.300000 22.892753 +0.800000 7.400000 23.400865 +0.800000 7.500000 23.928977 +0.800000 7.600000 24.477090 +0.800000 7.700000 25.045202 +0.800000 7.800000 25.633314 +0.800000 7.900000 26.241426 +0.800000 8.000000 26.869539 +0.800000 8.100000 27.517651 +0.800000 8.200000 28.185763 +0.800000 8.300000 28.873876 +0.800000 8.400000 29.581988 +0.800000 8.500000 30.310100 +0.800000 8.600000 31.058212 +0.800000 8.700000 31.826325 +0.800000 8.800000 32.614437 +0.800000 8.900000 33.422549 +0.800000 9.000000 34.250662 +0.800000 9.100000 35.098774 +0.800000 9.200000 35.966886 +0.800000 9.300000 36.854999 +0.800000 9.400000 37.763111 +0.800000 9.500000 38.691223 +0.800000 9.600000 39.639335 +0.800000 9.700000 40.607448 +0.800000 9.800000 41.595560 +0.800000 9.900000 42.603672 +0.800000 10.000000 43.631785 +0.800000 10.100000 44.679897 +0.800000 10.200000 45.748009 +0.800000 10.300000 46.836121 +0.800000 10.400000 47.944234 +0.800000 10.500000 49.072346 +0.800000 10.600000 50.220458 +0.800000 10.700000 51.388571 +0.800000 10.800000 52.576683 +0.800000 10.900000 53.784795 +0.800000 11.000000 55.012907 +0.800000 11.100000 56.261020 +0.800000 11.200000 57.529132 +0.800000 11.300000 58.817244 +0.800000 11.400000 60.125357 +0.800000 11.500000 61.453469 +0.800000 11.600000 62.801581 +0.800000 11.700000 64.169694 +0.800000 11.800000 65.557806 +0.800000 11.900000 66.965918 +0.800000 12.000000 68.394030 +0.800000 12.100000 69.842143 +0.800000 12.200000 71.310255 +0.800000 12.300000 72.798367 +0.800000 12.400000 74.306480 +0.800000 12.500000 75.834592 +0.800000 12.600000 77.382704 +0.800000 12.700000 78.950816 +0.800000 12.800000 80.538929 +0.800000 12.900000 82.147041 +0.800000 13.000000 83.775153 +0.800000 13.100000 85.423266 +0.800000 13.200000 87.091378 +0.800000 13.300000 88.779490 +0.800000 13.400000 90.487602 +0.800000 13.500000 92.215715 +0.800000 13.600000 93.963827 +0.800000 13.700000 95.731939 +0.800000 13.800000 97.520052 +0.800000 13.900000 99.328164 +0.800000 14.000000 101.156276 +0.800000 14.100000 103.004389 +0.800000 14.200000 104.872501 +0.800000 14.300000 106.760613 +0.800000 14.400000 108.668725 +0.800000 14.500000 110.596838 +0.800000 14.600000 112.544950 +0.800000 14.700000 114.513062 +0.800000 14.800000 116.501175 +0.800000 14.900000 118.509287 +0.800000 15.000000 120.537399 + +0.900000 -5.000000 109.521092 +0.900000 -4.900000 107.596643 +0.900000 -4.800000 105.692194 +0.900000 -4.700000 103.807745 +0.900000 -4.600000 101.943296 +0.900000 -4.500000 100.098847 +0.900000 -4.400000 98.274398 +0.900000 -4.300000 96.469949 +0.900000 -4.200000 94.685500 +0.900000 -4.100000 92.921051 +0.900000 -4.000000 91.176602 +0.900000 -3.900000 89.452153 +0.900000 -3.800000 87.747704 +0.900000 -3.700000 86.063255 +0.900000 -3.600000 84.398806 +0.900000 -3.500000 82.754357 +0.900000 -3.400000 81.129908 +0.900000 -3.300000 79.525459 +0.900000 -3.200000 77.941010 +0.900000 -3.100000 76.376561 +0.900000 -3.000000 74.832112 +0.900000 -2.900000 73.307663 +0.900000 -2.800000 71.803214 +0.900000 -2.700000 70.318765 +0.900000 -2.600000 68.854316 +0.900000 -2.500000 67.409867 +0.900000 -2.400000 65.985418 +0.900000 -2.300000 64.580969 +0.900000 -2.200000 63.196520 +0.900000 -2.100000 61.832071 +0.900000 -2.000000 60.487622 +0.900000 -1.900000 59.163173 +0.900000 -1.800000 57.858724 +0.900000 -1.700000 56.574275 +0.900000 -1.600000 55.309826 +0.900000 -1.500000 54.065377 +0.900000 -1.400000 52.840928 +0.900000 -1.300000 51.636479 +0.900000 -1.200000 50.452030 +0.900000 -1.100000 49.287581 +0.900000 -1.000000 48.143132 +0.900000 -0.900000 47.018683 +0.900000 -0.800000 45.914234 +0.900000 -0.700000 44.829785 +0.900000 -0.600000 43.765336 +0.900000 -0.500000 42.720887 +0.900000 -0.400000 41.696438 +0.900000 -0.300000 40.691989 +0.900000 -0.200000 39.707540 +0.900000 -0.100000 38.743091 +0.900000 -0.000000 37.798642 +0.900000 0.100000 36.874193 +0.900000 0.200000 35.969744 +0.900000 0.300000 35.085295 +0.900000 0.400000 34.220846 +0.900000 0.500000 33.376397 +0.900000 0.600000 32.551948 +0.900000 0.700000 31.747499 +0.900000 0.800000 30.963050 +0.900000 0.900000 30.198601 +0.900000 1.000000 29.454152 +0.900000 1.100000 28.729703 +0.900000 1.200000 28.025254 +0.900000 1.300000 27.340805 +0.900000 1.400000 26.676356 +0.900000 1.500000 26.031907 +0.900000 1.600000 25.407458 +0.900000 1.700000 24.803009 +0.900000 1.800000 24.218560 +0.900000 1.900000 23.654111 +0.900000 2.000000 23.109662 +0.900000 2.100000 22.585213 +0.900000 2.200000 22.080764 +0.900000 2.300000 21.596315 +0.900000 2.400000 21.131866 +0.900000 2.500000 20.687417 +0.900000 2.600000 20.262968 +0.900000 2.700000 19.858519 +0.900000 2.800000 19.474070 +0.900000 2.900000 19.109621 +0.900000 3.000000 18.765172 +0.900000 3.100000 18.440723 +0.900000 3.200000 18.136274 +0.900000 3.300000 17.851825 +0.900000 3.400000 17.587376 +0.900000 3.500000 17.342927 +0.900000 3.600000 17.118478 +0.900000 3.700000 16.914029 +0.900000 3.800000 16.729580 +0.900000 3.900000 16.565131 +0.900000 4.000000 16.420682 +0.900000 4.100000 16.296233 +0.900000 4.200000 16.191784 +0.900000 4.300000 16.107335 +0.900000 4.400000 16.042886 +0.900000 4.500000 15.998437 +0.900000 4.600000 15.973988 +0.900000 4.700000 15.969539 +0.900000 4.800000 15.985090 +0.900000 4.900000 16.020641 +0.900000 5.000000 16.076192 +0.900000 5.100000 16.151743 +0.900000 5.200000 16.247294 +0.900000 5.300000 16.362845 +0.900000 5.400000 16.498396 +0.900000 5.500000 16.653947 +0.900000 5.600000 16.829498 +0.900000 5.700000 17.025049 +0.900000 5.800000 17.240600 +0.900000 5.900000 17.476151 +0.900000 6.000000 17.731702 +0.900000 6.100000 18.007253 +0.900000 6.200000 18.302804 +0.900000 6.300000 18.618355 +0.900000 6.400000 18.953906 +0.900000 6.500000 19.309457 +0.900000 6.600000 19.685008 +0.900000 6.700000 20.080559 +0.900000 6.800000 20.496110 +0.900000 6.900000 20.931661 +0.900000 7.000000 21.387212 +0.900000 7.100000 21.862763 +0.900000 7.200000 22.358314 +0.900000 7.300000 22.873865 +0.900000 7.400000 23.409416 +0.900000 7.500000 23.964967 +0.900000 7.600000 24.540518 +0.900000 7.700000 25.136069 +0.900000 7.800000 25.751620 +0.900000 7.900000 26.387172 +0.900000 8.000000 27.042723 +0.900000 8.100000 27.718274 +0.900000 8.200000 28.413825 +0.900000 8.300000 29.129376 +0.900000 8.400000 29.864927 +0.900000 8.500000 30.620478 +0.900000 8.600000 31.396029 +0.900000 8.700000 32.191580 +0.900000 8.800000 33.007131 +0.900000 8.900000 33.842682 +0.900000 9.000000 34.698233 +0.900000 9.100000 35.573784 +0.900000 9.200000 36.469335 +0.900000 9.300000 37.384886 +0.900000 9.400000 38.320437 +0.900000 9.500000 39.275988 +0.900000 9.600000 40.251539 +0.900000 9.700000 41.247090 +0.900000 9.800000 42.262641 +0.900000 9.900000 43.298192 +0.900000 10.000000 44.353743 +0.900000 10.100000 45.429294 +0.900000 10.200000 46.524845 +0.900000 10.300000 47.640396 +0.900000 10.400000 48.775947 +0.900000 10.500000 49.931498 +0.900000 10.600000 51.107049 +0.900000 10.700000 52.302600 +0.900000 10.800000 53.518151 +0.900000 10.900000 54.753702 +0.900000 11.000000 56.009253 +0.900000 11.100000 57.284804 +0.900000 11.200000 58.580355 +0.900000 11.300000 59.895906 +0.900000 11.400000 61.231457 +0.900000 11.500000 62.587008 +0.900000 11.600000 63.962559 +0.900000 11.700000 65.358110 +0.900000 11.800000 66.773661 +0.900000 11.900000 68.209212 +0.900000 12.000000 69.664763 +0.900000 12.100000 71.140314 +0.900000 12.200000 72.635865 +0.900000 12.300000 74.151416 +0.900000 12.400000 75.686967 +0.900000 12.500000 77.242518 +0.900000 12.600000 78.818069 +0.900000 12.700000 80.413620 +0.900000 12.800000 82.029171 +0.900000 12.900000 83.664722 +0.900000 13.000000 85.320273 +0.900000 13.100000 86.995824 +0.900000 13.200000 88.691375 +0.900000 13.300000 90.406926 +0.900000 13.400000 92.142477 +0.900000 13.500000 93.898028 +0.900000 13.600000 95.673579 +0.900000 13.700000 97.469130 +0.900000 13.800000 99.284681 +0.900000 13.900000 101.120232 +0.900000 14.000000 102.975783 +0.900000 14.100000 104.851334 +0.900000 14.200000 106.746885 +0.900000 14.300000 108.662436 +0.900000 14.400000 110.597987 +0.900000 14.500000 112.553538 +0.900000 14.600000 114.529089 +0.900000 14.700000 116.524640 +0.900000 14.800000 118.540191 +0.900000 14.900000 120.575742 +0.900000 15.000000 122.631293 + +1.000000 -5.000000 106.154526 +1.000000 -4.900000 104.256999 +1.000000 -4.800000 102.379472 +1.000000 -4.700000 100.521945 +1.000000 -4.600000 98.684418 +1.000000 -4.500000 96.866891 +1.000000 -4.400000 95.069364 +1.000000 -4.300000 93.291837 +1.000000 -4.200000 91.534310 +1.000000 -4.100000 89.796783 +1.000000 -4.000000 88.079256 +1.000000 -3.900000 86.381729 +1.000000 -3.800000 84.704202 +1.000000 -3.700000 83.046675 +1.000000 -3.600000 81.409148 +1.000000 -3.500000 79.791621 +1.000000 -3.400000 78.194094 +1.000000 -3.300000 76.616567 +1.000000 -3.200000 75.059040 +1.000000 -3.100000 73.521513 +1.000000 -3.000000 72.003986 +1.000000 -2.900000 70.506459 +1.000000 -2.800000 69.028932 +1.000000 -2.700000 67.571405 +1.000000 -2.600000 66.133878 +1.000000 -2.500000 64.716351 +1.000000 -2.400000 63.318824 +1.000000 -2.300000 61.941297 +1.000000 -2.200000 60.583770 +1.000000 -2.100000 59.246243 +1.000000 -2.000000 57.928716 +1.000000 -1.900000 56.631189 +1.000000 -1.800000 55.353662 +1.000000 -1.700000 54.096135 +1.000000 -1.600000 52.858608 +1.000000 -1.500000 51.641081 +1.000000 -1.400000 50.443554 +1.000000 -1.300000 49.266027 +1.000000 -1.200000 48.108500 +1.000000 -1.100000 46.970973 +1.000000 -1.000000 45.853446 +1.000000 -0.900000 44.755919 +1.000000 -0.800000 43.678392 +1.000000 -0.700000 42.620865 +1.000000 -0.600000 41.583338 +1.000000 -0.500000 40.565811 +1.000000 -0.400000 39.568284 +1.000000 -0.300000 38.590757 +1.000000 -0.200000 37.633230 +1.000000 -0.100000 36.695703 +1.000000 -0.000000 35.778176 +1.000000 0.100000 34.880649 +1.000000 0.200000 34.003122 +1.000000 0.300000 33.145595 +1.000000 0.400000 32.308068 +1.000000 0.500000 31.490541 +1.000000 0.600000 30.693014 +1.000000 0.700000 29.915487 +1.000000 0.800000 29.157960 +1.000000 0.900000 28.420433 +1.000000 1.000000 27.702906 +1.000000 1.100000 27.005379 +1.000000 1.200000 26.327852 +1.000000 1.300000 25.670325 +1.000000 1.400000 25.032797 +1.000000 1.500000 24.415270 +1.000000 1.600000 23.817743 +1.000000 1.700000 23.240216 +1.000000 1.800000 22.682689 +1.000000 1.900000 22.145162 +1.000000 2.000000 21.627635 +1.000000 2.100000 21.130108 +1.000000 2.200000 20.652581 +1.000000 2.300000 20.195054 +1.000000 2.400000 19.757527 +1.000000 2.500000 19.340000 +1.000000 2.600000 18.942473 +1.000000 2.700000 18.564946 +1.000000 2.800000 18.207419 +1.000000 2.900000 17.869892 +1.000000 3.000000 17.552365 +1.000000 3.100000 17.254838 +1.000000 3.200000 16.977311 +1.000000 3.300000 16.719784 +1.000000 3.400000 16.482257 +1.000000 3.500000 16.264730 +1.000000 3.600000 16.067203 +1.000000 3.700000 15.889676 +1.000000 3.800000 15.732149 +1.000000 3.900000 15.594622 +1.000000 4.000000 15.477095 +1.000000 4.100000 15.379568 +1.000000 4.200000 15.302041 +1.000000 4.300000 15.244514 +1.000000 4.400000 15.206987 +1.000000 4.500000 15.189460 +1.000000 4.600000 15.191933 +1.000000 4.700000 15.214406 +1.000000 4.800000 15.256879 +1.000000 4.900000 15.319352 +1.000000 5.000000 15.401825 +1.000000 5.100000 15.504298 +1.000000 5.200000 15.626771 +1.000000 5.300000 15.769244 +1.000000 5.400000 15.931717 +1.000000 5.500000 16.114190 +1.000000 5.600000 16.316663 +1.000000 5.700000 16.539136 +1.000000 5.800000 16.781609 +1.000000 5.900000 17.044082 +1.000000 6.000000 17.326555 +1.000000 6.100000 17.629028 +1.000000 6.200000 17.951501 +1.000000 6.300000 18.293974 +1.000000 6.400000 18.656447 +1.000000 6.500000 19.038920 +1.000000 6.600000 19.441393 +1.000000 6.700000 19.863866 +1.000000 6.800000 20.306339 +1.000000 6.900000 20.768812 +1.000000 7.000000 21.251285 +1.000000 7.100000 21.753758 +1.000000 7.200000 22.276231 +1.000000 7.300000 22.818704 +1.000000 7.400000 23.381177 +1.000000 7.500000 23.963650 +1.000000 7.600000 24.566123 +1.000000 7.700000 25.188596 +1.000000 7.800000 25.831068 +1.000000 7.900000 26.493541 +1.000000 8.000000 27.176014 +1.000000 8.100000 27.878487 +1.000000 8.200000 28.600960 +1.000000 8.300000 29.343433 +1.000000 8.400000 30.105906 +1.000000 8.500000 30.888379 +1.000000 8.600000 31.690852 +1.000000 8.700000 32.513325 +1.000000 8.800000 33.355798 +1.000000 8.900000 34.218271 +1.000000 9.000000 35.100744 +1.000000 9.100000 36.003217 +1.000000 9.200000 36.925690 +1.000000 9.300000 37.868163 +1.000000 9.400000 38.830636 +1.000000 9.500000 39.813109 +1.000000 9.600000 40.815582 +1.000000 9.700000 41.838055 +1.000000 9.800000 42.880528 +1.000000 9.900000 43.943001 +1.000000 10.000000 45.025474 +1.000000 10.100000 46.127947 +1.000000 10.200000 47.250420 +1.000000 10.300000 48.392893 +1.000000 10.400000 49.555366 +1.000000 10.500000 50.737839 +1.000000 10.600000 51.940312 +1.000000 10.700000 53.162785 +1.000000 10.800000 54.405258 +1.000000 10.900000 55.667731 +1.000000 11.000000 56.950204 +1.000000 11.100000 58.252677 +1.000000 11.200000 59.575150 +1.000000 11.300000 60.917623 +1.000000 11.400000 62.280096 +1.000000 11.500000 63.662569 +1.000000 11.600000 65.065042 +1.000000 11.700000 66.487515 +1.000000 11.800000 67.929988 +1.000000 11.900000 69.392461 +1.000000 12.000000 70.874934 +1.000000 12.100000 72.377407 +1.000000 12.200000 73.899880 +1.000000 12.300000 75.442353 +1.000000 12.400000 77.004826 +1.000000 12.500000 78.587299 +1.000000 12.600000 80.189772 +1.000000 12.700000 81.812245 +1.000000 12.800000 83.454718 +1.000000 12.900000 85.117191 +1.000000 13.000000 86.799664 +1.000000 13.100000 88.502137 +1.000000 13.200000 90.224610 +1.000000 13.300000 91.967083 +1.000000 13.400000 93.729556 +1.000000 13.500000 95.512029 +1.000000 13.600000 97.314502 +1.000000 13.700000 99.136975 +1.000000 13.800000 100.979448 +1.000000 13.900000 102.841921 +1.000000 14.000000 104.724394 +1.000000 14.100000 106.626866 +1.000000 14.200000 108.549339 +1.000000 14.300000 110.491812 +1.000000 14.400000 112.454285 +1.000000 14.500000 114.436758 +1.000000 14.600000 116.439231 +1.000000 14.700000 118.461704 +1.000000 14.800000 120.504177 +1.000000 14.900000 122.566650 +1.000000 15.000000 124.649123 + +1.100000 -5.000000 102.820959 +1.100000 -4.900000 100.949838 +1.100000 -4.800000 99.098716 +1.100000 -4.700000 97.267594 +1.100000 -4.600000 95.456472 +1.100000 -4.500000 93.665351 +1.100000 -4.400000 91.894229 +1.100000 -4.300000 90.143107 +1.100000 -4.200000 88.411985 +1.100000 -4.100000 86.700864 +1.100000 -4.000000 85.009742 +1.100000 -3.900000 83.338620 +1.100000 -3.800000 81.687498 +1.100000 -3.700000 80.056376 +1.100000 -3.600000 78.445255 +1.100000 -3.500000 76.854133 +1.100000 -3.400000 75.283011 +1.100000 -3.300000 73.731889 +1.100000 -3.200000 72.200768 +1.100000 -3.100000 70.689646 +1.100000 -3.000000 69.198524 +1.100000 -2.900000 67.727402 +1.100000 -2.800000 66.276280 +1.100000 -2.700000 64.845159 +1.100000 -2.600000 63.434037 +1.100000 -2.500000 62.042915 +1.100000 -2.400000 60.671793 +1.100000 -2.300000 59.320672 +1.100000 -2.200000 57.989550 +1.100000 -2.100000 56.678428 +1.100000 -2.000000 55.387306 +1.100000 -1.900000 54.116184 +1.100000 -1.800000 52.865063 +1.100000 -1.700000 51.633941 +1.100000 -1.600000 50.422819 +1.100000 -1.500000 49.231697 +1.100000 -1.400000 48.060576 +1.100000 -1.300000 46.909454 +1.100000 -1.200000 45.778332 +1.100000 -1.100000 44.667210 +1.100000 -1.000000 43.576088 +1.100000 -0.900000 42.504967 +1.100000 -0.800000 41.453845 +1.100000 -0.700000 40.422723 +1.100000 -0.600000 39.411601 +1.100000 -0.500000 38.420480 +1.100000 -0.400000 37.449358 +1.100000 -0.300000 36.498236 +1.100000 -0.200000 35.567114 +1.100000 -0.100000 34.655992 +1.100000 -0.000000 33.764871 +1.100000 0.100000 32.893749 +1.100000 0.200000 32.042627 +1.100000 0.300000 31.211505 +1.100000 0.400000 30.400384 +1.100000 0.500000 29.609262 +1.100000 0.600000 28.838140 +1.100000 0.700000 28.087018 +1.100000 0.800000 27.355896 +1.100000 0.900000 26.644775 +1.100000 1.000000 25.953653 +1.100000 1.100000 25.282531 +1.100000 1.200000 24.631409 +1.100000 1.300000 24.000288 +1.100000 1.400000 23.389166 +1.100000 1.500000 22.798044 +1.100000 1.600000 22.226922 +1.100000 1.700000 21.675800 +1.100000 1.800000 21.144679 +1.100000 1.900000 20.633557 +1.100000 2.000000 20.142435 +1.100000 2.100000 19.671313 +1.100000 2.200000 19.220192 +1.100000 2.300000 18.789070 +1.100000 2.400000 18.377948 +1.100000 2.500000 17.986826 +1.100000 2.600000 17.615704 +1.100000 2.700000 17.264583 +1.100000 2.800000 16.933461 +1.100000 2.900000 16.622339 +1.100000 3.000000 16.331217 +1.100000 3.100000 16.060096 +1.100000 3.200000 15.808974 +1.100000 3.300000 15.577852 +1.100000 3.400000 15.366730 +1.100000 3.500000 15.175608 +1.100000 3.600000 15.004487 +1.100000 3.700000 14.853365 +1.100000 3.800000 14.722243 +1.100000 3.900000 14.611121 +1.100000 4.000000 14.520000 +1.100000 4.100000 14.448878 +1.100000 4.200000 14.397756 +1.100000 4.300000 14.366634 +1.100000 4.400000 14.355513 +1.100000 4.500000 14.364391 +1.100000 4.600000 14.393269 +1.100000 4.700000 14.442147 +1.100000 4.800000 14.511025 +1.100000 4.900000 14.599904 +1.100000 5.000000 14.708782 +1.100000 5.100000 14.837660 +1.100000 5.200000 14.986538 +1.100000 5.300000 15.155417 +1.100000 5.400000 15.344295 +1.100000 5.500000 15.553173 +1.100000 5.600000 15.782051 +1.100000 5.700000 16.030929 +1.100000 5.800000 16.299808 +1.100000 5.900000 16.588686 +1.100000 6.000000 16.897564 +1.100000 6.100000 17.226442 +1.100000 6.200000 17.575321 +1.100000 6.300000 17.944199 +1.100000 6.400000 18.333077 +1.100000 6.500000 18.741955 +1.100000 6.600000 19.170833 +1.100000 6.700000 19.619712 +1.100000 6.800000 20.088590 +1.100000 6.900000 20.577468 +1.100000 7.000000 21.086346 +1.100000 7.100000 21.615225 +1.100000 7.200000 22.164103 +1.100000 7.300000 22.732981 +1.100000 7.400000 23.321859 +1.100000 7.500000 23.930737 +1.100000 7.600000 24.559616 +1.100000 7.700000 25.208494 +1.100000 7.800000 25.877372 +1.100000 7.900000 26.566250 +1.100000 8.000000 27.275129 +1.100000 8.100000 28.004007 +1.100000 8.200000 28.752885 +1.100000 8.300000 29.521763 +1.100000 8.400000 30.310641 +1.100000 8.500000 31.119520 +1.100000 8.600000 31.948398 +1.100000 8.700000 32.797276 +1.100000 8.800000 33.666154 +1.100000 8.900000 34.555033 +1.100000 9.000000 35.463911 +1.100000 9.100000 36.392789 +1.100000 9.200000 37.341667 +1.100000 9.300000 38.310545 +1.100000 9.400000 39.299424 +1.100000 9.500000 40.308302 +1.100000 9.600000 41.337180 +1.100000 9.700000 42.386058 +1.100000 9.800000 43.454937 +1.100000 9.900000 44.543815 +1.100000 10.000000 45.652693 +1.100000 10.100000 46.781571 +1.100000 10.200000 47.930449 +1.100000 10.300000 49.099328 +1.100000 10.400000 50.288206 +1.100000 10.500000 51.497084 +1.100000 10.600000 52.725962 +1.100000 10.700000 53.974841 +1.100000 10.800000 55.243719 +1.100000 10.900000 56.532597 +1.100000 11.000000 57.841475 +1.100000 11.100000 59.170353 +1.100000 11.200000 60.519232 +1.100000 11.300000 61.888110 +1.100000 11.400000 63.276988 +1.100000 11.500000 64.685866 +1.100000 11.600000 66.114745 +1.100000 11.700000 67.563623 +1.100000 11.800000 69.032501 +1.100000 11.900000 70.521379 +1.100000 12.000000 72.030258 +1.100000 12.100000 73.559136 +1.100000 12.200000 75.108014 +1.100000 12.300000 76.676892 +1.100000 12.400000 78.265770 +1.100000 12.500000 79.874649 +1.100000 12.600000 81.503527 +1.100000 12.700000 83.152405 +1.100000 12.800000 84.821283 +1.100000 12.900000 86.510162 +1.100000 13.000000 88.219040 +1.100000 13.100000 89.947918 +1.100000 13.200000 91.696796 +1.100000 13.300000 93.465674 +1.100000 13.400000 95.254553 +1.100000 13.500000 97.063431 +1.100000 13.600000 98.892309 +1.100000 13.700000 100.741187 +1.100000 13.800000 102.610066 +1.100000 13.900000 104.498944 +1.100000 14.000000 106.407822 +1.100000 14.100000 108.336700 +1.100000 14.200000 110.285578 +1.100000 14.300000 112.254457 +1.100000 14.400000 114.243335 +1.100000 14.500000 116.252213 +1.100000 14.600000 118.281091 +1.100000 14.700000 120.329970 +1.100000 14.800000 122.398848 +1.100000 14.900000 124.487726 +1.100000 15.000000 126.596604 + +1.200000 -5.000000 99.526663 +1.200000 -4.900000 97.681429 +1.200000 -4.800000 95.856196 +1.200000 -4.700000 94.050963 +1.200000 -4.600000 92.265730 +1.200000 -4.500000 90.500496 +1.200000 -4.400000 88.755263 +1.200000 -4.300000 87.030030 +1.200000 -4.200000 85.324796 +1.200000 -4.100000 83.639563 +1.200000 -4.000000 81.974330 +1.200000 -3.900000 80.329097 +1.200000 -3.800000 78.703863 +1.200000 -3.700000 77.098630 +1.200000 -3.600000 75.513397 +1.200000 -3.500000 73.948163 +1.200000 -3.400000 72.402930 +1.200000 -3.300000 70.877697 +1.200000 -3.200000 69.372464 +1.200000 -3.100000 67.887230 +1.200000 -3.000000 66.421997 +1.200000 -2.900000 64.976764 +1.200000 -2.800000 63.551531 +1.200000 -2.700000 62.146297 +1.200000 -2.600000 60.761064 +1.200000 -2.500000 59.395831 +1.200000 -2.400000 58.050597 +1.200000 -2.300000 56.725364 +1.200000 -2.200000 55.420131 +1.200000 -2.100000 54.134898 +1.200000 -2.000000 52.869664 +1.200000 -1.900000 51.624431 +1.200000 -1.800000 50.399198 +1.200000 -1.700000 49.193965 +1.200000 -1.600000 48.008731 +1.200000 -1.500000 46.843498 +1.200000 -1.400000 45.698265 +1.200000 -1.300000 44.573031 +1.200000 -1.200000 43.467798 +1.200000 -1.100000 42.382565 +1.200000 -1.000000 41.317332 +1.200000 -0.900000 40.272098 +1.200000 -0.800000 39.246865 +1.200000 -0.700000 38.241632 +1.200000 -0.600000 37.256399 +1.200000 -0.500000 36.291165 +1.200000 -0.400000 35.345932 +1.200000 -0.300000 34.420699 +1.200000 -0.200000 33.515465 +1.200000 -0.100000 32.630232 +1.200000 -0.000000 31.764999 +1.200000 0.100000 30.919766 +1.200000 0.200000 30.094532 +1.200000 0.300000 29.289299 +1.200000 0.400000 28.504066 +1.200000 0.500000 27.738832 +1.200000 0.600000 26.993599 +1.200000 0.700000 26.268366 +1.200000 0.800000 25.563133 +1.200000 0.900000 24.877899 +1.200000 1.000000 24.212666 +1.200000 1.100000 23.567433 +1.200000 1.200000 22.942200 +1.200000 1.300000 22.336966 +1.200000 1.400000 21.751733 +1.200000 1.500000 21.186500 +1.200000 1.600000 20.641266 +1.200000 1.700000 20.116033 +1.200000 1.800000 19.610800 +1.200000 1.900000 19.125567 +1.200000 2.000000 18.660333 +1.200000 2.100000 18.215100 +1.200000 2.200000 17.789867 +1.200000 2.300000 17.384634 +1.200000 2.400000 16.999400 +1.200000 2.500000 16.634167 +1.200000 2.600000 16.288934 +1.200000 2.700000 15.963700 +1.200000 2.800000 15.658467 +1.200000 2.900000 15.373234 +1.200000 3.000000 15.108001 +1.200000 3.100000 14.862767 +1.200000 3.200000 14.637534 +1.200000 3.300000 14.432301 +1.200000 3.400000 14.247067 +1.200000 3.500000 14.081834 +1.200000 3.600000 13.936601 +1.200000 3.700000 13.811368 +1.200000 3.800000 13.706134 +1.200000 3.900000 13.620901 +1.200000 4.000000 13.555668 +1.200000 4.100000 13.510435 +1.200000 4.200000 13.485201 +1.200000 4.300000 13.479968 +1.200000 4.400000 13.494735 +1.200000 4.500000 13.529501 +1.200000 4.600000 13.584268 +1.200000 4.700000 13.659035 +1.200000 4.800000 13.753802 +1.200000 4.900000 13.868568 +1.200000 5.000000 14.003335 +1.200000 5.100000 14.158102 +1.200000 5.200000 14.332869 +1.200000 5.300000 14.527635 +1.200000 5.400000 14.742402 +1.200000 5.500000 14.977169 +1.200000 5.600000 15.231935 +1.200000 5.700000 15.506702 +1.200000 5.800000 15.801469 +1.200000 5.900000 16.116236 +1.200000 6.000000 16.451002 +1.200000 6.100000 16.805769 +1.200000 6.200000 17.180536 +1.200000 6.300000 17.575303 +1.200000 6.400000 17.990069 +1.200000 6.500000 18.424836 +1.200000 6.600000 18.879603 +1.200000 6.700000 19.354369 +1.200000 6.800000 19.849136 +1.200000 6.900000 20.363903 +1.200000 7.000000 20.898670 +1.200000 7.100000 21.453436 +1.200000 7.200000 22.028203 +1.200000 7.300000 22.622970 +1.200000 7.400000 23.237736 +1.200000 7.500000 23.872503 +1.200000 7.600000 24.527270 +1.200000 7.700000 25.202037 +1.200000 7.800000 25.896803 +1.200000 7.900000 26.611570 +1.200000 8.000000 27.346337 +1.200000 8.100000 28.101104 +1.200000 8.200000 28.875870 +1.200000 8.300000 29.670637 +1.200000 8.400000 30.485404 +1.200000 8.500000 31.320170 +1.200000 8.600000 32.174937 +1.200000 8.700000 33.049704 +1.200000 8.800000 33.944471 +1.200000 8.900000 34.859237 +1.200000 9.000000 35.794004 +1.200000 9.100000 36.748771 +1.200000 9.200000 37.723538 +1.200000 9.300000 38.718304 +1.200000 9.400000 39.733071 +1.200000 9.500000 40.767838 +1.200000 9.600000 41.822604 +1.200000 9.700000 42.897371 +1.200000 9.800000 43.992138 +1.200000 9.900000 45.106905 +1.200000 10.000000 46.241671 +1.200000 10.100000 47.396438 +1.200000 10.200000 48.571205 +1.200000 10.300000 49.765972 +1.200000 10.400000 50.980738 +1.200000 10.500000 52.215505 +1.200000 10.600000 53.470272 +1.200000 10.700000 54.745038 +1.200000 10.800000 56.039805 +1.200000 10.900000 57.354572 +1.200000 11.000000 58.689339 +1.200000 11.100000 60.044105 +1.200000 11.200000 61.418872 +1.200000 11.300000 62.813639 +1.200000 11.400000 64.228405 +1.200000 11.500000 65.663172 +1.200000 11.600000 67.117939 +1.200000 11.700000 68.592706 +1.200000 11.800000 70.087472 +1.200000 11.900000 71.602239 +1.200000 12.000000 73.137006 +1.200000 12.100000 74.691773 +1.200000 12.200000 76.266539 +1.200000 12.300000 77.861306 +1.200000 12.400000 79.476073 +1.200000 12.500000 81.110839 +1.200000 12.600000 82.765606 +1.200000 12.700000 84.440373 +1.200000 12.800000 86.135140 +1.200000 12.900000 87.849906 +1.200000 13.000000 89.584673 +1.200000 13.100000 91.339440 +1.200000 13.200000 93.114207 +1.200000 13.300000 94.908973 +1.200000 13.400000 96.723740 +1.200000 13.500000 98.558507 +1.200000 13.600000 100.413273 +1.200000 13.700000 102.288040 +1.200000 13.800000 104.182807 +1.200000 13.900000 106.097574 +1.200000 14.000000 108.032340 +1.200000 14.100000 109.987107 +1.200000 14.200000 111.961874 +1.200000 14.300000 113.956640 +1.200000 14.400000 115.971407 +1.200000 14.500000 118.006174 +1.200000 14.600000 120.060941 +1.200000 14.700000 122.135707 +1.200000 14.800000 124.230474 +1.200000 14.900000 126.345241 +1.200000 15.000000 128.480008 + +1.300000 -5.000000 96.278383 +1.300000 -4.900000 94.458521 +1.300000 -4.800000 92.658660 +1.300000 -4.700000 90.878798 +1.300000 -4.600000 89.118937 +1.300000 -4.500000 87.379075 +1.300000 -4.400000 85.659214 +1.300000 -4.300000 83.959352 +1.300000 -4.200000 82.279491 +1.300000 -4.100000 80.619629 +1.300000 -4.000000 78.979768 +1.300000 -3.900000 77.359906 +1.300000 -3.800000 75.760045 +1.300000 -3.700000 74.180183 +1.300000 -3.600000 72.620322 +1.300000 -3.500000 71.080460 +1.300000 -3.400000 69.560599 +1.300000 -3.300000 68.060737 +1.300000 -3.200000 66.580875 +1.300000 -3.100000 65.121014 +1.300000 -3.000000 63.681152 +1.300000 -2.900000 62.261291 +1.300000 -2.800000 60.861429 +1.300000 -2.700000 59.481568 +1.300000 -2.600000 58.121706 +1.300000 -2.500000 56.781845 +1.300000 -2.400000 55.461983 +1.300000 -2.300000 54.162122 +1.300000 -2.200000 52.882260 +1.300000 -2.100000 51.622399 +1.300000 -2.000000 50.382537 +1.300000 -1.900000 49.162676 +1.300000 -1.800000 47.962814 +1.300000 -1.700000 46.782953 +1.300000 -1.600000 45.623091 +1.300000 -1.500000 44.483230 +1.300000 -1.400000 43.363368 +1.300000 -1.300000 42.263507 +1.300000 -1.200000 41.183645 +1.300000 -1.100000 40.123784 +1.300000 -1.000000 39.083922 +1.300000 -0.900000 38.064061 +1.300000 -0.800000 37.064199 +1.300000 -0.700000 36.084338 +1.300000 -0.600000 35.124476 +1.300000 -0.500000 34.184615 +1.300000 -0.400000 33.264753 +1.300000 -0.300000 32.364892 +1.300000 -0.200000 31.485030 +1.300000 -0.100000 30.625169 +1.300000 -0.000000 29.785307 +1.300000 0.100000 28.965446 +1.300000 0.200000 28.165584 +1.300000 0.300000 27.385723 +1.300000 0.400000 26.625861 +1.300000 0.500000 25.886000 +1.300000 0.600000 25.166138 +1.300000 0.700000 24.466277 +1.300000 0.800000 23.786415 +1.300000 0.900000 23.126554 +1.300000 1.000000 22.486692 +1.300000 1.100000 21.866830 +1.300000 1.200000 21.266969 +1.300000 1.300000 20.687107 +1.300000 1.400000 20.127246 +1.300000 1.500000 19.587384 +1.300000 1.600000 19.067523 +1.300000 1.700000 18.567661 +1.300000 1.800000 18.087800 +1.300000 1.900000 17.627938 +1.300000 2.000000 17.188077 +1.300000 2.100000 16.768215 +1.300000 2.200000 16.368354 +1.300000 2.300000 15.988492 +1.300000 2.400000 15.628631 +1.300000 2.500000 15.288769 +1.300000 2.600000 14.968908 +1.300000 2.700000 14.669046 +1.300000 2.800000 14.389185 +1.300000 2.900000 14.129323 +1.300000 3.000000 13.889462 +1.300000 3.100000 13.669600 +1.300000 3.200000 13.469739 +1.300000 3.300000 13.289877 +1.300000 3.400000 13.130016 +1.300000 3.500000 12.990154 +1.300000 3.600000 12.870293 +1.300000 3.700000 12.770431 +1.300000 3.800000 12.690570 +1.300000 3.900000 12.630708 +1.300000 4.000000 12.590847 +1.300000 4.100000 12.570985 +1.300000 4.200000 12.571124 +1.300000 4.300000 12.591262 +1.300000 4.400000 12.631401 +1.300000 4.500000 12.691539 +1.300000 4.600000 12.771678 +1.300000 4.700000 12.871816 +1.300000 4.800000 12.991955 +1.300000 4.900000 13.132093 +1.300000 5.000000 13.292232 +1.300000 5.100000 13.472370 +1.300000 5.200000 13.672508 +1.300000 5.300000 13.892647 +1.300000 5.400000 14.132785 +1.300000 5.500000 14.392924 +1.300000 5.600000 14.673062 +1.300000 5.700000 14.973201 +1.300000 5.800000 15.293339 +1.300000 5.900000 15.633478 +1.300000 6.000000 15.993616 +1.300000 6.100000 16.373755 +1.300000 6.200000 16.773893 +1.300000 6.300000 17.194032 +1.300000 6.400000 17.634170 +1.300000 6.500000 18.094309 +1.300000 6.600000 18.574447 +1.300000 6.700000 19.074586 +1.300000 6.800000 19.594724 +1.300000 6.900000 20.134863 +1.300000 7.000000 20.695001 +1.300000 7.100000 21.275140 +1.300000 7.200000 21.875278 +1.300000 7.300000 22.495417 +1.300000 7.400000 23.135555 +1.300000 7.500000 23.795694 +1.300000 7.600000 24.475832 +1.300000 7.700000 25.175971 +1.300000 7.800000 25.896109 +1.300000 7.900000 26.636248 +1.300000 8.000000 27.396386 +1.300000 8.100000 28.176525 +1.300000 8.200000 28.976663 +1.300000 8.300000 29.796802 +1.300000 8.400000 30.636940 +1.300000 8.500000 31.497079 +1.300000 8.600000 32.377217 +1.300000 8.700000 33.277356 +1.300000 8.800000 34.197494 +1.300000 8.900000 35.137633 +1.300000 9.000000 36.097771 +1.300000 9.100000 37.077910 +1.300000 9.200000 38.078048 +1.300000 9.300000 39.098186 +1.300000 9.400000 40.138325 +1.300000 9.500000 41.198463 +1.300000 9.600000 42.278602 +1.300000 9.700000 43.378740 +1.300000 9.800000 44.498879 +1.300000 9.900000 45.639017 +1.300000 10.000000 46.799156 +1.300000 10.100000 47.979294 +1.300000 10.200000 49.179433 +1.300000 10.300000 50.399571 +1.300000 10.400000 51.639710 +1.300000 10.500000 52.899848 +1.300000 10.600000 54.179987 +1.300000 10.700000 55.480125 +1.300000 10.800000 56.800264 +1.300000 10.900000 58.140402 +1.300000 11.000000 59.500541 +1.300000 11.100000 60.880679 +1.300000 11.200000 62.280818 +1.300000 11.300000 63.700956 +1.300000 11.400000 65.141095 +1.300000 11.500000 66.601233 +1.300000 11.600000 68.081372 +1.300000 11.700000 69.581510 +1.300000 11.800000 71.101649 +1.300000 11.900000 72.641787 +1.300000 12.000000 74.201926 +1.300000 12.100000 75.782064 +1.300000 12.200000 77.382203 +1.300000 12.300000 79.002341 +1.300000 12.400000 80.642480 +1.300000 12.500000 82.302618 +1.300000 12.600000 83.982757 +1.300000 12.700000 85.682895 +1.300000 12.800000 87.403034 +1.300000 12.900000 89.143172 +1.300000 13.000000 90.903311 +1.300000 13.100000 92.683449 +1.300000 13.200000 94.483588 +1.300000 13.300000 96.303726 +1.300000 13.400000 98.143864 +1.300000 13.500000 100.004003 +1.300000 13.600000 101.884141 +1.300000 13.700000 103.784280 +1.300000 13.800000 105.704418 +1.300000 13.900000 107.644557 +1.300000 14.000000 109.604695 +1.300000 14.100000 111.584834 +1.300000 14.200000 113.584972 +1.300000 14.300000 115.605111 +1.300000 14.400000 117.645249 +1.300000 14.500000 119.705388 +1.300000 14.600000 121.785526 +1.300000 14.700000 123.885665 +1.300000 14.800000 126.005803 +1.300000 14.900000 128.145942 +1.300000 15.000000 130.306080 + +1.400000 -5.000000 93.083254 +1.400000 -4.900000 91.288248 +1.400000 -4.800000 89.513241 +1.400000 -4.700000 87.758235 +1.400000 -4.600000 86.023228 +1.400000 -4.500000 84.308222 +1.400000 -4.400000 82.613215 +1.400000 -4.300000 80.938209 +1.400000 -4.200000 79.283202 +1.400000 -4.100000 77.648196 +1.400000 -4.000000 76.033189 +1.400000 -3.900000 74.438183 +1.400000 -3.800000 72.863176 +1.400000 -3.700000 71.308170 +1.400000 -3.600000 69.773163 +1.400000 -3.500000 68.258157 +1.400000 -3.400000 66.763150 +1.400000 -3.300000 65.288144 +1.400000 -3.200000 63.833137 +1.400000 -3.100000 62.398131 +1.400000 -3.000000 60.983124 +1.400000 -2.900000 59.588118 +1.400000 -2.800000 58.213111 +1.400000 -2.700000 56.858105 +1.400000 -2.600000 55.523098 +1.400000 -2.500000 54.208092 +1.400000 -2.400000 52.913085 +1.400000 -2.300000 51.638079 +1.400000 -2.200000 50.383072 +1.400000 -2.100000 49.148066 +1.400000 -2.000000 47.933059 +1.400000 -1.900000 46.738053 +1.400000 -1.800000 45.563047 +1.400000 -1.700000 44.408040 +1.400000 -1.600000 43.273034 +1.400000 -1.500000 42.158027 +1.400000 -1.400000 41.063021 +1.400000 -1.300000 39.988014 +1.400000 -1.200000 38.933008 +1.400000 -1.100000 37.898001 +1.400000 -1.000000 36.882995 +1.400000 -0.900000 35.887988 +1.400000 -0.800000 34.912982 +1.400000 -0.700000 33.957975 +1.400000 -0.600000 33.022969 +1.400000 -0.500000 32.107962 +1.400000 -0.400000 31.212956 +1.400000 -0.300000 30.337949 +1.400000 -0.200000 29.482943 +1.400000 -0.100000 28.647936 +1.400000 -0.000000 27.832930 +1.400000 0.100000 27.037923 +1.400000 0.200000 26.262917 +1.400000 0.300000 25.507910 +1.400000 0.400000 24.772904 +1.400000 0.500000 24.057897 +1.400000 0.600000 23.362891 +1.400000 0.700000 22.687884 +1.400000 0.800000 22.032878 +1.400000 0.900000 21.397871 +1.400000 1.000000 20.782865 +1.400000 1.100000 20.187858 +1.400000 1.200000 19.612852 +1.400000 1.300000 19.057845 +1.400000 1.400000 18.522839 +1.400000 1.500000 18.007832 +1.400000 1.600000 17.512826 +1.400000 1.700000 17.037819 +1.400000 1.800000 16.582813 +1.400000 1.900000 16.147806 +1.400000 2.000000 15.732800 +1.400000 2.100000 15.337794 +1.400000 2.200000 14.962787 +1.400000 2.300000 14.607781 +1.400000 2.400000 14.272774 +1.400000 2.500000 13.957768 +1.400000 2.600000 13.662761 +1.400000 2.700000 13.387755 +1.400000 2.800000 13.132748 +1.400000 2.900000 12.897742 +1.400000 3.000000 12.682735 +1.400000 3.100000 12.487729 +1.400000 3.200000 12.312722 +1.400000 3.300000 12.157716 +1.400000 3.400000 12.022709 +1.400000 3.500000 11.907703 +1.400000 3.600000 11.812696 +1.400000 3.700000 11.737690 +1.400000 3.800000 11.682683 +1.400000 3.900000 11.647677 +1.400000 4.000000 11.632670 +1.400000 4.100000 11.637664 +1.400000 4.200000 11.662657 +1.400000 4.300000 11.707651 +1.400000 4.400000 11.772644 +1.400000 4.500000 11.857638 +1.400000 4.600000 11.962631 +1.400000 4.700000 12.087625 +1.400000 4.800000 12.232618 +1.400000 4.900000 12.397612 +1.400000 5.000000 12.582605 +1.400000 5.100000 12.787599 +1.400000 5.200000 13.012592 +1.400000 5.300000 13.257586 +1.400000 5.400000 13.522579 +1.400000 5.500000 13.807573 +1.400000 5.600000 14.112566 +1.400000 5.700000 14.437560 +1.400000 5.800000 14.782554 +1.400000 5.900000 15.147547 +1.400000 6.000000 15.532541 +1.400000 6.100000 15.937534 +1.400000 6.200000 16.362528 +1.400000 6.300000 16.807521 +1.400000 6.400000 17.272515 +1.400000 6.500000 17.757508 +1.400000 6.600000 18.262502 +1.400000 6.700000 18.787495 +1.400000 6.800000 19.332489 +1.400000 6.900000 19.897482 +1.400000 7.000000 20.482476 +1.400000 7.100000 21.087469 +1.400000 7.200000 21.712463 +1.400000 7.300000 22.357456 +1.400000 7.400000 23.022450 +1.400000 7.500000 23.707443 +1.400000 7.600000 24.412437 +1.400000 7.700000 25.137430 +1.400000 7.800000 25.882424 +1.400000 7.900000 26.647417 +1.400000 8.000000 27.432411 +1.400000 8.100000 28.237404 +1.400000 8.200000 29.062398 +1.400000 8.300000 29.907391 +1.400000 8.400000 30.772385 +1.400000 8.500000 31.657378 +1.400000 8.600000 32.562372 +1.400000 8.700000 33.487365 +1.400000 8.800000 34.432359 +1.400000 8.900000 35.397352 +1.400000 9.000000 36.382346 +1.400000 9.100000 37.387339 +1.400000 9.200000 38.412333 +1.400000 9.300000 39.457326 +1.400000 9.400000 40.522320 +1.400000 9.500000 41.607313 +1.400000 9.600000 42.712307 +1.400000 9.700000 43.837301 +1.400000 9.800000 44.982294 +1.400000 9.900000 46.147288 +1.400000 10.000000 47.332281 +1.400000 10.100000 48.537275 +1.400000 10.200000 49.762268 +1.400000 10.300000 51.007262 +1.400000 10.400000 52.272255 +1.400000 10.500000 53.557249 +1.400000 10.600000 54.862242 +1.400000 10.700000 56.187236 +1.400000 10.800000 57.532229 +1.400000 10.900000 58.897223 +1.400000 11.000000 60.282216 +1.400000 11.100000 61.687210 +1.400000 11.200000 63.112203 +1.400000 11.300000 64.557197 +1.400000 11.400000 66.022190 +1.400000 11.500000 67.507184 +1.400000 11.600000 69.012177 +1.400000 11.700000 70.537171 +1.400000 11.800000 72.082164 +1.400000 11.900000 73.647158 +1.400000 12.000000 75.232151 +1.400000 12.100000 76.837145 +1.400000 12.200000 78.462138 +1.400000 12.300000 80.107132 +1.400000 12.400000 81.772125 +1.400000 12.500000 83.457119 +1.400000 12.600000 85.162112 +1.400000 12.700000 86.887106 +1.400000 12.800000 88.632099 +1.400000 12.900000 90.397093 +1.400000 13.000000 92.182086 +1.400000 13.100000 93.987080 +1.400000 13.200000 95.812073 +1.400000 13.300000 97.657067 +1.400000 13.400000 99.522061 +1.400000 13.500000 101.407054 +1.400000 13.600000 103.312048 +1.400000 13.700000 105.237041 +1.400000 13.800000 107.182035 +1.400000 13.900000 109.147028 +1.400000 14.000000 111.132022 +1.400000 14.100000 113.137015 +1.400000 14.200000 115.162009 +1.400000 14.300000 117.207002 +1.400000 14.400000 119.271996 +1.400000 14.500000 121.356989 +1.400000 14.600000 123.461983 +1.400000 14.700000 125.586976 +1.400000 14.800000 127.731970 +1.400000 14.900000 129.896963 +1.400000 15.000000 132.081957 + +1.500000 -5.000000 89.948708 +1.500000 -4.900000 88.178039 +1.500000 -4.800000 86.427371 +1.500000 -4.700000 84.696703 +1.500000 -4.600000 82.986035 +1.500000 -4.500000 81.295367 +1.500000 -4.400000 79.624698 +1.500000 -4.300000 77.974030 +1.500000 -4.200000 76.343362 +1.500000 -4.100000 74.732694 +1.500000 -4.000000 73.142026 +1.500000 -3.900000 71.571357 +1.500000 -3.800000 70.020689 +1.500000 -3.700000 68.490021 +1.500000 -3.600000 66.979353 +1.500000 -3.500000 65.488685 +1.500000 -3.400000 64.018016 +1.500000 -3.300000 62.567348 +1.500000 -3.200000 61.136680 +1.500000 -3.100000 59.726012 +1.500000 -3.000000 58.335344 +1.500000 -2.900000 56.964675 +1.500000 -2.800000 55.614007 +1.500000 -2.700000 54.283339 +1.500000 -2.600000 52.972671 +1.500000 -2.500000 51.682003 +1.500000 -2.400000 50.411334 +1.500000 -2.300000 49.160666 +1.500000 -2.200000 47.929998 +1.500000 -2.100000 46.719330 +1.500000 -2.000000 45.528662 +1.500000 -1.900000 44.357993 +1.500000 -1.800000 43.207325 +1.500000 -1.700000 42.076657 +1.500000 -1.600000 40.965989 +1.500000 -1.500000 39.875321 +1.500000 -1.400000 38.804652 +1.500000 -1.300000 37.753984 +1.500000 -1.200000 36.723316 +1.500000 -1.100000 35.712648 +1.500000 -1.000000 34.721980 +1.500000 -0.900000 33.751311 +1.500000 -0.800000 32.800643 +1.500000 -0.700000 31.869975 +1.500000 -0.600000 30.959307 +1.500000 -0.500000 30.068639 +1.500000 -0.400000 29.197970 +1.500000 -0.300000 28.347302 +1.500000 -0.200000 27.516634 +1.500000 -0.100000 26.705966 +1.500000 -0.000000 25.915298 +1.500000 0.100000 25.144629 +1.500000 0.200000 24.393961 +1.500000 0.300000 23.663293 +1.500000 0.400000 22.952625 +1.500000 0.500000 22.261957 +1.500000 0.600000 21.591288 +1.500000 0.700000 20.940620 +1.500000 0.800000 20.309952 +1.500000 0.900000 19.699284 +1.500000 1.000000 19.108616 +1.500000 1.100000 18.537947 +1.500000 1.200000 17.987279 +1.500000 1.300000 17.456611 +1.500000 1.400000 16.945943 +1.500000 1.500000 16.455275 +1.500000 1.600000 15.984606 +1.500000 1.700000 15.533938 +1.500000 1.800000 15.103270 +1.500000 1.900000 14.692602 +1.500000 2.000000 14.301934 +1.500000 2.100000 13.931265 +1.500000 2.200000 13.580597 +1.500000 2.300000 13.249929 +1.500000 2.400000 12.939261 +1.500000 2.500000 12.648593 +1.500000 2.600000 12.377924 +1.500000 2.700000 12.127256 +1.500000 2.800000 11.896588 +1.500000 2.900000 11.685920 +1.500000 3.000000 11.495252 +1.500000 3.100000 11.324583 +1.500000 3.200000 11.173915 +1.500000 3.300000 11.043247 +1.500000 3.400000 10.932579 +1.500000 3.500000 10.841911 +1.500000 3.600000 10.771242 +1.500000 3.700000 10.720574 +1.500000 3.800000 10.689906 +1.500000 3.900000 10.679238 +1.500000 4.000000 10.688570 +1.500000 4.100000 10.717901 +1.500000 4.200000 10.767233 +1.500000 4.300000 10.836565 +1.500000 4.400000 10.925897 +1.500000 4.500000 11.035229 +1.500000 4.600000 11.164560 +1.500000 4.700000 11.313892 +1.500000 4.800000 11.483224 +1.500000 4.900000 11.672556 +1.500000 5.000000 11.881888 +1.500000 5.100000 12.111219 +1.500000 5.200000 12.360551 +1.500000 5.300000 12.629883 +1.500000 5.400000 12.919215 +1.500000 5.500000 13.228547 +1.500000 5.600000 13.557878 +1.500000 5.700000 13.907210 +1.500000 5.800000 14.276542 +1.500000 5.900000 14.665874 +1.500000 6.000000 15.075206 +1.500000 6.100000 15.504537 +1.500000 6.200000 15.953869 +1.500000 6.300000 16.423201 +1.500000 6.400000 16.912533 +1.500000 6.500000 17.421865 +1.500000 6.600000 17.951196 +1.500000 6.700000 18.500528 +1.500000 6.800000 19.069860 +1.500000 6.900000 19.659192 +1.500000 7.000000 20.268524 +1.500000 7.100000 20.897855 +1.500000 7.200000 21.547187 +1.500000 7.300000 22.216519 +1.500000 7.400000 22.905851 +1.500000 7.500000 23.615183 +1.500000 7.600000 24.344514 +1.500000 7.700000 25.093846 +1.500000 7.800000 25.863178 +1.500000 7.900000 26.652510 +1.500000 8.000000 27.461842 +1.500000 8.100000 28.291173 +1.500000 8.200000 29.140505 +1.500000 8.300000 30.009837 +1.500000 8.400000 30.899169 +1.500000 8.500000 31.808501 +1.500000 8.600000 32.737832 +1.500000 8.700000 33.687164 +1.500000 8.800000 34.656496 +1.500000 8.900000 35.645828 +1.500000 9.000000 36.655160 +1.500000 9.100000 37.684491 +1.500000 9.200000 38.733823 +1.500000 9.300000 39.803155 +1.500000 9.400000 40.892487 +1.500000 9.500000 42.001819 +1.500000 9.600000 43.131150 +1.500000 9.700000 44.280482 +1.500000 9.800000 45.449814 +1.500000 9.900000 46.639146 +1.500000 10.000000 47.848478 +1.500000 10.100000 49.077809 +1.500000 10.200000 50.327141 +1.500000 10.300000 51.596473 +1.500000 10.400000 52.885805 +1.500000 10.500000 54.195137 +1.500000 10.600000 55.524468 +1.500000 10.700000 56.873800 +1.500000 10.800000 58.243132 +1.500000 10.900000 59.632464 +1.500000 11.000000 61.041796 +1.500000 11.100000 62.471127 +1.500000 11.200000 63.920459 +1.500000 11.300000 65.389791 +1.500000 11.400000 66.879123 +1.500000 11.500000 68.388455 +1.500000 11.600000 69.917786 +1.500000 11.700000 71.467118 +1.500000 11.800000 73.036450 +1.500000 11.900000 74.625782 +1.500000 12.000000 76.235114 +1.500000 12.100000 77.864445 +1.500000 12.200000 79.513777 +1.500000 12.300000 81.183109 +1.500000 12.400000 82.872441 +1.500000 12.500000 84.581773 +1.500000 12.600000 86.311104 +1.500000 12.700000 88.060436 +1.500000 12.800000 89.829768 +1.500000 12.900000 91.619100 +1.500000 13.000000 93.428432 +1.500000 13.100000 95.257763 +1.500000 13.200000 97.107095 +1.500000 13.300000 98.976427 +1.500000 13.400000 100.865759 +1.500000 13.500000 102.775091 +1.500000 13.600000 104.704422 +1.500000 13.700000 106.653754 +1.500000 13.800000 108.623086 +1.500000 13.900000 110.612418 +1.500000 14.000000 112.621750 +1.500000 14.100000 114.651081 +1.500000 14.200000 116.700413 +1.500000 14.300000 118.769745 +1.500000 14.400000 120.859077 +1.500000 14.500000 122.968409 +1.500000 14.600000 125.097740 +1.500000 14.700000 127.247072 +1.500000 14.800000 129.416404 +1.500000 14.900000 131.605736 +1.500000 15.000000 133.815068 + +1.600000 -5.000000 86.882377 +1.600000 -4.900000 85.135530 +1.600000 -4.800000 83.408683 +1.600000 -4.700000 81.701837 +1.600000 -4.600000 80.014990 +1.600000 -4.500000 78.348144 +1.600000 -4.400000 76.701297 +1.600000 -4.300000 75.074450 +1.600000 -4.200000 73.467604 +1.600000 -4.100000 71.880757 +1.600000 -4.000000 70.313910 +1.600000 -3.900000 68.767064 +1.600000 -3.800000 67.240217 +1.600000 -3.700000 65.733370 +1.600000 -3.600000 64.246524 +1.600000 -3.500000 62.779677 +1.600000 -3.400000 61.332830 +1.600000 -3.300000 59.905984 +1.600000 -3.200000 58.499137 +1.600000 -3.100000 57.112290 +1.600000 -3.000000 55.745444 +1.600000 -2.900000 54.398597 +1.600000 -2.800000 53.071750 +1.600000 -2.700000 51.764904 +1.600000 -2.600000 50.478057 +1.600000 -2.500000 49.211210 +1.600000 -2.400000 47.964364 +1.600000 -2.300000 46.737517 +1.600000 -2.200000 45.530671 +1.600000 -2.100000 44.343824 +1.600000 -2.000000 43.176977 +1.600000 -1.900000 42.030131 +1.600000 -1.800000 40.903284 +1.600000 -1.700000 39.796437 +1.600000 -1.600000 38.709591 +1.600000 -1.500000 37.642744 +1.600000 -1.400000 36.595897 +1.600000 -1.300000 35.569051 +1.600000 -1.200000 34.562204 +1.600000 -1.100000 33.575357 +1.600000 -1.000000 32.608511 +1.600000 -0.900000 31.661664 +1.600000 -0.800000 30.734817 +1.600000 -0.700000 29.827971 +1.600000 -0.600000 28.941124 +1.600000 -0.500000 28.074277 +1.600000 -0.400000 27.227431 +1.600000 -0.300000 26.400584 +1.600000 -0.200000 25.593738 +1.600000 -0.100000 24.806891 +1.600000 -0.000000 24.040044 +1.600000 0.100000 23.293198 +1.600000 0.200000 22.566351 +1.600000 0.300000 21.859504 +1.600000 0.400000 21.172658 +1.600000 0.500000 20.505811 +1.600000 0.600000 19.858964 +1.600000 0.700000 19.232118 +1.600000 0.800000 18.625271 +1.600000 0.900000 18.038424 +1.600000 1.000000 17.471578 +1.600000 1.100000 16.924731 +1.600000 1.200000 16.397884 +1.600000 1.300000 15.891038 +1.600000 1.400000 15.404191 +1.600000 1.500000 14.937344 +1.600000 1.600000 14.490498 +1.600000 1.700000 14.063651 +1.600000 1.800000 13.656805 +1.600000 1.900000 13.269958 +1.600000 2.000000 12.903111 +1.600000 2.100000 12.556265 +1.600000 2.200000 12.229418 +1.600000 2.300000 11.922571 +1.600000 2.400000 11.635725 +1.600000 2.500000 11.368878 +1.600000 2.600000 11.122031 +1.600000 2.700000 10.895185 +1.600000 2.800000 10.688338 +1.600000 2.900000 10.501491 +1.600000 3.000000 10.334645 +1.600000 3.100000 10.187798 +1.600000 3.200000 10.060951 +1.600000 3.300000 9.954105 +1.600000 3.400000 9.867258 +1.600000 3.500000 9.800411 +1.600000 3.600000 9.753565 +1.600000 3.700000 9.726718 +1.600000 3.800000 9.719871 +1.600000 3.900000 9.733025 +1.600000 4.000000 9.766178 +1.600000 4.100000 9.819332 +1.600000 4.200000 9.892485 +1.600000 4.300000 9.985638 +1.600000 4.400000 10.098792 +1.600000 4.500000 10.231945 +1.600000 4.600000 10.385098 +1.600000 4.700000 10.558252 +1.600000 4.800000 10.751405 +1.600000 4.900000 10.964558 +1.600000 5.000000 11.197712 +1.600000 5.100000 11.450865 +1.600000 5.200000 11.724018 +1.600000 5.300000 12.017172 +1.600000 5.400000 12.330325 +1.600000 5.500000 12.663478 +1.600000 5.600000 13.016632 +1.600000 5.700000 13.389785 +1.600000 5.800000 13.782938 +1.600000 5.900000 14.196092 +1.600000 6.000000 14.629245 +1.600000 6.100000 15.082399 +1.600000 6.200000 15.555552 +1.600000 6.300000 16.048705 +1.600000 6.400000 16.561859 +1.600000 6.500000 17.095012 +1.600000 6.600000 17.648165 +1.600000 6.700000 18.221319 +1.600000 6.800000 18.814472 +1.600000 6.900000 19.427625 +1.600000 7.000000 20.060779 +1.600000 7.100000 20.713932 +1.600000 7.200000 21.387085 +1.600000 7.300000 22.080239 +1.600000 7.400000 22.793392 +1.600000 7.500000 23.526545 +1.600000 7.600000 24.279699 +1.600000 7.700000 25.052852 +1.600000 7.800000 25.846005 +1.600000 7.900000 26.659159 +1.600000 8.000000 27.492312 +1.600000 8.100000 28.345466 +1.600000 8.200000 29.218619 +1.600000 8.300000 30.111772 +1.600000 8.400000 31.024926 +1.600000 8.500000 31.958079 +1.600000 8.600000 32.911232 +1.600000 8.700000 33.884386 +1.600000 8.800000 34.877539 +1.600000 8.900000 35.890692 +1.600000 9.000000 36.923846 +1.600000 9.100000 37.976999 +1.600000 9.200000 39.050152 +1.600000 9.300000 40.143306 +1.600000 9.400000 41.256459 +1.600000 9.500000 42.389612 +1.600000 9.600000 43.542766 +1.600000 9.700000 44.715919 +1.600000 9.800000 45.909072 +1.600000 9.900000 47.122226 +1.600000 10.000000 48.355379 +1.600000 10.100000 49.608532 +1.600000 10.200000 50.881686 +1.600000 10.300000 52.174839 +1.600000 10.400000 53.487993 +1.600000 10.500000 54.821146 +1.600000 10.600000 56.174299 +1.600000 10.700000 57.547453 +1.600000 10.800000 58.940606 +1.600000 10.900000 60.353759 +1.600000 11.000000 61.786913 +1.600000 11.100000 63.240066 +1.600000 11.200000 64.713219 +1.600000 11.300000 66.206373 +1.600000 11.400000 67.719526 +1.600000 11.500000 69.252679 +1.600000 11.600000 70.805833 +1.600000 11.700000 72.378986 +1.600000 11.800000 73.972139 +1.600000 11.900000 75.585293 +1.600000 12.000000 77.218446 +1.600000 12.100000 78.871599 +1.600000 12.200000 80.544753 +1.600000 12.300000 82.237906 +1.600000 12.400000 83.951060 +1.600000 12.500000 85.684213 +1.600000 12.600000 87.437366 +1.600000 12.700000 89.210520 +1.600000 12.800000 91.003673 +1.600000 12.900000 92.816826 +1.600000 13.000000 94.649980 +1.600000 13.100000 96.503133 +1.600000 13.200000 98.376286 +1.600000 13.300000 100.269440 +1.600000 13.400000 102.182593 +1.600000 13.500000 104.115746 +1.600000 13.600000 106.068900 +1.600000 13.700000 108.042053 +1.600000 13.800000 110.035206 +1.600000 13.900000 112.048360 +1.600000 14.000000 114.081513 +1.600000 14.100000 116.134666 +1.600000 14.200000 118.207820 +1.600000 14.300000 120.300973 +1.600000 14.400000 122.414127 +1.600000 14.500000 124.547280 +1.600000 14.600000 126.700433 +1.600000 14.700000 128.873587 +1.600000 14.800000 131.066740 +1.600000 14.900000 133.279893 +1.600000 15.000000 135.513047 + +1.700000 -5.000000 83.892003 +1.700000 -4.900000 82.168462 +1.700000 -4.800000 80.464920 +1.700000 -4.700000 78.781378 +1.700000 -4.600000 77.117836 +1.700000 -4.500000 75.474294 +1.700000 -4.400000 73.850752 +1.700000 -4.300000 72.247211 +1.700000 -4.200000 70.663669 +1.700000 -4.100000 69.100127 +1.700000 -4.000000 67.556585 +1.700000 -3.900000 66.033043 +1.700000 -3.800000 64.529501 +1.700000 -3.700000 63.045959 +1.700000 -3.600000 61.582418 +1.700000 -3.500000 60.138876 +1.700000 -3.400000 58.715334 +1.700000 -3.300000 57.311792 +1.700000 -3.200000 55.928250 +1.700000 -3.100000 54.564708 +1.700000 -3.000000 53.221167 +1.700000 -2.900000 51.897625 +1.700000 -2.800000 50.594083 +1.700000 -2.700000 49.310541 +1.700000 -2.600000 48.046999 +1.700000 -2.500000 46.803457 +1.700000 -2.400000 45.579916 +1.700000 -2.300000 44.376374 +1.700000 -2.200000 43.192832 +1.700000 -2.100000 42.029290 +1.700000 -2.000000 40.885748 +1.700000 -1.900000 39.762206 +1.700000 -1.800000 38.658665 +1.700000 -1.700000 37.575123 +1.700000 -1.600000 36.511581 +1.700000 -1.500000 35.468039 +1.700000 -1.400000 34.444497 +1.700000 -1.300000 33.440955 +1.700000 -1.200000 32.457413 +1.700000 -1.100000 31.493872 +1.700000 -1.000000 30.550330 +1.700000 -0.900000 29.626788 +1.700000 -0.800000 28.723246 +1.700000 -0.700000 27.839704 +1.700000 -0.600000 26.976162 +1.700000 -0.500000 26.132621 +1.700000 -0.400000 25.309079 +1.700000 -0.300000 24.505537 +1.700000 -0.200000 23.721995 +1.700000 -0.100000 22.958453 +1.700000 -0.000000 22.214911 +1.700000 0.100000 21.491370 +1.700000 0.200000 20.787828 +1.700000 0.300000 20.104286 +1.700000 0.400000 19.440744 +1.700000 0.500000 18.797202 +1.700000 0.600000 18.173660 +1.700000 0.700000 17.570119 +1.700000 0.800000 16.986577 +1.700000 0.900000 16.423035 +1.700000 1.000000 15.879493 +1.700000 1.100000 15.355951 +1.700000 1.200000 14.852409 +1.700000 1.300000 14.368868 +1.700000 1.400000 13.905326 +1.700000 1.500000 13.461784 +1.700000 1.600000 13.038242 +1.700000 1.700000 12.634700 +1.700000 1.800000 12.251158 +1.700000 1.900000 11.887616 +1.700000 2.000000 11.544075 +1.700000 2.100000 11.220533 +1.700000 2.200000 10.916991 +1.700000 2.300000 10.633449 +1.700000 2.400000 10.369907 +1.700000 2.500000 10.126365 +1.700000 2.600000 9.902824 +1.700000 2.700000 9.699282 +1.700000 2.800000 9.515740 +1.700000 2.900000 9.352198 +1.700000 3.000000 9.208656 +1.700000 3.100000 9.085114 +1.700000 3.200000 8.981573 +1.700000 3.300000 8.898031 +1.700000 3.400000 8.834489 +1.700000 3.500000 8.790947 +1.700000 3.600000 8.767405 +1.700000 3.700000 8.763863 +1.700000 3.800000 8.780322 +1.700000 3.900000 8.816780 +1.700000 4.000000 8.873238 +1.700000 4.100000 8.949696 +1.700000 4.200000 9.046154 +1.700000 4.300000 9.162612 +1.700000 4.400000 9.299070 +1.700000 4.500000 9.455529 +1.700000 4.600000 9.631987 +1.700000 4.700000 9.828445 +1.700000 4.800000 10.044903 +1.700000 4.900000 10.281361 +1.700000 5.000000 10.537819 +1.700000 5.100000 10.814278 +1.700000 5.200000 11.110736 +1.700000 5.300000 11.427194 +1.700000 5.400000 11.763652 +1.700000 5.500000 12.120110 +1.700000 5.600000 12.496568 +1.700000 5.700000 12.893027 +1.700000 5.800000 13.309485 +1.700000 5.900000 13.745943 +1.700000 6.000000 14.202401 +1.700000 6.100000 14.678859 +1.700000 6.200000 15.175317 +1.700000 6.300000 15.691776 +1.700000 6.400000 16.228234 +1.700000 6.500000 16.784692 +1.700000 6.600000 17.361150 +1.700000 6.700000 17.957608 +1.700000 6.800000 18.574066 +1.700000 6.900000 19.210524 +1.700000 7.000000 19.866983 +1.700000 7.100000 20.543441 +1.700000 7.200000 21.239899 +1.700000 7.300000 21.956357 +1.700000 7.400000 22.692815 +1.700000 7.500000 23.449273 +1.700000 7.600000 24.225732 +1.700000 7.700000 25.022190 +1.700000 7.800000 25.838648 +1.700000 7.900000 26.675106 +1.700000 8.000000 27.531564 +1.700000 8.100000 28.408022 +1.700000 8.200000 29.304481 +1.700000 8.300000 30.220939 +1.700000 8.400000 31.157397 +1.700000 8.500000 32.113855 +1.700000 8.600000 33.090313 +1.700000 8.700000 34.086771 +1.700000 8.800000 35.103230 +1.700000 8.900000 36.139688 +1.700000 9.000000 37.196146 +1.700000 9.100000 38.272604 +1.700000 9.200000 39.369062 +1.700000 9.300000 40.485520 +1.700000 9.400000 41.621978 +1.700000 9.500000 42.778437 +1.700000 9.600000 43.954895 +1.700000 9.700000 45.151353 +1.700000 9.800000 46.367811 +1.700000 9.900000 47.604269 +1.700000 10.000000 48.860727 +1.700000 10.100000 50.137186 +1.700000 10.200000 51.433644 +1.700000 10.300000 52.750102 +1.700000 10.400000 54.086560 +1.700000 10.500000 55.443018 +1.700000 10.600000 56.819476 +1.700000 10.700000 58.215935 +1.700000 10.800000 59.632393 +1.700000 10.900000 61.068851 +1.700000 11.000000 62.525309 +1.700000 11.100000 64.001767 +1.700000 11.200000 65.498225 +1.700000 11.300000 67.014684 +1.700000 11.400000 68.551142 +1.700000 11.500000 70.107600 +1.700000 11.600000 71.684058 +1.700000 11.700000 73.280516 +1.700000 11.800000 74.896974 +1.700000 11.900000 76.533432 +1.700000 12.000000 78.189891 +1.700000 12.100000 79.866349 +1.700000 12.200000 81.562807 +1.700000 12.300000 83.279265 +1.700000 12.400000 85.015723 +1.700000 12.500000 86.772181 +1.700000 12.600000 88.548640 +1.700000 12.700000 90.345098 +1.700000 12.800000 92.161556 +1.700000 12.900000 93.998014 +1.700000 13.000000 95.854472 +1.700000 13.100000 97.730930 +1.700000 13.200000 99.627389 +1.700000 13.300000 101.543847 +1.700000 13.400000 103.480305 +1.700000 13.500000 105.436763 +1.700000 13.600000 107.413221 +1.700000 13.700000 109.409679 +1.700000 13.800000 111.426138 +1.700000 13.900000 113.462596 +1.700000 14.000000 115.519054 +1.700000 14.100000 117.595512 +1.700000 14.200000 119.691970 +1.700000 14.300000 121.808428 +1.700000 14.400000 123.944886 +1.700000 14.500000 126.101345 +1.700000 14.600000 128.277803 +1.700000 14.700000 130.474261 +1.700000 14.800000 132.690719 +1.700000 14.900000 134.927177 +1.700000 15.000000 137.183635 + +1.800000 -5.000000 80.985341 +1.800000 -4.900000 79.284587 +1.800000 -4.800000 77.603834 +1.800000 -4.700000 75.943080 +1.800000 -4.600000 74.302326 +1.800000 -4.500000 72.681572 +1.800000 -4.400000 71.080819 +1.800000 -4.300000 69.500065 +1.800000 -4.200000 67.939311 +1.800000 -4.100000 66.398557 +1.800000 -4.000000 64.877803 +1.800000 -3.900000 63.377050 +1.800000 -3.800000 61.896296 +1.800000 -3.700000 60.435542 +1.800000 -3.600000 58.994788 +1.800000 -3.500000 57.574035 +1.800000 -3.400000 56.173281 +1.800000 -3.300000 54.792527 +1.800000 -3.200000 53.431773 +1.800000 -3.100000 52.091020 +1.800000 -3.000000 50.770266 +1.800000 -2.900000 49.469512 +1.800000 -2.800000 48.188758 +1.800000 -2.700000 46.928005 +1.800000 -2.600000 45.687251 +1.800000 -2.500000 44.466497 +1.800000 -2.400000 43.265743 +1.800000 -2.300000 42.084989 +1.800000 -2.200000 40.924236 +1.800000 -2.100000 39.783482 +1.800000 -2.000000 38.662728 +1.800000 -1.900000 37.561974 +1.800000 -1.800000 36.481221 +1.800000 -1.700000 35.420467 +1.800000 -1.600000 34.379713 +1.800000 -1.500000 33.358959 +1.800000 -1.400000 32.358206 +1.800000 -1.300000 31.377452 +1.800000 -1.200000 30.416698 +1.800000 -1.100000 29.475944 +1.800000 -1.000000 28.555190 +1.800000 -0.900000 27.654437 +1.800000 -0.800000 26.773683 +1.800000 -0.700000 25.912929 +1.800000 -0.600000 25.072175 +1.800000 -0.500000 24.251422 +1.800000 -0.400000 23.450668 +1.800000 -0.300000 22.669914 +1.800000 -0.200000 21.909160 +1.800000 -0.100000 21.168407 +1.800000 -0.000000 20.447653 +1.800000 0.100000 19.746899 +1.800000 0.200000 19.066145 +1.800000 0.300000 18.405392 +1.800000 0.400000 17.764638 +1.800000 0.500000 17.143884 +1.800000 0.600000 16.543130 +1.800000 0.700000 15.962376 +1.800000 0.800000 15.401623 +1.800000 0.900000 14.860869 +1.800000 1.000000 14.340115 +1.800000 1.100000 13.839361 +1.800000 1.200000 13.358608 +1.800000 1.300000 12.897854 +1.800000 1.400000 12.457100 +1.800000 1.500000 12.036346 +1.800000 1.600000 11.635593 +1.800000 1.700000 11.254839 +1.800000 1.800000 10.894085 +1.800000 1.900000 10.553331 +1.800000 2.000000 10.232577 +1.800000 2.100000 9.931824 +1.800000 2.200000 9.651070 +1.800000 2.300000 9.390316 +1.800000 2.400000 9.149562 +1.800000 2.500000 8.928809 +1.800000 2.600000 8.728055 +1.800000 2.700000 8.547301 +1.800000 2.800000 8.386547 +1.800000 2.900000 8.245794 +1.800000 3.000000 8.125040 +1.800000 3.100000 8.024286 +1.800000 3.200000 7.943532 +1.800000 3.300000 7.882779 +1.800000 3.400000 7.842025 +1.800000 3.500000 7.821271 +1.800000 3.600000 7.820517 +1.800000 3.700000 7.839763 +1.800000 3.800000 7.879010 +1.800000 3.900000 7.938256 +1.800000 4.000000 8.017502 +1.800000 4.100000 8.116748 +1.800000 4.200000 8.235995 +1.800000 4.300000 8.375241 +1.800000 4.400000 8.534487 +1.800000 4.500000 8.713733 +1.800000 4.600000 8.912980 +1.800000 4.700000 9.132226 +1.800000 4.800000 9.371472 +1.800000 4.900000 9.630718 +1.800000 5.000000 9.909964 +1.800000 5.100000 10.209211 +1.800000 5.200000 10.528457 +1.800000 5.300000 10.867703 +1.800000 5.400000 11.226949 +1.800000 5.500000 11.606196 +1.800000 5.600000 12.005442 +1.800000 5.700000 12.424688 +1.800000 5.800000 12.863934 +1.800000 5.900000 13.323181 +1.800000 6.000000 13.802427 +1.800000 6.100000 14.301673 +1.800000 6.200000 14.820919 +1.800000 6.300000 15.360166 +1.800000 6.400000 15.919412 +1.800000 6.500000 16.498658 +1.800000 6.600000 17.097904 +1.800000 6.700000 17.717150 +1.800000 6.800000 18.356397 +1.800000 6.900000 19.015643 +1.800000 7.000000 19.694889 +1.800000 7.100000 20.394135 +1.800000 7.200000 21.113382 +1.800000 7.300000 21.852628 +1.800000 7.400000 22.611874 +1.800000 7.500000 23.391120 +1.800000 7.600000 24.190367 +1.800000 7.700000 25.009613 +1.800000 7.800000 25.848859 +1.800000 7.900000 26.708105 +1.800000 8.000000 27.587351 +1.800000 8.100000 28.486598 +1.800000 8.200000 29.405844 +1.800000 8.300000 30.345090 +1.800000 8.400000 31.304336 +1.800000 8.500000 32.283583 +1.800000 8.600000 33.282829 +1.800000 8.700000 34.302075 +1.800000 8.800000 35.341321 +1.800000 8.900000 36.400568 +1.800000 9.000000 37.479814 +1.800000 9.100000 38.579060 +1.800000 9.200000 39.698306 +1.800000 9.300000 40.837553 +1.800000 9.400000 41.996799 +1.800000 9.500000 43.176045 +1.800000 9.600000 44.375291 +1.800000 9.700000 45.594537 +1.800000 9.800000 46.833784 +1.800000 9.900000 48.093030 +1.800000 10.000000 49.372276 +1.800000 10.100000 50.671522 +1.800000 10.200000 51.990769 +1.800000 10.300000 53.330015 +1.800000 10.400000 54.689261 +1.800000 10.500000 56.068507 +1.800000 10.600000 57.467754 +1.800000 10.700000 58.887000 +1.800000 10.800000 60.326246 +1.800000 10.900000 61.785492 +1.800000 11.000000 63.264738 +1.800000 11.100000 64.763985 +1.800000 11.200000 66.283231 +1.800000 11.300000 67.822477 +1.800000 11.400000 69.381723 +1.800000 11.500000 70.960970 +1.800000 11.600000 72.560216 +1.800000 11.700000 74.179462 +1.800000 11.800000 75.818708 +1.800000 11.900000 77.477955 +1.800000 12.000000 79.157201 +1.800000 12.100000 80.856447 +1.800000 12.200000 82.575693 +1.800000 12.300000 84.314940 +1.800000 12.400000 86.074186 +1.800000 12.500000 87.853432 +1.800000 12.600000 89.652678 +1.800000 12.700000 91.471924 +1.800000 12.800000 93.311171 +1.800000 12.900000 95.170417 +1.800000 13.000000 97.049663 +1.800000 13.100000 98.948909 +1.800000 13.200000 100.868156 +1.800000 13.300000 102.807402 +1.800000 13.400000 104.766648 +1.800000 13.500000 106.745894 +1.800000 13.600000 108.745141 +1.800000 13.700000 110.764387 +1.800000 13.800000 112.803633 +1.800000 13.900000 114.862879 +1.800000 14.000000 116.942125 +1.800000 14.100000 119.041372 +1.800000 14.200000 121.160618 +1.800000 14.300000 123.299864 +1.800000 14.400000 125.459110 +1.800000 14.500000 127.638357 +1.800000 14.600000 129.837603 +1.800000 14.700000 132.056849 +1.800000 14.800000 134.296095 +1.800000 14.900000 136.555342 +1.800000 15.000000 138.834588 + +1.900000 -5.000000 78.170060 +1.900000 -4.900000 76.491578 +1.900000 -4.800000 74.833095 +1.900000 -4.700000 73.194613 +1.900000 -4.600000 71.576131 +1.900000 -4.500000 69.977648 +1.900000 -4.400000 68.399166 +1.900000 -4.300000 66.840683 +1.900000 -4.200000 65.302201 +1.900000 -4.100000 63.783718 +1.900000 -4.000000 62.285236 +1.900000 -3.900000 60.806753 +1.900000 -3.800000 59.348271 +1.900000 -3.700000 57.909789 +1.900000 -3.600000 56.491306 +1.900000 -3.500000 55.092824 +1.900000 -3.400000 53.714341 +1.900000 -3.300000 52.355859 +1.900000 -3.200000 51.017376 +1.900000 -3.100000 49.698894 +1.900000 -3.000000 48.400412 +1.900000 -2.900000 47.121929 +1.900000 -2.800000 45.863447 +1.900000 -2.700000 44.624964 +1.900000 -2.600000 43.406482 +1.900000 -2.500000 42.207999 +1.900000 -2.400000 41.029517 +1.900000 -2.300000 39.871035 +1.900000 -2.200000 38.732552 +1.900000 -2.100000 37.614070 +1.900000 -2.000000 36.515587 +1.900000 -1.900000 35.437105 +1.900000 -1.800000 34.378622 +1.900000 -1.700000 33.340140 +1.900000 -1.600000 32.321658 +1.900000 -1.500000 31.323175 +1.900000 -1.400000 30.344693 +1.900000 -1.300000 29.386210 +1.900000 -1.200000 28.447728 +1.900000 -1.100000 27.529245 +1.900000 -1.000000 26.630763 +1.900000 -0.900000 25.752281 +1.900000 -0.800000 24.893798 +1.900000 -0.700000 24.055316 +1.900000 -0.600000 23.236833 +1.900000 -0.500000 22.438351 +1.900000 -0.400000 21.659868 +1.900000 -0.300000 20.901386 +1.900000 -0.200000 20.162904 +1.900000 -0.100000 19.444421 +1.900000 -0.000000 18.745939 +1.900000 0.100000 18.067456 +1.900000 0.200000 17.408974 +1.900000 0.300000 16.770491 +1.900000 0.400000 16.152009 +1.900000 0.500000 15.553526 +1.900000 0.600000 14.975044 +1.900000 0.700000 14.416562 +1.900000 0.800000 13.878079 +1.900000 0.900000 13.359597 +1.900000 1.000000 12.861114 +1.900000 1.100000 12.382632 +1.900000 1.200000 11.924149 +1.900000 1.300000 11.485667 +1.900000 1.400000 11.067185 +1.900000 1.500000 10.668702 +1.900000 1.600000 10.290220 +1.900000 1.700000 9.931737 +1.900000 1.800000 9.593255 +1.900000 1.900000 9.274772 +1.900000 2.000000 8.976290 +1.900000 2.100000 8.697808 +1.900000 2.200000 8.439325 +1.900000 2.300000 8.200843 +1.900000 2.400000 7.982360 +1.900000 2.500000 7.783878 +1.900000 2.600000 7.605395 +1.900000 2.700000 7.446913 +1.900000 2.800000 7.308431 +1.900000 2.900000 7.189948 +1.900000 3.000000 7.091466 +1.900000 3.100000 7.012983 +1.900000 3.200000 6.954501 +1.900000 3.300000 6.916018 +1.900000 3.400000 6.897536 +1.900000 3.500000 6.899054 +1.900000 3.600000 6.920571 +1.900000 3.700000 6.962089 +1.900000 3.800000 7.023606 +1.900000 3.900000 7.105124 +1.900000 4.000000 7.206641 +1.900000 4.100000 7.328159 +1.900000 4.200000 7.469676 +1.900000 4.300000 7.631194 +1.900000 4.400000 7.812712 +1.900000 4.500000 8.014229 +1.900000 4.600000 8.235747 +1.900000 4.700000 8.477264 +1.900000 4.800000 8.738782 +1.900000 4.900000 9.020299 +1.900000 5.000000 9.321817 +1.900000 5.100000 9.643335 +1.900000 5.200000 9.984852 +1.900000 5.300000 10.346370 +1.900000 5.400000 10.727887 +1.900000 5.500000 11.129405 +1.900000 5.600000 11.550922 +1.900000 5.700000 11.992440 +1.900000 5.800000 12.453958 +1.900000 5.900000 12.935475 +1.900000 6.000000 13.436993 +1.900000 6.100000 13.958510 +1.900000 6.200000 14.500028 +1.900000 6.300000 15.061545 +1.900000 6.400000 15.643063 +1.900000 6.500000 16.244581 +1.900000 6.600000 16.866098 +1.900000 6.700000 17.507616 +1.900000 6.800000 18.169133 +1.900000 6.900000 18.850651 +1.900000 7.000000 19.552168 +1.900000 7.100000 20.273686 +1.900000 7.200000 21.015204 +1.900000 7.300000 21.776721 +1.900000 7.400000 22.558239 +1.900000 7.500000 23.359756 +1.900000 7.600000 24.181274 +1.900000 7.700000 25.022791 +1.900000 7.800000 25.884309 +1.900000 7.900000 26.765827 +1.900000 8.000000 27.667344 +1.900000 8.100000 28.588862 +1.900000 8.200000 29.530379 +1.900000 8.300000 30.491897 +1.900000 8.400000 31.473414 +1.900000 8.500000 32.474932 +1.900000 8.600000 33.496449 +1.900000 8.700000 34.537967 +1.900000 8.800000 35.599485 +1.900000 8.900000 36.681002 +1.900000 9.000000 37.782520 +1.900000 9.100000 38.904037 +1.900000 9.200000 40.045555 +1.900000 9.300000 41.207072 +1.900000 9.400000 42.388590 +1.900000 9.500000 43.590108 +1.900000 9.600000 44.811625 +1.900000 9.700000 46.053143 +1.900000 9.800000 47.314660 +1.900000 9.900000 48.596178 +1.900000 10.000000 49.897695 +1.900000 10.100000 51.219213 +1.900000 10.200000 52.560731 +1.900000 10.300000 53.922248 +1.900000 10.400000 55.303766 +1.900000 10.500000 56.705283 +1.900000 10.600000 58.126801 +1.900000 10.700000 59.568318 +1.900000 10.800000 61.029836 +1.900000 10.900000 62.511354 +1.900000 11.000000 64.012871 +1.900000 11.100000 65.534389 +1.900000 11.200000 67.075906 +1.900000 11.300000 68.637424 +1.900000 11.400000 70.218941 +1.900000 11.500000 71.820459 +1.900000 11.600000 73.441977 +1.900000 11.700000 75.083494 +1.900000 11.800000 76.745012 +1.900000 11.900000 78.426529 +1.900000 12.000000 80.128047 +1.900000 12.100000 81.849564 +1.900000 12.200000 83.591082 +1.900000 12.300000 85.352600 +1.900000 12.400000 87.134117 +1.900000 12.500000 88.935635 +1.900000 12.600000 90.757152 +1.900000 12.700000 92.598670 +1.900000 12.800000 94.460187 +1.900000 12.900000 96.341705 +1.900000 13.000000 98.243222 +1.900000 13.100000 100.164740 +1.900000 13.200000 102.106258 +1.900000 13.300000 104.067775 +1.900000 13.400000 106.049293 +1.900000 13.500000 108.050810 +1.900000 13.600000 110.072328 +1.900000 13.700000 112.113845 +1.900000 13.800000 114.175363 +1.900000 13.900000 116.256881 +1.900000 14.000000 118.358398 +1.900000 14.100000 120.479916 +1.900000 14.200000 122.621433 +1.900000 14.300000 124.782951 +1.900000 14.400000 126.964468 +1.900000 14.500000 129.165986 +1.900000 14.600000 131.387504 +1.900000 14.700000 133.629021 +1.900000 14.800000 135.890539 +1.900000 14.900000 138.172056 +1.900000 15.000000 140.473574 + +2.000000 -5.000000 75.453653 +2.000000 -4.900000 73.796925 +2.000000 -4.800000 72.160197 +2.000000 -4.700000 70.543470 +2.000000 -4.600000 68.946742 +2.000000 -4.500000 67.370014 +2.000000 -4.400000 65.813286 +2.000000 -4.300000 64.276558 +2.000000 -4.200000 62.759830 +2.000000 -4.100000 61.263103 +2.000000 -4.000000 59.786375 +2.000000 -3.900000 58.329647 +2.000000 -3.800000 56.892919 +2.000000 -3.700000 55.476191 +2.000000 -3.600000 54.079463 +2.000000 -3.500000 52.702736 +2.000000 -3.400000 51.346008 +2.000000 -3.300000 50.009280 +2.000000 -3.200000 48.692552 +2.000000 -3.100000 47.395824 +2.000000 -3.000000 46.119096 +2.000000 -2.900000 44.862369 +2.000000 -2.800000 43.625641 +2.000000 -2.700000 42.408913 +2.000000 -2.600000 41.212185 +2.000000 -2.500000 40.035457 +2.000000 -2.400000 38.878729 +2.000000 -2.300000 37.742002 +2.000000 -2.200000 36.625274 +2.000000 -2.100000 35.528546 +2.000000 -2.000000 34.451818 +2.000000 -1.900000 33.395090 +2.000000 -1.800000 32.358362 +2.000000 -1.700000 31.341635 +2.000000 -1.600000 30.344907 +2.000000 -1.500000 29.368179 +2.000000 -1.400000 28.411451 +2.000000 -1.300000 27.474723 +2.000000 -1.200000 26.557995 +2.000000 -1.100000 25.661268 +2.000000 -1.000000 24.784540 +2.000000 -0.900000 23.927812 +2.000000 -0.800000 23.091084 +2.000000 -0.700000 22.274356 +2.000000 -0.600000 21.477628 +2.000000 -0.500000 20.700901 +2.000000 -0.400000 19.944173 +2.000000 -0.300000 19.207445 +2.000000 -0.200000 18.490717 +2.000000 -0.100000 17.793989 +2.000000 -0.000000 17.117261 +2.000000 0.100000 16.460534 +2.000000 0.200000 15.823806 +2.000000 0.300000 15.207078 +2.000000 0.400000 14.610350 +2.000000 0.500000 14.033622 +2.000000 0.600000 13.476894 +2.000000 0.700000 12.940167 +2.000000 0.800000 12.423439 +2.000000 0.900000 11.926711 +2.000000 1.000000 11.449983 +2.000000 1.100000 10.993255 +2.000000 1.200000 10.556527 +2.000000 1.300000 10.139799 +2.000000 1.400000 9.743072 +2.000000 1.500000 9.366344 +2.000000 1.600000 9.009616 +2.000000 1.700000 8.672888 +2.000000 1.800000 8.356160 +2.000000 1.900000 8.059432 +2.000000 2.000000 7.782705 +2.000000 2.100000 7.525977 +2.000000 2.200000 7.289249 +2.000000 2.300000 7.072521 +2.000000 2.400000 6.875793 +2.000000 2.500000 6.699065 +2.000000 2.600000 6.542338 +2.000000 2.700000 6.405610 +2.000000 2.800000 6.288882 +2.000000 2.900000 6.192154 +2.000000 3.000000 6.115426 +2.000000 3.100000 6.058698 +2.000000 3.200000 6.021971 +2.000000 3.300000 6.005243 +2.000000 3.400000 6.008515 +2.000000 3.500000 6.031787 +2.000000 3.600000 6.075059 +2.000000 3.700000 6.138331 +2.000000 3.800000 6.221604 +2.000000 3.900000 6.324876 +2.000000 4.000000 6.448148 +2.000000 4.100000 6.591420 +2.000000 4.200000 6.754692 +2.000000 4.300000 6.937964 +2.000000 4.400000 7.141237 +2.000000 4.500000 7.364509 +2.000000 4.600000 7.607781 +2.000000 4.700000 7.871053 +2.000000 4.800000 8.154325 +2.000000 4.900000 8.457597 +2.000000 5.000000 8.780870 +2.000000 5.100000 9.124142 +2.000000 5.200000 9.487414 +2.000000 5.300000 9.870686 +2.000000 5.400000 10.273958 +2.000000 5.500000 10.697230 +2.000000 5.600000 11.140503 +2.000000 5.700000 11.603775 +2.000000 5.800000 12.087047 +2.000000 5.900000 12.590319 +2.000000 6.000000 13.113591 +2.000000 6.100000 13.656863 +2.000000 6.200000 14.220136 +2.000000 6.300000 14.803408 +2.000000 6.400000 15.406680 +2.000000 6.500000 16.029952 +2.000000 6.600000 16.673224 +2.000000 6.700000 17.336496 +2.000000 6.800000 18.019769 +2.000000 6.900000 18.723041 +2.000000 7.000000 19.446313 +2.000000 7.100000 20.189585 +2.000000 7.200000 20.952857 +2.000000 7.300000 21.736129 +2.000000 7.400000 22.539402 +2.000000 7.500000 23.362674 +2.000000 7.600000 24.205946 +2.000000 7.700000 25.069218 +2.000000 7.800000 25.952490 +2.000000 7.900000 26.855762 +2.000000 8.000000 27.779035 +2.000000 8.100000 28.722307 +2.000000 8.200000 29.685579 +2.000000 8.300000 30.668851 +2.000000 8.400000 31.672123 +2.000000 8.500000 32.695395 +2.000000 8.600000 33.738668 +2.000000 8.700000 34.801940 +2.000000 8.800000 35.885212 +2.000000 8.900000 36.988484 +2.000000 9.000000 38.111756 +2.000000 9.100000 39.255028 +2.000000 9.200000 40.418301 +2.000000 9.300000 41.601573 +2.000000 9.400000 42.804845 +2.000000 9.500000 44.028117 +2.000000 9.600000 45.271389 +2.000000 9.700000 46.534661 +2.000000 9.800000 47.817934 +2.000000 9.900000 49.121206 +2.000000 10.000000 50.444478 +2.000000 10.100000 51.787750 +2.000000 10.200000 53.151022 +2.000000 10.300000 54.534294 +2.000000 10.400000 55.937567 +2.000000 10.500000 57.360839 +2.000000 10.600000 58.804111 +2.000000 10.700000 60.267383 +2.000000 10.800000 61.750655 +2.000000 10.900000 63.253927 +2.000000 11.000000 64.777200 +2.000000 11.100000 66.320472 +2.000000 11.200000 67.883744 +2.000000 11.300000 69.467016 +2.000000 11.400000 71.070288 +2.000000 11.500000 72.693560 +2.000000 11.600000 74.336832 +2.000000 11.700000 76.000105 +2.000000 11.800000 77.683377 +2.000000 11.900000 79.386649 +2.000000 12.000000 81.109921 +2.000000 12.100000 82.853193 +2.000000 12.200000 84.616465 +2.000000 12.300000 86.399738 +2.000000 12.400000 88.203010 +2.000000 12.500000 90.026282 +2.000000 12.600000 91.869554 +2.000000 12.700000 93.732826 +2.000000 12.800000 95.616098 +2.000000 12.900000 97.519371 +2.000000 13.000000 99.442643 +2.000000 13.100000 101.385915 +2.000000 13.200000 103.349187 +2.000000 13.300000 105.332459 +2.000000 13.400000 107.335731 +2.000000 13.500000 109.359004 +2.000000 13.600000 111.402276 +2.000000 13.700000 113.465548 +2.000000 13.800000 115.548820 +2.000000 13.900000 117.652092 +2.000000 14.000000 119.775364 +2.000000 14.100000 121.918637 +2.000000 14.200000 124.081909 +2.000000 14.300000 126.265181 +2.000000 14.400000 128.468453 +2.000000 14.500000 130.691725 +2.000000 14.600000 132.934997 +2.000000 14.700000 135.198270 +2.000000 14.800000 137.481542 +2.000000 14.900000 139.784814 +2.000000 15.000000 142.108086 + +2.100000 -5.000000 72.843342 +2.100000 -4.900000 71.207852 +2.100000 -4.800000 69.592362 +2.100000 -4.700000 67.996872 +2.100000 -4.600000 66.421382 +2.100000 -4.500000 64.865892 +2.100000 -4.400000 63.330403 +2.100000 -4.300000 61.814913 +2.100000 -4.200000 60.319423 +2.100000 -4.100000 58.843933 +2.100000 -4.000000 57.388443 +2.100000 -3.900000 55.952953 +2.100000 -3.800000 54.537463 +2.100000 -3.700000 53.141973 +2.100000 -3.600000 51.766483 +2.100000 -3.500000 50.410993 +2.100000 -3.400000 49.075503 +2.100000 -3.300000 47.760013 +2.100000 -3.200000 46.464523 +2.100000 -3.100000 45.189033 +2.100000 -3.000000 43.933543 +2.100000 -2.900000 42.698053 +2.100000 -2.800000 41.482563 +2.100000 -2.700000 40.287073 +2.100000 -2.600000 39.111583 +2.100000 -2.500000 37.956093 +2.100000 -2.400000 36.820603 +2.100000 -2.300000 35.705113 +2.100000 -2.200000 34.609623 +2.100000 -2.100000 33.534133 +2.100000 -2.000000 32.478643 +2.100000 -1.900000 31.443153 +2.100000 -1.800000 30.427663 +2.100000 -1.700000 29.432173 +2.100000 -1.600000 28.456683 +2.100000 -1.500000 27.501193 +2.100000 -1.400000 26.565703 +2.100000 -1.300000 25.650213 +2.100000 -1.200000 24.754723 +2.100000 -1.100000 23.879233 +2.100000 -1.000000 23.023743 +2.100000 -0.900000 22.188253 +2.100000 -0.800000 21.372763 +2.100000 -0.700000 20.577273 +2.100000 -0.600000 19.801783 +2.100000 -0.500000 19.046293 +2.100000 -0.400000 18.310803 +2.100000 -0.300000 17.595313 +2.100000 -0.200000 16.899824 +2.100000 -0.100000 16.224334 +2.100000 -0.000000 15.568844 +2.100000 0.100000 14.933354 +2.100000 0.200000 14.317864 +2.100000 0.300000 13.722374 +2.100000 0.400000 13.146884 +2.100000 0.500000 12.591394 +2.100000 0.600000 12.055904 +2.100000 0.700000 11.540414 +2.100000 0.800000 11.044924 +2.100000 0.900000 10.569434 +2.100000 1.000000 10.113944 +2.100000 1.100000 9.678454 +2.100000 1.200000 9.262964 +2.100000 1.300000 8.867474 +2.100000 1.400000 8.491984 +2.100000 1.500000 8.136494 +2.100000 1.600000 7.801004 +2.100000 1.700000 7.485514 +2.100000 1.800000 7.190024 +2.100000 1.900000 6.914534 +2.100000 2.000000 6.659044 +2.100000 2.100000 6.423554 +2.100000 2.200000 6.208064 +2.100000 2.300000 6.012574 +2.100000 2.400000 5.837084 +2.100000 2.500000 5.681594 +2.100000 2.600000 5.546104 +2.100000 2.700000 5.430614 +2.100000 2.800000 5.335124 +2.100000 2.900000 5.259634 +2.100000 3.000000 5.204144 +2.100000 3.100000 5.168654 +2.100000 3.200000 5.153164 +2.100000 3.300000 5.157674 +2.100000 3.400000 5.182184 +2.100000 3.500000 5.226694 +2.100000 3.600000 5.291204 +2.100000 3.700000 5.375714 +2.100000 3.800000 5.480224 +2.100000 3.900000 5.604735 +2.100000 4.000000 5.749245 +2.100000 4.100000 5.913755 +2.100000 4.200000 6.098265 +2.100000 4.300000 6.302775 +2.100000 4.400000 6.527285 +2.100000 4.500000 6.771795 +2.100000 4.600000 7.036305 +2.100000 4.700000 7.320815 +2.100000 4.800000 7.625325 +2.100000 4.900000 7.949835 +2.100000 5.000000 8.294345 +2.100000 5.100000 8.658855 +2.100000 5.200000 9.043365 +2.100000 5.300000 9.447875 +2.100000 5.400000 9.872385 +2.100000 5.500000 10.316895 +2.100000 5.600000 10.781405 +2.100000 5.700000 11.265915 +2.100000 5.800000 11.770425 +2.100000 5.900000 12.294935 +2.100000 6.000000 12.839445 +2.100000 6.100000 13.403955 +2.100000 6.200000 13.988465 +2.100000 6.300000 14.592975 +2.100000 6.400000 15.217485 +2.100000 6.500000 15.861995 +2.100000 6.600000 16.526505 +2.100000 6.700000 17.211015 +2.100000 6.800000 17.915525 +2.100000 6.900000 18.640035 +2.100000 7.000000 19.384545 +2.100000 7.100000 20.149055 +2.100000 7.200000 20.933565 +2.100000 7.300000 21.738075 +2.100000 7.400000 22.562585 +2.100000 7.500000 23.407095 +2.100000 7.600000 24.271605 +2.100000 7.700000 25.156115 +2.100000 7.800000 26.060625 +2.100000 7.900000 26.985135 +2.100000 8.000000 27.929645 +2.100000 8.100000 28.894156 +2.100000 8.200000 29.878666 +2.100000 8.300000 30.883176 +2.100000 8.400000 31.907686 +2.100000 8.500000 32.952196 +2.100000 8.600000 34.016706 +2.100000 8.700000 35.101216 +2.100000 8.800000 36.205726 +2.100000 8.900000 37.330236 +2.100000 9.000000 38.474746 +2.100000 9.100000 39.639256 +2.100000 9.200000 40.823766 +2.100000 9.300000 42.028276 +2.100000 9.400000 43.252786 +2.100000 9.500000 44.497296 +2.100000 9.600000 45.761806 +2.100000 9.700000 47.046316 +2.100000 9.800000 48.350826 +2.100000 9.900000 49.675336 +2.100000 10.000000 51.019846 +2.100000 10.100000 52.384356 +2.100000 10.200000 53.768866 +2.100000 10.300000 55.173376 +2.100000 10.400000 56.597886 +2.100000 10.500000 58.042396 +2.100000 10.600000 59.506906 +2.100000 10.700000 60.991416 +2.100000 10.800000 62.495926 +2.100000 10.900000 64.020436 +2.100000 11.000000 65.564946 +2.100000 11.100000 67.129456 +2.100000 11.200000 68.713966 +2.100000 11.300000 70.318476 +2.100000 11.400000 71.942986 +2.100000 11.500000 73.587496 +2.100000 11.600000 75.252006 +2.100000 11.700000 76.936516 +2.100000 11.800000 78.641026 +2.100000 11.900000 80.365536 +2.100000 12.000000 82.110046 +2.100000 12.100000 83.874556 +2.100000 12.200000 85.659066 +2.100000 12.300000 87.463577 +2.100000 12.400000 89.288087 +2.100000 12.500000 91.132597 +2.100000 12.600000 92.997107 +2.100000 12.700000 94.881617 +2.100000 12.800000 96.786127 +2.100000 12.900000 98.710637 +2.100000 13.000000 100.655147 +2.100000 13.100000 102.619657 +2.100000 13.200000 104.604167 +2.100000 13.300000 106.608677 +2.100000 13.400000 108.633187 +2.100000 13.500000 110.677697 +2.100000 13.600000 112.742207 +2.100000 13.700000 114.826717 +2.100000 13.800000 116.931227 +2.100000 13.900000 119.055737 +2.100000 14.000000 121.200247 +2.100000 14.100000 123.364757 +2.100000 14.200000 125.549267 +2.100000 14.300000 127.753777 +2.100000 14.400000 129.978287 +2.100000 14.500000 132.222797 +2.100000 14.600000 134.487307 +2.100000 14.700000 136.771817 +2.100000 14.800000 139.076327 +2.100000 14.900000 141.400837 +2.100000 15.000000 143.745347 + +2.200000 -5.000000 70.345992 +2.200000 -4.900000 68.731223 +2.200000 -4.800000 67.136454 +2.200000 -4.700000 65.561685 +2.200000 -4.600000 64.006916 +2.200000 -4.500000 62.472148 +2.200000 -4.400000 60.957379 +2.200000 -4.300000 59.462610 +2.200000 -4.200000 57.987841 +2.200000 -4.100000 56.533072 +2.200000 -4.000000 55.098303 +2.200000 -3.900000 53.683534 +2.200000 -3.800000 52.288766 +2.200000 -3.700000 50.913997 +2.200000 -3.600000 49.559228 +2.200000 -3.500000 48.224459 +2.200000 -3.400000 46.909690 +2.200000 -3.300000 45.614921 +2.200000 -3.200000 44.340152 +2.200000 -3.100000 43.085384 +2.200000 -3.000000 41.850615 +2.200000 -2.900000 40.635846 +2.200000 -2.800000 39.441077 +2.200000 -2.700000 38.266308 +2.200000 -2.600000 37.111539 +2.200000 -2.500000 35.976770 +2.200000 -2.400000 34.862002 +2.200000 -2.300000 33.767233 +2.200000 -2.200000 32.692464 +2.200000 -2.100000 31.637695 +2.200000 -2.000000 30.602926 +2.200000 -1.900000 29.588157 +2.200000 -1.800000 28.593388 +2.200000 -1.700000 27.618620 +2.200000 -1.600000 26.663851 +2.200000 -1.500000 25.729082 +2.200000 -1.400000 24.814313 +2.200000 -1.300000 23.919544 +2.200000 -1.200000 23.044775 +2.200000 -1.100000 22.190006 +2.200000 -1.000000 21.355238 +2.200000 -0.900000 20.540469 +2.200000 -0.800000 19.745700 +2.200000 -0.700000 18.970931 +2.200000 -0.600000 18.216162 +2.200000 -0.500000 17.481393 +2.200000 -0.400000 16.766624 +2.200000 -0.300000 16.071856 +2.200000 -0.200000 15.397087 +2.200000 -0.100000 14.742318 +2.200000 -0.000000 14.107549 +2.200000 0.100000 13.492780 +2.200000 0.200000 12.898011 +2.200000 0.300000 12.323242 +2.200000 0.400000 11.768474 +2.200000 0.500000 11.233705 +2.200000 0.600000 10.718936 +2.200000 0.700000 10.224167 +2.200000 0.800000 9.749398 +2.200000 0.900000 9.294629 +2.200000 1.000000 8.859860 +2.200000 1.100000 8.445092 +2.200000 1.200000 8.050323 +2.200000 1.300000 7.675554 +2.200000 1.400000 7.320785 +2.200000 1.500000 6.986016 +2.200000 1.600000 6.671247 +2.200000 1.700000 6.376479 +2.200000 1.800000 6.101710 +2.200000 1.900000 5.846941 +2.200000 2.000000 5.612172 +2.200000 2.100000 5.397403 +2.200000 2.200000 5.202634 +2.200000 2.300000 5.027865 +2.200000 2.400000 4.873097 +2.200000 2.500000 4.738328 +2.200000 2.600000 4.623559 +2.200000 2.700000 4.528790 +2.200000 2.800000 4.454021 +2.200000 2.900000 4.399252 +2.200000 3.000000 4.364483 +2.200000 3.100000 4.349715 +2.200000 3.200000 4.354946 +2.200000 3.300000 4.380177 +2.200000 3.400000 4.425408 +2.200000 3.500000 4.490639 +2.200000 3.600000 4.575870 +2.200000 3.700000 4.681101 +2.200000 3.800000 4.806333 +2.200000 3.900000 4.951564 +2.200000 4.000000 5.116795 +2.200000 4.100000 5.302026 +2.200000 4.200000 5.507257 +2.200000 4.300000 5.732488 +2.200000 4.400000 5.977719 +2.200000 4.500000 6.242951 +2.200000 4.600000 6.528182 +2.200000 4.700000 6.833413 +2.200000 4.800000 7.158644 +2.200000 4.900000 7.503875 +2.200000 5.000000 7.869106 +2.200000 5.100000 8.254337 +2.200000 5.200000 8.659569 +2.200000 5.300000 9.084800 +2.200000 5.400000 9.530031 +2.200000 5.500000 9.995262 +2.200000 5.600000 10.480493 +2.200000 5.700000 10.985724 +2.200000 5.800000 11.510955 +2.200000 5.900000 12.056187 +2.200000 6.000000 12.621418 +2.200000 6.100000 13.206649 +2.200000 6.200000 13.811880 +2.200000 6.300000 14.437111 +2.200000 6.400000 15.082342 +2.200000 6.500000 15.747573 +2.200000 6.600000 16.432805 +2.200000 6.700000 17.138036 +2.200000 6.800000 17.863267 +2.200000 6.900000 18.608498 +2.200000 7.000000 19.373729 +2.200000 7.100000 20.158960 +2.200000 7.200000 20.964191 +2.200000 7.300000 21.789423 +2.200000 7.400000 22.634654 +2.200000 7.500000 23.499885 +2.200000 7.600000 24.385116 +2.200000 7.700000 25.290347 +2.200000 7.800000 26.215578 +2.200000 7.900000 27.160809 +2.200000 8.000000 28.126041 +2.200000 8.100000 29.111272 +2.200000 8.200000 30.116503 +2.200000 8.300000 31.141734 +2.200000 8.400000 32.186965 +2.200000 8.500000 33.252196 +2.200000 8.600000 34.337427 +2.200000 8.700000 35.442659 +2.200000 8.800000 36.567890 +2.200000 8.900000 37.713121 +2.200000 9.000000 38.878352 +2.200000 9.100000 40.063583 +2.200000 9.200000 41.268814 +2.200000 9.300000 42.494046 +2.200000 9.400000 43.739277 +2.200000 9.500000 45.004508 +2.200000 9.600000 46.289739 +2.200000 9.700000 47.594970 +2.200000 9.800000 48.920201 +2.200000 9.900000 50.265432 +2.200000 10.000000 51.630664 +2.200000 10.100000 53.015895 +2.200000 10.200000 54.421126 +2.200000 10.300000 55.846357 +2.200000 10.400000 57.291588 +2.200000 10.500000 58.756819 +2.200000 10.600000 60.242050 +2.200000 10.700000 61.747282 +2.200000 10.800000 63.272513 +2.200000 10.900000 64.817744 +2.200000 11.000000 66.382975 +2.200000 11.100000 67.968206 +2.200000 11.200000 69.573437 +2.200000 11.300000 71.198668 +2.200000 11.400000 72.843900 +2.200000 11.500000 74.509131 +2.200000 11.600000 76.194362 +2.200000 11.700000 77.899593 +2.200000 11.800000 79.624824 +2.200000 11.900000 81.370055 +2.200000 12.000000 83.135286 +2.200000 12.100000 84.920518 +2.200000 12.200000 86.725749 +2.200000 12.300000 88.550980 +2.200000 12.400000 90.396211 +2.200000 12.500000 92.261442 +2.200000 12.600000 94.146673 +2.200000 12.700000 96.051904 +2.200000 12.800000 97.977136 +2.200000 12.900000 99.922367 +2.200000 13.000000 101.887598 +2.200000 13.100000 103.872829 +2.200000 13.200000 105.878060 +2.200000 13.300000 107.903291 +2.200000 13.400000 109.948522 +2.200000 13.500000 112.013754 +2.200000 13.600000 114.098985 +2.200000 13.700000 116.204216 +2.200000 13.800000 118.329447 +2.200000 13.900000 120.474678 +2.200000 14.000000 122.639909 +2.200000 14.100000 124.825140 +2.200000 14.200000 127.030372 +2.200000 14.300000 129.255603 +2.200000 14.400000 131.500834 +2.200000 14.500000 133.766065 +2.200000 14.600000 136.051296 +2.200000 14.700000 138.356527 +2.200000 14.800000 140.681758 +2.200000 14.900000 143.026990 +2.200000 15.000000 145.392221 + +2.300000 -5.000000 67.968021 +2.300000 -4.900000 66.373457 +2.300000 -4.800000 64.798892 +2.300000 -4.700000 63.244328 +2.300000 -4.600000 61.709763 +2.300000 -4.500000 60.195199 +2.300000 -4.400000 58.700634 +2.300000 -4.300000 57.226070 +2.300000 -4.200000 55.771505 +2.300000 -4.100000 54.336941 +2.300000 -4.000000 52.922377 +2.300000 -3.900000 51.527812 +2.300000 -3.800000 50.153248 +2.300000 -3.700000 48.798683 +2.300000 -3.600000 47.464119 +2.300000 -3.500000 46.149554 +2.300000 -3.400000 44.854990 +2.300000 -3.300000 43.580425 +2.300000 -3.200000 42.325861 +2.300000 -3.100000 41.091296 +2.300000 -3.000000 39.876732 +2.300000 -2.900000 38.682167 +2.300000 -2.800000 37.507603 +2.300000 -2.700000 36.353038 +2.300000 -2.600000 35.218474 +2.300000 -2.500000 34.103909 +2.300000 -2.400000 33.009345 +2.300000 -2.300000 31.934780 +2.300000 -2.200000 30.880216 +2.300000 -2.100000 29.845652 +2.300000 -2.000000 28.831087 +2.300000 -1.900000 27.836523 +2.300000 -1.800000 26.861958 +2.300000 -1.700000 25.907394 +2.300000 -1.600000 24.972829 +2.300000 -1.500000 24.058265 +2.300000 -1.400000 23.163700 +2.300000 -1.300000 22.289136 +2.300000 -1.200000 21.434571 +2.300000 -1.100000 20.600007 +2.300000 -1.000000 19.785442 +2.300000 -0.900000 18.990878 +2.300000 -0.800000 18.216313 +2.300000 -0.700000 17.461749 +2.300000 -0.600000 16.727184 +2.300000 -0.500000 16.012620 +2.300000 -0.400000 15.318056 +2.300000 -0.300000 14.643491 +2.300000 -0.200000 13.988927 +2.300000 -0.100000 13.354362 +2.300000 -0.000000 12.739798 +2.300000 0.100000 12.145233 +2.300000 0.200000 11.570669 +2.300000 0.300000 11.016104 +2.300000 0.400000 10.481540 +2.300000 0.500000 9.966975 +2.300000 0.600000 9.472411 +2.300000 0.700000 8.997846 +2.300000 0.800000 8.543282 +2.300000 0.900000 8.108717 +2.300000 1.000000 7.694153 +2.300000 1.100000 7.299588 +2.300000 1.200000 6.925024 +2.300000 1.300000 6.570459 +2.300000 1.400000 6.235895 +2.300000 1.500000 5.921331 +2.300000 1.600000 5.626766 +2.300000 1.700000 5.352202 +2.300000 1.800000 5.097637 +2.300000 1.900000 4.863073 +2.300000 2.000000 4.648508 +2.300000 2.100000 4.453944 +2.300000 2.200000 4.279379 +2.300000 2.300000 4.124815 +2.300000 2.400000 3.990250 +2.300000 2.500000 3.875686 +2.300000 2.600000 3.781121 +2.300000 2.700000 3.706557 +2.300000 2.800000 3.651992 +2.300000 2.900000 3.617428 +2.300000 3.000000 3.602863 +2.300000 3.100000 3.608299 +2.300000 3.200000 3.633735 +2.300000 3.300000 3.679170 +2.300000 3.400000 3.744606 +2.300000 3.500000 3.830041 +2.300000 3.600000 3.935477 +2.300000 3.700000 4.060912 +2.300000 3.800000 4.206348 +2.300000 3.900000 4.371783 +2.300000 4.000000 4.557219 +2.300000 4.100000 4.762654 +2.300000 4.200000 4.988090 +2.300000 4.300000 5.233525 +2.300000 4.400000 5.498961 +2.300000 4.500000 5.784396 +2.300000 4.600000 6.089832 +2.300000 4.700000 6.415267 +2.300000 4.800000 6.760703 +2.300000 4.900000 7.126138 +2.300000 5.000000 7.511574 +2.300000 5.100000 7.917010 +2.300000 5.200000 8.342445 +2.300000 5.300000 8.787881 +2.300000 5.400000 9.253316 +2.300000 5.500000 9.738752 +2.300000 5.600000 10.244187 +2.300000 5.700000 10.769623 +2.300000 5.800000 11.315058 +2.300000 5.900000 11.880494 +2.300000 6.000000 12.465929 +2.300000 6.100000 13.071365 +2.300000 6.200000 13.696800 +2.300000 6.300000 14.342236 +2.300000 6.400000 15.007671 +2.300000 6.500000 15.693107 +2.300000 6.600000 16.398542 +2.300000 6.700000 17.123978 +2.300000 6.800000 17.869413 +2.300000 6.900000 18.634849 +2.300000 7.000000 19.420285 +2.300000 7.100000 20.225720 +2.300000 7.200000 21.051156 +2.300000 7.300000 21.896591 +2.300000 7.400000 22.762027 +2.300000 7.500000 23.647462 +2.300000 7.600000 24.552898 +2.300000 7.700000 25.478333 +2.300000 7.800000 26.423769 +2.300000 7.900000 27.389204 +2.300000 8.000000 28.374640 +2.300000 8.100000 29.380075 +2.300000 8.200000 30.405511 +2.300000 8.300000 31.450946 +2.300000 8.400000 32.516382 +2.300000 8.500000 33.601817 +2.300000 8.600000 34.707253 +2.300000 8.700000 35.832689 +2.300000 8.800000 36.978124 +2.300000 8.900000 38.143560 +2.300000 9.000000 39.328995 +2.300000 9.100000 40.534431 +2.300000 9.200000 41.759866 +2.300000 9.300000 43.005302 +2.300000 9.400000 44.270737 +2.300000 9.500000 45.556173 +2.300000 9.600000 46.861608 +2.300000 9.700000 48.187044 +2.300000 9.800000 49.532479 +2.300000 9.900000 50.897915 +2.300000 10.000000 52.283350 +2.300000 10.100000 53.688786 +2.300000 10.200000 55.114221 +2.300000 10.300000 56.559657 +2.300000 10.400000 58.025092 +2.300000 10.500000 59.510528 +2.300000 10.600000 61.015964 +2.300000 10.700000 62.541399 +2.300000 10.800000 64.086835 +2.300000 10.900000 65.652270 +2.300000 11.000000 67.237706 +2.300000 11.100000 68.843141 +2.300000 11.200000 70.468577 +2.300000 11.300000 72.114012 +2.300000 11.400000 73.779448 +2.300000 11.500000 75.464883 +2.300000 11.600000 77.170319 +2.300000 11.700000 78.895754 +2.300000 11.800000 80.641190 +2.300000 11.900000 82.406625 +2.300000 12.000000 84.192061 +2.300000 12.100000 85.997496 +2.300000 12.200000 87.822932 +2.300000 12.300000 89.668368 +2.300000 12.400000 91.533803 +2.300000 12.500000 93.419239 +2.300000 12.600000 95.324674 +2.300000 12.700000 97.250110 +2.300000 12.800000 99.195545 +2.300000 12.900000 101.160981 +2.300000 13.000000 103.146416 +2.300000 13.100000 105.151852 +2.300000 13.200000 107.177287 +2.300000 13.300000 109.222723 +2.300000 13.400000 111.288158 +2.300000 13.500000 113.373594 +2.300000 13.600000 115.479029 +2.300000 13.700000 117.604465 +2.300000 13.800000 119.749900 +2.300000 13.900000 121.915336 +2.300000 14.000000 124.100771 +2.300000 14.100000 126.306207 +2.300000 14.200000 128.531643 +2.300000 14.300000 130.777078 +2.300000 14.400000 133.042514 +2.300000 14.500000 135.327949 +2.300000 14.600000 137.633385 +2.300000 14.700000 139.958820 +2.300000 14.800000 142.304256 +2.300000 14.900000 144.669691 +2.300000 15.000000 147.055127 + +2.400000 -5.000000 65.715326 +2.400000 -4.900000 64.140450 +2.400000 -4.800000 62.585573 +2.400000 -4.700000 61.050696 +2.400000 -4.600000 59.535819 +2.400000 -4.500000 58.040942 +2.400000 -4.400000 56.566065 +2.400000 -4.300000 55.111189 +2.400000 -4.200000 53.676312 +2.400000 -4.100000 52.261435 +2.400000 -4.000000 50.866558 +2.400000 -3.900000 49.491681 +2.400000 -3.800000 48.136805 +2.400000 -3.700000 46.801928 +2.400000 -3.600000 45.487051 +2.400000 -3.500000 44.192174 +2.400000 -3.400000 42.917297 +2.400000 -3.300000 41.662420 +2.400000 -3.200000 40.427544 +2.400000 -3.100000 39.212667 +2.400000 -3.000000 38.017790 +2.400000 -2.900000 36.842913 +2.400000 -2.800000 35.688036 +2.400000 -2.700000 34.553159 +2.400000 -2.600000 33.438283 +2.400000 -2.500000 32.343406 +2.400000 -2.400000 31.268529 +2.400000 -2.300000 30.213652 +2.400000 -2.200000 29.178775 +2.400000 -2.100000 28.163898 +2.400000 -2.000000 27.169022 +2.400000 -1.900000 26.194145 +2.400000 -1.800000 25.239268 +2.400000 -1.700000 24.304391 +2.400000 -1.600000 23.389514 +2.400000 -1.500000 22.494637 +2.400000 -1.400000 21.619761 +2.400000 -1.300000 20.764884 +2.400000 -1.200000 19.930007 +2.400000 -1.100000 19.115130 +2.400000 -1.000000 18.320253 +2.400000 -0.900000 17.545377 +2.400000 -0.800000 16.790500 +2.400000 -0.700000 16.055623 +2.400000 -0.600000 15.340746 +2.400000 -0.500000 14.645869 +2.400000 -0.400000 13.970992 +2.400000 -0.300000 13.316116 +2.400000 -0.200000 12.681239 +2.400000 -0.100000 12.066362 +2.400000 -0.000000 11.471485 +2.400000 0.100000 10.896608 +2.400000 0.200000 10.341731 +2.400000 0.300000 9.806855 +2.400000 0.400000 9.291978 +2.400000 0.500000 8.797101 +2.400000 0.600000 8.322224 +2.400000 0.700000 7.867347 +2.400000 0.800000 7.432470 +2.400000 0.900000 7.017594 +2.400000 1.000000 6.622717 +2.400000 1.100000 6.247840 +2.400000 1.200000 5.892963 +2.400000 1.300000 5.558086 +2.400000 1.400000 5.243209 +2.400000 1.500000 4.948333 +2.400000 1.600000 4.673456 +2.400000 1.700000 4.418579 +2.400000 1.800000 4.183702 +2.400000 1.900000 3.968825 +2.400000 2.000000 3.773949 +2.400000 2.100000 3.599072 +2.400000 2.200000 3.444195 +2.400000 2.300000 3.309318 +2.400000 2.400000 3.194441 +2.400000 2.500000 3.099564 +2.400000 2.600000 3.024688 +2.400000 2.700000 2.969811 +2.400000 2.800000 2.934934 +2.400000 2.900000 2.920057 +2.400000 3.000000 2.925180 +2.400000 3.100000 2.950303 +2.400000 3.200000 2.995427 +2.400000 3.300000 3.060550 +2.400000 3.400000 3.145673 +2.400000 3.500000 3.250796 +2.400000 3.600000 3.375919 +2.400000 3.700000 3.521042 +2.400000 3.800000 3.686166 +2.400000 3.900000 3.871289 +2.400000 4.000000 4.076412 +2.400000 4.100000 4.301535 +2.400000 4.200000 4.546658 +2.400000 4.300000 4.811781 +2.400000 4.400000 5.096905 +2.400000 4.500000 5.402028 +2.400000 4.600000 5.727151 +2.400000 4.700000 6.072274 +2.400000 4.800000 6.437397 +2.400000 4.900000 6.822521 +2.400000 5.000000 7.227644 +2.400000 5.100000 7.652767 +2.400000 5.200000 8.097890 +2.400000 5.300000 8.563013 +2.400000 5.400000 9.048136 +2.400000 5.500000 9.553260 +2.400000 5.600000 10.078383 +2.400000 5.700000 10.623506 +2.400000 5.800000 11.188629 +2.400000 5.900000 11.773752 +2.400000 6.000000 12.378875 +2.400000 6.100000 13.003999 +2.400000 6.200000 13.649122 +2.400000 6.300000 14.314245 +2.400000 6.400000 14.999368 +2.400000 6.500000 15.704491 +2.400000 6.600000 16.429614 +2.400000 6.700000 17.174738 +2.400000 6.800000 17.939861 +2.400000 6.900000 18.724984 +2.400000 7.000000 19.530107 +2.400000 7.100000 20.355230 +2.400000 7.200000 21.200353 +2.400000 7.300000 22.065477 +2.400000 7.400000 22.950600 +2.400000 7.500000 23.855723 +2.400000 7.600000 24.780846 +2.400000 7.700000 25.725969 +2.400000 7.800000 26.691093 +2.400000 7.900000 27.676216 +2.400000 8.000000 28.681339 +2.400000 8.100000 29.706462 +2.400000 8.200000 30.751585 +2.400000 8.300000 31.816708 +2.400000 8.400000 32.901832 +2.400000 8.500000 34.006955 +2.400000 8.600000 35.132078 +2.400000 8.700000 36.277201 +2.400000 8.800000 37.442324 +2.400000 8.900000 38.627447 +2.400000 9.000000 39.832571 +2.400000 9.100000 41.057694 +2.400000 9.200000 42.302817 +2.400000 9.300000 43.567940 +2.400000 9.400000 44.853063 +2.400000 9.500000 46.158186 +2.400000 9.600000 47.483310 +2.400000 9.700000 48.828433 +2.400000 9.800000 50.193556 +2.400000 9.900000 51.578679 +2.400000 10.000000 52.983802 +2.400000 10.100000 54.408925 +2.400000 10.200000 55.854049 +2.400000 10.300000 57.319172 +2.400000 10.400000 58.804295 +2.400000 10.500000 60.309418 +2.400000 10.600000 61.834541 +2.400000 10.700000 63.379665 +2.400000 10.800000 64.944788 +2.400000 10.900000 66.529911 +2.400000 11.000000 68.135034 +2.400000 11.100000 69.760157 +2.400000 11.200000 71.405280 +2.400000 11.300000 73.070404 +2.400000 11.400000 74.755527 +2.400000 11.500000 76.460650 +2.400000 11.600000 78.185773 +2.400000 11.700000 79.930896 +2.400000 11.800000 81.696019 +2.400000 11.900000 83.481143 +2.400000 12.000000 85.286266 +2.400000 12.100000 87.111389 +2.400000 12.200000 88.956512 +2.400000 12.300000 90.821635 +2.400000 12.400000 92.706758 +2.400000 12.500000 94.611882 +2.400000 12.600000 96.537005 +2.400000 12.700000 98.482128 +2.400000 12.800000 100.447251 +2.400000 12.900000 102.432374 +2.400000 13.000000 104.437497 +2.400000 13.100000 106.462621 +2.400000 13.200000 108.507744 +2.400000 13.300000 110.572867 +2.400000 13.400000 112.657990 +2.400000 13.500000 114.763113 +2.400000 13.600000 116.888237 +2.400000 13.700000 119.033360 +2.400000 13.800000 121.198483 +2.400000 13.900000 123.383606 +2.400000 14.000000 125.588729 +2.400000 14.100000 127.813852 +2.400000 14.200000 130.058976 +2.400000 14.300000 132.324099 +2.400000 14.400000 134.609222 +2.400000 14.500000 136.914345 +2.400000 14.600000 139.239468 +2.400000 14.700000 141.584591 +2.400000 14.800000 143.949715 +2.400000 14.900000 146.334838 +2.400000 15.000000 148.739961 + +2.500000 -5.000000 63.593205 +2.500000 -4.900000 62.037499 +2.500000 -4.800000 60.501793 +2.500000 -4.700000 58.986087 +2.500000 -4.600000 57.490381 +2.500000 -4.500000 56.014675 +2.500000 -4.400000 54.558969 +2.500000 -4.300000 53.123263 +2.500000 -4.200000 51.707557 +2.500000 -4.100000 50.311851 +2.500000 -4.000000 48.936145 +2.500000 -3.900000 47.580439 +2.500000 -3.800000 46.244733 +2.500000 -3.700000 44.929028 +2.500000 -3.600000 43.633322 +2.500000 -3.500000 42.357616 +2.500000 -3.400000 41.101910 +2.500000 -3.300000 39.866204 +2.500000 -3.200000 38.650498 +2.500000 -3.100000 37.454792 +2.500000 -3.000000 36.279086 +2.500000 -2.900000 35.123380 +2.500000 -2.800000 33.987674 +2.500000 -2.700000 32.871968 +2.500000 -2.600000 31.776262 +2.500000 -2.500000 30.700557 +2.500000 -2.400000 29.644851 +2.500000 -2.300000 28.609145 +2.500000 -2.200000 27.593439 +2.500000 -2.100000 26.597733 +2.500000 -2.000000 25.622027 +2.500000 -1.900000 24.666321 +2.500000 -1.800000 23.730615 +2.500000 -1.700000 22.814909 +2.500000 -1.600000 21.919203 +2.500000 -1.500000 21.043497 +2.500000 -1.400000 20.187791 +2.500000 -1.300000 19.352085 +2.500000 -1.200000 18.536380 +2.500000 -1.100000 17.740674 +2.500000 -1.000000 16.964968 +2.500000 -0.900000 16.209262 +2.500000 -0.800000 15.473556 +2.500000 -0.700000 14.757850 +2.500000 -0.600000 14.062144 +2.500000 -0.500000 13.386438 +2.500000 -0.400000 12.730732 +2.500000 -0.300000 12.095026 +2.500000 -0.200000 11.479320 +2.500000 -0.100000 10.883614 +2.500000 -0.000000 10.307908 +2.500000 0.100000 9.752203 +2.500000 0.200000 9.216497 +2.500000 0.300000 8.700791 +2.500000 0.400000 8.205085 +2.500000 0.500000 7.729379 +2.500000 0.600000 7.273673 +2.500000 0.700000 6.837967 +2.500000 0.800000 6.422261 +2.500000 0.900000 6.026555 +2.500000 1.000000 5.650849 +2.500000 1.100000 5.295143 +2.500000 1.200000 4.959437 +2.500000 1.300000 4.643732 +2.500000 1.400000 4.348026 +2.500000 1.500000 4.072320 +2.500000 1.600000 3.816614 +2.500000 1.700000 3.580908 +2.500000 1.800000 3.365202 +2.500000 1.900000 3.169496 +2.500000 2.000000 2.993790 +2.500000 2.100000 2.838084 +2.500000 2.200000 2.702378 +2.500000 2.300000 2.586672 +2.500000 2.400000 2.490966 +2.500000 2.500000 2.415260 +2.500000 2.600000 2.359555 +2.500000 2.700000 2.323849 +2.500000 2.800000 2.308143 +2.500000 2.900000 2.312437 +2.500000 3.000000 2.336731 +2.500000 3.100000 2.381025 +2.500000 3.200000 2.445319 +2.500000 3.300000 2.529613 +2.500000 3.400000 2.633907 +2.500000 3.500000 2.758201 +2.500000 3.600000 2.902495 +2.500000 3.700000 3.066789 +2.500000 3.800000 3.251083 +2.500000 3.900000 3.455378 +2.500000 4.000000 3.679672 +2.500000 4.100000 3.923966 +2.500000 4.200000 4.188260 +2.500000 4.300000 4.472554 +2.500000 4.400000 4.776848 +2.500000 4.500000 5.101142 +2.500000 4.600000 5.445436 +2.500000 4.700000 5.809730 +2.500000 4.800000 6.194024 +2.500000 4.900000 6.598318 +2.500000 5.000000 7.022612 +2.500000 5.100000 7.466907 +2.500000 5.200000 7.931201 +2.500000 5.300000 8.415495 +2.500000 5.400000 8.919789 +2.500000 5.500000 9.444083 +2.500000 5.600000 9.988377 +2.500000 5.700000 10.552671 +2.500000 5.800000 11.136965 +2.500000 5.900000 11.741259 +2.500000 6.000000 12.365553 +2.500000 6.100000 13.009847 +2.500000 6.200000 13.674141 +2.500000 6.300000 14.358435 +2.500000 6.400000 15.062730 +2.500000 6.500000 15.787024 +2.500000 6.600000 16.531318 +2.500000 6.700000 17.295612 +2.500000 6.800000 18.079906 +2.500000 6.900000 18.884200 +2.500000 7.000000 19.708494 +2.500000 7.100000 20.552788 +2.500000 7.200000 21.417082 +2.500000 7.300000 22.301376 +2.500000 7.400000 23.205670 +2.500000 7.500000 24.129964 +2.500000 7.600000 25.074258 +2.500000 7.700000 26.038553 +2.500000 7.800000 27.022847 +2.500000 7.900000 28.027141 +2.500000 8.000000 29.051435 +2.500000 8.100000 30.095729 +2.500000 8.200000 31.160023 +2.500000 8.300000 32.244317 +2.500000 8.400000 33.348611 +2.500000 8.500000 34.472905 +2.500000 8.600000 35.617199 +2.500000 8.700000 36.781493 +2.500000 8.800000 37.965787 +2.500000 8.900000 39.170082 +2.500000 9.000000 40.394376 +2.500000 9.100000 41.638670 +2.500000 9.200000 42.902964 +2.500000 9.300000 44.187258 +2.500000 9.400000 45.491552 +2.500000 9.500000 46.815846 +2.500000 9.600000 48.160140 +2.500000 9.700000 49.524434 +2.500000 9.800000 50.908728 +2.500000 9.900000 52.313022 +2.500000 10.000000 53.737316 +2.500000 10.100000 55.181610 +2.500000 10.200000 56.645905 +2.500000 10.300000 58.130199 +2.500000 10.400000 59.634493 +2.500000 10.500000 61.158787 +2.500000 10.600000 62.703081 +2.500000 10.700000 64.267375 +2.500000 10.800000 65.851669 +2.500000 10.900000 67.455963 +2.500000 11.000000 69.080257 +2.500000 11.100000 70.724551 +2.500000 11.200000 72.388845 +2.500000 11.300000 74.073139 +2.500000 11.400000 75.777433 +2.500000 11.500000 77.501728 +2.500000 11.600000 79.246022 +2.500000 11.700000 81.010316 +2.500000 11.800000 82.794610 +2.500000 11.900000 84.598904 +2.500000 12.000000 86.423198 +2.500000 12.100000 88.267492 +2.500000 12.200000 90.131786 +2.500000 12.300000 92.016080 +2.500000 12.400000 93.920374 +2.500000 12.500000 95.844668 +2.500000 12.600000 97.788962 +2.500000 12.700000 99.753257 +2.500000 12.800000 101.737551 +2.500000 12.900000 103.741845 +2.500000 13.000000 105.766139 +2.500000 13.100000 107.810433 +2.500000 13.200000 109.874727 +2.500000 13.300000 111.959021 +2.500000 13.400000 114.063315 +2.500000 13.500000 116.187609 +2.500000 13.600000 118.331903 +2.500000 13.700000 120.496197 +2.500000 13.800000 122.680491 +2.500000 13.900000 124.884785 +2.500000 14.000000 127.109080 +2.500000 14.100000 129.353374 +2.500000 14.200000 131.617668 +2.500000 14.300000 133.901962 +2.500000 14.400000 136.206256 +2.500000 14.500000 138.530550 +2.500000 14.600000 140.874844 +2.500000 14.700000 143.239138 +2.500000 14.800000 145.623432 +2.500000 14.900000 148.027726 +2.500000 15.000000 150.452020 + +2.600000 -5.000000 61.606286 +2.600000 -4.900000 60.069234 +2.600000 -4.800000 58.552182 +2.600000 -4.700000 57.055131 +2.600000 -4.600000 55.578079 +2.600000 -4.500000 54.121027 +2.600000 -4.400000 52.683975 +2.600000 -4.300000 51.266924 +2.600000 -4.200000 49.869872 +2.600000 -4.100000 48.492820 +2.600000 -4.000000 47.135768 +2.600000 -3.900000 45.798716 +2.600000 -3.800000 44.481665 +2.600000 -3.700000 43.184613 +2.600000 -3.600000 41.907561 +2.600000 -3.500000 40.650509 +2.600000 -3.400000 39.413458 +2.600000 -3.300000 38.196406 +2.600000 -3.200000 36.999354 +2.600000 -3.100000 35.822302 +2.600000 -3.000000 34.665251 +2.600000 -2.900000 33.528199 +2.600000 -2.800000 32.411147 +2.600000 -2.700000 31.314095 +2.600000 -2.600000 30.237044 +2.600000 -2.500000 29.179992 +2.600000 -2.400000 28.142940 +2.600000 -2.300000 27.125888 +2.600000 -2.200000 26.128837 +2.600000 -2.100000 25.151785 +2.600000 -2.000000 24.194733 +2.600000 -1.900000 23.257681 +2.600000 -1.800000 22.340630 +2.600000 -1.700000 21.443578 +2.600000 -1.600000 20.566526 +2.600000 -1.500000 19.709474 +2.600000 -1.400000 18.872423 +2.600000 -1.300000 18.055371 +2.600000 -1.200000 17.258319 +2.600000 -1.100000 16.481267 +2.600000 -1.000000 15.724216 +2.600000 -0.900000 14.987164 +2.600000 -0.800000 14.270112 +2.600000 -0.700000 13.573060 +2.600000 -0.600000 12.896009 +2.600000 -0.500000 12.238957 +2.600000 -0.400000 11.601905 +2.600000 -0.300000 10.984853 +2.600000 -0.200000 10.387802 +2.600000 -0.100000 9.810750 +2.600000 -0.000000 9.253698 +2.600000 0.100000 8.716646 +2.600000 0.200000 8.199595 +2.600000 0.300000 7.702543 +2.600000 0.400000 7.225491 +2.600000 0.500000 6.768439 +2.600000 0.600000 6.331388 +2.600000 0.700000 5.914336 +2.600000 0.800000 5.517284 +2.600000 0.900000 5.140232 +2.600000 1.000000 4.783181 +2.600000 1.100000 4.446129 +2.600000 1.200000 4.129077 +2.600000 1.300000 3.832025 +2.600000 1.400000 3.554974 +2.600000 1.500000 3.297922 +2.600000 1.600000 3.060870 +2.600000 1.700000 2.843818 +2.600000 1.800000 2.646767 +2.600000 1.900000 2.469715 +2.600000 2.000000 2.312663 +2.600000 2.100000 2.175611 +2.600000 2.200000 2.058560 +2.600000 2.300000 1.961508 +2.600000 2.400000 1.884456 +2.600000 2.500000 1.827404 +2.600000 2.600000 1.790353 +2.600000 2.700000 1.773301 +2.600000 2.800000 1.776249 +2.600000 2.900000 1.799197 +2.600000 3.000000 1.842146 +2.600000 3.100000 1.905094 +2.600000 3.200000 1.988042 +2.600000 3.300000 2.090990 +2.600000 3.400000 2.213939 +2.600000 3.500000 2.356887 +2.600000 3.600000 2.519835 +2.600000 3.700000 2.702783 +2.600000 3.800000 2.905732 +2.600000 3.900000 3.128680 +2.600000 4.000000 3.371628 +2.600000 4.100000 3.634576 +2.600000 4.200000 3.917525 +2.600000 4.300000 4.220473 +2.600000 4.400000 4.543421 +2.600000 4.500000 4.886369 +2.600000 4.600000 5.249318 +2.600000 4.700000 5.632266 +2.600000 4.800000 6.035214 +2.600000 4.900000 6.458162 +2.600000 5.000000 6.901111 +2.600000 5.100000 7.364059 +2.600000 5.200000 7.847007 +2.600000 5.300000 8.349955 +2.600000 5.400000 8.872904 +2.600000 5.500000 9.415852 +2.600000 5.600000 9.978800 +2.600000 5.700000 10.561748 +2.600000 5.800000 11.164697 +2.600000 5.900000 11.787645 +2.600000 6.000000 12.430593 +2.600000 6.100000 13.093541 +2.600000 6.200000 13.776490 +2.600000 6.300000 14.479438 +2.600000 6.400000 15.202386 +2.600000 6.500000 15.945334 +2.600000 6.600000 16.708283 +2.600000 6.700000 17.491231 +2.600000 6.800000 18.294179 +2.600000 6.900000 19.117127 +2.600000 7.000000 19.960076 +2.600000 7.100000 20.823024 +2.600000 7.200000 21.705972 +2.600000 7.300000 22.608920 +2.600000 7.400000 23.531868 +2.600000 7.500000 24.474817 +2.600000 7.600000 25.437765 +2.600000 7.700000 26.420713 +2.600000 7.800000 27.423661 +2.600000 7.900000 28.446610 +2.600000 8.000000 29.489558 +2.600000 8.100000 30.552506 +2.600000 8.200000 31.635454 +2.600000 8.300000 32.738403 +2.600000 8.400000 33.861351 +2.600000 8.500000 35.004299 +2.600000 8.600000 36.167247 +2.600000 8.700000 37.350196 +2.600000 8.800000 38.553144 +2.600000 8.900000 39.776092 +2.600000 9.000000 41.019040 +2.600000 9.100000 42.281989 +2.600000 9.200000 43.564937 +2.600000 9.300000 44.867885 +2.600000 9.400000 46.190833 +2.600000 9.500000 47.533782 +2.600000 9.600000 48.896730 +2.600000 9.700000 50.279678 +2.600000 9.800000 51.682626 +2.600000 9.900000 53.105575 +2.600000 10.000000 54.548523 +2.600000 10.100000 56.011471 +2.600000 10.200000 57.494419 +2.600000 10.300000 58.997368 +2.600000 10.400000 60.520316 +2.600000 10.500000 62.063264 +2.600000 10.600000 63.626212 +2.600000 10.700000 65.209161 +2.600000 10.800000 66.812109 +2.600000 10.900000 68.435057 +2.600000 11.000000 70.078005 +2.600000 11.100000 71.740954 +2.600000 11.200000 73.423902 +2.600000 11.300000 75.126850 +2.600000 11.400000 76.849798 +2.600000 11.500000 78.592747 +2.600000 11.600000 80.355695 +2.600000 11.700000 82.138643 +2.600000 11.800000 83.941591 +2.600000 11.900000 85.764540 +2.600000 12.000000 87.607488 +2.600000 12.100000 89.470436 +2.600000 12.200000 91.353384 +2.600000 12.300000 93.256333 +2.600000 12.400000 95.179281 +2.600000 12.500000 97.122229 +2.600000 12.600000 99.085177 +2.600000 12.700000 101.068126 +2.600000 12.800000 103.071074 +2.600000 12.900000 105.094022 +2.600000 13.000000 107.136970 +2.600000 13.100000 109.199919 +2.600000 13.200000 111.282867 +2.600000 13.300000 113.385815 +2.600000 13.400000 115.508763 +2.600000 13.500000 117.651712 +2.600000 13.600000 119.814660 +2.600000 13.700000 121.997608 +2.600000 13.800000 124.200556 +2.600000 13.900000 126.423505 +2.600000 14.000000 128.666453 +2.600000 14.100000 130.929401 +2.600000 14.200000 133.212349 +2.600000 14.300000 135.515298 +2.600000 14.400000 137.838246 +2.600000 14.500000 140.181194 +2.600000 14.600000 142.544142 +2.600000 14.700000 144.927091 +2.600000 14.800000 147.330039 +2.600000 14.900000 149.752987 +2.600000 15.000000 152.195935 + +2.700000 -5.000000 59.758473 +2.700000 -4.900000 58.239558 +2.700000 -4.800000 56.740644 +2.700000 -4.700000 55.261730 +2.700000 -4.600000 53.802815 +2.700000 -4.500000 52.363901 +2.700000 -4.400000 50.944987 +2.700000 -4.300000 49.546072 +2.700000 -4.200000 48.167158 +2.700000 -4.100000 46.808244 +2.700000 -4.000000 45.469329 +2.700000 -3.900000 44.150415 +2.700000 -3.800000 42.851501 +2.700000 -3.700000 41.572586 +2.700000 -3.600000 40.313672 +2.700000 -3.500000 39.074758 +2.700000 -3.400000 37.855843 +2.700000 -3.300000 36.656929 +2.700000 -3.200000 35.478015 +2.700000 -3.100000 34.319100 +2.700000 -3.000000 33.180186 +2.700000 -2.900000 32.061272 +2.700000 -2.800000 30.962357 +2.700000 -2.700000 29.883443 +2.700000 -2.600000 28.824529 +2.700000 -2.500000 27.785614 +2.700000 -2.400000 26.766700 +2.700000 -2.300000 25.767786 +2.700000 -2.200000 24.788872 +2.700000 -2.100000 23.829957 +2.700000 -2.000000 22.891043 +2.700000 -1.900000 21.972129 +2.700000 -1.800000 21.073214 +2.700000 -1.700000 20.194300 +2.700000 -1.600000 19.335386 +2.700000 -1.500000 18.496471 +2.700000 -1.400000 17.677557 +2.700000 -1.300000 16.878643 +2.700000 -1.200000 16.099728 +2.700000 -1.100000 15.340814 +2.700000 -1.000000 14.601900 +2.700000 -0.900000 13.882985 +2.700000 -0.800000 13.184071 +2.700000 -0.700000 12.505157 +2.700000 -0.600000 11.846242 +2.700000 -0.500000 11.207328 +2.700000 -0.400000 10.588414 +2.700000 -0.300000 9.989499 +2.700000 -0.200000 9.410585 +2.700000 -0.100000 8.851671 +2.700000 -0.000000 8.312756 +2.700000 0.100000 7.793842 +2.700000 0.200000 7.294928 +2.700000 0.300000 6.816013 +2.700000 0.400000 6.357099 +2.700000 0.500000 5.918185 +2.700000 0.600000 5.499271 +2.700000 0.700000 5.100356 +2.700000 0.800000 4.721442 +2.700000 0.900000 4.362528 +2.700000 1.000000 4.023613 +2.700000 1.100000 3.704699 +2.700000 1.200000 3.405785 +2.700000 1.300000 3.126870 +2.700000 1.400000 2.867956 +2.700000 1.500000 2.629042 +2.700000 1.600000 2.410127 +2.700000 1.700000 2.211213 +2.700000 1.800000 2.032299 +2.700000 1.900000 1.873384 +2.700000 2.000000 1.734470 +2.700000 2.100000 1.615556 +2.700000 2.200000 1.516641 +2.700000 2.300000 1.437727 +2.700000 2.400000 1.378813 +2.700000 2.500000 1.339898 +2.700000 2.600000 1.320984 +2.700000 2.700000 1.322070 +2.700000 2.800000 1.343155 +2.700000 2.900000 1.384241 +2.700000 3.000000 1.445327 +2.700000 3.100000 1.526412 +2.700000 3.200000 1.627498 +2.700000 3.300000 1.748584 +2.700000 3.400000 1.889670 +2.700000 3.500000 2.050755 +2.700000 3.600000 2.231841 +2.700000 3.700000 2.432927 +2.700000 3.800000 2.654012 +2.700000 3.900000 2.895098 +2.700000 4.000000 3.156184 +2.700000 4.100000 3.437269 +2.700000 4.200000 3.738355 +2.700000 4.300000 4.059441 +2.700000 4.400000 4.400526 +2.700000 4.500000 4.761612 +2.700000 4.600000 5.142698 +2.700000 4.700000 5.543783 +2.700000 4.800000 5.964869 +2.700000 4.900000 6.405955 +2.700000 5.000000 6.867040 +2.700000 5.100000 7.348126 +2.700000 5.200000 7.849212 +2.700000 5.300000 8.370297 +2.700000 5.400000 8.911383 +2.700000 5.500000 9.472469 +2.700000 5.600000 10.053554 +2.700000 5.700000 10.654640 +2.700000 5.800000 11.275726 +2.700000 5.900000 11.916811 +2.700000 6.000000 12.577897 +2.700000 6.100000 13.258983 +2.700000 6.200000 13.960069 +2.700000 6.300000 14.681154 +2.700000 6.400000 15.422240 +2.700000 6.500000 16.183326 +2.700000 6.600000 16.964411 +2.700000 6.700000 17.765497 +2.700000 6.800000 18.586583 +2.700000 6.900000 19.427668 +2.700000 7.000000 20.288754 +2.700000 7.100000 21.169840 +2.700000 7.200000 22.070925 +2.700000 7.300000 22.992011 +2.700000 7.400000 23.933097 +2.700000 7.500000 24.894182 +2.700000 7.600000 25.875268 +2.700000 7.700000 26.876354 +2.700000 7.800000 27.897439 +2.700000 7.900000 28.938525 +2.700000 8.000000 29.999611 +2.700000 8.100000 31.080696 +2.700000 8.200000 32.181782 +2.700000 8.300000 33.302868 +2.700000 8.400000 34.443953 +2.700000 8.500000 35.605039 +2.700000 8.600000 36.786125 +2.700000 8.700000 37.987210 +2.700000 8.800000 39.208296 +2.700000 8.900000 40.449382 +2.700000 9.000000 41.710467 +2.700000 9.100000 42.991553 +2.700000 9.200000 44.292639 +2.700000 9.300000 45.613725 +2.700000 9.400000 46.954810 +2.700000 9.500000 48.315896 +2.700000 9.600000 49.696982 +2.700000 9.700000 51.098067 +2.700000 9.800000 52.519153 +2.700000 9.900000 53.960239 +2.700000 10.000000 55.421324 +2.700000 10.100000 56.902410 +2.700000 10.200000 58.403496 +2.700000 10.300000 59.924581 +2.700000 10.400000 61.465667 +2.700000 10.500000 63.026753 +2.700000 10.600000 64.607838 +2.700000 10.700000 66.208924 +2.700000 10.800000 67.830010 +2.700000 10.900000 69.471095 +2.700000 11.000000 71.132181 +2.700000 11.100000 72.813267 +2.700000 11.200000 74.514352 +2.700000 11.300000 76.235438 +2.700000 11.400000 77.976524 +2.700000 11.500000 79.737609 +2.700000 11.600000 81.518695 +2.700000 11.700000 83.319781 +2.700000 11.800000 85.140866 +2.700000 11.900000 86.981952 +2.700000 12.000000 88.843038 +2.700000 12.100000 90.724124 +2.700000 12.200000 92.625209 +2.700000 12.300000 94.546295 +2.700000 12.400000 96.487381 +2.700000 12.500000 98.448466 +2.700000 12.600000 100.429552 +2.700000 12.700000 102.430638 +2.700000 12.800000 104.451723 +2.700000 12.900000 106.492809 +2.700000 13.000000 108.553895 +2.700000 13.100000 110.634980 +2.700000 13.200000 112.736066 +2.700000 13.300000 114.857152 +2.700000 13.400000 116.998237 +2.700000 13.500000 119.159323 +2.700000 13.600000 121.340409 +2.700000 13.700000 123.541494 +2.700000 13.800000 125.762580 +2.700000 13.900000 128.003666 +2.700000 14.000000 130.264751 +2.700000 14.100000 132.545837 +2.700000 14.200000 134.846923 +2.700000 14.300000 137.168008 +2.700000 14.400000 139.509094 +2.700000 14.500000 141.870180 +2.700000 14.600000 144.251265 +2.700000 14.700000 146.652351 +2.700000 14.800000 149.073437 +2.700000 14.900000 151.514523 +2.700000 15.000000 153.975608 + +2.800000 -5.000000 58.052886 +2.800000 -4.900000 56.551592 +2.800000 -4.800000 55.070299 +2.800000 -4.700000 53.609005 +2.800000 -4.600000 52.167711 +2.800000 -4.500000 50.746418 +2.800000 -4.400000 49.345124 +2.800000 -4.300000 47.963830 +2.800000 -4.200000 46.602537 +2.800000 -4.100000 45.261243 +2.800000 -4.000000 43.939949 +2.800000 -3.900000 42.638656 +2.800000 -3.800000 41.357362 +2.800000 -3.700000 40.096069 +2.800000 -3.600000 38.854775 +2.800000 -3.500000 37.633481 +2.800000 -3.400000 36.432188 +2.800000 -3.300000 35.250894 +2.800000 -3.200000 34.089600 +2.800000 -3.100000 32.948307 +2.800000 -3.000000 31.827013 +2.800000 -2.900000 30.725720 +2.800000 -2.800000 29.644426 +2.800000 -2.700000 28.583132 +2.800000 -2.600000 27.541839 +2.800000 -2.500000 26.520545 +2.800000 -2.400000 25.519251 +2.800000 -2.300000 24.537958 +2.800000 -2.200000 23.576664 +2.800000 -2.100000 22.635371 +2.800000 -2.000000 21.714077 +2.800000 -1.900000 20.812783 +2.800000 -1.800000 19.931490 +2.800000 -1.700000 19.070196 +2.800000 -1.600000 18.228902 +2.800000 -1.500000 17.407609 +2.800000 -1.400000 16.606315 +2.800000 -1.300000 15.825022 +2.800000 -1.200000 15.063728 +2.800000 -1.100000 14.322434 +2.800000 -1.000000 13.601141 +2.800000 -0.900000 12.899847 +2.800000 -0.800000 12.218553 +2.800000 -0.700000 11.557260 +2.800000 -0.600000 10.915966 +2.800000 -0.500000 10.294672 +2.800000 -0.400000 9.693379 +2.800000 -0.300000 9.112085 +2.800000 -0.200000 8.550792 +2.800000 -0.100000 8.009498 +2.800000 -0.000000 7.488204 +2.800000 0.100000 6.986911 +2.800000 0.200000 6.505617 +2.800000 0.300000 6.044323 +2.800000 0.400000 5.603030 +2.800000 0.500000 5.181736 +2.800000 0.600000 4.780443 +2.800000 0.700000 4.399149 +2.800000 0.800000 4.037855 +2.800000 0.900000 3.696562 +2.800000 1.000000 3.375268 +2.800000 1.100000 3.073974 +2.800000 1.200000 2.792681 +2.800000 1.300000 2.531387 +2.800000 1.400000 2.290094 +2.800000 1.500000 2.068800 +2.800000 1.600000 1.867506 +2.800000 1.700000 1.686213 +2.800000 1.800000 1.524919 +2.800000 1.900000 1.383625 +2.800000 2.000000 1.262332 +2.800000 2.100000 1.161038 +2.800000 2.200000 1.079744 +2.800000 2.300000 1.018451 +2.800000 2.400000 0.977157 +2.800000 2.500000 0.955864 +2.800000 2.600000 0.954570 +2.800000 2.700000 0.973276 +2.800000 2.800000 1.011983 +2.800000 2.900000 1.070689 +2.800000 3.000000 1.149395 +2.800000 3.100000 1.248102 +2.800000 3.200000 1.366808 +2.800000 3.300000 1.505515 +2.800000 3.400000 1.664221 +2.800000 3.500000 1.842927 +2.800000 3.600000 2.041634 +2.800000 3.700000 2.260340 +2.800000 3.800000 2.499046 +2.800000 3.900000 2.757753 +2.800000 4.000000 3.036459 +2.800000 4.100000 3.335166 +2.800000 4.200000 3.653872 +2.800000 4.300000 3.992578 +2.800000 4.400000 4.351285 +2.800000 4.500000 4.729991 +2.800000 4.600000 5.128697 +2.800000 4.700000 5.547404 +2.800000 4.800000 5.986110 +2.800000 4.900000 6.444817 +2.800000 5.000000 6.923523 +2.800000 5.100000 7.422229 +2.800000 5.200000 7.940936 +2.800000 5.300000 8.479642 +2.800000 5.400000 9.038348 +2.800000 5.500000 9.617055 +2.800000 5.600000 10.215761 +2.800000 5.700000 10.834467 +2.800000 5.800000 11.473174 +2.800000 5.900000 12.131880 +2.800000 6.000000 12.810587 +2.800000 6.100000 13.509293 +2.800000 6.200000 14.227999 +2.800000 6.300000 14.966706 +2.800000 6.400000 15.725412 +2.800000 6.500000 16.504118 +2.800000 6.600000 17.302825 +2.800000 6.700000 18.121531 +2.800000 6.800000 18.960238 +2.800000 6.900000 19.818944 +2.800000 7.000000 20.697650 +2.800000 7.100000 21.596357 +2.800000 7.200000 22.515063 +2.800000 7.300000 23.453769 +2.800000 7.400000 24.412476 +2.800000 7.500000 25.391182 +2.800000 7.600000 26.389889 +2.800000 7.700000 27.408595 +2.800000 7.800000 28.447301 +2.800000 7.900000 29.506008 +2.800000 8.000000 30.584714 +2.800000 8.100000 31.683420 +2.800000 8.200000 32.802127 +2.800000 8.300000 33.940833 +2.800000 8.400000 35.099539 +2.800000 8.500000 36.278246 +2.800000 8.600000 37.476952 +2.800000 8.700000 38.695659 +2.800000 8.800000 39.934365 +2.800000 8.900000 41.193071 +2.800000 9.000000 42.471778 +2.800000 9.100000 43.770484 +2.800000 9.200000 45.089190 +2.800000 9.300000 46.427897 +2.800000 9.400000 47.786603 +2.800000 9.500000 49.165310 +2.800000 9.600000 50.564016 +2.800000 9.700000 51.982722 +2.800000 9.800000 53.421429 +2.800000 9.900000 54.880135 +2.800000 10.000000 56.358841 +2.800000 10.100000 57.857548 +2.800000 10.200000 59.376254 +2.800000 10.300000 60.914961 +2.800000 10.400000 62.473667 +2.800000 10.500000 64.052373 +2.800000 10.600000 65.651080 +2.800000 10.700000 67.269786 +2.800000 10.800000 68.908492 +2.800000 10.900000 70.567199 +2.800000 11.000000 72.245905 +2.800000 11.100000 73.944612 +2.800000 11.200000 75.663318 +2.800000 11.300000 77.402024 +2.800000 11.400000 79.160731 +2.800000 11.500000 80.939437 +2.800000 11.600000 82.738143 +2.800000 11.700000 84.556850 +2.800000 11.800000 86.395556 +2.800000 11.900000 88.254262 +2.800000 12.000000 90.132969 +2.800000 12.100000 92.031675 +2.800000 12.200000 93.950382 +2.800000 12.300000 95.889088 +2.800000 12.400000 97.847794 +2.800000 12.500000 99.826501 +2.800000 12.600000 101.825207 +2.800000 12.700000 103.843913 +2.800000 12.800000 105.882620 +2.800000 12.900000 107.941326 +2.800000 13.000000 110.020033 +2.800000 13.100000 112.118739 +2.800000 13.200000 114.237445 +2.800000 13.300000 116.376152 +2.800000 13.400000 118.534858 +2.800000 13.500000 120.713564 +2.800000 13.600000 122.912271 +2.800000 13.700000 125.130977 +2.800000 13.800000 127.369684 +2.800000 13.900000 129.628390 +2.800000 14.000000 131.907096 +2.800000 14.100000 134.205803 +2.800000 14.200000 136.524509 +2.800000 14.300000 138.863215 +2.800000 14.400000 141.221922 +2.800000 14.500000 143.600628 +2.800000 14.600000 145.999334 +2.800000 14.700000 148.418041 +2.800000 14.800000 150.856747 +2.800000 14.900000 153.315454 +2.800000 15.000000 155.794160 + +2.900000 -5.000000 56.491820 +2.900000 -4.900000 55.007630 +2.900000 -4.800000 53.543441 +2.900000 -4.700000 52.099251 +2.900000 -4.600000 50.675061 +2.900000 -4.500000 49.270872 +2.900000 -4.400000 47.886682 +2.900000 -4.300000 46.522492 +2.900000 -4.200000 45.178303 +2.900000 -4.100000 43.854113 +2.900000 -4.000000 42.549923 +2.900000 -3.900000 41.265733 +2.900000 -3.800000 40.001544 +2.900000 -3.700000 38.757354 +2.900000 -3.600000 37.533164 +2.900000 -3.500000 36.328975 +2.900000 -3.400000 35.144785 +2.900000 -3.300000 33.980595 +2.900000 -3.200000 32.836406 +2.900000 -3.100000 31.712216 +2.900000 -3.000000 30.608026 +2.900000 -2.900000 29.523837 +2.900000 -2.800000 28.459647 +2.900000 -2.700000 27.415457 +2.900000 -2.600000 26.391268 +2.900000 -2.500000 25.387078 +2.900000 -2.400000 24.402888 +2.900000 -2.300000 23.438699 +2.900000 -2.200000 22.494509 +2.900000 -2.100000 21.570319 +2.900000 -2.000000 20.666130 +2.900000 -1.900000 19.781940 +2.900000 -1.800000 18.917750 +2.900000 -1.700000 18.073561 +2.900000 -1.600000 17.249371 +2.900000 -1.500000 16.445181 +2.900000 -1.400000 15.660992 +2.900000 -1.300000 14.896802 +2.900000 -1.200000 14.152612 +2.900000 -1.100000 13.428423 +2.900000 -1.000000 12.724233 +2.900000 -0.900000 12.040043 +2.900000 -0.800000 11.375854 +2.900000 -0.700000 10.731664 +2.900000 -0.600000 10.107474 +2.900000 -0.500000 9.503285 +2.900000 -0.400000 8.919095 +2.900000 -0.300000 8.354905 +2.900000 -0.200000 7.810716 +2.900000 -0.100000 7.286526 +2.900000 -0.000000 6.782336 +2.900000 0.100000 6.298147 +2.900000 0.200000 5.833957 +2.900000 0.300000 5.389767 +2.900000 0.400000 4.965577 +2.900000 0.500000 4.561388 +2.900000 0.600000 4.177198 +2.900000 0.700000 3.813008 +2.900000 0.800000 3.468819 +2.900000 0.900000 3.144629 +2.900000 1.000000 2.840439 +2.900000 1.100000 2.556250 +2.900000 1.200000 2.292060 +2.900000 1.300000 2.047870 +2.900000 1.400000 1.823681 +2.900000 1.500000 1.619491 +2.900000 1.600000 1.435301 +2.900000 1.700000 1.271112 +2.900000 1.800000 1.126922 +2.900000 1.900000 1.002732 +2.900000 2.000000 0.898543 +2.900000 2.100000 0.814353 +2.900000 2.200000 0.750163 +2.900000 2.300000 0.705974 +2.900000 2.400000 0.681784 +2.900000 2.500000 0.677594 +2.900000 2.600000 0.693405 +2.900000 2.700000 0.729215 +2.900000 2.800000 0.785025 +2.900000 2.900000 0.860836 +2.900000 3.000000 0.956646 +2.900000 3.100000 1.072456 +2.900000 3.200000 1.208267 +2.900000 3.300000 1.364077 +2.900000 3.400000 1.539887 +2.900000 3.500000 1.735698 +2.900000 3.600000 1.951508 +2.900000 3.700000 2.187318 +2.900000 3.800000 2.443129 +2.900000 3.900000 2.718939 +2.900000 4.000000 3.014749 +2.900000 4.100000 3.330560 +2.900000 4.200000 3.666370 +2.900000 4.300000 4.022180 +2.900000 4.400000 4.397991 +2.900000 4.500000 4.793801 +2.900000 4.600000 5.209611 +2.900000 4.700000 5.645421 +2.900000 4.800000 6.101232 +2.900000 4.900000 6.577042 +2.900000 5.000000 7.072852 +2.900000 5.100000 7.588663 +2.900000 5.200000 8.124473 +2.900000 5.300000 8.680283 +2.900000 5.400000 9.256094 +2.900000 5.500000 9.851904 +2.900000 5.600000 10.467714 +2.900000 5.700000 11.103525 +2.900000 5.800000 11.759335 +2.900000 5.900000 12.435145 +2.900000 6.000000 13.130956 +2.900000 6.100000 13.846766 +2.900000 6.200000 14.582576 +2.900000 6.300000 15.338387 +2.900000 6.400000 16.114197 +2.900000 6.500000 16.910007 +2.900000 6.600000 17.725818 +2.900000 6.700000 18.561628 +2.900000 6.800000 19.417438 +2.900000 6.900000 20.293249 +2.900000 7.000000 21.189059 +2.900000 7.100000 22.104869 +2.900000 7.200000 23.040680 +2.900000 7.300000 23.996490 +2.900000 7.400000 24.972300 +2.900000 7.500000 25.968111 +2.900000 7.600000 26.983921 +2.900000 7.700000 28.019731 +2.900000 7.800000 29.075542 +2.900000 7.900000 30.151352 +2.900000 8.000000 31.247162 +2.900000 8.100000 32.362973 +2.900000 8.200000 33.498783 +2.900000 8.300000 34.654593 +2.900000 8.400000 35.830404 +2.900000 8.500000 37.026214 +2.900000 8.600000 38.242024 +2.900000 8.700000 39.477835 +2.900000 8.800000 40.733645 +2.900000 8.900000 42.009455 +2.900000 9.000000 43.305265 +2.900000 9.100000 44.621076 +2.900000 9.200000 45.956886 +2.900000 9.300000 47.312696 +2.900000 9.400000 48.688507 +2.900000 9.500000 50.084317 +2.900000 9.600000 51.500127 +2.900000 9.700000 52.935938 +2.900000 9.800000 54.391748 +2.900000 9.900000 55.867558 +2.900000 10.000000 57.363369 +2.900000 10.100000 58.879179 +2.900000 10.200000 60.414989 +2.900000 10.300000 61.970800 +2.900000 10.400000 63.546610 +2.900000 10.500000 65.142420 +2.900000 10.600000 66.758231 +2.900000 10.700000 68.394041 +2.900000 10.800000 70.049851 +2.900000 10.900000 71.725662 +2.900000 11.000000 73.421472 +2.900000 11.100000 75.137282 +2.900000 11.200000 76.873093 +2.900000 11.300000 78.628903 +2.900000 11.400000 80.404713 +2.900000 11.500000 82.200524 +2.900000 11.600000 84.016334 +2.900000 11.700000 85.852144 +2.900000 11.800000 87.707955 +2.900000 11.900000 89.583765 +2.900000 12.000000 91.479575 +2.900000 12.100000 93.395386 +2.900000 12.200000 95.331196 +2.900000 12.300000 97.287006 +2.900000 12.400000 99.262817 +2.900000 12.500000 101.258627 +2.900000 12.600000 103.274437 +2.900000 12.700000 105.310248 +2.900000 12.800000 107.366058 +2.900000 12.900000 109.441868 +2.900000 13.000000 111.537679 +2.900000 13.100000 113.653489 +2.900000 13.200000 115.789299 +2.900000 13.300000 117.945109 +2.900000 13.400000 120.120920 +2.900000 13.500000 122.316730 +2.900000 13.600000 124.532540 +2.900000 13.700000 126.768351 +2.900000 13.800000 129.024161 +2.900000 13.900000 131.299971 +2.900000 14.000000 133.595782 +2.900000 14.100000 135.911592 +2.900000 14.200000 138.247402 +2.900000 14.300000 140.603213 +2.900000 14.400000 142.979023 +2.900000 14.500000 145.374833 +2.900000 14.600000 147.790644 +2.900000 14.700000 150.226454 +2.900000 14.800000 152.682264 +2.900000 14.900000 155.158075 +2.900000 15.000000 157.653885 + +3.000000 -5.000000 55.076706 +3.000000 -4.900000 53.609104 +3.000000 -4.800000 52.161501 +3.000000 -4.700000 50.733899 +3.000000 -4.600000 49.326296 +3.000000 -4.500000 47.938694 +3.000000 -4.400000 46.571091 +3.000000 -4.300000 45.223489 +3.000000 -4.200000 43.895886 +3.000000 -4.100000 42.588284 +3.000000 -4.000000 41.300682 +3.000000 -3.900000 40.033079 +3.000000 -3.800000 38.785477 +3.000000 -3.700000 37.557874 +3.000000 -3.600000 36.350272 +3.000000 -3.500000 35.162669 +3.000000 -3.400000 33.995067 +3.000000 -3.300000 32.847464 +3.000000 -3.200000 31.719862 +3.000000 -3.100000 30.612259 +3.000000 -3.000000 29.524657 +3.000000 -2.900000 28.457055 +3.000000 -2.800000 27.409452 +3.000000 -2.700000 26.381850 +3.000000 -2.600000 25.374247 +3.000000 -2.500000 24.386645 +3.000000 -2.400000 23.419042 +3.000000 -2.300000 22.471440 +3.000000 -2.200000 21.543837 +3.000000 -2.100000 20.636235 +3.000000 -2.000000 19.748632 +3.000000 -1.900000 18.881030 +3.000000 -1.800000 18.033427 +3.000000 -1.700000 17.205825 +3.000000 -1.600000 16.398223 +3.000000 -1.500000 15.610620 +3.000000 -1.400000 14.843018 +3.000000 -1.300000 14.095415 +3.000000 -1.200000 13.367813 +3.000000 -1.100000 12.660210 +3.000000 -1.000000 11.972608 +3.000000 -0.900000 11.305005 +3.000000 -0.800000 10.657403 +3.000000 -0.700000 10.029800 +3.000000 -0.600000 9.422198 +3.000000 -0.500000 8.834596 +3.000000 -0.400000 8.266993 +3.000000 -0.300000 7.719391 +3.000000 -0.200000 7.191788 +3.000000 -0.100000 6.684186 +3.000000 -0.000000 6.196583 +3.000000 0.100000 5.728981 +3.000000 0.200000 5.281378 +3.000000 0.300000 4.853776 +3.000000 0.400000 4.446173 +3.000000 0.500000 4.058571 +3.000000 0.600000 3.690968 +3.000000 0.700000 3.343366 +3.000000 0.800000 3.015764 +3.000000 0.900000 2.708161 +3.000000 1.000000 2.420559 +3.000000 1.100000 2.152956 +3.000000 1.200000 1.905354 +3.000000 1.300000 1.677751 +3.000000 1.400000 1.470149 +3.000000 1.500000 1.282546 +3.000000 1.600000 1.114944 +3.000000 1.700000 0.967341 +3.000000 1.800000 0.839739 +3.000000 1.900000 0.732137 +3.000000 2.000000 0.644534 +3.000000 2.100000 0.576932 +3.000000 2.200000 0.529329 +3.000000 2.300000 0.501727 +3.000000 2.400000 0.494124 +3.000000 2.500000 0.506522 +3.000000 2.600000 0.538919 +3.000000 2.700000 0.591317 +3.000000 2.800000 0.663714 +3.000000 2.900000 0.756112 +3.000000 3.000000 0.868509 +3.000000 3.100000 1.000907 +3.000000 3.200000 1.153305 +3.000000 3.300000 1.325702 +3.000000 3.400000 1.518100 +3.000000 3.500000 1.730497 +3.000000 3.600000 1.962895 +3.000000 3.700000 2.215292 +3.000000 3.800000 2.487690 +3.000000 3.900000 2.780087 +3.000000 4.000000 3.092485 +3.000000 4.100000 3.424882 +3.000000 4.200000 3.777280 +3.000000 4.300000 4.149678 +3.000000 4.400000 4.542075 +3.000000 4.500000 4.954473 +3.000000 4.600000 5.386870 +3.000000 4.700000 5.839268 +3.000000 4.800000 6.311665 +3.000000 4.900000 6.804063 +3.000000 5.000000 7.316460 +3.000000 5.100000 7.848858 +3.000000 5.200000 8.401255 +3.000000 5.300000 8.973653 +3.000000 5.400000 9.566051 +3.000000 5.500000 10.178448 +3.000000 5.600000 10.810846 +3.000000 5.700000 11.463243 +3.000000 5.800000 12.135641 +3.000000 5.900000 12.828038 +3.000000 6.000000 13.540436 +3.000000 6.100000 14.272833 +3.000000 6.200000 15.025231 +3.000000 6.300000 15.797628 +3.000000 6.400000 16.590026 +3.000000 6.500000 17.402423 +3.000000 6.600000 18.234821 +3.000000 6.700000 19.087219 +3.000000 6.800000 19.959616 +3.000000 6.900000 20.852014 +3.000000 7.000000 21.764411 +3.000000 7.100000 22.696809 +3.000000 7.200000 23.649206 +3.000000 7.300000 24.621604 +3.000000 7.400000 25.614001 +3.000000 7.500000 26.626399 +3.000000 7.600000 27.658796 +3.000000 7.700000 28.711194 +3.000000 7.800000 29.783592 +3.000000 7.900000 30.875989 +3.000000 8.000000 31.988387 +3.000000 8.100000 33.120784 +3.000000 8.200000 34.273182 +3.000000 8.300000 35.445579 +3.000000 8.400000 36.637977 +3.000000 8.500000 37.850374 +3.000000 8.600000 39.082772 +3.000000 8.700000 40.335169 +3.000000 8.800000 41.607567 +3.000000 8.900000 42.899964 +3.000000 9.000000 44.212362 +3.000000 9.100000 45.544760 +3.000000 9.200000 46.897157 +3.000000 9.300000 48.269555 +3.000000 9.400000 49.661952 +3.000000 9.500000 51.074350 +3.000000 9.600000 52.506747 +3.000000 9.700000 53.959145 +3.000000 9.800000 55.431542 +3.000000 9.900000 56.923940 +3.000000 10.000000 58.436337 +3.000000 10.100000 59.968735 +3.000000 10.200000 61.521133 +3.000000 10.300000 63.093530 +3.000000 10.400000 64.685928 +3.000000 10.500000 66.298325 +3.000000 10.600000 67.930723 +3.000000 10.700000 69.583120 +3.000000 10.800000 71.255518 +3.000000 10.900000 72.947915 +3.000000 11.000000 74.660313 +3.000000 11.100000 76.392710 +3.000000 11.200000 78.145108 +3.000000 11.300000 79.917505 +3.000000 11.400000 81.709903 +3.000000 11.500000 83.522301 +3.000000 11.600000 85.354698 +3.000000 11.700000 87.207096 +3.000000 11.800000 89.079493 +3.000000 11.900000 90.971891 +3.000000 12.000000 92.884288 +3.000000 12.100000 94.816686 +3.000000 12.200000 96.769083 +3.000000 12.300000 98.741481 +3.000000 12.400000 100.733878 +3.000000 12.500000 102.746276 +3.000000 12.600000 104.778674 +3.000000 12.700000 106.831071 +3.000000 12.800000 108.903469 +3.000000 12.900000 110.995866 +3.000000 13.000000 113.108264 +3.000000 13.100000 115.240661 +3.000000 13.200000 117.393059 +3.000000 13.300000 119.565456 +3.000000 13.400000 121.757854 +3.000000 13.500000 123.970251 +3.000000 13.600000 126.202649 +3.000000 13.700000 128.455046 +3.000000 13.800000 130.727444 +3.000000 13.900000 133.019842 +3.000000 14.000000 135.332239 +3.000000 14.100000 137.664637 +3.000000 14.200000 140.017034 +3.000000 14.300000 142.389432 +3.000000 14.400000 144.781829 +3.000000 14.500000 147.194227 +3.000000 14.600000 149.626624 +3.000000 14.700000 152.079022 +3.000000 14.800000 154.551419 +3.000000 14.900000 157.043817 +3.000000 15.000000 159.556215 + +3.100000 -5.000000 53.808085 +3.100000 -4.900000 52.356553 +3.100000 -4.800000 50.925021 +3.100000 -4.700000 49.513489 +3.100000 -4.600000 48.121957 +3.100000 -4.500000 46.750425 +3.100000 -4.400000 45.398893 +3.100000 -4.300000 44.067361 +3.100000 -4.200000 42.755829 +3.100000 -4.100000 41.464297 +3.100000 -4.000000 40.192765 +3.100000 -3.900000 38.941233 +3.100000 -3.800000 37.709701 +3.100000 -3.700000 36.498169 +3.100000 -3.600000 35.306637 +3.100000 -3.500000 34.135105 +3.100000 -3.400000 32.983573 +3.100000 -3.300000 31.852041 +3.100000 -3.200000 30.740509 +3.100000 -3.100000 29.648977 +3.100000 -3.000000 28.577445 +3.100000 -2.900000 27.525913 +3.100000 -2.800000 26.494381 +3.100000 -2.700000 25.482849 +3.100000 -2.600000 24.491317 +3.100000 -2.500000 23.519785 +3.100000 -2.400000 22.568253 +3.100000 -2.300000 21.636721 +3.100000 -2.200000 20.725189 +3.100000 -2.100000 19.833658 +3.100000 -2.000000 18.962126 +3.100000 -1.900000 18.110594 +3.100000 -1.800000 17.279062 +3.100000 -1.700000 16.467530 +3.100000 -1.600000 15.675998 +3.100000 -1.500000 14.904466 +3.100000 -1.400000 14.152934 +3.100000 -1.300000 13.421402 +3.100000 -1.200000 12.709870 +3.100000 -1.100000 12.018338 +3.100000 -1.000000 11.346806 +3.100000 -0.900000 10.695274 +3.100000 -0.800000 10.063742 +3.100000 -0.700000 9.452210 +3.100000 -0.600000 8.860678 +3.100000 -0.500000 8.289146 +3.100000 -0.400000 7.737614 +3.100000 -0.300000 7.206082 +3.100000 -0.200000 6.694550 +3.100000 -0.100000 6.203018 +3.100000 -0.000000 5.731486 +3.100000 0.100000 5.279954 +3.100000 0.200000 4.848422 +3.100000 0.300000 4.436890 +3.100000 0.400000 4.045358 +3.100000 0.500000 3.673826 +3.100000 0.600000 3.322294 +3.100000 0.700000 2.990762 +3.100000 0.800000 2.679230 +3.100000 0.900000 2.387698 +3.100000 1.000000 2.116166 +3.100000 1.100000 1.864634 +3.100000 1.200000 1.633102 +3.100000 1.300000 1.421570 +3.100000 1.400000 1.230038 +3.100000 1.500000 1.058506 +3.100000 1.600000 0.906974 +3.100000 1.700000 0.775442 +3.100000 1.800000 0.663910 +3.100000 1.900000 0.572378 +3.100000 2.000000 0.500846 +3.100000 2.100000 0.449314 +3.100000 2.200000 0.417782 +3.100000 2.300000 0.406250 +3.100000 2.400000 0.414718 +3.100000 2.500000 0.443186 +3.100000 2.600000 0.491654 +3.100000 2.700000 0.560122 +3.100000 2.800000 0.648591 +3.100000 2.900000 0.757059 +3.100000 3.000000 0.885527 +3.100000 3.100000 1.033995 +3.100000 3.200000 1.202463 +3.100000 3.300000 1.390931 +3.100000 3.400000 1.599399 +3.100000 3.500000 1.827867 +3.100000 3.600000 2.076335 +3.100000 3.700000 2.344803 +3.100000 3.800000 2.633271 +3.100000 3.900000 2.941739 +3.100000 4.000000 3.270207 +3.100000 4.100000 3.618675 +3.100000 4.200000 3.987143 +3.100000 4.300000 4.375611 +3.100000 4.400000 4.784079 +3.100000 4.500000 5.212547 +3.100000 4.600000 5.661015 +3.100000 4.700000 6.129483 +3.100000 4.800000 6.617951 +3.100000 4.900000 7.126419 +3.100000 5.000000 7.654887 +3.100000 5.100000 8.203355 +3.100000 5.200000 8.771823 +3.100000 5.300000 9.360291 +3.100000 5.400000 9.968759 +3.100000 5.500000 10.597227 +3.100000 5.600000 11.245695 +3.100000 5.700000 11.914163 +3.100000 5.800000 12.602631 +3.100000 5.900000 13.311099 +3.100000 6.000000 14.039567 +3.100000 6.100000 14.788035 +3.100000 6.200000 15.556503 +3.100000 6.300000 16.344971 +3.100000 6.400000 17.153439 +3.100000 6.500000 17.981907 +3.100000 6.600000 18.830375 +3.100000 6.700000 19.698843 +3.100000 6.800000 20.587311 +3.100000 6.900000 21.495779 +3.100000 7.000000 22.424247 +3.100000 7.100000 23.372715 +3.100000 7.200000 24.341183 +3.100000 7.300000 25.329651 +3.100000 7.400000 26.338119 +3.100000 7.500000 27.366587 +3.100000 7.600000 28.415056 +3.100000 7.700000 29.483524 +3.100000 7.800000 30.571992 +3.100000 7.900000 31.680460 +3.100000 8.000000 32.808928 +3.100000 8.100000 33.957396 +3.100000 8.200000 35.125864 +3.100000 8.300000 36.314332 +3.100000 8.400000 37.522800 +3.100000 8.500000 38.751268 +3.100000 8.600000 39.999736 +3.100000 8.700000 41.268204 +3.100000 8.800000 42.556672 +3.100000 8.900000 43.865140 +3.100000 9.000000 45.193608 +3.100000 9.100000 46.542076 +3.100000 9.200000 47.910544 +3.100000 9.300000 49.299012 +3.100000 9.400000 50.707480 +3.100000 9.500000 52.135948 +3.100000 9.600000 53.584416 +3.100000 9.700000 55.052884 +3.100000 9.800000 56.541352 +3.100000 9.900000 58.049820 +3.100000 10.000000 59.578288 +3.100000 10.100000 61.126756 +3.100000 10.200000 62.695224 +3.100000 10.300000 64.283692 +3.100000 10.400000 65.892160 +3.100000 10.500000 67.520628 +3.100000 10.600000 69.169096 +3.100000 10.700000 70.837564 +3.100000 10.800000 72.526032 +3.100000 10.900000 74.234500 +3.100000 11.000000 75.962968 +3.100000 11.100000 77.711436 +3.100000 11.200000 79.479904 +3.100000 11.300000 81.268372 +3.100000 11.400000 83.076840 +3.100000 11.500000 84.905308 +3.100000 11.600000 86.753776 +3.100000 11.700000 88.622244 +3.100000 11.800000 90.510712 +3.100000 11.900000 92.419180 +3.100000 12.000000 94.347648 +3.100000 12.100000 96.296116 +3.100000 12.200000 98.264584 +3.100000 12.300000 100.253052 +3.100000 12.400000 102.261520 +3.100000 12.500000 104.289989 +3.100000 12.600000 106.338457 +3.100000 12.700000 108.406925 +3.100000 12.800000 110.495393 +3.100000 12.900000 112.603861 +3.100000 13.000000 114.732329 +3.100000 13.100000 116.880797 +3.100000 13.200000 119.049265 +3.100000 13.300000 121.237733 +3.100000 13.400000 123.446201 +3.100000 13.500000 125.674669 +3.100000 13.600000 127.923137 +3.100000 13.700000 130.191605 +3.100000 13.800000 132.480073 +3.100000 13.900000 134.788541 +3.100000 14.000000 137.117009 +3.100000 14.100000 139.465477 +3.100000 14.200000 141.833945 +3.100000 14.300000 144.222413 +3.100000 14.400000 146.630881 +3.100000 14.500000 149.059349 +3.100000 14.600000 151.507817 +3.100000 14.700000 153.976285 +3.100000 14.800000 156.464753 +3.100000 14.900000 158.973221 +3.100000 15.000000 161.501689 + +3.200000 -5.000000 52.685588 +3.200000 -4.900000 51.249610 +3.200000 -4.800000 49.833631 +3.200000 -4.700000 48.437653 +3.200000 -4.600000 47.061675 +3.200000 -4.500000 45.705697 +3.200000 -4.400000 44.369718 +3.200000 -4.300000 43.053740 +3.200000 -4.200000 41.757762 +3.200000 -4.100000 40.481784 +3.200000 -4.000000 39.225805 +3.200000 -3.900000 37.989827 +3.200000 -3.800000 36.773849 +3.200000 -3.700000 35.577871 +3.200000 -3.600000 34.401892 +3.200000 -3.500000 33.245914 +3.200000 -3.400000 32.109936 +3.200000 -3.300000 30.993958 +3.200000 -3.200000 29.897979 +3.200000 -3.100000 28.822001 +3.200000 -3.000000 27.766023 +3.200000 -2.900000 26.730045 +3.200000 -2.800000 25.714067 +3.200000 -2.700000 24.718088 +3.200000 -2.600000 23.742110 +3.200000 -2.500000 22.786132 +3.200000 -2.400000 21.850154 +3.200000 -2.300000 20.934175 +3.200000 -2.200000 20.038197 +3.200000 -2.100000 19.162219 +3.200000 -2.000000 18.306241 +3.200000 -1.900000 17.470262 +3.200000 -1.800000 16.654284 +3.200000 -1.700000 15.858306 +3.200000 -1.600000 15.082328 +3.200000 -1.500000 14.326349 +3.200000 -1.400000 13.590371 +3.200000 -1.300000 12.874393 +3.200000 -1.200000 12.178415 +3.200000 -1.100000 11.502436 +3.200000 -1.000000 10.846458 +3.200000 -0.900000 10.210480 +3.200000 -0.800000 9.594502 +3.200000 -0.700000 8.998524 +3.200000 -0.600000 8.422545 +3.200000 -0.500000 7.866567 +3.200000 -0.400000 7.330589 +3.200000 -0.300000 6.814611 +3.200000 -0.200000 6.318632 +3.200000 -0.100000 5.842654 +3.200000 -0.000000 5.386676 +3.200000 0.100000 4.950698 +3.200000 0.200000 4.534719 +3.200000 0.300000 4.138741 +3.200000 0.400000 3.762763 +3.200000 0.500000 3.406785 +3.200000 0.600000 3.070806 +3.200000 0.700000 2.754828 +3.200000 0.800000 2.458850 +3.200000 0.900000 2.182872 +3.200000 1.000000 1.926893 +3.200000 1.100000 1.690915 +3.200000 1.200000 1.474937 +3.200000 1.300000 1.278959 +3.200000 1.400000 1.102981 +3.200000 1.500000 0.947002 +3.200000 1.600000 0.811024 +3.200000 1.700000 0.695046 +3.200000 1.800000 0.599068 +3.200000 1.900000 0.523089 +3.200000 2.000000 0.467111 +3.200000 2.100000 0.431133 +3.200000 2.200000 0.415155 +3.200000 2.300000 0.419176 +3.200000 2.400000 0.443198 +3.200000 2.500000 0.487220 +3.200000 2.600000 0.551242 +3.200000 2.700000 0.635263 +3.200000 2.800000 0.739285 +3.200000 2.900000 0.863307 +3.200000 3.000000 1.007329 +3.200000 3.100000 1.171350 +3.200000 3.200000 1.355372 +3.200000 3.300000 1.559394 +3.200000 3.400000 1.783416 +3.200000 3.500000 2.027437 +3.200000 3.600000 2.291459 +3.200000 3.700000 2.575481 +3.200000 3.800000 2.879503 +3.200000 3.900000 3.203525 +3.200000 4.000000 3.547546 +3.200000 4.100000 3.911568 +3.200000 4.200000 4.295590 +3.200000 4.300000 4.699612 +3.200000 4.400000 5.123633 +3.200000 4.500000 5.567655 +3.200000 4.600000 6.031677 +3.200000 4.700000 6.515699 +3.200000 4.800000 7.019720 +3.200000 4.900000 7.543742 +3.200000 5.000000 8.087764 +3.200000 5.100000 8.651786 +3.200000 5.200000 9.235807 +3.200000 5.300000 9.839829 +3.200000 5.400000 10.463851 +3.200000 5.500000 11.107873 +3.200000 5.600000 11.771894 +3.200000 5.700000 12.455916 +3.200000 5.800000 13.159938 +3.200000 5.900000 13.883960 +3.200000 6.000000 14.627982 +3.200000 6.100000 15.392003 +3.200000 6.200000 16.176025 +3.200000 6.300000 16.980047 +3.200000 6.400000 17.804069 +3.200000 6.500000 18.648090 +3.200000 6.600000 19.512112 +3.200000 6.700000 20.396134 +3.200000 6.800000 21.300156 +3.200000 6.900000 22.224177 +3.200000 7.000000 23.168199 +3.200000 7.100000 24.132221 +3.200000 7.200000 25.116243 +3.200000 7.300000 26.120264 +3.200000 7.400000 27.144286 +3.200000 7.500000 28.188308 +3.200000 7.600000 29.252330 +3.200000 7.700000 30.336351 +3.200000 7.800000 31.440373 +3.200000 7.900000 32.564395 +3.200000 8.000000 33.708417 +3.200000 8.100000 34.872438 +3.200000 8.200000 36.056460 +3.200000 8.300000 37.260482 +3.200000 8.400000 38.484504 +3.200000 8.500000 39.728526 +3.200000 8.600000 40.992547 +3.200000 8.700000 42.276569 +3.200000 8.800000 43.580591 +3.200000 8.900000 44.904613 +3.200000 9.000000 46.248634 +3.200000 9.100000 47.612656 +3.200000 9.200000 48.996678 +3.200000 9.300000 50.400700 +3.200000 9.400000 51.824721 +3.200000 9.500000 53.268743 +3.200000 9.600000 54.732765 +3.200000 9.700000 56.216787 +3.200000 9.800000 57.720808 +3.200000 9.900000 59.244830 +3.200000 10.000000 60.788852 +3.200000 10.100000 62.352874 +3.200000 10.200000 63.936895 +3.200000 10.300000 65.540917 +3.200000 10.400000 67.164939 +3.200000 10.500000 68.808961 +3.200000 10.600000 70.472983 +3.200000 10.700000 72.157004 +3.200000 10.800000 73.861026 +3.200000 10.900000 75.585048 +3.200000 11.000000 77.329070 +3.200000 11.100000 79.093091 +3.200000 11.200000 80.877113 +3.200000 11.300000 82.681135 +3.200000 11.400000 84.505157 +3.200000 11.500000 86.349178 +3.200000 11.600000 88.213200 +3.200000 11.700000 90.097222 +3.200000 11.800000 92.001244 +3.200000 11.900000 93.925265 +3.200000 12.000000 95.869287 +3.200000 12.100000 97.833309 +3.200000 12.200000 99.817331 +3.200000 12.300000 101.821352 +3.200000 12.400000 103.845374 +3.200000 12.500000 105.889396 +3.200000 12.600000 107.953418 +3.200000 12.700000 110.037440 +3.200000 12.800000 112.141461 +3.200000 12.900000 114.265483 +3.200000 13.000000 116.409505 +3.200000 13.100000 118.573527 +3.200000 13.200000 120.757548 +3.200000 13.300000 122.961570 +3.200000 13.400000 125.185592 +3.200000 13.500000 127.429614 +3.200000 13.600000 129.693635 +3.200000 13.700000 131.977657 +3.200000 13.800000 134.281679 +3.200000 13.900000 136.605701 +3.200000 14.000000 138.949722 +3.200000 14.100000 141.313744 +3.200000 14.200000 143.697766 +3.200000 14.300000 146.101788 +3.200000 14.400000 148.525809 +3.200000 14.500000 150.969831 +3.200000 14.600000 153.433853 +3.200000 14.700000 155.917875 +3.200000 14.800000 158.421896 +3.200000 14.900000 160.945918 +3.200000 15.000000 163.489940 + +3.300000 -5.000000 51.707929 +3.300000 -4.900000 50.286987 +3.300000 -4.800000 48.886046 +3.300000 -4.700000 47.505105 +3.300000 -4.600000 46.144164 +3.300000 -4.500000 44.803222 +3.300000 -4.400000 43.482281 +3.300000 -4.300000 42.181340 +3.300000 -4.200000 40.900399 +3.300000 -4.100000 39.639457 +3.300000 -4.000000 38.398516 +3.300000 -3.900000 37.177575 +3.300000 -3.800000 35.976634 +3.300000 -3.700000 34.795693 +3.300000 -3.600000 33.634751 +3.300000 -3.500000 32.493810 +3.300000 -3.400000 31.372869 +3.300000 -3.300000 30.271928 +3.300000 -3.200000 29.190986 +3.300000 -3.100000 28.130045 +3.300000 -3.000000 27.089104 +3.300000 -2.900000 26.068163 +3.300000 -2.800000 25.067221 +3.300000 -2.700000 24.086280 +3.300000 -2.600000 23.125339 +3.300000 -2.500000 22.184398 +3.300000 -2.400000 21.263456 +3.300000 -2.300000 20.362515 +3.300000 -2.200000 19.481574 +3.300000 -2.100000 18.620633 +3.300000 -2.000000 17.779691 +3.300000 -1.900000 16.958750 +3.300000 -1.800000 16.157809 +3.300000 -1.700000 15.376868 +3.300000 -1.600000 14.615927 +3.300000 -1.500000 13.874985 +3.300000 -1.400000 13.154044 +3.300000 -1.300000 12.453103 +3.300000 -1.200000 11.772162 +3.300000 -1.100000 11.111220 +3.300000 -1.000000 10.470279 +3.300000 -0.900000 9.849338 +3.300000 -0.800000 9.248397 +3.300000 -0.700000 8.667455 +3.300000 -0.600000 8.106514 +3.300000 -0.500000 7.565573 +3.300000 -0.400000 7.044632 +3.300000 -0.300000 6.543690 +3.300000 -0.200000 6.062749 +3.300000 -0.100000 5.601808 +3.300000 -0.000000 5.160867 +3.300000 0.100000 4.739926 +3.300000 0.200000 4.338984 +3.300000 0.300000 3.958043 +3.300000 0.400000 3.597102 +3.300000 0.500000 3.256161 +3.300000 0.600000 2.935219 +3.300000 0.700000 2.634278 +3.300000 0.800000 2.353337 +3.300000 0.900000 2.092396 +3.300000 1.000000 1.851454 +3.300000 1.100000 1.630513 +3.300000 1.200000 1.429572 +3.300000 1.300000 1.248631 +3.300000 1.400000 1.087689 +3.300000 1.500000 0.946748 +3.300000 1.600000 0.825807 +3.300000 1.700000 0.724866 +3.300000 1.800000 0.643924 +3.300000 1.900000 0.582983 +3.300000 2.000000 0.542042 +3.300000 2.100000 0.521101 +3.300000 2.200000 0.520160 +3.300000 2.300000 0.539218 +3.300000 2.400000 0.578277 +3.300000 2.500000 0.637336 +3.300000 2.600000 0.716395 +3.300000 2.700000 0.815453 +3.300000 2.800000 0.934512 +3.300000 2.900000 1.073571 +3.300000 3.000000 1.232630 +3.300000 3.100000 1.411688 +3.300000 3.200000 1.610747 +3.300000 3.300000 1.829806 +3.300000 3.400000 2.068865 +3.300000 3.500000 2.327923 +3.300000 3.600000 2.606982 +3.300000 3.700000 2.906041 +3.300000 3.800000 3.225100 +3.300000 3.900000 3.564159 +3.300000 4.000000 3.923217 +3.300000 4.100000 4.302276 +3.300000 4.200000 4.701335 +3.300000 4.300000 5.120394 +3.300000 4.400000 5.559452 +3.300000 4.500000 6.018511 +3.300000 4.600000 6.497570 +3.300000 4.700000 6.996629 +3.300000 4.800000 7.515687 +3.300000 4.900000 8.054746 +3.300000 5.000000 8.613805 +3.300000 5.100000 9.192864 +3.300000 5.200000 9.791922 +3.300000 5.300000 10.410981 +3.300000 5.400000 11.050040 +3.300000 5.500000 11.709099 +3.300000 5.600000 12.388158 +3.300000 5.700000 13.087216 +3.300000 5.800000 13.806275 +3.300000 5.900000 14.545334 +3.300000 6.000000 15.304393 +3.300000 6.100000 16.083451 +3.300000 6.200000 16.882510 +3.300000 6.300000 17.701569 +3.300000 6.400000 18.540628 +3.300000 6.500000 19.399686 +3.300000 6.600000 20.278745 +3.300000 6.700000 21.177804 +3.300000 6.800000 22.096863 +3.300000 6.900000 23.035921 +3.300000 7.000000 23.994980 +3.300000 7.100000 24.974039 +3.300000 7.200000 25.973098 +3.300000 7.300000 26.992156 +3.300000 7.400000 28.031215 +3.300000 7.500000 29.090274 +3.300000 7.600000 30.169333 +3.300000 7.700000 31.268392 +3.300000 7.800000 32.387450 +3.300000 7.900000 33.526509 +3.300000 8.000000 34.685568 +3.300000 8.100000 35.864627 +3.300000 8.200000 37.063685 +3.300000 8.300000 38.282744 +3.300000 8.400000 39.521803 +3.300000 8.500000 40.780862 +3.300000 8.600000 42.059920 +3.300000 8.700000 43.358979 +3.300000 8.800000 44.678038 +3.300000 8.900000 46.017097 +3.300000 9.000000 47.376155 +3.300000 9.100000 48.755214 +3.300000 9.200000 50.154273 +3.300000 9.300000 51.573332 +3.300000 9.400000 53.012391 +3.300000 9.500000 54.471449 +3.300000 9.600000 55.950508 +3.300000 9.700000 57.449567 +3.300000 9.800000 58.968626 +3.300000 9.900000 60.507684 +3.300000 10.000000 62.066743 +3.300000 10.100000 63.645802 +3.300000 10.200000 65.244861 +3.300000 10.300000 66.863919 +3.300000 10.400000 68.502978 +3.300000 10.500000 70.162037 +3.300000 10.600000 71.841096 +3.300000 10.700000 73.540154 +3.300000 10.800000 75.259213 +3.300000 10.900000 76.998272 +3.300000 11.000000 78.757331 +3.300000 11.100000 80.536389 +3.300000 11.200000 82.335448 +3.300000 11.300000 84.154507 +3.300000 11.400000 85.993566 +3.300000 11.500000 87.852625 +3.300000 11.600000 89.731683 +3.300000 11.700000 91.630742 +3.300000 11.800000 93.549801 +3.300000 11.900000 95.488860 +3.300000 12.000000 97.447918 +3.300000 12.100000 99.426977 +3.300000 12.200000 101.426036 +3.300000 12.300000 103.445095 +3.300000 12.400000 105.484153 +3.300000 12.500000 107.543212 +3.300000 12.600000 109.622271 +3.300000 12.700000 111.721330 +3.300000 12.800000 113.840388 +3.300000 12.900000 115.979447 +3.300000 13.000000 118.138506 +3.300000 13.100000 120.317565 +3.300000 13.200000 122.516624 +3.300000 13.300000 124.735682 +3.300000 13.400000 126.974741 +3.300000 13.500000 129.233800 +3.300000 13.600000 131.512859 +3.300000 13.700000 133.811917 +3.300000 13.800000 136.130976 +3.300000 13.900000 138.470035 +3.300000 14.000000 140.829094 +3.300000 14.100000 143.208152 +3.300000 14.200000 145.607211 +3.300000 14.300000 148.026270 +3.300000 14.400000 150.465329 +3.300000 14.500000 152.924387 +3.300000 14.600000 155.403446 +3.300000 14.700000 157.902505 +3.300000 14.800000 160.421564 +3.300000 14.900000 162.960623 +3.300000 15.000000 165.519681 + +3.400000 -5.000000 50.872904 +3.400000 -4.900000 49.466483 +3.400000 -4.800000 48.080062 +3.400000 -4.700000 46.713641 +3.400000 -4.600000 45.367220 +3.400000 -4.500000 44.040799 +3.400000 -4.400000 42.734378 +3.400000 -4.300000 41.447957 +3.400000 -4.200000 40.181536 +3.400000 -4.100000 38.935115 +3.400000 -4.000000 37.708694 +3.400000 -3.900000 36.502273 +3.400000 -3.800000 35.315852 +3.400000 -3.700000 34.149431 +3.400000 -3.600000 33.003010 +3.400000 -3.500000 31.876590 +3.400000 -3.400000 30.770169 +3.400000 -3.300000 29.683748 +3.400000 -3.200000 28.617327 +3.400000 -3.100000 27.570906 +3.400000 -3.000000 26.544485 +3.400000 -2.900000 25.538064 +3.400000 -2.800000 24.551643 +3.400000 -2.700000 23.585222 +3.400000 -2.600000 22.638801 +3.400000 -2.500000 21.712380 +3.400000 -2.400000 20.805959 +3.400000 -2.300000 19.919538 +3.400000 -2.200000 19.053117 +3.400000 -2.100000 18.206696 +3.400000 -2.000000 17.380275 +3.400000 -1.900000 16.573854 +3.400000 -1.800000 15.787433 +3.400000 -1.700000 15.021012 +3.400000 -1.600000 14.274591 +3.400000 -1.500000 13.548170 +3.400000 -1.400000 12.841749 +3.400000 -1.300000 12.155328 +3.400000 -1.200000 11.488907 +3.400000 -1.100000 10.842486 +3.400000 -1.000000 10.216065 +3.400000 -0.900000 9.609644 +3.400000 -0.800000 9.023223 +3.400000 -0.700000 8.456802 +3.400000 -0.600000 7.910381 +3.400000 -0.500000 7.383960 +3.400000 -0.400000 6.877539 +3.400000 -0.300000 6.391118 +3.400000 -0.200000 5.924697 +3.400000 -0.100000 5.478276 +3.400000 -0.000000 5.051856 +3.400000 0.100000 4.645435 +3.400000 0.200000 4.259014 +3.400000 0.300000 3.892593 +3.400000 0.400000 3.546172 +3.400000 0.500000 3.219751 +3.400000 0.600000 2.913330 +3.400000 0.700000 2.626909 +3.400000 0.800000 2.360488 +3.400000 0.900000 2.114067 +3.400000 1.000000 1.887646 +3.400000 1.100000 1.681225 +3.400000 1.200000 1.494804 +3.400000 1.300000 1.328383 +3.400000 1.400000 1.181962 +3.400000 1.500000 1.055541 +3.400000 1.600000 0.949120 +3.400000 1.700000 0.862699 +3.400000 1.800000 0.796278 +3.400000 1.900000 0.749857 +3.400000 2.000000 0.723436 +3.400000 2.100000 0.717015 +3.400000 2.200000 0.730594 +3.400000 2.300000 0.764173 +3.400000 2.400000 0.817752 +3.400000 2.500000 0.891331 +3.400000 2.600000 0.984910 +3.400000 2.700000 1.098489 +3.400000 2.800000 1.232068 +3.400000 2.900000 1.385647 +3.400000 3.000000 1.559226 +3.400000 3.100000 1.752805 +3.400000 3.200000 1.966384 +3.400000 3.300000 2.199963 +3.400000 3.400000 2.453542 +3.400000 3.500000 2.727121 +3.400000 3.600000 3.020701 +3.400000 3.700000 3.334280 +3.400000 3.800000 3.667859 +3.400000 3.900000 4.021438 +3.400000 4.000000 4.395017 +3.400000 4.100000 4.788596 +3.400000 4.200000 5.202175 +3.400000 4.300000 5.635754 +3.400000 4.400000 6.089333 +3.400000 4.500000 6.562912 +3.400000 4.600000 7.056491 +3.400000 4.700000 7.570070 +3.400000 4.800000 8.103649 +3.400000 4.900000 8.657228 +3.400000 5.000000 9.230807 +3.400000 5.100000 9.824386 +3.400000 5.200000 10.437965 +3.400000 5.300000 11.071544 +3.400000 5.400000 11.725123 +3.400000 5.500000 12.398702 +3.400000 5.600000 13.092281 +3.400000 5.700000 13.805860 +3.400000 5.800000 14.539439 +3.400000 5.900000 15.293018 +3.400000 6.000000 16.066597 +3.400000 6.100000 16.860176 +3.400000 6.200000 17.673755 +3.400000 6.300000 18.507334 +3.400000 6.400000 19.360913 +3.400000 6.500000 20.234492 +3.400000 6.600000 21.128071 +3.400000 6.700000 22.041650 +3.400000 6.800000 22.975229 +3.400000 6.900000 23.928808 +3.400000 7.000000 24.902387 +3.400000 7.100000 25.895966 +3.400000 7.200000 26.909546 +3.400000 7.300000 27.943125 +3.400000 7.400000 28.996704 +3.400000 7.500000 30.070283 +3.400000 7.600000 31.163862 +3.400000 7.700000 32.277441 +3.400000 7.800000 33.411020 +3.400000 7.900000 34.564599 +3.400000 8.000000 35.738178 +3.400000 8.100000 36.931757 +3.400000 8.200000 38.145336 +3.400000 8.300000 39.378915 +3.400000 8.400000 40.632494 +3.400000 8.500000 41.906073 +3.400000 8.600000 43.199652 +3.400000 8.700000 44.513231 +3.400000 8.800000 45.846810 +3.400000 8.900000 47.200389 +3.400000 9.000000 48.573968 +3.400000 9.100000 49.967547 +3.400000 9.200000 51.381126 +3.400000 9.300000 52.814705 +3.400000 9.400000 54.268284 +3.400000 9.500000 55.741863 +3.400000 9.600000 57.235442 +3.400000 9.700000 58.749021 +3.400000 9.800000 60.282600 +3.400000 9.900000 61.836179 +3.400000 10.000000 63.409758 +3.400000 10.100000 65.003337 +3.400000 10.200000 66.616916 +3.400000 10.300000 68.250495 +3.400000 10.400000 69.904074 +3.400000 10.500000 71.577653 +3.400000 10.600000 73.271232 +3.400000 10.700000 74.984811 +3.400000 10.800000 76.718391 +3.400000 10.900000 78.471970 +3.400000 11.000000 80.245549 +3.400000 11.100000 82.039128 +3.400000 11.200000 83.852707 +3.400000 11.300000 85.686286 +3.400000 11.400000 87.539865 +3.400000 11.500000 89.413444 +3.400000 11.600000 91.307023 +3.400000 11.700000 93.220602 +3.400000 11.800000 95.154181 +3.400000 11.900000 97.107760 +3.400000 12.000000 99.081339 +3.400000 12.100000 101.074918 +3.400000 12.200000 103.088497 +3.400000 12.300000 105.122076 +3.400000 12.400000 107.175655 +3.400000 12.500000 109.249234 +3.400000 12.600000 111.342813 +3.400000 12.700000 113.456392 +3.400000 12.800000 115.589971 +3.400000 12.900000 117.743550 +3.400000 13.000000 119.917129 +3.400000 13.100000 122.110708 +3.400000 13.200000 124.324287 +3.400000 13.300000 126.557866 +3.400000 13.400000 128.811445 +3.400000 13.500000 131.085024 +3.400000 13.600000 133.378603 +3.400000 13.700000 135.692182 +3.400000 13.800000 138.025761 +3.400000 13.900000 140.379340 +3.400000 14.000000 142.752919 +3.400000 14.100000 145.146498 +3.400000 14.200000 147.560077 +3.400000 14.300000 149.993656 +3.400000 14.400000 152.447236 +3.400000 14.500000 154.920815 +3.400000 14.600000 157.414394 +3.400000 14.700000 159.927973 +3.400000 14.800000 162.461552 +3.400000 14.900000 165.015131 +3.400000 15.000000 167.588710 + +3.500000 -5.000000 50.177405 +3.500000 -4.900000 48.784987 +3.500000 -4.800000 47.412570 +3.500000 -4.700000 46.060152 +3.500000 -4.600000 44.727735 +3.500000 -4.500000 43.415317 +3.500000 -4.400000 42.122900 +3.500000 -4.300000 40.850483 +3.500000 -4.200000 39.598065 +3.500000 -4.100000 38.365648 +3.500000 -4.000000 37.153230 +3.500000 -3.900000 35.960813 +3.500000 -3.800000 34.788395 +3.500000 -3.700000 33.635978 +3.500000 -3.600000 32.503560 +3.500000 -3.500000 31.391143 +3.500000 -3.400000 30.298726 +3.500000 -3.300000 29.226308 +3.500000 -3.200000 28.173891 +3.500000 -3.100000 27.141473 +3.500000 -3.000000 26.129056 +3.500000 -2.900000 25.136638 +3.500000 -2.800000 24.164221 +3.500000 -2.700000 23.211803 +3.500000 -2.600000 22.279386 +3.500000 -2.500000 21.366969 +3.500000 -2.400000 20.474551 +3.500000 -2.300000 19.602134 +3.500000 -2.200000 18.749716 +3.500000 -2.100000 17.917299 +3.500000 -2.000000 17.104881 +3.500000 -1.900000 16.312464 +3.500000 -1.800000 15.540046 +3.500000 -1.700000 14.787629 +3.500000 -1.600000 14.055212 +3.500000 -1.500000 13.342794 +3.500000 -1.400000 12.650377 +3.500000 -1.300000 11.977959 +3.500000 -1.200000 11.325542 +3.500000 -1.100000 10.693124 +3.500000 -1.000000 10.080707 +3.500000 -0.900000 9.488289 +3.500000 -0.800000 8.915872 +3.500000 -0.700000 8.363455 +3.500000 -0.600000 7.831037 +3.500000 -0.500000 7.318620 +3.500000 -0.400000 6.826202 +3.500000 -0.300000 6.353785 +3.500000 -0.200000 5.901367 +3.500000 -0.100000 5.468950 +3.500000 -0.000000 5.056532 +3.500000 0.100000 4.664115 +3.500000 0.200000 4.291698 +3.500000 0.300000 3.939280 +3.500000 0.400000 3.606863 +3.500000 0.500000 3.294445 +3.500000 0.600000 3.002028 +3.500000 0.700000 2.729610 +3.500000 0.800000 2.477193 +3.500000 0.900000 2.244775 +3.500000 1.000000 2.032358 +3.500000 1.100000 1.839941 +3.500000 1.200000 1.667523 +3.500000 1.300000 1.515106 +3.500000 1.400000 1.382688 +3.500000 1.500000 1.270271 +3.500000 1.600000 1.177853 +3.500000 1.700000 1.105436 +3.500000 1.800000 1.053018 +3.500000 1.900000 1.020601 +3.500000 2.000000 1.008184 +3.500000 2.100000 1.015766 +3.500000 2.200000 1.043349 +3.500000 2.300000 1.090931 +3.500000 2.400000 1.158514 +3.500000 2.500000 1.246096 +3.500000 2.600000 1.353679 +3.500000 2.700000 1.481261 +3.500000 2.800000 1.628844 +3.500000 2.900000 1.796426 +3.500000 3.000000 1.984009 +3.500000 3.100000 2.191592 +3.500000 3.200000 2.419174 +3.500000 3.300000 2.666757 +3.500000 3.400000 2.934339 +3.500000 3.500000 3.221922 +3.500000 3.600000 3.529504 +3.500000 3.700000 3.857087 +3.500000 3.800000 4.204669 +3.500000 3.900000 4.572252 +3.500000 4.000000 4.959835 +3.500000 4.100000 5.367417 +3.500000 4.200000 5.795000 +3.500000 4.300000 6.242582 +3.500000 4.400000 6.710165 +3.500000 4.500000 7.197747 +3.500000 4.600000 7.705330 +3.500000 4.700000 8.232912 +3.500000 4.800000 8.780495 +3.500000 4.900000 9.348078 +3.500000 5.000000 9.935660 +3.500000 5.100000 10.543243 +3.500000 5.200000 11.170825 +3.500000 5.300000 11.818408 +3.500000 5.400000 12.485990 +3.500000 5.500000 13.173573 +3.500000 5.600000 13.881155 +3.500000 5.700000 14.608738 +3.500000 5.800000 15.356321 +3.500000 5.900000 16.123903 +3.500000 6.000000 16.911486 +3.500000 6.100000 17.719068 +3.500000 6.200000 18.546651 +3.500000 6.300000 19.394233 +3.500000 6.400000 20.261816 +3.500000 6.500000 21.149398 +3.500000 6.600000 22.056981 +3.500000 6.700000 22.984564 +3.500000 6.800000 23.932146 +3.500000 6.900000 24.899729 +3.500000 7.000000 25.887311 +3.500000 7.100000 26.894894 +3.500000 7.200000 27.922476 +3.500000 7.300000 28.970059 +3.500000 7.400000 30.037641 +3.500000 7.500000 31.125224 +3.500000 7.600000 32.232807 +3.500000 7.700000 33.360389 +3.500000 7.800000 34.507972 +3.500000 7.900000 35.675554 +3.500000 8.000000 36.863137 +3.500000 8.100000 38.070719 +3.500000 8.200000 39.298302 +3.500000 8.300000 40.545884 +3.500000 8.400000 41.813467 +3.500000 8.500000 43.101050 +3.500000 8.600000 44.408632 +3.500000 8.700000 45.736215 +3.500000 8.800000 47.083797 +3.500000 8.900000 48.451380 +3.500000 9.000000 49.838962 +3.500000 9.100000 51.246545 +3.500000 9.200000 52.674127 +3.500000 9.300000 54.121710 +3.500000 9.400000 55.589293 +3.500000 9.500000 57.076875 +3.500000 9.600000 58.584458 +3.500000 9.700000 60.112040 +3.500000 9.800000 61.659623 +3.500000 9.900000 63.227205 +3.500000 10.000000 64.814788 +3.500000 10.100000 66.422370 +3.500000 10.200000 68.049953 +3.500000 10.300000 69.697536 +3.500000 10.400000 71.365118 +3.500000 10.500000 73.052701 +3.500000 10.600000 74.760283 +3.500000 10.700000 76.487866 +3.500000 10.800000 78.235448 +3.500000 10.900000 80.003031 +3.500000 11.000000 81.790613 +3.500000 11.100000 83.598196 +3.500000 11.200000 85.425778 +3.500000 11.300000 87.273361 +3.500000 11.400000 89.140944 +3.500000 11.500000 91.028526 +3.500000 11.600000 92.936109 +3.500000 11.700000 94.863691 +3.500000 11.800000 96.811274 +3.500000 11.900000 98.778856 +3.500000 12.000000 100.766439 +3.500000 12.100000 102.774021 +3.500000 12.200000 104.801604 +3.500000 12.300000 106.849187 +3.500000 12.400000 108.916769 +3.500000 12.500000 111.004352 +3.500000 12.600000 113.111934 +3.500000 12.700000 115.239517 +3.500000 12.800000 117.387099 +3.500000 12.900000 119.554682 +3.500000 13.000000 121.742264 +3.500000 13.100000 123.949847 +3.500000 13.200000 126.177430 +3.500000 13.300000 128.425012 +3.500000 13.400000 130.692595 +3.500000 13.500000 132.980177 +3.500000 13.600000 135.287760 +3.500000 13.700000 137.615342 +3.500000 13.800000 139.962925 +3.500000 13.900000 142.330507 +3.500000 14.000000 144.718090 +3.500000 14.100000 147.125673 +3.500000 14.200000 149.553255 +3.500000 14.300000 152.000838 +3.500000 14.400000 154.468420 +3.500000 14.500000 156.956003 +3.500000 14.600000 159.463585 +3.500000 14.700000 161.991168 +3.500000 14.800000 164.538750 +3.500000 14.900000 167.106333 +3.500000 15.000000 169.693916 + +3.600000 -5.000000 49.617434 +3.600000 -4.900000 48.238503 +3.600000 -4.800000 46.879573 +3.600000 -4.700000 45.540642 +3.600000 -4.600000 44.221711 +3.600000 -4.500000 42.922781 +3.600000 -4.400000 41.643850 +3.600000 -4.300000 40.384919 +3.600000 -4.200000 39.145989 +3.600000 -4.100000 37.927058 +3.600000 -4.000000 36.728127 +3.600000 -3.900000 35.549197 +3.600000 -3.800000 34.390266 +3.600000 -3.700000 33.251335 +3.600000 -3.600000 32.132405 +3.600000 -3.500000 31.033474 +3.600000 -3.400000 29.954543 +3.600000 -3.300000 28.895613 +3.600000 -3.200000 27.856682 +3.600000 -3.100000 26.837751 +3.600000 -3.000000 25.838821 +3.600000 -2.900000 24.859890 +3.600000 -2.800000 23.900959 +3.600000 -2.700000 22.962029 +3.600000 -2.600000 22.043098 +3.600000 -2.500000 21.144168 +3.600000 -2.400000 20.265237 +3.600000 -2.300000 19.406306 +3.600000 -2.200000 18.567376 +3.600000 -2.100000 17.748445 +3.600000 -2.000000 16.949514 +3.600000 -1.900000 16.170584 +3.600000 -1.800000 15.411653 +3.600000 -1.700000 14.672722 +3.600000 -1.600000 13.953792 +3.600000 -1.500000 13.254861 +3.600000 -1.400000 12.575930 +3.600000 -1.300000 11.917000 +3.600000 -1.200000 11.278069 +3.600000 -1.100000 10.659138 +3.600000 -1.000000 10.060208 +3.600000 -0.900000 9.481277 +3.600000 -0.800000 8.922346 +3.600000 -0.700000 8.383416 +3.600000 -0.600000 7.864485 +3.600000 -0.500000 7.365554 +3.600000 -0.400000 6.886624 +3.600000 -0.300000 6.427693 +3.600000 -0.200000 5.988762 +3.600000 -0.100000 5.569832 +3.600000 -0.000000 5.170901 +3.600000 0.100000 4.791970 +3.600000 0.200000 4.433040 +3.600000 0.300000 4.094109 +3.600000 0.400000 3.775178 +3.600000 0.500000 3.476248 +3.600000 0.600000 3.197317 +3.600000 0.700000 2.938386 +3.600000 0.800000 2.699456 +3.600000 0.900000 2.480525 +3.600000 1.000000 2.281595 +3.600000 1.100000 2.102664 +3.600000 1.200000 1.943733 +3.600000 1.300000 1.804803 +3.600000 1.400000 1.685872 +3.600000 1.500000 1.586941 +3.600000 1.600000 1.508011 +3.600000 1.700000 1.449080 +3.600000 1.800000 1.410149 +3.600000 1.900000 1.391219 +3.600000 2.000000 1.392288 +3.600000 2.100000 1.413357 +3.600000 2.200000 1.454427 +3.600000 2.300000 1.515496 +3.600000 2.400000 1.596565 +3.600000 2.500000 1.697635 +3.600000 2.600000 1.818704 +3.600000 2.700000 1.959773 +3.600000 2.800000 2.120843 +3.600000 2.900000 2.301912 +3.600000 3.000000 2.502981 +3.600000 3.100000 2.724051 +3.600000 3.200000 2.965120 +3.600000 3.300000 3.226189 +3.600000 3.400000 3.507259 +3.600000 3.500000 3.808328 +3.600000 3.600000 4.129397 +3.600000 3.700000 4.470467 +3.600000 3.800000 4.831536 +3.600000 3.900000 5.212605 +3.600000 4.000000 5.613675 +3.600000 4.100000 6.034744 +3.600000 4.200000 6.475813 +3.600000 4.300000 6.936883 +3.600000 4.400000 7.417952 +3.600000 4.500000 7.919021 +3.600000 4.600000 8.440091 +3.600000 4.700000 8.981160 +3.600000 4.800000 9.542230 +3.600000 4.900000 10.123299 +3.600000 5.000000 10.724368 +3.600000 5.100000 11.345438 +3.600000 5.200000 11.986507 +3.600000 5.300000 12.647576 +3.600000 5.400000 13.328646 +3.600000 5.500000 14.029715 +3.600000 5.600000 14.750784 +3.600000 5.700000 15.491854 +3.600000 5.800000 16.252923 +3.600000 5.900000 17.033992 +3.600000 6.000000 17.835062 +3.600000 6.100000 18.656131 +3.600000 6.200000 19.497200 +3.600000 6.300000 20.358270 +3.600000 6.400000 21.239339 +3.600000 6.500000 22.140408 +3.600000 6.600000 23.061478 +3.600000 6.700000 24.002547 +3.600000 6.800000 24.963616 +3.600000 6.900000 25.944686 +3.600000 7.000000 26.945755 +3.600000 7.100000 27.966824 +3.600000 7.200000 29.007894 +3.600000 7.300000 30.068963 +3.600000 7.400000 31.150032 +3.600000 7.500000 32.251102 +3.600000 7.600000 33.372171 +3.600000 7.700000 34.513240 +3.600000 7.800000 35.674310 +3.600000 7.900000 36.855379 +3.600000 8.000000 38.056448 +3.600000 8.100000 39.277518 +3.600000 8.200000 40.518587 +3.600000 8.300000 41.779657 +3.600000 8.400000 43.060726 +3.600000 8.500000 44.361795 +3.600000 8.600000 45.682865 +3.600000 8.700000 47.023934 +3.600000 8.800000 48.385003 +3.600000 8.900000 49.766073 +3.600000 9.000000 51.167142 +3.600000 9.100000 52.588211 +3.600000 9.200000 54.029281 +3.600000 9.300000 55.490350 +3.600000 9.400000 56.971419 +3.600000 9.500000 58.472489 +3.600000 9.600000 59.993558 +3.600000 9.700000 61.534627 +3.600000 9.800000 63.095697 +3.600000 9.900000 64.676766 +3.600000 10.000000 66.277835 +3.600000 10.100000 67.898905 +3.600000 10.200000 69.539974 +3.600000 10.300000 71.201043 +3.600000 10.400000 72.882113 +3.600000 10.500000 74.583182 +3.600000 10.600000 76.304251 +3.600000 10.700000 78.045321 +3.600000 10.800000 79.806390 +3.600000 10.900000 81.587459 +3.600000 11.000000 83.388529 +3.600000 11.100000 85.209598 +3.600000 11.200000 87.050667 +3.600000 11.300000 88.911737 +3.600000 11.400000 90.792806 +3.600000 11.500000 92.693875 +3.600000 11.600000 94.614945 +3.600000 11.700000 96.556014 +3.600000 11.800000 98.517084 +3.600000 11.900000 100.498153 +3.600000 12.000000 102.499222 +3.600000 12.100000 104.520292 +3.600000 12.200000 106.561361 +3.600000 12.300000 108.622430 +3.600000 12.400000 110.703500 +3.600000 12.500000 112.804569 +3.600000 12.600000 114.925638 +3.600000 12.700000 117.066708 +3.600000 12.800000 119.227777 +3.600000 12.900000 121.408846 +3.600000 13.000000 123.609916 +3.600000 13.100000 125.830985 +3.600000 13.200000 128.072054 +3.600000 13.300000 130.333124 +3.600000 13.400000 132.614193 +3.600000 13.500000 134.915262 +3.600000 13.600000 137.236332 +3.600000 13.700000 139.577401 +3.600000 13.800000 141.938470 +3.600000 13.900000 144.319540 +3.600000 14.000000 146.720609 +3.600000 14.100000 149.141678 +3.600000 14.200000 151.582748 +3.600000 14.300000 154.043817 +3.600000 14.400000 156.524886 +3.600000 14.500000 159.025956 +3.600000 14.600000 161.547025 +3.600000 14.700000 164.088094 +3.600000 14.800000 166.649164 +3.600000 14.900000 169.230233 +3.600000 15.000000 171.831302 + +3.700000 -5.000000 49.188138 +3.700000 -4.900000 47.822177 +3.700000 -4.800000 46.476217 +3.700000 -4.700000 45.150256 +3.700000 -4.600000 43.844295 +3.700000 -4.500000 42.558335 +3.700000 -4.400000 41.292374 +3.700000 -4.300000 40.046414 +3.700000 -4.200000 38.820453 +3.700000 -4.100000 37.614492 +3.700000 -4.000000 36.428532 +3.700000 -3.900000 35.262571 +3.700000 -3.800000 34.116610 +3.700000 -3.700000 32.990650 +3.700000 -3.600000 31.884689 +3.700000 -3.500000 30.798729 +3.700000 -3.400000 29.732768 +3.700000 -3.300000 28.686807 +3.700000 -3.200000 27.660847 +3.700000 -3.100000 26.654886 +3.700000 -3.000000 25.668926 +3.700000 -2.900000 24.702965 +3.700000 -2.800000 23.757004 +3.700000 -2.700000 22.831044 +3.700000 -2.600000 21.925083 +3.700000 -2.500000 21.039123 +3.700000 -2.400000 20.173162 +3.700000 -2.300000 19.327201 +3.700000 -2.200000 18.501241 +3.700000 -2.100000 17.695280 +3.700000 -2.000000 16.909320 +3.700000 -1.900000 16.143359 +3.700000 -1.800000 15.397398 +3.700000 -1.700000 14.671438 +3.700000 -1.600000 13.965477 +3.700000 -1.500000 13.279517 +3.700000 -1.400000 12.613556 +3.700000 -1.300000 11.967595 +3.700000 -1.200000 11.341635 +3.700000 -1.100000 10.735674 +3.700000 -1.000000 10.149713 +3.700000 -0.900000 9.583753 +3.700000 -0.800000 9.037792 +3.700000 -0.700000 8.511832 +3.700000 -0.600000 8.005871 +3.700000 -0.500000 7.519910 +3.700000 -0.400000 7.053950 +3.700000 -0.300000 6.607989 +3.700000 -0.200000 6.182029 +3.700000 -0.100000 5.776068 +3.700000 -0.000000 5.390107 +3.700000 0.100000 5.024147 +3.700000 0.200000 4.678186 +3.700000 0.300000 4.352226 +3.700000 0.400000 4.046265 +3.700000 0.500000 3.760304 +3.700000 0.600000 3.494344 +3.700000 0.700000 3.248383 +3.700000 0.800000 3.022423 +3.700000 0.900000 2.816462 +3.700000 1.000000 2.630501 +3.700000 1.100000 2.464541 +3.700000 1.200000 2.318580 +3.700000 1.300000 2.192620 +3.700000 1.400000 2.086659 +3.700000 1.500000 2.000698 +3.700000 1.600000 1.934738 +3.700000 1.700000 1.888777 +3.700000 1.800000 1.862816 +3.700000 1.900000 1.856856 +3.700000 2.000000 1.870895 +3.700000 2.100000 1.904935 +3.700000 2.200000 1.958974 +3.700000 2.300000 2.033013 +3.700000 2.400000 2.127053 +3.700000 2.500000 2.241092 +3.700000 2.600000 2.375132 +3.700000 2.700000 2.529171 +3.700000 2.800000 2.703210 +3.700000 2.900000 2.897250 +3.700000 3.000000 3.111289 +3.700000 3.100000 3.345329 +3.700000 3.200000 3.599368 +3.700000 3.300000 3.873407 +3.700000 3.400000 4.167447 +3.700000 3.500000 4.481486 +3.700000 3.600000 4.815526 +3.700000 3.700000 5.169565 +3.700000 3.800000 5.543604 +3.700000 3.900000 5.937644 +3.700000 4.000000 6.351683 +3.700000 4.100000 6.785723 +3.700000 4.200000 7.239762 +3.700000 4.300000 7.713801 +3.700000 4.400000 8.207841 +3.700000 4.500000 8.721880 +3.700000 4.600000 9.255919 +3.700000 4.700000 9.809959 +3.700000 4.800000 10.383998 +3.700000 4.900000 10.978038 +3.700000 5.000000 11.592077 +3.700000 5.100000 12.226116 +3.700000 5.200000 12.880156 +3.700000 5.300000 13.554195 +3.700000 5.400000 14.248235 +3.700000 5.500000 14.962274 +3.700000 5.600000 15.696313 +3.700000 5.700000 16.450353 +3.700000 5.800000 17.224392 +3.700000 5.900000 18.018432 +3.700000 6.000000 18.832471 +3.700000 6.100000 19.666510 +3.700000 6.200000 20.520550 +3.700000 6.300000 21.394589 +3.700000 6.400000 22.288629 +3.700000 6.500000 23.202668 +3.700000 6.600000 24.136707 +3.700000 6.700000 25.090747 +3.700000 6.800000 26.064786 +3.700000 6.900000 27.058826 +3.700000 7.000000 28.072865 +3.700000 7.100000 29.106904 +3.700000 7.200000 30.160944 +3.700000 7.300000 31.234983 +3.700000 7.400000 32.329022 +3.700000 7.500000 33.443062 +3.700000 7.600000 34.577101 +3.700000 7.700000 35.731141 +3.700000 7.800000 36.905180 +3.700000 7.900000 38.099219 +3.700000 8.000000 39.313259 +3.700000 8.100000 40.547298 +3.700000 8.200000 41.801338 +3.700000 8.300000 43.075377 +3.700000 8.400000 44.369416 +3.700000 8.500000 45.683456 +3.700000 8.600000 47.017495 +3.700000 8.700000 48.371535 +3.700000 8.800000 49.745574 +3.700000 8.900000 51.139613 +3.700000 9.000000 52.553653 +3.700000 9.100000 53.987692 +3.700000 9.200000 55.441732 +3.700000 9.300000 56.915771 +3.700000 9.400000 58.409810 +3.700000 9.500000 59.923850 +3.700000 9.600000 61.457889 +3.700000 9.700000 63.011929 +3.700000 9.800000 64.585968 +3.700000 9.900000 66.180007 +3.700000 10.000000 67.794047 +3.700000 10.100000 69.428086 +3.700000 10.200000 71.082125 +3.700000 10.300000 72.756165 +3.700000 10.400000 74.450204 +3.700000 10.500000 76.164244 +3.700000 10.600000 77.898283 +3.700000 10.700000 79.652322 +3.700000 10.800000 81.426362 +3.700000 10.900000 83.220401 +3.700000 11.000000 85.034441 +3.700000 11.100000 86.868480 +3.700000 11.200000 88.722519 +3.700000 11.300000 90.596559 +3.700000 11.400000 92.490598 +3.700000 11.500000 94.404638 +3.700000 11.600000 96.338677 +3.700000 11.700000 98.292716 +3.700000 11.800000 100.266756 +3.700000 11.900000 102.260795 +3.700000 12.000000 104.274835 +3.700000 12.100000 106.308874 +3.700000 12.200000 108.362913 +3.700000 12.300000 110.436953 +3.700000 12.400000 112.530992 +3.700000 12.500000 114.645032 +3.700000 12.600000 116.779071 +3.700000 12.700000 118.933110 +3.700000 12.800000 121.107150 +3.700000 12.900000 123.301189 +3.700000 13.000000 125.515228 +3.700000 13.100000 127.749268 +3.700000 13.200000 130.003307 +3.700000 13.300000 132.277347 +3.700000 13.400000 134.571386 +3.700000 13.500000 136.885425 +3.700000 13.600000 139.219465 +3.700000 13.700000 141.573504 +3.700000 13.800000 143.947544 +3.700000 13.900000 146.341583 +3.700000 14.000000 148.755622 +3.700000 14.100000 151.189662 +3.700000 14.200000 153.643701 +3.700000 14.300000 156.117741 +3.700000 14.400000 158.611780 +3.700000 14.500000 161.125819 +3.700000 14.600000 163.659859 +3.700000 14.700000 166.213898 +3.700000 14.800000 168.787938 +3.700000 14.900000 171.381977 +3.700000 15.000000 173.996016 + +3.800000 -5.000000 48.883843 +3.800000 -4.900000 47.530335 +3.800000 -4.800000 46.196828 +3.800000 -4.700000 44.883321 +3.800000 -4.600000 43.589813 +3.800000 -4.500000 42.316306 +3.800000 -4.400000 41.062799 +3.800000 -4.300000 39.829291 +3.800000 -4.200000 38.615784 +3.800000 -4.100000 37.422277 +3.800000 -4.000000 36.248770 +3.800000 -3.900000 35.095262 +3.800000 -3.800000 33.961755 +3.800000 -3.700000 32.848248 +3.800000 -3.600000 31.754740 +3.800000 -3.500000 30.681233 +3.800000 -3.400000 29.627726 +3.800000 -3.300000 28.594219 +3.800000 -3.200000 27.580711 +3.800000 -3.100000 26.587204 +3.800000 -3.000000 25.613697 +3.800000 -2.900000 24.660189 +3.800000 -2.800000 23.726682 +3.800000 -2.700000 22.813175 +3.800000 -2.600000 21.919667 +3.800000 -2.500000 21.046160 +3.800000 -2.400000 20.192653 +3.800000 -2.300000 19.359146 +3.800000 -2.200000 18.545638 +3.800000 -2.100000 17.752131 +3.800000 -2.000000 16.978624 +3.800000 -1.900000 16.225116 +3.800000 -1.800000 15.491609 +3.800000 -1.700000 14.778102 +3.800000 -1.600000 14.084594 +3.800000 -1.500000 13.411087 +3.800000 -1.400000 12.757580 +3.800000 -1.300000 12.124073 +3.800000 -1.200000 11.510565 +3.800000 -1.100000 10.917058 +3.800000 -1.000000 10.343551 +3.800000 -0.900000 9.790043 +3.800000 -0.800000 9.256536 +3.800000 -0.700000 8.743029 +3.800000 -0.600000 8.249522 +3.800000 -0.500000 7.776014 +3.800000 -0.400000 7.322507 +3.800000 -0.300000 6.889000 +3.800000 -0.200000 6.475492 +3.800000 -0.100000 6.081985 +3.800000 -0.000000 5.708478 +3.800000 0.100000 5.354970 +3.800000 0.200000 5.021463 +3.800000 0.300000 4.707956 +3.800000 0.400000 4.414449 +3.800000 0.500000 4.140941 +3.800000 0.600000 3.887434 +3.800000 0.700000 3.653927 +3.800000 0.800000 3.440419 +3.800000 0.900000 3.246912 +3.800000 1.000000 3.073405 +3.800000 1.100000 2.919898 +3.800000 1.200000 2.786390 +3.800000 1.300000 2.672883 +3.800000 1.400000 2.579376 +3.800000 1.500000 2.505868 +3.800000 1.600000 2.452361 +3.800000 1.700000 2.418854 +3.800000 1.800000 2.405346 +3.800000 1.900000 2.411839 +3.800000 2.000000 2.438332 +3.800000 2.100000 2.484825 +3.800000 2.200000 2.551317 +3.800000 2.300000 2.637810 +3.800000 2.400000 2.744303 +3.800000 2.500000 2.870795 +3.800000 2.600000 3.017288 +3.800000 2.700000 3.183781 +3.800000 2.800000 3.370274 +3.800000 2.900000 3.576766 +3.800000 3.000000 3.803259 +3.800000 3.100000 4.049752 +3.800000 3.200000 4.316244 +3.800000 3.300000 4.602737 +3.800000 3.400000 4.909230 +3.800000 3.500000 5.235722 +3.800000 3.600000 5.582215 +3.800000 3.700000 5.948708 +3.800000 3.800000 6.335201 +3.800000 3.900000 6.741693 +3.800000 4.000000 7.168186 +3.800000 4.100000 7.614679 +3.800000 4.200000 8.081171 +3.800000 4.300000 8.567664 +3.800000 4.400000 9.074157 +3.800000 4.500000 9.600649 +3.800000 4.600000 10.147142 +3.800000 4.700000 10.713635 +3.800000 4.800000 11.300128 +3.800000 4.900000 11.906620 +3.800000 5.000000 12.533113 +3.800000 5.100000 13.179606 +3.800000 5.200000 13.846098 +3.800000 5.300000 14.532591 +3.800000 5.400000 15.239084 +3.800000 5.500000 15.965577 +3.800000 5.600000 16.712069 +3.800000 5.700000 17.478562 +3.800000 5.800000 18.265055 +3.800000 5.900000 19.071547 +3.800000 6.000000 19.898040 +3.800000 6.100000 20.744533 +3.800000 6.200000 21.611025 +3.800000 6.300000 22.497518 +3.800000 6.400000 23.404011 +3.800000 6.500000 24.330504 +3.800000 6.600000 25.276996 +3.800000 6.700000 26.243489 +3.800000 6.800000 27.229982 +3.800000 6.900000 28.236474 +3.800000 7.000000 29.262967 +3.800000 7.100000 30.309460 +3.800000 7.200000 31.375953 +3.800000 7.300000 32.462445 +3.800000 7.400000 33.568938 +3.800000 7.500000 34.695431 +3.800000 7.600000 35.841923 +3.800000 7.700000 37.008416 +3.800000 7.800000 38.194909 +3.800000 7.900000 39.401401 +3.800000 8.000000 40.627894 +3.800000 8.100000 41.874387 +3.800000 8.200000 43.140880 +3.800000 8.300000 44.427372 +3.800000 8.400000 45.733865 +3.800000 8.500000 47.060358 +3.800000 8.600000 48.406850 +3.800000 8.700000 49.773343 +3.800000 8.800000 51.159836 +3.800000 8.900000 52.566329 +3.800000 9.000000 53.992821 +3.800000 9.100000 55.439314 +3.800000 9.200000 56.905807 +3.800000 9.300000 58.392299 +3.800000 9.400000 59.898792 +3.800000 9.500000 61.425285 +3.800000 9.600000 62.971777 +3.800000 9.700000 64.538270 +3.800000 9.800000 66.124763 +3.800000 9.900000 67.731256 +3.800000 10.000000 69.357748 +3.800000 10.100000 71.004241 +3.800000 10.200000 72.670734 +3.800000 10.300000 74.357226 +3.800000 10.400000 76.063719 +3.800000 10.500000 77.790212 +3.800000 10.600000 79.536705 +3.800000 10.700000 81.303197 +3.800000 10.800000 83.089690 +3.800000 10.900000 84.896183 +3.800000 11.000000 86.722675 +3.800000 11.100000 88.569168 +3.800000 11.200000 90.435661 +3.800000 11.300000 92.322153 +3.800000 11.400000 94.228646 +3.800000 11.500000 96.155139 +3.800000 11.600000 98.101632 +3.800000 11.700000 100.068124 +3.800000 11.800000 102.054617 +3.800000 11.900000 104.061110 +3.800000 12.000000 106.087602 +3.800000 12.100000 108.134095 +3.800000 12.200000 110.200588 +3.800000 12.300000 112.287080 +3.800000 12.400000 114.393573 +3.800000 12.500000 116.520066 +3.800000 12.600000 118.666559 +3.800000 12.700000 120.833051 +3.800000 12.800000 123.019544 +3.800000 12.900000 125.226037 +3.800000 13.000000 127.452529 +3.800000 13.100000 129.699022 +3.800000 13.200000 131.965515 +3.800000 13.300000 134.252008 +3.800000 13.400000 136.558500 +3.800000 13.500000 138.884993 +3.800000 13.600000 141.231486 +3.800000 13.700000 143.597978 +3.800000 13.800000 145.984471 +3.800000 13.900000 148.390964 +3.800000 14.000000 150.817456 +3.800000 14.100000 153.263949 +3.800000 14.200000 155.730442 +3.800000 14.300000 158.216935 +3.800000 14.400000 160.723427 +3.800000 14.500000 163.249920 +3.800000 14.600000 165.796413 +3.800000 14.700000 168.362905 +3.800000 14.800000 170.949398 +3.800000 14.900000 173.555891 +3.800000 15.000000 176.182384 + +3.900000 -5.000000 48.698102 +3.900000 -4.900000 47.356531 +3.900000 -4.800000 46.034960 +3.900000 -4.700000 44.733389 +3.900000 -4.600000 43.451819 +3.900000 -4.500000 42.190248 +3.900000 -4.400000 40.948677 +3.900000 -4.300000 39.727107 +3.900000 -4.200000 38.525536 +3.900000 -4.100000 37.343965 +3.900000 -4.000000 36.182394 +3.900000 -3.900000 35.040824 +3.900000 -3.800000 33.919253 +3.900000 -3.700000 32.817682 +3.900000 -3.600000 31.736111 +3.900000 -3.500000 30.674541 +3.900000 -3.400000 29.632970 +3.900000 -3.300000 28.611399 +3.900000 -3.200000 27.609829 +3.900000 -3.100000 26.628258 +3.900000 -3.000000 25.666687 +3.900000 -2.900000 24.725116 +3.900000 -2.800000 23.803546 +3.900000 -2.700000 22.901975 +3.900000 -2.600000 22.020404 +3.900000 -2.500000 21.158834 +3.900000 -2.400000 20.317263 +3.900000 -2.300000 19.495692 +3.900000 -2.200000 18.694121 +3.900000 -2.100000 17.912551 +3.900000 -2.000000 17.150980 +3.900000 -1.900000 16.409409 +3.900000 -1.800000 15.687839 +3.900000 -1.700000 14.986268 +3.900000 -1.600000 14.304697 +3.900000 -1.500000 13.643126 +3.900000 -1.400000 13.001556 +3.900000 -1.300000 12.379985 +3.900000 -1.200000 11.778414 +3.900000 -1.100000 11.196843 +3.900000 -1.000000 10.635273 +3.900000 -0.900000 10.093702 +3.900000 -0.800000 9.572131 +3.900000 -0.700000 9.070561 +3.900000 -0.600000 8.588990 +3.900000 -0.500000 8.127419 +3.900000 -0.400000 7.685848 +3.900000 -0.300000 7.264278 +3.900000 -0.200000 6.862707 +3.900000 -0.100000 6.481136 +3.900000 -0.000000 6.119566 +3.900000 0.100000 5.777995 +3.900000 0.200000 5.456424 +3.900000 0.300000 5.154853 +3.900000 0.400000 4.873283 +3.900000 0.500000 4.611712 +3.900000 0.600000 4.370141 +3.900000 0.700000 4.148570 +3.900000 0.800000 3.947000 +3.900000 0.900000 3.765429 +3.900000 1.000000 3.603858 +3.900000 1.100000 3.462288 +3.900000 1.200000 3.340717 +3.900000 1.300000 3.239146 +3.900000 1.400000 3.157575 +3.900000 1.500000 3.096005 +3.900000 1.600000 3.054434 +3.900000 1.700000 3.032863 +3.900000 1.800000 3.031293 +3.900000 1.900000 3.049722 +3.900000 2.000000 3.088151 +3.900000 2.100000 3.146580 +3.900000 2.200000 3.225010 +3.900000 2.300000 3.323439 +3.900000 2.400000 3.441868 +3.900000 2.500000 3.580298 +3.900000 2.600000 3.738727 +3.900000 2.700000 3.917156 +3.900000 2.800000 4.115585 +3.900000 2.900000 4.334015 +3.900000 3.000000 4.572444 +3.900000 3.100000 4.830873 +3.900000 3.200000 5.109302 +3.900000 3.300000 5.407732 +3.900000 3.400000 5.726161 +3.900000 3.500000 6.064590 +3.900000 3.600000 6.423020 +3.900000 3.700000 6.801449 +3.900000 3.800000 7.199878 +3.900000 3.900000 7.618307 +3.900000 4.000000 8.056737 +3.900000 4.100000 8.515166 +3.900000 4.200000 8.993595 +3.900000 4.300000 9.492025 +3.900000 4.400000 10.010454 +3.900000 4.500000 10.548883 +3.900000 4.600000 11.107312 +3.900000 4.700000 11.685742 +3.900000 4.800000 12.284171 +3.900000 4.900000 12.902600 +3.900000 5.000000 13.541030 +3.900000 5.100000 14.199459 +3.900000 5.200000 14.877888 +3.900000 5.300000 15.576317 +3.900000 5.400000 16.294747 +3.900000 5.500000 17.033176 +3.900000 5.600000 17.791605 +3.900000 5.700000 18.570034 +3.900000 5.800000 19.368464 +3.900000 5.900000 20.186893 +3.900000 6.000000 21.025322 +3.900000 6.100000 21.883752 +3.900000 6.200000 22.762181 +3.900000 6.300000 23.660610 +3.900000 6.400000 24.579039 +3.900000 6.500000 25.517469 +3.900000 6.600000 26.475898 +3.900000 6.700000 27.454327 +3.900000 6.800000 28.452757 +3.900000 6.900000 29.471186 +3.900000 7.000000 30.509615 +3.900000 7.100000 31.568044 +3.900000 7.200000 32.646474 +3.900000 7.300000 33.744903 +3.900000 7.400000 34.863332 +3.900000 7.500000 36.001761 +3.900000 7.600000 37.160191 +3.900000 7.700000 38.338620 +3.900000 7.800000 39.537049 +3.900000 7.900000 40.755479 +3.900000 8.000000 41.993908 +3.900000 8.100000 43.252337 +3.900000 8.200000 44.530766 +3.900000 8.300000 45.829196 +3.900000 8.400000 47.147625 +3.900000 8.500000 48.486054 +3.900000 8.600000 49.844484 +3.900000 8.700000 51.222913 +3.900000 8.800000 52.621342 +3.900000 8.900000 54.039771 +3.900000 9.000000 55.478201 +3.900000 9.100000 56.936630 +3.900000 9.200000 58.415059 +3.900000 9.300000 59.913489 +3.900000 9.400000 61.431918 +3.900000 9.500000 62.970347 +3.900000 9.600000 64.528776 +3.900000 9.700000 66.107206 +3.900000 9.800000 67.705635 +3.900000 9.900000 69.324064 +3.900000 10.000000 70.962493 +3.900000 10.100000 72.620923 +3.900000 10.200000 74.299352 +3.900000 10.300000 75.997781 +3.900000 10.400000 77.716211 +3.900000 10.500000 79.454640 +3.900000 10.600000 81.213069 +3.900000 10.700000 82.991498 +3.900000 10.800000 84.789928 +3.900000 10.900000 86.608357 +3.900000 11.000000 88.446786 +3.900000 11.100000 90.305216 +3.900000 11.200000 92.183645 +3.900000 11.300000 94.082074 +3.900000 11.400000 96.000503 +3.900000 11.500000 97.938933 +3.900000 11.600000 99.897362 +3.900000 11.700000 101.875791 +3.900000 11.800000 103.874220 +3.900000 11.900000 105.892650 +3.900000 12.000000 107.931079 +3.900000 12.100000 109.989508 +3.900000 12.200000 112.067938 +3.900000 12.300000 114.166367 +3.900000 12.400000 116.284796 +3.900000 12.500000 118.423225 +3.900000 12.600000 120.581655 +3.900000 12.700000 122.760084 +3.900000 12.800000 124.958513 +3.900000 12.900000 127.176943 +3.900000 13.000000 129.415372 +3.900000 13.100000 131.673801 +3.900000 13.200000 133.952230 +3.900000 13.300000 136.250660 +3.900000 13.400000 138.569089 +3.900000 13.500000 140.907518 +3.900000 13.600000 143.265948 +3.900000 13.700000 145.644377 +3.900000 13.800000 148.042806 +3.900000 13.900000 150.461235 +3.900000 14.000000 152.899665 +3.900000 14.100000 155.358094 +3.900000 14.200000 157.836523 +3.900000 14.300000 160.334952 +3.900000 14.400000 162.853382 +3.900000 14.500000 165.391811 +3.900000 14.600000 167.950240 +3.900000 14.700000 170.528670 +3.900000 14.800000 173.127099 +3.900000 14.900000 175.745528 +3.900000 15.000000 178.383957 + +4.000000 -5.000000 48.623750 +4.000000 -4.900000 47.293599 +4.000000 -4.800000 45.983448 +4.000000 -4.700000 44.693298 +4.000000 -4.600000 43.423147 +4.000000 -4.500000 42.172996 +4.000000 -4.400000 40.942845 +4.000000 -4.300000 39.732694 +4.000000 -4.200000 38.542543 +4.000000 -4.100000 37.372392 +4.000000 -4.000000 36.222241 +4.000000 -3.900000 35.092090 +4.000000 -3.800000 33.981940 +4.000000 -3.700000 32.891789 +4.000000 -3.600000 31.821638 +4.000000 -3.500000 30.771487 +4.000000 -3.400000 29.741336 +4.000000 -3.300000 28.731185 +4.000000 -3.200000 27.741034 +4.000000 -3.100000 26.770883 +4.000000 -3.000000 25.820732 +4.000000 -2.900000 24.890582 +4.000000 -2.800000 23.980431 +4.000000 -2.700000 23.090280 +4.000000 -2.600000 22.220129 +4.000000 -2.500000 21.369978 +4.000000 -2.400000 20.539827 +4.000000 -2.300000 19.729676 +4.000000 -2.200000 18.939525 +4.000000 -2.100000 18.169375 +4.000000 -2.000000 17.419224 +4.000000 -1.900000 16.689073 +4.000000 -1.800000 15.978922 +4.000000 -1.700000 15.288771 +4.000000 -1.600000 14.618620 +4.000000 -1.500000 13.968469 +4.000000 -1.400000 13.338318 +4.000000 -1.300000 12.728167 +4.000000 -1.200000 12.138017 +4.000000 -1.100000 11.567866 +4.000000 -1.000000 11.017715 +4.000000 -0.900000 10.487564 +4.000000 -0.800000 9.977413 +4.000000 -0.700000 9.487262 +4.000000 -0.600000 9.017111 +4.000000 -0.500000 8.566960 +4.000000 -0.400000 8.136809 +4.000000 -0.300000 7.726659 +4.000000 -0.200000 7.336508 +4.000000 -0.100000 6.966357 +4.000000 -0.000000 6.616206 +4.000000 0.100000 6.286055 +4.000000 0.200000 5.975904 +4.000000 0.300000 5.685753 +4.000000 0.400000 5.415602 +4.000000 0.500000 5.165452 +4.000000 0.600000 4.935301 +4.000000 0.700000 4.725150 +4.000000 0.800000 4.534999 +4.000000 0.900000 4.364848 +4.000000 1.000000 4.214697 +4.000000 1.100000 4.084546 +4.000000 1.200000 3.974395 +4.000000 1.300000 3.884244 +4.000000 1.400000 3.814094 +4.000000 1.500000 3.763943 +4.000000 1.600000 3.733792 +4.000000 1.700000 3.723641 +4.000000 1.800000 3.733490 +4.000000 1.900000 3.763339 +4.000000 2.000000 3.813188 +4.000000 2.100000 3.883037 +4.000000 2.200000 3.972886 +4.000000 2.300000 4.082736 +4.000000 2.400000 4.212585 +4.000000 2.500000 4.362434 +4.000000 2.600000 4.532283 +4.000000 2.700000 4.722132 +4.000000 2.800000 4.931981 +4.000000 2.900000 5.161830 +4.000000 3.000000 5.411679 +4.000000 3.100000 5.681529 +4.000000 3.200000 5.971378 +4.000000 3.300000 6.281227 +4.000000 3.400000 6.611076 +4.000000 3.500000 6.960925 +4.000000 3.600000 7.330774 +4.000000 3.700000 7.720623 +4.000000 3.800000 8.130472 +4.000000 3.900000 8.560321 +4.000000 4.000000 9.010171 +4.000000 4.100000 9.480020 +4.000000 4.200000 9.969869 +4.000000 4.300000 10.479718 +4.000000 4.400000 11.009567 +4.000000 4.500000 11.559416 +4.000000 4.600000 12.129265 +4.000000 4.700000 12.719114 +4.000000 4.800000 13.328963 +4.000000 4.900000 13.958813 +4.000000 5.000000 14.608662 +4.000000 5.100000 15.278511 +4.000000 5.200000 15.968360 +4.000000 5.300000 16.678209 +4.000000 5.400000 17.408058 +4.000000 5.500000 18.157907 +4.000000 5.600000 18.927756 +4.000000 5.700000 19.717606 +4.000000 5.800000 20.527455 +4.000000 5.900000 21.357304 +4.000000 6.000000 22.207153 +4.000000 6.100000 23.077002 +4.000000 6.200000 23.966851 +4.000000 6.300000 24.876700 +4.000000 6.400000 25.806549 +4.000000 6.500000 26.756398 +4.000000 6.600000 27.726248 +4.000000 6.700000 28.716097 +4.000000 6.800000 29.725946 +4.000000 6.900000 30.755795 +4.000000 7.000000 31.805644 +4.000000 7.100000 32.875493 +4.000000 7.200000 33.965342 +4.000000 7.300000 35.075191 +4.000000 7.400000 36.205040 +4.000000 7.500000 37.354890 +4.000000 7.600000 38.524739 +4.000000 7.700000 39.714588 +4.000000 7.800000 40.924437 +4.000000 7.900000 42.154286 +4.000000 8.000000 43.404135 +4.000000 8.100000 44.673984 +4.000000 8.200000 45.963833 +4.000000 8.300000 47.273683 +4.000000 8.400000 48.603532 +4.000000 8.500000 49.953381 +4.000000 8.600000 51.323230 +4.000000 8.700000 52.713079 +4.000000 8.800000 54.122928 +4.000000 8.900000 55.552777 +4.000000 9.000000 57.002626 +4.000000 9.100000 58.472475 +4.000000 9.200000 59.962325 +4.000000 9.300000 61.472174 +4.000000 9.400000 63.002023 +4.000000 9.500000 64.551872 +4.000000 9.600000 66.121721 +4.000000 9.700000 67.711570 +4.000000 9.800000 69.321419 +4.000000 9.900000 70.951268 +4.000000 10.000000 72.601117 +4.000000 10.100000 74.270967 +4.000000 10.200000 75.960816 +4.000000 10.300000 77.670665 +4.000000 10.400000 79.400514 +4.000000 10.500000 81.150363 +4.000000 10.600000 82.920212 +4.000000 10.700000 84.710061 +4.000000 10.800000 86.519910 +4.000000 10.900000 88.349760 +4.000000 11.000000 90.199609 +4.000000 11.100000 92.069458 +4.000000 11.200000 93.959307 +4.000000 11.300000 95.869156 +4.000000 11.400000 97.799005 +4.000000 11.500000 99.748854 +4.000000 11.600000 101.718703 +4.000000 11.700000 103.708552 +4.000000 11.800000 105.718402 +4.000000 11.900000 107.748251 +4.000000 12.000000 109.798100 +4.000000 12.100000 111.867949 +4.000000 12.200000 113.957798 +4.000000 12.300000 116.067647 +4.000000 12.400000 118.197496 +4.000000 12.500000 120.347345 +4.000000 12.600000 122.517194 +4.000000 12.700000 124.707044 +4.000000 12.800000 126.916893 +4.000000 12.900000 129.146742 +4.000000 13.000000 131.396591 +4.000000 13.100000 133.666440 +4.000000 13.200000 135.956289 +4.000000 13.300000 138.266138 +4.000000 13.400000 140.595987 +4.000000 13.500000 142.945837 +4.000000 13.600000 145.315686 +4.000000 13.700000 147.705535 +4.000000 13.800000 150.115384 +4.000000 13.900000 152.545233 +4.000000 14.000000 154.995082 +4.000000 14.100000 157.464931 +4.000000 14.200000 159.954780 +4.000000 14.300000 162.464629 +4.000000 14.400000 164.994479 +4.000000 14.500000 167.544328 +4.000000 14.600000 170.114177 +4.000000 14.700000 172.704026 +4.000000 14.800000 175.313875 +4.000000 14.900000 177.943724 +4.000000 15.000000 180.593573 + +4.100000 -5.000000 48.652968 +4.100000 -4.900000 47.333720 +4.100000 -4.800000 46.034472 +4.100000 -4.700000 44.755224 +4.100000 -4.600000 43.495977 +4.100000 -4.500000 42.256729 +4.100000 -4.400000 41.037481 +4.100000 -4.300000 39.838233 +4.100000 -4.200000 38.658985 +4.100000 -4.100000 37.499738 +4.100000 -4.000000 36.360490 +4.100000 -3.900000 35.241242 +4.100000 -3.800000 34.141994 +4.100000 -3.700000 33.062746 +4.100000 -3.600000 32.003499 +4.100000 -3.500000 30.964251 +4.100000 -3.400000 29.945003 +4.100000 -3.300000 28.945755 +4.100000 -3.200000 27.966508 +4.100000 -3.100000 27.007260 +4.100000 -3.000000 26.068012 +4.100000 -2.900000 25.148764 +4.100000 -2.800000 24.249516 +4.100000 -2.700000 23.370269 +4.100000 -2.600000 22.511021 +4.100000 -2.500000 21.671773 +4.100000 -2.400000 20.852525 +4.100000 -2.300000 20.053277 +4.100000 -2.200000 19.274030 +4.100000 -2.100000 18.514782 +4.100000 -2.000000 17.775534 +4.100000 -1.900000 17.056286 +4.100000 -1.800000 16.357038 +4.100000 -1.700000 15.677791 +4.100000 -1.600000 15.018543 +4.100000 -1.500000 14.379295 +4.100000 -1.400000 13.760047 +4.100000 -1.300000 13.160800 +4.100000 -1.200000 12.581552 +4.100000 -1.100000 12.022304 +4.100000 -1.000000 11.483056 +4.100000 -0.900000 10.963808 +4.100000 -0.800000 10.464561 +4.100000 -0.700000 9.985313 +4.100000 -0.600000 9.526065 +4.100000 -0.500000 9.086817 +4.100000 -0.400000 8.667569 +4.100000 -0.300000 8.268322 +4.100000 -0.200000 7.889074 +4.100000 -0.100000 7.529826 +4.100000 -0.000000 7.190578 +4.100000 0.100000 6.871331 +4.100000 0.200000 6.572083 +4.100000 0.300000 6.292835 +4.100000 0.400000 6.033587 +4.100000 0.500000 5.794339 +4.100000 0.600000 5.575092 +4.100000 0.700000 5.375844 +4.100000 0.800000 5.196596 +4.100000 0.900000 5.037348 +4.100000 1.000000 4.898100 +4.100000 1.100000 4.778853 +4.100000 1.200000 4.679605 +4.100000 1.300000 4.600357 +4.100000 1.400000 4.541109 +4.100000 1.500000 4.501862 +4.100000 1.600000 4.482614 +4.100000 1.700000 4.483366 +4.100000 1.800000 4.504118 +4.100000 1.900000 4.544870 +4.100000 2.000000 4.605623 +4.100000 2.100000 4.686375 +4.100000 2.200000 4.787127 +4.100000 2.300000 4.907879 +4.100000 2.400000 5.048631 +4.100000 2.500000 5.209384 +4.100000 2.600000 5.390136 +4.100000 2.700000 5.590888 +4.100000 2.800000 5.811640 +4.100000 2.900000 6.052393 +4.100000 3.000000 6.313145 +4.100000 3.100000 6.593897 +4.100000 3.200000 6.894649 +4.100000 3.300000 7.215401 +4.100000 3.400000 7.556154 +4.100000 3.500000 7.916906 +4.100000 3.600000 8.297658 +4.100000 3.700000 8.698410 +4.100000 3.800000 9.119162 +4.100000 3.900000 9.559915 +4.100000 4.000000 10.020667 +4.100000 4.100000 10.501419 +4.100000 4.200000 11.002171 +4.100000 4.300000 11.522924 +4.100000 4.400000 12.063676 +4.100000 4.500000 12.624428 +4.100000 4.600000 13.205180 +4.100000 4.700000 13.805932 +4.100000 4.800000 14.426685 +4.100000 4.900000 15.067437 +4.100000 5.000000 15.728189 +4.100000 5.100000 16.408941 +4.100000 5.200000 17.109693 +4.100000 5.300000 17.830446 +4.100000 5.400000 18.571198 +4.100000 5.500000 19.331950 +4.100000 5.600000 20.112702 +4.100000 5.700000 20.913455 +4.100000 5.800000 21.734207 +4.100000 5.900000 22.574959 +4.100000 6.000000 23.435711 +4.100000 6.100000 24.316463 +4.100000 6.200000 25.217216 +4.100000 6.300000 26.137968 +4.100000 6.400000 27.078720 +4.100000 6.500000 28.039472 +4.100000 6.600000 29.020224 +4.100000 6.700000 30.020977 +4.100000 6.800000 31.041729 +4.100000 6.900000 32.082481 +4.100000 7.000000 33.143233 +4.100000 7.100000 34.223986 +4.100000 7.200000 35.324738 +4.100000 7.300000 36.445490 +4.100000 7.400000 37.586242 +4.100000 7.500000 38.746994 +4.100000 7.600000 39.927747 +4.100000 7.700000 41.128499 +4.100000 7.800000 42.349251 +4.100000 7.900000 43.590003 +4.100000 8.000000 44.850755 +4.100000 8.100000 46.131508 +4.100000 8.200000 47.432260 +4.100000 8.300000 48.753012 +4.100000 8.400000 50.093764 +4.100000 8.500000 51.454516 +4.100000 8.600000 52.835269 +4.100000 8.700000 54.236021 +4.100000 8.800000 55.656773 +4.100000 8.900000 57.097525 +4.100000 9.000000 58.558278 +4.100000 9.100000 60.039030 +4.100000 9.200000 61.539782 +4.100000 9.300000 63.060534 +4.100000 9.400000 64.601286 +4.100000 9.500000 66.162039 +4.100000 9.600000 67.742791 +4.100000 9.700000 69.343543 +4.100000 9.800000 70.964295 +4.100000 9.900000 72.605047 +4.100000 10.000000 74.265800 +4.100000 10.100000 75.946552 +4.100000 10.200000 77.647304 +4.100000 10.300000 79.368056 +4.100000 10.400000 81.108809 +4.100000 10.500000 82.869561 +4.100000 10.600000 84.650313 +4.100000 10.700000 86.451065 +4.100000 10.800000 88.271817 +4.100000 10.900000 90.112570 +4.100000 11.000000 91.973322 +4.100000 11.100000 93.854074 +4.100000 11.200000 95.754826 +4.100000 11.300000 97.675578 +4.100000 11.400000 99.616331 +4.100000 11.500000 101.577083 +4.100000 11.600000 103.557835 +4.100000 11.700000 105.558587 +4.100000 11.800000 107.579340 +4.100000 11.900000 109.620092 +4.100000 12.000000 111.680844 +4.100000 12.100000 113.761596 +4.100000 12.200000 115.862348 +4.100000 12.300000 117.983101 +4.100000 12.400000 120.123853 +4.100000 12.500000 122.284605 +4.100000 12.600000 124.465357 +4.100000 12.700000 126.666109 +4.100000 12.800000 128.886862 +4.100000 12.900000 131.127614 +4.100000 13.000000 133.388366 +4.100000 13.100000 135.669118 +4.100000 13.200000 137.969871 +4.100000 13.300000 140.290623 +4.100000 13.400000 142.631375 +4.100000 13.500000 144.992127 +4.100000 13.600000 147.372879 +4.100000 13.700000 149.773632 +4.100000 13.800000 152.194384 +4.100000 13.900000 154.635136 +4.100000 14.000000 157.095888 +4.100000 14.100000 159.576640 +4.100000 14.200000 162.077393 +4.100000 14.300000 164.598145 +4.100000 14.400000 167.138897 +4.100000 14.500000 169.699649 +4.100000 14.600000 172.280402 +4.100000 14.700000 174.881154 +4.100000 14.800000 177.501906 +4.100000 14.900000 180.142658 +4.100000 15.000000 182.803410 + +4.200000 -5.000000 48.777347 +4.200000 -4.900000 47.468485 +4.200000 -4.800000 46.179624 +4.200000 -4.700000 44.910763 +4.200000 -4.600000 43.661901 +4.200000 -4.500000 42.433040 +4.200000 -4.400000 41.224178 +4.200000 -4.300000 40.035317 +4.200000 -4.200000 38.866456 +4.200000 -4.100000 37.717594 +4.200000 -4.000000 36.588733 +4.200000 -3.900000 35.479871 +4.200000 -3.800000 34.391010 +4.200000 -3.700000 33.322148 +4.200000 -3.600000 32.273287 +4.200000 -3.500000 31.244426 +4.200000 -3.400000 30.235564 +4.200000 -3.300000 29.246703 +4.200000 -3.200000 28.277841 +4.200000 -3.100000 27.328980 +4.200000 -3.000000 26.400118 +4.200000 -2.900000 25.491257 +4.200000 -2.800000 24.602396 +4.200000 -2.700000 23.733534 +4.200000 -2.600000 22.884673 +4.200000 -2.500000 22.055811 +4.200000 -2.400000 21.246950 +4.200000 -2.300000 20.458088 +4.200000 -2.200000 19.689227 +4.200000 -2.100000 18.940366 +4.200000 -2.000000 18.211504 +4.200000 -1.900000 17.502643 +4.200000 -1.800000 16.813781 +4.200000 -1.700000 16.144920 +4.200000 -1.600000 15.496058 +4.200000 -1.500000 14.867197 +4.200000 -1.400000 14.258336 +4.200000 -1.300000 13.669474 +4.200000 -1.200000 13.100613 +4.200000 -1.100000 12.551751 +4.200000 -1.000000 12.022890 +4.200000 -0.900000 11.514028 +4.200000 -0.800000 11.025167 +4.200000 -0.700000 10.556306 +4.200000 -0.600000 10.107444 +4.200000 -0.500000 9.678583 +4.200000 -0.400000 9.269721 +4.200000 -0.300000 8.880860 +4.200000 -0.200000 8.511998 +4.200000 -0.100000 8.163137 +4.200000 -0.000000 7.834276 +4.200000 0.100000 7.525414 +4.200000 0.200000 7.236553 +4.200000 0.300000 6.967691 +4.200000 0.400000 6.718830 +4.200000 0.500000 6.489968 +4.200000 0.600000 6.281107 +4.200000 0.700000 6.092246 +4.200000 0.800000 5.923384 +4.200000 0.900000 5.774523 +4.200000 1.000000 5.645661 +4.200000 1.100000 5.536800 +4.200000 1.200000 5.447938 +4.200000 1.300000 5.379077 +4.200000 1.400000 5.330216 +4.200000 1.500000 5.301354 +4.200000 1.600000 5.292493 +4.200000 1.700000 5.303631 +4.200000 1.800000 5.334770 +4.200000 1.900000 5.385908 +4.200000 2.000000 5.457047 +4.200000 2.100000 5.548186 +4.200000 2.200000 5.659324 +4.200000 2.300000 5.790463 +4.200000 2.400000 5.941601 +4.200000 2.500000 6.112740 +4.200000 2.600000 6.303879 +4.200000 2.700000 6.515017 +4.200000 2.800000 6.746156 +4.200000 2.900000 6.997294 +4.200000 3.000000 7.268433 +4.200000 3.100000 7.559571 +4.200000 3.200000 7.870710 +4.200000 3.300000 8.201849 +4.200000 3.400000 8.552987 +4.200000 3.500000 8.924126 +4.200000 3.600000 9.315264 +4.200000 3.700000 9.726403 +4.200000 3.800000 10.157541 +4.200000 3.900000 10.608680 +4.200000 4.000000 11.079819 +4.200000 4.100000 11.570957 +4.200000 4.200000 12.082096 +4.200000 4.300000 12.613234 +4.200000 4.400000 13.164373 +4.200000 4.500000 13.735511 +4.200000 4.600000 14.326650 +4.200000 4.700000 14.937789 +4.200000 4.800000 15.568927 +4.200000 4.900000 16.220066 +4.200000 5.000000 16.891204 +4.200000 5.100000 17.582343 +4.200000 5.200000 18.293481 +4.200000 5.300000 19.024620 +4.200000 5.400000 19.775759 +4.200000 5.500000 20.546897 +4.200000 5.600000 21.338036 +4.200000 5.700000 22.149174 +4.200000 5.800000 22.980313 +4.200000 5.900000 23.831451 +4.200000 6.000000 24.702590 +4.200000 6.100000 25.593729 +4.200000 6.200000 26.504867 +4.200000 6.300000 27.436006 +4.200000 6.400000 28.387144 +4.200000 6.500000 29.358283 +4.200000 6.600000 30.349421 +4.200000 6.700000 31.360560 +4.200000 6.800000 32.391699 +4.200000 6.900000 33.442837 +4.200000 7.000000 34.513976 +4.200000 7.100000 35.605114 +4.200000 7.200000 36.716253 +4.200000 7.300000 37.847391 +4.200000 7.400000 38.998530 +4.200000 7.500000 40.169669 +4.200000 7.600000 41.360807 +4.200000 7.700000 42.571946 +4.200000 7.800000 43.803084 +4.200000 7.900000 45.054223 +4.200000 8.000000 46.325361 +4.200000 8.100000 47.616500 +4.200000 8.200000 48.927639 +4.200000 8.300000 50.258777 +4.200000 8.400000 51.609916 +4.200000 8.500000 52.981054 +4.200000 8.600000 54.372193 +4.200000 8.700000 55.783332 +4.200000 8.800000 57.214470 +4.200000 8.900000 58.665609 +4.200000 9.000000 60.136747 +4.200000 9.100000 61.627886 +4.200000 9.200000 63.139024 +4.200000 9.300000 64.670163 +4.200000 9.400000 66.221302 +4.200000 9.500000 67.792440 +4.200000 9.600000 69.383579 +4.200000 9.700000 70.994717 +4.200000 9.800000 72.625856 +4.200000 9.900000 74.276994 +4.200000 10.000000 75.948133 +4.200000 10.100000 77.639272 +4.200000 10.200000 79.350410 +4.200000 10.300000 81.081549 +4.200000 10.400000 82.832687 +4.200000 10.500000 84.603826 +4.200000 10.600000 86.394964 +4.200000 10.700000 88.206103 +4.200000 10.800000 90.037242 +4.200000 10.900000 91.888380 +4.200000 11.000000 93.759519 +4.200000 11.100000 95.650657 +4.200000 11.200000 97.561796 +4.200000 11.300000 99.492934 +4.200000 11.400000 101.444073 +4.200000 11.500000 103.415212 +4.200000 11.600000 105.406350 +4.200000 11.700000 107.417489 +4.200000 11.800000 109.448627 +4.200000 11.900000 111.499766 +4.200000 12.000000 113.570904 +4.200000 12.100000 115.662043 +4.200000 12.200000 117.773182 +4.200000 12.300000 119.904320 +4.200000 12.400000 122.055459 +4.200000 12.500000 124.226597 +4.200000 12.600000 126.417736 +4.200000 12.700000 128.628874 +4.200000 12.800000 130.860013 +4.200000 12.900000 133.111152 +4.200000 13.000000 135.382290 +4.200000 13.100000 137.673429 +4.200000 13.200000 139.984567 +4.200000 13.300000 142.315706 +4.200000 13.400000 144.666844 +4.200000 13.500000 147.037983 +4.200000 13.600000 149.429122 +4.200000 13.700000 151.840260 +4.200000 13.800000 154.271399 +4.200000 13.900000 156.722537 +4.200000 14.000000 159.193676 +4.200000 14.100000 161.684814 +4.200000 14.200000 164.195953 +4.200000 14.300000 166.727092 +4.200000 14.400000 169.278230 +4.200000 14.500000 171.849369 +4.200000 14.600000 174.440507 +4.200000 14.700000 177.051646 +4.200000 14.800000 179.682785 +4.200000 14.900000 182.333923 +4.200000 15.000000 185.005062 + +4.300000 -5.000000 48.987970 +4.300000 -4.900000 47.688978 +4.300000 -4.800000 46.409986 +4.300000 -4.700000 45.150994 +4.300000 -4.600000 43.912003 +4.300000 -4.500000 42.693011 +4.300000 -4.400000 41.494019 +4.300000 -4.300000 40.315027 +4.300000 -4.200000 39.156035 +4.300000 -4.100000 38.017044 +4.300000 -4.000000 36.898052 +4.300000 -3.900000 35.799060 +4.300000 -3.800000 34.720068 +4.300000 -3.700000 33.661076 +4.300000 -3.600000 32.622085 +4.300000 -3.500000 31.603093 +4.300000 -3.400000 30.604101 +4.300000 -3.300000 29.625109 +4.300000 -3.200000 28.666117 +4.300000 -3.100000 27.727126 +4.300000 -3.000000 26.808134 +4.300000 -2.900000 25.909142 +4.300000 -2.800000 25.030150 +4.300000 -2.700000 24.171158 +4.300000 -2.600000 23.332166 +4.300000 -2.500000 22.513175 +4.300000 -2.400000 21.714183 +4.300000 -2.300000 20.935191 +4.300000 -2.200000 20.176199 +4.300000 -2.100000 19.437207 +4.300000 -2.000000 18.718216 +4.300000 -1.900000 18.019224 +4.300000 -1.800000 17.340232 +4.300000 -1.700000 16.681240 +4.300000 -1.600000 16.042248 +4.300000 -1.500000 15.423257 +4.300000 -1.400000 14.824265 +4.300000 -1.300000 14.245273 +4.300000 -1.200000 13.686281 +4.300000 -1.100000 13.147289 +4.300000 -1.000000 12.628298 +4.300000 -0.900000 12.129306 +4.300000 -0.800000 11.650314 +4.300000 -0.700000 11.191322 +4.300000 -0.600000 10.752330 +4.300000 -0.500000 10.333339 +4.300000 -0.400000 9.934347 +4.300000 -0.300000 9.555355 +4.300000 -0.200000 9.196363 +4.300000 -0.100000 8.857371 +4.300000 -0.000000 8.538380 +4.300000 0.100000 8.239388 +4.300000 0.200000 7.960396 +4.300000 0.300000 7.701404 +4.300000 0.400000 7.462412 +4.300000 0.500000 7.243421 +4.300000 0.600000 7.044429 +4.300000 0.700000 6.865437 +4.300000 0.800000 6.706445 +4.300000 0.900000 6.567453 +4.300000 1.000000 6.448462 +4.300000 1.100000 6.349470 +4.300000 1.200000 6.270478 +4.300000 1.300000 6.211486 +4.300000 1.400000 6.172494 +4.300000 1.500000 6.153503 +4.300000 1.600000 6.154511 +4.300000 1.700000 6.175519 +4.300000 1.800000 6.216527 +4.300000 1.900000 6.277535 +4.300000 2.000000 6.358543 +4.300000 2.100000 6.459552 +4.300000 2.200000 6.580560 +4.300000 2.300000 6.721568 +4.300000 2.400000 6.882576 +4.300000 2.500000 7.063584 +4.300000 2.600000 7.264593 +4.300000 2.700000 7.485601 +4.300000 2.800000 7.726609 +4.300000 2.900000 7.987617 +4.300000 3.000000 8.268625 +4.300000 3.100000 8.569634 +4.300000 3.200000 8.890642 +4.300000 3.300000 9.231650 +4.300000 3.400000 9.592658 +4.300000 3.500000 9.973666 +4.300000 3.600000 10.374675 +4.300000 3.700000 10.795683 +4.300000 3.800000 11.236691 +4.300000 3.900000 11.697699 +4.300000 4.000000 12.178707 +4.300000 4.100000 12.679716 +4.300000 4.200000 13.200724 +4.300000 4.300000 13.741732 +4.300000 4.400000 14.302740 +4.300000 4.500000 14.883748 +4.300000 4.600000 15.484757 +4.300000 4.700000 16.105765 +4.300000 4.800000 16.746773 +4.300000 4.900000 17.407781 +4.300000 5.000000 18.088789 +4.300000 5.100000 18.789798 +4.300000 5.200000 19.510806 +4.300000 5.300000 20.251814 +4.300000 5.400000 21.012822 +4.300000 5.500000 21.793830 +4.300000 5.600000 22.594839 +4.300000 5.700000 23.415847 +4.300000 5.800000 24.256855 +4.300000 5.900000 25.117863 +4.300000 6.000000 25.998871 +4.300000 6.100000 26.899880 +4.300000 6.200000 27.820888 +4.300000 6.300000 28.761896 +4.300000 6.400000 29.722904 +4.300000 6.500000 30.703912 +4.300000 6.600000 31.704921 +4.300000 6.700000 32.725929 +4.300000 6.800000 33.766937 +4.300000 6.900000 34.827945 +4.300000 7.000000 35.908953 +4.300000 7.100000 37.009961 +4.300000 7.200000 38.130970 +4.300000 7.300000 39.271978 +4.300000 7.400000 40.432986 +4.300000 7.500000 41.613994 +4.300000 7.600000 42.815002 +4.300000 7.700000 44.036011 +4.300000 7.800000 45.277019 +4.300000 7.900000 46.538027 +4.300000 8.000000 47.819035 +4.300000 8.100000 49.120043 +4.300000 8.200000 50.441052 +4.300000 8.300000 51.782060 +4.300000 8.400000 53.143068 +4.300000 8.500000 54.524076 +4.300000 8.600000 55.925084 +4.300000 8.700000 57.346093 +4.300000 8.800000 58.787101 +4.300000 8.900000 60.248109 +4.300000 9.000000 61.729117 +4.300000 9.100000 63.230125 +4.300000 9.200000 64.751134 +4.300000 9.300000 66.292142 +4.300000 9.400000 67.853150 +4.300000 9.500000 69.434158 +4.300000 9.600000 71.035166 +4.300000 9.700000 72.656175 +4.300000 9.800000 74.297183 +4.300000 9.900000 75.958191 +4.300000 10.000000 77.639199 +4.300000 10.100000 79.340207 +4.300000 10.200000 81.061216 +4.300000 10.300000 82.802224 +4.300000 10.400000 84.563232 +4.300000 10.500000 86.344240 +4.300000 10.600000 88.145248 +4.300000 10.700000 89.966257 +4.300000 10.800000 91.807265 +4.300000 10.900000 93.668273 +4.300000 11.000000 95.549281 +4.300000 11.100000 97.450289 +4.300000 11.200000 99.371298 +4.300000 11.300000 101.312306 +4.300000 11.400000 103.273314 +4.300000 11.500000 105.254322 +4.300000 11.600000 107.255330 +4.300000 11.700000 109.276338 +4.300000 11.800000 111.317347 +4.300000 11.900000 113.378355 +4.300000 12.000000 115.459363 +4.300000 12.100000 117.560371 +4.300000 12.200000 119.681379 +4.300000 12.300000 121.822388 +4.300000 12.400000 123.983396 +4.300000 12.500000 126.164404 +4.300000 12.600000 128.365412 +4.300000 12.700000 130.586420 +4.300000 12.800000 132.827429 +4.300000 12.900000 135.088437 +4.300000 13.000000 137.369445 +4.300000 13.100000 139.670453 +4.300000 13.200000 141.991461 +4.300000 13.300000 144.332470 +4.300000 13.400000 146.693478 +4.300000 13.500000 149.074486 +4.300000 13.600000 151.475494 +4.300000 13.700000 153.896502 +4.300000 13.800000 156.337511 +4.300000 13.900000 158.798519 +4.300000 14.000000 161.279527 +4.300000 14.100000 163.780535 +4.300000 14.200000 166.301543 +4.300000 14.300000 168.842552 +4.300000 14.400000 171.403560 +4.300000 14.500000 173.984568 +4.300000 14.600000 176.585576 +4.300000 14.700000 179.206584 +4.300000 14.800000 181.847593 +4.300000 14.900000 184.508601 +4.300000 15.000000 187.189609 + +4.400000 -5.000000 49.275488 +4.400000 -4.900000 47.985849 +4.400000 -4.800000 46.716210 +4.400000 -4.700000 45.466571 +4.400000 -4.600000 44.236933 +4.400000 -4.500000 43.027294 +4.400000 -4.400000 41.837655 +4.400000 -4.300000 40.668016 +4.400000 -4.200000 39.518377 +4.400000 -4.100000 38.388738 +4.400000 -4.000000 37.279099 +4.400000 -3.900000 36.189460 +4.400000 -3.800000 35.119821 +4.400000 -3.700000 34.070182 +4.400000 -3.600000 33.040543 +4.400000 -3.500000 32.030904 +4.400000 -3.400000 31.041266 +4.400000 -3.300000 30.071627 +4.400000 -3.200000 29.121988 +4.400000 -3.100000 28.192349 +4.400000 -3.000000 27.282710 +4.400000 -2.900000 26.393071 +4.400000 -2.800000 25.523432 +4.400000 -2.700000 24.673793 +4.400000 -2.600000 23.844154 +4.400000 -2.500000 23.034515 +4.400000 -2.400000 22.244876 +4.400000 -2.300000 21.475237 +4.400000 -2.200000 20.725598 +4.400000 -2.100000 19.995960 +4.400000 -2.000000 19.286321 +4.400000 -1.900000 18.596682 +4.400000 -1.800000 17.927043 +4.400000 -1.700000 17.277404 +4.400000 -1.600000 16.647765 +4.400000 -1.500000 16.038126 +4.400000 -1.400000 15.448487 +4.400000 -1.300000 14.878848 +4.400000 -1.200000 14.329209 +4.400000 -1.100000 13.799570 +4.400000 -1.000000 13.289931 +4.400000 -0.900000 12.800293 +4.400000 -0.800000 12.330654 +4.400000 -0.700000 11.881015 +4.400000 -0.600000 11.451376 +4.400000 -0.500000 11.041737 +4.400000 -0.400000 10.652098 +4.400000 -0.300000 10.282459 +4.400000 -0.200000 9.932820 +4.400000 -0.100000 9.603181 +4.400000 -0.000000 9.293542 +4.400000 0.100000 9.003903 +4.400000 0.200000 8.734264 +4.400000 0.300000 8.484625 +4.400000 0.400000 8.254987 +4.400000 0.500000 8.045348 +4.400000 0.600000 7.855709 +4.400000 0.700000 7.686070 +4.400000 0.800000 7.536431 +4.400000 0.900000 7.406792 +4.400000 1.000000 7.297153 +4.400000 1.100000 7.207514 +4.400000 1.200000 7.137875 +4.400000 1.300000 7.088236 +4.400000 1.400000 7.058597 +4.400000 1.500000 7.048958 +4.400000 1.600000 7.059320 +4.400000 1.700000 7.089681 +4.400000 1.800000 7.140042 +4.400000 1.900000 7.210403 +4.400000 2.000000 7.300764 +4.400000 2.100000 7.411125 +4.400000 2.200000 7.541486 +4.400000 2.300000 7.691847 +4.400000 2.400000 7.862208 +4.400000 2.500000 8.052569 +4.400000 2.600000 8.262930 +4.400000 2.700000 8.493291 +4.400000 2.800000 8.743652 +4.400000 2.900000 9.014014 +4.400000 3.000000 9.304375 +4.400000 3.100000 9.614736 +4.400000 3.200000 9.945097 +4.400000 3.300000 10.295458 +4.400000 3.400000 10.665819 +4.400000 3.500000 11.056180 +4.400000 3.600000 11.466541 +4.400000 3.700000 11.896902 +4.400000 3.800000 12.347263 +4.400000 3.900000 12.817624 +4.400000 4.000000 13.307985 +4.400000 4.100000 13.818346 +4.400000 4.200000 14.348708 +4.400000 4.300000 14.899069 +4.400000 4.400000 15.469430 +4.400000 4.500000 16.059791 +4.400000 4.600000 16.670152 +4.400000 4.700000 17.300513 +4.400000 4.800000 17.950874 +4.400000 4.900000 18.621235 +4.400000 5.000000 19.311596 +4.400000 5.100000 20.021957 +4.400000 5.200000 20.752318 +4.400000 5.300000 21.502679 +4.400000 5.400000 22.273041 +4.400000 5.500000 23.063402 +4.400000 5.600000 23.873763 +4.400000 5.700000 24.704124 +4.400000 5.800000 25.554485 +4.400000 5.900000 26.424846 +4.400000 6.000000 27.315207 +4.400000 6.100000 28.225568 +4.400000 6.200000 29.155929 +4.400000 6.300000 30.106290 +4.400000 6.400000 31.076651 +4.400000 6.500000 32.067012 +4.400000 6.600000 33.077373 +4.400000 6.700000 34.107735 +4.400000 6.800000 35.158096 +4.400000 6.900000 36.228457 +4.400000 7.000000 37.318818 +4.400000 7.100000 38.429179 +4.400000 7.200000 39.559540 +4.400000 7.300000 40.709901 +4.400000 7.400000 41.880262 +4.400000 7.500000 43.070623 +4.400000 7.600000 44.280984 +4.400000 7.700000 45.511345 +4.400000 7.800000 46.761706 +4.400000 7.900000 48.032068 +4.400000 8.000000 49.322429 +4.400000 8.100000 50.632790 +4.400000 8.200000 51.963151 +4.400000 8.300000 53.313512 +4.400000 8.400000 54.683873 +4.400000 8.500000 56.074234 +4.400000 8.600000 57.484595 +4.400000 8.700000 58.914956 +4.400000 8.800000 60.365317 +4.400000 8.900000 61.835678 +4.400000 9.000000 63.326039 +4.400000 9.100000 64.836400 +4.400000 9.200000 66.366762 +4.400000 9.300000 67.917123 +4.400000 9.400000 69.487484 +4.400000 9.500000 71.077845 +4.400000 9.600000 72.688206 +4.400000 9.700000 74.318567 +4.400000 9.800000 75.968928 +4.400000 9.900000 77.639289 +4.400000 10.000000 79.329650 +4.400000 10.100000 81.040011 +4.400000 10.200000 82.770372 +4.400000 10.300000 84.520733 +4.400000 10.400000 86.291095 +4.400000 10.500000 88.081456 +4.400000 10.600000 89.891817 +4.400000 10.700000 91.722178 +4.400000 10.800000 93.572539 +4.400000 10.900000 95.442900 +4.400000 11.000000 97.333261 +4.400000 11.100000 99.243622 +4.400000 11.200000 101.173983 +4.400000 11.300000 103.124344 +4.400000 11.400000 105.094705 +4.400000 11.500000 107.085066 +4.400000 11.600000 109.095427 +4.400000 11.700000 111.125789 +4.400000 11.800000 113.176150 +4.400000 11.900000 115.246511 +4.400000 12.000000 117.336872 +4.400000 12.100000 119.447233 +4.400000 12.200000 121.577594 +4.400000 12.300000 123.727955 +4.400000 12.400000 125.898316 +4.400000 12.500000 128.088677 +4.400000 12.600000 130.299038 +4.400000 12.700000 132.529399 +4.400000 12.800000 134.779760 +4.400000 12.900000 137.050122 +4.400000 13.000000 139.340483 +4.400000 13.100000 141.650844 +4.400000 13.200000 143.981205 +4.400000 13.300000 146.331566 +4.400000 13.400000 148.701927 +4.400000 13.500000 151.092288 +4.400000 13.600000 153.502649 +4.400000 13.700000 155.933010 +4.400000 13.800000 158.383371 +4.400000 13.900000 160.853732 +4.400000 14.000000 163.344093 +4.400000 14.100000 165.854454 +4.400000 14.200000 168.384816 +4.400000 14.300000 170.935177 +4.400000 14.400000 173.505538 +4.400000 14.500000 176.095899 +4.400000 14.600000 178.706260 +4.400000 14.700000 181.336621 +4.400000 14.800000 183.986982 +4.400000 14.900000 186.657343 +4.400000 15.000000 189.347704 + +4.500000 -5.000000 49.630210 +4.500000 -4.900000 48.349407 +4.500000 -4.800000 47.088604 +4.500000 -4.700000 45.847802 +4.500000 -4.600000 44.626999 +4.500000 -4.500000 43.426196 +4.500000 -4.400000 42.245393 +4.500000 -4.300000 41.084591 +4.500000 -4.200000 39.943788 +4.500000 -4.100000 38.822985 +4.500000 -4.000000 37.722182 +4.500000 -3.900000 36.641380 +4.500000 -3.800000 35.580577 +4.500000 -3.700000 34.539774 +4.500000 -3.600000 33.518971 +4.500000 -3.500000 32.518168 +4.500000 -3.400000 31.537366 +4.500000 -3.300000 30.576563 +4.500000 -3.200000 29.635760 +4.500000 -3.100000 28.714957 +4.500000 -3.000000 27.814155 +4.500000 -2.900000 26.933352 +4.500000 -2.800000 26.072549 +4.500000 -2.700000 25.231746 +4.500000 -2.600000 24.410943 +4.500000 -2.500000 23.610141 +4.500000 -2.400000 22.829338 +4.500000 -2.300000 22.068535 +4.500000 -2.200000 21.327732 +4.500000 -2.100000 20.606930 +4.500000 -2.000000 19.906127 +4.500000 -1.900000 19.225324 +4.500000 -1.800000 18.564521 +4.500000 -1.700000 17.923718 +4.500000 -1.600000 17.302916 +4.500000 -1.500000 16.702113 +4.500000 -1.400000 16.121310 +4.500000 -1.300000 15.560507 +4.500000 -1.200000 15.019705 +4.500000 -1.100000 14.498902 +4.500000 -1.000000 13.998099 +4.500000 -0.900000 13.517296 +4.500000 -0.800000 13.056494 +4.500000 -0.700000 12.615691 +4.500000 -0.600000 12.194888 +4.500000 -0.500000 11.794085 +4.500000 -0.400000 11.413282 +4.500000 -0.300000 11.052480 +4.500000 -0.200000 10.711677 +4.500000 -0.100000 10.390874 +4.500000 -0.000000 10.090071 +4.500000 0.100000 9.809269 +4.500000 0.200000 9.548466 +4.500000 0.300000 9.307663 +4.500000 0.400000 9.086860 +4.500000 0.500000 8.886057 +4.500000 0.600000 8.705255 +4.500000 0.700000 8.544452 +4.500000 0.800000 8.403649 +4.500000 0.900000 8.282846 +4.500000 1.000000 8.182044 +4.500000 1.100000 8.101241 +4.500000 1.200000 8.040438 +4.500000 1.300000 7.999635 +4.500000 1.400000 7.978832 +4.500000 1.500000 7.978030 +4.500000 1.600000 7.997227 +4.500000 1.700000 8.036424 +4.500000 1.800000 8.095621 +4.500000 1.900000 8.174819 +4.500000 2.000000 8.274016 +4.500000 2.100000 8.393213 +4.500000 2.200000 8.532410 +4.500000 2.300000 8.691608 +4.500000 2.400000 8.870805 +4.500000 2.500000 9.070002 +4.500000 2.600000 9.289199 +4.500000 2.700000 9.528396 +4.500000 2.800000 9.787594 +4.500000 2.900000 10.066791 +4.500000 3.000000 10.365988 +4.500000 3.100000 10.685185 +4.500000 3.200000 11.024383 +4.500000 3.300000 11.383580 +4.500000 3.400000 11.762777 +4.500000 3.500000 12.161974 +4.500000 3.600000 12.581171 +4.500000 3.700000 13.020369 +4.500000 3.800000 13.479566 +4.500000 3.900000 13.958763 +4.500000 4.000000 14.457960 +4.500000 4.100000 14.977158 +4.500000 4.200000 15.516355 +4.500000 4.300000 16.075552 +4.500000 4.400000 16.654749 +4.500000 4.500000 17.253946 +4.500000 4.600000 17.873144 +4.500000 4.700000 18.512341 +4.500000 4.800000 19.171538 +4.500000 4.900000 19.850735 +4.500000 5.000000 20.549933 +4.500000 5.100000 21.269130 +4.500000 5.200000 22.008327 +4.500000 5.300000 22.767524 +4.500000 5.400000 23.546722 +4.500000 5.500000 24.345919 +4.500000 5.600000 25.165116 +4.500000 5.700000 26.004313 +4.500000 5.800000 26.863510 +4.500000 5.900000 27.742708 +4.500000 6.000000 28.641905 +4.500000 6.100000 29.561102 +4.500000 6.200000 30.500299 +4.500000 6.300000 31.459497 +4.500000 6.400000 32.438694 +4.500000 6.500000 33.437891 +4.500000 6.600000 34.457088 +4.500000 6.700000 35.496285 +4.500000 6.800000 36.555483 +4.500000 6.900000 37.634680 +4.500000 7.000000 38.733877 +4.500000 7.100000 39.853074 +4.500000 7.200000 40.992272 +4.500000 7.300000 42.151469 +4.500000 7.400000 43.330666 +4.500000 7.500000 44.529863 +4.500000 7.600000 45.749060 +4.500000 7.700000 46.988258 +4.500000 7.800000 48.247455 +4.500000 7.900000 49.526652 +4.500000 8.000000 50.825849 +4.500000 8.100000 52.145047 +4.500000 8.200000 53.484244 +4.500000 8.300000 54.843441 +4.500000 8.400000 56.222638 +4.500000 8.500000 57.621836 +4.500000 8.600000 59.041033 +4.500000 8.700000 60.480230 +4.500000 8.800000 61.939427 +4.500000 8.900000 63.418624 +4.500000 9.000000 64.917822 +4.500000 9.100000 66.437019 +4.500000 9.200000 67.976216 +4.500000 9.300000 69.535413 +4.500000 9.400000 71.114611 +4.500000 9.500000 72.713808 +4.500000 9.600000 74.333005 +4.500000 9.700000 75.972202 +4.500000 9.800000 77.631399 +4.500000 9.900000 79.310597 +4.500000 10.000000 81.009794 +4.500000 10.100000 82.728991 +4.500000 10.200000 84.468188 +4.500000 10.300000 86.227386 +4.500000 10.400000 88.006583 +4.500000 10.500000 89.805780 +4.500000 10.600000 91.624977 +4.500000 10.700000 93.464174 +4.500000 10.800000 95.323372 +4.500000 10.900000 97.202569 +4.500000 11.000000 99.101766 +4.500000 11.100000 101.020963 +4.500000 11.200000 102.960161 +4.500000 11.300000 104.919358 +4.500000 11.400000 106.898555 +4.500000 11.500000 108.897752 +4.500000 11.600000 110.916950 +4.500000 11.700000 112.956147 +4.500000 11.800000 115.015344 +4.500000 11.900000 117.094541 +4.500000 12.000000 119.193738 +4.500000 12.100000 121.312936 +4.500000 12.200000 123.452133 +4.500000 12.300000 125.611330 +4.500000 12.400000 127.790527 +4.500000 12.500000 129.989725 +4.500000 12.600000 132.208922 +4.500000 12.700000 134.448119 +4.500000 12.800000 136.707316 +4.500000 12.900000 138.986513 +4.500000 13.000000 141.285711 +4.500000 13.100000 143.604908 +4.500000 13.200000 145.944105 +4.500000 13.300000 148.303302 +4.500000 13.400000 150.682500 +4.500000 13.500000 153.081697 +4.500000 13.600000 155.500894 +4.500000 13.700000 157.940091 +4.500000 13.800000 160.399288 +4.500000 13.900000 162.878486 +4.500000 14.000000 165.377683 +4.500000 14.100000 167.896880 +4.500000 14.200000 170.436077 +4.500000 14.300000 172.995275 +4.500000 14.400000 175.574472 +4.500000 14.500000 178.173669 +4.500000 14.600000 180.792866 +4.500000 14.700000 183.432064 +4.500000 14.800000 186.091261 +4.500000 14.900000 188.770458 +4.500000 15.000000 191.469655 + +4.600000 -5.000000 50.042188 +4.600000 -4.900000 48.769705 +4.600000 -4.800000 47.517222 +4.600000 -4.700000 46.284738 +4.600000 -4.600000 45.072255 +4.600000 -4.500000 43.879772 +4.600000 -4.400000 42.707288 +4.600000 -4.300000 41.554805 +4.600000 -4.200000 40.422321 +4.600000 -4.100000 39.309838 +4.600000 -4.000000 38.217355 +4.600000 -3.900000 37.144871 +4.600000 -3.800000 36.092388 +4.600000 -3.700000 35.059905 +4.600000 -3.600000 34.047421 +4.600000 -3.500000 33.054938 +4.600000 -3.400000 32.082455 +4.600000 -3.300000 31.129971 +4.600000 -3.200000 30.197488 +4.600000 -3.100000 29.285004 +4.600000 -3.000000 28.392521 +4.600000 -2.900000 27.520038 +4.600000 -2.800000 26.667554 +4.600000 -2.700000 25.835071 +4.600000 -2.600000 25.022588 +4.600000 -2.500000 24.230104 +4.600000 -2.400000 23.457621 +4.600000 -2.300000 22.705138 +4.600000 -2.200000 21.972654 +4.600000 -2.100000 21.260171 +4.600000 -2.000000 20.567687 +4.600000 -1.900000 19.895204 +4.600000 -1.800000 19.242721 +4.600000 -1.700000 18.610237 +4.600000 -1.600000 17.997754 +4.600000 -1.500000 17.405271 +4.600000 -1.400000 16.832787 +4.600000 -1.300000 16.280304 +4.600000 -1.200000 15.747821 +4.600000 -1.100000 15.235337 +4.600000 -1.000000 14.742854 +4.600000 -0.900000 14.270370 +4.600000 -0.800000 13.817887 +4.600000 -0.700000 13.385404 +4.600000 -0.600000 12.972920 +4.600000 -0.500000 12.580437 +4.600000 -0.400000 12.207954 +4.600000 -0.300000 11.855470 +4.600000 -0.200000 11.522987 +4.600000 -0.100000 11.210503 +4.600000 -0.000000 10.918020 +4.600000 0.100000 10.645537 +4.600000 0.200000 10.393053 +4.600000 0.300000 10.160570 +4.600000 0.400000 9.948087 +4.600000 0.500000 9.755603 +4.600000 0.600000 9.583120 +4.600000 0.700000 9.430637 +4.600000 0.800000 9.298153 +4.600000 0.900000 9.185670 +4.600000 1.000000 9.093186 +4.600000 1.100000 9.020703 +4.600000 1.200000 8.968220 +4.600000 1.300000 8.935736 +4.600000 1.400000 8.923253 +4.600000 1.500000 8.930770 +4.600000 1.600000 8.958286 +4.600000 1.700000 9.005803 +4.600000 1.800000 9.073320 +4.600000 1.900000 9.160836 +4.600000 2.000000 9.268353 +4.600000 2.100000 9.395869 +4.600000 2.200000 9.543386 +4.600000 2.300000 9.710903 +4.600000 2.400000 9.898419 +4.600000 2.500000 10.105936 +4.600000 2.600000 10.333453 +4.600000 2.700000 10.580969 +4.600000 2.800000 10.848486 +4.600000 2.900000 11.136002 +4.600000 3.000000 11.443519 +4.600000 3.100000 11.771036 +4.600000 3.200000 12.118552 +4.600000 3.300000 12.486069 +4.600000 3.400000 12.873586 +4.600000 3.500000 13.281102 +4.600000 3.600000 13.708619 +4.600000 3.700000 14.156136 +4.600000 3.800000 14.623652 +4.600000 3.900000 15.111169 +4.600000 4.000000 15.618685 +4.600000 4.100000 16.146202 +4.600000 4.200000 16.693719 +4.600000 4.300000 17.261235 +4.600000 4.400000 17.848752 +4.600000 4.500000 18.456269 +4.600000 4.600000 19.083785 +4.600000 4.700000 19.731302 +4.600000 4.800000 20.398819 +4.600000 4.900000 21.086335 +4.600000 5.000000 21.793852 +4.600000 5.100000 22.521368 +4.600000 5.200000 23.268885 +4.600000 5.300000 24.036402 +4.600000 5.400000 24.823918 +4.600000 5.500000 25.631435 +4.600000 5.600000 26.458952 +4.600000 5.700000 27.306468 +4.600000 5.800000 28.173985 +4.600000 5.900000 29.061501 +4.600000 6.000000 29.969018 +4.600000 6.100000 30.896535 +4.600000 6.200000 31.844051 +4.600000 6.300000 32.811568 +4.600000 6.400000 33.799085 +4.600000 6.500000 34.806601 +4.600000 6.600000 35.834118 +4.600000 6.700000 36.881635 +4.600000 6.800000 37.949151 +4.600000 6.900000 39.036668 +4.600000 7.000000 40.144184 +4.600000 7.100000 41.271701 +4.600000 7.200000 42.419218 +4.600000 7.300000 43.586734 +4.600000 7.400000 44.774251 +4.600000 7.500000 45.981768 +4.600000 7.600000 47.209284 +4.600000 7.700000 48.456801 +4.600000 7.800000 49.724318 +4.600000 7.900000 51.011834 +4.600000 8.000000 52.319351 +4.600000 8.100000 53.646867 +4.600000 8.200000 54.994384 +4.600000 8.300000 56.361901 +4.600000 8.400000 57.749417 +4.600000 8.500000 59.156934 +4.600000 8.600000 60.584451 +4.600000 8.700000 62.031967 +4.600000 8.800000 63.499484 +4.600000 8.900000 64.987001 +4.600000 9.000000 66.494517 +4.600000 9.100000 68.022034 +4.600000 9.200000 69.569550 +4.600000 9.300000 71.137067 +4.600000 9.400000 72.724584 +4.600000 9.500000 74.332100 +4.600000 9.600000 75.959617 +4.600000 9.700000 77.607134 +4.600000 9.800000 79.274650 +4.600000 9.900000 80.962167 +4.600000 10.000000 82.669683 +4.600000 10.100000 84.397200 +4.600000 10.200000 86.144717 +4.600000 10.300000 87.912233 +4.600000 10.400000 89.699750 +4.600000 10.500000 91.507267 +4.600000 10.600000 93.334783 +4.600000 10.700000 95.182300 +4.600000 10.800000 97.049817 +4.600000 10.900000 98.937333 +4.600000 11.000000 100.844850 +4.600000 11.100000 102.772366 +4.600000 11.200000 104.719883 +4.600000 11.300000 106.687400 +4.600000 11.400000 108.674916 +4.600000 11.500000 110.682433 +4.600000 11.600000 112.709950 +4.600000 11.700000 114.757466 +4.600000 11.800000 116.824983 +4.600000 11.900000 118.912500 +4.600000 12.000000 121.020016 +4.600000 12.100000 123.147533 +4.600000 12.200000 125.295049 +4.600000 12.300000 127.462566 +4.600000 12.400000 129.650083 +4.600000 12.500000 131.857599 +4.600000 12.600000 134.085116 +4.600000 12.700000 136.332633 +4.600000 12.800000 138.600149 +4.600000 12.900000 140.887666 +4.600000 13.000000 143.195182 +4.600000 13.100000 145.522699 +4.600000 13.200000 147.870216 +4.600000 13.300000 150.237732 +4.600000 13.400000 152.625249 +4.600000 13.500000 155.032766 +4.600000 13.600000 157.460282 +4.600000 13.700000 159.907799 +4.600000 13.800000 162.375316 +4.600000 13.900000 164.862832 +4.600000 14.000000 167.370349 +4.600000 14.100000 169.897865 +4.600000 14.200000 172.445382 +4.600000 14.300000 175.012899 +4.600000 14.400000 177.600415 +4.600000 14.500000 180.207932 +4.600000 14.600000 182.835449 +4.600000 14.700000 185.482965 +4.600000 14.800000 188.150482 +4.600000 14.900000 190.837999 +4.600000 15.000000 193.545515 + +4.700000 -5.000000 50.501315 +4.700000 -4.900000 49.236634 +4.700000 -4.800000 47.991953 +4.700000 -4.700000 46.767273 +4.700000 -4.600000 45.562592 +4.700000 -4.500000 44.377911 +4.700000 -4.400000 43.213230 +4.700000 -4.300000 42.068550 +4.700000 -4.200000 40.943869 +4.700000 -4.100000 39.839188 +4.700000 -4.000000 38.754508 +4.700000 -3.900000 37.689827 +4.700000 -3.800000 36.645146 +4.700000 -3.700000 35.620466 +4.700000 -3.600000 34.615785 +4.700000 -3.500000 33.631104 +4.700000 -3.400000 32.666423 +4.700000 -3.300000 31.721743 +4.700000 -3.200000 30.797062 +4.700000 -3.100000 29.892381 +4.700000 -3.000000 29.007701 +4.700000 -2.900000 28.143020 +4.700000 -2.800000 27.298339 +4.700000 -2.700000 26.473659 +4.700000 -2.600000 25.668978 +4.700000 -2.500000 24.884297 +4.700000 -2.400000 24.119616 +4.700000 -2.300000 23.374936 +4.700000 -2.200000 22.650255 +4.700000 -2.100000 21.945574 +4.700000 -2.000000 21.260894 +4.700000 -1.900000 20.596213 +4.700000 -1.800000 19.951532 +4.700000 -1.700000 19.326852 +4.700000 -1.600000 18.722171 +4.700000 -1.500000 18.137490 +4.700000 -1.400000 17.572810 +4.700000 -1.300000 17.028129 +4.700000 -1.200000 16.503448 +4.700000 -1.100000 15.998767 +4.700000 -1.000000 15.514087 +4.700000 -0.900000 15.049406 +4.700000 -0.800000 14.604725 +4.700000 -0.700000 14.180045 +4.700000 -0.600000 13.775364 +4.700000 -0.500000 13.390683 +4.700000 -0.400000 13.026003 +4.700000 -0.300000 12.681322 +4.700000 -0.200000 12.356641 +4.700000 -0.100000 12.051960 +4.700000 -0.000000 11.767280 +4.700000 0.100000 11.502599 +4.700000 0.200000 11.257918 +4.700000 0.300000 11.033238 +4.700000 0.400000 10.828557 +4.700000 0.500000 10.643876 +4.700000 0.600000 10.479196 +4.700000 0.700000 10.334515 +4.700000 0.800000 10.209834 +4.700000 0.900000 10.105154 +4.700000 1.000000 10.020473 +4.700000 1.100000 9.955792 +4.700000 1.200000 9.911111 +4.700000 1.300000 9.886431 +4.700000 1.400000 9.881750 +4.700000 1.500000 9.897069 +4.700000 1.600000 9.932389 +4.700000 1.700000 9.987708 +4.700000 1.800000 10.063027 +4.700000 1.900000 10.158347 +4.700000 2.000000 10.273666 +4.700000 2.100000 10.408985 +4.700000 2.200000 10.564304 +4.700000 2.300000 10.739624 +4.700000 2.400000 10.934943 +4.700000 2.500000 11.150262 +4.700000 2.600000 11.385582 +4.700000 2.700000 11.640901 +4.700000 2.800000 11.916220 +4.700000 2.900000 12.211540 +4.700000 3.000000 12.526859 +4.700000 3.100000 12.862178 +4.700000 3.200000 13.217497 +4.700000 3.300000 13.592817 +4.700000 3.400000 13.988136 +4.700000 3.500000 14.403455 +4.700000 3.600000 14.838775 +4.700000 3.700000 15.294094 +4.700000 3.800000 15.769413 +4.700000 3.900000 16.264733 +4.700000 4.000000 16.780052 +4.700000 4.100000 17.315371 +4.700000 4.200000 17.870691 +4.700000 4.300000 18.446010 +4.700000 4.400000 19.041329 +4.700000 4.500000 19.656648 +4.700000 4.600000 20.291968 +4.700000 4.700000 20.947287 +4.700000 4.800000 21.622606 +4.700000 4.900000 22.317926 +4.700000 5.000000 23.033245 +4.700000 5.100000 23.768564 +4.700000 5.200000 24.523884 +4.700000 5.300000 25.299203 +4.700000 5.400000 26.094522 +4.700000 5.500000 26.909841 +4.700000 5.600000 27.745161 +4.700000 5.700000 28.600480 +4.700000 5.800000 29.475799 +4.700000 5.900000 30.371119 +4.700000 6.000000 31.286438 +4.700000 6.100000 32.221757 +4.700000 6.200000 33.177077 +4.700000 6.300000 34.152396 +4.700000 6.400000 35.147715 +4.700000 6.500000 36.163035 +4.700000 6.600000 37.198354 +4.700000 6.700000 38.253673 +4.700000 6.800000 39.328992 +4.700000 6.900000 40.424312 +4.700000 7.000000 41.539631 +4.700000 7.100000 42.674950 +4.700000 7.200000 43.830270 +4.700000 7.300000 45.005589 +4.700000 7.400000 46.200908 +4.700000 7.500000 47.416228 +4.700000 7.600000 48.651547 +4.700000 7.700000 49.906866 +4.700000 7.800000 51.182185 +4.700000 7.900000 52.477505 +4.700000 8.000000 53.792824 +4.700000 8.100000 55.128143 +4.700000 8.200000 56.483463 +4.700000 8.300000 57.858782 +4.700000 8.400000 59.254101 +4.700000 8.500000 60.669421 +4.700000 8.600000 62.104740 +4.700000 8.700000 63.560059 +4.700000 8.800000 65.035379 +4.700000 8.900000 66.530698 +4.700000 9.000000 68.046017 +4.700000 9.100000 69.581336 +4.700000 9.200000 71.136656 +4.700000 9.300000 72.711975 +4.700000 9.400000 74.307294 +4.700000 9.500000 75.922614 +4.700000 9.600000 77.557933 +4.700000 9.700000 79.213252 +4.700000 9.800000 80.888572 +4.700000 9.900000 82.583891 +4.700000 10.000000 84.299210 +4.700000 10.100000 86.034529 +4.700000 10.200000 87.789849 +4.700000 10.300000 89.565168 +4.700000 10.400000 91.360487 +4.700000 10.500000 93.175807 +4.700000 10.600000 95.011126 +4.700000 10.700000 96.866445 +4.700000 10.800000 98.741765 +4.700000 10.900000 100.637084 +4.700000 11.000000 102.552403 +4.700000 11.100000 104.487722 +4.700000 11.200000 106.443042 +4.700000 11.300000 108.418361 +4.700000 11.400000 110.413680 +4.700000 11.500000 112.429000 +4.700000 11.600000 114.464319 +4.700000 11.700000 116.519638 +4.700000 11.800000 118.594958 +4.700000 11.900000 120.690277 +4.700000 12.000000 122.805596 +4.700000 12.100000 124.940916 +4.700000 12.200000 127.096235 +4.700000 12.300000 129.271554 +4.700000 12.400000 131.466873 +4.700000 12.500000 133.682193 +4.700000 12.600000 135.917512 +4.700000 12.700000 138.172831 +4.700000 12.800000 140.448151 +4.700000 12.900000 142.743470 +4.700000 13.000000 145.058789 +4.700000 13.100000 147.394109 +4.700000 13.200000 149.749428 +4.700000 13.300000 152.124747 +4.700000 13.400000 154.520066 +4.700000 13.500000 156.935386 +4.700000 13.600000 159.370705 +4.700000 13.700000 161.826024 +4.700000 13.800000 164.301344 +4.700000 13.900000 166.796663 +4.700000 14.000000 169.311982 +4.700000 14.100000 171.847302 +4.700000 14.200000 174.402621 +4.700000 14.300000 176.977940 +4.700000 14.400000 179.573260 +4.700000 14.500000 182.188579 +4.700000 14.600000 184.823898 +4.700000 14.700000 187.479217 +4.700000 14.800000 190.154537 +4.700000 14.900000 192.849856 +4.700000 15.000000 195.565175 + +4.800000 -5.000000 50.997412 +4.800000 -4.900000 49.740018 +4.800000 -4.800000 48.502623 +4.800000 -4.700000 47.285228 +4.800000 -4.600000 46.087833 +4.800000 -4.500000 44.910438 +4.800000 -4.400000 43.753044 +4.800000 -4.300000 42.615649 +4.800000 -4.200000 41.498254 +4.800000 -4.100000 40.400859 +4.800000 -4.000000 39.323465 +4.800000 -3.900000 38.266070 +4.800000 -3.800000 37.228675 +4.800000 -3.700000 36.211280 +4.800000 -3.600000 35.213886 +4.800000 -3.500000 34.236491 +4.800000 -3.400000 33.279096 +4.800000 -3.300000 32.341701 +4.800000 -3.200000 31.424307 +4.800000 -3.100000 30.526912 +4.800000 -3.000000 29.649517 +4.800000 -2.900000 28.792122 +4.800000 -2.800000 27.954728 +4.800000 -2.700000 27.137333 +4.800000 -2.600000 26.339938 +4.800000 -2.500000 25.562543 +4.800000 -2.400000 24.805148 +4.800000 -2.300000 24.067754 +4.800000 -2.200000 23.350359 +4.800000 -2.100000 22.652964 +4.800000 -2.000000 21.975569 +4.800000 -1.900000 21.318175 +4.800000 -1.800000 20.680780 +4.800000 -1.700000 20.063385 +4.800000 -1.600000 19.465990 +4.800000 -1.500000 18.888596 +4.800000 -1.400000 18.331201 +4.800000 -1.300000 17.793806 +4.800000 -1.200000 17.276411 +4.800000 -1.100000 16.779017 +4.800000 -1.000000 16.301622 +4.800000 -0.900000 15.844227 +4.800000 -0.800000 15.406832 +4.800000 -0.700000 14.989437 +4.800000 -0.600000 14.592043 +4.800000 -0.500000 14.214648 +4.800000 -0.400000 13.857253 +4.800000 -0.300000 13.519858 +4.800000 -0.200000 13.202464 +4.800000 -0.100000 12.905069 +4.800000 -0.000000 12.627674 +4.800000 0.100000 12.370279 +4.800000 0.200000 12.132885 +4.800000 0.300000 11.915490 +4.800000 0.400000 11.718095 +4.800000 0.500000 11.540700 +4.800000 0.600000 11.383306 +4.800000 0.700000 11.245911 +4.800000 0.800000 11.128516 +4.800000 0.900000 11.031121 +4.800000 1.000000 10.953726 +4.800000 1.100000 10.896332 +4.800000 1.200000 10.858937 +4.800000 1.300000 10.841542 +4.800000 1.400000 10.844147 +4.800000 1.500000 10.866753 +4.800000 1.600000 10.909358 +4.800000 1.700000 10.971963 +4.800000 1.800000 11.054568 +4.800000 1.900000 11.157174 +4.800000 2.000000 11.279779 +4.800000 2.100000 11.422384 +4.800000 2.200000 11.584989 +4.800000 2.300000 11.767595 +4.800000 2.400000 11.970200 +4.800000 2.500000 12.192805 +4.800000 2.600000 12.435410 +4.800000 2.700000 12.698015 +4.800000 2.800000 12.980621 +4.800000 2.900000 13.283226 +4.800000 3.000000 13.605831 +4.800000 3.100000 13.948436 +4.800000 3.200000 14.311042 +4.800000 3.300000 14.693647 +4.800000 3.400000 15.096252 +4.800000 3.500000 15.518857 +4.800000 3.600000 15.961463 +4.800000 3.700000 16.424068 +4.800000 3.800000 16.906673 +4.800000 3.900000 17.409278 +4.800000 4.000000 17.931884 +4.800000 4.100000 18.474489 +4.800000 4.200000 19.037094 +4.800000 4.300000 19.619699 +4.800000 4.400000 20.222304 +4.800000 4.500000 20.844910 +4.800000 4.600000 21.487515 +4.800000 4.700000 22.150120 +4.800000 4.800000 22.832725 +4.800000 4.900000 23.535331 +4.800000 5.000000 24.257936 +4.800000 5.100000 25.000541 +4.800000 5.200000 25.763146 +4.800000 5.300000 26.545752 +4.800000 5.400000 27.348357 +4.800000 5.500000 28.170962 +4.800000 5.600000 29.013567 +4.800000 5.700000 29.876173 +4.800000 5.800000 30.758778 +4.800000 5.900000 31.661383 +4.800000 6.000000 32.583988 +4.800000 6.100000 33.526593 +4.800000 6.200000 34.489199 +4.800000 6.300000 35.471804 +4.800000 6.400000 36.474409 +4.800000 6.500000 37.497014 +4.800000 6.600000 38.539620 +4.800000 6.700000 39.602225 +4.800000 6.800000 40.684830 +4.800000 6.900000 41.787435 +4.800000 7.000000 42.910041 +4.800000 7.100000 44.052646 +4.800000 7.200000 45.215251 +4.800000 7.300000 46.397856 +4.800000 7.400000 47.600462 +4.800000 7.500000 48.823067 +4.800000 7.600000 50.065672 +4.800000 7.700000 51.328277 +4.800000 7.800000 52.610882 +4.800000 7.900000 53.913488 +4.800000 8.000000 55.236093 +4.800000 8.100000 56.578698 +4.800000 8.200000 57.941303 +4.800000 8.300000 59.323909 +4.800000 8.400000 60.726514 +4.800000 8.500000 62.149119 +4.800000 8.600000 63.591724 +4.800000 8.700000 65.054330 +4.800000 8.800000 66.536935 +4.800000 8.900000 68.039540 +4.800000 9.000000 69.562145 +4.800000 9.100000 71.104751 +4.800000 9.200000 72.667356 +4.800000 9.300000 74.249961 +4.800000 9.400000 75.852566 +4.800000 9.500000 77.475171 +4.800000 9.600000 79.117777 +4.800000 9.700000 80.780382 +4.800000 9.800000 82.462987 +4.800000 9.900000 84.165592 +4.800000 10.000000 85.888198 +4.800000 10.100000 87.630803 +4.800000 10.200000 89.393408 +4.800000 10.300000 91.176013 +4.800000 10.400000 92.978619 +4.800000 10.500000 94.801224 +4.800000 10.600000 96.643829 +4.800000 10.700000 98.506434 +4.800000 10.800000 100.389040 +4.800000 10.900000 102.291645 +4.800000 11.000000 104.214250 +4.800000 11.100000 106.156855 +4.800000 11.200000 108.119460 +4.800000 11.300000 110.102066 +4.800000 11.400000 112.104671 +4.800000 11.500000 114.127276 +4.800000 11.600000 116.169881 +4.800000 11.700000 118.232487 +4.800000 11.800000 120.315092 +4.800000 11.900000 122.417697 +4.800000 12.000000 124.540302 +4.800000 12.100000 126.682908 +4.800000 12.200000 128.845513 +4.800000 12.300000 131.028118 +4.800000 12.400000 133.230723 +4.800000 12.500000 135.453329 +4.800000 12.600000 137.695934 +4.800000 12.700000 139.958539 +4.800000 12.800000 142.241144 +4.800000 12.900000 144.543749 +4.800000 13.000000 146.866355 +4.800000 13.100000 149.208960 +4.800000 13.200000 151.571565 +4.800000 13.300000 153.954170 +4.800000 13.400000 156.356776 +4.800000 13.500000 158.779381 +4.800000 13.600000 161.221986 +4.800000 13.700000 163.684591 +4.800000 13.800000 166.167197 +4.800000 13.900000 168.669802 +4.800000 14.000000 171.192407 +4.800000 14.100000 173.735012 +4.800000 14.200000 176.297618 +4.800000 14.300000 178.880223 +4.800000 14.400000 181.482828 +4.800000 14.500000 184.105433 +4.800000 14.600000 186.748038 +4.800000 14.700000 189.410644 +4.800000 14.800000 192.093249 +4.800000 14.900000 194.795854 +4.800000 15.000000 197.518459 + +4.900000 -5.000000 51.520334 +4.900000 -4.900000 50.269708 +4.900000 -4.800000 49.039082 +4.900000 -4.700000 47.828457 +4.900000 -4.600000 46.637831 +4.900000 -4.500000 45.467206 +4.900000 -4.400000 44.316580 +4.900000 -4.300000 43.185955 +4.900000 -4.200000 42.075329 +4.900000 -4.100000 40.984703 +4.900000 -4.000000 39.914078 +4.900000 -3.900000 38.863452 +4.900000 -3.800000 37.832827 +4.900000 -3.700000 36.822201 +4.900000 -3.600000 35.831576 +4.900000 -3.500000 34.860950 +4.900000 -3.400000 33.910324 +4.900000 -3.300000 32.979699 +4.900000 -3.200000 32.069073 +4.900000 -3.100000 31.178448 +4.900000 -3.000000 30.307822 +4.900000 -2.900000 29.457197 +4.900000 -2.800000 28.626571 +4.900000 -2.700000 27.815945 +4.900000 -2.600000 27.025320 +4.900000 -2.500000 26.254694 +4.900000 -2.400000 25.504069 +4.900000 -2.300000 24.773443 +4.900000 -2.200000 24.062818 +4.900000 -2.100000 23.372192 +4.900000 -2.000000 22.701566 +4.900000 -1.900000 22.050941 +4.900000 -1.800000 21.420315 +4.900000 -1.700000 20.809690 +4.900000 -1.600000 20.219064 +4.900000 -1.500000 19.648439 +4.900000 -1.400000 19.097813 +4.900000 -1.300000 18.567187 +4.900000 -1.200000 18.056562 +4.900000 -1.100000 17.565936 +4.900000 -1.000000 17.095311 +4.900000 -0.900000 16.644685 +4.900000 -0.800000 16.214060 +4.900000 -0.700000 15.803434 +4.900000 -0.600000 15.412808 +4.900000 -0.500000 15.042183 +4.900000 -0.400000 14.691557 +4.900000 -0.300000 14.360932 +4.900000 -0.200000 14.050306 +4.900000 -0.100000 13.759681 +4.900000 -0.000000 13.489055 +4.900000 0.100000 13.238429 +4.900000 0.200000 13.007804 +4.900000 0.300000 12.797178 +4.900000 0.400000 12.606553 +4.900000 0.500000 12.435927 +4.900000 0.600000 12.285302 +4.900000 0.700000 12.154676 +4.900000 0.800000 12.044050 +4.900000 0.900000 11.953425 +4.900000 1.000000 11.882799 +4.900000 1.100000 11.832174 +4.900000 1.200000 11.801548 +4.900000 1.300000 11.790923 +4.900000 1.400000 11.800297 +4.900000 1.500000 11.829671 +4.900000 1.600000 11.879046 +4.900000 1.700000 11.948420 +4.900000 1.800000 12.037795 +4.900000 1.900000 12.147169 +4.900000 2.000000 12.276544 +4.900000 2.100000 12.425918 +4.900000 2.200000 12.595292 +4.900000 2.300000 12.784667 +4.900000 2.400000 12.994041 +4.900000 2.500000 13.223416 +4.900000 2.600000 13.472790 +4.900000 2.700000 13.742165 +4.900000 2.800000 14.031539 +4.900000 2.900000 14.340913 +4.900000 3.000000 14.670288 +4.900000 3.100000 15.019662 +4.900000 3.200000 15.389037 +4.900000 3.300000 15.778411 +4.900000 3.400000 16.187786 +4.900000 3.500000 16.617160 +4.900000 3.600000 17.066534 +4.900000 3.700000 17.535909 +4.900000 3.800000 18.025283 +4.900000 3.900000 18.534658 +4.900000 4.000000 19.064032 +4.900000 4.100000 19.613407 +4.900000 4.200000 20.182781 +4.900000 4.300000 20.772155 +4.900000 4.400000 21.381530 +4.900000 4.500000 22.010904 +4.900000 4.600000 22.660279 +4.900000 4.700000 23.329653 +4.900000 4.800000 24.019028 +4.900000 4.900000 24.728402 +4.900000 5.000000 25.457776 +4.900000 5.100000 26.207151 +4.900000 5.200000 26.976525 +4.900000 5.300000 27.765900 +4.900000 5.400000 28.575274 +4.900000 5.500000 29.404649 +4.900000 5.600000 30.254023 +4.900000 5.700000 31.123397 +4.900000 5.800000 32.012772 +4.900000 5.900000 32.922146 +4.900000 6.000000 33.851521 +4.900000 6.100000 34.800895 +4.900000 6.200000 35.770270 +4.900000 6.300000 36.759644 +4.900000 6.400000 37.769018 +4.900000 6.500000 38.798393 +4.900000 6.600000 39.847767 +4.900000 6.700000 40.917142 +4.900000 6.800000 42.006516 +4.900000 6.900000 43.115891 +4.900000 7.000000 44.245265 +4.900000 7.100000 45.394639 +4.900000 7.200000 46.564014 +4.900000 7.300000 47.753388 +4.900000 7.400000 48.962763 +4.900000 7.500000 50.192137 +4.900000 7.600000 51.441512 +4.900000 7.700000 52.710886 +4.900000 7.800000 54.000260 +4.900000 7.900000 55.309635 +4.900000 8.000000 56.639009 +4.900000 8.100000 57.988384 +4.900000 8.200000 59.357758 +4.900000 8.300000 60.747133 +4.900000 8.400000 62.156507 +4.900000 8.500000 63.585881 +4.900000 8.600000 65.035256 +4.900000 8.700000 66.504630 +4.900000 8.800000 67.994005 +4.900000 8.900000 69.503379 +4.900000 9.000000 71.032754 +4.900000 9.100000 72.582128 +4.900000 9.200000 74.151502 +4.900000 9.300000 75.740877 +4.900000 9.400000 77.350251 +4.900000 9.500000 78.979626 +4.900000 9.600000 80.629000 +4.900000 9.700000 82.298375 +4.900000 9.800000 83.987749 +4.900000 9.900000 85.697123 +4.900000 10.000000 87.426498 +4.900000 10.100000 89.175872 +4.900000 10.200000 90.945247 +4.900000 10.300000 92.734621 +4.900000 10.400000 94.543996 +4.900000 10.500000 96.373370 +4.900000 10.600000 98.222744 +4.900000 10.700000 100.092119 +4.900000 10.800000 101.981493 +4.900000 10.900000 103.890868 +4.900000 11.000000 105.820242 +4.900000 11.100000 107.769617 +4.900000 11.200000 109.738991 +4.900000 11.300000 111.728366 +4.900000 11.400000 113.737740 +4.900000 11.500000 115.767114 +4.900000 11.600000 117.816489 +4.900000 11.700000 119.885863 +4.900000 11.800000 121.975238 +4.900000 11.900000 124.084612 +4.900000 12.000000 126.213987 +4.900000 12.100000 128.363361 +4.900000 12.200000 130.532735 +4.900000 12.300000 132.722110 +4.900000 12.400000 134.931484 +4.900000 12.500000 137.160859 +4.900000 12.600000 139.410233 +4.900000 12.700000 141.679608 +4.900000 12.800000 143.968982 +4.900000 12.900000 146.278356 +4.900000 13.000000 148.607731 +4.900000 13.100000 150.957105 +4.900000 13.200000 153.326480 +4.900000 13.300000 155.715854 +4.900000 13.400000 158.125229 +4.900000 13.500000 160.554603 +4.900000 13.600000 163.003977 +4.900000 13.700000 165.473352 +4.900000 13.800000 167.962726 +4.900000 13.900000 170.472101 +4.900000 14.000000 173.001475 +4.900000 14.100000 175.550850 +4.900000 14.200000 178.120224 +4.900000 14.300000 180.709598 +4.900000 14.400000 183.318973 +4.900000 14.500000 185.948347 +4.900000 14.600000 188.597722 +4.900000 14.700000 191.267096 +4.900000 14.800000 193.956471 +4.900000 14.900000 196.665845 +4.900000 15.000000 199.395219 + +5.000000 -5.000000 52.060054 +5.000000 -4.900000 50.815681 +5.000000 -4.800000 49.591308 +5.000000 -4.700000 48.386935 +5.000000 -4.600000 47.202562 +5.000000 -4.500000 46.038188 +5.000000 -4.400000 44.893815 +5.000000 -4.300000 43.769442 +5.000000 -4.200000 42.665069 +5.000000 -4.100000 41.580696 +5.000000 -4.000000 40.516323 +5.000000 -3.900000 39.471950 +5.000000 -3.800000 38.447577 +5.000000 -3.700000 37.443204 +5.000000 -3.600000 36.458830 +5.000000 -3.500000 35.494457 +5.000000 -3.400000 34.550084 +5.000000 -3.300000 33.625711 +5.000000 -3.200000 32.721338 +5.000000 -3.100000 31.836965 +5.000000 -3.000000 30.972592 +5.000000 -2.900000 30.128219 +5.000000 -2.800000 29.303846 +5.000000 -2.700000 28.499472 +5.000000 -2.600000 27.715099 +5.000000 -2.500000 26.950726 +5.000000 -2.400000 26.206353 +5.000000 -2.300000 25.481980 +5.000000 -2.200000 24.777607 +5.000000 -2.100000 24.093234 +5.000000 -2.000000 23.428861 +5.000000 -1.900000 22.784487 +5.000000 -1.800000 22.160114 +5.000000 -1.700000 21.555741 +5.000000 -1.600000 20.971368 +5.000000 -1.500000 20.406995 +5.000000 -1.400000 19.862622 +5.000000 -1.300000 19.338249 +5.000000 -1.200000 18.833876 +5.000000 -1.100000 18.349503 +5.000000 -1.000000 17.885129 +5.000000 -0.900000 17.440756 +5.000000 -0.800000 17.016383 +5.000000 -0.700000 16.612010 +5.000000 -0.600000 16.227637 +5.000000 -0.500000 15.863264 +5.000000 -0.400000 15.518891 +5.000000 -0.300000 15.194518 +5.000000 -0.200000 14.890145 +5.000000 -0.100000 14.605771 +5.000000 -0.000000 14.341398 +5.000000 0.100000 14.097025 +5.000000 0.200000 13.872652 +5.000000 0.300000 13.668279 +5.000000 0.400000 13.483906 +5.000000 0.500000 13.319533 +5.000000 0.600000 13.175160 +5.000000 0.700000 13.050786 +5.000000 0.800000 12.946413 +5.000000 0.900000 12.862040 +5.000000 1.000000 12.797667 +5.000000 1.100000 12.753294 +5.000000 1.200000 12.728921 +5.000000 1.300000 12.724548 +5.000000 1.400000 12.740175 +5.000000 1.500000 12.775802 +5.000000 1.600000 12.831428 +5.000000 1.700000 12.907055 +5.000000 1.800000 13.002682 +5.000000 1.900000 13.118309 +5.000000 2.000000 13.253936 +5.000000 2.100000 13.409563 +5.000000 2.200000 13.585190 +5.000000 2.300000 13.780817 +5.000000 2.400000 13.996444 +5.000000 2.500000 14.232070 +5.000000 2.600000 14.487697 +5.000000 2.700000 14.763324 +5.000000 2.800000 15.058951 +5.000000 2.900000 15.374578 +5.000000 3.000000 15.710205 +5.000000 3.100000 16.065832 +5.000000 3.200000 16.441459 +5.000000 3.300000 16.837086 +5.000000 3.400000 17.252712 +5.000000 3.500000 17.688339 +5.000000 3.600000 18.143966 +5.000000 3.700000 18.619593 +5.000000 3.800000 19.115220 +5.000000 3.900000 19.630847 +5.000000 4.000000 20.166474 +5.000000 4.100000 20.722101 +5.000000 4.200000 21.297727 +5.000000 4.300000 21.893354 +5.000000 4.400000 22.508981 +5.000000 4.500000 23.144608 +5.000000 4.600000 23.800235 +5.000000 4.700000 24.475862 +5.000000 4.800000 25.171489 +5.000000 4.900000 25.887116 +5.000000 5.000000 26.622743 +5.000000 5.100000 27.378369 +5.000000 5.200000 28.153996 +5.000000 5.300000 28.949623 +5.000000 5.400000 29.765250 +5.000000 5.500000 30.600877 +5.000000 5.600000 31.456504 +5.000000 5.700000 32.332131 +5.000000 5.800000 33.227758 +5.000000 5.900000 34.143385 +5.000000 6.000000 35.079011 +5.000000 6.100000 36.034638 +5.000000 6.200000 37.010265 +5.000000 6.300000 38.005892 +5.000000 6.400000 39.021519 +5.000000 6.500000 40.057146 +5.000000 6.600000 41.112773 +5.000000 6.700000 42.188400 +5.000000 6.800000 43.284026 +5.000000 6.900000 44.399653 +5.000000 7.000000 45.535280 +5.000000 7.100000 46.690907 +5.000000 7.200000 47.866534 +5.000000 7.300000 49.062161 +5.000000 7.400000 50.277788 +5.000000 7.500000 51.513415 +5.000000 7.600000 52.769042 +5.000000 7.700000 54.044668 +5.000000 7.800000 55.340295 +5.000000 7.900000 56.655922 +5.000000 8.000000 57.991549 +5.000000 8.100000 59.347176 +5.000000 8.200000 60.722803 +5.000000 8.300000 62.118430 +5.000000 8.400000 63.534057 +5.000000 8.500000 64.969684 +5.000000 8.600000 66.425310 +5.000000 8.700000 67.900937 +5.000000 8.800000 69.396564 +5.000000 8.900000 70.912191 +5.000000 9.000000 72.447818 +5.000000 9.100000 74.003445 +5.000000 9.200000 75.579072 +5.000000 9.300000 77.174699 +5.000000 9.400000 78.790326 +5.000000 9.500000 80.425952 +5.000000 9.600000 82.081579 +5.000000 9.700000 83.757206 +5.000000 9.800000 85.452833 +5.000000 9.900000 87.168460 +5.000000 10.000000 88.904087 +5.000000 10.100000 90.659714 +5.000000 10.200000 92.435341 +5.000000 10.300000 94.230967 +5.000000 10.400000 96.046594 +5.000000 10.500000 97.882221 +5.000000 10.600000 99.737848 +5.000000 10.700000 101.613475 +5.000000 10.800000 103.509102 +5.000000 10.900000 105.424729 +5.000000 11.000000 107.360356 +5.000000 11.100000 109.315983 +5.000000 11.200000 111.291609 +5.000000 11.300000 113.287236 +5.000000 11.400000 115.302863 +5.000000 11.500000 117.338490 +5.000000 11.600000 119.394117 +5.000000 11.700000 121.469744 +5.000000 11.800000 123.565371 +5.000000 11.900000 125.680998 +5.000000 12.000000 127.816625 +5.000000 12.100000 129.972251 +5.000000 12.200000 132.147878 +5.000000 12.300000 134.343505 +5.000000 12.400000 136.559132 +5.000000 12.500000 138.794759 +5.000000 12.600000 141.050386 +5.000000 12.700000 143.326013 +5.000000 12.800000 145.621640 +5.000000 12.900000 147.937266 +5.000000 13.000000 150.272893 +5.000000 13.100000 152.628520 +5.000000 13.200000 155.004147 +5.000000 13.300000 157.399774 +5.000000 13.400000 159.815401 +5.000000 13.500000 162.251028 +5.000000 13.600000 164.706655 +5.000000 13.700000 167.182282 +5.000000 13.800000 169.677908 +5.000000 13.900000 172.193535 +5.000000 14.000000 174.729162 +5.000000 14.100000 177.284789 +5.000000 14.200000 179.860416 +5.000000 14.300000 182.456043 +5.000000 14.400000 185.071670 +5.000000 14.500000 187.707297 +5.000000 14.600000 190.362924 +5.000000 14.700000 193.038550 +5.000000 14.800000 195.734177 +5.000000 14.900000 198.449804 +5.000000 15.000000 201.185431 + +5.100000 -5.000000 52.606769 +5.100000 -4.900000 51.368131 +5.100000 -4.800000 50.149494 +5.100000 -4.700000 48.950856 +5.100000 -4.600000 47.772219 +5.100000 -4.500000 46.613582 +5.100000 -4.400000 45.474944 +5.100000 -4.300000 44.356307 +5.100000 -4.200000 43.257669 +5.100000 -4.100000 42.179032 +5.100000 -4.000000 41.120395 +5.100000 -3.900000 40.081757 +5.100000 -3.800000 39.063120 +5.100000 -3.700000 38.064482 +5.100000 -3.600000 37.085845 +5.100000 -3.500000 36.127208 +5.100000 -3.400000 35.188570 +5.100000 -3.300000 34.269933 +5.100000 -3.200000 33.371295 +5.100000 -3.100000 32.492658 +5.100000 -3.000000 31.634021 +5.100000 -2.900000 30.795383 +5.100000 -2.800000 29.976746 +5.100000 -2.700000 29.178108 +5.100000 -2.600000 28.399471 +5.100000 -2.500000 27.640834 +5.100000 -2.400000 26.902196 +5.100000 -2.300000 26.183559 +5.100000 -2.200000 25.484921 +5.100000 -2.100000 24.806284 +5.100000 -2.000000 24.147647 +5.100000 -1.900000 23.509009 +5.100000 -1.800000 22.890372 +5.100000 -1.700000 22.291734 +5.100000 -1.600000 21.713097 +5.100000 -1.500000 21.154460 +5.100000 -1.400000 20.615822 +5.100000 -1.300000 20.097185 +5.100000 -1.200000 19.598548 +5.100000 -1.100000 19.119910 +5.100000 -1.000000 18.661273 +5.100000 -0.900000 18.222635 +5.100000 -0.800000 17.803998 +5.100000 -0.700000 17.405361 +5.100000 -0.600000 17.026723 +5.100000 -0.500000 16.668086 +5.100000 -0.400000 16.329448 +5.100000 -0.300000 16.010811 +5.100000 -0.200000 15.712174 +5.100000 -0.100000 15.433536 +5.100000 -0.000000 15.174899 +5.100000 0.100000 14.936261 +5.100000 0.200000 14.717624 +5.100000 0.300000 14.518987 +5.100000 0.400000 14.340349 +5.100000 0.500000 14.181712 +5.100000 0.600000 14.043074 +5.100000 0.700000 13.924437 +5.100000 0.800000 13.825800 +5.100000 0.900000 13.747162 +5.100000 1.000000 13.688525 +5.100000 1.100000 13.649887 +5.100000 1.200000 13.631250 +5.100000 1.300000 13.632613 +5.100000 1.400000 13.653975 +5.100000 1.500000 13.695338 +5.100000 1.600000 13.756700 +5.100000 1.700000 13.838063 +5.100000 1.800000 13.939426 +5.100000 1.900000 14.060788 +5.100000 2.000000 14.202151 +5.100000 2.100000 14.363513 +5.100000 2.200000 14.544876 +5.100000 2.300000 14.746239 +5.100000 2.400000 14.967601 +5.100000 2.500000 15.208964 +5.100000 2.600000 15.470326 +5.100000 2.700000 15.751689 +5.100000 2.800000 16.053052 +5.100000 2.900000 16.374414 +5.100000 3.000000 16.715777 +5.100000 3.100000 17.077139 +5.100000 3.200000 17.458502 +5.100000 3.300000 17.859865 +5.100000 3.400000 18.281227 +5.100000 3.500000 18.722590 +5.100000 3.600000 19.183952 +5.100000 3.700000 19.665315 +5.100000 3.800000 20.166678 +5.100000 3.900000 20.688040 +5.100000 4.000000 21.229403 +5.100000 4.100000 21.790765 +5.100000 4.200000 22.372128 +5.100000 4.300000 22.973491 +5.100000 4.400000 23.594853 +5.100000 4.500000 24.236216 +5.100000 4.600000 24.897578 +5.100000 4.700000 25.578941 +5.100000 4.800000 26.280304 +5.100000 4.900000 27.001666 +5.100000 5.000000 27.743029 +5.100000 5.100000 28.504391 +5.100000 5.200000 29.285754 +5.100000 5.300000 30.087117 +5.100000 5.400000 30.908479 +5.100000 5.500000 31.749842 +5.100000 5.600000 32.611205 +5.100000 5.700000 33.492567 +5.100000 5.800000 34.393930 +5.100000 5.900000 35.315292 +5.100000 6.000000 36.256655 +5.100000 6.100000 37.218018 +5.100000 6.200000 38.199380 +5.100000 6.300000 39.200743 +5.100000 6.400000 40.222105 +5.100000 6.500000 41.263468 +5.100000 6.600000 42.324831 +5.100000 6.700000 43.406193 +5.100000 6.800000 44.507556 +5.100000 6.900000 45.628918 +5.100000 7.000000 46.770281 +5.100000 7.100000 47.931644 +5.100000 7.200000 49.113006 +5.100000 7.300000 50.314369 +5.100000 7.400000 51.535731 +5.100000 7.500000 52.777094 +5.100000 7.600000 54.038457 +5.100000 7.700000 55.319819 +5.100000 7.800000 56.621182 +5.100000 7.900000 57.942544 +5.100000 8.000000 59.283907 +5.100000 8.100000 60.645270 +5.100000 8.200000 62.026632 +5.100000 8.300000 63.427995 +5.100000 8.400000 64.849357 +5.100000 8.500000 66.290720 +5.100000 8.600000 67.752083 +5.100000 8.700000 69.233445 +5.100000 8.800000 70.734808 +5.100000 8.900000 72.256170 +5.100000 9.000000 73.797533 +5.100000 9.100000 75.358896 +5.100000 9.200000 76.940258 +5.100000 9.300000 78.541621 +5.100000 9.400000 80.162983 +5.100000 9.500000 81.804346 +5.100000 9.600000 83.465709 +5.100000 9.700000 85.147071 +5.100000 9.800000 86.848434 +5.100000 9.900000 88.569796 +5.100000 10.000000 90.311159 +5.100000 10.100000 92.072522 +5.100000 10.200000 93.853884 +5.100000 10.300000 95.655247 +5.100000 10.400000 97.476609 +5.100000 10.500000 99.317972 +5.100000 10.600000 101.179335 +5.100000 10.700000 103.060697 +5.100000 10.800000 104.962060 +5.100000 10.900000 106.883422 +5.100000 11.000000 108.824785 +5.100000 11.100000 110.786148 +5.100000 11.200000 112.767510 +5.100000 11.300000 114.768873 +5.100000 11.400000 116.790235 +5.100000 11.500000 118.831598 +5.100000 11.600000 120.892961 +5.100000 11.700000 122.974323 +5.100000 11.800000 125.075686 +5.100000 11.900000 127.197048 +5.100000 12.000000 129.338411 +5.100000 12.100000 131.499774 +5.100000 12.200000 133.681136 +5.100000 12.300000 135.882499 +5.100000 12.400000 138.103862 +5.100000 12.500000 140.345224 +5.100000 12.600000 142.606587 +5.100000 12.700000 144.887949 +5.100000 12.800000 147.189312 +5.100000 12.900000 149.510675 +5.100000 13.000000 151.852037 +5.100000 13.100000 154.213400 +5.100000 13.200000 156.594762 +5.100000 13.300000 158.996125 +5.100000 13.400000 161.417488 +5.100000 13.500000 163.858850 +5.100000 13.600000 166.320213 +5.100000 13.700000 168.801575 +5.100000 13.800000 171.302938 +5.100000 13.900000 173.824301 +5.100000 14.000000 176.365663 +5.100000 14.100000 178.927026 +5.100000 14.200000 181.508388 +5.100000 14.300000 184.109751 +5.100000 14.400000 186.731114 +5.100000 14.500000 189.372476 +5.100000 14.600000 192.033839 +5.100000 14.700000 194.715201 +5.100000 14.800000 197.416564 +5.100000 14.900000 200.137927 +5.100000 15.000000 202.879289 + +5.200000 -5.000000 53.150984 +5.200000 -4.900000 51.917565 +5.200000 -4.800000 50.704147 +5.200000 -4.700000 49.510729 +5.200000 -4.600000 48.337310 +5.200000 -4.500000 47.183892 +5.200000 -4.400000 46.050473 +5.200000 -4.300000 44.937055 +5.200000 -4.200000 43.843637 +5.200000 -4.100000 42.770218 +5.200000 -4.000000 41.716800 +5.200000 -3.900000 40.683381 +5.200000 -3.800000 39.669963 +5.200000 -3.700000 38.676544 +5.200000 -3.600000 37.703126 +5.200000 -3.500000 36.749708 +5.200000 -3.400000 35.816289 +5.200000 -3.300000 34.902871 +5.200000 -3.200000 34.009452 +5.200000 -3.100000 33.136034 +5.200000 -3.000000 32.282616 +5.200000 -2.900000 31.449197 +5.200000 -2.800000 30.635779 +5.200000 -2.700000 29.842360 +5.200000 -2.600000 29.068942 +5.200000 -2.500000 28.315523 +5.200000 -2.400000 27.582105 +5.200000 -2.300000 26.868687 +5.200000 -2.200000 26.175268 +5.200000 -2.100000 25.501850 +5.200000 -2.000000 24.848431 +5.200000 -1.900000 24.215013 +5.200000 -1.800000 23.601595 +5.200000 -1.700000 23.008176 +5.200000 -1.600000 22.434758 +5.200000 -1.500000 21.881339 +5.200000 -1.400000 21.347921 +5.200000 -1.300000 20.834502 +5.200000 -1.200000 20.341084 +5.200000 -1.100000 19.867666 +5.200000 -1.000000 19.414247 +5.200000 -0.900000 18.980829 +5.200000 -0.800000 18.567410 +5.200000 -0.700000 18.173992 +5.200000 -0.600000 17.800574 +5.200000 -0.500000 17.447155 +5.200000 -0.400000 17.113737 +5.200000 -0.300000 16.800318 +5.200000 -0.200000 16.506900 +5.200000 -0.100000 16.233481 +5.200000 -0.000000 15.980063 +5.200000 0.100000 15.746645 +5.200000 0.200000 15.533226 +5.200000 0.300000 15.339808 +5.200000 0.400000 15.166389 +5.200000 0.500000 15.012971 +5.200000 0.600000 14.879552 +5.200000 0.700000 14.766134 +5.200000 0.800000 14.672716 +5.200000 0.900000 14.599297 +5.200000 1.000000 14.545879 +5.200000 1.100000 14.512460 +5.200000 1.200000 14.499042 +5.200000 1.300000 14.505624 +5.200000 1.400000 14.532205 +5.200000 1.500000 14.578787 +5.200000 1.600000 14.645368 +5.200000 1.700000 14.731950 +5.200000 1.800000 14.838531 +5.200000 1.900000 14.965113 +5.200000 2.000000 15.111695 +5.200000 2.100000 15.278276 +5.200000 2.200000 15.464858 +5.200000 2.300000 15.671439 +5.200000 2.400000 15.898021 +5.200000 2.500000 16.144603 +5.200000 2.600000 16.411184 +5.200000 2.700000 16.697766 +5.200000 2.800000 17.004347 +5.200000 2.900000 17.330929 +5.200000 3.000000 17.677510 +5.200000 3.100000 18.044092 +5.200000 3.200000 18.430674 +5.200000 3.300000 18.837255 +5.200000 3.400000 19.263837 +5.200000 3.500000 19.710418 +5.200000 3.600000 20.177000 +5.200000 3.700000 20.663582 +5.200000 3.800000 21.170163 +5.200000 3.900000 21.696745 +5.200000 4.000000 22.243326 +5.200000 4.100000 22.809908 +5.200000 4.200000 23.396489 +5.200000 4.300000 24.003071 +5.200000 4.400000 24.629653 +5.200000 4.500000 25.276234 +5.200000 4.600000 25.942816 +5.200000 4.700000 26.629397 +5.200000 4.800000 27.335979 +5.200000 4.900000 28.062561 +5.200000 5.000000 28.809142 +5.200000 5.100000 29.575724 +5.200000 5.200000 30.362305 +5.200000 5.300000 31.168887 +5.200000 5.400000 31.995468 +5.200000 5.500000 32.842050 +5.200000 5.600000 33.708632 +5.200000 5.700000 34.595213 +5.200000 5.800000 35.501795 +5.200000 5.900000 36.428376 +5.200000 6.000000 37.374958 +5.200000 6.100000 38.341540 +5.200000 6.200000 39.328121 +5.200000 6.300000 40.334703 +5.200000 6.400000 41.361284 +5.200000 6.500000 42.407866 +5.200000 6.600000 43.474447 +5.200000 6.700000 44.561029 +5.200000 6.800000 45.667611 +5.200000 6.900000 46.794192 +5.200000 7.000000 47.940774 +5.200000 7.100000 49.107355 +5.200000 7.200000 50.293937 +5.200000 7.300000 51.500519 +5.200000 7.400000 52.727100 +5.200000 7.500000 53.973682 +5.200000 7.600000 55.240263 +5.200000 7.700000 56.526845 +5.200000 7.800000 57.833426 +5.200000 7.900000 59.160008 +5.200000 8.000000 60.506590 +5.200000 8.100000 61.873171 +5.200000 8.200000 63.259753 +5.200000 8.300000 64.666334 +5.200000 8.400000 66.092916 +5.200000 8.500000 67.539498 +5.200000 8.600000 69.006079 +5.200000 8.700000 70.492661 +5.200000 8.800000 71.999242 +5.200000 8.900000 73.525824 +5.200000 9.000000 75.072405 +5.200000 9.100000 76.638987 +5.200000 9.200000 78.225569 +5.200000 9.300000 79.832150 +5.200000 9.400000 81.458732 +5.200000 9.500000 83.105313 +5.200000 9.600000 84.771895 +5.200000 9.700000 86.458477 +5.200000 9.800000 88.165058 +5.200000 9.900000 89.891640 +5.200000 10.000000 91.638221 +5.200000 10.100000 93.404803 +5.200000 10.200000 95.191384 +5.200000 10.300000 96.997966 +5.200000 10.400000 98.824548 +5.200000 10.500000 100.671129 +5.200000 10.600000 102.537711 +5.200000 10.700000 104.424292 +5.200000 10.800000 106.330874 +5.200000 10.900000 108.257456 +5.200000 11.000000 110.204037 +5.200000 11.100000 112.170619 +5.200000 11.200000 114.157200 +5.200000 11.300000 116.163782 +5.200000 11.400000 118.190363 +5.200000 11.500000 120.236945 +5.200000 11.600000 122.303527 +5.200000 11.700000 124.390108 +5.200000 11.800000 126.496690 +5.200000 11.900000 128.623271 +5.200000 12.000000 130.769853 +5.200000 12.100000 132.936435 +5.200000 12.200000 135.123016 +5.200000 12.300000 137.329598 +5.200000 12.400000 139.556179 +5.200000 12.500000 141.802761 +5.200000 12.600000 144.069342 +5.200000 12.700000 146.355924 +5.200000 12.800000 148.662506 +5.200000 12.900000 150.989087 +5.200000 13.000000 153.335669 +5.200000 13.100000 155.702250 +5.200000 13.200000 158.088832 +5.200000 13.300000 160.495413 +5.200000 13.400000 162.921995 +5.200000 13.500000 165.368577 +5.200000 13.600000 167.835158 +5.200000 13.700000 170.321740 +5.200000 13.800000 172.828321 +5.200000 13.900000 175.354903 +5.200000 14.000000 177.901485 +5.200000 14.100000 180.468066 +5.200000 14.200000 183.054648 +5.200000 14.300000 185.661229 +5.200000 14.400000 188.287811 +5.200000 14.500000 190.934392 +5.200000 14.600000 193.600974 +5.200000 14.700000 196.287556 +5.200000 14.800000 198.994137 +5.200000 14.900000 201.720719 +5.200000 15.000000 204.467300 + +5.300000 -5.000000 53.683609 +5.300000 -4.900000 52.454893 +5.300000 -4.800000 51.246177 +5.300000 -4.700000 50.057460 +5.300000 -4.600000 48.888744 +5.300000 -4.500000 47.740028 +5.300000 -4.400000 46.611312 +5.300000 -4.300000 45.502596 +5.300000 -4.200000 44.413880 +5.300000 -4.100000 43.345163 +5.300000 -4.000000 42.296447 +5.300000 -3.900000 41.267731 +5.300000 -3.800000 40.259015 +5.300000 -3.700000 39.270299 +5.300000 -3.600000 38.301582 +5.300000 -3.500000 37.352866 +5.300000 -3.400000 36.424150 +5.300000 -3.300000 35.515434 +5.300000 -3.200000 34.626718 +5.300000 -3.100000 33.758002 +5.300000 -3.000000 32.909285 +5.300000 -2.900000 32.080569 +5.300000 -2.800000 31.271853 +5.300000 -2.700000 30.483137 +5.300000 -2.600000 29.714421 +5.300000 -2.500000 28.965705 +5.300000 -2.400000 28.236988 +5.300000 -2.300000 27.528272 +5.300000 -2.200000 26.839556 +5.300000 -2.100000 26.170840 +5.300000 -2.000000 25.522124 +5.300000 -1.900000 24.893407 +5.300000 -1.800000 24.284691 +5.300000 -1.700000 23.695975 +5.300000 -1.600000 23.127259 +5.300000 -1.500000 22.578543 +5.300000 -1.400000 22.049827 +5.300000 -1.300000 21.541110 +5.300000 -1.200000 21.052394 +5.300000 -1.100000 20.583678 +5.300000 -1.000000 20.134962 +5.300000 -0.900000 19.706246 +5.300000 -0.800000 19.297530 +5.300000 -0.700000 18.908813 +5.300000 -0.600000 18.540097 +5.300000 -0.500000 18.191381 +5.300000 -0.400000 17.862665 +5.300000 -0.300000 17.553949 +5.300000 -0.200000 17.265232 +5.300000 -0.100000 16.996516 +5.300000 -0.000000 16.747800 +5.300000 0.100000 16.519084 +5.300000 0.200000 16.310368 +5.300000 0.300000 16.121652 +5.300000 0.400000 15.952935 +5.300000 0.500000 15.804219 +5.300000 0.600000 15.675503 +5.300000 0.700000 15.566787 +5.300000 0.800000 15.478071 +5.300000 0.900000 15.409355 +5.300000 1.000000 15.360638 +5.300000 1.100000 15.331922 +5.300000 1.200000 15.323206 +5.300000 1.300000 15.334490 +5.300000 1.400000 15.365774 +5.300000 1.500000 15.417058 +5.300000 1.600000 15.488341 +5.300000 1.700000 15.579625 +5.300000 1.800000 15.690909 +5.300000 1.900000 15.822193 +5.300000 2.000000 15.973477 +5.300000 2.100000 16.144760 +5.300000 2.200000 16.336044 +5.300000 2.300000 16.547328 +5.300000 2.400000 16.778612 +5.300000 2.500000 17.029896 +5.300000 2.600000 17.301180 +5.300000 2.700000 17.592463 +5.300000 2.800000 17.903747 +5.300000 2.900000 18.235031 +5.300000 3.000000 18.586315 +5.300000 3.100000 18.957599 +5.300000 3.200000 19.348883 +5.300000 3.300000 19.760166 +5.300000 3.400000 20.191450 +5.300000 3.500000 20.642734 +5.300000 3.600000 21.114018 +5.300000 3.700000 21.605302 +5.300000 3.800000 22.116585 +5.300000 3.900000 22.647869 +5.300000 4.000000 23.199153 +5.300000 4.100000 23.770437 +5.300000 4.200000 24.361721 +5.300000 4.300000 24.973005 +5.300000 4.400000 25.604288 +5.300000 4.500000 26.255572 +5.300000 4.600000 26.926856 +5.300000 4.700000 27.618140 +5.300000 4.800000 28.329424 +5.300000 4.900000 29.060708 +5.300000 5.000000 29.811991 +5.300000 5.100000 30.583275 +5.300000 5.200000 31.374559 +5.300000 5.300000 32.185843 +5.300000 5.400000 33.017127 +5.300000 5.500000 33.868410 +5.300000 5.600000 34.739694 +5.300000 5.700000 35.630978 +5.300000 5.800000 36.542262 +5.300000 5.900000 37.473546 +5.300000 6.000000 38.424830 +5.300000 6.100000 39.396113 +5.300000 6.200000 40.387397 +5.300000 6.300000 41.398681 +5.300000 6.400000 42.429965 +5.300000 6.500000 43.481249 +5.300000 6.600000 44.552533 +5.300000 6.700000 45.643816 +5.300000 6.800000 46.755100 +5.300000 6.900000 47.886384 +5.300000 7.000000 49.037668 +5.300000 7.100000 50.208952 +5.300000 7.200000 51.400235 +5.300000 7.300000 52.611519 +5.300000 7.400000 53.842803 +5.300000 7.500000 55.094087 +5.300000 7.600000 56.365371 +5.300000 7.700000 57.656655 +5.300000 7.800000 58.967938 +5.300000 7.900000 60.299222 +5.300000 8.000000 61.650506 +5.300000 8.100000 63.021790 +5.300000 8.200000 64.413074 +5.300000 8.300000 65.824358 +5.300000 8.400000 67.255641 +5.300000 8.500000 68.706925 +5.300000 8.600000 70.178209 +5.300000 8.700000 71.669493 +5.300000 8.800000 73.180777 +5.300000 8.900000 74.712061 +5.300000 9.000000 76.263344 +5.300000 9.100000 77.834628 +5.300000 9.200000 79.425912 +5.300000 9.300000 81.037196 +5.300000 9.400000 82.668480 +5.300000 9.500000 84.319763 +5.300000 9.600000 85.991047 +5.300000 9.700000 87.682331 +5.300000 9.800000 89.393615 +5.300000 9.900000 91.124899 +5.300000 10.000000 92.876183 +5.300000 10.100000 94.647466 +5.300000 10.200000 96.438750 +5.300000 10.300000 98.250034 +5.300000 10.400000 100.081318 +5.300000 10.500000 101.932602 +5.300000 10.600000 103.803886 +5.300000 10.700000 105.695169 +5.300000 10.800000 107.606453 +5.300000 10.900000 109.537737 +5.300000 11.000000 111.489021 +5.300000 11.100000 113.460305 +5.300000 11.200000 115.451588 +5.300000 11.300000 117.462872 +5.300000 11.400000 119.494156 +5.300000 11.500000 121.545440 +5.300000 11.600000 123.616724 +5.300000 11.700000 125.708008 +5.300000 11.800000 127.819291 +5.300000 11.900000 129.950575 +5.300000 12.000000 132.101859 +5.300000 12.100000 134.273143 +5.300000 12.200000 136.464427 +5.300000 12.300000 138.675711 +5.300000 12.400000 140.906994 +5.300000 12.500000 143.158278 +5.300000 12.600000 145.429562 +5.300000 12.700000 147.720846 +5.300000 12.800000 150.032130 +5.300000 12.900000 152.363413 +5.300000 13.000000 154.714697 +5.300000 13.100000 157.085981 +5.300000 13.200000 159.477265 +5.300000 13.300000 161.888549 +5.300000 13.400000 164.319833 +5.300000 13.500000 166.771116 +5.300000 13.600000 169.242400 +5.300000 13.700000 171.733684 +5.300000 13.800000 174.244968 +5.300000 13.900000 176.776252 +5.300000 14.000000 179.327536 +5.300000 14.100000 181.898819 +5.300000 14.200000 184.490103 +5.300000 14.300000 187.101387 +5.300000 14.400000 189.732671 +5.300000 14.500000 192.383955 +5.300000 14.600000 195.055238 +5.300000 14.700000 197.746522 +5.300000 14.800000 200.457806 +5.300000 14.900000 203.189090 +5.300000 15.000000 205.940374 + +5.400000 -5.000000 54.196042 +5.400000 -4.900000 52.971511 +5.400000 -4.800000 51.766981 +5.400000 -4.700000 50.582450 +5.400000 -4.600000 49.417919 +5.400000 -4.500000 48.273389 +5.400000 -4.400000 47.148858 +5.400000 -4.300000 46.044327 +5.400000 -4.200000 44.959797 +5.400000 -4.100000 43.895266 +5.400000 -4.000000 42.850735 +5.400000 -3.900000 41.826205 +5.400000 -3.800000 40.821674 +5.400000 -3.700000 39.837143 +5.400000 -3.600000 38.872613 +5.400000 -3.500000 37.928082 +5.400000 -3.400000 37.003551 +5.400000 -3.300000 36.099021 +5.400000 -3.200000 35.214490 +5.400000 -3.100000 34.349959 +5.400000 -3.000000 33.505429 +5.400000 -2.900000 32.680898 +5.400000 -2.800000 31.876367 +5.400000 -2.700000 31.091837 +5.400000 -2.600000 30.327306 +5.400000 -2.500000 29.582775 +5.400000 -2.400000 28.858245 +5.400000 -2.300000 28.153714 +5.400000 -2.200000 27.469183 +5.400000 -2.100000 26.804653 +5.400000 -2.000000 26.160122 +5.400000 -1.900000 25.535591 +5.400000 -1.800000 24.931060 +5.400000 -1.700000 24.346530 +5.400000 -1.600000 23.781999 +5.400000 -1.500000 23.237468 +5.400000 -1.400000 22.712938 +5.400000 -1.300000 22.208407 +5.400000 -1.200000 21.723876 +5.400000 -1.100000 21.259346 +5.400000 -1.000000 20.814815 +5.400000 -0.900000 20.390284 +5.400000 -0.800000 19.985754 +5.400000 -0.700000 19.601223 +5.400000 -0.600000 19.236692 +5.400000 -0.500000 18.892162 +5.400000 -0.400000 18.567631 +5.400000 -0.300000 18.263100 +5.400000 -0.200000 17.978570 +5.400000 -0.100000 17.714039 +5.400000 -0.000000 17.469508 +5.400000 0.100000 17.244978 +5.400000 0.200000 17.040447 +5.400000 0.300000 16.855916 +5.400000 0.400000 16.691386 +5.400000 0.500000 16.546855 +5.400000 0.600000 16.422324 +5.400000 0.700000 16.317794 +5.400000 0.800000 16.233263 +5.400000 0.900000 16.168732 +5.400000 1.000000 16.124202 +5.400000 1.100000 16.099671 +5.400000 1.200000 16.095140 +5.400000 1.300000 16.110610 +5.400000 1.400000 16.146079 +5.400000 1.500000 16.201548 +5.400000 1.600000 16.277018 +5.400000 1.700000 16.372487 +5.400000 1.800000 16.487956 +5.400000 1.900000 16.623426 +5.400000 2.000000 16.778895 +5.400000 2.100000 16.954364 +5.400000 2.200000 17.149834 +5.400000 2.300000 17.365303 +5.400000 2.400000 17.600772 +5.400000 2.500000 17.856242 +5.400000 2.600000 18.131711 +5.400000 2.700000 18.427180 +5.400000 2.800000 18.742650 +5.400000 2.900000 19.078119 +5.400000 3.000000 19.433588 +5.400000 3.100000 19.809058 +5.400000 3.200000 20.204527 +5.400000 3.300000 20.619996 +5.400000 3.400000 21.055466 +5.400000 3.500000 21.510935 +5.400000 3.600000 21.986404 +5.400000 3.700000 22.481874 +5.400000 3.800000 22.997343 +5.400000 3.900000 23.532812 +5.400000 4.000000 24.088282 +5.400000 4.100000 24.663751 +5.400000 4.200000 25.259220 +5.400000 4.300000 25.874689 +5.400000 4.400000 26.510159 +5.400000 4.500000 27.165628 +5.400000 4.600000 27.841097 +5.400000 4.700000 28.536567 +5.400000 4.800000 29.252036 +5.400000 4.900000 29.987505 +5.400000 5.000000 30.742975 +5.400000 5.100000 31.518444 +5.400000 5.200000 32.313913 +5.400000 5.300000 33.129383 +5.400000 5.400000 33.964852 +5.400000 5.500000 34.820321 +5.400000 5.600000 35.695791 +5.400000 5.700000 36.591260 +5.400000 5.800000 37.506729 +5.400000 5.900000 38.442199 +5.400000 6.000000 39.397668 +5.400000 6.100000 40.373137 +5.400000 6.200000 41.368607 +5.400000 6.300000 42.384076 +5.400000 6.400000 43.419545 +5.400000 6.500000 44.475015 +5.400000 6.600000 45.550484 +5.400000 6.700000 46.645953 +5.400000 6.800000 47.761423 +5.400000 6.900000 48.896892 +5.400000 7.000000 50.052361 +5.400000 7.100000 51.227831 +5.400000 7.200000 52.423300 +5.400000 7.300000 53.638769 +5.400000 7.400000 54.874239 +5.400000 7.500000 56.129708 +5.400000 7.600000 57.405177 +5.400000 7.700000 58.700647 +5.400000 7.800000 60.016116 +5.400000 7.900000 61.351585 +5.400000 8.000000 62.707055 +5.400000 8.100000 64.082524 +5.400000 8.200000 65.477993 +5.400000 8.300000 66.893463 +5.400000 8.400000 68.328932 +5.400000 8.500000 69.784401 +5.400000 8.600000 71.259871 +5.400000 8.700000 72.755340 +5.400000 8.800000 74.270809 +5.400000 8.900000 75.806279 +5.400000 9.000000 77.361748 +5.400000 9.100000 78.937217 +5.400000 9.200000 80.532687 +5.400000 9.300000 82.148156 +5.400000 9.400000 83.783625 +5.400000 9.500000 85.439095 +5.400000 9.600000 87.114564 +5.400000 9.700000 88.810033 +5.400000 9.800000 90.525503 +5.400000 9.900000 92.260972 +5.400000 10.000000 94.016441 +5.400000 10.100000 95.791911 +5.400000 10.200000 97.587380 +5.400000 10.300000 99.402849 +5.400000 10.400000 101.238319 +5.400000 10.500000 103.093788 +5.400000 10.600000 104.969257 +5.400000 10.700000 106.864726 +5.400000 10.800000 108.780196 +5.400000 10.900000 110.715665 +5.400000 11.000000 112.671134 +5.400000 11.100000 114.646604 +5.400000 11.200000 116.642073 +5.400000 11.300000 118.657542 +5.400000 11.400000 120.693012 +5.400000 11.500000 122.748481 +5.400000 11.600000 124.823950 +5.400000 11.700000 126.919420 +5.400000 11.800000 129.034889 +5.400000 11.900000 131.170358 +5.400000 12.000000 133.325828 +5.400000 12.100000 135.501297 +5.400000 12.200000 137.696766 +5.400000 12.300000 139.912236 +5.400000 12.400000 142.147705 +5.400000 12.500000 144.403174 +5.400000 12.600000 146.678644 +5.400000 12.700000 148.974113 +5.400000 12.800000 151.289582 +5.400000 12.900000 153.625052 +5.400000 13.000000 155.980521 +5.400000 13.100000 158.355990 +5.400000 13.200000 160.751460 +5.400000 13.300000 163.166929 +5.400000 13.400000 165.602398 +5.400000 13.500000 168.057868 +5.400000 13.600000 170.533337 +5.400000 13.700000 173.028806 +5.400000 13.800000 175.544276 +5.400000 13.900000 178.079745 +5.400000 14.000000 180.635214 +5.400000 14.100000 183.210684 +5.400000 14.200000 185.806153 +5.400000 14.300000 188.421622 +5.400000 14.400000 191.057092 +5.400000 14.500000 193.712561 +5.400000 14.600000 196.388030 +5.400000 14.700000 199.083500 +5.400000 14.800000 201.798969 +5.400000 14.900000 204.534438 +5.400000 15.000000 207.289908 + +5.500000 -5.000000 54.680253 +5.500000 -4.900000 53.459391 +5.500000 -4.800000 52.258529 +5.500000 -4.700000 51.077667 +5.500000 -4.600000 49.916805 +5.500000 -4.500000 48.775943 +5.500000 -4.400000 47.655081 +5.500000 -4.300000 46.554219 +5.500000 -4.200000 45.473358 +5.500000 -4.100000 44.412496 +5.500000 -4.000000 43.371634 +5.500000 -3.900000 42.350772 +5.500000 -3.800000 41.349910 +5.500000 -3.700000 40.369048 +5.500000 -3.600000 39.408186 +5.500000 -3.500000 38.467324 +5.500000 -3.400000 37.546462 +5.500000 -3.300000 36.645600 +5.500000 -3.200000 35.764738 +5.500000 -3.100000 34.903877 +5.500000 -3.000000 34.063015 +5.500000 -2.900000 33.242153 +5.500000 -2.800000 32.441291 +5.500000 -2.700000 31.660429 +5.500000 -2.600000 30.899567 +5.500000 -2.500000 30.158705 +5.500000 -2.400000 29.437843 +5.500000 -2.300000 28.736981 +5.500000 -2.200000 28.056119 +5.500000 -2.100000 27.395258 +5.500000 -2.000000 26.754396 +5.500000 -1.900000 26.133534 +5.500000 -1.800000 25.532672 +5.500000 -1.700000 24.951810 +5.500000 -1.600000 24.390948 +5.500000 -1.500000 23.850086 +5.500000 -1.400000 23.329224 +5.500000 -1.300000 22.828362 +5.500000 -1.200000 22.347500 +5.500000 -1.100000 21.886638 +5.500000 -1.000000 21.445777 +5.500000 -0.900000 21.024915 +5.500000 -0.800000 20.624053 +5.500000 -0.700000 20.243191 +5.500000 -0.600000 19.882329 +5.500000 -0.500000 19.541467 +5.500000 -0.400000 19.220605 +5.500000 -0.300000 18.919743 +5.500000 -0.200000 18.638881 +5.500000 -0.100000 18.378019 +5.500000 -0.000000 18.137157 +5.500000 0.100000 17.916296 +5.500000 0.200000 17.715434 +5.500000 0.300000 17.534572 +5.500000 0.400000 17.373710 +5.500000 0.500000 17.232848 +5.500000 0.600000 17.111986 +5.500000 0.700000 17.011124 +5.500000 0.800000 16.930262 +5.500000 0.900000 16.869400 +5.500000 1.000000 16.828538 +5.500000 1.100000 16.807677 +5.500000 1.200000 16.806815 +5.500000 1.300000 16.825953 +5.500000 1.400000 16.865091 +5.500000 1.500000 16.924229 +5.500000 1.600000 17.003367 +5.500000 1.700000 17.102505 +5.500000 1.800000 17.221643 +5.500000 1.900000 17.360781 +5.500000 2.000000 17.519919 +5.500000 2.100000 17.699057 +5.500000 2.200000 17.898196 +5.500000 2.300000 18.117334 +5.500000 2.400000 18.356472 +5.500000 2.500000 18.615610 +5.500000 2.600000 18.894748 +5.500000 2.700000 19.193886 +5.500000 2.800000 19.513024 +5.500000 2.900000 19.852162 +5.500000 3.000000 20.211300 +5.500000 3.100000 20.590438 +5.500000 3.200000 20.989576 +5.500000 3.300000 21.408715 +5.500000 3.400000 21.847853 +5.500000 3.500000 22.306991 +5.500000 3.600000 22.786129 +5.500000 3.700000 23.285267 +5.500000 3.800000 23.804405 +5.500000 3.900000 24.343543 +5.500000 4.000000 24.902681 +5.500000 4.100000 25.481819 +5.500000 4.200000 26.080957 +5.500000 4.300000 26.700096 +5.500000 4.400000 27.339234 +5.500000 4.500000 27.998372 +5.500000 4.600000 28.677510 +5.500000 4.700000 29.376648 +5.500000 4.800000 30.095786 +5.500000 4.900000 30.834924 +5.500000 5.000000 31.594062 +5.500000 5.100000 32.373200 +5.500000 5.200000 33.172338 +5.500000 5.300000 33.991476 +5.500000 5.400000 34.830615 +5.500000 5.500000 35.689753 +5.500000 5.600000 36.568891 +5.500000 5.700000 37.468029 +5.500000 5.800000 38.387167 +5.500000 5.900000 39.326305 +5.500000 6.000000 40.285443 +5.500000 6.100000 41.264581 +5.500000 6.200000 42.263719 +5.500000 6.300000 43.282857 +5.500000 6.400000 44.321995 +5.500000 6.500000 45.381134 +5.500000 6.600000 46.460272 +5.500000 6.700000 47.559410 +5.500000 6.800000 48.678548 +5.500000 6.900000 49.817686 +5.500000 7.000000 50.976824 +5.500000 7.100000 52.155962 +5.500000 7.200000 53.355100 +5.500000 7.300000 54.574238 +5.500000 7.400000 55.813376 +5.500000 7.500000 57.072515 +5.500000 7.600000 58.351653 +5.500000 7.700000 59.650791 +5.500000 7.800000 60.969929 +5.500000 7.900000 62.309067 +5.500000 8.000000 63.668205 +5.500000 8.100000 65.047343 +5.500000 8.200000 66.446481 +5.500000 8.300000 67.865619 +5.500000 8.400000 69.304757 +5.500000 8.500000 70.763895 +5.500000 8.600000 72.243034 +5.500000 8.700000 73.742172 +5.500000 8.800000 75.261310 +5.500000 8.900000 76.800448 +5.500000 9.000000 78.359586 +5.500000 9.100000 79.938724 +5.500000 9.200000 81.537862 +5.500000 9.300000 83.157000 +5.500000 9.400000 84.796138 +5.500000 9.500000 86.455276 +5.500000 9.600000 88.134414 +5.500000 9.700000 89.833553 +5.500000 9.800000 91.552691 +5.500000 9.900000 93.291829 +5.500000 10.000000 95.050967 +5.500000 10.100000 96.830105 +5.500000 10.200000 98.629243 +5.500000 10.300000 100.448381 +5.500000 10.400000 102.287519 +5.500000 10.500000 104.146657 +5.500000 10.600000 106.025795 +5.500000 10.700000 107.924934 +5.500000 10.800000 109.844072 +5.500000 10.900000 111.783210 +5.500000 11.000000 113.742348 +5.500000 11.100000 115.721486 +5.500000 11.200000 117.720624 +5.500000 11.300000 119.739762 +5.500000 11.400000 121.778900 +5.500000 11.500000 123.838038 +5.500000 11.600000 125.917176 +5.500000 11.700000 128.016314 +5.500000 11.800000 130.135453 +5.500000 11.900000 132.274591 +5.500000 12.000000 134.433729 +5.500000 12.100000 136.612867 +5.500000 12.200000 138.812005 +5.500000 12.300000 141.031143 +5.500000 12.400000 143.270281 +5.500000 12.500000 145.529419 +5.500000 12.600000 147.808557 +5.500000 12.700000 150.107695 +5.500000 12.800000 152.426833 +5.500000 12.900000 154.765972 +5.500000 13.000000 157.125110 +5.500000 13.100000 159.504248 +5.500000 13.200000 161.903386 +5.500000 13.300000 164.322524 +5.500000 13.400000 166.761662 +5.500000 13.500000 169.220800 +5.500000 13.600000 171.699938 +5.500000 13.700000 174.199076 +5.500000 13.800000 176.718214 +5.500000 13.900000 179.257353 +5.500000 14.000000 181.816491 +5.500000 14.100000 184.395629 +5.500000 14.200000 186.994767 +5.500000 14.300000 189.613905 +5.500000 14.400000 192.253043 +5.500000 14.500000 194.912181 +5.500000 14.600000 197.591319 +5.500000 14.700000 200.290457 +5.500000 14.800000 203.009595 +5.500000 14.900000 205.748733 +5.500000 15.000000 208.507872 + +5.600000 -5.000000 55.128860 +5.600000 -4.900000 53.911150 +5.600000 -4.800000 52.713440 +5.600000 -4.700000 51.535730 +5.600000 -4.600000 50.378020 +5.600000 -4.500000 49.240310 +5.600000 -4.400000 48.122600 +5.600000 -4.300000 47.024890 +5.600000 -4.200000 45.947181 +5.600000 -4.100000 44.889471 +5.600000 -4.000000 43.851761 +5.600000 -3.900000 42.834051 +5.600000 -3.800000 41.836341 +5.600000 -3.700000 40.858631 +5.600000 -3.600000 39.900921 +5.600000 -3.500000 38.963211 +5.600000 -3.400000 38.045502 +5.600000 -3.300000 37.147792 +5.600000 -3.200000 36.270082 +5.600000 -3.100000 35.412372 +5.600000 -3.000000 34.574662 +5.600000 -2.900000 33.756952 +5.600000 -2.800000 32.959242 +5.600000 -2.700000 32.181532 +5.600000 -2.600000 31.423822 +5.600000 -2.500000 30.686113 +5.600000 -2.400000 29.968403 +5.600000 -2.300000 29.270693 +5.600000 -2.200000 28.592983 +5.600000 -2.100000 27.935273 +5.600000 -2.000000 27.297563 +5.600000 -1.900000 26.679853 +5.600000 -1.800000 26.082143 +5.600000 -1.700000 25.504434 +5.600000 -1.600000 24.946724 +5.600000 -1.500000 24.409014 +5.600000 -1.400000 23.891304 +5.600000 -1.300000 23.393594 +5.600000 -1.200000 22.915884 +5.600000 -1.100000 22.458174 +5.600000 -1.000000 22.020464 +5.600000 -0.900000 21.602755 +5.600000 -0.800000 21.205045 +5.600000 -0.700000 20.827335 +5.600000 -0.600000 20.469625 +5.600000 -0.500000 20.131915 +5.600000 -0.400000 19.814205 +5.600000 -0.300000 19.516495 +5.600000 -0.200000 19.238785 +5.600000 -0.100000 18.981076 +5.600000 -0.000000 18.743366 +5.600000 0.100000 18.525656 +5.600000 0.200000 18.327946 +5.600000 0.300000 18.150236 +5.600000 0.400000 17.992526 +5.600000 0.500000 17.854816 +5.600000 0.600000 17.737106 +5.600000 0.700000 17.639396 +5.600000 0.800000 17.561687 +5.600000 0.900000 17.503977 +5.600000 1.000000 17.466267 +5.600000 1.100000 17.448557 +5.600000 1.200000 17.450847 +5.600000 1.300000 17.473137 +5.600000 1.400000 17.515427 +5.600000 1.500000 17.577717 +5.600000 1.600000 17.660008 +5.600000 1.700000 17.762298 +5.600000 1.800000 17.884588 +5.600000 1.900000 18.026878 +5.600000 2.000000 18.189168 +5.600000 2.100000 18.371458 +5.600000 2.200000 18.573748 +5.600000 2.300000 18.796038 +5.600000 2.400000 19.038329 +5.600000 2.500000 19.300619 +5.600000 2.600000 19.582909 +5.600000 2.700000 19.885199 +5.600000 2.800000 20.207489 +5.600000 2.900000 20.549779 +5.600000 3.000000 20.912069 +5.600000 3.100000 21.294359 +5.600000 3.200000 21.696650 +5.600000 3.300000 22.118940 +5.600000 3.400000 22.561230 +5.600000 3.500000 23.023520 +5.600000 3.600000 23.505810 +5.600000 3.700000 24.008100 +5.600000 3.800000 24.530390 +5.600000 3.900000 25.072680 +5.600000 4.000000 25.634970 +5.600000 4.100000 26.217261 +5.600000 4.200000 26.819551 +5.600000 4.300000 27.441841 +5.600000 4.400000 28.084131 +5.600000 4.500000 28.746421 +5.600000 4.600000 29.428711 +5.600000 4.700000 30.131001 +5.600000 4.800000 30.853291 +5.600000 4.900000 31.595582 +5.600000 5.000000 32.357872 +5.600000 5.100000 33.140162 +5.600000 5.200000 33.942452 +5.600000 5.300000 34.764742 +5.600000 5.400000 35.607032 +5.600000 5.500000 36.469322 +5.600000 5.600000 37.351612 +5.600000 5.700000 38.253903 +5.600000 5.800000 39.176193 +5.600000 5.900000 40.118483 +5.600000 6.000000 41.080773 +5.600000 6.100000 42.063063 +5.600000 6.200000 43.065353 +5.600000 6.300000 44.087643 +5.600000 6.400000 45.129933 +5.600000 6.500000 46.192224 +5.600000 6.600000 47.274514 +5.600000 6.700000 48.376804 +5.600000 6.800000 49.499094 +5.600000 6.900000 50.641384 +5.600000 7.000000 51.803674 +5.600000 7.100000 52.985964 +5.600000 7.200000 54.188254 +5.600000 7.300000 55.410545 +5.600000 7.400000 56.652835 +5.600000 7.500000 57.915125 +5.600000 7.600000 59.197415 +5.600000 7.700000 60.499705 +5.600000 7.800000 61.821995 +5.600000 7.900000 63.164285 +5.600000 8.000000 64.526575 +5.600000 8.100000 65.908865 +5.600000 8.200000 67.311156 +5.600000 8.300000 68.733446 +5.600000 8.400000 70.175736 +5.600000 8.500000 71.638026 +5.600000 8.600000 73.120316 +5.600000 8.700000 74.622606 +5.600000 8.800000 76.144896 +5.600000 8.900000 77.687186 +5.600000 9.000000 79.249477 +5.600000 9.100000 80.831767 +5.600000 9.200000 82.434057 +5.600000 9.300000 84.056347 +5.600000 9.400000 85.698637 +5.600000 9.500000 87.360927 +5.600000 9.600000 89.043217 +5.600000 9.700000 90.745507 +5.600000 9.800000 92.467798 +5.600000 9.900000 94.210088 +5.600000 10.000000 95.972378 +5.600000 10.100000 97.754668 +5.600000 10.200000 99.556958 +5.600000 10.300000 101.379248 +5.600000 10.400000 103.221538 +5.600000 10.500000 105.083828 +5.600000 10.600000 106.966119 +5.600000 10.700000 108.868409 +5.600000 10.800000 110.790699 +5.600000 10.900000 112.732989 +5.600000 11.000000 114.695279 +5.600000 11.100000 116.677569 +5.600000 11.200000 118.679859 +5.600000 11.300000 120.702149 +5.600000 11.400000 122.744439 +5.600000 11.500000 124.806730 +5.600000 11.600000 126.889020 +5.600000 11.700000 128.991310 +5.600000 11.800000 131.113600 +5.600000 11.900000 133.255890 +5.600000 12.000000 135.418180 +5.600000 12.100000 137.600470 +5.600000 12.200000 139.802760 +5.600000 12.300000 142.025051 +5.600000 12.400000 144.267341 +5.600000 12.500000 146.529631 +5.600000 12.600000 148.811921 +5.600000 12.700000 151.114211 +5.600000 12.800000 153.436501 +5.600000 12.900000 155.778791 +5.600000 13.000000 158.141081 +5.600000 13.100000 160.523372 +5.600000 13.200000 162.925662 +5.600000 13.300000 165.347952 +5.600000 13.400000 167.790242 +5.600000 13.500000 170.252532 +5.600000 13.600000 172.734822 +5.600000 13.700000 175.237112 +5.600000 13.800000 177.759402 +5.600000 13.900000 180.301693 +5.600000 14.000000 182.863983 +5.600000 14.100000 185.446273 +5.600000 14.200000 188.048563 +5.600000 14.300000 190.670853 +5.600000 14.400000 193.313143 +5.600000 14.500000 195.975433 +5.600000 14.600000 198.657723 +5.600000 14.700000 201.360013 +5.600000 14.800000 204.082304 +5.600000 14.900000 206.824594 +5.600000 15.000000 209.586884 + +5.700000 -5.000000 55.535200 +5.700000 -4.900000 54.320125 +5.700000 -4.800000 53.125051 +5.700000 -4.700000 51.949976 +5.700000 -4.600000 50.794902 +5.700000 -4.500000 49.659827 +5.700000 -4.400000 48.544752 +5.700000 -4.300000 47.449678 +5.700000 -4.200000 46.374603 +5.700000 -4.100000 45.319529 +5.700000 -4.000000 44.284454 +5.700000 -3.900000 43.269379 +5.700000 -3.800000 42.274305 +5.700000 -3.700000 41.299230 +5.700000 -3.600000 40.344156 +5.700000 -3.500000 39.409081 +5.700000 -3.400000 38.494006 +5.700000 -3.300000 37.598932 +5.700000 -3.200000 36.723857 +5.700000 -3.100000 35.868783 +5.700000 -3.000000 35.033708 +5.700000 -2.900000 34.218634 +5.700000 -2.800000 33.423559 +5.700000 -2.700000 32.648484 +5.700000 -2.600000 31.893410 +5.700000 -2.500000 31.158335 +5.700000 -2.400000 30.443261 +5.700000 -2.300000 29.748186 +5.700000 -2.200000 29.073111 +5.700000 -2.100000 28.418037 +5.700000 -2.000000 27.782962 +5.700000 -1.900000 27.167888 +5.700000 -1.800000 26.572813 +5.700000 -1.700000 25.997738 +5.700000 -1.600000 25.442664 +5.700000 -1.500000 24.907589 +5.700000 -1.400000 24.392515 +5.700000 -1.300000 23.897440 +5.700000 -1.200000 23.422366 +5.700000 -1.100000 22.967291 +5.700000 -1.000000 22.532216 +5.700000 -0.900000 22.117142 +5.700000 -0.800000 21.722067 +5.700000 -0.700000 21.346993 +5.700000 -0.600000 20.991918 +5.700000 -0.500000 20.656843 +5.700000 -0.400000 20.341769 +5.700000 -0.300000 20.046694 +5.700000 -0.200000 19.771620 +5.700000 -0.100000 19.516545 +5.700000 -0.000000 19.281470 +5.700000 0.100000 19.066396 +5.700000 0.200000 18.871321 +5.700000 0.300000 18.696247 +5.700000 0.400000 18.541172 +5.700000 0.500000 18.406098 +5.700000 0.600000 18.291023 +5.700000 0.700000 18.195948 +5.700000 0.800000 18.120874 +5.700000 0.900000 18.065799 +5.700000 1.000000 18.030725 +5.700000 1.100000 18.015650 +5.700000 1.200000 18.020575 +5.700000 1.300000 18.045501 +5.700000 1.400000 18.090426 +5.700000 1.500000 18.155352 +5.700000 1.600000 18.240277 +5.700000 1.700000 18.345202 +5.700000 1.800000 18.470128 +5.700000 1.900000 18.615053 +5.700000 2.000000 18.779979 +5.700000 2.100000 18.964904 +5.700000 2.200000 19.169829 +5.700000 2.300000 19.394755 +5.700000 2.400000 19.639680 +5.700000 2.500000 19.904606 +5.700000 2.600000 20.189531 +5.700000 2.700000 20.494457 +5.700000 2.800000 20.819382 +5.700000 2.900000 21.164307 +5.700000 3.000000 21.529233 +5.700000 3.100000 21.914158 +5.700000 3.200000 22.319084 +5.700000 3.300000 22.744009 +5.700000 3.400000 23.188934 +5.700000 3.500000 23.653860 +5.700000 3.600000 24.138785 +5.700000 3.700000 24.643711 +5.700000 3.800000 25.168636 +5.700000 3.900000 25.713561 +5.700000 4.000000 26.278487 +5.700000 4.100000 26.863412 +5.700000 4.200000 27.468338 +5.700000 4.300000 28.093263 +5.700000 4.400000 28.738189 +5.700000 4.500000 29.403114 +5.700000 4.600000 30.088039 +5.700000 4.700000 30.792965 +5.700000 4.800000 31.517890 +5.700000 4.900000 32.262816 +5.700000 5.000000 33.027741 +5.700000 5.100000 33.812666 +5.700000 5.200000 34.617592 +5.700000 5.300000 35.442517 +5.700000 5.400000 36.287443 +5.700000 5.500000 37.152368 +5.700000 5.600000 38.037293 +5.700000 5.700000 38.942219 +5.700000 5.800000 39.867144 +5.700000 5.900000 40.812070 +5.700000 6.000000 41.776995 +5.700000 6.100000 42.761921 +5.700000 6.200000 43.766846 +5.700000 6.300000 44.791771 +5.700000 6.400000 45.836697 +5.700000 6.500000 46.901622 +5.700000 6.600000 47.986548 +5.700000 6.700000 49.091473 +5.700000 6.800000 50.216398 +5.700000 6.900000 51.361324 +5.700000 7.000000 52.526249 +5.700000 7.100000 53.711175 +5.700000 7.200000 54.916100 +5.700000 7.300000 56.141025 +5.700000 7.400000 57.385951 +5.700000 7.500000 58.650876 +5.700000 7.600000 59.935802 +5.700000 7.700000 61.240727 +5.700000 7.800000 62.565652 +5.700000 7.900000 63.910578 +5.700000 8.000000 65.275503 +5.700000 8.100000 66.660429 +5.700000 8.200000 68.065354 +5.700000 8.300000 69.490280 +5.700000 8.400000 70.935205 +5.700000 8.500000 72.400130 +5.700000 8.600000 73.885056 +5.700000 8.700000 75.389981 +5.700000 8.800000 76.914907 +5.700000 8.900000 78.459832 +5.700000 9.000000 80.024757 +5.700000 9.100000 81.609683 +5.700000 9.200000 83.214608 +5.700000 9.300000 84.839534 +5.700000 9.400000 86.484459 +5.700000 9.500000 88.149384 +5.700000 9.600000 89.834310 +5.700000 9.700000 91.539235 +5.700000 9.800000 93.264161 +5.700000 9.900000 95.009086 +5.700000 10.000000 96.774012 +5.700000 10.100000 98.558937 +5.700000 10.200000 100.363862 +5.700000 10.300000 102.188788 +5.700000 10.400000 104.033713 +5.700000 10.500000 105.898639 +5.700000 10.600000 107.783564 +5.700000 10.700000 109.688489 +5.700000 10.800000 111.613415 +5.700000 10.900000 113.558340 +5.700000 11.000000 115.523266 +5.700000 11.100000 117.508191 +5.700000 11.200000 119.513116 +5.700000 11.300000 121.538042 +5.700000 11.400000 123.582967 +5.700000 11.500000 125.647893 +5.700000 11.600000 127.732818 +5.700000 11.700000 129.837744 +5.700000 11.800000 131.962669 +5.700000 11.900000 134.107594 +5.700000 12.000000 136.272520 +5.700000 12.100000 138.457445 +5.700000 12.200000 140.662371 +5.700000 12.300000 142.887296 +5.700000 12.400000 145.132221 +5.700000 12.500000 147.397147 +5.700000 12.600000 149.682072 +5.700000 12.700000 151.986998 +5.700000 12.800000 154.311923 +5.700000 12.900000 156.656848 +5.700000 13.000000 159.021774 +5.700000 13.100000 161.406699 +5.700000 13.200000 163.811625 +5.700000 13.300000 166.236550 +5.700000 13.400000 168.681476 +5.700000 13.500000 171.146401 +5.700000 13.600000 173.631326 +5.700000 13.700000 176.136252 +5.700000 13.800000 178.661177 +5.700000 13.900000 181.206103 +5.700000 14.000000 183.771028 +5.700000 14.100000 186.355953 +5.700000 14.200000 188.960879 +5.700000 14.300000 191.585804 +5.700000 14.400000 194.230730 +5.700000 14.500000 196.895655 +5.700000 14.600000 199.580580 +5.700000 14.700000 202.285506 +5.700000 14.800000 205.010431 +5.700000 14.900000 207.755357 +5.700000 15.000000 210.520282 + +5.800000 -5.000000 55.893395 +5.800000 -4.900000 54.680439 +5.800000 -4.800000 53.487483 +5.800000 -4.700000 52.314527 +5.800000 -4.600000 51.161571 +5.800000 -4.500000 50.028615 +5.800000 -4.400000 48.915659 +5.800000 -4.300000 47.822703 +5.800000 -4.200000 46.749747 +5.800000 -4.100000 45.696791 +5.800000 -4.000000 44.663835 +5.800000 -3.900000 43.650878 +5.800000 -3.800000 42.657922 +5.800000 -3.700000 41.684966 +5.800000 -3.600000 40.732010 +5.800000 -3.500000 39.799054 +5.800000 -3.400000 38.886098 +5.800000 -3.300000 37.993142 +5.800000 -3.200000 37.120186 +5.800000 -3.100000 36.267230 +5.800000 -3.000000 35.434274 +5.800000 -2.900000 34.621318 +5.800000 -2.800000 33.828362 +5.800000 -2.700000 33.055406 +5.800000 -2.600000 32.302450 +5.800000 -2.500000 31.569494 +5.800000 -2.400000 30.856538 +5.800000 -2.300000 30.163582 +5.800000 -2.200000 29.490626 +5.800000 -2.100000 28.837670 +5.800000 -2.000000 28.204714 +5.800000 -1.900000 27.591758 +5.800000 -1.800000 26.998802 +5.800000 -1.700000 26.425846 +5.800000 -1.600000 25.872890 +5.800000 -1.500000 25.339934 +5.800000 -1.400000 24.826978 +5.800000 -1.300000 24.334022 +5.800000 -1.200000 23.861065 +5.800000 -1.100000 23.408109 +5.800000 -1.000000 22.975153 +5.800000 -0.900000 22.562197 +5.800000 -0.800000 22.169241 +5.800000 -0.700000 21.796285 +5.800000 -0.600000 21.443329 +5.800000 -0.500000 21.110373 +5.800000 -0.400000 20.797417 +5.800000 -0.300000 20.504461 +5.800000 -0.200000 20.231505 +5.800000 -0.100000 19.978549 +5.800000 -0.000000 19.745593 +5.800000 0.100000 19.532637 +5.800000 0.200000 19.339681 +5.800000 0.300000 19.166725 +5.800000 0.400000 19.013769 +5.800000 0.500000 18.880813 +5.800000 0.600000 18.767857 +5.800000 0.700000 18.674901 +5.800000 0.800000 18.601945 +5.800000 0.900000 18.548989 +5.800000 1.000000 18.516033 +5.800000 1.100000 18.503077 +5.800000 1.200000 18.510121 +5.800000 1.300000 18.537165 +5.800000 1.400000 18.584208 +5.800000 1.500000 18.651252 +5.800000 1.600000 18.738296 +5.800000 1.700000 18.845340 +5.800000 1.800000 18.972384 +5.800000 1.900000 19.119428 +5.800000 2.000000 19.286472 +5.800000 2.100000 19.473516 +5.800000 2.200000 19.680560 +5.800000 2.300000 19.907604 +5.800000 2.400000 20.154648 +5.800000 2.500000 20.421692 +5.800000 2.600000 20.708736 +5.800000 2.700000 21.015780 +5.800000 2.800000 21.342824 +5.800000 2.900000 21.689868 +5.800000 3.000000 22.056912 +5.800000 3.100000 22.443956 +5.800000 3.200000 22.851000 +5.800000 3.300000 23.278044 +5.800000 3.400000 23.725088 +5.800000 3.500000 24.192132 +5.800000 3.600000 24.679176 +5.800000 3.700000 25.186220 +5.800000 3.800000 25.713264 +5.800000 3.900000 26.260308 +5.800000 4.000000 26.827352 +5.800000 4.100000 27.414395 +5.800000 4.200000 28.021439 +5.800000 4.300000 28.648483 +5.800000 4.400000 29.295527 +5.800000 4.500000 29.962571 +5.800000 4.600000 30.649615 +5.800000 4.700000 31.356659 +5.800000 4.800000 32.083703 +5.800000 4.900000 32.830747 +5.800000 5.000000 33.597791 +5.800000 5.100000 34.384835 +5.800000 5.200000 35.191879 +5.800000 5.300000 36.018923 +5.800000 5.400000 36.865967 +5.800000 5.500000 37.733011 +5.800000 5.600000 38.620055 +5.800000 5.700000 39.527099 +5.800000 5.800000 40.454143 +5.800000 5.900000 41.401187 +5.800000 6.000000 42.368231 +5.800000 6.100000 43.355275 +5.800000 6.200000 44.362319 +5.800000 6.300000 45.389363 +5.800000 6.400000 46.436407 +5.800000 6.500000 47.503451 +5.800000 6.600000 48.590495 +5.800000 6.700000 49.697538 +5.800000 6.800000 50.824582 +5.800000 6.900000 51.971626 +5.800000 7.000000 53.138670 +5.800000 7.100000 54.325714 +5.800000 7.200000 55.532758 +5.800000 7.300000 56.759802 +5.800000 7.400000 58.006846 +5.800000 7.500000 59.273890 +5.800000 7.600000 60.560934 +5.800000 7.700000 61.867978 +5.800000 7.800000 63.195022 +5.800000 7.900000 64.542066 +5.800000 8.000000 65.909110 +5.800000 8.100000 67.296154 +5.800000 8.200000 68.703198 +5.800000 8.300000 70.130242 +5.800000 8.400000 71.577286 +5.800000 8.500000 73.044330 +5.800000 8.600000 74.531374 +5.800000 8.700000 76.038418 +5.800000 8.800000 77.565462 +5.800000 8.900000 79.112506 +5.800000 9.000000 80.679550 +5.800000 9.100000 82.266594 +5.800000 9.200000 83.873638 +5.800000 9.300000 85.500682 +5.800000 9.400000 87.147725 +5.800000 9.500000 88.814769 +5.800000 9.600000 90.501813 +5.800000 9.700000 92.208857 +5.800000 9.800000 93.935901 +5.800000 9.900000 95.682945 +5.800000 10.000000 97.449989 +5.800000 10.100000 99.237033 +5.800000 10.200000 101.044077 +5.800000 10.300000 102.871121 +5.800000 10.400000 104.718165 +5.800000 10.500000 106.585209 +5.800000 10.600000 108.472253 +5.800000 10.700000 110.379297 +5.800000 10.800000 112.306341 +5.800000 10.900000 114.253385 +5.800000 11.000000 116.220429 +5.800000 11.100000 118.207473 +5.800000 11.200000 120.214517 +5.800000 11.300000 122.241561 +5.800000 11.400000 124.288605 +5.800000 11.500000 126.355649 +5.800000 11.600000 128.442693 +5.800000 11.700000 130.549737 +5.800000 11.800000 132.676781 +5.800000 11.900000 134.823825 +5.800000 12.000000 136.990868 +5.800000 12.100000 139.177912 +5.800000 12.200000 141.384956 +5.800000 12.300000 143.612000 +5.800000 12.400000 145.859044 +5.800000 12.500000 148.126088 +5.800000 12.600000 150.413132 +5.800000 12.700000 152.720176 +5.800000 12.800000 155.047220 +5.800000 12.900000 157.394264 +5.800000 13.000000 159.761308 +5.800000 13.100000 162.148352 +5.800000 13.200000 164.555396 +5.800000 13.300000 166.982440 +5.800000 13.400000 169.429484 +5.800000 13.500000 171.896528 +5.800000 13.600000 174.383572 +5.800000 13.700000 176.890616 +5.800000 13.800000 179.417660 +5.800000 13.900000 181.964704 +5.800000 14.000000 184.531748 +5.800000 14.100000 187.118792 +5.800000 14.200000 189.725836 +5.800000 14.300000 192.352880 +5.800000 14.400000 194.999924 +5.800000 14.500000 197.666968 +5.800000 14.600000 200.354012 +5.800000 14.700000 203.061055 +5.800000 14.800000 205.788099 +5.800000 14.900000 208.535143 +5.800000 15.000000 211.302187 + +5.900000 -5.000000 56.198406 +5.900000 -4.900000 54.987052 +5.900000 -4.800000 53.795697 +5.900000 -4.700000 52.624343 +5.900000 -4.600000 51.472989 +5.900000 -4.500000 50.341635 +5.900000 -4.400000 49.230281 +5.900000 -4.300000 48.138926 +5.900000 -4.200000 47.067572 +5.900000 -4.100000 46.016218 +5.900000 -4.000000 44.984864 +5.900000 -3.900000 43.973509 +5.900000 -3.800000 42.982155 +5.900000 -3.700000 42.010801 +5.900000 -3.600000 41.059447 +5.900000 -3.500000 40.128093 +5.900000 -3.400000 39.216738 +5.900000 -3.300000 38.325384 +5.900000 -3.200000 37.454030 +5.900000 -3.100000 36.602676 +5.900000 -3.000000 35.771321 +5.900000 -2.900000 34.959967 +5.900000 -2.800000 34.168613 +5.900000 -2.700000 33.397259 +5.900000 -2.600000 32.645905 +5.900000 -2.500000 31.914550 +5.900000 -2.400000 31.203196 +5.900000 -2.300000 30.511842 +5.900000 -2.200000 29.840488 +5.900000 -2.100000 29.189133 +5.900000 -2.000000 28.557779 +5.900000 -1.900000 27.946425 +5.900000 -1.800000 27.355071 +5.900000 -1.700000 26.783716 +5.900000 -1.600000 26.232362 +5.900000 -1.500000 25.701008 +5.900000 -1.400000 25.189654 +5.900000 -1.300000 24.698300 +5.900000 -1.200000 24.226945 +5.900000 -1.100000 23.775591 +5.900000 -1.000000 23.344237 +5.900000 -0.900000 22.932883 +5.900000 -0.800000 22.541528 +5.900000 -0.700000 22.170174 +5.900000 -0.600000 21.818820 +5.900000 -0.500000 21.487466 +5.900000 -0.400000 21.176112 +5.900000 -0.300000 20.884757 +5.900000 -0.200000 20.613403 +5.900000 -0.100000 20.362049 +5.900000 -0.000000 20.130695 +5.900000 0.100000 19.919340 +5.900000 0.200000 19.727986 +5.900000 0.300000 19.556632 +5.900000 0.400000 19.405278 +5.900000 0.500000 19.273924 +5.900000 0.600000 19.162569 +5.900000 0.700000 19.071215 +5.900000 0.800000 18.999861 +5.900000 0.900000 18.948507 +5.900000 1.000000 18.917152 +5.900000 1.100000 18.905798 +5.900000 1.200000 18.914444 +5.900000 1.300000 18.943090 +5.900000 1.400000 18.991736 +5.900000 1.500000 19.060381 +5.900000 1.600000 19.149027 +5.900000 1.700000 19.257673 +5.900000 1.800000 19.386319 +5.900000 1.900000 19.534964 +5.900000 2.000000 19.703610 +5.900000 2.100000 19.892256 +5.900000 2.200000 20.100902 +5.900000 2.300000 20.329548 +5.900000 2.400000 20.578193 +5.900000 2.500000 20.846839 +5.900000 2.600000 21.135485 +5.900000 2.700000 21.444131 +5.900000 2.800000 21.772776 +5.900000 2.900000 22.121422 +5.900000 3.000000 22.490068 +5.900000 3.100000 22.878714 +5.900000 3.200000 23.287360 +5.900000 3.300000 23.716005 +5.900000 3.400000 24.164651 +5.900000 3.500000 24.633297 +5.900000 3.600000 25.121943 +5.900000 3.700000 25.630588 +5.900000 3.800000 26.159234 +5.900000 3.900000 26.707880 +5.900000 4.000000 27.276526 +5.900000 4.100000 27.865171 +5.900000 4.200000 28.473817 +5.900000 4.300000 29.102463 +5.900000 4.400000 29.751109 +5.900000 4.500000 30.419755 +5.900000 4.600000 31.108400 +5.900000 4.700000 31.817046 +5.900000 4.800000 32.545692 +5.900000 4.900000 33.294338 +5.900000 5.000000 34.062983 +5.900000 5.100000 34.851629 +5.900000 5.200000 35.660275 +5.900000 5.300000 36.488921 +5.900000 5.400000 37.337567 +5.900000 5.500000 38.206212 +5.900000 5.600000 39.094858 +5.900000 5.700000 40.003504 +5.900000 5.800000 40.932150 +5.900000 5.900000 41.880795 +5.900000 6.000000 42.849441 +5.900000 6.100000 43.838087 +5.900000 6.200000 44.846733 +5.900000 6.300000 45.875379 +5.900000 6.400000 46.924024 +5.900000 6.500000 47.992670 +5.900000 6.600000 49.081316 +5.900000 6.700000 50.189962 +5.900000 6.800000 51.318607 +5.900000 6.900000 52.467253 +5.900000 7.000000 53.635899 +5.900000 7.100000 54.824545 +5.900000 7.200000 56.033191 +5.900000 7.300000 57.261836 +5.900000 7.400000 58.510482 +5.900000 7.500000 59.779128 +5.900000 7.600000 61.067774 +5.900000 7.700000 62.376419 +5.900000 7.800000 63.705065 +5.900000 7.900000 65.053711 +5.900000 8.000000 66.422357 +5.900000 8.100000 67.811003 +5.900000 8.200000 69.219648 +5.900000 8.300000 70.648294 +5.900000 8.400000 72.096940 +5.900000 8.500000 73.565586 +5.900000 8.600000 75.054231 +5.900000 8.700000 76.562877 +5.900000 8.800000 78.091523 +5.900000 8.900000 79.640169 +5.900000 9.000000 81.208815 +5.900000 9.100000 82.797460 +5.900000 9.200000 84.406106 +5.900000 9.300000 86.034752 +5.900000 9.400000 87.683398 +5.900000 9.500000 89.352043 +5.900000 9.600000 91.040689 +5.900000 9.700000 92.749335 +5.900000 9.800000 94.477981 +5.900000 9.900000 96.226626 +5.900000 10.000000 97.995272 +5.900000 10.100000 99.783918 +5.900000 10.200000 101.592564 +5.900000 10.300000 103.421210 +5.900000 10.400000 105.269855 +5.900000 10.500000 107.138501 +5.900000 10.600000 109.027147 +5.900000 10.700000 110.935793 +5.900000 10.800000 112.864438 +5.900000 10.900000 114.813084 +5.900000 11.000000 116.781730 +5.900000 11.100000 118.770376 +5.900000 11.200000 120.779022 +5.900000 11.300000 122.807667 +5.900000 11.400000 124.856313 +5.900000 11.500000 126.924959 +5.900000 11.600000 129.013605 +5.900000 11.700000 131.122250 +5.900000 11.800000 133.250896 +5.900000 11.900000 135.399542 +5.900000 12.000000 137.568188 +5.900000 12.100000 139.756834 +5.900000 12.200000 141.965479 +5.900000 12.300000 144.194125 +5.900000 12.400000 146.442771 +5.900000 12.500000 148.711417 +5.900000 12.600000 151.000062 +5.900000 12.700000 153.308708 +5.900000 12.800000 155.637354 +5.900000 12.900000 157.986000 +5.900000 13.000000 160.354646 +5.900000 13.100000 162.743291 +5.900000 13.200000 165.151937 +5.900000 13.300000 167.580583 +5.900000 13.400000 170.029229 +5.900000 13.500000 172.497874 +5.900000 13.600000 174.986520 +5.900000 13.700000 177.495166 +5.900000 13.800000 180.023812 +5.900000 13.900000 182.572458 +5.900000 14.000000 185.141103 +5.900000 14.100000 187.729749 +5.900000 14.200000 190.338395 +5.900000 14.300000 192.967041 +5.900000 14.400000 195.615686 +5.900000 14.500000 198.284332 +5.900000 14.600000 200.972978 +5.900000 14.700000 203.681624 +5.900000 14.800000 206.410270 +5.900000 14.900000 209.158915 +5.900000 15.000000 211.927561 + +6.000000 -5.000000 56.446083 +6.000000 -4.900000 55.235814 +6.000000 -4.800000 54.045545 +6.000000 -4.700000 52.875276 +6.000000 -4.600000 51.725007 +6.000000 -4.500000 50.594737 +6.000000 -4.400000 49.484468 +6.000000 -4.300000 48.394199 +6.000000 -4.200000 47.323930 +6.000000 -4.100000 46.273661 +6.000000 -4.000000 45.243392 +6.000000 -3.900000 44.233122 +6.000000 -3.800000 43.242853 +6.000000 -3.700000 42.272584 +6.000000 -3.600000 41.322315 +6.000000 -3.500000 40.392046 +6.000000 -3.400000 39.481777 +6.000000 -3.300000 38.591508 +6.000000 -3.200000 37.721238 +6.000000 -3.100000 36.870969 +6.000000 -3.000000 36.040700 +6.000000 -2.900000 35.230431 +6.000000 -2.800000 34.440162 +6.000000 -2.700000 33.669893 +6.000000 -2.600000 32.919624 +6.000000 -2.500000 32.189354 +6.000000 -2.400000 31.479085 +6.000000 -2.300000 30.788816 +6.000000 -2.200000 30.118547 +6.000000 -2.100000 29.468278 +6.000000 -2.000000 28.838009 +6.000000 -1.900000 28.227740 +6.000000 -1.800000 27.637470 +6.000000 -1.700000 27.067201 +6.000000 -1.600000 26.516932 +6.000000 -1.500000 25.986663 +6.000000 -1.400000 25.476394 +6.000000 -1.300000 24.986125 +6.000000 -1.200000 24.515855 +6.000000 -1.100000 24.065586 +6.000000 -1.000000 23.635317 +6.000000 -0.900000 23.225048 +6.000000 -0.800000 22.834779 +6.000000 -0.700000 22.464510 +6.000000 -0.600000 22.114241 +6.000000 -0.500000 21.783971 +6.000000 -0.400000 21.473702 +6.000000 -0.300000 21.183433 +6.000000 -0.200000 20.913164 +6.000000 -0.100000 20.662895 +6.000000 -0.000000 20.432626 +6.000000 0.100000 20.222357 +6.000000 0.200000 20.032087 +6.000000 0.300000 19.861818 +6.000000 0.400000 19.711549 +6.000000 0.500000 19.581280 +6.000000 0.600000 19.471011 +6.000000 0.700000 19.380742 +6.000000 0.800000 19.310473 +6.000000 0.900000 19.260203 +6.000000 1.000000 19.229934 +6.000000 1.100000 19.219665 +6.000000 1.200000 19.229396 +6.000000 1.300000 19.259127 +6.000000 1.400000 19.308858 +6.000000 1.500000 19.378588 +6.000000 1.600000 19.468319 +6.000000 1.700000 19.578050 +6.000000 1.800000 19.707781 +6.000000 1.900000 19.857512 +6.000000 2.000000 20.027243 +6.000000 2.100000 20.216974 +6.000000 2.200000 20.426704 +6.000000 2.300000 20.656435 +6.000000 2.400000 20.906166 +6.000000 2.500000 21.175897 +6.000000 2.600000 21.465628 +6.000000 2.700000 21.775359 +6.000000 2.800000 22.105090 +6.000000 2.900000 22.454820 +6.000000 3.000000 22.824551 +6.000000 3.100000 23.214282 +6.000000 3.200000 23.624013 +6.000000 3.300000 24.053744 +6.000000 3.400000 24.503475 +6.000000 3.500000 24.973205 +6.000000 3.600000 25.462936 +6.000000 3.700000 25.972667 +6.000000 3.800000 26.502398 +6.000000 3.900000 27.052129 +6.000000 4.000000 27.621860 +6.000000 4.100000 28.211591 +6.000000 4.200000 28.821321 +6.000000 4.300000 29.451052 +6.000000 4.400000 30.100783 +6.000000 4.500000 30.770514 +6.000000 4.600000 31.460245 +6.000000 4.700000 32.169976 +6.000000 4.800000 32.899707 +6.000000 4.900000 33.649437 +6.000000 5.000000 34.419168 +6.000000 5.100000 35.208899 +6.000000 5.200000 36.018630 +6.000000 5.300000 36.848361 +6.000000 5.400000 37.698092 +6.000000 5.500000 38.567823 +6.000000 5.600000 39.457553 +6.000000 5.700000 40.367284 +6.000000 5.800000 41.297015 +6.000000 5.900000 42.246746 +6.000000 6.000000 43.216477 +6.000000 6.100000 44.206208 +6.000000 6.200000 45.215938 +6.000000 6.300000 46.245669 +6.000000 6.400000 47.295400 +6.000000 6.500000 48.365131 +6.000000 6.600000 49.454862 +6.000000 6.700000 50.564593 +6.000000 6.800000 51.694324 +6.000000 6.900000 52.844054 +6.000000 7.000000 54.013785 +6.000000 7.100000 55.203516 +6.000000 7.200000 56.413247 +6.000000 7.300000 57.642978 +6.000000 7.400000 58.892709 +6.000000 7.500000 60.162440 +6.000000 7.600000 61.452170 +6.000000 7.700000 62.761901 +6.000000 7.800000 64.091632 +6.000000 7.900000 65.441363 +6.000000 8.000000 66.811094 +6.000000 8.100000 68.200825 +6.000000 8.200000 69.610555 +6.000000 8.300000 71.040286 +6.000000 8.400000 72.490017 +6.000000 8.500000 73.959748 +6.000000 8.600000 75.449479 +6.000000 8.700000 76.959210 +6.000000 8.800000 78.488941 +6.000000 8.900000 80.038671 +6.000000 9.000000 81.608402 +6.000000 9.100000 83.198133 +6.000000 9.200000 84.807864 +6.000000 9.300000 86.437595 +6.000000 9.400000 88.087326 +6.000000 9.500000 89.757057 +6.000000 9.600000 91.446787 +6.000000 9.700000 93.156518 +6.000000 9.800000 94.886249 +6.000000 9.900000 96.635980 +6.000000 10.000000 98.405711 +6.000000 10.100000 100.195442 +6.000000 10.200000 102.005173 +6.000000 10.300000 103.834903 +6.000000 10.400000 105.684634 +6.000000 10.500000 107.554365 +6.000000 10.600000 109.444096 +6.000000 10.700000 111.353827 +6.000000 10.800000 113.283558 +6.000000 10.900000 115.233288 +6.000000 11.000000 117.203019 +6.000000 11.100000 119.192750 +6.000000 11.200000 121.202481 +6.000000 11.300000 123.232212 +6.000000 11.400000 125.281943 +6.000000 11.500000 127.351674 +6.000000 11.600000 129.441404 +6.000000 11.700000 131.551135 +6.000000 11.800000 133.680866 +6.000000 11.900000 135.830597 +6.000000 12.000000 138.000328 +6.000000 12.100000 140.190059 +6.000000 12.200000 142.399790 +6.000000 12.300000 144.629520 +6.000000 12.400000 146.879251 +6.000000 12.500000 149.148982 +6.000000 12.600000 151.438713 +6.000000 12.700000 153.748444 +6.000000 12.800000 156.078175 +6.000000 12.900000 158.427906 +6.000000 13.000000 160.797636 +6.000000 13.100000 163.187367 +6.000000 13.200000 165.597098 +6.000000 13.300000 168.026829 +6.000000 13.400000 170.476560 +6.000000 13.500000 172.946291 +6.000000 13.600000 175.436021 +6.000000 13.700000 177.945752 +6.000000 13.800000 180.475483 +6.000000 13.900000 183.025214 +6.000000 14.000000 185.594945 +6.000000 14.100000 188.184676 +6.000000 14.200000 190.794407 +6.000000 14.300000 193.424137 +6.000000 14.400000 196.073868 +6.000000 14.500000 198.743599 +6.000000 14.600000 201.433330 +6.000000 14.700000 204.143061 +6.000000 14.800000 206.872792 +6.000000 14.900000 209.622523 +6.000000 15.000000 212.392253 + +6.100000 -5.000000 56.633206 +6.100000 -4.900000 55.423505 +6.100000 -4.800000 54.233804 +6.100000 -4.700000 53.064104 +6.100000 -4.600000 51.914403 +6.100000 -4.500000 50.784702 +6.100000 -4.400000 49.675001 +6.100000 -4.300000 48.585300 +6.100000 -4.200000 47.515600 +6.100000 -4.100000 46.465899 +6.100000 -4.000000 45.436198 +6.100000 -3.900000 44.426497 +6.100000 -3.800000 43.436796 +6.100000 -3.700000 42.467095 +6.100000 -3.600000 41.517395 +6.100000 -3.500000 40.587694 +6.100000 -3.400000 39.677993 +6.100000 -3.300000 38.788292 +6.100000 -3.200000 37.918591 +6.100000 -3.100000 37.068891 +6.100000 -3.000000 36.239190 +6.100000 -2.900000 35.429489 +6.100000 -2.800000 34.639788 +6.100000 -2.700000 33.870087 +6.100000 -2.600000 33.120387 +6.100000 -2.500000 32.390686 +6.100000 -2.400000 31.680985 +6.100000 -2.300000 30.991284 +6.100000 -2.200000 30.321583 +6.100000 -2.100000 29.671883 +6.100000 -2.000000 29.042182 +6.100000 -1.900000 28.432481 +6.100000 -1.800000 27.842780 +6.100000 -1.700000 27.273079 +6.100000 -1.600000 26.723378 +6.100000 -1.500000 26.193678 +6.100000 -1.400000 25.683977 +6.100000 -1.300000 25.194276 +6.100000 -1.200000 24.724575 +6.100000 -1.100000 24.274874 +6.100000 -1.000000 23.845174 +6.100000 -0.900000 23.435473 +6.100000 -0.800000 23.045772 +6.100000 -0.700000 22.676071 +6.100000 -0.600000 22.326370 +6.100000 -0.500000 21.996670 +6.100000 -0.400000 21.686969 +6.100000 -0.300000 21.397268 +6.100000 -0.200000 21.127567 +6.100000 -0.100000 20.877866 +6.100000 -0.000000 20.648165 +6.100000 0.100000 20.438465 +6.100000 0.200000 20.248764 +6.100000 0.300000 20.079063 +6.100000 0.400000 19.929362 +6.100000 0.500000 19.799661 +6.100000 0.600000 19.689961 +6.100000 0.700000 19.600260 +6.100000 0.800000 19.530559 +6.100000 0.900000 19.480858 +6.100000 1.000000 19.451157 +6.100000 1.100000 19.441457 +6.100000 1.200000 19.451756 +6.100000 1.300000 19.482055 +6.100000 1.400000 19.532354 +6.100000 1.500000 19.602653 +6.100000 1.600000 19.692952 +6.100000 1.700000 19.803252 +6.100000 1.800000 19.933551 +6.100000 1.900000 20.083850 +6.100000 2.000000 20.254149 +6.100000 2.100000 20.444448 +6.100000 2.200000 20.654748 +6.100000 2.300000 20.885047 +6.100000 2.400000 21.135346 +6.100000 2.500000 21.405645 +6.100000 2.600000 21.695944 +6.100000 2.700000 22.006244 +6.100000 2.800000 22.336543 +6.100000 2.900000 22.686842 +6.100000 3.000000 23.057141 +6.100000 3.100000 23.447440 +6.100000 3.200000 23.857740 +6.100000 3.300000 24.288039 +6.100000 3.400000 24.738338 +6.100000 3.500000 25.208637 +6.100000 3.600000 25.698936 +6.100000 3.700000 26.209235 +6.100000 3.800000 26.739535 +6.100000 3.900000 27.289834 +6.100000 4.000000 27.860133 +6.100000 4.100000 28.450432 +6.100000 4.200000 29.060731 +6.100000 4.300000 29.691031 +6.100000 4.400000 30.341330 +6.100000 4.500000 31.011629 +6.100000 4.600000 31.701928 +6.100000 4.700000 32.412227 +6.100000 4.800000 33.142527 +6.100000 4.900000 33.892826 +6.100000 5.000000 34.663125 +6.100000 5.100000 35.453424 +6.100000 5.200000 36.263723 +6.100000 5.300000 37.094022 +6.100000 5.400000 37.944322 +6.100000 5.500000 38.814621 +6.100000 5.600000 39.704920 +6.100000 5.700000 40.615219 +6.100000 5.800000 41.545518 +6.100000 5.900000 42.495818 +6.100000 6.000000 43.466117 +6.100000 6.100000 44.456416 +6.100000 6.200000 45.466715 +6.100000 6.300000 46.497014 +6.100000 6.400000 47.547314 +6.100000 6.500000 48.617613 +6.100000 6.600000 49.707912 +6.100000 6.700000 50.818211 +6.100000 6.800000 51.948510 +6.100000 6.900000 53.098809 +6.100000 7.000000 54.269109 +6.100000 7.100000 55.459408 +6.100000 7.200000 56.669707 +6.100000 7.300000 57.900006 +6.100000 7.400000 59.150305 +6.100000 7.500000 60.420605 +6.100000 7.600000 61.710904 +6.100000 7.700000 63.021203 +6.100000 7.800000 64.351502 +6.100000 7.900000 65.701801 +6.100000 8.000000 67.072101 +6.100000 8.100000 68.462400 +6.100000 8.200000 69.872699 +6.100000 8.300000 71.302998 +6.100000 8.400000 72.753297 +6.100000 8.500000 74.223597 +6.100000 8.600000 75.713896 +6.100000 8.700000 77.224195 +6.100000 8.800000 78.754494 +6.100000 8.900000 80.304793 +6.100000 9.000000 81.875092 +6.100000 9.100000 83.465392 +6.100000 9.200000 85.075691 +6.100000 9.300000 86.705990 +6.100000 9.400000 88.356289 +6.100000 9.500000 90.026588 +6.100000 9.600000 91.716888 +6.100000 9.700000 93.427187 +6.100000 9.800000 95.157486 +6.100000 9.900000 96.907785 +6.100000 10.000000 98.678084 +6.100000 10.100000 100.468384 +6.100000 10.200000 102.278683 +6.100000 10.300000 104.108982 +6.100000 10.400000 105.959281 +6.100000 10.500000 107.829580 +6.100000 10.600000 109.719879 +6.100000 10.700000 111.630179 +6.100000 10.800000 113.560478 +6.100000 10.900000 115.510777 +6.100000 11.000000 117.481076 +6.100000 11.100000 119.471375 +6.100000 11.200000 121.481675 +6.100000 11.300000 123.511974 +6.100000 11.400000 125.562273 +6.100000 11.500000 127.632572 +6.100000 11.600000 129.722871 +6.100000 11.700000 131.833171 +6.100000 11.800000 133.963470 +6.100000 11.900000 136.113769 +6.100000 12.000000 138.284068 +6.100000 12.100000 140.474367 +6.100000 12.200000 142.684666 +6.100000 12.300000 144.914966 +6.100000 12.400000 147.165265 +6.100000 12.500000 149.435564 +6.100000 12.600000 151.725863 +6.100000 12.700000 154.036162 +6.100000 12.800000 156.366462 +6.100000 12.900000 158.716761 +6.100000 13.000000 161.087060 +6.100000 13.100000 163.477359 +6.100000 13.200000 165.887658 +6.100000 13.300000 168.317958 +6.100000 13.400000 170.768257 +6.100000 13.500000 173.238556 +6.100000 13.600000 175.728855 +6.100000 13.700000 178.239154 +6.100000 13.800000 180.769454 +6.100000 13.900000 183.319753 +6.100000 14.000000 185.890052 +6.100000 14.100000 188.480351 +6.100000 14.200000 191.090650 +6.100000 14.300000 193.720949 +6.100000 14.400000 196.371249 +6.100000 14.500000 199.041548 +6.100000 14.600000 201.731847 +6.100000 14.700000 204.442146 +6.100000 14.800000 207.172445 +6.100000 14.900000 209.922745 +6.100000 15.000000 212.693044 + +6.200000 -5.000000 56.757514 +6.200000 -4.900000 55.547865 +6.200000 -4.800000 54.358216 +6.200000 -4.700000 53.188567 +6.200000 -4.600000 52.038918 +6.200000 -4.500000 50.909268 +6.200000 -4.400000 49.799619 +6.200000 -4.300000 48.709970 +6.200000 -4.200000 47.640321 +6.200000 -4.100000 46.590672 +6.200000 -4.000000 45.561022 +6.200000 -3.900000 44.551373 +6.200000 -3.800000 43.561724 +6.200000 -3.700000 42.592075 +6.200000 -3.600000 41.642426 +6.200000 -3.500000 40.712776 +6.200000 -3.400000 39.803127 +6.200000 -3.300000 38.913478 +6.200000 -3.200000 38.043829 +6.200000 -3.100000 37.194179 +6.200000 -3.000000 36.364530 +6.200000 -2.900000 35.554881 +6.200000 -2.800000 34.765232 +6.200000 -2.700000 33.995583 +6.200000 -2.600000 33.245933 +6.200000 -2.500000 32.516284 +6.200000 -2.400000 31.806635 +6.200000 -2.300000 31.116986 +6.200000 -2.200000 30.447337 +6.200000 -2.100000 29.797687 +6.200000 -2.000000 29.168038 +6.200000 -1.900000 28.558389 +6.200000 -1.800000 27.968740 +6.200000 -1.700000 27.399090 +6.200000 -1.600000 26.849441 +6.200000 -1.500000 26.319792 +6.200000 -1.400000 25.810143 +6.200000 -1.300000 25.320494 +6.200000 -1.200000 24.850844 +6.200000 -1.100000 24.401195 +6.200000 -1.000000 23.971546 +6.200000 -0.900000 23.561897 +6.200000 -0.800000 23.172248 +6.200000 -0.700000 22.802598 +6.200000 -0.600000 22.452949 +6.200000 -0.500000 22.123300 +6.200000 -0.400000 21.813651 +6.200000 -0.300000 21.524002 +6.200000 -0.200000 21.254352 +6.200000 -0.100000 21.004703 +6.200000 -0.000000 20.775054 +6.200000 0.100000 20.565405 +6.200000 0.200000 20.375755 +6.200000 0.300000 20.206106 +6.200000 0.400000 20.056457 +6.200000 0.500000 19.926808 +6.200000 0.600000 19.817159 +6.200000 0.700000 19.727509 +6.200000 0.800000 19.657860 +6.200000 0.900000 19.608211 +6.200000 1.000000 19.578562 +6.200000 1.100000 19.568913 +6.200000 1.200000 19.579263 +6.200000 1.300000 19.609614 +6.200000 1.400000 19.659965 +6.200000 1.500000 19.730316 +6.200000 1.600000 19.820666 +6.200000 1.700000 19.931017 +6.200000 1.800000 20.061368 +6.200000 1.900000 20.211719 +6.200000 2.000000 20.382070 +6.200000 2.100000 20.572420 +6.200000 2.200000 20.782771 +6.200000 2.300000 21.013122 +6.200000 2.400000 21.263473 +6.200000 2.500000 21.533824 +6.200000 2.600000 21.824174 +6.200000 2.700000 22.134525 +6.200000 2.800000 22.464876 +6.200000 2.900000 22.815227 +6.200000 3.000000 23.185578 +6.200000 3.100000 23.575928 +6.200000 3.200000 23.986279 +6.200000 3.300000 24.416630 +6.200000 3.400000 24.866981 +6.200000 3.500000 25.337331 +6.200000 3.600000 25.827682 +6.200000 3.700000 26.338033 +6.200000 3.800000 26.868384 +6.200000 3.900000 27.418735 +6.200000 4.000000 27.989085 +6.200000 4.100000 28.579436 +6.200000 4.200000 29.189787 +6.200000 4.300000 29.820138 +6.200000 4.400000 30.470489 +6.200000 4.500000 31.140839 +6.200000 4.600000 31.831190 +6.200000 4.700000 32.541541 +6.200000 4.800000 33.271892 +6.200000 4.900000 34.022242 +6.200000 5.000000 34.792593 +6.200000 5.100000 35.582944 +6.200000 5.200000 36.393295 +6.200000 5.300000 37.223646 +6.200000 5.400000 38.073996 +6.200000 5.500000 38.944347 +6.200000 5.600000 39.834698 +6.200000 5.700000 40.745049 +6.200000 5.800000 41.675400 +6.200000 5.900000 42.625750 +6.200000 6.000000 43.596101 +6.200000 6.100000 44.586452 +6.200000 6.200000 45.596803 +6.200000 6.300000 46.627154 +6.200000 6.400000 47.677504 +6.200000 6.500000 48.747855 +6.200000 6.600000 49.838206 +6.200000 6.700000 50.948557 +6.200000 6.800000 52.078907 +6.200000 6.900000 53.229258 +6.200000 7.000000 54.399609 +6.200000 7.100000 55.589960 +6.200000 7.200000 56.800311 +6.200000 7.300000 58.030661 +6.200000 7.400000 59.281012 +6.200000 7.500000 60.551363 +6.200000 7.600000 61.841714 +6.200000 7.700000 63.152065 +6.200000 7.800000 64.482415 +6.200000 7.900000 65.832766 +6.200000 8.000000 67.203117 +6.200000 8.100000 68.593468 +6.200000 8.200000 70.003818 +6.200000 8.300000 71.434169 +6.200000 8.400000 72.884520 +6.200000 8.500000 74.354871 +6.200000 8.600000 75.845222 +6.200000 8.700000 77.355572 +6.200000 8.800000 78.885923 +6.200000 8.900000 80.436274 +6.200000 9.000000 82.006625 +6.200000 9.100000 83.596976 +6.200000 9.200000 85.207326 +6.200000 9.300000 86.837677 +6.200000 9.400000 88.488028 +6.200000 9.500000 90.158379 +6.200000 9.600000 91.848730 +6.200000 9.700000 93.559080 +6.200000 9.800000 95.289431 +6.200000 9.900000 97.039782 +6.200000 10.000000 98.810133 +6.200000 10.100000 100.600483 +6.200000 10.200000 102.410834 +6.200000 10.300000 104.241185 +6.200000 10.400000 106.091536 +6.200000 10.500000 107.961887 +6.200000 10.600000 109.852237 +6.200000 10.700000 111.762588 +6.200000 10.800000 113.692939 +6.200000 10.900000 115.643290 +6.200000 11.000000 117.613641 +6.200000 11.100000 119.603991 +6.200000 11.200000 121.614342 +6.200000 11.300000 123.644693 +6.200000 11.400000 125.695044 +6.200000 11.500000 127.765395 +6.200000 11.600000 129.855745 +6.200000 11.700000 131.966096 +6.200000 11.800000 134.096447 +6.200000 11.900000 136.246798 +6.200000 12.000000 138.417148 +6.200000 12.100000 140.607499 +6.200000 12.200000 142.817850 +6.200000 12.300000 145.048201 +6.200000 12.400000 147.298552 +6.200000 12.500000 149.568902 +6.200000 12.600000 151.859253 +6.200000 12.700000 154.169604 +6.200000 12.800000 156.499955 +6.200000 12.900000 158.850306 +6.200000 13.000000 161.220656 +6.200000 13.100000 163.611007 +6.200000 13.200000 166.021358 +6.200000 13.300000 168.451709 +6.200000 13.400000 170.902059 +6.200000 13.500000 173.372410 +6.200000 13.600000 175.862761 +6.200000 13.700000 178.373112 +6.200000 13.800000 180.903463 +6.200000 13.900000 183.453813 +6.200000 14.000000 186.024164 +6.200000 14.100000 188.614515 +6.200000 14.200000 191.224866 +6.200000 14.300000 193.855217 +6.200000 14.400000 196.505567 +6.200000 14.500000 199.175918 +6.200000 14.600000 201.866269 +6.200000 14.700000 204.576620 +6.200000 14.800000 207.306971 +6.200000 14.900000 210.057321 +6.200000 15.000000 212.827672 + +6.300000 -5.000000 56.817731 +6.300000 -4.900000 55.607617 +6.300000 -4.800000 54.417502 +6.300000 -4.700000 53.247388 +6.300000 -4.600000 52.097274 +6.300000 -4.500000 50.967159 +6.300000 -4.400000 49.857045 +6.300000 -4.300000 48.766931 +6.300000 -4.200000 47.696816 +6.300000 -4.100000 46.646702 +6.300000 -4.000000 45.616587 +6.300000 -3.900000 44.606473 +6.300000 -3.800000 43.616359 +6.300000 -3.700000 42.646244 +6.300000 -3.600000 41.696130 +6.300000 -3.500000 40.766016 +6.300000 -3.400000 39.855901 +6.300000 -3.300000 38.965787 +6.300000 -3.200000 38.095673 +6.300000 -3.100000 37.245558 +6.300000 -3.000000 36.415444 +6.300000 -2.900000 35.605330 +6.300000 -2.800000 34.815215 +6.300000 -2.700000 34.045101 +6.300000 -2.600000 33.294987 +6.300000 -2.500000 32.564872 +6.300000 -2.400000 31.854758 +6.300000 -2.300000 31.164644 +6.300000 -2.200000 30.494529 +6.300000 -2.100000 29.844415 +6.300000 -2.000000 29.214300 +6.300000 -1.900000 28.604186 +6.300000 -1.800000 28.014072 +6.300000 -1.700000 27.443957 +6.300000 -1.600000 26.893843 +6.300000 -1.500000 26.363729 +6.300000 -1.400000 25.853614 +6.300000 -1.300000 25.363500 +6.300000 -1.200000 24.893386 +6.300000 -1.100000 24.443271 +6.300000 -1.000000 24.013157 +6.300000 -0.900000 23.603043 +6.300000 -0.800000 23.212928 +6.300000 -0.700000 22.842814 +6.300000 -0.600000 22.492700 +6.300000 -0.500000 22.162585 +6.300000 -0.400000 21.852471 +6.300000 -0.300000 21.562356 +6.300000 -0.200000 21.292242 +6.300000 -0.100000 21.042128 +6.300000 -0.000000 20.812013 +6.300000 0.100000 20.601899 +6.300000 0.200000 20.411785 +6.300000 0.300000 20.241670 +6.300000 0.400000 20.091556 +6.300000 0.500000 19.961442 +6.300000 0.600000 19.851327 +6.300000 0.700000 19.761213 +6.300000 0.800000 19.691099 +6.300000 0.900000 19.640984 +6.300000 1.000000 19.610870 +6.300000 1.100000 19.600756 +6.300000 1.200000 19.610641 +6.300000 1.300000 19.640527 +6.300000 1.400000 19.690413 +6.300000 1.500000 19.760298 +6.300000 1.600000 19.850184 +6.300000 1.700000 19.960069 +6.300000 1.800000 20.089955 +6.300000 1.900000 20.239841 +6.300000 2.000000 20.409726 +6.300000 2.100000 20.599612 +6.300000 2.200000 20.809498 +6.300000 2.300000 21.039383 +6.300000 2.400000 21.289269 +6.300000 2.500000 21.559155 +6.300000 2.600000 21.849040 +6.300000 2.700000 22.158926 +6.300000 2.800000 22.488812 +6.300000 2.900000 22.838697 +6.300000 3.000000 23.208583 +6.300000 3.100000 23.598469 +6.300000 3.200000 24.008354 +6.300000 3.300000 24.438240 +6.300000 3.400000 24.888126 +6.300000 3.500000 25.358011 +6.300000 3.600000 25.847897 +6.300000 3.700000 26.357782 +6.300000 3.800000 26.887668 +6.300000 3.900000 27.437554 +6.300000 4.000000 28.007439 +6.300000 4.100000 28.597325 +6.300000 4.200000 29.207211 +6.300000 4.300000 29.837096 +6.300000 4.400000 30.486982 +6.300000 4.500000 31.156868 +6.300000 4.600000 31.846753 +6.300000 4.700000 32.556639 +6.300000 4.800000 33.286525 +6.300000 4.900000 34.036410 +6.300000 5.000000 34.806296 +6.300000 5.100000 35.596182 +6.300000 5.200000 36.406067 +6.300000 5.300000 37.235953 +6.300000 5.400000 38.085839 +6.300000 5.500000 38.955724 +6.300000 5.600000 39.845610 +6.300000 5.700000 40.755495 +6.300000 5.800000 41.685381 +6.300000 5.900000 42.635267 +6.300000 6.000000 43.605152 +6.300000 6.100000 44.595038 +6.300000 6.200000 45.604924 +6.300000 6.300000 46.634809 +6.300000 6.400000 47.684695 +6.300000 6.500000 48.754581 +6.300000 6.600000 49.844466 +6.300000 6.700000 50.954352 +6.300000 6.800000 52.084238 +6.300000 6.900000 53.234123 +6.300000 7.000000 54.404009 +6.300000 7.100000 55.593895 +6.300000 7.200000 56.803780 +6.300000 7.300000 58.033666 +6.300000 7.400000 59.283551 +6.300000 7.500000 60.553437 +6.300000 7.600000 61.843323 +6.300000 7.700000 63.153208 +6.300000 7.800000 64.483094 +6.300000 7.900000 65.832980 +6.300000 8.000000 67.202865 +6.300000 8.100000 68.592751 +6.300000 8.200000 70.002637 +6.300000 8.300000 71.432522 +6.300000 8.400000 72.882408 +6.300000 8.500000 74.352294 +6.300000 8.600000 75.842179 +6.300000 8.700000 77.352065 +6.300000 8.800000 78.881951 +6.300000 8.900000 80.431836 +6.300000 9.000000 82.001722 +6.300000 9.100000 83.591608 +6.300000 9.200000 85.201493 +6.300000 9.300000 86.831379 +6.300000 9.400000 88.481264 +6.300000 9.500000 90.151150 +6.300000 9.600000 91.841036 +6.300000 9.700000 93.550921 +6.300000 9.800000 95.280807 +6.300000 9.900000 97.030693 +6.300000 10.000000 98.800578 +6.300000 10.100000 100.590464 +6.300000 10.200000 102.400350 +6.300000 10.300000 104.230235 +6.300000 10.400000 106.080121 +6.300000 10.500000 107.950007 +6.300000 10.600000 109.839892 +6.300000 10.700000 111.749778 +6.300000 10.800000 113.679664 +6.300000 10.900000 115.629549 +6.300000 11.000000 117.599435 +6.300000 11.100000 119.589321 +6.300000 11.200000 121.599206 +6.300000 11.300000 123.629092 +6.300000 11.400000 125.678977 +6.300000 11.500000 127.748863 +6.300000 11.600000 129.838749 +6.300000 11.700000 131.948634 +6.300000 11.800000 134.078520 +6.300000 11.900000 136.228406 +6.300000 12.000000 138.398291 +6.300000 12.100000 140.588177 +6.300000 12.200000 142.798063 +6.300000 12.300000 145.027948 +6.300000 12.400000 147.277834 +6.300000 12.500000 149.547720 +6.300000 12.600000 151.837605 +6.300000 12.700000 154.147491 +6.300000 12.800000 156.477377 +6.300000 12.900000 158.827262 +6.300000 13.000000 161.197148 +6.300000 13.100000 163.587034 +6.300000 13.200000 165.996919 +6.300000 13.300000 168.426805 +6.300000 13.400000 170.876690 +6.300000 13.500000 173.346576 +6.300000 13.600000 175.836462 +6.300000 13.700000 178.346347 +6.300000 13.800000 180.876233 +6.300000 13.900000 183.426119 +6.300000 14.000000 185.996004 +6.300000 14.100000 188.585890 +6.300000 14.200000 191.195776 +6.300000 14.300000 193.825661 +6.300000 14.400000 196.475547 +6.300000 14.500000 199.145433 +6.300000 14.600000 201.835318 +6.300000 14.700000 204.545204 +6.300000 14.800000 207.275090 +6.300000 14.900000 210.024975 +6.300000 15.000000 212.794861 + +6.400000 -5.000000 56.813573 +6.400000 -4.900000 55.602477 +6.400000 -4.800000 54.411381 +6.400000 -4.700000 53.240285 +6.400000 -4.600000 52.089188 +6.400000 -4.500000 50.958092 +6.400000 -4.400000 49.846996 +6.400000 -4.300000 48.755900 +6.400000 -4.200000 47.684804 +6.400000 -4.100000 46.633707 +6.400000 -4.000000 45.602611 +6.400000 -3.900000 44.591515 +6.400000 -3.800000 43.600419 +6.400000 -3.700000 42.629322 +6.400000 -3.600000 41.678226 +6.400000 -3.500000 40.747130 +6.400000 -3.400000 39.836034 +6.400000 -3.300000 38.944938 +6.400000 -3.200000 38.073841 +6.400000 -3.100000 37.222745 +6.400000 -3.000000 36.391649 +6.400000 -2.900000 35.580553 +6.400000 -2.800000 34.789456 +6.400000 -2.700000 34.018360 +6.400000 -2.600000 33.267264 +6.400000 -2.500000 32.536168 +6.400000 -2.400000 31.825071 +6.400000 -2.300000 31.133975 +6.400000 -2.200000 30.462879 +6.400000 -2.100000 29.811783 +6.400000 -2.000000 29.180687 +6.400000 -1.900000 28.569590 +6.400000 -1.800000 27.978494 +6.400000 -1.700000 27.407398 +6.400000 -1.600000 26.856302 +6.400000 -1.500000 26.325205 +6.400000 -1.400000 25.814109 +6.400000 -1.300000 25.323013 +6.400000 -1.200000 24.851917 +6.400000 -1.100000 24.400821 +6.400000 -1.000000 23.969724 +6.400000 -0.900000 23.558628 +6.400000 -0.800000 23.167532 +6.400000 -0.700000 22.796436 +6.400000 -0.600000 22.445339 +6.400000 -0.500000 22.114243 +6.400000 -0.400000 21.803147 +6.400000 -0.300000 21.512051 +6.400000 -0.200000 21.240954 +6.400000 -0.100000 20.989858 +6.400000 -0.000000 20.758762 +6.400000 0.100000 20.547666 +6.400000 0.200000 20.356570 +6.400000 0.300000 20.185473 +6.400000 0.400000 20.034377 +6.400000 0.500000 19.903281 +6.400000 0.600000 19.792185 +6.400000 0.700000 19.701088 +6.400000 0.800000 19.629992 +6.400000 0.900000 19.578896 +6.400000 1.000000 19.547800 +6.400000 1.100000 19.536704 +6.400000 1.200000 19.545607 +6.400000 1.300000 19.574511 +6.400000 1.400000 19.623415 +6.400000 1.500000 19.692319 +6.400000 1.600000 19.781222 +6.400000 1.700000 19.890126 +6.400000 1.800000 20.019030 +6.400000 1.900000 20.167934 +6.400000 2.000000 20.336837 +6.400000 2.100000 20.525741 +6.400000 2.200000 20.734645 +6.400000 2.300000 20.963549 +6.400000 2.400000 21.212453 +6.400000 2.500000 21.481356 +6.400000 2.600000 21.770260 +6.400000 2.700000 22.079164 +6.400000 2.800000 22.408068 +6.400000 2.900000 22.756971 +6.400000 3.000000 23.125875 +6.400000 3.100000 23.514779 +6.400000 3.200000 23.923683 +6.400000 3.300000 24.352587 +6.400000 3.400000 24.801490 +6.400000 3.500000 25.270394 +6.400000 3.600000 25.759298 +6.400000 3.700000 26.268202 +6.400000 3.800000 26.797105 +6.400000 3.900000 27.346009 +6.400000 4.000000 27.914913 +6.400000 4.100000 28.503817 +6.400000 4.200000 29.112720 +6.400000 4.300000 29.741624 +6.400000 4.400000 30.390528 +6.400000 4.500000 31.059432 +6.400000 4.600000 31.748336 +6.400000 4.700000 32.457239 +6.400000 4.800000 33.186143 +6.400000 4.900000 33.935047 +6.400000 5.000000 34.703951 +6.400000 5.100000 35.492854 +6.400000 5.200000 36.301758 +6.400000 5.300000 37.130662 +6.400000 5.400000 37.979566 +6.400000 5.500000 38.848470 +6.400000 5.600000 39.737373 +6.400000 5.700000 40.646277 +6.400000 5.800000 41.575181 +6.400000 5.900000 42.524085 +6.400000 6.000000 43.492988 +6.400000 6.100000 44.481892 +6.400000 6.200000 45.490796 +6.400000 6.300000 46.519700 +6.400000 6.400000 47.568603 +6.400000 6.500000 48.637507 +6.400000 6.600000 49.726411 +6.400000 6.700000 50.835315 +6.400000 6.800000 51.964219 +6.400000 6.900000 53.113122 +6.400000 7.000000 54.282026 +6.400000 7.100000 55.470930 +6.400000 7.200000 56.679834 +6.400000 7.300000 57.908737 +6.400000 7.400000 59.157641 +6.400000 7.500000 60.426545 +6.400000 7.600000 61.715449 +6.400000 7.700000 63.024353 +6.400000 7.800000 64.353256 +6.400000 7.900000 65.702160 +6.400000 8.000000 67.071064 +6.400000 8.100000 68.459968 +6.400000 8.200000 69.868871 +6.400000 8.300000 71.297775 +6.400000 8.400000 72.746679 +6.400000 8.500000 74.215583 +6.400000 8.600000 75.704486 +6.400000 8.700000 77.213390 +6.400000 8.800000 78.742294 +6.400000 8.900000 80.291198 +6.400000 9.000000 81.860102 +6.400000 9.100000 83.449005 +6.400000 9.200000 85.057909 +6.400000 9.300000 86.686813 +6.400000 9.400000 88.335717 +6.400000 9.500000 90.004620 +6.400000 9.600000 91.693524 +6.400000 9.700000 93.402428 +6.400000 9.800000 95.131332 +6.400000 9.900000 96.880236 +6.400000 10.000000 98.649139 +6.400000 10.100000 100.438043 +6.400000 10.200000 102.246947 +6.400000 10.300000 104.075851 +6.400000 10.400000 105.924754 +6.400000 10.500000 107.793658 +6.400000 10.600000 109.682562 +6.400000 10.700000 111.591466 +6.400000 10.800000 113.520369 +6.400000 10.900000 115.469273 +6.400000 11.000000 117.438177 +6.400000 11.100000 119.427081 +6.400000 11.200000 121.435985 +6.400000 11.300000 123.464888 +6.400000 11.400000 125.513792 +6.400000 11.500000 127.582696 +6.400000 11.600000 129.671600 +6.400000 11.700000 131.780503 +6.400000 11.800000 133.909407 +6.400000 11.900000 136.058311 +6.400000 12.000000 138.227215 +6.400000 12.100000 140.416119 +6.400000 12.200000 142.625022 +6.400000 12.300000 144.853926 +6.400000 12.400000 147.102830 +6.400000 12.500000 149.371734 +6.400000 12.600000 151.660637 +6.400000 12.700000 153.969541 +6.400000 12.800000 156.298445 +6.400000 12.900000 158.647349 +6.400000 13.000000 161.016252 +6.400000 13.100000 163.405156 +6.400000 13.200000 165.814060 +6.400000 13.300000 168.242964 +6.400000 13.400000 170.691868 +6.400000 13.500000 173.160771 +6.400000 13.600000 175.649675 +6.400000 13.700000 178.158579 +6.400000 13.800000 180.687483 +6.400000 13.900000 183.236386 +6.400000 14.000000 185.805290 +6.400000 14.100000 188.394194 +6.400000 14.200000 191.003098 +6.400000 14.300000 193.632001 +6.400000 14.400000 196.280905 +6.400000 14.500000 198.949809 +6.400000 14.600000 201.638713 +6.400000 14.700000 204.347617 +6.400000 14.800000 207.076520 +6.400000 14.900000 209.825424 +6.400000 15.000000 212.594328 + +6.500000 -5.000000 56.745758 +6.500000 -4.900000 55.533163 +6.500000 -4.800000 54.340568 +6.500000 -4.700000 53.167974 +6.500000 -4.600000 52.015379 +6.500000 -4.500000 50.882784 +6.500000 -4.400000 49.770189 +6.500000 -4.300000 48.677594 +6.500000 -4.200000 47.604999 +6.500000 -4.100000 46.552405 +6.500000 -4.000000 45.519810 +6.500000 -3.900000 44.507215 +6.500000 -3.800000 43.514620 +6.500000 -3.700000 42.542025 +6.500000 -3.600000 41.589430 +6.500000 -3.500000 40.656835 +6.500000 -3.400000 39.744241 +6.500000 -3.300000 38.851646 +6.500000 -3.200000 37.979051 +6.500000 -3.100000 37.126456 +6.500000 -3.000000 36.293861 +6.500000 -2.900000 35.481266 +6.500000 -2.800000 34.688672 +6.500000 -2.700000 33.916077 +6.500000 -2.600000 33.163482 +6.500000 -2.500000 32.430887 +6.500000 -2.400000 31.718292 +6.500000 -2.300000 31.025697 +6.500000 -2.200000 30.353103 +6.500000 -2.100000 29.700508 +6.500000 -2.000000 29.067913 +6.500000 -1.900000 28.455318 +6.500000 -1.800000 27.862723 +6.500000 -1.700000 27.290128 +6.500000 -1.600000 26.737533 +6.500000 -1.500000 26.204939 +6.500000 -1.400000 25.692344 +6.500000 -1.300000 25.199749 +6.500000 -1.200000 24.727154 +6.500000 -1.100000 24.274559 +6.500000 -1.000000 23.841964 +6.500000 -0.900000 23.429370 +6.500000 -0.800000 23.036775 +6.500000 -0.700000 22.664180 +6.500000 -0.600000 22.311585 +6.500000 -0.500000 21.978990 +6.500000 -0.400000 21.666395 +6.500000 -0.300000 21.373801 +6.500000 -0.200000 21.101206 +6.500000 -0.100000 20.848611 +6.500000 -0.000000 20.616016 +6.500000 0.100000 20.403421 +6.500000 0.200000 20.210826 +6.500000 0.300000 20.038231 +6.500000 0.400000 19.885637 +6.500000 0.500000 19.753042 +6.500000 0.600000 19.640447 +6.500000 0.700000 19.547852 +6.500000 0.800000 19.475257 +6.500000 0.900000 19.422662 +6.500000 1.000000 19.390068 +6.500000 1.100000 19.377473 +6.500000 1.200000 19.384878 +6.500000 1.300000 19.412283 +6.500000 1.400000 19.459688 +6.500000 1.500000 19.527093 +6.500000 1.600000 19.614499 +6.500000 1.700000 19.721904 +6.500000 1.800000 19.849309 +6.500000 1.900000 19.996714 +6.500000 2.000000 20.164119 +6.500000 2.100000 20.351524 +6.500000 2.200000 20.558929 +6.500000 2.300000 20.786335 +6.500000 2.400000 21.033740 +6.500000 2.500000 21.301145 +6.500000 2.600000 21.588550 +6.500000 2.700000 21.895955 +6.500000 2.800000 22.223360 +6.500000 2.900000 22.570766 +6.500000 3.000000 22.938171 +6.500000 3.100000 23.325576 +6.500000 3.200000 23.732981 +6.500000 3.300000 24.160386 +6.500000 3.400000 24.607791 +6.500000 3.500000 25.075197 +6.500000 3.600000 25.562602 +6.500000 3.700000 26.070007 +6.500000 3.800000 26.597412 +6.500000 3.900000 27.144817 +6.500000 4.000000 27.712222 +6.500000 4.100000 28.299627 +6.500000 4.200000 28.907033 +6.500000 4.300000 29.534438 +6.500000 4.400000 30.181843 +6.500000 4.500000 30.849248 +6.500000 4.600000 31.536653 +6.500000 4.700000 32.244058 +6.500000 4.800000 32.971464 +6.500000 4.900000 33.718869 +6.500000 5.000000 34.486274 +6.500000 5.100000 35.273679 +6.500000 5.200000 36.081084 +6.500000 5.300000 36.908489 +6.500000 5.400000 37.755895 +6.500000 5.500000 38.623300 +6.500000 5.600000 39.510705 +6.500000 5.700000 40.418110 +6.500000 5.800000 41.345515 +6.500000 5.900000 42.292920 +6.500000 6.000000 43.260325 +6.500000 6.100000 44.247731 +6.500000 6.200000 45.255136 +6.500000 6.300000 46.282541 +6.500000 6.400000 47.329946 +6.500000 6.500000 48.397351 +6.500000 6.600000 49.484756 +6.500000 6.700000 50.592162 +6.500000 6.800000 51.719567 +6.500000 6.900000 52.866972 +6.500000 7.000000 54.034377 +6.500000 7.100000 55.221782 +6.500000 7.200000 56.429187 +6.500000 7.300000 57.656593 +6.500000 7.400000 58.903998 +6.500000 7.500000 60.171403 +6.500000 7.600000 61.458808 +6.500000 7.700000 62.766213 +6.500000 7.800000 64.093618 +6.500000 7.900000 65.441023 +6.500000 8.000000 66.808429 +6.500000 8.100000 68.195834 +6.500000 8.200000 69.603239 +6.500000 8.300000 71.030644 +6.500000 8.400000 72.478049 +6.500000 8.500000 73.945454 +6.500000 8.600000 75.432860 +6.500000 8.700000 76.940265 +6.500000 8.800000 78.467670 +6.500000 8.900000 80.015075 +6.500000 9.000000 81.582480 +6.500000 9.100000 83.169885 +6.500000 9.200000 84.777291 +6.500000 9.300000 86.404696 +6.500000 9.400000 88.052101 +6.500000 9.500000 89.719506 +6.500000 9.600000 91.406911 +6.500000 9.700000 93.114316 +6.500000 9.800000 94.841721 +6.500000 9.900000 96.589127 +6.500000 10.000000 98.356532 +6.500000 10.100000 100.143937 +6.500000 10.200000 101.951342 +6.500000 10.300000 103.778747 +6.500000 10.400000 105.626152 +6.500000 10.500000 107.493558 +6.500000 10.600000 109.380963 +6.500000 10.700000 111.288368 +6.500000 10.800000 113.215773 +6.500000 10.900000 115.163178 +6.500000 11.000000 117.130583 +6.500000 11.100000 119.117989 +6.500000 11.200000 121.125394 +6.500000 11.300000 123.152799 +6.500000 11.400000 125.200204 +6.500000 11.500000 127.267609 +6.500000 11.600000 129.355014 +6.500000 11.700000 131.462419 +6.500000 11.800000 133.589825 +6.500000 11.900000 135.737230 +6.500000 12.000000 137.904635 +6.500000 12.100000 140.092040 +6.500000 12.200000 142.299445 +6.500000 12.300000 144.526850 +6.500000 12.400000 146.774256 +6.500000 12.500000 149.041661 +6.500000 12.600000 151.329066 +6.500000 12.700000 153.636471 +6.500000 12.800000 155.963876 +6.500000 12.900000 158.311281 +6.500000 13.000000 160.678687 +6.500000 13.100000 163.066092 +6.500000 13.200000 165.473497 +6.500000 13.300000 167.900902 +6.500000 13.400000 170.348307 +6.500000 13.500000 172.815712 +6.500000 13.600000 175.303117 +6.500000 13.700000 177.810523 +6.500000 13.800000 180.337928 +6.500000 13.900000 182.885333 +6.500000 14.000000 185.452738 +6.500000 14.100000 188.040143 +6.500000 14.200000 190.647548 +6.500000 14.300000 193.274954 +6.500000 14.400000 195.922359 +6.500000 14.500000 198.589764 +6.500000 14.600000 201.277169 +6.500000 14.700000 203.984574 +6.500000 14.800000 206.711979 +6.500000 14.900000 209.459385 +6.500000 15.000000 212.226790 + +6.600000 -5.000000 56.615994 +6.600000 -4.900000 55.401383 +6.600000 -4.800000 54.206773 +6.600000 -4.700000 53.032163 +6.600000 -4.600000 51.877553 +6.600000 -4.500000 50.742943 +6.600000 -4.400000 49.628332 +6.600000 -4.300000 48.533722 +6.600000 -4.200000 47.459112 +6.600000 -4.100000 46.404502 +6.600000 -4.000000 45.369892 +6.600000 -3.900000 44.355281 +6.600000 -3.800000 43.360671 +6.600000 -3.700000 42.386061 +6.600000 -3.600000 41.431451 +6.600000 -3.500000 40.496841 +6.600000 -3.400000 39.582230 +6.600000 -3.300000 38.687620 +6.600000 -3.200000 37.813010 +6.600000 -3.100000 36.958400 +6.600000 -3.000000 36.123790 +6.600000 -2.900000 35.309180 +6.600000 -2.800000 34.514569 +6.600000 -2.700000 33.739959 +6.600000 -2.600000 32.985349 +6.600000 -2.500000 32.250739 +6.600000 -2.400000 31.536129 +6.600000 -2.300000 30.841518 +6.600000 -2.200000 30.166908 +6.600000 -2.100000 29.512298 +6.600000 -2.000000 28.877688 +6.600000 -1.900000 28.263078 +6.600000 -1.800000 27.668467 +6.600000 -1.700000 27.093857 +6.600000 -1.600000 26.539247 +6.600000 -1.500000 26.004637 +6.600000 -1.400000 25.490027 +6.600000 -1.300000 24.995416 +6.600000 -1.200000 24.520806 +6.600000 -1.100000 24.066196 +6.600000 -1.000000 23.631586 +6.600000 -0.900000 23.216976 +6.600000 -0.800000 22.822365 +6.600000 -0.700000 22.447755 +6.600000 -0.600000 22.093145 +6.600000 -0.500000 21.758535 +6.600000 -0.400000 21.443925 +6.600000 -0.300000 21.149314 +6.600000 -0.200000 20.874704 +6.600000 -0.100000 20.620094 +6.600000 -0.000000 20.385484 +6.600000 0.100000 20.170874 +6.600000 0.200000 19.976263 +6.600000 0.300000 19.801653 +6.600000 0.400000 19.647043 +6.600000 0.500000 19.512433 +6.600000 0.600000 19.397823 +6.600000 0.700000 19.303213 +6.600000 0.800000 19.228602 +6.600000 0.900000 19.173992 +6.600000 1.000000 19.139382 +6.600000 1.100000 19.124772 +6.600000 1.200000 19.130162 +6.600000 1.300000 19.155551 +6.600000 1.400000 19.200941 +6.600000 1.500000 19.266331 +6.600000 1.600000 19.351721 +6.600000 1.700000 19.457111 +6.600000 1.800000 19.582500 +6.600000 1.900000 19.727890 +6.600000 2.000000 19.893280 +6.600000 2.100000 20.078670 +6.600000 2.200000 20.284060 +6.600000 2.300000 20.509449 +6.600000 2.400000 20.754839 +6.600000 2.500000 21.020229 +6.600000 2.600000 21.305619 +6.600000 2.700000 21.611009 +6.600000 2.800000 21.936398 +6.600000 2.900000 22.281788 +6.600000 3.000000 22.647178 +6.600000 3.100000 23.032568 +6.600000 3.200000 23.437958 +6.600000 3.300000 23.863347 +6.600000 3.400000 24.308737 +6.600000 3.500000 24.774127 +6.600000 3.600000 25.259517 +6.600000 3.700000 25.764907 +6.600000 3.800000 26.290296 +6.600000 3.900000 26.835686 +6.600000 4.000000 27.401076 +6.600000 4.100000 27.986466 +6.600000 4.200000 28.591856 +6.600000 4.300000 29.217245 +6.600000 4.400000 29.862635 +6.600000 4.500000 30.528025 +6.600000 4.600000 31.213415 +6.600000 4.700000 31.918805 +6.600000 4.800000 32.644195 +6.600000 4.900000 33.389584 +6.600000 5.000000 34.154974 +6.600000 5.100000 34.940364 +6.600000 5.200000 35.745754 +6.600000 5.300000 36.571144 +6.600000 5.400000 37.416533 +6.600000 5.500000 38.281923 +6.600000 5.600000 39.167313 +6.600000 5.700000 40.072703 +6.600000 5.800000 40.998093 +6.600000 5.900000 41.943482 +6.600000 6.000000 42.908872 +6.600000 6.100000 43.894262 +6.600000 6.200000 44.899652 +6.600000 6.300000 45.925042 +6.600000 6.400000 46.970431 +6.600000 6.500000 48.035821 +6.600000 6.600000 49.121211 +6.600000 6.700000 50.226601 +6.600000 6.800000 51.351991 +6.600000 6.900000 52.497380 +6.600000 7.000000 53.662770 +6.600000 7.100000 54.848160 +6.600000 7.200000 56.053550 +6.600000 7.300000 57.278940 +6.600000 7.400000 58.524329 +6.600000 7.500000 59.789719 +6.600000 7.600000 61.075109 +6.600000 7.700000 62.380499 +6.600000 7.800000 63.705889 +6.600000 7.900000 65.051278 +6.600000 8.000000 66.416668 +6.600000 8.100000 67.802058 +6.600000 8.200000 69.207448 +6.600000 8.300000 70.632838 +6.600000 8.400000 72.078228 +6.600000 8.500000 73.543617 +6.600000 8.600000 75.029007 +6.600000 8.700000 76.534397 +6.600000 8.800000 78.059787 +6.600000 8.900000 79.605177 +6.600000 9.000000 81.170566 +6.600000 9.100000 82.755956 +6.600000 9.200000 84.361346 +6.600000 9.300000 85.986736 +6.600000 9.400000 87.632126 +6.600000 9.500000 89.297515 +6.600000 9.600000 90.982905 +6.600000 9.700000 92.688295 +6.600000 9.800000 94.413685 +6.600000 9.900000 96.159075 +6.600000 10.000000 97.924464 +6.600000 10.100000 99.709854 +6.600000 10.200000 101.515244 +6.600000 10.300000 103.340634 +6.600000 10.400000 105.186024 +6.600000 10.500000 107.051413 +6.600000 10.600000 108.936803 +6.600000 10.700000 110.842193 +6.600000 10.800000 112.767583 +6.600000 10.900000 114.712973 +6.600000 11.000000 116.678362 +6.600000 11.100000 118.663752 +6.600000 11.200000 120.669142 +6.600000 11.300000 122.694532 +6.600000 11.400000 124.739922 +6.600000 11.500000 126.805311 +6.600000 11.600000 128.890701 +6.600000 11.700000 130.996091 +6.600000 11.800000 133.121481 +6.600000 11.900000 135.266871 +6.600000 12.000000 137.432260 +6.600000 12.100000 139.617650 +6.600000 12.200000 141.823040 +6.600000 12.300000 144.048430 +6.600000 12.400000 146.293820 +6.600000 12.500000 148.559210 +6.600000 12.600000 150.844599 +6.600000 12.700000 153.149989 +6.600000 12.800000 155.475379 +6.600000 12.900000 157.820769 +6.600000 13.000000 160.186159 +6.600000 13.100000 162.571548 +6.600000 13.200000 164.976938 +6.600000 13.300000 167.402328 +6.600000 13.400000 169.847718 +6.600000 13.500000 172.313108 +6.600000 13.600000 174.798497 +6.600000 13.700000 177.303887 +6.600000 13.800000 179.829277 +6.600000 13.900000 182.374667 +6.600000 14.000000 184.940057 +6.600000 14.100000 187.525446 +6.600000 14.200000 190.130836 +6.600000 14.300000 192.756226 +6.600000 14.400000 195.401616 +6.600000 14.500000 198.067006 +6.600000 14.600000 200.752395 +6.600000 14.700000 203.457785 +6.600000 14.800000 206.183175 +6.600000 14.900000 208.928565 +6.600000 15.000000 211.693955 + +6.700000 -5.000000 56.426965 +6.700000 -4.900000 55.209822 +6.700000 -4.800000 54.012680 +6.700000 -4.700000 52.835538 +6.700000 -4.600000 51.678396 +6.700000 -4.500000 50.541253 +6.700000 -4.400000 49.424111 +6.700000 -4.300000 48.326969 +6.700000 -4.200000 47.249826 +6.700000 -4.100000 46.192684 +6.700000 -4.000000 45.155542 +6.700000 -3.900000 44.138400 +6.700000 -3.800000 43.141257 +6.700000 -3.700000 42.164115 +6.700000 -3.600000 41.206973 +6.700000 -3.500000 40.269830 +6.700000 -3.400000 39.352688 +6.700000 -3.300000 38.455546 +6.700000 -3.200000 37.578404 +6.700000 -3.100000 36.721261 +6.700000 -3.000000 35.884119 +6.700000 -2.900000 35.066977 +6.700000 -2.800000 34.269834 +6.700000 -2.700000 33.492692 +6.700000 -2.600000 32.735550 +6.700000 -2.500000 31.998408 +6.700000 -2.400000 31.281265 +6.700000 -2.300000 30.584123 +6.700000 -2.200000 29.906981 +6.700000 -2.100000 29.249838 +6.700000 -2.000000 28.612696 +6.700000 -1.900000 27.995554 +6.700000 -1.800000 27.398412 +6.700000 -1.700000 26.821269 +6.700000 -1.600000 26.264127 +6.700000 -1.500000 25.726985 +6.700000 -1.400000 25.209842 +6.700000 -1.300000 24.712700 +6.700000 -1.200000 24.235558 +6.700000 -1.100000 23.778416 +6.700000 -1.000000 23.341273 +6.700000 -0.900000 22.924131 +6.700000 -0.800000 22.526989 +6.700000 -0.700000 22.149846 +6.700000 -0.600000 21.792704 +6.700000 -0.500000 21.455562 +6.700000 -0.400000 21.138420 +6.700000 -0.300000 20.841277 +6.700000 -0.200000 20.564135 +6.700000 -0.100000 20.306993 +6.700000 -0.000000 20.069850 +6.700000 0.100000 19.852708 +6.700000 0.200000 19.655566 +6.700000 0.300000 19.478424 +6.700000 0.400000 19.321281 +6.700000 0.500000 19.184139 +6.700000 0.600000 19.066997 +6.700000 0.700000 18.969854 +6.700000 0.800000 18.892712 +6.700000 0.900000 18.835570 +6.700000 1.000000 18.798428 +6.700000 1.100000 18.781285 +6.700000 1.200000 18.784143 +6.700000 1.300000 18.807001 +6.700000 1.400000 18.849858 +6.700000 1.500000 18.912716 +6.700000 1.600000 18.995574 +6.700000 1.700000 19.098432 +6.700000 1.800000 19.221289 +6.700000 1.900000 19.364147 +6.700000 2.000000 19.527005 +6.700000 2.100000 19.709862 +6.700000 2.200000 19.912720 +6.700000 2.300000 20.135578 +6.700000 2.400000 20.378436 +6.700000 2.500000 20.641293 +6.700000 2.600000 20.924151 +6.700000 2.700000 21.227009 +6.700000 2.800000 21.549866 +6.700000 2.900000 21.892724 +6.700000 3.000000 22.255582 +6.700000 3.100000 22.638440 +6.700000 3.200000 23.041297 +6.700000 3.300000 23.464155 +6.700000 3.400000 23.907013 +6.700000 3.500000 24.369870 +6.700000 3.600000 24.852728 +6.700000 3.700000 25.355586 +6.700000 3.800000 25.878444 +6.700000 3.900000 26.421301 +6.700000 4.000000 26.984159 +6.700000 4.100000 27.567017 +6.700000 4.200000 28.169874 +6.700000 4.300000 28.792732 +6.700000 4.400000 29.435590 +6.700000 4.500000 30.098448 +6.700000 4.600000 30.781305 +6.700000 4.700000 31.484163 +6.700000 4.800000 32.207021 +6.700000 4.900000 32.949878 +6.700000 5.000000 33.712736 +6.700000 5.100000 34.495594 +6.700000 5.200000 35.298452 +6.700000 5.300000 36.121309 +6.700000 5.400000 36.964167 +6.700000 5.500000 37.827025 +6.700000 5.600000 38.709882 +6.700000 5.700000 39.612740 +6.700000 5.800000 40.535598 +6.700000 5.900000 41.478456 +6.700000 6.000000 42.441313 +6.700000 6.100000 43.424171 +6.700000 6.200000 44.427029 +6.700000 6.300000 45.449886 +6.700000 6.400000 46.492744 +6.700000 6.500000 47.555602 +6.700000 6.600000 48.638460 +6.700000 6.700000 49.741317 +6.700000 6.800000 50.864175 +6.700000 6.900000 52.007033 +6.700000 7.000000 53.169890 +6.700000 7.100000 54.352748 +6.700000 7.200000 55.555606 +6.700000 7.300000 56.778464 +6.700000 7.400000 58.021321 +6.700000 7.500000 59.284179 +6.700000 7.600000 60.567037 +6.700000 7.700000 61.869894 +6.700000 7.800000 63.192752 +6.700000 7.900000 64.535610 +6.700000 8.000000 65.898468 +6.700000 8.100000 67.281325 +6.700000 8.200000 68.684183 +6.700000 8.300000 70.107041 +6.700000 8.400000 71.549898 +6.700000 8.500000 73.012756 +6.700000 8.600000 74.495614 +6.700000 8.700000 75.998472 +6.700000 8.800000 77.521329 +6.700000 8.900000 79.064187 +6.700000 9.000000 80.627045 +6.700000 9.100000 82.209902 +6.700000 9.200000 83.812760 +6.700000 9.300000 85.435618 +6.700000 9.400000 87.078476 +6.700000 9.500000 88.741333 +6.700000 9.600000 90.424191 +6.700000 9.700000 92.127049 +6.700000 9.800000 93.849906 +6.700000 9.900000 95.592764 +6.700000 10.000000 97.355622 +6.700000 10.100000 99.138480 +6.700000 10.200000 100.941337 +6.700000 10.300000 102.764195 +6.700000 10.400000 104.607053 +6.700000 10.500000 106.469910 +6.700000 10.600000 108.352768 +6.700000 10.700000 110.255626 +6.700000 10.800000 112.178484 +6.700000 10.900000 114.121341 +6.700000 11.000000 116.084199 +6.700000 11.100000 118.067057 +6.700000 11.200000 120.069914 +6.700000 11.300000 122.092772 +6.700000 11.400000 124.135630 +6.700000 11.500000 126.198488 +6.700000 11.600000 128.281345 +6.700000 11.700000 130.384203 +6.700000 11.800000 132.507061 +6.700000 11.900000 134.649918 +6.700000 12.000000 136.812776 +6.700000 12.100000 138.995634 +6.700000 12.200000 141.198492 +6.700000 12.300000 143.421349 +6.700000 12.400000 145.664207 +6.700000 12.500000 147.927065 +6.700000 12.600000 150.209922 +6.700000 12.700000 152.512780 +6.700000 12.800000 154.835638 +6.700000 12.900000 157.178496 +6.700000 13.000000 159.541353 +6.700000 13.100000 161.924211 +6.700000 13.200000 164.327069 +6.700000 13.300000 166.749926 +6.700000 13.400000 169.192784 +6.700000 13.500000 171.655642 +6.700000 13.600000 174.138500 +6.700000 13.700000 176.641357 +6.700000 13.800000 179.164215 +6.700000 13.900000 181.707073 +6.700000 14.000000 184.269930 +6.700000 14.100000 186.852788 +6.700000 14.200000 189.455646 +6.700000 14.300000 192.078504 +6.700000 14.400000 194.721361 +6.700000 14.500000 197.384219 +6.700000 14.600000 200.067077 +6.700000 14.700000 202.769934 +6.700000 14.800000 205.492792 +6.700000 14.900000 208.235650 +6.700000 15.000000 210.998508 + +6.800000 -5.000000 56.182307 +6.800000 -4.900000 54.962116 +6.800000 -4.800000 53.761925 +6.800000 -4.700000 52.581734 +6.800000 -4.600000 51.421543 +6.800000 -4.500000 50.281352 +6.800000 -4.400000 49.161160 +6.800000 -4.300000 48.060969 +6.800000 -4.200000 46.980778 +6.800000 -4.100000 45.920587 +6.800000 -4.000000 44.880396 +6.800000 -3.900000 43.860205 +6.800000 -3.800000 42.860014 +6.800000 -3.700000 41.879823 +6.800000 -3.600000 40.919631 +6.800000 -3.500000 39.979440 +6.800000 -3.400000 39.059249 +6.800000 -3.300000 38.159058 +6.800000 -3.200000 37.278867 +6.800000 -3.100000 36.418676 +6.800000 -3.000000 35.578485 +6.800000 -2.900000 34.758294 +6.800000 -2.800000 33.958103 +6.800000 -2.700000 33.177911 +6.800000 -2.600000 32.417720 +6.800000 -2.500000 31.677529 +6.800000 -2.400000 30.957338 +6.800000 -2.300000 30.257147 +6.800000 -2.200000 29.576956 +6.800000 -2.100000 28.916765 +6.800000 -2.000000 28.276574 +6.800000 -1.900000 27.656383 +6.800000 -1.800000 27.056191 +6.800000 -1.700000 26.476000 +6.800000 -1.600000 25.915809 +6.800000 -1.500000 25.375618 +6.800000 -1.400000 24.855427 +6.800000 -1.300000 24.355236 +6.800000 -1.200000 23.875045 +6.800000 -1.100000 23.414854 +6.800000 -1.000000 22.974663 +6.800000 -0.900000 22.554471 +6.800000 -0.800000 22.154280 +6.800000 -0.700000 21.774089 +6.800000 -0.600000 21.413898 +6.800000 -0.500000 21.073707 +6.800000 -0.400000 20.753516 +6.800000 -0.300000 20.453325 +6.800000 -0.200000 20.173134 +6.800000 -0.100000 19.912942 +6.800000 -0.000000 19.672751 +6.800000 0.100000 19.452560 +6.800000 0.200000 19.252369 +6.800000 0.300000 19.072178 +6.800000 0.400000 18.911987 +6.800000 0.500000 18.771796 +6.800000 0.600000 18.651605 +6.800000 0.700000 18.551414 +6.800000 0.800000 18.471222 +6.800000 0.900000 18.411031 +6.800000 1.000000 18.370840 +6.800000 1.100000 18.350649 +6.800000 1.200000 18.350458 +6.800000 1.300000 18.370267 +6.800000 1.400000 18.410076 +6.800000 1.500000 18.469885 +6.800000 1.600000 18.549694 +6.800000 1.700000 18.649502 +6.800000 1.800000 18.769311 +6.800000 1.900000 18.909120 +6.800000 2.000000 19.068929 +6.800000 2.100000 19.248738 +6.800000 2.200000 19.448547 +6.800000 2.300000 19.668356 +6.800000 2.400000 19.908165 +6.800000 2.500000 20.167974 +6.800000 2.600000 20.447782 +6.800000 2.700000 20.747591 +6.800000 2.800000 21.067400 +6.800000 2.900000 21.407209 +6.800000 3.000000 21.767018 +6.800000 3.100000 22.146827 +6.800000 3.200000 22.546636 +6.800000 3.300000 22.966445 +6.800000 3.400000 23.406253 +6.800000 3.500000 23.866062 +6.800000 3.600000 24.345871 +6.800000 3.700000 24.845680 +6.800000 3.800000 25.365489 +6.800000 3.900000 25.905298 +6.800000 4.000000 26.465107 +6.800000 4.100000 27.044916 +6.800000 4.200000 27.644725 +6.800000 4.300000 28.264533 +6.800000 4.400000 28.904342 +6.800000 4.500000 29.564151 +6.800000 4.600000 30.243960 +6.800000 4.700000 30.943769 +6.800000 4.800000 31.663578 +6.800000 4.900000 32.403387 +6.800000 5.000000 33.163196 +6.800000 5.100000 33.943005 +6.800000 5.200000 34.742813 +6.800000 5.300000 35.562622 +6.800000 5.400000 36.402431 +6.800000 5.500000 37.262240 +6.800000 5.600000 38.142049 +6.800000 5.700000 39.041858 +6.800000 5.800000 39.961667 +6.800000 5.900000 40.901476 +6.800000 6.000000 41.861284 +6.800000 6.100000 42.841093 +6.800000 6.200000 43.840902 +6.800000 6.300000 44.860711 +6.800000 6.400000 45.900520 +6.800000 6.500000 46.960329 +6.800000 6.600000 48.040138 +6.800000 6.700000 49.139947 +6.800000 6.800000 50.259756 +6.800000 6.900000 51.399564 +6.800000 7.000000 52.559373 +6.800000 7.100000 53.739182 +6.800000 7.200000 54.938991 +6.800000 7.300000 56.158800 +6.800000 7.400000 57.398609 +6.800000 7.500000 58.658418 +6.800000 7.600000 59.938227 +6.800000 7.700000 61.238036 +6.800000 7.800000 62.557844 +6.800000 7.900000 63.897653 +6.800000 8.000000 65.257462 +6.800000 8.100000 66.637271 +6.800000 8.200000 68.037080 +6.800000 8.300000 69.456889 +6.800000 8.400000 70.896698 +6.800000 8.500000 72.356507 +6.800000 8.600000 73.836316 +6.800000 8.700000 75.336124 +6.800000 8.800000 76.855933 +6.800000 8.900000 78.395742 +6.800000 9.000000 79.955551 +6.800000 9.100000 81.535360 +6.800000 9.200000 83.135169 +6.800000 9.300000 84.754978 +6.800000 9.400000 86.394787 +6.800000 9.500000 88.054595 +6.800000 9.600000 89.734404 +6.800000 9.700000 91.434213 +6.800000 9.800000 93.154022 +6.800000 9.900000 94.893831 +6.800000 10.000000 96.653640 +6.800000 10.100000 98.433449 +6.800000 10.200000 100.233258 +6.800000 10.300000 102.053067 +6.800000 10.400000 103.892875 +6.800000 10.500000 105.752684 +6.800000 10.600000 107.632493 +6.800000 10.700000 109.532302 +6.800000 10.800000 111.452111 +6.800000 10.900000 113.391920 +6.800000 11.000000 115.351729 +6.800000 11.100000 117.331538 +6.800000 11.200000 119.331347 +6.800000 11.300000 121.351155 +6.800000 11.400000 123.390964 +6.800000 11.500000 125.450773 +6.800000 11.600000 127.530582 +6.800000 11.700000 129.630391 +6.800000 11.800000 131.750200 +6.800000 11.900000 133.890009 +6.800000 12.000000 136.049818 +6.800000 12.100000 138.229627 +6.800000 12.200000 140.429435 +6.800000 12.300000 142.649244 +6.800000 12.400000 144.889053 +6.800000 12.500000 147.148862 +6.800000 12.600000 149.428671 +6.800000 12.700000 151.728480 +6.800000 12.800000 154.048289 +6.800000 12.900000 156.388098 +6.800000 13.000000 158.747906 +6.800000 13.100000 161.127715 +6.800000 13.200000 163.527524 +6.800000 13.300000 165.947333 +6.800000 13.400000 168.387142 +6.800000 13.500000 170.846951 +6.800000 13.600000 173.326760 +6.800000 13.700000 175.826569 +6.800000 13.800000 178.346378 +6.800000 13.900000 180.886186 +6.800000 14.000000 183.445995 +6.800000 14.100000 186.025804 +6.800000 14.200000 188.625613 +6.800000 14.300000 191.245422 +6.800000 14.400000 193.885231 +6.800000 14.500000 196.545040 +6.800000 14.600000 199.224849 +6.800000 14.700000 201.924658 +6.800000 14.800000 204.644466 +6.800000 14.900000 207.384275 +6.800000 15.000000 210.144084 + +6.900000 -5.000000 55.886573 +6.900000 -4.900000 54.662816 +6.900000 -4.800000 53.459060 +6.900000 -4.700000 52.275303 +6.900000 -4.600000 51.111546 +6.900000 -4.500000 49.967790 +6.900000 -4.400000 48.844033 +6.900000 -4.300000 47.740276 +6.900000 -4.200000 46.656520 +6.900000 -4.100000 45.592763 +6.900000 -4.000000 44.549006 +6.900000 -3.900000 43.525250 +6.900000 -3.800000 42.521493 +6.900000 -3.700000 41.537736 +6.900000 -3.600000 40.573979 +6.900000 -3.500000 39.630223 +6.900000 -3.400000 38.706466 +6.900000 -3.300000 37.802709 +6.900000 -3.200000 36.918953 +6.900000 -3.100000 36.055196 +6.900000 -3.000000 35.211439 +6.900000 -2.900000 34.387683 +6.900000 -2.800000 33.583926 +6.900000 -2.700000 32.800169 +6.900000 -2.600000 32.036413 +6.900000 -2.500000 31.292656 +6.900000 -2.400000 30.568899 +6.900000 -2.300000 29.865143 +6.900000 -2.200000 29.181386 +6.900000 -2.100000 28.517629 +6.900000 -2.000000 27.873873 +6.900000 -1.900000 27.250116 +6.900000 -1.800000 26.646359 +6.900000 -1.700000 26.062603 +6.900000 -1.600000 25.498846 +6.900000 -1.500000 24.955089 +6.900000 -1.400000 24.431332 +6.900000 -1.300000 23.927576 +6.900000 -1.200000 23.443819 +6.900000 -1.100000 22.980062 +6.900000 -1.000000 22.536306 +6.900000 -0.900000 22.112549 +6.900000 -0.800000 21.708792 +6.900000 -0.700000 21.325036 +6.900000 -0.600000 20.961279 +6.900000 -0.500000 20.617522 +6.900000 -0.400000 20.293766 +6.900000 -0.300000 19.990009 +6.900000 -0.200000 19.706252 +6.900000 -0.100000 19.442496 +6.900000 -0.000000 19.198739 +6.900000 0.100000 18.974982 +6.900000 0.200000 18.771226 +6.900000 0.300000 18.587469 +6.900000 0.400000 18.423712 +6.900000 0.500000 18.279956 +6.900000 0.600000 18.156199 +6.900000 0.700000 18.052442 +6.900000 0.800000 17.968685 +6.900000 0.900000 17.904929 +6.900000 1.000000 17.861172 +6.900000 1.100000 17.837415 +6.900000 1.200000 17.833659 +6.900000 1.300000 17.849902 +6.900000 1.400000 17.886145 +6.900000 1.500000 17.942389 +6.900000 1.600000 18.018632 +6.900000 1.700000 18.114875 +6.900000 1.800000 18.231119 +6.900000 1.900000 18.367362 +6.900000 2.000000 18.523605 +6.900000 2.100000 18.699849 +6.900000 2.200000 18.896092 +6.900000 2.300000 19.112335 +6.900000 2.400000 19.348579 +6.900000 2.500000 19.604822 +6.900000 2.600000 19.881065 +6.900000 2.700000 20.177309 +6.900000 2.800000 20.493552 +6.900000 2.900000 20.829795 +6.900000 3.000000 21.186039 +6.900000 3.100000 21.562282 +6.900000 3.200000 21.958525 +6.900000 3.300000 22.374768 +6.900000 3.400000 22.811012 +6.900000 3.500000 23.267255 +6.900000 3.600000 23.743498 +6.900000 3.700000 24.239742 +6.900000 3.800000 24.755985 +6.900000 3.900000 25.292228 +6.900000 4.000000 25.848472 +6.900000 4.100000 26.424715 +6.900000 4.200000 27.020958 +6.900000 4.300000 27.637202 +6.900000 4.400000 28.273445 +6.900000 4.500000 28.929688 +6.900000 4.600000 29.605932 +6.900000 4.700000 30.302175 +6.900000 4.800000 31.018418 +6.900000 4.900000 31.754662 +6.900000 5.000000 32.510905 +6.900000 5.100000 33.287148 +6.900000 5.200000 34.083392 +6.900000 5.300000 34.899635 +6.900000 5.400000 35.735878 +6.900000 5.500000 36.592121 +6.900000 5.600000 37.468365 +6.900000 5.700000 38.364608 +6.900000 5.800000 39.280851 +6.900000 5.900000 40.217095 +6.900000 6.000000 41.173338 +6.900000 6.100000 42.149581 +6.900000 6.200000 43.145825 +6.900000 6.300000 44.162068 +6.900000 6.400000 45.198311 +6.900000 6.500000 46.254555 +6.900000 6.600000 47.330798 +6.900000 6.700000 48.427041 +6.900000 6.800000 49.543285 +6.900000 6.900000 50.679528 +6.900000 7.000000 51.835771 +6.900000 7.100000 53.012015 +6.900000 7.200000 54.208258 +6.900000 7.300000 55.424501 +6.900000 7.400000 56.660745 +6.900000 7.500000 57.916988 +6.900000 7.600000 59.193231 +6.900000 7.700000 60.489474 +6.900000 7.800000 61.805718 +6.900000 7.900000 63.141961 +6.900000 8.000000 64.498204 +6.900000 8.100000 65.874448 +6.900000 8.200000 67.270691 +6.900000 8.300000 68.686934 +6.900000 8.400000 70.123178 +6.900000 8.500000 71.579421 +6.900000 8.600000 73.055664 +6.900000 8.700000 74.551908 +6.900000 8.800000 76.068151 +6.900000 8.900000 77.604394 +6.900000 9.000000 79.160638 +6.900000 9.100000 80.736881 +6.900000 9.200000 82.333124 +6.900000 9.300000 83.949368 +6.900000 9.400000 85.585611 +6.900000 9.500000 87.241854 +6.900000 9.600000 88.918098 +6.900000 9.700000 90.614341 +6.900000 9.800000 92.330584 +6.900000 9.900000 94.066827 +6.900000 10.000000 95.823071 +6.900000 10.100000 97.599314 +6.900000 10.200000 99.395557 +6.900000 10.300000 101.211801 +6.900000 10.400000 103.048044 +6.900000 10.500000 104.904287 +6.900000 10.600000 106.780531 +6.900000 10.700000 108.676774 +6.900000 10.800000 110.593017 +6.900000 10.900000 112.529261 +6.900000 11.000000 114.485504 +6.900000 11.100000 116.461747 +6.900000 11.200000 118.457991 +6.900000 11.300000 120.474234 +6.900000 11.400000 122.510477 +6.900000 11.500000 124.566721 +6.900000 11.600000 126.642964 +6.900000 11.700000 128.739207 +6.900000 11.800000 130.855451 +6.900000 11.900000 132.991694 +6.900000 12.000000 135.147937 +6.900000 12.100000 137.324180 +6.900000 12.200000 139.520424 +6.900000 12.300000 141.736667 +6.900000 12.400000 143.972910 +6.900000 12.500000 146.229154 +6.900000 12.600000 148.505397 +6.900000 12.700000 150.801640 +6.900000 12.800000 153.117884 +6.900000 12.900000 155.454127 +6.900000 13.000000 157.810370 +6.900000 13.100000 160.186614 +6.900000 13.200000 162.582857 +6.900000 13.300000 164.999100 +6.900000 13.400000 167.435344 +6.900000 13.500000 169.891587 +6.900000 13.600000 172.367830 +6.900000 13.700000 174.864074 +6.900000 13.800000 177.380317 +6.900000 13.900000 179.916560 +6.900000 14.000000 182.472804 +6.900000 14.100000 185.049047 +6.900000 14.200000 187.645290 +6.900000 14.300000 190.261534 +6.900000 14.400000 192.897777 +6.900000 14.500000 195.554020 +6.900000 14.600000 198.230263 +6.900000 14.700000 200.926507 +6.900000 14.800000 203.642750 +6.900000 14.900000 206.378993 +6.900000 15.000000 209.135237 + +7.000000 -5.000000 55.545188 +7.000000 -4.900000 54.317349 +7.000000 -4.800000 53.109510 +7.000000 -4.700000 51.921671 +7.000000 -4.600000 50.753832 +7.000000 -4.500000 49.605993 +7.000000 -4.400000 48.478154 +7.000000 -4.300000 47.370315 +7.000000 -4.200000 46.282476 +7.000000 -4.100000 45.214637 +7.000000 -4.000000 44.166798 +7.000000 -3.900000 43.138959 +7.000000 -3.800000 42.131120 +7.000000 -3.700000 41.143281 +7.000000 -3.600000 40.175442 +7.000000 -3.500000 39.227603 +7.000000 -3.400000 38.299764 +7.000000 -3.300000 37.391926 +7.000000 -3.200000 36.504087 +7.000000 -3.100000 35.636248 +7.000000 -3.000000 34.788409 +7.000000 -2.900000 33.960570 +7.000000 -2.800000 33.152731 +7.000000 -2.700000 32.364892 +7.000000 -2.600000 31.597053 +7.000000 -2.500000 30.849214 +7.000000 -2.400000 30.121375 +7.000000 -2.300000 29.413536 +7.000000 -2.200000 28.725697 +7.000000 -2.100000 28.057858 +7.000000 -2.000000 27.410019 +7.000000 -1.900000 26.782180 +7.000000 -1.800000 26.174341 +7.000000 -1.700000 25.586502 +7.000000 -1.600000 25.018663 +7.000000 -1.500000 24.470824 +7.000000 -1.400000 23.942985 +7.000000 -1.300000 23.435146 +7.000000 -1.200000 22.947307 +7.000000 -1.100000 22.479468 +7.000000 -1.000000 22.031629 +7.000000 -0.900000 21.603790 +7.000000 -0.800000 21.195951 +7.000000 -0.700000 20.808112 +7.000000 -0.600000 20.440273 +7.000000 -0.500000 20.092434 +7.000000 -0.400000 19.764595 +7.000000 -0.300000 19.456756 +7.000000 -0.200000 19.168917 +7.000000 -0.100000 18.901078 +7.000000 -0.000000 18.653239 +7.000000 0.100000 18.425400 +7.000000 0.200000 18.217561 +7.000000 0.300000 18.029722 +7.000000 0.400000 17.861883 +7.000000 0.500000 17.714044 +7.000000 0.600000 17.586205 +7.000000 0.700000 17.478366 +7.000000 0.800000 17.390527 +7.000000 0.900000 17.322688 +7.000000 1.000000 17.274849 +7.000000 1.100000 17.247010 +7.000000 1.200000 17.239171 +7.000000 1.300000 17.251332 +7.000000 1.400000 17.283493 +7.000000 1.500000 17.335654 +7.000000 1.600000 17.407815 +7.000000 1.700000 17.499976 +7.000000 1.800000 17.612137 +7.000000 1.900000 17.744298 +7.000000 2.000000 17.896459 +7.000000 2.100000 18.068620 +7.000000 2.200000 18.260781 +7.000000 2.300000 18.472942 +7.000000 2.400000 18.705103 +7.000000 2.500000 18.957264 +7.000000 2.600000 19.229425 +7.000000 2.700000 19.521586 +7.000000 2.800000 19.833747 +7.000000 2.900000 20.165908 +7.000000 3.000000 20.518069 +7.000000 3.100000 20.890230 +7.000000 3.200000 21.282391 +7.000000 3.300000 21.694552 +7.000000 3.400000 22.126713 +7.000000 3.500000 22.578874 +7.000000 3.600000 23.051035 +7.000000 3.700000 23.543196 +7.000000 3.800000 24.055357 +7.000000 3.900000 24.587518 +7.000000 4.000000 25.139679 +7.000000 4.100000 25.711841 +7.000000 4.200000 26.304002 +7.000000 4.300000 26.916163 +7.000000 4.400000 27.548324 +7.000000 4.500000 28.200485 +7.000000 4.600000 28.872646 +7.000000 4.700000 29.564807 +7.000000 4.800000 30.276968 +7.000000 4.900000 31.009129 +7.000000 5.000000 31.761290 +7.000000 5.100000 32.533451 +7.000000 5.200000 33.325612 +7.000000 5.300000 34.137773 +7.000000 5.400000 34.969934 +7.000000 5.500000 35.822095 +7.000000 5.600000 36.694256 +7.000000 5.700000 37.586417 +7.000000 5.800000 38.498578 +7.000000 5.900000 39.430739 +7.000000 6.000000 40.382900 +7.000000 6.100000 41.355061 +7.000000 6.200000 42.347222 +7.000000 6.300000 43.359383 +7.000000 6.400000 44.391544 +7.000000 6.500000 45.443705 +7.000000 6.600000 46.515866 +7.000000 6.700000 47.608027 +7.000000 6.800000 48.720188 +7.000000 6.900000 49.852349 +7.000000 7.000000 51.004510 +7.000000 7.100000 52.176671 +7.000000 7.200000 53.368832 +7.000000 7.300000 54.580993 +7.000000 7.400000 55.813154 +7.000000 7.500000 57.065315 +7.000000 7.600000 58.337476 +7.000000 7.700000 59.629637 +7.000000 7.800000 60.941798 +7.000000 7.900000 62.273959 +7.000000 8.000000 63.626120 +7.000000 8.100000 64.998281 +7.000000 8.200000 66.390442 +7.000000 8.300000 67.802603 +7.000000 8.400000 69.234764 +7.000000 8.500000 70.686925 +7.000000 8.600000 72.159086 +7.000000 8.700000 73.651247 +7.000000 8.800000 75.163408 +7.000000 8.900000 76.695569 +7.000000 9.000000 78.247730 +7.000000 9.100000 79.819891 +7.000000 9.200000 81.412052 +7.000000 9.300000 83.024213 +7.000000 9.400000 84.656374 +7.000000 9.500000 86.308535 +7.000000 9.600000 87.980696 +7.000000 9.700000 89.672857 +7.000000 9.800000 91.385018 +7.000000 9.900000 93.117179 +7.000000 10.000000 94.869340 +7.000000 10.100000 96.641501 +7.000000 10.200000 98.433662 +7.000000 10.300000 100.245823 +7.000000 10.400000 102.077984 +7.000000 10.500000 103.930145 +7.000000 10.600000 105.802306 +7.000000 10.700000 107.694467 +7.000000 10.800000 109.606628 +7.000000 10.900000 111.538789 +7.000000 11.000000 113.490950 +7.000000 11.100000 115.463111 +7.000000 11.200000 117.455272 +7.000000 11.300000 119.467433 +7.000000 11.400000 121.499595 +7.000000 11.500000 123.551756 +7.000000 11.600000 125.623917 +7.000000 11.700000 127.716078 +7.000000 11.800000 129.828239 +7.000000 11.900000 131.960400 +7.000000 12.000000 134.112561 +7.000000 12.100000 136.284722 +7.000000 12.200000 138.476883 +7.000000 12.300000 140.689044 +7.000000 12.400000 142.921205 +7.000000 12.500000 145.173366 +7.000000 12.600000 147.445527 +7.000000 12.700000 149.737688 +7.000000 12.800000 152.049849 +7.000000 12.900000 154.382010 +7.000000 13.000000 156.734171 +7.000000 13.100000 159.106332 +7.000000 13.200000 161.498493 +7.000000 13.300000 163.910654 +7.000000 13.400000 166.342815 +7.000000 13.500000 168.794976 +7.000000 13.600000 171.267137 +7.000000 13.700000 173.759298 +7.000000 13.800000 176.271459 +7.000000 13.900000 178.803620 +7.000000 14.000000 181.355781 +7.000000 14.100000 183.927942 +7.000000 14.200000 186.520103 +7.000000 14.300000 189.132264 +7.000000 14.400000 191.764425 +7.000000 14.500000 194.416586 +7.000000 14.600000 197.088747 +7.000000 14.700000 199.780908 +7.000000 14.800000 202.493069 +7.000000 14.900000 205.225230 +7.000000 15.000000 207.977391 + +7.100000 -5.000000 55.164401 +7.100000 -4.900000 53.931963 +7.100000 -4.800000 52.719525 +7.100000 -4.700000 51.527087 +7.100000 -4.600000 50.354648 +7.100000 -4.500000 49.202210 +7.100000 -4.400000 48.069772 +7.100000 -4.300000 46.957334 +7.100000 -4.200000 45.864896 +7.100000 -4.100000 44.792458 +7.100000 -4.000000 43.740020 +7.100000 -3.900000 42.707582 +7.100000 -3.800000 41.695144 +7.100000 -3.700000 40.702706 +7.100000 -3.600000 39.730268 +7.100000 -3.500000 38.777830 +7.100000 -3.400000 37.845392 +7.100000 -3.300000 36.932954 +7.100000 -3.200000 36.040516 +7.100000 -3.100000 35.168078 +7.100000 -3.000000 34.315640 +7.100000 -2.900000 33.483202 +7.100000 -2.800000 32.670764 +7.100000 -2.700000 31.878326 +7.100000 -2.600000 31.105888 +7.100000 -2.500000 30.353450 +7.100000 -2.400000 29.621012 +7.100000 -2.300000 28.908574 +7.100000 -2.200000 28.216136 +7.100000 -2.100000 27.543698 +7.100000 -2.000000 26.891260 +7.100000 -1.900000 26.258822 +7.100000 -1.800000 25.646384 +7.100000 -1.700000 25.053946 +7.100000 -1.600000 24.481508 +7.100000 -1.500000 23.929070 +7.100000 -1.400000 23.396632 +7.100000 -1.300000 22.884194 +7.100000 -1.200000 22.391756 +7.100000 -1.100000 21.919317 +7.100000 -1.000000 21.466879 +7.100000 -0.900000 21.034441 +7.100000 -0.800000 20.622003 +7.100000 -0.700000 20.229565 +7.100000 -0.600000 19.857127 +7.100000 -0.500000 19.504689 +7.100000 -0.400000 19.172251 +7.100000 -0.300000 18.859813 +7.100000 -0.200000 18.567375 +7.100000 -0.100000 18.294937 +7.100000 -0.000000 18.042499 +7.100000 0.100000 17.810061 +7.100000 0.200000 17.597623 +7.100000 0.300000 17.405185 +7.100000 0.400000 17.232747 +7.100000 0.500000 17.080309 +7.100000 0.600000 16.947871 +7.100000 0.700000 16.835433 +7.100000 0.800000 16.742995 +7.100000 0.900000 16.670557 +7.100000 1.000000 16.618119 +7.100000 1.100000 16.585681 +7.100000 1.200000 16.573243 +7.100000 1.300000 16.580805 +7.100000 1.400000 16.608367 +7.100000 1.500000 16.655929 +7.100000 1.600000 16.723491 +7.100000 1.700000 16.811053 +7.100000 1.800000 16.918615 +7.100000 1.900000 17.046177 +7.100000 2.000000 17.193739 +7.100000 2.100000 17.361301 +7.100000 2.200000 17.548863 +7.100000 2.300000 17.756424 +7.100000 2.400000 17.983986 +7.100000 2.500000 18.231548 +7.100000 2.600000 18.499110 +7.100000 2.700000 18.786672 +7.100000 2.800000 19.094234 +7.100000 2.900000 19.421796 +7.100000 3.000000 19.769358 +7.100000 3.100000 20.136920 +7.100000 3.200000 20.524482 +7.100000 3.300000 20.932044 +7.100000 3.400000 21.359606 +7.100000 3.500000 21.807168 +7.100000 3.600000 22.274730 +7.100000 3.700000 22.762292 +7.100000 3.800000 23.269854 +7.100000 3.900000 23.797416 +7.100000 4.000000 24.344978 +7.100000 4.100000 24.912540 +7.100000 4.200000 25.500102 +7.100000 4.300000 26.107664 +7.100000 4.400000 26.735226 +7.100000 4.500000 27.382788 +7.100000 4.600000 28.050350 +7.100000 4.700000 28.737912 +7.100000 4.800000 29.445474 +7.100000 4.900000 30.173036 +7.100000 5.000000 30.920598 +7.100000 5.100000 31.688160 +7.100000 5.200000 32.475722 +7.100000 5.300000 33.283284 +7.100000 5.400000 34.110846 +7.100000 5.500000 34.958408 +7.100000 5.600000 35.825970 +7.100000 5.700000 36.713531 +7.100000 5.800000 37.621093 +7.100000 5.900000 38.548655 +7.100000 6.000000 39.496217 +7.100000 6.100000 40.463779 +7.100000 6.200000 41.451341 +7.100000 6.300000 42.458903 +7.100000 6.400000 43.486465 +7.100000 6.500000 44.534027 +7.100000 6.600000 45.601589 +7.100000 6.700000 46.689151 +7.100000 6.800000 47.796713 +7.100000 6.900000 48.924275 +7.100000 7.000000 50.071837 +7.100000 7.100000 51.239399 +7.100000 7.200000 52.426961 +7.100000 7.300000 53.634523 +7.100000 7.400000 54.862085 +7.100000 7.500000 56.109647 +7.100000 7.600000 57.377209 +7.100000 7.700000 58.664771 +7.100000 7.800000 59.972333 +7.100000 7.900000 61.299895 +7.100000 8.000000 62.647457 +7.100000 8.100000 64.015019 +7.100000 8.200000 65.402581 +7.100000 8.300000 66.810143 +7.100000 8.400000 68.237705 +7.100000 8.500000 69.685267 +7.100000 8.600000 71.152829 +7.100000 8.700000 72.640391 +7.100000 8.800000 74.147953 +7.100000 8.900000 75.675515 +7.100000 9.000000 77.223077 +7.100000 9.100000 78.790638 +7.100000 9.200000 80.378200 +7.100000 9.300000 81.985762 +7.100000 9.400000 83.613324 +7.100000 9.500000 85.260886 +7.100000 9.600000 86.928448 +7.100000 9.700000 88.616010 +7.100000 9.800000 90.323572 +7.100000 9.900000 92.051134 +7.100000 10.000000 93.798696 +7.100000 10.100000 95.566258 +7.100000 10.200000 97.353820 +7.100000 10.300000 99.161382 +7.100000 10.400000 100.988944 +7.100000 10.500000 102.836506 +7.100000 10.600000 104.704068 +7.100000 10.700000 106.591630 +7.100000 10.800000 108.499192 +7.100000 10.900000 110.426754 +7.100000 11.000000 112.374316 +7.100000 11.100000 114.341878 +7.100000 11.200000 116.329440 +7.100000 11.300000 118.337002 +7.100000 11.400000 120.364564 +7.100000 11.500000 122.412126 +7.100000 11.600000 124.479688 +7.100000 11.700000 126.567250 +7.100000 11.800000 128.674812 +7.100000 11.900000 130.802374 +7.100000 12.000000 132.949936 +7.100000 12.100000 135.117498 +7.100000 12.200000 137.305060 +7.100000 12.300000 139.512622 +7.100000 12.400000 141.740184 +7.100000 12.500000 143.987745 +7.100000 12.600000 146.255307 +7.100000 12.700000 148.542869 +7.100000 12.800000 150.850431 +7.100000 12.900000 153.177993 +7.100000 13.000000 155.525555 +7.100000 13.100000 157.893117 +7.100000 13.200000 160.280679 +7.100000 13.300000 162.688241 +7.100000 13.400000 165.115803 +7.100000 13.500000 167.563365 +7.100000 13.600000 170.030927 +7.100000 13.700000 172.518489 +7.100000 13.800000 175.026051 +7.100000 13.900000 177.553613 +7.100000 14.000000 180.101175 +7.100000 14.100000 182.668737 +7.100000 14.200000 185.256299 +7.100000 14.300000 187.863861 +7.100000 14.400000 190.491423 +7.100000 14.500000 193.138985 +7.100000 14.600000 195.806547 +7.100000 14.700000 198.494109 +7.100000 14.800000 201.201671 +7.100000 14.900000 203.929233 +7.100000 15.000000 206.676795 + +7.200000 -5.000000 54.751221 +7.200000 -4.900000 53.513667 +7.200000 -4.800000 52.296113 +7.200000 -4.700000 51.098559 +7.200000 -4.600000 49.921005 +7.200000 -4.500000 48.763452 +7.200000 -4.400000 47.625898 +7.200000 -4.300000 46.508344 +7.200000 -4.200000 45.410790 +7.200000 -4.100000 44.333236 +7.200000 -4.000000 43.275682 +7.200000 -3.900000 42.238129 +7.200000 -3.800000 41.220575 +7.200000 -3.700000 40.223021 +7.200000 -3.600000 39.245467 +7.200000 -3.500000 38.287913 +7.200000 -3.400000 37.350360 +7.200000 -3.300000 36.432806 +7.200000 -3.200000 35.535252 +7.200000 -3.100000 34.657698 +7.200000 -3.000000 33.800144 +7.200000 -2.900000 32.962591 +7.200000 -2.800000 32.145037 +7.200000 -2.700000 31.347483 +7.200000 -2.600000 30.569929 +7.200000 -2.500000 29.812375 +7.200000 -2.400000 29.074822 +7.200000 -2.300000 28.357268 +7.200000 -2.200000 27.659714 +7.200000 -2.100000 26.982160 +7.200000 -2.000000 26.324606 +7.200000 -1.900000 25.687052 +7.200000 -1.800000 25.069499 +7.200000 -1.700000 24.471945 +7.200000 -1.600000 23.894391 +7.200000 -1.500000 23.336837 +7.200000 -1.400000 22.799283 +7.200000 -1.300000 22.281730 +7.200000 -1.200000 21.784176 +7.200000 -1.100000 21.306622 +7.200000 -1.000000 20.849068 +7.200000 -0.900000 20.411514 +7.200000 -0.800000 19.993961 +7.200000 -0.700000 19.596407 +7.200000 -0.600000 19.218853 +7.200000 -0.500000 18.861299 +7.200000 -0.400000 18.523745 +7.200000 -0.300000 18.206192 +7.200000 -0.200000 17.908638 +7.200000 -0.100000 17.631084 +7.200000 -0.000000 17.373530 +7.200000 0.100000 17.135976 +7.200000 0.200000 16.918422 +7.200000 0.300000 16.720869 +7.200000 0.400000 16.543315 +7.200000 0.500000 16.385761 +7.200000 0.600000 16.248207 +7.200000 0.700000 16.130653 +7.200000 0.800000 16.033100 +7.200000 0.900000 15.955546 +7.200000 1.000000 15.897992 +7.200000 1.100000 15.860438 +7.200000 1.200000 15.842884 +7.200000 1.300000 15.845331 +7.200000 1.400000 15.867777 +7.200000 1.500000 15.910223 +7.200000 1.600000 15.972669 +7.200000 1.700000 16.055115 +7.200000 1.800000 16.157561 +7.200000 1.900000 16.280008 +7.200000 2.000000 16.422454 +7.200000 2.100000 16.584900 +7.200000 2.200000 16.767346 +7.200000 2.300000 16.969792 +7.200000 2.400000 17.192239 +7.200000 2.500000 17.434685 +7.200000 2.600000 17.697131 +7.200000 2.700000 17.979577 +7.200000 2.800000 18.282023 +7.200000 2.900000 18.604470 +7.200000 3.000000 18.946916 +7.200000 3.100000 19.309362 +7.200000 3.200000 19.691808 +7.200000 3.300000 20.094254 +7.200000 3.400000 20.516701 +7.200000 3.500000 20.959147 +7.200000 3.600000 21.421593 +7.200000 3.700000 21.904039 +7.200000 3.800000 22.406485 +7.200000 3.900000 22.928931 +7.200000 4.000000 23.471378 +7.200000 4.100000 24.033824 +7.200000 4.200000 24.616270 +7.200000 4.300000 25.218716 +7.200000 4.400000 25.841162 +7.200000 4.500000 26.483609 +7.200000 4.600000 27.146055 +7.200000 4.700000 27.828501 +7.200000 4.800000 28.530947 +7.200000 4.900000 29.253393 +7.200000 5.000000 29.995840 +7.200000 5.100000 30.758286 +7.200000 5.200000 31.540732 +7.200000 5.300000 32.343178 +7.200000 5.400000 33.165624 +7.200000 5.500000 34.008071 +7.200000 5.600000 34.870517 +7.200000 5.700000 35.752963 +7.200000 5.800000 36.655409 +7.200000 5.900000 37.577855 +7.200000 6.000000 38.520301 +7.200000 6.100000 39.482748 +7.200000 6.200000 40.465194 +7.200000 6.300000 41.467640 +7.200000 6.400000 42.490086 +7.200000 6.500000 43.532532 +7.200000 6.600000 44.594979 +7.200000 6.700000 45.677425 +7.200000 6.800000 46.779871 +7.200000 6.900000 47.902317 +7.200000 7.000000 49.044763 +7.200000 7.100000 50.207210 +7.200000 7.200000 51.389656 +7.200000 7.300000 52.592102 +7.200000 7.400000 53.814548 +7.200000 7.500000 55.056994 +7.200000 7.600000 56.319440 +7.200000 7.700000 57.601887 +7.200000 7.800000 58.904333 +7.200000 7.900000 60.226779 +7.200000 8.000000 61.569225 +7.200000 8.100000 62.931671 +7.200000 8.200000 64.314118 +7.200000 8.300000 65.716564 +7.200000 8.400000 67.139010 +7.200000 8.500000 68.581456 +7.200000 8.600000 70.043902 +7.200000 8.700000 71.526349 +7.200000 8.800000 73.028795 +7.200000 8.900000 74.551241 +7.200000 9.000000 76.093687 +7.200000 9.100000 77.656133 +7.200000 9.200000 79.238580 +7.200000 9.300000 80.841026 +7.200000 9.400000 82.463472 +7.200000 9.500000 84.105918 +7.200000 9.600000 85.768364 +7.200000 9.700000 87.450810 +7.200000 9.800000 89.153257 +7.200000 9.900000 90.875703 +7.200000 10.000000 92.618149 +7.200000 10.100000 94.380595 +7.200000 10.200000 96.163041 +7.200000 10.300000 97.965488 +7.200000 10.400000 99.787934 +7.200000 10.500000 101.630380 +7.200000 10.600000 103.492826 +7.200000 10.700000 105.375272 +7.200000 10.800000 107.277719 +7.200000 10.900000 109.200165 +7.200000 11.000000 111.142611 +7.200000 11.100000 113.105057 +7.200000 11.200000 115.087503 +7.200000 11.300000 117.089950 +7.200000 11.400000 119.112396 +7.200000 11.500000 121.154842 +7.200000 11.600000 123.217288 +7.200000 11.700000 125.299734 +7.200000 11.800000 127.402180 +7.200000 11.900000 129.524627 +7.200000 12.000000 131.667073 +7.200000 12.100000 133.829519 +7.200000 12.200000 136.011965 +7.200000 12.300000 138.214411 +7.200000 12.400000 140.436858 +7.200000 12.500000 142.679304 +7.200000 12.600000 144.941750 +7.200000 12.700000 147.224196 +7.200000 12.800000 149.526642 +7.200000 12.900000 151.849089 +7.200000 13.000000 154.191535 +7.200000 13.100000 156.553981 +7.200000 13.200000 158.936427 +7.200000 13.300000 161.338873 +7.200000 13.400000 163.761319 +7.200000 13.500000 166.203766 +7.200000 13.600000 168.666212 +7.200000 13.700000 171.148658 +7.200000 13.800000 173.651104 +7.200000 13.900000 176.173550 +7.200000 14.000000 178.715997 +7.200000 14.100000 181.278443 +7.200000 14.200000 183.860889 +7.200000 14.300000 186.463335 +7.200000 14.400000 189.085781 +7.200000 14.500000 191.728228 +7.200000 14.600000 194.390674 +7.200000 14.700000 197.073120 +7.200000 14.800000 199.775566 +7.200000 14.900000 202.498012 +7.200000 15.000000 205.240459 + +7.300000 -5.000000 54.313355 +7.300000 -4.900000 53.070169 +7.300000 -4.800000 51.846982 +7.300000 -4.700000 50.643796 +7.300000 -4.600000 49.460610 +7.300000 -4.500000 48.297423 +7.300000 -4.400000 47.154237 +7.300000 -4.300000 46.031051 +7.300000 -4.200000 44.927864 +7.300000 -4.100000 43.844678 +7.300000 -4.000000 42.781492 +7.300000 -3.900000 41.738305 +7.300000 -3.800000 40.715119 +7.300000 -3.700000 39.711933 +7.300000 -3.600000 38.728746 +7.300000 -3.500000 37.765560 +7.300000 -3.400000 36.822374 +7.300000 -3.300000 35.899187 +7.300000 -3.200000 34.996001 +7.300000 -3.100000 34.112815 +7.300000 -3.000000 33.249628 +7.300000 -2.900000 32.406442 +7.300000 -2.800000 31.583256 +7.300000 -2.700000 30.780069 +7.300000 -2.600000 29.996883 +7.300000 -2.500000 29.233697 +7.300000 -2.400000 28.490510 +7.300000 -2.300000 27.767324 +7.300000 -2.200000 27.064138 +7.300000 -2.100000 26.380951 +7.300000 -2.000000 25.717765 +7.300000 -1.900000 25.074579 +7.300000 -1.800000 24.451392 +7.300000 -1.700000 23.848206 +7.300000 -1.600000 23.265020 +7.300000 -1.500000 22.701833 +7.300000 -1.400000 22.158647 +7.300000 -1.300000 21.635461 +7.300000 -1.200000 21.132274 +7.300000 -1.100000 20.649088 +7.300000 -1.000000 20.185902 +7.300000 -0.900000 19.742715 +7.300000 -0.800000 19.319529 +7.300000 -0.700000 18.916343 +7.300000 -0.600000 18.533156 +7.300000 -0.500000 18.169970 +7.300000 -0.400000 17.826784 +7.300000 -0.300000 17.503598 +7.300000 -0.200000 17.200411 +7.300000 -0.100000 16.917225 +7.300000 -0.000000 16.654039 +7.300000 0.100000 16.410852 +7.300000 0.200000 16.187666 +7.300000 0.300000 15.984480 +7.300000 0.400000 15.801293 +7.300000 0.500000 15.638107 +7.300000 0.600000 15.494921 +7.300000 0.700000 15.371734 +7.300000 0.800000 15.268548 +7.300000 0.900000 15.185362 +7.300000 1.000000 15.122175 +7.300000 1.100000 15.078989 +7.300000 1.200000 15.055803 +7.300000 1.300000 15.052616 +7.300000 1.400000 15.069430 +7.300000 1.500000 15.106244 +7.300000 1.600000 15.163057 +7.300000 1.700000 15.239871 +7.300000 1.800000 15.336685 +7.300000 1.900000 15.453498 +7.300000 2.000000 15.590312 +7.300000 2.100000 15.747126 +7.300000 2.200000 15.923939 +7.300000 2.300000 16.120753 +7.300000 2.400000 16.337567 +7.300000 2.500000 16.574380 +7.300000 2.600000 16.831194 +7.300000 2.700000 17.108008 +7.300000 2.800000 17.404821 +7.300000 2.900000 17.721635 +7.300000 3.000000 18.058449 +7.300000 3.100000 18.415262 +7.300000 3.200000 18.792076 +7.300000 3.300000 19.188890 +7.300000 3.400000 19.605703 +7.300000 3.500000 20.042517 +7.300000 3.600000 20.499331 +7.300000 3.700000 20.976144 +7.300000 3.800000 21.472958 +7.300000 3.900000 21.989772 +7.300000 4.000000 22.526585 +7.300000 4.100000 23.083399 +7.300000 4.200000 23.660213 +7.300000 4.300000 24.257026 +7.300000 4.400000 24.873840 +7.300000 4.500000 25.510654 +7.300000 4.600000 26.167467 +7.300000 4.700000 26.844281 +7.300000 4.800000 27.541095 +7.300000 4.900000 28.257908 +7.300000 5.000000 28.994722 +7.300000 5.100000 29.751536 +7.300000 5.200000 30.528349 +7.300000 5.300000 31.325163 +7.300000 5.400000 32.141977 +7.300000 5.500000 32.978790 +7.300000 5.600000 33.835604 +7.300000 5.700000 34.712418 +7.300000 5.800000 35.609231 +7.300000 5.900000 36.526045 +7.300000 6.000000 37.462859 +7.300000 6.100000 38.419672 +7.300000 6.200000 39.396486 +7.300000 6.300000 40.393300 +7.300000 6.400000 41.410113 +7.300000 6.500000 42.446927 +7.300000 6.600000 43.503741 +7.300000 6.700000 44.580554 +7.300000 6.800000 45.677368 +7.300000 6.900000 46.794182 +7.300000 7.000000 47.930995 +7.300000 7.100000 49.087809 +7.300000 7.200000 50.264623 +7.300000 7.300000 51.461436 +7.300000 7.400000 52.678250 +7.300000 7.500000 53.915064 +7.300000 7.600000 55.171877 +7.300000 7.700000 56.448691 +7.300000 7.800000 57.745505 +7.300000 7.900000 59.062318 +7.300000 8.000000 60.399132 +7.300000 8.100000 61.755946 +7.300000 8.200000 63.132760 +7.300000 8.300000 64.529573 +7.300000 8.400000 65.946387 +7.300000 8.500000 67.383201 +7.300000 8.600000 68.840014 +7.300000 8.700000 70.316828 +7.300000 8.800000 71.813642 +7.300000 8.900000 73.330455 +7.300000 9.000000 74.867269 +7.300000 9.100000 76.424083 +7.300000 9.200000 78.000896 +7.300000 9.300000 79.597710 +7.300000 9.400000 81.214524 +7.300000 9.500000 82.851337 +7.300000 9.600000 84.508151 +7.300000 9.700000 86.184965 +7.300000 9.800000 87.881778 +7.300000 9.900000 89.598592 +7.300000 10.000000 91.335406 +7.300000 10.100000 93.092219 +7.300000 10.200000 94.869033 +7.300000 10.300000 96.665847 +7.300000 10.400000 98.482660 +7.300000 10.500000 100.319474 +7.300000 10.600000 102.176288 +7.300000 10.700000 104.053101 +7.300000 10.800000 105.949915 +7.300000 10.900000 107.866729 +7.300000 11.000000 109.803542 +7.300000 11.100000 111.760356 +7.300000 11.200000 113.737170 +7.300000 11.300000 115.733983 +7.300000 11.400000 117.750797 +7.300000 11.500000 119.787611 +7.300000 11.600000 121.844424 +7.300000 11.700000 123.921238 +7.300000 11.800000 126.018052 +7.300000 11.900000 128.134865 +7.300000 12.000000 130.271679 +7.300000 12.100000 132.428493 +7.300000 12.200000 134.605306 +7.300000 12.300000 136.802120 +7.300000 12.400000 139.018934 +7.300000 12.500000 141.255747 +7.300000 12.600000 143.512561 +7.300000 12.700000 145.789375 +7.300000 12.800000 148.086188 +7.300000 12.900000 150.403002 +7.300000 13.000000 152.739816 +7.300000 13.100000 155.096629 +7.300000 13.200000 157.473443 +7.300000 13.300000 159.870257 +7.300000 13.400000 162.287070 +7.300000 13.500000 164.723884 +7.300000 13.600000 167.180698 +7.300000 13.700000 169.657511 +7.300000 13.800000 172.154325 +7.300000 13.900000 174.671139 +7.300000 14.000000 177.207952 +7.300000 14.100000 179.764766 +7.300000 14.200000 182.341580 +7.300000 14.300000 184.938393 +7.300000 14.400000 187.555207 +7.300000 14.500000 190.192021 +7.300000 14.600000 192.848834 +7.300000 14.700000 195.525648 +7.300000 14.800000 198.222462 +7.300000 14.900000 200.939275 +7.300000 15.000000 203.676089 + +7.400000 -5.000000 53.859134 +7.400000 -4.900000 52.609798 +7.400000 -4.800000 51.380463 +7.400000 -4.700000 50.171127 +7.400000 -4.600000 48.981791 +7.400000 -4.500000 47.812456 +7.400000 -4.400000 46.663120 +7.400000 -4.300000 45.533785 +7.400000 -4.200000 44.424449 +7.400000 -4.100000 43.335114 +7.400000 -4.000000 42.265778 +7.400000 -3.900000 41.216442 +7.400000 -3.800000 40.187107 +7.400000 -3.700000 39.177771 +7.400000 -3.600000 38.188436 +7.400000 -3.500000 37.219100 +7.400000 -3.400000 36.269764 +7.400000 -3.300000 35.340429 +7.400000 -3.200000 34.431093 +7.400000 -3.100000 33.541758 +7.400000 -3.000000 32.672422 +7.400000 -2.900000 31.823087 +7.400000 -2.800000 30.993751 +7.400000 -2.700000 30.184415 +7.400000 -2.600000 29.395080 +7.400000 -2.500000 28.625744 +7.400000 -2.400000 27.876409 +7.400000 -2.300000 27.147073 +7.400000 -2.200000 26.437737 +7.400000 -2.100000 25.748402 +7.400000 -2.000000 25.079066 +7.400000 -1.900000 24.429731 +7.400000 -1.800000 23.800395 +7.400000 -1.700000 23.191059 +7.400000 -1.600000 22.601724 +7.400000 -1.500000 22.032388 +7.400000 -1.400000 21.483053 +7.400000 -1.300000 20.953717 +7.400000 -1.200000 20.444382 +7.400000 -1.100000 19.955046 +7.400000 -1.000000 19.485710 +7.400000 -0.900000 19.036375 +7.400000 -0.800000 18.607039 +7.400000 -0.700000 18.197704 +7.400000 -0.600000 17.808368 +7.400000 -0.500000 17.439032 +7.400000 -0.400000 17.089697 +7.400000 -0.300000 16.760361 +7.400000 -0.200000 16.451026 +7.400000 -0.100000 16.161690 +7.400000 -0.000000 15.892354 +7.400000 0.100000 15.643019 +7.400000 0.200000 15.413683 +7.400000 0.300000 15.204348 +7.400000 0.400000 15.015012 +7.400000 0.500000 14.845677 +7.400000 0.600000 14.696341 +7.400000 0.700000 14.567005 +7.400000 0.800000 14.457670 +7.400000 0.900000 14.368334 +7.400000 1.000000 14.298999 +7.400000 1.100000 14.249663 +7.400000 1.200000 14.220327 +7.400000 1.300000 14.210992 +7.400000 1.400000 14.221656 +7.400000 1.500000 14.252321 +7.400000 1.600000 14.302985 +7.400000 1.700000 14.373650 +7.400000 1.800000 14.464314 +7.400000 1.900000 14.574978 +7.400000 2.000000 14.705643 +7.400000 2.100000 14.856307 +7.400000 2.200000 15.026972 +7.400000 2.300000 15.217636 +7.400000 2.400000 15.428300 +7.400000 2.500000 15.658965 +7.400000 2.600000 15.909629 +7.400000 2.700000 16.180294 +7.400000 2.800000 16.470958 +7.400000 2.900000 16.781622 +7.400000 3.000000 17.112287 +7.400000 3.100000 17.462951 +7.400000 3.200000 17.833616 +7.400000 3.300000 18.224280 +7.400000 3.400000 18.634945 +7.400000 3.500000 19.065609 +7.400000 3.600000 19.516273 +7.400000 3.700000 19.986938 +7.400000 3.800000 20.477602 +7.400000 3.900000 20.988267 +7.400000 4.000000 21.518931 +7.400000 4.100000 22.069595 +7.400000 4.200000 22.640260 +7.400000 4.300000 23.230924 +7.400000 4.400000 23.841589 +7.400000 4.500000 24.472253 +7.400000 4.600000 25.122918 +7.400000 4.700000 25.793582 +7.400000 4.800000 26.484246 +7.400000 4.900000 27.194911 +7.400000 5.000000 27.925575 +7.400000 5.100000 28.676240 +7.400000 5.200000 29.446904 +7.400000 5.300000 30.237568 +7.400000 5.400000 31.048233 +7.400000 5.500000 31.878897 +7.400000 5.600000 32.729562 +7.400000 5.700000 33.600226 +7.400000 5.800000 34.490890 +7.400000 5.900000 35.401555 +7.400000 6.000000 36.332219 +7.400000 6.100000 37.282884 +7.400000 6.200000 38.253548 +7.400000 6.300000 39.244213 +7.400000 6.400000 40.254877 +7.400000 6.500000 41.285541 +7.400000 6.600000 42.336206 +7.400000 6.700000 43.406870 +7.400000 6.800000 44.497535 +7.400000 6.900000 45.608199 +7.400000 7.000000 46.738863 +7.400000 7.100000 47.889528 +7.400000 7.200000 49.060192 +7.400000 7.300000 50.250857 +7.400000 7.400000 51.461521 +7.400000 7.500000 52.692186 +7.400000 7.600000 53.942850 +7.400000 7.700000 55.213514 +7.400000 7.800000 56.504179 +7.400000 7.900000 57.814843 +7.400000 8.000000 59.145508 +7.400000 8.100000 60.496172 +7.400000 8.200000 61.866836 +7.400000 8.300000 63.257501 +7.400000 8.400000 64.668165 +7.400000 8.500000 66.098830 +7.400000 8.600000 67.549494 +7.400000 8.700000 69.020158 +7.400000 8.800000 70.510823 +7.400000 8.900000 72.021487 +7.400000 9.000000 73.552152 +7.400000 9.100000 75.102816 +7.400000 9.200000 76.673481 +7.400000 9.300000 78.264145 +7.400000 9.400000 79.874809 +7.400000 9.500000 81.505474 +7.400000 9.600000 83.156138 +7.400000 9.700000 84.826803 +7.400000 9.800000 86.517467 +7.400000 9.900000 88.228131 +7.400000 10.000000 89.958796 +7.400000 10.100000 91.709460 +7.400000 10.200000 93.480125 +7.400000 10.300000 95.270789 +7.400000 10.400000 97.081454 +7.400000 10.500000 98.912118 +7.400000 10.600000 100.762782 +7.400000 10.700000 102.633447 +7.400000 10.800000 104.524111 +7.400000 10.900000 106.434776 +7.400000 11.000000 108.365440 +7.400000 11.100000 110.316104 +7.400000 11.200000 112.286769 +7.400000 11.300000 114.277433 +7.400000 11.400000 116.288098 +7.400000 11.500000 118.318762 +7.400000 11.600000 120.369426 +7.400000 11.700000 122.440091 +7.400000 11.800000 124.530755 +7.400000 11.900000 126.641420 +7.400000 12.000000 128.772084 +7.400000 12.100000 130.922749 +7.400000 12.200000 133.093413 +7.400000 12.300000 135.284077 +7.400000 12.400000 137.494742 +7.400000 12.500000 139.725406 +7.400000 12.600000 141.976071 +7.400000 12.700000 144.246735 +7.400000 12.800000 146.537399 +7.400000 12.900000 148.848064 +7.400000 13.000000 151.178728 +7.400000 13.100000 153.529393 +7.400000 13.200000 155.900057 +7.400000 13.300000 158.290722 +7.400000 13.400000 160.701386 +7.400000 13.500000 163.132050 +7.400000 13.600000 165.582715 +7.400000 13.700000 168.053379 +7.400000 13.800000 170.544044 +7.400000 13.900000 173.054708 +7.400000 14.000000 175.585372 +7.400000 14.100000 178.136037 +7.400000 14.200000 180.706701 +7.400000 14.300000 183.297366 +7.400000 14.400000 185.908030 +7.400000 14.500000 188.538694 +7.400000 14.600000 191.189359 +7.400000 14.700000 193.860023 +7.400000 14.800000 196.550688 +7.400000 14.900000 199.261352 +7.400000 15.000000 201.992017 + +7.500000 -5.000000 53.397431 +7.500000 -4.900000 52.141430 +7.500000 -4.800000 50.905428 +7.500000 -4.700000 49.689427 +7.500000 -4.600000 48.493425 +7.500000 -4.500000 47.317424 +7.500000 -4.400000 46.161422 +7.500000 -4.300000 45.025420 +7.500000 -4.200000 43.909419 +7.500000 -4.100000 42.813417 +7.500000 -4.000000 41.737416 +7.500000 -3.900000 40.681414 +7.500000 -3.800000 39.645412 +7.500000 -3.700000 38.629411 +7.500000 -3.600000 37.633409 +7.500000 -3.500000 36.657408 +7.500000 -3.400000 35.701406 +7.500000 -3.300000 34.765405 +7.500000 -3.200000 33.849403 +7.500000 -3.100000 32.953401 +7.500000 -3.000000 32.077400 +7.500000 -2.900000 31.221398 +7.500000 -2.800000 30.385397 +7.500000 -2.700000 29.569395 +7.500000 -2.600000 28.773394 +7.500000 -2.500000 27.997392 +7.500000 -2.400000 27.241390 +7.500000 -2.300000 26.505389 +7.500000 -2.200000 25.789387 +7.500000 -2.100000 25.093386 +7.500000 -2.000000 24.417384 +7.500000 -1.900000 23.761382 +7.500000 -1.800000 23.125381 +7.500000 -1.700000 22.509379 +7.500000 -1.600000 21.913378 +7.500000 -1.500000 21.337376 +7.500000 -1.400000 20.781375 +7.500000 -1.300000 20.245373 +7.500000 -1.200000 19.729371 +7.500000 -1.100000 19.233370 +7.500000 -1.000000 18.757368 +7.500000 -0.900000 18.301367 +7.500000 -0.800000 17.865365 +7.500000 -0.700000 17.449363 +7.500000 -0.600000 17.053362 +7.500000 -0.500000 16.677360 +7.500000 -0.400000 16.321359 +7.500000 -0.300000 15.985357 +7.500000 -0.200000 15.669356 +7.500000 -0.100000 15.373354 +7.500000 -0.000000 15.097352 +7.500000 0.100000 14.841351 +7.500000 0.200000 14.605349 +7.500000 0.300000 14.389348 +7.500000 0.400000 14.193346 +7.500000 0.500000 14.017344 +7.500000 0.600000 13.861343 +7.500000 0.700000 13.725341 +7.500000 0.800000 13.609340 +7.500000 0.900000 13.513338 +7.500000 1.000000 13.437337 +7.500000 1.100000 13.381335 +7.500000 1.200000 13.345333 +7.500000 1.300000 13.329332 +7.500000 1.400000 13.333330 +7.500000 1.500000 13.357329 +7.500000 1.600000 13.401327 +7.500000 1.700000 13.465326 +7.500000 1.800000 13.549324 +7.500000 1.900000 13.653322 +7.500000 2.000000 13.777321 +7.500000 2.100000 13.921319 +7.500000 2.200000 14.085318 +7.500000 2.300000 14.269316 +7.500000 2.400000 14.473314 +7.500000 2.500000 14.697313 +7.500000 2.600000 14.941311 +7.500000 2.700000 15.205310 +7.500000 2.800000 15.489308 +7.500000 2.900000 15.793307 +7.500000 3.000000 16.117305 +7.500000 3.100000 16.461303 +7.500000 3.200000 16.825302 +7.500000 3.300000 17.209300 +7.500000 3.400000 17.613299 +7.500000 3.500000 18.037297 +7.500000 3.600000 18.481295 +7.500000 3.700000 18.945294 +7.500000 3.800000 19.429292 +7.500000 3.900000 19.933291 +7.500000 4.000000 20.457289 +7.500000 4.100000 21.001288 +7.500000 4.200000 21.565286 +7.500000 4.300000 22.149284 +7.500000 4.400000 22.753283 +7.500000 4.500000 23.377281 +7.500000 4.600000 24.021280 +7.500000 4.700000 24.685278 +7.500000 4.800000 25.369276 +7.500000 4.900000 26.073275 +7.500000 5.000000 26.797273 +7.500000 5.100000 27.541272 +7.500000 5.200000 28.305270 +7.500000 5.300000 29.089269 +7.500000 5.400000 29.893267 +7.500000 5.500000 30.717265 +7.500000 5.600000 31.561264 +7.500000 5.700000 32.425262 +7.500000 5.800000 33.309261 +7.500000 5.900000 34.213259 +7.500000 6.000000 35.137258 +7.500000 6.100000 36.081256 +7.500000 6.200000 37.045254 +7.500000 6.300000 38.029253 +7.500000 6.400000 39.033251 +7.500000 6.500000 40.057250 +7.500000 6.600000 41.101248 +7.500000 6.700000 42.165246 +7.500000 6.800000 43.249245 +7.500000 6.900000 44.353243 +7.500000 7.000000 45.477242 +7.500000 7.100000 46.621240 +7.500000 7.200000 47.785239 +7.500000 7.300000 48.969237 +7.500000 7.400000 50.173235 +7.500000 7.500000 51.397234 +7.500000 7.600000 52.641232 +7.500000 7.700000 53.905231 +7.500000 7.800000 55.189229 +7.500000 7.900000 56.493227 +7.500000 8.000000 57.817226 +7.500000 8.100000 59.161224 +7.500000 8.200000 60.525223 +7.500000 8.300000 61.909221 +7.500000 8.400000 63.313220 +7.500000 8.500000 64.737218 +7.500000 8.600000 66.181216 +7.500000 8.700000 67.645215 +7.500000 8.800000 69.129213 +7.500000 8.900000 70.633212 +7.500000 9.000000 72.157210 +7.500000 9.100000 73.701208 +7.500000 9.200000 75.265207 +7.500000 9.300000 76.849205 +7.500000 9.400000 78.453204 +7.500000 9.500000 80.077202 +7.500000 9.600000 81.721201 +7.500000 9.700000 83.385199 +7.500000 9.800000 85.069197 +7.500000 9.900000 86.773196 +7.500000 10.000000 88.497194 +7.500000 10.100000 90.241193 +7.500000 10.200000 92.005191 +7.500000 10.300000 93.789190 +7.500000 10.400000 95.593188 +7.500000 10.500000 97.417186 +7.500000 10.600000 99.261185 +7.500000 10.700000 101.125183 +7.500000 10.800000 103.009182 +7.500000 10.900000 104.913180 +7.500000 11.000000 106.837178 +7.500000 11.100000 108.781177 +7.500000 11.200000 110.745175 +7.500000 11.300000 112.729174 +7.500000 11.400000 114.733172 +7.500000 11.500000 116.757171 +7.500000 11.600000 118.801169 +7.500000 11.700000 120.865167 +7.500000 11.800000 122.949166 +7.500000 11.900000 125.053164 +7.500000 12.000000 127.177163 +7.500000 12.100000 129.321161 +7.500000 12.200000 131.485159 +7.500000 12.300000 133.669158 +7.500000 12.400000 135.873156 +7.500000 12.500000 138.097155 +7.500000 12.600000 140.341153 +7.500000 12.700000 142.605152 +7.500000 12.800000 144.889150 +7.500000 12.900000 147.193148 +7.500000 13.000000 149.517147 +7.500000 13.100000 151.861145 +7.500000 13.200000 154.225144 +7.500000 13.300000 156.609142 +7.500000 13.400000 159.013140 +7.500000 13.500000 161.437139 +7.500000 13.600000 163.881137 +7.500000 13.700000 166.345136 +7.500000 13.800000 168.829134 +7.500000 13.900000 171.333133 +7.500000 14.000000 173.857131 +7.500000 14.100000 176.401129 +7.500000 14.200000 178.965128 +7.500000 14.300000 181.549126 +7.500000 14.400000 184.153125 +7.500000 14.500000 186.777123 +7.500000 14.600000 189.421122 +7.500000 14.700000 192.085120 +7.500000 14.800000 194.769118 +7.500000 14.900000 197.473117 +7.500000 15.000000 200.197115 + +7.600000 -5.000000 52.937583 +7.600000 -4.900000 51.674398 +7.600000 -4.800000 50.431214 +7.600000 -4.700000 49.208030 +7.600000 -4.600000 48.004846 +7.600000 -4.500000 46.821661 +7.600000 -4.400000 45.658477 +7.600000 -4.300000 44.515293 +7.600000 -4.200000 43.392108 +7.600000 -4.100000 42.288924 +7.600000 -4.000000 41.205740 +7.600000 -3.900000 40.142555 +7.600000 -3.800000 39.099371 +7.600000 -3.700000 38.076187 +7.600000 -3.600000 37.073002 +7.600000 -3.500000 36.089818 +7.600000 -3.400000 35.126634 +7.600000 -3.300000 34.183449 +7.600000 -3.200000 33.260265 +7.600000 -3.100000 32.357081 +7.600000 -3.000000 31.473896 +7.600000 -2.900000 30.610712 +7.600000 -2.800000 29.767528 +7.600000 -2.700000 28.944344 +7.600000 -2.600000 28.141159 +7.600000 -2.500000 27.357975 +7.600000 -2.400000 26.594791 +7.600000 -2.300000 25.851606 +7.600000 -2.200000 25.128422 +7.600000 -2.100000 24.425238 +7.600000 -2.000000 23.742053 +7.600000 -1.900000 23.078869 +7.600000 -1.800000 22.435685 +7.600000 -1.700000 21.812500 +7.600000 -1.600000 21.209316 +7.600000 -1.500000 20.626132 +7.600000 -1.400000 20.062947 +7.600000 -1.300000 19.519763 +7.600000 -1.200000 18.996579 +7.600000 -1.100000 18.493395 +7.600000 -1.000000 18.010210 +7.600000 -0.900000 17.547026 +7.600000 -0.800000 17.103842 +7.600000 -0.700000 16.680657 +7.600000 -0.600000 16.277473 +7.600000 -0.500000 15.894289 +7.600000 -0.400000 15.531104 +7.600000 -0.300000 15.187920 +7.600000 -0.200000 14.864736 +7.600000 -0.100000 14.561551 +7.600000 -0.000000 14.278367 +7.600000 0.100000 14.015183 +7.600000 0.200000 13.771998 +7.600000 0.300000 13.548814 +7.600000 0.400000 13.345630 +7.600000 0.500000 13.162445 +7.600000 0.600000 12.999261 +7.600000 0.700000 12.856077 +7.600000 0.800000 12.732893 +7.600000 0.900000 12.629708 +7.600000 1.000000 12.546524 +7.600000 1.100000 12.483340 +7.600000 1.200000 12.440155 +7.600000 1.300000 12.416971 +7.600000 1.400000 12.413787 +7.600000 1.500000 12.430602 +7.600000 1.600000 12.467418 +7.600000 1.700000 12.524234 +7.600000 1.800000 12.601049 +7.600000 1.900000 12.697865 +7.600000 2.000000 12.814681 +7.600000 2.100000 12.951496 +7.600000 2.200000 13.108312 +7.600000 2.300000 13.285128 +7.600000 2.400000 13.481944 +7.600000 2.500000 13.698759 +7.600000 2.600000 13.935575 +7.600000 2.700000 14.192391 +7.600000 2.800000 14.469206 +7.600000 2.900000 14.766022 +7.600000 3.000000 15.082838 +7.600000 3.100000 15.419653 +7.600000 3.200000 15.776469 +7.600000 3.300000 16.153285 +7.600000 3.400000 16.550100 +7.600000 3.500000 16.966916 +7.600000 3.600000 17.403732 +7.600000 3.700000 17.860547 +7.600000 3.800000 18.337363 +7.600000 3.900000 18.834179 +7.600000 4.000000 19.350994 +7.600000 4.100000 19.887810 +7.600000 4.200000 20.444626 +7.600000 4.300000 21.021442 +7.600000 4.400000 21.618257 +7.600000 4.500000 22.235073 +7.600000 4.600000 22.871889 +7.600000 4.700000 23.528704 +7.600000 4.800000 24.205520 +7.600000 4.900000 24.902336 +7.600000 5.000000 25.619151 +7.600000 5.100000 26.355967 +7.600000 5.200000 27.112783 +7.600000 5.300000 27.889598 +7.600000 5.400000 28.686414 +7.600000 5.500000 29.503230 +7.600000 5.600000 30.340045 +7.600000 5.700000 31.196861 +7.600000 5.800000 32.073677 +7.600000 5.900000 32.970492 +7.600000 6.000000 33.887308 +7.600000 6.100000 34.824124 +7.600000 6.200000 35.780940 +7.600000 6.300000 36.757755 +7.600000 6.400000 37.754571 +7.600000 6.500000 38.771387 +7.600000 6.600000 39.808202 +7.600000 6.700000 40.865018 +7.600000 6.800000 41.941834 +7.600000 6.900000 43.038649 +7.600000 7.000000 44.155465 +7.600000 7.100000 45.292281 +7.600000 7.200000 46.449096 +7.600000 7.300000 47.625912 +7.600000 7.400000 48.822728 +7.600000 7.500000 50.039543 +7.600000 7.600000 51.276359 +7.600000 7.700000 52.533175 +7.600000 7.800000 53.809991 +7.600000 7.900000 55.106806 +7.600000 8.000000 56.423622 +7.600000 8.100000 57.760438 +7.600000 8.200000 59.117253 +7.600000 8.300000 60.494069 +7.600000 8.400000 61.890885 +7.600000 8.500000 63.307700 +7.600000 8.600000 64.744516 +7.600000 8.700000 66.201332 +7.600000 8.800000 67.678147 +7.600000 8.900000 69.174963 +7.600000 9.000000 70.691779 +7.600000 9.100000 72.228594 +7.600000 9.200000 73.785410 +7.600000 9.300000 75.362226 +7.600000 9.400000 76.959041 +7.600000 9.500000 78.575857 +7.600000 9.600000 80.212673 +7.600000 9.700000 81.869489 +7.600000 9.800000 83.546304 +7.600000 9.900000 85.243120 +7.600000 10.000000 86.959936 +7.600000 10.100000 88.696751 +7.600000 10.200000 90.453567 +7.600000 10.300000 92.230383 +7.600000 10.400000 94.027198 +7.600000 10.500000 95.844014 +7.600000 10.600000 97.680830 +7.600000 10.700000 99.537645 +7.600000 10.800000 101.414461 +7.600000 10.900000 103.311277 +7.600000 11.000000 105.228092 +7.600000 11.100000 107.164908 +7.600000 11.200000 109.121724 +7.600000 11.300000 111.098540 +7.600000 11.400000 113.095355 +7.600000 11.500000 115.112171 +7.600000 11.600000 117.148987 +7.600000 11.700000 119.205802 +7.600000 11.800000 121.282618 +7.600000 11.900000 123.379434 +7.600000 12.000000 125.496249 +7.600000 12.100000 127.633065 +7.600000 12.200000 129.789881 +7.600000 12.300000 131.966696 +7.600000 12.400000 134.163512 +7.600000 12.500000 136.380328 +7.600000 12.600000 138.617143 +7.600000 12.700000 140.873959 +7.600000 12.800000 143.150775 +7.600000 12.900000 145.447590 +7.600000 13.000000 147.764406 +7.600000 13.100000 150.101222 +7.600000 13.200000 152.458038 +7.600000 13.300000 154.834853 +7.600000 13.400000 157.231669 +7.600000 13.500000 159.648485 +7.600000 13.600000 162.085300 +7.600000 13.700000 164.542116 +7.600000 13.800000 167.018932 +7.600000 13.900000 169.515747 +7.600000 14.000000 172.032563 +7.600000 14.100000 174.569379 +7.600000 14.200000 177.126194 +7.600000 14.300000 179.703010 +7.600000 14.400000 182.299826 +7.600000 14.500000 184.916641 +7.600000 14.600000 187.553457 +7.600000 14.700000 190.210273 +7.600000 14.800000 192.887088 +7.600000 14.900000 195.583904 +7.600000 15.000000 198.300720 + +7.700000 -5.000000 52.489295 +7.700000 -4.900000 51.218411 +7.700000 -4.800000 49.967527 +7.700000 -4.700000 48.736644 +7.700000 -4.600000 47.525760 +7.700000 -4.500000 46.334876 +7.700000 -4.400000 45.163992 +7.700000 -4.300000 44.013108 +7.700000 -4.200000 42.882225 +7.700000 -4.100000 41.771341 +7.700000 -4.000000 40.680457 +7.700000 -3.900000 39.609573 +7.700000 -3.800000 38.558689 +7.700000 -3.700000 37.527806 +7.700000 -3.600000 36.516922 +7.700000 -3.500000 35.526038 +7.700000 -3.400000 34.555154 +7.700000 -3.300000 33.604271 +7.700000 -3.200000 32.673387 +7.700000 -3.100000 31.762503 +7.700000 -3.000000 30.871619 +7.700000 -2.900000 30.000735 +7.700000 -2.800000 29.149852 +7.700000 -2.700000 28.318968 +7.700000 -2.600000 27.508084 +7.700000 -2.500000 26.717200 +7.700000 -2.400000 25.946316 +7.700000 -2.300000 25.195433 +7.700000 -2.200000 24.464549 +7.700000 -2.100000 23.753665 +7.700000 -2.000000 23.062781 +7.700000 -1.900000 22.391898 +7.700000 -1.800000 21.741014 +7.700000 -1.700000 21.110130 +7.700000 -1.600000 20.499246 +7.700000 -1.500000 19.908362 +7.700000 -1.400000 19.337479 +7.700000 -1.300000 18.786595 +7.700000 -1.200000 18.255711 +7.700000 -1.100000 17.744827 +7.700000 -1.000000 17.253943 +7.700000 -0.900000 16.783060 +7.700000 -0.800000 16.332176 +7.700000 -0.700000 15.901292 +7.700000 -0.600000 15.490408 +7.700000 -0.500000 15.099525 +7.700000 -0.400000 14.728641 +7.700000 -0.300000 14.377757 +7.700000 -0.200000 14.046873 +7.700000 -0.100000 13.735989 +7.700000 -0.000000 13.445106 +7.700000 0.100000 13.174222 +7.700000 0.200000 12.923338 +7.700000 0.300000 12.692454 +7.700000 0.400000 12.481570 +7.700000 0.500000 12.290687 +7.700000 0.600000 12.119803 +7.700000 0.700000 11.968919 +7.700000 0.800000 11.838035 +7.700000 0.900000 11.727152 +7.700000 1.000000 11.636268 +7.700000 1.100000 11.565384 +7.700000 1.200000 11.514500 +7.700000 1.300000 11.483616 +7.700000 1.400000 11.472733 +7.700000 1.500000 11.481849 +7.700000 1.600000 11.510965 +7.700000 1.700000 11.560081 +7.700000 1.800000 11.629197 +7.700000 1.900000 11.718314 +7.700000 2.000000 11.827430 +7.700000 2.100000 11.956546 +7.700000 2.200000 12.105662 +7.700000 2.300000 12.274779 +7.700000 2.400000 12.463895 +7.700000 2.500000 12.673011 +7.700000 2.600000 12.902127 +7.700000 2.700000 13.151243 +7.700000 2.800000 13.420360 +7.700000 2.900000 13.709476 +7.700000 3.000000 14.018592 +7.700000 3.100000 14.347708 +7.700000 3.200000 14.696824 +7.700000 3.300000 15.065941 +7.700000 3.400000 15.455057 +7.700000 3.500000 15.864173 +7.700000 3.600000 16.293289 +7.700000 3.700000 16.742406 +7.700000 3.800000 17.211522 +7.700000 3.900000 17.700638 +7.700000 4.000000 18.209754 +7.700000 4.100000 18.738870 +7.700000 4.200000 19.287987 +7.700000 4.300000 19.857103 +7.700000 4.400000 20.446219 +7.700000 4.500000 21.055335 +7.700000 4.600000 21.684451 +7.700000 4.700000 22.333568 +7.700000 4.800000 23.002684 +7.700000 4.900000 23.691800 +7.700000 5.000000 24.400916 +7.700000 5.100000 25.130033 +7.700000 5.200000 25.879149 +7.700000 5.300000 26.648265 +7.700000 5.400000 27.437381 +7.700000 5.500000 28.246497 +7.700000 5.600000 29.075614 +7.700000 5.700000 29.924730 +7.700000 5.800000 30.793846 +7.700000 5.900000 31.682962 +7.700000 6.000000 32.592078 +7.700000 6.100000 33.521195 +7.700000 6.200000 34.470311 +7.700000 6.300000 35.439427 +7.700000 6.400000 36.428543 +7.700000 6.500000 37.437660 +7.700000 6.600000 38.466776 +7.700000 6.700000 39.515892 +7.700000 6.800000 40.585008 +7.700000 6.900000 41.674124 +7.700000 7.000000 42.783241 +7.700000 7.100000 43.912357 +7.700000 7.200000 45.061473 +7.700000 7.300000 46.230589 +7.700000 7.400000 47.419705 +7.700000 7.500000 48.628822 +7.700000 7.600000 49.857938 +7.700000 7.700000 51.107054 +7.700000 7.800000 52.376170 +7.700000 7.900000 53.665287 +7.700000 8.000000 54.974403 +7.700000 8.100000 56.303519 +7.700000 8.200000 57.652635 +7.700000 8.300000 59.021751 +7.700000 8.400000 60.410868 +7.700000 8.500000 61.819984 +7.700000 8.600000 63.249100 +7.700000 8.700000 64.698216 +7.700000 8.800000 66.167332 +7.700000 8.900000 67.656449 +7.700000 9.000000 69.165565 +7.700000 9.100000 70.694681 +7.700000 9.200000 72.243797 +7.700000 9.300000 73.812914 +7.700000 9.400000 75.402030 +7.700000 9.500000 77.011146 +7.700000 9.600000 78.640262 +7.700000 9.700000 80.289378 +7.700000 9.800000 81.958495 +7.700000 9.900000 83.647611 +7.700000 10.000000 85.356727 +7.700000 10.100000 87.085843 +7.700000 10.200000 88.834959 +7.700000 10.300000 90.604076 +7.700000 10.400000 92.393192 +7.700000 10.500000 94.202308 +7.700000 10.600000 96.031424 +7.700000 10.700000 97.880541 +7.700000 10.800000 99.749657 +7.700000 10.900000 101.638773 +7.700000 11.000000 103.547889 +7.700000 11.100000 105.477005 +7.700000 11.200000 107.426122 +7.700000 11.300000 109.395238 +7.700000 11.400000 111.384354 +7.700000 11.500000 113.393470 +7.700000 11.600000 115.422586 +7.700000 11.700000 117.471703 +7.700000 11.800000 119.540819 +7.700000 11.900000 121.629935 +7.700000 12.000000 123.739051 +7.700000 12.100000 125.868168 +7.700000 12.200000 128.017284 +7.700000 12.300000 130.186400 +7.700000 12.400000 132.375516 +7.700000 12.500000 134.584632 +7.700000 12.600000 136.813749 +7.700000 12.700000 139.062865 +7.700000 12.800000 141.331981 +7.700000 12.900000 143.621097 +7.700000 13.000000 145.930213 +7.700000 13.100000 148.259330 +7.700000 13.200000 150.608446 +7.700000 13.300000 152.977562 +7.700000 13.400000 155.366678 +7.700000 13.500000 157.775795 +7.700000 13.600000 160.204911 +7.700000 13.700000 162.654027 +7.700000 13.800000 165.123143 +7.700000 13.900000 167.612259 +7.700000 14.000000 170.121376 +7.700000 14.100000 172.650492 +7.700000 14.200000 175.199608 +7.700000 14.300000 177.768724 +7.700000 14.400000 180.357840 +7.700000 14.500000 182.966957 +7.700000 14.600000 185.596073 +7.700000 14.700000 188.245189 +7.700000 14.800000 190.914305 +7.700000 14.900000 193.603422 +7.700000 15.000000 196.312538 + +7.800000 -5.000000 52.062556 +7.800000 -4.900000 50.783456 +7.800000 -4.800000 49.524356 +7.800000 -4.700000 48.285256 +7.800000 -4.600000 47.066156 +7.800000 -4.500000 45.867056 +7.800000 -4.400000 44.687956 +7.800000 -4.300000 43.528856 +7.800000 -4.200000 42.389756 +7.800000 -4.100000 41.270656 +7.800000 -4.000000 40.171556 +7.800000 -3.900000 39.092456 +7.800000 -3.800000 38.033356 +7.800000 -3.700000 36.994256 +7.800000 -3.600000 35.975156 +7.800000 -3.500000 34.976056 +7.800000 -3.400000 33.996956 +7.800000 -3.300000 33.037856 +7.800000 -3.200000 32.098756 +7.800000 -3.100000 31.179656 +7.800000 -3.000000 30.280556 +7.800000 -2.900000 29.401456 +7.800000 -2.800000 28.542356 +7.800000 -2.700000 27.703256 +7.800000 -2.600000 26.884156 +7.800000 -2.500000 26.085056 +7.800000 -2.400000 25.305956 +7.800000 -2.300000 24.546856 +7.800000 -2.200000 23.807756 +7.800000 -2.100000 23.088656 +7.800000 -2.000000 22.389556 +7.800000 -1.900000 21.710456 +7.800000 -1.800000 21.051356 +7.800000 -1.700000 20.412256 +7.800000 -1.600000 19.793156 +7.800000 -1.500000 19.194056 +7.800000 -1.400000 18.614956 +7.800000 -1.300000 18.055856 +7.800000 -1.200000 17.516756 +7.800000 -1.100000 16.997656 +7.800000 -1.000000 16.498556 +7.800000 -0.900000 16.019456 +7.800000 -0.800000 15.560356 +7.800000 -0.700000 15.121256 +7.800000 -0.600000 14.702156 +7.800000 -0.500000 14.303056 +7.800000 -0.400000 13.923956 +7.800000 -0.300000 13.564856 +7.800000 -0.200000 13.225756 +7.800000 -0.100000 12.906656 +7.800000 -0.000000 12.607556 +7.800000 0.100000 12.328456 +7.800000 0.200000 12.069356 +7.800000 0.300000 11.830256 +7.800000 0.400000 11.611156 +7.800000 0.500000 11.412056 +7.800000 0.600000 11.232956 +7.800000 0.700000 11.073856 +7.800000 0.800000 10.934756 +7.800000 0.900000 10.815656 +7.800000 1.000000 10.716556 +7.800000 1.100000 10.637456 +7.800000 1.200000 10.578356 +7.800000 1.300000 10.539256 +7.800000 1.400000 10.520156 +7.800000 1.500000 10.521056 +7.800000 1.600000 10.541956 +7.800000 1.700000 10.582856 +7.800000 1.800000 10.643756 +7.800000 1.900000 10.724656 +7.800000 2.000000 10.825556 +7.800000 2.100000 10.946456 +7.800000 2.200000 11.087356 +7.800000 2.300000 11.248256 +7.800000 2.400000 11.429156 +7.800000 2.500000 11.630056 +7.800000 2.600000 11.850956 +7.800000 2.700000 12.091856 +7.800000 2.800000 12.352756 +7.800000 2.900000 12.633656 +7.800000 3.000000 12.934556 +7.800000 3.100000 13.255456 +7.800000 3.200000 13.596356 +7.800000 3.300000 13.957256 +7.800000 3.400000 14.338156 +7.800000 3.500000 14.739056 +7.800000 3.600000 15.159956 +7.800000 3.700000 15.600856 +7.800000 3.800000 16.061756 +7.800000 3.900000 16.542656 +7.800000 4.000000 17.043556 +7.800000 4.100000 17.564456 +7.800000 4.200000 18.105356 +7.800000 4.300000 18.666256 +7.800000 4.400000 19.247156 +7.800000 4.500000 19.848056 +7.800000 4.600000 20.468956 +7.800000 4.700000 21.109856 +7.800000 4.800000 21.770756 +7.800000 4.900000 22.451656 +7.800000 5.000000 23.152556 +7.800000 5.100000 23.873456 +7.800000 5.200000 24.614356 +7.800000 5.300000 25.375256 +7.800000 5.400000 26.156156 +7.800000 5.500000 26.957056 +7.800000 5.600000 27.777956 +7.800000 5.700000 28.618856 +7.800000 5.800000 29.479756 +7.800000 5.900000 30.360656 +7.800000 6.000000 31.261557 +7.800000 6.100000 32.182457 +7.800000 6.200000 33.123357 +7.800000 6.300000 34.084257 +7.800000 6.400000 35.065157 +7.800000 6.500000 36.066057 +7.800000 6.600000 37.086957 +7.800000 6.700000 38.127857 +7.800000 6.800000 39.188757 +7.800000 6.900000 40.269657 +7.800000 7.000000 41.370557 +7.800000 7.100000 42.491457 +7.800000 7.200000 43.632357 +7.800000 7.300000 44.793257 +7.800000 7.400000 45.974157 +7.800000 7.500000 47.175057 +7.800000 7.600000 48.395957 +7.800000 7.700000 49.636857 +7.800000 7.800000 50.897757 +7.800000 7.900000 52.178657 +7.800000 8.000000 53.479557 +7.800000 8.100000 54.800457 +7.800000 8.200000 56.141357 +7.800000 8.300000 57.502257 +7.800000 8.400000 58.883157 +7.800000 8.500000 60.284057 +7.800000 8.600000 61.704957 +7.800000 8.700000 63.145857 +7.800000 8.800000 64.606757 +7.800000 8.900000 66.087657 +7.800000 9.000000 67.588557 +7.800000 9.100000 69.109457 +7.800000 9.200000 70.650357 +7.800000 9.300000 72.211257 +7.800000 9.400000 73.792157 +7.800000 9.500000 75.393057 +7.800000 9.600000 77.013957 +7.800000 9.700000 78.654857 +7.800000 9.800000 80.315757 +7.800000 9.900000 81.996657 +7.800000 10.000000 83.697557 +7.800000 10.100000 85.418457 +7.800000 10.200000 87.159357 +7.800000 10.300000 88.920257 +7.800000 10.400000 90.701157 +7.800000 10.500000 92.502057 +7.800000 10.600000 94.322957 +7.800000 10.700000 96.163857 +7.800000 10.800000 98.024757 +7.800000 10.900000 99.905657 +7.800000 11.000000 101.806557 +7.800000 11.100000 103.727457 +7.800000 11.200000 105.668357 +7.800000 11.300000 107.629257 +7.800000 11.400000 109.610157 +7.800000 11.500000 111.611057 +7.800000 11.600000 113.631957 +7.800000 11.700000 115.672857 +7.800000 11.800000 117.733757 +7.800000 11.900000 119.814657 +7.800000 12.000000 121.915557 +7.800000 12.100000 124.036457 +7.800000 12.200000 126.177357 +7.800000 12.300000 128.338257 +7.800000 12.400000 130.519157 +7.800000 12.500000 132.720057 +7.800000 12.600000 134.940957 +7.800000 12.700000 137.181857 +7.800000 12.800000 139.442757 +7.800000 12.900000 141.723657 +7.800000 13.000000 144.024557 +7.800000 13.100000 146.345457 +7.800000 13.200000 148.686357 +7.800000 13.300000 151.047257 +7.800000 13.400000 153.428157 +7.800000 13.500000 155.829057 +7.800000 13.600000 158.249957 +7.800000 13.700000 160.690857 +7.800000 13.800000 163.151757 +7.800000 13.900000 165.632657 +7.800000 14.000000 168.133557 +7.800000 14.100000 170.654457 +7.800000 14.200000 173.195357 +7.800000 14.300000 175.756257 +7.800000 14.400000 178.337157 +7.800000 14.500000 180.938057 +7.800000 14.600000 183.558957 +7.800000 14.700000 186.199857 +7.800000 14.800000 188.860757 +7.800000 14.900000 191.541657 +7.800000 15.000000 194.242557 + +7.900000 -5.000000 51.667541 +7.900000 -4.900000 50.379708 +7.900000 -4.800000 49.111875 +7.900000 -4.700000 47.864042 +7.900000 -4.600000 46.636209 +7.900000 -4.500000 45.428376 +7.900000 -4.400000 44.240543 +7.900000 -4.300000 43.072710 +7.900000 -4.200000 41.924878 +7.900000 -4.100000 40.797045 +7.900000 -4.000000 39.689212 +7.900000 -3.900000 38.601379 +7.900000 -3.800000 37.533546 +7.900000 -3.700000 36.485713 +7.900000 -3.600000 35.457880 +7.900000 -3.500000 34.450047 +7.900000 -3.400000 33.462214 +7.900000 -3.300000 32.494381 +7.900000 -3.200000 31.546548 +7.900000 -3.100000 30.618715 +7.900000 -3.000000 29.710882 +7.900000 -2.900000 28.823049 +7.900000 -2.800000 27.955216 +7.900000 -2.700000 27.107383 +7.900000 -2.600000 26.279550 +7.900000 -2.500000 25.471718 +7.900000 -2.400000 24.683885 +7.900000 -2.300000 23.916052 +7.900000 -2.200000 23.168219 +7.900000 -2.100000 22.440386 +7.900000 -2.000000 21.732553 +7.900000 -1.900000 21.044720 +7.900000 -1.800000 20.376887 +7.900000 -1.700000 19.729054 +7.900000 -1.600000 19.101221 +7.900000 -1.500000 18.493388 +7.900000 -1.400000 17.905555 +7.900000 -1.300000 17.337722 +7.900000 -1.200000 16.789889 +7.900000 -1.100000 16.262056 +7.900000 -1.000000 15.754223 +7.900000 -0.900000 15.266390 +7.900000 -0.800000 14.798557 +7.900000 -0.700000 14.350725 +7.900000 -0.600000 13.922892 +7.900000 -0.500000 13.515059 +7.900000 -0.400000 13.127226 +7.900000 -0.300000 12.759393 +7.900000 -0.200000 12.411560 +7.900000 -0.100000 12.083727 +7.900000 -0.000000 11.775894 +7.900000 0.100000 11.488061 +7.900000 0.200000 11.220228 +7.900000 0.300000 10.972395 +7.900000 0.400000 10.744562 +7.900000 0.500000 10.536729 +7.900000 0.600000 10.348896 +7.900000 0.700000 10.181063 +7.900000 0.800000 10.033230 +7.900000 0.900000 9.905397 +7.900000 1.000000 9.797565 +7.900000 1.100000 9.709732 +7.900000 1.200000 9.641899 +7.900000 1.300000 9.594066 +7.900000 1.400000 9.566233 +7.900000 1.500000 9.558400 +7.900000 1.600000 9.570567 +7.900000 1.700000 9.602734 +7.900000 1.800000 9.654901 +7.900000 1.900000 9.727068 +7.900000 2.000000 9.819235 +7.900000 2.100000 9.931402 +7.900000 2.200000 10.063569 +7.900000 2.300000 10.215736 +7.900000 2.400000 10.387903 +7.900000 2.500000 10.580070 +7.900000 2.600000 10.792237 +7.900000 2.700000 11.024405 +7.900000 2.800000 11.276572 +7.900000 2.900000 11.548739 +7.900000 3.000000 11.840906 +7.900000 3.100000 12.153073 +7.900000 3.200000 12.485240 +7.900000 3.300000 12.837407 +7.900000 3.400000 13.209574 +7.900000 3.500000 13.601741 +7.900000 3.600000 14.013908 +7.900000 3.700000 14.446075 +7.900000 3.800000 14.898242 +7.900000 3.900000 15.370409 +7.900000 4.000000 15.862576 +7.900000 4.100000 16.374743 +7.900000 4.200000 16.906910 +7.900000 4.300000 17.459077 +7.900000 4.400000 18.031244 +7.900000 4.500000 18.623412 +7.900000 4.600000 19.235579 +7.900000 4.700000 19.867746 +7.900000 4.800000 20.519913 +7.900000 4.900000 21.192080 +7.900000 5.000000 21.884247 +7.900000 5.100000 22.596414 +7.900000 5.200000 23.328581 +7.900000 5.300000 24.080748 +7.900000 5.400000 24.852915 +7.900000 5.500000 25.645082 +7.900000 5.600000 26.457249 +7.900000 5.700000 27.289416 +7.900000 5.800000 28.141583 +7.900000 5.900000 29.013750 +7.900000 6.000000 29.905917 +7.900000 6.100000 30.818084 +7.900000 6.200000 31.750252 +7.900000 6.300000 32.702419 +7.900000 6.400000 33.674586 +7.900000 6.500000 34.666753 +7.900000 6.600000 35.678920 +7.900000 6.700000 36.711087 +7.900000 6.800000 37.763254 +7.900000 6.900000 38.835421 +7.900000 7.000000 39.927588 +7.900000 7.100000 41.039755 +7.900000 7.200000 42.171922 +7.900000 7.300000 43.324089 +7.900000 7.400000 44.496256 +7.900000 7.500000 45.688423 +7.900000 7.600000 46.900590 +7.900000 7.700000 48.132757 +7.900000 7.800000 49.384924 +7.900000 7.900000 50.657092 +7.900000 8.000000 51.949259 +7.900000 8.100000 53.261426 +7.900000 8.200000 54.593593 +7.900000 8.300000 55.945760 +7.900000 8.400000 57.317927 +7.900000 8.500000 58.710094 +7.900000 8.600000 60.122261 +7.900000 8.700000 61.554428 +7.900000 8.800000 63.006595 +7.900000 8.900000 64.478762 +7.900000 9.000000 65.970929 +7.900000 9.100000 67.483096 +7.900000 9.200000 69.015263 +7.900000 9.300000 70.567430 +7.900000 9.400000 72.139597 +7.900000 9.500000 73.731764 +7.900000 9.600000 75.343931 +7.900000 9.700000 76.976099 +7.900000 9.800000 78.628266 +7.900000 9.900000 80.300433 +7.900000 10.000000 81.992600 +7.900000 10.100000 83.704767 +7.900000 10.200000 85.436934 +7.900000 10.300000 87.189101 +7.900000 10.400000 88.961268 +7.900000 10.500000 90.753435 +7.900000 10.600000 92.565602 +7.900000 10.700000 94.397769 +7.900000 10.800000 96.249936 +7.900000 10.900000 98.122103 +7.900000 11.000000 100.014270 +7.900000 11.100000 101.926437 +7.900000 11.200000 103.858604 +7.900000 11.300000 105.810771 +7.900000 11.400000 107.782939 +7.900000 11.500000 109.775106 +7.900000 11.600000 111.787273 +7.900000 11.700000 113.819440 +7.900000 11.800000 115.871607 +7.900000 11.900000 117.943774 +7.900000 12.000000 120.035941 +7.900000 12.100000 122.148108 +7.900000 12.200000 124.280275 +7.900000 12.300000 126.432442 +7.900000 12.400000 128.604609 +7.900000 12.500000 130.796776 +7.900000 12.600000 133.008943 +7.900000 12.700000 135.241110 +7.900000 12.800000 137.493277 +7.900000 12.900000 139.765444 +7.900000 13.000000 142.057611 +7.900000 13.100000 144.369779 +7.900000 13.200000 146.701946 +7.900000 13.300000 149.054113 +7.900000 13.400000 151.426280 +7.900000 13.500000 153.818447 +7.900000 13.600000 156.230614 +7.900000 13.700000 158.662781 +7.900000 13.800000 161.114948 +7.900000 13.900000 163.587115 +7.900000 14.000000 166.079282 +7.900000 14.100000 168.591449 +7.900000 14.200000 171.123616 +7.900000 14.300000 173.675783 +7.900000 14.400000 176.247950 +7.900000 14.500000 178.840117 +7.900000 14.600000 181.452284 +7.900000 14.700000 184.084451 +7.900000 14.800000 186.736618 +7.900000 14.900000 189.408786 +7.900000 15.000000 192.100953 + +8.000000 -5.000000 51.314517 +8.000000 -4.900000 50.017435 +8.000000 -4.800000 48.740352 +8.000000 -4.700000 47.483269 +8.000000 -4.600000 46.246187 +8.000000 -4.500000 45.029104 +8.000000 -4.400000 43.832021 +8.000000 -4.300000 42.654939 +8.000000 -4.200000 41.497856 +8.000000 -4.100000 40.360774 +8.000000 -4.000000 39.243691 +8.000000 -3.900000 38.146608 +8.000000 -3.800000 37.069526 +8.000000 -3.700000 36.012443 +8.000000 -3.600000 34.975360 +8.000000 -3.500000 33.958278 +8.000000 -3.400000 32.961195 +8.000000 -3.300000 31.984112 +8.000000 -3.200000 31.027030 +8.000000 -3.100000 30.089947 +8.000000 -3.000000 29.172865 +8.000000 -2.900000 28.275782 +8.000000 -2.800000 27.398699 +8.000000 -2.700000 26.541617 +8.000000 -2.600000 25.704534 +8.000000 -2.500000 24.887451 +8.000000 -2.400000 24.090369 +8.000000 -2.300000 23.313286 +8.000000 -2.200000 22.556204 +8.000000 -2.100000 21.819121 +8.000000 -2.000000 21.102038 +8.000000 -1.900000 20.404956 +8.000000 -1.800000 19.727873 +8.000000 -1.700000 19.070790 +8.000000 -1.600000 18.433708 +8.000000 -1.500000 17.816625 +8.000000 -1.400000 17.219543 +8.000000 -1.300000 16.642460 +8.000000 -1.200000 16.085377 +8.000000 -1.100000 15.548295 +8.000000 -1.000000 15.031212 +8.000000 -0.900000 14.534129 +8.000000 -0.800000 14.057047 +8.000000 -0.700000 13.599964 +8.000000 -0.600000 13.162882 +8.000000 -0.500000 12.745799 +8.000000 -0.400000 12.348716 +8.000000 -0.300000 11.971634 +8.000000 -0.200000 11.614551 +8.000000 -0.100000 11.277468 +8.000000 -0.000000 10.960386 +8.000000 0.100000 10.663303 +8.000000 0.200000 10.386221 +8.000000 0.300000 10.129138 +8.000000 0.400000 9.892055 +8.000000 0.500000 9.674973 +8.000000 0.600000 9.477890 +8.000000 0.700000 9.300807 +8.000000 0.800000 9.143725 +8.000000 0.900000 9.006642 +8.000000 1.000000 8.889560 +8.000000 1.100000 8.792477 +8.000000 1.200000 8.715394 +8.000000 1.300000 8.658312 +8.000000 1.400000 8.621229 +8.000000 1.500000 8.604146 +8.000000 1.600000 8.607064 +8.000000 1.700000 8.629981 +8.000000 1.800000 8.672898 +8.000000 1.900000 8.735816 +8.000000 2.000000 8.818733 +8.000000 2.100000 8.921651 +8.000000 2.200000 9.044568 +8.000000 2.300000 9.187485 +8.000000 2.400000 9.350403 +8.000000 2.500000 9.533320 +8.000000 2.600000 9.736237 +8.000000 2.700000 9.959155 +8.000000 2.800000 10.202072 +8.000000 2.900000 10.464990 +8.000000 3.000000 10.747907 +8.000000 3.100000 11.050824 +8.000000 3.200000 11.373742 +8.000000 3.300000 11.716659 +8.000000 3.400000 12.079576 +8.000000 3.500000 12.462494 +8.000000 3.600000 12.865411 +8.000000 3.700000 13.288329 +8.000000 3.800000 13.731246 +8.000000 3.900000 14.194163 +8.000000 4.000000 14.677081 +8.000000 4.100000 15.179998 +8.000000 4.200000 15.702915 +8.000000 4.300000 16.245833 +8.000000 4.400000 16.808750 +8.000000 4.500000 17.391668 +8.000000 4.600000 17.994585 +8.000000 4.700000 18.617502 +8.000000 4.800000 19.260420 +8.000000 4.900000 19.923337 +8.000000 5.000000 20.606254 +8.000000 5.100000 21.309172 +8.000000 5.200000 22.032089 +8.000000 5.300000 22.775007 +8.000000 5.400000 23.537924 +8.000000 5.500000 24.320841 +8.000000 5.600000 25.123759 +8.000000 5.700000 25.946676 +8.000000 5.800000 26.789593 +8.000000 5.900000 27.652511 +8.000000 6.000000 28.535428 +8.000000 6.100000 29.438346 +8.000000 6.200000 30.361263 +8.000000 6.300000 31.304180 +8.000000 6.400000 32.267098 +8.000000 6.500000 33.250015 +8.000000 6.600000 34.252932 +8.000000 6.700000 35.275850 +8.000000 6.800000 36.318767 +8.000000 6.900000 37.381684 +8.000000 7.000000 38.464602 +8.000000 7.100000 39.567519 +8.000000 7.200000 40.690437 +8.000000 7.300000 41.833354 +8.000000 7.400000 42.996271 +8.000000 7.500000 44.179189 +8.000000 7.600000 45.382106 +8.000000 7.700000 46.605023 +8.000000 7.800000 47.847941 +8.000000 7.900000 49.110858 +8.000000 8.000000 50.393776 +8.000000 8.100000 51.696693 +8.000000 8.200000 53.019610 +8.000000 8.300000 54.362528 +8.000000 8.400000 55.725445 +8.000000 8.500000 57.108362 +8.000000 8.600000 58.511280 +8.000000 8.700000 59.934197 +8.000000 8.800000 61.377115 +8.000000 8.900000 62.840032 +8.000000 9.000000 64.322949 +8.000000 9.100000 65.825867 +8.000000 9.200000 67.348784 +8.000000 9.300000 68.891701 +8.000000 9.400000 70.454619 +8.000000 9.500000 72.037536 +8.000000 9.600000 73.640454 +8.000000 9.700000 75.263371 +8.000000 9.800000 76.906288 +8.000000 9.900000 78.569206 +8.000000 10.000000 80.252123 +8.000000 10.100000 81.955040 +8.000000 10.200000 83.677958 +8.000000 10.300000 85.420875 +8.000000 10.400000 87.183793 +8.000000 10.500000 88.966710 +8.000000 10.600000 90.769627 +8.000000 10.700000 92.592545 +8.000000 10.800000 94.435462 +8.000000 10.900000 96.298379 +8.000000 11.000000 98.181297 +8.000000 11.100000 100.084214 +8.000000 11.200000 102.007132 +8.000000 11.300000 103.950049 +8.000000 11.400000 105.912966 +8.000000 11.500000 107.895884 +8.000000 11.600000 109.898801 +8.000000 11.700000 111.921718 +8.000000 11.800000 113.964636 +8.000000 11.900000 116.027553 +8.000000 12.000000 118.110470 +8.000000 12.100000 120.213388 +8.000000 12.200000 122.336305 +8.000000 12.300000 124.479223 +8.000000 12.400000 126.642140 +8.000000 12.500000 128.825057 +8.000000 12.600000 131.027975 +8.000000 12.700000 133.250892 +8.000000 12.800000 135.493809 +8.000000 12.900000 137.756727 +8.000000 13.000000 140.039644 +8.000000 13.100000 142.342562 +8.000000 13.200000 144.665479 +8.000000 13.300000 147.008396 +8.000000 13.400000 149.371314 +8.000000 13.500000 151.754231 +8.000000 13.600000 154.157148 +8.000000 13.700000 156.580066 +8.000000 13.800000 159.022983 +8.000000 13.900000 161.485901 +8.000000 14.000000 163.968818 +8.000000 14.100000 166.471735 +8.000000 14.200000 168.994653 +8.000000 14.300000 171.537570 +8.000000 14.400000 174.100487 +8.000000 14.500000 176.683405 +8.000000 14.600000 179.286322 +8.000000 14.700000 181.909240 +8.000000 14.800000 184.552157 +8.000000 14.900000 187.215074 +8.000000 15.000000 189.897992 + +8.100000 -5.000000 51.013747 +8.100000 -4.900000 49.706898 +8.100000 -4.800000 48.420049 +8.100000 -4.700000 47.153200 +8.100000 -4.600000 45.906351 +8.100000 -4.500000 44.679502 +8.100000 -4.400000 43.472653 +8.100000 -4.300000 42.285804 +8.100000 -4.200000 41.118955 +8.100000 -4.100000 39.972106 +8.100000 -4.000000 38.845257 +8.100000 -3.900000 37.738408 +8.100000 -3.800000 36.651559 +8.100000 -3.700000 35.584710 +8.100000 -3.600000 34.537860 +8.100000 -3.500000 33.511011 +8.100000 -3.400000 32.504162 +8.100000 -3.300000 31.517313 +8.100000 -3.200000 30.550464 +8.100000 -3.100000 29.603615 +8.100000 -3.000000 28.676766 +8.100000 -2.900000 27.769917 +8.100000 -2.800000 26.883068 +8.100000 -2.700000 26.016219 +8.100000 -2.600000 25.169370 +8.100000 -2.500000 24.342521 +8.100000 -2.400000 23.535672 +8.100000 -2.300000 22.748823 +8.100000 -2.200000 21.981974 +8.100000 -2.100000 21.235125 +8.100000 -2.000000 20.508276 +8.100000 -1.900000 19.801427 +8.100000 -1.800000 19.114578 +8.100000 -1.700000 18.447728 +8.100000 -1.600000 17.800879 +8.100000 -1.500000 17.174030 +8.100000 -1.400000 16.567181 +8.100000 -1.300000 15.980332 +8.100000 -1.200000 15.413483 +8.100000 -1.100000 14.866634 +8.100000 -1.000000 14.339785 +8.100000 -0.900000 13.832936 +8.100000 -0.800000 13.346087 +8.100000 -0.700000 12.879238 +8.100000 -0.600000 12.432389 +8.100000 -0.500000 12.005540 +8.100000 -0.400000 11.598691 +8.100000 -0.300000 11.211842 +8.100000 -0.200000 10.844993 +8.100000 -0.100000 10.498144 +8.100000 -0.000000 10.171295 +8.100000 0.100000 9.864446 +8.100000 0.200000 9.577597 +8.100000 0.300000 9.310747 +8.100000 0.400000 9.063898 +8.100000 0.500000 8.837049 +8.100000 0.600000 8.630200 +8.100000 0.700000 8.443351 +8.100000 0.800000 8.276502 +8.100000 0.900000 8.129653 +8.100000 1.000000 8.002804 +8.100000 1.100000 7.895955 +8.100000 1.200000 7.809106 +8.100000 1.300000 7.742257 +8.100000 1.400000 7.695408 +8.100000 1.500000 7.668559 +8.100000 1.600000 7.661710 +8.100000 1.700000 7.674861 +8.100000 1.800000 7.708012 +8.100000 1.900000 7.761163 +8.100000 2.000000 7.834314 +8.100000 2.100000 7.927465 +8.100000 2.200000 8.040616 +8.100000 2.300000 8.173766 +8.100000 2.400000 8.326917 +8.100000 2.500000 8.500068 +8.100000 2.600000 8.693219 +8.100000 2.700000 8.906370 +8.100000 2.800000 9.139521 +8.100000 2.900000 9.392672 +8.100000 3.000000 9.665823 +8.100000 3.100000 9.958974 +8.100000 3.200000 10.272125 +8.100000 3.300000 10.605276 +8.100000 3.400000 10.958427 +8.100000 3.500000 11.331578 +8.100000 3.600000 11.724729 +8.100000 3.700000 12.137880 +8.100000 3.800000 12.571031 +8.100000 3.900000 13.024182 +8.100000 4.000000 13.497333 +8.100000 4.100000 13.990484 +8.100000 4.200000 14.503634 +8.100000 4.300000 15.036785 +8.100000 4.400000 15.589936 +8.100000 4.500000 16.163087 +8.100000 4.600000 16.756238 +8.100000 4.700000 17.369389 +8.100000 4.800000 18.002540 +8.100000 4.900000 18.655691 +8.100000 5.000000 19.328842 +8.100000 5.100000 20.021993 +8.100000 5.200000 20.735144 +8.100000 5.300000 21.468295 +8.100000 5.400000 22.221446 +8.100000 5.500000 22.994597 +8.100000 5.600000 23.787748 +8.100000 5.700000 24.600899 +8.100000 5.800000 25.434050 +8.100000 5.900000 26.287201 +8.100000 6.000000 27.160352 +8.100000 6.100000 28.053503 +8.100000 6.200000 28.966653 +8.100000 6.300000 29.899804 +8.100000 6.400000 30.852955 +8.100000 6.500000 31.826106 +8.100000 6.600000 32.819257 +8.100000 6.700000 33.832408 +8.100000 6.800000 34.865559 +8.100000 6.900000 35.918710 +8.100000 7.000000 36.991861 +8.100000 7.100000 38.085012 +8.100000 7.200000 39.198163 +8.100000 7.300000 40.331314 +8.100000 7.400000 41.484465 +8.100000 7.500000 42.657616 +8.100000 7.600000 43.850767 +8.100000 7.700000 45.063918 +8.100000 7.800000 46.297069 +8.100000 7.900000 47.550220 +8.100000 8.000000 48.823371 +8.100000 8.100000 50.116522 +8.100000 8.200000 51.429672 +8.100000 8.300000 52.762823 +8.100000 8.400000 54.115974 +8.100000 8.500000 55.489125 +8.100000 8.600000 56.882276 +8.100000 8.700000 58.295427 +8.100000 8.800000 59.728578 +8.100000 8.900000 61.181729 +8.100000 9.000000 62.654880 +8.100000 9.100000 64.148031 +8.100000 9.200000 65.661182 +8.100000 9.300000 67.194333 +8.100000 9.400000 68.747484 +8.100000 9.500000 70.320635 +8.100000 9.600000 71.913786 +8.100000 9.700000 73.526937 +8.100000 9.800000 75.160088 +8.100000 9.900000 76.813239 +8.100000 10.000000 78.486390 +8.100000 10.100000 80.179540 +8.100000 10.200000 81.892691 +8.100000 10.300000 83.625842 +8.100000 10.400000 85.378993 +8.100000 10.500000 87.152144 +8.100000 10.600000 88.945295 +8.100000 10.700000 90.758446 +8.100000 10.800000 92.591597 +8.100000 10.900000 94.444748 +8.100000 11.000000 96.317899 +8.100000 11.100000 98.211050 +8.100000 11.200000 100.124201 +8.100000 11.300000 102.057352 +8.100000 11.400000 104.010503 +8.100000 11.500000 105.983654 +8.100000 11.600000 107.976805 +8.100000 11.700000 109.989956 +8.100000 11.800000 112.023107 +8.100000 11.900000 114.076258 +8.100000 12.000000 116.149409 +8.100000 12.100000 118.242559 +8.100000 12.200000 120.355710 +8.100000 12.300000 122.488861 +8.100000 12.400000 124.642012 +8.100000 12.500000 126.815163 +8.100000 12.600000 129.008314 +8.100000 12.700000 131.221465 +8.100000 12.800000 133.454616 +8.100000 12.900000 135.707767 +8.100000 13.000000 137.980918 +8.100000 13.100000 140.274069 +8.100000 13.200000 142.587220 +8.100000 13.300000 144.920371 +8.100000 13.400000 147.273522 +8.100000 13.500000 149.646673 +8.100000 13.600000 152.039824 +8.100000 13.700000 154.452975 +8.100000 13.800000 156.886126 +8.100000 13.900000 159.339277 +8.100000 14.000000 161.812428 +8.100000 14.100000 164.305578 +8.100000 14.200000 166.818729 +8.100000 14.300000 169.351880 +8.100000 14.400000 171.905031 +8.100000 14.500000 174.478182 +8.100000 14.600000 177.071333 +8.100000 14.700000 179.684484 +8.100000 14.800000 182.317635 +8.100000 14.900000 184.970786 +8.100000 15.000000 187.643937 + +8.200000 -5.000000 50.775395 +8.200000 -4.900000 49.458262 +8.200000 -4.800000 48.161130 +8.200000 -4.700000 46.883998 +8.200000 -4.600000 45.626866 +8.200000 -4.500000 44.389733 +8.200000 -4.400000 43.172601 +8.200000 -4.300000 41.975469 +8.200000 -4.200000 40.798337 +8.200000 -4.100000 39.641205 +8.200000 -4.000000 38.504072 +8.200000 -3.900000 37.386940 +8.200000 -3.800000 36.289808 +8.200000 -3.700000 35.212676 +8.200000 -3.600000 34.155544 +8.200000 -3.500000 33.118411 +8.200000 -3.400000 32.101279 +8.200000 -3.300000 31.104147 +8.200000 -3.200000 30.127015 +8.200000 -3.100000 29.169883 +8.200000 -3.000000 28.232750 +8.200000 -2.900000 27.315618 +8.200000 -2.800000 26.418486 +8.200000 -2.700000 25.541354 +8.200000 -2.600000 24.684221 +8.200000 -2.500000 23.847089 +8.200000 -2.400000 23.029957 +8.200000 -2.300000 22.232825 +8.200000 -2.200000 21.455693 +8.200000 -2.100000 20.698560 +8.200000 -2.000000 19.961428 +8.200000 -1.900000 19.244296 +8.200000 -1.800000 18.547164 +8.200000 -1.700000 17.870032 +8.200000 -1.600000 17.212899 +8.200000 -1.500000 16.575767 +8.200000 -1.400000 15.958635 +8.200000 -1.300000 15.361503 +8.200000 -1.200000 14.784370 +8.200000 -1.100000 14.227238 +8.200000 -1.000000 13.690106 +8.200000 -0.900000 13.172974 +8.200000 -0.800000 12.675842 +8.200000 -0.700000 12.198709 +8.200000 -0.600000 11.741577 +8.200000 -0.500000 11.304445 +8.200000 -0.400000 10.887313 +8.200000 -0.300000 10.490181 +8.200000 -0.200000 10.113048 +8.200000 -0.100000 9.755916 +8.200000 -0.000000 9.418784 +8.200000 0.100000 9.101652 +8.200000 0.200000 8.804520 +8.200000 0.300000 8.527387 +8.200000 0.400000 8.270255 +8.200000 0.500000 8.033123 +8.200000 0.600000 7.815991 +8.200000 0.700000 7.618858 +8.200000 0.800000 7.441726 +8.200000 0.900000 7.284594 +8.200000 1.000000 7.147462 +8.200000 1.100000 7.030330 +8.200000 1.200000 6.933197 +8.200000 1.300000 6.856065 +8.200000 1.400000 6.798933 +8.200000 1.500000 6.761801 +8.200000 1.600000 6.744669 +8.200000 1.700000 6.747536 +8.200000 1.800000 6.770404 +8.200000 1.900000 6.813272 +8.200000 2.000000 6.876140 +8.200000 2.100000 6.959007 +8.200000 2.200000 7.061875 +8.200000 2.300000 7.184743 +8.200000 2.400000 7.327611 +8.200000 2.500000 7.490479 +8.200000 2.600000 7.673346 +8.200000 2.700000 7.876214 +8.200000 2.800000 8.099082 +8.200000 2.900000 8.341950 +8.200000 3.000000 8.604818 +8.200000 3.100000 8.887685 +8.200000 3.200000 9.190553 +8.200000 3.300000 9.513421 +8.200000 3.400000 9.856289 +8.200000 3.500000 10.219156 +8.200000 3.600000 10.602024 +8.200000 3.700000 11.004892 +8.200000 3.800000 11.427760 +8.200000 3.900000 11.870628 +8.200000 4.000000 12.333495 +8.200000 4.100000 12.816363 +8.200000 4.200000 13.319231 +8.200000 4.300000 13.842099 +8.200000 4.400000 14.384967 +8.200000 4.500000 14.947834 +8.200000 4.600000 15.530702 +8.200000 4.700000 16.133570 +8.200000 4.800000 16.756438 +8.200000 4.900000 17.399306 +8.200000 5.000000 18.062173 +8.200000 5.100000 18.745041 +8.200000 5.200000 19.447909 +8.200000 5.300000 20.170777 +8.200000 5.400000 20.913644 +8.200000 5.500000 21.676512 +8.200000 5.600000 22.459380 +8.200000 5.700000 23.262248 +8.200000 5.800000 24.085116 +8.200000 5.900000 24.927983 +8.200000 6.000000 25.790851 +8.200000 6.100000 26.673719 +8.200000 6.200000 27.576587 +8.200000 6.300000 28.499455 +8.200000 6.400000 29.442322 +8.200000 6.500000 30.405190 +8.200000 6.600000 31.388058 +8.200000 6.700000 32.390926 +8.200000 6.800000 33.413793 +8.200000 6.900000 34.456661 +8.200000 7.000000 35.519529 +8.200000 7.100000 36.602397 +8.200000 7.200000 37.705265 +8.200000 7.300000 38.828132 +8.200000 7.400000 39.971000 +8.200000 7.500000 41.133868 +8.200000 7.600000 42.316736 +8.200000 7.700000 43.519604 +8.200000 7.800000 44.742471 +8.200000 7.900000 45.985339 +8.200000 8.000000 47.248207 +8.200000 8.100000 48.531075 +8.200000 8.200000 49.833943 +8.200000 8.300000 51.156810 +8.200000 8.400000 52.499678 +8.200000 8.500000 53.862546 +8.200000 8.600000 55.245414 +8.200000 8.700000 56.648281 +8.200000 8.800000 58.071149 +8.200000 8.900000 59.514017 +8.200000 9.000000 60.976885 +8.200000 9.100000 62.459753 +8.200000 9.200000 63.962620 +8.200000 9.300000 65.485488 +8.200000 9.400000 67.028356 +8.200000 9.500000 68.591224 +8.200000 9.600000 70.174092 +8.200000 9.700000 71.776959 +8.200000 9.800000 73.399827 +8.200000 9.900000 75.042695 +8.200000 10.000000 76.705563 +8.200000 10.100000 78.388430 +8.200000 10.200000 80.091298 +8.200000 10.300000 81.814166 +8.200000 10.400000 83.557034 +8.200000 10.500000 85.319902 +8.200000 10.600000 87.102769 +8.200000 10.700000 88.905637 +8.200000 10.800000 90.728505 +8.200000 10.900000 92.571373 +8.200000 11.000000 94.434241 +8.200000 11.100000 96.317108 +8.200000 11.200000 98.219976 +8.200000 11.300000 100.142844 +8.200000 11.400000 102.085712 +8.200000 11.500000 104.048580 +8.200000 11.600000 106.031447 +8.200000 11.700000 108.034315 +8.200000 11.800000 110.057183 +8.200000 11.900000 112.100051 +8.200000 12.000000 114.162918 +8.200000 12.100000 116.245786 +8.200000 12.200000 118.348654 +8.200000 12.300000 120.471522 +8.200000 12.400000 122.614390 +8.200000 12.500000 124.777257 +8.200000 12.600000 126.960125 +8.200000 12.700000 129.162993 +8.200000 12.800000 131.385861 +8.200000 12.900000 133.628729 +8.200000 13.000000 135.891596 +8.200000 13.100000 138.174464 +8.200000 13.200000 140.477332 +8.200000 13.300000 142.800200 +8.200000 13.400000 145.143067 +8.200000 13.500000 147.505935 +8.200000 13.600000 149.888803 +8.200000 13.700000 152.291671 +8.200000 13.800000 154.714539 +8.200000 13.900000 157.157406 +8.200000 14.000000 159.620274 +8.200000 14.100000 162.103142 +8.200000 14.200000 164.606010 +8.200000 14.300000 167.128878 +8.200000 14.400000 169.671745 +8.200000 14.500000 172.234613 +8.200000 14.600000 174.817481 +8.200000 14.700000 177.420349 +8.200000 14.800000 180.043217 +8.200000 14.900000 182.686084 +8.200000 15.000000 185.348952 + +8.300000 -5.000000 50.609429 +8.300000 -4.900000 49.281497 +8.300000 -4.800000 47.973565 +8.300000 -4.700000 46.685633 +8.300000 -4.600000 45.417701 +8.300000 -4.500000 44.169769 +8.300000 -4.400000 42.941837 +8.300000 -4.300000 41.733905 +8.300000 -4.200000 40.545972 +8.300000 -4.100000 39.378040 +8.300000 -4.000000 38.230108 +8.300000 -3.900000 37.102176 +8.300000 -3.800000 35.994244 +8.300000 -3.700000 34.906312 +8.300000 -3.600000 33.838380 +8.300000 -3.500000 32.790448 +8.300000 -3.400000 31.762516 +8.300000 -3.300000 30.754583 +8.300000 -3.200000 29.766651 +8.300000 -3.100000 28.798719 +8.300000 -3.000000 27.850787 +8.300000 -2.900000 26.922855 +8.300000 -2.800000 26.014923 +8.300000 -2.700000 25.126991 +8.300000 -2.600000 24.259059 +8.300000 -2.500000 23.411127 +8.300000 -2.400000 22.583194 +8.300000 -2.300000 21.775262 +8.300000 -2.200000 20.987330 +8.300000 -2.100000 20.219398 +8.300000 -2.000000 19.471466 +8.300000 -1.900000 18.743534 +8.300000 -1.800000 18.035602 +8.300000 -1.700000 17.347670 +8.300000 -1.600000 16.679738 +8.300000 -1.500000 16.031805 +8.300000 -1.400000 15.403873 +8.300000 -1.300000 14.795941 +8.300000 -1.200000 14.208009 +8.300000 -1.100000 13.640077 +8.300000 -1.000000 13.092145 +8.300000 -0.900000 12.564213 +8.300000 -0.800000 12.056281 +8.300000 -0.700000 11.568349 +8.300000 -0.600000 11.100416 +8.300000 -0.500000 10.652484 +8.300000 -0.400000 10.224552 +8.300000 -0.300000 9.816620 +8.300000 -0.200000 9.428688 +8.300000 -0.100000 9.060756 +8.300000 -0.000000 8.712824 +8.300000 0.100000 8.384892 +8.300000 0.200000 8.076960 +8.300000 0.300000 7.789027 +8.300000 0.400000 7.521095 +8.300000 0.500000 7.273163 +8.300000 0.600000 7.045231 +8.300000 0.700000 6.837299 +8.300000 0.800000 6.649367 +8.300000 0.900000 6.481435 +8.300000 1.000000 6.333503 +8.300000 1.100000 6.205571 +8.300000 1.200000 6.097638 +8.300000 1.300000 6.009706 +8.300000 1.400000 5.941774 +8.300000 1.500000 5.893842 +8.300000 1.600000 5.865910 +8.300000 1.700000 5.857978 +8.300000 1.800000 5.870046 +8.300000 1.900000 5.902114 +8.300000 2.000000 5.954182 +8.300000 2.100000 6.026249 +8.300000 2.200000 6.118317 +8.300000 2.300000 6.230385 +8.300000 2.400000 6.362453 +8.300000 2.500000 6.514521 +8.300000 2.600000 6.686589 +8.300000 2.700000 6.878657 +8.300000 2.800000 7.090725 +8.300000 2.900000 7.322793 +8.300000 3.000000 7.574860 +8.300000 3.100000 7.846928 +8.300000 3.200000 8.138996 +8.300000 3.300000 8.451064 +8.300000 3.400000 8.783132 +8.300000 3.500000 9.135200 +8.300000 3.600000 9.507268 +8.300000 3.700000 9.899336 +8.300000 3.800000 10.311404 +8.300000 3.900000 10.743471 +8.300000 4.000000 11.195539 +8.300000 4.100000 11.667607 +8.300000 4.200000 12.159675 +8.300000 4.300000 12.671743 +8.300000 4.400000 13.203811 +8.300000 4.500000 13.755879 +8.300000 4.600000 14.327947 +8.300000 4.700000 14.920014 +8.300000 4.800000 15.532082 +8.300000 4.900000 16.164150 +8.300000 5.000000 16.816218 +8.300000 5.100000 17.488286 +8.300000 5.200000 18.180354 +8.300000 5.300000 18.892422 +8.300000 5.400000 19.624490 +8.300000 5.500000 20.376558 +8.300000 5.600000 21.148625 +8.300000 5.700000 21.940693 +8.300000 5.800000 22.752761 +8.300000 5.900000 23.584829 +8.300000 6.000000 24.436897 +8.300000 6.100000 25.308965 +8.300000 6.200000 26.201033 +8.300000 6.300000 27.113101 +8.300000 6.400000 28.045169 +8.300000 6.500000 28.997236 +8.300000 6.600000 29.969304 +8.300000 6.700000 30.961372 +8.300000 6.800000 31.973440 +8.300000 6.900000 33.005508 +8.300000 7.000000 34.057576 +8.300000 7.100000 35.129644 +8.300000 7.200000 36.221712 +8.300000 7.300000 37.333780 +8.300000 7.400000 38.465847 +8.300000 7.500000 39.617915 +8.300000 7.600000 40.789983 +8.300000 7.700000 41.982051 +8.300000 7.800000 43.194119 +8.300000 7.900000 44.426187 +8.300000 8.000000 45.678255 +8.300000 8.100000 46.950323 +8.300000 8.200000 48.242391 +8.300000 8.300000 49.554458 +8.300000 8.400000 50.886526 +8.300000 8.500000 52.238594 +8.300000 8.600000 53.610662 +8.300000 8.700000 55.002730 +8.300000 8.800000 56.414798 +8.300000 8.900000 57.846866 +8.300000 9.000000 59.298934 +8.300000 9.100000 60.771002 +8.300000 9.200000 62.263069 +8.300000 9.300000 63.775137 +8.300000 9.400000 65.307205 +8.300000 9.500000 66.859273 +8.300000 9.600000 68.431341 +8.300000 9.700000 70.023409 +8.300000 9.800000 71.635477 +8.300000 9.900000 73.267545 +8.300000 10.000000 74.919613 +8.300000 10.100000 76.591680 +8.300000 10.200000 78.283748 +8.300000 10.300000 79.995816 +8.300000 10.400000 81.727884 +8.300000 10.500000 83.479952 +8.300000 10.600000 85.252020 +8.300000 10.700000 87.044088 +8.300000 10.800000 88.856156 +8.300000 10.900000 90.688224 +8.300000 11.000000 92.540291 +8.300000 11.100000 94.412359 +8.300000 11.200000 96.304427 +8.300000 11.300000 98.216495 +8.300000 11.400000 100.148563 +8.300000 11.500000 102.100631 +8.300000 11.600000 104.072699 +8.300000 11.700000 106.064767 +8.300000 11.800000 108.076835 +8.300000 11.900000 110.108902 +8.300000 12.000000 112.160970 +8.300000 12.100000 114.233038 +8.300000 12.200000 116.325106 +8.300000 12.300000 118.437174 +8.300000 12.400000 120.569242 +8.300000 12.500000 122.721310 +8.300000 12.600000 124.893378 +8.300000 12.700000 127.085446 +8.300000 12.800000 129.297513 +8.300000 12.900000 131.529581 +8.300000 13.000000 133.781649 +8.300000 13.100000 136.053717 +8.300000 13.200000 138.345785 +8.300000 13.300000 140.657853 +8.300000 13.400000 142.989921 +8.300000 13.500000 145.341989 +8.300000 13.600000 147.714057 +8.300000 13.700000 150.106124 +8.300000 13.800000 152.518192 +8.300000 13.900000 154.950260 +8.300000 14.000000 157.402328 +8.300000 14.100000 159.874396 +8.300000 14.200000 162.366464 +8.300000 14.300000 164.878532 +8.300000 14.400000 167.410600 +8.300000 14.500000 169.962668 +8.300000 14.600000 172.534735 +8.300000 14.700000 175.126803 +8.300000 14.800000 177.738871 +8.300000 14.900000 180.370939 +8.300000 15.000000 183.023007 + +8.400000 -5.000000 50.525537 +8.400000 -4.900000 49.186288 +8.400000 -4.800000 47.867039 +8.400000 -4.700000 46.567790 +8.400000 -4.600000 45.288542 +8.400000 -4.500000 44.029293 +8.400000 -4.400000 42.790044 +8.400000 -4.300000 41.570795 +8.400000 -4.200000 40.371547 +8.400000 -4.100000 39.192298 +8.400000 -4.000000 38.033049 +8.400000 -3.900000 36.893800 +8.400000 -3.800000 35.774552 +8.400000 -3.700000 34.675303 +8.400000 -3.600000 33.596054 +8.400000 -3.500000 32.536805 +8.400000 -3.400000 31.497557 +8.400000 -3.300000 30.478308 +8.400000 -3.200000 29.479059 +8.400000 -3.100000 28.499810 +8.400000 -3.000000 27.540562 +8.400000 -2.900000 26.601313 +8.400000 -2.800000 25.682064 +8.400000 -2.700000 24.782815 +8.400000 -2.600000 23.903567 +8.400000 -2.500000 23.044318 +8.400000 -2.400000 22.205069 +8.400000 -2.300000 21.385820 +8.400000 -2.200000 20.586572 +8.400000 -2.100000 19.807323 +8.400000 -2.000000 19.048074 +8.400000 -1.900000 18.308825 +8.400000 -1.800000 17.589577 +8.400000 -1.700000 16.890328 +8.400000 -1.600000 16.211079 +8.400000 -1.500000 15.551830 +8.400000 -1.400000 14.912582 +8.400000 -1.300000 14.293333 +8.400000 -1.200000 13.694084 +8.400000 -1.100000 13.114835 +8.400000 -1.000000 12.555587 +8.400000 -0.900000 12.016338 +8.400000 -0.800000 11.497089 +8.400000 -0.700000 10.997840 +8.400000 -0.600000 10.518592 +8.400000 -0.500000 10.059343 +8.400000 -0.400000 9.620094 +8.400000 -0.300000 9.200845 +8.400000 -0.200000 8.801597 +8.400000 -0.100000 8.422348 +8.400000 -0.000000 8.063099 +8.400000 0.100000 7.723850 +8.400000 0.200000 7.404602 +8.400000 0.300000 7.105353 +8.400000 0.400000 6.826104 +8.400000 0.500000 6.566855 +8.400000 0.600000 6.327607 +8.400000 0.700000 6.108358 +8.400000 0.800000 5.909109 +8.400000 0.900000 5.729860 +8.400000 1.000000 5.570612 +8.400000 1.100000 5.431363 +8.400000 1.200000 5.312114 +8.400000 1.300000 5.212865 +8.400000 1.400000 5.133617 +8.400000 1.500000 5.074368 +8.400000 1.600000 5.035119 +8.400000 1.700000 5.015870 +8.400000 1.800000 5.016622 +8.400000 1.900000 5.037373 +8.400000 2.000000 5.078124 +8.400000 2.100000 5.138875 +8.400000 2.200000 5.219627 +8.400000 2.300000 5.320378 +8.400000 2.400000 5.441129 +8.400000 2.500000 5.581880 +8.400000 2.600000 5.742632 +8.400000 2.700000 5.923383 +8.400000 2.800000 6.124134 +8.400000 2.900000 6.344885 +8.400000 3.000000 6.585637 +8.400000 3.100000 6.846388 +8.400000 3.200000 7.127139 +8.400000 3.300000 7.427890 +8.400000 3.400000 7.748642 +8.400000 3.500000 8.089393 +8.400000 3.600000 8.450144 +8.400000 3.700000 8.830895 +8.400000 3.800000 9.231647 +8.400000 3.900000 9.652398 +8.400000 4.000000 10.093149 +8.400000 4.100000 10.553900 +8.400000 4.200000 11.034652 +8.400000 4.300000 11.535403 +8.400000 4.400000 12.056154 +8.400000 4.500000 12.596905 +8.400000 4.600000 13.157657 +8.400000 4.700000 13.738408 +8.400000 4.800000 14.339159 +8.400000 4.900000 14.959910 +8.400000 5.000000 15.600662 +8.400000 5.100000 16.261413 +8.400000 5.200000 16.942164 +8.400000 5.300000 17.642915 +8.400000 5.400000 18.363667 +8.400000 5.500000 19.104418 +8.400000 5.600000 19.865169 +8.400000 5.700000 20.645920 +8.400000 5.800000 21.446672 +8.400000 5.900000 22.267423 +8.400000 6.000000 23.108174 +8.400000 6.100000 23.968925 +8.400000 6.200000 24.849677 +8.400000 6.300000 25.750428 +8.400000 6.400000 26.671179 +8.400000 6.500000 27.611930 +8.400000 6.600000 28.572682 +8.400000 6.700000 29.553433 +8.400000 6.800000 30.554184 +8.400000 6.900000 31.574935 +8.400000 7.000000 32.615687 +8.400000 7.100000 33.676438 +8.400000 7.200000 34.757189 +8.400000 7.300000 35.857940 +8.400000 7.400000 36.978692 +8.400000 7.500000 38.119443 +8.400000 7.600000 39.280194 +8.400000 7.700000 40.460945 +8.400000 7.800000 41.661697 +8.400000 7.900000 42.882448 +8.400000 8.000000 44.123199 +8.400000 8.100000 45.383950 +8.400000 8.200000 46.664702 +8.400000 8.300000 47.965453 +8.400000 8.400000 49.286204 +8.400000 8.500000 50.626955 +8.400000 8.600000 51.987707 +8.400000 8.700000 53.368458 +8.400000 8.800000 54.769209 +8.400000 8.900000 56.189960 +8.400000 9.000000 57.630712 +8.400000 9.100000 59.091463 +8.400000 9.200000 60.572214 +8.400000 9.300000 62.072965 +8.400000 9.400000 63.593717 +8.400000 9.500000 65.134468 +8.400000 9.600000 66.695219 +8.400000 9.700000 68.275970 +8.400000 9.800000 69.876722 +8.400000 9.900000 71.497473 +8.400000 10.000000 73.138224 +8.400000 10.100000 74.798975 +8.400000 10.200000 76.479727 +8.400000 10.300000 78.180478 +8.400000 10.400000 79.901229 +8.400000 10.500000 81.641980 +8.400000 10.600000 83.402732 +8.400000 10.700000 85.183483 +8.400000 10.800000 86.984234 +8.400000 10.900000 88.804985 +8.400000 11.000000 90.645737 +8.400000 11.100000 92.506488 +8.400000 11.200000 94.387239 +8.400000 11.300000 96.287990 +8.400000 11.400000 98.208742 +8.400000 11.500000 100.149493 +8.400000 11.600000 102.110244 +8.400000 11.700000 104.090995 +8.400000 11.800000 106.091747 +8.400000 11.900000 108.112498 +8.400000 12.000000 110.153249 +8.400000 12.100000 112.214000 +8.400000 12.200000 114.294752 +8.400000 12.300000 116.395503 +8.400000 12.400000 118.516254 +8.400000 12.500000 120.657005 +8.400000 12.600000 122.817757 +8.400000 12.700000 124.998508 +8.400000 12.800000 127.199259 +8.400000 12.900000 129.420010 +8.400000 13.000000 131.660762 +8.400000 13.100000 133.921513 +8.400000 13.200000 136.202264 +8.400000 13.300000 138.503015 +8.400000 13.400000 140.823767 +8.400000 13.500000 143.164518 +8.400000 13.600000 145.525269 +8.400000 13.700000 147.906020 +8.400000 13.800000 150.306772 +8.400000 13.900000 152.727523 +8.400000 14.000000 155.168274 +8.400000 14.100000 157.629025 +8.400000 14.200000 160.109777 +8.400000 14.300000 162.610528 +8.400000 14.400000 165.131279 +8.400000 14.500000 167.672030 +8.400000 14.600000 170.232782 +8.400000 14.700000 172.813533 +8.400000 14.800000 175.414284 +8.400000 14.900000 178.035035 +8.400000 15.000000 180.675787 + +8.500000 -5.000000 50.533028 +8.500000 -4.900000 49.181946 +8.500000 -4.800000 47.850863 +8.500000 -4.700000 46.539781 +8.500000 -4.600000 45.248699 +8.500000 -4.500000 43.977617 +8.500000 -4.400000 42.726535 +8.500000 -4.300000 41.495453 +8.500000 -4.200000 40.284371 +8.500000 -4.100000 39.093289 +8.500000 -4.000000 37.922206 +8.500000 -3.900000 36.771124 +8.500000 -3.800000 35.640042 +8.500000 -3.700000 34.528960 +8.500000 -3.600000 33.437878 +8.500000 -3.500000 32.366796 +8.500000 -3.400000 31.315714 +8.500000 -3.300000 30.284632 +8.500000 -3.200000 29.273549 +8.500000 -3.100000 28.282467 +8.500000 -3.000000 27.311385 +8.500000 -2.900000 26.360303 +8.500000 -2.800000 25.429221 +8.500000 -2.700000 24.518139 +8.500000 -2.600000 23.627057 +8.500000 -2.500000 22.755975 +8.500000 -2.400000 21.904892 +8.500000 -2.300000 21.073810 +8.500000 -2.200000 20.262728 +8.500000 -2.100000 19.471646 +8.500000 -2.000000 18.700564 +8.500000 -1.900000 17.949482 +8.500000 -1.800000 17.218400 +8.500000 -1.700000 16.507318 +8.500000 -1.600000 15.816235 +8.500000 -1.500000 15.145153 +8.500000 -1.400000 14.494071 +8.500000 -1.300000 13.862989 +8.500000 -1.200000 13.251907 +8.500000 -1.100000 12.660825 +8.500000 -1.000000 12.089743 +8.500000 -0.900000 11.538661 +8.500000 -0.800000 11.007578 +8.500000 -0.700000 10.496496 +8.500000 -0.600000 10.005414 +8.500000 -0.500000 9.534332 +8.500000 -0.400000 9.083250 +8.500000 -0.300000 8.652168 +8.500000 -0.200000 8.241086 +8.500000 -0.100000 7.850004 +8.500000 -0.000000 7.478921 +8.500000 0.100000 7.127839 +8.500000 0.200000 6.796757 +8.500000 0.300000 6.485675 +8.500000 0.400000 6.194593 +8.500000 0.500000 5.923511 +8.500000 0.600000 5.672429 +8.500000 0.700000 5.441347 +8.500000 0.800000 5.230264 +8.500000 0.900000 5.039182 +8.500000 1.000000 4.868100 +8.500000 1.100000 4.717018 +8.500000 1.200000 4.585936 +8.500000 1.300000 4.474854 +8.500000 1.400000 4.383772 +8.500000 1.500000 4.312690 +8.500000 1.600000 4.261607 +8.500000 1.700000 4.230525 +8.500000 1.800000 4.219443 +8.500000 1.900000 4.228361 +8.500000 2.000000 4.257279 +8.500000 2.100000 4.306197 +8.500000 2.200000 4.375115 +8.500000 2.300000 4.464033 +8.500000 2.400000 4.572950 +8.500000 2.500000 4.701868 +8.500000 2.600000 4.850786 +8.500000 2.700000 5.019704 +8.500000 2.800000 5.208622 +8.500000 2.900000 5.417540 +8.500000 3.000000 5.646458 +8.500000 3.100000 5.895376 +8.500000 3.200000 6.164293 +8.500000 3.300000 6.453211 +8.500000 3.400000 6.762129 +8.500000 3.500000 7.091047 +8.500000 3.600000 7.439965 +8.500000 3.700000 7.808883 +8.500000 3.800000 8.197801 +8.500000 3.900000 8.606719 +8.500000 4.000000 9.035636 +8.500000 4.100000 9.484554 +8.500000 4.200000 9.953472 +8.500000 4.300000 10.442390 +8.500000 4.400000 10.951308 +8.500000 4.500000 11.480226 +8.500000 4.600000 12.029144 +8.500000 4.700000 12.598062 +8.500000 4.800000 13.186979 +8.500000 4.900000 13.795897 +8.500000 5.000000 14.424815 +8.500000 5.100000 15.073733 +8.500000 5.200000 15.742651 +8.500000 5.300000 16.431569 +8.500000 5.400000 17.140487 +8.500000 5.500000 17.869405 +8.500000 5.600000 18.618322 +8.500000 5.700000 19.387240 +8.500000 5.800000 20.176158 +8.500000 5.900000 20.985076 +8.500000 6.000000 21.813994 +8.500000 6.100000 22.662912 +8.500000 6.200000 23.531830 +8.500000 6.300000 24.420748 +8.500000 6.400000 25.329665 +8.500000 6.500000 26.258583 +8.500000 6.600000 27.207501 +8.500000 6.700000 28.176419 +8.500000 6.800000 29.165337 +8.500000 6.900000 30.174255 +8.500000 7.000000 31.203173 +8.500000 7.100000 32.252091 +8.500000 7.200000 33.321008 +8.500000 7.300000 34.409926 +8.500000 7.400000 35.518844 +8.500000 7.500000 36.647762 +8.500000 7.600000 37.796680 +8.500000 7.700000 38.965598 +8.500000 7.800000 40.154516 +8.500000 7.900000 41.363434 +8.500000 8.000000 42.592351 +8.500000 8.100000 43.841269 +8.500000 8.200000 45.110187 +8.500000 8.300000 46.399105 +8.500000 8.400000 47.708023 +8.500000 8.500000 49.036941 +8.500000 8.600000 50.385859 +8.500000 8.700000 51.754777 +8.500000 8.800000 53.143694 +8.500000 8.900000 54.552612 +8.500000 9.000000 55.981530 +8.500000 9.100000 57.430448 +8.500000 9.200000 58.899366 +8.500000 9.300000 60.388284 +8.500000 9.400000 61.897202 +8.500000 9.500000 63.426120 +8.500000 9.600000 64.975037 +8.500000 9.700000 66.543955 +8.500000 9.800000 68.132873 +8.500000 9.900000 69.741791 +8.500000 10.000000 71.370709 +8.500000 10.100000 73.019627 +8.500000 10.200000 74.688545 +8.500000 10.300000 76.377463 +8.500000 10.400000 78.086380 +8.500000 10.500000 79.815298 +8.500000 10.600000 81.564216 +8.500000 10.700000 83.333134 +8.500000 10.800000 85.122052 +8.500000 10.900000 86.930970 +8.500000 11.000000 88.759888 +8.500000 11.100000 90.608806 +8.500000 11.200000 92.477723 +8.500000 11.300000 94.366641 +8.500000 11.400000 96.275559 +8.500000 11.500000 98.204477 +8.500000 11.600000 100.153395 +8.500000 11.700000 102.122313 +8.500000 11.800000 104.111231 +8.500000 11.900000 106.120149 +8.500000 12.000000 108.149066 +8.500000 12.100000 110.197984 +8.500000 12.200000 112.266902 +8.500000 12.300000 114.355820 +8.500000 12.400000 116.464738 +8.500000 12.500000 118.593656 +8.500000 12.600000 120.742574 +8.500000 12.700000 122.911492 +8.500000 12.800000 125.100409 +8.500000 12.900000 127.309327 +8.500000 13.000000 129.538245 +8.500000 13.100000 131.787163 +8.500000 13.200000 134.056081 +8.500000 13.300000 136.344999 +8.500000 13.400000 138.653917 +8.500000 13.500000 140.982835 +8.500000 13.600000 143.331752 +8.500000 13.700000 145.700670 +8.500000 13.800000 148.089588 +8.500000 13.900000 150.498506 +8.500000 14.000000 152.927424 +8.500000 14.100000 155.376342 +8.500000 14.200000 157.845260 +8.500000 14.300000 160.334178 +8.500000 14.400000 162.843095 +8.500000 14.500000 165.372013 +8.500000 14.600000 167.920931 +8.500000 14.700000 170.489849 +8.500000 14.800000 173.078767 +8.500000 14.900000 175.687685 +8.500000 15.000000 178.316603 + +8.600000 -5.000000 50.640756 +8.600000 -4.900000 49.277324 +8.600000 -4.800000 47.933892 +8.600000 -4.700000 46.610460 +8.600000 -4.600000 45.307028 +8.600000 -4.500000 44.023595 +8.600000 -4.400000 42.760163 +8.600000 -4.300000 41.516731 +8.600000 -4.200000 40.293299 +8.600000 -4.100000 39.089866 +8.600000 -4.000000 37.906434 +8.600000 -3.900000 36.743002 +8.600000 -3.800000 35.599570 +8.600000 -3.700000 34.476137 +8.600000 -3.600000 33.372705 +8.600000 -3.500000 32.289273 +8.600000 -3.400000 31.225841 +8.600000 -3.300000 30.182408 +8.600000 -3.200000 29.158976 +8.600000 -3.100000 28.155544 +8.600000 -3.000000 27.172112 +8.600000 -2.900000 26.208679 +8.600000 -2.800000 25.265247 +8.600000 -2.700000 24.341815 +8.600000 -2.600000 23.438383 +8.600000 -2.500000 22.554951 +8.600000 -2.400000 21.691518 +8.600000 -2.300000 20.848086 +8.600000 -2.200000 20.024654 +8.600000 -2.100000 19.221222 +8.600000 -2.000000 18.437789 +8.600000 -1.900000 17.674357 +8.600000 -1.800000 16.930925 +8.600000 -1.700000 16.207493 +8.600000 -1.600000 15.504060 +8.600000 -1.500000 14.820628 +8.600000 -1.400000 14.157196 +8.600000 -1.300000 13.513764 +8.600000 -1.200000 12.890331 +8.600000 -1.100000 12.286899 +8.600000 -1.000000 11.703467 +8.600000 -0.900000 11.140035 +8.600000 -0.800000 10.596602 +8.600000 -0.700000 10.073170 +8.600000 -0.600000 9.569738 +8.600000 -0.500000 9.086306 +8.600000 -0.400000 8.622874 +8.600000 -0.300000 8.179441 +8.600000 -0.200000 7.756009 +8.600000 -0.100000 7.352577 +8.600000 -0.000000 6.969145 +8.600000 0.100000 6.605712 +8.600000 0.200000 6.262280 +8.600000 0.300000 5.938848 +8.600000 0.400000 5.635416 +8.600000 0.500000 5.351983 +8.600000 0.600000 5.088551 +8.600000 0.700000 4.845119 +8.600000 0.800000 4.621687 +8.600000 0.900000 4.418254 +8.600000 1.000000 4.234822 +8.600000 1.100000 4.071390 +8.600000 1.200000 3.927958 +8.600000 1.300000 3.804525 +8.600000 1.400000 3.701093 +8.600000 1.500000 3.617661 +8.600000 1.600000 3.554229 +8.600000 1.700000 3.510797 +8.600000 1.800000 3.487364 +8.600000 1.900000 3.483932 +8.600000 2.000000 3.500500 +8.600000 2.100000 3.537068 +8.600000 2.200000 3.593635 +8.600000 2.300000 3.670203 +8.600000 2.400000 3.766771 +8.600000 2.500000 3.883339 +8.600000 2.600000 4.019906 +8.600000 2.700000 4.176474 +8.600000 2.800000 4.353042 +8.600000 2.900000 4.549610 +8.600000 3.000000 4.766177 +8.600000 3.100000 5.002745 +8.600000 3.200000 5.259313 +8.600000 3.300000 5.535881 +8.600000 3.400000 5.832448 +8.600000 3.500000 6.149016 +8.600000 3.600000 6.485584 +8.600000 3.700000 6.842152 +8.600000 3.800000 7.218720 +8.600000 3.900000 7.615287 +8.600000 4.000000 8.031855 +8.600000 4.100000 8.468423 +8.600000 4.200000 8.924991 +8.600000 4.300000 9.401558 +8.600000 4.400000 9.898126 +8.600000 4.500000 10.414694 +8.600000 4.600000 10.951262 +8.600000 4.700000 11.507829 +8.600000 4.800000 12.084397 +8.600000 4.900000 12.680965 +8.600000 5.000000 13.297533 +8.600000 5.100000 13.934100 +8.600000 5.200000 14.590668 +8.600000 5.300000 15.267236 +8.600000 5.400000 15.963804 +8.600000 5.500000 16.680371 +8.600000 5.600000 17.416939 +8.600000 5.700000 18.173507 +8.600000 5.800000 18.950075 +8.600000 5.900000 19.746643 +8.600000 6.000000 20.563210 +8.600000 6.100000 21.399778 +8.600000 6.200000 22.256346 +8.600000 6.300000 23.132914 +8.600000 6.400000 24.029481 +8.600000 6.500000 24.946049 +8.600000 6.600000 25.882617 +8.600000 6.700000 26.839185 +8.600000 6.800000 27.815752 +8.600000 6.900000 28.812320 +8.600000 7.000000 29.828888 +8.600000 7.100000 30.865456 +8.600000 7.200000 31.922023 +8.600000 7.300000 32.998591 +8.600000 7.400000 34.095159 +8.600000 7.500000 35.211727 +8.600000 7.600000 36.348294 +8.600000 7.700000 37.504862 +8.600000 7.800000 38.681430 +8.600000 7.900000 39.877998 +8.600000 8.000000 41.094566 +8.600000 8.100000 42.331133 +8.600000 8.200000 43.587701 +8.600000 8.300000 44.864269 +8.600000 8.400000 46.160837 +8.600000 8.500000 47.477404 +8.600000 8.600000 48.813972 +8.600000 8.700000 50.170540 +8.600000 8.800000 51.547108 +8.600000 8.900000 52.943675 +8.600000 9.000000 54.360243 +8.600000 9.100000 55.796811 +8.600000 9.200000 57.253379 +8.600000 9.300000 58.729946 +8.600000 9.400000 60.226514 +8.600000 9.500000 61.743082 +8.600000 9.600000 63.279650 +8.600000 9.700000 64.836217 +8.600000 9.800000 66.412785 +8.600000 9.900000 68.009353 +8.600000 10.000000 69.625921 +8.600000 10.100000 71.262489 +8.600000 10.200000 72.919056 +8.600000 10.300000 74.595624 +8.600000 10.400000 76.292192 +8.600000 10.500000 78.008760 +8.600000 10.600000 79.745327 +8.600000 10.700000 81.501895 +8.600000 10.800000 83.278463 +8.600000 10.900000 85.075031 +8.600000 11.000000 86.891598 +8.600000 11.100000 88.728166 +8.600000 11.200000 90.584734 +8.600000 11.300000 92.461302 +8.600000 11.400000 94.357869 +8.600000 11.500000 96.274437 +8.600000 11.600000 98.211005 +8.600000 11.700000 100.167573 +8.600000 11.800000 102.144140 +8.600000 11.900000 104.140708 +8.600000 12.000000 106.157276 +8.600000 12.100000 108.193844 +8.600000 12.200000 110.250412 +8.600000 12.300000 112.326979 +8.600000 12.400000 114.423547 +8.600000 12.500000 116.540115 +8.600000 12.600000 118.676683 +8.600000 12.700000 120.833250 +8.600000 12.800000 123.009818 +8.600000 12.900000 125.206386 +8.600000 13.000000 127.422954 +8.600000 13.100000 129.659521 +8.600000 13.200000 131.916089 +8.600000 13.300000 134.192657 +8.600000 13.400000 136.489225 +8.600000 13.500000 138.805792 +8.600000 13.600000 141.142360 +8.600000 13.700000 143.498928 +8.600000 13.800000 145.875496 +8.600000 13.900000 148.272063 +8.600000 14.000000 150.688631 +8.600000 14.100000 153.125199 +8.600000 14.200000 155.581767 +8.600000 14.300000 158.058335 +8.600000 14.400000 160.554902 +8.600000 14.500000 163.071470 +8.600000 14.600000 165.608038 +8.600000 14.700000 168.164606 +8.600000 14.800000 170.741173 +8.600000 14.900000 173.337741 +8.600000 15.000000 175.954309 + +8.700000 -5.000000 50.857040 +8.700000 -4.900000 49.480741 +8.700000 -4.800000 48.124442 +8.700000 -4.700000 46.788142 +8.700000 -4.600000 45.471843 +8.700000 -4.500000 44.175544 +8.700000 -4.400000 42.899245 +8.700000 -4.300000 41.642946 +8.700000 -4.200000 40.406647 +8.700000 -4.100000 39.190348 +8.700000 -4.000000 37.994049 +8.700000 -3.900000 36.817750 +8.700000 -3.800000 35.661451 +8.700000 -3.700000 34.525152 +8.700000 -3.600000 33.408852 +8.700000 -3.500000 32.312553 +8.700000 -3.400000 31.236254 +8.700000 -3.300000 30.179955 +8.700000 -3.200000 29.143656 +8.700000 -3.100000 28.127357 +8.700000 -3.000000 27.131058 +8.700000 -2.900000 26.154759 +8.700000 -2.800000 25.198460 +8.700000 -2.700000 24.262161 +8.700000 -2.600000 23.345862 +8.700000 -2.500000 22.449562 +8.700000 -2.400000 21.573263 +8.700000 -2.300000 20.716964 +8.700000 -2.200000 19.880665 +8.700000 -2.100000 19.064366 +8.700000 -2.000000 18.268067 +8.700000 -1.900000 17.491768 +8.700000 -1.800000 16.735469 +8.700000 -1.700000 15.999170 +8.700000 -1.600000 15.282871 +8.700000 -1.500000 14.586572 +8.700000 -1.400000 13.910273 +8.700000 -1.300000 13.253973 +8.700000 -1.200000 12.617674 +8.700000 -1.100000 12.001375 +8.700000 -1.000000 11.405076 +8.700000 -0.900000 10.828777 +8.700000 -0.800000 10.272478 +8.700000 -0.700000 9.736179 +8.700000 -0.600000 9.219880 +8.700000 -0.500000 8.723581 +8.700000 -0.400000 8.247282 +8.700000 -0.300000 7.790983 +8.700000 -0.200000 7.354683 +8.700000 -0.100000 6.938384 +8.700000 -0.000000 6.542085 +8.700000 0.100000 6.165786 +8.700000 0.200000 5.809487 +8.700000 0.300000 5.473188 +8.700000 0.400000 5.156889 +8.700000 0.500000 4.860590 +8.700000 0.600000 4.584291 +8.700000 0.700000 4.327992 +8.700000 0.800000 4.091693 +8.700000 0.900000 3.875393 +8.700000 1.000000 3.679094 +8.700000 1.100000 3.502795 +8.700000 1.200000 3.346496 +8.700000 1.300000 3.210197 +8.700000 1.400000 3.093898 +8.700000 1.500000 2.997599 +8.700000 1.600000 2.921300 +8.700000 1.700000 2.865001 +8.700000 1.800000 2.828702 +8.700000 1.900000 2.812403 +8.700000 2.000000 2.816103 +8.700000 2.100000 2.839804 +8.700000 2.200000 2.883505 +8.700000 2.300000 2.947206 +8.700000 2.400000 3.030907 +8.700000 2.500000 3.134608 +8.700000 2.600000 3.258309 +8.700000 2.700000 3.402010 +8.700000 2.800000 3.565711 +8.700000 2.900000 3.749412 +8.700000 3.000000 3.953113 +8.700000 3.100000 4.176813 +8.700000 3.200000 4.420514 +8.700000 3.300000 4.684215 +8.700000 3.400000 4.967916 +8.700000 3.500000 5.271617 +8.700000 3.600000 5.595318 +8.700000 3.700000 5.939019 +8.700000 3.800000 6.302720 +8.700000 3.900000 6.686421 +8.700000 4.000000 7.090122 +8.700000 4.100000 7.513823 +8.700000 4.200000 7.957523 +8.700000 4.300000 8.421224 +8.700000 4.400000 8.904925 +8.700000 4.500000 9.408626 +8.700000 4.600000 9.932327 +8.700000 4.700000 10.476028 +8.700000 4.800000 11.039729 +8.700000 4.900000 11.623430 +8.700000 5.000000 12.227131 +8.700000 5.100000 12.850832 +8.700000 5.200000 13.494533 +8.700000 5.300000 14.158233 +8.700000 5.400000 14.841934 +8.700000 5.500000 15.545635 +8.700000 5.600000 16.269336 +8.700000 5.700000 17.013037 +8.700000 5.800000 17.776738 +8.700000 5.900000 18.560439 +8.700000 6.000000 19.364140 +8.700000 6.100000 20.187841 +8.700000 6.200000 21.031542 +8.700000 6.300000 21.895243 +8.700000 6.400000 22.778944 +8.700000 6.500000 23.682644 +8.700000 6.600000 24.606345 +8.700000 6.700000 25.550046 +8.700000 6.800000 26.513747 +8.700000 6.900000 27.497448 +8.700000 7.000000 28.501149 +8.700000 7.100000 29.524850 +8.700000 7.200000 30.568551 +8.700000 7.300000 31.632252 +8.700000 7.400000 32.715953 +8.700000 7.500000 33.819654 +8.700000 7.600000 34.943354 +8.700000 7.700000 36.087055 +8.700000 7.800000 37.250756 +8.700000 7.900000 38.434457 +8.700000 8.000000 39.638158 +8.700000 8.100000 40.861859 +8.700000 8.200000 42.105560 +8.700000 8.300000 43.369261 +8.700000 8.400000 44.652962 +8.700000 8.500000 45.956663 +8.700000 8.600000 47.280364 +8.700000 8.700000 48.624064 +8.700000 8.800000 49.987765 +8.700000 8.900000 51.371466 +8.700000 9.000000 52.775167 +8.700000 9.100000 54.198868 +8.700000 9.200000 55.642569 +8.700000 9.300000 57.106270 +8.700000 9.400000 58.589971 +8.700000 9.500000 60.093672 +8.700000 9.600000 61.617373 +8.700000 9.700000 63.161074 +8.700000 9.800000 64.724774 +8.700000 9.900000 66.308475 +8.700000 10.000000 67.912176 +8.700000 10.100000 69.535877 +8.700000 10.200000 71.179578 +8.700000 10.300000 72.843279 +8.700000 10.400000 74.526980 +8.700000 10.500000 76.230681 +8.700000 10.600000 77.954382 +8.700000 10.700000 79.698083 +8.700000 10.800000 81.461784 +8.700000 10.900000 83.245484 +8.700000 11.000000 85.049185 +8.700000 11.100000 86.872886 +8.700000 11.200000 88.716587 +8.700000 11.300000 90.580288 +8.700000 11.400000 92.463989 +8.700000 11.500000 94.367690 +8.700000 11.600000 96.291391 +8.700000 11.700000 98.235092 +8.700000 11.800000 100.198793 +8.700000 11.900000 102.182494 +8.700000 12.000000 104.186194 +8.700000 12.100000 106.209895 +8.700000 12.200000 108.253596 +8.700000 12.300000 110.317297 +8.700000 12.400000 112.400998 +8.700000 12.500000 114.504699 +8.700000 12.600000 116.628400 +8.700000 12.700000 118.772101 +8.700000 12.800000 120.935802 +8.700000 12.900000 123.119503 +8.700000 13.000000 125.323204 +8.700000 13.100000 127.546905 +8.700000 13.200000 129.790605 +8.700000 13.300000 132.054306 +8.700000 13.400000 134.338007 +8.700000 13.500000 136.641708 +8.700000 13.600000 138.965409 +8.700000 13.700000 141.309110 +8.700000 13.800000 143.672811 +8.700000 13.900000 146.056512 +8.700000 14.000000 148.460213 +8.700000 14.100000 150.883914 +8.700000 14.200000 153.327615 +8.700000 14.300000 155.791315 +8.700000 14.400000 158.275016 +8.700000 14.500000 160.778717 +8.700000 14.600000 163.302418 +8.700000 14.700000 165.846119 +8.700000 14.800000 168.409820 +8.700000 14.900000 170.993521 +8.700000 15.000000 173.597222 + +8.800000 -5.000000 51.189584 +8.800000 -4.900000 49.799901 +8.800000 -4.800000 48.430218 +8.800000 -4.700000 47.080536 +8.800000 -4.600000 45.750853 +8.800000 -4.500000 44.441170 +8.800000 -4.400000 43.151488 +8.800000 -4.300000 41.881805 +8.800000 -4.200000 40.632122 +8.800000 -4.100000 39.402439 +8.800000 -4.000000 38.192757 +8.800000 -3.900000 37.003074 +8.800000 -3.800000 35.833391 +8.800000 -3.700000 34.683709 +8.800000 -3.600000 33.554026 +8.800000 -3.500000 32.444343 +8.800000 -3.400000 31.354661 +8.800000 -3.300000 30.284978 +8.800000 -3.200000 29.235295 +8.800000 -3.100000 28.205613 +8.800000 -3.000000 27.195930 +8.800000 -2.900000 26.206247 +8.800000 -2.800000 25.236565 +8.800000 -2.700000 24.286882 +8.800000 -2.600000 23.357199 +8.800000 -2.500000 22.447517 +8.800000 -2.400000 21.557834 +8.800000 -2.300000 20.688151 +8.800000 -2.200000 19.838469 +8.800000 -2.100000 19.008786 +8.800000 -2.000000 18.199103 +8.800000 -1.900000 17.409421 +8.800000 -1.800000 16.639738 +8.800000 -1.700000 15.890055 +8.800000 -1.600000 15.160372 +8.800000 -1.500000 14.450690 +8.800000 -1.400000 13.761007 +8.800000 -1.300000 13.091324 +8.800000 -1.200000 12.441642 +8.800000 -1.100000 11.811959 +8.800000 -1.000000 11.202276 +8.800000 -0.900000 10.612594 +8.800000 -0.800000 10.042911 +8.800000 -0.700000 9.493228 +8.800000 -0.600000 8.963546 +8.800000 -0.500000 8.453863 +8.800000 -0.400000 7.964180 +8.800000 -0.300000 7.494498 +8.800000 -0.200000 7.044815 +8.800000 -0.100000 6.615132 +8.800000 -0.000000 6.205450 +8.800000 0.100000 5.815767 +8.800000 0.200000 5.446084 +8.800000 0.300000 5.096402 +8.800000 0.400000 4.766719 +8.800000 0.500000 4.457036 +8.800000 0.600000 4.167354 +8.800000 0.700000 3.897671 +8.800000 0.800000 3.647988 +8.800000 0.900000 3.418306 +8.800000 1.000000 3.208623 +8.800000 1.100000 3.018940 +8.800000 1.200000 2.849257 +8.800000 1.300000 2.699575 +8.800000 1.400000 2.569892 +8.800000 1.500000 2.460209 +8.800000 1.600000 2.370527 +8.800000 1.700000 2.300844 +8.800000 1.800000 2.251161 +8.800000 1.900000 2.221479 +8.800000 2.000000 2.211796 +8.800000 2.100000 2.222113 +8.800000 2.200000 2.252431 +8.800000 2.300000 2.302748 +8.800000 2.400000 2.373065 +8.800000 2.500000 2.463383 +8.800000 2.600000 2.573700 +8.800000 2.700000 2.704017 +8.800000 2.800000 2.854335 +8.800000 2.900000 3.024652 +8.800000 3.000000 3.214969 +8.800000 3.100000 3.425287 +8.800000 3.200000 3.655604 +8.800000 3.300000 3.905921 +8.800000 3.400000 4.176239 +8.800000 3.500000 4.466556 +8.800000 3.600000 4.776873 +8.800000 3.700000 5.107190 +8.800000 3.800000 5.457508 +8.800000 3.900000 5.827825 +8.800000 4.000000 6.218142 +8.800000 4.100000 6.628460 +8.800000 4.200000 7.058777 +8.800000 4.300000 7.509094 +8.800000 4.400000 7.979412 +8.800000 4.500000 8.469729 +8.800000 4.600000 8.980046 +8.800000 4.700000 9.510364 +8.800000 4.800000 10.060681 +8.800000 4.900000 10.630998 +8.800000 5.000000 11.221316 +8.800000 5.100000 11.831633 +8.800000 5.200000 12.461950 +8.800000 5.300000 13.112268 +8.800000 5.400000 13.782585 +8.800000 5.500000 14.472902 +8.800000 5.600000 15.183220 +8.800000 5.700000 15.913537 +8.800000 5.800000 16.663854 +8.800000 5.900000 17.434172 +8.800000 6.000000 18.224489 +8.800000 6.100000 19.034806 +8.800000 6.200000 19.865124 +8.800000 6.300000 20.715441 +8.800000 6.400000 21.585758 +8.800000 6.500000 22.476075 +8.800000 6.600000 23.386393 +8.800000 6.700000 24.316710 +8.800000 6.800000 25.267027 +8.800000 6.900000 26.237345 +8.800000 7.000000 27.227662 +8.800000 7.100000 28.237979 +8.800000 7.200000 29.268297 +8.800000 7.300000 30.318614 +8.800000 7.400000 31.388931 +8.800000 7.500000 32.479249 +8.800000 7.600000 33.589566 +8.800000 7.700000 34.719883 +8.800000 7.800000 35.870201 +8.800000 7.900000 37.040518 +8.800000 8.000000 38.230835 +8.800000 8.100000 39.441153 +8.800000 8.200000 40.671470 +8.800000 8.300000 41.921787 +8.800000 8.400000 43.192105 +8.800000 8.500000 44.482422 +8.800000 8.600000 45.792739 +8.800000 8.700000 47.123057 +8.800000 8.800000 48.473374 +8.800000 8.900000 49.843691 +8.800000 9.000000 51.234008 +8.800000 9.100000 52.644326 +8.800000 9.200000 54.074643 +8.800000 9.300000 55.524960 +8.800000 9.400000 56.995278 +8.800000 9.500000 58.485595 +8.800000 9.600000 59.995912 +8.800000 9.700000 61.526230 +8.800000 9.800000 63.076547 +8.800000 9.900000 64.646864 +8.800000 10.000000 66.237182 +8.800000 10.100000 67.847499 +8.800000 10.200000 69.477816 +8.800000 10.300000 71.128134 +8.800000 10.400000 72.798451 +8.800000 10.500000 74.488768 +8.800000 10.600000 76.199086 +8.800000 10.700000 77.929403 +8.800000 10.800000 79.679720 +8.800000 10.900000 81.450038 +8.800000 11.000000 83.240355 +8.800000 11.100000 85.050672 +8.800000 11.200000 86.880990 +8.800000 11.300000 88.731307 +8.800000 11.400000 90.601624 +8.800000 11.500000 92.491942 +8.800000 11.600000 94.402259 +8.800000 11.700000 96.332576 +8.800000 11.800000 98.282893 +8.800000 11.900000 100.253211 +8.800000 12.000000 102.243528 +8.800000 12.100000 104.253845 +8.800000 12.200000 106.284163 +8.800000 12.300000 108.334480 +8.800000 12.400000 110.404797 +8.800000 12.500000 112.495115 +8.800000 12.600000 114.605432 +8.800000 12.700000 116.735749 +8.800000 12.800000 118.886067 +8.800000 12.900000 121.056384 +8.800000 13.000000 123.246701 +8.800000 13.100000 125.457019 +8.800000 13.200000 127.687336 +8.800000 13.300000 129.937653 +8.800000 13.400000 132.207971 +8.800000 13.500000 134.498288 +8.800000 13.600000 136.808605 +8.800000 13.700000 139.138923 +8.800000 13.800000 141.489240 +8.800000 13.900000 143.859557 +8.800000 14.000000 146.249875 +8.800000 14.100000 148.660192 +8.800000 14.200000 151.090509 +8.800000 14.300000 153.540826 +8.800000 14.400000 156.011144 +8.800000 14.500000 158.501461 +8.800000 14.600000 161.011778 +8.800000 14.700000 163.542096 +8.800000 14.800000 166.092413 +8.800000 14.900000 168.662730 +8.800000 15.000000 171.253048 + +8.900000 -5.000000 51.645417 +8.900000 -4.900000 50.241834 +8.900000 -4.800000 48.858251 +8.900000 -4.700000 47.494668 +8.900000 -4.600000 46.151085 +8.900000 -4.500000 44.827502 +8.900000 -4.400000 43.523919 +8.900000 -4.300000 42.240336 +8.900000 -4.200000 40.976753 +8.900000 -4.100000 39.733170 +8.900000 -4.000000 38.509586 +8.900000 -3.900000 37.306003 +8.900000 -3.800000 36.122420 +8.900000 -3.700000 34.958837 +8.900000 -3.600000 33.815254 +8.900000 -3.500000 32.691671 +8.900000 -3.400000 31.588088 +8.900000 -3.300000 30.504505 +8.900000 -3.200000 29.440922 +8.900000 -3.100000 28.397339 +8.900000 -3.000000 27.373756 +8.900000 -2.900000 26.370173 +8.900000 -2.800000 25.386590 +8.900000 -2.700000 24.423007 +8.900000 -2.600000 23.479424 +8.900000 -2.500000 22.555841 +8.900000 -2.400000 21.652258 +8.900000 -2.300000 20.768675 +8.900000 -2.200000 19.905092 +8.900000 -2.100000 19.061509 +8.900000 -2.000000 18.237926 +8.900000 -1.900000 17.434343 +8.900000 -1.800000 16.650760 +8.900000 -1.700000 15.887177 +8.900000 -1.600000 15.143594 +8.900000 -1.500000 14.420011 +8.900000 -1.400000 13.716428 +8.900000 -1.300000 13.032845 +8.900000 -1.200000 12.369262 +8.900000 -1.100000 11.725679 +8.900000 -1.000000 11.102096 +8.900000 -0.900000 10.498513 +8.900000 -0.800000 9.914930 +8.900000 -0.700000 9.351347 +8.900000 -0.600000 8.807764 +8.900000 -0.500000 8.284181 +8.900000 -0.400000 7.780598 +8.900000 -0.300000 7.297015 +8.900000 -0.200000 6.833432 +8.900000 -0.100000 6.389849 +8.900000 -0.000000 5.966266 +8.900000 0.100000 5.562683 +8.900000 0.200000 5.179100 +8.900000 0.300000 4.815517 +8.900000 0.400000 4.471934 +8.900000 0.500000 4.148351 +8.900000 0.600000 3.844768 +8.900000 0.700000 3.561185 +8.900000 0.800000 3.297602 +8.900000 0.900000 3.054019 +8.900000 1.000000 2.830436 +8.900000 1.100000 2.626853 +8.900000 1.200000 2.443270 +8.900000 1.300000 2.279687 +8.900000 1.400000 2.136104 +8.900000 1.500000 2.012521 +8.900000 1.600000 1.908938 +8.900000 1.700000 1.825355 +8.900000 1.800000 1.761772 +8.900000 1.900000 1.718189 +8.900000 2.000000 1.694606 +8.900000 2.100000 1.691023 +8.900000 2.200000 1.707440 +8.900000 2.300000 1.743857 +8.900000 2.400000 1.800274 +8.900000 2.500000 1.876691 +8.900000 2.600000 1.973108 +8.900000 2.700000 2.089525 +8.900000 2.800000 2.225942 +8.900000 2.900000 2.382359 +8.900000 3.000000 2.558776 +8.900000 3.100000 2.755193 +8.900000 3.200000 2.971610 +8.900000 3.300000 3.208027 +8.900000 3.400000 3.464444 +8.900000 3.500000 3.740861 +8.900000 3.600000 4.037278 +8.900000 3.700000 4.353695 +8.900000 3.800000 4.690112 +8.900000 3.900000 5.046529 +8.900000 4.000000 5.422946 +8.900000 4.100000 5.819363 +8.900000 4.200000 6.235780 +8.900000 4.300000 6.672197 +8.900000 4.400000 7.128614 +8.900000 4.500000 7.605031 +8.900000 4.600000 8.101448 +8.900000 4.700000 8.617865 +8.900000 4.800000 9.154282 +8.900000 4.900000 9.710699 +8.900000 5.000000 10.287116 +8.900000 5.100000 10.883533 +8.900000 5.200000 11.499950 +8.900000 5.300000 12.136367 +8.900000 5.400000 12.792784 +8.900000 5.500000 13.469201 +8.900000 5.600000 14.165618 +8.900000 5.700000 14.882035 +8.900000 5.800000 15.618452 +8.900000 5.900000 16.374869 +8.900000 6.000000 17.151286 +8.900000 6.100000 17.947703 +8.900000 6.200000 18.764120 +8.900000 6.300000 19.600537 +8.900000 6.400000 20.456954 +8.900000 6.500000 21.333371 +8.900000 6.600000 22.229788 +8.900000 6.700000 23.146205 +8.900000 6.800000 24.082622 +8.900000 6.900000 25.039039 +8.900000 7.000000 26.015456 +8.900000 7.100000 27.011873 +8.900000 7.200000 28.028290 +8.900000 7.300000 29.064707 +8.900000 7.400000 30.121124 +8.900000 7.500000 31.197541 +8.900000 7.600000 32.293958 +8.900000 7.700000 33.410375 +8.900000 7.800000 34.546792 +8.900000 7.900000 35.703209 +8.900000 8.000000 36.879626 +8.900000 8.100000 38.076043 +8.900000 8.200000 39.292460 +8.900000 8.300000 40.528877 +8.900000 8.400000 41.785294 +8.900000 8.500000 43.061711 +8.900000 8.600000 44.358128 +8.900000 8.700000 45.674545 +8.900000 8.800000 47.010962 +8.900000 8.900000 48.367379 +8.900000 9.000000 49.743796 +8.900000 9.100000 51.140213 +8.900000 9.200000 52.556630 +8.900000 9.300000 53.993047 +8.900000 9.400000 55.449464 +8.900000 9.500000 56.925881 +8.900000 9.600000 58.422298 +8.900000 9.700000 59.938715 +8.900000 9.800000 61.475132 +8.900000 9.900000 63.031549 +8.900000 10.000000 64.607966 +8.900000 10.100000 66.204383 +8.900000 10.200000 67.820800 +8.900000 10.300000 69.457217 +8.900000 10.400000 71.113634 +8.900000 10.500000 72.790051 +8.900000 10.600000 74.486468 +8.900000 10.700000 76.202884 +8.900000 10.800000 77.939301 +8.900000 10.900000 79.695718 +8.900000 11.000000 81.472135 +8.900000 11.100000 83.268552 +8.900000 11.200000 85.084969 +8.900000 11.300000 86.921386 +8.900000 11.400000 88.777803 +8.900000 11.500000 90.654220 +8.900000 11.600000 92.550637 +8.900000 11.700000 94.467054 +8.900000 11.800000 96.403471 +8.900000 11.900000 98.359888 +8.900000 12.000000 100.336305 +8.900000 12.100000 102.332722 +8.900000 12.200000 104.349139 +8.900000 12.300000 106.385556 +8.900000 12.400000 108.441973 +8.900000 12.500000 110.518390 +8.900000 12.600000 112.614807 +8.900000 12.700000 114.731224 +8.900000 12.800000 116.867641 +8.900000 12.900000 119.024058 +8.900000 13.000000 121.200475 +8.900000 13.100000 123.396892 +8.900000 13.200000 125.613309 +8.900000 13.300000 127.849726 +8.900000 13.400000 130.106143 +8.900000 13.500000 132.382560 +8.900000 13.600000 134.678977 +8.900000 13.700000 136.995394 +8.900000 13.800000 139.331811 +8.900000 13.900000 141.688228 +8.900000 14.000000 144.064645 +8.900000 14.100000 146.461062 +8.900000 14.200000 148.877479 +8.900000 14.300000 151.313896 +8.900000 14.400000 153.770313 +8.900000 14.500000 156.246730 +8.900000 14.600000 158.743147 +8.900000 14.700000 161.259564 +8.900000 14.800000 163.795981 +8.900000 14.900000 166.352398 +8.900000 15.000000 168.928815 + +9.000000 -5.000000 52.230830 +9.000000 -4.900000 50.812830 +9.000000 -4.800000 49.414830 +9.000000 -4.700000 48.036830 +9.000000 -4.600000 46.678829 +9.000000 -4.500000 45.340829 +9.000000 -4.400000 44.022829 +9.000000 -4.300000 42.724829 +9.000000 -4.200000 41.446829 +9.000000 -4.100000 40.188829 +9.000000 -4.000000 38.950829 +9.000000 -3.900000 37.732829 +9.000000 -3.800000 36.534829 +9.000000 -3.700000 35.356829 +9.000000 -3.600000 34.198829 +9.000000 -3.500000 33.060829 +9.000000 -3.400000 31.942829 +9.000000 -3.300000 30.844829 +9.000000 -3.200000 29.766828 +9.000000 -3.100000 28.708828 +9.000000 -3.000000 27.670828 +9.000000 -2.900000 26.652828 +9.000000 -2.800000 25.654828 +9.000000 -2.700000 24.676828 +9.000000 -2.600000 23.718828 +9.000000 -2.500000 22.780828 +9.000000 -2.400000 21.862828 +9.000000 -2.300000 20.964828 +9.000000 -2.200000 20.086828 +9.000000 -2.100000 19.228828 +9.000000 -2.000000 18.390828 +9.000000 -1.900000 17.572828 +9.000000 -1.800000 16.774827 +9.000000 -1.700000 15.996827 +9.000000 -1.600000 15.238827 +9.000000 -1.500000 14.500827 +9.000000 -1.400000 13.782827 +9.000000 -1.300000 13.084827 +9.000000 -1.200000 12.406827 +9.000000 -1.100000 11.748827 +9.000000 -1.000000 11.110827 +9.000000 -0.900000 10.492827 +9.000000 -0.800000 9.894827 +9.000000 -0.700000 9.316827 +9.000000 -0.600000 8.758827 +9.000000 -0.500000 8.220827 +9.000000 -0.400000 7.702826 +9.000000 -0.300000 7.204826 +9.000000 -0.200000 6.726826 +9.000000 -0.100000 6.268826 +9.000000 -0.000000 5.830826 +9.000000 0.100000 5.412826 +9.000000 0.200000 5.014826 +9.000000 0.300000 4.636826 +9.000000 0.400000 4.278826 +9.000000 0.500000 3.940826 +9.000000 0.600000 3.622826 +9.000000 0.700000 3.324826 +9.000000 0.800000 3.046826 +9.000000 0.900000 2.788825 +9.000000 1.000000 2.550825 +9.000000 1.100000 2.332825 +9.000000 1.200000 2.134825 +9.000000 1.300000 1.956825 +9.000000 1.400000 1.798825 +9.000000 1.500000 1.660825 +9.000000 1.600000 1.542825 +9.000000 1.700000 1.444825 +9.000000 1.800000 1.366825 +9.000000 1.900000 1.308825 +9.000000 2.000000 1.270825 +9.000000 2.100000 1.252825 +9.000000 2.200000 1.254825 +9.000000 2.300000 1.276824 +9.000000 2.400000 1.318824 +9.000000 2.500000 1.380824 +9.000000 2.600000 1.462824 +9.000000 2.700000 1.564824 +9.000000 2.800000 1.686824 +9.000000 2.900000 1.828824 +9.000000 3.000000 1.990824 +9.000000 3.100000 2.172824 +9.000000 3.200000 2.374824 +9.000000 3.300000 2.596824 +9.000000 3.400000 2.838824 +9.000000 3.500000 3.100824 +9.000000 3.600000 3.382824 +9.000000 3.700000 3.684823 +9.000000 3.800000 4.006823 +9.000000 3.900000 4.348823 +9.000000 4.000000 4.710823 +9.000000 4.100000 5.092823 +9.000000 4.200000 5.494823 +9.000000 4.300000 5.916823 +9.000000 4.400000 6.358823 +9.000000 4.500000 6.820823 +9.000000 4.600000 7.302823 +9.000000 4.700000 7.804823 +9.000000 4.800000 8.326823 +9.000000 4.900000 8.868823 +9.000000 5.000000 9.430823 +9.000000 5.100000 10.012822 +9.000000 5.200000 10.614822 +9.000000 5.300000 11.236822 +9.000000 5.400000 11.878822 +9.000000 5.500000 12.540822 +9.000000 5.600000 13.222822 +9.000000 5.700000 13.924822 +9.000000 5.800000 14.646822 +9.000000 5.900000 15.388822 +9.000000 6.000000 16.150822 +9.000000 6.100000 16.932822 +9.000000 6.200000 17.734822 +9.000000 6.300000 18.556822 +9.000000 6.400000 19.398822 +9.000000 6.500000 20.260821 +9.000000 6.600000 21.142821 +9.000000 6.700000 22.044821 +9.000000 6.800000 22.966821 +9.000000 6.900000 23.908821 +9.000000 7.000000 24.870821 +9.000000 7.100000 25.852821 +9.000000 7.200000 26.854821 +9.000000 7.300000 27.876821 +9.000000 7.400000 28.918821 +9.000000 7.500000 29.980821 +9.000000 7.600000 31.062821 +9.000000 7.700000 32.164821 +9.000000 7.800000 33.286820 +9.000000 7.900000 34.428820 +9.000000 8.000000 35.590820 +9.000000 8.100000 36.772820 +9.000000 8.200000 37.974820 +9.000000 8.300000 39.196820 +9.000000 8.400000 40.438820 +9.000000 8.500000 41.700820 +9.000000 8.600000 42.982820 +9.000000 8.700000 44.284820 +9.000000 8.800000 45.606820 +9.000000 8.900000 46.948820 +9.000000 9.000000 48.310820 +9.000000 9.100000 49.692820 +9.000000 9.200000 51.094819 +9.000000 9.300000 52.516819 +9.000000 9.400000 53.958819 +9.000000 9.500000 55.420819 +9.000000 9.600000 56.902819 +9.000000 9.700000 58.404819 +9.000000 9.800000 59.926819 +9.000000 9.900000 61.468819 +9.000000 10.000000 63.030819 +9.000000 10.100000 64.612819 +9.000000 10.200000 66.214819 +9.000000 10.300000 67.836819 +9.000000 10.400000 69.478819 +9.000000 10.500000 71.140819 +9.000000 10.600000 72.822818 +9.000000 10.700000 74.524818 +9.000000 10.800000 76.246818 +9.000000 10.900000 77.988818 +9.000000 11.000000 79.750818 +9.000000 11.100000 81.532818 +9.000000 11.200000 83.334818 +9.000000 11.300000 85.156818 +9.000000 11.400000 86.998818 +9.000000 11.500000 88.860818 +9.000000 11.600000 90.742818 +9.000000 11.700000 92.644818 +9.000000 11.800000 94.566818 +9.000000 11.900000 96.508818 +9.000000 12.000000 98.470817 +9.000000 12.100000 100.452817 +9.000000 12.200000 102.454817 +9.000000 12.300000 104.476817 +9.000000 12.400000 106.518817 +9.000000 12.500000 108.580817 +9.000000 12.600000 110.662817 +9.000000 12.700000 112.764817 +9.000000 12.800000 114.886817 +9.000000 12.900000 117.028817 +9.000000 13.000000 119.190817 +9.000000 13.100000 121.372817 +9.000000 13.200000 123.574817 +9.000000 13.300000 125.796817 +9.000000 13.400000 128.038816 +9.000000 13.500000 130.300816 +9.000000 13.600000 132.582816 +9.000000 13.700000 134.884816 +9.000000 13.800000 137.206816 +9.000000 13.900000 139.548816 +9.000000 14.000000 141.910816 +9.000000 14.100000 144.292816 +9.000000 14.200000 146.694816 +9.000000 14.300000 149.116816 +9.000000 14.400000 151.558816 +9.000000 14.500000 154.020816 +9.000000 14.600000 156.502816 +9.000000 14.700000 159.004815 +9.000000 14.800000 161.526815 +9.000000 14.900000 164.068815 +9.000000 15.000000 166.630815 + +9.100000 -5.000000 52.951325 +9.100000 -4.900000 51.518391 +9.100000 -4.800000 50.105457 +9.100000 -4.700000 48.712523 +9.100000 -4.600000 47.339589 +9.100000 -4.500000 45.986655 +9.100000 -4.400000 44.653721 +9.100000 -4.300000 43.340788 +9.100000 -4.200000 42.047854 +9.100000 -4.100000 40.774920 +9.100000 -4.000000 39.521986 +9.100000 -3.900000 38.289052 +9.100000 -3.800000 37.076118 +9.100000 -3.700000 35.883184 +9.100000 -3.600000 34.710250 +9.100000 -3.500000 33.557317 +9.100000 -3.400000 32.424383 +9.100000 -3.300000 31.311449 +9.100000 -3.200000 30.218515 +9.100000 -3.100000 29.145581 +9.100000 -3.000000 28.092647 +9.100000 -2.900000 27.059713 +9.100000 -2.800000 26.046779 +9.100000 -2.700000 25.053846 +9.100000 -2.600000 24.080912 +9.100000 -2.500000 23.127978 +9.100000 -2.400000 22.195044 +9.100000 -2.300000 21.282110 +9.100000 -2.200000 20.389176 +9.100000 -2.100000 19.516242 +9.100000 -2.000000 18.663308 +9.100000 -1.900000 17.830375 +9.100000 -1.800000 17.017441 +9.100000 -1.700000 16.224507 +9.100000 -1.600000 15.451573 +9.100000 -1.500000 14.698639 +9.100000 -1.400000 13.965705 +9.100000 -1.300000 13.252771 +9.100000 -1.200000 12.559837 +9.100000 -1.100000 11.886904 +9.100000 -1.000000 11.233970 +9.100000 -0.900000 10.601036 +9.100000 -0.800000 9.988102 +9.100000 -0.700000 9.395168 +9.100000 -0.600000 8.822234 +9.100000 -0.500000 8.269300 +9.100000 -0.400000 7.736366 +9.100000 -0.300000 7.223433 +9.100000 -0.200000 6.730499 +9.100000 -0.100000 6.257565 +9.100000 -0.000000 5.804631 +9.100000 0.100000 5.371697 +9.100000 0.200000 4.958763 +9.100000 0.300000 4.565829 +9.100000 0.400000 4.192895 +9.100000 0.500000 3.839962 +9.100000 0.600000 3.507028 +9.100000 0.700000 3.194094 +9.100000 0.800000 2.901160 +9.100000 0.900000 2.628226 +9.100000 1.000000 2.375292 +9.100000 1.100000 2.142358 +9.100000 1.200000 1.929424 +9.100000 1.300000 1.736490 +9.100000 1.400000 1.563557 +9.100000 1.500000 1.410623 +9.100000 1.600000 1.277689 +9.100000 1.700000 1.164755 +9.100000 1.800000 1.071821 +9.100000 1.900000 0.998887 +9.100000 2.000000 0.945953 +9.100000 2.100000 0.913019 +9.100000 2.200000 0.900086 +9.100000 2.300000 0.907152 +9.100000 2.400000 0.934218 +9.100000 2.500000 0.981284 +9.100000 2.600000 1.048350 +9.100000 2.700000 1.135416 +9.100000 2.800000 1.242482 +9.100000 2.900000 1.369548 +9.100000 3.000000 1.516615 +9.100000 3.100000 1.683681 +9.100000 3.200000 1.870747 +9.100000 3.300000 2.077813 +9.100000 3.400000 2.304879 +9.100000 3.500000 2.551945 +9.100000 3.600000 2.819011 +9.100000 3.700000 3.106077 +9.100000 3.800000 3.413144 +9.100000 3.900000 3.740210 +9.100000 4.000000 4.087276 +9.100000 4.100000 4.454342 +9.100000 4.200000 4.841408 +9.100000 4.300000 5.248474 +9.100000 4.400000 5.675540 +9.100000 4.500000 6.122606 +9.100000 4.600000 6.589673 +9.100000 4.700000 7.076739 +9.100000 4.800000 7.583805 +9.100000 4.900000 8.110871 +9.100000 5.000000 8.657937 +9.100000 5.100000 9.225003 +9.100000 5.200000 9.812069 +9.100000 5.300000 10.419135 +9.100000 5.400000 11.046202 +9.100000 5.500000 11.693268 +9.100000 5.600000 12.360334 +9.100000 5.700000 13.047400 +9.100000 5.800000 13.754466 +9.100000 5.900000 14.481532 +9.100000 6.000000 15.228598 +9.100000 6.100000 15.995664 +9.100000 6.200000 16.782731 +9.100000 6.300000 17.589797 +9.100000 6.400000 18.416863 +9.100000 6.500000 19.263929 +9.100000 6.600000 20.130995 +9.100000 6.700000 21.018061 +9.100000 6.800000 21.925127 +9.100000 6.900000 22.852193 +9.100000 7.000000 23.799260 +9.100000 7.100000 24.766326 +9.100000 7.200000 25.753392 +9.100000 7.300000 26.760458 +9.100000 7.400000 27.787524 +9.100000 7.500000 28.834590 +9.100000 7.600000 29.901656 +9.100000 7.700000 30.988722 +9.100000 7.800000 32.095789 +9.100000 7.900000 33.222855 +9.100000 8.000000 34.369921 +9.100000 8.100000 35.536987 +9.100000 8.200000 36.724053 +9.100000 8.300000 37.931119 +9.100000 8.400000 39.158185 +9.100000 8.500000 40.405251 +9.100000 8.600000 41.672318 +9.100000 8.700000 42.959384 +9.100000 8.800000 44.266450 +9.100000 8.900000 45.593516 +9.100000 9.000000 46.940582 +9.100000 9.100000 48.307648 +9.100000 9.200000 49.694714 +9.100000 9.300000 51.101780 +9.100000 9.400000 52.528847 +9.100000 9.500000 53.975913 +9.100000 9.600000 55.442979 +9.100000 9.700000 56.930045 +9.100000 9.800000 58.437111 +9.100000 9.900000 59.964177 +9.100000 10.000000 61.511243 +9.100000 10.100000 63.078309 +9.100000 10.200000 64.665376 +9.100000 10.300000 66.272442 +9.100000 10.400000 67.899508 +9.100000 10.500000 69.546574 +9.100000 10.600000 71.213640 +9.100000 10.700000 72.900706 +9.100000 10.800000 74.607772 +9.100000 10.900000 76.334838 +9.100000 11.000000 78.081905 +9.100000 11.100000 79.848971 +9.100000 11.200000 81.636037 +9.100000 11.300000 83.443103 +9.100000 11.400000 85.270169 +9.100000 11.500000 87.117235 +9.100000 11.600000 88.984301 +9.100000 11.700000 90.871367 +9.100000 11.800000 92.778434 +9.100000 11.900000 94.705500 +9.100000 12.000000 96.652566 +9.100000 12.100000 98.619632 +9.100000 12.200000 100.606698 +9.100000 12.300000 102.613764 +9.100000 12.400000 104.640830 +9.100000 12.500000 106.687896 +9.100000 12.600000 108.754962 +9.100000 12.700000 110.842029 +9.100000 12.800000 112.949095 +9.100000 12.900000 115.076161 +9.100000 13.000000 117.223227 +9.100000 13.100000 119.390293 +9.100000 13.200000 121.577359 +9.100000 13.300000 123.784425 +9.100000 13.400000 126.011491 +9.100000 13.500000 128.258558 +9.100000 13.600000 130.525624 +9.100000 13.700000 132.812690 +9.100000 13.800000 135.119756 +9.100000 13.900000 137.446822 +9.100000 14.000000 139.793888 +9.100000 14.100000 142.160954 +9.100000 14.200000 144.548020 +9.100000 14.300000 146.955087 +9.100000 14.400000 149.382153 +9.100000 14.500000 151.829219 +9.100000 14.600000 154.296285 +9.100000 14.700000 156.783351 +9.100000 14.800000 159.290417 +9.100000 14.900000 161.817483 +9.100000 15.000000 164.364549 + +9.200000 -5.000000 53.811569 +9.200000 -4.900000 52.363185 +9.200000 -4.800000 50.934801 +9.200000 -4.700000 49.526416 +9.200000 -4.600000 48.138032 +9.200000 -4.500000 46.769647 +9.200000 -4.400000 45.421263 +9.200000 -4.300000 44.092879 +9.200000 -4.200000 42.784494 +9.200000 -4.100000 41.496110 +9.200000 -4.000000 40.227725 +9.200000 -3.900000 38.979341 +9.200000 -3.800000 37.750956 +9.200000 -3.700000 36.542572 +9.200000 -3.600000 35.354188 +9.200000 -3.500000 34.185803 +9.200000 -3.400000 33.037419 +9.200000 -3.300000 31.909034 +9.200000 -3.200000 30.800650 +9.200000 -3.100000 29.712266 +9.200000 -3.000000 28.643881 +9.200000 -2.900000 27.595497 +9.200000 -2.800000 26.567112 +9.200000 -2.700000 25.558728 +9.200000 -2.600000 24.570343 +9.200000 -2.500000 23.601959 +9.200000 -2.400000 22.653575 +9.200000 -2.300000 21.725190 +9.200000 -2.200000 20.816806 +9.200000 -2.100000 19.928421 +9.200000 -2.000000 19.060037 +9.200000 -1.900000 18.211653 +9.200000 -1.800000 17.383268 +9.200000 -1.700000 16.574884 +9.200000 -1.600000 15.786499 +9.200000 -1.500000 15.018115 +9.200000 -1.400000 14.269730 +9.200000 -1.300000 13.541346 +9.200000 -1.200000 12.832962 +9.200000 -1.100000 12.144577 +9.200000 -1.000000 11.476193 +9.200000 -0.900000 10.827808 +9.200000 -0.800000 10.199424 +9.200000 -0.700000 9.591040 +9.200000 -0.600000 9.002655 +9.200000 -0.500000 8.434271 +9.200000 -0.400000 7.885886 +9.200000 -0.300000 7.357502 +9.200000 -0.200000 6.849117 +9.200000 -0.100000 6.360733 +9.200000 -0.000000 5.892349 +9.200000 0.100000 5.443964 +9.200000 0.200000 5.015580 +9.200000 0.300000 4.607195 +9.200000 0.400000 4.218811 +9.200000 0.500000 3.850427 +9.200000 0.600000 3.502042 +9.200000 0.700000 3.173658 +9.200000 0.800000 2.865273 +9.200000 0.900000 2.576889 +9.200000 1.000000 2.308504 +9.200000 1.100000 2.060120 +9.200000 1.200000 1.831736 +9.200000 1.300000 1.623351 +9.200000 1.400000 1.434967 +9.200000 1.500000 1.266582 +9.200000 1.600000 1.118198 +9.200000 1.700000 0.989813 +9.200000 1.800000 0.881429 +9.200000 1.900000 0.793045 +9.200000 2.000000 0.724660 +9.200000 2.100000 0.676276 +9.200000 2.200000 0.647891 +9.200000 2.300000 0.639507 +9.200000 2.400000 0.651123 +9.200000 2.500000 0.682738 +9.200000 2.600000 0.734354 +9.200000 2.700000 0.805969 +9.200000 2.800000 0.897585 +9.200000 2.900000 1.009200 +9.200000 3.000000 1.140816 +9.200000 3.100000 1.292432 +9.200000 3.200000 1.464047 +9.200000 3.300000 1.655663 +9.200000 3.400000 1.867278 +9.200000 3.500000 2.098894 +9.200000 3.600000 2.350510 +9.200000 3.700000 2.622125 +9.200000 3.800000 2.913741 +9.200000 3.900000 3.225356 +9.200000 4.000000 3.556972 +9.200000 4.100000 3.908587 +9.200000 4.200000 4.280203 +9.200000 4.300000 4.671819 +9.200000 4.400000 5.083434 +9.200000 4.500000 5.515050 +9.200000 4.600000 5.966665 +9.200000 4.700000 6.438281 +9.200000 4.800000 6.929897 +9.200000 4.900000 7.441512 +9.200000 5.000000 7.973128 +9.200000 5.100000 8.524743 +9.200000 5.200000 9.096359 +9.200000 5.300000 9.687974 +9.200000 5.400000 10.299590 +9.200000 5.500000 10.931206 +9.200000 5.600000 11.582821 +9.200000 5.700000 12.254437 +9.200000 5.800000 12.946052 +9.200000 5.900000 13.657668 +9.200000 6.000000 14.389284 +9.200000 6.100000 15.140899 +9.200000 6.200000 15.912515 +9.200000 6.300000 16.704130 +9.200000 6.400000 17.515746 +9.200000 6.500000 18.347361 +9.200000 6.600000 19.198977 +9.200000 6.700000 20.070593 +9.200000 6.800000 20.962208 +9.200000 6.900000 21.873824 +9.200000 7.000000 22.805439 +9.200000 7.100000 23.757055 +9.200000 7.200000 24.728671 +9.200000 7.300000 25.720286 +9.200000 7.400000 26.731902 +9.200000 7.500000 27.763517 +9.200000 7.600000 28.815133 +9.200000 7.700000 29.886748 +9.200000 7.800000 30.978364 +9.200000 7.900000 32.089980 +9.200000 8.000000 33.221595 +9.200000 8.100000 34.373211 +9.200000 8.200000 35.544826 +9.200000 8.300000 36.736442 +9.200000 8.400000 37.948057 +9.200000 8.500000 39.179673 +9.200000 8.600000 40.431289 +9.200000 8.700000 41.702904 +9.200000 8.800000 42.994520 +9.200000 8.900000 44.306135 +9.200000 9.000000 45.637751 +9.200000 9.100000 46.989367 +9.200000 9.200000 48.360982 +9.200000 9.300000 49.752598 +9.200000 9.400000 51.164213 +9.200000 9.500000 52.595829 +9.200000 9.600000 54.047444 +9.200000 9.700000 55.519060 +9.200000 9.800000 57.010676 +9.200000 9.900000 58.522291 +9.200000 10.000000 60.053907 +9.200000 10.100000 61.605522 +9.200000 10.200000 63.177138 +9.200000 10.300000 64.768754 +9.200000 10.400000 66.380369 +9.200000 10.500000 68.011985 +9.200000 10.600000 69.663600 +9.200000 10.700000 71.335216 +9.200000 10.800000 73.026831 +9.200000 10.900000 74.738447 +9.200000 11.000000 76.470063 +9.200000 11.100000 78.221678 +9.200000 11.200000 79.993294 +9.200000 11.300000 81.784909 +9.200000 11.400000 83.596525 +9.200000 11.500000 85.428141 +9.200000 11.600000 87.279756 +9.200000 11.700000 89.151372 +9.200000 11.800000 91.042987 +9.200000 11.900000 92.954603 +9.200000 12.000000 94.886218 +9.200000 12.100000 96.837834 +9.200000 12.200000 98.809450 +9.200000 12.300000 100.801065 +9.200000 12.400000 102.812681 +9.200000 12.500000 104.844296 +9.200000 12.600000 106.895912 +9.200000 12.700000 108.967528 +9.200000 12.800000 111.059143 +9.200000 12.900000 113.170759 +9.200000 13.000000 115.302374 +9.200000 13.100000 117.453990 +9.200000 13.200000 119.625605 +9.200000 13.300000 121.817221 +9.200000 13.400000 124.028837 +9.200000 13.500000 126.260452 +9.200000 13.600000 128.512068 +9.200000 13.700000 130.783683 +9.200000 13.800000 133.075299 +9.200000 13.900000 135.386915 +9.200000 14.000000 137.718530 +9.200000 14.100000 140.070146 +9.200000 14.200000 142.441761 +9.200000 14.300000 144.833377 +9.200000 14.400000 147.244992 +9.200000 14.500000 149.676608 +9.200000 14.600000 152.128224 +9.200000 14.700000 154.599839 +9.200000 14.800000 157.091455 +9.200000 14.900000 159.603070 +9.200000 15.000000 162.134686 + +9.300000 -5.000000 54.815364 +9.300000 -4.900000 53.351012 +9.300000 -4.800000 51.906660 +9.300000 -4.700000 50.482309 +9.300000 -4.600000 49.077957 +9.300000 -4.500000 47.693605 +9.300000 -4.400000 46.329254 +9.300000 -4.300000 44.984902 +9.300000 -4.200000 43.660550 +9.300000 -4.100000 42.356199 +9.300000 -4.000000 41.071847 +9.300000 -3.900000 39.807495 +9.300000 -3.800000 38.563143 +9.300000 -3.700000 37.338792 +9.300000 -3.600000 36.134440 +9.300000 -3.500000 34.950088 +9.300000 -3.400000 33.785737 +9.300000 -3.300000 32.641385 +9.300000 -3.200000 31.517033 +9.300000 -3.100000 30.412682 +9.300000 -3.000000 29.328330 +9.300000 -2.900000 28.263978 +9.300000 -2.800000 27.219627 +9.300000 -2.700000 26.195275 +9.300000 -2.600000 25.190923 +9.300000 -2.500000 24.206571 +9.300000 -2.400000 23.242220 +9.300000 -2.300000 22.297868 +9.300000 -2.200000 21.373516 +9.300000 -2.100000 20.469165 +9.300000 -2.000000 19.584813 +9.300000 -1.900000 18.720461 +9.300000 -1.800000 17.876110 +9.300000 -1.700000 17.051758 +9.300000 -1.600000 16.247406 +9.300000 -1.500000 15.463054 +9.300000 -1.400000 14.698703 +9.300000 -1.300000 13.954351 +9.300000 -1.200000 13.229999 +9.300000 -1.100000 12.525648 +9.300000 -1.000000 11.841296 +9.300000 -0.900000 11.176944 +9.300000 -0.800000 10.532593 +9.300000 -0.700000 9.908241 +9.300000 -0.600000 9.303889 +9.300000 -0.500000 8.719537 +9.300000 -0.400000 8.155186 +9.300000 -0.300000 7.610834 +9.300000 -0.200000 7.086482 +9.300000 -0.100000 6.582131 +9.300000 -0.000000 6.097779 +9.300000 0.100000 5.633427 +9.300000 0.200000 5.189076 +9.300000 0.300000 4.764724 +9.300000 0.400000 4.360372 +9.300000 0.500000 3.976020 +9.300000 0.600000 3.611669 +9.300000 0.700000 3.267317 +9.300000 0.800000 2.942965 +9.300000 0.900000 2.638614 +9.300000 1.000000 2.354262 +9.300000 1.100000 2.089910 +9.300000 1.200000 1.845559 +9.300000 1.300000 1.621207 +9.300000 1.400000 1.416855 +9.300000 1.500000 1.232504 +9.300000 1.600000 1.068152 +9.300000 1.700000 0.923800 +9.300000 1.800000 0.799448 +9.300000 1.900000 0.695097 +9.300000 2.000000 0.610745 +9.300000 2.100000 0.546393 +9.300000 2.200000 0.502042 +9.300000 2.300000 0.477690 +9.300000 2.400000 0.473338 +9.300000 2.500000 0.488987 +9.300000 2.600000 0.524635 +9.300000 2.700000 0.580283 +9.300000 2.800000 0.655931 +9.300000 2.900000 0.751580 +9.300000 3.000000 0.867228 +9.300000 3.100000 1.002876 +9.300000 3.200000 1.158525 +9.300000 3.300000 1.334173 +9.300000 3.400000 1.529821 +9.300000 3.500000 1.745470 +9.300000 3.600000 1.981118 +9.300000 3.700000 2.236766 +9.300000 3.800000 2.512414 +9.300000 3.900000 2.808063 +9.300000 4.000000 3.123711 +9.300000 4.100000 3.459359 +9.300000 4.200000 3.815008 +9.300000 4.300000 4.190656 +9.300000 4.400000 4.586304 +9.300000 4.500000 5.001953 +9.300000 4.600000 5.437601 +9.300000 4.700000 5.893249 +9.300000 4.800000 6.368897 +9.300000 4.900000 6.864546 +9.300000 5.000000 7.380194 +9.300000 5.100000 7.915842 +9.300000 5.200000 8.471491 +9.300000 5.300000 9.047139 +9.300000 5.400000 9.642787 +9.300000 5.500000 10.258436 +9.300000 5.600000 10.894084 +9.300000 5.700000 11.549732 +9.300000 5.800000 12.225381 +9.300000 5.900000 12.921029 +9.300000 6.000000 13.636677 +9.300000 6.100000 14.372325 +9.300000 6.200000 15.127974 +9.300000 6.300000 15.903622 +9.300000 6.400000 16.699270 +9.300000 6.500000 17.514919 +9.300000 6.600000 18.350567 +9.300000 6.700000 19.206215 +9.300000 6.800000 20.081864 +9.300000 6.900000 20.977512 +9.300000 7.000000 21.893160 +9.300000 7.100000 22.828808 +9.300000 7.200000 23.784457 +9.300000 7.300000 24.760105 +9.300000 7.400000 25.755753 +9.300000 7.500000 26.771402 +9.300000 7.600000 27.807050 +9.300000 7.700000 28.862698 +9.300000 7.800000 29.938347 +9.300000 7.900000 31.033995 +9.300000 8.000000 32.149643 +9.300000 8.100000 33.285291 +9.300000 8.200000 34.440940 +9.300000 8.300000 35.616588 +9.300000 8.400000 36.812236 +9.300000 8.500000 38.027885 +9.300000 8.600000 39.263533 +9.300000 8.700000 40.519181 +9.300000 8.800000 41.794830 +9.300000 8.900000 43.090478 +9.300000 9.000000 44.406126 +9.300000 9.100000 45.741774 +9.300000 9.200000 47.097423 +9.300000 9.300000 48.473071 +9.300000 9.400000 49.868719 +9.300000 9.500000 51.284368 +9.300000 9.600000 52.720016 +9.300000 9.700000 54.175664 +9.300000 9.800000 55.651313 +9.300000 9.900000 57.146961 +9.300000 10.000000 58.662609 +9.300000 10.100000 60.198258 +9.300000 10.200000 61.753906 +9.300000 10.300000 63.329554 +9.300000 10.400000 64.925202 +9.300000 10.500000 66.540851 +9.300000 10.600000 68.176499 +9.300000 10.700000 69.832147 +9.300000 10.800000 71.507796 +9.300000 10.900000 73.203444 +9.300000 11.000000 74.919092 +9.300000 11.100000 76.654741 +9.300000 11.200000 78.410389 +9.300000 11.300000 80.186037 +9.300000 11.400000 81.981685 +9.300000 11.500000 83.797334 +9.300000 11.600000 85.632982 +9.300000 11.700000 87.488630 +9.300000 11.800000 89.364279 +9.300000 11.900000 91.259927 +9.300000 12.000000 93.175575 +9.300000 12.100000 95.111224 +9.300000 12.200000 97.066872 +9.300000 12.300000 99.042520 +9.300000 12.400000 101.038168 +9.300000 12.500000 103.053817 +9.300000 12.600000 105.089465 +9.300000 12.700000 107.145113 +9.300000 12.800000 109.220762 +9.300000 12.900000 111.316410 +9.300000 13.000000 113.432058 +9.300000 13.100000 115.567707 +9.300000 13.200000 117.723355 +9.300000 13.300000 119.899003 +9.300000 13.400000 122.094651 +9.300000 13.500000 124.310300 +9.300000 13.600000 126.545948 +9.300000 13.700000 128.801596 +9.300000 13.800000 131.077245 +9.300000 13.900000 133.372893 +9.300000 14.000000 135.688541 +9.300000 14.100000 138.024190 +9.300000 14.200000 140.379838 +9.300000 14.300000 142.755486 +9.300000 14.400000 145.151135 +9.300000 14.500000 147.566783 +9.300000 14.600000 150.002431 +9.300000 14.700000 152.458079 +9.300000 14.800000 154.933728 +9.300000 14.900000 157.429376 +9.300000 15.000000 159.945024 + +9.400000 -5.000000 55.965613 +9.400000 -4.900000 54.484777 +9.400000 -4.800000 53.023942 +9.400000 -4.700000 51.583106 +9.400000 -4.600000 50.162270 +9.400000 -4.500000 48.761434 +9.400000 -4.400000 47.380599 +9.400000 -4.300000 46.019763 +9.400000 -4.200000 44.678927 +9.400000 -4.100000 43.358092 +9.400000 -4.000000 42.057256 +9.400000 -3.900000 40.776420 +9.400000 -3.800000 39.515584 +9.400000 -3.700000 38.274749 +9.400000 -3.600000 37.053913 +9.400000 -3.500000 35.853077 +9.400000 -3.400000 34.672242 +9.400000 -3.300000 33.511406 +9.400000 -3.200000 32.370570 +9.400000 -3.100000 31.249734 +9.400000 -3.000000 30.148899 +9.400000 -2.900000 29.068063 +9.400000 -2.800000 28.007227 +9.400000 -2.700000 26.966392 +9.400000 -2.600000 25.945556 +9.400000 -2.500000 24.944720 +9.400000 -2.400000 23.963884 +9.400000 -2.300000 23.003049 +9.400000 -2.200000 22.062213 +9.400000 -2.100000 21.141377 +9.400000 -2.000000 20.240542 +9.400000 -1.900000 19.359706 +9.400000 -1.800000 18.498870 +9.400000 -1.700000 17.658034 +9.400000 -1.600000 16.837199 +9.400000 -1.500000 16.036363 +9.400000 -1.400000 15.255527 +9.400000 -1.300000 14.494692 +9.400000 -1.200000 13.753856 +9.400000 -1.100000 13.033020 +9.400000 -1.000000 12.332184 +9.400000 -0.900000 11.651349 +9.400000 -0.800000 10.990513 +9.400000 -0.700000 10.349677 +9.400000 -0.600000 9.728842 +9.400000 -0.500000 9.128006 +9.400000 -0.400000 8.547170 +9.400000 -0.300000 7.986334 +9.400000 -0.200000 7.445499 +9.400000 -0.100000 6.924663 +9.400000 -0.000000 6.423827 +9.400000 0.100000 5.942992 +9.400000 0.200000 5.482156 +9.400000 0.300000 5.041320 +9.400000 0.400000 4.620484 +9.400000 0.500000 4.219649 +9.400000 0.600000 3.838813 +9.400000 0.700000 3.477977 +9.400000 0.800000 3.137142 +9.400000 0.900000 2.816306 +9.400000 1.000000 2.515470 +9.400000 1.100000 2.234634 +9.400000 1.200000 1.973799 +9.400000 1.300000 1.732963 +9.400000 1.400000 1.512127 +9.400000 1.500000 1.311292 +9.400000 1.600000 1.130456 +9.400000 1.700000 0.969620 +9.400000 1.800000 0.828784 +9.400000 1.900000 0.707949 +9.400000 2.000000 0.607113 +9.400000 2.100000 0.526277 +9.400000 2.200000 0.465442 +9.400000 2.300000 0.424606 +9.400000 2.400000 0.403770 +9.400000 2.500000 0.402934 +9.400000 2.600000 0.422099 +9.400000 2.700000 0.461263 +9.400000 2.800000 0.520427 +9.400000 2.900000 0.599592 +9.400000 3.000000 0.698756 +9.400000 3.100000 0.817920 +9.400000 3.200000 0.957084 +9.400000 3.300000 1.116249 +9.400000 3.400000 1.295413 +9.400000 3.500000 1.494577 +9.400000 3.600000 1.713742 +9.400000 3.700000 1.952906 +9.400000 3.800000 2.212070 +9.400000 3.900000 2.491234 +9.400000 4.000000 2.790399 +9.400000 4.100000 3.109563 +9.400000 4.200000 3.448727 +9.400000 4.300000 3.807892 +9.400000 4.400000 4.187056 +9.400000 4.500000 4.586220 +9.400000 4.600000 5.005384 +9.400000 4.700000 5.444549 +9.400000 4.800000 5.903713 +9.400000 4.900000 6.382877 +9.400000 5.000000 6.882042 +9.400000 5.100000 7.401206 +9.400000 5.200000 7.940370 +9.400000 5.300000 8.499534 +9.400000 5.400000 9.078699 +9.400000 5.500000 9.677863 +9.400000 5.600000 10.297027 +9.400000 5.700000 10.936192 +9.400000 5.800000 11.595356 +9.400000 5.900000 12.274520 +9.400000 6.000000 12.973684 +9.400000 6.100000 13.692849 +9.400000 6.200000 14.432013 +9.400000 6.300000 15.191177 +9.400000 6.400000 15.970342 +9.400000 6.500000 16.769506 +9.400000 6.600000 17.588670 +9.400000 6.700000 18.427834 +9.400000 6.800000 19.286999 +9.400000 6.900000 20.166163 +9.400000 7.000000 21.065327 +9.400000 7.100000 21.984491 +9.400000 7.200000 22.923656 +9.400000 7.300000 23.882820 +9.400000 7.400000 24.861984 +9.400000 7.500000 25.861149 +9.400000 7.600000 26.880313 +9.400000 7.700000 27.919477 +9.400000 7.800000 28.978641 +9.400000 7.900000 30.057806 +9.400000 8.000000 31.156970 +9.400000 8.100000 32.276134 +9.400000 8.200000 33.415299 +9.400000 8.300000 34.574463 +9.400000 8.400000 35.753627 +9.400000 8.500000 36.952791 +9.400000 8.600000 38.171956 +9.400000 8.700000 39.411120 +9.400000 8.800000 40.670284 +9.400000 8.900000 41.949449 +9.400000 9.000000 43.248613 +9.400000 9.100000 44.567777 +9.400000 9.200000 45.906941 +9.400000 9.300000 47.266106 +9.400000 9.400000 48.645270 +9.400000 9.500000 50.044434 +9.400000 9.600000 51.463599 +9.400000 9.700000 52.902763 +9.400000 9.800000 54.361927 +9.400000 9.900000 55.841091 +9.400000 10.000000 57.340256 +9.400000 10.100000 58.859420 +9.400000 10.200000 60.398584 +9.400000 10.300000 61.957749 +9.400000 10.400000 63.536913 +9.400000 10.500000 65.136077 +9.400000 10.600000 66.755241 +9.400000 10.700000 68.394406 +9.400000 10.800000 70.053570 +9.400000 10.900000 71.732734 +9.400000 11.000000 73.431899 +9.400000 11.100000 75.151063 +9.400000 11.200000 76.890227 +9.400000 11.300000 78.649391 +9.400000 11.400000 80.428556 +9.400000 11.500000 82.227720 +9.400000 11.600000 84.046884 +9.400000 11.700000 85.886049 +9.400000 11.800000 87.745213 +9.400000 11.900000 89.624377 +9.400000 12.000000 91.523541 +9.400000 12.100000 93.442706 +9.400000 12.200000 95.381870 +9.400000 12.300000 97.341034 +9.400000 12.400000 99.320199 +9.400000 12.500000 101.319363 +9.400000 12.600000 103.338527 +9.400000 12.700000 105.377691 +9.400000 12.800000 107.436856 +9.400000 12.900000 109.516020 +9.400000 13.000000 111.615184 +9.400000 13.100000 113.734349 +9.400000 13.200000 115.873513 +9.400000 13.300000 118.032677 +9.400000 13.400000 120.211841 +9.400000 13.500000 122.411006 +9.400000 13.600000 124.630170 +9.400000 13.700000 126.869334 +9.400000 13.800000 129.128499 +9.400000 13.900000 131.407663 +9.400000 14.000000 133.706827 +9.400000 14.100000 136.025991 +9.400000 14.200000 138.365156 +9.400000 14.300000 140.724320 +9.400000 14.400000 143.103484 +9.400000 14.500000 145.502649 +9.400000 14.600000 147.921813 +9.400000 14.700000 150.360977 +9.400000 14.800000 152.820141 +9.400000 14.900000 155.299306 +9.400000 15.000000 157.798470 + +9.500000 -5.000000 57.264311 +9.500000 -4.900000 55.766475 +9.500000 -4.800000 54.288638 +9.500000 -4.700000 52.830802 +9.500000 -4.600000 51.392965 +9.500000 -4.500000 49.975129 +9.500000 -4.400000 48.577292 +9.500000 -4.300000 47.199456 +9.500000 -4.200000 45.841619 +9.500000 -4.100000 44.503783 +9.500000 -4.000000 43.185947 +9.500000 -3.900000 41.888110 +9.500000 -3.800000 40.610274 +9.500000 -3.700000 39.352437 +9.500000 -3.600000 38.114601 +9.500000 -3.500000 36.896764 +9.500000 -3.400000 35.698928 +9.500000 -3.300000 34.521091 +9.500000 -3.200000 33.363255 +9.500000 -3.100000 32.225418 +9.500000 -3.000000 31.107582 +9.500000 -2.900000 30.009745 +9.500000 -2.800000 28.931909 +9.500000 -2.700000 27.874072 +9.500000 -2.600000 26.836236 +9.500000 -2.500000 25.818399 +9.500000 -2.400000 24.820563 +9.500000 -2.300000 23.842727 +9.500000 -2.200000 22.884890 +9.500000 -2.100000 21.947054 +9.500000 -2.000000 21.029217 +9.500000 -1.900000 20.131381 +9.500000 -1.800000 19.253544 +9.500000 -1.700000 18.395708 +9.500000 -1.600000 17.557871 +9.500000 -1.500000 16.740035 +9.500000 -1.400000 15.942198 +9.500000 -1.300000 15.164362 +9.500000 -1.200000 14.406525 +9.500000 -1.100000 13.668689 +9.500000 -1.000000 12.950852 +9.500000 -0.900000 12.253016 +9.500000 -0.800000 11.575179 +9.500000 -0.700000 10.917343 +9.500000 -0.600000 10.279506 +9.500000 -0.500000 9.661670 +9.500000 -0.400000 9.063834 +9.500000 -0.300000 8.485997 +9.500000 -0.200000 7.928161 +9.500000 -0.100000 7.390324 +9.500000 -0.000000 6.872488 +9.500000 0.100000 6.374651 +9.500000 0.200000 5.896815 +9.500000 0.300000 5.438978 +9.500000 0.400000 5.001142 +9.500000 0.500000 4.583305 +9.500000 0.600000 4.185469 +9.500000 0.700000 3.807632 +9.500000 0.800000 3.449796 +9.500000 0.900000 3.111959 +9.500000 1.000000 2.794123 +9.500000 1.100000 2.496286 +9.500000 1.200000 2.218450 +9.500000 1.300000 1.960614 +9.500000 1.400000 1.722777 +9.500000 1.500000 1.504941 +9.500000 1.600000 1.307104 +9.500000 1.700000 1.129268 +9.500000 1.800000 0.971431 +9.500000 1.900000 0.833595 +9.500000 2.000000 0.715758 +9.500000 2.100000 0.617922 +9.500000 2.200000 0.540085 +9.500000 2.300000 0.482249 +9.500000 2.400000 0.444412 +9.500000 2.500000 0.426576 +9.500000 2.600000 0.428739 +9.500000 2.700000 0.450903 +9.500000 2.800000 0.493066 +9.500000 2.900000 0.555230 +9.500000 3.000000 0.637394 +9.500000 3.100000 0.739557 +9.500000 3.200000 0.861721 +9.500000 3.300000 1.003884 +9.500000 3.400000 1.166048 +9.500000 3.500000 1.348211 +9.500000 3.600000 1.550375 +9.500000 3.700000 1.772538 +9.500000 3.800000 2.014702 +9.500000 3.900000 2.276865 +9.500000 4.000000 2.559029 +9.500000 4.100000 2.861192 +9.500000 4.200000 3.183356 +9.500000 4.300000 3.525519 +9.500000 4.400000 3.887683 +9.500000 4.500000 4.269846 +9.500000 4.600000 4.672010 +9.500000 4.700000 5.094174 +9.500000 4.800000 5.536337 +9.500000 4.900000 5.998501 +9.500000 5.000000 6.480664 +9.500000 5.100000 6.982828 +9.500000 5.200000 7.504991 +9.500000 5.300000 8.047155 +9.500000 5.400000 8.609318 +9.500000 5.500000 9.191482 +9.500000 5.600000 9.793645 +9.500000 5.700000 10.415809 +9.500000 5.800000 11.057972 +9.500000 5.900000 11.720136 +9.500000 6.000000 12.402299 +9.500000 6.100000 13.104463 +9.500000 6.200000 13.826626 +9.500000 6.300000 14.568790 +9.500000 6.400000 15.330954 +9.500000 6.500000 16.113117 +9.500000 6.600000 16.915281 +9.500000 6.700000 17.737444 +9.500000 6.800000 18.579608 +9.500000 6.900000 19.441771 +9.500000 7.000000 20.323935 +9.500000 7.100000 21.226098 +9.500000 7.200000 22.148262 +9.500000 7.300000 23.090425 +9.500000 7.400000 24.052589 +9.500000 7.500000 25.034752 +9.500000 7.600000 26.036916 +9.500000 7.700000 27.059079 +9.500000 7.800000 28.101243 +9.500000 7.900000 29.163406 +9.500000 8.000000 30.245570 +9.500000 8.100000 31.347733 +9.500000 8.200000 32.469897 +9.500000 8.300000 33.612061 +9.500000 8.400000 34.774224 +9.500000 8.500000 35.956388 +9.500000 8.600000 37.158551 +9.500000 8.700000 38.380715 +9.500000 8.800000 39.622878 +9.500000 8.900000 40.885042 +9.500000 9.000000 42.167205 +9.500000 9.100000 43.469369 +9.500000 9.200000 44.791532 +9.500000 9.300000 46.133696 +9.500000 9.400000 47.495859 +9.500000 9.500000 48.878023 +9.500000 9.600000 50.280186 +9.500000 9.700000 51.702350 +9.500000 9.800000 53.144513 +9.500000 9.900000 54.606677 +9.500000 10.000000 56.088841 +9.500000 10.100000 57.591004 +9.500000 10.200000 59.113168 +9.500000 10.300000 60.655331 +9.500000 10.400000 62.217495 +9.500000 10.500000 63.799658 +9.500000 10.600000 65.401822 +9.500000 10.700000 67.023985 +9.500000 10.800000 68.666149 +9.500000 10.900000 70.328312 +9.500000 11.000000 72.010476 +9.500000 11.100000 73.712639 +9.500000 11.200000 75.434803 +9.500000 11.300000 77.176966 +9.500000 11.400000 78.939130 +9.500000 11.500000 80.721293 +9.500000 11.600000 82.523457 +9.500000 11.700000 84.345621 +9.500000 11.800000 86.187784 +9.500000 11.900000 88.049948 +9.500000 12.000000 89.932111 +9.500000 12.100000 91.834275 +9.500000 12.200000 93.756438 +9.500000 12.300000 95.698602 +9.500000 12.400000 97.660765 +9.500000 12.500000 99.642929 +9.500000 12.600000 101.645092 +9.500000 12.700000 103.667256 +9.500000 12.800000 105.709419 +9.500000 12.900000 107.771583 +9.500000 13.000000 109.853746 +9.500000 13.100000 111.955910 +9.500000 13.200000 114.078073 +9.500000 13.300000 116.220237 +9.500000 13.400000 118.382401 +9.500000 13.500000 120.564564 +9.500000 13.600000 122.766728 +9.500000 13.700000 124.988891 +9.500000 13.800000 127.231055 +9.500000 13.900000 129.493218 +9.500000 14.000000 131.775382 +9.500000 14.100000 134.077545 +9.500000 14.200000 136.399709 +9.500000 14.300000 138.741872 +9.500000 14.400000 141.104036 +9.500000 14.500000 143.486199 +9.500000 14.600000 145.888363 +9.500000 14.700000 148.310526 +9.500000 14.800000 150.752690 +9.500000 14.900000 153.214853 +9.500000 15.000000 155.697017 + +9.600000 -5.000000 58.712534 +9.600000 -4.900000 57.197180 +9.600000 -4.800000 55.701826 +9.600000 -4.700000 54.226472 +9.600000 -4.600000 52.771118 +9.600000 -4.500000 51.335764 +9.600000 -4.400000 49.920410 +9.600000 -4.300000 48.525057 +9.600000 -4.200000 47.149703 +9.600000 -4.100000 45.794349 +9.600000 -4.000000 44.458995 +9.600000 -3.900000 43.143641 +9.600000 -3.800000 41.848287 +9.600000 -3.700000 40.572933 +9.600000 -3.600000 39.317579 +9.600000 -3.500000 38.082225 +9.600000 -3.400000 36.866871 +9.600000 -3.300000 35.671517 +9.600000 -3.200000 34.496163 +9.600000 -3.100000 33.340809 +9.600000 -3.000000 32.205455 +9.600000 -2.900000 31.090101 +9.600000 -2.800000 29.994747 +9.600000 -2.700000 28.919393 +9.600000 -2.600000 27.864039 +9.600000 -2.500000 26.828685 +9.600000 -2.400000 25.813331 +9.600000 -2.300000 24.817977 +9.600000 -2.200000 23.842623 +9.600000 -2.100000 22.887269 +9.600000 -2.000000 21.951915 +9.600000 -1.900000 21.036561 +9.600000 -1.800000 20.141207 +9.600000 -1.700000 19.265853 +9.600000 -1.600000 18.410499 +9.600000 -1.500000 17.575145 +9.600000 -1.400000 16.759792 +9.600000 -1.300000 15.964438 +9.600000 -1.200000 15.189084 +9.600000 -1.100000 14.433730 +9.600000 -1.000000 13.698376 +9.600000 -0.900000 12.983022 +9.600000 -0.800000 12.287668 +9.600000 -0.700000 11.612314 +9.600000 -0.600000 10.956960 +9.600000 -0.500000 10.321606 +9.600000 -0.400000 9.706252 +9.600000 -0.300000 9.110898 +9.600000 -0.200000 8.535544 +9.600000 -0.100000 7.980190 +9.600000 -0.000000 7.444836 +9.600000 0.100000 6.929482 +9.600000 0.200000 6.434128 +9.600000 0.300000 5.958774 +9.600000 0.400000 5.503420 +9.600000 0.500000 5.068066 +9.600000 0.600000 4.652712 +9.600000 0.700000 4.257358 +9.600000 0.800000 3.882004 +9.600000 0.900000 3.526650 +9.600000 1.000000 3.191296 +9.600000 1.100000 2.875942 +9.600000 1.200000 2.580588 +9.600000 1.300000 2.305234 +9.600000 1.400000 2.049880 +9.600000 1.500000 1.814527 +9.600000 1.600000 1.599173 +9.600000 1.700000 1.403819 +9.600000 1.800000 1.228465 +9.600000 1.900000 1.073111 +9.600000 2.000000 0.937757 +9.600000 2.100000 0.822403 +9.600000 2.200000 0.727049 +9.600000 2.300000 0.651695 +9.600000 2.400000 0.596341 +9.600000 2.500000 0.560987 +9.600000 2.600000 0.545633 +9.600000 2.700000 0.550279 +9.600000 2.800000 0.574925 +9.600000 2.900000 0.619571 +9.600000 3.000000 0.684217 +9.600000 3.100000 0.768863 +9.600000 3.200000 0.873509 +9.600000 3.300000 0.998155 +9.600000 3.400000 1.142801 +9.600000 3.500000 1.307447 +9.600000 3.600000 1.492093 +9.600000 3.700000 1.696739 +9.600000 3.800000 1.921385 +9.600000 3.900000 2.166031 +9.600000 4.000000 2.430677 +9.600000 4.100000 2.715323 +9.600000 4.200000 3.019969 +9.600000 4.300000 3.344616 +9.600000 4.400000 3.689262 +9.600000 4.500000 4.053908 +9.600000 4.600000 4.438554 +9.600000 4.700000 4.843200 +9.600000 4.800000 5.267846 +9.600000 4.900000 5.712492 +9.600000 5.000000 6.177138 +9.600000 5.100000 6.661784 +9.600000 5.200000 7.166430 +9.600000 5.300000 7.691076 +9.600000 5.400000 8.235722 +9.600000 5.500000 8.800368 +9.600000 5.600000 9.385014 +9.600000 5.700000 9.989660 +9.600000 5.800000 10.614306 +9.600000 5.900000 11.258952 +9.600000 6.000000 11.923598 +9.600000 6.100000 12.608244 +9.600000 6.200000 13.312890 +9.600000 6.300000 14.037536 +9.600000 6.400000 14.782182 +9.600000 6.500000 15.546828 +9.600000 6.600000 16.331474 +9.600000 6.700000 17.136120 +9.600000 6.800000 17.960766 +9.600000 6.900000 18.805412 +9.600000 7.000000 19.670058 +9.600000 7.100000 20.554704 +9.600000 7.200000 21.459351 +9.600000 7.300000 22.383997 +9.600000 7.400000 23.328643 +9.600000 7.500000 24.293289 +9.600000 7.600000 25.277935 +9.600000 7.700000 26.282581 +9.600000 7.800000 27.307227 +9.600000 7.900000 28.351873 +9.600000 8.000000 29.416519 +9.600000 8.100000 30.501165 +9.600000 8.200000 31.605811 +9.600000 8.300000 32.730457 +9.600000 8.400000 33.875103 +9.600000 8.500000 35.039749 +9.600000 8.600000 36.224395 +9.600000 8.700000 37.429041 +9.600000 8.800000 38.653687 +9.600000 8.900000 39.898333 +9.600000 9.000000 41.162979 +9.600000 9.100000 42.447625 +9.600000 9.200000 43.752271 +9.600000 9.300000 45.076917 +9.600000 9.400000 46.421563 +9.600000 9.500000 47.786209 +9.600000 9.600000 49.170855 +9.600000 9.700000 50.575501 +9.600000 9.800000 52.000147 +9.600000 9.900000 53.444793 +9.600000 10.000000 54.909439 +9.600000 10.100000 56.394086 +9.600000 10.200000 57.898732 +9.600000 10.300000 59.423378 +9.600000 10.400000 60.968024 +9.600000 10.500000 62.532670 +9.600000 10.600000 64.117316 +9.600000 10.700000 65.721962 +9.600000 10.800000 67.346608 +9.600000 10.900000 68.991254 +9.600000 11.000000 70.655900 +9.600000 11.100000 72.340546 +9.600000 11.200000 74.045192 +9.600000 11.300000 75.769838 +9.600000 11.400000 77.514484 +9.600000 11.500000 79.279130 +9.600000 11.600000 81.063776 +9.600000 11.700000 82.868422 +9.600000 11.800000 84.693068 +9.600000 11.900000 86.537714 +9.600000 12.000000 88.402360 +9.600000 12.100000 90.287006 +9.600000 12.200000 92.191652 +9.600000 12.300000 94.116298 +9.600000 12.400000 96.060944 +9.600000 12.500000 98.025590 +9.600000 12.600000 100.010236 +9.600000 12.700000 102.014882 +9.600000 12.800000 104.039528 +9.600000 12.900000 106.084175 +9.600000 13.000000 108.148821 +9.600000 13.100000 110.233467 +9.600000 13.200000 112.338113 +9.600000 13.300000 114.462759 +9.600000 13.400000 116.607405 +9.600000 13.500000 118.772051 +9.600000 13.600000 120.956697 +9.600000 13.700000 123.161343 +9.600000 13.800000 125.385989 +9.600000 13.900000 127.630635 +9.600000 14.000000 129.895281 +9.600000 14.100000 132.179927 +9.600000 14.200000 134.484573 +9.600000 14.300000 136.809219 +9.600000 14.400000 139.153865 +9.600000 14.500000 141.518511 +9.600000 14.600000 143.903157 +9.600000 14.700000 146.307803 +9.600000 14.800000 148.732449 +9.600000 14.900000 151.177095 +9.600000 15.000000 153.641741 + +9.700000 -5.000000 60.310442 +9.700000 -4.900000 58.777054 +9.700000 -4.800000 57.263666 +9.700000 -4.700000 55.770278 +9.700000 -4.600000 54.296889 +9.700000 -4.500000 52.843501 +9.700000 -4.400000 51.410113 +9.700000 -4.300000 49.996725 +9.700000 -4.200000 48.603337 +9.700000 -4.100000 47.229948 +9.700000 -4.000000 45.876560 +9.700000 -3.900000 44.543172 +9.700000 -3.800000 43.229784 +9.700000 -3.700000 41.936396 +9.700000 -3.600000 40.663007 +9.700000 -3.500000 39.409619 +9.700000 -3.400000 38.176231 +9.700000 -3.300000 36.962843 +9.700000 -3.200000 35.769455 +9.700000 -3.100000 34.596066 +9.700000 -3.000000 33.442678 +9.700000 -2.900000 32.309290 +9.700000 -2.800000 31.195902 +9.700000 -2.700000 30.102514 +9.700000 -2.600000 29.029125 +9.700000 -2.500000 27.975737 +9.700000 -2.400000 26.942349 +9.700000 -2.300000 25.928961 +9.700000 -2.200000 24.935573 +9.700000 -2.100000 23.962184 +9.700000 -2.000000 23.008796 +9.700000 -1.900000 22.075408 +9.700000 -1.800000 21.162020 +9.700000 -1.700000 20.268632 +9.700000 -1.600000 19.395243 +9.700000 -1.500000 18.541855 +9.700000 -1.400000 17.708467 +9.700000 -1.300000 16.895079 +9.700000 -1.200000 16.101691 +9.700000 -1.100000 15.328303 +9.700000 -1.000000 14.574914 +9.700000 -0.900000 13.841526 +9.700000 -0.800000 13.128138 +9.700000 -0.700000 12.434750 +9.700000 -0.600000 11.761362 +9.700000 -0.500000 11.107973 +9.700000 -0.400000 10.474585 +9.700000 -0.300000 9.861197 +9.700000 -0.200000 9.267809 +9.700000 -0.100000 8.694421 +9.700000 -0.000000 8.141032 +9.700000 0.100000 7.607644 +9.700000 0.200000 7.094256 +9.700000 0.300000 6.600868 +9.700000 0.400000 6.127480 +9.700000 0.500000 5.674091 +9.700000 0.600000 5.240703 +9.700000 0.700000 4.827315 +9.700000 0.800000 4.433927 +9.700000 0.900000 4.060539 +9.700000 1.000000 3.707150 +9.700000 1.100000 3.373762 +9.700000 1.200000 3.060374 +9.700000 1.300000 2.766986 +9.700000 1.400000 2.493598 +9.700000 1.500000 2.240209 +9.700000 1.600000 2.006821 +9.700000 1.700000 1.793433 +9.700000 1.800000 1.600045 +9.700000 1.900000 1.426657 +9.700000 2.000000 1.273268 +9.700000 2.100000 1.139880 +9.700000 2.200000 1.026492 +9.700000 2.300000 0.933104 +9.700000 2.400000 0.859716 +9.700000 2.500000 0.806327 +9.700000 2.600000 0.772939 +9.700000 2.700000 0.759551 +9.700000 2.800000 0.766163 +9.700000 2.900000 0.792775 +9.700000 3.000000 0.839386 +9.700000 3.100000 0.905998 +9.700000 3.200000 0.992610 +9.700000 3.300000 1.099222 +9.700000 3.400000 1.225834 +9.700000 3.500000 1.372445 +9.700000 3.600000 1.539057 +9.700000 3.700000 1.725669 +9.700000 3.800000 1.932281 +9.700000 3.900000 2.158893 +9.700000 4.000000 2.405504 +9.700000 4.100000 2.672116 +9.700000 4.200000 2.958728 +9.700000 4.300000 3.265340 +9.700000 4.400000 3.591952 +9.700000 4.500000 3.938563 +9.700000 4.600000 4.305175 +9.700000 4.700000 4.691787 +9.700000 4.800000 5.098399 +9.700000 4.900000 5.525011 +9.700000 5.000000 5.971622 +9.700000 5.100000 6.438234 +9.700000 5.200000 6.924846 +9.700000 5.300000 7.431458 +9.700000 5.400000 7.958070 +9.700000 5.500000 8.504681 +9.700000 5.600000 9.071293 +9.700000 5.700000 9.657905 +9.700000 5.800000 10.264517 +9.700000 5.900000 10.891129 +9.700000 6.000000 11.537741 +9.700000 6.100000 12.204352 +9.700000 6.200000 12.890964 +9.700000 6.300000 13.597576 +9.700000 6.400000 14.324188 +9.700000 6.500000 15.070800 +9.700000 6.600000 15.837411 +9.700000 6.700000 16.624023 +9.700000 6.800000 17.430635 +9.700000 6.900000 18.257247 +9.700000 7.000000 19.103859 +9.700000 7.100000 19.970470 +9.700000 7.200000 20.857082 +9.700000 7.300000 21.763694 +9.700000 7.400000 22.690306 +9.700000 7.500000 23.636918 +9.700000 7.600000 24.603529 +9.700000 7.700000 25.590141 +9.700000 7.800000 26.596753 +9.700000 7.900000 27.623365 +9.700000 8.000000 28.669977 +9.700000 8.100000 29.736588 +9.700000 8.200000 30.823200 +9.700000 8.300000 31.929812 +9.700000 8.400000 33.056424 +9.700000 8.500000 34.203036 +9.700000 8.600000 35.369647 +9.700000 8.700000 36.556259 +9.700000 8.800000 37.762871 +9.700000 8.900000 38.989483 +9.700000 9.000000 40.236095 +9.700000 9.100000 41.502706 +9.700000 9.200000 42.789318 +9.700000 9.300000 44.095930 +9.700000 9.400000 45.422542 +9.700000 9.500000 46.769154 +9.700000 9.600000 48.135765 +9.700000 9.700000 49.522377 +9.700000 9.800000 50.928989 +9.700000 9.900000 52.355601 +9.700000 10.000000 53.802213 +9.700000 10.100000 55.268824 +9.700000 10.200000 56.755436 +9.700000 10.300000 58.262048 +9.700000 10.400000 59.788660 +9.700000 10.500000 61.335272 +9.700000 10.600000 62.901883 +9.700000 10.700000 64.488495 +9.700000 10.800000 66.095107 +9.700000 10.900000 67.721719 +9.700000 11.000000 69.368331 +9.700000 11.100000 71.034942 +9.700000 11.200000 72.721554 +9.700000 11.300000 74.428166 +9.700000 11.400000 76.154778 +9.700000 11.500000 77.901390 +9.700000 11.600000 79.668001 +9.700000 11.700000 81.454613 +9.700000 11.800000 83.261225 +9.700000 11.900000 85.087837 +9.700000 12.000000 86.934449 +9.700000 12.100000 88.801060 +9.700000 12.200000 90.687672 +9.700000 12.300000 92.594284 +9.700000 12.400000 94.520896 +9.700000 12.500000 96.467508 +9.700000 12.600000 98.434120 +9.700000 12.700000 100.420731 +9.700000 12.800000 102.427343 +9.700000 12.900000 104.453955 +9.700000 13.000000 106.500567 +9.700000 13.100000 108.567179 +9.700000 13.200000 110.653790 +9.700000 13.300000 112.760402 +9.700000 13.400000 114.887014 +9.700000 13.500000 117.033626 +9.700000 13.600000 119.200238 +9.700000 13.700000 121.386849 +9.700000 13.800000 123.593461 +9.700000 13.900000 125.820073 +9.700000 14.000000 128.066685 +9.700000 14.100000 130.333297 +9.700000 14.200000 132.619908 +9.700000 14.300000 134.926520 +9.700000 14.400000 137.253132 +9.700000 14.500000 139.599744 +9.700000 14.600000 141.966356 +9.700000 14.700000 144.352967 +9.700000 14.800000 146.759579 +9.700000 14.900000 149.186191 +9.700000 15.000000 151.632803 + +9.800000 -5.000000 62.057291 +9.800000 -4.900000 60.505352 +9.800000 -4.800000 58.973413 +9.800000 -4.700000 57.461474 +9.800000 -4.600000 55.969534 +9.800000 -4.500000 54.497595 +9.800000 -4.400000 53.045656 +9.800000 -4.300000 51.613717 +9.800000 -4.200000 50.201778 +9.800000 -4.100000 48.809839 +9.800000 -4.000000 47.437899 +9.800000 -3.900000 46.085960 +9.800000 -3.800000 44.754021 +9.800000 -3.700000 43.442082 +9.800000 -3.600000 42.150143 +9.800000 -3.500000 40.878204 +9.800000 -3.400000 39.626264 +9.800000 -3.300000 38.394325 +9.800000 -3.200000 37.182386 +9.800000 -3.100000 35.990447 +9.800000 -3.000000 34.818508 +9.800000 -2.900000 33.666569 +9.800000 -2.800000 32.534629 +9.800000 -2.700000 31.422690 +9.800000 -2.600000 30.330751 +9.800000 -2.500000 29.258812 +9.800000 -2.400000 28.206873 +9.800000 -2.300000 27.174934 +9.800000 -2.200000 26.162994 +9.800000 -2.100000 25.171055 +9.800000 -2.000000 24.199116 +9.800000 -1.900000 23.247177 +9.800000 -1.800000 22.315238 +9.800000 -1.700000 21.403299 +9.800000 -1.600000 20.511359 +9.800000 -1.500000 19.639420 +9.800000 -1.400000 18.787481 +9.800000 -1.300000 17.955542 +9.800000 -1.200000 17.143603 +9.800000 -1.100000 16.351664 +9.800000 -1.000000 15.579724 +9.800000 -0.900000 14.827785 +9.800000 -0.800000 14.095846 +9.800000 -0.700000 13.383907 +9.800000 -0.600000 12.691968 +9.800000 -0.500000 12.020029 +9.800000 -0.400000 11.368089 +9.800000 -0.300000 10.736150 +9.800000 -0.200000 10.124211 +9.800000 -0.100000 9.532272 +9.800000 -0.000000 8.960333 +9.800000 0.100000 8.408394 +9.800000 0.200000 7.876454 +9.800000 0.300000 7.364515 +9.800000 0.400000 6.872576 +9.800000 0.500000 6.400637 +9.800000 0.600000 5.948698 +9.800000 0.700000 5.516759 +9.800000 0.800000 5.104819 +9.800000 0.900000 4.712880 +9.800000 1.000000 4.340941 +9.800000 1.100000 3.989002 +9.800000 1.200000 3.657063 +9.800000 1.300000 3.345124 +9.800000 1.400000 3.053184 +9.800000 1.500000 2.781245 +9.800000 1.600000 2.529306 +9.800000 1.700000 2.297367 +9.800000 1.800000 2.085428 +9.800000 1.900000 1.893489 +9.800000 2.000000 1.721549 +9.800000 2.100000 1.569610 +9.800000 2.200000 1.437671 +9.800000 2.300000 1.325732 +9.800000 2.400000 1.233793 +9.800000 2.500000 1.161854 +9.800000 2.600000 1.109914 +9.800000 2.700000 1.077975 +9.800000 2.800000 1.066036 +9.800000 2.900000 1.074097 +9.800000 3.000000 1.102158 +9.800000 3.100000 1.150219 +9.800000 3.200000 1.218279 +9.800000 3.300000 1.306340 +9.800000 3.400000 1.414401 +9.800000 3.500000 1.542462 +9.800000 3.600000 1.690523 +9.800000 3.700000 1.858584 +9.800000 3.800000 2.046644 +9.800000 3.900000 2.254705 +9.800000 4.000000 2.482766 +9.800000 4.100000 2.730827 +9.800000 4.200000 2.998888 +9.800000 4.300000 3.286949 +9.800000 4.400000 3.595009 +9.800000 4.500000 3.923070 +9.800000 4.600000 4.271131 +9.800000 4.700000 4.639192 +9.800000 4.800000 5.027253 +9.800000 4.900000 5.435314 +9.800000 5.000000 5.863374 +9.800000 5.100000 6.311435 +9.800000 5.200000 6.779496 +9.800000 5.300000 7.267557 +9.800000 5.400000 7.775618 +9.800000 5.500000 8.303679 +9.800000 5.600000 8.851739 +9.800000 5.700000 9.419800 +9.800000 5.800000 10.007861 +9.800000 5.900000 10.615922 +9.800000 6.000000 11.243983 +9.800000 6.100000 11.892044 +9.800000 6.200000 12.560104 +9.800000 6.300000 13.248165 +9.800000 6.400000 13.956226 +9.800000 6.500000 14.684287 +9.800000 6.600000 15.432348 +9.800000 6.700000 16.200409 +9.800000 6.800000 16.988469 +9.800000 6.900000 17.796530 +9.800000 7.000000 18.624591 +9.800000 7.100000 19.472652 +9.800000 7.200000 20.340713 +9.800000 7.300000 21.228774 +9.800000 7.400000 22.136834 +9.800000 7.500000 23.064895 +9.800000 7.600000 24.012956 +9.800000 7.700000 24.981017 +9.800000 7.800000 25.969078 +9.800000 7.900000 26.977139 +9.800000 8.000000 28.005199 +9.800000 8.100000 29.053260 +9.800000 8.200000 30.121321 +9.800000 8.300000 31.209382 +9.800000 8.400000 32.317443 +9.800000 8.500000 33.445504 +9.800000 8.600000 34.593564 +9.800000 8.700000 35.761625 +9.800000 8.800000 36.949686 +9.800000 8.900000 38.157747 +9.800000 9.000000 39.385808 +9.800000 9.100000 40.633869 +9.800000 9.200000 41.901929 +9.800000 9.300000 43.189990 +9.800000 9.400000 44.498051 +9.800000 9.500000 45.826112 +9.800000 9.600000 47.174173 +9.800000 9.700000 48.542234 +9.800000 9.800000 49.930294 +9.800000 9.900000 51.338355 +9.800000 10.000000 52.766416 +9.800000 10.100000 54.214477 +9.800000 10.200000 55.682538 +9.800000 10.300000 57.170599 +9.800000 10.400000 58.678659 +9.800000 10.500000 60.206720 +9.800000 10.600000 61.754781 +9.800000 10.700000 63.322842 +9.800000 10.800000 64.910903 +9.800000 10.900000 66.518964 +9.800000 11.000000 68.147024 +9.800000 11.100000 69.795085 +9.800000 11.200000 71.463146 +9.800000 11.300000 73.151207 +9.800000 11.400000 74.859268 +9.800000 11.500000 76.587329 +9.800000 11.600000 78.335389 +9.800000 11.700000 80.103450 +9.800000 11.800000 81.891511 +9.800000 11.900000 83.699572 +9.800000 12.000000 85.527633 +9.800000 12.100000 87.375694 +9.800000 12.200000 89.243754 +9.800000 12.300000 91.131815 +9.800000 12.400000 93.039876 +9.800000 12.500000 94.967937 +9.800000 12.600000 96.915998 +9.800000 12.700000 98.884059 +9.800000 12.800000 100.872119 +9.800000 12.900000 102.880180 +9.800000 13.000000 104.908241 +9.800000 13.100000 106.956302 +9.800000 13.200000 109.024363 +9.800000 13.300000 111.112424 +9.800000 13.400000 113.220484 +9.800000 13.500000 115.348545 +9.800000 13.600000 117.496606 +9.800000 13.700000 119.664667 +9.800000 13.800000 121.852728 +9.800000 13.900000 124.060789 +9.800000 14.000000 126.288849 +9.800000 14.100000 128.536910 +9.800000 14.200000 130.804971 +9.800000 14.300000 133.093032 +9.800000 14.400000 135.401093 +9.800000 14.500000 137.729154 +9.800000 14.600000 140.077214 +9.800000 14.700000 142.445275 +9.800000 14.800000 144.833336 +9.800000 14.900000 147.241397 +9.800000 15.000000 149.669458 + +9.900000 -5.000000 63.951455 +9.900000 -4.900000 62.380448 +9.900000 -4.800000 60.829441 +9.900000 -4.700000 59.298434 +9.900000 -4.600000 57.787427 +9.900000 -4.500000 56.296420 +9.900000 -4.400000 54.825414 +9.900000 -4.300000 53.374407 +9.900000 -4.200000 51.943400 +9.900000 -4.100000 50.532393 +9.900000 -4.000000 49.141386 +9.900000 -3.900000 47.770379 +9.900000 -3.800000 46.419372 +9.900000 -3.700000 45.088365 +9.900000 -3.600000 43.777359 +9.900000 -3.500000 42.486352 +9.900000 -3.400000 41.215345 +9.900000 -3.300000 39.964338 +9.900000 -3.200000 38.733331 +9.900000 -3.100000 37.522324 +9.900000 -3.000000 36.331317 +9.900000 -2.900000 35.160310 +9.900000 -2.800000 34.009304 +9.900000 -2.700000 32.878297 +9.900000 -2.600000 31.767290 +9.900000 -2.500000 30.676283 +9.900000 -2.400000 29.605276 +9.900000 -2.300000 28.554269 +9.900000 -2.200000 27.523262 +9.900000 -2.100000 26.512255 +9.900000 -2.000000 25.521249 +9.900000 -1.900000 24.550242 +9.900000 -1.800000 23.599235 +9.900000 -1.700000 22.668228 +9.900000 -1.600000 21.757221 +9.900000 -1.500000 20.866214 +9.900000 -1.400000 19.995207 +9.900000 -1.300000 19.144200 +9.900000 -1.200000 18.313194 +9.900000 -1.100000 17.502187 +9.900000 -1.000000 16.711180 +9.900000 -0.900000 15.940173 +9.900000 -0.800000 15.189166 +9.900000 -0.700000 14.458159 +9.900000 -0.600000 13.747152 +9.900000 -0.500000 13.056145 +9.900000 -0.400000 12.385139 +9.900000 -0.300000 11.734132 +9.900000 -0.200000 11.103125 +9.900000 -0.100000 10.492118 +9.900000 -0.000000 9.901111 +9.900000 0.100000 9.330104 +9.900000 0.200000 8.779097 +9.900000 0.300000 8.248090 +9.900000 0.400000 7.737084 +9.900000 0.500000 7.246077 +9.900000 0.600000 6.775070 +9.900000 0.700000 6.324063 +9.900000 0.800000 5.893056 +9.900000 0.900000 5.482049 +9.900000 1.000000 5.091042 +9.900000 1.100000 4.720035 +9.900000 1.200000 4.369029 +9.900000 1.300000 4.038022 +9.900000 1.400000 3.727015 +9.900000 1.500000 3.436008 +9.900000 1.600000 3.165001 +9.900000 1.700000 2.913994 +9.900000 1.800000 2.682987 +9.900000 1.900000 2.471980 +9.900000 2.000000 2.280974 +9.900000 2.100000 2.109967 +9.900000 2.200000 1.958960 +9.900000 2.300000 1.827953 +9.900000 2.400000 1.716946 +9.900000 2.500000 1.625939 +9.900000 2.600000 1.554932 +9.900000 2.700000 1.503925 +9.900000 2.800000 1.472919 +9.900000 2.900000 1.461912 +9.900000 3.000000 1.470905 +9.900000 3.100000 1.499898 +9.900000 3.200000 1.548891 +9.900000 3.300000 1.617884 +9.900000 3.400000 1.706877 +9.900000 3.500000 1.815870 +9.900000 3.600000 1.944864 +9.900000 3.700000 2.093857 +9.900000 3.800000 2.262850 +9.900000 3.900000 2.451843 +9.900000 4.000000 2.660836 +9.900000 4.100000 2.889829 +9.900000 4.200000 3.138822 +9.900000 4.300000 3.407815 +9.900000 4.400000 3.696809 +9.900000 4.500000 4.005802 +9.900000 4.600000 4.334795 +9.900000 4.700000 4.683788 +9.900000 4.800000 5.052781 +9.900000 4.900000 5.441774 +9.900000 5.000000 5.850767 +9.900000 5.100000 6.279760 +9.900000 5.200000 6.728754 +9.900000 5.300000 7.197747 +9.900000 5.400000 7.686740 +9.900000 5.500000 8.195733 +9.900000 5.600000 8.724726 +9.900000 5.700000 9.273719 +9.900000 5.800000 9.842712 +9.900000 5.900000 10.431705 +9.900000 6.000000 11.040699 +9.900000 6.100000 11.669692 +9.900000 6.200000 12.318685 +9.900000 6.300000 12.987678 +9.900000 6.400000 13.676671 +9.900000 6.500000 14.385664 +9.900000 6.600000 15.114657 +9.900000 6.700000 15.863650 +9.900000 6.800000 16.632644 +9.900000 6.900000 17.421637 +9.900000 7.000000 18.230630 +9.900000 7.100000 19.059623 +9.900000 7.200000 19.908616 +9.900000 7.300000 20.777609 +9.900000 7.400000 21.666602 +9.900000 7.500000 22.575595 +9.900000 7.600000 23.504589 +9.900000 7.700000 24.453582 +9.900000 7.800000 25.422575 +9.900000 7.900000 26.411568 +9.900000 8.000000 27.420561 +9.900000 8.100000 28.449554 +9.900000 8.200000 29.498547 +9.900000 8.300000 30.567540 +9.900000 8.400000 31.656534 +9.900000 8.500000 32.765527 +9.900000 8.600000 33.894520 +9.900000 8.700000 35.043513 +9.900000 8.800000 36.212506 +9.900000 8.900000 37.401499 +9.900000 9.000000 38.610492 +9.900000 9.100000 39.839485 +9.900000 9.200000 41.088479 +9.900000 9.300000 42.357472 +9.900000 9.400000 43.646465 +9.900000 9.500000 44.955458 +9.900000 9.600000 46.284451 +9.900000 9.700000 47.633444 +9.900000 9.800000 49.002437 +9.900000 9.900000 50.391430 +9.900000 10.000000 51.800424 +9.900000 10.100000 53.229417 +9.900000 10.200000 54.678410 +9.900000 10.300000 56.147403 +9.900000 10.400000 57.636396 +9.900000 10.500000 59.145389 +9.900000 10.600000 60.674382 +9.900000 10.700000 62.223375 +9.900000 10.800000 63.792369 +9.900000 10.900000 65.381362 +9.900000 11.000000 66.990355 +9.900000 11.100000 68.619348 +9.900000 11.200000 70.268341 +9.900000 11.300000 71.937334 +9.900000 11.400000 73.626327 +9.900000 11.500000 75.335320 +9.900000 11.600000 77.064314 +9.900000 11.700000 78.813307 +9.900000 11.800000 80.582300 +9.900000 11.900000 82.371293 +9.900000 12.000000 84.180286 +9.900000 12.100000 86.009279 +9.900000 12.200000 87.858272 +9.900000 12.300000 89.727265 +9.900000 12.400000 91.616259 +9.900000 12.500000 93.525252 +9.900000 12.600000 95.454245 +9.900000 12.700000 97.403238 +9.900000 12.800000 99.372231 +9.900000 12.900000 101.361224 +9.900000 13.000000 103.370217 +9.900000 13.100000 105.399210 +9.900000 13.200000 107.448204 +9.900000 13.300000 109.517197 +9.900000 13.400000 111.606190 +9.900000 13.500000 113.715183 +9.900000 13.600000 115.844176 +9.900000 13.700000 117.993169 +9.900000 13.800000 120.162162 +9.900000 13.900000 122.351155 +9.900000 14.000000 124.560149 +9.900000 14.100000 126.789142 +9.900000 14.200000 129.038135 +9.900000 14.300000 131.307128 +9.900000 14.400000 133.596121 +9.900000 14.500000 135.905114 +9.900000 14.600000 138.234107 +9.900000 14.700000 140.583100 +9.900000 14.800000 142.952094 +9.900000 14.900000 145.341087 +9.900000 15.000000 147.750080 + +10.000000 -5.000000 65.990455 +10.000000 -4.900000 64.399864 +10.000000 -4.800000 62.829272 +10.000000 -4.700000 61.278681 +10.000000 -4.600000 59.748090 +10.000000 -4.500000 58.237498 +10.000000 -4.400000 56.746907 +10.000000 -4.300000 55.276316 +10.000000 -4.200000 53.825725 +10.000000 -4.100000 52.395133 +10.000000 -4.000000 50.984542 +10.000000 -3.900000 49.593951 +10.000000 -3.800000 48.223359 +10.000000 -3.700000 46.872768 +10.000000 -3.600000 45.542177 +10.000000 -3.500000 44.231585 +10.000000 -3.400000 42.940994 +10.000000 -3.300000 41.670403 +10.000000 -3.200000 40.419811 +10.000000 -3.100000 39.189220 +10.000000 -3.000000 37.978629 +10.000000 -2.900000 36.788037 +10.000000 -2.800000 35.617446 +10.000000 -2.700000 34.466855 +10.000000 -2.600000 33.336263 +10.000000 -2.500000 32.225672 +10.000000 -2.400000 31.135081 +10.000000 -2.300000 30.064489 +10.000000 -2.200000 29.013898 +10.000000 -2.100000 27.983307 +10.000000 -2.000000 26.972715 +10.000000 -1.900000 25.982124 +10.000000 -1.800000 25.011533 +10.000000 -1.700000 24.060941 +10.000000 -1.600000 23.130350 +10.000000 -1.500000 22.219759 +10.000000 -1.400000 21.329168 +10.000000 -1.300000 20.458576 +10.000000 -1.200000 19.607985 +10.000000 -1.100000 18.777394 +10.000000 -1.000000 17.966802 +10.000000 -0.900000 17.176211 +10.000000 -0.800000 16.405620 +10.000000 -0.700000 15.655028 +10.000000 -0.600000 14.924437 +10.000000 -0.500000 14.213846 +10.000000 -0.400000 13.523254 +10.000000 -0.300000 12.852663 +10.000000 -0.200000 12.202072 +10.000000 -0.100000 11.571480 +10.000000 -0.000000 10.960889 +10.000000 0.100000 10.370298 +10.000000 0.200000 9.799706 +10.000000 0.300000 9.249115 +10.000000 0.400000 8.718524 +10.000000 0.500000 8.207932 +10.000000 0.600000 7.717341 +10.000000 0.700000 7.246750 +10.000000 0.800000 6.796158 +10.000000 0.900000 6.365567 +10.000000 1.000000 5.954976 +10.000000 1.100000 5.564385 +10.000000 1.200000 5.193793 +10.000000 1.300000 4.843202 +10.000000 1.400000 4.512611 +10.000000 1.500000 4.202019 +10.000000 1.600000 3.911428 +10.000000 1.700000 3.640837 +10.000000 1.800000 3.390245 +10.000000 1.900000 3.159654 +10.000000 2.000000 2.949063 +10.000000 2.100000 2.758471 +10.000000 2.200000 2.587880 +10.000000 2.300000 2.437289 +10.000000 2.400000 2.306697 +10.000000 2.500000 2.196106 +10.000000 2.600000 2.105515 +10.000000 2.700000 2.034923 +10.000000 2.800000 1.984332 +10.000000 2.900000 1.953741 +10.000000 3.000000 1.943149 +10.000000 3.100000 1.952558 +10.000000 3.200000 1.981967 +10.000000 3.300000 2.031375 +10.000000 3.400000 2.100784 +10.000000 3.500000 2.190193 +10.000000 3.600000 2.299601 +10.000000 3.700000 2.429010 +10.000000 3.800000 2.578419 +10.000000 3.900000 2.747828 +10.000000 4.000000 2.937236 +10.000000 4.100000 3.146645 +10.000000 4.200000 3.376054 +10.000000 4.300000 3.625462 +10.000000 4.400000 3.894871 +10.000000 4.500000 4.184280 +10.000000 4.600000 4.493688 +10.000000 4.700000 4.823097 +10.000000 4.800000 5.172506 +10.000000 4.900000 5.541914 +10.000000 5.000000 5.931323 +10.000000 5.100000 6.340732 +10.000000 5.200000 6.770140 +10.000000 5.300000 7.219549 +10.000000 5.400000 7.688958 +10.000000 5.500000 8.178366 +10.000000 5.600000 8.687775 +10.000000 5.700000 9.217184 +10.000000 5.800000 9.766592 +10.000000 5.900000 10.336001 +10.000000 6.000000 10.925410 +10.000000 6.100000 11.534818 +10.000000 6.200000 12.164227 +10.000000 6.300000 12.813636 +10.000000 6.400000 13.483044 +10.000000 6.500000 14.172453 +10.000000 6.600000 14.881862 +10.000000 6.700000 15.611271 +10.000000 6.800000 16.360679 +10.000000 6.900000 17.130088 +10.000000 7.000000 17.919497 +10.000000 7.100000 18.728905 +10.000000 7.200000 19.558314 +10.000000 7.300000 20.407723 +10.000000 7.400000 21.277131 +10.000000 7.500000 22.166540 +10.000000 7.600000 23.075949 +10.000000 7.700000 24.005357 +10.000000 7.800000 24.954766 +10.000000 7.900000 25.924175 +10.000000 8.000000 26.913583 +10.000000 8.100000 27.922992 +10.000000 8.200000 28.952401 +10.000000 8.300000 30.001809 +10.000000 8.400000 31.071218 +10.000000 8.500000 32.160627 +10.000000 8.600000 33.270035 +10.000000 8.700000 34.399444 +10.000000 8.800000 35.548853 +10.000000 8.900000 36.718261 +10.000000 9.000000 37.907670 +10.000000 9.100000 39.117079 +10.000000 9.200000 40.346487 +10.000000 9.300000 41.595896 +10.000000 9.400000 42.865305 +10.000000 9.500000 44.154714 +10.000000 9.600000 45.464122 +10.000000 9.700000 46.793531 +10.000000 9.800000 48.142940 +10.000000 9.900000 49.512348 +10.000000 10.000000 50.901757 +10.000000 10.100000 52.311166 +10.000000 10.200000 53.740574 +10.000000 10.300000 55.189983 +10.000000 10.400000 56.659392 +10.000000 10.500000 58.148800 +10.000000 10.600000 59.658209 +10.000000 10.700000 61.187618 +10.000000 10.800000 62.737026 +10.000000 10.900000 64.306435 +10.000000 11.000000 65.895844 +10.000000 11.100000 67.505252 +10.000000 11.200000 69.134661 +10.000000 11.300000 70.784070 +10.000000 11.400000 72.453478 +10.000000 11.500000 74.142887 +10.000000 11.600000 75.852296 +10.000000 11.700000 77.581704 +10.000000 11.800000 79.331113 +10.000000 11.900000 81.100522 +10.000000 12.000000 82.889931 +10.000000 12.100000 84.699339 +10.000000 12.200000 86.528748 +10.000000 12.300000 88.378157 +10.000000 12.400000 90.247565 +10.000000 12.500000 92.136974 +10.000000 12.600000 94.046383 +10.000000 12.700000 95.975791 +10.000000 12.800000 97.925200 +10.000000 12.900000 99.894609 +10.000000 13.000000 101.884017 +10.000000 13.100000 103.893426 +10.000000 13.200000 105.922835 +10.000000 13.300000 107.972243 +10.000000 13.400000 110.041652 +10.000000 13.500000 112.131061 +10.000000 13.600000 114.240469 +10.000000 13.700000 116.369878 +10.000000 13.800000 118.519287 +10.000000 13.900000 120.688695 +10.000000 14.000000 122.878104 +10.000000 14.100000 125.087513 +10.000000 14.200000 127.316921 +10.000000 14.300000 129.566330 +10.000000 14.400000 131.835739 +10.000000 14.500000 134.125147 +10.000000 14.600000 136.434556 +10.000000 14.700000 138.763965 +10.000000 14.800000 141.113374 +10.000000 14.900000 143.482782 +10.000000 15.000000 145.872191 + +10.100000 -5.000000 68.171001 +10.100000 -4.900000 66.560309 +10.100000 -4.800000 64.969616 +10.100000 -4.700000 63.398924 +10.100000 -4.600000 61.848231 +10.100000 -4.500000 60.317539 +10.100000 -4.400000 58.806846 +10.100000 -4.300000 57.316154 +10.100000 -4.200000 55.845461 +10.100000 -4.100000 54.394769 +10.100000 -4.000000 52.964076 +10.100000 -3.900000 51.553384 +10.100000 -3.800000 50.162691 +10.100000 -3.700000 48.791999 +10.100000 -3.600000 47.441306 +10.100000 -3.500000 46.110614 +10.100000 -3.400000 44.799921 +10.100000 -3.300000 43.509229 +10.100000 -3.200000 42.238536 +10.100000 -3.100000 40.987844 +10.100000 -3.000000 39.757151 +10.100000 -2.900000 38.546459 +10.100000 -2.800000 37.355766 +10.100000 -2.700000 36.185074 +10.100000 -2.600000 35.034381 +10.100000 -2.500000 33.903689 +10.100000 -2.400000 32.792996 +10.100000 -2.300000 31.702304 +10.100000 -2.200000 30.631611 +10.100000 -2.100000 29.580919 +10.100000 -2.000000 28.550226 +10.100000 -1.900000 27.539534 +10.100000 -1.800000 26.548841 +10.100000 -1.700000 25.578149 +10.100000 -1.600000 24.627456 +10.100000 -1.500000 23.696764 +10.100000 -1.400000 22.786071 +10.100000 -1.300000 21.895379 +10.100000 -1.200000 21.024686 +10.100000 -1.100000 20.173994 +10.100000 -1.000000 19.343301 +10.100000 -0.900000 18.532609 +10.100000 -0.800000 17.741916 +10.100000 -0.700000 16.971224 +10.100000 -0.600000 16.220531 +10.100000 -0.500000 15.489839 +10.100000 -0.400000 14.779146 +10.100000 -0.300000 14.088454 +10.100000 -0.200000 13.417761 +10.100000 -0.100000 12.767069 +10.100000 -0.000000 12.136376 +10.100000 0.100000 11.525684 +10.100000 0.200000 10.934991 +10.100000 0.300000 10.364299 +10.100000 0.400000 9.813606 +10.100000 0.500000 9.282914 +10.100000 0.600000 8.772221 +10.100000 0.700000 8.281529 +10.100000 0.800000 7.810836 +10.100000 0.900000 7.360144 +10.100000 1.000000 6.929451 +10.100000 1.100000 6.518759 +10.100000 1.200000 6.128066 +10.100000 1.300000 5.757373 +10.100000 1.400000 5.406681 +10.100000 1.500000 5.075988 +10.100000 1.600000 4.765296 +10.100000 1.700000 4.474603 +10.100000 1.800000 4.203911 +10.100000 1.900000 3.953218 +10.100000 2.000000 3.722526 +10.100000 2.100000 3.511833 +10.100000 2.200000 3.321141 +10.100000 2.300000 3.150448 +10.100000 2.400000 2.999756 +10.100000 2.500000 2.869063 +10.100000 2.600000 2.758371 +10.100000 2.700000 2.667678 +10.100000 2.800000 2.596986 +10.100000 2.900000 2.546293 +10.100000 3.000000 2.515601 +10.100000 3.100000 2.504908 +10.100000 3.200000 2.514216 +10.100000 3.300000 2.543523 +10.100000 3.400000 2.592831 +10.100000 3.500000 2.662138 +10.100000 3.600000 2.751446 +10.100000 3.700000 2.860753 +10.100000 3.800000 2.990061 +10.100000 3.900000 3.139368 +10.100000 4.000000 3.308676 +10.100000 4.100000 3.497983 +10.100000 4.200000 3.707291 +10.100000 4.300000 3.936598 +10.100000 4.400000 4.185906 +10.100000 4.500000 4.455213 +10.100000 4.600000 4.744521 +10.100000 4.700000 5.053828 +10.100000 4.800000 5.383136 +10.100000 4.900000 5.732443 +10.100000 5.000000 6.101751 +10.100000 5.100000 6.491058 +10.100000 5.200000 6.900366 +10.100000 5.300000 7.329673 +10.100000 5.400000 7.778981 +10.100000 5.500000 8.248288 +10.100000 5.600000 8.737596 +10.100000 5.700000 9.246903 +10.100000 5.800000 9.776211 +10.100000 5.900000 10.325518 +10.100000 6.000000 10.894826 +10.100000 6.100000 11.484133 +10.100000 6.200000 12.093441 +10.100000 6.300000 12.722748 +10.100000 6.400000 13.372056 +10.100000 6.500000 14.041363 +10.100000 6.600000 14.730671 +10.100000 6.700000 15.439978 +10.100000 6.800000 16.169286 +10.100000 6.900000 16.918593 +10.100000 7.000000 17.687901 +10.100000 7.100000 18.477208 +10.100000 7.200000 19.286516 +10.100000 7.300000 20.115823 +10.100000 7.400000 20.965131 +10.100000 7.500000 21.834438 +10.100000 7.600000 22.723746 +10.100000 7.700000 23.633053 +10.100000 7.800000 24.562361 +10.100000 7.900000 25.511668 +10.100000 8.000000 26.480976 +10.100000 8.100000 27.470283 +10.100000 8.200000 28.479591 +10.100000 8.300000 29.508898 +10.100000 8.400000 30.558206 +10.100000 8.500000 31.627513 +10.100000 8.600000 32.716821 +10.100000 8.700000 33.826128 +10.100000 8.800000 34.955436 +10.100000 8.900000 36.104743 +10.100000 9.000000 37.274051 +10.100000 9.100000 38.463358 +10.100000 9.200000 39.672666 +10.100000 9.300000 40.901973 +10.100000 9.400000 42.151281 +10.100000 9.500000 43.420588 +10.100000 9.600000 44.709896 +10.100000 9.700000 46.019203 +10.100000 9.800000 47.348511 +10.100000 9.900000 48.697818 +10.100000 10.000000 50.067126 +10.100000 10.100000 51.456433 +10.100000 10.200000 52.865741 +10.100000 10.300000 54.295048 +10.100000 10.400000 55.744356 +10.100000 10.500000 57.213663 +10.100000 10.600000 58.702971 +10.100000 10.700000 60.212278 +10.100000 10.800000 61.741586 +10.100000 10.900000 63.290893 +10.100000 11.000000 64.860200 +10.100000 11.100000 66.449508 +10.100000 11.200000 68.058815 +10.100000 11.300000 69.688123 +10.100000 11.400000 71.337430 +10.100000 11.500000 73.006738 +10.100000 11.600000 74.696045 +10.100000 11.700000 76.405353 +10.100000 11.800000 78.134660 +10.100000 11.900000 79.883968 +10.100000 12.000000 81.653275 +10.100000 12.100000 83.442583 +10.100000 12.200000 85.251890 +10.100000 12.300000 87.081198 +10.100000 12.400000 88.930505 +10.100000 12.500000 90.799813 +10.100000 12.600000 92.689120 +10.100000 12.700000 94.598428 +10.100000 12.800000 96.527735 +10.100000 12.900000 98.477043 +10.100000 13.000000 100.446350 +10.100000 13.100000 102.435658 +10.100000 13.200000 104.444965 +10.100000 13.300000 106.474273 +10.100000 13.400000 108.523580 +10.100000 13.500000 110.592888 +10.100000 13.600000 112.682195 +10.100000 13.700000 114.791503 +10.100000 13.800000 116.920810 +10.100000 13.900000 119.070118 +10.100000 14.000000 121.239425 +10.100000 14.100000 123.428733 +10.100000 14.200000 125.638040 +10.100000 14.300000 127.867348 +10.100000 14.400000 130.116655 +10.100000 14.500000 132.385963 +10.100000 14.600000 134.675270 +10.100000 14.700000 136.984578 +10.100000 14.800000 139.313885 +10.100000 14.900000 141.663193 +10.100000 15.000000 144.032500 + +10.200000 -5.000000 70.489039 +10.200000 -4.900000 68.857728 +10.200000 -4.800000 67.246418 +10.200000 -4.700000 65.655107 +10.200000 -4.600000 64.083797 +10.200000 -4.500000 62.532487 +10.200000 -4.400000 61.001176 +10.200000 -4.300000 59.489866 +10.200000 -4.200000 57.998555 +10.200000 -4.100000 56.527245 +10.200000 -4.000000 55.075934 +10.200000 -3.900000 53.644624 +10.200000 -3.800000 52.233314 +10.200000 -3.700000 50.842003 +10.200000 -3.600000 49.470693 +10.200000 -3.500000 48.119382 +10.200000 -3.400000 46.788072 +10.200000 -3.300000 45.476761 +10.200000 -3.200000 44.185451 +10.200000 -3.100000 42.914141 +10.200000 -3.000000 41.662830 +10.200000 -2.900000 40.431520 +10.200000 -2.800000 39.220209 +10.200000 -2.700000 38.028899 +10.200000 -2.600000 36.857588 +10.200000 -2.500000 35.706278 +10.200000 -2.400000 34.574968 +10.200000 -2.300000 33.463657 +10.200000 -2.200000 32.372347 +10.200000 -2.100000 31.301036 +10.200000 -2.000000 30.249726 +10.200000 -1.900000 29.218415 +10.200000 -1.800000 28.207105 +10.200000 -1.700000 27.215795 +10.200000 -1.600000 26.244484 +10.200000 -1.500000 25.293174 +10.200000 -1.400000 24.361863 +10.200000 -1.300000 23.450553 +10.200000 -1.200000 22.559242 +10.200000 -1.100000 21.687932 +10.200000 -1.000000 20.836622 +10.200000 -0.900000 20.005311 +10.200000 -0.800000 19.194001 +10.200000 -0.700000 18.402690 +10.200000 -0.600000 17.631380 +10.200000 -0.500000 16.880069 +10.200000 -0.400000 16.148759 +10.200000 -0.300000 15.437449 +10.200000 -0.200000 14.746138 +10.200000 -0.100000 14.074828 +10.200000 -0.000000 13.423517 +10.200000 0.100000 12.792207 +10.200000 0.200000 12.180896 +10.200000 0.300000 11.589586 +10.200000 0.400000 11.018276 +10.200000 0.500000 10.466965 +10.200000 0.600000 9.935655 +10.200000 0.700000 9.424344 +10.200000 0.800000 8.933034 +10.200000 0.900000 8.461724 +10.200000 1.000000 8.010413 +10.200000 1.100000 7.579103 +10.200000 1.200000 7.167792 +10.200000 1.300000 6.776482 +10.200000 1.400000 6.405171 +10.200000 1.500000 6.053861 +10.200000 1.600000 5.722551 +10.200000 1.700000 5.411240 +10.200000 1.800000 5.119930 +10.200000 1.900000 4.848619 +10.200000 2.000000 4.597309 +10.200000 2.100000 4.365998 +10.200000 2.200000 4.154688 +10.200000 2.300000 3.963378 +10.200000 2.400000 3.792067 +10.200000 2.500000 3.640757 +10.200000 2.600000 3.509446 +10.200000 2.700000 3.398136 +10.200000 2.800000 3.306825 +10.200000 2.900000 3.235515 +10.200000 3.000000 3.184205 +10.200000 3.100000 3.152894 +10.200000 3.200000 3.141584 +10.200000 3.300000 3.150273 +10.200000 3.400000 3.178963 +10.200000 3.500000 3.227652 +10.200000 3.600000 3.296342 +10.200000 3.700000 3.385032 +10.200000 3.800000 3.493721 +10.200000 3.900000 3.622411 +10.200000 4.000000 3.771100 +10.200000 4.100000 3.939790 +10.200000 4.200000 4.128479 +10.200000 4.300000 4.337169 +10.200000 4.400000 4.565859 +10.200000 4.500000 4.814548 +10.200000 4.600000 5.083238 +10.200000 4.700000 5.371927 +10.200000 4.800000 5.680617 +10.200000 4.900000 6.009306 +10.200000 5.000000 6.357996 +10.200000 5.100000 6.726686 +10.200000 5.200000 7.115375 +10.200000 5.300000 7.524065 +10.200000 5.400000 7.952754 +10.200000 5.500000 8.401444 +10.200000 5.600000 8.870133 +10.200000 5.700000 9.358823 +10.200000 5.800000 9.867513 +10.200000 5.900000 10.396202 +10.200000 6.000000 10.944892 +10.200000 6.100000 11.513581 +10.200000 6.200000 12.102271 +10.200000 6.300000 12.710960 +10.200000 6.400000 13.339650 +10.200000 6.500000 13.988340 +10.200000 6.600000 14.657029 +10.200000 6.700000 15.345719 +10.200000 6.800000 16.054408 +10.200000 6.900000 16.783098 +10.200000 7.000000 17.531787 +10.200000 7.100000 18.300477 +10.200000 7.200000 19.089167 +10.200000 7.300000 19.897856 +10.200000 7.400000 20.726546 +10.200000 7.500000 21.575235 +10.200000 7.600000 22.443925 +10.200000 7.700000 23.332614 +10.200000 7.800000 24.241304 +10.200000 7.900000 25.169994 +10.200000 8.000000 26.118683 +10.200000 8.100000 27.087373 +10.200000 8.200000 28.076062 +10.200000 8.300000 29.084752 +10.200000 8.400000 30.113441 +10.200000 8.500000 31.162131 +10.200000 8.600000 32.230821 +10.200000 8.700000 33.319510 +10.200000 8.800000 34.428200 +10.200000 8.900000 35.556889 +10.200000 9.000000 36.705579 +10.200000 9.100000 37.874268 +10.200000 9.200000 39.062958 +10.200000 9.300000 40.271648 +10.200000 9.400000 41.500337 +10.200000 9.500000 42.749027 +10.200000 9.600000 44.017716 +10.200000 9.700000 45.306406 +10.200000 9.800000 46.615095 +10.200000 9.900000 47.943785 +10.200000 10.000000 49.292475 +10.200000 10.100000 50.661164 +10.200000 10.200000 52.049854 +10.200000 10.300000 53.458543 +10.200000 10.400000 54.887233 +10.200000 10.500000 56.335922 +10.200000 10.600000 57.804612 +10.200000 10.700000 59.293302 +10.200000 10.800000 60.801991 +10.200000 10.900000 62.330681 +10.200000 11.000000 63.879370 +10.200000 11.100000 65.448060 +10.200000 11.200000 67.036750 +10.200000 11.300000 68.645439 +10.200000 11.400000 70.274129 +10.200000 11.500000 71.922818 +10.200000 11.600000 73.591508 +10.200000 11.700000 75.280197 +10.200000 11.800000 76.988887 +10.200000 11.900000 78.717577 +10.200000 12.000000 80.466266 +10.200000 12.100000 82.234956 +10.200000 12.200000 84.023645 +10.200000 12.300000 85.832335 +10.200000 12.400000 87.661024 +10.200000 12.500000 89.509714 +10.200000 12.600000 91.378404 +10.200000 12.700000 93.267093 +10.200000 12.800000 95.175783 +10.200000 12.900000 97.104472 +10.200000 13.000000 99.053162 +10.200000 13.100000 101.021851 +10.200000 13.200000 103.010541 +10.200000 13.300000 105.019231 +10.200000 13.400000 107.047920 +10.200000 13.500000 109.096610 +10.200000 13.600000 111.165299 +10.200000 13.700000 113.253989 +10.200000 13.800000 115.362678 +10.200000 13.900000 117.491368 +10.200000 14.000000 119.640058 +10.200000 14.100000 121.808747 +10.200000 14.200000 123.997437 +10.200000 14.300000 126.206126 +10.200000 14.400000 128.434816 +10.200000 14.500000 130.683505 +10.200000 14.600000 132.952195 +10.200000 14.700000 135.240885 +10.200000 14.800000 137.549574 +10.200000 14.900000 139.878264 +10.200000 15.000000 142.226953 + +10.300000 -5.000000 72.939804 +10.300000 -4.900000 71.287359 +10.300000 -4.800000 69.654914 +10.300000 -4.700000 68.042469 +10.300000 -4.600000 66.450024 +10.300000 -4.500000 64.877579 +10.300000 -4.400000 63.325134 +10.300000 -4.300000 61.792689 +10.300000 -4.200000 60.280244 +10.300000 -4.100000 58.787798 +10.300000 -4.000000 57.315353 +10.300000 -3.900000 55.862908 +10.300000 -3.800000 54.430463 +10.300000 -3.700000 53.018018 +10.300000 -3.600000 51.625573 +10.300000 -3.500000 50.253128 +10.300000 -3.400000 48.900683 +10.300000 -3.300000 47.568238 +10.300000 -3.200000 46.255793 +10.300000 -3.100000 44.963348 +10.300000 -3.000000 43.690903 +10.300000 -2.900000 42.438457 +10.300000 -2.800000 41.206012 +10.300000 -2.700000 39.993567 +10.300000 -2.600000 38.801122 +10.300000 -2.500000 37.628677 +10.300000 -2.400000 36.476232 +10.300000 -2.300000 35.343787 +10.300000 -2.200000 34.231342 +10.300000 -2.100000 33.138897 +10.300000 -2.000000 32.066452 +10.300000 -1.900000 31.014007 +10.300000 -1.800000 29.981561 +10.300000 -1.700000 28.969116 +10.300000 -1.600000 27.976671 +10.300000 -1.500000 27.004226 +10.300000 -1.400000 26.051781 +10.300000 -1.300000 25.119336 +10.300000 -1.200000 24.206891 +10.300000 -1.100000 23.314446 +10.300000 -1.000000 22.442001 +10.300000 -0.900000 21.589556 +10.300000 -0.800000 20.757111 +10.300000 -0.700000 19.944666 +10.300000 -0.600000 19.152220 +10.300000 -0.500000 18.379775 +10.300000 -0.400000 17.627330 +10.300000 -0.300000 16.894885 +10.300000 -0.200000 16.182440 +10.300000 -0.100000 15.489995 +10.300000 -0.000000 14.817550 +10.300000 0.100000 14.165105 +10.300000 0.200000 13.532660 +10.300000 0.300000 12.920215 +10.300000 0.400000 12.327770 +10.300000 0.500000 11.755324 +10.300000 0.600000 11.202879 +10.300000 0.700000 10.670434 +10.300000 0.800000 10.157989 +10.300000 0.900000 9.665544 +10.300000 1.000000 9.193099 +10.300000 1.100000 8.740654 +10.300000 1.200000 8.308209 +10.300000 1.300000 7.895764 +10.300000 1.400000 7.503319 +10.300000 1.500000 7.130874 +10.300000 1.600000 6.778428 +10.300000 1.700000 6.445983 +10.300000 1.800000 6.133538 +10.300000 1.900000 5.841093 +10.300000 2.000000 5.568648 +10.300000 2.100000 5.316203 +10.300000 2.200000 5.083758 +10.300000 2.300000 4.871313 +10.300000 2.400000 4.678868 +10.300000 2.500000 4.506423 +10.300000 2.600000 4.353978 +10.300000 2.700000 4.221533 +10.300000 2.800000 4.109087 +10.300000 2.900000 4.016642 +10.300000 3.000000 3.944197 +10.300000 3.100000 3.891752 +10.300000 3.200000 3.859307 +10.300000 3.300000 3.846862 +10.300000 3.400000 3.854417 +10.300000 3.500000 3.881972 +10.300000 3.600000 3.929527 +10.300000 3.700000 3.997082 +10.300000 3.800000 4.084637 +10.300000 3.900000 4.192191 +10.300000 4.000000 4.319746 +10.300000 4.100000 4.467301 +10.300000 4.200000 4.634856 +10.300000 4.300000 4.822411 +10.300000 4.400000 5.029966 +10.300000 4.500000 5.257521 +10.300000 4.600000 5.505076 +10.300000 4.700000 5.772631 +10.300000 4.800000 6.060186 +10.300000 4.900000 6.367741 +10.300000 5.000000 6.695296 +10.300000 5.100000 7.042850 +10.300000 5.200000 7.410405 +10.300000 5.300000 7.797960 +10.300000 5.400000 8.205515 +10.300000 5.500000 8.633070 +10.300000 5.600000 9.080625 +10.300000 5.700000 9.548180 +10.300000 5.800000 10.035735 +10.300000 5.900000 10.543290 +10.300000 6.000000 11.070845 +10.300000 6.100000 11.618400 +10.300000 6.200000 12.185954 +10.300000 6.300000 12.773509 +10.300000 6.400000 13.381064 +10.300000 6.500000 14.008619 +10.300000 6.600000 14.656174 +10.300000 6.700000 15.323729 +10.300000 6.800000 16.011284 +10.300000 6.900000 16.718839 +10.300000 7.000000 17.446394 +10.300000 7.100000 18.193949 +10.300000 7.200000 18.961504 +10.300000 7.300000 19.749059 +10.300000 7.400000 20.556613 +10.300000 7.500000 21.384168 +10.300000 7.600000 22.231723 +10.300000 7.700000 23.099278 +10.300000 7.800000 23.986833 +10.300000 7.900000 24.894388 +10.300000 8.000000 25.821943 +10.300000 8.100000 26.769498 +10.300000 8.200000 27.737053 +10.300000 8.300000 28.724608 +10.300000 8.400000 29.732163 +10.300000 8.500000 30.759717 +10.300000 8.600000 31.807272 +10.300000 8.700000 32.874827 +10.300000 8.800000 33.962382 +10.300000 8.900000 35.069937 +10.300000 9.000000 36.197492 +10.300000 9.100000 37.345047 +10.300000 9.200000 38.512602 +10.300000 9.300000 39.700157 +10.300000 9.400000 40.907712 +10.300000 9.500000 42.135267 +10.300000 9.600000 43.382822 +10.300000 9.700000 44.650376 +10.300000 9.800000 45.937931 +10.300000 9.900000 47.245486 +10.300000 10.000000 48.573041 +10.300000 10.100000 49.920596 +10.300000 10.200000 51.288151 +10.300000 10.300000 52.675706 +10.300000 10.400000 54.083261 +10.300000 10.500000 55.510816 +10.300000 10.600000 56.958371 +10.300000 10.700000 58.425926 +10.300000 10.800000 59.913480 +10.300000 10.900000 61.421035 +10.300000 11.000000 62.948590 +10.300000 11.100000 64.496145 +10.300000 11.200000 66.063700 +10.300000 11.300000 67.651255 +10.300000 11.400000 69.258810 +10.300000 11.500000 70.886365 +10.300000 11.600000 72.533920 +10.300000 11.700000 74.201475 +10.300000 11.800000 75.889030 +10.300000 11.900000 77.596585 +10.300000 12.000000 79.324139 +10.300000 12.100000 81.071694 +10.300000 12.200000 82.839249 +10.300000 12.300000 84.626804 +10.300000 12.400000 86.434359 +10.300000 12.500000 88.261914 +10.300000 12.600000 90.109469 +10.300000 12.700000 91.977024 +10.300000 12.800000 93.864579 +10.300000 12.900000 95.772134 +10.300000 13.000000 97.699689 +10.300000 13.100000 99.647243 +10.300000 13.200000 101.614798 +10.300000 13.300000 103.602353 +10.300000 13.400000 105.609908 +10.300000 13.500000 107.637463 +10.300000 13.600000 109.685018 +10.300000 13.700000 111.752573 +10.300000 13.800000 113.840128 +10.300000 13.900000 115.947683 +10.300000 14.000000 118.075238 +10.300000 14.100000 120.222793 +10.300000 14.200000 122.390347 +10.300000 14.300000 124.577902 +10.300000 14.400000 126.785457 +10.300000 14.500000 129.013012 +10.300000 14.600000 131.260567 +10.300000 14.700000 133.528122 +10.300000 14.800000 135.815677 +10.300000 14.900000 138.123232 +10.300000 15.000000 140.450787 + +10.400000 -5.000000 75.517890 +10.400000 -4.900000 73.843794 +10.400000 -4.800000 72.189697 +10.400000 -4.700000 70.555601 +10.400000 -4.600000 68.941504 +10.400000 -4.500000 67.347408 +10.400000 -4.400000 65.773311 +10.400000 -4.300000 64.219215 +10.400000 -4.200000 62.685118 +10.400000 -4.100000 61.171022 +10.400000 -4.000000 59.676925 +10.400000 -3.900000 58.202829 +10.400000 -3.800000 56.748732 +10.400000 -3.700000 55.314636 +10.400000 -3.600000 53.900539 +10.400000 -3.500000 52.506443 +10.400000 -3.400000 51.132347 +10.400000 -3.300000 49.778250 +10.400000 -3.200000 48.444154 +10.400000 -3.100000 47.130057 +10.400000 -3.000000 45.835961 +10.400000 -2.900000 44.561864 +10.400000 -2.800000 43.307768 +10.400000 -2.700000 42.073671 +10.400000 -2.600000 40.859575 +10.400000 -2.500000 39.665478 +10.400000 -2.400000 38.491382 +10.400000 -2.300000 37.337285 +10.400000 -2.200000 36.203189 +10.400000 -2.100000 35.089092 +10.400000 -2.000000 33.994996 +10.400000 -1.900000 32.920899 +10.400000 -1.800000 31.866803 +10.400000 -1.700000 30.832706 +10.400000 -1.600000 29.818610 +10.400000 -1.500000 28.824513 +10.400000 -1.400000 27.850417 +10.400000 -1.300000 26.896320 +10.400000 -1.200000 25.962224 +10.400000 -1.100000 25.048127 +10.400000 -1.000000 24.154031 +10.400000 -0.900000 23.279934 +10.400000 -0.800000 22.425838 +10.400000 -0.700000 21.591741 +10.400000 -0.600000 20.777645 +10.400000 -0.500000 19.983548 +10.400000 -0.400000 19.209452 +10.400000 -0.300000 18.455355 +10.400000 -0.200000 17.721259 +10.400000 -0.100000 17.007162 +10.400000 -0.000000 16.313066 +10.400000 0.100000 15.638970 +10.400000 0.200000 14.984873 +10.400000 0.300000 14.350777 +10.400000 0.400000 13.736680 +10.400000 0.500000 13.142584 +10.400000 0.600000 12.568487 +10.400000 0.700000 12.014391 +10.400000 0.800000 11.480294 +10.400000 0.900000 10.966198 +10.400000 1.000000 10.472101 +10.400000 1.100000 9.998005 +10.400000 1.200000 9.543908 +10.400000 1.300000 9.109812 +10.400000 1.400000 8.695715 +10.400000 1.500000 8.301619 +10.400000 1.600000 7.927522 +10.400000 1.700000 7.573426 +10.400000 1.800000 7.239329 +10.400000 1.900000 6.925233 +10.400000 2.000000 6.631136 +10.400000 2.100000 6.357040 +10.400000 2.200000 6.102943 +10.400000 2.300000 5.868847 +10.400000 2.400000 5.654750 +10.400000 2.500000 5.460654 +10.400000 2.600000 5.286557 +10.400000 2.700000 5.132461 +10.400000 2.800000 4.998364 +10.400000 2.900000 4.884268 +10.400000 3.000000 4.790171 +10.400000 3.100000 4.716075 +10.400000 3.200000 4.661978 +10.400000 3.300000 4.627882 +10.400000 3.400000 4.613785 +10.400000 3.500000 4.619689 +10.400000 3.600000 4.645593 +10.400000 3.700000 4.691496 +10.400000 3.800000 4.757400 +10.400000 3.900000 4.843303 +10.400000 4.000000 4.949207 +10.400000 4.100000 5.075110 +10.400000 4.200000 5.221014 +10.400000 4.300000 5.386917 +10.400000 4.400000 5.572821 +10.400000 4.500000 5.778724 +10.400000 4.600000 6.004628 +10.400000 4.700000 6.250531 +10.400000 4.800000 6.516435 +10.400000 4.900000 6.802338 +10.400000 5.000000 7.108242 +10.400000 5.100000 7.434145 +10.400000 5.200000 7.780049 +10.400000 5.300000 8.145952 +10.400000 5.400000 8.531856 +10.400000 5.500000 8.937759 +10.400000 5.600000 9.363663 +10.400000 5.700000 9.809566 +10.400000 5.800000 10.275470 +10.400000 5.900000 10.761373 +10.400000 6.000000 11.267277 +10.400000 6.100000 11.793180 +10.400000 6.200000 12.339084 +10.400000 6.300000 12.904987 +10.400000 6.400000 13.490891 +10.400000 6.500000 14.096794 +10.400000 6.600000 14.722698 +10.400000 6.700000 15.368601 +10.400000 6.800000 16.034505 +10.400000 6.900000 16.720409 +10.400000 7.000000 17.426312 +10.400000 7.100000 18.152216 +10.400000 7.200000 18.898119 +10.400000 7.300000 19.664023 +10.400000 7.400000 20.449926 +10.400000 7.500000 21.255830 +10.400000 7.600000 22.081733 +10.400000 7.700000 22.927637 +10.400000 7.800000 23.793540 +10.400000 7.900000 24.679444 +10.400000 8.000000 25.585347 +10.400000 8.100000 26.511251 +10.400000 8.200000 27.457154 +10.400000 8.300000 28.423058 +10.400000 8.400000 29.408961 +10.400000 8.500000 30.414865 +10.400000 8.600000 31.440768 +10.400000 8.700000 32.486672 +10.400000 8.800000 33.552575 +10.400000 8.900000 34.638479 +10.400000 9.000000 35.744382 +10.400000 9.100000 36.870286 +10.400000 9.200000 38.016189 +10.400000 9.300000 39.182093 +10.400000 9.400000 40.367996 +10.400000 9.500000 41.573900 +10.400000 9.600000 42.799803 +10.400000 9.700000 44.045707 +10.400000 9.800000 45.311610 +10.400000 9.900000 46.597514 +10.400000 10.000000 47.903417 +10.400000 10.100000 49.229321 +10.400000 10.200000 50.575224 +10.400000 10.300000 51.941128 +10.400000 10.400000 53.327032 +10.400000 10.500000 54.732935 +10.400000 10.600000 56.158839 +10.400000 10.700000 57.604742 +10.400000 10.800000 59.070646 +10.400000 10.900000 60.556549 +10.400000 11.000000 62.062453 +10.400000 11.100000 63.588356 +10.400000 11.200000 65.134260 +10.400000 11.300000 66.700163 +10.400000 11.400000 68.286067 +10.400000 11.500000 69.891970 +10.400000 11.600000 71.517874 +10.400000 11.700000 73.163777 +10.400000 11.800000 74.829681 +10.400000 11.900000 76.515584 +10.400000 12.000000 78.221488 +10.400000 12.100000 79.947391 +10.400000 12.200000 81.693295 +10.400000 12.300000 83.459198 +10.400000 12.400000 85.245102 +10.400000 12.500000 87.051005 +10.400000 12.600000 88.876909 +10.400000 12.700000 90.722812 +10.400000 12.800000 92.588716 +10.400000 12.900000 94.474619 +10.400000 13.000000 96.380523 +10.400000 13.100000 98.306426 +10.400000 13.200000 100.252330 +10.400000 13.300000 102.218233 +10.400000 13.400000 104.204137 +10.400000 13.500000 106.210040 +10.400000 13.600000 108.235944 +10.400000 13.700000 110.281847 +10.400000 13.800000 112.347751 +10.400000 13.900000 114.433655 +10.400000 14.000000 116.539558 +10.400000 14.100000 118.665462 +10.400000 14.200000 120.811365 +10.400000 14.300000 122.977269 +10.400000 14.400000 125.163172 +10.400000 14.500000 127.369076 +10.400000 14.600000 129.594979 +10.400000 14.700000 131.840883 +10.400000 14.800000 134.106786 +10.400000 14.900000 136.392690 +10.400000 15.000000 138.698593 + +10.500000 -5.000000 78.217315 +10.500000 -4.900000 76.521050 +10.500000 -4.800000 74.844786 +10.500000 -4.700000 73.188521 +10.500000 -4.600000 71.552256 +10.500000 -4.500000 69.935992 +10.500000 -4.400000 68.339727 +10.500000 -4.300000 66.763462 +10.500000 -4.200000 65.207198 +10.500000 -4.100000 63.670933 +10.500000 -4.000000 62.154669 +10.500000 -3.900000 60.658404 +10.500000 -3.800000 59.182139 +10.500000 -3.700000 57.725875 +10.500000 -3.600000 56.289610 +10.500000 -3.500000 54.873346 +10.500000 -3.400000 53.477081 +10.500000 -3.300000 52.100816 +10.500000 -3.200000 50.744552 +10.500000 -3.100000 49.408287 +10.500000 -3.000000 48.092022 +10.500000 -2.900000 46.795758 +10.500000 -2.800000 45.519493 +10.500000 -2.700000 44.263229 +10.500000 -2.600000 43.026964 +10.500000 -2.500000 41.810699 +10.500000 -2.400000 40.614435 +10.500000 -2.300000 39.438170 +10.500000 -2.200000 38.281905 +10.500000 -2.100000 37.145641 +10.500000 -2.000000 36.029376 +10.500000 -1.900000 34.933112 +10.500000 -1.800000 33.856847 +10.500000 -1.700000 32.800582 +10.500000 -1.600000 31.764318 +10.500000 -1.500000 30.748053 +10.500000 -1.400000 29.751788 +10.500000 -1.300000 28.775524 +10.500000 -1.200000 27.819259 +10.500000 -1.100000 26.882995 +10.500000 -1.000000 25.966730 +10.500000 -0.900000 25.070465 +10.500000 -0.800000 24.194201 +10.500000 -0.700000 23.337936 +10.500000 -0.600000 22.501671 +10.500000 -0.500000 21.685407 +10.500000 -0.400000 20.889142 +10.500000 -0.300000 20.112878 +10.500000 -0.200000 19.356613 +10.500000 -0.100000 18.620348 +10.500000 -0.000000 17.904084 +10.500000 0.100000 17.207819 +10.500000 0.200000 16.531555 +10.500000 0.300000 15.875290 +10.500000 0.400000 15.239025 +10.500000 0.500000 14.622761 +10.500000 0.600000 14.026496 +10.500000 0.700000 13.450231 +10.500000 0.800000 12.893967 +10.500000 0.900000 12.357702 +10.500000 1.000000 11.841438 +10.500000 1.100000 11.345173 +10.500000 1.200000 10.868908 +10.500000 1.300000 10.412644 +10.500000 1.400000 9.976379 +10.500000 1.500000 9.560114 +10.500000 1.600000 9.163850 +10.500000 1.700000 8.787585 +10.500000 1.800000 8.431321 +10.500000 1.900000 8.095056 +10.500000 2.000000 7.778791 +10.500000 2.100000 7.482527 +10.500000 2.200000 7.206262 +10.500000 2.300000 6.949997 +10.500000 2.400000 6.713733 +10.500000 2.500000 6.497468 +10.500000 2.600000 6.301204 +10.500000 2.700000 6.124939 +10.500000 2.800000 5.968674 +10.500000 2.900000 5.832410 +10.500000 3.000000 5.716145 +10.500000 3.100000 5.619880 +10.500000 3.200000 5.543616 +10.500000 3.300000 5.487351 +10.500000 3.400000 5.451087 +10.500000 3.500000 5.434822 +10.500000 3.600000 5.438557 +10.500000 3.700000 5.462293 +10.500000 3.800000 5.506028 +10.500000 3.900000 5.569764 +10.500000 4.000000 5.653499 +10.500000 4.100000 5.757234 +10.500000 4.200000 5.880970 +10.500000 4.300000 6.024705 +10.500000 4.400000 6.188440 +10.500000 4.500000 6.372176 +10.500000 4.600000 6.575911 +10.500000 4.700000 6.799647 +10.500000 4.800000 7.043382 +10.500000 4.900000 7.307117 +10.500000 5.000000 7.590853 +10.500000 5.100000 7.894588 +10.500000 5.200000 8.218323 +10.500000 5.300000 8.562059 +10.500000 5.400000 8.925794 +10.500000 5.500000 9.309530 +10.500000 5.600000 9.713265 +10.500000 5.700000 10.137000 +10.500000 5.800000 10.580736 +10.500000 5.900000 11.044471 +10.500000 6.000000 11.528206 +10.500000 6.100000 12.031942 +10.500000 6.200000 12.555677 +10.500000 6.300000 13.099413 +10.500000 6.400000 13.663148 +10.500000 6.500000 14.246883 +10.500000 6.600000 14.850619 +10.500000 6.700000 15.474354 +10.500000 6.800000 16.118089 +10.500000 6.900000 16.781825 +10.500000 7.000000 17.465560 +10.500000 7.100000 18.169296 +10.500000 7.200000 18.893031 +10.500000 7.300000 19.636766 +10.500000 7.400000 20.400502 +10.500000 7.500000 21.184237 +10.500000 7.600000 21.987972 +10.500000 7.700000 22.811708 +10.500000 7.800000 23.655443 +10.500000 7.900000 24.519179 +10.500000 8.000000 25.402914 +10.500000 8.100000 26.306649 +10.500000 8.200000 27.230385 +10.500000 8.300000 28.174120 +10.500000 8.400000 29.137856 +10.500000 8.500000 30.121591 +10.500000 8.600000 31.125326 +10.500000 8.700000 32.149062 +10.500000 8.800000 33.192797 +10.500000 8.900000 34.256532 +10.500000 9.000000 35.340268 +10.500000 9.100000 36.444003 +10.500000 9.200000 37.567739 +10.500000 9.300000 38.711474 +10.500000 9.400000 39.875209 +10.500000 9.500000 41.058945 +10.500000 9.600000 42.262680 +10.500000 9.700000 43.486415 +10.500000 9.800000 44.730151 +10.500000 9.900000 45.993886 +10.500000 10.000000 47.277622 +10.500000 10.100000 48.581357 +10.500000 10.200000 49.905092 +10.500000 10.300000 51.248828 +10.500000 10.400000 52.612563 +10.500000 10.500000 53.996298 +10.500000 10.600000 55.400034 +10.500000 10.700000 56.823769 +10.500000 10.800000 58.267505 +10.500000 10.900000 59.731240 +10.500000 11.000000 61.214975 +10.500000 11.100000 62.718711 +10.500000 11.200000 64.242446 +10.500000 11.300000 65.786181 +10.500000 11.400000 67.349917 +10.500000 11.500000 68.933652 +10.500000 11.600000 70.537388 +10.500000 11.700000 72.161123 +10.500000 11.800000 73.804858 +10.500000 11.900000 75.468594 +10.500000 12.000000 77.152329 +10.500000 12.100000 78.856065 +10.500000 12.200000 80.579800 +10.500000 12.300000 82.323535 +10.500000 12.400000 84.087271 +10.500000 12.500000 85.871006 +10.500000 12.600000 87.674741 +10.500000 12.700000 89.498477 +10.500000 12.800000 91.342212 +10.500000 12.900000 93.205948 +10.500000 13.000000 95.089683 +10.500000 13.100000 96.993418 +10.500000 13.200000 98.917154 +10.500000 13.300000 100.860889 +10.500000 13.400000 102.824624 +10.500000 13.500000 104.808360 +10.500000 13.600000 106.812095 +10.500000 13.700000 108.835831 +10.500000 13.800000 110.879566 +10.500000 13.900000 112.943301 +10.500000 14.000000 115.027037 +10.500000 14.100000 117.130772 +10.500000 14.200000 119.254507 +10.500000 14.300000 121.398243 +10.500000 14.400000 123.561978 +10.500000 14.500000 125.745714 +10.500000 14.600000 127.949449 +10.500000 14.700000 130.173184 +10.500000 14.800000 132.416920 +10.500000 14.900000 134.680655 +10.500000 15.000000 136.964390 + +10.600000 -5.000000 81.031598 +10.600000 -4.900000 79.312649 +10.600000 -4.800000 77.613699 +10.600000 -4.700000 75.934750 +10.600000 -4.600000 74.275800 +10.600000 -4.500000 72.636851 +10.600000 -4.400000 71.017901 +10.600000 -4.300000 69.418952 +10.600000 -4.200000 67.840002 +10.600000 -4.100000 66.281053 +10.600000 -4.000000 64.742103 +10.600000 -3.900000 63.223154 +10.600000 -3.800000 61.724204 +10.600000 -3.700000 60.245255 +10.600000 -3.600000 58.786305 +10.600000 -3.500000 57.347356 +10.600000 -3.400000 55.928406 +10.600000 -3.300000 54.529457 +10.600000 -3.200000 53.150507 +10.600000 -3.100000 51.791558 +10.600000 -3.000000 50.452608 +10.600000 -2.900000 49.133659 +10.600000 -2.800000 47.834709 +10.600000 -2.700000 46.555760 +10.600000 -2.600000 45.296810 +10.600000 -2.500000 44.057861 +10.600000 -2.400000 42.838911 +10.600000 -2.300000 41.639962 +10.600000 -2.200000 40.461012 +10.600000 -2.100000 39.302063 +10.600000 -2.000000 38.163113 +10.600000 -1.900000 37.044164 +10.600000 -1.800000 35.945214 +10.600000 -1.700000 34.866265 +10.600000 -1.600000 33.807315 +10.600000 -1.500000 32.768366 +10.600000 -1.400000 31.749416 +10.600000 -1.300000 30.750467 +10.600000 -1.200000 29.771517 +10.600000 -1.100000 28.812568 +10.600000 -1.000000 27.873618 +10.600000 -0.900000 26.954669 +10.600000 -0.800000 26.055719 +10.600000 -0.700000 25.176770 +10.600000 -0.600000 24.317820 +10.600000 -0.500000 23.478871 +10.600000 -0.400000 22.659921 +10.600000 -0.300000 21.860972 +10.600000 -0.200000 21.082022 +10.600000 -0.100000 20.323073 +10.600000 -0.000000 19.584123 +10.600000 0.100000 18.865174 +10.600000 0.200000 18.166224 +10.600000 0.300000 17.487275 +10.600000 0.400000 16.828325 +10.600000 0.500000 16.189376 +10.600000 0.600000 15.570427 +10.600000 0.700000 14.971477 +10.600000 0.800000 14.392528 +10.600000 0.900000 13.833578 +10.600000 1.000000 13.294629 +10.600000 1.100000 12.775679 +10.600000 1.200000 12.276730 +10.600000 1.300000 11.797780 +10.600000 1.400000 11.338831 +10.600000 1.500000 10.899881 +10.600000 1.600000 10.480932 +10.600000 1.700000 10.081982 +10.600000 1.800000 9.703033 +10.600000 1.900000 9.344083 +10.600000 2.000000 9.005134 +10.600000 2.100000 8.686184 +10.600000 2.200000 8.387235 +10.600000 2.300000 8.108285 +10.600000 2.400000 7.849336 +10.600000 2.500000 7.610386 +10.600000 2.600000 7.391437 +10.600000 2.700000 7.192487 +10.600000 2.800000 7.013538 +10.600000 2.900000 6.854588 +10.600000 3.000000 6.715639 +10.600000 3.100000 6.596689 +10.600000 3.200000 6.497740 +10.600000 3.300000 6.418790 +10.600000 3.400000 6.359841 +10.600000 3.500000 6.320891 +10.600000 3.600000 6.301942 +10.600000 3.700000 6.302992 +10.600000 3.800000 6.324043 +10.600000 3.900000 6.365093 +10.600000 4.000000 6.426144 +10.600000 4.100000 6.507194 +10.600000 4.200000 6.608245 +10.600000 4.300000 6.729295 +10.600000 4.400000 6.870346 +10.600000 4.500000 7.031396 +10.600000 4.600000 7.212447 +10.600000 4.700000 7.413497 +10.600000 4.800000 7.634548 +10.600000 4.900000 7.875598 +10.600000 5.000000 8.136649 +10.600000 5.100000 8.417699 +10.600000 5.200000 8.718750 +10.600000 5.300000 9.039800 +10.600000 5.400000 9.380851 +10.600000 5.500000 9.741901 +10.600000 5.600000 10.122952 +10.600000 5.700000 10.524002 +10.600000 5.800000 10.945053 +10.600000 5.900000 11.386103 +10.600000 6.000000 11.847154 +10.600000 6.100000 12.328204 +10.600000 6.200000 12.829255 +10.600000 6.300000 13.350305 +10.600000 6.400000 13.891356 +10.600000 6.500000 14.452406 +10.600000 6.600000 15.033457 +10.600000 6.700000 15.634507 +10.600000 6.800000 16.255558 +10.600000 6.900000 16.896608 +10.600000 7.000000 17.557659 +10.600000 7.100000 18.238709 +10.600000 7.200000 18.939760 +10.600000 7.300000 19.660810 +10.600000 7.400000 20.401861 +10.600000 7.500000 21.162911 +10.600000 7.600000 21.943962 +10.600000 7.700000 22.745012 +10.600000 7.800000 23.566063 +10.600000 7.900000 24.407113 +10.600000 8.000000 25.268164 +10.600000 8.100000 26.149214 +10.600000 8.200000 27.050265 +10.600000 8.300000 27.971315 +10.600000 8.400000 28.912366 +10.600000 8.500000 29.873416 +10.600000 8.600000 30.854467 +10.600000 8.700000 31.855517 +10.600000 8.800000 32.876568 +10.600000 8.900000 33.917618 +10.600000 9.000000 34.978669 +10.600000 9.100000 36.059719 +10.600000 9.200000 37.160770 +10.600000 9.300000 38.281820 +10.600000 9.400000 39.422871 +10.600000 9.500000 40.583921 +10.600000 9.600000 41.764972 +10.600000 9.700000 42.966022 +10.600000 9.800000 44.187073 +10.600000 9.900000 45.428123 +10.600000 10.000000 46.689174 +10.600000 10.100000 47.970224 +10.600000 10.200000 49.271275 +10.600000 10.300000 50.592325 +10.600000 10.400000 51.933376 +10.600000 10.500000 53.294426 +10.600000 10.600000 54.675477 +10.600000 10.700000 56.076527 +10.600000 10.800000 57.497578 +10.600000 10.900000 58.938628 +10.600000 11.000000 60.399679 +10.600000 11.100000 61.880729 +10.600000 11.200000 63.381780 +10.600000 11.300000 64.902830 +10.600000 11.400000 66.443881 +10.600000 11.500000 68.004931 +10.600000 11.600000 69.585982 +10.600000 11.700000 71.187032 +10.600000 11.800000 72.808083 +10.600000 11.900000 74.449133 +10.600000 12.000000 76.110184 +10.600000 12.100000 77.791234 +10.600000 12.200000 79.492285 +10.600000 12.300000 81.213335 +10.600000 12.400000 82.954386 +10.600000 12.500000 84.715436 +10.600000 12.600000 86.496487 +10.600000 12.700000 88.297537 +10.600000 12.800000 90.118588 +10.600000 12.900000 91.959639 +10.600000 13.000000 93.820689 +10.600000 13.100000 95.701740 +10.600000 13.200000 97.602790 +10.600000 13.300000 99.523841 +10.600000 13.400000 101.464891 +10.600000 13.500000 103.425942 +10.600000 13.600000 105.406992 +10.600000 13.700000 107.408043 +10.600000 13.800000 109.429093 +10.600000 13.900000 111.470144 +10.600000 14.000000 113.531194 +10.600000 14.100000 115.612245 +10.600000 14.200000 117.713295 +10.600000 14.300000 119.834346 +10.600000 14.400000 121.975396 +10.600000 14.500000 124.136447 +10.600000 14.600000 126.317497 +10.600000 14.700000 128.518548 +10.600000 14.800000 130.739598 +10.600000 14.900000 132.980649 +10.600000 15.000000 135.241699 + +10.700000 -5.000000 83.953845 +10.700000 -4.900000 82.211694 +10.700000 -4.800000 80.489543 +10.700000 -4.700000 78.787392 +10.700000 -4.600000 77.105241 +10.700000 -4.500000 75.443090 +10.700000 -4.400000 73.800939 +10.700000 -4.300000 72.178787 +10.700000 -4.200000 70.576636 +10.700000 -4.100000 68.994485 +10.700000 -4.000000 67.432334 +10.700000 -3.900000 65.890183 +10.700000 -3.800000 64.368032 +10.700000 -3.700000 62.865881 +10.700000 -3.600000 61.383730 +10.700000 -3.500000 59.921579 +10.700000 -3.400000 58.479427 +10.700000 -3.300000 57.057276 +10.700000 -3.200000 55.655125 +10.700000 -3.100000 54.272974 +10.700000 -3.000000 52.910823 +10.700000 -2.900000 51.568672 +10.700000 -2.800000 50.246521 +10.700000 -2.700000 48.944370 +10.700000 -2.600000 47.662219 +10.700000 -2.500000 46.400067 +10.700000 -2.400000 45.157916 +10.700000 -2.300000 43.935765 +10.700000 -2.200000 42.733614 +10.700000 -2.100000 41.551463 +10.700000 -2.000000 40.389312 +10.700000 -1.900000 39.247161 +10.700000 -1.800000 38.125010 +10.700000 -1.700000 37.022859 +10.700000 -1.600000 35.940707 +10.700000 -1.500000 34.878556 +10.700000 -1.400000 33.836405 +10.700000 -1.300000 32.814254 +10.700000 -1.200000 31.812103 +10.700000 -1.100000 30.829952 +10.700000 -1.000000 29.867801 +10.700000 -0.900000 28.925650 +10.700000 -0.800000 28.003499 +10.700000 -0.700000 27.101348 +10.700000 -0.600000 26.219196 +10.700000 -0.500000 25.357045 +10.700000 -0.400000 24.514894 +10.700000 -0.300000 23.692743 +10.700000 -0.200000 22.890592 +10.700000 -0.100000 22.108441 +10.700000 -0.000000 21.346290 +10.700000 0.100000 20.604139 +10.700000 0.200000 19.881988 +10.700000 0.300000 19.179836 +10.700000 0.400000 18.497685 +10.700000 0.500000 17.835534 +10.700000 0.600000 17.193383 +10.700000 0.700000 16.571232 +10.700000 0.800000 15.969081 +10.700000 0.900000 15.386930 +10.700000 1.000000 14.824779 +10.700000 1.100000 14.282628 +10.700000 1.200000 13.760476 +10.700000 1.300000 13.258325 +10.700000 1.400000 12.776174 +10.700000 1.500000 12.314023 +10.700000 1.600000 11.871872 +10.700000 1.700000 11.449721 +10.700000 1.800000 11.047570 +10.700000 1.900000 10.665419 +10.700000 2.000000 10.303268 +10.700000 2.100000 9.961116 +10.700000 2.200000 9.638965 +10.700000 2.300000 9.336814 +10.700000 2.400000 9.054663 +10.700000 2.500000 8.792512 +10.700000 2.600000 8.550361 +10.700000 2.700000 8.328210 +10.700000 2.800000 8.126059 +10.700000 2.900000 7.943908 +10.700000 3.000000 7.781756 +10.700000 3.100000 7.639605 +10.700000 3.200000 7.517454 +10.700000 3.300000 7.415303 +10.700000 3.400000 7.333152 +10.700000 3.500000 7.271001 +10.700000 3.600000 7.228850 +10.700000 3.700000 7.206699 +10.700000 3.800000 7.204548 +10.700000 3.900000 7.222397 +10.700000 4.000000 7.260245 +10.700000 4.100000 7.318094 +10.700000 4.200000 7.395943 +10.700000 4.300000 7.493792 +10.700000 4.400000 7.611641 +10.700000 4.500000 7.749490 +10.700000 4.600000 7.907339 +10.700000 4.700000 8.085188 +10.700000 4.800000 8.283037 +10.700000 4.900000 8.500885 +10.700000 5.000000 8.738734 +10.700000 5.100000 8.996583 +10.700000 5.200000 9.274432 +10.700000 5.300000 9.572281 +10.700000 5.400000 9.890130 +10.700000 5.500000 10.227979 +10.700000 5.600000 10.585828 +10.700000 5.700000 10.963677 +10.700000 5.800000 11.361525 +10.700000 5.900000 11.779374 +10.700000 6.000000 12.217223 +10.700000 6.100000 12.675072 +10.700000 6.200000 13.152921 +10.700000 6.300000 13.650770 +10.700000 6.400000 14.168619 +10.700000 6.500000 14.706468 +10.700000 6.600000 15.264317 +10.700000 6.700000 15.842165 +10.700000 6.800000 16.440014 +10.700000 6.900000 17.057863 +10.700000 7.000000 17.695712 +10.700000 7.100000 18.353561 +10.700000 7.200000 19.031410 +10.700000 7.300000 19.729259 +10.700000 7.400000 20.447108 +10.700000 7.500000 21.184957 +10.700000 7.600000 21.942806 +10.700000 7.700000 22.720654 +10.700000 7.800000 23.518503 +10.700000 7.900000 24.336352 +10.700000 8.000000 25.174201 +10.700000 8.100000 26.032050 +10.700000 8.200000 26.909899 +10.700000 8.300000 27.807748 +10.700000 8.400000 28.725597 +10.700000 8.500000 29.663446 +10.700000 8.600000 30.621294 +10.700000 8.700000 31.599143 +10.700000 8.800000 32.596992 +10.700000 8.900000 33.614841 +10.700000 9.000000 34.652690 +10.700000 9.100000 35.710539 +10.700000 9.200000 36.788388 +10.700000 9.300000 37.886237 +10.700000 9.400000 39.004086 +10.700000 9.500000 40.141934 +10.700000 9.600000 41.299783 +10.700000 9.700000 42.477632 +10.700000 9.800000 43.675481 +10.700000 9.900000 44.893330 +10.700000 10.000000 46.131179 +10.700000 10.100000 47.389028 +10.700000 10.200000 48.666877 +10.700000 10.300000 49.964726 +10.700000 10.400000 51.282574 +10.700000 10.500000 52.620423 +10.700000 10.600000 53.978272 +10.700000 10.700000 55.356121 +10.700000 10.800000 56.753970 +10.700000 10.900000 58.171819 +10.700000 11.000000 59.609668 +10.700000 11.100000 61.067517 +10.700000 11.200000 62.545366 +10.700000 11.300000 64.043215 +10.700000 11.400000 65.561063 +10.700000 11.500000 67.098912 +10.700000 11.600000 68.656761 +10.700000 11.700000 70.234610 +10.700000 11.800000 71.832459 +10.700000 11.900000 73.450308 +10.700000 12.000000 75.088157 +10.700000 12.100000 76.746006 +10.700000 12.200000 78.423855 +10.700000 12.300000 80.121703 +10.700000 12.400000 81.839552 +10.700000 12.500000 83.577401 +10.700000 12.600000 85.335250 +10.700000 12.700000 87.113099 +10.700000 12.800000 88.910948 +10.700000 12.900000 90.728797 +10.700000 13.000000 92.566646 +10.700000 13.100000 94.424495 +10.700000 13.200000 96.302343 +10.700000 13.300000 98.200192 +10.700000 13.400000 100.118041 +10.700000 13.500000 102.055890 +10.700000 13.600000 104.013739 +10.700000 13.700000 105.991588 +10.700000 13.800000 107.989437 +10.700000 13.900000 110.007286 +10.700000 14.000000 112.045135 +10.700000 14.100000 114.102983 +10.700000 14.200000 116.180832 +10.700000 14.300000 118.278681 +10.700000 14.400000 120.396530 +10.700000 14.500000 122.534379 +10.700000 14.600000 124.692228 +10.700000 14.700000 126.870077 +10.700000 14.800000 129.067926 +10.700000 14.900000 131.285775 +10.700000 15.000000 133.523624 + +10.800000 -5.000000 86.976831 +10.800000 -4.900000 85.210961 +10.800000 -4.800000 83.465092 +10.800000 -4.700000 81.739222 +10.800000 -4.600000 80.033353 +10.800000 -4.500000 78.347483 +10.800000 -4.400000 76.681614 +10.800000 -4.300000 75.035744 +10.800000 -4.200000 73.409875 +10.800000 -4.100000 71.804006 +10.800000 -4.000000 70.218136 +10.800000 -3.900000 68.652267 +10.800000 -3.800000 67.106397 +10.800000 -3.700000 65.580528 +10.800000 -3.600000 64.074658 +10.800000 -3.500000 62.588789 +10.800000 -3.400000 61.122919 +10.800000 -3.300000 59.677050 +10.800000 -3.200000 58.251180 +10.800000 -3.100000 56.845311 +10.800000 -3.000000 55.459442 +10.800000 -2.900000 54.093572 +10.800000 -2.800000 52.747703 +10.800000 -2.700000 51.421833 +10.800000 -2.600000 50.115964 +10.800000 -2.500000 48.830094 +10.800000 -2.400000 47.564225 +10.800000 -2.300000 46.318355 +10.800000 -2.200000 45.092486 +10.800000 -2.100000 43.886616 +10.800000 -2.000000 42.700747 +10.800000 -1.900000 41.534877 +10.800000 -1.800000 40.389008 +10.800000 -1.700000 39.263139 +10.800000 -1.600000 38.157269 +10.800000 -1.500000 37.071400 +10.800000 -1.400000 36.005530 +10.800000 -1.300000 34.959661 +10.800000 -1.200000 33.933791 +10.800000 -1.100000 32.927922 +10.800000 -1.000000 31.942052 +10.800000 -0.900000 30.976183 +10.800000 -0.800000 30.030313 +10.800000 -0.700000 29.104444 +10.800000 -0.600000 28.198575 +10.800000 -0.500000 27.312705 +10.800000 -0.400000 26.446836 +10.800000 -0.300000 25.600966 +10.800000 -0.200000 24.775097 +10.800000 -0.100000 23.969227 +10.800000 -0.000000 23.183358 +10.800000 0.100000 22.417488 +10.800000 0.200000 21.671619 +10.800000 0.300000 20.945749 +10.800000 0.400000 20.239880 +10.800000 0.500000 19.554010 +10.800000 0.600000 18.888141 +10.800000 0.700000 18.242272 +10.800000 0.800000 17.616402 +10.800000 0.900000 17.010533 +10.800000 1.000000 16.424663 +10.800000 1.100000 15.858794 +10.800000 1.200000 15.312924 +10.800000 1.300000 14.787055 +10.800000 1.400000 14.281185 +10.800000 1.500000 13.795316 +10.800000 1.600000 13.329446 +10.800000 1.700000 12.883577 +10.800000 1.800000 12.457708 +10.800000 1.900000 12.051838 +10.800000 2.000000 11.665969 +10.800000 2.100000 11.300099 +10.800000 2.200000 10.954230 +10.800000 2.300000 10.628360 +10.800000 2.400000 10.322491 +10.800000 2.500000 10.036621 +10.800000 2.600000 9.770752 +10.800000 2.700000 9.524882 +10.800000 2.800000 9.299013 +10.800000 2.900000 9.093143 +10.800000 3.000000 8.907274 +10.800000 3.100000 8.741405 +10.800000 3.200000 8.595535 +10.800000 3.300000 8.469666 +10.800000 3.400000 8.363796 +10.800000 3.500000 8.277927 +10.800000 3.600000 8.212057 +10.800000 3.700000 8.166188 +10.800000 3.800000 8.140318 +10.800000 3.900000 8.134449 +10.800000 4.000000 8.148579 +10.800000 4.100000 8.182710 +10.800000 4.200000 8.236841 +10.800000 4.300000 8.310971 +10.800000 4.400000 8.405102 +10.800000 4.500000 8.519232 +10.800000 4.600000 8.653363 +10.800000 4.700000 8.807493 +10.800000 4.800000 8.981624 +10.800000 4.900000 9.175754 +10.800000 5.000000 9.389885 +10.800000 5.100000 9.624015 +10.800000 5.200000 9.878146 +10.800000 5.300000 10.152276 +10.800000 5.400000 10.446407 +10.800000 5.500000 10.760538 +10.800000 5.600000 11.094668 +10.800000 5.700000 11.448799 +10.800000 5.800000 11.822929 +10.800000 5.900000 12.217060 +10.800000 6.000000 12.631190 +10.800000 6.100000 13.065321 +10.800000 6.200000 13.519451 +10.800000 6.300000 13.993582 +10.800000 6.400000 14.487712 +10.800000 6.500000 15.001843 +10.800000 6.600000 15.535974 +10.800000 6.700000 16.090104 +10.800000 6.800000 16.664235 +10.800000 6.900000 17.258365 +10.800000 7.000000 17.872496 +10.800000 7.100000 18.506626 +10.800000 7.200000 19.160757 +10.800000 7.300000 19.834887 +10.800000 7.400000 20.529018 +10.800000 7.500000 21.243148 +10.800000 7.600000 21.977279 +10.800000 7.700000 22.731409 +10.800000 7.800000 23.505540 +10.800000 7.900000 24.299671 +10.800000 8.000000 25.113801 +10.800000 8.100000 25.947932 +10.800000 8.200000 26.802062 +10.800000 8.300000 27.676193 +10.800000 8.400000 28.570323 +10.800000 8.500000 29.484454 +10.800000 8.600000 30.418584 +10.800000 8.700000 31.372715 +10.800000 8.800000 32.346845 +10.800000 8.900000 33.340976 +10.800000 9.000000 34.355106 +10.800000 9.100000 35.389237 +10.800000 9.200000 36.443368 +10.800000 9.300000 37.517498 +10.800000 9.400000 38.611629 +10.800000 9.500000 39.725759 +10.800000 9.600000 40.859890 +10.800000 9.700000 42.014020 +10.800000 9.800000 43.188151 +10.800000 9.900000 44.382281 +10.800000 10.000000 45.596412 +10.800000 10.100000 46.830542 +10.800000 10.200000 48.084673 +10.800000 10.300000 49.358804 +10.800000 10.400000 50.652934 +10.800000 10.500000 51.967065 +10.800000 10.600000 53.301195 +10.800000 10.700000 54.655326 +10.800000 10.800000 56.029456 +10.800000 10.900000 57.423587 +10.800000 11.000000 58.837717 +10.800000 11.100000 60.271848 +10.800000 11.200000 61.725978 +10.800000 11.300000 63.200109 +10.800000 11.400000 64.694239 +10.800000 11.500000 66.208370 +10.800000 11.600000 67.742501 +10.800000 11.700000 69.296631 +10.800000 11.800000 70.870762 +10.800000 11.900000 72.464892 +10.800000 12.000000 74.079023 +10.800000 12.100000 75.713153 +10.800000 12.200000 77.367284 +10.800000 12.300000 79.041414 +10.800000 12.400000 80.735545 +10.800000 12.500000 82.449675 +10.800000 12.600000 84.183806 +10.800000 12.700000 85.937937 +10.800000 12.800000 87.712067 +10.800000 12.900000 89.506198 +10.800000 13.000000 91.320328 +10.800000 13.100000 93.154459 +10.800000 13.200000 95.008589 +10.800000 13.300000 96.882720 +10.800000 13.400000 98.776850 +10.800000 13.500000 100.690981 +10.800000 13.600000 102.625111 +10.800000 13.700000 104.579242 +10.800000 13.800000 106.553372 +10.800000 13.900000 108.547503 +10.800000 14.000000 110.561634 +10.800000 14.100000 112.595764 +10.800000 14.200000 114.649895 +10.800000 14.300000 116.724025 +10.800000 14.400000 118.818156 +10.800000 14.500000 120.932286 +10.800000 14.600000 123.066417 +10.800000 14.700000 125.220547 +10.800000 14.800000 127.394678 +10.800000 14.900000 129.588808 +10.800000 15.000000 131.802939 + +10.900000 -5.000000 90.093091 +10.900000 -4.900000 88.302986 +10.900000 -4.800000 86.532882 +10.900000 -4.700000 84.782777 +10.900000 -4.600000 83.052673 +10.900000 -4.500000 81.342568 +10.900000 -4.400000 79.652464 +10.900000 -4.300000 77.982359 +10.900000 -4.200000 76.332255 +10.900000 -4.100000 74.702150 +10.900000 -4.000000 73.092045 +10.900000 -3.900000 71.501941 +10.900000 -3.800000 69.931836 +10.900000 -3.700000 68.381732 +10.900000 -3.600000 66.851627 +10.900000 -3.500000 65.341523 +10.900000 -3.400000 63.851418 +10.900000 -3.300000 62.381314 +10.900000 -3.200000 60.931209 +10.900000 -3.100000 59.501105 +10.900000 -3.000000 58.091000 +10.900000 -2.900000 56.700895 +10.900000 -2.800000 55.330791 +10.900000 -2.700000 53.980686 +10.900000 -2.600000 52.650582 +10.900000 -2.500000 51.340477 +10.900000 -2.400000 50.050373 +10.900000 -2.300000 48.780268 +10.900000 -2.200000 47.530164 +10.900000 -2.100000 46.300059 +10.900000 -2.000000 45.089955 +10.900000 -1.900000 43.899850 +10.900000 -1.800000 42.729745 +10.900000 -1.700000 41.579641 +10.900000 -1.600000 40.449536 +10.900000 -1.500000 39.339432 +10.900000 -1.400000 38.249327 +10.900000 -1.300000 37.179223 +10.900000 -1.200000 36.129118 +10.900000 -1.100000 35.099014 +10.900000 -1.000000 34.088909 +10.900000 -0.900000 33.098804 +10.900000 -0.800000 32.128700 +10.900000 -0.700000 31.178595 +10.900000 -0.600000 30.248491 +10.900000 -0.500000 29.338386 +10.900000 -0.400000 28.448282 +10.900000 -0.300000 27.578177 +10.900000 -0.200000 26.728073 +10.900000 -0.100000 25.897968 +10.900000 -0.000000 25.087864 +10.900000 0.100000 24.297759 +10.900000 0.200000 23.527654 +10.900000 0.300000 22.777550 +10.900000 0.400000 22.047445 +10.900000 0.500000 21.337341 +10.900000 0.600000 20.647236 +10.900000 0.700000 19.977132 +10.900000 0.800000 19.327027 +10.900000 0.900000 18.696923 +10.900000 1.000000 18.086818 +10.900000 1.100000 17.496714 +10.900000 1.200000 16.926609 +10.900000 1.300000 16.376504 +10.900000 1.400000 15.846400 +10.900000 1.500000 15.336295 +10.900000 1.600000 14.846191 +10.900000 1.700000 14.376086 +10.900000 1.800000 13.925982 +10.900000 1.900000 13.495877 +10.900000 2.000000 13.085773 +10.900000 2.100000 12.695668 +10.900000 2.200000 12.325564 +10.900000 2.300000 11.975459 +10.900000 2.400000 11.645354 +10.900000 2.500000 11.335250 +10.900000 2.600000 11.045145 +10.900000 2.700000 10.775041 +10.900000 2.800000 10.524936 +10.900000 2.900000 10.294832 +10.900000 3.000000 10.084727 +10.900000 3.100000 9.894623 +10.900000 3.200000 9.724518 +10.900000 3.300000 9.574414 +10.900000 3.400000 9.444309 +10.900000 3.500000 9.334204 +10.900000 3.600000 9.244100 +10.900000 3.700000 9.173995 +10.900000 3.800000 9.123891 +10.900000 3.900000 9.093786 +10.900000 4.000000 9.083682 +10.900000 4.100000 9.093577 +10.900000 4.200000 9.123473 +10.900000 4.300000 9.173368 +10.900000 4.400000 9.243264 +10.900000 4.500000 9.333159 +10.900000 4.600000 9.443054 +10.900000 4.700000 9.572950 +10.900000 4.800000 9.722845 +10.900000 4.900000 9.892741 +10.900000 5.000000 10.082636 +10.900000 5.100000 10.292532 +10.900000 5.200000 10.522427 +10.900000 5.300000 10.772323 +10.900000 5.400000 11.042218 +10.900000 5.500000 11.332113 +10.900000 5.600000 11.642009 +10.900000 5.700000 11.971904 +10.900000 5.800000 12.321800 +10.900000 5.900000 12.691695 +10.900000 6.000000 13.081591 +10.900000 6.100000 13.491486 +10.900000 6.200000 13.921382 +10.900000 6.300000 14.371277 +10.900000 6.400000 14.841173 +10.900000 6.500000 15.331068 +10.900000 6.600000 15.840963 +10.900000 6.700000 16.370859 +10.900000 6.800000 16.920754 +10.900000 6.900000 17.490650 +10.900000 7.000000 18.080545 +10.900000 7.100000 18.690441 +10.900000 7.200000 19.320336 +10.900000 7.300000 19.970232 +10.900000 7.400000 20.640127 +10.900000 7.500000 21.330023 +10.900000 7.600000 22.039918 +10.900000 7.700000 22.769813 +10.900000 7.800000 23.519709 +10.900000 7.900000 24.289604 +10.900000 8.000000 25.079500 +10.900000 8.100000 25.889395 +10.900000 8.200000 26.719291 +10.900000 8.300000 27.569186 +10.900000 8.400000 28.439082 +10.900000 8.500000 29.328977 +10.900000 8.600000 30.238873 +10.900000 8.700000 31.168768 +10.900000 8.800000 32.118663 +10.900000 8.900000 33.088559 +10.900000 9.000000 34.078454 +10.900000 9.100000 35.088350 +10.900000 9.200000 36.118245 +10.900000 9.300000 37.168141 +10.900000 9.400000 38.238036 +10.900000 9.500000 39.327932 +10.900000 9.600000 40.437827 +10.900000 9.700000 41.567723 +10.900000 9.800000 42.717618 +10.900000 9.900000 43.887513 +10.900000 10.000000 45.077409 +10.900000 10.100000 46.287304 +10.900000 10.200000 47.517200 +10.900000 10.300000 48.767095 +10.900000 10.400000 50.036991 +10.900000 10.500000 51.326886 +10.900000 10.600000 52.636782 +10.900000 10.700000 53.966677 +10.900000 10.800000 55.316573 +10.900000 10.900000 56.686468 +10.900000 11.000000 58.076363 +10.900000 11.100000 59.486259 +10.900000 11.200000 60.916154 +10.900000 11.300000 62.366050 +10.900000 11.400000 63.835945 +10.900000 11.500000 65.325841 +10.900000 11.600000 66.835736 +10.900000 11.700000 68.365632 +10.900000 11.800000 69.915527 +10.900000 11.900000 71.485422 +10.900000 12.000000 73.075318 +10.900000 12.100000 74.685213 +10.900000 12.200000 76.315109 +10.900000 12.300000 77.965004 +10.900000 12.400000 79.634900 +10.900000 12.500000 81.324795 +10.900000 12.600000 83.034691 +10.900000 12.700000 84.764586 +10.900000 12.800000 86.514482 +10.900000 12.900000 88.284377 +10.900000 13.000000 90.074272 +10.900000 13.100000 91.884168 +10.900000 13.200000 93.714063 +10.900000 13.300000 95.563959 +10.900000 13.400000 97.433854 +10.900000 13.500000 99.323750 +10.900000 13.600000 101.233645 +10.900000 13.700000 103.163541 +10.900000 13.800000 105.113436 +10.900000 13.900000 107.083332 +10.900000 14.000000 109.073227 +10.900000 14.100000 111.083122 +10.900000 14.200000 113.113018 +10.900000 14.300000 115.162913 +10.900000 14.400000 117.232809 +10.900000 14.500000 119.322704 +10.900000 14.600000 121.432600 +10.900000 14.700000 123.562495 +10.900000 14.800000 125.712391 +10.900000 14.900000 127.882286 +10.900000 15.000000 130.072182 + +11.000000 -5.000000 93.295016 +11.000000 -4.900000 91.480159 +11.000000 -4.800000 89.685303 +11.000000 -4.700000 87.910447 +11.000000 -4.600000 86.155590 +11.000000 -4.500000 84.420734 +11.000000 -4.400000 82.705877 +11.000000 -4.300000 81.011021 +11.000000 -4.200000 79.336165 +11.000000 -4.100000 77.681308 +11.000000 -4.000000 76.046452 +11.000000 -3.900000 74.431596 +11.000000 -3.800000 72.836739 +11.000000 -3.700000 71.261883 +11.000000 -3.600000 69.707026 +11.000000 -3.500000 68.172170 +11.000000 -3.400000 66.657314 +11.000000 -3.300000 65.162457 +11.000000 -3.200000 63.687601 +11.000000 -3.100000 62.232745 +11.000000 -3.000000 60.797888 +11.000000 -2.900000 59.383032 +11.000000 -2.800000 57.988175 +11.000000 -2.700000 56.613319 +11.000000 -2.600000 55.258463 +11.000000 -2.500000 53.923606 +11.000000 -2.400000 52.608750 +11.000000 -2.300000 51.313894 +11.000000 -2.200000 50.039037 +11.000000 -2.100000 48.784181 +11.000000 -2.000000 47.549324 +11.000000 -1.900000 46.334468 +11.000000 -1.800000 45.139612 +11.000000 -1.700000 43.964755 +11.000000 -1.600000 42.809899 +11.000000 -1.500000 41.675043 +11.000000 -1.400000 40.560186 +11.000000 -1.300000 39.465330 +11.000000 -1.200000 38.390473 +11.000000 -1.100000 37.335617 +11.000000 -1.000000 36.300761 +11.000000 -0.900000 35.285904 +11.000000 -0.800000 34.291048 +11.000000 -0.700000 33.316192 +11.000000 -0.600000 32.361335 +11.000000 -0.500000 31.426479 +11.000000 -0.400000 30.511622 +11.000000 -0.300000 29.616766 +11.000000 -0.200000 28.741910 +11.000000 -0.100000 27.887053 +11.000000 -0.000000 27.052197 +11.000000 0.100000 26.237341 +11.000000 0.200000 25.442484 +11.000000 0.300000 24.667628 +11.000000 0.400000 23.912771 +11.000000 0.500000 23.177915 +11.000000 0.600000 22.463059 +11.000000 0.700000 21.768202 +11.000000 0.800000 21.093346 +11.000000 0.900000 20.438490 +11.000000 1.000000 19.803633 +11.000000 1.100000 19.188777 +11.000000 1.200000 18.593920 +11.000000 1.300000 18.019064 +11.000000 1.400000 17.464208 +11.000000 1.500000 16.929351 +11.000000 1.600000 16.414495 +11.000000 1.700000 15.919639 +11.000000 1.800000 15.444782 +11.000000 1.900000 14.989926 +11.000000 2.000000 14.555069 +11.000000 2.100000 14.140213 +11.000000 2.200000 13.745357 +11.000000 2.300000 13.370500 +11.000000 2.400000 13.015644 +11.000000 2.500000 12.680788 +11.000000 2.600000 12.365931 +11.000000 2.700000 12.071075 +11.000000 2.800000 11.796219 +11.000000 2.900000 11.541362 +11.000000 3.000000 11.306506 +11.000000 3.100000 11.091649 +11.000000 3.200000 10.896793 +11.000000 3.300000 10.721937 +11.000000 3.400000 10.567080 +11.000000 3.500000 10.432224 +11.000000 3.600000 10.317368 +11.000000 3.700000 10.222511 +11.000000 3.800000 10.147655 +11.000000 3.900000 10.092798 +11.000000 4.000000 10.057942 +11.000000 4.100000 10.043086 +11.000000 4.200000 10.048229 +11.000000 4.300000 10.073373 +11.000000 4.400000 10.118517 +11.000000 4.500000 10.183660 +11.000000 4.600000 10.268804 +11.000000 4.700000 10.373947 +11.000000 4.800000 10.499091 +11.000000 4.900000 10.644235 +11.000000 5.000000 10.809378 +11.000000 5.100000 10.994522 +11.000000 5.200000 11.199666 +11.000000 5.300000 11.424809 +11.000000 5.400000 11.669953 +11.000000 5.500000 11.935096 +11.000000 5.600000 12.220240 +11.000000 5.700000 12.525384 +11.000000 5.800000 12.850527 +11.000000 5.900000 13.195671 +11.000000 6.000000 13.560815 +11.000000 6.100000 13.945958 +11.000000 6.200000 14.351102 +11.000000 6.300000 14.776245 +11.000000 6.400000 15.221389 +11.000000 6.500000 15.686533 +11.000000 6.600000 16.171676 +11.000000 6.700000 16.676820 +11.000000 6.800000 17.201964 +11.000000 6.900000 17.747107 +11.000000 7.000000 18.312251 +11.000000 7.100000 18.897394 +11.000000 7.200000 19.502538 +11.000000 7.300000 20.127682 +11.000000 7.400000 20.772825 +11.000000 7.500000 21.437969 +11.000000 7.600000 22.123113 +11.000000 7.700000 22.828256 +11.000000 7.800000 23.553400 +11.000000 7.900000 24.298543 +11.000000 8.000000 25.063687 +11.000000 8.100000 25.848831 +11.000000 8.200000 26.653974 +11.000000 8.300000 27.479118 +11.000000 8.400000 28.324262 +11.000000 8.500000 29.189405 +11.000000 8.600000 30.074549 +11.000000 8.700000 30.979692 +11.000000 8.800000 31.904836 +11.000000 8.900000 32.849980 +11.000000 9.000000 33.815123 +11.000000 9.100000 34.800267 +11.000000 9.200000 35.805411 +11.000000 9.300000 36.830554 +11.000000 9.400000 37.875698 +11.000000 9.500000 38.940842 +11.000000 9.600000 40.025985 +11.000000 9.700000 41.131129 +11.000000 9.800000 42.256272 +11.000000 9.900000 43.401416 +11.000000 10.000000 44.566560 +11.000000 10.100000 45.751703 +11.000000 10.200000 46.956847 +11.000000 10.300000 48.181991 +11.000000 10.400000 49.427134 +11.000000 10.500000 50.692278 +11.000000 10.600000 51.977421 +11.000000 10.700000 53.282565 +11.000000 10.800000 54.607709 +11.000000 10.900000 55.952852 +11.000000 11.000000 57.317996 +11.000000 11.100000 58.703140 +11.000000 11.200000 60.108283 +11.000000 11.300000 61.533427 +11.000000 11.400000 62.978570 +11.000000 11.500000 64.443714 +11.000000 11.600000 65.928858 +11.000000 11.700000 67.434001 +11.000000 11.800000 68.959145 +11.000000 11.900000 70.504289 +11.000000 12.000000 72.069432 +11.000000 12.100000 73.654576 +11.000000 12.200000 75.259719 +11.000000 12.300000 76.884863 +11.000000 12.400000 78.530007 +11.000000 12.500000 80.195150 +11.000000 12.600000 81.880294 +11.000000 12.700000 83.585438 +11.000000 12.800000 85.310581 +11.000000 12.900000 87.055725 +11.000000 13.000000 88.820868 +11.000000 13.100000 90.606012 +11.000000 13.200000 92.411156 +11.000000 13.300000 94.236299 +11.000000 13.400000 96.081443 +11.000000 13.500000 97.946587 +11.000000 13.600000 99.831730 +11.000000 13.700000 101.736874 +11.000000 13.800000 103.662017 +11.000000 13.900000 105.607161 +11.000000 14.000000 107.572305 +11.000000 14.100000 109.557448 +11.000000 14.200000 111.562592 +11.000000 14.300000 113.587736 +11.000000 14.400000 115.632879 +11.000000 14.500000 117.698023 +11.000000 14.600000 119.783166 +11.000000 14.700000 121.888310 +11.000000 14.800000 124.013454 +11.000000 14.900000 126.158597 +11.000000 15.000000 128.323741 + +11.100000 -5.000000 96.574943 +11.100000 -4.900000 94.734818 +11.100000 -4.800000 92.914693 +11.100000 -4.700000 91.114568 +11.100000 -4.600000 89.334443 +11.100000 -4.500000 87.574319 +11.100000 -4.400000 85.834194 +11.100000 -4.300000 84.114069 +11.100000 -4.200000 82.413944 +11.100000 -4.100000 80.733819 +11.100000 -4.000000 79.073694 +11.100000 -3.900000 77.433569 +11.100000 -3.800000 75.813444 +11.100000 -3.700000 74.213319 +11.100000 -3.600000 72.633194 +11.100000 -3.500000 71.073069 +11.100000 -3.400000 69.532944 +11.100000 -3.300000 68.012819 +11.100000 -3.200000 66.512694 +11.100000 -3.100000 65.032569 +11.100000 -3.000000 63.572444 +11.100000 -2.900000 62.132320 +11.100000 -2.800000 60.712195 +11.100000 -2.700000 59.312070 +11.100000 -2.600000 57.931945 +11.100000 -2.500000 56.571820 +11.100000 -2.400000 55.231695 +11.100000 -2.300000 53.911570 +11.100000 -2.200000 52.611445 +11.100000 -2.100000 51.331320 +11.100000 -2.000000 50.071195 +11.100000 -1.900000 48.831070 +11.100000 -1.800000 47.610945 +11.100000 -1.700000 46.410820 +11.100000 -1.600000 45.230695 +11.100000 -1.500000 44.070570 +11.100000 -1.400000 42.930445 +11.100000 -1.300000 41.810321 +11.100000 -1.200000 40.710196 +11.100000 -1.100000 39.630071 +11.100000 -1.000000 38.569946 +11.100000 -0.900000 37.529821 +11.100000 -0.800000 36.509696 +11.100000 -0.700000 35.509571 +11.100000 -0.600000 34.529446 +11.100000 -0.500000 33.569321 +11.100000 -0.400000 32.629196 +11.100000 -0.300000 31.709071 +11.100000 -0.200000 30.808946 +11.100000 -0.100000 29.928821 +11.100000 -0.000000 29.068696 +11.100000 0.100000 28.228571 +11.100000 0.200000 27.408446 +11.100000 0.300000 26.608322 +11.100000 0.400000 25.828197 +11.100000 0.500000 25.068072 +11.100000 0.600000 24.327947 +11.100000 0.700000 23.607822 +11.100000 0.800000 22.907697 +11.100000 0.900000 22.227572 +11.100000 1.000000 21.567447 +11.100000 1.100000 20.927322 +11.100000 1.200000 20.307197 +11.100000 1.300000 19.707072 +11.100000 1.400000 19.126947 +11.100000 1.500000 18.566822 +11.100000 1.600000 18.026697 +11.100000 1.700000 17.506572 +11.100000 1.800000 17.006447 +11.100000 1.900000 16.526322 +11.100000 2.000000 16.066198 +11.100000 2.100000 15.626073 +11.100000 2.200000 15.205948 +11.100000 2.300000 14.805823 +11.100000 2.400000 14.425698 +11.100000 2.500000 14.065573 +11.100000 2.600000 13.725448 +11.100000 2.700000 13.405323 +11.100000 2.800000 13.105198 +11.100000 2.900000 12.825073 +11.100000 3.000000 12.564948 +11.100000 3.100000 12.324823 +11.100000 3.200000 12.104698 +11.100000 3.300000 11.904573 +11.100000 3.400000 11.724448 +11.100000 3.500000 11.564323 +11.100000 3.600000 11.424199 +11.100000 3.700000 11.304074 +11.100000 3.800000 11.203949 +11.100000 3.900000 11.123824 +11.100000 4.000000 11.063699 +11.100000 4.100000 11.023574 +11.100000 4.200000 11.003449 +11.100000 4.300000 11.003324 +11.100000 4.400000 11.023199 +11.100000 4.500000 11.063074 +11.100000 4.600000 11.122949 +11.100000 4.700000 11.202824 +11.100000 4.800000 11.302699 +11.100000 4.900000 11.422574 +11.100000 5.000000 11.562449 +11.100000 5.100000 11.722324 +11.100000 5.200000 11.902200 +11.100000 5.300000 12.102075 +11.100000 5.400000 12.321950 +11.100000 5.500000 12.561825 +11.100000 5.600000 12.821700 +11.100000 5.700000 13.101575 +11.100000 5.800000 13.401450 +11.100000 5.900000 13.721325 +11.100000 6.000000 14.061200 +11.100000 6.100000 14.421075 +11.100000 6.200000 14.800950 +11.100000 6.300000 15.200825 +11.100000 6.400000 15.620700 +11.100000 6.500000 16.060575 +11.100000 6.600000 16.520450 +11.100000 6.700000 17.000325 +11.100000 6.800000 17.500201 +11.100000 6.900000 18.020076 +11.100000 7.000000 18.559951 +11.100000 7.100000 19.119826 +11.100000 7.200000 19.699701 +11.100000 7.300000 20.299576 +11.100000 7.400000 20.919451 +11.100000 7.500000 21.559326 +11.100000 7.600000 22.219201 +11.100000 7.700000 22.899076 +11.100000 7.800000 23.598951 +11.100000 7.900000 24.318826 +11.100000 8.000000 25.058701 +11.100000 8.100000 25.818576 +11.100000 8.200000 26.598451 +11.100000 8.300000 27.398326 +11.100000 8.400000 28.218202 +11.100000 8.500000 29.058077 +11.100000 8.600000 29.917952 +11.100000 8.700000 30.797827 +11.100000 8.800000 31.697702 +11.100000 8.900000 32.617577 +11.100000 9.000000 33.557452 +11.100000 9.100000 34.517327 +11.100000 9.200000 35.497202 +11.100000 9.300000 36.497077 +11.100000 9.400000 37.516952 +11.100000 9.500000 38.556827 +11.100000 9.600000 39.616702 +11.100000 9.700000 40.696577 +11.100000 9.800000 41.796452 +11.100000 9.900000 42.916327 +11.100000 10.000000 44.056203 +11.100000 10.100000 45.216078 +11.100000 10.200000 46.395953 +11.100000 10.300000 47.595828 +11.100000 10.400000 48.815703 +11.100000 10.500000 50.055578 +11.100000 10.600000 51.315453 +11.100000 10.700000 52.595328 +11.100000 10.800000 53.895203 +11.100000 10.900000 55.215078 +11.100000 11.000000 56.554953 +11.100000 11.100000 57.914828 +11.100000 11.200000 59.294703 +11.100000 11.300000 60.694578 +11.100000 11.400000 62.114453 +11.100000 11.500000 63.554328 +11.100000 11.600000 65.014204 +11.100000 11.700000 66.494079 +11.100000 11.800000 67.993954 +11.100000 11.900000 69.513829 +11.100000 12.000000 71.053704 +11.100000 12.100000 72.613579 +11.100000 12.200000 74.193454 +11.100000 12.300000 75.793329 +11.100000 12.400000 77.413204 +11.100000 12.500000 79.053079 +11.100000 12.600000 80.712954 +11.100000 12.700000 82.392829 +11.100000 12.800000 84.092704 +11.100000 12.900000 85.812579 +11.100000 13.000000 87.552454 +11.100000 13.100000 89.312329 +11.100000 13.200000 91.092205 +11.100000 13.300000 92.892080 +11.100000 13.400000 94.711955 +11.100000 13.500000 96.551830 +11.100000 13.600000 98.411705 +11.100000 13.700000 100.291580 +11.100000 13.800000 102.191455 +11.100000 13.900000 104.111330 +11.100000 14.000000 106.051205 +11.100000 14.100000 108.011080 +11.100000 14.200000 109.990955 +11.100000 14.300000 111.990830 +11.100000 14.400000 114.010705 +11.100000 14.500000 116.050580 +11.100000 14.600000 118.110455 +11.100000 14.700000 120.190330 +11.100000 14.800000 122.290206 +11.100000 14.900000 124.410081 +11.100000 15.000000 126.549956 + +11.200000 -5.000000 99.925256 +11.200000 -4.900000 98.059346 +11.200000 -4.800000 96.213436 +11.200000 -4.700000 94.387526 +11.200000 -4.600000 92.581615 +11.200000 -4.500000 90.795705 +11.200000 -4.400000 89.029795 +11.200000 -4.300000 87.283885 +11.200000 -4.200000 85.557974 +11.200000 -4.100000 83.852064 +11.200000 -4.000000 82.166154 +11.200000 -3.900000 80.500244 +11.200000 -3.800000 78.854333 +11.200000 -3.700000 77.228423 +11.200000 -3.600000 75.622513 +11.200000 -3.500000 74.036603 +11.200000 -3.400000 72.470692 +11.200000 -3.300000 70.924782 +11.200000 -3.200000 69.398872 +11.200000 -3.100000 67.892962 +11.200000 -3.000000 66.407051 +11.200000 -2.900000 64.941141 +11.200000 -2.800000 63.495231 +11.200000 -2.700000 62.069321 +11.200000 -2.600000 60.663411 +11.200000 -2.500000 59.277500 +11.200000 -2.400000 57.911590 +11.200000 -2.300000 56.565680 +11.200000 -2.200000 55.239770 +11.200000 -2.100000 53.933859 +11.200000 -2.000000 52.647949 +11.200000 -1.900000 51.382039 +11.200000 -1.800000 50.136129 +11.200000 -1.700000 48.910218 +11.200000 -1.600000 47.704308 +11.200000 -1.500000 46.518398 +11.200000 -1.400000 45.352488 +11.200000 -1.300000 44.206577 +11.200000 -1.200000 43.080667 +11.200000 -1.100000 41.974757 +11.200000 -1.000000 40.888847 +11.200000 -0.900000 39.822936 +11.200000 -0.800000 38.777026 +11.200000 -0.700000 37.751116 +11.200000 -0.600000 36.745206 +11.200000 -0.500000 35.759295 +11.200000 -0.400000 34.793385 +11.200000 -0.300000 33.847475 +11.200000 -0.200000 32.921565 +11.200000 -0.100000 32.015655 +11.200000 -0.000000 31.129744 +11.200000 0.100000 30.263834 +11.200000 0.200000 29.417924 +11.200000 0.300000 28.592014 +11.200000 0.400000 27.786103 +11.200000 0.500000 27.000193 +11.200000 0.600000 26.234283 +11.200000 0.700000 25.488373 +11.200000 0.800000 24.762462 +11.200000 0.900000 24.056552 +11.200000 1.000000 23.370642 +11.200000 1.100000 22.704732 +11.200000 1.200000 22.058821 +11.200000 1.300000 21.432911 +11.200000 1.400000 20.827001 +11.200000 1.500000 20.241091 +11.200000 1.600000 19.675180 +11.200000 1.700000 19.129270 +11.200000 1.800000 18.603360 +11.200000 1.900000 18.097450 +11.200000 2.000000 17.611539 +11.200000 2.100000 17.145629 +11.200000 2.200000 16.699719 +11.200000 2.300000 16.273809 +11.200000 2.400000 15.867899 +11.200000 2.500000 15.481988 +11.200000 2.600000 15.116078 +11.200000 2.700000 14.770168 +11.200000 2.800000 14.444258 +11.200000 2.900000 14.138347 +11.200000 3.000000 13.852437 +11.200000 3.100000 13.586527 +11.200000 3.200000 13.340617 +11.200000 3.300000 13.114706 +11.200000 3.400000 12.908796 +11.200000 3.500000 12.722886 +11.200000 3.600000 12.556976 +11.200000 3.700000 12.411065 +11.200000 3.800000 12.285155 +11.200000 3.900000 12.179245 +11.200000 4.000000 12.093335 +11.200000 4.100000 12.027424 +11.200000 4.200000 11.981514 +11.200000 4.300000 11.955604 +11.200000 4.400000 11.949694 +11.200000 4.500000 11.963783 +11.200000 4.600000 11.997873 +11.200000 4.700000 12.051963 +11.200000 4.800000 12.126053 +11.200000 4.900000 12.220143 +11.200000 5.000000 12.334232 +11.200000 5.100000 12.468322 +11.200000 5.200000 12.622412 +11.200000 5.300000 12.796502 +11.200000 5.400000 12.990591 +11.200000 5.500000 13.204681 +11.200000 5.600000 13.438771 +11.200000 5.700000 13.692861 +11.200000 5.800000 13.966950 +11.200000 5.900000 14.261040 +11.200000 6.000000 14.575130 +11.200000 6.100000 14.909220 +11.200000 6.200000 15.263309 +11.200000 6.300000 15.637399 +11.200000 6.400000 16.031489 +11.200000 6.500000 16.445579 +11.200000 6.600000 16.879668 +11.200000 6.700000 17.333758 +11.200000 6.800000 17.807848 +11.200000 6.900000 18.301938 +11.200000 7.000000 18.816027 +11.200000 7.100000 19.350117 +11.200000 7.200000 19.904207 +11.200000 7.300000 20.478297 +11.200000 7.400000 21.072387 +11.200000 7.500000 21.686476 +11.200000 7.600000 22.320566 +11.200000 7.700000 22.974656 +11.200000 7.800000 23.648746 +11.200000 7.900000 24.342835 +11.200000 8.000000 25.056925 +11.200000 8.100000 25.791015 +11.200000 8.200000 26.545105 +11.200000 8.300000 27.319194 +11.200000 8.400000 28.113284 +11.200000 8.500000 28.927374 +11.200000 8.600000 29.761464 +11.200000 8.700000 30.615553 +11.200000 8.800000 31.489643 +11.200000 8.900000 32.383733 +11.200000 9.000000 33.297823 +11.200000 9.100000 34.231912 +11.200000 9.200000 35.186002 +11.200000 9.300000 36.160092 +11.200000 9.400000 37.154182 +11.200000 9.500000 38.168271 +11.200000 9.600000 39.202361 +11.200000 9.700000 40.256451 +11.200000 9.800000 41.330541 +11.200000 9.900000 42.424631 +11.200000 10.000000 43.538720 +11.200000 10.100000 44.672810 +11.200000 10.200000 45.826900 +11.200000 10.300000 47.000990 +11.200000 10.400000 48.195079 +11.200000 10.500000 49.409169 +11.200000 10.600000 50.643259 +11.200000 10.700000 51.897349 +11.200000 10.800000 53.171438 +11.200000 10.900000 54.465528 +11.200000 11.000000 55.779618 +11.200000 11.100000 57.113708 +11.200000 11.200000 58.467797 +11.200000 11.300000 59.841887 +11.200000 11.400000 61.235977 +11.200000 11.500000 62.650067 +11.200000 11.600000 64.084156 +11.200000 11.700000 65.538246 +11.200000 11.800000 67.012336 +11.200000 11.900000 68.506426 +11.200000 12.000000 70.020515 +11.200000 12.100000 71.554605 +11.200000 12.200000 73.108695 +11.200000 12.300000 74.682785 +11.200000 12.400000 76.276875 +11.200000 12.500000 77.890964 +11.200000 12.600000 79.525054 +11.200000 12.700000 81.179144 +11.200000 12.800000 82.853234 +11.200000 12.900000 84.547323 +11.200000 13.000000 86.261413 +11.200000 13.100000 87.995503 +11.200000 13.200000 89.749593 +11.200000 13.300000 91.523682 +11.200000 13.400000 93.317772 +11.200000 13.500000 95.131862 +11.200000 13.600000 96.965952 +11.200000 13.700000 98.820041 +11.200000 13.800000 100.694131 +11.200000 13.900000 102.588221 +11.200000 14.000000 104.502311 +11.200000 14.100000 106.436400 +11.200000 14.200000 108.390490 +11.200000 14.300000 110.364580 +11.200000 14.400000 112.358670 +11.200000 14.500000 114.372759 +11.200000 14.600000 116.406849 +11.200000 14.700000 118.460939 +11.200000 14.800000 120.535029 +11.200000 14.900000 122.629119 +11.200000 15.000000 124.743208 + +11.300000 -5.000000 103.338478 +11.300000 -4.900000 101.446265 +11.300000 -4.800000 99.574053 +11.300000 -4.700000 97.721841 +11.300000 -4.600000 95.889628 +11.300000 -4.500000 94.077416 +11.300000 -4.400000 92.285204 +11.300000 -4.300000 90.512992 +11.300000 -4.200000 88.760779 +11.300000 -4.100000 87.028567 +11.300000 -4.000000 85.316355 +11.300000 -3.900000 83.624142 +11.300000 -3.800000 81.951930 +11.300000 -3.700000 80.299718 +11.300000 -3.600000 78.667506 +11.300000 -3.500000 77.055293 +11.300000 -3.400000 75.463081 +11.300000 -3.300000 73.890869 +11.300000 -3.200000 72.338657 +11.300000 -3.100000 70.806444 +11.300000 -3.000000 69.294232 +11.300000 -2.900000 67.802020 +11.300000 -2.800000 66.329807 +11.300000 -2.700000 64.877595 +11.300000 -2.600000 63.445383 +11.300000 -2.500000 62.033171 +11.300000 -2.400000 60.640958 +11.300000 -2.300000 59.268746 +11.300000 -2.200000 57.916534 +11.300000 -2.100000 56.584321 +11.300000 -2.000000 55.272109 +11.300000 -1.900000 53.979897 +11.300000 -1.800000 52.707685 +11.300000 -1.700000 51.455472 +11.300000 -1.600000 50.223260 +11.300000 -1.500000 49.011048 +11.300000 -1.400000 47.818835 +11.300000 -1.300000 46.646623 +11.300000 -1.200000 45.494411 +11.300000 -1.100000 44.362199 +11.300000 -1.000000 43.249986 +11.300000 -0.900000 42.157774 +11.300000 -0.800000 41.085562 +11.300000 -0.700000 40.033349 +11.300000 -0.600000 39.001137 +11.300000 -0.500000 37.988925 +11.300000 -0.400000 36.996713 +11.300000 -0.300000 36.024500 +11.300000 -0.200000 35.072288 +11.300000 -0.100000 34.140076 +11.300000 -0.000000 33.227864 +11.300000 0.100000 32.335651 +11.300000 0.200000 31.463439 +11.300000 0.300000 30.611227 +11.300000 0.400000 29.779014 +11.300000 0.500000 28.966802 +11.300000 0.600000 28.174590 +11.300000 0.700000 27.402378 +11.300000 0.800000 26.650165 +11.300000 0.900000 25.917953 +11.300000 1.000000 25.205741 +11.300000 1.100000 24.513528 +11.300000 1.200000 23.841316 +11.300000 1.300000 23.189104 +11.300000 1.400000 22.556892 +11.300000 1.500000 21.944679 +11.300000 1.600000 21.352467 +11.300000 1.700000 20.780255 +11.300000 1.800000 20.228042 +11.300000 1.900000 19.695830 +11.300000 2.000000 19.183618 +11.300000 2.100000 18.691406 +11.300000 2.200000 18.219193 +11.300000 2.300000 17.766981 +11.300000 2.400000 17.334769 +11.300000 2.500000 16.922557 +11.300000 2.600000 16.530344 +11.300000 2.700000 16.158132 +11.300000 2.800000 15.805920 +11.300000 2.900000 15.473707 +11.300000 3.000000 15.161495 +11.300000 3.100000 14.869283 +11.300000 3.200000 14.597071 +11.300000 3.300000 14.344858 +11.300000 3.400000 14.112646 +11.300000 3.500000 13.900434 +11.300000 3.600000 13.708221 +11.300000 3.700000 13.536009 +11.300000 3.800000 13.383797 +11.300000 3.900000 13.251585 +11.300000 4.000000 13.139372 +11.300000 4.100000 13.047160 +11.300000 4.200000 12.974948 +11.300000 4.300000 12.922735 +11.300000 4.400000 12.890523 +11.300000 4.500000 12.878311 +11.300000 4.600000 12.886099 +11.300000 4.700000 12.913886 +11.300000 4.800000 12.961674 +11.300000 4.900000 13.029462 +11.300000 5.000000 13.117250 +11.300000 5.100000 13.225037 +11.300000 5.200000 13.352825 +11.300000 5.300000 13.500613 +11.300000 5.400000 13.668400 +11.300000 5.500000 13.856188 +11.300000 5.600000 14.063976 +11.300000 5.700000 14.291764 +11.300000 5.800000 14.539551 +11.300000 5.900000 14.807339 +11.300000 6.000000 15.095127 +11.300000 6.100000 15.402914 +11.300000 6.200000 15.730702 +11.300000 6.300000 16.078490 +11.300000 6.400000 16.446278 +11.300000 6.500000 16.834065 +11.300000 6.600000 17.241853 +11.300000 6.700000 17.669641 +11.300000 6.800000 18.117428 +11.300000 6.900000 18.585216 +11.300000 7.000000 19.073004 +11.300000 7.100000 19.580792 +11.300000 7.200000 20.108579 +11.300000 7.300000 20.656367 +11.300000 7.400000 21.224155 +11.300000 7.500000 21.811942 +11.300000 7.600000 22.419730 +11.300000 7.700000 23.047518 +11.300000 7.800000 23.695306 +11.300000 7.900000 24.363093 +11.300000 8.000000 25.050881 +11.300000 8.100000 25.758669 +11.300000 8.200000 26.486457 +11.300000 8.300000 27.234244 +11.300000 8.400000 28.002032 +11.300000 8.500000 28.789820 +11.300000 8.600000 29.597607 +11.300000 8.700000 30.425395 +11.300000 8.800000 31.273183 +11.300000 8.900000 32.140971 +11.300000 9.000000 33.028758 +11.300000 9.100000 33.936546 +11.300000 9.200000 34.864334 +11.300000 9.300000 35.812121 +11.300000 9.400000 36.779909 +11.300000 9.500000 37.767697 +11.300000 9.600000 38.775485 +11.300000 9.700000 39.803272 +11.300000 9.800000 40.851060 +11.300000 9.900000 41.918848 +11.300000 10.000000 43.006635 +11.300000 10.100000 44.114423 +11.300000 10.200000 45.242211 +11.300000 10.300000 46.389999 +11.300000 10.400000 47.557786 +11.300000 10.500000 48.745574 +11.300000 10.600000 49.953362 +11.300000 10.700000 51.181150 +11.300000 10.800000 52.428937 +11.300000 10.900000 53.696725 +11.300000 11.000000 54.984513 +11.300000 11.100000 56.292300 +11.300000 11.200000 57.620088 +11.300000 11.300000 58.967876 +11.300000 11.400000 60.335664 +11.300000 11.500000 61.723451 +11.300000 11.600000 63.131239 +11.300000 11.700000 64.559027 +11.300000 11.800000 66.006814 +11.300000 11.900000 67.474602 +11.300000 12.000000 68.962390 +11.300000 12.100000 70.470178 +11.300000 12.200000 71.997965 +11.300000 12.300000 73.545753 +11.300000 12.400000 75.113541 +11.300000 12.500000 76.701328 +11.300000 12.600000 78.309116 +11.300000 12.700000 79.936904 +11.300000 12.800000 81.584692 +11.300000 12.900000 83.252479 +11.300000 13.000000 84.940267 +11.300000 13.100000 86.648055 +11.300000 13.200000 88.375842 +11.300000 13.300000 90.123630 +11.300000 13.400000 91.891418 +11.300000 13.500000 93.679206 +11.300000 13.600000 95.486993 +11.300000 13.700000 97.314781 +11.300000 13.800000 99.162569 +11.300000 13.900000 101.030357 +11.300000 14.000000 102.918144 +11.300000 14.100000 104.825932 +11.300000 14.200000 106.753720 +11.300000 14.300000 108.701507 +11.300000 14.400000 110.669295 +11.300000 14.500000 112.657083 +11.300000 14.600000 114.664871 +11.300000 14.700000 116.692658 +11.300000 14.800000 118.740446 +11.300000 14.900000 120.808234 +11.300000 15.000000 122.896021 + +11.400000 -5.000000 106.807364 +11.400000 -4.900000 104.888333 +11.400000 -4.800000 102.989302 +11.400000 -4.700000 101.110271 +11.400000 -4.600000 99.251240 +11.400000 -4.500000 97.412209 +11.400000 -4.400000 95.593178 +11.400000 -4.300000 93.794147 +11.400000 -4.200000 92.015116 +11.400000 -4.100000 90.256085 +11.400000 -4.000000 88.517054 +11.400000 -3.900000 86.798023 +11.400000 -3.800000 85.098992 +11.400000 -3.700000 83.419961 +11.400000 -3.600000 81.760929 +11.400000 -3.500000 80.121898 +11.400000 -3.400000 78.502867 +11.400000 -3.300000 76.903836 +11.400000 -3.200000 75.324805 +11.400000 -3.100000 73.765774 +11.400000 -3.000000 72.226743 +11.400000 -2.900000 70.707712 +11.400000 -2.800000 69.208681 +11.400000 -2.700000 67.729650 +11.400000 -2.600000 66.270619 +11.400000 -2.500000 64.831588 +11.400000 -2.400000 63.412557 +11.400000 -2.300000 62.013526 +11.400000 -2.200000 60.634495 +11.400000 -2.100000 59.275464 +11.400000 -2.000000 57.936433 +11.400000 -1.900000 56.617401 +11.400000 -1.800000 55.318370 +11.400000 -1.700000 54.039339 +11.400000 -1.600000 52.780308 +11.400000 -1.500000 51.541277 +11.400000 -1.400000 50.322246 +11.400000 -1.300000 49.123215 +11.400000 -1.200000 47.944184 +11.400000 -1.100000 46.785153 +11.400000 -1.000000 45.646122 +11.400000 -0.900000 44.527091 +11.400000 -0.800000 43.428060 +11.400000 -0.700000 42.349029 +11.400000 -0.600000 41.289998 +11.400000 -0.500000 40.250967 +11.400000 -0.400000 39.231936 +11.400000 -0.300000 38.232905 +11.400000 -0.200000 37.253873 +11.400000 -0.100000 36.294842 +11.400000 -0.000000 35.355811 +11.400000 0.100000 34.436780 +11.400000 0.200000 33.537749 +11.400000 0.300000 32.658718 +11.400000 0.400000 31.799687 +11.400000 0.500000 30.960656 +11.400000 0.600000 30.141625 +11.400000 0.700000 29.342594 +11.400000 0.800000 28.563563 +11.400000 0.900000 27.804532 +11.400000 1.000000 27.065501 +11.400000 1.100000 26.346470 +11.400000 1.200000 25.647439 +11.400000 1.300000 24.968408 +11.400000 1.400000 24.309377 +11.400000 1.500000 23.670345 +11.400000 1.600000 23.051314 +11.400000 1.700000 22.452283 +11.400000 1.800000 21.873252 +11.400000 1.900000 21.314221 +11.400000 2.000000 20.775190 +11.400000 2.100000 20.256159 +11.400000 2.200000 19.757128 +11.400000 2.300000 19.278097 +11.400000 2.400000 18.819066 +11.400000 2.500000 18.380035 +11.400000 2.600000 17.961004 +11.400000 2.700000 17.561973 +11.400000 2.800000 17.182942 +11.400000 2.900000 16.823911 +11.400000 3.000000 16.484880 +11.400000 3.100000 16.165849 +11.400000 3.200000 15.866817 +11.400000 3.300000 15.587786 +11.400000 3.400000 15.328755 +11.400000 3.500000 15.089724 +11.400000 3.600000 14.870693 +11.400000 3.700000 14.671662 +11.400000 3.800000 14.492631 +11.400000 3.900000 14.333600 +11.400000 4.000000 14.194569 +11.400000 4.100000 14.075538 +11.400000 4.200000 13.976507 +11.400000 4.300000 13.897476 +11.400000 4.400000 13.838445 +11.400000 4.500000 13.799414 +11.400000 4.600000 13.780383 +11.400000 4.700000 13.781352 +11.400000 4.800000 13.802321 +11.400000 4.900000 13.843289 +11.400000 5.000000 13.904258 +11.400000 5.100000 13.985227 +11.400000 5.200000 14.086196 +11.400000 5.300000 14.207165 +11.400000 5.400000 14.348134 +11.400000 5.500000 14.509103 +11.400000 5.600000 14.690072 +11.400000 5.700000 14.891041 +11.400000 5.800000 15.112010 +11.400000 5.900000 15.352979 +11.400000 6.000000 15.613948 +11.400000 6.100000 15.894917 +11.400000 6.200000 16.195886 +11.400000 6.300000 16.516855 +11.400000 6.400000 16.857824 +11.400000 6.500000 17.218792 +11.400000 6.600000 17.599761 +11.400000 6.700000 18.000730 +11.400000 6.800000 18.421699 +11.400000 6.900000 18.862668 +11.400000 7.000000 19.323637 +11.400000 7.100000 19.804606 +11.400000 7.200000 20.305575 +11.400000 7.300000 20.826544 +11.400000 7.400000 21.367513 +11.400000 7.500000 21.928482 +11.400000 7.600000 22.509451 +11.400000 7.700000 23.110420 +11.400000 7.800000 23.731389 +11.400000 7.900000 24.372358 +11.400000 8.000000 25.033327 +11.400000 8.100000 25.714296 +11.400000 8.200000 26.415264 +11.400000 8.300000 27.136233 +11.400000 8.400000 27.877202 +11.400000 8.500000 28.638171 +11.400000 8.600000 29.419140 +11.400000 8.700000 30.220109 +11.400000 8.800000 31.041078 +11.400000 8.900000 31.882047 +11.400000 9.000000 32.743016 +11.400000 9.100000 33.623985 +11.400000 9.200000 34.524954 +11.400000 9.300000 35.445923 +11.400000 9.400000 36.386892 +11.400000 9.500000 37.347861 +11.400000 9.600000 38.328830 +11.400000 9.700000 39.329799 +11.400000 9.800000 40.350768 +11.400000 9.900000 41.391736 +11.400000 10.000000 42.452705 +11.400000 10.100000 43.533674 +11.400000 10.200000 44.634643 +11.400000 10.300000 45.755612 +11.400000 10.400000 46.896581 +11.400000 10.500000 48.057550 +11.400000 10.600000 49.238519 +11.400000 10.700000 50.439488 +11.400000 10.800000 51.660457 +11.400000 10.900000 52.901426 +11.400000 11.000000 54.162395 +11.400000 11.100000 55.443364 +11.400000 11.200000 56.744333 +11.400000 11.300000 58.065302 +11.400000 11.400000 59.406271 +11.400000 11.500000 60.767240 +11.400000 11.600000 62.148208 +11.400000 11.700000 63.549177 +11.400000 11.800000 64.970146 +11.400000 11.900000 66.411115 +11.400000 12.000000 67.872084 +11.400000 12.100000 69.353053 +11.400000 12.200000 70.854022 +11.400000 12.300000 72.374991 +11.400000 12.400000 73.915960 +11.400000 12.500000 75.476929 +11.400000 12.600000 77.057898 +11.400000 12.700000 78.658867 +11.400000 12.800000 80.279836 +11.400000 12.900000 81.920805 +11.400000 13.000000 83.581774 +11.400000 13.100000 85.262743 +11.400000 13.200000 86.963712 +11.400000 13.300000 88.684680 +11.400000 13.400000 90.425649 +11.400000 13.500000 92.186618 +11.400000 13.600000 93.967587 +11.400000 13.700000 95.768556 +11.400000 13.800000 97.589525 +11.400000 13.900000 99.430494 +11.400000 14.000000 101.291463 +11.400000 14.100000 103.172432 +11.400000 14.200000 105.073401 +11.400000 14.300000 106.994370 +11.400000 14.400000 108.935339 +11.400000 14.500000 110.896308 +11.400000 14.600000 112.877277 +11.400000 14.700000 114.878246 +11.400000 14.800000 116.899215 +11.400000 14.900000 118.940184 +11.400000 15.000000 121.001152 + +11.500000 -5.000000 110.325001 +11.500000 -4.900000 108.378635 +11.500000 -4.800000 106.452268 +11.500000 -4.700000 104.545901 +11.500000 -4.600000 102.659535 +11.500000 -4.500000 100.793168 +11.500000 -4.400000 98.946802 +11.500000 -4.300000 97.120435 +11.500000 -4.200000 95.314069 +11.500000 -4.100000 93.527702 +11.500000 -4.000000 91.761335 +11.500000 -3.900000 90.014969 +11.500000 -3.800000 88.288602 +11.500000 -3.700000 86.582236 +11.500000 -3.600000 84.895869 +11.500000 -3.500000 83.229503 +11.500000 -3.400000 81.583136 +11.500000 -3.300000 79.956769 +11.500000 -3.200000 78.350403 +11.500000 -3.100000 76.764036 +11.500000 -3.000000 75.197670 +11.500000 -2.900000 73.651303 +11.500000 -2.800000 72.124937 +11.500000 -2.700000 70.618570 +11.500000 -2.600000 69.132203 +11.500000 -2.500000 67.665837 +11.500000 -2.400000 66.219470 +11.500000 -2.300000 64.793104 +11.500000 -2.200000 63.386737 +11.500000 -2.100000 62.000371 +11.500000 -2.000000 60.634004 +11.500000 -1.900000 59.287637 +11.500000 -1.800000 57.961271 +11.500000 -1.700000 56.654904 +11.500000 -1.600000 55.368538 +11.500000 -1.500000 54.102171 +11.500000 -1.400000 52.855804 +11.500000 -1.300000 51.629438 +11.500000 -1.200000 50.423071 +11.500000 -1.100000 49.236705 +11.500000 -1.000000 48.070338 +11.500000 -0.900000 46.923972 +11.500000 -0.800000 45.797605 +11.500000 -0.700000 44.691238 +11.500000 -0.600000 43.604872 +11.500000 -0.500000 42.538505 +11.500000 -0.400000 41.492139 +11.500000 -0.300000 40.465772 +11.500000 -0.200000 39.459406 +11.500000 -0.100000 38.473039 +11.500000 -0.000000 37.506672 +11.500000 0.100000 36.560306 +11.500000 0.200000 35.633939 +11.500000 0.300000 34.727573 +11.500000 0.400000 33.841206 +11.500000 0.500000 32.974840 +11.500000 0.600000 32.128473 +11.500000 0.700000 31.302106 +11.500000 0.800000 30.495740 +11.500000 0.900000 29.709373 +11.500000 1.000000 28.943007 +11.500000 1.100000 28.196640 +11.500000 1.200000 27.470274 +11.500000 1.300000 26.763907 +11.500000 1.400000 26.077540 +11.500000 1.500000 25.411174 +11.500000 1.600000 24.764807 +11.500000 1.700000 24.138441 +11.500000 1.800000 23.532074 +11.500000 1.900000 22.945707 +11.500000 2.000000 22.379341 +11.500000 2.100000 21.832974 +11.500000 2.200000 21.306608 +11.500000 2.300000 20.800241 +11.500000 2.400000 20.313875 +11.500000 2.500000 19.847508 +11.500000 2.600000 19.401141 +11.500000 2.700000 18.974775 +11.500000 2.800000 18.568408 +11.500000 2.900000 18.182042 +11.500000 3.000000 17.815675 +11.500000 3.100000 17.469309 +11.500000 3.200000 17.142942 +11.500000 3.300000 16.836575 +11.500000 3.400000 16.550209 +11.500000 3.500000 16.283842 +11.500000 3.600000 16.037476 +11.500000 3.700000 15.811109 +11.500000 3.800000 15.604743 +11.500000 3.900000 15.418376 +11.500000 4.000000 15.252009 +11.500000 4.100000 15.105643 +11.500000 4.200000 14.979276 +11.500000 4.300000 14.872910 +11.500000 4.400000 14.786543 +11.500000 4.500000 14.720177 +11.500000 4.600000 14.673810 +11.500000 4.700000 14.647443 +11.500000 4.800000 14.641077 +11.500000 4.900000 14.654710 +11.500000 5.000000 14.688344 +11.500000 5.100000 14.741977 +11.500000 5.200000 14.815610 +11.500000 5.300000 14.909244 +11.500000 5.400000 15.022877 +11.500000 5.500000 15.156511 +11.500000 5.600000 15.310144 +11.500000 5.700000 15.483778 +11.500000 5.800000 15.677411 +11.500000 5.900000 15.891044 +11.500000 6.000000 16.124678 +11.500000 6.100000 16.378311 +11.500000 6.200000 16.651945 +11.500000 6.300000 16.945578 +11.500000 6.400000 17.259212 +11.500000 6.500000 17.592845 +11.500000 6.600000 17.946478 +11.500000 6.700000 18.320112 +11.500000 6.800000 18.713745 +11.500000 6.900000 19.127379 +11.500000 7.000000 19.561012 +11.500000 7.100000 20.014646 +11.500000 7.200000 20.488279 +11.500000 7.300000 20.981912 +11.500000 7.400000 21.495546 +11.500000 7.500000 22.029179 +11.500000 7.600000 22.582813 +11.500000 7.700000 23.156446 +11.500000 7.800000 23.750080 +11.500000 7.900000 24.363713 +11.500000 8.000000 24.997346 +11.500000 8.100000 25.650980 +11.500000 8.200000 26.324613 +11.500000 8.300000 27.018247 +11.500000 8.400000 27.731880 +11.500000 8.500000 28.465513 +11.500000 8.600000 29.219147 +11.500000 8.700000 29.992780 +11.500000 8.800000 30.786414 +11.500000 8.900000 31.600047 +11.500000 9.000000 32.433681 +11.500000 9.100000 33.287314 +11.500000 9.200000 34.160947 +11.500000 9.300000 35.054581 +11.500000 9.400000 35.968214 +11.500000 9.500000 36.901848 +11.500000 9.600000 37.855481 +11.500000 9.700000 38.829115 +11.500000 9.800000 39.822748 +11.500000 9.900000 40.836381 +11.500000 10.000000 41.870015 +11.500000 10.100000 42.923648 +11.500000 10.200000 43.997282 +11.500000 10.300000 45.090915 +11.500000 10.400000 46.204549 +11.500000 10.500000 47.338182 +11.500000 10.600000 48.491815 +11.500000 10.700000 49.665449 +11.500000 10.800000 50.859082 +11.500000 10.900000 52.072716 +11.500000 11.000000 53.306349 +11.500000 11.100000 54.559983 +11.500000 11.200000 55.833616 +11.500000 11.300000 57.127249 +11.500000 11.400000 58.440883 +11.500000 11.500000 59.774516 +11.500000 11.600000 61.128150 +11.500000 11.700000 62.501783 +11.500000 11.800000 63.895416 +11.500000 11.900000 65.309050 +11.500000 12.000000 66.742683 +11.500000 12.100000 68.196317 +11.500000 12.200000 69.669950 +11.500000 12.300000 71.163584 +11.500000 12.400000 72.677217 +11.500000 12.500000 74.210850 +11.500000 12.600000 75.764484 +11.500000 12.700000 77.338117 +11.500000 12.800000 78.931751 +11.500000 12.900000 80.545384 +11.500000 13.000000 82.179018 +11.500000 13.100000 83.832651 +11.500000 13.200000 85.506284 +11.500000 13.300000 87.199918 +11.500000 13.400000 88.913551 +11.500000 13.500000 90.647185 +11.500000 13.600000 92.400818 +11.500000 13.700000 94.174452 +11.500000 13.800000 95.968085 +11.500000 13.900000 97.781718 +11.500000 14.000000 99.615352 +11.500000 14.100000 101.468985 +11.500000 14.200000 103.342619 +11.500000 14.300000 105.236252 +11.500000 14.400000 107.149886 +11.500000 14.500000 109.083519 +11.500000 14.600000 111.037152 +11.500000 14.700000 113.010786 +11.500000 14.800000 115.004419 +11.500000 14.900000 117.018053 +11.500000 15.000000 119.051686 + +11.600000 -5.000000 113.884890 +11.600000 -4.900000 111.910671 +11.600000 -4.800000 109.956453 +11.600000 -4.700000 108.022234 +11.600000 -4.600000 106.108015 +11.600000 -4.500000 104.213796 +11.600000 -4.400000 102.339577 +11.600000 -4.300000 100.485358 +11.600000 -4.200000 98.651140 +11.600000 -4.100000 96.836921 +11.600000 -4.000000 95.042702 +11.600000 -3.900000 93.268483 +11.600000 -3.800000 91.514264 +11.600000 -3.700000 89.780045 +11.600000 -3.600000 88.065827 +11.600000 -3.500000 86.371608 +11.600000 -3.400000 84.697389 +11.600000 -3.300000 83.043170 +11.600000 -3.200000 81.408951 +11.600000 -3.100000 79.794732 +11.600000 -3.000000 78.200514 +11.600000 -2.900000 76.626295 +11.600000 -2.800000 75.072076 +11.600000 -2.700000 73.537857 +11.600000 -2.600000 72.023638 +11.600000 -2.500000 70.529419 +11.600000 -2.400000 69.055201 +11.600000 -2.300000 67.600982 +11.600000 -2.200000 66.166763 +11.600000 -2.100000 64.752544 +11.600000 -2.000000 63.358325 +11.600000 -1.900000 61.984106 +11.600000 -1.800000 60.629888 +11.600000 -1.700000 59.295669 +11.600000 -1.600000 57.981450 +11.600000 -1.500000 56.687231 +11.600000 -1.400000 55.413012 +11.600000 -1.300000 54.158793 +11.600000 -1.200000 52.924575 +11.600000 -1.100000 51.710356 +11.600000 -1.000000 50.516137 +11.600000 -0.900000 49.341918 +11.600000 -0.800000 48.187699 +11.600000 -0.700000 47.053481 +11.600000 -0.600000 45.939262 +11.600000 -0.500000 44.845043 +11.600000 -0.400000 43.770824 +11.600000 -0.300000 42.716605 +11.600000 -0.200000 41.682386 +11.600000 -0.100000 40.668168 +11.600000 -0.000000 39.673949 +11.600000 0.100000 38.699730 +11.600000 0.200000 37.745511 +11.600000 0.300000 36.811292 +11.600000 0.400000 35.897073 +11.600000 0.500000 35.002855 +11.600000 0.600000 34.128636 +11.600000 0.700000 33.274417 +11.600000 0.800000 32.440198 +11.600000 0.900000 31.625979 +11.600000 1.000000 30.831760 +11.600000 1.100000 30.057542 +11.600000 1.200000 29.303323 +11.600000 1.300000 28.569104 +11.600000 1.400000 27.854885 +11.600000 1.500000 27.160666 +11.600000 1.600000 26.486447 +11.600000 1.700000 25.832229 +11.600000 1.800000 25.198010 +11.600000 1.900000 24.583791 +11.600000 2.000000 23.989572 +11.600000 2.100000 23.415353 +11.600000 2.200000 22.861134 +11.600000 2.300000 22.326916 +11.600000 2.400000 21.812697 +11.600000 2.500000 21.318478 +11.600000 2.600000 20.844259 +11.600000 2.700000 20.390040 +11.600000 2.800000 19.955821 +11.600000 2.900000 19.541603 +11.600000 3.000000 19.147384 +11.600000 3.100000 18.773165 +11.600000 3.200000 18.418946 +11.600000 3.300000 18.084727 +11.600000 3.400000 17.770508 +11.600000 3.500000 17.476290 +11.600000 3.600000 17.202071 +11.600000 3.700000 16.947852 +11.600000 3.800000 16.713633 +11.600000 3.900000 16.499414 +11.600000 4.000000 16.305195 +11.600000 4.100000 16.130977 +11.600000 4.200000 15.976758 +11.600000 4.300000 15.842539 +11.600000 4.400000 15.728320 +11.600000 4.500000 15.634101 +11.600000 4.600000 15.559882 +11.600000 4.700000 15.505664 +11.600000 4.800000 15.471445 +11.600000 4.900000 15.457226 +11.600000 5.000000 15.463007 +11.600000 5.100000 15.488788 +11.600000 5.200000 15.534570 +11.600000 5.300000 15.600351 +11.600000 5.400000 15.686132 +11.600000 5.500000 15.791913 +11.600000 5.600000 15.917694 +11.600000 5.700000 16.063475 +11.600000 5.800000 16.229257 +11.600000 5.900000 16.415038 +11.600000 6.000000 16.620819 +11.600000 6.100000 16.846600 +11.600000 6.200000 17.092381 +11.600000 6.300000 17.358162 +11.600000 6.400000 17.643944 +11.600000 6.500000 17.949725 +11.600000 6.600000 18.275506 +11.600000 6.700000 18.621287 +11.600000 6.800000 18.987068 +11.600000 6.900000 19.372849 +11.600000 7.000000 19.778631 +11.600000 7.100000 20.204412 +11.600000 7.200000 20.650193 +11.600000 7.300000 21.115974 +11.600000 7.400000 21.601755 +11.600000 7.500000 22.107536 +11.600000 7.600000 22.633318 +11.600000 7.700000 23.179099 +11.600000 7.800000 23.744880 +11.600000 7.900000 24.330661 +11.600000 8.000000 24.936442 +11.600000 8.100000 25.562223 +11.600000 8.200000 26.208005 +11.600000 8.300000 26.873786 +11.600000 8.400000 27.559567 +11.600000 8.500000 28.265348 +11.600000 8.600000 28.991129 +11.600000 8.700000 29.736910 +11.600000 8.800000 30.502692 +11.600000 8.900000 31.288473 +11.600000 9.000000 32.094254 +11.600000 9.100000 32.920035 +11.600000 9.200000 33.765816 +11.600000 9.300000 34.631597 +11.600000 9.400000 35.517379 +11.600000 9.500000 36.423160 +11.600000 9.600000 37.348941 +11.600000 9.700000 38.294722 +11.600000 9.800000 39.260503 +11.600000 9.900000 40.246284 +11.600000 10.000000 41.252066 +11.600000 10.100000 42.277847 +11.600000 10.200000 43.323628 +11.600000 10.300000 44.389409 +11.600000 10.400000 45.475190 +11.600000 10.500000 46.580972 +11.600000 10.600000 47.706753 +11.600000 10.700000 48.852534 +11.600000 10.800000 50.018315 +11.600000 10.900000 51.204096 +11.600000 11.000000 52.409877 +11.600000 11.100000 53.635659 +11.600000 11.200000 54.881440 +11.600000 11.300000 56.147221 +11.600000 11.400000 57.433002 +11.600000 11.500000 58.738783 +11.600000 11.600000 60.064564 +11.600000 11.700000 61.410346 +11.600000 11.800000 62.776127 +11.600000 11.900000 64.161908 +11.600000 12.000000 65.567689 +11.600000 12.100000 66.993470 +11.600000 12.200000 68.439251 +11.600000 12.300000 69.905033 +11.600000 12.400000 71.390814 +11.600000 12.500000 72.896595 +11.600000 12.600000 74.422376 +11.600000 12.700000 75.968157 +11.600000 12.800000 77.533938 +11.600000 12.900000 79.119720 +11.600000 13.000000 80.725501 +11.600000 13.100000 82.351282 +11.600000 13.200000 83.997063 +11.600000 13.300000 85.662844 +11.600000 13.400000 87.348625 +11.600000 13.500000 89.054407 +11.600000 13.600000 90.780188 +11.600000 13.700000 92.525969 +11.600000 13.800000 94.291750 +11.600000 13.900000 96.077531 +11.600000 14.000000 97.883312 +11.600000 14.100000 99.709094 +11.600000 14.200000 101.554875 +11.600000 14.300000 103.420656 +11.600000 14.400000 105.306437 +11.600000 14.500000 107.212218 +11.600000 14.600000 109.137999 +11.600000 14.700000 111.083781 +11.600000 14.800000 113.049562 +11.600000 14.900000 115.035343 +11.600000 15.000000 117.041124 + +11.700000 -5.000000 117.481037 +11.700000 -4.900000 115.478449 +11.700000 -4.800000 113.495861 +11.700000 -4.700000 111.533273 +11.700000 -4.600000 109.590685 +11.700000 -4.500000 107.668098 +11.700000 -4.400000 105.765510 +11.700000 -4.300000 103.882922 +11.700000 -4.200000 102.020334 +11.700000 -4.100000 100.177746 +11.700000 -4.000000 98.355158 +11.700000 -3.900000 96.552571 +11.700000 -3.800000 94.769983 +11.700000 -3.700000 93.007395 +11.700000 -3.600000 91.264807 +11.700000 -3.500000 89.542219 +11.700000 -3.400000 87.839631 +11.700000 -3.300000 86.157044 +11.700000 -3.200000 84.494456 +11.700000 -3.100000 82.851868 +11.700000 -3.000000 81.229280 +11.700000 -2.900000 79.626692 +11.700000 -2.800000 78.044105 +11.700000 -2.700000 76.481517 +11.700000 -2.600000 74.938929 +11.700000 -2.500000 73.416341 +11.700000 -2.400000 71.913753 +11.700000 -2.300000 70.431165 +11.700000 -2.200000 68.968578 +11.700000 -2.100000 67.525990 +11.700000 -2.000000 66.103402 +11.700000 -1.900000 64.700814 +11.700000 -1.800000 63.318226 +11.700000 -1.700000 61.955638 +11.700000 -1.600000 60.613051 +11.700000 -1.500000 59.290463 +11.700000 -1.400000 57.987875 +11.700000 -1.300000 56.705287 +11.700000 -1.200000 55.442699 +11.700000 -1.100000 54.200112 +11.700000 -1.000000 52.977524 +11.700000 -0.900000 51.774936 +11.700000 -0.800000 50.592348 +11.700000 -0.700000 49.429760 +11.700000 -0.600000 48.287172 +11.700000 -0.500000 47.164585 +11.700000 -0.400000 46.061997 +11.700000 -0.300000 44.979409 +11.700000 -0.200000 43.916821 +11.700000 -0.100000 42.874233 +11.700000 -0.000000 41.851645 +11.700000 0.100000 40.849058 +11.700000 0.200000 39.866470 +11.700000 0.300000 38.903882 +11.700000 0.400000 37.961294 +11.700000 0.500000 37.038706 +11.700000 0.600000 36.136119 +11.700000 0.700000 35.253531 +11.700000 0.800000 34.390943 +11.700000 0.900000 33.548355 +11.700000 1.000000 32.725767 +11.700000 1.100000 31.923179 +11.700000 1.200000 31.140592 +11.700000 1.300000 30.378004 +11.700000 1.400000 29.635416 +11.700000 1.500000 28.912828 +11.700000 1.600000 28.210240 +11.700000 1.700000 27.527652 +11.700000 1.800000 26.865065 +11.700000 1.900000 26.222477 +11.700000 2.000000 25.599889 +11.700000 2.100000 24.997301 +11.700000 2.200000 24.414713 +11.700000 2.300000 23.852126 +11.700000 2.400000 23.309538 +11.700000 2.500000 22.786950 +11.700000 2.600000 22.284362 +11.700000 2.700000 21.801774 +11.700000 2.800000 21.339186 +11.700000 2.900000 20.896599 +11.700000 3.000000 20.474011 +11.700000 3.100000 20.071423 +11.700000 3.200000 19.688835 +11.700000 3.300000 19.326247 +11.700000 3.400000 18.983659 +11.700000 3.500000 18.661072 +11.700000 3.600000 18.358484 +11.700000 3.700000 18.075896 +11.700000 3.800000 17.813308 +11.700000 3.900000 17.570720 +11.700000 4.000000 17.348133 +11.700000 4.100000 17.145545 +11.700000 4.200000 16.962957 +11.700000 4.300000 16.800369 +11.700000 4.400000 16.657781 +11.700000 4.500000 16.535193 +11.700000 4.600000 16.432606 +11.700000 4.700000 16.350018 +11.700000 4.800000 16.287430 +11.700000 4.900000 16.244842 +11.700000 5.000000 16.222254 +11.700000 5.100000 16.219666 +11.700000 5.200000 16.237079 +11.700000 5.300000 16.274491 +11.700000 5.400000 16.331903 +11.700000 5.500000 16.409315 +11.700000 5.600000 16.506727 +11.700000 5.700000 16.624140 +11.700000 5.800000 16.761552 +11.700000 5.900000 16.918964 +11.700000 6.000000 17.096376 +11.700000 6.100000 17.293788 +11.700000 6.200000 17.511200 +11.700000 6.300000 17.748613 +11.700000 6.400000 18.006025 +11.700000 6.500000 18.283437 +11.700000 6.600000 18.580849 +11.700000 6.700000 18.898261 +11.700000 6.800000 19.235674 +11.700000 6.900000 19.593086 +11.700000 7.000000 19.970498 +11.700000 7.100000 20.367910 +11.700000 7.200000 20.785322 +11.700000 7.300000 21.222734 +11.700000 7.400000 21.680147 +11.700000 7.500000 22.157559 +11.700000 7.600000 22.654971 +11.700000 7.700000 23.172383 +11.700000 7.800000 23.709795 +11.700000 7.900000 24.267207 +11.700000 8.000000 24.844620 +11.700000 8.100000 25.442032 +11.700000 8.200000 26.059444 +11.700000 8.300000 26.696856 +11.700000 8.400000 27.354268 +11.700000 8.500000 28.031681 +11.700000 8.600000 28.729093 +11.700000 8.700000 29.446505 +11.700000 8.800000 30.183917 +11.700000 8.900000 30.941329 +11.700000 9.000000 31.718741 +11.700000 9.100000 32.516154 +11.700000 9.200000 33.333566 +11.700000 9.300000 34.170978 +11.700000 9.400000 35.028390 +11.700000 9.500000 35.905802 +11.700000 9.600000 36.803214 +11.700000 9.700000 37.720627 +11.700000 9.800000 38.658039 +11.700000 9.900000 39.615451 +11.700000 10.000000 40.592863 +11.700000 10.100000 41.590275 +11.700000 10.200000 42.607688 +11.700000 10.300000 43.645100 +11.700000 10.400000 44.702512 +11.700000 10.500000 45.779924 +11.700000 10.600000 46.877336 +11.700000 10.700000 47.994748 +11.700000 10.800000 49.132161 +11.700000 10.900000 50.289573 +11.700000 11.000000 51.466985 +11.700000 11.100000 52.664397 +11.700000 11.200000 53.881809 +11.700000 11.300000 55.119221 +11.700000 11.400000 56.376634 +11.700000 11.500000 57.654046 +11.700000 11.600000 58.951458 +11.700000 11.700000 60.268870 +11.700000 11.800000 61.606282 +11.700000 11.900000 62.963695 +11.700000 12.000000 64.341107 +11.700000 12.100000 65.738519 +11.700000 12.200000 67.155931 +11.700000 12.300000 68.593343 +11.700000 12.400000 70.050755 +11.700000 12.500000 71.528168 +11.700000 12.600000 73.025580 +11.700000 12.700000 74.542992 +11.700000 12.800000 76.080404 +11.700000 12.900000 77.637816 +11.700000 13.000000 79.215228 +11.700000 13.100000 80.812641 +11.700000 13.200000 82.430053 +11.700000 13.300000 84.067465 +11.700000 13.400000 85.724877 +11.700000 13.500000 87.402289 +11.700000 13.600000 89.099702 +11.700000 13.700000 90.817114 +11.700000 13.800000 92.554526 +11.700000 13.900000 94.311938 +11.700000 14.000000 96.089350 +11.700000 14.100000 97.886762 +11.700000 14.200000 99.704175 +11.700000 14.300000 101.541587 +11.700000 14.400000 103.398999 +11.700000 14.500000 105.276411 +11.700000 14.600000 107.173823 +11.700000 14.700000 109.091235 +11.700000 14.800000 111.028648 +11.700000 14.900000 112.986060 +11.700000 15.000000 114.963472 + +11.800000 -5.000000 121.108031 +11.800000 -4.900000 119.076557 +11.800000 -4.800000 117.065083 +11.800000 -4.700000 115.073610 +11.800000 -4.600000 113.102136 +11.800000 -4.500000 111.150663 +11.800000 -4.400000 109.219189 +11.800000 -4.300000 107.307716 +11.800000 -4.200000 105.416242 +11.800000 -4.100000 103.544769 +11.800000 -4.000000 101.693295 +11.800000 -3.900000 99.861821 +11.800000 -3.800000 98.050348 +11.800000 -3.700000 96.258874 +11.800000 -3.600000 94.487401 +11.800000 -3.500000 92.735927 +11.800000 -3.400000 91.004454 +11.800000 -3.300000 89.292980 +11.800000 -3.200000 87.601507 +11.800000 -3.100000 85.930033 +11.800000 -3.000000 84.278559 +11.800000 -2.900000 82.647086 +11.800000 -2.800000 81.035612 +11.800000 -2.700000 79.444139 +11.800000 -2.600000 77.872665 +11.800000 -2.500000 76.321192 +11.800000 -2.400000 74.789718 +11.800000 -2.300000 73.278245 +11.800000 -2.200000 71.786771 +11.800000 -2.100000 70.315298 +11.800000 -2.000000 68.863824 +11.800000 -1.900000 67.432350 +11.800000 -1.800000 66.020877 +11.800000 -1.700000 64.629403 +11.800000 -1.600000 63.257930 +11.800000 -1.500000 61.906456 +11.800000 -1.400000 60.574983 +11.800000 -1.300000 59.263509 +11.800000 -1.200000 57.972036 +11.800000 -1.100000 56.700562 +11.800000 -1.000000 55.449088 +11.800000 -0.900000 54.217615 +11.800000 -0.800000 53.006141 +11.800000 -0.700000 51.814668 +11.800000 -0.600000 50.643194 +11.800000 -0.500000 49.491721 +11.800000 -0.400000 48.360247 +11.800000 -0.300000 47.248774 +11.800000 -0.200000 46.157300 +11.800000 -0.100000 45.085826 +11.800000 -0.000000 44.034353 +11.800000 0.100000 43.002879 +11.800000 0.200000 41.991406 +11.800000 0.300000 40.999932 +11.800000 0.400000 40.028459 +11.800000 0.500000 39.076985 +11.800000 0.600000 38.145512 +11.800000 0.700000 37.234038 +11.800000 0.800000 36.342564 +11.800000 0.900000 35.471091 +11.800000 1.000000 34.619617 +11.800000 1.100000 33.788144 +11.800000 1.200000 32.976670 +11.800000 1.300000 32.185197 +11.800000 1.400000 31.413723 +11.800000 1.500000 30.662250 +11.800000 1.600000 29.930776 +11.800000 1.700000 29.219302 +11.800000 1.800000 28.527829 +11.800000 1.900000 27.856355 +11.800000 2.000000 27.204882 +11.800000 2.100000 26.573408 +11.800000 2.200000 25.961935 +11.800000 2.300000 25.370461 +11.800000 2.400000 24.798988 +11.800000 2.500000 24.247514 +11.800000 2.600000 23.716040 +11.800000 2.700000 23.204567 +11.800000 2.800000 22.713093 +11.800000 2.900000 22.241620 +11.800000 3.000000 21.790146 +11.800000 3.100000 21.358673 +11.800000 3.200000 20.947199 +11.800000 3.300000 20.555726 +11.800000 3.400000 20.184252 +11.800000 3.500000 19.832779 +11.800000 3.600000 19.501305 +11.800000 3.700000 19.189831 +11.800000 3.800000 18.898358 +11.800000 3.900000 18.626884 +11.800000 4.000000 18.375411 +11.800000 4.100000 18.143937 +11.800000 4.200000 17.932464 +11.800000 4.300000 17.740990 +11.800000 4.400000 17.569517 +11.800000 4.500000 17.418043 +11.800000 4.600000 17.286569 +11.800000 4.700000 17.175096 +11.800000 4.800000 17.083622 +11.800000 4.900000 17.012149 +11.800000 5.000000 16.960675 +11.800000 5.100000 16.929202 +11.800000 5.200000 16.917728 +11.800000 5.300000 16.926255 +11.800000 5.400000 16.954781 +11.800000 5.500000 17.003307 +11.800000 5.600000 17.071834 +11.800000 5.700000 17.160360 +11.800000 5.800000 17.268887 +11.800000 5.900000 17.397413 +11.800000 6.000000 17.545940 +11.800000 6.100000 17.714466 +11.800000 6.200000 17.902993 +11.800000 6.300000 18.111519 +11.800000 6.400000 18.340045 +11.800000 6.500000 18.588572 +11.800000 6.600000 18.857098 +11.800000 6.700000 19.145625 +11.800000 6.800000 19.454151 +11.800000 6.900000 19.782678 +11.800000 7.000000 20.131204 +11.800000 7.100000 20.499731 +11.800000 7.200000 20.888257 +11.800000 7.300000 21.296783 +11.800000 7.400000 21.725310 +11.800000 7.500000 22.173836 +11.800000 7.600000 22.642363 +11.800000 7.700000 23.130889 +11.800000 7.800000 23.639416 +11.800000 7.900000 24.167942 +11.800000 8.000000 24.716469 +11.800000 8.100000 25.284995 +11.800000 8.200000 25.873521 +11.800000 8.300000 26.482048 +11.800000 8.400000 27.110574 +11.800000 8.500000 27.759101 +11.800000 8.600000 28.427627 +11.800000 8.700000 29.116154 +11.800000 8.800000 29.824680 +11.800000 8.900000 30.553207 +11.800000 9.000000 31.301733 +11.800000 9.100000 32.070260 +11.800000 9.200000 32.858786 +11.800000 9.300000 33.667312 +11.800000 9.400000 34.495839 +11.800000 9.500000 35.344365 +11.800000 9.600000 36.212892 +11.800000 9.700000 37.101418 +11.800000 9.800000 38.009945 +11.800000 9.900000 38.938471 +11.800000 10.000000 39.886998 +11.800000 10.100000 40.855524 +11.800000 10.200000 41.844050 +11.800000 10.300000 42.852577 +11.800000 10.400000 43.881103 +11.800000 10.500000 44.929630 +11.800000 10.600000 45.998156 +11.800000 10.700000 47.086683 +11.800000 10.800000 48.195209 +11.800000 10.900000 49.323736 +11.800000 11.000000 50.472262 +11.800000 11.100000 51.640788 +11.800000 11.200000 52.829315 +11.800000 11.300000 54.037841 +11.800000 11.400000 55.266368 +11.800000 11.500000 56.514894 +11.800000 11.600000 57.783421 +11.800000 11.700000 59.071947 +11.800000 11.800000 60.380474 +11.800000 11.900000 61.709000 +11.800000 12.000000 63.057526 +11.800000 12.100000 64.426053 +11.800000 12.200000 65.814579 +11.800000 12.300000 67.223106 +11.800000 12.400000 68.651632 +11.800000 12.500000 70.100159 +11.800000 12.600000 71.568685 +11.800000 12.700000 73.057212 +11.800000 12.800000 74.565738 +11.800000 12.900000 76.094264 +11.800000 13.000000 77.642791 +11.800000 13.100000 79.211317 +11.800000 13.200000 80.799844 +11.800000 13.300000 82.408370 +11.800000 13.400000 84.036897 +11.800000 13.500000 85.685423 +11.800000 13.600000 87.353950 +11.800000 13.700000 89.042476 +11.800000 13.800000 90.751002 +11.800000 13.900000 92.479529 +11.800000 14.000000 94.228055 +11.800000 14.100000 95.996582 +11.800000 14.200000 97.785108 +11.800000 14.300000 99.593635 +11.800000 14.400000 101.422161 +11.800000 14.500000 103.270688 +11.800000 14.600000 105.139214 +11.800000 14.700000 107.027740 +11.800000 14.800000 108.936267 +11.800000 14.900000 110.864793 +11.800000 15.000000 112.813320 + +11.900000 -5.000000 124.761123 +11.900000 -4.900000 122.700247 +11.900000 -4.800000 120.659371 +11.900000 -4.700000 118.638495 +11.900000 -4.600000 116.637619 +11.900000 -4.500000 114.656743 +11.900000 -4.400000 112.695867 +11.900000 -4.300000 110.754991 +11.900000 -4.200000 108.834115 +11.900000 -4.100000 106.933239 +11.900000 -4.000000 105.052363 +11.900000 -3.900000 103.191487 +11.900000 -3.800000 101.350611 +11.900000 -3.700000 99.529735 +11.900000 -3.600000 97.728859 +11.900000 -3.500000 95.947983 +11.900000 -3.400000 94.187107 +11.900000 -3.300000 92.446231 +11.900000 -3.200000 90.725355 +11.900000 -3.100000 89.024479 +11.900000 -3.000000 87.343603 +11.900000 -2.900000 85.682727 +11.900000 -2.800000 84.041851 +11.900000 -2.700000 82.420975 +11.900000 -2.600000 80.820098 +11.900000 -2.500000 79.239222 +11.900000 -2.400000 77.678346 +11.900000 -2.300000 76.137470 +11.900000 -2.200000 74.616594 +11.900000 -2.100000 73.115718 +11.900000 -2.000000 71.634842 +11.900000 -1.900000 70.173966 +11.900000 -1.800000 68.733090 +11.900000 -1.700000 67.312214 +11.900000 -1.600000 65.911338 +11.900000 -1.500000 64.530462 +11.900000 -1.400000 63.169586 +11.900000 -1.300000 61.828710 +11.900000 -1.200000 60.507834 +11.900000 -1.100000 59.206958 +11.900000 -1.000000 57.926082 +11.900000 -0.900000 56.665206 +11.900000 -0.800000 55.424330 +11.900000 -0.700000 54.203454 +11.900000 -0.600000 53.002578 +11.900000 -0.500000 51.821702 +11.900000 -0.400000 50.660826 +11.900000 -0.300000 49.519950 +11.900000 -0.200000 48.399074 +11.900000 -0.100000 47.298198 +11.900000 -0.000000 46.217322 +11.900000 0.100000 45.156446 +11.900000 0.200000 44.115570 +11.900000 0.300000 43.094694 +11.900000 0.400000 42.093818 +11.900000 0.500000 41.112942 +11.900000 0.600000 40.152066 +11.900000 0.700000 39.211190 +11.900000 0.800000 38.290314 +11.900000 0.900000 37.389438 +11.900000 1.000000 36.508562 +11.900000 1.100000 35.647686 +11.900000 1.200000 34.806810 +11.900000 1.300000 33.985934 +11.900000 1.400000 33.185058 +11.900000 1.500000 32.404182 +11.900000 1.600000 31.643306 +11.900000 1.700000 30.902430 +11.900000 1.800000 30.181554 +11.900000 1.900000 29.480677 +11.900000 2.000000 28.799801 +11.900000 2.100000 28.138925 +11.900000 2.200000 27.498049 +11.900000 2.300000 26.877173 +11.900000 2.400000 26.276297 +11.900000 2.500000 25.695421 +11.900000 2.600000 25.134545 +11.900000 2.700000 24.593669 +11.900000 2.800000 24.072793 +11.900000 2.900000 23.571917 +11.900000 3.000000 23.091041 +11.900000 3.100000 22.630165 +11.900000 3.200000 22.189289 +11.900000 3.300000 21.768413 +11.900000 3.400000 21.367537 +11.900000 3.500000 20.986661 +11.900000 3.600000 20.625785 +11.900000 3.700000 20.284909 +11.900000 3.800000 19.964033 +11.900000 3.900000 19.663157 +11.900000 4.000000 19.382281 +11.900000 4.100000 19.121405 +11.900000 4.200000 18.880529 +11.900000 4.300000 18.659653 +11.900000 4.400000 18.458777 +11.900000 4.500000 18.277901 +11.900000 4.600000 18.117025 +11.900000 4.700000 17.976149 +11.900000 4.800000 17.855273 +11.900000 4.900000 17.754397 +11.900000 5.000000 17.673521 +11.900000 5.100000 17.612645 +11.900000 5.200000 17.571769 +11.900000 5.300000 17.550893 +11.900000 5.400000 17.550017 +11.900000 5.500000 17.569141 +11.900000 5.600000 17.608265 +11.900000 5.700000 17.667389 +11.900000 5.800000 17.746513 +11.900000 5.900000 17.845637 +11.900000 6.000000 17.964761 +11.900000 6.100000 18.103885 +11.900000 6.200000 18.263009 +11.900000 6.300000 18.442133 +11.900000 6.400000 18.641256 +11.900000 6.500000 18.860380 +11.900000 6.600000 19.099504 +11.900000 6.700000 19.358628 +11.900000 6.800000 19.637752 +11.900000 6.900000 19.936876 +11.900000 7.000000 20.256000 +11.900000 7.100000 20.595124 +11.900000 7.200000 20.954248 +11.900000 7.300000 21.333372 +11.900000 7.400000 21.732496 +11.900000 7.500000 22.151620 +11.900000 7.600000 22.590744 +11.900000 7.700000 23.049868 +11.900000 7.800000 23.528992 +11.900000 7.900000 24.028116 +11.900000 8.000000 24.547240 +11.900000 8.100000 25.086364 +11.900000 8.200000 25.645488 +11.900000 8.300000 26.224612 +11.900000 8.400000 26.823736 +11.900000 8.500000 27.442860 +11.900000 8.600000 28.081984 +11.900000 8.700000 28.741108 +11.900000 8.800000 29.420232 +11.900000 8.900000 30.119356 +11.900000 9.000000 30.838480 +11.900000 9.100000 31.577604 +11.900000 9.200000 32.336728 +11.900000 9.300000 33.115852 +11.900000 9.400000 33.914976 +11.900000 9.500000 34.734100 +11.900000 9.600000 35.573224 +11.900000 9.700000 36.432348 +11.900000 9.800000 37.311472 +11.900000 9.900000 38.210596 +11.900000 10.000000 39.129720 +11.900000 10.100000 40.068844 +11.900000 10.200000 41.027968 +11.900000 10.300000 42.007092 +11.900000 10.400000 43.006216 +11.900000 10.500000 44.025340 +11.900000 10.600000 45.064464 +11.900000 10.700000 46.123588 +11.900000 10.800000 47.202711 +11.900000 10.900000 48.301835 +11.900000 11.000000 49.420959 +11.900000 11.100000 50.560083 +11.900000 11.200000 51.719207 +11.900000 11.300000 52.898331 +11.900000 11.400000 54.097455 +11.900000 11.500000 55.316579 +11.900000 11.600000 56.555703 +11.900000 11.700000 57.814827 +11.900000 11.800000 59.093951 +11.900000 11.900000 60.393075 +11.900000 12.000000 61.712199 +11.900000 12.100000 63.051323 +11.900000 12.200000 64.410447 +11.900000 12.300000 65.789571 +11.900000 12.400000 67.188695 +11.900000 12.500000 68.607819 +11.900000 12.600000 70.046943 +11.900000 12.700000 71.506067 +11.900000 12.800000 72.985191 +11.900000 12.900000 74.484315 +11.900000 13.000000 76.003439 +11.900000 13.100000 77.542563 +11.900000 13.200000 79.101687 +11.900000 13.300000 80.680811 +11.900000 13.400000 82.279935 +11.900000 13.500000 83.899059 +11.900000 13.600000 85.538183 +11.900000 13.700000 87.197307 +11.900000 13.800000 88.876431 +11.900000 13.900000 90.575555 +11.900000 14.000000 92.294679 +11.900000 14.100000 94.033803 +11.900000 14.200000 95.792927 +11.900000 14.300000 97.572051 +11.900000 14.400000 99.371175 +11.900000 14.500000 101.190299 +11.900000 14.600000 103.029423 +11.900000 14.700000 104.888547 +11.900000 14.800000 106.767671 +11.900000 14.900000 108.666795 +11.900000 15.000000 110.585919 + +12.000000 -5.000000 128.436296 +12.000000 -4.900000 126.345500 +12.000000 -4.800000 124.274705 +12.000000 -4.700000 122.223910 +12.000000 -4.600000 120.193115 +12.000000 -4.500000 118.182319 +12.000000 -4.400000 116.191524 +12.000000 -4.300000 114.220729 +12.000000 -4.200000 112.269934 +12.000000 -4.100000 110.339139 +12.000000 -4.000000 108.428343 +12.000000 -3.900000 106.537548 +12.000000 -3.800000 104.666753 +12.000000 -3.700000 102.815958 +12.000000 -3.600000 100.985162 +12.000000 -3.500000 99.174367 +12.000000 -3.400000 97.383572 +12.000000 -3.300000 95.612777 +12.000000 -3.200000 93.861982 +12.000000 -3.100000 92.131186 +12.000000 -3.000000 90.420391 +12.000000 -2.900000 88.729596 +12.000000 -2.800000 87.058801 +12.000000 -2.700000 85.408005 +12.000000 -2.600000 83.777210 +12.000000 -2.500000 82.166415 +12.000000 -2.400000 80.575620 +12.000000 -2.300000 79.004824 +12.000000 -2.200000 77.454029 +12.000000 -2.100000 75.923234 +12.000000 -2.000000 74.412439 +12.000000 -1.900000 72.921644 +12.000000 -1.800000 71.450848 +12.000000 -1.700000 70.000053 +12.000000 -1.600000 68.569258 +12.000000 -1.500000 67.158463 +12.000000 -1.400000 65.767667 +12.000000 -1.300000 64.396872 +12.000000 -1.200000 63.046077 +12.000000 -1.100000 61.715282 +12.000000 -1.000000 60.404486 +12.000000 -0.900000 59.113691 +12.000000 -0.800000 57.842896 +12.000000 -0.700000 56.592101 +12.000000 -0.600000 55.361306 +12.000000 -0.500000 54.150510 +12.000000 -0.400000 52.959715 +12.000000 -0.300000 51.788920 +12.000000 -0.200000 50.638125 +12.000000 -0.100000 49.507329 +12.000000 -0.000000 48.396534 +12.000000 0.100000 47.305739 +12.000000 0.200000 46.234944 +12.000000 0.300000 45.184148 +12.000000 0.400000 44.153353 +12.000000 0.500000 43.142558 +12.000000 0.600000 42.151763 +12.000000 0.700000 41.180968 +12.000000 0.800000 40.230172 +12.000000 0.900000 39.299377 +12.000000 1.000000 38.388582 +12.000000 1.100000 37.497787 +12.000000 1.200000 36.626991 +12.000000 1.300000 35.776196 +12.000000 1.400000 34.945401 +12.000000 1.500000 34.134606 +12.000000 1.600000 33.343811 +12.000000 1.700000 32.573015 +12.000000 1.800000 31.822220 +12.000000 1.900000 31.091425 +12.000000 2.000000 30.380630 +12.000000 2.100000 29.689834 +12.000000 2.200000 29.019039 +12.000000 2.300000 28.368244 +12.000000 2.400000 27.737449 +12.000000 2.500000 27.126653 +12.000000 2.600000 26.535858 +12.000000 2.700000 25.965063 +12.000000 2.800000 25.414268 +12.000000 2.900000 24.883473 +12.000000 3.000000 24.372677 +12.000000 3.100000 23.881882 +12.000000 3.200000 23.411087 +12.000000 3.300000 22.960292 +12.000000 3.400000 22.529496 +12.000000 3.500000 22.118701 +12.000000 3.600000 21.727906 +12.000000 3.700000 21.357111 +12.000000 3.800000 21.006315 +12.000000 3.900000 20.675520 +12.000000 4.000000 20.364725 +12.000000 4.100000 20.073930 +12.000000 4.200000 19.803135 +12.000000 4.300000 19.552339 +12.000000 4.400000 19.321544 +12.000000 4.500000 19.110749 +12.000000 4.600000 18.919954 +12.000000 4.700000 18.749158 +12.000000 4.800000 18.598363 +12.000000 4.900000 18.467568 +12.000000 5.000000 18.356773 +12.000000 5.100000 18.265977 +12.000000 5.200000 18.195182 +12.000000 5.300000 18.144387 +12.000000 5.400000 18.113592 +12.000000 5.500000 18.102797 +12.000000 5.600000 18.112001 +12.000000 5.700000 18.141206 +12.000000 5.800000 18.190411 +12.000000 5.900000 18.259616 +12.000000 6.000000 18.348820 +12.000000 6.100000 18.458025 +12.000000 6.200000 18.587230 +12.000000 6.300000 18.736435 +12.000000 6.400000 18.905640 +12.000000 6.500000 19.094844 +12.000000 6.600000 19.304049 +12.000000 6.700000 19.533254 +12.000000 6.800000 19.782459 +12.000000 6.900000 20.051663 +12.000000 7.000000 20.340868 +12.000000 7.100000 20.650073 +12.000000 7.200000 20.979278 +12.000000 7.300000 21.328482 +12.000000 7.400000 21.697687 +12.000000 7.500000 22.086892 +12.000000 7.600000 22.496097 +12.000000 7.700000 22.925302 +12.000000 7.800000 23.374506 +12.000000 7.900000 23.843711 +12.000000 8.000000 24.332916 +12.000000 8.100000 24.842121 +12.000000 8.200000 25.371325 +12.000000 8.300000 25.920530 +12.000000 8.400000 26.489735 +12.000000 8.500000 27.078940 +12.000000 8.600000 27.688144 +12.000000 8.700000 28.317349 +12.000000 8.800000 28.966554 +12.000000 8.900000 29.635759 +12.000000 9.000000 30.324964 +12.000000 9.100000 31.034168 +12.000000 9.200000 31.763373 +12.000000 9.300000 32.512578 +12.000000 9.400000 33.281783 +12.000000 9.500000 34.070987 +12.000000 9.600000 34.880192 +12.000000 9.700000 35.709397 +12.000000 9.800000 36.558602 +12.000000 9.900000 37.427806 +12.000000 10.000000 38.317011 +12.000000 10.100000 39.226216 +12.000000 10.200000 40.155421 +12.000000 10.300000 41.104626 +12.000000 10.400000 42.073830 +12.000000 10.500000 43.063035 +12.000000 10.600000 44.072240 +12.000000 10.700000 45.101445 +12.000000 10.800000 46.150649 +12.000000 10.900000 47.219854 +12.000000 11.000000 48.309059 +12.000000 11.100000 49.418264 +12.000000 11.200000 50.547469 +12.000000 11.300000 51.696673 +12.000000 11.400000 52.865878 +12.000000 11.500000 54.055083 +12.000000 11.600000 55.264288 +12.000000 11.700000 56.493492 +12.000000 11.800000 57.742697 +12.000000 11.900000 59.011902 +12.000000 12.000000 60.301107 +12.000000 12.100000 61.610311 +12.000000 12.200000 62.939516 +12.000000 12.300000 64.288721 +12.000000 12.400000 65.657926 +12.000000 12.500000 67.047131 +12.000000 12.600000 68.456335 +12.000000 12.700000 69.885540 +12.000000 12.800000 71.334745 +12.000000 12.900000 72.803950 +12.000000 13.000000 74.293154 +12.000000 13.100000 75.802359 +12.000000 13.200000 77.331564 +12.000000 13.300000 78.880769 +12.000000 13.400000 80.449973 +12.000000 13.500000 82.039178 +12.000000 13.600000 83.648383 +12.000000 13.700000 85.277588 +12.000000 13.800000 86.926793 +12.000000 13.900000 88.595997 +12.000000 14.000000 90.285202 +12.000000 14.100000 91.994407 +12.000000 14.200000 93.723612 +12.000000 14.300000 95.472816 +12.000000 14.400000 97.242021 +12.000000 14.500000 99.031226 +12.000000 14.600000 100.840431 +12.000000 14.700000 102.669635 +12.000000 14.800000 104.518840 +12.000000 14.900000 106.388045 +12.000000 15.000000 108.277250 + +12.100000 -5.000000 132.130324 +12.100000 -4.900000 130.009092 +12.100000 -4.800000 127.907861 +12.100000 -4.700000 125.826630 +12.100000 -4.600000 123.765399 +12.100000 -4.500000 121.724168 +12.100000 -4.400000 119.702937 +12.100000 -4.300000 117.701705 +12.100000 -4.200000 115.720474 +12.100000 -4.100000 113.759243 +12.100000 -4.000000 111.818012 +12.100000 -3.900000 109.896781 +12.100000 -3.800000 107.995550 +12.100000 -3.700000 106.114318 +12.100000 -3.600000 104.253087 +12.100000 -3.500000 102.411856 +12.100000 -3.400000 100.590625 +12.100000 -3.300000 98.789394 +12.100000 -3.200000 97.008162 +12.100000 -3.100000 95.246931 +12.100000 -3.000000 93.505700 +12.100000 -2.900000 91.784469 +12.100000 -2.800000 90.083238 +12.100000 -2.700000 88.402007 +12.100000 -2.600000 86.740775 +12.100000 -2.500000 85.099544 +12.100000 -2.400000 83.478313 +12.100000 -2.300000 81.877082 +12.100000 -2.200000 80.295851 +12.100000 -2.100000 78.734620 +12.100000 -2.000000 77.193388 +12.100000 -1.900000 75.672157 +12.100000 -1.800000 74.170926 +12.100000 -1.700000 72.689695 +12.100000 -1.600000 71.228464 +12.100000 -1.500000 69.787233 +12.100000 -1.400000 68.366001 +12.100000 -1.300000 66.964770 +12.100000 -1.200000 65.583539 +12.100000 -1.100000 64.222308 +12.100000 -1.000000 62.881077 +12.100000 -0.900000 61.559845 +12.100000 -0.800000 60.258614 +12.100000 -0.700000 58.977383 +12.100000 -0.600000 57.716152 +12.100000 -0.500000 56.474921 +12.100000 -0.400000 55.253690 +12.100000 -0.300000 54.052458 +12.100000 -0.200000 52.871227 +12.100000 -0.100000 51.709996 +12.100000 -0.000000 50.568765 +12.100000 0.100000 49.447534 +12.100000 0.200000 48.346303 +12.100000 0.300000 47.265071 +12.100000 0.400000 46.203840 +12.100000 0.500000 45.162609 +12.100000 0.600000 44.141378 +12.100000 0.700000 43.140147 +12.100000 0.800000 42.158916 +12.100000 0.900000 41.197684 +12.100000 1.000000 40.256453 +12.100000 1.100000 39.335222 +12.100000 1.200000 38.433991 +12.100000 1.300000 37.552760 +12.100000 1.400000 36.691528 +12.100000 1.500000 35.850297 +12.100000 1.600000 35.029066 +12.100000 1.700000 34.227835 +12.100000 1.800000 33.446604 +12.100000 1.900000 32.685373 +12.100000 2.000000 31.944141 +12.100000 2.100000 31.222910 +12.100000 2.200000 30.521679 +12.100000 2.300000 29.840448 +12.100000 2.400000 29.179217 +12.100000 2.500000 28.537986 +12.100000 2.600000 27.916754 +12.100000 2.700000 27.315523 +12.100000 2.800000 26.734292 +12.100000 2.900000 26.173061 +12.100000 3.000000 25.631830 +12.100000 3.100000 25.110599 +12.100000 3.200000 24.609367 +12.100000 3.300000 24.128136 +12.100000 3.400000 23.666905 +12.100000 3.500000 23.225674 +12.100000 3.600000 22.804443 +12.100000 3.700000 22.403211 +12.100000 3.800000 22.021980 +12.100000 3.900000 21.660749 +12.100000 4.000000 21.319518 +12.100000 4.100000 20.998287 +12.100000 4.200000 20.697056 +12.100000 4.300000 20.415824 +12.100000 4.400000 20.154593 +12.100000 4.500000 19.913362 +12.100000 4.600000 19.692131 +12.100000 4.700000 19.490900 +12.100000 4.800000 19.309669 +12.100000 4.900000 19.148437 +12.100000 5.000000 19.007206 +12.100000 5.100000 18.885975 +12.100000 5.200000 18.784744 +12.100000 5.300000 18.703513 +12.100000 5.400000 18.642282 +12.100000 5.500000 18.601050 +12.100000 5.600000 18.579819 +12.100000 5.700000 18.578588 +12.100000 5.800000 18.597357 +12.100000 5.900000 18.636126 +12.100000 6.000000 18.694894 +12.100000 6.100000 18.773663 +12.100000 6.200000 18.872432 +12.100000 6.300000 18.991201 +12.100000 6.400000 19.129970 +12.100000 6.500000 19.288739 +12.100000 6.600000 19.467507 +12.100000 6.700000 19.666276 +12.100000 6.800000 19.885045 +12.100000 6.900000 20.123814 +12.100000 7.000000 20.382583 +12.100000 7.100000 20.661352 +12.100000 7.200000 20.960120 +12.100000 7.300000 21.278889 +12.100000 7.400000 21.617658 +12.100000 7.500000 21.976427 +12.100000 7.600000 22.355196 +12.100000 7.700000 22.753965 +12.100000 7.800000 23.172733 +12.100000 7.900000 23.611502 +12.100000 8.000000 24.070271 +12.100000 8.100000 24.549040 +12.100000 8.200000 25.047809 +12.100000 8.300000 25.566577 +12.100000 8.400000 26.105346 +12.100000 8.500000 26.664115 +12.100000 8.600000 27.242884 +12.100000 8.700000 27.841653 +12.100000 8.800000 28.460422 +12.100000 8.900000 29.099190 +12.100000 9.000000 29.757959 +12.100000 9.100000 30.436728 +12.100000 9.200000 31.135497 +12.100000 9.300000 31.854266 +12.100000 9.400000 32.593035 +12.100000 9.500000 33.351803 +12.100000 9.600000 34.130572 +12.100000 9.700000 34.929341 +12.100000 9.800000 35.748110 +12.100000 9.900000 36.586879 +12.100000 10.000000 37.445648 +12.100000 10.100000 38.324416 +12.100000 10.200000 39.223185 +12.100000 10.300000 40.141954 +12.100000 10.400000 41.080723 +12.100000 10.500000 42.039492 +12.100000 10.600000 43.018260 +12.100000 10.700000 44.017029 +12.100000 10.800000 45.035798 +12.100000 10.900000 46.074567 +12.100000 11.000000 47.133336 +12.100000 11.100000 48.212105 +12.100000 11.200000 49.310873 +12.100000 11.300000 50.429642 +12.100000 11.400000 51.568411 +12.100000 11.500000 52.727180 +12.100000 11.600000 53.905949 +12.100000 11.700000 55.104718 +12.100000 11.800000 56.323486 +12.100000 11.900000 57.562255 +12.100000 12.000000 58.821024 +12.100000 12.100000 60.099793 +12.100000 12.200000 61.398562 +12.100000 12.300000 62.717331 +12.100000 12.400000 64.056099 +12.100000 12.500000 65.414868 +12.100000 12.600000 66.793637 +12.100000 12.700000 68.192406 +12.100000 12.800000 69.611175 +12.100000 12.900000 71.049943 +12.100000 13.000000 72.508712 +12.100000 13.100000 73.987481 +12.100000 13.200000 75.486250 +12.100000 13.300000 77.005019 +12.100000 13.400000 78.543788 +12.100000 13.500000 80.102556 +12.100000 13.600000 81.681325 +12.100000 13.700000 83.280094 +12.100000 13.800000 84.898863 +12.100000 13.900000 86.537632 +12.100000 14.000000 88.196401 +12.100000 14.100000 89.875169 +12.100000 14.200000 91.573938 +12.100000 14.300000 93.292707 +12.100000 14.400000 95.031476 +12.100000 14.500000 96.790245 +12.100000 14.600000 98.569014 +12.100000 14.700000 100.367782 +12.100000 14.800000 102.186551 +12.100000 14.900000 104.025320 +12.100000 15.000000 105.884089 + +12.200000 -5.000000 135.840831 +12.200000 -4.900000 133.688647 +12.200000 -4.800000 131.556463 +12.200000 -4.700000 129.444280 +12.200000 -4.600000 127.352096 +12.200000 -4.500000 125.279912 +12.200000 -4.400000 123.227728 +12.200000 -4.300000 121.195544 +12.200000 -4.200000 119.183360 +12.200000 -4.100000 117.191176 +12.200000 -4.000000 115.218993 +12.200000 -3.900000 113.266809 +12.200000 -3.800000 111.334625 +12.200000 -3.700000 109.422441 +12.200000 -3.600000 107.530257 +12.200000 -3.500000 105.658073 +12.200000 -3.400000 103.805889 +12.200000 -3.300000 101.973706 +12.200000 -3.200000 100.161522 +12.200000 -3.100000 98.369338 +12.200000 -3.000000 96.597154 +12.200000 -2.900000 94.844970 +12.200000 -2.800000 93.112786 +12.200000 -2.700000 91.400602 +12.200000 -2.600000 89.708419 +12.200000 -2.500000 88.036235 +12.200000 -2.400000 86.384051 +12.200000 -2.300000 84.751867 +12.200000 -2.200000 83.139683 +12.200000 -2.100000 81.547499 +12.200000 -2.000000 79.975315 +12.200000 -1.900000 78.423132 +12.200000 -1.800000 76.890948 +12.200000 -1.700000 75.378764 +12.200000 -1.600000 73.886580 +12.200000 -1.500000 72.414396 +12.200000 -1.400000 70.962212 +12.200000 -1.300000 69.530028 +12.200000 -1.200000 68.117845 +12.200000 -1.100000 66.725661 +12.200000 -1.000000 65.353477 +12.200000 -0.900000 64.001293 +12.200000 -0.800000 62.669109 +12.200000 -0.700000 61.356925 +12.200000 -0.600000 60.064741 +12.200000 -0.500000 58.792558 +12.200000 -0.400000 57.540374 +12.200000 -0.300000 56.308190 +12.200000 -0.200000 55.096006 +12.200000 -0.100000 53.903822 +12.200000 -0.000000 52.731638 +12.200000 0.100000 51.579454 +12.200000 0.200000 50.447271 +12.200000 0.300000 49.335087 +12.200000 0.400000 48.242903 +12.200000 0.500000 47.170719 +12.200000 0.600000 46.118535 +12.200000 0.700000 45.086351 +12.200000 0.800000 44.074167 +12.200000 0.900000 43.081984 +12.200000 1.000000 42.109800 +12.200000 1.100000 41.157616 +12.200000 1.200000 40.225432 +12.200000 1.300000 39.313248 +12.200000 1.400000 38.421064 +12.200000 1.500000 37.548880 +12.200000 1.600000 36.696697 +12.200000 1.700000 35.864513 +12.200000 1.800000 35.052329 +12.200000 1.900000 34.260145 +12.200000 2.000000 33.487961 +12.200000 2.100000 32.735777 +12.200000 2.200000 32.003593 +12.200000 2.300000 31.291410 +12.200000 2.400000 30.599226 +12.200000 2.500000 29.927042 +12.200000 2.600000 29.274858 +12.200000 2.700000 28.642674 +12.200000 2.800000 28.030490 +12.200000 2.900000 27.438306 +12.200000 3.000000 26.866123 +12.200000 3.100000 26.313939 +12.200000 3.200000 25.781755 +12.200000 3.300000 25.269571 +12.200000 3.400000 24.777387 +12.200000 3.500000 24.305203 +12.200000 3.600000 23.853019 +12.200000 3.700000 23.420836 +12.200000 3.800000 23.008652 +12.200000 3.900000 22.616468 +12.200000 4.000000 22.244284 +12.200000 4.100000 21.892100 +12.200000 4.200000 21.559916 +12.200000 4.300000 21.247732 +12.200000 4.400000 20.955549 +12.200000 4.500000 20.683365 +12.200000 4.600000 20.431181 +12.200000 4.700000 20.198997 +12.200000 4.800000 19.986813 +12.200000 4.900000 19.794629 +12.200000 5.000000 19.622446 +12.200000 5.100000 19.470262 +12.200000 5.200000 19.338078 +12.200000 5.300000 19.225894 +12.200000 5.400000 19.133710 +12.200000 5.500000 19.061526 +12.200000 5.600000 19.009342 +12.200000 5.700000 18.977159 +12.200000 5.800000 18.964975 +12.200000 5.900000 18.972791 +12.200000 6.000000 19.000607 +12.200000 6.100000 19.048423 +12.200000 6.200000 19.116239 +12.200000 6.300000 19.204055 +12.200000 6.400000 19.311872 +12.200000 6.500000 19.439688 +12.200000 6.600000 19.587504 +12.200000 6.700000 19.755320 +12.200000 6.800000 19.943136 +12.200000 6.900000 20.150952 +12.200000 7.000000 20.378768 +12.200000 7.100000 20.626585 +12.200000 7.200000 20.894401 +12.200000 7.300000 21.182217 +12.200000 7.400000 21.490033 +12.200000 7.500000 21.817849 +12.200000 7.600000 22.165665 +12.200000 7.700000 22.533481 +12.200000 7.800000 22.921298 +12.200000 7.900000 23.329114 +12.200000 8.000000 23.756930 +12.200000 8.100000 24.204746 +12.200000 8.200000 24.672562 +12.200000 8.300000 25.160378 +12.200000 8.400000 25.668194 +12.200000 8.500000 26.196011 +12.200000 8.600000 26.743827 +12.200000 8.700000 27.311643 +12.200000 8.800000 27.899459 +12.200000 8.900000 28.507275 +12.200000 9.000000 29.135091 +12.200000 9.100000 29.782907 +12.200000 9.200000 30.450724 +12.200000 9.300000 31.138540 +12.200000 9.400000 31.846356 +12.200000 9.500000 32.574172 +12.200000 9.600000 33.321988 +12.200000 9.700000 34.089804 +12.200000 9.800000 34.877620 +12.200000 9.900000 35.685437 +12.200000 10.000000 36.513253 +12.200000 10.100000 37.361069 +12.200000 10.200000 38.228885 +12.200000 10.300000 39.116701 +12.200000 10.400000 40.024517 +12.200000 10.500000 40.952333 +12.200000 10.600000 41.900150 +12.200000 10.700000 42.867966 +12.200000 10.800000 43.855782 +12.200000 10.900000 44.863598 +12.200000 11.000000 45.891414 +12.200000 11.100000 46.939230 +12.200000 11.200000 48.007046 +12.200000 11.300000 49.094863 +12.200000 11.400000 50.202679 +12.200000 11.500000 51.330495 +12.200000 11.600000 52.478311 +12.200000 11.700000 53.646127 +12.200000 11.800000 54.833943 +12.200000 11.900000 56.041759 +12.200000 12.000000 57.269576 +12.200000 12.100000 58.517392 +12.200000 12.200000 59.785208 +12.200000 12.300000 61.073024 +12.200000 12.400000 62.380840 +12.200000 12.500000 63.708656 +12.200000 12.600000 65.056472 +12.200000 12.700000 66.424289 +12.200000 12.800000 67.812105 +12.200000 12.900000 69.219921 +12.200000 13.000000 70.647737 +12.200000 13.100000 72.095553 +12.200000 13.200000 73.563369 +12.200000 13.300000 75.051185 +12.200000 13.400000 76.559002 +12.200000 13.500000 78.086818 +12.200000 13.600000 79.634634 +12.200000 13.700000 81.202450 +12.200000 13.800000 82.790266 +12.200000 13.900000 84.398082 +12.200000 14.000000 86.025898 +12.200000 14.100000 87.673715 +12.200000 14.200000 89.341531 +12.200000 14.300000 91.029347 +12.200000 14.400000 92.737163 +12.200000 14.500000 94.464979 +12.200000 14.600000 96.212795 +12.200000 14.700000 97.980611 +12.200000 14.800000 99.768428 +12.200000 14.900000 101.576244 +12.200000 15.000000 103.404060 + +12.300000 -5.000000 139.566339 +12.300000 -4.900000 137.382686 +12.300000 -4.800000 135.219032 +12.300000 -4.700000 133.075379 +12.300000 -4.600000 130.951726 +12.300000 -4.500000 128.848072 +12.300000 -4.400000 126.764419 +12.300000 -4.300000 124.700766 +12.300000 -4.200000 122.657113 +12.300000 -4.100000 120.633459 +12.300000 -4.000000 118.629806 +12.300000 -3.900000 116.646153 +12.300000 -3.800000 114.682499 +12.300000 -3.700000 112.738846 +12.300000 -3.600000 110.815193 +12.300000 -3.500000 108.911540 +12.300000 -3.400000 107.027886 +12.300000 -3.300000 105.164233 +12.300000 -3.200000 103.320580 +12.300000 -3.100000 101.496927 +12.300000 -3.000000 99.693273 +12.300000 -2.900000 97.909620 +12.300000 -2.800000 96.145967 +12.300000 -2.700000 94.402313 +12.300000 -2.600000 92.678660 +12.300000 -2.500000 90.975007 +12.300000 -2.400000 89.291354 +12.300000 -2.300000 87.627700 +12.300000 -2.200000 85.984047 +12.300000 -2.100000 84.360394 +12.300000 -2.000000 82.756740 +12.300000 -1.900000 81.173087 +12.300000 -1.800000 79.609434 +12.300000 -1.700000 78.065781 +12.300000 -1.600000 76.542127 +12.300000 -1.500000 75.038474 +12.300000 -1.400000 73.554821 +12.300000 -1.300000 72.091168 +12.300000 -1.200000 70.647514 +12.300000 -1.100000 69.223861 +12.300000 -1.000000 67.820208 +12.300000 -0.900000 66.436554 +12.300000 -0.800000 65.072901 +12.300000 -0.700000 63.729248 +12.300000 -0.600000 62.405595 +12.300000 -0.500000 61.101941 +12.300000 -0.400000 59.818288 +12.300000 -0.300000 58.554635 +12.300000 -0.200000 57.310982 +12.300000 -0.100000 56.087328 +12.300000 -0.000000 54.883675 +12.300000 0.100000 53.700022 +12.300000 0.200000 52.536368 +12.300000 0.300000 51.392715 +12.300000 0.400000 50.269062 +12.300000 0.500000 49.165409 +12.300000 0.600000 48.081755 +12.300000 0.700000 47.018102 +12.300000 0.800000 45.974449 +12.300000 0.900000 44.950795 +12.300000 1.000000 43.947142 +12.300000 1.100000 42.963489 +12.300000 1.200000 41.999836 +12.300000 1.300000 41.056182 +12.300000 1.400000 40.132529 +12.300000 1.500000 39.228876 +12.300000 1.600000 38.345223 +12.300000 1.700000 37.481569 +12.300000 1.800000 36.637916 +12.300000 1.900000 35.814263 +12.300000 2.000000 35.010609 +12.300000 2.100000 34.226956 +12.300000 2.200000 33.463303 +12.300000 2.300000 32.719650 +12.300000 2.400000 31.995996 +12.300000 2.500000 31.292343 +12.300000 2.600000 30.608690 +12.300000 2.700000 29.945036 +12.300000 2.800000 29.301383 +12.300000 2.900000 28.677730 +12.300000 3.000000 28.074077 +12.300000 3.100000 27.490423 +12.300000 3.200000 26.926770 +12.300000 3.300000 26.383117 +12.300000 3.400000 25.859464 +12.300000 3.500000 25.355810 +12.300000 3.600000 24.872157 +12.300000 3.700000 24.408504 +12.300000 3.800000 23.964850 +12.300000 3.900000 23.541197 +12.300000 4.000000 23.137544 +12.300000 4.100000 22.753891 +12.300000 4.200000 22.390237 +12.300000 4.300000 22.046584 +12.300000 4.400000 21.722931 +12.300000 4.500000 21.419277 +12.300000 4.600000 21.135624 +12.300000 4.700000 20.871971 +12.300000 4.800000 20.628318 +12.300000 4.900000 20.404664 +12.300000 5.000000 20.201011 +12.300000 5.100000 20.017358 +12.300000 5.200000 19.853705 +12.300000 5.300000 19.710051 +12.300000 5.400000 19.586398 +12.300000 5.500000 19.482745 +12.300000 5.600000 19.399091 +12.300000 5.700000 19.335438 +12.300000 5.800000 19.291785 +12.300000 5.900000 19.268132 +12.300000 6.000000 19.264478 +12.300000 6.100000 19.280825 +12.300000 6.200000 19.317172 +12.300000 6.300000 19.373518 +12.300000 6.400000 19.449865 +12.300000 6.500000 19.546212 +12.300000 6.600000 19.662559 +12.300000 6.700000 19.798905 +12.300000 6.800000 19.955252 +12.300000 6.900000 20.131599 +12.300000 7.000000 20.327946 +12.300000 7.100000 20.544292 +12.300000 7.200000 20.780639 +12.300000 7.300000 21.036986 +12.300000 7.400000 21.313332 +12.300000 7.500000 21.609679 +12.300000 7.600000 21.926026 +12.300000 7.700000 22.262373 +12.300000 7.800000 22.618719 +12.300000 7.900000 22.995066 +12.300000 8.000000 23.391413 +12.300000 8.100000 23.807759 +12.300000 8.200000 24.244106 +12.300000 8.300000 24.700453 +12.300000 8.400000 25.176800 +12.300000 8.500000 25.673146 +12.300000 8.600000 26.189493 +12.300000 8.700000 26.725840 +12.300000 8.800000 27.282187 +12.300000 8.900000 27.858533 +12.300000 9.000000 28.454880 +12.300000 9.100000 29.071227 +12.300000 9.200000 29.707573 +12.300000 9.300000 30.363920 +12.300000 9.400000 31.040267 +12.300000 9.500000 31.736614 +12.300000 9.600000 32.452960 +12.300000 9.700000 33.189307 +12.300000 9.800000 33.945654 +12.300000 9.900000 34.722000 +12.300000 10.000000 35.518347 +12.300000 10.100000 36.334694 +12.300000 10.200000 37.171041 +12.300000 10.300000 38.027387 +12.300000 10.400000 38.903734 +12.300000 10.500000 39.800081 +12.300000 10.600000 40.716428 +12.300000 10.700000 41.652774 +12.300000 10.800000 42.609121 +12.300000 10.900000 43.585468 +12.300000 11.000000 44.581814 +12.300000 11.100000 45.598161 +12.300000 11.200000 46.634508 +12.300000 11.300000 47.690855 +12.300000 11.400000 48.767201 +12.300000 11.500000 49.863548 +12.300000 11.600000 50.979895 +12.300000 11.700000 52.116241 +12.300000 11.800000 53.272588 +12.300000 11.900000 54.448935 +12.300000 12.000000 55.645282 +12.300000 12.100000 56.861628 +12.300000 12.200000 58.097975 +12.300000 12.300000 59.354322 +12.300000 12.400000 60.630669 +12.300000 12.500000 61.927015 +12.300000 12.600000 63.243362 +12.300000 12.700000 64.579709 +12.300000 12.800000 65.936055 +12.300000 12.900000 67.312402 +12.300000 13.000000 68.708749 +12.300000 13.100000 70.125096 +12.300000 13.200000 71.561442 +12.300000 13.300000 73.017789 +12.300000 13.400000 74.494136 +12.300000 13.500000 75.990482 +12.300000 13.600000 77.506829 +12.300000 13.700000 79.043176 +12.300000 13.800000 80.599523 +12.300000 13.900000 82.175869 +12.300000 14.000000 83.772216 +12.300000 14.100000 85.388563 +12.300000 14.200000 87.024910 +12.300000 14.300000 88.681256 +12.300000 14.400000 90.357603 +12.300000 14.500000 92.053950 +12.300000 14.600000 93.770296 +12.300000 14.700000 95.506643 +12.300000 14.800000 97.262990 +12.300000 14.900000 99.039337 +12.300000 15.000000 100.835683 + +12.400000 -5.000000 143.306302 +12.400000 -4.900000 141.090663 +12.400000 -4.800000 138.895023 +12.400000 -4.700000 136.719384 +12.400000 -4.600000 134.563744 +12.400000 -4.500000 132.428105 +12.400000 -4.400000 130.312465 +12.400000 -4.300000 128.216826 +12.400000 -4.200000 126.141187 +12.400000 -4.100000 124.085547 +12.400000 -4.000000 122.049908 +12.400000 -3.900000 120.034268 +12.400000 -3.800000 118.038629 +12.400000 -3.700000 116.062989 +12.400000 -3.600000 114.107350 +12.400000 -3.500000 112.171711 +12.400000 -3.400000 110.256071 +12.400000 -3.300000 108.360432 +12.400000 -3.200000 106.484792 +12.400000 -3.100000 104.629153 +12.400000 -3.000000 102.793513 +12.400000 -2.900000 100.977874 +12.400000 -2.800000 99.182235 +12.400000 -2.700000 97.406595 +12.400000 -2.600000 95.650956 +12.400000 -2.500000 93.915316 +12.400000 -2.400000 92.199677 +12.400000 -2.300000 90.504037 +12.400000 -2.200000 88.828398 +12.400000 -2.100000 87.172758 +12.400000 -2.000000 85.537119 +12.400000 -1.900000 83.921480 +12.400000 -1.800000 82.325840 +12.400000 -1.700000 80.750201 +12.400000 -1.600000 79.194561 +12.400000 -1.500000 77.658922 +12.400000 -1.400000 76.143282 +12.400000 -1.300000 74.647643 +12.400000 -1.200000 73.172004 +12.400000 -1.100000 71.716364 +12.400000 -1.000000 70.280725 +12.400000 -0.900000 68.865085 +12.400000 -0.800000 67.469446 +12.400000 -0.700000 66.093806 +12.400000 -0.600000 64.738167 +12.400000 -0.500000 63.402527 +12.400000 -0.400000 62.086888 +12.400000 -0.300000 60.791249 +12.400000 -0.200000 59.515609 +12.400000 -0.100000 58.259970 +12.400000 -0.000000 57.024330 +12.400000 0.100000 55.808691 +12.400000 0.200000 54.613051 +12.400000 0.300000 53.437412 +12.400000 0.400000 52.281773 +12.400000 0.500000 51.146133 +12.400000 0.600000 50.030494 +12.400000 0.700000 48.934854 +12.400000 0.800000 47.859215 +12.400000 0.900000 46.803575 +12.400000 1.000000 45.767936 +12.400000 1.100000 44.752296 +12.400000 1.200000 43.756657 +12.400000 1.300000 42.781018 +12.400000 1.400000 41.825378 +12.400000 1.500000 40.889739 +12.400000 1.600000 39.974099 +12.400000 1.700000 39.078460 +12.400000 1.800000 38.202820 +12.400000 1.900000 37.347181 +12.400000 2.000000 36.511542 +12.400000 2.100000 35.695902 +12.400000 2.200000 34.900263 +12.400000 2.300000 34.124623 +12.400000 2.400000 33.368984 +12.400000 2.500000 32.633344 +12.400000 2.600000 31.917705 +12.400000 2.700000 31.222065 +12.400000 2.800000 30.546426 +12.400000 2.900000 29.890787 +12.400000 3.000000 29.255147 +12.400000 3.100000 28.639508 +12.400000 3.200000 28.043868 +12.400000 3.300000 27.468229 +12.400000 3.400000 26.912589 +12.400000 3.500000 26.376950 +12.400000 3.600000 25.861311 +12.400000 3.700000 25.365671 +12.400000 3.800000 24.890032 +12.400000 3.900000 24.434392 +12.400000 4.000000 23.998753 +12.400000 4.100000 23.583113 +12.400000 4.200000 23.187474 +12.400000 4.300000 22.811835 +12.400000 4.400000 22.456195 +12.400000 4.500000 22.120556 +12.400000 4.600000 21.804916 +12.400000 4.700000 21.509277 +12.400000 4.800000 21.233637 +12.400000 4.900000 20.977998 +12.400000 5.000000 20.742358 +12.400000 5.100000 20.526719 +12.400000 5.200000 20.331080 +12.400000 5.300000 20.155440 +12.400000 5.400000 19.999801 +12.400000 5.500000 19.864161 +12.400000 5.600000 19.748522 +12.400000 5.700000 19.652882 +12.400000 5.800000 19.577243 +12.400000 5.900000 19.521604 +12.400000 6.000000 19.485964 +12.400000 6.100000 19.470325 +12.400000 6.200000 19.474685 +12.400000 6.300000 19.499046 +12.400000 6.400000 19.543406 +12.400000 6.500000 19.607767 +12.400000 6.600000 19.692127 +12.400000 6.700000 19.796488 +12.400000 6.800000 19.920849 +12.400000 6.900000 20.065209 +12.400000 7.000000 20.229570 +12.400000 7.100000 20.413930 +12.400000 7.200000 20.618291 +12.400000 7.300000 20.842651 +12.400000 7.400000 21.087012 +12.400000 7.500000 21.351373 +12.400000 7.600000 21.635733 +12.400000 7.700000 21.940094 +12.400000 7.800000 22.264454 +12.400000 7.900000 22.608815 +12.400000 8.000000 22.973175 +12.400000 8.100000 23.357536 +12.400000 8.200000 23.761896 +12.400000 8.300000 24.186257 +12.400000 8.400000 24.630618 +12.400000 8.500000 25.094978 +12.400000 8.600000 25.579339 +12.400000 8.700000 26.083699 +12.400000 8.800000 26.608060 +12.400000 8.900000 27.152420 +12.400000 9.000000 27.716781 +12.400000 9.100000 28.301142 +12.400000 9.200000 28.905502 +12.400000 9.300000 29.529863 +12.400000 9.400000 30.174223 +12.400000 9.500000 30.838584 +12.400000 9.600000 31.522944 +12.400000 9.700000 32.227305 +12.400000 9.800000 32.951666 +12.400000 9.900000 33.696026 +12.400000 10.000000 34.460387 +12.400000 10.100000 35.244747 +12.400000 10.200000 36.049108 +12.400000 10.300000 36.873468 +12.400000 10.400000 37.717829 +12.400000 10.500000 38.582189 +12.400000 10.600000 39.466550 +12.400000 10.700000 40.370911 +12.400000 10.800000 41.295271 +12.400000 10.900000 42.239632 +12.400000 11.000000 43.203992 +12.400000 11.100000 44.188353 +12.400000 11.200000 45.192713 +12.400000 11.300000 46.217074 +12.400000 11.400000 47.261435 +12.400000 11.500000 48.325795 +12.400000 11.600000 49.410156 +12.400000 11.700000 50.514516 +12.400000 11.800000 51.638877 +12.400000 11.900000 52.783237 +12.400000 12.000000 53.947598 +12.400000 12.100000 55.131958 +12.400000 12.200000 56.336319 +12.400000 12.300000 57.560680 +12.400000 12.400000 58.805040 +12.400000 12.500000 60.069401 +12.400000 12.600000 61.353761 +12.400000 12.700000 62.658122 +12.400000 12.800000 63.982482 +12.400000 12.900000 65.326843 +12.400000 13.000000 66.691204 +12.400000 13.100000 68.075564 +12.400000 13.200000 69.479925 +12.400000 13.300000 70.904285 +12.400000 13.400000 72.348646 +12.400000 13.500000 73.813006 +12.400000 13.600000 75.297367 +12.400000 13.700000 76.801727 +12.400000 13.800000 78.326088 +12.400000 13.900000 79.870449 +12.400000 14.000000 81.434809 +12.400000 14.100000 83.019170 +12.400000 14.200000 84.623530 +12.400000 14.300000 86.247891 +12.400000 14.400000 87.892251 +12.400000 14.500000 89.556612 +12.400000 14.600000 91.240973 +12.400000 14.700000 92.945333 +12.400000 14.800000 94.669694 +12.400000 14.900000 96.414054 +12.400000 15.000000 98.178415 + +12.500000 -5.000000 147.061141 +12.500000 -4.900000 144.812999 +12.500000 -4.800000 142.584857 +12.500000 -4.700000 140.376714 +12.500000 -4.600000 138.188572 +12.500000 -4.500000 136.020430 +12.500000 -4.400000 133.872287 +12.500000 -4.300000 131.744145 +12.500000 -4.200000 129.636003 +12.500000 -4.100000 127.547860 +12.500000 -4.000000 125.479718 +12.500000 -3.900000 123.431576 +12.500000 -3.800000 121.403433 +12.500000 -3.700000 119.395291 +12.500000 -3.600000 117.407149 +12.500000 -3.500000 115.439006 +12.500000 -3.400000 113.490864 +12.500000 -3.300000 111.562722 +12.500000 -3.200000 109.654579 +12.500000 -3.100000 107.766437 +12.500000 -3.000000 105.898295 +12.500000 -2.900000 104.050152 +12.500000 -2.800000 102.222010 +12.500000 -2.700000 100.413868 +12.500000 -2.600000 98.625725 +12.500000 -2.500000 96.857583 +12.500000 -2.400000 95.109441 +12.500000 -2.300000 93.381298 +12.500000 -2.200000 91.673156 +12.500000 -2.100000 89.985014 +12.500000 -2.000000 88.316871 +12.500000 -1.900000 86.668729 +12.500000 -1.800000 85.040587 +12.500000 -1.700000 83.432444 +12.500000 -1.600000 81.844302 +12.500000 -1.500000 80.276160 +12.500000 -1.400000 78.728017 +12.500000 -1.300000 77.199875 +12.500000 -1.200000 75.691733 +12.500000 -1.100000 74.203590 +12.500000 -1.000000 72.735448 +12.500000 -0.900000 71.287306 +12.500000 -0.800000 69.859163 +12.500000 -0.700000 68.451021 +12.500000 -0.600000 67.062879 +12.500000 -0.500000 65.694736 +12.500000 -0.400000 64.346594 +12.500000 -0.300000 63.018452 +12.500000 -0.200000 61.710309 +12.500000 -0.100000 60.422167 +12.500000 -0.000000 59.154025 +12.500000 0.100000 57.905882 +12.500000 0.200000 56.677740 +12.500000 0.300000 55.469598 +12.500000 0.400000 54.281455 +12.500000 0.500000 53.113313 +12.500000 0.600000 51.965171 +12.500000 0.700000 50.837028 +12.500000 0.800000 49.728886 +12.500000 0.900000 48.640744 +12.500000 1.000000 47.572601 +12.500000 1.100000 46.524459 +12.500000 1.200000 45.496317 +12.500000 1.300000 44.488174 +12.500000 1.400000 43.500032 +12.500000 1.500000 42.531890 +12.500000 1.600000 41.583747 +12.500000 1.700000 40.655605 +12.500000 1.800000 39.747463 +12.500000 1.900000 38.859320 +12.500000 2.000000 37.991178 +12.500000 2.100000 37.143036 +12.500000 2.200000 36.314893 +12.500000 2.300000 35.506751 +12.500000 2.400000 34.718609 +12.500000 2.500000 33.950466 +12.500000 2.600000 33.202324 +12.500000 2.700000 32.474182 +12.500000 2.800000 31.766039 +12.500000 2.900000 31.077897 +12.500000 3.000000 30.409755 +12.500000 3.100000 29.761612 +12.500000 3.200000 29.133470 +12.500000 3.300000 28.525328 +12.500000 3.400000 27.937185 +12.500000 3.500000 27.369043 +12.500000 3.600000 26.820901 +12.500000 3.700000 26.292758 +12.500000 3.800000 25.784616 +12.500000 3.900000 25.296474 +12.500000 4.000000 24.828331 +12.500000 4.100000 24.380189 +12.500000 4.200000 23.952047 +12.500000 4.300000 23.543904 +12.500000 4.400000 23.155762 +12.500000 4.500000 22.787620 +12.500000 4.600000 22.439477 +12.500000 4.700000 22.111335 +12.500000 4.800000 21.803193 +12.500000 4.900000 21.515050 +12.500000 5.000000 21.246908 +12.500000 5.100000 20.998766 +12.500000 5.200000 20.770623 +12.500000 5.300000 20.562481 +12.500000 5.400000 20.374339 +12.500000 5.500000 20.206196 +12.500000 5.600000 20.058054 +12.500000 5.700000 19.929912 +12.500000 5.800000 19.821769 +12.500000 5.900000 19.733627 +12.500000 6.000000 19.665485 +12.500000 6.100000 19.617342 +12.500000 6.200000 19.589200 +12.500000 6.300000 19.581058 +12.500000 6.400000 19.592915 +12.500000 6.500000 19.624773 +12.500000 6.600000 19.676631 +12.500000 6.700000 19.748488 +12.500000 6.800000 19.840346 +12.500000 6.900000 19.952204 +12.500000 7.000000 20.084061 +12.500000 7.100000 20.235919 +12.500000 7.200000 20.407777 +12.500000 7.300000 20.599634 +12.500000 7.400000 20.811492 +12.500000 7.500000 21.043350 +12.500000 7.600000 21.295207 +12.500000 7.700000 21.567065 +12.500000 7.800000 21.858923 +12.500000 7.900000 22.170780 +12.500000 8.000000 22.502638 +12.500000 8.100000 22.854496 +12.500000 8.200000 23.226353 +12.500000 8.300000 23.618211 +12.500000 8.400000 24.030069 +12.500000 8.500000 24.461926 +12.500000 8.600000 24.913784 +12.500000 8.700000 25.385642 +12.500000 8.800000 25.877499 +12.500000 8.900000 26.389357 +12.500000 9.000000 26.921215 +12.500000 9.100000 27.473072 +12.500000 9.200000 28.044930 +12.500000 9.300000 28.636788 +12.500000 9.400000 29.248645 +12.500000 9.500000 29.880503 +12.500000 9.600000 30.532361 +12.500000 9.700000 31.204218 +12.500000 9.800000 31.896076 +12.500000 9.900000 32.607934 +12.500000 10.000000 33.339791 +12.500000 10.100000 34.091649 +12.500000 10.200000 34.863507 +12.500000 10.300000 35.655364 +12.500000 10.400000 36.467222 +12.500000 10.500000 37.299080 +12.500000 10.600000 38.150937 +12.500000 10.700000 39.022795 +12.500000 10.800000 39.914653 +12.500000 10.900000 40.826510 +12.500000 11.000000 41.758368 +12.500000 11.100000 42.710226 +12.500000 11.200000 43.682083 +12.500000 11.300000 44.673941 +12.500000 11.400000 45.685799 +12.500000 11.500000 46.717656 +12.500000 11.600000 47.769514 +12.500000 11.700000 48.841372 +12.500000 11.800000 49.933229 +12.500000 11.900000 51.045087 +12.500000 12.000000 52.176945 +12.500000 12.100000 53.328802 +12.500000 12.200000 54.500660 +12.500000 12.300000 55.692518 +12.500000 12.400000 56.904375 +12.500000 12.500000 58.136233 +12.500000 12.600000 59.388091 +12.500000 12.700000 60.659948 +12.500000 12.800000 61.951806 +12.500000 12.900000 63.263664 +12.500000 13.000000 64.595521 +12.500000 13.100000 65.947379 +12.500000 13.200000 67.319237 +12.500000 13.300000 68.711094 +12.500000 13.400000 70.122952 +12.500000 13.500000 71.554810 +12.500000 13.600000 73.006667 +12.500000 13.700000 74.478525 +12.500000 13.800000 75.970383 +12.500000 13.900000 77.482240 +12.500000 14.000000 79.014098 +12.500000 14.100000 80.565956 +12.500000 14.200000 82.137813 +12.500000 14.300000 83.729671 +12.500000 14.400000 85.341529 +12.500000 14.500000 86.973386 +12.500000 14.600000 88.625244 +12.500000 14.700000 90.297102 +12.500000 14.800000 91.988959 +12.500000 14.900000 93.700817 +12.500000 15.000000 95.432675 + +12.600000 -5.000000 150.832263 +12.600000 -4.900000 148.551101 +12.600000 -4.800000 146.289939 +12.600000 -4.700000 144.048777 +12.600000 -4.600000 141.827615 +12.600000 -4.500000 139.626453 +12.600000 -4.400000 137.445291 +12.600000 -4.300000 135.284129 +12.600000 -4.200000 133.142967 +12.600000 -4.100000 131.021805 +12.600000 -4.000000 128.920643 +12.600000 -3.900000 126.839481 +12.600000 -3.800000 124.778319 +12.600000 -3.700000 122.737157 +12.600000 -3.600000 120.715995 +12.600000 -3.500000 118.714833 +12.600000 -3.400000 116.733671 +12.600000 -3.300000 114.772509 +12.600000 -3.200000 112.831347 +12.600000 -3.100000 110.910185 +12.600000 -3.000000 109.009023 +12.600000 -2.900000 107.127861 +12.600000 -2.800000 105.266699 +12.600000 -2.700000 103.425537 +12.600000 -2.600000 101.604375 +12.600000 -2.500000 99.803213 +12.600000 -2.400000 98.022051 +12.600000 -2.300000 96.260889 +12.600000 -2.200000 94.519727 +12.600000 -2.100000 92.798566 +12.600000 -2.000000 91.097404 +12.600000 -1.900000 89.416242 +12.600000 -1.800000 87.755080 +12.600000 -1.700000 86.113918 +12.600000 -1.600000 84.492756 +12.600000 -1.500000 82.891594 +12.600000 -1.400000 81.310432 +12.600000 -1.300000 79.749270 +12.600000 -1.200000 78.208108 +12.600000 -1.100000 76.686946 +12.600000 -1.000000 75.185784 +12.600000 -0.900000 73.704622 +12.600000 -0.800000 72.243460 +12.600000 -0.700000 70.802298 +12.600000 -0.600000 69.381136 +12.600000 -0.500000 67.979974 +12.600000 -0.400000 66.598812 +12.600000 -0.300000 65.237650 +12.600000 -0.200000 63.896488 +12.600000 -0.100000 62.575326 +12.600000 -0.000000 61.274164 +12.600000 0.100000 59.993002 +12.600000 0.200000 58.731840 +12.600000 0.300000 57.490678 +12.600000 0.400000 56.269516 +12.600000 0.500000 55.068354 +12.600000 0.600000 53.887192 +12.600000 0.700000 52.726030 +12.600000 0.800000 51.584868 +12.600000 0.900000 50.463706 +12.600000 1.000000 49.362545 +12.600000 1.100000 48.281383 +12.600000 1.200000 47.220221 +12.600000 1.300000 46.179059 +12.600000 1.400000 45.157897 +12.600000 1.500000 44.156735 +12.600000 1.600000 43.175573 +12.600000 1.700000 42.214411 +12.600000 1.800000 41.273249 +12.600000 1.900000 40.352087 +12.600000 2.000000 39.450925 +12.600000 2.100000 38.569763 +12.600000 2.200000 37.708601 +12.600000 2.300000 36.867439 +12.600000 2.400000 36.046277 +12.600000 2.500000 35.245115 +12.600000 2.600000 34.463953 +12.600000 2.700000 33.702791 +12.600000 2.800000 32.961629 +12.600000 2.900000 32.240467 +12.600000 3.000000 31.539305 +12.600000 3.100000 30.858143 +12.600000 3.200000 30.196981 +12.600000 3.300000 29.555819 +12.600000 3.400000 28.934657 +12.600000 3.500000 28.333495 +12.600000 3.600000 27.752333 +12.600000 3.700000 27.191171 +12.600000 3.800000 26.650009 +12.600000 3.900000 26.128847 +12.600000 4.000000 25.627685 +12.600000 4.100000 25.146523 +12.600000 4.200000 24.685362 +12.600000 4.300000 24.244200 +12.600000 4.400000 23.823038 +12.600000 4.500000 23.421876 +12.600000 4.600000 23.040714 +12.600000 4.700000 22.679552 +12.600000 4.800000 22.338390 +12.600000 4.900000 22.017228 +12.600000 5.000000 21.716066 +12.600000 5.100000 21.434904 +12.600000 5.200000 21.173742 +12.600000 5.300000 20.932580 +12.600000 5.400000 20.711418 +12.600000 5.500000 20.510256 +12.600000 5.600000 20.329094 +12.600000 5.700000 20.167932 +12.600000 5.800000 20.026770 +12.600000 5.900000 19.905608 +12.600000 6.000000 19.804446 +12.600000 6.100000 19.723284 +12.600000 6.200000 19.662122 +12.600000 6.300000 19.620960 +12.600000 6.400000 19.599798 +12.600000 6.500000 19.598636 +12.600000 6.600000 19.617474 +12.600000 6.700000 19.656312 +12.600000 6.800000 19.715150 +12.600000 6.900000 19.793988 +12.600000 7.000000 19.892826 +12.600000 7.100000 20.011664 +12.600000 7.200000 20.150502 +12.600000 7.300000 20.309340 +12.600000 7.400000 20.488179 +12.600000 7.500000 20.687017 +12.600000 7.600000 20.905855 +12.600000 7.700000 21.144693 +12.600000 7.800000 21.403531 +12.600000 7.900000 21.682369 +12.600000 8.000000 21.981207 +12.600000 8.100000 22.300045 +12.600000 8.200000 22.638883 +12.600000 8.300000 22.997721 +12.600000 8.400000 23.376559 +12.600000 8.500000 23.775397 +12.600000 8.600000 24.194235 +12.600000 8.700000 24.633073 +12.600000 8.800000 25.091911 +12.600000 8.900000 25.570749 +12.600000 9.000000 26.069587 +12.600000 9.100000 26.588425 +12.600000 9.200000 27.127263 +12.600000 9.300000 27.686101 +12.600000 9.400000 28.264939 +12.600000 9.500000 28.863777 +12.600000 9.600000 29.482615 +12.600000 9.700000 30.121453 +12.600000 9.800000 30.780291 +12.600000 9.900000 31.459129 +12.600000 10.000000 32.157967 +12.600000 10.100000 32.876805 +12.600000 10.200000 33.615643 +12.600000 10.300000 34.374481 +12.600000 10.400000 35.153319 +12.600000 10.500000 35.952158 +12.600000 10.600000 36.770996 +12.600000 10.700000 37.609834 +12.600000 10.800000 38.468672 +12.600000 10.900000 39.347510 +12.600000 11.000000 40.246348 +12.600000 11.100000 41.165186 +12.600000 11.200000 42.104024 +12.600000 11.300000 43.062862 +12.600000 11.400000 44.041700 +12.600000 11.500000 45.040538 +12.600000 11.600000 46.059376 +12.600000 11.700000 47.098214 +12.600000 11.800000 48.157052 +12.600000 11.900000 49.235890 +12.600000 12.000000 50.334728 +12.600000 12.100000 51.453566 +12.600000 12.200000 52.592404 +12.600000 12.300000 53.751242 +12.600000 12.400000 54.930080 +12.600000 12.500000 56.128918 +12.600000 12.600000 57.347756 +12.600000 12.700000 58.586594 +12.600000 12.800000 59.845432 +12.600000 12.900000 61.124270 +12.600000 13.000000 62.423108 +12.600000 13.100000 63.741946 +12.600000 13.200000 65.080784 +12.600000 13.300000 66.439622 +12.600000 13.400000 67.818460 +12.600000 13.500000 69.217298 +12.600000 13.600000 70.636136 +12.600000 13.700000 72.074975 +12.600000 13.800000 73.533813 +12.600000 13.900000 75.012651 +12.600000 14.000000 76.511489 +12.600000 14.100000 78.030327 +12.600000 14.200000 79.569165 +12.600000 14.300000 81.128003 +12.600000 14.400000 82.706841 +12.600000 14.500000 84.305679 +12.600000 14.600000 85.924517 +12.600000 14.700000 87.563355 +12.600000 14.800000 89.222193 +12.600000 14.900000 90.901031 +12.600000 15.000000 92.599869 + +12.700000 -5.000000 154.622068 +12.700000 -4.900000 152.307370 +12.700000 -4.800000 150.012671 +12.700000 -4.700000 147.737973 +12.700000 -4.600000 145.483275 +12.700000 -4.500000 143.248576 +12.700000 -4.400000 141.033878 +12.700000 -4.300000 138.839180 +12.700000 -4.200000 136.664481 +12.700000 -4.100000 134.509783 +12.700000 -4.000000 132.375085 +12.700000 -3.900000 130.260386 +12.700000 -3.800000 128.165688 +12.700000 -3.700000 126.090990 +12.700000 -3.600000 124.036291 +12.700000 -3.500000 122.001593 +12.700000 -3.400000 119.986895 +12.700000 -3.300000 117.992196 +12.700000 -3.200000 116.017498 +12.700000 -3.100000 114.062800 +12.700000 -3.000000 112.128101 +12.700000 -2.900000 110.213403 +12.700000 -2.800000 108.318705 +12.700000 -2.700000 106.444006 +12.700000 -2.600000 104.589308 +12.700000 -2.500000 102.754610 +12.700000 -2.400000 100.939911 +12.700000 -2.300000 99.145213 +12.700000 -2.200000 97.370514 +12.700000 -2.100000 95.615816 +12.700000 -2.000000 93.881118 +12.700000 -1.900000 92.166419 +12.700000 -1.800000 90.471721 +12.700000 -1.700000 88.797023 +12.700000 -1.600000 87.142324 +12.700000 -1.500000 85.507626 +12.700000 -1.400000 83.892928 +12.700000 -1.300000 82.298229 +12.700000 -1.200000 80.723531 +12.700000 -1.100000 79.168833 +12.700000 -1.000000 77.634134 +12.700000 -0.900000 76.119436 +12.700000 -0.800000 74.624738 +12.700000 -0.700000 73.150039 +12.700000 -0.600000 71.695341 +12.700000 -0.500000 70.260643 +12.700000 -0.400000 68.845944 +12.700000 -0.300000 67.451246 +12.700000 -0.200000 66.076548 +12.700000 -0.100000 64.721849 +12.700000 -0.000000 63.387151 +12.700000 0.100000 62.072453 +12.700000 0.200000 60.777754 +12.700000 0.300000 59.503056 +12.700000 0.400000 58.248358 +12.700000 0.500000 57.013659 +12.700000 0.600000 55.798961 +12.700000 0.700000 54.604263 +12.700000 0.800000 53.429564 +12.700000 0.900000 52.274866 +12.700000 1.000000 51.140168 +12.700000 1.100000 50.025469 +12.700000 1.200000 48.930771 +12.700000 1.300000 47.856073 +12.700000 1.400000 46.801374 +12.700000 1.500000 45.766676 +12.700000 1.600000 44.751978 +12.700000 1.700000 43.757279 +12.700000 1.800000 42.782581 +12.700000 1.900000 41.827882 +12.700000 2.000000 40.893184 +12.700000 2.100000 39.978486 +12.700000 2.200000 39.083787 +12.700000 2.300000 38.209089 +12.700000 2.400000 37.354391 +12.700000 2.500000 36.519692 +12.700000 2.600000 35.704994 +12.700000 2.700000 34.910296 +12.700000 2.800000 34.135597 +12.700000 2.900000 33.380899 +12.700000 3.000000 32.646201 +12.700000 3.100000 31.931502 +12.700000 3.200000 31.236804 +12.700000 3.300000 30.562106 +12.700000 3.400000 29.907407 +12.700000 3.500000 29.272709 +12.700000 3.600000 28.658011 +12.700000 3.700000 28.063312 +12.700000 3.800000 27.488614 +12.700000 3.900000 26.933916 +12.700000 4.000000 26.399217 +12.700000 4.100000 25.884519 +12.700000 4.200000 25.389821 +12.700000 4.300000 24.915122 +12.700000 4.400000 24.460424 +12.700000 4.500000 24.025726 +12.700000 4.600000 23.611027 +12.700000 4.700000 23.216329 +12.700000 4.800000 22.841631 +12.700000 4.900000 22.486932 +12.700000 5.000000 22.152234 +12.700000 5.100000 21.837536 +12.700000 5.200000 21.542837 +12.700000 5.300000 21.268139 +12.700000 5.400000 21.013441 +12.700000 5.500000 20.778742 +12.700000 5.600000 20.564044 +12.700000 5.700000 20.369346 +12.700000 5.800000 20.194647 +12.700000 5.900000 20.039949 +12.700000 6.000000 19.905250 +12.700000 6.100000 19.790552 +12.700000 6.200000 19.695854 +12.700000 6.300000 19.621155 +12.700000 6.400000 19.566457 +12.700000 6.500000 19.531759 +12.700000 6.600000 19.517060 +12.700000 6.700000 19.522362 +12.700000 6.800000 19.547664 +12.700000 6.900000 19.592965 +12.700000 7.000000 19.658267 +12.700000 7.100000 19.743569 +12.700000 7.200000 19.848870 +12.700000 7.300000 19.974172 +12.700000 7.400000 20.119474 +12.700000 7.500000 20.284775 +12.700000 7.600000 20.470077 +12.700000 7.700000 20.675379 +12.700000 7.800000 20.900680 +12.700000 7.900000 21.145982 +12.700000 8.000000 21.411284 +12.700000 8.100000 21.696585 +12.700000 8.200000 22.001887 +12.700000 8.300000 22.327189 +12.700000 8.400000 22.672490 +12.700000 8.500000 23.037792 +12.700000 8.600000 23.423094 +12.700000 8.700000 23.828395 +12.700000 8.800000 24.253697 +12.700000 8.900000 24.698999 +12.700000 9.000000 25.164300 +12.700000 9.100000 25.649602 +12.700000 9.200000 26.154904 +12.700000 9.300000 26.680205 +12.700000 9.400000 27.225507 +12.700000 9.500000 27.790809 +12.700000 9.600000 28.376110 +12.700000 9.700000 28.981412 +12.700000 9.800000 29.606714 +12.700000 9.900000 30.252015 +12.700000 10.000000 30.917317 +12.700000 10.100000 31.602618 +12.700000 10.200000 32.307920 +12.700000 10.300000 33.033222 +12.700000 10.400000 33.778523 +12.700000 10.500000 34.543825 +12.700000 10.600000 35.329127 +12.700000 10.700000 36.134428 +12.700000 10.800000 36.959730 +12.700000 10.900000 37.805032 +12.700000 11.000000 38.670333 +12.700000 11.100000 39.555635 +12.700000 11.200000 40.460937 +12.700000 11.300000 41.386238 +12.700000 11.400000 42.331540 +12.700000 11.500000 43.296842 +12.700000 11.600000 44.282143 +12.700000 11.700000 45.287445 +12.700000 11.800000 46.312747 +12.700000 11.900000 47.358048 +12.700000 12.000000 48.423350 +12.700000 12.100000 49.508652 +12.700000 12.200000 50.613953 +12.700000 12.300000 51.739255 +12.700000 12.400000 52.884557 +12.700000 12.500000 54.049858 +12.700000 12.600000 55.235160 +12.700000 12.700000 56.440462 +12.700000 12.800000 57.665763 +12.700000 12.900000 58.911065 +12.700000 13.000000 60.176367 +12.700000 13.100000 61.461668 +12.700000 13.200000 62.766970 +12.700000 13.300000 64.092272 +12.700000 13.400000 65.437573 +12.700000 13.500000 66.802875 +12.700000 13.600000 68.188177 +12.700000 13.700000 69.593478 +12.700000 13.800000 71.018780 +12.700000 13.900000 72.464082 +12.700000 14.000000 73.929383 +12.700000 14.100000 75.414685 +12.700000 14.200000 76.919986 +12.700000 14.300000 78.445288 +12.700000 14.400000 79.990590 +12.700000 14.500000 81.555891 +12.700000 14.600000 83.141193 +12.700000 14.700000 84.746495 +12.700000 14.800000 86.371796 +12.700000 14.900000 88.017098 +12.700000 15.000000 89.682400 + +12.800000 -5.000000 158.433958 +12.800000 -4.900000 156.085207 +12.800000 -4.800000 153.756455 +12.800000 -4.700000 151.447704 +12.800000 -4.600000 149.158952 +12.800000 -4.500000 146.890201 +12.800000 -4.400000 144.641450 +12.800000 -4.300000 142.412698 +12.800000 -4.200000 140.203947 +12.800000 -4.100000 138.015195 +12.800000 -4.000000 135.846444 +12.800000 -3.900000 133.697692 +12.800000 -3.800000 131.568941 +12.800000 -3.700000 129.460189 +12.800000 -3.600000 127.371438 +12.800000 -3.500000 125.302686 +12.800000 -3.400000 123.253935 +12.800000 -3.300000 121.225184 +12.800000 -3.200000 119.216432 +12.800000 -3.100000 117.227681 +12.800000 -3.000000 115.258929 +12.800000 -2.900000 113.310178 +12.800000 -2.800000 111.381426 +12.800000 -2.700000 109.472675 +12.800000 -2.600000 107.583923 +12.800000 -2.500000 105.715172 +12.800000 -2.400000 103.866420 +12.800000 -2.300000 102.037669 +12.800000 -2.200000 100.228918 +12.800000 -2.100000 98.440166 +12.800000 -2.000000 96.671415 +12.800000 -1.900000 94.922663 +12.800000 -1.800000 93.193912 +12.800000 -1.700000 91.485160 +12.800000 -1.600000 89.796409 +12.800000 -1.500000 88.127657 +12.800000 -1.400000 86.478906 +12.800000 -1.300000 84.850155 +12.800000 -1.200000 83.241403 +12.800000 -1.100000 81.652652 +12.800000 -1.000000 80.083900 +12.800000 -0.900000 78.535149 +12.800000 -0.800000 77.006397 +12.800000 -0.700000 75.497646 +12.800000 -0.600000 74.008894 +12.800000 -0.500000 72.540143 +12.800000 -0.400000 71.091391 +12.800000 -0.300000 69.662640 +12.800000 -0.200000 68.253889 +12.800000 -0.100000 66.865137 +12.800000 -0.000000 65.496386 +12.800000 0.100000 64.147634 +12.800000 0.200000 62.818883 +12.800000 0.300000 61.510131 +12.800000 0.400000 60.221380 +12.800000 0.500000 58.952628 +12.800000 0.600000 57.703877 +12.800000 0.700000 56.475125 +12.800000 0.800000 55.266374 +12.800000 0.900000 54.077623 +12.800000 1.000000 52.908871 +12.800000 1.100000 51.760120 +12.800000 1.200000 50.631368 +12.800000 1.300000 49.522617 +12.800000 1.400000 48.433865 +12.800000 1.500000 47.365114 +12.800000 1.600000 46.316362 +12.800000 1.700000 45.287611 +12.800000 1.800000 44.278859 +12.800000 1.900000 43.290108 +12.800000 2.000000 42.321357 +12.800000 2.100000 41.372605 +12.800000 2.200000 40.443854 +12.800000 2.300000 39.535102 +12.800000 2.400000 38.646351 +12.800000 2.500000 37.777599 +12.800000 2.600000 36.928848 +12.800000 2.700000 36.100096 +12.800000 2.800000 35.291345 +12.800000 2.900000 34.502593 +12.800000 3.000000 33.733842 +12.800000 3.100000 32.985091 +12.800000 3.200000 32.256339 +12.800000 3.300000 31.547588 +12.800000 3.400000 30.858836 +12.800000 3.500000 30.190085 +12.800000 3.600000 29.541333 +12.800000 3.700000 28.912582 +12.800000 3.800000 28.303830 +12.800000 3.900000 27.715079 +12.800000 4.000000 27.146328 +12.800000 4.100000 26.597576 +12.800000 4.200000 26.068825 +12.800000 4.300000 25.560073 +12.800000 4.400000 25.071322 +12.800000 4.500000 24.602570 +12.800000 4.600000 24.153819 +12.800000 4.700000 23.725067 +12.800000 4.800000 23.316316 +12.800000 4.900000 22.927564 +12.800000 5.000000 22.558813 +12.800000 5.100000 22.210062 +12.800000 5.200000 21.881310 +12.800000 5.300000 21.572559 +12.800000 5.400000 21.283807 +12.800000 5.500000 21.015056 +12.800000 5.600000 20.766304 +12.800000 5.700000 20.537553 +12.800000 5.800000 20.328801 +12.800000 5.900000 20.140050 +12.800000 6.000000 19.971298 +12.800000 6.100000 19.822547 +12.800000 6.200000 19.693796 +12.800000 6.300000 19.585044 +12.800000 6.400000 19.496293 +12.800000 6.500000 19.427541 +12.800000 6.600000 19.378790 +12.800000 6.700000 19.350038 +12.800000 6.800000 19.341287 +12.800000 6.900000 19.352535 +12.800000 7.000000 19.383784 +12.800000 7.100000 19.435032 +12.800000 7.200000 19.506281 +12.800000 7.300000 19.597530 +12.800000 7.400000 19.708778 +12.800000 7.500000 19.840027 +12.800000 7.600000 19.991275 +12.800000 7.700000 20.162524 +12.800000 7.800000 20.353772 +12.800000 7.900000 20.565021 +12.800000 8.000000 20.796269 +12.800000 8.100000 21.047518 +12.800000 8.200000 21.318767 +12.800000 8.300000 21.610015 +12.800000 8.400000 21.921264 +12.800000 8.500000 22.252512 +12.800000 8.600000 22.603761 +12.800000 8.700000 22.975009 +12.800000 8.800000 23.366258 +12.800000 8.900000 23.777506 +12.800000 9.000000 24.208755 +12.800000 9.100000 24.660003 +12.800000 9.200000 25.131252 +12.800000 9.300000 25.622501 +12.800000 9.400000 26.133749 +12.800000 9.500000 26.664998 +12.800000 9.600000 27.216246 +12.800000 9.700000 27.787495 +12.800000 9.800000 28.378743 +12.800000 9.900000 28.989992 +12.800000 10.000000 29.621240 +12.800000 10.100000 30.272489 +12.800000 10.200000 30.943737 +12.800000 10.300000 31.634986 +12.800000 10.400000 32.346235 +12.800000 10.500000 33.077483 +12.800000 10.600000 33.828732 +12.800000 10.700000 34.599980 +12.800000 10.800000 35.391229 +12.800000 10.900000 36.202477 +12.800000 11.000000 37.033726 +12.800000 11.100000 37.884974 +12.800000 11.200000 38.756223 +12.800000 11.300000 39.647471 +12.800000 11.400000 40.558720 +12.800000 11.500000 41.489969 +12.800000 11.600000 42.441217 +12.800000 11.700000 43.412466 +12.800000 11.800000 44.403714 +12.800000 11.900000 45.414963 +12.800000 12.000000 46.446211 +12.800000 12.100000 47.497460 +12.800000 12.200000 48.568708 +12.800000 12.300000 49.659957 +12.800000 12.400000 50.771206 +12.800000 12.500000 51.902454 +12.800000 12.600000 53.053703 +12.800000 12.700000 54.224951 +12.800000 12.800000 55.416200 +12.800000 12.900000 56.627448 +12.800000 13.000000 57.858697 +12.800000 13.100000 59.109945 +12.800000 13.200000 60.381194 +12.800000 13.300000 61.672442 +12.800000 13.400000 62.983691 +12.800000 13.500000 64.314940 +12.800000 13.600000 65.666188 +12.800000 13.700000 67.037437 +12.800000 13.800000 68.428685 +12.800000 13.900000 69.839934 +12.800000 14.000000 71.271182 +12.800000 14.100000 72.722431 +12.800000 14.200000 74.193679 +12.800000 14.300000 75.684928 +12.800000 14.400000 77.196176 +12.800000 14.500000 78.727425 +12.800000 14.600000 80.278674 +12.800000 14.700000 81.849922 +12.800000 14.800000 83.441171 +12.800000 14.900000 85.052419 +12.800000 15.000000 86.683668 + +12.900000 -5.000000 162.272324 +12.900000 -4.900000 159.889003 +12.900000 -4.800000 157.525681 +12.900000 -4.700000 155.182360 +12.900000 -4.600000 152.859039 +12.900000 -4.500000 150.555717 +12.900000 -4.400000 148.272396 +12.900000 -4.300000 146.009075 +12.900000 -4.200000 143.765753 +12.900000 -4.100000 141.542432 +12.900000 -4.000000 139.339111 +12.900000 -3.900000 137.155790 +12.900000 -3.800000 134.992468 +12.900000 -3.700000 132.849147 +12.900000 -3.600000 130.725826 +12.900000 -3.500000 128.622504 +12.900000 -3.400000 126.539183 +12.900000 -3.300000 124.475862 +12.900000 -3.200000 122.432540 +12.900000 -3.100000 120.409219 +12.900000 -3.000000 118.405898 +12.900000 -2.900000 116.422576 +12.900000 -2.800000 114.459255 +12.900000 -2.700000 112.515934 +12.900000 -2.600000 110.592613 +12.900000 -2.500000 108.689291 +12.900000 -2.400000 106.805970 +12.900000 -2.300000 104.942649 +12.900000 -2.200000 103.099327 +12.900000 -2.100000 101.276006 +12.900000 -2.000000 99.472685 +12.900000 -1.900000 97.689363 +12.900000 -1.800000 95.926042 +12.900000 -1.700000 94.182721 +12.900000 -1.600000 92.459400 +12.900000 -1.500000 90.756078 +12.900000 -1.400000 89.072757 +12.900000 -1.300000 87.409436 +12.900000 -1.200000 85.766114 +12.900000 -1.100000 84.142793 +12.900000 -1.000000 82.539472 +12.900000 -0.900000 80.956150 +12.900000 -0.800000 79.392829 +12.900000 -0.700000 77.849508 +12.900000 -0.600000 76.326187 +12.900000 -0.500000 74.822865 +12.900000 -0.400000 73.339544 +12.900000 -0.300000 71.876223 +12.900000 -0.200000 70.432901 +12.900000 -0.100000 69.009580 +12.900000 -0.000000 67.606259 +12.900000 0.100000 66.222937 +12.900000 0.200000 64.859616 +12.900000 0.300000 63.516295 +12.900000 0.400000 62.192974 +12.900000 0.500000 60.889652 +12.900000 0.600000 59.606331 +12.900000 0.700000 58.343010 +12.900000 0.800000 57.099688 +12.900000 0.900000 55.876367 +12.900000 1.000000 54.673046 +12.900000 1.100000 53.489724 +12.900000 1.200000 52.326403 +12.900000 1.300000 51.183082 +12.900000 1.400000 50.059761 +12.900000 1.500000 48.956439 +12.900000 1.600000 47.873118 +12.900000 1.700000 46.809797 +12.900000 1.800000 45.766475 +12.900000 1.900000 44.743154 +12.900000 2.000000 43.739833 +12.900000 2.100000 42.756511 +12.900000 2.200000 41.793190 +12.900000 2.300000 40.849869 +12.900000 2.400000 39.926548 +12.900000 2.500000 39.023226 +12.900000 2.600000 38.139905 +12.900000 2.700000 37.276584 +12.900000 2.800000 36.433262 +12.900000 2.900000 35.609941 +12.900000 3.000000 34.806620 +12.900000 3.100000 34.023298 +12.900000 3.200000 33.259977 +12.900000 3.300000 32.516656 +12.900000 3.400000 31.793334 +12.900000 3.500000 31.090013 +12.900000 3.600000 30.406692 +12.900000 3.700000 29.743371 +12.900000 3.800000 29.100049 +12.900000 3.900000 28.476728 +12.900000 4.000000 27.873407 +12.900000 4.100000 27.290085 +12.900000 4.200000 26.726764 +12.900000 4.300000 26.183443 +12.900000 4.400000 25.660121 +12.900000 4.500000 25.156800 +12.900000 4.600000 24.673479 +12.900000 4.700000 24.210158 +12.900000 4.800000 23.766836 +12.900000 4.900000 23.343515 +12.900000 5.000000 22.940194 +12.900000 5.100000 22.556872 +12.900000 5.200000 22.193551 +12.900000 5.300000 21.850230 +12.900000 5.400000 21.526908 +12.900000 5.500000 21.223587 +12.900000 5.600000 20.940266 +12.900000 5.700000 20.676945 +12.900000 5.800000 20.433623 +12.900000 5.900000 20.210302 +12.900000 6.000000 20.006981 +12.900000 6.100000 19.823659 +12.900000 6.200000 19.660338 +12.900000 6.300000 19.517017 +12.900000 6.400000 19.393695 +12.900000 6.500000 19.290374 +12.900000 6.600000 19.207053 +12.900000 6.700000 19.143732 +12.900000 6.800000 19.100410 +12.900000 6.900000 19.077089 +12.900000 7.000000 19.073768 +12.900000 7.100000 19.090446 +12.900000 7.200000 19.127125 +12.900000 7.300000 19.183804 +12.900000 7.400000 19.260482 +12.900000 7.500000 19.357161 +12.900000 7.600000 19.473840 +12.900000 7.700000 19.610519 +12.900000 7.800000 19.767197 +12.900000 7.900000 19.943876 +12.900000 8.000000 20.140555 +12.900000 8.100000 20.357233 +12.900000 8.200000 20.593912 +12.900000 8.300000 20.850591 +12.900000 8.400000 21.127269 +12.900000 8.500000 21.423948 +12.900000 8.600000 21.740627 +12.900000 8.700000 22.077306 +12.900000 8.800000 22.433984 +12.900000 8.900000 22.810663 +12.900000 9.000000 23.207342 +12.900000 9.100000 23.624020 +12.900000 9.200000 24.060699 +12.900000 9.300000 24.517378 +12.900000 9.400000 24.994056 +12.900000 9.500000 25.490735 +12.900000 9.600000 26.007414 +12.900000 9.700000 26.544093 +12.900000 9.800000 27.100771 +12.900000 9.900000 27.677450 +12.900000 10.000000 28.274129 +12.900000 10.100000 28.890807 +12.900000 10.200000 29.527486 +12.900000 10.300000 30.184165 +12.900000 10.400000 30.860843 +12.900000 10.500000 31.557522 +12.900000 10.600000 32.274201 +12.900000 10.700000 33.010879 +12.900000 10.800000 33.767558 +12.900000 10.900000 34.544237 +12.900000 11.000000 35.340916 +12.900000 11.100000 36.157594 +12.900000 11.200000 36.994273 +12.900000 11.300000 37.850952 +12.900000 11.400000 38.727630 +12.900000 11.500000 39.624309 +12.900000 11.600000 40.540988 +12.900000 11.700000 41.477666 +12.900000 11.800000 42.434345 +12.900000 11.900000 43.411024 +12.900000 12.000000 44.407703 +12.900000 12.100000 45.424381 +12.900000 12.200000 46.461060 +12.900000 12.300000 47.517739 +12.900000 12.400000 48.594417 +12.900000 12.500000 49.691096 +12.900000 12.600000 50.807775 +12.900000 12.700000 51.944453 +12.900000 12.800000 53.101132 +12.900000 12.900000 54.277811 +12.900000 13.000000 55.474490 +12.900000 13.100000 56.691168 +12.900000 13.200000 57.927847 +12.900000 13.300000 59.184526 +12.900000 13.400000 60.461204 +12.900000 13.500000 61.757883 +12.900000 13.600000 63.074562 +12.900000 13.700000 64.411240 +12.900000 13.800000 65.767919 +12.900000 13.900000 67.144598 +12.900000 14.000000 68.541277 +12.900000 14.100000 69.957955 +12.900000 14.200000 71.394634 +12.900000 14.300000 72.851313 +12.900000 14.400000 74.327991 +12.900000 14.500000 75.824670 +12.900000 14.600000 77.341349 +12.900000 14.700000 78.878027 +12.900000 14.800000 80.434706 +12.900000 14.900000 82.011385 +12.900000 15.000000 83.608064 + +13.000000 -5.000000 166.142528 +13.000000 -4.900000 163.724120 +13.000000 -4.800000 161.325712 +13.000000 -4.700000 158.947304 +13.000000 -4.600000 156.588897 +13.000000 -4.500000 154.250489 +13.000000 -4.400000 151.932081 +13.000000 -4.300000 149.633673 +13.000000 -4.200000 147.355265 +13.000000 -4.100000 145.096857 +13.000000 -4.000000 142.858449 +13.000000 -3.900000 140.640041 +13.000000 -3.800000 138.441633 +13.000000 -3.700000 136.263226 +13.000000 -3.600000 134.104818 +13.000000 -3.500000 131.966410 +13.000000 -3.400000 129.848002 +13.000000 -3.300000 127.749594 +13.000000 -3.200000 125.671186 +13.000000 -3.100000 123.612778 +13.000000 -3.000000 121.574370 +13.000000 -2.900000 119.555962 +13.000000 -2.800000 117.557555 +13.000000 -2.700000 115.579147 +13.000000 -2.600000 113.620739 +13.000000 -2.500000 111.682331 +13.000000 -2.400000 109.763923 +13.000000 -2.300000 107.865515 +13.000000 -2.200000 105.987107 +13.000000 -2.100000 104.128699 +13.000000 -2.000000 102.290291 +13.000000 -1.900000 100.471884 +13.000000 -1.800000 98.673476 +13.000000 -1.700000 96.895068 +13.000000 -1.600000 95.136660 +13.000000 -1.500000 93.398252 +13.000000 -1.400000 91.679844 +13.000000 -1.300000 89.981436 +13.000000 -1.200000 88.303028 +13.000000 -1.100000 86.644620 +13.000000 -1.000000 85.006213 +13.000000 -0.900000 83.387805 +13.000000 -0.800000 81.789397 +13.000000 -0.700000 80.210989 +13.000000 -0.600000 78.652581 +13.000000 -0.500000 77.114173 +13.000000 -0.400000 75.595765 +13.000000 -0.300000 74.097357 +13.000000 -0.200000 72.618949 +13.000000 -0.100000 71.160542 +13.000000 -0.000000 69.722134 +13.000000 0.100000 68.303726 +13.000000 0.200000 66.905318 +13.000000 0.300000 65.526910 +13.000000 0.400000 64.168502 +13.000000 0.500000 62.830094 +13.000000 0.600000 61.511686 +13.000000 0.700000 60.213278 +13.000000 0.800000 58.934871 +13.000000 0.900000 57.676463 +13.000000 1.000000 56.438055 +13.000000 1.100000 55.219647 +13.000000 1.200000 54.021239 +13.000000 1.300000 52.842831 +13.000000 1.400000 51.684423 +13.000000 1.500000 50.546015 +13.000000 1.600000 49.427607 +13.000000 1.700000 48.329200 +13.000000 1.800000 47.250792 +13.000000 1.900000 46.192384 +13.000000 2.000000 45.153976 +13.000000 2.100000 44.135568 +13.000000 2.200000 43.137160 +13.000000 2.300000 42.158752 +13.000000 2.400000 41.200344 +13.000000 2.500000 40.261936 +13.000000 2.600000 39.343529 +13.000000 2.700000 38.445121 +13.000000 2.800000 37.566713 +13.000000 2.900000 36.708305 +13.000000 3.000000 35.869897 +13.000000 3.100000 35.051489 +13.000000 3.200000 34.253081 +13.000000 3.300000 33.474673 +13.000000 3.400000 32.716265 +13.000000 3.500000 31.977858 +13.000000 3.600000 31.259450 +13.000000 3.700000 30.561042 +13.000000 3.800000 29.882634 +13.000000 3.900000 29.224226 +13.000000 4.000000 28.585818 +13.000000 4.100000 27.967410 +13.000000 4.200000 27.369002 +13.000000 4.300000 26.790594 +13.000000 4.400000 26.232187 +13.000000 4.500000 25.693779 +13.000000 4.600000 25.175371 +13.000000 4.700000 24.676963 +13.000000 4.800000 24.198555 +13.000000 4.900000 23.740147 +13.000000 5.000000 23.301739 +13.000000 5.100000 22.883331 +13.000000 5.200000 22.484923 +13.000000 5.300000 22.106516 +13.000000 5.400000 21.748108 +13.000000 5.500000 21.409700 +13.000000 5.600000 21.091292 +13.000000 5.700000 20.792884 +13.000000 5.800000 20.514476 +13.000000 5.900000 20.256068 +13.000000 6.000000 20.017660 +13.000000 6.100000 19.799252 +13.000000 6.200000 19.600845 +13.000000 6.300000 19.422437 +13.000000 6.400000 19.264029 +13.000000 6.500000 19.125621 +13.000000 6.600000 19.007213 +13.000000 6.700000 18.908805 +13.000000 6.800000 18.830397 +13.000000 6.900000 18.771989 +13.000000 7.000000 18.733581 +13.000000 7.100000 18.715174 +13.000000 7.200000 18.716766 +13.000000 7.300000 18.738358 +13.000000 7.400000 18.779950 +13.000000 7.500000 18.841542 +13.000000 7.600000 18.923134 +13.000000 7.700000 19.024726 +13.000000 7.800000 19.146318 +13.000000 7.900000 19.287910 +13.000000 8.000000 19.449503 +13.000000 8.100000 19.631095 +13.000000 8.200000 19.832687 +13.000000 8.300000 20.054279 +13.000000 8.400000 20.295871 +13.000000 8.500000 20.557463 +13.000000 8.600000 20.839055 +13.000000 8.700000 21.140647 +13.000000 8.800000 21.462239 +13.000000 8.900000 21.803832 +13.000000 9.000000 22.165424 +13.000000 9.100000 22.547016 +13.000000 9.200000 22.948608 +13.000000 9.300000 23.370200 +13.000000 9.400000 23.811792 +13.000000 9.500000 24.273384 +13.000000 9.600000 24.754976 +13.000000 9.700000 25.256568 +13.000000 9.800000 25.778161 +13.000000 9.900000 26.319753 +13.000000 10.000000 26.881345 +13.000000 10.100000 27.462937 +13.000000 10.200000 28.064529 +13.000000 10.300000 28.686121 +13.000000 10.400000 29.327713 +13.000000 10.500000 29.989305 +13.000000 10.600000 30.670897 +13.000000 10.700000 31.372490 +13.000000 10.800000 32.094082 +13.000000 10.900000 32.835674 +13.000000 11.000000 33.597266 +13.000000 11.100000 34.378858 +13.000000 11.200000 35.180450 +13.000000 11.300000 36.002042 +13.000000 11.400000 36.843634 +13.000000 11.500000 37.705226 +13.000000 11.600000 38.586819 +13.000000 11.700000 39.488411 +13.000000 11.800000 40.410003 +13.000000 11.900000 41.351595 +13.000000 12.000000 42.313187 +13.000000 12.100000 43.294779 +13.000000 12.200000 44.296371 +13.000000 12.300000 45.317963 +13.000000 12.400000 46.359555 +13.000000 12.500000 47.421148 +13.000000 12.600000 48.502740 +13.000000 12.700000 49.604332 +13.000000 12.800000 50.725924 +13.000000 12.900000 51.867516 +13.000000 13.000000 53.029108 +13.000000 13.100000 54.210700 +13.000000 13.200000 55.412292 +13.000000 13.300000 56.633884 +13.000000 13.400000 57.875477 +13.000000 13.500000 59.137069 +13.000000 13.600000 60.418661 +13.000000 13.700000 61.720253 +13.000000 13.800000 63.041845 +13.000000 13.900000 64.383437 +13.000000 14.000000 65.745029 +13.000000 14.100000 67.126621 +13.000000 14.200000 68.528213 +13.000000 14.300000 69.949806 +13.000000 14.400000 71.391398 +13.000000 14.500000 72.852990 +13.000000 14.600000 74.334582 +13.000000 14.700000 75.836174 +13.000000 14.800000 77.357766 +13.000000 14.900000 78.899358 +13.000000 15.000000 80.460950 + +13.100000 -5.000000 170.050880 +13.100000 -4.900000 167.596869 +13.100000 -4.800000 165.162858 +13.100000 -4.700000 162.748846 +13.100000 -4.600000 160.354835 +13.100000 -4.500000 157.980824 +13.100000 -4.400000 155.626813 +13.100000 -4.300000 153.292801 +13.100000 -4.200000 150.978790 +13.100000 -4.100000 148.684779 +13.100000 -4.000000 146.410768 +13.100000 -3.900000 144.156757 +13.100000 -3.800000 141.922745 +13.100000 -3.700000 139.708734 +13.100000 -3.600000 137.514723 +13.100000 -3.500000 135.340712 +13.100000 -3.400000 133.186701 +13.100000 -3.300000 131.052689 +13.100000 -3.200000 128.938678 +13.100000 -3.100000 126.844667 +13.100000 -3.000000 124.770656 +13.100000 -2.900000 122.716644 +13.100000 -2.800000 120.682633 +13.100000 -2.700000 118.668622 +13.100000 -2.600000 116.674611 +13.100000 -2.500000 114.700600 +13.100000 -2.400000 112.746588 +13.100000 -2.300000 110.812577 +13.100000 -2.200000 108.898566 +13.100000 -2.100000 107.004555 +13.100000 -2.000000 105.130544 +13.100000 -1.900000 103.276532 +13.100000 -1.800000 101.442521 +13.100000 -1.700000 99.628510 +13.100000 -1.600000 97.834499 +13.100000 -1.500000 96.060487 +13.100000 -1.400000 94.306476 +13.100000 -1.300000 92.572465 +13.100000 -1.200000 90.858454 +13.100000 -1.100000 89.164443 +13.100000 -1.000000 87.490431 +13.100000 -0.900000 85.836420 +13.100000 -0.800000 84.202409 +13.100000 -0.700000 82.588398 +13.100000 -0.600000 80.994387 +13.100000 -0.500000 79.420375 +13.100000 -0.400000 77.866364 +13.100000 -0.300000 76.332353 +13.100000 -0.200000 74.818342 +13.100000 -0.100000 73.324331 +13.100000 -0.000000 71.850319 +13.100000 0.100000 70.396308 +13.100000 0.200000 68.962297 +13.100000 0.300000 67.548286 +13.100000 0.400000 66.154274 +13.100000 0.500000 64.780263 +13.100000 0.600000 63.426252 +13.100000 0.700000 62.092241 +13.100000 0.800000 60.778230 +13.100000 0.900000 59.484218 +13.100000 1.000000 58.210207 +13.100000 1.100000 56.956196 +13.100000 1.200000 55.722185 +13.100000 1.300000 54.508174 +13.100000 1.400000 53.314162 +13.100000 1.500000 52.140151 +13.100000 1.600000 50.986140 +13.100000 1.700000 49.852129 +13.100000 1.800000 48.738117 +13.100000 1.900000 47.644106 +13.100000 2.000000 46.570095 +13.100000 2.100000 45.516084 +13.100000 2.200000 44.482073 +13.100000 2.300000 43.468061 +13.100000 2.400000 42.474050 +13.100000 2.500000 41.500039 +13.100000 2.600000 40.546028 +13.100000 2.700000 39.612017 +13.100000 2.800000 38.698005 +13.100000 2.900000 37.803994 +13.100000 3.000000 36.929983 +13.100000 3.100000 36.075972 +13.100000 3.200000 35.241960 +13.100000 3.300000 34.427949 +13.100000 3.400000 33.633938 +13.100000 3.500000 32.859927 +13.100000 3.600000 32.105916 +13.100000 3.700000 31.371904 +13.100000 3.800000 30.657893 +13.100000 3.900000 29.963882 +13.100000 4.000000 29.289871 +13.100000 4.100000 28.635860 +13.100000 4.200000 28.001848 +13.100000 4.300000 27.387837 +13.100000 4.400000 26.793826 +13.100000 4.500000 26.219815 +13.100000 4.600000 25.665803 +13.100000 4.700000 25.131792 +13.100000 4.800000 24.617781 +13.100000 4.900000 24.123770 +13.100000 5.000000 23.649759 +13.100000 5.100000 23.195747 +13.100000 5.200000 22.761736 +13.100000 5.300000 22.347725 +13.100000 5.400000 21.953714 +13.100000 5.500000 21.579703 +13.100000 5.600000 21.225691 +13.100000 5.700000 20.891680 +13.100000 5.800000 20.577669 +13.100000 5.900000 20.283658 +13.100000 6.000000 20.009646 +13.100000 6.100000 19.755635 +13.100000 6.200000 19.521624 +13.100000 6.300000 19.307613 +13.100000 6.400000 19.113602 +13.100000 6.500000 18.939590 +13.100000 6.600000 18.785579 +13.100000 6.700000 18.651568 +13.100000 6.800000 18.537557 +13.100000 6.900000 18.443546 +13.100000 7.000000 18.369534 +13.100000 7.100000 18.315523 +13.100000 7.200000 18.281512 +13.100000 7.300000 18.267501 +13.100000 7.400000 18.273489 +13.100000 7.500000 18.299478 +13.100000 7.600000 18.345467 +13.100000 7.700000 18.411456 +13.100000 7.800000 18.497445 +13.100000 7.900000 18.603433 +13.100000 8.000000 18.729422 +13.100000 8.100000 18.875411 +13.100000 8.200000 19.041400 +13.100000 8.300000 19.227389 +13.100000 8.400000 19.433377 +13.100000 8.500000 19.659366 +13.100000 8.600000 19.905355 +13.100000 8.700000 20.171344 +13.100000 8.800000 20.457332 +13.100000 8.900000 20.763321 +13.100000 9.000000 21.089310 +13.100000 9.100000 21.435299 +13.100000 9.200000 21.801288 +13.100000 9.300000 22.187276 +13.100000 9.400000 22.593265 +13.100000 9.500000 23.019254 +13.100000 9.600000 23.465243 +13.100000 9.700000 23.931232 +13.100000 9.800000 24.417220 +13.100000 9.900000 24.923209 +13.100000 10.000000 25.449198 +13.100000 10.100000 25.995187 +13.100000 10.200000 26.561175 +13.100000 10.300000 27.147164 +13.100000 10.400000 27.753153 +13.100000 10.500000 28.379142 +13.100000 10.600000 29.025131 +13.100000 10.700000 29.691119 +13.100000 10.800000 30.377108 +13.100000 10.900000 31.083097 +13.100000 11.000000 31.809086 +13.100000 11.100000 32.555075 +13.100000 11.200000 33.321063 +13.100000 11.300000 34.107052 +13.100000 11.400000 34.913041 +13.100000 11.500000 35.739030 +13.100000 11.600000 36.585018 +13.100000 11.700000 37.451007 +13.100000 11.800000 38.336996 +13.100000 11.900000 39.242985 +13.100000 12.000000 40.168974 +13.100000 12.100000 41.114962 +13.100000 12.200000 42.080951 +13.100000 12.300000 43.066940 +13.100000 12.400000 44.072929 +13.100000 12.500000 45.098918 +13.100000 12.600000 46.144906 +13.100000 12.700000 47.210895 +13.100000 12.800000 48.296884 +13.100000 12.900000 49.402873 +13.100000 13.000000 50.528861 +13.100000 13.100000 51.674850 +13.100000 13.200000 52.840839 +13.100000 13.300000 54.026828 +13.100000 13.400000 55.232817 +13.100000 13.500000 56.458805 +13.100000 13.600000 57.704794 +13.100000 13.700000 58.970783 +13.100000 13.800000 60.256772 +13.100000 13.900000 61.562761 +13.100000 14.000000 62.888749 +13.100000 14.100000 64.234738 +13.100000 14.200000 65.600727 +13.100000 14.300000 66.986716 +13.100000 14.400000 68.392704 +13.100000 14.500000 69.818693 +13.100000 14.600000 71.264682 +13.100000 14.700000 72.730671 +13.100000 14.800000 74.216660 +13.100000 14.900000 75.722648 +13.100000 15.000000 77.248637 + +13.200000 -5.000000 174.004599 +13.200000 -4.900000 171.514467 +13.200000 -4.800000 169.044336 +13.200000 -4.700000 166.594205 +13.200000 -4.600000 164.164073 +13.200000 -4.500000 161.753942 +13.200000 -4.400000 159.363811 +13.200000 -4.300000 156.993680 +13.200000 -4.200000 154.643548 +13.200000 -4.100000 152.313417 +13.200000 -4.000000 150.003286 +13.200000 -3.900000 147.713155 +13.200000 -3.800000 145.443023 +13.200000 -3.700000 143.192892 +13.200000 -3.600000 140.962761 +13.200000 -3.500000 138.752629 +13.200000 -3.400000 136.562498 +13.200000 -3.300000 134.392367 +13.200000 -3.200000 132.242236 +13.200000 -3.100000 130.112104 +13.200000 -3.000000 128.001973 +13.200000 -2.900000 125.911842 +13.200000 -2.800000 123.841711 +13.200000 -2.700000 121.791579 +13.200000 -2.600000 119.761448 +13.200000 -2.500000 117.751317 +13.200000 -2.400000 115.761185 +13.200000 -2.300000 113.791054 +13.200000 -2.200000 111.840923 +13.200000 -2.100000 109.910792 +13.200000 -2.000000 108.000660 +13.200000 -1.900000 106.110529 +13.200000 -1.800000 104.240398 +13.200000 -1.700000 102.390266 +13.200000 -1.600000 100.560135 +13.200000 -1.500000 98.750004 +13.200000 -1.400000 96.959873 +13.200000 -1.300000 95.189741 +13.200000 -1.200000 93.439610 +13.200000 -1.100000 91.709479 +13.200000 -1.000000 89.999348 +13.200000 -0.900000 88.309216 +13.200000 -0.800000 86.639085 +13.200000 -0.700000 84.988954 +13.200000 -0.600000 83.358822 +13.200000 -0.500000 81.748691 +13.200000 -0.400000 80.158560 +13.200000 -0.300000 78.588429 +13.200000 -0.200000 77.038297 +13.200000 -0.100000 75.508166 +13.200000 -0.000000 73.998035 +13.200000 0.100000 72.507903 +13.200000 0.200000 71.037772 +13.200000 0.300000 69.587641 +13.200000 0.400000 68.157510 +13.200000 0.500000 66.747378 +13.200000 0.600000 65.357247 +13.200000 0.700000 63.987116 +13.200000 0.800000 62.636985 +13.200000 0.900000 61.306853 +13.200000 1.000000 59.996722 +13.200000 1.100000 58.706591 +13.200000 1.200000 57.436459 +13.200000 1.300000 56.186328 +13.200000 1.400000 54.956197 +13.200000 1.500000 53.746066 +13.200000 1.600000 52.555934 +13.200000 1.700000 51.385803 +13.200000 1.800000 50.235672 +13.200000 1.900000 49.105540 +13.200000 2.000000 47.995409 +13.200000 2.100000 46.905278 +13.200000 2.200000 45.835147 +13.200000 2.300000 44.785015 +13.200000 2.400000 43.754884 +13.200000 2.500000 42.744753 +13.200000 2.600000 41.754622 +13.200000 2.700000 40.784490 +13.200000 2.800000 39.834359 +13.200000 2.900000 38.904228 +13.200000 3.000000 37.994096 +13.200000 3.100000 37.103965 +13.200000 3.200000 36.233834 +13.200000 3.300000 35.383703 +13.200000 3.400000 34.553571 +13.200000 3.500000 33.743440 +13.200000 3.600000 32.953309 +13.200000 3.700000 32.183177 +13.200000 3.800000 31.433046 +13.200000 3.900000 30.702915 +13.200000 4.000000 29.992784 +13.200000 4.100000 29.302652 +13.200000 4.200000 28.632521 +13.200000 4.300000 27.982390 +13.200000 4.400000 27.352259 +13.200000 4.500000 26.742127 +13.200000 4.600000 26.151996 +13.200000 4.700000 25.581865 +13.200000 4.800000 25.031733 +13.200000 4.900000 24.501602 +13.200000 5.000000 23.991471 +13.200000 5.100000 23.501340 +13.200000 5.200000 23.031208 +13.200000 5.300000 22.581077 +13.200000 5.400000 22.150946 +13.200000 5.500000 21.740815 +13.200000 5.600000 21.350683 +13.200000 5.700000 20.980552 +13.200000 5.800000 20.630421 +13.200000 5.900000 20.300289 +13.200000 6.000000 19.990158 +13.200000 6.100000 19.700027 +13.200000 6.200000 19.429896 +13.200000 6.300000 19.179764 +13.200000 6.400000 18.949633 +13.200000 6.500000 18.739502 +13.200000 6.600000 18.549370 +13.200000 6.700000 18.379239 +13.200000 6.800000 18.229108 +13.200000 6.900000 18.098977 +13.200000 7.000000 17.988845 +13.200000 7.100000 17.898714 +13.200000 7.200000 17.828583 +13.200000 7.300000 17.778452 +13.200000 7.400000 17.748320 +13.200000 7.500000 17.738189 +13.200000 7.600000 17.748058 +13.200000 7.700000 17.777926 +13.200000 7.800000 17.827795 +13.200000 7.900000 17.897664 +13.200000 8.000000 17.987533 +13.200000 8.100000 18.097401 +13.200000 8.200000 18.227270 +13.200000 8.300000 18.377139 +13.200000 8.400000 18.547007 +13.200000 8.500000 18.736876 +13.200000 8.600000 18.946745 +13.200000 8.700000 19.176614 +13.200000 8.800000 19.426482 +13.200000 8.900000 19.696351 +13.200000 9.000000 19.986220 +13.200000 9.100000 20.296089 +13.200000 9.200000 20.625957 +13.200000 9.300000 20.975826 +13.200000 9.400000 21.345695 +13.200000 9.500000 21.735563 +13.200000 9.600000 22.145432 +13.200000 9.700000 22.575301 +13.200000 9.800000 23.025170 +13.200000 9.900000 23.495038 +13.200000 10.000000 23.984907 +13.200000 10.100000 24.494776 +13.200000 10.200000 25.024644 +13.200000 10.300000 25.574513 +13.200000 10.400000 26.144382 +13.200000 10.500000 26.734251 +13.200000 10.600000 27.344119 +13.200000 10.700000 27.973988 +13.200000 10.800000 28.623857 +13.200000 10.900000 29.293726 +13.200000 11.000000 29.983594 +13.200000 11.100000 30.693463 +13.200000 11.200000 31.423332 +13.200000 11.300000 32.173200 +13.200000 11.400000 32.943069 +13.200000 11.500000 33.732938 +13.200000 11.600000 34.542807 +13.200000 11.700000 35.372675 +13.200000 11.800000 36.222544 +13.200000 11.900000 37.092413 +13.200000 12.000000 37.982282 +13.200000 12.100000 38.892150 +13.200000 12.200000 39.822019 +13.200000 12.300000 40.771888 +13.200000 12.400000 41.741756 +13.200000 12.500000 42.731625 +13.200000 12.600000 43.741494 +13.200000 12.700000 44.771363 +13.200000 12.800000 45.821231 +13.200000 12.900000 46.891100 +13.200000 13.000000 47.980969 +13.200000 13.100000 49.090837 +13.200000 13.200000 50.220706 +13.200000 13.300000 51.370575 +13.200000 13.400000 52.540444 +13.200000 13.500000 53.730312 +13.200000 13.600000 54.940181 +13.200000 13.700000 56.170050 +13.200000 13.800000 57.419919 +13.200000 13.900000 58.689787 +13.200000 14.000000 59.979656 +13.200000 14.100000 61.289525 +13.200000 14.200000 62.619393 +13.200000 14.300000 63.969262 +13.200000 14.400000 65.339131 +13.200000 14.500000 66.729000 +13.200000 14.600000 68.138868 +13.200000 14.700000 69.568737 +13.200000 14.800000 71.018606 +13.200000 14.900000 72.488474 +13.200000 15.000000 73.978343 + +13.300000 -5.000000 178.011768 +13.300000 -4.900000 175.485000 +13.300000 -4.800000 172.978232 +13.300000 -4.700000 170.491464 +13.300000 -4.600000 168.024696 +13.300000 -4.500000 165.577928 +13.300000 -4.400000 163.151160 +13.300000 -4.300000 160.744392 +13.300000 -4.200000 158.357624 +13.300000 -4.100000 155.990856 +13.300000 -4.000000 153.644088 +13.300000 -3.900000 151.317319 +13.300000 -3.800000 149.010551 +13.300000 -3.700000 146.723783 +13.300000 -3.600000 144.457015 +13.300000 -3.500000 142.210247 +13.300000 -3.400000 139.983479 +13.300000 -3.300000 137.776711 +13.300000 -3.200000 135.589943 +13.300000 -3.100000 133.423175 +13.300000 -3.000000 131.276407 +13.300000 -2.900000 129.149639 +13.300000 -2.800000 127.042871 +13.300000 -2.700000 124.956102 +13.300000 -2.600000 122.889334 +13.300000 -2.500000 120.842566 +13.300000 -2.400000 118.815798 +13.300000 -2.300000 116.809030 +13.300000 -2.200000 114.822262 +13.300000 -2.100000 112.855494 +13.300000 -2.000000 110.908726 +13.300000 -1.900000 108.981958 +13.300000 -1.800000 107.075190 +13.300000 -1.700000 105.188422 +13.300000 -1.600000 103.321654 +13.300000 -1.500000 101.474886 +13.300000 -1.400000 99.648117 +13.300000 -1.300000 97.841349 +13.300000 -1.200000 96.054581 +13.300000 -1.100000 94.287813 +13.300000 -1.000000 92.541045 +13.300000 -0.900000 90.814277 +13.300000 -0.800000 89.107509 +13.300000 -0.700000 87.420741 +13.300000 -0.600000 85.753973 +13.300000 -0.500000 84.107205 +13.300000 -0.400000 82.480437 +13.300000 -0.300000 80.873669 +13.300000 -0.200000 79.286901 +13.300000 -0.100000 77.720132 +13.300000 -0.000000 76.173364 +13.300000 0.100000 74.646596 +13.300000 0.200000 73.139828 +13.300000 0.300000 71.653060 +13.300000 0.400000 70.186292 +13.300000 0.500000 68.739524 +13.300000 0.600000 67.312756 +13.300000 0.700000 65.905988 +13.300000 0.800000 64.519220 +13.300000 0.900000 63.152452 +13.300000 1.000000 61.805684 +13.300000 1.100000 60.478916 +13.300000 1.200000 59.172147 +13.300000 1.300000 57.885379 +13.300000 1.400000 56.618611 +13.300000 1.500000 55.371843 +13.300000 1.600000 54.145075 +13.300000 1.700000 52.938307 +13.300000 1.800000 51.751539 +13.300000 1.900000 50.584771 +13.300000 2.000000 49.438003 +13.300000 2.100000 48.311235 +13.300000 2.200000 47.204467 +13.300000 2.300000 46.117699 +13.300000 2.400000 45.050931 +13.300000 2.500000 44.004162 +13.300000 2.600000 42.977394 +13.300000 2.700000 41.970626 +13.300000 2.800000 40.983858 +13.300000 2.900000 40.017090 +13.300000 3.000000 39.070322 +13.300000 3.100000 38.143554 +13.300000 3.200000 37.236786 +13.300000 3.300000 36.350018 +13.300000 3.400000 35.483250 +13.300000 3.500000 34.636482 +13.300000 3.600000 33.809714 +13.300000 3.700000 33.002945 +13.300000 3.800000 32.216177 +13.300000 3.900000 31.449409 +13.300000 4.000000 30.702641 +13.300000 4.100000 29.975873 +13.300000 4.200000 29.269105 +13.300000 4.300000 28.582337 +13.300000 4.400000 27.915569 +13.300000 4.500000 27.268801 +13.300000 4.600000 26.642033 +13.300000 4.700000 26.035265 +13.300000 4.800000 25.448497 +13.300000 4.900000 24.881729 +13.300000 5.000000 24.334960 +13.300000 5.100000 23.808192 +13.300000 5.200000 23.301424 +13.300000 5.300000 22.814656 +13.300000 5.400000 22.347888 +13.300000 5.500000 21.901120 +13.300000 5.600000 21.474352 +13.300000 5.700000 21.067584 +13.300000 5.800000 20.680816 +13.300000 5.900000 20.314048 +13.300000 6.000000 19.967280 +13.300000 6.100000 19.640512 +13.300000 6.200000 19.333744 +13.300000 6.300000 19.046975 +13.300000 6.400000 18.780207 +13.300000 6.500000 18.533439 +13.300000 6.600000 18.306671 +13.300000 6.700000 18.099903 +13.300000 6.800000 17.913135 +13.300000 6.900000 17.746367 +13.300000 7.000000 17.599599 +13.300000 7.100000 17.472831 +13.300000 7.200000 17.366063 +13.300000 7.300000 17.279295 +13.300000 7.400000 17.212527 +13.300000 7.500000 17.165759 +13.300000 7.600000 17.138990 +13.300000 7.700000 17.132222 +13.300000 7.800000 17.145454 +13.300000 7.900000 17.178686 +13.300000 8.000000 17.231918 +13.300000 8.100000 17.305150 +13.300000 8.200000 17.398382 +13.300000 8.300000 17.511614 +13.300000 8.400000 17.644846 +13.300000 8.500000 17.798078 +13.300000 8.600000 17.971310 +13.300000 8.700000 18.164542 +13.300000 8.800000 18.377773 +13.300000 8.900000 18.611005 +13.300000 9.000000 18.864237 +13.300000 9.100000 19.137469 +13.300000 9.200000 19.430701 +13.300000 9.300000 19.743933 +13.300000 9.400000 20.077165 +13.300000 9.500000 20.430397 +13.300000 9.600000 20.803629 +13.300000 9.700000 21.196861 +13.300000 9.800000 21.610093 +13.300000 9.900000 22.043325 +13.300000 10.000000 22.496557 +13.300000 10.100000 22.969788 +13.300000 10.200000 23.463020 +13.300000 10.300000 23.976252 +13.300000 10.400000 24.509484 +13.300000 10.500000 25.062716 +13.300000 10.600000 25.635948 +13.300000 10.700000 26.229180 +13.300000 10.800000 26.842412 +13.300000 10.900000 27.475644 +13.300000 11.000000 28.128876 +13.300000 11.100000 28.802108 +13.300000 11.200000 29.495340 +13.300000 11.300000 30.208572 +13.300000 11.400000 30.941803 +13.300000 11.500000 31.695035 +13.300000 11.600000 32.468267 +13.300000 11.700000 33.261499 +13.300000 11.800000 34.074731 +13.300000 11.900000 34.907963 +13.300000 12.000000 35.761195 +13.300000 12.100000 36.634427 +13.300000 12.200000 37.527659 +13.300000 12.300000 38.440891 +13.300000 12.400000 39.374123 +13.300000 12.500000 40.327355 +13.300000 12.600000 41.300587 +13.300000 12.700000 42.293818 +13.300000 12.800000 43.307050 +13.300000 12.900000 44.340282 +13.300000 13.000000 45.393514 +13.300000 13.100000 46.466746 +13.300000 13.200000 47.559978 +13.300000 13.300000 48.673210 +13.300000 13.400000 49.806442 +13.300000 13.500000 50.959674 +13.300000 13.600000 52.132906 +13.300000 13.700000 53.326138 +13.300000 13.800000 54.539370 +13.300000 13.900000 55.772602 +13.300000 14.000000 57.025833 +13.300000 14.100000 58.299065 +13.300000 14.200000 59.592297 +13.300000 14.300000 60.905529 +13.300000 14.400000 62.238761 +13.300000 14.500000 63.591993 +13.300000 14.600000 64.965225 +13.300000 14.700000 66.358457 +13.300000 14.800000 67.771689 +13.300000 14.900000 69.204921 +13.300000 15.000000 70.658153 + +13.400000 -5.000000 182.081286 +13.400000 -4.900000 179.517364 +13.400000 -4.800000 176.973443 +13.400000 -4.700000 174.449521 +13.400000 -4.600000 171.945600 +13.400000 -4.500000 169.461678 +13.400000 -4.400000 166.997756 +13.400000 -4.300000 164.553835 +13.400000 -4.200000 162.129913 +13.400000 -4.100000 159.725991 +13.400000 -4.000000 157.342070 +13.400000 -3.900000 154.978148 +13.400000 -3.800000 152.634227 +13.400000 -3.700000 150.310305 +13.400000 -3.600000 148.006383 +13.400000 -3.500000 145.722462 +13.400000 -3.400000 143.458540 +13.400000 -3.300000 141.214619 +13.400000 -3.200000 138.990697 +13.400000 -3.100000 136.786775 +13.400000 -3.000000 134.602854 +13.400000 -2.900000 132.438932 +13.400000 -2.800000 130.295010 +13.400000 -2.700000 128.171089 +13.400000 -2.600000 126.067167 +13.400000 -2.500000 123.983246 +13.400000 -2.400000 121.919324 +13.400000 -2.300000 119.875402 +13.400000 -2.200000 117.851481 +13.400000 -2.100000 115.847559 +13.400000 -2.000000 113.863638 +13.400000 -1.900000 111.899716 +13.400000 -1.800000 109.955794 +13.400000 -1.700000 108.031873 +13.400000 -1.600000 106.127951 +13.400000 -1.500000 104.244029 +13.400000 -1.400000 102.380108 +13.400000 -1.300000 100.536186 +13.400000 -1.200000 98.712265 +13.400000 -1.100000 96.908343 +13.400000 -1.000000 95.124421 +13.400000 -0.900000 93.360500 +13.400000 -0.800000 91.616578 +13.400000 -0.700000 89.892656 +13.400000 -0.600000 88.188735 +13.400000 -0.500000 86.504813 +13.400000 -0.400000 84.840892 +13.400000 -0.300000 83.196970 +13.400000 -0.200000 81.573048 +13.400000 -0.100000 79.969127 +13.400000 -0.000000 78.385205 +13.400000 0.100000 76.821284 +13.400000 0.200000 75.277362 +13.400000 0.300000 73.753440 +13.400000 0.400000 72.249519 +13.400000 0.500000 70.765597 +13.400000 0.600000 69.301675 +13.400000 0.700000 67.857754 +13.400000 0.800000 66.433832 +13.400000 0.900000 65.029911 +13.400000 1.000000 63.645989 +13.400000 1.100000 62.282067 +13.400000 1.200000 60.938146 +13.400000 1.300000 59.614224 +13.400000 1.400000 58.310303 +13.400000 1.500000 57.026381 +13.400000 1.600000 55.762459 +13.400000 1.700000 54.518538 +13.400000 1.800000 53.294616 +13.400000 1.900000 52.090694 +13.400000 2.000000 50.906773 +13.400000 2.100000 49.742851 +13.400000 2.200000 48.598930 +13.400000 2.300000 47.475008 +13.400000 2.400000 46.371086 +13.400000 2.500000 45.287165 +13.400000 2.600000 44.223243 +13.400000 2.700000 43.179321 +13.400000 2.800000 42.155400 +13.400000 2.900000 41.151478 +13.400000 3.000000 40.167557 +13.400000 3.100000 39.203635 +13.400000 3.200000 38.259713 +13.400000 3.300000 37.335792 +13.400000 3.400000 36.431870 +13.400000 3.500000 35.547949 +13.400000 3.600000 34.684027 +13.400000 3.700000 33.840105 +13.400000 3.800000 33.016184 +13.400000 3.900000 32.212262 +13.400000 4.000000 31.428340 +13.400000 4.100000 30.664419 +13.400000 4.200000 29.920497 +13.400000 4.300000 29.196576 +13.400000 4.400000 28.492654 +13.400000 4.500000 27.808732 +13.400000 4.600000 27.144811 +13.400000 4.700000 26.500889 +13.400000 4.800000 25.876968 +13.400000 4.900000 25.273046 +13.400000 5.000000 24.689124 +13.400000 5.100000 24.125203 +13.400000 5.200000 23.581281 +13.400000 5.300000 23.057359 +13.400000 5.400000 22.553438 +13.400000 5.500000 22.069516 +13.400000 5.600000 21.605595 +13.400000 5.700000 21.161673 +13.400000 5.800000 20.737751 +13.400000 5.900000 20.333830 +13.400000 6.000000 19.949908 +13.400000 6.100000 19.585986 +13.400000 6.200000 19.242065 +13.400000 6.300000 18.918143 +13.400000 6.400000 18.614222 +13.400000 6.500000 18.330300 +13.400000 6.600000 18.066378 +13.400000 6.700000 17.822457 +13.400000 6.800000 17.598535 +13.400000 6.900000 17.394614 +13.400000 7.000000 17.210692 +13.400000 7.100000 17.046770 +13.400000 7.200000 16.902849 +13.400000 7.300000 16.778927 +13.400000 7.400000 16.675005 +13.400000 7.500000 16.591084 +13.400000 7.600000 16.527162 +13.400000 7.700000 16.483241 +13.400000 7.800000 16.459319 +13.400000 7.900000 16.455397 +13.400000 8.000000 16.471476 +13.400000 8.100000 16.507554 +13.400000 8.200000 16.563633 +13.400000 8.300000 16.639711 +13.400000 8.400000 16.735789 +13.400000 8.500000 16.851868 +13.400000 8.600000 16.987946 +13.400000 8.700000 17.144024 +13.400000 8.800000 17.320103 +13.400000 8.900000 17.516181 +13.400000 9.000000 17.732260 +13.400000 9.100000 17.968338 +13.400000 9.200000 18.224416 +13.400000 9.300000 18.500495 +13.400000 9.400000 18.796573 +13.400000 9.500000 19.112651 +13.400000 9.600000 19.448730 +13.400000 9.700000 19.804808 +13.400000 9.800000 20.180887 +13.400000 9.900000 20.576965 +13.400000 10.000000 20.993043 +13.400000 10.100000 21.429122 +13.400000 10.200000 21.885200 +13.400000 10.300000 22.361279 +13.400000 10.400000 22.857357 +13.400000 10.500000 23.373435 +13.400000 10.600000 23.909514 +13.400000 10.700000 24.465592 +13.400000 10.800000 25.041670 +13.400000 10.900000 25.637749 +13.400000 11.000000 26.253827 +13.400000 11.100000 26.889906 +13.400000 11.200000 27.545984 +13.400000 11.300000 28.222062 +13.400000 11.400000 28.918141 +13.400000 11.500000 29.634219 +13.400000 11.600000 30.370298 +13.400000 11.700000 31.126376 +13.400000 11.800000 31.902454 +13.400000 11.900000 32.698533 +13.400000 12.000000 33.514611 +13.400000 12.100000 34.350689 +13.400000 12.200000 35.206768 +13.400000 12.300000 36.082846 +13.400000 12.400000 36.978925 +13.400000 12.500000 37.895003 +13.400000 12.600000 38.831081 +13.400000 12.700000 39.787160 +13.400000 12.800000 40.763238 +13.400000 12.900000 41.759316 +13.400000 13.000000 42.775395 +13.400000 13.100000 43.811473 +13.400000 13.200000 44.867552 +13.400000 13.300000 45.943630 +13.400000 13.400000 47.039708 +13.400000 13.500000 48.155787 +13.400000 13.600000 49.291865 +13.400000 13.700000 50.447944 +13.400000 13.800000 51.624022 +13.400000 13.900000 52.820100 +13.400000 14.000000 54.036179 +13.400000 14.100000 55.272257 +13.400000 14.200000 56.528335 +13.400000 14.300000 57.804414 +13.400000 14.400000 59.100492 +13.400000 14.500000 60.416571 +13.400000 14.600000 61.752649 +13.400000 14.700000 63.108727 +13.400000 14.800000 64.484806 +13.400000 14.900000 65.880884 +13.400000 15.000000 67.296963 + +13.500000 -5.000000 186.222801 +13.500000 -4.900000 183.621209 +13.500000 -4.800000 181.039617 +13.500000 -4.700000 178.478025 +13.500000 -4.600000 175.936433 +13.500000 -4.500000 173.414841 +13.500000 -4.400000 170.913249 +13.500000 -4.300000 168.431658 +13.500000 -4.200000 165.970066 +13.500000 -4.100000 163.528474 +13.500000 -4.000000 161.106882 +13.500000 -3.900000 158.705290 +13.500000 -3.800000 156.323698 +13.500000 -3.700000 153.962106 +13.500000 -3.600000 151.620514 +13.500000 -3.500000 149.298922 +13.500000 -3.400000 146.997331 +13.500000 -3.300000 144.715739 +13.500000 -3.200000 142.454147 +13.500000 -3.100000 140.212555 +13.500000 -3.000000 137.990963 +13.500000 -2.900000 135.789371 +13.500000 -2.800000 133.607779 +13.500000 -2.700000 131.446187 +13.500000 -2.600000 129.304595 +13.500000 -2.500000 127.183003 +13.500000 -2.400000 125.081412 +13.500000 -2.300000 122.999820 +13.500000 -2.200000 120.938228 +13.500000 -2.100000 118.896636 +13.500000 -2.000000 116.875044 +13.500000 -1.900000 114.873452 +13.500000 -1.800000 112.891860 +13.500000 -1.700000 110.930268 +13.500000 -1.600000 108.988676 +13.500000 -1.500000 107.067085 +13.500000 -1.400000 105.165493 +13.500000 -1.300000 103.283901 +13.500000 -1.200000 101.422309 +13.500000 -1.100000 99.580717 +13.500000 -1.000000 97.759125 +13.500000 -0.900000 95.957533 +13.500000 -0.800000 94.175941 +13.500000 -0.700000 92.414349 +13.500000 -0.600000 90.672757 +13.500000 -0.500000 88.951166 +13.500000 -0.400000 87.249574 +13.500000 -0.300000 85.567982 +13.500000 -0.200000 83.906390 +13.500000 -0.100000 82.264798 +13.500000 -0.000000 80.643206 +13.500000 0.100000 79.041614 +13.500000 0.200000 77.460022 +13.500000 0.300000 75.898430 +13.500000 0.400000 74.356839 +13.500000 0.500000 72.835247 +13.500000 0.600000 71.333655 +13.500000 0.700000 69.852063 +13.500000 0.800000 68.390471 +13.500000 0.900000 66.948879 +13.500000 1.000000 65.527287 +13.500000 1.100000 64.125695 +13.500000 1.200000 62.744103 +13.500000 1.300000 61.382511 +13.500000 1.400000 60.040920 +13.500000 1.500000 58.719328 +13.500000 1.600000 57.417736 +13.500000 1.700000 56.136144 +13.500000 1.800000 54.874552 +13.500000 1.900000 53.632960 +13.500000 2.000000 52.411368 +13.500000 2.100000 51.209776 +13.500000 2.200000 50.028184 +13.500000 2.300000 48.866593 +13.500000 2.400000 47.725001 +13.500000 2.500000 46.603409 +13.500000 2.600000 45.501817 +13.500000 2.700000 44.420225 +13.500000 2.800000 43.358633 +13.500000 2.900000 42.317041 +13.500000 3.000000 41.295449 +13.500000 3.100000 40.293857 +13.500000 3.200000 39.312265 +13.500000 3.300000 38.350674 +13.500000 3.400000 37.409082 +13.500000 3.500000 36.487490 +13.500000 3.600000 35.585898 +13.500000 3.700000 34.704306 +13.500000 3.800000 33.842714 +13.500000 3.900000 33.001122 +13.500000 4.000000 32.179530 +13.500000 4.100000 31.377938 +13.500000 4.200000 30.596347 +13.500000 4.300000 29.834755 +13.500000 4.400000 29.093163 +13.500000 4.500000 28.371571 +13.500000 4.600000 27.669979 +13.500000 4.700000 26.988387 +13.500000 4.800000 26.326795 +13.500000 4.900000 25.685203 +13.500000 5.000000 25.063611 +13.500000 5.100000 24.462019 +13.500000 5.200000 23.880428 +13.500000 5.300000 23.318836 +13.500000 5.400000 22.777244 +13.500000 5.500000 22.255652 +13.500000 5.600000 21.754060 +13.500000 5.700000 21.272468 +13.500000 5.800000 20.810876 +13.500000 5.900000 20.369284 +13.500000 6.000000 19.947692 +13.500000 6.100000 19.546101 +13.500000 6.200000 19.164509 +13.500000 6.300000 18.802917 +13.500000 6.400000 18.461325 +13.500000 6.500000 18.139733 +13.500000 6.600000 17.838141 +13.500000 6.700000 17.556549 +13.500000 6.800000 17.294957 +13.500000 6.900000 17.053365 +13.500000 7.000000 16.831773 +13.500000 7.100000 16.630182 +13.500000 7.200000 16.448590 +13.500000 7.300000 16.286998 +13.500000 7.400000 16.145406 +13.500000 7.500000 16.023814 +13.500000 7.600000 15.922222 +13.500000 7.700000 15.840630 +13.500000 7.800000 15.779038 +13.500000 7.900000 15.737446 +13.500000 8.000000 15.715855 +13.500000 8.100000 15.714263 +13.500000 8.200000 15.732671 +13.500000 8.300000 15.771079 +13.500000 8.400000 15.829487 +13.500000 8.500000 15.907895 +13.500000 8.600000 16.006303 +13.500000 8.700000 16.124711 +13.500000 8.800000 16.263119 +13.500000 8.900000 16.421527 +13.500000 9.000000 16.599936 +13.500000 9.100000 16.798344 +13.500000 9.200000 17.016752 +13.500000 9.300000 17.255160 +13.500000 9.400000 17.513568 +13.500000 9.500000 17.791976 +13.500000 9.600000 18.090384 +13.500000 9.700000 18.408792 +13.500000 9.800000 18.747200 +13.500000 9.900000 19.105609 +13.500000 10.000000 19.484017 +13.500000 10.100000 19.882425 +13.500000 10.200000 20.300833 +13.500000 10.300000 20.739241 +13.500000 10.400000 21.197649 +13.500000 10.500000 21.676057 +13.500000 10.600000 22.174465 +13.500000 10.700000 22.692873 +13.500000 10.800000 23.231281 +13.500000 10.900000 23.789690 +13.500000 11.000000 24.368098 +13.500000 11.100000 24.966506 +13.500000 11.200000 25.584914 +13.500000 11.300000 26.223322 +13.500000 11.400000 26.881730 +13.500000 11.500000 27.560138 +13.500000 11.600000 28.258546 +13.500000 11.700000 28.976954 +13.500000 11.800000 29.715363 +13.500000 11.900000 30.473771 +13.500000 12.000000 31.252179 +13.500000 12.100000 32.050587 +13.500000 12.200000 32.868995 +13.500000 12.300000 33.707403 +13.500000 12.400000 34.565811 +13.500000 12.500000 35.444219 +13.500000 12.600000 36.342627 +13.500000 12.700000 37.261035 +13.500000 12.800000 38.199444 +13.500000 12.900000 39.157852 +13.500000 13.000000 40.136260 +13.500000 13.100000 41.134668 +13.500000 13.200000 42.153076 +13.500000 13.300000 43.191484 +13.500000 13.400000 44.249892 +13.500000 13.500000 45.328300 +13.500000 13.600000 46.426708 +13.500000 13.700000 47.545117 +13.500000 13.800000 48.683525 +13.500000 13.900000 49.841933 +13.500000 14.000000 51.020341 +13.500000 14.100000 52.218749 +13.500000 14.200000 53.437157 +13.500000 14.300000 54.675565 +13.500000 14.400000 55.933973 +13.500000 14.500000 57.212381 +13.500000 14.600000 58.510789 +13.500000 14.700000 59.829198 +13.500000 14.800000 61.167606 +13.500000 14.900000 62.526014 +13.500000 15.000000 63.904422 + +13.600000 -5.000000 190.446646 +13.600000 -4.900000 187.806867 +13.600000 -4.800000 185.187088 +13.600000 -4.700000 182.587309 +13.600000 -4.600000 180.007531 +13.600000 -4.500000 177.447752 +13.600000 -4.400000 174.907973 +13.600000 -4.300000 172.388194 +13.600000 -4.200000 169.888415 +13.600000 -4.100000 167.408636 +13.600000 -4.000000 164.948857 +13.600000 -3.900000 162.509078 +13.600000 -3.800000 160.089299 +13.600000 -3.700000 157.689520 +13.600000 -3.600000 155.309741 +13.600000 -3.500000 152.949963 +13.600000 -3.400000 150.610184 +13.600000 -3.300000 148.290405 +13.600000 -3.200000 145.990626 +13.600000 -3.100000 143.710847 +13.600000 -3.000000 141.451068 +13.600000 -2.900000 139.211289 +13.600000 -2.800000 136.991510 +13.600000 -2.700000 134.791731 +13.600000 -2.600000 132.611952 +13.600000 -2.500000 130.452173 +13.600000 -2.400000 128.312395 +13.600000 -2.300000 126.192616 +13.600000 -2.200000 124.092837 +13.600000 -2.100000 122.013058 +13.600000 -2.000000 119.953279 +13.600000 -1.900000 117.913500 +13.600000 -1.800000 115.893721 +13.600000 -1.700000 113.893942 +13.600000 -1.600000 111.914163 +13.600000 -1.500000 109.954384 +13.600000 -1.400000 108.014605 +13.600000 -1.300000 106.094827 +13.600000 -1.200000 104.195048 +13.600000 -1.100000 102.315269 +13.600000 -1.000000 100.455490 +13.600000 -0.900000 98.615711 +13.600000 -0.800000 96.795932 +13.600000 -0.700000 94.996153 +13.600000 -0.600000 93.216374 +13.600000 -0.500000 91.456595 +13.600000 -0.400000 89.716816 +13.600000 -0.300000 87.997037 +13.600000 -0.200000 86.297259 +13.600000 -0.100000 84.617480 +13.600000 -0.000000 82.957701 +13.600000 0.100000 81.317922 +13.600000 0.200000 79.698143 +13.600000 0.300000 78.098364 +13.600000 0.400000 76.518585 +13.600000 0.500000 74.958806 +13.600000 0.600000 73.419027 +13.600000 0.700000 71.899248 +13.600000 0.800000 70.399469 +13.600000 0.900000 68.919690 +13.600000 1.000000 67.459912 +13.600000 1.100000 66.020133 +13.600000 1.200000 64.600354 +13.600000 1.300000 63.200575 +13.600000 1.400000 61.820796 +13.600000 1.500000 60.461017 +13.600000 1.600000 59.121238 +13.600000 1.700000 57.801459 +13.600000 1.800000 56.501680 +13.600000 1.900000 55.221901 +13.600000 2.000000 53.962122 +13.600000 2.100000 52.722344 +13.600000 2.200000 51.502565 +13.600000 2.300000 50.302786 +13.600000 2.400000 49.123007 +13.600000 2.500000 47.963228 +13.600000 2.600000 46.823449 +13.600000 2.700000 45.703670 +13.600000 2.800000 44.603891 +13.600000 2.900000 43.524112 +13.600000 3.000000 42.464333 +13.600000 3.100000 41.424554 +13.600000 3.200000 40.404776 +13.600000 3.300000 39.404997 +13.600000 3.400000 38.425218 +13.600000 3.500000 37.465439 +13.600000 3.600000 36.525660 +13.600000 3.700000 35.605881 +13.600000 3.800000 34.706102 +13.600000 3.900000 33.826323 +13.600000 4.000000 32.966544 +13.600000 4.100000 32.126765 +13.600000 4.200000 31.306986 +13.600000 4.300000 30.507208 +13.600000 4.400000 29.727429 +13.600000 4.500000 28.967650 +13.600000 4.600000 28.227871 +13.600000 4.700000 27.508092 +13.600000 4.800000 26.808313 +13.600000 4.900000 26.128534 +13.600000 5.000000 25.468755 +13.600000 5.100000 24.828976 +13.600000 5.200000 24.209197 +13.600000 5.300000 23.609418 +13.600000 5.400000 23.029640 +13.600000 5.500000 22.469861 +13.600000 5.600000 21.930082 +13.600000 5.700000 21.410303 +13.600000 5.800000 20.910524 +13.600000 5.900000 20.430745 +13.600000 6.000000 19.970966 +13.600000 6.100000 19.531187 +13.600000 6.200000 19.111408 +13.600000 6.300000 18.711629 +13.600000 6.400000 18.331850 +13.600000 6.500000 17.972072 +13.600000 6.600000 17.632293 +13.600000 6.700000 17.312514 +13.600000 6.800000 17.012735 +13.600000 6.900000 16.732956 +13.600000 7.000000 16.473177 +13.600000 7.100000 16.233398 +13.600000 7.200000 16.013619 +13.600000 7.300000 15.813840 +13.600000 7.400000 15.634061 +13.600000 7.500000 15.474282 +13.600000 7.600000 15.334504 +13.600000 7.700000 15.214725 +13.600000 7.800000 15.114946 +13.600000 7.900000 15.035167 +13.600000 8.000000 14.975388 +13.600000 8.100000 14.935609 +13.600000 8.200000 14.915830 +13.600000 8.300000 14.916051 +13.600000 8.400000 14.936272 +13.600000 8.500000 14.976493 +13.600000 8.600000 15.036714 +13.600000 8.700000 15.116936 +13.600000 8.800000 15.217157 +13.600000 8.900000 15.337378 +13.600000 9.000000 15.477599 +13.600000 9.100000 15.637820 +13.600000 9.200000 15.818041 +13.600000 9.300000 16.018262 +13.600000 9.400000 16.238483 +13.600000 9.500000 16.478704 +13.600000 9.600000 16.738925 +13.600000 9.700000 17.019146 +13.600000 9.800000 17.319367 +13.600000 9.900000 17.639589 +13.600000 10.000000 17.979810 +13.600000 10.100000 18.340031 +13.600000 10.200000 18.720252 +13.600000 10.300000 19.120473 +13.600000 10.400000 19.540694 +13.600000 10.500000 19.980915 +13.600000 10.600000 20.441136 +13.600000 10.700000 20.921357 +13.600000 10.800000 21.421578 +13.600000 10.900000 21.941799 +13.600000 11.000000 22.482021 +13.600000 11.100000 23.042242 +13.600000 11.200000 23.622463 +13.600000 11.300000 24.222684 +13.600000 11.400000 24.842905 +13.600000 11.500000 25.483126 +13.600000 11.600000 26.143347 +13.600000 11.700000 26.823568 +13.600000 11.800000 27.523789 +13.600000 11.900000 28.244010 +13.600000 12.000000 28.984231 +13.600000 12.100000 29.744453 +13.600000 12.200000 30.524674 +13.600000 12.300000 31.324895 +13.600000 12.400000 32.145116 +13.600000 12.500000 32.985337 +13.600000 12.600000 33.845558 +13.600000 12.700000 34.725779 +13.600000 12.800000 35.626000 +13.600000 12.900000 36.546221 +13.600000 13.000000 37.486442 +13.600000 13.100000 38.446663 +13.600000 13.200000 39.426885 +13.600000 13.300000 40.427106 +13.600000 13.400000 41.447327 +13.600000 13.500000 42.487548 +13.600000 13.600000 43.547769 +13.600000 13.700000 44.627990 +13.600000 13.800000 45.728211 +13.600000 13.900000 46.848432 +13.600000 14.000000 47.988653 +13.600000 14.100000 49.148874 +13.600000 14.200000 50.329095 +13.600000 14.300000 51.529317 +13.600000 14.400000 52.749538 +13.600000 14.500000 53.989759 +13.600000 14.600000 55.249980 +13.600000 14.700000 56.530201 +13.600000 14.800000 57.830422 +13.600000 14.900000 59.150643 +13.600000 15.000000 60.490864 + +13.700000 -5.000000 194.763766 +13.700000 -4.900000 192.085283 +13.700000 -4.800000 189.426801 +13.700000 -4.700000 186.788318 +13.700000 -4.600000 184.169835 +13.700000 -4.500000 181.571353 +13.700000 -4.400000 178.992870 +13.700000 -4.300000 176.434387 +13.700000 -4.200000 173.895905 +13.700000 -4.100000 171.377422 +13.700000 -4.000000 168.878939 +13.700000 -3.900000 166.400457 +13.700000 -3.800000 163.941974 +13.700000 -3.700000 161.503491 +13.700000 -3.600000 159.085009 +13.700000 -3.500000 156.686526 +13.700000 -3.400000 154.308043 +13.700000 -3.300000 151.949561 +13.700000 -3.200000 149.611078 +13.700000 -3.100000 147.292595 +13.700000 -3.000000 144.994113 +13.700000 -2.900000 142.715630 +13.700000 -2.800000 140.457147 +13.700000 -2.700000 138.218665 +13.700000 -2.600000 136.000182 +13.700000 -2.500000 133.801699 +13.700000 -2.400000 131.623217 +13.700000 -2.300000 129.464734 +13.700000 -2.200000 127.326251 +13.700000 -2.100000 125.207769 +13.700000 -2.000000 123.109286 +13.700000 -1.900000 121.030803 +13.700000 -1.800000 118.972321 +13.700000 -1.700000 116.933838 +13.700000 -1.600000 114.915355 +13.700000 -1.500000 112.916873 +13.700000 -1.400000 110.938390 +13.700000 -1.300000 108.979907 +13.700000 -1.200000 107.041425 +13.700000 -1.100000 105.122942 +13.700000 -1.000000 103.224459 +13.700000 -0.900000 101.345977 +13.700000 -0.800000 99.487494 +13.700000 -0.700000 97.649011 +13.700000 -0.600000 95.830529 +13.700000 -0.500000 94.032046 +13.700000 -0.400000 92.253563 +13.700000 -0.300000 90.495081 +13.700000 -0.200000 88.756598 +13.700000 -0.100000 87.038115 +13.700000 -0.000000 85.339633 +13.700000 0.100000 83.661150 +13.700000 0.200000 82.002667 +13.700000 0.300000 80.364185 +13.700000 0.400000 78.745702 +13.700000 0.500000 77.147219 +13.700000 0.600000 75.568737 +13.700000 0.700000 74.010254 +13.700000 0.800000 72.471771 +13.700000 0.900000 70.953289 +13.700000 1.000000 69.454806 +13.700000 1.100000 67.976323 +13.700000 1.200000 66.517841 +13.700000 1.300000 65.079358 +13.700000 1.400000 63.660875 +13.700000 1.500000 62.262393 +13.700000 1.600000 60.883910 +13.700000 1.700000 59.525427 +13.700000 1.800000 58.186945 +13.700000 1.900000 56.868462 +13.700000 2.000000 55.569979 +13.700000 2.100000 54.291497 +13.700000 2.200000 53.033014 +13.700000 2.300000 51.794531 +13.700000 2.400000 50.576049 +13.700000 2.500000 49.377566 +13.700000 2.600000 48.199083 +13.700000 2.700000 47.040601 +13.700000 2.800000 45.902118 +13.700000 2.900000 44.783635 +13.700000 3.000000 43.685153 +13.700000 3.100000 42.606670 +13.700000 3.200000 41.548187 +13.700000 3.300000 40.509705 +13.700000 3.400000 39.491222 +13.700000 3.500000 38.492739 +13.700000 3.600000 37.514257 +13.700000 3.700000 36.555774 +13.700000 3.800000 35.617291 +13.700000 3.900000 34.698809 +13.700000 4.000000 33.800326 +13.700000 4.100000 32.921843 +13.700000 4.200000 32.063361 +13.700000 4.300000 31.224878 +13.700000 4.400000 30.406395 +13.700000 4.500000 29.607913 +13.700000 4.600000 28.829430 +13.700000 4.700000 28.070948 +13.700000 4.800000 27.332465 +13.700000 4.900000 26.613982 +13.700000 5.000000 25.915500 +13.700000 5.100000 25.237017 +13.700000 5.200000 24.578534 +13.700000 5.300000 23.940052 +13.700000 5.400000 23.321569 +13.700000 5.500000 22.723086 +13.700000 5.600000 22.144604 +13.700000 5.700000 21.586121 +13.700000 5.800000 21.047638 +13.700000 5.900000 20.529156 +13.700000 6.000000 20.030673 +13.700000 6.100000 19.552190 +13.700000 6.200000 19.093708 +13.700000 6.300000 18.655225 +13.700000 6.400000 18.236742 +13.700000 6.500000 17.838260 +13.700000 6.600000 17.459777 +13.700000 6.700000 17.101294 +13.700000 6.800000 16.762812 +13.700000 6.900000 16.444329 +13.700000 7.000000 16.145846 +13.700000 7.100000 15.867364 +13.700000 7.200000 15.608881 +13.700000 7.300000 15.370398 +13.700000 7.400000 15.151916 +13.700000 7.500000 14.953433 +13.700000 7.600000 14.774950 +13.700000 7.700000 14.616468 +13.700000 7.800000 14.477985 +13.700000 7.900000 14.359502 +13.700000 8.000000 14.261020 +13.700000 8.100000 14.182537 +13.700000 8.200000 14.124054 +13.700000 8.300000 14.085572 +13.700000 8.400000 14.067089 +13.700000 8.500000 14.068606 +13.700000 8.600000 14.090124 +13.700000 8.700000 14.131641 +13.700000 8.800000 14.193158 +13.700000 8.900000 14.274676 +13.700000 9.000000 14.376193 +13.700000 9.100000 14.497710 +13.700000 9.200000 14.639228 +13.700000 9.300000 14.800745 +13.700000 9.400000 14.982262 +13.700000 9.500000 15.183780 +13.700000 9.600000 15.405297 +13.700000 9.700000 15.646814 +13.700000 9.800000 15.908332 +13.700000 9.900000 16.189849 +13.700000 10.000000 16.491366 +13.700000 10.100000 16.812884 +13.700000 10.200000 17.154401 +13.700000 10.300000 17.515918 +13.700000 10.400000 17.897436 +13.700000 10.500000 18.298953 +13.700000 10.600000 18.720470 +13.700000 10.700000 19.161988 +13.700000 10.800000 19.623505 +13.700000 10.900000 20.105022 +13.700000 11.000000 20.606540 +13.700000 11.100000 21.128057 +13.700000 11.200000 21.669574 +13.700000 11.300000 22.231092 +13.700000 11.400000 22.812609 +13.700000 11.500000 23.414126 +13.700000 11.600000 24.035644 +13.700000 11.700000 24.677161 +13.700000 11.800000 25.338678 +13.700000 11.900000 26.020196 +13.700000 12.000000 26.721713 +13.700000 12.100000 27.443230 +13.700000 12.200000 28.184748 +13.700000 12.300000 28.946265 +13.700000 12.400000 29.727782 +13.700000 12.500000 30.529300 +13.700000 12.600000 31.350817 +13.700000 12.700000 32.192334 +13.700000 12.800000 33.053852 +13.700000 12.900000 33.935369 +13.700000 13.000000 34.836886 +13.700000 13.100000 35.758404 +13.700000 13.200000 36.699921 +13.700000 13.300000 37.661438 +13.700000 13.400000 38.642956 +13.700000 13.500000 39.644473 +13.700000 13.600000 40.665990 +13.700000 13.700000 41.707508 +13.700000 13.800000 42.769025 +13.700000 13.900000 43.850542 +13.700000 14.000000 44.952060 +13.700000 14.100000 46.073577 +13.700000 14.200000 47.215094 +13.700000 14.300000 48.376612 +13.700000 14.400000 49.558129 +13.700000 14.500000 50.759646 +13.700000 14.600000 51.981164 +13.700000 14.700000 53.222681 +13.700000 14.800000 54.484198 +13.700000 14.900000 55.765716 +13.700000 15.000000 57.067233 + +13.800000 -5.000000 199.185634 +13.800000 -4.900000 196.467931 +13.800000 -4.800000 193.770228 +13.800000 -4.700000 191.092525 +13.800000 -4.600000 188.434822 +13.800000 -4.500000 185.797118 +13.800000 -4.400000 183.179415 +13.800000 -4.300000 180.581712 +13.800000 -4.200000 178.004009 +13.800000 -4.100000 175.446306 +13.800000 -4.000000 172.908603 +13.800000 -3.900000 170.390900 +13.800000 -3.800000 167.893196 +13.800000 -3.700000 165.415493 +13.800000 -3.600000 162.957790 +13.800000 -3.500000 160.520087 +13.800000 -3.400000 158.102384 +13.800000 -3.300000 155.704681 +13.800000 -3.200000 153.326977 +13.800000 -3.100000 150.969274 +13.800000 -3.000000 148.631571 +13.800000 -2.900000 146.313868 +13.800000 -2.800000 144.016165 +13.800000 -2.700000 141.738462 +13.800000 -2.600000 139.480759 +13.800000 -2.500000 137.243055 +13.800000 -2.400000 135.025352 +13.800000 -2.300000 132.827649 +13.800000 -2.200000 130.649946 +13.800000 -2.100000 128.492243 +13.800000 -2.000000 126.354540 +13.800000 -1.900000 124.236836 +13.800000 -1.800000 122.139133 +13.800000 -1.700000 120.061430 +13.800000 -1.600000 118.003727 +13.800000 -1.500000 115.966024 +13.800000 -1.400000 113.948321 +13.800000 -1.300000 111.950618 +13.800000 -1.200000 109.972914 +13.800000 -1.100000 108.015211 +13.800000 -1.000000 106.077508 +13.800000 -0.900000 104.159805 +13.800000 -0.800000 102.262102 +13.800000 -0.700000 100.384399 +13.800000 -0.600000 98.526695 +13.800000 -0.500000 96.688992 +13.800000 -0.400000 94.871289 +13.800000 -0.300000 93.073586 +13.800000 -0.200000 91.295883 +13.800000 -0.100000 89.538180 +13.800000 -0.000000 87.800477 +13.800000 0.100000 86.082773 +13.800000 0.200000 84.385070 +13.800000 0.300000 82.707367 +13.800000 0.400000 81.049664 +13.800000 0.500000 79.411961 +13.800000 0.600000 77.794258 +13.800000 0.700000 76.196554 +13.800000 0.800000 74.618851 +13.800000 0.900000 73.061148 +13.800000 1.000000 71.523445 +13.800000 1.100000 70.005742 +13.800000 1.200000 68.508039 +13.800000 1.300000 67.030335 +13.800000 1.400000 65.572632 +13.800000 1.500000 64.134929 +13.800000 1.600000 62.717226 +13.800000 1.700000 61.319523 +13.800000 1.800000 59.941820 +13.800000 1.900000 58.584117 +13.800000 2.000000 57.246413 +13.800000 2.100000 55.928710 +13.800000 2.200000 54.631007 +13.800000 2.300000 53.353304 +13.800000 2.400000 52.095601 +13.800000 2.500000 50.857898 +13.800000 2.600000 49.640194 +13.800000 2.700000 48.442491 +13.800000 2.800000 47.264788 +13.800000 2.900000 46.107085 +13.800000 3.000000 44.969382 +13.800000 3.100000 43.851679 +13.800000 3.200000 42.753976 +13.800000 3.300000 41.676272 +13.800000 3.400000 40.618569 +13.800000 3.500000 39.580866 +13.800000 3.600000 38.563163 +13.800000 3.700000 37.565460 +13.800000 3.800000 36.587757 +13.800000 3.900000 35.630053 +13.800000 4.000000 34.692350 +13.800000 4.100000 33.774647 +13.800000 4.200000 32.876944 +13.800000 4.300000 31.999241 +13.800000 4.400000 31.141538 +13.800000 4.500000 30.303835 +13.800000 4.600000 29.486131 +13.800000 4.700000 28.688428 +13.800000 4.800000 27.910725 +13.800000 4.900000 27.153022 +13.800000 5.000000 26.415319 +13.800000 5.100000 25.697616 +13.800000 5.200000 24.999912 +13.800000 5.300000 24.322209 +13.800000 5.400000 23.664506 +13.800000 5.500000 23.026803 +13.800000 5.600000 22.409100 +13.800000 5.700000 21.811397 +13.800000 5.800000 21.233694 +13.800000 5.900000 20.675990 +13.800000 6.000000 20.138287 +13.800000 6.100000 19.620584 +13.800000 6.200000 19.122881 +13.800000 6.300000 18.645178 +13.800000 6.400000 18.187475 +13.800000 6.500000 17.749771 +13.800000 6.600000 17.332068 +13.800000 6.700000 16.934365 +13.800000 6.800000 16.556662 +13.800000 6.900000 16.198959 +13.800000 7.000000 15.861256 +13.800000 7.100000 15.543553 +13.800000 7.200000 15.245849 +13.800000 7.300000 14.968146 +13.800000 7.400000 14.710443 +13.800000 7.500000 14.472740 +13.800000 7.600000 14.255037 +13.800000 7.700000 14.057334 +13.800000 7.800000 13.879630 +13.800000 7.900000 13.721927 +13.800000 8.000000 13.584224 +13.800000 8.100000 13.466521 +13.800000 8.200000 13.368818 +13.800000 8.300000 13.291115 +13.800000 8.400000 13.233411 +13.800000 8.500000 13.195708 +13.800000 8.600000 13.178005 +13.800000 8.700000 13.180302 +13.800000 8.800000 13.202599 +13.800000 8.900000 13.244896 +13.800000 9.000000 13.307193 +13.800000 9.100000 13.389489 +13.800000 9.200000 13.491786 +13.800000 9.300000 13.614083 +13.800000 9.400000 13.756380 +13.800000 9.500000 13.918677 +13.800000 9.600000 14.100974 +13.800000 9.700000 14.303270 +13.800000 9.800000 14.525567 +13.800000 9.900000 14.767864 +13.800000 10.000000 15.030161 +13.800000 10.100000 15.312458 +13.800000 10.200000 15.614755 +13.800000 10.300000 15.937052 +13.800000 10.400000 16.279348 +13.800000 10.500000 16.641645 +13.800000 10.600000 17.023942 +13.800000 10.700000 17.426239 +13.800000 10.800000 17.848536 +13.800000 10.900000 18.290833 +13.800000 11.000000 18.753129 +13.800000 11.100000 19.235426 +13.800000 11.200000 19.737723 +13.800000 11.300000 20.260020 +13.800000 11.400000 20.802317 +13.800000 11.500000 21.364614 +13.800000 11.600000 21.946911 +13.800000 11.700000 22.549207 +13.800000 11.800000 23.171504 +13.800000 11.900000 23.813801 +13.800000 12.000000 24.476098 +13.800000 12.100000 25.158395 +13.800000 12.200000 25.860692 +13.800000 12.300000 26.582988 +13.800000 12.400000 27.325285 +13.800000 12.500000 28.087582 +13.800000 12.600000 28.869879 +13.800000 12.700000 29.672176 +13.800000 12.800000 30.494473 +13.800000 12.900000 31.336770 +13.800000 13.000000 32.199066 +13.800000 13.100000 33.081363 +13.800000 13.200000 33.983660 +13.800000 13.300000 34.905957 +13.800000 13.400000 35.848254 +13.800000 13.500000 36.810551 +13.800000 13.600000 37.792847 +13.800000 13.700000 38.795144 +13.800000 13.800000 39.817441 +13.800000 13.900000 40.859738 +13.800000 14.000000 41.922035 +13.800000 14.100000 43.004332 +13.800000 14.200000 44.106629 +13.800000 14.300000 45.228925 +13.800000 14.400000 46.371222 +13.800000 14.500000 47.533519 +13.800000 14.600000 48.715816 +13.800000 14.700000 49.918113 +13.800000 14.800000 51.140410 +13.800000 14.900000 52.382706 +13.800000 15.000000 53.645003 + +13.900000 -5.000000 203.724172 +13.900000 -4.900000 200.966731 +13.900000 -4.800000 198.229291 +13.900000 -4.700000 195.511850 +13.900000 -4.600000 192.814410 +13.900000 -4.500000 190.136970 +13.900000 -4.400000 187.479529 +13.900000 -4.300000 184.842089 +13.900000 -4.200000 182.224649 +13.900000 -4.100000 179.627208 +13.900000 -4.000000 177.049768 +13.900000 -3.900000 174.492327 +13.900000 -3.800000 171.954887 +13.900000 -3.700000 169.437447 +13.900000 -3.600000 166.940006 +13.900000 -3.500000 164.462566 +13.900000 -3.400000 162.005126 +13.900000 -3.300000 159.567685 +13.900000 -3.200000 157.150245 +13.900000 -3.100000 154.752804 +13.900000 -3.000000 152.375364 +13.900000 -2.900000 150.017924 +13.900000 -2.800000 147.680483 +13.900000 -2.700000 145.363043 +13.900000 -2.600000 143.065602 +13.900000 -2.500000 140.788162 +13.900000 -2.400000 138.530722 +13.900000 -2.300000 136.293281 +13.900000 -2.200000 134.075841 +13.900000 -2.100000 131.878401 +13.900000 -2.000000 129.700960 +13.900000 -1.900000 127.543520 +13.900000 -1.800000 125.406079 +13.900000 -1.700000 123.288639 +13.900000 -1.600000 121.191199 +13.900000 -1.500000 119.113758 +13.900000 -1.400000 117.056318 +13.900000 -1.300000 115.018877 +13.900000 -1.200000 113.001437 +13.900000 -1.100000 111.003997 +13.900000 -1.000000 109.026556 +13.900000 -0.900000 107.069116 +13.900000 -0.800000 105.131676 +13.900000 -0.700000 103.214235 +13.900000 -0.600000 101.316795 +13.900000 -0.500000 99.439354 +13.900000 -0.400000 97.581914 +13.900000 -0.300000 95.744474 +13.900000 -0.200000 93.927033 +13.900000 -0.100000 92.129593 +13.900000 -0.000000 90.352152 +13.900000 0.100000 88.594712 +13.900000 0.200000 86.857272 +13.900000 0.300000 85.139831 +13.900000 0.400000 83.442391 +13.900000 0.500000 81.764951 +13.900000 0.600000 80.107510 +13.900000 0.700000 78.470070 +13.900000 0.800000 76.852629 +13.900000 0.900000 75.255189 +13.900000 1.000000 73.677749 +13.900000 1.100000 72.120308 +13.900000 1.200000 70.582868 +13.900000 1.300000 69.065427 +13.900000 1.400000 67.567987 +13.900000 1.500000 66.090547 +13.900000 1.600000 64.633106 +13.900000 1.700000 63.195666 +13.900000 1.800000 61.778226 +13.900000 1.900000 60.380785 +13.900000 2.000000 59.003345 +13.900000 2.100000 57.645904 +13.900000 2.200000 56.308464 +13.900000 2.300000 54.991024 +13.900000 2.400000 53.693583 +13.900000 2.500000 52.416143 +13.900000 2.600000 51.158702 +13.900000 2.700000 49.921262 +13.900000 2.800000 48.703822 +13.900000 2.900000 47.506381 +13.900000 3.000000 46.328941 +13.900000 3.100000 45.171501 +13.900000 3.200000 44.034060 +13.900000 3.300000 42.916620 +13.900000 3.400000 41.819179 +13.900000 3.500000 40.741739 +13.900000 3.600000 39.684299 +13.900000 3.700000 38.646858 +13.900000 3.800000 37.629418 +13.900000 3.900000 36.631977 +13.900000 4.000000 35.654537 +13.900000 4.100000 34.697097 +13.900000 4.200000 33.759656 +13.900000 4.300000 32.842216 +13.900000 4.400000 31.944776 +13.900000 4.500000 31.067335 +13.900000 4.600000 30.209895 +13.900000 4.700000 29.372454 +13.900000 4.800000 28.555014 +13.900000 4.900000 27.757574 +13.900000 5.000000 26.980133 +13.900000 5.100000 26.222693 +13.900000 5.200000 25.485252 +13.900000 5.300000 24.767812 +13.900000 5.400000 24.070372 +13.900000 5.500000 23.392931 +13.900000 5.600000 22.735491 +13.900000 5.700000 22.098051 +13.900000 5.800000 21.480610 +13.900000 5.900000 20.883170 +13.900000 6.000000 20.305729 +13.900000 6.100000 19.748289 +13.900000 6.200000 19.210849 +13.900000 6.300000 18.693408 +13.900000 6.400000 18.195968 +13.900000 6.500000 17.718527 +13.900000 6.600000 17.261087 +13.900000 6.700000 16.823647 +13.900000 6.800000 16.406206 +13.900000 6.900000 16.008766 +13.900000 7.000000 15.631326 +13.900000 7.100000 15.273885 +13.900000 7.200000 14.936445 +13.900000 7.300000 14.619004 +13.900000 7.400000 14.321564 +13.900000 7.500000 14.044124 +13.900000 7.600000 13.786683 +13.900000 7.700000 13.549243 +13.900000 7.800000 13.331802 +13.900000 7.900000 13.134362 +13.900000 8.000000 12.956922 +13.900000 8.100000 12.799481 +13.900000 8.200000 12.662041 +13.900000 8.300000 12.544601 +13.900000 8.400000 12.447160 +13.900000 8.500000 12.369720 +13.900000 8.600000 12.312279 +13.900000 8.700000 12.274839 +13.900000 8.800000 12.257399 +13.900000 8.900000 12.259958 +13.900000 9.000000 12.282518 +13.900000 9.100000 12.325077 +13.900000 9.200000 12.387637 +13.900000 9.300000 12.470197 +13.900000 9.400000 12.572756 +13.900000 9.500000 12.695316 +13.900000 9.600000 12.837876 +13.900000 9.700000 13.000435 +13.900000 9.800000 13.182995 +13.900000 9.900000 13.385554 +13.900000 10.000000 13.608114 +13.900000 10.100000 13.850674 +13.900000 10.200000 14.113233 +13.900000 10.300000 14.395793 +13.900000 10.400000 14.698352 +13.900000 10.500000 15.020912 +13.900000 10.600000 15.363472 +13.900000 10.700000 15.726031 +13.900000 10.800000 16.108591 +13.900000 10.900000 16.511151 +13.900000 11.000000 16.933710 +13.900000 11.100000 17.376270 +13.900000 11.200000 17.838829 +13.900000 11.300000 18.321389 +13.900000 11.400000 18.823949 +13.900000 11.500000 19.346508 +13.900000 11.600000 19.889068 +13.900000 11.700000 20.451627 +13.900000 11.800000 21.034187 +13.900000 11.900000 21.636747 +13.900000 12.000000 22.259306 +13.900000 12.100000 22.901866 +13.900000 12.200000 23.564426 +13.900000 12.300000 24.246985 +13.900000 12.400000 24.949545 +13.900000 12.500000 25.672104 +13.900000 12.600000 26.414664 +13.900000 12.700000 27.177224 +13.900000 12.800000 27.959783 +13.900000 12.900000 28.762343 +13.900000 13.000000 29.584902 +13.900000 13.100000 30.427462 +13.900000 13.200000 31.290022 +13.900000 13.300000 32.172581 +13.900000 13.400000 33.075141 +13.900000 13.500000 33.997701 +13.900000 13.600000 34.940260 +13.900000 13.700000 35.902820 +13.900000 13.800000 36.885379 +13.900000 13.900000 37.887939 +13.900000 14.000000 38.910499 +13.900000 14.100000 39.953058 +13.900000 14.200000 41.015618 +13.900000 14.300000 42.098177 +13.900000 14.400000 43.200737 +13.900000 14.500000 44.323297 +13.900000 14.600000 45.465856 +13.900000 14.700000 46.628416 +13.900000 14.800000 47.810976 +13.900000 14.900000 49.013535 +13.900000 15.000000 50.236095 + +14.000000 -5.000000 208.391656 +14.000000 -4.900000 205.593961 +14.000000 -4.800000 202.816267 +14.000000 -4.700000 200.058572 +14.000000 -4.600000 197.320878 +14.000000 -4.500000 194.603184 +14.000000 -4.400000 191.905489 +14.000000 -4.300000 189.227795 +14.000000 -4.200000 186.570101 +14.000000 -4.100000 183.932406 +14.000000 -4.000000 181.314712 +14.000000 -3.900000 178.717018 +14.000000 -3.800000 176.139323 +14.000000 -3.700000 173.581629 +14.000000 -3.600000 171.043935 +14.000000 -3.500000 168.526240 +14.000000 -3.400000 166.028546 +14.000000 -3.300000 163.550852 +14.000000 -3.200000 161.093157 +14.000000 -3.100000 158.655463 +14.000000 -3.000000 156.237768 +14.000000 -2.900000 153.840074 +14.000000 -2.800000 151.462380 +14.000000 -2.700000 149.104685 +14.000000 -2.600000 146.766991 +14.000000 -2.500000 144.449297 +14.000000 -2.400000 142.151602 +14.000000 -2.300000 139.873908 +14.000000 -2.200000 137.616214 +14.000000 -2.100000 135.378519 +14.000000 -2.000000 133.160825 +14.000000 -1.900000 130.963131 +14.000000 -1.800000 128.785436 +14.000000 -1.700000 126.627742 +14.000000 -1.600000 124.490048 +14.000000 -1.500000 122.372353 +14.000000 -1.400000 120.274659 +14.000000 -1.300000 118.196964 +14.000000 -1.200000 116.139270 +14.000000 -1.100000 114.101576 +14.000000 -1.000000 112.083881 +14.000000 -0.900000 110.086187 +14.000000 -0.800000 108.108493 +14.000000 -0.700000 106.150798 +14.000000 -0.600000 104.213104 +14.000000 -0.500000 102.295410 +14.000000 -0.400000 100.397715 +14.000000 -0.300000 98.520021 +14.000000 -0.200000 96.662327 +14.000000 -0.100000 94.824632 +14.000000 -0.000000 93.006938 +14.000000 0.100000 91.209244 +14.000000 0.200000 89.431549 +14.000000 0.300000 87.673855 +14.000000 0.400000 85.936161 +14.000000 0.500000 84.218466 +14.000000 0.600000 82.520772 +14.000000 0.700000 80.843077 +14.000000 0.800000 79.185383 +14.000000 0.900000 77.547689 +14.000000 1.000000 75.929994 +14.000000 1.100000 74.332300 +14.000000 1.200000 72.754606 +14.000000 1.300000 71.196911 +14.000000 1.400000 69.659217 +14.000000 1.500000 68.141523 +14.000000 1.600000 66.643828 +14.000000 1.700000 65.166134 +14.000000 1.800000 63.708440 +14.000000 1.900000 62.270745 +14.000000 2.000000 60.853051 +14.000000 2.100000 59.455357 +14.000000 2.200000 58.077662 +14.000000 2.300000 56.719968 +14.000000 2.400000 55.382273 +14.000000 2.500000 54.064579 +14.000000 2.600000 52.766885 +14.000000 2.700000 51.489190 +14.000000 2.800000 50.231496 +14.000000 2.900000 48.993802 +14.000000 3.000000 47.776107 +14.000000 3.100000 46.578413 +14.000000 3.200000 45.400719 +14.000000 3.300000 44.243024 +14.000000 3.400000 43.105330 +14.000000 3.500000 41.987636 +14.000000 3.600000 40.889941 +14.000000 3.700000 39.812247 +14.000000 3.800000 38.754553 +14.000000 3.900000 37.716858 +14.000000 4.000000 36.699164 +14.000000 4.100000 35.701469 +14.000000 4.200000 34.723775 +14.000000 4.300000 33.766081 +14.000000 4.400000 32.828386 +14.000000 4.500000 31.910692 +14.000000 4.600000 31.012998 +14.000000 4.700000 30.135303 +14.000000 4.800000 29.277609 +14.000000 4.900000 28.439915 +14.000000 5.000000 27.622220 +14.000000 5.100000 26.824526 +14.000000 5.200000 26.046832 +14.000000 5.300000 25.289137 +14.000000 5.400000 24.551443 +14.000000 5.500000 23.833749 +14.000000 5.600000 23.136054 +14.000000 5.700000 22.458360 +14.000000 5.800000 21.800666 +14.000000 5.900000 21.162971 +14.000000 6.000000 20.545277 +14.000000 6.100000 19.947582 +14.000000 6.200000 19.369888 +14.000000 6.300000 18.812194 +14.000000 6.400000 18.274499 +14.000000 6.500000 17.756805 +14.000000 6.600000 17.259111 +14.000000 6.700000 16.781416 +14.000000 6.800000 16.323722 +14.000000 6.900000 15.886028 +14.000000 7.000000 15.468333 +14.000000 7.100000 15.070639 +14.000000 7.200000 14.692945 +14.000000 7.300000 14.335250 +14.000000 7.400000 13.997556 +14.000000 7.500000 13.679862 +14.000000 7.600000 13.382167 +14.000000 7.700000 13.104473 +14.000000 7.800000 12.846778 +14.000000 7.900000 12.609084 +14.000000 8.000000 12.391390 +14.000000 8.100000 12.193695 +14.000000 8.200000 12.016001 +14.000000 8.300000 11.858307 +14.000000 8.400000 11.720612 +14.000000 8.500000 11.602918 +14.000000 8.600000 11.505224 +14.000000 8.700000 11.427529 +14.000000 8.800000 11.369835 +14.000000 8.900000 11.332141 +14.000000 9.000000 11.314446 +14.000000 9.100000 11.316752 +14.000000 9.200000 11.339058 +14.000000 9.300000 11.381363 +14.000000 9.400000 11.443669 +14.000000 9.500000 11.525974 +14.000000 9.600000 11.628280 +14.000000 9.700000 11.750586 +14.000000 9.800000 11.892891 +14.000000 9.900000 12.055197 +14.000000 10.000000 12.237503 +14.000000 10.100000 12.439808 +14.000000 10.200000 12.662114 +14.000000 10.300000 12.904420 +14.000000 10.400000 13.166725 +14.000000 10.500000 13.449031 +14.000000 10.600000 13.751337 +14.000000 10.700000 14.073642 +14.000000 10.800000 14.415948 +14.000000 10.900000 14.778254 +14.000000 11.000000 15.160559 +14.000000 11.100000 15.562865 +14.000000 11.200000 15.985171 +14.000000 11.300000 16.427476 +14.000000 11.400000 16.889782 +14.000000 11.500000 17.372087 +14.000000 11.600000 17.874393 +14.000000 11.700000 18.396699 +14.000000 11.800000 18.939004 +14.000000 11.900000 19.501310 +14.000000 12.000000 20.083616 +14.000000 12.100000 20.685921 +14.000000 12.200000 21.308227 +14.000000 12.300000 21.950533 +14.000000 12.400000 22.612838 +14.000000 12.500000 23.295144 +14.000000 12.600000 23.997450 +14.000000 12.700000 24.719755 +14.000000 12.800000 25.462061 +14.000000 12.900000 26.224367 +14.000000 13.000000 27.006672 +14.000000 13.100000 27.808978 +14.000000 13.200000 28.631283 +14.000000 13.300000 29.473589 +14.000000 13.400000 30.335895 +14.000000 13.500000 31.218200 +14.000000 13.600000 32.120506 +14.000000 13.700000 33.042812 +14.000000 13.800000 33.985117 +14.000000 13.900000 34.947423 +14.000000 14.000000 35.929729 +14.000000 14.100000 36.932034 +14.000000 14.200000 37.954340 +14.000000 14.300000 38.996646 +14.000000 14.400000 40.058951 +14.000000 14.500000 41.141257 +14.000000 14.600000 42.243563 +14.000000 14.700000 43.365868 +14.000000 14.800000 44.508174 +14.000000 14.900000 45.670479 +14.000000 15.000000 46.852785 + +14.100000 -5.000000 213.200629 +14.100000 -4.900000 210.362164 +14.100000 -4.800000 207.543698 +14.100000 -4.700000 204.745233 +14.100000 -4.600000 201.966768 +14.100000 -4.500000 199.208303 +14.100000 -4.400000 196.469838 +14.100000 -4.300000 193.751373 +14.100000 -4.200000 191.052908 +14.100000 -4.100000 188.374443 +14.100000 -4.000000 185.715978 +14.100000 -3.900000 183.077513 +14.100000 -3.800000 180.459048 +14.100000 -3.700000 177.860583 +14.100000 -3.600000 175.282118 +14.100000 -3.500000 172.723653 +14.100000 -3.400000 170.185188 +14.100000 -3.300000 167.666723 +14.100000 -3.200000 165.168258 +14.100000 -3.100000 162.689792 +14.100000 -3.000000 160.231327 +14.100000 -2.900000 157.792862 +14.100000 -2.800000 155.374397 +14.100000 -2.700000 152.975932 +14.100000 -2.600000 150.597467 +14.100000 -2.500000 148.239002 +14.100000 -2.400000 145.900537 +14.100000 -2.300000 143.582072 +14.100000 -2.200000 141.283607 +14.100000 -2.100000 139.005142 +14.100000 -2.000000 136.746677 +14.100000 -1.900000 134.508212 +14.100000 -1.800000 132.289747 +14.100000 -1.700000 130.091282 +14.100000 -1.600000 127.912817 +14.100000 -1.500000 125.754352 +14.100000 -1.400000 123.615887 +14.100000 -1.300000 121.497421 +14.100000 -1.200000 119.398956 +14.100000 -1.100000 117.320491 +14.100000 -1.000000 115.262026 +14.100000 -0.900000 113.223561 +14.100000 -0.800000 111.205096 +14.100000 -0.700000 109.206631 +14.100000 -0.600000 107.228166 +14.100000 -0.500000 105.269701 +14.100000 -0.400000 103.331236 +14.100000 -0.300000 101.412771 +14.100000 -0.200000 99.514306 +14.100000 -0.100000 97.635841 +14.100000 -0.000000 95.777376 +14.100000 0.100000 93.938911 +14.100000 0.200000 92.120446 +14.100000 0.300000 90.321981 +14.100000 0.400000 88.543515 +14.100000 0.500000 86.785050 +14.100000 0.600000 85.046585 +14.100000 0.700000 83.328120 +14.100000 0.800000 81.629655 +14.100000 0.900000 79.951190 +14.100000 1.000000 78.292725 +14.100000 1.100000 76.654260 +14.100000 1.200000 75.035795 +14.100000 1.300000 73.437330 +14.100000 1.400000 71.858865 +14.100000 1.500000 70.300400 +14.100000 1.600000 68.761935 +14.100000 1.700000 67.243470 +14.100000 1.800000 65.745005 +14.100000 1.900000 64.266540 +14.100000 2.000000 62.808075 +14.100000 2.100000 61.369610 +14.100000 2.200000 59.951144 +14.100000 2.300000 58.552679 +14.100000 2.400000 57.174214 +14.100000 2.500000 55.815749 +14.100000 2.600000 54.477284 +14.100000 2.700000 53.158819 +14.100000 2.800000 51.860354 +14.100000 2.900000 50.581889 +14.100000 3.000000 49.323424 +14.100000 3.100000 48.084959 +14.100000 3.200000 46.866494 +14.100000 3.300000 45.668029 +14.100000 3.400000 44.489564 +14.100000 3.500000 43.331099 +14.100000 3.600000 42.192634 +14.100000 3.700000 41.074169 +14.100000 3.800000 39.975704 +14.100000 3.900000 38.897238 +14.100000 4.000000 37.838773 +14.100000 4.100000 36.800308 +14.100000 4.200000 35.781843 +14.100000 4.300000 34.783378 +14.100000 4.400000 33.804913 +14.100000 4.500000 32.846448 +14.100000 4.600000 31.907983 +14.100000 4.700000 30.989518 +14.100000 4.800000 30.091053 +14.100000 4.900000 29.212588 +14.100000 5.000000 28.354123 +14.100000 5.100000 27.515658 +14.100000 5.200000 26.697193 +14.100000 5.300000 25.898728 +14.100000 5.400000 25.120263 +14.100000 5.500000 24.361798 +14.100000 5.600000 23.623332 +14.100000 5.700000 22.904867 +14.100000 5.800000 22.206402 +14.100000 5.900000 21.527937 +14.100000 6.000000 20.869472 +14.100000 6.100000 20.231007 +14.100000 6.200000 19.612542 +14.100000 6.300000 19.014077 +14.100000 6.400000 18.435612 +14.100000 6.500000 17.877147 +14.100000 6.600000 17.338682 +14.100000 6.700000 16.820217 +14.100000 6.800000 16.321752 +14.100000 6.900000 15.843287 +14.100000 7.000000 15.384822 +14.100000 7.100000 14.946357 +14.100000 7.200000 14.527892 +14.100000 7.300000 14.129427 +14.100000 7.400000 13.750961 +14.100000 7.500000 13.392496 +14.100000 7.600000 13.054031 +14.100000 7.700000 12.735566 +14.100000 7.800000 12.437101 +14.100000 7.900000 12.158636 +14.100000 8.000000 11.900171 +14.100000 8.100000 11.661706 +14.100000 8.200000 11.443241 +14.100000 8.300000 11.244776 +14.100000 8.400000 11.066311 +14.100000 8.500000 10.907846 +14.100000 8.600000 10.769381 +14.100000 8.700000 10.650916 +14.100000 8.800000 10.552451 +14.100000 8.900000 10.473986 +14.100000 9.000000 10.415521 +14.100000 9.100000 10.377055 +14.100000 9.200000 10.358590 +14.100000 9.300000 10.360125 +14.100000 9.400000 10.381660 +14.100000 9.500000 10.423195 +14.100000 9.600000 10.484730 +14.100000 9.700000 10.566265 +14.100000 9.800000 10.667800 +14.100000 9.900000 10.789335 +14.100000 10.000000 10.930870 +14.100000 10.100000 11.092405 +14.100000 10.200000 11.273940 +14.100000 10.300000 11.475475 +14.100000 10.400000 11.697010 +14.100000 10.500000 11.938545 +14.100000 10.600000 12.200080 +14.100000 10.700000 12.481615 +14.100000 10.800000 12.783150 +14.100000 10.900000 13.104684 +14.100000 11.000000 13.446219 +14.100000 11.100000 13.807754 +14.100000 11.200000 14.189289 +14.100000 11.300000 14.590824 +14.100000 11.400000 15.012359 +14.100000 11.500000 15.453894 +14.100000 11.600000 15.915429 +14.100000 11.700000 16.396964 +14.100000 11.800000 16.898499 +14.100000 11.900000 17.420034 +14.100000 12.000000 17.961569 +14.100000 12.100000 18.523104 +14.100000 12.200000 19.104639 +14.100000 12.300000 19.706174 +14.100000 12.400000 20.327709 +14.100000 12.500000 20.969244 +14.100000 12.600000 21.630778 +14.100000 12.700000 22.312313 +14.100000 12.800000 23.013848 +14.100000 12.900000 23.735383 +14.100000 13.000000 24.476918 +14.100000 13.100000 25.238453 +14.100000 13.200000 26.019988 +14.100000 13.300000 26.821523 +14.100000 13.400000 27.643058 +14.100000 13.500000 28.484593 +14.100000 13.600000 29.346128 +14.100000 13.700000 30.227663 +14.100000 13.800000 31.129198 +14.100000 13.900000 32.050733 +14.100000 14.000000 32.992268 +14.100000 14.100000 33.953803 +14.100000 14.200000 34.935338 +14.100000 14.300000 35.936872 +14.100000 14.400000 36.958407 +14.100000 14.500000 37.999942 +14.100000 14.600000 39.061477 +14.100000 14.700000 40.143012 +14.100000 14.800000 41.244547 +14.100000 14.900000 42.366082 +14.100000 15.000000 43.507617 + +14.200000 -5.000000 218.163805 +14.200000 -4.900000 215.284052 +14.200000 -4.800000 212.424300 +14.200000 -4.700000 209.584547 +14.200000 -4.600000 206.764795 +14.200000 -4.500000 203.965042 +14.200000 -4.400000 201.185290 +14.200000 -4.300000 198.425537 +14.200000 -4.200000 195.685785 +14.200000 -4.100000 192.966032 +14.200000 -4.000000 190.266280 +14.200000 -3.900000 187.586527 +14.200000 -3.800000 184.926775 +14.200000 -3.700000 182.287022 +14.200000 -3.600000 179.667270 +14.200000 -3.500000 177.067517 +14.200000 -3.400000 174.487765 +14.200000 -3.300000 171.928012 +14.200000 -3.200000 169.388260 +14.200000 -3.100000 166.868507 +14.200000 -3.000000 164.368755 +14.200000 -2.900000 161.889002 +14.200000 -2.800000 159.429250 +14.200000 -2.700000 156.989497 +14.200000 -2.600000 154.569745 +14.200000 -2.500000 152.169992 +14.200000 -2.400000 149.790240 +14.200000 -2.300000 147.430487 +14.200000 -2.200000 145.090735 +14.200000 -2.100000 142.770982 +14.200000 -2.000000 140.471230 +14.200000 -1.900000 138.191477 +14.200000 -1.800000 135.931725 +14.200000 -1.700000 133.691972 +14.200000 -1.600000 131.472220 +14.200000 -1.500000 129.272467 +14.200000 -1.400000 127.092715 +14.200000 -1.300000 124.932962 +14.200000 -1.200000 122.793210 +14.200000 -1.100000 120.673457 +14.200000 -1.000000 118.573705 +14.200000 -0.900000 116.493952 +14.200000 -0.800000 114.434200 +14.200000 -0.700000 112.394447 +14.200000 -0.600000 110.374695 +14.200000 -0.500000 108.374942 +14.200000 -0.400000 106.395190 +14.200000 -0.300000 104.435437 +14.200000 -0.200000 102.495685 +14.200000 -0.100000 100.575932 +14.200000 -0.000000 98.676180 +14.200000 0.100000 96.796427 +14.200000 0.200000 94.936675 +14.200000 0.300000 93.096922 +14.200000 0.400000 91.277170 +14.200000 0.500000 89.477417 +14.200000 0.600000 87.697665 +14.200000 0.700000 85.937912 +14.200000 0.800000 84.198160 +14.200000 0.900000 82.478407 +14.200000 1.000000 80.778655 +14.200000 1.100000 79.098902 +14.200000 1.200000 77.439150 +14.200000 1.300000 75.799397 +14.200000 1.400000 74.179645 +14.200000 1.500000 72.579892 +14.200000 1.600000 71.000140 +14.200000 1.700000 69.440387 +14.200000 1.800000 67.900635 +14.200000 1.900000 66.380882 +14.200000 2.000000 64.881130 +14.200000 2.100000 63.401377 +14.200000 2.200000 61.941625 +14.200000 2.300000 60.501872 +14.200000 2.400000 59.082120 +14.200000 2.500000 57.682367 +14.200000 2.600000 56.302615 +14.200000 2.700000 54.942862 +14.200000 2.800000 53.603110 +14.200000 2.900000 52.283357 +14.200000 3.000000 50.983605 +14.200000 3.100000 49.703852 +14.200000 3.200000 48.444100 +14.200000 3.300000 47.204347 +14.200000 3.400000 45.984595 +14.200000 3.500000 44.784842 +14.200000 3.600000 43.605090 +14.200000 3.700000 42.445337 +14.200000 3.800000 41.305585 +14.200000 3.900000 40.185832 +14.200000 4.000000 39.086080 +14.200000 4.100000 38.006327 +14.200000 4.200000 36.946575 +14.200000 4.300000 35.906822 +14.200000 4.400000 34.887070 +14.200000 4.500000 33.887317 +14.200000 4.600000 32.907565 +14.200000 4.700000 31.947812 +14.200000 4.800000 31.008060 +14.200000 4.900000 30.088307 +14.200000 5.000000 29.188555 +14.200000 5.100000 28.308802 +14.200000 5.200000 27.449050 +14.200000 5.300000 26.609297 +14.200000 5.400000 25.789545 +14.200000 5.500000 24.989792 +14.200000 5.600000 24.210040 +14.200000 5.700000 23.450287 +14.200000 5.800000 22.710535 +14.200000 5.900000 21.990782 +14.200000 6.000000 21.291030 +14.200000 6.100000 20.611277 +14.200000 6.200000 19.951525 +14.200000 6.300000 19.311772 +14.200000 6.400000 18.692020 +14.200000 6.500000 18.092267 +14.200000 6.600000 17.512515 +14.200000 6.700000 16.952762 +14.200000 6.800000 16.413010 +14.200000 6.900000 15.893257 +14.200000 7.000000 15.393505 +14.200000 7.100000 14.913752 +14.200000 7.200000 14.454000 +14.200000 7.300000 14.014247 +14.200000 7.400000 13.594495 +14.200000 7.500000 13.194742 +14.200000 7.600000 12.814990 +14.200000 7.700000 12.455237 +14.200000 7.800000 12.115485 +14.200000 7.900000 11.795732 +14.200000 8.000000 11.495980 +14.200000 8.100000 11.216227 +14.200000 8.200000 10.956475 +14.200000 8.300000 10.716722 +14.200000 8.400000 10.496970 +14.200000 8.500000 10.297217 +14.200000 8.600000 10.117465 +14.200000 8.700000 9.957712 +14.200000 8.800000 9.817960 +14.200000 8.900000 9.698207 +14.200000 9.000000 9.598455 +14.200000 9.100000 9.518702 +14.200000 9.200000 9.458950 +14.200000 9.300000 9.419197 +14.200000 9.400000 9.399445 +14.200000 9.500000 9.399692 +14.200000 9.600000 9.419940 +14.200000 9.700000 9.460187 +14.200000 9.800000 9.520435 +14.200000 9.900000 9.600682 +14.200000 10.000000 9.700930 +14.200000 10.100000 9.821177 +14.200000 10.200000 9.961425 +14.200000 10.300000 10.121672 +14.200000 10.400000 10.301920 +14.200000 10.500000 10.502167 +14.200000 10.600000 10.722415 +14.200000 10.700000 10.962662 +14.200000 10.800000 11.222910 +14.200000 10.900000 11.503157 +14.200000 11.000000 11.803405 +14.200000 11.100000 12.123652 +14.200000 11.200000 12.463900 +14.200000 11.300000 12.824147 +14.200000 11.400000 13.204395 +14.200000 11.500000 13.604642 +14.200000 11.600000 14.024890 +14.200000 11.700000 14.465137 +14.200000 11.800000 14.925385 +14.200000 11.900000 15.405632 +14.200000 12.000000 15.905880 +14.200000 12.100000 16.426127 +14.200000 12.200000 16.966375 +14.200000 12.300000 17.526622 +14.200000 12.400000 18.106870 +14.200000 12.500000 18.707117 +14.200000 12.600000 19.327365 +14.200000 12.700000 19.967612 +14.200000 12.800000 20.627860 +14.200000 12.900000 21.308107 +14.200000 13.000000 22.008355 +14.200000 13.100000 22.728602 +14.200000 13.200000 23.468850 +14.200000 13.300000 24.229097 +14.200000 13.400000 25.009345 +14.200000 13.500000 25.809592 +14.200000 13.600000 26.629840 +14.200000 13.700000 27.470087 +14.200000 13.800000 28.330335 +14.200000 13.900000 29.210582 +14.200000 14.000000 30.110830 +14.200000 14.100000 31.031077 +14.200000 14.200000 31.971325 +14.200000 14.300000 32.931572 +14.200000 14.400000 33.911820 +14.200000 14.500000 34.912067 +14.200000 14.600000 35.932315 +14.200000 14.700000 36.972562 +14.200000 14.800000 38.032810 +14.200000 14.900000 39.113057 +14.200000 15.000000 40.213305 + +14.300000 -5.000000 223.293973 +14.300000 -4.900000 220.372417 +14.300000 -4.800000 217.470860 +14.300000 -4.700000 214.589303 +14.300000 -4.600000 211.727747 +14.300000 -4.500000 208.886190 +14.300000 -4.400000 206.064633 +14.300000 -4.300000 203.263077 +14.300000 -4.200000 200.481520 +14.300000 -4.100000 197.719963 +14.300000 -4.000000 194.978407 +14.300000 -3.900000 192.256850 +14.300000 -3.800000 189.555293 +14.300000 -3.700000 186.873737 +14.300000 -3.600000 184.212180 +14.300000 -3.500000 181.570623 +14.300000 -3.400000 178.949067 +14.300000 -3.300000 176.347510 +14.300000 -3.200000 173.765953 +14.300000 -3.100000 171.204397 +14.300000 -3.000000 168.662840 +14.300000 -2.900000 166.141283 +14.300000 -2.800000 163.639726 +14.300000 -2.700000 161.158170 +14.300000 -2.600000 158.696613 +14.300000 -2.500000 156.255056 +14.300000 -2.400000 153.833500 +14.300000 -2.300000 151.431943 +14.300000 -2.200000 149.050386 +14.300000 -2.100000 146.688830 +14.300000 -2.000000 144.347273 +14.300000 -1.900000 142.025716 +14.300000 -1.800000 139.724160 +14.300000 -1.700000 137.442603 +14.300000 -1.600000 135.181046 +14.300000 -1.500000 132.939490 +14.300000 -1.400000 130.717933 +14.300000 -1.300000 128.516376 +14.300000 -1.200000 126.334820 +14.300000 -1.100000 124.173263 +14.300000 -1.000000 122.031706 +14.300000 -0.900000 119.910150 +14.300000 -0.800000 117.808593 +14.300000 -0.700000 115.727036 +14.300000 -0.600000 113.665479 +14.300000 -0.500000 111.623923 +14.300000 -0.400000 109.602366 +14.300000 -0.300000 107.600809 +14.300000 -0.200000 105.619253 +14.300000 -0.100000 103.657696 +14.300000 -0.000000 101.716139 +14.300000 0.100000 99.794583 +14.300000 0.200000 97.893026 +14.300000 0.300000 96.011469 +14.300000 0.400000 94.149913 +14.300000 0.500000 92.308356 +14.300000 0.600000 90.486799 +14.300000 0.700000 88.685243 +14.300000 0.800000 86.903686 +14.300000 0.900000 85.142129 +14.300000 1.000000 83.400573 +14.300000 1.100000 81.679016 +14.300000 1.200000 79.977459 +14.300000 1.300000 78.295902 +14.300000 1.400000 76.634346 +14.300000 1.500000 74.992789 +14.300000 1.600000 73.371232 +14.300000 1.700000 71.769676 +14.300000 1.800000 70.188119 +14.300000 1.900000 68.626562 +14.300000 2.000000 67.085006 +14.300000 2.100000 65.563449 +14.300000 2.200000 64.061892 +14.300000 2.300000 62.580336 +14.300000 2.400000 61.118779 +14.300000 2.500000 59.677222 +14.300000 2.600000 58.255666 +14.300000 2.700000 56.854109 +14.300000 2.800000 55.472552 +14.300000 2.900000 54.110996 +14.300000 3.000000 52.769439 +14.300000 3.100000 51.447882 +14.300000 3.200000 50.146326 +14.300000 3.300000 48.864769 +14.300000 3.400000 47.603212 +14.300000 3.500000 46.361655 +14.300000 3.600000 45.140099 +14.300000 3.700000 43.938542 +14.300000 3.800000 42.756985 +14.300000 3.900000 41.595429 +14.300000 4.000000 40.453872 +14.300000 4.100000 39.332315 +14.300000 4.200000 38.230759 +14.300000 4.300000 37.149202 +14.300000 4.400000 36.087645 +14.300000 4.500000 35.046089 +14.300000 4.600000 34.024532 +14.300000 4.700000 33.022975 +14.300000 4.800000 32.041419 +14.300000 4.900000 31.079862 +14.300000 5.000000 30.138305 +14.300000 5.100000 29.216749 +14.300000 5.200000 28.315192 +14.300000 5.300000 27.433635 +14.300000 5.400000 26.572079 +14.300000 5.500000 25.730522 +14.300000 5.600000 24.908965 +14.300000 5.700000 24.107408 +14.300000 5.800000 23.325852 +14.300000 5.900000 22.564295 +14.300000 6.000000 21.822738 +14.300000 6.100000 21.101182 +14.300000 6.200000 20.399625 +14.300000 6.300000 19.718068 +14.300000 6.400000 19.056512 +14.300000 6.500000 18.414955 +14.300000 6.600000 17.793398 +14.300000 6.700000 17.191842 +14.300000 6.800000 16.610285 +14.300000 6.900000 16.048728 +14.300000 7.000000 15.507172 +14.300000 7.100000 14.985615 +14.300000 7.200000 14.484058 +14.300000 7.300000 14.002502 +14.300000 7.400000 13.540945 +14.300000 7.500000 13.099388 +14.300000 7.600000 12.677831 +14.300000 7.700000 12.276275 +14.300000 7.800000 11.894718 +14.300000 7.900000 11.533161 +14.300000 8.000000 11.191605 +14.300000 8.100000 10.870048 +14.300000 8.200000 10.568491 +14.300000 8.300000 10.286935 +14.300000 8.400000 10.025378 +14.300000 8.500000 9.783821 +14.300000 8.600000 9.562265 +14.300000 8.700000 9.360708 +14.300000 8.800000 9.179151 +14.300000 8.900000 9.017595 +14.300000 9.000000 8.876038 +14.300000 9.100000 8.754481 +14.300000 9.200000 8.652925 +14.300000 9.300000 8.571368 +14.300000 9.400000 8.509811 +14.300000 9.500000 8.468255 +14.300000 9.600000 8.446698 +14.300000 9.700000 8.445141 +14.300000 9.800000 8.463584 +14.300000 9.900000 8.502028 +14.300000 10.000000 8.560471 +14.300000 10.100000 8.638914 +14.300000 10.200000 8.737358 +14.300000 10.300000 8.855801 +14.300000 10.400000 8.994244 +14.300000 10.500000 9.152688 +14.300000 10.600000 9.331131 +14.300000 10.700000 9.529574 +14.300000 10.800000 9.748018 +14.300000 10.900000 9.986461 +14.300000 11.000000 10.244904 +14.300000 11.100000 10.523348 +14.300000 11.200000 10.821791 +14.300000 11.300000 11.140234 +14.300000 11.400000 11.478678 +14.300000 11.500000 11.837121 +14.300000 11.600000 12.215564 +14.300000 11.700000 12.614008 +14.300000 11.800000 13.032451 +14.300000 11.900000 13.470894 +14.300000 12.000000 13.929337 +14.300000 12.100000 14.407781 +14.300000 12.200000 14.906224 +14.300000 12.300000 15.424667 +14.300000 12.400000 15.963111 +14.300000 12.500000 16.521554 +14.300000 12.600000 17.099997 +14.300000 12.700000 17.698441 +14.300000 12.800000 18.316884 +14.300000 12.900000 18.955327 +14.300000 13.000000 19.613771 +14.300000 13.100000 20.292214 +14.300000 13.200000 20.990657 +14.300000 13.300000 21.709101 +14.300000 13.400000 22.447544 +14.300000 13.500000 23.205987 +14.300000 13.600000 23.984431 +14.300000 13.700000 24.782874 +14.300000 13.800000 25.601317 +14.300000 13.900000 26.439760 +14.300000 14.000000 27.298204 +14.300000 14.100000 28.176647 +14.300000 14.200000 29.075090 +14.300000 14.300000 29.993534 +14.300000 14.400000 30.931977 +14.300000 14.500000 31.890420 +14.300000 14.600000 32.868864 +14.300000 14.700000 33.867307 +14.300000 14.800000 34.885750 +14.300000 14.900000 35.924194 +14.300000 15.000000 36.982637 + +14.400000 -5.000000 228.603904 +14.400000 -4.900000 225.640027 +14.400000 -4.800000 222.696149 +14.400000 -4.700000 219.772271 +14.400000 -4.600000 216.868394 +14.400000 -4.500000 213.984516 +14.400000 -4.400000 211.120639 +14.400000 -4.300000 208.276761 +14.400000 -4.200000 205.452883 +14.400000 -4.100000 202.649006 +14.400000 -4.000000 199.865128 +14.400000 -3.900000 197.101251 +14.400000 -3.800000 194.357373 +14.400000 -3.700000 191.633495 +14.400000 -3.600000 188.929618 +14.400000 -3.500000 186.245740 +14.400000 -3.400000 183.581863 +14.400000 -3.300000 180.937985 +14.400000 -3.200000 178.314107 +14.400000 -3.100000 175.710230 +14.400000 -3.000000 173.126352 +14.400000 -2.900000 170.562475 +14.400000 -2.800000 168.018597 +14.400000 -2.700000 165.494719 +14.400000 -2.600000 162.990842 +14.400000 -2.500000 160.506964 +14.400000 -2.400000 158.043087 +14.400000 -2.300000 155.599209 +14.400000 -2.200000 153.175331 +14.400000 -2.100000 150.771454 +14.400000 -2.000000 148.387576 +14.400000 -1.900000 146.023699 +14.400000 -1.800000 143.679821 +14.400000 -1.700000 141.355943 +14.400000 -1.600000 139.052066 +14.400000 -1.500000 136.768188 +14.400000 -1.400000 134.504311 +14.400000 -1.300000 132.260433 +14.400000 -1.200000 130.036555 +14.400000 -1.100000 127.832678 +14.400000 -1.000000 125.648800 +14.400000 -0.900000 123.484923 +14.400000 -0.800000 121.341045 +14.400000 -0.700000 119.217167 +14.400000 -0.600000 117.113290 +14.400000 -0.500000 115.029412 +14.400000 -0.400000 112.965535 +14.400000 -0.300000 110.921657 +14.400000 -0.200000 108.897779 +14.400000 -0.100000 106.893902 +14.400000 -0.000000 104.910024 +14.400000 0.100000 102.946147 +14.400000 0.200000 101.002269 +14.400000 0.300000 99.078391 +14.400000 0.400000 97.174514 +14.400000 0.500000 95.290636 +14.400000 0.600000 93.426759 +14.400000 0.700000 91.582881 +14.400000 0.800000 89.759003 +14.400000 0.900000 87.955126 +14.400000 1.000000 86.171248 +14.400000 1.100000 84.407371 +14.400000 1.200000 82.663493 +14.400000 1.300000 80.939615 +14.400000 1.400000 79.235738 +14.400000 1.500000 77.551860 +14.400000 1.600000 75.887983 +14.400000 1.700000 74.244105 +14.400000 1.800000 72.620227 +14.400000 1.900000 71.016350 +14.400000 2.000000 69.432472 +14.400000 2.100000 67.868595 +14.400000 2.200000 66.324717 +14.400000 2.300000 64.800839 +14.400000 2.400000 63.296962 +14.400000 2.500000 61.813084 +14.400000 2.600000 60.349207 +14.400000 2.700000 58.905329 +14.400000 2.800000 57.481451 +14.400000 2.900000 56.077574 +14.400000 3.000000 54.693696 +14.400000 3.100000 53.329819 +14.400000 3.200000 51.985941 +14.400000 3.300000 50.662063 +14.400000 3.400000 49.358186 +14.400000 3.500000 48.074308 +14.400000 3.600000 46.810431 +14.400000 3.700000 45.566553 +14.400000 3.800000 44.342675 +14.400000 3.900000 43.138798 +14.400000 4.000000 41.954920 +14.400000 4.100000 40.791042 +14.400000 4.200000 39.647165 +14.400000 4.300000 38.523287 +14.400000 4.400000 37.419410 +14.400000 4.500000 36.335532 +14.400000 4.600000 35.271654 +14.400000 4.700000 34.227777 +14.400000 4.800000 33.203899 +14.400000 4.900000 32.200022 +14.400000 5.000000 31.216144 +14.400000 5.100000 30.252266 +14.400000 5.200000 29.308389 +14.400000 5.300000 28.384511 +14.400000 5.400000 27.480634 +14.400000 5.500000 26.596756 +14.400000 5.600000 25.732878 +14.400000 5.700000 24.889001 +14.400000 5.800000 24.065123 +14.400000 5.900000 23.261246 +14.400000 6.000000 22.477368 +14.400000 6.100000 21.713490 +14.400000 6.200000 20.969613 +14.400000 6.300000 20.245735 +14.400000 6.400000 19.541858 +14.400000 6.500000 18.857980 +14.400000 6.600000 18.194102 +14.400000 6.700000 17.550225 +14.400000 6.800000 16.926347 +14.400000 6.900000 16.322470 +14.400000 7.000000 15.738592 +14.400000 7.100000 15.174714 +14.400000 7.200000 14.630837 +14.400000 7.300000 14.106959 +14.400000 7.400000 13.603082 +14.400000 7.500000 13.119204 +14.400000 7.600000 12.655326 +14.400000 7.700000 12.211449 +14.400000 7.800000 11.787571 +14.400000 7.900000 11.383694 +14.400000 8.000000 10.999816 +14.400000 8.100000 10.635938 +14.400000 8.200000 10.292061 +14.400000 8.300000 9.968183 +14.400000 8.400000 9.664306 +14.400000 8.500000 9.380428 +14.400000 8.600000 9.116550 +14.400000 8.700000 8.872673 +14.400000 8.800000 8.648795 +14.400000 8.900000 8.444918 +14.400000 9.000000 8.261040 +14.400000 9.100000 8.097162 +14.400000 9.200000 7.953285 +14.400000 9.300000 7.829407 +14.400000 9.400000 7.725530 +14.400000 9.500000 7.641652 +14.400000 9.600000 7.577774 +14.400000 9.700000 7.533897 +14.400000 9.800000 7.510019 +14.400000 9.900000 7.506142 +14.400000 10.000000 7.522264 +14.400000 10.100000 7.558386 +14.400000 10.200000 7.614509 +14.400000 10.300000 7.690631 +14.400000 10.400000 7.786754 +14.400000 10.500000 7.902876 +14.400000 10.600000 8.038998 +14.400000 10.700000 8.195121 +14.400000 10.800000 8.371243 +14.400000 10.900000 8.567366 +14.400000 11.000000 8.783488 +14.400000 11.100000 9.019610 +14.400000 11.200000 9.275733 +14.400000 11.300000 9.551855 +14.400000 11.400000 9.847978 +14.400000 11.500000 10.164100 +14.400000 11.600000 10.500222 +14.400000 11.700000 10.856345 +14.400000 11.800000 11.232467 +14.400000 11.900000 11.628590 +14.400000 12.000000 12.044712 +14.400000 12.100000 12.480834 +14.400000 12.200000 12.936957 +14.400000 12.300000 13.413079 +14.400000 12.400000 13.909202 +14.400000 12.500000 14.425324 +14.400000 12.600000 14.961446 +14.400000 12.700000 15.517569 +14.400000 12.800000 16.093691 +14.400000 12.900000 16.689814 +14.400000 13.000000 17.305936 +14.400000 13.100000 17.942058 +14.400000 13.200000 18.598181 +14.400000 13.300000 19.274303 +14.400000 13.400000 19.970425 +14.400000 13.500000 20.686548 +14.400000 13.600000 21.422670 +14.400000 13.700000 22.178793 +14.400000 13.800000 22.954915 +14.400000 13.900000 23.751037 +14.400000 14.000000 24.567160 +14.400000 14.100000 25.403282 +14.400000 14.200000 26.259405 +14.400000 14.300000 27.135527 +14.400000 14.400000 28.031649 +14.400000 14.500000 28.947772 +14.400000 14.600000 29.883894 +14.400000 14.700000 30.840017 +14.400000 14.800000 31.816139 +14.400000 14.900000 32.812261 +14.400000 15.000000 33.828384 + +14.500000 -5.000000 234.106251 +14.500000 -4.900000 231.099536 +14.500000 -4.800000 228.112821 +14.500000 -4.700000 225.146105 +14.500000 -4.600000 222.199390 +14.500000 -4.500000 219.272675 +14.500000 -4.400000 216.365960 +14.500000 -4.300000 213.479244 +14.500000 -4.200000 210.612529 +14.500000 -4.100000 207.765814 +14.500000 -4.000000 204.939099 +14.500000 -3.900000 202.132383 +14.500000 -3.800000 199.345668 +14.500000 -3.700000 196.578953 +14.500000 -3.600000 193.832238 +14.500000 -3.500000 191.105522 +14.500000 -3.400000 188.398807 +14.500000 -3.300000 185.712092 +14.500000 -3.200000 183.045377 +14.500000 -3.100000 180.398661 +14.500000 -3.000000 177.771946 +14.500000 -2.900000 175.165231 +14.500000 -2.800000 172.578515 +14.500000 -2.700000 170.011800 +14.500000 -2.600000 167.465085 +14.500000 -2.500000 164.938370 +14.500000 -2.400000 162.431654 +14.500000 -2.300000 159.944939 +14.500000 -2.200000 157.478224 +14.500000 -2.100000 155.031509 +14.500000 -2.000000 152.604793 +14.500000 -1.900000 150.198078 +14.500000 -1.800000 147.811363 +14.500000 -1.700000 145.444648 +14.500000 -1.600000 143.097932 +14.500000 -1.500000 140.771217 +14.500000 -1.400000 138.464502 +14.500000 -1.300000 136.177787 +14.500000 -1.200000 133.911071 +14.500000 -1.100000 131.664356 +14.500000 -1.000000 129.437641 +14.500000 -0.900000 127.230926 +14.500000 -0.800000 125.044210 +14.500000 -0.700000 122.877495 +14.500000 -0.600000 120.730780 +14.500000 -0.500000 118.604064 +14.500000 -0.400000 116.497349 +14.500000 -0.300000 114.410634 +14.500000 -0.200000 112.343919 +14.500000 -0.100000 110.297203 +14.500000 -0.000000 108.270488 +14.500000 0.100000 106.263773 +14.500000 0.200000 104.277058 +14.500000 0.300000 102.310342 +14.500000 0.400000 100.363627 +14.500000 0.500000 98.436912 +14.500000 0.600000 96.530197 +14.500000 0.700000 94.643481 +14.500000 0.800000 92.776766 +14.500000 0.900000 90.930051 +14.500000 1.000000 89.103336 +14.500000 1.100000 87.296620 +14.500000 1.200000 85.509905 +14.500000 1.300000 83.743190 +14.500000 1.400000 81.996475 +14.500000 1.500000 80.269759 +14.500000 1.600000 78.563044 +14.500000 1.700000 76.876329 +14.500000 1.800000 75.209614 +14.500000 1.900000 73.562898 +14.500000 2.000000 71.936183 +14.500000 2.100000 70.329468 +14.500000 2.200000 68.742752 +14.500000 2.300000 67.176037 +14.500000 2.400000 65.629322 +14.500000 2.500000 64.102607 +14.500000 2.600000 62.595891 +14.500000 2.700000 61.109176 +14.500000 2.800000 59.642461 +14.500000 2.900000 58.195746 +14.500000 3.000000 56.769030 +14.500000 3.100000 55.362315 +14.500000 3.200000 53.975600 +14.500000 3.300000 52.608885 +14.500000 3.400000 51.262169 +14.500000 3.500000 49.935454 +14.500000 3.600000 48.628739 +14.500000 3.700000 47.342024 +14.500000 3.800000 46.075308 +14.500000 3.900000 44.828593 +14.500000 4.000000 43.601878 +14.500000 4.100000 42.395163 +14.500000 4.200000 41.208447 +14.500000 4.300000 40.041732 +14.500000 4.400000 38.895017 +14.500000 4.500000 37.768301 +14.500000 4.600000 36.661586 +14.500000 4.700000 35.574871 +14.500000 4.800000 34.508156 +14.500000 4.900000 33.461440 +14.500000 5.000000 32.434725 +14.500000 5.100000 31.428010 +14.500000 5.200000 30.441295 +14.500000 5.300000 29.474579 +14.500000 5.400000 28.527864 +14.500000 5.500000 27.601149 +14.500000 5.600000 26.694434 +14.500000 5.700000 25.807718 +14.500000 5.800000 24.941003 +14.500000 5.900000 24.094288 +14.500000 6.000000 23.267573 +14.500000 6.100000 22.460857 +14.500000 6.200000 21.674142 +14.500000 6.300000 20.907427 +14.500000 6.400000 20.160712 +14.500000 6.500000 19.433996 +14.500000 6.600000 18.727281 +14.500000 6.700000 18.040566 +14.500000 6.800000 17.373851 +14.500000 6.900000 16.727135 +14.500000 7.000000 16.100420 +14.500000 7.100000 15.493705 +14.500000 7.200000 14.906989 +14.500000 7.300000 14.340274 +14.500000 7.400000 13.793559 +14.500000 7.500000 13.266844 +14.500000 7.600000 12.760128 +14.500000 7.700000 12.273413 +14.500000 7.800000 11.806698 +14.500000 7.900000 11.359983 +14.500000 8.000000 10.933267 +14.500000 8.100000 10.526552 +14.500000 8.200000 10.139837 +14.500000 8.300000 9.773122 +14.500000 8.400000 9.426406 +14.500000 8.500000 9.099691 +14.500000 8.600000 8.792976 +14.500000 8.700000 8.506261 +14.500000 8.800000 8.239545 +14.500000 8.900000 7.992830 +14.500000 9.000000 7.766115 +14.500000 9.100000 7.559400 +14.500000 9.200000 7.372684 +14.500000 9.300000 7.205969 +14.500000 9.400000 7.059254 +14.500000 9.500000 6.932539 +14.500000 9.600000 6.825823 +14.500000 9.700000 6.739108 +14.500000 9.800000 6.672393 +14.500000 9.900000 6.625677 +14.500000 10.000000 6.598962 +14.500000 10.100000 6.592247 +14.500000 10.200000 6.605532 +14.500000 10.300000 6.638816 +14.500000 10.400000 6.692101 +14.500000 10.500000 6.765386 +14.500000 10.600000 6.858671 +14.500000 10.700000 6.971955 +14.500000 10.800000 7.105240 +14.500000 10.900000 7.258525 +14.500000 11.000000 7.431810 +14.500000 11.100000 7.625094 +14.500000 11.200000 7.838379 +14.500000 11.300000 8.071664 +14.500000 11.400000 8.324949 +14.500000 11.500000 8.598233 +14.500000 11.600000 8.891518 +14.500000 11.700000 9.204803 +14.500000 11.800000 9.538088 +14.500000 11.900000 9.891372 +14.500000 12.000000 10.264657 +14.500000 12.100000 10.657942 +14.500000 12.200000 11.071226 +14.500000 12.300000 11.504511 +14.500000 12.400000 11.957796 +14.500000 12.500000 12.431081 +14.500000 12.600000 12.924365 +14.500000 12.700000 13.437650 +14.500000 12.800000 13.970935 +14.500000 12.900000 14.524220 +14.500000 13.000000 15.097504 +14.500000 13.100000 15.690789 +14.500000 13.200000 16.304074 +14.500000 13.300000 16.937359 +14.500000 13.400000 17.590643 +14.500000 13.500000 18.263928 +14.500000 13.600000 18.957213 +14.500000 13.700000 19.670498 +14.500000 13.800000 20.403782 +14.500000 13.900000 21.157067 +14.500000 14.000000 21.930352 +14.500000 14.100000 22.723637 +14.500000 14.200000 23.536921 +14.500000 14.300000 24.370206 +14.500000 14.400000 25.223491 +14.500000 14.500000 26.096776 +14.500000 14.600000 26.990060 +14.500000 14.700000 27.903345 +14.500000 14.800000 28.836630 +14.500000 14.900000 29.789914 +14.500000 15.000000 30.763199 + +14.600000 -5.000000 239.813459 +14.600000 -4.900000 236.763390 +14.600000 -4.800000 233.733320 +14.600000 -4.700000 230.723250 +14.600000 -4.600000 227.733181 +14.600000 -4.500000 224.763111 +14.600000 -4.400000 221.813041 +14.600000 -4.300000 218.882972 +14.600000 -4.200000 215.972902 +14.600000 -4.100000 213.082832 +14.600000 -4.000000 210.212763 +14.600000 -3.900000 207.362693 +14.600000 -3.800000 204.532623 +14.600000 -3.700000 201.722554 +14.600000 -3.600000 198.932484 +14.600000 -3.500000 196.162414 +14.600000 -3.400000 193.412345 +14.600000 -3.300000 190.682275 +14.600000 -3.200000 187.972205 +14.600000 -3.100000 185.282136 +14.600000 -3.000000 182.612066 +14.600000 -2.900000 179.961996 +14.600000 -2.800000 177.331927 +14.600000 -2.700000 174.721857 +14.600000 -2.600000 172.131787 +14.600000 -2.500000 169.561718 +14.600000 -2.400000 167.011648 +14.600000 -2.300000 164.481578 +14.600000 -2.200000 161.971509 +14.600000 -2.100000 159.481439 +14.600000 -2.000000 157.011370 +14.600000 -1.900000 154.561300 +14.600000 -1.800000 152.131230 +14.600000 -1.700000 149.721161 +14.600000 -1.600000 147.331091 +14.600000 -1.500000 144.961021 +14.600000 -1.400000 142.610952 +14.600000 -1.300000 140.280882 +14.600000 -1.200000 137.970812 +14.600000 -1.100000 135.680743 +14.600000 -1.000000 133.410673 +14.600000 -0.900000 131.160603 +14.600000 -0.800000 128.930534 +14.600000 -0.700000 126.720464 +14.600000 -0.600000 124.530394 +14.600000 -0.500000 122.360325 +14.600000 -0.400000 120.210255 +14.600000 -0.300000 118.080185 +14.600000 -0.200000 115.970116 +14.600000 -0.100000 113.880046 +14.600000 -0.000000 111.809976 +14.600000 0.100000 109.759907 +14.600000 0.200000 107.729837 +14.600000 0.300000 105.719767 +14.600000 0.400000 103.729698 +14.600000 0.500000 101.759628 +14.600000 0.600000 99.809558 +14.600000 0.700000 97.879489 +14.600000 0.800000 95.969419 +14.600000 0.900000 94.079350 +14.600000 1.000000 92.209280 +14.600000 1.100000 90.359210 +14.600000 1.200000 88.529141 +14.600000 1.300000 86.719071 +14.600000 1.400000 84.929001 +14.600000 1.500000 83.158932 +14.600000 1.600000 81.408862 +14.600000 1.700000 79.678792 +14.600000 1.800000 77.968723 +14.600000 1.900000 76.278653 +14.600000 2.000000 74.608583 +14.600000 2.100000 72.958514 +14.600000 2.200000 71.328444 +14.600000 2.300000 69.718374 +14.600000 2.400000 68.128305 +14.600000 2.500000 66.558235 +14.600000 2.600000 65.008165 +14.600000 2.700000 63.478096 +14.600000 2.800000 61.968026 +14.600000 2.900000 60.477956 +14.600000 3.000000 59.007887 +14.600000 3.100000 57.557817 +14.600000 3.200000 56.127747 +14.600000 3.300000 54.717678 +14.600000 3.400000 53.327608 +14.600000 3.500000 51.957538 +14.600000 3.600000 50.607469 +14.600000 3.700000 49.277399 +14.600000 3.800000 47.967330 +14.600000 3.900000 46.677260 +14.600000 4.000000 45.407190 +14.600000 4.100000 44.157121 +14.600000 4.200000 42.927051 +14.600000 4.300000 41.716981 +14.600000 4.400000 40.526912 +14.600000 4.500000 39.356842 +14.600000 4.600000 38.206772 +14.600000 4.700000 37.076703 +14.600000 4.800000 35.966633 +14.600000 4.900000 34.876563 +14.600000 5.000000 33.806494 +14.600000 5.100000 32.756424 +14.600000 5.200000 31.726354 +14.600000 5.300000 30.716285 +14.600000 5.400000 29.726215 +14.600000 5.500000 28.756145 +14.600000 5.600000 27.806076 +14.600000 5.700000 26.876006 +14.600000 5.800000 25.965936 +14.600000 5.900000 25.075867 +14.600000 6.000000 24.205797 +14.600000 6.100000 23.355727 +14.600000 6.200000 22.525658 +14.600000 6.300000 21.715588 +14.600000 6.400000 20.925518 +14.600000 6.500000 20.155449 +14.600000 6.600000 19.405379 +14.600000 6.700000 18.675310 +14.600000 6.800000 17.965240 +14.600000 6.900000 17.275170 +14.600000 7.000000 16.605101 +14.600000 7.100000 15.955031 +14.600000 7.200000 15.324961 +14.600000 7.300000 14.714892 +14.600000 7.400000 14.124822 +14.600000 7.500000 13.554752 +14.600000 7.600000 13.004683 +14.600000 7.700000 12.474613 +14.600000 7.800000 11.964543 +14.600000 7.900000 11.474474 +14.600000 8.000000 11.004404 +14.600000 8.100000 10.554334 +14.600000 8.200000 10.124265 +14.600000 8.300000 9.714195 +14.600000 8.400000 9.324125 +14.600000 8.500000 8.954056 +14.600000 8.600000 8.603986 +14.600000 8.700000 8.273916 +14.600000 8.800000 7.963847 +14.600000 8.900000 7.673777 +14.600000 9.000000 7.403707 +14.600000 9.100000 7.153638 +14.600000 9.200000 6.923568 +14.600000 9.300000 6.713498 +14.600000 9.400000 6.523429 +14.600000 9.500000 6.353359 +14.600000 9.600000 6.203289 +14.600000 9.700000 6.073220 +14.600000 9.800000 5.963150 +14.600000 9.900000 5.873081 +14.600000 10.000000 5.803011 +14.600000 10.100000 5.752941 +14.600000 10.200000 5.722872 +14.600000 10.300000 5.712802 +14.600000 10.400000 5.722732 +14.600000 10.500000 5.752663 +14.600000 10.600000 5.802593 +14.600000 10.700000 5.872523 +14.600000 10.800000 5.962454 +14.600000 10.900000 6.072384 +14.600000 11.000000 6.202314 +14.600000 11.100000 6.352245 +14.600000 11.200000 6.522175 +14.600000 11.300000 6.712105 +14.600000 11.400000 6.922036 +14.600000 11.500000 7.151966 +14.600000 11.600000 7.401896 +14.600000 11.700000 7.671827 +14.600000 11.800000 7.961757 +14.600000 11.900000 8.271687 +14.600000 12.000000 8.601618 +14.600000 12.100000 8.951548 +14.600000 12.200000 9.321478 +14.600000 12.300000 9.711409 +14.600000 12.400000 10.121339 +14.600000 12.500000 10.551269 +14.600000 12.600000 11.001200 +14.600000 12.700000 11.471130 +14.600000 12.800000 11.961061 +14.600000 12.900000 12.470991 +14.600000 13.000000 13.000921 +14.600000 13.100000 13.550852 +14.600000 13.200000 14.120782 +14.600000 13.300000 14.710712 +14.600000 13.400000 15.320643 +14.600000 13.500000 15.950573 +14.600000 13.600000 16.600503 +14.600000 13.700000 17.270434 +14.600000 13.800000 17.960364 +14.600000 13.900000 18.670294 +14.600000 14.000000 19.400225 +14.600000 14.100000 20.150155 +14.600000 14.200000 20.920085 +14.600000 14.300000 21.710016 +14.600000 14.400000 22.519946 +14.600000 14.500000 23.349876 +14.600000 14.600000 24.199807 +14.600000 14.700000 25.069737 +14.600000 14.800000 25.959667 +14.600000 14.900000 26.869598 +14.600000 15.000000 27.799528 + +14.700000 -5.000000 245.737673 +14.700000 -4.900000 242.643732 +14.700000 -4.800000 239.569792 +14.700000 -4.700000 236.515851 +14.700000 -4.600000 233.481910 +14.700000 -4.500000 230.467969 +14.700000 -4.400000 227.474028 +14.700000 -4.300000 224.500088 +14.700000 -4.200000 221.546147 +14.700000 -4.100000 218.612206 +14.700000 -4.000000 215.698265 +14.700000 -3.900000 212.804325 +14.700000 -3.800000 209.930384 +14.700000 -3.700000 207.076443 +14.700000 -3.600000 204.242502 +14.700000 -3.500000 201.428561 +14.700000 -3.400000 198.634621 +14.700000 -3.300000 195.860680 +14.700000 -3.200000 193.106739 +14.700000 -3.100000 190.372798 +14.700000 -3.000000 187.658857 +14.700000 -2.900000 184.964917 +14.700000 -2.800000 182.290976 +14.700000 -2.700000 179.637035 +14.700000 -2.600000 177.003094 +14.700000 -2.500000 174.389153 +14.700000 -2.400000 171.795213 +14.700000 -2.300000 169.221272 +14.700000 -2.200000 166.667331 +14.700000 -2.100000 164.133390 +14.700000 -2.000000 161.619450 +14.700000 -1.900000 159.125509 +14.700000 -1.800000 156.651568 +14.700000 -1.700000 154.197627 +14.700000 -1.600000 151.763686 +14.700000 -1.500000 149.349746 +14.700000 -1.400000 146.955805 +14.700000 -1.300000 144.581864 +14.700000 -1.200000 142.227923 +14.700000 -1.100000 139.893982 +14.700000 -1.000000 137.580042 +14.700000 -0.900000 135.286101 +14.700000 -0.800000 133.012160 +14.700000 -0.700000 130.758219 +14.700000 -0.600000 128.524278 +14.700000 -0.500000 126.310338 +14.700000 -0.400000 124.116397 +14.700000 -0.300000 121.942456 +14.700000 -0.200000 119.788515 +14.700000 -0.100000 117.654575 +14.700000 -0.000000 115.540634 +14.700000 0.100000 113.446693 +14.700000 0.200000 111.372752 +14.700000 0.300000 109.318811 +14.700000 0.400000 107.284871 +14.700000 0.500000 105.270930 +14.700000 0.600000 103.276989 +14.700000 0.700000 101.303048 +14.700000 0.800000 99.349107 +14.700000 0.900000 97.415167 +14.700000 1.000000 95.501226 +14.700000 1.100000 93.607285 +14.700000 1.200000 91.733344 +14.700000 1.300000 89.879403 +14.700000 1.400000 88.045463 +14.700000 1.500000 86.231522 +14.700000 1.600000 84.437581 +14.700000 1.700000 82.663640 +14.700000 1.800000 80.909700 +14.700000 1.900000 79.175759 +14.700000 2.000000 77.461818 +14.700000 2.100000 75.767877 +14.700000 2.200000 74.093936 +14.700000 2.300000 72.439996 +14.700000 2.400000 70.806055 +14.700000 2.500000 69.192114 +14.700000 2.600000 67.598173 +14.700000 2.700000 66.024232 +14.700000 2.800000 64.470292 +14.700000 2.900000 62.936351 +14.700000 3.000000 61.422410 +14.700000 3.100000 59.928469 +14.700000 3.200000 58.454528 +14.700000 3.300000 57.000588 +14.700000 3.400000 55.566647 +14.700000 3.500000 54.152706 +14.700000 3.600000 52.758765 +14.700000 3.700000 51.384825 +14.700000 3.800000 50.030884 +14.700000 3.900000 48.696943 +14.700000 4.000000 47.383002 +14.700000 4.100000 46.089061 +14.700000 4.200000 44.815121 +14.700000 4.300000 43.561180 +14.700000 4.400000 42.327239 +14.700000 4.500000 41.113298 +14.700000 4.600000 39.919357 +14.700000 4.700000 38.745417 +14.700000 4.800000 37.591476 +14.700000 4.900000 36.457535 +14.700000 5.000000 35.343594 +14.700000 5.100000 34.249653 +14.700000 5.200000 33.175713 +14.700000 5.300000 32.121772 +14.700000 5.400000 31.087831 +14.700000 5.500000 30.073890 +14.700000 5.600000 29.079950 +14.700000 5.700000 28.106009 +14.700000 5.800000 27.152068 +14.700000 5.900000 26.218127 +14.700000 6.000000 25.304186 +14.700000 6.100000 24.410246 +14.700000 6.200000 23.536305 +14.700000 6.300000 22.682364 +14.700000 6.400000 21.848423 +14.700000 6.500000 21.034482 +14.700000 6.600000 20.240542 +14.700000 6.700000 19.466601 +14.700000 6.800000 18.712660 +14.700000 6.900000 17.978719 +14.700000 7.000000 17.264778 +14.700000 7.100000 16.570838 +14.700000 7.200000 15.896897 +14.700000 7.300000 15.242956 +14.700000 7.400000 14.609015 +14.700000 7.500000 13.995075 +14.700000 7.600000 13.401134 +14.700000 7.700000 12.827193 +14.700000 7.800000 12.273252 +14.700000 7.900000 11.739311 +14.700000 8.000000 11.225371 +14.700000 8.100000 10.731430 +14.700000 8.200000 10.257489 +14.700000 8.300000 9.803548 +14.700000 8.400000 9.369607 +14.700000 8.500000 8.955667 +14.700000 8.600000 8.561726 +14.700000 8.700000 8.187785 +14.700000 8.800000 7.833844 +14.700000 8.900000 7.499903 +14.700000 9.000000 7.185963 +14.700000 9.100000 6.892022 +14.700000 9.200000 6.618081 +14.700000 9.300000 6.364140 +14.700000 9.400000 6.130200 +14.700000 9.500000 5.916259 +14.700000 9.600000 5.722318 +14.700000 9.700000 5.548377 +14.700000 9.800000 5.394436 +14.700000 9.900000 5.260496 +14.700000 10.000000 5.146555 +14.700000 10.100000 5.052614 +14.700000 10.200000 4.978673 +14.700000 10.300000 4.924732 +14.700000 10.400000 4.890792 +14.700000 10.500000 4.876851 +14.700000 10.600000 4.882910 +14.700000 10.700000 4.908969 +14.700000 10.800000 4.955028 +14.700000 10.900000 5.021088 +14.700000 11.000000 5.107147 +14.700000 11.100000 5.213206 +14.700000 11.200000 5.339265 +14.700000 11.300000 5.485325 +14.700000 11.400000 5.651384 +14.700000 11.500000 5.837443 +14.700000 11.600000 6.043502 +14.700000 11.700000 6.269561 +14.700000 11.800000 6.515621 +14.700000 11.900000 6.781680 +14.700000 12.000000 7.067739 +14.700000 12.100000 7.373798 +14.700000 12.200000 7.699857 +14.700000 12.300000 8.045917 +14.700000 12.400000 8.411976 +14.700000 12.500000 8.798035 +14.700000 12.600000 9.204094 +14.700000 12.700000 9.630153 +14.700000 12.800000 10.076213 +14.700000 12.900000 10.542272 +14.700000 13.000000 11.028331 +14.700000 13.100000 11.534390 +14.700000 13.200000 12.060450 +14.700000 13.300000 12.606509 +14.700000 13.400000 13.172568 +14.700000 13.500000 13.758627 +14.700000 13.600000 14.364686 +14.700000 13.700000 14.990746 +14.700000 13.800000 15.636805 +14.700000 13.900000 16.302864 +14.700000 14.000000 16.988923 +14.700000 14.100000 17.694982 +14.700000 14.200000 18.421042 +14.700000 14.300000 19.167101 +14.700000 14.400000 19.933160 +14.700000 14.500000 20.719219 +14.700000 14.600000 21.525279 +14.700000 14.700000 22.351338 +14.700000 14.800000 23.197397 +14.700000 14.900000 24.063456 +14.700000 15.000000 24.949515 + +14.800000 -5.000000 251.890650 +14.800000 -4.900000 248.752321 +14.800000 -4.800000 245.633993 +14.800000 -4.700000 242.535664 +14.800000 -4.600000 239.457335 +14.800000 -4.500000 236.399007 +14.800000 -4.400000 233.360678 +14.800000 -4.300000 230.342349 +14.800000 -4.200000 227.344021 +14.800000 -4.100000 224.365692 +14.800000 -4.000000 221.407363 +14.800000 -3.900000 218.469035 +14.800000 -3.800000 215.550706 +14.800000 -3.700000 212.652378 +14.800000 -3.600000 209.774049 +14.800000 -3.500000 206.915720 +14.800000 -3.400000 204.077392 +14.800000 -3.300000 201.259063 +14.800000 -3.200000 198.460734 +14.800000 -3.100000 195.682406 +14.800000 -3.000000 192.924077 +14.800000 -2.900000 190.185748 +14.800000 -2.800000 187.467420 +14.800000 -2.700000 184.769091 +14.800000 -2.600000 182.090762 +14.800000 -2.500000 179.432434 +14.800000 -2.400000 176.794105 +14.800000 -2.300000 174.175776 +14.800000 -2.200000 171.577448 +14.800000 -2.100000 168.999119 +14.800000 -2.000000 166.440790 +14.800000 -1.900000 163.902462 +14.800000 -1.800000 161.384133 +14.800000 -1.700000 158.885804 +14.800000 -1.600000 156.407476 +14.800000 -1.500000 153.949147 +14.800000 -1.400000 151.510818 +14.800000 -1.300000 149.092490 +14.800000 -1.200000 146.694161 +14.800000 -1.100000 144.315832 +14.800000 -1.000000 141.957504 +14.800000 -0.900000 139.619175 +14.800000 -0.800000 137.300846 +14.800000 -0.700000 135.002518 +14.800000 -0.600000 132.724189 +14.800000 -0.500000 130.465860 +14.800000 -0.400000 128.227532 +14.800000 -0.300000 126.009203 +14.800000 -0.200000 123.810874 +14.800000 -0.100000 121.632546 +14.800000 -0.000000 119.474217 +14.800000 0.100000 117.335888 +14.800000 0.200000 115.217560 +14.800000 0.300000 113.119231 +14.800000 0.400000 111.040902 +14.800000 0.500000 108.982574 +14.800000 0.600000 106.944245 +14.800000 0.700000 104.925916 +14.800000 0.800000 102.927588 +14.800000 0.900000 100.949259 +14.800000 1.000000 98.990930 +14.800000 1.100000 97.052602 +14.800000 1.200000 95.134273 +14.800000 1.300000 93.235944 +14.800000 1.400000 91.357616 +14.800000 1.500000 89.499287 +14.800000 1.600000 87.660958 +14.800000 1.700000 85.842630 +14.800000 1.800000 84.044301 +14.800000 1.900000 82.265972 +14.800000 2.000000 80.507644 +14.800000 2.100000 78.769315 +14.800000 2.200000 77.050986 +14.800000 2.300000 75.352658 +14.800000 2.400000 73.674329 +14.800000 2.500000 72.016001 +14.800000 2.600000 70.377672 +14.800000 2.700000 68.759343 +14.800000 2.800000 67.161015 +14.800000 2.900000 65.582686 +14.800000 3.000000 64.024357 +14.800000 3.100000 62.486029 +14.800000 3.200000 60.967700 +14.800000 3.300000 59.469371 +14.800000 3.400000 57.991043 +14.800000 3.500000 56.532714 +14.800000 3.600000 55.094385 +14.800000 3.700000 53.676057 +14.800000 3.800000 52.277728 +14.800000 3.900000 50.899399 +14.800000 4.000000 49.541071 +14.800000 4.100000 48.202742 +14.800000 4.200000 46.884413 +14.800000 4.300000 45.586085 +14.800000 4.400000 44.307756 +14.800000 4.500000 43.049427 +14.800000 4.600000 41.811099 +14.800000 4.700000 40.592770 +14.800000 4.800000 39.394441 +14.800000 4.900000 38.216113 +14.800000 5.000000 37.057784 +14.800000 5.100000 35.919455 +14.800000 5.200000 34.801127 +14.800000 5.300000 33.702798 +14.800000 5.400000 32.624469 +14.800000 5.500000 31.566141 +14.800000 5.600000 30.527812 +14.800000 5.700000 29.509483 +14.800000 5.800000 28.511155 +14.800000 5.900000 27.532826 +14.800000 6.000000 26.574497 +14.800000 6.100000 25.636169 +14.800000 6.200000 24.717840 +14.800000 6.300000 23.819511 +14.800000 6.400000 22.941183 +14.800000 6.500000 22.082854 +14.800000 6.600000 21.244525 +14.800000 6.700000 20.426197 +14.800000 6.800000 19.627868 +14.800000 6.900000 18.849539 +14.800000 7.000000 18.091211 +14.800000 7.100000 17.352882 +14.800000 7.200000 16.634553 +14.800000 7.300000 15.936225 +14.800000 7.400000 15.257896 +14.800000 7.500000 14.599567 +14.800000 7.600000 13.961239 +14.800000 7.700000 13.342910 +14.800000 7.800000 12.744581 +14.800000 7.900000 12.166253 +14.800000 8.000000 11.607924 +14.800000 8.100000 11.069595 +14.800000 8.200000 10.551267 +14.800000 8.300000 10.052938 +14.800000 8.400000 9.574610 +14.800000 8.500000 9.116281 +14.800000 8.600000 8.677952 +14.800000 8.700000 8.259624 +14.800000 8.800000 7.861295 +14.800000 8.900000 7.482966 +14.800000 9.000000 7.124638 +14.800000 9.100000 6.786309 +14.800000 9.200000 6.467980 +14.800000 9.300000 6.169652 +14.800000 9.400000 5.891323 +14.800000 9.500000 5.632994 +14.800000 9.600000 5.394666 +14.800000 9.700000 5.176337 +14.800000 9.800000 4.978008 +14.800000 9.900000 4.799680 +14.800000 10.000000 4.641351 +14.800000 10.100000 4.503022 +14.800000 10.200000 4.384694 +14.800000 10.300000 4.286365 +14.800000 10.400000 4.208036 +14.800000 10.500000 4.149708 +14.800000 10.600000 4.111379 +14.800000 10.700000 4.093050 +14.800000 10.800000 4.094722 +14.800000 10.900000 4.116393 +14.800000 11.000000 4.158064 +14.800000 11.100000 4.219736 +14.800000 11.200000 4.301407 +14.800000 11.300000 4.403078 +14.800000 11.400000 4.524750 +14.800000 11.500000 4.666421 +14.800000 11.600000 4.828092 +14.800000 11.700000 5.009764 +14.800000 11.800000 5.211435 +14.800000 11.900000 5.433106 +14.800000 12.000000 5.674778 +14.800000 12.100000 5.936449 +14.800000 12.200000 6.218120 +14.800000 12.300000 6.519792 +14.800000 12.400000 6.841463 +14.800000 12.500000 7.183134 +14.800000 12.600000 7.544806 +14.800000 12.700000 7.926477 +14.800000 12.800000 8.328148 +14.800000 12.900000 8.749820 +14.800000 13.000000 9.191491 +14.800000 13.100000 9.653162 +14.800000 13.200000 10.134834 +14.800000 13.300000 10.636505 +14.800000 13.400000 11.158176 +14.800000 13.500000 11.699848 +14.800000 13.600000 12.261519 +14.800000 13.700000 12.843190 +14.800000 13.800000 13.444862 +14.800000 13.900000 14.066533 +14.800000 14.000000 14.708204 +14.800000 14.100000 15.369876 +14.800000 14.200000 16.051547 +14.800000 14.300000 16.753219 +14.800000 14.400000 17.474890 +14.800000 14.500000 18.216561 +14.800000 14.600000 18.978233 +14.800000 14.700000 19.759904 +14.800000 14.800000 20.561575 +14.800000 14.900000 21.383247 +14.800000 15.000000 22.224918 + +14.900000 -5.000000 258.283675 +14.900000 -4.900000 255.100442 +14.900000 -4.800000 251.937209 +14.900000 -4.700000 248.793976 +14.900000 -4.600000 245.670742 +14.900000 -4.500000 242.567509 +14.900000 -4.400000 239.484276 +14.900000 -4.300000 236.421042 +14.900000 -4.200000 233.377809 +14.900000 -4.100000 230.354576 +14.900000 -4.000000 227.351343 +14.900000 -3.900000 224.368109 +14.900000 -3.800000 221.404876 +14.900000 -3.700000 218.461643 +14.900000 -3.600000 215.538410 +14.900000 -3.500000 212.635176 +14.900000 -3.400000 209.751943 +14.900000 -3.300000 206.888710 +14.900000 -3.200000 204.045476 +14.900000 -3.100000 201.222243 +14.900000 -3.000000 198.419010 +14.900000 -2.900000 195.635777 +14.900000 -2.800000 192.872543 +14.900000 -2.700000 190.129310 +14.900000 -2.600000 187.406077 +14.900000 -2.500000 184.702844 +14.900000 -2.400000 182.019610 +14.900000 -2.300000 179.356377 +14.900000 -2.200000 176.713144 +14.900000 -2.100000 174.089910 +14.900000 -2.000000 171.486677 +14.900000 -1.900000 168.903444 +14.900000 -1.800000 166.340211 +14.900000 -1.700000 163.796977 +14.900000 -1.600000 161.273744 +14.900000 -1.500000 158.770511 +14.900000 -1.400000 156.287278 +14.900000 -1.300000 153.824044 +14.900000 -1.200000 151.380811 +14.900000 -1.100000 148.957578 +14.900000 -1.000000 146.554345 +14.900000 -0.900000 144.171111 +14.900000 -0.800000 141.807878 +14.900000 -0.700000 139.464645 +14.900000 -0.600000 137.141411 +14.900000 -0.500000 134.838178 +14.900000 -0.400000 132.554945 +14.900000 -0.300000 130.291712 +14.900000 -0.200000 128.048478 +14.900000 -0.100000 125.825245 +14.900000 -0.000000 123.622012 +14.900000 0.100000 121.438779 +14.900000 0.200000 119.275545 +14.900000 0.300000 117.132312 +14.900000 0.400000 115.009079 +14.900000 0.500000 112.905845 +14.900000 0.600000 110.822612 +14.900000 0.700000 108.759379 +14.900000 0.800000 106.716146 +14.900000 0.900000 104.692912 +14.900000 1.000000 102.689679 +14.900000 1.100000 100.706446 +14.900000 1.200000 98.743213 +14.900000 1.300000 96.799979 +14.900000 1.400000 94.876746 +14.900000 1.500000 92.973513 +14.900000 1.600000 91.090279 +14.900000 1.700000 89.227046 +14.900000 1.800000 87.383813 +14.900000 1.900000 85.560580 +14.900000 2.000000 83.757346 +14.900000 2.100000 81.974113 +14.900000 2.200000 80.210880 +14.900000 2.300000 78.467647 +14.900000 2.400000 76.744413 +14.900000 2.500000 75.041180 +14.900000 2.600000 73.357947 +14.900000 2.700000 71.694713 +14.900000 2.800000 70.051480 +14.900000 2.900000 68.428247 +14.900000 3.000000 66.825014 +14.900000 3.100000 65.241780 +14.900000 3.200000 63.678547 +14.900000 3.300000 62.135314 +14.900000 3.400000 60.612081 +14.900000 3.500000 59.108847 +14.900000 3.600000 57.625614 +14.900000 3.700000 56.162381 +14.900000 3.800000 54.719148 +14.900000 3.900000 53.295914 +14.900000 4.000000 51.892681 +14.900000 4.100000 50.509448 +14.900000 4.200000 49.146214 +14.900000 4.300000 47.802981 +14.900000 4.400000 46.479748 +14.900000 4.500000 45.176515 +14.900000 4.600000 43.893281 +14.900000 4.700000 42.630048 +14.900000 4.800000 41.386815 +14.900000 4.900000 40.163582 +14.900000 5.000000 38.960348 +14.900000 5.100000 37.777115 +14.900000 5.200000 36.613882 +14.900000 5.300000 35.470648 +14.900000 5.400000 34.347415 +14.900000 5.500000 33.244182 +14.900000 5.600000 32.160949 +14.900000 5.700000 31.097715 +14.900000 5.800000 30.054482 +14.900000 5.900000 29.031249 +14.900000 6.000000 28.028016 +14.900000 6.100000 27.044782 +14.900000 6.200000 26.081549 +14.900000 6.300000 25.138316 +14.900000 6.400000 24.215082 +14.900000 6.500000 23.311849 +14.900000 6.600000 22.428616 +14.900000 6.700000 21.565383 +14.900000 6.800000 20.722149 +14.900000 6.900000 19.898916 +14.900000 7.000000 19.095683 +14.900000 7.100000 18.312450 +14.900000 7.200000 17.549216 +14.900000 7.300000 16.805983 +14.900000 7.400000 16.082750 +14.900000 7.500000 15.379516 +14.900000 7.600000 14.696283 +14.900000 7.700000 14.033050 +14.900000 7.800000 13.389817 +14.900000 7.900000 12.766583 +14.900000 8.000000 12.163350 +14.900000 8.100000 11.580117 +14.900000 8.200000 11.016884 +14.900000 8.300000 10.473650 +14.900000 8.400000 9.950417 +14.900000 8.500000 9.447184 +14.900000 8.600000 8.963951 +14.900000 8.700000 8.500717 +14.900000 8.800000 8.057484 +14.900000 8.900000 7.634251 +14.900000 9.000000 7.231017 +14.900000 9.100000 6.847784 +14.900000 9.200000 6.484551 +14.900000 9.300000 6.141318 +14.900000 9.400000 5.818084 +14.900000 9.500000 5.514851 +14.900000 9.600000 5.231618 +14.900000 9.700000 4.968385 +14.900000 9.800000 4.725151 +14.900000 9.900000 4.501918 +14.900000 10.000000 4.298685 +14.900000 10.100000 4.115451 +14.900000 10.200000 3.952218 +14.900000 10.300000 3.808985 +14.900000 10.400000 3.685752 +14.900000 10.500000 3.582518 +14.900000 10.600000 3.499285 +14.900000 10.700000 3.436052 +14.900000 10.800000 3.392819 +14.900000 10.900000 3.369585 +14.900000 11.000000 3.366352 +14.900000 11.100000 3.383119 +14.900000 11.200000 3.419885 +14.900000 11.300000 3.476652 +14.900000 11.400000 3.553419 +14.900000 11.500000 3.650186 +14.900000 11.600000 3.766952 +14.900000 11.700000 3.903719 +14.900000 11.800000 4.060486 +14.900000 11.900000 4.237253 +14.900000 12.000000 4.434019 +14.900000 12.100000 4.650786 +14.900000 12.200000 4.887553 +14.900000 12.300000 5.144319 +14.900000 12.400000 5.421086 +14.900000 12.500000 5.717853 +14.900000 12.600000 6.034620 +14.900000 12.700000 6.371386 +14.900000 12.800000 6.728153 +14.900000 12.900000 7.104920 +14.900000 13.000000 7.501687 +14.900000 13.100000 7.918453 +14.900000 13.200000 8.355220 +14.900000 13.300000 8.811987 +14.900000 13.400000 9.288754 +14.900000 13.500000 9.785520 +14.900000 13.600000 10.302287 +14.900000 13.700000 10.839054 +14.900000 13.800000 11.395820 +14.900000 13.900000 11.972587 +14.900000 14.000000 12.569354 +14.900000 14.100000 13.186121 +14.900000 14.200000 13.822887 +14.900000 14.300000 14.479654 +14.900000 14.400000 15.156421 +14.900000 14.500000 15.853188 +14.900000 14.600000 16.569954 +14.900000 14.700000 17.306721 +14.900000 14.800000 18.063488 +14.900000 14.900000 18.840254 +14.900000 15.000000 19.637021 + +15.000000 -5.000000 264.927485 +15.000000 -4.900000 261.698830 +15.000000 -4.800000 258.490175 +15.000000 -4.700000 255.301521 +15.000000 -4.600000 252.132866 +15.000000 -4.500000 248.984211 +15.000000 -4.400000 245.855557 +15.000000 -4.300000 242.746902 +15.000000 -4.200000 239.658248 +15.000000 -4.100000 236.589593 +15.000000 -4.000000 233.540938 +15.000000 -3.900000 230.512284 +15.000000 -3.800000 227.503629 +15.000000 -3.700000 224.514975 +15.000000 -3.600000 221.546320 +15.000000 -3.500000 218.597665 +15.000000 -3.400000 215.669011 +15.000000 -3.300000 212.760356 +15.000000 -3.200000 209.871701 +15.000000 -3.100000 207.003047 +15.000000 -3.000000 204.154392 +15.000000 -2.900000 201.325738 +15.000000 -2.800000 198.517083 +15.000000 -2.700000 195.728428 +15.000000 -2.600000 192.959774 +15.000000 -2.500000 190.211119 +15.000000 -2.400000 187.482464 +15.000000 -2.300000 184.773810 +15.000000 -2.200000 182.085155 +15.000000 -2.100000 179.416501 +15.000000 -2.000000 176.767846 +15.000000 -1.900000 174.139191 +15.000000 -1.800000 171.530537 +15.000000 -1.700000 168.941882 +15.000000 -1.600000 166.373228 +15.000000 -1.500000 163.824573 +15.000000 -1.400000 161.295918 +15.000000 -1.300000 158.787264 +15.000000 -1.200000 156.298609 +15.000000 -1.100000 153.829954 +15.000000 -1.000000 151.381300 +15.000000 -0.900000 148.952645 +15.000000 -0.800000 146.543991 +15.000000 -0.700000 144.155336 +15.000000 -0.600000 141.786681 +15.000000 -0.500000 139.438027 +15.000000 -0.400000 137.109372 +15.000000 -0.300000 134.800717 +15.000000 -0.200000 132.512063 +15.000000 -0.100000 130.243408 +15.000000 -0.000000 127.994754 +15.000000 0.100000 125.766099 +15.000000 0.200000 123.557444 +15.000000 0.300000 121.368790 +15.000000 0.400000 119.200135 +15.000000 0.500000 117.051481 +15.000000 0.600000 114.922826 +15.000000 0.700000 112.814171 +15.000000 0.800000 110.725517 +15.000000 0.900000 108.656862 +15.000000 1.000000 106.608207 +15.000000 1.100000 104.579553 +15.000000 1.200000 102.570898 +15.000000 1.300000 100.582244 +15.000000 1.400000 98.613589 +15.000000 1.500000 96.664934 +15.000000 1.600000 94.736280 +15.000000 1.700000 92.827625 +15.000000 1.800000 90.938970 +15.000000 1.900000 89.070316 +15.000000 2.000000 87.221661 +15.000000 2.100000 85.393007 +15.000000 2.200000 83.584352 +15.000000 2.300000 81.795697 +15.000000 2.400000 80.027043 +15.000000 2.500000 78.278388 +15.000000 2.600000 76.549734 +15.000000 2.700000 74.841079 +15.000000 2.800000 73.152424 +15.000000 2.900000 71.483770 +15.000000 3.000000 69.835115 +15.000000 3.100000 68.206460 +15.000000 3.200000 66.597806 +15.000000 3.300000 65.009151 +15.000000 3.400000 63.440497 +15.000000 3.500000 61.891842 +15.000000 3.600000 60.363187 +15.000000 3.700000 58.854533 +15.000000 3.800000 57.365878 +15.000000 3.900000 55.897224 +15.000000 4.000000 54.448569 +15.000000 4.100000 53.019914 +15.000000 4.200000 51.611260 +15.000000 4.300000 50.222605 +15.000000 4.400000 48.853950 +15.000000 4.500000 47.505296 +15.000000 4.600000 46.176641 +15.000000 4.700000 44.867987 +15.000000 4.800000 43.579332 +15.000000 4.900000 42.310677 +15.000000 5.000000 41.062023 +15.000000 5.100000 39.833368 +15.000000 5.200000 38.624713 +15.000000 5.300000 37.436059 +15.000000 5.400000 36.267404 +15.000000 5.500000 35.118750 +15.000000 5.600000 33.990095 +15.000000 5.700000 32.881440 +15.000000 5.800000 31.792786 +15.000000 5.900000 30.724131 +15.000000 6.000000 29.675477 +15.000000 6.100000 28.646822 +15.000000 6.200000 27.638167 +15.000000 6.300000 26.649513 +15.000000 6.400000 25.680858 +15.000000 6.500000 24.732203 +15.000000 6.600000 23.803549 +15.000000 6.700000 22.894894 +15.000000 6.800000 22.006240 +15.000000 6.900000 21.137585 +15.000000 7.000000 20.288930 +15.000000 7.100000 19.460276 +15.000000 7.200000 18.651621 +15.000000 7.300000 17.862966 +15.000000 7.400000 17.094312 +15.000000 7.500000 16.345657 +15.000000 7.600000 15.617003 +15.000000 7.700000 14.908348 +15.000000 7.800000 14.219693 +15.000000 7.900000 13.551039 +15.000000 8.000000 12.902384 +15.000000 8.100000 12.273730 +15.000000 8.200000 11.665075 +15.000000 8.300000 11.076420 +15.000000 8.400000 10.507766 +15.000000 8.500000 9.959111 +15.000000 8.600000 9.430456 +15.000000 8.700000 8.921802 +15.000000 8.800000 8.433147 +15.000000 8.900000 7.964493 +15.000000 9.000000 7.515838 +15.000000 9.100000 7.087183 +15.000000 9.200000 6.678529 +15.000000 9.300000 6.289874 +15.000000 9.400000 5.921219 +15.000000 9.500000 5.572565 +15.000000 9.600000 5.243910 +15.000000 9.700000 4.935256 +15.000000 9.800000 4.646601 +15.000000 9.900000 4.377946 +15.000000 10.000000 4.129292 +15.000000 10.100000 3.900637 +15.000000 10.200000 3.691983 +15.000000 10.300000 3.503328 +15.000000 10.400000 3.334673 +15.000000 10.500000 3.186019 +15.000000 10.600000 3.057364 +15.000000 10.700000 2.948709 +15.000000 10.800000 2.860055 +15.000000 10.900000 2.791400 +15.000000 11.000000 2.742746 +15.000000 11.100000 2.714091 +15.000000 11.200000 2.705436 +15.000000 11.300000 2.716782 +15.000000 11.400000 2.748127 +15.000000 11.500000 2.799472 +15.000000 11.600000 2.870818 +15.000000 11.700000 2.962163 +15.000000 11.800000 3.073509 +15.000000 11.900000 3.204854 +15.000000 12.000000 3.356199 +15.000000 12.100000 3.527545 +15.000000 12.200000 3.718890 +15.000000 12.300000 3.930236 +15.000000 12.400000 4.161581 +15.000000 12.500000 4.412926 +15.000000 12.600000 4.684272 +15.000000 12.700000 4.975617 +15.000000 12.800000 5.286962 +15.000000 12.900000 5.618308 +15.000000 13.000000 5.969653 +15.000000 13.100000 6.340999 +15.000000 13.200000 6.732344 +15.000000 13.300000 7.143689 +15.000000 13.400000 7.575035 +15.000000 13.500000 8.026380 +15.000000 13.600000 8.497725 +15.000000 13.700000 8.989071 +15.000000 13.800000 9.500416 +15.000000 13.900000 10.031762 +15.000000 14.000000 10.583107 +15.000000 14.100000 11.154452 +15.000000 14.200000 11.745798 +15.000000 14.300000 12.357143 +15.000000 14.400000 12.988489 +15.000000 14.500000 13.639834 +15.000000 14.600000 14.311179 +15.000000 14.700000 15.002525 +15.000000 14.800000 15.713870 +15.000000 14.900000 16.445215 +15.000000 15.000000 17.196561 + + + +# trust-region/levenberg-marquardt +6.000000 14.500000 +-2.440721 8.052493 +-2.649759 10.338367 +-3.079780 11.922784 +-3.207953 12.376764 +-3.113030 12.240580 +-3.156168 12.295063 +-3.135422 12.267922 +-3.144145 12.278083 +-3.140628 12.273947 +-3.141954 12.275411 +-3.141465 12.274866 +-3.141638 12.275049 +-3.141577 12.274984 +-3.141598 12.275006 +-3.141591 12.274998 +-3.141593 12.275001 +-3.141592 12.275000 +-3.141593 12.275000 +-3.141593 12.275000 +-3.141593 12.275000 + + +# trust-region/levenberg-marquardt+accel +6.000000 14.500000 +5.434266 14.105210 +4.860709 13.032737 +4.081924 10.582719 +3.243692 6.790283 +2.058201 4.197091 +2.873516 2.930922 +3.372929 2.246210 +3.036675 2.318015 +3.239950 2.237589 +3.128135 2.263146 +3.145861 2.267710 +3.141215 2.271767 +3.141969 2.273339 +3.141552 2.274340 +3.141685 2.274699 +3.141514 2.274945 +3.141678 2.274938 +3.141578 2.274977 +3.141598 2.274987 +3.141593 2.274994 +3.141593 2.274997 +3.141592 2.275000 +3.141593 2.275000 +3.141592 2.275000 +3.141593 2.275000 +3.141593 2.275000 +3.141593 2.275000 + + +# trust-region/dogleg +6.000000 14.500000 +0.084715 10.513103 +4.386135 -0.771406 +2.863958 2.202150 +3.445763 2.006013 +2.862516 2.458756 +3.367235 2.256024 +3.115028 2.153453 +3.159338 2.237666 +3.131967 2.268437 +3.146763 2.280079 +3.139564 2.273509 +3.143245 2.276490 +3.141432 2.274895 +3.141664 2.275075 +3.141552 2.274970 +3.141610 2.275017 +3.141581 2.274991 +3.141596 2.275003 +3.141592 2.275000 +3.141593 2.275000 +3.141593 2.275000 +3.141593 2.275000 +3.141593 2.275000 + + +# trust-region/double-dogleg +6.000000 14.500000 +0.084715 10.513103 +4.525217 -0.637424 +2.784094 2.178685 +3.382281 2.048555 +3.138220 2.084792 +3.163691 2.189933 +3.107123 2.326539 +3.150882 2.300348 +3.133654 2.271698 +3.144331 2.279648 +3.139620 2.273460 +3.142196 2.275844 +3.140984 2.274394 +3.141615 2.275040 +3.141578 2.274991 +3.141599 2.275008 +3.141589 2.274997 +3.141594 2.275002 +3.141592 2.274999 +3.141593 2.275000 +3.141593 2.275000 +3.141593 2.275000 +3.141593 2.275000 +3.141593 2.275000 + + +# trust-region/2D-subspace +6.000000 14.500000 +0.443880 10.464140 +4.859341 -0.766174 +2.457734 2.123629 +3.300727 2.062365 +3.096528 2.222788 +3.149836 2.246128 +3.139418 2.264724 +3.145814 2.269650 +3.139332 2.274037 +3.142734 2.274079 +3.141074 2.274870 +3.141924 2.274792 +3.141505 2.274946 +3.141610 2.274967 +3.141586 2.274990 +3.141599 2.274993 +3.141593 2.274996 +3.141592 2.275000 +3.141593 2.275000 +3.141593 2.275000 +3.141593 2.275000 +3.141593 2.275000 +3.141593 2.275000 + + diff --git a/gsl-2.5/doc/examples/nlfit4 b/gsl-2.5/doc/examples/nlfit4 new file mode 100755 index 00000000..56fc950a --- /dev/null +++ b/gsl-2.5/doc/examples/nlfit4 @@ -0,0 +1,228 @@ +#! /bin/sh + +# nlfit4 - temporary wrapper script for .libs/nlfit4 +# Generated by libtool (GNU libtool) 2.4.2 +# +# The nlfit4 program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s/\([`"$\\]\)/\\\1/g' + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command="(cd /home/groups/kipac/chto/package/gsl/gsl-2.5/doc/examples; LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LIBRARY_PATH; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; LD_LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/fftw/include:/home/users/chto/lib/fftw/lib:/home/users/chto/lib/healpix/lib:/home/users/chto/lib/namaster/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/include:/home/users/chto/cpp/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LD_LIBRARY_PATH; PATH=/share/software/user/open/curl/7.54.0/bin:/share/software/user/open/libressl/2.5.3/bin:/home/users/chto/lib/cfitsio:/home/users/chto/lib/cfitsio/include:/home/users/chto/lib:/home/users/chto/bin/bin:/home/users/chto/bin:/home/users/chto/.texlive/bin/x86_64-linux:/home/groups/kipac/chto/anaconda2/envs/newenv3/bin:/home/users/chto/.local/bin/include:/home/users/chto/.local/bin/lib:/home/users/chto/.local/bin:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/bin64:/share/software/user/open/fftw/3.3.6/bin:/home/groups/kipac/chto/anaconda2/condabin:/share/software/user/restricted/ifort/2019/bin:/share/software/user/open/gsl/2.3/bin:/share/software/user/srcc/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/dell/srvadmin/bin:/opt/dell/srvadmin/iSM/bin:/home/users/chto/bin; export PATH; gcc -g -O2 -o \$progdir/\$file nlfit4.o ../../.libs/libgsl.so ../../cblas/.libs/libgslcblas.so -lm -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/.libs -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/cblas/.libs -Wl,-rpath -Wl,/usr/local/lib)" + +# This environment variable determines our operation mode. +if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then + # install mode needs the following variables: + generated_by_libtool_version='2.4.2' + notinst_deplibs=' ../../libgsl.la ../../cblas/libgslcblas.la' +else + # When we are sourced in execute mode, $file and $ECHO are already set. + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + file="$0" + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + ECHO="printf %s\\n" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ which is used only on +# windows platforms, and (c) all begin with the string --lt- +# (application programs are unlikely to have options which match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's ../../libtool value, followed by no. +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=$0 + shift + for lt_opt + do + case "$lt_opt" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%/[^/]*$%%'` + test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=. + lt_dump_F=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%^.*/%%'` + cat "$lt_dump_D/$lt_dump_F" + exit 0 + ;; + --lt-*) + $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n "$lt_option_debug"; then + echo "nlfit4:nlfit4:${LINENO}: libtool wrapper (GNU libtool) 2.4.2" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + $ECHO "nlfit4:nlfit4:${LINENO}: newargv[$lt_dump_args_N]: $lt_arg" + lt_dump_args_N=`expr $lt_dump_args_N + 1` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ + + if test -n "$lt_option_debug"; then + $ECHO "nlfit4:nlfit4:${LINENO}: newargv[0]: $progdir/$program" 1>&2 + func_lt_dump_args ${1+"$@"} 1>&2 + fi + exec "$progdir/$program" ${1+"$@"} + + $ECHO "$0: cannot exec $program $*" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from $@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case " $* " in + *\ --lt-*) + for lt_wr_arg + do + case $lt_wr_arg in + --lt-*) ;; + *) set x "$@" "$lt_wr_arg"; shift;; + esac + shift + done ;; + esac + func_exec_program_core ${1+"$@"} +} + + # Parse options + func_parse_lt_options "$0" ${1+"$@"} + + # Find the directory that this script lives in. + thisdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + test "x$thisdir" = "x$file" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=`ls -ld "$file" | /usr/bin/sed -n 's/.*-> //p'` + while test -n "$file"; do + destdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + + # If there was a directory component, then change thisdir. + if test "x$destdir" != "x$file"; then + case "$destdir" in + [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;; + *) thisdir="$thisdir/$destdir" ;; + esac + fi + + file=`$ECHO "$file" | /usr/bin/sed 's%^.*/%%'` + file=`ls -ld "$thisdir/$file" | /usr/bin/sed -n 's/.*-> //p'` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no + if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then + # special case for '.' + if test "$thisdir" = "."; then + thisdir=`pwd` + fi + # remove .libs from thisdir + case "$thisdir" in + *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /usr/bin/sed 's%[\\/][^\\/]*$%%'` ;; + .libs ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=`cd "$thisdir" && pwd` + test -n "$absdir" && thisdir="$absdir" + + program=lt-'nlfit4' + progdir="$thisdir/.libs" + + if test ! -f "$progdir/$program" || + { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /usr/bin/sed 1q`; \ + test "X$file" != "X$progdir/$program"; }; then + + file="$$-$program" + + if test ! -d "$progdir"; then + mkdir "$progdir" + else + rm -f "$progdir/$file" + fi + + # relink executable if necessary + if test -n "$relink_command"; then + if relink_command_output=`eval $relink_command 2>&1`; then : + else + printf %s\n "$relink_command_output" >&2 + rm -f "$progdir/$file" + exit 1 + fi + fi + + mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null || + { rm -f "$progdir/$program"; + mv -f "$progdir/$file" "$progdir/$program"; } + rm -f "$progdir/$file" + fi + + if test -f "$progdir/$program"; then + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + # Run the actual program with our arguments. + func_exec_program ${1+"$@"} + fi + else + # The program doesn't exist. + $ECHO "$0: error: \`$progdir/$program' does not exist" 1>&2 + $ECHO "This script is just a wrapper for $program." 1>&2 + $ECHO "See the libtool documentation for more information." 1>&2 + exit 1 + fi +fi diff --git a/gsl-2.5/doc/examples/nlfit4.c b/gsl-2.5/doc/examples/nlfit4.c new file mode 100644 index 00000000..558c72f2 --- /dev/null +++ b/gsl-2.5/doc/examples/nlfit4.c @@ -0,0 +1,219 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/* parameters for functions */ +struct model_params +{ + double alpha; + gsl_spmatrix *J; +}; + +/* penalty function */ +int +penalty_f (const gsl_vector * x, void *params, gsl_vector * f) +{ + struct model_params *par = (struct model_params *) params; + const double sqrt_alpha = sqrt(par->alpha); + const size_t p = x->size; + size_t i; + double sum = 0.0; + + for (i = 0; i < p; ++i) + { + double xi = gsl_vector_get(x, i); + + gsl_vector_set(f, i, sqrt_alpha*(xi - 1.0)); + + sum += xi * xi; + } + + gsl_vector_set(f, p, sum - 0.25); + + return GSL_SUCCESS; +} + +int +penalty_df (CBLAS_TRANSPOSE_t TransJ, const gsl_vector * x, + const gsl_vector * u, void * params, gsl_vector * v, + gsl_matrix * JTJ) +{ + struct model_params *par = (struct model_params *) params; + const size_t p = x->size; + size_t j; + + /* store 2*x in last row of J */ + for (j = 0; j < p; ++j) + { + double xj = gsl_vector_get(x, j); + gsl_spmatrix_set(par->J, p, j, 2.0 * xj); + } + + /* compute v = op(J) u */ + if (v) + gsl_spblas_dgemv(TransJ, 1.0, par->J, u, 0.0, v); + + if (JTJ) + { + gsl_vector_view diag = gsl_matrix_diagonal(JTJ); + + /* compute J^T J = [ alpha*I_p + 4 x x^T ] */ + gsl_matrix_set_zero(JTJ); + + /* store 4 x x^T in lower half of JTJ */ + gsl_blas_dsyr(CblasLower, 4.0, x, JTJ); + + /* add alpha to diag(JTJ) */ + gsl_vector_add_constant(&diag.vector, par->alpha); + } + + return GSL_SUCCESS; +} + +int +penalty_fvv (const gsl_vector * x, const gsl_vector * v, + void *params, gsl_vector * fvv) +{ + const size_t p = x->size; + double normv = gsl_blas_dnrm2(v); + + gsl_vector_set_zero(fvv); + gsl_vector_set(fvv, p, 2.0 * normv * normv); + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +void +solve_system(const gsl_vector *x0, gsl_multilarge_nlinear_fdf *fdf, + gsl_multilarge_nlinear_parameters *params) +{ + const gsl_multilarge_nlinear_type *T = gsl_multilarge_nlinear_trust; + const size_t max_iter = 200; + const double xtol = 1.0e-8; + const double gtol = 1.0e-8; + const double ftol = 1.0e-8; + const size_t n = fdf->n; + const size_t p = fdf->p; + gsl_multilarge_nlinear_workspace *work = + gsl_multilarge_nlinear_alloc(T, params, n, p); + gsl_vector * f = gsl_multilarge_nlinear_residual(work); + gsl_vector * x = gsl_multilarge_nlinear_position(work); + int info; + double chisq0, chisq, rcond, xsq; + struct timeval tv0, tv1; + + gettimeofday(&tv0, NULL); + + /* initialize solver */ + gsl_multilarge_nlinear_init(x0, fdf, work); + + /* store initial cost */ + gsl_blas_ddot(f, f, &chisq0); + + /* iterate until convergence */ + gsl_multilarge_nlinear_driver(max_iter, xtol, gtol, ftol, + NULL, NULL, &info, work); + + gettimeofday(&tv1, NULL); + + /* store final cost */ + gsl_blas_ddot(f, f, &chisq); + + /* compute final ||x||^2 */ + gsl_blas_ddot(x, x, &xsq); + + /* store cond(J(x)) */ + gsl_multilarge_nlinear_rcond(&rcond, work); + + /* print summary */ + fprintf(stderr, "%-25s %-5zu %-4zu %-5zu %-6zu %-4zu %-10.4e %-10.4e %-7.2f %-11.4e %.2f\n", + gsl_multilarge_nlinear_trs_name(work), + gsl_multilarge_nlinear_niter(work), + fdf->nevalf, + fdf->nevaldfu, + fdf->nevaldf2, + fdf->nevalfvv, + chisq0, + chisq, + 1.0 / rcond, + xsq, + (tv1.tv_sec - tv0.tv_sec) + 1.0e-6 * (tv1.tv_usec - tv0.tv_usec)); + + gsl_multilarge_nlinear_free(work); +} + +int +main (void) +{ + const size_t p = 2000; + const size_t n = p + 1; + gsl_vector *f = gsl_vector_alloc(n); + gsl_vector *x = gsl_vector_alloc(p); + + /* allocate sparse Jacobian matrix with 2*p non-zero elements in triplet format */ + gsl_spmatrix *J = gsl_spmatrix_alloc_nzmax(n, p, 2 * p, GSL_SPMATRIX_TRIPLET); + + gsl_multilarge_nlinear_fdf fdf; + gsl_multilarge_nlinear_parameters fdf_params = + gsl_multilarge_nlinear_default_parameters(); + struct model_params params; + size_t i; + + params.alpha = 1.0e-5; + params.J = J; + + /* define function to be minimized */ + fdf.f = penalty_f; + fdf.df = penalty_df; + fdf.fvv = penalty_fvv; + fdf.n = n; + fdf.p = p; + fdf.params = ¶ms; + + for (i = 0; i < p; ++i) + { + /* starting point */ + gsl_vector_set(x, i, i + 1.0); + + /* store sqrt(alpha)*I_p in upper p-by-p block of J */ + gsl_spmatrix_set(J, i, i, sqrt(params.alpha)); + } + + fprintf(stderr, "%-25s %-4s %-4s %-5s %-6s %-4s %-10s %-10s %-7s %-11s %-10s\n", + "Method", "NITER", "NFEV", "NJUEV", "NJTJEV", "NAEV", "Init Cost", + "Final cost", "cond(J)", "Final |x|^2", "Time (s)"); + + fdf_params.scale = gsl_multilarge_nlinear_scale_levenberg; + + fdf_params.trs = gsl_multilarge_nlinear_trs_lm; + solve_system(x, &fdf, &fdf_params); + + fdf_params.trs = gsl_multilarge_nlinear_trs_lmaccel; + solve_system(x, &fdf, &fdf_params); + + fdf_params.trs = gsl_multilarge_nlinear_trs_dogleg; + solve_system(x, &fdf, &fdf_params); + + fdf_params.trs = gsl_multilarge_nlinear_trs_ddogleg; + solve_system(x, &fdf, &fdf_params); + + fdf_params.trs = gsl_multilarge_nlinear_trs_subspace2D; + solve_system(x, &fdf, &fdf_params); + + fdf_params.trs = gsl_multilarge_nlinear_trs_cgst; + solve_system(x, &fdf, &fdf_params); + + gsl_vector_free(f); + gsl_vector_free(x); + gsl_spmatrix_free(J); + + return 0; +} diff --git a/gsl-2.5/doc/examples/nmsimplex.c b/gsl-2.5/doc/examples/nmsimplex.c new file mode 100644 index 00000000..7be26a0d --- /dev/null +++ b/gsl-2.5/doc/examples/nmsimplex.c @@ -0,0 +1,62 @@ +int +main(void) +{ + double par[5] = {1.0, 2.0, 10.0, 20.0, 30.0}; + + const gsl_multimin_fminimizer_type *T = + gsl_multimin_fminimizer_nmsimplex2; + gsl_multimin_fminimizer *s = NULL; + gsl_vector *ss, *x; + gsl_multimin_function minex_func; + + size_t iter = 0; + int status; + double size; + + /* Starting point */ + x = gsl_vector_alloc (2); + gsl_vector_set (x, 0, 5.0); + gsl_vector_set (x, 1, 7.0); + + /* Set initial step sizes to 1 */ + ss = gsl_vector_alloc (2); + gsl_vector_set_all (ss, 1.0); + + /* Initialize method and iterate */ + minex_func.n = 2; + minex_func.f = my_f; + minex_func.params = par; + + s = gsl_multimin_fminimizer_alloc (T, 2); + gsl_multimin_fminimizer_set (s, &minex_func, x, ss); + + do + { + iter++; + status = gsl_multimin_fminimizer_iterate(s); + + if (status) + break; + + size = gsl_multimin_fminimizer_size (s); + status = gsl_multimin_test_size (size, 1e-2); + + if (status == GSL_SUCCESS) + { + printf ("converged to minimum at\n"); + } + + printf ("%5d %10.3e %10.3e f() = %7.3f size = %.3f\n", + iter, + gsl_vector_get (s->x, 0), + gsl_vector_get (s->x, 1), + s->fval, size); + } + while (status == GSL_CONTINUE && iter < 100); + + gsl_vector_free(x); + gsl_vector_free(ss); + gsl_multimin_fminimizer_free (s); + + return status; +} diff --git a/gsl-2.5/doc/examples/nmsimplex.txt b/gsl-2.5/doc/examples/nmsimplex.txt new file mode 100644 index 00000000..8cc43246 --- /dev/null +++ b/gsl-2.5/doc/examples/nmsimplex.txt @@ -0,0 +1,25 @@ + 1 6.500e+00 5.000e+00 f() = 512.500 size = 1.130 + 2 5.250e+00 4.000e+00 f() = 290.625 size = 1.409 + 3 5.250e+00 4.000e+00 f() = 290.625 size = 1.409 + 4 5.500e+00 1.000e+00 f() = 252.500 size = 1.409 + 5 2.625e+00 3.500e+00 f() = 101.406 size = 1.847 + 6 2.625e+00 3.500e+00 f() = 101.406 size = 1.847 + 7 0.000e+00 3.000e+00 f() = 60.000 size = 1.847 + 8 2.094e+00 1.875e+00 f() = 42.275 size = 1.321 + 9 2.578e-01 1.906e+00 f() = 35.684 size = 1.069 + 10 5.879e-01 2.445e+00 f() = 35.664 size = 0.841 + 11 1.258e+00 2.025e+00 f() = 30.680 size = 0.476 + 12 1.258e+00 2.025e+00 f() = 30.680 size = 0.367 + 13 1.093e+00 1.849e+00 f() = 30.539 size = 0.300 + 14 8.830e-01 2.004e+00 f() = 30.137 size = 0.172 + 15 8.830e-01 2.004e+00 f() = 30.137 size = 0.126 + 16 9.582e-01 2.060e+00 f() = 30.090 size = 0.106 + 17 1.022e+00 2.004e+00 f() = 30.005 size = 0.063 + 18 1.022e+00 2.004e+00 f() = 30.005 size = 0.043 + 19 1.022e+00 2.004e+00 f() = 30.005 size = 0.043 + 20 1.022e+00 2.004e+00 f() = 30.005 size = 0.027 + 21 1.022e+00 2.004e+00 f() = 30.005 size = 0.022 + 22 9.920e-01 1.997e+00 f() = 30.001 size = 0.016 + 23 9.920e-01 1.997e+00 f() = 30.001 size = 0.013 +converged to minimum at + 24 9.920e-01 1.997e+00 f() = 30.001 size = 0.008 diff --git a/gsl-2.5/doc/examples/ntuple.txt b/gsl-2.5/doc/examples/ntuple.txt new file mode 100644 index 00000000..f7dbad0f --- /dev/null +++ b/gsl-2.5/doc/examples/ntuple.txt @@ -0,0 +1,100 @@ +0.000000 0.100000 0.000000 +0.100000 0.200000 0.000000 +0.200000 0.300000 0.000000 +0.300000 0.400000 0.000000 +0.400000 0.500000 0.000000 +0.500000 0.600000 0.000000 +0.600000 0.700000 0.000000 +0.700000 0.800000 0.000000 +0.800000 0.900000 0.000000 +0.900000 1.000000 0.000000 +1.000000 1.100000 0.000000 +1.100000 1.200000 0.000000 +1.200000 1.300000 0.000000 +1.300000 1.400000 0.000000 +1.400000 1.500000 0.000000 +1.500000 1.600000 210.000000 +1.600000 1.700000 221.000000 +1.700000 1.800000 237.000000 +1.800000 1.900000 207.000000 +1.900000 2.000000 208.000000 +2.000000 2.100000 212.000000 +2.100000 2.200000 214.000000 +2.200000 2.300000 177.000000 +2.300000 2.400000 204.000000 +2.400000 2.500000 172.000000 +2.500000 2.600000 194.000000 +2.600000 2.700000 167.000000 +2.700000 2.800000 166.000000 +2.800000 2.900000 174.000000 +2.900000 3.000000 157.000000 +3.000000 3.100000 159.000000 +3.100000 3.200000 126.000000 +3.200000 3.300000 146.000000 +3.300000 3.400000 135.000000 +3.400000 3.500000 129.000000 +3.500000 3.600000 124.000000 +3.600000 3.700000 110.000000 +3.700000 3.800000 109.000000 +3.800000 3.900000 120.000000 +3.900000 4.000000 103.000000 +4.000000 4.100000 104.000000 +4.100000 4.200000 107.000000 +4.200000 4.300000 104.000000 +4.300000 4.400000 94.000000 +4.400000 4.500000 88.000000 +4.500000 4.600000 97.000000 +4.600000 4.700000 82.000000 +4.700000 4.800000 81.000000 +4.800000 4.900000 69.000000 +4.900000 5.000000 74.000000 +5.000000 5.100000 67.000000 +5.100000 5.200000 77.000000 +5.200000 5.300000 66.000000 +5.300000 5.400000 61.000000 +5.400000 5.500000 66.000000 +5.500000 5.600000 57.000000 +5.600000 5.700000 62.000000 +5.700000 5.800000 54.000000 +5.800000 5.900000 52.000000 +5.900000 6.000000 44.000000 +6.000000 6.100000 43.000000 +6.100000 6.200000 44.000000 +6.200000 6.300000 46.000000 +6.300000 6.400000 35.000000 +6.400000 6.500000 37.000000 +6.500000 6.600000 32.000000 +6.600000 6.700000 37.000000 +6.700000 6.800000 27.000000 +6.800000 6.900000 38.000000 +6.900000 7.000000 37.000000 +7.000000 7.100000 38.000000 +7.100000 7.200000 24.000000 +7.200000 7.300000 33.000000 +7.300000 7.400000 24.000000 +7.400000 7.500000 25.000000 +7.500000 7.600000 24.000000 +7.600000 7.700000 20.000000 +7.700000 7.800000 23.000000 +7.800000 7.900000 19.000000 +7.900000 8.000000 26.000000 +8.000000 8.100000 18.000000 +8.100000 8.200000 22.000000 +8.200000 8.300000 22.000000 +8.300000 8.400000 15.000000 +8.400000 8.500000 14.000000 +8.500000 8.600000 20.000000 +8.600000 8.700000 17.000000 +8.700000 8.800000 15.000000 +8.800000 8.900000 9.000000 +8.900000 9.000000 8.000000 +9.000000 9.100000 12.000000 +9.100000 9.200000 7.000000 +9.200000 9.300000 10.000000 +9.300000 9.400000 12.000000 +9.400000 9.500000 9.000000 +9.500000 9.600000 13.000000 +9.600000 9.700000 12.000000 +9.700000 9.800000 11.000000 +9.800000 9.900000 13.000000 +9.900000 10.000000 8.000000 diff --git a/gsl-2.5/doc/examples/ntupler b/gsl-2.5/doc/examples/ntupler new file mode 100755 index 00000000..bc7013a4 --- /dev/null +++ b/gsl-2.5/doc/examples/ntupler @@ -0,0 +1,228 @@ +#! /bin/sh + +# ntupler - temporary wrapper script for .libs/ntupler +# Generated by libtool (GNU libtool) 2.4.2 +# +# The ntupler program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s/\([`"$\\]\)/\\\1/g' + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command="(cd /home/groups/kipac/chto/package/gsl/gsl-2.5/doc/examples; LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LIBRARY_PATH; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; LD_LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/fftw/include:/home/users/chto/lib/fftw/lib:/home/users/chto/lib/healpix/lib:/home/users/chto/lib/namaster/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/include:/home/users/chto/cpp/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LD_LIBRARY_PATH; PATH=/share/software/user/open/curl/7.54.0/bin:/share/software/user/open/libressl/2.5.3/bin:/home/users/chto/lib/cfitsio:/home/users/chto/lib/cfitsio/include:/home/users/chto/lib:/home/users/chto/bin/bin:/home/users/chto/bin:/home/users/chto/.texlive/bin/x86_64-linux:/home/groups/kipac/chto/anaconda2/envs/newenv3/bin:/home/users/chto/.local/bin/include:/home/users/chto/.local/bin/lib:/home/users/chto/.local/bin:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/bin64:/share/software/user/open/fftw/3.3.6/bin:/home/groups/kipac/chto/anaconda2/condabin:/share/software/user/restricted/ifort/2019/bin:/share/software/user/open/gsl/2.3/bin:/share/software/user/srcc/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/dell/srvadmin/bin:/opt/dell/srvadmin/iSM/bin:/home/users/chto/bin; export PATH; gcc -g -O2 -o \$progdir/\$file ntupler.o ../../.libs/libgsl.so ../../cblas/.libs/libgslcblas.so -lm -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/.libs -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/cblas/.libs -Wl,-rpath -Wl,/usr/local/lib)" + +# This environment variable determines our operation mode. +if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then + # install mode needs the following variables: + generated_by_libtool_version='2.4.2' + notinst_deplibs=' ../../libgsl.la ../../cblas/libgslcblas.la' +else + # When we are sourced in execute mode, $file and $ECHO are already set. + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + file="$0" + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + ECHO="printf %s\\n" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ which is used only on +# windows platforms, and (c) all begin with the string --lt- +# (application programs are unlikely to have options which match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's ../../libtool value, followed by no. +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=$0 + shift + for lt_opt + do + case "$lt_opt" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%/[^/]*$%%'` + test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=. + lt_dump_F=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%^.*/%%'` + cat "$lt_dump_D/$lt_dump_F" + exit 0 + ;; + --lt-*) + $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n "$lt_option_debug"; then + echo "ntupler:ntupler:${LINENO}: libtool wrapper (GNU libtool) 2.4.2" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + $ECHO "ntupler:ntupler:${LINENO}: newargv[$lt_dump_args_N]: $lt_arg" + lt_dump_args_N=`expr $lt_dump_args_N + 1` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ + + if test -n "$lt_option_debug"; then + $ECHO "ntupler:ntupler:${LINENO}: newargv[0]: $progdir/$program" 1>&2 + func_lt_dump_args ${1+"$@"} 1>&2 + fi + exec "$progdir/$program" ${1+"$@"} + + $ECHO "$0: cannot exec $program $*" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from $@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case " $* " in + *\ --lt-*) + for lt_wr_arg + do + case $lt_wr_arg in + --lt-*) ;; + *) set x "$@" "$lt_wr_arg"; shift;; + esac + shift + done ;; + esac + func_exec_program_core ${1+"$@"} +} + + # Parse options + func_parse_lt_options "$0" ${1+"$@"} + + # Find the directory that this script lives in. + thisdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + test "x$thisdir" = "x$file" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=`ls -ld "$file" | /usr/bin/sed -n 's/.*-> //p'` + while test -n "$file"; do + destdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + + # If there was a directory component, then change thisdir. + if test "x$destdir" != "x$file"; then + case "$destdir" in + [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;; + *) thisdir="$thisdir/$destdir" ;; + esac + fi + + file=`$ECHO "$file" | /usr/bin/sed 's%^.*/%%'` + file=`ls -ld "$thisdir/$file" | /usr/bin/sed -n 's/.*-> //p'` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no + if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then + # special case for '.' + if test "$thisdir" = "."; then + thisdir=`pwd` + fi + # remove .libs from thisdir + case "$thisdir" in + *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /usr/bin/sed 's%[\\/][^\\/]*$%%'` ;; + .libs ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=`cd "$thisdir" && pwd` + test -n "$absdir" && thisdir="$absdir" + + program=lt-'ntupler' + progdir="$thisdir/.libs" + + if test ! -f "$progdir/$program" || + { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /usr/bin/sed 1q`; \ + test "X$file" != "X$progdir/$program"; }; then + + file="$$-$program" + + if test ! -d "$progdir"; then + mkdir "$progdir" + else + rm -f "$progdir/$file" + fi + + # relink executable if necessary + if test -n "$relink_command"; then + if relink_command_output=`eval $relink_command 2>&1`; then : + else + printf %s\n "$relink_command_output" >&2 + rm -f "$progdir/$file" + exit 1 + fi + fi + + mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null || + { rm -f "$progdir/$program"; + mv -f "$progdir/$file" "$progdir/$program"; } + rm -f "$progdir/$file" + fi + + if test -f "$progdir/$program"; then + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + # Run the actual program with our arguments. + func_exec_program ${1+"$@"} + fi + else + # The program doesn't exist. + $ECHO "$0: error: \`$progdir/$program' does not exist" 1>&2 + $ECHO "This script is just a wrapper for $program." 1>&2 + $ECHO "See the libtool documentation for more information." 1>&2 + exit 1 + fi +fi diff --git a/gsl-2.5/doc/examples/ntupler.c b/gsl-2.5/doc/examples/ntupler.c new file mode 100644 index 00000000..e76a743c --- /dev/null +++ b/gsl-2.5/doc/examples/ntupler.c @@ -0,0 +1,73 @@ +#include +#include +#include + +struct data +{ + double x; + double y; + double z; +}; + +int sel_func (void *ntuple_data, void *params); +double val_func (void *ntuple_data, void *params); + +int +main (void) +{ + struct data ntuple_row; + + gsl_ntuple *ntuple + = gsl_ntuple_open ("test.dat", &ntuple_row, + sizeof (ntuple_row)); + double lower = 1.5; + + gsl_ntuple_select_fn S; + gsl_ntuple_value_fn V; + + gsl_histogram *h = gsl_histogram_alloc (100); + gsl_histogram_set_ranges_uniform(h, 0.0, 10.0); + + S.function = &sel_func; + S.params = &lower; + + V.function = &val_func; + V.params = 0; + + gsl_ntuple_project (h, ntuple, &V, &S); + gsl_histogram_fprintf (stdout, h, "%f", "%f"); + gsl_histogram_free (h); + gsl_ntuple_close (ntuple); + + return 0; +} + +int +sel_func (void *ntuple_data, void *params) +{ + struct data * data = (struct data *) ntuple_data; + double x, y, z, E2, scale; + scale = *(double *) params; + + x = data->x; + y = data->y; + z = data->z; + + E2 = x * x + y * y + z * z; + + return E2 > scale; +} + +double +val_func (void *ntuple_data, void *params) +{ + (void)(params); /* avoid unused parameter warning */ + struct data * data = (struct data *) ntuple_data; + double x, y, z; + + x = data->x; + y = data->y; + z = data->z; + + return x * x + y * y + z * z; +} diff --git a/gsl-2.5/doc/examples/ntuplew b/gsl-2.5/doc/examples/ntuplew new file mode 100755 index 00000000..a06f9bb1 --- /dev/null +++ b/gsl-2.5/doc/examples/ntuplew @@ -0,0 +1,228 @@ +#! /bin/sh + +# ntuplew - temporary wrapper script for .libs/ntuplew +# Generated by libtool (GNU libtool) 2.4.2 +# +# The ntuplew program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s/\([`"$\\]\)/\\\1/g' + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command="(cd /home/groups/kipac/chto/package/gsl/gsl-2.5/doc/examples; LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LIBRARY_PATH; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; LD_LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/fftw/include:/home/users/chto/lib/fftw/lib:/home/users/chto/lib/healpix/lib:/home/users/chto/lib/namaster/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/include:/home/users/chto/cpp/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LD_LIBRARY_PATH; PATH=/share/software/user/open/curl/7.54.0/bin:/share/software/user/open/libressl/2.5.3/bin:/home/users/chto/lib/cfitsio:/home/users/chto/lib/cfitsio/include:/home/users/chto/lib:/home/users/chto/bin/bin:/home/users/chto/bin:/home/users/chto/.texlive/bin/x86_64-linux:/home/groups/kipac/chto/anaconda2/envs/newenv3/bin:/home/users/chto/.local/bin/include:/home/users/chto/.local/bin/lib:/home/users/chto/.local/bin:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/bin64:/share/software/user/open/fftw/3.3.6/bin:/home/groups/kipac/chto/anaconda2/condabin:/share/software/user/restricted/ifort/2019/bin:/share/software/user/open/gsl/2.3/bin:/share/software/user/srcc/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/dell/srvadmin/bin:/opt/dell/srvadmin/iSM/bin:/home/users/chto/bin; export PATH; gcc -g -O2 -o \$progdir/\$file ntuplew.o ../../.libs/libgsl.so ../../cblas/.libs/libgslcblas.so -lm -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/.libs -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/cblas/.libs -Wl,-rpath -Wl,/usr/local/lib)" + +# This environment variable determines our operation mode. +if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then + # install mode needs the following variables: + generated_by_libtool_version='2.4.2' + notinst_deplibs=' ../../libgsl.la ../../cblas/libgslcblas.la' +else + # When we are sourced in execute mode, $file and $ECHO are already set. + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + file="$0" + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + ECHO="printf %s\\n" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ which is used only on +# windows platforms, and (c) all begin with the string --lt- +# (application programs are unlikely to have options which match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's ../../libtool value, followed by no. +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=$0 + shift + for lt_opt + do + case "$lt_opt" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%/[^/]*$%%'` + test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=. + lt_dump_F=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%^.*/%%'` + cat "$lt_dump_D/$lt_dump_F" + exit 0 + ;; + --lt-*) + $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n "$lt_option_debug"; then + echo "ntuplew:ntuplew:${LINENO}: libtool wrapper (GNU libtool) 2.4.2" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + $ECHO "ntuplew:ntuplew:${LINENO}: newargv[$lt_dump_args_N]: $lt_arg" + lt_dump_args_N=`expr $lt_dump_args_N + 1` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ + + if test -n "$lt_option_debug"; then + $ECHO "ntuplew:ntuplew:${LINENO}: newargv[0]: $progdir/$program" 1>&2 + func_lt_dump_args ${1+"$@"} 1>&2 + fi + exec "$progdir/$program" ${1+"$@"} + + $ECHO "$0: cannot exec $program $*" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from $@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case " $* " in + *\ --lt-*) + for lt_wr_arg + do + case $lt_wr_arg in + --lt-*) ;; + *) set x "$@" "$lt_wr_arg"; shift;; + esac + shift + done ;; + esac + func_exec_program_core ${1+"$@"} +} + + # Parse options + func_parse_lt_options "$0" ${1+"$@"} + + # Find the directory that this script lives in. + thisdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + test "x$thisdir" = "x$file" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=`ls -ld "$file" | /usr/bin/sed -n 's/.*-> //p'` + while test -n "$file"; do + destdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + + # If there was a directory component, then change thisdir. + if test "x$destdir" != "x$file"; then + case "$destdir" in + [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;; + *) thisdir="$thisdir/$destdir" ;; + esac + fi + + file=`$ECHO "$file" | /usr/bin/sed 's%^.*/%%'` + file=`ls -ld "$thisdir/$file" | /usr/bin/sed -n 's/.*-> //p'` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no + if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then + # special case for '.' + if test "$thisdir" = "."; then + thisdir=`pwd` + fi + # remove .libs from thisdir + case "$thisdir" in + *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /usr/bin/sed 's%[\\/][^\\/]*$%%'` ;; + .libs ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=`cd "$thisdir" && pwd` + test -n "$absdir" && thisdir="$absdir" + + program=lt-'ntuplew' + progdir="$thisdir/.libs" + + if test ! -f "$progdir/$program" || + { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /usr/bin/sed 1q`; \ + test "X$file" != "X$progdir/$program"; }; then + + file="$$-$program" + + if test ! -d "$progdir"; then + mkdir "$progdir" + else + rm -f "$progdir/$file" + fi + + # relink executable if necessary + if test -n "$relink_command"; then + if relink_command_output=`eval $relink_command 2>&1`; then : + else + printf %s\n "$relink_command_output" >&2 + rm -f "$progdir/$file" + exit 1 + fi + fi + + mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null || + { rm -f "$progdir/$program"; + mv -f "$progdir/$file" "$progdir/$program"; } + rm -f "$progdir/$file" + fi + + if test -f "$progdir/$program"; then + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + # Run the actual program with our arguments. + func_exec_program ${1+"$@"} + fi + else + # The program doesn't exist. + $ECHO "$0: error: \`$progdir/$program' does not exist" 1>&2 + $ECHO "This script is just a wrapper for $program." 1>&2 + $ECHO "See the libtool documentation for more information." 1>&2 + exit 1 + fi +fi diff --git a/gsl-2.5/doc/examples/ntuplew.c b/gsl-2.5/doc/examples/ntuplew.c new file mode 100644 index 00000000..82f6fa48 --- /dev/null +++ b/gsl-2.5/doc/examples/ntuplew.c @@ -0,0 +1,43 @@ +#include +#include +#include + +struct data +{ + double x; + double y; + double z; +}; + +int +main (void) +{ + const gsl_rng_type * T; + gsl_rng * r; + + struct data ntuple_row; + int i; + + gsl_ntuple *ntuple + = gsl_ntuple_create ("test.dat", &ntuple_row, + sizeof (ntuple_row)); + + gsl_rng_env_setup (); + + T = gsl_rng_default; + r = gsl_rng_alloc (T); + + for (i = 0; i < 10000; i++) + { + ntuple_row.x = gsl_ran_ugaussian (r); + ntuple_row.y = gsl_ran_ugaussian (r); + ntuple_row.z = gsl_ran_ugaussian (r); + + gsl_ntuple_write (ntuple); + } + + gsl_ntuple_close (ntuple); + gsl_rng_free (r); + + return 0; +} diff --git a/gsl-2.5/doc/examples/ode-initval b/gsl-2.5/doc/examples/ode-initval new file mode 100755 index 00000000..2444fb47 --- /dev/null +++ b/gsl-2.5/doc/examples/ode-initval @@ -0,0 +1,228 @@ +#! /bin/sh + +# ode-initval - temporary wrapper script for .libs/ode-initval +# Generated by libtool (GNU libtool) 2.4.2 +# +# The ode-initval program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s/\([`"$\\]\)/\\\1/g' + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command="(cd /home/groups/kipac/chto/package/gsl/gsl-2.5/doc/examples; LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LIBRARY_PATH; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; LD_LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/fftw/include:/home/users/chto/lib/fftw/lib:/home/users/chto/lib/healpix/lib:/home/users/chto/lib/namaster/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/include:/home/users/chto/cpp/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LD_LIBRARY_PATH; PATH=/share/software/user/open/curl/7.54.0/bin:/share/software/user/open/libressl/2.5.3/bin:/home/users/chto/lib/cfitsio:/home/users/chto/lib/cfitsio/include:/home/users/chto/lib:/home/users/chto/bin/bin:/home/users/chto/bin:/home/users/chto/.texlive/bin/x86_64-linux:/home/groups/kipac/chto/anaconda2/envs/newenv3/bin:/home/users/chto/.local/bin/include:/home/users/chto/.local/bin/lib:/home/users/chto/.local/bin:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/bin64:/share/software/user/open/fftw/3.3.6/bin:/home/groups/kipac/chto/anaconda2/condabin:/share/software/user/restricted/ifort/2019/bin:/share/software/user/open/gsl/2.3/bin:/share/software/user/srcc/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/dell/srvadmin/bin:/opt/dell/srvadmin/iSM/bin:/home/users/chto/bin; export PATH; gcc -g -O2 -o \$progdir/\$file ode-initval.o ../../.libs/libgsl.so ../../cblas/.libs/libgslcblas.so -lm -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/.libs -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/cblas/.libs -Wl,-rpath -Wl,/usr/local/lib)" + +# This environment variable determines our operation mode. +if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then + # install mode needs the following variables: + generated_by_libtool_version='2.4.2' + notinst_deplibs=' ../../libgsl.la ../../cblas/libgslcblas.la' +else + # When we are sourced in execute mode, $file and $ECHO are already set. + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + file="$0" + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + ECHO="printf %s\\n" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ which is used only on +# windows platforms, and (c) all begin with the string --lt- +# (application programs are unlikely to have options which match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's ../../libtool value, followed by no. +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=$0 + shift + for lt_opt + do + case "$lt_opt" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%/[^/]*$%%'` + test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=. + lt_dump_F=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%^.*/%%'` + cat "$lt_dump_D/$lt_dump_F" + exit 0 + ;; + --lt-*) + $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n "$lt_option_debug"; then + echo "ode-initval:ode-initval:${LINENO}: libtool wrapper (GNU libtool) 2.4.2" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + $ECHO "ode-initval:ode-initval:${LINENO}: newargv[$lt_dump_args_N]: $lt_arg" + lt_dump_args_N=`expr $lt_dump_args_N + 1` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ + + if test -n "$lt_option_debug"; then + $ECHO "ode-initval:ode-initval:${LINENO}: newargv[0]: $progdir/$program" 1>&2 + func_lt_dump_args ${1+"$@"} 1>&2 + fi + exec "$progdir/$program" ${1+"$@"} + + $ECHO "$0: cannot exec $program $*" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from $@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case " $* " in + *\ --lt-*) + for lt_wr_arg + do + case $lt_wr_arg in + --lt-*) ;; + *) set x "$@" "$lt_wr_arg"; shift;; + esac + shift + done ;; + esac + func_exec_program_core ${1+"$@"} +} + + # Parse options + func_parse_lt_options "$0" ${1+"$@"} + + # Find the directory that this script lives in. + thisdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + test "x$thisdir" = "x$file" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=`ls -ld "$file" | /usr/bin/sed -n 's/.*-> //p'` + while test -n "$file"; do + destdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + + # If there was a directory component, then change thisdir. + if test "x$destdir" != "x$file"; then + case "$destdir" in + [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;; + *) thisdir="$thisdir/$destdir" ;; + esac + fi + + file=`$ECHO "$file" | /usr/bin/sed 's%^.*/%%'` + file=`ls -ld "$thisdir/$file" | /usr/bin/sed -n 's/.*-> //p'` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no + if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then + # special case for '.' + if test "$thisdir" = "."; then + thisdir=`pwd` + fi + # remove .libs from thisdir + case "$thisdir" in + *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /usr/bin/sed 's%[\\/][^\\/]*$%%'` ;; + .libs ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=`cd "$thisdir" && pwd` + test -n "$absdir" && thisdir="$absdir" + + program=lt-'ode-initval' + progdir="$thisdir/.libs" + + if test ! -f "$progdir/$program" || + { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /usr/bin/sed 1q`; \ + test "X$file" != "X$progdir/$program"; }; then + + file="$$-$program" + + if test ! -d "$progdir"; then + mkdir "$progdir" + else + rm -f "$progdir/$file" + fi + + # relink executable if necessary + if test -n "$relink_command"; then + if relink_command_output=`eval $relink_command 2>&1`; then : + else + printf %s\n "$relink_command_output" >&2 + rm -f "$progdir/$file" + exit 1 + fi + fi + + mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null || + { rm -f "$progdir/$program"; + mv -f "$progdir/$file" "$progdir/$program"; } + rm -f "$progdir/$file" + fi + + if test -f "$progdir/$program"; then + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + # Run the actual program with our arguments. + func_exec_program ${1+"$@"} + fi + else + # The program doesn't exist. + $ECHO "$0: error: \`$progdir/$program' does not exist" 1>&2 + $ECHO "This script is just a wrapper for $program." 1>&2 + $ECHO "See the libtool documentation for more information." 1>&2 + exit 1 + fi +fi diff --git a/gsl-2.5/doc/examples/ode-initval-low-level.c b/gsl-2.5/doc/examples/ode-initval-low-level.c new file mode 100644 index 00000000..bbc1b34d --- /dev/null +++ b/gsl-2.5/doc/examples/ode-initval-low-level.c @@ -0,0 +1,38 @@ +int +main (void) +{ + const gsl_odeiv2_step_type * T + = gsl_odeiv2_step_rk8pd; + + gsl_odeiv2_step * s + = gsl_odeiv2_step_alloc (T, 2); + gsl_odeiv2_control * c + = gsl_odeiv2_control_y_new (1e-6, 0.0); + gsl_odeiv2_evolve * e + = gsl_odeiv2_evolve_alloc (2); + + double mu = 10; + gsl_odeiv2_system sys = {func, jac, 2, &mu}; + + double t = 0.0, t1 = 100.0; + double h = 1e-6; + double y[2] = { 1.0, 0.0 }; + + while (t < t1) + { + int status = gsl_odeiv2_evolve_apply (e, c, s, + &sys, + &t, t1, + &h, y); + + if (status != GSL_SUCCESS) + break; + + printf ("%.5e %.5e %.5e\n", t, y[0], y[1]); + } + + gsl_odeiv2_evolve_free (e); + gsl_odeiv2_control_free (c); + gsl_odeiv2_step_free (s); + return 0; +} diff --git a/gsl-2.5/doc/examples/ode-initval.c b/gsl-2.5/doc/examples/ode-initval.c new file mode 100644 index 00000000..3b626b40 --- /dev/null +++ b/gsl-2.5/doc/examples/ode-initval.c @@ -0,0 +1,64 @@ +#include +#include +#include +#include + +int +func (double t, const double y[], double f[], + void *params) +{ + (void)(t); /* avoid unused parameter warning */ + double mu = *(double *)params; + f[0] = y[1]; + f[1] = -y[0] - mu*y[1]*(y[0]*y[0] - 1); + return GSL_SUCCESS; +} + +int +jac (double t, const double y[], double *dfdy, + double dfdt[], void *params) +{ + (void)(t); /* avoid unused parameter warning */ + double mu = *(double *)params; + gsl_matrix_view dfdy_mat + = gsl_matrix_view_array (dfdy, 2, 2); + gsl_matrix * m = &dfdy_mat.matrix; + gsl_matrix_set (m, 0, 0, 0.0); + gsl_matrix_set (m, 0, 1, 1.0); + gsl_matrix_set (m, 1, 0, -2.0*mu*y[0]*y[1] - 1.0); + gsl_matrix_set (m, 1, 1, -mu*(y[0]*y[0] - 1.0)); + dfdt[0] = 0.0; + dfdt[1] = 0.0; + return GSL_SUCCESS; +} + +int +main (void) +{ + double mu = 10; + gsl_odeiv2_system sys = {func, jac, 2, &mu}; + + gsl_odeiv2_driver * d = + gsl_odeiv2_driver_alloc_y_new (&sys, gsl_odeiv2_step_rk8pd, + 1e-6, 1e-6, 0.0); + int i; + double t = 0.0, t1 = 100.0; + double y[2] = { 1.0, 0.0 }; + + for (i = 1; i <= 100; i++) + { + double ti = i * t1 / 100.0; + int status = gsl_odeiv2_driver_apply (d, &t, ti, y); + + if (status != GSL_SUCCESS) + { + printf ("error, return value=%d\n", status); + break; + } + + printf ("%.5e %.5e %.5e\n", t, y[0], y[1]); + } + + gsl_odeiv2_driver_free (d); + return 0; +} diff --git a/gsl-2.5/doc/examples/ode-initval.txt b/gsl-2.5/doc/examples/ode-initval.txt new file mode 100644 index 00000000..6039ed48 --- /dev/null +++ b/gsl-2.5/doc/examples/ode-initval.txt @@ -0,0 +1,100 @@ +1.00000e+00 -1.45686e+00 -1.15474e+01 +2.00000e+00 -1.95608e+00 6.90647e-02 +3.00000e+00 -1.88481e+00 7.36425e-02 +4.00000e+00 -1.80842e+00 7.93679e-02 +5.00000e+00 -1.72550e+00 8.68268e-02 +6.00000e+00 -1.63383e+00 9.71295e-02 +7.00000e+00 -1.52952e+00 1.12715e-01 +8.00000e+00 -1.40454e+00 1.40376e-01 +9.00000e+00 -1.23605e+00 2.10149e-01 +1.00000e+01 -8.53916e-01 9.01984e-01 +1.10000e+01 1.99274e+00 -6.69455e-02 +1.20000e+01 1.92381e+00 -7.10572e-02 +1.30000e+01 1.85032e+00 -7.61105e-02 +1.40000e+01 1.77113e+00 -8.25398e-02 +1.50000e+01 1.68453e+00 -9.11205e-02 +1.60000e+01 1.58767e+00 -1.03413e-01 +1.70000e+01 1.47528e+00 -1.23181e-01 +1.80000e+01 1.33506e+00 -1.62840e-01 +1.90000e+01 1.12079e+00 -3.05570e-01 +2.00000e+01 -1.59837e+00 -9.82301e+00 +2.10000e+01 -1.96148e+00 6.87433e-02 +2.20000e+01 -1.89057e+00 7.32476e-02 +2.30000e+01 -1.81462e+00 7.88663e-02 +2.40000e+01 -1.73228e+00 8.61590e-02 +2.50000e+01 -1.64141e+00 9.61768e-02 +2.60000e+01 -1.53829e+00 1.11197e-01 +2.70000e+01 -1.41542e+00 1.37412e-01 +2.80000e+01 -1.25215e+00 2.00819e-01 +2.90000e+01 -9.15979e-01 6.98133e-01 +3.00000e+01 1.99798e+00 -6.66422e-02 +3.10000e+01 1.92936e+00 -7.07053e-02 +3.20000e+01 1.85626e+00 -7.56719e-02 +3.30000e+01 1.77758e+00 -8.19715e-02 +3.40000e+01 1.69164e+00 -9.03420e-02 +3.50000e+01 1.59573e+00 -1.02252e-01 +3.60000e+01 1.48485e+00 -1.21185e-01 +3.70000e+01 1.34764e+00 -1.58256e-01 +3.80000e+01 1.14377e+00 -2.81644e-01 +3.90000e+01 -5.76613e-01 -1.26648e+01 +4.00000e+01 -1.96686e+00 6.84268e-02 +4.10000e+01 -1.89629e+00 7.28598e-02 +4.20000e+01 -1.82078e+00 7.83750e-02 +4.30000e+01 -1.73901e+00 8.55074e-02 +4.40000e+01 -1.64891e+00 9.52534e-02 +4.50000e+01 -1.54695e+00 1.09742e-01 +4.60000e+01 -1.42608e+00 1.34632e-01 +4.70000e+01 -1.26756e+00 1.92566e-01 +4.80000e+01 -9.65230e-01 5.67682e-01 +4.90000e+01 2.00319e+00 -6.62229e-02 +5.00000e+01 1.93489e+00 -7.03588e-02 +5.10000e+01 1.86218e+00 -7.52414e-02 +5.20000e+01 1.78398e+00 -8.14156e-02 +5.30000e+01 1.69869e+00 -8.95845e-02 +5.40000e+01 1.60370e+00 -1.01133e-01 +5.50000e+01 1.49428e+00 -1.19287e-01 +5.60000e+01 1.35987e+00 -1.54035e-01 +5.70000e+01 1.16505e+00 -2.61951e-01 +5.80000e+01 1.42891e-01 -6.13207e+00 +5.90000e+01 -1.97221e+00 6.81150e-02 +6.00000e+01 -1.90199e+00 7.24784e-02 +6.10000e+01 -1.82690e+00 7.78933e-02 +6.20000e+01 -1.74568e+00 8.48713e-02 +6.30000e+01 -1.65634e+00 9.43576e-02 +6.40000e+01 -1.55550e+00 1.08345e-01 +6.50000e+01 -1.43653e+00 1.32018e-01 +6.60000e+01 -1.28235e+00 1.85208e-01 +6.70000e+01 -1.00603e+00 4.78809e-01 +6.80000e+01 2.00833e+00 -6.45142e-02 +6.90000e+01 1.94039e+00 -7.00179e-02 +7.00000e+01 1.86806e+00 -7.48186e-02 +7.10000e+01 1.79034e+00 -8.08716e-02 +7.20000e+01 1.70568e+00 -8.88470e-02 +7.30000e+01 1.61158e+00 -1.00051e-01 +7.40000e+01 1.50355e+00 -1.17479e-01 +7.50000e+01 1.37179e+00 -1.50135e-01 +7.60000e+01 1.18491e+00 -2.45468e-01 +7.70000e+01 4.84591e-01 -3.05853e+00 +7.80000e+01 -1.97754e+00 6.78077e-02 +7.90000e+01 -1.90765e+00 7.21034e-02 +8.00000e+01 -1.83299e+00 7.74210e-02 +8.10000e+01 -1.75231e+00 8.42502e-02 +8.20000e+01 -1.66370e+00 9.34883e-02 +8.30000e+01 -1.56393e+00 1.07003e-01 +8.40000e+01 -1.44678e+00 1.29554e-01 +8.50000e+01 -1.29661e+00 1.78603e-01 +8.60000e+01 -1.04093e+00 4.15185e-01 +8.70000e+01 2.01299e+00 -4.86619e-02 +8.80000e+01 1.94586e+00 -6.96821e-02 +8.90000e+01 1.87390e+00 -7.44034e-02 +9.00000e+01 1.79665e+00 -8.03392e-02 +9.10000e+01 1.71261e+00 -8.81285e-02 +9.20000e+01 1.61938e+00 -9.90050e-02 +9.30000e+01 1.51269e+00 -1.15754e-01 +9.40000e+01 1.38341e+00 -1.46518e-01 +9.50000e+01 1.20359e+00 -2.31470e-01 +9.60000e+01 6.68012e-01 -1.79285e+00 +9.70000e+01 -1.98284e+00 6.75047e-02 +9.80000e+01 -1.91329e+00 7.17346e-02 +9.90000e+01 -1.83904e+00 7.69577e-02 +1.00000e+02 -1.75889e+00 8.36435e-02 diff --git a/gsl-2.5/doc/examples/odefixed.c b/gsl-2.5/doc/examples/odefixed.c new file mode 100644 index 00000000..f2eda35b --- /dev/null +++ b/gsl-2.5/doc/examples/odefixed.c @@ -0,0 +1,30 @@ +int +main (void) +{ + double mu = 10; + gsl_odeiv2_system sys = { func, jac, 2, &mu }; + + gsl_odeiv2_driver *d = + gsl_odeiv2_driver_alloc_y_new (&sys, gsl_odeiv2_step_rk4, + 1e-3, 1e-8, 1e-8); + + double t = 0.0; + double y[2] = { 1.0, 0.0 }; + int i, s; + + for (i = 0; i < 100; i++) + { + s = gsl_odeiv2_driver_apply_fixed_step (d, &t, 1e-3, 1000, y); + + if (s != GSL_SUCCESS) + { + printf ("error: driver returned %d\n", s); + break; + } + + printf ("%.5e %.5e %.5e\n", t, y[0], y[1]); + } + + gsl_odeiv2_driver_free (d); + return s; +} diff --git a/gsl-2.5/doc/examples/permseq b/gsl-2.5/doc/examples/permseq new file mode 100755 index 00000000..9b47d068 --- /dev/null +++ b/gsl-2.5/doc/examples/permseq @@ -0,0 +1,228 @@ +#! /bin/sh + +# permseq - temporary wrapper script for .libs/permseq +# Generated by libtool (GNU libtool) 2.4.2 +# +# The permseq program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s/\([`"$\\]\)/\\\1/g' + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command="(cd /home/groups/kipac/chto/package/gsl/gsl-2.5/doc/examples; LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LIBRARY_PATH; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; LD_LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/fftw/include:/home/users/chto/lib/fftw/lib:/home/users/chto/lib/healpix/lib:/home/users/chto/lib/namaster/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/include:/home/users/chto/cpp/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LD_LIBRARY_PATH; PATH=/share/software/user/open/curl/7.54.0/bin:/share/software/user/open/libressl/2.5.3/bin:/home/users/chto/lib/cfitsio:/home/users/chto/lib/cfitsio/include:/home/users/chto/lib:/home/users/chto/bin/bin:/home/users/chto/bin:/home/users/chto/.texlive/bin/x86_64-linux:/home/groups/kipac/chto/anaconda2/envs/newenv3/bin:/home/users/chto/.local/bin/include:/home/users/chto/.local/bin/lib:/home/users/chto/.local/bin:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/bin64:/share/software/user/open/fftw/3.3.6/bin:/home/groups/kipac/chto/anaconda2/condabin:/share/software/user/restricted/ifort/2019/bin:/share/software/user/open/gsl/2.3/bin:/share/software/user/srcc/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/dell/srvadmin/bin:/opt/dell/srvadmin/iSM/bin:/home/users/chto/bin; export PATH; gcc -g -O2 -o \$progdir/\$file permseq.o ../../.libs/libgsl.so ../../cblas/.libs/libgslcblas.so -lm -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/.libs -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/cblas/.libs -Wl,-rpath -Wl,/usr/local/lib)" + +# This environment variable determines our operation mode. +if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then + # install mode needs the following variables: + generated_by_libtool_version='2.4.2' + notinst_deplibs=' ../../libgsl.la ../../cblas/libgslcblas.la' +else + # When we are sourced in execute mode, $file and $ECHO are already set. + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + file="$0" + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + ECHO="printf %s\\n" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ which is used only on +# windows platforms, and (c) all begin with the string --lt- +# (application programs are unlikely to have options which match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's ../../libtool value, followed by no. +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=$0 + shift + for lt_opt + do + case "$lt_opt" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%/[^/]*$%%'` + test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=. + lt_dump_F=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%^.*/%%'` + cat "$lt_dump_D/$lt_dump_F" + exit 0 + ;; + --lt-*) + $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n "$lt_option_debug"; then + echo "permseq:permseq:${LINENO}: libtool wrapper (GNU libtool) 2.4.2" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + $ECHO "permseq:permseq:${LINENO}: newargv[$lt_dump_args_N]: $lt_arg" + lt_dump_args_N=`expr $lt_dump_args_N + 1` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ + + if test -n "$lt_option_debug"; then + $ECHO "permseq:permseq:${LINENO}: newargv[0]: $progdir/$program" 1>&2 + func_lt_dump_args ${1+"$@"} 1>&2 + fi + exec "$progdir/$program" ${1+"$@"} + + $ECHO "$0: cannot exec $program $*" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from $@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case " $* " in + *\ --lt-*) + for lt_wr_arg + do + case $lt_wr_arg in + --lt-*) ;; + *) set x "$@" "$lt_wr_arg"; shift;; + esac + shift + done ;; + esac + func_exec_program_core ${1+"$@"} +} + + # Parse options + func_parse_lt_options "$0" ${1+"$@"} + + # Find the directory that this script lives in. + thisdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + test "x$thisdir" = "x$file" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=`ls -ld "$file" | /usr/bin/sed -n 's/.*-> //p'` + while test -n "$file"; do + destdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + + # If there was a directory component, then change thisdir. + if test "x$destdir" != "x$file"; then + case "$destdir" in + [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;; + *) thisdir="$thisdir/$destdir" ;; + esac + fi + + file=`$ECHO "$file" | /usr/bin/sed 's%^.*/%%'` + file=`ls -ld "$thisdir/$file" | /usr/bin/sed -n 's/.*-> //p'` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no + if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then + # special case for '.' + if test "$thisdir" = "."; then + thisdir=`pwd` + fi + # remove .libs from thisdir + case "$thisdir" in + *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /usr/bin/sed 's%[\\/][^\\/]*$%%'` ;; + .libs ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=`cd "$thisdir" && pwd` + test -n "$absdir" && thisdir="$absdir" + + program=lt-'permseq' + progdir="$thisdir/.libs" + + if test ! -f "$progdir/$program" || + { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /usr/bin/sed 1q`; \ + test "X$file" != "X$progdir/$program"; }; then + + file="$$-$program" + + if test ! -d "$progdir"; then + mkdir "$progdir" + else + rm -f "$progdir/$file" + fi + + # relink executable if necessary + if test -n "$relink_command"; then + if relink_command_output=`eval $relink_command 2>&1`; then : + else + printf %s\n "$relink_command_output" >&2 + rm -f "$progdir/$file" + exit 1 + fi + fi + + mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null || + { rm -f "$progdir/$program"; + mv -f "$progdir/$file" "$progdir/$program"; } + rm -f "$progdir/$file" + fi + + if test -f "$progdir/$program"; then + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + # Run the actual program with our arguments. + func_exec_program ${1+"$@"} + fi + else + # The program doesn't exist. + $ECHO "$0: error: \`$progdir/$program' does not exist" 1>&2 + $ECHO "This script is just a wrapper for $program." 1>&2 + $ECHO "See the libtool documentation for more information." 1>&2 + exit 1 + fi +fi diff --git a/gsl-2.5/doc/examples/permseq.c b/gsl-2.5/doc/examples/permseq.c new file mode 100644 index 00000000..08ebf63a --- /dev/null +++ b/gsl-2.5/doc/examples/permseq.c @@ -0,0 +1,21 @@ +#include +#include + +int +main (void) +{ + gsl_permutation * p = gsl_permutation_alloc (3); + + gsl_permutation_init (p); + + do + { + gsl_permutation_fprintf (stdout, p, " %u"); + printf ("\n"); + } + while (gsl_permutation_next(p) == GSL_SUCCESS); + + gsl_permutation_free (p); + + return 0; +} diff --git a/gsl-2.5/doc/examples/permseq.txt b/gsl-2.5/doc/examples/permseq.txt new file mode 100644 index 00000000..6076202b --- /dev/null +++ b/gsl-2.5/doc/examples/permseq.txt @@ -0,0 +1,6 @@ + 0 1 2 + 0 2 1 + 1 0 2 + 1 2 0 + 2 0 1 + 2 1 0 diff --git a/gsl-2.5/doc/examples/permshuffle b/gsl-2.5/doc/examples/permshuffle new file mode 100755 index 00000000..7160be74 --- /dev/null +++ b/gsl-2.5/doc/examples/permshuffle @@ -0,0 +1,228 @@ +#! /bin/sh + +# permshuffle - temporary wrapper script for .libs/permshuffle +# Generated by libtool (GNU libtool) 2.4.2 +# +# The permshuffle program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s/\([`"$\\]\)/\\\1/g' + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command="(cd /home/groups/kipac/chto/package/gsl/gsl-2.5/doc/examples; LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LIBRARY_PATH; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; LD_LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/fftw/include:/home/users/chto/lib/fftw/lib:/home/users/chto/lib/healpix/lib:/home/users/chto/lib/namaster/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/include:/home/users/chto/cpp/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LD_LIBRARY_PATH; PATH=/share/software/user/open/curl/7.54.0/bin:/share/software/user/open/libressl/2.5.3/bin:/home/users/chto/lib/cfitsio:/home/users/chto/lib/cfitsio/include:/home/users/chto/lib:/home/users/chto/bin/bin:/home/users/chto/bin:/home/users/chto/.texlive/bin/x86_64-linux:/home/groups/kipac/chto/anaconda2/envs/newenv3/bin:/home/users/chto/.local/bin/include:/home/users/chto/.local/bin/lib:/home/users/chto/.local/bin:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/bin64:/share/software/user/open/fftw/3.3.6/bin:/home/groups/kipac/chto/anaconda2/condabin:/share/software/user/restricted/ifort/2019/bin:/share/software/user/open/gsl/2.3/bin:/share/software/user/srcc/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/dell/srvadmin/bin:/opt/dell/srvadmin/iSM/bin:/home/users/chto/bin; export PATH; gcc -g -O2 -o \$progdir/\$file permshuffle.o ../../.libs/libgsl.so ../../cblas/.libs/libgslcblas.so -lm -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/.libs -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/cblas/.libs -Wl,-rpath -Wl,/usr/local/lib)" + +# This environment variable determines our operation mode. +if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then + # install mode needs the following variables: + generated_by_libtool_version='2.4.2' + notinst_deplibs=' ../../libgsl.la ../../cblas/libgslcblas.la' +else + # When we are sourced in execute mode, $file and $ECHO are already set. + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + file="$0" + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + ECHO="printf %s\\n" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ which is used only on +# windows platforms, and (c) all begin with the string --lt- +# (application programs are unlikely to have options which match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's ../../libtool value, followed by no. +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=$0 + shift + for lt_opt + do + case "$lt_opt" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%/[^/]*$%%'` + test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=. + lt_dump_F=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%^.*/%%'` + cat "$lt_dump_D/$lt_dump_F" + exit 0 + ;; + --lt-*) + $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n "$lt_option_debug"; then + echo "permshuffle:permshuffle:${LINENO}: libtool wrapper (GNU libtool) 2.4.2" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + $ECHO "permshuffle:permshuffle:${LINENO}: newargv[$lt_dump_args_N]: $lt_arg" + lt_dump_args_N=`expr $lt_dump_args_N + 1` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ + + if test -n "$lt_option_debug"; then + $ECHO "permshuffle:permshuffle:${LINENO}: newargv[0]: $progdir/$program" 1>&2 + func_lt_dump_args ${1+"$@"} 1>&2 + fi + exec "$progdir/$program" ${1+"$@"} + + $ECHO "$0: cannot exec $program $*" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from $@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case " $* " in + *\ --lt-*) + for lt_wr_arg + do + case $lt_wr_arg in + --lt-*) ;; + *) set x "$@" "$lt_wr_arg"; shift;; + esac + shift + done ;; + esac + func_exec_program_core ${1+"$@"} +} + + # Parse options + func_parse_lt_options "$0" ${1+"$@"} + + # Find the directory that this script lives in. + thisdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + test "x$thisdir" = "x$file" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=`ls -ld "$file" | /usr/bin/sed -n 's/.*-> //p'` + while test -n "$file"; do + destdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + + # If there was a directory component, then change thisdir. + if test "x$destdir" != "x$file"; then + case "$destdir" in + [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;; + *) thisdir="$thisdir/$destdir" ;; + esac + fi + + file=`$ECHO "$file" | /usr/bin/sed 's%^.*/%%'` + file=`ls -ld "$thisdir/$file" | /usr/bin/sed -n 's/.*-> //p'` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no + if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then + # special case for '.' + if test "$thisdir" = "."; then + thisdir=`pwd` + fi + # remove .libs from thisdir + case "$thisdir" in + *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /usr/bin/sed 's%[\\/][^\\/]*$%%'` ;; + .libs ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=`cd "$thisdir" && pwd` + test -n "$absdir" && thisdir="$absdir" + + program=lt-'permshuffle' + progdir="$thisdir/.libs" + + if test ! -f "$progdir/$program" || + { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /usr/bin/sed 1q`; \ + test "X$file" != "X$progdir/$program"; }; then + + file="$$-$program" + + if test ! -d "$progdir"; then + mkdir "$progdir" + else + rm -f "$progdir/$file" + fi + + # relink executable if necessary + if test -n "$relink_command"; then + if relink_command_output=`eval $relink_command 2>&1`; then : + else + printf %s\n "$relink_command_output" >&2 + rm -f "$progdir/$file" + exit 1 + fi + fi + + mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null || + { rm -f "$progdir/$program"; + mv -f "$progdir/$file" "$progdir/$program"; } + rm -f "$progdir/$file" + fi + + if test -f "$progdir/$program"; then + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + # Run the actual program with our arguments. + func_exec_program ${1+"$@"} + fi + else + # The program doesn't exist. + $ECHO "$0: error: \`$progdir/$program' does not exist" 1>&2 + $ECHO "This script is just a wrapper for $program." 1>&2 + $ECHO "See the libtool documentation for more information." 1>&2 + exit 1 + fi +fi diff --git a/gsl-2.5/doc/examples/permshuffle.c b/gsl-2.5/doc/examples/permshuffle.c new file mode 100644 index 00000000..72478641 --- /dev/null +++ b/gsl-2.5/doc/examples/permshuffle.c @@ -0,0 +1,40 @@ +#include +#include +#include +#include + +int +main (void) +{ + const size_t N = 10; + const gsl_rng_type * T; + gsl_rng * r; + + gsl_permutation * p = gsl_permutation_alloc (N); + gsl_permutation * q = gsl_permutation_alloc (N); + + gsl_rng_env_setup(); + T = gsl_rng_default; + r = gsl_rng_alloc (T); + + printf ("initial permutation:"); + gsl_permutation_init (p); + gsl_permutation_fprintf (stdout, p, " %u"); + printf ("\n"); + + printf (" random permutation:"); + gsl_ran_shuffle (r, p->data, N, sizeof(size_t)); + gsl_permutation_fprintf (stdout, p, " %u"); + printf ("\n"); + + printf ("inverse permutation:"); + gsl_permutation_inverse (q, p); + gsl_permutation_fprintf (stdout, q, " %u"); + printf ("\n"); + + gsl_permutation_free (p); + gsl_permutation_free (q); + gsl_rng_free (r); + + return 0; +} diff --git a/gsl-2.5/doc/examples/permshuffle.txt b/gsl-2.5/doc/examples/permshuffle.txt new file mode 100644 index 00000000..e51a5fe5 --- /dev/null +++ b/gsl-2.5/doc/examples/permshuffle.txt @@ -0,0 +1,3 @@ +initial permutation: 0 1 2 3 4 5 6 7 8 9 + random permutation: 0 5 4 3 7 8 6 2 1 9 +inverse permutation: 0 8 7 3 2 1 6 4 5 9 diff --git a/gsl-2.5/doc/examples/poisson b/gsl-2.5/doc/examples/poisson new file mode 100755 index 00000000..9efd9970 --- /dev/null +++ b/gsl-2.5/doc/examples/poisson @@ -0,0 +1,228 @@ +#! /bin/sh + +# poisson - temporary wrapper script for .libs/poisson +# Generated by libtool (GNU libtool) 2.4.2 +# +# The poisson program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s/\([`"$\\]\)/\\\1/g' + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command="(cd /home/groups/kipac/chto/package/gsl/gsl-2.5/doc/examples; LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LIBRARY_PATH; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; LD_LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/fftw/include:/home/users/chto/lib/fftw/lib:/home/users/chto/lib/healpix/lib:/home/users/chto/lib/namaster/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/include:/home/users/chto/cpp/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LD_LIBRARY_PATH; PATH=/share/software/user/open/curl/7.54.0/bin:/share/software/user/open/libressl/2.5.3/bin:/home/users/chto/lib/cfitsio:/home/users/chto/lib/cfitsio/include:/home/users/chto/lib:/home/users/chto/bin/bin:/home/users/chto/bin:/home/users/chto/.texlive/bin/x86_64-linux:/home/groups/kipac/chto/anaconda2/envs/newenv3/bin:/home/users/chto/.local/bin/include:/home/users/chto/.local/bin/lib:/home/users/chto/.local/bin:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/bin64:/share/software/user/open/fftw/3.3.6/bin:/home/groups/kipac/chto/anaconda2/condabin:/share/software/user/restricted/ifort/2019/bin:/share/software/user/open/gsl/2.3/bin:/share/software/user/srcc/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/dell/srvadmin/bin:/opt/dell/srvadmin/iSM/bin:/home/users/chto/bin; export PATH; gcc -g -O2 -o \$progdir/\$file poisson.o ../../.libs/libgsl.so ../../cblas/.libs/libgslcblas.so -lm -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/.libs -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/cblas/.libs -Wl,-rpath -Wl,/usr/local/lib)" + +# This environment variable determines our operation mode. +if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then + # install mode needs the following variables: + generated_by_libtool_version='2.4.2' + notinst_deplibs=' ../../libgsl.la ../../cblas/libgslcblas.la' +else + # When we are sourced in execute mode, $file and $ECHO are already set. + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + file="$0" + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + ECHO="printf %s\\n" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ which is used only on +# windows platforms, and (c) all begin with the string --lt- +# (application programs are unlikely to have options which match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's ../../libtool value, followed by no. +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=$0 + shift + for lt_opt + do + case "$lt_opt" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%/[^/]*$%%'` + test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=. + lt_dump_F=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%^.*/%%'` + cat "$lt_dump_D/$lt_dump_F" + exit 0 + ;; + --lt-*) + $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n "$lt_option_debug"; then + echo "poisson:poisson:${LINENO}: libtool wrapper (GNU libtool) 2.4.2" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + $ECHO "poisson:poisson:${LINENO}: newargv[$lt_dump_args_N]: $lt_arg" + lt_dump_args_N=`expr $lt_dump_args_N + 1` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ + + if test -n "$lt_option_debug"; then + $ECHO "poisson:poisson:${LINENO}: newargv[0]: $progdir/$program" 1>&2 + func_lt_dump_args ${1+"$@"} 1>&2 + fi + exec "$progdir/$program" ${1+"$@"} + + $ECHO "$0: cannot exec $program $*" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from $@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case " $* " in + *\ --lt-*) + for lt_wr_arg + do + case $lt_wr_arg in + --lt-*) ;; + *) set x "$@" "$lt_wr_arg"; shift;; + esac + shift + done ;; + esac + func_exec_program_core ${1+"$@"} +} + + # Parse options + func_parse_lt_options "$0" ${1+"$@"} + + # Find the directory that this script lives in. + thisdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + test "x$thisdir" = "x$file" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=`ls -ld "$file" | /usr/bin/sed -n 's/.*-> //p'` + while test -n "$file"; do + destdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + + # If there was a directory component, then change thisdir. + if test "x$destdir" != "x$file"; then + case "$destdir" in + [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;; + *) thisdir="$thisdir/$destdir" ;; + esac + fi + + file=`$ECHO "$file" | /usr/bin/sed 's%^.*/%%'` + file=`ls -ld "$thisdir/$file" | /usr/bin/sed -n 's/.*-> //p'` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no + if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then + # special case for '.' + if test "$thisdir" = "."; then + thisdir=`pwd` + fi + # remove .libs from thisdir + case "$thisdir" in + *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /usr/bin/sed 's%[\\/][^\\/]*$%%'` ;; + .libs ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=`cd "$thisdir" && pwd` + test -n "$absdir" && thisdir="$absdir" + + program=lt-'poisson' + progdir="$thisdir/.libs" + + if test ! -f "$progdir/$program" || + { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /usr/bin/sed 1q`; \ + test "X$file" != "X$progdir/$program"; }; then + + file="$$-$program" + + if test ! -d "$progdir"; then + mkdir "$progdir" + else + rm -f "$progdir/$file" + fi + + # relink executable if necessary + if test -n "$relink_command"; then + if relink_command_output=`eval $relink_command 2>&1`; then : + else + printf %s\n "$relink_command_output" >&2 + rm -f "$progdir/$file" + exit 1 + fi + fi + + mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null || + { rm -f "$progdir/$program"; + mv -f "$progdir/$file" "$progdir/$program"; } + rm -f "$progdir/$file" + fi + + if test -f "$progdir/$program"; then + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + # Run the actual program with our arguments. + func_exec_program ${1+"$@"} + fi + else + # The program doesn't exist. + $ECHO "$0: error: \`$progdir/$program' does not exist" 1>&2 + $ECHO "This script is just a wrapper for $program." 1>&2 + $ECHO "See the libtool documentation for more information." 1>&2 + exit 1 + fi +fi diff --git a/gsl-2.5/doc/examples/poisson.c b/gsl-2.5/doc/examples/poisson.c new file mode 100644 index 00000000..5d9ba818 --- /dev/null +++ b/gsl-2.5/doc/examples/poisson.c @@ -0,0 +1,101 @@ +#include +#include +#include + +#include +#include +#include +#include + +int +main() +{ + const size_t N = 100; /* number of grid points */ + const size_t n = N - 2; /* subtract 2 to exclude boundaries */ + const double h = 1.0 / (N - 1.0); /* grid spacing */ + gsl_spmatrix *A = gsl_spmatrix_alloc(n ,n); /* triplet format */ + gsl_spmatrix *C; /* compressed format */ + gsl_vector *f = gsl_vector_alloc(n); /* right hand side vector */ + gsl_vector *u = gsl_vector_alloc(n); /* solution vector */ + size_t i; + + /* construct the sparse matrix for the finite difference equation */ + + /* construct first row */ + gsl_spmatrix_set(A, 0, 0, -2.0); + gsl_spmatrix_set(A, 0, 1, 1.0); + + /* construct rows [1:n-2] */ + for (i = 1; i < n - 1; ++i) + { + gsl_spmatrix_set(A, i, i + 1, 1.0); + gsl_spmatrix_set(A, i, i, -2.0); + gsl_spmatrix_set(A, i, i - 1, 1.0); + } + + /* construct last row */ + gsl_spmatrix_set(A, n - 1, n - 1, -2.0); + gsl_spmatrix_set(A, n - 1, n - 2, 1.0); + + /* scale by h^2 */ + gsl_spmatrix_scale(A, 1.0 / (h * h)); + + /* construct right hand side vector */ + for (i = 0; i < n; ++i) + { + double xi = (i + 1) * h; + double fi = -M_PI * M_PI * sin(M_PI * xi); + gsl_vector_set(f, i, fi); + } + + /* convert to compressed column format */ + C = gsl_spmatrix_ccs(A); + + /* now solve the system with the GMRES iterative solver */ + { + const double tol = 1.0e-6; /* solution relative tolerance */ + const size_t max_iter = 10; /* maximum iterations */ + const gsl_splinalg_itersolve_type *T = gsl_splinalg_itersolve_gmres; + gsl_splinalg_itersolve *work = + gsl_splinalg_itersolve_alloc(T, n, 0); + size_t iter = 0; + double residual; + int status; + + /* initial guess u = 0 */ + gsl_vector_set_zero(u); + + /* solve the system A u = f */ + do + { + status = gsl_splinalg_itersolve_iterate(C, f, tol, u, work); + + /* print out residual norm ||A*u - f|| */ + residual = gsl_splinalg_itersolve_normr(work); + fprintf(stderr, "iter %zu residual = %.12e\n", iter, residual); + + if (status == GSL_SUCCESS) + fprintf(stderr, "Converged\n"); + } + while (status == GSL_CONTINUE && ++iter < max_iter); + + /* output solution */ + for (i = 0; i < n; ++i) + { + double xi = (i + 1) * h; + double u_exact = sin(M_PI * xi); + double u_gsl = gsl_vector_get(u, i); + + printf("%f %.12e %.12e\n", xi, u_gsl, u_exact); + } + + gsl_splinalg_itersolve_free(work); + } + + gsl_spmatrix_free(A); + gsl_spmatrix_free(C); + gsl_vector_free(f); + gsl_vector_free(u); + + return 0; +} /* main() */ diff --git a/gsl-2.5/doc/examples/poisson.txt b/gsl-2.5/doc/examples/poisson.txt new file mode 100644 index 00000000..016274d8 --- /dev/null +++ b/gsl-2.5/doc/examples/poisson.txt @@ -0,0 +1,98 @@ +0.010101 3.173059613385e-02 3.172793349807e-02 +0.020202 6.342924224708e-02 6.342391965656e-02 +0.030303 9.506402049003e-02 9.505604330418e-02 +0.040404 1.266030773226e-01 1.265924535737e-01 +0.050505 1.580146555880e-01 1.580013959733e-01 +0.060606 1.892671264895e-01 1.892512443604e-01 +0.070707 2.203290214381e-01 2.203105327865e-01 +0.080808 2.511690637386e-01 2.511479871811e-01 +0.090909 2.817562000827e-01 2.817325568414e-01 +0.101010 3.120596318167e-01 3.120334456985e-01 +0.111111 3.420488459536e-01 3.420201433257e-01 +0.121212 3.716936458969e-01 3.716624556603e-01 +0.131313 4.009641818459e-01 4.009305354066e-01 +0.141414 4.298309808521e-01 4.297949120892e-01 +0.151515 4.582649764957e-01 4.582265217274e-01 +0.161616 4.862375381535e-01 4.861967361005e-01 +0.171717 5.137204998270e-01 5.136773915734e-01 +0.181818 5.406861885033e-01 5.406408174556e-01 +0.191919 5.671074520199e-01 5.670598638628e-01 +0.202020 5.929576864038e-01 5.929079290546e-01 +0.212121 6.182108626605e-01 6.181589862206e-01 +0.222222 6.428415529819e-01 6.427876096865e-01 +0.232323 6.668249563509e-01 6.667690005163e-01 +0.242424 6.901369235131e-01 6.900790114821e-01 +0.252525 7.127539812937e-01 7.126941713789e-01 +0.262626 7.346533562328e-01 7.345917086575e-01 +0.272727 7.558129975160e-01 7.557495743543e-01 +0.282828 7.762115991782e-01 7.761464642918e-01 +0.292929 7.958286215568e-01 7.957618405308e-01 +0.303030 8.146443119729e-01 8.145759520503e-01 +0.313131 8.326397246213e-01 8.325698546348e-01 +0.323232 8.497967396468e-01 8.497254299495e-01 +0.333333 8.660980813897e-01 8.660254037844e-01 +0.343434 8.815273357807e-01 8.814533634476e-01 +0.353535 8.960689668683e-01 8.959937742913e-01 +0.363636 9.097083324629e-01 9.096319953545e-01 +0.373737 9.224316988793e-01 9.223542941046e-01 +0.383838 9.342262547662e-01 9.341478602651e-01 +0.393939 9.450801240055e-01 9.450008187147e-01 +0.404040 9.549823776709e-01 9.549022414441e-01 +0.414141 9.639230450324e-01 9.638421585599e-01 +0.424242 9.718931235958e-01 9.718115683235e-01 +0.434343 9.788845881676e-01 9.788024462148e-01 +0.444444 9.848903989356e-01 9.848077530122e-01 +0.454545 9.899045085574e-01 9.898214418809e-01 +0.464646 9.939218682498e-01 9.938384644613e-01 +0.474747 9.969384328719e-01 9.968547759519e-01 +0.484848 9.989511649991e-01 9.988673391830e-01 +0.494949 9.999580379805e-01 9.998741276739e-01 +0.505051 9.999580379805e-01 9.998741276739e-01 +0.515152 9.989511649991e-01 9.988673391830e-01 +0.525253 9.969384328719e-01 9.968547759519e-01 +0.535354 9.939218682498e-01 9.938384644613e-01 +0.545455 9.899045085574e-01 9.898214418809e-01 +0.555556 9.848903989356e-01 9.848077530122e-01 +0.565657 9.788845881676e-01 9.788024462148e-01 +0.575758 9.718931235958e-01 9.718115683235e-01 +0.585859 9.639230450324e-01 9.638421585599e-01 +0.595960 9.549823776709e-01 9.549022414441e-01 +0.606061 9.450801240055e-01 9.450008187147e-01 +0.616162 9.342262547662e-01 9.341478602651e-01 +0.626263 9.224316988793e-01 9.223542941046e-01 +0.636364 9.097083324629e-01 9.096319953545e-01 +0.646465 8.960689668683e-01 8.959937742913e-01 +0.656566 8.815273357807e-01 8.814533634476e-01 +0.666667 8.660980813897e-01 8.660254037844e-01 +0.676768 8.497967396468e-01 8.497254299495e-01 +0.686869 8.326397246213e-01 8.325698546348e-01 +0.696970 8.146443119729e-01 8.145759520503e-01 +0.707071 7.958286215568e-01 7.957618405308e-01 +0.717172 7.762115991782e-01 7.761464642918e-01 +0.727273 7.558129975160e-01 7.557495743543e-01 +0.737374 7.346533562328e-01 7.345917086575e-01 +0.747475 7.127539812937e-01 7.126941713789e-01 +0.757576 6.901369235131e-01 6.900790114821e-01 +0.767677 6.668249563509e-01 6.667690005163e-01 +0.777778 6.428415529819e-01 6.427876096865e-01 +0.787879 6.182108626605e-01 6.181589862206e-01 +0.797980 5.929576864038e-01 5.929079290546e-01 +0.808081 5.671074520199e-01 5.670598638628e-01 +0.818182 5.406861885033e-01 5.406408174556e-01 +0.828283 5.137204998270e-01 5.136773915734e-01 +0.838384 4.862375381535e-01 4.861967361005e-01 +0.848485 4.582649764957e-01 4.582265217274e-01 +0.858586 4.298309808521e-01 4.297949120892e-01 +0.868687 4.009641818459e-01 4.009305354066e-01 +0.878788 3.716936458969e-01 3.716624556603e-01 +0.888889 3.420488459536e-01 3.420201433257e-01 +0.898990 3.120596318167e-01 3.120334456985e-01 +0.909091 2.817562000827e-01 2.817325568414e-01 +0.919192 2.511690637386e-01 2.511479871811e-01 +0.929293 2.203290214381e-01 2.203105327865e-01 +0.939394 1.892671264895e-01 1.892512443604e-01 +0.949495 1.580146555880e-01 1.580013959733e-01 +0.959596 1.266030773226e-01 1.265924535737e-01 +0.969697 9.506402049003e-02 9.505604330418e-02 +0.979798 6.342924224708e-02 6.342391965656e-02 +0.989899 3.173059613385e-02 3.172793349807e-02 diff --git a/gsl-2.5/doc/examples/polyroots b/gsl-2.5/doc/examples/polyroots new file mode 100755 index 00000000..bdbca75d --- /dev/null +++ b/gsl-2.5/doc/examples/polyroots @@ -0,0 +1,228 @@ +#! /bin/sh + +# polyroots - temporary wrapper script for .libs/polyroots +# Generated by libtool (GNU libtool) 2.4.2 +# +# The polyroots program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s/\([`"$\\]\)/\\\1/g' + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command="(cd /home/groups/kipac/chto/package/gsl/gsl-2.5/doc/examples; LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LIBRARY_PATH; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; LD_LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/fftw/include:/home/users/chto/lib/fftw/lib:/home/users/chto/lib/healpix/lib:/home/users/chto/lib/namaster/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/include:/home/users/chto/cpp/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LD_LIBRARY_PATH; PATH=/share/software/user/open/curl/7.54.0/bin:/share/software/user/open/libressl/2.5.3/bin:/home/users/chto/lib/cfitsio:/home/users/chto/lib/cfitsio/include:/home/users/chto/lib:/home/users/chto/bin/bin:/home/users/chto/bin:/home/users/chto/.texlive/bin/x86_64-linux:/home/groups/kipac/chto/anaconda2/envs/newenv3/bin:/home/users/chto/.local/bin/include:/home/users/chto/.local/bin/lib:/home/users/chto/.local/bin:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/bin64:/share/software/user/open/fftw/3.3.6/bin:/home/groups/kipac/chto/anaconda2/condabin:/share/software/user/restricted/ifort/2019/bin:/share/software/user/open/gsl/2.3/bin:/share/software/user/srcc/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/dell/srvadmin/bin:/opt/dell/srvadmin/iSM/bin:/home/users/chto/bin; export PATH; gcc -g -O2 -o \$progdir/\$file polyroots.o ../../.libs/libgsl.so ../../cblas/.libs/libgslcblas.so -lm -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/.libs -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/cblas/.libs -Wl,-rpath -Wl,/usr/local/lib)" + +# This environment variable determines our operation mode. +if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then + # install mode needs the following variables: + generated_by_libtool_version='2.4.2' + notinst_deplibs=' ../../libgsl.la ../../cblas/libgslcblas.la' +else + # When we are sourced in execute mode, $file and $ECHO are already set. + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + file="$0" + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + ECHO="printf %s\\n" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ which is used only on +# windows platforms, and (c) all begin with the string --lt- +# (application programs are unlikely to have options which match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's ../../libtool value, followed by no. +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=$0 + shift + for lt_opt + do + case "$lt_opt" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%/[^/]*$%%'` + test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=. + lt_dump_F=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%^.*/%%'` + cat "$lt_dump_D/$lt_dump_F" + exit 0 + ;; + --lt-*) + $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n "$lt_option_debug"; then + echo "polyroots:polyroots:${LINENO}: libtool wrapper (GNU libtool) 2.4.2" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + $ECHO "polyroots:polyroots:${LINENO}: newargv[$lt_dump_args_N]: $lt_arg" + lt_dump_args_N=`expr $lt_dump_args_N + 1` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ + + if test -n "$lt_option_debug"; then + $ECHO "polyroots:polyroots:${LINENO}: newargv[0]: $progdir/$program" 1>&2 + func_lt_dump_args ${1+"$@"} 1>&2 + fi + exec "$progdir/$program" ${1+"$@"} + + $ECHO "$0: cannot exec $program $*" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from $@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case " $* " in + *\ --lt-*) + for lt_wr_arg + do + case $lt_wr_arg in + --lt-*) ;; + *) set x "$@" "$lt_wr_arg"; shift;; + esac + shift + done ;; + esac + func_exec_program_core ${1+"$@"} +} + + # Parse options + func_parse_lt_options "$0" ${1+"$@"} + + # Find the directory that this script lives in. + thisdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + test "x$thisdir" = "x$file" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=`ls -ld "$file" | /usr/bin/sed -n 's/.*-> //p'` + while test -n "$file"; do + destdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + + # If there was a directory component, then change thisdir. + if test "x$destdir" != "x$file"; then + case "$destdir" in + [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;; + *) thisdir="$thisdir/$destdir" ;; + esac + fi + + file=`$ECHO "$file" | /usr/bin/sed 's%^.*/%%'` + file=`ls -ld "$thisdir/$file" | /usr/bin/sed -n 's/.*-> //p'` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no + if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then + # special case for '.' + if test "$thisdir" = "."; then + thisdir=`pwd` + fi + # remove .libs from thisdir + case "$thisdir" in + *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /usr/bin/sed 's%[\\/][^\\/]*$%%'` ;; + .libs ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=`cd "$thisdir" && pwd` + test -n "$absdir" && thisdir="$absdir" + + program=lt-'polyroots' + progdir="$thisdir/.libs" + + if test ! -f "$progdir/$program" || + { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /usr/bin/sed 1q`; \ + test "X$file" != "X$progdir/$program"; }; then + + file="$$-$program" + + if test ! -d "$progdir"; then + mkdir "$progdir" + else + rm -f "$progdir/$file" + fi + + # relink executable if necessary + if test -n "$relink_command"; then + if relink_command_output=`eval $relink_command 2>&1`; then : + else + printf %s\n "$relink_command_output" >&2 + rm -f "$progdir/$file" + exit 1 + fi + fi + + mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null || + { rm -f "$progdir/$program"; + mv -f "$progdir/$file" "$progdir/$program"; } + rm -f "$progdir/$file" + fi + + if test -f "$progdir/$program"; then + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + # Run the actual program with our arguments. + func_exec_program ${1+"$@"} + fi + else + # The program doesn't exist. + $ECHO "$0: error: \`$progdir/$program' does not exist" 1>&2 + $ECHO "This script is just a wrapper for $program." 1>&2 + $ECHO "See the libtool documentation for more information." 1>&2 + exit 1 + fi +fi diff --git a/gsl-2.5/doc/examples/polyroots.c b/gsl-2.5/doc/examples/polyroots.c new file mode 100644 index 00000000..6debbd54 --- /dev/null +++ b/gsl-2.5/doc/examples/polyroots.c @@ -0,0 +1,26 @@ +#include +#include + +int +main (void) +{ + int i; + /* coefficients of P(x) = -1 + x^5 */ + double a[6] = { -1, 0, 0, 0, 0, 1 }; + double z[10]; + + gsl_poly_complex_workspace * w + = gsl_poly_complex_workspace_alloc (6); + + gsl_poly_complex_solve (a, 6, w, z); + + gsl_poly_complex_workspace_free (w); + + for (i = 0; i < 5; i++) + { + printf ("z%d = %+.18f %+.18f\n", + i, z[2*i], z[2*i+1]); + } + + return 0; +} diff --git a/gsl-2.5/doc/examples/polyroots.txt b/gsl-2.5/doc/examples/polyroots.txt new file mode 100644 index 00000000..1194fb14 --- /dev/null +++ b/gsl-2.5/doc/examples/polyroots.txt @@ -0,0 +1,5 @@ +z0 = -0.809016994374947673 +0.587785252292473359 +z1 = -0.809016994374947673 -0.587785252292473359 +z2 = +0.309016994374947507 +0.951056516295152976 +z3 = +0.309016994374947507 -0.951056516295152976 +z4 = +0.999999999999999889 +0.000000000000000000 diff --git a/gsl-2.5/doc/examples/qrng b/gsl-2.5/doc/examples/qrng new file mode 100755 index 00000000..274c23c1 --- /dev/null +++ b/gsl-2.5/doc/examples/qrng @@ -0,0 +1,228 @@ +#! /bin/sh + +# qrng - temporary wrapper script for .libs/qrng +# Generated by libtool (GNU libtool) 2.4.2 +# +# The qrng program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s/\([`"$\\]\)/\\\1/g' + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command="(cd /home/groups/kipac/chto/package/gsl/gsl-2.5/doc/examples; LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LIBRARY_PATH; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; LD_LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/fftw/include:/home/users/chto/lib/fftw/lib:/home/users/chto/lib/healpix/lib:/home/users/chto/lib/namaster/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/include:/home/users/chto/cpp/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LD_LIBRARY_PATH; PATH=/share/software/user/open/curl/7.54.0/bin:/share/software/user/open/libressl/2.5.3/bin:/home/users/chto/lib/cfitsio:/home/users/chto/lib/cfitsio/include:/home/users/chto/lib:/home/users/chto/bin/bin:/home/users/chto/bin:/home/users/chto/.texlive/bin/x86_64-linux:/home/groups/kipac/chto/anaconda2/envs/newenv3/bin:/home/users/chto/.local/bin/include:/home/users/chto/.local/bin/lib:/home/users/chto/.local/bin:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/bin64:/share/software/user/open/fftw/3.3.6/bin:/home/groups/kipac/chto/anaconda2/condabin:/share/software/user/restricted/ifort/2019/bin:/share/software/user/open/gsl/2.3/bin:/share/software/user/srcc/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/dell/srvadmin/bin:/opt/dell/srvadmin/iSM/bin:/home/users/chto/bin; export PATH; gcc -g -O2 -o \$progdir/\$file qrng.o ../../.libs/libgsl.so ../../cblas/.libs/libgslcblas.so -lm -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/.libs -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/cblas/.libs -Wl,-rpath -Wl,/usr/local/lib)" + +# This environment variable determines our operation mode. +if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then + # install mode needs the following variables: + generated_by_libtool_version='2.4.2' + notinst_deplibs=' ../../libgsl.la ../../cblas/libgslcblas.la' +else + # When we are sourced in execute mode, $file and $ECHO are already set. + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + file="$0" + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + ECHO="printf %s\\n" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ which is used only on +# windows platforms, and (c) all begin with the string --lt- +# (application programs are unlikely to have options which match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's ../../libtool value, followed by no. +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=$0 + shift + for lt_opt + do + case "$lt_opt" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%/[^/]*$%%'` + test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=. + lt_dump_F=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%^.*/%%'` + cat "$lt_dump_D/$lt_dump_F" + exit 0 + ;; + --lt-*) + $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n "$lt_option_debug"; then + echo "qrng:qrng:${LINENO}: libtool wrapper (GNU libtool) 2.4.2" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + $ECHO "qrng:qrng:${LINENO}: newargv[$lt_dump_args_N]: $lt_arg" + lt_dump_args_N=`expr $lt_dump_args_N + 1` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ + + if test -n "$lt_option_debug"; then + $ECHO "qrng:qrng:${LINENO}: newargv[0]: $progdir/$program" 1>&2 + func_lt_dump_args ${1+"$@"} 1>&2 + fi + exec "$progdir/$program" ${1+"$@"} + + $ECHO "$0: cannot exec $program $*" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from $@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case " $* " in + *\ --lt-*) + for lt_wr_arg + do + case $lt_wr_arg in + --lt-*) ;; + *) set x "$@" "$lt_wr_arg"; shift;; + esac + shift + done ;; + esac + func_exec_program_core ${1+"$@"} +} + + # Parse options + func_parse_lt_options "$0" ${1+"$@"} + + # Find the directory that this script lives in. + thisdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + test "x$thisdir" = "x$file" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=`ls -ld "$file" | /usr/bin/sed -n 's/.*-> //p'` + while test -n "$file"; do + destdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + + # If there was a directory component, then change thisdir. + if test "x$destdir" != "x$file"; then + case "$destdir" in + [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;; + *) thisdir="$thisdir/$destdir" ;; + esac + fi + + file=`$ECHO "$file" | /usr/bin/sed 's%^.*/%%'` + file=`ls -ld "$thisdir/$file" | /usr/bin/sed -n 's/.*-> //p'` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no + if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then + # special case for '.' + if test "$thisdir" = "."; then + thisdir=`pwd` + fi + # remove .libs from thisdir + case "$thisdir" in + *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /usr/bin/sed 's%[\\/][^\\/]*$%%'` ;; + .libs ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=`cd "$thisdir" && pwd` + test -n "$absdir" && thisdir="$absdir" + + program=lt-'qrng' + progdir="$thisdir/.libs" + + if test ! -f "$progdir/$program" || + { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /usr/bin/sed 1q`; \ + test "X$file" != "X$progdir/$program"; }; then + + file="$$-$program" + + if test ! -d "$progdir"; then + mkdir "$progdir" + else + rm -f "$progdir/$file" + fi + + # relink executable if necessary + if test -n "$relink_command"; then + if relink_command_output=`eval $relink_command 2>&1`; then : + else + printf %s\n "$relink_command_output" >&2 + rm -f "$progdir/$file" + exit 1 + fi + fi + + mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null || + { rm -f "$progdir/$program"; + mv -f "$progdir/$file" "$progdir/$program"; } + rm -f "$progdir/$file" + fi + + if test -f "$progdir/$program"; then + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + # Run the actual program with our arguments. + func_exec_program ${1+"$@"} + fi + else + # The program doesn't exist. + $ECHO "$0: error: \`$progdir/$program' does not exist" 1>&2 + $ECHO "This script is just a wrapper for $program." 1>&2 + $ECHO "See the libtool documentation for more information." 1>&2 + exit 1 + fi +fi diff --git a/gsl-2.5/doc/examples/qrng.c b/gsl-2.5/doc/examples/qrng.c new file mode 100644 index 00000000..5275209a --- /dev/null +++ b/gsl-2.5/doc/examples/qrng.c @@ -0,0 +1,19 @@ +#include +#include + +int +main (void) +{ + int i; + gsl_qrng * q = gsl_qrng_alloc (gsl_qrng_sobol, 2); + + for (i = 0; i < 1024; i++) + { + double v[2]; + gsl_qrng_get (q, v); + printf ("%.5f %.5f\n", v[0], v[1]); + } + + gsl_qrng_free (q); + return 0; +} diff --git a/gsl-2.5/doc/examples/qrng.txt b/gsl-2.5/doc/examples/qrng.txt new file mode 100644 index 00000000..53ebaaec --- /dev/null +++ b/gsl-2.5/doc/examples/qrng.txt @@ -0,0 +1,1024 @@ +0.50000 0.50000 +0.75000 0.25000 +0.25000 0.75000 +0.37500 0.37500 +0.87500 0.87500 +0.62500 0.12500 +0.12500 0.62500 +0.18750 0.31250 +0.68750 0.81250 +0.93750 0.06250 +0.43750 0.56250 +0.31250 0.18750 +0.81250 0.68750 +0.56250 0.43750 +0.06250 0.93750 +0.09375 0.46875 +0.59375 0.96875 +0.84375 0.21875 +0.34375 0.71875 +0.46875 0.09375 +0.96875 0.59375 +0.71875 0.34375 +0.21875 0.84375 +0.15625 0.15625 +0.65625 0.65625 +0.90625 0.40625 +0.40625 0.90625 +0.28125 0.28125 +0.78125 0.78125 +0.53125 0.03125 +0.03125 0.53125 +0.04688 0.26562 +0.54688 0.76562 +0.79688 0.01562 +0.29688 0.51562 +0.42188 0.14062 +0.92188 0.64062 +0.67188 0.39062 +0.17188 0.89062 +0.23438 0.07812 +0.73438 0.57812 +0.98438 0.32812 +0.48438 0.82812 +0.35938 0.45312 +0.85938 0.95312 +0.60938 0.20312 +0.10938 0.70312 +0.07812 0.23438 +0.57812 0.73438 +0.82812 0.48438 +0.32812 0.98438 +0.45312 0.35938 +0.95312 0.85938 +0.70312 0.10938 +0.20312 0.60938 +0.14062 0.42188 +0.64062 0.92188 +0.89062 0.17188 +0.39062 0.67188 +0.26562 0.04688 +0.76562 0.54688 +0.51562 0.29688 +0.01562 0.79688 +0.02344 0.39844 +0.52344 0.89844 +0.77344 0.14844 +0.27344 0.64844 +0.39844 0.02344 +0.89844 0.52344 +0.64844 0.27344 +0.14844 0.77344 +0.21094 0.21094 +0.71094 0.71094 +0.96094 0.46094 +0.46094 0.96094 +0.33594 0.33594 +0.83594 0.83594 +0.58594 0.08594 +0.08594 0.58594 +0.11719 0.11719 +0.61719 0.61719 +0.86719 0.36719 +0.36719 0.86719 +0.49219 0.49219 +0.99219 0.99219 +0.74219 0.24219 +0.24219 0.74219 +0.17969 0.30469 +0.67969 0.80469 +0.92969 0.05469 +0.42969 0.55469 +0.30469 0.17969 +0.80469 0.67969 +0.55469 0.42969 +0.05469 0.92969 +0.03906 0.13281 +0.53906 0.63281 +0.78906 0.38281 +0.28906 0.88281 +0.41406 0.25781 +0.91406 0.75781 +0.66406 0.00781 +0.16406 0.50781 +0.22656 0.44531 +0.72656 0.94531 +0.97656 0.19531 +0.47656 0.69531 +0.35156 0.07031 +0.85156 0.57031 +0.60156 0.32031 +0.10156 0.82031 +0.07031 0.35156 +0.57031 0.85156 +0.82031 0.10156 +0.32031 0.60156 +0.44531 0.22656 +0.94531 0.72656 +0.69531 0.47656 +0.19531 0.97656 +0.13281 0.03906 +0.63281 0.53906 +0.88281 0.28906 +0.38281 0.78906 +0.25781 0.41406 +0.75781 0.91406 +0.50781 0.16406 +0.00781 0.66406 +0.01172 0.33203 +0.51172 0.83203 +0.76172 0.08203 +0.26172 0.58203 +0.38672 0.20703 +0.88672 0.70703 +0.63672 0.45703 +0.13672 0.95703 +0.19922 0.01953 +0.69922 0.51953 +0.94922 0.26953 +0.44922 0.76953 +0.32422 0.39453 +0.82422 0.89453 +0.57422 0.14453 +0.07422 0.64453 +0.10547 0.17578 +0.60547 0.67578 +0.85547 0.42578 +0.35547 0.92578 +0.48047 0.30078 +0.98047 0.80078 +0.73047 0.05078 +0.23047 0.55078 +0.16797 0.48828 +0.66797 0.98828 +0.91797 0.23828 +0.41797 0.73828 +0.29297 0.11328 +0.79297 0.61328 +0.54297 0.36328 +0.04297 0.86328 +0.05859 0.06641 +0.55859 0.56641 +0.80859 0.31641 +0.30859 0.81641 +0.43359 0.44141 +0.93359 0.94141 +0.68359 0.19141 +0.18359 0.69141 +0.24609 0.25391 +0.74609 0.75391 +0.99609 0.00391 +0.49609 0.50391 +0.37109 0.12891 +0.87109 0.62891 +0.62109 0.37891 +0.12109 0.87891 +0.08984 0.41016 +0.58984 0.91016 +0.83984 0.16016 +0.33984 0.66016 +0.46484 0.03516 +0.96484 0.53516 +0.71484 0.28516 +0.21484 0.78516 +0.15234 0.22266 +0.65234 0.72266 +0.90234 0.47266 +0.40234 0.97266 +0.27734 0.34766 +0.77734 0.84766 +0.52734 0.09766 +0.02734 0.59766 +0.01953 0.19922 +0.51953 0.69922 +0.76953 0.44922 +0.26953 0.94922 +0.39453 0.32422 +0.89453 0.82422 +0.64453 0.07422 +0.14453 0.57422 +0.20703 0.38672 +0.70703 0.88672 +0.95703 0.13672 +0.45703 0.63672 +0.33203 0.01172 +0.83203 0.51172 +0.58203 0.26172 +0.08203 0.76172 +0.11328 0.29297 +0.61328 0.79297 +0.86328 0.04297 +0.36328 0.54297 +0.48828 0.16797 +0.98828 0.66797 +0.73828 0.41797 +0.23828 0.91797 +0.17578 0.10547 +0.67578 0.60547 +0.92578 0.35547 +0.42578 0.85547 +0.30078 0.48047 +0.80078 0.98047 +0.55078 0.23047 +0.05078 0.73047 +0.03516 0.46484 +0.53516 0.96484 +0.78516 0.21484 +0.28516 0.71484 +0.41016 0.08984 +0.91016 0.58984 +0.66016 0.33984 +0.16016 0.83984 +0.22266 0.15234 +0.72266 0.65234 +0.97266 0.40234 +0.47266 0.90234 +0.34766 0.27734 +0.84766 0.77734 +0.59766 0.02734 +0.09766 0.52734 +0.06641 0.05859 +0.56641 0.55859 +0.81641 0.30859 +0.31641 0.80859 +0.44141 0.43359 +0.94141 0.93359 +0.69141 0.18359 +0.19141 0.68359 +0.12891 0.37109 +0.62891 0.87109 +0.87891 0.12109 +0.37891 0.62109 +0.25391 0.24609 +0.75391 0.74609 +0.50391 0.49609 +0.00391 0.99609 +0.00586 0.49805 +0.50586 0.99805 +0.75586 0.24805 +0.25586 0.74805 +0.38086 0.12305 +0.88086 0.62305 +0.63086 0.37305 +0.13086 0.87305 +0.19336 0.18555 +0.69336 0.68555 +0.94336 0.43555 +0.44336 0.93555 +0.31836 0.31055 +0.81836 0.81055 +0.56836 0.06055 +0.06836 0.56055 +0.09961 0.02930 +0.59961 0.52930 +0.84961 0.27930 +0.34961 0.77930 +0.47461 0.40430 +0.97461 0.90430 +0.72461 0.15430 +0.22461 0.65430 +0.16211 0.34180 +0.66211 0.84180 +0.91211 0.09180 +0.41211 0.59180 +0.28711 0.21680 +0.78711 0.71680 +0.53711 0.46680 +0.03711 0.96680 +0.05273 0.23242 +0.55273 0.73242 +0.80273 0.48242 +0.30273 0.98242 +0.42773 0.35742 +0.92773 0.85742 +0.67773 0.10742 +0.17773 0.60742 +0.24023 0.41992 +0.74023 0.91992 +0.99023 0.16992 +0.49023 0.66992 +0.36523 0.04492 +0.86523 0.54492 +0.61523 0.29492 +0.11523 0.79492 +0.08398 0.26367 +0.58398 0.76367 +0.83398 0.01367 +0.33398 0.51367 +0.45898 0.13867 +0.95898 0.63867 +0.70898 0.38867 +0.20898 0.88867 +0.14648 0.07617 +0.64648 0.57617 +0.89648 0.32617 +0.39648 0.82617 +0.27148 0.45117 +0.77148 0.95117 +0.52148 0.20117 +0.02148 0.70117 +0.02930 0.09961 +0.52930 0.59961 +0.77930 0.34961 +0.27930 0.84961 +0.40430 0.47461 +0.90430 0.97461 +0.65430 0.22461 +0.15430 0.72461 +0.21680 0.28711 +0.71680 0.78711 +0.96680 0.03711 +0.46680 0.53711 +0.34180 0.16211 +0.84180 0.66211 +0.59180 0.41211 +0.09180 0.91211 +0.12305 0.38086 +0.62305 0.88086 +0.87305 0.13086 +0.37305 0.63086 +0.49805 0.00586 +0.99805 0.50586 +0.74805 0.25586 +0.24805 0.75586 +0.18555 0.19336 +0.68555 0.69336 +0.93555 0.44336 +0.43555 0.94336 +0.31055 0.31836 +0.81055 0.81836 +0.56055 0.06836 +0.06055 0.56836 +0.04492 0.36523 +0.54492 0.86523 +0.79492 0.11523 +0.29492 0.61523 +0.41992 0.24023 +0.91992 0.74023 +0.66992 0.49023 +0.16992 0.99023 +0.23242 0.05273 +0.73242 0.55273 +0.98242 0.30273 +0.48242 0.80273 +0.35742 0.42773 +0.85742 0.92773 +0.60742 0.17773 +0.10742 0.67773 +0.07617 0.14648 +0.57617 0.64648 +0.82617 0.39648 +0.32617 0.89648 +0.45117 0.27148 +0.95117 0.77148 +0.70117 0.02148 +0.20117 0.52148 +0.13867 0.45898 +0.63867 0.95898 +0.88867 0.20898 +0.38867 0.70898 +0.26367 0.08398 +0.76367 0.58398 +0.51367 0.33398 +0.01367 0.83398 +0.00977 0.16602 +0.50977 0.66602 +0.75977 0.41602 +0.25977 0.91602 +0.38477 0.29102 +0.88477 0.79102 +0.63477 0.04102 +0.13477 0.54102 +0.19727 0.47852 +0.69727 0.97852 +0.94727 0.22852 +0.44727 0.72852 +0.32227 0.10352 +0.82227 0.60352 +0.57227 0.35352 +0.07227 0.85352 +0.10352 0.32227 +0.60352 0.82227 +0.85352 0.07227 +0.35352 0.57227 +0.47852 0.19727 +0.97852 0.69727 +0.72852 0.44727 +0.22852 0.94727 +0.16602 0.00977 +0.66602 0.50977 +0.91602 0.25977 +0.41602 0.75977 +0.29102 0.38477 +0.79102 0.88477 +0.54102 0.13477 +0.04102 0.63477 +0.05664 0.43164 +0.55664 0.93164 +0.80664 0.18164 +0.30664 0.68164 +0.43164 0.05664 +0.93164 0.55664 +0.68164 0.30664 +0.18164 0.80664 +0.24414 0.24414 +0.74414 0.74414 +0.99414 0.49414 +0.49414 0.99414 +0.36914 0.36914 +0.86914 0.86914 +0.61914 0.11914 +0.11914 0.61914 +0.08789 0.08789 +0.58789 0.58789 +0.83789 0.33789 +0.33789 0.83789 +0.46289 0.46289 +0.96289 0.96289 +0.71289 0.21289 +0.21289 0.71289 +0.15039 0.27539 +0.65039 0.77539 +0.90039 0.02539 +0.40039 0.52539 +0.27539 0.15039 +0.77539 0.65039 +0.52539 0.40039 +0.02539 0.90039 +0.01758 0.29883 +0.51758 0.79883 +0.76758 0.04883 +0.26758 0.54883 +0.39258 0.17383 +0.89258 0.67383 +0.64258 0.42383 +0.14258 0.92383 +0.20508 0.11133 +0.70508 0.61133 +0.95508 0.36133 +0.45508 0.86133 +0.33008 0.48633 +0.83008 0.98633 +0.58008 0.23633 +0.08008 0.73633 +0.11133 0.20508 +0.61133 0.70508 +0.86133 0.45508 +0.36133 0.95508 +0.48633 0.33008 +0.98633 0.83008 +0.73633 0.08008 +0.23633 0.58008 +0.17383 0.39258 +0.67383 0.89258 +0.92383 0.14258 +0.42383 0.64258 +0.29883 0.01758 +0.79883 0.51758 +0.54883 0.26758 +0.04883 0.76758 +0.03320 0.03320 +0.53320 0.53320 +0.78320 0.28320 +0.28320 0.78320 +0.40820 0.40820 +0.90820 0.90820 +0.65820 0.15820 +0.15820 0.65820 +0.22070 0.34570 +0.72070 0.84570 +0.97070 0.09570 +0.47070 0.59570 +0.34570 0.22070 +0.84570 0.72070 +0.59570 0.47070 +0.09570 0.97070 +0.06445 0.43945 +0.56445 0.93945 +0.81445 0.18945 +0.31445 0.68945 +0.43945 0.06445 +0.93945 0.56445 +0.68945 0.31445 +0.18945 0.81445 +0.12695 0.12695 +0.62695 0.62695 +0.87695 0.37695 +0.37695 0.87695 +0.25195 0.25195 +0.75195 0.75195 +0.50195 0.00195 +0.00195 0.50195 +0.00293 0.25098 +0.50293 0.75098 +0.75293 0.00098 +0.25293 0.50098 +0.37793 0.12598 +0.87793 0.62598 +0.62793 0.37598 +0.12793 0.87598 +0.19043 0.06348 +0.69043 0.56348 +0.94043 0.31348 +0.44043 0.81348 +0.31543 0.43848 +0.81543 0.93848 +0.56543 0.18848 +0.06543 0.68848 +0.09668 0.21973 +0.59668 0.71973 +0.84668 0.46973 +0.34668 0.96973 +0.47168 0.34473 +0.97168 0.84473 +0.72168 0.09473 +0.22168 0.59473 +0.15918 0.40723 +0.65918 0.90723 +0.90918 0.15723 +0.40918 0.65723 +0.28418 0.03223 +0.78418 0.53223 +0.53418 0.28223 +0.03418 0.78223 +0.04980 0.01660 +0.54980 0.51660 +0.79980 0.26660 +0.29980 0.76660 +0.42480 0.39160 +0.92480 0.89160 +0.67480 0.14160 +0.17480 0.64160 +0.23730 0.32910 +0.73730 0.82910 +0.98730 0.07910 +0.48730 0.57910 +0.36230 0.20410 +0.86230 0.70410 +0.61230 0.45410 +0.11230 0.95410 +0.08105 0.48535 +0.58105 0.98535 +0.83105 0.23535 +0.33105 0.73535 +0.45605 0.11035 +0.95605 0.61035 +0.70605 0.36035 +0.20605 0.86035 +0.14355 0.17285 +0.64355 0.67285 +0.89355 0.42285 +0.39355 0.92285 +0.26855 0.29785 +0.76855 0.79785 +0.51855 0.04785 +0.01855 0.54785 +0.02637 0.14941 +0.52637 0.64941 +0.77637 0.39941 +0.27637 0.89941 +0.40137 0.27441 +0.90137 0.77441 +0.65137 0.02441 +0.15137 0.52441 +0.21387 0.46191 +0.71387 0.96191 +0.96387 0.21191 +0.46387 0.71191 +0.33887 0.08691 +0.83887 0.58691 +0.58887 0.33691 +0.08887 0.83691 +0.12012 0.36816 +0.62012 0.86816 +0.87012 0.11816 +0.37012 0.61816 +0.49512 0.24316 +0.99512 0.74316 +0.74512 0.49316 +0.24512 0.99316 +0.18262 0.05566 +0.68262 0.55566 +0.93262 0.30566 +0.43262 0.80566 +0.30762 0.43066 +0.80762 0.93066 +0.55762 0.18066 +0.05762 0.68066 +0.04199 0.38379 +0.54199 0.88379 +0.79199 0.13379 +0.29199 0.63379 +0.41699 0.00879 +0.91699 0.50879 +0.66699 0.25879 +0.16699 0.75879 +0.22949 0.19629 +0.72949 0.69629 +0.97949 0.44629 +0.47949 0.94629 +0.35449 0.32129 +0.85449 0.82129 +0.60449 0.07129 +0.10449 0.57129 +0.07324 0.10254 +0.57324 0.60254 +0.82324 0.35254 +0.32324 0.85254 +0.44824 0.47754 +0.94824 0.97754 +0.69824 0.22754 +0.19824 0.72754 +0.13574 0.29004 +0.63574 0.79004 +0.88574 0.04004 +0.38574 0.54004 +0.26074 0.16504 +0.76074 0.66504 +0.51074 0.41504 +0.01074 0.91504 +0.01465 0.08301 +0.51465 0.58301 +0.76465 0.33301 +0.26465 0.83301 +0.38965 0.45801 +0.88965 0.95801 +0.63965 0.20801 +0.13965 0.70801 +0.20215 0.27051 +0.70215 0.77051 +0.95215 0.02051 +0.45215 0.52051 +0.32715 0.14551 +0.82715 0.64551 +0.57715 0.39551 +0.07715 0.89551 +0.10840 0.42676 +0.60840 0.92676 +0.85840 0.17676 +0.35840 0.67676 +0.48340 0.05176 +0.98340 0.55176 +0.73340 0.30176 +0.23340 0.80176 +0.17090 0.23926 +0.67090 0.73926 +0.92090 0.48926 +0.42090 0.98926 +0.29590 0.36426 +0.79590 0.86426 +0.54590 0.11426 +0.04590 0.61426 +0.06152 0.31738 +0.56152 0.81738 +0.81152 0.06738 +0.31152 0.56738 +0.43652 0.19238 +0.93652 0.69238 +0.68652 0.44238 +0.18652 0.94238 +0.24902 0.00488 +0.74902 0.50488 +0.99902 0.25488 +0.49902 0.75488 +0.37402 0.37988 +0.87402 0.87988 +0.62402 0.12988 +0.12402 0.62988 +0.09277 0.16113 +0.59277 0.66113 +0.84277 0.41113 +0.34277 0.91113 +0.46777 0.28613 +0.96777 0.78613 +0.71777 0.03613 +0.21777 0.53613 +0.15527 0.47363 +0.65527 0.97363 +0.90527 0.22363 +0.40527 0.72363 +0.28027 0.09863 +0.78027 0.59863 +0.53027 0.34863 +0.03027 0.84863 +0.02246 0.45020 +0.52246 0.95020 +0.77246 0.20020 +0.27246 0.70020 +0.39746 0.07520 +0.89746 0.57520 +0.64746 0.32520 +0.14746 0.82520 +0.20996 0.13770 +0.70996 0.63770 +0.95996 0.38770 +0.45996 0.88770 +0.33496 0.26270 +0.83496 0.76270 +0.58496 0.01270 +0.08496 0.51270 +0.11621 0.04395 +0.61621 0.54395 +0.86621 0.29395 +0.36621 0.79395 +0.49121 0.41895 +0.99121 0.91895 +0.74121 0.16895 +0.24121 0.66895 +0.17871 0.35645 +0.67871 0.85645 +0.92871 0.10645 +0.42871 0.60645 +0.30371 0.23145 +0.80371 0.73145 +0.55371 0.48145 +0.05371 0.98145 +0.03809 0.21582 +0.53809 0.71582 +0.78809 0.46582 +0.28809 0.96582 +0.41309 0.34082 +0.91309 0.84082 +0.66309 0.09082 +0.16309 0.59082 +0.22559 0.40332 +0.72559 0.90332 +0.97559 0.15332 +0.47559 0.65332 +0.35059 0.02832 +0.85059 0.52832 +0.60059 0.27832 +0.10059 0.77832 +0.06934 0.30957 +0.56934 0.80957 +0.81934 0.05957 +0.31934 0.55957 +0.44434 0.18457 +0.94434 0.68457 +0.69434 0.43457 +0.19434 0.93457 +0.13184 0.12207 +0.63184 0.62207 +0.88184 0.37207 +0.38184 0.87207 +0.25684 0.49707 +0.75684 0.99707 +0.50684 0.24707 +0.00684 0.74707 +0.00488 0.24902 +0.50488 0.74902 +0.75488 0.49902 +0.25488 0.99902 +0.37988 0.37402 +0.87988 0.87402 +0.62988 0.12402 +0.12988 0.62402 +0.19238 0.43652 +0.69238 0.93652 +0.94238 0.18652 +0.44238 0.68652 +0.31738 0.06152 +0.81738 0.56152 +0.56738 0.31152 +0.06738 0.81152 +0.09863 0.28027 +0.59863 0.78027 +0.84863 0.03027 +0.34863 0.53027 +0.47363 0.15527 +0.97363 0.65527 +0.72363 0.40527 +0.22363 0.90527 +0.16113 0.09277 +0.66113 0.59277 +0.91113 0.34277 +0.41113 0.84277 +0.28613 0.46777 +0.78613 0.96777 +0.53613 0.21777 +0.03613 0.71777 +0.05176 0.48340 +0.55176 0.98340 +0.80176 0.23340 +0.30176 0.73340 +0.42676 0.10840 +0.92676 0.60840 +0.67676 0.35840 +0.17676 0.85840 +0.23926 0.17090 +0.73926 0.67090 +0.98926 0.42090 +0.48926 0.92090 +0.36426 0.29590 +0.86426 0.79590 +0.61426 0.04590 +0.11426 0.54590 +0.08301 0.01465 +0.58301 0.51465 +0.83301 0.26465 +0.33301 0.76465 +0.45801 0.38965 +0.95801 0.88965 +0.70801 0.13965 +0.20801 0.63965 +0.14551 0.32715 +0.64551 0.82715 +0.89551 0.07715 +0.39551 0.57715 +0.27051 0.20215 +0.77051 0.70215 +0.52051 0.45215 +0.02051 0.95215 +0.02832 0.35059 +0.52832 0.85059 +0.77832 0.10059 +0.27832 0.60059 +0.40332 0.22559 +0.90332 0.72559 +0.65332 0.47559 +0.15332 0.97559 +0.21582 0.03809 +0.71582 0.53809 +0.96582 0.28809 +0.46582 0.78809 +0.34082 0.41309 +0.84082 0.91309 +0.59082 0.16309 +0.09082 0.66309 +0.12207 0.13184 +0.62207 0.63184 +0.87207 0.38184 +0.37207 0.88184 +0.49707 0.25684 +0.99707 0.75684 +0.74707 0.00684 +0.24707 0.50684 +0.18457 0.44434 +0.68457 0.94434 +0.93457 0.19434 +0.43457 0.69434 +0.30957 0.06934 +0.80957 0.56934 +0.55957 0.31934 +0.05957 0.81934 +0.04395 0.11621 +0.54395 0.61621 +0.79395 0.36621 +0.29395 0.86621 +0.41895 0.49121 +0.91895 0.99121 +0.66895 0.24121 +0.16895 0.74121 +0.23145 0.30371 +0.73145 0.80371 +0.98145 0.05371 +0.48145 0.55371 +0.35645 0.17871 +0.85645 0.67871 +0.60645 0.42871 +0.10645 0.92871 +0.07520 0.39746 +0.57520 0.89746 +0.82520 0.14746 +0.32520 0.64746 +0.45020 0.02246 +0.95020 0.52246 +0.70020 0.27246 +0.20020 0.77246 +0.13770 0.20996 +0.63770 0.70996 +0.88770 0.45996 +0.38770 0.95996 +0.26270 0.33496 +0.76270 0.83496 +0.51270 0.08496 +0.01270 0.58496 +0.00879 0.41699 +0.50879 0.91699 +0.75879 0.16699 +0.25879 0.66699 +0.38379 0.04199 +0.88379 0.54199 +0.63379 0.29199 +0.13379 0.79199 +0.19629 0.22949 +0.69629 0.72949 +0.94629 0.47949 +0.44629 0.97949 +0.32129 0.35449 +0.82129 0.85449 +0.57129 0.10449 +0.07129 0.60449 +0.10254 0.07324 +0.60254 0.57324 +0.85254 0.32324 +0.35254 0.82324 +0.47754 0.44824 +0.97754 0.94824 +0.72754 0.19824 +0.22754 0.69824 +0.16504 0.26074 +0.66504 0.76074 +0.91504 0.01074 +0.41504 0.51074 +0.29004 0.13574 +0.79004 0.63574 +0.54004 0.38574 +0.04004 0.88574 +0.05566 0.18262 +0.55566 0.68262 +0.80566 0.43262 +0.30566 0.93262 +0.43066 0.30762 +0.93066 0.80762 +0.68066 0.05762 +0.18066 0.55762 +0.24316 0.49512 +0.74316 0.99512 +0.99316 0.24512 +0.49316 0.74512 +0.36816 0.12012 +0.86816 0.62012 +0.61816 0.37012 +0.11816 0.87012 +0.08691 0.33887 +0.58691 0.83887 +0.83691 0.08887 +0.33691 0.58887 +0.46191 0.21387 +0.96191 0.71387 +0.71191 0.46387 +0.21191 0.96387 +0.14941 0.02637 +0.64941 0.52637 +0.89941 0.27637 +0.39941 0.77637 +0.27441 0.40137 +0.77441 0.90137 +0.52441 0.15137 +0.02441 0.65137 +0.01660 0.04980 +0.51660 0.54980 +0.76660 0.29980 +0.26660 0.79980 +0.39160 0.42480 +0.89160 0.92480 +0.64160 0.17480 +0.14160 0.67480 +0.20410 0.36230 +0.70410 0.86230 +0.95410 0.11230 +0.45410 0.61230 +0.32910 0.23730 +0.82910 0.73730 +0.57910 0.48730 +0.07910 0.98730 +0.11035 0.45605 +0.61035 0.95605 +0.86035 0.20605 +0.36035 0.70605 +0.48535 0.08105 +0.98535 0.58105 +0.73535 0.33105 +0.23535 0.83105 +0.17285 0.14355 +0.67285 0.64355 +0.92285 0.39355 +0.42285 0.89355 +0.29785 0.26855 +0.79785 0.76855 +0.54785 0.01855 +0.04785 0.51855 +0.03223 0.28418 +0.53223 0.78418 +0.78223 0.03418 +0.28223 0.53418 +0.40723 0.15918 +0.90723 0.65918 +0.65723 0.40918 +0.15723 0.90918 +0.21973 0.09668 +0.71973 0.59668 +0.96973 0.34668 +0.46973 0.84668 +0.34473 0.47168 +0.84473 0.97168 +0.59473 0.22168 +0.09473 0.72168 +0.06348 0.19043 +0.56348 0.69043 +0.81348 0.44043 +0.31348 0.94043 +0.43848 0.31543 +0.93848 0.81543 +0.68848 0.06543 +0.18848 0.56543 +0.12598 0.37793 +0.62598 0.87793 +0.87598 0.12793 +0.37598 0.62793 +0.25098 0.00293 +0.75098 0.50293 +0.50098 0.25293 +0.00098 0.75293 +0.00146 0.37646 diff --git a/gsl-2.5/doc/examples/randpoisson b/gsl-2.5/doc/examples/randpoisson new file mode 100755 index 00000000..724f01a6 --- /dev/null +++ b/gsl-2.5/doc/examples/randpoisson @@ -0,0 +1,228 @@ +#! /bin/sh + +# randpoisson - temporary wrapper script for .libs/randpoisson +# Generated by libtool (GNU libtool) 2.4.2 +# +# The randpoisson program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s/\([`"$\\]\)/\\\1/g' + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command="(cd /home/groups/kipac/chto/package/gsl/gsl-2.5/doc/examples; LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LIBRARY_PATH; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; LD_LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/fftw/include:/home/users/chto/lib/fftw/lib:/home/users/chto/lib/healpix/lib:/home/users/chto/lib/namaster/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/include:/home/users/chto/cpp/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LD_LIBRARY_PATH; PATH=/share/software/user/open/curl/7.54.0/bin:/share/software/user/open/libressl/2.5.3/bin:/home/users/chto/lib/cfitsio:/home/users/chto/lib/cfitsio/include:/home/users/chto/lib:/home/users/chto/bin/bin:/home/users/chto/bin:/home/users/chto/.texlive/bin/x86_64-linux:/home/groups/kipac/chto/anaconda2/envs/newenv3/bin:/home/users/chto/.local/bin/include:/home/users/chto/.local/bin/lib:/home/users/chto/.local/bin:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/bin64:/share/software/user/open/fftw/3.3.6/bin:/home/groups/kipac/chto/anaconda2/condabin:/share/software/user/restricted/ifort/2019/bin:/share/software/user/open/gsl/2.3/bin:/share/software/user/srcc/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/dell/srvadmin/bin:/opt/dell/srvadmin/iSM/bin:/home/users/chto/bin; export PATH; gcc -g -O2 -o \$progdir/\$file randpoisson.o ../../.libs/libgsl.so ../../cblas/.libs/libgslcblas.so -lm -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/.libs -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/cblas/.libs -Wl,-rpath -Wl,/usr/local/lib)" + +# This environment variable determines our operation mode. +if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then + # install mode needs the following variables: + generated_by_libtool_version='2.4.2' + notinst_deplibs=' ../../libgsl.la ../../cblas/libgslcblas.la' +else + # When we are sourced in execute mode, $file and $ECHO are already set. + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + file="$0" + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + ECHO="printf %s\\n" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ which is used only on +# windows platforms, and (c) all begin with the string --lt- +# (application programs are unlikely to have options which match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's ../../libtool value, followed by no. +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=$0 + shift + for lt_opt + do + case "$lt_opt" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%/[^/]*$%%'` + test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=. + lt_dump_F=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%^.*/%%'` + cat "$lt_dump_D/$lt_dump_F" + exit 0 + ;; + --lt-*) + $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n "$lt_option_debug"; then + echo "randpoisson:randpoisson:${LINENO}: libtool wrapper (GNU libtool) 2.4.2" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + $ECHO "randpoisson:randpoisson:${LINENO}: newargv[$lt_dump_args_N]: $lt_arg" + lt_dump_args_N=`expr $lt_dump_args_N + 1` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ + + if test -n "$lt_option_debug"; then + $ECHO "randpoisson:randpoisson:${LINENO}: newargv[0]: $progdir/$program" 1>&2 + func_lt_dump_args ${1+"$@"} 1>&2 + fi + exec "$progdir/$program" ${1+"$@"} + + $ECHO "$0: cannot exec $program $*" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from $@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case " $* " in + *\ --lt-*) + for lt_wr_arg + do + case $lt_wr_arg in + --lt-*) ;; + *) set x "$@" "$lt_wr_arg"; shift;; + esac + shift + done ;; + esac + func_exec_program_core ${1+"$@"} +} + + # Parse options + func_parse_lt_options "$0" ${1+"$@"} + + # Find the directory that this script lives in. + thisdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + test "x$thisdir" = "x$file" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=`ls -ld "$file" | /usr/bin/sed -n 's/.*-> //p'` + while test -n "$file"; do + destdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + + # If there was a directory component, then change thisdir. + if test "x$destdir" != "x$file"; then + case "$destdir" in + [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;; + *) thisdir="$thisdir/$destdir" ;; + esac + fi + + file=`$ECHO "$file" | /usr/bin/sed 's%^.*/%%'` + file=`ls -ld "$thisdir/$file" | /usr/bin/sed -n 's/.*-> //p'` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no + if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then + # special case for '.' + if test "$thisdir" = "."; then + thisdir=`pwd` + fi + # remove .libs from thisdir + case "$thisdir" in + *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /usr/bin/sed 's%[\\/][^\\/]*$%%'` ;; + .libs ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=`cd "$thisdir" && pwd` + test -n "$absdir" && thisdir="$absdir" + + program=lt-'randpoisson' + progdir="$thisdir/.libs" + + if test ! -f "$progdir/$program" || + { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /usr/bin/sed 1q`; \ + test "X$file" != "X$progdir/$program"; }; then + + file="$$-$program" + + if test ! -d "$progdir"; then + mkdir "$progdir" + else + rm -f "$progdir/$file" + fi + + # relink executable if necessary + if test -n "$relink_command"; then + if relink_command_output=`eval $relink_command 2>&1`; then : + else + printf %s\n "$relink_command_output" >&2 + rm -f "$progdir/$file" + exit 1 + fi + fi + + mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null || + { rm -f "$progdir/$program"; + mv -f "$progdir/$file" "$progdir/$program"; } + rm -f "$progdir/$file" + fi + + if test -f "$progdir/$program"; then + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + # Run the actual program with our arguments. + func_exec_program ${1+"$@"} + fi + else + # The program doesn't exist. + $ECHO "$0: error: \`$progdir/$program' does not exist" 1>&2 + $ECHO "This script is just a wrapper for $program." 1>&2 + $ECHO "See the libtool documentation for more information." 1>&2 + exit 1 + fi +fi diff --git a/gsl-2.5/doc/examples/randpoisson.c b/gsl-2.5/doc/examples/randpoisson.c new file mode 100644 index 00000000..ef69b72f --- /dev/null +++ b/gsl-2.5/doc/examples/randpoisson.c @@ -0,0 +1,35 @@ +#include +#include +#include + +int +main (void) +{ + const gsl_rng_type * T; + gsl_rng * r; + + int i, n = 10; + double mu = 3.0; + + /* create a generator chosen by the + environment variable GSL_RNG_TYPE */ + + gsl_rng_env_setup(); + + T = gsl_rng_default; + r = gsl_rng_alloc (T); + + /* print n random variates chosen from + the poisson distribution with mean + parameter mu */ + + for (i = 0; i < n; i++) + { + unsigned int k = gsl_ran_poisson (r, mu); + printf (" %u", k); + } + + printf ("\n"); + gsl_rng_free (r); + return 0; +} diff --git a/gsl-2.5/doc/examples/randpoisson.txt b/gsl-2.5/doc/examples/randpoisson.txt new file mode 100644 index 00000000..1639cca4 --- /dev/null +++ b/gsl-2.5/doc/examples/randpoisson.txt @@ -0,0 +1 @@ + 2 5 5 2 1 0 3 4 1 1 diff --git a/gsl-2.5/doc/examples/randpoisson2.txt b/gsl-2.5/doc/examples/randpoisson2.txt new file mode 100644 index 00000000..14877c36 --- /dev/null +++ b/gsl-2.5/doc/examples/randpoisson2.txt @@ -0,0 +1 @@ + 4 5 6 3 3 1 4 2 5 5 diff --git a/gsl-2.5/doc/examples/randwalk b/gsl-2.5/doc/examples/randwalk new file mode 100755 index 00000000..26c5198c --- /dev/null +++ b/gsl-2.5/doc/examples/randwalk @@ -0,0 +1,228 @@ +#! /bin/sh + +# randwalk - temporary wrapper script for .libs/randwalk +# Generated by libtool (GNU libtool) 2.4.2 +# +# The randwalk program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s/\([`"$\\]\)/\\\1/g' + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command="(cd /home/groups/kipac/chto/package/gsl/gsl-2.5/doc/examples; LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LIBRARY_PATH; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; LD_LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/fftw/include:/home/users/chto/lib/fftw/lib:/home/users/chto/lib/healpix/lib:/home/users/chto/lib/namaster/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/include:/home/users/chto/cpp/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LD_LIBRARY_PATH; PATH=/share/software/user/open/curl/7.54.0/bin:/share/software/user/open/libressl/2.5.3/bin:/home/users/chto/lib/cfitsio:/home/users/chto/lib/cfitsio/include:/home/users/chto/lib:/home/users/chto/bin/bin:/home/users/chto/bin:/home/users/chto/.texlive/bin/x86_64-linux:/home/groups/kipac/chto/anaconda2/envs/newenv3/bin:/home/users/chto/.local/bin/include:/home/users/chto/.local/bin/lib:/home/users/chto/.local/bin:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/bin64:/share/software/user/open/fftw/3.3.6/bin:/home/groups/kipac/chto/anaconda2/condabin:/share/software/user/restricted/ifort/2019/bin:/share/software/user/open/gsl/2.3/bin:/share/software/user/srcc/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/dell/srvadmin/bin:/opt/dell/srvadmin/iSM/bin:/home/users/chto/bin; export PATH; gcc -g -O2 -o \$progdir/\$file randwalk.o ../../.libs/libgsl.so ../../cblas/.libs/libgslcblas.so -lm -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/.libs -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/cblas/.libs -Wl,-rpath -Wl,/usr/local/lib)" + +# This environment variable determines our operation mode. +if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then + # install mode needs the following variables: + generated_by_libtool_version='2.4.2' + notinst_deplibs=' ../../libgsl.la ../../cblas/libgslcblas.la' +else + # When we are sourced in execute mode, $file and $ECHO are already set. + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + file="$0" + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + ECHO="printf %s\\n" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ which is used only on +# windows platforms, and (c) all begin with the string --lt- +# (application programs are unlikely to have options which match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's ../../libtool value, followed by no. +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=$0 + shift + for lt_opt + do + case "$lt_opt" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%/[^/]*$%%'` + test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=. + lt_dump_F=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%^.*/%%'` + cat "$lt_dump_D/$lt_dump_F" + exit 0 + ;; + --lt-*) + $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n "$lt_option_debug"; then + echo "randwalk:randwalk:${LINENO}: libtool wrapper (GNU libtool) 2.4.2" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + $ECHO "randwalk:randwalk:${LINENO}: newargv[$lt_dump_args_N]: $lt_arg" + lt_dump_args_N=`expr $lt_dump_args_N + 1` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ + + if test -n "$lt_option_debug"; then + $ECHO "randwalk:randwalk:${LINENO}: newargv[0]: $progdir/$program" 1>&2 + func_lt_dump_args ${1+"$@"} 1>&2 + fi + exec "$progdir/$program" ${1+"$@"} + + $ECHO "$0: cannot exec $program $*" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from $@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case " $* " in + *\ --lt-*) + for lt_wr_arg + do + case $lt_wr_arg in + --lt-*) ;; + *) set x "$@" "$lt_wr_arg"; shift;; + esac + shift + done ;; + esac + func_exec_program_core ${1+"$@"} +} + + # Parse options + func_parse_lt_options "$0" ${1+"$@"} + + # Find the directory that this script lives in. + thisdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + test "x$thisdir" = "x$file" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=`ls -ld "$file" | /usr/bin/sed -n 's/.*-> //p'` + while test -n "$file"; do + destdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + + # If there was a directory component, then change thisdir. + if test "x$destdir" != "x$file"; then + case "$destdir" in + [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;; + *) thisdir="$thisdir/$destdir" ;; + esac + fi + + file=`$ECHO "$file" | /usr/bin/sed 's%^.*/%%'` + file=`ls -ld "$thisdir/$file" | /usr/bin/sed -n 's/.*-> //p'` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no + if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then + # special case for '.' + if test "$thisdir" = "."; then + thisdir=`pwd` + fi + # remove .libs from thisdir + case "$thisdir" in + *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /usr/bin/sed 's%[\\/][^\\/]*$%%'` ;; + .libs ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=`cd "$thisdir" && pwd` + test -n "$absdir" && thisdir="$absdir" + + program=lt-'randwalk' + progdir="$thisdir/.libs" + + if test ! -f "$progdir/$program" || + { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /usr/bin/sed 1q`; \ + test "X$file" != "X$progdir/$program"; }; then + + file="$$-$program" + + if test ! -d "$progdir"; then + mkdir "$progdir" + else + rm -f "$progdir/$file" + fi + + # relink executable if necessary + if test -n "$relink_command"; then + if relink_command_output=`eval $relink_command 2>&1`; then : + else + printf %s\n "$relink_command_output" >&2 + rm -f "$progdir/$file" + exit 1 + fi + fi + + mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null || + { rm -f "$progdir/$program"; + mv -f "$progdir/$file" "$progdir/$program"; } + rm -f "$progdir/$file" + fi + + if test -f "$progdir/$program"; then + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + # Run the actual program with our arguments. + func_exec_program ${1+"$@"} + fi + else + # The program doesn't exist. + $ECHO "$0: error: \`$progdir/$program' does not exist" 1>&2 + $ECHO "This script is just a wrapper for $program." 1>&2 + $ECHO "See the libtool documentation for more information." 1>&2 + exit 1 + fi +fi diff --git a/gsl-2.5/doc/examples/randwalk.c b/gsl-2.5/doc/examples/randwalk.c new file mode 100644 index 00000000..588aa502 --- /dev/null +++ b/gsl-2.5/doc/examples/randwalk.c @@ -0,0 +1,29 @@ +#include +#include +#include + +int +main (void) +{ + int i; + double x = 0, y = 0, dx, dy; + + const gsl_rng_type * T; + gsl_rng * r; + + gsl_rng_env_setup(); + T = gsl_rng_default; + r = gsl_rng_alloc (T); + + printf ("%g %g\n", x, y); + + for (i = 0; i < 10; i++) + { + gsl_ran_dir_2d (r, &dx, &dy); + x += dx; y += dy; + printf ("%g %g\n", x, y); + } + + gsl_rng_free (r); + return 0; +} diff --git a/gsl-2.5/doc/examples/randwalk.txt b/gsl-2.5/doc/examples/randwalk.txt new file mode 100644 index 00000000..a7ee89bc --- /dev/null +++ b/gsl-2.5/doc/examples/randwalk.txt @@ -0,0 +1,11 @@ +0 0 +-0.617746 -0.786378 +0.376003 -0.674734 +-0.569808 -0.350015 +-0.112542 0.539315 +-0.575798 -0.34691 +-1.56878 -0.465204 +-2.47057 -0.0330451 +-2.50057 0.966505 +-1.72376 1.59625 +-2.64634 1.98207 diff --git a/gsl-2.5/doc/examples/rng b/gsl-2.5/doc/examples/rng new file mode 100755 index 00000000..2b807141 --- /dev/null +++ b/gsl-2.5/doc/examples/rng @@ -0,0 +1,228 @@ +#! /bin/sh + +# rng - temporary wrapper script for .libs/rng +# Generated by libtool (GNU libtool) 2.4.2 +# +# The rng program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s/\([`"$\\]\)/\\\1/g' + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command="(cd /home/groups/kipac/chto/package/gsl/gsl-2.5/doc/examples; LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LIBRARY_PATH; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; LD_LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/fftw/include:/home/users/chto/lib/fftw/lib:/home/users/chto/lib/healpix/lib:/home/users/chto/lib/namaster/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/include:/home/users/chto/cpp/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LD_LIBRARY_PATH; PATH=/share/software/user/open/curl/7.54.0/bin:/share/software/user/open/libressl/2.5.3/bin:/home/users/chto/lib/cfitsio:/home/users/chto/lib/cfitsio/include:/home/users/chto/lib:/home/users/chto/bin/bin:/home/users/chto/bin:/home/users/chto/.texlive/bin/x86_64-linux:/home/groups/kipac/chto/anaconda2/envs/newenv3/bin:/home/users/chto/.local/bin/include:/home/users/chto/.local/bin/lib:/home/users/chto/.local/bin:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/bin64:/share/software/user/open/fftw/3.3.6/bin:/home/groups/kipac/chto/anaconda2/condabin:/share/software/user/restricted/ifort/2019/bin:/share/software/user/open/gsl/2.3/bin:/share/software/user/srcc/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/dell/srvadmin/bin:/opt/dell/srvadmin/iSM/bin:/home/users/chto/bin; export PATH; gcc -g -O2 -o \$progdir/\$file rng.o ../../.libs/libgsl.so ../../cblas/.libs/libgslcblas.so -lm -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/.libs -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/cblas/.libs -Wl,-rpath -Wl,/usr/local/lib)" + +# This environment variable determines our operation mode. +if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then + # install mode needs the following variables: + generated_by_libtool_version='2.4.2' + notinst_deplibs=' ../../libgsl.la ../../cblas/libgslcblas.la' +else + # When we are sourced in execute mode, $file and $ECHO are already set. + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + file="$0" + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + ECHO="printf %s\\n" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ which is used only on +# windows platforms, and (c) all begin with the string --lt- +# (application programs are unlikely to have options which match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's ../../libtool value, followed by no. +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=$0 + shift + for lt_opt + do + case "$lt_opt" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%/[^/]*$%%'` + test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=. + lt_dump_F=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%^.*/%%'` + cat "$lt_dump_D/$lt_dump_F" + exit 0 + ;; + --lt-*) + $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n "$lt_option_debug"; then + echo "rng:rng:${LINENO}: libtool wrapper (GNU libtool) 2.4.2" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + $ECHO "rng:rng:${LINENO}: newargv[$lt_dump_args_N]: $lt_arg" + lt_dump_args_N=`expr $lt_dump_args_N + 1` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ + + if test -n "$lt_option_debug"; then + $ECHO "rng:rng:${LINENO}: newargv[0]: $progdir/$program" 1>&2 + func_lt_dump_args ${1+"$@"} 1>&2 + fi + exec "$progdir/$program" ${1+"$@"} + + $ECHO "$0: cannot exec $program $*" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from $@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case " $* " in + *\ --lt-*) + for lt_wr_arg + do + case $lt_wr_arg in + --lt-*) ;; + *) set x "$@" "$lt_wr_arg"; shift;; + esac + shift + done ;; + esac + func_exec_program_core ${1+"$@"} +} + + # Parse options + func_parse_lt_options "$0" ${1+"$@"} + + # Find the directory that this script lives in. + thisdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + test "x$thisdir" = "x$file" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=`ls -ld "$file" | /usr/bin/sed -n 's/.*-> //p'` + while test -n "$file"; do + destdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + + # If there was a directory component, then change thisdir. + if test "x$destdir" != "x$file"; then + case "$destdir" in + [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;; + *) thisdir="$thisdir/$destdir" ;; + esac + fi + + file=`$ECHO "$file" | /usr/bin/sed 's%^.*/%%'` + file=`ls -ld "$thisdir/$file" | /usr/bin/sed -n 's/.*-> //p'` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no + if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then + # special case for '.' + if test "$thisdir" = "."; then + thisdir=`pwd` + fi + # remove .libs from thisdir + case "$thisdir" in + *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /usr/bin/sed 's%[\\/][^\\/]*$%%'` ;; + .libs ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=`cd "$thisdir" && pwd` + test -n "$absdir" && thisdir="$absdir" + + program=lt-'rng' + progdir="$thisdir/.libs" + + if test ! -f "$progdir/$program" || + { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /usr/bin/sed 1q`; \ + test "X$file" != "X$progdir/$program"; }; then + + file="$$-$program" + + if test ! -d "$progdir"; then + mkdir "$progdir" + else + rm -f "$progdir/$file" + fi + + # relink executable if necessary + if test -n "$relink_command"; then + if relink_command_output=`eval $relink_command 2>&1`; then : + else + printf %s\n "$relink_command_output" >&2 + rm -f "$progdir/$file" + exit 1 + fi + fi + + mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null || + { rm -f "$progdir/$program"; + mv -f "$progdir/$file" "$progdir/$program"; } + rm -f "$progdir/$file" + fi + + if test -f "$progdir/$program"; then + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + # Run the actual program with our arguments. + func_exec_program ${1+"$@"} + fi + else + # The program doesn't exist. + $ECHO "$0: error: \`$progdir/$program' does not exist" 1>&2 + $ECHO "This script is just a wrapper for $program." 1>&2 + $ECHO "See the libtool documentation for more information." 1>&2 + exit 1 + fi +fi diff --git a/gsl-2.5/doc/examples/rng.c b/gsl-2.5/doc/examples/rng.c new file mode 100644 index 00000000..63302641 --- /dev/null +++ b/gsl-2.5/doc/examples/rng.c @@ -0,0 +1,22 @@ +#include +#include + +gsl_rng * r; /* global generator */ + +int +main (void) +{ + const gsl_rng_type * T; + + gsl_rng_env_setup(); + + T = gsl_rng_default; + r = gsl_rng_alloc (T); + + printf ("generator type: %s\n", gsl_rng_name (r)); + printf ("seed = %lu\n", gsl_rng_default_seed); + printf ("first value = %lu\n", gsl_rng_get (r)); + + gsl_rng_free (r); + return 0; +} diff --git a/gsl-2.5/doc/examples/rng.txt b/gsl-2.5/doc/examples/rng.txt new file mode 100644 index 00000000..00f33a33 --- /dev/null +++ b/gsl-2.5/doc/examples/rng.txt @@ -0,0 +1,3 @@ +generator type: mt19937 +seed = 0 +first value = 4293858116 diff --git a/gsl-2.5/doc/examples/rngunif b/gsl-2.5/doc/examples/rngunif new file mode 100755 index 00000000..999b32cc --- /dev/null +++ b/gsl-2.5/doc/examples/rngunif @@ -0,0 +1,228 @@ +#! /bin/sh + +# rngunif - temporary wrapper script for .libs/rngunif +# Generated by libtool (GNU libtool) 2.4.2 +# +# The rngunif program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s/\([`"$\\]\)/\\\1/g' + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command="(cd /home/groups/kipac/chto/package/gsl/gsl-2.5/doc/examples; LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LIBRARY_PATH; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; LD_LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/fftw/include:/home/users/chto/lib/fftw/lib:/home/users/chto/lib/healpix/lib:/home/users/chto/lib/namaster/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/include:/home/users/chto/cpp/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LD_LIBRARY_PATH; PATH=/share/software/user/open/curl/7.54.0/bin:/share/software/user/open/libressl/2.5.3/bin:/home/users/chto/lib/cfitsio:/home/users/chto/lib/cfitsio/include:/home/users/chto/lib:/home/users/chto/bin/bin:/home/users/chto/bin:/home/users/chto/.texlive/bin/x86_64-linux:/home/groups/kipac/chto/anaconda2/envs/newenv3/bin:/home/users/chto/.local/bin/include:/home/users/chto/.local/bin/lib:/home/users/chto/.local/bin:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/bin64:/share/software/user/open/fftw/3.3.6/bin:/home/groups/kipac/chto/anaconda2/condabin:/share/software/user/restricted/ifort/2019/bin:/share/software/user/open/gsl/2.3/bin:/share/software/user/srcc/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/dell/srvadmin/bin:/opt/dell/srvadmin/iSM/bin:/home/users/chto/bin; export PATH; gcc -g -O2 -o \$progdir/\$file rngunif.o ../../.libs/libgsl.so ../../cblas/.libs/libgslcblas.so -lm -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/.libs -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/cblas/.libs -Wl,-rpath -Wl,/usr/local/lib)" + +# This environment variable determines our operation mode. +if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then + # install mode needs the following variables: + generated_by_libtool_version='2.4.2' + notinst_deplibs=' ../../libgsl.la ../../cblas/libgslcblas.la' +else + # When we are sourced in execute mode, $file and $ECHO are already set. + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + file="$0" + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + ECHO="printf %s\\n" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ which is used only on +# windows platforms, and (c) all begin with the string --lt- +# (application programs are unlikely to have options which match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's ../../libtool value, followed by no. +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=$0 + shift + for lt_opt + do + case "$lt_opt" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%/[^/]*$%%'` + test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=. + lt_dump_F=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%^.*/%%'` + cat "$lt_dump_D/$lt_dump_F" + exit 0 + ;; + --lt-*) + $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n "$lt_option_debug"; then + echo "rngunif:rngunif:${LINENO}: libtool wrapper (GNU libtool) 2.4.2" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + $ECHO "rngunif:rngunif:${LINENO}: newargv[$lt_dump_args_N]: $lt_arg" + lt_dump_args_N=`expr $lt_dump_args_N + 1` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ + + if test -n "$lt_option_debug"; then + $ECHO "rngunif:rngunif:${LINENO}: newargv[0]: $progdir/$program" 1>&2 + func_lt_dump_args ${1+"$@"} 1>&2 + fi + exec "$progdir/$program" ${1+"$@"} + + $ECHO "$0: cannot exec $program $*" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from $@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case " $* " in + *\ --lt-*) + for lt_wr_arg + do + case $lt_wr_arg in + --lt-*) ;; + *) set x "$@" "$lt_wr_arg"; shift;; + esac + shift + done ;; + esac + func_exec_program_core ${1+"$@"} +} + + # Parse options + func_parse_lt_options "$0" ${1+"$@"} + + # Find the directory that this script lives in. + thisdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + test "x$thisdir" = "x$file" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=`ls -ld "$file" | /usr/bin/sed -n 's/.*-> //p'` + while test -n "$file"; do + destdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + + # If there was a directory component, then change thisdir. + if test "x$destdir" != "x$file"; then + case "$destdir" in + [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;; + *) thisdir="$thisdir/$destdir" ;; + esac + fi + + file=`$ECHO "$file" | /usr/bin/sed 's%^.*/%%'` + file=`ls -ld "$thisdir/$file" | /usr/bin/sed -n 's/.*-> //p'` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no + if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then + # special case for '.' + if test "$thisdir" = "."; then + thisdir=`pwd` + fi + # remove .libs from thisdir + case "$thisdir" in + *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /usr/bin/sed 's%[\\/][^\\/]*$%%'` ;; + .libs ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=`cd "$thisdir" && pwd` + test -n "$absdir" && thisdir="$absdir" + + program=lt-'rngunif' + progdir="$thisdir/.libs" + + if test ! -f "$progdir/$program" || + { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /usr/bin/sed 1q`; \ + test "X$file" != "X$progdir/$program"; }; then + + file="$$-$program" + + if test ! -d "$progdir"; then + mkdir "$progdir" + else + rm -f "$progdir/$file" + fi + + # relink executable if necessary + if test -n "$relink_command"; then + if relink_command_output=`eval $relink_command 2>&1`; then : + else + printf %s\n "$relink_command_output" >&2 + rm -f "$progdir/$file" + exit 1 + fi + fi + + mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null || + { rm -f "$progdir/$program"; + mv -f "$progdir/$file" "$progdir/$program"; } + rm -f "$progdir/$file" + fi + + if test -f "$progdir/$program"; then + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + # Run the actual program with our arguments. + func_exec_program ${1+"$@"} + fi + else + # The program doesn't exist. + $ECHO "$0: error: \`$progdir/$program' does not exist" 1>&2 + $ECHO "This script is just a wrapper for $program." 1>&2 + $ECHO "See the libtool documentation for more information." 1>&2 + exit 1 + fi +fi diff --git a/gsl-2.5/doc/examples/rngunif.c b/gsl-2.5/doc/examples/rngunif.c new file mode 100644 index 00000000..ca4b2db2 --- /dev/null +++ b/gsl-2.5/doc/examples/rngunif.c @@ -0,0 +1,26 @@ +#include +#include + +int +main (void) +{ + const gsl_rng_type * T; + gsl_rng * r; + + int i, n = 10; + + gsl_rng_env_setup(); + + T = gsl_rng_default; + r = gsl_rng_alloc (T); + + for (i = 0; i < n; i++) + { + double u = gsl_rng_uniform (r); + printf ("%.5f\n", u); + } + + gsl_rng_free (r); + + return 0; +} diff --git a/gsl-2.5/doc/examples/rngunif.txt b/gsl-2.5/doc/examples/rngunif.txt new file mode 100644 index 00000000..b4049efd --- /dev/null +++ b/gsl-2.5/doc/examples/rngunif.txt @@ -0,0 +1,10 @@ +0.99974 +0.16291 +0.28262 +0.94720 +0.23166 +0.48497 +0.95748 +0.74431 +0.54004 +0.73995 diff --git a/gsl-2.5/doc/examples/rngunif2.txt b/gsl-2.5/doc/examples/rngunif2.txt new file mode 100644 index 00000000..aa233db2 --- /dev/null +++ b/gsl-2.5/doc/examples/rngunif2.txt @@ -0,0 +1,10 @@ +0.33050 +0.86631 +0.32982 +0.67620 +0.53391 +0.06457 +0.16847 +0.70229 +0.04371 +0.86374 diff --git a/gsl-2.5/doc/examples/robfit b/gsl-2.5/doc/examples/robfit new file mode 100755 index 00000000..65e845d8 --- /dev/null +++ b/gsl-2.5/doc/examples/robfit @@ -0,0 +1,228 @@ +#! /bin/sh + +# robfit - temporary wrapper script for .libs/robfit +# Generated by libtool (GNU libtool) 2.4.2 +# +# The robfit program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s/\([`"$\\]\)/\\\1/g' + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command="(cd /home/groups/kipac/chto/package/gsl/gsl-2.5/doc/examples; LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LIBRARY_PATH; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; LD_LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/fftw/include:/home/users/chto/lib/fftw/lib:/home/users/chto/lib/healpix/lib:/home/users/chto/lib/namaster/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/include:/home/users/chto/cpp/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LD_LIBRARY_PATH; PATH=/share/software/user/open/curl/7.54.0/bin:/share/software/user/open/libressl/2.5.3/bin:/home/users/chto/lib/cfitsio:/home/users/chto/lib/cfitsio/include:/home/users/chto/lib:/home/users/chto/bin/bin:/home/users/chto/bin:/home/users/chto/.texlive/bin/x86_64-linux:/home/groups/kipac/chto/anaconda2/envs/newenv3/bin:/home/users/chto/.local/bin/include:/home/users/chto/.local/bin/lib:/home/users/chto/.local/bin:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/bin64:/share/software/user/open/fftw/3.3.6/bin:/home/groups/kipac/chto/anaconda2/condabin:/share/software/user/restricted/ifort/2019/bin:/share/software/user/open/gsl/2.3/bin:/share/software/user/srcc/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/dell/srvadmin/bin:/opt/dell/srvadmin/iSM/bin:/home/users/chto/bin; export PATH; gcc -g -O2 -o \$progdir/\$file robfit.o ../../.libs/libgsl.so ../../cblas/.libs/libgslcblas.so -lm -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/.libs -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/cblas/.libs -Wl,-rpath -Wl,/usr/local/lib)" + +# This environment variable determines our operation mode. +if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then + # install mode needs the following variables: + generated_by_libtool_version='2.4.2' + notinst_deplibs=' ../../libgsl.la ../../cblas/libgslcblas.la' +else + # When we are sourced in execute mode, $file and $ECHO are already set. + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + file="$0" + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + ECHO="printf %s\\n" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ which is used only on +# windows platforms, and (c) all begin with the string --lt- +# (application programs are unlikely to have options which match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's ../../libtool value, followed by no. +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=$0 + shift + for lt_opt + do + case "$lt_opt" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%/[^/]*$%%'` + test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=. + lt_dump_F=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%^.*/%%'` + cat "$lt_dump_D/$lt_dump_F" + exit 0 + ;; + --lt-*) + $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n "$lt_option_debug"; then + echo "robfit:robfit:${LINENO}: libtool wrapper (GNU libtool) 2.4.2" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + $ECHO "robfit:robfit:${LINENO}: newargv[$lt_dump_args_N]: $lt_arg" + lt_dump_args_N=`expr $lt_dump_args_N + 1` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ + + if test -n "$lt_option_debug"; then + $ECHO "robfit:robfit:${LINENO}: newargv[0]: $progdir/$program" 1>&2 + func_lt_dump_args ${1+"$@"} 1>&2 + fi + exec "$progdir/$program" ${1+"$@"} + + $ECHO "$0: cannot exec $program $*" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from $@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case " $* " in + *\ --lt-*) + for lt_wr_arg + do + case $lt_wr_arg in + --lt-*) ;; + *) set x "$@" "$lt_wr_arg"; shift;; + esac + shift + done ;; + esac + func_exec_program_core ${1+"$@"} +} + + # Parse options + func_parse_lt_options "$0" ${1+"$@"} + + # Find the directory that this script lives in. + thisdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + test "x$thisdir" = "x$file" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=`ls -ld "$file" | /usr/bin/sed -n 's/.*-> //p'` + while test -n "$file"; do + destdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + + # If there was a directory component, then change thisdir. + if test "x$destdir" != "x$file"; then + case "$destdir" in + [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;; + *) thisdir="$thisdir/$destdir" ;; + esac + fi + + file=`$ECHO "$file" | /usr/bin/sed 's%^.*/%%'` + file=`ls -ld "$thisdir/$file" | /usr/bin/sed -n 's/.*-> //p'` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no + if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then + # special case for '.' + if test "$thisdir" = "."; then + thisdir=`pwd` + fi + # remove .libs from thisdir + case "$thisdir" in + *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /usr/bin/sed 's%[\\/][^\\/]*$%%'` ;; + .libs ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=`cd "$thisdir" && pwd` + test -n "$absdir" && thisdir="$absdir" + + program=lt-'robfit' + progdir="$thisdir/.libs" + + if test ! -f "$progdir/$program" || + { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /usr/bin/sed 1q`; \ + test "X$file" != "X$progdir/$program"; }; then + + file="$$-$program" + + if test ! -d "$progdir"; then + mkdir "$progdir" + else + rm -f "$progdir/$file" + fi + + # relink executable if necessary + if test -n "$relink_command"; then + if relink_command_output=`eval $relink_command 2>&1`; then : + else + printf %s\n "$relink_command_output" >&2 + rm -f "$progdir/$file" + exit 1 + fi + fi + + mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null || + { rm -f "$progdir/$program"; + mv -f "$progdir/$file" "$progdir/$program"; } + rm -f "$progdir/$file" + fi + + if test -f "$progdir/$program"; then + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + # Run the actual program with our arguments. + func_exec_program ${1+"$@"} + fi + else + # The program doesn't exist. + $ECHO "$0: error: \`$progdir/$program' does not exist" 1>&2 + $ECHO "This script is just a wrapper for $program." 1>&2 + $ECHO "See the libtool documentation for more information." 1>&2 + exit 1 + fi +fi diff --git a/gsl-2.5/doc/examples/robfit.c b/gsl-2.5/doc/examples/robfit.c new file mode 100644 index 00000000..81e95bed --- /dev/null +++ b/gsl-2.5/doc/examples/robfit.c @@ -0,0 +1,122 @@ +#include +#include +#include + +int +dofit(const gsl_multifit_robust_type *T, + const gsl_matrix *X, const gsl_vector *y, + gsl_vector *c, gsl_matrix *cov) +{ + int s; + gsl_multifit_robust_workspace * work + = gsl_multifit_robust_alloc (T, X->size1, X->size2); + + s = gsl_multifit_robust (X, y, c, cov, work); + gsl_multifit_robust_free (work); + + return s; +} + +int +main (int argc, char **argv) +{ + size_t i; + size_t n; + const size_t p = 2; /* linear fit */ + gsl_matrix *X, *cov; + gsl_vector *x, *y, *c, *c_ols; + const double a = 1.45; /* slope */ + const double b = 3.88; /* intercept */ + gsl_rng *r; + + if (argc != 2) + { + fprintf (stderr,"usage: robfit n\n"); + exit (-1); + } + + n = atoi (argv[1]); + + X = gsl_matrix_alloc (n, p); + x = gsl_vector_alloc (n); + y = gsl_vector_alloc (n); + + c = gsl_vector_alloc (p); + c_ols = gsl_vector_alloc (p); + cov = gsl_matrix_alloc (p, p); + + r = gsl_rng_alloc(gsl_rng_default); + + /* generate linear dataset */ + for (i = 0; i < n - 3; i++) + { + double dx = 10.0 / (n - 1.0); + double ei = gsl_rng_uniform(r); + double xi = -5.0 + i * dx; + double yi = a * xi + b; + + gsl_vector_set (x, i, xi); + gsl_vector_set (y, i, yi + ei); + } + + /* add a few outliers */ + gsl_vector_set(x, n - 3, 4.7); + gsl_vector_set(y, n - 3, -8.3); + + gsl_vector_set(x, n - 2, 3.5); + gsl_vector_set(y, n - 2, -6.7); + + gsl_vector_set(x, n - 1, 4.1); + gsl_vector_set(y, n - 1, -6.0); + + /* construct design matrix X for linear fit */ + for (i = 0; i < n; ++i) + { + double xi = gsl_vector_get(x, i); + + gsl_matrix_set (X, i, 0, 1.0); + gsl_matrix_set (X, i, 1, xi); + } + + /* perform robust and OLS fit */ + dofit(gsl_multifit_robust_ols, X, y, c_ols, cov); + dofit(gsl_multifit_robust_bisquare, X, y, c, cov); + + /* output data and model */ + for (i = 0; i < n; ++i) + { + double xi = gsl_vector_get(x, i); + double yi = gsl_vector_get(y, i); + gsl_vector_view v = gsl_matrix_row(X, i); + double y_ols, y_rob, y_err; + + gsl_multifit_robust_est(&v.vector, c, cov, &y_rob, &y_err); + gsl_multifit_robust_est(&v.vector, c_ols, cov, &y_ols, &y_err); + + printf("%g %g %g %g\n", xi, yi, y_rob, y_ols); + } + +#define C(i) (gsl_vector_get(c,(i))) +#define COV(i,j) (gsl_matrix_get(cov,(i),(j))) + + { + printf ("# best fit: Y = %g + %g X\n", + C(0), C(1)); + + printf ("# covariance matrix:\n"); + printf ("# [ %+.5e, %+.5e\n", + COV(0,0), COV(0,1)); + printf ("# %+.5e, %+.5e\n", + COV(1,0), COV(1,1)); + } + + gsl_matrix_free (X); + gsl_vector_free (x); + gsl_vector_free (y); + gsl_vector_free (c); + gsl_vector_free (c_ols); + gsl_matrix_free (cov); + gsl_rng_free(r); + + return 0; +} diff --git a/gsl-2.5/doc/examples/robfit.txt b/gsl-2.5/doc/examples/robfit.txt new file mode 100644 index 00000000..018f91f7 --- /dev/null +++ b/gsl-2.5/doc/examples/robfit.txt @@ -0,0 +1,104 @@ +-5 -2.37026 -2.87902 -2.10098 +-4.89899 -3.06063 -2.73364 -1.98182 +-4.79798 -2.79445 -2.58825 -1.86266 +-4.69697 -1.9834 -2.44287 -1.7435 +-4.59596 -2.55248 -2.29749 -1.62435 +-4.49495 -2.1527 -2.1521 -1.50519 +-4.39394 -1.53374 -2.00672 -1.38603 +-4.29293 -1.60044 -1.86134 -1.26687 +-4.19192 -1.65824 -1.71596 -1.14772 +-4.09091 -1.31187 -1.57057 -1.02856 +-3.9899 -1.14541 -1.42519 -0.909399 +-3.88889 -1.10025 -1.27981 -0.790242 +-3.78788 -1.29679 -1.13443 -0.671084 +-3.68687 -0.661557 -0.989042 -0.551926 +-3.58586 -0.799823 -0.843659 -0.432768 +-3.48485 -1.00446 -0.698277 -0.31361 +-3.38384 -0.551036 -0.552894 -0.194452 +-3.28283 -0.487787 -0.407511 -0.0752942 +-3.18182 -0.511969 -0.262128 0.0438637 +-3.08081 -0.373981 -0.116746 0.163022 +-2.9798 -0.410372 0.0286373 0.282179 +-2.87879 0.0392968 0.17402 0.401337 +-2.77778 0.0463711 0.319403 0.520495 +-2.67677 0.942404 0.464786 0.639653 +-2.57576 0.725083 0.610168 0.758811 +-2.47475 1.18992 0.755551 0.877969 +-2.37374 1.10364 0.900934 0.997127 +-2.27273 1.08316 1.04632 1.11628 +-2.17172 1.29164 1.1917 1.23544 +-2.07071 1.05976 1.33708 1.3546 +-1.9697 1.32046 1.48247 1.47376 +-1.86869 1.28781 1.62785 1.59292 +-1.76768 1.37979 1.77323 1.71207 +-1.66667 2.11146 1.91861 1.83123 +-1.56566 2.33522 2.064 1.95039 +-1.46465 2.39339 2.20938 2.06955 +-1.36364 2.61661 2.35476 2.18871 +-1.26263 2.14877 2.50014 2.30786 +-1.16162 2.89492 2.64553 2.42702 +-1.06061 2.44993 2.79091 2.54618 +-0.959596 2.61783 2.93629 2.66534 +-0.858586 3.13745 3.08168 2.7845 +-0.757576 2.9893 3.22706 2.90365 +-0.656566 3.21689 3.37244 3.02281 +-0.555556 3.15762 3.51782 3.14197 +-0.454545 3.34903 3.66321 3.26113 +-0.353535 3.91475 3.80859 3.38028 +-0.252525 3.59616 3.95397 3.49944 +-0.151515 3.95244 4.09936 3.6186 +-0.0505051 4.69839 4.24474 3.73776 +0.0505051 4.18035 4.39012 3.85692 +0.151515 4.53154 4.5355 3.97607 +0.252525 4.38689 4.68089 4.09523 +0.353535 4.79302 4.82627 4.21439 +0.454545 5.22604 4.97165 4.33355 +0.555556 4.85623 5.11704 4.45271 +0.656566 5.27284 5.26242 4.57186 +0.757576 5.02382 5.4078 4.69102 +0.858586 5.43625 5.55318 4.81018 +0.959596 5.7776 5.69857 4.92934 +1.06061 5.60029 5.84395 5.0485 +1.16162 6.07538 5.98933 5.16765 +1.26263 6.4516 6.13471 5.28681 +1.36364 6.22326 6.2801 5.40597 +1.46465 6.16455 6.42548 5.52513 +1.56566 6.61031 6.57086 5.64428 +1.66667 6.9245 6.71625 5.76344 +1.76768 7.12074 6.86163 5.8826 +1.86869 7.28779 7.00701 6.00176 +1.9697 7.2146 7.15239 6.12092 +2.07071 6.97263 7.29778 6.24007 +2.17172 7.36772 7.44316 6.35923 +2.27273 7.27067 7.58854 6.47839 +2.37374 7.75846 7.73393 6.59755 +2.47475 7.94306 7.87931 6.71671 +2.57576 8.03409 8.02469 6.83586 +2.67677 8.53885 8.17007 6.95502 +2.77778 8.53239 8.31546 7.07418 +2.87879 9.03468 8.46084 7.19334 +2.9798 8.57114 8.60622 7.31249 +3.08081 9.17798 8.7516 7.43165 +3.18182 8.63444 8.89699 7.55081 +3.28283 9.38419 9.04237 7.66997 +3.38384 9.61631 9.18775 7.78913 +3.48485 9.32413 9.33314 7.90828 +3.58586 9.70145 9.47852 8.02744 +3.68687 9.57266 9.6239 8.1466 +3.78788 9.41859 9.76928 8.26576 +3.88889 10.132 9.91467 8.38492 +3.9899 10.2327 10.0601 8.50407 +4.09091 10.3107 10.2054 8.62323 +4.19192 10.6821 10.3508 8.74239 +4.29293 10.2493 10.4962 8.86155 +4.39394 10.2935 10.6416 8.98071 +4.49495 10.7085 10.787 9.09986 +4.59596 10.6658 10.9323 9.21902 +4.69697 10.9327 11.0777 9.33818 +4.7 -8.3 11.0821 9.34175 +3.5 -6.7 9.35494 7.92616 +4.1 -6 10.2185 8.63396 +# best fit: Y = 4.31743 + 1.43929 X +# covariance matrix: +# [ +4.01177e-03, +1.15955e-05 +# +1.15955e-05, +4.83755e-04 diff --git a/gsl-2.5/doc/examples/rootnewt b/gsl-2.5/doc/examples/rootnewt new file mode 100755 index 00000000..1eeb882c --- /dev/null +++ b/gsl-2.5/doc/examples/rootnewt @@ -0,0 +1,228 @@ +#! /bin/sh + +# rootnewt - temporary wrapper script for .libs/rootnewt +# Generated by libtool (GNU libtool) 2.4.2 +# +# The rootnewt program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s/\([`"$\\]\)/\\\1/g' + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command="(cd /home/groups/kipac/chto/package/gsl/gsl-2.5/doc/examples; LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LIBRARY_PATH; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; LD_LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/fftw/include:/home/users/chto/lib/fftw/lib:/home/users/chto/lib/healpix/lib:/home/users/chto/lib/namaster/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/include:/home/users/chto/cpp/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LD_LIBRARY_PATH; PATH=/share/software/user/open/curl/7.54.0/bin:/share/software/user/open/libressl/2.5.3/bin:/home/users/chto/lib/cfitsio:/home/users/chto/lib/cfitsio/include:/home/users/chto/lib:/home/users/chto/bin/bin:/home/users/chto/bin:/home/users/chto/.texlive/bin/x86_64-linux:/home/groups/kipac/chto/anaconda2/envs/newenv3/bin:/home/users/chto/.local/bin/include:/home/users/chto/.local/bin/lib:/home/users/chto/.local/bin:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/bin64:/share/software/user/open/fftw/3.3.6/bin:/home/groups/kipac/chto/anaconda2/condabin:/share/software/user/restricted/ifort/2019/bin:/share/software/user/open/gsl/2.3/bin:/share/software/user/srcc/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/dell/srvadmin/bin:/opt/dell/srvadmin/iSM/bin:/home/users/chto/bin; export PATH; gcc -g -O2 -o \$progdir/\$file rootnewt.o ../../.libs/libgsl.so ../../cblas/.libs/libgslcblas.so -lm -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/.libs -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/cblas/.libs -Wl,-rpath -Wl,/usr/local/lib)" + +# This environment variable determines our operation mode. +if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then + # install mode needs the following variables: + generated_by_libtool_version='2.4.2' + notinst_deplibs=' ../../libgsl.la ../../cblas/libgslcblas.la' +else + # When we are sourced in execute mode, $file and $ECHO are already set. + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + file="$0" + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + ECHO="printf %s\\n" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ which is used only on +# windows platforms, and (c) all begin with the string --lt- +# (application programs are unlikely to have options which match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's ../../libtool value, followed by no. +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=$0 + shift + for lt_opt + do + case "$lt_opt" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%/[^/]*$%%'` + test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=. + lt_dump_F=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%^.*/%%'` + cat "$lt_dump_D/$lt_dump_F" + exit 0 + ;; + --lt-*) + $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n "$lt_option_debug"; then + echo "rootnewt:rootnewt:${LINENO}: libtool wrapper (GNU libtool) 2.4.2" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + $ECHO "rootnewt:rootnewt:${LINENO}: newargv[$lt_dump_args_N]: $lt_arg" + lt_dump_args_N=`expr $lt_dump_args_N + 1` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ + + if test -n "$lt_option_debug"; then + $ECHO "rootnewt:rootnewt:${LINENO}: newargv[0]: $progdir/$program" 1>&2 + func_lt_dump_args ${1+"$@"} 1>&2 + fi + exec "$progdir/$program" ${1+"$@"} + + $ECHO "$0: cannot exec $program $*" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from $@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case " $* " in + *\ --lt-*) + for lt_wr_arg + do + case $lt_wr_arg in + --lt-*) ;; + *) set x "$@" "$lt_wr_arg"; shift;; + esac + shift + done ;; + esac + func_exec_program_core ${1+"$@"} +} + + # Parse options + func_parse_lt_options "$0" ${1+"$@"} + + # Find the directory that this script lives in. + thisdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + test "x$thisdir" = "x$file" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=`ls -ld "$file" | /usr/bin/sed -n 's/.*-> //p'` + while test -n "$file"; do + destdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + + # If there was a directory component, then change thisdir. + if test "x$destdir" != "x$file"; then + case "$destdir" in + [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;; + *) thisdir="$thisdir/$destdir" ;; + esac + fi + + file=`$ECHO "$file" | /usr/bin/sed 's%^.*/%%'` + file=`ls -ld "$thisdir/$file" | /usr/bin/sed -n 's/.*-> //p'` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no + if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then + # special case for '.' + if test "$thisdir" = "."; then + thisdir=`pwd` + fi + # remove .libs from thisdir + case "$thisdir" in + *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /usr/bin/sed 's%[\\/][^\\/]*$%%'` ;; + .libs ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=`cd "$thisdir" && pwd` + test -n "$absdir" && thisdir="$absdir" + + program=lt-'rootnewt' + progdir="$thisdir/.libs" + + if test ! -f "$progdir/$program" || + { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /usr/bin/sed 1q`; \ + test "X$file" != "X$progdir/$program"; }; then + + file="$$-$program" + + if test ! -d "$progdir"; then + mkdir "$progdir" + else + rm -f "$progdir/$file" + fi + + # relink executable if necessary + if test -n "$relink_command"; then + if relink_command_output=`eval $relink_command 2>&1`; then : + else + printf %s\n "$relink_command_output" >&2 + rm -f "$progdir/$file" + exit 1 + fi + fi + + mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null || + { rm -f "$progdir/$program"; + mv -f "$progdir/$file" "$progdir/$program"; } + rm -f "$progdir/$file" + fi + + if test -f "$progdir/$program"; then + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + # Run the actual program with our arguments. + func_exec_program ${1+"$@"} + fi + else + # The program doesn't exist. + $ECHO "$0: error: \`$progdir/$program' does not exist" 1>&2 + $ECHO "This script is just a wrapper for $program." 1>&2 + $ECHO "See the libtool documentation for more information." 1>&2 + exit 1 + fi +fi diff --git a/gsl-2.5/doc/examples/rootnewt.c b/gsl-2.5/doc/examples/rootnewt.c new file mode 100644 index 00000000..fea5f110 --- /dev/null +++ b/gsl-2.5/doc/examples/rootnewt.c @@ -0,0 +1,52 @@ +#include +#include +#include +#include + +#include "demo_fn.h" +#include "demo_fn.c" + +int +main (void) +{ + int status; + int iter = 0, max_iter = 100; + const gsl_root_fdfsolver_type *T; + gsl_root_fdfsolver *s; + double x0, x = 5.0, r_expected = sqrt (5.0); + gsl_function_fdf FDF; + struct quadratic_params params = {1.0, 0.0, -5.0}; + + FDF.f = &quadratic; + FDF.df = &quadratic_deriv; + FDF.fdf = &quadratic_fdf; + FDF.params = ¶ms; + + T = gsl_root_fdfsolver_newton; + s = gsl_root_fdfsolver_alloc (T); + gsl_root_fdfsolver_set (s, &FDF, x); + + printf ("using %s method\n", + gsl_root_fdfsolver_name (s)); + + printf ("%-5s %10s %10s %10s\n", + "iter", "root", "err", "err(est)"); + do + { + iter++; + status = gsl_root_fdfsolver_iterate (s); + x0 = x; + x = gsl_root_fdfsolver_root (s); + status = gsl_root_test_delta (x, x0, 0, 1e-3); + + if (status == GSL_SUCCESS) + printf ("Converged:\n"); + + printf ("%5d %10.7f %+10.7f %10.7f\n", + iter, x, x - r_expected, x - x0); + } + while (status == GSL_CONTINUE && iter < max_iter); + + gsl_root_fdfsolver_free (s); + return status; +} diff --git a/gsl-2.5/doc/examples/rootnewt.txt b/gsl-2.5/doc/examples/rootnewt.txt new file mode 100644 index 00000000..11bc5fef --- /dev/null +++ b/gsl-2.5/doc/examples/rootnewt.txt @@ -0,0 +1,7 @@ +using newton method +iter root err err(est) + 1 3.0000000 +0.7639320 -2.0000000 + 2 2.3333333 +0.0972654 -0.6666667 + 3 2.2380952 +0.0020273 -0.0952381 +Converged: + 4 2.2360689 +0.0000009 -0.0020263 diff --git a/gsl-2.5/doc/examples/roots b/gsl-2.5/doc/examples/roots new file mode 100755 index 00000000..ea97ee87 --- /dev/null +++ b/gsl-2.5/doc/examples/roots @@ -0,0 +1,228 @@ +#! /bin/sh + +# roots - temporary wrapper script for .libs/roots +# Generated by libtool (GNU libtool) 2.4.2 +# +# The roots program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s/\([`"$\\]\)/\\\1/g' + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command="(cd /home/groups/kipac/chto/package/gsl/gsl-2.5/doc/examples; LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LIBRARY_PATH; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; LD_LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/fftw/include:/home/users/chto/lib/fftw/lib:/home/users/chto/lib/healpix/lib:/home/users/chto/lib/namaster/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/include:/home/users/chto/cpp/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LD_LIBRARY_PATH; PATH=/share/software/user/open/curl/7.54.0/bin:/share/software/user/open/libressl/2.5.3/bin:/home/users/chto/lib/cfitsio:/home/users/chto/lib/cfitsio/include:/home/users/chto/lib:/home/users/chto/bin/bin:/home/users/chto/bin:/home/users/chto/.texlive/bin/x86_64-linux:/home/groups/kipac/chto/anaconda2/envs/newenv3/bin:/home/users/chto/.local/bin/include:/home/users/chto/.local/bin/lib:/home/users/chto/.local/bin:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/bin64:/share/software/user/open/fftw/3.3.6/bin:/home/groups/kipac/chto/anaconda2/condabin:/share/software/user/restricted/ifort/2019/bin:/share/software/user/open/gsl/2.3/bin:/share/software/user/srcc/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/dell/srvadmin/bin:/opt/dell/srvadmin/iSM/bin:/home/users/chto/bin; export PATH; gcc -g -O2 -o \$progdir/\$file roots.o ../../.libs/libgsl.so ../../cblas/.libs/libgslcblas.so -lm -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/.libs -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/cblas/.libs -Wl,-rpath -Wl,/usr/local/lib)" + +# This environment variable determines our operation mode. +if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then + # install mode needs the following variables: + generated_by_libtool_version='2.4.2' + notinst_deplibs=' ../../libgsl.la ../../cblas/libgslcblas.la' +else + # When we are sourced in execute mode, $file and $ECHO are already set. + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + file="$0" + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + ECHO="printf %s\\n" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ which is used only on +# windows platforms, and (c) all begin with the string --lt- +# (application programs are unlikely to have options which match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's ../../libtool value, followed by no. +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=$0 + shift + for lt_opt + do + case "$lt_opt" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%/[^/]*$%%'` + test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=. + lt_dump_F=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%^.*/%%'` + cat "$lt_dump_D/$lt_dump_F" + exit 0 + ;; + --lt-*) + $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n "$lt_option_debug"; then + echo "roots:roots:${LINENO}: libtool wrapper (GNU libtool) 2.4.2" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + $ECHO "roots:roots:${LINENO}: newargv[$lt_dump_args_N]: $lt_arg" + lt_dump_args_N=`expr $lt_dump_args_N + 1` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ + + if test -n "$lt_option_debug"; then + $ECHO "roots:roots:${LINENO}: newargv[0]: $progdir/$program" 1>&2 + func_lt_dump_args ${1+"$@"} 1>&2 + fi + exec "$progdir/$program" ${1+"$@"} + + $ECHO "$0: cannot exec $program $*" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from $@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case " $* " in + *\ --lt-*) + for lt_wr_arg + do + case $lt_wr_arg in + --lt-*) ;; + *) set x "$@" "$lt_wr_arg"; shift;; + esac + shift + done ;; + esac + func_exec_program_core ${1+"$@"} +} + + # Parse options + func_parse_lt_options "$0" ${1+"$@"} + + # Find the directory that this script lives in. + thisdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + test "x$thisdir" = "x$file" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=`ls -ld "$file" | /usr/bin/sed -n 's/.*-> //p'` + while test -n "$file"; do + destdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + + # If there was a directory component, then change thisdir. + if test "x$destdir" != "x$file"; then + case "$destdir" in + [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;; + *) thisdir="$thisdir/$destdir" ;; + esac + fi + + file=`$ECHO "$file" | /usr/bin/sed 's%^.*/%%'` + file=`ls -ld "$thisdir/$file" | /usr/bin/sed -n 's/.*-> //p'` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no + if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then + # special case for '.' + if test "$thisdir" = "."; then + thisdir=`pwd` + fi + # remove .libs from thisdir + case "$thisdir" in + *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /usr/bin/sed 's%[\\/][^\\/]*$%%'` ;; + .libs ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=`cd "$thisdir" && pwd` + test -n "$absdir" && thisdir="$absdir" + + program=lt-'roots' + progdir="$thisdir/.libs" + + if test ! -f "$progdir/$program" || + { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /usr/bin/sed 1q`; \ + test "X$file" != "X$progdir/$program"; }; then + + file="$$-$program" + + if test ! -d "$progdir"; then + mkdir "$progdir" + else + rm -f "$progdir/$file" + fi + + # relink executable if necessary + if test -n "$relink_command"; then + if relink_command_output=`eval $relink_command 2>&1`; then : + else + printf %s\n "$relink_command_output" >&2 + rm -f "$progdir/$file" + exit 1 + fi + fi + + mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null || + { rm -f "$progdir/$program"; + mv -f "$progdir/$file" "$progdir/$program"; } + rm -f "$progdir/$file" + fi + + if test -f "$progdir/$program"; then + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + # Run the actual program with our arguments. + func_exec_program ${1+"$@"} + fi + else + # The program doesn't exist. + $ECHO "$0: error: \`$progdir/$program' does not exist" 1>&2 + $ECHO "This script is just a wrapper for $program." 1>&2 + $ECHO "See the libtool documentation for more information." 1>&2 + exit 1 + fi +fi diff --git a/gsl-2.5/doc/examples/roots.c b/gsl-2.5/doc/examples/roots.c new file mode 100644 index 00000000..7854fbc8 --- /dev/null +++ b/gsl-2.5/doc/examples/roots.c @@ -0,0 +1,58 @@ +#include +#include +#include +#include + +#include "demo_fn.h" +#include "demo_fn.c" + +int +main (void) +{ + int status; + int iter = 0, max_iter = 100; + const gsl_root_fsolver_type *T; + gsl_root_fsolver *s; + double r = 0, r_expected = sqrt (5.0); + double x_lo = 0.0, x_hi = 5.0; + gsl_function F; + struct quadratic_params params = {1.0, 0.0, -5.0}; + + F.function = &quadratic; + F.params = ¶ms; + + T = gsl_root_fsolver_brent; + s = gsl_root_fsolver_alloc (T); + gsl_root_fsolver_set (s, &F, x_lo, x_hi); + + printf ("using %s method\n", + gsl_root_fsolver_name (s)); + + printf ("%5s [%9s, %9s] %9s %10s %9s\n", + "iter", "lower", "upper", "root", + "err", "err(est)"); + + do + { + iter++; + status = gsl_root_fsolver_iterate (s); + r = gsl_root_fsolver_root (s); + x_lo = gsl_root_fsolver_x_lower (s); + x_hi = gsl_root_fsolver_x_upper (s); + status = gsl_root_test_interval (x_lo, x_hi, + 0, 0.001); + + if (status == GSL_SUCCESS) + printf ("Converged:\n"); + + printf ("%5d [%.7f, %.7f] %.7f %+.7f %.7f\n", + iter, x_lo, x_hi, + r, r - r_expected, + x_hi - x_lo); + } + while (status == GSL_CONTINUE && iter < max_iter); + + gsl_root_fsolver_free (s); + + return status; +} diff --git a/gsl-2.5/doc/examples/roots.txt b/gsl-2.5/doc/examples/roots.txt new file mode 100644 index 00000000..cbc96cf6 --- /dev/null +++ b/gsl-2.5/doc/examples/roots.txt @@ -0,0 +1,9 @@ +using brent method + iter [ lower, upper] root err err(est) + 1 [1.0000000, 5.0000000] 1.0000000 -1.2360680 4.0000000 + 2 [1.0000000, 3.0000000] 3.0000000 +0.7639320 2.0000000 + 3 [2.0000000, 3.0000000] 2.0000000 -0.2360680 1.0000000 + 4 [2.2000000, 3.0000000] 2.2000000 -0.0360680 0.8000000 + 5 [2.2000000, 2.2366300] 2.2366300 +0.0005621 0.0366300 +Converged: + 6 [2.2360634, 2.2366300] 2.2360634 -0.0000046 0.0005666 diff --git a/gsl-2.5/doc/examples/rquantile b/gsl-2.5/doc/examples/rquantile new file mode 100755 index 00000000..f9a9c71a --- /dev/null +++ b/gsl-2.5/doc/examples/rquantile @@ -0,0 +1,228 @@ +#! /bin/sh + +# rquantile - temporary wrapper script for .libs/rquantile +# Generated by libtool (GNU libtool) 2.4.2 +# +# The rquantile program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s/\([`"$\\]\)/\\\1/g' + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command="(cd /home/groups/kipac/chto/package/gsl/gsl-2.5/doc/examples; LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LIBRARY_PATH; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; LD_LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/fftw/include:/home/users/chto/lib/fftw/lib:/home/users/chto/lib/healpix/lib:/home/users/chto/lib/namaster/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/include:/home/users/chto/cpp/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LD_LIBRARY_PATH; PATH=/share/software/user/open/curl/7.54.0/bin:/share/software/user/open/libressl/2.5.3/bin:/home/users/chto/lib/cfitsio:/home/users/chto/lib/cfitsio/include:/home/users/chto/lib:/home/users/chto/bin/bin:/home/users/chto/bin:/home/users/chto/.texlive/bin/x86_64-linux:/home/groups/kipac/chto/anaconda2/envs/newenv3/bin:/home/users/chto/.local/bin/include:/home/users/chto/.local/bin/lib:/home/users/chto/.local/bin:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/bin64:/share/software/user/open/fftw/3.3.6/bin:/home/groups/kipac/chto/anaconda2/condabin:/share/software/user/restricted/ifort/2019/bin:/share/software/user/open/gsl/2.3/bin:/share/software/user/srcc/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/dell/srvadmin/bin:/opt/dell/srvadmin/iSM/bin:/home/users/chto/bin; export PATH; gcc -g -O2 -o \$progdir/\$file rquantile.o ../../.libs/libgsl.so ../../cblas/.libs/libgslcblas.so -lm -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/.libs -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/cblas/.libs -Wl,-rpath -Wl,/usr/local/lib)" + +# This environment variable determines our operation mode. +if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then + # install mode needs the following variables: + generated_by_libtool_version='2.4.2' + notinst_deplibs=' ../../libgsl.la ../../cblas/libgslcblas.la' +else + # When we are sourced in execute mode, $file and $ECHO are already set. + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + file="$0" + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + ECHO="printf %s\\n" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ which is used only on +# windows platforms, and (c) all begin with the string --lt- +# (application programs are unlikely to have options which match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's ../../libtool value, followed by no. +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=$0 + shift + for lt_opt + do + case "$lt_opt" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%/[^/]*$%%'` + test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=. + lt_dump_F=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%^.*/%%'` + cat "$lt_dump_D/$lt_dump_F" + exit 0 + ;; + --lt-*) + $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n "$lt_option_debug"; then + echo "rquantile:rquantile:${LINENO}: libtool wrapper (GNU libtool) 2.4.2" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + $ECHO "rquantile:rquantile:${LINENO}: newargv[$lt_dump_args_N]: $lt_arg" + lt_dump_args_N=`expr $lt_dump_args_N + 1` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ + + if test -n "$lt_option_debug"; then + $ECHO "rquantile:rquantile:${LINENO}: newargv[0]: $progdir/$program" 1>&2 + func_lt_dump_args ${1+"$@"} 1>&2 + fi + exec "$progdir/$program" ${1+"$@"} + + $ECHO "$0: cannot exec $program $*" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from $@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case " $* " in + *\ --lt-*) + for lt_wr_arg + do + case $lt_wr_arg in + --lt-*) ;; + *) set x "$@" "$lt_wr_arg"; shift;; + esac + shift + done ;; + esac + func_exec_program_core ${1+"$@"} +} + + # Parse options + func_parse_lt_options "$0" ${1+"$@"} + + # Find the directory that this script lives in. + thisdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + test "x$thisdir" = "x$file" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=`ls -ld "$file" | /usr/bin/sed -n 's/.*-> //p'` + while test -n "$file"; do + destdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + + # If there was a directory component, then change thisdir. + if test "x$destdir" != "x$file"; then + case "$destdir" in + [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;; + *) thisdir="$thisdir/$destdir" ;; + esac + fi + + file=`$ECHO "$file" | /usr/bin/sed 's%^.*/%%'` + file=`ls -ld "$thisdir/$file" | /usr/bin/sed -n 's/.*-> //p'` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no + if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then + # special case for '.' + if test "$thisdir" = "."; then + thisdir=`pwd` + fi + # remove .libs from thisdir + case "$thisdir" in + *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /usr/bin/sed 's%[\\/][^\\/]*$%%'` ;; + .libs ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=`cd "$thisdir" && pwd` + test -n "$absdir" && thisdir="$absdir" + + program=lt-'rquantile' + progdir="$thisdir/.libs" + + if test ! -f "$progdir/$program" || + { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /usr/bin/sed 1q`; \ + test "X$file" != "X$progdir/$program"; }; then + + file="$$-$program" + + if test ! -d "$progdir"; then + mkdir "$progdir" + else + rm -f "$progdir/$file" + fi + + # relink executable if necessary + if test -n "$relink_command"; then + if relink_command_output=`eval $relink_command 2>&1`; then : + else + printf %s\n "$relink_command_output" >&2 + rm -f "$progdir/$file" + exit 1 + fi + fi + + mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null || + { rm -f "$progdir/$program"; + mv -f "$progdir/$file" "$progdir/$program"; } + rm -f "$progdir/$file" + fi + + if test -f "$progdir/$program"; then + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + # Run the actual program with our arguments. + func_exec_program ${1+"$@"} + fi + else + # The program doesn't exist. + $ECHO "$0: error: \`$progdir/$program' does not exist" 1>&2 + $ECHO "This script is just a wrapper for $program." 1>&2 + $ECHO "See the libtool documentation for more information." 1>&2 + exit 1 + fi +fi diff --git a/gsl-2.5/doc/examples/rquantile.c b/gsl-2.5/doc/examples/rquantile.c new file mode 100644 index 00000000..85c192ab --- /dev/null +++ b/gsl-2.5/doc/examples/rquantile.c @@ -0,0 +1,60 @@ +#include +#include +#include +#include +#include +#include +#include + +int +main(void) +{ + const size_t N = 10000; + double *data = malloc(N * sizeof(double)); + gsl_rstat_quantile_workspace *work_25 = gsl_rstat_quantile_alloc(0.25); + gsl_rstat_quantile_workspace *work_50 = gsl_rstat_quantile_alloc(0.5); + gsl_rstat_quantile_workspace *work_75 = gsl_rstat_quantile_alloc(0.75); + gsl_rng *r = gsl_rng_alloc(gsl_rng_default); + double exact_p25, exact_p50, exact_p75; + double val_p25, val_p50, val_p75; + size_t i; + + /* add data to quantile accumulators; also store data for exact + * comparisons */ + for (i = 0; i < N; ++i) + { + data[i] = gsl_ran_rayleigh(r, 1.0); + gsl_rstat_quantile_add(data[i], work_25); + gsl_rstat_quantile_add(data[i], work_50); + gsl_rstat_quantile_add(data[i], work_75); + } + + /* exact values */ + gsl_sort(data, 1, N); + exact_p25 = gsl_stats_quantile_from_sorted_data(data, 1, N, 0.25); + exact_p50 = gsl_stats_quantile_from_sorted_data(data, 1, N, 0.5); + exact_p75 = gsl_stats_quantile_from_sorted_data(data, 1, N, 0.75); + + /* estimated values */ + val_p25 = gsl_rstat_quantile_get(work_25); + val_p50 = gsl_rstat_quantile_get(work_50); + val_p75 = gsl_rstat_quantile_get(work_75); + + printf ("The dataset is %g, %g, %g, %g, %g, ...\n", + data[0], data[1], data[2], data[3], data[4]); + + printf ("0.25 quartile: exact = %.5f, estimated = %.5f, error = %.6e\n", + exact_p25, val_p25, (val_p25 - exact_p25) / exact_p25); + printf ("0.50 quartile: exact = %.5f, estimated = %.5f, error = %.6e\n", + exact_p50, val_p50, (val_p50 - exact_p50) / exact_p50); + printf ("0.75 quartile: exact = %.5f, estimated = %.5f, error = %.6e\n", + exact_p75, val_p75, (val_p75 - exact_p75) / exact_p75); + + gsl_rstat_quantile_free(work_25); + gsl_rstat_quantile_free(work_50); + gsl_rstat_quantile_free(work_75); + gsl_rng_free(r); + free(data); + + return 0; +} diff --git a/gsl-2.5/doc/examples/rquantile.txt b/gsl-2.5/doc/examples/rquantile.txt new file mode 100644 index 00000000..529b2983 --- /dev/null +++ b/gsl-2.5/doc/examples/rquantile.txt @@ -0,0 +1,4 @@ +The dataset is 0.00645272, 0.0074002, 0.0120706, 0.0207256, 0.0227282, ... +0.25 quartile: exact = 0.75766, estimated = 0.75580, error = -2.450209e-03 +0.50 quartile: exact = 1.17508, estimated = 1.17438, error = -5.995912e-04 +0.75 quartile: exact = 1.65347, estimated = 1.65696, error = 2.110571e-03 diff --git a/gsl-2.5/doc/examples/rstat b/gsl-2.5/doc/examples/rstat new file mode 100755 index 00000000..9802f11d --- /dev/null +++ b/gsl-2.5/doc/examples/rstat @@ -0,0 +1,228 @@ +#! /bin/sh + +# rstat - temporary wrapper script for .libs/rstat +# Generated by libtool (GNU libtool) 2.4.2 +# +# The rstat program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s/\([`"$\\]\)/\\\1/g' + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command="(cd /home/groups/kipac/chto/package/gsl/gsl-2.5/doc/examples; LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LIBRARY_PATH; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; LD_LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/fftw/include:/home/users/chto/lib/fftw/lib:/home/users/chto/lib/healpix/lib:/home/users/chto/lib/namaster/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/include:/home/users/chto/cpp/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LD_LIBRARY_PATH; PATH=/share/software/user/open/curl/7.54.0/bin:/share/software/user/open/libressl/2.5.3/bin:/home/users/chto/lib/cfitsio:/home/users/chto/lib/cfitsio/include:/home/users/chto/lib:/home/users/chto/bin/bin:/home/users/chto/bin:/home/users/chto/.texlive/bin/x86_64-linux:/home/groups/kipac/chto/anaconda2/envs/newenv3/bin:/home/users/chto/.local/bin/include:/home/users/chto/.local/bin/lib:/home/users/chto/.local/bin:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/bin64:/share/software/user/open/fftw/3.3.6/bin:/home/groups/kipac/chto/anaconda2/condabin:/share/software/user/restricted/ifort/2019/bin:/share/software/user/open/gsl/2.3/bin:/share/software/user/srcc/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/dell/srvadmin/bin:/opt/dell/srvadmin/iSM/bin:/home/users/chto/bin; export PATH; gcc -g -O2 -o \$progdir/\$file rstat.o ../../.libs/libgsl.so ../../cblas/.libs/libgslcblas.so -lm -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/.libs -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/cblas/.libs -Wl,-rpath -Wl,/usr/local/lib)" + +# This environment variable determines our operation mode. +if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then + # install mode needs the following variables: + generated_by_libtool_version='2.4.2' + notinst_deplibs=' ../../libgsl.la ../../cblas/libgslcblas.la' +else + # When we are sourced in execute mode, $file and $ECHO are already set. + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + file="$0" + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + ECHO="printf %s\\n" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ which is used only on +# windows platforms, and (c) all begin with the string --lt- +# (application programs are unlikely to have options which match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's ../../libtool value, followed by no. +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=$0 + shift + for lt_opt + do + case "$lt_opt" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%/[^/]*$%%'` + test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=. + lt_dump_F=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%^.*/%%'` + cat "$lt_dump_D/$lt_dump_F" + exit 0 + ;; + --lt-*) + $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n "$lt_option_debug"; then + echo "rstat:rstat:${LINENO}: libtool wrapper (GNU libtool) 2.4.2" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + $ECHO "rstat:rstat:${LINENO}: newargv[$lt_dump_args_N]: $lt_arg" + lt_dump_args_N=`expr $lt_dump_args_N + 1` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ + + if test -n "$lt_option_debug"; then + $ECHO "rstat:rstat:${LINENO}: newargv[0]: $progdir/$program" 1>&2 + func_lt_dump_args ${1+"$@"} 1>&2 + fi + exec "$progdir/$program" ${1+"$@"} + + $ECHO "$0: cannot exec $program $*" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from $@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case " $* " in + *\ --lt-*) + for lt_wr_arg + do + case $lt_wr_arg in + --lt-*) ;; + *) set x "$@" "$lt_wr_arg"; shift;; + esac + shift + done ;; + esac + func_exec_program_core ${1+"$@"} +} + + # Parse options + func_parse_lt_options "$0" ${1+"$@"} + + # Find the directory that this script lives in. + thisdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + test "x$thisdir" = "x$file" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=`ls -ld "$file" | /usr/bin/sed -n 's/.*-> //p'` + while test -n "$file"; do + destdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + + # If there was a directory component, then change thisdir. + if test "x$destdir" != "x$file"; then + case "$destdir" in + [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;; + *) thisdir="$thisdir/$destdir" ;; + esac + fi + + file=`$ECHO "$file" | /usr/bin/sed 's%^.*/%%'` + file=`ls -ld "$thisdir/$file" | /usr/bin/sed -n 's/.*-> //p'` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no + if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then + # special case for '.' + if test "$thisdir" = "."; then + thisdir=`pwd` + fi + # remove .libs from thisdir + case "$thisdir" in + *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /usr/bin/sed 's%[\\/][^\\/]*$%%'` ;; + .libs ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=`cd "$thisdir" && pwd` + test -n "$absdir" && thisdir="$absdir" + + program=lt-'rstat' + progdir="$thisdir/.libs" + + if test ! -f "$progdir/$program" || + { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /usr/bin/sed 1q`; \ + test "X$file" != "X$progdir/$program"; }; then + + file="$$-$program" + + if test ! -d "$progdir"; then + mkdir "$progdir" + else + rm -f "$progdir/$file" + fi + + # relink executable if necessary + if test -n "$relink_command"; then + if relink_command_output=`eval $relink_command 2>&1`; then : + else + printf %s\n "$relink_command_output" >&2 + rm -f "$progdir/$file" + exit 1 + fi + fi + + mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null || + { rm -f "$progdir/$program"; + mv -f "$progdir/$file" "$progdir/$program"; } + rm -f "$progdir/$file" + fi + + if test -f "$progdir/$program"; then + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + # Run the actual program with our arguments. + func_exec_program ${1+"$@"} + fi + else + # The program doesn't exist. + $ECHO "$0: error: \`$progdir/$program' does not exist" 1>&2 + $ECHO "This script is just a wrapper for $program." 1>&2 + $ECHO "See the libtool documentation for more information." 1>&2 + exit 1 + fi +fi diff --git a/gsl-2.5/doc/examples/rstat.c b/gsl-2.5/doc/examples/rstat.c new file mode 100644 index 00000000..645507de --- /dev/null +++ b/gsl-2.5/doc/examples/rstat.c @@ -0,0 +1,51 @@ +#include +#include + +int +main(void) +{ + double data[5] = {17.2, 18.1, 16.5, 18.3, 12.6}; + double mean, variance, largest, smallest, sd, + rms, sd_mean, median, skew, kurtosis; + gsl_rstat_workspace *rstat_p = gsl_rstat_alloc(); + size_t i, n; + + /* add data to rstat accumulator */ + for (i = 0; i < 5; ++i) + gsl_rstat_add(data[i], rstat_p); + + mean = gsl_rstat_mean(rstat_p); + variance = gsl_rstat_variance(rstat_p); + largest = gsl_rstat_max(rstat_p); + smallest = gsl_rstat_min(rstat_p); + median = gsl_rstat_median(rstat_p); + sd = gsl_rstat_sd(rstat_p); + sd_mean = gsl_rstat_sd_mean(rstat_p); + skew = gsl_rstat_skew(rstat_p); + rms = gsl_rstat_rms(rstat_p); + kurtosis = gsl_rstat_kurtosis(rstat_p); + n = gsl_rstat_n(rstat_p); + + printf ("The dataset is %g, %g, %g, %g, %g\n", + data[0], data[1], data[2], data[3], data[4]); + + printf ("The sample mean is %g\n", mean); + printf ("The estimated variance is %g\n", variance); + printf ("The largest value is %g\n", largest); + printf ("The smallest value is %g\n", smallest); + printf( "The median is %g\n", median); + printf( "The standard deviation is %g\n", sd); + printf( "The root mean square is %g\n", rms); + printf( "The standard devation of the mean is %g\n", sd_mean); + printf( "The skew is %g\n", skew); + printf( "The kurtosis %g\n", kurtosis); + printf( "There are %zu items in the accumulator\n", n); + + gsl_rstat_reset(rstat_p); + n = gsl_rstat_n(rstat_p); + printf( "There are %zu items in the accumulator\n", n); + + gsl_rstat_free(rstat_p); + + return 0; +} diff --git a/gsl-2.5/doc/examples/rstat.txt b/gsl-2.5/doc/examples/rstat.txt new file mode 100644 index 00000000..8c3bcf70 --- /dev/null +++ b/gsl-2.5/doc/examples/rstat.txt @@ -0,0 +1,13 @@ +The dataset is 17.2, 18.1, 16.5, 18.3, 12.6 +The sample mean is 16.54 +The estimated variance is 5.373 +The largest value is 18.3 +The smallest value is 12.6 +The median is 16.5 +The standard deviation is 2.31797 +The root mean square is 16.6694 +The standard devation of the mean is 1.03663 +The skew is -0.829058 +The kurtosis -1.2217 +There are 5 items in the accumulator +There are 0 items in the accumulator diff --git a/gsl-2.5/doc/examples/siman b/gsl-2.5/doc/examples/siman new file mode 100755 index 00000000..e3b4156a --- /dev/null +++ b/gsl-2.5/doc/examples/siman @@ -0,0 +1,228 @@ +#! /bin/sh + +# siman - temporary wrapper script for .libs/siman +# Generated by libtool (GNU libtool) 2.4.2 +# +# The siman program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s/\([`"$\\]\)/\\\1/g' + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command="(cd /home/groups/kipac/chto/package/gsl/gsl-2.5/doc/examples; LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LIBRARY_PATH; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; LD_LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/fftw/include:/home/users/chto/lib/fftw/lib:/home/users/chto/lib/healpix/lib:/home/users/chto/lib/namaster/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/include:/home/users/chto/cpp/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LD_LIBRARY_PATH; PATH=/share/software/user/open/curl/7.54.0/bin:/share/software/user/open/libressl/2.5.3/bin:/home/users/chto/lib/cfitsio:/home/users/chto/lib/cfitsio/include:/home/users/chto/lib:/home/users/chto/bin/bin:/home/users/chto/bin:/home/users/chto/.texlive/bin/x86_64-linux:/home/groups/kipac/chto/anaconda2/envs/newenv3/bin:/home/users/chto/.local/bin/include:/home/users/chto/.local/bin/lib:/home/users/chto/.local/bin:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/bin64:/share/software/user/open/fftw/3.3.6/bin:/home/groups/kipac/chto/anaconda2/condabin:/share/software/user/restricted/ifort/2019/bin:/share/software/user/open/gsl/2.3/bin:/share/software/user/srcc/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/dell/srvadmin/bin:/opt/dell/srvadmin/iSM/bin:/home/users/chto/bin; export PATH; gcc -g -O2 -o \$progdir/\$file siman.o ../../.libs/libgsl.so ../../cblas/.libs/libgslcblas.so -lm -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/.libs -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/cblas/.libs -Wl,-rpath -Wl,/usr/local/lib)" + +# This environment variable determines our operation mode. +if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then + # install mode needs the following variables: + generated_by_libtool_version='2.4.2' + notinst_deplibs=' ../../libgsl.la ../../cblas/libgslcblas.la' +else + # When we are sourced in execute mode, $file and $ECHO are already set. + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + file="$0" + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + ECHO="printf %s\\n" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ which is used only on +# windows platforms, and (c) all begin with the string --lt- +# (application programs are unlikely to have options which match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's ../../libtool value, followed by no. +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=$0 + shift + for lt_opt + do + case "$lt_opt" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%/[^/]*$%%'` + test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=. + lt_dump_F=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%^.*/%%'` + cat "$lt_dump_D/$lt_dump_F" + exit 0 + ;; + --lt-*) + $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n "$lt_option_debug"; then + echo "siman:siman:${LINENO}: libtool wrapper (GNU libtool) 2.4.2" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + $ECHO "siman:siman:${LINENO}: newargv[$lt_dump_args_N]: $lt_arg" + lt_dump_args_N=`expr $lt_dump_args_N + 1` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ + + if test -n "$lt_option_debug"; then + $ECHO "siman:siman:${LINENO}: newargv[0]: $progdir/$program" 1>&2 + func_lt_dump_args ${1+"$@"} 1>&2 + fi + exec "$progdir/$program" ${1+"$@"} + + $ECHO "$0: cannot exec $program $*" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from $@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case " $* " in + *\ --lt-*) + for lt_wr_arg + do + case $lt_wr_arg in + --lt-*) ;; + *) set x "$@" "$lt_wr_arg"; shift;; + esac + shift + done ;; + esac + func_exec_program_core ${1+"$@"} +} + + # Parse options + func_parse_lt_options "$0" ${1+"$@"} + + # Find the directory that this script lives in. + thisdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + test "x$thisdir" = "x$file" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=`ls -ld "$file" | /usr/bin/sed -n 's/.*-> //p'` + while test -n "$file"; do + destdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + + # If there was a directory component, then change thisdir. + if test "x$destdir" != "x$file"; then + case "$destdir" in + [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;; + *) thisdir="$thisdir/$destdir" ;; + esac + fi + + file=`$ECHO "$file" | /usr/bin/sed 's%^.*/%%'` + file=`ls -ld "$thisdir/$file" | /usr/bin/sed -n 's/.*-> //p'` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no + if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then + # special case for '.' + if test "$thisdir" = "."; then + thisdir=`pwd` + fi + # remove .libs from thisdir + case "$thisdir" in + *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /usr/bin/sed 's%[\\/][^\\/]*$%%'` ;; + .libs ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=`cd "$thisdir" && pwd` + test -n "$absdir" && thisdir="$absdir" + + program=lt-'siman' + progdir="$thisdir/.libs" + + if test ! -f "$progdir/$program" || + { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /usr/bin/sed 1q`; \ + test "X$file" != "X$progdir/$program"; }; then + + file="$$-$program" + + if test ! -d "$progdir"; then + mkdir "$progdir" + else + rm -f "$progdir/$file" + fi + + # relink executable if necessary + if test -n "$relink_command"; then + if relink_command_output=`eval $relink_command 2>&1`; then : + else + printf %s\n "$relink_command_output" >&2 + rm -f "$progdir/$file" + exit 1 + fi + fi + + mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null || + { rm -f "$progdir/$program"; + mv -f "$progdir/$file" "$progdir/$program"; } + rm -f "$progdir/$file" + fi + + if test -f "$progdir/$program"; then + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + # Run the actual program with our arguments. + func_exec_program ${1+"$@"} + fi + else + # The program doesn't exist. + $ECHO "$0: error: \`$progdir/$program' does not exist" 1>&2 + $ECHO "This script is just a wrapper for $program." 1>&2 + $ECHO "See the libtool documentation for more information." 1>&2 + exit 1 + fi +fi diff --git a/gsl-2.5/doc/examples/siman.c b/gsl-2.5/doc/examples/siman.c new file mode 100644 index 00000000..0b46dfde --- /dev/null +++ b/gsl-2.5/doc/examples/siman.c @@ -0,0 +1,82 @@ +#include +#include +#include +#include + +/* set up parameters for this simulated annealing run */ + +/* how many points do we try before stepping */ +#define N_TRIES 200 + +/* how many iterations for each T? */ +#define ITERS_FIXED_T 1000 + +/* max step size in random walk */ +#define STEP_SIZE 1.0 + +/* Boltzmann constant */ +#define K 1.0 + +/* initial temperature */ +#define T_INITIAL 0.008 + +/* damping factor for temperature */ +#define MU_T 1.003 +#define T_MIN 2.0e-6 + +gsl_siman_params_t params + = {N_TRIES, ITERS_FIXED_T, STEP_SIZE, + K, T_INITIAL, MU_T, T_MIN}; + +/* now some functions to test in one dimension */ +double E1(void *xp) +{ + double x = * ((double *) xp); + + return exp(-pow((x-1.0),2.0))*sin(8*x); +} + +double M1(void *xp, void *yp) +{ + double x = *((double *) xp); + double y = *((double *) yp); + + return fabs(x - y); +} + +void S1(const gsl_rng * r, void *xp, double step_size) +{ + double old_x = *((double *) xp); + double new_x; + + double u = gsl_rng_uniform(r); + new_x = u * 2 * step_size - step_size + old_x; + + memcpy(xp, &new_x, sizeof(new_x)); +} + +void P1(void *xp) +{ + printf ("%12g", *((double *) xp)); +} + +int +main(void) +{ + const gsl_rng_type * T; + gsl_rng * r; + + double x_initial = 15.5; + + gsl_rng_env_setup(); + + T = gsl_rng_default; + r = gsl_rng_alloc(T); + + gsl_siman_solve(r, &x_initial, E1, S1, M1, P1, + NULL, NULL, NULL, + sizeof(double), params); + + gsl_rng_free (r); + return 0; +} diff --git a/gsl-2.5/doc/examples/siman.txt b/gsl-2.5/doc/examples/siman.txt new file mode 100644 index 00000000..e09eadeb --- /dev/null +++ b/gsl-2.5/doc/examples/siman.txt @@ -0,0 +1,2770 @@ +#-iter #-evals temperature position energy + 0 1001 0.008 1.3507 -0.868361 -0.872837 + 1 2001 0.00797607 1.37079 -0.871175 -0.87287 + 2 3001 0.00795222 1.38039 -0.864303 -0.87287 + 3 4001 0.00792843 1.36375 -0.87286 -0.872871 + 4 5001 0.00790472 0.61174 -0.845934 -0.872871 + 5 6001 0.00788107 1.40147 -0.831327 -0.872871 + 6 7001 0.0078575 1.35283 -0.869778 -0.872871 + 7 8001 0.007834 1.3638 -0.872858 -0.872871 + 8 9001 0.00781057 1.36943 -0.871721 -0.872871 + 9 10001 0.0077872 1.38445 -0.859842 -0.872871 + 10 11001 0.00776391 1.34438 -0.862599 -0.872871 + 11 12001 0.00774069 0.601995 -0.848928 -0.872871 + 12 13001 0.00771754 1.37681 -0.86748 -0.872871 + 13 14001 0.00769445 1.3528 -0.869761 -0.872871 + 14 15001 0.00767144 1.34345 -0.861549 -0.872871 + 15 16001 0.0076485 1.34485 -0.86311 -0.872871 + 16 17001 0.00762562 1.35505 -0.870971 -0.872871 + 17 18001 0.00760281 1.3606 -0.872685 -0.872871 + 18 19001 0.00758007 0.603733 -0.84879 -0.872871 + 19 20001 0.0075574 1.37855 -0.866026 -0.872871 + 20 21001 0.00753479 1.36968 -0.871629 -0.872871 + 21 22001 0.00751226 1.36059 -0.872684 -0.872871 + 22 23001 0.00748979 1.34605 -0.864345 -0.872871 + 23 24001 0.00746738 1.36367 -0.872863 -0.872871 + 24 25001 0.00744505 1.36304 -0.872871 -0.872871 + 25 26001 0.00742278 0.613129 -0.845066 -0.872871 + 26 27001 0.00740058 1.36855 -0.872021 -0.872871 + 27 28001 0.00737844 1.37322 -0.86993 -0.872871 + 28 29001 0.00735638 1.36499 -0.872771 -0.872871 + 29 30001 0.00733437 1.35743 -0.871925 -0.872871 + 30 31001 0.00731243 1.35513 -0.871008 -0.872871 + 31 32001 0.00729056 1.37978 -0.864895 -0.872871 + 32 33001 0.00726876 1.35101 -0.868582 -0.872871 + 33 34001 0.00724702 1.34567 -0.863959 -0.872871 + 34 35001 0.00722534 1.37749 -0.866933 -0.872871 + 35 36001 0.00720373 1.36842 -0.872061 -0.872871 + 36 37001 0.00718218 1.3651 -0.872759 -0.872871 + 37 38001 0.0071607 1.34729 -0.865547 -0.872871 + 38 39001 0.00713928 1.36695 -0.872448 -0.872871 + 39 40001 0.00711793 1.36643 -0.872556 -0.872871 + 40 41001 0.00709664 1.35418 -0.870539 -0.872871 + 41 42001 0.00707541 0.594794 -0.847683 -0.872871 + 42 43001 0.00705425 1.35379 -0.87033 -0.872871 + 43 44001 0.00703315 1.36793 -0.872204 -0.872871 + 44 45001 0.00701211 1.36258 -0.872863 -0.872871 + 45 46001 0.00699114 1.36767 -0.872274 -0.872871 + 46 47001 0.00697023 1.39137 -0.85014 -0.872871 + 47 48001 0.00694938 1.38381 -0.860609 -0.872871 + 48 49001 0.0069286 1.37191 -0.870645 -0.872871 + 49 50001 0.00690787 1.36438 -0.872826 -0.872871 + 50 51001 0.00688721 1.36643 -0.872556 -0.872871 + 51 52001 0.00686661 1.34557 -0.863864 -0.872871 + 52 53001 0.00684607 1.35271 -0.869704 -0.872871 + 53 54001 0.0068256 1.35461 -0.870755 -0.872871 + 54 55001 0.00680518 1.34705 -0.865317 -0.872871 + 55 56001 0.00678483 1.34555 -0.863844 -0.872871 + 56 57001 0.00676453 1.3544 -0.870651 -0.872871 + 57 58001 0.0067443 1.37319 -0.869947 -0.872871 + 58 59001 0.00672413 1.37289 -0.87012 -0.872871 + 59 60001 0.00670401 1.36561 -0.872692 -0.872871 + 60 61001 0.00668396 1.36889 -0.871909 -0.872871 + 61 62001 0.00666397 1.3717 -0.870748 -0.872871 + 62 63001 0.00664404 1.38076 -0.86394 -0.872871 + 63 64001 0.00662417 1.33705 -0.852963 -0.872871 + 64 65001 0.00660435 1.37052 -0.871291 -0.872871 + 65 66001 0.0065846 1.38734 -0.856103 -0.872871 + 66 67001 0.0065649 1.3718 -0.870701 -0.872871 + 67 68001 0.00654527 1.34896 -0.867008 -0.872871 + 68 69001 0.00652569 1.35488 -0.870887 -0.872871 + 69 70001 0.00650617 1.37107 -0.871048 -0.872871 + 70 71001 0.00648671 1.36726 -0.872376 -0.872871 + 71 72001 0.00646731 1.36707 -0.872421 -0.872871 + 72 73001 0.00644797 1.34789 -0.86609 -0.872871 + 73 74001 0.00642868 1.3705 -0.8713 -0.872871 + 74 75001 0.00640945 1.37711 -0.867239 -0.872871 + 75 76001 0.00639028 1.35185 -0.869158 -0.872871 + 76 77001 0.00637117 0.616273 -0.842692 -0.872871 + 77 78001 0.00635211 1.35411 -0.870502 -0.872871 + 78 79001 0.00633311 1.36347 -0.872868 -0.872871 + 79 80001 0.00631417 1.36476 -0.872794 -0.872871 + 80 81001 0.00629528 1.3997 -0.835005 -0.872871 + 81 82001 0.00627645 1.38277 -0.861803 -0.872871 + 82 83001 0.00625768 1.37485 -0.868909 -0.872871 + 83 84001 0.00623896 1.35295 -0.869852 -0.872871 + 84 85001 0.0062203 1.35708 -0.871806 -0.872871 + 85 86001 0.0062017 1.3662 -0.872597 -0.872871 + 86 87001 0.00618315 1.37209 -0.870549 -0.872871 + 87 88001 0.00616466 1.35771 -0.872016 -0.872871 + 88 89001 0.00614622 1.35419 -0.87054 -0.872871 + 89 90001 0.00612783 1.35902 -0.872379 -0.872871 + 90 91001 0.0061095 1.37822 -0.866319 -0.872871 + 91 92001 0.00609123 1.37957 -0.865102 -0.872871 + 92 93001 0.00607301 1.35634 -0.87153 -0.872871 + 93 94001 0.00605485 1.37988 -0.8648 -0.872871 + 94 95001 0.00603674 1.37147 -0.870862 -0.872871 + 95 96001 0.00601868 1.34329 -0.861361 -0.872871 + 96 97001 0.00600068 1.37891 -0.865705 -0.872871 + 97 98001 0.00598273 1.36987 -0.871556 -0.872871 + 98 99001 0.00596484 1.38152 -0.863159 -0.872871 + 99 100001 0.005947 1.37272 -0.870212 -0.872871 + 100 101001 0.00592921 1.38517 -0.858957 -0.872871 + 101 102001 0.00591147 1.36958 -0.871666 -0.872871 + 102 103001 0.00589379 1.35112 -0.868666 -0.872871 + 103 104001 0.00587616 1.35983 -0.872554 -0.872871 + 104 105001 0.00585859 1.34827 -0.866422 -0.872871 + 105 106001 0.00584106 1.36394 -0.872852 -0.872871 + 106 107001 0.00582359 1.35721 -0.87185 -0.872871 + 107 108001 0.00580618 1.37301 -0.870054 -0.872871 + 108 109001 0.00578881 1.35705 -0.871794 -0.872871 + 109 110001 0.00577149 1.36788 -0.872218 -0.872871 + 110 111001 0.00575423 1.35034 -0.8681 -0.872871 + 111 112001 0.00573702 1.38082 -0.86388 -0.872871 + 112 113001 0.00571986 1.3645 -0.872817 -0.872871 + 113 114001 0.00570275 1.36162 -0.872805 -0.872871 + 114 115001 0.0056857 1.37579 -0.868252 -0.872871 + 115 116001 0.00566869 1.37627 -0.867897 -0.872871 + 116 117001 0.00565173 1.37343 -0.869809 -0.872871 + 117 118001 0.00563483 1.36924 -0.871792 -0.872871 + 118 119001 0.00561798 1.36836 -0.87208 -0.872871 + 119 120001 0.00560117 1.37157 -0.87081 -0.872871 + 120 121001 0.00558442 1.35632 -0.871522 -0.872871 + 121 122001 0.00556772 1.35976 -0.872541 -0.872871 + 122 123001 0.00555106 1.38023 -0.864462 -0.872871 + 123 124001 0.00553446 1.38095 -0.863748 -0.872871 + 124 125001 0.00551791 1.36894 -0.871894 -0.872871 + 125 126001 0.0055014 1.3784 -0.866157 -0.872871 + 126 127001 0.00548495 1.37446 -0.869164 -0.872871 + 127 128001 0.00546854 1.33953 -0.856572 -0.872871 + 128 129001 0.00545218 1.36883 -0.871932 -0.872871 + 129 130001 0.00543588 1.35546 -0.871156 -0.872871 + 130 131001 0.00541962 1.35448 -0.870693 -0.872871 + 131 132001 0.00540341 1.38166 -0.863013 -0.872871 + 132 133001 0.00538725 1.36231 -0.872852 -0.872871 + 133 134001 0.00537113 1.35093 -0.868532 -0.872871 + 134 135001 0.00535507 1.36347 -0.872868 -0.872871 + 135 136001 0.00533905 1.36546 -0.872714 -0.872871 + 136 137001 0.00532308 1.3565 -0.871593 -0.872871 + 137 138001 0.00530716 1.36342 -0.872869 -0.872871 + 138 139001 0.00529129 1.37767 -0.866785 -0.872871 + 139 140001 0.00527546 1.35735 -0.8719 -0.872871 + 140 141001 0.00525968 1.35466 -0.870779 -0.872871 + 141 142001 0.00524395 1.36762 -0.872288 -0.872871 + 142 143001 0.00522826 1.34728 -0.865538 -0.872871 + 143 144001 0.00521263 1.36686 -0.872469 -0.872871 + 144 145001 0.00519703 1.3457 -0.863996 -0.872871 + 145 146001 0.00518149 1.36457 -0.872811 -0.872871 + 146 147001 0.00516599 1.36191 -0.872828 -0.872871 + 147 148001 0.00515054 1.35299 -0.869874 -0.872871 + 148 149001 0.00513514 1.37083 -0.871156 -0.872871 + 149 150001 0.00511978 1.36041 -0.872656 -0.872871 + 150 151001 0.00510446 1.36889 -0.87191 -0.872871 + 151 152001 0.0050892 1.35861 -0.872278 -0.872871 + 152 153001 0.00507397 1.37867 -0.865921 -0.872871 + 153 154001 0.0050588 1.35613 -0.871444 -0.872871 + 154 155001 0.00504367 1.36702 -0.872434 -0.872871 + 155 156001 0.00502858 1.36367 -0.872863 -0.872871 + 156 157001 0.00501354 1.33862 -0.855295 -0.872871 + 157 158001 0.00499854 1.36721 -0.872388 -0.872871 + 158 159001 0.00498359 1.37434 -0.869244 -0.872871 + 159 160001 0.00496869 1.3711 -0.871035 -0.872871 + 160 161001 0.00495383 1.37796 -0.866542 -0.872871 + 161 162001 0.00493901 1.35155 -0.868962 -0.872871 + 162 163001 0.00492424 1.36935 -0.871751 -0.872871 + 163 164001 0.00490951 1.37406 -0.869424 -0.872871 + 164 165001 0.00489482 1.37 -0.871508 -0.872871 + 165 166001 0.00488018 1.36735 -0.872355 -0.872871 + 166 167001 0.00486559 1.37326 -0.869909 -0.872871 + 167 168001 0.00485103 1.33658 -0.852239 -0.872871 + 168 169001 0.00483652 1.36361 -0.872864 -0.872871 + 169 170001 0.00482206 1.37817 -0.866362 -0.872871 + 170 171001 0.00480763 1.36476 -0.872794 -0.872871 + 171 172001 0.00479325 1.3458 -0.864091 -0.872871 + 172 173001 0.00477892 1.36734 -0.872358 -0.872871 + 173 174001 0.00476462 1.34898 -0.867027 -0.872871 + 174 175001 0.00475037 1.35619 -0.871468 -0.872871 + 175 176001 0.00473616 1.38367 -0.860772 -0.872871 + 176 177001 0.004722 1.36996 -0.871522 -0.872871 + 177 178001 0.00470787 1.34626 -0.864555 -0.872871 + 178 179001 0.00469379 1.34821 -0.866372 -0.872871 + 179 180001 0.00467975 1.38758 -0.855774 -0.872871 + 180 181001 0.00466576 1.34724 -0.865497 -0.872871 + 181 182001 0.0046518 1.35349 -0.870165 -0.872871 + 182 183001 0.00463789 1.36837 -0.872075 -0.872871 + 183 184001 0.00462402 1.37752 -0.866909 -0.872871 + 184 185001 0.00461018 1.35046 -0.868189 -0.872871 + 185 186001 0.0045964 1.36951 -0.871694 -0.872871 + 186 187001 0.00458265 1.35783 -0.872054 -0.872871 + 187 188001 0.00456894 1.37784 -0.866644 -0.872871 + 188 189001 0.00455527 1.34244 -0.860352 -0.872871 + 189 190001 0.00454165 1.3553 -0.871086 -0.872871 + 190 191001 0.00452807 1.37205 -0.87057 -0.872871 + 191 192001 0.00451452 1.35714 -0.871827 -0.872871 + 192 193001 0.00450102 1.36194 -0.87283 -0.872871 + 193 194001 0.00448756 1.36681 -0.872478 -0.872871 + 194 195001 0.00447413 1.35001 -0.867852 -0.872871 + 195 196001 0.00446075 1.36337 -0.87287 -0.872871 + 196 197001 0.00444741 1.36626 -0.872587 -0.872871 + 197 198001 0.00443411 1.36089 -0.872725 -0.872871 + 198 199001 0.00442084 1.36872 -0.871966 -0.872871 + 199 200001 0.00440762 1.36137 -0.872781 -0.872871 + 200 201001 0.00439444 1.37496 -0.868831 -0.872871 + 201 202001 0.00438129 1.37225 -0.870468 -0.872871 + 202 203001 0.00436819 1.35427 -0.870583 -0.872871 + 203 204001 0.00435512 1.36808 -0.87216 -0.872871 + 204 205001 0.0043421 1.35467 -0.870788 -0.872871 + 205 206001 0.00432911 1.37245 -0.870362 -0.872871 + 206 207001 0.00431616 1.37061 -0.871253 -0.872871 + 207 208001 0.00430325 1.35811 -0.872138 -0.872871 + 208 209001 0.00429038 1.35285 -0.869791 -0.872871 + 209 210001 0.00427755 1.35997 -0.872582 -0.872871 + 210 211001 0.00426475 1.36263 -0.872864 -0.872871 + 211 212001 0.004252 1.3777 -0.866761 -0.872871 + 212 213001 0.00423928 1.36066 -0.872695 -0.872871 + 213 214001 0.0042266 1.36446 -0.87282 -0.872871 + 214 215001 0.00421396 1.36274 -0.872867 -0.872871 + 215 216001 0.00420136 1.36139 -0.872783 -0.872871 + 216 217001 0.00418879 0.600455 -0.848907 -0.872871 + 217 218001 0.00417626 1.3655 -0.872708 -0.872871 + 218 219001 0.00416377 1.35761 -0.871983 -0.872871 + 219 220001 0.00415131 1.35207 -0.869303 -0.872871 + 220 221001 0.0041389 1.37308 -0.870012 -0.872871 + 221 222001 0.00412652 0.604398 -0.848692 -0.872871 + 222 223001 0.00411418 1.35878 -0.872322 -0.872871 + 223 224001 0.00410187 1.35973 -0.872536 -0.872871 + 224 225001 0.0040896 1.34116 -0.858756 -0.872871 + 225 226001 0.00407737 1.36912 -0.871832 -0.872871 + 226 227001 0.00406517 1.36083 -0.872718 -0.872871 + 227 228001 0.00405301 1.35755 -0.871965 -0.872871 + 228 229001 0.00404089 1.36452 -0.872816 -0.872871 + 229 230001 0.00402881 1.34913 -0.867153 -0.872871 + 230 231001 0.00401676 1.37163 -0.870783 -0.872871 + 231 232001 0.00400474 1.36975 -0.871601 -0.872871 + 232 233001 0.00399276 1.36343 -0.872869 -0.872871 + 233 234001 0.00398082 1.38015 -0.864542 -0.872871 + 234 235001 0.00396891 1.36349 -0.872867 -0.872871 + 235 236001 0.00395704 1.37645 -0.86776 -0.872871 + 236 237001 0.00394521 1.36781 -0.872236 -0.872871 + 237 238001 0.00393341 1.36205 -0.872837 -0.872871 + 238 239001 0.00392164 1.35652 -0.871598 -0.872871 + 239 240001 0.00390991 1.3626 -0.872863 -0.872871 + 240 241001 0.00389822 1.36858 -0.872011 -0.872871 + 241 242001 0.00388656 1.36371 -0.872861 -0.872871 + 242 243001 0.00387493 1.36043 -0.872659 -0.872871 + 243 244001 0.00386334 1.35087 -0.868488 -0.872871 + 244 245001 0.00385179 1.35152 -0.868938 -0.872871 + 245 246001 0.00384027 1.36402 -0.872848 -0.872871 + 246 247001 0.00382878 1.366 -0.872632 -0.872871 + 247 248001 0.00381733 1.36967 -0.871634 -0.872871 + 248 249001 0.00380591 1.36207 -0.872838 -0.872871 + 249 250001 0.00379453 1.36612 -0.872611 -0.872871 + 250 251001 0.00378318 1.36431 -0.872831 -0.872871 + 251 252001 0.00377186 1.36101 -0.872741 -0.872871 + 252 253001 0.00376058 1.3605 -0.872671 -0.872871 + 253 254001 0.00374933 1.36757 -0.872301 -0.872871 + 254 255001 0.00373812 1.35845 -0.872233 -0.872871 + 255 256001 0.00372694 1.36429 -0.872832 -0.872871 + 256 257001 0.00371579 1.34785 -0.866052 -0.872871 + 257 258001 0.00370468 1.36754 -0.872307 -0.872871 + 258 259001 0.00369359 1.36264 -0.872864 -0.872871 + 259 260001 0.00368255 1.37189 -0.870654 -0.872871 + 260 261001 0.00367153 1.37913 -0.865504 -0.872871 + 261 262001 0.00366055 1.3585 -0.872247 -0.872871 + 262 263001 0.0036496 1.35574 -0.871279 -0.872871 + 263 264001 0.00363869 1.35072 -0.86838 -0.872871 + 264 265001 0.0036278 1.36427 -0.872833 -0.872871 + 265 266001 0.00361695 1.3643 -0.872832 -0.872871 + 266 267001 0.00360613 1.35975 -0.87254 -0.872871 + 267 268001 0.00359535 1.35908 -0.872395 -0.872871 + 268 269001 0.00358459 1.36747 -0.872326 -0.872871 + 269 270001 0.00357387 1.36209 -0.87284 -0.872871 + 270 271001 0.00356318 1.3685 -0.872035 -0.872871 + 271 272001 0.00355252 1.36348 -0.872868 -0.872871 + 272 273001 0.0035419 1.36101 -0.87274 -0.872871 + 273 274001 0.00353131 1.36915 -0.871821 -0.872871 + 274 275001 0.00352074 1.36716 -0.8724 -0.872871 + 275 276001 0.00351021 1.36475 -0.872795 -0.872871 + 276 277001 0.00349971 1.36847 -0.872046 -0.872871 + 277 278001 0.00348925 1.3609 -0.872726 -0.872871 + 278 279001 0.00347881 1.36209 -0.87284 -0.872871 + 279 280001 0.0034684 1.36487 -0.872784 -0.872871 + 280 281001 0.00345803 1.36245 -0.872858 -0.872871 + 281 282001 0.00344769 1.34269 -0.860654 -0.872871 + 282 283001 0.00343737 1.36668 -0.872507 -0.872871 + 283 284001 0.00342709 1.35441 -0.870653 -0.872871 + 284 285001 0.00341684 1.34053 -0.857935 -0.872871 + 285 286001 0.00340662 1.36165 -0.872808 -0.872871 + 286 287001 0.00339643 1.37413 -0.86938 -0.872871 + 287 288001 0.00338627 1.36601 -0.87263 -0.872871 + 288 289001 0.00337615 1.35865 -0.872288 -0.872871 + 289 290001 0.00336605 1.36106 -0.872746 -0.872871 + 290 291001 0.00335598 1.37665 -0.867603 -0.872871 + 291 292001 0.00334594 1.35901 -0.872377 -0.872871 + 292 293001 0.00333593 1.35115 -0.868684 -0.872871 + 293 294001 0.00332596 1.36462 -0.872807 -0.872871 + 294 295001 0.00331601 1.36175 -0.872816 -0.872871 + 295 296001 0.00330609 1.36041 -0.872656 -0.872871 + 296 297001 0.0032962 1.36403 -0.872848 -0.872871 + 297 298001 0.00328634 1.35409 -0.870487 -0.872871 + 298 299001 0.00327651 1.36861 -0.872 -0.872871 + 299 300001 0.00326671 1.36051 -0.872671 -0.872871 + 300 301001 0.00325694 1.36871 -0.87197 -0.872871 + 301 302001 0.0032472 1.3616 -0.872803 -0.872871 + 302 303001 0.00323749 1.3669 -0.872458 -0.872871 + 303 304001 0.0032278 1.36647 -0.872548 -0.872871 + 304 305001 0.00321815 1.36554 -0.872703 -0.872871 + 305 306001 0.00320852 1.3593 -0.872445 -0.872871 + 306 307001 0.00319893 1.38291 -0.861649 -0.872871 + 307 308001 0.00318936 1.37155 -0.870824 -0.872871 + 308 309001 0.00317982 1.35609 -0.871427 -0.872871 + 309 310001 0.00317031 1.35635 -0.871533 -0.872871 + 310 311001 0.00316083 1.36805 -0.87217 -0.872871 + 311 312001 0.00315137 1.37938 -0.865279 -0.872871 + 312 313001 0.00314195 1.34956 -0.867498 -0.872871 + 313 314001 0.00313255 1.36637 -0.872567 -0.872871 + 314 315001 0.00312318 1.36095 -0.872733 -0.872871 + 315 316001 0.00311384 1.36249 -0.872859 -0.872871 + 316 317001 0.00310452 1.36363 -0.872864 -0.872871 + 317 318001 0.00309524 1.35647 -0.871581 -0.872871 + 318 319001 0.00308598 1.34571 -0.864007 -0.872871 + 319 320001 0.00307675 1.35461 -0.870758 -0.872871 + 320 321001 0.00306755 1.36393 -0.872853 -0.872871 + 321 322001 0.00305837 1.36118 -0.872761 -0.872871 + 322 323001 0.00304923 1.35368 -0.87027 -0.872871 + 323 324001 0.00304011 1.37103 -0.871068 -0.872871 + 324 325001 0.00303101 1.37314 -0.869978 -0.872871 + 325 326001 0.00302195 1.36879 -0.871942 -0.872871 + 326 327001 0.00301291 1.34159 -0.859304 -0.872871 + 327 328001 0.0030039 1.36714 -0.872406 -0.872871 + 328 329001 0.00299491 1.36767 -0.872273 -0.872871 + 329 330001 0.00298595 1.35963 -0.872516 -0.872871 + 330 331001 0.00297702 1.36921 -0.8718 -0.872871 + 331 332001 0.00296812 1.35815 -0.87215 -0.872871 + 332 333001 0.00295924 1.35581 -0.871313 -0.872871 + 333 334001 0.00295039 1.36319 -0.872871 -0.872871 + 334 335001 0.00294156 1.35885 -0.872339 -0.872871 + 335 336001 0.00293277 1.37292 -0.870101 -0.872871 + 336 337001 0.00292399 1.36824 -0.872114 -0.872871 + 337 338001 0.00291525 1.36924 -0.871791 -0.872871 + 338 339001 0.00290653 1.36079 -0.872712 -0.872871 + 339 340001 0.00289784 1.35188 -0.86918 -0.872871 + 340 341001 0.00288917 1.35845 -0.872233 -0.872871 + 341 342001 0.00288053 1.35184 -0.869155 -0.872871 + 342 343001 0.00287191 1.37069 -0.871219 -0.872871 + 343 344001 0.00286332 1.36534 -0.87273 -0.872871 + 344 345001 0.00285476 1.36339 -0.872869 -0.872871 + 345 346001 0.00284622 1.34957 -0.867503 -0.872871 + 346 347001 0.0028377 1.36435 -0.872828 -0.872871 + 347 348001 0.00282922 1.36561 -0.872693 -0.872871 + 348 349001 0.00282075 1.34822 -0.86638 -0.872871 + 349 350001 0.00281232 1.35894 -0.87236 -0.872871 + 350 351001 0.00280391 1.37104 -0.871063 -0.872871 + 351 352001 0.00279552 1.35846 -0.872235 -0.872871 + 352 353001 0.00278716 1.36966 -0.871638 -0.872871 + 353 354001 0.00277882 1.35813 -0.872145 -0.872871 + 354 355001 0.00277051 1.36289 -0.87287 -0.872871 + 355 356001 0.00276222 1.35734 -0.871895 -0.872871 + 356 357001 0.00275396 1.3575 -0.87195 -0.872871 + 357 358001 0.00274572 1.3584 -0.872221 -0.872871 + 358 359001 0.00273751 1.3591 -0.872398 -0.872871 + 359 360001 0.00272932 1.36881 -0.871937 -0.872871 + 360 361001 0.00272116 1.3541 -0.870494 -0.872871 + 361 362001 0.00271302 1.37306 -0.870025 -0.872871 + 362 363001 0.00270491 1.36662 -0.872519 -0.872871 + 363 364001 0.00269682 1.36343 -0.872869 -0.872871 + 364 365001 0.00268875 1.37472 -0.868994 -0.872871 + 365 366001 0.00268071 1.36041 -0.872656 -0.872871 + 366 367001 0.00267269 1.3676 -0.872293 -0.872871 + 367 368001 0.0026647 1.35906 -0.872391 -0.872871 + 368 369001 0.00265673 1.35233 -0.869467 -0.872871 + 369 370001 0.00264878 1.36062 -0.872689 -0.872871 + 370 371001 0.00264086 1.36286 -0.872869 -0.872871 + 371 372001 0.00263296 1.35729 -0.871879 -0.872871 + 372 373001 0.00262508 1.35858 -0.87227 -0.872871 + 373 374001 0.00261723 1.37122 -0.87098 -0.872871 + 374 375001 0.0026094 1.35803 -0.872113 -0.872871 + 375 376001 0.0026016 1.36793 -0.872204 -0.872871 + 376 377001 0.00259382 1.37147 -0.870863 -0.872871 + 377 378001 0.00258606 1.36211 -0.872841 -0.872871 + 378 379001 0.00257832 1.36328 -0.872871 -0.872871 + 379 380001 0.00257061 1.35359 -0.87022 -0.872871 + 380 381001 0.00256292 1.367 -0.872438 -0.872871 + 381 382001 0.00255526 1.35373 -0.870296 -0.872871 + 382 383001 0.00254761 1.36303 -0.872871 -0.872871 + 383 384001 0.00253999 1.3633 -0.87287 -0.872871 + 384 385001 0.0025324 1.36557 -0.872698 -0.872871 + 385 386001 0.00252482 1.36821 -0.872123 -0.872871 + 386 387001 0.00251727 1.36262 -0.872864 -0.872871 + 387 388001 0.00250974 1.36021 -0.872624 -0.872871 + 388 389001 0.00250223 1.3663 -0.87258 -0.872871 + 389 390001 0.00249475 1.3582 -0.872163 -0.872871 + 390 391001 0.00248729 1.36916 -0.871817 -0.872871 + 391 392001 0.00247985 1.3652 -0.872747 -0.872871 + 392 393001 0.00247243 1.35635 -0.871532 -0.872871 + 393 394001 0.00246504 1.3656 -0.872695 -0.872871 + 394 395001 0.00245766 1.37178 -0.870707 -0.872871 + 395 396001 0.00245031 1.367 -0.872436 -0.872871 + 396 397001 0.00244298 1.36534 -0.87273 -0.872871 + 397 398001 0.00243568 1.36641 -0.87256 -0.872871 + 398 399001 0.00242839 1.36502 -0.872768 -0.872871 + 399 400001 0.00242113 1.3695 -0.871696 -0.872871 + 400 401001 0.00241389 1.36242 -0.872857 -0.872871 + 401 402001 0.00240667 1.36178 -0.872818 -0.872871 + 402 403001 0.00239947 1.36304 -0.872871 -0.872871 + 403 404001 0.00239229 1.36687 -0.872466 -0.872871 + 404 405001 0.00238514 1.35853 -0.872255 -0.872871 + 405 406001 0.002378 1.35999 -0.872585 -0.872871 + 406 407001 0.00237089 1.36968 -0.871628 -0.872871 + 407 408001 0.0023638 1.35955 -0.872499 -0.872871 + 408 409001 0.00235673 1.36998 -0.871515 -0.872871 + 409 410001 0.00234968 1.36547 -0.872713 -0.872871 + 410 411001 0.00234265 1.35463 -0.870767 -0.872871 + 411 412001 0.00233564 1.36503 -0.872767 -0.872871 + 412 413001 0.00232866 1.36648 -0.872546 -0.872871 + 413 414001 0.00232169 1.36683 -0.872475 -0.872871 + 414 415001 0.00231475 1.36674 -0.872493 -0.872871 + 415 416001 0.00230782 1.35824 -0.872174 -0.872871 + 416 417001 0.00230092 1.36944 -0.87172 -0.872871 + 417 418001 0.00229404 1.36587 -0.872653 -0.872871 + 418 419001 0.00228718 1.36152 -0.872796 -0.872871 + 419 420001 0.00228034 1.37223 -0.87048 -0.872871 + 420 421001 0.00227352 1.35744 -0.87193 -0.872871 + 421 422001 0.00226672 1.36376 -0.87286 -0.872871 + 422 423001 0.00225994 1.35723 -0.871858 -0.872871 + 423 424001 0.00225318 1.36273 -0.872867 -0.872871 + 424 425001 0.00224644 1.34229 -0.860172 -0.872871 + 425 426001 0.00223972 1.36341 -0.872869 -0.872871 + 426 427001 0.00223302 1.35882 -0.872332 -0.872871 + 427 428001 0.00222634 1.3738 -0.869586 -0.872871 + 428 429001 0.00221968 1.36062 -0.872689 -0.872871 + 429 430001 0.00221304 1.36108 -0.872749 -0.872871 + 430 431001 0.00220642 1.35994 -0.872576 -0.872871 + 431 432001 0.00219982 1.36885 -0.871925 -0.872871 + 432 433001 0.00219324 1.36229 -0.872851 -0.872871 + 433 434001 0.00218668 1.35676 -0.871691 -0.872871 + 434 435001 0.00218014 1.35708 -0.871807 -0.872871 + 435 436001 0.00217362 1.36478 -0.872792 -0.872871 + 436 437001 0.00216712 1.36736 -0.872352 -0.872871 + 437 438001 0.00216064 1.36322 -0.872871 -0.872871 + 438 439001 0.00215418 1.35076 -0.868408 -0.872871 + 439 440001 0.00214773 1.37074 -0.871197 -0.872871 + 440 441001 0.00214131 1.3573 -0.871883 -0.872871 + 441 442001 0.0021349 1.36093 -0.872731 -0.872871 + 442 443001 0.00212852 1.35681 -0.87171 -0.872871 + 443 444001 0.00212215 1.35607 -0.871418 -0.872871 + 444 445001 0.00211581 1.37319 -0.86995 -0.872871 + 445 446001 0.00210948 1.36296 -0.87287 -0.872871 + 446 447001 0.00210317 1.36916 -0.87182 -0.872871 + 447 448001 0.00209688 1.38194 -0.862709 -0.872871 + 448 449001 0.00209061 1.37269 -0.870233 -0.872871 + 449 450001 0.00208435 1.36146 -0.872791 -0.872871 + 450 451001 0.00207812 1.35221 -0.869396 -0.872871 + 451 452001 0.0020719 1.36202 -0.872835 -0.872871 + 452 453001 0.0020657 1.3605 -0.87267 -0.872871 + 453 454001 0.00205953 1.35976 -0.87254 -0.872871 + 454 455001 0.00205337 1.36948 -0.871703 -0.872871 + 455 456001 0.00204722 1.35624 -0.871489 -0.872871 + 456 457001 0.0020411 1.36128 -0.872772 -0.872871 + 457 458001 0.002035 1.37114 -0.871017 -0.872871 + 458 459001 0.00202891 1.35722 -0.871853 -0.872871 + 459 460001 0.00202284 1.36133 -0.872777 -0.872871 + 460 461001 0.00201679 1.35651 -0.871594 -0.872871 + 461 462001 0.00201076 1.37495 -0.868842 -0.872871 + 462 463001 0.00200474 1.36967 -0.871632 -0.872871 + 463 464001 0.00199875 1.36456 -0.872812 -0.872871 + 464 465001 0.00199277 1.36506 -0.872763 -0.872871 + 465 466001 0.00198681 1.3579 -0.872076 -0.872871 + 466 467001 0.00198087 1.35926 -0.872436 -0.872871 + 467 468001 0.00197494 1.3684 -0.872068 -0.872871 + 468 469001 0.00196903 1.36255 -0.872861 -0.872871 + 469 470001 0.00196315 1.3599 -0.872568 -0.872871 + 470 471001 0.00195727 1.37334 -0.86986 -0.872871 + 471 472001 0.00195142 1.35974 -0.872536 -0.872871 + 472 473001 0.00194558 1.35682 -0.871711 -0.872871 + 473 474001 0.00193976 1.367 -0.872437 -0.872871 + 474 475001 0.00193396 1.35525 -0.871063 -0.872871 + 475 476001 0.00192818 1.36734 -0.872357 -0.872871 + 476 477001 0.00192241 1.3531 -0.86994 -0.872871 + 477 478001 0.00191666 1.36192 -0.872829 -0.872871 + 478 479001 0.00191093 1.35485 -0.870875 -0.872871 + 479 480001 0.00190521 1.35417 -0.870532 -0.872871 + 480 481001 0.00189951 1.36015 -0.872613 -0.872871 + 481 482001 0.00189383 1.36068 -0.872697 -0.872871 + 482 483001 0.00188817 1.37158 -0.870808 -0.872871 + 483 484001 0.00188252 1.36887 -0.871919 -0.872871 + 484 485001 0.00187689 1.35996 -0.872579 -0.872871 + 485 486001 0.00187127 1.37107 -0.871049 -0.872871 + 486 487001 0.00186568 1.36997 -0.871517 -0.872871 + 487 488001 0.0018601 1.36937 -0.871743 -0.872871 + 488 489001 0.00185453 1.36417 -0.87284 -0.872871 + 489 490001 0.00184899 1.36969 -0.871627 -0.872871 + 490 491001 0.00184346 1.3664 -0.872562 -0.872871 + 491 492001 0.00183794 1.35847 -0.872239 -0.872871 + 492 493001 0.00183244 1.35724 -0.87186 -0.872871 + 493 494001 0.00182696 1.36995 -0.871525 -0.872871 + 494 495001 0.0018215 1.36546 -0.872714 -0.872871 + 495 496001 0.00181605 1.36061 -0.872686 -0.872871 + 496 497001 0.00181062 1.36768 -0.872272 -0.872871 + 497 498001 0.0018052 1.36436 -0.872827 -0.872871 + 498 499001 0.0017998 1.36797 -0.872193 -0.872871 + 499 500001 0.00179442 1.35838 -0.872215 -0.872871 + 500 501001 0.00178905 1.35469 -0.870796 -0.872871 + 501 502001 0.0017837 1.3623 -0.872851 -0.872871 + 502 503001 0.00177837 1.37334 -0.869861 -0.872871 + 503 504001 0.00177305 1.35608 -0.871426 -0.872871 + 504 505001 0.00176775 1.36054 -0.872676 -0.872871 + 505 506001 0.00176246 1.36229 -0.872851 -0.872871 + 506 507001 0.00175719 1.35876 -0.872316 -0.872871 + 507 508001 0.00175193 1.3588 -0.872326 -0.872871 + 508 509001 0.00174669 1.36077 -0.87271 -0.872871 + 509 510001 0.00174147 1.35534 -0.871104 -0.872871 + 510 511001 0.00173626 1.36767 -0.872275 -0.872871 + 511 512001 0.00173106 1.36506 -0.872763 -0.872871 + 512 513001 0.00172589 1.37553 -0.868436 -0.872871 + 513 514001 0.00172072 1.36152 -0.872796 -0.872871 + 514 515001 0.00171558 1.36445 -0.872821 -0.872871 + 515 516001 0.00171045 1.37093 -0.87111 -0.872871 + 516 517001 0.00170533 1.36191 -0.872828 -0.872871 + 517 518001 0.00170023 1.3592 -0.872421 -0.872871 + 518 519001 0.00169514 1.37028 -0.871394 -0.872871 + 519 520001 0.00169007 1.36369 -0.872862 -0.872871 + 520 521001 0.00168502 1.36131 -0.872775 -0.872871 + 521 522001 0.00167998 1.3701 -0.871467 -0.872871 + 522 523001 0.00167495 1.3617 -0.872812 -0.872871 + 523 524001 0.00166994 1.364 -0.872849 -0.872871 + 524 525001 0.00166495 1.36182 -0.872822 -0.872871 + 525 526001 0.00165997 1.35741 -0.871921 -0.872871 + 526 527001 0.001655 1.36783 -0.872232 -0.872871 + 527 528001 0.00165005 1.37589 -0.868174 -0.872871 + 528 529001 0.00164512 1.36191 -0.872828 -0.872871 + 529 530001 0.0016402 1.36505 -0.872765 -0.872871 + 530 531001 0.00163529 1.36189 -0.872827 -0.872871 + 531 532001 0.0016304 1.37241 -0.870383 -0.872871 + 532 533001 0.00162552 1.36016 -0.872614 -0.872871 + 533 534001 0.00162066 1.35598 -0.871383 -0.872871 + 534 535001 0.00161582 1.36102 -0.872742 -0.872871 + 535 536001 0.00161098 1.36105 -0.872745 -0.872871 + 536 537001 0.00160616 1.37132 -0.870931 -0.872871 + 537 538001 0.00160136 1.36178 -0.872818 -0.872871 + 538 539001 0.00159657 1.36101 -0.872741 -0.872871 + 539 540001 0.00159179 1.3514 -0.868857 -0.872871 + 540 541001 0.00158703 1.35059 -0.868281 -0.872871 + 541 542001 0.00158229 1.36146 -0.87279 -0.872871 + 542 543001 0.00157755 1.3644 -0.872825 -0.872871 + 543 544001 0.00157284 1.36709 -0.872418 -0.872871 + 544 545001 0.00156813 1.36591 -0.872647 -0.872871 + 545 546001 0.00156344 1.35839 -0.872216 -0.872871 + 546 547001 0.00155876 1.3643 -0.872831 -0.872871 + 547 548001 0.0015541 1.36053 -0.872675 -0.872871 + 548 549001 0.00154945 1.3635 -0.872867 -0.872871 + 549 550001 0.00154482 1.35505 -0.870968 -0.872871 + 550 551001 0.0015402 1.36611 -0.872613 -0.872871 + 551 552001 0.00153559 1.35797 -0.872096 -0.872871 + 552 553001 0.001531 1.35848 -0.872241 -0.872871 + 553 554001 0.00152642 1.37049 -0.871304 -0.872871 + 554 555001 0.00152185 1.36536 -0.872727 -0.872871 + 555 556001 0.0015173 1.3616 -0.872803 -0.872871 + 556 557001 0.00151276 1.3575 -0.871948 -0.872871 + 557 558001 0.00150824 1.3654 -0.872722 -0.872871 + 558 559001 0.00150373 1.36713 -0.872406 -0.872871 + 559 560001 0.00149923 1.36467 -0.872802 -0.872871 + 560 561001 0.00149475 1.37246 -0.870359 -0.872871 + 561 562001 0.00149028 1.36 -0.872587 -0.872871 + 562 563001 0.00148582 1.36101 -0.87274 -0.872871 + 563 564001 0.00148137 1.36336 -0.87287 -0.872871 + 564 565001 0.00147694 1.37169 -0.870753 -0.872871 + 565 566001 0.00147253 1.36314 -0.872871 -0.872871 + 566 567001 0.00146812 1.36512 -0.872757 -0.872871 + 567 568001 0.00146373 1.36534 -0.87273 -0.872871 + 568 569001 0.00145935 1.36425 -0.872835 -0.872871 + 569 570001 0.00145499 1.36591 -0.872647 -0.872871 + 570 571001 0.00145064 1.36356 -0.872866 -0.872871 + 571 572001 0.0014463 1.36166 -0.872808 -0.872871 + 572 573001 0.00144197 1.37086 -0.871142 -0.872871 + 573 574001 0.00143766 1.36407 -0.872846 -0.872871 + 574 575001 0.00143336 1.36241 -0.872856 -0.872871 + 575 576001 0.00142907 1.36366 -0.872863 -0.872871 + 576 577001 0.0014248 1.36099 -0.872738 -0.872871 + 577 578001 0.00142053 1.36255 -0.872862 -0.872871 + 578 579001 0.00141629 1.36556 -0.872701 -0.872871 + 579 580001 0.00141205 1.36467 -0.872803 -0.872871 + 580 581001 0.00140783 1.36248 -0.872859 -0.872871 + 581 582001 0.00140361 1.36518 -0.87275 -0.872871 + 582 583001 0.00139942 1.36438 -0.872826 -0.872871 + 583 584001 0.00139523 1.35489 -0.870893 -0.872871 + 584 585001 0.00139106 1.37375 -0.869615 -0.872871 + 585 586001 0.0013869 1.36305 -0.872871 -0.872871 + 586 587001 0.00138275 1.3626 -0.872863 -0.872871 + 587 588001 0.00137861 1.35603 -0.871402 -0.872871 + 588 589001 0.00137449 1.3666 -0.872523 -0.872871 + 589 590001 0.00137038 1.3674 -0.872344 -0.872871 + 590 591001 0.00136628 1.36803 -0.872176 -0.872871 + 591 592001 0.00136219 1.35847 -0.872241 -0.872871 + 592 593001 0.00135812 1.36606 -0.872623 -0.872871 + 593 594001 0.00135406 1.36121 -0.872765 -0.872871 + 594 595001 0.00135001 1.36789 -0.872214 -0.872871 + 595 596001 0.00134597 1.36256 -0.872862 -0.872871 + 596 597001 0.00134194 1.37111 -0.871032 -0.872871 + 597 598001 0.00133793 1.36379 -0.872859 -0.872871 + 598 599001 0.00133393 1.35218 -0.869374 -0.872871 + 599 600001 0.00132994 1.35903 -0.872382 -0.872871 + 600 601001 0.00132596 1.36535 -0.872729 -0.872871 + 601 602001 0.00132199 1.35313 -0.869955 -0.872871 + 602 603001 0.00131804 1.36631 -0.872578 -0.872871 + 603 604001 0.0013141 1.35686 -0.871726 -0.872871 + 604 605001 0.00131017 1.35392 -0.870401 -0.872871 + 605 606001 0.00130625 1.35453 -0.870717 -0.872871 + 606 607001 0.00130234 1.3581 -0.872136 -0.872871 + 607 608001 0.00129845 1.36816 -0.87214 -0.872871 + 608 609001 0.00129456 1.36221 -0.872847 -0.872871 + 609 610001 0.00129069 1.36332 -0.87287 -0.872871 + 610 611001 0.00128683 1.3673 -0.872367 -0.872871 + 611 612001 0.00128298 1.36123 -0.872767 -0.872871 + 612 613001 0.00127914 1.36295 -0.87287 -0.872871 + 613 614001 0.00127532 1.35909 -0.872396 -0.872871 + 614 615001 0.0012715 1.36361 -0.872864 -0.872871 + 615 616001 0.0012677 1.37071 -0.871209 -0.872871 + 616 617001 0.00126391 1.36319 -0.872871 -0.872871 + 617 618001 0.00126013 1.36313 -0.872871 -0.872871 + 618 619001 0.00125636 1.36924 -0.871791 -0.872871 + 619 620001 0.0012526 1.35652 -0.871598 -0.872871 + 620 621001 0.00124885 1.36422 -0.872837 -0.872871 + 621 622001 0.00124512 1.36763 -0.872284 -0.872871 + 622 623001 0.00124139 1.37126 -0.870962 -0.872871 + 623 624001 0.00123768 1.36319 -0.872871 -0.872871 + 624 625001 0.00123398 1.36594 -0.872642 -0.872871 + 625 626001 0.00123029 1.36094 -0.872732 -0.872871 + 626 627001 0.00122661 1.35974 -0.872537 -0.872871 + 627 628001 0.00122294 1.36172 -0.872813 -0.872871 + 628 629001 0.00121928 1.36462 -0.872807 -0.872871 + 629 630001 0.00121563 1.36037 -0.87265 -0.872871 + 630 631001 0.001212 1.35818 -0.872157 -0.872871 + 631 632001 0.00120837 1.35545 -0.871154 -0.872871 + 632 633001 0.00120476 1.35413 -0.87051 -0.872871 + 633 634001 0.00120116 1.35937 -0.87246 -0.872871 + 634 635001 0.00119756 1.35932 -0.872449 -0.872871 + 635 636001 0.00119398 1.36742 -0.872338 -0.872871 + 636 637001 0.00119041 1.35626 -0.871498 -0.872871 + 637 638001 0.00118685 1.36757 -0.872299 -0.872871 + 638 639001 0.0011833 1.36882 -0.871932 -0.872871 + 639 640001 0.00117976 1.35882 -0.872332 -0.872871 + 640 641001 0.00117623 1.35949 -0.872486 -0.872871 + 641 642001 0.00117271 1.36847 -0.872044 -0.872871 + 642 643001 0.00116921 1.36486 -0.872784 -0.872871 + 643 644001 0.00116571 1.36733 -0.872361 -0.872871 + 644 645001 0.00116222 1.35384 -0.870357 -0.872871 + 645 646001 0.00115875 1.36427 -0.872833 -0.872871 + 646 647001 0.00115528 1.36758 -0.872296 -0.872871 + 647 648001 0.00115182 1.36076 -0.872708 -0.872871 + 648 649001 0.00114838 1.36452 -0.872815 -0.872871 + 649 650001 0.00114494 1.35918 -0.872418 -0.872871 + 650 651001 0.00114152 1.36823 -0.872119 -0.872871 + 651 652001 0.00113811 1.36347 -0.872868 -0.872871 + 652 653001 0.0011347 1.3697 -0.871621 -0.872871 + 653 654001 0.00113131 1.3619 -0.872827 -0.872871 + 654 655001 0.00112792 1.3665 -0.872541 -0.872871 + 655 656001 0.00112455 1.36215 -0.872843 -0.872871 + 656 657001 0.00112119 1.36463 -0.872806 -0.872871 + 657 658001 0.00111783 1.36283 -0.872869 -0.872871 + 658 659001 0.00111449 1.35811 -0.872138 -0.872871 + 659 660001 0.00111116 1.36891 -0.871904 -0.872871 + 660 661001 0.00110783 1.35995 -0.872577 -0.872871 + 661 662001 0.00110452 1.36238 -0.872855 -0.872871 + 662 663001 0.00110122 1.36286 -0.872869 -0.872871 + 663 664001 0.00109792 1.36694 -0.872449 -0.872871 + 664 665001 0.00109464 1.36139 -0.872783 -0.872871 + 665 666001 0.00109136 1.3604 -0.872655 -0.872871 + 666 667001 0.0010881 1.35803 -0.872114 -0.872871 + 667 668001 0.00108484 1.36366 -0.872863 -0.872871 + 668 669001 0.0010816 1.36379 -0.872859 -0.872871 + 669 670001 0.00107837 1.36165 -0.872807 -0.872871 + 670 671001 0.00107514 1.36086 -0.872721 -0.872871 + 671 672001 0.00107192 1.36679 -0.872484 -0.872871 + 672 673001 0.00106872 1.35909 -0.872397 -0.872871 + 673 674001 0.00106552 1.36562 -0.872692 -0.872871 + 674 675001 0.00106233 1.37245 -0.870359 -0.872871 + 675 676001 0.00105916 1.3625 -0.87286 -0.872871 + 676 677001 0.00105599 1.3582 -0.872163 -0.872871 + 677 678001 0.00105283 1.36365 -0.872864 -0.872871 + 678 679001 0.00104968 1.35899 -0.872372 -0.872871 + 679 680001 0.00104654 1.36224 -0.872848 -0.872871 + 680 681001 0.00104341 1.36048 -0.872667 -0.872871 + 681 682001 0.00104029 1.36562 -0.872691 -0.872871 + 682 683001 0.00103718 1.36453 -0.872814 -0.872871 + 683 684001 0.00103408 1.35992 -0.872572 -0.872871 + 684 685001 0.00103098 1.36693 -0.872453 -0.872871 + 685 686001 0.0010279 1.36254 -0.872861 -0.872871 + 686 687001 0.00102483 1.36824 -0.872115 -0.872871 + 687 688001 0.00102176 1.35755 -0.871965 -0.872871 + 688 689001 0.0010187 1.36406 -0.872846 -0.872871 + 689 690001 0.00101566 1.36389 -0.872854 -0.872871 + 690 691001 0.00101262 1.36461 -0.872808 -0.872871 + 691 692001 0.00100959 1.35533 -0.871099 -0.872871 + 692 693001 0.00100657 1.36532 -0.872731 -0.872871 + 693 694001 0.00100356 1.36156 -0.8728 -0.872871 + 694 695001 0.00100056 1.36411 -0.872844 -0.872871 + 695 696001 0.000997566 1.35819 -0.87216 -0.872871 + 696 697001 0.000994582 1.36309 -0.872871 -0.872871 + 697 698001 0.000991607 1.36442 -0.872823 -0.872871 + 698 699001 0.000988641 1.36261 -0.872863 -0.872871 + 699 700001 0.000985684 1.36147 -0.872791 -0.872871 + 700 701001 0.000982736 1.35507 -0.870978 -0.872871 + 701 702001 0.000979797 1.36101 -0.872741 -0.872871 + 702 703001 0.000976866 1.36711 -0.872413 -0.872871 + 703 704001 0.000973944 1.36502 -0.872767 -0.872871 + 704 705001 0.000971031 1.36334 -0.87287 -0.872871 + 705 706001 0.000968127 1.36524 -0.872742 -0.872871 + 706 707001 0.000965231 1.36328 -0.872871 -0.872871 + 707 708001 0.000962344 1.35354 -0.870189 -0.872871 + 708 709001 0.000959466 1.36114 -0.872757 -0.872871 + 709 710001 0.000956596 1.3637 -0.872862 -0.872871 + 710 711001 0.000953735 1.35535 -0.871109 -0.872871 + 711 712001 0.000950882 1.36995 -0.871525 -0.872871 + 712 713001 0.000948038 1.36615 -0.872606 -0.872871 + 713 714001 0.000945202 1.36559 -0.872696 -0.872871 + 714 715001 0.000942375 1.36517 -0.872751 -0.872871 + 715 716001 0.000939556 1.371 -0.87108 -0.872871 + 716 717001 0.000936746 1.3632 -0.872871 -0.872871 + 717 718001 0.000933944 1.35744 -0.871928 -0.872871 + 718 719001 0.000931151 1.36004 -0.872593 -0.872871 + 719 720001 0.000928366 1.36458 -0.87281 -0.872871 + 720 721001 0.000925589 1.36931 -0.871766 -0.872871 + 721 722001 0.000922821 1.36014 -0.872611 -0.872871 + 722 723001 0.00092006 1.35872 -0.872304 -0.872871 + 723 724001 0.000917308 1.36377 -0.872859 -0.872871 + 724 725001 0.000914565 1.35852 -0.872252 -0.872871 + 725 726001 0.000911829 1.36911 -0.871837 -0.872871 + 726 727001 0.000909102 1.36687 -0.872467 -0.872871 + 727 728001 0.000906383 1.35309 -0.869931 -0.872871 + 728 729001 0.000903672 1.37063 -0.871242 -0.872871 + 729 730001 0.000900969 1.36644 -0.872554 -0.872871 + 730 731001 0.000898274 1.36738 -0.872349 -0.872871 + 731 732001 0.000895587 1.36226 -0.872849 -0.872871 + 732 733001 0.000892909 1.36152 -0.872796 -0.872871 + 733 734001 0.000890238 1.36796 -0.872196 -0.872871 + 734 735001 0.000887575 1.36851 -0.872034 -0.872871 + 735 736001 0.00088492 1.36574 -0.872674 -0.872871 + 736 737001 0.000882274 1.35826 -0.872181 -0.872871 + 737 738001 0.000879635 1.35813 -0.872145 -0.872871 + 738 739001 0.000877004 1.36273 -0.872867 -0.872871 + 739 740001 0.000874381 1.36833 -0.872089 -0.872871 + 740 741001 0.000871765 1.35915 -0.87241 -0.872871 + 741 742001 0.000869158 1.35948 -0.872483 -0.872871 + 742 743001 0.000866558 1.35829 -0.872188 -0.872871 + 743 744001 0.000863966 1.36289 -0.87287 -0.872871 + 744 745001 0.000861382 1.36202 -0.872836 -0.872871 + 745 746001 0.000858806 1.36155 -0.872798 -0.872871 + 746 747001 0.000856237 1.37042 -0.871334 -0.872871 + 747 748001 0.000853676 1.36189 -0.872826 -0.872871 + 748 749001 0.000851123 1.36451 -0.872816 -0.872871 + 749 750001 0.000848577 1.36106 -0.872746 -0.872871 + 750 751001 0.000846039 1.36355 -0.872866 -0.872871 + 751 752001 0.000843508 1.36382 -0.872858 -0.872871 + 752 753001 0.000840985 1.36166 -0.872808 -0.872871 + 753 754001 0.00083847 1.36154 -0.872797 -0.872871 + 754 755001 0.000835962 1.35798 -0.872101 -0.872871 + 755 756001 0.000833462 1.36525 -0.872741 -0.872871 + 756 757001 0.000830969 1.36833 -0.872088 -0.872871 + 757 758001 0.000828483 1.36298 -0.872871 -0.872871 + 758 759001 0.000826005 1.36331 -0.87287 -0.872871 + 759 760001 0.000823535 1.36146 -0.87279 -0.872871 + 760 761001 0.000821071 1.3542 -0.870547 -0.872871 + 761 762001 0.000818615 1.36001 -0.872588 -0.872871 + 762 763001 0.000816167 1.35866 -0.872289 -0.872871 + 763 764001 0.000813726 1.35784 -0.872056 -0.872871 + 764 765001 0.000811292 1.35984 -0.872556 -0.872871 + 765 766001 0.000808865 1.36139 -0.872783 -0.872871 + 766 767001 0.000806446 1.3684 -0.872068 -0.872871 + 767 768001 0.000804034 1.36663 -0.872516 -0.872871 + 768 769001 0.000801629 1.36485 -0.872786 -0.872871 + 769 770001 0.000799231 1.36366 -0.872863 -0.872871 + 770 771001 0.000796841 1.36585 -0.872656 -0.872871 + 771 772001 0.000794457 1.36478 -0.872792 -0.872871 + 772 773001 0.000792081 1.36449 -0.872818 -0.872871 + 773 774001 0.000789712 1.3625 -0.87286 -0.872871 + 774 775001 0.00078735 1.35714 -0.871826 -0.872871 + 775 776001 0.000784995 1.35575 -0.871287 -0.872871 + 776 777001 0.000782647 1.36554 -0.872702 -0.872871 + 777 778001 0.000780306 1.36192 -0.872828 -0.872871 + 778 779001 0.000777972 1.36058 -0.872682 -0.872871 + 779 780001 0.000775645 1.36158 -0.872802 -0.872871 + 780 781001 0.000773325 1.35714 -0.871828 -0.872871 + 781 782001 0.000771012 1.35913 -0.872406 -0.872871 + 782 783001 0.000768706 1.37067 -0.871226 -0.872871 + 783 784001 0.000766407 1.36358 -0.872865 -0.872871 + 784 785001 0.000764115 1.37209 -0.87055 -0.872871 + 785 786001 0.000761829 1.36342 -0.872869 -0.872871 + 786 787001 0.00075955 1.36347 -0.872868 -0.872871 + 787 788001 0.000757279 1.36002 -0.87259 -0.872871 + 788 789001 0.000755014 1.36031 -0.87264 -0.872871 + 789 790001 0.000752755 1.3633 -0.87287 -0.872871 + 790 791001 0.000750504 1.35722 -0.871855 -0.872871 + 791 792001 0.000748259 1.36779 -0.872242 -0.872871 + 792 793001 0.000746021 1.36131 -0.872775 -0.872871 + 793 794001 0.00074379 1.35909 -0.872396 -0.872871 + 794 795001 0.000741565 1.36358 -0.872865 -0.872871 + 795 796001 0.000739347 1.36943 -0.871724 -0.872871 + 796 797001 0.000737135 1.35745 -0.871933 -0.872871 + 797 798001 0.000734931 1.36768 -0.872271 -0.872871 + 798 799001 0.000732732 1.35962 -0.872513 -0.872871 + 799 800001 0.000730541 1.36914 -0.871825 -0.872871 + 800 801001 0.000728356 1.36705 -0.872426 -0.872871 + 801 802001 0.000726177 1.36543 -0.872717 -0.872871 + 802 803001 0.000724005 1.3659 -0.872649 -0.872871 + 803 804001 0.00072184 1.35906 -0.87239 -0.872871 + 804 805001 0.000719681 1.36344 -0.872868 -0.872871 + 805 806001 0.000717528 1.36602 -0.872628 -0.872871 + 806 807001 0.000715382 1.36774 -0.872256 -0.872871 + 807 808001 0.000713242 1.3632 -0.872871 -0.872871 + 808 809001 0.000711109 1.36476 -0.872794 -0.872871 + 809 810001 0.000708982 1.36415 -0.872841 -0.872871 + 810 811001 0.000706861 1.36339 -0.872869 -0.872871 + 811 812001 0.000704747 1.36324 -0.872871 -0.872871 + 812 813001 0.000702639 1.36142 -0.872786 -0.872871 + 813 814001 0.000700538 1.35976 -0.872541 -0.872871 + 814 815001 0.000698442 1.36461 -0.872808 -0.872871 + 815 816001 0.000696353 1.3652 -0.872747 -0.872871 + 816 817001 0.00069427 1.35712 -0.871819 -0.872871 + 817 818001 0.000692194 1.36273 -0.872867 -0.872871 + 818 819001 0.000690123 1.36259 -0.872863 -0.872871 + 819 820001 0.000688059 1.36756 -0.872303 -0.872871 + 820 821001 0.000686001 1.36319 -0.872871 -0.872871 + 821 822001 0.000683949 1.36672 -0.872497 -0.872871 + 822 823001 0.000681904 1.36774 -0.872257 -0.872871 + 823 824001 0.000679864 1.36625 -0.872588 -0.872871 + 824 825001 0.000677831 1.35879 -0.872323 -0.872871 + 825 826001 0.000675803 1.35983 -0.872554 -0.872871 + 826 827001 0.000673782 1.36623 -0.872592 -0.872871 + 827 828001 0.000671767 1.36211 -0.872841 -0.872871 + 828 829001 0.000669757 1.36048 -0.872667 -0.872871 + 829 830001 0.000667754 1.36969 -0.871627 -0.872871 + 830 831001 0.000665757 1.36714 -0.872406 -0.872871 + 831 832001 0.000663765 1.35992 -0.872572 -0.872871 + 832 833001 0.00066178 1.36301 -0.872871 -0.872871 + 833 834001 0.000659801 1.36734 -0.872358 -0.872871 + 834 835001 0.000657827 1.36353 -0.872867 -0.872871 + 835 836001 0.00065586 1.36274 -0.872867 -0.872871 + 836 837001 0.000653898 1.36681 -0.872479 -0.872871 + 837 838001 0.000651942 1.36606 -0.872622 -0.872871 + 838 839001 0.000649992 1.36215 -0.872843 -0.872871 + 839 840001 0.000648048 1.36247 -0.872859 -0.872871 + 840 841001 0.00064611 1.36049 -0.872668 -0.872871 + 841 842001 0.000644177 1.36752 -0.872312 -0.872871 + 842 843001 0.00064225 1.35992 -0.872571 -0.872871 + 843 844001 0.000640329 1.36357 -0.872866 -0.872871 + 844 845001 0.000638414 1.36056 -0.872679 -0.872871 + 845 846001 0.000636505 1.35748 -0.871941 -0.872871 + 846 847001 0.000634601 1.36902 -0.871867 -0.872871 + 847 848001 0.000632703 1.36376 -0.87286 -0.872871 + 848 849001 0.00063081 1.37013 -0.871455 -0.872871 + 849 850001 0.000628924 1.36757 -0.872301 -0.872871 + 850 851001 0.000627042 1.36152 -0.872796 -0.872871 + 851 852001 0.000625167 1.36131 -0.872774 -0.872871 + 852 853001 0.000623297 1.3603 -0.872638 -0.872871 + 853 854001 0.000621433 1.35714 -0.871827 -0.872871 + 854 855001 0.000619574 1.36582 -0.872661 -0.872871 + 855 856001 0.000617721 1.36807 -0.872164 -0.872871 + 856 857001 0.000615873 1.36099 -0.872738 -0.872871 + 857 858001 0.000614031 1.3713 -0.870942 -0.872871 + 858 859001 0.000612195 1.36258 -0.872862 -0.872871 + 859 860001 0.000610363 1.35747 -0.87194 -0.872871 + 860 861001 0.000608538 1.36144 -0.872788 -0.872871 + 861 862001 0.000606718 1.35959 -0.872507 -0.872871 + 862 863001 0.000604903 1.35959 -0.872507 -0.872871 + 863 864001 0.000603094 1.3621 -0.87284 -0.872871 + 864 865001 0.00060129 1.36425 -0.872835 -0.872871 + 865 866001 0.000599491 1.35953 -0.872494 -0.872871 + 866 867001 0.000597698 1.35934 -0.872455 -0.872871 + 867 868001 0.000595911 1.36376 -0.87286 -0.872871 + 868 869001 0.000594128 1.36274 -0.872867 -0.872871 + 869 870001 0.000592351 1.36081 -0.872715 -0.872871 + 870 871001 0.000590579 1.36426 -0.872834 -0.872871 + 871 872001 0.000588813 1.3656 -0.872695 -0.872871 + 872 873001 0.000587052 1.36599 -0.872634 -0.872871 + 873 874001 0.000585296 1.37014 -0.871448 -0.872871 + 874 875001 0.000583545 1.36366 -0.872863 -0.872871 + 875 876001 0.0005818 1.36094 -0.872732 -0.872871 + 876 877001 0.00058006 1.36571 -0.872679 -0.872871 + 877 878001 0.000578325 1.36001 -0.872588 -0.872871 + 878 879001 0.000576595 1.36311 -0.872871 -0.872871 + 879 880001 0.00057487 1.35965 -0.872518 -0.872871 + 880 881001 0.000573151 1.36703 -0.87243 -0.872871 + 881 882001 0.000571437 1.36317 -0.872871 -0.872871 + 882 883001 0.000569727 1.36463 -0.872806 -0.872871 + 883 884001 0.000568023 1.36304 -0.872871 -0.872871 + 884 885001 0.000566324 1.36445 -0.87282 -0.872871 + 885 886001 0.00056463 1.3674 -0.872343 -0.872871 + 886 887001 0.000562942 1.36924 -0.87179 -0.872871 + 887 888001 0.000561258 1.36122 -0.872766 -0.872871 + 888 889001 0.000559579 1.36427 -0.872833 -0.872871 + 889 890001 0.000557905 1.36101 -0.872741 -0.872871 + 890 891001 0.000556237 1.35674 -0.871681 -0.872871 + 891 892001 0.000554573 1.36364 -0.872864 -0.872871 + 892 893001 0.000552914 1.3638 -0.872858 -0.872871 + 893 894001 0.00055126 1.36486 -0.872785 -0.872871 + 894 895001 0.000549612 1.36618 -0.872602 -0.872871 + 895 896001 0.000547968 1.36431 -0.872831 -0.872871 + 896 897001 0.000546329 1.36147 -0.872791 -0.872871 + 897 898001 0.000544695 1.36441 -0.872824 -0.872871 + 898 899001 0.000543065 1.37013 -0.871455 -0.872871 + 899 900001 0.000541441 1.35838 -0.872216 -0.872871 + 900 901001 0.000539822 1.36367 -0.872863 -0.872871 + 901 902001 0.000538207 1.36321 -0.872871 -0.872871 + 902 903001 0.000536597 1.36206 -0.872838 -0.872871 + 903 904001 0.000534992 1.36764 -0.872282 -0.872871 + 904 905001 0.000533392 1.35984 -0.872556 -0.872871 + 905 906001 0.000531797 1.36195 -0.87283 -0.872871 + 906 907001 0.000530206 1.3631 -0.872871 -0.872871 + 907 908001 0.00052862 1.3579 -0.872076 -0.872871 + 908 909001 0.000527039 1.36618 -0.872601 -0.872871 + 909 910001 0.000525463 1.35773 -0.872022 -0.872871 + 910 911001 0.000523891 1.3673 -0.872368 -0.872871 + 911 912001 0.000522324 1.3631 -0.872871 -0.872871 + 912 913001 0.000520762 1.36224 -0.872848 -0.872871 + 913 914001 0.000519204 1.36509 -0.87276 -0.872871 + 914 915001 0.000517651 1.36441 -0.872824 -0.872871 + 915 916001 0.000516103 1.36586 -0.872655 -0.872871 + 916 917001 0.000514559 1.36662 -0.872518 -0.872871 + 917 918001 0.00051302 1.36347 -0.872868 -0.872871 + 918 919001 0.000511486 1.36132 -0.872777 -0.872871 + 919 920001 0.000509956 1.36319 -0.872871 -0.872871 + 920 921001 0.000508431 1.36335 -0.87287 -0.872871 + 921 922001 0.00050691 1.3679 -0.872212 -0.872871 + 922 923001 0.000505394 1.3644 -0.872824 -0.872871 + 923 924001 0.000503882 1.36273 -0.872867 -0.872871 + 924 925001 0.000502375 1.36403 -0.872848 -0.872871 + 925 926001 0.000500872 1.36403 -0.872848 -0.872871 + 926 927001 0.000499374 1.36403 -0.872848 -0.872871 + 927 928001 0.00049788 1.36778 -0.872244 -0.872871 + 928 929001 0.000496391 1.36273 -0.872867 -0.872871 + 929 930001 0.000494907 1.36245 -0.872858 -0.872871 + 930 931001 0.000493426 1.36307 -0.872871 -0.872871 + 931 932001 0.00049195 1.35921 -0.872424 -0.872871 + 932 933001 0.000490479 1.36139 -0.872784 -0.872871 + 933 934001 0.000489012 1.36502 -0.872767 -0.872871 + 934 935001 0.000487549 1.36033 -0.872643 -0.872871 + 935 936001 0.000486091 1.36587 -0.872653 -0.872871 + 936 937001 0.000484637 1.36311 -0.872871 -0.872871 + 937 938001 0.000483188 1.36373 -0.872861 -0.872871 + 938 939001 0.000481742 1.36313 -0.872871 -0.872871 + 939 940001 0.000480301 1.36032 -0.872642 -0.872871 + 940 941001 0.000478865 1.36913 -0.87183 -0.872871 + 941 942001 0.000477433 1.36294 -0.87287 -0.872871 + 942 943001 0.000476005 1.36495 -0.872775 -0.872871 + 943 944001 0.000474581 1.36691 -0.872457 -0.872871 + 944 945001 0.000473161 1.36686 -0.872468 -0.872871 + 945 946001 0.000471746 1.36688 -0.872463 -0.872871 + 946 947001 0.000470335 1.36308 -0.872871 -0.872871 + 947 948001 0.000468928 1.36482 -0.872789 -0.872871 + 948 949001 0.000467526 1.36195 -0.872831 -0.872871 + 949 950001 0.000466127 1.36542 -0.872719 -0.872871 + 950 951001 0.000464733 1.36673 -0.872495 -0.872871 + 951 952001 0.000463343 1.36435 -0.872828 -0.872871 + 952 953001 0.000461957 1.36421 -0.872837 -0.872871 + 953 954001 0.000460575 1.36126 -0.87277 -0.872871 + 954 955001 0.000459198 1.3603 -0.872639 -0.872871 + 955 956001 0.000457824 1.36138 -0.872782 -0.872871 + 956 957001 0.000456455 1.36434 -0.872829 -0.872871 + 957 958001 0.00045509 1.36263 -0.872864 -0.872871 + 958 959001 0.000453729 1.3647 -0.8728 -0.872871 + 959 960001 0.000452371 1.35968 -0.872524 -0.872871 + 960 961001 0.000451018 1.35798 -0.872098 -0.872871 + 961 962001 0.000449669 1.36319 -0.872871 -0.872871 + 962 963001 0.000448324 1.36422 -0.872837 -0.872871 + 963 964001 0.000446983 1.36203 -0.872836 -0.872871 + 964 965001 0.000445647 1.36043 -0.872659 -0.872871 + 965 966001 0.000444314 1.36729 -0.872371 -0.872871 + 966 967001 0.000442985 1.37151 -0.870844 -0.872871 + 967 968001 0.00044166 1.36535 -0.872728 -0.872871 + 968 969001 0.000440339 1.36535 -0.872728 -0.872871 + 969 970001 0.000439022 1.363 -0.872871 -0.872871 + 970 971001 0.000437708 1.36594 -0.872642 -0.872871 + 971 972001 0.000436399 1.36311 -0.872871 -0.872871 + 972 973001 0.000435094 1.36419 -0.872839 -0.872871 + 973 974001 0.000433793 1.36258 -0.872862 -0.872871 + 974 975001 0.000432495 1.36318 -0.872871 -0.872871 + 975 976001 0.000431202 1.3573 -0.871881 -0.872871 + 976 977001 0.000429912 1.36288 -0.872869 -0.872871 + 977 978001 0.000428626 1.36275 -0.872867 -0.872871 + 978 979001 0.000427344 1.36272 -0.872866 -0.872871 + 979 980001 0.000426066 1.36116 -0.872759 -0.872871 + 980 981001 0.000424791 1.36125 -0.872768 -0.872871 + 981 982001 0.000423521 1.36465 -0.872804 -0.872871 + 982 983001 0.000422254 1.36249 -0.872859 -0.872871 + 983 984001 0.000420991 1.36692 -0.872455 -0.872871 + 984 985001 0.000419732 1.36214 -0.872843 -0.872871 + 985 986001 0.000418476 1.36129 -0.872772 -0.872871 + 986 987001 0.000417225 1.36434 -0.872828 -0.872871 + 987 988001 0.000415977 1.36606 -0.872622 -0.872871 + 988 989001 0.000414733 1.36031 -0.87264 -0.872871 + 989 990001 0.000413492 1.36632 -0.872576 -0.872871 + 990 991001 0.000412255 1.36248 -0.872859 -0.872871 + 991 992001 0.000411022 1.36208 -0.872839 -0.872871 + 992 993001 0.000409793 1.36041 -0.872656 -0.872871 + 993 994001 0.000408567 1.36633 -0.872574 -0.872871 + 994 995001 0.000407345 1.36787 -0.87222 -0.872871 + 995 996001 0.000406127 1.36254 -0.872861 -0.872871 + 996 997001 0.000404912 1.36359 -0.872865 -0.872871 + 997 998001 0.000403701 1.36359 -0.872865 -0.872871 + 998 999001 0.000402493 1.36816 -0.872137 -0.872871 + 999 1000001 0.00040129 1.3633 -0.87287 -0.872871 + 1000 1001001 0.000400089 1.36013 -0.872609 -0.872871 + 1001 1002001 0.000398893 1.35879 -0.872324 -0.872871 + 1002 1003001 0.0003977 1.35898 -0.872371 -0.872871 + 1003 1004001 0.00039651 1.36044 -0.872661 -0.872871 + 1004 1005001 0.000395324 1.36323 -0.872871 -0.872871 + 1005 1006001 0.000394142 1.36405 -0.872846 -0.872871 + 1006 1007001 0.000392963 1.36426 -0.872834 -0.872871 + 1007 1008001 0.000391787 1.36273 -0.872867 -0.872871 + 1008 1009001 0.000390616 1.36387 -0.872855 -0.872871 + 1009 1010001 0.000389447 1.36545 -0.872716 -0.872871 + 1010 1011001 0.000388282 1.36385 -0.872856 -0.872871 + 1011 1012001 0.000387121 1.36801 -0.872182 -0.872871 + 1012 1013001 0.000385963 1.36536 -0.872727 -0.872871 + 1013 1014001 0.000384809 1.36579 -0.872667 -0.872871 + 1014 1015001 0.000383658 1.3632 -0.872871 -0.872871 + 1015 1016001 0.00038251 1.36117 -0.87276 -0.872871 + 1016 1017001 0.000381366 1.36095 -0.872733 -0.872871 + 1017 1018001 0.000380225 1.3664 -0.872562 -0.872871 + 1018 1019001 0.000379088 1.36417 -0.87284 -0.872871 + 1019 1020001 0.000377954 1.36178 -0.872819 -0.872871 + 1020 1021001 0.000376824 1.36634 -0.872572 -0.872871 + 1021 1022001 0.000375697 1.36589 -0.87265 -0.872871 + 1022 1023001 0.000374573 1.36425 -0.872835 -0.872871 + 1023 1024001 0.000373453 1.36156 -0.8728 -0.872871 + 1024 1025001 0.000372336 1.36708 -0.87242 -0.872871 + 1025 1026001 0.000371222 1.3598 -0.872548 -0.872871 + 1026 1027001 0.000370112 1.36262 -0.872864 -0.872871 + 1027 1028001 0.000369005 1.36378 -0.872859 -0.872871 + 1028 1029001 0.000367901 1.36519 -0.872748 -0.872871 + 1029 1030001 0.0003668 1.36515 -0.872753 -0.872871 + 1030 1031001 0.000365703 1.3601 -0.872605 -0.872871 + 1031 1032001 0.00036461 1.36379 -0.872859 -0.872871 + 1032 1033001 0.000363519 1.36076 -0.872707 -0.872871 + 1033 1034001 0.000362432 1.36056 -0.872679 -0.872871 + 1034 1035001 0.000361348 1.36597 -0.872637 -0.872871 + 1035 1036001 0.000360267 1.3597 -0.87253 -0.872871 + 1036 1037001 0.000359189 1.36519 -0.872748 -0.872871 + 1037 1038001 0.000358115 1.36388 -0.872855 -0.872871 + 1038 1039001 0.000357044 1.3585 -0.872247 -0.872871 + 1039 1040001 0.000355976 1.35857 -0.872266 -0.872871 + 1040 1041001 0.000354911 1.36244 -0.872857 -0.872871 + 1041 1042001 0.00035385 1.36827 -0.872106 -0.872871 + 1042 1043001 0.000352791 1.36311 -0.872871 -0.872871 + 1043 1044001 0.000351736 1.3575 -0.871947 -0.872871 + 1044 1045001 0.000350684 1.36111 -0.872753 -0.872871 + 1045 1046001 0.000349635 1.35875 -0.872312 -0.872871 + 1046 1047001 0.000348589 1.36477 -0.872793 -0.872871 + 1047 1048001 0.000347547 1.36178 -0.872819 -0.872871 + 1048 1049001 0.000346507 1.36469 -0.872801 -0.872871 + 1049 1050001 0.000345471 1.36429 -0.872832 -0.872871 + 1050 1051001 0.000344437 1.36506 -0.872764 -0.872871 + 1051 1052001 0.000343407 1.36387 -0.872855 -0.872871 + 1052 1053001 0.00034238 1.36509 -0.87276 -0.872871 + 1053 1054001 0.000341356 1.36212 -0.872842 -0.872871 + 1054 1055001 0.000340335 1.3641 -0.872844 -0.872871 + 1055 1056001 0.000339317 1.36357 -0.872865 -0.872871 + 1056 1057001 0.000338302 1.36211 -0.872841 -0.872871 + 1057 1058001 0.00033729 1.36118 -0.87276 -0.872871 + 1058 1059001 0.000336281 1.36303 -0.872871 -0.872871 + 1059 1060001 0.000335276 1.36268 -0.872865 -0.872871 + 1060 1061001 0.000334273 1.36276 -0.872867 -0.872871 + 1061 1062001 0.000333273 1.36395 -0.872852 -0.872871 + 1062 1063001 0.000332276 1.36104 -0.872744 -0.872871 + 1063 1064001 0.000331282 1.36124 -0.872768 -0.872871 + 1064 1065001 0.000330291 1.36263 -0.872864 -0.872871 + 1065 1066001 0.000329303 1.36263 -0.872864 -0.872871 + 1066 1067001 0.000328319 1.36364 -0.872864 -0.872871 + 1067 1068001 0.000327337 1.36353 -0.872867 -0.872871 + 1068 1069001 0.000326357 1.36353 -0.872867 -0.872871 + 1069 1070001 0.000325381 1.36344 -0.872868 -0.872871 + 1070 1071001 0.000324408 1.36344 -0.872868 -0.872871 + 1071 1072001 0.000323438 1.36076 -0.872708 -0.872871 + 1072 1073001 0.00032247 1.36184 -0.872823 -0.872871 + 1073 1074001 0.000321506 1.36232 -0.872852 -0.872871 + 1074 1075001 0.000320544 1.35925 -0.872434 -0.872871 + 1075 1076001 0.000319585 1.3654 -0.872721 -0.872871 + 1076 1077001 0.00031863 1.36145 -0.872789 -0.872871 + 1077 1078001 0.000317677 1.36502 -0.872767 -0.872871 + 1078 1079001 0.000316726 1.3666 -0.872523 -0.872871 + 1079 1080001 0.000315779 1.36509 -0.872759 -0.872871 + 1080 1081001 0.000314835 1.36518 -0.87275 -0.872871 + 1081 1082001 0.000313893 1.35987 -0.872561 -0.872871 + 1082 1083001 0.000312954 1.36265 -0.872865 -0.872871 + 1083 1084001 0.000312018 1.36598 -0.872636 -0.872871 + 1084 1085001 0.000311085 1.36197 -0.872832 -0.872871 + 1085 1086001 0.000310154 1.36223 -0.872848 -0.872871 + 1086 1087001 0.000309227 1.36379 -0.872858 -0.872871 + 1087 1088001 0.000308302 1.36122 -0.872765 -0.872871 + 1088 1089001 0.000307379 1.36289 -0.87287 -0.872871 + 1089 1090001 0.00030646 1.36249 -0.872859 -0.872871 + 1090 1091001 0.000305543 1.3649 -0.87278 -0.872871 + 1091 1092001 0.00030463 1.36049 -0.872668 -0.872871 + 1092 1093001 0.000303718 1.36541 -0.872721 -0.872871 + 1093 1094001 0.00030281 1.35666 -0.871652 -0.872871 + 1094 1095001 0.000301904 1.36574 -0.872674 -0.872871 + 1095 1096001 0.000301001 1.3633 -0.87287 -0.872871 + 1096 1097001 0.000300101 1.3633 -0.87287 -0.872871 + 1097 1098001 0.000299203 1.3657 -0.87268 -0.872871 + 1098 1099001 0.000298308 1.36507 -0.872762 -0.872871 + 1099 1100001 0.000297416 1.36082 -0.872716 -0.872871 + 1100 1101001 0.000296527 1.36307 -0.872871 -0.872871 + 1101 1102001 0.00029564 1.36425 -0.872835 -0.872871 + 1102 1103001 0.000294755 1.36425 -0.872835 -0.872871 + 1103 1104001 0.000293874 1.36421 -0.872838 -0.872871 + 1104 1105001 0.000292995 1.36228 -0.87285 -0.872871 + 1105 1106001 0.000292118 1.36313 -0.872871 -0.872871 + 1106 1107001 0.000291245 1.36313 -0.872871 -0.872871 + 1107 1108001 0.000290374 1.36321 -0.872871 -0.872871 + 1108 1109001 0.000289505 1.36226 -0.872849 -0.872871 + 1109 1110001 0.000288639 1.36669 -0.872505 -0.872871 + 1110 1111001 0.000287776 1.36429 -0.872832 -0.872871 + 1111 1112001 0.000286915 1.36429 -0.872832 -0.872871 + 1112 1113001 0.000286057 1.36187 -0.872825 -0.872871 + 1113 1114001 0.000285201 1.36514 -0.872754 -0.872871 + 1114 1115001 0.000284348 1.36682 -0.872476 -0.872871 + 1115 1116001 0.000283498 1.3648 -0.872791 -0.872871 + 1116 1117001 0.00028265 1.36239 -0.872855 -0.872871 + 1117 1118001 0.000281804 1.36613 -0.87261 -0.872871 + 1118 1119001 0.000280962 1.36275 -0.872867 -0.872871 + 1119 1120001 0.000280121 1.35968 -0.872526 -0.872871 + 1120 1121001 0.000279283 1.36144 -0.872789 -0.872871 + 1121 1122001 0.000278448 1.36665 -0.872511 -0.872871 + 1122 1123001 0.000277615 1.362 -0.872834 -0.872871 + 1123 1124001 0.000276785 1.36083 -0.872717 -0.872871 + 1124 1125001 0.000275957 1.36152 -0.872796 -0.872871 + 1125 1126001 0.000275132 1.36342 -0.872869 -0.872871 + 1126 1127001 0.000274309 1.36342 -0.872869 -0.872871 + 1127 1128001 0.000273488 1.36302 -0.872871 -0.872871 + 1128 1129001 0.00027267 1.36542 -0.872719 -0.872871 + 1129 1130001 0.000271855 1.36216 -0.872844 -0.872871 + 1130 1131001 0.000271041 1.36054 -0.872677 -0.872871 + 1131 1132001 0.000270231 1.36195 -0.87283 -0.872871 + 1132 1133001 0.000269422 1.36134 -0.872778 -0.872871 + 1133 1134001 0.000268617 1.36384 -0.872857 -0.872871 + 1134 1135001 0.000267813 1.36486 -0.872785 -0.872871 + 1135 1136001 0.000267012 1.36064 -0.872691 -0.872871 + 1136 1137001 0.000266214 1.36517 -0.87275 -0.872871 + 1137 1138001 0.000265417 1.36247 -0.872858 -0.872871 + 1138 1139001 0.000264623 1.36396 -0.872851 -0.872871 + 1139 1140001 0.000263832 1.36327 -0.872871 -0.872871 + 1140 1141001 0.000263043 1.36402 -0.872848 -0.872871 + 1141 1142001 0.000262256 1.36091 -0.872729 -0.872871 + 1142 1143001 0.000261472 1.36273 -0.872867 -0.872871 + 1143 1144001 0.00026069 1.36598 -0.872636 -0.872871 + 1144 1145001 0.00025991 1.36567 -0.872683 -0.872871 + 1145 1146001 0.000259132 1.36193 -0.872829 -0.872871 + 1146 1147001 0.000258357 1.36305 -0.872871 -0.872871 + 1147 1148001 0.000257585 1.36212 -0.872842 -0.872871 + 1148 1149001 0.000256814 1.36845 -0.872051 -0.872871 + 1149 1150001 0.000256046 1.363 -0.872871 -0.872871 + 1150 1151001 0.00025528 1.36597 -0.872638 -0.872871 + 1151 1152001 0.000254517 1.36242 -0.872857 -0.872871 + 1152 1153001 0.000253755 1.36525 -0.872741 -0.872871 + 1153 1154001 0.000252996 1.36314 -0.872871 -0.872871 + 1154 1155001 0.00025224 1.36199 -0.872834 -0.872871 + 1155 1156001 0.000251485 1.36559 -0.872696 -0.872871 + 1156 1157001 0.000250733 1.35875 -0.872312 -0.872871 + 1157 1158001 0.000249983 1.3637 -0.872862 -0.872871 + 1158 1159001 0.000249235 1.36209 -0.87284 -0.872871 + 1159 1160001 0.00024849 1.36342 -0.872869 -0.872871 + 1160 1161001 0.000247747 1.36327 -0.872871 -0.872871 + 1161 1162001 0.000247006 1.36327 -0.872871 -0.872871 + 1162 1163001 0.000246267 1.36413 -0.872842 -0.872871 + 1163 1164001 0.00024553 1.36413 -0.872842 -0.872871 + 1164 1165001 0.000244796 1.36066 -0.872693 -0.872871 + 1165 1166001 0.000244064 1.36152 -0.872796 -0.872871 + 1166 1167001 0.000243334 1.36421 -0.872838 -0.872871 + 1167 1168001 0.000242606 1.36114 -0.872756 -0.872871 + 1168 1169001 0.00024188 1.36162 -0.872805 -0.872871 + 1169 1170001 0.000241157 1.3643 -0.872832 -0.872871 + 1170 1171001 0.000240435 1.36674 -0.872493 -0.872871 + 1171 1172001 0.000239716 1.36533 -0.872731 -0.872871 + 1172 1173001 0.000238999 1.36003 -0.872591 -0.872871 + 1173 1174001 0.000238284 1.364 -0.872849 -0.872871 + 1174 1175001 0.000237572 1.36194 -0.87283 -0.872871 + 1175 1176001 0.000236861 1.36088 -0.872724 -0.872871 + 1176 1177001 0.000236153 1.36086 -0.872721 -0.872871 + 1177 1178001 0.000235446 1.36304 -0.872871 -0.872871 + 1178 1179001 0.000234742 1.36291 -0.87287 -0.872871 + 1179 1180001 0.00023404 1.36018 -0.872617 -0.872871 + 1180 1181001 0.00023334 1.36241 -0.872856 -0.872871 + 1181 1182001 0.000232642 1.36353 -0.872867 -0.872871 + 1182 1183001 0.000231946 1.36371 -0.872862 -0.872871 + 1183 1184001 0.000231252 1.36204 -0.872837 -0.872871 + 1184 1185001 0.000230561 1.36075 -0.872706 -0.872871 + 1185 1186001 0.000229871 1.36376 -0.87286 -0.872871 + 1186 1187001 0.000229184 1.36404 -0.872847 -0.872871 + 1187 1188001 0.000228498 1.36574 -0.872673 -0.872871 + 1188 1189001 0.000227815 1.36355 -0.872866 -0.872871 + 1189 1190001 0.000227133 1.36263 -0.872864 -0.872871 + 1190 1191001 0.000226454 1.36204 -0.872837 -0.872871 + 1191 1192001 0.000225777 1.36124 -0.872767 -0.872871 + 1192 1193001 0.000225101 1.36353 -0.872867 -0.872871 + 1193 1194001 0.000224428 1.36287 -0.872869 -0.872871 + 1194 1195001 0.000223757 1.36312 -0.872871 -0.872871 + 1195 1196001 0.000223087 1.36312 -0.872871 -0.872871 + 1196 1197001 0.00022242 1.36327 -0.872871 -0.872871 + 1197 1198001 0.000221755 1.35818 -0.872157 -0.872871 + 1198 1199001 0.000221092 1.36099 -0.872738 -0.872871 + 1199 1200001 0.00022043 1.36115 -0.872757 -0.872871 + 1200 1201001 0.000219771 1.36272 -0.872866 -0.872871 + 1201 1202001 0.000219114 1.36362 -0.872864 -0.872871 + 1202 1203001 0.000218458 1.36236 -0.872854 -0.872871 + 1203 1204001 0.000217805 1.36236 -0.872854 -0.872871 + 1204 1205001 0.000217153 1.36277 -0.872868 -0.872871 + 1205 1206001 0.000216504 1.36343 -0.872869 -0.872871 + 1206 1207001 0.000215856 1.36177 -0.872817 -0.872871 + 1207 1208001 0.000215211 1.36386 -0.872856 -0.872871 + 1208 1209001 0.000214567 1.35774 -0.872027 -0.872871 + 1209 1210001 0.000213925 1.36105 -0.872746 -0.872871 + 1210 1211001 0.000213285 1.36053 -0.872674 -0.872871 + 1211 1212001 0.000212647 1.36532 -0.872732 -0.872871 + 1212 1213001 0.000212011 1.36071 -0.872701 -0.872871 + 1213 1214001 0.000211377 1.36262 -0.872864 -0.872871 + 1214 1215001 0.000210745 1.36305 -0.872871 -0.872871 + 1215 1216001 0.000210115 1.36039 -0.872653 -0.872871 + 1216 1217001 0.000209486 1.3639 -0.872854 -0.872871 + 1217 1218001 0.00020886 1.36313 -0.872871 -0.872871 + 1218 1219001 0.000208235 1.365 -0.872769 -0.872871 + 1219 1220001 0.000207612 1.36007 -0.872599 -0.872871 + 1220 1221001 0.000206991 1.36285 -0.872869 -0.872871 + 1221 1222001 0.000206372 1.35941 -0.87247 -0.872871 + 1222 1223001 0.000205755 1.36246 -0.872858 -0.872871 + 1223 1224001 0.000205139 1.36378 -0.872859 -0.872871 + 1224 1225001 0.000204526 1.36333 -0.87287 -0.872871 + 1225 1226001 0.000203914 1.36148 -0.872792 -0.872871 + 1226 1227001 0.000203304 1.36399 -0.87285 -0.872871 + 1227 1228001 0.000202696 1.36454 -0.872813 -0.872871 + 1228 1229001 0.00020209 1.36454 -0.872813 -0.872871 + 1229 1230001 0.000201485 1.36379 -0.872859 -0.872871 + 1230 1231001 0.000200883 1.36541 -0.87272 -0.872871 + 1231 1232001 0.000200282 1.36195 -0.872831 -0.872871 + 1232 1233001 0.000199683 1.36454 -0.872814 -0.872871 + 1233 1234001 0.000199085 1.36088 -0.872724 -0.872871 + 1234 1235001 0.00019849 1.36711 -0.872413 -0.872871 + 1235 1236001 0.000197896 1.36318 -0.872871 -0.872871 + 1236 1237001 0.000197304 1.36106 -0.872747 -0.872871 + 1237 1238001 0.000196714 1.36243 -0.872857 -0.872871 + 1238 1239001 0.000196126 1.36449 -0.872817 -0.872871 + 1239 1240001 0.000195539 1.36371 -0.872862 -0.872871 + 1240 1241001 0.000194954 1.36435 -0.872828 -0.872871 + 1241 1242001 0.000194371 1.36108 -0.872749 -0.872871 + 1242 1243001 0.00019379 1.3638 -0.872858 -0.872871 + 1243 1244001 0.00019321 1.3638 -0.872858 -0.872871 + 1244 1245001 0.000192632 1.36265 -0.872865 -0.872871 + 1245 1246001 0.000192056 1.36265 -0.872865 -0.872871 + 1246 1247001 0.000191482 1.36129 -0.872773 -0.872871 + 1247 1248001 0.000190909 1.36326 -0.872871 -0.872871 + 1248 1249001 0.000190338 1.36251 -0.87286 -0.872871 + 1249 1250001 0.000189769 1.36188 -0.872826 -0.872871 + 1250 1251001 0.000189201 1.36573 -0.872675 -0.872871 + 1251 1252001 0.000188635 1.36535 -0.872728 -0.872871 + 1252 1253001 0.000188071 1.36517 -0.872751 -0.872871 + 1253 1254001 0.000187508 1.35986 -0.872561 -0.872871 + 1254 1255001 0.000186948 1.36587 -0.872654 -0.872871 + 1255 1256001 0.000186388 1.36403 -0.872848 -0.872871 + 1256 1257001 0.000185831 1.36395 -0.872852 -0.872871 + 1257 1258001 0.000185275 1.36394 -0.872852 -0.872871 + 1258 1259001 0.000184721 1.36436 -0.872827 -0.872871 + 1259 1260001 0.000184168 1.36185 -0.872824 -0.872871 + 1260 1261001 0.000183618 1.36533 -0.872731 -0.872871 + 1261 1262001 0.000183068 1.3601 -0.872605 -0.872871 + 1262 1263001 0.000182521 1.36157 -0.8728 -0.872871 + 1263 1264001 0.000181975 1.36622 -0.872594 -0.872871 + 1264 1265001 0.000181431 1.36129 -0.872773 -0.872871 + 1265 1266001 0.000180888 1.36437 -0.872826 -0.872871 + 1266 1267001 0.000180347 1.36559 -0.872695 -0.872871 + 1267 1268001 0.000179808 1.36277 -0.872868 -0.872871 + 1268 1269001 0.00017927 1.3639 -0.872854 -0.872871 + 1269 1270001 0.000178734 1.36488 -0.872782 -0.872871 + 1270 1271001 0.000178199 1.36525 -0.872741 -0.872871 + 1271 1272001 0.000177666 1.36439 -0.872825 -0.872871 + 1272 1273001 0.000177135 1.36046 -0.872663 -0.872871 + 1273 1274001 0.000176605 1.36604 -0.872626 -0.872871 + 1274 1275001 0.000176076 1.36069 -0.872699 -0.872871 + 1275 1276001 0.00017555 1.36593 -0.872645 -0.872871 + 1276 1277001 0.000175025 1.36241 -0.872856 -0.872871 + 1277 1278001 0.000174501 1.36433 -0.87283 -0.872871 + 1278 1279001 0.000173979 1.36277 -0.872867 -0.872871 + 1279 1280001 0.000173459 1.36141 -0.872786 -0.872871 + 1280 1281001 0.00017294 1.36141 -0.872786 -0.872871 + 1281 1282001 0.000172423 1.36196 -0.872832 -0.872871 + 1282 1283001 0.000171907 1.36385 -0.872856 -0.872871 + 1283 1284001 0.000171393 1.36543 -0.872718 -0.872871 + 1284 1285001 0.00017088 1.36273 -0.872867 -0.872871 + 1285 1286001 0.000170369 1.36432 -0.87283 -0.872871 + 1286 1287001 0.00016986 1.36313 -0.872871 -0.872871 + 1287 1288001 0.000169352 1.36313 -0.872871 -0.872871 + 1288 1289001 0.000168845 1.36381 -0.872858 -0.872871 + 1289 1290001 0.00016834 1.36428 -0.872833 -0.872871 + 1290 1291001 0.000167836 1.36108 -0.872749 -0.872871 + 1291 1292001 0.000167334 1.36157 -0.872801 -0.872871 + 1292 1293001 0.000166834 1.36326 -0.872871 -0.872871 + 1293 1294001 0.000166335 1.36184 -0.872823 -0.872871 + 1294 1295001 0.000165837 1.36134 -0.872778 -0.872871 + 1295 1296001 0.000165341 1.3613 -0.872773 -0.872871 + 1296 1297001 0.000164847 1.36622 -0.872594 -0.872871 + 1297 1298001 0.000164354 1.36601 -0.872631 -0.872871 + 1298 1299001 0.000163862 1.36472 -0.872798 -0.872871 + 1299 1300001 0.000163372 1.36451 -0.872816 -0.872871 + 1300 1301001 0.000162883 1.36274 -0.872867 -0.872871 + 1301 1302001 0.000162396 1.36295 -0.87287 -0.872871 + 1302 1303001 0.000161911 1.36295 -0.87287 -0.872871 + 1303 1304001 0.000161426 1.36295 -0.87287 -0.872871 + 1304 1305001 0.000160943 1.36334 -0.87287 -0.872871 + 1305 1306001 0.000160462 1.36047 -0.872665 -0.872871 + 1306 1307001 0.000159982 1.36395 -0.872852 -0.872871 + 1307 1308001 0.000159504 1.36443 -0.872822 -0.872871 + 1308 1309001 0.000159027 1.36019 -0.87262 -0.872871 + 1309 1310001 0.000158551 1.36581 -0.872662 -0.872871 + 1310 1311001 0.000158077 1.36156 -0.8728 -0.872871 + 1311 1312001 0.000157604 1.36375 -0.87286 -0.872871 + 1312 1313001 0.000157132 1.36249 -0.872859 -0.872871 + 1313 1314001 0.000156662 1.36183 -0.872822 -0.872871 + 1314 1315001 0.000156194 1.36183 -0.872822 -0.872871 + 1315 1316001 0.000155727 1.36316 -0.872871 -0.872871 + 1316 1317001 0.000155261 1.36551 -0.872707 -0.872871 + 1317 1318001 0.000154797 1.36077 -0.872709 -0.872871 + 1318 1319001 0.000154334 1.36087 -0.872722 -0.872871 + 1319 1320001 0.000153872 1.3611 -0.872751 -0.872871 + 1320 1321001 0.000153412 1.36292 -0.87287 -0.872871 + 1321 1322001 0.000152953 1.36482 -0.872788 -0.872871 + 1322 1323001 0.000152495 1.36422 -0.872837 -0.872871 + 1323 1324001 0.000152039 1.36306 -0.872871 -0.872871 + 1324 1325001 0.000151584 1.36082 -0.872716 -0.872871 + 1325 1326001 0.000151131 1.36112 -0.872754 -0.872871 + 1326 1327001 0.000150679 1.3655 -0.872708 -0.872871 + 1327 1328001 0.000150228 1.36332 -0.87287 -0.872871 + 1328 1329001 0.000149779 1.36193 -0.872829 -0.872871 + 1329 1330001 0.000149331 1.36357 -0.872866 -0.872871 + 1330 1331001 0.000148884 1.36316 -0.872871 -0.872871 + 1331 1332001 0.000148439 1.36316 -0.872871 -0.872871 + 1332 1333001 0.000147995 1.36585 -0.872657 -0.872871 + 1333 1334001 0.000147552 1.36395 -0.872852 -0.872871 + 1334 1335001 0.000147111 1.3645 -0.872817 -0.872871 + 1335 1336001 0.000146671 1.3643 -0.872832 -0.872871 + 1336 1337001 0.000146232 1.3643 -0.872832 -0.872871 + 1337 1338001 0.000145795 1.36099 -0.872738 -0.872871 + 1338 1339001 0.000145359 1.36385 -0.872856 -0.872871 + 1339 1340001 0.000144924 1.36648 -0.872545 -0.872871 + 1340 1341001 0.000144491 1.3633 -0.87287 -0.872871 + 1341 1342001 0.000144058 1.36315 -0.872871 -0.872871 + 1342 1343001 0.000143628 1.36289 -0.87287 -0.872871 + 1343 1344001 0.000143198 1.36289 -0.87287 -0.872871 + 1344 1345001 0.00014277 1.36306 -0.872871 -0.872871 + 1345 1346001 0.000142343 1.36054 -0.872676 -0.872871 + 1346 1347001 0.000141917 1.36207 -0.872838 -0.872871 + 1347 1348001 0.000141492 1.36325 -0.872871 -0.872871 + 1348 1349001 0.000141069 1.36319 -0.872871 -0.872871 + 1349 1350001 0.000140647 1.36417 -0.87284 -0.872871 + 1350 1351001 0.000140227 1.36038 -0.872652 -0.872871 + 1351 1352001 0.000139807 1.36471 -0.872799 -0.872871 + 1352 1353001 0.000139389 1.36525 -0.872741 -0.872871 + 1353 1354001 0.000138972 1.36271 -0.872866 -0.872871 + 1354 1355001 0.000138556 1.36357 -0.872865 -0.872871 + 1355 1356001 0.000138142 1.36357 -0.872865 -0.872871 + 1356 1357001 0.000137729 1.36207 -0.872839 -0.872871 + 1357 1358001 0.000137317 1.36483 -0.872787 -0.872871 + 1358 1359001 0.000136906 1.36332 -0.87287 -0.872871 + 1359 1360001 0.000136497 1.3629 -0.87287 -0.872871 + 1360 1361001 0.000136088 1.36303 -0.872871 -0.872871 + 1361 1362001 0.000135681 1.36463 -0.872806 -0.872871 + 1362 1363001 0.000135276 1.36443 -0.872822 -0.872871 + 1363 1364001 0.000134871 1.36249 -0.872859 -0.872871 + 1364 1365001 0.000134468 1.36518 -0.872749 -0.872871 + 1365 1366001 0.000134065 1.36495 -0.872775 -0.872871 + 1366 1367001 0.000133664 1.36495 -0.872775 -0.872871 + 1367 1368001 0.000133265 1.36077 -0.872709 -0.872871 + 1368 1369001 0.000132866 1.36077 -0.872709 -0.872871 + 1369 1370001 0.000132469 1.35985 -0.872558 -0.872871 + 1370 1371001 0.000132072 1.36582 -0.872662 -0.872871 + 1371 1372001 0.000131677 1.36433 -0.87283 -0.872871 + 1372 1373001 0.000131283 1.36097 -0.872736 -0.872871 + 1373 1374001 0.000130891 1.36239 -0.872855 -0.872871 + 1374 1375001 0.000130499 1.36405 -0.872847 -0.872871 + 1375 1376001 0.000130109 1.36405 -0.872847 -0.872871 + 1376 1377001 0.00012972 1.36392 -0.872853 -0.872871 + 1377 1378001 0.000129332 1.36751 -0.872314 -0.872871 + 1378 1379001 0.000128945 1.3611 -0.872751 -0.872871 + 1379 1380001 0.000128559 1.36289 -0.87287 -0.872871 + 1380 1381001 0.000128175 1.36344 -0.872868 -0.872871 + 1381 1382001 0.000127791 1.36387 -0.872855 -0.872871 + 1382 1383001 0.000127409 1.36198 -0.872833 -0.872871 + 1383 1384001 0.000127028 1.36384 -0.872857 -0.872871 + 1384 1385001 0.000126648 1.36381 -0.872858 -0.872871 + 1385 1386001 0.000126269 1.36215 -0.872843 -0.872871 + 1386 1387001 0.000125892 1.36341 -0.872869 -0.872871 + 1387 1388001 0.000125515 1.36191 -0.872828 -0.872871 + 1388 1389001 0.00012514 1.36308 -0.872871 -0.872871 + 1389 1390001 0.000124765 1.36397 -0.872851 -0.872871 + 1390 1391001 0.000124392 1.3629 -0.87287 -0.872871 + 1391 1392001 0.00012402 1.36201 -0.872835 -0.872871 + 1392 1393001 0.000123649 1.36683 -0.872475 -0.872871 + 1393 1394001 0.000123279 1.36143 -0.872787 -0.872871 + 1394 1395001 0.000122911 1.36307 -0.872871 -0.872871 + 1395 1396001 0.000122543 1.36316 -0.872871 -0.872871 + 1396 1397001 0.000122176 1.36449 -0.872818 -0.872871 + 1397 1398001 0.000121811 1.36427 -0.872834 -0.872871 + 1398 1399001 0.000121447 1.36353 -0.872867 -0.872871 + 1399 1400001 0.000121083 1.36355 -0.872866 -0.872871 + 1400 1401001 0.000120721 1.36205 -0.872837 -0.872871 + 1401 1402001 0.00012036 1.36638 -0.872565 -0.872871 + 1402 1403001 0.00012 1.36348 -0.872868 -0.872871 + 1403 1404001 0.000119641 1.36397 -0.872851 -0.872871 + 1404 1405001 0.000119283 1.36674 -0.872494 -0.872871 + 1405 1406001 0.000118927 1.36498 -0.872772 -0.872871 + 1406 1407001 0.000118571 1.36344 -0.872868 -0.872871 + 1407 1408001 0.000118216 1.36435 -0.872828 -0.872871 + 1408 1409001 0.000117863 1.36231 -0.872852 -0.872871 + 1409 1410001 0.00011751 1.36336 -0.87287 -0.872871 + 1410 1411001 0.000117159 1.36315 -0.872871 -0.872871 + 1411 1412001 0.000116808 1.36342 -0.872869 -0.872871 + 1412 1413001 0.000116459 1.36342 -0.872869 -0.872871 + 1413 1414001 0.000116111 1.3616 -0.872803 -0.872871 + 1414 1415001 0.000115763 1.35987 -0.872562 -0.872871 + 1415 1416001 0.000115417 1.36143 -0.872787 -0.872871 + 1416 1417001 0.000115072 1.36143 -0.872787 -0.872871 + 1417 1418001 0.000114728 1.36502 -0.872768 -0.872871 + 1418 1419001 0.000114384 1.36475 -0.872795 -0.872871 + 1419 1420001 0.000114042 1.36312 -0.872871 -0.872871 + 1420 1421001 0.000113701 1.36321 -0.872871 -0.872871 + 1421 1422001 0.000113361 1.36107 -0.872747 -0.872871 + 1422 1423001 0.000113022 1.36489 -0.872781 -0.872871 + 1423 1424001 0.000112684 1.36157 -0.872801 -0.872871 + 1424 1425001 0.000112347 1.36157 -0.872801 -0.872871 + 1425 1426001 0.000112011 1.36157 -0.872801 -0.872871 + 1426 1427001 0.000111676 1.36337 -0.87287 -0.872871 + 1427 1428001 0.000111342 1.36337 -0.87287 -0.872871 + 1428 1429001 0.000111009 1.36347 -0.872868 -0.872871 + 1429 1430001 0.000110677 1.36187 -0.872825 -0.872871 + 1430 1431001 0.000110346 1.36187 -0.872825 -0.872871 + 1431 1432001 0.000110016 1.36232 -0.872852 -0.872871 + 1432 1433001 0.000109687 1.36352 -0.872867 -0.872871 + 1433 1434001 0.000109359 1.3654 -0.872721 -0.872871 + 1434 1435001 0.000109032 1.36327 -0.872871 -0.872871 + 1435 1436001 0.000108705 1.36223 -0.872848 -0.872871 + 1436 1437001 0.00010838 1.36236 -0.872854 -0.872871 + 1437 1438001 0.000108056 1.36517 -0.872751 -0.872871 + 1438 1439001 0.000107733 1.36446 -0.87282 -0.872871 + 1439 1440001 0.000107411 1.36303 -0.872871 -0.872871 + 1440 1441001 0.000107089 1.36189 -0.872826 -0.872871 + 1441 1442001 0.000106769 1.36197 -0.872832 -0.872871 + 1442 1443001 0.00010645 1.36237 -0.872854 -0.872871 + 1443 1444001 0.000106131 1.36377 -0.872859 -0.872871 + 1444 1445001 0.000105814 1.36511 -0.872758 -0.872871 + 1445 1446001 0.000105497 1.36363 -0.872864 -0.872871 + 1446 1447001 0.000105182 1.36221 -0.872846 -0.872871 + 1447 1448001 0.000104867 1.36383 -0.872857 -0.872871 + 1448 1449001 0.000104554 1.36199 -0.872833 -0.872871 + 1449 1450001 0.000104241 1.36227 -0.87285 -0.872871 + 1450 1451001 0.000103929 1.36427 -0.872833 -0.872871 + 1451 1452001 0.000103618 1.36425 -0.872835 -0.872871 + 1452 1453001 0.000103308 1.3646 -0.872808 -0.872871 + 1453 1454001 0.000102999 1.35945 -0.872478 -0.872871 + 1454 1455001 0.000102691 1.36169 -0.872811 -0.872871 + 1455 1456001 0.000102384 1.36339 -0.872869 -0.872871 + 1456 1457001 0.000102078 1.36297 -0.87287 -0.872871 + 1457 1458001 0.000101773 1.36265 -0.872864 -0.872871 + 1458 1459001 0.000101468 1.36336 -0.87287 -0.872871 + 1459 1460001 0.000101165 1.36456 -0.872812 -0.872871 + 1460 1461001 0.000100862 1.36253 -0.872861 -0.872871 + 1461 1462001 0.00010056 1.36166 -0.872808 -0.872871 + 1462 1463001 0.00010026 1.36242 -0.872856 -0.872871 + 1463 1464001 9.99597e-05 1.36165 -0.872808 -0.872871 + 1464 1465001 9.96607e-05 1.36419 -0.872838 -0.872871 + 1465 1466001 9.93626e-05 1.36332 -0.87287 -0.872871 + 1466 1467001 9.90654e-05 1.36213 -0.872842 -0.872871 + 1467 1468001 9.87691e-05 1.36424 -0.872836 -0.872871 + 1468 1469001 9.84737e-05 1.36424 -0.872836 -0.872871 + 1469 1470001 9.81792e-05 1.36368 -0.872863 -0.872871 + 1470 1471001 9.78855e-05 1.36368 -0.872863 -0.872871 + 1471 1472001 9.75927e-05 1.36368 -0.872863 -0.872871 + 1472 1473001 9.73008e-05 1.36339 -0.872869 -0.872871 + 1473 1474001 9.70098e-05 1.36159 -0.872802 -0.872871 + 1474 1475001 9.67196e-05 1.36167 -0.872809 -0.872871 + 1475 1476001 9.64304e-05 1.36167 -0.872809 -0.872871 + 1476 1477001 9.61419e-05 1.36231 -0.872852 -0.872871 + 1477 1478001 9.58544e-05 1.36215 -0.872843 -0.872871 + 1478 1479001 9.55677e-05 1.36291 -0.87287 -0.872871 + 1479 1480001 9.52818e-05 1.36174 -0.872815 -0.872871 + 1480 1481001 9.49968e-05 1.36431 -0.872831 -0.872871 + 1481 1482001 9.47127e-05 1.36368 -0.872862 -0.872871 + 1482 1483001 9.44294e-05 1.36327 -0.872871 -0.872871 + 1483 1484001 9.4147e-05 1.36119 -0.872762 -0.872871 + 1484 1485001 9.38654e-05 1.36149 -0.872793 -0.872871 + 1485 1486001 9.35846e-05 1.36354 -0.872866 -0.872871 + 1486 1487001 9.33047e-05 1.36354 -0.872866 -0.872871 + 1487 1488001 9.30256e-05 1.36395 -0.872852 -0.872871 + 1488 1489001 9.27474e-05 1.36256 -0.872862 -0.872871 + 1489 1490001 9.247e-05 1.36502 -0.872768 -0.872871 + 1490 1491001 9.21934e-05 1.36081 -0.872714 -0.872871 + 1491 1492001 9.19176e-05 1.36533 -0.872731 -0.872871 + 1492 1493001 9.16427e-05 1.36374 -0.872861 -0.872871 + 1493 1494001 9.13686e-05 1.36354 -0.872866 -0.872871 + 1494 1495001 9.10953e-05 1.36354 -0.872866 -0.872871 + 1495 1496001 9.08228e-05 1.36238 -0.872855 -0.872871 + 1496 1497001 9.05512e-05 1.36416 -0.872841 -0.872871 + 1497 1498001 9.02804e-05 1.36416 -0.872841 -0.872871 + 1498 1499001 9.00103e-05 1.3644 -0.872825 -0.872871 + 1499 1500001 8.97411e-05 1.36689 -0.872461 -0.872871 + 1500 1501001 8.94727e-05 1.36263 -0.872864 -0.872871 + 1501 1502001 8.92051e-05 1.36387 -0.872855 -0.872871 + 1502 1503001 8.89383e-05 1.36387 -0.872855 -0.872871 + 1503 1504001 8.86722e-05 1.3626 -0.872863 -0.872871 + 1504 1505001 8.8407e-05 1.3626 -0.872863 -0.872871 + 1505 1506001 8.81426e-05 1.36317 -0.872871 -0.872871 + 1506 1507001 8.78789e-05 1.36331 -0.87287 -0.872871 + 1507 1508001 8.76161e-05 1.36331 -0.87287 -0.872871 + 1508 1509001 8.7354e-05 1.3635 -0.872867 -0.872871 + 1509 1510001 8.70928e-05 1.36244 -0.872857 -0.872871 + 1510 1511001 8.68323e-05 1.36353 -0.872867 -0.872871 + 1511 1512001 8.65725e-05 1.36407 -0.872845 -0.872871 + 1512 1513001 8.63136e-05 1.36461 -0.872808 -0.872871 + 1513 1514001 8.60554e-05 1.36553 -0.872705 -0.872871 + 1514 1515001 8.5798e-05 1.36138 -0.872783 -0.872871 + 1515 1516001 8.55414e-05 1.36443 -0.872822 -0.872871 + 1516 1517001 8.52856e-05 1.36273 -0.872867 -0.872871 + 1517 1518001 8.50305e-05 1.36376 -0.87286 -0.872871 + 1518 1519001 8.47761e-05 1.36346 -0.872868 -0.872871 + 1519 1520001 8.45226e-05 1.36404 -0.872847 -0.872871 + 1520 1521001 8.42698e-05 1.36374 -0.872861 -0.872871 + 1521 1522001 8.40177e-05 1.36313 -0.872871 -0.872871 + 1522 1523001 8.37664e-05 1.36437 -0.872827 -0.872871 + 1523 1524001 8.35159e-05 1.36437 -0.872827 -0.872871 + 1524 1525001 8.32661e-05 1.36232 -0.872852 -0.872871 + 1525 1526001 8.3017e-05 1.36437 -0.872826 -0.872871 + 1526 1527001 8.27687e-05 1.36254 -0.872861 -0.872871 + 1527 1528001 8.25211e-05 1.36264 -0.872864 -0.872871 + 1528 1529001 8.22743e-05 1.36377 -0.872859 -0.872871 + 1529 1530001 8.20282e-05 1.36143 -0.872787 -0.872871 + 1530 1531001 8.17829e-05 1.36241 -0.872856 -0.872871 + 1531 1532001 8.15383e-05 1.36552 -0.872706 -0.872871 + 1532 1533001 8.12944e-05 1.36189 -0.872826 -0.872871 + 1533 1534001 8.10512e-05 1.36325 -0.872871 -0.872871 + 1534 1535001 8.08088e-05 1.36337 -0.872869 -0.872871 + 1535 1536001 8.05671e-05 1.36337 -0.872869 -0.872871 + 1536 1537001 8.03261e-05 1.36337 -0.872869 -0.872871 + 1537 1538001 8.00859e-05 1.36414 -0.872842 -0.872871 + 1538 1539001 7.98463e-05 1.36355 -0.872866 -0.872871 + 1539 1540001 7.96075e-05 1.36355 -0.872866 -0.872871 + 1540 1541001 7.93694e-05 1.36372 -0.872861 -0.872871 + 1541 1542001 7.9132e-05 1.3621 -0.87284 -0.872871 + 1542 1543001 7.88953e-05 1.36443 -0.872822 -0.872871 + 1543 1544001 7.86593e-05 1.36295 -0.87287 -0.872871 + 1544 1545001 7.84241e-05 1.36128 -0.872772 -0.872871 + 1545 1546001 7.81895e-05 1.364 -0.872849 -0.872871 + 1546 1547001 7.79556e-05 1.3649 -0.87278 -0.872871 + 1547 1548001 7.77225e-05 1.36311 -0.872871 -0.872871 + 1548 1549001 7.749e-05 1.36095 -0.872733 -0.872871 + 1549 1550001 7.72582e-05 1.36508 -0.872761 -0.872871 + 1550 1551001 7.70271e-05 1.36479 -0.872792 -0.872871 + 1551 1552001 7.67968e-05 1.3613 -0.872774 -0.872871 + 1552 1553001 7.65671e-05 1.36154 -0.872798 -0.872871 + 1553 1554001 7.6338e-05 1.36432 -0.87283 -0.872871 + 1554 1555001 7.61097e-05 1.36244 -0.872857 -0.872871 + 1555 1556001 7.58821e-05 1.36252 -0.87286 -0.872871 + 1556 1557001 7.56551e-05 1.36272 -0.872866 -0.872871 + 1557 1558001 7.54288e-05 1.36272 -0.872866 -0.872871 + 1558 1559001 7.52032e-05 1.36088 -0.872724 -0.872871 + 1559 1560001 7.49783e-05 1.36562 -0.872692 -0.872871 + 1560 1561001 7.4754e-05 1.36259 -0.872863 -0.872871 + 1561 1562001 7.45304e-05 1.36259 -0.872863 -0.872871 + 1562 1563001 7.43075e-05 1.36166 -0.872808 -0.872871 + 1563 1564001 7.40852e-05 1.36219 -0.872845 -0.872871 + 1564 1565001 7.38636e-05 1.36264 -0.872864 -0.872871 + 1565 1566001 7.36427e-05 1.36414 -0.872842 -0.872871 + 1566 1567001 7.34225e-05 1.36185 -0.872824 -0.872871 + 1567 1568001 7.32028e-05 1.36353 -0.872867 -0.872871 + 1568 1569001 7.29839e-05 1.36233 -0.872853 -0.872871 + 1569 1570001 7.27656e-05 1.3626 -0.872863 -0.872871 + 1570 1571001 7.25479e-05 1.36337 -0.87287 -0.872871 + 1571 1572001 7.2331e-05 1.36337 -0.87287 -0.872871 + 1572 1573001 7.21146e-05 1.36227 -0.87285 -0.872871 + 1573 1574001 7.18989e-05 1.36429 -0.872832 -0.872871 + 1574 1575001 7.16839e-05 1.36295 -0.87287 -0.872871 + 1575 1576001 7.14695e-05 1.3617 -0.872812 -0.872871 + 1576 1577001 7.12557e-05 1.3617 -0.872812 -0.872871 + 1577 1578001 7.10426e-05 1.36253 -0.872861 -0.872871 + 1578 1579001 7.08301e-05 1.36317 -0.872871 -0.872871 + 1579 1580001 7.06182e-05 1.36317 -0.872871 -0.872871 + 1580 1581001 7.0407e-05 1.36317 -0.872871 -0.872871 + 1581 1582001 7.01964e-05 1.36508 -0.872761 -0.872871 + 1582 1583001 6.99864e-05 1.36508 -0.872761 -0.872871 + 1583 1584001 6.97771e-05 1.36511 -0.872757 -0.872871 + 1584 1585001 6.95684e-05 1.36413 -0.872842 -0.872871 + 1585 1586001 6.93603e-05 1.36323 -0.872871 -0.872871 + 1586 1587001 6.91529e-05 1.36205 -0.872838 -0.872871 + 1587 1588001 6.8946e-05 1.3646 -0.872809 -0.872871 + 1588 1589001 6.87398e-05 1.36411 -0.872843 -0.872871 + 1589 1590001 6.85342e-05 1.36117 -0.872759 -0.872871 + 1590 1591001 6.83292e-05 1.36388 -0.872855 -0.872871 + 1591 1592001 6.81248e-05 1.36388 -0.872855 -0.872871 + 1592 1593001 6.79211e-05 1.36109 -0.87275 -0.872871 + 1593 1594001 6.77179e-05 1.36221 -0.872847 -0.872871 + 1594 1595001 6.75154e-05 1.36394 -0.872852 -0.872871 + 1595 1596001 6.73134e-05 1.3643 -0.872832 -0.872871 + 1596 1597001 6.71121e-05 1.36331 -0.87287 -0.872871 + 1597 1598001 6.69114e-05 1.36299 -0.872871 -0.872871 + 1598 1599001 6.67112e-05 1.36357 -0.872866 -0.872871 + 1599 1600001 6.65117e-05 1.36118 -0.872761 -0.872871 + 1600 1601001 6.63128e-05 1.36215 -0.872843 -0.872871 + 1601 1602001 6.61144e-05 1.36454 -0.872813 -0.872871 + 1602 1603001 6.59167e-05 1.36454 -0.872813 -0.872871 + 1603 1604001 6.57195e-05 1.36327 -0.872871 -0.872871 + 1604 1605001 6.55229e-05 1.36276 -0.872867 -0.872871 + 1605 1606001 6.5327e-05 1.36437 -0.872827 -0.872871 + 1606 1607001 6.51316e-05 1.36351 -0.872867 -0.872871 + 1607 1608001 6.49368e-05 1.3652 -0.872746 -0.872871 + 1608 1609001 6.47425e-05 1.36478 -0.872793 -0.872871 + 1609 1610001 6.45489e-05 1.36478 -0.872793 -0.872871 + 1610 1611001 6.43558e-05 1.36363 -0.872864 -0.872871 + 1611 1612001 6.41633e-05 1.36478 -0.872792 -0.872871 + 1612 1613001 6.39714e-05 1.36159 -0.872803 -0.872871 + 1613 1614001 6.37801e-05 1.36422 -0.872837 -0.872871 + 1614 1615001 6.35893e-05 1.36446 -0.87282 -0.872871 + 1615 1616001 6.33991e-05 1.36227 -0.87285 -0.872871 + 1616 1617001 6.32095e-05 1.3645 -0.872817 -0.872871 + 1617 1618001 6.30204e-05 1.36347 -0.872868 -0.872871 + 1618 1619001 6.28319e-05 1.36263 -0.872864 -0.872871 + 1619 1620001 6.2644e-05 1.36142 -0.872787 -0.872871 + 1620 1621001 6.24566e-05 1.36507 -0.872762 -0.872871 + 1621 1622001 6.22698e-05 1.36191 -0.872828 -0.872871 + 1622 1623001 6.20836e-05 1.36178 -0.872819 -0.872871 + 1623 1624001 6.18979e-05 1.36178 -0.872819 -0.872871 + 1624 1625001 6.17127e-05 1.36176 -0.872817 -0.872871 + 1625 1626001 6.15281e-05 1.36306 -0.872871 -0.872871 + 1626 1627001 6.13441e-05 1.36405 -0.872847 -0.872871 + 1627 1628001 6.11606e-05 1.36405 -0.872847 -0.872871 + 1628 1629001 6.09777e-05 1.36325 -0.872871 -0.872871 + 1629 1630001 6.07953e-05 1.36238 -0.872855 -0.872871 + 1630 1631001 6.06135e-05 1.36382 -0.872857 -0.872871 + 1631 1632001 6.04322e-05 1.36066 -0.872694 -0.872871 + 1632 1633001 6.02514e-05 1.36505 -0.872764 -0.872871 + 1633 1634001 6.00712e-05 1.36302 -0.872871 -0.872871 + 1634 1635001 5.98915e-05 1.36302 -0.872871 -0.872871 + 1635 1636001 5.97124e-05 1.36486 -0.872784 -0.872871 + 1636 1637001 5.95338e-05 1.36253 -0.872861 -0.872871 + 1637 1638001 5.93557e-05 1.36246 -0.872858 -0.872871 + 1638 1639001 5.91782e-05 1.36127 -0.872771 -0.872871 + 1639 1640001 5.90012e-05 1.36127 -0.872771 -0.872871 + 1640 1641001 5.88247e-05 1.36262 -0.872864 -0.872871 + 1641 1642001 5.86488e-05 1.36386 -0.872856 -0.872871 + 1642 1643001 5.84733e-05 1.3639 -0.872854 -0.872871 + 1643 1644001 5.82985e-05 1.36272 -0.872866 -0.872871 + 1644 1645001 5.81241e-05 1.36272 -0.872866 -0.872871 + 1645 1646001 5.79502e-05 1.36253 -0.872861 -0.872871 + 1646 1647001 5.77769e-05 1.36253 -0.872861 -0.872871 + 1647 1648001 5.76041e-05 1.36344 -0.872868 -0.872871 + 1648 1649001 5.74318e-05 1.36348 -0.872868 -0.872871 + 1649 1650001 5.726e-05 1.36348 -0.872868 -0.872871 + 1650 1651001 5.70887e-05 1.36327 -0.872871 -0.872871 + 1651 1652001 5.6918e-05 1.36283 -0.872869 -0.872871 + 1652 1653001 5.67477e-05 1.36283 -0.872869 -0.872871 + 1653 1654001 5.6578e-05 1.36395 -0.872852 -0.872871 + 1654 1655001 5.64088e-05 1.36395 -0.872852 -0.872871 + 1655 1656001 5.62401e-05 1.36375 -0.87286 -0.872871 + 1656 1657001 5.60719e-05 1.36375 -0.87286 -0.872871 + 1657 1658001 5.59041e-05 1.36189 -0.872827 -0.872871 + 1658 1659001 5.57369e-05 1.36168 -0.87281 -0.872871 + 1659 1660001 5.55702e-05 1.36105 -0.872746 -0.872871 + 1660 1661001 5.5404e-05 1.36105 -0.872746 -0.872871 + 1661 1662001 5.52383e-05 1.36256 -0.872862 -0.872871 + 1662 1663001 5.50731e-05 1.36298 -0.872871 -0.872871 + 1663 1664001 5.49083e-05 1.36419 -0.872839 -0.872871 + 1664 1665001 5.47441e-05 1.36419 -0.872839 -0.872871 + 1665 1666001 5.45804e-05 1.36348 -0.872868 -0.872871 + 1666 1667001 5.44171e-05 1.36175 -0.872816 -0.872871 + 1667 1668001 5.42544e-05 1.36401 -0.872849 -0.872871 + 1668 1669001 5.40921e-05 1.36186 -0.872824 -0.872871 + 1669 1670001 5.39303e-05 1.36365 -0.872864 -0.872871 + 1670 1671001 5.3769e-05 1.36365 -0.872864 -0.872871 + 1671 1672001 5.36082e-05 1.36231 -0.872852 -0.872871 + 1672 1673001 5.34478e-05 1.36327 -0.872871 -0.872871 + 1673 1674001 5.3288e-05 1.36299 -0.872871 -0.872871 + 1674 1675001 5.31286e-05 1.36269 -0.872866 -0.872871 + 1675 1676001 5.29697e-05 1.36158 -0.872802 -0.872871 + 1676 1677001 5.28112e-05 1.36316 -0.872871 -0.872871 + 1677 1678001 5.26533e-05 1.36292 -0.87287 -0.872871 + 1678 1679001 5.24958e-05 1.3623 -0.872851 -0.872871 + 1679 1680001 5.23388e-05 1.36274 -0.872867 -0.872871 + 1680 1681001 5.21822e-05 1.361 -0.872739 -0.872871 + 1681 1682001 5.20261e-05 1.3629 -0.87287 -0.872871 + 1682 1683001 5.18705e-05 1.36335 -0.87287 -0.872871 + 1683 1684001 5.17154e-05 1.36304 -0.872871 -0.872871 + 1684 1685001 5.15607e-05 1.36304 -0.872871 -0.872871 + 1685 1686001 5.14065e-05 1.36304 -0.872871 -0.872871 + 1686 1687001 5.12527e-05 1.36319 -0.872871 -0.872871 + 1687 1688001 5.10994e-05 1.3634 -0.872869 -0.872871 + 1688 1689001 5.09466e-05 1.36572 -0.872677 -0.872871 + 1689 1690001 5.07942e-05 1.3641 -0.872844 -0.872871 + 1690 1691001 5.06423e-05 1.36262 -0.872864 -0.872871 + 1691 1692001 5.04908e-05 1.362 -0.872834 -0.872871 + 1692 1693001 5.03398e-05 1.362 -0.872834 -0.872871 + 1693 1694001 5.01892e-05 1.36451 -0.872816 -0.872871 + 1694 1695001 5.00391e-05 1.36458 -0.87281 -0.872871 + 1695 1696001 4.98894e-05 1.36206 -0.872838 -0.872871 + 1696 1697001 4.97402e-05 1.36201 -0.872835 -0.872871 + 1697 1698001 4.95914e-05 1.36201 -0.872835 -0.872871 + 1698 1699001 4.94431e-05 1.36201 -0.872835 -0.872871 + 1699 1700001 4.92952e-05 1.36201 -0.872835 -0.872871 + 1700 1701001 4.91478e-05 1.36251 -0.87286 -0.872871 + 1701 1702001 4.90008e-05 1.3634 -0.872869 -0.872871 + 1702 1703001 4.88542e-05 1.36247 -0.872858 -0.872871 + 1703 1704001 4.87081e-05 1.36469 -0.872801 -0.872871 + 1704 1705001 4.85624e-05 1.36194 -0.87283 -0.872871 + 1705 1706001 4.84171e-05 1.36335 -0.87287 -0.872871 + 1706 1707001 4.82723e-05 1.3626 -0.872863 -0.872871 + 1707 1708001 4.81279e-05 1.3636 -0.872865 -0.872871 + 1708 1709001 4.7984e-05 1.36352 -0.872867 -0.872871 + 1709 1710001 4.78405e-05 1.36368 -0.872863 -0.872871 + 1710 1711001 4.76974e-05 1.36368 -0.872863 -0.872871 + 1711 1712001 4.75547e-05 1.36392 -0.872853 -0.872871 + 1712 1713001 4.74125e-05 1.36269 -0.872866 -0.872871 + 1713 1714001 4.72707e-05 1.36269 -0.872866 -0.872871 + 1714 1715001 4.71293e-05 1.36339 -0.872869 -0.872871 + 1715 1716001 4.69883e-05 1.3627 -0.872866 -0.872871 + 1716 1717001 4.68478e-05 1.36275 -0.872867 -0.872871 + 1717 1718001 4.67076e-05 1.36303 -0.872871 -0.872871 + 1718 1719001 4.65679e-05 1.36517 -0.872751 -0.872871 + 1719 1720001 4.64287e-05 1.36192 -0.872828 -0.872871 + 1720 1721001 4.62898e-05 1.3632 -0.872871 -0.872871 + 1721 1722001 4.61513e-05 1.36169 -0.872811 -0.872871 + 1722 1723001 4.60133e-05 1.36366 -0.872863 -0.872871 + 1723 1724001 4.58757e-05 1.36353 -0.872867 -0.872871 + 1724 1725001 4.57385e-05 1.36326 -0.872871 -0.872871 + 1725 1726001 4.56016e-05 1.36326 -0.872871 -0.872871 + 1726 1727001 4.54653e-05 1.3627 -0.872866 -0.872871 + 1727 1728001 4.53293e-05 1.36245 -0.872858 -0.872871 + 1728 1729001 4.51937e-05 1.36278 -0.872868 -0.872871 + 1729 1730001 4.50585e-05 1.36278 -0.872868 -0.872871 + 1730 1731001 4.49237e-05 1.36278 -0.872868 -0.872871 + 1731 1732001 4.47894e-05 1.36278 -0.872868 -0.872871 + 1732 1733001 4.46554e-05 1.36311 -0.872871 -0.872871 + 1733 1734001 4.45218e-05 1.36374 -0.87286 -0.872871 + 1734 1735001 4.43887e-05 1.36374 -0.87286 -0.872871 + 1735 1736001 4.42559e-05 1.36482 -0.872789 -0.872871 + 1736 1737001 4.41235e-05 1.36324 -0.872871 -0.872871 + 1737 1738001 4.39916e-05 1.36187 -0.872825 -0.872871 + 1738 1739001 4.386e-05 1.36322 -0.872871 -0.872871 + 1739 1740001 4.37288e-05 1.36291 -0.87287 -0.872871 + 1740 1741001 4.3598e-05 1.36215 -0.872843 -0.872871 + 1741 1742001 4.34676e-05 1.36215 -0.872843 -0.872871 + 1742 1743001 4.33376e-05 1.36215 -0.872843 -0.872871 + 1743 1744001 4.3208e-05 1.36209 -0.87284 -0.872871 + 1744 1745001 4.30787e-05 1.36306 -0.872871 -0.872871 + 1745 1746001 4.29499e-05 1.36295 -0.87287 -0.872871 + 1746 1747001 4.28214e-05 1.36295 -0.87287 -0.872871 + 1747 1748001 4.26933e-05 1.36317 -0.872871 -0.872871 + 1748 1749001 4.25656e-05 1.36276 -0.872867 -0.872871 + 1749 1750001 4.24383e-05 1.36276 -0.872867 -0.872871 + 1750 1751001 4.23114e-05 1.36312 -0.872871 -0.872871 + 1751 1752001 4.21848e-05 1.36299 -0.872871 -0.872871 + 1752 1753001 4.20587e-05 1.36355 -0.872866 -0.872871 + 1753 1754001 4.19329e-05 1.36355 -0.872866 -0.872871 + 1754 1755001 4.18074e-05 1.36274 -0.872867 -0.872871 + 1755 1756001 4.16824e-05 1.36211 -0.872841 -0.872871 + 1756 1757001 4.15577e-05 1.36315 -0.872871 -0.872871 + 1757 1758001 4.14334e-05 1.3631 -0.872871 -0.872871 + 1758 1759001 4.13095e-05 1.3631 -0.872871 -0.872871 + 1759 1760001 4.11859e-05 1.36393 -0.872853 -0.872871 + 1760 1761001 4.10627e-05 1.36264 -0.872864 -0.872871 + 1761 1762001 4.09399e-05 1.36296 -0.87287 -0.872871 + 1762 1763001 4.08175e-05 1.36296 -0.87287 -0.872871 + 1763 1764001 4.06954e-05 1.36296 -0.87287 -0.872871 + 1764 1765001 4.05737e-05 1.36353 -0.872866 -0.872871 + 1765 1766001 4.04523e-05 1.36163 -0.872806 -0.872871 + 1766 1767001 4.03313e-05 1.36213 -0.872842 -0.872871 + 1767 1768001 4.02107e-05 1.36216 -0.872844 -0.872871 + 1768 1769001 4.00904e-05 1.36221 -0.872847 -0.872871 + 1769 1770001 3.99705e-05 1.36197 -0.872832 -0.872871 + 1770 1771001 3.98509e-05 1.36197 -0.872832 -0.872871 + 1771 1772001 3.97317e-05 1.36279 -0.872868 -0.872871 + 1772 1773001 3.96129e-05 1.36279 -0.872868 -0.872871 + 1773 1774001 3.94944e-05 1.36382 -0.872858 -0.872871 + 1774 1775001 3.93763e-05 1.3622 -0.872846 -0.872871 + 1775 1776001 3.92585e-05 1.363 -0.872871 -0.872871 + 1776 1777001 3.91411e-05 1.363 -0.872871 -0.872871 + 1777 1778001 3.9024e-05 1.36098 -0.872737 -0.872871 + 1778 1779001 3.89073e-05 1.36324 -0.872871 -0.872871 + 1779 1780001 3.87909e-05 1.36239 -0.872855 -0.872871 + 1780 1781001 3.86749e-05 1.36239 -0.872855 -0.872871 + 1781 1782001 3.85592e-05 1.36239 -0.872855 -0.872871 + 1782 1783001 3.84439e-05 1.36344 -0.872868 -0.872871 + 1783 1784001 3.83289e-05 1.36394 -0.872852 -0.872871 + 1784 1785001 3.82143e-05 1.36386 -0.872856 -0.872871 + 1785 1786001 3.81e-05 1.36386 -0.872856 -0.872871 + 1786 1787001 3.7986e-05 1.36386 -0.872856 -0.872871 + 1787 1788001 3.78724e-05 1.36214 -0.872843 -0.872871 + 1788 1789001 3.77591e-05 1.3631 -0.872871 -0.872871 + 1789 1790001 3.76462e-05 1.3631 -0.872871 -0.872871 + 1790 1791001 3.75336e-05 1.36225 -0.872849 -0.872871 + 1791 1792001 3.74213e-05 1.36225 -0.872849 -0.872871 + 1792 1793001 3.73094e-05 1.3635 -0.872867 -0.872871 + 1793 1794001 3.71978e-05 1.36278 -0.872868 -0.872871 + 1794 1795001 3.70865e-05 1.36359 -0.872865 -0.872871 + 1795 1796001 3.69756e-05 1.36359 -0.872865 -0.872871 + 1796 1797001 3.6865e-05 1.36359 -0.872865 -0.872871 + 1797 1798001 3.67547e-05 1.36302 -0.872871 -0.872871 + 1798 1799001 3.66448e-05 1.36176 -0.872817 -0.872871 + 1799 1800001 3.65352e-05 1.36336 -0.87287 -0.872871 + 1800 1801001 3.64259e-05 1.36313 -0.872871 -0.872871 + 1801 1802001 3.6317e-05 1.3621 -0.87284 -0.872871 + 1802 1803001 3.62083e-05 1.36376 -0.87286 -0.872871 + 1803 1804001 3.61e-05 1.36346 -0.872868 -0.872871 + 1804 1805001 3.59921e-05 1.36409 -0.872845 -0.872871 + 1805 1806001 3.58844e-05 1.36209 -0.87284 -0.872871 + 1806 1807001 3.57771e-05 1.36332 -0.87287 -0.872871 + 1807 1808001 3.56701e-05 1.36332 -0.87287 -0.872871 + 1808 1809001 3.55634e-05 1.3637 -0.872862 -0.872871 + 1809 1810001 3.5457e-05 1.36253 -0.872861 -0.872871 + 1810 1811001 3.5351e-05 1.36253 -0.872861 -0.872871 + 1811 1812001 3.52452e-05 1.36201 -0.872835 -0.872871 + 1812 1813001 3.51398e-05 1.36285 -0.872869 -0.872871 + 1813 1814001 3.50347e-05 1.36368 -0.872863 -0.872871 + 1814 1815001 3.49299e-05 1.36345 -0.872868 -0.872871 + 1815 1816001 3.48254e-05 1.36261 -0.872863 -0.872871 + 1816 1817001 3.47213e-05 1.36369 -0.872862 -0.872871 + 1817 1818001 3.46174e-05 1.36369 -0.872862 -0.872871 + 1818 1819001 3.45139e-05 1.36445 -0.87282 -0.872871 + 1819 1820001 3.44106e-05 1.36378 -0.872859 -0.872871 + 1820 1821001 3.43077e-05 1.36394 -0.872852 -0.872871 + 1821 1822001 3.42051e-05 1.36394 -0.872852 -0.872871 + 1822 1823001 3.41028e-05 1.36347 -0.872868 -0.872871 + 1823 1824001 3.40008e-05 1.36311 -0.872871 -0.872871 + 1824 1825001 3.38991e-05 1.36246 -0.872858 -0.872871 + 1825 1826001 3.37977e-05 1.36266 -0.872865 -0.872871 + 1826 1827001 3.36966e-05 1.3624 -0.872856 -0.872871 + 1827 1828001 3.35958e-05 1.3624 -0.872856 -0.872871 + 1828 1829001 3.34953e-05 1.36332 -0.87287 -0.872871 + 1829 1830001 3.33952e-05 1.36332 -0.87287 -0.872871 + 1830 1831001 3.32953e-05 1.36332 -0.87287 -0.872871 + 1831 1832001 3.31957e-05 1.36332 -0.87287 -0.872871 + 1832 1833001 3.30964e-05 1.36398 -0.87285 -0.872871 + 1833 1834001 3.29974e-05 1.36359 -0.872865 -0.872871 + 1834 1835001 3.28987e-05 1.36334 -0.87287 -0.872871 + 1835 1836001 3.28003e-05 1.36244 -0.872857 -0.872871 + 1836 1837001 3.27022e-05 1.36358 -0.872865 -0.872871 + 1837 1838001 3.26044e-05 1.36358 -0.872865 -0.872871 + 1838 1839001 3.25069e-05 1.36406 -0.872846 -0.872871 + 1839 1840001 3.24096e-05 1.36267 -0.872865 -0.872871 + 1840 1841001 3.23127e-05 1.36463 -0.872806 -0.872871 + 1841 1842001 3.22161e-05 1.36425 -0.872835 -0.872871 + 1842 1843001 3.21197e-05 1.36411 -0.872843 -0.872871 + 1843 1844001 3.20236e-05 1.36211 -0.872841 -0.872871 + 1844 1845001 3.19278e-05 1.36369 -0.872862 -0.872871 + 1845 1846001 3.18323e-05 1.3632 -0.872871 -0.872871 + 1846 1847001 3.17371e-05 1.3632 -0.872871 -0.872871 + 1847 1848001 3.16422e-05 1.36343 -0.872869 -0.872871 + 1848 1849001 3.15476e-05 1.36185 -0.872823 -0.872871 + 1849 1850001 3.14532e-05 1.36438 -0.872826 -0.872871 + 1850 1851001 3.13591e-05 1.36316 -0.872871 -0.872871 + 1851 1852001 3.12653e-05 1.36359 -0.872865 -0.872871 + 1852 1853001 3.11718e-05 1.36264 -0.872864 -0.872871 + 1853 1854001 3.10786e-05 1.36348 -0.872868 -0.872871 + 1854 1855001 3.09856e-05 1.36348 -0.872868 -0.872871 + 1855 1856001 3.08929e-05 1.3637 -0.872862 -0.872871 + 1856 1857001 3.08005e-05 1.36327 -0.872871 -0.872871 + 1857 1858001 3.07084e-05 1.36426 -0.872834 -0.872871 + 1858 1859001 3.06166e-05 1.36322 -0.872871 -0.872871 + 1859 1860001 3.0525e-05 1.3629 -0.87287 -0.872871 + 1860 1861001 3.04337e-05 1.3629 -0.87287 -0.872871 + 1861 1862001 3.03427e-05 1.36321 -0.872871 -0.872871 + 1862 1863001 3.02519e-05 1.36252 -0.87286 -0.872871 + 1863 1864001 3.01614e-05 1.36339 -0.872869 -0.872871 + 1864 1865001 3.00712e-05 1.36339 -0.872869 -0.872871 + 1865 1866001 2.99813e-05 1.36339 -0.872869 -0.872871 + 1866 1867001 2.98916e-05 1.36339 -0.872869 -0.872871 + 1867 1868001 2.98022e-05 1.36143 -0.872787 -0.872871 + 1868 1869001 2.9713e-05 1.36473 -0.872797 -0.872871 + 1869 1870001 2.96242e-05 1.36473 -0.872797 -0.872871 + 1870 1871001 2.95356e-05 1.3629 -0.87287 -0.872871 + 1871 1872001 2.94472e-05 1.36281 -0.872868 -0.872871 + 1872 1873001 2.93591e-05 1.36313 -0.872871 -0.872871 + 1873 1874001 2.92713e-05 1.36354 -0.872866 -0.872871 + 1874 1875001 2.91838e-05 1.36354 -0.872866 -0.872871 + 1875 1876001 2.90965e-05 1.3639 -0.872854 -0.872871 + 1876 1877001 2.90095e-05 1.36339 -0.872869 -0.872871 + 1877 1878001 2.89227e-05 1.36168 -0.87281 -0.872871 + 1878 1879001 2.88362e-05 1.36312 -0.872871 -0.872871 + 1879 1880001 2.87499e-05 1.36406 -0.872846 -0.872871 + 1880 1881001 2.86639e-05 1.3622 -0.872846 -0.872871 + 1881 1882001 2.85782e-05 1.3622 -0.872846 -0.872871 + 1882 1883001 2.84927e-05 1.3622 -0.872846 -0.872871 + 1883 1884001 2.84075e-05 1.36263 -0.872864 -0.872871 + 1884 1885001 2.83225e-05 1.36356 -0.872866 -0.872871 + 1885 1886001 2.82378e-05 1.36356 -0.872866 -0.872871 + 1886 1887001 2.81534e-05 1.36384 -0.872857 -0.872871 + 1887 1888001 2.80692e-05 1.36384 -0.872857 -0.872871 + 1888 1889001 2.79852e-05 1.36346 -0.872868 -0.872871 + 1889 1890001 2.79015e-05 1.36346 -0.872868 -0.872871 + 1890 1891001 2.7818e-05 1.36331 -0.87287 -0.872871 + 1891 1892001 2.77348e-05 1.36331 -0.87287 -0.872871 + 1892 1893001 2.76519e-05 1.36331 -0.87287 -0.872871 + 1893 1894001 2.75692e-05 1.3627 -0.872866 -0.872871 + 1894 1895001 2.74867e-05 1.36355 -0.872866 -0.872871 + 1895 1896001 2.74045e-05 1.36355 -0.872866 -0.872871 + 1896 1897001 2.73225e-05 1.36283 -0.872869 -0.872871 + 1897 1898001 2.72408e-05 1.36174 -0.872815 -0.872871 + 1898 1899001 2.71593e-05 1.36234 -0.872853 -0.872871 + 1899 1900001 2.70781e-05 1.36234 -0.872853 -0.872871 + 1900 1901001 2.69971e-05 1.3623 -0.872851 -0.872871 + 1901 1902001 2.69164e-05 1.36299 -0.872871 -0.872871 + 1902 1903001 2.68359e-05 1.36263 -0.872864 -0.872871 + 1903 1904001 2.67556e-05 1.36254 -0.872861 -0.872871 + 1904 1905001 2.66756e-05 1.36254 -0.872861 -0.872871 + 1905 1906001 2.65958e-05 1.36194 -0.87283 -0.872871 + 1906 1907001 2.65162e-05 1.36194 -0.87283 -0.872871 + 1907 1908001 2.64369e-05 1.3635 -0.872867 -0.872871 + 1908 1909001 2.63578e-05 1.36316 -0.872871 -0.872871 + 1909 1910001 2.6279e-05 1.36316 -0.872871 -0.872871 + 1910 1911001 2.62004e-05 1.36316 -0.872871 -0.872871 + 1911 1912001 2.6122e-05 1.36316 -0.872871 -0.872871 + 1912 1913001 2.60439e-05 1.363 -0.872871 -0.872871 + 1913 1914001 2.5966e-05 1.36462 -0.872806 -0.872871 + 1914 1915001 2.58883e-05 1.3637 -0.872862 -0.872871 + 1915 1916001 2.58109e-05 1.36303 -0.872871 -0.872871 + 1916 1917001 2.57337e-05 1.36299 -0.872871 -0.872871 + 1917 1918001 2.56567e-05 1.36299 -0.872871 -0.872871 + 1918 1919001 2.558e-05 1.36299 -0.872871 -0.872871 + 1919 1920001 2.55035e-05 1.36331 -0.87287 -0.872871 + 1920 1921001 2.54272e-05 1.36333 -0.87287 -0.872871 + 1921 1922001 2.53511e-05 1.36371 -0.872861 -0.872871 + 1922 1923001 2.52753e-05 1.36377 -0.872859 -0.872871 + 1923 1924001 2.51997e-05 1.36377 -0.872859 -0.872871 + 1924 1925001 2.51244e-05 1.36377 -0.872859 -0.872871 + 1925 1926001 2.50492e-05 1.36289 -0.87287 -0.872871 + 1926 1927001 2.49743e-05 1.36289 -0.87287 -0.872871 + 1927 1928001 2.48996e-05 1.36289 -0.87287 -0.872871 + 1928 1929001 2.48251e-05 1.36348 -0.872868 -0.872871 + 1929 1930001 2.47509e-05 1.36348 -0.872868 -0.872871 + 1930 1931001 2.46768e-05 1.36323 -0.872871 -0.872871 + 1931 1932001 2.4603e-05 1.36344 -0.872868 -0.872871 + 1932 1933001 2.45294e-05 1.36315 -0.872871 -0.872871 + 1933 1934001 2.44561e-05 1.36358 -0.872865 -0.872871 + 1934 1935001 2.43829e-05 1.36358 -0.872865 -0.872871 + 1935 1936001 2.431e-05 1.36254 -0.872861 -0.872871 + 1936 1937001 2.42373e-05 1.36299 -0.872871 -0.872871 + 1937 1938001 2.41648e-05 1.36335 -0.87287 -0.872871 + 1938 1939001 2.40925e-05 1.36274 -0.872867 -0.872871 + 1939 1940001 2.40204e-05 1.36274 -0.872867 -0.872871 + 1940 1941001 2.39486e-05 1.36274 -0.872867 -0.872871 + 1941 1942001 2.3877e-05 1.36274 -0.872867 -0.872871 + 1942 1943001 2.38055e-05 1.36274 -0.872867 -0.872871 + 1943 1944001 2.37343e-05 1.36287 -0.872869 -0.872871 + 1944 1945001 2.36633e-05 1.36345 -0.872868 -0.872871 + 1945 1946001 2.35926e-05 1.36224 -0.872848 -0.872871 + 1946 1947001 2.3522e-05 1.36224 -0.872848 -0.872871 + 1947 1948001 2.34516e-05 1.36417 -0.87284 -0.872871 + 1948 1949001 2.33815e-05 1.36173 -0.872815 -0.872871 + 1949 1950001 2.33116e-05 1.36173 -0.872815 -0.872871 + 1950 1951001 2.32418e-05 1.36345 -0.872868 -0.872871 + 1951 1952001 2.31723e-05 1.36286 -0.872869 -0.872871 + 1952 1953001 2.3103e-05 1.36286 -0.872869 -0.872871 + 1953 1954001 2.30339e-05 1.36286 -0.872869 -0.872871 + 1954 1955001 2.2965e-05 1.36286 -0.872869 -0.872871 + 1955 1956001 2.28963e-05 1.36385 -0.872856 -0.872871 + 1956 1957001 2.28278e-05 1.36256 -0.872862 -0.872871 + 1957 1958001 2.27596e-05 1.36256 -0.872862 -0.872871 + 1958 1959001 2.26915e-05 1.36256 -0.872862 -0.872871 + 1959 1960001 2.26236e-05 1.36256 -0.872862 -0.872871 + 1960 1961001 2.2556e-05 1.36357 -0.872866 -0.872871 + 1961 1962001 2.24885e-05 1.36282 -0.872868 -0.872871 + 1962 1963001 2.24212e-05 1.36282 -0.872868 -0.872871 + 1963 1964001 2.23542e-05 1.36373 -0.872861 -0.872871 + 1964 1965001 2.22873e-05 1.36382 -0.872857 -0.872871 + 1965 1966001 2.22206e-05 1.36305 -0.872871 -0.872871 + 1966 1967001 2.21542e-05 1.36346 -0.872868 -0.872871 + 1967 1968001 2.20879e-05 1.36285 -0.872869 -0.872871 + 1968 1969001 2.20219e-05 1.36317 -0.872871 -0.872871 + 1969 1970001 2.1956e-05 1.36291 -0.87287 -0.872871 + 1970 1971001 2.18903e-05 1.36308 -0.872871 -0.872871 + 1971 1972001 2.18248e-05 1.36197 -0.872832 -0.872871 + 1972 1973001 2.17596e-05 1.36323 -0.872871 -0.872871 + 1973 1974001 2.16945e-05 1.36323 -0.872871 -0.872871 + 1974 1975001 2.16296e-05 1.36324 -0.872871 -0.872871 + 1975 1976001 2.15649e-05 1.36323 -0.872871 -0.872871 + 1976 1977001 2.15004e-05 1.36323 -0.872871 -0.872871 + 1977 1978001 2.14361e-05 1.36378 -0.872859 -0.872871 + 1978 1979001 2.1372e-05 1.36314 -0.872871 -0.872871 + 1979 1980001 2.1308e-05 1.36327 -0.872871 -0.872871 + 1980 1981001 2.12443e-05 1.3631 -0.872871 -0.872871 + 1981 1982001 2.11808e-05 1.3631 -0.872871 -0.872871 + 1982 1983001 2.11174e-05 1.36334 -0.87287 -0.872871 + 1983 1984001 2.10543e-05 1.36334 -0.87287 -0.872871 + 1984 1985001 2.09913e-05 1.36334 -0.87287 -0.872871 + 1985 1986001 2.09285e-05 1.36258 -0.872862 -0.872871 + 1986 1987001 2.08659e-05 1.36258 -0.872862 -0.872871 + 1987 1988001 2.08035e-05 1.36258 -0.872862 -0.872871 + 1988 1989001 2.07413e-05 1.36258 -0.872862 -0.872871 + 1989 1990001 2.06792e-05 1.36367 -0.872863 -0.872871 + 1990 1991001 2.06174e-05 1.3623 -0.872851 -0.872871 + 1991 1992001 2.05557e-05 1.36308 -0.872871 -0.872871 + 1992 1993001 2.04942e-05 1.36234 -0.872853 -0.872871 + 1993 1994001 2.04329e-05 1.36272 -0.872866 -0.872871 + 1994 1995001 2.03718e-05 1.36272 -0.872866 -0.872871 + 1995 1996001 2.03109e-05 1.36272 -0.872866 -0.872871 + 1996 1997001 2.02501e-05 1.36272 -0.872866 -0.872871 + 1997 1998001 2.01896e-05 1.36272 -0.872866 -0.872871 + 1998 1999001 2.01292e-05 1.36226 -0.872849 -0.872871 + 1999 2000001 2.0069e-05 1.36315 -0.872871 -0.872871 + 2000 2001001 2.00089e-05 1.36315 -0.872871 -0.872871 + 2001 2002001 1.99491e-05 1.36315 -0.872871 -0.872871 + 2002 2003001 1.98894e-05 1.36347 -0.872868 -0.872871 + 2003 2004001 1.98299e-05 1.36275 -0.872867 -0.872871 + 2004 2005001 1.97706e-05 1.36275 -0.872867 -0.872871 + 2005 2006001 1.97115e-05 1.36255 -0.872862 -0.872871 + 2006 2007001 1.96525e-05 1.36276 -0.872867 -0.872871 + 2007 2008001 1.95937e-05 1.36276 -0.872867 -0.872871 + 2008 2009001 1.95351e-05 1.36332 -0.87287 -0.872871 + 2009 2010001 1.94767e-05 1.36332 -0.87287 -0.872871 + 2010 2011001 1.94185e-05 1.36332 -0.87287 -0.872871 + 2011 2012001 1.93604e-05 1.36361 -0.872864 -0.872871 + 2012 2013001 1.93025e-05 1.36361 -0.872864 -0.872871 + 2013 2014001 1.92447e-05 1.36361 -0.872864 -0.872871 + 2014 2015001 1.91872e-05 1.36268 -0.872865 -0.872871 + 2015 2016001 1.91298e-05 1.36268 -0.872865 -0.872871 + 2016 2017001 1.90726e-05 1.36385 -0.872856 -0.872871 + 2017 2018001 1.90155e-05 1.36385 -0.872856 -0.872871 + 2018 2019001 1.89586e-05 1.36347 -0.872868 -0.872871 + 2019 2020001 1.89019e-05 1.36315 -0.872871 -0.872871 + 2020 2021001 1.88454e-05 1.36315 -0.872871 -0.872871 + 2021 2022001 1.8789e-05 1.36315 -0.872871 -0.872871 + 2022 2023001 1.87328e-05 1.36275 -0.872867 -0.872871 + 2023 2024001 1.86768e-05 1.36285 -0.872869 -0.872871 + 2024 2025001 1.86209e-05 1.36192 -0.872829 -0.872871 + 2025 2026001 1.85652e-05 1.36271 -0.872866 -0.872871 + 2026 2027001 1.85097e-05 1.3624 -0.872856 -0.872871 + 2027 2028001 1.84544e-05 1.36254 -0.872861 -0.872871 + 2028 2029001 1.83992e-05 1.3622 -0.872846 -0.872871 + 2029 2030001 1.83441e-05 1.36245 -0.872858 -0.872871 + 2030 2031001 1.82893e-05 1.36363 -0.872864 -0.872871 + 2031 2032001 1.82345e-05 1.36347 -0.872868 -0.872871 + 2032 2033001 1.818e-05 1.36254 -0.872861 -0.872871 + 2033 2034001 1.81256e-05 1.36237 -0.872854 -0.872871 + 2034 2035001 1.80714e-05 1.36237 -0.872854 -0.872871 + 2035 2036001 1.80174e-05 1.36248 -0.872859 -0.872871 + 2036 2037001 1.79635e-05 1.36257 -0.872862 -0.872871 + 2037 2038001 1.79097e-05 1.36346 -0.872868 -0.872871 + 2038 2039001 1.78562e-05 1.36346 -0.872868 -0.872871 + 2039 2040001 1.78028e-05 1.36346 -0.872868 -0.872871 + 2040 2041001 1.77495e-05 1.36346 -0.872868 -0.872871 + 2041 2042001 1.76964e-05 1.36346 -0.872868 -0.872871 + 2042 2043001 1.76435e-05 1.36346 -0.872868 -0.872871 + 2043 2044001 1.75907e-05 1.36334 -0.87287 -0.872871 + 2044 2045001 1.75381e-05 1.36334 -0.87287 -0.872871 + 2045 2046001 1.74857e-05 1.3637 -0.872862 -0.872871 + 2046 2047001 1.74334e-05 1.3637 -0.872862 -0.872871 + 2047 2048001 1.73812e-05 1.3637 -0.872862 -0.872871 + 2048 2049001 1.73292e-05 1.3637 -0.872862 -0.872871 + 2049 2050001 1.72774e-05 1.36239 -0.872855 -0.872871 + 2050 2051001 1.72257e-05 1.36375 -0.87286 -0.872871 + 2051 2052001 1.71742e-05 1.36282 -0.872868 -0.872871 + 2052 2053001 1.71228e-05 1.36282 -0.872868 -0.872871 + 2053 2054001 1.70716e-05 1.36282 -0.872868 -0.872871 + 2054 2055001 1.70205e-05 1.36282 -0.872868 -0.872871 + 2055 2056001 1.69696e-05 1.36282 -0.872868 -0.872871 + 2056 2057001 1.69189e-05 1.36282 -0.872868 -0.872871 + 2057 2058001 1.68683e-05 1.36282 -0.872868 -0.872871 + 2058 2059001 1.68178e-05 1.36282 -0.872868 -0.872871 + 2059 2060001 1.67675e-05 1.36282 -0.872868 -0.872871 + 2060 2061001 1.67174e-05 1.36282 -0.872868 -0.872871 + 2061 2062001 1.66674e-05 1.36282 -0.872868 -0.872871 + 2062 2063001 1.66175e-05 1.36309 -0.872871 -0.872871 + 2063 2064001 1.65678e-05 1.36247 -0.872858 -0.872871 + 2064 2065001 1.65183e-05 1.36233 -0.872853 -0.872871 + 2065 2066001 1.64689e-05 1.3627 -0.872866 -0.872871 + 2066 2067001 1.64196e-05 1.3627 -0.872866 -0.872871 + 2067 2068001 1.63705e-05 1.3627 -0.872866 -0.872871 + 2068 2069001 1.63215e-05 1.3627 -0.872866 -0.872871 + 2069 2070001 1.62727e-05 1.3625 -0.87286 -0.872871 + 2070 2071001 1.6224e-05 1.36342 -0.872869 -0.872871 + 2071 2072001 1.61755e-05 1.36214 -0.872843 -0.872871 + 2072 2073001 1.61271e-05 1.36301 -0.872871 -0.872871 + 2073 2074001 1.60789e-05 1.36368 -0.872862 -0.872871 + 2074 2075001 1.60308e-05 1.36337 -0.872869 -0.872871 + 2075 2076001 1.59828e-05 1.36337 -0.872869 -0.872871 + 2076 2077001 1.5935e-05 1.36337 -0.872869 -0.872871 + 2077 2078001 1.58874e-05 1.36317 -0.872871 -0.872871 + 2078 2079001 1.58399e-05 1.36423 -0.872836 -0.872871 + 2079 2080001 1.57925e-05 1.3621 -0.872841 -0.872871 + 2080 2081001 1.57452e-05 1.36254 -0.872861 -0.872871 + 2081 2082001 1.56981e-05 1.36257 -0.872862 -0.872871 + 2082 2083001 1.56512e-05 1.36257 -0.872862 -0.872871 + 2083 2084001 1.56044e-05 1.36257 -0.872862 -0.872871 + 2084 2085001 1.55577e-05 1.36257 -0.872862 -0.872871 + 2085 2086001 1.55112e-05 1.36257 -0.872862 -0.872871 + 2086 2087001 1.54648e-05 1.36337 -0.87287 -0.872871 + 2087 2088001 1.54185e-05 1.36241 -0.872856 -0.872871 + 2088 2089001 1.53724e-05 1.36241 -0.872856 -0.872871 + 2089 2090001 1.53264e-05 1.3627 -0.872866 -0.872871 + 2090 2091001 1.52806e-05 1.3627 -0.872866 -0.872871 + 2091 2092001 1.52349e-05 1.3627 -0.872866 -0.872871 + 2092 2093001 1.51893e-05 1.3636 -0.872865 -0.872871 + 2093 2094001 1.51439e-05 1.36265 -0.872865 -0.872871 + 2094 2095001 1.50986e-05 1.36265 -0.872865 -0.872871 + 2095 2096001 1.50534e-05 1.36265 -0.872865 -0.872871 + 2096 2097001 1.50084e-05 1.36265 -0.872865 -0.872871 + 2097 2098001 1.49635e-05 1.36265 -0.872865 -0.872871 + 2098 2099001 1.49188e-05 1.36368 -0.872863 -0.872871 + 2099 2100001 1.48741e-05 1.36315 -0.872871 -0.872871 + 2100 2101001 1.48296e-05 1.36315 -0.872871 -0.872871 + 2101 2102001 1.47853e-05 1.36315 -0.872871 -0.872871 + 2102 2103001 1.47411e-05 1.36315 -0.872871 -0.872871 + 2103 2104001 1.4697e-05 1.36315 -0.872871 -0.872871 + 2104 2105001 1.4653e-05 1.36315 -0.872871 -0.872871 + 2105 2106001 1.46092e-05 1.36315 -0.872871 -0.872871 + 2106 2107001 1.45655e-05 1.36315 -0.872871 -0.872871 + 2107 2108001 1.45219e-05 1.36315 -0.872871 -0.872871 + 2108 2109001 1.44785e-05 1.36276 -0.872867 -0.872871 + 2109 2110001 1.44352e-05 1.36359 -0.872865 -0.872871 + 2110 2111001 1.4392e-05 1.36345 -0.872868 -0.872871 + 2111 2112001 1.4349e-05 1.36345 -0.872868 -0.872871 + 2112 2113001 1.4306e-05 1.36238 -0.872855 -0.872871 + 2113 2114001 1.42633e-05 1.36273 -0.872867 -0.872871 + 2114 2115001 1.42206e-05 1.36274 -0.872867 -0.872871 + 2115 2116001 1.41781e-05 1.36274 -0.872867 -0.872871 + 2116 2117001 1.41356e-05 1.36274 -0.872867 -0.872871 + 2117 2118001 1.40934e-05 1.36274 -0.872867 -0.872871 + 2118 2119001 1.40512e-05 1.36365 -0.872863 -0.872871 + 2119 2120001 1.40092e-05 1.36235 -0.872854 -0.872871 + 2120 2121001 1.39673e-05 1.36235 -0.872854 -0.872871 + 2121 2122001 1.39255e-05 1.36235 -0.872854 -0.872871 + 2122 2123001 1.38839e-05 1.36235 -0.872854 -0.872871 + 2123 2124001 1.38423e-05 1.3631 -0.872871 -0.872871 + 2124 2125001 1.38009e-05 1.3631 -0.872871 -0.872871 + 2125 2126001 1.37596e-05 1.36287 -0.872869 -0.872871 + 2126 2127001 1.37185e-05 1.36232 -0.872852 -0.872871 + 2127 2128001 1.36775e-05 1.36261 -0.872863 -0.872871 + 2128 2129001 1.36366e-05 1.36317 -0.872871 -0.872871 + 2129 2130001 1.35958e-05 1.36317 -0.872871 -0.872871 + 2130 2131001 1.35551e-05 1.36329 -0.87287 -0.872871 + 2131 2132001 1.35146e-05 1.36256 -0.872862 -0.872871 + 2132 2133001 1.34741e-05 1.36256 -0.872862 -0.872871 + 2133 2134001 1.34338e-05 1.36256 -0.872862 -0.872871 + 2134 2135001 1.33936e-05 1.36256 -0.872862 -0.872871 + 2135 2136001 1.33536e-05 1.36256 -0.872862 -0.872871 + 2136 2137001 1.33136e-05 1.3631 -0.872871 -0.872871 + 2137 2138001 1.32738e-05 1.3631 -0.872871 -0.872871 + 2138 2139001 1.32341e-05 1.36292 -0.87287 -0.872871 + 2139 2140001 1.31945e-05 1.36331 -0.87287 -0.872871 + 2140 2141001 1.31551e-05 1.36239 -0.872855 -0.872871 + 2141 2142001 1.31157e-05 1.36239 -0.872855 -0.872871 + 2142 2143001 1.30765e-05 1.36317 -0.872871 -0.872871 + 2143 2144001 1.30374e-05 1.36299 -0.872871 -0.872871 + 2144 2145001 1.29984e-05 1.36299 -0.872871 -0.872871 + 2145 2146001 1.29595e-05 1.36335 -0.87287 -0.872871 + 2146 2147001 1.29208e-05 1.36335 -0.87287 -0.872871 + 2147 2148001 1.28821e-05 1.36334 -0.87287 -0.872871 + 2148 2149001 1.28436e-05 1.36303 -0.872871 -0.872871 + 2149 2150001 1.28052e-05 1.36337 -0.87287 -0.872871 + 2150 2151001 1.27669e-05 1.36274 -0.872867 -0.872871 + 2151 2152001 1.27287e-05 1.36327 -0.872871 -0.872871 + 2152 2153001 1.26906e-05 1.36327 -0.872871 -0.872871 + 2153 2154001 1.26526e-05 1.36291 -0.87287 -0.872871 + 2154 2155001 1.26148e-05 1.36291 -0.87287 -0.872871 + 2155 2156001 1.25771e-05 1.36291 -0.87287 -0.872871 + 2156 2157001 1.25394e-05 1.36291 -0.87287 -0.872871 + 2157 2158001 1.25019e-05 1.36291 -0.87287 -0.872871 + 2158 2159001 1.24645e-05 1.36236 -0.872854 -0.872871 + 2159 2160001 1.24273e-05 1.36232 -0.872852 -0.872871 + 2160 2161001 1.23901e-05 1.36253 -0.872861 -0.872871 + 2161 2162001 1.2353e-05 1.36186 -0.872824 -0.872871 + 2162 2163001 1.23161e-05 1.36239 -0.872855 -0.872871 + 2163 2164001 1.22793e-05 1.36239 -0.872855 -0.872871 + 2164 2165001 1.22425e-05 1.36239 -0.872855 -0.872871 + 2165 2166001 1.22059e-05 1.36239 -0.872855 -0.872871 + 2166 2167001 1.21694e-05 1.36273 -0.872867 -0.872871 + 2167 2168001 1.2133e-05 1.36273 -0.872867 -0.872871 + 2168 2169001 1.20967e-05 1.36346 -0.872868 -0.872871 + 2169 2170001 1.20605e-05 1.36346 -0.872868 -0.872871 + 2170 2171001 1.20245e-05 1.36341 -0.872869 -0.872871 + 2171 2172001 1.19885e-05 1.36341 -0.872869 -0.872871 + 2172 2173001 1.19526e-05 1.36341 -0.872869 -0.872871 + 2173 2174001 1.19169e-05 1.36313 -0.872871 -0.872871 + 2174 2175001 1.18812e-05 1.36238 -0.872855 -0.872871 + 2175 2176001 1.18457e-05 1.36302 -0.872871 -0.872871 + 2176 2177001 1.18103e-05 1.36302 -0.872871 -0.872871 + 2177 2178001 1.17749e-05 1.36271 -0.872866 -0.872871 + 2178 2179001 1.17397e-05 1.36271 -0.872866 -0.872871 + 2179 2180001 1.17046e-05 1.36271 -0.872866 -0.872871 + 2180 2181001 1.16696e-05 1.36263 -0.872864 -0.872871 + 2181 2182001 1.16347e-05 1.36263 -0.872864 -0.872871 + 2182 2183001 1.15999e-05 1.36292 -0.87287 -0.872871 + 2183 2184001 1.15652e-05 1.36274 -0.872867 -0.872871 + 2184 2185001 1.15306e-05 1.36274 -0.872867 -0.872871 + 2185 2186001 1.14961e-05 1.36384 -0.872857 -0.872871 + 2186 2187001 1.14617e-05 1.36384 -0.872857 -0.872871 + 2187 2188001 1.14275e-05 1.36395 -0.872852 -0.872871 + 2188 2189001 1.13933e-05 1.36273 -0.872867 -0.872871 + 2189 2190001 1.13592e-05 1.36273 -0.872867 -0.872871 + 2190 2191001 1.13252e-05 1.36273 -0.872867 -0.872871 + 2191 2192001 1.12913e-05 1.36273 -0.872867 -0.872871 + 2192 2193001 1.12576e-05 1.36322 -0.872871 -0.872871 + 2193 2194001 1.12239e-05 1.36322 -0.872871 -0.872871 + 2194 2195001 1.11903e-05 1.36281 -0.872868 -0.872871 + 2195 2196001 1.11569e-05 1.36314 -0.872871 -0.872871 + 2196 2197001 1.11235e-05 1.36344 -0.872868 -0.872871 + 2197 2198001 1.10902e-05 1.36316 -0.872871 -0.872871 + 2198 2199001 1.1057e-05 1.36316 -0.872871 -0.872871 + 2199 2200001 1.1024e-05 1.36316 -0.872871 -0.872871 + 2200 2201001 1.0991e-05 1.36316 -0.872871 -0.872871 + 2201 2202001 1.09581e-05 1.36316 -0.872871 -0.872871 + 2202 2203001 1.09254e-05 1.36287 -0.872869 -0.872871 + 2203 2204001 1.08927e-05 1.36287 -0.872869 -0.872871 + 2204 2205001 1.08601e-05 1.36287 -0.872869 -0.872871 + 2205 2206001 1.08276e-05 1.36287 -0.872869 -0.872871 + 2206 2207001 1.07952e-05 1.36287 -0.872869 -0.872871 + 2207 2208001 1.07629e-05 1.36218 -0.872845 -0.872871 + 2208 2209001 1.07307e-05 1.36203 -0.872836 -0.872871 + 2209 2210001 1.06986e-05 1.36339 -0.872869 -0.872871 + 2210 2211001 1.06666e-05 1.36339 -0.872869 -0.872871 + 2211 2212001 1.06347e-05 1.36339 -0.872869 -0.872871 + 2212 2213001 1.06029e-05 1.36279 -0.872868 -0.872871 + 2213 2214001 1.05712e-05 1.36279 -0.872868 -0.872871 + 2214 2215001 1.05396e-05 1.36279 -0.872868 -0.872871 + 2215 2216001 1.05081e-05 1.36304 -0.872871 -0.872871 + 2216 2217001 1.04766e-05 1.36337 -0.87287 -0.872871 + 2217 2218001 1.04453e-05 1.36337 -0.87287 -0.872871 + 2218 2219001 1.04141e-05 1.36374 -0.87286 -0.872871 + 2219 2220001 1.03829e-05 1.36374 -0.87286 -0.872871 + 2220 2221001 1.03519e-05 1.36371 -0.872861 -0.872871 + 2221 2222001 1.03209e-05 1.36273 -0.872867 -0.872871 + 2222 2223001 1.029e-05 1.36299 -0.872871 -0.872871 + 2223 2224001 1.02593e-05 1.36348 -0.872868 -0.872871 + 2224 2225001 1.02286e-05 1.36252 -0.87286 -0.872871 + 2225 2226001 1.0198e-05 1.36252 -0.87286 -0.872871 + 2226 2227001 1.01675e-05 1.36252 -0.87286 -0.872871 + 2227 2228001 1.01371e-05 1.36226 -0.872849 -0.872871 + 2228 2229001 1.01067e-05 1.36369 -0.872862 -0.872871 + 2229 2230001 1.00765e-05 1.36369 -0.872862 -0.872871 + 2230 2231001 1.00464e-05 1.36369 -0.872862 -0.872871 + 2231 2232001 1.00163e-05 1.36369 -0.872862 -0.872871 + 2232 2233001 9.98637e-06 1.36369 -0.872862 -0.872871 + 2233 2234001 9.9565e-06 1.3633 -0.87287 -0.872871 + 2234 2235001 9.92672e-06 1.3633 -0.87287 -0.872871 + 2235 2236001 9.89703e-06 1.36289 -0.87287 -0.872871 + 2236 2237001 9.86742e-06 1.36351 -0.872867 -0.872871 + 2237 2238001 9.83791e-06 1.36323 -0.872871 -0.872871 + 2238 2239001 9.80848e-06 1.36323 -0.872871 -0.872871 + 2239 2240001 9.77915e-06 1.36323 -0.872871 -0.872871 + 2240 2241001 9.7499e-06 1.36356 -0.872866 -0.872871 + 2241 2242001 9.72073e-06 1.36284 -0.872869 -0.872871 + 2242 2243001 9.69166e-06 1.36284 -0.872869 -0.872871 + 2243 2244001 9.66267e-06 1.36307 -0.872871 -0.872871 + 2244 2245001 9.63377e-06 1.36307 -0.872871 -0.872871 + 2245 2246001 9.60496e-06 1.36307 -0.872871 -0.872871 + 2246 2247001 9.57623e-06 1.36337 -0.87287 -0.872871 + 2247 2248001 9.54758e-06 1.36337 -0.87287 -0.872871 + 2248 2249001 9.51903e-06 1.36305 -0.872871 -0.872871 + 2249 2250001 9.49056e-06 1.36305 -0.872871 -0.872871 + 2250 2251001 9.46217e-06 1.36317 -0.872871 -0.872871 + 2251 2252001 9.43387e-06 1.36317 -0.872871 -0.872871 + 2252 2253001 9.40565e-06 1.36317 -0.872871 -0.872871 + 2253 2254001 9.37752e-06 1.36339 -0.872869 -0.872871 + 2254 2255001 9.34947e-06 1.36385 -0.872856 -0.872871 + 2255 2256001 9.3215e-06 1.36429 -0.872832 -0.872871 + 2256 2257001 9.29362e-06 1.36398 -0.87285 -0.872871 + 2257 2258001 9.26583e-06 1.36398 -0.87285 -0.872871 + 2258 2259001 9.23811e-06 1.36398 -0.87285 -0.872871 + 2259 2260001 9.21048e-06 1.36258 -0.872862 -0.872871 + 2260 2261001 9.18293e-06 1.36258 -0.872862 -0.872871 + 2261 2262001 9.15547e-06 1.36258 -0.872862 -0.872871 + 2262 2263001 9.12808e-06 1.3631 -0.872871 -0.872871 + 2263 2264001 9.10078e-06 1.36306 -0.872871 -0.872871 + 2264 2265001 9.07356e-06 1.36306 -0.872871 -0.872871 + 2265 2266001 9.04642e-06 1.36306 -0.872871 -0.872871 + 2266 2267001 9.01936e-06 1.36306 -0.872871 -0.872871 + 2267 2268001 8.99238e-06 1.36335 -0.87287 -0.872871 + 2268 2269001 8.96549e-06 1.36335 -0.87287 -0.872871 + 2269 2270001 8.93867e-06 1.36341 -0.872869 -0.872871 + 2270 2271001 8.91194e-06 1.36278 -0.872868 -0.872871 + 2271 2272001 8.88528e-06 1.36379 -0.872859 -0.872871 + 2272 2273001 8.8587e-06 1.36379 -0.872859 -0.872871 + 2273 2274001 8.83221e-06 1.36379 -0.872859 -0.872871 + 2274 2275001 8.80579e-06 1.3636 -0.872865 -0.872871 + 2275 2276001 8.77945e-06 1.36336 -0.87287 -0.872871 + 2276 2277001 8.75319e-06 1.36318 -0.872871 -0.872871 + 2277 2278001 8.72701e-06 1.36318 -0.872871 -0.872871 + 2278 2279001 8.70091e-06 1.36372 -0.872861 -0.872871 + 2279 2280001 8.67488e-06 1.36332 -0.87287 -0.872871 + 2280 2281001 8.64894e-06 1.36332 -0.87287 -0.872871 + 2281 2282001 8.62307e-06 1.36332 -0.87287 -0.872871 + 2282 2283001 8.59728e-06 1.36332 -0.87287 -0.872871 + 2283 2284001 8.57156e-06 1.36332 -0.87287 -0.872871 + 2284 2285001 8.54592e-06 1.36332 -0.87287 -0.872871 + 2285 2286001 8.52036e-06 1.36332 -0.87287 -0.872871 + 2286 2287001 8.49488e-06 1.36332 -0.87287 -0.872871 + 2287 2288001 8.46947e-06 1.36258 -0.872862 -0.872871 + 2288 2289001 8.44414e-06 1.36258 -0.872862 -0.872871 + 2289 2290001 8.41888e-06 1.36258 -0.872862 -0.872871 + 2290 2291001 8.3937e-06 1.36258 -0.872862 -0.872871 + 2291 2292001 8.36859e-06 1.36355 -0.872866 -0.872871 + 2292 2293001 8.34356e-06 1.36355 -0.872866 -0.872871 + 2293 2294001 8.31861e-06 1.36326 -0.872871 -0.872871 + 2294 2295001 8.29373e-06 1.36383 -0.872857 -0.872871 + 2295 2296001 8.26892e-06 1.36339 -0.872869 -0.872871 + 2296 2297001 8.24419e-06 1.36339 -0.872869 -0.872871 + 2297 2298001 8.21953e-06 1.36339 -0.872869 -0.872871 + 2298 2299001 8.19494e-06 1.3628 -0.872868 -0.872871 + 2299 2300001 8.17043e-06 1.36324 -0.872871 -0.872871 + 2300 2301001 8.14599e-06 1.36324 -0.872871 -0.872871 + 2301 2302001 8.12163e-06 1.36324 -0.872871 -0.872871 + 2302 2303001 8.09734e-06 1.36346 -0.872868 -0.872871 + 2303 2304001 8.07312e-06 1.36346 -0.872868 -0.872871 + 2304 2305001 8.04897e-06 1.36346 -0.872868 -0.872871 + 2305 2306001 8.0249e-06 1.36346 -0.872868 -0.872871 + 2306 2307001 8.00089e-06 1.36295 -0.87287 -0.872871 + 2307 2308001 7.97696e-06 1.36297 -0.87287 -0.872871 + 2308 2309001 7.9531e-06 1.36297 -0.87287 -0.872871 + 2309 2310001 7.92931e-06 1.36322 -0.872871 -0.872871 + 2310 2311001 7.9056e-06 1.36284 -0.872869 -0.872871 + 2311 2312001 7.88195e-06 1.36284 -0.872869 -0.872871 + 2312 2313001 7.85838e-06 1.36284 -0.872869 -0.872871 + 2313 2314001 7.83487e-06 1.36285 -0.872869 -0.872871 + 2314 2315001 7.81144e-06 1.36302 -0.872871 -0.872871 + 2315 2316001 7.78807e-06 1.36302 -0.872871 -0.872871 + 2316 2317001 7.76478e-06 1.3635 -0.872867 -0.872871 + 2317 2318001 7.74155e-06 1.3635 -0.872867 -0.872871 + 2318 2319001 7.7184e-06 1.3635 -0.872867 -0.872871 + 2319 2320001 7.69531e-06 1.3635 -0.872867 -0.872871 + 2320 2321001 7.6723e-06 1.3635 -0.872867 -0.872871 + 2321 2322001 7.64935e-06 1.3635 -0.872867 -0.872871 + 2322 2323001 7.62647e-06 1.36326 -0.872871 -0.872871 + 2323 2324001 7.60366e-06 1.36351 -0.872867 -0.872871 + 2324 2325001 7.58092e-06 1.36351 -0.872867 -0.872871 + 2325 2326001 7.55824e-06 1.36319 -0.872871 -0.872871 + 2326 2327001 7.53563e-06 1.36319 -0.872871 -0.872871 + 2327 2328001 7.51309e-06 1.36319 -0.872871 -0.872871 + 2328 2329001 7.49062e-06 1.36319 -0.872871 -0.872871 + 2329 2330001 7.46822e-06 1.36267 -0.872865 -0.872871 + 2330 2331001 7.44588e-06 1.36267 -0.872865 -0.872871 + 2331 2332001 7.42361e-06 1.36256 -0.872862 -0.872871 + 2332 2333001 7.40141e-06 1.36256 -0.872862 -0.872871 + 2333 2334001 7.37927e-06 1.36256 -0.872862 -0.872871 + 2334 2335001 7.3572e-06 1.36322 -0.872871 -0.872871 + 2335 2336001 7.33519e-06 1.36322 -0.872871 -0.872871 + 2336 2337001 7.31325e-06 1.36296 -0.87287 -0.872871 + 2337 2338001 7.29138e-06 1.36228 -0.87285 -0.872871 + 2338 2339001 7.26957e-06 1.36212 -0.872841 -0.872871 + 2339 2340001 7.24782e-06 1.36212 -0.872841 -0.872871 + 2340 2341001 7.22615e-06 1.36349 -0.872867 -0.872871 + 2341 2342001 7.20453e-06 1.36349 -0.872867 -0.872871 + 2342 2343001 7.18298e-06 1.36349 -0.872867 -0.872871 + 2343 2344001 7.1615e-06 1.36349 -0.872867 -0.872871 + 2344 2345001 7.14008e-06 1.36325 -0.872871 -0.872871 + 2345 2346001 7.11872e-06 1.36263 -0.872864 -0.872871 + 2346 2347001 7.09743e-06 1.36346 -0.872868 -0.872871 + 2347 2348001 7.0762e-06 1.36254 -0.872861 -0.872871 + 2348 2349001 7.05504e-06 1.36274 -0.872867 -0.872871 + 2349 2350001 7.03393e-06 1.363 -0.872871 -0.872871 + 2350 2351001 7.0129e-06 1.363 -0.872871 -0.872871 + 2351 2352001 6.99192e-06 1.363 -0.872871 -0.872871 + 2352 2353001 6.97101e-06 1.36302 -0.872871 -0.872871 + 2353 2354001 6.95016e-06 1.36312 -0.872871 -0.872871 + 2354 2355001 6.92937e-06 1.36312 -0.872871 -0.872871 + 2355 2356001 6.90864e-06 1.36312 -0.872871 -0.872871 + 2356 2357001 6.88798e-06 1.36294 -0.87287 -0.872871 + 2357 2358001 6.86738e-06 1.36294 -0.87287 -0.872871 + 2358 2359001 6.84684e-06 1.36295 -0.87287 -0.872871 + 2359 2360001 6.82636e-06 1.36295 -0.87287 -0.872871 + 2360 2361001 6.80594e-06 1.36295 -0.87287 -0.872871 + 2361 2362001 6.78558e-06 1.36295 -0.87287 -0.872871 + 2362 2363001 6.76529e-06 1.36295 -0.87287 -0.872871 + 2363 2364001 6.74505e-06 1.36295 -0.87287 -0.872871 + 2364 2365001 6.72488e-06 1.3627 -0.872866 -0.872871 + 2365 2366001 6.70476e-06 1.36351 -0.872867 -0.872871 + 2366 2367001 6.68471e-06 1.36302 -0.872871 -0.872871 + 2367 2368001 6.66471e-06 1.36302 -0.872871 -0.872871 + 2368 2369001 6.64478e-06 1.36302 -0.872871 -0.872871 + 2369 2370001 6.62491e-06 1.36302 -0.872871 -0.872871 + 2370 2371001 6.60509e-06 1.36302 -0.872871 -0.872871 + 2371 2372001 6.58533e-06 1.36306 -0.872871 -0.872871 + 2372 2373001 6.56564e-06 1.36306 -0.872871 -0.872871 + 2373 2374001 6.546e-06 1.36323 -0.872871 -0.872871 + 2374 2375001 6.52642e-06 1.36323 -0.872871 -0.872871 + 2375 2376001 6.5069e-06 1.36323 -0.872871 -0.872871 + 2376 2377001 6.48744e-06 1.36323 -0.872871 -0.872871 + 2377 2378001 6.46803e-06 1.36323 -0.872871 -0.872871 + 2378 2379001 6.44869e-06 1.36323 -0.872871 -0.872871 + 2379 2380001 6.4294e-06 1.36323 -0.872871 -0.872871 + 2380 2381001 6.41017e-06 1.36305 -0.872871 -0.872871 + 2381 2382001 6.39099e-06 1.36305 -0.872871 -0.872871 + 2382 2383001 6.37188e-06 1.36305 -0.872871 -0.872871 + 2383 2384001 6.35282e-06 1.36305 -0.872871 -0.872871 + 2384 2385001 6.33382e-06 1.36305 -0.872871 -0.872871 + 2385 2386001 6.31487e-06 1.36305 -0.872871 -0.872871 + 2386 2387001 6.29599e-06 1.36305 -0.872871 -0.872871 + 2387 2388001 6.27716e-06 1.36383 -0.872857 -0.872871 + 2388 2389001 6.25838e-06 1.36383 -0.872857 -0.872871 + 2389 2390001 6.23966e-06 1.3627 -0.872866 -0.872871 + 2390 2391001 6.221e-06 1.36353 -0.872867 -0.872871 + 2391 2392001 6.20239e-06 1.36353 -0.872867 -0.872871 + 2392 2393001 6.18384e-06 1.36353 -0.872867 -0.872871 + 2393 2394001 6.16534e-06 1.36353 -0.872867 -0.872871 + 2394 2395001 6.1469e-06 1.36353 -0.872867 -0.872871 + 2395 2396001 6.12852e-06 1.36349 -0.872867 -0.872871 + 2396 2397001 6.11019e-06 1.36305 -0.872871 -0.872871 + 2397 2398001 6.09191e-06 1.36305 -0.872871 -0.872871 + 2398 2399001 6.07369e-06 1.36305 -0.872871 -0.872871 + 2399 2400001 6.05552e-06 1.36323 -0.872871 -0.872871 + 2400 2401001 6.03741e-06 1.36323 -0.872871 -0.872871 + 2401 2402001 6.01935e-06 1.36323 -0.872871 -0.872871 + 2402 2403001 6.00135e-06 1.36311 -0.872871 -0.872871 + 2403 2404001 5.9834e-06 1.36311 -0.872871 -0.872871 + 2404 2405001 5.9655e-06 1.36311 -0.872871 -0.872871 + 2405 2406001 5.94766e-06 1.36311 -0.872871 -0.872871 + 2406 2407001 5.92987e-06 1.36318 -0.872871 -0.872871 + 2407 2408001 5.91213e-06 1.36318 -0.872871 -0.872871 + 2408 2409001 5.89445e-06 1.36351 -0.872867 -0.872871 + 2409 2410001 5.87682e-06 1.36265 -0.872865 -0.872871 + 2410 2411001 5.85924e-06 1.36265 -0.872865 -0.872871 + 2411 2412001 5.84172e-06 1.36299 -0.872871 -0.872871 + 2412 2413001 5.82424e-06 1.36299 -0.872871 -0.872871 + 2413 2414001 5.80682e-06 1.36299 -0.872871 -0.872871 + 2414 2415001 5.78945e-06 1.36299 -0.872871 -0.872871 + 2415 2416001 5.77214e-06 1.36299 -0.872871 -0.872871 + 2416 2417001 5.75487e-06 1.36328 -0.872871 -0.872871 + 2417 2418001 5.73766e-06 1.3629 -0.87287 -0.872871 + 2418 2419001 5.7205e-06 1.3629 -0.87287 -0.872871 + 2419 2420001 5.70339e-06 1.3627 -0.872866 -0.872871 + 2420 2421001 5.68633e-06 1.36367 -0.872863 -0.872871 + 2421 2422001 5.66932e-06 1.36367 -0.872863 -0.872871 + 2422 2423001 5.65237e-06 1.36367 -0.872863 -0.872871 + 2423 2424001 5.63546e-06 1.36277 -0.872867 -0.872871 + 2424 2425001 5.6186e-06 1.36277 -0.872867 -0.872871 + 2425 2426001 5.6018e-06 1.36311 -0.872871 -0.872871 + 2426 2427001 5.58504e-06 1.36311 -0.872871 -0.872871 + 2427 2428001 5.56834e-06 1.36366 -0.872863 -0.872871 + 2428 2429001 5.55168e-06 1.36295 -0.87287 -0.872871 + 2429 2430001 5.53508e-06 1.36295 -0.87287 -0.872871 + 2430 2431001 5.51852e-06 1.36295 -0.87287 -0.872871 + 2431 2432001 5.50202e-06 1.36319 -0.872871 -0.872871 + 2432 2433001 5.48556e-06 1.36319 -0.872871 -0.872871 + 2433 2434001 5.46915e-06 1.36312 -0.872871 -0.872871 + 2434 2435001 5.45279e-06 1.36243 -0.872857 -0.872871 + 2435 2436001 5.43648e-06 1.36268 -0.872865 -0.872871 + 2436 2437001 5.42022e-06 1.36329 -0.872871 -0.872871 + 2437 2438001 5.40401e-06 1.36292 -0.87287 -0.872871 + 2438 2439001 5.38785e-06 1.36261 -0.872863 -0.872871 + 2439 2440001 5.37173e-06 1.36261 -0.872863 -0.872871 + 2440 2441001 5.35567e-06 1.36261 -0.872863 -0.872871 + 2441 2442001 5.33965e-06 1.36319 -0.872871 -0.872871 + 2442 2443001 5.32368e-06 1.36319 -0.872871 -0.872871 + 2443 2444001 5.30775e-06 1.36319 -0.872871 -0.872871 + 2444 2445001 5.29188e-06 1.36267 -0.872865 -0.872871 + 2445 2446001 5.27605e-06 1.36272 -0.872866 -0.872871 + 2446 2447001 5.26027e-06 1.36297 -0.872871 -0.872871 + 2447 2448001 5.24453e-06 1.36297 -0.872871 -0.872871 + 2448 2449001 5.22885e-06 1.36322 -0.872871 -0.872871 + 2449 2450001 5.21321e-06 1.36322 -0.872871 -0.872871 + 2450 2451001 5.19761e-06 1.36322 -0.872871 -0.872871 + 2451 2452001 5.18207e-06 1.36322 -0.872871 -0.872871 + 2452 2453001 5.16657e-06 1.36322 -0.872871 -0.872871 + 2453 2454001 5.15112e-06 1.36316 -0.872871 -0.872871 + 2454 2455001 5.13571e-06 1.36294 -0.87287 -0.872871 + 2455 2456001 5.12035e-06 1.36323 -0.872871 -0.872871 + 2456 2457001 5.10503e-06 1.36293 -0.87287 -0.872871 + 2457 2458001 5.08976e-06 1.36293 -0.87287 -0.872871 + 2458 2459001 5.07454e-06 1.36288 -0.872869 -0.872871 + 2459 2460001 5.05936e-06 1.36288 -0.872869 -0.872871 + 2460 2461001 5.04423e-06 1.36288 -0.872869 -0.872871 + 2461 2462001 5.02914e-06 1.36288 -0.872869 -0.872871 + 2462 2463001 5.0141e-06 1.36319 -0.872871 -0.872871 + 2463 2464001 4.9991e-06 1.36331 -0.87287 -0.872871 + 2464 2465001 4.98415e-06 1.36331 -0.87287 -0.872871 + 2465 2466001 4.96924e-06 1.36331 -0.87287 -0.872871 + 2466 2467001 4.95438e-06 1.36285 -0.872869 -0.872871 + 2467 2468001 4.93956e-06 1.36341 -0.872869 -0.872871 + 2468 2469001 4.92479e-06 1.36341 -0.872869 -0.872871 + 2469 2470001 4.91006e-06 1.36341 -0.872869 -0.872871 + 2470 2471001 4.89537e-06 1.3631 -0.872871 -0.872871 + 2471 2472001 4.88073e-06 1.36282 -0.872868 -0.872871 + 2472 2473001 4.86613e-06 1.36282 -0.872868 -0.872871 + 2473 2474001 4.85157e-06 1.36295 -0.87287 -0.872871 + 2474 2475001 4.83706e-06 1.36315 -0.872871 -0.872871 + 2475 2476001 4.82259e-06 1.36315 -0.872871 -0.872871 + 2476 2477001 4.80817e-06 1.36315 -0.872871 -0.872871 + 2477 2478001 4.79379e-06 1.36315 -0.872871 -0.872871 + 2478 2479001 4.77945e-06 1.36315 -0.872871 -0.872871 + 2479 2480001 4.76515e-06 1.36322 -0.872871 -0.872871 + 2480 2481001 4.7509e-06 1.36322 -0.872871 -0.872871 + 2481 2482001 4.73669e-06 1.36322 -0.872871 -0.872871 + 2482 2483001 4.72252e-06 1.36313 -0.872871 -0.872871 + 2483 2484001 4.7084e-06 1.36355 -0.872866 -0.872871 + 2484 2485001 4.69432e-06 1.36355 -0.872866 -0.872871 + 2485 2486001 4.68028e-06 1.36355 -0.872866 -0.872871 + 2486 2487001 4.66628e-06 1.36278 -0.872868 -0.872871 + 2487 2488001 4.65232e-06 1.36311 -0.872871 -0.872871 + 2488 2489001 4.6384e-06 1.36288 -0.872869 -0.872871 + 2489 2490001 4.62453e-06 1.36288 -0.872869 -0.872871 + 2490 2491001 4.6107e-06 1.36288 -0.872869 -0.872871 + 2491 2492001 4.59691e-06 1.36288 -0.872869 -0.872871 + 2492 2493001 4.58316e-06 1.36288 -0.872869 -0.872871 + 2493 2494001 4.56945e-06 1.36288 -0.872869 -0.872871 + 2494 2495001 4.55578e-06 1.36361 -0.872864 -0.872871 + 2495 2496001 4.54216e-06 1.36361 -0.872864 -0.872871 + 2496 2497001 4.52857e-06 1.36361 -0.872864 -0.872871 + 2497 2498001 4.51503e-06 1.36336 -0.87287 -0.872871 + 2498 2499001 4.50152e-06 1.36337 -0.87287 -0.872871 + 2499 2500001 4.48806e-06 1.36337 -0.87287 -0.872871 + 2500 2501001 4.47463e-06 1.36337 -0.87287 -0.872871 + 2501 2502001 4.46125e-06 1.36337 -0.87287 -0.872871 + 2502 2503001 4.44791e-06 1.36337 -0.87287 -0.872871 + 2503 2504001 4.4346e-06 1.36337 -0.87287 -0.872871 + 2504 2505001 4.42134e-06 1.36337 -0.87287 -0.872871 + 2505 2506001 4.40811e-06 1.36337 -0.87287 -0.872871 + 2506 2507001 4.39493e-06 1.36337 -0.87287 -0.872871 + 2507 2508001 4.38178e-06 1.36337 -0.87287 -0.872871 + 2508 2509001 4.36868e-06 1.36288 -0.872869 -0.872871 + 2509 2510001 4.35561e-06 1.36288 -0.872869 -0.872871 + 2510 2511001 4.34258e-06 1.36288 -0.872869 -0.872871 + 2511 2512001 4.32959e-06 1.36288 -0.872869 -0.872871 + 2512 2513001 4.31664e-06 1.36323 -0.872871 -0.872871 + 2513 2514001 4.30373e-06 1.36323 -0.872871 -0.872871 + 2514 2515001 4.29086e-06 1.36323 -0.872871 -0.872871 + 2515 2516001 4.27803e-06 1.36337 -0.87287 -0.872871 + 2516 2517001 4.26523e-06 1.36337 -0.87287 -0.872871 + 2517 2518001 4.25247e-06 1.36322 -0.872871 -0.872871 + 2518 2519001 4.23975e-06 1.36332 -0.87287 -0.872871 + 2519 2520001 4.22707e-06 1.36332 -0.87287 -0.872871 + 2520 2521001 4.21443e-06 1.36357 -0.872866 -0.872871 + 2521 2522001 4.20182e-06 1.36357 -0.872866 -0.872871 + 2522 2523001 4.18926e-06 1.36357 -0.872866 -0.872871 + 2523 2524001 4.17673e-06 1.36357 -0.872866 -0.872871 + 2524 2525001 4.16423e-06 1.36292 -0.87287 -0.872871 + 2525 2526001 4.15178e-06 1.36311 -0.872871 -0.872871 + 2526 2527001 4.13936e-06 1.36342 -0.872869 -0.872871 + 2527 2528001 4.12698e-06 1.36342 -0.872869 -0.872871 + 2528 2529001 4.11463e-06 1.36342 -0.872869 -0.872871 + 2529 2530001 4.10233e-06 1.36342 -0.872869 -0.872871 + 2530 2531001 4.09006e-06 1.36342 -0.872869 -0.872871 + 2531 2532001 4.07782e-06 1.36342 -0.872869 -0.872871 + 2532 2533001 4.06563e-06 1.36348 -0.872868 -0.872871 + 2533 2534001 4.05347e-06 1.36293 -0.87287 -0.872871 + 2534 2535001 4.04134e-06 1.36293 -0.87287 -0.872871 + 2535 2536001 4.02926e-06 1.36293 -0.87287 -0.872871 + 2536 2537001 4.0172e-06 1.36293 -0.87287 -0.872871 + 2537 2538001 4.00519e-06 1.36342 -0.872869 -0.872871 + 2538 2539001 3.99321e-06 1.36342 -0.872869 -0.872871 + 2539 2540001 3.98126e-06 1.36342 -0.872869 -0.872871 + 2540 2541001 3.96936e-06 1.36342 -0.872869 -0.872871 + 2541 2542001 3.95748e-06 1.36342 -0.872869 -0.872871 + 2542 2543001 3.94565e-06 1.36342 -0.872869 -0.872871 + 2543 2544001 3.93385e-06 1.36342 -0.872869 -0.872871 + 2544 2545001 3.92208e-06 1.36351 -0.872867 -0.872871 + 2545 2546001 3.91035e-06 1.36351 -0.872867 -0.872871 + 2546 2547001 3.89865e-06 1.36351 -0.872867 -0.872871 + 2547 2548001 3.88699e-06 1.36351 -0.872867 -0.872871 + 2548 2549001 3.87537e-06 1.36351 -0.872867 -0.872871 + 2549 2550001 3.86377e-06 1.3627 -0.872866 -0.872871 + 2550 2551001 3.85222e-06 1.3627 -0.872866 -0.872871 + 2551 2552001 3.8407e-06 1.36323 -0.872871 -0.872871 + 2552 2553001 3.82921e-06 1.36327 -0.872871 -0.872871 + 2553 2554001 3.81775e-06 1.36327 -0.872871 -0.872871 + 2554 2555001 3.80634e-06 1.36327 -0.872871 -0.872871 + 2555 2556001 3.79495e-06 1.36327 -0.872871 -0.872871 + 2556 2557001 3.7836e-06 1.36327 -0.872871 -0.872871 + 2557 2558001 3.77228e-06 1.36327 -0.872871 -0.872871 + 2558 2559001 3.761e-06 1.36322 -0.872871 -0.872871 + 2559 2560001 3.74975e-06 1.36322 -0.872871 -0.872871 + 2560 2561001 3.73854e-06 1.36286 -0.872869 -0.872871 + 2561 2562001 3.72735e-06 1.36286 -0.872869 -0.872871 + 2562 2563001 3.7162e-06 1.36286 -0.872869 -0.872871 + 2563 2564001 3.70509e-06 1.36286 -0.872869 -0.872871 + 2564 2565001 3.69401e-06 1.36286 -0.872869 -0.872871 + 2565 2566001 3.68296e-06 1.36286 -0.872869 -0.872871 + 2566 2567001 3.67194e-06 1.36286 -0.872869 -0.872871 + 2567 2568001 3.66096e-06 1.36286 -0.872869 -0.872871 + 2568 2569001 3.65001e-06 1.36286 -0.872869 -0.872871 + 2569 2570001 3.63909e-06 1.36286 -0.872869 -0.872871 + 2570 2571001 3.62821e-06 1.36286 -0.872869 -0.872871 + 2571 2572001 3.61736e-06 1.36286 -0.872869 -0.872871 + 2572 2573001 3.60654e-06 1.36286 -0.872869 -0.872871 + 2573 2574001 3.59575e-06 1.36286 -0.872869 -0.872871 + 2574 2575001 3.58499e-06 1.36306 -0.872871 -0.872871 + 2575 2576001 3.57427e-06 1.36311 -0.872871 -0.872871 + 2576 2577001 3.56358e-06 1.36311 -0.872871 -0.872871 + 2577 2578001 3.55292e-06 1.36311 -0.872871 -0.872871 + 2578 2579001 3.54229e-06 1.36311 -0.872871 -0.872871 + 2579 2580001 3.5317e-06 1.36311 -0.872871 -0.872871 + 2580 2581001 3.52114e-06 1.36311 -0.872871 -0.872871 + 2581 2582001 3.5106e-06 1.36311 -0.872871 -0.872871 + 2582 2583001 3.5001e-06 1.36311 -0.872871 -0.872871 + 2583 2584001 3.48963e-06 1.36311 -0.872871 -0.872871 + 2584 2585001 3.4792e-06 1.36342 -0.872869 -0.872871 + 2585 2586001 3.46879e-06 1.36342 -0.872869 -0.872871 + 2586 2587001 3.45842e-06 1.36342 -0.872869 -0.872871 + 2587 2588001 3.44807e-06 1.36336 -0.87287 -0.872871 + 2588 2589001 3.43776e-06 1.3631 -0.872871 -0.872871 + 2589 2590001 3.42748e-06 1.3631 -0.872871 -0.872871 + 2590 2591001 3.41722e-06 1.3631 -0.872871 -0.872871 + 2591 2592001 3.407e-06 1.3631 -0.872871 -0.872871 + 2592 2593001 3.39681e-06 1.3631 -0.872871 -0.872871 + 2593 2594001 3.38665e-06 1.36282 -0.872868 -0.872871 + 2594 2595001 3.37652e-06 1.36282 -0.872868 -0.872871 + 2595 2596001 3.36642e-06 1.36282 -0.872868 -0.872871 + 2596 2597001 3.35635e-06 1.36282 -0.872868 -0.872871 + 2597 2598001 3.34632e-06 1.36282 -0.872868 -0.872871 + 2598 2599001 3.33631e-06 1.36282 -0.872868 -0.872871 + 2599 2600001 3.32633e-06 1.36282 -0.872868 -0.872871 + 2600 2601001 3.31638e-06 1.36337 -0.872869 -0.872871 + 2601 2602001 3.30646e-06 1.36337 -0.872869 -0.872871 + 2602 2603001 3.29657e-06 1.36337 -0.872869 -0.872871 + 2603 2604001 3.28671e-06 1.36337 -0.872869 -0.872871 + 2604 2605001 3.27688e-06 1.36337 -0.872869 -0.872871 + 2605 2606001 3.26708e-06 1.36337 -0.872869 -0.872871 + 2606 2607001 3.25731e-06 1.36337 -0.872869 -0.872871 + 2607 2608001 3.24756e-06 1.36337 -0.872869 -0.872871 + 2608 2609001 3.23785e-06 1.36337 -0.872869 -0.872871 + 2609 2610001 3.22817e-06 1.36337 -0.872869 -0.872871 + 2610 2611001 3.21851e-06 1.36279 -0.872868 -0.872871 + 2611 2612001 3.20888e-06 1.3633 -0.87287 -0.872871 + 2612 2613001 3.19929e-06 1.3633 -0.87287 -0.872871 + 2613 2614001 3.18972e-06 1.3633 -0.87287 -0.872871 + 2614 2615001 3.18018e-06 1.36287 -0.872869 -0.872871 + 2615 2616001 3.17066e-06 1.36322 -0.872871 -0.872871 + 2616 2617001 3.16118e-06 1.36309 -0.872871 -0.872871 + 2617 2618001 3.15172e-06 1.36309 -0.872871 -0.872871 + 2618 2619001 3.1423e-06 1.36309 -0.872871 -0.872871 + 2619 2620001 3.1329e-06 1.36309 -0.872871 -0.872871 + 2620 2621001 3.12353e-06 1.36309 -0.872871 -0.872871 + 2621 2622001 3.11419e-06 1.36309 -0.872871 -0.872871 + 2622 2623001 3.10487e-06 1.36309 -0.872871 -0.872871 + 2623 2624001 3.09558e-06 1.36309 -0.872871 -0.872871 + 2624 2625001 3.08633e-06 1.36309 -0.872871 -0.872871 + 2625 2626001 3.07709e-06 1.36309 -0.872871 -0.872871 + 2626 2627001 3.06789e-06 1.36309 -0.872871 -0.872871 + 2627 2628001 3.05871e-06 1.36309 -0.872871 -0.872871 + 2628 2629001 3.04957e-06 1.36309 -0.872871 -0.872871 + 2629 2630001 3.04044e-06 1.36309 -0.872871 -0.872871 + 2630 2631001 3.03135e-06 1.36309 -0.872871 -0.872871 + 2631 2632001 3.02228e-06 1.36309 -0.872871 -0.872871 + 2632 2633001 3.01324e-06 1.36309 -0.872871 -0.872871 + 2633 2634001 3.00423e-06 1.36309 -0.872871 -0.872871 + 2634 2635001 2.99525e-06 1.36309 -0.872871 -0.872871 + 2635 2636001 2.98629e-06 1.36309 -0.872871 -0.872871 + 2636 2637001 2.97735e-06 1.36309 -0.872871 -0.872871 + 2637 2638001 2.96845e-06 1.36309 -0.872871 -0.872871 + 2638 2639001 2.95957e-06 1.36309 -0.872871 -0.872871 + 2639 2640001 2.95072e-06 1.36311 -0.872871 -0.872871 + 2640 2641001 2.94189e-06 1.36311 -0.872871 -0.872871 + 2641 2642001 2.93309e-06 1.36311 -0.872871 -0.872871 + 2642 2643001 2.92432e-06 1.36299 -0.872871 -0.872871 + 2643 2644001 2.91557e-06 1.36299 -0.872871 -0.872871 + 2644 2645001 2.90685e-06 1.36299 -0.872871 -0.872871 + 2645 2646001 2.89816e-06 1.36299 -0.872871 -0.872871 + 2646 2647001 2.88949e-06 1.36299 -0.872871 -0.872871 + 2647 2648001 2.88085e-06 1.36328 -0.872871 -0.872871 + 2648 2649001 2.87223e-06 1.36328 -0.872871 -0.872871 + 2649 2650001 2.86364e-06 1.36328 -0.872871 -0.872871 + 2650 2651001 2.85507e-06 1.36356 -0.872866 -0.872871 + 2651 2652001 2.84654e-06 1.36356 -0.872866 -0.872871 + 2652 2653001 2.83802e-06 1.36356 -0.872866 -0.872871 + 2653 2654001 2.82953e-06 1.36356 -0.872866 -0.872871 + 2654 2655001 2.82107e-06 1.36345 -0.872868 -0.872871 + 2655 2656001 2.81263e-06 1.36345 -0.872868 -0.872871 + 2656 2657001 2.80422e-06 1.36345 -0.872868 -0.872871 + 2657 2658001 2.79583e-06 1.36345 -0.872868 -0.872871 + 2658 2659001 2.78747e-06 1.36345 -0.872868 -0.872871 + 2659 2660001 2.77913e-06 1.36296 -0.87287 -0.872871 + 2660 2661001 2.77082e-06 1.36296 -0.87287 -0.872871 + 2661 2662001 2.76253e-06 1.36289 -0.872869 -0.872871 + 2662 2663001 2.75427e-06 1.36289 -0.872869 -0.872871 + 2663 2664001 2.74603e-06 1.36289 -0.872869 -0.872871 + 2664 2665001 2.73782e-06 1.36289 -0.872869 -0.872871 + 2665 2666001 2.72963e-06 1.36289 -0.872869 -0.872871 + 2666 2667001 2.72146e-06 1.36306 -0.872871 -0.872871 + 2667 2668001 2.71332e-06 1.363 -0.872871 -0.872871 + 2668 2669001 2.70521e-06 1.36303 -0.872871 -0.872871 + 2669 2670001 2.69712e-06 1.36303 -0.872871 -0.872871 + 2670 2671001 2.68905e-06 1.36315 -0.872871 -0.872871 + 2671 2672001 2.68101e-06 1.36315 -0.872871 -0.872871 + 2672 2673001 2.67299e-06 1.36314 -0.872871 -0.872871 + 2673 2674001 2.66499e-06 1.36314 -0.872871 -0.872871 + 2674 2675001 2.65702e-06 1.36293 -0.87287 -0.872871 + 2675 2676001 2.64907e-06 1.36348 -0.872868 -0.872871 + 2676 2677001 2.64115e-06 1.36348 -0.872868 -0.872871 + 2677 2678001 2.63325e-06 1.36305 -0.872871 -0.872871 + 2678 2679001 2.62538e-06 1.36305 -0.872871 -0.872871 + 2679 2680001 2.61752e-06 1.36305 -0.872871 -0.872871 + 2680 2681001 2.60969e-06 1.36305 -0.872871 -0.872871 + 2681 2682001 2.60189e-06 1.36326 -0.872871 -0.872871 + 2682 2683001 2.59411e-06 1.36358 -0.872865 -0.872871 + 2683 2684001 2.58635e-06 1.36358 -0.872865 -0.872871 + 2684 2685001 2.57861e-06 1.36266 -0.872865 -0.872871 + 2685 2686001 2.5709e-06 1.36266 -0.872865 -0.872871 + 2686 2687001 2.56321e-06 1.36266 -0.872865 -0.872871 + 2687 2688001 2.55554e-06 1.36317 -0.872871 -0.872871 + 2688 2689001 2.5479e-06 1.36317 -0.872871 -0.872871 + 2689 2690001 2.54028e-06 1.36317 -0.872871 -0.872871 + 2690 2691001 2.53268e-06 1.36317 -0.872871 -0.872871 + 2691 2692001 2.5251e-06 1.36317 -0.872871 -0.872871 + 2692 2693001 2.51755e-06 1.36317 -0.872871 -0.872871 + 2693 2694001 2.51002e-06 1.36317 -0.872871 -0.872871 + 2694 2695001 2.50251e-06 1.36317 -0.872871 -0.872871 + 2695 2696001 2.49503e-06 1.36317 -0.872871 -0.872871 + 2696 2697001 2.48757e-06 1.36317 -0.872871 -0.872871 + 2697 2698001 2.48013e-06 1.36294 -0.87287 -0.872871 + 2698 2699001 2.47271e-06 1.36322 -0.872871 -0.872871 + 2699 2700001 2.46531e-06 1.36322 -0.872871 -0.872871 + 2700 2701001 2.45794e-06 1.36322 -0.872871 -0.872871 + 2701 2702001 2.45059e-06 1.36322 -0.872871 -0.872871 + 2702 2703001 2.44326e-06 1.36322 -0.872871 -0.872871 + 2703 2704001 2.43595e-06 1.36322 -0.872871 -0.872871 + 2704 2705001 2.42866e-06 1.36322 -0.872871 -0.872871 + 2705 2706001 2.4214e-06 1.36301 -0.872871 -0.872871 + 2706 2707001 2.41416e-06 1.36301 -0.872871 -0.872871 + 2707 2708001 2.40693e-06 1.36301 -0.872871 -0.872871 + 2708 2709001 2.39974e-06 1.36301 -0.872871 -0.872871 + 2709 2710001 2.39256e-06 1.36328 -0.872871 -0.872871 + 2710 2711001 2.3854e-06 1.36298 -0.872871 -0.872871 + 2711 2712001 2.37827e-06 1.36298 -0.872871 -0.872871 + 2712 2713001 2.37115e-06 1.36298 -0.872871 -0.872871 + 2713 2714001 2.36406e-06 1.36298 -0.872871 -0.872871 + 2714 2715001 2.35699e-06 1.36298 -0.872871 -0.872871 + 2715 2716001 2.34994e-06 1.36298 -0.872871 -0.872871 + 2716 2717001 2.34291e-06 1.36298 -0.872871 -0.872871 + 2717 2718001 2.3359e-06 1.36291 -0.87287 -0.872871 + 2718 2719001 2.32892e-06 1.36308 -0.872871 -0.872871 + 2719 2720001 2.32195e-06 1.36327 -0.872871 -0.872871 + 2720 2721001 2.31501e-06 1.36327 -0.872871 -0.872871 + 2721 2722001 2.30808e-06 1.36327 -0.872871 -0.872871 + 2722 2723001 2.30118e-06 1.36336 -0.87287 -0.872871 + 2723 2724001 2.2943e-06 1.36337 -0.87287 -0.872871 + 2724 2725001 2.28743e-06 1.36309 -0.872871 -0.872871 + 2725 2726001 2.28059e-06 1.36309 -0.872871 -0.872871 + 2726 2727001 2.27377e-06 1.36324 -0.872871 -0.872871 + 2727 2728001 2.26697e-06 1.36324 -0.872871 -0.872871 + 2728 2729001 2.26019e-06 1.36268 -0.872865 -0.872871 + 2729 2730001 2.25343e-06 1.36305 -0.872871 -0.872871 + 2730 2731001 2.24669e-06 1.36305 -0.872871 -0.872871 + 2731 2732001 2.23997e-06 1.36305 -0.872871 -0.872871 + 2732 2733001 2.23327e-06 1.36305 -0.872871 -0.872871 + 2733 2734001 2.22659e-06 1.36305 -0.872871 -0.872871 + 2734 2735001 2.21993e-06 1.36305 -0.872871 -0.872871 + 2735 2736001 2.21329e-06 1.36305 -0.872871 -0.872871 + 2736 2737001 2.20667e-06 1.36323 -0.872871 -0.872871 + 2737 2738001 2.20007e-06 1.36323 -0.872871 -0.872871 + 2738 2739001 2.19349e-06 1.36323 -0.872871 -0.872871 + 2739 2740001 2.18693e-06 1.36294 -0.87287 -0.872871 + 2740 2741001 2.18039e-06 1.36294 -0.87287 -0.872871 + 2741 2742001 2.17387e-06 1.36294 -0.87287 -0.872871 + 2742 2743001 2.16736e-06 1.36294 -0.87287 -0.872871 + 2743 2744001 2.16088e-06 1.3629 -0.87287 -0.872871 + 2744 2745001 2.15442e-06 1.36279 -0.872868 -0.872871 + 2745 2746001 2.14797e-06 1.36279 -0.872868 -0.872871 + 2746 2747001 2.14155e-06 1.36281 -0.872868 -0.872871 + 2747 2748001 2.13514e-06 1.36281 -0.872868 -0.872871 + 2748 2749001 2.12876e-06 1.36281 -0.872868 -0.872871 + 2749 2750001 2.12239e-06 1.36281 -0.872868 -0.872871 + 2750 2751001 2.11604e-06 1.36281 -0.872868 -0.872871 + 2751 2752001 2.10971e-06 1.36281 -0.872868 -0.872871 + 2752 2753001 2.1034e-06 1.36286 -0.872869 -0.872871 + 2753 2754001 2.09711e-06 1.36286 -0.872869 -0.872871 + 2754 2755001 2.09084e-06 1.36286 -0.872869 -0.872871 + 2755 2756001 2.08458e-06 1.36309 -0.872871 -0.872871 + 2756 2757001 2.07835e-06 1.36309 -0.872871 -0.872871 + 2757 2758001 2.07213e-06 1.36338 -0.872869 -0.872871 + 2758 2759001 2.06594e-06 1.36344 -0.872868 -0.872871 + 2759 2760001 2.05976e-06 1.36317 -0.872871 -0.872871 + 2760 2761001 2.0536e-06 1.36317 -0.872871 -0.872871 + 2761 2762001 2.04745e-06 1.36326 -0.872871 -0.872871 + 2762 2763001 2.04133e-06 1.36326 -0.872871 -0.872871 + 2763 2764001 2.03522e-06 1.36317 -0.872871 -0.872871 + 2764 2765001 2.02914e-06 1.36317 -0.872871 -0.872871 + 2765 2766001 2.02307e-06 1.36317 -0.872871 -0.872871 + 2766 2767001 2.01702e-06 1.36328 -0.872871 -0.872871 + 2767 2768001 2.01098e-06 1.36323 -0.872871 -0.872871 + 2768 2769001 2.00497e-06 1.36323 -0.872871 -0.872871 diff --git a/gsl-2.5/doc/examples/siman_tsp b/gsl-2.5/doc/examples/siman_tsp new file mode 100755 index 00000000..993e9f40 --- /dev/null +++ b/gsl-2.5/doc/examples/siman_tsp @@ -0,0 +1,228 @@ +#! /bin/sh + +# siman_tsp - temporary wrapper script for .libs/siman_tsp +# Generated by libtool (GNU libtool) 2.4.2 +# +# The siman_tsp program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s/\([`"$\\]\)/\\\1/g' + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command="(cd /home/groups/kipac/chto/package/gsl/gsl-2.5/doc/examples; LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LIBRARY_PATH; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; LD_LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/fftw/include:/home/users/chto/lib/fftw/lib:/home/users/chto/lib/healpix/lib:/home/users/chto/lib/namaster/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/include:/home/users/chto/cpp/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LD_LIBRARY_PATH; PATH=/share/software/user/open/curl/7.54.0/bin:/share/software/user/open/libressl/2.5.3/bin:/home/users/chto/lib/cfitsio:/home/users/chto/lib/cfitsio/include:/home/users/chto/lib:/home/users/chto/bin/bin:/home/users/chto/bin:/home/users/chto/.texlive/bin/x86_64-linux:/home/groups/kipac/chto/anaconda2/envs/newenv3/bin:/home/users/chto/.local/bin/include:/home/users/chto/.local/bin/lib:/home/users/chto/.local/bin:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/bin64:/share/software/user/open/fftw/3.3.6/bin:/home/groups/kipac/chto/anaconda2/condabin:/share/software/user/restricted/ifort/2019/bin:/share/software/user/open/gsl/2.3/bin:/share/software/user/srcc/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/dell/srvadmin/bin:/opt/dell/srvadmin/iSM/bin:/home/users/chto/bin; export PATH; gcc -g -O2 -o \$progdir/\$file siman_tsp.o ../../.libs/libgsl.so ../../cblas/.libs/libgslcblas.so -lm -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/.libs -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/cblas/.libs -Wl,-rpath -Wl,/usr/local/lib)" + +# This environment variable determines our operation mode. +if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then + # install mode needs the following variables: + generated_by_libtool_version='2.4.2' + notinst_deplibs=' ../../libgsl.la ../../cblas/libgslcblas.la' +else + # When we are sourced in execute mode, $file and $ECHO are already set. + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + file="$0" + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + ECHO="printf %s\\n" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ which is used only on +# windows platforms, and (c) all begin with the string --lt- +# (application programs are unlikely to have options which match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's ../../libtool value, followed by no. +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=$0 + shift + for lt_opt + do + case "$lt_opt" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%/[^/]*$%%'` + test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=. + lt_dump_F=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%^.*/%%'` + cat "$lt_dump_D/$lt_dump_F" + exit 0 + ;; + --lt-*) + $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n "$lt_option_debug"; then + echo "siman_tsp:siman_tsp:${LINENO}: libtool wrapper (GNU libtool) 2.4.2" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + $ECHO "siman_tsp:siman_tsp:${LINENO}: newargv[$lt_dump_args_N]: $lt_arg" + lt_dump_args_N=`expr $lt_dump_args_N + 1` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ + + if test -n "$lt_option_debug"; then + $ECHO "siman_tsp:siman_tsp:${LINENO}: newargv[0]: $progdir/$program" 1>&2 + func_lt_dump_args ${1+"$@"} 1>&2 + fi + exec "$progdir/$program" ${1+"$@"} + + $ECHO "$0: cannot exec $program $*" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from $@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case " $* " in + *\ --lt-*) + for lt_wr_arg + do + case $lt_wr_arg in + --lt-*) ;; + *) set x "$@" "$lt_wr_arg"; shift;; + esac + shift + done ;; + esac + func_exec_program_core ${1+"$@"} +} + + # Parse options + func_parse_lt_options "$0" ${1+"$@"} + + # Find the directory that this script lives in. + thisdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + test "x$thisdir" = "x$file" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=`ls -ld "$file" | /usr/bin/sed -n 's/.*-> //p'` + while test -n "$file"; do + destdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + + # If there was a directory component, then change thisdir. + if test "x$destdir" != "x$file"; then + case "$destdir" in + [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;; + *) thisdir="$thisdir/$destdir" ;; + esac + fi + + file=`$ECHO "$file" | /usr/bin/sed 's%^.*/%%'` + file=`ls -ld "$thisdir/$file" | /usr/bin/sed -n 's/.*-> //p'` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no + if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then + # special case for '.' + if test "$thisdir" = "."; then + thisdir=`pwd` + fi + # remove .libs from thisdir + case "$thisdir" in + *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /usr/bin/sed 's%[\\/][^\\/]*$%%'` ;; + .libs ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=`cd "$thisdir" && pwd` + test -n "$absdir" && thisdir="$absdir" + + program=lt-'siman_tsp' + progdir="$thisdir/.libs" + + if test ! -f "$progdir/$program" || + { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /usr/bin/sed 1q`; \ + test "X$file" != "X$progdir/$program"; }; then + + file="$$-$program" + + if test ! -d "$progdir"; then + mkdir "$progdir" + else + rm -f "$progdir/$file" + fi + + # relink executable if necessary + if test -n "$relink_command"; then + if relink_command_output=`eval $relink_command 2>&1`; then : + else + printf %s\n "$relink_command_output" >&2 + rm -f "$progdir/$file" + exit 1 + fi + fi + + mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null || + { rm -f "$progdir/$program"; + mv -f "$progdir/$file" "$progdir/$program"; } + rm -f "$progdir/$file" + fi + + if test -f "$progdir/$program"; then + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + # Run the actual program with our arguments. + func_exec_program ${1+"$@"} + fi + else + # The program doesn't exist. + $ECHO "$0: error: \`$progdir/$program' does not exist" 1>&2 + $ECHO "This script is just a wrapper for $program." 1>&2 + $ECHO "See the libtool documentation for more information." 1>&2 + exit 1 + fi +fi diff --git a/gsl-2.5/doc/examples/siman_tsp.c b/gsl-2.5/doc/examples/siman_tsp.c new file mode 100644 index 00000000..7bd26c6e --- /dev/null +++ b/gsl-2.5/doc/examples/siman_tsp.c @@ -0,0 +1,329 @@ +/* siman/siman_tsp.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Mark Galassi + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include +#include +#include + +/* set up parameters for this simulated annealing run */ + +#define N_TRIES 200 /* how many points do we try before stepping */ +#define ITERS_FIXED_T 2000 /* how many iterations for each T? */ +#define STEP_SIZE 1.0 /* max step size in random walk */ +#define K 1.0 /* Boltzmann constant */ +#define T_INITIAL 5000.0 /* initial temperature */ +#define MU_T 1.002 /* damping factor for temperature */ +#define T_MIN 5.0e-1 + +gsl_siman_params_t params = {N_TRIES, ITERS_FIXED_T, STEP_SIZE, + K, T_INITIAL, MU_T, T_MIN}; + +struct s_tsp_city { + const char * name; + double lat, longitude; /* coordinates */ +}; +typedef struct s_tsp_city Stsp_city; + +void prepare_distance_matrix(void); +void exhaustive_search(void); +void print_distance_matrix(void); +double city_distance(Stsp_city c1, Stsp_city c2); +double Etsp(void *xp); +double Mtsp(void *xp, void *yp); +void Stsp(const gsl_rng * r, void *xp, double step_size); +void Ptsp(void *xp); + +/* in this table, latitude and longitude are obtained from the US + Census Bureau, at http://www.census.gov/cgi-bin/gazetteer */ + +Stsp_city cities[] = {{"Santa Fe", 35.68, 105.95}, + {"Phoenix", 33.54, 112.07}, + {"Albuquerque", 35.12, 106.62}, + {"Clovis", 34.41, 103.20}, + {"Durango", 37.29, 107.87}, + {"Dallas", 32.79, 96.77}, + {"Tesuque", 35.77, 105.92}, + {"Grants", 35.15, 107.84}, + {"Los Alamos", 35.89, 106.28}, + {"Las Cruces", 32.34, 106.76}, + {"Cortez", 37.35, 108.58}, + {"Gallup", 35.52, 108.74}}; + +#define N_CITIES (sizeof(cities)/sizeof(Stsp_city)) + +double distance_matrix[N_CITIES][N_CITIES]; + +/* distance between two cities */ +double city_distance(Stsp_city c1, Stsp_city c2) +{ + const double earth_radius = 6375.000; /* 6000KM approximately */ + /* sin and cos of lat and long; must convert to radians */ + double sla1 = sin(c1.lat*M_PI/180), cla1 = cos(c1.lat*M_PI/180), + slo1 = sin(c1.longitude*M_PI/180), clo1 = cos(c1.longitude*M_PI/180); + double sla2 = sin(c2.lat*M_PI/180), cla2 = cos(c2.lat*M_PI/180), + slo2 = sin(c2.longitude*M_PI/180), clo2 = cos(c2.longitude*M_PI/180); + + double x1 = cla1*clo1; + double x2 = cla2*clo2; + + double y1 = cla1*slo1; + double y2 = cla2*slo2; + + double z1 = sla1; + double z2 = sla2; + + double dot_product = x1*x2 + y1*y2 + z1*z2; + + double angle = acos(dot_product); + + /* distance is the angle (in radians) times the earth radius */ + return angle*earth_radius; +} + +/* energy for the travelling salesman problem */ +double Etsp(void *xp) +{ + /* an array of N_CITIES integers describing the order */ + int *route = (int *) xp; + double E = 0; + unsigned int i; + + for (i = 0; i < N_CITIES; ++i) { + /* use the distance_matrix to optimize this calculation; it had + better be allocated!! */ + E += distance_matrix[route[i]][route[(i + 1) % N_CITIES]]; + } + + return E; +} + +double Mtsp(void *xp, void *yp) +{ + int *route1 = (int *) xp, *route2 = (int *) yp; + double distance = 0; + unsigned int i; + + for (i = 0; i < N_CITIES; ++i) { + distance += ((route1[i] == route2[i]) ? 0 : 1); + } + + return distance; +} + +/* take a step through the TSP space */ +void Stsp(const gsl_rng * r, void *xp, double step_size) +{ + int x1, x2, dummy; + int *route = (int *) xp; + + step_size = 0 ; /* prevent warnings about unused parameter */ + + /* pick the two cities to swap in the matrix; we leave the first + city fixed */ + x1 = (gsl_rng_get (r) % (N_CITIES-1)) + 1; + do { + x2 = (gsl_rng_get (r) % (N_CITIES-1)) + 1; + } while (x2 == x1); + + dummy = route[x1]; + route[x1] = route[x2]; + route[x2] = dummy; +} + +void Ptsp(void *xp) +{ + unsigned int i; + int *route = (int *) xp; + printf(" ["); + for (i = 0; i < N_CITIES; ++i) { + printf(" %d ", route[i]); + } + printf("] "); +} + +int main(void) +{ + int x_initial[N_CITIES]; + unsigned int i; + + const gsl_rng * r = gsl_rng_alloc (gsl_rng_env_setup()) ; + + gsl_ieee_env_setup (); + + prepare_distance_matrix(); + + /* set up a trivial initial route */ + printf("# initial order of cities:\n"); + for (i = 0; i < N_CITIES; ++i) { + printf("# \"%s\"\n", cities[i].name); + x_initial[i] = i; + } + + printf("# distance matrix is:\n"); + print_distance_matrix(); + + printf("# initial coordinates of cities (longitude and latitude)\n"); + /* this can be plotted with */ + /* ./siman_tsp > hhh ; grep city_coord hhh | awk '{print $2 " " $3}' | xyplot -ps -d "xy" > c.eps */ + for (i = 0; i < N_CITIES+1; ++i) { + printf("###initial_city_coord: %g %g \"%s\"\n", + -cities[x_initial[i % N_CITIES]].longitude, + cities[x_initial[i % N_CITIES]].lat, + cities[x_initial[i % N_CITIES]].name); + } + +/* exhaustive_search(); */ + + gsl_siman_solve(r, x_initial, Etsp, Stsp, Mtsp, Ptsp, NULL, NULL, NULL, + N_CITIES*sizeof(int), params); + + printf("# final order of cities:\n"); + for (i = 0; i < N_CITIES; ++i) { + printf("# \"%s\"\n", cities[x_initial[i]].name); + } + + printf("# final coordinates of cities (longitude and latitude)\n"); + /* this can be plotted with */ + /* ./siman_tsp > hhh ; grep city_coord hhh | awk '{print $2 " " $3}' | xyplot -ps -d "xy" > c.eps */ + for (i = 0; i < N_CITIES+1; ++i) { + printf("###final_city_coord: %g %g %s\n", + -cities[x_initial[i % N_CITIES]].longitude, + cities[x_initial[i % N_CITIES]].lat, + cities[x_initial[i % N_CITIES]].name); + } + + printf("# "); + fflush(stdout); +#if 0 + system("date"); +#endif /* 0 */ + fflush(stdout); + + return 0; +} + +void prepare_distance_matrix() +{ + unsigned int i, j; + double dist; + + for (i = 0; i < N_CITIES; ++i) { + for (j = 0; j < N_CITIES; ++j) { + if (i == j) { + dist = 0; + } else { + dist = city_distance(cities[i], cities[j]); + } + distance_matrix[i][j] = dist; + } + } +} + +void print_distance_matrix() +{ + unsigned int i, j; + + for (i = 0; i < N_CITIES; ++i) { + printf("# "); + for (j = 0; j < N_CITIES; ++j) { + printf("%15.8f ", distance_matrix[i][j]); + } + printf("\n"); + } +} + +/* [only works for 12] search the entire space for solutions */ +static double best_E = 1.0e100, second_E = 1.0e100, third_E = 1.0e100; +static int best_route[N_CITIES]; +static int second_route[N_CITIES]; +static int third_route[N_CITIES]; +static void do_all_perms(int *route, int n); + +void exhaustive_search() +{ + static int initial_route[N_CITIES] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}; + printf("\n# "); + fflush(stdout); +#if 0 + system("date"); +#endif + fflush(stdout); + do_all_perms(initial_route, 1); + printf("\n# "); + fflush(stdout); +#if 0 + system("date"); +#endif /* 0 */ + fflush(stdout); + + printf("# exhaustive best route: "); + Ptsp(best_route); + printf("\n# its energy is: %g\n", best_E); + + printf("# exhaustive second_best route: "); + Ptsp(second_route); + printf("\n# its energy is: %g\n", second_E); + + printf("# exhaustive third_best route: "); + Ptsp(third_route); + printf("\n# its energy is: %g\n", third_E); +} + +/* James Theiler's recursive algorithm for generating all routes */ +static void do_all_perms(int *route, int n) +{ + if (n == (N_CITIES-1)) { + /* do it! calculate the energy/cost for that route */ + double E; + E = Etsp(route); /* TSP energy function */ + /* now save the best 3 energies and routes */ + if (E < best_E) { + third_E = second_E; + memcpy(third_route, second_route, N_CITIES*sizeof(*route)); + second_E = best_E; + memcpy(second_route, best_route, N_CITIES*sizeof(*route)); + best_E = E; + memcpy(best_route, route, N_CITIES*sizeof(*route)); + } else if (E < second_E) { + third_E = second_E; + memcpy(third_route, second_route, N_CITIES*sizeof(*route)); + second_E = E; + memcpy(second_route, route, N_CITIES*sizeof(*route)); + } else if (E < third_E) { + third_E = E; + memcpy(route, third_route, N_CITIES*sizeof(*route)); + } + } else { + int new_route[N_CITIES]; + unsigned int j; + int swap_tmp; + memcpy(new_route, route, N_CITIES*sizeof(*route)); + for (j = n; j < N_CITIES; ++j) { + swap_tmp = new_route[j]; + new_route[j] = new_route[n]; + new_route[n] = swap_tmp; + do_all_perms(new_route, n+1); + } + } +} diff --git a/gsl-2.5/doc/examples/siman_tsp.txt b/gsl-2.5/doc/examples/siman_tsp.txt new file mode 100644 index 00000000..9af62133 --- /dev/null +++ b/gsl-2.5/doc/examples/siman_tsp.txt @@ -0,0 +1,4679 @@ +# initial order of cities: +# "Santa Fe" +# "Phoenix" +# "Albuquerque" +# "Clovis" +# "Durango" +# "Dallas" +# "Tesuque" +# "Grants" +# "Los Alamos" +# "Las Cruces" +# "Cortez" +# "Gallup" +# distance matrix is: +# 0.00000000 608.77061959 87.03271377 287.59290063 248.16351027 903.12120984 10.37400305 181.23944205 37.85681473 379.05414878 299.70633436 253.02812978 +# 608.77061959 0.00000000 530.63020490 823.86536910 564.78721117 1426.18240636 614.98206049 427.84327434 590.43655018 513.42812109 528.84796530 376.39544061 +# 87.03271377 530.63020490 0.00000000 322.40876207 266.24411451 944.83559077 96.21014120 111.05985737 91.04048654 309.58702367 304.12839735 197.53825393 +# 287.59290063 823.86536910 322.40876207 0.00000000 529.09045005 622.42730884 290.18965531 431.91179848 324.98308262 403.01862798 584.85531083 519.94358387 +# 248.16351027 564.78721117 266.24411451 529.09045005 0.00000000 1127.31442708 242.88234809 238.12176595 210.80398253 560.00230509 63.17762200 211.78598592 +# 903.12120984 1426.18240636 944.83559077 622.42730884 1127.31442708 0.00000000 903.73819055 1054.05003294 938.78535660 937.76850712 1187.93791188 1142.36738376 +# 10.37400305 614.98206049 96.21014120 290.18965531 242.88234809 903.73819055 0.00000000 187.17569512 35.11270533 389.40890226 295.64628393 256.48386739 +# 181.23944205 427.84327434 111.05985737 431.91179848 238.12176595 1054.05003294 187.17569512 0.00000000 163.51214736 328.22512709 253.62545891 91.47762010 +# 37.85681473 590.43655018 91.04048654 324.98308262 210.80398253 938.78535660 35.11270533 163.51214736 0.00000000 397.45511196 261.85461811 226.03623935 +# 379.05414878 513.42812109 309.58702367 403.01862798 560.00230509 937.76850712 389.40890226 328.22512709 397.45511196 0.00000000 581.64556257 398.22247415 +# 299.70633436 528.84796530 304.12839735 584.85531083 63.17762200 1187.93791188 295.64628393 253.62545891 261.85461811 581.64556257 0.00000000 204.11747465 +# 253.02812978 376.39544061 197.53825393 519.94358387 211.78598592 1142.36738376 256.48386739 91.47762010 226.03623935 398.22247415 204.11747465 0.00000000 +# initial coordinates of cities (longitude and latitude) +###initial_city_coord: -105.95 35.68 "Santa Fe" +###initial_city_coord: -112.07 33.54 "Phoenix" +###initial_city_coord: -106.62 35.12 "Albuquerque" +###initial_city_coord: -103.2 34.41 "Clovis" +###initial_city_coord: -107.87 37.29 "Durango" +###initial_city_coord: -96.77 32.79 "Dallas" +###initial_city_coord: -105.92 35.77 "Tesuque" +###initial_city_coord: -107.84 35.15 "Grants" +###initial_city_coord: -106.28 35.89 "Los Alamos" +###initial_city_coord: -106.76 32.34 "Las Cruces" +###initial_city_coord: -108.58 37.35 "Cortez" +###initial_city_coord: -108.74 35.52 "Gallup" +###initial_city_coord: -105.95 35.68 "Santa Fe" +#-iter #-evals temperature position energy + 0 2001 5000 [ 0 3 2 6 9 10 7 1 11 4 8 5 ] 4999.63 3882.38 + 1 4001 4990.02 [ 0 1 6 9 10 5 4 3 2 11 7 8 ] 5851.94 3823.86 + 2 6001 4980.06 [ 0 2 9 1 10 5 3 7 11 8 6 4 ] 4524.85 3823.86 + 3 8001 4970.12 [ 0 9 5 7 3 8 6 4 11 1 2 10 ] 5128.41 3823.86 + 4 10001 4960.2 [ 0 2 4 8 10 3 6 11 1 5 9 7 ] 5207.28 3763.11 + 5 12001 4950.3 [ 0 11 6 3 1 10 5 4 8 2 9 7 ] 5588.56 3763.11 + 6 14001 4940.42 [ 0 10 5 6 4 2 1 8 7 11 3 9 ] 5578.58 3763.11 + 7 16001 4930.56 [ 0 9 2 1 8 3 7 6 4 5 10 11 ] 5769.06 3763.11 + 8 18001 4920.72 [ 0 8 11 9 3 5 1 2 7 4 6 10 ] 4831.79 3763.11 + 9 20001 4910.89 [ 0 10 4 5 3 1 8 7 2 9 11 6 ] 4776.17 3598.05 + 10 22001 4901.09 [ 0 4 6 9 10 5 3 7 1 8 2 11 ] 5264.26 3598.05 + 11 24001 4891.31 [ 0 10 5 9 7 11 3 6 2 1 8 4 ] 5331.49 3598.05 + 12 26001 4881.55 [ 0 3 9 2 1 7 4 8 6 11 10 5 ] 4994.37 3598.05 + 13 28001 4871.8 [ 0 3 7 9 11 10 5 4 8 1 6 2 ] 5564.79 3598.05 + 14 30001 4862.08 [ 0 10 1 7 8 6 2 3 9 5 4 11 ] 4806.56 3598.05 + 15 32001 4852.37 [ 0 6 5 7 3 8 11 10 4 2 1 9 ] 4907.75 3598.05 + 16 34001 4842.69 [ 0 6 5 9 11 10 2 3 1 7 8 4 ] 4954.95 3598.05 + 17 36001 4833.02 [ 0 2 3 11 8 10 5 6 9 7 1 4 ] 5467.38 3598.05 + 18 38001 4823.37 [ 0 3 6 11 2 9 8 5 7 10 1 4 ] 5327.11 3598.05 + 19 40001 4813.75 [ 0 9 10 4 11 5 1 2 7 6 8 3 ] 5280.77 3598.05 + 20 42001 4804.14 [ 0 3 7 8 1 6 10 2 11 4 9 5 ] 5498.43 3598.05 + 21 44001 4794.55 [ 0 7 3 9 1 4 6 10 2 11 5 8 ] 5253.59 3598.05 + 22 46001 4784.98 [ 0 3 7 10 1 8 2 6 5 4 9 11 ] 5521.97 3598.05 + 23 48001 4775.43 [ 0 5 1 4 11 2 8 3 9 10 6 7 ] 5368.16 3598.05 + 24 50001 4765.9 [ 0 1 4 7 11 9 5 2 6 10 8 3 ] 5050.27 3598.05 + 25 52001 4756.38 [ 0 4 8 11 7 6 10 5 9 1 3 2 ] 5131.74 3598.05 + 26 54001 4746.89 [ 0 11 9 6 5 7 8 2 10 3 1 4 ] 5778.8 3598.05 + 27 56001 4737.42 [ 0 10 11 3 9 1 5 2 8 6 4 7 ] 5099.63 3598.05 + 28 58001 4727.96 [ 0 1 11 10 3 5 4 6 9 2 8 7 ] 4901.55 3598.05 + 29 60001 4718.52 [ 0 3 5 8 7 9 2 6 10 11 4 1 ] 4631.45 3598.05 + 30 62001 4709.1 [ 0 2 11 3 9 7 5 10 4 8 6 1 ] 5310.59 3598.05 + 31 64001 4699.71 [ 0 4 7 8 3 2 5 1 11 9 10 6 ] 5330.49 3598.05 + 32 66001 4690.32 [ 0 4 3 6 8 5 1 11 10 7 9 2 ] 5026.51 3598.05 + 33 68001 4680.96 [ 0 8 9 2 5 6 11 1 7 10 4 3 ] 4787.68 3598.05 + 34 70001 4671.62 [ 0 4 11 7 9 6 3 8 1 5 2 10 ] 5449.52 3598.05 + 35 72001 4662.3 [ 0 2 11 3 8 6 4 10 7 9 5 1 ] 5025.24 3598.05 + 36 74001 4652.99 [ 0 11 2 6 7 10 3 1 9 4 5 8 ] 5573.69 3598.05 + 37 76001 4643.7 [ 0 3 5 1 2 6 11 4 9 7 10 8 ] 4872.88 3598.05 + 38 78001 4634.43 [ 0 1 6 7 5 3 4 2 10 11 8 9 ] 5393.53 3598.05 + 39 80001 4625.18 [ 0 6 4 8 2 11 10 3 5 7 1 9 ] 4538.41 3598.05 + 40 82001 4615.95 [ 0 8 3 10 11 9 6 1 4 5 7 2 ] 5498.67 3598.05 + 41 84001 4606.74 [ 0 3 8 10 2 7 1 5 6 4 9 11 ] 5501.52 3598.05 + 42 86001 4597.54 [ 0 2 10 5 9 1 3 8 6 11 7 4 ] 5048.5 3598.05 + 43 88001 4588.37 [ 0 8 4 10 5 9 3 1 2 7 11 6 ] 4664.45 3598.05 + 44 90001 4579.21 [ 0 3 2 9 7 6 5 4 11 8 10 1 ] 5303.34 3598.05 + 45 92001 4570.07 [ 0 1 2 7 6 9 3 10 8 11 5 4 ] 5820.66 3598.05 + 46 94001 4560.94 [ 0 2 1 3 7 10 8 11 5 9 6 4 ] 5575.55 3598.05 + 47 96001 4551.84 [ 0 1 2 9 3 11 7 5 4 6 10 8 ] 5483.03 3598.05 + 48 98001 4542.76 [ 0 5 9 11 10 4 1 2 3 7 6 8 ] 4616.29 3598.05 + 49 100001 4533.69 [ 0 11 10 7 5 8 1 9 6 2 3 4 ] 5392.75 3598.05 + 50 102001 4524.64 [ 0 6 9 4 1 5 8 3 10 11 2 7 ] 5493.33 3598.05 + 51 104001 4515.61 [ 0 4 9 1 8 3 5 6 2 11 10 7 ] 4695.91 3598.05 + 52 106001 4506.59 [ 0 6 7 5 1 3 9 11 8 2 10 4 ] 5235.43 3598.05 + 53 108001 4497.6 [ 0 5 6 10 2 3 8 9 11 4 7 1 ] 5336.23 3598.05 + 54 110001 4488.62 [ 0 6 5 11 8 4 9 7 10 2 3 1 ] 5694.35 3598.05 + 55 112001 4479.66 [ 0 8 11 9 3 4 1 2 10 7 6 5 ] 5241.43 3598.05 + 56 114001 4470.72 [ 0 10 1 4 7 6 9 2 3 5 11 8 ] 4868.73 3598.05 + 57 116001 4461.8 [ 0 5 11 6 4 9 1 10 2 8 3 7 ] 5480.44 3598.05 + 58 118001 4452.89 [ 0 4 10 6 1 5 7 8 2 3 9 11 ] 5333.43 3598.05 + 59 120001 4444 [ 0 11 3 7 2 4 9 5 1 8 6 10 ] 5727.04 3598.05 + 60 122001 4435.13 [ 0 10 11 7 5 1 2 4 8 9 3 6 ] 5184.25 3598.05 + 61 124001 4426.28 [ 0 1 10 8 11 6 7 5 4 3 2 9 ] 5790.67 3598.05 + 62 126001 4417.45 [ 0 10 6 1 8 11 7 4 2 9 3 5 ] 4860.81 3598.05 + 63 128001 4408.63 [ 0 4 10 5 11 3 7 1 2 9 8 6 ] 5304.5 3598.05 + 64 130001 4399.83 [ 0 11 4 10 3 8 7 9 5 2 1 6 ] 4968.16 3598.05 + 65 132001 4391.05 [ 0 4 7 10 11 3 6 1 2 9 8 5 ] 5448.72 3598.05 + 66 134001 4382.28 [ 0 6 4 2 11 1 8 10 7 9 5 3 ] 4375.36 3598.05 + 67 136001 4373.54 [ 0 3 5 6 2 8 1 10 7 11 9 4 ] 4671.78 3598.05 + 68 138001 4364.81 [ 0 5 1 4 6 7 3 8 10 2 11 9 ] 5621.84 3598.05 + 69 140001 4356.09 [ 0 4 11 6 5 1 10 9 3 2 7 8 ] 5194.7 3598.05 + 70 142001 4347.4 [ 0 8 2 10 1 4 6 5 7 3 11 9 ] 5456.46 3598.05 + 71 144001 4338.72 [ 0 11 8 3 6 4 1 10 9 5 7 2 ] 5202.31 3598.05 + 72 146001 4330.06 [ 0 6 7 8 11 9 1 4 2 10 3 5 ] 4744.31 3598.05 + 73 148001 4321.42 [ 0 4 11 1 7 2 10 8 6 9 5 3 ] 4213.54 3598.05 + 74 150001 4312.79 [ 0 2 9 4 3 1 11 5 7 6 10 8 ] 5664.92 3598.05 + 75 152001 4304.18 [ 0 11 3 6 1 10 4 8 5 9 7 2 ] 4883.84 3598.05 + 76 154001 4295.59 [ 0 6 7 11 1 9 5 4 3 8 10 2 ] 4751.02 3598.05 + 77 156001 4287.02 [ 0 2 9 6 7 4 1 3 8 5 11 10 ] 5509.94 3598.05 + 78 158001 4278.46 [ 0 5 7 11 10 3 2 6 1 8 4 9 ] 5611.52 3598.05 + 79 160001 4269.92 [ 0 7 1 2 5 9 10 8 11 6 3 4 ] 5415.78 3598.05 + 80 162001 4261.4 [ 0 6 5 9 2 8 10 1 3 4 11 7 ] 4880.67 3598.05 + 81 164001 4252.89 [ 0 1 11 8 9 4 2 5 6 3 7 10 ] 5558.91 3598.05 + 82 166001 4244.41 [ 0 3 8 2 10 1 9 7 5 6 11 4 ] 5052.47 3598.05 + 83 168001 4235.93 [ 0 4 5 6 10 11 2 9 3 8 7 1 ] 5214.23 3598.05 + 84 170001 4227.48 [ 0 5 3 4 7 10 9 6 1 11 8 2 ] 4912.93 3598.05 + 85 172001 4219.04 [ 0 11 4 9 7 6 2 10 5 1 3 8 ] 5741.38 3598.05 + 86 174001 4210.62 [ 0 7 11 6 8 5 1 4 3 2 9 10 ] 5536.51 3598.05 + 87 176001 4202.21 [ 0 4 1 9 8 2 10 7 11 6 5 3 ] 4534.35 3598.05 + 88 178001 4193.83 [ 0 10 1 6 2 9 3 5 7 11 4 8 ] 4480.75 3598.05 + 89 180001 4185.46 [ 0 5 10 1 6 8 11 3 4 9 7 2 ] 5631.39 3598.05 + 90 182001 4177.1 [ 0 5 6 3 7 11 10 8 1 2 4 9 ] 5412.78 3598.05 + 91 184001 4168.76 [ 0 4 1 7 6 8 2 5 10 3 11 9 ] 5568.97 3598.05 + 92 186001 4160.44 [ 0 5 3 6 10 8 2 11 1 9 4 7 ] 4531 3598.05 + 93 188001 4152.14 [ 0 10 1 9 5 2 6 3 11 7 8 4 ] 4844.89 3598.05 + 94 190001 4143.85 [ 0 3 6 10 8 9 7 1 2 11 4 5 ] 5259.2 3598.05 + 95 192001 4135.58 [ 0 4 10 2 6 9 1 11 8 3 5 7 ] 4399.65 3598.05 + 96 194001 4127.33 [ 0 10 6 5 2 9 3 4 11 7 8 1 ] 5351.61 3598.05 + 97 196001 4119.09 [ 0 2 8 3 6 4 10 7 1 11 9 5 ] 4396.28 3598.05 + 98 198001 4110.87 [ 0 3 7 8 5 10 9 4 2 1 6 11 ] 6072.76 3598.05 + 99 200001 4102.66 [ 0 11 8 7 4 10 3 6 9 5 2 1 ] 5230.33 3598.05 + 100 202001 4094.47 [ 0 4 3 1 5 10 11 6 7 8 2 9 ] 5806.21 3598.05 + 101 204001 4086.3 [ 0 9 4 7 8 11 2 3 6 1 10 5 ] 5611.75 3598.05 + 102 206001 4078.14 [ 0 5 3 2 1 6 10 11 7 4 9 8 ] 4818.25 3598.05 + 103 208001 4070 [ 0 1 5 9 8 2 4 7 6 10 3 11 ] 5806.23 3598.05 + 104 210001 4061.88 [ 0 6 2 4 1 3 7 9 5 8 10 11 ] 5117.17 3598.05 + 105 212001 4053.77 [ 0 1 4 5 10 11 3 2 6 7 8 9 ] 5758.69 3598.05 + 106 214001 4045.68 [ 0 5 8 4 10 3 6 11 7 1 2 9 ] 4986.01 3598.05 + 107 216001 4037.6 [ 0 1 7 11 3 8 2 4 9 6 5 10 ] 5671.1 3598.05 + 108 218001 4029.55 [ 0 9 4 7 1 2 8 3 10 5 6 11 ] 5737.72 3598.05 + 109 220001 4021.5 [ 0 10 7 3 9 11 8 4 5 2 6 1 ] 5615.44 3598.05 + 110 222001 4013.48 [ 0 10 8 5 4 9 1 3 7 11 6 2 ] 5488.07 3598.05 + 111 224001 4005.46 [ 0 11 6 10 1 7 2 4 3 9 5 8 ] 4985.67 3598.05 + 112 226001 3997.47 [ 0 8 9 1 3 2 5 10 4 11 6 7 ] 5127.65 3598.05 + 113 228001 3989.49 [ 0 10 9 5 1 7 11 2 3 4 6 8 ] 5129.51 3598.05 + 114 230001 3981.53 [ 0 1 7 11 4 10 3 8 2 9 5 6 ] 4565.4 3598.05 + 115 232001 3973.58 [ 0 10 3 11 5 2 1 7 4 6 8 9 ] 5742.81 3598.05 + 116 234001 3965.65 [ 0 5 6 4 10 8 7 1 3 11 9 2 ] 5104.78 3598.05 + 117 236001 3957.73 [ 0 5 9 3 10 8 4 6 1 2 11 7 ] 5160.17 3598.05 + 118 238001 3949.83 [ 0 11 5 9 6 4 1 8 7 2 10 3 ] 5571.83 3598.05 + 119 240001 3941.95 [ 0 7 10 3 9 4 2 5 1 11 6 8 ] 5325.85 3598.05 + 120 242001 3934.08 [ 0 1 6 3 2 11 8 4 10 5 7 9 ] 5483.17 3598.05 + 121 244001 3926.23 [ 0 1 3 9 6 4 7 5 2 10 8 11 ] 5750 3598.05 + 122 246001 3918.39 [ 0 11 3 10 2 6 8 5 9 7 4 1 ] 5409.74 3598.05 + 123 248001 3910.57 [ 0 2 3 11 8 7 10 4 5 6 1 9 ] 5174.25 3598.05 + 124 250001 3902.77 [ 0 7 4 1 10 9 3 2 11 6 8 5 ] 5151.11 3598.05 + 125 252001 3894.98 [ 0 11 10 2 6 9 8 7 5 3 1 4 ] 5121.15 3598.05 + 126 254001 3887.2 [ 0 9 2 11 5 3 6 4 10 7 8 1 ] 4863.57 3555.95 + 127 256001 3879.44 [ 0 10 9 1 3 7 2 11 5 4 8 6 ] 5485.13 3555.95 + 128 258001 3871.7 [ 0 1 4 5 8 9 3 11 6 10 7 2 ] 5563.92 3555.95 + 129 260001 3863.97 [ 0 9 1 6 10 5 8 2 7 3 4 11 ] 5557.75 3555.95 + 130 262001 3856.26 [ 0 9 1 5 4 10 11 6 8 7 3 2 ] 5009.74 3555.95 + 131 264001 3848.56 [ 0 4 3 11 9 2 10 5 8 6 1 7 ] 5695.04 3555.95 + 132 266001 3840.88 [ 0 1 4 6 9 5 11 10 8 2 7 3 ] 5273.56 3555.95 + 133 268001 3833.21 [ 0 7 10 2 1 9 4 3 5 11 8 6 ] 4908.46 3555.95 + 134 270001 3825.56 [ 0 7 6 4 5 10 1 2 9 11 8 3 ] 5532.45 3555.95 + 135 272001 3817.93 [ 0 11 4 2 9 8 7 1 3 10 5 6 ] 5540.23 3555.95 + 136 274001 3810.31 [ 0 4 5 3 9 1 7 8 11 2 10 6 ] 4539.43 3555.95 + 137 276001 3802.7 [ 0 7 9 11 5 2 8 10 1 6 3 4 ] 5559.06 3555.95 + 138 278001 3795.11 [ 0 1 2 8 9 11 3 5 10 6 4 7 ] 5314.32 3555.95 + 139 280001 3787.54 [ 0 8 4 1 9 7 11 5 6 3 10 2 ] 5058.89 3555.95 + 140 282001 3779.98 [ 0 10 3 11 2 7 1 8 9 4 6 5 ] 5738.58 3555.95 + 141 284001 3772.43 [ 0 11 5 8 1 10 3 6 7 2 4 9 ] 5832.05 3555.95 + 142 286001 3764.9 [ 0 6 4 11 9 1 7 2 10 8 3 5 ] 4332.11 3555.95 + 143 288001 3757.39 [ 0 5 7 8 2 10 6 1 3 11 4 9 ] 5921.13 3555.95 + 144 290001 3749.89 [ 0 6 9 11 10 1 4 5 8 2 3 7 ] 5188.46 3555.95 + 145 292001 3742.4 [ 0 9 3 11 8 6 5 2 10 4 1 7 ] 4952.92 3555.95 + 146 294001 3734.93 [ 0 10 1 9 2 5 7 3 11 4 8 6 ] 5070.39 3555.95 + 147 296001 3727.48 [ 0 1 11 3 10 9 4 2 5 6 8 7 ] 5726.3 3555.95 + 148 298001 3720.04 [ 0 3 11 6 1 2 9 10 8 5 7 4 ] 5841.84 3555.95 + 149 300001 3712.61 [ 0 2 3 10 6 5 9 4 11 1 7 8 ] 4908.85 3555.95 + 150 302001 3705.2 [ 0 1 2 10 4 3 8 11 7 5 6 9 ] 5404.55 3555.95 + 151 304001 3697.81 [ 0 6 5 8 7 4 11 2 3 10 9 1 ] 5274.96 3555.95 + 152 306001 3690.42 [ 0 9 3 10 5 6 1 4 7 11 2 8 ] 5294.41 3555.95 + 153 308001 3683.06 [ 0 5 1 10 8 7 3 2 6 9 11 4 ] 5381.63 3555.95 + 154 310001 3675.71 [ 0 7 1 2 4 3 6 10 8 9 11 5 ] 5623.9 3555.95 + 155 312001 3668.37 [ 0 11 9 3 1 4 6 5 8 10 2 7 ] 5386.61 3555.95 + 156 314001 3661.05 [ 0 2 8 10 7 4 5 9 1 3 11 6 ] 5120.85 3555.95 + 157 316001 3653.74 [ 0 7 2 3 5 1 11 6 10 9 4 8 ] 4982.15 3555.95 + 158 318001 3646.45 [ 0 10 3 11 7 2 9 4 1 8 5 6 ] 5484.75 3555.95 + 159 320001 3639.17 [ 0 5 3 10 11 7 4 9 8 6 2 1 ] 4872.3 3555.95 + 160 322001 3631.91 [ 0 7 8 6 9 3 2 4 5 10 11 1 ] 5265.48 3555.95 + 161 324001 3624.66 [ 0 1 9 5 10 4 11 2 3 6 8 7 ] 4712.87 3555.95 + 162 326001 3617.42 [ 0 6 2 3 5 9 4 10 8 1 11 7 ] 4113.77 3555.95 + 163 328001 3610.2 [ 0 3 5 8 10 9 1 2 4 6 7 11 ] 4777.17 3555.95 + 164 330001 3603 [ 0 1 8 2 4 3 9 6 5 11 10 7 ] 5563.1 3555.95 + 165 332001 3595.8 [ 0 8 4 9 1 3 11 5 10 7 6 2 ] 5620.25 3555.95 + 166 334001 3588.63 [ 0 6 4 10 7 11 9 8 3 1 5 2 ] 5064.11 3555.95 + 167 336001 3581.46 [ 0 7 5 8 3 6 2 4 11 9 10 1 ] 5480.97 3555.95 + 168 338001 3574.31 [ 0 11 8 10 6 4 9 1 7 5 2 3 ] 5389.61 3555.95 + 169 340001 3567.18 [ 0 3 4 10 8 11 9 7 5 6 2 1 ] 5287.6 3555.95 + 170 342001 3560.06 [ 0 4 2 8 10 6 3 11 5 7 9 1 ] 5619.92 3555.95 + 171 344001 3552.95 [ 0 10 7 4 9 11 6 1 2 8 5 3 ] 5091.62 3555.95 + 172 346001 3545.86 [ 0 9 6 3 5 8 10 2 4 7 1 11 ] 4747.48 3555.95 + 173 348001 3538.79 [ 0 7 1 11 8 9 6 2 4 10 5 3 ] 4521.97 3555.95 + 174 350001 3531.72 [ 0 11 7 3 10 5 9 4 2 1 8 6 ] 5479.78 3555.95 + 175 352001 3524.67 [ 0 1 9 7 2 6 5 11 4 8 3 10 ] 5335.93 3555.95 + 176 354001 3517.64 [ 0 10 7 5 11 3 4 2 9 1 6 8 ] 5575.99 3555.95 + 177 356001 3510.62 [ 0 7 2 4 1 6 8 5 9 3 11 10 ] 5076.77 3555.95 + 178 358001 3503.61 [ 0 11 3 1 6 5 2 4 7 9 10 8 ] 5774.34 3555.95 + 179 360001 3496.62 [ 0 2 6 10 1 9 11 4 8 3 7 5 ] 5056.04 3555.95 + 180 362001 3489.64 [ 0 11 6 10 8 3 1 2 5 4 7 9 ] 5764.04 3555.95 + 181 364001 3482.67 [ 0 5 3 9 10 7 4 1 2 8 6 11 ] 4733.04 3555.95 + 182 366001 3475.72 [ 0 7 10 1 9 4 5 6 2 8 3 11 ] 5353.4 3555.95 + 183 368001 3468.78 [ 0 6 7 8 5 9 2 11 1 4 10 3 ] 4621.55 3555.95 + 184 370001 3461.86 [ 0 3 2 5 10 9 4 11 1 8 6 7 ] 5466.57 3555.95 + 185 372001 3454.95 [ 0 3 10 7 11 4 8 1 2 6 9 5 ] 5087.72 3555.95 + 186 374001 3448.05 [ 0 5 9 8 11 2 10 4 3 7 1 6 ] 5043.43 3555.95 + 187 376001 3441.17 [ 0 2 4 1 3 10 9 11 5 8 7 6 ] 5748.87 3555.95 + 188 378001 3434.3 [ 0 8 5 7 1 9 10 2 3 11 4 6 ] 5165.13 3555.95 + 189 380001 3427.45 [ 0 8 5 4 2 7 1 3 9 11 10 6 ] 5044.35 3555.95 + 190 382001 3420.6 [ 0 5 7 1 11 8 3 10 9 4 6 2 ] 5465.06 3555.95 + 191 384001 3413.78 [ 0 9 2 1 8 3 5 4 7 11 6 10 ] 5065.87 3555.95 + 192 386001 3406.96 [ 0 4 6 2 5 7 1 8 9 10 3 11 ] 5941.35 3555.95 + 193 388001 3400.16 [ 0 11 8 7 10 5 9 3 6 1 2 4 ] 5375.14 3555.95 + 194 390001 3393.38 [ 0 8 6 3 5 2 11 9 1 7 4 10 ] 4068.46 3555.95 + 195 392001 3386.6 [ 0 4 9 7 2 8 3 10 6 11 1 5 ] 5506.16 3555.95 + 196 394001 3379.84 [ 0 8 5 1 2 9 3 11 4 10 6 7 ] 5105.03 3555.95 + 197 396001 3373.1 [ 0 3 2 5 7 6 9 4 1 8 10 11 ] 5619.7 3555.95 + 198 398001 3366.36 [ 0 1 11 8 4 3 5 10 2 9 6 7 ] 5133 3555.95 + 199 400001 3359.65 [ 0 9 5 4 8 1 11 3 2 10 6 7 ] 5432.32 3555.95 + 200 402001 3352.94 [ 0 3 10 9 6 8 1 4 2 11 5 7 ] 5875.28 3555.95 + 201 404001 3346.25 [ 0 4 11 2 7 5 1 3 8 10 6 9 ] 5723.59 3555.95 + 202 406001 3339.57 [ 0 2 8 4 3 10 1 7 11 6 9 5 ] 5037.77 3555.95 + 203 408001 3332.9 [ 0 10 1 6 7 3 8 4 11 5 2 9 ] 5586.04 3555.95 + 204 410001 3326.25 [ 0 6 11 5 4 1 3 9 2 10 8 7 ] 5548.53 3555.95 + 205 412001 3319.61 [ 0 4 2 7 9 3 5 6 10 11 1 8 ] 4387.33 3555.95 + 206 414001 3312.98 [ 0 4 10 11 3 7 2 1 9 8 5 6 ] 4872.78 3555.95 + 207 416001 3306.37 [ 0 11 10 6 4 7 2 3 8 1 9 5 ] 4937 3555.95 + 208 418001 3299.77 [ 0 10 9 5 8 1 6 3 11 2 4 7 ] 5656.6 3555.95 + 209 420001 3293.19 [ 0 10 1 8 11 7 4 9 5 6 3 2 ] 5075.77 3555.95 + 210 422001 3286.61 [ 0 6 1 9 5 2 4 7 3 10 8 11 ] 5283.44 3555.95 + 211 424001 3280.05 [ 0 3 7 6 9 8 5 10 11 2 4 1 ] 5661.73 3555.95 + 212 426001 3273.51 [ 0 10 7 1 2 4 9 8 5 6 11 3 ] 5642.05 3555.95 + 213 428001 3266.97 [ 0 3 1 10 6 4 2 11 7 8 9 5 ] 5135.95 3555.95 + 214 430001 3260.45 [ 0 11 10 7 5 1 2 6 9 3 8 4 ] 5394.22 3555.95 + 215 432001 3253.94 [ 0 3 2 1 8 4 7 6 11 10 5 9 ] 5332.53 3555.95 + 216 434001 3247.45 [ 0 11 3 9 2 6 8 1 5 10 4 7 ] 5304 3555.95 + 217 436001 3240.97 [ 0 8 3 10 4 2 11 9 5 6 1 7 ] 4938.45 3555.95 + 218 438001 3234.5 [ 0 8 5 10 11 6 9 4 1 7 3 2 ] 5408.58 3555.95 + 219 440001 3228.04 [ 0 1 7 8 2 10 5 6 11 3 4 9 ] 5931.55 3555.95 + 220 442001 3221.6 [ 0 1 3 7 5 11 8 2 4 9 10 6 ] 6091.95 3555.95 + 221 444001 3215.17 [ 0 2 3 11 6 7 1 10 4 5 8 9 ] 5235.52 3555.95 + 222 446001 3208.75 [ 0 4 1 8 3 6 9 2 5 7 10 11 ] 5427.21 3555.95 + 223 448001 3202.34 [ 0 8 2 9 6 3 1 5 11 10 4 7 ] 5197.15 3555.95 + 224 450001 3195.95 [ 0 9 3 6 8 10 5 2 7 11 4 1 ] 5089.88 3555.95 + 225 452001 3189.57 [ 0 11 6 10 1 4 3 9 8 5 2 7 ] 5404.28 3555.95 + 226 454001 3183.21 [ 0 5 1 10 6 8 4 9 3 11 2 7 ] 5372.52 3555.95 + 227 456001 3176.85 [ 0 8 10 11 6 7 2 9 4 1 5 3 ] 4829.13 3555.95 + 228 458001 3170.51 [ 0 11 5 1 7 10 3 4 6 8 2 9 ] 5674.67 3555.95 + 229 460001 3164.18 [ 0 3 9 11 2 10 5 8 4 1 7 6 ] 5118.21 3555.95 + 230 462001 3157.87 [ 0 2 11 5 6 7 8 3 10 1 9 4 ] 5441.64 3555.95 + 231 464001 3151.57 [ 0 8 11 1 10 3 4 7 6 9 2 5 ] 5255.33 3555.95 + 232 466001 3145.27 [ 0 11 7 10 8 6 9 3 5 2 1 4 ] 4598.37 3555.95 + 233 468001 3139 [ 0 9 5 6 8 11 10 1 2 4 7 3 ] 4969.18 3555.95 + 234 470001 3132.73 [ 0 1 9 11 3 8 10 7 4 6 5 2 ] 5297.44 3555.95 + 235 472001 3126.48 [ 0 2 11 5 3 7 10 8 4 9 6 1 ] 5380.73 3555.95 + 236 474001 3120.24 [ 0 6 7 5 10 1 8 9 4 2 3 11 ] 5877.9 3555.95 + 237 476001 3114.01 [ 0 3 10 4 7 2 5 6 9 1 8 11 ] 5105.72 3555.95 + 238 478001 3107.79 [ 0 11 2 7 10 4 5 9 3 1 6 8 ] 4858.35 3555.95 + 239 480001 3101.59 [ 0 8 7 4 2 9 3 6 10 5 1 11 ] 5247.72 3555.95 + 240 482001 3095.4 [ 0 3 10 7 9 6 4 8 1 2 11 5 ] 5661.49 3555.95 + 241 484001 3089.22 [ 0 4 5 8 6 11 9 3 7 10 2 1 ] 5536.17 3555.95 + 242 486001 3083.06 [ 0 7 9 3 8 2 4 10 1 5 11 6 ] 5022.18 3555.95 + 243 488001 3076.9 [ 0 9 2 8 5 6 1 11 10 4 7 3 ] 4838.5 3555.95 + 244 490001 3070.76 [ 0 5 4 9 10 2 6 8 1 11 3 7 ] 5707.46 3555.95 + 245 492001 3064.63 [ 0 1 10 8 11 6 4 9 2 5 3 7 ] 5174.88 3555.95 + 246 494001 3058.51 [ 0 10 9 2 1 8 5 3 11 7 6 4 ] 5162.86 3555.95 + 247 496001 3052.41 [ 0 9 6 5 4 8 10 2 11 7 1 3 ] 5404.62 3555.95 + 248 498001 3046.32 [ 0 6 1 5 2 3 8 7 4 10 11 9 ] 5089.97 3555.95 + 249 500001 3040.24 [ 0 1 7 4 9 10 11 5 3 6 8 2 ] 4888.67 3555.95 + 250 502001 3034.17 [ 0 4 6 1 11 10 2 9 3 5 7 8 ] 4581.12 3555.95 + 251 504001 3028.11 [ 0 10 3 11 9 8 1 5 2 6 7 4 ] 5931.31 3555.95 + 252 506001 3022.07 [ 0 6 8 7 10 4 2 3 11 5 9 1 ] 4836.73 3555.95 + 253 508001 3016.04 [ 0 2 9 7 6 11 8 4 3 1 5 10 ] 5872.13 3555.95 + 254 510001 3010.02 [ 0 9 7 2 11 5 8 1 6 10 3 4 ] 5960.2 3555.95 + 255 512001 3004.01 [ 0 2 3 8 6 10 1 4 7 9 11 5 ] 5168.88 3555.95 + 256 514001 2998.01 [ 0 5 2 3 8 4 1 7 10 6 11 9 ] 5281.82 3555.95 + 257 516001 2992.03 [ 0 8 11 2 5 4 9 7 3 1 10 6 ] 5512.45 3555.95 + 258 518001 2986.06 [ 0 5 1 4 8 10 7 9 3 11 6 2 ] 5311.29 3555.95 + 259 520001 2980.1 [ 0 8 7 4 11 6 1 2 9 5 10 3 ] 5361.11 3555.95 + 260 522001 2974.15 [ 0 2 7 9 10 11 8 4 1 6 3 5 ] 4744.43 3555.95 + 261 524001 2968.21 [ 0 4 6 7 3 9 5 1 2 8 11 10 ] 5228.63 3555.95 + 262 526001 2962.29 [ 0 1 3 10 6 9 8 2 11 7 4 5 ] 5748.62 3555.95 + 263 528001 2956.37 [ 0 8 2 5 4 7 11 10 1 9 6 3 ] 4744.23 3555.95 + 264 530001 2950.47 [ 0 6 4 8 7 3 11 1 9 2 10 5 ] 5174.03 3555.95 + 265 532001 2944.58 [ 0 8 3 4 11 7 9 2 6 10 5 1 ] 5447.75 3555.95 + 266 534001 2938.71 [ 0 3 8 11 5 9 2 7 6 10 4 1 ] 5058.95 3555.95 + 267 536001 2932.84 [ 0 5 9 2 1 7 10 3 11 4 8 6 ] 4935.45 3555.95 + 268 538001 2926.99 [ 0 1 8 6 3 2 5 4 7 11 9 10 ] 5528.24 3555.95 + 269 540001 2921.14 [ 0 8 5 1 9 10 4 2 7 3 11 6 ] 5157.09 3555.95 + 270 542001 2915.31 [ 0 9 1 5 3 10 8 2 4 7 11 6 ] 4741.54 3555.95 + 271 544001 2909.49 [ 0 3 4 5 6 2 7 10 8 9 1 11 ] 5110.79 3555.95 + 272 546001 2903.69 [ 0 4 5 6 8 3 11 9 1 10 2 7 ] 5196.18 3555.95 + 273 548001 2897.89 [ 0 4 2 10 6 11 7 8 9 5 3 1 ] 5015.94 3555.95 + 274 550001 2892.11 [ 0 11 5 1 9 6 2 8 10 3 4 7 ] 5706.83 3555.95 + 275 552001 2886.33 [ 0 4 5 2 11 10 6 1 3 8 7 9 ] 5652.24 3555.95 + 276 554001 2880.57 [ 0 6 11 4 5 8 9 7 10 2 1 3 ] 5470.27 3555.95 + 277 556001 2874.82 [ 0 4 11 3 10 9 5 1 7 8 6 2 ] 5320.06 3555.95 + 278 558001 2869.09 [ 0 4 1 11 5 7 9 10 6 2 3 8 ] 5372.74 3555.95 + 279 560001 2863.36 [ 0 2 4 11 10 3 5 8 9 6 1 7 ] 4926.18 3555.95 + 280 562001 2857.64 [ 0 8 9 2 10 5 3 4 1 7 11 6 ] 4739.45 3555.95 + 281 564001 2851.94 [ 0 2 8 9 1 11 4 10 5 6 7 3 ] 4738.67 3555.95 + 282 566001 2846.25 [ 0 9 2 8 4 11 6 3 5 1 7 10 ] 4778.73 3555.95 + 283 568001 2840.57 [ 0 6 7 4 10 11 8 5 9 1 2 3 ] 4459.62 3555.95 + 284 570001 2834.9 [ 0 2 9 3 1 6 10 4 8 11 7 5 ] 5082.8 3555.95 + 285 572001 2829.24 [ 0 9 2 5 1 7 10 11 6 3 8 4 ] 5275.87 3555.95 + 286 574001 2823.59 [ 0 1 11 4 3 9 5 8 10 7 6 2 ] 4891.51 3555.95 + 287 576001 2817.95 [ 0 7 2 10 8 4 11 5 9 6 3 1 ] 5473.24 3555.95 + 288 578001 2812.33 [ 0 2 9 10 6 8 5 7 1 3 4 11 ] 5547.47 3555.95 + 289 580001 2806.72 [ 0 11 1 8 7 10 4 6 5 2 3 9 ] 4896.11 3555.95 + 290 582001 2801.11 [ 0 6 3 1 10 11 9 2 8 5 4 7 ] 5141.71 3555.95 + 291 584001 2795.52 [ 0 1 6 11 3 8 2 10 4 5 7 9 ] 5672.15 3555.95 + 292 586001 2789.94 [ 0 8 11 9 2 10 4 5 6 7 1 3 ] 5096.54 3555.95 + 293 588001 2784.37 [ 0 6 4 10 11 3 8 5 7 1 9 2 ] 4696.2 3555.95 + 294 590001 2778.82 [ 0 5 9 1 6 7 3 4 10 11 2 8 ] 4711.21 3555.95 + 295 592001 2773.27 [ 0 6 11 7 10 5 1 8 9 2 3 4 ] 5623.22 3555.95 + 296 594001 2767.73 [ 0 4 7 11 9 3 8 10 5 2 6 1 ] 5418.58 3555.95 + 297 596001 2762.21 [ 0 4 8 6 10 11 9 1 5 3 2 7 ] 4568.81 3555.95 + 298 598001 2756.7 [ 0 7 6 5 1 8 10 3 11 2 9 4 ] 5970.72 3555.95 + 299 600001 2751.19 [ 0 9 11 1 4 7 8 5 6 10 3 2 ] 5252.56 3555.95 + 300 602001 2745.7 [ 0 9 3 2 11 7 8 1 6 10 4 5 ] 5151.69 3555.95 + 301 604001 2740.22 [ 0 7 9 2 3 8 10 11 4 5 6 1 ] 5399.01 3555.95 + 302 606001 2734.75 [ 0 5 11 2 3 8 4 9 10 1 6 7 ] 5755.12 3555.95 + 303 608001 2729.29 [ 0 4 8 6 1 10 2 7 3 9 5 11 ] 5221.19 3555.95 + 304 610001 2723.85 [ 0 1 7 11 2 6 9 3 5 10 4 8 ] 4336.47 3555.95 + 305 612001 2718.41 [ 0 9 8 10 4 3 5 6 7 1 2 11 ] 4753.01 3555.95 + 306 614001 2712.98 [ 0 2 5 3 8 6 7 11 1 4 10 9 ] 4258.1 3555.95 + 307 616001 2707.57 [ 0 8 6 5 10 2 9 3 7 4 1 11 ] 5045.62 3555.95 + 308 618001 2702.16 [ 0 11 1 7 10 3 5 9 2 4 8 6 ] 4288.07 3555.95 + 309 620001 2696.77 [ 0 10 9 5 8 2 1 11 4 6 3 7 ] 5113.98 3555.95 + 310 622001 2691.39 [ 0 9 2 10 4 3 1 11 6 5 8 7 ] 5229.06 3555.95 + 311 624001 2686.02 [ 0 2 10 4 11 8 5 6 7 3 1 9 ] 5070.12 3555.95 + 312 626001 2680.65 [ 0 1 9 6 8 2 5 3 11 7 4 10 ] 4417.45 3555.95 + 313 628001 2675.3 [ 0 2 9 5 11 6 4 3 1 7 10 8 ] 5310.26 3555.95 + 314 630001 2669.96 [ 0 5 2 10 7 1 6 3 4 9 8 11 ] 5704.34 3555.95 + 315 632001 2664.63 [ 0 11 3 6 4 2 8 9 5 7 1 10 ] 5309 3555.95 + 316 634001 2659.32 [ 0 2 10 5 8 4 9 3 6 1 11 7 ] 5245.99 3555.95 + 317 636001 2654.01 [ 0 11 5 1 10 8 9 4 6 3 7 2 ] 5732.81 3555.95 + 318 638001 2648.71 [ 0 3 2 6 9 1 10 8 11 7 4 5 ] 4985.82 3555.95 + 319 640001 2643.42 [ 0 6 8 1 9 11 10 5 7 4 3 2 ] 5170.33 3555.95 + 320 642001 2638.15 [ 0 3 5 6 1 9 10 8 11 2 4 7 ] 4894.85 3555.95 + 321 644001 2632.88 [ 0 3 5 9 1 7 6 8 10 4 2 11 ] 4053.19 3555.95 + 322 646001 2627.63 [ 0 11 6 10 1 8 4 2 9 7 5 3 ] 5003.37 3555.95 + 323 648001 2622.38 [ 0 9 11 3 5 8 6 2 10 7 1 4 ] 4788.3 3555.95 + 324 650001 2617.15 [ 0 1 5 7 11 8 2 6 4 3 9 10 ] 5650.11 3555.95 + 325 652001 2611.92 [ 0 7 10 8 4 9 3 2 6 11 1 5 ] 5251.35 3555.95 + 326 654001 2606.71 [ 0 9 1 7 3 6 10 2 5 11 8 4 ] 5414.41 3555.95 + 327 656001 2601.51 [ 0 6 11 9 5 8 1 2 10 7 3 4 ] 5429.62 3555.95 + 328 658001 2596.31 [ 0 4 1 7 11 10 9 8 6 5 3 2 ] 4486.21 3555.95 + 329 660001 2591.13 [ 0 11 3 6 7 5 2 8 10 4 1 9 ] 5122.56 3555.95 + 330 662001 2585.96 [ 0 4 7 2 1 11 3 8 5 6 9 10 ] 5462.58 3555.95 + 331 664001 2580.8 [ 0 2 6 4 11 3 8 1 10 5 9 7 ] 5237.29 3555.95 + 332 666001 2575.65 [ 0 4 10 5 2 6 7 8 9 3 1 11 ] 5144.78 3555.95 + 333 668001 2570.51 [ 0 2 9 10 6 8 4 1 3 7 5 11 ] 5789.84 3555.95 + 334 670001 2565.38 [ 0 9 10 11 1 5 8 6 4 3 2 7 ] 5327.97 3555.95 + 335 672001 2560.26 [ 0 6 2 5 7 10 9 8 11 1 3 4 ] 5541.75 3555.95 + 336 674001 2555.15 [ 0 2 1 11 7 6 10 4 9 8 3 5 ] 4439.52 3555.95 + 337 676001 2550.05 [ 0 7 3 5 11 2 9 10 6 1 4 8 ] 5190.79 3555.95 + 338 678001 2544.96 [ 0 6 10 7 4 8 1 5 3 9 2 11 ] 4810.79 3555.95 + 339 680001 2539.88 [ 0 6 7 3 4 9 5 10 11 2 1 8 ] 5404.84 3555.95 + 340 682001 2534.81 [ 0 2 9 11 7 5 10 8 1 6 4 3 ] 5655.15 3555.95 + 341 684001 2529.75 [ 0 5 6 2 1 4 8 7 9 10 11 3 ] 5294.33 3555.95 + 342 686001 2524.7 [ 0 6 5 8 4 3 10 1 2 9 11 7 ] 5217.65 3555.95 + 343 688001 2519.66 [ 0 8 10 2 9 5 6 11 1 7 3 4 ] 5024.82 3555.95 + 344 690001 2514.63 [ 0 11 1 10 2 7 9 5 3 6 4 8 ] 4243.61 3555.95 + 345 692001 2509.61 [ 0 8 9 3 5 1 7 10 4 11 6 2 ] 4283.1 3555.95 + 346 694001 2504.6 [ 0 2 1 7 5 8 11 4 3 9 6 10 ] 5393.03 3555.95 + 347 696001 2499.6 [ 0 3 5 10 8 1 11 9 6 2 4 7 ] 4896.09 3555.95 + 348 698001 2494.61 [ 0 1 6 7 8 3 5 11 10 9 2 4 ] 5273.98 3555.95 + 349 700001 2489.63 [ 0 2 5 7 4 11 9 6 1 8 3 10 ] 5738.42 3555.95 + 350 702001 2484.66 [ 0 11 6 10 9 2 1 4 8 7 5 3 ] 5130.19 3555.95 + 351 704001 2479.7 [ 0 9 1 5 7 10 11 3 4 2 6 8 ] 5314.92 3555.95 + 352 706001 2474.75 [ 0 7 11 9 10 8 5 2 3 4 1 6 ] 5439.7 3555.95 + 353 708001 2469.81 [ 0 4 11 9 3 2 7 1 6 5 8 10 ] 5141.57 3555.95 + 354 710001 2464.88 [ 0 9 8 6 7 5 10 1 11 2 4 3 ] 5426.49 3554.01 + 355 712001 2459.96 [ 0 5 7 4 1 11 6 8 2 9 3 10 ] 5116.28 3554.01 + 356 714001 2455.05 [ 0 5 3 11 4 1 7 9 10 2 8 6 ] 4600.43 3554.01 + 357 716001 2450.15 [ 0 2 4 6 5 11 8 9 7 10 1 3 ] 5487.91 3554.01 + 358 718001 2445.26 [ 0 9 10 6 5 1 4 7 8 11 2 3 ] 5586.26 3554.01 + 359 720001 2440.38 [ 0 2 7 11 1 3 5 4 9 6 10 8 ] 4784.34 3554.01 + 360 722001 2435.51 [ 0 2 10 1 3 11 7 8 6 9 4 5 ] 5533.77 3554.01 + 361 724001 2430.65 [ 0 8 1 7 4 2 6 5 11 10 3 9 ] 5273.86 3554.01 + 362 726001 2425.8 [ 0 7 10 6 2 4 11 8 5 1 9 3 ] 5099.8 3554.01 + 363 728001 2420.96 [ 0 9 11 4 5 7 8 1 10 6 2 3 ] 5455.08 3554.01 + 364 730001 2416.12 [ 0 10 11 6 8 1 4 2 5 3 9 7 ] 4696.63 3554.01 + 365 732001 2411.3 [ 0 8 11 1 10 6 4 7 2 5 3 9 ] 4406.18 3554.01 + 366 734001 2406.49 [ 0 3 2 7 10 6 4 1 9 11 8 5 ] 5057.6 3554.01 + 367 736001 2401.69 [ 0 2 9 1 11 8 5 6 7 4 3 10 ] 5193.95 3554.01 + 368 738001 2396.89 [ 0 2 3 8 11 4 1 7 5 6 9 10 ] 5393.43 3554.01 + 369 740001 2392.11 [ 0 2 10 7 11 1 6 8 9 4 3 5 ] 4774.85 3554.01 + 370 742001 2387.33 [ 0 5 1 3 2 9 10 7 11 6 4 8 ] 5459.94 3554.01 + 371 744001 2382.57 [ 0 5 7 3 8 1 9 2 6 10 4 11 ] 5047.37 3554.01 + 372 746001 2377.81 [ 0 6 11 3 2 5 4 7 9 8 10 1 ] 5544.64 3554.01 + 373 748001 2373.07 [ 0 10 7 6 9 1 3 5 4 2 8 11 ] 5053.3 3554.01 + 374 750001 2368.33 [ 0 3 10 8 9 7 11 2 6 4 5 1 ] 5650.36 3554.01 + 375 752001 2363.6 [ 0 3 4 11 8 2 10 9 5 6 1 7 ] 5296.89 3554.01 + 376 754001 2358.88 [ 0 7 2 10 1 5 4 3 11 6 8 9 ] 5795.91 3554.01 + 377 756001 2354.18 [ 0 1 9 5 6 4 2 3 7 11 10 8 ] 4822.46 3554.01 + 378 758001 2349.48 [ 0 4 1 10 8 7 5 6 11 9 2 3 ] 5299.25 3554.01 + 379 760001 2344.79 [ 0 9 5 6 8 10 7 3 11 1 2 4 ] 5144.44 3554.01 + 380 762001 2340.11 [ 0 9 2 8 3 10 5 4 7 11 1 6 ] 5336.12 3554.01 + 381 764001 2335.44 [ 0 9 10 7 3 1 4 11 8 6 5 2 ] 5443.43 3554.01 + 382 766001 2330.78 [ 0 9 2 5 1 10 3 6 4 7 11 8 ] 5299.93 3554.01 + 383 768001 2326.12 [ 0 2 4 7 1 10 5 9 11 6 8 3 ] 4976.19 3554.01 + 384 770001 2321.48 [ 0 7 8 1 2 4 3 9 10 6 11 5 ] 5843.44 3554.01 + 385 772001 2316.85 [ 0 11 4 8 6 2 1 10 7 9 3 5 ] 4376.84 3554.01 + 386 774001 2312.22 [ 0 2 4 7 10 11 3 8 1 6 9 5 ] 5329.79 3554.01 + 387 776001 2307.61 [ 0 9 2 10 8 11 5 1 6 3 7 4 ] 5872.58 3554.01 + 388 778001 2303 [ 0 1 3 9 4 7 2 8 5 10 11 6 ] 5433.58 3554.01 + 389 780001 2298.4 [ 0 7 6 3 10 9 1 11 4 8 5 2 ] 5108.17 3554.01 + 390 782001 2293.82 [ 0 3 2 8 5 1 11 4 7 9 6 10 ] 5205.3 3554.01 + 391 784001 2289.24 [ 0 8 4 5 11 2 7 9 1 3 10 6 ] 5383.33 3554.01 + 392 786001 2284.67 [ 0 3 6 10 9 4 1 8 7 2 5 11 ] 5785.1 3554.01 + 393 788001 2280.11 [ 0 8 11 2 6 1 3 10 5 9 4 7 ] 5686.41 3554.01 + 394 790001 2275.56 [ 0 5 11 8 6 4 9 10 7 3 1 2 ] 5818.23 3554.01 + 395 792001 2271.01 [ 0 7 1 3 9 5 8 10 6 11 4 2 ] 5091.57 3554.01 + 396 794001 2266.48 [ 0 6 5 1 8 9 10 11 4 2 3 7 ] 5527.54 3554.01 + 397 796001 2261.96 [ 0 8 11 6 7 10 3 4 5 2 9 1 ] 5579.06 3554.01 + 398 798001 2257.44 [ 0 7 8 2 1 3 11 10 5 9 4 6 ] 5453.31 3554.01 + 399 800001 2252.94 [ 0 3 5 2 6 1 10 4 8 11 7 9 ] 4393.67 3554.01 + 400 802001 2248.44 [ 0 3 10 6 2 5 9 1 11 7 8 4 ] 4750.69 3554.01 + 401 804001 2243.95 [ 0 9 8 3 7 11 5 4 1 2 10 6 ] 5600.13 3554.01 + 402 806001 2239.47 [ 0 11 4 3 7 6 5 1 9 8 2 10 ] 5548.67 3554.01 + 403 808001 2235 [ 0 7 10 4 6 2 8 3 11 9 5 1 ] 5144.05 3554.01 + 404 810001 2230.54 [ 0 6 7 4 5 2 3 8 11 1 10 9 ] 5247.19 3554.01 + 405 812001 2226.09 [ 0 4 8 7 1 6 3 9 11 5 10 2 ] 5478.2 3554.01 + 406 814001 2221.65 [ 0 7 4 11 6 8 9 1 10 3 2 5 ] 5117.7 3554.01 + 407 816001 2217.21 [ 0 2 4 9 8 1 6 5 10 3 11 7 ] 5985.34 3554.01 + 408 818001 2212.79 [ 0 2 9 4 11 1 3 5 6 8 7 10 ] 4646.79 3554.01 + 409 820001 2208.37 [ 0 4 9 11 5 2 3 7 8 6 10 1 ] 5679.8 3554.01 + 410 822001 2203.96 [ 0 8 6 1 11 9 4 7 10 2 5 3 ] 4673.3 3554.01 + 411 824001 2199.56 [ 0 9 7 1 11 3 10 8 4 5 2 6 ] 5267.71 3554.01 + 412 826001 2195.17 [ 0 4 9 7 3 10 5 2 8 11 6 1 ] 6083.24 3554.01 + 413 828001 2190.79 [ 0 9 10 4 11 8 1 5 2 3 6 7 ] 5404.17 3554.01 + 414 830001 2186.42 [ 0 8 1 3 9 6 4 5 10 11 2 7 ] 5496.68 3554.01 + 415 832001 2182.05 [ 0 1 11 3 10 9 2 8 4 6 7 5 ] 5670.27 3554.01 + 416 834001 2177.7 [ 0 9 3 2 1 7 5 8 10 11 4 6 ] 4986.8 3554.01 + 417 836001 2173.35 [ 0 4 9 3 1 7 8 6 10 5 2 11 ] 5540.5 3554.01 + 418 838001 2169.01 [ 0 3 5 11 7 9 6 2 8 10 4 1 ] 4547.34 3554.01 + 419 840001 2164.68 [ 0 2 4 5 7 1 10 6 9 11 8 3 ] 5413.22 3554.01 + 420 842001 2160.36 [ 0 6 4 9 5 2 11 8 3 10 7 1 ] 5319.51 3554.01 + 421 844001 2156.05 [ 0 8 2 4 5 3 9 10 6 1 7 11 ] 4812.52 3554.01 + 422 846001 2151.75 [ 0 8 4 2 6 3 5 7 9 11 1 10 ] 4509.18 3554.01 + 423 848001 2147.45 [ 0 4 2 10 9 7 5 1 11 6 8 3 ] 5489.21 3554.01 + 424 850001 2143.17 [ 0 2 9 6 8 7 4 5 10 3 1 11 ] 5576.17 3554.01 + 425 852001 2138.89 [ 0 2 5 11 3 6 9 1 10 8 4 7 ] 5308.07 3554.01 + 426 854001 2134.62 [ 0 9 3 5 1 4 6 11 2 8 10 7 ] 4880.13 3554.01 + 427 856001 2130.36 [ 0 8 2 4 9 1 7 5 3 6 10 11 ] 4615.87 3554.01 + 428 858001 2126.11 [ 0 9 11 8 6 1 3 5 10 4 2 7 ] 4909.36 3554.01 + 429 860001 2121.86 [ 0 10 3 5 11 8 9 4 1 7 2 6 ] 5043.12 3554.01 + 430 862001 2117.63 [ 0 1 11 9 4 8 6 2 10 7 5 3 ] 4807.34 3554.01 + 431 864001 2113.4 [ 0 2 11 9 1 8 6 7 10 5 4 3 ] 5394.51 3554.01 + 432 866001 2109.18 [ 0 6 7 4 2 8 9 10 5 3 11 1 ] 5087.53 3554.01 + 433 868001 2104.97 [ 0 11 4 10 7 9 1 2 3 6 5 8 ] 4646.88 3554.01 + 434 870001 2100.77 [ 0 5 1 3 6 9 10 2 7 8 4 11 ] 5668.73 3554.01 + 435 872001 2096.58 [ 0 4 8 6 3 5 2 1 7 11 10 9 ] 4566.3 3554.01 + 436 874001 2092.39 [ 0 7 2 5 11 4 8 10 3 9 1 6 ] 5190.6 3554.01 + 437 876001 2088.22 [ 0 2 9 11 5 8 7 10 1 6 4 3 ] 5496.53 3554.01 + 438 878001 2084.05 [ 0 10 8 3 4 1 6 5 2 7 11 9 ] 5423.79 3554.01 + 439 880001 2079.89 [ 0 5 9 10 11 4 2 8 1 3 7 6 ] 5239.49 3554.01 + 440 882001 2075.74 [ 0 10 2 9 8 6 11 4 1 5 7 3 ] 5578.78 3554.01 + 441 884001 2071.59 [ 0 11 4 3 9 2 10 8 7 6 5 1 ] 5561.87 3554.01 + 442 886001 2067.46 [ 0 9 3 7 2 1 11 10 5 6 8 4 ] 5021.94 3554.01 + 443 888001 2063.33 [ 0 4 9 8 6 2 5 1 3 10 11 7 ] 5593.52 3554.01 + 444 890001 2059.21 [ 0 11 2 7 4 5 6 8 9 1 3 10 ] 5485.22 3554.01 + 445 892001 2055.1 [ 0 2 6 8 9 11 5 1 7 10 3 4 ] 5626.16 3554.01 + 446 894001 2051 [ 0 6 10 8 11 7 9 5 3 1 2 4 ] 4642.71 3554.01 + 447 896001 2046.91 [ 0 3 9 10 2 6 8 11 7 4 1 5 ] 5157.43 3554.01 + 448 898001 2042.82 [ 0 10 5 4 3 9 2 1 6 11 8 7 ] 5829.54 3554.01 + 449 900001 2038.75 [ 0 2 9 5 6 4 10 3 7 11 1 8 ] 4657.12 3554.01 + 450 902001 2034.68 [ 0 7 4 10 11 1 8 2 6 9 5 3 ] 4077.94 3554.01 + 451 904001 2030.62 [ 0 2 1 8 6 9 11 10 4 7 3 5 ] 4493.72 3554.01 + 452 906001 2026.56 [ 0 1 2 5 3 7 11 4 9 10 8 6 ] 4890.83 3554.01 + 453 908001 2022.52 [ 0 1 2 4 8 7 3 9 11 10 5 6 ] 5319.28 3554.01 + 454 910001 2018.48 [ 0 6 8 5 9 7 3 11 4 10 1 2 ] 4623.6 3554.01 + 455 912001 2014.45 [ 0 2 5 7 8 3 11 4 1 9 10 6 ] 5272.02 3554.01 + 456 914001 2010.43 [ 0 1 4 8 7 6 3 2 11 9 10 5 ] 5616.11 3554.01 + 457 916001 2006.42 [ 0 11 4 6 7 9 1 3 5 8 2 10 ] 4816.48 3554.01 + 458 918001 2002.41 [ 0 7 5 9 6 11 8 10 3 2 1 4 ] 5557.69 3554.01 + 459 920001 1998.42 [ 0 1 9 5 7 4 3 11 8 10 2 6 ] 5299.78 3554.01 + 460 922001 1994.43 [ 0 1 8 10 9 7 4 3 11 6 2 5 ] 5858.74 3554.01 + 461 924001 1990.45 [ 0 7 8 11 3 2 5 10 1 6 4 9 ] 5871.68 3554.01 + 462 926001 1986.47 [ 0 10 2 8 6 7 4 9 1 11 3 5 ] 4650.6 3554.01 + 463 928001 1982.51 [ 0 1 9 11 5 4 7 8 6 10 3 2 ] 5516.79 3554.01 + 464 930001 1978.55 [ 0 2 4 1 5 10 6 11 8 9 7 3 ] 5755.54 3554.01 + 465 932001 1974.6 [ 0 7 11 8 6 1 9 2 4 5 3 10 ] 4872.41 3554.01 + 466 934001 1970.66 [ 0 5 8 11 10 1 4 6 2 7 3 9 ] 5029.83 3554.01 + 467 936001 1966.73 [ 0 1 11 3 10 7 8 9 6 2 5 4 ] 5710.49 3554.01 + 468 938001 1962.8 [ 0 2 7 11 8 5 9 6 4 10 1 3 ] 4727.94 3554.01 + 469 940001 1958.88 [ 0 3 2 11 5 10 1 7 8 9 6 4 ] 5535.96 3554.01 + 470 942001 1954.97 [ 0 10 2 3 1 9 5 7 8 6 11 4 ] 5170.41 3554.01 + 471 944001 1951.07 [ 0 6 10 5 11 4 9 7 3 1 8 2 ] 5760.63 3554.01 + 472 946001 1947.18 [ 0 9 6 1 10 11 2 5 3 8 4 7 ] 4836.36 3554.01 + 473 948001 1943.29 [ 0 1 3 5 7 9 2 6 11 4 10 8 ] 4674.29 3554.01 + 474 950001 1939.41 [ 0 3 8 1 9 11 7 4 10 2 6 5 ] 4714.64 3554.01 + 475 952001 1935.54 [ 0 7 4 3 1 11 9 5 8 2 10 6 ] 5124.68 3554.01 + 476 954001 1931.68 [ 0 2 1 10 7 5 9 6 8 11 4 3 ] 5070.98 3554.01 + 477 956001 1927.82 [ 0 6 3 4 1 5 9 7 11 8 2 10 ] 5099.01 3554.01 + 478 958001 1923.97 [ 0 7 10 4 11 5 2 3 8 1 6 9 ] 5418.3 3554.01 + 479 960001 1920.13 [ 0 5 6 9 2 4 1 10 11 8 3 7 ] 5234.02 3554.01 + 480 962001 1916.3 [ 0 10 11 9 3 4 7 1 8 2 5 6 ] 5040.55 3554.01 + 481 964001 1912.48 [ 0 2 5 4 8 9 1 7 10 11 6 3 ] 5000.72 3554.01 + 482 966001 1908.66 [ 0 9 8 3 5 7 6 4 11 1 2 10 ] 4930.67 3554.01 + 483 968001 1904.85 [ 0 8 9 2 4 7 10 3 6 5 11 1 ] 5409.21 3554.01 + 484 970001 1901.05 [ 0 4 5 8 9 6 10 7 11 3 2 1 ] 5723.63 3554.01 + 485 972001 1897.25 [ 0 5 6 7 2 3 9 8 4 10 11 1 ] 4691.24 3554.01 + 486 974001 1893.47 [ 0 4 10 1 5 2 11 7 9 6 3 8 ] 4870.89 3554.01 + 487 976001 1889.69 [ 0 1 11 8 10 2 5 9 3 4 7 6 ] 5027.57 3554.01 + 488 978001 1885.91 [ 0 7 4 1 3 5 9 2 8 11 6 10 ] 4846.71 3554.01 + 489 980001 1882.15 [ 0 1 8 9 4 3 5 11 6 7 2 10 ] 5609.1 3554.01 + 490 982001 1878.39 [ 0 7 10 3 1 5 8 11 9 6 2 4 ] 5832.84 3554.01 + 491 984001 1874.64 [ 0 10 1 9 11 8 2 5 3 7 6 4 ] 4734.68 3554.01 + 492 986001 1870.9 [ 0 11 3 9 6 2 7 4 1 8 10 5 ] 5518.93 3554.01 + 493 988001 1867.17 [ 0 7 9 1 4 6 8 2 5 11 3 10 ] 5448.42 3554.01 + 494 990001 1863.44 [ 0 5 4 7 10 1 11 3 6 2 9 8 ] 5078.67 3554.01 + 495 992001 1859.72 [ 0 5 7 8 9 2 11 1 4 10 6 3 ] 4903.05 3554.01 + 496 994001 1856.01 [ 0 6 4 3 2 9 8 10 7 5 1 11 ] 5436.93 3554.01 + 497 996001 1852.3 [ 0 8 10 5 6 9 1 11 2 4 7 3 ] 5092.03 3554.01 + 498 998001 1848.61 [ 0 9 4 8 6 7 1 3 5 10 2 11 ] 5188.92 3554.01 + 499 1000001 1844.92 [ 0 10 6 8 5 2 4 9 1 11 7 3 ] 5041.14 3554.01 + 500 1002001 1841.24 [ 0 7 4 9 6 2 5 3 10 11 8 1 ] 5246.46 3554.01 + 501 1004001 1837.56 [ 0 3 11 1 10 9 4 5 6 8 2 7 ] 5303.93 3554.01 + 502 1006001 1833.89 [ 0 2 3 5 4 6 1 11 9 10 7 8 ] 4828.31 3554.01 + 503 1008001 1830.23 [ 0 3 1 2 10 5 4 8 6 11 9 7 ] 5671.56 3554.01 + 504 1010001 1826.58 [ 0 9 4 10 8 11 6 1 2 3 5 7 ] 5072.35 3554.01 + 505 1012001 1822.93 [ 0 4 9 8 2 7 1 5 6 10 11 3 ] 5472.79 3554.01 + 506 1014001 1819.29 [ 0 2 8 7 9 11 6 10 4 1 3 5 ] 4597.54 3554.01 + 507 1016001 1815.66 [ 0 10 3 4 9 6 2 8 7 1 5 11 ] 5963.25 3554.01 + 508 1018001 1812.04 [ 0 6 4 10 3 1 9 7 8 11 2 5 ] 5001.85 3554.01 + 509 1020001 1808.42 [ 0 2 7 6 11 1 9 4 5 8 10 3 ] 5291.98 3554.01 + 510 1022001 1804.81 [ 0 6 8 10 3 9 5 2 7 11 1 4 ] 4569.7 3554.01 + 511 1024001 1801.21 [ 0 4 7 3 9 6 1 10 8 2 5 11 ] 5547.58 3554.01 + 512 1026001 1797.61 [ 0 9 11 1 6 7 5 3 10 2 8 4 ] 5071.3 3554.01 + 513 1028001 1794.03 [ 0 9 1 5 6 7 2 3 11 8 10 4 ] 5162.22 3554.01 + 514 1030001 1790.45 [ 0 3 8 10 5 9 7 1 11 4 6 2 ] 4770.51 3554.01 + 515 1032001 1786.87 [ 0 10 2 3 4 5 1 11 8 6 7 9 ] 5540.83 3554.01 + 516 1034001 1783.31 [ 0 7 1 9 5 11 6 10 8 3 4 2 ] 5223.98 3554.01 + 517 1036001 1779.75 [ 0 9 3 6 1 2 5 8 11 4 10 7 ] 5037.36 3554.01 + 518 1038001 1776.19 [ 0 6 11 10 8 9 1 5 3 4 7 2 ] 4657.63 3554.01 + 519 1040001 1772.65 [ 0 5 11 8 1 6 3 7 9 10 4 2 ] 5525.37 3554.01 + 520 1042001 1769.11 [ 0 1 11 10 3 7 8 4 5 6 9 2 ] 5397.45 3554.01 + 521 1044001 1765.58 [ 0 4 1 6 3 7 5 10 2 9 8 11 ] 5882.26 3554.01 + 522 1046001 1762.05 [ 0 4 7 3 5 9 6 11 8 1 2 10 ] 5075.22 3554.01 + 523 1048001 1758.54 [ 0 9 10 3 4 7 1 11 8 6 2 5 ] 5322.32 3554.01 + 524 1050001 1755.03 [ 0 9 5 3 4 8 2 6 1 10 11 7 ] 4487.06 3554.01 + 525 1052001 1751.52 [ 0 8 5 6 3 10 7 4 2 11 1 9 ] 4979.83 3554.01 + 526 1054001 1748.03 [ 0 6 9 4 3 8 2 5 10 1 7 11 ] 5338.87 3554.01 + 527 1056001 1744.54 [ 0 7 8 5 9 6 3 4 1 11 10 2 ] 4966.46 3535.92 + 528 1058001 1741.06 [ 0 2 5 11 4 1 7 10 6 9 3 8 ] 5083.19 3535.92 + 529 1060001 1737.58 [ 0 4 3 9 8 6 11 2 7 1 5 10 ] 5519.59 3535.92 + 530 1062001 1734.11 [ 0 5 11 7 10 2 3 6 9 4 1 8 ] 5449.81 3535.92 + 531 1064001 1730.65 [ 0 11 1 6 3 4 8 2 5 7 9 10 ] 5573.99 3535.92 + 532 1066001 1727.2 [ 0 8 5 4 10 6 2 3 9 7 1 11 ] 4669.91 3535.92 + 533 1068001 1723.75 [ 0 4 7 11 10 8 1 6 2 9 5 3 ] 4502.74 3535.92 + 534 1070001 1720.31 [ 0 6 9 2 11 1 4 5 3 7 10 8 ] 4583.08 3535.92 + 535 1072001 1716.88 [ 0 10 9 7 5 3 8 4 2 6 1 11 ] 5028.7 3535.92 + 536 1074001 1713.45 [ 0 1 3 5 8 2 9 11 4 6 10 7 ] 4977.88 3535.92 + 537 1076001 1710.03 [ 0 1 8 5 11 2 3 9 6 7 10 4 ] 5344.88 3535.92 + 538 1078001 1706.62 [ 0 2 4 7 8 11 3 5 1 6 9 10 ] 5435.24 3535.92 + 539 1080001 1703.21 [ 0 5 11 10 4 3 9 6 1 2 7 8 ] 5092.34 3535.92 + 540 1082001 1699.81 [ 0 9 11 2 6 5 7 10 4 1 3 8 ] 5097.11 3535.92 + 541 1084001 1696.42 [ 0 7 9 11 1 4 5 3 6 10 8 2 ] 4624.38 3535.92 + 542 1086001 1693.03 [ 0 6 5 10 2 4 3 8 7 11 9 1 ] 5301.91 3535.92 + 543 1088001 1689.65 [ 0 10 4 2 5 3 7 8 9 1 11 6 ] 4345.95 3535.92 + 544 1090001 1686.28 [ 0 8 1 4 2 3 6 10 7 9 11 5 ] 5393.13 3535.92 + 545 1092001 1682.91 [ 0 10 8 3 11 1 7 5 6 9 4 2 ] 5471.2 3535.92 + 546 1094001 1679.55 [ 0 8 7 3 2 11 9 5 6 1 4 10 ] 4935.61 3535.92 + 547 1096001 1676.2 [ 0 1 4 10 9 7 11 3 6 8 2 5 ] 5022.33 3535.92 + 548 1098001 1672.86 [ 0 5 3 9 6 8 11 7 2 1 10 4 ] 4152.48 3535.92 + 549 1100001 1669.52 [ 0 4 8 6 7 3 2 9 5 1 10 11 ] 5095.11 3535.92 + 550 1102001 1666.18 [ 0 11 10 5 9 8 3 2 4 7 6 1 ] 5542.99 3535.92 + 551 1104001 1662.86 [ 0 8 2 3 7 6 4 9 5 1 11 10 ] 5117.45 3535.92 + 552 1106001 1659.54 [ 0 6 4 2 11 10 3 7 9 8 5 1 ] 5637.34 3535.92 + 553 1108001 1656.23 [ 0 7 3 5 6 4 11 10 8 1 9 2 ] 4560.44 3535.92 + 554 1110001 1652.92 [ 0 5 11 8 9 1 10 6 2 3 4 7 ] 5373.97 3535.92 + 555 1112001 1649.62 [ 0 8 2 9 6 5 3 10 11 4 7 1 ] 4629.55 3535.92 + 556 1114001 1646.33 [ 0 8 3 5 11 7 6 4 10 9 1 2 ] 4425.08 3535.92 + 557 1116001 1643.04 [ 0 1 9 11 6 3 8 10 4 5 7 2 ] 5096.57 3535.92 + 558 1118001 1639.76 [ 0 8 1 7 2 10 3 6 4 9 5 11 ] 5482.42 3535.92 + 559 1120001 1636.49 [ 0 2 6 4 7 10 3 1 5 9 11 8 ] 5352.66 3525.97 + 560 1122001 1633.22 [ 0 1 7 10 3 6 4 5 8 2 9 11 ] 5526.14 3525.97 + 561 1124001 1629.96 [ 0 8 1 7 3 5 10 9 2 11 4 6 ] 4852.23 3525.97 + 562 1126001 1626.71 [ 0 2 4 8 3 9 1 5 11 10 6 7 ] 5242.24 3525.97 + 563 1128001 1623.46 [ 0 4 3 2 9 7 1 8 10 11 5 6 ] 5278.21 3525.97 + 564 1130001 1620.22 [ 0 6 5 11 2 9 7 1 10 4 8 3 ] 4735.08 3525.97 + 565 1132001 1616.99 [ 0 10 6 2 7 4 3 8 9 5 11 1 ] 5357.57 3525.97 + 566 1134001 1613.76 [ 0 5 8 2 11 9 6 10 1 3 4 7 ] 5514.93 3525.97 + 567 1136001 1610.54 [ 0 10 4 1 3 11 2 7 5 9 6 8 ] 5034.28 3525.97 + 568 1138001 1607.33 [ 0 8 6 11 7 10 1 4 2 5 3 9 ] 4383.77 3525.97 + 569 1140001 1604.12 [ 0 2 9 7 10 6 1 8 3 4 5 11 ] 5856.32 3525.97 + 570 1142001 1600.92 [ 0 11 4 10 3 5 9 8 2 1 7 6 ] 4317.56 3525.97 + 571 1144001 1597.72 [ 0 2 9 1 7 5 3 6 11 10 4 8 ] 4077 3525.97 + 572 1146001 1594.53 [ 0 3 1 11 5 6 8 7 2 9 4 10 ] 5076.12 3525.97 + 573 1148001 1591.35 [ 0 9 2 1 10 7 4 5 8 3 6 11 ] 5430.65 3525.97 + 574 1150001 1588.17 [ 0 11 6 5 3 9 7 8 2 4 1 10 ] 4681.06 3525.97 + 575 1152001 1585 [ 0 3 10 4 7 2 6 8 9 1 5 11 ] 5148.59 3525.97 + 576 1154001 1581.84 [ 0 7 9 3 2 4 11 6 1 8 5 10 ] 5601.25 3525.97 + 577 1156001 1578.68 [ 0 10 7 2 4 5 1 6 9 11 3 8 ] 5769.53 3525.97 + 578 1158001 1575.53 [ 0 10 7 6 4 5 8 9 11 1 2 3 ] 5362.19 3525.97 + 579 1160001 1572.39 [ 0 5 1 10 6 8 4 3 9 2 11 7 ] 5111.67 3525.97 + 580 1162001 1569.25 [ 0 7 3 5 10 8 1 11 6 4 2 9 ] 5106.45 3525.97 + 581 1164001 1566.12 [ 0 6 2 3 9 8 1 4 11 7 5 10 ] 5229.65 3525.97 + 582 1166001 1562.99 [ 0 9 7 2 3 4 6 10 8 11 5 1 ] 5873.58 3525.97 + 583 1168001 1559.87 [ 0 9 7 4 10 8 2 6 5 1 11 3 ] 4971.54 3525.97 + 584 1170001 1556.76 [ 0 5 11 8 3 9 7 4 1 10 2 6 ] 5070.22 3525.97 + 585 1172001 1553.65 [ 0 4 5 2 3 10 9 6 1 8 7 11 ] 5912.07 3525.97 + 586 1174001 1550.55 [ 0 3 2 10 1 7 9 5 4 6 8 11 ] 5021.19 3525.97 + 587 1176001 1547.45 [ 0 5 6 9 7 11 3 4 10 2 8 1 ] 5322.56 3525.97 + 588 1178001 1544.36 [ 0 5 8 4 3 11 10 9 2 6 7 1 ] 5517.09 3525.97 + 589 1180001 1541.28 [ 0 4 1 6 7 9 3 10 2 8 5 11 ] 5660.56 3525.97 + 590 1182001 1538.21 [ 0 5 4 3 2 6 9 7 1 11 10 8 ] 5003.85 3525.97 + 591 1184001 1535.14 [ 0 4 2 5 11 3 9 8 7 6 1 10 ] 5716.25 3525.97 + 592 1186001 1532.07 [ 0 2 6 4 8 3 9 7 10 11 1 5 ] 4856.6 3525.97 + 593 1188001 1529.01 [ 0 8 10 11 1 5 2 7 4 3 9 6 ] 4932.32 3525.97 + 594 1190001 1525.96 [ 0 3 9 6 11 5 1 2 7 4 8 10 ] 5557.23 3525.97 + 595 1192001 1522.92 [ 0 10 5 8 9 4 1 3 2 7 6 11 ] 5902.7 3525.97 + 596 1194001 1519.88 [ 0 9 3 5 1 8 4 6 2 7 11 10 ] 4677.38 3525.97 + 597 1196001 1516.84 [ 0 3 11 2 10 8 7 4 9 5 1 6 ] 5522 3525.97 + 598 1198001 1513.81 [ 0 7 10 9 11 2 4 6 8 5 3 1 ] 5150.36 3525.97 + 599 1200001 1510.79 [ 0 11 5 2 6 8 3 4 9 10 1 7 ] 5605.21 3525.97 + 600 1202001 1507.78 [ 0 5 7 11 8 2 1 3 6 9 4 10 ] 5322.71 3525.97 + 601 1204001 1504.77 [ 0 3 5 7 4 6 9 1 8 2 10 11 ] 4790.66 3525.97 + 602 1206001 1501.76 [ 0 7 1 11 4 10 9 8 6 5 3 2 ] 4210.26 3525.97 + 603 1208001 1498.77 [ 0 3 11 6 1 2 5 4 10 7 8 9 ] 5538.61 3525.97 + 604 1210001 1495.77 [ 0 6 1 11 3 8 7 10 4 9 5 2 ] 4856.63 3525.97 + 605 1212001 1492.79 [ 0 3 1 7 10 6 11 9 2 5 8 4 ] 5395.46 3525.97 + 606 1214001 1489.81 [ 0 11 4 10 9 7 5 8 2 1 6 3 ] 5245.13 3525.97 + 607 1216001 1486.84 [ 0 2 7 11 10 4 5 8 6 1 9 3 ] 4477.1 3525.97 + 608 1218001 1483.87 [ 0 9 4 6 2 7 10 1 5 8 11 3 ] 5570.22 3525.97 + 609 1220001 1480.91 [ 0 4 2 10 1 7 11 8 9 3 6 5 ] 4990.26 3525.97 + 610 1222001 1477.95 [ 0 10 9 8 2 3 6 5 4 11 7 1 ] 5353.38 3525.97 + 611 1224001 1475 [ 0 4 10 11 3 5 1 2 7 9 6 8 ] 4516.31 3525.97 + 612 1226001 1472.06 [ 0 1 6 4 11 5 9 8 10 7 2 3 ] 5392.55 3525.97 + 613 1228001 1469.12 [ 0 6 8 1 4 11 3 7 2 9 5 10 ] 5210.41 3525.97 + 614 1230001 1466.19 [ 0 8 11 5 6 3 1 7 2 9 10 4 ] 5165.53 3525.97 + 615 1232001 1463.26 [ 0 8 6 1 2 10 3 11 7 9 5 4 ] 5360.46 3525.97 + 616 1234001 1460.34 [ 0 1 2 11 7 3 6 4 8 9 5 10 ] 5427.07 3525.97 + 617 1236001 1457.42 [ 0 10 3 2 4 9 6 5 11 8 1 7 ] 5894.29 3525.97 + 618 1238001 1454.51 [ 0 5 1 7 11 6 9 8 3 10 2 4 ] 5620.35 3525.97 + 619 1240001 1451.61 [ 0 11 7 8 10 6 4 1 9 2 3 5 ] 4544.16 3525.97 + 620 1242001 1448.71 [ 0 5 3 8 1 2 10 9 11 7 4 6 ] 4838.45 3525.97 + 621 1244001 1445.82 [ 0 9 5 4 6 2 8 1 11 3 10 7 ] 5380.77 3525.97 + 622 1246001 1442.94 [ 0 4 7 5 2 11 6 1 3 9 8 10 ] 5740.08 3525.97 + 623 1248001 1440.06 [ 0 5 8 2 1 9 3 6 7 11 4 10 ] 4523.54 3525.97 + 624 1250001 1437.18 [ 0 9 6 1 5 3 2 8 11 7 4 10 ] 4764.02 3525.97 + 625 1252001 1434.31 [ 0 5 1 3 11 4 9 6 2 8 10 7 ] 5718.28 3525.97 + 626 1254001 1431.45 [ 0 4 10 8 1 5 11 6 9 3 7 2 ] 5411.1 3525.97 + 627 1256001 1428.59 [ 0 2 9 5 10 7 6 11 1 4 8 3 ] 4984.17 3525.97 + 628 1258001 1425.74 [ 0 10 7 2 3 5 1 8 9 6 11 4 ] 5129.14 3525.97 + 629 1260001 1422.9 [ 0 7 2 9 8 5 10 4 6 11 1 3 ] 5176.46 3525.97 + 630 1262001 1420.06 [ 0 5 6 2 7 10 3 11 8 4 1 9 ] 5266.66 3525.97 + 631 1264001 1417.22 [ 0 9 4 2 7 10 5 8 6 11 3 1 ] 5940.89 3525.97 + 632 1266001 1414.39 [ 0 7 5 3 10 8 1 9 4 11 2 6 ] 4884.2 3525.97 + 633 1268001 1411.57 [ 0 10 4 11 1 2 5 9 6 8 3 7 ] 4726.96 3525.97 + 634 1270001 1408.75 [ 0 9 4 7 3 8 10 1 6 5 2 11 ] 5638.9 3525.97 + 635 1272001 1405.94 [ 0 10 7 4 2 5 11 6 3 8 1 9 ] 5499.48 3525.97 + 636 1274001 1403.13 [ 0 11 5 7 8 6 1 10 3 4 2 9 ] 5860.73 3525.97 + 637 1276001 1400.33 [ 0 4 10 8 1 5 9 11 2 7 3 6 ] 4966.88 3525.97 + 638 1278001 1397.54 [ 0 4 3 1 8 9 7 11 6 2 10 5 ] 5756.6 3525.97 + 639 1280001 1394.75 [ 0 3 10 9 7 4 6 8 5 2 11 1 ] 5364.76 3525.97 + 640 1282001 1391.96 [ 0 4 11 10 3 2 5 6 8 1 7 9 ] 5180.58 3525.97 + 641 1284001 1389.19 [ 0 9 7 6 5 1 4 11 3 10 8 2 ] 5545.68 3525.97 + 642 1286001 1386.41 [ 0 8 4 7 2 3 10 11 9 5 6 1 ] 5172.71 3525.97 + 643 1288001 1383.65 [ 0 2 1 7 8 9 6 3 10 11 4 5 ] 5317.27 3525.97 + 644 1290001 1380.88 [ 0 3 2 7 9 11 6 8 10 1 5 4 ] 5331.47 3525.97 + 645 1292001 1378.13 [ 0 4 5 7 3 1 11 10 2 6 9 8 ] 5490.88 3525.97 + 646 1294001 1375.38 [ 0 1 3 5 11 6 7 8 2 10 4 9 ] 5202.01 3525.97 + 647 1296001 1372.63 [ 0 11 10 9 2 1 8 4 5 3 6 7 ] 5088.6 3525.97 + 648 1298001 1369.89 [ 0 8 7 11 5 10 2 3 9 1 4 6 ] 4984.18 3525.97 + 649 1300001 1367.16 [ 0 9 3 2 5 7 6 8 4 11 10 1 ] 5089.98 3525.97 + 650 1302001 1364.43 [ 0 6 1 11 4 5 2 8 3 10 7 9 ] 5247.47 3525.97 + 651 1304001 1361.71 [ 0 4 11 2 3 9 10 1 8 7 6 5 ] 5241.39 3525.97 + 652 1306001 1358.99 [ 0 11 3 9 5 7 4 10 1 2 6 8 ] 4697.77 3525.97 + 653 1308001 1356.28 [ 0 6 2 8 3 9 7 10 4 1 11 5 ] 4557.33 3525.97 + 654 1310001 1353.57 [ 0 8 4 7 9 1 2 3 10 11 5 6 ] 5026.93 3525.97 + 655 1312001 1350.87 [ 0 1 7 3 11 4 6 5 10 2 8 9 ] 5706.49 3525.97 + 656 1314001 1348.17 [ 0 3 8 5 1 2 10 6 7 4 11 9 ] 5522.31 3525.97 + 657 1316001 1345.48 [ 0 4 10 9 2 1 11 6 7 3 8 5 ] 5152.06 3525.97 + 658 1318001 1342.79 [ 0 2 3 5 9 1 7 8 4 6 10 11 ] 4280.9 3525.97 + 659 1320001 1340.11 [ 0 10 3 5 8 2 11 9 4 7 1 6 ] 4983.9 3525.97 + 660 1322001 1337.44 [ 0 7 8 3 1 6 10 4 2 5 9 11 ] 5267.5 3525.97 + 661 1324001 1334.77 [ 0 2 3 5 4 8 7 6 9 1 10 11 ] 4609.51 3525.97 + 662 1326001 1332.1 [ 0 1 6 11 7 4 10 2 8 5 3 9 ] 4611.47 3525.97 + 663 1328001 1329.45 [ 0 1 9 11 6 8 10 4 5 3 2 7 ] 4501.5 3525.97 + 664 1330001 1326.79 [ 0 5 2 6 1 9 3 11 8 4 10 7 ] 4930.42 3525.97 + 665 1332001 1324.14 [ 0 8 1 3 6 9 11 10 5 7 4 2 ] 5567.48 3525.97 + 666 1334001 1321.5 [ 0 5 4 8 6 7 3 9 2 11 1 10 ] 5010.53 3525.97 + 667 1336001 1318.86 [ 0 6 8 5 10 11 1 2 4 7 3 9 ] 5001.7 3525.97 + 668 1338001 1316.23 [ 0 7 6 9 8 10 2 3 4 5 11 1 ] 5827.61 3525.97 + 669 1340001 1313.6 [ 0 8 11 1 3 5 6 9 10 7 4 2 ] 4806.4 3525.97 + 670 1342001 1310.98 [ 0 10 6 2 3 9 5 4 8 11 1 7 ] 4904.39 3525.97 + 671 1344001 1308.36 [ 0 2 8 10 1 5 6 9 4 7 11 3 ] 5385.24 3525.97 + 672 1346001 1305.75 [ 0 1 7 3 2 4 5 9 11 8 10 6 ] 5314.4 3525.97 + 673 1348001 1303.15 [ 0 6 4 8 7 9 1 3 2 10 5 11 ] 5502.96 3525.97 + 674 1350001 1300.55 [ 0 8 4 2 10 1 9 11 7 6 5 3 ] 4351.94 3525.97 + 675 1352001 1297.95 [ 0 11 1 5 10 3 6 4 9 8 2 7 ] 5702.27 3525.97 + 676 1354001 1295.36 [ 0 9 2 6 11 1 10 8 3 5 7 4 ] 4696.18 3525.97 + 677 1356001 1292.77 [ 0 4 5 2 11 3 8 6 7 10 1 9 ] 5260.02 3525.97 + 678 1358001 1290.19 [ 0 9 11 8 4 6 1 10 3 5 7 2 ] 5060.25 3525.97 + 679 1360001 1287.62 [ 0 4 6 7 2 3 8 11 5 9 10 1 ] 5462.11 3525.97 + 680 1362001 1285.05 [ 0 1 11 4 3 8 5 7 9 2 6 10 ] 5373.24 3525.97 + 681 1364001 1282.48 [ 0 2 10 11 9 6 7 5 3 8 4 1 ] 4955.91 3525.97 + 682 1366001 1279.92 [ 0 10 2 4 7 1 8 9 11 6 5 3 ] 4992.4 3525.97 + 683 1368001 1277.37 [ 0 3 6 2 11 5 9 10 8 4 7 1 ] 5280.71 3525.97 + 684 1370001 1274.82 [ 0 8 10 4 1 9 2 11 7 5 3 6 ] 4016.75 3525.97 + 685 1372001 1272.27 [ 0 5 10 8 4 11 3 6 1 2 9 7 ] 5550.3 3525.97 + 686 1374001 1269.73 [ 0 4 10 11 7 9 2 5 6 3 8 1 ] 4907.7 3523.27 + 687 1376001 1267.2 [ 0 10 4 11 2 7 9 3 5 1 8 6 ] 4299.04 3523.27 + 688 1378001 1264.67 [ 0 8 4 6 2 11 5 7 3 10 1 9 ] 5419.81 3523.27 + 689 1380001 1262.15 [ 0 11 8 7 6 10 4 1 3 9 5 2 ] 4949.88 3523.27 + 690 1382001 1259.63 [ 0 11 9 1 10 2 8 3 4 6 5 7 ] 5324.68 3523.27 + 691 1384001 1257.11 [ 0 9 5 10 8 11 1 6 2 4 3 7 ] 5488.72 3523.27 + 692 1386001 1254.6 [ 0 7 2 9 5 8 1 4 6 10 3 11 ] 5530.02 3523.27 + 693 1388001 1252.1 [ 0 5 9 10 6 8 7 2 1 4 11 3 ] 5142.61 3523.27 + 694 1390001 1249.6 [ 0 9 11 1 2 8 6 10 4 7 3 5 ] 4364.86 3523.27 + 695 1392001 1247.11 [ 0 11 1 5 7 10 9 2 8 6 3 4 ] 5448.11 3523.27 + 696 1394001 1244.62 [ 0 8 4 7 3 5 2 6 11 10 9 1 ] 4746.61 3523.27 + 697 1396001 1242.13 [ 0 8 7 11 10 6 4 9 5 3 1 2 ] 4597.22 3523.27 + 698 1398001 1239.65 [ 0 7 3 5 9 6 2 8 4 11 1 10 ] 4377.55 3523.27 + 699 1400001 1237.18 [ 0 2 3 9 1 11 10 5 8 7 4 6 ] 4688.01 3523.27 + 700 1402001 1234.71 [ 0 6 11 2 7 3 1 10 5 4 8 9 ] 5662.65 3523.27 + 701 1404001 1232.25 [ 0 11 7 4 3 1 10 8 9 5 6 2 ] 5148.49 3523.27 + 702 1406001 1229.79 [ 0 11 1 9 3 8 2 7 4 10 5 6 ] 4476.3 3523.27 + 703 1408001 1227.33 [ 0 7 11 9 1 4 10 3 8 2 6 5 ] 4716.28 3523.27 + 704 1410001 1224.88 [ 0 5 11 10 4 6 1 9 7 3 2 8 ] 4895.52 3523.27 + 705 1412001 1222.44 [ 0 10 6 4 3 9 2 1 7 11 5 8 ] 5248.89 3523.27 + 706 1414001 1220 [ 0 3 1 2 8 11 7 4 10 9 6 5 ] 5129.86 3523.27 + 707 1416001 1217.56 [ 0 7 10 9 3 2 5 1 8 6 4 11 ] 5446.2 3523.27 + 708 1418001 1215.13 [ 0 5 2 6 7 8 4 11 1 10 9 3 ] 4894.95 3523.27 + 709 1420001 1212.71 [ 0 2 5 6 8 3 11 7 9 1 10 4 ] 4588.97 3523.27 + 710 1422001 1210.29 [ 0 8 10 7 6 3 2 9 5 1 11 4 ] 4862.99 3523.27 + 711 1424001 1207.87 [ 0 5 9 8 11 2 4 1 7 10 3 6 ] 5059.84 3523.27 + 712 1426001 1205.46 [ 0 1 4 9 5 3 10 2 8 6 11 7 ] 4838.09 3523.27 + 713 1428001 1203.05 [ 0 8 10 11 5 4 3 7 9 6 1 2 ] 5684.79 3523.27 + 714 1430001 1200.65 [ 0 3 6 5 10 11 1 2 7 8 4 9 ] 5205.03 3523.27 + 715 1432001 1198.25 [ 0 1 6 2 7 5 9 11 8 4 3 10 ] 5671.56 3523.27 + 716 1434001 1195.86 [ 0 1 6 9 8 2 10 11 4 3 5 7 ] 5208.5 3523.27 + 717 1436001 1193.48 [ 0 11 2 8 5 10 6 9 3 4 1 7 ] 5459.36 3523.27 + 718 1438001 1191.09 [ 0 11 5 6 10 1 2 3 7 8 4 9 ] 5721.95 3523.27 + 719 1440001 1188.72 [ 0 3 9 2 5 7 8 10 6 1 4 11 ] 5364.68 3523.27 + 720 1442001 1186.34 [ 0 3 10 4 7 8 9 6 1 2 11 5 ] 5512.76 3523.27 + 721 1444001 1183.98 [ 0 2 11 10 4 5 7 3 9 8 1 6 ] 5181.41 3523.27 + 722 1446001 1181.61 [ 0 11 5 10 2 4 6 3 8 7 9 1 ] 5625.7 3523.27 + 723 1448001 1179.25 [ 0 10 4 3 8 7 9 2 11 6 5 1 ] 5411 3523.27 + 724 1450001 1176.9 [ 0 10 7 9 8 1 5 2 3 4 11 6 ] 5570.61 3523.27 + 725 1452001 1174.55 [ 0 6 1 7 4 2 10 11 5 3 9 8 ] 4668.94 3523.27 + 726 1454001 1172.21 [ 0 6 2 9 3 11 7 10 5 4 1 8 ] 5192.57 3523.27 + 727 1456001 1169.87 [ 0 4 10 11 2 7 1 3 9 5 8 6 ] 4400.82 3523.27 + 728 1458001 1167.53 [ 0 1 6 9 10 4 7 8 3 5 2 11 ] 5002.43 3523.27 + 729 1460001 1165.2 [ 0 8 7 4 3 10 6 2 9 11 1 5 ] 5358.8 3523.27 + 730 1462001 1162.88 [ 0 11 2 10 3 8 4 6 5 7 1 9 ] 5396.33 3523.27 + 731 1464001 1160.55 [ 0 6 2 3 1 9 5 7 11 10 8 4 ] 4774.52 3523.27 + 732 1466001 1158.24 [ 0 7 3 1 9 5 11 6 10 2 4 8 ] 5401.74 3523.27 + 733 1468001 1155.93 [ 0 5 6 2 9 4 7 1 8 11 10 3 ] 5331.66 3523.27 + 734 1470001 1153.62 [ 0 1 7 3 2 9 5 11 10 6 4 8 ] 5171.96 3523.27 + 735 1472001 1151.32 [ 0 1 6 7 11 2 4 9 3 10 5 8 ] 5678.64 3523.27 + 736 1474001 1149.02 [ 0 9 6 7 2 11 8 5 3 1 10 4 ] 4715.54 3523.27 + 737 1476001 1146.72 [ 0 11 1 6 10 4 8 2 9 5 7 3 ] 4925.98 3523.27 + 738 1478001 1144.44 [ 0 3 7 1 9 10 5 4 8 11 2 6 ] 5298.64 3523.27 + 739 1480001 1142.15 [ 0 6 9 3 11 5 8 4 1 2 10 7 ] 5449.11 3523.27 + 740 1482001 1139.87 [ 0 11 1 5 10 8 4 2 6 7 3 9 ] 5479.82 3523.27 + 741 1484001 1137.6 [ 0 6 8 5 4 10 3 1 11 7 2 9 ] 4851.06 3523.27 + 742 1486001 1135.33 [ 0 2 4 10 1 6 8 11 3 5 7 9 ] 4725.13 3523.27 + 743 1488001 1133.06 [ 0 3 1 6 11 4 8 10 2 5 7 9 ] 5677.66 3523.27 + 744 1490001 1130.8 [ 0 3 5 8 2 1 9 10 11 7 6 4 ] 4539.37 3523.27 + 745 1492001 1128.54 [ 0 2 9 11 7 3 6 1 8 10 4 5 ] 5169.31 3523.27 + 746 1494001 1126.29 [ 0 4 2 5 9 6 3 10 1 7 8 11 ] 5260.73 3523.27 + 747 1496001 1124.04 [ 0 5 11 7 1 2 6 3 9 10 4 8 ] 4778.34 3523.27 + 748 1498001 1121.8 [ 0 6 3 11 10 9 8 2 4 5 1 7 ] 5523.59 3523.27 + 749 1500001 1119.56 [ 0 8 9 4 10 1 3 7 11 5 6 2 ] 5163.94 3523.27 + 750 1502001 1117.32 [ 0 9 6 5 11 7 3 4 1 8 2 10 ] 5717.15 3523.27 + 751 1504001 1115.09 [ 0 8 6 4 5 2 11 1 3 7 9 10 ] 5427.29 3523.27 + 752 1506001 1112.87 [ 0 2 6 11 7 5 8 4 3 9 1 10 ] 5008.94 3523.27 + 753 1508001 1110.65 [ 0 3 5 1 11 9 7 8 4 6 10 2 ] 4743.05 3523.27 + 754 1510001 1108.43 [ 0 3 6 1 2 10 7 9 5 4 8 11 ] 5364.33 3523.27 + 755 1512001 1106.22 [ 0 9 8 3 1 10 5 2 4 11 7 6 ] 5354.04 3523.27 + 756 1514001 1104.01 [ 0 8 9 3 11 6 5 1 10 4 7 2 ] 4972.92 3523.27 + 757 1516001 1101.81 [ 0 6 5 7 4 11 10 1 3 2 8 9 ] 5164.86 3523.27 + 758 1518001 1099.61 [ 0 4 2 11 1 7 3 9 6 5 10 8 ] 5131.91 3523.27 + 759 1520001 1097.41 [ 0 1 8 6 2 10 4 9 3 5 7 11 ] 4681.84 3523.27 + 760 1522001 1095.22 [ 0 10 5 3 1 6 11 9 8 2 4 7 ] 5377.73 3523.27 + 761 1524001 1093.03 [ 0 8 4 6 7 10 1 9 11 2 3 5 ] 4418.34 3523.27 + 762 1526001 1090.85 [ 0 6 5 1 2 9 7 11 8 3 4 10 ] 5043.21 3523.27 + 763 1528001 1088.68 [ 0 5 9 3 4 1 10 8 6 2 11 7 ] 4730.07 3523.27 + 764 1530001 1086.5 [ 0 2 10 8 5 7 3 6 1 11 4 9 ] 5510.17 3523.27 + 765 1532001 1084.33 [ 0 6 10 8 2 11 9 1 5 4 7 3 ] 5279.23 3523.27 + 766 1534001 1082.17 [ 0 9 6 2 1 11 8 3 5 4 10 7 ] 4570.5 3523.27 + 767 1536001 1080.01 [ 0 8 6 5 2 9 10 11 1 3 4 7 ] 5165.61 3523.27 + 768 1538001 1077.85 [ 0 5 9 3 7 11 1 6 2 10 4 8 ] 4470.85 3523.27 + 769 1540001 1075.7 [ 0 5 10 4 7 2 11 1 3 9 6 8 ] 4766.61 3523.27 + 770 1542001 1073.56 [ 0 5 11 6 8 1 9 4 3 2 7 10 ] 5516.84 3523.27 + 771 1544001 1071.41 [ 0 11 4 10 3 8 7 2 1 9 5 6 ] 4608.34 3523.27 + 772 1546001 1069.27 [ 0 9 6 10 8 1 2 5 11 3 7 4 ] 5972.37 3523.27 + 773 1548001 1067.14 [ 0 6 1 9 11 2 7 8 4 3 5 10 ] 4859.08 3523.27 + 774 1550001 1065.01 [ 0 7 6 8 10 11 2 1 3 5 9 4 ] 4789.9 3523.27 + 775 1552001 1062.88 [ 0 1 3 5 11 2 7 10 4 6 8 9 ] 4877.34 3523.27 + 776 1554001 1060.76 [ 0 2 3 7 8 10 5 11 6 1 9 4 ] 5790.09 3523.27 + 777 1556001 1058.65 [ 0 9 4 8 5 2 7 1 10 3 11 6 ] 5472.89 3523.27 + 778 1558001 1056.53 [ 0 8 5 2 1 11 4 6 9 10 7 3 ] 5227.36 3523.27 + 779 1560001 1054.42 [ 0 5 9 8 6 11 10 3 2 4 1 7 ] 5081.44 3523.27 + 780 1562001 1052.32 [ 0 4 3 5 1 10 9 8 7 11 6 2 ] 5028.53 3523.27 + 781 1564001 1050.22 [ 0 8 9 6 1 3 5 11 4 7 10 2 ] 5123.06 3523.27 + 782 1566001 1048.12 [ 0 2 8 9 7 11 6 3 5 1 4 10 ] 4518.19 3523.27 + 783 1568001 1046.03 [ 0 3 2 11 9 1 8 4 5 10 6 7 ] 5499.74 3523.27 + 784 1570001 1043.94 [ 0 5 1 10 2 9 6 3 8 7 4 11 ] 5342.9 3523.27 + 785 1572001 1041.86 [ 0 4 11 6 5 1 7 3 2 10 8 9 ] 5571.01 3523.27 + 786 1574001 1039.78 [ 0 2 4 6 5 9 3 10 11 7 8 1 ] 5083.85 3523.27 + 787 1576001 1037.7 [ 0 9 3 8 7 10 5 11 2 6 4 1 ] 5564.69 3523.27 + 788 1578001 1035.63 [ 0 2 6 5 1 11 3 9 7 10 4 8 ] 4706.21 3523.27 + 789 1580001 1033.56 [ 0 8 10 9 11 3 6 2 4 1 5 7 ] 5678.43 3523.27 + 790 1582001 1031.5 [ 0 5 11 9 8 6 2 7 1 4 3 10 ] 5489.83 3523.27 + 791 1584001 1029.44 [ 0 3 2 5 4 10 11 8 7 6 9 1 ] 5037.78 3523.27 + 792 1586001 1027.39 [ 0 5 10 8 3 7 4 9 11 1 6 2 ] 5480.78 3523.27 + 793 1588001 1025.34 [ 0 11 8 10 7 1 2 9 4 5 6 3 ] 5431.44 3523.27 + 794 1590001 1023.29 [ 0 2 1 3 10 8 9 7 6 5 4 11 ] 5696.96 3523.27 + 795 1592001 1021.25 [ 0 2 7 1 3 9 4 8 5 6 11 10 ] 5226.46 3523.27 + 796 1594001 1019.21 [ 0 6 2 3 8 7 10 9 5 11 1 4 ] 5022.24 3523.27 + 797 1596001 1017.18 [ 0 6 5 4 10 2 1 7 11 9 3 8 ] 4622.76 3523.27 + 798 1598001 1015.15 [ 0 10 6 11 3 4 9 5 8 1 2 7 ] 5750.79 3523.27 + 799 1600001 1013.12 [ 0 6 3 9 5 8 10 4 11 2 1 7 ] 4454.21 3523.27 + 800 1602001 1011.1 [ 0 1 8 2 3 9 6 4 10 5 11 7 ] 5314.17 3523.27 + 801 1604001 1009.08 [ 0 1 11 7 3 8 4 6 2 9 5 10 ] 5118.43 3523.27 + 802 1606001 1007.06 [ 0 4 9 3 11 6 5 7 10 2 8 1 ] 5793.4 3523.27 + 803 1608001 1005.05 [ 0 11 3 5 1 9 7 8 10 4 2 6 ] 4524.61 3523.27 + 804 1610001 1003.05 [ 0 8 7 3 6 11 5 10 2 4 1 9 ] 5537.9 3523.27 + 805 1612001 1001.05 [ 0 8 9 2 6 4 5 3 7 11 1 10 ] 4562.07 3523.27 + 806 1614001 999.048 [ 0 7 4 11 1 10 2 6 8 3 9 5 ] 4540.73 3523.27 + 807 1616001 997.054 [ 0 1 11 2 3 9 5 10 6 4 7 8 ] 5011.86 3523.27 + 808 1618001 995.064 [ 0 5 7 11 1 8 3 9 6 4 10 2 ] 4830.11 3523.27 + 809 1620001 993.078 [ 0 6 8 2 3 10 4 1 5 7 11 9 ] 5020.74 3523.27 + 810 1622001 991.096 [ 0 10 1 9 11 5 2 4 7 8 6 3 ] 5108.18 3523.27 + 811 1624001 989.117 [ 0 10 2 4 11 6 8 7 9 5 1 3 ] 5340.61 3523.27 + 812 1626001 987.143 [ 0 3 8 4 1 10 2 11 7 6 5 9 ] 4917.9 3523.27 + 813 1628001 985.173 [ 0 6 10 7 2 9 5 3 8 1 11 4 ] 4292.25 3523.27 + 814 1630001 983.206 [ 0 10 8 2 7 4 11 3 5 1 9 6 ] 4695.33 3523.27 + 815 1632001 981.244 [ 0 11 4 8 7 1 6 10 3 9 2 5 ] 5323.02 3523.27 + 816 1634001 979.285 [ 0 2 9 10 1 11 7 3 4 6 5 8 ] 5059.25 3523.27 + 817 1636001 977.331 [ 0 9 6 8 4 5 3 11 7 10 1 2 ] 4775.68 3523.27 + 818 1638001 975.38 [ 0 6 10 1 3 5 9 8 4 2 11 7 ] 4563.69 3523.27 + 819 1640001 973.433 [ 0 6 8 3 2 11 1 7 9 4 10 5 ] 4737.12 3523.27 + 820 1642001 971.49 [ 0 4 3 5 2 6 9 7 10 8 11 1 ] 4885.04 3523.27 + 821 1644001 969.551 [ 0 3 6 7 9 5 1 10 4 2 8 11 ] 4885.51 3523.27 + 822 1646001 967.616 [ 0 5 11 2 4 8 6 7 9 10 1 3 ] 5492.54 3523.27 + 823 1648001 965.684 [ 0 9 3 8 7 1 6 4 10 5 2 11 ] 5202.79 3523.27 + 824 1650001 963.757 [ 0 2 6 7 9 3 4 1 8 10 11 5 ] 5297.44 3523.27 + 825 1652001 961.833 [ 0 3 5 2 4 7 11 1 9 8 6 10 ] 4368.44 3523.27 + 826 1654001 959.913 [ 0 9 1 2 6 11 8 3 5 4 10 7 ] 4574.61 3523.27 + 827 1656001 957.997 [ 0 8 9 7 5 3 4 1 10 2 6 11 ] 4972.59 3523.27 + 828 1658001 956.085 [ 0 5 11 1 2 10 4 3 9 7 6 8 ] 4840.3 3523.27 + 829 1660001 954.177 [ 0 5 4 8 11 6 2 1 3 7 10 9 ] 5820.7 3523.27 + 830 1662001 952.272 [ 0 7 1 10 8 9 4 6 2 11 3 5 ] 4939.37 3523.27 + 831 1664001 950.372 [ 0 1 11 2 5 3 10 4 7 9 8 6 ] 4407.29 3523.27 + 832 1666001 948.475 [ 0 8 7 5 4 1 11 6 10 3 9 2 ] 5260.54 3523.27 + 833 1668001 946.581 [ 0 8 3 10 4 7 11 1 6 2 5 9 ] 4689.72 3523.27 + 834 1670001 944.692 [ 0 3 9 4 7 8 6 1 10 5 11 2 ] 5446.07 3523.27 + 835 1672001 942.806 [ 0 9 5 11 1 4 8 2 3 6 7 10 ] 5055.32 3523.27 + 836 1674001 940.925 [ 0 2 6 7 8 10 4 1 3 5 11 9 ] 4789.69 3523.27 + 837 1676001 939.046 [ 0 9 4 5 8 3 1 11 2 10 6 7 ] 5696.13 3523.27 + 838 1678001 937.172 [ 0 7 3 9 4 2 10 1 6 8 5 11 ] 5659.67 3523.27 + 839 1680001 935.302 [ 0 11 4 8 10 1 3 7 9 5 2 6 ] 5039.51 3523.27 + 840 1682001 933.435 [ 0 2 9 3 7 11 1 10 4 6 8 5 ] 4411.35 3523.27 + 841 1684001 931.572 [ 0 10 3 11 2 1 4 5 9 6 7 8 ] 5540.5 3523.27 + 842 1686001 929.712 [ 0 11 7 2 3 8 5 9 10 6 1 4 ] 5284.74 3523.27 + 843 1688001 927.856 [ 0 4 1 11 9 6 3 7 10 2 5 8 ] 5178.31 3523.27 + 844 1690001 926.004 [ 0 2 4 11 10 7 3 8 6 9 5 1 ] 5176.94 3523.27 + 845 1692001 924.156 [ 0 3 4 8 11 10 5 6 7 2 9 1 ] 5279.34 3523.27 + 846 1694001 922.311 [ 0 1 11 5 3 10 4 6 9 7 8 2 ] 4700.1 3523.27 + 847 1696001 920.47 [ 0 2 7 10 5 9 1 11 4 6 3 8 ] 4574.95 3523.27 + 848 1698001 918.633 [ 0 4 6 10 7 9 1 5 3 2 11 8 ] 4714.42 3523.27 + 849 1700001 916.8 [ 0 2 1 3 11 10 9 6 8 7 5 4 ] 5764.8 3523.27 + 850 1702001 914.97 [ 0 4 10 7 6 2 8 1 9 3 5 11 ] 4464.1 3523.27 + 851 1704001 913.143 [ 0 5 9 3 4 7 8 6 1 2 10 11 ] 5116.63 3523.27 + 852 1706001 911.321 [ 0 10 2 6 8 4 3 1 5 9 11 7 ] 5333.81 3523.27 + 853 1708001 909.502 [ 0 10 8 2 4 11 1 7 6 5 9 3 ] 4654.16 3523.27 + 854 1710001 907.686 [ 0 10 2 1 9 8 6 3 11 5 7 4 ] 5573.3 3523.27 + 855 1712001 905.875 [ 0 2 5 7 6 10 1 4 9 11 8 3 ] 5459.21 3523.27 + 856 1714001 904.066 [ 0 5 3 10 2 1 8 7 6 4 11 9 ] 5118.23 3523.27 + 857 1716001 902.262 [ 0 1 3 6 11 8 2 7 4 5 10 9 ] 5921.52 3523.27 + 858 1718001 900.461 [ 0 10 5 7 4 6 1 11 9 2 3 8 ] 5407.13 3523.27 + 859 1720001 898.664 [ 0 6 2 10 9 3 5 1 8 4 11 7 ] 4729.73 3523.27 + 860 1722001 896.87 [ 0 4 1 7 10 6 9 11 2 5 8 3 ] 5271.43 3523.27 + 861 1724001 895.08 [ 0 2 9 8 3 5 1 10 4 6 11 7 ] 4531.78 3523.27 + 862 1726001 893.293 [ 0 6 11 9 1 7 4 10 3 8 5 2 ] 4788.14 3523.27 + 863 1728001 891.51 [ 0 6 2 3 5 8 11 7 1 10 4 9 ] 4266.64 3523.27 + 864 1730001 889.731 [ 0 3 10 4 1 8 9 5 11 7 6 2 ] 5030.34 3523.27 + 865 1732001 887.955 [ 0 3 5 4 11 8 10 9 2 1 7 6 ] 4784.27 3523.27 + 866 1734001 886.182 [ 0 5 3 1 4 2 11 9 7 10 8 6 ] 4665.4 3523.27 + 867 1736001 884.414 [ 0 4 1 8 2 7 11 5 6 3 10 9 ] 5578.82 3523.27 + 868 1738001 882.648 [ 0 4 11 2 6 10 7 1 9 5 8 3 ] 4733.37 3523.27 + 869 1740001 880.887 [ 0 7 3 5 8 2 4 6 11 9 1 10 ] 4771.22 3523.27 + 870 1742001 879.128 [ 0 10 1 11 7 2 6 4 9 3 8 5 ] 4876.49 3523.27 + 871 1744001 877.374 [ 0 6 5 7 2 10 3 9 1 8 11 4 ] 5161.07 3523.27 + 872 1746001 875.622 [ 0 2 7 10 6 8 11 3 5 4 1 9 ] 4735.47 3523.27 + 873 1748001 873.875 [ 0 8 9 1 11 7 10 2 6 5 4 3 ] 4918.31 3523.27 + 874 1750001 872.13 [ 0 1 10 6 8 11 2 4 5 9 3 7 ] 5239.45 3523.27 + 875 1752001 870.39 [ 0 10 7 1 4 9 3 5 6 11 2 8 ] 4618.07 3523.27 + 876 1754001 868.652 [ 0 5 11 7 2 9 3 6 1 10 4 8 ] 4706.49 3523.27 + 877 1756001 866.918 [ 0 3 5 4 9 1 10 6 11 2 7 8 ] 4701.71 3523.27 + 878 1758001 865.188 [ 0 2 4 9 6 5 3 10 1 7 8 11 ] 5012.98 3523.27 + 879 1760001 863.461 [ 0 7 1 8 9 4 11 2 5 3 6 10 ] 5019.11 3523.27 + 880 1762001 861.738 [ 0 8 3 6 11 7 1 5 10 4 9 2 ] 5062.75 3523.27 + 881 1764001 860.018 [ 0 4 3 5 9 1 11 10 6 7 2 8 ] 4154.17 3523.27 + 882 1766001 858.301 [ 0 5 7 11 9 3 8 10 6 2 4 1 ] 5268.39 3523.27 + 883 1768001 856.588 [ 0 9 10 4 2 7 8 6 1 5 3 11 ] 5036.37 3523.27 + 884 1770001 854.878 [ 0 6 4 2 10 11 7 8 5 3 9 1 ] 4369.17 3523.27 + 885 1772001 853.172 [ 0 10 9 3 6 1 4 8 7 11 2 5 ] 5265.62 3523.27 + 886 1774001 851.469 [ 0 6 10 2 9 8 3 1 5 11 4 7 ] 5665.74 3523.27 + 887 1776001 849.769 [ 0 8 5 9 10 1 4 11 7 3 2 6 ] 4753.86 3523.27 + 888 1778001 848.073 [ 0 2 5 9 4 11 10 1 8 6 3 7 ] 5003.28 3523.27 + 889 1780001 846.38 [ 0 1 3 5 6 4 10 11 8 9 7 2 ] 4618.79 3523.27 + 890 1782001 844.691 [ 0 7 8 6 2 5 11 9 3 1 4 10 ] 5116.06 3523.27 + 891 1784001 843.005 [ 0 1 9 3 11 8 2 6 7 10 5 4 ] 5462.66 3523.27 + 892 1786001 841.322 [ 0 4 10 5 7 11 3 1 8 6 9 2 ] 5400.19 3523.27 + 893 1788001 839.643 [ 0 11 3 9 6 7 4 10 2 1 8 5 ] 5320.98 3523.27 + 894 1790001 837.967 [ 0 5 6 3 8 10 4 7 2 9 11 1 ] 4789.22 3523.27 + 895 1792001 836.294 [ 0 8 1 6 5 10 7 3 9 4 11 2 ] 5479.87 3523.27 + 896 1794001 834.625 [ 0 2 3 1 9 4 8 6 7 5 10 11 ] 5438.96 3523.27 + 897 1796001 832.959 [ 0 10 9 4 11 2 6 1 8 3 5 7 ] 5335.01 3523.27 + 898 1798001 831.297 [ 0 11 5 2 1 6 9 7 10 4 8 3 ] 5343.66 3523.27 + 899 1800001 829.637 [ 0 8 7 3 4 11 1 2 10 9 6 5 ] 5363.23 3523.27 + 900 1802001 827.981 [ 0 10 9 7 11 3 6 2 5 4 1 8 ] 5472.63 3523.27 + 901 1804001 826.329 [ 0 2 8 6 11 1 7 9 3 5 4 10 ] 4117.78 3523.27 + 902 1806001 824.679 [ 0 2 6 5 3 11 7 9 10 4 8 1 ] 4703.89 3523.27 + 903 1808001 823.033 [ 0 8 10 4 1 6 9 11 5 3 7 2 ] 4725.09 3523.27 + 904 1810001 821.391 [ 0 11 10 7 3 1 5 2 4 8 9 6 ] 5611.85 3523.27 + 905 1812001 819.751 [ 0 3 11 4 1 5 10 7 6 9 2 8 ] 5466.92 3523.27 + 906 1814001 818.115 [ 0 3 11 6 10 4 8 2 7 1 9 5 ] 4617.91 3523.27 + 907 1816001 816.482 [ 0 2 7 10 5 4 1 6 9 8 11 3 ] 5767.18 3523.27 + 908 1818001 814.852 [ 0 11 8 4 9 7 1 3 5 2 10 6 ] 5007.22 3523.27 + 909 1820001 813.226 [ 0 6 2 4 10 7 11 9 1 8 3 5 ] 4133.73 3523.27 + 910 1822001 811.603 [ 0 1 8 3 6 11 7 10 9 2 4 5 ] 5603.88 3523.27 + 911 1824001 809.983 [ 0 9 11 1 8 5 10 3 6 2 7 4 ] 5439.43 3523.27 + 912 1826001 808.366 [ 0 7 1 10 2 11 4 5 3 6 9 8 ] 4716.04 3523.27 + 913 1828001 806.752 [ 0 9 11 7 6 3 2 5 10 1 4 8 ] 5143.6 3523.27 + 914 1830001 805.142 [ 0 8 10 6 9 4 3 5 1 2 7 11 ] 5108.66 3523.27 + 915 1832001 803.535 [ 0 6 4 1 9 7 2 11 10 3 5 8 ] 4356.34 3523.27 + 916 1834001 801.931 [ 0 8 6 10 1 2 3 5 4 11 9 7 ] 4619.72 3523.27 + 917 1836001 800.33 [ 0 4 7 9 1 8 6 10 11 2 5 3 ] 4505.65 3523.27 + 918 1838001 798.733 [ 0 9 4 2 8 10 6 3 7 11 1 5 ] 5373.12 3523.27 + 919 1840001 797.139 [ 0 4 10 3 7 9 2 8 5 6 11 1 ] 5141.13 3523.27 + 920 1842001 795.548 [ 0 2 1 11 4 10 6 8 7 5 3 9 ] 4221.84 3523.27 + 921 1844001 793.96 [ 0 10 4 8 6 5 2 7 1 3 11 9 ] 5117.36 3523.27 + 922 1846001 792.375 [ 0 8 4 2 11 6 1 7 3 9 5 10 ] 5272.1 3523.27 + 923 1848001 790.793 [ 0 5 3 6 9 4 10 11 1 7 2 8 ] 4076.64 3523.27 + 924 1850001 789.215 [ 0 5 7 9 1 3 10 4 8 2 11 6 ] 5036.96 3523.27 + 925 1852001 787.64 [ 0 5 3 7 11 9 2 1 6 10 4 8 ] 4509.84 3523.27 + 926 1854001 786.068 [ 0 1 3 7 9 5 6 8 4 11 2 10 ] 5293.36 3523.27 + 927 1856001 784.499 [ 0 1 5 11 3 2 9 8 7 6 4 10 ] 5683.17 3523.27 + 928 1858001 782.933 [ 0 2 4 7 1 10 9 3 6 5 8 11 ] 5144.53 3523.27 + 929 1860001 781.37 [ 0 3 1 8 2 9 6 7 11 5 10 4 ] 5412.23 3523.27 + 930 1862001 779.81 [ 0 8 6 9 1 2 5 4 7 3 10 11 ] 5290.62 3523.27 + 931 1864001 778.254 [ 0 4 8 2 6 5 1 9 3 7 11 10 ] 4919.8 3523.27 + 932 1866001 776.7 [ 0 6 10 1 2 11 8 9 7 4 5 3 ] 4790.21 3523.27 + 933 1868001 775.15 [ 0 6 10 5 2 8 1 4 3 7 9 11 ] 5625.54 3523.27 + 934 1870001 773.603 [ 0 6 11 10 4 3 1 7 2 5 8 9 ] 5086.14 3523.27 + 935 1872001 772.059 [ 0 1 9 8 2 11 10 5 3 7 4 6 ] 4746.01 3523.27 + 936 1874001 770.518 [ 0 9 7 6 1 11 10 4 8 5 3 2 ] 4334.59 3523.27 + 937 1876001 768.98 [ 0 4 10 1 2 7 11 8 5 9 3 6 ] 4379.53 3523.27 + 938 1878001 767.445 [ 0 11 5 6 7 8 2 1 10 4 3 9 ] 5174.68 3523.27 + 939 1880001 765.913 [ 0 6 11 4 3 2 8 1 5 9 7 10 ] 5257.13 3523.27 + 940 1882001 764.384 [ 0 11 4 8 10 9 7 2 3 1 5 6 ] 5444.97 3523.27 + 941 1884001 762.859 [ 0 2 3 9 7 11 8 4 5 6 10 1 ] 5133.32 3523.27 + 942 1886001 761.336 [ 0 5 9 8 7 1 2 3 6 11 4 10 ] 4804.08 3523.27 + 943 1888001 759.816 [ 0 9 1 3 6 10 2 4 8 11 5 7 ] 5687.05 3523.27 + 944 1890001 758.3 [ 0 2 7 11 8 9 6 10 5 3 4 1 ] 5111.13 3523.27 + 945 1892001 756.786 [ 0 10 6 11 7 1 5 9 3 2 4 8 ] 4975.44 3523.27 + 946 1894001 755.276 [ 0 2 8 1 5 6 11 4 9 10 7 3 ] 5681.48 3523.27 + 947 1896001 753.768 [ 0 4 10 2 9 11 5 1 7 8 3 6 ] 5108.73 3523.27 + 948 1898001 752.264 [ 0 4 11 2 1 5 3 9 8 10 6 7 ] 4963.12 3523.27 + 949 1900001 750.762 [ 0 9 11 5 4 7 10 8 1 3 6 2 ] 5688.29 3523.27 + 950 1902001 749.263 [ 0 4 8 7 3 11 5 9 2 10 6 1 ] 5787.59 3523.27 + 951 1904001 747.768 [ 0 5 10 9 7 2 8 11 4 3 6 1 ] 5683.89 3523.27 + 952 1906001 746.275 [ 0 6 3 11 7 9 4 1 10 5 2 8 ] 5155.52 3523.27 + 953 1908001 744.786 [ 0 8 2 9 10 4 7 6 3 11 1 5 ] 5024.44 3523.27 + 954 1910001 743.299 [ 0 10 11 1 7 3 2 5 4 9 6 8 ] 5156.91 3523.27 + 955 1912001 741.816 [ 0 6 9 2 5 3 11 7 4 8 1 10 ] 4755.97 3523.27 + 956 1914001 740.335 [ 0 2 8 11 6 10 4 9 5 3 7 1 ] 4608.14 3523.27 + 957 1916001 738.857 [ 0 2 8 11 1 6 10 7 9 4 5 3 ] 4870.32 3523.27 + 958 1918001 737.382 [ 0 3 9 2 5 8 10 7 1 4 6 11 ] 5144.32 3523.27 + 959 1920001 735.911 [ 0 4 9 7 1 11 2 10 8 3 5 6 ] 4565.67 3523.27 + 960 1922001 734.442 [ 0 7 6 5 9 2 11 3 8 1 4 10 ] 5080.08 3523.27 + 961 1924001 732.976 [ 0 6 5 1 7 10 4 9 11 2 3 8 ] 4925.95 3523.27 + 962 1926001 731.513 [ 0 1 10 9 2 11 7 6 8 4 3 5 ] 4805.6 3523.27 + 963 1928001 730.053 [ 0 11 8 10 9 5 4 6 3 2 1 7 ] 5382.84 3523.27 + 964 1930001 728.595 [ 0 5 1 3 2 8 6 9 10 7 11 4 ] 5377.84 3523.27 + 965 1932001 727.141 [ 0 3 6 5 1 10 8 2 11 7 4 9 ] 5255.64 3523.27 + 966 1934001 725.69 [ 0 5 2 11 4 10 1 9 7 8 3 6 ] 4480.02 3523.27 + 967 1936001 724.241 [ 0 8 1 7 6 9 4 5 3 2 10 11 ] 5026.15 3523.27 + 968 1938001 722.796 [ 0 6 3 5 2 7 10 8 11 4 9 1 ] 4614.39 3523.27 + 969 1940001 721.353 [ 0 7 4 5 9 3 6 2 8 10 11 1 ] 4816.04 3523.27 + 970 1942001 719.913 [ 0 8 11 10 6 1 4 3 5 2 9 7 ] 4858.83 3523.27 + 971 1944001 718.476 [ 0 1 5 4 8 3 6 9 2 7 10 11 ] 5509.07 3523.27 + 972 1946001 717.042 [ 0 11 4 8 5 2 3 9 6 10 7 1 ] 5259.96 3523.27 + 973 1948001 715.611 [ 0 8 2 9 7 1 4 11 10 6 5 3 ] 4284.65 3523.27 + 974 1950001 714.183 [ 0 5 3 6 9 10 1 4 8 2 7 11 ] 4637.84 3523.27 + 975 1952001 712.757 [ 0 8 6 2 1 10 3 4 9 7 11 5 ] 5367.8 3523.27 + 976 1954001 711.334 [ 0 5 2 8 6 9 3 11 4 1 7 10 ] 5044.23 3523.27 + 977 1956001 709.915 [ 0 8 2 3 5 7 1 10 4 11 9 6 ] 4157.44 3523.27 + 978 1958001 708.498 [ 0 6 10 4 7 1 11 5 3 2 8 9 ] 4366.31 3523.27 + 979 1960001 707.083 [ 0 10 7 3 1 8 6 2 5 4 11 9 ] 5592.08 3523.27 + 980 1962001 705.672 [ 0 7 11 4 9 8 3 5 2 6 1 10 ] 4873.95 3523.27 + 981 1964001 704.264 [ 0 8 3 7 11 6 4 1 2 10 5 9 ] 5289.9 3523.27 + 982 1966001 702.858 [ 0 5 6 11 10 8 9 7 4 2 1 3 ] 5401.45 3523.27 + 983 1968001 701.455 [ 0 11 1 9 2 4 7 3 10 5 8 6 ] 5145.78 3523.27 + 984 1970001 700.055 [ 0 1 7 4 10 8 9 11 5 3 6 2 ] 4633.67 3523.27 + 985 1972001 698.657 [ 0 6 5 10 1 2 3 7 4 9 8 11 ] 5590.49 3523.27 + 986 1974001 697.263 [ 0 5 7 10 11 9 3 6 2 4 1 8 ] 5061.88 3523.27 + 987 1976001 695.871 [ 0 1 11 10 8 7 9 4 2 6 5 3 ] 4679.09 3523.27 + 988 1978001 694.482 [ 0 10 7 9 8 4 3 5 11 6 1 2 ] 5272.83 3523.27 + 989 1980001 693.096 [ 0 5 8 11 4 10 6 7 2 9 3 1 ] 5082.03 3523.27 + 990 1982001 691.713 [ 0 4 3 9 2 7 5 8 10 6 11 1 ] 5392.91 3523.27 + 991 1984001 690.332 [ 0 8 5 2 10 4 11 6 7 1 3 9 ] 4978.01 3523.27 + 992 1986001 688.954 [ 0 8 4 2 6 1 11 10 7 9 5 3 ] 4236.25 3523.27 + 993 1988001 687.579 [ 0 5 7 3 11 9 1 4 10 6 8 2 ] 4957.47 3523.27 + 994 1990001 686.206 [ 0 1 11 2 3 6 10 5 9 4 8 7 ] 5332.21 3523.27 + 995 1992001 684.837 [ 0 2 1 11 10 4 6 8 5 9 7 3 ] 4463.63 3523.27 + 996 1994001 683.47 [ 0 6 10 3 5 7 11 8 4 1 2 9 ] 4879.73 3523.27 + 997 1996001 682.106 [ 0 6 9 10 1 5 2 8 4 7 3 11 ] 5626.14 3523.27 + 998 1998001 680.744 [ 0 9 7 3 6 4 11 2 1 10 5 8 ] 5305.65 3523.27 + 999 2000001 679.385 [ 0 5 7 6 1 9 11 2 3 8 4 10 ] 5089.6 3523.27 + 1000 2002001 678.029 [ 0 5 3 1 8 2 11 6 7 10 4 9 ] 4927.95 3523.27 + 1001 2004001 676.676 [ 0 11 4 10 2 5 3 7 1 6 8 9 ] 4685.74 3523.27 + 1002 2006001 675.325 [ 0 2 1 7 11 6 9 3 8 4 10 5 ] 4875.92 3523.27 + 1003 2008001 673.977 [ 0 7 4 10 11 6 2 3 5 1 9 8 ] 4359.11 3523.27 + 1004 2010001 672.632 [ 0 8 2 11 7 5 9 3 1 10 4 6 ] 4481.9 3523.27 + 1005 2012001 671.29 [ 0 5 1 6 11 8 3 4 10 7 2 9 ] 5397.38 3523.27 + 1006 2014001 669.95 [ 0 4 6 3 10 7 1 8 2 5 11 9 ] 5593.52 3523.27 + 1007 2016001 668.612 [ 0 6 11 4 7 3 8 9 2 1 10 5 ] 5331.24 3523.27 + 1008 2018001 667.278 [ 0 2 9 3 1 8 10 4 11 5 6 7 ] 5165.28 3523.27 + 1009 2020001 665.946 [ 0 1 2 9 10 7 3 8 11 4 6 5 ] 5528.72 3523.27 + 1010 2022001 664.617 [ 0 9 7 11 10 4 1 3 6 8 2 5 ] 4719 3523.27 + 1011 2024001 663.29 [ 0 3 11 6 2 7 1 4 8 5 9 10 ] 5232.63 3523.27 + 1012 2026001 661.966 [ 0 5 8 1 10 11 2 4 7 9 6 3 ] 5162.63 3523.27 + 1013 2028001 660.645 [ 0 5 7 9 6 8 10 1 4 11 3 2 ] 5206.58 3523.27 + 1014 2030001 659.326 [ 0 8 11 4 6 2 1 10 9 5 3 7 ] 4629.24 3523.27 + 1015 2032001 658.01 [ 0 10 3 6 8 4 5 7 2 9 11 1 ] 5406.07 3523.27 + 1016 2034001 656.697 [ 0 6 11 2 9 10 4 3 7 1 5 8 ] 5210.48 3523.27 + 1017 2036001 655.386 [ 0 6 10 9 2 8 11 7 4 1 3 5 ] 4758.13 3523.27 + 1018 2038001 654.078 [ 0 6 5 10 11 4 1 9 3 8 2 7 ] 4707.51 3523.27 + 1019 2040001 652.772 [ 0 6 1 3 7 9 5 11 4 8 2 10 ] 5406.96 3523.27 + 1020 2042001 651.469 [ 0 6 5 2 1 9 10 4 8 7 11 3 ] 4821.16 3523.27 + 1021 2044001 650.169 [ 0 1 5 8 2 9 6 10 3 11 4 7 ] 5795.37 3523.27 + 1022 2046001 648.871 [ 0 3 6 4 11 1 2 7 5 8 10 9 ] 5265.93 3523.27 + 1023 2048001 647.576 [ 0 11 5 10 8 1 9 3 7 6 4 2 ] 5567.32 3523.27 + 1024 2050001 646.284 [ 0 5 7 1 3 8 6 9 2 10 11 4 ] 5236.17 3523.27 + 1025 2052001 644.994 [ 0 5 3 6 10 1 11 4 9 8 7 2 ] 4547.48 3523.27 + 1026 2054001 643.706 [ 0 11 3 7 9 5 6 1 2 4 8 10 ] 5558.84 3523.27 + 1027 2056001 642.421 [ 0 5 11 10 4 8 3 1 9 2 7 6 ] 4804.06 3523.27 + 1028 2058001 641.139 [ 0 9 2 6 3 7 5 11 4 1 10 8 ] 5308.5 3523.27 + 1029 2060001 639.859 [ 0 5 3 7 1 11 8 9 2 6 10 4 ] 4397.97 3523.27 + 1030 2062001 638.582 [ 0 6 9 3 10 1 7 5 4 2 8 11 ] 5362.06 3523.27 + 1031 2064001 637.308 [ 0 2 3 5 11 7 6 8 9 1 10 4 ] 4239.07 3523.27 + 1032 2066001 636.036 [ 0 10 1 8 2 4 7 9 3 5 11 6 ] 4777.29 3523.27 + 1033 2068001 634.766 [ 0 10 8 2 11 4 3 5 6 7 1 9 ] 4624.68 3523.27 + 1034 2070001 633.499 [ 0 7 11 2 5 3 1 6 8 9 4 10 ] 4831.82 3523.27 + 1035 2072001 632.235 [ 0 10 4 6 3 1 11 2 8 9 5 7 ] 4955.31 3523.27 + 1036 2074001 630.973 [ 0 8 6 4 7 2 1 9 11 10 5 3 ] 4409.39 3523.27 + 1037 2076001 629.713 [ 0 8 3 2 9 5 6 10 4 11 7 1 ] 4535.04 3523.27 + 1038 2078001 628.456 [ 0 7 9 5 3 1 11 6 8 10 4 2 ] 4239.83 3523.27 + 1039 2080001 627.202 [ 0 8 4 11 5 1 7 2 6 10 3 9 ] 5326.68 3523.27 + 1040 2082001 625.95 [ 0 1 10 5 7 4 11 8 2 3 6 9 ] 5527.65 3523.27 + 1041 2084001 624.701 [ 0 7 11 6 4 8 2 1 10 3 9 5 ] 4962.17 3523.27 + 1042 2086001 623.454 [ 0 1 4 7 5 11 10 8 2 9 3 6 ] 5178.28 3523.27 + 1043 2088001 622.209 [ 0 5 3 10 9 1 6 2 11 7 8 4 ] 4828.17 3523.27 + 1044 2090001 620.967 [ 0 5 6 11 7 1 10 9 3 4 8 2 ] 5014.14 3523.27 + 1045 2092001 619.728 [ 0 3 2 1 4 10 11 8 7 6 5 9 ] 4770 3523.27 + 1046 2094001 618.491 [ 0 11 4 6 1 7 10 2 5 9 3 8 ] 4956.74 3523.27 + 1047 2096001 617.256 [ 0 2 4 10 6 7 8 9 3 5 11 1 ] 4613.22 3523.27 + 1048 2098001 616.024 [ 0 5 11 4 7 6 10 8 3 1 2 9 ] 5608.19 3523.27 + 1049 2100001 614.795 [ 0 5 11 10 9 3 7 6 8 2 1 4 ] 5323.09 3523.27 + 1050 2102001 613.568 [ 0 7 10 4 2 11 1 8 9 6 3 5 ] 4531.26 3523.27 + 1051 2104001 612.343 [ 0 6 5 8 9 3 7 2 1 11 10 4 ] 4618.83 3523.27 + 1052 2106001 611.121 [ 0 3 11 2 7 10 9 6 5 4 8 1 ] 5781.88 3523.27 + 1053 2108001 609.901 [ 0 3 9 5 6 2 1 4 10 11 7 8 ] 4283.89 3523.27 + 1054 2110001 608.683 [ 0 6 11 1 10 4 7 2 9 5 8 3 ] 4383.18 3523.27 + 1055 2112001 607.469 [ 0 10 4 3 5 6 7 1 11 2 8 9 ] 4474.64 3523.27 + 1056 2114001 606.256 [ 0 2 5 6 1 7 4 8 3 9 10 11 ] 5194.15 3523.27 + 1057 2116001 605.046 [ 0 6 1 9 5 3 7 10 8 11 2 4 ] 4584.35 3523.27 + 1058 2118001 603.838 [ 0 9 5 3 2 6 1 7 8 4 11 10 ] 4490.62 3523.27 + 1059 2120001 602.633 [ 0 8 1 10 7 6 2 9 3 4 5 11 ] 5458.56 3523.27 + 1060 2122001 601.43 [ 0 3 9 6 2 10 1 4 11 7 8 5 ] 4882.68 3523.27 + 1061 2124001 600.23 [ 0 6 11 9 2 5 1 8 7 4 3 10 ] 5751.41 3523.27 + 1062 2126001 599.032 [ 0 10 2 4 6 5 11 8 7 9 1 3 ] 5501.73 3523.27 + 1063 2128001 597.836 [ 0 10 4 2 11 3 5 7 6 9 1 8 ] 4741.39 3523.27 + 1064 2130001 596.643 [ 0 3 5 9 7 1 11 6 10 4 2 8 ] 3990.7 3523.27 + 1065 2132001 595.452 [ 0 5 2 7 11 10 6 3 9 1 4 8 ] 4570.34 3523.27 + 1066 2134001 594.263 [ 0 7 9 1 6 2 3 10 11 8 5 4 ] 5385.77 3523.27 + 1067 2136001 593.077 [ 0 9 3 4 10 1 5 2 8 6 7 11 ] 4932.04 3523.27 + 1068 2138001 591.893 [ 0 11 1 2 8 5 6 7 9 4 10 3 ] 5104.65 3523.27 + 1069 2140001 590.712 [ 0 7 2 8 5 3 9 4 6 1 10 11 ] 4751.43 3523.27 + 1070 2142001 589.533 [ 0 11 9 10 8 3 2 6 5 4 7 1 ] 5544.14 3523.27 + 1071 2144001 588.356 [ 0 2 9 5 8 7 11 6 3 1 10 4 ] 4738.89 3523.27 + 1072 2146001 587.182 [ 0 7 5 4 6 9 1 10 8 11 2 3 ] 5332.6 3523.27 + 1073 2148001 586.01 [ 0 11 10 6 5 3 9 4 1 7 2 8 ] 4474.57 3523.27 + 1074 2150001 584.84 [ 0 5 11 10 2 1 4 9 8 7 3 6 ] 5502.6 3523.27 + 1075 2152001 583.673 [ 0 6 3 11 2 7 4 10 8 1 9 5 ] 4637.01 3523.27 + 1076 2154001 582.508 [ 0 7 2 11 10 1 9 4 6 5 3 8 ] 4428.12 3523.27 + 1077 2156001 581.345 [ 0 3 8 6 2 7 9 1 11 4 10 5 ] 4439.03 3523.27 + 1078 2158001 580.185 [ 0 2 3 5 8 6 11 1 9 10 7 4 ] 4473.63 3523.27 + 1079 2160001 579.027 [ 0 3 1 7 9 2 4 10 6 5 8 11 ] 5123.77 3523.27 + 1080 2162001 577.871 [ 0 4 7 1 8 11 10 6 3 9 5 2 ] 4893.21 3523.27 + 1081 2164001 576.717 [ 0 2 9 5 6 7 8 1 11 3 4 10 ] 4967.56 3523.27 + 1082 2166001 575.566 [ 0 7 5 8 9 6 2 11 4 1 3 10 ] 5739.69 3523.27 + 1083 2168001 574.417 [ 0 3 5 9 6 2 8 10 1 7 11 4 ] 4194.42 3523.27 + 1084 2170001 573.271 [ 0 7 1 3 10 11 9 5 6 8 2 4 ] 5102.21 3523.27 + 1085 2172001 572.127 [ 0 1 2 6 9 11 4 8 10 5 7 3 ] 5669.18 3523.27 + 1086 2174001 570.985 [ 0 2 9 11 7 1 4 10 8 3 5 6 ] 4065.51 3523.27 + 1087 2176001 569.845 [ 0 10 11 9 8 1 4 7 2 3 6 5 ] 5223.36 3523.27 + 1088 2178001 568.708 [ 0 4 2 7 3 11 6 9 1 8 5 10 ] 5753.51 3523.27 + 1089 2180001 567.572 [ 0 7 8 3 9 1 10 11 5 2 4 6 ] 4925.85 3523.27 + 1090 2182001 566.44 [ 0 4 8 6 11 10 1 9 7 2 3 5 ] 4284.2 3523.27 + 1091 2184001 565.309 [ 0 4 1 11 10 5 9 2 8 6 7 3 ] 4861.59 3523.27 + 1092 2186001 564.181 [ 0 6 4 9 7 1 5 3 10 11 2 8 ] 4733.35 3523.27 + 1093 2188001 563.054 [ 0 2 8 10 7 11 1 5 9 4 6 3 ] 4906.04 3523.27 + 1094 2190001 561.931 [ 0 7 11 4 6 1 3 9 5 2 10 8 ] 5055.7 3523.27 + 1095 2192001 560.809 [ 0 4 10 7 11 1 9 3 5 6 8 2 ] 3688.64 3523.27 + 1096 2194001 559.69 [ 0 4 8 2 6 1 11 3 5 9 10 7 ] 4734.25 3523.27 + 1097 2196001 558.572 [ 0 11 1 8 9 2 6 7 3 10 5 4 ] 5790.47 3523.27 + 1098 2198001 557.458 [ 0 11 7 5 9 4 1 10 8 2 3 6 ] 4965.83 3523.27 + 1099 2200001 556.345 [ 0 7 8 9 4 6 5 2 1 10 11 3 ] 5464.8 3523.27 + 1100 2202001 555.234 [ 0 2 5 9 1 7 3 8 11 10 4 6 ] 4414.39 3523.27 + 1101 2204001 554.126 [ 0 4 2 7 11 10 1 3 5 9 6 8 ] 4296.35 3523.27 + 1102 2206001 553.02 [ 0 2 3 11 10 8 9 1 6 5 7 4 ] 5365.3 3523.27 + 1103 2208001 551.916 [ 0 2 7 4 10 3 6 1 9 11 5 8 ] 5020.08 3523.27 + 1104 2210001 550.815 [ 0 2 3 5 6 11 7 1 8 9 10 4 ] 4592.29 3523.27 + 1105 2212001 549.715 [ 0 11 10 6 3 5 2 7 1 9 8 4 ] 4519 3523.27 + 1106 2214001 548.618 [ 0 2 3 9 11 10 7 1 5 4 8 6 ] 4906.06 3523.27 + 1107 2216001 547.523 [ 0 10 6 5 3 9 2 11 8 7 4 1 ] 4832.89 3523.27 + 1108 2218001 546.43 [ 0 9 3 8 6 4 10 2 11 5 7 1 ] 5182.93 3523.27 + 1109 2220001 545.339 [ 0 4 10 5 11 7 8 9 2 3 6 1 ] 5440.03 3523.27 + 1110 2222001 544.251 [ 0 7 2 11 8 6 3 1 9 4 10 5 ] 5092.71 3523.27 + 1111 2224001 543.165 [ 0 9 5 2 1 10 11 8 7 3 4 6 ] 5129.06 3523.27 + 1112 2226001 542.08 [ 0 1 10 4 5 6 11 8 9 2 3 7 ] 5356.97 3523.27 + 1113 2228001 540.998 [ 0 7 10 2 5 6 11 9 4 3 8 1 ] 5855.56 3523.27 + 1114 2230001 539.919 [ 0 7 6 1 2 11 8 3 4 10 5 9 ] 5359.61 3523.27 + 1115 2232001 538.841 [ 0 3 1 11 5 4 10 6 7 9 2 8 ] 5070.24 3523.27 + 1116 2234001 537.765 [ 0 2 11 6 7 8 3 9 5 1 10 4 ] 4823.88 3523.27 + 1117 2236001 536.692 [ 0 3 5 9 6 8 2 7 1 10 4 11 ] 3959.09 3523.27 + 1118 2238001 535.621 [ 0 3 4 1 7 2 5 9 6 8 10 11 ] 4946.5 3523.27 + 1119 2240001 534.552 [ 0 11 1 10 6 3 5 8 2 7 4 9 ] 4684.6 3523.27 + 1120 2242001 533.485 [ 0 5 3 7 6 8 4 9 1 11 2 10 ] 4641.75 3523.27 + 1121 2244001 532.42 [ 0 7 4 11 6 9 2 1 10 8 3 5 ] 4758.49 3523.27 + 1122 2246001 531.357 [ 0 7 8 3 5 10 1 4 6 11 9 2 ] 4867.94 3523.27 + 1123 2248001 530.296 [ 0 10 6 7 1 4 3 5 8 2 11 9 ] 4931.32 3523.27 + 1124 2250001 529.238 [ 0 6 7 5 10 2 9 1 11 4 3 8 ] 5046.79 3523.27 + 1125 2252001 528.182 [ 0 2 7 10 4 6 3 9 5 8 1 11 ] 4547.4 3523.27 + 1126 2254001 527.127 [ 0 11 8 5 2 9 4 3 7 6 1 10 ] 5823.99 3523.27 + 1127 2256001 526.075 [ 0 11 9 10 8 2 7 5 3 1 4 6 ] 5015.24 3523.27 + 1128 2258001 525.025 [ 0 5 3 4 6 9 8 1 7 10 11 2 ] 4844.98 3523.27 + 1129 2260001 523.977 [ 0 8 4 6 9 1 7 11 10 3 5 2 ] 4356.97 3523.27 + 1130 2262001 522.931 [ 0 5 9 3 2 1 7 6 11 4 8 10 ] 4952.6 3523.27 + 1131 2264001 521.888 [ 0 2 5 3 4 9 7 1 8 6 11 10 ] 4885.31 3523.27 + 1132 2266001 520.846 [ 0 4 5 8 9 1 11 7 10 2 6 3 ] 4924.77 3523.27 + 1133 2268001 519.806 [ 0 5 2 7 1 6 4 10 8 9 11 3 ] 5172.97 3523.27 + 1134 2270001 518.769 [ 0 5 10 8 1 11 7 6 9 2 3 4 ] 5397.06 3523.27 + 1135 2272001 517.733 [ 0 4 9 2 5 3 6 10 8 11 7 1 ] 4886.83 3523.27 + 1136 2274001 516.7 [ 0 1 10 2 6 8 9 4 11 7 3 5 ] 4791.25 3523.27 + 1137 2276001 515.669 [ 0 10 6 4 8 11 2 9 1 7 3 5 ] 4680.93 3523.27 + 1138 2278001 514.639 [ 0 8 5 9 2 3 10 6 4 7 1 11 ] 4965.18 3523.27 + 1139 2280001 513.612 [ 0 11 8 9 7 1 10 2 5 4 3 6 ] 5367.37 3523.27 + 1140 2282001 512.587 [ 0 6 1 4 5 3 11 7 9 2 8 10 ] 4841.72 3523.27 + 1141 2284001 511.564 [ 0 6 9 4 5 10 7 11 1 3 8 2 ] 5323.46 3523.27 + 1142 2286001 510.543 [ 0 11 7 3 9 6 5 8 10 4 1 2 ] 4918.85 3523.27 + 1143 2288001 509.524 [ 0 4 11 10 9 2 8 3 7 1 5 6 ] 5171.37 3523.27 + 1144 2290001 508.507 [ 0 5 7 2 6 11 10 8 1 9 3 4 ] 5171.03 3523.27 + 1145 2292001 507.492 [ 0 8 6 3 5 11 1 10 4 7 9 2 ] 4059.34 3523.27 + 1146 2294001 506.479 [ 0 5 11 10 7 3 6 8 4 2 1 9 ] 5160.61 3523.27 + 1147 2296001 505.468 [ 0 7 5 4 9 6 8 10 1 3 11 2 ] 5766.21 3523.27 + 1148 2298001 504.459 [ 0 9 5 3 1 10 6 8 11 7 2 4 ] 4565.7 3523.27 + 1149 2300001 503.452 [ 0 7 3 5 9 4 10 6 11 2 1 8 ] 4705.12 3523.27 + 1150 2302001 502.447 [ 0 10 7 9 3 5 4 1 6 2 8 11 ] 4880.4 3523.27 + 1151 2304001 501.444 [ 0 3 4 8 10 9 5 6 1 7 11 2 ] 5131.37 3523.27 + 1152 2306001 500.443 [ 0 8 2 1 9 5 3 11 10 7 6 4 ] 4389.06 3523.27 + 1153 2308001 499.444 [ 0 8 3 9 1 4 5 6 10 2 11 7 ] 4945.16 3523.27 + 1154 2310001 498.447 [ 0 8 10 5 9 3 1 11 4 2 6 7 ] 4971.35 3523.27 + 1155 2312001 497.453 [ 0 2 7 1 6 8 4 10 9 3 5 11 ] 4552.5 3523.27 + 1156 2314001 496.46 [ 0 11 10 4 5 2 1 8 6 9 7 3 ] 5185.79 3523.27 + 1157 2316001 495.469 [ 0 4 6 8 1 5 3 2 11 9 10 7 ] 5099.88 3523.27 + 1158 2318001 494.48 [ 0 8 5 3 11 10 4 1 9 7 2 6 ] 4010.39 3523.27 + 1159 2320001 493.493 [ 0 7 9 6 2 1 8 3 5 11 10 4 ] 4721.39 3523.27 + 1160 2322001 492.508 [ 0 11 7 6 4 5 9 3 10 1 2 8 ] 5015.9 3523.27 + 1161 2324001 491.525 [ 0 4 10 7 2 9 1 6 3 11 5 8 ] 5043.17 3523.27 + 1162 2326001 490.544 [ 0 9 1 11 5 3 6 2 7 10 8 4 ] 4505.58 3523.27 + 1163 2328001 489.564 [ 0 11 10 6 7 9 5 4 8 2 3 1 ] 5390.16 3523.27 + 1164 2330001 488.587 [ 0 1 9 5 11 2 7 8 6 4 10 3 ] 4888.07 3523.27 + 1165 2332001 487.612 [ 0 2 1 11 6 4 10 9 5 8 3 7 ] 4952.94 3523.27 + 1166 2334001 486.639 [ 0 3 5 9 6 4 10 2 11 1 7 8 ] 4050.53 3523.27 + 1167 2336001 485.667 [ 0 9 7 2 5 8 10 3 11 1 4 6 ] 5263.05 3523.27 + 1168 2338001 484.698 [ 0 8 4 1 2 3 7 10 5 6 11 9 ] 5477.46 3523.27 + 1169 2340001 483.731 [ 0 2 4 9 3 5 10 1 11 7 8 6 ] 4332.38 3523.27 + 1170 2342001 482.765 [ 0 7 1 8 11 9 5 3 10 4 6 2 ] 4458.13 3523.27 + 1171 2344001 481.801 [ 0 2 4 5 7 6 3 8 1 11 10 9 ] 5468.64 3523.27 + 1172 2346001 480.84 [ 0 10 9 1 11 7 6 8 5 3 4 2 ] 4528.52 3523.27 + 1173 2348001 479.88 [ 0 5 3 2 7 9 8 6 11 1 4 10 ] 4280.36 3523.27 + 1174 2350001 478.922 [ 0 5 9 2 6 11 3 1 8 7 10 4 ] 5165.89 3523.27 + 1175 2352001 477.966 [ 0 6 8 11 10 1 7 4 2 3 9 5 ] 4503.01 3523.27 + 1176 2354001 477.012 [ 0 5 7 2 1 6 10 11 8 3 4 9 ] 5732.77 3523.27 + 1177 2356001 476.06 [ 0 3 11 8 6 5 10 2 4 7 9 1 ] 5419.28 3523.27 + 1178 2358001 475.11 [ 0 1 3 10 7 8 11 2 4 6 5 9 ] 5587.89 3523.27 + 1179 2360001 474.162 [ 0 10 1 5 7 2 4 3 6 11 9 8 ] 5595.39 3523.27 + 1180 2362001 473.215 [ 0 6 7 5 10 11 1 3 9 2 4 8 ] 5071.43 3523.27 + 1181 2364001 472.271 [ 0 5 3 6 2 1 9 7 11 4 10 8 ] 3950.38 3523.27 + 1182 2366001 471.328 [ 0 4 1 10 5 3 8 7 6 2 9 11 ] 4884.88 3523.27 + 1183 2368001 470.387 [ 0 8 4 9 1 3 10 11 7 5 6 2 ] 5167.44 3523.27 + 1184 2370001 469.448 [ 0 7 2 6 9 1 3 5 8 10 4 11 ] 4466.27 3523.27 + 1185 2372001 468.511 [ 0 3 8 9 11 4 1 6 7 10 5 2 ] 5460.42 3523.27 + 1186 2374001 467.576 [ 0 6 11 4 5 10 1 8 7 2 9 3 ] 5187.95 3523.27 + 1187 2376001 466.643 [ 0 4 11 2 6 3 9 1 7 5 8 10 ] 4942.57 3523.27 + 1188 2378001 465.711 [ 0 2 1 7 4 10 6 3 8 11 9 5 ] 4722.77 3523.27 + 1189 2380001 464.782 [ 0 3 8 7 4 9 1 10 11 6 5 2 ] 5012.7 3523.27 + 1190 2382001 463.854 [ 0 9 1 3 8 4 10 2 11 5 7 6 ] 5210.95 3523.27 + 1191 2384001 462.928 [ 0 1 2 10 4 11 8 7 6 9 3 5 ] 4613.19 3523.27 + 1192 2386001 462.004 [ 0 9 4 1 5 3 2 7 10 8 11 6 ] 4994.3 3523.27 + 1193 2388001 461.082 [ 0 11 2 4 5 6 8 9 3 7 1 10 ] 5271.76 3523.27 + 1194 2390001 460.162 [ 0 4 10 11 2 5 3 6 9 1 8 7 ] 4408.47 3523.27 + 1195 2392001 459.243 [ 0 10 7 2 3 11 5 8 9 1 6 4 ] 5604.81 3523.27 + 1196 2394001 458.327 [ 0 1 9 4 10 5 3 2 7 8 6 11 ] 4697.35 3523.27 + 1197 2396001 457.412 [ 0 9 5 8 11 6 1 10 4 3 7 2 ] 5104.23 3523.27 + 1198 2398001 456.499 [ 0 11 6 10 1 2 9 8 7 4 5 3 ] 5010.65 3523.27 + 1199 2400001 455.588 [ 0 7 6 10 1 3 4 11 5 2 8 9 ] 5712.4 3523.27 + 1200 2402001 454.678 [ 0 7 3 2 11 10 5 6 4 9 8 1 ] 5828.44 3523.27 + 1201 2404001 453.771 [ 0 1 3 2 6 7 11 9 10 4 5 8 ] 5276.91 3523.27 + 1202 2406001 452.865 [ 0 11 10 5 8 6 4 2 1 3 9 7 ] 5395.09 3523.27 + 1203 2408001 451.961 [ 0 4 5 3 1 7 10 9 2 11 6 8 ] 4921.46 3523.27 + 1204 2410001 451.059 [ 0 1 3 8 6 9 2 7 5 11 10 4 ] 5314.66 3523.27 + 1205 2412001 450.159 [ 0 2 3 7 6 5 1 4 9 11 10 8 ] 5385.29 3523.27 + 1206 2414001 449.26 [ 0 6 10 2 7 5 8 11 9 1 4 3 ] 5233.2 3523.27 + 1207 2416001 448.363 [ 0 7 4 6 8 10 11 1 2 9 5 3 ] 4227.73 3523.27 + 1208 2418001 447.468 [ 0 3 5 6 1 2 4 9 8 10 11 7 ] 4921.76 3523.27 + 1209 2420001 446.575 [ 0 1 6 2 10 4 11 3 5 9 7 8 ] 4508.79 3523.27 + 1210 2422001 445.684 [ 0 10 5 3 9 11 4 8 6 2 7 1 ] 4612.9 3523.27 + 1211 2424001 444.794 [ 0 4 9 2 1 10 6 11 7 3 5 8 ] 4851.82 3523.27 + 1212 2426001 443.907 [ 0 3 11 4 1 7 8 2 9 5 6 10 ] 5012.95 3523.27 + 1213 2428001 443.02 [ 0 3 10 11 8 1 5 6 4 9 2 7 ] 5627.73 3523.27 + 1214 2430001 442.136 [ 0 4 5 6 7 9 11 10 1 3 2 8 ] 5200.98 3523.27 + 1215 2432001 441.254 [ 0 10 9 11 1 5 3 4 8 7 2 6 ] 4825.63 3523.27 + 1216 2434001 440.373 [ 0 8 9 4 6 11 7 10 1 5 3 2 ] 4826.68 3523.27 + 1217 2436001 439.494 [ 0 1 11 4 2 7 5 3 9 8 10 6 ] 4619.08 3523.27 + 1218 2438001 438.617 [ 0 9 1 11 10 2 4 5 3 7 6 8 ] 4485.17 3523.27 + 1219 2440001 437.741 [ 0 5 3 4 10 9 6 1 11 8 2 7 ] 4689.62 3523.27 + 1220 2442001 436.867 [ 0 5 8 2 3 11 9 1 4 10 7 6 ] 4766.09 3523.27 + 1221 2444001 435.996 [ 0 10 1 8 9 3 5 4 6 2 11 7 ] 4778.55 3523.27 + 1222 2446001 435.125 [ 0 10 11 1 8 6 9 4 7 2 5 3 ] 4659.22 3523.27 + 1223 2448001 434.257 [ 0 1 9 3 7 2 8 10 11 5 4 6 ] 5148.14 3523.27 + 1224 2450001 433.39 [ 0 7 10 11 8 6 9 3 5 4 1 2 ] 4624.75 3523.27 + 1225 2452001 432.525 [ 0 8 11 10 2 3 1 7 6 9 4 5 ] 5513.28 3523.27 + 1226 2454001 431.662 [ 0 9 4 10 7 2 3 5 8 6 1 11 ] 4530.06 3523.27 + 1227 2456001 430.8 [ 0 6 2 1 11 10 5 3 9 7 8 4 ] 4381.82 3523.27 + 1228 2458001 429.94 [ 0 3 7 4 10 1 6 9 5 11 8 2 ] 5038.29 3523.27 + 1229 2460001 429.082 [ 0 5 3 11 7 4 6 8 10 1 2 9 ] 4663.06 3523.27 + 1230 2462001 428.225 [ 0 11 5 3 8 4 9 6 10 2 1 7 ] 5242.51 3523.27 + 1231 2464001 427.371 [ 0 3 2 9 8 1 10 4 7 11 5 6 ] 4885.58 3523.27 + 1232 2466001 426.518 [ 0 1 10 4 7 6 9 5 2 8 3 11 ] 5087.1 3490.62 + 1233 2468001 425.666 [ 0 6 5 3 10 1 11 9 4 7 2 8 ] 4462.94 3490.62 + 1234 2470001 424.817 [ 0 2 8 7 9 5 3 10 4 11 1 6 ] 4091.58 3490.62 + 1235 2472001 423.969 [ 0 11 7 1 2 6 8 3 4 10 5 9 ] 4856.31 3490.62 + 1236 2474001 423.123 [ 0 5 3 6 11 2 10 4 1 9 7 8 ] 4244.88 3490.62 + 1237 2476001 422.278 [ 0 1 7 2 11 3 5 9 4 10 8 6 ] 4355.87 3490.62 + 1238 2478001 421.435 [ 0 7 8 3 5 9 10 6 1 4 2 11 ] 5003.8 3490.62 + 1239 2480001 420.594 [ 0 11 1 4 10 3 9 5 8 2 7 6 ] 4521.47 3490.62 + 1240 2482001 419.754 [ 0 8 10 11 1 2 6 9 3 5 7 4 ] 4462.25 3490.62 + 1241 2484001 418.917 [ 0 2 6 10 4 1 5 8 7 11 9 3 ] 4815.65 3490.62 + 1242 2486001 418.08 [ 0 6 10 1 11 9 5 3 8 2 7 4 ] 4183.05 3490.62 + 1243 2488001 417.246 [ 0 8 7 5 9 4 3 2 1 6 10 11 ] 5503.09 3490.62 + 1244 2490001 416.413 [ 0 3 5 6 8 10 4 7 1 9 2 11 ] 4113.45 3490.62 + 1245 2492001 415.582 [ 0 5 3 1 7 10 4 8 9 11 2 6 ] 4404.66 3490.62 + 1246 2494001 414.752 [ 0 8 2 11 4 1 6 10 9 7 3 5 ] 4880.97 3490.62 + 1247 2496001 413.925 [ 0 6 11 8 2 4 10 3 7 9 5 1 ] 5231.07 3490.62 + 1248 2498001 413.098 [ 0 11 7 3 9 10 2 4 6 8 1 5 ] 5529.19 3490.62 + 1249 2500001 412.274 [ 0 1 7 9 3 5 10 11 2 8 4 6 ] 4534.98 3490.62 + 1250 2502001 411.451 [ 0 4 3 5 2 9 8 11 1 10 6 7 ] 4846.9 3490.62 + 1251 2504001 410.63 [ 0 11 9 4 2 5 8 3 7 6 1 10 ] 5748.72 3490.62 + 1252 2506001 409.81 [ 0 4 2 11 1 8 5 3 7 10 6 9 ] 4989.64 3490.62 + 1253 2508001 408.992 [ 0 5 8 7 10 1 3 2 11 4 6 9 ] 5354.84 3490.62 + 1254 2510001 408.176 [ 0 1 4 10 7 2 11 9 8 3 5 6 ] 4456.16 3490.62 + 1255 2512001 407.361 [ 0 7 3 11 8 6 9 5 1 10 4 2 ] 5092.91 3490.62 + 1256 2514001 406.548 [ 0 4 5 11 8 6 3 1 10 9 2 7 ] 5605.43 3490.62 + 1257 2516001 405.736 [ 0 4 7 2 6 8 1 9 5 11 3 10 ] 5317.17 3490.62 + 1258 2518001 404.927 [ 0 11 7 1 3 9 5 6 8 10 4 2 ] 4554.16 3490.62 + 1259 2520001 404.118 [ 0 2 9 5 3 7 8 6 11 1 4 10 ] 4147.9 3490.62 + 1260 2522001 403.312 [ 0 4 10 9 2 8 11 1 7 5 3 6 ] 4300.93 3490.62 + 1261 2524001 402.507 [ 0 2 8 1 11 7 6 4 10 9 3 5 ] 4239.83 3490.62 + 1262 2526001 401.703 [ 0 3 5 8 7 4 10 11 9 1 2 6 ] 4066.6 3490.62 + 1263 2528001 400.902 [ 0 5 3 7 2 6 11 4 10 1 9 8 ] 4173.77 3490.62 + 1264 2530001 400.101 [ 0 9 1 11 2 4 6 10 8 7 5 3 ] 4660.63 3490.62 + 1265 2532001 399.303 [ 0 10 3 6 8 1 2 4 7 5 11 9 ] 5808.99 3490.62 + 1266 2534001 398.506 [ 0 7 2 5 8 1 9 11 4 3 6 10 ] 5304.43 3490.62 + 1267 2536001 397.71 [ 0 2 1 7 5 3 9 4 6 10 11 8 ] 4691.54 3490.62 + 1268 2538001 396.916 [ 0 8 5 10 4 6 9 3 2 1 7 11 ] 4888.46 3490.62 + 1269 2540001 396.124 [ 0 3 1 2 7 11 9 4 5 8 6 10 ] 5499.42 3490.62 + 1270 2542001 395.334 [ 0 10 7 3 4 8 6 5 1 11 9 2 ] 5261.41 3490.62 + 1271 2544001 394.544 [ 0 8 2 1 6 10 9 5 4 11 3 7 ] 5561.77 3490.62 + 1272 2546001 393.757 [ 0 3 8 1 2 9 5 6 11 7 10 4 ] 4797.66 3490.62 + 1273 2548001 392.971 [ 0 2 1 3 6 5 4 7 9 8 10 11 ] 5445.57 3490.62 + 1274 2550001 392.187 [ 0 8 2 11 1 6 10 4 5 3 9 7 ] 4338.86 3490.62 + 1275 2552001 391.404 [ 0 2 8 6 10 7 11 4 1 3 5 9 ] 4393.62 3490.62 + 1276 2554001 390.623 [ 0 6 1 8 9 3 7 10 4 11 2 5 ] 5022.26 3490.62 + 1277 2556001 389.843 [ 0 1 9 5 3 6 4 7 10 2 8 11 ] 4581.45 3490.62 + 1278 2558001 389.065 [ 0 3 1 11 7 4 10 6 8 9 5 2 ] 4578.48 3490.62 + 1279 2560001 388.288 [ 0 11 5 3 6 8 4 10 1 7 9 2 ] 4298.64 3490.62 + 1280 2562001 387.513 [ 0 5 8 6 10 1 4 3 9 7 11 2 ] 4902.68 3490.62 + 1281 2564001 386.74 [ 0 2 10 11 5 3 8 6 9 1 7 4 ] 4537.13 3490.62 + 1282 2566001 385.968 [ 0 7 11 2 5 3 6 10 4 1 9 8 ] 4200.06 3490.62 + 1283 2568001 385.197 [ 0 8 7 3 6 2 4 10 5 1 11 9 ] 5116.89 3490.62 + 1284 2570001 384.428 [ 0 7 5 8 4 10 6 1 3 9 11 2 ] 5268.36 3490.62 + 1285 2572001 383.661 [ 0 2 3 6 11 7 8 10 1 9 4 5 ] 5105.67 3490.62 + 1286 2574001 382.895 [ 0 4 8 7 6 2 3 5 9 1 11 10 ] 4182.12 3490.62 + 1287 2576001 382.131 [ 0 10 1 6 2 4 3 9 7 5 11 8 ] 5526.64 3490.62 + 1288 2578001 381.368 [ 0 7 3 10 1 11 4 9 8 2 6 5 ] 5266.6 3490.62 + 1289 2580001 380.607 [ 0 3 11 10 7 6 4 9 1 2 8 5 ] 5232.35 3490.62 + 1290 2582001 379.847 [ 0 3 9 7 8 10 4 2 11 5 1 6 ] 5165.07 3490.62 + 1291 2584001 379.089 [ 0 8 3 9 7 4 11 5 2 1 10 6 ] 4996.69 3490.62 + 1292 2586001 378.333 [ 0 10 1 11 7 3 5 8 6 2 4 9 ] 4626.18 3490.62 + 1293 2588001 377.577 [ 0 7 5 2 11 8 1 10 9 6 4 3 ] 5753.6 3490.62 + 1294 2590001 376.824 [ 0 1 10 7 8 3 5 11 2 6 4 9 ] 5120.22 3490.62 + 1295 2592001 376.072 [ 0 6 3 8 9 4 1 7 5 10 11 2 ] 5306.31 3490.62 + 1296 2594001 375.321 [ 0 2 9 8 6 4 11 3 5 1 10 7 ] 4816.12 3490.62 + 1297 2596001 374.572 [ 0 8 6 11 3 10 1 5 9 2 4 7 ] 5322.24 3490.62 + 1298 2598001 373.824 [ 0 3 6 8 11 5 1 4 10 9 2 7 ] 5218.98 3490.62 + 1299 2600001 373.078 [ 0 8 3 9 6 2 4 10 7 11 1 5 ] 4631.7 3490.62 + 1300 2602001 372.333 [ 0 9 2 7 10 1 3 11 4 8 6 5 ] 5190.55 3490.62 + 1301 2604001 371.59 [ 0 6 9 5 3 10 11 4 1 7 2 8 ] 4193.33 3490.62 + 1302 2606001 370.849 [ 0 4 10 8 9 5 3 11 1 2 7 6 ] 4266.43 3490.62 + 1303 2608001 370.108 [ 0 11 2 1 7 8 10 4 3 5 9 6 ] 4386.65 3490.62 + 1304 2610001 369.37 [ 0 10 4 1 3 11 6 8 7 2 5 9 ] 5099.31 3490.62 + 1305 2612001 368.632 [ 0 11 9 5 3 4 7 6 1 8 2 10 ] 5066.13 3490.62 + 1306 2614001 367.897 [ 0 6 8 3 5 11 2 7 10 1 9 4 ] 4547.93 3490.62 + 1307 2616001 367.162 [ 0 8 9 5 3 2 4 1 6 11 10 7 ] 4659.4 3490.62 + 1308 2618001 366.429 [ 0 3 2 7 8 10 6 9 11 1 4 5 ] 5201.32 3490.62 + 1309 2620001 365.698 [ 0 10 2 7 11 4 6 1 9 8 3 5 ] 4637.44 3490.62 + 1310 2622001 364.968 [ 0 8 11 2 5 1 10 3 6 7 4 9 ] 5600.7 3490.62 + 1311 2624001 364.24 [ 0 8 4 11 6 10 1 9 7 2 3 5 ] 4342.1 3490.62 + 1312 2626001 363.513 [ 0 8 10 4 5 2 6 9 1 7 11 3 ] 4760.94 3490.62 + 1313 2628001 362.787 [ 0 6 7 11 1 4 10 9 5 3 2 8 ] 3886.54 3490.62 + 1314 2630001 362.063 [ 0 3 2 7 5 10 6 8 9 4 1 11 ] 5445.48 3490.62 + 1315 2632001 361.34 [ 0 8 6 9 3 11 7 4 10 2 5 1 ] 5062.03 3490.62 + 1316 2634001 360.619 [ 0 4 2 7 1 9 11 10 3 5 8 6 ] 4360.63 3490.62 + 1317 2636001 359.899 [ 0 11 10 4 1 5 3 2 7 6 9 8 ] 4579.09 3490.62 + 1318 2638001 359.181 [ 0 3 5 9 8 6 10 2 11 4 7 1 ] 4564.19 3490.62 + 1319 2640001 358.464 [ 0 7 9 8 10 2 5 1 3 11 6 4 ] 5935.26 3490.62 + 1320 2642001 357.748 [ 0 6 7 1 9 8 3 5 2 11 10 4 ] 4141.52 3490.62 + 1321 2644001 357.034 [ 0 6 4 7 11 8 3 10 9 2 1 5 ] 5469.9 3490.62 + 1322 2646001 356.322 [ 0 10 1 9 2 6 11 4 7 8 3 5 ] 4468.21 3490.62 + 1323 2648001 355.61 [ 0 8 5 3 6 7 4 11 10 2 9 1 ] 4466.37 3490.62 + 1324 2650001 354.901 [ 0 8 5 3 1 2 11 10 4 6 7 9 ] 4555.74 3490.62 + 1325 2652001 354.192 [ 0 4 7 10 6 9 3 5 1 8 11 2 ] 4977.64 3490.62 + 1326 2654001 353.485 [ 0 8 11 7 4 10 6 3 5 2 1 9 ] 4232.88 3490.62 + 1327 2656001 352.78 [ 0 1 11 10 2 3 9 7 4 8 6 5 ] 4837.96 3490.62 + 1328 2658001 352.076 [ 0 7 4 2 6 8 11 9 10 1 3 5 ] 4901.09 3490.62 + 1329 2660001 351.373 [ 0 7 11 1 10 3 9 8 5 6 4 2 ] 5001.97 3490.62 + 1330 2662001 350.671 [ 0 10 8 3 5 4 11 9 2 1 7 6 ] 4711.9 3490.62 + 1331 2664001 349.971 [ 0 3 8 5 7 6 2 1 4 9 10 11 ] 5583.01 3490.62 + 1332 2666001 349.273 [ 0 11 2 7 10 5 3 4 1 9 6 8 ] 4695.3 3490.62 + 1333 2668001 348.576 [ 0 1 3 5 6 2 11 9 4 8 10 7 ] 5118.3 3490.62 + 1334 2670001 347.88 [ 0 10 7 2 1 11 9 8 5 3 4 6 ] 4710.65 3490.62 + 1335 2672001 347.186 [ 0 8 2 4 10 5 1 11 6 3 9 7 ] 4907.99 3490.62 + 1336 2674001 346.493 [ 0 5 3 11 10 1 7 8 4 9 6 2 ] 4713.27 3490.62 + 1337 2676001 345.801 [ 0 7 2 8 6 4 5 9 1 11 10 3 ] 4692.81 3490.62 + 1338 2678001 345.111 [ 0 6 3 5 9 4 10 1 8 11 7 2 ] 4118.83 3490.62 + 1339 2680001 344.422 [ 0 8 10 4 1 6 3 5 7 9 2 11 ] 4597.7 3490.62 + 1340 2682001 343.735 [ 0 6 8 3 2 10 11 5 9 7 4 1 ] 5021.17 3490.62 + 1341 2684001 343.048 [ 0 2 9 3 5 6 8 7 10 4 11 1 ] 4038.18 3490.62 + 1342 2686001 342.364 [ 0 8 2 4 5 7 11 3 9 1 10 6 ] 4939.24 3490.62 + 1343 2688001 341.68 [ 0 5 3 9 1 2 10 7 11 4 6 8 ] 4149.49 3490.62 + 1344 2690001 340.998 [ 0 8 3 7 10 9 2 5 11 4 6 1 ] 5705.23 3490.62 + 1345 2692001 340.318 [ 0 10 6 3 9 4 1 5 7 11 2 8 ] 5311.5 3490.62 + 1346 2694001 339.638 [ 0 1 11 7 8 5 4 10 3 9 2 6 ] 4773.48 3490.62 + 1347 2696001 338.961 [ 0 4 1 11 9 10 7 2 6 3 8 5 ] 5087.19 3490.62 + 1348 2698001 338.284 [ 0 5 3 1 8 10 11 9 4 6 7 2 ] 4992.2 3490.62 + 1349 2700001 337.609 [ 0 9 2 3 5 4 8 10 11 7 1 6 ] 4582.24 3490.62 + 1350 2702001 336.935 [ 0 6 5 1 11 2 10 4 7 8 3 9 ] 4790.22 3490.62 + 1351 2704001 336.262 [ 0 11 4 7 2 10 1 6 8 3 5 9 ] 4561.3 3490.62 + 1352 2706001 335.591 [ 0 3 2 10 5 4 7 1 9 11 6 8 ] 5136.45 3490.62 + 1353 2708001 334.921 [ 0 4 10 5 8 11 9 1 7 2 3 6 ] 4737.63 3490.62 + 1354 2710001 334.253 [ 0 10 9 8 7 5 4 6 3 2 11 1 ] 5661.87 3490.62 + 1355 2712001 333.586 [ 0 11 9 3 1 2 7 4 10 6 8 5 ] 4993.79 3490.62 + 1356 2714001 332.92 [ 0 2 8 1 4 10 9 7 3 5 6 11 ] 4773.93 3490.62 + 1357 2716001 332.255 [ 0 6 8 7 9 11 3 5 2 4 10 1 ] 4489.69 3490.62 + 1358 2718001 331.592 [ 0 9 7 10 3 5 4 2 11 1 6 8 ] 4823.63 3490.62 + 1359 2720001 330.93 [ 0 10 7 4 6 3 5 9 2 11 1 8 ] 4396.54 3490.62 + 1360 2722001 330.27 [ 0 10 4 1 5 3 9 6 2 8 7 11 ] 4463.98 3490.62 + 1361 2724001 329.61 [ 0 2 1 9 8 5 3 11 7 10 4 6 ] 4271.24 3490.62 + 1362 2726001 328.953 [ 0 6 4 11 9 1 8 5 3 10 7 2 ] 4564.92 3490.62 + 1363 2728001 328.296 [ 0 5 3 10 6 11 1 8 7 4 9 2 ] 4987.62 3490.62 + 1364 2730001 327.641 [ 0 2 9 8 1 5 3 4 7 11 10 6 ] 4801.95 3490.62 + 1365 2732001 326.987 [ 0 3 5 9 1 4 11 7 8 2 10 6 ] 4093.97 3490.62 + 1366 2734001 326.334 [ 0 8 2 7 1 3 5 11 10 4 6 9 ] 4535.1 3490.62 + 1367 2736001 325.683 [ 0 8 10 9 5 3 4 6 7 11 1 2 ] 4486.24 3490.62 + 1368 2738001 325.033 [ 0 7 5 8 10 4 6 3 1 2 9 11 ] 5347.51 3490.62 + 1369 2740001 324.384 [ 0 10 3 5 7 9 11 1 2 4 8 6 ] 4717.05 3490.62 + 1370 2742001 323.736 [ 0 1 8 4 10 9 5 3 2 11 7 6 ] 4424 3490.62 + 1371 2744001 323.09 [ 0 8 5 10 11 3 2 7 6 4 1 9 ] 5209.44 3490.62 + 1372 2746001 322.445 [ 0 8 10 4 11 7 2 1 9 3 5 6 ] 3760.83 3490.62 + 1373 2748001 321.802 [ 0 2 6 5 3 9 11 1 8 7 10 4 ] 4205.96 3490.62 + 1374 2750001 321.159 [ 0 5 9 3 6 2 1 10 7 8 11 4 ] 4792.91 3490.62 + 1375 2752001 320.518 [ 0 3 5 2 7 10 9 11 6 8 1 4 ] 4894.39 3490.62 + 1376 2754001 319.879 [ 0 2 8 4 10 11 1 7 9 5 3 6 ] 3649.4 3490.62 + 1377 2756001 319.24 [ 0 9 11 1 4 10 7 3 6 2 5 8 ] 4775.05 3490.62 + 1378 2758001 318.603 [ 0 4 11 5 3 2 8 6 7 10 1 9 ] 4535.44 3490.62 + 1379 2760001 317.967 [ 0 11 8 6 2 3 10 4 1 5 9 7 ] 5019.03 3490.62 + 1380 2762001 317.332 [ 0 7 6 3 5 10 4 11 2 9 1 8 ] 4392.78 3490.62 + 1381 2764001 316.699 [ 0 7 6 2 9 1 11 10 4 8 5 3 ] 3990.94 3490.62 + 1382 2766001 316.067 [ 0 2 6 8 3 7 10 4 5 9 1 11 ] 4499.99 3490.62 + 1383 2768001 315.436 [ 0 5 3 6 9 1 4 11 10 7 8 2 ] 4294.48 3490.62 + 1384 2770001 314.806 [ 0 4 3 2 6 9 1 11 8 5 7 10 ] 5247.31 3490.62 + 1385 2772001 314.178 [ 0 7 1 11 8 10 4 2 6 5 9 3 ] 4431.12 3490.62 + 1386 2774001 313.551 [ 0 4 9 7 1 8 6 5 3 10 11 2 ] 4789.49 3490.62 + 1387 2776001 312.925 [ 0 10 4 7 11 9 5 3 1 2 6 8 ] 4174.58 3490.62 + 1388 2778001 312.3 [ 0 4 10 6 7 1 8 5 3 9 2 11 ] 4536.83 3490.62 + 1389 2780001 311.677 [ 0 6 10 11 1 8 9 3 5 2 7 4 ] 4442.05 3490.62 + 1390 2782001 311.055 [ 0 4 10 3 5 1 11 6 8 2 9 7 ] 4522.89 3490.62 + 1391 2784001 310.434 [ 0 10 7 3 5 9 1 11 8 4 2 6 ] 4244.93 3490.62 + 1392 2786001 309.814 [ 0 5 3 11 2 10 4 9 7 8 6 1 ] 4920.94 3490.62 + 1393 2788001 309.196 [ 0 1 11 9 3 6 8 2 7 5 10 4 ] 4867.14 3490.62 + 1394 2790001 308.579 [ 0 4 10 2 1 9 3 5 11 8 7 6 ] 4414.44 3490.62 + 1395 2792001 307.963 [ 0 3 2 9 11 8 10 4 5 7 1 6 ] 5103.44 3490.62 + 1396 2794001 307.348 [ 0 8 5 3 9 2 6 7 1 4 10 11 ] 4108.01 3490.62 + 1397 2796001 306.735 [ 0 6 7 2 3 4 10 1 9 5 8 11 ] 4621.18 3490.62 + 1398 2798001 306.123 [ 0 9 3 5 8 2 7 11 1 10 4 6 ] 3858.54 3490.62 + 1399 2800001 305.512 [ 0 7 2 9 5 4 6 3 1 11 10 8 ] 4904.13 3490.62 + 1400 2802001 304.902 [ 0 2 9 8 4 5 3 10 7 11 1 6 ] 4686.33 3490.62 + 1401 2804001 304.293 [ 0 11 10 4 2 8 5 6 9 7 1 3 ] 4977.07 3490.62 + 1402 2806001 303.686 [ 0 9 1 10 4 5 3 6 7 2 8 11 ] 4392.78 3490.62 + 1403 2808001 303.08 [ 0 1 4 5 3 11 8 9 6 2 10 7 ] 5291.35 3490.62 + 1404 2810001 302.475 [ 0 2 3 9 4 1 11 7 10 6 5 8 ] 4834.77 3490.62 + 1405 2812001 301.871 [ 0 2 8 10 1 4 11 7 5 3 9 6 ] 4316.11 3490.62 + 1406 2814001 301.268 [ 0 7 9 3 6 11 1 8 2 5 10 4 ] 4961.14 3490.62 + 1407 2816001 300.667 [ 0 1 6 9 5 3 11 7 10 8 4 2 ] 4864.34 3490.62 + 1408 2818001 300.067 [ 0 9 1 3 5 7 10 6 11 8 4 2 ] 4988.7 3490.62 + 1409 2820001 299.468 [ 0 9 5 6 8 4 3 10 2 11 1 7 ] 5067.57 3490.62 + 1410 2822001 298.87 [ 0 6 4 11 1 10 7 2 5 3 9 8 ] 4140.56 3490.62 + 1411 2824001 298.274 [ 0 2 4 8 6 1 10 5 9 11 3 7 ] 5400.05 3490.62 + 1412 2826001 297.678 [ 0 8 6 5 11 1 4 10 7 9 3 2 ] 4517.75 3490.62 + 1413 2828001 297.084 [ 0 7 4 10 8 1 6 11 9 2 3 5 ] 4762.06 3490.62 + 1414 2830001 296.491 [ 0 6 3 5 8 10 4 2 9 1 7 11 ] 4048.42 3490.62 + 1415 2832001 295.899 [ 0 7 3 5 2 1 10 9 8 11 6 4 ] 5192.56 3490.62 + 1416 2834001 295.309 [ 0 2 3 5 8 7 11 1 9 10 4 6 ] 4013.55 3490.62 + 1417 2836001 294.719 [ 0 3 5 2 9 4 1 11 7 10 6 8 ] 4379.35 3490.62 + 1418 2838001 294.131 [ 0 5 9 1 10 4 8 7 3 6 11 2 ] 4583.82 3490.62 + 1419 2840001 293.544 [ 0 5 2 11 10 7 8 6 4 1 9 3 ] 4713.57 3490.62 + 1420 2842001 292.958 [ 0 6 11 9 7 3 5 8 1 2 4 10 ] 4736.62 3490.62 + 1421 2844001 292.373 [ 0 2 4 10 8 3 5 6 7 11 9 1 ] 4328.53 3490.62 + 1422 2846001 291.79 [ 0 1 2 3 5 9 7 8 11 4 6 10 ] 4789.8 3490.62 + 1423 2848001 291.207 [ 0 4 6 3 9 7 11 1 10 8 2 5 ] 4710.05 3490.62 + 1424 2850001 290.626 [ 0 7 2 3 8 4 1 11 6 5 10 9 ] 5400.54 3490.62 + 1425 2852001 290.046 [ 0 5 3 11 1 8 6 9 7 10 2 4 ] 4837.23 3490.62 + 1426 2854001 289.467 [ 0 10 11 8 4 5 9 1 2 3 6 7 ] 5030.82 3490.62 + 1427 2856001 288.889 [ 0 5 2 8 9 7 11 4 1 3 6 10 ] 5242.14 3490.62 + 1428 2858001 288.313 [ 0 6 9 7 2 5 4 11 10 3 8 1 ] 5436.17 3490.62 + 1429 2860001 287.737 [ 0 10 3 9 2 7 6 4 8 11 5 1 ] 5752.45 3490.62 + 1430 2862001 287.163 [ 0 7 9 4 10 6 2 1 3 5 8 11 ] 4919.27 3490.62 + 1431 2864001 286.59 [ 0 1 8 4 10 7 11 6 2 9 5 3 ] 4328.36 3490.62 + 1432 2866001 286.018 [ 0 7 4 6 10 5 3 8 2 11 1 9 ] 4650.69 3490.62 + 1433 2868001 285.447 [ 0 6 3 7 9 1 5 11 8 4 10 2 ] 5033.86 3490.62 + 1434 2870001 284.877 [ 0 8 1 2 5 3 9 10 4 11 7 6 ] 4274.84 3490.62 + 1435 2872001 284.308 [ 0 3 5 9 1 6 7 11 8 4 10 2 ] 4146.03 3490.62 + 1436 2874001 283.741 [ 0 2 6 11 1 9 5 3 8 4 10 7 ] 3923.58 3490.62 + 1437 2876001 283.175 [ 0 11 1 10 8 2 7 9 4 5 6 3 ] 5119.29 3490.62 + 1438 2878001 282.609 [ 0 3 9 1 7 8 5 4 2 6 11 10 ] 4984.26 3490.62 + 1439 2880001 282.045 [ 0 9 10 7 8 2 5 3 6 4 1 11 ] 4763.42 3490.62 + 1440 2882001 281.482 [ 0 8 5 3 9 2 11 1 4 10 7 6 ] 3964.75 3490.62 + 1441 2884001 280.92 [ 0 11 10 1 7 8 4 2 6 3 5 9 ] 4380.05 3490.62 + 1442 2886001 280.36 [ 0 2 1 7 6 4 8 10 3 5 9 11 ] 4744.52 3490.62 + 1443 2888001 279.8 [ 0 5 1 7 9 2 8 10 4 11 3 6 ] 4843.32 3490.62 + 1444 2890001 279.242 [ 0 1 3 5 8 2 10 7 9 4 11 6 ] 5009.51 3490.62 + 1445 2892001 278.684 [ 0 7 10 11 9 3 5 4 6 8 1 2 ] 4676.06 3490.62 + 1446 2894001 278.128 [ 0 6 11 3 5 8 7 2 1 10 4 9 ] 4684.3 3490.62 + 1447 2896001 277.573 [ 0 4 10 7 11 6 3 1 8 2 5 9 ] 4970.12 3490.62 + 1448 2898001 277.019 [ 0 6 4 1 10 2 8 3 11 7 9 5 ] 4847.58 3490.62 + 1449 2900001 276.466 [ 0 8 6 3 5 4 10 11 1 7 2 9 ] 3984.14 3490.62 + 1450 2902001 275.914 [ 0 6 2 9 8 4 1 7 10 3 5 11 ] 4873.36 3490.62 + 1451 2904001 275.363 [ 0 2 7 10 5 3 4 1 6 8 9 11 ] 5054.76 3490.62 + 1452 2906001 274.814 [ 0 8 5 9 10 2 1 3 7 11 4 6 ] 5143.11 3490.62 + 1453 2908001 274.265 [ 0 6 8 10 3 5 4 2 1 9 11 7 ] 4623.18 3490.62 + 1454 2910001 273.718 [ 0 11 3 4 7 1 2 9 5 10 8 6 ] 5241.29 3490.62 + 1455 2912001 273.171 [ 0 9 7 6 1 11 3 5 2 10 4 8 ] 4589.01 3490.62 + 1456 2914001 272.626 [ 0 8 2 3 5 11 6 7 4 9 1 10 ] 4799.87 3490.62 + 1457 2916001 272.082 [ 0 11 1 9 10 7 4 2 6 5 3 8 ] 4467.7 3490.62 + 1458 2918001 271.539 [ 0 10 11 7 6 2 5 3 9 1 8 4 ] 4411.8 3490.62 + 1459 2920001 270.997 [ 0 7 11 2 9 4 1 6 8 10 5 3 ] 4914.54 3490.62 + 1460 2922001 270.456 [ 0 6 3 5 9 2 4 10 1 7 11 8 ] 3811.83 3490.62 + 1461 2924001 269.916 [ 0 8 3 5 2 7 10 1 9 4 6 11 ] 4649.46 3490.62 + 1462 2926001 269.377 [ 0 3 2 9 1 11 7 6 4 5 8 10 ] 4958.61 3490.62 + 1463 2928001 268.84 [ 0 6 5 11 9 10 2 4 3 8 1 7 ] 5660.31 3490.62 + 1464 2930001 268.303 [ 0 11 4 10 7 2 6 5 3 1 9 8 ] 4287.66 3490.62 + 1465 2932001 267.768 [ 0 2 8 7 11 6 10 4 9 1 3 5 ] 4471.22 3490.62 + 1466 2934001 267.233 [ 0 7 9 3 5 2 10 4 1 11 8 6 ] 4059.76 3490.62 + 1467 2936001 266.7 [ 0 6 9 4 1 7 11 8 3 5 10 2 ] 4796.44 3490.62 + 1468 2938001 266.167 [ 0 2 9 6 3 5 4 10 11 8 7 1 ] 4519.42 3490.62 + 1469 2940001 265.636 [ 0 10 4 7 11 8 2 6 9 1 5 3 ] 4344.81 3490.62 + 1470 2942001 265.106 [ 0 1 11 6 2 4 10 7 3 5 9 8 ] 4348.33 3490.62 + 1471 2944001 264.577 [ 0 11 7 2 8 6 9 3 5 10 4 1 ] 4421.25 3490.62 + 1472 2946001 264.049 [ 0 6 5 3 2 4 10 8 1 11 9 7 ] 4324.74 3490.62 + 1473 2948001 263.522 [ 0 1 11 10 3 5 9 2 7 4 6 8 ] 4308.96 3490.62 + 1474 2950001 262.996 [ 0 11 1 7 10 9 5 3 4 8 2 6 ] 4390.25 3490.62 + 1475 2952001 262.471 [ 0 8 6 5 3 4 1 11 2 9 10 7 ] 4593.04 3490.62 + 1476 2954001 261.947 [ 0 4 1 10 6 7 11 2 8 3 5 9 ] 4468.91 3490.62 + 1477 2956001 261.424 [ 0 1 2 3 5 10 8 7 9 4 11 6 ] 5064.41 3490.62 + 1478 2958001 260.902 [ 0 8 3 5 9 6 1 10 11 7 2 4 ] 4377.34 3490.62 + 1479 2960001 260.381 [ 0 6 8 10 7 1 9 11 2 4 3 5 ] 4418.88 3490.62 + 1480 2962001 259.862 [ 0 7 5 2 10 1 4 6 11 8 3 9 ] 5410.35 3490.62 + 1481 2964001 259.343 [ 0 9 6 11 4 1 7 5 10 8 3 2 ] 5467.63 3490.62 + 1482 2966001 258.825 [ 0 8 6 9 3 5 1 2 10 4 7 11 ] 4394.57 3490.62 + 1483 2968001 258.309 [ 0 2 1 11 4 8 9 5 10 6 7 3 ] 5142.14 3490.62 + 1484 2970001 257.793 [ 0 4 10 11 1 7 2 8 3 5 9 6 ] 3806.76 3490.62 + 1485 2972001 257.279 [ 0 4 10 2 3 9 5 8 7 11 1 6 ] 4474.19 3490.62 + 1486 2974001 256.765 [ 0 9 3 5 7 1 11 2 8 4 10 6 ] 4131.37 3490.62 + 1487 2976001 256.252 [ 0 2 5 3 6 8 9 1 7 11 4 10 ] 3984.47 3490.62 + 1488 2978001 255.741 [ 0 11 8 7 2 4 1 9 10 6 3 5 ] 4791.13 3490.62 + 1489 2980001 255.231 [ 0 10 8 5 3 9 7 11 4 2 6 1 ] 4743.49 3490.62 + 1490 2982001 254.721 [ 0 6 1 2 7 8 9 4 11 10 5 3 ] 4901.88 3490.62 + 1491 2984001 254.213 [ 0 10 4 1 5 9 3 2 11 7 8 6 ] 4515.06 3490.62 + 1492 2986001 253.705 [ 0 9 7 2 5 3 6 8 4 10 1 11 ] 4143.16 3490.62 + 1493 2988001 253.199 [ 0 2 4 8 7 10 1 9 11 5 3 6 ] 4487.08 3490.62 + 1494 2990001 252.693 [ 0 8 1 9 2 11 10 7 5 4 6 3 ] 5108.62 3490.62 + 1495 2992001 252.189 [ 0 8 1 4 2 7 6 10 9 5 3 11 ] 4968.02 3490.62 + 1496 2994001 251.686 [ 0 8 1 10 4 7 9 2 6 11 3 5 ] 4494.44 3490.62 + 1497 2996001 251.183 [ 0 6 4 10 8 3 5 9 7 2 11 1 ] 4085.46 3490.62 + 1498 2998001 250.682 [ 0 9 5 2 10 1 4 7 6 8 11 3 ] 5153.4 3490.62 + 1499 3000001 250.182 [ 0 4 10 11 9 3 6 7 8 1 5 2 ] 5006.06 3490.62 + 1500 3002001 249.682 [ 0 7 6 2 8 11 9 3 5 4 10 1 ] 4533.48 3490.62 + 1501 3004001 249.184 [ 0 6 11 5 3 4 1 7 9 2 10 8 ] 4795.03 3490.62 + 1502 3006001 248.687 [ 0 4 8 7 1 11 10 2 6 9 5 3 ] 4268.37 3490.62 + 1503 3008001 248.19 [ 0 11 10 6 2 5 9 1 4 3 7 8 ] 4972.19 3490.62 + 1504 3010001 247.695 [ 0 4 11 9 7 1 5 3 10 2 6 8 ] 4721.01 3490.62 + 1505 3012001 247.2 [ 0 1 9 5 7 10 4 8 11 2 3 6 ] 4688.17 3490.62 + 1506 3014001 246.707 [ 0 7 11 2 1 9 6 3 4 10 8 5 ] 4889.94 3490.62 + 1507 3016001 246.215 [ 0 6 3 5 8 10 7 2 4 9 1 11 ] 4457.41 3490.62 + 1508 3018001 245.723 [ 0 2 1 4 11 7 10 6 8 5 3 9 ] 4413.38 3490.62 + 1509 3020001 245.233 [ 0 1 11 2 10 7 4 3 6 9 5 8 ] 5101.68 3490.62 + 1510 3022001 244.743 [ 0 6 4 9 5 3 8 7 11 10 1 2 ] 4304.06 3490.62 + 1511 3024001 244.255 [ 0 1 4 3 2 8 5 9 10 7 6 11 ] 5524.61 3490.62 + 1512 3026001 243.767 [ 0 9 6 4 10 11 7 8 5 3 2 1 ] 4556.65 3490.62 + 1513 3028001 243.281 [ 0 5 3 6 2 7 4 1 11 10 9 8 ] 4423.39 3490.62 + 1514 3030001 242.795 [ 0 7 10 5 3 6 8 2 1 4 9 11 ] 4968.24 3490.62 + 1515 3032001 242.31 [ 0 8 6 11 10 1 9 2 7 5 3 4 ] 4450.23 3490.62 + 1516 3034001 241.827 [ 0 1 7 11 3 4 10 9 8 2 6 5 ] 5213.51 3490.62 + 1517 3036001 241.344 [ 0 5 3 1 6 9 10 11 7 2 4 8 ] 4857.01 3490.62 + 1518 3038001 240.862 [ 0 6 9 5 2 1 10 4 8 3 7 11 ] 4717.25 3490.62 + 1519 3040001 240.381 [ 0 2 6 7 1 10 4 11 9 5 3 8 ] 3923.33 3490.62 + 1520 3042001 239.902 [ 0 3 5 2 1 10 4 9 11 8 7 6 ] 4522.83 3490.62 + 1521 3044001 239.423 [ 0 10 11 7 3 5 9 1 4 8 2 6 ] 4074.05 3490.62 + 1522 3046001 238.945 [ 0 3 6 7 4 10 11 2 5 9 1 8 ] 4492.24 3490.62 + 1523 3048001 238.468 [ 0 11 10 1 7 4 2 8 6 3 5 9 ] 4273.8 3490.62 + 1524 3050001 237.992 [ 0 3 10 4 11 8 6 7 5 2 1 9 ] 5017.73 3490.62 + 1525 3052001 237.517 [ 0 8 7 9 1 11 2 6 4 10 3 5 ] 4129.63 3490.62 + 1526 3054001 237.043 [ 0 8 9 11 5 3 4 10 2 1 7 6 ] 4650.75 3490.62 + 1527 3056001 236.57 [ 0 6 7 2 10 9 3 11 1 4 8 5 ] 5111.24 3490.62 + 1528 3058001 236.098 [ 0 8 10 7 9 4 5 3 2 1 11 6 ] 4687.6 3490.62 + 1529 3060001 235.626 [ 0 3 5 4 6 1 9 7 8 10 2 11 ] 4916.91 3490.62 + 1530 3062001 235.156 [ 0 2 4 10 9 1 7 6 3 5 8 11 ] 4457.01 3490.62 + 1531 3064001 234.687 [ 0 4 8 6 2 10 11 1 3 5 9 7 ] 4368.46 3490.62 + 1532 3066001 234.218 [ 0 6 1 7 11 10 4 8 9 2 5 3 ] 4184.67 3490.62 + 1533 3068001 233.751 [ 0 3 5 4 10 7 9 1 2 11 8 6 ] 4195.48 3490.62 + 1534 3070001 233.284 [ 0 5 7 2 3 10 1 4 11 9 8 6 ] 5122.08 3490.62 + 1535 3072001 232.818 [ 0 8 3 5 10 1 11 7 4 9 2 6 ] 4384.22 3490.62 + 1536 3074001 232.354 [ 0 7 11 6 1 10 4 8 2 9 3 5 ] 4276.21 3490.62 + 1537 3076001 231.89 [ 0 6 10 7 4 5 3 1 9 11 2 8 ] 4609.46 3490.62 + 1538 3078001 231.427 [ 0 3 5 4 2 9 1 8 6 10 11 7 ] 4524.62 3490.62 + 1539 3080001 230.965 [ 0 8 2 10 11 6 7 9 3 5 1 4 ] 4673.61 3490.62 + 1540 3082001 230.504 [ 0 1 9 11 2 3 7 4 10 8 6 5 ] 4877.41 3490.62 + 1541 3084001 230.044 [ 0 1 11 6 10 4 5 3 9 2 7 8 ] 4375.25 3490.62 + 1542 3086001 229.585 [ 0 5 9 3 8 1 11 6 10 4 7 2 ] 4587.25 3490.62 + 1543 3088001 229.127 [ 0 10 1 9 6 8 4 7 2 3 5 11 ] 4666.72 3490.62 + 1544 3090001 228.669 [ 0 11 1 5 3 8 6 9 2 10 7 4 ] 4781.16 3490.62 + 1545 3092001 228.213 [ 0 9 1 7 11 10 4 6 8 5 2 3 ] 4450.72 3490.62 + 1546 3094001 227.757 [ 0 8 11 7 5 3 9 10 1 6 2 4 ] 4770.96 3490.62 + 1547 3096001 227.303 [ 0 4 2 6 7 3 5 9 8 10 1 11 ] 4607.48 3490.62 + 1548 3098001 226.849 [ 0 6 7 11 3 5 9 2 8 4 1 10 ] 4373.94 3490.62 + 1549 3100001 226.396 [ 0 7 11 1 5 3 9 2 4 10 6 8 ] 4108.37 3490.62 + 1550 3102001 225.944 [ 0 7 8 3 5 4 6 2 9 1 11 10 ] 4461.8 3490.62 + 1551 3104001 225.493 [ 0 10 8 11 4 2 5 3 6 9 1 7 ] 4635 3490.62 + 1552 3106001 225.043 [ 0 10 2 9 5 3 8 6 7 4 11 1 ] 4455.96 3490.62 + 1553 3108001 224.594 [ 0 9 1 10 3 5 6 4 2 8 7 11 ] 4640.54 3490.62 + 1554 3110001 224.146 [ 0 6 8 4 7 1 2 10 11 9 5 3 ] 4207.14 3490.62 + 1555 3112001 223.698 [ 0 10 4 11 7 3 2 9 1 8 5 6 ] 4686.82 3490.62 + 1556 3114001 223.252 [ 0 8 11 10 6 5 3 2 9 1 4 7 ] 4419.39 3490.62 + 1557 3116001 222.806 [ 0 11 1 7 10 4 3 8 9 5 2 6 ] 4614.79 3490.62 + 1558 3118001 222.362 [ 0 5 1 9 3 7 11 10 4 2 6 8 ] 4471.86 3490.62 + 1559 3120001 221.918 [ 0 6 9 1 7 2 8 4 10 5 3 11 ] 4400.47 3490.62 + 1560 3122001 221.475 [ 0 10 4 9 3 5 8 6 2 7 1 11 ] 4186.77 3490.62 + 1561 3124001 221.033 [ 0 7 9 1 11 10 4 3 5 2 8 6 ] 3899.46 3490.62 + 1562 3126001 220.592 [ 0 6 7 3 5 9 4 10 2 1 8 11 ] 4717.1 3490.62 + 1563 3128001 220.151 [ 0 10 8 1 9 3 4 11 7 6 2 5 ] 5032.14 3490.62 + 1564 3130001 219.712 [ 0 1 10 4 8 5 2 6 9 7 11 3 ] 5008.08 3490.62 + 1565 3132001 219.273 [ 0 6 3 5 9 2 8 11 1 4 10 7 ] 3926.65 3490.62 + 1566 3134001 218.836 [ 0 5 3 1 7 2 6 9 11 10 4 8 ] 4288.11 3490.62 + 1567 3136001 218.399 [ 0 10 1 5 3 2 9 7 11 4 6 8 ] 4456.5 3490.62 + 1568 3138001 217.963 [ 0 9 8 5 3 2 10 4 11 1 7 6 ] 4241.01 3490.62 + 1569 3140001 217.528 [ 0 11 9 10 4 6 1 7 2 5 3 8 ] 4622.94 3490.62 + 1570 3142001 217.094 [ 0 10 11 1 9 8 4 6 2 7 3 5 ] 4409.52 3490.62 + 1571 3144001 216.66 [ 0 6 9 5 10 4 1 8 7 11 3 2 ] 4928.27 3490.62 + 1572 3146001 216.228 [ 0 2 3 7 8 9 1 4 10 11 5 6 ] 4804.31 3490.62 + 1573 3148001 215.796 [ 0 6 7 4 3 10 5 9 2 11 1 8 ] 5187.14 3490.62 + 1574 3150001 215.366 [ 0 10 11 7 1 4 2 8 3 5 9 6 ] 4230.18 3490.62 + 1575 3152001 214.936 [ 0 2 3 5 9 11 1 8 7 6 10 4 ] 4292.37 3490.62 + 1576 3154001 214.507 [ 0 4 10 11 1 9 2 8 3 6 5 7 ] 4560.11 3490.62 + 1577 3156001 214.079 [ 0 2 1 11 7 6 10 4 5 8 9 3 ] 4785.7 3490.62 + 1578 3158001 213.651 [ 0 5 7 11 6 8 2 4 10 1 9 3 ] 4493.6 3490.62 + 1579 3160001 213.225 [ 0 10 11 1 9 7 3 5 4 6 8 2 ] 4359.59 3490.62 + 1580 3162001 212.799 [ 0 5 3 7 6 9 10 2 1 11 8 4 ] 5011.85 3490.62 + 1581 3164001 212.374 [ 0 6 5 3 8 1 11 4 7 10 9 2 ] 4510.15 3490.62 + 1582 3166001 211.951 [ 0 5 7 2 3 9 6 1 11 10 4 8 ] 4690.4 3490.62 + 1583 3168001 211.527 [ 0 9 5 3 6 10 1 4 11 7 8 2 ] 4263.57 3490.62 + 1584 3170001 211.105 [ 0 10 4 6 11 7 2 3 1 9 5 8 ] 4638.9 3490.62 + 1585 3172001 210.684 [ 0 3 5 9 1 4 11 8 2 6 10 7 ] 4281.59 3490.62 + 1586 3174001 210.263 [ 0 8 6 1 2 9 7 5 3 4 10 11 ] 4582.28 3490.62 + 1587 3176001 209.844 [ 0 7 2 11 4 1 3 5 9 6 8 10 ] 4636.55 3490.62 + 1588 3178001 209.425 [ 0 6 4 10 11 7 1 9 5 3 2 8 ] 3564.8 3490.62 + 1589 3180001 209.007 [ 0 4 2 9 8 6 3 5 11 7 10 1 ] 4794.27 3490.62 + 1590 3182001 208.59 [ 0 9 2 1 11 4 10 7 5 3 8 6 ] 4171.2 3490.62 + 1591 3184001 208.173 [ 0 8 9 4 6 7 11 10 1 2 3 5 ] 4628.4 3490.62 + 1592 3186001 207.758 [ 0 2 6 8 7 9 5 3 11 1 4 10 ] 4094.3 3490.62 + 1593 3188001 207.343 [ 0 1 11 7 8 2 4 10 3 6 9 5 ] 4765.96 3490.62 + 1594 3190001 206.929 [ 0 7 2 5 1 9 4 11 10 6 8 3 ] 5095.99 3490.62 + 1595 3192001 206.516 [ 0 3 2 6 8 9 7 4 11 1 10 5 ] 4913.22 3490.62 + 1596 3194001 206.104 [ 0 9 4 6 2 1 10 7 11 5 3 8 ] 4810.36 3490.62 + 1597 3196001 205.693 [ 0 1 7 8 11 4 5 2 10 3 6 9 ] 5657.73 3490.62 + 1598 3198001 205.282 [ 0 8 10 4 7 6 11 1 9 2 5 3 ] 4098.94 3490.62 + 1599 3200001 204.872 [ 0 6 1 2 8 11 7 10 4 3 5 9 ] 4349.68 3490.62 + 1600 3202001 204.463 [ 0 3 5 2 9 10 1 7 8 6 11 4 ] 4617.84 3490.62 + 1601 3204001 204.055 [ 0 8 11 9 1 7 10 4 2 6 5 3 ] 4096.4 3490.62 + 1602 3206001 203.648 [ 0 9 1 11 4 6 7 10 5 3 2 8 ] 4426.02 3490.62 + 1603 3208001 203.241 [ 0 2 11 8 7 5 9 1 3 10 4 6 ] 4904.52 3490.62 + 1604 3210001 202.836 [ 0 1 5 3 4 11 10 2 6 8 9 7 ] 4944.75 3490.62 + 1605 3212001 202.431 [ 0 6 2 11 1 4 10 8 7 9 5 3 ] 3909.86 3490.62 + 1606 3214001 202.027 [ 0 6 8 3 5 9 2 11 10 1 7 4 ] 4084.88 3490.62 + 1607 3216001 201.624 [ 0 6 8 9 1 5 3 2 4 10 7 11 ] 4254.94 3490.62 + 1608 3218001 201.221 [ 0 5 3 6 10 4 7 8 9 1 11 2 ] 4148.05 3490.62 + 1609 3220001 200.82 [ 0 4 8 10 11 1 7 6 9 5 3 2 ] 4275.4 3490.62 + 1610 3222001 200.419 [ 0 9 11 8 1 3 5 7 4 2 6 10 ] 5290.02 3490.62 + 1611 3224001 200.019 [ 0 3 5 2 8 11 10 6 7 1 9 4 ] 4608.31 3490.62 + 1612 3226001 199.619 [ 0 7 9 2 1 4 10 11 8 6 3 5 ] 4258.65 3490.62 + 1613 3228001 199.221 [ 0 4 1 10 11 7 9 3 5 8 6 2 ] 4148.21 3490.62 + 1614 3230001 198.823 [ 0 9 10 4 7 1 11 2 6 5 3 8 ] 4248.99 3490.62 + 1615 3232001 198.427 [ 0 4 10 11 1 9 5 2 8 7 6 3 ] 4307.4 3490.62 + 1616 3234001 198.03 [ 0 2 5 3 1 10 11 7 6 9 4 8 ] 4687.85 3490.62 + 1617 3236001 197.635 [ 0 11 7 10 1 6 2 4 9 5 3 8 ] 4587.45 3490.62 + 1618 3238001 197.241 [ 0 4 3 5 2 7 6 9 11 1 10 8 ] 4635.34 3490.62 + 1619 3240001 196.847 [ 0 8 7 4 11 1 10 3 5 9 2 6 ] 4117.74 3490.62 + 1620 3242001 196.454 [ 0 10 11 1 2 7 5 3 4 8 6 9 ] 4741.86 3490.62 + 1621 3244001 196.062 [ 0 6 8 11 1 9 3 5 2 7 4 10 ] 3843.69 3490.62 + 1622 3246001 195.671 [ 0 4 11 1 10 7 3 5 9 8 2 6 ] 4206.01 3490.62 + 1623 3248001 195.28 [ 0 4 10 7 2 3 5 1 11 8 9 6 ] 4446.71 3490.62 + 1624 3250001 194.89 [ 0 1 5 3 9 10 4 11 7 8 6 2 ] 4390.35 3490.62 + 1625 3252001 194.501 [ 0 6 11 5 3 9 1 4 2 7 8 10 ] 4615.26 3490.62 + 1626 3254001 194.113 [ 0 8 7 2 11 9 1 4 10 6 3 5 ] 4160.97 3490.62 + 1627 3256001 193.726 [ 0 10 7 2 8 11 1 9 4 5 3 6 ] 4481.6 3490.62 + 1628 3258001 193.339 [ 0 9 10 4 11 6 7 5 1 8 2 3 ] 5451.03 3490.62 + 1629 3260001 192.953 [ 0 9 7 11 1 2 5 3 6 4 10 8 ] 4169.01 3490.62 + 1630 3262001 192.568 [ 0 9 7 11 8 6 1 10 4 3 5 2 ] 4450.3 3490.62 + 1631 3264001 192.184 [ 0 10 4 6 9 7 8 11 5 3 1 2 ] 4919.27 3490.62 + 1632 3266001 191.8 [ 0 4 2 10 6 9 3 8 5 1 11 7 ] 5245.67 3490.62 + 1633 3268001 191.417 [ 0 9 1 7 11 8 10 2 6 5 4 3 ] 5147.77 3490.62 + 1634 3270001 191.035 [ 0 3 5 9 1 7 11 10 4 2 8 6 ] 3550.6 3490.62 + 1635 3272001 190.654 [ 0 2 6 3 5 9 1 7 11 10 8 4 ] 3991.32 3490.62 + 1636 3274001 190.273 [ 0 6 7 11 2 8 9 1 10 4 3 5 ] 4135.15 3490.62 + 1637 3276001 189.893 [ 0 10 6 3 5 9 11 2 4 1 8 7 ] 4807.72 3490.62 + 1638 3278001 189.514 [ 0 10 4 1 2 5 6 8 7 11 3 9 ] 4898.99 3490.62 + 1639 3280001 189.136 [ 0 6 5 7 2 11 10 4 8 9 1 3 ] 4777.2 3490.62 + 1640 3282001 188.759 [ 0 6 2 9 11 7 10 3 4 1 5 8 ] 5241.05 3490.62 + 1641 3284001 188.382 [ 0 11 3 5 4 10 1 9 8 2 7 6 ] 4425.27 3490.62 + 1642 3286001 188.006 [ 0 2 10 4 11 7 6 8 1 9 3 5 ] 4012.32 3490.62 + 1643 3288001 187.631 [ 0 1 9 5 6 2 7 4 10 8 3 11 ] 4832.08 3490.62 + 1644 3290001 187.256 [ 0 2 11 10 1 4 7 9 3 5 6 8 ] 4150.82 3490.62 + 1645 3292001 186.882 [ 0 3 5 6 11 7 1 9 10 4 8 2 ] 4136.69 3490.62 + 1646 3294001 186.509 [ 0 11 7 4 5 3 8 2 9 1 10 6 ] 4406.28 3490.62 + 1647 3296001 186.137 [ 0 8 6 5 3 9 7 10 4 11 2 1 ] 4195.91 3490.62 + 1648 3298001 185.765 [ 0 10 1 11 7 4 6 2 5 9 3 8 ] 4522.1 3490.62 + 1649 3300001 185.395 [ 0 10 11 8 2 6 7 1 5 3 9 4 ] 4791.92 3490.62 + 1650 3302001 185.025 [ 0 10 2 7 6 8 3 5 4 11 1 9 ] 4492.57 3490.62 + 1651 3304001 184.655 [ 0 9 3 5 4 10 7 1 11 6 8 2 ] 4122.53 3490.62 + 1652 3306001 184.287 [ 0 9 8 7 11 2 3 5 6 1 4 10 ] 4620.26 3490.62 + 1653 3308001 183.919 [ 0 4 1 9 2 5 3 6 8 7 10 11 ] 4402.81 3490.62 + 1654 3310001 183.552 [ 0 4 8 5 3 1 11 7 10 9 2 6 ] 4563.36 3490.62 + 1655 3312001 183.185 [ 0 9 1 5 3 8 11 4 10 2 7 6 ] 4379.81 3490.62 + 1656 3314001 182.82 [ 0 6 8 10 4 2 1 7 3 5 9 11 ] 4238.59 3490.62 + 1657 3316001 182.455 [ 0 6 8 7 10 11 1 4 9 2 5 3 ] 4332.37 3490.62 + 1658 3318001 182.091 [ 0 7 2 5 3 9 10 4 11 1 8 6 ] 4131.51 3490.62 + 1659 3320001 181.727 [ 0 6 9 5 1 11 2 3 7 8 10 4 ] 4828.7 3490.62 + 1660 3322001 181.364 [ 0 7 8 6 2 3 11 9 5 1 10 4 ] 4920.79 3490.62 + 1661 3324001 181.002 [ 0 6 5 9 8 10 4 2 3 11 1 7 ] 4668.44 3490.62 + 1662 3326001 180.641 [ 0 10 4 2 11 7 6 1 8 3 5 9 ] 4574.97 3490.62 + 1663 3328001 180.281 [ 0 6 8 10 4 7 5 3 9 1 11 2 ] 3862.53 3490.62 + 1664 3330001 179.921 [ 0 7 2 4 11 9 6 8 10 1 5 3 ] 4719.98 3490.62 + 1665 3332001 179.562 [ 0 6 4 5 3 9 7 10 1 11 8 2 ] 4297.22 3490.62 + 1666 3334001 179.203 [ 0 3 6 8 2 7 10 9 5 11 1 4 ] 4919.75 3490.62 + 1667 3336001 178.846 [ 0 11 10 7 9 3 2 8 4 1 6 5 ] 5052.9 3490.62 + 1668 3338001 178.489 [ 0 6 2 1 11 7 10 4 8 3 5 9 ] 3896.93 3490.62 + 1669 3340001 178.132 [ 0 10 11 9 5 4 1 8 3 2 7 6 ] 5078.35 3490.62 + 1670 3342001 177.777 [ 0 11 4 3 5 6 2 10 1 7 8 9 ] 4817.12 3490.62 + 1671 3344001 177.422 [ 0 3 5 2 6 8 11 7 9 1 10 4 ] 3985.53 3490.62 + 1672 3346001 177.068 [ 0 8 10 4 11 2 1 7 9 5 3 6 ] 3919.67 3490.62 + 1673 3348001 176.714 [ 0 8 11 9 2 4 10 6 5 3 7 1 ] 4591.46 3490.62 + 1674 3350001 176.362 [ 0 6 7 2 10 4 1 9 5 3 11 8 ] 4098.16 3490.62 + 1675 3352001 176.01 [ 0 9 4 2 6 3 5 11 8 1 10 7 ] 5136.68 3490.62 + 1676 3354001 175.658 [ 0 1 11 7 6 10 4 8 5 3 9 2 ] 4194.3 3490.62 + 1677 3356001 175.308 [ 0 7 11 6 3 5 9 2 1 4 10 8 ] 4147.48 3490.62 + 1678 3358001 174.958 [ 0 3 6 8 4 1 11 5 9 7 10 2 ] 4818.03 3490.62 + 1679 3360001 174.609 [ 0 1 9 3 5 6 2 7 4 10 11 8 ] 4027.96 3490.62 + 1680 3362001 174.26 [ 0 9 8 11 1 7 4 5 3 6 2 10 ] 4784.88 3490.62 + 1681 3364001 173.912 [ 0 3 5 8 11 9 7 1 4 10 6 2 ] 4335.99 3490.62 + 1682 3366001 173.565 [ 0 2 8 10 4 6 3 5 9 7 11 1 ] 4001.24 3490.62 + 1683 3368001 173.219 [ 0 8 4 10 7 1 11 9 5 3 2 6 ] 3757.11 3490.62 + 1684 3370001 172.873 [ 0 5 3 6 11 10 4 1 2 7 9 8 ] 4309.53 3490.62 + 1685 3372001 172.528 [ 0 11 2 7 5 10 4 8 6 3 9 1 ] 4928.12 3490.62 + 1686 3374001 172.183 [ 0 6 3 5 9 1 11 10 4 2 7 8 ] 3596.55 3490.62 + 1687 3376001 171.84 [ 0 8 10 4 5 3 9 2 6 1 11 7 ] 4185.54 3490.62 + 1688 3378001 171.497 [ 0 10 4 1 2 9 5 3 11 7 6 8 ] 4199.65 3490.62 + 1689 3380001 171.155 [ 0 11 4 10 1 7 5 6 9 3 2 8 ] 4686.2 3490.62 + 1690 3382001 170.813 [ 0 3 4 10 8 5 9 2 7 6 11 1 ] 4867.74 3490.62 + 1691 3384001 170.472 [ 0 1 9 5 3 2 10 4 6 8 11 7 ] 4148.86 3490.62 + 1692 3386001 170.132 [ 0 10 4 2 9 6 11 1 7 8 3 5 ] 4402.89 3490.62 + 1693 3388001 169.792 [ 0 8 3 4 11 7 2 1 9 10 5 6 ] 5034.01 3490.62 + 1694 3390001 169.453 [ 0 8 7 11 10 2 3 5 9 4 6 1 ] 4710.33 3490.62 + 1695 3392001 169.115 [ 0 8 6 2 9 7 1 11 4 10 3 5 ] 3996.6 3490.62 + 1696 3394001 168.777 [ 0 6 8 4 10 1 11 7 5 2 9 3 ] 4315.27 3490.62 + 1697 3396001 168.441 [ 0 6 8 4 9 5 3 10 11 1 7 2 ] 4167.79 3490.62 + 1698 3398001 168.104 [ 0 2 9 11 4 1 8 6 3 5 7 10 ] 4716.96 3490.62 + 1699 3400001 167.769 [ 0 5 3 9 2 1 7 10 11 6 4 8 ] 4402.4 3490.62 + 1700 3402001 167.434 [ 0 11 10 4 5 9 1 7 6 8 3 2 ] 4483.39 3490.62 + 1701 3404001 167.1 [ 0 2 11 4 10 8 6 7 1 9 5 3 ] 3832.74 3490.62 + 1702 3406001 166.766 [ 0 9 1 11 7 10 4 6 8 3 5 2 ] 3934.43 3490.62 + 1703 3408001 166.433 [ 0 6 8 2 5 3 7 11 10 4 9 1 ] 4176.68 3490.62 + 1704 3410001 166.101 [ 0 1 10 4 2 7 11 9 8 5 3 6 ] 4327.03 3490.62 + 1705 3412001 165.77 [ 0 3 9 11 7 1 5 2 4 10 6 8 ] 4677.21 3490.62 + 1706 3414001 165.439 [ 0 7 9 1 2 6 3 5 10 4 11 8 ] 4289.14 3490.62 + 1707 3416001 165.108 [ 0 6 7 1 2 8 5 3 9 11 10 4 ] 4124.98 3490.62 + 1708 3418001 164.779 [ 0 6 8 4 10 7 11 2 3 5 9 1 ] 3866.91 3490.62 + 1709 3420001 164.45 [ 0 11 8 7 1 2 10 4 6 9 3 5 ] 4529.21 3490.62 + 1710 3422001 164.122 [ 0 11 9 5 3 6 7 10 4 1 2 8 ] 4229.93 3490.62 + 1711 3424001 163.794 [ 0 6 3 5 9 8 10 1 7 11 4 2 ] 4133.3 3490.62 + 1712 3426001 163.467 [ 0 11 4 7 5 3 9 1 10 2 6 8 ] 4298.02 3490.62 + 1713 3428001 163.141 [ 0 1 9 4 5 3 11 7 10 6 8 2 ] 4805.82 3490.62 + 1714 3430001 162.815 [ 0 8 5 3 11 4 10 7 9 2 1 6 ] 4441.4 3490.62 + 1715 3432001 162.49 [ 0 8 5 3 2 7 11 1 9 10 6 4 ] 4382.18 3490.62 + 1716 3434001 162.166 [ 0 5 3 1 11 2 7 6 9 8 10 4 ] 4581.64 3490.62 + 1717 3436001 161.842 [ 0 5 3 6 11 9 1 2 7 10 4 8 ] 4191.03 3490.62 + 1718 3438001 161.519 [ 0 6 3 5 7 10 11 1 9 2 8 4 ] 4184.2 3490.62 + 1719 3440001 161.197 [ 0 8 6 11 10 4 1 3 5 9 2 7 ] 4147.48 3490.62 + 1720 3442001 160.875 [ 0 3 5 9 6 2 8 4 10 11 1 7 ] 3888.03 3490.62 + 1721 3444001 160.554 [ 0 4 11 7 9 2 6 5 3 8 1 10 ] 4555.59 3490.62 + 1722 3446001 160.234 [ 0 7 8 4 10 1 11 2 6 3 5 9 ] 4047.16 3490.62 + 1723 3448001 159.914 [ 0 5 3 9 10 4 6 8 11 1 7 2 ] 4079.75 3490.62 + 1724 3450001 159.595 [ 0 6 8 10 11 9 3 5 1 7 4 2 ] 4380.55 3490.62 + 1725 3452001 159.276 [ 0 8 2 10 4 7 1 11 9 5 3 6 ] 3797.55 3490.62 + 1726 3454001 158.958 [ 0 9 7 11 1 4 10 8 6 3 5 2 ] 4044.57 3490.62 + 1727 3456001 158.641 [ 0 9 5 3 6 2 11 7 1 4 10 8 ] 3970.19 3490.62 + 1728 3458001 158.324 [ 0 2 8 10 7 6 11 4 1 9 5 3 ] 4275 3490.62 + 1729 3460001 158.008 [ 0 3 5 9 2 1 7 11 8 10 4 6 ] 4011.65 3490.62 + 1730 3462001 157.693 [ 0 5 3 9 1 11 7 2 8 10 4 6 ] 3690.26 3490.62 + 1731 3464001 157.378 [ 0 5 3 8 4 2 6 7 10 9 1 11 ] 4589.09 3490.62 + 1732 3466001 157.064 [ 0 2 3 5 4 11 1 9 6 7 10 8 ] 4390.71 3490.62 + 1733 3468001 156.75 [ 0 3 5 9 6 4 11 8 7 1 10 2 ] 4429.27 3490.62 + 1734 3470001 156.438 [ 0 1 10 9 3 5 7 11 4 8 6 2 ] 4531.18 3490.62 + 1735 3472001 156.125 [ 0 8 1 9 3 5 6 2 10 4 11 7 ] 4018.92 3490.62 + 1736 3474001 155.814 [ 0 3 9 1 11 4 10 7 6 2 8 5 ] 4325.36 3490.62 + 1737 3476001 155.503 [ 0 9 8 11 7 1 4 10 2 5 3 6 ] 4321.79 3490.62 + 1738 3478001 155.192 [ 0 4 10 6 11 5 2 8 9 7 1 3 ] 5306.7 3490.62 + 1739 3480001 154.882 [ 0 6 7 1 11 4 10 3 5 9 2 8 ] 3860.29 3490.62 + 1740 3482001 154.573 [ 0 4 10 1 6 8 3 5 9 11 7 2 ] 4063.26 3490.62 + 1741 3484001 154.265 [ 0 6 5 3 11 1 10 4 2 9 7 8 ] 4130.33 3490.62 + 1742 3486001 153.957 [ 0 6 2 3 5 1 9 11 10 7 8 4 ] 4469.48 3490.62 + 1743 3488001 153.65 [ 0 5 3 6 9 8 2 7 1 11 4 10 ] 4183.61 3490.62 + 1744 3490001 153.343 [ 0 6 1 8 11 4 10 7 9 2 3 5 ] 4456.19 3490.62 + 1745 3492001 153.037 [ 0 4 6 3 5 9 2 8 7 11 1 10 ] 4202 3490.62 + 1746 3494001 152.731 [ 0 8 9 6 7 2 5 3 4 10 11 1 ] 4471.77 3490.62 + 1747 3496001 152.427 [ 0 9 2 1 7 5 3 10 4 11 8 6 ] 4454.93 3490.62 + 1748 3498001 152.122 [ 0 4 3 5 9 1 7 2 11 10 8 6 ] 4098.78 3490.62 + 1749 3500001 151.819 [ 0 6 1 7 9 2 8 11 4 10 3 5 ] 4393.46 3490.62 + 1750 3502001 151.516 [ 0 6 5 3 4 9 2 8 11 7 1 10 ] 4600.17 3490.62 + 1751 3504001 151.213 [ 0 6 3 5 7 8 11 1 9 2 4 10 ] 4195.13 3490.62 + 1752 3506001 150.911 [ 0 6 8 3 5 9 2 10 1 7 11 4 ] 4052.5 3490.62 + 1753 3508001 150.61 [ 0 6 2 5 9 3 7 11 8 4 10 1 ] 4553.23 3490.62 + 1754 3510001 150.31 [ 0 6 5 9 1 11 10 8 4 3 2 7 ] 4562.28 3490.62 + 1755 3512001 150.009 [ 0 7 2 8 10 11 3 5 9 1 4 6 ] 4260.92 3490.62 + 1756 3514001 149.71 [ 0 6 11 1 7 10 2 8 9 4 3 5 ] 4731.99 3490.62 + 1757 3516001 149.411 [ 0 10 1 11 2 6 5 3 9 7 4 8 ] 4242.89 3490.62 + 1758 3518001 149.113 [ 0 3 5 2 6 1 11 7 9 10 4 8 ] 4255.63 3490.62 + 1759 3520001 148.815 [ 0 6 8 3 5 9 2 11 1 10 4 7 ] 3825.57 3490.62 + 1760 3522001 148.518 [ 0 9 11 4 3 5 1 10 7 2 8 6 ] 4596.82 3490.62 + 1761 3524001 148.222 [ 0 5 3 9 8 11 7 1 4 10 2 6 ] 4110.06 3490.62 + 1762 3526001 147.926 [ 0 6 1 7 11 9 5 3 4 10 8 2 ] 4135.29 3490.62 + 1763 3528001 147.631 [ 0 4 10 1 7 9 5 3 6 2 11 8 ] 4004.28 3490.62 + 1764 3530001 147.336 [ 0 7 8 2 11 1 9 5 3 6 10 4 ] 3980.53 3490.62 + 1765 3532001 147.042 [ 0 7 11 4 10 8 1 2 5 3 9 6 ] 4300.67 3490.62 + 1766 3534001 146.749 [ 0 8 3 5 1 9 6 11 10 4 7 2 ] 4274.28 3490.62 + 1767 3536001 146.456 [ 0 2 8 5 3 9 6 4 10 11 1 7 ] 4027.37 3490.62 + 1768 3538001 146.163 [ 0 7 11 1 9 5 3 10 4 2 8 6 ] 3773.54 3490.62 + 1769 3540001 145.872 [ 0 6 2 9 1 10 4 7 5 3 8 11 ] 4240.27 3490.62 + 1770 3542001 145.58 [ 0 11 4 10 7 2 8 6 5 1 9 3 ] 4552.79 3490.62 + 1771 3544001 145.29 [ 0 10 4 2 3 5 9 1 7 11 8 6 ] 3816 3490.62 + 1772 3546001 145 [ 0 8 6 5 3 2 9 1 7 11 4 10 ] 3838.55 3490.62 + 1773 3548001 144.71 [ 0 6 4 7 3 5 8 11 9 2 10 1 ] 4860.1 3490.62 + 1774 3550001 144.422 [ 0 4 10 11 8 6 7 1 9 5 3 2 ] 3874.69 3490.62 + 1775 3552001 144.133 [ 0 8 4 10 1 5 3 2 6 9 11 7 ] 4368.26 3490.62 + 1776 3554001 143.846 [ 0 8 1 7 3 5 11 6 2 9 4 10 ] 4838.01 3490.62 + 1777 3556001 143.558 [ 0 4 11 10 8 6 9 5 3 2 1 7 ] 4372.76 3490.62 + 1778 3558001 143.272 [ 0 2 9 1 11 7 10 8 4 6 5 3 ] 4160.85 3490.62 + 1779 3560001 142.986 [ 0 2 7 11 9 6 4 10 1 8 3 5 ] 4353.08 3490.62 + 1780 3562001 142.701 [ 0 5 3 6 4 10 2 1 9 11 7 8 ] 4161.05 3490.62 + 1781 3564001 142.416 [ 0 10 4 7 2 5 3 9 1 11 8 6 ] 3843.69 3490.62 + 1782 3566001 142.131 [ 0 10 11 1 2 5 3 9 8 4 7 6 ] 4425.06 3490.62 + 1783 3568001 141.848 [ 0 6 4 1 11 7 2 8 10 9 3 5 ] 4260.08 3490.62 + 1784 3570001 141.565 [ 0 8 6 11 5 3 4 10 2 9 1 7 ] 4422.74 3490.62 + 1785 3572001 141.282 [ 0 6 9 5 2 3 8 10 4 11 1 7 ] 4452.08 3490.62 + 1786 3574001 141 [ 0 8 6 4 10 7 11 1 9 5 3 2 ] 3583.59 3490.62 + 1787 3576001 140.719 [ 0 9 5 3 2 4 10 6 7 1 11 8 ] 4142.03 3490.62 + 1788 3578001 140.438 [ 0 1 11 8 7 6 4 10 3 5 9 2 ] 4409.62 3490.62 + 1789 3580001 140.157 [ 0 6 3 5 7 8 9 1 11 10 4 2 ] 4048.4 3490.62 + 1790 3582001 139.878 [ 0 11 7 9 3 5 2 8 10 1 4 6 ] 4342.8 3490.62 + 1791 3584001 139.598 [ 0 8 4 3 5 2 7 11 10 1 9 6 ] 4193.73 3490.62 + 1792 3586001 139.32 [ 0 11 4 10 1 2 6 8 7 9 5 3 ] 4058.32 3490.62 + 1793 3588001 139.042 [ 0 5 3 1 9 11 4 10 7 2 8 6 ] 4037.24 3490.62 + 1794 3590001 138.764 [ 0 6 2 4 1 10 11 3 5 9 8 7 ] 4492.93 3490.62 + 1795 3592001 138.487 [ 0 8 3 5 9 10 4 1 11 7 2 6 ] 3818.16 3490.62 + 1796 3594001 138.211 [ 0 8 7 4 10 2 1 11 3 5 9 6 ] 4193.74 3490.62 + 1797 3596001 137.935 [ 0 4 10 1 9 3 5 6 2 11 7 8 ] 3869.4 3490.62 + 1798 3598001 137.66 [ 0 6 8 2 4 1 10 11 7 9 5 3 ] 3968.02 3490.62 + 1799 3600001 137.385 [ 0 3 5 9 8 2 4 10 1 11 7 6 ] 3859.98 3490.62 + 1800 3602001 137.111 [ 0 5 3 9 1 11 10 4 7 6 2 8 ] 3736.09 3490.62 + 1801 3604001 136.837 [ 0 10 7 9 8 1 3 5 2 4 11 6 ] 5005.46 3490.62 + 1802 3606001 136.564 [ 0 5 3 2 7 8 4 10 6 1 11 9 ] 4460.81 3490.62 + 1803 3608001 136.291 [ 0 6 2 11 1 10 4 7 9 5 3 8 ] 3761.93 3490.62 + 1804 3610001 136.019 [ 0 4 10 2 7 11 1 9 3 5 8 6 ] 3717.55 3490.62 + 1805 3612001 135.748 [ 0 4 10 2 8 6 5 3 1 7 11 9 ] 4388.25 3490.62 + 1806 3614001 135.477 [ 0 4 10 6 8 1 11 9 2 7 5 3 ] 4391.87 3490.62 + 1807 3616001 135.206 [ 0 2 6 7 9 1 11 10 4 8 5 3 ] 3915.37 3490.62 + 1808 3618001 134.937 [ 0 6 8 5 3 2 1 10 4 11 7 9 ] 4062.31 3490.62 + 1809 3620001 134.667 [ 0 3 5 9 1 11 10 7 4 6 2 8 ] 3901.47 3490.62 + 1810 3622001 134.398 [ 0 2 4 11 1 9 5 3 7 10 6 8 ] 4069.24 3490.62 + 1811 3624001 134.13 [ 0 8 4 10 11 2 7 1 9 3 5 6 ] 3705.38 3490.62 + 1812 3626001 133.862 [ 0 5 3 6 4 10 11 9 1 7 2 8 ] 3905.37 3490.62 + 1813 3628001 133.595 [ 0 4 10 1 2 6 8 3 5 9 7 11 ] 4060.05 3490.62 + 1814 3630001 133.329 [ 0 8 2 9 10 7 11 1 3 5 6 4 ] 4582.71 3490.62 + 1815 3632001 133.062 [ 0 6 1 7 11 4 10 3 5 9 8 2 ] 4140.22 3490.62 + 1816 3634001 132.797 [ 0 3 5 1 4 10 7 11 9 6 2 8 ] 4322.01 3490.62 + 1817 3636001 132.532 [ 0 5 3 9 1 6 8 10 7 11 4 2 ] 4264.11 3490.62 + 1818 3638001 132.267 [ 0 4 10 1 11 9 5 3 6 8 2 7 ] 3883.64 3490.62 + 1819 3640001 132.003 [ 0 3 5 6 10 4 9 2 7 11 1 8 ] 4249.4 3490.62 + 1820 3642001 131.74 [ 0 6 2 7 1 10 4 11 8 9 3 5 ] 4001.36 3490.62 + 1821 3644001 131.477 [ 0 3 5 10 2 6 8 7 9 1 11 4 ] 4374.92 3490.62 + 1822 3646001 131.214 [ 0 6 4 8 1 11 7 5 3 9 2 10 ] 4515.29 3490.62 + 1823 3648001 130.952 [ 0 6 7 11 1 9 3 5 2 4 10 8 ] 3778.27 3490.62 + 1824 3650001 130.691 [ 0 6 3 9 11 8 10 4 1 7 5 2 ] 4731.42 3490.62 + 1825 3652001 130.43 [ 0 6 2 7 11 1 9 3 5 4 10 8 ] 3714.59 3490.62 + 1826 3654001 130.17 [ 0 6 4 10 2 3 5 7 9 11 1 8 ] 4350.58 3490.62 + 1827 3656001 129.91 [ 0 4 10 11 7 8 9 3 5 2 1 6 ] 4294.17 3490.62 + 1828 3658001 129.651 [ 0 8 2 1 11 10 4 7 9 5 3 6 ] 3730.32 3490.62 + 1829 3660001 129.392 [ 0 1 9 3 5 11 10 4 6 7 2 8 ] 4227.32 3490.62 + 1830 3662001 129.134 [ 0 4 10 11 1 9 5 3 2 7 8 6 ] 3607.95 3490.62 + 1831 3664001 128.876 [ 0 2 3 7 11 10 1 9 5 6 8 4 ] 4514.81 3490.62 + 1832 3666001 128.619 [ 0 6 2 5 3 9 8 10 4 7 11 1 ] 4114.12 3490.62 + 1833 3668001 128.362 [ 0 5 3 9 1 2 4 6 8 7 11 10 ] 4275.68 3490.62 + 1834 3670001 128.106 [ 0 11 5 3 9 1 7 2 4 10 8 6 ] 4109.94 3490.62 + 1835 3672001 127.85 [ 0 7 6 1 4 10 11 9 5 3 8 2 ] 4276.95 3490.62 + 1836 3674001 127.595 [ 0 4 10 6 3 5 9 1 11 7 2 8 ] 3678.63 3490.62 + 1837 3676001 127.34 [ 0 6 2 7 10 4 11 1 9 8 5 3 ] 3882.32 3490.62 + 1838 3678001 127.086 [ 0 6 8 2 9 1 11 7 10 4 5 3 ] 3781.55 3490.62 + 1839 3680001 126.832 [ 0 5 3 9 4 11 10 7 8 1 2 6 ] 4549.26 3490.62 + 1840 3682001 126.579 [ 0 7 11 1 10 4 6 8 2 9 3 5 ] 3848.33 3490.62 + 1841 3684001 126.327 [ 0 7 9 1 11 4 10 2 5 3 6 8 ] 3908.8 3490.62 + 1842 3686001 126.074 [ 0 5 6 8 7 2 1 11 10 4 3 9 ] 4602.03 3490.62 + 1843 3688001 125.823 [ 0 2 5 3 10 4 8 11 1 9 6 7 ] 4386.82 3490.62 + 1844 3690001 125.572 [ 0 8 2 6 4 10 7 3 5 9 1 11 ] 3919.75 3490.62 + 1845 3692001 125.321 [ 0 8 1 11 10 4 7 2 9 5 3 6 ] 3791.51 3490.62 + 1846 3694001 125.071 [ 0 3 5 9 1 4 10 11 8 2 6 7 ] 3975 3490.62 + 1847 3696001 124.821 [ 0 7 4 2 10 11 1 9 5 3 8 6 ] 4014.34 3490.62 + 1848 3698001 124.572 [ 0 3 5 6 7 10 4 11 1 9 2 8 ] 3857.83 3490.62 + 1849 3700001 124.323 [ 0 6 8 2 7 9 1 11 10 4 3 5 ] 3787.57 3490.62 + 1850 3702001 124.075 [ 0 10 4 11 6 8 2 7 1 9 3 5 ] 3938.21 3490.62 + 1851 3704001 123.828 [ 0 3 5 9 7 2 6 8 1 11 10 4 ] 3900.69 3490.62 + 1852 3706001 123.58 [ 0 2 4 11 7 8 9 5 3 1 10 6 ] 4436.44 3490.62 + 1853 3708001 123.334 [ 0 5 3 6 9 1 11 7 2 8 4 10 ] 3962.24 3490.62 + 1854 3710001 123.088 [ 0 1 11 10 4 8 2 9 7 3 5 6 ] 4160.57 3490.62 + 1855 3712001 122.842 [ 0 6 4 10 8 2 7 1 11 9 3 5 ] 3911.42 3490.62 + 1856 3714001 122.597 [ 0 2 4 10 1 11 3 5 9 7 8 6 ] 3939.06 3490.62 + 1857 3716001 122.352 [ 0 7 3 5 8 6 2 9 1 11 4 10 ] 4079.77 3490.62 + 1858 3718001 122.108 [ 0 3 5 6 2 7 9 11 1 10 4 8 ] 3964.56 3490.62 + 1859 3720001 121.864 [ 0 7 4 10 11 1 9 5 3 2 6 8 ] 3628.26 3490.62 + 1860 3722001 121.621 [ 0 4 10 2 11 7 8 1 9 5 3 6 ] 4032.62 3490.62 + 1861 3724001 121.378 [ 0 1 10 4 7 9 3 5 2 11 8 6 ] 4206.49 3490.62 + 1862 3726001 121.136 [ 0 7 1 9 11 2 5 3 6 4 10 8 ] 4181.5 3490.62 + 1863 3728001 120.894 [ 0 2 1 7 11 10 4 8 6 9 3 5 ] 3968.17 3490.62 + 1864 3730001 120.653 [ 0 10 4 11 2 5 3 9 1 7 6 8 ] 3943.91 3490.62 + 1865 3732001 120.412 [ 0 3 5 9 6 8 2 7 1 11 4 10 ] 3853.32 3490.62 + 1866 3734001 120.172 [ 0 8 1 5 3 9 6 2 7 4 10 11 ] 4435.05 3490.62 + 1867 3736001 119.932 [ 0 10 4 3 5 9 1 11 8 2 6 7 ] 4123.7 3490.62 + 1868 3738001 119.692 [ 0 6 8 2 7 9 3 5 4 10 1 11 ] 3950.02 3490.62 + 1869 3740001 119.453 [ 0 6 4 11 1 8 10 7 9 5 3 2 ] 4245.22 3490.62 + 1870 3742001 119.215 [ 0 9 8 4 10 11 1 7 6 3 5 2 ] 4190.51 3490.62 + 1871 3744001 118.977 [ 0 5 9 1 11 3 8 6 7 4 10 2 ] 4490.39 3490.62 + 1872 3746001 118.74 [ 0 8 3 5 9 7 1 11 4 2 6 10 ] 4225.09 3490.62 + 1873 3748001 118.503 [ 0 8 10 4 11 7 2 1 9 5 3 6 ] 3682.03 3490.62 + 1874 3750001 118.266 [ 0 8 6 3 5 4 10 1 11 7 9 2 ] 3897.64 3490.62 + 1875 3752001 118.03 [ 0 3 5 9 7 2 1 11 10 4 8 6 ] 3717.69 3490.62 + 1876 3754001 117.794 [ 0 2 9 3 5 8 7 11 1 4 10 6 ] 3926.22 3490.62 + 1877 3756001 117.559 [ 0 6 11 1 7 3 5 9 2 8 4 10 ] 4037.52 3490.62 + 1878 3758001 117.325 [ 0 4 10 3 5 9 2 7 1 11 8 6 ] 3952.8 3490.62 + 1879 3760001 117.09 [ 0 2 8 10 4 3 5 6 7 1 9 11 ] 4338.06 3490.62 + 1880 3762001 116.857 [ 0 8 10 11 7 4 6 3 5 9 1 2 ] 4057.79 3490.62 + 1881 3764001 116.623 [ 0 8 7 11 9 1 4 10 6 2 5 3 ] 4079.17 3490.62 + 1882 3766001 116.391 [ 0 2 11 10 4 8 7 1 9 3 5 6 ] 3807.01 3490.62 + 1883 3768001 116.158 [ 0 3 5 8 10 4 1 9 11 7 2 6 ] 3959.4 3490.62 + 1884 3770001 115.926 [ 0 2 11 7 1 9 8 4 10 6 3 5 ] 4100.14 3490.62 + 1885 3772001 115.695 [ 0 8 3 5 1 7 11 10 4 6 2 9 ] 4225.8 3490.62 + 1886 3774001 115.464 [ 0 6 4 10 11 1 3 5 9 2 7 8 ] 3903.02 3490.62 + 1887 3776001 115.234 [ 0 8 2 3 5 6 9 11 1 7 10 4 ] 4134.31 3490.62 + 1888 3778001 115.004 [ 0 3 5 9 1 4 10 7 11 8 2 6 ] 3757.95 3490.62 + 1889 3780001 114.774 [ 0 8 3 6 2 10 4 11 1 9 5 7 ] 4391.21 3490.62 + 1890 3782001 114.545 [ 0 4 10 7 8 5 3 6 2 9 1 11 ] 4128.53 3490.62 + 1891 3784001 114.316 [ 0 2 9 5 3 8 6 7 1 11 4 10 ] 3883 3490.62 + 1892 3786001 114.088 [ 0 2 4 10 1 7 11 9 5 3 8 6 ] 3793.51 3490.62 + 1893 3788001 113.861 [ 0 8 3 5 9 1 11 6 4 10 7 2 ] 3827.12 3490.62 + 1894 3790001 113.633 [ 0 8 9 3 5 6 10 4 11 1 7 2 ] 3937.44 3490.62 + 1895 3792001 113.406 [ 0 4 10 11 7 1 9 5 3 8 6 2 ] 3651.74 3490.62 + 1896 3794001 113.18 [ 0 2 3 5 6 4 10 7 11 1 9 8 ] 3911.91 3490.62 + 1897 3796001 112.954 [ 0 8 3 5 9 10 4 6 2 7 1 11 ] 4075.28 3490.62 + 1898 3798001 112.729 [ 0 9 1 11 8 7 2 10 5 3 6 4 ] 4665.22 3490.62 + 1899 3800001 112.504 [ 0 8 4 10 7 11 2 1 9 5 3 6 ] 3759.3 3490.62 + 1900 3802001 112.279 [ 0 8 4 1 9 6 7 3 5 11 10 2 ] 4695.45 3490.62 + 1901 3804001 112.055 [ 0 6 4 10 1 9 3 5 2 7 11 8 ] 3795.42 3490.62 + 1902 3806001 111.831 [ 0 8 1 11 6 3 5 9 4 10 7 2 ] 4186.46 3490.62 + 1903 3808001 111.608 [ 0 3 5 9 1 11 4 10 7 8 2 6 ] 3627.34 3490.62 + 1904 3810001 111.385 [ 0 8 2 9 7 11 5 3 6 4 10 1 ] 4356.85 3490.62 + 1905 3812001 111.163 [ 0 6 8 2 7 11 10 4 5 1 3 9 ] 4765.79 3490.62 + 1906 3814001 110.941 [ 0 11 4 10 1 9 2 7 8 6 5 3 ] 4003.3 3490.62 + 1907 3816001 110.72 [ 0 8 1 11 3 5 9 2 7 10 4 6 ] 4075.53 3490.62 + 1908 3818001 110.499 [ 0 2 10 4 7 11 1 9 5 3 6 8 ] 3597.12 3490.62 + 1909 3820001 110.278 [ 0 6 4 10 2 7 11 1 9 5 3 8 ] 3635.96 3490.62 + 1910 3822001 110.058 [ 0 6 1 4 8 5 3 9 7 11 10 2 ] 4380.16 3490.62 + 1911 3824001 109.838 [ 0 2 6 8 7 5 3 9 1 4 10 11 ] 4059.9 3490.62 + 1912 3826001 109.619 [ 0 6 3 5 9 1 2 7 8 10 4 11 ] 3969.24 3490.62 + 1913 3828001 109.4 [ 0 6 8 2 9 5 7 11 1 10 4 3 ] 4314.51 3490.62 + 1914 3830001 109.182 [ 0 11 4 10 6 7 9 3 1 2 8 5 ] 5029.5 3490.62 + 1915 3832001 108.964 [ 0 6 8 10 4 1 2 11 7 9 5 3 ] 3930.97 3490.62 + 1916 3834001 108.747 [ 0 2 8 6 10 4 7 9 5 3 1 11 ] 4151.84 3490.62 + 1917 3836001 108.53 [ 0 8 7 2 10 4 11 1 9 3 5 6 ] 3720.9 3490.62 + 1918 3838001 108.313 [ 0 2 7 11 4 6 8 5 3 9 1 10 ] 4085.56 3490.62 + 1919 3840001 108.097 [ 0 7 11 10 4 8 6 2 1 9 5 3 ] 3773.99 3490.62 + 1920 3842001 107.881 [ 0 6 8 4 10 2 5 3 9 1 11 7 ] 3756.42 3490.62 + 1921 3844001 107.666 [ 0 5 3 6 8 7 11 2 1 4 10 9 ] 4422.67 3490.62 + 1922 3846001 107.451 [ 0 5 3 9 1 11 8 2 6 7 4 10 ] 4019.86 3490.62 + 1923 3848001 107.236 [ 0 6 2 8 10 4 7 11 1 9 5 3 ] 3589.87 3490.62 + 1924 3850001 107.022 [ 0 6 5 3 8 2 9 7 4 10 11 1 ] 4080.96 3490.62 + 1925 3852001 106.809 [ 0 8 9 11 1 7 3 5 6 10 4 2 ] 4307.95 3490.62 + 1926 3854001 106.595 [ 0 2 1 11 4 10 7 9 5 3 6 8 ] 3774.23 3490.62 + 1927 3856001 106.383 [ 0 6 2 1 10 4 7 9 3 5 8 11 ] 4238.88 3490.62 + 1928 3858001 106.17 [ 0 6 9 5 3 1 11 2 7 4 10 8 ] 4069.85 3490.62 + 1929 3860001 105.958 [ 0 6 8 7 11 4 10 1 2 9 5 3 ] 3792.29 3490.62 + 1930 3862001 105.747 [ 0 7 1 9 3 5 6 2 11 10 4 8 ] 3861.4 3490.62 + 1931 3864001 105.536 [ 0 6 10 11 8 1 9 5 3 2 7 4 ] 4319.99 3490.62 + 1932 3866001 105.325 [ 0 3 5 9 7 11 1 10 4 8 2 6 ] 3644.34 3490.62 + 1933 3868001 105.115 [ 0 6 5 3 2 7 9 1 10 4 8 11 ] 4093.56 3490.62 + 1934 3870001 104.905 [ 0 2 7 6 3 5 9 1 11 4 10 8 ] 3700.15 3490.62 + 1935 3872001 104.696 [ 0 2 1 9 5 3 6 8 7 11 4 10 ] 3846.25 3490.62 + 1936 3874001 104.487 [ 0 6 2 8 3 5 9 1 7 11 10 4 ] 3631.01 3490.62 + 1937 3876001 104.278 [ 0 2 7 1 10 4 11 9 8 6 3 5 ] 4076.28 3490.62 + 1938 3878001 104.07 [ 0 4 10 11 1 7 9 5 3 6 2 8 ] 3723.42 3490.62 + 1939 3880001 103.862 [ 0 8 6 10 4 7 11 1 9 2 5 3 ] 3815.66 3490.62 + 1940 3882001 103.655 [ 0 4 7 10 3 5 9 1 11 8 2 6 ] 4198.45 3490.62 + 1941 3884001 103.448 [ 0 6 8 4 10 11 7 1 9 5 3 2 ] 3525.97 3490.62 + 1942 3886001 103.242 [ 0 6 2 10 1 11 5 3 9 7 4 8 ] 4298.78 3490.62 + 1943 3888001 103.036 [ 0 9 1 7 11 10 4 5 8 2 3 6 ] 4459.21 3490.62 + 1944 3890001 102.83 [ 0 8 6 7 1 4 10 11 9 5 3 2 ] 3887.93 3490.62 + 1945 3892001 102.625 [ 0 6 3 5 9 2 8 7 1 11 10 4 ] 3744.6 3490.62 + 1946 3894001 102.42 [ 0 4 10 5 3 9 1 11 2 8 6 7 ] 4106.66 3490.62 + 1947 3896001 102.215 [ 0 3 5 9 1 8 11 4 10 6 2 7 ] 4136.81 3490.62 + 1948 3898001 102.011 [ 0 8 6 3 5 9 2 11 1 4 10 7 ] 3869.71 3490.62 + 1949 3900001 101.808 [ 0 6 5 3 7 10 4 11 1 9 2 8 ] 3825.35 3490.62 + 1950 3902001 101.605 [ 0 8 5 3 9 11 1 10 4 2 7 6 ] 3943.59 3490.62 + 1951 3904001 101.402 [ 0 3 5 9 1 11 7 10 4 8 2 6 ] 3554.32 3490.62 + 1952 3906001 101.199 [ 0 8 4 10 2 6 3 5 9 7 11 1 ] 3967.43 3490.62 + 1953 3908001 100.997 [ 0 2 8 7 4 10 11 1 9 6 5 3 ] 3939.99 3490.62 + 1954 3910001 100.796 [ 0 6 2 7 10 4 11 1 9 5 3 8 ] 3559.09 3490.62 + 1955 3912001 100.595 [ 0 9 5 3 6 2 7 10 4 8 11 1 ] 4175.52 3490.62 + 1956 3914001 100.394 [ 0 8 2 6 3 5 9 1 4 10 11 7 ] 3693.72 3490.62 + 1957 3916001 100.193 [ 0 5 3 2 8 10 4 1 9 11 7 6 ] 4029.5 3490.62 + 1958 3918001 99.9934 [ 0 7 11 2 8 5 3 9 1 10 4 6 ] 3884.24 3490.62 + 1959 3920001 99.7938 [ 0 5 3 6 4 10 11 1 9 8 7 2 ] 3974.8 3490.62 + 1960 3922001 99.5946 [ 0 2 3 5 8 9 7 6 4 10 1 11 ] 4347.84 3490.62 + 1961 3924001 99.3958 [ 0 6 3 5 9 2 7 10 4 11 1 8 ] 3814.68 3490.62 + 1962 3926001 99.1974 [ 0 8 7 6 3 5 9 1 11 4 10 2 ] 3794.88 3490.62 + 1963 3928001 98.9994 [ 0 9 1 11 3 5 6 2 7 10 4 8 ] 4087.72 3490.62 + 1964 3930001 98.8018 [ 0 11 7 5 3 9 1 10 4 6 2 8 ] 3997.45 3490.62 + 1965 3932001 98.6046 [ 0 5 3 9 11 1 10 6 2 8 4 7 ] 4345.1 3490.62 + 1966 3934001 98.4078 [ 0 5 3 9 11 1 2 6 8 7 10 4 ] 4093.62 3490.62 + 1967 3936001 98.2114 [ 0 2 5 3 6 8 1 9 7 11 10 4 ] 4018.62 3490.62 + 1968 3938001 98.0153 [ 0 7 6 3 5 9 1 11 10 4 8 2 ] 3764.8 3490.62 + 1969 3940001 97.8197 [ 0 2 8 10 11 7 4 1 9 5 3 6 ] 3912.62 3490.62 + 1970 3942001 97.6244 [ 0 8 10 4 7 11 1 9 2 5 3 6 ] 3759.73 3490.62 + 1971 3944001 97.4296 [ 0 7 11 4 10 1 9 3 5 8 2 6 ] 3751.81 3490.62 + 1972 3946001 97.2351 [ 0 2 8 11 4 10 7 1 9 5 3 6 ] 3734.73 3490.62 + 1973 3948001 97.041 [ 0 8 6 11 10 4 7 1 2 9 5 3 ] 3950.72 3490.62 + 1974 3950001 96.8473 [ 0 7 1 11 4 10 2 9 8 6 5 3 ] 4120.48 3490.62 + 1975 3952001 96.654 [ 0 6 8 7 11 1 9 3 5 2 10 4 ] 3776.05 3490.62 + 1976 3954001 96.4611 [ 0 4 11 1 8 2 6 10 5 3 9 7 ] 4632.53 3490.62 + 1977 3956001 96.2686 [ 0 6 3 5 9 1 11 4 10 7 2 8 ] 3519.13 3490.62 + 1978 3958001 96.0764 [ 0 10 5 3 7 11 4 6 8 9 1 2 ] 4651.79 3490.62 + 1979 3960001 95.8847 [ 0 8 6 2 7 4 10 11 1 9 5 3 ] 3523.27 3490.62 + 1980 3962001 95.6933 [ 0 8 10 4 7 11 1 9 5 3 2 6 ] 3571.5 3490.62 + 1981 3964001 95.5023 [ 0 10 3 5 4 11 1 9 7 2 6 8 ] 4344.38 3490.62 + 1982 3966001 95.3116 [ 0 6 2 8 3 5 9 1 7 11 4 10 ] 3690.22 3490.62 + 1983 3968001 95.1214 [ 0 4 10 7 8 6 1 11 2 9 3 5 ] 4190.66 3490.62 + 1984 3970001 94.9315 [ 0 10 11 7 8 3 5 9 1 4 2 6 ] 4095.04 3490.62 + 1985 3972001 94.742 [ 0 2 8 10 4 11 7 1 9 5 3 6 ] 3608.4 3490.62 + 1986 3974001 94.5529 [ 0 4 7 9 1 11 2 6 8 5 3 10 ] 4478.97 3490.62 + 1987 3976001 94.3642 [ 0 10 2 6 8 7 4 11 1 9 5 3 ] 4086.19 3490.62 + 1988 3978001 94.1759 [ 0 8 6 11 1 9 5 3 2 4 10 7 ] 3866.17 3490.62 + 1989 3980001 93.9879 [ 0 3 5 9 2 1 11 7 10 4 8 6 ] 3728.97 3490.62 + 1990 3982001 93.8003 [ 0 2 6 8 4 10 11 1 7 9 5 3 ] 3676.71 3490.62 + 1991 3984001 93.6131 [ 0 10 4 8 6 1 11 7 2 9 3 5 ] 4040.87 3490.62 + 1992 3986001 93.4262 [ 0 3 5 9 1 10 7 2 11 4 6 8 ] 3979.93 3490.62 + 1993 3988001 93.2397 [ 0 5 3 11 1 9 7 10 4 2 6 8 ] 4015.77 3490.62 + 1994 3990001 93.0536 [ 0 6 8 10 4 7 2 11 1 9 5 3 ] 3654.85 3490.62 + 1995 3992001 92.8679 [ 0 4 10 6 8 9 1 11 7 2 3 5 ] 3979.87 3490.62 + 1996 3994001 92.6825 [ 0 6 9 1 11 4 10 3 5 2 7 8 ] 4029.12 3490.62 + 1997 3996001 92.4975 [ 0 6 10 4 11 7 2 8 1 9 5 3 ] 3826.22 3490.62 + 1998 3998001 92.3129 [ 0 6 8 4 11 7 2 10 3 5 9 1 ] 4241.99 3490.62 + 1999 4000001 92.1286 [ 0 8 2 6 3 5 7 4 10 11 1 9 ] 3966.07 3490.62 + 2000 4002001 91.9448 [ 0 5 3 6 11 1 9 2 7 8 4 10 ] 4119.89 3490.62 + 2001 4004001 91.7612 [ 0 8 2 3 5 9 1 4 10 11 7 6 ] 3646.04 3490.62 + 2002 4006001 91.5781 [ 0 4 10 11 1 2 7 9 8 6 5 3 ] 4108.1 3490.62 + 2003 4008001 91.3953 [ 0 4 10 11 8 6 2 7 3 5 9 1 ] 4098.18 3490.62 + 2004 4010001 91.2129 [ 0 6 8 7 2 10 4 11 1 9 3 5 ] 3717.54 3490.62 + 2005 4012001 91.0308 [ 0 2 11 10 4 6 8 7 1 9 5 3 ] 3782.43 3490.62 + 2006 4014001 90.8491 [ 0 6 7 11 10 4 1 2 8 9 5 3 ] 3988.02 3490.62 + 2007 4016001 90.6678 [ 0 2 7 10 4 11 1 9 3 5 8 6 ] 3626.22 3490.62 + 2008 4018001 90.4868 [ 0 6 2 4 10 11 1 7 9 3 5 8 ] 3774.68 3490.62 + 2009 4020001 90.3062 [ 0 8 3 5 2 9 7 11 1 10 4 6 ] 3881.07 3490.62 + 2010 4022001 90.1259 [ 0 2 9 7 8 11 1 10 4 6 3 5 ] 4141.43 3490.62 + 2011 4024001 89.946 [ 0 8 2 11 7 1 9 3 5 10 4 6 ] 3889 3490.62 + 2012 4026001 89.7665 [ 0 4 10 11 1 7 9 3 5 8 6 2 ] 3830.51 3490.62 + 2013 4028001 89.5873 [ 0 4 10 7 11 1 9 5 3 2 8 6 ] 3565.4 3490.62 + 2014 4030001 89.4085 [ 0 8 7 11 1 9 3 5 6 4 10 2 ] 3809.08 3490.62 + 2015 4032001 89.23 [ 0 6 2 8 3 5 9 1 7 4 10 11 ] 3782.52 3490.62 + 2016 4034001 89.0519 [ 0 4 10 6 8 3 5 9 1 11 7 2 ] 3706.67 3490.62 + 2017 4036001 88.8742 [ 0 2 4 10 11 7 1 9 5 3 8 6 ] 3583.99 3490.62 + 2018 4038001 88.6968 [ 0 8 5 3 4 10 11 7 1 9 2 6 ] 3844.38 3490.62 + 2019 4040001 88.5198 [ 0 8 3 5 9 1 4 10 11 7 2 6 ] 3577.67 3490.62 + 2020 4042001 88.3431 [ 0 10 4 1 11 7 6 3 5 9 2 8 ] 3871.59 3490.62 + 2021 4044001 88.1667 [ 0 6 8 11 10 4 5 3 1 9 7 2 ] 4152.17 3490.62 + 2022 4046001 87.9908 [ 0 6 10 4 1 9 5 3 8 2 11 7 ] 3893.89 3490.62 + 2023 4048001 87.8151 [ 0 1 10 4 9 7 11 8 3 5 6 2 ] 4440.93 3490.62 + 2024 4050001 87.6398 [ 0 8 2 7 10 4 11 1 9 3 5 6 ] 3597.93 3490.62 + 2025 4052001 87.4649 [ 0 6 4 10 1 11 8 7 2 3 5 9 ] 3983.94 3490.62 + 2026 4054001 87.2903 [ 0 8 7 2 4 10 11 1 9 5 3 6 ] 3596.55 3490.62 + 2027 4056001 87.1161 [ 0 7 4 10 11 1 9 5 3 6 2 8 ] 3651.97 3490.62 + 2028 4058001 86.9422 [ 0 7 9 6 8 5 3 10 4 11 1 2 ] 4349.08 3490.62 + 2029 4060001 86.7687 [ 0 8 10 4 6 3 5 9 1 7 11 2 ] 3773.48 3490.62 + 2030 4062001 86.5955 [ 0 4 10 11 1 3 5 6 8 9 7 2 ] 4200.77 3490.62 + 2031 4064001 86.4226 [ 0 2 7 4 10 11 1 9 3 5 8 6 ] 3603.05 3490.62 + 2032 4066001 86.2501 [ 0 11 4 10 6 2 8 7 1 9 5 3 ] 3963.46 3490.62 + 2033 4068001 86.078 [ 0 6 4 11 7 2 8 10 1 9 5 3 ] 3910.54 3490.62 + 2034 4070001 85.9062 [ 0 8 6 10 4 11 1 9 5 3 2 7 ] 3708.31 3490.62 + 2035 4072001 85.7347 [ 0 7 9 1 10 4 11 2 5 3 6 8 ] 3954.66 3490.62 + 2036 4074001 85.5636 [ 0 6 5 3 9 1 11 10 4 7 2 8 ] 3574.76 3490.62 + 2037 4076001 85.3928 [ 0 3 5 9 1 7 11 4 10 8 2 6 ] 3614.98 3490.62 + 2038 4078001 85.2224 [ 0 6 11 7 9 2 5 3 8 1 10 4 ] 4319.02 3490.62 + 2039 4080001 85.0522 [ 0 3 5 9 1 7 2 11 10 4 6 8 ] 3680.81 3490.62 + 2040 4082001 84.8825 [ 0 5 3 6 2 7 8 9 1 11 10 4 ] 3989.26 3490.62 + 2041 4084001 84.7131 [ 0 8 10 4 11 1 2 6 9 3 5 7 ] 4228.06 3490.62 + 2042 4086001 84.544 [ 0 8 6 7 4 10 11 1 9 2 3 5 ] 3812.93 3490.62 + 2043 4088001 84.3752 [ 0 8 2 6 10 4 7 11 1 9 5 3 ] 3651.14 3490.62 + 2044 4090001 84.2068 [ 0 10 4 1 9 7 11 2 5 3 8 6 ] 3996.07 3490.62 + 2045 4092001 84.0387 [ 0 2 8 6 4 10 11 7 1 9 5 3 ] 3603.9 3490.62 + 2046 4094001 83.871 [ 0 8 6 4 10 11 1 7 2 3 5 9 ] 3760.1 3490.62 + 2047 4096001 83.7036 [ 0 6 8 10 4 11 1 3 5 9 7 2 ] 3869.08 3490.62 + 2048 4098001 83.5365 [ 0 4 10 2 7 11 1 9 3 5 6 8 ] 3709.98 3490.62 + 2049 4100001 83.3698 [ 0 4 10 1 11 7 5 3 9 2 8 6 ] 3833.67 3490.62 + 2050 4102001 83.2034 [ 0 2 7 4 10 11 1 9 5 3 8 6 ] 3524 3490.62 + 2051 4104001 83.0373 [ 0 2 11 4 10 7 1 9 5 3 8 6 ] 3685.1 3490.62 + 2052 4106001 82.8715 [ 0 8 3 5 9 1 4 10 7 11 2 6 ] 3713.65 3490.62 + 2053 4108001 82.7061 [ 0 8 7 5 3 9 1 11 4 10 6 2 ] 3924.54 3490.62 + 2054 4110001 82.541 [ 0 8 10 4 6 2 7 11 1 9 5 3 ] 3642.13 3490.62 + 2055 4112001 82.3763 [ 0 8 2 7 11 1 9 5 3 6 4 10 ] 3677.41 3490.62 + 2056 4114001 82.2119 [ 0 6 8 7 2 11 10 4 1 9 5 3 ] 3710.9 3490.62 + 2057 4116001 82.0478 [ 0 6 7 2 4 10 11 1 9 5 3 8 ] 3655.01 3490.62 + 2058 4118001 81.884 [ 0 2 7 11 1 10 4 8 3 5 9 6 ] 3753.76 3490.62 + 2059 4120001 81.7206 [ 0 1 11 7 2 4 10 8 6 3 5 9 ] 4043.53 3490.62 + 2060 4122001 81.5575 [ 0 2 8 4 10 1 9 3 5 11 7 6 ] 3951.17 3490.62 + 2061 4124001 81.3947 [ 0 10 4 1 11 9 5 3 2 7 8 6 ] 3904.95 3490.62 + 2062 4126001 81.2322 [ 0 8 2 9 1 11 7 10 4 5 3 6 ] 3786.89 3490.62 + 2063 4128001 81.0701 [ 0 2 8 9 1 7 11 4 10 3 5 6 ] 4004.64 3490.62 + 2064 4130001 80.9082 [ 0 8 6 4 10 7 11 1 9 5 3 2 ] 3583.59 3490.62 + 2065 4132001 80.7467 [ 0 2 7 6 8 10 4 11 1 9 5 3 ] 3694.81 3490.62 + 2066 4134001 80.5856 [ 0 8 4 10 7 2 6 11 1 9 5 3 ] 3766.83 3490.62 + 2067 4136001 80.4247 [ 0 6 10 4 2 9 11 1 7 8 5 3 ] 4159.81 3490.62 + 2068 4138001 80.2642 [ 0 2 9 1 10 4 11 7 6 3 5 8 ] 3881.77 3490.62 + 2069 4140001 80.104 [ 0 3 5 9 1 7 4 6 8 10 11 2 ] 4055.72 3490.62 + 2070 4142001 79.9441 [ 0 2 1 7 11 10 4 6 8 5 3 9 ] 4025.56 3490.62 + 2071 4144001 79.7845 [ 0 8 10 1 11 4 7 9 5 3 2 6 ] 3972.28 3490.62 + 2072 4146001 79.6253 [ 0 6 7 11 4 10 2 8 3 5 9 1 ] 3966.54 3490.62 + 2073 4148001 79.4664 [ 0 2 1 9 5 3 10 4 11 7 8 6 ] 3851.58 3490.62 + 2074 4150001 79.3077 [ 0 8 5 3 9 1 10 4 11 7 2 6 ] 3628.45 3490.62 + 2075 4152001 79.1494 [ 0 2 8 3 5 9 7 1 11 10 4 6 ] 3716.27 3490.62 + 2076 4154001 78.9915 [ 0 3 7 11 1 9 5 8 6 10 4 2 ] 4324.57 3490.62 + 2077 4156001 78.8338 [ 0 8 4 10 5 3 9 1 11 7 2 6 ] 3724.17 3490.62 + 2078 4158001 78.6764 [ 0 3 5 2 11 1 10 4 7 9 6 8 ] 4049.54 3490.62 + 2079 4160001 78.5194 [ 0 9 5 3 8 7 10 4 11 1 2 6 ] 3969.94 3490.62 + 2080 4162001 78.3627 [ 0 6 5 3 9 1 11 10 4 7 8 2 ] 3676.38 3490.62 + 2081 4164001 78.2063 [ 0 9 3 5 8 4 10 1 2 11 7 6 ] 4163.31 3490.62 + 2082 4166001 78.0502 [ 0 6 5 3 9 1 11 7 2 10 4 8 ] 3647.89 3490.62 + 2083 4168001 77.8944 [ 0 8 2 3 5 9 1 7 11 4 10 6 ] 3625.23 3490.62 + 2084 4170001 77.7389 [ 0 3 5 9 1 2 8 10 4 11 7 6 ] 3808.73 3490.62 + 2085 4172001 77.5837 [ 0 6 3 5 9 1 11 10 4 8 7 2 ] 3590.29 3490.62 + 2086 4174001 77.4289 [ 0 6 1 9 5 3 10 4 11 7 2 8 ] 3890.23 3490.62 + 2087 4176001 77.2743 [ 0 2 9 3 5 1 7 11 10 4 6 8 ] 3950.72 3490.62 + 2088 4178001 77.1201 [ 0 8 4 10 11 1 3 5 9 7 2 6 ] 3822.28 3490.62 + 2089 4180001 76.9661 [ 0 4 10 1 9 5 3 2 11 7 8 6 ] 3734.24 3490.62 + 2090 4182001 76.8125 [ 0 6 11 10 4 5 3 7 2 9 1 8 ] 4278.17 3490.62 + 2091 4184001 76.6592 [ 0 9 3 5 6 8 10 4 7 11 1 2 ] 3992.04 3490.62 + 2092 4186001 76.5062 [ 0 7 11 10 4 1 9 5 3 2 6 8 ] 3670.01 3490.62 + 2093 4188001 76.3535 [ 0 6 2 8 10 4 11 7 1 9 5 3 ] 3614.98 3490.62 + 2094 4190001 76.2011 [ 0 6 8 5 3 2 7 11 1 4 10 9 ] 4096.71 3490.62 + 2095 4192001 76.049 [ 0 5 3 9 11 7 10 4 6 1 2 8 ] 4252.46 3490.62 + 2096 4194001 75.8972 [ 0 2 1 9 5 3 8 10 4 11 7 6 ] 3842.12 3490.62 + 2097 4196001 75.7457 [ 0 8 6 5 3 9 7 1 11 10 4 2 ] 3755.19 3490.62 + 2098 4198001 75.5945 [ 0 6 3 5 2 9 1 11 7 10 4 8 ] 3724.18 3490.62 + 2099 4200001 75.4436 [ 0 9 5 3 4 2 6 8 7 1 11 10 ] 4337.48 3490.62 + 2100 4202001 75.293 [ 0 3 5 9 2 6 8 10 4 7 11 1 ] 3928.5 3490.62 + 2101 4204001 75.1427 [ 0 2 5 3 9 1 7 10 4 11 8 6 ] 3798.7 3490.62 + 2102 4206001 74.9928 [ 0 8 2 3 5 9 1 10 6 4 11 7 ] 4076.81 3490.62 + 2103 4208001 74.8431 [ 0 3 5 9 1 4 10 11 7 2 6 8 ] 3565.02 3490.62 + 2104 4210001 74.6937 [ 0 3 5 9 7 8 2 1 11 10 4 6 ] 3858.14 3490.62 + 2105 4212001 74.5446 [ 0 6 8 5 3 2 10 4 11 7 1 9 ] 3920 3490.62 + 2106 4214001 74.3958 [ 0 5 3 9 2 4 10 8 1 11 7 6 ] 4085.29 3490.62 + 2107 4216001 74.2473 [ 0 3 5 9 1 11 7 10 4 6 2 8 ] 3613.88 3490.62 + 2108 4218001 74.0991 [ 0 3 5 9 10 4 6 2 7 1 11 8 ] 4010.9 3490.62 + 2109 4220001 73.9512 [ 0 3 5 9 1 11 4 10 7 8 2 6 ] 3627.34 3490.62 + 2110 4222001 73.8036 [ 0 3 5 9 1 11 4 10 8 7 2 6 ] 3655.59 3490.62 + 2111 4224001 73.6563 [ 0 2 3 5 9 1 7 11 10 4 8 6 ] 3525.97 3490.62 + 2112 4226001 73.5093 [ 0 3 5 6 11 4 10 1 9 7 2 8 ] 3955.66 3490.62 + 2113 4228001 73.3625 [ 0 6 2 3 5 9 1 7 11 10 4 8 ] 3537.89 3490.62 + 2114 4230001 73.2161 [ 0 6 8 11 1 9 3 5 10 4 2 7 ] 3996.45 3490.62 + 2115 4232001 73.07 [ 0 2 7 1 9 11 10 4 8 5 3 6 ] 3877.46 3490.62 + 2116 4234001 72.9241 [ 0 7 9 1 11 10 4 2 6 5 3 8 ] 3918.04 3490.62 + 2117 4236001 72.7786 [ 0 6 8 7 10 4 11 1 9 5 3 2 ] 3597.05 3490.62 + 2118 4238001 72.6333 [ 0 2 1 11 7 10 4 8 6 9 3 5 ] 3966.23 3490.62 + 2119 4240001 72.4883 [ 0 8 6 2 7 5 3 9 11 1 10 4 ] 3974.54 3490.62 + 2120 4242001 72.3436 [ 0 8 2 1 9 5 3 7 11 10 4 6 ] 3777.09 3490.62 + 2121 4244001 72.1992 [ 0 5 3 9 1 11 4 10 2 7 6 8 ] 3768.69 3490.62 + 2122 4246001 72.0551 [ 0 3 5 9 1 11 7 4 10 2 8 6 ] 3571.04 3490.62 + 2123 4248001 71.9113 [ 0 8 2 5 3 9 1 11 7 4 10 6 ] 3687.8 3490.62 + 2124 4250001 71.7678 [ 0 6 8 3 5 9 1 11 10 4 7 2 ] 3524 3490.62 + 2125 4252001 71.6245 [ 0 8 3 5 9 1 10 4 11 7 6 2 ] 3702.17 3490.62 + 2126 4254001 71.4816 [ 0 3 5 9 1 4 10 11 7 2 8 6 ] 3532.36 3490.62 + 2127 4256001 71.3389 [ 0 10 4 11 1 9 3 5 6 8 2 7 ] 3812.13 3490.62 + 2128 4258001 71.1965 [ 0 6 7 11 1 9 5 3 2 4 10 8 ] 3690.59 3490.62 + 2129 4260001 71.0544 [ 0 8 10 4 3 5 9 1 11 7 2 6 ] 3651.12 3490.62 + 2130 4262001 70.9126 [ 0 6 5 3 9 4 10 1 11 8 7 2 ] 4055.62 3490.62 + 2131 4264001 70.771 [ 0 2 8 4 10 11 7 1 9 5 3 6 ] 3549.68 3490.62 + 2132 4266001 70.6298 [ 0 6 8 2 10 1 11 7 9 5 3 4 ] 4103.05 3490.62 + 2133 4268001 70.4888 [ 0 7 4 10 11 1 3 5 9 2 8 6 ] 3893.23 3490.62 + 2134 4270001 70.3481 [ 0 4 10 11 2 7 1 9 8 6 5 3 ] 4011.65 3490.62 + 2135 4272001 70.2077 [ 0 6 8 7 4 10 11 1 9 5 3 2 ] 3573.88 3490.62 + 2136 4274001 70.0675 [ 0 2 8 10 4 11 1 7 9 3 5 6 ] 3786.91 3490.62 + 2137 4276001 69.9277 [ 0 6 2 7 11 4 10 1 9 3 5 8 ] 3628.45 3490.62 + 2138 4278001 69.7881 [ 0 6 2 7 4 11 1 10 9 3 5 8 ] 4156.53 3490.62 + 2139 4280001 69.6488 [ 0 6 10 4 1 9 3 5 7 11 2 8 ] 3944.82 3490.62 + 2140 4282001 69.5098 [ 0 8 7 11 4 10 1 9 5 3 2 6 ] 3599.27 3490.62 + 2141 4284001 69.371 [ 0 6 8 1 7 11 10 4 2 9 5 3 ] 3846.16 3490.62 + 2142 4286001 69.2326 [ 0 6 8 11 1 4 10 7 9 3 5 2 ] 3915.05 3490.62 + 2143 4288001 69.0944 [ 0 9 1 4 10 11 7 2 8 5 3 6 ] 3879.92 3490.62 + 2144 4290001 68.9565 [ 0 2 8 6 10 4 7 11 1 9 5 3 ] 3639.22 3490.62 + 2145 4292001 68.8188 [ 0 2 8 7 1 11 10 4 9 5 3 6 ] 3833.88 3490.62 + 2146 4294001 68.6815 [ 0 10 4 7 1 11 2 9 5 3 6 8 ] 3835.72 3490.62 + 2147 4296001 68.5444 [ 0 4 10 11 1 7 8 6 9 5 3 2 ] 3877.37 3490.62 + 2148 4298001 68.4076 [ 0 10 4 9 1 7 11 8 3 5 2 6 ] 4180.5 3490.62 + 2149 4300001 68.271 [ 0 8 2 11 7 10 4 1 9 5 3 6 ] 3673.69 3490.62 + 2150 4302001 68.1348 [ 0 8 6 4 10 7 11 1 9 3 5 2 ] 3671.27 3490.62 + 2151 4304001 67.9988 [ 0 4 10 11 7 1 9 5 3 6 2 8 ] 3623.7 3490.62 + 2152 4306001 67.863 [ 0 8 6 7 2 9 1 11 10 4 5 3 ] 3875.25 3490.62 + 2153 4308001 67.7276 [ 0 2 7 8 6 4 10 11 1 9 5 3 ] 3644.51 3490.62 + 2154 4310001 67.5924 [ 0 6 2 8 4 11 7 3 5 9 1 10 ] 4045.78 3490.62 + 2155 4312001 67.4575 [ 0 6 8 4 10 7 11 1 9 3 5 2 ] 3611.71 3490.62 + 2156 4314001 67.3228 [ 0 6 2 8 3 5 9 1 4 10 11 7 ] 3701.03 3490.62 + 2157 4316001 67.1885 [ 0 8 6 3 5 9 2 7 1 11 4 10 ] 3722.91 3490.62 + 2158 4318001 67.0543 [ 0 8 2 3 5 9 6 4 10 11 7 1 ] 4039.18 3490.62 + 2159 4320001 66.9205 [ 0 6 8 3 5 9 10 4 11 1 7 2 ] 3789.61 3490.62 + 2160 4322001 66.7869 [ 0 2 3 5 9 1 7 11 10 4 8 6 ] 3525.97 3490.62 + 2161 4324001 66.6536 [ 0 5 3 9 1 11 7 8 6 4 10 2 ] 3805.71 3490.62 + 2162 4326001 66.5206 [ 0 5 3 9 1 7 11 10 4 8 6 2 ] 3657.77 3490.62 + 2163 4328001 66.3878 [ 0 5 3 2 6 4 10 7 9 1 11 8 ] 3985.79 3490.62 + 2164 4330001 66.2553 [ 0 3 5 9 1 11 4 10 6 7 2 8 ] 3735.36 3490.62 + 2165 4332001 66.1231 [ 0 6 9 5 3 2 8 4 10 1 11 7 ] 3825.37 3490.62 + 2166 4334001 65.9911 [ 0 2 3 5 9 7 1 11 4 10 6 8 ] 3745.68 3490.62 + 2167 4336001 65.8594 [ 0 5 3 9 1 7 4 10 11 6 8 2 ] 3844.93 3490.62 + 2168 4338001 65.7279 [ 0 2 6 5 3 9 1 11 7 10 4 8 ] 3659.19 3490.62 + 2169 4340001 65.5967 [ 0 6 8 3 5 9 1 2 7 11 10 4 ] 3692.72 3490.62 + 2170 4342001 65.4658 [ 0 6 8 5 3 9 1 7 11 10 4 2 ] 3663.04 3490.62 + 2171 4344001 65.3351 [ 0 3 5 9 1 8 2 7 11 10 4 6 ] 3765.78 3490.62 + 2172 4346001 65.2047 [ 0 8 6 5 3 4 10 9 1 11 7 2 ] 3952.44 3490.62 + 2173 4348001 65.0745 [ 0 3 5 2 1 11 10 4 7 9 8 6 ] 4038.47 3490.62 + 2174 4350001 64.9447 [ 0 3 5 9 6 2 4 10 11 1 7 8 ] 3872.55 3490.62 + 2175 4352001 64.815 [ 0 3 5 9 2 4 10 11 1 7 8 6 ] 3704.15 3490.62 + 2176 4354001 64.6857 [ 0 3 5 9 1 2 7 11 4 10 8 6 ] 3676.69 3490.62 + 2177 4356001 64.5565 [ 0 3 5 9 1 11 8 4 10 6 2 7 ] 3921.79 3490.62 + 2178 4358001 64.4277 [ 0 2 8 3 5 9 1 7 11 10 4 6 ] 3616.55 3490.62 + 2179 4360001 64.2991 [ 0 6 3 5 9 1 10 4 11 7 2 8 ] 3509.43 3490.62 + 2180 4362001 64.1707 [ 0 6 3 5 9 1 11 10 4 7 2 8 ] 3495.96 3490.62 + 2181 4364001 64.0427 [ 0 6 5 3 9 1 11 4 10 7 2 8 ] 3597.93 3490.62 + 2182 4366001 63.9148 [ 0 3 5 9 1 7 11 4 10 6 2 8 ] 3676.26 3490.62 + 2183 4368001 63.7873 [ 0 6 2 3 5 10 4 11 9 1 7 8 ] 4055.18 3490.62 + 2184 4370001 63.6599 [ 0 3 5 9 1 11 10 4 7 8 2 6 ] 3604.17 3490.62 + 2185 4372001 63.5329 [ 0 8 5 3 9 2 6 11 1 10 4 7 ] 4052.15 3490.62 + 2186 4374001 63.4061 [ 0 3 5 9 4 10 1 11 7 2 8 6 ] 3715.28 3490.62 + 2187 4376001 63.2795 [ 0 5 3 9 7 11 1 2 10 4 8 6 ] 3878.89 3490.62 + 2188 4378001 63.1532 [ 0 5 3 9 1 7 11 10 4 2 8 6 ] 3631.38 3490.62 + 2189 4380001 63.0271 [ 0 8 6 5 3 9 4 10 11 1 7 2 ] 3831.78 3490.62 + 2190 4382001 62.9013 [ 0 6 2 3 5 9 1 4 10 7 11 8 ] 3739.58 3490.62 + 2191 4384001 62.7758 [ 0 6 2 3 5 9 7 1 11 10 4 8 ] 3637.61 3490.62 + 2192 4386001 62.6505 [ 0 5 3 9 6 7 11 10 4 8 1 2 ] 4282.83 3490.62 + 2193 4388001 62.5254 [ 0 3 5 9 1 11 4 10 7 2 6 8 ] 3546.44 3490.62 + 2194 4390001 62.4006 [ 0 2 3 5 9 1 7 11 10 4 6 8 ] 3585.53 3490.62 + 2195 4392001 62.2761 [ 0 6 10 3 5 9 1 11 4 7 8 2 ] 4132.39 3490.62 + 2196 4394001 62.1518 [ 0 6 2 3 5 9 1 11 7 10 4 8 ] 3535.95 3490.62 + 2197 4396001 62.0277 [ 0 3 5 9 2 6 8 7 1 11 10 4 ] 3771.91 3490.62 + 2198 4398001 61.9039 [ 0 6 5 3 9 1 4 10 11 7 2 8 ] 3616.5 3490.62 + 2199 4400001 61.7803 [ 0 8 5 3 9 2 7 1 11 10 4 6 ] 3747.53 3490.62 + 2200 4402001 61.657 [ 0 3 5 9 1 11 7 6 4 10 2 8 ] 3755.35 3490.62 + 2201 4404001 61.534 [ 0 3 5 9 1 11 4 10 7 2 6 8 ] 3546.44 3490.62 + 2202 4406001 61.4111 [ 0 5 3 8 7 11 4 10 1 9 2 6 ] 3838.93 3490.62 + 2203 4408001 61.2886 [ 0 8 5 3 9 1 11 10 4 7 2 6 ] 3614.97 3490.62 + 2204 4410001 61.1662 [ 0 3 5 9 1 11 7 10 4 8 2 6 ] 3554.32 3490.62 + 2205 4412001 61.0441 [ 0 2 3 5 9 1 7 11 10 4 8 6 ] 3525.97 3490.62 + 2206 4414001 60.9223 [ 0 8 3 5 9 1 11 7 2 6 4 10 ] 3717.37 3490.62 + 2207 4416001 60.8007 [ 0 3 5 9 1 10 4 11 7 2 8 6 ] 3504.09 3490.62 + 2208 4418001 60.6793 [ 0 3 5 9 1 11 2 7 4 10 6 8 ] 3716.13 3490.62 + 2209 4420001 60.5582 [ 0 3 5 9 6 2 4 10 11 1 7 8 ] 3872.55 3490.62 + 2210 4422001 60.4374 [ 0 8 6 3 5 9 1 11 2 7 4 10 ] 3722.78 3490.62 + 2211 4424001 60.3167 [ 0 3 5 9 1 10 4 7 11 2 8 6 ] 3616.91 3490.62 + 2212 4426001 60.1963 [ 0 8 5 3 9 1 11 7 2 6 10 4 ] 3797.65 3490.62 + 2213 4428001 60.0762 [ 0 6 8 3 5 9 2 7 11 4 10 1 ] 3855.37 3490.62 + 2214 4430001 59.9563 [ 0 6 8 5 3 9 2 7 11 1 10 4 ] 3738.43 3490.62 + 2215 4432001 59.8366 [ 0 7 1 9 5 3 6 2 11 10 4 8 ] 3782.6 3490.62 + 2216 4434001 59.7172 [ 0 8 6 3 5 9 1 7 4 10 11 2 ] 3654.61 3490.62 + 2217 4436001 59.598 [ 0 3 5 6 8 2 7 10 4 11 1 9 ] 3848.44 3490.62 + 2218 4438001 59.479 [ 0 2 3 5 9 1 11 4 10 7 8 6 ] 3597.05 3490.62 + 2219 4440001 59.3603 [ 0 8 6 3 5 9 2 7 11 1 10 4 ] 3652.06 3490.62 + 2220 4442001 59.2418 [ 0 6 2 3 5 9 7 1 11 4 10 8 ] 3696.33 3490.62 + 2221 4444001 59.1235 [ 0 6 8 2 3 5 9 1 7 11 10 4 ] 3567.34 3490.62 + 2222 4446001 59.0055 [ 0 6 4 10 8 3 5 9 1 11 7 2 ] 3642.86 3490.62 + 2223 4448001 58.8878 [ 0 4 10 1 9 3 5 11 7 2 6 8 ] 3893.15 3490.62 + 2224 4450001 58.7702 [ 0 8 6 3 5 9 1 10 4 11 7 2 ] 3530.16 3490.62 + 2225 4452001 58.6529 [ 0 2 9 5 3 7 1 11 4 10 6 8 ] 3836.55 3490.62 + 2226 4454001 58.5358 [ 0 5 3 9 1 4 10 11 7 2 6 8 ] 3645.79 3490.62 + 2227 4456001 58.419 [ 0 6 8 2 7 11 1 9 3 5 10 4 ] 3753.61 3490.62 + 2228 4458001 58.3024 [ 0 2 10 4 11 7 1 9 5 3 6 8 ] 3622.23 3490.62 + 2229 4460001 58.186 [ 0 6 11 10 4 1 7 9 3 5 2 8 ] 3954.19 3490.62 + 2230 4462001 58.0699 [ 0 6 10 4 7 11 1 9 5 3 2 8 ] 3600.12 3490.62 + 2231 4464001 57.954 [ 0 6 4 10 11 1 7 9 5 3 2 8 ] 3664.52 3490.62 + 2232 4466001 57.8383 [ 0 8 4 10 11 2 7 1 9 3 5 6 ] 3705.38 3490.62 + 2233 4468001 57.7229 [ 0 8 10 4 2 9 1 11 7 3 5 6 ] 3888.47 3490.62 + 2234 4470001 57.6076 [ 0 6 2 8 7 11 4 10 1 9 3 5 ] 3698.42 3490.62 + 2235 4472001 57.4927 [ 0 6 8 7 2 10 4 11 1 9 5 3 ] 3636.76 3490.62 + 2236 4474001 57.3779 [ 0 8 7 11 4 10 1 9 5 3 2 6 ] 3599.27 3490.62 + 2237 4476001 57.2634 [ 0 6 8 2 10 4 11 7 1 9 5 3 ] 3596.16 3490.62 + 2238 4478001 57.1491 [ 0 10 4 6 8 2 7 11 1 9 3 5 ] 3752.85 3490.62 + 2239 4480001 57.035 [ 0 6 8 2 4 10 1 11 7 9 3 5 ] 3719.46 3490.62 + 2240 4482001 56.9212 [ 0 6 8 2 4 10 7 1 11 9 5 3 ] 3769.82 3490.62 + 2241 4484001 56.8075 [ 0 6 11 4 10 8 2 7 1 9 5 3 ] 3794.84 3490.62 + 2242 4486001 56.6942 [ 0 6 8 2 7 11 4 10 1 9 3 5 ] 3584.87 3490.62 + 2243 4488001 56.581 [ 0 8 4 10 11 7 1 9 5 3 2 6 ] 3537.89 3490.62 + 2244 4490001 56.4681 [ 0 6 2 7 11 4 10 1 9 5 3 8 ] 3549.4 3490.62 + 2245 4492001 56.3554 [ 0 6 8 2 4 10 7 11 1 9 3 5 ] 3629.44 3490.62 + 2246 4494001 56.2429 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2247 4496001 56.1306 [ 0 6 8 4 10 11 7 1 9 5 3 2 ] 3525.97 3490.62 + 2248 4498001 56.0186 [ 0 8 2 4 10 7 11 1 9 5 3 6 ] 3554.01 3490.62 + 2249 4500001 55.9068 [ 0 6 8 4 10 7 11 1 9 5 3 2 ] 3524.03 3490.62 + 2250 4502001 55.7952 [ 0 8 2 7 4 10 11 1 9 3 5 6 ] 3574.76 3490.62 + 2251 4504001 55.6838 [ 0 8 9 1 11 7 10 4 6 5 3 2 ] 3911.91 3490.62 + 2252 4506001 55.5727 [ 0 6 7 2 11 4 10 1 9 5 3 8 ] 3746.42 3490.62 + 2253 4508001 55.4617 [ 0 8 4 10 11 7 1 9 5 3 2 6 ] 3537.89 3490.62 + 2254 4510001 55.351 [ 0 2 10 4 1 9 5 3 6 7 11 8 ] 3925.49 3490.62 + 2255 4512001 55.2405 [ 0 11 1 7 10 4 2 9 5 3 8 6 ] 3880.57 3490.62 + 2256 4514001 55.1303 [ 0 4 10 2 8 7 11 1 9 3 5 6 ] 3790.88 3490.62 + 2257 4516001 55.0202 [ 0 8 6 2 7 10 4 11 1 9 3 5 ] 3627.22 3490.62 + 2258 4518001 54.9104 [ 0 2 6 8 4 10 7 11 1 9 5 3 ] 3575.05 3490.62 + 2259 4520001 54.8008 [ 0 8 6 2 7 4 10 11 1 9 5 3 ] 3523.27 3490.62 + 2260 4522001 54.6914 [ 0 6 8 4 10 1 11 7 2 9 5 3 ] 3584.62 3490.62 + 2261 4524001 54.5823 [ 0 6 8 7 10 4 1 11 2 9 3 5 ] 3902.68 3490.62 + 2262 4526001 54.4733 [ 0 6 7 11 1 10 4 8 2 3 5 9 ] 3820.95 3490.62 + 2263 4528001 54.3646 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2264 4530001 54.2561 [ 0 2 6 8 4 10 7 11 1 9 5 3 ] 3575.05 3490.62 + 2265 4532001 54.1478 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 2266 4534001 54.0397 [ 0 2 8 6 10 4 7 11 1 9 5 3 ] 3639.22 3490.62 + 2267 4536001 53.9318 [ 0 6 8 2 7 10 4 11 1 9 3 5 ] 3594.57 3490.62 + 2268 4538001 53.8242 [ 0 7 2 4 10 11 1 9 5 3 6 8 ] 3639.02 3490.62 + 2269 4540001 53.7168 [ 0 8 4 10 7 11 1 9 5 3 2 6 ] 3535.95 3490.62 + 2270 4542001 53.6095 [ 0 6 4 10 11 1 7 8 2 9 5 3 ] 3736.72 3490.62 + 2271 4544001 53.5025 [ 0 6 2 8 4 10 7 11 1 9 5 3 ] 3554.32 3490.62 + 2272 4546001 53.3957 [ 0 8 4 10 1 11 7 2 9 5 3 6 ] 3589.97 3490.62 + 2273 4548001 53.2892 [ 0 8 4 10 11 7 1 9 5 3 6 2 ] 3582.33 3490.62 + 2274 4550001 53.1828 [ 0 2 7 11 4 10 1 9 5 3 8 6 ] 3537.48 3490.62 + 2275 4552001 53.0767 [ 0 6 8 4 10 11 7 1 9 3 5 2 ] 3613.65 3490.62 + 2276 4554001 52.9707 [ 0 6 10 4 8 2 7 11 1 9 5 3 ] 3611.19 3490.62 + 2277 4556001 52.865 [ 0 8 4 10 7 11 1 9 5 3 6 2 ] 3580.39 3490.62 + 2278 4558001 52.7595 [ 0 2 7 11 10 4 1 9 5 3 8 6 ] 3565.75 3490.62 + 2279 4560001 52.6542 [ 0 8 2 7 11 10 4 1 9 5 3 6 ] 3537.7 3490.62 + 2280 4562001 52.5491 [ 0 8 2 7 4 10 11 1 9 5 3 6 ] 3495.96 3490.62 + 2281 4564001 52.4442 [ 0 2 8 10 4 7 11 1 9 3 5 6 ] 3662.09 3490.62 + 2282 4566001 52.3395 [ 0 8 2 7 11 10 4 1 9 5 3 6 ] 3537.7 3490.62 + 2283 4568001 52.235 [ 0 2 7 10 4 11 1 9 5 3 6 8 ] 3539.86 3490.62 + 2284 4570001 52.1308 [ 0 8 7 4 10 11 1 9 3 5 6 2 ] 3709.04 3490.62 + 2285 4572001 52.0267 [ 0 8 4 10 1 11 7 9 5 3 2 6 ] 3625.97 3490.62 + 2286 4574001 51.9229 [ 0 2 6 8 4 10 7 11 1 9 5 3 ] 3575.05 3490.62 + 2287 4576001 51.8192 [ 0 6 2 7 8 4 10 11 1 9 5 3 ] 3596.87 3490.62 + 2288 4578001 51.7158 [ 0 6 8 7 4 10 11 1 9 5 3 2 ] 3573.88 3490.62 + 2289 4580001 51.6126 [ 0 8 2 7 11 10 4 1 9 5 3 6 ] 3537.7 3490.62 + 2290 4582001 51.5095 [ 0 8 6 2 4 10 11 7 1 9 5 3 ] 3583.26 3490.62 + 2291 4584001 51.4067 [ 0 8 2 6 4 10 11 7 1 9 5 3 ] 3615.82 3490.62 + 2292 4586001 51.3041 [ 0 2 10 4 8 6 7 11 1 9 5 3 ] 3716.52 3490.62 + 2293 4588001 51.2017 [ 0 2 6 8 4 10 7 11 1 9 5 3 ] 3575.05 3490.62 + 2294 4590001 51.0995 [ 0 8 2 7 11 4 10 1 9 5 3 6 ] 3509.43 3490.62 + 2295 4592001 50.9975 [ 0 2 6 8 1 11 4 10 7 9 5 3 ] 3889.79 3490.62 + 2296 4594001 50.8957 [ 0 2 6 8 4 10 7 11 1 9 5 3 ] 3575.05 3490.62 + 2297 4596001 50.7941 [ 0 4 10 6 8 2 7 11 1 9 5 3 ] 3673.29 3490.62 + 2298 4598001 50.6928 [ 0 6 2 8 4 10 7 11 1 9 5 3 ] 3554.32 3490.62 + 2299 4600001 50.5916 [ 0 8 6 2 7 10 4 11 1 9 5 3 ] 3546.44 3490.62 + 2300 4602001 50.4906 [ 0 8 6 2 7 10 4 11 1 9 3 5 ] 3627.22 3490.62 + 2301 4604001 50.3898 [ 0 2 8 6 10 7 4 11 1 9 5 3 ] 3949.98 3490.62 + 2302 4606001 50.2892 [ 0 6 2 10 4 8 7 11 1 9 5 3 ] 3677.3 3490.62 + 2303 4608001 50.1889 [ 0 6 8 10 4 11 1 9 5 3 7 2 ] 3662.33 3490.62 + 2304 4610001 50.0887 [ 0 10 4 7 11 1 9 5 3 6 8 2 ] 3645.88 3490.62 + 2305 4612001 49.9887 [ 0 8 10 4 11 1 7 9 5 3 6 2 ] 3740.77 3490.62 + 2306 4614001 49.8889 [ 0 2 7 4 10 11 1 9 3 5 6 8 ] 3595.49 3490.62 + 2307 4616001 49.7893 [ 0 8 7 11 10 4 1 9 3 5 6 2 ] 3750.78 3490.62 + 2308 4618001 49.69 [ 0 2 7 10 4 11 1 9 5 3 8 6 ] 3547.17 3490.62 + 2309 4620001 49.5908 [ 0 6 2 7 4 10 11 1 9 5 3 8 ] 3535.92 3490.62 + 2310 4622001 49.4918 [ 0 8 2 4 10 11 7 1 9 3 5 6 ] 3634.74 3490.62 + 2311 4624001 49.393 [ 0 2 7 4 10 8 6 11 1 9 5 3 ] 3790.46 3490.62 + 2312 4626001 49.2944 [ 0 6 8 2 7 11 10 4 1 9 5 3 ] 3532.36 3490.62 + 2313 4628001 49.196 [ 0 8 2 7 4 10 11 1 9 3 5 6 ] 3574.76 3490.62 + 2314 4630001 49.0978 [ 0 2 8 10 4 11 1 7 9 5 3 6 ] 3708.11 3490.62 + 2315 4632001 48.9998 [ 0 8 2 7 11 4 10 1 9 5 3 6 ] 3509.43 3490.62 + 2316 4634001 48.902 [ 0 8 6 4 10 11 7 1 9 5 3 2 ] 3585.53 3490.62 + 2317 4636001 48.8044 [ 0 4 10 11 1 7 2 6 8 3 5 9 ] 3826.31 3490.62 + 2318 4638001 48.707 [ 0 6 2 8 4 10 11 7 1 9 5 3 ] 3556.26 3490.62 + 2319 4640001 48.6098 [ 0 6 8 2 7 11 10 4 1 9 5 3 ] 3532.36 3490.62 + 2320 4642001 48.5128 [ 0 6 2 8 10 4 11 7 1 9 5 3 ] 3614.98 3490.62 + 2321 4644001 48.4159 [ 0 6 8 10 4 11 1 7 9 3 5 2 ] 3772.08 3490.62 + 2322 4646001 48.3193 [ 0 6 2 4 10 7 11 1 9 5 3 8 ] 3593.97 3490.62 + 2323 4648001 48.2229 [ 0 6 2 11 10 4 7 1 9 5 3 8 ] 3673.85 3490.62 + 2324 4650001 48.1266 [ 0 2 7 10 4 11 1 9 5 3 8 6 ] 3547.17 3490.62 + 2325 4652001 48.0305 [ 0 7 4 10 11 1 9 5 3 2 8 6 ] 3595.61 3490.62 + 2326 4654001 47.9347 [ 0 10 4 7 11 1 9 5 3 2 8 6 ] 3601.44 3490.62 + 2327 4656001 47.839 [ 0 8 2 6 10 4 7 11 1 9 5 3 ] 3651.14 3490.62 + 2328 4658001 47.7435 [ 0 2 4 10 8 7 11 1 9 5 3 6 ] 3683.88 3490.62 + 2329 4660001 47.6482 [ 0 2 4 10 11 7 1 9 3 5 6 8 ] 3655.47 3490.62 + 2330 4662001 47.5531 [ 0 4 10 11 7 1 9 5 3 2 8 6 ] 3567.34 3490.62 + 2331 4664001 47.4582 [ 0 6 8 4 10 11 1 7 2 9 5 3 ] 3596.26 3490.62 + 2332 4666001 47.3635 [ 0 6 8 2 7 4 10 11 1 9 3 5 ] 3571.39 3490.62 + 2333 4668001 47.2689 [ 0 2 8 6 7 10 4 11 1 9 5 3 ] 3666.56 3490.62 + 2334 4670001 47.1746 [ 0 6 2 7 4 10 1 11 9 5 3 8 ] 3745.44 3490.62 + 2335 4672001 47.0804 [ 0 4 10 8 2 7 11 1 9 6 3 5 ] 3961.74 3490.62 + 2336 4674001 46.9864 [ 0 6 8 2 7 10 4 11 1 9 5 3 ] 3513.79 3490.62 + 2337 4676001 46.8927 [ 0 8 4 10 1 11 7 2 9 5 3 6 ] 3589.97 3490.62 + 2338 4678001 46.7991 [ 0 8 2 7 11 4 10 1 9 5 3 6 ] 3509.43 3490.62 + 2339 4680001 46.7056 [ 0 2 7 6 4 10 11 1 9 5 3 8 ] 3708.3 3490.62 + 2340 4682001 46.6124 [ 0 6 8 4 10 7 11 1 9 5 3 2 ] 3524.03 3490.62 + 2341 4684001 46.5194 [ 0 6 8 4 10 11 7 1 9 3 5 2 ] 3613.65 3490.62 + 2342 4686001 46.4265 [ 0 6 8 4 10 7 11 1 9 5 3 2 ] 3524.03 3490.62 + 2343 4688001 46.3339 [ 0 6 2 8 4 10 11 1 9 5 3 7 ] 3738.89 3490.62 + 2344 4690001 46.2414 [ 0 8 10 4 7 11 1 9 5 3 2 6 ] 3571.5 3490.62 + 2345 4692001 46.1491 [ 0 2 6 8 4 10 1 11 7 9 5 3 ] 3665.07 3490.62 + 2346 4694001 46.057 [ 0 2 7 6 8 10 4 11 1 9 5 3 ] 3694.81 3490.62 + 2347 4696001 45.965 [ 0 2 6 8 10 4 11 7 1 9 5 3 ] 3635.71 3490.62 + 2348 4698001 45.8733 [ 0 4 10 6 8 7 11 1 9 5 3 2 ] 3756.55 3490.62 + 2349 4700001 45.7817 [ 0 2 4 10 11 7 1 9 5 3 8 6 ] 3583.99 3490.62 + 2350 4702001 45.6903 [ 0 2 7 10 4 11 1 9 3 5 6 8 ] 3618.66 3490.62 + 2351 4704001 45.5991 [ 0 2 7 11 10 4 1 9 5 3 6 8 ] 3558.44 3490.62 + 2352 4706001 45.5081 [ 0 2 7 4 10 11 1 9 3 5 6 8 ] 3595.49 3490.62 + 2353 4708001 45.4173 [ 0 8 10 4 11 1 9 5 3 7 2 6 ] 3674.25 3490.62 + 2354 4710001 45.3266 [ 0 2 4 10 11 7 1 9 5 3 8 6 ] 3583.99 3490.62 + 2355 4712001 45.2362 [ 0 2 7 11 10 4 1 9 5 3 6 8 ] 3558.44 3490.62 + 2356 4714001 45.1459 [ 0 2 10 4 7 11 1 9 3 5 8 6 ] 3683.48 3490.62 + 2357 4716001 45.0558 [ 0 6 4 10 11 7 1 9 5 3 2 8 ] 3564.8 3490.62 + 2358 4718001 44.9658 [ 0 8 4 10 7 11 1 9 5 3 6 2 ] 3580.39 3490.62 + 2359 4720001 44.8761 [ 0 6 10 4 7 11 1 9 5 3 2 8 ] 3600.12 3490.62 + 2360 4722001 44.7865 [ 0 8 4 10 7 11 1 9 5 3 2 6 ] 3535.95 3490.62 + 2361 4724001 44.6971 [ 0 7 4 10 11 1 9 5 3 2 8 6 ] 3595.61 3490.62 + 2362 4726001 44.6079 [ 0 4 10 7 11 1 9 5 3 6 2 8 ] 3621.76 3490.62 + 2363 4728001 44.5189 [ 0 8 4 10 11 7 1 9 5 3 2 6 ] 3537.89 3490.62 + 2364 4730001 44.43 [ 0 6 4 10 11 7 1 9 5 3 2 8 ] 3564.8 3490.62 + 2365 4732001 44.3413 [ 0 4 10 7 11 1 9 8 2 3 5 6 ] 3893.71 3490.62 + 2366 4734001 44.2528 [ 0 8 6 4 10 2 7 11 1 9 5 3 ] 3623.31 3490.62 + 2367 4736001 44.1645 [ 0 6 8 7 2 11 4 10 1 9 5 3 ] 3682.63 3490.62 + 2368 4738001 44.0763 [ 0 8 2 7 11 1 4 10 6 9 5 3 ] 3868.64 3490.62 + 2369 4740001 43.9884 [ 0 2 7 6 8 10 4 11 1 9 5 3 ] 3694.81 3490.62 + 2370 4742001 43.9006 [ 0 8 2 7 11 10 4 1 9 5 3 6 ] 3537.7 3490.62 + 2371 4744001 43.8129 [ 0 6 8 4 10 11 7 1 9 5 3 2 ] 3525.97 3490.62 + 2372 4746001 43.7255 [ 0 8 4 10 11 7 1 2 9 5 3 6 ] 3736.25 3490.62 + 2373 4748001 43.6382 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2374 4750001 43.5511 [ 0 6 7 11 1 10 4 8 2 9 5 3 ] 3716.67 3490.62 + 2375 4752001 43.4642 [ 0 2 7 10 4 11 1 9 5 3 6 8 ] 3539.86 3490.62 + 2376 4754001 43.3774 [ 0 4 10 11 1 7 8 3 5 9 2 6 ] 3784.56 3490.62 + 2377 4756001 43.2908 [ 0 4 10 11 1 9 5 3 8 7 2 6 ] 3671.62 3490.62 + 2378 4758001 43.2044 [ 0 2 7 11 1 9 5 3 8 4 10 6 ] 3644.57 3490.62 + 2379 4760001 43.1182 [ 0 2 7 11 1 9 5 3 4 10 8 6 ] 3639.2 3490.62 + 2380 4762001 43.0321 [ 0 6 8 7 1 9 5 3 10 4 11 2 ] 3854.86 3490.62 + 2381 4764001 42.9462 [ 0 6 4 10 1 9 5 3 8 11 7 2 ] 3759.5 3490.62 + 2382 4766001 42.8605 [ 0 6 8 4 10 2 5 3 9 1 11 7 ] 3756.42 3490.62 + 2383 4768001 42.775 [ 0 2 10 4 8 6 3 5 9 1 11 7 ] 3713.18 3490.62 + 2384 4770001 42.6896 [ 0 7 10 4 11 1 9 3 5 6 8 2 ] 3742.02 3490.62 + 2385 4772001 42.6044 [ 0 2 8 4 10 7 11 1 9 5 3 6 ] 3547.74 3490.62 + 2386 4774001 42.5193 [ 0 8 6 2 11 7 10 4 5 3 9 1 ] 4049.96 3490.62 + 2387 4776001 42.4345 [ 0 6 10 4 8 2 7 11 1 9 5 3 ] 3611.19 3490.62 + 2388 4778001 42.3498 [ 0 8 2 7 10 4 11 1 9 5 3 6 ] 3519.13 3490.62 + 2389 4780001 42.2652 [ 0 8 6 7 10 4 11 1 9 5 3 2 ] 3648.2 3490.62 + 2390 4782001 42.1809 [ 0 8 10 4 2 7 11 1 9 5 3 6 ] 3582.25 3490.62 + 2391 4784001 42.0967 [ 0 6 2 7 10 4 11 1 9 5 3 8 ] 3559.09 3490.62 + 2392 4786001 42.0127 [ 0 8 2 7 10 4 11 1 9 5 3 6 ] 3519.13 3490.62 + 2393 4788001 41.9288 [ 0 6 2 7 4 10 11 1 9 5 3 8 ] 3535.92 3490.62 + 2394 4790001 41.8451 [ 0 4 10 7 6 2 11 1 9 5 3 8 ] 3858.75 3490.62 + 2395 4792001 41.7616 [ 0 8 2 7 10 4 11 1 9 5 3 6 ] 3519.13 3490.62 + 2396 4794001 41.6782 [ 0 8 7 4 10 11 1 9 5 3 6 2 ] 3630.24 3490.62 + 2397 4796001 41.595 [ 0 8 7 2 4 10 11 1 9 3 5 6 ] 3675.35 3490.62 + 2398 4798001 41.512 [ 0 6 8 4 10 11 7 1 9 5 3 2 ] 3525.97 3490.62 + 2399 4800001 41.4292 [ 0 8 4 10 7 2 11 1 9 5 3 6 ] 3624.65 3490.62 + 2400 4802001 41.3465 [ 0 6 2 7 4 10 11 1 9 5 3 8 ] 3535.92 3490.62 + 2401 4804001 41.2639 [ 0 2 8 4 10 7 11 1 9 5 3 6 ] 3547.74 3490.62 + 2402 4806001 41.1816 [ 0 6 2 7 10 4 11 1 9 5 3 8 ] 3559.09 3490.62 + 2403 4808001 41.0994 [ 0 8 2 7 4 10 11 1 9 5 3 6 ] 3495.96 3490.62 + 2404 4810001 41.0173 [ 0 8 4 10 11 2 7 1 9 3 5 6 ] 3705.38 3490.62 + 2405 4812001 40.9355 [ 0 6 8 4 10 11 7 1 9 3 5 2 ] 3613.65 3490.62 + 2406 4814001 40.8538 [ 0 6 8 4 10 7 11 1 9 3 5 2 ] 3611.71 3490.62 + 2407 4816001 40.7722 [ 0 2 8 10 4 7 11 1 9 3 5 6 ] 3662.09 3490.62 + 2408 4818001 40.6908 [ 0 8 2 10 4 11 7 1 9 5 3 6 ] 3601.5 3490.62 + 2409 4820001 40.6096 [ 0 2 7 11 4 10 1 9 3 5 8 6 ] 3616.53 3490.62 + 2410 4822001 40.5286 [ 0 6 4 10 11 7 1 9 5 3 8 2 ] 3616.55 3490.62 + 2411 4824001 40.4477 [ 0 8 4 10 11 7 1 9 5 3 6 2 ] 3582.33 3490.62 + 2412 4826001 40.3669 [ 0 2 7 4 10 11 1 9 5 3 6 8 ] 3516.69 3490.62 + 2413 4828001 40.2864 [ 0 4 10 7 11 1 9 5 3 8 2 6 ] 3629.07 3490.62 + 2414 4830001 40.2059 [ 0 10 4 7 11 1 9 5 3 6 2 8 ] 3657.8 3490.62 + 2415 4832001 40.1257 [ 0 4 10 7 11 1 9 5 3 6 8 2 ] 3609.84 3490.62 + 2416 4834001 40.0456 [ 0 7 11 10 4 1 9 5 3 8 2 6 ] 3701.03 3490.62 + 2417 4836001 39.9657 [ 0 6 2 7 11 1 9 5 3 8 4 10 ] 3657.81 3490.62 + 2418 4838001 39.8859 [ 0 4 10 7 11 1 9 5 3 6 8 2 ] 3609.84 3490.62 + 2419 4840001 39.8063 [ 0 4 10 7 11 1 9 5 3 2 8 6 ] 3565.4 3490.62 + 2420 4842001 39.7268 [ 0 6 4 10 11 1 9 3 5 8 7 2 ] 3736.21 3490.62 + 2421 4844001 39.6475 [ 0 7 4 10 11 1 9 5 3 2 8 6 ] 3595.61 3490.62 + 2422 4846001 39.5684 [ 0 2 7 10 4 11 1 9 3 5 6 8 ] 3618.66 3490.62 + 2423 4848001 39.4894 [ 0 2 7 4 10 11 1 9 5 3 8 6 ] 3524 3490.62 + 2424 4850001 39.4106 [ 0 7 2 4 10 11 1 9 5 3 8 6 ] 3646.33 3490.62 + 2425 4852001 39.3319 [ 0 2 7 4 10 11 1 9 5 3 6 8 ] 3516.69 3490.62 + 2426 4854001 39.2534 [ 0 8 4 10 7 11 1 9 5 3 2 6 ] 3535.95 3490.62 + 2427 4856001 39.1751 [ 0 2 7 11 4 10 1 9 5 3 8 6 ] 3537.48 3490.62 + 2428 4858001 39.0969 [ 0 6 4 10 7 11 1 9 5 3 2 8 ] 3562.86 3490.62 + 2429 4860001 39.0188 [ 0 8 4 10 11 7 1 9 5 3 2 6 ] 3537.89 3490.62 + 2430 4862001 38.941 [ 0 2 7 11 4 10 1 9 5 3 6 8 ] 3530.16 3490.62 + 2431 4864001 38.8632 [ 0 2 11 1 4 10 7 9 5 3 8 6 ] 3801.45 3490.62 + 2432 4866001 38.7857 [ 0 6 4 10 11 7 1 9 5 3 2 8 ] 3564.8 3490.62 + 2433 4868001 38.7082 [ 0 6 10 4 11 7 1 9 5 3 2 8 ] 3625.23 3490.62 + 2434 4870001 38.631 [ 0 2 7 4 10 11 1 9 5 3 8 6 ] 3524 3490.62 + 2435 4872001 38.5539 [ 0 2 7 11 4 10 1 9 5 3 8 6 ] 3537.48 3490.62 + 2436 4874001 38.4769 [ 0 2 7 11 10 4 1 9 5 3 6 8 ] 3558.44 3490.62 + 2437 4876001 38.4001 [ 0 8 4 10 7 11 1 9 5 3 2 6 ] 3535.95 3490.62 + 2438 4878001 38.3235 [ 0 8 4 10 7 11 1 9 5 3 2 6 ] 3535.95 3490.62 + 2439 4880001 38.247 [ 0 6 4 10 7 11 1 9 5 3 2 8 ] 3562.86 3490.62 + 2440 4882001 38.1706 [ 0 2 7 11 4 10 1 9 5 3 6 8 ] 3530.16 3490.62 + 2441 4884001 38.0945 [ 0 8 6 4 10 11 1 9 5 3 2 7 ] 3647.87 3490.62 + 2442 4886001 38.0184 [ 0 2 7 10 4 11 1 9 5 3 8 6 ] 3547.17 3490.62 + 2443 4888001 37.9425 [ 0 2 7 4 10 11 1 9 5 3 6 8 ] 3516.69 3490.62 + 2444 4890001 37.8668 [ 0 2 7 11 4 10 1 9 5 3 6 8 ] 3530.16 3490.62 + 2445 4892001 37.7912 [ 0 6 8 10 4 7 11 1 9 5 3 2 ] 3559.58 3490.62 + 2446 4894001 37.7158 [ 0 2 7 8 4 10 11 1 9 5 3 6 ] 3590.29 3490.62 + 2447 4896001 37.6405 [ 0 2 11 7 4 10 1 9 5 3 6 8 ] 3642.98 3490.62 + 2448 4898001 37.5654 [ 0 6 10 4 7 11 1 9 5 3 2 8 ] 3600.12 3490.62 + 2449 4900001 37.4904 [ 0 2 7 11 10 4 1 9 5 3 6 8 ] 3558.44 3490.62 + 2450 4902001 37.4156 [ 0 6 8 4 10 1 11 7 9 5 3 2 ] 3614.05 3490.62 + 2451 4904001 37.3409 [ 0 6 8 4 10 11 7 1 9 5 3 2 ] 3525.97 3490.62 + 2452 4906001 37.2663 [ 0 8 2 7 10 4 11 1 9 3 5 6 ] 3597.93 3490.62 + 2453 4908001 37.192 [ 0 8 2 7 4 10 11 1 9 5 3 6 ] 3495.96 3490.62 + 2454 4910001 37.1177 [ 0 8 4 10 2 7 11 1 9 5 3 6 ] 3569.09 3490.62 + 2455 4912001 37.0436 [ 0 6 2 4 10 11 1 7 9 5 3 8 ] 3695.62 3490.62 + 2456 4914001 36.9697 [ 0 10 4 8 2 7 11 1 9 3 5 6 ] 3696.65 3490.62 + 2457 4916001 36.8959 [ 0 6 10 4 8 7 11 1 9 5 3 2 ] 3694.45 3490.62 + 2458 4918001 36.8223 [ 0 6 8 2 7 11 10 4 1 9 5 3 ] 3532.36 3490.62 + 2459 4920001 36.7488 [ 0 8 6 2 7 11 10 4 1 9 5 3 ] 3565.02 3490.62 + 2460 4922001 36.6754 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2461 4924001 36.6022 [ 0 2 8 6 4 10 7 11 1 9 5 3 ] 3601.96 3490.62 + 2462 4926001 36.5292 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2463 4928001 36.4562 [ 0 6 8 7 2 4 10 11 1 9 5 3 ] 3591.21 3490.62 + 2464 4930001 36.3835 [ 0 2 8 6 4 10 7 11 1 9 3 5 ] 3682.74 3490.62 + 2465 4932001 36.3109 [ 0 6 2 7 8 4 10 11 1 9 5 3 ] 3596.87 3490.62 + 2466 4934001 36.2384 [ 0 6 8 4 10 1 11 7 2 9 5 3 ] 3584.62 3490.62 + 2467 4936001 36.166 [ 0 6 8 4 10 11 7 1 9 3 5 2 ] 3613.65 3490.62 + 2468 4938001 36.0939 [ 0 8 2 7 4 10 11 1 9 5 3 6 ] 3495.96 3490.62 + 2469 4940001 36.0218 [ 0 8 4 10 2 7 11 1 9 5 3 6 ] 3569.09 3490.62 + 2470 4942001 35.9499 [ 0 8 6 7 11 4 10 1 9 5 3 2 ] 3638.5 3490.62 + 2471 4944001 35.8782 [ 0 2 7 4 10 11 1 9 5 3 6 8 ] 3516.69 3490.62 + 2472 4946001 35.8065 [ 0 8 2 7 4 10 11 1 9 5 3 6 ] 3495.96 3490.62 + 2473 4948001 35.7351 [ 0 8 2 4 10 7 11 1 9 5 3 6 ] 3554.01 3490.62 + 2474 4950001 35.6637 [ 0 6 2 7 11 4 10 1 9 5 3 8 ] 3549.4 3490.62 + 2475 4952001 35.5926 [ 0 8 2 10 4 11 7 1 9 5 3 6 ] 3601.5 3490.62 + 2476 4954001 35.5215 [ 0 8 2 7 4 10 11 1 9 5 3 6 ] 3495.96 3490.62 + 2477 4956001 35.4506 [ 0 6 2 7 11 4 10 1 9 5 3 8 ] 3549.4 3490.62 + 2478 4958001 35.3799 [ 0 6 8 2 4 10 11 7 1 9 5 3 ] 3550.6 3490.62 + 2479 4960001 35.3092 [ 0 8 2 7 11 4 10 1 9 5 3 6 ] 3509.43 3490.62 + 2480 4962001 35.2388 [ 0 8 2 7 11 4 10 1 9 5 3 6 ] 3509.43 3490.62 + 2481 4964001 35.1684 [ 0 8 2 7 4 10 11 1 9 5 3 6 ] 3495.96 3490.62 + 2482 4966001 35.0982 [ 0 6 4 10 8 7 11 1 9 5 3 2 ] 3692.74 3490.62 + 2483 4968001 35.0282 [ 0 2 8 4 10 1 11 7 3 5 9 6 ] 3840.67 3490.62 + 2484 4970001 34.9583 [ 0 8 4 10 11 7 1 9 5 3 2 6 ] 3537.89 3490.62 + 2485 4972001 34.8885 [ 0 8 4 10 7 11 1 9 5 3 2 6 ] 3535.95 3490.62 + 2486 4974001 34.8188 [ 0 4 10 11 1 7 2 9 5 3 8 6 ] 3671.01 3490.62 + 2487 4976001 34.7493 [ 0 2 4 10 1 11 7 9 5 3 8 6 ] 3672.07 3490.62 + 2488 4978001 34.68 [ 0 6 4 10 7 11 1 9 5 3 2 8 ] 3562.86 3490.62 + 2489 4980001 34.6108 [ 0 6 8 10 4 11 1 9 5 3 2 7 ] 3647.03 3490.62 + 2490 4982001 34.5417 [ 0 8 2 7 4 10 11 1 9 5 3 6 ] 3495.96 3490.62 + 2491 4984001 34.4727 [ 0 8 2 7 4 10 11 1 9 5 3 6 ] 3495.96 3490.62 + 2492 4986001 34.4039 [ 0 8 6 4 10 11 7 1 9 5 3 2 ] 3585.53 3490.62 + 2493 4988001 34.3353 [ 0 8 2 7 4 10 11 1 9 5 3 6 ] 3495.96 3490.62 + 2494 4990001 34.2667 [ 0 6 2 4 10 11 7 1 9 5 3 8 ] 3595.91 3490.62 + 2495 4992001 34.1983 [ 0 8 2 7 11 4 10 1 9 5 3 6 ] 3509.43 3490.62 + 2496 4994001 34.1301 [ 0 8 2 7 11 4 10 1 9 5 3 6 ] 3509.43 3490.62 + 2497 4996001 34.0619 [ 0 8 2 4 10 11 7 1 9 5 3 6 ] 3555.95 3490.62 + 2498 4998001 33.9939 [ 0 8 2 11 10 4 7 1 9 5 3 6 ] 3633.88 3490.62 + 2499 5000001 33.9261 [ 0 6 2 7 4 10 11 1 9 5 3 8 ] 3535.92 3490.62 + 2500 5002001 33.8584 [ 0 8 2 7 4 10 11 1 9 5 3 6 ] 3495.96 3490.62 + 2501 5004001 33.7908 [ 0 8 7 2 4 10 11 1 9 5 3 6 ] 3596.55 3490.62 + 2502 5006001 33.7234 [ 0 8 2 7 11 4 10 1 9 5 3 6 ] 3509.43 3490.62 + 2503 5008001 33.656 [ 0 2 8 4 10 11 7 1 9 5 3 6 ] 3549.68 3490.62 + 2504 5010001 33.5889 [ 0 8 2 7 11 4 10 1 9 5 3 6 ] 3509.43 3490.62 + 2505 5012001 33.5218 [ 0 8 7 2 4 10 11 1 9 3 5 6 ] 3675.35 3490.62 + 2506 5014001 33.4549 [ 0 8 2 7 10 4 11 1 9 5 3 6 ] 3519.13 3490.62 + 2507 5016001 33.3881 [ 0 6 7 2 4 10 11 1 9 5 3 8 ] 3655.01 3490.62 + 2508 5018001 33.3215 [ 0 2 8 10 4 7 11 1 9 5 3 6 ] 3583.29 3490.62 + 2509 5020001 33.255 [ 0 8 2 7 4 10 11 1 9 5 3 6 ] 3495.96 3490.62 + 2510 5022001 33.1886 [ 0 6 8 4 10 7 11 1 9 5 3 2 ] 3524.03 3490.62 + 2511 5024001 33.1224 [ 0 8 2 7 11 4 10 1 9 5 3 6 ] 3509.43 3490.62 + 2512 5026001 33.0562 [ 0 6 8 4 10 11 7 1 9 3 5 2 ] 3613.65 3490.62 + 2513 5028001 32.9903 [ 0 2 4 10 11 7 1 9 5 3 6 8 ] 3576.68 3490.62 + 2514 5030001 32.9244 [ 0 2 7 10 4 11 1 9 5 3 8 6 ] 3547.17 3490.62 + 2515 5032001 32.8587 [ 0 2 7 10 4 11 1 9 3 5 6 8 ] 3618.66 3490.62 + 2516 5034001 32.7931 [ 0 2 7 4 10 11 1 9 3 5 6 8 ] 3595.49 3490.62 + 2517 5036001 32.7277 [ 0 8 10 4 7 11 1 9 5 3 6 2 ] 3615.94 3490.62 + 2518 5038001 32.6623 [ 0 2 7 4 10 11 1 9 5 3 6 8 ] 3516.69 3490.62 + 2519 5040001 32.5971 [ 0 6 4 10 7 11 1 9 5 3 2 8 ] 3562.86 3490.62 + 2520 5042001 32.5321 [ 0 8 10 4 7 11 1 9 3 5 6 2 ] 3694.74 3490.62 + 2521 5044001 32.4671 [ 0 2 7 4 10 11 1 9 5 3 6 8 ] 3516.69 3490.62 + 2522 5046001 32.4023 [ 0 8 4 10 11 7 1 9 3 5 2 6 ] 3625.57 3490.62 + 2523 5048001 32.3377 [ 0 2 7 11 4 10 1 9 5 3 6 8 ] 3530.16 3490.62 + 2524 5050001 32.2731 [ 0 2 7 4 10 11 1 9 5 3 8 6 ] 3524 3490.62 + 2525 5052001 32.2087 [ 0 8 4 10 7 11 1 9 5 3 6 2 ] 3580.39 3490.62 + 2526 5054001 32.1444 [ 0 2 7 4 10 11 1 9 5 3 6 8 ] 3516.69 3490.62 + 2527 5056001 32.0802 [ 0 8 10 4 1 11 7 9 5 3 2 6 ] 3712.96 3490.62 + 2528 5058001 32.0162 [ 0 8 7 11 4 10 1 9 5 3 2 6 ] 3599.27 3490.62 + 2529 5060001 31.9523 [ 0 6 4 10 7 11 1 9 5 3 2 8 ] 3562.86 3490.62 + 2530 5062001 31.8885 [ 0 2 7 4 10 11 1 9 5 3 8 6 ] 3524 3490.62 + 2531 5064001 31.8249 [ 0 4 10 1 11 7 2 9 5 3 6 8 ] 3652.06 3490.62 + 2532 5066001 31.7614 [ 0 2 7 4 10 11 1 9 5 3 8 6 ] 3524 3490.62 + 2533 5068001 31.698 [ 0 2 7 11 4 10 1 9 5 3 6 8 ] 3530.16 3490.62 + 2534 5070001 31.6347 [ 0 6 10 4 11 7 1 9 5 3 2 8 ] 3625.23 3490.62 + 2535 5072001 31.5716 [ 0 2 10 4 11 1 7 9 5 3 6 8 ] 3721.94 3490.62 + 2536 5074001 31.5085 [ 0 2 7 4 10 11 1 9 5 3 8 6 ] 3524 3490.62 + 2537 5076001 31.4456 [ 0 6 4 10 7 11 1 9 5 3 2 8 ] 3562.86 3490.62 + 2538 5078001 31.3829 [ 0 2 7 4 10 11 1 9 5 3 6 8 ] 3516.69 3490.62 + 2539 5080001 31.3202 [ 0 8 7 11 4 10 1 9 5 3 6 2 ] 3643.71 3490.62 + 2540 5082001 31.2577 [ 0 8 10 4 7 11 1 9 5 3 6 2 ] 3615.94 3490.62 + 2541 5084001 31.1953 [ 0 2 7 4 10 11 1 9 3 5 6 8 ] 3595.49 3490.62 + 2542 5086001 31.1331 [ 0 2 7 4 10 11 1 9 5 3 8 6 ] 3524 3490.62 + 2543 5088001 31.0709 [ 0 2 10 4 11 7 1 9 5 3 8 6 ] 3629.54 3490.62 + 2544 5090001 31.0089 [ 0 2 7 11 4 10 1 9 5 3 8 6 ] 3537.48 3490.62 + 2545 5092001 30.947 [ 0 2 4 10 7 11 1 9 5 3 6 8 ] 3574.74 3490.62 + 2546 5094001 30.8852 [ 0 2 7 11 10 4 1 9 5 3 8 6 ] 3565.75 3490.62 + 2547 5096001 30.8236 [ 0 8 4 10 11 1 7 2 9 5 3 6 ] 3601.6 3490.62 + 2548 5098001 30.7621 [ 0 8 2 7 4 10 11 1 9 5 3 6 ] 3495.96 3490.62 + 2549 5100001 30.7007 [ 0 6 8 4 10 11 7 1 9 5 3 2 ] 3525.97 3490.62 + 2550 5102001 30.6394 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 2551 5104001 30.5782 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2552 5106001 30.5172 [ 0 6 8 2 7 10 4 11 1 9 5 3 ] 3513.79 3490.62 + 2553 5108001 30.4563 [ 0 6 8 10 4 11 1 7 2 9 5 3 ] 3654.98 3490.62 + 2554 5110001 30.3955 [ 0 6 8 2 7 11 10 4 1 9 5 3 ] 3532.36 3490.62 + 2555 5112001 30.3348 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 2556 5114001 30.2743 [ 0 6 8 2 10 4 7 11 1 9 5 3 ] 3571.04 3490.62 + 2557 5116001 30.2138 [ 0 8 6 2 4 10 1 7 11 9 5 3 ] 3792.78 3490.62 + 2558 5118001 30.1535 [ 0 8 2 6 4 10 11 7 1 9 5 3 ] 3615.82 3490.62 + 2559 5120001 30.0934 [ 0 6 8 2 7 4 10 11 1 9 3 5 ] 3571.39 3490.62 + 2560 5122001 30.0333 [ 0 6 2 8 7 4 10 11 1 9 5 3 ] 3604.17 3490.62 + 2561 5124001 29.9733 [ 0 8 2 6 4 10 7 11 1 9 5 3 ] 3613.88 3490.62 + 2562 5126001 29.9135 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2563 5128001 29.8538 [ 0 2 6 8 4 10 7 11 1 9 5 3 ] 3575.05 3490.62 + 2564 5130001 29.7942 [ 0 8 2 6 4 10 7 11 1 9 5 3 ] 3613.88 3490.62 + 2565 5132001 29.7347 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 2566 5134001 29.6754 [ 0 8 6 2 7 10 4 11 1 9 5 3 ] 3546.44 3490.62 + 2567 5136001 29.6162 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 2568 5138001 29.5571 [ 0 6 2 8 4 10 11 7 1 9 5 3 ] 3556.26 3490.62 + 2569 5140001 29.4981 [ 0 6 8 2 7 10 4 11 1 9 5 3 ] 3513.79 3490.62 + 2570 5142001 29.4392 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 2571 5144001 29.3804 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 2572 5146001 29.3218 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 2573 5148001 29.2632 [ 0 6 2 8 4 10 7 11 1 9 3 5 ] 3635.1 3490.62 + 2574 5150001 29.2048 [ 0 6 8 2 7 11 10 4 1 9 5 3 ] 3532.36 3490.62 + 2575 5152001 29.1465 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2576 5154001 29.0884 [ 0 6 8 2 4 10 11 7 1 9 5 3 ] 3550.6 3490.62 + 2577 5156001 29.0303 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2578 5158001 28.9724 [ 0 8 6 2 7 11 10 4 1 9 5 3 ] 3565.02 3490.62 + 2579 5160001 28.9145 [ 0 8 6 2 4 10 7 11 1 9 5 3 ] 3581.32 3490.62 + 2580 5162001 28.8568 [ 0 2 8 4 10 7 11 1 9 5 3 6 ] 3547.74 3490.62 + 2581 5164001 28.7992 [ 0 2 8 4 10 11 7 1 9 5 3 6 ] 3549.68 3490.62 + 2582 5166001 28.7417 [ 0 6 8 7 10 4 11 1 9 5 3 2 ] 3597.05 3490.62 + 2583 5168001 28.6844 [ 0 8 2 7 11 4 10 1 9 5 3 6 ] 3509.43 3490.62 + 2584 5170001 28.6271 [ 0 8 2 4 10 11 7 1 9 5 3 6 ] 3555.95 3490.62 + 2585 5172001 28.57 [ 0 6 2 4 10 7 11 1 9 5 3 8 ] 3593.97 3490.62 + 2586 5174001 28.5129 [ 0 2 8 10 4 7 11 1 9 5 3 6 ] 3583.29 3490.62 + 2587 5176001 28.456 [ 0 8 2 7 10 4 11 1 9 5 3 6 ] 3519.13 3490.62 + 2588 5178001 28.3992 [ 0 8 2 7 10 4 11 1 9 5 3 6 ] 3519.13 3490.62 + 2589 5180001 28.3426 [ 0 6 2 7 10 4 11 1 9 5 3 8 ] 3559.09 3490.62 + 2590 5182001 28.286 [ 0 6 8 4 10 11 7 1 9 5 3 2 ] 3525.97 3490.62 + 2591 5184001 28.2295 [ 0 8 2 7 10 4 11 1 9 5 3 6 ] 3519.13 3490.62 + 2592 5186001 28.1732 [ 0 8 2 7 4 10 11 1 9 5 3 6 ] 3495.96 3490.62 + 2593 5188001 28.1169 [ 0 8 2 7 4 10 11 1 9 5 3 6 ] 3495.96 3490.62 + 2594 5190001 28.0608 [ 0 8 4 10 2 7 11 1 9 5 3 6 ] 3569.09 3490.62 + 2595 5192001 28.0048 [ 0 6 2 7 11 4 10 1 9 5 3 8 ] 3549.4 3490.62 + 2596 5194001 27.9489 [ 0 8 2 7 4 10 11 1 9 5 3 6 ] 3495.96 3490.62 + 2597 5196001 27.8931 [ 0 8 2 7 11 4 10 1 9 5 3 6 ] 3509.43 3490.62 + 2598 5198001 27.8375 [ 0 8 2 7 4 10 11 1 9 5 3 6 ] 3495.96 3490.62 + 2599 5200001 27.7819 [ 0 6 8 4 10 7 11 1 9 5 3 2 ] 3524.03 3490.62 + 2600 5202001 27.7264 [ 0 8 4 10 2 7 11 1 9 5 3 6 ] 3569.09 3490.62 + 2601 5204001 27.6711 [ 0 2 8 4 10 11 7 1 9 5 3 6 ] 3549.68 3490.62 + 2602 5206001 27.6159 [ 0 8 2 7 4 10 11 1 9 5 3 6 ] 3495.96 3490.62 + 2603 5208001 27.5607 [ 0 6 2 7 10 4 11 1 9 5 3 8 ] 3559.09 3490.62 + 2604 5210001 27.5057 [ 0 8 2 7 4 10 11 1 9 5 3 6 ] 3495.96 3490.62 + 2605 5212001 27.4508 [ 0 6 8 4 10 11 7 1 9 5 3 2 ] 3525.97 3490.62 + 2606 5214001 27.396 [ 0 6 2 7 10 4 11 1 9 5 3 8 ] 3559.09 3490.62 + 2607 5216001 27.3414 [ 0 8 2 7 4 10 11 1 9 5 3 6 ] 3495.96 3490.62 + 2608 5218001 27.2868 [ 0 8 2 7 11 4 10 1 9 5 3 6 ] 3509.43 3490.62 + 2609 5220001 27.2323 [ 0 8 2 7 4 10 11 1 9 5 3 6 ] 3495.96 3490.62 + 2610 5222001 27.178 [ 0 8 2 7 11 4 10 1 9 5 3 6 ] 3509.43 3490.62 + 2611 5224001 27.1237 [ 0 8 2 7 4 10 11 1 9 5 3 6 ] 3495.96 3490.62 + 2612 5226001 27.0696 [ 0 2 8 10 4 7 11 1 9 5 3 6 ] 3583.29 3490.62 + 2613 5228001 27.0155 [ 0 8 2 7 11 4 10 1 9 5 3 6 ] 3509.43 3490.62 + 2614 5230001 26.9616 [ 0 8 2 7 4 10 11 1 9 5 3 6 ] 3495.96 3490.62 + 2615 5232001 26.9078 [ 0 8 2 7 11 4 10 1 9 5 3 6 ] 3509.43 3490.62 + 2616 5234001 26.8541 [ 0 6 8 4 10 11 7 1 9 5 3 2 ] 3525.97 3490.62 + 2617 5236001 26.8005 [ 0 8 2 4 10 7 11 1 9 5 3 6 ] 3554.01 3490.62 + 2618 5238001 26.747 [ 0 8 2 7 4 10 11 1 9 5 3 6 ] 3495.96 3490.62 + 2619 5240001 26.6936 [ 0 8 2 7 4 10 11 1 9 5 3 6 ] 3495.96 3490.62 + 2620 5242001 26.6403 [ 0 2 8 4 10 7 11 1 9 5 3 6 ] 3547.74 3490.62 + 2621 5244001 26.5872 [ 0 6 8 4 10 11 7 1 9 5 3 2 ] 3525.97 3490.62 + 2622 5246001 26.5341 [ 0 8 2 4 10 11 7 1 9 5 3 6 ] 3555.95 3490.62 + 2623 5248001 26.4811 [ 0 8 10 4 2 7 11 1 9 5 3 6 ] 3582.25 3490.62 + 2624 5250001 26.4283 [ 0 2 8 7 11 4 10 1 9 5 3 6 ] 3611.06 3490.62 + 2625 5252001 26.3755 [ 0 6 2 7 11 4 10 1 9 3 5 8 ] 3628.45 3490.62 + 2626 5254001 26.3229 [ 0 6 8 2 7 10 4 11 1 9 5 3 ] 3513.79 3490.62 + 2627 5256001 26.2703 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 2628 5258001 26.2179 [ 0 6 8 2 11 4 10 7 1 9 5 3 ] 3651.71 3490.62 + 2629 5260001 26.1656 [ 0 8 6 2 7 10 4 11 1 9 5 3 ] 3546.44 3490.62 + 2630 5262001 26.1133 [ 0 6 2 8 7 4 10 11 1 9 5 3 ] 3604.17 3490.62 + 2631 5264001 26.0612 [ 0 6 8 2 7 11 4 10 1 9 3 5 ] 3584.87 3490.62 + 2632 5266001 26.0092 [ 0 10 4 8 6 2 7 11 1 9 5 3 ] 3645.16 3490.62 + 2633 5268001 25.9573 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2634 5270001 25.9055 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2635 5272001 25.8538 [ 0 6 8 2 7 10 4 11 1 9 5 3 ] 3513.79 3490.62 + 2636 5274001 25.8022 [ 0 8 6 2 7 4 10 11 1 9 5 3 ] 3523.27 3490.62 + 2637 5276001 25.7507 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2638 5278001 25.6993 [ 0 8 6 2 7 4 10 11 1 9 5 3 ] 3523.27 3490.62 + 2639 5280001 25.648 [ 0 8 6 2 7 10 4 11 1 9 5 3 ] 3546.44 3490.62 + 2640 5282001 25.5968 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2641 5284001 25.5457 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2642 5286001 25.4947 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2643 5288001 25.4438 [ 0 6 2 8 4 10 1 11 7 9 5 3 ] 3644.34 3490.62 + 2644 5290001 25.393 [ 0 8 6 2 7 11 4 10 1 9 5 3 ] 3536.75 3490.62 + 2645 5292001 25.3423 [ 0 6 8 2 7 10 4 11 1 9 5 3 ] 3513.79 3490.62 + 2646 5294001 25.2917 [ 0 8 6 2 7 4 10 11 1 9 5 3 ] 3523.27 3490.62 + 2647 5296001 25.2413 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2648 5298001 25.1909 [ 0 6 2 8 7 11 4 10 1 9 5 3 ] 3617.64 3490.62 + 2649 5300001 25.1406 [ 0 6 8 2 7 10 4 11 1 9 5 3 ] 3513.79 3490.62 + 2650 5302001 25.0904 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2651 5304001 25.0403 [ 0 6 8 2 7 11 10 4 1 9 5 3 ] 3532.36 3490.62 + 2652 5306001 24.9904 [ 0 2 8 6 7 10 4 11 1 9 5 3 ] 3666.56 3490.62 + 2653 5308001 24.9405 [ 0 6 8 2 7 10 4 11 1 9 5 3 ] 3513.79 3490.62 + 2654 5310001 24.8907 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2655 5312001 24.841 [ 0 8 6 2 7 10 4 11 1 9 5 3 ] 3546.44 3490.62 + 2656 5314001 24.7914 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 2657 5316001 24.7419 [ 0 2 6 8 4 10 11 7 1 9 5 3 ] 3576.99 3490.62 + 2658 5318001 24.6926 [ 0 2 8 6 4 10 11 7 1 9 5 3 ] 3603.9 3490.62 + 2659 5320001 24.6433 [ 0 6 8 2 10 4 7 11 1 9 5 3 ] 3571.04 3490.62 + 2660 5322001 24.5941 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 2661 5324001 24.545 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2662 5326001 24.496 [ 0 6 2 7 8 4 10 11 1 9 5 3 ] 3596.87 3490.62 + 2663 5328001 24.4471 [ 0 8 6 2 4 10 11 7 1 9 5 3 ] 3583.26 3490.62 + 2664 5330001 24.3983 [ 0 6 8 2 4 10 11 7 1 9 5 3 ] 3550.6 3490.62 + 2665 5332001 24.3496 [ 0 6 8 2 7 11 10 4 1 9 5 3 ] 3532.36 3490.62 + 2666 5334001 24.301 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2667 5336001 24.2525 [ 0 8 6 2 7 4 10 11 1 9 5 3 ] 3523.27 3490.62 + 2668 5338001 24.2041 [ 0 8 6 2 7 11 4 10 1 9 5 3 ] 3536.75 3490.62 + 2669 5340001 24.1558 [ 0 6 8 2 7 11 10 4 1 9 5 3 ] 3532.36 3490.62 + 2670 5342001 24.1076 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2671 5344001 24.0595 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 2672 5346001 24.0114 [ 0 6 8 2 7 11 10 4 1 9 5 3 ] 3532.36 3490.62 + 2673 5348001 23.9635 [ 0 6 8 2 7 10 4 11 1 9 5 3 ] 3513.79 3490.62 + 2674 5350001 23.9157 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2675 5352001 23.8679 [ 0 6 2 8 4 10 7 11 1 9 5 3 ] 3554.32 3490.62 + 2676 5354001 23.8203 [ 0 8 6 2 7 11 4 10 1 9 5 3 ] 3536.75 3490.62 + 2677 5356001 23.7728 [ 0 6 8 7 2 4 10 11 1 9 5 3 ] 3591.21 3490.62 + 2678 5358001 23.7253 [ 0 8 6 2 7 4 10 11 1 9 5 3 ] 3523.27 3490.62 + 2679 5360001 23.6779 [ 0 8 6 2 4 10 7 11 1 9 5 3 ] 3581.32 3490.62 + 2680 5362001 23.6307 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2681 5364001 23.5835 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2682 5366001 23.5364 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2683 5368001 23.4895 [ 0 6 8 2 7 10 4 11 1 9 5 3 ] 3513.79 3490.62 + 2684 5370001 23.4426 [ 0 6 2 8 4 10 7 11 1 9 3 5 ] 3635.1 3490.62 + 2685 5372001 23.3958 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2686 5374001 23.3491 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2687 5376001 23.3025 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 2688 5378001 23.256 [ 0 6 8 2 4 10 7 11 1 9 5 3 ] 3548.66 3490.62 + 2689 5380001 23.2096 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 2690 5382001 23.1632 [ 0 8 6 2 7 10 4 11 1 9 5 3 ] 3546.44 3490.62 + 2691 5384001 23.117 [ 0 8 6 2 7 11 4 10 1 9 5 3 ] 3536.75 3490.62 + 2692 5386001 23.0709 [ 0 6 2 8 7 4 10 11 1 9 5 3 ] 3604.17 3490.62 + 2693 5388001 23.0248 [ 0 6 8 2 4 10 11 7 1 9 5 3 ] 3550.6 3490.62 + 2694 5390001 22.9788 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 2695 5392001 22.933 [ 0 6 8 2 4 10 7 11 1 9 5 3 ] 3548.66 3490.62 + 2696 5394001 22.8872 [ 0 8 6 2 7 10 4 11 1 9 5 3 ] 3546.44 3490.62 + 2697 5396001 22.8415 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2698 5398001 22.7959 [ 0 6 8 2 7 10 4 11 1 9 5 3 ] 3513.79 3490.62 + 2699 5400001 22.7504 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2700 5402001 22.705 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2701 5404001 22.6597 [ 0 8 6 2 7 10 4 11 1 9 5 3 ] 3546.44 3490.62 + 2702 5406001 22.6145 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2703 5408001 22.5693 [ 0 8 6 2 7 4 10 11 1 9 5 3 ] 3523.27 3490.62 + 2704 5410001 22.5243 [ 0 6 8 2 7 10 4 11 1 9 5 3 ] 3513.79 3490.62 + 2705 5412001 22.4793 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 2706 5414001 22.4345 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2707 5416001 22.3897 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2708 5418001 22.345 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 2709 5420001 22.3004 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2710 5422001 22.2559 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2711 5424001 22.2115 [ 0 6 8 2 7 10 4 11 1 9 5 3 ] 3513.79 3490.62 + 2712 5426001 22.1671 [ 0 8 6 2 7 4 10 11 1 9 5 3 ] 3523.27 3490.62 + 2713 5428001 22.1229 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2714 5430001 22.0787 [ 0 6 8 2 4 10 11 7 1 9 5 3 ] 3550.6 3490.62 + 2715 5432001 22.0346 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2716 5434001 21.9907 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 2717 5436001 21.9468 [ 0 8 6 2 7 11 10 4 1 9 5 3 ] 3565.02 3490.62 + 2718 5438001 21.903 [ 0 6 8 2 7 10 4 11 1 9 5 3 ] 3513.79 3490.62 + 2719 5440001 21.8592 [ 0 6 8 2 7 10 4 11 1 9 5 3 ] 3513.79 3490.62 + 2720 5442001 21.8156 [ 0 8 6 2 7 4 10 11 1 9 5 3 ] 3523.27 3490.62 + 2721 5444001 21.7721 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2722 5446001 21.7286 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2723 5448001 21.6852 [ 0 6 8 7 2 4 10 11 1 9 5 3 ] 3591.21 3490.62 + 2724 5450001 21.642 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2725 5452001 21.5988 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2726 5454001 21.5556 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2727 5456001 21.5126 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 2728 5458001 21.4697 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2729 5460001 21.4268 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2730 5462001 21.3841 [ 0 8 6 2 7 4 10 11 1 9 5 3 ] 3523.27 3490.62 + 2731 5464001 21.3414 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2732 5466001 21.2988 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 2733 5468001 21.2563 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2734 5470001 21.2138 [ 0 6 2 8 4 10 7 11 1 9 5 3 ] 3554.32 3490.62 + 2735 5472001 21.1715 [ 0 6 8 2 7 11 10 4 1 9 5 3 ] 3532.36 3490.62 + 2736 5474001 21.1292 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2737 5476001 21.0871 [ 0 6 8 2 7 10 4 11 1 9 5 3 ] 3513.79 3490.62 + 2738 5478001 21.045 [ 0 6 8 2 4 10 11 7 1 9 5 3 ] 3550.6 3490.62 + 2739 5480001 21.003 [ 0 8 6 2 7 11 10 4 1 9 5 3 ] 3565.02 3490.62 + 2740 5482001 20.961 [ 0 8 6 2 7 4 10 11 1 9 5 3 ] 3523.27 3490.62 + 2741 5484001 20.9192 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2742 5486001 20.8775 [ 0 8 6 2 7 10 4 11 1 9 5 3 ] 3546.44 3490.62 + 2743 5488001 20.8358 [ 0 6 8 2 4 10 7 11 1 9 5 3 ] 3548.66 3490.62 + 2744 5490001 20.7942 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 2745 5492001 20.7527 [ 0 6 8 2 4 10 11 7 1 9 5 3 ] 3550.6 3490.62 + 2746 5494001 20.7113 [ 0 6 8 4 10 2 7 11 1 9 5 3 ] 3563.75 3490.62 + 2747 5496001 20.6699 [ 0 6 8 2 7 10 4 11 1 9 3 5 ] 3594.57 3490.62 + 2748 5498001 20.6287 [ 0 6 8 2 4 10 11 7 1 9 5 3 ] 3550.6 3490.62 + 2749 5500001 20.5875 [ 0 8 6 2 7 11 10 4 1 9 5 3 ] 3565.02 3490.62 + 2750 5502001 20.5464 [ 0 6 8 2 7 10 4 11 1 9 5 3 ] 3513.79 3490.62 + 2751 5504001 20.5054 [ 0 6 8 2 7 11 10 4 1 9 5 3 ] 3532.36 3490.62 + 2752 5506001 20.4645 [ 0 6 8 2 7 11 10 4 1 9 5 3 ] 3532.36 3490.62 + 2753 5508001 20.4236 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2754 5510001 20.3828 [ 0 6 8 2 4 10 7 11 1 9 5 3 ] 3548.66 3490.62 + 2755 5512001 20.3422 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2756 5514001 20.3016 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 2757 5516001 20.261 [ 0 6 8 2 7 10 4 11 1 9 5 3 ] 3513.79 3490.62 + 2758 5518001 20.2206 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2759 5520001 20.1802 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2760 5522001 20.14 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2761 5524001 20.0998 [ 0 8 2 6 4 10 11 7 1 9 5 3 ] 3615.82 3490.62 + 2762 5526001 20.0596 [ 0 6 2 8 4 10 7 11 1 9 5 3 ] 3554.32 3490.62 + 2763 5528001 20.0196 [ 0 6 8 2 4 10 11 7 1 9 5 3 ] 3550.6 3490.62 + 2764 5530001 19.9796 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 2765 5532001 19.9398 [ 0 8 6 4 10 1 11 7 2 9 5 3 ] 3644.19 3490.62 + 2766 5534001 19.9 [ 0 6 8 4 10 1 11 7 2 9 3 5 ] 3665.4 3490.62 + 2767 5536001 19.8602 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 2768 5538001 19.8206 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2769 5540001 19.781 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 2770 5542001 19.7416 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2771 5544001 19.7022 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 2772 5546001 19.6628 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2773 5548001 19.6236 [ 0 6 2 8 4 10 11 7 1 9 5 3 ] 3556.26 3490.62 + 2774 5550001 19.5844 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2775 5552001 19.5453 [ 0 6 8 2 7 10 4 11 1 9 5 3 ] 3513.79 3490.62 + 2776 5554001 19.5063 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2777 5556001 19.4674 [ 0 6 8 2 7 11 10 4 1 9 5 3 ] 3532.36 3490.62 + 2778 5558001 19.4285 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 2779 5560001 19.3897 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 2780 5562001 19.351 [ 0 6 8 2 7 10 4 11 1 9 5 3 ] 3513.79 3490.62 + 2781 5564001 19.3124 [ 0 6 8 2 7 11 10 4 1 9 5 3 ] 3532.36 3490.62 + 2782 5566001 19.2739 [ 0 6 8 2 4 10 11 7 1 9 3 5 ] 3631.38 3490.62 + 2783 5568001 19.2354 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2784 5570001 19.197 [ 0 8 6 2 7 11 10 4 1 9 5 3 ] 3565.02 3490.62 + 2785 5572001 19.1587 [ 0 6 8 2 4 10 11 7 1 9 5 3 ] 3550.6 3490.62 + 2786 5574001 19.1204 [ 0 6 8 2 7 10 4 11 1 9 5 3 ] 3513.79 3490.62 + 2787 5576001 19.0823 [ 0 8 6 2 7 4 10 11 1 9 5 3 ] 3523.27 3490.62 + 2788 5578001 19.0442 [ 0 8 6 2 7 4 10 11 1 9 5 3 ] 3523.27 3490.62 + 2789 5580001 19.0062 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2790 5582001 18.9682 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 2791 5584001 18.9304 [ 0 6 8 2 7 11 10 4 1 9 5 3 ] 3532.36 3490.62 + 2792 5586001 18.8926 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2793 5588001 18.8549 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2794 5590001 18.8172 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 2795 5592001 18.7797 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2796 5594001 18.7422 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 2797 5596001 18.7048 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 2798 5598001 18.6675 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 2799 5600001 18.6302 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2800 5602001 18.593 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2801 5604001 18.5559 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 2802 5606001 18.5189 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2803 5608001 18.4819 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2804 5610001 18.445 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2805 5612001 18.4082 [ 0 6 8 2 7 10 4 11 1 9 5 3 ] 3513.79 3490.62 + 2806 5614001 18.3714 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2807 5616001 18.3348 [ 0 8 6 2 7 11 4 10 1 9 5 3 ] 3536.75 3490.62 + 2808 5618001 18.2982 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 2809 5620001 18.2617 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2810 5622001 18.2252 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 2811 5624001 18.1888 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2812 5626001 18.1525 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2813 5628001 18.1163 [ 0 6 8 2 7 10 4 11 1 9 5 3 ] 3513.79 3490.62 + 2814 5630001 18.0801 [ 0 6 8 4 10 11 1 7 2 9 5 3 ] 3596.26 3490.62 + 2815 5632001 18.044 [ 0 6 8 4 10 1 11 7 2 9 5 3 ] 3584.62 3490.62 + 2816 5634001 18.008 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2817 5636001 17.9721 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 2818 5638001 17.9362 [ 0 6 8 2 4 10 11 7 1 9 5 3 ] 3550.6 3490.62 + 2819 5640001 17.9004 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2820 5642001 17.8647 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2821 5644001 17.829 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2822 5646001 17.7934 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2823 5648001 17.7579 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2824 5650001 17.7225 [ 0 8 6 2 7 4 10 11 1 9 5 3 ] 3523.27 3490.62 + 2825 5652001 17.6871 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2826 5654001 17.6518 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2827 5656001 17.6166 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 2828 5658001 17.5814 [ 0 8 6 2 7 11 4 10 1 9 5 3 ] 3536.75 3490.62 + 2829 5660001 17.5463 [ 0 6 8 2 7 11 10 4 1 9 5 3 ] 3532.36 3490.62 + 2830 5662001 17.5113 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2831 5664001 17.4763 [ 0 8 6 2 7 10 4 11 1 9 5 3 ] 3546.44 3490.62 + 2832 5666001 17.4415 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2833 5668001 17.4066 [ 0 8 6 2 7 4 10 11 1 9 5 3 ] 3523.27 3490.62 + 2834 5670001 17.3719 [ 0 8 6 2 7 10 4 11 1 9 5 3 ] 3546.44 3490.62 + 2835 5672001 17.3372 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2836 5674001 17.3026 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2837 5676001 17.2681 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2838 5678001 17.2336 [ 0 8 6 2 7 4 10 11 1 9 5 3 ] 3523.27 3490.62 + 2839 5680001 17.1992 [ 0 6 8 2 4 10 11 7 1 9 5 3 ] 3550.6 3490.62 + 2840 5682001 17.1649 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2841 5684001 17.1306 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2842 5686001 17.0964 [ 0 8 6 2 4 10 11 7 1 9 5 3 ] 3583.26 3490.62 + 2843 5688001 17.0623 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 2844 5690001 17.0282 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2845 5692001 16.9943 [ 0 8 6 2 7 4 10 11 1 9 5 3 ] 3523.27 3490.62 + 2846 5694001 16.9603 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 2847 5696001 16.9265 [ 0 8 6 2 7 4 10 11 1 9 5 3 ] 3523.27 3490.62 + 2848 5698001 16.8927 [ 0 6 8 2 7 11 10 4 1 9 5 3 ] 3532.36 3490.62 + 2849 5700001 16.859 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 2850 5702001 16.8253 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2851 5704001 16.7917 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2852 5706001 16.7582 [ 0 8 6 2 7 4 10 11 1 9 5 3 ] 3523.27 3490.62 + 2853 5708001 16.7248 [ 0 6 8 2 7 10 4 11 1 9 5 3 ] 3513.79 3490.62 + 2854 5710001 16.6914 [ 0 6 2 8 4 10 7 11 1 9 5 3 ] 3554.32 3490.62 + 2855 5712001 16.6581 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2856 5714001 16.6248 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2857 5716001 16.5917 [ 0 6 8 2 7 10 4 11 1 9 5 3 ] 3513.79 3490.62 + 2858 5718001 16.5585 [ 0 6 8 2 7 10 4 11 1 9 5 3 ] 3513.79 3490.62 + 2859 5720001 16.5255 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2860 5722001 16.4925 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 2861 5724001 16.4596 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 2862 5726001 16.4267 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2863 5728001 16.3939 [ 0 8 6 2 7 11 4 10 1 9 5 3 ] 3536.75 3490.62 + 2864 5730001 16.3612 [ 0 6 8 2 7 10 4 11 1 9 5 3 ] 3513.79 3490.62 + 2865 5732001 16.3286 [ 0 6 8 4 10 1 11 7 2 9 5 3 ] 3584.62 3490.62 + 2866 5734001 16.296 [ 0 8 6 4 10 1 11 7 2 9 5 3 ] 3644.19 3490.62 + 2867 5736001 16.2634 [ 0 6 8 4 10 11 1 7 2 9 5 3 ] 3596.26 3490.62 + 2868 5738001 16.231 [ 0 6 8 4 10 11 1 7 2 9 5 3 ] 3596.26 3490.62 + 2869 5740001 16.1986 [ 0 6 8 2 7 10 4 11 1 9 5 3 ] 3513.79 3490.62 + 2870 5742001 16.1662 [ 0 6 8 2 7 10 4 11 1 9 5 3 ] 3513.79 3490.62 + 2871 5744001 16.134 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2872 5746001 16.1018 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2873 5748001 16.0696 [ 0 8 6 2 7 11 4 10 1 9 5 3 ] 3536.75 3490.62 + 2874 5750001 16.0376 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2875 5752001 16.0055 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2876 5754001 15.9736 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2877 5756001 15.9417 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2878 5758001 15.9099 [ 0 6 8 2 4 10 11 7 1 9 5 3 ] 3550.6 3490.62 + 2879 5760001 15.8781 [ 0 8 6 2 7 11 4 10 1 9 5 3 ] 3536.75 3490.62 + 2880 5762001 15.8465 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2881 5764001 15.8148 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2882 5766001 15.7833 [ 0 6 8 2 7 10 4 11 1 9 5 3 ] 3513.79 3490.62 + 2883 5768001 15.7518 [ 0 8 6 2 7 10 4 11 1 9 5 3 ] 3546.44 3490.62 + 2884 5770001 15.7203 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2885 5772001 15.6889 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2886 5774001 15.6576 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2887 5776001 15.6264 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 2888 5778001 15.5952 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2889 5780001 15.564 [ 0 6 8 2 7 10 4 11 1 9 5 3 ] 3513.79 3490.62 + 2890 5782001 15.533 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2891 5784001 15.502 [ 0 8 6 2 7 11 4 10 1 9 5 3 ] 3536.75 3490.62 + 2892 5786001 15.471 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 2893 5788001 15.4402 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2894 5790001 15.4093 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 2895 5792001 15.3786 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2896 5794001 15.3479 [ 0 8 6 2 7 4 10 11 1 9 5 3 ] 3523.27 3490.62 + 2897 5796001 15.3172 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2898 5798001 15.2867 [ 0 6 2 8 4 10 11 7 1 9 5 3 ] 3556.26 3490.62 + 2899 5800001 15.2562 [ 0 6 8 2 7 10 4 11 1 9 5 3 ] 3513.79 3490.62 + 2900 5802001 15.2257 [ 0 8 6 2 7 4 10 11 1 9 5 3 ] 3523.27 3490.62 + 2901 5804001 15.1953 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 2902 5806001 15.165 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 2903 5808001 15.1347 [ 0 6 8 2 7 10 4 11 1 9 5 3 ] 3513.79 3490.62 + 2904 5810001 15.1045 [ 0 8 6 2 7 4 10 11 1 9 5 3 ] 3523.27 3490.62 + 2905 5812001 15.0744 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2906 5814001 15.0443 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2907 5816001 15.0142 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2908 5818001 14.9843 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2909 5820001 14.9544 [ 0 6 8 2 7 11 10 4 1 9 5 3 ] 3532.36 3490.62 + 2910 5822001 14.9245 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2911 5824001 14.8947 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2912 5826001 14.865 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 2913 5828001 14.8353 [ 0 8 6 2 7 10 4 11 1 9 5 3 ] 3546.44 3490.62 + 2914 5830001 14.8057 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2915 5832001 14.7762 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2916 5834001 14.7467 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 2917 5836001 14.7172 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2918 5838001 14.6879 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2919 5840001 14.6585 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2920 5842001 14.6293 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2921 5844001 14.6001 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2922 5846001 14.5709 [ 0 8 6 2 7 4 10 11 1 9 5 3 ] 3523.27 3490.62 + 2923 5848001 14.5419 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 2924 5850001 14.5128 [ 0 6 8 2 4 10 11 7 1 9 5 3 ] 3550.6 3490.62 + 2925 5852001 14.4839 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2926 5854001 14.455 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 2927 5856001 14.4261 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2928 5858001 14.3973 [ 0 6 8 2 4 10 11 7 1 9 5 3 ] 3550.6 3490.62 + 2929 5860001 14.3686 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2930 5862001 14.3399 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2931 5864001 14.3113 [ 0 6 8 2 4 10 7 11 1 9 5 3 ] 3548.66 3490.62 + 2932 5866001 14.2827 [ 0 6 8 2 7 10 4 11 1 9 5 3 ] 3513.79 3490.62 + 2933 5868001 14.2542 [ 0 6 8 2 7 10 4 11 1 9 5 3 ] 3513.79 3490.62 + 2934 5870001 14.2257 [ 0 6 8 2 7 11 10 4 1 9 5 3 ] 3532.36 3490.62 + 2935 5872001 14.1974 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 2936 5874001 14.169 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 2937 5876001 14.1407 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2938 5878001 14.1125 [ 0 6 8 2 7 10 4 11 1 9 5 3 ] 3513.79 3490.62 + 2939 5880001 14.0843 [ 0 6 8 2 7 10 4 11 1 9 5 3 ] 3513.79 3490.62 + 2940 5882001 14.0562 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2941 5884001 14.0282 [ 0 6 8 4 10 2 7 11 1 9 5 3 ] 3563.75 3490.62 + 2942 5886001 14.0002 [ 0 6 2 8 4 10 11 7 1 9 5 3 ] 3556.26 3490.62 + 2943 5888001 13.9722 [ 0 8 6 2 7 11 4 10 1 9 5 3 ] 3536.75 3490.62 + 2944 5890001 13.9443 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2945 5892001 13.9165 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 2946 5894001 13.8887 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2947 5896001 13.861 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2948 5898001 13.8333 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2949 5900001 13.8057 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2950 5902001 13.7782 [ 0 8 6 2 7 4 10 11 1 9 5 3 ] 3523.27 3490.62 + 2951 5904001 13.7507 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 2952 5906001 13.7232 [ 0 6 8 2 7 10 4 11 1 9 5 3 ] 3513.79 3490.62 + 2953 5908001 13.6958 [ 0 8 6 2 7 11 4 10 1 9 5 3 ] 3536.75 3490.62 + 2954 5910001 13.6685 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2955 5912001 13.6412 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2956 5914001 13.614 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2957 5916001 13.5868 [ 0 8 6 2 7 4 10 11 1 9 5 3 ] 3523.27 3490.62 + 2958 5918001 13.5597 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 2959 5920001 13.5326 [ 0 6 8 2 7 10 4 11 1 9 5 3 ] 3513.79 3490.62 + 2960 5922001 13.5056 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2961 5924001 13.4787 [ 0 6 8 2 7 10 4 11 1 9 5 3 ] 3513.79 3490.62 + 2962 5926001 13.4518 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2963 5928001 13.4249 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2964 5930001 13.3981 [ 0 6 8 2 7 11 10 4 1 9 5 3 ] 3532.36 3490.62 + 2965 5932001 13.3714 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2966 5934001 13.3447 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2967 5936001 13.318 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2968 5938001 13.2915 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2969 5940001 13.2649 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2970 5942001 13.2384 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2971 5944001 13.212 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2972 5946001 13.1857 [ 0 6 8 2 7 10 4 11 1 9 5 3 ] 3513.79 3490.62 + 2973 5948001 13.1593 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2974 5950001 13.1331 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2975 5952001 13.1069 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2976 5954001 13.0807 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2977 5956001 13.0546 [ 0 6 8 2 7 10 4 11 1 9 5 3 ] 3513.79 3490.62 + 2978 5958001 13.0285 [ 0 6 8 4 10 2 7 11 1 9 5 3 ] 3563.75 3490.62 + 2979 5960001 13.0025 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 2980 5962001 12.9766 [ 0 8 6 2 7 10 4 11 1 9 5 3 ] 3546.44 3490.62 + 2981 5964001 12.9507 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 2982 5966001 12.9248 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2983 5968001 12.899 [ 0 6 8 2 7 10 4 11 1 9 5 3 ] 3513.79 3490.62 + 2984 5970001 12.8733 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2985 5972001 12.8476 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2986 5974001 12.8219 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2987 5976001 12.7963 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2988 5978001 12.7708 [ 0 6 8 2 7 10 4 11 1 9 5 3 ] 3513.79 3490.62 + 2989 5980001 12.7453 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 2990 5982001 12.7199 [ 0 8 6 2 7 4 10 11 1 9 5 3 ] 3523.27 3490.62 + 2991 5984001 12.6945 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 2992 5986001 12.6691 [ 0 8 6 2 7 11 10 4 1 9 5 3 ] 3565.02 3490.62 + 2993 5988001 12.6439 [ 0 6 8 2 7 10 4 11 1 9 5 3 ] 3513.79 3490.62 + 2994 5990001 12.6186 [ 0 6 8 2 7 10 4 11 1 9 5 3 ] 3513.79 3490.62 + 2995 5992001 12.5934 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2996 5994001 12.5683 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2997 5996001 12.5432 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 2998 5998001 12.5182 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 2999 6000001 12.4932 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3000 6002001 12.4682 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3001 6004001 12.4434 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3002 6006001 12.4185 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3003 6008001 12.3937 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 3004 6010001 12.369 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 3005 6012001 12.3443 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3006 6014001 12.3197 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3007 6016001 12.2951 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3008 6018001 12.2705 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 3009 6020001 12.246 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3010 6022001 12.2216 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 3011 6024001 12.1972 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 3012 6026001 12.1729 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3013 6028001 12.1486 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3014 6030001 12.1243 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3015 6032001 12.1001 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3016 6034001 12.076 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 3017 6036001 12.0519 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3018 6038001 12.0278 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3019 6040001 12.0038 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3020 6042001 11.9798 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 3021 6044001 11.9559 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3022 6046001 11.9321 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3023 6048001 11.9082 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3024 6050001 11.8845 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3025 6052001 11.8608 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3026 6054001 11.8371 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 3027 6056001 11.8135 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3028 6058001 11.7899 [ 0 8 6 2 7 4 10 11 1 9 5 3 ] 3523.27 3490.62 + 3029 6060001 11.7663 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3030 6062001 11.7429 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 3031 6064001 11.7194 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3032 6066001 11.696 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 3033 6068001 11.6727 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3034 6070001 11.6494 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3035 6072001 11.6261 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3036 6074001 11.6029 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3037 6076001 11.5798 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3038 6078001 11.5567 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 3039 6080001 11.5336 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3040 6082001 11.5106 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3041 6084001 11.4876 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3042 6086001 11.4647 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 3043 6088001 11.4418 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 3044 6090001 11.4189 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3045 6092001 11.3961 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3046 6094001 11.3734 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 3047 6096001 11.3507 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3048 6098001 11.328 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3049 6100001 11.3054 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3050 6102001 11.2829 [ 0 6 8 2 7 10 4 11 1 9 5 3 ] 3513.79 3490.62 + 3051 6104001 11.2603 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3052 6106001 11.2379 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3053 6108001 11.2154 [ 0 6 8 2 7 10 4 11 1 9 5 3 ] 3513.79 3490.62 + 3054 6110001 11.1931 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3055 6112001 11.1707 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 3056 6114001 11.1484 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 3057 6116001 11.1262 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3058 6118001 11.104 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3059 6120001 11.0818 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3060 6122001 11.0597 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3061 6124001 11.0376 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 3062 6126001 11.0156 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3063 6128001 10.9936 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3064 6130001 10.9716 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3065 6132001 10.9497 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3066 6134001 10.9279 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3067 6136001 10.9061 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3068 6138001 10.8843 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3069 6140001 10.8626 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3070 6142001 10.8409 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3071 6144001 10.8193 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3072 6146001 10.7977 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3073 6148001 10.7761 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3074 6150001 10.7546 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3075 6152001 10.7331 [ 0 6 8 2 7 10 4 11 1 9 5 3 ] 3513.79 3490.62 + 3076 6154001 10.7117 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3077 6156001 10.6903 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3078 6158001 10.669 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3079 6160001 10.6477 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3080 6162001 10.6264 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3081 6164001 10.6052 [ 0 6 8 2 7 10 4 11 1 9 5 3 ] 3513.79 3490.62 + 3082 6166001 10.5841 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3083 6168001 10.5629 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3084 6170001 10.5418 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 3085 6172001 10.5208 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3086 6174001 10.4998 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3087 6176001 10.4789 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3088 6178001 10.4579 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3089 6180001 10.4371 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3090 6182001 10.4162 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3091 6184001 10.3954 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3092 6186001 10.3747 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3093 6188001 10.354 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3094 6190001 10.3333 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3095 6192001 10.3127 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 3096 6194001 10.2921 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 3097 6196001 10.2716 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3098 6198001 10.2511 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 3099 6200001 10.2306 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3100 6202001 10.2102 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3101 6204001 10.1898 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3102 6206001 10.1695 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3103 6208001 10.1492 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3104 6210001 10.1289 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3105 6212001 10.1087 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3106 6214001 10.0885 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3107 6216001 10.0684 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3108 6218001 10.0483 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3109 6220001 10.0282 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3110 6222001 10.0082 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3111 6224001 9.98823 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3112 6226001 9.96829 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3113 6228001 9.94839 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3114 6230001 9.92853 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3115 6232001 9.90872 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3116 6234001 9.88894 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3117 6236001 9.8692 [ 0 6 8 2 7 10 4 11 1 9 5 3 ] 3513.79 3490.62 + 3118 6238001 9.8495 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3119 6240001 9.82984 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3120 6242001 9.81022 [ 0 6 8 2 7 10 4 11 1 9 5 3 ] 3513.79 3490.62 + 3121 6244001 9.79064 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3122 6246001 9.7711 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3123 6248001 9.7516 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3124 6250001 9.73213 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3125 6252001 9.71271 [ 0 6 8 2 7 11 10 4 1 9 5 3 ] 3532.36 3490.62 + 3126 6254001 9.69332 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3127 6256001 9.67397 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 3128 6258001 9.65466 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3129 6260001 9.63539 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3130 6262001 9.61616 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3131 6264001 9.59696 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3132 6266001 9.57781 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3133 6268001 9.55869 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 3134 6270001 9.53961 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3135 6272001 9.52057 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 3136 6274001 9.50157 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3137 6276001 9.4826 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3138 6278001 9.46368 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3139 6280001 9.44479 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 3140 6282001 9.42593 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3141 6284001 9.40712 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 3142 6286001 9.38834 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 3143 6288001 9.3696 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3144 6290001 9.3509 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 3145 6292001 9.33224 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3146 6294001 9.31361 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3147 6296001 9.29502 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3148 6298001 9.27647 [ 0 6 8 2 7 10 4 11 1 9 5 3 ] 3513.79 3490.62 + 3149 6300001 9.25795 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3150 6302001 9.23947 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3151 6304001 9.22103 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3152 6306001 9.20263 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3153 6308001 9.18426 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3154 6310001 9.16592 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3155 6312001 9.14763 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 3156 6314001 9.12937 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3157 6316001 9.11115 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 3158 6318001 9.09296 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 3159 6320001 9.07481 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3160 6322001 9.0567 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3161 6324001 9.03862 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3162 6326001 9.02058 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3163 6328001 9.00258 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 3164 6330001 8.98461 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 3165 6332001 8.96667 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3166 6334001 8.94878 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3167 6336001 8.93091 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3168 6338001 8.91309 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 3169 6340001 8.8953 [ 0 6 8 2 7 10 4 11 1 9 5 3 ] 3513.79 3490.62 + 3170 6342001 8.87754 [ 0 6 8 2 7 10 4 11 1 9 5 3 ] 3513.79 3490.62 + 3171 6344001 8.85982 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3172 6346001 8.84214 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3173 6348001 8.82449 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3174 6350001 8.80688 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3175 6352001 8.7893 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3176 6354001 8.77175 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3177 6356001 8.75425 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3178 6358001 8.73677 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 3179 6360001 8.71933 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3180 6362001 8.70193 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 3181 6364001 8.68456 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3182 6366001 8.66723 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3183 6368001 8.64993 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3184 6370001 8.63266 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3185 6372001 8.61543 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3186 6374001 8.59823 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3187 6376001 8.58107 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 3188 6378001 8.56394 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3189 6380001 8.54685 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3190 6382001 8.52979 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3191 6384001 8.51276 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3192 6386001 8.49577 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3193 6388001 8.47881 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3194 6390001 8.46189 [ 0 8 6 2 7 10 4 11 1 9 5 3 ] 3546.44 3490.62 + 3195 6392001 8.445 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 3196 6394001 8.42814 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3197 6396001 8.41132 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3198 6398001 8.39453 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3199 6400001 8.37778 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3200 6402001 8.36106 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3201 6404001 8.34437 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3202 6406001 8.32771 [ 0 6 8 2 7 10 4 11 1 9 5 3 ] 3513.79 3490.62 + 3203 6408001 8.31109 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 3204 6410001 8.2945 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3205 6412001 8.27794 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3206 6414001 8.26142 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3207 6416001 8.24493 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3208 6418001 8.22847 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3209 6420001 8.21205 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3210 6422001 8.19566 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 3211 6424001 8.1793 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3212 6426001 8.16297 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 3213 6428001 8.14668 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3214 6430001 8.13042 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3215 6432001 8.11419 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3216 6434001 8.098 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3217 6436001 8.08183 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 3218 6438001 8.0657 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3219 6440001 8.0496 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3220 6442001 8.03353 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3221 6444001 8.0175 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 3222 6446001 8.0015 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 3223 6448001 7.98553 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3224 6450001 7.96959 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3225 6452001 7.95368 [ 0 8 6 2 7 4 10 11 1 9 5 3 ] 3523.27 3490.62 + 3226 6454001 7.9378 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 3227 6456001 7.92196 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3228 6458001 7.90615 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3229 6460001 7.89037 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3230 6462001 7.87462 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3231 6464001 7.8589 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3232 6466001 7.84321 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3233 6468001 7.82756 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 3234 6470001 7.81193 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 3235 6472001 7.79634 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3236 6474001 7.78078 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3237 6476001 7.76525 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 3238 6478001 7.74975 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 3239 6480001 7.73428 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3240 6482001 7.71884 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3241 6484001 7.70344 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3242 6486001 7.68806 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 3243 6488001 7.67272 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3244 6490001 7.6574 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3245 6492001 7.64212 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3246 6494001 7.62686 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3247 6496001 7.61164 [ 0 6 8 2 7 10 4 11 1 9 5 3 ] 3513.79 3490.62 + 3248 6498001 7.59645 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3249 6500001 7.58128 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3250 6502001 7.56615 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3251 6504001 7.55105 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3252 6506001 7.53598 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3253 6508001 7.52094 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3254 6510001 7.50592 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3255 6512001 7.49094 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3256 6514001 7.47599 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3257 6516001 7.46107 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3258 6518001 7.44618 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3259 6520001 7.43131 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3260 6522001 7.41648 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 3261 6524001 7.40168 [ 0 8 6 2 7 4 10 11 1 9 5 3 ] 3523.27 3490.62 + 3262 6526001 7.3869 [ 0 8 6 2 7 4 10 11 1 9 5 3 ] 3523.27 3490.62 + 3263 6528001 7.37216 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 3264 6530001 7.35744 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3265 6532001 7.34276 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3266 6534001 7.3281 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3267 6536001 7.31347 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3268 6538001 7.29888 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 3269 6540001 7.28431 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3270 6542001 7.26977 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 3271 6544001 7.25526 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3272 6546001 7.24078 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3273 6548001 7.22632 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3274 6550001 7.2119 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3275 6552001 7.19751 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3276 6554001 7.18314 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3277 6556001 7.1688 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3278 6558001 7.15449 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3279 6560001 7.14021 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3280 6562001 7.12596 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3281 6564001 7.11174 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3282 6566001 7.09754 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 3283 6568001 7.08337 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3284 6570001 7.06924 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3285 6572001 7.05513 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3286 6574001 7.04104 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 3287 6576001 7.02699 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 3288 6578001 7.01296 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3289 6580001 6.99897 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 3290 6582001 6.985 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3291 6584001 6.97105 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3292 6586001 6.95714 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 3293 6588001 6.94325 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3294 6590001 6.92939 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3295 6592001 6.91556 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3296 6594001 6.90176 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3297 6596001 6.88798 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3298 6598001 6.87424 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3299 6600001 6.86051 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3300 6602001 6.84682 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3301 6604001 6.83315 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3302 6606001 6.81952 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3303 6608001 6.8059 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3304 6610001 6.79232 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3305 6612001 6.77876 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3306 6614001 6.76523 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3307 6616001 6.75173 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3308 6618001 6.73825 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 3309 6620001 6.7248 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3310 6622001 6.71138 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 3311 6624001 6.69798 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3312 6626001 6.68461 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3313 6628001 6.67127 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3314 6630001 6.65795 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3315 6632001 6.64467 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3316 6634001 6.6314 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3317 6636001 6.61817 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3318 6638001 6.60496 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3319 6640001 6.59177 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3320 6642001 6.57862 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3321 6644001 6.56548 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3322 6646001 6.55238 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3323 6648001 6.5393 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3324 6650001 6.52625 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3325 6652001 6.51322 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3326 6654001 6.50022 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3327 6656001 6.48725 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3328 6658001 6.4743 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3329 6660001 6.46138 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 3330 6662001 6.44848 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3331 6664001 6.43561 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3332 6666001 6.42276 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3333 6668001 6.40994 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3334 6670001 6.39715 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3335 6672001 6.38438 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3336 6674001 6.37164 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3337 6676001 6.35892 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3338 6678001 6.34623 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3339 6680001 6.33356 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3340 6682001 6.32092 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3341 6684001 6.3083 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3342 6686001 6.29571 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 3343 6688001 6.28314 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3344 6690001 6.2706 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3345 6692001 6.25809 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3346 6694001 6.24559 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3347 6696001 6.23313 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3348 6698001 6.22069 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3349 6700001 6.20827 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3350 6702001 6.19588 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3351 6704001 6.18351 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3352 6706001 6.17117 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3353 6708001 6.15885 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3354 6710001 6.14656 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3355 6712001 6.13429 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3356 6714001 6.12205 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3357 6716001 6.10983 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3358 6718001 6.09763 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3359 6720001 6.08546 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 3360 6722001 6.07331 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3361 6724001 6.06119 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 3362 6726001 6.04909 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3363 6728001 6.03702 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3364 6730001 6.02497 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3365 6732001 6.01294 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3366 6734001 6.00094 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3367 6736001 5.98896 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3368 6738001 5.97701 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3369 6740001 5.96508 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3370 6742001 5.95317 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3371 6744001 5.94129 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3372 6746001 5.92943 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3373 6748001 5.9176 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3374 6750001 5.90578 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 3375 6752001 5.894 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3376 6754001 5.88223 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3377 6756001 5.87049 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 3378 6758001 5.85877 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3379 6760001 5.84708 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3380 6762001 5.83541 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3381 6764001 5.82376 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 3382 6766001 5.81214 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3383 6768001 5.80054 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3384 6770001 5.78896 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3385 6772001 5.7774 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3386 6774001 5.76587 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3387 6776001 5.75436 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3388 6778001 5.74288 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3389 6780001 5.73141 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3390 6782001 5.71997 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3391 6784001 5.70856 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3392 6786001 5.69716 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3393 6788001 5.68579 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3394 6790001 5.67444 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3395 6792001 5.66312 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 3396 6794001 5.65181 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3397 6796001 5.64053 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3398 6798001 5.62927 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 3399 6800001 5.61804 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3400 6802001 5.60682 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3401 6804001 5.59563 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3402 6806001 5.58446 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3403 6808001 5.57332 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3404 6810001 5.56219 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3405 6812001 5.55109 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3406 6814001 5.54001 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3407 6816001 5.52895 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3408 6818001 5.51792 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3409 6820001 5.5069 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3410 6822001 5.49591 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3411 6824001 5.48494 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3412 6826001 5.47399 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3413 6828001 5.46307 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3414 6830001 5.45216 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3415 6832001 5.44128 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3416 6834001 5.43042 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3417 6836001 5.41958 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3418 6838001 5.40876 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3419 6840001 5.39797 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3420 6842001 5.38719 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 3421 6844001 5.37644 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3422 6846001 5.36571 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3423 6848001 5.355 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3424 6850001 5.34431 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3425 6852001 5.33364 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 3426 6854001 5.32299 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3427 6856001 5.31237 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3428 6858001 5.30177 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3429 6860001 5.29118 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3430 6862001 5.28062 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3431 6864001 5.27008 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3432 6866001 5.25956 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3433 6868001 5.24907 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3434 6870001 5.23859 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3435 6872001 5.22813 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3436 6874001 5.2177 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3437 6876001 5.20728 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3438 6878001 5.19689 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3439 6880001 5.18652 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 3440 6882001 5.17616 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 3441 6884001 5.16583 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3442 6886001 5.15552 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3443 6888001 5.14523 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3444 6890001 5.13496 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3445 6892001 5.12471 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3446 6894001 5.11448 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3447 6896001 5.10427 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3448 6898001 5.09408 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3449 6900001 5.08392 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3450 6902001 5.07377 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3451 6904001 5.06364 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3452 6906001 5.05354 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3453 6908001 5.04345 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3454 6910001 5.03338 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3455 6912001 5.02333 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3456 6914001 5.01331 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3457 6916001 5.0033 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3458 6918001 4.99331 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 3459 6920001 4.98335 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3460 6922001 4.9734 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3461 6924001 4.96347 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3462 6926001 4.95357 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 3463 6928001 4.94368 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3464 6930001 4.93381 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3465 6932001 4.92396 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3466 6934001 4.91414 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3467 6936001 4.90433 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3468 6938001 4.89454 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3469 6940001 4.88477 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3470 6942001 4.87502 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3471 6944001 4.86529 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3472 6946001 4.85558 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3473 6948001 4.84589 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3474 6950001 4.83621 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3475 6952001 4.82656 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3476 6954001 4.81693 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3477 6956001 4.80731 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3478 6958001 4.79772 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 3479 6960001 4.78814 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3480 6962001 4.77858 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3481 6964001 4.76904 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3482 6966001 4.75953 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3483 6968001 4.75003 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3484 6970001 4.74054 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3485 6972001 4.73108 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3486 6974001 4.72164 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3487 6976001 4.71221 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 3488 6978001 4.70281 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3489 6980001 4.69342 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3490 6982001 4.68405 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3491 6984001 4.6747 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3492 6986001 4.66537 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3493 6988001 4.65606 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3494 6990001 4.64677 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3495 6992001 4.63749 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3496 6994001 4.62824 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3497 6996001 4.619 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3498 6998001 4.60978 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3499 7000001 4.60058 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3500 7002001 4.59139 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3501 7004001 4.58223 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3502 7006001 4.57308 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3503 7008001 4.56396 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3504 7010001 4.55485 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 3505 7012001 4.54576 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 3506 7014001 4.53668 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 3507 7016001 4.52763 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3508 7018001 4.51859 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3509 7020001 4.50957 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3510 7022001 4.50057 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3511 7024001 4.49159 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3512 7026001 4.48262 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3513 7028001 4.47367 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3514 7030001 4.46474 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3515 7032001 4.45583 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3516 7034001 4.44694 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3517 7036001 4.43806 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3518 7038001 4.4292 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3519 7040001 4.42036 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3520 7042001 4.41154 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3521 7044001 4.40273 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3522 7046001 4.39395 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3523 7048001 4.38518 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3524 7050001 4.37642 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3525 7052001 4.36769 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3526 7054001 4.35897 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3527 7056001 4.35027 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3528 7058001 4.34159 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3529 7060001 4.33292 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3530 7062001 4.32427 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3531 7064001 4.31564 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3532 7066001 4.30703 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3533 7068001 4.29843 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3534 7070001 4.28985 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3535 7072001 4.28129 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3536 7074001 4.27274 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3537 7076001 4.26421 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3538 7078001 4.2557 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3539 7080001 4.24721 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3540 7082001 4.23873 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3541 7084001 4.23027 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3542 7086001 4.22183 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3543 7088001 4.2134 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3544 7090001 4.20499 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3545 7092001 4.1966 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3546 7094001 4.18822 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3547 7096001 4.17986 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3548 7098001 4.17152 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3549 7100001 4.16319 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3550 7102001 4.15488 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3551 7104001 4.14659 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3552 7106001 4.13831 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 3553 7108001 4.13005 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3554 7110001 4.12181 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3555 7112001 4.11358 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3556 7114001 4.10537 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3557 7116001 4.09718 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3558 7118001 4.089 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3559 7120001 4.08084 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3560 7122001 4.07269 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3561 7124001 4.06456 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3562 7126001 4.05645 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3563 7128001 4.04835 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3564 7130001 4.04027 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3565 7132001 4.03221 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3566 7134001 4.02416 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3567 7136001 4.01613 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3568 7138001 4.00811 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3569 7140001 4.00011 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3570 7142001 3.99213 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3571 7144001 3.98416 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3572 7146001 3.9762 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3573 7148001 3.96827 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3574 7150001 3.96035 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3575 7152001 3.95244 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3576 7154001 3.94455 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3577 7156001 3.93668 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3578 7158001 3.92882 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3579 7160001 3.92098 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3580 7162001 3.91315 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3581 7164001 3.90534 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3582 7166001 3.89755 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3583 7168001 3.88977 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3584 7170001 3.882 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3585 7172001 3.87426 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3586 7174001 3.86652 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3587 7176001 3.85881 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3588 7178001 3.8511 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3589 7180001 3.84342 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3590 7182001 3.83574 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3591 7184001 3.82809 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3592 7186001 3.82045 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3593 7188001 3.81282 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3594 7190001 3.80521 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3595 7192001 3.79762 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3596 7194001 3.79004 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3597 7196001 3.78247 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3598 7198001 3.77492 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3599 7200001 3.76739 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3600 7202001 3.75987 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3601 7204001 3.75236 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3602 7206001 3.74487 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3603 7208001 3.7374 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3604 7210001 3.72994 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3605 7212001 3.72249 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3606 7214001 3.71506 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3607 7216001 3.70765 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3608 7218001 3.70025 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3609 7220001 3.69286 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3610 7222001 3.68549 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3611 7224001 3.67813 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3612 7226001 3.67079 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3613 7228001 3.66347 [ 0 6 8 2 7 10 4 11 1 9 5 3 ] 3513.79 3490.62 + 3614 7230001 3.65615 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3615 7232001 3.64886 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3616 7234001 3.64157 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3617 7236001 3.6343 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3618 7238001 3.62705 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3619 7240001 3.61981 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3620 7242001 3.61258 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3621 7244001 3.60537 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3622 7246001 3.59818 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3623 7248001 3.591 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3624 7250001 3.58383 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3625 7252001 3.57667 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3626 7254001 3.56954 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3627 7256001 3.56241 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3628 7258001 3.5553 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3629 7260001 3.5482 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3630 7262001 3.54112 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3631 7264001 3.53405 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3632 7266001 3.527 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3633 7268001 3.51996 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3634 7270001 3.51293 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3635 7272001 3.50592 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3636 7274001 3.49892 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3637 7276001 3.49194 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3638 7278001 3.48497 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3639 7280001 3.47801 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3640 7282001 3.47107 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3641 7284001 3.46414 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3642 7286001 3.45723 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3643 7288001 3.45033 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3644 7290001 3.44344 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3645 7292001 3.43657 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3646 7294001 3.42971 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3647 7296001 3.42286 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3648 7298001 3.41603 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3649 7300001 3.40921 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3650 7302001 3.40241 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3651 7304001 3.39562 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3652 7306001 3.38884 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3653 7308001 3.38208 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3654 7310001 3.37532 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3655 7312001 3.36859 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3656 7314001 3.36186 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3657 7316001 3.35515 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3658 7318001 3.34846 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3659 7320001 3.34177 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3660 7322001 3.3351 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3661 7324001 3.32845 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3662 7326001 3.3218 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3663 7328001 3.31517 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3664 7330001 3.30855 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3665 7332001 3.30195 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3666 7334001 3.29536 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3667 7336001 3.28878 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3668 7338001 3.28222 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3669 7340001 3.27567 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3670 7342001 3.26913 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3671 7344001 3.2626 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3672 7346001 3.25609 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3673 7348001 3.24959 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3674 7350001 3.24311 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3675 7352001 3.23663 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3676 7354001 3.23017 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3677 7356001 3.22372 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3678 7358001 3.21729 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3679 7360001 3.21087 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3680 7362001 3.20446 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3681 7364001 3.19806 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3682 7366001 3.19168 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3683 7368001 3.18531 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3684 7370001 3.17895 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3685 7372001 3.17261 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3686 7374001 3.16627 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3687 7376001 3.15995 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3688 7378001 3.15365 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3689 7380001 3.14735 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3690 7382001 3.14107 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3691 7384001 3.1348 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3692 7386001 3.12854 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3693 7388001 3.1223 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3694 7390001 3.11607 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3695 7392001 3.10985 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3696 7394001 3.10364 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3697 7396001 3.09744 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3698 7398001 3.09126 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3699 7400001 3.08509 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3700 7402001 3.07893 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3701 7404001 3.07279 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3702 7406001 3.06665 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3703 7408001 3.06053 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3704 7410001 3.05442 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3705 7412001 3.04833 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3706 7414001 3.04224 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3707 7416001 3.03617 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3708 7418001 3.03011 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3709 7420001 3.02406 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3710 7422001 3.01803 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3711 7424001 3.012 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3712 7426001 3.00599 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3713 7428001 2.99999 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3714 7430001 2.994 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3715 7432001 2.98803 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3716 7434001 2.98206 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3717 7436001 2.97611 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3718 7438001 2.97017 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3719 7440001 2.96424 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3720 7442001 2.95833 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3721 7444001 2.95242 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3722 7446001 2.94653 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3723 7448001 2.94065 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3724 7450001 2.93478 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3725 7452001 2.92892 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3726 7454001 2.92307 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3727 7456001 2.91724 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3728 7458001 2.91142 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3729 7460001 2.9056 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3730 7462001 2.8998 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3731 7464001 2.89402 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3732 7466001 2.88824 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3733 7468001 2.88247 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3734 7470001 2.87672 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3735 7472001 2.87098 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3736 7474001 2.86525 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3737 7476001 2.85953 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3738 7478001 2.85382 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3739 7480001 2.84813 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3740 7482001 2.84244 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3741 7484001 2.83677 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3742 7486001 2.83111 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3743 7488001 2.82545 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3744 7490001 2.81981 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3745 7492001 2.81419 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3746 7494001 2.80857 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3747 7496001 2.80296 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3748 7498001 2.79737 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3749 7500001 2.79179 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3750 7502001 2.78621 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3751 7504001 2.78065 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3752 7506001 2.7751 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3753 7508001 2.76956 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3754 7510001 2.76403 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3755 7512001 2.75852 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3756 7514001 2.75301 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3757 7516001 2.74752 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3758 7518001 2.74203 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3759 7520001 2.73656 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3760 7522001 2.7311 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3761 7524001 2.72565 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3762 7526001 2.7202 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3763 7528001 2.71478 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3764 7530001 2.70936 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3765 7532001 2.70395 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3766 7534001 2.69855 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3767 7536001 2.69317 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3768 7538001 2.68779 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3769 7540001 2.68242 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3770 7542001 2.67707 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3771 7544001 2.67173 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3772 7546001 2.66639 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3773 7548001 2.66107 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3774 7550001 2.65576 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3775 7552001 2.65046 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3776 7554001 2.64517 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3777 7556001 2.63989 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3778 7558001 2.63462 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3779 7560001 2.62936 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3780 7562001 2.62411 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3781 7564001 2.61888 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3782 7566001 2.61365 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3783 7568001 2.60843 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3784 7570001 2.60323 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3785 7572001 2.59803 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3786 7574001 2.59284 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3787 7576001 2.58767 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3788 7578001 2.5825 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3789 7580001 2.57735 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3790 7582001 2.5722 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3791 7584001 2.56707 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3792 7586001 2.56195 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3793 7588001 2.55683 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3794 7590001 2.55173 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3795 7592001 2.54664 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3796 7594001 2.54155 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3797 7596001 2.53648 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3798 7598001 2.53142 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3799 7600001 2.52636 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3800 7602001 2.52132 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3801 7604001 2.51629 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3802 7606001 2.51127 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3803 7608001 2.50625 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3804 7610001 2.50125 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3805 7612001 2.49626 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3806 7614001 2.49128 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3807 7616001 2.4863 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3808 7618001 2.48134 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3809 7620001 2.47639 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3810 7622001 2.47145 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3811 7624001 2.46651 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3812 7626001 2.46159 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3813 7628001 2.45668 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3814 7630001 2.45177 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3815 7632001 2.44688 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3816 7634001 2.44199 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3817 7636001 2.43712 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 3818 7638001 2.43226 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 3819 7640001 2.4274 [ 0 6 8 2 7 11 4 10 1 9 5 3 ] 3504.09 3490.62 + 3820 7642001 2.42256 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3821 7644001 2.41772 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3822 7646001 2.41289 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3823 7648001 2.40808 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3824 7650001 2.40327 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3825 7652001 2.39847 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3826 7654001 2.39369 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3827 7656001 2.38891 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3828 7658001 2.38414 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3829 7660001 2.37938 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3830 7662001 2.37463 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3831 7664001 2.36989 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3832 7666001 2.36516 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3833 7668001 2.36044 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3834 7670001 2.35573 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3835 7672001 2.35103 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3836 7674001 2.34634 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3837 7676001 2.34165 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3838 7678001 2.33698 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3839 7680001 2.33231 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3840 7682001 2.32766 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3841 7684001 2.32301 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3842 7686001 2.31838 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3843 7688001 2.31375 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3844 7690001 2.30913 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3845 7692001 2.30452 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3846 7694001 2.29992 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3847 7696001 2.29533 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3848 7698001 2.29075 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3849 7700001 2.28618 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3850 7702001 2.28161 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3851 7704001 2.27706 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3852 7706001 2.27251 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3853 7708001 2.26798 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3854 7710001 2.26345 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3855 7712001 2.25893 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3856 7714001 2.25442 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3857 7716001 2.24993 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3858 7718001 2.24543 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3859 7720001 2.24095 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3860 7722001 2.23648 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3861 7724001 2.23202 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3862 7726001 2.22756 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3863 7728001 2.22311 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3864 7730001 2.21868 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3865 7732001 2.21425 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3866 7734001 2.20983 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3867 7736001 2.20542 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3868 7738001 2.20102 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3869 7740001 2.19662 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3870 7742001 2.19224 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3871 7744001 2.18786 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3872 7746001 2.1835 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3873 7748001 2.17914 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3874 7750001 2.17479 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3875 7752001 2.17045 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3876 7754001 2.16611 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3877 7756001 2.16179 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3878 7758001 2.15748 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3879 7760001 2.15317 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3880 7762001 2.14887 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3881 7764001 2.14458 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3882 7766001 2.1403 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3883 7768001 2.13603 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3884 7770001 2.13177 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3885 7772001 2.12751 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3886 7774001 2.12326 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3887 7776001 2.11903 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3888 7778001 2.1148 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3889 7780001 2.11058 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3890 7782001 2.10636 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3891 7784001 2.10216 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3892 7786001 2.09796 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3893 7788001 2.09378 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3894 7790001 2.0896 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3895 7792001 2.08543 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3896 7794001 2.08126 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3897 7796001 2.07711 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3898 7798001 2.07296 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3899 7800001 2.06882 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3900 7802001 2.0647 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3901 7804001 2.06057 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3902 7806001 2.05646 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3903 7808001 2.05236 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3904 7810001 2.04826 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3905 7812001 2.04417 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3906 7814001 2.04009 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3907 7816001 2.03602 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3908 7818001 2.03196 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3909 7820001 2.0279 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3910 7822001 2.02385 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3911 7824001 2.01981 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3912 7826001 2.01578 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3913 7828001 2.01176 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3914 7830001 2.00774 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3915 7832001 2.00373 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3916 7834001 1.99974 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3917 7836001 1.99574 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3918 7838001 1.99176 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3919 7840001 1.98778 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3920 7842001 1.98382 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3921 7844001 1.97986 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3922 7846001 1.97591 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3923 7848001 1.97196 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3924 7850001 1.96803 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3925 7852001 1.9641 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3926 7854001 1.96018 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3927 7856001 1.95626 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3928 7858001 1.95236 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3929 7860001 1.94846 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3930 7862001 1.94457 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3931 7864001 1.94069 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3932 7866001 1.93682 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3933 7868001 1.93295 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3934 7870001 1.92909 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3935 7872001 1.92524 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3936 7874001 1.9214 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3937 7876001 1.91757 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3938 7878001 1.91374 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3939 7880001 1.90992 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3940 7882001 1.90611 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3941 7884001 1.9023 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3942 7886001 1.8985 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3943 7888001 1.89472 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3944 7890001 1.89093 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3945 7892001 1.88716 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3946 7894001 1.88339 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3947 7896001 1.87963 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3948 7898001 1.87588 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3949 7900001 1.87214 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3950 7902001 1.8684 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3951 7904001 1.86467 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3952 7906001 1.86095 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3953 7908001 1.85723 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3954 7910001 1.85353 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3955 7912001 1.84983 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3956 7914001 1.84614 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3957 7916001 1.84245 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3958 7918001 1.83877 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3959 7920001 1.8351 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3960 7922001 1.83144 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3961 7924001 1.82778 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3962 7926001 1.82414 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3963 7928001 1.8205 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3964 7930001 1.81686 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3965 7932001 1.81324 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3966 7934001 1.80962 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3967 7936001 1.806 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3968 7938001 1.8024 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3969 7940001 1.7988 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3970 7942001 1.79521 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3971 7944001 1.79163 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3972 7946001 1.78805 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3973 7948001 1.78448 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3974 7950001 1.78092 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3975 7952001 1.77737 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3976 7954001 1.77382 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3977 7956001 1.77028 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3978 7958001 1.76674 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3979 7960001 1.76322 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3980 7962001 1.7597 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3981 7964001 1.75619 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3982 7966001 1.75268 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3983 7968001 1.74918 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3984 7970001 1.74569 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3985 7972001 1.74221 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3986 7974001 1.73873 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3987 7976001 1.73526 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3988 7978001 1.7318 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3989 7980001 1.72834 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3990 7982001 1.72489 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3991 7984001 1.72145 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3992 7986001 1.71801 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3993 7988001 1.71458 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3994 7990001 1.71116 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3995 7992001 1.70774 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3996 7994001 1.70433 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3997 7996001 1.70093 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3998 7998001 1.69754 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 3999 8000001 1.69415 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4000 8002001 1.69077 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4001 8004001 1.68739 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4002 8006001 1.68402 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4003 8008001 1.68066 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4004 8010001 1.67731 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4005 8012001 1.67396 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4006 8014001 1.67062 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4007 8016001 1.66728 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4008 8018001 1.66396 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4009 8020001 1.66064 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4010 8022001 1.65732 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4011 8024001 1.65401 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4012 8026001 1.65071 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4013 8028001 1.64742 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4014 8030001 1.64413 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4015 8032001 1.64085 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4016 8034001 1.63757 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4017 8036001 1.6343 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4018 8038001 1.63104 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4019 8040001 1.62779 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4020 8042001 1.62454 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4021 8044001 1.62129 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4022 8046001 1.61806 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4023 8048001 1.61483 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4024 8050001 1.6116 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4025 8052001 1.60839 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4026 8054001 1.60518 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4027 8056001 1.60197 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4028 8058001 1.59878 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4029 8060001 1.59559 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4030 8062001 1.5924 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4031 8064001 1.58922 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4032 8066001 1.58605 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4033 8068001 1.58288 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4034 8070001 1.57972 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4035 8072001 1.57657 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4036 8074001 1.57342 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4037 8076001 1.57028 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4038 8078001 1.56715 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4039 8080001 1.56402 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4040 8082001 1.5609 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4041 8084001 1.55778 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4042 8086001 1.55467 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4043 8088001 1.55157 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4044 8090001 1.54847 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4045 8092001 1.54538 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4046 8094001 1.5423 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4047 8096001 1.53922 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4048 8098001 1.53615 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4049 8100001 1.53308 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4050 8102001 1.53002 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4051 8104001 1.52697 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4052 8106001 1.52392 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4053 8108001 1.52088 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4054 8110001 1.51784 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4055 8112001 1.51481 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4056 8114001 1.51179 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4057 8116001 1.50877 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4058 8118001 1.50576 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4059 8120001 1.50276 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4060 8122001 1.49976 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4061 8124001 1.49676 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4062 8126001 1.49377 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4063 8128001 1.49079 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4064 8130001 1.48782 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4065 8132001 1.48485 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4066 8134001 1.48188 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4067 8136001 1.47893 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4068 8138001 1.47597 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4069 8140001 1.47303 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4070 8142001 1.47009 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4071 8144001 1.46715 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4072 8146001 1.46423 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4073 8148001 1.4613 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4074 8150001 1.45839 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4075 8152001 1.45548 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4076 8154001 1.45257 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4077 8156001 1.44967 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4078 8158001 1.44678 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4079 8160001 1.44389 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4080 8162001 1.44101 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4081 8164001 1.43813 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4082 8166001 1.43526 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4083 8168001 1.4324 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4084 8170001 1.42954 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4085 8172001 1.42668 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4086 8174001 1.42384 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4087 8176001 1.42099 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4088 8178001 1.41816 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4089 8180001 1.41533 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4090 8182001 1.4125 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4091 8184001 1.40968 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4092 8186001 1.40687 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4093 8188001 1.40406 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4094 8190001 1.40126 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4095 8192001 1.39846 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4096 8194001 1.39567 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4097 8196001 1.39288 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4098 8198001 1.3901 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4099 8200001 1.38733 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4100 8202001 1.38456 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4101 8204001 1.3818 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4102 8206001 1.37904 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4103 8208001 1.37629 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4104 8210001 1.37354 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4105 8212001 1.3708 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4106 8214001 1.36806 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4107 8216001 1.36533 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4108 8218001 1.3626 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4109 8220001 1.35989 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4110 8222001 1.35717 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4111 8224001 1.35446 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4112 8226001 1.35176 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4113 8228001 1.34906 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4114 8230001 1.34637 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4115 8232001 1.34368 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4116 8234001 1.341 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4117 8236001 1.33832 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4118 8238001 1.33565 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4119 8240001 1.33298 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4120 8242001 1.33032 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4121 8244001 1.32767 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4122 8246001 1.32502 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4123 8248001 1.32237 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4124 8250001 1.31973 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4125 8252001 1.3171 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4126 8254001 1.31447 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4127 8256001 1.31185 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4128 8258001 1.30923 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4129 8260001 1.30662 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4130 8262001 1.30401 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4131 8264001 1.3014 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4132 8266001 1.29881 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4133 8268001 1.29621 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4134 8270001 1.29363 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4135 8272001 1.29105 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4136 8274001 1.28847 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4137 8276001 1.2859 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4138 8278001 1.28333 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4139 8280001 1.28077 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4140 8282001 1.27821 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4141 8284001 1.27566 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4142 8286001 1.27311 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4143 8288001 1.27057 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4144 8290001 1.26804 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4145 8292001 1.26551 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4146 8294001 1.26298 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4147 8296001 1.26046 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4148 8298001 1.25794 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4149 8300001 1.25543 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4150 8302001 1.25293 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4151 8304001 1.25043 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4152 8306001 1.24793 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4153 8308001 1.24544 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4154 8310001 1.24295 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4155 8312001 1.24047 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4156 8314001 1.238 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4157 8316001 1.23553 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4158 8318001 1.23306 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4159 8320001 1.2306 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4160 8322001 1.22814 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4161 8324001 1.22569 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4162 8326001 1.22324 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4163 8328001 1.2208 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4164 8330001 1.21837 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4165 8332001 1.21593 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4166 8334001 1.21351 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4167 8336001 1.21108 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4168 8338001 1.20867 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4169 8340001 1.20625 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4170 8342001 1.20385 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4171 8344001 1.20144 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4172 8346001 1.19905 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4173 8348001 1.19665 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4174 8350001 1.19426 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4175 8352001 1.19188 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4176 8354001 1.1895 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4177 8356001 1.18713 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4178 8358001 1.18476 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4179 8360001 1.18239 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4180 8362001 1.18003 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4181 8364001 1.17768 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4182 8366001 1.17533 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4183 8368001 1.17298 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4184 8370001 1.17064 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4185 8372001 1.1683 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4186 8374001 1.16597 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4187 8376001 1.16364 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4188 8378001 1.16132 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4189 8380001 1.159 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4190 8382001 1.15669 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4191 8384001 1.15438 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4192 8386001 1.15208 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4193 8388001 1.14978 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4194 8390001 1.14748 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4195 8392001 1.14519 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4196 8394001 1.14291 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4197 8396001 1.14062 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4198 8398001 1.13835 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4199 8400001 1.13608 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4200 8402001 1.13381 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4201 8404001 1.13155 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4202 8406001 1.12929 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4203 8408001 1.12703 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4204 8410001 1.12478 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4205 8412001 1.12254 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4206 8414001 1.1203 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4207 8416001 1.11806 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4208 8418001 1.11583 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4209 8420001 1.1136 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4210 8422001 1.11138 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4211 8424001 1.10916 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4212 8426001 1.10695 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4213 8428001 1.10474 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4214 8430001 1.10253 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4215 8432001 1.10033 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4216 8434001 1.09814 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4217 8436001 1.09594 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4218 8438001 1.09376 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4219 8440001 1.09157 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4220 8442001 1.08939 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4221 8444001 1.08722 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4222 8446001 1.08505 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4223 8448001 1.08288 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4224 8450001 1.08072 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4225 8452001 1.07857 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4226 8454001 1.07641 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4227 8456001 1.07426 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4228 8458001 1.07212 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4229 8460001 1.06998 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4230 8462001 1.06784 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4231 8464001 1.06571 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4232 8466001 1.06359 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4233 8468001 1.06146 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4234 8470001 1.05934 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4235 8472001 1.05723 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4236 8474001 1.05512 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4237 8476001 1.05301 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4238 8478001 1.05091 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4239 8480001 1.04881 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4240 8482001 1.04672 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4241 8484001 1.04463 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4242 8486001 1.04255 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4243 8488001 1.04047 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4244 8490001 1.03839 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4245 8492001 1.03632 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4246 8494001 1.03425 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4247 8496001 1.03218 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4248 8498001 1.03012 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4249 8500001 1.02807 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4250 8502001 1.02601 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4251 8504001 1.02397 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4252 8506001 1.02192 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4253 8508001 1.01988 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4254 8510001 1.01785 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4255 8512001 1.01582 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4256 8514001 1.01379 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4257 8516001 1.01176 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4258 8518001 1.00975 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4259 8520001 1.00773 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4260 8522001 1.00572 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4261 8524001 1.00371 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4262 8526001 1.00171 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4263 8528001 0.999708 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4264 8530001 0.997712 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4265 8532001 0.995721 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4266 8534001 0.993734 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4267 8536001 0.99175 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4268 8538001 0.989771 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4269 8540001 0.987795 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4270 8542001 0.985823 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4271 8544001 0.983856 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4272 8546001 0.981892 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4273 8548001 0.979932 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4274 8550001 0.977976 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4275 8552001 0.976024 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4276 8554001 0.974076 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4277 8556001 0.972131 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4278 8558001 0.970191 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4279 8560001 0.968255 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4280 8562001 0.966322 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4281 8564001 0.964393 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4282 8566001 0.962468 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4283 8568001 0.960547 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4284 8570001 0.95863 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4285 8572001 0.956716 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4286 8574001 0.954807 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4287 8576001 0.952901 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4288 8578001 0.950999 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4289 8580001 0.949101 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4290 8582001 0.947206 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4291 8584001 0.945316 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4292 8586001 0.943429 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4293 8588001 0.941546 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4294 8590001 0.939667 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4295 8592001 0.937791 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4296 8594001 0.935919 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4297 8596001 0.934051 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4298 8598001 0.932187 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4299 8600001 0.930326 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4300 8602001 0.928469 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4301 8604001 0.926616 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4302 8606001 0.924766 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4303 8608001 0.92292 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4304 8610001 0.921078 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4305 8612001 0.91924 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4306 8614001 0.917405 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4307 8616001 0.915574 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4308 8618001 0.913746 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4309 8620001 0.911922 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4310 8622001 0.910102 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4311 8624001 0.908286 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4312 8626001 0.906473 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4313 8628001 0.904663 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4314 8630001 0.902858 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4315 8632001 0.901056 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4316 8634001 0.899257 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4317 8636001 0.897462 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4318 8638001 0.895671 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4319 8640001 0.893883 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4320 8642001 0.892099 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4321 8644001 0.890318 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4322 8646001 0.888541 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4323 8648001 0.886768 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4324 8650001 0.884998 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4325 8652001 0.883231 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4326 8654001 0.881468 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4327 8656001 0.879709 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4328 8658001 0.877953 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4329 8660001 0.8762 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4330 8662001 0.874452 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4331 8664001 0.872706 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4332 8666001 0.870964 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4333 8668001 0.869226 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4334 8670001 0.867491 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4335 8672001 0.865759 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4336 8674001 0.864031 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4337 8676001 0.862307 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4338 8678001 0.860585 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4339 8680001 0.858868 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4340 8682001 0.857153 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4341 8684001 0.855443 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4342 8686001 0.853735 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4343 8688001 0.852031 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4344 8690001 0.85033 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4345 8692001 0.848633 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4346 8694001 0.846939 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4347 8696001 0.845249 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4348 8698001 0.843562 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4349 8700001 0.841878 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4350 8702001 0.840197 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4351 8704001 0.83852 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4352 8706001 0.836847 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4353 8708001 0.835176 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4354 8710001 0.833509 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4355 8712001 0.831846 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4356 8714001 0.830185 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4357 8716001 0.828528 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4358 8718001 0.826874 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4359 8720001 0.825224 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4360 8722001 0.823577 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4361 8724001 0.821933 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4362 8726001 0.820292 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4363 8728001 0.818655 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4364 8730001 0.817021 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4365 8732001 0.81539 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4366 8734001 0.813763 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4367 8736001 0.812138 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4368 8738001 0.810517 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4369 8740001 0.8089 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4370 8742001 0.807285 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4371 8744001 0.805674 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4372 8746001 0.804066 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4373 8748001 0.802461 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4374 8750001 0.800859 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4375 8752001 0.79926 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4376 8754001 0.797665 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4377 8756001 0.796073 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4378 8758001 0.794484 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4379 8760001 0.792898 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4380 8762001 0.791316 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4381 8764001 0.789736 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4382 8766001 0.78816 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4383 8768001 0.786587 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4384 8770001 0.785017 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4385 8772001 0.78345 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4386 8774001 0.781886 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4387 8776001 0.780325 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4388 8778001 0.778768 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4389 8780001 0.777213 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4390 8782001 0.775662 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4391 8784001 0.774114 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4392 8786001 0.772569 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4393 8788001 0.771027 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4394 8790001 0.769488 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4395 8792001 0.767952 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4396 8794001 0.766419 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4397 8796001 0.764889 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4398 8798001 0.763362 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4399 8800001 0.761839 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4400 8802001 0.760318 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4401 8804001 0.7588 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4402 8806001 0.757286 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4403 8808001 0.755774 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4404 8810001 0.754266 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4405 8812001 0.75276 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4406 8814001 0.751258 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4407 8816001 0.749758 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4408 8818001 0.748262 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4409 8820001 0.746768 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4410 8822001 0.745278 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4411 8824001 0.74379 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4412 8826001 0.742305 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4413 8828001 0.740824 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4414 8830001 0.739345 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4415 8832001 0.737869 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4416 8834001 0.736397 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4417 8836001 0.734927 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4418 8838001 0.73346 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4419 8840001 0.731996 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4420 8842001 0.730535 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4421 8844001 0.729077 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4422 8846001 0.727621 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4423 8848001 0.726169 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4424 8850001 0.72472 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4425 8852001 0.723273 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4426 8854001 0.721829 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4427 8856001 0.720389 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4428 8858001 0.718951 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4429 8860001 0.717516 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4430 8862001 0.716083 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4431 8864001 0.714654 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4432 8866001 0.713228 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4433 8868001 0.711804 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4434 8870001 0.710383 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4435 8872001 0.708965 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4436 8874001 0.70755 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4437 8876001 0.706138 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4438 8878001 0.704729 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4439 8880001 0.703322 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4440 8882001 0.701918 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4441 8884001 0.700517 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4442 8886001 0.699119 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4443 8888001 0.697723 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4444 8890001 0.696331 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4445 8892001 0.694941 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4446 8894001 0.693554 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4447 8896001 0.692169 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4448 8898001 0.690788 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4449 8900001 0.689409 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4450 8902001 0.688033 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4451 8904001 0.68666 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4452 8906001 0.685289 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4453 8908001 0.683921 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4454 8910001 0.682556 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4455 8912001 0.681194 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4456 8914001 0.679834 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4457 8916001 0.678477 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4458 8918001 0.677123 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4459 8920001 0.675771 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4460 8922001 0.674422 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4461 8924001 0.673076 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4462 8926001 0.671733 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4463 8928001 0.670392 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4464 8930001 0.669054 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4465 8932001 0.667718 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4466 8934001 0.666386 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4467 8936001 0.665056 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4468 8938001 0.663728 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4469 8940001 0.662403 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4470 8942001 0.661081 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4471 8944001 0.659762 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4472 8946001 0.658445 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4473 8948001 0.65713 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4474 8950001 0.655819 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4475 8952001 0.65451 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4476 8954001 0.653203 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4477 8956001 0.6519 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4478 8958001 0.650598 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4479 8960001 0.6493 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4480 8962001 0.648004 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4481 8964001 0.64671 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4482 8966001 0.64542 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4483 8968001 0.644131 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4484 8970001 0.642846 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4485 8972001 0.641562 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4486 8974001 0.640282 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4487 8976001 0.639004 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4488 8978001 0.637728 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4489 8980001 0.636456 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4490 8982001 0.635185 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4491 8984001 0.633917 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4492 8986001 0.632652 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4493 8988001 0.631389 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4494 8990001 0.630129 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4495 8992001 0.628871 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4496 8994001 0.627616 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4497 8996001 0.626363 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4498 8998001 0.625113 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4499 9000001 0.623865 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4500 9002001 0.62262 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4501 9004001 0.621377 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4502 9006001 0.620137 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4503 9008001 0.618899 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4504 9010001 0.617664 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4505 9012001 0.616431 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4506 9014001 0.615201 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4507 9016001 0.613973 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4508 9018001 0.612747 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4509 9020001 0.611524 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4510 9022001 0.610304 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4511 9024001 0.609085 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4512 9026001 0.60787 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4513 9028001 0.606656 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4514 9030001 0.605445 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4515 9032001 0.604237 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4516 9034001 0.603031 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4517 9036001 0.601827 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4518 9038001 0.600626 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4519 9040001 0.599427 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4520 9042001 0.598231 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4521 9044001 0.597037 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4522 9046001 0.595845 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4523 9048001 0.594656 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4524 9050001 0.593469 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4525 9052001 0.592284 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4526 9054001 0.591102 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4527 9056001 0.589922 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4528 9058001 0.588745 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4529 9060001 0.587569 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4530 9062001 0.586397 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4531 9064001 0.585226 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4532 9066001 0.584058 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4533 9068001 0.582892 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4534 9070001 0.581729 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4535 9072001 0.580568 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4536 9074001 0.579409 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4537 9076001 0.578252 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4538 9078001 0.577098 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4539 9080001 0.575946 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4540 9082001 0.574797 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4541 9084001 0.573649 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4542 9086001 0.572504 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4543 9088001 0.571362 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4544 9090001 0.570221 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4545 9092001 0.569083 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4546 9094001 0.567947 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4547 9096001 0.566814 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4548 9098001 0.565682 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4549 9100001 0.564553 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4550 9102001 0.563426 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4551 9104001 0.562302 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4552 9106001 0.561179 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4553 9108001 0.560059 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4554 9110001 0.558941 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4555 9112001 0.557826 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4556 9114001 0.556712 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4557 9116001 0.555601 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4558 9118001 0.554492 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4559 9120001 0.553385 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4560 9122001 0.552281 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4561 9124001 0.551178 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4562 9126001 0.550078 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4563 9128001 0.54898 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4564 9130001 0.547884 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4565 9132001 0.546791 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4566 9134001 0.545699 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4567 9136001 0.54461 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4568 9138001 0.543523 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4569 9140001 0.542438 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4570 9142001 0.541356 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4571 9144001 0.540275 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4572 9146001 0.539197 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4573 9148001 0.53812 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4574 9150001 0.537046 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4575 9152001 0.535974 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4576 9154001 0.534905 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4577 9156001 0.533837 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4578 9158001 0.532771 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4579 9160001 0.531708 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4580 9162001 0.530647 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4581 9164001 0.529587 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4582 9166001 0.52853 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4583 9168001 0.527475 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4584 9170001 0.526423 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4585 9172001 0.525372 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4586 9174001 0.524323 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4587 9176001 0.523277 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4588 9178001 0.522232 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4589 9180001 0.52119 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4590 9182001 0.520149 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4591 9184001 0.519111 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4592 9186001 0.518075 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4593 9188001 0.517041 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4594 9190001 0.516009 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4595 9192001 0.514979 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4596 9194001 0.513951 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4597 9196001 0.512925 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4598 9198001 0.511902 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4599 9200001 0.51088 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4600 9202001 0.50986 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4601 9204001 0.508842 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4602 9206001 0.507827 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4603 9208001 0.506813 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4604 9210001 0.505801 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4605 9212001 0.504792 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4606 9214001 0.503784 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4607 9216001 0.502779 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4608 9218001 0.501775 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 + 4609 9220001 0.500774 [ 0 6 8 2 7 4 10 11 1 9 5 3 ] 3490.62 3490.62 +# final order of cities: +# "Santa Fe" +# "Tesuque" +# "Los Alamos" +# "Albuquerque" +# "Grants" +# "Durango" +# "Cortez" +# "Gallup" +# "Phoenix" +# "Las Cruces" +# "Dallas" +# "Clovis" +# final coordinates of cities (longitude and latitude) +###final_city_coord: -105.95 35.68 Santa Fe +###final_city_coord: -105.92 35.77 Tesuque +###final_city_coord: -106.28 35.89 Los Alamos +###final_city_coord: -106.62 35.12 Albuquerque +###final_city_coord: -107.84 35.15 Grants +###final_city_coord: -107.87 37.29 Durango +###final_city_coord: -108.58 37.35 Cortez +###final_city_coord: -108.74 35.52 Gallup +###final_city_coord: -112.07 33.54 Phoenix +###final_city_coord: -106.76 32.34 Las Cruces +###final_city_coord: -96.77 32.79 Dallas +###final_city_coord: -103.2 34.41 Clovis +###final_city_coord: -105.95 35.68 Santa Fe +# \ No newline at end of file diff --git a/gsl-2.5/doc/examples/sortsmall b/gsl-2.5/doc/examples/sortsmall new file mode 100755 index 00000000..baba5609 --- /dev/null +++ b/gsl-2.5/doc/examples/sortsmall @@ -0,0 +1,228 @@ +#! /bin/sh + +# sortsmall - temporary wrapper script for .libs/sortsmall +# Generated by libtool (GNU libtool) 2.4.2 +# +# The sortsmall program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s/\([`"$\\]\)/\\\1/g' + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command="(cd /home/groups/kipac/chto/package/gsl/gsl-2.5/doc/examples; LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LIBRARY_PATH; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; LD_LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/fftw/include:/home/users/chto/lib/fftw/lib:/home/users/chto/lib/healpix/lib:/home/users/chto/lib/namaster/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/include:/home/users/chto/cpp/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LD_LIBRARY_PATH; PATH=/share/software/user/open/curl/7.54.0/bin:/share/software/user/open/libressl/2.5.3/bin:/home/users/chto/lib/cfitsio:/home/users/chto/lib/cfitsio/include:/home/users/chto/lib:/home/users/chto/bin/bin:/home/users/chto/bin:/home/users/chto/.texlive/bin/x86_64-linux:/home/groups/kipac/chto/anaconda2/envs/newenv3/bin:/home/users/chto/.local/bin/include:/home/users/chto/.local/bin/lib:/home/users/chto/.local/bin:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/bin64:/share/software/user/open/fftw/3.3.6/bin:/home/groups/kipac/chto/anaconda2/condabin:/share/software/user/restricted/ifort/2019/bin:/share/software/user/open/gsl/2.3/bin:/share/software/user/srcc/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/dell/srvadmin/bin:/opt/dell/srvadmin/iSM/bin:/home/users/chto/bin; export PATH; gcc -g -O2 -o \$progdir/\$file sortsmall.o ../../.libs/libgsl.so ../../cblas/.libs/libgslcblas.so -lm -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/.libs -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/cblas/.libs -Wl,-rpath -Wl,/usr/local/lib)" + +# This environment variable determines our operation mode. +if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then + # install mode needs the following variables: + generated_by_libtool_version='2.4.2' + notinst_deplibs=' ../../libgsl.la ../../cblas/libgslcblas.la' +else + # When we are sourced in execute mode, $file and $ECHO are already set. + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + file="$0" + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + ECHO="printf %s\\n" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ which is used only on +# windows platforms, and (c) all begin with the string --lt- +# (application programs are unlikely to have options which match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's ../../libtool value, followed by no. +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=$0 + shift + for lt_opt + do + case "$lt_opt" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%/[^/]*$%%'` + test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=. + lt_dump_F=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%^.*/%%'` + cat "$lt_dump_D/$lt_dump_F" + exit 0 + ;; + --lt-*) + $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n "$lt_option_debug"; then + echo "sortsmall:sortsmall:${LINENO}: libtool wrapper (GNU libtool) 2.4.2" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + $ECHO "sortsmall:sortsmall:${LINENO}: newargv[$lt_dump_args_N]: $lt_arg" + lt_dump_args_N=`expr $lt_dump_args_N + 1` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ + + if test -n "$lt_option_debug"; then + $ECHO "sortsmall:sortsmall:${LINENO}: newargv[0]: $progdir/$program" 1>&2 + func_lt_dump_args ${1+"$@"} 1>&2 + fi + exec "$progdir/$program" ${1+"$@"} + + $ECHO "$0: cannot exec $program $*" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from $@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case " $* " in + *\ --lt-*) + for lt_wr_arg + do + case $lt_wr_arg in + --lt-*) ;; + *) set x "$@" "$lt_wr_arg"; shift;; + esac + shift + done ;; + esac + func_exec_program_core ${1+"$@"} +} + + # Parse options + func_parse_lt_options "$0" ${1+"$@"} + + # Find the directory that this script lives in. + thisdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + test "x$thisdir" = "x$file" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=`ls -ld "$file" | /usr/bin/sed -n 's/.*-> //p'` + while test -n "$file"; do + destdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + + # If there was a directory component, then change thisdir. + if test "x$destdir" != "x$file"; then + case "$destdir" in + [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;; + *) thisdir="$thisdir/$destdir" ;; + esac + fi + + file=`$ECHO "$file" | /usr/bin/sed 's%^.*/%%'` + file=`ls -ld "$thisdir/$file" | /usr/bin/sed -n 's/.*-> //p'` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no + if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then + # special case for '.' + if test "$thisdir" = "."; then + thisdir=`pwd` + fi + # remove .libs from thisdir + case "$thisdir" in + *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /usr/bin/sed 's%[\\/][^\\/]*$%%'` ;; + .libs ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=`cd "$thisdir" && pwd` + test -n "$absdir" && thisdir="$absdir" + + program=lt-'sortsmall' + progdir="$thisdir/.libs" + + if test ! -f "$progdir/$program" || + { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /usr/bin/sed 1q`; \ + test "X$file" != "X$progdir/$program"; }; then + + file="$$-$program" + + if test ! -d "$progdir"; then + mkdir "$progdir" + else + rm -f "$progdir/$file" + fi + + # relink executable if necessary + if test -n "$relink_command"; then + if relink_command_output=`eval $relink_command 2>&1`; then : + else + printf %s\n "$relink_command_output" >&2 + rm -f "$progdir/$file" + exit 1 + fi + fi + + mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null || + { rm -f "$progdir/$program"; + mv -f "$progdir/$file" "$progdir/$program"; } + rm -f "$progdir/$file" + fi + + if test -f "$progdir/$program"; then + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + # Run the actual program with our arguments. + func_exec_program ${1+"$@"} + fi + else + # The program doesn't exist. + $ECHO "$0: error: \`$progdir/$program' does not exist" 1>&2 + $ECHO "This script is just a wrapper for $program." 1>&2 + $ECHO "See the libtool documentation for more information." 1>&2 + exit 1 + fi +fi diff --git a/gsl-2.5/doc/examples/sortsmall.c b/gsl-2.5/doc/examples/sortsmall.c new file mode 100644 index 00000000..d460ad46 --- /dev/null +++ b/gsl-2.5/doc/examples/sortsmall.c @@ -0,0 +1,38 @@ +#include +#include + +int +main (void) +{ + const gsl_rng_type * T; + gsl_rng * r; + + size_t i, k = 5, N = 100000; + + double * x = malloc (N * sizeof(double)); + double * small = malloc (k * sizeof(double)); + + gsl_rng_env_setup(); + + T = gsl_rng_default; + r = gsl_rng_alloc (T); + + for (i = 0; i < N; i++) + { + x[i] = gsl_rng_uniform(r); + } + + gsl_sort_smallest (small, k, x, 1, N); + + printf ("%zu smallest values from %zu\n", k, N); + + for (i = 0; i < k; i++) + { + printf ("%zu: %.18f\n", i, small[i]); + } + + free (x); + free (small); + gsl_rng_free (r); + return 0; +} diff --git a/gsl-2.5/doc/examples/sortsmall.txt b/gsl-2.5/doc/examples/sortsmall.txt new file mode 100644 index 00000000..b8c7c936 --- /dev/null +++ b/gsl-2.5/doc/examples/sortsmall.txt @@ -0,0 +1,6 @@ +5 smallest values from 100000 +0: 0.000003489200025797 +1: 0.000008199829608202 +2: 0.000008953968062997 +3: 0.000010712770745158 +4: 0.000033531803637743 diff --git a/gsl-2.5/doc/examples/specfun b/gsl-2.5/doc/examples/specfun new file mode 100755 index 00000000..0e63fcf1 --- /dev/null +++ b/gsl-2.5/doc/examples/specfun @@ -0,0 +1,228 @@ +#! /bin/sh + +# specfun - temporary wrapper script for .libs/specfun +# Generated by libtool (GNU libtool) 2.4.2 +# +# The specfun program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s/\([`"$\\]\)/\\\1/g' + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command="(cd /home/groups/kipac/chto/package/gsl/gsl-2.5/doc/examples; LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LIBRARY_PATH; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; LD_LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/fftw/include:/home/users/chto/lib/fftw/lib:/home/users/chto/lib/healpix/lib:/home/users/chto/lib/namaster/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/include:/home/users/chto/cpp/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LD_LIBRARY_PATH; PATH=/share/software/user/open/curl/7.54.0/bin:/share/software/user/open/libressl/2.5.3/bin:/home/users/chto/lib/cfitsio:/home/users/chto/lib/cfitsio/include:/home/users/chto/lib:/home/users/chto/bin/bin:/home/users/chto/bin:/home/users/chto/.texlive/bin/x86_64-linux:/home/groups/kipac/chto/anaconda2/envs/newenv3/bin:/home/users/chto/.local/bin/include:/home/users/chto/.local/bin/lib:/home/users/chto/.local/bin:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/bin64:/share/software/user/open/fftw/3.3.6/bin:/home/groups/kipac/chto/anaconda2/condabin:/share/software/user/restricted/ifort/2019/bin:/share/software/user/open/gsl/2.3/bin:/share/software/user/srcc/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/dell/srvadmin/bin:/opt/dell/srvadmin/iSM/bin:/home/users/chto/bin; export PATH; gcc -g -O2 -o \$progdir/\$file specfun.o ../../.libs/libgsl.so ../../cblas/.libs/libgslcblas.so -lm -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/.libs -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/cblas/.libs -Wl,-rpath -Wl,/usr/local/lib)" + +# This environment variable determines our operation mode. +if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then + # install mode needs the following variables: + generated_by_libtool_version='2.4.2' + notinst_deplibs=' ../../libgsl.la ../../cblas/libgslcblas.la' +else + # When we are sourced in execute mode, $file and $ECHO are already set. + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + file="$0" + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + ECHO="printf %s\\n" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ which is used only on +# windows platforms, and (c) all begin with the string --lt- +# (application programs are unlikely to have options which match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's ../../libtool value, followed by no. +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=$0 + shift + for lt_opt + do + case "$lt_opt" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%/[^/]*$%%'` + test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=. + lt_dump_F=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%^.*/%%'` + cat "$lt_dump_D/$lt_dump_F" + exit 0 + ;; + --lt-*) + $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n "$lt_option_debug"; then + echo "specfun:specfun:${LINENO}: libtool wrapper (GNU libtool) 2.4.2" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + $ECHO "specfun:specfun:${LINENO}: newargv[$lt_dump_args_N]: $lt_arg" + lt_dump_args_N=`expr $lt_dump_args_N + 1` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ + + if test -n "$lt_option_debug"; then + $ECHO "specfun:specfun:${LINENO}: newargv[0]: $progdir/$program" 1>&2 + func_lt_dump_args ${1+"$@"} 1>&2 + fi + exec "$progdir/$program" ${1+"$@"} + + $ECHO "$0: cannot exec $program $*" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from $@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case " $* " in + *\ --lt-*) + for lt_wr_arg + do + case $lt_wr_arg in + --lt-*) ;; + *) set x "$@" "$lt_wr_arg"; shift;; + esac + shift + done ;; + esac + func_exec_program_core ${1+"$@"} +} + + # Parse options + func_parse_lt_options "$0" ${1+"$@"} + + # Find the directory that this script lives in. + thisdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + test "x$thisdir" = "x$file" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=`ls -ld "$file" | /usr/bin/sed -n 's/.*-> //p'` + while test -n "$file"; do + destdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + + # If there was a directory component, then change thisdir. + if test "x$destdir" != "x$file"; then + case "$destdir" in + [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;; + *) thisdir="$thisdir/$destdir" ;; + esac + fi + + file=`$ECHO "$file" | /usr/bin/sed 's%^.*/%%'` + file=`ls -ld "$thisdir/$file" | /usr/bin/sed -n 's/.*-> //p'` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no + if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then + # special case for '.' + if test "$thisdir" = "."; then + thisdir=`pwd` + fi + # remove .libs from thisdir + case "$thisdir" in + *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /usr/bin/sed 's%[\\/][^\\/]*$%%'` ;; + .libs ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=`cd "$thisdir" && pwd` + test -n "$absdir" && thisdir="$absdir" + + program=lt-'specfun' + progdir="$thisdir/.libs" + + if test ! -f "$progdir/$program" || + { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /usr/bin/sed 1q`; \ + test "X$file" != "X$progdir/$program"; }; then + + file="$$-$program" + + if test ! -d "$progdir"; then + mkdir "$progdir" + else + rm -f "$progdir/$file" + fi + + # relink executable if necessary + if test -n "$relink_command"; then + if relink_command_output=`eval $relink_command 2>&1`; then : + else + printf %s\n "$relink_command_output" >&2 + rm -f "$progdir/$file" + exit 1 + fi + fi + + mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null || + { rm -f "$progdir/$program"; + mv -f "$progdir/$file" "$progdir/$program"; } + rm -f "$progdir/$file" + fi + + if test -f "$progdir/$program"; then + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + # Run the actual program with our arguments. + func_exec_program ${1+"$@"} + fi + else + # The program doesn't exist. + $ECHO "$0: error: \`$progdir/$program' does not exist" 1>&2 + $ECHO "This script is just a wrapper for $program." 1>&2 + $ECHO "See the libtool documentation for more information." 1>&2 + exit 1 + fi +fi diff --git a/gsl-2.5/doc/examples/specfun.c b/gsl-2.5/doc/examples/specfun.c new file mode 100644 index 00000000..7c1a9b01 --- /dev/null +++ b/gsl-2.5/doc/examples/specfun.c @@ -0,0 +1,15 @@ +#include +#include + +int +main (void) +{ + double x = 5.0; + double expected = -0.17759677131433830434739701; + + double y = gsl_sf_bessel_J0 (x); + + printf ("J0(5.0) = %.18f\n", y); + printf ("exact = %.18f\n", expected); + return 0; +} diff --git a/gsl-2.5/doc/examples/specfun.txt b/gsl-2.5/doc/examples/specfun.txt new file mode 100644 index 00000000..eb8bc11e --- /dev/null +++ b/gsl-2.5/doc/examples/specfun.txt @@ -0,0 +1,2 @@ +J0(5.0) = -0.177596771314338264 +exact = -0.177596771314338292 diff --git a/gsl-2.5/doc/examples/specfun_e b/gsl-2.5/doc/examples/specfun_e new file mode 100755 index 00000000..f323e55b --- /dev/null +++ b/gsl-2.5/doc/examples/specfun_e @@ -0,0 +1,228 @@ +#! /bin/sh + +# specfun_e - temporary wrapper script for .libs/specfun_e +# Generated by libtool (GNU libtool) 2.4.2 +# +# The specfun_e program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s/\([`"$\\]\)/\\\1/g' + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command="(cd /home/groups/kipac/chto/package/gsl/gsl-2.5/doc/examples; LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LIBRARY_PATH; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; LD_LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/fftw/include:/home/users/chto/lib/fftw/lib:/home/users/chto/lib/healpix/lib:/home/users/chto/lib/namaster/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/include:/home/users/chto/cpp/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LD_LIBRARY_PATH; PATH=/share/software/user/open/curl/7.54.0/bin:/share/software/user/open/libressl/2.5.3/bin:/home/users/chto/lib/cfitsio:/home/users/chto/lib/cfitsio/include:/home/users/chto/lib:/home/users/chto/bin/bin:/home/users/chto/bin:/home/users/chto/.texlive/bin/x86_64-linux:/home/groups/kipac/chto/anaconda2/envs/newenv3/bin:/home/users/chto/.local/bin/include:/home/users/chto/.local/bin/lib:/home/users/chto/.local/bin:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/bin64:/share/software/user/open/fftw/3.3.6/bin:/home/groups/kipac/chto/anaconda2/condabin:/share/software/user/restricted/ifort/2019/bin:/share/software/user/open/gsl/2.3/bin:/share/software/user/srcc/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/dell/srvadmin/bin:/opt/dell/srvadmin/iSM/bin:/home/users/chto/bin; export PATH; gcc -g -O2 -o \$progdir/\$file specfun_e.o ../../.libs/libgsl.so ../../cblas/.libs/libgslcblas.so -lm -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/.libs -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/cblas/.libs -Wl,-rpath -Wl,/usr/local/lib)" + +# This environment variable determines our operation mode. +if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then + # install mode needs the following variables: + generated_by_libtool_version='2.4.2' + notinst_deplibs=' ../../libgsl.la ../../cblas/libgslcblas.la' +else + # When we are sourced in execute mode, $file and $ECHO are already set. + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + file="$0" + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + ECHO="printf %s\\n" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ which is used only on +# windows platforms, and (c) all begin with the string --lt- +# (application programs are unlikely to have options which match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's ../../libtool value, followed by no. +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=$0 + shift + for lt_opt + do + case "$lt_opt" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%/[^/]*$%%'` + test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=. + lt_dump_F=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%^.*/%%'` + cat "$lt_dump_D/$lt_dump_F" + exit 0 + ;; + --lt-*) + $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n "$lt_option_debug"; then + echo "specfun_e:specfun_e:${LINENO}: libtool wrapper (GNU libtool) 2.4.2" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + $ECHO "specfun_e:specfun_e:${LINENO}: newargv[$lt_dump_args_N]: $lt_arg" + lt_dump_args_N=`expr $lt_dump_args_N + 1` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ + + if test -n "$lt_option_debug"; then + $ECHO "specfun_e:specfun_e:${LINENO}: newargv[0]: $progdir/$program" 1>&2 + func_lt_dump_args ${1+"$@"} 1>&2 + fi + exec "$progdir/$program" ${1+"$@"} + + $ECHO "$0: cannot exec $program $*" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from $@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case " $* " in + *\ --lt-*) + for lt_wr_arg + do + case $lt_wr_arg in + --lt-*) ;; + *) set x "$@" "$lt_wr_arg"; shift;; + esac + shift + done ;; + esac + func_exec_program_core ${1+"$@"} +} + + # Parse options + func_parse_lt_options "$0" ${1+"$@"} + + # Find the directory that this script lives in. + thisdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + test "x$thisdir" = "x$file" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=`ls -ld "$file" | /usr/bin/sed -n 's/.*-> //p'` + while test -n "$file"; do + destdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + + # If there was a directory component, then change thisdir. + if test "x$destdir" != "x$file"; then + case "$destdir" in + [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;; + *) thisdir="$thisdir/$destdir" ;; + esac + fi + + file=`$ECHO "$file" | /usr/bin/sed 's%^.*/%%'` + file=`ls -ld "$thisdir/$file" | /usr/bin/sed -n 's/.*-> //p'` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no + if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then + # special case for '.' + if test "$thisdir" = "."; then + thisdir=`pwd` + fi + # remove .libs from thisdir + case "$thisdir" in + *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /usr/bin/sed 's%[\\/][^\\/]*$%%'` ;; + .libs ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=`cd "$thisdir" && pwd` + test -n "$absdir" && thisdir="$absdir" + + program=lt-'specfun_e' + progdir="$thisdir/.libs" + + if test ! -f "$progdir/$program" || + { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /usr/bin/sed 1q`; \ + test "X$file" != "X$progdir/$program"; }; then + + file="$$-$program" + + if test ! -d "$progdir"; then + mkdir "$progdir" + else + rm -f "$progdir/$file" + fi + + # relink executable if necessary + if test -n "$relink_command"; then + if relink_command_output=`eval $relink_command 2>&1`; then : + else + printf %s\n "$relink_command_output" >&2 + rm -f "$progdir/$file" + exit 1 + fi + fi + + mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null || + { rm -f "$progdir/$program"; + mv -f "$progdir/$file" "$progdir/$program"; } + rm -f "$progdir/$file" + fi + + if test -f "$progdir/$program"; then + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + # Run the actual program with our arguments. + func_exec_program ${1+"$@"} + fi + else + # The program doesn't exist. + $ECHO "$0: error: \`$progdir/$program' does not exist" 1>&2 + $ECHO "This script is just a wrapper for $program." 1>&2 + $ECHO "See the libtool documentation for more information." 1>&2 + exit 1 + fi +fi diff --git a/gsl-2.5/doc/examples/specfun_e.c b/gsl-2.5/doc/examples/specfun_e.c new file mode 100644 index 00000000..4f41f2a0 --- /dev/null +++ b/gsl-2.5/doc/examples/specfun_e.c @@ -0,0 +1,21 @@ +#include +#include +#include + +int +main (void) +{ + double x = 5.0; + gsl_sf_result result; + + double expected = -0.17759677131433830434739701; + + int status = gsl_sf_bessel_J0_e (x, &result); + + printf ("status = %s\n", gsl_strerror(status)); + printf ("J0(5.0) = %.18f\n" + " +/- % .18f\n", + result.val, result.err); + printf ("exact = %.18f\n", expected); + return status; +} diff --git a/gsl-2.5/doc/examples/specfun_e.txt b/gsl-2.5/doc/examples/specfun_e.txt new file mode 100644 index 00000000..c3c715f3 --- /dev/null +++ b/gsl-2.5/doc/examples/specfun_e.txt @@ -0,0 +1,4 @@ +status = success +J0(5.0) = -0.177596771314338264 + +/- 0.000000000000000193 +exact = -0.177596771314338292 diff --git a/gsl-2.5/doc/examples/spmatrix b/gsl-2.5/doc/examples/spmatrix new file mode 100755 index 00000000..e249689e --- /dev/null +++ b/gsl-2.5/doc/examples/spmatrix @@ -0,0 +1,228 @@ +#! /bin/sh + +# spmatrix - temporary wrapper script for .libs/spmatrix +# Generated by libtool (GNU libtool) 2.4.2 +# +# The spmatrix program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s/\([`"$\\]\)/\\\1/g' + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command="(cd /home/groups/kipac/chto/package/gsl/gsl-2.5/doc/examples; LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LIBRARY_PATH; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; LD_LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/fftw/include:/home/users/chto/lib/fftw/lib:/home/users/chto/lib/healpix/lib:/home/users/chto/lib/namaster/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/include:/home/users/chto/cpp/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LD_LIBRARY_PATH; PATH=/share/software/user/open/curl/7.54.0/bin:/share/software/user/open/libressl/2.5.3/bin:/home/users/chto/lib/cfitsio:/home/users/chto/lib/cfitsio/include:/home/users/chto/lib:/home/users/chto/bin/bin:/home/users/chto/bin:/home/users/chto/.texlive/bin/x86_64-linux:/home/groups/kipac/chto/anaconda2/envs/newenv3/bin:/home/users/chto/.local/bin/include:/home/users/chto/.local/bin/lib:/home/users/chto/.local/bin:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/bin64:/share/software/user/open/fftw/3.3.6/bin:/home/groups/kipac/chto/anaconda2/condabin:/share/software/user/restricted/ifort/2019/bin:/share/software/user/open/gsl/2.3/bin:/share/software/user/srcc/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/dell/srvadmin/bin:/opt/dell/srvadmin/iSM/bin:/home/users/chto/bin; export PATH; gcc -g -O2 -o \$progdir/\$file spmatrix.o ../../.libs/libgsl.so ../../cblas/.libs/libgslcblas.so -lm -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/.libs -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/cblas/.libs -Wl,-rpath -Wl,/usr/local/lib)" + +# This environment variable determines our operation mode. +if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then + # install mode needs the following variables: + generated_by_libtool_version='2.4.2' + notinst_deplibs=' ../../libgsl.la ../../cblas/libgslcblas.la' +else + # When we are sourced in execute mode, $file and $ECHO are already set. + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + file="$0" + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + ECHO="printf %s\\n" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ which is used only on +# windows platforms, and (c) all begin with the string --lt- +# (application programs are unlikely to have options which match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's ../../libtool value, followed by no. +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=$0 + shift + for lt_opt + do + case "$lt_opt" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%/[^/]*$%%'` + test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=. + lt_dump_F=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%^.*/%%'` + cat "$lt_dump_D/$lt_dump_F" + exit 0 + ;; + --lt-*) + $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n "$lt_option_debug"; then + echo "spmatrix:spmatrix:${LINENO}: libtool wrapper (GNU libtool) 2.4.2" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + $ECHO "spmatrix:spmatrix:${LINENO}: newargv[$lt_dump_args_N]: $lt_arg" + lt_dump_args_N=`expr $lt_dump_args_N + 1` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ + + if test -n "$lt_option_debug"; then + $ECHO "spmatrix:spmatrix:${LINENO}: newargv[0]: $progdir/$program" 1>&2 + func_lt_dump_args ${1+"$@"} 1>&2 + fi + exec "$progdir/$program" ${1+"$@"} + + $ECHO "$0: cannot exec $program $*" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from $@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case " $* " in + *\ --lt-*) + for lt_wr_arg + do + case $lt_wr_arg in + --lt-*) ;; + *) set x "$@" "$lt_wr_arg"; shift;; + esac + shift + done ;; + esac + func_exec_program_core ${1+"$@"} +} + + # Parse options + func_parse_lt_options "$0" ${1+"$@"} + + # Find the directory that this script lives in. + thisdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + test "x$thisdir" = "x$file" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=`ls -ld "$file" | /usr/bin/sed -n 's/.*-> //p'` + while test -n "$file"; do + destdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + + # If there was a directory component, then change thisdir. + if test "x$destdir" != "x$file"; then + case "$destdir" in + [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;; + *) thisdir="$thisdir/$destdir" ;; + esac + fi + + file=`$ECHO "$file" | /usr/bin/sed 's%^.*/%%'` + file=`ls -ld "$thisdir/$file" | /usr/bin/sed -n 's/.*-> //p'` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no + if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then + # special case for '.' + if test "$thisdir" = "."; then + thisdir=`pwd` + fi + # remove .libs from thisdir + case "$thisdir" in + *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /usr/bin/sed 's%[\\/][^\\/]*$%%'` ;; + .libs ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=`cd "$thisdir" && pwd` + test -n "$absdir" && thisdir="$absdir" + + program=lt-'spmatrix' + progdir="$thisdir/.libs" + + if test ! -f "$progdir/$program" || + { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /usr/bin/sed 1q`; \ + test "X$file" != "X$progdir/$program"; }; then + + file="$$-$program" + + if test ! -d "$progdir"; then + mkdir "$progdir" + else + rm -f "$progdir/$file" + fi + + # relink executable if necessary + if test -n "$relink_command"; then + if relink_command_output=`eval $relink_command 2>&1`; then : + else + printf %s\n "$relink_command_output" >&2 + rm -f "$progdir/$file" + exit 1 + fi + fi + + mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null || + { rm -f "$progdir/$program"; + mv -f "$progdir/$file" "$progdir/$program"; } + rm -f "$progdir/$file" + fi + + if test -f "$progdir/$program"; then + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + # Run the actual program with our arguments. + func_exec_program ${1+"$@"} + fi + else + # The program doesn't exist. + $ECHO "$0: error: \`$progdir/$program' does not exist" 1>&2 + $ECHO "This script is just a wrapper for $program." 1>&2 + $ECHO "See the libtool documentation for more information." 1>&2 + exit 1 + fi +fi diff --git a/gsl-2.5/doc/examples/spmatrix.c b/gsl-2.5/doc/examples/spmatrix.c new file mode 100644 index 00000000..f2a0f178 --- /dev/null +++ b/gsl-2.5/doc/examples/spmatrix.c @@ -0,0 +1,76 @@ +#include +#include + +#include + +int +main() +{ + gsl_spmatrix *A = gsl_spmatrix_alloc(5, 4); /* triplet format */ + gsl_spmatrix *B, *C; + size_t i, j; + + /* build the sparse matrix */ + gsl_spmatrix_set(A, 0, 2, 3.1); + gsl_spmatrix_set(A, 0, 3, 4.6); + gsl_spmatrix_set(A, 1, 0, 1.0); + gsl_spmatrix_set(A, 1, 2, 7.2); + gsl_spmatrix_set(A, 3, 0, 2.1); + gsl_spmatrix_set(A, 3, 1, 2.9); + gsl_spmatrix_set(A, 3, 3, 8.5); + gsl_spmatrix_set(A, 4, 0, 4.1); + + printf("printing all matrix elements:\n"); + for (i = 0; i < 5; ++i) + for (j = 0; j < 4; ++j) + printf("A(%zu,%zu) = %g\n", i, j, + gsl_spmatrix_get(A, i, j)); + + /* print out elements in triplet format */ + printf("matrix in triplet format (i,j,Aij):\n"); + gsl_spmatrix_fprintf(stdout, A, "%.1f"); + + /* convert to compressed column format */ + B = gsl_spmatrix_ccs(A); + + printf("matrix in compressed column format:\n"); + printf("i = [ "); + for (i = 0; i < B->nz; ++i) + printf("%zu, ", B->i[i]); + printf("]\n"); + + printf("p = [ "); + for (i = 0; i < B->size2 + 1; ++i) + printf("%zu, ", B->p[i]); + printf("]\n"); + + printf("d = [ "); + for (i = 0; i < B->nz; ++i) + printf("%g, ", B->data[i]); + printf("]\n"); + + /* convert to compressed row format */ + C = gsl_spmatrix_crs(A); + + printf("matrix in compressed row format:\n"); + printf("i = [ "); + for (i = 0; i < C->nz; ++i) + printf("%zu, ", C->i[i]); + printf("]\n"); + + printf("p = [ "); + for (i = 0; i < C->size1 + 1; ++i) + printf("%zu, ", C->p[i]); + printf("]\n"); + + printf("d = [ "); + for (i = 0; i < C->nz; ++i) + printf("%g, ", C->data[i]); + printf("]\n"); + + gsl_spmatrix_free(A); + gsl_spmatrix_free(B); + gsl_spmatrix_free(C); + + return 0; +} diff --git a/gsl-2.5/doc/examples/spmatrix.txt b/gsl-2.5/doc/examples/spmatrix.txt new file mode 100644 index 00000000..1311aa8e --- /dev/null +++ b/gsl-2.5/doc/examples/spmatrix.txt @@ -0,0 +1,40 @@ +printing all matrix elements: +A(0,0) = 0 +A(0,1) = 0 +A(0,2) = 3.1 +A(0,3) = 4.6 +A(1,0) = 1 +A(1,1) = 0 +A(1,2) = 7.2 +A(1,3) = 0 +A(2,0) = 0 +A(2,1) = 0 +A(2,2) = 0 +A(2,3) = 0 +A(3,0) = 2.1 +A(3,1) = 2.9 +A(3,2) = 0 +A(3,3) = 8.5 +A(4,0) = 4.1 +A(4,1) = 0 +A(4,2) = 0 +A(4,3) = 0 +matrix in triplet format (i,j,Aij): +%%MatrixMarket matrix coordinate real general +5 4 8 +1 3 3.1 +1 4 4.6 +2 1 1.0 +2 3 7.2 +4 1 2.1 +4 2 2.9 +4 4 8.5 +5 1 4.1 +matrix in compressed column format: +i = [ 1, 3, 4, 3, 0, 1, 0, 3, ] +p = [ 0, 3, 4, 6, 8, ] +d = [ 1, 2.1, 4.1, 2.9, 3.1, 7.2, 4.6, 8.5, ] +matrix in compressed row format: +i = [ 2, 3, 0, 2, 0, 1, 3, 0, ] +p = [ 0, 2, 4, 4, 7, 8, ] +d = [ 3.1, 4.6, 1, 7.2, 2.1, 2.9, 8.5, 4.1, ] diff --git a/gsl-2.5/doc/examples/stat b/gsl-2.5/doc/examples/stat new file mode 100755 index 00000000..2a07e97b --- /dev/null +++ b/gsl-2.5/doc/examples/stat @@ -0,0 +1,228 @@ +#! /bin/sh + +# stat - temporary wrapper script for .libs/stat +# Generated by libtool (GNU libtool) 2.4.2 +# +# The stat program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s/\([`"$\\]\)/\\\1/g' + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command="(cd /home/groups/kipac/chto/package/gsl/gsl-2.5/doc/examples; LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LIBRARY_PATH; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; LD_LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/fftw/include:/home/users/chto/lib/fftw/lib:/home/users/chto/lib/healpix/lib:/home/users/chto/lib/namaster/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/include:/home/users/chto/cpp/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LD_LIBRARY_PATH; PATH=/share/software/user/open/curl/7.54.0/bin:/share/software/user/open/libressl/2.5.3/bin:/home/users/chto/lib/cfitsio:/home/users/chto/lib/cfitsio/include:/home/users/chto/lib:/home/users/chto/bin/bin:/home/users/chto/bin:/home/users/chto/.texlive/bin/x86_64-linux:/home/groups/kipac/chto/anaconda2/envs/newenv3/bin:/home/users/chto/.local/bin/include:/home/users/chto/.local/bin/lib:/home/users/chto/.local/bin:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/bin64:/share/software/user/open/fftw/3.3.6/bin:/home/groups/kipac/chto/anaconda2/condabin:/share/software/user/restricted/ifort/2019/bin:/share/software/user/open/gsl/2.3/bin:/share/software/user/srcc/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/dell/srvadmin/bin:/opt/dell/srvadmin/iSM/bin:/home/users/chto/bin; export PATH; gcc -g -O2 -o \$progdir/\$file stat.o ../../.libs/libgsl.so ../../cblas/.libs/libgslcblas.so -lm -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/.libs -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/cblas/.libs -Wl,-rpath -Wl,/usr/local/lib)" + +# This environment variable determines our operation mode. +if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then + # install mode needs the following variables: + generated_by_libtool_version='2.4.2' + notinst_deplibs=' ../../libgsl.la ../../cblas/libgslcblas.la' +else + # When we are sourced in execute mode, $file and $ECHO are already set. + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + file="$0" + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + ECHO="printf %s\\n" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ which is used only on +# windows platforms, and (c) all begin with the string --lt- +# (application programs are unlikely to have options which match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's ../../libtool value, followed by no. +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=$0 + shift + for lt_opt + do + case "$lt_opt" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%/[^/]*$%%'` + test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=. + lt_dump_F=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%^.*/%%'` + cat "$lt_dump_D/$lt_dump_F" + exit 0 + ;; + --lt-*) + $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n "$lt_option_debug"; then + echo "stat:stat:${LINENO}: libtool wrapper (GNU libtool) 2.4.2" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + $ECHO "stat:stat:${LINENO}: newargv[$lt_dump_args_N]: $lt_arg" + lt_dump_args_N=`expr $lt_dump_args_N + 1` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ + + if test -n "$lt_option_debug"; then + $ECHO "stat:stat:${LINENO}: newargv[0]: $progdir/$program" 1>&2 + func_lt_dump_args ${1+"$@"} 1>&2 + fi + exec "$progdir/$program" ${1+"$@"} + + $ECHO "$0: cannot exec $program $*" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from $@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case " $* " in + *\ --lt-*) + for lt_wr_arg + do + case $lt_wr_arg in + --lt-*) ;; + *) set x "$@" "$lt_wr_arg"; shift;; + esac + shift + done ;; + esac + func_exec_program_core ${1+"$@"} +} + + # Parse options + func_parse_lt_options "$0" ${1+"$@"} + + # Find the directory that this script lives in. + thisdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + test "x$thisdir" = "x$file" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=`ls -ld "$file" | /usr/bin/sed -n 's/.*-> //p'` + while test -n "$file"; do + destdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + + # If there was a directory component, then change thisdir. + if test "x$destdir" != "x$file"; then + case "$destdir" in + [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;; + *) thisdir="$thisdir/$destdir" ;; + esac + fi + + file=`$ECHO "$file" | /usr/bin/sed 's%^.*/%%'` + file=`ls -ld "$thisdir/$file" | /usr/bin/sed -n 's/.*-> //p'` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no + if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then + # special case for '.' + if test "$thisdir" = "."; then + thisdir=`pwd` + fi + # remove .libs from thisdir + case "$thisdir" in + *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /usr/bin/sed 's%[\\/][^\\/]*$%%'` ;; + .libs ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=`cd "$thisdir" && pwd` + test -n "$absdir" && thisdir="$absdir" + + program=lt-'stat' + progdir="$thisdir/.libs" + + if test ! -f "$progdir/$program" || + { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /usr/bin/sed 1q`; \ + test "X$file" != "X$progdir/$program"; }; then + + file="$$-$program" + + if test ! -d "$progdir"; then + mkdir "$progdir" + else + rm -f "$progdir/$file" + fi + + # relink executable if necessary + if test -n "$relink_command"; then + if relink_command_output=`eval $relink_command 2>&1`; then : + else + printf %s\n "$relink_command_output" >&2 + rm -f "$progdir/$file" + exit 1 + fi + fi + + mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null || + { rm -f "$progdir/$program"; + mv -f "$progdir/$file" "$progdir/$program"; } + rm -f "$progdir/$file" + fi + + if test -f "$progdir/$program"; then + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + # Run the actual program with our arguments. + func_exec_program ${1+"$@"} + fi + else + # The program doesn't exist. + $ECHO "$0: error: \`$progdir/$program' does not exist" 1>&2 + $ECHO "This script is just a wrapper for $program." 1>&2 + $ECHO "See the libtool documentation for more information." 1>&2 + exit 1 + fi +fi diff --git a/gsl-2.5/doc/examples/stat.c b/gsl-2.5/doc/examples/stat.c new file mode 100644 index 00000000..253f7044 --- /dev/null +++ b/gsl-2.5/doc/examples/stat.c @@ -0,0 +1,23 @@ +#include +#include + +int +main(void) +{ + double data[5] = {17.2, 18.1, 16.5, 18.3, 12.6}; + double mean, variance, largest, smallest; + + mean = gsl_stats_mean(data, 1, 5); + variance = gsl_stats_variance(data, 1, 5); + largest = gsl_stats_max(data, 1, 5); + smallest = gsl_stats_min(data, 1, 5); + + printf ("The dataset is %g, %g, %g, %g, %g\n", + data[0], data[1], data[2], data[3], data[4]); + + printf ("The sample mean is %g\n", mean); + printf ("The estimated variance is %g\n", variance); + printf ("The largest value is %g\n", largest); + printf ("The smallest value is %g\n", smallest); + return 0; +} diff --git a/gsl-2.5/doc/examples/stat.txt b/gsl-2.5/doc/examples/stat.txt new file mode 100644 index 00000000..a1d53bc3 --- /dev/null +++ b/gsl-2.5/doc/examples/stat.txt @@ -0,0 +1,5 @@ +The dataset is 17.2, 18.1, 16.5, 18.3, 12.6 +The sample mean is 16.54 +The estimated variance is 5.373 +The largest value is 18.3 +The smallest value is 12.6 diff --git a/gsl-2.5/doc/examples/statsort b/gsl-2.5/doc/examples/statsort new file mode 100755 index 00000000..15b2cc53 --- /dev/null +++ b/gsl-2.5/doc/examples/statsort @@ -0,0 +1,228 @@ +#! /bin/sh + +# statsort - temporary wrapper script for .libs/statsort +# Generated by libtool (GNU libtool) 2.4.2 +# +# The statsort program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s/\([`"$\\]\)/\\\1/g' + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command="(cd /home/groups/kipac/chto/package/gsl/gsl-2.5/doc/examples; LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LIBRARY_PATH; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; LD_LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/fftw/include:/home/users/chto/lib/fftw/lib:/home/users/chto/lib/healpix/lib:/home/users/chto/lib/namaster/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/include:/home/users/chto/cpp/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LD_LIBRARY_PATH; PATH=/share/software/user/open/curl/7.54.0/bin:/share/software/user/open/libressl/2.5.3/bin:/home/users/chto/lib/cfitsio:/home/users/chto/lib/cfitsio/include:/home/users/chto/lib:/home/users/chto/bin/bin:/home/users/chto/bin:/home/users/chto/.texlive/bin/x86_64-linux:/home/groups/kipac/chto/anaconda2/envs/newenv3/bin:/home/users/chto/.local/bin/include:/home/users/chto/.local/bin/lib:/home/users/chto/.local/bin:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/bin64:/share/software/user/open/fftw/3.3.6/bin:/home/groups/kipac/chto/anaconda2/condabin:/share/software/user/restricted/ifort/2019/bin:/share/software/user/open/gsl/2.3/bin:/share/software/user/srcc/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/dell/srvadmin/bin:/opt/dell/srvadmin/iSM/bin:/home/users/chto/bin; export PATH; gcc -g -O2 -o \$progdir/\$file statsort.o ../../.libs/libgsl.so ../../cblas/.libs/libgslcblas.so -lm -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/.libs -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/cblas/.libs -Wl,-rpath -Wl,/usr/local/lib)" + +# This environment variable determines our operation mode. +if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then + # install mode needs the following variables: + generated_by_libtool_version='2.4.2' + notinst_deplibs=' ../../libgsl.la ../../cblas/libgslcblas.la' +else + # When we are sourced in execute mode, $file and $ECHO are already set. + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + file="$0" + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + ECHO="printf %s\\n" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ which is used only on +# windows platforms, and (c) all begin with the string --lt- +# (application programs are unlikely to have options which match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's ../../libtool value, followed by no. +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=$0 + shift + for lt_opt + do + case "$lt_opt" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%/[^/]*$%%'` + test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=. + lt_dump_F=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%^.*/%%'` + cat "$lt_dump_D/$lt_dump_F" + exit 0 + ;; + --lt-*) + $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n "$lt_option_debug"; then + echo "statsort:statsort:${LINENO}: libtool wrapper (GNU libtool) 2.4.2" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + $ECHO "statsort:statsort:${LINENO}: newargv[$lt_dump_args_N]: $lt_arg" + lt_dump_args_N=`expr $lt_dump_args_N + 1` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ + + if test -n "$lt_option_debug"; then + $ECHO "statsort:statsort:${LINENO}: newargv[0]: $progdir/$program" 1>&2 + func_lt_dump_args ${1+"$@"} 1>&2 + fi + exec "$progdir/$program" ${1+"$@"} + + $ECHO "$0: cannot exec $program $*" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from $@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case " $* " in + *\ --lt-*) + for lt_wr_arg + do + case $lt_wr_arg in + --lt-*) ;; + *) set x "$@" "$lt_wr_arg"; shift;; + esac + shift + done ;; + esac + func_exec_program_core ${1+"$@"} +} + + # Parse options + func_parse_lt_options "$0" ${1+"$@"} + + # Find the directory that this script lives in. + thisdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + test "x$thisdir" = "x$file" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=`ls -ld "$file" | /usr/bin/sed -n 's/.*-> //p'` + while test -n "$file"; do + destdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + + # If there was a directory component, then change thisdir. + if test "x$destdir" != "x$file"; then + case "$destdir" in + [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;; + *) thisdir="$thisdir/$destdir" ;; + esac + fi + + file=`$ECHO "$file" | /usr/bin/sed 's%^.*/%%'` + file=`ls -ld "$thisdir/$file" | /usr/bin/sed -n 's/.*-> //p'` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no + if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then + # special case for '.' + if test "$thisdir" = "."; then + thisdir=`pwd` + fi + # remove .libs from thisdir + case "$thisdir" in + *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /usr/bin/sed 's%[\\/][^\\/]*$%%'` ;; + .libs ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=`cd "$thisdir" && pwd` + test -n "$absdir" && thisdir="$absdir" + + program=lt-'statsort' + progdir="$thisdir/.libs" + + if test ! -f "$progdir/$program" || + { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /usr/bin/sed 1q`; \ + test "X$file" != "X$progdir/$program"; }; then + + file="$$-$program" + + if test ! -d "$progdir"; then + mkdir "$progdir" + else + rm -f "$progdir/$file" + fi + + # relink executable if necessary + if test -n "$relink_command"; then + if relink_command_output=`eval $relink_command 2>&1`; then : + else + printf %s\n "$relink_command_output" >&2 + rm -f "$progdir/$file" + exit 1 + fi + fi + + mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null || + { rm -f "$progdir/$program"; + mv -f "$progdir/$file" "$progdir/$program"; } + rm -f "$progdir/$file" + fi + + if test -f "$progdir/$program"; then + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + # Run the actual program with our arguments. + func_exec_program ${1+"$@"} + fi + else + # The program doesn't exist. + $ECHO "$0: error: \`$progdir/$program' does not exist" 1>&2 + $ECHO "This script is just a wrapper for $program." 1>&2 + $ECHO "See the libtool documentation for more information." 1>&2 + exit 1 + fi +fi diff --git a/gsl-2.5/doc/examples/statsort.c b/gsl-2.5/doc/examples/statsort.c new file mode 100644 index 00000000..2780f673 --- /dev/null +++ b/gsl-2.5/doc/examples/statsort.c @@ -0,0 +1,36 @@ +#include +#include +#include + +int +main(void) +{ + double data[5] = {17.2, 18.1, 16.5, 18.3, 12.6}; + double median, upperq, lowerq; + + printf ("Original dataset: %g, %g, %g, %g, %g\n", + data[0], data[1], data[2], data[3], data[4]); + + gsl_sort (data, 1, 5); + + printf ("Sorted dataset: %g, %g, %g, %g, %g\n", + data[0], data[1], data[2], data[3], data[4]); + + median + = gsl_stats_median_from_sorted_data (data, + 1, 5); + + upperq + = gsl_stats_quantile_from_sorted_data (data, + 1, 5, + 0.75); + lowerq + = gsl_stats_quantile_from_sorted_data (data, + 1, 5, + 0.25); + + printf ("The median is %g\n", median); + printf ("The upper quartile is %g\n", upperq); + printf ("The lower quartile is %g\n", lowerq); + return 0; +} diff --git a/gsl-2.5/doc/examples/statsort.txt b/gsl-2.5/doc/examples/statsort.txt new file mode 100644 index 00000000..718de916 --- /dev/null +++ b/gsl-2.5/doc/examples/statsort.txt @@ -0,0 +1,5 @@ +Original dataset: 17.2, 18.1, 16.5, 18.3, 12.6 +Sorted dataset: 12.6, 16.5, 17.2, 18.1, 18.3 +The median is 17.2 +The upper quartile is 18.1 +The lower quartile is 16.5 diff --git a/gsl-2.5/doc/examples/sum b/gsl-2.5/doc/examples/sum new file mode 100755 index 00000000..c4817e4c --- /dev/null +++ b/gsl-2.5/doc/examples/sum @@ -0,0 +1,228 @@ +#! /bin/sh + +# sum - temporary wrapper script for .libs/sum +# Generated by libtool (GNU libtool) 2.4.2 +# +# The sum program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s/\([`"$\\]\)/\\\1/g' + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command="(cd /home/groups/kipac/chto/package/gsl/gsl-2.5/doc/examples; LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LIBRARY_PATH; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; LD_LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/fftw/include:/home/users/chto/lib/fftw/lib:/home/users/chto/lib/healpix/lib:/home/users/chto/lib/namaster/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/include:/home/users/chto/cpp/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LD_LIBRARY_PATH; PATH=/share/software/user/open/curl/7.54.0/bin:/share/software/user/open/libressl/2.5.3/bin:/home/users/chto/lib/cfitsio:/home/users/chto/lib/cfitsio/include:/home/users/chto/lib:/home/users/chto/bin/bin:/home/users/chto/bin:/home/users/chto/.texlive/bin/x86_64-linux:/home/groups/kipac/chto/anaconda2/envs/newenv3/bin:/home/users/chto/.local/bin/include:/home/users/chto/.local/bin/lib:/home/users/chto/.local/bin:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/bin64:/share/software/user/open/fftw/3.3.6/bin:/home/groups/kipac/chto/anaconda2/condabin:/share/software/user/restricted/ifort/2019/bin:/share/software/user/open/gsl/2.3/bin:/share/software/user/srcc/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/dell/srvadmin/bin:/opt/dell/srvadmin/iSM/bin:/home/users/chto/bin; export PATH; gcc -g -O2 -o \$progdir/\$file sum.o ../../.libs/libgsl.so ../../cblas/.libs/libgslcblas.so -lm -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/.libs -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/cblas/.libs -Wl,-rpath -Wl,/usr/local/lib)" + +# This environment variable determines our operation mode. +if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then + # install mode needs the following variables: + generated_by_libtool_version='2.4.2' + notinst_deplibs=' ../../libgsl.la ../../cblas/libgslcblas.la' +else + # When we are sourced in execute mode, $file and $ECHO are already set. + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + file="$0" + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + ECHO="printf %s\\n" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ which is used only on +# windows platforms, and (c) all begin with the string --lt- +# (application programs are unlikely to have options which match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's ../../libtool value, followed by no. +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=$0 + shift + for lt_opt + do + case "$lt_opt" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%/[^/]*$%%'` + test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=. + lt_dump_F=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%^.*/%%'` + cat "$lt_dump_D/$lt_dump_F" + exit 0 + ;; + --lt-*) + $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n "$lt_option_debug"; then + echo "sum:sum:${LINENO}: libtool wrapper (GNU libtool) 2.4.2" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + $ECHO "sum:sum:${LINENO}: newargv[$lt_dump_args_N]: $lt_arg" + lt_dump_args_N=`expr $lt_dump_args_N + 1` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ + + if test -n "$lt_option_debug"; then + $ECHO "sum:sum:${LINENO}: newargv[0]: $progdir/$program" 1>&2 + func_lt_dump_args ${1+"$@"} 1>&2 + fi + exec "$progdir/$program" ${1+"$@"} + + $ECHO "$0: cannot exec $program $*" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from $@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case " $* " in + *\ --lt-*) + for lt_wr_arg + do + case $lt_wr_arg in + --lt-*) ;; + *) set x "$@" "$lt_wr_arg"; shift;; + esac + shift + done ;; + esac + func_exec_program_core ${1+"$@"} +} + + # Parse options + func_parse_lt_options "$0" ${1+"$@"} + + # Find the directory that this script lives in. + thisdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + test "x$thisdir" = "x$file" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=`ls -ld "$file" | /usr/bin/sed -n 's/.*-> //p'` + while test -n "$file"; do + destdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + + # If there was a directory component, then change thisdir. + if test "x$destdir" != "x$file"; then + case "$destdir" in + [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;; + *) thisdir="$thisdir/$destdir" ;; + esac + fi + + file=`$ECHO "$file" | /usr/bin/sed 's%^.*/%%'` + file=`ls -ld "$thisdir/$file" | /usr/bin/sed -n 's/.*-> //p'` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no + if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then + # special case for '.' + if test "$thisdir" = "."; then + thisdir=`pwd` + fi + # remove .libs from thisdir + case "$thisdir" in + *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /usr/bin/sed 's%[\\/][^\\/]*$%%'` ;; + .libs ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=`cd "$thisdir" && pwd` + test -n "$absdir" && thisdir="$absdir" + + program=lt-'sum' + progdir="$thisdir/.libs" + + if test ! -f "$progdir/$program" || + { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /usr/bin/sed 1q`; \ + test "X$file" != "X$progdir/$program"; }; then + + file="$$-$program" + + if test ! -d "$progdir"; then + mkdir "$progdir" + else + rm -f "$progdir/$file" + fi + + # relink executable if necessary + if test -n "$relink_command"; then + if relink_command_output=`eval $relink_command 2>&1`; then : + else + printf %s\n "$relink_command_output" >&2 + rm -f "$progdir/$file" + exit 1 + fi + fi + + mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null || + { rm -f "$progdir/$program"; + mv -f "$progdir/$file" "$progdir/$program"; } + rm -f "$progdir/$file" + fi + + if test -f "$progdir/$program"; then + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + # Run the actual program with our arguments. + func_exec_program ${1+"$@"} + fi + else + # The program doesn't exist. + $ECHO "$0: error: \`$progdir/$program' does not exist" 1>&2 + $ECHO "This script is just a wrapper for $program." 1>&2 + $ECHO "See the libtool documentation for more information." 1>&2 + exit 1 + fi +fi diff --git a/gsl-2.5/doc/examples/sum.c b/gsl-2.5/doc/examples/sum.c new file mode 100644 index 00000000..65dacc96 --- /dev/null +++ b/gsl-2.5/doc/examples/sum.c @@ -0,0 +1,47 @@ +#include +#include +#include + +#define N 20 + +int +main (void) +{ + double t[N]; + double sum_accel, err; + double sum = 0; + int n; + + gsl_sum_levin_u_workspace * w + = gsl_sum_levin_u_alloc (N); + + const double zeta_2 = M_PI * M_PI / 6.0; + + /* terms for zeta(2) = \sum_{n=1}^{\infty} 1/n^2 */ + + for (n = 0; n < N; n++) + { + double np1 = n + 1.0; + t[n] = 1.0 / (np1 * np1); + sum += t[n]; + } + + gsl_sum_levin_u_accel (t, N, w, &sum_accel, &err); + + printf ("term-by-term sum = % .16f using %d terms\n", + sum, N); + + printf ("term-by-term sum = % .16f using %zu terms\n", + w->sum_plain, w->terms_used); + + printf ("exact value = % .16f\n", zeta_2); + printf ("accelerated sum = % .16f using %zu terms\n", + sum_accel, w->terms_used); + + printf ("estimated error = % .16f\n", err); + printf ("actual error = % .16f\n", + sum_accel - zeta_2); + + gsl_sum_levin_u_free (w); + return 0; +} diff --git a/gsl-2.5/doc/examples/sum.txt b/gsl-2.5/doc/examples/sum.txt new file mode 100644 index 00000000..cb69a556 --- /dev/null +++ b/gsl-2.5/doc/examples/sum.txt @@ -0,0 +1,6 @@ +term-by-term sum = 1.5961632439130233 using 20 terms +term-by-term sum = 1.5759958390005426 using 13 terms +exact value = 1.6449340668482264 +accelerated sum = 1.6449340669228176 using 13 terms +estimated error = 0.0000000000888360 +actual error = 0.0000000000745912 diff --git a/gsl-2.5/doc/examples/vector b/gsl-2.5/doc/examples/vector new file mode 100755 index 00000000..ca8a710a --- /dev/null +++ b/gsl-2.5/doc/examples/vector @@ -0,0 +1,228 @@ +#! /bin/sh + +# vector - temporary wrapper script for .libs/vector +# Generated by libtool (GNU libtool) 2.4.2 +# +# The vector program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s/\([`"$\\]\)/\\\1/g' + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command="(cd /home/groups/kipac/chto/package/gsl/gsl-2.5/doc/examples; LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LIBRARY_PATH; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; LD_LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/fftw/include:/home/users/chto/lib/fftw/lib:/home/users/chto/lib/healpix/lib:/home/users/chto/lib/namaster/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/include:/home/users/chto/cpp/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LD_LIBRARY_PATH; PATH=/share/software/user/open/curl/7.54.0/bin:/share/software/user/open/libressl/2.5.3/bin:/home/users/chto/lib/cfitsio:/home/users/chto/lib/cfitsio/include:/home/users/chto/lib:/home/users/chto/bin/bin:/home/users/chto/bin:/home/users/chto/.texlive/bin/x86_64-linux:/home/groups/kipac/chto/anaconda2/envs/newenv3/bin:/home/users/chto/.local/bin/include:/home/users/chto/.local/bin/lib:/home/users/chto/.local/bin:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/bin64:/share/software/user/open/fftw/3.3.6/bin:/home/groups/kipac/chto/anaconda2/condabin:/share/software/user/restricted/ifort/2019/bin:/share/software/user/open/gsl/2.3/bin:/share/software/user/srcc/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/dell/srvadmin/bin:/opt/dell/srvadmin/iSM/bin:/home/users/chto/bin; export PATH; gcc -g -O2 -o \$progdir/\$file vector.o ../../.libs/libgsl.so ../../cblas/.libs/libgslcblas.so -lm -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/.libs -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/cblas/.libs -Wl,-rpath -Wl,/usr/local/lib)" + +# This environment variable determines our operation mode. +if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then + # install mode needs the following variables: + generated_by_libtool_version='2.4.2' + notinst_deplibs=' ../../libgsl.la ../../cblas/libgslcblas.la' +else + # When we are sourced in execute mode, $file and $ECHO are already set. + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + file="$0" + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + ECHO="printf %s\\n" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ which is used only on +# windows platforms, and (c) all begin with the string --lt- +# (application programs are unlikely to have options which match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's ../../libtool value, followed by no. +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=$0 + shift + for lt_opt + do + case "$lt_opt" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%/[^/]*$%%'` + test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=. + lt_dump_F=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%^.*/%%'` + cat "$lt_dump_D/$lt_dump_F" + exit 0 + ;; + --lt-*) + $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n "$lt_option_debug"; then + echo "vector:vector:${LINENO}: libtool wrapper (GNU libtool) 2.4.2" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + $ECHO "vector:vector:${LINENO}: newargv[$lt_dump_args_N]: $lt_arg" + lt_dump_args_N=`expr $lt_dump_args_N + 1` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ + + if test -n "$lt_option_debug"; then + $ECHO "vector:vector:${LINENO}: newargv[0]: $progdir/$program" 1>&2 + func_lt_dump_args ${1+"$@"} 1>&2 + fi + exec "$progdir/$program" ${1+"$@"} + + $ECHO "$0: cannot exec $program $*" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from $@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case " $* " in + *\ --lt-*) + for lt_wr_arg + do + case $lt_wr_arg in + --lt-*) ;; + *) set x "$@" "$lt_wr_arg"; shift;; + esac + shift + done ;; + esac + func_exec_program_core ${1+"$@"} +} + + # Parse options + func_parse_lt_options "$0" ${1+"$@"} + + # Find the directory that this script lives in. + thisdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + test "x$thisdir" = "x$file" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=`ls -ld "$file" | /usr/bin/sed -n 's/.*-> //p'` + while test -n "$file"; do + destdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + + # If there was a directory component, then change thisdir. + if test "x$destdir" != "x$file"; then + case "$destdir" in + [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;; + *) thisdir="$thisdir/$destdir" ;; + esac + fi + + file=`$ECHO "$file" | /usr/bin/sed 's%^.*/%%'` + file=`ls -ld "$thisdir/$file" | /usr/bin/sed -n 's/.*-> //p'` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no + if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then + # special case for '.' + if test "$thisdir" = "."; then + thisdir=`pwd` + fi + # remove .libs from thisdir + case "$thisdir" in + *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /usr/bin/sed 's%[\\/][^\\/]*$%%'` ;; + .libs ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=`cd "$thisdir" && pwd` + test -n "$absdir" && thisdir="$absdir" + + program=lt-'vector' + progdir="$thisdir/.libs" + + if test ! -f "$progdir/$program" || + { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /usr/bin/sed 1q`; \ + test "X$file" != "X$progdir/$program"; }; then + + file="$$-$program" + + if test ! -d "$progdir"; then + mkdir "$progdir" + else + rm -f "$progdir/$file" + fi + + # relink executable if necessary + if test -n "$relink_command"; then + if relink_command_output=`eval $relink_command 2>&1`; then : + else + printf %s\n "$relink_command_output" >&2 + rm -f "$progdir/$file" + exit 1 + fi + fi + + mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null || + { rm -f "$progdir/$program"; + mv -f "$progdir/$file" "$progdir/$program"; } + rm -f "$progdir/$file" + fi + + if test -f "$progdir/$program"; then + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + # Run the actual program with our arguments. + func_exec_program ${1+"$@"} + fi + else + # The program doesn't exist. + $ECHO "$0: error: \`$progdir/$program' does not exist" 1>&2 + $ECHO "This script is just a wrapper for $program." 1>&2 + $ECHO "See the libtool documentation for more information." 1>&2 + exit 1 + fi +fi diff --git a/gsl-2.5/doc/examples/vector.c b/gsl-2.5/doc/examples/vector.c new file mode 100644 index 00000000..27462b00 --- /dev/null +++ b/gsl-2.5/doc/examples/vector.c @@ -0,0 +1,22 @@ +#include +#include + +int +main (void) +{ + int i; + gsl_vector * v = gsl_vector_alloc (3); + + for (i = 0; i < 3; i++) + { + gsl_vector_set (v, i, 1.23 + i); + } + + for (i = 0; i < 100; i++) /* OUT OF RANGE ERROR */ + { + printf ("v_%d = %g\n", i, gsl_vector_get (v, i)); + } + + gsl_vector_free (v); + return 0; +} diff --git a/gsl-2.5/doc/examples/vectorr b/gsl-2.5/doc/examples/vectorr new file mode 100755 index 00000000..f74bb8dc --- /dev/null +++ b/gsl-2.5/doc/examples/vectorr @@ -0,0 +1,228 @@ +#! /bin/sh + +# vectorr - temporary wrapper script for .libs/vectorr +# Generated by libtool (GNU libtool) 2.4.2 +# +# The vectorr program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s/\([`"$\\]\)/\\\1/g' + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command="(cd /home/groups/kipac/chto/package/gsl/gsl-2.5/doc/examples; LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LIBRARY_PATH; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; LD_LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/fftw/include:/home/users/chto/lib/fftw/lib:/home/users/chto/lib/healpix/lib:/home/users/chto/lib/namaster/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/include:/home/users/chto/cpp/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LD_LIBRARY_PATH; PATH=/share/software/user/open/curl/7.54.0/bin:/share/software/user/open/libressl/2.5.3/bin:/home/users/chto/lib/cfitsio:/home/users/chto/lib/cfitsio/include:/home/users/chto/lib:/home/users/chto/bin/bin:/home/users/chto/bin:/home/users/chto/.texlive/bin/x86_64-linux:/home/groups/kipac/chto/anaconda2/envs/newenv3/bin:/home/users/chto/.local/bin/include:/home/users/chto/.local/bin/lib:/home/users/chto/.local/bin:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/bin64:/share/software/user/open/fftw/3.3.6/bin:/home/groups/kipac/chto/anaconda2/condabin:/share/software/user/restricted/ifort/2019/bin:/share/software/user/open/gsl/2.3/bin:/share/software/user/srcc/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/dell/srvadmin/bin:/opt/dell/srvadmin/iSM/bin:/home/users/chto/bin; export PATH; gcc -g -O2 -o \$progdir/\$file vectorr.o ../../.libs/libgsl.so ../../cblas/.libs/libgslcblas.so -lm -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/.libs -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/cblas/.libs -Wl,-rpath -Wl,/usr/local/lib)" + +# This environment variable determines our operation mode. +if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then + # install mode needs the following variables: + generated_by_libtool_version='2.4.2' + notinst_deplibs=' ../../libgsl.la ../../cblas/libgslcblas.la' +else + # When we are sourced in execute mode, $file and $ECHO are already set. + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + file="$0" + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + ECHO="printf %s\\n" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ which is used only on +# windows platforms, and (c) all begin with the string --lt- +# (application programs are unlikely to have options which match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's ../../libtool value, followed by no. +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=$0 + shift + for lt_opt + do + case "$lt_opt" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%/[^/]*$%%'` + test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=. + lt_dump_F=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%^.*/%%'` + cat "$lt_dump_D/$lt_dump_F" + exit 0 + ;; + --lt-*) + $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n "$lt_option_debug"; then + echo "vectorr:vectorr:${LINENO}: libtool wrapper (GNU libtool) 2.4.2" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + $ECHO "vectorr:vectorr:${LINENO}: newargv[$lt_dump_args_N]: $lt_arg" + lt_dump_args_N=`expr $lt_dump_args_N + 1` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ + + if test -n "$lt_option_debug"; then + $ECHO "vectorr:vectorr:${LINENO}: newargv[0]: $progdir/$program" 1>&2 + func_lt_dump_args ${1+"$@"} 1>&2 + fi + exec "$progdir/$program" ${1+"$@"} + + $ECHO "$0: cannot exec $program $*" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from $@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case " $* " in + *\ --lt-*) + for lt_wr_arg + do + case $lt_wr_arg in + --lt-*) ;; + *) set x "$@" "$lt_wr_arg"; shift;; + esac + shift + done ;; + esac + func_exec_program_core ${1+"$@"} +} + + # Parse options + func_parse_lt_options "$0" ${1+"$@"} + + # Find the directory that this script lives in. + thisdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + test "x$thisdir" = "x$file" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=`ls -ld "$file" | /usr/bin/sed -n 's/.*-> //p'` + while test -n "$file"; do + destdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + + # If there was a directory component, then change thisdir. + if test "x$destdir" != "x$file"; then + case "$destdir" in + [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;; + *) thisdir="$thisdir/$destdir" ;; + esac + fi + + file=`$ECHO "$file" | /usr/bin/sed 's%^.*/%%'` + file=`ls -ld "$thisdir/$file" | /usr/bin/sed -n 's/.*-> //p'` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no + if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then + # special case for '.' + if test "$thisdir" = "."; then + thisdir=`pwd` + fi + # remove .libs from thisdir + case "$thisdir" in + *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /usr/bin/sed 's%[\\/][^\\/]*$%%'` ;; + .libs ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=`cd "$thisdir" && pwd` + test -n "$absdir" && thisdir="$absdir" + + program=lt-'vectorr' + progdir="$thisdir/.libs" + + if test ! -f "$progdir/$program" || + { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /usr/bin/sed 1q`; \ + test "X$file" != "X$progdir/$program"; }; then + + file="$$-$program" + + if test ! -d "$progdir"; then + mkdir "$progdir" + else + rm -f "$progdir/$file" + fi + + # relink executable if necessary + if test -n "$relink_command"; then + if relink_command_output=`eval $relink_command 2>&1`; then : + else + printf %s\n "$relink_command_output" >&2 + rm -f "$progdir/$file" + exit 1 + fi + fi + + mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null || + { rm -f "$progdir/$program"; + mv -f "$progdir/$file" "$progdir/$program"; } + rm -f "$progdir/$file" + fi + + if test -f "$progdir/$program"; then + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + # Run the actual program with our arguments. + func_exec_program ${1+"$@"} + fi + else + # The program doesn't exist. + $ECHO "$0: error: \`$progdir/$program' does not exist" 1>&2 + $ECHO "This script is just a wrapper for $program." 1>&2 + $ECHO "See the libtool documentation for more information." 1>&2 + exit 1 + fi +fi diff --git a/gsl-2.5/doc/examples/vectorr.c b/gsl-2.5/doc/examples/vectorr.c new file mode 100644 index 00000000..203986b2 --- /dev/null +++ b/gsl-2.5/doc/examples/vectorr.c @@ -0,0 +1,23 @@ +#include +#include + +int +main (void) +{ + int i; + gsl_vector * v = gsl_vector_alloc (10); + + { + FILE * f = fopen ("test.dat", "r"); + gsl_vector_fscanf (f, v); + fclose (f); + } + + for (i = 0; i < 10; i++) + { + printf ("%g\n", gsl_vector_get(v, i)); + } + + gsl_vector_free (v); + return 0; +} diff --git a/gsl-2.5/doc/examples/vectorr.txt b/gsl-2.5/doc/examples/vectorr.txt new file mode 100644 index 00000000..a12ca703 --- /dev/null +++ b/gsl-2.5/doc/examples/vectorr.txt @@ -0,0 +1,10 @@ +1.23 +2.23 +3.23 +4.23 +5.23 +6.23 +7.23 +8.23 +9.23 +10.23 diff --git a/gsl-2.5/doc/examples/vectorview b/gsl-2.5/doc/examples/vectorview new file mode 100755 index 00000000..340182b7 --- /dev/null +++ b/gsl-2.5/doc/examples/vectorview @@ -0,0 +1,228 @@ +#! /bin/sh + +# vectorview - temporary wrapper script for .libs/vectorview +# Generated by libtool (GNU libtool) 2.4.2 +# +# The vectorview program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s/\([`"$\\]\)/\\\1/g' + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command="(cd /home/groups/kipac/chto/package/gsl/gsl-2.5/doc/examples; LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LIBRARY_PATH; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; LD_LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/fftw/include:/home/users/chto/lib/fftw/lib:/home/users/chto/lib/healpix/lib:/home/users/chto/lib/namaster/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/include:/home/users/chto/cpp/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LD_LIBRARY_PATH; PATH=/share/software/user/open/curl/7.54.0/bin:/share/software/user/open/libressl/2.5.3/bin:/home/users/chto/lib/cfitsio:/home/users/chto/lib/cfitsio/include:/home/users/chto/lib:/home/users/chto/bin/bin:/home/users/chto/bin:/home/users/chto/.texlive/bin/x86_64-linux:/home/groups/kipac/chto/anaconda2/envs/newenv3/bin:/home/users/chto/.local/bin/include:/home/users/chto/.local/bin/lib:/home/users/chto/.local/bin:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/bin64:/share/software/user/open/fftw/3.3.6/bin:/home/groups/kipac/chto/anaconda2/condabin:/share/software/user/restricted/ifort/2019/bin:/share/software/user/open/gsl/2.3/bin:/share/software/user/srcc/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/dell/srvadmin/bin:/opt/dell/srvadmin/iSM/bin:/home/users/chto/bin; export PATH; gcc -g -O2 -o \$progdir/\$file vectorview.o ../../.libs/libgsl.so ../../cblas/.libs/libgslcblas.so -lm -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/.libs -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/cblas/.libs -Wl,-rpath -Wl,/usr/local/lib)" + +# This environment variable determines our operation mode. +if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then + # install mode needs the following variables: + generated_by_libtool_version='2.4.2' + notinst_deplibs=' ../../libgsl.la ../../cblas/libgslcblas.la' +else + # When we are sourced in execute mode, $file and $ECHO are already set. + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + file="$0" + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + ECHO="printf %s\\n" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ which is used only on +# windows platforms, and (c) all begin with the string --lt- +# (application programs are unlikely to have options which match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's ../../libtool value, followed by no. +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=$0 + shift + for lt_opt + do + case "$lt_opt" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%/[^/]*$%%'` + test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=. + lt_dump_F=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%^.*/%%'` + cat "$lt_dump_D/$lt_dump_F" + exit 0 + ;; + --lt-*) + $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n "$lt_option_debug"; then + echo "vectorview:vectorview:${LINENO}: libtool wrapper (GNU libtool) 2.4.2" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + $ECHO "vectorview:vectorview:${LINENO}: newargv[$lt_dump_args_N]: $lt_arg" + lt_dump_args_N=`expr $lt_dump_args_N + 1` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ + + if test -n "$lt_option_debug"; then + $ECHO "vectorview:vectorview:${LINENO}: newargv[0]: $progdir/$program" 1>&2 + func_lt_dump_args ${1+"$@"} 1>&2 + fi + exec "$progdir/$program" ${1+"$@"} + + $ECHO "$0: cannot exec $program $*" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from $@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case " $* " in + *\ --lt-*) + for lt_wr_arg + do + case $lt_wr_arg in + --lt-*) ;; + *) set x "$@" "$lt_wr_arg"; shift;; + esac + shift + done ;; + esac + func_exec_program_core ${1+"$@"} +} + + # Parse options + func_parse_lt_options "$0" ${1+"$@"} + + # Find the directory that this script lives in. + thisdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + test "x$thisdir" = "x$file" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=`ls -ld "$file" | /usr/bin/sed -n 's/.*-> //p'` + while test -n "$file"; do + destdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + + # If there was a directory component, then change thisdir. + if test "x$destdir" != "x$file"; then + case "$destdir" in + [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;; + *) thisdir="$thisdir/$destdir" ;; + esac + fi + + file=`$ECHO "$file" | /usr/bin/sed 's%^.*/%%'` + file=`ls -ld "$thisdir/$file" | /usr/bin/sed -n 's/.*-> //p'` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no + if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then + # special case for '.' + if test "$thisdir" = "."; then + thisdir=`pwd` + fi + # remove .libs from thisdir + case "$thisdir" in + *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /usr/bin/sed 's%[\\/][^\\/]*$%%'` ;; + .libs ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=`cd "$thisdir" && pwd` + test -n "$absdir" && thisdir="$absdir" + + program=lt-'vectorview' + progdir="$thisdir/.libs" + + if test ! -f "$progdir/$program" || + { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /usr/bin/sed 1q`; \ + test "X$file" != "X$progdir/$program"; }; then + + file="$$-$program" + + if test ! -d "$progdir"; then + mkdir "$progdir" + else + rm -f "$progdir/$file" + fi + + # relink executable if necessary + if test -n "$relink_command"; then + if relink_command_output=`eval $relink_command 2>&1`; then : + else + printf %s\n "$relink_command_output" >&2 + rm -f "$progdir/$file" + exit 1 + fi + fi + + mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null || + { rm -f "$progdir/$program"; + mv -f "$progdir/$file" "$progdir/$program"; } + rm -f "$progdir/$file" + fi + + if test -f "$progdir/$program"; then + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + # Run the actual program with our arguments. + func_exec_program ${1+"$@"} + fi + else + # The program doesn't exist. + $ECHO "$0: error: \`$progdir/$program' does not exist" 1>&2 + $ECHO "This script is just a wrapper for $program." 1>&2 + $ECHO "See the libtool documentation for more information." 1>&2 + exit 1 + fi +fi diff --git a/gsl-2.5/doc/examples/vectorview.c b/gsl-2.5/doc/examples/vectorview.c new file mode 100644 index 00000000..625f1469 --- /dev/null +++ b/gsl-2.5/doc/examples/vectorview.c @@ -0,0 +1,30 @@ +#include +#include +#include +#include + +int +main (void) +{ + size_t i,j; + + gsl_matrix *m = gsl_matrix_alloc (10, 10); + + for (i = 0; i < 10; i++) + for (j = 0; j < 10; j++) + gsl_matrix_set (m, i, j, sin (i) + cos (j)); + + for (j = 0; j < 10; j++) + { + gsl_vector_view column = gsl_matrix_column (m, j); + double d; + + d = gsl_blas_dnrm2 (&column.vector); + + printf ("matrix column %zu, norm = %g\n", j, d); + } + + gsl_matrix_free (m); + + return 0; +} diff --git a/gsl-2.5/doc/examples/vectorview.txt b/gsl-2.5/doc/examples/vectorview.txt new file mode 100644 index 00000000..0138c245 --- /dev/null +++ b/gsl-2.5/doc/examples/vectorview.txt @@ -0,0 +1,10 @@ +matrix column 0, norm = 4.31461 +matrix column 1, norm = 3.1205 +matrix column 2, norm = 2.19316 +matrix column 3, norm = 3.26114 +matrix column 4, norm = 2.53416 +matrix column 5, norm = 2.57281 +matrix column 6, norm = 4.20469 +matrix column 7, norm = 3.65202 +matrix column 8, norm = 2.08524 +matrix column 9, norm = 3.07313 diff --git a/gsl-2.5/doc/examples/vectorw b/gsl-2.5/doc/examples/vectorw new file mode 100755 index 00000000..d08c0c86 --- /dev/null +++ b/gsl-2.5/doc/examples/vectorw @@ -0,0 +1,228 @@ +#! /bin/sh + +# vectorw - temporary wrapper script for .libs/vectorw +# Generated by libtool (GNU libtool) 2.4.2 +# +# The vectorw program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s/\([`"$\\]\)/\\\1/g' + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command="(cd /home/groups/kipac/chto/package/gsl/gsl-2.5/doc/examples; LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LIBRARY_PATH; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; LD_LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/fftw/include:/home/users/chto/lib/fftw/lib:/home/users/chto/lib/healpix/lib:/home/users/chto/lib/namaster/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/include:/home/users/chto/cpp/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LD_LIBRARY_PATH; PATH=/share/software/user/open/curl/7.54.0/bin:/share/software/user/open/libressl/2.5.3/bin:/home/users/chto/lib/cfitsio:/home/users/chto/lib/cfitsio/include:/home/users/chto/lib:/home/users/chto/bin/bin:/home/users/chto/bin:/home/users/chto/.texlive/bin/x86_64-linux:/home/groups/kipac/chto/anaconda2/envs/newenv3/bin:/home/users/chto/.local/bin/include:/home/users/chto/.local/bin/lib:/home/users/chto/.local/bin:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/bin64:/share/software/user/open/fftw/3.3.6/bin:/home/groups/kipac/chto/anaconda2/condabin:/share/software/user/restricted/ifort/2019/bin:/share/software/user/open/gsl/2.3/bin:/share/software/user/srcc/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/dell/srvadmin/bin:/opt/dell/srvadmin/iSM/bin:/home/users/chto/bin; export PATH; gcc -g -O2 -o \$progdir/\$file vectorw.o ../../.libs/libgsl.so ../../cblas/.libs/libgslcblas.so -lm -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/.libs -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/cblas/.libs -Wl,-rpath -Wl,/usr/local/lib)" + +# This environment variable determines our operation mode. +if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then + # install mode needs the following variables: + generated_by_libtool_version='2.4.2' + notinst_deplibs=' ../../libgsl.la ../../cblas/libgslcblas.la' +else + # When we are sourced in execute mode, $file and $ECHO are already set. + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + file="$0" + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + ECHO="printf %s\\n" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ which is used only on +# windows platforms, and (c) all begin with the string --lt- +# (application programs are unlikely to have options which match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's ../../libtool value, followed by no. +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=$0 + shift + for lt_opt + do + case "$lt_opt" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%/[^/]*$%%'` + test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=. + lt_dump_F=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%^.*/%%'` + cat "$lt_dump_D/$lt_dump_F" + exit 0 + ;; + --lt-*) + $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n "$lt_option_debug"; then + echo "vectorw:vectorw:${LINENO}: libtool wrapper (GNU libtool) 2.4.2" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + $ECHO "vectorw:vectorw:${LINENO}: newargv[$lt_dump_args_N]: $lt_arg" + lt_dump_args_N=`expr $lt_dump_args_N + 1` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ + + if test -n "$lt_option_debug"; then + $ECHO "vectorw:vectorw:${LINENO}: newargv[0]: $progdir/$program" 1>&2 + func_lt_dump_args ${1+"$@"} 1>&2 + fi + exec "$progdir/$program" ${1+"$@"} + + $ECHO "$0: cannot exec $program $*" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from $@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case " $* " in + *\ --lt-*) + for lt_wr_arg + do + case $lt_wr_arg in + --lt-*) ;; + *) set x "$@" "$lt_wr_arg"; shift;; + esac + shift + done ;; + esac + func_exec_program_core ${1+"$@"} +} + + # Parse options + func_parse_lt_options "$0" ${1+"$@"} + + # Find the directory that this script lives in. + thisdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + test "x$thisdir" = "x$file" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=`ls -ld "$file" | /usr/bin/sed -n 's/.*-> //p'` + while test -n "$file"; do + destdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + + # If there was a directory component, then change thisdir. + if test "x$destdir" != "x$file"; then + case "$destdir" in + [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;; + *) thisdir="$thisdir/$destdir" ;; + esac + fi + + file=`$ECHO "$file" | /usr/bin/sed 's%^.*/%%'` + file=`ls -ld "$thisdir/$file" | /usr/bin/sed -n 's/.*-> //p'` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no + if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then + # special case for '.' + if test "$thisdir" = "."; then + thisdir=`pwd` + fi + # remove .libs from thisdir + case "$thisdir" in + *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /usr/bin/sed 's%[\\/][^\\/]*$%%'` ;; + .libs ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=`cd "$thisdir" && pwd` + test -n "$absdir" && thisdir="$absdir" + + program=lt-'vectorw' + progdir="$thisdir/.libs" + + if test ! -f "$progdir/$program" || + { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /usr/bin/sed 1q`; \ + test "X$file" != "X$progdir/$program"; }; then + + file="$$-$program" + + if test ! -d "$progdir"; then + mkdir "$progdir" + else + rm -f "$progdir/$file" + fi + + # relink executable if necessary + if test -n "$relink_command"; then + if relink_command_output=`eval $relink_command 2>&1`; then : + else + printf %s\n "$relink_command_output" >&2 + rm -f "$progdir/$file" + exit 1 + fi + fi + + mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null || + { rm -f "$progdir/$program"; + mv -f "$progdir/$file" "$progdir/$program"; } + rm -f "$progdir/$file" + fi + + if test -f "$progdir/$program"; then + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + # Run the actual program with our arguments. + func_exec_program ${1+"$@"} + fi + else + # The program doesn't exist. + $ECHO "$0: error: \`$progdir/$program' does not exist" 1>&2 + $ECHO "This script is just a wrapper for $program." 1>&2 + $ECHO "See the libtool documentation for more information." 1>&2 + exit 1 + fi +fi diff --git a/gsl-2.5/doc/examples/vectorw.c b/gsl-2.5/doc/examples/vectorw.c new file mode 100644 index 00000000..f25468b8 --- /dev/null +++ b/gsl-2.5/doc/examples/vectorw.c @@ -0,0 +1,23 @@ +#include +#include + +int +main (void) +{ + int i; + gsl_vector * v = gsl_vector_alloc (100); + + for (i = 0; i < 100; i++) + { + gsl_vector_set (v, i, 1.23 + i); + } + + { + FILE * f = fopen ("test.dat", "w"); + gsl_vector_fprintf (f, v, "%.5g"); + fclose (f); + } + + gsl_vector_free (v); + return 0; +} diff --git a/gsl-2.5/doc/fdl.rst b/gsl-2.5/doc/fdl.rst new file mode 100644 index 00000000..1ad5ab72 --- /dev/null +++ b/gsl-2.5/doc/fdl.rst @@ -0,0 +1,5 @@ +****************************** +GNU Free Documentation License +****************************** + +.. literalinclude:: _static/fdl.txt diff --git a/gsl-2.5/doc/fft.rst b/gsl-2.5/doc/fft.rst new file mode 100644 index 00000000..c136289a --- /dev/null +++ b/gsl-2.5/doc/fft.rst @@ -0,0 +1,805 @@ +.. index:: + single: FFT + single: Fast Fourier Transforms, see FFT + single: Fourier Transforms, see FFT + single: Discrete Fourier Transforms, see FFT + single: DFTs, see FFT + +****************************** +Fast Fourier Transforms (FFTs) +****************************** + +.. include:: include.rst + +This chapter describes functions for performing Fast Fourier Transforms +(FFTs). The library includes radix-2 routines (for lengths which are a +power of two) and mixed-radix routines (which work for any length). For +efficiency there are separate versions of the routines for real data and +for complex data. The mixed-radix routines are a reimplementation of the +|fftpack| library of Paul Swarztrauber. Fortran code for |fftpack| is +available on Netlib (|fftpack| also includes some routines for sine and +cosine transforms but these are currently not available in GSL). For +details and derivations of the underlying algorithms consult the +document "GSL FFT Algorithms" (see :ref:`References and Further Reading `) + +.. index:: FFT mathematical definition + +Mathematical Definitions +======================== + +Fast Fourier Transforms are efficient algorithms for +calculating the discrete Fourier transform (DFT), + +.. math:: x_j = \sum_{k=0}^{n-1} z_k \exp(-2 \pi i j k / n) + +The DFT usually arises as an approximation to the continuous Fourier +transform when functions are sampled at discrete intervals in space or +time. The naive evaluation of the discrete Fourier transform is a +matrix-vector multiplication :math:`W\vec{z}`. +A general matrix-vector multiplication takes +:math:`O(n^2)` operations for :math:`n` data-points. Fast Fourier +transform algorithms use a divide-and-conquer strategy to factorize the +matrix :math:`W` into smaller sub-matrices, corresponding to the integer +factors of the length :math:`n`. If :math:`n` can be factorized into a +product of integers :math:`f_1 f_2 \ldots f_m` +then the DFT can be computed in :math:`O(n \sum f_i)` +operations. For a radix-2 FFT this gives an operation count of +:math:`O(n \log_2 n)`. + +All the FFT functions offer three types of transform: forwards, inverse +and backwards, based on the same mathematical definitions. The +definition of the *forward Fourier transform*, +:math:`x = \hbox{FFT}(z)`, is, + +.. math:: x_j = \sum_{k=0}^{n-1} z_k \exp(-2 \pi i j k / n) + +and the definition of the *inverse Fourier transform*, +:math:`x = \hbox{IFFT}(z)`, is, + +.. math:: z_j = {1 \over n} \sum_{k=0}^{n-1} x_k \exp(2 \pi i j k / n). + +The factor of :math:`1/n` makes this a true inverse. For example, a call +to :func:`gsl_fft_complex_forward` followed by a call to +:func:`gsl_fft_complex_inverse` should return the original data (within +numerical errors). + +In general there are two possible choices for the sign of the +exponential in the transform/ inverse-transform pair. GSL follows the +same convention as |fftpack|, using a negative exponential for the forward +transform. The advantage of this convention is that the inverse +transform recreates the original function with simple Fourier +synthesis. Numerical Recipes uses the opposite convention, a positive +exponential in the forward transform. + +The *backwards FFT* is simply our terminology for an unscaled +version of the inverse FFT, + +.. math:: z^{backwards}_j = \sum_{k=0}^{n-1} x_k \exp(2 \pi i j k / n) + +When the overall scale of the result is unimportant it is often +convenient to use the backwards FFT instead of the inverse to save +unnecessary divisions. + +.. index:: + single: FFT, complex data + +Overview of complex data FFTs +============================= + +The inputs and outputs for the complex FFT routines are *packed arrays* +of floating point numbers. In a packed array the real and +imaginary parts of each complex number are placed in alternate +neighboring elements. For example, the following definition of a packed +array of length 6:: + + double x[3*2]; + gsl_complex_packed_array data = x; + +can be used to hold an array of three complex numbers, :code:`z[3]`, in +the following way:: + + data[0] = Re(z[0]) + data[1] = Im(z[0]) + data[2] = Re(z[1]) + data[3] = Im(z[1]) + data[4] = Re(z[2]) + data[5] = Im(z[2]) + +The array indices for the data have the same ordering as those +in the definition of the DFT---i.e. there are no index transformations +or permutations of the data. + +A *stride* parameter allows the user to perform transforms on the +elements :code:`z[stride*i]` instead of :code:`z[i]`. A stride greater +than 1 can be used to take an in-place FFT of the column of a matrix. A +stride of 1 accesses the array without any additional spacing between +elements. + +To perform an FFT on a vector argument, such as :code:`gsl_vector_complex * v`, +use the following definitions (or their equivalents) when calling +the functions described in this chapter:: + + gsl_complex_packed_array data = v->data; + size_t stride = v->stride; + size_t n = v->size; + +For physical applications it is important to remember that the index +appearing in the DFT does not correspond directly to a physical +frequency. If the time-step of the DFT is :math:`\Delta` then the +frequency-domain includes both positive and negative frequencies, +ranging from :math:`-1/(2\Delta)` through 0 to :math:`+1/(2\Delta)`. The +positive frequencies are stored from the beginning of the array up to +the middle, and the negative frequencies are stored backwards from the +end of the array. + +Here is a table which shows the layout of the array :data:`data`, and the +correspondence between the time-domain data :math:`z`, and the +frequency-domain data :math:`x`:: + + index z x = FFT(z) + + 0 z(t = 0) x(f = 0) + 1 z(t = 1) x(f = 1/(n Delta)) + 2 z(t = 2) x(f = 2/(n Delta)) + . ........ .................. + n/2 z(t = n/2) x(f = +1/(2 Delta), + -1/(2 Delta)) + . ........ .................. + n-3 z(t = n-3) x(f = -3/(n Delta)) + n-2 z(t = n-2) x(f = -2/(n Delta)) + n-1 z(t = n-1) x(f = -1/(n Delta)) + +When :math:`n` is even the location :math:`n/2` contains the most positive +and negative frequencies (:math:`+1/(2 \Delta)`, :math:`-1/(2 \Delta)`) +which are equivalent. If :math:`n` is odd then general structure of the +table above still applies, but :math:`n/2` does not appear. + +.. index:: + single: FFT of complex data, radix-2 algorithm + single: Radix-2 FFT, complex data + +Radix-2 FFT routines for complex data +===================================== + +The radix-2 algorithms described in this section are simple and compact, +although not necessarily the most efficient. They use the Cooley-Tukey +algorithm to compute in-place complex FFTs for lengths which are a power +of 2---no additional storage is required. The corresponding +self-sorting mixed-radix routines offer better performance at the +expense of requiring additional working space. + +All the functions described in this section are declared in the header file :file:`gsl_fft_complex.h`. + +.. function:: int gsl_fft_complex_radix2_forward (gsl_complex_packed_array data, size_t stride, size_t n) + int gsl_fft_complex_radix2_transform (gsl_complex_packed_array data, size_t stride, size_t n, gsl_fft_direction sign) + int gsl_fft_complex_radix2_backward (gsl_complex_packed_array data, size_t stride, size_t n) + int gsl_fft_complex_radix2_inverse (gsl_complex_packed_array data, size_t stride, size_t n) + + These functions compute forward, backward and inverse FFTs of length + :data:`n` with stride :data:`stride`, on the packed complex array :data:`data` + using an in-place radix-2 decimation-in-time algorithm. The length of + the transform :data:`n` is restricted to powers of two. For the + :code:`transform` version of the function the :data:`sign` argument can be + either :code:`forward` (:math:`-1`) or :code:`backward` (:math:`+1`). + + The functions return a value of :macro:`GSL_SUCCESS` if no errors were + detected, or :macro:`GSL_EDOM` if the length of the data :data:`n` is not a + power of two. + +.. function:: int gsl_fft_complex_radix2_dif_forward (gsl_complex_packed_array data, size_t stride, size_t n) + int gsl_fft_complex_radix2_dif_transform (gsl_complex_packed_array data, size_t stride, size_t n, gsl_fft_direction sign) + int gsl_fft_complex_radix2_dif_backward (gsl_complex_packed_array data, size_t stride, size_t n) + int gsl_fft_complex_radix2_dif_inverse (gsl_complex_packed_array data, size_t stride, size_t n) + + These are decimation-in-frequency versions of the radix-2 FFT functions. + +Here is an example program which computes the FFT of a short pulse in a +sample of length 128. To make the resulting Fourier transform real the +pulse is defined for equal positive and negative times (:math:`-10 \dots 10`), +where the negative times wrap around the end of the array. + +.. include:: examples/fft.c + :code: + +Note that we have assumed that the program is using the default error +handler (which calls :func:`abort` for any errors). If you are not using +a safe error handler you would need to check the return status of +:func:`gsl_fft_complex_radix2_forward`. + +The transformed data is rescaled by :math:`1/\sqrt n` so that it fits on +the same plot as the input. Only the real part is shown, by the choice +of the input data the imaginary part is zero. Allowing for the +wrap-around of negative times at :math:`t=128`, and working in units of +:math:`k/n`, the DFT approximates the continuum Fourier transform, giving +a modulated sine function. + +.. math:: \int_{-a}^{+a} e^{-2 \pi i k x} dx = {\sin(2\pi k a) \over\pi k} + +The output of the example program is plotted in :numref:`fig_fft-complex-radix2`. + +.. _fig_fft-complex-radix2: + +.. figure:: /images/fft-complex-radix2.png + :scale: 60% + + A pulse and its discrete Fourier transform, output from + the example program. + +.. index:: + single: FFT of complex data, mixed-radix algorithm + single: Mixed-radix FFT, complex data + +Mixed-radix FFT routines for complex data +========================================= + +This section describes mixed-radix FFT algorithms for complex data. The +mixed-radix functions work for FFTs of any length. They are a +reimplementation of Paul Swarztrauber's Fortran |fftpack| library. +The theory is explained in the review article "Self-sorting +Mixed-radix FFTs" by Clive Temperton. The routines here use the same +indexing scheme and basic algorithms as |fftpack|. + +The mixed-radix algorithm is based on sub-transform modules---highly +optimized small length FFTs which are combined to create larger FFTs. +There are efficient modules for factors of 2, 3, 4, 5, 6 and 7. The +modules for the composite factors of 4 and 6 are faster than combining +the modules for :math:`2*2` and :math:`2*3`. + +For factors which are not implemented as modules there is a fall-back to +a general length-:math:`n` module which uses Singleton's method for +efficiently computing a DFT. This module is :math:`O(n^2)`, and slower +than a dedicated module would be but works for any length :math:`n`. Of +course, lengths which use the general length-:math:`n` module will still +be factorized as much as possible. For example, a length of 143 will be +factorized into :math:`11*13`. Large prime factors are the worst case +scenario, e.g. as found in :math:`n=2*3*99991`, and should be avoided +because their :math:`O(n^2)` scaling will dominate the run-time (consult +the document "GSL FFT Algorithms" included in the GSL distribution +if you encounter this problem). + +The mixed-radix initialization function :func:`gsl_fft_complex_wavetable_alloc` +returns the list of factors chosen by the library for a given length +:math:`n`. It can be used to check how well the length has been +factorized, and estimate the run-time. To a first approximation the +run-time scales as :math:`n \sum f_i`, where the :math:`f_i` are the +factors of :math:`n`. For programs under user control you may wish to +issue a warning that the transform will be slow when the length is +poorly factorized. If you frequently encounter data lengths which +cannot be factorized using the existing small-prime modules consult +"GSL FFT Algorithms" for details on adding support for other +factors. + +.. First, the space for the trigonometric lookup tables and scratch area is +.. allocated by a call to one of the :code:`alloc` functions. We +.. call the combination of factorization, scratch space and trigonometric +.. lookup arrays a *wavetable*. It contains the sine and cosine +.. waveforms for the all the frequencies that will be used in the FFT. + +.. The wavetable is initialized by a call to the corresponding :code:`init` +.. function. It factorizes the data length, using the implemented +.. subtransforms as preferred factors wherever possible. The trigonometric +.. lookup table for the chosen factorization is also computed. + +.. An FFT is computed by a call to one of the :code:`forward`, +.. :code:`backward` or :code:`inverse` functions, with the data, length and +.. wavetable as arguments. + +All the functions described in this section are declared in the header +file :file:`gsl_fft_complex.h`. + +.. function:: gsl_fft_complex_wavetable * gsl_fft_complex_wavetable_alloc (size_t n) + + This function prepares a trigonometric lookup table for a complex FFT of + length :data:`n`. The function returns a pointer to the newly allocated + :type:`gsl_fft_complex_wavetable` if no errors were detected, and a null + pointer in the case of error. The length :data:`n` is factorized into a + product of subtransforms, and the factors and their trigonometric + coefficients are stored in the wavetable. The trigonometric coefficients + are computed using direct calls to :code:`sin` and :code:`cos`, for + accuracy. Recursion relations could be used to compute the lookup table + faster, but if an application performs many FFTs of the same length then + this computation is a one-off overhead which does not affect the final + throughput. + + The wavetable structure can be used repeatedly for any transform of the + same length. The table is not modified by calls to any of the other FFT + functions. The same wavetable can be used for both forward and backward + (or inverse) transforms of a given length. + +.. function:: void gsl_fft_complex_wavetable_free (gsl_fft_complex_wavetable * wavetable) + + This function frees the memory associated with the wavetable + :data:`wavetable`. The wavetable can be freed if no further FFTs of the + same length will be needed. + +These functions operate on a :type:`gsl_fft_complex_wavetable` structure +which contains internal parameters for the FFT. It is not necessary to +set any of the components directly but it can sometimes be useful to +examine them. For example, the chosen factorization of the FFT length +is given and can be used to provide an estimate of the run-time or +numerical error. The wavetable structure is declared in the header file +:file:`gsl_fft_complex.h`. + +.. type:: gsl_fft_complex_wavetable + + This is a structure that holds the factorization and trigonometric + lookup tables for the mixed radix fft algorithm. It has the following + components: + + ================================= ============================================================================================== + :code:`size_t n` This is the number of complex data points + :code:`size_t nf` This is the number of factors that the length :code:`n` was decomposed into. + :code:`size_t factor[64]` This is the array of factors. Only the first :code:`nf` elements are used. + :code:`gsl_complex * trig` This is a pointer to a preallocated trigonometric lookup table of :code:`n` complex elements. + :code:`gsl_complex * twiddle[64]` This is an array of pointers into :code:`trig`, giving the twiddle factors for each pass. + ================================= ============================================================================================== + +.. (FIXME: factor[64] is a fixed length array and therefore probably in +.. violation of the GNU Coding Standards). + +.. type:: gsl_fft_complex_workspace + + The mixed radix algorithms require additional working space to hold + the intermediate steps of the transform. + +.. function:: gsl_fft_complex_workspace * gsl_fft_complex_workspace_alloc (size_t n) + + This function allocates a workspace for a complex transform of length + :data:`n`. + +.. function:: void gsl_fft_complex_workspace_free (gsl_fft_complex_workspace * workspace) + + This function frees the memory associated with the workspace + :data:`workspace`. The workspace can be freed if no further FFTs of the + same length will be needed. + +The following functions compute the transform, + +.. function:: int gsl_fft_complex_forward (gsl_complex_packed_array data, size_t stride, size_t n, const gsl_fft_complex_wavetable * wavetable, gsl_fft_complex_workspace * work) + int gsl_fft_complex_transform (gsl_complex_packed_array data, size_t stride, size_t n, const gsl_fft_complex_wavetable * wavetable, gsl_fft_complex_workspace * work, gsl_fft_direction sign) + int gsl_fft_complex_backward (gsl_complex_packed_array data, size_t stride, size_t n, const gsl_fft_complex_wavetable * wavetable, gsl_fft_complex_workspace * work) + int gsl_fft_complex_inverse (gsl_complex_packed_array data, size_t stride, size_t n, const gsl_fft_complex_wavetable * wavetable, gsl_fft_complex_workspace * work) + + These functions compute forward, backward and inverse FFTs of length + :data:`n` with stride :data:`stride`, on the packed complex array + :data:`data`, using a mixed radix decimation-in-frequency algorithm. + There is no restriction on the length :data:`n`. Efficient modules are + provided for subtransforms of length 2, 3, 4, 5, 6 and 7. Any remaining + factors are computed with a slow, :math:`O(n^2)`, general-:math:`n` + module. The caller must supply a :data:`wavetable` containing the + trigonometric lookup tables and a workspace :data:`work`. For the + :code:`transform` version of the function the :data:`sign` argument can be + either :code:`forward` (:math:`-1`) or :code:`backward` (:math:`+1`). + + The functions return a value of :code:`0` if no errors were detected. The + following :data:`gsl_errno` conditions are defined for these functions: + + =================================== ========================================================================================================= + :macro:`GSL_EDOM` The length of the data :data:`n` is not a positive integer (i.e. :data:`n` is zero). + :macro:`GSL_EINVAL` The length of the data :data:`n` and the length used to compute the given :data:`wavetable` do not match. + =================================== ========================================================================================================= + +Here is an example program which computes the FFT of a short pulse in a +sample of length 630 (:math:`=2*3*3*5*7`) using the mixed-radix +algorithm. + +.. include:: examples/fftmr.c + :code: + +Note that we have assumed that the program is using the default +:code:`gsl` error handler (which calls :func:`abort` for any errors). If +you are not using a safe error handler you would need to check the +return status of all the :code:`gsl` routines. + +.. index:: FFT of real data + +Overview of real data FFTs +========================== + +The functions for real data are similar to those for complex data. +However, there is an important difference between forward and inverse +transforms. The Fourier transform of a real sequence is not real. It is +a complex sequence with a special symmetry: + +.. math:: z_k = z_{n-k}^* + +A sequence with this symmetry is called *conjugate-complex* or +*half-complex*. This different structure requires different +storage layouts for the forward transform (from real to half-complex) +and inverse transform (from half-complex back to real). As a +consequence the routines are divided into two sets: functions in +:code:`gsl_fft_real` which operate on real sequences and functions in +:code:`gsl_fft_halfcomplex` which operate on half-complex sequences. + +Functions in :code:`gsl_fft_real` compute the frequency coefficients of a +real sequence. The half-complex coefficients :math:`c` of a real sequence +:math:`x` are given by Fourier analysis, + +.. math:: c_k = \sum_{j=0}^{n-1} x_j \exp(-2 \pi i j k /n) + +Functions in :code:`gsl_fft_halfcomplex` compute inverse or backwards +transforms. They reconstruct real sequences by Fourier synthesis from +their half-complex frequency coefficients, :math:`c`, + +.. math:: x_j = {1 \over n} \sum_{k=0}^{n-1} c_k \exp(2 \pi i j k /n) + +The symmetry of the half-complex sequence implies that only half of the +complex numbers in the output need to be stored. The remaining half can +be reconstructed using the half-complex symmetry condition. This works +for all lengths, even and odd---when the length is even the middle value +where :math:`k=n/2` is also real. Thus only :data:`n` real numbers are +required to store the half-complex sequence, and the transform of a real +sequence can be stored in the same size array as the original data. + +The precise storage arrangements depend on the algorithm, and are +different for radix-2 and mixed-radix routines. The radix-2 function +operates in-place, which constrains the locations where each element can +be stored. The restriction forces real and imaginary parts to be stored +far apart. The mixed-radix algorithm does not have this restriction, and +it stores the real and imaginary parts of a given term in neighboring +locations (which is desirable for better locality of memory accesses). + +.. index:: + single: FFT of real data, radix-2 algorithm + single: Radix-2 FFT for real data + +Radix-2 FFT routines for real data +================================== + +This section describes radix-2 FFT algorithms for real data. They use +the Cooley-Tukey algorithm to compute in-place FFTs for lengths which +are a power of 2. + +The radix-2 FFT functions for real data are declared in the header files +:file:`gsl_fft_real.h` + +.. function:: int gsl_fft_real_radix2_transform (double data[], size_t stride, size_t n) + + This function computes an in-place radix-2 FFT of length :data:`n` and + stride :data:`stride` on the real array :data:`data`. The output is a + half-complex sequence, which is stored in-place. The arrangement of the + half-complex terms uses the following scheme: for :math:`k < n/2` the + real part of the :math:`k`-th term is stored in location :math:`k`, and + the corresponding imaginary part is stored in location :math:`n-k`. Terms + with :math:`k > n/2` can be reconstructed using the symmetry + :math:`z_k = z^*_{n-k}`. + The terms for :math:`k=0` and :math:`k=n/2` are both purely + real, and count as a special case. Their real parts are stored in + locations :math:`0` and :math:`n/2` respectively, while their imaginary + parts which are zero are not stored. + + The following table shows the correspondence between the output + :data:`data` and the equivalent results obtained by considering the input + data as a complex sequence with zero imaginary part (assuming :data:`stride` = 1}):: + + complex[0].real = data[0] + complex[0].imag = 0 + complex[1].real = data[1] + complex[1].imag = data[n-1] + ............... ................ + complex[k].real = data[k] + complex[k].imag = data[n-k] + ............... ................ + complex[n/2].real = data[n/2] + complex[n/2].imag = 0 + ............... ................ + complex[k'].real = data[k] k' = n - k + complex[k'].imag = -data[n-k] + ............... ................ + complex[n-1].real = data[1] + complex[n-1].imag = -data[n-1] + + Note that the output data can be converted into the full complex + sequence using the function :func:`gsl_fft_halfcomplex_radix2_unpack` + described below. + +The radix-2 FFT functions for halfcomplex data are declared in the +header file :file:`gsl_fft_halfcomplex.h`. + +.. function:: int gsl_fft_halfcomplex_radix2_inverse (double data[], size_t stride, size_t n) + int gsl_fft_halfcomplex_radix2_backward (double data[], size_t stride, size_t n) + + These functions compute the inverse or backwards in-place radix-2 FFT of + length :data:`n` and stride :data:`stride` on the half-complex sequence + :data:`data` stored according the output scheme used by + :func:`gsl_fft_real_radix2`. The result is a real array stored in natural + order. + +.. function:: int gsl_fft_halfcomplex_radix2_unpack (const double halfcomplex_coefficient[], gsl_complex_packed_array complex_coefficient, size_t stride, size_t n) + + This function converts :data:`halfcomplex_coefficient`, an array of + half-complex coefficients as returned by :func:`gsl_fft_real_radix2_transform`, into an ordinary complex array, :data:`complex_coefficient`. It fills in the + complex array using the symmetry :math:`z_k = z_{n-k}^*` + to reconstruct the redundant elements. The algorithm for the conversion + is:: + + complex_coefficient[0].real = halfcomplex_coefficient[0]; + complex_coefficient[0].imag = 0.0; + + for (i = 1; i < n - i; i++) + { + double hc_real = halfcomplex_coefficient[i*stride]; + double hc_imag = halfcomplex_coefficient[(n-i)*stride]; + complex_coefficient[i*stride].real = hc_real; + complex_coefficient[i*stride].imag = hc_imag; + complex_coefficient[(n - i)*stride].real = hc_real; + complex_coefficient[(n - i)*stride].imag = -hc_imag; + } + + if (i == n - i) + { + complex_coefficient[i*stride].real = halfcomplex_coefficient[(n - 1)*stride]; + complex_coefficient[i*stride].imag = 0.0; + } + +.. index:: + single: FFT of real data, mixed-radix algorithm + single: Mixed-radix FFT, real data + +Mixed-radix FFT routines for real data +====================================== + +This section describes mixed-radix FFT algorithms for real data. The +mixed-radix functions work for FFTs of any length. They are a +reimplementation of the real-FFT routines in the Fortran |fftpack| library +by Paul Swarztrauber. The theory behind the algorithm is explained in +the article "Fast Mixed-Radix Real Fourier Transforms" by Clive +Temperton. The routines here use the same indexing scheme and basic +algorithms as |fftpack|. + +The functions use the |fftpack| storage convention for half-complex +sequences. In this convention the half-complex transform of a real +sequence is stored with frequencies in increasing order, starting at +zero, with the real and imaginary parts of each frequency in neighboring +locations. When a value is known to be real the imaginary part is not +stored. The imaginary part of the zero-frequency component is never +stored. It is known to be zero (since the zero frequency component is +simply the sum of the input data (all real)). For a sequence of even +length the imaginary part of the frequency :math:`n/2` is not stored +either, since the symmetry :math:`z_k = z_{n-k}^*` +implies that this is purely real too. + +The storage scheme is best shown by some examples. The table below +shows the output for an odd-length sequence, :math:`n=5`. The two columns +give the correspondence between the 5 values in the half-complex +sequence returned by :func:`gsl_fft_real_transform`, :data:`halfcomplex[]` and the +values :data:`complex[]` that would be returned if the same real input +sequence were passed to :func:`gsl_fft_complex_backward` as a complex +sequence (with imaginary parts set to :code:`0`):: + + complex[0].real = halfcomplex[0] + complex[0].imag = 0 + complex[1].real = halfcomplex[1] + complex[1].imag = halfcomplex[2] + complex[2].real = halfcomplex[3] + complex[2].imag = halfcomplex[4] + complex[3].real = halfcomplex[3] + complex[3].imag = -halfcomplex[4] + complex[4].real = halfcomplex[1] + complex[4].imag = -halfcomplex[2] + +The upper elements of the :data:`complex` array, :code:`complex[3]` and +:code:`complex[4]` are filled in using the symmetry condition. The +imaginary part of the zero-frequency term :code:`complex[0].imag` is +known to be zero by the symmetry. + +The next table shows the output for an even-length sequence, :math:`n=6`. +In the even case there are two values which are purely real:: + + complex[0].real = halfcomplex[0] + complex[0].imag = 0 + complex[1].real = halfcomplex[1] + complex[1].imag = halfcomplex[2] + complex[2].real = halfcomplex[3] + complex[2].imag = halfcomplex[4] + complex[3].real = halfcomplex[5] + complex[3].imag = 0 + complex[4].real = halfcomplex[3] + complex[4].imag = -halfcomplex[4] + complex[5].real = halfcomplex[1] + complex[5].imag = -halfcomplex[2] + +The upper elements of the :data:`complex` array, :code:`complex[4]` and +:code:`complex[5]` are filled in using the symmetry condition. Both +:code:`complex[0].imag` and :code:`complex[3].imag` are known to be zero. + +All these functions are declared in the header files +:file:`gsl_fft_real.h` and :file:`gsl_fft_halfcomplex.h`. + +.. type:: gsl_fft_real_wavetable + gsl_fft_halfcomplex_wavetable + + These data structures contain lookup tables for an FFT of a fixed size. + +.. function:: gsl_fft_real_wavetable * gsl_fft_real_wavetable_alloc (size_t n) + gsl_fft_halfcomplex_wavetable * gsl_fft_halfcomplex_wavetable_alloc (size_t n) + + These functions prepare trigonometric lookup tables for an FFT of size + :math:`n` real elements. The functions return a pointer to the newly + allocated struct if no errors were detected, and a null pointer in the + case of error. The length :data:`n` is factorized into a product of + subtransforms, and the factors and their trigonometric coefficients are + stored in the wavetable. The trigonometric coefficients are computed + using direct calls to :code:`sin` and :code:`cos`, for accuracy. + Recursion relations could be used to compute the lookup table faster, + but if an application performs many FFTs of the same length then + computing the wavetable is a one-off overhead which does not affect the + final throughput. + + The wavetable structure can be used repeatedly for any transform of the + same length. The table is not modified by calls to any of the other FFT + functions. The appropriate type of wavetable must be used for forward + real or inverse half-complex transforms. + +.. function:: void gsl_fft_real_wavetable_free (gsl_fft_real_wavetable * wavetable) + void gsl_fft_halfcomplex_wavetable_free (gsl_fft_halfcomplex_wavetable * wavetable) + + These functions free the memory associated with the wavetable + :data:`wavetable`. The wavetable can be freed if no further FFTs of the + same length will be needed. + +The mixed radix algorithms require additional working space to hold +the intermediate steps of the transform, + +.. type:: gsl_fft_real_workspace + + This workspace contains parameters needed to compute a real FFT. + +.. function:: gsl_fft_real_workspace * gsl_fft_real_workspace_alloc (size_t n) + + This function allocates a workspace for a real transform of length + :data:`n`. The same workspace can be used for both forward real and inverse + halfcomplex transforms. + +.. function:: void gsl_fft_real_workspace_free (gsl_fft_real_workspace * workspace) + + This function frees the memory associated with the workspace + :data:`workspace`. The workspace can be freed if no further FFTs of the + same length will be needed. + +The following functions compute the transforms of real and half-complex +data, + +.. function:: int gsl_fft_real_transform (double data[], size_t stride, size_t n, const gsl_fft_real_wavetable * wavetable, gsl_fft_real_workspace * work) + int gsl_fft_halfcomplex_transform (double data[], size_t stride, size_t n, const gsl_fft_halfcomplex_wavetable * wavetable, gsl_fft_real_workspace * work) + + These functions compute the FFT of :data:`data`, a real or half-complex + array of length :data:`n`, using a mixed radix decimation-in-frequency + algorithm. For :func:`gsl_fft_real_transform` :data:`data` is an array of + time-ordered real data. For :func:`gsl_fft_halfcomplex_transform` + :data:`data` contains Fourier coefficients in the half-complex ordering + described above. There is no restriction on the length :data:`n`. + Efficient modules are provided for subtransforms of length 2, 3, 4 and + 5. Any remaining factors are computed with a slow, :math:`O(n^2)`, + general-n module. The caller must supply a :data:`wavetable` containing + trigonometric lookup tables and a workspace :data:`work`. + +.. function:: int gsl_fft_real_unpack (const double real_coefficient[], gsl_complex_packed_array complex_coefficient, size_t stride, size_t n) + + This function converts a single real array, :data:`real_coefficient` into + an equivalent complex array, :data:`complex_coefficient`, (with imaginary + part set to zero), suitable for :code:`gsl_fft_complex` routines. The + algorithm for the conversion is simply:: + + for (i = 0; i < n; i++) + { + complex_coefficient[i*stride].real = real_coefficient[i*stride]; + complex_coefficient[i*stride].imag = 0.0; + } + +.. function:: int gsl_fft_halfcomplex_unpack (const double halfcomplex_coefficient[], gsl_complex_packed_array complex_coefficient, size_t stride, size_t n) + + This function converts :data:`halfcomplex_coefficient`, an array of + half-complex coefficients as returned by :func:`gsl_fft_real_transform`, into an + ordinary complex array, :data:`complex_coefficient`. It fills in the + complex array using the symmetry :math:`z_k = z_{n-k}^*` + to reconstruct the redundant elements. The algorithm for the conversion + is:: + + complex_coefficient[0].real = halfcomplex_coefficient[0]; + complex_coefficient[0].imag = 0.0; + + for (i = 1; i < n - i; i++) + { + double hc_real = halfcomplex_coefficient[(2 * i - 1)*stride]; + double hc_imag = halfcomplex_coefficient[(2 * i)*stride]; + complex_coefficient[i*stride].real = hc_real; + complex_coefficient[i*stride].imag = hc_imag; + complex_coefficient[(n - i)*stride].real = hc_real; + complex_coefficient[(n - i)*stride].imag = -hc_imag; + } + + if (i == n - i) + { + complex_coefficient[i*stride].real = halfcomplex_coefficient[(n - 1)*stride]; + complex_coefficient[i*stride].imag = 0.0; + } + +Here is an example program using :func:`gsl_fft_real_transform` and +:func:`gsl_fft_halfcomplex_inverse`. It generates a real signal in the +shape of a square pulse. The pulse is Fourier transformed to frequency +space, and all but the lowest ten frequency components are removed from +the array of Fourier coefficients returned by +:func:`gsl_fft_real_transform`. + +The remaining Fourier coefficients are transformed back to the +time-domain, to give a filtered version of the square pulse. Since +Fourier coefficients are stored using the half-complex symmetry both +positive and negative frequencies are removed and the final filtered +signal is also real. + +.. include:: examples/fftreal.c + :code: + +The program output is shown in :numref:`fig_fft-real-mixedradix`. + +.. _fig_fft-real-mixedradix: + +.. figure:: /images/fft-real-mixedradix.png + :scale: 100% + + Low-pass filtered version of a real pulse, output from the example program. + +.. _fft-references: + +References and Further Reading +============================== + +A good starting point for learning more about the FFT is the following review +article, + +* P. Duhamel and M. Vetterli. + Fast Fourier transforms: A tutorial review and a state of the art. + Signal Processing, 19:259--299, 1990. + +To find out about the algorithms used in the GSL routines you may want +to consult the document "GSL FFT Algorithms" (it is included +in GSL, as :file:`doc/fftalgorithms.tex`). This has general information +on FFTs and explicit derivations of the implementation for each +routine. There are also references to the relevant literature. For +convenience some of the more important references are reproduced below. + +There are several introductory books on the FFT with example programs, +such as "The Fast Fourier Transform" by Brigham and "DFT/FFT +and Convolution Algorithms" by Burrus and Parks, + +* E. Oran Brigham. "The Fast Fourier Transform". Prentice Hall, 1974. + +* C. S. Burrus and T. W. Parks. "DFT/FFT and Convolution Algorithms", + Wiley, 1984. + +Both these introductory books cover the radix-2 FFT in some detail. +The mixed-radix algorithm at the heart of the |fftpack| routines is +reviewed in Clive Temperton's paper, + +* Clive Temperton, Self-sorting mixed-radix fast Fourier transforms, + Journal of Computational Physics, 52(1):1--23, 1983. + +The derivation of FFTs for real-valued data is explained in the +following two articles, + +* Henrik V. Sorenson, Douglas L. Jones, Michael T. Heideman, and C. Sidney + Burrus. Real-valued fast Fourier transform algorithms. + "IEEE Transactions on Acoustics, Speech, and Signal Processing", + ASSP-35(6):849--863, 1987. + +* Clive Temperton. Fast mixed-radix real Fourier transforms. + "Journal of Computational Physics", 52:340--350, 1983. + +In 1979 the IEEE published a compendium of carefully-reviewed Fortran +FFT programs in "Programs for Digital Signal Processing". It is a +useful reference for implementations of many different FFT +algorithms, + +* Digital Signal Processing Committee and IEEE Acoustics, Speech, and Signal + Processing Committee, editors. + Programs for Digital Signal Processing. IEEE Press, 1979. + +For large-scale FFT work we recommend the use of the dedicated FFTW library +by Frigo and Johnson. The FFTW library is self-optimizing---it +automatically tunes itself for each hardware platform in order to +achieve maximum performance. It is available under the GNU GPL. + +* FFTW Website, http://www.fftw.org/ + +The source code for |fftpack| is available from http://www.netlib.org/fftpack/ diff --git a/gsl-2.5/doc/filter.rst b/gsl-2.5/doc/filter.rst new file mode 100644 index 00000000..5f4cea57 --- /dev/null +++ b/gsl-2.5/doc/filter.rst @@ -0,0 +1,515 @@ +***************** +Digital Filtering +***************** + +Introduction +============ + +The filters discussed in this chapter are based on the following moving data +window which is centered on :math:`i`-th sample: + +.. only:: not texinfo + + .. math:: W_i^H = \left\{ x_{i-H}, \dots, x_i, \dots, x_{i+H} \right\} + +.. only:: texinfo + + :: + + W_i^H = { x_{i-H}, ..., x_i, ..., x_{i+H} } + +Here, :math:`H` is a non-negative integer called the *window half-length*, which +represents the number of samples before and after sample :math:`i`. +The total window length is :math:`K = 2 H + 1`. + +Handling Endpoints +================== + +When processing samples near the ends of the input signal, there will not +be enough samples to fill the window :math:`W_i^H` defined above. +Therefore the user must specify how to construct the windows near the end points. +This is done by passing an input argument of type :type:`gsl_filter_end_t`: + +.. type:: gsl_filter_end_t + + This data type specifies how to construct windows near end points and can + be selected from the following choices: + + .. macro:: GSL_FILTER_END_PADZERO + + With this option, a full window of length :math:`K` will be constructed + by inserting zeros into the window near the signal end points. Effectively, + the input signal is modified to + + .. only:: not texinfo + + .. math:: \tilde{x} = \{ \underbrace{0, \dots, 0}_{H \textrm{ zeros}}, x_1, x_2, \dots, x_{n-1}, x_n, \underbrace{0, \dots, 0}_{H \textrm{ zeros} } \} + + .. only:: texinfo + + :: + + x~ = { 0, ..., 0, x_1, x_2, ..., x_{n-1}, x_n, 0, ..., 0 } + + to ensure a well-defined window for all :math:`x_i`. + + .. macro:: GSL_FILTER_END_PADVALUE + + With this option, a full window of length :math:`K` will be constructed + by padding the window with the first and last sample in the input signal. + Effectively, the input signal is modified to + + .. only:: not texinfo + + .. math:: \tilde{x} = \{ \underbrace{x_1, \dots, x_1}_{H}, x_1, x_2, \dots, x_{n-1}, x_n, \underbrace{x_n, \dots, x_n}_{H} \} + + .. only:: texinfo + + :: + + x~ = { x_1, ..., x_1, x_1, x_2, ..., x_{n-1}, x_n, x_n, ..., x_n } + + .. macro:: GSL_FILTER_END_TRUNCATE + + With this option, no padding is performed, and the windows are simply truncated + as the end points are approached. + +Linear Digital Filters +====================== + +Gaussian Filter +--------------- + +The Gaussian filter convolves the input signal with a Gaussian kernel or window. This filter +is often used as a smoothing or noise reduction filter. The Gaussian kernel is +defined by + +.. only:: not texinfo + + .. math:: G(k) = e^{-\frac{1}{2} \left( \alpha \frac{k}{(K-1)/2} \right)^2} = e^{-k^2/2\sigma^2} + +.. only:: texinfo + + :: + + G(k) = e^{-1/2 ( \alpha k/((K-1)/2) )^2} = e^{-k^2/2\sigma^2} + +for :math:`-(K-1)/2 \le k \le (K-1)/2`, and :math:`K` is the size of the kernel. The +parameter :math:`\alpha` specifies the number of standard deviations :math:`\sigma` desired +in the kernel. So for example setting :math:`\alpha = 3` would define a Gaussian window +of length :math:`K` which spans :math:`\pm 3 \sigma`. It is often more convenient to specify +the parameter :math:`\alpha` rather than the standard deviation :math:`\sigma` when constructing +the kernel, since a fixed value of :math:`\alpha` would correspond to the same shape of +Gaussian regardless of the size :math:`K`. The appropriate value of the standard deviation +depends on :math:`K` and is related to :math:`\alpha` as + +.. only:: not texinfo + + .. math:: \sigma = \frac{K - 1}{2\alpha} + +.. only:: texinfo + + :: + + \sigma = (K - 1)/(2 \alpha) + +The routines below accept :math:`\alpha` as an input argument instead of :math:`\sigma`. + +The Gaussian filter offers a convenient way of differentiating and smoothing an input signal +in a single pass. Using the derivative property of a convolution, + +.. only:: not texinfo + + .. math:: \frac{d}{dt} \left( G * x \right) = \frac{dG}{dt} * x + +.. only:: texinfo + + :: + + d/dt ( G * x ) = dG/dt * x + +the input signal :math:`x(t)` can be smoothed and differentiated at the same time by +convolution with a derivative Gaussian kernel, which can be readily computed from the +analytic expression above. The same principle applies to higher order derivatives. + +.. function:: gsl_filter_gaussian_workspace * gsl_filter_gaussian_alloc(const size_t K) + + This function initializes a workspace for Gaussian filtering using a kernel of + size :data:`K`. Here, :math:`H = K / 2`. If :math:`K` is even, it is rounded up to the next + odd integer to ensure a symmetric window. The size of the workspace is :math:`O(K)`. + +.. function:: void gsl_filter_gaussian_free(gsl_filter_gaussian_workspace * w) + + This function frees the memory associated with :data:`w`. + +.. function:: int gsl_filter_gaussian(const gsl_filter_end_t endtype, const double alpha, const size_t order, const gsl_vector * x, gsl_vector * y, gsl_filter_gaussian_workspace * w) + + This function applies a Gaussian filter parameterized by :data:`alpha` to the input vector :data:`x`, + storing the output in :data:`y`. The derivative order is specified by :data:`order`, with + :code:`0` corresponding to a Gaussian, :code:`1` corresponding to a first derivative + Gaussian, and so on. The parameter :data:`endtype` specifies how the signal end points are handled. + It is allowed for :data:`x` = :data:`y` for an in-place filter. + +.. function:: int gsl_filter_gaussian_kernel(const double alpha, const size_t order, const int normalize, gsl_vector * kernel) + + This function constructs a Gaussian kernel parameterized by :data:`alpha` and + stores the output in :data:`kernel`. The parameter :data:`order` specifies the + derivative order, with :code:`0` corresponding to a Gaussian, :code:`1` corresponding + to a first derivative Gaussian, and so on. If :data:`normalize` is set to :code:`1`, then + the kernel will be normalized to sum to one on output. If :data:`normalize` is set to + :code:`0`, no normalization is performed. + +Nonlinear Digital Filters +========================= + +The nonlinear digital filters described below are based on the window median, which is given +by + +.. only:: not texinfo + + .. math:: m_i = \textrm{median} \left\{ W_i^H \right\} = \textrm{median} \left\{ x_{i-H}, \dots, x_i, \dots, x_{i+H} \right\} + +.. only:: texinfo + + :: + + m_i = median { W_i^H } = median { x_{i-H}, ..., x_i, ..., x_{i+H} } + +The median is considered robust to local outliers, unlike the mean. +Median filters can preserve sharp edges while at the same removing signal noise, and are used +in a wide range of applications. + +Standard Median Filter +---------------------- + +The *standard median filter* (SMF) simply replaces the sample :math:`x_i` by the median +:math:`m_i` of the window :math:`W_i^H`: This filter has one tuning parameter given +by :math:`H`. The standard median filter is considered highly resistant to +local outliers and local noise in the data sequence :math:`\{x_i\}`. + +.. function:: gsl_filter_median_workspace * gsl_filter_median_alloc(const size_t K) + + This function initializes a workspace for standard median filtering using a symmetric centered moving window of + size :data:`K`. Here, :math:`H = K / 2`. If :math:`K` is even, it is rounded up to the next + odd integer to ensure a symmetric window. The size of the workspace is :math:`O(7K)`. + +.. function:: void gsl_filter_median_free(gsl_filter_median_workspace * w) + + This function frees the memory associated with :data:`w`. + +.. function:: int gsl_filter_median(const gsl_filter_end_t endtype, const gsl_vector * x, gsl_vector * y, gsl_filter_median_workspace * w) + + This function applies a standard median filter to the input :data:`x`, storing the output in :data:`y`. + The parameter :data:`endtype` specifies how the signal end points are handled. It + is allowed to have :data:`x` = :data:`y` for an in-place filter. + +Recursive Median Filter +----------------------- + +The *recursive median filter* (RMF) is a modification of the SMF to include previous filter outputs +in the window before computing the median. The filter's response is + +.. only:: not texinfo + + .. math:: y_i = \textrm{median} \left( y_{i-H}, \dots, y_{i-1}, x_i, x_{i+1}, \dots, x_{i+H} \right) + +.. only:: texinfo + + :: + + y_i = median ( y_{i-H}, ..., y_{i-1}, x_i, x_{i+1}, ..., x_{i+H} ) + +Sometimes, the SMF must be applied several times in a row to achieve adequate smoothing (i.e. a cascade filter). +The RMF, on the other hand, converges to a *root sequence* in one pass, +and can sometimes provide a smoother result than several passes of the SMF. A root sequence is an input which is +left unchanged by the filter. So there is no need to apply a recursive median filter twice to an input vector. + +.. function:: gsl_filter_rmedian_workspace * gsl_filter_rmedian_alloc(const size_t K) + + This function initializes a workspace for recursive median filtering using a symmetric centered moving window of + size :data:`K`. Here, :math:`H = K / 2`. If :math:`K` is even, it is rounded up to the next + odd integer to ensure a symmetric window. The size of the workspace is :math:`O(K)`. + +.. function:: void gsl_filter_rmedian_free(gsl_filter_rmedian_workspace * w) + + This function frees the memory associated with :data:`w`. + +.. function:: int gsl_filter_rmedian(const gsl_filter_end_t endtype, const gsl_vector * x, gsl_vector * y, gsl_filter_rmedian_workspace * w) + + This function applies a recursive median filter to the input :data:`x`, storing the output in :data:`y`. + The parameter :data:`endtype` specifies how the signal end points are handled. It + is allowed to have :data:`x` = :data:`y` for an in-place filter. + +Impulse Detection Filter +------------------------ + +Impulsive noise is characterized by short sequences of data points distinct from those in the +surrounding neighborhood. This section describes a powerful class of filters, also known as +*impulse rejection filters* and *decision-based filters*, designed to detect and remove such outliers from data. +The filter's response is given by + +.. only:: not texinfo + + .. math:: y_i = \left\{ + \begin{array}{cc} + x_i, & |x_i - m_i| \le t S_i \\ + m_i, & |x_i - m_i| > t S_i + \end{array} + \right. + +.. only:: texinfo + + :: + + y_i = { x_i, |x_i - m_i| <= t * S_i + { m_i, |x_i - m_i| > t * S_i + +where :math:`m_i` is the median value of the window :math:`W_i^H`, :math:`S_i` is a robust estimate +of the scatter or dispersion for the window :math:`W_i^H`, and :math:`t` is a tuning parameter specifying +the number of scale factors needed to determine that a point is an outlier. The main idea is that the median +:math:`m_i` will be unaffected by a small number of outliers in the window, and so a given +sample :math:`x_i` is tested to determine how far away it is from the median in terms of the local +scale estimate :math:`S_i`. Samples which are more than :math:`t` scale estimates away from the median +are labeled as outliers and replaced by the window median :math:`m_i`. Samples which are less than +:math:`t` scale estimates from the median are left unchanged by the filter. + +Note that when :math:`t = 0`, the impulse detection filter is equivalent to the standard median filter. When +:math:`t \rightarrow \infty`, it becomes the identity filter. This means the impulse detection filter can +be viewed as a "less aggressive" version of the standard median filter, becoming less aggressive as :math:`t` is +increased. Note that this filter modifies only samples identified as outliers, while the standard median +filter changes all samples to the local median, regardless of whether they are outliers. This fact, plus +the additional flexibility offered by the additional tuning parameter :math:`t` can make the impulse detection filter +a better choice for some applications. + +It is important to have a robust and accurate scale estimate :math:`S_i` in order to +detect impulse outliers even in the presence of noise. The window standard deviation is not +typically a good choice, as it can be significantly perturbed by the presence of even one outlier. +GSL offers the following choices (specified by a parameter of type :type:`gsl_filter_scale_t`) for +computing the scale estimate :math:`S_i`, all of which are robust to the presence of impulse outliers. + +.. type:: gsl_filter_scale_t + + This type specifies how the scale estimate :math:`S_i` of the window :math:`W_i^H` is calculated. + + .. macro:: GSL_FILTER_SCALE_MAD + + This option specifies the median absolute deviation (MAD) scale estimate, defined by + + .. only:: not texinfo + + .. math:: S_i = 1.4826 \times \textrm{median} \left\{ | W_i^H - m_i | \right\} + + .. only:: texinfo + + :: + + S_i = 1.4826 median { | W_i^H - m_i | } + + This choice of scale estimate is also known as the *Hampel filter* in the statistical literature. + See :ref:`here ` for more information. + + .. macro:: GSL_FILTER_SCALE_IQR + + This option specifies the interquartile range (IQR) scale estimate, defined as the difference between + the 75th and 25th percentiles of the window :math:`W_i^H`, + + .. only:: not texinfo + + .. math:: S_i = 0.7413 \left( Q_{0.75} - Q_{0.25} \right) + + .. only:: texinfo + + :: + + S_i = 0.7413 ( Q_{0.75} - Q_{0.25} ) + + where :math:`Q_p` is the p-quantile of the window :math:`W_i^H`. The idea is to throw away the largest + and smallest 25% of the window samples (where the outliers would be), and estimate a scale from the middle 50%. + The factor :math:`0.7413` provides an unbiased estimate of the standard deviation for Gaussian data. + + .. macro:: GSL_FILTER_SCALE_SN + + This option specifies the so-called :math:`S_n` statistic proposed by Croux and Rousseeuw. + See :ref:`here ` for more information. + + .. macro:: GSL_FILTER_SCALE_QN + + This option specifies the so-called :math:`Q_n` statistic proposed by Croux and Rousseeuw. + See :ref:`here ` for more information. + +.. warning:: + + While the scale estimates defined above are much less sensitive to outliers than the standard deviation, + they can suffer from an effect called *implosion*. The standard deviation of a window :math:`W_i^H` will be zero + if and only if all samples in the window are equal. However, it is possible for the MAD of a window + to be zero even if all the samples in the window are not equal. For example, if :math:`K/2 + 1` or more + of the :math:`K` samples in the window are equal to some value :math:`x^{*}`, then the window median will + be equal to :math:`x^{*}`. Consequently, at least :math:`K/2 + 1` of the absolute deviations + :math:`|x_j - x^{*}|` will be zero, and so the MAD will be zero. In such a case, the Hampel + filter will act like the standard median filter regardless of the value of :math:`t`. Caution should also + be exercised if dividing by :math:`S_i`. + +.. function:: gsl_filter_impulse_workspace * gsl_filter_impulse_alloc(const size_t K) + + This function initializes a workspace for impulse detection filtering using a symmetric moving window of + size :data:`K`. Here, :math:`H = K / 2`. If :math:`K` is even, it is rounded up to the next + odd integer to ensure a symmetric window. The size of the workspace is :math:`O(6K)`. + +.. function:: void gsl_filter_impulse_free(gsl_filter_impulse_workspace * w) + + This function frees the memory associated with :data:`w`. + +.. function:: int gsl_filter_impulse(const gsl_filter_end_t endtype, const gsl_filter_scale_t scale_type, const double t, const gsl_vector * x, gsl_vector * y, gsl_vector * xmedian, gsl_vector * xsigma, size_t * noutlier, gsl_vector_int * ioutlier, gsl_filter_impulse_workspace * w) + + These functions apply an impulse detection filter to the input vector :data:`x`, storing the filtered output + in :data:`y`. The tuning parameter :math:`t` is provided in :data:`t`. + The window medians :math:`m_i` are stored in :data:`xmedian` and the :math:`S_i` are stored in :data:`xsigma` on output. + The number of outliers detected is stored in :data:`noutlier` on output, while + the locations of flagged outliers are stored in the boolean array :data:`ioutlier`. The input + :data:`ioutlier` may be :code:`NULL` if not desired. It is allowed to have :data:`x` = :data:`y` for an + in-place filter. + +Examples +======== + +Gaussian Example 1 +------------------ + +This example program illustrates the Gaussian filter applied to smoothing a time series of length +:math:`N = 500` with a kernel size of :math:`K = 51`. Three filters are applied with +parameters :math:`\alpha = 0.5, 3, 10`. The results are shown in :numref:`fig_filt-gaussian`. + +.. _fig_filt-gaussian: + +.. figure:: /images/gaussfilt.png + :scale: 60% + + Top panel: Gaussian kernels (unnormalized) for :math:`\alpha = 0.5, 3, 10`. + Bottom panel: Time series (gray) with Gaussian filter output for same :math:`\alpha` + values. + +We see that the filter corresponding to :math:`\alpha = 0.5` applies the most smoothing, +while :math:`\alpha = 10` corresponds to the least amount of smoothing. +The program is given below. + +.. include:: examples/gaussfilt.c + :code: + +Gaussian Example 2 +------------------ + +A common application of the Gaussian filter is to detect edges, or sudden jumps, in a noisy +input signal. It is used both for 1D edge detection in time series, as well as 2D edge +detection in images. Here we will examine a noisy time series of length :math:`N = 1000` +with a single edge. The input signal is defined as + +.. only:: not texinfo + + .. math:: x(n) = e(n) + + \left\{ + \begin{array}{cc} + 0, & n \le N/2 \\ + 0.5, & n > N/2 + \end{array} + \right. + +.. only:: texinfo + + :: + + x(n) = e(n) + { 0, n <= N/2 + { 0.5, n > N/2 + +where :math:`e(n)` is Gaussian random noise. The program smooths the input signal +with order :math:`0,1,` and :math:`2` Gaussian filters of length :math:`K = 61` with +:math:`\alpha = 3`. For comparison, the program also computes finite differences +of the input signal without smoothing. The results are shown in :numref:`fig_filt-gaussian2`. + +.. _fig_filt-gaussian2: + +.. figure:: /images/gaussfilt2.png + :scale: 60% + + Top row: original input signal :math:`x(n)` (black) with Gaussian smoothed signal in red. + Second row: First finite differences of input signal. + Third row: Input signal smoothed with a first order Gaussian filter. + Fourth row: Input signal smoothed with a second order Gaussian filter. + +The finite difference approximation of the first derivative (second row) shows +the common problem with differentiating a noisy signal. The noise is amplified +and makes it extremely difficult to detect the sharp gradient at sample :math:`500`. +The third row shows the first order Gaussian smoothed signal with a clear peak +at the location of the edge. Alternatively, one could examine the second order +Gaussian smoothed signal (fourth row) and look for zero crossings to determine +the edge location. + +The program is given below. + +.. include:: examples/gaussfilt2.c + :code: + +Square Wave Signal Example +-------------------------- + +The following example program illustrates the median filters on a noisy +square wave signal. Median filters are well known for preserving sharp +edges in the input signal while reducing noise. The program constructs +a 5 Hz square wave signal with Gaussian noise added. Then the signal is +filtered with a standard median filter and recursive median filter using +a symmetric window of length :math:`K = 7`. The results are shown in +:numref:`fig_filt-edge`. + +.. _fig_filt-edge: + +.. figure:: /images/filt_edge.png + :scale: 60% + + Original time series is in gray. The standard median filter output is in + green and the recursive median filter output is in red. + +Both filters preserve the sharp signal edges while reducing the noise. The +recursive median filter achieves a smoother result than the standard median +filter. The "blocky" nature of the output is characteristic of all median +filters. The program is given below. + +.. include:: examples/filt_edge.c + :code: + +Impulse Detection Example +------------------------- + +The following example program illustrates the impulse detection filter. First, +it constructs a sinusoid signal of length :math:`N = 1000` with Gaussian noise +added. Then, about 1% of the data are perturbed to represent large outliers. An +impulse detecting filter is applied with a window size :math:`K = 25` and +tuning parameter :math:`t = 4`, using the :math:`Q_n` statistic as the robust +measure of scale. The results are plotted in :numref:`fig_impulse`. + +.. _fig_impulse: + +.. figure:: /images/impulse.png + :scale: 60% + + Original time series is in blue, filter output is in green, upper and + lower intervals for detecting outliers are in red and yellow respectively. + Detected outliers are marked with squares. + +The program is given below. + +.. include:: examples/impulse.c + :code: + +References and Further Reading +============================== + +The following publications are relevant to the algorithms described +in this chapter, + +* F. J. Harris, *On the use of windows for harmonic analysis with the discrete Fourier transform*, + Proceedings of the IEEE, 66 (1), 1978. + +* S-J. Ko, Y-H. Lee, and A. T. Fam. *Efficient implementation of one-dimensional recursive median filters*, + IEEE transactions on circuits and systems 37.11 (1990): 1447-1450. + +* R. K. Pearson and M. Gabbouj, *Nonlinear Digital Filtering with Python: An Introduction*. + CRC Press, 2015. diff --git a/gsl-2.5/doc/gpl.rst b/gsl-2.5/doc/gpl.rst new file mode 100644 index 00000000..4f233f11 --- /dev/null +++ b/gsl-2.5/doc/gpl.rst @@ -0,0 +1,5 @@ +************************** +GNU General Public License +************************** + +.. literalinclude:: _static/gpl.txt diff --git a/gsl-2.5/doc/gsl-config.1 b/gsl-2.5/doc/gsl-config.1 new file mode 100644 index 00000000..2a744870 --- /dev/null +++ b/gsl-2.5/doc/gsl-config.1 @@ -0,0 +1,41 @@ +.TH GSL 1 "22 May 2001" +.SH NAME +gsl-config - script to get version number and compiler flags of the installed GSL library +.SH SYNOPSIS +.B gsl-config +[\-\-prefix] [\-\-version] [\-\-libs] [\-\-libs\-without\-cblas] [\-\-cflags] +.SH DESCRIPTION +.PP +\fIgsl-config\fP is a tool that is used to configure to determine +the compiler and linker flags that should be used to compile +and link programs that use \fIGSL\fP. It is also used internally +to the .m4 macros for GNU autoconf that are included with \fIGSL\fP. +. +.SH OPTIONS +\fIgsl-config\fP accepts the following options: +.TP 8 +.B \-\-version +Print the currently installed version of \fIGSL\fP on the standard output. +.TP 8 +.B \-\-libs +Print the linker flags that are necessary to link a \fIGSL\fP program, with cblas +.TP 8 +.B \-\-libs\-without\-cblas +Print the linker flags that are necessary to link a \fIGSL\fP program, without cblas +.TP 8 +.B \-\-cflags +Print the compiler flags that are necessary to compile a \fIGSL\fP program. +.TP 8 +.B \-\-prefix +Show the GSL installation prefix. +.SH SEE ALSO +.BR gtk-config (1), +.BR gnome-config (1) +.SH COPYRIGHT +Copyright \(co 2001 Christopher R. Gabriel + +Permission to use, copy, modify, and distribute this software and its +documentation for any purpose and without fee is hereby granted, +provided that the above copyright notice appear in all copies and that +both that copyright notice and this permission notice appear in +supporting documentation. diff --git a/gsl-2.5/doc/gsl-design.texi b/gsl-2.5/doc/gsl-design.texi new file mode 100644 index 00000000..6e195d94 --- /dev/null +++ b/gsl-2.5/doc/gsl-design.texi @@ -0,0 +1,1636 @@ +\input texinfo @c -*-texinfo-*- +@c %**start of header +@setfilename gsl-design.info +@settitle GNU Scientific Library +@finalout +@c -@setchapternewpage odd +@c %**end of header + +@dircategory Scientific software +@direntry +* GSL-design: (GSL-design). GNU Scientific Library -- Design +@end direntry + +@comment @include version-design.texi +@set GSL @i{GNU Scientific Library} + +@ifinfo +This file documents the @value{GSL}. + +Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2004 The GSL Project. + +Permission is granted to copy, distribute and/or modify this document +under the terms of the GNU Free Documentation License, Version 1.2 or +any later version published by the Free Software Foundation; with no +Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A +copy of the license is included in the section entitled ``GNU Free +Documentation License''. +@end ifinfo + +@titlepage +@title GNU Scientific Library -- Design document +@comment @subtitle Edition @value{EDITION}, for gsl Version @value{VERSION} +@comment @subtitle @value{UPDATED} +@author Mark Galassi +Los Alamos National Laboratory + +@author James Theiler +Astrophysics and Radiation Measurements Group, Los Alamos National Laboratory + +@author Brian Gough +Network Theory Limited + +@page +@vskip 0pt plus 1filll +Copyright @copyright{} 1996,1997,1998,1999,2000,2001,2004 The GSL Project. + +Permission is granted to make and distribute verbatim copies of +this manual provided the copyright notice and this permission notice +are preserved on all copies. + +Permission is granted to copy and distribute modified versions of this +manual under the conditions for verbatim copying, provided that the entire +resulting derived work is distributed under the terms of a permission +notice identical to this one. + +Permission is granted to copy and distribute translations of this manual +into another language, under the above conditions for modified versions, +except that this permission notice may be stated in a translation approved +by the Foundation. +@end titlepage + +@contents + +@node Top, Motivation, (dir), (dir) +@top About GSL + +@ifinfo +This file documents the design of @value{GSL}, a collection of numerical +routines for scientific computing. + +More information about GSL can be found at the project homepage, +@uref{http://www.gnu.org/software/gsl/}. +@end ifinfo + +The @value{GSL} is a library of scientific subroutines. It aims to +provide a convenient interface to routines that do standard (and not so +standard) tasks that arise in scientific research. More than that, it +also provides the source code. Users are welcome to alter, adjust, +modify, and improve the interfaces and/or implementations of whichever +routines might be needed for a particular purpose. + +GSL is intended to provide a free equivalent to existing proprietary +numerical libraries written in C or Fortran, such as NAG, IMSL's CNL, +IBM's ESSL, and SGI's SCSL. + +The target platform is a low-end desktop workstation. The goal is to +provide something which is generally useful, and the library is aimed at +general users rather than specialists. + +@menu +* Motivation:: +* Contributing:: +* Design:: +* Bibliography:: +* Copying:: +* GNU Free Documentation License:: +@end menu + +@node Motivation, Contributing, Top, Top +@chapter Motivation +@cindex numerical analysis +@cindex free software + +There is a need for scientists and engineers to have a numerical library +that: +@itemize @bullet +@item +is free (in the sense of freedom, not in the sense of gratis; see the +GNU General Public License), so that people can use that library, +redistribute it, modify it @dots{} +@item +is written in C using modern coding conventions, calling conventions, +scoping @dots{} +@item +is clearly and pedagogically documented; preferably with TeXinfo, so as +to allow online info, WWW and TeX output. +@item +uses top quality state-of-the-art algorithms. +@item +is portable and configurable using @emph{autoconf} and @emph{automake}. +@item +basically, is GNUlitically correct. +@end itemize + +There are strengths and weaknesses with existing libraries: + +@emph{Netlib} (http://www.netlib.org/) is probably the most advanced set +of numerical algorithms available on the net, maintained by AT&T. +Unfortunately most of the software is written in Fortran, with strange +calling conventions in many places. It is also not very well collected, +so it is a lot of work to get started with netlib. + +@emph{GAMS} (http://gams.nist.gov/) is an extremely well organized set +of pointers to scientific software, but like netlib, the individual +routines vary in their quality and their level of documentation. + +@emph{Numerical Recipes} (http://www.nr.com, +http://cfata2.harvard.edu/nr/) is an excellent book: it explains the +algorithms in a very clear way. Unfortunately the authors released the +source code under a license which allows you to use it, but prevents you +from re-distributing it. Thus Numerical Recipes is not @emph{free} in +the sense of @emph{freedom}. On top of that, the implementation suffers +from @emph{fortranitis} and other +limitations. [http://www.lysator.liu.se/c/num-recipes-in-c.html] + +@emph{SLATEC} is a large public domain collection of numerical routines +in Fortran written under a Department of Energy program in the +1970's. The routines are well tested and have a reasonable overall +design (given the limitations of that era). GSL should aim to be a +modern version of SLATEC. + +@emph{NSWC} is the Naval Surface Warfare Center numerical library. It +is a large public-domain Fortran library, containing a lot of +high-quality code. Documentation for the library is hard to find, only +a few photocopies of the printed manual are still in circulation. + +@emph{NAG} and @emph{IMSL} both sell high-quality libraries which are +proprietary. The NAG library is more advanced and has wider scope than +IMSL. The IMSL library leans more towards ease-of-use and makes +extensive use of variable length argument lists to emulate "default +arguments". + +@emph{ESSL} and @emph{SCSL} are proprietary libraries from IBM and SGI. + +@emph{Forth Scientific Library} [see the URL +http://www.taygeta.com/fsl/sciforth.html]. Mainly of interest to Forth +users. + +@emph{Numerical Algorithms with C} G. Engeln-Mullges, F. Uhlig. A nice +numerical library written in ANSI C with an accompanying +textbook. Source code is available but the library is not free software. + +@emph{NUMAL} A C version of the NUMAL library has been written by +H.T. Lau and is published as a book and disk with the title "A Numerical +Library in C for Scientists and Engineers". Source code is available but +the library is not free software. + +@emph{C Mathematical Function Handbook} by Louis Baker. A library of +function approximations and methods corresponding to those in the +"Handbook of Mathematical Functions" by Abramowitz and Stegun. Source +code is available but the library is not free software. + +@emph{CCMATH} by Daniel A. Atkinson. A C numerical library covering +similar areas to GSL. The code is quite terse. Earlier versions were +under the GPL but unfortunately it has changed to the LGPL in recent +versions. + +@emph{CEPHES} A useful collection of high-quality special functions +written in C. Not GPL'ed. + +@emph{WNLIB} A small collection of numerical routines written in C by +Will Naylor. Public domain. + +@emph{MESHACH} A comprehensive matrix-vector linear algebra library +written in C. Freely available but not GPL'ed (non-commercial license). + +@emph{CERNLIB} is a large high-quality Fortran library developed at CERN +over many years. It was originally non-free software but has recently +been released under the GPL. + +@emph{COLT} is a free numerical library in Java developed at CERN by +Wolfgang Hoschek. It is under a BSD-style license. + +The long-term goal will be to provide a framework to which the real +numerical experts (or their graduate students) will contribute. + +@node Contributing, Design, Motivation, Top +@chapter Contributing + +This design document was originally written in 1996. As of 2004, GSL +itself is essentially feature complete, the developers are not actively +working on any major new functionality. + +The main emphasis is now on ensuring the stability of the existing +functions, improving consistency, tidying up a few problem areas and +fixing any bugs that are reported. Potential contributors are +encouraged to gain familiarity with the library by investigating and +fixing known problems listed in the @file{BUGS} file in the CVS +repository. + +Adding large amounts of new code is difficult because it leads to +differences in the maturity of different parts of the library. To +maintain stability, any new functionality is encouraged as +@dfn{packages}, built on top of GSL and maintained independently by the +author, as in other free software projects (such as the Perl CPAN +archive and TeX CTAN archive, etc). + +@menu +* Packages:: +@end menu + +@node Packages, , Contributing, Contributing +@section Packages + +The design of GSL permits extensions to be used alongside the existing +library easily by simple linking. For example, additional random number +generators can be provided in a separate library: + +@example +$ tar xvfz rngextra-0.1.tar.gz +$ cd rngextra-0.1 +$ ./configure; make; make check; make install +$ ... +$ gcc -Wall main.c -lrngextra -lgsl -lgslcblas -lm +@end example + +The points below summarise the package design guidelines. These are +intended to ensure that packages are consistent with GSL itself, to make +life easier for the end-user and make it possible to distribute popular +well-tested packages as part of the core GSL in future. + +@itemize @bullet +@item Follow the GSL and GNU coding standards described in this document + +This means using the standard GNU packaging tools, such as Automake, +providing documentation in Texinfo format, and a test suite. The test +suite should run using @samp{make check}, and use the test functions +provided in GSL to produce the output with @code{PASS:}/@code{FAIL:} +lines. It is not essential to use libtool since packages are likely to +be small, a static library is sufficient and simpler to build. + +@item Use a new unique prefix for the package (do not use @samp{gsl_} -- this is reserved for internal use). + +For example, a package of additional random number generators might use +the prefix @code{rngextra}. + +@example +#include + +gsl_rng * r = gsl_rng_alloc (rngextra_lsfr32); +@end example + +@item Use a meaningful version number which reflects the state of development + +Generally, @code{0.x} are alpha versions, which provide no guarantees. +Following that, @code{0.9.x} are beta versions, which should be essentially +complete, subject only to minor changes and bug fixes. The first major +release is @code{1.0}. Any version number of @code{1.0} or higher +should be suitable for production use with a well-defined API. + +The API must not change in a major release and should be +backwards-compatible in its behavior (excluding actual bug-fixes), so +that existing code do not have to be modified. Note that the API +includes all exported definitions, including data-structures defined +with @code{struct}. If you need to change the API in a package, it +requires a new major release (e.g. @code{2.0}). + +@item Use the GNU General Public License (GPL) + +Follow the normal procedures of obtaining a copyright disclaimer if you +would like to have the package considered for inclusion in GSL itself in +the future (@pxref{Legal issues}). +@end itemize + +Post announcements of your package releases to +@email{gsl-discuss@@sourceware.org} so that information about them +can be added to the GSL webpages. + +For security, sign your package with GPG (@code{gpg --detach-sign +@var{file}}). + +An example package @samp{rngextra} containing two additional random +number generators can be found at +@url{http://www.network-theory.co.uk/download/rngextra/}. + +@node Design, Bibliography, Contributing, Top +@chapter Design + +@menu +* Language for implementation:: +* Interface to other languages:: +* What routines are implemented:: +* What routines are not implemented:: +* Design of Numerical Libraries:: +* Code Reuse:: +* Standards and conventions:: +* Background and Preparation:: +* Choice of Algorithms:: +* Documentation:: +* Namespace:: +* Header files:: +* Target system:: +* Function Names:: +* Object-orientation:: +* Comments:: +* Minimal structs:: +* Algorithm decomposition:: +* Memory allocation and ownership:: +* Memory layout:: +* Linear Algebra Levels:: +* Error estimates:: +* Exceptions and Error handling:: +* Persistence:: +* Using Return Values:: +* Variable Names:: +* Datatype widths:: +* size_t:: +* Arrays vs Pointers:: +* Pointers:: +* Constness:: +* Pseudo-templates:: +* Arbitrary Constants:: +* Test suites:: +* Compilation:: +* Thread-safety:: +* Legal issues:: +* Non-UNIX portability:: +* Compatibility with other libraries:: +* Parallelism:: +* Precision:: +* Miscellaneous:: +@end menu + +@node Language for implementation, Interface to other languages, Design, Design +@section Language for implementation + +@strong{One language only (C)} + +Advantages: simpler, compiler available and quite universal. + +@node Interface to other languages, What routines are implemented, Language for implementation, Design +@section Interface to other languages + +Wrapper packages are supplied as "extra" packages; not as part of the +"core". They are maintained separately by independent contributors. + +Use standard tools to make wrappers: swig, g-wrap + +@node What routines are implemented, What routines are not implemented, Interface to other languages, Design +@section What routines are implemented + +Anything which is in any of the existing libraries. Obviously it makes +sense to prioritize and write code for the most important areas first. + +@c @itemize @bullet +@c @item Random number generators + +@c Includes both random number generators and routines to give various +@c interesting distributions. + +@c @item Statistics + +@c @item Special Functions + +@c What I (jt) envision for this section is a collection of routines for +@c reliable and accurate (but not necessarily fast or efficient) estimation +@c of values for special functions, explicitly using Taylor series, asymptotic +@c expansions, continued fraction expansions, etc. As well as these routines, +@c fast approximations will also be provided, primarily based on Chebyshev +@c polynomials and ratios of polynomials. In this vision, the approximations +@c will be the "standard" routines for the users, and the exact (so-called) +@c routines will be used for verification of the approximations. It may also +@c be useful to provide various identity-checking routines as part of the +@c verification suite. + +@c @item Curve fitting + +@c polynomial, special functions, spline + +@c @item Ordinary differential equations + +@c @item Partial differential equations + +@c @item Fourier Analysis + +@c @item Wavelets + +@c @item Matrix operations: linear equations + +@c @item Matrix operations: eigenvalues and spectral analysis + +@c @item Matrix operations: any others? + +@c @item Direct integration + +@c @item Monte Carlo methods + +@c @item Simulated annealing + +@c @item Genetic algorithms + +@c We need to think about what kinds of algorithms are basic generally +@c useful numerical algorithms, and which ones are special purpose +@c research projects. We should concentrate on supplying the former. + +@c @item Cellular automata + +@c @end itemize + +@node What routines are not implemented, Design of Numerical Libraries, What routines are implemented, Design +@section What routines are not implemented + +@itemize @bullet +@item anything which already exists as a high-quality GPL'ed package. + +@item anything which is too big + -- i.e. an application in its own right rather than a subroutine + +For example, partial differential equation solvers are often huge and +very specialized applications (since there are so many types of PDEs, +types of solution, types of grid, etc). This sort of thing should +remain separate. It is better to point people to the good applications +which exist. + +@item anything which is independent and useful separately. + +Arguably functions for manipulating date and time, or financial +functions might be included in a "scientific" library. However, these +sorts of modules could equally well be used independently in other +programs, so it makes sense for them to be separate libraries. +@end itemize + +@node Design of Numerical Libraries, Code Reuse, What routines are not implemented, Design +@section Design of Numerical Libraries + +In writing a numerical library there is a unavoidable conflict between +completeness and simplicity. Completeness refers to the ability to +perform operations on different objects so that the group is +"closed". In mathematics objects can be combined and operated on in an +infinite number of ways. For example, I can take the derivative of a +scalar field with respect to a vector and the derivative of a vector +field wrt.@: a scalar (along a path). + +There is a definite tendency to unconsciously try to reproduce all these +possibilities in a numerical library, by adding new features one by +one. After all, it is always easy enough to support just one more +feature @dots{} so why not? + +Looking at the big picture, no-one would start out by saying "I want to +be able to represent every possible mathematical object and operation +using C structs" -- this is a strategy which is doomed to fail. There +is a limited amount of complexity which can be represented in a +programming language like C. Attempts to reproduce the complexity of +mathematics within such a language would just lead to a morass of +unmaintainable code. However, it's easy to go down that road if you +don't think about it ahead of time. + +It is better to choose simplicity over completeness. In designing new +parts of the library keep modules independent where possible. If +interdependencies between modules are introduced be sure about where you +are going to draw the line. + +@node Code Reuse, Standards and conventions, Design of Numerical Libraries, Design +@section Code Reuse + +It is useful if people can grab a single source file and include it in +their own programs without needing the whole library. Try to allow +standalone files like this whenever it is reasonable. Obviously the +user might need to define a few macros, such as GSL_ERROR, to compile +the file but that is ok. Examples where this can be done: grabbing a +single random number generator. + +@node Standards and conventions, Background and Preparation, Code Reuse, Design +@section Standards and conventions + +The people who kick off this project should set the coding standards and +conventions. In order of precedence the standards that we follow are, + +@itemize @bullet +@item We follow the GNU Coding Standards. +@item We follow the conventions of the ANSI Standard C Library. +@item We follow the conventions of the GNU C Library. +@item We follow the conventions of the glib GTK support Library. +@end itemize + +The references for these standards are the @cite{GNU Coding Standards} +document, Harbison and Steele @cite{C: A Reference Manual}, the +@cite{GNU C Library Manual} (version 2), and the Glib source code. + +For mathematical formulas, always follow the conventions in Abramowitz & +Stegun, the @cite{Handbook of Mathematical Functions}, since it is the +definitive reference and also in the public domain. + +If the project has a philosophy it is to "Think in C". Since we are +working in C we should only do what is natural in C, rather than trying +to simulate features of other languages. If there is something which is +unnatural in C and has to be simulated then we avoid using it. If this +means leaving something out of the library, or only offering a limited +version then so be it. It is not worthwhile making the library +over-complicated. There are numerical libraries in other languages, and +if people need the features of those languages it would be sensible for +them to use the corresponding libraries, rather than coercing a C +library into doing that job. + +It should be borne in mind at all time that C is a macro-assembler. If +you are in doubt about something being too complicated ask yourself the +question "Would I try to write this in macro-assembler?" If the answer +is obviously "No" then do not try to include it in GSL. [BJG] + +It will be useful to read the following papers, + +@itemize @w{} +@item +Kiem-Phong Vo, ``The Discipline and Method Architecture for Reusable +Libraries'', Software - Practice & Experience, v.30, pp.107-128, 2000. +@end itemize + +@noindent +It is available from +@uref{http://www.research.att.com/sw/tools/sfio/dm-spe.ps} or the earlier +technical report Kiem-Phong Vo, "An Architecture for Reusable Libraries" +@uref{http://citeseer.nj.nec.com/48973.html}. + +There are associated papers on Vmalloc, SFIO, and CDT which are also +relevant to the design of portable C libraries. + +@itemize @w{} +@item +Kiem-Phong Vo, ``Vmalloc: A General and Efficient Memory +Allocator''. Software Practice & Experience, 26:1--18, 1996. + +@uref{http://www.research.att.com/sw/tools/vmalloc/vmalloc.ps} +@item +Kiem-Phong Vo. ``Cdt: A Container Data Type Library''. Soft. Prac. & +Exp., 27:1177--1197, 1997 + +@uref{http://www.research.att.com/sw/tools/cdt/cdt.ps} +@item +David G. Korn and Kiem-Phong Vo, ``Sfio: Safe/Fast String/File IO'', +Proceedings of the Summer '91 Usenix Conference, pp. 235-256, 1991. + +@uref{http://citeseer.nj.nec.com/korn91sfio.html} +@end itemize + +Source code should be indented according to the GNU Coding Standards, +with spaces not tabs. For example, by using the @code{indent} command: + +@example +indent -gnu -nut *.c *.h +@end example + +@noindent +The @code{-nut} option converts tabs into spaces. + +@node Background and Preparation, Choice of Algorithms, Standards and conventions, Design +@section Background and Preparation + +Before implementing something be sure to research the subject +thoroughly! This will save a lot of time in the long-run. The two most +important steps are, + +@enumerate +@item +to determine whether there is already a free library (GPL or +GPL-compatible) which does the job. If so, there is no need to +reimplement it. Carry out a search on Netlib, GAMs, na-net, +sci.math.num-analysis and the web in general. This should also provide +you with a list of existing proprietary libraries which are relevant, +keep a note of these for future reference in step 2. + +@item +make a comparative survey of existing implementations in the +commercial/free libraries. Examine the typical APIs, methods of +communication between program and subroutine, and classify them so that +you are familiar with the key concepts or features that an +implementation may or may not have, depending on the relevant tradeoffs +chosen. Be sure to review the documentation of existing libraries for +useful references. + +@item +read up on the subject and determine the state-of-the-art. Find the +latest review papers. A search of the following journals should be +undertaken. + +@itemize @w{} +@item ACM Transactions on Mathematical Software +@item Numerische Mathematik +@item Journal of Computation and Applied Mathematics +@item Computer Physics Communications +@item SIAM Journal of Numerical Analysis +@item SIAM Journal of Scientific Computing +@end itemize +@end enumerate + +@noindent +Keep in mind that GSL is not a research project. Making a good +implementation is difficult enough, without also needing to invent new +algorithms. We want to implement existing algorithms whenever +possible. Making minor improvements is ok, but don't let it be a +time-sink. + +@node Choice of Algorithms, Documentation, Background and Preparation, Design +@section Choice of Algorithms + +Whenever possible choose algorithms which scale well and always remember +to handle asymptotic cases. This is particularly relevant for functions +with integer arguments. It is tempting to implement these using the +simple @math{O(n)} algorithms used to define the functions, such as the +many recurrence relations found in Abramowitz and Stegun. While such +methods might be acceptable for @math{n=O(10-100)} they will not be +satisfactory for a user who needs to compute the same function for +@math{n=1000000}. + +Similarly, do not make the implicit assumption that multivariate data +has been scaled to have components of the same size or O(1). Algorithms +should take care of any necessary scaling or balancing internally, and +use appropriate norms (e.g. |Dx| where D is a diagonal scaling matrix, +rather than |x|). + +@node Documentation, Namespace, Choice of Algorithms, Design +@section Documentation +Documentation: the project leaders should give examples of how things +are to be documented. High quality documentation is absolutely +mandatory, so documentation should introduce the topic, and give careful +reference for the provided functions. The priority is to provide +reference documentation for each function. It is not necessary to +provide tutorial documentation. + +Use free software, such as GNU Plotutils, to produce the graphs in the +manual. + +Some of the graphs have been made with gnuplot which is not truly free +(or GNU) software, and some have been made with proprietary +programs. These should be replaced with output from GNU plotutils. + +When citing references be sure to use the standard, definitive and +best reference books in the field, rather than lesser known text-books +or introductory books which happen to be available (e.g. from +undergraduate studies). For example, references concerning algorithms +should be to Knuth, references concerning statistics should be to +Kendall & Stuart, references concerning special functions should be to +Abramowitz & Stegun (Handbook of Mathematical Functions AMS-55), etc. +Wherever possible refer to Abramowitz & Stegun rather than other +reference books because it is a public domain work, so it is +inexpensive and freely redistributable. + +The standard references have a better chance of being available in an +accessible library for the user. If they are not available and the user +decides to buy a copy in order to look up the reference then this also +gives them the best quality book which should also cover the largest +number of other references in the GSL Manual. If many different books +were to be referenced this would be an expensive and inefficient use of +resources for a user who needs to look up the details of the algorithms. +Reference books also stay in print much longer than text books, which +are often out-of-print after a few years. + +Similarly, cite original papers wherever possible. Be sure to keep +copies of these for your own reference (e.g. when dealing with bug +reports) or to pass on to future maintainers. + +If you need help in tracking down references, ask on the +@code{gsl-discuss} mailing list. There is a group of volunteers with +access to good libraries who have offered to help GSL developers get +copies of papers. + +@c [JT section: written by James Theiler + +@c And we furthermore promise to try as hard as possible to document +@c the software: this will ideally involve discussion of why you might want +@c to use it, what precisely it does, how precisely to invoke it, +@c how more-or-less it works, and where we learned about the algorithm, +@c and (unless we wrote it from scratch) where we got the code. +@c We do not plan to write this entire package from scratch, but to cannibalize +@c existing mathematical freeware, just as we expect our own software to +@c be cannibalized.] + +To write mathematics in the texinfo file you can use the @code{@@math} +command with @emph{simple} TeX commands. These are automatically +surrounded by @code{$...$} for math mode. For example, + +@example +to calculate the coefficient @@math@{\alpha@} use the function... +@end example + +@noindent +will be correctly formatted in both online and TeX versions of the +documentation. + +Note that you cannot use the special characters @{ and @} +inside the @code{@@math} command because these conflict between TeX +and Texinfo. This is a problem if you want to write something like +@code{\sqrt@{x+y@}}. + +To work around it you can precede the math command with a special +macro @code{@@c} which contains the explicit TeX commands you want to +use (no restrictions), and put an ASCII approximation into the +@code{@@math} command (you can write @code{@@@{} and +@code{@@@}} there for the left and right braces). The explicit TeX +commands are used in the TeX output and the argument of @code{@@math} +in the plain info output. + +Note that the @code{@@c@{@}} macro must go at the end of the +preceding line, because everything else after it is ignored---as far +as texinfo is concerned it's actually a 'comment'. The comment +command @@c has been modified to capture a TeX expression which is +output by the next @@math command. For ordinary comments use the @@comment +command. + +For example, + +@example +this is a test @@c@{$\sqrt@{x+y@}$@} +@@math@{\sqrt@@@{x+y@@@}@} +@end example + +@noindent +is equivalent to @code{this is a test $\sqrt@{x+y@}$} in plain TeX +and @code{this is a test @@math@{\sqrt@@@{x+y@@@}@}} in Info. + +It looks nicer if some of the more cryptic TeX commands are given +a C-style ascii version, e.g. + +@example +for @@c@{$x \ge y$@} +@@math@{x >= y@} +@end example + +@noindent +will be appropriately displayed in both TeX and Info. + + +@node Namespace, Header files, Documentation, Design +@section Namespace + +Use @code{gsl_} as a prefix for all exported functions and variables. + +Use @code{GSL_} as a prefix for all exported macros. + +All exported header files should have a filename with the prefix @code{gsl_}. + +All installed libraries should have a name like libgslhistogram.a + +Any installed executables (utility programs etc) should have the prefix +@code{gsl-} (with a hyphen, not an underscore). + +All function names, variables, etc.@: should be in lower case. Macros and +preprocessor variables should be in upper case. + +Some common conventions in variable and function names: + +@table @code +@item p1 +plus 1, e.g. function @code{log1p(x)} or a variable like @code{kp1}, @math{=k+1}. + +@item m1 +minus 1, e.g. function @code{expm1(x)} or a variable like @code{km1}, @math{=k-1}. +@end table + +@node Header files, Target system, Namespace, Design +@section Header files + +Installed header files should be idempotent, i.e. surround them by the +preprocessor conditionals like the following, + +@example +#ifndef __GSL_HISTOGRAM_H__ +#define __GSL_HISTOGRAM_H__ +... +#endif /* __GSL_HISTOGRAM_H__ */ +@end example + +@node Target system, Function Names, Header files, Design +@section Target system + +The target system is ANSI C, with a full Standard C Library, and IEEE +arithmetic. + +@node Function Names, Object-orientation, Target system, Design +@section Function Names + +Each module has a name, which prefixes any function names in that +module, e.g. the module gsl_fft has function names like +gsl_fft_init. The modules correspond to subdirectories of the library +source tree. + +@node Object-orientation, Comments, Function Names, Design +@section Object-orientation + +The algorithms should be object oriented, but only to the extent that is +easy in portable ANSI C. The use of casting or other tricks to simulate +inheritance is not desirable, and the user should not have to be aware +of anything like that. This means many types of patterns are ruled +out. However, this is not considered a problem -- they are too +complicated for the library. + +Note: it is possible to define an abstract base class easily in C, using +function pointers. See the rng directory for an example. + +When reimplementing public domain Fortran code, please try to introduce +the appropriate object concepts as structs, rather than translating the +code literally in terms of arrays. The structs can be useful just +within the file, you don't need to export them to the user. + +For example, if a Fortran program repeatedly uses a subroutine like, + +@example +SUBROUTINE RESIZE (X, K, ND, K1) +@end example + +@noindent +where X(K,D) represents a grid to be resized to X(K1,D) you can make +this more readable by introducing a struct, + +@smallexample +struct grid @{ + int nd; /* number of dimensions */ + int k; /* number of bins */ + double * x; /* partition of axes, array of size x[k][nd] */ +@} + +void +resize_grid (struct grid * g, int k_new) +@{ +... +@} +@end smallexample + +@noindent +Similarly, if you have a frequently recurring code fragment within a +single file you can define a static or static inline function for it. +This is typesafe and saves writing out everything in full. + + +@node Comments, Minimal structs, Object-orientation, Design +@section Comments + +Follow the GNU Coding Standards. A relevant quote is, + +``Please write complete sentences and capitalize the first word. If a +lower-case identifier comes at the beginning of a sentence, don't +capitalize it! Changing the spelling makes it a different identifier. +If you don't like starting a sentence with a lower case letter, write +the sentence differently (e.g., "The identifier lower-case is ...").'' + +@node Minimal structs, Algorithm decomposition, Comments, Design +@section Minimal structs + +We prefer to make structs which are @dfn{minimal}. For example, if a +certain type of problem can be solved by several classes of algorithm +(e.g. with and without derivative information) it is better to make +separate types of struct to handle those cases. i.e. run time type +identification is not desirable. + +@node Algorithm decomposition, Memory allocation and ownership, Minimal structs, Design +@section Algorithm decomposition + +Iterative algorithms should be decomposed into an INITIALIZE, ITERATE, +TEST form, so that the user can control the progress of the iteration +and print out intermediate results. This is better than using +call-backs or using flags to control whether the function prints out +intermediate results. In fact, call-backs should not be used -- if they +seem necessary then it's a sign that the algorithm should be broken down +further into individual components so that the user has complete control +over them. + +For example, when solving a differential equation the user may need to +be able to advance the solution by individual steps, while tracking a +realtime process. This is only possible if the algorithm is broken down +into step-level components. Higher level decompositions would not give +sufficient flexibility. + +@node Memory allocation and ownership, Memory layout, Algorithm decomposition, Design +@section Memory allocation and ownership + +Functions which allocate memory on the heap should end in _alloc +(e.g. gsl_foo_alloc) and be deallocated by a corresponding _free function +(gsl_foo_free). + +Be sure to free any memory allocated by your function if you have to +return an error in a partially initialized object. + +Don't allocate memory 'temporarily' inside a function and then free it +before the function returns. This prevents the user from controlling +memory allocation. All memory should be allocated and freed through +separate functions and passed around as a "workspace" argument. This +allows memory allocation to be factored out of tight loops. + +To avoid confusion over ownership, workspaces should not own each +other or contain other workspaces. For clarity and ease of use in +different contexts, they should be allocated from integer arguments +rather than derived from other structs. + +@node Memory layout, Linear Algebra Levels, Memory allocation and ownership, Design +@section Memory layout + +We use flat blocks of memory to store matrices and vectors, not C-style +pointer-to-pointer arrays. The matrices are stored in row-major order +-- i.e. the column index (second index) moves continuously through memory. + +@node Linear Algebra Levels, Error estimates, Memory layout, Design +@section Linear Algebra Levels + +Functions using linear algebra are divided into two levels: + +For purely "1d" functions we use the C-style arguments (double *, +stride, size) so that it is simpler to use the functions in a normal C +program, without needing to invoke all the gsl_vector machinery. + +The philosophy here is to minimize the learning curve. If someone only +needs to use one function, like an fft, they can do so without having +to learn about gsl_vector. + +This leads to the question of why we don't do the same for matrices. +In that case the argument list gets too long and confusing, with +(size1, size2, tda) for each matrix and potential ambiguities over row +vs column ordering. In this case, it makes sense to use gsl_vector and +gsl_matrix, which take care of this for the user. + +So really the library has two levels -- a lower level based on C types +for 1d operations, and a higher level based on gsl_matrix and +gsl_vector for general linear algebra. + +Of course, it would be possible to define a vector version of the +lower level functions too. So far we have not done that because it was +not essential -- it could be done but it is easy enough to get by +using the C arguments, by typing v->data, v->stride, v->size instead. +A gsl_vector version of low-level functions would mainly be a +convenience. + +Please use BLAS routines internally within the library whenever possible +for efficiency. + +@node Error estimates, Exceptions and Error handling, Linear Algebra Levels, Design +@section Error estimates + +In the special functions error bounds are given as twice the expected +``Gaussian'' error, i.e.@: 2-sigma, so the result is inside the error +98% of the time. People expect the true value to be within +/- the +quoted error (this wouldn't be the case 32% of the time for 1 sigma). +Obviously the errors are not Gaussian but a factor of two works well +in practice. + +@node Exceptions and Error handling, Persistence, Error estimates, Design +@section Exceptions and Error handling + +The basic error handling procedure is the return code (see gsl_errno.h +for a list of allowed values). Use the GSL_ERROR macro to mark an +error. The current definition of this macro is not ideal but it can be +changed at compile time. + +You should always use the GSL_ERROR macro to indicate an error, rather +than just returning an error code. The macro allows the user to trap +errors using the debugger (by setting a breakpoint on the function +gsl_error). + +The only circumstances where GSL_ERROR should not be used are where the +return value is "indicative" rather than an error -- for example, the +iterative routines use the return code to indicate the success or +failure of an iteration. By the nature of an iterative algorithm +"failure" (a return code of GSL_CONTINUE) is a normal occurrence and +there is no need to use GSL_ERROR there. + +Be sure to free any memory allocated by your function if you return an +error (in particular for errors in partially initialized objects). + +@node Persistence, Using Return Values, Exceptions and Error handling, Design +@section Persistence + +If you make an object foo which uses blocks of memory (e.g. vector, +matrix, histogram) you can provide functions for reading and writing +those blocks, + +@smallexample +int gsl_foo_fread (FILE * stream, gsl_foo * v); +int gsl_foo_fwrite (FILE * stream, const gsl_foo * v); +int gsl_foo_fscanf (FILE * stream, gsl_foo * v); +int gsl_foo_fprintf (FILE * stream, const gsl_foo * v, const char *format); +@end smallexample + +@noindent +Only dump out the blocks of memory, not any associated parameters such +as lengths. The idea is for the user to build higher level input/output +facilities using the functions the library provides. The fprintf/fscanf +versions should be portable between architectures, while the binary +versions should be the "raw" version of the data. Use the functions + +@smallexample +int gsl_block_fread (FILE * stream, gsl_block * b); +int gsl_block_fwrite (FILE * stream, const gsl_block * b); +int gsl_block_fscanf (FILE * stream, gsl_block * b); +int gsl_block_fprintf (FILE * stream, const gsl_block * b, const char *format); +@end smallexample + +@noindent +or + +@smallexample +int gsl_block_raw_fread (FILE * stream, double * b, size_t n, size_t stride); +int gsl_block_raw_fwrite (FILE * stream, const double * b, size_t n, size_t stri +de); +int gsl_block_raw_fscanf (FILE * stream, double * b, size_t n, size_t stride); +int gsl_block_raw_fprintf (FILE * stream, const double * b, size_t n, size_t str +ide, const char *format); +@end smallexample + +@noindent +to do the actual reading and writing. + +@node Using Return Values, Variable Names, Persistence, Design +@section Using Return Values + +Always assign a return value to a variable before using it. This allows +easier debugging of the function, and inspection and modification of the +return value. If the variable is only needed temporarily then enclose +it in a suitable scope. + +For example, instead of writing, + +@example +a = f(g(h(x,y))) +@end example + +@noindent +use temporary variables to store the intermediate values, +@example +@{ + double u = h(x,y); + double v = g(u); + a = f(v); +@} +@end example + +@noindent +These can then be inspected more easily in the debugger, and breakpoints +can be placed more precisely. The compiler will eliminate the temporary +variables automatically when the program is compiled with optimization. + +@node Variable Names, Datatype widths, Using Return Values, Design +@section Variable Names + +Try to follow existing conventions for variable names, + +@table @code +@item dim +number of dimensions +@item w +pointer to workspace +@item state +pointer to state variable (use @code{s} if you need to save characters) +@item result +pointer to result (output variable) +@item abserr +absolute error +@item relerr +relative error +@item epsabs +absolute tolerance +@item epsrel +relative tolerance +@item size +the size of an array or vector e.g. double array[size] +@item stride +the stride of a vector +@item size1 +the number of rows in a matrix +@item size2 +the number of columns in a matrix +@item n +general integer number, e.g. number of elements of array, in fft, etc +@item r +random number generator (gsl_rng) +@end table + +@node Datatype widths, size_t, Variable Names, Design +@section Datatype widths + +Be aware that in ANSI C the type @code{int} is only guaranteed to +provide 16-bits. It may provide more, but is not guaranteed to. +Therefore if you require 32 bits you must use @code{long int}, which +will have 32 bits or more. Of course, on many platforms the type +@code{int} does have 32 bits instead of 16 bits but we have to code to +the ANSI standard rather than a specific platform. + +@node size_t, Arrays vs Pointers, Datatype widths, Design +@section size_t + +All objects (blocks of memory, etc) should be measured in terms of a +@code{size_t} type. Therefore any iterations (e.g. @code{for(i=0; i= 0; i--) @{ ... @} /* DOESN'T WORK */ +@end example + +@noindent +use something like + +@example +for (i = N; i-- > 0;) @{ ... @} +@end example + +@noindent +to avoid problems with wrap-around at @code{i=0}. Note that the +post-decrement ensures that the loop variable is tested before it +reaches zero. Beware that @code{i} will wraparound on exit from the +loop. (This could also be written as @code{for (i = N; i--;)} since +the test for @code{i>0} is equivalent to @code{i!=0} for an unsigned +integer) + +If you really want to avoid confusion use a separate variable to invert +the loop order, +@example +for (i = 0; i < N; i++) @{ j = N - i; ... @} +@end example + +Note (BJG). Originally, I suggested using + +@example +for (i = N; i > 0 && i--;) @{ ... @} +@end example + +which makes the test for @code{i>0} explicit and leaves @code{i=0} on +exit from the loop. However, it is slower as there is an additional +branch which prevents unrolling. Thanks to J. Seward for pointing +this out. + +Note: As a matter of style, please use post-increment (@code{i++}) and +post-decrement (@code{i--}) operators by default and only use +pre-increment (@code{++i}) and pre-decrement (@code{--i}) operators +where specifically needed. + +@node Arrays vs Pointers, Pointers, size_t, Design +@section Arrays vs Pointers + +A function can be declared with either pointer arguments or array +arguments. The C standard considers these to be equivalent. However, it +is useful to distinguish between the case of a pointer, representing a +single object which is being modified, and an array which represents a +set of objects with unit stride (that are modified or not depending on +the presence of @code{const}). For vectors, where the stride is not +required to be unity, the pointer form is preferred. + +@smallexample +/* real value, set on output */ +int foo (double * x); + +/* real vector, modified */ +int foo (double * x, size_t stride, size_t n); + +/* constant real vector */ +int foo (const double * x, size_t stride, size_t n); + +/* real array, modified */ +int bar (double x[], size_t n); + +/* real array, not modified */ +int baz (const double x[], size_t n); +@end smallexample + +@node Pointers, Constness, Arrays vs Pointers, Design +@section Pointers + +Avoid dereferencing pointers on the right-hand side of an expression where +possible. It's better to introduce a temporary variable. This is +easier for the compiler to optimise and also more readable since it +avoids confusion between the use of @code{*} for multiplication and +dereferencing. + +@example +while (fabs (f) < 0.5) +@{ + *e = *e - 1; + f *= 2; +@} +@end example + +@noindent +is better written as, + +@example +@{ + int p = *e; + + while (fabs(f) < 0.5) + @{ + p--; + f *= 2; + @} + + *e = p; +@} +@end example + +@node Constness, Pseudo-templates, Pointers, Design +@section Constness + +Use @code{const} in function prototypes wherever an object pointed to by +a pointer is constant (obviously). For variables which are meaningfully +constant within a function/scope use @code{const} also. This prevents +you from accidentally modifying a variable which should be constant +(e.g. length of an array, etc). It can also help the compiler do +optimization. These comments also apply to arguments passed by value +which should be made @code{const} when that is meaningful. + +@node Pseudo-templates, Arbitrary Constants, Constness, Design +@section Pseudo-templates + +There are some pseudo-template macros available in @file{templates_on.h} +and @file{templates_off.h}. See a directory link @file{block} for +details on how to use them. Use sparingly, they are a bit of a +nightmare, but unavoidable in places. + +In particular, the convention is: templates are used for operations on +"data" only (vectors, matrices, statistics, sorting). This is intended +to cover the case where the program must interface with an external +data-source which produces a fixed type. e.g. a big array of char's +produced by an 8-bit counter. + +All other functions can use double, for floating point, or the +appropriate integer type for integers (e.g. unsigned long int for random +numbers). It is not the intention to provide a fully templated version +of the library. + +That would be "putting a quart into a pint pot". To summarize, almost +everything should be in a "natural type" which is appropriate for +typical usage, and templates are there to handle a few cases where it is +unavoidable that other data-types will be encountered. + +For floating point work "double" is considered a "natural type". This +sort of idea is a part of the C language. + +@node Arbitrary Constants, Test suites, Pseudo-templates, Design +@section Arbitrary Constants + +Avoid arbitrary constants. + +For example, don't hard code "small" values like '1e-30', '1e-100' or +@code{10*GSL_DBL_EPSILON} into the routines. This is not appropriate +for a general purpose library. + +Compute values accurately using IEEE arithmetic. If errors are +potentially significant then error terms should be estimated reliably +and returned to the user, by analytically deriving an error propagation +formula, not using guesswork. + +A careful consideration of the algorithm usually shows that arbitrary +constants are unnecessary, and represent an important parameter which +should be accessible to the user. + +For example, consider the following code: + +@example +if (residual < 1e-30) @{ + return 0.0; /* residual is zero within round-off error */ +@} +@end example + +@noindent +This should be rewritten as, + +@example + return residual; +@end example + +@noindent +in order to allow the user to determine whether the residual is +significant or not. + +The only place where it is acceptable to use constants like +@code{GSL_DBL_EPSILON} is in function approximations, (e.g.@: Taylor +series, asymptotic expansions, etc). In these cases it is not an +arbitrary constant, but an inherent part of the algorithm. + +@node Test suites, Compilation, Arbitrary Constants, Design +@section Test suites + +The implementor of each module should provide a reasonable test suite +for the routines. + +The test suite should be a program that uses the library and checks the +result against known results, or invokes the library several times and +does a statistical analysis on the results (for example in the case of +random number generators). + +Ideally the one test program per directory should aim for 100% path +coverage of the code. Obviously it would be a lot of work to really +achieve this, so prioritize testing on the critical parts and use +inspection for the rest. Test all the error conditions by explicitly +provoking them, because we consider it a serious defect if the function +does not return an error for an invalid parameter. N.B. Don't bother to +test for null pointers -- it's sufficient for the library to segfault if +the user provides an invalid pointer. + +The tests should be deterministic. Use the @code{gsl_test} functions +provided to perform separate tests for each feature with a separate +output PASS/FAIL line, so that any failure can be uniquely identified. + +Use realistic test cases with 'high entropy'. Tests on simple values +such as 1 or 0 may not reveal bugs. For example, a test using a value +of @math{x=1} will not pick up a missing factor of @math{x} in the code. +Similarly, a test using a value of @math{x=0} will not pick any missing +terms involving @math{x} in the code. Use values like @math{2.385} to +avoid silent failures. + +If your test uses multiple values make sure there are no simple +relations between them that could allow bugs to be missed through silent +cancellations. + +If you need some random floats to put in the test programs use @code{od -f +/dev/random} as a source of inspiration. + +Don't use @code{sprintf} to create output strings in the tests. It can +cause hard to find bugs in the test programs themselves. The functions +@code{gsl_test_...} support format string arguments so use these +instead. + +@node Compilation, Thread-safety, Test suites, Design +@section Compilation + +Make sure everything compiles cleanly. Use the strict compilation +options for extra checking. + +@smallexample +make CFLAGS="-ansi -pedantic -Werror -W -Wall -Wtraditional -Wconversion + -Wshadow -Wpointer-arith -Wcast-qual -Wcast-align -Wwrite-strings + -Wstrict-prototypes -fshort-enums -fno-common -Wmissing-prototypes + -Wnested-externs -Dinline= -g -O4" +@end smallexample + +@noindent +Also use @code{checkergcc} to check for memory problems on the stack and +the heap. It's the best memory checking tool. If checkergcc isn't +available then Electric Fence will check the heap, which is better than +no checking. + +There is a new tool @code{valgrind} for checking memory access. Test +the code with this as well. + +Make sure that the library will also compile with C++ compilers +(g++). This should not be too much of a problem if you have been writing +in ANSI C. + +@node Thread-safety, Legal issues, Compilation, Design +@section Thread-safety + +The library should be usable in thread-safe programs. All the functions +should be thread-safe, in the sense that they shouldn't use static +variables. + +We don't require everything to be completely thread safe, but anything +that isn't should be obvious. For example, some global variables are +used to control the overall behavior of the library (range-checking +on/off, function to call on fatal error, etc). Since these are accessed +directly by the user it is obvious to the multi-threaded programmer that +they shouldn't be modified by different threads. + +There is no need to provide any explicit support for threads +(e.g. locking mechanisms etc), just to avoid anything which would make +it impossible for someone to call a GSL routine from a multithreaded +program. + + +@node Legal issues, Non-UNIX portability, Thread-safety, Design +@section Legal issues + +@itemize @bullet +@item +Each contributor must make sure her code is under the GNU General Public +License (GPL). This means getting a disclaimer from your employer. +@item +We must clearly understand ownership of existing code and algorithms. +@item +Each contributor can retain ownership of their code, or sign it over to +FSF as they prefer. + +There is a standard disclaimer in the GPL (take a look at it). The more +specific you make your disclaimer the more likely it is that it will be +accepted by an employer. For example, + +@smallexample +Yoyodyne, Inc., hereby disclaims all copyright interest in the software +`GNU Scientific Library - Legendre Functions' (routines for computing +Legendre functions numerically in C) written by James Hacker. + +, 1 April 1989 +Ty Coon, President of Vice +@end smallexample + +@item +Obviously: don't use or translate non-free code. + +In particular don't copy or translate code from @cite{Numerical Recipes} +or @cite{ACM TOMS}. + +Numerical Recipes is under a strict license and is not free software. +The publishers Cambridge University Press claim copyright on all aspects +of the book and the code, including function names, variable names and +ordering of mathematical subexpressions. Routines in GSL should not +refer to Numerical Recipes or be based on it in any way. + +The ACM algorithms published in TOMS (Transactions on Mathematical +Software) are not public domain, even though they are distributed on the +internet -- the ACM uses a special non-commercial license which is not +compatible with the GPL. The details of this license can be found on the +cover page of ACM Transactions on Mathematical Software or on the ACM +Website. + +Only use code which is explicitly under a free license: GPL or Public +Domain. If there is no license on the code then this does not mean it +is public domain -- an explicit statement is required. If in doubt check +with the author. + +@item +I @strong{think} one can reference algorithms from classic books on +numerical analysis (BJG: yes, provided the code is an independent +implementation and not copied from any existing software. For +example, it would be ok to read the papers in ACM TOMS and make an +independent implementation from their description). +@end itemize + +@node Non-UNIX portability, Compatibility with other libraries, Legal issues, Design +@section Non-UNIX portability + +There is good reason to make this library work on non-UNIX systems. It +is probably safe to ignore DOS and only worry about windows95/windowsNT +portability (so filenames can be long, I think). + +On the other hand, nobody should be forced to use non-UNIX systems for +development. + +The best solution is probably to issue guidelines for portability, like +saying "don't use XYZ unless you absolutely have to". Then the Windows +people will be able to do their porting. + +@node Compatibility with other libraries, Parallelism, Non-UNIX portability, Design +@section Compatibility with other libraries + +We do not regard compatibility with other numerical libraries as a +priority. + +However, other libraries, such as Numerical Recipes, are widely used. +If somebody writes the code to allow drop-in replacement of these +libraries it would be useful to people. If it is done, it would be as a +separate wrapper that can be maintained and shipped separately. + +There is a separate issue of system libraries, such as BSD math library +and functions like @code{expm1}, @code{log1p}, @code{hypot}. The +functions in this library are available on nearly every platform (but +not all). + +In this case, it is best to write code in terms of these native +functions to take advantage of the vendor-supplied system library (for +example log1p is a machine instruction on the Intel x86). The library +also provides portable implementations e.g. @code{gsl_hypot} which are +used as an automatic fall back via autoconf when necessary. See the +usage of @code{hypot} in @file{gsl/complex/math.c}, the implementation +of @code{gsl_hypot} and the corresponding parts of files +@file{configure.in} and @file{config.h.in} as an example. + +@node Parallelism, Precision, Compatibility with other libraries, Design +@section Parallelism + +We don't intend to provide support for parallelism within the library +itself. A parallel library would require a completely different design +and would carry overhead that other applications do not need. + +@node Precision, Miscellaneous, Parallelism, Design +@section Precision + +For algorithms which use cutoffs or other precision-related terms please +express these in terms of @code{GSL_DBL_EPSILON} and @code{GSL_DBL_MIN}, or powers or +combinations of these. This makes it easier to port the routines to +different precisions. + +@node Miscellaneous, , Precision, Design +@section Miscellaneous + +Don't use the letter @code{l} as a variable name --- it is difficult to +distinguish from the number @code{1}. (This seems to be a favorite in +old Fortran programs). + +Final tip: one perfect routine is better than any number of routines +containing errors. + +@node Bibliography, Copying, Design, Top +@chapter Bibliography + +@section General numerics + +@itemize + +@item +@cite{Numerical Computation} (2 Volumes) by C.W. Ueberhuber, +Springer 1997, ISBN 3540620583 (Vol 1) and ISBN 3540620575 (Vol 2). + +@item +@cite{Accuracy and Stability of Numerical Algorithms} by N.J. Higham, +SIAM, ISBN 0898715210. + +@item +@cite{Sources and Development of Mathematical Software} edited by W.R. Cowell, +Prentice Hall, ISBN 0138235015. + +@item +@cite{A Survey of Numerical Mathematics (2 vols)} by D.M. Young and R.T. Gregory, + ISBN 0486656918, ISBN 0486656926. + +@item +@cite{Methods and Programs for Mathematical Functions} by Stephen L. Moshier, +Hard to find (ISBN 13578980X or 0135789982, possibly others). + +@item +@cite{Numerical Methods That Work} by Forman S. Acton, + ISBN 0883854503. + +@item +@cite{Real Computing Made Real: Preventing Errors in Scientific and Engineering Calculations} by Forman S. Acton, + ISBN 0486442217. +@end itemize + +@section Reference + +@itemize +@item +@cite{Handbook of Mathematical Functions} edited by Abramowitz & Stegun, +Dover, ISBN 0486612724. + +@item +@cite{The Art of Computer Programming} (3rd Edition, 3 Volumes) by D. Knuth, +Addison Wesley, ISBN 0201485419. +@end itemize + +@section Subject specific + +@itemize +@item +@cite{Matrix Computations} (3rd Ed) by G.H. Golub, C.F. Van Loan, +Johns Hopkins University Press 1996, ISBN 0801854148. + +@item +@cite{LAPACK Users' Guide} (3rd Edition), +SIAM 1999, ISBN 0898714478. + +@item +@cite{Treatise on the Theory of Bessel Functions 2ND Edition} by G N Watson, + ISBN 0521483913. + +@item +@cite{Higher Transcendental Functions satisfying nonhomogeneous linear differential equations} by A W Babister, + ISBN 1114401773. + +@end itemize + +@node Copying, GNU Free Documentation License, Bibliography, Top +@unnumbered Copying + + The subroutines and source code in the @value{GSL} package are "free"; +this means that everyone is free to use them and free to redistribute +them on a free basis. The @value{GSL}-related programs are not in the +public domain; they are copyrighted and there are restrictions on their +distribution, but these restrictions are designed to permit everything +that a good cooperating citizen would want to do. What is not allowed +is to try to prevent others from further sharing any version of these +programs that they might get from you. + + Specifically, we want to make sure that you have the right to give +away copies of the programs that relate to @value{GSL}, that you receive +source code or else can get it if you want it, that you can change these +programs or use pieces of them in new free programs, and that you know +you can do these things. + + To make sure that everyone has such rights, we have to forbid you to +deprive anyone else of these rights. For example, if you distribute +copies of the @value{GSL}-related code, 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 tell them their rights. + + Also, for our own protection, we must make certain that everyone +finds out that there is no warranty for the programs that relate to +@value{GSL}. If these programs are modified by someone else and passed +on, we want their recipients to know that what they have is not what we +distributed, so that any problems introduced by others will not reflect +on our reputation. + + The precise conditions of the licenses for the programs currently +being distributed that relate to @value{GSL} are found in the General +Public Licenses that accompany them. + +@node GNU Free Documentation License, , Copying, Top +@unnumbered GNU Free Documentation License +@include fdl.texi + +@c @printindex cp + +@c @node Function Index +@c @unnumbered Function Index + +@c @printindex fn + +@c @node Variable Index +@c @unnumbered Variable Index + +@c @printindex vr + +@c @node Type Index +@c @unnumbered Type Index + +@c @printindex tp + +@bye diff --git a/gsl-2.5/doc/gsl-histogram.1 b/gsl-2.5/doc/gsl-histogram.1 new file mode 100644 index 00000000..66f9b5af --- /dev/null +++ b/gsl-2.5/doc/gsl-histogram.1 @@ -0,0 +1,42 @@ +.\" Man page contributed by Dirk Eddelbuettel +.\" and released under the GNU General Public License +.TH GSL-HISTOGRAM 1 "" GNU +.SH NAME +gsl-histogram - compute histogram of data on stdin +.SH SYNOPSYS +.B gsl-histogram xmin xmax [n] +.SH DESCRIPTION +.B gsl-histogram +is a demonstration program for the GNU Scientific Library. +It takes three arguments, specifying the upper and lower bounds of the +histogram and the number of bins. It then reads numbers from `stdin', +one line at a time, and adds them to the histogram. When there is no +more data to read it prints out the accumulated histogram using +gsl_histogram_fprintf. If n is unspecified then bins of integer width +are used. +.SH EXAMPLE +Here is an example. We generate 10000 random samples from a Cauchy +distribution with a width of 30 and histogram them over the range -100 to +100, using 200 bins. + + gsl-randist 0 10000 cauchy 30 | gsl-histogram -100 100 200 > histogram.dat + +A plot of the resulting histogram will show the familiar shape of the +Cauchy distribution with fluctuations caused by the finite sample +size. + + awk '{print $1, $3 ; print $2, $3}' histogram.dat | graph -T X + +.SH SEE ALSO +.BR gsl(3) , +.BR gsl-randist(1) . + +.SH AUTHOR +.B gsl-histogram +was written by Brian Gough. +Copyright 1996-2000; for copying conditions see the GNU General +Public Licence. + +This manual page was added by the Dirk Eddelbuettel +, the Debian GNU/Linux maintainer for +.BR GSL . diff --git a/gsl-2.5/doc/gsl-randist.1 b/gsl-2.5/doc/gsl-randist.1 new file mode 100644 index 00000000..4a061696 --- /dev/null +++ b/gsl-2.5/doc/gsl-randist.1 @@ -0,0 +1,38 @@ +.\" Man page contributed by Dirk Eddelbuettel +.\" and released under the GNU General Public License +.TH GSL-RANDIST 1 "" GNU +.SH NAME +gsl-randist - generate random samples from various distributions +.SH SYNOPSYS +.B gsl-randist seed n DIST param1 param2 [..] +.SH DESCRIPTION +.B gsl-randist +is a demonstration program for the GNU Scientific Library. +It generates n random samples from the distribution DIST using the distribution +parameters param1, param2, ... +.SH EXAMPLE +Here is an example. We generate 10000 random samples from a Cauchy +distribution with a width of 30 and histogram them over the range -100 to +100, using 200 bins. + + gsl-randist 0 10000 cauchy 30 | gsl-histogram -100 100 200 > histogram.dat + +A plot of the resulting histogram will show the familiar shape of the +Cauchy distribution with fluctuations caused by the finite sample +size. + + awk '{print $1, $3 ; print $2, $3}' histogram.dat | graph -T X + +.SH SEE ALSO +.BR gsl(3) , +.BR gsl-histogram(1) . + +.SH AUTHOR +.B gsl-randist +was written by James Theiler and Brian Gough. +Copyright 1996-2000; for copying conditions see the GNU General +Public Licence. + +This manual page was added by the Dirk Eddelbuettel +, the Debian GNU/Linux maintainer for +.BR GSL . diff --git a/gsl-2.5/doc/gsl-ref.info b/gsl-2.5/doc/gsl-ref.info new file mode 100644 index 00000000..4e974e8a --- /dev/null +++ b/gsl-2.5/doc/gsl-ref.info @@ -0,0 +1,53942 @@ +This is gsl-ref.info, produced by makeinfo version 6.4 from +gsl-ref.texi. + + GSL 2.5, Jun 03, 2018 + + The GSL Team + + Copyright © 1996-2018 The GSL Team + +INFO-DIR-SECTION Miscellaneous +START-INFO-DIR-ENTRY +* GSL: (gsl-ref.info). One line description of project. +END-INFO-DIR-ENTRY + + + Generated by Sphinx 1.7.5. + + +File: gsl-ref.info, Node: Top, Next: Introduction, Up: (dir) + +GNU Scientific Library +********************** + + GSL 2.5, Jun 03, 2018 + + The GSL Team + + Copyright © 1996-2018 The GSL Team + +* Menu: + +* Introduction:: +* Using the Library:: +* Error Handling:: +* Mathematical Functions:: +* Complex Numbers:: +* Polynomials:: +* Special Functions:: +* Vectors and Matrices:: +* Permutations:: +* Combinations:: +* Multisets:: +* Sorting:: +* BLAS Support:: +* Linear Algebra:: +* Eigensystems:: +* Fast Fourier Transforms (FFTs): Fast Fourier Transforms FFTs. +* Numerical Integration:: +* Random Number Generation:: +* Quasi-Random Sequences:: +* Random Number Distributions:: +* Statistics:: +* Running Statistics:: +* Moving Window Statistics:: +* Digital Filtering:: +* Histograms:: +* N-tuples:: +* Monte Carlo Integration:: +* Simulated Annealing:: +* Ordinary Differential Equations:: +* Interpolation:: +* Numerical Differentiation:: +* Chebyshev Approximations:: +* Series Acceleration:: +* Wavelet Transforms:: +* Discrete Hankel Transforms:: +* One Dimensional Root-Finding:: +* One Dimensional Minimization:: +* Multidimensional Root-Finding:: +* Multidimensional Minimization:: +* Linear Least-Squares Fitting:: +* Nonlinear Least-Squares Fitting:: +* Basis Splines:: +* Sparse Matrices:: +* Sparse BLAS Support:: +* Sparse Linear Algebra:: +* Physical Constants:: +* IEEE floating-point arithmetic:: +* Debugging Numerical Programs:: +* Contributors to GSL:: +* Autoconf Macros:: +* GSL CBLAS Library:: +* GNU General Public License:: +* GNU Free Documentation License:: +* Index:: + + — The Detailed Node Listing — + +Introduction + +* Routines available in GSL:: +* GSL is Free Software:: +* Obtaining GSL:: +* No Warranty:: +* Reporting Bugs:: +* Further Information:: +* Conventions used in this manual:: + +Using the Library + +* An Example Program:: +* Compiling and Linking:: +* Shared Libraries:: +* ANSI C Compliance:: +* Inline functions:: +* Long double:: +* Portability functions:: +* Alternative optimized functions:: +* Support for different numeric types:: +* Compatibility with C++:: +* Aliasing of arrays:: +* Thread-safety:: +* Deprecated Functions:: +* Code Reuse:: + +Compiling and Linking + +* Linking programs with the library:: +* Linking with an alternative BLAS library:: + +Error Handling + +* Error Reporting:: +* Error Codes:: +* Error Handlers:: +* Using GSL error reporting in your own functions:: +* Examples:: + +Mathematical Functions + +* Mathematical Constants:: +* Infinities and Not-a-number:: +* Elementary Functions:: +* Small integer powers:: +* Testing the Sign of Numbers:: +* Testing for Odd and Even Numbers:: +* Maximum and Minimum functions:: +* Approximate Comparison of Floating Point Numbers:: + +Complex Numbers + +* Representation of complex numbers:: +* Properties of complex numbers:: +* Complex arithmetic operators:: +* Elementary Complex Functions:: +* Complex Trigonometric Functions:: +* Inverse Complex Trigonometric Functions:: +* Complex Hyperbolic Functions:: +* Inverse Complex Hyperbolic Functions:: +* References and Further Reading:: + +Polynomials + +* Polynomial Evaluation:: +* Divided Difference Representation of Polynomials:: +* Quadratic Equations:: +* Cubic Equations:: +* General Polynomial Equations:: +* Examples: Examples<2>. +* References and Further Reading: References and Further Reading<2>. + +Special Functions + +* Usage:: +* The gsl_sf_result struct:: +* Modes:: +* Airy Functions and Derivatives:: +* Bessel Functions:: +* Clausen Functions:: +* Coulomb Functions:: +* Coupling Coefficients:: +* Dawson Function:: +* Debye Functions:: +* Dilogarithm:: +* Elementary Operations:: +* Elliptic Integrals:: +* Elliptic Functions (Jacobi): Elliptic Functions Jacobi. +* Error Functions:: +* Exponential Functions:: +* Exponential Integrals:: +* Fermi-Dirac Function:: +* Gamma and Beta Functions:: +* Gegenbauer Functions:: +* Hermite Polynomials and Functions:: +* Hypergeometric Functions:: +* Laguerre Functions:: +* Lambert W Functions:: +* Legendre Functions and Spherical Harmonics:: +* Logarithm and Related Functions:: +* Mathieu Functions:: +* Power Function:: +* Psi (Digamma) Function: Psi Digamma Function. +* Synchrotron Functions:: +* Transport Functions:: +* Trigonometric Functions:: +* Zeta Functions:: +* Examples: Examples<3>. +* References and Further Reading: References and Further Reading<3>. + +Airy Functions and Derivatives + +* Airy Functions:: +* Derivatives of Airy Functions:: +* Zeros of Airy Functions:: +* Zeros of Derivatives of Airy Functions:: + +Bessel Functions + +* Regular Cylindrical Bessel Functions:: +* Irregular Cylindrical Bessel Functions:: +* Regular Modified Cylindrical Bessel Functions:: +* Irregular Modified Cylindrical Bessel Functions:: +* Regular Spherical Bessel Functions:: +* Irregular Spherical Bessel Functions:: +* Regular Modified Spherical Bessel Functions:: +* Irregular Modified Spherical Bessel Functions:: +* Regular Bessel Function—Fractional Order:: +* Irregular Bessel Functions—Fractional Order:: +* Regular Modified Bessel Functions—Fractional Order:: +* Irregular Modified Bessel Functions—Fractional Order:: +* Zeros of Regular Bessel Functions:: + +Coulomb Functions + +* Normalized Hydrogenic Bound States:: +* Coulomb Wave Functions:: +* Coulomb Wave Function Normalization Constant:: + +Coupling Coefficients + +* 3-j Symbols:: +* 6-j Symbols:: +* 9-j Symbols:: + +Dilogarithm + +* Real Argument:: +* Complex Argument:: + +Elliptic Integrals + +* Definition of Legendre Forms:: +* Definition of Carlson Forms:: +* Legendre Form of Complete Elliptic Integrals:: +* Legendre Form of Incomplete Elliptic Integrals:: +* Carlson Forms:: + +Error Functions + +* Error Function:: +* Complementary Error Function:: +* Log Complementary Error Function:: +* Probability functions:: + +Exponential Functions + +* Exponential Function:: +* Relative Exponential Functions:: +* Exponentiation With Error Estimate:: + +Exponential Integrals + +* Exponential Integral:: +* Ei(x): Ei x. +* Hyperbolic Integrals:: +* Ei_3(x): Ei_3 x. +* Trigonometric Integrals:: +* Arctangent Integral:: + +Fermi-Dirac Function + +* Complete Fermi-Dirac Integrals:: +* Incomplete Fermi-Dirac Integrals:: + +Gamma and Beta Functions + +* Gamma Functions:: +* Factorials:: +* Pochhammer Symbol:: +* Incomplete Gamma Functions:: +* Beta Functions:: +* Incomplete Beta Function:: + +Hermite Polynomials and Functions + +* Hermite Polynomials:: +* Hermite Functions:: +* Derivatives of Hermite Polynomials:: +* Derivatives of Hermite Functions:: +* Zeros of Hermite Polynomials and Hermite Functions:: + +Legendre Functions and Spherical Harmonics + +* Legendre Polynomials:: +* Associated Legendre Polynomials and Spherical Harmonics:: +* Conical Functions:: +* Radial Functions for Hyperbolic Space:: + +Mathieu Functions + +* Mathieu Function Workspace:: +* Mathieu Function Characteristic Values:: +* Angular Mathieu Functions:: +* Radial Mathieu Functions:: + +Psi (Digamma) Function + +* Digamma Function:: +* Trigamma Function:: +* Polygamma Function:: + +Trigonometric Functions + +* Circular Trigonometric Functions:: +* Trigonometric Functions for Complex Arguments:: +* Hyperbolic Trigonometric Functions:: +* Conversion Functions:: +* Restriction Functions:: +* Trigonometric Functions With Error Estimates:: + +Zeta Functions + +* Riemann Zeta Function:: +* Riemann Zeta Function Minus One:: +* Hurwitz Zeta Function:: +* Eta Function:: + +Vectors and Matrices + +* Data types:: +* Blocks:: +* Vectors:: +* Matrices:: + +Blocks + +* Block allocation:: +* Reading and writing blocks:: +* Example programs for blocks:: + +Vectors + +* Vector allocation:: +* Accessing vector elements:: +* Initializing vector elements:: +* Reading and writing vectors:: +* Vector views:: +* Copying vectors:: +* Exchanging elements:: +* Vector operations:: +* Finding maximum and minimum elements of vectors:: +* Vector properties:: +* Example programs for vectors:: + +Matrices + +* Matrix allocation:: +* Accessing matrix elements:: +* Initializing matrix elements:: +* Reading and writing matrices:: +* Matrix views:: +* Creating row and column views:: +* Copying matrices:: +* Copying rows and columns:: +* Exchanging rows and columns:: +* Matrix operations:: +* Finding maximum and minimum elements of matrices:: +* Matrix properties:: +* Example programs for matrices:: +* References and Further Reading: References and Further Reading<4>. + +Permutations + +* The Permutation struct:: +* Permutation allocation:: +* Accessing permutation elements:: +* Permutation properties:: +* Permutation functions:: +* Applying Permutations:: +* Reading and writing permutations:: +* Permutations in cyclic form:: +* Examples: Examples<4>. +* References and Further Reading: References and Further Reading<5>. + +Combinations + +* The Combination struct:: +* Combination allocation:: +* Accessing combination elements:: +* Combination properties:: +* Combination functions:: +* Reading and writing combinations:: +* Examples: Examples<5>. +* References and Further Reading: References and Further Reading<6>. + +Multisets + +* The Multiset struct:: +* Multiset allocation:: +* Accessing multiset elements:: +* Multiset properties:: +* Multiset functions:: +* Reading and writing multisets:: +* Examples: Examples<6>. + +Sorting + +* Sorting objects:: +* Sorting vectors:: +* Selecting the k smallest or largest elements:: +* Computing the rank:: +* Examples: Examples<7>. +* References and Further Reading: References and Further Reading<7>. + +BLAS Support + +* GSL BLAS Interface:: +* Examples: Examples<8>. +* References and Further Reading: References and Further Reading<8>. + +GSL BLAS Interface + +* Level 1:: +* Level 2:: +* Level 3:: + +Linear Algebra + +* LU Decomposition:: +* QR Decomposition:: +* QR Decomposition with Column Pivoting:: +* Complete Orthogonal Decomposition:: +* Singular Value Decomposition:: +* Cholesky Decomposition:: +* Pivoted Cholesky Decomposition:: +* Modified Cholesky Decomposition:: +* Tridiagonal Decomposition of Real Symmetric Matrices:: +* Tridiagonal Decomposition of Hermitian Matrices:: +* Hessenberg Decomposition of Real Matrices:: +* Hessenberg-Triangular Decomposition of Real Matrices:: +* Bidiagonalization:: +* Givens Rotations:: +* Householder Transformations:: +* Householder solver for linear systems:: +* Tridiagonal Systems:: +* Triangular Systems:: +* Balancing:: +* Examples: Examples<9>. +* References and Further Reading: References and Further Reading<9>. + +Eigensystems + +* Real Symmetric Matrices:: +* Complex Hermitian Matrices:: +* Real Nonsymmetric Matrices:: +* Real Generalized Symmetric-Definite Eigensystems:: +* Complex Generalized Hermitian-Definite Eigensystems:: +* Real Generalized Nonsymmetric Eigensystems:: +* Sorting Eigenvalues and Eigenvectors:: +* Examples: Examples<10>. +* References and Further Reading: References and Further Reading<10>. + +Fast Fourier Transforms (FFTs) + +* Mathematical Definitions:: +* Overview of complex data FFTs:: +* Radix-2 FFT routines for complex data:: +* Mixed-radix FFT routines for complex data:: +* Overview of real data FFTs:: +* Radix-2 FFT routines for real data:: +* Mixed-radix FFT routines for real data:: +* References and Further Reading: References and Further Reading<11>. + +Numerical Integration + +* Introduction: Introduction<2>. +* QNG non-adaptive Gauss-Kronrod integration:: +* QAG adaptive integration:: +* QAGS adaptive integration with singularities:: +* QAGP adaptive integration with known singular points:: +* QAGI adaptive integration on infinite intervals:: +* QAWC adaptive integration for Cauchy principal values:: +* QAWS adaptive integration for singular functions:: +* QAWO adaptive integration for oscillatory functions:: +* QAWF adaptive integration for Fourier integrals:: +* CQUAD doubly-adaptive integration:: +* Romberg integration:: +* Gauss-Legendre integration:: +* Fixed point quadratures:: +* Error codes:: +* Examples: Examples<11>. +* References and Further Reading: References and Further Reading<12>. + +Introduction + +* Integrands without weight functions:: +* Integrands with weight functions:: +* Integrands with singular weight functions:: + +Examples + +* Adaptive integration example:: +* Fixed-point quadrature example:: + +Random Number Generation + +* General comments on random numbers:: +* The Random Number Generator Interface:: +* Random number generator initialization:: +* Sampling from a random number generator:: +* Auxiliary random number generator functions:: +* Random number environment variables:: +* Copying random number generator state:: +* Reading and writing random number generator state:: +* Random number generator algorithms:: +* Unix random number generators:: +* Other random number generators:: +* Performance:: +* Examples: Examples<12>. +* References and Further Reading: References and Further Reading<13>. +* Acknowledgements:: + +Quasi-Random Sequences + +* Quasi-random number generator initialization:: +* Sampling from a quasi-random number generator:: +* Auxiliary quasi-random number generator functions:: +* Saving and restoring quasi-random number generator state:: +* Quasi-random number generator algorithms:: +* Examples: Examples<13>. +* References:: + +Random Number Distributions + +* Introduction: Introduction<3>. +* The Gaussian Distribution:: +* The Gaussian Tail Distribution:: +* The Bivariate Gaussian Distribution:: +* The Multivariate Gaussian Distribution:: +* The Exponential Distribution:: +* The Laplace Distribution:: +* The Exponential Power Distribution:: +* The Cauchy Distribution:: +* The Rayleigh Distribution:: +* The Rayleigh Tail Distribution:: +* The Landau Distribution:: +* The Levy alpha-Stable Distributions:: +* The Levy skew alpha-Stable Distribution:: +* The Gamma Distribution:: +* The Flat (Uniform) Distribution: The Flat Uniform Distribution. +* The Lognormal Distribution:: +* The Chi-squared Distribution:: +* The F-distribution:: +* The t-distribution:: +* The Beta Distribution:: +* The Logistic Distribution:: +* The Pareto Distribution:: +* Spherical Vector Distributions:: +* The Weibull Distribution:: +* The Type-1 Gumbel Distribution:: +* The Type-2 Gumbel Distribution:: +* The Dirichlet Distribution:: +* General Discrete Distributions:: +* The Poisson Distribution:: +* The Bernoulli Distribution:: +* The Binomial Distribution:: +* The Multinomial Distribution:: +* The Negative Binomial Distribution:: +* The Pascal Distribution:: +* The Geometric Distribution:: +* The Hypergeometric Distribution:: +* The Logarithmic Distribution:: +* The Wishart Distribution:: +* Shuffling and Sampling:: +* Examples: Examples<14>. +* References and Further Reading: References and Further Reading<14>. + +Statistics + +* Mean, Standard Deviation and Variance: Mean Standard Deviation and Variance. +* Absolute deviation:: +* Higher moments (skewness and kurtosis): Higher moments skewness and kurtosis. +* Autocorrelation:: +* Covariance:: +* Correlation:: +* Weighted Samples:: +* Maximum and Minimum values:: +* Median and Percentiles:: +* Order Statistics:: +* Robust Location Estimates:: +* Robust Scale Estimates:: +* Examples: Examples<15>. +* References and Further Reading: References and Further Reading<15>. + +Robust Location Estimates + +* Trimmed Mean:: +* Gastwirth Estimator:: + +Robust Scale Estimates + +* Median Absolute Deviation (MAD): Median Absolute Deviation MAD. +* Statistic:: +* Statistic: Statistic<2>. + +Running Statistics + +* Initializing the Accumulator:: +* Adding Data to the Accumulator:: +* Current Statistics:: +* Quantiles:: +* Examples: Examples<16>. +* References and Further Reading: References and Further Reading<16>. + +Moving Window Statistics + +* Introduction: Introduction<4>. +* Handling Endpoints:: +* Allocation for Moving Window Statistics:: +* Moving Mean:: +* Moving Variance and Standard Deviation:: +* Moving Minimum and Maximum:: +* Moving Sum:: +* Moving Median:: +* Robust Scale Estimation:: +* User-defined Moving Statistics:: +* Accumulators:: +* Examples: Examples<17>. +* References and Further Reading: References and Further Reading<17>. + +Robust Scale Estimation + +* Moving MAD:: +* Moving QQR:: +* Moving:: +* Moving: Moving<2>. + +Examples + +* Example 1:: +* Example 2; Robust Scale: Example 2 Robust Scale. +* Example 3; User-defined Moving Window: Example 3 User-defined Moving Window. + +Digital Filtering + +* Introduction: Introduction<5>. +* Handling Endpoints: Handling Endpoints<2>. +* Linear Digital Filters:: +* Nonlinear Digital Filters:: +* Examples: Examples<18>. + +Linear Digital Filters + +* Gaussian Filter:: + +Nonlinear Digital Filters + +* Standard Median Filter:: +* Recursive Median Filter:: +* Impulse Detection Filter:: + +Examples + +* Gaussian Example 1:: +* Gaussian Example 2:: +* Square Wave Signal Example:: +* Impulse Detection Example:: + +Histograms + +* The histogram struct:: +* Histogram allocation:: +* Copying Histograms:: +* Updating and accessing histogram elements:: +* Searching histogram ranges:: +* Histogram Statistics:: +* Histogram Operations:: +* Reading and writing histograms:: +* Resampling from histograms:: +* The histogram probability distribution struct:: +* Example programs for histograms:: +* Two dimensional histograms:: +* The 2D histogram struct:: +* 2D Histogram allocation:: +* Copying 2D Histograms:: +* Updating and accessing 2D histogram elements:: +* Searching 2D histogram ranges:: +* 2D Histogram Statistics:: +* 2D Histogram Operations:: +* Reading and writing 2D histograms:: +* Resampling from 2D histograms:: +* Example programs for 2D histograms:: + +N-tuples + +* The ntuple struct:: +* Creating ntuples:: +* Opening an existing ntuple file:: +* Writing ntuples:: +* Reading ntuples:: +* Closing an ntuple file:: +* Histogramming ntuple values:: +* Examples: Examples<19>. +* References and Further Reading: References and Further Reading<18>. + +Monte Carlo Integration + +* Interface:: +* PLAIN Monte Carlo:: +* MISER:: +* VEGAS:: +* Examples: Examples<20>. +* References and Further Reading: References and Further Reading<19>. + +Simulated Annealing + +* Simulated Annealing algorithm:: +* Simulated Annealing functions:: +* Examples: Examples<21>. +* References and Further Reading: References and Further Reading<20>. + +Examples + +* Trivial example:: +* Traveling Salesman Problem:: + +Ordinary Differential Equations + +* Defining the ODE System:: +* Stepping Functions:: +* Adaptive Step-size Control:: +* Evolution:: +* Driver:: +* Examples: Examples<22>. +* References and Further Reading: References and Further Reading<21>. + +Interpolation + +* Introduction to 1D Interpolation:: +* 1D Interpolation Functions:: +* 1D Interpolation Types:: +* 1D Index Look-up and Acceleration:: +* 1D Evaluation of Interpolating Functions:: +* 1D Higher-level Interface:: +* 1D Interpolation Example Programs:: +* Introduction to 2D Interpolation:: +* 2D Interpolation Functions:: +* 2D Interpolation Grids:: +* 2D Interpolation Types:: +* 2D Evaluation of Interpolating Functions:: +* 2D Higher-level Interface:: +* 2D Interpolation Example programs:: +* References and Further Reading: References and Further Reading<22>. + +Numerical Differentiation + +* Functions:: +* Examples: Examples<23>. +* References and Further Reading: References and Further Reading<23>. + +Chebyshev Approximations + +* Definitions:: +* Creation and Calculation of Chebyshev Series:: +* Auxiliary Functions:: +* Chebyshev Series Evaluation:: +* Derivatives and Integrals:: +* Examples: Examples<24>. +* References and Further Reading: References and Further Reading<24>. + +Series Acceleration + +* Acceleration functions:: +* Acceleration functions without error estimation:: +* Examples: Examples<25>. +* References and Further Reading: References and Further Reading<25>. + +Wavelet Transforms + +* Definitions: Definitions<2>. +* Initialization:: +* Transform Functions:: +* Examples: Examples<26>. +* References and Further Reading: References and Further Reading<26>. + +Transform Functions + +* Wavelet transforms in one dimension:: +* Wavelet transforms in two dimension:: + +Discrete Hankel Transforms + +* Definitions: Definitions<3>. +* Functions: Functions<2>. +* References and Further Reading: References and Further Reading<27>. + +One Dimensional Root-Finding + +* Overview:: +* Caveats:: +* Initializing the Solver:: +* Providing the function to solve:: +* Search Bounds and Guesses:: +* Iteration:: +* Search Stopping Parameters:: +* Root Bracketing Algorithms:: +* Root Finding Algorithms using Derivatives:: +* Examples: Examples<27>. +* References and Further Reading: References and Further Reading<28>. + +One Dimensional Minimization + +* Overview: Overview<2>. +* Caveats: Caveats<2>. +* Initializing the Minimizer:: +* Providing the function to minimize:: +* Iteration: Iteration<2>. +* Stopping Parameters:: +* Minimization Algorithms:: +* Examples: Examples<28>. +* References and Further Reading: References and Further Reading<29>. + +Multidimensional Root-Finding + +* Overview: Overview<3>. +* Initializing the Solver: Initializing the Solver<2>. +* Providing the function to solve: Providing the function to solve<2>. +* Iteration: Iteration<3>. +* Search Stopping Parameters: Search Stopping Parameters<2>. +* Algorithms using Derivatives:: +* Algorithms without Derivatives:: +* Examples: Examples<29>. +* References and Further Reading: References and Further Reading<30>. + +Multidimensional Minimization + +* Overview: Overview<4>. +* Caveats: Caveats<3>. +* Initializing the Multidimensional Minimizer:: +* Providing a function to minimize:: +* Iteration: Iteration<4>. +* Stopping Criteria:: +* Algorithms with Derivatives:: +* Algorithms without Derivatives: Algorithms without Derivatives<2>. +* Examples: Examples<30>. +* References and Further Reading: References and Further Reading<31>. + +Linear Least-Squares Fitting + +* Overview: Overview<5>. +* Linear regression:: +* Multi-parameter regression:: +* Regularized regression:: +* Robust linear regression:: +* Large dense linear systems:: +* Troubleshooting:: +* Examples: Examples<31>. +* References and Further Reading: References and Further Reading<32>. + +Linear regression + +* Linear regression with a constant term:: +* Linear regression without a constant term:: + +Large dense linear systems + +* Normal Equations Approach:: +* Tall Skinny QR (TSQR) Approach: Tall Skinny QR TSQR Approach. +* Large Dense Linear Systems Solution Steps:: +* Large Dense Linear Least Squares Routines:: + +Examples + +* Simple Linear Regression Example:: +* Multi-parameter Linear Regression Example:: +* Regularized Linear Regression Example 1:: +* Regularized Linear Regression Example 2:: +* Robust Linear Regression Example:: +* Large Dense Linear Regression Example:: + +Nonlinear Least-Squares Fitting + +* Overview: Overview<6>. +* Solving the Trust Region Subproblem (TRS): Solving the Trust Region Subproblem TRS. +* Weighted Nonlinear Least-Squares:: +* Tunable Parameters:: +* Initializing the Solver: Initializing the Solver<3>. +* Providing the Function to be Minimized:: +* Iteration: Iteration<5>. +* Testing for Convergence:: +* High Level Driver:: +* Covariance matrix of best fit parameters:: +* Troubleshooting: Troubleshooting<2>. +* Examples: Examples<32>. +* References and Further Reading: References and Further Reading<33>. + +Solving the Trust Region Subproblem (TRS) + +* Levenberg-Marquardt:: +* Levenberg-Marquardt with Geodesic Acceleration:: +* Dogleg:: +* Double Dogleg:: +* Two Dimensional Subspace:: +* Steihaug-Toint Conjugate Gradient:: + +Examples + +* Exponential Fitting Example:: +* Geodesic Acceleration Example 1:: +* Geodesic Acceleration Example 2:: +* Comparing TRS Methods Example:: +* Large Nonlinear Least Squares Example:: + +Basis Splines + +* Overview: Overview<7>. +* Initializing the B-splines solver:: +* Constructing the knots vector:: +* Evaluation of B-splines:: +* Evaluation of B-spline derivatives:: +* Working with the Greville abscissae:: +* Examples: Examples<33>. +* References and Further Reading: References and Further Reading<34>. + +Sparse Matrices + +* Overview: Overview<8>. +* Allocation:: +* Accessing Matrix Elements:: +* Initializing Matrix Elements:: +* Reading and Writing Matrices:: +* Copying Matrices:: +* Exchanging Rows and Columns:: +* Matrix Operations:: +* Matrix Properties:: +* Finding Maximum and Minimum Elements:: +* Compressed Format:: +* Conversion Between Sparse and Dense Matrices:: +* Examples: Examples<34>. +* References and Further Reading: References and Further Reading<35>. + +Sparse BLAS Support + +* Sparse BLAS operations:: +* References and Further Reading: References and Further Reading<36>. + +Sparse Linear Algebra + +* Overview: Overview<9>. +* Sparse Iterative Solvers:: +* Examples: Examples<35>. +* References and Further Reading: References and Further Reading<37>. + +Sparse Iterative Solvers + +* Overview: Overview<10>. +* Types of Sparse Iterative Solvers:: +* Iterating the Sparse Linear System:: + +Physical Constants + +* Fundamental Constants:: +* Astronomy and Astrophysics:: +* Atomic and Nuclear Physics:: +* Measurement of Time:: +* Imperial Units:: +* Speed and Nautical Units:: +* Printers Units:: +* Volume, Area and Length: Volume Area and Length. +* Mass and Weight:: +* Thermal Energy and Power:: +* Pressure:: +* Viscosity:: +* Light and Illumination:: +* Radioactivity:: +* Force and Energy:: +* Prefixes:: +* Examples: Examples<36>. +* References and Further Reading: References and Further Reading<38>. + +IEEE floating-point arithmetic + +* Representation of floating point numbers:: +* Setting up your IEEE environment:: +* References and Further Reading: References and Further Reading<39>. + +Debugging Numerical Programs + +* Using gdb:: +* Examining floating point registers:: +* Handling floating point exceptions:: +* GCC warning options for numerical programs:: +* References and Further Reading: References and Further Reading<40>. + +GSL CBLAS Library + +* Level 1: Level 1<2>. +* Level 2: Level 2<2>. +* Level 3: Level 3<2>. +* Examples: Examples<37>. + + + +File: gsl-ref.info, Node: Introduction, Next: Using the Library, Prev: Top, Up: Top + +1 Introduction +************** + +The GNU Scientific Library (GSL) is a collection of routines for +numerical computing. The routines have been written from scratch in C, +and present a modern Applications Programming Interface (API) for C +programmers, allowing wrappers to be written for very high level +languages. The source code is distributed under the GNU General Public +License. + +* Menu: + +* Routines available in GSL:: +* GSL is Free Software:: +* Obtaining GSL:: +* No Warranty:: +* Reporting Bugs:: +* Further Information:: +* Conventions used in this manual:: + + +File: gsl-ref.info, Node: Routines available in GSL, Next: GSL is Free Software, Up: Introduction + +1.1 Routines available in GSL +============================= + +The library covers a wide range of topics in numerical computing. +Routines are available for the following areas, + +Complex Numbers Roots of Polynomials Special Functions + + +Vectors and Matrices Permutations Combinations + + +Sorting BLAS Support Linear Algebra + + +CBLAS Library Fast Fourier Transforms Eigensystems + + +Random Numbers Quadrature Random Distributions + + +Quasi-Random Sequences Histograms Statistics + + +Monte Carlo Integration N-Tuples Differential Equations + + +Simulated Annealing Numerical Differentiation Interpolation + + +Series Acceleration Chebyshev Approximations Root-Finding + + +Discrete Hankel Transforms Least-Squares Fitting Minimization + + +IEEE Floating-Point Physical Constants Basis Splines + + +Wavelets Sparse BLAS Support Sparse Linear Algebra + + +The use of these routines is described in this manual. Each chapter +provides detailed definitions of the functions, followed by example +programs and references to the articles on which the algorithms are +based. + +Where possible the routines have been based on reliable public-domain +packages such as FFTPACK and QUADPACK, which the developers of GSL have +reimplemented in C with modern coding conventions. + + +File: gsl-ref.info, Node: GSL is Free Software, Next: Obtaining GSL, Prev: Routines available in GSL, Up: Introduction + +1.2 GSL is Free Software +======================== + +The subroutines in the GNU Scientific Library are “free software”; this +means that everyone is free to use them, and to redistribute them in +other free programs. The library is not in the public domain; it is +copyrighted and there are conditions on its distribution. These +conditions are designed to permit everything that a good cooperating +citizen would want to do. What is not allowed is to try to prevent +others from further sharing any version of the software that they might +get from you. + +Specifically, we want to make sure that you have the right to share +copies of programs that you are given which use the GNU Scientific +Library, that you receive their source code or else can get it if you +want it, that you can change these programs or use pieces of them in new +free programs, and that you know you can do these things. + +To make sure that everyone has such rights, we have to forbid you to +deprive anyone else of these rights. For example, if you distribute +copies of any code which uses the GNU Scientific Library, you must give +the recipients all the rights that you have received. You must make +sure that they, too, receive or can get the source code, both to the +library and the code which uses it. And you must tell them their +rights. This means that the library should not be redistributed in +proprietary programs. + +Also, for our own protection, we must make certain that everyone finds +out that there is no warranty for the GNU Scientific Library. If these +programs are modified by someone else and passed on, we want their +recipients to know that what they have is not what we distributed, so +that any problems introduced by others will not reflect on our +reputation. + +The precise conditions for the distribution of software related to the +GNU Scientific Library are found in the GNU General Public License(1). +Further information about this license is available from the GNU Project +webpage Frequently Asked Questions about the GNU GPL(2). + +The Free Software Foundation also operates a license consulting service +for commercial users (contact details available from +‘http://www.fsf.org’. + + ---------- Footnotes ---------- + + (1) +https://www.gnu.org/software/gsl/manual/html_node/GNU-General-Public-License.html#GNU-General-Public-License + + (2) http://www.gnu.org/copyleft/gpl-faq.html + + +File: gsl-ref.info, Node: Obtaining GSL, Next: No Warranty, Prev: GSL is Free Software, Up: Introduction + +1.3 Obtaining GSL +================= + +The source code for the library can be obtained in different ways, by +copying it from a friend, purchasing it on CDROM or downloading it from +the internet. A list of public ftp servers which carry the source code +can be found on the GNU website, ‘http://www.gnu.org/software/gsl/’. + +The preferred platform for the library is a GNU system, which allows it +to take advantage of additional features in the GNU C compiler and GNU C +library. However, the library is fully portable and should compile on +most systems with a C compiler. + +Announcements of new releases, updates and other relevant events are +made on the mailing list. To subscribe to this +low-volume list, send an email of the following form: + + To: info-gsl-request@gnu.org + Subject: subscribe + +You will receive a response asking you to reply in order to confirm your +subscription. + + +File: gsl-ref.info, Node: No Warranty, Next: Reporting Bugs, Prev: Obtaining GSL, Up: Introduction + +1.4 No Warranty +=============== + +The software described in this manual has no warranty, it is provided +“as is”. It is your responsibility to validate the behavior of the +routines and their accuracy using the source code provided, or to +purchase support and warranties from commercial redistributors. Consult +the GNU General Public License(1) for further details. + + ---------- Footnotes ---------- + + (1) +https://www.gnu.org/software/gsl/manual/html_node/GNU-General-Public-License.html#GNU-General-Public-License + + +File: gsl-ref.info, Node: Reporting Bugs, Next: Further Information, Prev: No Warranty, Up: Introduction + +1.5 Reporting Bugs +================== + +A list of known bugs can be found in the ‘BUGS’ file included in the GSL +distribution or online in the GSL bug tracker. (1) Details of +compilation problems can be found in the ‘INSTALL’ file. + +If you find a bug which is not listed in these files, please report it +to . + +All bug reports should include: + + - The version number of GSL + + - The hardware and operating system + + - The compiler used, including version number and compilation options + + - A description of the bug behavior + + - A short program which exercises the bug + +It is useful if you can check whether the same problem occurs when the +library is compiled without optimization. Thank you. + +Any errors or omissions in this manual can also be reported to the same +address. + + ---------- Footnotes ---------- + + (1) ‘http://savannah.gnu.org/bugs/?group=gsl’ + + +File: gsl-ref.info, Node: Further Information, Next: Conventions used in this manual, Prev: Reporting Bugs, Up: Introduction + +1.6 Further Information +======================= + +Additional information, including online copies of this manual, links to +related projects, and mailing list archives are available from the +website mentioned above. + +Any questions about the use and installation of the library can be asked +on the mailing list . To subscribe to this list, send +an email of the following form: + + To: help-gsl-request@gnu.org + Subject: subscribe + +This mailing list can be used to ask questions not covered by this +manual, and to contact the developers of the library. + +If you would like to refer to the GNU Scientific Library in a journal +article, the recommended way is to cite this reference manual, e.g.: + + M. Galassi et al, GNU Scientific Library Reference Manual (3rd Ed.), ISBN 0954612078. + +If you want to give a url, use “‘http://www.gnu.org/software/gsl/’”. + + +File: gsl-ref.info, Node: Conventions used in this manual, Prev: Further Information, Up: Introduction + +1.7 Conventions used in this manual +=================================== + +This manual contains many examples which can be typed at the keyboard. +A command entered at the terminal is shown like this: + + $ command + +The first character on the line is the terminal prompt, and should not +be typed. The dollar sign $ is used as the standard prompt in this +manual, although some systems may use a different character. + +The examples assume the use of the GNU operating system. There may be +minor differences in the output on other systems. The commands for +setting environment variables use the Bourne shell syntax of the +standard GNU shell (‘bash’). + + +File: gsl-ref.info, Node: Using the Library, Next: Error Handling, Prev: Introduction, Up: Top + +2 Using the Library +******************* + +This chapter describes how to compile programs that use GSL, and +introduces its conventions. + +* Menu: + +* An Example Program:: +* Compiling and Linking:: +* Shared Libraries:: +* ANSI C Compliance:: +* Inline functions:: +* Long double:: +* Portability functions:: +* Alternative optimized functions:: +* Support for different numeric types:: +* Compatibility with C++:: +* Aliasing of arrays:: +* Thread-safety:: +* Deprecated Functions:: +* Code Reuse:: + + +File: gsl-ref.info, Node: An Example Program, Next: Compiling and Linking, Up: Using the Library + +2.1 An Example Program +====================== + +The following short program demonstrates the use of the library by +computing the value of the Bessel function J_0(x) for x=5: + + #include + #include + + int + main (void) + { + double x = 5.0; + double y = gsl_sf_bessel_J0 (x); + printf ("J0(%g) = %.18e\n", x, y); + return 0; + } + +The output is shown below, and should be correct to double-precision +accuracy (1), + + J0(5) = -1.775967713143382642e-01 + +The steps needed to compile this program are described in the following +sections. + + ---------- Footnotes ---------- + + (1) The last few digits may vary slightly depending on the compiler +and platform used—this is normal + + +File: gsl-ref.info, Node: Compiling and Linking, Next: Shared Libraries, Prev: An Example Program, Up: Using the Library + +2.2 Compiling and Linking +========================= + +The library header files are installed in their own ‘gsl’ directory. +You should write any preprocessor include statements with a ‘gsl/’ +directory prefix thus: + + #include + +If the directory is not installed on the standard search path of your +compiler you will also need to provide its location to the preprocessor +as a command line flag. The default location of the ‘gsl’ directory is +‘/usr/local/include/gsl’. A typical compilation command for a source +file ‘example.c’ with the GNU C compiler ‘gcc’ is: + + $ gcc -Wall -I/usr/local/include -c example.c + +This results in an object file ‘example.o’. The default include path +for ‘gcc’ searches ‘/usr/local/include’ automatically so the ‘-I’ option +can actually be omitted when GSL is installed in its default location. + +* Menu: + +* Linking programs with the library:: +* Linking with an alternative BLAS library:: + + +File: gsl-ref.info, Node: Linking programs with the library, Next: Linking with an alternative BLAS library, Up: Compiling and Linking + +2.2.1 Linking programs with the library +--------------------------------------- + +The library is installed as a single file, ‘libgsl.a’. A shared version +of the library ‘libgsl.so’ is also installed on systems that support +shared libraries. The default location of these files is +‘/usr/local/lib’. If this directory is not on the standard search path +of your linker you will also need to provide its location as a command +line flag. + +To link against the library you need to specify both the main library +and a supporting CBLAS library, which provides standard basic linear +algebra subroutines. A suitable CBLAS implementation is provided in the +library ‘libgslcblas.a’ if your system does not provide one. The +following example shows how to link an application with the library: + + $ gcc -L/usr/local/lib example.o -lgsl -lgslcblas -lm + +The default library path for ‘gcc’ searches ‘/usr/local/lib’ +automatically so the ‘-L’ option can be omitted when GSL is installed in +its default location. + +The option ‘-lm’ links with the system math library. On some systems it +is not needed. (1) + +For a tutorial introduction to the GNU C Compiler and related programs, +see “An Introduction to GCC” (ISBN 0954161793). (2) + + ---------- Footnotes ---------- + + (1) It is not needed on MacOS X + + (2) ‘http://www.network-theory.co.uk/gcc/intro/’ + + +File: gsl-ref.info, Node: Linking with an alternative BLAS library, Prev: Linking programs with the library, Up: Compiling and Linking + +2.2.2 Linking with an alternative BLAS library +---------------------------------------------- + +The following command line shows how you would link the same application +with an alternative CBLAS library ‘libcblas.a’: + + $ gcc example.o -lgsl -lcblas -lm + +For the best performance an optimized platform-specific CBLAS library +should be used for ‘-lcblas’. The library must conform to the CBLAS +standard. The ATLAS package provides a portable high-performance BLAS +library with a CBLAS interface. It is free software and should be +installed for any work requiring fast vector and matrix operations. The +following command line will link with the ATLAS library and its CBLAS +interface: + + $ gcc example.o -lgsl -lcblas -latlas -lm + +If the ATLAS library is installed in a non-standard directory use the +‘-L’ option to add it to the search path, as described above. + +For more information about BLAS functions see *note BLAS Support: 11. + + +File: gsl-ref.info, Node: Shared Libraries, Next: ANSI C Compliance, Prev: Compiling and Linking, Up: Using the Library + +2.3 Shared Libraries +==================== + +To run a program linked with the shared version of the library the +operating system must be able to locate the corresponding ‘.so’ file at +runtime. If the library cannot be found, the following error will +occur: + + $ ./a.out + ./a.out: error while loading shared libraries: + libgsl.so.0: cannot open shared object file: No such file or directory + +To avoid this error, either modify the system dynamic linker +configuration (1) or define the shell variable ‘LD_LIBRARY_PATH’ to +include the directory where the library is installed. + +For example, in the Bourne shell (‘/bin/sh’ or ‘/bin/bash’), the library +search path can be set with the following commands: + + $ LD_LIBRARY_PATH=/usr/local/lib + $ export LD_LIBRARY_PATH + $ ./example + +In the C-shell (‘/bin/csh’ or ‘/bin/tcsh’) the equivalent command is: + + % setenv LD_LIBRARY_PATH /usr/local/lib + +The standard prompt for the C-shell in the example above is the percent +character %, and should not be typed as part of the command. + +To save retyping these commands each session they can be placed in an +individual or system-wide login file. + +To compile a statically linked version of the program, use the ‘-static’ +flag in ‘gcc’: + + $ gcc -static example.o -lgsl -lgslcblas -lm + + ---------- Footnotes ---------- + + (1) ‘/etc/ld.so.conf’ on GNU/Linux systems + + +File: gsl-ref.info, Node: ANSI C Compliance, Next: Inline functions, Prev: Shared Libraries, Up: Using the Library + +2.4 ANSI C Compliance +===================== + +The library is written in ANSI C and is intended to conform to the ANSI +C standard (C89). It should be portable to any system with a working +ANSI C compiler. + +The library does not rely on any non-ANSI extensions in the interface it +exports to the user. Programs you write using GSL can be ANSI +compliant. Extensions which can be used in a way compatible with pure +ANSI C are supported, however, via conditional compilation. This allows +the library to take advantage of compiler extensions on those platforms +which support them. + +When an ANSI C feature is known to be broken on a particular system the +library will exclude any related functions at compile-time. This should +make it impossible to link a program that would use these functions and +give incorrect results. + +To avoid namespace conflicts all exported function names and variables +have the prefix ‘gsl_’, while exported macros have the prefix ‘GSL_’. + + +File: gsl-ref.info, Node: Inline functions, Next: Long double, Prev: ANSI C Compliance, Up: Using the Library + +2.5 Inline functions +==================== + +The ‘inline’ keyword is not part of the original ANSI C standard (C89) +so the library does not export any inline function definitions by +default. Inline functions were introduced officially in the newer C99 +standard but most C89 compilers have also included ‘inline’ as an +extension for a long time. + +To allow the use of inline functions, the library provides optional +inline versions of performance-critical routines by conditional +compilation in the exported header files. The inline versions of these +functions can be included by defining the macro ‘HAVE_INLINE’ when +compiling an application: + + $ gcc -Wall -c -DHAVE_INLINE example.c + +If you use ‘autoconf’ this macro can be defined automatically. If you +do not define the macro ‘HAVE_INLINE’ then the slower non-inlined +versions of the functions will be used instead. + +By default, the actual form of the inline keyword is ‘extern inline’, +which is a ‘gcc’ extension that eliminates unnecessary function +definitions. If the form ‘extern inline’ causes problems with other +compilers a stricter autoconf test can be used, see *note Autoconf +Macros: 16. + +When compiling with ‘gcc’ in C99 mode (‘gcc -std=c99’) the header files +automatically switch to C99-compatible inline function declarations +instead of ‘extern inline’. With other C99 compilers, define the macro +‘GSL_C99_INLINE’ to use these declarations. + + +File: gsl-ref.info, Node: Long double, Next: Portability functions, Prev: Inline functions, Up: Using the Library + +2.6 Long double +=============== + +In general, the algorithms in the library are written for double +precision only. The ‘long double’ type is not supported for actual +computation. + +One reason for this choice is that the precision of ‘long double’ is +platform dependent. The IEEE standard only specifies the minimum +precision of extended precision numbers, while the precision of ‘double’ +is the same on all platforms. + +However, it is sometimes necessary to interact with external data in +long-double format, so the vector and matrix datatypes include +long-double versions. + +It should be noted that in some system libraries the ‘stdio.h’ formatted +input/output functions ‘printf’ and ‘scanf’ are not implemented +correctly for ‘long double’. Undefined or incorrect results are avoided +by testing these functions during the ‘configure’ stage of library +compilation and eliminating certain GSL functions which depend on them +if necessary. The corresponding line in the ‘configure’ output looks +like this: + + checking whether printf works with long double... no + +Consequently when ‘long double’ formatted input/output does not work on +a given system it should be impossible to link a program which uses GSL +functions dependent on this. + +If it is necessary to work on a system which does not support formatted +‘long double’ input/output then the options are to use binary formats or +to convert ‘long double’ results into ‘double’ for reading and writing. + + +File: gsl-ref.info, Node: Portability functions, Next: Alternative optimized functions, Prev: Long double, Up: Using the Library + +2.7 Portability functions +========================= + +To help in writing portable applications GSL provides some +implementations of functions that are found in other libraries, such as +the BSD math library. You can write your application to use the native +versions of these functions, and substitute the GSL versions via a +preprocessor macro if they are unavailable on another platform. + +For example, after determining whether the BSD function ‘hypot()’ is +available you can include the following macro definitions in a file +‘config.h’ with your application: + + /* Substitute gsl_hypot for missing system hypot */ + + #ifndef HAVE_HYPOT + #define hypot gsl_hypot + #endif + +The application source files can then use the include command ‘#include +’ to replace each occurrence of ‘hypot()’ by *note +gsl_hypot(): 1a. when ‘hypot()’ is not available. This substitution can +be made automatically if you use ‘autoconf’, see *note Autoconf Macros: +16. + +In most circumstances the best strategy is to use the native versions of +these functions when available, and fall back to GSL versions otherwise, +since this allows your application to take advantage of any +platform-specific optimizations in the system library. This is the +strategy used within GSL itself. + + +File: gsl-ref.info, Node: Alternative optimized functions, Next: Support for different numeric types, Prev: Portability functions, Up: Using the Library + +2.8 Alternative optimized functions +=================================== + +The main implementation of some functions in the library will not be +optimal on all architectures. For example, there are several ways to +compute a Gaussian random variate and their relative speeds are +platform-dependent. In cases like this the library provides alternative +implementations of these functions with the same interface. If you +write your application using calls to the standard implementation you +can select an alternative version later via a preprocessor definition. +It is also possible to introduce your own optimized functions this way +while retaining portability. The following lines demonstrate the use of +a platform-dependent choice of methods for sampling from the Gaussian +distribution: + + #ifdef SPARC + #define gsl_ran_gaussian gsl_ran_gaussian_ratio_method + #endif + #ifdef INTEL + #define gsl_ran_gaussian my_gaussian + #endif + +These lines would be placed in the configuration header file ‘config.h’ +of the application, which should then be included by all the source +files. Note that the alternative implementations will not produce +bit-for-bit identical results, and in the case of random number +distributions will produce an entirely different stream of random +variates. + + +File: gsl-ref.info, Node: Support for different numeric types, Next: Compatibility with C++, Prev: Alternative optimized functions, Up: Using the Library + +2.9 Support for different numeric types +======================================= + +Many functions in the library are defined for different numeric types. +This feature is implemented by varying the name of the function with a +type-related modifier—a primitive form of C++ templates. The modifier +is inserted into the function name after the initial module prefix. The +following table shows the function names defined for all the numeric +types of an imaginary module ‘gsl_foo’ with function ‘fn()’: + + gsl_foo_fn double + gsl_foo_long_double_fn long double + gsl_foo_float_fn float + gsl_foo_long_fn long + gsl_foo_ulong_fn unsigned long + gsl_foo_int_fn int + gsl_foo_uint_fn unsigned int + gsl_foo_short_fn short + gsl_foo_ushort_fn unsigned short + gsl_foo_char_fn char + gsl_foo_uchar_fn unsigned char + +The normal numeric precision ‘double’ is considered the default and does +not require a suffix. For example, the function *note gsl_stats_mean(): +1d. computes the mean of double precision numbers, while the function +‘gsl_stats_int_mean()’ computes the mean of integers. + +A corresponding scheme is used for library defined types, such as +‘gsl_vector’ and ‘gsl_matrix’. In this case the modifier is appended to +the type name. For example, if a module defines a new type-dependent +struct or typedef ‘gsl_foo’ it is modified for other types in the +following way: + + gsl_foo double + gsl_foo_long_double long double + gsl_foo_float float + gsl_foo_long long + gsl_foo_ulong unsigned long + gsl_foo_int int + gsl_foo_uint unsigned int + gsl_foo_short short + gsl_foo_ushort unsigned short + gsl_foo_char char + gsl_foo_uchar unsigned char + +When a module contains type-dependent definitions the library provides +individual header files for each type. The filenames are modified as +shown in the below. For convenience the default header includes the +definitions for all the types. To include only the double precision +header file, or any other specific type, use its individual filename: + + #include All types + #include double + #include long double + #include float + #include long + #include unsigned long + #include int + #include unsigned int + #include short + #include unsigned short + #include char + #include unsigned char + + +File: gsl-ref.info, Node: Compatibility with C++, Next: Aliasing of arrays, Prev: Support for different numeric types, Up: Using the Library + +2.10 Compatibility with C++ +=========================== + +The library header files automatically define functions to have ‘extern +"C"’ linkage when included in C++ programs. This allows the functions +to be called directly from C++. + +To use C++ exception handling within user-defined functions passed to +the library as parameters, the library must be built with the additional +‘CFLAGS’ compilation option ‘-fexceptions’. + + +File: gsl-ref.info, Node: Aliasing of arrays, Next: Thread-safety, Prev: Compatibility with C++, Up: Using the Library + +2.11 Aliasing of arrays +======================= + +The library assumes that arrays, vectors and matrices passed as +modifiable arguments are not aliased and do not overlap with each other. +This removes the need for the library to handle overlapping memory +regions as a special case, and allows additional optimizations to be +used. If overlapping memory regions are passed as modifiable arguments +then the results of such functions will be undefined. If the arguments +will not be modified (for example, if a function prototype declares them +as ‘const’ arguments) then overlapping or aliased memory regions can be +safely used. + + +File: gsl-ref.info, Node: Thread-safety, Next: Deprecated Functions, Prev: Aliasing of arrays, Up: Using the Library + +2.12 Thread-safety +================== + +The library can be used in multi-threaded programs. All the functions +are thread-safe, in the sense that they do not use static variables. +Memory is always associated with objects and not with functions. For +functions which use `workspace' objects as temporary storage the +workspaces should be allocated on a per-thread basis. For functions +which use `table' objects as read-only memory the tables can be used by +multiple threads simultaneously. Table arguments are always declared +‘const’ in function prototypes, to indicate that they may be safely +accessed by different threads. + +There are a small number of static global variables which are used to +control the overall behavior of the library (e.g. whether to use +range-checking, the function to call on fatal error, etc). These +variables are set directly by the user, so they should be initialized +once at program startup and not modified by different threads. + + +File: gsl-ref.info, Node: Deprecated Functions, Next: Code Reuse, Prev: Thread-safety, Up: Using the Library + +2.13 Deprecated Functions +========================= + +From time to time, it may be necessary for the definitions of some +functions to be altered or removed from the library. In these +circumstances the functions will first be declared `deprecated' and then +removed from subsequent versions of the library. Functions that are +deprecated can be disabled in the current release by setting the +preprocessor definition ‘GSL_DISABLE_DEPRECATED’. This allows existing +code to be tested for forwards compatibility. + + +File: gsl-ref.info, Node: Code Reuse, Prev: Deprecated Functions, Up: Using the Library + +2.14 Code Reuse +=============== + +Where possible the routines in the library have been written to avoid +dependencies between modules and files. This should make it possible to +extract individual functions for use in your own applications, without +needing to have the whole library installed. You may need to define +certain macros such as ‘GSL_ERROR’ and remove some ‘#include’ statements +in order to compile the files as standalone units. Reuse of the library +code in this way is encouraged, subject to the terms of the GNU General +Public License. + + +File: gsl-ref.info, Node: Error Handling, Next: Mathematical Functions, Prev: Using the Library, Up: Top + +3 Error Handling +**************** + +This chapter describes the way that GSL functions report and handle +errors. By examining the status information returned by every function +you can determine whether it succeeded or failed, and if it failed you +can find out what the precise cause of failure was. You can also define +your own error handling functions to modify the default behavior of the +library. + +The functions described in this section are declared in the header file +‘gsl_errno.h’. + +* Menu: + +* Error Reporting:: +* Error Codes:: +* Error Handlers:: +* Using GSL error reporting in your own functions:: +* Examples:: + + +File: gsl-ref.info, Node: Error Reporting, Next: Error Codes, Up: Error Handling + +3.1 Error Reporting +=================== + +The library follows the thread-safe error reporting conventions of the +POSIX Threads library. Functions return a non-zero error code to +indicate an error and ‘0’ to indicate success: + + int status = gsl_function (...) + + if (status) { /* an error occurred */ + ..... + /* status value specifies the type of error */ + } + +The routines report an error whenever they cannot perform the task +requested of them. For example, a root-finding function would return a +non-zero error code if could not converge to the requested accuracy, or +exceeded a limit on the number of iterations. Situations like this are +a normal occurrence when using any mathematical library and you should +check the return status of the functions that you call. + +Whenever a routine reports an error the return value specifies the type +of error. The return value is analogous to the value of the variable +‘errno’ in the C library. The caller can examine the return code and +decide what action to take, including ignoring the error if it is not +considered serious. + +In addition to reporting errors by return codes the library also has an +error handler function ‘gsl_error()’. This function is called by other +library functions when they report an error, just before they return to +the caller. The default behavior of the error handler is to print a +message and abort the program: + + gsl: file.c:67: ERROR: invalid argument supplied by user + Default GSL error handler invoked. + Aborted + +The purpose of the ‘gsl_error()’ handler is to provide a function where +a breakpoint can be set that will catch library errors when running +under the debugger. It is not intended for use in production programs, +which should handle any errors using the return codes. + + +File: gsl-ref.info, Node: Error Codes, Next: Error Handlers, Prev: Error Reporting, Up: Error Handling + +3.2 Error Codes +=============== + +The error code numbers returned by library functions are defined in the +file ‘gsl_errno.h’. They all have the prefix ‘GSL_’ and expand to +non-zero constant integer values. Error codes above 1024 are reserved +for applications, and are not used by the library. Many of the error +codes use the same base name as the corresponding error code in the C +library. Here are some of the most common error codes, + + -- Variable: int GSL_EDOM + + Domain error; used by mathematical functions when an argument value + does not fall into the domain over which the function is defined + (like ‘EDOM’ in the C library) + + -- Variable: int GSL_ERANGE + + Range error; used by mathematical functions when the result value + is not representable because of overflow or underflow (like + ‘ERANGE’ in the C library) + + -- Variable: int GSL_ENOMEM + + No memory available. The system cannot allocate more virtual + memory because its capacity is full (like ‘ENOMEM’ in the C + library). This error is reported when a GSL routine encounters + problems when trying to allocate memory with ‘malloc()’. + + -- Variable: int GSL_EINVAL + + Invalid argument. This is used to indicate various kinds of + problems with passing the wrong argument to a library function + (like ‘EINVAL’ in the C library). + +The error codes can be converted into an error message using the +function *note gsl_strerror(): 2c. + + -- Function: const char * gsl_strerror (const int gsl_errno) + + This function returns a pointer to a string describing the error + code ‘gsl_errno’. For example: + + printf ("error: %s\n", gsl_strerror (status)); + + would print an error message like ‘error: output range error’ for a + status value of *note GSL_ERANGE: 29. + + +File: gsl-ref.info, Node: Error Handlers, Next: Using GSL error reporting in your own functions, Prev: Error Codes, Up: Error Handling + +3.3 Error Handlers +================== + +The default behavior of the GSL error handler is to print a short +message and call ‘abort()’. When this default is in use programs will +stop with a core-dump whenever a library routine reports an error. This +is intended as a fail-safe default for programs which do not check the +return status of library routines (we don’t encourage you to write +programs this way). + +If you turn off the default error handler it is your responsibility to +check the return values of routines and handle them yourself. You can +also customize the error behavior by providing a new error handler. For +example, an alternative error handler could log all errors to a file, +ignore certain error conditions (such as underflows), or start the +debugger and attach it to the current process when an error occurs. + +All GSL error handlers have the type ‘gsl_error_handler_t’, which is +defined in ‘gsl_errno.h’, + + -- Type: gsl_error_handler_t + + This is the type of GSL error handler functions. An error handler + will be passed four arguments which specify the reason for the + error (a string), the name of the source file in which it occurred + (also a string), the line number in that file (an integer) and the + error number (an integer). The source file and line number are set + at compile time using the ‘__FILE__’ and ‘__LINE__’ directives in + the preprocessor. An error handler function returns type ‘void’. + Error handler functions should be defined like this: + + void handler (const char * reason, + const char * file, + int line, + int gsl_errno) + +To request the use of your own error handler you need to call the +function *note gsl_set_error_handler(): 2f. which is also declared in +‘gsl_errno.h’, + + -- Function: gsl_error_handler_t * gsl_set_error_handler + (gsl_error_handler_t * new_handler) + + This function sets a new error handler, ‘new_handler’, for the GSL + library routines. The previous handler is returned (so that you + can restore it later). Note that the pointer to a user defined + error handler function is stored in a static variable, so there can + be only one error handler per program. This function should be not + be used in multi-threaded programs except to set up a program-wide + error handler from a master thread. The following example shows + how to set and restore a new error handler: + + /* save original handler, install new handler */ + old_handler = gsl_set_error_handler (&my_handler); + + /* code uses new handler */ + ..... + + /* restore original handler */ + gsl_set_error_handler (old_handler); + + To use the default behavior (‘abort()’ on error) set the error + handler to ‘NULL’: + + old_handler = gsl_set_error_handler (NULL); + + -- Function: gsl_error_handler_t * gsl_set_error_handler_off () + + This function turns off the error handler by defining an error + handler which does nothing. This will cause the program to + continue after any error, so the return values from any library + routines must be checked. This is the recommended behavior for + production programs. The previous handler is returned (so that you + can restore it later). + +The error behavior can be changed for specific applications by +recompiling the library with a customized definition of the ‘GSL_ERROR’ +macro in the file ‘gsl_errno.h’. + + +File: gsl-ref.info, Node: Using GSL error reporting in your own functions, Next: Examples, Prev: Error Handlers, Up: Error Handling + +3.4 Using GSL error reporting in your own functions +=================================================== + +If you are writing numerical functions in a program which also uses GSL +code you may find it convenient to adopt the same error reporting +conventions as in the library. + +To report an error you need to call the function ‘gsl_error()’ with a +string describing the error and then return an appropriate error code +from ‘gsl_errno.h’, or a special value, such as ‘NaN’. For convenience +the file ‘gsl_errno.h’ defines two macros which carry out these steps: + + -- Macro: GSL_ERROR (reason, gsl_errno) + + This macro reports an error using the GSL conventions and returns a + status value of ‘gsl_errno’. It expands to the following code + fragment: + + gsl_error (reason, __FILE__, __LINE__, gsl_errno); + return gsl_errno; + + The macro definition in ‘gsl_errno.h’ actually wraps the code in a + ‘do { ... } while (0)’ block to prevent possible parsing problems. + +Here is an example of how the macro could be used to report that a +routine did not achieve a requested tolerance. To report the error the +routine needs to return the error code ‘GSL_ETOL’: + + if (residual > tolerance) + { + GSL_ERROR("residual exceeds tolerance", GSL_ETOL); + } + + -- Macro: GSL_ERROR_VAL (reason, gsl_errno, value) + + This macro is the same as ‘GSL_ERROR’ but returns a user-defined + value of ‘value’ instead of an error code. It can be used for + mathematical functions that return a floating point value. + +The following example shows how to return a ‘NaN’ at a mathematical +singularity using the ‘GSL_ERROR_VAL’ macro: + + if (x == 0) + { + GSL_ERROR_VAL("argument lies on singularity", GSL_ERANGE, GSL_NAN); + } + + +File: gsl-ref.info, Node: Examples, Prev: Using GSL error reporting in your own functions, Up: Error Handling + +3.5 Examples +============ + +Here is an example of some code which checks the return value of a +function where an error might be reported: + + #include + #include + #include + + ... + int status; + size_t n = 37; + + gsl_set_error_handler_off(); + + status = gsl_fft_complex_radix2_forward (data, stride, n); + + if (status) { + if (status == GSL_EINVAL) { + fprintf (stderr, "invalid argument, n=%d\n", n); + } else { + fprintf (stderr, "failed, gsl_errno=%d\n", status); + } + exit (-1); + } + ... + +The function *note gsl_fft_complex_radix2_forward(): 35. only accepts +integer lengths which are a power of two. If the variable ‘n’ is not a +power of two then the call to the library function will return +‘GSL_EINVAL’, indicating that the length argument is invalid. The +function call to *note gsl_set_error_handler_off(): 30. stops the +default error handler from aborting the program. The ‘else’ clause +catches any other possible errors. + + +File: gsl-ref.info, Node: Mathematical Functions, Next: Complex Numbers, Prev: Error Handling, Up: Top + +4 Mathematical Functions +************************ + +This chapter describes basic mathematical functions. Some of these +functions are present in system libraries, but the alternative versions +given here can be used as a substitute when the system functions are not +available. + +The functions and macros described in this chapter are defined in the +header file ‘gsl_math.h’. + +* Menu: + +* Mathematical Constants:: +* Infinities and Not-a-number:: +* Elementary Functions:: +* Small integer powers:: +* Testing the Sign of Numbers:: +* Testing for Odd and Even Numbers:: +* Maximum and Minimum functions:: +* Approximate Comparison of Floating Point Numbers:: + + +File: gsl-ref.info, Node: Mathematical Constants, Next: Infinities and Not-a-number, Up: Mathematical Functions + +4.1 Mathematical Constants +========================== + +The library ensures that the standard BSD mathematical constants are +defined. For reference, here is a list of the constants: + +‘M_E’ The base of exponentials, e + + +‘M_LOG2E’ The base-2 logarithm of e, \log_2 (e) + + +‘M_LOG10E’ The base-10 logarithm of e, \log_{10} (e) + + +‘M_SQRT2’ The square root of two, \sqrt 2 + + +‘M_SQRT1_2’ The square root of one-half, \sqrt{1/2} + + +‘M_SQRT3’ The square root of three, \sqrt 3 + + +‘M_PI’ The constant pi, \pi + + +‘M_PI_2’ Pi divided by two, \pi/2 + + +‘M_PI_4’ Pi divided by four, \pi/4 + + +‘M_SQRTPI’ The square root of pi, \sqrt\pi + + +‘M_2_SQRTPI’ Two divided by the square root of pi, 2/\sqrt\pi + + +‘M_1_PI’ The reciprocal of pi, 1/\pi + + +‘M_2_PI’ Twice the reciprocal of pi, 2/\pi + + +‘M_LN10’ The natural logarithm of ten, \ln(10) + + +‘M_LN2’ The natural logarithm of two, \ln(2) + + +‘M_LNPI’ The natural logarithm of pi, \ln(\pi) + + +‘M_EULER’ Euler’s constant, \gamma + + + +File: gsl-ref.info, Node: Infinities and Not-a-number, Next: Elementary Functions, Prev: Mathematical Constants, Up: Mathematical Functions + +4.2 Infinities and Not-a-number +=============================== + + -- Macro: GSL_POSINF + + This macro contains the IEEE representation of positive infinity, + +\infty. It is computed from the expression ‘+1.0/0.0’. + + -- Macro: GSL_NEGINF + + This macro contains the IEEE representation of negative infinity, + -\infty. It is computed from the expression ‘-1.0/0.0’. + + -- Macro: GSL_NAN + + This macro contains the IEEE representation of the Not-a-Number + symbol, ‘NaN’. It is computed from the ratio ‘0.0/0.0’. + + -- Function: int gsl_isnan (const double x) + + This function returns 1 if ‘x’ is not-a-number. + + -- Function: int gsl_isinf (const double x) + + This function returns +1 if ‘x’ is positive infinity, -1 if ‘x’ is + negative infinity and 0 otherwise. (1) + + -- Function: int gsl_finite (const double x) + + This function returns 1 if ‘x’ is a real number, and 0 if it is + infinite or not-a-number. + + ---------- Footnotes ---------- + + (1) Note that the C99 standard only requires the system ‘isinf()’ +function to return a non-zero value, without the sign of the infinity. +The implementation in some earlier versions of GSL used the system +‘isinf()’ function and may have this behavior on some platforms. +Therefore, it is advisable to test the sign of ‘x’ separately, if +needed, rather than relying the sign of the return value from *note +gsl_isinf(): 3e. + + +File: gsl-ref.info, Node: Elementary Functions, Next: Small integer powers, Prev: Infinities and Not-a-number, Up: Mathematical Functions + +4.3 Elementary Functions +======================== + +The following routines provide portable implementations of functions +found in the BSD math library. When native versions are not available +the functions described here can be used instead. The substitution can +be made automatically if you use ‘autoconf’ to compile your application +(see *note Portability functions: 19.). + + -- Function: double gsl_log1p (const double x) + + This function computes the value of \log(1+x) in a way that is + accurate for small ‘x’. It provides an alternative to the BSD math + function ‘log1p(x)’. + + -- Function: double gsl_expm1 (const double x) + + This function computes the value of \exp(x)-1 in a way that is + accurate for small ‘x’. It provides an alternative to the BSD math + function ‘expm1(x)’. + + -- Function: double gsl_hypot (const double x, const double y) + + This function computes the value of \sqrt{x^2 + y^2} in a way that + avoids overflow. It provides an alternative to the BSD math + function ‘hypot(x,y)’. + + -- Function: double gsl_hypot3 (const double x, const double y, const + double z) + + This function computes the value of \sqrt{x^2 + y^2 + z^2} in a way + that avoids overflow. + + -- Function: double gsl_acosh (const double x) + + This function computes the value of \arccosh{(x)}. It provides an + alternative to the standard math function ‘acosh(x)’. + + -- Function: double gsl_asinh (const double x) + + This function computes the value of \arcsinh{(x)}. It provides an + alternative to the standard math function ‘asinh(x)’. + + -- Function: double gsl_atanh (const double x) + + This function computes the value of \arctanh{(x)}. It provides an + alternative to the standard math function ‘atanh(x)’. + + -- Function: double gsl_ldexp (double x, int e) + + This function computes the value of x * 2^e. It provides an + alternative to the standard math function ‘ldexp(x,e)’. + + -- Function: double gsl_frexp (double x, int * e) + + This function splits the number ‘x’ into its normalized fraction f + and exponent e, such that x = f * 2^e and 0.5 <= f < 1. The + function returns f and stores the exponent in e. If x is zero, + both f and e are set to zero. This function provides an + alternative to the standard math function ‘frexp(x, e)’. + + +File: gsl-ref.info, Node: Small integer powers, Next: Testing the Sign of Numbers, Prev: Elementary Functions, Up: Mathematical Functions + +4.4 Small integer powers +======================== + +A common complaint about the standard C library is its lack of a +function for calculating (small) integer powers. GSL provides some +simple functions to fill this gap. For reasons of efficiency, these +functions do not check for overflow or underflow conditions. + + -- Function: double gsl_pow_int (double x, int n) + -- Function: double gsl_pow_uint (double x, unsigned int n) + + These routines computes the power x^n for integer ‘n’. The power + is computed efficiently—for example, x^8 is computed as + ((x^2)^2)^2, requiring only 3 multiplications. A version of this + function which also computes the numerical error in the result is + available as *note gsl_sf_pow_int_e(): 4c. + + -- Function: double gsl_pow_2 (const double x) + -- Function: double gsl_pow_3 (const double x) + -- Function: double gsl_pow_4 (const double x) + -- Function: double gsl_pow_5 (const double x) + -- Function: double gsl_pow_6 (const double x) + -- Function: double gsl_pow_7 (const double x) + -- Function: double gsl_pow_8 (const double x) + -- Function: double gsl_pow_9 (const double x) + + These functions can be used to compute small integer powers x^2, + x^3, etc. efficiently. The functions will be inlined when + ‘HAVE_INLINE’ is defined, so that use of these functions should be + as efficient as explicitly writing the corresponding product + expression: + + #include + double y = gsl_pow_4 (3.141) /* compute 3.141**4 */ + + +File: gsl-ref.info, Node: Testing the Sign of Numbers, Next: Testing for Odd and Even Numbers, Prev: Small integer powers, Up: Mathematical Functions + +4.5 Testing the Sign of Numbers +=============================== + + -- Macro: GSL_SIGN (x) + + This macro returns the sign of ‘x’. It is defined as ‘((x) >= 0 ? + 1 : -1)’. Note that with this definition the sign of zero is + positive (regardless of its IEEE sign bit). + + +File: gsl-ref.info, Node: Testing for Odd and Even Numbers, Next: Maximum and Minimum functions, Prev: Testing the Sign of Numbers, Up: Mathematical Functions + +4.6 Testing for Odd and Even Numbers +==================================== + + -- Macro: GSL_IS_ODD (n) + + This macro evaluates to 1 if ‘n’ is odd and 0 if ‘n’ is even. The + argument ‘n’ must be of integer type. + + -- Macro: GSL_IS_EVEN (n) + + This macro is the opposite of *note GSL_IS_ODD: 58. It evaluates + to 1 if ‘n’ is even and 0 if ‘n’ is odd. The argument ‘n’ must be + of integer type. + + +File: gsl-ref.info, Node: Maximum and Minimum functions, Next: Approximate Comparison of Floating Point Numbers, Prev: Testing for Odd and Even Numbers, Up: Mathematical Functions + +4.7 Maximum and Minimum functions +================================= + +Note that the following macros perform multiple evaluations of their +arguments, so they should not be used with arguments that have side +effects (such as a call to a random number generator). + + -- Macro: GSL_MAX (a, b) + + This macro returns the maximum of ‘a’ and ‘b’. It is defined as + ‘((a) > (b) ? (a):(b))’. + + -- Macro: GSL_MIN (a, b) + + This macro returns the minimum of ‘a’ and ‘b’. It is defined as + ‘((a) < (b) ? (a):(b))’. + + -- Function: extern inline double GSL_MAX_DBL (double a, double b) + + This function returns the maximum of the double precision numbers + ‘a’ and ‘b’ using an inline function. The use of a function allows + for type checking of the arguments as an extra safety feature. On + platforms where inline functions are not available the macro *note + GSL_MAX: 5b. will be automatically substituted. + + -- Function: extern inline double GSL_MIN_DBL (double a, double b) + + This function returns the minimum of the double precision numbers + ‘a’ and ‘b’ using an inline function. The use of a function allows + for type checking of the arguments as an extra safety feature. On + platforms where inline functions are not available the macro *note + GSL_MIN: 5c. will be automatically substituted. + + -- Function: extern inline int GSL_MAX_INT (int a, int b) + -- Function: extern inline int GSL_MIN_INT (int a, int b) + + These functions return the maximum or minimum of the integers ‘a’ + and ‘b’ using an inline function. On platforms where inline + functions are not available the macros *note GSL_MAX: 5b. or *note + GSL_MIN: 5c. will be automatically substituted. + + -- Function: extern inline long double GSL_MAX_LDBL (long double a, + long double b) + -- Function: extern inline long double GSL_MIN_LDBL (long double a, + long double b) + + These functions return the maximum or minimum of the long doubles + ‘a’ and ‘b’ using an inline function. On platforms where inline + functions are not available the macros *note GSL_MAX: 5b. or *note + GSL_MIN: 5c. will be automatically substituted. + + +File: gsl-ref.info, Node: Approximate Comparison of Floating Point Numbers, Prev: Maximum and Minimum functions, Up: Mathematical Functions + +4.8 Approximate Comparison of Floating Point Numbers +==================================================== + +It is sometimes useful to be able to compare two floating point numbers +approximately, to allow for rounding and truncation errors. The +following function implements the approximate floating-point comparison +algorithm proposed by D.E. Knuth in Section 4.2.2 of “Seminumerical +Algorithms” (3rd edition). + + -- Function: int gsl_fcmp (double x, double y, double epsilon) + + This function determines whether ‘x’ and ‘y’ are approximately + equal to a relative accuracy ‘epsilon’. + + The relative accuracy is measured using an interval of size 2 + \delta, where \delta = 2^k \epsilon and k is the maximum base-2 + exponent of x and y as computed by the function ‘frexp()’. + + If x and y lie within this interval, they are considered + approximately equal and the function returns 0. Otherwise if x < + y, the function returns -1, or if x > y, the function returns +1. + + Note that x and y are compared to relative accuracy, so this + function is not suitable for testing whether a value is + approximately zero. + + The implementation is based on the package ‘fcmp’ by T.C. Belding. + + +File: gsl-ref.info, Node: Complex Numbers, Next: Polynomials, Prev: Mathematical Functions, Up: Top + +5 Complex Numbers +***************** + +The functions described in this chapter provide support for complex +numbers. The algorithms take care to avoid unnecessary intermediate +underflows and overflows, allowing the functions to be evaluated over as +much of the complex plane as possible. + +For multiple-valued functions the branch cuts have been chosen to follow +the conventions of Abramowitz and Stegun. The functions return +principal values which are the same as those in GNU Calc, which in turn +are the same as those in “Common Lisp, The Language (Second Edition)” +(1) and the HP-28/48 series of calculators. + +The complex types are defined in the header file ‘gsl_complex.h’, while +the corresponding complex functions and arithmetic operations are +defined in ‘gsl_complex_math.h’. + +* Menu: + +* Representation of complex numbers:: +* Properties of complex numbers:: +* Complex arithmetic operators:: +* Elementary Complex Functions:: +* Complex Trigonometric Functions:: +* Inverse Complex Trigonometric Functions:: +* Complex Hyperbolic Functions:: +* Inverse Complex Hyperbolic Functions:: +* References and Further Reading:: + + ---------- Footnotes ---------- + + (1) Note that the first edition uses different definitions. + + +File: gsl-ref.info, Node: Representation of complex numbers, Next: Properties of complex numbers, Up: Complex Numbers + +5.1 Representation of complex numbers +===================================== + +Complex numbers are represented using the type ‘gsl_complex’. The +internal representation of this type may vary across platforms and +should not be accessed directly. The functions and macros described +below allow complex numbers to be manipulated in a portable way. + +For reference, the default form of the ‘gsl_complex’ type is given by +the following struct: + + typedef struct + { + double dat[2]; + } gsl_complex; + +The real and imaginary part are stored in contiguous elements of a two +element array. This eliminates any padding between the real and +imaginary parts, ‘dat[0]’ and ‘dat[1]’, allowing the struct to be mapped +correctly onto packed complex arrays. + + -- Function: gsl_complex gsl_complex_rect (double x, double y) + + This function uses the rectangular Cartesian components (x,y) to + return the complex number z = x + i y. An inline version of this + function is used when ‘HAVE_INLINE’ is defined. + + -- Function: gsl_complex gsl_complex_polar (double r, double theta) + + This function returns the complex number z = r \exp(i \theta) = r + (\cos(\theta) + i \sin(\theta)) from the polar representation (‘r’, + ‘theta’). + + -- Macro: GSL_REAL (z) + -- Macro: GSL_IMAG (z) + + These macros return the real and imaginary parts of the complex + number ‘z’. + + -- Macro: GSL_SET_COMPLEX (zp, x, y) + + This macro uses the Cartesian components (‘x’, ‘y’) to set the real + and imaginary parts of the complex number pointed to by ‘zp’. For + example: + + GSL_SET_COMPLEX(&z, 3, 4) + + sets z to be 3 + 4i. + + -- Macro: GSL_SET_REAL (zp, x) + -- Macro: GSL_SET_IMAG (zp, y) + + These macros allow the real and imaginary parts of the complex + number pointed to by ‘zp’ to be set independently. + + +File: gsl-ref.info, Node: Properties of complex numbers, Next: Complex arithmetic operators, Prev: Representation of complex numbers, Up: Complex Numbers + +5.2 Properties of complex numbers +================================= + + -- Function: double gsl_complex_arg (gsl_complex z) + + This function returns the argument of the complex number ‘z’, + \arg(z), where -\pi < \arg(z) <= \pi. + + -- Function: double gsl_complex_abs (gsl_complex z) + + This function returns the magnitude of the complex number ‘z’, |z|. + + -- Function: double gsl_complex_abs2 (gsl_complex z) + + This function returns the squared magnitude of the complex number + ‘z’, |z|^2. + + -- Function: double gsl_complex_logabs (gsl_complex z) + + This function returns the natural logarithm of the magnitude of the + complex number ‘z’, \log|z|. It allows an accurate evaluation of + \log|z| when |z| is close to one. The direct evaluation of + ‘log(gsl_complex_abs(z))’ would lead to a loss of precision in this + case. + + +File: gsl-ref.info, Node: Complex arithmetic operators, Next: Elementary Complex Functions, Prev: Properties of complex numbers, Up: Complex Numbers + +5.3 Complex arithmetic operators +================================ + + -- Function: gsl_complex gsl_complex_add (gsl_complex a, gsl_complex b) + + This function returns the sum of the complex numbers ‘a’ and ‘b’, + z=a+b. + + -- Function: gsl_complex gsl_complex_sub (gsl_complex a, gsl_complex b) + + This function returns the difference of the complex numbers ‘a’ and + ‘b’, z=a-b. + + -- Function: gsl_complex gsl_complex_mul (gsl_complex a, gsl_complex b) + + This function returns the product of the complex numbers ‘a’ and + ‘b’, z=ab. + + -- Function: gsl_complex gsl_complex_div (gsl_complex a, gsl_complex b) + + This function returns the quotient of the complex numbers ‘a’ and + ‘b’, z=a/b. + + -- Function: gsl_complex gsl_complex_add_real (gsl_complex a, double x) + + This function returns the sum of the complex number ‘a’ and the + real number ‘x’, z=a+x. + + -- Function: gsl_complex gsl_complex_sub_real (gsl_complex a, double x) + + This function returns the difference of the complex number ‘a’ and + the real number ‘x’, z=a-x. + + -- Function: gsl_complex gsl_complex_mul_real (gsl_complex a, double x) + + This function returns the product of the complex number ‘a’ and the + real number ‘x’, z=ax. + + -- Function: gsl_complex gsl_complex_div_real (gsl_complex a, double x) + + This function returns the quotient of the complex number ‘a’ and + the real number ‘x’, z=a/x. + + -- Function: gsl_complex gsl_complex_add_imag (gsl_complex a, double y) + + This function returns the sum of the complex number ‘a’ and the + imaginary number iy, z=a+iy. + + -- Function: gsl_complex gsl_complex_sub_imag (gsl_complex a, double y) + + This function returns the difference of the complex number ‘a’ and + the imaginary number iy, z=a-iy. + + -- Function: gsl_complex gsl_complex_mul_imag (gsl_complex a, double y) + + This function returns the product of the complex number ‘a’ and the + imaginary number iy, z=a*(iy). + + -- Function: gsl_complex gsl_complex_div_imag (gsl_complex a, double y) + + This function returns the quotient of the complex number ‘a’ and + the imaginary number iy, z=a/(iy). + + -- Function: gsl_complex gsl_complex_conjugate (gsl_complex z) + + This function returns the complex conjugate of the complex number + ‘z’, z^* = x - i y. + + -- Function: gsl_complex gsl_complex_inverse (gsl_complex z) + + This function returns the inverse, or reciprocal, of the complex + number ‘z’, 1/z = (x - i y)/(x^2 + y^2). + + -- Function: gsl_complex gsl_complex_negative (gsl_complex z) + + This function returns the negative of the complex number ‘z’, -z = + (-x) + i(-y). + + +File: gsl-ref.info, Node: Elementary Complex Functions, Next: Complex Trigonometric Functions, Prev: Complex arithmetic operators, Up: Complex Numbers + +5.4 Elementary Complex Functions +================================ + + -- Function: gsl_complex gsl_complex_sqrt (gsl_complex z) + + This function returns the square root of the complex number ‘z’, + \sqrt z. The branch cut is the negative real axis. The result + always lies in the right half of the complex plane. + + -- Function: gsl_complex gsl_complex_sqrt_real (double x) + + This function returns the complex square root of the real number + ‘x’, where ‘x’ may be negative. + + -- Function: gsl_complex gsl_complex_pow (gsl_complex z, gsl_complex a) + + The function returns the complex number ‘z’ raised to the complex + power ‘a’, z^a. This is computed as \exp(\log(z)*a) using complex + logarithms and complex exponentials. + + -- Function: gsl_complex gsl_complex_pow_real (gsl_complex z, double x) + + This function returns the complex number ‘z’ raised to the real + power ‘x’, z^x. + + -- Function: gsl_complex gsl_complex_exp (gsl_complex z) + + This function returns the complex exponential of the complex number + ‘z’, \exp(z). + + -- Function: gsl_complex gsl_complex_log (gsl_complex z) + + This function returns the complex natural logarithm (base e) of the + complex number ‘z’, \log(z). The branch cut is the negative real + axis. + + -- Function: gsl_complex gsl_complex_log10 (gsl_complex z) + + This function returns the complex base-10 logarithm of the complex + number ‘z’, \log_{10} (z). + + -- Function: gsl_complex gsl_complex_log_b (gsl_complex z, + gsl_complex b) + + This function returns the complex base-‘b’ logarithm of the complex + number ‘z’, \log_b(z). This quantity is computed as the ratio + \log(z)/\log(b). + + +File: gsl-ref.info, Node: Complex Trigonometric Functions, Next: Inverse Complex Trigonometric Functions, Prev: Elementary Complex Functions, Up: Complex Numbers + +5.5 Complex Trigonometric Functions +=================================== + + -- Function: gsl_complex gsl_complex_sin (gsl_complex z) + + This function returns the complex sine of the complex number ‘z’, + \sin(z) = (\exp(iz) - \exp(-iz))/(2i). + + -- Function: gsl_complex gsl_complex_cos (gsl_complex z) + + This function returns the complex cosine of the complex number ‘z’, + \cos(z) = (\exp(iz) + \exp(-iz))/2. + + -- Function: gsl_complex gsl_complex_tan (gsl_complex z) + + This function returns the complex tangent of the complex number + ‘z’, \tan(z) = \sin(z)/\cos(z). + + -- Function: gsl_complex gsl_complex_sec (gsl_complex z) + + This function returns the complex secant of the complex number ‘z’, + \sec(z) = 1/\cos(z). + + -- Function: gsl_complex gsl_complex_csc (gsl_complex z) + + This function returns the complex cosecant of the complex number + ‘z’, \csc(z) = 1/\sin(z). + + -- Function: gsl_complex gsl_complex_cot (gsl_complex z) + + This function returns the complex cotangent of the complex number + ‘z’, \cot(z) = 1/\tan(z). + + +File: gsl-ref.info, Node: Inverse Complex Trigonometric Functions, Next: Complex Hyperbolic Functions, Prev: Complex Trigonometric Functions, Up: Complex Numbers + +5.6 Inverse Complex Trigonometric Functions +=========================================== + + -- Function: gsl_complex gsl_complex_arcsin (gsl_complex z) + + This function returns the complex arcsine of the complex number + ‘z’, \arcsin(z). The branch cuts are on the real axis, less than + -1 and greater than 1. + + -- Function: gsl_complex gsl_complex_arcsin_real (double z) + + This function returns the complex arcsine of the real number ‘z’, + \arcsin(z). For z between -1 and 1, the function returns a real + value in the range [-\pi/2,\pi/2]. For z less than -1 the result + has a real part of -\pi/2 and a positive imaginary part. For z + greater than 1 the result has a real part of \pi/2 and a negative + imaginary part. + + -- Function: gsl_complex gsl_complex_arccos (gsl_complex z) + + This function returns the complex arccosine of the complex number + ‘z’, \arccos(z). The branch cuts are on the real axis, less than + -1 and greater than 1. + + -- Function: gsl_complex gsl_complex_arccos_real (double z) + + This function returns the complex arccosine of the real number ‘z’, + \arccos(z). For z between -1 and 1, the function returns a real + value in the range [0,\pi]. For z less than -1 the result has a + real part of \pi and a negative imaginary part. For z greater than + 1 the result is purely imaginary and positive. + + -- Function: gsl_complex gsl_complex_arctan (gsl_complex z) + + This function returns the complex arctangent of the complex number + ‘z’, \arctan(z). The branch cuts are on the imaginary axis, below + -i and above i. + + -- Function: gsl_complex gsl_complex_arcsec (gsl_complex z) + + This function returns the complex arcsecant of the complex number + ‘z’, \arcsec(z) = \arccos(1/z). + + -- Function: gsl_complex gsl_complex_arcsec_real (double z) + + This function returns the complex arcsecant of the real number ‘z’, + \arcsec(z) = \arccos(1/z). + + -- Function: gsl_complex gsl_complex_arccsc (gsl_complex z) + + This function returns the complex arccosecant of the complex number + ‘z’, \arccsc(z) = \arcsin(1/z). + + -- Function: gsl_complex gsl_complex_arccsc_real (double z) + + This function returns the complex arccosecant of the real number + ‘z’, \arccsc(z) = \arcsin(1/z). + + -- Function: gsl_complex gsl_complex_arccot (gsl_complex z) + + This function returns the complex arccotangent of the complex + number ‘z’, \arccot(z) = \arctan(1/z). + + +File: gsl-ref.info, Node: Complex Hyperbolic Functions, Next: Inverse Complex Hyperbolic Functions, Prev: Inverse Complex Trigonometric Functions, Up: Complex Numbers + +5.7 Complex Hyperbolic Functions +================================ + + -- Function: gsl_complex gsl_complex_sinh (gsl_complex z) + + This function returns the complex hyperbolic sine of the complex + number ‘z’, \sinh(z) = (\exp(z) - \exp(-z))/2. + + -- Function: gsl_complex gsl_complex_cosh (gsl_complex z) + + This function returns the complex hyperbolic cosine of the complex + number ‘z’, \cosh(z) = (\exp(z) + \exp(-z))/2. + + -- Function: gsl_complex gsl_complex_tanh (gsl_complex z) + + This function returns the complex hyperbolic tangent of the complex + number ‘z’, \tanh(z) = \sinh(z)/\cosh(z). + + -- Function: gsl_complex gsl_complex_sech (gsl_complex z) + + This function returns the complex hyperbolic secant of the complex + number ‘z’, \sech(z) = 1/\cosh(z). + + -- Function: gsl_complex gsl_complex_csch (gsl_complex z) + + This function returns the complex hyperbolic cosecant of the + complex number ‘z’, \csch(z) = 1/\sinh(z). + + -- Function: gsl_complex gsl_complex_coth (gsl_complex z) + + This function returns the complex hyperbolic cotangent of the + complex number ‘z’, \coth(z) = 1/\tanh(z). + + +File: gsl-ref.info, Node: Inverse Complex Hyperbolic Functions, Next: References and Further Reading, Prev: Complex Hyperbolic Functions, Up: Complex Numbers + +5.8 Inverse Complex Hyperbolic Functions +======================================== + + -- Function: gsl_complex gsl_complex_arcsinh (gsl_complex z) + + This function returns the complex hyperbolic arcsine of the complex + number ‘z’, \arcsinh(z). The branch cuts are on the imaginary + axis, below -i and above i. + + -- Function: gsl_complex gsl_complex_arccosh (gsl_complex z) + + This function returns the complex hyperbolic arccosine of the + complex number ‘z’, \arccosh(z). The branch cut is on the real + axis, less than 1. Note that in this case we use the negative + square root in formula 4.6.21 of Abramowitz & Stegun giving + \arccosh(z)=\log(z-\sqrt{z^2-1}). + + -- Function: gsl_complex gsl_complex_arccosh_real (double z) + + This function returns the complex hyperbolic arccosine of the real + number ‘z’, \arccosh(z). + + -- Function: gsl_complex gsl_complex_arctanh (gsl_complex z) + + This function returns the complex hyperbolic arctangent of the + complex number ‘z’, \arctanh(z). The branch cuts are on the real + axis, less than -1 and greater than 1. + + -- Function: gsl_complex gsl_complex_arctanh_real (double z) + + This function returns the complex hyperbolic arctangent of the real + number ‘z’, \arctanh(z). + + -- Function: gsl_complex gsl_complex_arcsech (gsl_complex z) + + This function returns the complex hyperbolic arcsecant of the + complex number ‘z’, \arcsech(z) = \arccosh(1/z). + + -- Function: gsl_complex gsl_complex_arccsch (gsl_complex z) + + This function returns the complex hyperbolic arccosecant of the + complex number ‘z’, \arccsch(z) = \arcsinh(1/z). + + -- Function: gsl_complex gsl_complex_arccoth (gsl_complex z) + + This function returns the complex hyperbolic arccotangent of the + complex number ‘z’, \arccoth(z) = \arctanh(1/z). + + +File: gsl-ref.info, Node: References and Further Reading, Prev: Inverse Complex Hyperbolic Functions, Up: Complex Numbers + +5.9 References and Further Reading +================================== + +The implementations of the elementary and trigonometric functions are +based on the following papers, + + * T. E. Hull, Thomas F. Fairgrieve, Ping Tak Peter Tang, + “Implementing Complex Elementary Functions Using Exception + Handling”, ACM Transactions on Mathematical Software, Volume 20 + (1994), pp 215–244, Corrigenda, p553 + + * T. E. Hull, Thomas F. Fairgrieve, Ping Tak Peter Tang, + “Implementing the complex arcsin and arccosine functions using + exception handling”, ACM Transactions on Mathematical Software, + Volume 23 (1997) pp 299–335 + +The general formulas and details of branch cuts can be found in the +following books, + + * Abramowitz and Stegun, Handbook of Mathematical Functions, + “Circular Functions in Terms of Real and Imaginary Parts”, Formulas + 4.3.55–58, “Inverse Circular Functions in Terms of Real and + Imaginary Parts”, Formulas 4.4.37–39, “Hyperbolic Functions in + Terms of Real and Imaginary Parts”, Formulas 4.5.49–52, “Inverse + Hyperbolic Functions—relation to Inverse Circular Functions”, + Formulas 4.6.14–19. + + * Dave Gillespie, Calc Manual, Free Software Foundation, ISBN + 1-882114-18-3 + + +File: gsl-ref.info, Node: Polynomials, Next: Special Functions, Prev: Complex Numbers, Up: Top + +6 Polynomials +************* + +This chapter describes functions for evaluating and solving polynomials. +There are routines for finding real and complex roots of quadratic and +cubic equations using analytic methods. An iterative polynomial solver +is also available for finding the roots of general polynomials with real +coefficients (of any order). The functions are declared in the header +file ‘gsl_poly.h’. + +* Menu: + +* Polynomial Evaluation:: +* Divided Difference Representation of Polynomials:: +* Quadratic Equations:: +* Cubic Equations:: +* General Polynomial Equations:: +* Examples: Examples<2>. +* References and Further Reading: References and Further Reading<2>. + + +File: gsl-ref.info, Node: Polynomial Evaluation, Next: Divided Difference Representation of Polynomials, Up: Polynomials + +6.1 Polynomial Evaluation +========================= + +The functions described here evaluate the polynomial + +P(x) = c[0] + c[1] x + c[2] x^2 + … + c[len-1] x^{len-1} + +using Horner’s method for stability. Inline versions of these functions +are used when ‘HAVE_INLINE’ is defined. + + -- Function: double gsl_poly_eval (const double c[], const int len, + const double x) + + This function evaluates a polynomial with real coefficients for the + real variable ‘x’. + + -- Function: gsl_complex gsl_poly_complex_eval (const double c[], const + int len, const gsl_complex z) + + This function evaluates a polynomial with real coefficients for the + complex variable ‘z’. + + -- Function: gsl_complex gsl_complex_poly_complex_eval (const + gsl_complex c[], const int len, const gsl_complex z) + + This function evaluates a polynomial with complex coefficients for + the complex variable ‘z’. + + -- Function: int gsl_poly_eval_derivs (const double c[], const + size_t lenc, const double x, double res[], const + size_t lenres) + + This function evaluates a polynomial and its derivatives storing + the results in the array ‘res’ of size ‘lenres’. The output array + contains the values of d^k P(x)/d x^k for the specified value of + ‘x’ starting with k = 0. + + +File: gsl-ref.info, Node: Divided Difference Representation of Polynomials, Next: Quadratic Equations, Prev: Polynomial Evaluation, Up: Polynomials + +6.2 Divided Difference Representation of Polynomials +==================================================== + +The functions described here manipulate polynomials stored in Newton’s +divided-difference representation. The use of divided-differences is +described in Abramowitz & Stegun sections 25.1.4 and 25.2.26, and Burden +and Faires, chapter 3, and discussed briefly below. + +Given a function f(x), an nth degree interpolating polynomial P_{n}(x) +can be constructed which agrees with f at n+1 distinct points +x_0,x_1,...,x_{n}. This polynomial can be written in a form known as +Newton’s divided-difference representation + +P_{n}(x) = f(x_0) + sum_{k=1}^n [x_0,x_1,…,x_k] (x-x_0)(x-x_1) … +(x-x_{k-1}) + +where the divided differences [x_0,x_1,...,x_k] are defined in section +25.1.4 of Abramowitz and Stegun. Additionally, it is possible to +construct an interpolating polynomial of degree 2n+1 which also matches +the first derivatives of f at the points x_0,x_1,...,x_n. This is +called the Hermite interpolating polynomial and is defined as + +H_{2n+1}(x) = f(z_0) + sum_{k=1}^{2n+1} [z_0,z_1,…,z_k] (x-z_0)(x-z_1) … +(x-z_{k-1}) + +where the elements of z = \{x_0,x_0,x_1,x_1,...,x_n,x_n\} are defined by +z_{2k} = z_{2k+1} = x_k. The divided-differences [z_0,z_1,...,z_k] are +discussed in Burden and Faires, section 3.4. + + -- Function: int gsl_poly_dd_init (double dd[], const double xa[], + const double ya[], size_t size) + + This function computes a divided-difference representation of the + interpolating polynomial for the points (x, y) stored in the arrays + ‘xa’ and ‘ya’ of length ‘size’. On output the divided-differences + of (‘xa’, ‘ya’) are stored in the array ‘dd’, also of length + ‘size’. Using the notation above, dd[k] = [x_0,x_1,...,x_k]. + + -- Function: double gsl_poly_dd_eval (const double dd[], const + double xa[], const size_t size, const double x) + + This function evaluates the polynomial stored in divided-difference + form in the arrays ‘dd’ and ‘xa’ of length ‘size’ at the point ‘x’. + An inline version of this function is used when ‘HAVE_INLINE’ is + defined. + + -- Function: int gsl_poly_dd_taylor (double c[], double xp, const + double dd[], const double xa[], size_t size, double w[]) + + This function converts the divided-difference representation of a + polynomial to a Taylor expansion. The divided-difference + representation is supplied in the arrays ‘dd’ and ‘xa’ of length + ‘size’. On output the Taylor coefficients of the polynomial + expanded about the point ‘xp’ are stored in the array ‘c’ also of + length ‘size’. A workspace of length ‘size’ must be provided in + the array ‘w’. + + -- Function: int gsl_poly_dd_hermite_init (double dd[], double za[], + const double xa[], const double ya[], const double dya[], + const size_t size) + + This function computes a divided-difference representation of the + interpolating Hermite polynomial for the points (x,y) stored in the + arrays ‘xa’ and ‘ya’ of length ‘size’. Hermite interpolation + constructs polynomials which also match first derivatives dy/dx + which are provided in the array ‘dya’ also of length ‘size’. The + first derivatives can be incorported into the usual + divided-difference algorithm by forming a new dataset z = + \{x_0,x_0,x_1,x_1,...\}, which is stored in the array ‘za’ of + length 2*‘size’ on output. On output the divided-differences of + the Hermite representation are stored in the array ‘dd’, also of + length 2*‘size’. Using the notation above, dd[k] = + [z_0,z_1,...,z_k]. The resulting Hermite polynomial can be + evaluated by calling *note gsl_poly_dd_eval(): b9. and using ‘za’ + for the input argument ‘xa’. + + +File: gsl-ref.info, Node: Quadratic Equations, Next: Cubic Equations, Prev: Divided Difference Representation of Polynomials, Up: Polynomials + +6.3 Quadratic Equations +======================= + + -- Function: int gsl_poly_solve_quadratic (double a, double b, + double c, double * x0, double * x1) + + This function finds the real roots of the quadratic equation, + + a x^2 + b x + c = 0 + + The number of real roots (either zero, one or two) is returned, and + their locations are stored in ‘x0’ and ‘x1’. If no real roots are + found then ‘x0’ and ‘x1’ are not modified. If one real root is + found (i.e. if a=0) then it is stored in ‘x0’. When two real + roots are found they are stored in ‘x0’ and ‘x1’ in ascending + order. The case of coincident roots is not considered special. + For example (x-1)^2=0 will have two roots, which happen to have + exactly equal values. + + The number of roots found depends on the sign of the discriminant + b^2 - 4 a c. This will be subject to rounding and cancellation + errors when computed in double precision, and will also be subject + to errors if the coefficients of the polynomial are inexact. These + errors may cause a discrete change in the number of roots. + However, for polynomials with small integer coefficients the + discriminant can always be computed exactly. + + -- Function: int gsl_poly_complex_solve_quadratic (double a, double b, + double c, gsl_complex * z0, gsl_complex * z1) + + This function finds the complex roots of the quadratic equation, + + a z^2 + b z + c = 0 + + The number of complex roots is returned (either one or two) and the + locations of the roots are stored in ‘z0’ and ‘z1’. The roots are + returned in ascending order, sorted first by their real components + and then by their imaginary components. If only one real root is + found (i.e. if a=0) then it is stored in ‘z0’. + + +File: gsl-ref.info, Node: Cubic Equations, Next: General Polynomial Equations, Prev: Quadratic Equations, Up: Polynomials + +6.4 Cubic Equations +=================== + + -- Function: int gsl_poly_solve_cubic (double a, double b, double c, + double * x0, double * x1, double * x2) + + This function finds the real roots of the cubic equation, + + x^3 + a x^2 + b x + c = 0 + + with a leading coefficient of unity. The number of real roots + (either one or three) is returned, and their locations are stored + in ‘x0’, ‘x1’ and ‘x2’. If one real root is found then only ‘x0’ + is modified. When three real roots are found they are stored in + ‘x0’, ‘x1’ and ‘x2’ in ascending order. The case of coincident + roots is not considered special. For example, the equation + (x-1)^3=0 will have three roots with exactly equal values. As in + the quadratic case, finite precision may cause equal or + closely-spaced real roots to move off the real axis into the + complex plane, leading to a discrete change in the number of real + roots. + + -- Function: int gsl_poly_complex_solve_cubic (double a, double b, + double c, gsl_complex * z0, gsl_complex * z1, gsl_complex + * z2) + + This function finds the complex roots of the cubic equation, + + z^3 + a z^2 + b z + c = 0 + + The number of complex roots is returned (always three) and the + locations of the roots are stored in ‘z0’, ‘z1’ and ‘z2’. The + roots are returned in ascending order, sorted first by their real + components and then by their imaginary components. + + +File: gsl-ref.info, Node: General Polynomial Equations, Next: Examples<2>, Prev: Cubic Equations, Up: Polynomials + +6.5 General Polynomial Equations +================================ + +The roots of polynomial equations cannot be found analytically beyond +the special cases of the quadratic, cubic and quartic equation. The +algorithm described in this section uses an iterative method to find the +approximate locations of roots of higher order polynomials. + + -- Type: gsl_poly_complex_workspace + + This workspace contains parameters used for finding roots of + general polynomials + + -- Function: gsl_poly_complex_workspace * + gsl_poly_complex_workspace_alloc (size_t n) + + This function allocates space for a *note + gsl_poly_complex_workspace: c3. struct and a workspace suitable for + solving a polynomial with ‘n’ coefficients using the routine *note + gsl_poly_complex_solve(): c5. + + The function returns a pointer to the newly allocated *note + gsl_poly_complex_workspace: c3. if no errors were detected, and a + null pointer in the case of error. + + -- Function: void gsl_poly_complex_workspace_free + (gsl_poly_complex_workspace * w) + + This function frees all the memory associated with the workspace + ‘w’. + + -- Function: int gsl_poly_complex_solve (const double * a, size_t n, + gsl_poly_complex_workspace * w, gsl_complex_packed_ptr z) + + This function computes the roots of the general polynomial + + P(x) = a_0 + a_1 x + a_2 x^2 + … + a_{n-1} x^{n-1} + + using balanced-QR reduction of the companion matrix. The parameter + ‘n’ specifies the length of the coefficient array. The coefficient + of the highest order term must be non-zero. The function requires + a workspace ‘w’ of the appropriate size. The n-1 roots are + returned in the packed complex array ‘z’ of length 2(n-1), + alternating real and imaginary parts. + + The function returns ‘GSL_SUCCESS’ if all the roots are found. If + the QR reduction does not converge, the error handler is invoked + with an error code of ‘GSL_EFAILED’. Note that due to finite + precision, roots of higher multiplicity are returned as a cluster + of simple roots with reduced accuracy. The solution of polynomials + with higher-order roots requires specialized algorithms that take + the multiplicity structure into account (see e.g. Z. Zeng, + Algorithm 835, ACM Transactions on Mathematical Software, Volume + 30, Issue 2 (2004), pp 218–236). + + +File: gsl-ref.info, Node: Examples<2>, Next: References and Further Reading<2>, Prev: General Polynomial Equations, Up: Polynomials + +6.6 Examples +============ + +To demonstrate the use of the general polynomial solver we will take the +polynomial P(x) = x^5 - 1 which has these roots: + +1, e^{2*pi i / 5}, e^{4*pi i / 5}, e^{6*pi i / 5}, e^{8*pi i / 5} + +The following program will find these roots. + + #include + #include + + int + main (void) + { + int i; + /* coefficients of P(x) = -1 + x^5 */ + double a[6] = { -1, 0, 0, 0, 0, 1 }; + double z[10]; + + gsl_poly_complex_workspace * w + = gsl_poly_complex_workspace_alloc (6); + + gsl_poly_complex_solve (a, 6, w, z); + + gsl_poly_complex_workspace_free (w); + + for (i = 0; i < 5; i++) + { + printf ("z%d = %+.18f %+.18f\n", + i, z[2*i], z[2*i+1]); + } + + return 0; + } + +The output of the program is + + z0 = -0.809016994374947673 +0.587785252292473359 + z1 = -0.809016994374947673 -0.587785252292473359 + z2 = +0.309016994374947507 +0.951056516295152976 + z3 = +0.309016994374947507 -0.951056516295152976 + z4 = +0.999999999999999889 +0.000000000000000000 + +which agrees with the analytic result, z_n = \exp(2 \pi n i/5). + + +File: gsl-ref.info, Node: References and Further Reading<2>, Prev: Examples<2>, Up: Polynomials + +6.7 References and Further Reading +================================== + +The balanced-QR method and its error analysis are described in the +following papers, + + * R.S. Martin, G. Peters and J.H. Wilkinson, “The QR Algorithm for + Real Hessenberg Matrices”, Numerische Mathematik, 14 (1970), + 219–231. + + * B.N. Parlett and C. Reinsch, “Balancing a Matrix for Calculation of + Eigenvalues and Eigenvectors”, Numerische Mathematik, 13 (1969), + 293–304. + + * A. Edelman and H. Murakami, “Polynomial roots from companion matrix + eigenvalues”, Mathematics of Computation, Vol.: 64, No.: 210 + (1995), 763–776. + +The formulas for divided differences are given in the following texts, + + * Abramowitz and Stegun, Handbook of Mathematical Functions, Sections + 25.1.4 and 25.2.26. + + * R. L. Burden and J. D. Faires, Numerical Analysis, 9th edition, + ISBN 0-538-73351-9, 2011. + + +File: gsl-ref.info, Node: Special Functions, Next: Vectors and Matrices, Prev: Polynomials, Up: Top + +7 Special Functions +******************* + +This chapter describes the GSL special function library. The library +includes routines for calculating the values of Airy functions, Bessel +functions, Clausen functions, Coulomb wave functions, Coupling +coefficients, the Dawson function, Debye functions, Dilogarithms, +Elliptic integrals, Jacobi elliptic functions, Error functions, +Exponential integrals, Fermi-Dirac functions, Gamma functions, +Gegenbauer functions, Hermite polynomials and functions, Hypergeometric +functions, Laguerre functions, Legendre functions and Spherical +Harmonics, the Psi (Digamma) Function, Synchrotron functions, Transport +functions, Trigonometric functions and Zeta functions. Each routine +also computes an estimate of the numerical error in the calculated value +of the function. + +The functions in this chapter are declared in individual header files, +such as ‘gsl_sf_airy.h’, ‘gsl_sf_bessel.h’, etc. The complete set of +header files can be included using the file ‘gsl_sf.h’. + +* Menu: + +* Usage:: +* The gsl_sf_result struct:: +* Modes:: +* Airy Functions and Derivatives:: +* Bessel Functions:: +* Clausen Functions:: +* Coulomb Functions:: +* Coupling Coefficients:: +* Dawson Function:: +* Debye Functions:: +* Dilogarithm:: +* Elementary Operations:: +* Elliptic Integrals:: +* Elliptic Functions (Jacobi): Elliptic Functions Jacobi. +* Error Functions:: +* Exponential Functions:: +* Exponential Integrals:: +* Fermi-Dirac Function:: +* Gamma and Beta Functions:: +* Gegenbauer Functions:: +* Hermite Polynomials and Functions:: +* Hypergeometric Functions:: +* Laguerre Functions:: +* Lambert W Functions:: +* Legendre Functions and Spherical Harmonics:: +* Logarithm and Related Functions:: +* Mathieu Functions:: +* Power Function:: +* Psi (Digamma) Function: Psi Digamma Function. +* Synchrotron Functions:: +* Transport Functions:: +* Trigonometric Functions:: +* Zeta Functions:: +* Examples: Examples<3>. +* References and Further Reading: References and Further Reading<3>. + + +File: gsl-ref.info, Node: Usage, Next: The gsl_sf_result struct, Up: Special Functions + +7.1 Usage +========= + +The special functions are available in two calling conventions, a +`natural form' which returns the numerical value of the function and an +`error-handling form' which returns an error code. The two types of +function provide alternative ways of accessing the same underlying code. + +The `natural form' returns only the value of the function and can be +used directly in mathematical expressions. For example, the following +function call will compute the value of the Bessel function J_0(x): + + double y = gsl_sf_bessel_J0 (x); + +There is no way to access an error code or to estimate the error using +this method. To allow access to this information the alternative +error-handling form stores the value and error in a modifiable argument: + + gsl_sf_result result; + int status = gsl_sf_bessel_J0_e (x, &result); + +The error-handling functions have the suffix ‘_e’. The returned status +value indicates error conditions such as overflow, underflow or loss of +precision. If there are no errors the error-handling functions return +‘GSL_SUCCESS’. + + +File: gsl-ref.info, Node: The gsl_sf_result struct, Next: Modes, Prev: Usage, Up: Special Functions + +7.2 The gsl_sf_result struct +============================ + +The error handling form of the special functions always calculate an +error estimate along with the value of the result. Therefore, +structures are provided for amalgamating a value and error estimate. +These structures are declared in the header file ‘gsl_sf_result.h’. + +The following struct contains value and error fields. + + -- Type: gsl_sf_result + + typedef struct + { + double val; + double err; + } gsl_sf_result; + + The field ‘val’ contains the value and the field ‘err’ contains an + estimate of the absolute error in the value. + +In some cases, an overflow or underflow can be detected and handled by a +function. In this case, it may be possible to return a scaling exponent +as well as an error/value pair in order to save the result from +exceeding the dynamic range of the built-in types. The following struct +contains value and error fields as well as an exponent field such that +the actual result is obtained as ‘result * 10^(e10)’. + + -- Type: gsl_sf_result_e10 + + typedef struct + { + double val; + double err; + int e10; + } gsl_sf_result_e10; + + +File: gsl-ref.info, Node: Modes, Next: Airy Functions and Derivatives, Prev: The gsl_sf_result struct, Up: Special Functions + +7.3 Modes +========= + +The goal of the library is to achieve double precision accuracy wherever +possible. However the cost of evaluating some special functions to +double precision can be significant, particularly where very high order +terms are required. In these cases a ‘mode’ argument, of type *note +gsl_mode_t: d0. allows the accuracy of the function to be reduced in +order to improve performance. The following precision levels are +available for the mode argument, + + -- Type: gsl_mode_t + + -- Macro: GSL_PREC_DOUBLE + + Double-precision, a relative accuracy of approximately 2 * + 10^{-16}. + + -- Macro: GSL_PREC_SINGLE + + Single-precision, a relative accuracy of approximately + 10^{-7}. + + -- Macro: GSL_PREC_APPROX + + Approximate values, a relative accuracy of approximately 5 * + 10^{-4}. + +The approximate mode provides the fastest evaluation at the lowest +accuracy. + + +File: gsl-ref.info, Node: Airy Functions and Derivatives, Next: Bessel Functions, Prev: Modes, Up: Special Functions + +7.4 Airy Functions and Derivatives +================================== + +The Airy functions Ai(x) and Bi(x) are defined by the integral +representations, + + Ai(x) = (1/pi) int_0^infty cos((1/3) t^3 + xt) dt + Bi(x) = (1/pi) int_0^infty (e^(-(1/3) t^3 + xt) + sin((1/3) t^3 + xt)) dt + +For further information see Abramowitz & Stegun, Section 10.4. The Airy +functions are defined in the header file ‘gsl_sf_airy.h’. + +* Menu: + +* Airy Functions:: +* Derivatives of Airy Functions:: +* Zeros of Airy Functions:: +* Zeros of Derivatives of Airy Functions:: + + +File: gsl-ref.info, Node: Airy Functions, Next: Derivatives of Airy Functions, Up: Airy Functions and Derivatives + +7.4.1 Airy Functions +-------------------- + + -- Function: double gsl_sf_airy_Ai (double x, gsl_mode_t mode) + -- Function: int gsl_sf_airy_Ai_e (double x, gsl_mode_t mode, + gsl_sf_result * result) + + These routines compute the Airy function Ai(x) with an accuracy + specified by *note mode: d8. + + -- Function: double gsl_sf_airy_Bi (double x, gsl_mode_t mode) + -- Function: int gsl_sf_airy_Bi_e (double x, gsl_mode_t mode, + gsl_sf_result * result) + + These routines compute the Airy function Bi(x) with an accuracy + specified by *note mode: d8. + + -- Function: double gsl_sf_airy_Ai_scaled (double x, gsl_mode_t mode) + -- Function: int gsl_sf_airy_Ai_scaled_e (double x, gsl_mode_t mode, + gsl_sf_result * result) + + These routines compute a scaled version of the Airy function S_A(x) + Ai(x). For x > 0 the scaling factor S_A(x) is \exp(+(2/3) + x^{3/2}), and is 1 for x < 0. + + -- Function: double gsl_sf_airy_Bi_scaled (double x, gsl_mode_t mode) + -- Function: int gsl_sf_airy_Bi_scaled_e (double x, gsl_mode_t mode, + gsl_sf_result * result) + + These routines compute a scaled version of the Airy function S_B(x) + Bi(x). For x > 0 the scaling factor S_B(x) is exp(-(2/3) x^{3/2}), + and is 1 for x < 0. + + +File: gsl-ref.info, Node: Derivatives of Airy Functions, Next: Zeros of Airy Functions, Prev: Airy Functions, Up: Airy Functions and Derivatives + +7.4.2 Derivatives of Airy Functions +----------------------------------- + + -- Function: double gsl_sf_airy_Ai_deriv (double x, gsl_mode_t mode) + -- Function: int gsl_sf_airy_Ai_deriv_e (double x, gsl_mode_t mode, + gsl_sf_result * result) + + These routines compute the Airy function derivative Ai'(x) with an + accuracy specified by *note mode: d8. + + -- Function: double gsl_sf_airy_Bi_deriv (double x, gsl_mode_t mode) + -- Function: int gsl_sf_airy_Bi_deriv_e (double x, gsl_mode_t mode, + gsl_sf_result * result) + + These routines compute the Airy function derivative Bi'(x) with an + accuracy specified by *note mode: d8. + + -- Function: double gsl_sf_airy_Ai_deriv_scaled (double x, + gsl_mode_t mode) + -- Function: int gsl_sf_airy_Ai_deriv_scaled_e (double x, + gsl_mode_t mode, gsl_sf_result * result) + + These routines compute the scaled Airy function derivative S_A(x) + Ai'(x). For x > 0 the scaling factor S_A(x) is \exp(+(2/3) + x^{3/2}), and is 1 for x < 0. + + -- Function: double gsl_sf_airy_Bi_deriv_scaled (double x, + gsl_mode_t mode) + -- Function: int gsl_sf_airy_Bi_deriv_scaled_e (double x, + gsl_mode_t mode, gsl_sf_result * result) + + These routines compute the scaled Airy function derivative S_B(x) + Bi'(x). For x > 0 the scaling factor S_B(x) is exp(-(2/3) + x^{3/2}), and is 1 for x < 0. + + +File: gsl-ref.info, Node: Zeros of Airy Functions, Next: Zeros of Derivatives of Airy Functions, Prev: Derivatives of Airy Functions, Up: Airy Functions and Derivatives + +7.4.3 Zeros of Airy Functions +----------------------------- + + -- Function: double gsl_sf_airy_zero_Ai (unsigned int s) + -- Function: int gsl_sf_airy_zero_Ai_e (unsigned int s, gsl_sf_result + * result) + + These routines compute the location of the ‘s’-th zero of the Airy + function Ai(x). + + -- Function: double gsl_sf_airy_zero_Bi (unsigned int s) + -- Function: int gsl_sf_airy_zero_Bi_e (unsigned int s, gsl_sf_result + * result) + + These routines compute the location of the ‘s’-th zero of the Airy + function Bi(x). + + +File: gsl-ref.info, Node: Zeros of Derivatives of Airy Functions, Prev: Zeros of Airy Functions, Up: Airy Functions and Derivatives + +7.4.4 Zeros of Derivatives of Airy Functions +-------------------------------------------- + + -- Function: double gsl_sf_airy_zero_Ai_deriv (unsigned int s) + -- Function: int gsl_sf_airy_zero_Ai_deriv_e (unsigned int s, + gsl_sf_result * result) + + These routines compute the location of the ‘s’-th zero of the Airy + function derivative Ai'(x). + + -- Function: double gsl_sf_airy_zero_Bi_deriv (unsigned int s) + -- Function: int gsl_sf_airy_zero_Bi_deriv_e (unsigned int s, + gsl_sf_result * result) + + These routines compute the location of the ‘s’-th zero of the Airy + function derivative Bi'(x). + + +File: gsl-ref.info, Node: Bessel Functions, Next: Clausen Functions, Prev: Airy Functions and Derivatives, Up: Special Functions + +7.5 Bessel Functions +==================== + +The routines described in this section compute the Cylindrical Bessel +functions J_n(x), Y_n(x), Modified cylindrical Bessel functions I_n(x), +K_n(x), Spherical Bessel functions j_l(x), y_l(x), and Modified +Spherical Bessel functions i_l(x), k_l(x). For more information see +Abramowitz & Stegun, Chapters 9 and 10. The Bessel functions are +defined in the header file ‘gsl_sf_bessel.h’. + +* Menu: + +* Regular Cylindrical Bessel Functions:: +* Irregular Cylindrical Bessel Functions:: +* Regular Modified Cylindrical Bessel Functions:: +* Irregular Modified Cylindrical Bessel Functions:: +* Regular Spherical Bessel Functions:: +* Irregular Spherical Bessel Functions:: +* Regular Modified Spherical Bessel Functions:: +* Irregular Modified Spherical Bessel Functions:: +* Regular Bessel Function—Fractional Order:: +* Irregular Bessel Functions—Fractional Order:: +* Regular Modified Bessel Functions—Fractional Order:: +* Irregular Modified Bessel Functions—Fractional Order:: +* Zeros of Regular Bessel Functions:: + + +File: gsl-ref.info, Node: Regular Cylindrical Bessel Functions, Next: Irregular Cylindrical Bessel Functions, Up: Bessel Functions + +7.5.1 Regular Cylindrical Bessel Functions +------------------------------------------ + + -- Function: double gsl_sf_bessel_J0 (double x) + -- Function: int gsl_sf_bessel_J0_e (double x, gsl_sf_result * result) + + These routines compute the regular cylindrical Bessel function of + zeroth order, J_0(x). + + -- Function: double gsl_sf_bessel_J1 (double x) + -- Function: int gsl_sf_bessel_J1_e (double x, gsl_sf_result * result) + + These routines compute the regular cylindrical Bessel function of + first order, J_1(x). + + -- Function: double gsl_sf_bessel_Jn (int n, double x) + -- Function: int gsl_sf_bessel_Jn_e (int n, double x, gsl_sf_result + * result) + + These routines compute the regular cylindrical Bessel function of + order ‘n’, J_n(x). + + -- Function: int gsl_sf_bessel_Jn_array (int nmin, int nmax, double x, + double result_array[]) + + This routine computes the values of the regular cylindrical Bessel + functions J_n(x) for n from ‘nmin’ to ‘nmax’ inclusive, storing the + results in the array ‘result_array’. The values are computed using + recurrence relations for efficiency, and therefore may differ + slightly from the exact values. + + +File: gsl-ref.info, Node: Irregular Cylindrical Bessel Functions, Next: Regular Modified Cylindrical Bessel Functions, Prev: Regular Cylindrical Bessel Functions, Up: Bessel Functions + +7.5.2 Irregular Cylindrical Bessel Functions +-------------------------------------------- + + -- Function: double gsl_sf_bessel_Y0 (double x) + -- Function: int gsl_sf_bessel_Y0_e (double x, gsl_sf_result * result) + + These routines compute the irregular cylindrical Bessel function of + zeroth order, Y_0(x), for x>0. + + -- Function: double gsl_sf_bessel_Y1 (double x) + -- Function: int gsl_sf_bessel_Y1_e (double x, gsl_sf_result * result) + + These routines compute the irregular cylindrical Bessel function of + first order, Y_1(x), for x>0. + + -- Function: double gsl_sf_bessel_Yn (int n, double x) + -- Function: int gsl_sf_bessel_Yn_e (int n, double x, gsl_sf_result + * result) + + These routines compute the irregular cylindrical Bessel function of + order ‘n’, Y_n(x), for x>0. + + -- Function: int gsl_sf_bessel_Yn_array (int nmin, int nmax, double x, + double result_array[]) + + This routine computes the values of the irregular cylindrical + Bessel functions Y_n(x) for n from ‘nmin’ to ‘nmax’ inclusive, + storing the results in the array ‘result_array’. The domain of the + function is x>0. The values are computed using recurrence + relations for efficiency, and therefore may differ slightly from + the exact values. + + +File: gsl-ref.info, Node: Regular Modified Cylindrical Bessel Functions, Next: Irregular Modified Cylindrical Bessel Functions, Prev: Irregular Cylindrical Bessel Functions, Up: Bessel Functions + +7.5.3 Regular Modified Cylindrical Bessel Functions +--------------------------------------------------- + + -- Function: double gsl_sf_bessel_I0 (double x) + -- Function: int gsl_sf_bessel_I0_e (double x, gsl_sf_result * result) + + These routines compute the regular modified cylindrical Bessel + function of zeroth order, I_0(x). + + -- Function: double gsl_sf_bessel_I1 (double x) + -- Function: int gsl_sf_bessel_I1_e (double x, gsl_sf_result * result) + + These routines compute the regular modified cylindrical Bessel + function of first order, I_1(x). + + -- Function: double gsl_sf_bessel_In (int n, double x) + -- Function: int gsl_sf_bessel_In_e (int n, double x, gsl_sf_result + * result) + + These routines compute the regular modified cylindrical Bessel + function of order ‘n’, I_n(x). + + -- Function: int gsl_sf_bessel_In_array (int nmin, int nmax, double x, + double result_array[]) + + This routine computes the values of the regular modified + cylindrical Bessel functions I_n(x) for n from ‘nmin’ to ‘nmax’ + inclusive, storing the results in the array ‘result_array’. The + start of the range ‘nmin’ must be positive or zero. The values are + computed using recurrence relations for efficiency, and therefore + may differ slightly from the exact values. + + -- Function: double gsl_sf_bessel_I0_scaled (double x) + -- Function: int gsl_sf_bessel_I0_scaled_e (double x, gsl_sf_result + * result) + + These routines compute the scaled regular modified cylindrical + Bessel function of zeroth order \exp(-|x|) I_0(x). + + -- Function: double gsl_sf_bessel_I1_scaled (double x) + -- Function: int gsl_sf_bessel_I1_scaled_e (double x, gsl_sf_result + * result) + + These routines compute the scaled regular modified cylindrical + Bessel function of first order \exp(-|x|) I_1(x). + + -- Function: double gsl_sf_bessel_In_scaled (int n, double x) + -- Function: int gsl_sf_bessel_In_scaled_e (int n, double x, + gsl_sf_result * result) + + These routines compute the scaled regular modified cylindrical + Bessel function of order ‘n’, \exp(-|x|) I_n(x) + + -- Function: int gsl_sf_bessel_In_scaled_array (int nmin, int nmax, + double x, double result_array[]) + + This routine computes the values of the scaled regular cylindrical + Bessel functions \exp(-|x|) I_n(x) for n from ‘nmin’ to ‘nmax’ + inclusive, storing the results in the array ‘result_array’. The + start of the range ‘nmin’ must be positive or zero. The values are + computed using recurrence relations for efficiency, and therefore + may differ slightly from the exact values. + + +File: gsl-ref.info, Node: Irregular Modified Cylindrical Bessel Functions, Next: Regular Spherical Bessel Functions, Prev: Regular Modified Cylindrical Bessel Functions, Up: Bessel Functions + +7.5.4 Irregular Modified Cylindrical Bessel Functions +----------------------------------------------------- + + -- Function: double gsl_sf_bessel_K0 (double x) + -- Function: int gsl_sf_bessel_K0_e (double x, gsl_sf_result * result) + + These routines compute the irregular modified cylindrical Bessel + function of zeroth order, K_0(x), for x > 0. + + -- Function: double gsl_sf_bessel_K1 (double x) + -- Function: int gsl_sf_bessel_K1_e (double x, gsl_sf_result * result) + + These routines compute the irregular modified cylindrical Bessel + function of first order, K_1(x), for x > 0. + + -- Function: double gsl_sf_bessel_Kn (int n, double x) + -- Function: int gsl_sf_bessel_Kn_e (int n, double x, gsl_sf_result + * result) + + These routines compute the irregular modified cylindrical Bessel + function of order ‘n’, K_n(x), for x > 0. + + -- Function: int gsl_sf_bessel_Kn_array (int nmin, int nmax, double x, + double result_array[]) + + This routine computes the values of the irregular modified + cylindrical Bessel functions K_n(x) for n from ‘nmin’ to ‘nmax’ + inclusive, storing the results in the array ‘result_array’. The + start of the range ‘nmin’ must be positive or zero. The domain of + the function is x>0. The values are computed using recurrence + relations for efficiency, and therefore may differ slightly from + the exact values. + + -- Function: double gsl_sf_bessel_K0_scaled (double x) + -- Function: int gsl_sf_bessel_K0_scaled_e (double x, gsl_sf_result + * result) + + These routines compute the scaled irregular modified cylindrical + Bessel function of zeroth order \exp(x) K_0(x) for x>0. + + -- Function: double gsl_sf_bessel_K1_scaled (double x) + -- Function: int gsl_sf_bessel_K1_scaled_e (double x, gsl_sf_result + * result) + + These routines compute the scaled irregular modified cylindrical + Bessel function of first order \exp(x) K_1(x) for x>0. + + -- Function: double gsl_sf_bessel_Kn_scaled (int n, double x) + -- Function: int gsl_sf_bessel_Kn_scaled_e (int n, double x, + gsl_sf_result * result) + + These routines compute the scaled irregular modified cylindrical + Bessel function of order ‘n’, \exp(x) K_n(x), for x>0. + + -- Function: int gsl_sf_bessel_Kn_scaled_array (int nmin, int nmax, + double x, double result_array[]) + + This routine computes the values of the scaled irregular + cylindrical Bessel functions \exp(x) K_n(x) for n from ‘nmin’ to + ‘nmax’ inclusive, storing the results in the array ‘result_array’. + The start of the range ‘nmin’ must be positive or zero. The domain + of the function is x>0. The values are computed using recurrence + relations for efficiency, and therefore may differ slightly from + the exact values. + + +File: gsl-ref.info, Node: Regular Spherical Bessel Functions, Next: Irregular Spherical Bessel Functions, Prev: Irregular Modified Cylindrical Bessel Functions, Up: Bessel Functions + +7.5.5 Regular Spherical Bessel Functions +---------------------------------------- + + -- Function: double gsl_sf_bessel_j0 (double x) + -- Function: int gsl_sf_bessel_j0_e (double x, gsl_sf_result * result) + + These routines compute the regular spherical Bessel function of + zeroth order, j_0(x) = \sin(x)/x. + + -- Function: double gsl_sf_bessel_j1 (double x) + -- Function: int gsl_sf_bessel_j1_e (double x, gsl_sf_result * result) + + These routines compute the regular spherical Bessel function of + first order, j_1(x) = (\sin(x)/x - \cos(x))/x. + + -- Function: double gsl_sf_bessel_j2 (double x) + -- Function: int gsl_sf_bessel_j2_e (double x, gsl_sf_result * result) + + These routines compute the regular spherical Bessel function of + second order, j_2(x) = ((3/x^2 - 1)\sin(x) - 3\cos(x)/x)/x. + + -- Function: double gsl_sf_bessel_jl (int l, double x) + -- Function: int gsl_sf_bessel_jl_e (int l, double x, gsl_sf_result + * result) + + These routines compute the regular spherical Bessel function of + order ‘l’, j_l(x), for l \geq 0 and x \geq 0. + + -- Function: int gsl_sf_bessel_jl_array (int lmax, double x, + double result_array[]) + + This routine computes the values of the regular spherical Bessel + functions j_l(x) for l from 0 to ‘lmax’ inclusive for lmax \geq 0 + and x \geq 0, storing the results in the array ‘result_array’. The + values are computed using recurrence relations for efficiency, and + therefore may differ slightly from the exact values. + + -- Function: int gsl_sf_bessel_jl_steed_array (int lmax, double x, + double * result_array) + + This routine uses Steed’s method to compute the values of the + regular spherical Bessel functions j_l(x) for l from 0 to ‘lmax’ + inclusive for lmax \geq 0 and x \geq 0, storing the results in the + array ‘result_array’. The Steed/Barnett algorithm is described in + Comp. Phys. Comm. 21, 297 (1981). Steed’s method is more stable + than the recurrence used in the other functions but is also slower. + + +File: gsl-ref.info, Node: Irregular Spherical Bessel Functions, Next: Regular Modified Spherical Bessel Functions, Prev: Regular Spherical Bessel Functions, Up: Bessel Functions + +7.5.6 Irregular Spherical Bessel Functions +------------------------------------------ + + -- Function: double gsl_sf_bessel_y0 (double x) + -- Function: int gsl_sf_bessel_y0_e (double x, gsl_sf_result * result) + + These routines compute the irregular spherical Bessel function of + zeroth order, y_0(x) = -\cos(x)/x. + + -- Function: double gsl_sf_bessel_y1 (double x) + -- Function: int gsl_sf_bessel_y1_e (double x, gsl_sf_result * result) + + These routines compute the irregular spherical Bessel function of + first order, y_1(x) = -(\cos(x)/x + \sin(x))/x. + + -- Function: double gsl_sf_bessel_y2 (double x) + -- Function: int gsl_sf_bessel_y2_e (double x, gsl_sf_result * result) + + These routines compute the irregular spherical Bessel function of + second order, y_2(x) = (-3/x^3 + 1/x)\cos(x) - (3/x^2)\sin(x). + + -- Function: double gsl_sf_bessel_yl (int l, double x) + -- Function: int gsl_sf_bessel_yl_e (int l, double x, gsl_sf_result + * result) + + These routines compute the irregular spherical Bessel function of + order ‘l’, y_l(x), for l \geq 0. + + -- Function: int gsl_sf_bessel_yl_array (int lmax, double x, + double result_array[]) + + This routine computes the values of the irregular spherical Bessel + functions y_l(x) for l from 0 to ‘lmax’ inclusive for lmax \geq 0, + storing the results in the array ‘result_array’. The values are + computed using recurrence relations for efficiency, and therefore + may differ slightly from the exact values. + + +File: gsl-ref.info, Node: Regular Modified Spherical Bessel Functions, Next: Irregular Modified Spherical Bessel Functions, Prev: Irregular Spherical Bessel Functions, Up: Bessel Functions + +7.5.7 Regular Modified Spherical Bessel Functions +------------------------------------------------- + +The regular modified spherical Bessel functions i_l(x) are related to +the modified Bessel functions of fractional order, i_l(x) = +\sqrt{\pi/(2x)} I_{l+1/2}(x) + + -- Function: double gsl_sf_bessel_i0_scaled (double x) + -- Function: int gsl_sf_bessel_i0_scaled_e (double x, gsl_sf_result + * result) + + These routines compute the scaled regular modified spherical Bessel + function of zeroth order, \exp(-|x|) i_0(x). + + -- Function: double gsl_sf_bessel_i1_scaled (double x) + -- Function: int gsl_sf_bessel_i1_scaled_e (double x, gsl_sf_result + * result) + + These routines compute the scaled regular modified spherical Bessel + function of first order, \exp(-|x|) i_1(x). + + -- Function: double gsl_sf_bessel_i2_scaled (double x) + -- Function: int gsl_sf_bessel_i2_scaled_e (double x, gsl_sf_result + * result) + + These routines compute the scaled regular modified spherical Bessel + function of second order, \exp(-|x|) i_2(x) + + -- Function: double gsl_sf_bessel_il_scaled (int l, double x) + -- Function: int gsl_sf_bessel_il_scaled_e (int l, double x, + gsl_sf_result * result) + + These routines compute the scaled regular modified spherical Bessel + function of order ‘l’, \exp(-|x|) i_l(x) + + -- Function: int gsl_sf_bessel_il_scaled_array (int lmax, double x, + double result_array[]) + + This routine computes the values of the scaled regular modified + spherical Bessel functions \exp(-|x|) i_l(x) for l from 0 to ‘lmax’ + inclusive for lmax \geq 0, storing the results in the array + ‘result_array’. The values are computed using recurrence relations + for efficiency, and therefore may differ slightly from the exact + values. + + +File: gsl-ref.info, Node: Irregular Modified Spherical Bessel Functions, Next: Regular Bessel Function—Fractional Order, Prev: Regular Modified Spherical Bessel Functions, Up: Bessel Functions + +7.5.8 Irregular Modified Spherical Bessel Functions +--------------------------------------------------- + +The irregular modified spherical Bessel functions k_l(x) are related to +the irregular modified Bessel functions of fractional order, k_l(x) = +\sqrt{\pi/(2x)} K_{l+1/2}(x). + + -- Function: double gsl_sf_bessel_k0_scaled (double x) + -- Function: int gsl_sf_bessel_k0_scaled_e (double x, gsl_sf_result + * result) + + These routines compute the scaled irregular modified spherical + Bessel function of zeroth order, \exp(x) k_0(x), for x>0. + + -- Function: double gsl_sf_bessel_k1_scaled (double x) + -- Function: int gsl_sf_bessel_k1_scaled_e (double x, gsl_sf_result + * result) + + These routines compute the scaled irregular modified spherical + Bessel function of first order, \exp(x) k_1(x), for x>0. + + -- Function: double gsl_sf_bessel_k2_scaled (double x) + -- Function: int gsl_sf_bessel_k2_scaled_e (double x, gsl_sf_result + * result) + + These routines compute the scaled irregular modified spherical + Bessel function of second order, \exp(x) k_2(x), for x>0. + + -- Function: double gsl_sf_bessel_kl_scaled (int l, double x) + -- Function: int gsl_sf_bessel_kl_scaled_e (int l, double x, + gsl_sf_result * result) + + These routines compute the scaled irregular modified spherical + Bessel function of order ‘l’, \exp(x) k_l(x), for x>0. + + -- Function: int gsl_sf_bessel_kl_scaled_array (int lmax, double x, + double result_array[]) + + This routine computes the values of the scaled irregular modified + spherical Bessel functions \exp(x) k_l(x) for l from 0 to ‘lmax’ + inclusive for lmax \geq 0 and x>0, storing the results in the array + ‘result_array’. The values are computed using recurrence relations + for efficiency, and therefore may differ slightly from the exact + values. + + +File: gsl-ref.info, Node: Regular Bessel Function—Fractional Order, Next: Irregular Bessel Functions—Fractional Order, Prev: Irregular Modified Spherical Bessel Functions, Up: Bessel Functions + +7.5.9 Regular Bessel Function—Fractional Order +---------------------------------------------- + + -- Function: double gsl_sf_bessel_Jnu (double nu, double x) + -- Function: int gsl_sf_bessel_Jnu_e (double nu, double x, + gsl_sf_result * result) + + These routines compute the regular cylindrical Bessel function of + fractional order \nu, J_\nu(x). + + -- Function: int gsl_sf_bessel_sequence_Jnu_e (double nu, + gsl_mode_t mode, size_t size, double v[]) + + This function computes the regular cylindrical Bessel function of + fractional order \nu, J_\nu(x), evaluated at a series of x values. + The array ‘v’ of length ‘size’ contains the x values. They are + assumed to be strictly ordered and positive. The array is + over-written with the values of J_\nu(x_i). + + +File: gsl-ref.info, Node: Irregular Bessel Functions—Fractional Order, Next: Regular Modified Bessel Functions—Fractional Order, Prev: Regular Bessel Function—Fractional Order, Up: Bessel Functions + +7.5.10 Irregular Bessel Functions—Fractional Order +-------------------------------------------------- + + -- Function: double gsl_sf_bessel_Ynu (double nu, double x) + -- Function: int gsl_sf_bessel_Ynu_e (double nu, double x, + gsl_sf_result * result) + + These routines compute the irregular cylindrical Bessel function of + fractional order \nu, Y_\nu(x). + + +File: gsl-ref.info, Node: Regular Modified Bessel Functions—Fractional Order, Next: Irregular Modified Bessel Functions—Fractional Order, Prev: Irregular Bessel Functions—Fractional Order, Up: Bessel Functions + +7.5.11 Regular Modified Bessel Functions—Fractional Order +--------------------------------------------------------- + + -- Function: double gsl_sf_bessel_Inu (double nu, double x) + -- Function: int gsl_sf_bessel_Inu_e (double nu, double x, + gsl_sf_result * result) + + These routines compute the regular modified Bessel function of + fractional order \nu, I_\nu(x) for x>0, \nu>0. + + -- Function: double gsl_sf_bessel_Inu_scaled (double nu, double x) + -- Function: int gsl_sf_bessel_Inu_scaled_e (double nu, double x, + gsl_sf_result * result) + + These routines compute the scaled regular modified Bessel function + of fractional order \nu, \exp(-|x|)I_\nu(x) for x>0, \nu>0. + + +File: gsl-ref.info, Node: Irregular Modified Bessel Functions—Fractional Order, Next: Zeros of Regular Bessel Functions, Prev: Regular Modified Bessel Functions—Fractional Order, Up: Bessel Functions + +7.5.12 Irregular Modified Bessel Functions—Fractional Order +----------------------------------------------------------- + + -- Function: double gsl_sf_bessel_Knu (double nu, double x) + -- Function: int gsl_sf_bessel_Knu_e (double nu, double x, + gsl_sf_result * result) + + These routines compute the irregular modified Bessel function of + fractional order \nu, K_\nu(x) for x>0, \nu>0. + + -- Function: double gsl_sf_bessel_lnKnu (double nu, double x) + -- Function: int gsl_sf_bessel_lnKnu_e (double nu, double x, + gsl_sf_result * result) + + These routines compute the logarithm of the irregular modified + Bessel function of fractional order \nu, \ln(K_\nu(x)) for x>0, + \nu>0. + + -- Function: double gsl_sf_bessel_Knu_scaled (double nu, double x) + -- Function: int gsl_sf_bessel_Knu_scaled_e (double nu, double x, + gsl_sf_result * result) + + These routines compute the scaled irregular modified Bessel + function of fractional order \nu, \exp(+|x|) K_\nu(x) for x>0, + \nu>0. + + +File: gsl-ref.info, Node: Zeros of Regular Bessel Functions, Prev: Irregular Modified Bessel Functions—Fractional Order, Up: Bessel Functions + +7.5.13 Zeros of Regular Bessel Functions +---------------------------------------- + + -- Function: double gsl_sf_bessel_zero_J0 (unsigned int s) + -- Function: int gsl_sf_bessel_zero_J0_e (unsigned int s, gsl_sf_result + * result) + + These routines compute the location of the ‘s’-th positive zero of + the Bessel function J_0(x). + + -- Function: double gsl_sf_bessel_zero_J1 (unsigned int s) + -- Function: int gsl_sf_bessel_zero_J1_e (unsigned int s, gsl_sf_result + * result) + + These routines compute the location of the ‘s’-th positive zero of + the Bessel function J_1(x). + + -- Function: double gsl_sf_bessel_zero_Jnu (double nu, unsigned int s) + -- Function: int gsl_sf_bessel_zero_Jnu_e (double nu, unsigned int s, + gsl_sf_result * result) + + These routines compute the location of the ‘s’-th positive zero of + the Bessel function J_\nu(x). The current implementation does not + support negative values of ‘nu’. + + +File: gsl-ref.info, Node: Clausen Functions, Next: Coulomb Functions, Prev: Bessel Functions, Up: Special Functions + +7.6 Clausen Functions +===================== + +The Clausen function is defined by the following integral, + +Cl_2(x) = - int_0^x dt log( 2 sin(t/2) ) + +It is related to the *note dilogarithm: 165. by Cl_2(\theta) = \Im +Li_2(\exp(i\theta)). The Clausen functions are declared in the header +file ‘gsl_sf_clausen.h’. + + -- Function: double gsl_sf_clausen (double x) + -- Function: int gsl_sf_clausen_e (double x, gsl_sf_result * result) + + These routines compute the Clausen integral Cl_2(x). + + +File: gsl-ref.info, Node: Coulomb Functions, Next: Coupling Coefficients, Prev: Clausen Functions, Up: Special Functions + +7.7 Coulomb Functions +===================== + +The prototypes of the Coulomb functions are declared in the header file +‘gsl_sf_coulomb.h’. Both bound state and scattering solutions are +available. + +* Menu: + +* Normalized Hydrogenic Bound States:: +* Coulomb Wave Functions:: +* Coulomb Wave Function Normalization Constant:: + + +File: gsl-ref.info, Node: Normalized Hydrogenic Bound States, Next: Coulomb Wave Functions, Up: Coulomb Functions + +7.7.1 Normalized Hydrogenic Bound States +---------------------------------------- + + -- Function: double gsl_sf_hydrogenicR_1 (double Z, double r) + -- Function: int gsl_sf_hydrogenicR_1_e (double Z, double r, + gsl_sf_result * result) + + These routines compute the lowest-order normalized hydrogenic bound + state radial wavefunction R_1 := 2Z \sqrt{Z} \exp(-Z r). + + -- Function: double gsl_sf_hydrogenicR (int n, int l, double Z, + double r) + -- Function: int gsl_sf_hydrogenicR_e (int n, int l, double Z, + double r, gsl_sf_result * result) + + These routines compute the ‘n’-th normalized hydrogenic bound state + radial wavefunction, + + R_n := 2 (Z^{3/2}/n^2) sqrt{(n-l-1)!/(n+l)!} exp(-Z r/n) (2Zr/n)^l + L^{2l+1}_{n-l-1}(2Zr/n). + + where L^a_b(x) is the *note generalized Laguerre polynomial: 16e. + The normalization is chosen such that the wavefunction \psi is + given by \psi(n,l,r) = R_n Y_{lm}. + + +File: gsl-ref.info, Node: Coulomb Wave Functions, Next: Coulomb Wave Function Normalization Constant, Prev: Normalized Hydrogenic Bound States, Up: Coulomb Functions + +7.7.2 Coulomb Wave Functions +---------------------------- + +The Coulomb wave functions F_L(\eta,x), G_L(\eta,x) are described in +Abramowitz & Stegun, Chapter 14. Because there can be a large dynamic +range of values for these functions, overflows are handled gracefully. +If an overflow occurs, ‘GSL_EOVRFLW’ is signalled and exponent(s) are +returned through the modifiable parameters ‘exp_F’, ‘exp_G’. The full +solution can be reconstructed from the following relations, + + F_L(eta,x) = fc[k_L] * exp(exp_F) + G_L(eta,x) = gc[k_L] * exp(exp_G) + + F_L’(eta,x) = fcp[k_L] * exp(exp_F) + G_L’(eta,x) = gcp[k_L] * exp(exp_G) + + -- Function: int gsl_sf_coulomb_wave_FG_e (double eta, double x, + double L_F, int k, gsl_sf_result * F, gsl_sf_result * Fp, + gsl_sf_result * G, gsl_sf_result * Gp, double * exp_F, double + * exp_G) + + This function computes the Coulomb wave functions F_L(\eta,x), + G_{L-k}(\eta,x) and their derivatives F'_L(\eta,x), + G'_{L-k}(\eta,x) with respect to x. The parameters are restricted + to L, L-k > -1/2, x > 0 and integer k. Note that L itself is not + restricted to being an integer. The results are stored in the + parameters F, G for the function values and ‘Fp’, ‘Gp’ for the + derivative values. If an overflow occurs, ‘GSL_EOVRFLW’ is + returned and scaling exponents are stored in the modifiable + parameters ‘exp_F’, ‘exp_G’. + + -- Function: int gsl_sf_coulomb_wave_F_array (double L_min, int kmax, + double eta, double x, double fc_array[], double * F_exponent) + + This function computes the Coulomb wave function F_L(\eta,x) for L + = Lmin \dots Lmin + kmax, storing the results in ‘fc_array’. In + the case of overflow the exponent is stored in ‘F_exponent’. + + -- Function: int gsl_sf_coulomb_wave_FG_array (double L_min, int kmax, + double eta, double x, double fc_array[], double gc_array[], + double * F_exponent, double * G_exponent) + + This function computes the functions F_L(\eta,x), G_L(\eta,x) for L + = Lmin \dots Lmin + kmax storing the results in ‘fc_array’ and + ‘gc_array’. In the case of overflow the exponents are stored in + ‘F_exponent’ and ‘G_exponent’. + + -- Function: int gsl_sf_coulomb_wave_FGp_array (double L_min, int kmax, + double eta, double x, double fc_array[], double fcp_array[], + double gc_array[], double gcp_array[], double * F_exponent, + double * G_exponent) + + This function computes the functions F_L(\eta,x), G_L(\eta,x) and + their derivatives F'_L(\eta,x), G'_L(\eta,x) for L = Lmin \dots + Lmin + kmax storing the results in ‘fc_array’, ‘gc_array’, + ‘fcp_array’ and ‘gcp_array’. In the case of overflow the exponents + are stored in ‘F_exponent’ and ‘G_exponent’. + + -- Function: int gsl_sf_coulomb_wave_sphF_array (double L_min, + int kmax, double eta, double x, double fc_array[], + double F_exponent[]) + + This function computes the Coulomb wave function divided by the + argument F_L(\eta, x)/x for L = Lmin \dots Lmin + kmax, storing the + results in ‘fc_array’. In the case of overflow the exponent is + stored in ‘F_exponent’. This function reduces to spherical Bessel + functions in the limit \eta \to 0. + + +File: gsl-ref.info, Node: Coulomb Wave Function Normalization Constant, Prev: Coulomb Wave Functions, Up: Coulomb Functions + +7.7.3 Coulomb Wave Function Normalization Constant +-------------------------------------------------- + +The Coulomb wave function normalization constant is defined in +Abramowitz 14.1.7. + + -- Function: int gsl_sf_coulomb_CL_e (double L, double eta, + gsl_sf_result * result) + + This function computes the Coulomb wave function normalization + constant C_L(\eta) for L > -1. + + -- Function: int gsl_sf_coulomb_CL_array (double Lmin, int kmax, + double eta, double cl[]) + + This function computes the Coulomb wave function normalization + constant C_L(\eta) for L = Lmin \dots Lmin + kmax, Lmin > -1. + + +File: gsl-ref.info, Node: Coupling Coefficients, Next: Dawson Function, Prev: Coulomb Functions, Up: Special Functions + +7.8 Coupling Coefficients +========================= + +The Wigner 3-j, 6-j and 9-j symbols give the coupling coefficients for +combined angular momentum vectors. Since the arguments of the standard +coupling coefficient functions are integer or half-integer, the +arguments of the following functions are, by convention, integers equal +to twice the actual spin value. For information on the 3-j coefficients +see Abramowitz & Stegun, Section 27.9. The functions described in this +section are declared in the header file ‘gsl_sf_coupling.h’. + +* Menu: + +* 3-j Symbols:: +* 6-j Symbols:: +* 9-j Symbols:: + + +File: gsl-ref.info, Node: 3-j Symbols, Next: 6-j Symbols, Up: Coupling Coefficients + +7.8.1 3-j Symbols +----------------- + + -- Function: double gsl_sf_coupling_3j (int two_ja, int two_jb, + int two_jc, int two_ma, int two_mb, int two_mc) + -- Function: int gsl_sf_coupling_3j_e (int two_ja, int two_jb, + int two_jc, int two_ma, int two_mb, int two_mc, gsl_sf_result + * result) + + These routines compute the Wigner 3-j coefficient, + + ( ja jb jc ) + ( ma mb mc ) + + where the arguments are given in half-integer units, ja = + ‘two_ja’/2, ma = ‘two_ma’/2, etc. + + +File: gsl-ref.info, Node: 6-j Symbols, Next: 9-j Symbols, Prev: 3-j Symbols, Up: Coupling Coefficients + +7.8.2 6-j Symbols +----------------- + + -- Function: double gsl_sf_coupling_6j (int two_ja, int two_jb, + int two_jc, int two_jd, int two_je, int two_jf) + -- Function: int gsl_sf_coupling_6j_e (int two_ja, int two_jb, + int two_jc, int two_jd, int two_je, int two_jf, gsl_sf_result + * result) + + These routines compute the Wigner 6-j coefficient, + + { ja jb jc } + { jd je jf } + + where the arguments are given in half-integer units, ja = + ‘two_ja’/2, ma = ‘two_ma’/2, etc. + + +File: gsl-ref.info, Node: 9-j Symbols, Prev: 6-j Symbols, Up: Coupling Coefficients + +7.8.3 9-j Symbols +----------------- + + -- Function: double gsl_sf_coupling_9j (int two_ja, int two_jb, + int two_jc, int two_jd, int two_je, int two_jf, int two_jg, + int two_jh, int two_ji) + -- Function: int gsl_sf_coupling_9j_e (int two_ja, int two_jb, + int two_jc, int two_jd, int two_je, int two_jf, int two_jg, + int two_jh, int two_ji, gsl_sf_result * result) + + These routines compute the Wigner 9-j coefficient, + + { ja jb jc } + { jd je jf } + { jg jh ji } + + where the arguments are given in half-integer units, ja = + ‘two_ja’/2, ma = ‘two_ma’/2, etc. + + +File: gsl-ref.info, Node: Dawson Function, Next: Debye Functions, Prev: Coupling Coefficients, Up: Special Functions + +7.9 Dawson Function +=================== + +The Dawson integral is defined by + + \exp(-x^2) \int_0^x dt \exp(t^2) + +A table of Dawson’s integral can be found in Abramowitz & Stegun, Table +7.5. The Dawson functions are declared in the header file +‘gsl_sf_dawson.h’. + + -- Function: double gsl_sf_dawson (double x) + -- Function: int gsl_sf_dawson_e (double x, gsl_sf_result * result) + + These routines compute the value of Dawson’s integral for ‘x’. + + +File: gsl-ref.info, Node: Debye Functions, Next: Dilogarithm, Prev: Dawson Function, Up: Special Functions + +7.10 Debye Functions +==================== + +The Debye functions D_n(x) are defined by the following integral, + + D_n(x) = n/x^n \int_0^x dt (t^n/(e^t - 1)) + +For further information see Abramowitz & Stegun, Section 27.1. The +Debye functions are declared in the header file ‘gsl_sf_debye.h’. + + -- Function: double gsl_sf_debye_1 (double x) + -- Function: int gsl_sf_debye_1_e (double x, gsl_sf_result * result) + + These routines compute the first-order Debye function D_1(x). + + -- Function: double gsl_sf_debye_2 (double x) + -- Function: int gsl_sf_debye_2_e (double x, gsl_sf_result * result) + + These routines compute the second-order Debye function D_2(x). + + -- Function: double gsl_sf_debye_3 (double x) + -- Function: int gsl_sf_debye_3_e (double x, gsl_sf_result * result) + + These routines compute the third-order Debye function D_3(x). + + -- Function: double gsl_sf_debye_4 (double x) + -- Function: int gsl_sf_debye_4_e (double x, gsl_sf_result * result) + + These routines compute the fourth-order Debye function D_4(x). + + -- Function: double gsl_sf_debye_5 (double x) + -- Function: int gsl_sf_debye_5_e (double x, gsl_sf_result * result) + + These routines compute the fifth-order Debye function D_5(x). + + -- Function: double gsl_sf_debye_6 (double x) + -- Function: int gsl_sf_debye_6_e (double x, gsl_sf_result * result) + + These routines compute the sixth-order Debye function D_6(x). + + +File: gsl-ref.info, Node: Dilogarithm, Next: Elementary Operations, Prev: Debye Functions, Up: Special Functions + +7.11 Dilogarithm +================ + +The dilogarithm is defined as + + Li_2(z) = - \int_0^z ds log(1-s) / s + +The functions described in this section are declared in the header file +‘gsl_sf_dilog.h’. + +* Menu: + +* Real Argument:: +* Complex Argument:: + + +File: gsl-ref.info, Node: Real Argument, Next: Complex Argument, Up: Dilogarithm + +7.11.1 Real Argument +-------------------- + + -- Function: double gsl_sf_dilog (double x) + -- Function: int gsl_sf_dilog_e (double x, gsl_sf_result * result) + + These routines compute the dilogarithm for a real argument. In + Lewin’s notation this is Li_2(x), the real part of the dilogarithm + of a real x. It is defined by the integral representation + + Li_2(x) = - \Re \int_0^x ds \log(1-s) / s + + Note that \Im(Li_2(x)) = 0 for x \le 1, and -\pi\log(x) for x > 1. + + Note that Abramowitz & Stegun refer to the Spence integral S(x) = + Li_2(1 - x) as the dilogarithm rather than Li_2(x). + + +File: gsl-ref.info, Node: Complex Argument, Prev: Real Argument, Up: Dilogarithm + +7.11.2 Complex Argument +----------------------- + + -- Function: int gsl_sf_complex_dilog_e (double r, double theta, + gsl_sf_result * result_re, gsl_sf_result * result_im) + + This function computes the full complex-valued dilogarithm for the + complex argument z = r \exp(i \theta). The real and imaginary + parts of the result are returned in ‘result_re’, ‘result_im’. + + +File: gsl-ref.info, Node: Elementary Operations, Next: Elliptic Integrals, Prev: Dilogarithm, Up: Special Functions + +7.12 Elementary Operations +========================== + +The following functions allow for the propagation of errors when +combining quantities by multiplication. The functions are declared in +the header file ‘gsl_sf_elementary.h’. + + -- Function: double gsl_sf_multiply (double x, double y) + -- Function: int gsl_sf_multiply_e (double x, double y, gsl_sf_result + * result) + + This function multiplies ‘x’ and ‘y’ storing the product and its + associated error in ‘result’. + + -- Function: int gsl_sf_multiply_err_e (double x, double dx, double y, + double dy, gsl_sf_result * result) + + This function multiplies ‘x’ and ‘y’ with associated absolute + errors ‘dx’ and ‘dy’. The product xy \pm xy \sqrt{(dx/x)^2 + +(dy/y)^2} is stored in ‘result’. + + +File: gsl-ref.info, Node: Elliptic Integrals, Next: Elliptic Functions Jacobi, Prev: Elementary Operations, Up: Special Functions + +7.13 Elliptic Integrals +======================= + +The functions described in this section are declared in the header file +‘gsl_sf_ellint.h’. Further information about the elliptic integrals can +be found in Abramowitz & Stegun, Chapter 17. + +* Menu: + +* Definition of Legendre Forms:: +* Definition of Carlson Forms:: +* Legendre Form of Complete Elliptic Integrals:: +* Legendre Form of Incomplete Elliptic Integrals:: +* Carlson Forms:: + + +File: gsl-ref.info, Node: Definition of Legendre Forms, Next: Definition of Carlson Forms, Up: Elliptic Integrals + +7.13.1 Definition of Legendre Forms +----------------------------------- + +The Legendre forms of elliptic integrals F(\phi,k), E(\phi,k) and +\Pi(\phi,k,n) are defined by, + + F(\phi,k) = \int_0^\phi dt 1/\sqrt((1 - k^2 \sin^2(t))) + E(\phi,k) = \int_0^\phi dt \sqrt((1 - k^2 \sin^2(t))) + Pi(\phi,k,n) = \int_0^\phi dt 1/((1 + n \sin^2(t))\sqrt(1 - k^2 \sin^2(t))) + +The complete Legendre forms are denoted by K(k) = F(\pi/2, k) and E(k) = +E(\pi/2, k). + +The notation used here is based on Carlson, “Numerische Mathematik” 33 +(1979) 1 and differs slightly from that used by Abramowitz & Stegun, +where the functions are given in terms of the parameter m = k^2 and n is +replaced by -n. + + +File: gsl-ref.info, Node: Definition of Carlson Forms, Next: Legendre Form of Complete Elliptic Integrals, Prev: Definition of Legendre Forms, Up: Elliptic Integrals + +7.13.2 Definition of Carlson Forms +---------------------------------- + +The Carlson symmetric forms of elliptical integrals RC(x,y), RD(x,y,z), +RF(x,y,z) and RJ(x,y,z,p) are defined by, + + RC(x,y) = 1/2 \int_0^\infty dt (t+x)^(-1/2) (t+y)^(-1) + RD(x,y,z) = 3/2 \int_0^\infty dt (t+x)^(-1/2) (t+y)^(-1/2) (t+z)^(-3/2) + RF(x,y,z) = 1/2 \int_0^\infty dt (t+x)^(-1/2) (t+y)^(-1/2) (t+z)^(-1/2) + RJ(x,y,z,p) = 3/2 \int_0^\infty dt + (t+x)^(-1/2) (t+y)^(-1/2) (t+z)^(-1/2) (t+p)^(-1) + + +File: gsl-ref.info, Node: Legendre Form of Complete Elliptic Integrals, Next: Legendre Form of Incomplete Elliptic Integrals, Prev: Definition of Carlson Forms, Up: Elliptic Integrals + +7.13.3 Legendre Form of Complete Elliptic Integrals +--------------------------------------------------- + + -- Function: double gsl_sf_ellint_Kcomp (double k, gsl_mode_t mode) + -- Function: int gsl_sf_ellint_Kcomp_e (double k, gsl_mode_t mode, + gsl_sf_result * result) + + These routines compute the complete elliptic integral K(k) to the + accuracy specified by the mode variable *note mode: d8. Note that + Abramowitz & Stegun define this function in terms of the parameter + m = k^2. + + -- Function: double gsl_sf_ellint_Ecomp (double k, gsl_mode_t mode) + -- Function: int gsl_sf_ellint_Ecomp_e (double k, gsl_mode_t mode, + gsl_sf_result * result) + + These routines compute the complete elliptic integral E(k) to the + accuracy specified by the mode variable *note mode: d8. Note that + Abramowitz & Stegun define this function in terms of the parameter + m = k^2. + + -- Function: double gsl_sf_ellint_Pcomp (double k, double n, + gsl_mode_t mode) + -- Function: int gsl_sf_ellint_Pcomp_e (double k, double n, + gsl_mode_t mode, gsl_sf_result * result) + + These routines compute the complete elliptic integral \Pi(k,n) to + the accuracy specified by the mode variable *note mode: d8. Note + that Abramowitz & Stegun define this function in terms of the + parameters m = k^2 and \sin^2(\alpha) = k^2, with the change of + sign n \to -n. + + +File: gsl-ref.info, Node: Legendre Form of Incomplete Elliptic Integrals, Next: Carlson Forms, Prev: Legendre Form of Complete Elliptic Integrals, Up: Elliptic Integrals + +7.13.4 Legendre Form of Incomplete Elliptic Integrals +----------------------------------------------------- + + -- Function: double gsl_sf_ellint_F (double phi, double k, + gsl_mode_t mode) + -- Function: int gsl_sf_ellint_F_e (double phi, double k, + gsl_mode_t mode, gsl_sf_result * result) + + These routines compute the incomplete elliptic integral F(\phi,k) + to the accuracy specified by the mode variable *note mode: d8. + Note that Abramowitz & Stegun define this function in terms of the + parameter m = k^2. + + -- Function: double gsl_sf_ellint_E (double phi, double k, + gsl_mode_t mode) + -- Function: int gsl_sf_ellint_E_e (double phi, double k, + gsl_mode_t mode, gsl_sf_result * result) + + These routines compute the incomplete elliptic integral E(\phi,k) + to the accuracy specified by the mode variable *note mode: d8. + Note that Abramowitz & Stegun define this function in terms of the + parameter m = k^2. + + -- Function: double gsl_sf_ellint_P (double phi, double k, double n, + gsl_mode_t mode) + -- Function: int gsl_sf_ellint_P_e (double phi, double k, double n, + gsl_mode_t mode, gsl_sf_result * result) + + These routines compute the incomplete elliptic integral + \Pi(\phi,k,n) to the accuracy specified by the mode variable *note + mode: d8. Note that Abramowitz & Stegun define this function in + terms of the parameters m = k^2 and \sin^2(\alpha) = k^2, with the + change of sign n \to -n. + + -- Function: double gsl_sf_ellint_D (double phi, double k, + gsl_mode_t mode) + -- Function: int gsl_sf_ellint_D_e (double phi, double k, + gsl_mode_t mode, gsl_sf_result * result) + + These functions compute the incomplete elliptic integral D(\phi,k) + which is defined through the Carlson form RD(x,y,z) by the + following relation, + + D(\phi,k) = (1/3)(\sin(\phi))^3 RD (1-\sin^2(\phi), 1-k^2 \sin^2(\phi), 1). + + +File: gsl-ref.info, Node: Carlson Forms, Prev: Legendre Form of Incomplete Elliptic Integrals, Up: Elliptic Integrals + +7.13.5 Carlson Forms +-------------------- + + -- Function: double gsl_sf_ellint_RC (double x, double y, + gsl_mode_t mode) + -- Function: int gsl_sf_ellint_RC_e (double x, double y, + gsl_mode_t mode, gsl_sf_result * result) + + These routines compute the incomplete elliptic integral RC(x,y) to + the accuracy specified by the mode variable *note mode: d8. + + -- Function: double gsl_sf_ellint_RD (double x, double y, double z, + gsl_mode_t mode) + -- Function: int gsl_sf_ellint_RD_e (double x, double y, double z, + gsl_mode_t mode, gsl_sf_result * result) + + These routines compute the incomplete elliptic integral RD(x,y,z) + to the accuracy specified by the mode variable *note mode: d8. + + -- Function: double gsl_sf_ellint_RF (double x, double y, double z, + gsl_mode_t mode) + -- Function: int gsl_sf_ellint_RF_e (double x, double y, double z, + gsl_mode_t mode, gsl_sf_result * result) + + These routines compute the incomplete elliptic integral RF(x,y,z) + to the accuracy specified by the mode variable *note mode: d8. + + -- Function: double gsl_sf_ellint_RJ (double x, double y, double z, + double p, gsl_mode_t mode) + -- Function: int gsl_sf_ellint_RJ_e (double x, double y, double z, + double p, gsl_mode_t mode, gsl_sf_result * result) + + These routines compute the incomplete elliptic integral RJ(x,y,z,p) + to the accuracy specified by the mode variable *note mode: d8. + + +File: gsl-ref.info, Node: Elliptic Functions Jacobi, Next: Error Functions, Prev: Elliptic Integrals, Up: Special Functions + +7.14 Elliptic Functions (Jacobi) +================================ + +The Jacobian Elliptic functions are defined in Abramowitz & Stegun, +Chapter 16. The functions are declared in the header file +‘gsl_sf_elljac.h’. + + -- Function: int gsl_sf_elljac_e (double u, double m, double * sn, + double * cn, double * dn) + + This function computes the Jacobian elliptic functions sn(u|m), + cn(u|m), dn(u|m) by descending Landen transformations. + + +File: gsl-ref.info, Node: Error Functions, Next: Exponential Functions, Prev: Elliptic Functions Jacobi, Up: Special Functions + +7.15 Error Functions +==================== + +The error function is described in Abramowitz & Stegun, Chapter 7. The +functions in this section are declared in the header file +‘gsl_sf_erf.h’. + +* Menu: + +* Error Function:: +* Complementary Error Function:: +* Log Complementary Error Function:: +* Probability functions:: + + +File: gsl-ref.info, Node: Error Function, Next: Complementary Error Function, Up: Error Functions + +7.15.1 Error Function +--------------------- + + -- Function: double gsl_sf_erf (double x) + -- Function: int gsl_sf_erf_e (double x, gsl_sf_result * result) + + These routines compute the error function \erf(x), where \erf(x) = + (2/\sqrt{\pi}) \int_0^x dt \exp(-t^2). + + +File: gsl-ref.info, Node: Complementary Error Function, Next: Log Complementary Error Function, Prev: Error Function, Up: Error Functions + +7.15.2 Complementary Error Function +----------------------------------- + + -- Function: double gsl_sf_erfc (double x) + -- Function: int gsl_sf_erfc_e (double x, gsl_sf_result * result) + + These routines compute the complementary error function \erfc(x) = + 1 - \erf(x) = (2/\sqrt{\pi}) \int_x^\infty \exp(-t^2) + + +File: gsl-ref.info, Node: Log Complementary Error Function, Next: Probability functions, Prev: Complementary Error Function, Up: Error Functions + +7.15.3 Log Complementary Error Function +--------------------------------------- + + -- Function: double gsl_sf_log_erfc (double x) + -- Function: int gsl_sf_log_erfc_e (double x, gsl_sf_result * result) + + These routines compute the logarithm of the complementary error + function \log(\erfc(x)). + + +File: gsl-ref.info, Node: Probability functions, Prev: Log Complementary Error Function, Up: Error Functions + +7.15.4 Probability functions +---------------------------- + +The probability functions for the Normal or Gaussian distribution are +described in Abramowitz & Stegun, Section 26.2. + + -- Function: double gsl_sf_erf_Z (double x) + -- Function: int gsl_sf_erf_Z_e (double x, gsl_sf_result * result) + + These routines compute the Gaussian probability density function + Z(x) = (1/\sqrt{2\pi}) \exp(-x^2/2) + + -- Function: double gsl_sf_erf_Q (double x) + -- Function: int gsl_sf_erf_Q_e (double x, gsl_sf_result * result) + + These routines compute the upper tail of the Gaussian probability + function Q(x) = (1/\sqrt{2\pi}) \int_x^\infty dt \exp(-t^2/2) + +The `hazard function' for the normal distribution, also known as the +inverse Mills’ ratio, is defined as, + + h(x) = Z(x)/Q(x) = \sqrt{2/\pi} \exp(-x^2 / 2) / \erfc(x/\sqrt 2) + +It decreases rapidly as x approaches -\infty and asymptotes to h(x) \sim +x as x approaches +\infty. + + -- Function: double gsl_sf_hazard (double x) + -- Function: int gsl_sf_hazard_e (double x, gsl_sf_result * result) + + These routines compute the hazard function for the normal + distribution. + + +File: gsl-ref.info, Node: Exponential Functions, Next: Exponential Integrals, Prev: Error Functions, Up: Special Functions + +7.16 Exponential Functions +========================== + +The functions described in this section are declared in the header file +‘gsl_sf_exp.h’. + +* Menu: + +* Exponential Function:: +* Relative Exponential Functions:: +* Exponentiation With Error Estimate:: + + +File: gsl-ref.info, Node: Exponential Function, Next: Relative Exponential Functions, Up: Exponential Functions + +7.16.1 Exponential Function +--------------------------- + + -- Function: double gsl_sf_exp (double x) + -- Function: int gsl_sf_exp_e (double x, gsl_sf_result * result) + + These routines provide an exponential function \exp(x) using GSL + semantics and error checking. + + -- Function: int gsl_sf_exp_e10_e (double x, gsl_sf_result_e10 + * result) + + This function computes the exponential \exp(x) using the *note + gsl_sf_result_e10: ce. type to return a result with extended range. + This function may be useful if the value of \exp(x) would overflow + the numeric range of ‘double’. + + -- Function: double gsl_sf_exp_mult (double x, double y) + -- Function: int gsl_sf_exp_mult_e (double x, double y, gsl_sf_result + * result) + + These routines exponentiate ‘x’ and multiply by the factor ‘y’ to + return the product y \exp(x). + + -- Function: int gsl_sf_exp_mult_e10_e (const double x, const double y, + gsl_sf_result_e10 * result) + + This function computes the product y \exp(x) using the *note + gsl_sf_result_e10: ce. type to return a result with extended + numeric range. + + +File: gsl-ref.info, Node: Relative Exponential Functions, Next: Exponentiation With Error Estimate, Prev: Exponential Function, Up: Exponential Functions + +7.16.2 Relative Exponential Functions +------------------------------------- + + -- Function: double gsl_sf_expm1 (double x) + -- Function: int gsl_sf_expm1_e (double x, gsl_sf_result * result) + + These routines compute the quantity \exp(x)-1 using an algorithm + that is accurate for small x. + + -- Function: double gsl_sf_exprel (double x) + -- Function: int gsl_sf_exprel_e (double x, gsl_sf_result * result) + + These routines compute the quantity (\exp(x)-1)/x using an + algorithm that is accurate for small ‘x’. For small ‘x’ the + algorithm is based on the expansion (\exp(x)-1)/x = 1 + x/2 + + x^2/(2*3) + x^3/(2*3*4) + \dots. + + -- Function: double gsl_sf_exprel_2 (double x) + -- Function: int gsl_sf_exprel_2_e (double x, gsl_sf_result * result) + + These routines compute the quantity 2(\exp(x)-1-x)/x^2 using an + algorithm that is accurate for small ‘x’. For small ‘x’ the + algorithm is based on the expansion 2(\exp(x)-1-x)/x^2 = 1 + x/3 + + x^2/(3*4) + x^3/(3*4*5) + \dots. + + -- Function: double gsl_sf_exprel_n (int n, double x) + -- Function: int gsl_sf_exprel_n_e (int n, double x, gsl_sf_result + * result) + + These routines compute the N-relative exponential, which is the + ‘n’-th generalization of the functions *note gsl_sf_exprel(): 1d6. + and *note gsl_sf_exprel_2(): 1d8. The N-relative exponential is + given by, + + exprel_N(x) = N!/x^N (\exp(x) - \sum_{k=0}^{N-1} x^k/k!) + = 1 + x/(N+1) + x^2/((N+1)(N+2)) + ... + = 1F1 (1,1+N,x) + + +File: gsl-ref.info, Node: Exponentiation With Error Estimate, Prev: Relative Exponential Functions, Up: Exponential Functions + +7.16.3 Exponentiation With Error Estimate +----------------------------------------- + + -- Function: int gsl_sf_exp_err_e (double x, double dx, gsl_sf_result + * result) + + This function exponentiates ‘x’ with an associated absolute error + ‘dx’. + + -- Function: int gsl_sf_exp_err_e10_e (double x, double dx, + gsl_sf_result_e10 * result) + + This function exponentiates a quantity ‘x’ with an associated + absolute error ‘dx’ using the *note gsl_sf_result_e10: ce. type to + return a result with extended range. + + -- Function: int gsl_sf_exp_mult_err_e (double x, double dx, double y, + double dy, gsl_sf_result * result) + + This routine computes the product y \exp(x) for the quantities ‘x’, + ‘y’ with associated absolute errors ‘dx’, ‘dy’. + + -- Function: int gsl_sf_exp_mult_err_e10_e (double x, double dx, + double y, double dy, gsl_sf_result_e10 * result) + + This routine computes the product y \exp(x) for the quantities ‘x’, + ‘y’ with associated absolute errors ‘dx’, ‘dy’ using the *note + gsl_sf_result_e10: ce. type to return a result with extended range. + + +File: gsl-ref.info, Node: Exponential Integrals, Next: Fermi-Dirac Function, Prev: Exponential Functions, Up: Special Functions + +7.17 Exponential Integrals +========================== + +Information on the exponential integrals can be found in Abramowitz & +Stegun, Chapter 5. These functions are declared in the header file +‘gsl_sf_expint.h’. + +* Menu: + +* Exponential Integral:: +* Ei(x): Ei x. +* Hyperbolic Integrals:: +* Ei_3(x): Ei_3 x. +* Trigonometric Integrals:: +* Arctangent Integral:: + + +File: gsl-ref.info, Node: Exponential Integral, Next: Ei x, Up: Exponential Integrals + +7.17.1 Exponential Integral +--------------------------- + + -- Function: double gsl_sf_expint_E1 (double x) + -- Function: int gsl_sf_expint_E1_e (double x, gsl_sf_result * result) + + These routines compute the exponential integral E_1(x), + + E_1(x) := \Re \int_1^\infty dt \exp(-xt)/t. + + -- Function: double gsl_sf_expint_E2 (double x) + -- Function: int gsl_sf_expint_E2_e (double x, gsl_sf_result * result) + + These routines compute the second-order exponential integral + E_2(x), + + E_2(x) := \Re \int_1^\infty dt \exp(-xt)/t^2 + + -- Function: double gsl_sf_expint_En (int n, double x) + -- Function: int gsl_sf_expint_En_e (int n, double x, gsl_sf_result + * result) + + These routines compute the exponential integral E_n(x) of order + ‘n’, + + E_n(x) := \Re \int_1^\infty dt \exp(-xt)/t^n. + + +File: gsl-ref.info, Node: Ei x, Next: Hyperbolic Integrals, Prev: Exponential Integral, Up: Exponential Integrals + +7.17.2 Ei(x) +------------ + + -- Function: double gsl_sf_expint_Ei (double x) + -- Function: int gsl_sf_expint_Ei_e (double x, gsl_sf_result * result) + + These routines compute the exponential integral Ei(x), + + Ei(x) = - PV(\int_{-x}^\infty dt \exp(-t)/t) + + where PV denotes the principal value of the integral. + + +File: gsl-ref.info, Node: Hyperbolic Integrals, Next: Ei_3 x, Prev: Ei x, Up: Exponential Integrals + +7.17.3 Hyperbolic Integrals +--------------------------- + + -- Function: double gsl_sf_Shi (double x) + -- Function: int gsl_sf_Shi_e (double x, gsl_sf_result * result) + + These routines compute the integral + + Shi(x) = \int_0^x dt \sinh(t)/t + + -- Function: double gsl_sf_Chi (double x) + -- Function: int gsl_sf_Chi_e (double x, gsl_sf_result * result) + + These routines compute the integral + + Chi(x) := \Re[ \gamma_E + \log(x) + \int_0^x dt (\cosh(t)-1)/t ] + + where \gamma_E is the Euler constant (available as the macro + ‘M_EULER’). + + +File: gsl-ref.info, Node: Ei_3 x, Next: Trigonometric Integrals, Prev: Hyperbolic Integrals, Up: Exponential Integrals + +7.17.4 Ei_3(x) +-------------- + + -- Function: double gsl_sf_expint_3 (double x) + -- Function: int gsl_sf_expint_3_e (double x, gsl_sf_result * result) + + These routines compute the third-order exponential integral + + Ei_3(x) = \int_0^x dt \exp(-t^3)` + + for x \ge 0. + + +File: gsl-ref.info, Node: Trigonometric Integrals, Next: Arctangent Integral, Prev: Ei_3 x, Up: Exponential Integrals + +7.17.5 Trigonometric Integrals +------------------------------ + + -- Function: double gsl_sf_Si (const double x) + -- Function: int gsl_sf_Si_e (double x, gsl_sf_result * result) + + These routines compute the Sine integral + + Si(x) = \int_0^x dt \sin(t)/t + + -- Function: double gsl_sf_Ci (const double x) + -- Function: int gsl_sf_Ci_e (double x, gsl_sf_result * result) + + These routines compute the Cosine integral + + Ci(x) = -\int_x^\infty dt \cos(t)/t} + + for x > 0 + + +File: gsl-ref.info, Node: Arctangent Integral, Prev: Trigonometric Integrals, Up: Exponential Integrals + +7.17.6 Arctangent Integral +-------------------------- + + -- Function: double gsl_sf_atanint (double x) + -- Function: int gsl_sf_atanint_e (double x, gsl_sf_result * result) + + These routines compute the Arctangent integral, which is defined as + + AtanInt(x) = \int_0^x dt \arctan(t)/t + + +File: gsl-ref.info, Node: Fermi-Dirac Function, Next: Gamma and Beta Functions, Prev: Exponential Integrals, Up: Special Functions + +7.18 Fermi-Dirac Function +========================= + +The functions described in this section are declared in the header file +‘gsl_sf_fermi_dirac.h’. + +* Menu: + +* Complete Fermi-Dirac Integrals:: +* Incomplete Fermi-Dirac Integrals:: + + +File: gsl-ref.info, Node: Complete Fermi-Dirac Integrals, Next: Incomplete Fermi-Dirac Integrals, Up: Fermi-Dirac Function + +7.18.1 Complete Fermi-Dirac Integrals +------------------------------------- + +The complete Fermi-Dirac integral F_j(x) is given by, + + F_j(x) := (1/\Gamma(j+1)) \int_0^\infty dt (t^j / (\exp(t-x) + 1)) + +Note that the Fermi-Dirac integral is sometimes defined without the +normalisation factor in other texts. + + -- Function: double gsl_sf_fermi_dirac_m1 (double x) + -- Function: int gsl_sf_fermi_dirac_m1_e (double x, gsl_sf_result + * result) + + These routines compute the complete Fermi-Dirac integral with an + index of -1. This integral is given by F_{-1}(x) = e^x / (1 + + e^x). + + -- Function: double gsl_sf_fermi_dirac_0 (double x) + -- Function: int gsl_sf_fermi_dirac_0_e (double x, gsl_sf_result + * result) + + These routines compute the complete Fermi-Dirac integral with an + index of 0. This integral is given by F_0(x) = \ln(1 + e^x). + + -- Function: double gsl_sf_fermi_dirac_1 (double x) + -- Function: int gsl_sf_fermi_dirac_1_e (double x, gsl_sf_result + * result) + + These routines compute the complete Fermi-Dirac integral with an + index of 1, F_1(x) = \int_0^\infty dt (t /(\exp(t-x)+1)). + + -- Function: double gsl_sf_fermi_dirac_2 (double x) + -- Function: int gsl_sf_fermi_dirac_2_e (double x, gsl_sf_result + * result) + + These routines compute the complete Fermi-Dirac integral with an + index of 2, F_2(x) = (1/2) \int_0^\infty dt (t^2 /(\exp(t-x)+1)). + + -- Function: double gsl_sf_fermi_dirac_int (int j, double x) + -- Function: int gsl_sf_fermi_dirac_int_e (int j, double x, + gsl_sf_result * result) + + These routines compute the complete Fermi-Dirac integral with an + integer index of j, F_j(x) = (1/\Gamma(j+1)) \int_0^\infty dt (t^j + /(\exp(t-x)+1)). + + -- Function: double gsl_sf_fermi_dirac_mhalf (double x) + -- Function: int gsl_sf_fermi_dirac_mhalf_e (double x, gsl_sf_result + * result) + + These routines compute the complete Fermi-Dirac integral + F_{-1/2}(x). + + -- Function: double gsl_sf_fermi_dirac_half (double x) + -- Function: int gsl_sf_fermi_dirac_half_e (double x, gsl_sf_result + * result) + + These routines compute the complete Fermi-Dirac integral + F_{1/2}(x). + + -- Function: double gsl_sf_fermi_dirac_3half (double x) + -- Function: int gsl_sf_fermi_dirac_3half_e (double x, gsl_sf_result + * result) + + These routines compute the complete Fermi-Dirac integral + F_{3/2}(x). + + +File: gsl-ref.info, Node: Incomplete Fermi-Dirac Integrals, Prev: Complete Fermi-Dirac Integrals, Up: Fermi-Dirac Function + +7.18.2 Incomplete Fermi-Dirac Integrals +--------------------------------------- + +The incomplete Fermi-Dirac integral F_j(x,b) is given by, + + F_j(x,b) := (1/\Gamma(j+1)) \int_b^\infty dt (t^j / (\Exp(t-x) + 1)) + + -- Function: double gsl_sf_fermi_dirac_inc_0 (double x, double b) + -- Function: int gsl_sf_fermi_dirac_inc_0_e (double x, double b, + gsl_sf_result * result) + + These routines compute the incomplete Fermi-Dirac integral with an + index of zero, F_0(x,b) = \ln(1 + e^{b-x}) - (b-x) + + +File: gsl-ref.info, Node: Gamma and Beta Functions, Next: Gegenbauer Functions, Prev: Fermi-Dirac Function, Up: Special Functions + +7.19 Gamma and Beta Functions +============================= + +The following routines compute the gamma and beta functions in their +full and incomplete forms, as well as various kinds of factorials. The +functions described in this section are declared in the header file +‘gsl_sf_gamma.h’. + +* Menu: + +* Gamma Functions:: +* Factorials:: +* Pochhammer Symbol:: +* Incomplete Gamma Functions:: +* Beta Functions:: +* Incomplete Beta Function:: + + +File: gsl-ref.info, Node: Gamma Functions, Next: Factorials, Up: Gamma and Beta Functions + +7.19.1 Gamma Functions +---------------------- + +The Gamma function is defined by the following integral, + + \Gamma(x) = \int_0^{\infty} dt t^{x-1} \exp(-t) + +It is related to the factorial function by \Gamma(n) = (n-1)! for +positive integer n. Further information on the Gamma function can be +found in Abramowitz & Stegun, Chapter 6. + + -- Function: double gsl_sf_gamma (double x) + -- Function: int gsl_sf_gamma_e (double x, gsl_sf_result * result) + + These routines compute the Gamma function \Gamma(x), subject to x + not being a negative integer or zero. The function is computed + using the real Lanczos method. The maximum value of x such that + \Gamma(x) is not considered an overflow is given by the macro + ‘GSL_SF_GAMMA_XMAX’ and is 171.0. + + -- Function: double gsl_sf_lngamma (double x) + -- Function: int gsl_sf_lngamma_e (double x, gsl_sf_result * result) + + These routines compute the logarithm of the Gamma function, + \log(\Gamma(x)), subject to x not being a negative integer or zero. + For x < 0 the real part of \log(\Gamma(x)) is returned, which is + equivalent to \log(|\Gamma(x)|). The function is computed using + the real Lanczos method. + + -- Function: int gsl_sf_lngamma_sgn_e (double x, gsl_sf_result + * result_lg, double * sgn) + + This routine computes the sign of the gamma function and the + logarithm of its magnitude, subject to x not being a negative + integer or zero. The function is computed using the real Lanczos + method. The value of the gamma function and its error can be + reconstructed using the relation \Gamma(x) = sgn * + \exp(result\_lg), taking into account the two components of + ‘result_lg’. + + -- Function: double gsl_sf_gammastar (double x) + -- Function: int gsl_sf_gammastar_e (double x, gsl_sf_result * result) + + These routines compute the regulated Gamma Function \Gamma^*(x) for + x > 0. The regulated gamma function is given by, + + \Gamma^*(x) = \Gamma(x)/(\sqrt{2\pi} x^{(x-1/2)} \exp(-x)) + = (1 + (1/12x) + ...) for x \to \infty + + and is a useful suggestion of Temme. + + -- Function: double gsl_sf_gammainv (double x) + -- Function: int gsl_sf_gammainv_e (double x, gsl_sf_result * result) + + These routines compute the reciprocal of the gamma function, + 1/\Gamma(x) using the real Lanczos method. + + -- Function: int gsl_sf_lngamma_complex_e (double zr, double zi, + gsl_sf_result * lnr, gsl_sf_result * arg) + + This routine computes \log(\Gamma(z)) for complex z = z_r + i z_i + and z not a negative integer or zero, using the complex Lanczos + method. The returned parameters are lnr = \log|\Gamma(z)| and arg + = \arg(\Gamma(z)) in (-\pi,\pi]. Note that the phase part (‘arg’) + is not well-determined when |z| is very large, due to inevitable + roundoff in restricting to (-\pi,\pi]. This will result in a + ‘GSL_ELOSS’ error when it occurs. The absolute value part (‘lnr’), + however, never suffers from loss of precision. + + +File: gsl-ref.info, Node: Factorials, Next: Pochhammer Symbol, Prev: Gamma Functions, Up: Gamma and Beta Functions + +7.19.2 Factorials +----------------- + +Although factorials can be computed from the Gamma function, using the +relation n! = \Gamma(n+1) for non-negative integer n, it is usually more +efficient to call the functions in this section, particularly for small +values of n, whose factorial values are maintained in hardcoded tables. + + -- Function: double gsl_sf_fact (unsigned int n) + -- Function: int gsl_sf_fact_e (unsigned int n, gsl_sf_result * result) + + These routines compute the factorial n!. The factorial is related + to the Gamma function by n! = \Gamma(n+1). The maximum value of n + such that n! is not considered an overflow is given by the macro + ‘GSL_SF_FACT_NMAX’ and is 170. + + -- Function: double gsl_sf_doublefact (unsigned int n) + -- Function: int gsl_sf_doublefact_e (unsigned int n, gsl_sf_result + * result) + + These routines compute the double factorial n!! = n(n-2)(n-4) + \dots. The maximum value of n such that n!! is not considered an + overflow is given by the macro ‘GSL_SF_DOUBLEFACT_NMAX’ and is 297. + + -- Function: double gsl_sf_lnfact (unsigned int n) + -- Function: int gsl_sf_lnfact_e (unsigned int n, gsl_sf_result + * result) + + These routines compute the logarithm of the factorial of ‘n’, + \log(n!). The algorithm is faster than computing \ln(\Gamma(n+1)) + via *note gsl_sf_lngamma(): 215. for n < 170, but defers for larger + ‘n’. + + -- Function: double gsl_sf_lndoublefact (unsigned int n) + -- Function: int gsl_sf_lndoublefact_e (unsigned int n, gsl_sf_result + * result) + + These routines compute the logarithm of the double factorial of + ‘n’, \log(n!!). + + -- Function: double gsl_sf_choose (unsigned int n, unsigned int m) + -- Function: int gsl_sf_choose_e (unsigned int n, unsigned int m, + gsl_sf_result * result) + + These routines compute the combinatorial factor ‘n choose m’ = + n!/(m!(n-m)!) + + -- Function: double gsl_sf_lnchoose (unsigned int n, unsigned int m) + -- Function: int gsl_sf_lnchoose_e (unsigned int n, unsigned int m, + gsl_sf_result * result) + + These routines compute the logarithm of ‘n choose m’. This is + equivalent to the sum \log(n!) - \log(m!) - \log((n-m)!). + + -- Function: double gsl_sf_taylorcoeff (int n, double x) + -- Function: int gsl_sf_taylorcoeff_e (int n, double x, gsl_sf_result + * result) + + These routines compute the Taylor coefficient x^n / n! for x \ge 0, + n \ge 0 + + +File: gsl-ref.info, Node: Pochhammer Symbol, Next: Incomplete Gamma Functions, Prev: Factorials, Up: Gamma and Beta Functions + +7.19.3 Pochhammer Symbol +------------------------ + + -- Function: double gsl_sf_poch (double a, double x) + -- Function: int gsl_sf_poch_e (double a, double x, gsl_sf_result + * result) + + These routines compute the Pochhammer symbol (a)_x = \Gamma(a + + x)/\Gamma(a). The Pochhammer symbol is also known as the Apell + symbol and sometimes written as (a,x). When a and a + x are + negative integers or zero, the limiting value of the ratio is + returned. + + -- Function: double gsl_sf_lnpoch (double a, double x) + -- Function: int gsl_sf_lnpoch_e (double a, double x, gsl_sf_result + * result) + + These routines compute the logarithm of the Pochhammer symbol, + \log((a)_x) = \log(\Gamma(a + x)/\Gamma(a)). + + -- Function: int gsl_sf_lnpoch_sgn_e (double a, double x, gsl_sf_result + * result, double * sgn) + + These routines compute the sign of the Pochhammer symbol and the + logarithm of its magnitude. The computed parameters are result = + \log(|(a)_x|) with a corresponding error term, and sgn = + \sgn((a)_x) where (a)_x = \Gamma(a + x)/\Gamma(a). + + -- Function: double gsl_sf_pochrel (double a, double x) + -- Function: int gsl_sf_pochrel_e (double a, double x, gsl_sf_result + * result) + + These routines compute the relative Pochhammer symbol ((a)_x - 1)/x + where (a)_x = \Gamma(a + x)/\Gamma(a). + + +File: gsl-ref.info, Node: Incomplete Gamma Functions, Next: Beta Functions, Prev: Pochhammer Symbol, Up: Gamma and Beta Functions + +7.19.4 Incomplete Gamma Functions +--------------------------------- + + -- Function: double gsl_sf_gamma_inc (double a, double x) + -- Function: int gsl_sf_gamma_inc_e (double a, double x, gsl_sf_result + * result) + + These functions compute the unnormalized incomplete Gamma Function + \Gamma(a,x) = \int_x^\infty dt t^{(a-1)} \exp(-t) for a real and x + \ge 0. + + -- Function: double gsl_sf_gamma_inc_Q (double a, double x) + -- Function: int gsl_sf_gamma_inc_Q_e (double a, double x, + gsl_sf_result * result) + + These routines compute the normalized incomplete Gamma Function + Q(a,x) = 1/\Gamma(a) \int_x^\infty dt t^{(a-1)} \exp(-t) for a > 0, + x \ge 0. + + -- Function: double gsl_sf_gamma_inc_P (double a, double x) + -- Function: int gsl_sf_gamma_inc_P_e (double a, double x, + gsl_sf_result * result) + + These routines compute the complementary normalized incomplete + Gamma Function P(a,x) = 1 - Q(a,x) = 1/\Gamma(a) \int_0^x dt + t^{(a-1)} \exp(-t) for a > 0, x \ge 0. + + Note that Abramowitz & Stegun call P(a,x) the incomplete gamma + function (section 6.5). + + +File: gsl-ref.info, Node: Beta Functions, Next: Incomplete Beta Function, Prev: Incomplete Gamma Functions, Up: Gamma and Beta Functions + +7.19.5 Beta Functions +--------------------- + + -- Function: double gsl_sf_beta (double a, double b) + -- Function: int gsl_sf_beta_e (double a, double b, gsl_sf_result + * result) + + These routines compute the Beta Function, B(a,b) = + \Gamma(a)\Gamma(b)/\Gamma(a+b) subject to a and b not being + negative integers. + + -- Function: double gsl_sf_lnbeta (double a, double b) + -- Function: int gsl_sf_lnbeta_e (double a, double b, gsl_sf_result + * result) + + These routines compute the logarithm of the Beta Function, + \log(B(a,b)) subject to a and b not being negative integers. + + +File: gsl-ref.info, Node: Incomplete Beta Function, Prev: Beta Functions, Up: Gamma and Beta Functions + +7.19.6 Incomplete Beta Function +------------------------------- + + -- Function: double gsl_sf_beta_inc (double a, double b, double x) + -- Function: int gsl_sf_beta_inc_e (double a, double b, double x, + gsl_sf_result * result) + + These routines compute the normalized incomplete Beta function + I_x(a,b) = B_x(a,b) / B(a,b) where + + B_x(a,b) = \int_0^x t^{a-1} (1-t)^{b-1} dt + + for 0 \le x \le 1. For a > 0, b > 0 the value is computed using a + continued fraction expansion. For all other values it is computed + using the relation + + I_x(a,b,x) = (1/a) x^a 2F1(a,1-b,a+1,x) / B(a,b) + + +File: gsl-ref.info, Node: Gegenbauer Functions, Next: Hermite Polynomials and Functions, Prev: Gamma and Beta Functions, Up: Special Functions + +7.20 Gegenbauer Functions +========================= + +The Gegenbauer polynomials are defined in Abramowitz & Stegun, Chapter +22, where they are known as Ultraspherical polynomials. The functions +described in this section are declared in the header file +‘gsl_sf_gegenbauer.h’. + + -- Function: double gsl_sf_gegenpoly_1 (double lambda, double x) + -- Function: double gsl_sf_gegenpoly_2 (double lambda, double x) + -- Function: double gsl_sf_gegenpoly_3 (double lambda, double x) + -- Function: int gsl_sf_gegenpoly_1_e (double lambda, double x, + gsl_sf_result * result) + -- Function: int gsl_sf_gegenpoly_2_e (double lambda, double x, + gsl_sf_result * result) + -- Function: int gsl_sf_gegenpoly_3_e (double lambda, double x, + gsl_sf_result * result) + + These functions evaluate the Gegenbauer polynomials + C^{(\lambda)}_n(x) using explicit representations for n = 1, 2, 3. + + -- Function: double gsl_sf_gegenpoly_n (int n, double lambda, double x) + -- Function: int gsl_sf_gegenpoly_n_e (int n, double lambda, double x, + gsl_sf_result * result) + + These functions evaluate the Gegenbauer polynomial + C^{(\lambda)}_n(x) for a specific value of ‘n’, ‘lambda’, ‘x’ + subject to \lambda > -1/2, n \ge 0. + + -- Function: int gsl_sf_gegenpoly_array (int nmax, double lambda, + double x, double result_array[]) + + This function computes an array of Gegenbauer polynomials + C^{(\lambda)}_n(x) for n = 0, 1, 2, \dots, nmax, subject to \lambda + > -1/2, nmax \ge 0. + + +File: gsl-ref.info, Node: Hermite Polynomials and Functions, Next: Hypergeometric Functions, Prev: Gegenbauer Functions, Up: Special Functions + +7.21 Hermite Polynomials and Functions +====================================== + +The Hermite polynomials exist in two variants: the probabilists’ version +He_n(x) and the physicists’version H_n(x). The are defined by the +derivatives + + He_n(x) = (-1)^n e^{x^2/2} (d / dx)^n e^{-x^2/2} + H_n(x) = (-1)^n e^{x^2} (d / dx)^n e^{-x^2} + +They are connected via + + He_n(x) = 2^{-n/2} H_n(x / \sqrt{2}) + H_n(x) = 2^{n/2} He_n(\sqrt{2} x) + +and satisfy the ordinary differential equations + + He_n^{''}(x) - x He_n^{'}(x) + n He_n(x) = 0 + H_n^{''}(x) - 2x H_n^{'}(x) + 2n H_n(x) = 0 + +The closely related Hermite functions are defined by + + psi_n = (n! sqrt(\pi))^{-1/2} e^{-x^2/2} He_n({sqrt(2) x}) + +and satisfy the Schrödinger equation for a quantum mechanical harmonic +oscillator + + psi_n^{''}(x) + (2n + 1 - x^2) psi_n(x) = 0 + +Maybe most importantly, the Hermite functions \psi_n are eigenfunctions +of the (continuous) Fourier transform. + +For further information see Abramowitz & Stegun, Chapter 22 and Szego, +Gabor (1939, 1958, 1967), Orthogonal Polynomials, American Mathematical +Society. The Hermite polynomials and functions are defined in the +header file ‘gsl_sf_hermite.h’. + +* Menu: + +* Hermite Polynomials:: +* Hermite Functions:: +* Derivatives of Hermite Polynomials:: +* Derivatives of Hermite Functions:: +* Zeros of Hermite Polynomials and Hermite Functions:: + + +File: gsl-ref.info, Node: Hermite Polynomials, Next: Hermite Functions, Up: Hermite Polynomials and Functions + +7.21.1 Hermite Polynomials +-------------------------- + + -- Function: double gsl_sf_hermite_prob (const int n, const double x) + -- Function: int gsl_sf_hermite_prob_e (const int n, const double x, + gsl_sf_result * result) + + These routines evaluate the probabilists’ Hermite polynomial + He_n(x) of order ‘n’ at position ‘x’. + + -- Function: int gsl_sf_hermite_prob_array (const int nmax, const + double x, double * result_array) + + This routine evaluates all probabilists’ Hermite polynomials + He_n(x) up to order ‘nmax’ at position ‘x’. The results are stored + in ‘result_array’. + + -- Function: double gsl_sf_hermite_prob_series (const int n, const + double x, const double * a) + -- Function: int gsl_sf_hermite_prob_series_e (const int n, const + double x, const double * a, gsl_sf_result * result) + + These routines evaluate the series \sum_{j=0}^n a_j He_j(x) with + He_j being the j-th probabilists’ Hermite polynomial using the + Clenshaw algorithm. + + -- Function: double gsl_sf_hermite_phys (const int n, const double x) + -- Function: int gsl_sf_hermite_phys_e (const int n, const double x, + gsl_sf_result * result) + + These routines evaluate the physicists’ Hermite polynomial H_n(x) + of order ‘n’ at position ‘x’. + + -- Function: int gsl_sf_hermite_phys_array (const int nmax, const + double x, double * result_array) + + This routine evaluates all physicists’ Hermite polynomials H_n up + to order ‘nmax’ at position ‘x’. The results are stored in + ‘result_array’. + + -- Function: double gsl_sf_hermite_phys_series (const int n, const + double x, const double * a) + -- Function: int gsl_sf_hermite_phys_series_e (const int n, const + double x, const double * a, gsl_sf_result * result) + + These routines evaluate the series \sum_{j=0}^n a_j H_j(x) with H_j + being the j-th physicists’ Hermite polynomial using the Clenshaw + algorithm. + + +File: gsl-ref.info, Node: Hermite Functions, Next: Derivatives of Hermite Polynomials, Prev: Hermite Polynomials, Up: Hermite Polynomials and Functions + +7.21.2 Hermite Functions +------------------------ + + -- Function: double gsl_sf_hermite_func (const int n, const double x) + -- Function: int gsl_sf_hermite_func_e (const int n, const double x, + gsl_sf_result * result) + + These routines evaluate the Hermite function \psi_n(x) of order ‘n’ + at position ‘x’. + + -- Function: int gsl_sf_hermite_func_array (const int nmax, const + double x, double * result_array) + + This routine evaluates all Hermite functions \psi_n(x) up to order + ‘nmax’ at position ‘x’. The results are stored in ‘result_array’. + + -- Function: double gsl_sf_hermite_func_series (const int n, const + double x, const double * a) + -- Function: int gsl_sf_hermite_func_series_e (const int n, const + double x, const double * a, gsl_sf_result * result) + + These routines evaluate the series \sum_{j=0}^n a_j \psi_j(x) with + \psi_j being the j-th Hermite function using the Clenshaw + algorithm. + + +File: gsl-ref.info, Node: Derivatives of Hermite Polynomials, Next: Derivatives of Hermite Functions, Prev: Hermite Functions, Up: Hermite Polynomials and Functions + +7.21.3 Derivatives of Hermite Polynomials +----------------------------------------- + + -- Function: double gsl_sf_hermite_prob_der (const int m, const int n, + const double x) + -- Function: int gsl_sf_hermite_prob_der_e (const int m, const int n, + const double x, gsl_sf_result * result) + + These routines evaluate the ‘m’-th derivative of the probabilists’ + Hermite polynomial He_n(x) of order ‘n’ at position ‘x’. + + -- Function: int gsl_sf_hermite_prob_array_der (const int m, const + int nmax, const double x, double * result_array) + + This routine evaluates the ‘m’-th derivative of all probabilists’ + Hermite polynomials He_n(x) up to order ‘nmax’ at position ‘x’. + The results are stored in ‘result_array’. + + -- Function: int gsl_sf_hermite_prob_der_array (const int mmax, const + int n, const double x, double * result_array) + + This routine evaluates all derivatives (starting from 0) up to the + ‘mmax’-th derivative of the probabilists’ Hermite polynomial of + order ‘n’ He_n(x) at position ‘x’. The results are stored in + ‘result_array’. + + -- Function: double gsl_sf_hermite_phys_der (const int m, const int n, + const double x) + -- Function: int gsl_sf_hermite_phys_der_e (const int m, const int n, + const double x, gsl_sf_result * result) + + These routines evaluate the ‘m’-th derivative of the physicists’ + Hermite polynomial H_n(x) of order ‘n’ at position ‘x’. + + -- Function: int gsl_sf_hermite_phys_array_der (const int m, const + int nmax, const double x, double * result_array) + + This routine evaluates the ‘m’-th derivative of all physicists’ + Hermite polynomials H_n up to order ‘nmax’ at position ‘x’. The + results are stored in ‘result_array’. + + -- Function: int gsl_sf_hermite_phys_der_array (const int mmax, const + int n, const double x, double * result_array) + + This routine evaluates all derivatives (starting from 0) up to the + ‘mmax’-th derivative of the physicists’ Hermite polynomial of order + ‘n’ H_n at position ‘x’. The results are stored in ‘result_array’. + + +File: gsl-ref.info, Node: Derivatives of Hermite Functions, Next: Zeros of Hermite Polynomials and Hermite Functions, Prev: Derivatives of Hermite Polynomials, Up: Hermite Polynomials and Functions + +7.21.4 Derivatives of Hermite Functions +--------------------------------------- + + -- Function: double gsl_sf_hermite_func_der (const int m, const int n, + const double x) + -- Function: int gsl_sf_hermite_func_der_e (const int m, const int n, + const double x, gsl_sf_result * result) + + These routines evaluate the ‘m’-th derivative of the Hermite + function \psi_n(x) of order ‘n’ at position ‘x’. + + +File: gsl-ref.info, Node: Zeros of Hermite Polynomials and Hermite Functions, Prev: Derivatives of Hermite Functions, Up: Hermite Polynomials and Functions + +7.21.5 Zeros of Hermite Polynomials and Hermite Functions +--------------------------------------------------------- + +These routines calculate the s-th zero of the Hermite +Polynomial/Function of order n. Since the zeros are symmetrical around +zero, only positive zeros are calculated, ordered from smallest to +largest, starting from index 1. Only for odd polynomial orders a zeroth +zero exists, its value always being zero. + + -- Function: double gsl_sf_hermite_prob_zero (const int n, const int s) + -- Function: int gsl_sf_hermite_prob_zero_e (const int n, const int s, + gsl_sf_result * result) + + These routines evaluate the ‘s’-th zero of the probabilists’ + Hermite polynomial He_n(x) of order ‘n’. + + -- Function: double gsl_sf_hermite_phys_zero (const int n, const int s) + -- Function: int gsl_sf_hermite_phys_zero_e (const int n, const int s, + gsl_sf_result * result) + + These routines evaluate the ‘s’-th zero of the physicists’ Hermite + polynomial H_n(x) of order ‘n’. + + -- Function: double gsl_sf_hermite_func_zero (const int n, const int s) + -- Function: int gsl_sf_hermite_func_zero_e (const int n, const int s, + gsl_sf_result * result) + + These routines evaluate the ‘s’-th zero of the Hermite function + \psi_n(x) of order ‘n’. + + +File: gsl-ref.info, Node: Hypergeometric Functions, Next: Laguerre Functions, Prev: Hermite Polynomials and Functions, Up: Special Functions + +7.22 Hypergeometric Functions +============================= + +Hypergeometric functions are described in Abramowitz & Stegun, Chapters +13 and 15. These functions are declared in the header file +‘gsl_sf_hyperg.h’. + + -- Function: double gsl_sf_hyperg_0F1 (double c, double x) + -- Function: int gsl_sf_hyperg_0F1_e (double c, double x, gsl_sf_result + * result) + + These routines compute the hypergeometric function + + 0F1(c,x) + + -- Function: double gsl_sf_hyperg_1F1_int (int m, int n, double x) + -- Function: int gsl_sf_hyperg_1F1_int_e (int m, int n, double x, + gsl_sf_result * result) + + These routines compute the confluent hypergeometric function + + 1F1(m,n,x) = M(m,n,x) + + for integer parameters ‘m’, ‘n’. + + -- Function: double gsl_sf_hyperg_1F1 (double a, double b, double x) + -- Function: int gsl_sf_hyperg_1F1_e (double a, double b, double x, + gsl_sf_result * result) + + These routines compute the confluent hypergeometric function + + 1F1(a,b,x) = M(a,b,x) + + for general parameters ‘a’, ‘b’. + + -- Function: double gsl_sf_hyperg_U_int (int m, int n, double x) + -- Function: int gsl_sf_hyperg_U_int_e (int m, int n, double x, + gsl_sf_result * result) + + These routines compute the confluent hypergeometric function + U(m,n,x) for integer parameters ‘m’, ‘n’. + + -- Function: int gsl_sf_hyperg_U_int_e10_e (int m, int n, double x, + gsl_sf_result_e10 * result) + + This routine computes the confluent hypergeometric function + U(m,n,x) for integer parameters ‘m’, ‘n’ using the *note + gsl_sf_result_e10: ce. type to return a result with extended range. + + -- Function: double gsl_sf_hyperg_U (double a, double b, double x) + -- Function: int gsl_sf_hyperg_U_e (double a, double b, double x, + gsl_sf_result * result) + + These routines compute the confluent hypergeometric function + U(a,b,x). + + -- Function: int gsl_sf_hyperg_U_e10_e (double a, double b, double x, + gsl_sf_result_e10 * result) + + This routine computes the confluent hypergeometric function + U(a,b,x) using the *note gsl_sf_result_e10: ce. type to return a + result with extended range. + + -- Function: double gsl_sf_hyperg_2F1 (double a, double b, double c, + double x) + -- Function: int gsl_sf_hyperg_2F1_e (double a, double b, double c, + double x, gsl_sf_result * result) + + These routines compute the Gauss hypergeometric function + + 2F1(a,b,c,x) = F(a,b,c,x) + + for |x| < 1. If the arguments (a,b,c,x) are too close to a + singularity then the function can return the error code + ‘GSL_EMAXITER’ when the series approximation converges too slowly. + This occurs in the region of x = 1, c - a - b = m for integer m. + + -- Function: double gsl_sf_hyperg_2F1_conj (double aR, double aI, + double c, double x) + -- Function: int gsl_sf_hyperg_2F1_conj_e (double aR, double aI, + double c, double x, gsl_sf_result * result) + + These routines compute the Gauss hypergeometric function + + 2F1(a_R + i a_I, aR - i aI, c, x) + + with complex parameters for |x| < 1. + + -- Function: double gsl_sf_hyperg_2F1_renorm (double a, double b, + double c, double x) + -- Function: int gsl_sf_hyperg_2F1_renorm_e (double a, double b, + double c, double x, gsl_sf_result * result) + + These routines compute the renormalized Gauss hypergeometric + function + + 2F1(a,b,c,x) / \Gamma(c) + + for |x| < 1. + + -- Function: double gsl_sf_hyperg_2F1_conj_renorm (double aR, + double aI, double c, double x) + -- Function: int gsl_sf_hyperg_2F1_conj_renorm_e (double aR, double aI, + double c, double x, gsl_sf_result * result) + + These routines compute the renormalized Gauss hypergeometric + function + + 2F1(a_R + i a_I, a_R - i a_I, c, x) / \Gamma(c) + + for |x| < 1. + + -- Function: double gsl_sf_hyperg_2F0 (double a, double b, double x) + -- Function: int gsl_sf_hyperg_2F0_e (double a, double b, double x, + gsl_sf_result * result) + + These routines compute the hypergeometric function + + 2F0(a,b,x) + + The series representation is a divergent hypergeometric series. + However, for x < 0 we have + + 2F0(a,b,x) = (-1/x)^a U(a,1+a-b,-1/x) + + +File: gsl-ref.info, Node: Laguerre Functions, Next: Lambert W Functions, Prev: Hypergeometric Functions, Up: Special Functions + +7.23 Laguerre Functions +======================= + +The generalized Laguerre polynomials, sometimes referred to as +associated Laguerre polynomials, are defined in terms of confluent +hypergeometric functions as + +L^a_n(x) = ((a+1)_n / n!) 1F1(-n,a+1,x) + +where (a)_n is the *note Pochhammer symbol: 22c. (rising factorial). +They are related to the plain Laguerre polynomials L_n(x) by L^0_n(x) = +L_n(x) and L^k_n(x) = (-1)^k (d^k/dx^k) L_{(n+k)}(x) For more +information see Abramowitz & Stegun, Chapter 22. + +The functions described in this section are declared in the header file +‘gsl_sf_laguerre.h’. + + -- Function: double gsl_sf_laguerre_1 (double a, double x) + -- Function: double gsl_sf_laguerre_2 (double a, double x) + -- Function: double gsl_sf_laguerre_3 (double a, double x) + -- Function: int gsl_sf_laguerre_1_e (double a, double x, gsl_sf_result + * result) + -- Function: int gsl_sf_laguerre_2_e (double a, double x, gsl_sf_result + * result) + -- Function: int gsl_sf_laguerre_3_e (double a, double x, gsl_sf_result + * result) + + These routines evaluate the generalized Laguerre polynomials + L^a_1(x), L^a_2(x), L^a_3(x) using explicit representations. + + -- Function: double gsl_sf_laguerre_n (const int n, const double a, + const double x) + -- Function: int gsl_sf_laguerre_n_e (int n, double a, double x, + gsl_sf_result * result) + + These routines evaluate the generalized Laguerre polynomials + L^a_n(x) for a > -1, n \ge 0. + + +File: gsl-ref.info, Node: Lambert W Functions, Next: Legendre Functions and Spherical Harmonics, Prev: Laguerre Functions, Up: Special Functions + +7.24 Lambert W Functions +======================== + +Lambert’s W functions, W(x), are defined to be solutions of the equation +W(x) \exp(W(x)) = x. This function has multiple branches for x < 0; +however, it has only two real-valued branches. We define W_0(x) to be +the principal branch, where W > -1 for x < 0, and W_{-1}(x) to be the +other real branch, where W < -1 for x < 0. The Lambert functions are +declared in the header file ‘gsl_sf_lambert.h’. + + -- Function: double gsl_sf_lambert_W0 (double x) + -- Function: int gsl_sf_lambert_W0_e (double x, gsl_sf_result * result) + + These compute the principal branch of the Lambert W function, + W_0(x). + + -- Function: double gsl_sf_lambert_Wm1 (double x) + -- Function: int gsl_sf_lambert_Wm1_e (double x, gsl_sf_result + * result) + + These compute the secondary real-valued branch of the Lambert W + function, W_{-1}(x). + + +File: gsl-ref.info, Node: Legendre Functions and Spherical Harmonics, Next: Logarithm and Related Functions, Prev: Lambert W Functions, Up: Special Functions + +7.25 Legendre Functions and Spherical Harmonics +=============================================== + +The Legendre Functions and Legendre Polynomials are described in +Abramowitz & Stegun, Chapter 8. These functions are declared in the +header file ‘gsl_sf_legendre.h’. + +* Menu: + +* Legendre Polynomials:: +* Associated Legendre Polynomials and Spherical Harmonics:: +* Conical Functions:: +* Radial Functions for Hyperbolic Space:: + + +File: gsl-ref.info, Node: Legendre Polynomials, Next: Associated Legendre Polynomials and Spherical Harmonics, Up: Legendre Functions and Spherical Harmonics + +7.25.1 Legendre Polynomials +--------------------------- + + -- Function: double gsl_sf_legendre_P1 (double x) + -- Function: double gsl_sf_legendre_P2 (double x) + -- Function: double gsl_sf_legendre_P3 (double x) + -- Function: int gsl_sf_legendre_P1_e (double x, gsl_sf_result + * result) + -- Function: int gsl_sf_legendre_P2_e (double x, gsl_sf_result + * result) + -- Function: int gsl_sf_legendre_P3_e (double x, gsl_sf_result + * result) + + These functions evaluate the Legendre polynomials P_l(x) using + explicit representations for l = 1, 2, 3. + + -- Function: double gsl_sf_legendre_Pl (int l, double x) + -- Function: int gsl_sf_legendre_Pl_e (int l, double x, gsl_sf_result + * result) + + These functions evaluate the Legendre polynomial P_l(x) for a + specific value of ‘l’, ‘x’ subject to l \ge 0 and |x| \le 1. + + -- Function: int gsl_sf_legendre_Pl_array (int lmax, double x, + double result_array[]) + -- Function: int gsl_sf_legendre_Pl_deriv_array (int lmax, double x, + double result_array[], double result_deriv_array[]) + + These functions compute arrays of Legendre polynomials P_l(x) and + derivatives dP_l(x)/dx for l = 0, \dots, lmax and |x| \le 1. + + -- Function: double gsl_sf_legendre_Q0 (double x) + -- Function: int gsl_sf_legendre_Q0_e (double x, gsl_sf_result + * result) + + These routines compute the Legendre function Q_0(x) for x > -1 and + x \ne 1. + + -- Function: double gsl_sf_legendre_Q1 (double x) + -- Function: int gsl_sf_legendre_Q1_e (double x, gsl_sf_result + * result) + + These routines compute the Legendre function Q_1(x) for x > -1 and + x \ne 1. + + -- Function: double gsl_sf_legendre_Ql (int l, double x) + -- Function: int gsl_sf_legendre_Ql_e (int l, double x, gsl_sf_result + * result) + + These routines compute the Legendre function Q_l(x) for x > -1, x + \ne 1 and l \ge 0. + + +File: gsl-ref.info, Node: Associated Legendre Polynomials and Spherical Harmonics, Next: Conical Functions, Prev: Legendre Polynomials, Up: Legendre Functions and Spherical Harmonics + +7.25.2 Associated Legendre Polynomials and Spherical Harmonics +-------------------------------------------------------------- + +The following functions compute the associated Legendre polynomials +P_l^m(x) which are solutions of the differential equation + + (1 - x^2) d^2 P_l^m(x) / dx^2 P_l^m(x) - 2x d/dx P_l^m(x) + + ( l(l+1) - m^2 / (1 - x^2) ) P_l^m(x) = 0 + +where the degree l and order m satisfy 0 \le l and 0 \le m \le l. The +functions P_l^m(x) grow combinatorially with l and can overflow for l +larger than about 150. Alternatively, one may calculate normalized +associated Legendre polynomials. There are a number of different +normalization conventions, and these functions can be stably computed up +to degree and order 2700. The following normalizations are provided: + + * Schmidt semi-normalization + + Schmidt semi-normalized associated Legendre polynomials are often + used in the magnetics community and are defined as + + S_l^0(x) = P_l^0(x) + S_l^m(x) = (-1)^m \sqrt((2(l-m)! / (l+m)!)) P_l^m(x), m > 0 + + The factor of (-1)^m is called the Condon-Shortley phase factor and + can be excluded if desired by setting the parameter ‘csphase = 1’ + in the functions below. + + * Spherical Harmonic Normalization + + The associated Legendre polynomials suitable for calculating + spherical harmonics are defined as + + Y_l^m(x) = (-1)^m \sqrt((2l + 1) * (l-m)! / (4 \pi) / (l+m)!) P_l^m(x) + + where again the phase factor (-1)^m can be included or excluded if + desired. + + * Full Normalization + + The fully normalized associated Legendre polynomials are defined as + + N_l^m(x) = (-1)^m \sqrt((l + 1/2) (l-m)! / (l+m)!) P_l^m(x) + + and have the property + + \int_{-1}^1 N_l^m(x)^2 dx = 1 + +The normalized associated Legendre routines below use a recurrence +relation which is stable up to a degree and order of about 2700. Beyond +this, the computed functions could suffer from underflow leading to +incorrect results. Routines are provided to compute first and second +derivatives dP_l^m(x)/dx and d^2 P_l^m(x)/dx^2 as well as their +alternate versions d P_l^m(\cos{\theta})/d\theta and d^2 +P_l^m(\cos{\theta})/d\theta^2. While there is a simple scaling +relationship between the two forms, the derivatives involving \theta are +heavily used in spherical harmonic expansions and so these routines are +also provided. + +In the functions below, a parameter of type *note gsl_sf_legendre_t: +2ab. specifies the type of normalization to use. The possible values +are + + -- Type: gsl_sf_legendre_t + + Value Description + + --------------------------------------------------------------------------------------------------------------------------- + + ‘GSL_SF_LEGENDRE_NONE’ The unnormalized associated Legendre polynomials P_l^m(x) + + + ‘GSL_SF_LEGENDRE_SCHMIDT’ The Schmidt semi-normalized associated Legendre polynomials S_l^m(x) + + + ‘GSL_SF_LEGENDRE_SPHARM’ The spherical harmonic associated Legendre polynomials Y_l^m(x) + + + ‘GSL_SF_LEGENDRE_FULL’ The fully normalized associated Legendre polynomials N_l^m(x) + + + -- Function: int gsl_sf_legendre_array (const gsl_sf_legendre_t norm, + const size_t lmax, const double x, double result_array[]) + -- Function: int gsl_sf_legendre_array_e (const gsl_sf_legendre_t norm, + const size_t lmax, const double x, const double csphase, + double result_array[]) + + These functions calculate all normalized associated Legendre + polynomials for 0 \le l \le lmax and 0 \le m \le l for |x| \le 1. + The ‘norm’ parameter specifies which normalization is used. The + normalized P_l^m(x) values are stored in ‘result_array’, whose + minimum size can be obtained from calling *note + gsl_sf_legendre_array_n(): 2ae. The array index of P_l^m(x) is + obtained from calling ‘gsl_sf_legendre_array_index(l, m)’. To + include or exclude the Condon-Shortley phase factor of (-1)^m, set + the parameter ‘csphase’ to either -1 or 1 respectively in the ‘_e’ + function. This factor is excluded by default. + + -- Function: int gsl_sf_legendre_deriv_array (const + gsl_sf_legendre_t norm, const size_t lmax, const double x, + double result_array[], double result_deriv_array[]) + -- Function: int gsl_sf_legendre_deriv_array_e (const + gsl_sf_legendre_t norm, const size_t lmax, const double x, + const double csphase, double result_array[], + double result_deriv_array[]) + + These functions calculate all normalized associated Legendre + functions and their first derivatives up to degree ‘lmax’ for |x| < + 1. The parameter ‘norm’ specifies the normalization used. The + normalized P_l^m(x) values and their derivatives dP_l^m(x)/dx are + stored in ‘result_array’ and ‘result_deriv_array’ respectively. To + include or exclude the Condon-Shortley phase factor of (-1)^m, set + the parameter ‘csphase’ to either -1 or 1 respectively in the ‘_e’ + function. This factor is excluded by default. + + -- Function: int gsl_sf_legendre_deriv_alt_array (const + gsl_sf_legendre_t norm, const size_t lmax, const double x, + double result_array[], double result_deriv_array[]) + -- Function: int gsl_sf_legendre_deriv_alt_array_e (const + gsl_sf_legendre_t norm, const size_t lmax, const double x, + const double csphase, double result_array[], + double result_deriv_array[]) + + These functions calculate all normalized associated Legendre + functions and their (alternate) first derivatives up to degree + ‘lmax’ for |x| < 1. The normalized P_l^m(x) values and their + derivatives dP_l^m(\cos{\theta})/d\theta are stored in + ‘result_array’ and ‘result_deriv_array’ respectively. To include + or exclude the Condon-Shortley phase factor of (-1)^m, set the + parameter ‘csphase’ to either -1 or 1 respectively in the ‘_e’ + function. This factor is excluded by default. + + -- Function: int gsl_sf_legendre_deriv2_array (const + gsl_sf_legendre_t norm, const size_t lmax, const double x, + double result_array[], double result_deriv_array[], + double result_deriv2_array[]) + -- Function: int gsl_sf_legendre_deriv2_array_e (const + gsl_sf_legendre_t norm, const size_t lmax, const double x, + const double csphase, double result_array[], + double result_deriv_array[], double result_deriv2_array[]) + + These functions calculate all normalized associated Legendre + functions and their first and second derivatives up to degree + ‘lmax’ for |x| < 1. The parameter ‘norm’ specifies the + normalization used. The normalized P_l^m(x), their first + derivatives dP_l^m(x)/dx, and their second derivatives d^2 + P_l^m(x)/dx^2 are stored in ‘result_array’, ‘result_deriv_array’, + and ‘result_deriv2_array’ respectively. To include or exclude the + Condon-Shortley phase factor of (-1)^m, set the parameter ‘csphase’ + to either -1 or 1 respectively in the ‘_e’ function. This factor + is excluded by default. + + -- Function: int gsl_sf_legendre_deriv2_alt_array (const + gsl_sf_legendre_t norm, const size_t lmax, const double x, + double result_array[], double result_deriv_array[], + double result_deriv2_array[]) + -- Function: int gsl_sf_legendre_deriv2_alt_array_e (const + gsl_sf_legendre_t norm, const size_t lmax, const double x, + const double csphase, double result_array[], + double result_deriv_array[], double result_deriv2_array[]) + + These functions calculate all normalized associated Legendre + functions and their (alternate) first and second derivatives up to + degree ‘lmax’ for |x| < 1. The parameter ‘norm’ specifies the + normalization used. The normalized P_l^m(x), their first + derivatives dP_l^m(\cos{\theta})/d\theta, and their second + derivatives d^2 P_l^m(\cos{\theta})/d\theta^2 are stored in + ‘result_array’, ‘result_deriv_array’, and ‘result_deriv2_array’ + respectively. To include or exclude the Condon-Shortley phase + factor of (-1)^m, set the parameter ‘csphase’ to either -1 or 1 + respectively in the ‘_e’ function. This factor is excluded by + default. + + -- Function: size_t gsl_sf_legendre_array_n (const size_t lmax) + + This function returns the minimum array size for maximum degree + ‘lmax’ needed for the array versions of the associated Legendre + functions. Size is calculated as the total number of P_l^m(x) + functions, plus extra space for precomputing multiplicative factors + used in the recurrence relations. + + -- Function: size_t gsl_sf_legendre_array_index (const size_t l, const + size_t m) + + This function returns the index into ‘result_array’, + ‘result_deriv_array’, or ‘result_deriv2_array’ corresponding to + P_l^m(x), P_l^{'m}(x), or P_l^{''m}(x). The index is given by + l(l+1)/2 + m. + + -- Function: double gsl_sf_legendre_Plm (int l, int m, double x) + -- Function: int gsl_sf_legendre_Plm_e (int l, int m, double x, + gsl_sf_result * result) + + These routines compute the associated Legendre polynomial P_l^m(x) + for m \ge 0, l \ge m, and |x| \le 1. + + -- Function: double gsl_sf_legendre_sphPlm (int l, int m, double x) + -- Function: int gsl_sf_legendre_sphPlm_e (int l, int m, double x, + gsl_sf_result * result) + + These routines compute the normalized associated Legendre + polynomial \sqrt{(2l+1)/(4\pi)} \sqrt{(l-m)!/(l+m)!} P_l^m(x) + suitable for use in spherical harmonics. The parameters must + satisfy m \ge 0, l \ge m, and |x| \le 1. These routines avoid the + overflows that occur for the standard normalization of P_l^m(x). + + -- Function: int gsl_sf_legendre_Plm_array (int lmax, int m, double x, + double result_array[]) + -- Function: int gsl_sf_legendre_Plm_deriv_array (int lmax, int m, + double x, double result_array[], double result_deriv_array[]) + + These functions are now deprecated and will be removed in a future + release; see *note gsl_sf_legendre_array(): 2ac. and *note + gsl_sf_legendre_deriv_array(): 2af. + + -- Function: int gsl_sf_legendre_sphPlm_array (int lmax, int m, + double x, double result_array[]) + -- Function: int gsl_sf_legendre_sphPlm_deriv_array (int lmax, int m, + double x, double result_array[], double result_deriv_array[]) + + These functions are now deprecated and will be removed in a future + release; see *note gsl_sf_legendre_array(): 2ac. and *note + gsl_sf_legendre_deriv_array(): 2af. + + -- Function: int gsl_sf_legendre_array_size (const int lmax, const + int m) + + This function is now deprecated and will be removed in a future + release. + + +File: gsl-ref.info, Node: Conical Functions, Next: Radial Functions for Hyperbolic Space, Prev: Associated Legendre Polynomials and Spherical Harmonics, Up: Legendre Functions and Spherical Harmonics + +7.25.3 Conical Functions +------------------------ + +The Conical Functions P^\mu_{-(1/2)+i\lambda}(x) and +Q^\mu_{-(1/2)+i\lambda} are described in Abramowitz & Stegun, Section +8.12. + + -- Function: double gsl_sf_conicalP_half (double lambda, double x) + -- Function: int gsl_sf_conicalP_half_e (double lambda, double x, + gsl_sf_result * result) + + These routines compute the irregular Spherical Conical Function + P^{1/2}_{-1/2 + i \lambda}(x) for x > -1. + + -- Function: double gsl_sf_conicalP_mhalf (double lambda, double x) + -- Function: int gsl_sf_conicalP_mhalf_e (double lambda, double x, + gsl_sf_result * result) + + These routines compute the regular Spherical Conical Function + P^{-1/2}_{-1/2 + i \lambda}(x) for x > -1. + + -- Function: double gsl_sf_conicalP_0 (double lambda, double x) + -- Function: int gsl_sf_conicalP_0_e (double lambda, double x, + gsl_sf_result * result) + + These routines compute the conical function P^0_{-1/2 + i + \lambda}(x) for x > -1. + + -- Function: double gsl_sf_conicalP_1 (double lambda, double x) + -- Function: int gsl_sf_conicalP_1_e (double lambda, double x, + gsl_sf_result * result) + + These routines compute the conical function P^1_{-1/2 + i + \lambda}(x) for x > -1. + + -- Function: double gsl_sf_conicalP_sph_reg (int l, double lambda, + double x) + -- Function: int gsl_sf_conicalP_sph_reg_e (int l, double lambda, + double x, gsl_sf_result * result) + + These routines compute the Regular Spherical Conical Function + P^{-1/2-l}_{-1/2 + i \lambda}(x) for x > -1 and l \ge -1. + + -- Function: double gsl_sf_conicalP_cyl_reg (int m, double lambda, + double x) + -- Function: int gsl_sf_conicalP_cyl_reg_e (int m, double lambda, + double x, gsl_sf_result * result) + + These routines compute the Regular Cylindrical Conical Function + P^{-m}_{-1/2 + i \lambda}(x) for x > -1 and m \ge -1. + + +File: gsl-ref.info, Node: Radial Functions for Hyperbolic Space, Prev: Conical Functions, Up: Legendre Functions and Spherical Harmonics + +7.25.4 Radial Functions for Hyperbolic Space +-------------------------------------------- + +The following spherical functions are specializations of Legendre +functions which give the regular eigenfunctions of the Laplacian on a +3-dimensional hyperbolic space H^3. Of particular interest is the flat +limit, \lambda \to \infty, \eta \to 0, \lambda\eta fixed. + + -- Function: double gsl_sf_legendre_H3d_0 (double lambda, double eta) + -- Function: int gsl_sf_legendre_H3d_0_e (double lambda, double eta, + gsl_sf_result * result) + + These routines compute the zeroth radial eigenfunction of the + Laplacian on the 3-dimensional hyperbolic space, + + L^{H3d}_0(\lambda,\eta) := {\sin(\lambda\eta) \over \lambda\sinh(\eta)} + + for \eta \ge 0. In the flat limit this takes the form + L^{H3d}_0(\lambda,\eta) = j_0(\lambda\eta). + + -- Function: double gsl_sf_legendre_H3d_1 (double lambda, double eta) + -- Function: int gsl_sf_legendre_H3d_1_e (double lambda, double eta, + gsl_sf_result * result) + + These routines compute the first radial eigenfunction of the + Laplacian on the 3-dimensional hyperbolic space, + + L^{H3d}_1(\lambda,\eta) := {1\over\sqrt{\lambda^2 + 1}} {\left(\sin(\lambda \eta)\over \lambda \sinh(\eta)\right)} \left(\coth(\eta) - \lambda \cot(\lambda\eta)\right) + + for \eta \ge 0 In the flat limit this takes the form + L^{H3d}_1(\lambda,\eta) = j_1(\lambda\eta). + + -- Function: double gsl_sf_legendre_H3d (int l, double lambda, + double eta) + -- Function: int gsl_sf_legendre_H3d_e (int l, double lambda, + double eta, gsl_sf_result * result) + + These routines compute the ‘l’-th radial eigenfunction of the + Laplacian on the 3-dimensional hyperbolic space \eta \ge 0 and l + \ge 0. In the flat limit this takes the form + L^{H3d}_l(\lambda,\eta) = j_l(\lambda\eta). + + -- Function: int gsl_sf_legendre_H3d_array (int lmax, double lambda, + double eta, double result_array[]) + + This function computes an array of radial eigenfunctions L^{H3d}_l( + \lambda, \eta) for 0 \le l \le lmax. + + +File: gsl-ref.info, Node: Logarithm and Related Functions, Next: Mathieu Functions, Prev: Legendre Functions and Spherical Harmonics, Up: Special Functions + +7.26 Logarithm and Related Functions +==================================== + +Information on the properties of the Logarithm function can be found in +Abramowitz & Stegun, Chapter 4. The functions described in this section +are declared in the header file ‘gsl_sf_log.h’. + + -- Function: double gsl_sf_log (double x) + -- Function: int gsl_sf_log_e (double x, gsl_sf_result * result) + + These routines compute the logarithm of ‘x’, \log(x), for x > 0. + + -- Function: double gsl_sf_log_abs (double x) + -- Function: int gsl_sf_log_abs_e (double x, gsl_sf_result * result) + + These routines compute the logarithm of the magnitude of ‘x’, + \log(|x|), for x \ne 0. + + -- Function: int gsl_sf_complex_log_e (double zr, double zi, + gsl_sf_result * lnr, gsl_sf_result * theta) + + This routine computes the complex logarithm of z = z_r + i z_i. + The results are returned as ‘lnr’, ‘theta’ such that \exp(lnr + i + \theta) = z_r + i z_i, where \theta lies in the range [-\pi,\pi]. + + -- Function: double gsl_sf_log_1plusx (double x) + -- Function: int gsl_sf_log_1plusx_e (double x, gsl_sf_result * result) + + These routines compute \log(1 + x) for x > -1 using an algorithm + that is accurate for small ‘x’. + + -- Function: double gsl_sf_log_1plusx_mx (double x) + -- Function: int gsl_sf_log_1plusx_mx_e (double x, gsl_sf_result + * result) + + These routines compute \log(1 + x) - x for x > -1 using an + algorithm that is accurate for small ‘x’. + + +File: gsl-ref.info, Node: Mathieu Functions, Next: Power Function, Prev: Logarithm and Related Functions, Up: Special Functions + +7.27 Mathieu Functions +====================== + +The routines described in this section compute the angular and radial +Mathieu functions, and their characteristic values. Mathieu functions +are the solutions of the following two differential equations: + + d^2y/dv^2 + (a - 2q\cos 2v)y = 0 + d^2f/du^2 - (a - 2q\cosh 2u)f = 0 + +The angular Mathieu functions ce_r(x,q), se_r(x,q) are the even and odd +periodic solutions of the first equation, which is known as Mathieu’s +equation. These exist only for the discrete sequence of characteristic +values a = a_r(q) (even-periodic) and a = b_r(q) (odd-periodic). + +The radial Mathieu functions Mc^{(j)}_{r}(z,q) and Ms^{(j)}_{r}(z,q) are +the solutions of the second equation, which is referred to as Mathieu’s +modified equation. The radial Mathieu functions of the first, second, +third and fourth kind are denoted by the parameter j, which takes the +value 1, 2, 3 or 4. + +For more information on the Mathieu functions, see Abramowitz and +Stegun, Chapter 20. These functions are defined in the header file +‘gsl_sf_mathieu.h’. + +* Menu: + +* Mathieu Function Workspace:: +* Mathieu Function Characteristic Values:: +* Angular Mathieu Functions:: +* Radial Mathieu Functions:: + + +File: gsl-ref.info, Node: Mathieu Function Workspace, Next: Mathieu Function Characteristic Values, Up: Mathieu Functions + +7.27.1 Mathieu Function Workspace +--------------------------------- + +The Mathieu functions can be computed for a single order or for multiple +orders, using array-based routines. The array-based routines require a +preallocated workspace. + + -- Type: gsl_sf_mathieu_workspace + + Workspace required for array-based routines + + -- Function: gsl_sf_mathieu_workspace * gsl_sf_mathieu_alloc (size_t n, + double qmax) + + This function returns a workspace for the array versions of the + Mathieu routines. The arguments n and ‘qmax’ specify the maximum + order and q-value of Mathieu functions which can be computed with + this workspace. + + -- Function: void gsl_sf_mathieu_free (gsl_sf_mathieu_workspace * work) + + This function frees the workspace ‘work’. + + +File: gsl-ref.info, Node: Mathieu Function Characteristic Values, Next: Angular Mathieu Functions, Prev: Mathieu Function Workspace, Up: Mathieu Functions + +7.27.2 Mathieu Function Characteristic Values +--------------------------------------------- + + -- Function: int gsl_sf_mathieu_a (int n, double q) + -- Function: int gsl_sf_mathieu_a_e (int n, double q, gsl_sf_result + * result) + -- Function: int gsl_sf_mathieu_b (int n, double q) + -- Function: int gsl_sf_mathieu_b_e (int n, double q, gsl_sf_result + * result) + + These routines compute the characteristic values a_n(q), b_n(q) of + the Mathieu functions ce_n(q,x) and se_n(q,x), respectively. + + -- Function: int gsl_sf_mathieu_a_array (int order_min, int order_max, + double q, gsl_sf_mathieu_workspace * work, + double result_array[]) + -- Function: int gsl_sf_mathieu_b_array (int order_min, int order_max, + double q, gsl_sf_mathieu_workspace * work, + double result_array[]) + + These routines compute a series of Mathieu characteristic values + a_n(q), b_n(q) for n from ‘order_min’ to ‘order_max’ inclusive, + storing the results in the array ‘result_array’. + + +File: gsl-ref.info, Node: Angular Mathieu Functions, Next: Radial Mathieu Functions, Prev: Mathieu Function Characteristic Values, Up: Mathieu Functions + +7.27.3 Angular Mathieu Functions +-------------------------------- + + -- Function: int gsl_sf_mathieu_ce (int n, double q, double x) + -- Function: int gsl_sf_mathieu_ce_e (int n, double q, double x, + gsl_sf_result * result) + -- Function: int gsl_sf_mathieu_se (int n, double q, double x) + -- Function: int gsl_sf_mathieu_se_e (int n, double q, double x, + gsl_sf_result * result) + + These routines compute the angular Mathieu functions ce_n(q,x) and + se_n(q,x), respectively. + + -- Function: int gsl_sf_mathieu_ce_array (int nmin, int nmax, double q, + double x, gsl_sf_mathieu_workspace * work, + double result_array[]) + -- Function: int gsl_sf_mathieu_se_array (int nmin, int nmax, double q, + double x, gsl_sf_mathieu_workspace * work, + double result_array[]) + + These routines compute a series of the angular Mathieu functions + ce_n(q,x) and se_n(q,x) of order n from ‘nmin’ to ‘nmax’ inclusive, + storing the results in the array ‘result_array’. + + +File: gsl-ref.info, Node: Radial Mathieu Functions, Prev: Angular Mathieu Functions, Up: Mathieu Functions + +7.27.4 Radial Mathieu Functions +------------------------------- + + -- Function: int gsl_sf_mathieu_Mc (int j, int n, double q, double x) + -- Function: int gsl_sf_mathieu_Mc_e (int j, int n, double q, double x, + gsl_sf_result * result) + -- Function: int gsl_sf_mathieu_Ms (int j, int n, double q, double x) + -- Function: int gsl_sf_mathieu_Ms_e (int j, int n, double q, double x, + gsl_sf_result * result) + + These routines compute the radial ‘j’-th kind Mathieu functions + Mc_n^{(j)}(q,x) and Ms_n^{(j)}(q,x) of order ‘n’. + + The allowed values of ‘j’ are 1 and 2. The functions for j = 3,4 + can be computed as M_n^{(3)} = M_n^{(1)} + iM_n^{(2)} and M_n^{(4)} + = M_n^{(1)} - iM_n^{(2)}, where M_n^{(j)} = Mc_n^{(j)} or + Ms_n^{(j)}. + + -- Function: int gsl_sf_mathieu_Mc_array (int j, int nmin, int nmax, + double q, double x, gsl_sf_mathieu_workspace * work, + double result_array[]) + -- Function: int gsl_sf_mathieu_Ms_array (int j, int nmin, int nmax, + double q, double x, gsl_sf_mathieu_workspace * work, + double result_array[]) + + These routines compute a series of the radial Mathieu functions of + kind ‘j’, with order from ‘nmin’ to ‘nmax’ inclusive, storing the + results in the array ‘result_array’. + + +File: gsl-ref.info, Node: Power Function, Next: Psi Digamma Function, Prev: Mathieu Functions, Up: Special Functions + +7.28 Power Function +=================== + +The following functions are equivalent to the function *note +gsl_pow_int(): 4a. with an error estimate. These functions are declared +in the header file ‘gsl_sf_pow_int.h’. + + -- Function: double gsl_sf_pow_int (double x, int n) + -- Function: int gsl_sf_pow_int_e (double x, int n, gsl_sf_result + * result) + + These routines compute the power x^n for integer ‘n’. The power is + computed using the minimum number of multiplications. For example, + x^8 is computed as ((x^2)^2)^2, requiring only 3 multiplications. + For reasons of efficiency, these functions do not check for + overflow or underflow conditions. The following is a simple + example: + + #include + /* compute 3.0**12 */ + double y = gsl_sf_pow_int(3.0, 12); + + +File: gsl-ref.info, Node: Psi Digamma Function, Next: Synchrotron Functions, Prev: Power Function, Up: Special Functions + +7.29 Psi (Digamma) Function +=========================== + +The polygamma functions of order n are defined by + + \psi^{(n)}(x) = (d/dx)^n \psi(x) = (d/dx)^{n+1} \log(\Gamma(x)) + +where \psi(x) = \Gamma'(x)/\Gamma(x) is known as the digamma function. +These functions are declared in the header file ‘gsl_sf_psi.h’. + +* Menu: + +* Digamma Function:: +* Trigamma Function:: +* Polygamma Function:: + + +File: gsl-ref.info, Node: Digamma Function, Next: Trigamma Function, Up: Psi Digamma Function + +7.29.1 Digamma Function +----------------------- + + -- Function: double gsl_sf_psi_int (int n) + -- Function: int gsl_sf_psi_int_e (int n, gsl_sf_result * result) + + These routines compute the digamma function \psi(n) for positive + integer ‘n’. The digamma function is also called the Psi function. + + -- Function: double gsl_sf_psi (double x) + -- Function: int gsl_sf_psi_e (double x, gsl_sf_result * result) + + These routines compute the digamma function \psi(x) for general + ‘x’, x \ne 0. + + -- Function: double gsl_sf_psi_1piy (double y) + -- Function: int gsl_sf_psi_1piy_e (double y, gsl_sf_result * result) + + These routines compute the real part of the digamma function on the + line 1 + i y, \Re[\psi(1 + i y)]. + + +File: gsl-ref.info, Node: Trigamma Function, Next: Polygamma Function, Prev: Digamma Function, Up: Psi Digamma Function + +7.29.2 Trigamma Function +------------------------ + + -- Function: double gsl_sf_psi_1_int (int n) + -- Function: int gsl_sf_psi_1_int_e (int n, gsl_sf_result * result) + + These routines compute the Trigamma function \psi'(n) for positive + integer n. + + -- Function: double gsl_sf_psi_1 (double x) + -- Function: int gsl_sf_psi_1_e (double x, gsl_sf_result * result) + + These routines compute the Trigamma function \psi'(x) for general + ‘x’. + + +File: gsl-ref.info, Node: Polygamma Function, Prev: Trigamma Function, Up: Psi Digamma Function + +7.29.3 Polygamma Function +------------------------- + + -- Function: double gsl_sf_psi_n (int n, double x) + -- Function: int gsl_sf_psi_n_e (int n, double x, gsl_sf_result + * result) + + These routines compute the polygamma function \psi^{(n)}(x) for n + \ge 0, x > 0. + + +File: gsl-ref.info, Node: Synchrotron Functions, Next: Transport Functions, Prev: Psi Digamma Function, Up: Special Functions + +7.30 Synchrotron Functions +========================== + +The functions described in this section are declared in the header file +‘gsl_sf_synchrotron.h’. + + -- Function: double gsl_sf_synchrotron_1 (double x) + -- Function: int gsl_sf_synchrotron_1_e (double x, gsl_sf_result + * result) + + These routines compute the first synchrotron function x + \int_x^\infty dt K_{5/3}(t) for x \ge 0. + + -- Function: double gsl_sf_synchrotron_2 (double x) + -- Function: int gsl_sf_synchrotron_2_e (double x, gsl_sf_result + * result) + + These routines compute the second synchrotron function x K_{2/3}(x) + for x \ge 0. + + +File: gsl-ref.info, Node: Transport Functions, Next: Trigonometric Functions, Prev: Synchrotron Functions, Up: Special Functions + +7.31 Transport Functions +======================== + +The transport functions J(n,x) are defined by the integral +representations + + J(n,x) = \int_0^x t^n e^t /(e^t - 1)^2 dt + +They are declared in the header file ‘gsl_sf_transport.h’. + + -- Function: double gsl_sf_transport_2 (double x) + -- Function: int gsl_sf_transport_2_e (double x, gsl_sf_result + * result) + + These routines compute the transport function J(2,x). + + -- Function: double gsl_sf_transport_3 (double x) + -- Function: int gsl_sf_transport_3_e (double x, gsl_sf_result + * result) + + These routines compute the transport function J(3,x). + + -- Function: double gsl_sf_transport_4 (double x) + -- Function: int gsl_sf_transport_4_e (double x, gsl_sf_result + * result) + + These routines compute the transport function J(4,x). + + -- Function: double gsl_sf_transport_5 (double x) + -- Function: int gsl_sf_transport_5_e (double x, gsl_sf_result + * result) + + These routines compute the transport function J(5,x). + + +File: gsl-ref.info, Node: Trigonometric Functions, Next: Zeta Functions, Prev: Transport Functions, Up: Special Functions + +7.32 Trigonometric Functions +============================ + +The library includes its own trigonometric functions in order to provide +consistency across platforms and reliable error estimates. These +functions are declared in the header file ‘gsl_sf_trig.h’. + +* Menu: + +* Circular Trigonometric Functions:: +* Trigonometric Functions for Complex Arguments:: +* Hyperbolic Trigonometric Functions:: +* Conversion Functions:: +* Restriction Functions:: +* Trigonometric Functions With Error Estimates:: + + +File: gsl-ref.info, Node: Circular Trigonometric Functions, Next: Trigonometric Functions for Complex Arguments, Up: Trigonometric Functions + +7.32.1 Circular Trigonometric Functions +--------------------------------------- + + -- Function: double gsl_sf_sin (double x) + -- Function: int gsl_sf_sin_e (double x, gsl_sf_result * result) + + These routines compute the sine function \sin(x). + + -- Function: double gsl_sf_cos (double x) + -- Function: int gsl_sf_cos_e (double x, gsl_sf_result * result) + + These routines compute the cosine function \cos(x). + + -- Function: double gsl_sf_hypot (double x, double y) + -- Function: int gsl_sf_hypot_e (double x, double y, gsl_sf_result + * result) + + These routines compute the hypotenuse function \sqrt{x^2 + y^2} + avoiding overflow and underflow. + + -- Function: double gsl_sf_sinc (double x) + -- Function: int gsl_sf_sinc_e (double x, gsl_sf_result * result) + + These routines compute \sinc(x) = \sin(\pi x) / (\pi x) for any + value of ‘x’. + + +File: gsl-ref.info, Node: Trigonometric Functions for Complex Arguments, Next: Hyperbolic Trigonometric Functions, Prev: Circular Trigonometric Functions, Up: Trigonometric Functions + +7.32.2 Trigonometric Functions for Complex Arguments +---------------------------------------------------- + + -- Function: int gsl_sf_complex_sin_e (double zr, double zi, + gsl_sf_result * szr, gsl_sf_result * szi) + + This function computes the complex sine, \sin(z_r + i z_i) storing + the real and imaginary parts in ‘szr’, ‘szi’. + + -- Function: int gsl_sf_complex_cos_e (double zr, double zi, + gsl_sf_result * czr, gsl_sf_result * czi) + + This function computes the complex cosine, \cos(z_r + i z_i) + storing the real and imaginary parts in ‘czr’, ‘czi’. + + -- Function: int gsl_sf_complex_logsin_e (double zr, double zi, + gsl_sf_result * lszr, gsl_sf_result * lszi) + + This function computes the logarithm of the complex sine, + \log(\sin(z_r + i z_i)) storing the real and imaginary parts in + ‘lszr’, ‘lszi’. + + +File: gsl-ref.info, Node: Hyperbolic Trigonometric Functions, Next: Conversion Functions, Prev: Trigonometric Functions for Complex Arguments, Up: Trigonometric Functions + +7.32.3 Hyperbolic Trigonometric Functions +----------------------------------------- + + -- Function: double gsl_sf_lnsinh (double x) + -- Function: int gsl_sf_lnsinh_e (double x, gsl_sf_result * result) + + These routines compute \log(\sinh(x)) for x > 0. + + -- Function: double gsl_sf_lncosh (double x) + -- Function: int gsl_sf_lncosh_e (double x, gsl_sf_result * result) + + These routines compute \log(\cosh(x)) for any ‘x’. + + +File: gsl-ref.info, Node: Conversion Functions, Next: Restriction Functions, Prev: Hyperbolic Trigonometric Functions, Up: Trigonometric Functions + +7.32.4 Conversion Functions +--------------------------- + + -- Function: int gsl_sf_polar_to_rect (double r, double theta, + gsl_sf_result * x, gsl_sf_result * y) + + This function converts the polar coordinates (‘r’, ‘theta’) to + rectilinear coordinates (‘x’, ‘y’), x = r\cos(\theta), y = + r\sin(\theta). + + -- Function: int gsl_sf_rect_to_polar (double x, double y, + gsl_sf_result * r, gsl_sf_result * theta) + + This function converts the rectilinear coordinates (‘x’, ‘y’) to + polar coordinates (‘r’, ‘theta’), such that x = r\cos(\theta), y = + r\sin(\theta). The argument ‘theta’ lies in the range [-\pi, \pi]. + + +File: gsl-ref.info, Node: Restriction Functions, Next: Trigonometric Functions With Error Estimates, Prev: Conversion Functions, Up: Trigonometric Functions + +7.32.5 Restriction Functions +---------------------------- + + -- Function: double gsl_sf_angle_restrict_symm (double theta) + -- Function: int gsl_sf_angle_restrict_symm_e (double * theta) + + These routines force the angle ‘theta’ to lie in the range + (-\pi,\pi]. + + Note that the mathematical value of \pi is slightly greater than + ‘M_PI’, so the machine numbers ‘M_PI’ and ‘-M_PI’ are included in + the range. + + -- Function: double gsl_sf_angle_restrict_pos (double theta) + -- Function: int gsl_sf_angle_restrict_pos_e (double * theta) + + These routines force the angle ‘theta’ to lie in the range [0, + 2\pi). + + Note that the mathematical value of 2\pi is slightly greater than + ‘2*M_PI’, so the machine number ‘2*M_PI’ is included in the range. + + +File: gsl-ref.info, Node: Trigonometric Functions With Error Estimates, Prev: Restriction Functions, Up: Trigonometric Functions + +7.32.6 Trigonometric Functions With Error Estimates +--------------------------------------------------- + + -- Function: int gsl_sf_sin_err_e (double x, double dx, gsl_sf_result + * result) + + This routine computes the sine of an angle ‘x’ with an associated + absolute error ‘dx’, \sin(x \pm dx). Note that this function is + provided in the error-handling form only since its purpose is to + compute the propagated error. + + -- Function: int gsl_sf_cos_err_e (double x, double dx, gsl_sf_result + * result) + + This routine computes the cosine of an angle ‘x’ with an associated + absolute error ‘dx’, \cos(x \pm dx). Note that this function is + provided in the error-handling form only since its purpose is to + compute the propagated error. + + +File: gsl-ref.info, Node: Zeta Functions, Next: Examples<3>, Prev: Trigonometric Functions, Up: Special Functions + +7.33 Zeta Functions +=================== + +The Riemann zeta function is defined in Abramowitz & Stegun, Section +23.2. The functions described in this section are declared in the +header file ‘gsl_sf_zeta.h’. + +* Menu: + +* Riemann Zeta Function:: +* Riemann Zeta Function Minus One:: +* Hurwitz Zeta Function:: +* Eta Function:: + + +File: gsl-ref.info, Node: Riemann Zeta Function, Next: Riemann Zeta Function Minus One, Up: Zeta Functions + +7.33.1 Riemann Zeta Function +---------------------------- + +The Riemann zeta function is defined by the infinite sum + + \zeta(s) = \sum_{k=1}^\infty k^{-s} + + -- Function: double gsl_sf_zeta_int (int n) + -- Function: int gsl_sf_zeta_int_e (int n, gsl_sf_result * result) + + These routines compute the Riemann zeta function \zeta(n) for + integer ‘n’, n \ne 1. + + -- Function: double gsl_sf_zeta (double s) + -- Function: int gsl_sf_zeta_e (double s, gsl_sf_result * result) + + These routines compute the Riemann zeta function \zeta(s) for + arbitrary ‘s’, s \ne 1. + + +File: gsl-ref.info, Node: Riemann Zeta Function Minus One, Next: Hurwitz Zeta Function, Prev: Riemann Zeta Function, Up: Zeta Functions + +7.33.2 Riemann Zeta Function Minus One +-------------------------------------- + +For large positive argument, the Riemann zeta function approaches one. +In this region the fractional part is interesting, and therefore we need +a function to evaluate it explicitly. + + -- Function: double gsl_sf_zetam1_int (int n) + -- Function: int gsl_sf_zetam1_int_e (int n, gsl_sf_result * result) + + These routines compute \zeta(n) - 1 for integer ‘n’, n \ne 1. + + -- Function: double gsl_sf_zetam1 (double s) + -- Function: int gsl_sf_zetam1_e (double s, gsl_sf_result * result) + + These routines compute \zeta(s) - 1 for arbitrary ‘s’, s \ne 1. + + +File: gsl-ref.info, Node: Hurwitz Zeta Function, Next: Eta Function, Prev: Riemann Zeta Function Minus One, Up: Zeta Functions + +7.33.3 Hurwitz Zeta Function +---------------------------- + +The Hurwitz zeta function is defined by + + \zeta(s,q) = \sum_0^\infty (k+q)^{-s} + + -- Function: double gsl_sf_hzeta (double s, double q) + -- Function: int gsl_sf_hzeta_e (double s, double q, gsl_sf_result + * result) + + These routines compute the Hurwitz zeta function \zeta(s,q) for s > + 1, q > 0. + + +File: gsl-ref.info, Node: Eta Function, Prev: Hurwitz Zeta Function, Up: Zeta Functions + +7.33.4 Eta Function +------------------- + +The eta function is defined by + + \eta(s) = (1-2^{1-s}) \zeta(s) + + -- Function: double gsl_sf_eta_int (int n) + -- Function: int gsl_sf_eta_int_e (int n, gsl_sf_result * result) + + These routines compute the eta function \eta(n) for integer ‘n’. + + -- Function: double gsl_sf_eta (double s) + -- Function: int gsl_sf_eta_e (double s, gsl_sf_result * result) + + These routines compute the eta function \eta(s) for arbitrary ‘s’. + + +File: gsl-ref.info, Node: Examples<3>, Next: References and Further Reading<3>, Prev: Zeta Functions, Up: Special Functions + +7.34 Examples +============= + +The following example demonstrates the use of the error handling form of +the special functions, in this case to compute the Bessel function +J_0(5.0), + + #include + #include + #include + + int + main (void) + { + double x = 5.0; + gsl_sf_result result; + + double expected = -0.17759677131433830434739701; + + int status = gsl_sf_bessel_J0_e (x, &result); + + printf ("status = %s\n", gsl_strerror(status)); + printf ("J0(5.0) = %.18f\n" + " +/- % .18f\n", + result.val, result.err); + printf ("exact = %.18f\n", expected); + return status; + } + +Here are the results of running the program, + + status = success + J0(5.0) = -0.177596771314338264 + +/- 0.000000000000000193 + exact = -0.177596771314338292 + +The next program computes the same quantity using the natural form of +the function. In this case the error term ‘result.err’ and return +status are not accessible. + + #include + #include + + int + main (void) + { + double x = 5.0; + double expected = -0.17759677131433830434739701; + + double y = gsl_sf_bessel_J0 (x); + + printf ("J0(5.0) = %.18f\n", y); + printf ("exact = %.18f\n", expected); + return 0; + } + +The results of the function are the same, + + J0(5.0) = -0.177596771314338264 + exact = -0.177596771314338292 + + +File: gsl-ref.info, Node: References and Further Reading<3>, Prev: Examples<3>, Up: Special Functions + +7.35 References and Further Reading +=================================== + +The library follows the conventions of the following book where +possible, + + * Handbook of Mathematical Functions, edited by Abramowitz & Stegun, + Dover, ISBN 0486612724. + +The following papers contain information on the algorithms used to +compute the special functions, + + * Allan J. MacLeod, MISCFUN: A software package to compute uncommon + special functions. ACM Trans. Math. Soft., vol.: 22, 1996, + 288–301 + + * G.N. Watson, A Treatise on the Theory of Bessel Functions, 2nd + Edition (Cambridge University Press, 1944). + + * G. Nemeth, Mathematical Approximations of Special Functions, Nova + Science Publishers, ISBN 1-56072-052-2 + + * B.C. Carlson, Special Functions of Applied Mathematics (1977) + + * N. M. Temme, Special Functions: An Introduction to the Classical + Functions of Mathematical Physics (1996), ISBN 978-0471113133. + + * W.J. Thompson, Atlas for Computing Mathematical Functions, John + Wiley & Sons, New York (1997). + + * Y.Y. Luke, Algorithms for the Computation of Mathematical + Functions, Academic Press, New York (1977). + + * S. A. Holmes and W. E. Featherstone, A unified approach to the + Clenshaw summation and the recursive computation of very high + degree and order normalised associated Legendre functions, Journal + of Geodesy, 76, pg. 279-299, 2002. + + +File: gsl-ref.info, Node: Vectors and Matrices, Next: Permutations, Prev: Special Functions, Up: Top + +8 Vectors and Matrices +********************** + +The functions described in this chapter provide a simple vector and +matrix interface to ordinary C arrays. The memory management of these +arrays is implemented using a single underlying type, known as a block. +By writing your functions in terms of vectors and matrices you can pass +a single structure containing both data and dimensions as an argument +without needing additional function parameters. The structures are +compatible with the vector and matrix formats used by BLAS routines. + +* Menu: + +* Data types:: +* Blocks:: +* Vectors:: +* Matrices:: + + +File: gsl-ref.info, Node: Data types, Next: Blocks, Up: Vectors and Matrices + +8.1 Data types +============== + +All the functions are available for each of the standard data-types. +The versions for ‘double’ have the prefix ‘gsl_block’, ‘gsl_vector’ and +‘gsl_matrix’. Similarly the versions for single-precision ‘float’ +arrays have the prefix ‘gsl_block_float’, ‘gsl_vector_float’ and +‘gsl_matrix_float’. The full list of available types is given below, + +Prefix Type + +------------------------------------------------------------- + +gsl_block double + + +gsl_block_float float + + +gsl_block_long_double long double + + +gsl_block_int int + + +gsl_block_uint unsigned int + + +gsl_block_long long + + +gsl_block_ulong unsigned long + + +gsl_block_short short + + +gsl_block_ushort unsigned short + + +gsl_block_char char + + +gsl_block_uchar unsigned char + + +gsl_block_complex complex double + + +gsl_block_complex_float complex float + + +gsl_block_complex_long_double complex long double + + +Corresponding types exist for the ‘gsl_vector’ and ‘gsl_matrix’ +functions. + + +File: gsl-ref.info, Node: Blocks, Next: Vectors, Prev: Data types, Up: Vectors and Matrices + +8.2 Blocks +========== + +For consistency all memory is allocated through a ‘gsl_block’ structure. +The structure contains two components, the size of an area of memory and +a pointer to the memory. The ‘gsl_block’ structure looks like this, + + -- Type: gsl_block + + typedef struct + { + size_t size; + double * data; + } gsl_block; + +Vectors and matrices are made by `slicing' an underlying block. A slice +is a set of elements formed from an initial offset and a combination of +indices and step-sizes. In the case of a matrix the step-size for the +column index represents the row-length. The step-size for a vector is +known as the `stride'. + +The functions for allocating and deallocating blocks are defined in +‘gsl_block.h’. + +* Menu: + +* Block allocation:: +* Reading and writing blocks:: +* Example programs for blocks:: + + +File: gsl-ref.info, Node: Block allocation, Next: Reading and writing blocks, Up: Blocks + +8.2.1 Block allocation +---------------------- + +The functions for allocating memory to a block follow the style of +‘malloc’ and ‘free’. In addition they also perform their own error +checking. If there is insufficient memory available to allocate a block +then the functions call the GSL error handler (with an error number of +*note GSL_ENOMEM: 2a.) in addition to returning a null pointer. Thus if +you use the library error handler to abort your program then it isn’t +necessary to check every ‘alloc’. + + -- Function: gsl_block * gsl_block_alloc (size_t n) + + This function allocates memory for a block of ‘n’ double-precision + elements, returning a pointer to the block struct. The block is + not initialized and so the values of its elements are undefined. + Use the function *note gsl_block_calloc(): 354. if you want to + ensure that all the elements are initialized to zero. + + Zero-sized requests are valid and return a non-null result. A null + pointer is returned if insufficient memory is available to create + the block. + + -- Function: gsl_block * gsl_block_calloc (size_t n) + + This function allocates memory for a block and initializes all the + elements of the block to zero. + + -- Function: void gsl_block_free (gsl_block * b) + + This function frees the memory used by a block ‘b’ previously + allocated with *note gsl_block_alloc(): 353. or *note + gsl_block_calloc(): 354. + + +File: gsl-ref.info, Node: Reading and writing blocks, Next: Example programs for blocks, Prev: Block allocation, Up: Blocks + +8.2.2 Reading and writing blocks +-------------------------------- + +The library provides functions for reading and writing blocks to a file +as binary data or formatted text. + + -- Function: int gsl_block_fwrite (FILE * stream, const gsl_block * b) + + This function writes the elements of the block ‘b’ to the stream + ‘stream’ in binary format. The return value is 0 for success and + ‘GSL_EFAILED’ if there was a problem writing to the file. Since + the data is written in the native binary format it may not be + portable between different architectures. + + -- Function: int gsl_block_fread (FILE * stream, gsl_block * b) + + This function reads into the block ‘b’ from the open stream + ‘stream’ in binary format. The block ‘b’ must be preallocated with + the correct length since the function uses the size of ‘b’ to + determine how many bytes to read. The return value is 0 for + success and ‘GSL_EFAILED’ if there was a problem reading from the + file. The data is assumed to have been written in the native + binary format on the same architecture. + + -- Function: int gsl_block_fprintf (FILE * stream, const gsl_block * b, + const char * format) + + This function writes the elements of the block ‘b’ line-by-line to + the stream ‘stream’ using the format specifier ‘format’, which + should be one of the ‘%g’, ‘%e’ or ‘%f’ formats for floating point + numbers and ‘%d’ for integers. The function returns 0 for success + and ‘GSL_EFAILED’ if there was a problem writing to the file. + + -- Function: int gsl_block_fscanf (FILE * stream, gsl_block * b) + + This function reads formatted data from the stream ‘stream’ into + the block ‘b’. The block ‘b’ must be preallocated with the correct + length since the function uses the size of ‘b’ to determine how + many numbers to read. The function returns 0 for success and + ‘GSL_EFAILED’ if there was a problem reading from the file. + + +File: gsl-ref.info, Node: Example programs for blocks, Prev: Reading and writing blocks, Up: Blocks + +8.2.3 Example programs for blocks +--------------------------------- + +The following program shows how to allocate a block, + + #include + #include + + int + main (void) + { + gsl_block * b = gsl_block_alloc (100); + + printf ("length of block = %zu\n", b->size); + printf ("block data address = %p\n", b->data); + + gsl_block_free (b); + return 0; + } + +Here is the output from the program, + + length of block = 100 + block data address = 0x804b0d8 + + +File: gsl-ref.info, Node: Vectors, Next: Matrices, Prev: Blocks, Up: Vectors and Matrices + +8.3 Vectors +=========== + +Vectors are defined by a *note gsl_vector: 35d. structure which +describes a slice of a block. Different vectors can be created which +point to the same block. A vector slice is a set of equally-spaced +elements of an area of memory. + +The *note gsl_vector: 35d. structure contains five components, the +`size', the `stride', a pointer to the memory where the elements are +stored, ‘data’, a pointer to the block owned by the vector, ‘block’, if +any, and an ownership flag, ‘owner’. The structure is very simple and +looks like this, + + -- Type: gsl_vector + + typedef struct + { + size_t size; + size_t stride; + double * data; + gsl_block * block; + int owner; + } gsl_vector; + +The ‘size’ is simply the number of vector elements. The range of valid +indices runs from 0 to ‘size-1’. The ‘stride’ is the step-size from one +element to the next in physical memory, measured in units of the +appropriate datatype. The pointer ‘data’ gives the location of the +first element of the vector in memory. The pointer ‘block’ stores the +location of the memory block in which the vector elements are located +(if any). If the vector owns this block then the ‘owner’ field is set +to one and the block will be deallocated when the vector is freed. If +the vector points to a block owned by another object then the ‘owner’ +field is zero and any underlying block will not be deallocated with the +vector. + +The functions for allocating and accessing vectors are defined in +‘gsl_vector.h’. + +* Menu: + +* Vector allocation:: +* Accessing vector elements:: +* Initializing vector elements:: +* Reading and writing vectors:: +* Vector views:: +* Copying vectors:: +* Exchanging elements:: +* Vector operations:: +* Finding maximum and minimum elements of vectors:: +* Vector properties:: +* Example programs for vectors:: + + +File: gsl-ref.info, Node: Vector allocation, Next: Accessing vector elements, Up: Vectors + +8.3.1 Vector allocation +----------------------- + +The functions for allocating memory to a vector follow the style of +‘malloc’ and ‘free’. In addition they also perform their own error +checking. If there is insufficient memory available to allocate a +vector then the functions call the GSL error handler (with an error +number of *note GSL_ENOMEM: 2a.) in addition to returning a null +pointer. Thus if you use the library error handler to abort your +program then it isn’t necessary to check every ‘alloc’. + + -- Function: gsl_vector * gsl_vector_alloc (size_t n) + + This function creates a vector of length n, returning a pointer to + a newly initialized vector struct. A new block is allocated for + the elements of the vector, and stored in the ‘block’ component of + the vector struct. The block is “owned” by the vector, and will be + deallocated when the vector is deallocated. Zero-sized requests + are valid and return a non-null result. + + -- Function: gsl_vector * gsl_vector_calloc (size_t n) + + This function allocates memory for a vector of length ‘n’ and + initializes all the elements of the vector to zero. + + -- Function: void gsl_vector_free (gsl_vector * v) + + This function frees a previously allocated vector ‘v’. If the + vector was created using *note gsl_vector_alloc(): 35f. then the + block underlying the vector will also be deallocated. If the + vector has been created from another object then the memory is + still owned by that object and will not be deallocated. + + +File: gsl-ref.info, Node: Accessing vector elements, Next: Initializing vector elements, Prev: Vector allocation, Up: Vectors + +8.3.2 Accessing vector elements +------------------------------- + +Unlike Fortran compilers, C compilers do not usually provide support for +range checking of vectors and matrices. (1) The functions *note +gsl_vector_get(): 363. and *note gsl_vector_set(): 364. can perform +portable range checking for you and report an error if you attempt to +access elements outside the allowed range. + +The functions for accessing the elements of a vector or matrix are +defined in ‘gsl_vector.h’ and declared ‘extern inline’ to eliminate +function-call overhead. You must compile your program with the +preprocessor macro ‘HAVE_INLINE’ defined to use these functions. + + -- Macro: GSL_RANGE_CHECK_OFF + + If necessary you can turn off range checking completely without + modifying any source files by recompiling your program with the + preprocessor definition *note GSL_RANGE_CHECK_OFF: 365. Provided + your compiler supports inline functions the effect of turning off + range checking is to replace calls to ‘gsl_vector_get(v,i)’ by + ‘v->data[i*v->stride]’ and calls to ‘gsl_vector_set(v,i,x)’ by + ‘v->data[i*v->stride]=x’. Thus there should be no performance + penalty for using the range checking functions when range checking + is turned off. + + -- Macro: GSL_C99_INLINE + + If you use a C99 compiler which requires inline functions in header + files to be declared ‘inline’ instead of ‘extern inline’, define + the macro *note GSL_C99_INLINE: 366. (see *note Inline functions: + 15.). With GCC this is selected automatically when compiling in + C99 mode (‘-std=c99’). + + -- Variable: gsl_check_range + + If inline functions are not used, calls to the functions *note + gsl_vector_get(): 363. and *note gsl_vector_set(): 364. will link + to the compiled versions of these functions in the library itself. + The range checking in these functions is controlled by the global + integer variable ‘gsl_check_range’. It is enabled by default—to + disable it, set ‘gsl_check_range’ to zero. Due to function-call + overhead, there is less benefit in disabling range checking here + than for inline functions. + + -- Function: double gsl_vector_get (const gsl_vector * v, const + size_t i) + + This function returns the ‘i’-th element of a vector ‘v’. If ‘i’ + lies outside the allowed range of 0 to ‘size - 1’ then the error + handler is invoked and 0 is returned. An inline version of this + function is used when ‘HAVE_INLINE’ is defined. + + -- Function: void gsl_vector_set (gsl_vector * v, const size_t i, + double x) + + This function sets the value of the ‘i’-th element of a vector ‘v’ + to ‘x’. If ‘i’ lies outside the allowed range of 0 to ‘size - 1’ + then the error handler is invoked. An inline version of this + function is used when ‘HAVE_INLINE’ is defined. + + -- Function: double * gsl_vector_ptr (gsl_vector * v, size_t i) + -- Function: const double * gsl_vector_const_ptr (const gsl_vector * v, + size_t i) + + These functions return a pointer to the ‘i’-th element of a vector + ‘v’. If ‘i’ lies outside the allowed range of 0 to ‘size - 1’ then + the error handler is invoked and a null pointer is returned. + Inline versions of these functions are used when ‘HAVE_INLINE’ is + defined. + + ---------- Footnotes ---------- + + (1) Range checking is available in the GNU C Compiler bounds-checking +extension, but it is not part of the default installation of GCC. Memory +accesses can also be checked with Valgrind or the ‘gcc -fmudflap’ memory +protection option. + + +File: gsl-ref.info, Node: Initializing vector elements, Next: Reading and writing vectors, Prev: Accessing vector elements, Up: Vectors + +8.3.3 Initializing vector elements +---------------------------------- + + -- Function: void gsl_vector_set_all (gsl_vector * v, double x) + + This function sets all the elements of the vector ‘v’ to the value + ‘x’. + + -- Function: void gsl_vector_set_zero (gsl_vector * v) + + This function sets all the elements of the vector ‘v’ to zero. + + -- Function: int gsl_vector_set_basis (gsl_vector * v, size_t i) + + This function makes a basis vector by setting all the elements of + the vector ‘v’ to zero except for the ‘i’-th element which is set + to one. + + +File: gsl-ref.info, Node: Reading and writing vectors, Next: Vector views, Prev: Initializing vector elements, Up: Vectors + +8.3.4 Reading and writing vectors +--------------------------------- + +The library provides functions for reading and writing vectors to a file +as binary data or formatted text. + + -- Function: int gsl_vector_fwrite (FILE * stream, const gsl_vector + * v) + + This function writes the elements of the vector ‘v’ to the stream + ‘stream’ in binary format. The return value is 0 for success and + ‘GSL_EFAILED’ if there was a problem writing to the file. Since + the data is written in the native binary format it may not be + portable between different architectures. + + -- Function: int gsl_vector_fread (FILE * stream, gsl_vector * v) + + This function reads into the vector ‘v’ from the open stream + ‘stream’ in binary format. The vector ‘v’ must be preallocated + with the correct length since the function uses the size of ‘v’ to + determine how many bytes to read. The return value is 0 for + success and ‘GSL_EFAILED’ if there was a problem reading from the + file. The data is assumed to have been written in the native + binary format on the same architecture. + + -- Function: int gsl_vector_fprintf (FILE * stream, const gsl_vector + * v, const char * format) + + This function writes the elements of the vector ‘v’ line-by-line to + the stream ‘stream’ using the format specifier ‘format’, which + should be one of the ‘%g’, ‘%e’ or ‘%f’ formats for floating point + numbers and ‘%d’ for integers. The function returns 0 for success + and ‘GSL_EFAILED’ if there was a problem writing to the file. + + -- Function: int gsl_vector_fscanf (FILE * stream, gsl_vector * v) + + This function reads formatted data from the stream ‘stream’ into + the vector ‘v’. The vector ‘v’ must be preallocated with the + correct length since the function uses the size of ‘v’ to determine + how many numbers to read. The function returns 0 for success and + ‘GSL_EFAILED’ if there was a problem reading from the file. + + +File: gsl-ref.info, Node: Vector views, Next: Copying vectors, Prev: Reading and writing vectors, Up: Vectors + +8.3.5 Vector views +------------------ + +In addition to creating vectors from slices of blocks it is also +possible to slice vectors and create vector views. For example, a +subvector of another vector can be described with a view, or two views +can be made which provide access to the even and odd elements of a +vector. + + -- Type: gsl_vector_view + -- Type: gsl_vector_const_view + + A vector view is a temporary object, stored on the stack, which can + be used to operate on a subset of vector elements. Vector views + can be defined for both constant and non-constant vectors, using + separate types that preserve constness. A vector view has the type + *note gsl_vector_view: 374. and a constant vector view has the type + *note gsl_vector_const_view: 375. In both cases the elements of + the view can be accessed as a *note gsl_vector: 35d. using the + ‘vector’ component of the view object. A pointer to a vector of + type ‘gsl_vector *’ or ‘const gsl_vector *’ can be obtained by + taking the address of this component with the ‘&’ operator. + + When using this pointer it is important to ensure that the view + itself remains in scope—the simplest way to do so is by always + writing the pointer as ‘&view.vector’, and never storing this value + in another variable. + + -- Function: gsl_vector_view gsl_vector_subvector (gsl_vector * v, + size_t offset, size_t n) + -- Function: gsl_vector_const_view gsl_vector_const_subvector (const + gsl_vector * v, size_t offset, size_t n) + + These functions return a vector view of a subvector of another + vector ‘v’. The start of the new vector is offset by ‘offset’ + elements from the start of the original vector. The new vector has + ‘n’ elements. Mathematically, the ‘i’-th element of the new vector + ‘v'’ is given by: + + v'(i) = v->data[(offset + i)*v->stride] + + where the index ‘i’ runs from 0 to ‘n - 1’. + + The ‘data’ pointer of the returned vector struct is set to null if + the combined parameters (‘offset’, ‘n’) overrun the end of the + original vector. + + The new vector is only a view of the block underlying the original + vector, ‘v’. The block containing the elements of ‘v’ is not owned + by the new vector. When the view goes out of scope the original + vector ‘v’ and its block will continue to exist. The original + memory can only be deallocated by freeing the original vector. Of + course, the original vector should not be deallocated while the + view is still in use. + + The function *note gsl_vector_const_subvector(): 377. is equivalent + to *note gsl_vector_subvector(): 376. but can be used for vectors + which are declared ‘const’. + + -- Function: gsl_vector_view gsl_vector_subvector_with_stride + (gsl_vector * v, size_t offset, size_t stride, size_t n) + -- Function: gsl_vector_const_view + gsl_vector_const_subvector_with_stride (const gsl_vector * v, + size_t offset, size_t stride, size_t n) + + These functions return a vector view of a subvector of another + vector ‘v’ with an additional stride argument. The subvector is + formed in the same way as for *note gsl_vector_subvector(): 376. + but the new vector has ‘n’ elements with a step-size of ‘stride’ + from one element to the next in the original vector. + Mathematically, the ‘i’-th element of the new vector ‘v'’ is given + by: + + v'(i) = v->data[(offset + i*stride)*v->stride] + + where the index ‘i’ runs from 0 to ‘n - 1’. + + Note that subvector views give direct access to the underlying + elements of the original vector. For example, the following code + will zero the even elements of the vector ‘v’ of length ‘n’, while + leaving the odd elements untouched: + + gsl_vector_view v_even = gsl_vector_subvector_with_stride (v, 0, 2, n/2); + gsl_vector_set_zero (&v_even.vector); + + A vector view can be passed to any subroutine which takes a vector + argument just as a directly allocated vector would be, using + ‘&view.vector’. For example, the following code computes the norm + of the odd elements of ‘v’ using the BLAS routine ‘dnrm2’: + + gsl_vector_view v_odd = gsl_vector_subvector_with_stride (v, 1, 2, n/2); + double r = gsl_blas_dnrm2 (&v_odd.vector); + + The function *note gsl_vector_const_subvector_with_stride(): 379. + is equivalent to *note gsl_vector_subvector_with_stride(): 378. but + can be used for vectors which are declared ‘const’. + + -- Function: gsl_vector_view gsl_vector_complex_real + (gsl_vector_complex * v) + -- Function: gsl_vector_const_view gsl_vector_complex_const_real (const + gsl_vector_complex * v) + + These functions return a vector view of the real parts of the + complex vector ‘v’. + + The function *note gsl_vector_complex_const_real(): 37b. is + equivalent to *note gsl_vector_complex_real(): 37a. but can be used + for vectors which are declared ‘const’. + + -- Function: gsl_vector_view gsl_vector_complex_imag + (gsl_vector_complex * v) + -- Function: gsl_vector_const_view gsl_vector_complex_const_imag (const + gsl_vector_complex * v) + + These functions return a vector view of the imaginary parts of the + complex vector ‘v’. + + The function *note gsl_vector_complex_const_imag(): 37d. is + equivalent to *note gsl_vector_complex_imag(): 37c. but can be used + for vectors which are declared ‘const’. + + -- Function: gsl_vector_view gsl_vector_view_array (double * base, + size_t n) + -- Function: gsl_vector_const_view gsl_vector_const_view_array (const + double * base, size_t n) + + These functions return a vector view of an array. The start of the + new vector is given by ‘base’ and has ‘n’ elements. + Mathematically, the ‘i’-th element of the new vector ‘v'’ is given + by: + + v'(i) = base[i] + + where the index ‘i’ runs from 0 to ‘n - 1’. + + The array containing the elements of ‘v’ is not owned by the new + vector view. When the view goes out of scope the original array + will continue to exist. The original memory can only be + deallocated by freeing the original pointer ‘base’. Of course, the + original array should not be deallocated while the view is still in + use. + + The function *note gsl_vector_const_view_array(): 37f. is + equivalent to *note gsl_vector_view_array(): 37e. but can be used + for arrays which are declared ‘const’. + + -- Function: gsl_vector_view gsl_vector_view_array_with_stride (double + * base, size_t stride, size_t n) + -- Function: gsl_vector_const_view + gsl_vector_const_view_array_with_stride (const double * base, + size_t stride, size_t n) + + These functions return a vector view of an array ‘base’ with an + additional stride argument. The subvector is formed in the same + way as for *note gsl_vector_view_array(): 37e. but the new vector + has ‘n’ elements with a step-size of ‘stride’ from one element to + the next in the original array. Mathematically, the ‘i’-th element + of the new vector ‘v'’ is given by: + + v'(i) = base[i*stride] + + where the index ‘i’ runs from 0 to ‘n - 1’. + + Note that the view gives direct access to the underlying elements + of the original array. A vector view can be passed to any + subroutine which takes a vector argument just as a directly + allocated vector would be, using ‘&view.vector’. + + The function *note gsl_vector_const_view_array_with_stride(): 381. + is equivalent to *note gsl_vector_view_array_with_stride(): 380. + but can be used for arrays which are declared ‘const’. + + +File: gsl-ref.info, Node: Copying vectors, Next: Exchanging elements, Prev: Vector views, Up: Vectors + +8.3.6 Copying vectors +--------------------- + +Common operations on vectors such as addition and multiplication are +available in the BLAS part of the library (see *note BLAS Support: 11.). +However, it is useful to have a small number of utility functions which +do not require the full BLAS code. The following functions fall into +this category. + + -- Function: int gsl_vector_memcpy (gsl_vector * dest, const gsl_vector + * src) + + This function copies the elements of the vector ‘src’ into the + vector ‘dest’. The two vectors must have the same length. + + -- Function: int gsl_vector_swap (gsl_vector * v, gsl_vector * w) + + This function exchanges the elements of the vectors ‘v’ and ‘w’ by + copying. The two vectors must have the same length. + + +File: gsl-ref.info, Node: Exchanging elements, Next: Vector operations, Prev: Copying vectors, Up: Vectors + +8.3.7 Exchanging elements +------------------------- + +The following functions can be used to exchange, or permute, the +elements of a vector. + + -- Function: int gsl_vector_swap_elements (gsl_vector * v, size_t i, + size_t j) + + This function exchanges the ‘i’-th and ‘j’-th elements of the + vector ‘v’ in-place. + + -- Function: int gsl_vector_reverse (gsl_vector * v) + + This function reverses the order of the elements of the vector ‘v’. + + +File: gsl-ref.info, Node: Vector operations, Next: Finding maximum and minimum elements of vectors, Prev: Exchanging elements, Up: Vectors + +8.3.8 Vector operations +----------------------- + + -- Function: int gsl_vector_add (gsl_vector * a, const gsl_vector * b) + + This function adds the elements of vector ‘b’ to the elements of + vector ‘a’. The result a_i \leftarrow a_i + b_i is stored in ‘a’ + and ‘b’ remains unchanged. The two vectors must have the same + length. + + -- Function: int gsl_vector_sub (gsl_vector * a, const gsl_vector * b) + + This function subtracts the elements of vector ‘b’ from the + elements of vector ‘a’. The result a_i \leftarrow a_i - b_i is + stored in ‘a’ and ‘b’ remains unchanged. The two vectors must have + the same length. + + -- Function: int gsl_vector_mul (gsl_vector * a, const gsl_vector * b) + + This function multiplies the elements of vector ‘a’ by the elements + of vector ‘b’. The result a_i \leftarrow a_i * b_i is stored in + ‘a’ and ‘b’ remains unchanged. The two vectors must have the same + length. + + -- Function: int gsl_vector_div (gsl_vector * a, const gsl_vector * b) + + This function divides the elements of vector ‘a’ by the elements of + vector ‘b’. The result a_i \leftarrow a_i / b_i is stored in ‘a’ + and ‘b’ remains unchanged. The two vectors must have the same + length. + + -- Function: int gsl_vector_scale (gsl_vector * a, const double x) + + This function multiplies the elements of vector ‘a’ by the constant + factor ‘x’. The result a_i \leftarrow x a_i is stored in ‘a’. + + -- Function: int gsl_vector_add_constant (gsl_vector * a, const + double x) + + This function adds the constant value ‘x’ to the elements of the + vector ‘a’. The result a_i \leftarrow a_i + x is stored in ‘a’. + + +File: gsl-ref.info, Node: Finding maximum and minimum elements of vectors, Next: Vector properties, Prev: Vector operations, Up: Vectors + +8.3.9 Finding maximum and minimum elements of vectors +----------------------------------------------------- + +The following operations are only defined for real vectors. + + -- Function: double gsl_vector_max (const gsl_vector * v) + + This function returns the maximum value in the vector ‘v’. + + -- Function: double gsl_vector_min (const gsl_vector * v) + + This function returns the minimum value in the vector ‘v’. + + -- Function: void gsl_vector_minmax (const gsl_vector * v, double + * min_out, double * max_out) + + This function returns the minimum and maximum values in the vector + ‘v’, storing them in ‘min_out’ and ‘max_out’. + + -- Function: size_t gsl_vector_max_index (const gsl_vector * v) + + This function returns the index of the maximum value in the vector + ‘v’. When there are several equal maximum elements then the lowest + index is returned. + + -- Function: size_t gsl_vector_min_index (const gsl_vector * v) + + This function returns the index of the minimum value in the vector + ‘v’. When there are several equal minimum elements then the lowest + index is returned. + + -- Function: void gsl_vector_minmax_index (const gsl_vector * v, size_t + * imin, size_t * imax) + + This function returns the indices of the minimum and maximum values + in the vector ‘v’, storing them in ‘imin’ and ‘imax’. When there + are several equal minimum or maximum elements then the lowest + indices are returned. + + +File: gsl-ref.info, Node: Vector properties, Next: Example programs for vectors, Prev: Finding maximum and minimum elements of vectors, Up: Vectors + +8.3.10 Vector properties +------------------------ + +The following functions are defined for real and complex vectors. For +complex vectors both the real and imaginary parts must satisfy the +conditions. + + -- Function: int gsl_vector_isnull (const gsl_vector * v) + -- Function: int gsl_vector_ispos (const gsl_vector * v) + -- Function: int gsl_vector_isneg (const gsl_vector * v) + -- Function: int gsl_vector_isnonneg (const gsl_vector * v) + + These functions return 1 if all the elements of the vector ‘v’ are + zero, strictly positive, strictly negative, or non-negative + respectively, and 0 otherwise. + + -- Function: int gsl_vector_equal (const gsl_vector * u, const + gsl_vector * v) + + This function returns 1 if the vectors ‘u’ and ‘v’ are equal (by + comparison of element values) and 0 otherwise. + + +File: gsl-ref.info, Node: Example programs for vectors, Prev: Vector properties, Up: Vectors + +8.3.11 Example programs for vectors +----------------------------------- + +This program shows how to allocate, initialize and read from a vector +using the functions *note gsl_vector_alloc(): 35f, *note +gsl_vector_set(): 364. and *note gsl_vector_get(): 363. + + #include + #include + + int + main (void) + { + int i; + gsl_vector * v = gsl_vector_alloc (3); + + for (i = 0; i < 3; i++) + { + gsl_vector_set (v, i, 1.23 + i); + } + + for (i = 0; i < 100; i++) /* OUT OF RANGE ERROR */ + { + printf ("v_%d = %g\n", i, gsl_vector_get (v, i)); + } + + gsl_vector_free (v); + return 0; + } + +Here is the output from the program. The final loop attempts to read +outside the range of the vector ‘v’, and the error is trapped by the +range-checking code in *note gsl_vector_get(): 363. + + $ ./a.out + v_0 = 1.23 + v_1 = 2.23 + v_2 = 3.23 + gsl: vector_source.c:12: ERROR: index out of range + Default GSL error handler invoked. + Aborted (core dumped) + +The next program shows how to write a vector to a file. + + #include + #include + + int + main (void) + { + int i; + gsl_vector * v = gsl_vector_alloc (100); + + for (i = 0; i < 100; i++) + { + gsl_vector_set (v, i, 1.23 + i); + } + + { + FILE * f = fopen ("test.dat", "w"); + gsl_vector_fprintf (f, v, "%.5g"); + fclose (f); + } + + gsl_vector_free (v); + return 0; + } + +After running this program the file ‘test.dat’ should contain the +elements of ‘v’, written using the format specifier ‘%.5g’. The vector +could then be read back in using the function ‘gsl_vector_fscanf (f, v)’ +as follows: + + #include + #include + + int + main (void) + { + int i; + gsl_vector * v = gsl_vector_alloc (10); + + { + FILE * f = fopen ("test.dat", "r"); + gsl_vector_fscanf (f, v); + fclose (f); + } + + for (i = 0; i < 10; i++) + { + printf ("%g\n", gsl_vector_get(v, i)); + } + + gsl_vector_free (v); + return 0; + } + + +File: gsl-ref.info, Node: Matrices, Prev: Vectors, Up: Vectors and Matrices + +8.4 Matrices +============ + +Matrices are defined by a *note gsl_matrix: 39e. structure which +describes a generalized slice of a block. Like a vector it represents a +set of elements in an area of memory, but uses two indices instead of +one. + + -- Type: gsl_matrix + + The *note gsl_matrix: 39e. structure contains six components, the + two dimensions of the matrix, a physical dimension, a pointer to + the memory where the elements of the matrix are stored, ‘data’, a + pointer to the block owned by the matrix ‘block’, if any, and an + ownership flag, ‘owner’. The physical dimension determines the + memory layout and can differ from the matrix dimension to allow the + use of submatrices. The *note gsl_matrix: 39e. structure is very + simple and looks like this: + + typedef struct + { + size_t size1; + size_t size2; + size_t tda; + double * data; + gsl_block * block; + int owner; + } gsl_matrix; + +Matrices are stored in row-major order, meaning that each row of +elements forms a contiguous block in memory. This is the standard +“C-language ordering” of two-dimensional arrays. Note that Fortran +stores arrays in column-major order. The number of rows is ‘size1’. +The range of valid row indices runs from 0 to ‘size1 - 1’. Similarly +‘size2’ is the number of columns. The range of valid column indices +runs from 0 to ‘size2 - 1’. The physical row dimension ‘tda’, or +`trailing dimension', specifies the size of a row of the matrix as laid +out in memory. + +For example, in the following matrix ‘size1’ is 3, ‘size2’ is 4, and +‘tda’ is 8. The physical memory layout of the matrix begins in the top +left hand-corner and proceeds from left to right along each row in turn. + + 00 01 02 03 XX XX XX XX + 10 11 12 13 XX XX XX XX + 20 21 22 23 XX XX XX XX + +Each unused memory location is represented by “‘XX’”. The pointer +‘data’ gives the location of the first element of the matrix in memory. +The pointer ‘block’ stores the location of the memory block in which the +elements of the matrix are located (if any). If the matrix owns this +block then the ‘owner’ field is set to one and the block will be +deallocated when the matrix is freed. If the matrix is only a slice of +a block owned by another object then the ‘owner’ field is zero and any +underlying block will not be freed. + +The functions for allocating and accessing matrices are defined in +‘gsl_matrix.h’. + +* Menu: + +* Matrix allocation:: +* Accessing matrix elements:: +* Initializing matrix elements:: +* Reading and writing matrices:: +* Matrix views:: +* Creating row and column views:: +* Copying matrices:: +* Copying rows and columns:: +* Exchanging rows and columns:: +* Matrix operations:: +* Finding maximum and minimum elements of matrices:: +* Matrix properties:: +* Example programs for matrices:: +* References and Further Reading: References and Further Reading<4>. + + +File: gsl-ref.info, Node: Matrix allocation, Next: Accessing matrix elements, Up: Matrices + +8.4.1 Matrix allocation +----------------------- + +The functions for allocating memory to a matrix follow the style of +‘malloc’ and ‘free’. They also perform their own error checking. If +there is insufficient memory available to allocate a matrix then the +functions call the GSL error handler (with an error number of *note +GSL_ENOMEM: 2a.) in addition to returning a null pointer. Thus if you +use the library error handler to abort your program then it isn’t +necessary to check every ‘alloc’. + + -- Function: gsl_matrix * gsl_matrix_alloc (size_t n1, size_t n2) + + This function creates a matrix of size ‘n1’ rows by ‘n2’ columns, + returning a pointer to a newly initialized matrix struct. A new + block is allocated for the elements of the matrix, and stored in + the ‘block’ component of the matrix struct. The block is “owned” + by the matrix, and will be deallocated when the matrix is + deallocated. Requesting zero for ‘n1’ or ‘n2’ is valid and returns + a non-null result. + + -- Function: gsl_matrix * gsl_matrix_calloc (size_t n1, size_t n2) + + This function allocates memory for a matrix of size ‘n1’ rows by + ‘n2’ columns and initializes all the elements of the matrix to + zero. + + -- Function: void gsl_matrix_free (gsl_matrix * m) + + This function frees a previously allocated matrix ‘m’. If the + matrix was created using *note gsl_matrix_alloc(): 3a0. then the + block underlying the matrix will also be deallocated. If the + matrix has been created from another object then the memory is + still owned by that object and will not be deallocated. + + +File: gsl-ref.info, Node: Accessing matrix elements, Next: Initializing matrix elements, Prev: Matrix allocation, Up: Matrices + +8.4.2 Accessing matrix elements +------------------------------- + +The functions for accessing the elements of a matrix use the same range +checking system as vectors. You can turn off range checking by +recompiling your program with the preprocessor definition *note +GSL_RANGE_CHECK_OFF: 365. + +The elements of the matrix are stored in “C-order”, where the second +index moves continuously through memory. More precisely, the element +accessed by the function ‘gsl_matrix_get(m,i,j)’ and +‘gsl_matrix_set(m,i,j,x)’ is: + + m->data[i * m->tda + j] + +where ‘tda’ is the physical row-length of the matrix. + + -- Function: double gsl_matrix_get (const gsl_matrix * m, const + size_t i, const size_t j) + + This function returns the (i,j)-th element of a matrix ‘m’. If ‘i’ + or ‘j’ lie outside the allowed range of 0 to ‘n1 - 1’ and 0 to ‘n2 + - 1’ then the error handler is invoked and 0 is returned. An + inline version of this function is used when ‘HAVE_INLINE’ is + defined. + + -- Function: void gsl_matrix_set (gsl_matrix * m, const size_t i, const + size_t j, double x) + + This function sets the value of the (i,j)-th element of a matrix + ‘m’ to ‘x’. If ‘i’ or ‘j’ lies outside the allowed range of 0 to + ‘n1 - 1’ and 0 to ‘n2 - 1’ then the error handler is invoked. An + inline version of this function is used when ‘HAVE_INLINE’ is + defined. + + -- Function: double * gsl_matrix_ptr (gsl_matrix * m, size_t i, + size_t j) + -- Function: const double * gsl_matrix_const_ptr (const gsl_matrix * m, + size_t i, size_t j) + + These functions return a pointer to the (i,j)-th element of a + matrix ‘m’. If ‘i’ or ‘j’ lie outside the allowed range of 0 to + ‘n1 - 1’ and 0 to ‘n2 - 1’ then the error handler is invoked and a + null pointer is returned. Inline versions of these functions are + used when ‘HAVE_INLINE’ is defined. + + +File: gsl-ref.info, Node: Initializing matrix elements, Next: Reading and writing matrices, Prev: Accessing matrix elements, Up: Matrices + +8.4.3 Initializing matrix elements +---------------------------------- + + -- Function: void gsl_matrix_set_all (gsl_matrix * m, double x) + + This function sets all the elements of the matrix ‘m’ to the value + ‘x’. + + -- Function: void gsl_matrix_set_zero (gsl_matrix * m) + + This function sets all the elements of the matrix ‘m’ to zero. + + -- Function: void gsl_matrix_set_identity (gsl_matrix * m) + + This function sets the elements of the matrix ‘m’ to the + corresponding elements of the identity matrix, m(i,j) = + \delta(i,j), i.e. a unit diagonal with all off-diagonal elements + zero. This applies to both square and rectangular matrices. + + +File: gsl-ref.info, Node: Reading and writing matrices, Next: Matrix views, Prev: Initializing matrix elements, Up: Matrices + +8.4.4 Reading and writing matrices +---------------------------------- + +The library provides functions for reading and writing matrices to a +file as binary data or formatted text. + + -- Function: int gsl_matrix_fwrite (FILE * stream, const gsl_matrix + * m) + + This function writes the elements of the matrix ‘m’ to the stream + ‘stream’ in binary format. The return value is 0 for success and + ‘GSL_EFAILED’ if there was a problem writing to the file. Since + the data is written in the native binary format it may not be + portable between different architectures. + + -- Function: int gsl_matrix_fread (FILE * stream, gsl_matrix * m) + + This function reads into the matrix ‘m’ from the open stream + ‘stream’ in binary format. The matrix ‘m’ must be preallocated + with the correct dimensions since the function uses the size of ‘m’ + to determine how many bytes to read. The return value is 0 for + success and ‘GSL_EFAILED’ if there was a problem reading from the + file. The data is assumed to have been written in the native + binary format on the same architecture. + + -- Function: int gsl_matrix_fprintf (FILE * stream, const gsl_matrix + * m, const char * format) + + This function writes the elements of the matrix ‘m’ line-by-line to + the stream ‘stream’ using the format specifier ‘format’, which + should be one of the ‘%g’, ‘%e’ or ‘%f’ formats for floating point + numbers and ‘%d’ for integers. The function returns 0 for success + and ‘GSL_EFAILED’ if there was a problem writing to the file. + + -- Function: int gsl_matrix_fscanf (FILE * stream, gsl_matrix * m) + + This function reads formatted data from the stream ‘stream’ into + the matrix ‘m’. The matrix ‘m’ must be preallocated with the + correct dimensions since the function uses the size of ‘m’ to + determine how many numbers to read. The function returns 0 for + success and ‘GSL_EFAILED’ if there was a problem reading from the + file. + + +File: gsl-ref.info, Node: Matrix views, Next: Creating row and column views, Prev: Reading and writing matrices, Up: Matrices + +8.4.5 Matrix views +------------------ + + -- Type: gsl_matrix_view + -- Type: gsl_matrix_const_view + + A matrix view is a temporary object, stored on the stack, which can + be used to operate on a subset of matrix elements. Matrix views + can be defined for both constant and non-constant matrices using + separate types that preserve constness. A matrix view has the type + *note gsl_matrix_view: 3b2. and a constant matrix view has the type + *note gsl_matrix_const_view: 3b3. In both cases the elements of + the view can by accessed using the ‘matrix’ component of the view + object. A pointer ‘gsl_matrix *’ or ‘const gsl_matrix *’ can be + obtained by taking the address of the ‘matrix’ component with the + ‘&’ operator. In addition to matrix views it is also possible to + create vector views of a matrix, such as row or column views. + + -- Function: gsl_matrix_view gsl_matrix_submatrix (gsl_matrix * m, + size_t k1, size_t k2, size_t n1, size_t n2) + -- Function: gsl_matrix_const_view gsl_matrix_const_submatrix (const + gsl_matrix * m, size_t k1, size_t k2, size_t n1, size_t n2) + + These functions return a matrix view of a submatrix of the matrix + ‘m’. The upper-left element of the submatrix is the element (‘k1’, + ‘k2’) of the original matrix. The submatrix has ‘n1’ rows and ‘n2’ + columns. The physical number of columns in memory given by ‘tda’ + is unchanged. Mathematically, the (i,j)-th element of the new + matrix is given by: + + m'(i,j) = m->data[(k1*m->tda + k2) + i*m->tda + j] + + where the index ‘i’ runs from 0 to ‘n1 - 1’ and the index ‘j’ runs + from 0 to ‘n2 - 1’. + + The ‘data’ pointer of the returned matrix struct is set to null if + the combined parameters (‘i’, ‘j’, ‘n1’, ‘n2’, ‘tda’) overrun the + ends of the original matrix. + + The new matrix view is only a view of the block underlying the + existing matrix, ‘m’. The block containing the elements of ‘m’ is + not owned by the new matrix view. When the view goes out of scope + the original matrix ‘m’ and its block will continue to exist. The + original memory can only be deallocated by freeing the original + matrix. Of course, the original matrix should not be deallocated + while the view is still in use. + + The function *note gsl_matrix_const_submatrix(): 3b5. is equivalent + to *note gsl_matrix_submatrix(): 3b4. but can be used for matrices + which are declared ‘const’. + + -- Function: gsl_matrix_view gsl_matrix_view_array (double * base, + size_t n1, size_t n2) + -- Function: gsl_matrix_const_view gsl_matrix_const_view_array (const + double * base, size_t n1, size_t n2) + + These functions return a matrix view of the array ‘base’. The + matrix has ‘n1’ rows and ‘n2’ columns. The physical number of + columns in memory is also given by ‘n2’. Mathematically, the + (i,j)-th element of the new matrix is given by: + + m'(i,j) = base[i*n2 + j] + + where the index ‘i’ runs from 0 to ‘n1 - 1’ and the index ‘j’ runs + from 0 to ‘n2 - 1’. + + The new matrix is only a view of the array ‘base’. When the view + goes out of scope the original array ‘base’ will continue to exist. + The original memory can only be deallocated by freeing the original + array. Of course, the original array should not be deallocated + while the view is still in use. + + The function *note gsl_matrix_const_view_array(): 3b7. is + equivalent to *note gsl_matrix_view_array(): 3b6. but can be used + for matrices which are declared ‘const’. + + -- Function: gsl_matrix_view gsl_matrix_view_array_with_tda (double + * base, size_t n1, size_t n2, size_t tda) + -- Function: gsl_matrix_const_view gsl_matrix_const_view_array_with_tda + (const double * base, size_t n1, size_t n2, size_t tda) + + These functions return a matrix view of the array ‘base’ with a + physical number of columns ‘tda’ which may differ from the + corresponding dimension of the matrix. The matrix has ‘n1’ rows + and ‘n2’ columns, and the physical number of columns in memory is + given by ‘tda’. Mathematically, the (i,j)-th element of the new + matrix is given by: + + m'(i,j) = base[i*tda + j] + + where the index ‘i’ runs from 0 to ‘n1 - 1’ and the index ‘j’ runs + from 0 to ‘n2 - 1’. + + The new matrix is only a view of the array ‘base’. When the view + goes out of scope the original array ‘base’ will continue to exist. + The original memory can only be deallocated by freeing the original + array. Of course, the original array should not be deallocated + while the view is still in use. + + The function *note gsl_matrix_const_view_array_with_tda(): 3b9. is + equivalent to *note gsl_matrix_view_array_with_tda(): 3b8. but can + be used for matrices which are declared ‘const’. + + -- Function: gsl_matrix_view gsl_matrix_view_vector (gsl_vector * v, + size_t n1, size_t n2) + -- Function: gsl_matrix_const_view gsl_matrix_const_view_vector (const + gsl_vector * v, size_t n1, size_t n2) + + These functions return a matrix view of the vector ‘v’. The matrix + has ‘n1’ rows and ‘n2’ columns. The vector must have unit stride. + The physical number of columns in memory is also given by ‘n2’. + Mathematically, the (i,j)-th element of the new matrix is given by: + + m'(i,j) = v->data[i*n2 + j] + + where the index ‘i’ runs from 0 to ‘n1 - 1’ and the index ‘j’ runs + from 0 to ‘n2 - 1’. + + The new matrix is only a view of the vector ‘v’. When the view + goes out of scope the original vector ‘v’ will continue to exist. + The original memory can only be deallocated by freeing the original + vector. Of course, the original vector should not be deallocated + while the view is still in use. + + The function *note gsl_matrix_const_view_vector(): 3bb. is + equivalent to *note gsl_matrix_view_vector(): 3ba. but can be used + for matrices which are declared ‘const’. + + -- Function: gsl_matrix_view gsl_matrix_view_vector_with_tda + (gsl_vector * v, size_t n1, size_t n2, size_t tda) + -- Function: gsl_matrix_const_view + gsl_matrix_const_view_vector_with_tda (const gsl_vector * v, + size_t n1, size_t n2, size_t tda) + + These functions return a matrix view of the vector ‘v’ with a + physical number of columns ‘tda’ which may differ from the + corresponding matrix dimension. The vector must have unit stride. + The matrix has ‘n1’ rows and ‘n2’ columns, and the physical number + of columns in memory is given by ‘tda’. Mathematically, the + (i,j)-th element of the new matrix is given by: + + m'(i,j) = v->data[i*tda + j] + + where the index ‘i’ runs from 0 to ‘n1 - 1’ and the index ‘j’ runs + from 0 to ‘n2 - 1’. + + The new matrix is only a view of the vector ‘v’. When the view + goes out of scope the original vector ‘v’ will continue to exist. + The original memory can only be deallocated by freeing the original + vector. Of course, the original vector should not be deallocated + while the view is still in use. + + The function *note gsl_matrix_const_view_vector_with_tda(): 3bd. is + equivalent to *note gsl_matrix_view_vector_with_tda(): 3bc. but can + be used for matrices which are declared ‘const’. + + +File: gsl-ref.info, Node: Creating row and column views, Next: Copying matrices, Prev: Matrix views, Up: Matrices + +8.4.6 Creating row and column views +----------------------------------- + +In general there are two ways to access an object, by reference or by +copying. The functions described in this section create vector views +which allow access to a row or column of a matrix by reference. +Modifying elements of the view is equivalent to modifying the matrix, +since both the vector view and the matrix point to the same memory +block. + + -- Function: gsl_vector_view gsl_matrix_row (gsl_matrix * m, size_t i) + -- Function: gsl_vector_const_view gsl_matrix_const_row (const + gsl_matrix * m, size_t i) + + These functions return a vector view of the ‘i’-th row of the + matrix ‘m’. The ‘data’ pointer of the new vector is set to null if + ‘i’ is out of range. + + The function *note gsl_matrix_const_row(): 3c0. is equivalent to + *note gsl_matrix_row(): 3bf. but can be used for matrices which are + declared ‘const’. + + -- Function: gsl_vector_view gsl_matrix_column (gsl_matrix * m, + size_t j) + -- Function: gsl_vector_const_view gsl_matrix_const_column (const + gsl_matrix * m, size_t j) + + These functions return a vector view of the ‘j’-th column of the + matrix ‘m’. The ‘data’ pointer of the new vector is set to null if + ‘j’ is out of range. + + The function *note gsl_matrix_const_column(): 3c2. is equivalent to + *note gsl_matrix_column(): 3c1. but can be used for matrices which + are declared ‘const’. + + -- Function: gsl_vector_view gsl_matrix_subrow (gsl_matrix * m, + size_t i, size_t offset, size_t n) + -- Function: gsl_vector_const_view gsl_matrix_const_subrow (const + gsl_matrix * m, size_t i, size_t offset, size_t n) + + These functions return a vector view of the ‘i’-th row of the + matrix ‘m’ beginning at ‘offset’ elements past the first column and + containing ‘n’ elements. The ‘data’ pointer of the new vector is + set to null if ‘i’, ‘offset’, or ‘n’ are out of range. + + The function *note gsl_matrix_const_subrow(): 3c4. is equivalent to + *note gsl_matrix_subrow(): 3c3. but can be used for matrices which + are declared ‘const’. + + -- Function: gsl_vector_view gsl_matrix_subcolumn (gsl_matrix * m, + size_t j, size_t offset, size_t n) + -- Function: gsl_vector_const_view gsl_matrix_const_subcolumn (const + gsl_matrix * m, size_t j, size_t offset, size_t n) + + These functions return a vector view of the ‘j’-th column of the + matrix ‘m’ beginning at ‘offset’ elements past the first row and + containing ‘n’ elements. The ‘data’ pointer of the new vector is + set to null if ‘j’, ‘offset’, or ‘n’ are out of range. + + The function *note gsl_matrix_const_subcolumn(): 3c6. is equivalent + to *note gsl_matrix_subcolumn(): 3c5. but can be used for matrices + which are declared ‘const’. + + -- Function: gsl_vector_view gsl_matrix_diagonal (gsl_matrix * m) + -- Function: gsl_vector_const_view gsl_matrix_const_diagonal (const + gsl_matrix * m) + + These functions return a vector view of the diagonal of the matrix + ‘m’. The matrix ‘m’ is not required to be square. For a + rectangular matrix the length of the diagonal is the same as the + smaller dimension of the matrix. + + The function *note gsl_matrix_const_diagonal(): 3c8. is equivalent + to *note gsl_matrix_diagonal(): 3c7. but can be used for matrices + which are declared ‘const’. + + -- Function: gsl_vector_view gsl_matrix_subdiagonal (gsl_matrix * m, + size_t k) + -- Function: gsl_vector_const_view gsl_matrix_const_subdiagonal (const + gsl_matrix * m, size_t k) + + These functions return a vector view of the ‘k’-th subdiagonal of + the matrix ‘m’. The matrix ‘m’ is not required to be square. The + diagonal of the matrix corresponds to k = 0. + + The function *note gsl_matrix_const_subdiagonal(): 3ca. is + equivalent to *note gsl_matrix_subdiagonal(): 3c9. but can be used + for matrices which are declared ‘const’. + + -- Function: gsl_vector_view gsl_matrix_superdiagonal (gsl_matrix * m, + size_t k) + -- Function: gsl_vector_const_view gsl_matrix_const_superdiagonal + (const gsl_matrix * m, size_t k) + + These functions return a vector view of the ‘k’-th superdiagonal of + the matrix ‘m’. The matrix ‘m’ is not required to be square. The + diagonal of the matrix corresponds to k = 0. + + The function *note gsl_matrix_const_superdiagonal(): 3cc. is + equivalent to *note gsl_matrix_superdiagonal(): 3cb. but can be + used for matrices which are declared ‘const’. + + +File: gsl-ref.info, Node: Copying matrices, Next: Copying rows and columns, Prev: Creating row and column views, Up: Matrices + +8.4.7 Copying matrices +---------------------- + + -- Function: int gsl_matrix_memcpy (gsl_matrix * dest, const gsl_matrix + * src) + + This function copies the elements of the matrix ‘src’ into the + matrix ‘dest’. The two matrices must have the same size. + + -- Function: int gsl_matrix_swap (gsl_matrix * m1, gsl_matrix * m2) + + This function exchanges the elements of the matrices ‘m1’ and ‘m2’ + by copying. The two matrices must have the same size. + + +File: gsl-ref.info, Node: Copying rows and columns, Next: Exchanging rows and columns, Prev: Copying matrices, Up: Matrices + +8.4.8 Copying rows and columns +------------------------------ + +The functions described in this section copy a row or column of a matrix +into a vector. This allows the elements of the vector and the matrix to +be modified independently. Note that if the matrix and the vector point +to overlapping regions of memory then the result will be undefined. The +same effect can be achieved with more generality using *note +gsl_vector_memcpy(): 383. with vector views of rows and columns. + + -- Function: int gsl_matrix_get_row (gsl_vector * v, const gsl_matrix + * m, size_t i) + + This function copies the elements of the ‘i’-th row of the matrix + ‘m’ into the vector ‘v’. The length of the vector must be the same + as the length of the row. + + -- Function: int gsl_matrix_get_col (gsl_vector * v, const gsl_matrix + * m, size_t j) + + This function copies the elements of the ‘j’-th column of the + matrix ‘m’ into the vector ‘v’. The length of the vector must be + the same as the length of the column. + + -- Function: int gsl_matrix_set_row (gsl_matrix * m, size_t i, const + gsl_vector * v) + + This function copies the elements of the vector ‘v’ into the ‘i’-th + row of the matrix ‘m’. The length of the vector must be the same + as the length of the row. + + -- Function: int gsl_matrix_set_col (gsl_matrix * m, size_t j, const + gsl_vector * v) + + This function copies the elements of the vector ‘v’ into the ‘j’-th + column of the matrix ‘m’. The length of the vector must be the + same as the length of the column. + + +File: gsl-ref.info, Node: Exchanging rows and columns, Next: Matrix operations, Prev: Copying rows and columns, Up: Matrices + +8.4.9 Exchanging rows and columns +--------------------------------- + +The following functions can be used to exchange the rows and columns of +a matrix. + + -- Function: int gsl_matrix_swap_rows (gsl_matrix * m, size_t i, + size_t j) + + This function exchanges the ‘i’-th and ‘j’-th rows of the matrix + ‘m’ in-place. + + -- Function: int gsl_matrix_swap_columns (gsl_matrix * m, size_t i, + size_t j) + + This function exchanges the ‘i’-th and ‘j’-th columns of the matrix + ‘m’ in-place. + + -- Function: int gsl_matrix_swap_rowcol (gsl_matrix * m, size_t i, + size_t j) + + This function exchanges the ‘i’-th row and ‘j’-th column of the + matrix ‘m’ in-place. The matrix must be square for this operation + to be possible. + + -- Function: int gsl_matrix_transpose_memcpy (gsl_matrix * dest, const + gsl_matrix * src) + + This function makes the matrix ‘dest’ the transpose of the matrix + ‘src’ by copying the elements of ‘src’ into ‘dest’. This function + works for all matrices provided that the dimensions of the matrix + ‘dest’ match the transposed dimensions of the matrix ‘src’. + + -- Function: int gsl_matrix_transpose (gsl_matrix * m) + + This function replaces the matrix ‘m’ by its transpose by copying + the elements of the matrix in-place. The matrix must be square for + this operation to be possible. + + +File: gsl-ref.info, Node: Matrix operations, Next: Finding maximum and minimum elements of matrices, Prev: Exchanging rows and columns, Up: Matrices + +8.4.10 Matrix operations +------------------------ + +The following operations are defined for real and complex matrices. + + -- Function: int gsl_matrix_add (gsl_matrix * a, const gsl_matrix * b) + + This function adds the elements of matrix ‘b’ to the elements of + matrix ‘a’. The result a(i,j) \leftarrow a(i,j) + b(i,j) is stored + in ‘a’ and ‘b’ remains unchanged. The two matrices must have the + same dimensions. + + -- Function: int gsl_matrix_sub (gsl_matrix * a, const gsl_matrix * b) + + This function subtracts the elements of matrix ‘b’ from the + elements of matrix ‘a’. The result a(i,j) \leftarrow a(i,j) - + b(i,j) is stored in ‘a’ and ‘b’ remains unchanged. The two + matrices must have the same dimensions. + + -- Function: int gsl_matrix_mul_elements (gsl_matrix * a, const + gsl_matrix * b) + + This function multiplies the elements of matrix ‘a’ by the elements + of matrix ‘b’. The result a(i,j) \leftarrow a(i,j) * b(i,j) is + stored in ‘a’ and ‘b’ remains unchanged. The two matrices must + have the same dimensions. + + -- Function: int gsl_matrix_div_elements (gsl_matrix * a, const + gsl_matrix * b) + + This function divides the elements of matrix ‘a’ by the elements of + matrix ‘b’. The result a(i,j) \leftarrow a(i,j) / b(i,j) is stored + in ‘a’ and ‘b’ remains unchanged. The two matrices must have the + same dimensions. + + -- Function: int gsl_matrix_scale (gsl_matrix * a, const double x) + + This function multiplies the elements of matrix ‘a’ by the constant + factor ‘x’. The result a(i,j) \leftarrow x a(i,j) is stored in + ‘a’. + + -- Function: int gsl_matrix_add_constant (gsl_matrix * a, const + double x) + + This function adds the constant value ‘x’ to the elements of the + matrix ‘a’. The result a(i,j) \leftarrow a(i,j) + x is stored in + ‘a’. + + +File: gsl-ref.info, Node: Finding maximum and minimum elements of matrices, Next: Matrix properties, Prev: Matrix operations, Up: Matrices + +8.4.11 Finding maximum and minimum elements of matrices +------------------------------------------------------- + +The following operations are only defined for real matrices. + + -- Function: double gsl_matrix_max (const gsl_matrix * m) + + This function returns the maximum value in the matrix ‘m’. + + -- Function: double gsl_matrix_min (const gsl_matrix * m) + + This function returns the minimum value in the matrix ‘m’. + + -- Function: void gsl_matrix_minmax (const gsl_matrix * m, double + * min_out, double * max_out) + + This function returns the minimum and maximum values in the matrix + ‘m’, storing them in ‘min_out’ and ‘max_out’. + + -- Function: void gsl_matrix_max_index (const gsl_matrix * m, size_t + * imax, size_t * jmax) + + This function returns the indices of the maximum value in the + matrix ‘m’, storing them in ‘imax’ and ‘jmax’. When there are + several equal maximum elements then the first element found is + returned, searching in row-major order. + + -- Function: void gsl_matrix_min_index (const gsl_matrix * m, size_t + * imin, size_t * jmin) + + This function returns the indices of the minimum value in the + matrix ‘m’, storing them in ‘imin’ and ‘jmin’. When there are + several equal minimum elements then the first element found is + returned, searching in row-major order. + + -- Function: void gsl_matrix_minmax_index (const gsl_matrix * m, size_t + * imin, size_t * jmin, size_t * imax, size_t * jmax) + + This function returns the indices of the minimum and maximum values + in the matrix ‘m’, storing them in (‘imin’, ‘jmin’) and (‘imax’, + ‘jmax’). When there are several equal minimum or maximum elements + then the first elements found are returned, searching in row-major + order. + + +File: gsl-ref.info, Node: Matrix properties, Next: Example programs for matrices, Prev: Finding maximum and minimum elements of matrices, Up: Matrices + +8.4.12 Matrix properties +------------------------ + +The following functions are defined for real and complex matrices. For +complex matrices both the real and imaginary parts must satisfy the +conditions. + + -- Function: int gsl_matrix_isnull (const gsl_matrix * m) + -- Function: int gsl_matrix_ispos (const gsl_matrix * m) + -- Function: int gsl_matrix_isneg (const gsl_matrix * m) + -- Function: int gsl_matrix_isnonneg (const gsl_matrix * m) + + These functions return 1 if all the elements of the matrix ‘m’ are + zero, strictly positive, strictly negative, or non-negative + respectively, and 0 otherwise. To test whether a matrix is + positive-definite, use the *note Cholesky decomposition: 3ee. + + -- Function: int gsl_matrix_equal (const gsl_matrix * a, const + gsl_matrix * b) + + This function returns 1 if the matrices ‘a’ and ‘b’ are equal (by + comparison of element values) and 0 otherwise. + + +File: gsl-ref.info, Node: Example programs for matrices, Next: References and Further Reading<4>, Prev: Matrix properties, Up: Matrices + +8.4.13 Example programs for matrices +------------------------------------ + +The program below shows how to allocate, initialize and read from a +matrix using the functions *note gsl_matrix_alloc(): 3a0, *note +gsl_matrix_set(): 3a5. and *note gsl_matrix_get(): 3a4. + + #include + #include + + int + main (void) + { + int i, j; + gsl_matrix * m = gsl_matrix_alloc (10, 3); + + for (i = 0; i < 10; i++) + for (j = 0; j < 3; j++) + gsl_matrix_set (m, i, j, 0.23 + 100*i + j); + + for (i = 0; i < 100; i++) /* OUT OF RANGE ERROR */ + for (j = 0; j < 3; j++) + printf ("m(%d,%d) = %g\n", i, j, + gsl_matrix_get (m, i, j)); + + gsl_matrix_free (m); + + return 0; + } + +Here is the output from the program. The final loop attempts to read +outside the range of the matrix ‘m’, and the error is trapped by the +range-checking code in *note gsl_matrix_get(): 3a4. + + $ ./a.out + m(0,0) = 0.23 + m(0,1) = 1.23 + m(0,2) = 2.23 + m(1,0) = 100.23 + m(1,1) = 101.23 + m(1,2) = 102.23 + ... + m(9,2) = 902.23 + gsl: matrix_source.c:13: ERROR: first index out of range + Default GSL error handler invoked. + Aborted (core dumped) + +The next program shows how to write a matrix to a file. + + #include + #include + + int + main (void) + { + int i, j, k = 0; + gsl_matrix * m = gsl_matrix_alloc (100, 100); + gsl_matrix * a = gsl_matrix_alloc (100, 100); + + for (i = 0; i < 100; i++) + for (j = 0; j < 100; j++) + gsl_matrix_set (m, i, j, 0.23 + i + j); + + { + FILE * f = fopen ("test.dat", "wb"); + gsl_matrix_fwrite (f, m); + fclose (f); + } + + { + FILE * f = fopen ("test.dat", "rb"); + gsl_matrix_fread (f, a); + fclose (f); + } + + for (i = 0; i < 100; i++) + for (j = 0; j < 100; j++) + { + double mij = gsl_matrix_get (m, i, j); + double aij = gsl_matrix_get (a, i, j); + if (mij != aij) k++; + } + + gsl_matrix_free (m); + gsl_matrix_free (a); + + printf ("differences = %d (should be zero)\n", k); + return (k > 0); + } + +After running this program the file ‘test.dat’ should contain the +elements of ‘m’, written in binary format. The matrix which is read +back in using the function *note gsl_matrix_fread(): 3ae. should be +exactly equal to the original matrix. + +The following program demonstrates the use of vector views. The program +computes the column norms of a matrix. + + #include + #include + #include + #include + + int + main (void) + { + size_t i,j; + + gsl_matrix *m = gsl_matrix_alloc (10, 10); + + for (i = 0; i < 10; i++) + for (j = 0; j < 10; j++) + gsl_matrix_set (m, i, j, sin (i) + cos (j)); + + for (j = 0; j < 10; j++) + { + gsl_vector_view column = gsl_matrix_column (m, j); + double d; + + d = gsl_blas_dnrm2 (&column.vector); + + printf ("matrix column %zu, norm = %g\n", j, d); + } + + gsl_matrix_free (m); + + return 0; + } + +Here is the output of the program, + + matrix column 0, norm = 4.31461 + matrix column 1, norm = 3.1205 + matrix column 2, norm = 2.19316 + matrix column 3, norm = 3.26114 + matrix column 4, norm = 2.53416 + matrix column 5, norm = 2.57281 + matrix column 6, norm = 4.20469 + matrix column 7, norm = 3.65202 + matrix column 8, norm = 2.08524 + matrix column 9, norm = 3.07313 + +The results can be confirmed using GNU octave: + + $ octave + GNU Octave, version 2.0.16.92 + octave> m = sin(0:9)' * ones(1,10) + + ones(10,1) * cos(0:9); + octave> sqrt(sum(m.^2)) + ans = + 4.3146 3.1205 2.1932 3.2611 2.5342 2.5728 + 4.2047 3.6520 2.0852 3.0731 + + +File: gsl-ref.info, Node: References and Further Reading<4>, Prev: Example programs for matrices, Up: Matrices + +8.4.14 References and Further Reading +------------------------------------- + +The block, vector and matrix objects in GSL follow the ‘valarray’ model +of C++. A description of this model can be found in the following +reference, + + * B. Stroustrup, The C++ Programming Language (3rd Ed), Section 22.4 + Vector Arithmetic. Addison-Wesley 1997, ISBN 0-201-88954-4. + + +File: gsl-ref.info, Node: Permutations, Next: Combinations, Prev: Vectors and Matrices, Up: Top + +9 Permutations +************** + +This chapter describes functions for creating and manipulating +permutations. A permutation p is represented by an array of n integers +in the range 0 to n-1, where each value p_i occurs once and only once. +The application of a permutation p to a vector v yields a new vector v' +where v'_i = v_{p_i}. For example, the array (0,1,3,2) represents a +permutation which exchanges the last two elements of a four element +vector. The corresponding identity permutation is (0,1,2,3). + +Note that the permutations produced by the linear algebra routines +correspond to the exchange of matrix columns, and so should be +considered as applying to row-vectors in the form v' = v P rather than +column-vectors, when permuting the elements of a vector. + +The functions described in this chapter are defined in the header file +‘gsl_permutation.h’. + +* Menu: + +* The Permutation struct:: +* Permutation allocation:: +* Accessing permutation elements:: +* Permutation properties:: +* Permutation functions:: +* Applying Permutations:: +* Reading and writing permutations:: +* Permutations in cyclic form:: +* Examples: Examples<4>. +* References and Further Reading: References and Further Reading<5>. + + +File: gsl-ref.info, Node: The Permutation struct, Next: Permutation allocation, Up: Permutations + +9.1 The Permutation struct +========================== + + -- Type: gsl_permutation + + A permutation is defined by a structure containing two components, + the size of the permutation and a pointer to the permutation array. + The elements of the permutation array are all of type ‘size_t’. + The *note gsl_permutation: 3f5. structure looks like this: + + typedef struct + { + size_t size; + size_t * data; + } gsl_permutation; + + +File: gsl-ref.info, Node: Permutation allocation, Next: Accessing permutation elements, Prev: The Permutation struct, Up: Permutations + +9.2 Permutation allocation +========================== + + -- Function: gsl_permutation * gsl_permutation_alloc (size_t n) + + This function allocates memory for a new permutation of size ‘n’. + The permutation is not initialized and its elements are undefined. + Use the function *note gsl_permutation_calloc(): 3f8. if you want + to create a permutation which is initialized to the identity. A + null pointer is returned if insufficient memory is available to + create the permutation. + + -- Function: gsl_permutation * gsl_permutation_calloc (size_t n) + + This function allocates memory for a new permutation of size ‘n’ + and initializes it to the identity. A null pointer is returned if + insufficient memory is available to create the permutation. + + -- Function: void gsl_permutation_init (gsl_permutation * p) + + This function initializes the permutation ‘p’ to the identity, i.e. + (0, 1, 2, \dots, n - 1). + + -- Function: void gsl_permutation_free (gsl_permutation * p) + + This function frees all the memory used by the permutation ‘p’. + + -- Function: int gsl_permutation_memcpy (gsl_permutation * dest, const + gsl_permutation * src) + + This function copies the elements of the permutation ‘src’ into the + permutation ‘dest’. The two permutations must have the same size. + + +File: gsl-ref.info, Node: Accessing permutation elements, Next: Permutation properties, Prev: Permutation allocation, Up: Permutations + +9.3 Accessing permutation elements +================================== + +The following functions can be used to access and manipulate +permutations. + + -- Function: size_t gsl_permutation_get (const gsl_permutation * p, + const size_t i) + + This function returns the value of the ‘i’-th element of the + permutation ‘p’. If ‘i’ lies outside the allowed range of 0 to n - + 1 then the error handler is invoked and 0 is returned. An inline + version of this function is used when ‘HAVE_INLINE’ is defined. + + -- Function: int gsl_permutation_swap (gsl_permutation * p, const + size_t i, const size_t j) + + This function exchanges the ‘i’-th and ‘j’-th elements of the + permutation ‘p’. + + +File: gsl-ref.info, Node: Permutation properties, Next: Permutation functions, Prev: Accessing permutation elements, Up: Permutations + +9.4 Permutation properties +========================== + + -- Function: size_t gsl_permutation_size (const gsl_permutation * p) + + This function returns the size of the permutation ‘p’. + + -- Function: size_t * gsl_permutation_data (const gsl_permutation * p) + + This function returns a pointer to the array of elements in the + permutation ‘p’. + + -- Function: int gsl_permutation_valid (const gsl_permutation * p) + + This function checks that the permutation ‘p’ is valid. The ‘n’ + elements should contain each of the numbers 0 to ‘n - 1’ once and + only once. + + +File: gsl-ref.info, Node: Permutation functions, Next: Applying Permutations, Prev: Permutation properties, Up: Permutations + +9.5 Permutation functions +========================= + + -- Function: void gsl_permutation_reverse (gsl_permutation * p) + + This function reverses the elements of the permutation ‘p’. + + -- Function: int gsl_permutation_inverse (gsl_permutation * inv, const + gsl_permutation * p) + + This function computes the inverse of the permutation ‘p’, storing + the result in ‘inv’. + + -- Function: int gsl_permutation_next (gsl_permutation * p) + + This function advances the permutation ‘p’ to the next permutation + in lexicographic order and returns ‘GSL_SUCCESS’. If no further + permutations are available it returns ‘GSL_FAILURE’ and leaves ‘p’ + unmodified. Starting with the identity permutation and repeatedly + applying this function will iterate through all possible + permutations of a given order. + + -- Function: int gsl_permutation_prev (gsl_permutation * p) + + This function steps backwards from the permutation ‘p’ to the + previous permutation in lexicographic order, returning + ‘GSL_SUCCESS’. If no previous permutation is available it returns + ‘GSL_FAILURE’ and leaves ‘p’ unmodified. + + +File: gsl-ref.info, Node: Applying Permutations, Next: Reading and writing permutations, Prev: Permutation functions, Up: Permutations + +9.6 Applying Permutations +========================= + + -- Function: int gsl_permute (const size_t * p, double * data, + size_t stride, size_t n) + + This function applies the permutation ‘p’ to the array ‘data’ of + size ‘n’ with stride ‘stride’. + + -- Function: int gsl_permute_inverse (const size_t * p, double * data, + size_t stride, size_t n) + + This function applies the inverse of the permutation ‘p’ to the + array ‘data’ of size ‘n’ with stride ‘stride’. + + -- Function: int gsl_permute_vector (const gsl_permutation * p, + gsl_vector * v) + + This function applies the permutation ‘p’ to the elements of the + vector ‘v’, considered as a row-vector acted on by a permutation + matrix from the right, v' = v P. The j-th column of the permutation + matrix P is given by the p_j-th column of the identity matrix. The + permutation ‘p’ and the vector ‘v’ must have the same length. + + -- Function: int gsl_permute_vector_inverse (const gsl_permutation * p, + gsl_vector * v) + + This function applies the inverse of the permutation ‘p’ to the + elements of the vector ‘v’, considered as a row-vector acted on by + an inverse permutation matrix from the right, v' = v P^T. Note that + for permutation matrices the inverse is the same as the transpose. + The j-th column of the permutation matrix P is given by the + :data:`p`_j-th column of the identity matrix. The permutation ‘p’ + and the vector ‘v’ must have the same length. + + -- Function: int gsl_permute_matrix (const gsl_permutation * p, + gsl_matrix * A) + + This function applies the permutation ‘p’ to the matrix ‘A’ from + the right, A' = A P. The j-th column of the permutation matrix P is + given by the p_j-th column of the identity matrix. This + effectively permutes the columns of ‘A’ according to the + permutation ‘p’, and so the number of columns of ‘A’ must equal the + size of the permutation ‘p’. + + -- Function: int gsl_permutation_mul (gsl_permutation * p, const + gsl_permutation * pa, const gsl_permutation * pb) + + This function combines the two permutations ‘pa’ and ‘pb’ into a + single permutation ‘p’, where p = pa * pb The permutation ‘p’ is + equivalent to applying ‘pb’ first and then ‘pa’. + + +File: gsl-ref.info, Node: Reading and writing permutations, Next: Permutations in cyclic form, Prev: Applying Permutations, Up: Permutations + +9.7 Reading and writing permutations +==================================== + +The library provides functions for reading and writing permutations to a +file as binary data or formatted text. + + -- Function: int gsl_permutation_fwrite (FILE * stream, const + gsl_permutation * p) + + This function writes the elements of the permutation ‘p’ to the + stream ‘stream’ in binary format. The function returns + ‘GSL_EFAILED’ if there was a problem writing to the file. Since + the data is written in the native binary format it may not be + portable between different architectures. + + -- Function: int gsl_permutation_fread (FILE * stream, gsl_permutation + * p) + + This function reads into the permutation ‘p’ from the open stream + ‘stream’ in binary format. The permutation ‘p’ must be + preallocated with the correct length since the function uses the + size of ‘p’ to determine how many bytes to read. The function + returns ‘GSL_EFAILED’ if there was a problem reading from the file. + The data is assumed to have been written in the native binary + format on the same architecture. + + -- Function: int gsl_permutation_fprintf (FILE * stream, const + gsl_permutation * p, const char * format) + + This function writes the elements of the permutation ‘p’ + line-by-line to the stream ‘stream’ using the format specifier + ‘format’, which should be suitable for a type of ‘size_t’. In ISO + C99 the type modifier ‘z’ represents ‘size_t’, so ‘"%zu\n"’ is a + suitable format (1). The function returns ‘GSL_EFAILED’ if there + was a problem writing to the file. + + -- Function: int gsl_permutation_fscanf (FILE * stream, gsl_permutation + * p) + + This function reads formatted data from the stream ‘stream’ into + the permutation ‘p’. The permutation ‘p’ must be preallocated with + the correct length since the function uses the size of ‘p’ to + determine how many numbers to read. The function returns + ‘GSL_EFAILED’ if there was a problem reading from the file. + + ---------- Footnotes ---------- + + (1) In versions of the GNU C library prior to the ISO C99 standard, +the type modifier ‘Z’ was used instead. + + +File: gsl-ref.info, Node: Permutations in cyclic form, Next: Examples<4>, Prev: Reading and writing permutations, Up: Permutations + +9.8 Permutations in cyclic form +=============================== + +A permutation can be represented in both `linear' and `cyclic' +notations. The functions described in this section convert between the +two forms. The linear notation is an index mapping, and has already +been described above. The cyclic notation expresses a permutation as a +series of circular rearrangements of groups of elements, or `cycles'. + +For example, under the cycle (1 2 3), 1 is replaced by 2, 2 is replaced +by 3 and 3 is replaced by 1 in a circular fashion. Cycles of different +sets of elements can be combined independently, for example (1 2 3) (4 +5) combines the cycle (1 2 3) with the cycle (4 5), which is an exchange +of elements 4 and 5. A cycle of length one represents an element which +is unchanged by the permutation and is referred to as a `singleton'. + +It can be shown that every permutation can be decomposed into +combinations of cycles. The decomposition is not unique, but can always +be rearranged into a standard `canonical form' by a reordering of +elements. The library uses the canonical form defined in Knuth’s `Art +of Computer Programming' (Vol 1, 3rd Ed, 1997) Section 1.3.3, p.178. + +The procedure for obtaining the canonical form given by Knuth is, + + 1. Write all singleton cycles explicitly + + 2. Within each cycle, put the smallest number first + + 3. Order the cycles in decreasing order of the first number in the + cycle. + +For example, the linear representation (2 4 3 0 1) is represented as (1 +4) (0 2 3) in canonical form. The permutation corresponds to an +exchange of elements 1 and 4, and rotation of elements 0, 2 and 3. + +The important property of the canonical form is that it can be +reconstructed from the contents of each cycle without the brackets. In +addition, by removing the brackets it can be considered as a linear +representation of a different permutation. In the example given above +the permutation (2 4 3 0 1) would become (1 4 0 2 3). This mapping has +many applications in the theory of permutations. + + -- Function: int gsl_permutation_linear_to_canonical (gsl_permutation + * q, const gsl_permutation * p) + + This function computes the canonical form of the permutation ‘p’ + and stores it in the output argument ‘q’. + + -- Function: int gsl_permutation_canonical_to_linear (gsl_permutation + * p, const gsl_permutation * q) + + This function converts a permutation ‘q’ in canonical form back + into linear form storing it in the output argument ‘p’. + + -- Function: size_t gsl_permutation_inversions (const gsl_permutation + * p) + + This function counts the number of inversions in the permutation + ‘p’. An inversion is any pair of elements that are not in order. + For example, the permutation 2031 has three inversions, + corresponding to the pairs (2,0) (2,1) and (3,1). The identity + permutation has no inversions. + + -- Function: size_t gsl_permutation_linear_cycles (const + gsl_permutation * p) + + This function counts the number of cycles in the permutation ‘p’, + given in linear form. + + -- Function: size_t gsl_permutation_canonical_cycles (const + gsl_permutation * q) + + This function counts the number of cycles in the permutation ‘q’, + given in canonical form. + + +File: gsl-ref.info, Node: Examples<4>, Next: References and Further Reading<5>, Prev: Permutations in cyclic form, Up: Permutations + +9.9 Examples +============ + +The example program below creates a random permutation (by shuffling the +elements of the identity) and finds its inverse. + + #include + #include + #include + #include + + int + main (void) + { + const size_t N = 10; + const gsl_rng_type * T; + gsl_rng * r; + + gsl_permutation * p = gsl_permutation_alloc (N); + gsl_permutation * q = gsl_permutation_alloc (N); + + gsl_rng_env_setup(); + T = gsl_rng_default; + r = gsl_rng_alloc (T); + + printf ("initial permutation:"); + gsl_permutation_init (p); + gsl_permutation_fprintf (stdout, p, " %u"); + printf ("\n"); + + printf (" random permutation:"); + gsl_ran_shuffle (r, p->data, N, sizeof(size_t)); + gsl_permutation_fprintf (stdout, p, " %u"); + printf ("\n"); + + printf ("inverse permutation:"); + gsl_permutation_inverse (q, p); + gsl_permutation_fprintf (stdout, q, " %u"); + printf ("\n"); + + gsl_permutation_free (p); + gsl_permutation_free (q); + gsl_rng_free (r); + + return 0; + } + +Here is the output from the program: + + $ ./a.out + initial permutation: 0 1 2 3 4 5 6 7 8 9 + random permutation: 1 3 5 2 7 6 0 4 9 8 + inverse permutation: 6 0 3 1 7 2 5 4 9 8 + +The random permutation ‘p[i]’ and its inverse ‘q[i]’ are related through +the identity ‘p[q[i]] = i’, which can be verified from the output. + +The next example program steps forwards through all possible third order +permutations, starting from the identity, + + #include + #include + + int + main (void) + { + gsl_permutation * p = gsl_permutation_alloc (3); + + gsl_permutation_init (p); + + do + { + gsl_permutation_fprintf (stdout, p, " %u"); + printf ("\n"); + } + while (gsl_permutation_next(p) == GSL_SUCCESS); + + gsl_permutation_free (p); + + return 0; + } + +Here is the output from the program: + + $ ./a.out + 0 1 2 + 0 2 1 + 1 0 2 + 1 2 0 + 2 0 1 + 2 1 0 + +The permutations are generated in lexicographic order. To reverse the +sequence, begin with the final permutation (which is the reverse of the +identity) and replace *note gsl_permutation_next(): 406. with *note +gsl_permutation_prev(): 407. + + +File: gsl-ref.info, Node: References and Further Reading<5>, Prev: Examples<4>, Up: Permutations + +9.10 References and Further Reading +=================================== + +The subject of permutations is covered extensively in the following, + + * Donald E. Knuth, The Art of Computer Programming: Sorting and + Searching (Vol 3, 3rd Ed, 1997), Addison-Wesley, ISBN 0201896850. + +For the definition of the `canonical form' see, + + * Donald E. Knuth, The Art of Computer Programming: Fundamental + Algorithms (Vol 1, 3rd Ed, 1997), Addison-Wesley, ISBN 0201896850. + Section 1.3.3, An Unusual Correspondence, p.178–179. + + +File: gsl-ref.info, Node: Combinations, Next: Multisets, Prev: Permutations, Up: Top + +10 Combinations +*************** + +This chapter describes functions for creating and manipulating +combinations. A combination c is represented by an array of k integers +in the range 0 to n - 1, where each value c_i occurs at most once. The +combination c corresponds to indices of k elements chosen from an n +element vector. Combinations are useful for iterating over all +k-element subsets of a set. + +The functions described in this chapter are defined in the header file +‘gsl_combination.h’. + +* Menu: + +* The Combination struct:: +* Combination allocation:: +* Accessing combination elements:: +* Combination properties:: +* Combination functions:: +* Reading and writing combinations:: +* Examples: Examples<5>. +* References and Further Reading: References and Further Reading<6>. + + +File: gsl-ref.info, Node: The Combination struct, Next: Combination allocation, Up: Combinations + +10.1 The Combination struct +=========================== + + -- Type: gsl_combination + + A combination is defined by a structure containing three + components, the values of n and k, and a pointer to the combination + array. The elements of the combination array are all of type + ‘size_t’, and are stored in increasing order. The *note + gsl_combination: 41f. structure looks like this: + + typedef struct + { + size_t n; + size_t k; + size_t *data; + } gsl_combination; + + +File: gsl-ref.info, Node: Combination allocation, Next: Accessing combination elements, Prev: The Combination struct, Up: Combinations + +10.2 Combination allocation +=========================== + + -- Function: gsl_combination * gsl_combination_alloc (size_t n, + size_t k) + + This function allocates memory for a new combination with + parameters ‘n’, ‘k’. The combination is not initialized and its + elements are undefined. Use the function *note + gsl_combination_calloc(): 422. if you want to create a combination + which is initialized to the lexicographically first combination. A + null pointer is returned if insufficient memory is available to + create the combination. + + -- Function: gsl_combination * gsl_combination_calloc (size_t n, + size_t k) + + This function allocates memory for a new combination with + parameters ‘n’, ‘k’ and initializes it to the lexicographically + first combination. A null pointer is returned if insufficient + memory is available to create the combination. + + -- Function: void gsl_combination_init_first (gsl_combination * c) + + This function initializes the combination ‘c’ to the + lexicographically first combination, i.e. (0, 1, 2, \dots, k - 1). + + -- Function: void gsl_combination_init_last (gsl_combination * c) + + This function initializes the combination ‘c’ to the + lexicographically last combination, i.e. (n - k, n - k + 1, \dots, + n - 1). + + -- Function: void gsl_combination_free (gsl_combination * c) + + This function frees all the memory used by the combination ‘c’. + + -- Function: int gsl_combination_memcpy (gsl_combination * dest, const + gsl_combination * src) + + This function copies the elements of the combination ‘src’ into the + combination ‘dest’. The two combinations must have the same size. + + +File: gsl-ref.info, Node: Accessing combination elements, Next: Combination properties, Prev: Combination allocation, Up: Combinations + +10.3 Accessing combination elements +=================================== + +The following function can be used to access the elements of a +combination. + + -- Function: size_t gsl_combination_get (const gsl_combination * c, + const size_t i) + + This function returns the value of the ‘i’-th element of the + combination ‘c’. If ‘i’ lies outside the allowed range of 0 to k - + 1 then the error handler is invoked and 0 is returned. An inline + version of this function is used when ‘HAVE_INLINE’ is defined. + + +File: gsl-ref.info, Node: Combination properties, Next: Combination functions, Prev: Accessing combination elements, Up: Combinations + +10.4 Combination properties +=========================== + + -- Function: size_t gsl_combination_n (const gsl_combination * c) + + This function returns the range (n) of the combination c. + + -- Function: size_t gsl_combination_k (const gsl_combination * c) + + This function returns the number of elements (k) in the combination + ‘c’. + + -- Function: size_t * gsl_combination_data (const gsl_combination * c) + + This function returns a pointer to the array of elements in the + combination ‘c’. + + -- Function: int gsl_combination_valid (gsl_combination * c) + + This function checks that the combination ‘c’ is valid. The ‘k’ + elements should lie in the range 0 to n - 1, with each value + occurring once at most and in increasing order. + + +File: gsl-ref.info, Node: Combination functions, Next: Reading and writing combinations, Prev: Combination properties, Up: Combinations + +10.5 Combination functions +========================== + + -- Function: int gsl_combination_next (gsl_combination * c) + + This function advances the combination ‘c’ to the next combination + in lexicographic order and returns ‘GSL_SUCCESS’. If no further + combinations are available it returns ‘GSL_FAILURE’ and leaves ‘c’ + unmodified. Starting with the first combination and repeatedly + applying this function will iterate through all possible + combinations of a given order. + + -- Function: int gsl_combination_prev (gsl_combination * c) + + This function steps backwards from the combination ‘c’ to the + previous combination in lexicographic order, returning + ‘GSL_SUCCESS’. If no previous combination is available it returns + ‘GSL_FAILURE’ and leaves ‘c’ unmodified. + + +File: gsl-ref.info, Node: Reading and writing combinations, Next: Examples<5>, Prev: Combination functions, Up: Combinations + +10.6 Reading and writing combinations +===================================== + +The library provides functions for reading and writing combinations to a +file as binary data or formatted text. + + -- Function: int gsl_combination_fwrite (FILE * stream, const + gsl_combination * c) + + This function writes the elements of the combination ‘c’ to the + stream ‘stream’ in binary format. The function returns + ‘GSL_EFAILED’ if there was a problem writing to the file. Since + the data is written in the native binary format it may not be + portable between different architectures. + + -- Function: int gsl_combination_fread (FILE * stream, gsl_combination + * c) + + This function reads elements from the open stream ‘stream’ into the + combination ‘c’ in binary format. The combination ‘c’ must be + preallocated with correct values of n and k since the function uses + the size of ‘c’ to determine how many bytes to read. The function + returns ‘GSL_EFAILED’ if there was a problem reading from the file. + The data is assumed to have been written in the native binary + format on the same architecture. + + -- Function: int gsl_combination_fprintf (FILE * stream, const + gsl_combination * c, const char * format) + + This function writes the elements of the combination ‘c’ + line-by-line to the stream ‘stream’ using the format specifier + ‘format’, which should be suitable for a type of ‘size_t’. In ISO + C99 the type modifier ‘z’ represents ‘size_t’, so ‘"%zu\n"’ is a + suitable format (1). The function returns ‘GSL_EFAILED’ if there + was a problem writing to the file. + + -- Function: int gsl_combination_fscanf (FILE * stream, gsl_combination + * c) + + This function reads formatted data from the stream ‘stream’ into + the combination ‘c’. The combination ‘c’ must be preallocated with + correct values of n and k since the function uses the size of ‘c’ + to determine how many numbers to read. The function returns + ‘GSL_EFAILED’ if there was a problem reading from the file. + + ---------- Footnotes ---------- + + (1) In versions of the GNU C library prior to the ISO C99 standard, +the type modifier ‘Z’ was used instead. + + +File: gsl-ref.info, Node: Examples<5>, Next: References and Further Reading<6>, Prev: Reading and writing combinations, Up: Combinations + +10.7 Examples +============= + +The example program below prints all subsets of the set {0,1,2,3} +ordered by size. Subsets of the same size are ordered +lexicographically. + + #include + #include + + int + main (void) + { + gsl_combination * c; + size_t i; + + printf ("All subsets of {0,1,2,3} by size:\n") ; + for (i = 0; i <= 4; i++) + { + c = gsl_combination_calloc (4, i); + do + { + printf ("{"); + gsl_combination_fprintf (stdout, c, " %u"); + printf (" }\n"); + } + while (gsl_combination_next (c) == GSL_SUCCESS); + gsl_combination_free (c); + } + + return 0; + } + +Here is the output from the program, + + All subsets of {0,1,2,3} by size: + { } + { 0 } + { 1 } + { 2 } + { 3 } + { 0 1 } + { 0 2 } + { 0 3 } + { 1 2 } + { 1 3 } + { 2 3 } + { 0 1 2 } + { 0 1 3 } + { 0 2 3 } + { 1 2 3 } + { 0 1 2 3 } + +All 16 subsets are generated, and the subsets of each size are sorted +lexicographically. + + +File: gsl-ref.info, Node: References and Further Reading<6>, Prev: Examples<5>, Up: Combinations + +10.8 References and Further Reading +=================================== + +Further information on combinations can be found in, + + * Donald L. Kreher, Douglas R. Stinson, Combinatorial Algorithms: + Generation, Enumeration and Search, 1998, CRC Press LLC, ISBN + 084933988X + + +File: gsl-ref.info, Node: Multisets, Next: Sorting, Prev: Combinations, Up: Top + +11 Multisets +************ + +This chapter describes functions for creating and manipulating +multisets. A multiset c is represented by an array of k integers in the +range 0 to n - 1, where each value c_i may occur more than once. The +multiset c corresponds to indices of k elements chosen from an n element +vector with replacement. In mathematical terms, n is the cardinality of +the multiset while k is the maximum multiplicity of any value. +Multisets are useful, for example, when iterating over the indices of a +k-th order symmetric tensor in n-space. + +The functions described in this chapter are defined in the header file +‘gsl_multiset.h’. + +* Menu: + +* The Multiset struct:: +* Multiset allocation:: +* Accessing multiset elements:: +* Multiset properties:: +* Multiset functions:: +* Reading and writing multisets:: +* Examples: Examples<6>. + + +File: gsl-ref.info, Node: The Multiset struct, Next: Multiset allocation, Up: Multisets + +11.1 The Multiset struct +======================== + + -- Type: gsl_multiset + + A multiset is defined by a structure containing three components, + the values of n and k, and a pointer to the multiset array. The + elements of the multiset array are all of type ‘size_t’, and are + stored in increasing order. The *note gsl_multiset: 43b. structure + looks like this: + + typedef struct + { + size_t n; + size_t k; + size_t *data; + } gsl_multiset; + + +File: gsl-ref.info, Node: Multiset allocation, Next: Accessing multiset elements, Prev: The Multiset struct, Up: Multisets + +11.2 Multiset allocation +======================== + + -- Function: gsl_multiset * gsl_multiset_alloc (size_t n, size_t k) + + This function allocates memory for a new multiset with parameters + ‘n’, ‘k’. The multiset is not initialized and its elements are + undefined. Use the function *note gsl_multiset_calloc(): 43e. if + you want to create a multiset which is initialized to the + lexicographically first multiset element. A null pointer is + returned if insufficient memory is available to create the + multiset. + + -- Function: gsl_multiset * gsl_multiset_calloc (size_t n, size_t k) + + This function allocates memory for a new multiset with parameters + ‘n’, ‘k’ and initializes it to the lexicographically first multiset + element. A null pointer is returned if insufficient memory is + available to create the multiset. + + -- Function: void gsl_multiset_init_first (gsl_multiset * c) + + This function initializes the multiset ‘c’ to the lexicographically + first multiset element, i.e. 0 repeated k times. + + -- Function: void gsl_multiset_init_last (gsl_multiset * c) + + This function initializes the multiset ‘c’ to the lexicographically + last multiset element, i.e. n-1 repeated k times. + + -- Function: void gsl_multiset_free (gsl_multiset * c) + + This function frees all the memory used by the multiset ‘c’. + + -- Function: int gsl_multiset_memcpy (gsl_multiset * dest, const + gsl_multiset * src) + + This function copies the elements of the multiset ‘src’ into the + multiset ‘dest’. The two multisets must have the same size. + + +File: gsl-ref.info, Node: Accessing multiset elements, Next: Multiset properties, Prev: Multiset allocation, Up: Multisets + +11.3 Accessing multiset elements +================================ + +The following function can be used to access the elements of a multiset. + + -- Function: size_t gsl_multiset_get (const gsl_multiset * c, const + size_t i) + + This function returns the value of the ‘i’-th element of the + multiset ‘c’. If ‘i’ lies outside the allowed range of 0 to k - 1 + then the error handler is invoked and 0 is returned. An inline + version of this function is used when ‘HAVE_INLINE’ is defined. + + +File: gsl-ref.info, Node: Multiset properties, Next: Multiset functions, Prev: Accessing multiset elements, Up: Multisets + +11.4 Multiset properties +======================== + + -- Function: size_t gsl_multiset_n (const gsl_multiset * c) + + This function returns the range (n) of the multiset ‘c’. + + -- Function: size_t gsl_multiset_k (const gsl_multiset * c) + + This function returns the number of elements (k) in the multiset + ‘c’. + + -- Function: size_t * gsl_multiset_data (const gsl_multiset * c) + + This function returns a pointer to the array of elements in the + multiset ‘c’. + + -- Function: int gsl_multiset_valid (gsl_multiset * c) + + This function checks that the multiset ‘c’ is valid. The ‘k’ + elements should lie in the range 0 to n - 1, with each value + occurring in nondecreasing order. + + +File: gsl-ref.info, Node: Multiset functions, Next: Reading and writing multisets, Prev: Multiset properties, Up: Multisets + +11.5 Multiset functions +======================= + + -- Function: int gsl_multiset_next (gsl_multiset * c) + + This function advances the multiset ‘c’ to the next multiset + element in lexicographic order and returns ‘GSL_SUCCESS’. If no + further multisets elements are available it returns ‘GSL_FAILURE’ + and leaves ‘c’ unmodified. Starting with the first multiset and + repeatedly applying this function will iterate through all possible + multisets of a given order. + + -- Function: int gsl_multiset_prev (gsl_multiset * c) + + This function steps backwards from the multiset ‘c’ to the previous + multiset element in lexicographic order, returning ‘GSL_SUCCESS’. + If no previous multiset is available it returns ‘GSL_FAILURE’ and + leaves ‘c’ unmodified. + + +File: gsl-ref.info, Node: Reading and writing multisets, Next: Examples<6>, Prev: Multiset functions, Up: Multisets + +11.6 Reading and writing multisets +================================== + +The library provides functions for reading and writing multisets to a +file as binary data or formatted text. + + -- Function: int gsl_multiset_fwrite (FILE * stream, const gsl_multiset + * c) + + This function writes the elements of the multiset ‘c’ to the stream + ‘stream’ in binary format. The function returns ‘GSL_EFAILED’ if + there was a problem writing to the file. Since the data is written + in the native binary format it may not be portable between + different architectures. + + -- Function: int gsl_multiset_fread (FILE * stream, gsl_multiset * c) + + This function reads elements from the open stream ‘stream’ into the + multiset ‘c’ in binary format. The multiset ‘c’ must be + preallocated with correct values of n and k since the function uses + the size of ‘c’ to determine how many bytes to read. The function + returns ‘GSL_EFAILED’ if there was a problem reading from the file. + The data is assumed to have been written in the native binary + format on the same architecture. + + -- Function: int gsl_multiset_fprintf (FILE * stream, const + gsl_multiset * c, const char * format) + + This function writes the elements of the multiset ‘c’ line-by-line + to the stream ‘stream’ using the format specifier ‘format’, which + should be suitable for a type of ‘size_t’. In ISO C99 the type + modifier ‘z’ represents ‘size_t’, so ‘"%zu\n"’ is a suitable format + (1). The function returns ‘GSL_EFAILED’ if there was a problem + writing to the file. + + -- Function: int gsl_multiset_fscanf (FILE * stream, gsl_multiset * c) + + This function reads formatted data from the stream ‘stream’ into + the multiset ‘c’. The multiset ‘c’ must be preallocated with + correct values of n and k since the function uses the size of ‘c’ + to determine how many numbers to read. The function returns + ‘GSL_EFAILED’ if there was a problem reading from the file. + + ---------- Footnotes ---------- + + (1) In versions of the GNU C library prior to the ISO C99 standard, +the type modifier ‘Z’ was used instead. + + +File: gsl-ref.info, Node: Examples<6>, Prev: Reading and writing multisets, Up: Multisets + +11.7 Examples +============= + +The example program below prints all multisets elements containing the +values {0,1,2,3} ordered by size. Multiset elements of the same size +are ordered lexicographically. + + #include + #include + + int + main (void) + { + gsl_multiset * c; + size_t i; + + printf ("All multisets of {0,1,2,3} by size:\n") ; + for (i = 0; i <= 4; i++) + { + c = gsl_multiset_calloc (4, i); + do + { + printf ("{"); + gsl_multiset_fprintf (stdout, c, " %u"); + printf (" }\n"); + } + while (gsl_multiset_next (c) == GSL_SUCCESS); + gsl_multiset_free (c); + } + + return 0; + } + +Here is the output from the program, + + All multisets of {0,1,2,3} by size: + { } + { 0 } + { 1 } + { 2 } + { 3 } + { 0 0 } + { 0 1 } + { 0 2 } + { 0 3 } + { 1 1 } + { 1 2 } + { 1 3 } + { 2 2 } + { 2 3 } + { 3 3 } + { 0 0 0 } + { 0 0 1 } + { 0 0 2 } + { 0 0 3 } + { 0 1 1 } + { 0 1 2 } + { 0 1 3 } + { 0 2 2 } + { 0 2 3 } + { 0 3 3 } + { 1 1 1 } + { 1 1 2 } + { 1 1 3 } + { 1 2 2 } + { 1 2 3 } + { 1 3 3 } + { 2 2 2 } + { 2 2 3 } + { 2 3 3 } + { 3 3 3 } + { 0 0 0 0 } + { 0 0 0 1 } + { 0 0 0 2 } + { 0 0 0 3 } + { 0 0 1 1 } + { 0 0 1 2 } + { 0 0 1 3 } + { 0 0 2 2 } + { 0 0 2 3 } + { 0 0 3 3 } + { 0 1 1 1 } + { 0 1 1 2 } + { 0 1 1 3 } + { 0 1 2 2 } + { 0 1 2 3 } + { 0 1 3 3 } + { 0 2 2 2 } + { 0 2 2 3 } + { 0 2 3 3 } + { 0 3 3 3 } + { 1 1 1 1 } + { 1 1 1 2 } + { 1 1 1 3 } + { 1 1 2 2 } + { 1 1 2 3 } + { 1 1 3 3 } + { 1 2 2 2 } + { 1 2 2 3 } + { 1 2 3 3 } + { 1 3 3 3 } + { 2 2 2 2 } + { 2 2 2 3 } + { 2 2 3 3 } + { 2 3 3 3 } + { 3 3 3 3 } + +All 70 multisets are generated and sorted lexicographically. + + +File: gsl-ref.info, Node: Sorting, Next: BLAS Support, Prev: Multisets, Up: Top + +12 Sorting +********** + +This chapter describes functions for sorting data, both directly and +indirectly (using an index). All the functions use the `heapsort' +algorithm. Heapsort is an O(N \log N) algorithm which operates in-place +and does not require any additional storage. It also provides +consistent performance, the running time for its worst-case (ordered +data) being not significantly longer than the average and best cases. +Note that the heapsort algorithm does not preserve the relative ordering +of equal elements—it is an `unstable' sort. However the resulting order +of equal elements will be consistent across different platforms when +using these functions. + +* Menu: + +* Sorting objects:: +* Sorting vectors:: +* Selecting the k smallest or largest elements:: +* Computing the rank:: +* Examples: Examples<7>. +* References and Further Reading: References and Further Reading<7>. + + +File: gsl-ref.info, Node: Sorting objects, Next: Sorting vectors, Up: Sorting + +12.1 Sorting objects +==================== + +The following function provides a simple alternative to the standard +library function ‘qsort()’. It is intended for systems lacking +‘qsort()’, not as a replacement for it. The function ‘qsort()’ should +be used whenever possible, as it will be faster and can provide stable +ordering of equal elements. Documentation for ‘qsort()’ is available in +the GNU C Library Reference Manual. + +The functions described in this section are defined in the header file +‘gsl_heapsort.h’. + + -- Function: void gsl_heapsort (void * array, size_t count, + size_t size, gsl_comparison_fn_t compare) + + This function sorts the ‘count’ elements of the array ‘array’, each + of size ‘size’, into ascending order using the comparison function + ‘compare’. The type of the comparison function is defined by + + -- Type: gsl_comparison_fn_t + + int (*gsl_comparison_fn_t) (const void * a, const void * b) + + A comparison function should return a negative integer if the first + argument is less than the second argument, ‘0’ if the two arguments + are equal and a positive integer if the first argument is greater + than the second argument. + + For example, the following function can be used to sort doubles + into ascending numerical order. + + int + compare_doubles (const double * a, const double * b) + { + if (*a > *b) + return 1; + else if (*a < *b) + return -1; + else + return 0; + } + + The appropriate function call to perform the sort is: + + gsl_heapsort (array, count, sizeof(double), compare_doubles); + + Note that unlike ‘qsort()’ the heapsort algorithm cannot be made + into a stable sort by pointer arithmetic. The trick of comparing + pointers for equal elements in the comparison function does not + work for the heapsort algorithm. The heapsort algorithm performs + an internal rearrangement of the data which destroys its initial + ordering. + + -- Function: int gsl_heapsort_index (size_t * p, const void * array, + size_t count, size_t size, gsl_comparison_fn_t compare) + + This function indirectly sorts the ‘count’ elements of the array + ‘array’, each of size ‘size’, into ascending order using the + comparison function ‘compare’. The resulting permutation is stored + in ‘p’, an array of length ‘n’. The elements of ‘p’ give the index + of the array element which would have been stored in that position + if the array had been sorted in place. The first element of ‘p’ + gives the index of the least element in ‘array’, and the last + element of ‘p’ gives the index of the greatest element in ‘array’. + The array itself is not changed. + + +File: gsl-ref.info, Node: Sorting vectors, Next: Selecting the k smallest or largest elements, Prev: Sorting objects, Up: Sorting + +12.2 Sorting vectors +==================== + +The following functions will sort the elements of an array or vector, +either directly or indirectly. They are defined for all real and +integer types using the normal suffix rules. For example, the ‘float’ +versions of the array functions are ‘gsl_sort_float()’ and +‘gsl_sort_float_index()’. The corresponding vector functions are +‘gsl_sort_vector_float()’ and ‘gsl_sort_vector_float_index()’. The +prototypes are available in the header files ‘gsl_sort_float.h’ +‘gsl_sort_vector_float.h’. The complete set of prototypes can be +included using the header files ‘gsl_sort.h’ and ‘gsl_sort_vector.h’. + +There are no functions for sorting complex arrays or vectors, since the +ordering of complex numbers is not uniquely defined. To sort a complex +vector by magnitude compute a real vector containing the magnitudes of +the complex elements, and sort this vector indirectly. The resulting +index gives the appropriate ordering of the original complex vector. + + -- Function: void gsl_sort (double * data, const size_t stride, + size_t n) + + This function sorts the ‘n’ elements of the array ‘data’ with + stride ‘stride’ into ascending numerical order. + + -- Function: void gsl_sort2 (double * data1, const size_t stride1, + double * data2, const size_t stride2, size_t n) + + This function sorts the ‘n’ elements of the array ‘data1’ with + stride ‘stride1’ into ascending numerical order, while making the + same rearrangement of the array ‘data2’ with stride ‘stride2’, also + of size ‘n’. + + -- Function: void gsl_sort_vector (gsl_vector * v) + + This function sorts the elements of the vector ‘v’ into ascending + numerical order. + + -- Function: void gsl_sort_vector2 (gsl_vector * v1, gsl_vector * v2) + + This function sorts the elements of the vector ‘v1’ into ascending + numerical order, while making the same rearrangement of the vector + ‘v2’. + + -- Function: void gsl_sort_index (size_t * p, const double * data, + size_t stride, size_t n) + + This function indirectly sorts the ‘n’ elements of the array ‘data’ + with stride ‘stride’ into ascending order, storing the resulting + permutation in ‘p’. The array ‘p’ must be allocated with a + sufficient length to store the ‘n’ elements of the permutation. + The elements of ‘p’ give the index of the array element which would + have been stored in that position if the array had been sorted in + place. The array ‘data’ is not changed. + + -- Function: int gsl_sort_vector_index (gsl_permutation * p, const + gsl_vector * v) + + This function indirectly sorts the elements of the vector ‘v’ into + ascending order, storing the resulting permutation in ‘p’. The + elements of ‘p’ give the index of the vector element which would + have been stored in that position if the vector had been sorted in + place. The first element of ‘p’ gives the index of the least + element in ‘v’, and the last element of ‘p’ gives the index of the + greatest element in ‘v’. The vector ‘v’ is not changed. + + +File: gsl-ref.info, Node: Selecting the k smallest or largest elements, Next: Computing the rank, Prev: Sorting vectors, Up: Sorting + +12.3 Selecting the k smallest or largest elements +================================================= + +The functions described in this section select the k smallest or largest +elements of a data set of size N. The routines use an O(kN) direct +insertion algorithm which is suited to subsets that are small compared +with the total size of the dataset. For example, the routines are +useful for selecting the 10 largest values from one million data points, +but not for selecting the largest 100,000 values. If the subset is a +significant part of the total dataset it may be faster to sort all the +elements of the dataset directly with an O(N \log N) algorithm and +obtain the smallest or largest values that way. + + -- Function: int gsl_sort_smallest (double * dest, size_t k, const + double * src, size_t stride, size_t n) + + This function copies the ‘k’ smallest elements of the array ‘src’, + of size ‘n’ and stride ‘stride’, in ascending numerical order into + the array ‘dest’. The size ‘k’ of the subset must be less than or + equal to ‘n’. The data ‘src’ is not modified by this operation. + + -- Function: int gsl_sort_largest (double * dest, size_t k, const + double * src, size_t stride, size_t n) + + This function copies the ‘k’ largest elements of the array ‘src’, + of size ‘n’ and stride ‘stride’, in descending numerical order into + the array ‘dest’. ‘k’ must be less than or equal to ‘n’. The data + ‘src’ is not modified by this operation. + + -- Function: int gsl_sort_vector_smallest (double * dest, size_t k, + const gsl_vector * v) + -- Function: int gsl_sort_vector_largest (double * dest, size_t k, + const gsl_vector * v) + + These functions copy the ‘k’ smallest or largest elements of the + vector ‘v’ into the array ‘dest’. ‘k’ must be less than or equal + to the length of the vector ‘v’. + +The following functions find the indices of the k smallest or largest +elements of a dataset. + + -- Function: int gsl_sort_smallest_index (size_t * p, size_t k, const + double * src, size_t stride, size_t n) + + This function stores the indices of the ‘k’ smallest elements of + the array ‘src’, of size ‘n’ and stride ‘stride’, in the array ‘p’. + The indices are chosen so that the corresponding data is in + ascending numerical order. ‘k’ must be less than or equal to ‘n’. + The data ‘src’ is not modified by this operation. + + -- Function: int gsl_sort_largest_index (size_t * p, size_t k, const + double * src, size_t stride, size_t n) + + This function stores the indices of the ‘k’ largest elements of the + array ‘src’, of size ‘n’ and stride ‘stride’, in the array ‘p’. + The indices are chosen so that the corresponding data is in + descending numerical order. ‘k’ must be less than or equal to ‘n’. + The data ‘src’ is not modified by this operation. + + -- Function: int gsl_sort_vector_smallest_index (size_t * p, size_t k, + const gsl_vector * v) + -- Function: int gsl_sort_vector_largest_index (size_t * p, size_t k, + const gsl_vector * v) + + These functions store the indices of the ‘k’ smallest or largest + elements of the vector ‘v’ in the array ‘p’. ‘k’ must be less than + or equal to the length of the vector ‘v’. + + +File: gsl-ref.info, Node: Computing the rank, Next: Examples<7>, Prev: Selecting the k smallest or largest elements, Up: Sorting + +12.4 Computing the rank +======================= + +The `rank' of an element is its order in the sorted data. The rank is +the inverse of the index permutation, p. It can be computed using the +following algorithm: + + for (i = 0; i < p->size; i++) + { + size_t pi = p->data[i]; + rank->data[pi] = i; + } + +This can be computed directly from the function +‘gsl_permutation_inverse(rank,p)’. + +The following function will print the rank of each element of the vector +v: + + void + print_rank (gsl_vector * v) + { + size_t i; + size_t n = v->size; + gsl_permutation * perm = gsl_permutation_alloc(n); + gsl_permutation * rank = gsl_permutation_alloc(n); + + gsl_sort_vector_index (perm, v); + gsl_permutation_inverse (rank, perm); + + for (i = 0; i < n; i++) + { + double vi = gsl_vector_get(v, i); + printf ("element = %d, value = %g, rank = %d\n", + i, vi, rank->data[i]); + } + + gsl_permutation_free (perm); + gsl_permutation_free (rank); + } + + +File: gsl-ref.info, Node: Examples<7>, Next: References and Further Reading<7>, Prev: Computing the rank, Up: Sorting + +12.5 Examples +============= + +The following example shows how to use the permutation p to print the +elements of the vector v in ascending order: + + gsl_sort_vector_index (p, v); + + for (i = 0; i < v->size; i++) + { + double vpi = gsl_vector_get (v, p->data[i]); + printf ("order = %d, value = %g\n", i, vpi); + } + +The next example uses the function *note gsl_sort_smallest(): 461. to +select the 5 smallest numbers from 100000 uniform random variates stored +in an array, + + #include + #include + + int + main (void) + { + const gsl_rng_type * T; + gsl_rng * r; + + size_t i, k = 5, N = 100000; + + double * x = malloc (N * sizeof(double)); + double * small = malloc (k * sizeof(double)); + + gsl_rng_env_setup(); + + T = gsl_rng_default; + r = gsl_rng_alloc (T); + + for (i = 0; i < N; i++) + { + x[i] = gsl_rng_uniform(r); + } + + gsl_sort_smallest (small, k, x, 1, N); + + printf ("%zu smallest values from %zu\n", k, N); + + for (i = 0; i < k; i++) + { + printf ("%zu: %.18f\n", i, small[i]); + } + + free (x); + free (small); + gsl_rng_free (r); + return 0; + } + +The output lists the 5 smallest values, in ascending order, + + 5 smallest values from 100000 + 0: 0.000003489200025797 + 1: 0.000008199829608202 + 2: 0.000008953968062997 + 3: 0.000010712770745158 + 4: 0.000033531803637743 + + +File: gsl-ref.info, Node: References and Further Reading<7>, Prev: Examples<7>, Up: Sorting + +12.6 References and Further Reading +=================================== + +The subject of sorting is covered extensively in the following, + + * Donald E. Knuth, The Art of Computer Programming: Sorting and + Searching (Vol 3, 3rd Ed, 1997), Addison-Wesley, ISBN 0201896850. + +The Heapsort algorithm is described in the following book, + + * Robert Sedgewick, Algorithms in C, Addison-Wesley, ISBN 0201514257. + + +File: gsl-ref.info, Node: BLAS Support, Next: Linear Algebra, Prev: Sorting, Up: Top + +13 BLAS Support +*************** + +The Basic Linear Algebra Subprograms (BLAS) define a set of fundamental +operations on vectors and matrices which can be used to create optimized +higher-level linear algebra functionality. + +The library provides a low-level layer which corresponds directly to the +C-language BLAS standard, referred to here as “CBLAS”, and a +higher-level interface for operations on GSL vectors and matrices. +Users who are interested in simple operations on GSL vector and matrix +objects should use the high-level layer described in this chapter. The +functions are declared in the file ‘gsl_blas.h’ and should satisfy the +needs of most users. + +Note that GSL matrices are implemented using dense-storage so the +interface only includes the corresponding dense-storage BLAS functions. +The full BLAS functionality for band-format and packed-format matrices +is available through the low-level CBLAS interface. Similarly, GSL +vectors are restricted to positive strides, whereas the low-level CBLAS +interface supports negative strides as specified in the BLAS standard +(1). + +The interface for the ‘gsl_cblas’ layer is specified in the file +‘gsl_cblas.h’. This interface corresponds to the BLAS Technical Forum’s +standard for the C interface to legacy BLAS implementations. Users who +have access to other conforming CBLAS implementations can use these in +place of the version provided by the library. Note that users who have +only a Fortran BLAS library can use a CBLAS conformant wrapper to +convert it into a CBLAS library. A reference CBLAS wrapper for legacy +Fortran implementations exists as part of the CBLAS standard and can be +obtained from Netlib. The complete set of CBLAS functions is listed in +an *note appendix: 46e. + +There are three levels of BLAS operations, + +`Level 1' Vector operations, e.g. y = \alpha x + y + + +`Level 2' Matrix-vector operations, e.g. y = \alpha A x + \beta y + + +`Level 3' Matrix-matrix operations, e.g. C = \alpha A B + C + + +Each routine has a name which specifies the operation, the type of +matrices involved and their precisions. Some of the most common +operations and their names are given below, + +`DOT' scalar product, x^T y + + +`AXPY' vector sum, \alpha x + y + + +`MV' matrix-vector product, A x + + +`SV' matrix-vector solve, inv(A) x + + +`MM' matrix-matrix product, A B + + +`SM' matrix-matrix solve, inv(A) B + + +The types of matrices are, + +`GE' general + + +`GB' general band + + +`SY' symmetric + + +`SB' symmetric band + + +`SP' symmetric packed + + +`HE' hermitian + + +`HB' hermitian band + + +`HP' hermitian packed + + +`TR' triangular + + +`TB' triangular band + + +`TP' triangular packed + + +Each operation is defined for four precisions, + +`S' single real + + +`D' double real + + +`C' single complex + + +`Z' double complex + + +Thus, for example, the name SGEMM stands for “single-precision general +matrix-matrix multiply” and ZGEMM stands for “double-precision complex +matrix-matrix multiply”. + +Note that the vector and matrix arguments to BLAS functions must not be +aliased, as the results are undefined when the underlying arrays overlap +(*note Aliasing of arrays: 20.). + +* Menu: + +* GSL BLAS Interface:: +* Examples: Examples<8>. +* References and Further Reading: References and Further Reading<8>. + + ---------- Footnotes ---------- + + (1) In the low-level CBLAS interface, a negative stride accesses the +vector elements in reverse order, i.e. the i-th element is given by +(N-i)*|incx| for incx < 0. + + +File: gsl-ref.info, Node: GSL BLAS Interface, Next: Examples<8>, Up: BLAS Support + +13.1 GSL BLAS Interface +======================= + +GSL provides dense vector and matrix objects, based on the relevant +built-in types. The library provides an interface to the BLAS +operations which apply to these objects. The interface to this +functionality is given in the file ‘gsl_blas.h’. + +* Menu: + +* Level 1:: +* Level 2:: +* Level 3:: + + +File: gsl-ref.info, Node: Level 1, Next: Level 2, Up: GSL BLAS Interface + +13.1.1 Level 1 +-------------- + + -- Function: int gsl_blas_sdsdot (float alpha, const gsl_vector_float + * x, const gsl_vector_float * y, float * result) + + This function computes the sum \alpha + x^T y for the vectors ‘x’ + and ‘y’, returning the result in ‘result’. + + -- Function: int gsl_blas_sdot (const gsl_vector_float * x, const + gsl_vector_float * y, float * result) + -- Function: int gsl_blas_dsdot (const gsl_vector_float * x, const + gsl_vector_float * y, double * result) + -- Function: int gsl_blas_ddot (const gsl_vector * x, const gsl_vector + * y, double * result) + + These functions compute the scalar product x^T y for the vectors + ‘x’ and ‘y’, returning the result in ‘result’. + + -- Function: int gsl_blas_cdotu (const gsl_vector_complex_float * x, + const gsl_vector_complex_float * y, gsl_complex_float * dotu) + -- Function: int gsl_blas_zdotu (const gsl_vector_complex * x, const + gsl_vector_complex * y, gsl_complex * dotu) + + These functions compute the complex scalar product x^T y for the + vectors ‘x’ and ‘y’, returning the result in ‘dotu’ + + -- Function: int gsl_blas_cdotc (const gsl_vector_complex_float * x, + const gsl_vector_complex_float * y, gsl_complex_float * dotc) + -- Function: int gsl_blas_zdotc (const gsl_vector_complex * x, const + gsl_vector_complex * y, gsl_complex * dotc) + + These functions compute the complex conjugate scalar product x^H y + for the vectors ‘x’ and ‘y’, returning the result in ‘dotc’ + + -- Function: float gsl_blas_snrm2 (const gsl_vector_float * x) + -- Function: double gsl_blas_dnrm2 (const gsl_vector * x) + + These functions compute the Euclidean norm ||x||_2 = \sqrt{\sum + x_i^2} of the vector ‘x’. + + -- Function: float gsl_blas_scnrm2 (const gsl_vector_complex_float * x) + -- Function: double gsl_blas_dznrm2 (const gsl_vector_complex * x) + + These functions compute the Euclidean norm of the complex vector + ‘x’, + + ||x||_2 = \sqrt{\sum (\Re(x_i)^2 + \Im(x_i)^2)}. + + -- Function: float gsl_blas_sasum (const gsl_vector_float * x) + -- Function: double gsl_blas_dasum (const gsl_vector * x) + + These functions compute the absolute sum \sum |x_i| of the elements + of the vector ‘x’. + + -- Function: float gsl_blas_scasum (const gsl_vector_complex_float * x) + -- Function: double gsl_blas_dzasum (const gsl_vector_complex * x) + + These functions compute the sum of the magnitudes of the real and + imaginary parts of the complex vector ‘x’, \sum \left( |\Re(x_i)| + + |\Im(x_i)| \right). + + -- Function: CBLAS_INDEX_t gsl_blas_isamax (const gsl_vector_float * x) + -- Function: CBLAS_INDEX_t gsl_blas_idamax (const gsl_vector * x) + -- Function: CBLAS_INDEX_t gsl_blas_icamax (const + gsl_vector_complex_float * x) + -- Function: CBLAS_INDEX_t gsl_blas_izamax (const gsl_vector_complex + * x) + + These functions return the index of the largest element of the + vector ‘x’. The largest element is determined by its absolute + magnitude for real vectors and by the sum of the magnitudes of the + real and imaginary parts |\Re(x_i)| + |\Im(x_i)| for complex + vectors. If the largest value occurs several times then the index + of the first occurrence is returned. + + -- Function: int gsl_blas_sswap (gsl_vector_float * x, gsl_vector_float + * y) + -- Function: int gsl_blas_dswap (gsl_vector * x, gsl_vector * y) + -- Function: int gsl_blas_cswap (gsl_vector_complex_float * x, + gsl_vector_complex_float * y) + -- Function: int gsl_blas_zswap (gsl_vector_complex * x, + gsl_vector_complex * y) + + These functions exchange the elements of the vectors ‘x’ and ‘y’. + + -- Function: int gsl_blas_scopy (const gsl_vector_float * x, + gsl_vector_float * y) + -- Function: int gsl_blas_dcopy (const gsl_vector * x, gsl_vector * y) + -- Function: int gsl_blas_ccopy (const gsl_vector_complex_float * x, + gsl_vector_complex_float * y) + -- Function: int gsl_blas_zcopy (const gsl_vector_complex * x, + gsl_vector_complex * y) + + These functions copy the elements of the vector ‘x’ into the vector + ‘y’. + + -- Function: int gsl_blas_saxpy (float alpha, const gsl_vector_float + * x, gsl_vector_float * y) + -- Function: int gsl_blas_daxpy (double alpha, const gsl_vector * x, + gsl_vector * y) + -- Function: int gsl_blas_caxpy (const gsl_complex_float alpha, const + gsl_vector_complex_float * x, gsl_vector_complex_float * y) + -- Function: int gsl_blas_zaxpy (const gsl_complex alpha, const + gsl_vector_complex * x, gsl_vector_complex * y) + + These functions compute the sum y = \alpha x + y for the vectors + ‘x’ and ‘y’. + + -- Function: void gsl_blas_sscal (float alpha, gsl_vector_float * x) + -- Function: void gsl_blas_dscal (double alpha, gsl_vector * x) + -- Function: void gsl_blas_cscal (const gsl_complex_float alpha, + gsl_vector_complex_float * x) + -- Function: void gsl_blas_zscal (const gsl_complex alpha, + gsl_vector_complex * x) + -- Function: void gsl_blas_csscal (float alpha, + gsl_vector_complex_float * x) + -- Function: void gsl_blas_zdscal (double alpha, gsl_vector_complex + * x) + + These functions rescale the vector ‘x’ by the multiplicative factor + *note alpha: 497. + + -- Function: int gsl_blas_srotg (float a[], float b[], float c[], + float s[]) + -- Function: int gsl_blas_drotg (double a[], double b[], double c[], + double s[]) + + These functions compute a Givens rotation (c,s) which zeroes the + vector (a,b), + + [ c s ] [ a ] = [ r ] + [ -s c ] [ b ] [ 0 ] + + The variables ‘a’ and ‘b’ are overwritten by the routine. + + -- Function: int gsl_blas_srot (gsl_vector_float * x, gsl_vector_float + * y, float c, float s) + -- Function: int gsl_blas_drot (gsl_vector * x, gsl_vector * y, const + double c, const double s) + + These functions apply a Givens rotation (x', y') = (c x + s y, -s x + + c y) to the vectors ‘x’, ‘y’. + + -- Function: int gsl_blas_srotmg (float d1[], float d2[], float b1[], + float b2, float P[]) + -- Function: int gsl_blas_drotmg (double d1[], double d2[], + double b1[], double b2, double P[]) + + These functions compute a modified Givens transformation. The + modified Givens transformation is defined in the original Level-1 + BLAS specification, given in the references. + + -- Function: int gsl_blas_srotm (gsl_vector_float * x, gsl_vector_float + * y, const float P[]) + -- Function: int gsl_blas_drotm (gsl_vector * x, gsl_vector * y, const + double P[]) + + These functions apply a modified Givens transformation. + + +File: gsl-ref.info, Node: Level 2, Next: Level 3, Prev: Level 1, Up: GSL BLAS Interface + +13.1.2 Level 2 +-------------- + + -- Function: int gsl_blas_sgemv (CBLAS_TRANSPOSE_t TransA, float alpha, + const gsl_matrix_float * A, const gsl_vector_float * x, + float beta, gsl_vector_float * y) + -- Function: int gsl_blas_dgemv (CBLAS_TRANSPOSE_t TransA, + double alpha, const gsl_matrix * A, const gsl_vector * x, + double beta, gsl_vector * y) + -- Function: int gsl_blas_cgemv (CBLAS_TRANSPOSE_t TransA, const + gsl_complex_float alpha, const gsl_matrix_complex_float * A, + const gsl_vector_complex_float * x, const + gsl_complex_float beta, gsl_vector_complex_float * y) + -- Function: int gsl_blas_zgemv (CBLAS_TRANSPOSE_t TransA, const + gsl_complex alpha, const gsl_matrix_complex * A, const + gsl_vector_complex * x, const gsl_complex beta, + gsl_vector_complex * y) + + These functions compute the matrix-vector product and sum y = + \alpha op(A) x + \beta y, where op(A) = A, A^T, A^H for ‘TransA’ = + ‘CblasNoTrans’, ‘CblasTrans’, ‘CblasConjTrans’. + + -- Function: int gsl_blas_strmv (CBLAS_UPLO_t Uplo, + CBLAS_TRANSPOSE_t TransA, CBLAS_DIAG_t Diag, const + gsl_matrix_float * A, gsl_vector_float * x) + -- Function: int gsl_blas_dtrmv (CBLAS_UPLO_t Uplo, + CBLAS_TRANSPOSE_t TransA, CBLAS_DIAG_t Diag, const gsl_matrix + * A, gsl_vector * x) + -- Function: int gsl_blas_ctrmv (CBLAS_UPLO_t Uplo, + CBLAS_TRANSPOSE_t TransA, CBLAS_DIAG_t Diag, const + gsl_matrix_complex_float * A, gsl_vector_complex_float * x) + -- Function: int gsl_blas_ztrmv (CBLAS_UPLO_t Uplo, + CBLAS_TRANSPOSE_t TransA, CBLAS_DIAG_t Diag, const + gsl_matrix_complex * A, gsl_vector_complex * x) + + These functions compute the matrix-vector product x = op(A) x for + the triangular matrix ‘A’, where op(A) = A, A^T, A^H for ‘TransA’ = + ‘CblasNoTrans’, ‘CblasTrans’, ‘CblasConjTrans’. When ‘Uplo’ is + ‘CblasUpper’ then the upper triangle of ‘A’ is used, and when + ‘Uplo’ is ‘CblasLower’ then the lower triangle of ‘A’ is used. If + ‘Diag’ is ‘CblasNonUnit’ then the diagonal of the matrix is used, + but if ‘Diag’ is ‘CblasUnit’ then the diagonal elements of the + matrix ‘A’ are taken as unity and are not referenced. + + -- Function: int gsl_blas_strsv (CBLAS_UPLO_t Uplo, + CBLAS_TRANSPOSE_t TransA, CBLAS_DIAG_t Diag, const + gsl_matrix_float * A, gsl_vector_float * x) + -- Function: int gsl_blas_dtrsv (CBLAS_UPLO_t Uplo, + CBLAS_TRANSPOSE_t TransA, CBLAS_DIAG_t Diag, const gsl_matrix + * A, gsl_vector * x) + -- Function: int gsl_blas_ctrsv (CBLAS_UPLO_t Uplo, + CBLAS_TRANSPOSE_t TransA, CBLAS_DIAG_t Diag, const + gsl_matrix_complex_float * A, gsl_vector_complex_float * x) + -- Function: int gsl_blas_ztrsv (CBLAS_UPLO_t Uplo, + CBLAS_TRANSPOSE_t TransA, CBLAS_DIAG_t Diag, const + gsl_matrix_complex * A, gsl_vector_complex * x) + + These functions compute inv(op(A)) x for ‘x’, where op(A) = A, A^T, + A^H for ‘TransA’ = ‘CblasNoTrans’, ‘CblasTrans’, ‘CblasConjTrans’. + When ‘Uplo’ is ‘CblasUpper’ then the upper triangle of ‘A’ is used, + and when ‘Uplo’ is ‘CblasLower’ then the lower triangle of ‘A’ is + used. If ‘Diag’ is ‘CblasNonUnit’ then the diagonal of the matrix + is used, but if ‘Diag’ is ‘CblasUnit’ then the diagonal elements of + the matrix ‘A’ are taken as unity and are not referenced. + + -- Function: int gsl_blas_ssymv (CBLAS_UPLO_t Uplo, float alpha, const + gsl_matrix_float * A, const gsl_vector_float * x, float beta, + gsl_vector_float * y) + -- Function: int gsl_blas_dsymv (CBLAS_UPLO_t Uplo, double alpha, const + gsl_matrix * A, const gsl_vector * x, double beta, gsl_vector + * y) + + These functions compute the matrix-vector product and sum y = + \alpha A x + \beta y for the symmetric matrix ‘A’. Since the + matrix ‘A’ is symmetric only its upper half or lower half need to + be stored. When ‘Uplo’ is ‘CblasUpper’ then the upper triangle and + diagonal of ‘A’ are used, and when ‘Uplo’ is ‘CblasLower’ then the + lower triangle and diagonal of ‘A’ are used. + + -- Function: int gsl_blas_chemv (CBLAS_UPLO_t Uplo, const + gsl_complex_float alpha, const gsl_matrix_complex_float * A, + const gsl_vector_complex_float * x, const + gsl_complex_float beta, gsl_vector_complex_float * y) + -- Function: int gsl_blas_zhemv (CBLAS_UPLO_t Uplo, const + gsl_complex alpha, const gsl_matrix_complex * A, const + gsl_vector_complex * x, const gsl_complex beta, + gsl_vector_complex * y) + + These functions compute the matrix-vector product and sum y = + \alpha A x + \beta y for the hermitian matrix ‘A’. Since the + matrix ‘A’ is hermitian only its upper half or lower half need to + be stored. When ‘Uplo’ is ‘CblasUpper’ then the upper triangle and + diagonal of ‘A’ are used, and when ‘Uplo’ is ‘CblasLower’ then the + lower triangle and diagonal of ‘A’ are used. The imaginary + elements of the diagonal are automatically assumed to be zero and + are not referenced. + + -- Function: int gsl_blas_sger (float alpha, const gsl_vector_float + * x, const gsl_vector_float * y, gsl_matrix_float * A) + -- Function: int gsl_blas_dger (double alpha, const gsl_vector * x, + const gsl_vector * y, gsl_matrix * A) + -- Function: int gsl_blas_cgeru (const gsl_complex_float alpha, const + gsl_vector_complex_float * x, const gsl_vector_complex_float + * y, gsl_matrix_complex_float * A) + -- Function: int gsl_blas_zgeru (const gsl_complex alpha, const + gsl_vector_complex * x, const gsl_vector_complex * y, + gsl_matrix_complex * A) + + These functions compute the rank-1 update A = \alpha x y^T + A of + the matrix ‘A’. + + -- Function: int gsl_blas_cgerc (const gsl_complex_float alpha, const + gsl_vector_complex_float * x, const gsl_vector_complex_float + * y, gsl_matrix_complex_float * A) + -- Function: int gsl_blas_zgerc (const gsl_complex alpha, const + gsl_vector_complex * x, const gsl_vector_complex * y, + gsl_matrix_complex * A) + + These functions compute the conjugate rank-1 update A = \alpha x + y^H + A of the matrix ‘A’. + + -- Function: int gsl_blas_ssyr (CBLAS_UPLO_t Uplo, float alpha, const + gsl_vector_float * x, gsl_matrix_float * A) + -- Function: int gsl_blas_dsyr (CBLAS_UPLO_t Uplo, double alpha, const + gsl_vector * x, gsl_matrix * A) + + These functions compute the symmetric rank-1 update A = \alpha x + x^T + A of the symmetric matrix ‘A’. Since the matrix ‘A’ is + symmetric only its upper half or lower half need to be stored. + When ‘Uplo’ is ‘CblasUpper’ then the upper triangle and diagonal of + ‘A’ are used, and when ‘Uplo’ is ‘CblasLower’ then the lower + triangle and diagonal of ‘A’ are used. + + -- Function: int gsl_blas_cher (CBLAS_UPLO_t Uplo, float alpha, const + gsl_vector_complex_float * x, gsl_matrix_complex_float * A) + -- Function: int gsl_blas_zher (CBLAS_UPLO_t Uplo, double alpha, const + gsl_vector_complex * x, gsl_matrix_complex * A) + + These functions compute the hermitian rank-1 update A = \alpha x + x^H + A of the hermitian matrix ‘A’. Since the matrix ‘A’ is + hermitian only its upper half or lower half need to be stored. + When ‘Uplo’ is ‘CblasUpper’ then the upper triangle and diagonal of + ‘A’ are used, and when ‘Uplo’ is ‘CblasLower’ then the lower + triangle and diagonal of ‘A’ are used. The imaginary elements of + the diagonal are automatically set to zero. + + -- Function: int gsl_blas_ssyr2 (CBLAS_UPLO_t Uplo, float alpha, const + gsl_vector_float * x, const gsl_vector_float * y, + gsl_matrix_float * A) + -- Function: int gsl_blas_dsyr2 (CBLAS_UPLO_t Uplo, double alpha, const + gsl_vector * x, const gsl_vector * y, gsl_matrix * A) + + These functions compute the symmetric rank-2 update A = \alpha x + y^T + \alpha y x^T + A of the symmetric matrix ‘A’. Since the + matrix ‘A’ is symmetric only its upper half or lower half need to + be stored. When ‘Uplo’ is ‘CblasUpper’ then the upper triangle and + diagonal of ‘A’ are used, and when ‘Uplo’ is ‘CblasLower’ then the + lower triangle and diagonal of ‘A’ are used. + + -- Function: int gsl_blas_cher2 (CBLAS_UPLO_t Uplo, const + gsl_complex_float alpha, const gsl_vector_complex_float * x, + const gsl_vector_complex_float * y, gsl_matrix_complex_float + * A) + -- Function: int gsl_blas_zher2 (CBLAS_UPLO_t Uplo, const + gsl_complex alpha, const gsl_vector_complex * x, const + gsl_vector_complex * y, gsl_matrix_complex * A) + + These functions compute the hermitian rank-2 update A = \alpha x + y^H + \alpha^* y x^H + A of the hermitian matrix ‘A’. Since the + matrix ‘A’ is hermitian only its upper half or lower half need to + be stored. When ‘Uplo’ is ‘CblasUpper’ then the upper triangle and + diagonal of ‘A’ are used, and when ‘Uplo’ is ‘CblasLower’ then the + lower triangle and diagonal of ‘A’ are used. The imaginary + elements of the diagonal are automatically set to zero. + + +File: gsl-ref.info, Node: Level 3, Prev: Level 2, Up: GSL BLAS Interface + +13.1.3 Level 3 +-------------- + + -- Function: int gsl_blas_sgemm (CBLAS_TRANSPOSE_t TransA, + CBLAS_TRANSPOSE_t TransB, float alpha, const gsl_matrix_float + * A, const gsl_matrix_float * B, float beta, gsl_matrix_float + * C) + -- Function: int gsl_blas_dgemm (CBLAS_TRANSPOSE_t TransA, + CBLAS_TRANSPOSE_t TransB, double alpha, const gsl_matrix * A, + const gsl_matrix * B, double beta, gsl_matrix * C) + -- Function: int gsl_blas_cgemm (CBLAS_TRANSPOSE_t TransA, + CBLAS_TRANSPOSE_t TransB, const gsl_complex_float alpha, const + gsl_matrix_complex_float * A, const gsl_matrix_complex_float + * B, const gsl_complex_float beta, gsl_matrix_complex_float + * C) + -- Function: int gsl_blas_zgemm (CBLAS_TRANSPOSE_t TransA, + CBLAS_TRANSPOSE_t TransB, const gsl_complex alpha, const + gsl_matrix_complex * A, const gsl_matrix_complex * B, const + gsl_complex beta, gsl_matrix_complex * C) + + These functions compute the matrix-matrix product and sum C = + \alpha op(A) op(B) + \beta C where op(A) = A, A^T, A^H for ‘TransA’ + = ‘CblasNoTrans’, ‘CblasTrans’, ‘CblasConjTrans’ and similarly for + the parameter ‘TransB’. + + -- Function: int gsl_blas_ssymm (CBLAS_SIDE_t Side, CBLAS_UPLO_t Uplo, + float alpha, const gsl_matrix_float * A, const + gsl_matrix_float * B, float beta, gsl_matrix_float * C) + -- Function: int gsl_blas_dsymm (CBLAS_SIDE_t Side, CBLAS_UPLO_t Uplo, + double alpha, const gsl_matrix * A, const gsl_matrix * B, + double beta, gsl_matrix * C) + -- Function: int gsl_blas_csymm (CBLAS_SIDE_t Side, CBLAS_UPLO_t Uplo, + const gsl_complex_float alpha, const gsl_matrix_complex_float + * A, const gsl_matrix_complex_float * B, const + gsl_complex_float beta, gsl_matrix_complex_float * C) + -- Function: int gsl_blas_zsymm (CBLAS_SIDE_t Side, CBLAS_UPLO_t Uplo, + const gsl_complex alpha, const gsl_matrix_complex * A, const + gsl_matrix_complex * B, const gsl_complex beta, + gsl_matrix_complex * C) + + These functions compute the matrix-matrix product and sum C = + \alpha A B + \beta C for ‘Side’ is ‘CblasLeft’ and C = \alpha B A + + \beta C for ‘Side’ is ‘CblasRight’, where the matrix ‘A’ is + symmetric. When ‘Uplo’ is ‘CblasUpper’ then the upper triangle and + diagonal of ‘A’ are used, and when ‘Uplo’ is ‘CblasLower’ then the + lower triangle and diagonal of ‘A’ are used. + + -- Function: int gsl_blas_chemm (CBLAS_SIDE_t Side, CBLAS_UPLO_t Uplo, + const gsl_complex_float alpha, const gsl_matrix_complex_float + * A, const gsl_matrix_complex_float * B, const + gsl_complex_float beta, gsl_matrix_complex_float * C) + -- Function: int gsl_blas_zhemm (CBLAS_SIDE_t Side, CBLAS_UPLO_t Uplo, + const gsl_complex alpha, const gsl_matrix_complex * A, const + gsl_matrix_complex * B, const gsl_complex beta, + gsl_matrix_complex * C) + + These functions compute the matrix-matrix product and sum C = + \alpha A B + \beta C for ‘Side’ is ‘CblasLeft’ and C = \alpha B A + + \beta C for ‘Side’ is ‘CblasRight’, where the matrix ‘A’ is + hermitian. When ‘Uplo’ is ‘CblasUpper’ then the upper triangle and + diagonal of ‘A’ are used, and when ‘Uplo’ is ‘CblasLower’ then the + lower triangle and diagonal of ‘A’ are used. The imaginary + elements of the diagonal are automatically set to zero. + + -- Function: int gsl_blas_strmm (CBLAS_SIDE_t Side, CBLAS_UPLO_t Uplo, + CBLAS_TRANSPOSE_t TransA, CBLAS_DIAG_t Diag, float alpha, + const gsl_matrix_float * A, gsl_matrix_float * B) + -- Function: int gsl_blas_dtrmm (CBLAS_SIDE_t Side, CBLAS_UPLO_t Uplo, + CBLAS_TRANSPOSE_t TransA, CBLAS_DIAG_t Diag, double alpha, + const gsl_matrix * A, gsl_matrix * B) + -- Function: int gsl_blas_ctrmm (CBLAS_SIDE_t Side, CBLAS_UPLO_t Uplo, + CBLAS_TRANSPOSE_t TransA, CBLAS_DIAG_t Diag, const + gsl_complex_float alpha, const gsl_matrix_complex_float * A, + gsl_matrix_complex_float * B) + -- Function: int gsl_blas_ztrmm (CBLAS_SIDE_t Side, CBLAS_UPLO_t Uplo, + CBLAS_TRANSPOSE_t TransA, CBLAS_DIAG_t Diag, const + gsl_complex alpha, const gsl_matrix_complex * A, + gsl_matrix_complex * B) + + These functions compute the matrix-matrix product B = \alpha op(A) + B for ‘Side’ is ‘CblasLeft’ and B = \alpha B op(A) for ‘Side’ is + ‘CblasRight’. The matrix ‘A’ is triangular and op(A) = A, A^T, A^H + for ‘TransA’ = ‘CblasNoTrans’, ‘CblasTrans’, ‘CblasConjTrans’. + When ‘Uplo’ is ‘CblasUpper’ then the upper triangle of ‘A’ is used, + and when ‘Uplo’ is ‘CblasLower’ then the lower triangle of ‘A’ is + used. If ‘Diag’ is ‘CblasNonUnit’ then the diagonal of ‘A’ is + used, but if ‘Diag’ is ‘CblasUnit’ then the diagonal elements of + the matrix ‘A’ are taken as unity and are not referenced. + + -- Function: int gsl_blas_strsm (CBLAS_SIDE_t Side, CBLAS_UPLO_t Uplo, + CBLAS_TRANSPOSE_t TransA, CBLAS_DIAG_t Diag, float alpha, + const gsl_matrix_float * A, gsl_matrix_float * B) + -- Function: int gsl_blas_dtrsm (CBLAS_SIDE_t Side, CBLAS_UPLO_t Uplo, + CBLAS_TRANSPOSE_t TransA, CBLAS_DIAG_t Diag, double alpha, + const gsl_matrix * A, gsl_matrix * B) + -- Function: int gsl_blas_ctrsm (CBLAS_SIDE_t Side, CBLAS_UPLO_t Uplo, + CBLAS_TRANSPOSE_t TransA, CBLAS_DIAG_t Diag, const + gsl_complex_float alpha, const gsl_matrix_complex_float * A, + gsl_matrix_complex_float * B) + -- Function: int gsl_blas_ztrsm (CBLAS_SIDE_t Side, CBLAS_UPLO_t Uplo, + CBLAS_TRANSPOSE_t TransA, CBLAS_DIAG_t Diag, const + gsl_complex alpha, const gsl_matrix_complex * A, + gsl_matrix_complex * B) + + These functions compute the inverse-matrix matrix product B = + \alpha op(inv(A))B for ‘Side’ is ‘CblasLeft’ and B = \alpha B + op(inv(A)) for ‘Side’ is ‘CblasRight’. The matrix ‘A’ is + triangular and op(A) = A, A^T, A^H for ‘TransA’ = ‘CblasNoTrans’, + ‘CblasTrans’, ‘CblasConjTrans’. When ‘Uplo’ is ‘CblasUpper’ then + the upper triangle of ‘A’ is used, and when ‘Uplo’ is ‘CblasLower’ + then the lower triangle of ‘A’ is used. If ‘Diag’ is + ‘CblasNonUnit’ then the diagonal of ‘A’ is used, but if ‘Diag’ is + ‘CblasUnit’ then the diagonal elements of the matrix ‘A’ are taken + as unity and are not referenced. + + -- Function: int gsl_blas_ssyrk (CBLAS_UPLO_t Uplo, + CBLAS_TRANSPOSE_t Trans, float alpha, const gsl_matrix_float + * A, float beta, gsl_matrix_float * C) + -- Function: int gsl_blas_dsyrk (CBLAS_UPLO_t Uplo, + CBLAS_TRANSPOSE_t Trans, double alpha, const gsl_matrix * A, + double beta, gsl_matrix * C) + -- Function: int gsl_blas_csyrk (CBLAS_UPLO_t Uplo, + CBLAS_TRANSPOSE_t Trans, const gsl_complex_float alpha, const + gsl_matrix_complex_float * A, const gsl_complex_float beta, + gsl_matrix_complex_float * C) + -- Function: int gsl_blas_zsyrk (CBLAS_UPLO_t Uplo, + CBLAS_TRANSPOSE_t Trans, const gsl_complex alpha, const + gsl_matrix_complex * A, const gsl_complex beta, + gsl_matrix_complex * C) + + These functions compute a rank-k update of the symmetric matrix + ‘C’, C = \alpha A A^T + \beta C when ‘Trans’ is ‘CblasNoTrans’ and + C = \alpha A^T A + \beta C when ‘Trans’ is ‘CblasTrans’. Since the + matrix ‘C’ is symmetric only its upper half or lower half need to + be stored. When ‘Uplo’ is ‘CblasUpper’ then the upper triangle and + diagonal of ‘C’ are used, and when ‘Uplo’ is ‘CblasLower’ then the + lower triangle and diagonal of ‘C’ are used. + + -- Function: int gsl_blas_cherk (CBLAS_UPLO_t Uplo, + CBLAS_TRANSPOSE_t Trans, float alpha, const + gsl_matrix_complex_float * A, float beta, + gsl_matrix_complex_float * C) + -- Function: int gsl_blas_zherk (CBLAS_UPLO_t Uplo, + CBLAS_TRANSPOSE_t Trans, double alpha, const + gsl_matrix_complex * A, double beta, gsl_matrix_complex * C) + + These functions compute a rank-k update of the hermitian matrix + ‘C’, C = \alpha A A^H + \beta C when ‘Trans’ is ‘CblasNoTrans’ and + C = \alpha A^H A + \beta C when ‘Trans’ is ‘CblasConjTrans’. Since + the matrix ‘C’ is hermitian only its upper half or lower half need + to be stored. When ‘Uplo’ is ‘CblasUpper’ then the upper triangle + and diagonal of ‘C’ are used, and when ‘Uplo’ is ‘CblasLower’ then + the lower triangle and diagonal of ‘C’ are used. The imaginary + elements of the diagonal are automatically set to zero. + + -- Function: int gsl_blas_ssyr2k (CBLAS_UPLO_t Uplo, + CBLAS_TRANSPOSE_t Trans, float alpha, const gsl_matrix_float + * A, const gsl_matrix_float * B, float beta, gsl_matrix_float + * C) + -- Function: int gsl_blas_dsyr2k (CBLAS_UPLO_t Uplo, + CBLAS_TRANSPOSE_t Trans, double alpha, const gsl_matrix * A, + const gsl_matrix * B, double beta, gsl_matrix * C) + -- Function: int gsl_blas_csyr2k (CBLAS_UPLO_t Uplo, + CBLAS_TRANSPOSE_t Trans, const gsl_complex_float alpha, const + gsl_matrix_complex_float * A, const gsl_matrix_complex_float + * B, const gsl_complex_float beta, gsl_matrix_complex_float + * C) + -- Function: int gsl_blas_zsyr2k (CBLAS_UPLO_t Uplo, + CBLAS_TRANSPOSE_t Trans, const gsl_complex alpha, const + gsl_matrix_complex * A, const gsl_matrix_complex * B, const + gsl_complex beta, gsl_matrix_complex * C) + + These functions compute a rank-2k update of the symmetric matrix + ‘C’, C = \alpha A B^T + \alpha B A^T + \beta C when ‘Trans’ is + ‘CblasNoTrans’ and C = \alpha A^T B + \alpha B^T A + \beta C when + ‘Trans’ is ‘CblasTrans’. Since the matrix ‘C’ is symmetric only + its upper half or lower half need to be stored. When ‘Uplo’ is + ‘CblasUpper’ then the upper triangle and diagonal of ‘C’ are used, + and when ‘Uplo’ is ‘CblasLower’ then the lower triangle and + diagonal of ‘C’ are used. + + -- Function: int gsl_blas_cher2k (CBLAS_UPLO_t Uplo, + CBLAS_TRANSPOSE_t Trans, const gsl_complex_float alpha, const + gsl_matrix_complex_float * A, const gsl_matrix_complex_float + * B, float beta, gsl_matrix_complex_float * C) + -- Function: int gsl_blas_zher2k (CBLAS_UPLO_t Uplo, + CBLAS_TRANSPOSE_t Trans, const gsl_complex alpha, const + gsl_matrix_complex * A, const gsl_matrix_complex * B, + double beta, gsl_matrix_complex * C) + + These functions compute a rank-2k update of the hermitian matrix + ‘C’, C = \alpha A B^H + \alpha^* B A^H + \beta C when ‘Trans’ is + ‘CblasNoTrans’ and C = \alpha A^H B + \alpha^* B^H A + \beta C when + ‘Trans’ is ‘CblasConjTrans’. Since the matrix ‘C’ is hermitian + only its upper half or lower half need to be stored. When ‘Uplo’ + is ‘CblasUpper’ then the upper triangle and diagonal of ‘C’ are + used, and when ‘Uplo’ is ‘CblasLower’ then the lower triangle and + diagonal of ‘C’ are used. The imaginary elements of the diagonal + are automatically set to zero. + + +File: gsl-ref.info, Node: Examples<8>, Next: References and Further Reading<8>, Prev: GSL BLAS Interface, Up: BLAS Support + +13.2 Examples +============= + +The following program computes the product of two matrices using the +Level-3 BLAS function DGEMM, + + [ 0.11 0.12 0.13 ] [ 1011 1012 ] [ 367.76 368.12 ] + [ 0.21 0.22 0.23 ] [ 1021 1022 ] = [ 674.06 674.72 ] + [ 1031 1032 ] + +The matrices are stored in row major order, according to the C +convention for arrays. + + #include + #include + + int + main (void) + { + double a[] = { 0.11, 0.12, 0.13, + 0.21, 0.22, 0.23 }; + + double b[] = { 1011, 1012, + 1021, 1022, + 1031, 1032 }; + + double c[] = { 0.00, 0.00, + 0.00, 0.00 }; + + gsl_matrix_view A = gsl_matrix_view_array(a, 2, 3); + gsl_matrix_view B = gsl_matrix_view_array(b, 3, 2); + gsl_matrix_view C = gsl_matrix_view_array(c, 2, 2); + + /* Compute C = A B */ + + gsl_blas_dgemm (CblasNoTrans, CblasNoTrans, + 1.0, &A.matrix, &B.matrix, + 0.0, &C.matrix); + + printf ("[ %g, %g\n", c[0], c[1]); + printf (" %g, %g ]\n", c[2], c[3]); + + return 0; + } + +Here is the output from the program, + + [ 367.76, 368.12 + 674.06, 674.72 ] + + +File: gsl-ref.info, Node: References and Further Reading<8>, Prev: Examples<8>, Up: BLAS Support + +13.3 References and Further Reading +=================================== + +Information on the BLAS standards, including both the legacy and updated +interface standards, is available online from the BLAS Homepage and BLAS +Technical Forum web-site. + + * BLAS Homepage, ‘http://www.netlib.org/blas/’ + + * BLAS Technical Forum, ‘http://www.netlib.org/blas/blast-forum/’ + +The following papers contain the specifications for Level 1, Level 2 and +Level 3 BLAS. + + * C. Lawson, R. Hanson, D. Kincaid, F. Krogh, “Basic Linear Algebra + Subprograms for Fortran Usage”, ACM Transactions on Mathematical + Software, Vol.: 5 (1979), Pages 308–325. + + * J.J. Dongarra, J. DuCroz, S. Hammarling, R. Hanson, “An Extended + Set of Fortran Basic Linear Algebra Subprograms”, ACM Transactions + on Mathematical Software, Vol.: 14, No.: 1 (1988), Pages 1–32. + + * J.J. Dongarra, I. Duff, J. DuCroz, S. Hammarling, “A Set of Level 3 + Basic Linear Algebra Subprograms”, ACM Transactions on Mathematical + Software, Vol.: 16 (1990), Pages 1–28. + +Postscript versions of the latter two papers are available from +‘http://www.netlib.org/blas/’. A CBLAS wrapper for Fortran BLAS +libraries is available from the same location. + + +File: gsl-ref.info, Node: Linear Algebra, Next: Eigensystems, Prev: BLAS Support, Up: Top + +14 Linear Algebra +***************** + +This chapter describes functions for solving linear systems. The +library provides linear algebra operations which operate directly on the +*note gsl_vector: 35d. and *note gsl_matrix: 39e. objects. These +routines use the standard algorithms from Golub & Van Loan’s `Matrix +Computations' with Level-1 and Level-2 BLAS calls for efficiency. + +The functions described in this chapter are declared in the header file +‘gsl_linalg.h’. + +* Menu: + +* LU Decomposition:: +* QR Decomposition:: +* QR Decomposition with Column Pivoting:: +* Complete Orthogonal Decomposition:: +* Singular Value Decomposition:: +* Cholesky Decomposition:: +* Pivoted Cholesky Decomposition:: +* Modified Cholesky Decomposition:: +* Tridiagonal Decomposition of Real Symmetric Matrices:: +* Tridiagonal Decomposition of Hermitian Matrices:: +* Hessenberg Decomposition of Real Matrices:: +* Hessenberg-Triangular Decomposition of Real Matrices:: +* Bidiagonalization:: +* Givens Rotations:: +* Householder Transformations:: +* Householder solver for linear systems:: +* Tridiagonal Systems:: +* Triangular Systems:: +* Balancing:: +* Examples: Examples<9>. +* References and Further Reading: References and Further Reading<9>. + + +File: gsl-ref.info, Node: LU Decomposition, Next: QR Decomposition, Up: Linear Algebra + +14.1 LU Decomposition +===================== + +A general N-by-N square matrix A has an LU decomposition into upper and +lower triangular matrices, + + P A = L U + +where P is a permutation matrix, L is unit lower triangular matrix and U +is upper triangular matrix. For square matrices this decomposition can +be used to convert the linear system A x = b into a pair of triangular +systems (L y = P b, U x = y), which can be solved by forward and +back-substitution. Note that the LU decomposition is valid for singular +matrices. + + -- Function: int gsl_linalg_LU_decomp (gsl_matrix * A, gsl_permutation + * p, int * signum) + -- Function: int gsl_linalg_complex_LU_decomp (gsl_matrix_complex * A, + gsl_permutation * p, int * signum) + + These functions factorize the square matrix ‘A’ into the LU + decomposition PA = LU. On output the diagonal and upper triangular + part of the input matrix ‘A’ contain the matrix U. The lower + triangular part of the input matrix (excluding the diagonal) + contains L. The diagonal elements of L are unity, and are not + stored. + + The permutation matrix P is encoded in the permutation ‘p’ on + output. The j-th column of the matrix P is given by the k-th + column of the identity matrix, where k = p_j the j-th element of + the permutation vector. The sign of the permutation is given by + ‘signum’. It has the value (-1)^n, where n is the number of + interchanges in the permutation. + + The algorithm used in the decomposition is Gaussian Elimination + with partial pivoting (Golub & Van Loan, `Matrix Computations', + Algorithm 3.4.1). + + -- Function: int gsl_linalg_LU_solve (const gsl_matrix * LU, const + gsl_permutation * p, const gsl_vector * b, gsl_vector * x) + -- Function: int gsl_linalg_complex_LU_solve (const gsl_matrix_complex + * LU, const gsl_permutation * p, const gsl_vector_complex * b, + gsl_vector_complex * x) + + These functions solve the square system A x = b using the LU + decomposition of A into (‘LU’, ‘p’) given by *note + gsl_linalg_LU_decomp(): 4e4. or *note + gsl_linalg_complex_LU_decomp(): 4e5. as input. + + -- Function: int gsl_linalg_LU_svx (const gsl_matrix * LU, const + gsl_permutation * p, gsl_vector * x) + -- Function: int gsl_linalg_complex_LU_svx (const gsl_matrix_complex + * LU, const gsl_permutation * p, gsl_vector_complex * x) + + These functions solve the square system A x = b in-place using the + precomputed LU decomposition of A into (‘LU’, ‘p’). On input ‘x’ + should contain the right-hand side b, which is replaced by the + solution on output. + + -- Function: int gsl_linalg_LU_refine (const gsl_matrix * A, const + gsl_matrix * LU, const gsl_permutation * p, const gsl_vector + * b, gsl_vector * x, gsl_vector * work) + -- Function: int gsl_linalg_complex_LU_refine (const gsl_matrix_complex + * A, const gsl_matrix_complex * LU, const gsl_permutation * p, + const gsl_vector_complex * b, gsl_vector_complex * x, + gsl_vector_complex * work) + + These functions apply an iterative improvement to ‘x’, the solution + of A x = b, from the precomputed LU decomposition of A into (‘LU’, + ‘p’). Additional workspace of length ‘N’ is required in ‘work’. + + -- Function: int gsl_linalg_LU_invert (const gsl_matrix * LU, const + gsl_permutation * p, gsl_matrix * inverse) + -- Function: int gsl_linalg_complex_LU_invert (const gsl_matrix_complex + * LU, const gsl_permutation * p, gsl_matrix_complex * inverse) + + These functions compute the inverse of a matrix A from its LU + decomposition (‘LU’, ‘p’), storing the result in the matrix + ‘inverse’. The inverse is computed by solving the system A x = b + for each column of the identity matrix. It is preferable to avoid + direct use of the inverse whenever possible, as the linear solver + functions can obtain the same result more efficiently and reliably + (consult any introductory textbook on numerical linear algebra for + details). + + -- Function: double gsl_linalg_LU_det (gsl_matrix * LU, int signum) + -- Function: gsl_complex gsl_linalg_complex_LU_det (gsl_matrix_complex + * LU, int signum) + + These functions compute the determinant of a matrix A from its LU + decomposition, ‘LU’. The determinant is computed as the product of + the diagonal elements of U and the sign of the row permutation + ‘signum’. + + -- Function: double gsl_linalg_LU_lndet (gsl_matrix * LU) + -- Function: double gsl_linalg_complex_LU_lndet (gsl_matrix_complex + * LU) + + These functions compute the logarithm of the absolute value of the + determinant of a matrix A, \ln|\det(A)|, from its LU decomposition, + ‘LU’. This function may be useful if the direct computation of the + determinant would overflow or underflow. + + -- Function: int gsl_linalg_LU_sgndet (gsl_matrix * LU, int signum) + -- Function: gsl_complex gsl_linalg_complex_LU_sgndet + (gsl_matrix_complex * LU, int signum) + + These functions compute the sign or phase factor of the determinant + of a matrix A, \det(A)/|\det(A)|, from its LU decomposition, ‘LU’. + + +File: gsl-ref.info, Node: QR Decomposition, Next: QR Decomposition with Column Pivoting, Prev: LU Decomposition, Up: Linear Algebra + +14.2 QR Decomposition +===================== + +A general rectangular M-by-N matrix A has a QR decomposition into the +product of an orthogonal M-by-M square matrix Q (where Q^T Q = I) and an +M-by-N right-triangular matrix R, + + A = Q R + +This decomposition can be used to convert the linear system A x = b into +the triangular system R x = Q^T b, which can be solved by +back-substitution. Another use of the QR decomposition is to compute an +orthonormal basis for a set of vectors. The first N columns of Q form +an orthonormal basis for the range of A, ran(A), when A has full column +rank. + + -- Function: int gsl_linalg_QR_decomp (gsl_matrix * A, gsl_vector + * tau) + + This function factorizes the M-by-N matrix ‘A’ into the QR + decomposition A = Q R. On output the diagonal and upper triangular + part of the input matrix contain the matrix R. The vector ‘tau’ and + the columns of the lower triangular part of the matrix ‘A’ contain + the Householder coefficients and Householder vectors which encode + the orthogonal matrix ‘Q’. The vector ‘tau’ must be of length + k=\min(M,N). The matrix Q is related to these components by, Q = + Q_k ... Q_2 Q_1 where Q_i = I - \tau_i v_i v_i^T and v_i is the + Householder vector v_i = (0,...,1,A(i+1,i),A(i+2,i),...,A(m,i)). + This is the same storage scheme as used by LAPACK. + + The algorithm used to perform the decomposition is Householder QR + (Golub & Van Loan, “Matrix Computations”, Algorithm 5.2.1). + + -- Function: int gsl_linalg_QR_solve (const gsl_matrix * QR, const + gsl_vector * tau, const gsl_vector * b, gsl_vector * x) + + This function solves the square system A x = b using the QR + decomposition of A held in (‘QR’, ‘tau’) which must have been + computed previously with *note gsl_linalg_QR_decomp(): 4f5. The + least-squares solution for rectangular systems can be found using + *note gsl_linalg_QR_lssolve(): 4f7. + + -- Function: int gsl_linalg_QR_svx (const gsl_matrix * QR, const + gsl_vector * tau, gsl_vector * x) + + This function solves the square system A x = b in-place using the + QR decomposition of A held in (‘QR’, ‘tau’) which must have been + computed previously by *note gsl_linalg_QR_decomp(): 4f5. On input + ‘x’ should contain the right-hand side b, which is replaced by the + solution on output. + + -- Function: int gsl_linalg_QR_lssolve (const gsl_matrix * QR, const + gsl_vector * tau, const gsl_vector * b, gsl_vector * x, + gsl_vector * residual) + + This function finds the least squares solution to the + overdetermined system A x = b where the matrix ‘A’ has more rows + than columns. The least squares solution minimizes the Euclidean + norm of the residual, ||Ax - b||.The routine requires as input the + QR decomposition of A into (‘QR’, ‘tau’) given by *note + gsl_linalg_QR_decomp(): 4f5. The solution is returned in ‘x’. The + residual is computed as a by-product and stored in ‘residual’. + + -- Function: int gsl_linalg_QR_QTvec (const gsl_matrix * QR, const + gsl_vector * tau, gsl_vector * v) + + This function applies the matrix Q^T encoded in the decomposition + (‘QR’, ‘tau’) to the vector ‘v’, storing the result Q^T v in ‘v’. + The matrix multiplication is carried out directly using the + encoding of the Householder vectors without needing to form the + full matrix Q^T. + + -- Function: int gsl_linalg_QR_Qvec (const gsl_matrix * QR, const + gsl_vector * tau, gsl_vector * v) + + This function applies the matrix Q encoded in the decomposition + (‘QR’, ‘tau’) to the vector ‘v’, storing the result Q v in ‘v’. + The matrix multiplication is carried out directly using the + encoding of the Householder vectors without needing to form the + full matrix Q. + + -- Function: int gsl_linalg_QR_QTmat (const gsl_matrix * QR, const + gsl_vector * tau, gsl_matrix * A) + + This function applies the matrix Q^T encoded in the decomposition + (‘QR’, ‘tau’) to the matrix ‘A’, storing the result Q^T A in ‘A’. + The matrix multiplication is carried out directly using the + encoding of the Householder vectors without needing to form the + full matrix Q^T. + + -- Function: int gsl_linalg_QR_Rsolve (const gsl_matrix * QR, const + gsl_vector * b, gsl_vector * x) + + This function solves the triangular system R x = b for ‘x’. It may + be useful if the product b' = Q^T b has already been computed using + *note gsl_linalg_QR_QTvec(): 4f9. + + -- Function: int gsl_linalg_QR_Rsvx (const gsl_matrix * QR, gsl_vector + * x) + + This function solves the triangular system R x = b for ‘x’ + in-place. On input ‘x’ should contain the right-hand side b and is + replaced by the solution on output. This function may be useful if + the product b' = Q^T b has already been computed using *note + gsl_linalg_QR_QTvec(): 4f9. + + -- Function: int gsl_linalg_QR_unpack (const gsl_matrix * QR, const + gsl_vector * tau, gsl_matrix * Q, gsl_matrix * R) + + This function unpacks the encoded QR decomposition (‘QR’, ‘tau’) + into the matrices ‘Q’ and ‘R’, where ‘Q’ is M-by-M and ‘R’ is + M-by-N. + + -- Function: int gsl_linalg_QR_QRsolve (gsl_matrix * Q, gsl_matrix * R, + const gsl_vector * b, gsl_vector * x) + + This function solves the system R x = Q^T b for ‘x’. It can be + used when the QR decomposition of a matrix is available in unpacked + form as (‘Q’, ‘R’). + + -- Function: int gsl_linalg_QR_update (gsl_matrix * Q, gsl_matrix * R, + gsl_vector * w, const gsl_vector * v) + + This function performs a rank-1 update w v^T of the QR + decomposition (‘Q’, ‘R’). The update is given by Q'R' = Q (R + w + v^T) where the output matrices Q and R are also orthogonal and + right triangular. Note that ‘w’ is destroyed by the update. + + -- Function: int gsl_linalg_R_solve (const gsl_matrix * R, const + gsl_vector * b, gsl_vector * x) + + This function solves the triangular system R x = b for the N-by-N + matrix ‘R’. + + -- Function: int gsl_linalg_R_svx (const gsl_matrix * R, gsl_vector + * x) + + This function solves the triangular system R x = b in-place. On + input ‘x’ should contain the right-hand side b, which is replaced + by the solution on output. + + +File: gsl-ref.info, Node: QR Decomposition with Column Pivoting, Next: Complete Orthogonal Decomposition, Prev: QR Decomposition, Up: Linear Algebra + +14.3 QR Decomposition with Column Pivoting +========================================== + +The QR decomposition of an M-by-N matrix A can be extended to the rank +deficient case by introducing a column permutation P, + + A P = Q R + +The first r columns of Q form an orthonormal basis for the range of A +for a matrix with column rank r. This decomposition can also be used to +convert the linear system A x = b into the triangular system R y = Q^T +b, x = P y, which can be solved by back-substitution and permutation. +We denote the QR decomposition with column pivoting by QRP^T since A = Q +R P^T. When A is rank deficient with r = {\rm rank}(A), the matrix R can +be partitioned as + + R = [ R11 R12 ] =~ [ R11 R12 ] + [ 0 R22 ] [ 0 0 ] + +where R_{11} is r-by-r and nonsingular. In this case, a `basic' least +squares solution for the overdetermined system A x = b can be obtained +as + + x = P [ R11^-1 c1 ] + [ 0 ] + +where c_1 consists of the first r elements of Q^T b. This basic +solution is not guaranteed to be the minimum norm solution unless R_{12} += 0 (see *note Complete Orthogonal Decomposition: 504.). + + -- Function: int gsl_linalg_QRPT_decomp (gsl_matrix * A, gsl_vector + * tau, gsl_permutation * p, int * signum, gsl_vector * norm) + + This function factorizes the M-by-N matrix ‘A’ into the QRP^T + decomposition A = Q R P^T. On output the diagonal and upper + triangular part of the input matrix contain the matrix R. The + permutation matrix P is stored in the permutation ‘p’. The sign of + the permutation is given by ‘signum’. It has the value (-1)^n, + where n is the number of interchanges in the permutation. The + vector ‘tau’ and the columns of the lower triangular part of the + matrix ‘A’ contain the Householder coefficients and vectors which + encode the orthogonal matrix ‘Q’. The vector ‘tau’ must be of + length k=\min(M,N). The matrix Q is related to these components by, + Q = Q_k ... Q_2 Q_1 where Q_i = I - \tau_i v_i v_i^T and v_i is the + Householder vector + + v_i = (0,...,1,A(i+1,i),A(i+2,i),...,A(m,i)) + + This is the same storage scheme as used by LAPACK. The vector + ‘norm’ is a workspace of length ‘N’ used for column pivoting. + + The algorithm used to perform the decomposition is Householder QR + with column pivoting (Golub & Van Loan, “Matrix Computations”, + Algorithm 5.4.1). + + -- Function: int gsl_linalg_QRPT_decomp2 (const gsl_matrix * A, + gsl_matrix * q, gsl_matrix * r, gsl_vector * tau, + gsl_permutation * p, int * signum, gsl_vector * norm) + + This function factorizes the matrix ‘A’ into the decomposition A = + Q R P^T without modifying ‘A’ itself and storing the output in the + separate matrices ‘q’ and ‘r’. + + -- Function: int gsl_linalg_QRPT_solve (const gsl_matrix * QR, const + gsl_vector * tau, const gsl_permutation * p, const gsl_vector + * b, gsl_vector * x) + + This function solves the square system A x = b using the QRP^T + decomposition of A held in (‘QR’, ‘tau’, ‘p’) which must have been + computed previously by *note gsl_linalg_QRPT_decomp(): 505. + + -- Function: int gsl_linalg_QRPT_svx (const gsl_matrix * QR, const + gsl_vector * tau, const gsl_permutation * p, gsl_vector * x) + + This function solves the square system A x = b in-place using the + QRP^T decomposition of A held in (‘QR’, ‘tau’, ‘p’). On input ‘x’ + should contain the right-hand side b, which is replaced by the + solution on output. + + -- Function: int gsl_linalg_QRPT_lssolve (const gsl_matrix * QR, const + gsl_vector * tau, const gsl_permutation * p, const gsl_vector + * b, gsl_vector * x, gsl_vector * residual) + + This function finds the least squares solution to the + overdetermined system A x = b where the matrix ‘A’ has more rows + than columns and is assumed to have full rank. The least squares + solution minimizes the Euclidean norm of the residual, ||b - A x||. + The routine requires as input the QR decomposition of A into (‘QR’, + ‘tau’, ‘p’) given by *note gsl_linalg_QRPT_decomp(): 505. The + solution is returned in ‘x’. The residual is computed as a + by-product and stored in ‘residual’. For rank deficient matrices, + *note gsl_linalg_QRPT_lssolve2(): 50a. should be used instead. + + -- Function: int gsl_linalg_QRPT_lssolve2 (const gsl_matrix * QR, const + gsl_vector * tau, const gsl_permutation * p, const gsl_vector + * b, const size_t rank, gsl_vector * x, gsl_vector * residual) + + This function finds the least squares solution to the + overdetermined system A x = b where the matrix ‘A’ has more rows + than columns and has rank given by the input ‘rank’. If the user + does not know the rank of A, the routine *note + gsl_linalg_QRPT_rank(): 50b. can be called to estimate it. The + least squares solution is the so-called “basic” solution discussed + above and may not be the minimum norm solution. The routine + requires as input the QR decomposition of A into (‘QR’, ‘tau’, ‘p’) + given by *note gsl_linalg_QRPT_decomp(): 505. The solution is + returned in ‘x’. The residual is computed as a by-product and + stored in ‘residual’. + + -- Function: int gsl_linalg_QRPT_QRsolve (const gsl_matrix * Q, const + gsl_matrix * R, const gsl_permutation * p, const gsl_vector + * b, gsl_vector * x) + + This function solves the square system R P^T x = Q^T b for ‘x’. It + can be used when the QR decomposition of a matrix is available in + unpacked form as (‘Q’, ‘R’). + + -- Function: int gsl_linalg_QRPT_update (gsl_matrix * Q, gsl_matrix + * R, const gsl_permutation * p, gsl_vector * w, const + gsl_vector * v) + + This function performs a rank-1 update w v^T of the QRP^T + decomposition (‘Q’, ‘R’, ‘p’). The update is given by Q'R' = Q (R + + w v^T P) where the output matrices Q' and R' are also orthogonal + and right triangular. Note that ‘w’ is destroyed by the update. + The permutation ‘p’ is not changed. + + -- Function: int gsl_linalg_QRPT_Rsolve (const gsl_matrix * QR, const + gsl_permutation * p, const gsl_vector * b, gsl_vector * x) + + This function solves the triangular system R P^T x = b for the + N-by-N matrix R contained in ‘QR’. + + -- Function: int gsl_linalg_QRPT_Rsvx (const gsl_matrix * QR, const + gsl_permutation * p, gsl_vector * x) + + This function solves the triangular system R P^T x = b in-place for + the N-by-N matrix R contained in ‘QR’. On input ‘x’ should contain + the right-hand side b, which is replaced by the solution on output. + + -- Function: size_t gsl_linalg_QRPT_rank (const gsl_matrix * QR, const + double tol) + + This function estimates the rank of the triangular matrix R + contained in ‘QR’. The algorithm simply counts the number of + diagonal elements of R whose absolute value is greater than the + specified tolerance ‘tol’. If the input ‘tol’ is negative, a + default value of 20 (M + N) eps(max(|diag(R)|)) is used. + + -- Function: int gsl_linalg_QRPT_rcond (const gsl_matrix * QR, double + * rcond, gsl_vector * work) + + This function estimates the reciprocal condition number (using the + 1-norm) of the R factor, stored in the upper triangle of ‘QR’. The + reciprocal condition number estimate, defined as 1 / (||R||_1 \cdot + ||R^{-1}||_1), is stored in ‘rcond’. Additional workspace of size + 3 N is required in ‘work’. + + +File: gsl-ref.info, Node: Complete Orthogonal Decomposition, Next: Singular Value Decomposition, Prev: QR Decomposition with Column Pivoting, Up: Linear Algebra + +14.4 Complete Orthogonal Decomposition +====================================== + +The complete orthogonal decomposition of a M-by-N matrix A is a +generalization of the QR decomposition with column pivoting, given by + + A P = Q [ R11 0 ] Z^T + [ 0 0 ] + +where P is a N-by-N permutation matrix, Q is M-by-M orthogonal, R_{11} +is r-by-r upper triangular, with r = {\rm rank}(A), and Z is N-by-N +orthogonal. If A has full rank, then R_{11} = R, Z = I and this reduces +to the QR decomposition with column pivoting. + +For a rank deficient least squares problem, \min_x{|| b - Ax||^2}, the +solution vector x is not unique. However if we further require that +||x||^2 is minimized, then the complete orthogonal decomposition gives +us the ability to compute the unique minimum norm solution, which is +given by + + x = P Z [ R11^-1 c1 ] + [ 0 ] + +and the vector c_1 is the first r elements of Q^T b. + +The COD also enables a straightforward solution of regularized least +squares problems in Tikhonov standard form, written as + + \min_x ||b - A x||^2 + \lambda^2 ||x||^2 + +where \lambda > 0 is a regularization parameter which represents a +tradeoff between minimizing the residual norm ||b - A x|| and the +solution norm ||x||. For this system, the solution is given by + + x = P Z [ y1 ] + [ 0 ] + +where y_1 is a vector of length r which is found by solving + + [ R11 ] y_1 = [ c_1 ] + [ \lambda I_r ] [ 0 ] + +and c_1 is defined above. The equation above can be solved efficiently +for different values of \lambda using QR factorizations of the left hand +side matrix. + + -- Function: int gsl_linalg_COD_decomp (gsl_matrix * A, gsl_vector + * tau_Q, gsl_vector * tau_Z, gsl_permutation * p, size_t + * rank, gsl_vector * work) + -- Function: int gsl_linalg_COD_decomp_e (gsl_matrix * A, gsl_vector + * tau_Q, gsl_vector * tau_Z, gsl_permutation * p, double tol, + size_t * rank, gsl_vector * work) + + These functions factor the M-by-N matrix ‘A’ into the decomposition + A = Q R Z P^T. The rank of ‘A’ is computed as the number of + diagonal elements of R greater than the tolerance ‘tol’ and output + in ‘rank’. If ‘tol’ is not specified, a default value is used (see + *note gsl_linalg_QRPT_rank(): 50b.). On output, the permutation + matrix P is stored in ‘p’. The matrix R_{11} is stored in the + upper ‘rank’-by-‘rank’ block of ‘A’. The matrices Q and Z are + encoded in packed storage in ‘A’ on output. The vectors ‘tau_Q’ + and ‘tau_Z’ contain the Householder scalars corresponding to the + matrices Q and Z respectively and must be of length k = \min(M,N). + The vector ‘work’ is additional workspace of length N. + + -- Function: int gsl_linalg_COD_lssolve (const gsl_matrix * QRZT, const + gsl_vector * tau_Q, const gsl_vector * tau_Z, const + gsl_permutation * p, const size_t rank, const gsl_vector * b, + gsl_vector * x, gsl_vector * residual) + + This function finds the unique minimum norm least squares solution + to the overdetermined system A x = b where the matrix ‘A’ has more + rows than columns. The least squares solution minimizes the + Euclidean norm of the residual, ||b - A x|| as well as the norm of + the solution ||x||. The routine requires as input the QRZT + decomposition of A into (‘QRZT’, ‘tau_Q’, ‘tau_Z’, ‘p’, ‘rank’) + given by *note gsl_linalg_COD_decomp(): 512. The solution is + returned in ‘x’. The residual, b - Ax, is computed as a by-product + and stored in ‘residual’. + + -- Function: int gsl_linalg_COD_lssolve2 (const double lambda, const + gsl_matrix * QRZT, const gsl_vector * tau_Q, const gsl_vector + * tau_Z, const gsl_permutation * p, const size_t rank, const + gsl_vector * b, gsl_vector * x, gsl_vector * residual, + gsl_matrix * S, gsl_vector * work) + + This function finds the solution to the regularized least squares + problem in Tikhonov standard form, \min_x ||b - Ax||^2 + \lambda^2 + ||x||^2. The routine requires as input the QRZT decomposition of A + into (‘QRZT’, ‘tau_Q’, ‘tau_Z’, ‘p’, ‘rank’) given by *note + gsl_linalg_COD_decomp(): 512. The parameter \lambda is supplied in + ‘lambda’. The solution is returned in ‘x’. The residual, b - Ax, + is stored in ‘residual’ on output. ‘S’ is additional workspace of + size ‘rank’-by-‘rank’. ‘work’ is additional workspace of length + ‘rank’. + + -- Function: int gsl_linalg_COD_unpack (const gsl_matrix * QRZT, const + gsl_vector * tau_Q, const gsl_vector * tau_Z, const + size_t rank, gsl_matrix * Q, gsl_matrix * R, gsl_matrix * Z) + + This function unpacks the encoded QRZT decomposition (‘QRZT’, + ‘tau_Q’, ‘tau_Z’, ‘rank’) into the matrices ‘Q’, ‘R’, and ‘Z’, + where ‘Q’ is M-by-M, ‘R’ is M-by-N, and ‘Z’ is N-by-N. + + -- Function: int gsl_linalg_COD_matZ (const gsl_matrix * QRZT, const + gsl_vector * tau_Z, const size_t rank, gsl_matrix * A, + gsl_vector * work) + + This function multiplies the input matrix ‘A’ on the right by ‘Z’, + A' = A Z using the encoded QRZT decomposition (‘QRZT’, ‘tau_Z’, + ‘rank’). ‘A’ must have N columns but may have any number of rows. + Additional workspace of length M is provided in ‘work’. + + +File: gsl-ref.info, Node: Singular Value Decomposition, Next: Cholesky Decomposition, Prev: Complete Orthogonal Decomposition, Up: Linear Algebra + +14.5 Singular Value Decomposition +================================= + +A general rectangular M-by-N matrix A has a singular value decomposition +(SVD) into the product of an M-by-N orthogonal matrix U, an N-by-N +diagonal matrix of singular values S and the transpose of an N-by-N +orthogonal square matrix V, + + A = U S V^T + +The singular values \sigma_i = S_{ii} are all non-negative and are +generally chosen to form a non-increasing sequence + + \sigma_1 >= \sigma_2 >= ... >= \sigma_N >= 0 + +The singular value decomposition of a matrix has many practical uses. +The condition number of the matrix is given by the ratio of the largest +singular value to the smallest singular value. The presence of a zero +singular value indicates that the matrix is singular. The number of +non-zero singular values indicates the rank of the matrix. In practice +singular value decomposition of a rank-deficient matrix will not produce +exact zeroes for singular values, due to finite numerical precision. +Small singular values should be edited by choosing a suitable tolerance. + +For a rank-deficient matrix, the null space of A is given by the columns +of V corresponding to the zero singular values. Similarly, the range of +A is given by columns of U corresponding to the non-zero singular +values. + +Note that the routines here compute the “thin” version of the SVD with U +as M-by-N orthogonal matrix. This allows in-place computation and is +the most commonly-used form in practice. Mathematically, the “full” SVD +is defined with U as an M-by-M orthogonal matrix and S as an M-by-N +diagonal matrix (with additional rows of zeros). + + -- Function: int gsl_linalg_SV_decomp (gsl_matrix * A, gsl_matrix * V, + gsl_vector * S, gsl_vector * work) + + This function factorizes the M-by-N matrix ‘A’ into the singular + value decomposition A = U S V^T for M \ge N. On output the matrix + ‘A’ is replaced by U. The diagonal elements of the singular value + matrix S are stored in the vector ‘S’. The singular values are + non-negative and form a non-increasing sequence from S_1 to S_N. + The matrix ‘V’ contains the elements of V in untransposed form. To + form the product U S V^T it is necessary to take the transpose of + ‘V’. A workspace of length ‘N’ is required in ‘work’. + + This routine uses the Golub-Reinsch SVD algorithm. + + -- Function: int gsl_linalg_SV_decomp_mod (gsl_matrix * A, gsl_matrix + * X, gsl_matrix * V, gsl_vector * S, gsl_vector * work) + + This function computes the SVD using the modified Golub-Reinsch + algorithm, which is faster for M \gg N. It requires the vector + ‘work’ of length ‘N’ and the N-by-N matrix ‘X’ as additional + working space. + + -- Function: int gsl_linalg_SV_decomp_jacobi (gsl_matrix * A, + gsl_matrix * V, gsl_vector * S) + + This function computes the SVD of the M-by-N matrix ‘A’ using + one-sided Jacobi orthogonalization for M \ge N. The Jacobi method + can compute singular values to higher relative accuracy than + Golub-Reinsch algorithms (see references for details). + + -- Function: int gsl_linalg_SV_solve (const gsl_matrix * U, const + gsl_matrix * V, const gsl_vector * S, const gsl_vector * b, + gsl_vector * x) + + This function solves the system A x = b using the singular value + decomposition (‘U’, ‘S’, ‘V’) of A which must have been computed + previously with *note gsl_linalg_SV_decomp(): 519. + + Only non-zero singular values are used in computing the solution. + The parts of the solution corresponding to singular values of zero + are ignored. Other singular values can be edited out by setting + them to zero before calling this function. + + In the over-determined case where ‘A’ has more rows than columns + the system is solved in the least squares sense, returning the + solution ‘x’ which minimizes ||A x - b||_2. + + -- Function: int gsl_linalg_SV_leverage (const gsl_matrix * U, + gsl_vector * h) + + This function computes the statistical leverage values h_i of a + matrix A using its singular value decomposition (‘U’, ‘S’, ‘V’) + previously computed with *note gsl_linalg_SV_decomp(): 519. h_i + are the diagonal values of the matrix A (A^T A)^{-1} A^T and depend + only on the matrix ‘U’ which is the input to this function. + + +File: gsl-ref.info, Node: Cholesky Decomposition, Next: Pivoted Cholesky Decomposition, Prev: Singular Value Decomposition, Up: Linear Algebra + +14.6 Cholesky Decomposition +=========================== + +A symmetric, positive definite square matrix A has a Cholesky +decomposition into a product of a lower triangular matrix L and its +transpose L^T, + + A = L L^T + +This is sometimes referred to as taking the square-root of a matrix. +The Cholesky decomposition can only be carried out when all the +eigenvalues of the matrix are positive. This decomposition can be used +to convert the linear system A x = b into a pair of triangular systems +(L y = b, L^T x = y), which can be solved by forward and +back-substitution. + +If the matrix A is near singular, it is sometimes possible to reduce the +condition number and recover a more accurate solution vector x by +scaling as + + ( S A S ) ( S^(-1) x ) = S b + +where S is a diagonal matrix whose elements are given by S_{ii} = +1/\sqrt{A_{ii}}. This scaling is also known as Jacobi preconditioning. +There are routines below to solve both the scaled and unscaled systems. + + -- Function: int gsl_linalg_cholesky_decomp1 (gsl_matrix * A) + -- Function: int gsl_linalg_complex_cholesky_decomp (gsl_matrix_complex + * A) + + These functions factorize the symmetric, positive-definite square + matrix ‘A’ into the Cholesky decomposition A = L L^T (or A = L + L^{\dagger} for the complex case). On input, the values from the + diagonal and lower-triangular part of the matrix ‘A’ are used (the + upper triangular part is ignored). On output the diagonal and + lower triangular part of the input matrix ‘A’ contain the matrix L, + while the upper triangular part is unmodified. If the matrix is + not positive-definite then the decomposition will fail, returning + the error code *note GSL_EDOM: 28. + + When testing whether a matrix is positive-definite, disable the + error handler first to avoid triggering an error. + + -- Function: int gsl_linalg_cholesky_decomp (gsl_matrix * A) + + This function is now deprecated and is provided only for backward + compatibility. + + -- Function: int gsl_linalg_cholesky_solve (const gsl_matrix + * cholesky, const gsl_vector * b, gsl_vector * x) + -- Function: int gsl_linalg_complex_cholesky_solve (const + gsl_matrix_complex * cholesky, const gsl_vector_complex * b, + gsl_vector_complex * x) + + These functions solve the system A x = b using the Cholesky + decomposition of A held in the matrix ‘cholesky’ which must have + been previously computed by *note gsl_linalg_cholesky_decomp(): + 521. or *note gsl_linalg_complex_cholesky_decomp(): 520. + + -- Function: int gsl_linalg_cholesky_svx (const gsl_matrix * cholesky, + gsl_vector * x) + -- Function: int gsl_linalg_complex_cholesky_svx (const + gsl_matrix_complex * cholesky, gsl_vector_complex * x) + + These functions solve the system A x = b in-place using the + Cholesky decomposition of A held in the matrix ‘cholesky’ which + must have been previously computed by *note + gsl_linalg_cholesky_decomp(): 521. or *note + gsl_linalg_complex_cholesky_decomp(): 520. On input ‘x’ should + contain the right-hand side b, which is replaced by the solution on + output. + + -- Function: int gsl_linalg_cholesky_invert (gsl_matrix * cholesky) + -- Function: int gsl_linalg_complex_cholesky_invert (gsl_matrix_complex + * cholesky) + + These functions compute the inverse of a matrix from its Cholesky + decomposition ‘cholesky’, which must have been previously computed + by *note gsl_linalg_cholesky_decomp(): 521. or *note + gsl_linalg_complex_cholesky_decomp(): 520. On output, the inverse + is stored in-place in ‘cholesky’. + + -- Function: int gsl_linalg_cholesky_decomp2 (gsl_matrix * A, + gsl_vector * S) + + This function calculates a diagonal scaling transformation S for + the symmetric, positive-definite square matrix ‘A’, and then + computes the Cholesky decomposition S A S = L L^T. On input, the + values from the diagonal and lower-triangular part of the matrix + ‘A’ are used (the upper triangular part is ignored). On output the + diagonal and lower triangular part of the input matrix ‘A’ contain + the matrix L, while the upper triangular part of the input matrix + is overwritten with L^T (the diagonal terms being identical for + both L and L^T). If the matrix is not positive-definite then the + decomposition will fail, returning the error code *note GSL_EDOM: + 28. The diagonal scale factors are stored in ‘S’ on output. + + When testing whether a matrix is positive-definite, disable the + error handler first to avoid triggering an error. + + -- Function: int gsl_linalg_cholesky_solve2 (const gsl_matrix + * cholesky, const gsl_vector * S, const gsl_vector * b, + gsl_vector * x) + + This function solves the system (S A S) (S^{-1} x) = S b using the + Cholesky decomposition of S A S held in the matrix ‘cholesky’ which + must have been previously computed by *note + gsl_linalg_cholesky_decomp2(): 528. + + -- Function: int gsl_linalg_cholesky_svx2 (const gsl_matrix * cholesky, + const gsl_vector * S, gsl_vector * x) + + This function solves the system (S A S) (S^{-1} x) = S b in-place + using the Cholesky decomposition of S A S held in the matrix + ‘cholesky’ which must have been previously computed by *note + gsl_linalg_cholesky_decomp2(): 528. On input ‘x’ should contain + the right-hand side b, which is replaced by the solution on output. + + -- Function: int gsl_linalg_cholesky_scale (const gsl_matrix * A, + gsl_vector * S) + + This function calculates a diagonal scaling transformation of the + symmetric, positive definite matrix ‘A’, such that S A S has a + condition number within a factor of N of the matrix of smallest + possible condition number over all possible diagonal scalings. On + output, ‘S’ contains the scale factors, given by S_i = + 1/\sqrt{A_{ii}}. For any A_{ii} \le 0, the corresponding scale + factor S_i is set to 1. + + -- Function: int gsl_linalg_cholesky_scale_apply (gsl_matrix * A, const + gsl_vector * S) + + This function applies the scaling transformation ‘S’ to the matrix + ‘A’. On output, ‘A’ is replaced by S A S. + + -- Function: int gsl_linalg_cholesky_rcond (const gsl_matrix + * cholesky, double * rcond, gsl_vector * work) + + This function estimates the reciprocal condition number (using the + 1-norm) of the symmetric positive definite matrix A, using its + Cholesky decomposition provided in ‘cholesky’. The reciprocal + condition number estimate, defined as 1 / (||A||_1 \cdot + ||A^{-1}||_1), is stored in ‘rcond’. Additional workspace of size + 3 N is required in ‘work’. + + +File: gsl-ref.info, Node: Pivoted Cholesky Decomposition, Next: Modified Cholesky Decomposition, Prev: Cholesky Decomposition, Up: Linear Algebra + +14.7 Pivoted Cholesky Decomposition +=================================== + +A symmetric, positive definite square matrix A has an alternate Cholesky +decomposition into a product of a lower unit triangular matrix L, a +diagonal matrix D and L^T, given by L D L^T. This is equivalent to the +Cholesky formulation discussed above, with the standard Cholesky lower +triangular factor given by L D^{1 \over 2}. For ill-conditioned +matrices, it can help to use a pivoting strategy to prevent the entries +of D and L from growing too large, and also ensure D_1 \ge D_2 \ge +\cdots \ge D_n > 0, where D_i are the diagonal entries of D. The final +decomposition is given by + + P A P^T = L D L^T + +where P is a permutation matrix. + + -- Function: int gsl_linalg_pcholesky_decomp (gsl_matrix * A, + gsl_permutation * p) + + This function factors the symmetric, positive-definite square + matrix ‘A’ into the Pivoted Cholesky decomposition P A P^T = L D + L^T. On input, the values from the diagonal and lower-triangular + part of the matrix ‘A’ are used to construct the factorization. On + output the diagonal of the input matrix ‘A’ stores the diagonal + elements of D, and the lower triangular portion of ‘A’ contains the + matrix L. Since L has ones on its diagonal these do not need to be + explicitely stored. The upper triangular portion of ‘A’ is + unmodified. The permutation matrix P is stored in ‘p’ on output. + + -- Function: int gsl_linalg_pcholesky_solve (const gsl_matrix * LDLT, + const gsl_permutation * p, const gsl_vector * b, gsl_vector + * x) + + This function solves the system A x = b using the Pivoted Cholesky + decomposition of A held in the matrix ‘LDLT’ and permutation ‘p’ + which must have been previously computed by *note + gsl_linalg_pcholesky_decomp(): 52f. + + -- Function: int gsl_linalg_pcholesky_svx (const gsl_matrix * LDLT, + const gsl_permutation * p, gsl_vector * x) + + This function solves the system A x = b in-place using the Pivoted + Cholesky decomposition of A held in the matrix ‘LDLT’ and + permutation ‘p’ which must have been previously computed by *note + gsl_linalg_pcholesky_decomp(): 52f. On input, ‘x’ contains the + right hand side vector b which is replaced by the solution vector + on output. + + -- Function: int gsl_linalg_pcholesky_decomp2 (gsl_matrix * A, + gsl_permutation * p, gsl_vector * S) + + This function computes the pivoted Cholesky factorization of the + matrix S A S, where the input matrix ‘A’ is symmetric and positive + definite, and the diagonal scaling matrix ‘S’ is computed to reduce + the condition number of ‘A’ as much as possible. See *note + Cholesky Decomposition: 3ee. for more information on the matrix + ‘S’. The Pivoted Cholesky decomposition satisfies P S A S P^T = L + D L^T. On input, the values from the diagonal and lower-triangular + part of the matrix ‘A’ are used to construct the factorization. On + output the diagonal of the input matrix ‘A’ stores the diagonal + elements of D, and the lower triangular portion of ‘A’ contains the + matrix L. Since L has ones on its diagonal these do not need to be + explicitely stored. The upper triangular portion of ‘A’ is + unmodified. The permutation matrix P is stored in ‘p’ on output. + The diagonal scaling transformation is stored in ‘S’ on output. + + -- Function: int gsl_linalg_pcholesky_solve2 (const gsl_matrix * LDLT, + const gsl_permutation * p, const gsl_vector * S, const + gsl_vector * b, gsl_vector * x) + + This function solves the system (S A S) (S^{-1} x) = S b using the + Pivoted Cholesky decomposition of S A S held in the matrix ‘LDLT’, + permutation ‘p’, and vector ‘S’, which must have been previously + computed by *note gsl_linalg_pcholesky_decomp2(): 532. + + -- Function: int gsl_linalg_pcholesky_svx2 (const gsl_matrix * LDLT, + const gsl_permutation * p, const gsl_vector * S, gsl_vector + * x) + + This function solves the system (S A S) (S^{-1} x) = S b in-place + using the Pivoted Cholesky decomposition of S A S held in the + matrix ‘LDLT’, permutation ‘p’ and vector ‘S’, which must have been + previously computed by *note gsl_linalg_pcholesky_decomp2(): 532. + On input, ‘x’ contains the right hand side vector b which is + replaced by the solution vector on output. + + -- Function: int gsl_linalg_pcholesky_invert (const gsl_matrix * LDLT, + const gsl_permutation * p, gsl_matrix * Ainv) + + This function computes the inverse of the matrix A, using the + Pivoted Cholesky decomposition stored in ‘LDLT’ and ‘p’. On + output, the matrix ‘Ainv’ contains A^{-1}. + + -- Function: int gsl_linalg_pcholesky_rcond (const gsl_matrix * LDLT, + const gsl_permutation * p, double * rcond, gsl_vector * work) + + This function estimates the reciprocal condition number (using the + 1-norm) of the symmetric positive definite matrix A, using its + pivoted Cholesky decomposition provided in ‘LDLT’. The reciprocal + condition number estimate, defined as 1 / (||A||_1 \cdot + ||A^{-1}||_1), is stored in ‘rcond’. Additional workspace of size + 3 N is required in ‘work’. + + +File: gsl-ref.info, Node: Modified Cholesky Decomposition, Next: Tridiagonal Decomposition of Real Symmetric Matrices, Prev: Pivoted Cholesky Decomposition, Up: Linear Algebra + +14.8 Modified Cholesky Decomposition +==================================== + +The modified Cholesky decomposition is suitable for solving systems A x += b where A is a symmetric indefinite matrix. Such matrices arise in +nonlinear optimization algorithms. The standard Cholesky decomposition +requires a positive definite matrix and would fail in this case. +Instead of resorting to a method like QR or SVD, which do not take into +account the symmetry of the matrix, we can instead introduce a small +perturbation to the matrix A to make it positive definite, and then use +a Cholesky decomposition on the perturbed matrix. The resulting +decomposition satisfies + + P (A + E) P^T = L D L^T + +where P is a permutation matrix, E is a diagonal perturbation matrix, L +is unit lower triangular, and D is diagonal. If A is sufficiently +positive definite, then the perturbation matrix E will be zero and this +method is equivalent to the pivoted Cholesky algorithm. For indefinite +matrices, the perturbation matrix E is computed to ensure that A + E is +positive definite and well conditioned. + + -- Function: int gsl_linalg_mcholesky_decomp (gsl_matrix * A, + gsl_permutation * p, gsl_vector * E) + + This function factors the symmetric, indefinite square matrix ‘A’ + into the Modified Cholesky decomposition P (A + E) P^T = L D L^T. + On input, the values from the diagonal and lower-triangular part of + the matrix ‘A’ are used to construct the factorization. On output + the diagonal of the input matrix ‘A’ stores the diagonal elements + of D, and the lower triangular portion of ‘A’ contains the matrix + L. Since L has ones on its diagonal these do not need to be + explicitely stored. The upper triangular portion of ‘A’ is + unmodified. The permutation matrix P is stored in ‘p’ on output. + The diagonal perturbation matrix is stored in ‘E’ on output. The + parameter ‘E’ may be set to NULL if it is not required. + + -- Function: int gsl_linalg_mcholesky_solve (const gsl_matrix * LDLT, + const gsl_permutation * p, const gsl_vector * b, gsl_vector + * x) + + This function solves the perturbed system (A + E) x = b using the + Cholesky decomposition of A + E held in the matrix ‘LDLT’ and + permutation ‘p’ which must have been previously computed by *note + gsl_linalg_mcholesky_decomp(): 538. + + -- Function: int gsl_linalg_mcholesky_svx (const gsl_matrix * LDLT, + const gsl_permutation * p, gsl_vector * x) + + This function solves the perturbed system (A + E) x = b in-place + using the Cholesky decomposition of A + E held in the matrix ‘LDLT’ + and permutation ‘p’ which must have been previously computed by + *note gsl_linalg_mcholesky_decomp(): 538. On input, ‘x’ contains + the right hand side vector b which is replaced by the solution + vector on output. + + -- Function: int gsl_linalg_mcholesky_rcond (const gsl_matrix * LDLT, + const gsl_permutation * p, double * rcond, gsl_vector * work) + + This function estimates the reciprocal condition number (using the + 1-norm) of the perturbed matrix A + E, using its pivoted Cholesky + decomposition provided in ‘LDLT’. The reciprocal condition number + estimate, defined as 1 / (||A + E||_1 \cdot ||(A + E)^{-1}||_1), is + stored in ‘rcond’. Additional workspace of size 3 N is required in + ‘work’. + + +File: gsl-ref.info, Node: Tridiagonal Decomposition of Real Symmetric Matrices, Next: Tridiagonal Decomposition of Hermitian Matrices, Prev: Modified Cholesky Decomposition, Up: Linear Algebra + +14.9 Tridiagonal Decomposition of Real Symmetric Matrices +========================================================= + +A symmetric matrix A can be factorized by similarity transformations +into the form, + + A = Q T Q^T + +where Q is an orthogonal matrix and T is a symmetric tridiagonal matrix. + + -- Function: int gsl_linalg_symmtd_decomp (gsl_matrix * A, gsl_vector + * tau) + + This function factorizes the symmetric square matrix ‘A’ into the + symmetric tridiagonal decomposition Q T Q^T. On output the diagonal + and subdiagonal part of the input matrix ‘A’ contain the + tridiagonal matrix T. The remaining lower triangular part of the + input matrix contains the Householder vectors which, together with + the Householder coefficients ‘tau’, encode the orthogonal matrix Q. + This storage scheme is the same as used by LAPACK. The upper + triangular part of ‘A’ is not referenced. + + -- Function: int gsl_linalg_symmtd_unpack (const gsl_matrix * A, const + gsl_vector * tau, gsl_matrix * Q, gsl_vector * diag, + gsl_vector * subdiag) + + This function unpacks the encoded symmetric tridiagonal + decomposition (‘A’, ‘tau’) obtained from *note + gsl_linalg_symmtd_decomp(): 53d. into the orthogonal matrix ‘Q’, + the vector of diagonal elements ‘diag’ and the vector of + subdiagonal elements ‘subdiag’. + + -- Function: int gsl_linalg_symmtd_unpack_T (const gsl_matrix * A, + gsl_vector * diag, gsl_vector * subdiag) + + This function unpacks the diagonal and subdiagonal of the encoded + symmetric tridiagonal decomposition (‘A’, ‘tau’) obtained from + *note gsl_linalg_symmtd_decomp(): 53d. into the vectors ‘diag’ and + ‘subdiag’. + + +File: gsl-ref.info, Node: Tridiagonal Decomposition of Hermitian Matrices, Next: Hessenberg Decomposition of Real Matrices, Prev: Tridiagonal Decomposition of Real Symmetric Matrices, Up: Linear Algebra + +14.10 Tridiagonal Decomposition of Hermitian Matrices +===================================================== + +A hermitian matrix A can be factorized by similarity transformations +into the form, + + A = U T U^T + +where U is a unitary matrix and T is a real symmetric tridiagonal +matrix. + + -- Function: int gsl_linalg_hermtd_decomp (gsl_matrix_complex * A, + gsl_vector_complex * tau) + + This function factorizes the hermitian matrix ‘A’ into the + symmetric tridiagonal decomposition U T U^T. On output the real + parts of the diagonal and subdiagonal part of the input matrix ‘A’ + contain the tridiagonal matrix T. The remaining lower triangular + part of the input matrix contains the Householder vectors which, + together with the Householder coefficients ‘tau’, encode the + unitary matrix U. This storage scheme is the same as used by + LAPACK. The upper triangular part of ‘A’ and imaginary parts of the + diagonal are not referenced. + + -- Function: int gsl_linalg_hermtd_unpack (const gsl_matrix_complex + * A, const gsl_vector_complex * tau, gsl_matrix_complex * U, + gsl_vector * diag, gsl_vector * subdiag) + + This function unpacks the encoded tridiagonal decomposition (‘A’, + ‘tau’) obtained from *note gsl_linalg_hermtd_decomp(): 541. into + the unitary matrix ‘U’, the real vector of diagonal elements ‘diag’ + and the real vector of subdiagonal elements ‘subdiag’. + + -- Function: int gsl_linalg_hermtd_unpack_T (const gsl_matrix_complex + * A, gsl_vector * diag, gsl_vector * subdiag) + + This function unpacks the diagonal and subdiagonal of the encoded + tridiagonal decomposition (‘A’, ‘tau’) obtained from the *note + gsl_linalg_hermtd_decomp(): 541. into the real vectors ‘diag’ and + ‘subdiag’. + + +File: gsl-ref.info, Node: Hessenberg Decomposition of Real Matrices, Next: Hessenberg-Triangular Decomposition of Real Matrices, Prev: Tridiagonal Decomposition of Hermitian Matrices, Up: Linear Algebra + +14.11 Hessenberg Decomposition of Real Matrices +=============================================== + +A general real matrix A can be decomposed by orthogonal similarity +transformations into the form + + A = U H U^T + +where U is orthogonal and H is an upper Hessenberg matrix, meaning that +it has zeros below the first subdiagonal. The Hessenberg reduction is +the first step in the Schur decomposition for the nonsymmetric +eigenvalue problem, but has applications in other areas as well. + + -- Function: int gsl_linalg_hessenberg_decomp (gsl_matrix * A, + gsl_vector * tau) + + This function computes the Hessenberg decomposition of the matrix + ‘A’ by applying the similarity transformation H = U^T A U. On + output, H is stored in the upper portion of ‘A’. The information + required to construct the matrix U is stored in the lower + triangular portion of ‘A’. U is a product of N - 2 Householder + matrices. The Householder vectors are stored in the lower portion + of ‘A’ (below the subdiagonal) and the Householder coefficients are + stored in the vector ‘tau’. ‘tau’ must be of length ‘N’. + + -- Function: int gsl_linalg_hessenberg_unpack (gsl_matrix * H, + gsl_vector * tau, gsl_matrix * U) + + This function constructs the orthogonal matrix U from the + information stored in the Hessenberg matrix ‘H’ along with the + vector ‘tau’. ‘H’ and ‘tau’ are outputs from *note + gsl_linalg_hessenberg_decomp(): 545. + + -- Function: int gsl_linalg_hessenberg_unpack_accum (gsl_matrix * H, + gsl_vector * tau, gsl_matrix * V) + + This function is similar to *note gsl_linalg_hessenberg_unpack(): + 546, except it accumulates the matrix ‘U’ into ‘V’, so that V' = + VU. The matrix ‘V’ must be initialized prior to calling this + function. Setting ‘V’ to the identity matrix provides the same + result as *note gsl_linalg_hessenberg_unpack(): 546. If ‘H’ is + order ‘N’, then ‘V’ must have ‘N’ columns but may have any number + of rows. + + -- Function: int gsl_linalg_hessenberg_set_zero (gsl_matrix * H) + + This function sets the lower triangular portion of ‘H’, below the + subdiagonal, to zero. It is useful for clearing out the + Householder vectors after calling *note + gsl_linalg_hessenberg_decomp(): 545. + + +File: gsl-ref.info, Node: Hessenberg-Triangular Decomposition of Real Matrices, Next: Bidiagonalization, Prev: Hessenberg Decomposition of Real Matrices, Up: Linear Algebra + +14.12 Hessenberg-Triangular Decomposition of Real Matrices +========================================================== + +A general real matrix pair (A, B) can be decomposed by orthogonal +similarity transformations into the form + + A = U H V^T + B = U R V^T + +where U and V are orthogonal, H is an upper Hessenberg matrix, and R is +upper triangular. The Hessenberg-Triangular reduction is the first step +in the generalized Schur decomposition for the generalized eigenvalue +problem. + + -- Function: int gsl_linalg_hesstri_decomp (gsl_matrix * A, gsl_matrix + * B, gsl_matrix * U, gsl_matrix * V, gsl_vector * work) + + This function computes the Hessenberg-Triangular decomposition of + the matrix pair (‘A’, ‘B’). On output, H is stored in ‘A’, and R + is stored in ‘B’. If ‘U’ and ‘V’ are provided (they may be null), + the similarity transformations are stored in them. Additional + workspace of length N is needed in ‘work’. + + +File: gsl-ref.info, Node: Bidiagonalization, Next: Givens Rotations, Prev: Hessenberg-Triangular Decomposition of Real Matrices, Up: Linear Algebra + +14.13 Bidiagonalization +======================= + +A general matrix A can be factorized by similarity transformations into +the form, + + A = U B V^T + +where U and V are orthogonal matrices and B is a N-by-N bidiagonal +matrix with non-zero entries only on the diagonal and superdiagonal. +The size of ‘U’ is M-by-N and the size of ‘V’ is N-by-N. + + -- Function: int gsl_linalg_bidiag_decomp (gsl_matrix * A, gsl_vector + * tau_U, gsl_vector * tau_V) + + This function factorizes the M-by-N matrix ‘A’ into bidiagonal form + U B V^T. The diagonal and superdiagonal of the matrix B are stored + in the diagonal and superdiagonal of ‘A’. The orthogonal matrices + U and ‘V’ are stored as compressed Householder vectors in the + remaining elements of ‘A’. The Householder coefficients are stored + in the vectors ‘tau_U’ and ‘tau_V’. The length of ‘tau_U’ must + equal the number of elements in the diagonal of ‘A’ and the length + of ‘tau_V’ should be one element shorter. + + -- Function: int gsl_linalg_bidiag_unpack (const gsl_matrix * A, const + gsl_vector * tau_U, gsl_matrix * U, const gsl_vector * tau_V, + gsl_matrix * V, gsl_vector * diag, gsl_vector * superdiag) + + This function unpacks the bidiagonal decomposition of ‘A’ produced + by *note gsl_linalg_bidiag_decomp(): 54c, (‘A’, ‘tau_U’, ‘tau_V’) + into the separate orthogonal matrices ‘U’, ‘V’ and the diagonal + vector ‘diag’ and superdiagonal ‘superdiag’. Note that ‘U’ is + stored as a compact M-by-N orthogonal matrix satisfying U^T U = I + for efficiency. + + -- Function: int gsl_linalg_bidiag_unpack2 (gsl_matrix * A, gsl_vector + * tau_U, gsl_vector * tau_V, gsl_matrix * V) + + This function unpacks the bidiagonal decomposition of ‘A’ produced + by *note gsl_linalg_bidiag_decomp(): 54c, (‘A’, ‘tau_U’, ‘tau_V’) + into the separate orthogonal matrices ‘U’, ‘V’ and the diagonal + vector ‘diag’ and superdiagonal ‘superdiag’. The matrix ‘U’ is + stored in-place in ‘A’. + + -- Function: int gsl_linalg_bidiag_unpack_B (const gsl_matrix * A, + gsl_vector * diag, gsl_vector * superdiag) + + This function unpacks the diagonal and superdiagonal of the + bidiagonal decomposition of ‘A’ from *note + gsl_linalg_bidiag_decomp(): 54c, into the diagonal vector ‘diag’ + and superdiagonal vector ‘superdiag’. + + +File: gsl-ref.info, Node: Givens Rotations, Next: Householder Transformations, Prev: Bidiagonalization, Up: Linear Algebra + +14.14 Givens Rotations +====================== + +A Givens rotation is a rotation in the plane acting on two elements of a +given vector. It can be represented in matrix form as + +where the \cos{\theta} and \sin{\theta} appear at the intersection of +the i-th and j-th rows and columns. When acting on a vector x, +G(i,j,\theta) x performs a rotation of the (i,j) elements of x. Givens +rotations are typically used to introduce zeros in vectors, such as +during the QR decomposition of a matrix. In this case, it is typically +desired to find c and s such that + + [ c -s ] [ a ] = [ r ] + [ s c ] [ b ] [ 0 ] + +with r = \sqrt{a^2 + b^2}. + + -- Function: void gsl_linalg_givens (const double a, const double b, + double * c, double * s) + + This function computes c = \cos{\theta} and s = \sin{\theta} so + that the Givens matrix G(\theta) acting on the vector (a,b) + produces (r, 0), with r = \sqrt{a^2 + b^2}. + + -- Function: void gsl_linalg_givens_gv (gsl_vector * v, const size_t i, + const size_t j, const double c, const double s) + + This function applies the Givens rotation defined by c = + \cos{\theta} and s = \sin{\theta} to the ‘i’ and ‘j’ elements of + ‘v’. On output, (v(i),v(j)) \leftarrow G(\theta) (v(i),v(j)). + + +File: gsl-ref.info, Node: Householder Transformations, Next: Householder solver for linear systems, Prev: Givens Rotations, Up: Linear Algebra + +14.15 Householder Transformations +================================= + +A Householder transformation is a rank-1 modification of the identity +matrix which can be used to zero out selected elements of a vector. A +Householder matrix P takes the form, + + P = I - \tau v v^T + +where v is a vector (called the `Householder vector') and \tau = 2/(v^T +v). The functions described in this section use the rank-1 structure of +the Householder matrix to create and apply Householder transformations +efficiently. + + -- Function: double gsl_linalg_householder_transform (gsl_vector * w) + -- Function: gsl_complex gsl_linalg_complex_householder_transform + (gsl_vector_complex * w) + + This function prepares a Householder transformation P = I - \tau v + v^T which can be used to zero all the elements of the input vector + ‘w’ except the first. On output the Householder vector ‘v’ is + stored in ‘w’ and the scalar \tau is returned. The householder + vector ‘v’ is normalized so that ‘v[0] = 1’, however this 1 is not + stored in the output vector. Instead, ‘w[0]’ is set to the first + element of the transformed vector, so that if u = P w, ‘w[0] = + u[0]’ on output and the remainder of u is zero. + + -- Function: int gsl_linalg_householder_hm (double tau, const + gsl_vector * v, gsl_matrix * A) + -- Function: int gsl_linalg_complex_householder_hm (gsl_complex tau, + const gsl_vector_complex * v, gsl_matrix_complex * A) + + This function applies the Householder matrix P defined by the + scalar ‘tau’ and the vector ‘v’ to the left-hand side of the matrix + ‘A’. On output the result P A is stored in ‘A’. + + -- Function: int gsl_linalg_householder_mh (double tau, const + gsl_vector * v, gsl_matrix * A) + -- Function: int gsl_linalg_complex_householder_mh (gsl_complex tau, + const gsl_vector_complex * v, gsl_matrix_complex * A) + + This function applies the Householder matrix P defined by the + scalar ‘tau’ and the vector ‘v’ to the right-hand side of the + matrix ‘A’. On output the result A P is stored in ‘A’. + + -- Function: int gsl_linalg_householder_hv (double tau, const + gsl_vector * v, gsl_vector * w) + -- Function: int gsl_linalg_complex_householder_hv (gsl_complex tau, + const gsl_vector_complex * v, gsl_vector_complex * w) + + This function applies the Householder transformation P defined by + the scalar ‘tau’ and the vector ‘v’ to the vector ‘w’. On output + the result P w is stored in ‘w’. + + +File: gsl-ref.info, Node: Householder solver for linear systems, Next: Tridiagonal Systems, Prev: Householder Transformations, Up: Linear Algebra + +14.16 Householder solver for linear systems +=========================================== + + -- Function: int gsl_linalg_HH_solve (gsl_matrix * A, const gsl_vector + * b, gsl_vector * x) + + This function solves the system A x = b directly using Householder + transformations. On output the solution is stored in ‘x’ and ‘b’ + is not modified. The matrix ‘A’ is destroyed by the Householder + transformations. + + -- Function: int gsl_linalg_HH_svx (gsl_matrix * A, gsl_vector * x) + + This function solves the system A x = b in-place using Householder + transformations. On input ‘x’ should contain the right-hand side + b, which is replaced by the solution on output. The matrix ‘A’ is + destroyed by the Householder transformations. + + +File: gsl-ref.info, Node: Tridiagonal Systems, Next: Triangular Systems, Prev: Householder solver for linear systems, Up: Linear Algebra + +14.17 Tridiagonal Systems +========================= + +The functions described in this section efficiently solve symmetric, +non-symmetric and cyclic tridiagonal systems with minimal storage. Note +that the current implementations of these functions use a variant of +Cholesky decomposition, so the tridiagonal matrix must be positive +definite. For non-positive definite matrices, the functions return the +error code ‘GSL_ESING’. + + -- Function: int gsl_linalg_solve_tridiag (const gsl_vector * diag, + const gsl_vector * e, const gsl_vector * f, const gsl_vector + * b, gsl_vector * x) + + This function solves the general N-by-N system A x = b where ‘A’ is + tridiagonal (N \geq 2). The super-diagonal and sub-diagonal + vectors ‘e’ and ‘f’ must be one element shorter than the diagonal + vector ‘diag’. The form of ‘A’ for the 4-by-4 case is shown below, + + A = ( d_0 e_0 0 0 ) + ( f_0 d_1 e_1 0 ) + ( 0 f_1 d_2 e_2 ) + ( 0 0 f_2 d_3 ) + + -- Function: int gsl_linalg_solve_symm_tridiag (const gsl_vector + * diag, const gsl_vector * e, const gsl_vector * b, gsl_vector + * x) + + This function solves the general N-by-N system A x = b where ‘A’ is + symmetric tridiagonal (N \geq 2). The off-diagonal vector ‘e’ must + be one element shorter than the diagonal vector ‘diag’. The form + of ‘A’ for the 4-by-4 case is shown below, + + A = ( d_0 e_0 0 0 ) + ( e_0 d_1 e_1 0 ) + ( 0 e_1 d_2 e_2 ) + ( 0 0 e_2 d_3 ) + + -- Function: int gsl_linalg_solve_cyc_tridiag (const gsl_vector * diag, + const gsl_vector * e, const gsl_vector * f, const gsl_vector + * b, gsl_vector * x) + + This function solves the general N-by-N system A x = b where ‘A’ is + cyclic tridiagonal (N \geq 3). The cyclic super-diagonal and + sub-diagonal vectors ‘e’ and ‘f’ must have the same number of + elements as the diagonal vector ‘diag’. The form of ‘A’ for the + 4-by-4 case is shown below, + + A = ( d_0 e_0 0 f_3 ) + ( f_0 d_1 e_1 0 ) + ( 0 f_1 d_2 e_2 ) + ( e_3 0 f_2 d_3 ) + + -- Function: int gsl_linalg_solve_symm_cyc_tridiag (const gsl_vector + * diag, const gsl_vector * e, const gsl_vector * b, gsl_vector + * x) + + This function solves the general N-by-N system A x = b where ‘A’ is + symmetric cyclic tridiagonal (N \geq 3). The cyclic off-diagonal + vector ‘e’ must have the same number of elements as the diagonal + vector ‘diag’. The form of ‘A’ for the 4-by-4 case is shown below, + + A = ( d_0 e_0 0 e_3 ) + ( e_0 d_1 e_1 0 ) + ( 0 e_1 d_2 e_2 ) + ( e_3 0 e_2 d_3 ) + + +File: gsl-ref.info, Node: Triangular Systems, Next: Balancing, Prev: Tridiagonal Systems, Up: Linear Algebra + +14.18 Triangular Systems +======================== + + -- Function: int gsl_linalg_tri_upper_invert (gsl_matrix * T) + -- Function: int gsl_linalg_tri_lower_invert (gsl_matrix * T) + -- Function: int gsl_linalg_tri_upper_unit_invert (gsl_matrix * T) + -- Function: int gsl_linalg_tri_lower_unit_invert (gsl_matrix * T) + + These functions calculate the in-place inverse of the triangular + matrix ‘T’. When the ‘upper’ prefix is specified, then the upper + triangle of ‘T’ is used, and when the ‘lower’ prefix is specified, + the lower triangle is used. If the ‘unit’ prefix is specified, + then the diagonal elements of the matrix ‘T’ are taken as unity and + are not referenced. Otherwise the diagonal elements are used in + the inversion. + + -- Function: int gsl_linalg_tri_upper_rcond (const gsl_matrix * T, + double * rcond, gsl_vector * work) + -- Function: int gsl_linalg_tri_lower_rcond (const gsl_matrix * T, + double * rcond, gsl_vector * work) + + These functions estimate the reciprocal condition number, in the + 1-norm, of the upper or lower N-by-N triangular matrix ‘T’. The + reciprocal condition number is stored in ‘rcond’ on output, and is + defined by 1 / (||T||_1 \cdot ||T^{-1}||_1). Additional workspace + of size 3 N is required in ‘work’. + + +File: gsl-ref.info, Node: Balancing, Next: Examples<9>, Prev: Triangular Systems, Up: Linear Algebra + +14.19 Balancing +=============== + +The process of balancing a matrix applies similarity transformations to +make the rows and columns have comparable norms. This is useful, for +example, to reduce roundoff errors in the solution of eigenvalue +problems. Balancing a matrix A consists of replacing A with a similar +matrix + + A' = D^{-1} A D + +where D is a diagonal matrix whose entries are powers of the floating +point radix. + + -- Function: int gsl_linalg_balance_matrix (gsl_matrix * A, gsl_vector + * D) + + This function replaces the matrix ‘A’ with its balanced counterpart + and stores the diagonal elements of the similarity transformation + into the vector ‘D’. + + +File: gsl-ref.info, Node: Examples<9>, Next: References and Further Reading<9>, Prev: Balancing, Up: Linear Algebra + +14.20 Examples +============== + +The following program solves the linear system A x = b. The system to +be solved is, + + [ 0.18 0.60 0.57 0.96 ] [x0] [1.0] + [ 0.41 0.24 0.99 0.58 ] [x1] = [2.0] + [ 0.14 0.30 0.97 0.66 ] [x2] [3.0] + [ 0.51 0.13 0.19 0.85 ] [x3] [4.0] + +and the solution is found using LU decomposition of the matrix A. + + #include + #include + + int + main (void) + { + double a_data[] = { 0.18, 0.60, 0.57, 0.96, + 0.41, 0.24, 0.99, 0.58, + 0.14, 0.30, 0.97, 0.66, + 0.51, 0.13, 0.19, 0.85 }; + + double b_data[] = { 1.0, 2.0, 3.0, 4.0 }; + + gsl_matrix_view m + = gsl_matrix_view_array (a_data, 4, 4); + + gsl_vector_view b + = gsl_vector_view_array (b_data, 4); + + gsl_vector *x = gsl_vector_alloc (4); + + int s; + + gsl_permutation * p = gsl_permutation_alloc (4); + + gsl_linalg_LU_decomp (&m.matrix, p, &s); + + gsl_linalg_LU_solve (&m.matrix, p, &b.vector, x); + + printf ("x = \n"); + gsl_vector_fprintf (stdout, x, "%g"); + + gsl_permutation_free (p); + gsl_vector_free (x); + return 0; + } + +Here is the output from the program, + + x = + -4.05205 + -12.6056 + 1.66091 + 8.69377 + +This can be verified by multiplying the solution x by the original +matrix A using GNU octave, + + octave> A = [ 0.18, 0.60, 0.57, 0.96; + 0.41, 0.24, 0.99, 0.58; + 0.14, 0.30, 0.97, 0.66; + 0.51, 0.13, 0.19, 0.85 ]; + + octave> x = [ -4.05205; -12.6056; 1.66091; 8.69377]; + + octave> A * x + ans = + 1.0000 + 2.0000 + 3.0000 + 4.0000 + +This reproduces the original right-hand side vector, b, in accordance +with the equation A x = b. + + +File: gsl-ref.info, Node: References and Further Reading<9>, Prev: Examples<9>, Up: Linear Algebra + +14.21 References and Further Reading +==================================== + +Further information on the algorithms described in this section can be +found in the following book, + + * G. H. Golub, C. F. Van Loan, “Matrix Computations” (3rd Ed, 1996), + Johns Hopkins University Press, ISBN 0-8018-5414-8. + +The LAPACK library is described in the following manual, + + * `LAPACK Users’ Guide' (Third Edition, 1999), Published by SIAM, + ISBN 0-89871-447-8 + +The LAPACK source code can be found at ‘http://www.netlib.org/lapack’, +along with an online copy of the users guide. + +The Modified Golub-Reinsch algorithm is described in the following +paper, + + * T.F. Chan, “An Improved Algorithm for Computing the Singular Value + Decomposition”, ACM Transactions on Mathematical Software, 8 + (1982), pp 72–83. + +The Jacobi algorithm for singular value decomposition is described in +the following papers, + + * J.C. Nash, “A one-sided transformation method for the singular + value decomposition and algebraic eigenproblem”, Computer Journal, + Volume 18, Number 1 (1975), p 74–76 + + * J.C. Nash and S. Shlien “Simple algorithms for the partial singular + value decomposition”, Computer Journal, Volume 30 (1987), p + 268–275. + + * J. Demmel, K. Veselic, “Jacobi’s Method is more accurate than QR”, + Lapack Working Note 15 (LAWN-15), October 1989. Available from + netlib, ‘http://www.netlib.org/lapack/’ in the ‘lawns’ or + ‘lawnspdf’ directories. + +The algorithm for estimating a matrix condition number is described in +the following paper, + + * N. J. Higham, “FORTRAN codes for estimating the one-norm of a real + or complex matrix, with applications to condition estimation”, ACM + Trans. Math. Soft., vol. 14, no. 4, pp. 381-396, December + 1988. + + +File: gsl-ref.info, Node: Eigensystems, Next: Fast Fourier Transforms FFTs, Prev: Linear Algebra, Up: Top + +15 Eigensystems +*************** + +This chapter describes functions for computing eigenvalues and +eigenvectors of matrices. There are routines for real symmetric, real +nonsymmetric, complex hermitian, real generalized symmetric-definite, +complex generalized hermitian-definite, and real generalized +nonsymmetric eigensystems. Eigenvalues can be computed with or without +eigenvectors. The hermitian and real symmetric matrix algorithms are +symmetric bidiagonalization followed by QR reduction. The nonsymmetric +algorithm is the Francis QR double-shift. The generalized nonsymmetric +algorithm is the QZ method due to Moler and Stewart. + +The functions described in this chapter are declared in the header file +‘gsl_eigen.h’. + +* Menu: + +* Real Symmetric Matrices:: +* Complex Hermitian Matrices:: +* Real Nonsymmetric Matrices:: +* Real Generalized Symmetric-Definite Eigensystems:: +* Complex Generalized Hermitian-Definite Eigensystems:: +* Real Generalized Nonsymmetric Eigensystems:: +* Sorting Eigenvalues and Eigenvectors:: +* Examples: Examples<10>. +* References and Further Reading: References and Further Reading<10>. + + +File: gsl-ref.info, Node: Real Symmetric Matrices, Next: Complex Hermitian Matrices, Up: Eigensystems + +15.1 Real Symmetric Matrices +============================ + +For real symmetric matrices, the library uses the symmetric +bidiagonalization and QR reduction method. This is described in Golub & +van Loan, section 8.3. The computed eigenvalues are accurate to an +absolute accuracy of \epsilon ||A||_2, where \epsilon is the machine +precision. + + -- Type: gsl_eigen_symm_workspace + + This workspace contains internal parameters used for solving + symmetric eigenvalue problems. + + -- Function: gsl_eigen_symm_workspace * gsl_eigen_symm_alloc (const + size_t n) + + This function allocates a workspace for computing eigenvalues of + ‘n’-by-‘n’ real symmetric matrices. The size of the workspace is + O(2n). + + -- Function: void gsl_eigen_symm_free (gsl_eigen_symm_workspace * w) + + This function frees the memory associated with the workspace ‘w’. + + -- Function: int gsl_eigen_symm (gsl_matrix * A, gsl_vector * eval, + gsl_eigen_symm_workspace * w) + + This function computes the eigenvalues of the real symmetric matrix + ‘A’. Additional workspace of the appropriate size must be provided + in ‘w’. The diagonal and lower triangular part of ‘A’ are + destroyed during the computation, but the strict upper triangular + part is not referenced. The eigenvalues are stored in the vector + ‘eval’ and are unordered. + + -- Type: gsl_eigen_symmv_workspace + + This workspace contains internal parameters used for solving + symmetric eigenvalue and eigenvector problems. + + -- Function: gsl_eigen_symmv_workspace * gsl_eigen_symmv_alloc (const + size_t n) + + This function allocates a workspace for computing eigenvalues and + eigenvectors of ‘n’-by-‘n’ real symmetric matrices. The size of + the workspace is O(4n). + + -- Function: void gsl_eigen_symmv_free (gsl_eigen_symmv_workspace * w) + + This function frees the memory associated with the workspace ‘w’. + + -- Function: int gsl_eigen_symmv (gsl_matrix * A, gsl_vector * eval, + gsl_matrix * evec, gsl_eigen_symmv_workspace * w) + + This function computes the eigenvalues and eigenvectors of the real + symmetric matrix ‘A’. Additional workspace of the appropriate size + must be provided in ‘w’. The diagonal and lower triangular part of + ‘A’ are destroyed during the computation, but the strict upper + triangular part is not referenced. The eigenvalues are stored in + the vector ‘eval’ and are unordered. The corresponding + eigenvectors are stored in the columns of the matrix ‘evec’. For + example, the eigenvector in the first column corresponds to the + first eigenvalue. The eigenvectors are guaranteed to be mutually + orthogonal and normalised to unit magnitude. + + +File: gsl-ref.info, Node: Complex Hermitian Matrices, Next: Real Nonsymmetric Matrices, Prev: Real Symmetric Matrices, Up: Eigensystems + +15.2 Complex Hermitian Matrices +=============================== + +For hermitian matrices, the library uses the complex form of the +symmetric bidiagonalization and QR reduction method. + + -- Type: gsl_eigen_herm_workspace + + This workspace contains internal parameters used for solving + hermitian eigenvalue problems. + + -- Function: gsl_eigen_herm_workspace * gsl_eigen_herm_alloc (const + size_t n) + + This function allocates a workspace for computing eigenvalues of + ‘n’-by-‘n’ complex hermitian matrices. The size of the workspace + is O(3n). + + -- Function: void gsl_eigen_herm_free (gsl_eigen_herm_workspace * w) + + This function frees the memory associated with the workspace ‘w’. + + -- Function: int gsl_eigen_herm (gsl_matrix_complex * A, gsl_vector + * eval, gsl_eigen_herm_workspace * w) + + This function computes the eigenvalues of the complex hermitian + matrix ‘A’. Additional workspace of the appropriate size must be + provided in ‘w’. The diagonal and lower triangular part of ‘A’ are + destroyed during the computation, but the strict upper triangular + part is not referenced. The imaginary parts of the diagonal are + assumed to be zero and are not referenced. The eigenvalues are + stored in the vector ‘eval’ and are unordered. + + -- Type: gsl_eigen_hermv_workspace + + This workspace contains internal parameters used for solving + hermitian eigenvalue and eigenvector problems. + + -- Function: gsl_eigen_hermv_workspace * gsl_eigen_hermv_alloc (const + size_t n) + + This function allocates a workspace for computing eigenvalues and + eigenvectors of ‘n’-by-‘n’ complex hermitian matrices. The size of + the workspace is O(5n). + + -- Function: void gsl_eigen_hermv_free (gsl_eigen_hermv_workspace * w) + + This function frees the memory associated with the workspace ‘w’. + + -- Function: int gsl_eigen_hermv (gsl_matrix_complex * A, gsl_vector + * eval, gsl_matrix_complex * evec, gsl_eigen_hermv_workspace + * w) + + This function computes the eigenvalues and eigenvectors of the + complex hermitian matrix ‘A’. Additional workspace of the + appropriate size must be provided in ‘w’. The diagonal and lower + triangular part of ‘A’ are destroyed during the computation, but + the strict upper triangular part is not referenced. The imaginary + parts of the diagonal are assumed to be zero and are not + referenced. The eigenvalues are stored in the vector ‘eval’ and + are unordered. The corresponding complex eigenvectors are stored + in the columns of the matrix ‘evec’. For example, the eigenvector + in the first column corresponds to the first eigenvalue. The + eigenvectors are guaranteed to be mutually orthogonal and + normalised to unit magnitude. + + +File: gsl-ref.info, Node: Real Nonsymmetric Matrices, Next: Real Generalized Symmetric-Definite Eigensystems, Prev: Complex Hermitian Matrices, Up: Eigensystems + +15.3 Real Nonsymmetric Matrices +=============================== + +The solution of the real nonsymmetric eigensystem problem for a matrix A +involves computing the Schur decomposition + + A = Z T Z^T + +where Z is an orthogonal matrix of Schur vectors and T, the Schur form, +is quasi upper triangular with diagonal 1-by-1 blocks which are real +eigenvalues of A, and diagonal 2-by-2 blocks whose eigenvalues are +complex conjugate eigenvalues of A. The algorithm used is the +double-shift Francis method. + + -- Type: gsl_eigen_nonsymm_workspace + + This workspace contains internal parameters used for solving + nonsymmetric eigenvalue problems. + + -- Function: gsl_eigen_nonsymm_workspace * gsl_eigen_nonsymm_alloc + (const size_t n) + + This function allocates a workspace for computing eigenvalues of + ‘n’-by-‘n’ real nonsymmetric matrices. The size of the workspace + is O(2n). + + -- Function: void gsl_eigen_nonsymm_free (gsl_eigen_nonsymm_workspace + * w) + + This function frees the memory associated with the workspace ‘w’. + + -- Function: void gsl_eigen_nonsymm_params (const int compute_t, const + int balance, gsl_eigen_nonsymm_workspace * w) + + This function sets some parameters which determine how the + eigenvalue problem is solved in subsequent calls to *note + gsl_eigen_nonsymm(): 589. + + If ‘compute_t’ is set to 1, the full Schur form T will be computed + by *note gsl_eigen_nonsymm(): 589. If it is set to 0, T will not + be computed (this is the default setting). Computing the full + Schur form T requires approximately 1.5–2 times the number of + flops. + + If ‘balance’ is set to 1, a balancing transformation is applied to + the matrix prior to computing eigenvalues. This transformation is + designed to make the rows and columns of the matrix have comparable + norms, and can result in more accurate eigenvalues for matrices + whose entries vary widely in magnitude. See *note Balancing: 56b. + for more information. Note that the balancing transformation does + not preserve the orthogonality of the Schur vectors, so if you wish + to compute the Schur vectors with *note gsl_eigen_nonsymm_Z(): 58a. + you will obtain the Schur vectors of the balanced matrix instead of + the original matrix. The relationship will be + + T = Q^T D^{-1} A D Q + + where ‘Q’ is the matrix of Schur vectors for the balanced matrix, + and ‘D’ is the balancing transformation. Then *note + gsl_eigen_nonsymm_Z(): 58a. will compute a matrix ‘Z’ which + satisfies + + T = Z^{-1} A Z + + with Z = D Q. Note that ‘Z’ will not be orthogonal. For this + reason, balancing is not performed by default. + + -- Function: int gsl_eigen_nonsymm (gsl_matrix * A, gsl_vector_complex + * eval, gsl_eigen_nonsymm_workspace * w) + + This function computes the eigenvalues of the real nonsymmetric + matrix ‘A’ and stores them in the vector ‘eval’. If T is desired, + it is stored in the upper portion of ‘A’ on output. Otherwise, on + output, the diagonal of ‘A’ will contain the 1-by-1 real + eigenvalues and 2-by-2 complex conjugate eigenvalue systems, and + the rest of ‘A’ is destroyed. In rare cases, this function may + fail to find all eigenvalues. If this happens, an error code is + returned and the number of converged eigenvalues is stored in + ‘w->n_evals’. The converged eigenvalues are stored in the + beginning of ‘eval’. + + -- Function: int gsl_eigen_nonsymm_Z (gsl_matrix * A, + gsl_vector_complex * eval, gsl_matrix * Z, + gsl_eigen_nonsymm_workspace * w) + + This function is identical to *note gsl_eigen_nonsymm(): 589. + except that it also computes the Schur vectors and stores them into + ‘Z’. + + -- Type: gsl_eigen_nonsymmv_workspace + + This workspace contains internal parameters used for solving + nonsymmetric eigenvalue and eigenvector problems. + + -- Function: gsl_eigen_nonsymmv_workspace * gsl_eigen_nonsymmv_alloc + (const size_t n) + + This function allocates a workspace for computing eigenvalues and + eigenvectors of ‘n’-by-‘n’ real nonsymmetric matrices. The size of + the workspace is O(5n). + + -- Function: void gsl_eigen_nonsymmv_free (gsl_eigen_nonsymmv_workspace + * w) + + This function frees the memory associated with the workspace ‘w’. + + -- Function: void gsl_eigen_nonsymmv_params (const int balance, + gsl_eigen_nonsymm_workspace * w) + + This function sets parameters which determine how the eigenvalue + problem is solved in subsequent calls to *note + gsl_eigen_nonsymmv(): 58f. If ‘balance’ is set to 1, a balancing + transformation is applied to the matrix. See *note + gsl_eigen_nonsymm_params(): 588. for more information. Balancing + is turned off by default since it does not preserve the + orthogonality of the Schur vectors. + + -- Function: int gsl_eigen_nonsymmv (gsl_matrix * A, gsl_vector_complex + * eval, gsl_matrix_complex * evec, + gsl_eigen_nonsymmv_workspace * w) + + This function computes eigenvalues and right eigenvectors of the + ‘n’-by-‘n’ real nonsymmetric matrix ‘A’. It first calls *note + gsl_eigen_nonsymm(): 589. to compute the eigenvalues, Schur form T, + and Schur vectors. Then it finds eigenvectors of T and + backtransforms them using the Schur vectors. The Schur vectors are + destroyed in the process, but can be saved by using *note + gsl_eigen_nonsymmv_Z(): 590. The computed eigenvectors are + normalized to have unit magnitude. On output, the upper portion of + ‘A’ contains the Schur form T. If *note gsl_eigen_nonsymm(): 589. + fails, no eigenvectors are computed, and an error code is returned. + + -- Function: int gsl_eigen_nonsymmv_Z (gsl_matrix * A, + gsl_vector_complex * eval, gsl_matrix_complex * evec, + gsl_matrix * Z, gsl_eigen_nonsymmv_workspace * w) + + This function is identical to *note gsl_eigen_nonsymmv(): 58f. + except that it also saves the Schur vectors into ‘Z’. + + +File: gsl-ref.info, Node: Real Generalized Symmetric-Definite Eigensystems, Next: Complex Generalized Hermitian-Definite Eigensystems, Prev: Real Nonsymmetric Matrices, Up: Eigensystems + +15.4 Real Generalized Symmetric-Definite Eigensystems +===================================================== + +The real generalized symmetric-definite eigenvalue problem is to find +eigenvalues \lambda and eigenvectors x such that + + A x = \lambda B x + +where A and B are symmetric matrices, and B is positive-definite. This +problem reduces to the standard symmetric eigenvalue problem by applying +the Cholesky decomposition to B: + + A x = \lambda B x + A x = \lambda L L^T x + ( L^{-1} A L^{-T} ) L^T x = \lambda L^T x + +Therefore, the problem becomes C y = \lambda y where C = L^{-1} A L^{-T} +is symmetric, and y = L^T x. The standard symmetric eigensolver can be +applied to the matrix C. The resulting eigenvectors are backtransformed +to find the vectors of the original problem. The eigenvalues and +eigenvectors of the generalized symmetric-definite eigenproblem are +always real. + + -- Type: gsl_eigen_gensymm_workspace + + This workspace contains internal parameters used for solving + generalized symmetric eigenvalue problems. + + -- Function: gsl_eigen_gensymm_workspace * gsl_eigen_gensymm_alloc + (const size_t n) + + This function allocates a workspace for computing eigenvalues of + ‘n’-by-‘n’ real generalized symmetric-definite eigensystems. The + size of the workspace is O(2n). + + -- Function: void gsl_eigen_gensymm_free (gsl_eigen_gensymm_workspace + * w) + + This function frees the memory associated with the workspace ‘w’. + + -- Function: int gsl_eigen_gensymm (gsl_matrix * A, gsl_matrix * B, + gsl_vector * eval, gsl_eigen_gensymm_workspace * w) + + This function computes the eigenvalues of the real generalized + symmetric-definite matrix pair (‘A’, ‘B’), and stores them in + ‘eval’, using the method outlined above. On output, ‘B’ contains + its Cholesky decomposition and ‘A’ is destroyed. + + -- Type: gsl_eigen_gensymmv_workspace + + This workspace contains internal parameters used for solving + generalized symmetric eigenvalue and eigenvector problems. + + -- Function: gsl_eigen_gensymmv_workspace * gsl_eigen_gensymmv_alloc + (const size_t n) + + This function allocates a workspace for computing eigenvalues and + eigenvectors of ‘n’-by-‘n’ real generalized symmetric-definite + eigensystems. The size of the workspace is O(4n). + + -- Function: void gsl_eigen_gensymmv_free (gsl_eigen_gensymmv_workspace + * w) + + This function frees the memory associated with the workspace ‘w’. + + -- Function: int gsl_eigen_gensymmv (gsl_matrix * A, gsl_matrix * B, + gsl_vector * eval, gsl_matrix * evec, + gsl_eigen_gensymmv_workspace * w) + + This function computes the eigenvalues and eigenvectors of the real + generalized symmetric-definite matrix pair (‘A’, ‘B’), and stores + them in ‘eval’ and ‘evec’ respectively. The computed eigenvectors + are normalized to have unit magnitude. On output, ‘B’ contains its + Cholesky decomposition and ‘A’ is destroyed. + + +File: gsl-ref.info, Node: Complex Generalized Hermitian-Definite Eigensystems, Next: Real Generalized Nonsymmetric Eigensystems, Prev: Real Generalized Symmetric-Definite Eigensystems, Up: Eigensystems + +15.5 Complex Generalized Hermitian-Definite Eigensystems +======================================================== + +The complex generalized hermitian-definite eigenvalue problem is to find +eigenvalues \lambda and eigenvectors x such that + + A x = \lambda B x + +where A and B are hermitian matrices, and B is positive-definite. +Similarly to the real case, this can be reduced to C y = \lambda y where +C = L^{-1} A L^{-\dagger} is hermitian, and y = L^{\dagger} x. The +standard hermitian eigensolver can be applied to the matrix C. The +resulting eigenvectors are backtransformed to find the vectors of the +original problem. The eigenvalues of the generalized hermitian-definite +eigenproblem are always real. + + -- Type: gsl_eigen_genherm_workspace + + This workspace contains internal parameters used for solving + generalized hermitian eigenvalue problems. + + -- Function: gsl_eigen_genherm_workspace * gsl_eigen_genherm_alloc + (const size_t n) + + This function allocates a workspace for computing eigenvalues of + ‘n’-by-‘n’ complex generalized hermitian-definite eigensystems. + The size of the workspace is O(3n). + + -- Function: void gsl_eigen_genherm_free (gsl_eigen_genherm_workspace + * w) + + This function frees the memory associated with the workspace ‘w’. + + -- Function: int gsl_eigen_genherm (gsl_matrix_complex * A, + gsl_matrix_complex * B, gsl_vector * eval, + gsl_eigen_genherm_workspace * w) + + This function computes the eigenvalues of the complex generalized + hermitian-definite matrix pair (‘A’, ‘B’), and stores them in + ‘eval’, using the method outlined above. On output, ‘B’ contains + its Cholesky decomposition and ‘A’ is destroyed. + + -- Type: gsl_eigen_genhermv_workspace + + This workspace contains internal parameters used for solving + generalized hermitian eigenvalue and eigenvector problems. + + -- Function: gsl_eigen_genhermv_workspace * gsl_eigen_genhermv_alloc + (const size_t n) + + This function allocates a workspace for computing eigenvalues and + eigenvectors of ‘n’-by-‘n’ complex generalized hermitian-definite + eigensystems. The size of the workspace is O(5n). + + -- Function: void gsl_eigen_genhermv_free (gsl_eigen_genhermv_workspace + * w) + + This function frees the memory associated with the workspace ‘w’. + + -- Function: int gsl_eigen_genhermv (gsl_matrix_complex * A, + gsl_matrix_complex * B, gsl_vector * eval, gsl_matrix_complex + * evec, gsl_eigen_genhermv_workspace * w) + + This function computes the eigenvalues and eigenvectors of the + complex generalized hermitian-definite matrix pair (‘A’, ‘B’), and + stores them in ‘eval’ and ‘evec’ respectively. The computed + eigenvectors are normalized to have unit magnitude. On output, ‘B’ + contains its Cholesky decomposition and ‘A’ is destroyed. + + +File: gsl-ref.info, Node: Real Generalized Nonsymmetric Eigensystems, Next: Sorting Eigenvalues and Eigenvectors, Prev: Complex Generalized Hermitian-Definite Eigensystems, Up: Eigensystems + +15.6 Real Generalized Nonsymmetric Eigensystems +=============================================== + +Given two square matrices (A, B), the generalized nonsymmetric +eigenvalue problem is to find eigenvalues \lambda and eigenvectors x +such that + + A x = \lambda B x + +We may also define the problem as finding eigenvalues \mu and +eigenvectors y such that + + \mu A y = B y + +Note that these two problems are equivalent (with \lambda = 1/\mu) if +neither \lambda nor \mu is zero. If say, \lambda is zero, then it is +still a well defined eigenproblem, but its alternate problem involving +\mu is not. Therefore, to allow for zero (and infinite) eigenvalues, +the problem which is actually solved is + + \beta A x = \alpha B x + +The eigensolver routines below will return two values \alpha and \beta +and leave it to the user to perform the divisions \lambda = \alpha / +\beta and \mu = \beta / \alpha. + +If the determinant of the matrix pencil A - \lambda B is zero for all +\lambda, the problem is said to be singular; otherwise it is called +regular. Singularity normally leads to some \alpha = \beta = 0 which +means the eigenproblem is ill-conditioned and generally does not have +well defined eigenvalue solutions. The routines below are intended for +regular matrix pencils and could yield unpredictable results when +applied to singular pencils. + +The solution of the real generalized nonsymmetric eigensystem problem +for a matrix pair (A, B) involves computing the generalized Schur +decomposition + + A = Q S Z^T + B = Q T Z^T + +where Q and Z are orthogonal matrices of left and right Schur vectors +respectively, and (S, T) is the generalized Schur form whose diagonal +elements give the \alpha and \beta values. The algorithm used is the QZ +method due to Moler and Stewart (see references). + + -- Type: gsl_eigen_gen_workspace + + This workspace contains internal parameters used for solving + generalized eigenvalue problems. + + -- Function: gsl_eigen_gen_workspace * gsl_eigen_gen_alloc (const + size_t n) + + This function allocates a workspace for computing eigenvalues of + ‘n’-by-‘n’ real generalized nonsymmetric eigensystems. The size of + the workspace is O(n). + + -- Function: void gsl_eigen_gen_free (gsl_eigen_gen_workspace * w) + + This function frees the memory associated with the workspace ‘w’. + + -- Function: void gsl_eigen_gen_params (const int compute_s, const + int compute_t, const int balance, gsl_eigen_gen_workspace * w) + + This function sets some parameters which determine how the + eigenvalue problem is solved in subsequent calls to *note + gsl_eigen_gen(): 5a8. + + If ‘compute_s’ is set to 1, the full Schur form S will be computed + by *note gsl_eigen_gen(): 5a8. If it is set to 0, S will not be + computed (this is the default setting). S is a quasi upper + triangular matrix with 1-by-1 and 2-by-2 blocks on its diagonal. + 1-by-1 blocks correspond to real eigenvalues, and 2-by-2 blocks + correspond to complex eigenvalues. + + If ‘compute_t’ is set to 1, the full Schur form T will be computed + by *note gsl_eigen_gen(): 5a8. If it is set to 0, T will not be + computed (this is the default setting). T is an upper triangular + matrix with non-negative elements on its diagonal. Any 2-by-2 + blocks in S will correspond to a 2-by-2 diagonal block in T. + + The ‘balance’ parameter is currently ignored, since generalized + balancing is not yet implemented. + + -- Function: int gsl_eigen_gen (gsl_matrix * A, gsl_matrix * B, + gsl_vector_complex * alpha, gsl_vector * beta, + gsl_eigen_gen_workspace * w) + + This function computes the eigenvalues of the real generalized + nonsymmetric matrix pair (‘A’, ‘B’), and stores them as pairs in + (*note alpha: 497, ‘beta’), where *note alpha: 497. is complex and + ‘beta’ is real. If \beta_i is non-zero, then \lambda = \alpha_i / + \beta_i is an eigenvalue. Likewise, if \alpha_i is non-zero, then + \mu = \beta_i / \alpha_i is an eigenvalue of the alternate problem + \mu A y = B y. The elements of ‘beta’ are normalized to be + non-negative. + + If S is desired, it is stored in ‘A’ on output. If T is desired, + it is stored in ‘B’ on output. The ordering of eigenvalues in + (*note alpha: 497, ‘beta’) follows the ordering of the diagonal + blocks in the Schur forms S and T. In rare cases, this function may + fail to find all eigenvalues. If this occurs, an error code is + returned. + + -- Function: int gsl_eigen_gen_QZ (gsl_matrix * A, gsl_matrix * B, + gsl_vector_complex * alpha, gsl_vector * beta, gsl_matrix * Q, + gsl_matrix * Z, gsl_eigen_gen_workspace * w) + + This function is identical to *note gsl_eigen_gen(): 5a8. except + that it also computes the left and right Schur vectors and stores + them into ‘Q’ and ‘Z’ respectively. + + -- Type: gsl_eigen_genv_workspace + + This workspace contains internal parameters used for solving + generalized eigenvalue and eigenvector problems. + + -- Function: gsl_eigen_genv_workspace * gsl_eigen_genv_alloc (const + size_t n) + + This function allocates a workspace for computing eigenvalues and + eigenvectors of ‘n’-by-‘n’ real generalized nonsymmetric + eigensystems. The size of the workspace is O(7n). + + -- Function: void gsl_eigen_genv_free (gsl_eigen_genv_workspace * w) + + This function frees the memory associated with the workspace ‘w’. + + -- Function: int gsl_eigen_genv (gsl_matrix * A, gsl_matrix * B, + gsl_vector_complex * alpha, gsl_vector * beta, + gsl_matrix_complex * evec, gsl_eigen_genv_workspace * w) + + This function computes eigenvalues and right eigenvectors of the + ‘n’-by-‘n’ real generalized nonsymmetric matrix pair (‘A’, ‘B’). + The eigenvalues are stored in (*note alpha: 497, ‘beta’) and the + eigenvectors are stored in ‘evec’. It first calls *note + gsl_eigen_gen(): 5a8. to compute the eigenvalues, Schur forms, and + Schur vectors. Then it finds eigenvectors of the Schur forms and + backtransforms them using the Schur vectors. The Schur vectors are + destroyed in the process, but can be saved by using *note + gsl_eigen_genv_QZ(): 5ae. The computed eigenvectors are normalized + to have unit magnitude. On output, (‘A’, ‘B’) contains the + generalized Schur form (S, T). If *note gsl_eigen_gen(): 5a8. + fails, no eigenvectors are computed, and an error code is returned. + + -- Function: int gsl_eigen_genv_QZ (gsl_matrix * A, gsl_matrix * B, + gsl_vector_complex * alpha, gsl_vector * beta, + gsl_matrix_complex * evec, gsl_matrix * Q, gsl_matrix * Z, + gsl_eigen_genv_workspace * w) + + This function is identical to *note gsl_eigen_genv(): 5ad. except + that it also computes the left and right Schur vectors and stores + them into ‘Q’ and ‘Z’ respectively. + + +File: gsl-ref.info, Node: Sorting Eigenvalues and Eigenvectors, Next: Examples<10>, Prev: Real Generalized Nonsymmetric Eigensystems, Up: Eigensystems + +15.7 Sorting Eigenvalues and Eigenvectors +========================================= + + -- Function: int gsl_eigen_symmv_sort (gsl_vector * eval, gsl_matrix + * evec, gsl_eigen_sort_t sort_type) + + This function simultaneously sorts the eigenvalues stored in the + vector ‘eval’ and the corresponding real eigenvectors stored in the + columns of the matrix ‘evec’ into ascending or descending order + according to the value of the parameter ‘sort_type’, + + -- Type: gsl_eigen_sort_t + + ‘GSL_EIGEN_SORT_VAL_ASC’ ascending order in numerical value + + + ‘GSL_EIGEN_SORT_VAL_DESC’ descending order in numerical value + + + ‘GSL_EIGEN_SORT_ABS_ASC’ ascending order in magnitude + + + ‘GSL_EIGEN_SORT_ABS_DESC’ descending order in magnitude + + + -- Function: int gsl_eigen_hermv_sort (gsl_vector * eval, + gsl_matrix_complex * evec, gsl_eigen_sort_t sort_type) + + This function simultaneously sorts the eigenvalues stored in the + vector ‘eval’ and the corresponding complex eigenvectors stored in + the columns of the matrix ‘evec’ into ascending or descending order + according to the value of the parameter ‘sort_type’ as shown above. + + -- Function: int gsl_eigen_nonsymmv_sort (gsl_vector_complex * eval, + gsl_matrix_complex * evec, gsl_eigen_sort_t sort_type) + + This function simultaneously sorts the eigenvalues stored in the + vector ‘eval’ and the corresponding complex eigenvectors stored in + the columns of the matrix ‘evec’ into ascending or descending order + according to the value of the parameter ‘sort_type’ as shown above. + Only ‘GSL_EIGEN_SORT_ABS_ASC’ and ‘GSL_EIGEN_SORT_ABS_DESC’ are + supported due to the eigenvalues being complex. + + -- Function: int gsl_eigen_gensymmv_sort (gsl_vector * eval, gsl_matrix + * evec, gsl_eigen_sort_t sort_type) + + This function simultaneously sorts the eigenvalues stored in the + vector ‘eval’ and the corresponding real eigenvectors stored in the + columns of the matrix ‘evec’ into ascending or descending order + according to the value of the parameter ‘sort_type’ as shown above. + + -- Function: int gsl_eigen_genhermv_sort (gsl_vector * eval, + gsl_matrix_complex * evec, gsl_eigen_sort_t sort_type) + + This function simultaneously sorts the eigenvalues stored in the + vector ‘eval’ and the corresponding complex eigenvectors stored in + the columns of the matrix ‘evec’ into ascending or descending order + according to the value of the parameter ‘sort_type’ as shown above. + + -- Function: int gsl_eigen_genv_sort (gsl_vector_complex * alpha, + gsl_vector * beta, gsl_matrix_complex * evec, + gsl_eigen_sort_t sort_type) + + This function simultaneously sorts the eigenvalues stored in the + vectors (*note alpha: 497, ‘beta’) and the corresponding complex + eigenvectors stored in the columns of the matrix ‘evec’ into + ascending or descending order according to the value of the + parameter ‘sort_type’ as shown above. Only + ‘GSL_EIGEN_SORT_ABS_ASC’ and ‘GSL_EIGEN_SORT_ABS_DESC’ are + supported due to the eigenvalues being complex. + + +File: gsl-ref.info, Node: Examples<10>, Next: References and Further Reading<10>, Prev: Sorting Eigenvalues and Eigenvectors, Up: Eigensystems + +15.8 Examples +============= + +The following program computes the eigenvalues and eigenvectors of the +4-th order Hilbert matrix, H(i,j) = 1/(i + j + 1). + + #include + #include + #include + + int + main (void) + { + double data[] = { 1.0 , 1/2.0, 1/3.0, 1/4.0, + 1/2.0, 1/3.0, 1/4.0, 1/5.0, + 1/3.0, 1/4.0, 1/5.0, 1/6.0, + 1/4.0, 1/5.0, 1/6.0, 1/7.0 }; + + gsl_matrix_view m + = gsl_matrix_view_array (data, 4, 4); + + gsl_vector *eval = gsl_vector_alloc (4); + gsl_matrix *evec = gsl_matrix_alloc (4, 4); + + gsl_eigen_symmv_workspace * w = + gsl_eigen_symmv_alloc (4); + + gsl_eigen_symmv (&m.matrix, eval, evec, w); + + gsl_eigen_symmv_free (w); + + gsl_eigen_symmv_sort (eval, evec, + GSL_EIGEN_SORT_ABS_ASC); + + { + int i; + + for (i = 0; i < 4; i++) + { + double eval_i + = gsl_vector_get (eval, i); + gsl_vector_view evec_i + = gsl_matrix_column (evec, i); + + printf ("eigenvalue = %g\n", eval_i); + printf ("eigenvector = \n"); + gsl_vector_fprintf (stdout, + &evec_i.vector, "%g"); + } + } + + gsl_vector_free (eval); + gsl_matrix_free (evec); + + return 0; + } + +Here is the beginning of the output from the program: + + $ ./a.out + eigenvalue = 9.67023e-05 + eigenvector = + -0.0291933 + 0.328712 + -0.791411 + 0.514553 + ... + +This can be compared with the corresponding output from GNU octave: + + octave> [v,d] = eig(hilb(4)); + octave> diag(d) + ans = + + 9.6702e-05 + 6.7383e-03 + 1.6914e-01 + 1.5002e+00 + + octave> v + v = + + 0.029193 0.179186 -0.582076 0.792608 + -0.328712 -0.741918 0.370502 0.451923 + 0.791411 0.100228 0.509579 0.322416 + -0.514553 0.638283 0.514048 0.252161 + +Note that the eigenvectors can differ by a change of sign, since the +sign of an eigenvector is arbitrary. + +The following program illustrates the use of the nonsymmetric +eigensolver, by computing the eigenvalues and eigenvectors of the +Vandermonde matrix V(x;i,j) = x_i^{n - j} with x = (-1,-2,3,4). + + #include + #include + #include + + int + main (void) + { + double data[] = { -1.0, 1.0, -1.0, 1.0, + -8.0, 4.0, -2.0, 1.0, + 27.0, 9.0, 3.0, 1.0, + 64.0, 16.0, 4.0, 1.0 }; + + gsl_matrix_view m + = gsl_matrix_view_array (data, 4, 4); + + gsl_vector_complex *eval = gsl_vector_complex_alloc (4); + gsl_matrix_complex *evec = gsl_matrix_complex_alloc (4, 4); + + gsl_eigen_nonsymmv_workspace * w = + gsl_eigen_nonsymmv_alloc (4); + + gsl_eigen_nonsymmv (&m.matrix, eval, evec, w); + + gsl_eigen_nonsymmv_free (w); + + gsl_eigen_nonsymmv_sort (eval, evec, + GSL_EIGEN_SORT_ABS_DESC); + + { + int i, j; + + for (i = 0; i < 4; i++) + { + gsl_complex eval_i + = gsl_vector_complex_get (eval, i); + gsl_vector_complex_view evec_i + = gsl_matrix_complex_column (evec, i); + + printf ("eigenvalue = %g + %gi\n", + GSL_REAL(eval_i), GSL_IMAG(eval_i)); + printf ("eigenvector = \n"); + for (j = 0; j < 4; ++j) + { + gsl_complex z = + gsl_vector_complex_get(&evec_i.vector, j); + printf("%g + %gi\n", GSL_REAL(z), GSL_IMAG(z)); + } + } + } + + gsl_vector_complex_free(eval); + gsl_matrix_complex_free(evec); + + return 0; + } + +Here is the beginning of the output from the program: + + $ ./a.out + eigenvalue = -6.41391 + 0i + eigenvector = + -0.0998822 + 0i + -0.111251 + 0i + 0.292501 + 0i + 0.944505 + 0i + eigenvalue = 5.54555 + 3.08545i + eigenvector = + -0.043487 + -0.0076308i + 0.0642377 + -0.142127i + -0.515253 + 0.0405118i + -0.840592 + -0.00148565i + ... + +This can be compared with the corresponding output from GNU octave: + + octave> [v,d] = eig(vander([-1 -2 3 4])); + octave> diag(d) + ans = + + -6.4139 + 0.0000i + 5.5456 + 3.0854i + 5.5456 - 3.0854i + 2.3228 + 0.0000i + + octave> v + v = + + Columns 1 through 3: + + -0.09988 + 0.00000i -0.04350 - 0.00755i -0.04350 + 0.00755i + -0.11125 + 0.00000i 0.06399 - 0.14224i 0.06399 + 0.14224i + 0.29250 + 0.00000i -0.51518 + 0.04142i -0.51518 - 0.04142i + 0.94451 + 0.00000i -0.84059 + 0.00000i -0.84059 - 0.00000i + + Column 4: + + -0.14493 + 0.00000i + 0.35660 + 0.00000i + 0.91937 + 0.00000i + 0.08118 + 0.00000i + +Note that the eigenvectors corresponding to the eigenvalue 5.54555 + +3.08545i differ by the multiplicative constant 0.9999984 + 0.0017674i +which is an arbitrary phase factor of magnitude 1. + + +File: gsl-ref.info, Node: References and Further Reading<10>, Prev: Examples<10>, Up: Eigensystems + +15.9 References and Further Reading +=================================== + +Further information on the algorithms described in this section can be +found in the following book, + + * G. H. Golub, C. F. Van Loan, “Matrix Computations” (3rd Ed, 1996), + Johns Hopkins University Press, ISBN 0-8018-5414-8. + +Further information on the generalized eigensystems QZ algorithm can be +found in this paper, + + * C. Moler, G. Stewart, “An Algorithm for Generalized Matrix + Eigenvalue Problems”, SIAM J. Numer. Anal., Vol 10, No 2, 1973. + +Eigensystem routines for very large matrices can be found in the Fortran +library LAPACK. The LAPACK library is described in, + + * LAPACK Users’ Guide (Third Edition, 1999), Published by SIAM, ISBN + 0-89871-447-8. + +The LAPACK source code can be found at the website +‘http://www.netlib.org/lapack’ along with an online copy of the users +guide. + + +File: gsl-ref.info, Node: Fast Fourier Transforms FFTs, Next: Numerical Integration, Prev: Eigensystems, Up: Top + +16 Fast Fourier Transforms (FFTs) +********************************* + +This chapter describes functions for performing Fast Fourier Transforms +(FFTs). The library includes radix-2 routines (for lengths which are a +power of two) and mixed-radix routines (which work for any length). For +efficiency there are separate versions of the routines for real data and +for complex data. The mixed-radix routines are a reimplementation of +the FFTPACK library of Paul Swarztrauber. Fortran code for FFTPACK is +available on Netlib (FFTPACK also includes some routines for sine and +cosine transforms but these are currently not available in GSL). For +details and derivations of the underlying algorithms consult the +document “GSL FFT Algorithms” (see *note References and Further Reading: +5bb.) + +* Menu: + +* Mathematical Definitions:: +* Overview of complex data FFTs:: +* Radix-2 FFT routines for complex data:: +* Mixed-radix FFT routines for complex data:: +* Overview of real data FFTs:: +* Radix-2 FFT routines for real data:: +* Mixed-radix FFT routines for real data:: +* References and Further Reading: References and Further Reading<11>. + + +File: gsl-ref.info, Node: Mathematical Definitions, Next: Overview of complex data FFTs, Up: Fast Fourier Transforms FFTs + +16.1 Mathematical Definitions +============================= + +Fast Fourier Transforms are efficient algorithms for calculating the +discrete Fourier transform (DFT), + + x_j = \sum_{k=0}^{n-1} z_k \exp(-2 \pi i j k / n) + +The DFT usually arises as an approximation to the continuous Fourier +transform when functions are sampled at discrete intervals in space or +time. The naive evaluation of the discrete Fourier transform is a +matrix-vector multiplication W\vec{z}. A general matrix-vector +multiplication takes O(n^2) operations for n data-points. Fast Fourier +transform algorithms use a divide-and-conquer strategy to factorize the +matrix W into smaller sub-matrices, corresponding to the integer factors +of the length n. If n can be factorized into a product of integers f_1 +f_2 \ldots f_m then the DFT can be computed in O(n \sum f_i) operations. +For a radix-2 FFT this gives an operation count of O(n \log_2 n). + +All the FFT functions offer three types of transform: forwards, inverse +and backwards, based on the same mathematical definitions. The +definition of the `forward Fourier transform', x = \hbox{FFT}(z), is, + + x_j = \sum_{k=0}^{n-1} z_k \exp(-2 \pi i j k / n) + +and the definition of the `inverse Fourier transform', x = +\hbox{IFFT}(z), is, + + z_j = {1 \over n} \sum_{k=0}^{n-1} x_k \exp(2 \pi i j k / n). + +The factor of 1/n makes this a true inverse. For example, a call to +*note gsl_fft_complex_forward(): 5bd. followed by a call to *note +gsl_fft_complex_inverse(): 5be. should return the original data (within +numerical errors). + +In general there are two possible choices for the sign of the +exponential in the transform/ inverse-transform pair. GSL follows the +same convention as FFTPACK, using a negative exponential for the forward +transform. The advantage of this convention is that the inverse +transform recreates the original function with simple Fourier synthesis. +Numerical Recipes uses the opposite convention, a positive exponential +in the forward transform. + +The `backwards FFT' is simply our terminology for an unscaled version of +the inverse FFT, + + z^{backwards}_j = \sum_{k=0}^{n-1} x_k \exp(2 \pi i j k / n) + +When the overall scale of the result is unimportant it is often +convenient to use the backwards FFT instead of the inverse to save +unnecessary divisions. + + +File: gsl-ref.info, Node: Overview of complex data FFTs, Next: Radix-2 FFT routines for complex data, Prev: Mathematical Definitions, Up: Fast Fourier Transforms FFTs + +16.2 Overview of complex data FFTs +================================== + +The inputs and outputs for the complex FFT routines are `packed arrays' +of floating point numbers. In a packed array the real and imaginary +parts of each complex number are placed in alternate neighboring +elements. For example, the following definition of a packed array of +length 6: + + double x[3*2]; + gsl_complex_packed_array data = x; + +can be used to hold an array of three complex numbers, ‘z[3]’, in the +following way: + + data[0] = Re(z[0]) + data[1] = Im(z[0]) + data[2] = Re(z[1]) + data[3] = Im(z[1]) + data[4] = Re(z[2]) + data[5] = Im(z[2]) + +The array indices for the data have the same ordering as those in the +definition of the DFT—i.e. there are no index transformations or +permutations of the data. + +A `stride' parameter allows the user to perform transforms on the +elements ‘z[stride*i]’ instead of ‘z[i]’. A stride greater than 1 can +be used to take an in-place FFT of the column of a matrix. A stride of +1 accesses the array without any additional spacing between elements. + +To perform an FFT on a vector argument, such as ‘gsl_vector_complex * +v’, use the following definitions (or their equivalents) when calling +the functions described in this chapter: + + gsl_complex_packed_array data = v->data; + size_t stride = v->stride; + size_t n = v->size; + +For physical applications it is important to remember that the index +appearing in the DFT does not correspond directly to a physical +frequency. If the time-step of the DFT is \Delta then the +frequency-domain includes both positive and negative frequencies, +ranging from -1/(2\Delta) through 0 to +1/(2\Delta). The positive +frequencies are stored from the beginning of the array up to the middle, +and the negative frequencies are stored backwards from the end of the +array. + +Here is a table which shows the layout of the array ‘data’, and the +correspondence between the time-domain data z, and the frequency-domain +data x: + + index z x = FFT(z) + + 0 z(t = 0) x(f = 0) + 1 z(t = 1) x(f = 1/(n Delta)) + 2 z(t = 2) x(f = 2/(n Delta)) + . ........ .................. + n/2 z(t = n/2) x(f = +1/(2 Delta), + -1/(2 Delta)) + . ........ .................. + n-3 z(t = n-3) x(f = -3/(n Delta)) + n-2 z(t = n-2) x(f = -2/(n Delta)) + n-1 z(t = n-1) x(f = -1/(n Delta)) + +When n is even the location n/2 contains the most positive and negative +frequencies (+1/(2 \Delta), -1/(2 \Delta)) which are equivalent. If n +is odd then general structure of the table above still applies, but n/2 +does not appear. + + +File: gsl-ref.info, Node: Radix-2 FFT routines for complex data, Next: Mixed-radix FFT routines for complex data, Prev: Overview of complex data FFTs, Up: Fast Fourier Transforms FFTs + +16.3 Radix-2 FFT routines for complex data +========================================== + +The radix-2 algorithms described in this section are simple and compact, +although not necessarily the most efficient. They use the Cooley-Tukey +algorithm to compute in-place complex FFTs for lengths which are a power +of 2—no additional storage is required. The corresponding self-sorting +mixed-radix routines offer better performance at the expense of +requiring additional working space. + +All the functions described in this section are declared in the header +file ‘gsl_fft_complex.h’. + + -- Function: int gsl_fft_complex_radix2_forward + (gsl_complex_packed_array data, size_t stride, size_t n) + -- Function: int gsl_fft_complex_radix2_transform + (gsl_complex_packed_array data, size_t stride, size_t n, + gsl_fft_direction sign) + -- Function: int gsl_fft_complex_radix2_backward + (gsl_complex_packed_array data, size_t stride, size_t n) + -- Function: int gsl_fft_complex_radix2_inverse + (gsl_complex_packed_array data, size_t stride, size_t n) + + These functions compute forward, backward and inverse FFTs of + length ‘n’ with stride ‘stride’, on the packed complex array ‘data’ + using an in-place radix-2 decimation-in-time algorithm. The length + of the transform ‘n’ is restricted to powers of two. For the + ‘transform’ version of the function the ‘sign’ argument can be + either ‘forward’ (-1) or ‘backward’ (+1). + + The functions return a value of ‘GSL_SUCCESS’ if no errors were + detected, or *note GSL_EDOM: 28. if the length of the data ‘n’ is + not a power of two. + + -- Function: int gsl_fft_complex_radix2_dif_forward + (gsl_complex_packed_array data, size_t stride, size_t n) + -- Function: int gsl_fft_complex_radix2_dif_transform + (gsl_complex_packed_array data, size_t stride, size_t n, + gsl_fft_direction sign) + -- Function: int gsl_fft_complex_radix2_dif_backward + (gsl_complex_packed_array data, size_t stride, size_t n) + -- Function: int gsl_fft_complex_radix2_dif_inverse + (gsl_complex_packed_array data, size_t stride, size_t n) + + These are decimation-in-frequency versions of the radix-2 FFT + functions. + +Here is an example program which computes the FFT of a short pulse in a +sample of length 128. To make the resulting Fourier transform real the +pulse is defined for equal positive and negative times (-10 \dots 10), +where the negative times wrap around the end of the array. + + #include + #include + #include + #include + + #define REAL(z,i) ((z)[2*(i)]) + #define IMAG(z,i) ((z)[2*(i)+1]) + + int + main (void) + { + int i; double data[2*128]; + + for (i = 0; i < 128; i++) + { + REAL(data,i) = 0.0; IMAG(data,i) = 0.0; + } + + REAL(data,0) = 1.0; + + for (i = 1; i <= 10; i++) + { + REAL(data,i) = REAL(data,128-i) = 1.0; + } + + for (i = 0; i < 128; i++) + { + printf ("%d %e %e\n", i, + REAL(data,i), IMAG(data,i)); + } + printf ("\n\n"); + + gsl_fft_complex_radix2_forward (data, 1, 128); + + for (i = 0; i < 128; i++) + { + printf ("%d %e %e\n", i, + REAL(data,i)/sqrt(128), + IMAG(data,i)/sqrt(128)); + } + + return 0; + } + +Note that we have assumed that the program is using the default error +handler (which calls ‘abort()’ for any errors). If you are not using a +safe error handler you would need to check the return status of *note +gsl_fft_complex_radix2_forward(): 35. + +The transformed data is rescaled by 1/\sqrt n so that it fits on the +same plot as the input. Only the real part is shown, by the choice of +the input data the imaginary part is zero. Allowing for the wrap-around +of negative times at t=128, and working in units of k/n, the DFT +approximates the continuum Fourier transform, giving a modulated sine +function. + + \int_{-a}^{+a} e^{-2 \pi i k x} dx = {\sin(2\pi k a) \over\pi k} + +The output of the example program is plotted in Fig. %s. + +[image src="fft-complex-radix2.png"] + +Figure: A pulse and its discrete Fourier transform, output from the +example program. + + +File: gsl-ref.info, Node: Mixed-radix FFT routines for complex data, Next: Overview of real data FFTs, Prev: Radix-2 FFT routines for complex data, Up: Fast Fourier Transforms FFTs + +16.4 Mixed-radix FFT routines for complex data +============================================== + +This section describes mixed-radix FFT algorithms for complex data. The +mixed-radix functions work for FFTs of any length. They are a +reimplementation of Paul Swarztrauber’s Fortran FFTPACK library. The +theory is explained in the review article “Self-sorting Mixed-radix +FFTs” by Clive Temperton. The routines here use the same indexing +scheme and basic algorithms as FFTPACK. + +The mixed-radix algorithm is based on sub-transform modules—highly +optimized small length FFTs which are combined to create larger FFTs. +There are efficient modules for factors of 2, 3, 4, 5, 6 and 7. The +modules for the composite factors of 4 and 6 are faster than combining +the modules for 2*2 and 2*3. + +For factors which are not implemented as modules there is a fall-back to +a general length-n module which uses Singleton’s method for efficiently +computing a DFT. This module is O(n^2), and slower than a dedicated +module would be but works for any length n. Of course, lengths which +use the general length-n module will still be factorized as much as +possible. For example, a length of 143 will be factorized into 11*13. +Large prime factors are the worst case scenario, e.g. as found in +n=2*3*99991, and should be avoided because their O(n^2) scaling will +dominate the run-time (consult the document “GSL FFT Algorithms” +included in the GSL distribution if you encounter this problem). + +The mixed-radix initialization function *note +gsl_fft_complex_wavetable_alloc(): 5ca. returns the list of factors +chosen by the library for a given length n. It can be used to check how +well the length has been factorized, and estimate the run-time. To a +first approximation the run-time scales as n \sum f_i, where the f_i are +the factors of n. For programs under user control you may wish to issue +a warning that the transform will be slow when the length is poorly +factorized. If you frequently encounter data lengths which cannot be +factorized using the existing small-prime modules consult “GSL FFT +Algorithms” for details on adding support for other factors. + +All the functions described in this section are declared in the header +file ‘gsl_fft_complex.h’. + + -- Function: gsl_fft_complex_wavetable * + gsl_fft_complex_wavetable_alloc (size_t n) + + This function prepares a trigonometric lookup table for a complex + FFT of length ‘n’. The function returns a pointer to the newly + allocated *note gsl_fft_complex_wavetable: 5cb. if no errors were + detected, and a null pointer in the case of error. The length ‘n’ + is factorized into a product of subtransforms, and the factors and + their trigonometric coefficients are stored in the wavetable. The + trigonometric coefficients are computed using direct calls to ‘sin’ + and ‘cos’, for accuracy. Recursion relations could be used to + compute the lookup table faster, but if an application performs + many FFTs of the same length then this computation is a one-off + overhead which does not affect the final throughput. + + The wavetable structure can be used repeatedly for any transform of + the same length. The table is not modified by calls to any of the + other FFT functions. The same wavetable can be used for both + forward and backward (or inverse) transforms of a given length. + + -- Function: void gsl_fft_complex_wavetable_free + (gsl_fft_complex_wavetable * wavetable) + + This function frees the memory associated with the wavetable + ‘wavetable’. The wavetable can be freed if no further FFTs of the + same length will be needed. + +These functions operate on a *note gsl_fft_complex_wavetable: 5cb. +structure which contains internal parameters for the FFT. It is not +necessary to set any of the components directly but it can sometimes be +useful to examine them. For example, the chosen factorization of the +FFT length is given and can be used to provide an estimate of the +run-time or numerical error. The wavetable structure is declared in the +header file ‘gsl_fft_complex.h’. + + -- Type: gsl_fft_complex_wavetable + + This is a structure that holds the factorization and trigonometric + lookup tables for the mixed radix fft algorithm. It has the + following components: + + ‘size_t n’ This is the number of complex data points + + + ‘size_t nf’ This is the number of factors that the length ‘n’ was decomposed into. + + + ‘size_t factor[64]’ This is the array of factors. Only the first ‘nf’ elements are used. + + + ‘gsl_complex * trig’ This is a pointer to a preallocated trigonometric lookup table of ‘n’ complex elements. + + + ‘gsl_complex * twiddle[64]’ This is an array of pointers into ‘trig’, giving the twiddle factors for each pass. + + + -- Type: gsl_fft_complex_workspace + + The mixed radix algorithms require additional working space to hold + the intermediate steps of the transform. + + -- Function: gsl_fft_complex_workspace * + gsl_fft_complex_workspace_alloc (size_t n) + + This function allocates a workspace for a complex transform of + length ‘n’. + + -- Function: void gsl_fft_complex_workspace_free + (gsl_fft_complex_workspace * workspace) + + This function frees the memory associated with the workspace + ‘workspace’. The workspace can be freed if no further FFTs of the + same length will be needed. + +The following functions compute the transform, + + -- Function: int gsl_fft_complex_forward + (gsl_complex_packed_array data, size_t stride, size_t n, const + gsl_fft_complex_wavetable * wavetable, + gsl_fft_complex_workspace * work) + -- Function: int gsl_fft_complex_transform + (gsl_complex_packed_array data, size_t stride, size_t n, const + gsl_fft_complex_wavetable * wavetable, + gsl_fft_complex_workspace * work, gsl_fft_direction sign) + -- Function: int gsl_fft_complex_backward + (gsl_complex_packed_array data, size_t stride, size_t n, const + gsl_fft_complex_wavetable * wavetable, + gsl_fft_complex_workspace * work) + -- Function: int gsl_fft_complex_inverse + (gsl_complex_packed_array data, size_t stride, size_t n, const + gsl_fft_complex_wavetable * wavetable, + gsl_fft_complex_workspace * work) + + These functions compute forward, backward and inverse FFTs of + length ‘n’ with stride ‘stride’, on the packed complex array + ‘data’, using a mixed radix decimation-in-frequency algorithm. + There is no restriction on the length ‘n’. Efficient modules are + provided for subtransforms of length 2, 3, 4, 5, 6 and 7. Any + remaining factors are computed with a slow, O(n^2), general-n + module. The caller must supply a ‘wavetable’ containing the + trigonometric lookup tables and a workspace ‘work’. For the + ‘transform’ version of the function the ‘sign’ argument can be + either ‘forward’ (-1) or ‘backward’ (+1). + + The functions return a value of ‘0’ if no errors were detected. + The following ‘gsl_errno’ conditions are defined for these + functions: + + *note GSL_EDOM: 28. The length of the data ‘n’ is not a positive integer (i.e. ‘n’ is zero). + + + *note GSL_EINVAL: 2b. The length of the data ‘n’ and the length used to compute the given ‘wavetable’ do not match. + + +Here is an example program which computes the FFT of a short pulse in a +sample of length 630 (=2*3*3*5*7) using the mixed-radix algorithm. + + #include + #include + #include + #include + + #define REAL(z,i) ((z)[2*(i)]) + #define IMAG(z,i) ((z)[2*(i)+1]) + + int + main (void) + { + int i; + const int n = 630; + double data[2*n]; + + gsl_fft_complex_wavetable * wavetable; + gsl_fft_complex_workspace * workspace; + + for (i = 0; i < n; i++) + { + REAL(data,i) = 0.0; + IMAG(data,i) = 0.0; + } + + data[0] = 1.0; + + for (i = 1; i <= 10; i++) + { + REAL(data,i) = REAL(data,n-i) = 1.0; + } + + for (i = 0; i < n; i++) + { + printf ("%d: %e %e\n", i, REAL(data,i), + IMAG(data,i)); + } + printf ("\n"); + + wavetable = gsl_fft_complex_wavetable_alloc (n); + workspace = gsl_fft_complex_workspace_alloc (n); + + for (i = 0; i < (int) wavetable->nf; i++) + { + printf ("# factor %d: %zu\n", i, + wavetable->factor[i]); + } + + gsl_fft_complex_forward (data, 1, n, + wavetable, workspace); + + for (i = 0; i < n; i++) + { + printf ("%d: %e %e\n", i, REAL(data,i), + IMAG(data,i)); + } + + gsl_fft_complex_wavetable_free (wavetable); + gsl_fft_complex_workspace_free (workspace); + return 0; + } + +Note that we have assumed that the program is using the default ‘gsl’ +error handler (which calls ‘abort()’ for any errors). If you are not +using a safe error handler you would need to check the return status of +all the ‘gsl’ routines. + + +File: gsl-ref.info, Node: Overview of real data FFTs, Next: Radix-2 FFT routines for real data, Prev: Mixed-radix FFT routines for complex data, Up: Fast Fourier Transforms FFTs + +16.5 Overview of real data FFTs +=============================== + +The functions for real data are similar to those for complex data. +However, there is an important difference between forward and inverse +transforms. The Fourier transform of a real sequence is not real. It +is a complex sequence with a special symmetry: + + z_k = z_{n-k}^* + +A sequence with this symmetry is called `conjugate-complex' or +`half-complex'. This different structure requires different storage +layouts for the forward transform (from real to half-complex) and +inverse transform (from half-complex back to real). As a consequence +the routines are divided into two sets: functions in ‘gsl_fft_real’ +which operate on real sequences and functions in ‘gsl_fft_halfcomplex’ +which operate on half-complex sequences. + +Functions in ‘gsl_fft_real’ compute the frequency coefficients of a real +sequence. The half-complex coefficients c of a real sequence x are +given by Fourier analysis, + + c_k = \sum_{j=0}^{n-1} x_j \exp(-2 \pi i j k /n) + +Functions in ‘gsl_fft_halfcomplex’ compute inverse or backwards +transforms. They reconstruct real sequences by Fourier synthesis from +their half-complex frequency coefficients, c, + + x_j = {1 \over n} \sum_{k=0}^{n-1} c_k \exp(2 \pi i j k /n) + +The symmetry of the half-complex sequence implies that only half of the +complex numbers in the output need to be stored. The remaining half can +be reconstructed using the half-complex symmetry condition. This works +for all lengths, even and odd—when the length is even the middle value +where k=n/2 is also real. Thus only ‘n’ real numbers are required to +store the half-complex sequence, and the transform of a real sequence +can be stored in the same size array as the original data. + +The precise storage arrangements depend on the algorithm, and are +different for radix-2 and mixed-radix routines. The radix-2 function +operates in-place, which constrains the locations where each element can +be stored. The restriction forces real and imaginary parts to be stored +far apart. The mixed-radix algorithm does not have this restriction, +and it stores the real and imaginary parts of a given term in +neighboring locations (which is desirable for better locality of memory +accesses). + + +File: gsl-ref.info, Node: Radix-2 FFT routines for real data, Next: Mixed-radix FFT routines for real data, Prev: Overview of real data FFTs, Up: Fast Fourier Transforms FFTs + +16.6 Radix-2 FFT routines for real data +======================================= + +This section describes radix-2 FFT algorithms for real data. They use +the Cooley-Tukey algorithm to compute in-place FFTs for lengths which +are a power of 2. + +The radix-2 FFT functions for real data are declared in the header files +‘gsl_fft_real.h’ + + -- Function: int gsl_fft_real_radix2_transform (double data[], + size_t stride, size_t n) + + This function computes an in-place radix-2 FFT of length ‘n’ and + stride ‘stride’ on the real array ‘data’. The output is a + half-complex sequence, which is stored in-place. The arrangement + of the half-complex terms uses the following scheme: for k < n/2 + the real part of the k-th term is stored in location k, and the + corresponding imaginary part is stored in location n-k. Terms with + k > n/2 can be reconstructed using the symmetry z_k = z^*_{n-k}. + The terms for k=0 and k=n/2 are both purely real, and count as a + special case. Their real parts are stored in locations 0 and n/2 + respectively, while their imaginary parts which are zero are not + stored. + + The following table shows the correspondence between the output + ‘data’ and the equivalent results obtained by considering the input + data as a complex sequence with zero imaginary part (assuming + ‘stride’ = 1}): + + complex[0].real = data[0] + complex[0].imag = 0 + complex[1].real = data[1] + complex[1].imag = data[n-1] + ............... ................ + complex[k].real = data[k] + complex[k].imag = data[n-k] + ............... ................ + complex[n/2].real = data[n/2] + complex[n/2].imag = 0 + ............... ................ + complex[k'].real = data[k] k' = n - k + complex[k'].imag = -data[n-k] + ............... ................ + complex[n-1].real = data[1] + complex[n-1].imag = -data[n-1] + + Note that the output data can be converted into the full complex + sequence using the function *note + gsl_fft_halfcomplex_radix2_unpack(): 5d5. described below. + +The radix-2 FFT functions for halfcomplex data are declared in the +header file ‘gsl_fft_halfcomplex.h’. + + -- Function: int gsl_fft_halfcomplex_radix2_inverse (double data[], + size_t stride, size_t n) + -- Function: int gsl_fft_halfcomplex_radix2_backward (double data[], + size_t stride, size_t n) + + These functions compute the inverse or backwards in-place radix-2 + FFT of length ‘n’ and stride ‘stride’ on the half-complex sequence + ‘data’ stored according the output scheme used by + ‘gsl_fft_real_radix2()’. The result is a real array stored in + natural order. + + -- Function: int gsl_fft_halfcomplex_radix2_unpack (const + double halfcomplex_coefficient[], + gsl_complex_packed_array complex_coefficient, size_t stride, + size_t n) + + This function converts ‘halfcomplex_coefficient’, an array of + half-complex coefficients as returned by *note + gsl_fft_real_radix2_transform(): 5d4, into an ordinary complex + array, ‘complex_coefficient’. It fills in the complex array using + the symmetry z_k = z_{n-k}^* to reconstruct the redundant elements. + The algorithm for the conversion is: + + complex_coefficient[0].real = halfcomplex_coefficient[0]; + complex_coefficient[0].imag = 0.0; + + for (i = 1; i < n - i; i++) + { + double hc_real = halfcomplex_coefficient[i*stride]; + double hc_imag = halfcomplex_coefficient[(n-i)*stride]; + complex_coefficient[i*stride].real = hc_real; + complex_coefficient[i*stride].imag = hc_imag; + complex_coefficient[(n - i)*stride].real = hc_real; + complex_coefficient[(n - i)*stride].imag = -hc_imag; + } + + if (i == n - i) + { + complex_coefficient[i*stride].real = halfcomplex_coefficient[(n - 1)*stride]; + complex_coefficient[i*stride].imag = 0.0; + } + + +File: gsl-ref.info, Node: Mixed-radix FFT routines for real data, Next: References and Further Reading<11>, Prev: Radix-2 FFT routines for real data, Up: Fast Fourier Transforms FFTs + +16.7 Mixed-radix FFT routines for real data +=========================================== + +This section describes mixed-radix FFT algorithms for real data. The +mixed-radix functions work for FFTs of any length. They are a +reimplementation of the real-FFT routines in the Fortran FFTPACK library +by Paul Swarztrauber. The theory behind the algorithm is explained in +the article “Fast Mixed-Radix Real Fourier Transforms” by Clive +Temperton. The routines here use the same indexing scheme and basic +algorithms as FFTPACK. + +The functions use the FFTPACK storage convention for half-complex +sequences. In this convention the half-complex transform of a real +sequence is stored with frequencies in increasing order, starting at +zero, with the real and imaginary parts of each frequency in neighboring +locations. When a value is known to be real the imaginary part is not +stored. The imaginary part of the zero-frequency component is never +stored. It is known to be zero (since the zero frequency component is +simply the sum of the input data (all real)). For a sequence of even +length the imaginary part of the frequency n/2 is not stored either, +since the symmetry z_k = z_{n-k}^* implies that this is purely real too. + +The storage scheme is best shown by some examples. The table below +shows the output for an odd-length sequence, n=5. The two columns give +the correspondence between the 5 values in the half-complex sequence +returned by *note gsl_fft_real_transform(): 5d9, ‘halfcomplex[]’ and the +values ‘complex[]’ that would be returned if the same real input +sequence were passed to *note gsl_fft_complex_backward(): 5d1. as a +complex sequence (with imaginary parts set to ‘0’): + + complex[0].real = halfcomplex[0] + complex[0].imag = 0 + complex[1].real = halfcomplex[1] + complex[1].imag = halfcomplex[2] + complex[2].real = halfcomplex[3] + complex[2].imag = halfcomplex[4] + complex[3].real = halfcomplex[3] + complex[3].imag = -halfcomplex[4] + complex[4].real = halfcomplex[1] + complex[4].imag = -halfcomplex[2] + +The upper elements of the ‘complex’ array, ‘complex[3]’ and ‘complex[4]’ +are filled in using the symmetry condition. The imaginary part of the +zero-frequency term ‘complex[0].imag’ is known to be zero by the +symmetry. + +The next table shows the output for an even-length sequence, n=6. In +the even case there are two values which are purely real: + + complex[0].real = halfcomplex[0] + complex[0].imag = 0 + complex[1].real = halfcomplex[1] + complex[1].imag = halfcomplex[2] + complex[2].real = halfcomplex[3] + complex[2].imag = halfcomplex[4] + complex[3].real = halfcomplex[5] + complex[3].imag = 0 + complex[4].real = halfcomplex[3] + complex[4].imag = -halfcomplex[4] + complex[5].real = halfcomplex[1] + complex[5].imag = -halfcomplex[2] + +The upper elements of the ‘complex’ array, ‘complex[4]’ and ‘complex[5]’ +are filled in using the symmetry condition. Both ‘complex[0].imag’ and +‘complex[3].imag’ are known to be zero. + +All these functions are declared in the header files ‘gsl_fft_real.h’ +and ‘gsl_fft_halfcomplex.h’. + + -- Type: gsl_fft_real_wavetable + -- Type: gsl_fft_halfcomplex_wavetable + + These data structures contain lookup tables for an FFT of a fixed + size. + + -- Function: gsl_fft_real_wavetable * gsl_fft_real_wavetable_alloc + (size_t n) + -- Function: gsl_fft_halfcomplex_wavetable * + gsl_fft_halfcomplex_wavetable_alloc (size_t n) + + These functions prepare trigonometric lookup tables for an FFT of + size n real elements. The functions return a pointer to the newly + allocated struct if no errors were detected, and a null pointer in + the case of error. The length ‘n’ is factorized into a product of + subtransforms, and the factors and their trigonometric coefficients + are stored in the wavetable. The trigonometric coefficients are + computed using direct calls to ‘sin’ and ‘cos’, for accuracy. + Recursion relations could be used to compute the lookup table + faster, but if an application performs many FFTs of the same length + then computing the wavetable is a one-off overhead which does not + affect the final throughput. + + The wavetable structure can be used repeatedly for any transform of + the same length. The table is not modified by calls to any of the + other FFT functions. The appropriate type of wavetable must be + used for forward real or inverse half-complex transforms. + + -- Function: void gsl_fft_real_wavetable_free (gsl_fft_real_wavetable + * wavetable) + -- Function: void gsl_fft_halfcomplex_wavetable_free + (gsl_fft_halfcomplex_wavetable * wavetable) + + These functions free the memory associated with the wavetable + ‘wavetable’. The wavetable can be freed if no further FFTs of the + same length will be needed. + +The mixed radix algorithms require additional working space to hold the +intermediate steps of the transform, + + -- Type: gsl_fft_real_workspace + + This workspace contains parameters needed to compute a real FFT. + + -- Function: gsl_fft_real_workspace * gsl_fft_real_workspace_alloc + (size_t n) + + This function allocates a workspace for a real transform of length + ‘n’. The same workspace can be used for both forward real and + inverse halfcomplex transforms. + + -- Function: void gsl_fft_real_workspace_free (gsl_fft_real_workspace + * workspace) + + This function frees the memory associated with the workspace + ‘workspace’. The workspace can be freed if no further FFTs of the + same length will be needed. + +The following functions compute the transforms of real and half-complex +data, + + -- Function: int gsl_fft_real_transform (double data[], size_t stride, + size_t n, const gsl_fft_real_wavetable * wavetable, + gsl_fft_real_workspace * work) + -- Function: int gsl_fft_halfcomplex_transform (double data[], + size_t stride, size_t n, const gsl_fft_halfcomplex_wavetable + * wavetable, gsl_fft_real_workspace * work) + + These functions compute the FFT of ‘data’, a real or half-complex + array of length ‘n’, using a mixed radix decimation-in-frequency + algorithm. For *note gsl_fft_real_transform(): 5d9. ‘data’ is an + array of time-ordered real data. For *note + gsl_fft_halfcomplex_transform(): 5e3. ‘data’ contains Fourier + coefficients in the half-complex ordering described above. There + is no restriction on the length ‘n’. Efficient modules are + provided for subtransforms of length 2, 3, 4 and 5. Any remaining + factors are computed with a slow, O(n^2), general-n module. The + caller must supply a ‘wavetable’ containing trigonometric lookup + tables and a workspace ‘work’. + + -- Function: int gsl_fft_real_unpack (const double real_coefficient[], + gsl_complex_packed_array complex_coefficient, size_t stride, + size_t n) + + This function converts a single real array, ‘real_coefficient’ into + an equivalent complex array, ‘complex_coefficient’, (with imaginary + part set to zero), suitable for ‘gsl_fft_complex’ routines. The + algorithm for the conversion is simply: + + for (i = 0; i < n; i++) + { + complex_coefficient[i*stride].real = real_coefficient[i*stride]; + complex_coefficient[i*stride].imag = 0.0; + } + + -- Function: int gsl_fft_halfcomplex_unpack (const + double halfcomplex_coefficient[], + gsl_complex_packed_array complex_coefficient, size_t stride, + size_t n) + + This function converts ‘halfcomplex_coefficient’, an array of + half-complex coefficients as returned by *note + gsl_fft_real_transform(): 5d9, into an ordinary complex array, + ‘complex_coefficient’. It fills in the complex array using the + symmetry z_k = z_{n-k}^* to reconstruct the redundant elements. + The algorithm for the conversion is: + + complex_coefficient[0].real = halfcomplex_coefficient[0]; + complex_coefficient[0].imag = 0.0; + + for (i = 1; i < n - i; i++) + { + double hc_real = halfcomplex_coefficient[(2 * i - 1)*stride]; + double hc_imag = halfcomplex_coefficient[(2 * i)*stride]; + complex_coefficient[i*stride].real = hc_real; + complex_coefficient[i*stride].imag = hc_imag; + complex_coefficient[(n - i)*stride].real = hc_real; + complex_coefficient[(n - i)*stride].imag = -hc_imag; + } + + if (i == n - i) + { + complex_coefficient[i*stride].real = halfcomplex_coefficient[(n - 1)*stride]; + complex_coefficient[i*stride].imag = 0.0; + } + +Here is an example program using *note gsl_fft_real_transform(): 5d9. +and ‘gsl_fft_halfcomplex_inverse()’. It generates a real signal in the +shape of a square pulse. The pulse is Fourier transformed to frequency +space, and all but the lowest ten frequency components are removed from +the array of Fourier coefficients returned by *note +gsl_fft_real_transform(): 5d9. + +The remaining Fourier coefficients are transformed back to the +time-domain, to give a filtered version of the square pulse. Since +Fourier coefficients are stored using the half-complex symmetry both +positive and negative frequencies are removed and the final filtered +signal is also real. + + #include + #include + #include + #include + #include + + int + main (void) + { + int i, n = 100; + double data[n]; + + gsl_fft_real_wavetable * real; + gsl_fft_halfcomplex_wavetable * hc; + gsl_fft_real_workspace * work; + + for (i = 0; i < n; i++) + { + data[i] = 0.0; + } + + for (i = n / 3; i < 2 * n / 3; i++) + { + data[i] = 1.0; + } + + for (i = 0; i < n; i++) + { + printf ("%d: %e\n", i, data[i]); + } + printf ("\n"); + + work = gsl_fft_real_workspace_alloc (n); + real = gsl_fft_real_wavetable_alloc (n); + + gsl_fft_real_transform (data, 1, n, + real, work); + + gsl_fft_real_wavetable_free (real); + + for (i = 11; i < n; i++) + { + data[i] = 0; + } + + hc = gsl_fft_halfcomplex_wavetable_alloc (n); + + gsl_fft_halfcomplex_inverse (data, 1, n, + hc, work); + gsl_fft_halfcomplex_wavetable_free (hc); + + for (i = 0; i < n; i++) + { + printf ("%d: %e\n", i, data[i]); + } + + gsl_fft_real_workspace_free (work); + return 0; + } + +The program output is shown in Fig. %s. + +[image src="fft-real-mixedradix.png"] + +Figure: Low-pass filtered version of a real pulse, output from the +example program. + + +File: gsl-ref.info, Node: References and Further Reading<11>, Prev: Mixed-radix FFT routines for real data, Up: Fast Fourier Transforms FFTs + +16.8 References and Further Reading +=================================== + +A good starting point for learning more about the FFT is the following +review article, + + * P. Duhamel and M. Vetterli. Fast Fourier transforms: A tutorial + review and a state of the art. Signal Processing, 19:259–299, + 1990. + +To find out about the algorithms used in the GSL routines you may want +to consult the document “GSL FFT Algorithms” (it is included in GSL, as +‘doc/fftalgorithms.tex’). This has general information on FFTs and +explicit derivations of the implementation for each routine. There are +also references to the relevant literature. For convenience some of the +more important references are reproduced below. + +There are several introductory books on the FFT with example programs, +such as “The Fast Fourier Transform” by Brigham and “DFT/FFT and +Convolution Algorithms” by Burrus and Parks, + + * + 5. Oran Brigham. “The Fast Fourier Transform”. Prentice Hall, + 1974. + + * C. S. Burrus and T. W. Parks. “DFT/FFT and Convolution + Algorithms”, Wiley, 1984. + +Both these introductory books cover the radix-2 FFT in some detail. The +mixed-radix algorithm at the heart of the FFTPACK routines is reviewed +in Clive Temperton’s paper, + + * Clive Temperton, Self-sorting mixed-radix fast Fourier transforms, + Journal of Computational Physics, 52(1):1–23, 1983. + +The derivation of FFTs for real-valued data is explained in the +following two articles, + + * Henrik V. Sorenson, Douglas L. Jones, Michael T. Heideman, and C. + Sidney Burrus. Real-valued fast Fourier transform algorithms. + “IEEE Transactions on Acoustics, Speech, and Signal Processing”, + ASSP-35(6):849–863, 1987. + + * Clive Temperton. Fast mixed-radix real Fourier transforms. + “Journal of Computational Physics”, 52:340–350, 1983. + +In 1979 the IEEE published a compendium of carefully-reviewed Fortran +FFT programs in “Programs for Digital Signal Processing”. It is a +useful reference for implementations of many different FFT algorithms, + + * Digital Signal Processing Committee and IEEE Acoustics, Speech, and + Signal Processing Committee, editors. Programs for Digital Signal + Processing. IEEE Press, 1979. + +For large-scale FFT work we recommend the use of the dedicated FFTW +library by Frigo and Johnson. The FFTW library is self-optimizing—it +automatically tunes itself for each hardware platform in order to +achieve maximum performance. It is available under the GNU GPL. + + * FFTW Website, ‘http://www.fftw.org/’ + +The source code for FFTPACK is available from +‘http://www.netlib.org/fftpack/’ + + +File: gsl-ref.info, Node: Numerical Integration, Next: Random Number Generation, Prev: Fast Fourier Transforms FFTs, Up: Top + +17 Numerical Integration +************************ + +This chapter describes routines for performing numerical integration +(quadrature) of a function in one dimension. There are routines for +adaptive and non-adaptive integration of general functions, with +specialised routines for specific cases. These include integration over +infinite and semi-infinite ranges, singular integrals, including +logarithmic singularities, computation of Cauchy principal values and +oscillatory integrals. The library reimplements the algorithms used in +QUADPACK, a numerical integration package written by Piessens, de +Doncker-Kapenga, Ueberhuber and Kahaner. Fortran code for QUADPACK is +available on Netlib. Also included are non-adaptive, fixed-order +Gauss-Legendre integration routines with high precision coefficients, as +well as fixed-order quadrature rules for a variety of weighting +functions from IQPACK. + +The functions described in this chapter are declared in the header file +‘gsl_integration.h’. + +* Menu: + +* Introduction: Introduction<2>. +* QNG non-adaptive Gauss-Kronrod integration:: +* QAG adaptive integration:: +* QAGS adaptive integration with singularities:: +* QAGP adaptive integration with known singular points:: +* QAGI adaptive integration on infinite intervals:: +* QAWC adaptive integration for Cauchy principal values:: +* QAWS adaptive integration for singular functions:: +* QAWO adaptive integration for oscillatory functions:: +* QAWF adaptive integration for Fourier integrals:: +* CQUAD doubly-adaptive integration:: +* Romberg integration:: +* Gauss-Legendre integration:: +* Fixed point quadratures:: +* Error codes:: +* Examples: Examples<11>. +* References and Further Reading: References and Further Reading<12>. + + +File: gsl-ref.info, Node: Introduction<2>, Next: QNG non-adaptive Gauss-Kronrod integration, Up: Numerical Integration + +17.1 Introduction +================= + +Each algorithm computes an approximation to a definite integral of the +form, + + I = \int_a^b f(x) w(x) dx + +where w(x) is a weight function (for general integrands w(x) = 1). The +user provides absolute and relative error bounds (epsabs, epsrel) which +specify the following accuracy requirement, + + |RESULT - I| <= max(epsabs, epsrel |I|) + +where RESULT is the numerical approximation obtained by the algorithm. +The algorithms attempt to estimate the absolute error ABSERR = |RESULT - +I| in such a way that the following inequality holds, + + |RESULT - I| <= ABSERR <= max(epsabs, epsrel |I|) + +In short, the routines return the first approximation which has an +absolute error smaller than epsabs or a relative error smaller than +epsrel. + +Note that this is an `either-or' constraint, not simultaneous. To +compute to a specified absolute error, set epsrel to zero. To compute +to a specified relative error, set epsabs to zero. The routines will +fail to converge if the error bounds are too stringent, but always +return the best approximation obtained up to that stage. + +The algorithms in QUADPACK use a naming convention based on the +following letters: + + Q - quadrature routine + + N - non-adaptive integrator + A - adaptive integrator + + G - general integrand (user-defined) + W - weight function with integrand + + S - singularities can be more readily integrated + P - points of special difficulty can be supplied + I - infinite range of integration + O - oscillatory weight function, cos or sin + F - Fourier integral + C - Cauchy principal value + +The algorithms are built on pairs of quadrature rules, a higher order +rule and a lower order rule. The higher order rule is used to compute +the best approximation to an integral over a small range. The +difference between the results of the higher order rule and the lower +order rule gives an estimate of the error in the approximation. + +* Menu: + +* Integrands without weight functions:: +* Integrands with weight functions:: +* Integrands with singular weight functions:: + + +File: gsl-ref.info, Node: Integrands without weight functions, Next: Integrands with weight functions, Up: Introduction<2> + +17.1.1 Integrands without weight functions +------------------------------------------ + +The algorithms for general functions (without a weight function) are +based on Gauss-Kronrod rules. + +A Gauss-Kronrod rule begins with a classical Gaussian quadrature rule of +order m. This is extended with additional points between each of the +abscissae to give a higher order Kronrod rule of order 2m + 1. The +Kronrod rule is efficient because it reuses existing function +evaluations from the Gaussian rule. + +The higher order Kronrod rule is used as the best approximation to the +integral, and the difference between the two rules is used as an +estimate of the error in the approximation. + + +File: gsl-ref.info, Node: Integrands with weight functions, Next: Integrands with singular weight functions, Prev: Integrands without weight functions, Up: Introduction<2> + +17.1.2 Integrands with weight functions +--------------------------------------- + +For integrands with weight functions the algorithms use Clenshaw-Curtis +quadrature rules. + +A Clenshaw-Curtis rule begins with an n-th order Chebyshev polynomial +approximation to the integrand. This polynomial can be integrated +exactly to give an approximation to the integral of the original +function. The Chebyshev expansion can be extended to higher orders to +improve the approximation and provide an estimate of the error. + + +File: gsl-ref.info, Node: Integrands with singular weight functions, Prev: Integrands with weight functions, Up: Introduction<2> + +17.1.3 Integrands with singular weight functions +------------------------------------------------ + +The presence of singularities (or other behavior) in the integrand can +cause slow convergence in the Chebyshev approximation. The modified +Clenshaw-Curtis rules used in QUADPACK separate out several common +weight functions which cause slow convergence. + +These weight functions are integrated analytically against the Chebyshev +polynomials to precompute `modified Chebyshev moments'. Combining the +moments with the Chebyshev approximation to the function gives the +desired integral. The use of analytic integration for the singular part +of the function allows exact cancellations and substantially improves +the overall convergence behavior of the integration. + + +File: gsl-ref.info, Node: QNG non-adaptive Gauss-Kronrod integration, Next: QAG adaptive integration, Prev: Introduction<2>, Up: Numerical Integration + +17.2 QNG non-adaptive Gauss-Kronrod integration +=============================================== + +The QNG algorithm is a non-adaptive procedure which uses fixed +Gauss-Kronrod-Patterson abscissae to sample the integrand at a maximum +of 87 points. It is provided for fast integration of smooth functions. + + -- Function: int gsl_integration_qng (const gsl_function * f, double a, + double b, double epsabs, double epsrel, double * result, + double * abserr, size_t * neval) + + This function applies the Gauss-Kronrod 10-point, 21-point, + 43-point and 87-point integration rules in succession until an + estimate of the integral of f over (a,b) is achieved within the + desired absolute and relative error limits, ‘epsabs’ and ‘epsrel’. + The function returns the final approximation, ‘result’, an estimate + of the absolute error, ‘abserr’ and the number of function + evaluations used, ‘neval’. The Gauss-Kronrod rules are designed in + such a way that each rule uses all the results of its predecessors, + in order to minimize the total number of function evaluations. + + +File: gsl-ref.info, Node: QAG adaptive integration, Next: QAGS adaptive integration with singularities, Prev: QNG non-adaptive Gauss-Kronrod integration, Up: Numerical Integration + +17.3 QAG adaptive integration +============================= + +The QAG algorithm is a simple adaptive integration procedure. The +integration region is divided into subintervals, and on each iteration +the subinterval with the largest estimated error is bisected. This +reduces the overall error rapidly, as the subintervals become +concentrated around local difficulties in the integrand. These +subintervals are managed by the following struct, + + -- Type: gsl_integration_workspace + + This workspace handles the memory for the subinterval ranges, + results and error estimates. + + -- Function: gsl_integration_workspace * + gsl_integration_workspace_alloc (size_t n) + + This function allocates a workspace sufficient to hold ‘n’ double + precision intervals, their integration results and error estimates. + One workspace may be used multiple times as all necessary + reinitialization is performed automatically by the integration + routines. + + -- Function: void gsl_integration_workspace_free + (gsl_integration_workspace * w) + + This function frees the memory associated with the workspace ‘w’. + + -- Function: int gsl_integration_qag (const gsl_function * f, double a, + double b, double epsabs, double epsrel, size_t limit, int key, + gsl_integration_workspace * workspace, double * result, double + * abserr) + + This function applies an integration rule adaptively until an + estimate of the integral of f over (a,b) is achieved within the + desired absolute and relative error limits, ‘epsabs’ and ‘epsrel’. + The function returns the final approximation, ‘result’, and an + estimate of the absolute error, ‘abserr’. The integration rule is + determined by the value of ‘key’, which should be chosen from the + following symbolic names, + + * -- Macro: GSL_INTEG_GAUSS15 (key = 1) + + * -- Macro: GSL_INTEG_GAUSS21 (key = 2) + + * -- Macro: GSL_INTEG_GAUSS31 (key = 3) + + * -- Macro: GSL_INTEG_GAUSS41 (key = 4) + + * -- Macro: GSL_INTEG_GAUSS51 (key = 5) + + * -- Macro: GSL_INTEG_GAUSS61 (key = 6) + + corresponding to the 15, 21, 31, 41, 51 and 61 point Gauss-Kronrod + rules. The higher-order rules give better accuracy for smooth + functions, while lower-order rules save time when the function + contains local difficulties, such as discontinuities. + + On each iteration the adaptive integration strategy bisects the + interval with the largest error estimate. The subintervals and + their results are stored in the memory provided by ‘workspace’. + The maximum number of subintervals is given by ‘limit’, which may + not exceed the allocated size of the workspace. + + +File: gsl-ref.info, Node: QAGS adaptive integration with singularities, Next: QAGP adaptive integration with known singular points, Prev: QAG adaptive integration, Up: Numerical Integration + +17.4 QAGS adaptive integration with singularities +================================================= + +The presence of an integrable singularity in the integration region +causes an adaptive routine to concentrate new subintervals around the +singularity. As the subintervals decrease in size the successive +approximations to the integral converge in a limiting fashion. This +approach to the limit can be accelerated using an extrapolation +procedure. The QAGS algorithm combines adaptive bisection with the Wynn +epsilon-algorithm to speed up the integration of many types of +integrable singularities. + + -- Function: int gsl_integration_qags (const gsl_function * f, + double a, double b, double epsabs, double epsrel, + size_t limit, gsl_integration_workspace * workspace, double + * result, double * abserr) + + This function applies the Gauss-Kronrod 21-point integration rule + adaptively until an estimate of the integral of f over (a,b) is + achieved within the desired absolute and relative error limits, + ‘epsabs’ and ‘epsrel’. The results are extrapolated using the + epsilon-algorithm, which accelerates the convergence of the + integral in the presence of discontinuities and integrable + singularities. The function returns the final approximation from + the extrapolation, ‘result’, and an estimate of the absolute error, + ‘abserr’. The subintervals and their results are stored in the + memory provided by ‘workspace’. The maximum number of subintervals + is given by ‘limit’, which may not exceed the allocated size of the + workspace. + + +File: gsl-ref.info, Node: QAGP adaptive integration with known singular points, Next: QAGI adaptive integration on infinite intervals, Prev: QAGS adaptive integration with singularities, Up: Numerical Integration + +17.5 QAGP adaptive integration with known singular points +========================================================= + + -- Function: int gsl_integration_qagp (const gsl_function * f, double + * pts, size_t npts, double epsabs, double epsrel, + size_t limit, gsl_integration_workspace * workspace, double + * result, double * abserr) + + This function applies the adaptive integration algorithm QAGS + taking account of the user-supplied locations of singular points. + The array ‘pts’ of length ‘npts’ should contain the endpoints of + the integration ranges defined by the integration region and + locations of the singularities. For example, to integrate over the + region (a,b) with break-points at x_1, x_2, x_3 (where a < x_1 < + x_2 < x_3 < b) the following ‘pts’ array should be used: + + pts[0] = a + pts[1] = x_1 + pts[2] = x_2 + pts[3] = x_3 + pts[4] = b + + with ‘npts’ = 5. + + If you know the locations of the singular points in the integration + region then this routine will be faster than *note + gsl_integration_qags(): 5fc. + + +File: gsl-ref.info, Node: QAGI adaptive integration on infinite intervals, Next: QAWC adaptive integration for Cauchy principal values, Prev: QAGP adaptive integration with known singular points, Up: Numerical Integration + +17.6 QAGI adaptive integration on infinite intervals +==================================================== + + -- Function: int gsl_integration_qagi (gsl_function * f, double epsabs, + double epsrel, size_t limit, gsl_integration_workspace + * workspace, double * result, double * abserr) + + This function computes the integral of the function ‘f’ over the + infinite interval (-\infty,+\infty). The integral is mapped onto + the semi-open interval (0,1] using the transformation x = (1-t)/t, + + \int_{-\infty}^{+\infty} dx f(x) = \int_0^1 dt (f((1-t)/t) + f(-(1-t)/t))/t^2. + + It is then integrated using the QAGS algorithm. The normal + 21-point Gauss-Kronrod rule of QAGS is replaced by a 15-point rule, + because the transformation can generate an integrable singularity + at the origin. In this case a lower-order rule is more efficient. + + -- Function: int gsl_integration_qagiu (gsl_function * f, double a, + double epsabs, double epsrel, size_t limit, + gsl_integration_workspace * workspace, double * result, double + * abserr) + + This function computes the integral of the function ‘f’ over the + semi-infinite interval (a,+\infty). The integral is mapped onto + the semi-open interval (0,1] using the transformation x = a + + (1-t)/t, + + \int_{a}^{+\infty} dx f(x) = \int_0^1 dt f(a + (1-t)/t)/t^2 + + and then integrated using the QAGS algorithm. + + -- Function: int gsl_integration_qagil (gsl_function * f, double b, + double epsabs, double epsrel, size_t limit, + gsl_integration_workspace * workspace, double * result, double + * abserr) + + This function computes the integral of the function ‘f’ over the + semi-infinite interval (-\infty,b). The integral is mapped onto + the semi-open interval (0,1] using the transformation x = b - + (1-t)/t, + + \int_{-\infty}^{b} dx f(x) = \int_0^1 dt f(b - (1-t)/t)/t^2 + + and then integrated using the QAGS algorithm. + + +File: gsl-ref.info, Node: QAWC adaptive integration for Cauchy principal values, Next: QAWS adaptive integration for singular functions, Prev: QAGI adaptive integration on infinite intervals, Up: Numerical Integration + +17.7 QAWC adaptive integration for Cauchy principal values +========================================================== + + -- Function: int gsl_integration_qawc (gsl_function * f, double a, + double b, double c, double epsabs, double epsrel, + size_t limit, gsl_integration_workspace * workspace, double + * result, double * abserr) + + This function computes the Cauchy principal value of the integral + of f over (a,b), with a singularity at ‘c’, + + I = \int_a^b dx f(x) / (x - c) + + The adaptive bisection algorithm of QAG is used, with modifications + to ensure that subdivisions do not occur at the singular point x = + c. When a subinterval contains the point x = c or is close to it + then a special 25-point modified Clenshaw-Curtis rule is used to + control the singularity. Further away from the singularity the + algorithm uses an ordinary 15-point Gauss-Kronrod integration rule. + + +File: gsl-ref.info, Node: QAWS adaptive integration for singular functions, Next: QAWO adaptive integration for oscillatory functions, Prev: QAWC adaptive integration for Cauchy principal values, Up: Numerical Integration + +17.8 QAWS adaptive integration for singular functions +===================================================== + +The QAWS algorithm is designed for integrands with algebraic-logarithmic +singularities at the end-points of an integration region. In order to +work efficiently the algorithm requires a precomputed table of Chebyshev +moments. + + -- Type: gsl_integration_qaws_table + + This structure contains precomputed quantities for the QAWS + algorithm. + + -- Function: gsl_integration_qaws_table * + gsl_integration_qaws_table_alloc (double alpha, double beta, + int mu, int nu) + + This function allocates space for a *note + gsl_integration_qaws_table: 606. struct describing a singular + weight function w(x) with the parameters (\alpha, \beta, \mu, \nu), + + w(x) = (x - a)^\alpha (b - x)^\beta \log^\mu (x - a) \log^\nu (b - x) + + where \alpha > -1, \beta > -1, and \mu = 0, 1, \nu = 0, 1. The + weight function can take four different forms depending on the + values of \mu and \nu, + + Weight function w(x) (\mu,\nu) + + --------------------------------------------------------------------------------------- + + (x - a)^\alpha (b - x)^\beta (0,0) + + + (x - a)^\alpha (b - x)^\beta \log{(x-a)} (1,0) + + + (x - a)^\alpha (b - x)^\beta \log{(b-x)} (0,1) + + + (x - a)^\alpha (b - x)^\beta \log{(x-a)} \log{(b-x)} (1,1) + + + The singular points (a,b) do not have to be specified until the + integral is computed, where they are the endpoints of the + integration range. + + The function returns a pointer to the newly allocated table *note + gsl_integration_qaws_table: 606. if no errors were detected, and 0 + in the case of error. + + -- Function: int gsl_integration_qaws_table_set + (gsl_integration_qaws_table * t, double alpha, double beta, + int mu, int nu) + + This function modifies the parameters (\alpha, \beta, \mu, \nu) of + an existing *note gsl_integration_qaws_table: 606. struct ‘t’. + + -- Function: void gsl_integration_qaws_table_free + (gsl_integration_qaws_table * t) + + This function frees all the memory associated with the *note + gsl_integration_qaws_table: 606. struct ‘t’. + + -- Function: int gsl_integration_qaws (gsl_function * f, const + double a, const double b, gsl_integration_qaws_table * t, + const double epsabs, const double epsrel, const size_t limit, + gsl_integration_workspace * workspace, double * result, double + * abserr) + + This function computes the integral of the function f(x) over the + interval (a,b) with the singular weight function (x-a)^\alpha + (b-x)^\beta \log^\mu (x-a) \log^\nu (b-x). The parameters of the + weight function (\alpha, \beta, \mu, \nu) are taken from the table + ‘t’. The integral is, + + I = \int_a^b dx f(x) (x - a)^\alpha (b - x)^\beta \log^\mu (x - a) \log^\nu (b - x). + + The adaptive bisection algorithm of QAG is used. When a + subinterval contains one of the endpoints then a special 25-point + modified Clenshaw-Curtis rule is used to control the singularities. + For subintervals which do not include the endpoints an ordinary + 15-point Gauss-Kronrod integration rule is used. + + +File: gsl-ref.info, Node: QAWO adaptive integration for oscillatory functions, Next: QAWF adaptive integration for Fourier integrals, Prev: QAWS adaptive integration for singular functions, Up: Numerical Integration + +17.9 QAWO adaptive integration for oscillatory functions +======================================================== + +The QAWO algorithm is designed for integrands with an oscillatory +factor, \sin(\omega x) or \cos(\omega x). In order to work efficiently +the algorithm requires a table of Chebyshev moments which must be +pre-computed with calls to the functions below. + + -- Function: gsl_integration_qawo_table * + gsl_integration_qawo_table_alloc (double omega, double L, enum + gsl_integration_qawo_enum sine, size_t n) + + This function allocates space for a ‘gsl_integration_qawo_table’ + struct and its associated workspace describing a sine or cosine + weight function w(x) with the parameters (\omega, L), + + w(x) = sin(omega x) + w(x) = cos(omega x) + + The parameter ‘L’ must be the length of the interval over which the + function will be integrated L = b - a. The choice of sine or + cosine is made with the parameter ‘sine’ which should be chosen + from one of the two following symbolic values: + + -- Macro: GSL_INTEG_COSINE + + -- Macro: GSL_INTEG_SINE + + The ‘gsl_integration_qawo_table’ is a table of the trigonometric + coefficients required in the integration process. The parameter + ‘n’ determines the number of levels of coefficients that are + computed. Each level corresponds to one bisection of the interval + L, so that ‘n’ levels are sufficient for subintervals down to the + length L/2^n. The integration routine *note + gsl_integration_qawo(): 60f. returns the error ‘GSL_ETABLE’ if the + number of levels is insufficient for the requested accuracy. + + -- Function: int gsl_integration_qawo_table_set + (gsl_integration_qawo_table * t, double omega, double L, enum + gsl_integration_qawo_enum sine) + + This function changes the parameters ‘omega’, ‘L’ and ‘sine’ of the + existing workspace ‘t’. + + -- Function: int gsl_integration_qawo_table_set_length + (gsl_integration_qawo_table * t, double L) + + This function allows the length parameter ‘L’ of the workspace ‘t’ + to be changed. + + -- Function: void gsl_integration_qawo_table_free + (gsl_integration_qawo_table * t) + + This function frees all the memory associated with the workspace + ‘t’. + + -- Function: int gsl_integration_qawo (gsl_function * f, const + double a, const double epsabs, const double epsrel, const + size_t limit, gsl_integration_workspace * workspace, + gsl_integration_qawo_table * wf, double * result, double + * abserr) + + This function uses an adaptive algorithm to compute the integral of + f over (a,b) with the weight function \sin(\omega x) or \cos(\omega + x) defined by the table ‘wf’, + + I = int_a^b dx f(x) sin(omega x) + I = int_a^b dx f(x) cos(omega x) + + The results are extrapolated using the epsilon-algorithm to + accelerate the convergence of the integral. The function returns + the final approximation from the extrapolation, ‘result’, and an + estimate of the absolute error, ‘abserr’. The subintervals and + their results are stored in the memory provided by ‘workspace’. + The maximum number of subintervals is given by ‘limit’, which may + not exceed the allocated size of the workspace. + + Those subintervals with “large” widths d where d\omega > 4 are + computed using a 25-point Clenshaw-Curtis integration rule, which + handles the oscillatory behavior. Subintervals with a “small” + widths where d\omega < 4 are computed using a 15-point + Gauss-Kronrod integration. + + +File: gsl-ref.info, Node: QAWF adaptive integration for Fourier integrals, Next: CQUAD doubly-adaptive integration, Prev: QAWO adaptive integration for oscillatory functions, Up: Numerical Integration + +17.10 QAWF adaptive integration for Fourier integrals +===================================================== + + -- Function: int gsl_integration_qawf (gsl_function * f, const + double a, const double epsabs, const size_t limit, + gsl_integration_workspace * workspace, + gsl_integration_workspace * cycle_workspace, + gsl_integration_qawo_table * wf, double * result, double + * abserr) + + This function attempts to compute a Fourier integral of the + function ‘f’ over the semi-infinite interval [a,+\infty) + + I = \int_a^{+\infty} dx f(x) sin(omega x) + I = \int_a^{+\infty} dx f(x) cos(omega x) + + The parameter \omega and choice of \sin or \cos is taken from the + table ‘wf’ (the length ‘L’ can take any value, since it is + overridden by this function to a value appropriate for the Fourier + integration). The integral is computed using the QAWO algorithm + over each of the subintervals, + + C_1 = [a, a + c] + C_2 = [a + c, a + 2 c] + ... = ... + C_k = [a + (k-1) c, a + k c] + + where c = (2 floor(|\omega|) + 1) \pi/|\omega|. The width c is + chosen to cover an odd number of periods so that the contributions + from the intervals alternate in sign and are monotonically + decreasing when ‘f’ is positive and monotonically decreasing. The + sum of this sequence of contributions is accelerated using the + epsilon-algorithm. + + This function works to an overall absolute tolerance of ‘abserr’. + The following strategy is used: on each interval C_k the algorithm + tries to achieve the tolerance + + TOL_k = u_k abserr + + where u_k = (1 - p)p^{k-1} and p = 9/10. The sum of the geometric + series of contributions from each interval gives an overall + tolerance of ‘abserr’. + + If the integration of a subinterval leads to difficulties then the + accuracy requirement for subsequent intervals is relaxed, + + TOL_k = u_k max(abserr, max_{i a + + +Chebyshev Type 1 (a,b) 1 / \sqrt{(b - x) (x - a)} b > a + + +Gegenbauer (a,b) ((b - x) (x - a))^{\alpha} \alpha > -1, b > a + + +Jacobi (a,b) (b - x)^{\alpha} (x - a)^{\beta} \alpha,\beta > -1, b > a + + +Laguerre (a,\infty) (x-a)^{\alpha} \exp{( -b (x - a) )} \alpha > -1, b > 0 + + +Hermite (-\infty,\infty) |x-a|^{\alpha} \exp{( -b (x-a)^2 )} \alpha > -1, b > 0 + + +Exponential (a,b) |x - (a + b)/2|^{\alpha} \alpha > -1, b > a + + +Rational (a,\infty) (x - a)^{\alpha} (x + b)^{\beta} \alpha > -1, \alpha + \beta + 2n < 0, a + b > 0 + + +Chebyshev Type 2 (a,b) \sqrt{(b - x) (x - a)} b > a + + +The fixed point quadrature routines use the following workspace to store +the nodes and weights, as well as additional variables for intermediate +calculations: + + -- Type: gsl_integration_fixed_workspace + + This workspace is used for fixed point quadrature rules and looks + like this: + + typedef struct + { + size_t n; /* number of nodes/weights */ + double *weights; /* quadrature weights */ + double *x; /* quadrature nodes */ + double *diag; /* diagonal of Jacobi matrix */ + double *subdiag; /* subdiagonal of Jacobi matrix */ + const gsl_integration_fixed_type * type; + } gsl_integration_fixed_workspace; + + -- Function: gsl_integration_fixed_workspace * + gsl_integration_fixed_alloc (const gsl_integration_fixed_type + * T, const size_t n, const double a, const double b, const + double alpha, const double beta) + + This function allocates a workspace for computing integrals with + interpolating quadratures using ‘n’ quadrature nodes. The + parameters ‘a’, ‘b’, *note alpha: 497, and ‘beta’ specify the + integration interval and/or weighting function for the various + quadrature types. See the *note table: 623. above for constraints + on these parameters. The size of the workspace is O(4n). + + -- Type: gsl_integration_fixed_type + + The type of quadrature used is specified by ‘T’ which can be + set to the following choices: + + -- Variable: gsl_integration_fixed_legendre + + This specifies Legendre quadrature integration. The + parameters *note alpha: 497. and ‘beta’ are ignored for + this type. + + -- Variable: gsl_integration_fixed_chebyshev + + This specifies Chebyshev type 1 quadrature integration. + The parameters *note alpha: 497. and ‘beta’ are ignored + for this type. + + -- Variable: gsl_integration_fixed_gegenbauer + + This specifies Gegenbauer quadrature integration. The + parameter ‘beta’ is ignored for this type. + + -- Variable: gsl_integration_fixed_jacobi + + This specifies Jacobi quadrature integration. + + -- Variable: gsl_integration_fixed_laguerre + + This specifies Laguerre quadrature integration. The + parameter ‘beta’ is ignored for this type. + + -- Variable: gsl_integration_fixed_hermite + + This specifies Hermite quadrature integration. The + parameter ‘beta’ is ignored for this type. + + -- Variable: gsl_integration_fixed_exponential + + This specifies exponential quadrature integration. The + parameter ‘beta’ is ignored for this type. + + -- Variable: gsl_integration_fixed_rational + + This specifies rational quadrature integration. + + -- Variable: gsl_integration_fixed_chebyshev2 + + This specifies Chebyshev type 2 quadrature integration. + The parameters *note alpha: 497. and ‘beta’ are ignored + for this type. + + -- Function: void gsl_integration_fixed_free + (gsl_integration_fixed_workspace * w) + + This function frees the memory assocated with the workspace ‘w’ + + -- Function: size_t gsl_integration_fixed_n (const + gsl_integration_fixed_workspace * w) + + This function returns the number of quadrature nodes and weights. + + -- Function: double * gsl_integration_fixed_nodes (const + gsl_integration_fixed_workspace * w) + + This function returns a pointer to an array of size ‘n’ containing + the quadrature nodes x_i. + + -- Function: double * gsl_integration_fixed_weights (const + gsl_integration_fixed_workspace * w) + + This function returns a pointer to an array of size ‘n’ containing + the quadrature weights w_i. + + -- Function: int gsl_integration_fixed (const gsl_function * func, + double * result, const gsl_integration_fixed_workspace * w) + + This function integrates the function f(x) provided in ‘func’ using + previously computed fixed quadrature rules. The integral is + approximated as + + \sum_{i=1}^n w_i f(x_i) + + where w_i are the quadrature weights and x_i are the quadrature + nodes computed previously by *note gsl_integration_fixed_alloc(): + 625. The sum is stored in ‘result’ on output. + + +File: gsl-ref.info, Node: Error codes, Next: Examples<11>, Prev: Fixed point quadratures, Up: Numerical Integration + +17.15 Error codes +================= + +In addition to the standard error codes for invalid arguments the +functions can return the following values, + +‘GSL_EMAXITER’ the maximum number of subdivisions was exceeded. + + +‘GSL_EROUND’ cannot reach tolerance because of roundoff error, or roundoff error was detected in the extrapolation table. + + +‘GSL_ESING’ a non-integrable singularity or other bad integrand behavior was found in the integration interval. + + +‘GSL_EDIVERGE’ the integral is divergent, or too slowly convergent to be integrated numerically. + + +*note GSL_EDOM: 28. error in the values of the input arguments + + + +File: gsl-ref.info, Node: Examples<11>, Next: References and Further Reading<12>, Prev: Error codes, Up: Numerical Integration + +17.16 Examples +============== + +* Menu: + +* Adaptive integration example:: +* Fixed-point quadrature example:: + + +File: gsl-ref.info, Node: Adaptive integration example, Next: Fixed-point quadrature example, Up: Examples<11> + +17.16.1 Adaptive integration example +------------------------------------ + +The integrator ‘QAGS’ will handle a large class of definite integrals. +For example, consider the following integral, which has an +algebraic-logarithmic singularity at the origin, + + \int_0^1 x^{-1/2} \log(x) dx = -4 + +The program below computes this integral to a relative accuracy bound of +‘1e-7’. + + #include + #include + #include + + double f (double x, void * params) { + double alpha = *(double *) params; + double f = log(alpha*x) / sqrt(x); + return f; + } + + int + main (void) + { + gsl_integration_workspace * w + = gsl_integration_workspace_alloc (1000); + + double result, error; + double expected = -4.0; + double alpha = 1.0; + + gsl_function F; + F.function = &f; + F.params = α + + gsl_integration_qags (&F, 0, 1, 0, 1e-7, 1000, + w, &result, &error); + + printf ("result = % .18f\n", result); + printf ("exact result = % .18f\n", expected); + printf ("estimated error = % .18f\n", error); + printf ("actual error = % .18f\n", result - expected); + printf ("intervals = %zu\n", w->size); + + gsl_integration_workspace_free (w); + + return 0; + } + +The results below show that the desired accuracy is achieved after 8 +subdivisions. + + result = -4.000000000000085265 + exact result = -4.000000000000000000 + estimated error = 0.000000000000135447 + actual error = -0.000000000000085265 + intervals = 8 + +In fact, the extrapolation procedure used by ‘QAGS’ produces an accuracy +of almost twice as many digits. The error estimate returned by the +extrapolation procedure is larger than the actual error, giving a margin +of safety of one order of magnitude. + + +File: gsl-ref.info, Node: Fixed-point quadrature example, Prev: Adaptive integration example, Up: Examples<11> + +17.16.2 Fixed-point quadrature example +-------------------------------------- + +In this example, we use a fixed-point quadrature rule to integrate the +integral + + \int_{-\infty}^{\infty} e^{-x^2} \left( x^m + 1 \right) dx = \left\{ \begin{array}{cc} \sqrt{\pi} + \Gamma{\left( \frac{m+1}{2} \right)}, & m \textrm{ even} \\ \sqrt{\pi}, & m \textrm{ odd} \end{array} \right. + +for integer m. Consulting our *note table: 623. of fixed point +quadratures, we see that this integral can be evaluated with a Hermite +quadrature rule, setting \alpha = 0, a = 0, b = 1. Since we are +integrating a polynomial of degree m, we need to choose the number of +nodes n \ge (m+1)/2 to achieve the best results. + +First we will try integrating for m = 10, n = 5, which does not satisfy +our criteria above: + + $ ./integration2 10 5 + +The output is, + + m = 10 + intervals = 5 + result = 47.468529694563351029 + exact result = 54.115231635459025483 + actual error = -6.646701940895674454 + +So, we find a large error. Now we try integrating for m = 10, n = 6 +which does satisfy the criteria above: + + $ ./integration2 10 6 + +The output is, + + m = 10 + intervals = 6 + result = 54.115231635459096537 + exact result = 54.115231635459025483 + actual error = 0.000000000000071054 + +The program is given below. + + #include + #include + #include + #include + + double + f(double x, void * params) + { + int m = *(int *) params; + double f = gsl_pow_int(x, m) + 1.0; + return f; + } + + int + main (int argc, char *argv[]) + { + gsl_integration_fixed_workspace * w; + const gsl_integration_fixed_type * T = gsl_integration_fixed_hermite; + int m = 10; + int n = 6; + double expected, result; + gsl_function F; + + if (argc > 1) + m = atoi(argv[1]); + + if (argc > 2) + n = atoi(argv[2]); + + w = gsl_integration_fixed_alloc(T, n, 0.0, 1.0, 0.0, 0.0); + + F.function = &f; + F.params = &m; + + gsl_integration_fixed(&F, &result, w); + + if (m % 2 == 0) + expected = M_SQRTPI + gsl_sf_gamma(0.5*(1.0 + m)); + else + expected = M_SQRTPI; + + printf ("m = %d\n", m); + printf ("intervals = %zu\n", gsl_integration_fixed_n(w)); + printf ("result = % .18f\n", result); + printf ("exact result = % .18f\n", expected); + printf ("actual error = % .18f\n", result - expected); + + gsl_integration_fixed_free (w); + + return 0; + } + + +File: gsl-ref.info, Node: References and Further Reading<12>, Prev: Examples<11>, Up: Numerical Integration + +17.17 References and Further Reading +==================================== + +The following book is the definitive reference for QUADPACK, and was +written by the original authors. It provides descriptions of the +algorithms, program listings, test programs and examples. It also +includes useful advice on numerical integration and many references to +the numerical integration literature used in developing QUADPACK. + + * R. Piessens, E. de Doncker-Kapenga, C.W. Ueberhuber, D.K. Kahaner. + QUADPACK A subroutine package for automatic integration Springer + Verlag, 1983. + +The CQUAD integration algorithm is described in the following paper: + + * P. Gonnet, “Increasing the Reliability of Adaptive Quadrature Using + Explicit Interpolants”, ACM Transactions on Mathematical Software, + Volume 37 (2010), Issue 3, Article 26. + +The fixed-point quadrature routines are based on IQPACK, described in +the following papers: + + * S. Elhay, J. Kautsky, Algorithm 655: IQPACK, FORTRAN Subroutines + for the Weights of Interpolatory Quadrature, ACM Transactions on + Mathematical Software, Volume 13, Number 4, December 1987, pages + 399-415. + + * J. Kautsky, S. Elhay, Calculation of the Weights of Interpolatory + Quadratures, Numerische Mathematik, Volume 40, Number 3, October + 1982, pages 407-422. + + +File: gsl-ref.info, Node: Random Number Generation, Next: Quasi-Random Sequences, Prev: Numerical Integration, Up: Top + +18 Random Number Generation +*************************** + +The library provides a large collection of random number generators +which can be accessed through a uniform interface. Environment +variables allow you to select different generators and seeds at runtime, +so that you can easily switch between generators without needing to +recompile your program. Each instance of a generator keeps track of its +own state, allowing the generators to be used in multi-threaded +programs. Additional functions are available for transforming uniform +random numbers into samples from continuous or discrete probability +distributions such as the Gaussian, log-normal or Poisson distributions. + +These functions are declared in the header file ‘gsl_rng.h’. + +* Menu: + +* General comments on random numbers:: +* The Random Number Generator Interface:: +* Random number generator initialization:: +* Sampling from a random number generator:: +* Auxiliary random number generator functions:: +* Random number environment variables:: +* Copying random number generator state:: +* Reading and writing random number generator state:: +* Random number generator algorithms:: +* Unix random number generators:: +* Other random number generators:: +* Performance:: +* Examples: Examples<12>. +* References and Further Reading: References and Further Reading<13>. +* Acknowledgements:: + + +File: gsl-ref.info, Node: General comments on random numbers, Next: The Random Number Generator Interface, Up: Random Number Generation + +18.1 General comments on random numbers +======================================= + +In 1988, Park and Miller wrote a paper entitled “Random number +generators: good ones are hard to find.” [Commun.: ACM, 31, 1192–1201]. +Fortunately, some excellent random number generators are available, +though poor ones are still in common use. You may be happy with the +system-supplied random number generator on your computer, but you should +be aware that as computers get faster, requirements on random number +generators increase. Nowadays, a simulation that calls a random number +generator millions of times can often finish before you can make it down +the hall to the coffee machine and back. + +A very nice review of random number generators was written by Pierre +L’Ecuyer, as Chapter 4 of the book: Handbook on Simulation, Jerry Banks, +ed. (Wiley, 1997). The chapter is available in postscript from +L’Ecuyer’s ftp site (see references). Knuth’s volume on Seminumerical +Algorithms (originally published in 1968) devotes 170 pages to random +number generators, and has recently been updated in its 3rd edition +(1997). It is brilliant, a classic. If you don’t own it, you should +stop reading right now, run to the nearest bookstore, and buy it. + +A good random number generator will satisfy both theoretical and +statistical properties. Theoretical properties are often hard to obtain +(they require real math!), but one prefers a random number generator +with a long period, low serial correlation, and a tendency `not' to +“fall mainly on the planes.” Statistical tests are performed with +numerical simulations. Generally, a random number generator is used to +estimate some quantity for which the theory of probability provides an +exact answer. Comparison to this exact answer provides a measure of +“randomness”. + + +File: gsl-ref.info, Node: The Random Number Generator Interface, Next: Random number generator initialization, Prev: General comments on random numbers, Up: Random Number Generation + +18.2 The Random Number Generator Interface +========================================== + +It is important to remember that a random number generator is not a +“real” function like sine or cosine. Unlike real functions, successive +calls to a random number generator yield different return values. Of +course that is just what you want for a random number generator, but to +achieve this effect, the generator must keep track of some kind of +“state” variable. Sometimes this state is just an integer (sometimes +just the value of the previously generated random number), but often it +is more complicated than that and may involve a whole array of numbers, +possibly with some indices thrown in. To use the random number +generators, you do not need to know the details of what comprises the +state, and besides that varies from algorithm to algorithm. + + -- Type: gsl_rng_type + -- Type: gsl_rng + + The random number generator library uses two special structs, *note + gsl_rng_type: 63e. which holds static information about each type + of generator and *note gsl_rng: 63f. which describes an instance of + a generator created from a given *note gsl_rng_type: 63e. + +The functions described in this section are declared in the header file +‘gsl_rng.h’. + + +File: gsl-ref.info, Node: Random number generator initialization, Next: Sampling from a random number generator, Prev: The Random Number Generator Interface, Up: Random Number Generation + +18.3 Random number generator initialization +=========================================== + + -- Function: gsl_rng * gsl_rng_alloc (const gsl_rng_type * T) + + This function returns a pointer to a newly-created instance of a + random number generator of type ‘T’. For example, the following + code creates an instance of the Tausworthe generator: + + gsl_rng * r = gsl_rng_alloc (gsl_rng_taus); + + If there is insufficient memory to create the generator then the + function returns a null pointer and the error handler is invoked + with an error code of *note GSL_ENOMEM: 2a. + + The generator is automatically initialized with the default seed, + *note gsl_rng_default_seed: 642. This is zero by default but can + be changed either directly or by using the environment variable + *note GSL_RNG_SEED: 643. + + The details of the available generator types are described later in + this chapter. + + -- Function: void gsl_rng_set (const gsl_rng * r, unsigned long int s) + + This function initializes (or “seeds”) the random number generator. + If the generator is seeded with the same value of ‘s’ on two + different runs, the same stream of random numbers will be generated + by successive calls to the routines below. If different values of + s \geq 1 are supplied, then the generated streams of random numbers + should be completely different. If the seed ‘s’ is zero then the + standard seed from the original implementation is used instead. + For example, the original Fortran source code for the ‘ranlux’ + generator used a seed of 314159265, and so choosing ‘s’ equal to + zero reproduces this when using *note gsl_rng_ranlux: 645. + + When using multiple seeds with the same generator, choose seed + values greater than zero to avoid collisions with the default + setting. + + Note that the most generators only accept 32-bit seeds, with higher + values being reduced modulo 2^{32}. For generators with smaller + ranges the maximum seed value will typically be lower. + + -- Function: void gsl_rng_free (gsl_rng * r) + + This function frees all the memory associated with the generator + ‘r’. + + +File: gsl-ref.info, Node: Sampling from a random number generator, Next: Auxiliary random number generator functions, Prev: Random number generator initialization, Up: Random Number Generation + +18.4 Sampling from a random number generator +============================================ + +The following functions return uniformly distributed random numbers, +either as integers or double precision floating point numbers. Inline +versions of these functions are used when ‘HAVE_INLINE’ is defined. To +obtain non-uniform distributions, see *note Random Number Distributions: +648. + + -- Function: unsigned long int gsl_rng_get (const gsl_rng * r) + + This function returns a random integer from the generator ‘r’. The + minimum and maximum values depend on the algorithm used, but all + integers in the range [‘min’, ‘max’] are equally likely. The + values of ‘min’ and ‘max’ can be determined using the auxiliary + functions *note gsl_rng_max(): 64a. and *note gsl_rng_min(): 64b. + + -- Function: double gsl_rng_uniform (const gsl_rng * r) + + This function returns a double precision floating point number + uniformly distributed in the range [0,1). The range includes 0.0 + but excludes 1.0. The value is typically obtained by dividing the + result of ‘gsl_rng_get(r)’ by ‘gsl_rng_max(r) + 1.0’ in double + precision. Some generators compute this ratio internally so that + they can provide floating point numbers with more than 32 bits of + randomness (the maximum number of bits that can be portably + represented in a single ‘unsigned long int’). + + -- Function: double gsl_rng_uniform_pos (const gsl_rng * r) + + This function returns a positive double precision floating point + number uniformly distributed in the range (0,1), excluding both 0.0 + and 1.0. The number is obtained by sampling the generator with the + algorithm of *note gsl_rng_uniform(): 64c. until a non-zero value + is obtained. You can use this function if you need to avoid a + singularity at 0.0. + + -- Function: unsigned long int gsl_rng_uniform_int (const gsl_rng * r, + unsigned long int n) + + This function returns a random integer from 0 to n-1 inclusive by + scaling down and/or discarding samples from the generator ‘r’. All + integers in the range [0,n-1] are produced with equal probability. + For generators with a non-zero minimum value an offset is applied + so that zero is returned with the correct probability. + + Note that this function is designed for sampling from ranges + smaller than the range of the underlying generator. The parameter + ‘n’ must be less than or equal to the range of the generator ‘r’. + If ‘n’ is larger than the range of the generator then the function + calls the error handler with an error code of *note GSL_EINVAL: 2b. + and returns zero. + + In particular, this function is not intended for generating the + full range of unsigned integer values [0,2^{32}-1]. Instead choose + a generator with the maximal integer range and zero minimum value, + such as *note gsl_rng_ranlxd1: 64f, *note gsl_rng_mt19937: 650. or + *note gsl_rng_taus: 651, and sample it directly using *note + gsl_rng_get(): 649. The range of each generator can be found using + the auxiliary functions described in the next section. + + +File: gsl-ref.info, Node: Auxiliary random number generator functions, Next: Random number environment variables, Prev: Sampling from a random number generator, Up: Random Number Generation + +18.5 Auxiliary random number generator functions +================================================ + +The following functions provide information about an existing generator. +You should use them in preference to hard-coding the generator +parameters into your own code. + + -- Function: const char * gsl_rng_name (const gsl_rng * r) + + This function returns a pointer to the name of the generator. For + example: + + printf ("r is a '%s' generator\n", gsl_rng_name (r)); + + would print something like: + + r is a 'taus' generator + + -- Function: unsigned long int gsl_rng_max (const gsl_rng * r) + + This function returns the largest value that *note gsl_rng_get(): + 649. can return. + + -- Function: unsigned long int gsl_rng_min (const gsl_rng * r) + + This function returns the smallest value that *note gsl_rng_get(): + 649. can return. Usually this value is zero. There are some + generators with algorithms that cannot return zero, and for these + generators the minimum value is 1. + + -- Function: void * gsl_rng_state (const gsl_rng * r) + -- Function: size_t gsl_rng_size (const gsl_rng * r) + + These functions return a pointer to the state of generator ‘r’ and + its size. You can use this information to access the state + directly. For example, the following code will write the state of + a generator to a stream: + + void * state = gsl_rng_state (r); + size_t n = gsl_rng_size (r); + fwrite (state, n, 1, stream); + + -- Function: const gsl_rng_type ** gsl_rng_types_setup (void) + + This function returns a pointer to an array of all the available + generator types, terminated by a null pointer. The function should + be called once at the start of the program, if needed. The + following code fragment shows how to iterate over the array of + generator types to print the names of the available algorithms: + + const gsl_rng_type **t, **t0; + + t0 = gsl_rng_types_setup (); + + printf ("Available generators:\n"); + + for (t = t0; *t != 0; t++) + { + printf ("%s\n", (*t)->name); + } + + +File: gsl-ref.info, Node: Random number environment variables, Next: Copying random number generator state, Prev: Auxiliary random number generator functions, Up: Random Number Generation + +18.6 Random number environment variables +======================================== + +The library allows you to choose a default generator and seed from the +environment variables *note GSL_RNG_TYPE: 658. and *note GSL_RNG_SEED: +643. and the function *note gsl_rng_env_setup(): 659. This makes it +easy try out different generators and seeds without having to recompile +your program. + + -- Macro: GSL_RNG_TYPE + + This environment variable specifies the default random number + generator. It should be the name of a generator, such as ‘taus’ or + ‘mt19937’. + + -- Macro: GSL_RNG_SEED + + This environment variable specifies the default seed for the random + number generator + + -- Variable: gsl_rng_default + + This global library variable specifies the default random number + generator, and can be initialized from *note GSL_RNG_TYPE: 658. + using *note gsl_rng_env_setup(): 659. It is defined as follows: + + extern const gsl_rng_type *gsl_rng_default + + -- Variable: gsl_rng_default_seed + + This global library variable specifies the seed for the default + random number generator, and can be initialized from *note + GSL_RNG_SEED: 643. using *note gsl_rng_env_setup(): 659. It is set + to zero by default and is defined as follows: + + extern unsigned long int gsl_rng_default_seed + + -- Function: const gsl_rng_type * gsl_rng_env_setup (void) + + This function reads the environment variables *note GSL_RNG_TYPE: + 658. and *note GSL_RNG_SEED: 643. and uses their values to set the + corresponding library variables *note gsl_rng_default: 65a. and + *note gsl_rng_default_seed: 642. + + The value of *note GSL_RNG_SEED: 643. is converted to an ‘unsigned + long int’ using the C library function ‘strtoul()’. + + If you don’t specify a generator for *note GSL_RNG_TYPE: 658. then + *note gsl_rng_mt19937: 650. is used as the default. The initial + value of *note gsl_rng_default_seed: 642. is zero. + +Here is a short program which shows how to create a global generator +using the environment variables *note GSL_RNG_TYPE: 658. and *note +GSL_RNG_SEED: 643, + + #include + #include + + gsl_rng * r; /* global generator */ + + int + main (void) + { + const gsl_rng_type * T; + + gsl_rng_env_setup(); + + T = gsl_rng_default; + r = gsl_rng_alloc (T); + + printf ("generator type: %s\n", gsl_rng_name (r)); + printf ("seed = %lu\n", gsl_rng_default_seed); + printf ("first value = %lu\n", gsl_rng_get (r)); + + gsl_rng_free (r); + return 0; + } + +Running the program without any environment variables uses the initial +defaults, an ‘mt19937’ generator with a seed of 0, + + generator type: mt19937 + seed = 0 + first value = 4293858116 + +By setting the two variables on the command line we can change the +default generator and the seed: + + $ GSL_RNG_TYPE="taus" GSL_RNG_SEED=123 ./a.out + GSL_RNG_TYPE=taus + GSL_RNG_SEED=123 + generator type: taus + seed = 123 + first value = 2720986350 + + +File: gsl-ref.info, Node: Copying random number generator state, Next: Reading and writing random number generator state, Prev: Random number environment variables, Up: Random Number Generation + +18.7 Copying random number generator state +========================================== + +The above methods do not expose the random number state which changes +from call to call. It is often useful to be able to save and restore +the state. To permit these practices, a few somewhat more advanced +functions are supplied. These include: + + -- Function: int gsl_rng_memcpy (gsl_rng * dest, const gsl_rng * src) + + This function copies the random number generator ‘src’ into the + pre-existing generator ‘dest’, making ‘dest’ into an exact copy of + ‘src’. The two generators must be of the same type. + + -- Function: gsl_rng * gsl_rng_clone (const gsl_rng * r) + + This function returns a pointer to a newly created generator which + is an exact copy of the generator ‘r’. + + +File: gsl-ref.info, Node: Reading and writing random number generator state, Next: Random number generator algorithms, Prev: Copying random number generator state, Up: Random Number Generation + +18.8 Reading and writing random number generator state +====================================================== + +The library provides functions for reading and writing the random number +state to a file as binary data. + + -- Function: int gsl_rng_fwrite (FILE * stream, const gsl_rng * r) + + This function writes the random number state of the random number + generator ‘r’ to the stream ‘stream’ in binary format. The return + value is 0 for success and ‘GSL_EFAILED’ if there was a problem + writing to the file. Since the data is written in the native + binary format it may not be portable between different + architectures. + + -- Function: int gsl_rng_fread (FILE * stream, gsl_rng * r) + + This function reads the random number state into the random number + generator ‘r’ from the open stream ‘stream’ in binary format. The + random number generator ‘r’ must be preinitialized with the correct + random number generator type since type information is not saved. + The return value is 0 for success and ‘GSL_EFAILED’ if there was a + problem reading from the file. The data is assumed to have been + written in the native binary format on the same architecture. + + +File: gsl-ref.info, Node: Random number generator algorithms, Next: Unix random number generators, Prev: Reading and writing random number generator state, Up: Random Number Generation + +18.9 Random number generator algorithms +======================================= + +The functions described above make no reference to the actual algorithm +used. This is deliberate so that you can switch algorithms without +having to change any of your application source code. The library +provides a large number of generators of different types, including +simulation quality generators, generators provided for compatibility +with other libraries and historical generators from the past. + +The following generators are recommended for use in simulation. They +have extremely long periods, low correlation and pass most statistical +tests. For the most reliable source of uncorrelated numbers, the +second-generation RANLUX generators have the strongest proof of +randomness. + + -- Variable: gsl_rng_mt19937 + + The MT19937 generator of Makoto Matsumoto and Takuji Nishimura is a + variant of the twisted generalized feedback shift-register + algorithm, and is known as the “Mersenne Twister” generator. It + has a Mersenne prime period of 2^{19937} - 1 (about 10^{6000}) and + is equi-distributed in 623 dimensions. It has passed the DIEHARD + statistical tests. It uses 624 words of state per generator and is + comparable in speed to the other generators. The original + generator used a default seed of 4357 and choosing ‘s’ equal to + zero in *note gsl_rng_set(): 644. reproduces this. Later versions + switched to 5489 as the default seed, you can choose this + explicitly via *note gsl_rng_set(): 644. instead if you require it. + + For more information see, + + * Makoto Matsumoto and Takuji Nishimura, “Mersenne Twister: A + 623-dimensionally equidistributed uniform pseudorandom number + generator”. ACM Transactions on Modeling and Computer + Simulation, Vol.: 8, No.: 1 (Jan. 1998), Pages 3–30 + + The generator *note gsl_rng_mt19937: 650. uses the second revision + of the seeding procedure published by the two authors above in + 2002. The original seeding procedures could cause spurious + artifacts for some seed values. They are still available through + the alternative generators ‘gsl_rng_mt19937_1999’ and + ‘gsl_rng_mt19937_1998’. + + -- Variable: gsl_rng_ranlxs0 + -- Variable: gsl_rng_ranlxs1 + -- Variable: gsl_rng_ranlxs2 + + The generator ‘ranlxs0’ is a second-generation version of the + RANLUX algorithm of Luscher, which produces “luxury random + numbers”. This generator provides single precision output (24 + bits) at three luxury levels ‘ranlxs0’, ‘ranlxs1’ and ‘ranlxs2’, in + increasing order of strength. It uses double-precision floating + point arithmetic internally and can be significantly faster than + the integer version of ‘ranlux’, particularly on 64-bit + architectures. The period of the generator is about 10^{171}. The + algorithm has mathematically proven properties and can provide + truly decorrelated numbers at a known level of randomness. The + higher luxury levels provide increased decorrelation between + samples as an additional safety margin. + + Note that the range of allowed seeds for this generator is + [0,2^{31}-1]. Higher seed values are wrapped modulo 2^{31}. + + -- Variable: gsl_rng_ranlxd1 + -- Variable: gsl_rng_ranlxd2 + + These generators produce double precision output (48 bits) from the + RANLXS generator. The library provides two luxury levels ‘ranlxd1’ + and ‘ranlxd2’, in increasing order of strength. + + -- Variable: gsl_rng_ranlux + -- Variable: gsl_rng_ranlux389 + + The ‘ranlux’ generator is an implementation of the original + algorithm developed by Luscher. It uses a + lagged-fibonacci-with-skipping algorithm to produce “luxury random + numbers”. It is a 24-bit generator, originally designed for + single-precision IEEE floating point numbers. This implementation + is based on integer arithmetic, while the second-generation + versions RANLXS and RANLXD described above provide floating-point + implementations which will be faster on many platforms. The period + of the generator is about 10^{171}. The algorithm has + mathematically proven properties and it can provide truly + decorrelated numbers at a known level of randomness. The default + level of decorrelation recommended by Luscher is provided by *note + gsl_rng_ranlux: 645, while *note gsl_rng_ranlux389: 666. gives the + highest level of randomness, with all 24 bits decorrelated. Both + types of generator use 24 words of state per generator. + + For more information see, + + * M. Luscher, “A portable high-quality random number generator + for lattice field theory calculations”, Computer Physics + Communications, 79 (1994) 100–110. + + * F. James, “RANLUX: A Fortran implementation of the + high-quality pseudo-random number generator of Luscher”, + Computer Physics Communications, 79 (1994) 111–114 + + -- Variable: gsl_rng_cmrg + + This is a combined multiple recursive generator by L’Ecuyer. Its + sequence is, + + z_n = (x_n - y_n) \mod m_1 + + where the two underlying generators x_n and y_n are, + + x_n = (a_1 x_{n-1} + a_2 x_{n-2} + a_3 x_{n-3}) mod m_1 + y_n = (b_1 y_{n-1} + b_2 y_{n-2} + b_3 y_{n-3}) mod m_2 + + with coefficients a_1 = 0, a_2 = 63308, a_3 = -183326, b_1 = 86098, + b_2 = 0, b_3 = -539608, and moduli m_1 = 2^{31} - 1 = 2147483647 + and m_2 = 2145483479. + + The period of this generator is \hbox{lcm}(m_1^3-1, m_2^3-1), which + is approximately 2^{185} (about 10^{56}). It uses 6 words of state + per generator. For more information see, + + * P. L’Ecuyer, “Combined Multiple Recursive Random Number + Generators”, Operations Research, 44, 5 (1996), 816–822. + + -- Variable: gsl_rng_mrg + + This is a fifth-order multiple recursive generator by L’Ecuyer, + Blouin and Coutre. Its sequence is, + + x_n = (a_1 x_{n-1} + a_5 x_{n-5}) \mod m + + with a_1 = 107374182, a_2 = a_3 = a_4 = 0, a_5 = 104480 and m = + 2^{31}-1. + + The period of this generator is about 10^{46}. It uses 5 words of + state per generator. More information can be found in the + following paper, + + * P. L’Ecuyer, F. Blouin, and R. Coutre, “A search for good + multiple recursive random number generators”, ACM Transactions + on Modeling and Computer Simulation 3, 87–98 (1993). + + -- Variable: gsl_rng_taus + -- Variable: gsl_rng_taus2 + + This is a maximally equidistributed combined Tausworthe generator + by L’Ecuyer. The sequence is, + + x_n = (s1_n ^^ s2_n ^^ s3_n) + + where, + + s1_{n+1} = (((s1_n&4294967294)<<12)^^(((s1_n<<13)^^s1_n)>>19)) + s2_{n+1} = (((s2_n&4294967288)<< 4)^^(((s2_n<< 2)^^s2_n)>>25)) + s3_{n+1} = (((s3_n&4294967280)<<17)^^(((s3_n<< 3)^^s3_n)>>11)) + + computed modulo 2^{32}. In the formulas above \oplus denotes + `exclusive-or'. Note that the algorithm relies on the properties + of 32-bit unsigned integers and has been implemented using a + bitmask of ‘0xFFFFFFFF’ to make it work on 64 bit machines. + + The period of this generator is 2^{88} (about 10^{26}). It uses 3 + words of state per generator. For more information see, + + * P. L’Ecuyer, “Maximally Equidistributed Combined Tausworthe + Generators”, Mathematics of Computation, 65, 213 (1996), + 203–213. + + The generator *note gsl_rng_taus2: 669. uses the same algorithm as + *note gsl_rng_taus: 651. but with an improved seeding procedure + described in the paper, + + * P. L’Ecuyer, “Tables of Maximally Equidistributed Combined + LFSR Generators”, Mathematics of Computation, 68, 225 (1999), + 261–269 + + The generator *note gsl_rng_taus2: 669. should now be used in + preference to *note gsl_rng_taus: 651. + + -- Variable: gsl_rng_gfsr4 + + The ‘gfsr4’ generator is like a lagged-fibonacci generator, and + produces each number as an ‘xor’’d sum of four previous values. + + r_n = r_{n-A} ^^ r_{n-B} ^^ r_{n-C} ^^ r_{n-D} + + Ziff (ref below) notes that “it is now widely known” that two-tap + registers (such as R250, which is described below) have serious + flaws, the most obvious one being the three-point correlation that + comes from the definition of the generator. Nice mathematical + properties can be derived for GFSR’s, and numerics bears out the + claim that 4-tap GFSR’s with appropriately chosen offsets are as + random as can be measured, using the author’s test. + + This implementation uses the values suggested the example on p392 + of Ziff’s article: A=471, B=1586, C=6988, D=9689. + + If the offsets are appropriately chosen (such as the one ones in + this implementation), then the sequence is said to be maximal; that + means that the period is 2^D - 1, where D is the longest lag. (It + is one less than 2^D because it is not permitted to have all zeros + in the ‘ra[]’ array.) For this implementation with D=9689 that + works out to about 10^{2917}. + + Note that the implementation of this generator using a 32-bit + integer amounts to 32 parallel implementations of one-bit + generators. One consequence of this is that the period of this + 32-bit generator is the same as for the one-bit generator. + Moreover, this independence means that all 32-bit patterns are + equally likely, and in particular that 0 is an allowed random + value. (We are grateful to Heiko Bauke for clarifying for us these + properties of GFSR random number generators.) + + For more information see, + + * Robert M. Ziff, “Four-tap shift-register-sequence + random-number generators”, Computers in Physics, 12(4), + Jul/Aug 1998, pp 385–392. + + +File: gsl-ref.info, Node: Unix random number generators, Next: Other random number generators, Prev: Random number generator algorithms, Up: Random Number Generation + +18.10 Unix random number generators +=================================== + +The standard Unix random number generators ‘rand’, ‘random’ and ‘rand48’ +are provided as part of GSL. Although these generators are widely +available individually often they aren’t all available on the same +platform. This makes it difficult to write portable code using them and +so we have included the complete set of Unix generators in GSL for +convenience. Note that these generators don’t produce high-quality +randomness and aren’t suitable for work requiring accurate statistics. +However, if you won’t be measuring statistical quantities and just want +to introduce some variation into your program then these generators are +quite acceptable. + + -- Variable: gsl_rng_rand + + This is the BSD ‘rand’ generator. Its sequence is + + x_{n+1} = (a x_n + c) \mod m + + with a = 1103515245, c = 12345 and m = 2^{31}. The seed specifies + the initial value, x_1. The period of this generator is 2^{31}, + and it uses 1 word of storage per generator. + + -- Variable: gsl_rng_random_bsd + -- Variable: gsl_rng_random_libc5 + -- Variable: gsl_rng_random_glibc2 + + These generators implement the ‘random’ family of functions, a set + of linear feedback shift register generators originally used in BSD + Unix. There are several versions of ‘random’ in use today: the + original BSD version (e.g. on SunOS4), a libc5 version (found on + older GNU/Linux systems) and a glibc2 version. Each version uses a + different seeding procedure, and thus produces different sequences. + + The original BSD routines accepted a variable length buffer for the + generator state, with longer buffers providing higher-quality + randomness. The ‘random’ function implemented algorithms for + buffer lengths of 8, 32, 64, 128 and 256 bytes, and the algorithm + with the largest length that would fit into the user-supplied + buffer was used. To support these algorithms additional generators + are available with the following names: + + gsl_rng_random8_bsd + gsl_rng_random32_bsd + gsl_rng_random64_bsd + gsl_rng_random128_bsd + gsl_rng_random256_bsd + + where the numeric suffix indicates the buffer length. The original + BSD ‘random’ function used a 128-byte default buffer and so *note + gsl_rng_random_bsd: 66d. has been made equivalent to + ‘gsl_rng_random128_bsd’. Corresponding versions of the ‘libc5’ and + ‘glibc2’ generators are also available, with the names + ‘gsl_rng_random8_libc5’, ‘gsl_rng_random8_glibc2’, etc. + + -- Variable: gsl_rng_rand48 + + This is the Unix ‘rand48’ generator. Its sequence is + + x_{n+1} = (a x_n + c) \mod m + + defined on 48-bit unsigned integers with a = 25214903917, c = 11 + and m = 2^{48}. The seed specifies the upper 32 bits of the + initial value, x_1, with the lower 16 bits set to ‘0x330E’. The + function *note gsl_rng_get(): 649. returns the upper 32 bits from + each term of the sequence. This does not have a direct parallel in + the original ‘rand48’ functions, but forcing the result to type + ‘long int’ reproduces the output of ‘mrand48’. The function *note + gsl_rng_uniform(): 64c. uses the full 48 bits of internal state to + return the double precision number x_n/m, which is equivalent to + the function ‘drand48’. Note that some versions of the GNU C + Library contained a bug in ‘mrand48’ function which caused it to + produce different results (only the lower 16-bits of the return + value were set). + + +File: gsl-ref.info, Node: Other random number generators, Next: Performance, Prev: Unix random number generators, Up: Random Number Generation + +18.11 Other random number generators +==================================== + +The generators in this section are provided for compatibility with +existing libraries. If you are converting an existing program to use +GSL then you can select these generators to check your new +implementation against the original one, using the same random number +generator. After verifying that your new program reproduces the +original results you can then switch to a higher-quality generator. + +Note that most of the generators in this section are based on single +linear congruence relations, which are the least sophisticated type of +generator. In particular, linear congruences have poor properties when +used with a non-prime modulus, as several of these routines do (e.g. +with a power of two modulus, 2^{31} or 2^{32}). This leads to +periodicity in the least significant bits of each number, with only the +higher bits having any randomness. Thus if you want to produce a random +bitstream it is best to avoid using the least significant bits. + + -- Variable: gsl_rng_ranf + + This is the CRAY random number generator ‘RANF’. Its sequence is + + x_{n+1} = (a x_n) \mod m + + defined on 48-bit unsigned integers with a = 44485709377909 and m = + 2^{48}. The seed specifies the lower 32 bits of the initial value, + x_1, with the lowest bit set to prevent the seed taking an even + value. The upper 16 bits of x_1 are set to 0. A consequence of + this procedure is that the pairs of seeds 2 and 3, 4 and 5, etc.: + produce the same sequences. + + The generator compatible with the CRAY MATHLIB routine RANF. It + produces double precision floating point numbers which should be + identical to those from the original RANF. + + There is a subtlety in the implementation of the seeding. The + initial state is reversed through one step, by multiplying by the + modular inverse of a mod m. This is done for compatibility with + the original CRAY implementation. + + Note that you can only seed the generator with integers up to + 2^{32}, while the original CRAY implementation uses non-portable + wide integers which can cover all 2^{48} states of the generator. + + The function *note gsl_rng_get(): 649. returns the upper 32 bits + from each term of the sequence. The function *note + gsl_rng_uniform(): 64c. uses the full 48 bits to return the double + precision number x_n/m. + + The period of this generator is 2^{46}. + + -- Variable: gsl_rng_ranmar + + This is the RANMAR lagged-fibonacci generator of Marsaglia, Zaman + and Tsang. It is a 24-bit generator, originally designed for + single-precision IEEE floating point numbers. It was included in + the CERNLIB high-energy physics library. + + -- Variable: gsl_rng_r250 + + This is the shift-register generator of Kirkpatrick and Stoll. The + sequence is based on the recurrence + + x_n = x_{n-103} ^^ x_{n-250} + + where \oplus denotes `exclusive-or', defined on 32-bit words. The + period of this generator is about 2^{250} and it uses 250 words of + state per generator. + + For more information see, + + * S. Kirkpatrick and E. Stoll, “A very fast shift-register + sequence random number generator”, Journal of Computational + Physics, 40, 517–526 (1981) + + -- Variable: gsl_rng_tt800 + + This is an earlier version of the twisted generalized feedback + shift-register generator, and has been superseded by the + development of MT19937. However, it is still an acceptable + generator in its own right. It has a period of 2^{800} and uses 33 + words of storage per generator. + + For more information see, + + * Makoto Matsumoto and Yoshiharu Kurita, “Twisted GFSR + Generators II”, ACM Transactions on Modelling and Computer + Simulation, Vol.: 4, No.: 3, 1994, pages 254–266. + + -- Variable: gsl_rng_vax + + This is the VAX generator ‘MTH$RANDOM’. Its sequence is, + + x_{n+1} = (a x_n + c) \mod m + + with a = 69069, c = 1 and m = 2^{32}. The seed specifies the + initial value, x_1. The period of this generator is 2^{32} and it + uses 1 word of storage per generator. + + -- Variable: gsl_rng_transputer + + This is the random number generator from the INMOS Transputer + Development system. Its sequence is, + + x_{n+1} = (a x_n) \mod m + + with a = 1664525 and m = 2^{32}. The seed specifies the initial + value, x_1. + + -- Variable: gsl_rng_randu + + This is the IBM ‘RANDU’ generator. Its sequence is + + x_{n+1} = (a x_n) \mod m + + with a = 65539 and m = 2^{31}. The seed specifies the initial + value, x_1. The period of this generator was only 2^{29}. It has + become a textbook example of a poor generator. + + -- Variable: gsl_rng_minstd + + This is Park and Miller’s “minimal standard” MINSTD generator, a + simple linear congruence which takes care to avoid the major + pitfalls of such algorithms. Its sequence is, + + x_{n+1} = (a x_n) \mod m + + with a = 16807 and m = 2^{31} - 1 = 2147483647. The seed specifies + the initial value, x_1. The period of this generator is about + 2^{31}. + + This generator was used in the IMSL Library (subroutine RNUN) and + in MATLAB (the RAND function) in the past. It is also sometimes + known by the acronym “GGL” (I’m not sure what that stands for). + + For more information see, + + * Park and Miller, “Random Number Generators: Good ones are hard + to find”, Communications of the ACM, October 1988, Volume 31, + No 10, pages 1192–1201. + + -- Variable: gsl_rng_uni + -- Variable: gsl_rng_uni32 + + This is a reimplementation of the 16-bit SLATEC random number + generator RUNIF. A generalization of the generator to 32 bits is + provided by *note gsl_rng_uni32: 67b. The original source code is + available from NETLIB. + + -- Variable: gsl_rng_slatec + + This is the SLATEC random number generator RAND. It is ancient. + The original source code is available from NETLIB. + + -- Variable: gsl_rng_zuf + + This is the ZUFALL lagged Fibonacci series generator of Peterson. + Its sequence is, + + t = u_{n-273} + u_{n-607} + u_n = t - floor(t) + + The original source code is available from NETLIB. For more + information see, + + * W. Petersen, “Lagged Fibonacci Random Number Generators for + the NEC SX-3”, International Journal of High Speed Computing + (1994). + + -- Variable: gsl_rng_knuthran2 + + This is a second-order multiple recursive generator described by + Knuth in Seminumerical Algorithms, 3rd Ed., page 108. Its sequence + is, + + x_n = (a_1 x_{n-1} + a_2 x_{n-2}) \mod m + + with a_1 = 271828183, a_2 = 314159269, and m = 2^{31}-1. + + -- Variable: gsl_rng_knuthran2002 + -- Variable: gsl_rng_knuthran + + This is a second-order multiple recursive generator described by + Knuth in Seminumerical Algorithms, 3rd Ed., Section 3.6. Knuth + provides its C code. The updated routine *note + gsl_rng_knuthran2002: 67f. is from the revised 9th printing and + corrects some weaknesses in the earlier version, which is + implemented as *note gsl_rng_knuthran: 680. + + -- Variable: gsl_rng_borosh13 + -- Variable: gsl_rng_fishman18 + -- Variable: gsl_rng_fishman20 + -- Variable: gsl_rng_lecuyer21 + -- Variable: gsl_rng_waterman14 + + These multiplicative generators are taken from Knuth’s + Seminumerical Algorithms, 3rd Ed., pages 106–108. Their sequence + is, + + x_{n+1} = (a x_n) \mod m + + where the seed specifies the initial value, x_1. The parameters a + and m are as follows, Borosh-Niederreiter: a = 1812433253, m = + 2^{32}, Fishman18: a = 62089911, m = 2^{31}-1, Fishman20: a = + 48271, m = 2^{31}-1, L’Ecuyer: a = 40692, m = 2^{31}-249, Waterman: + a = 1566083941, m = 2^{32}. + + -- Variable: gsl_rng_fishman2x + + This is the L’Ecuyer–Fishman random number generator. It is taken + from Knuth’s Seminumerical Algorithms, 3rd Ed., page 108. Its + sequence is, + + z_{n+1} = (x_n - y_n) \mod m + + with m = 2^{31}-1. x_n and y_n are given by the ‘fishman20’ and + ‘lecuyer21’ algorithms. The seed specifies the initial value, x_1. + + -- Variable: gsl_rng_coveyou + + This is the Coveyou random number generator. It is taken from + Knuth’s Seminumerical Algorithms, 3rd Ed., Section 3.2.2. Its + sequence is, + + x_{n+1} = (x_n (x_n + 1)) \mod m + + with m = 2^{32}. The seed specifies the initial value, x_1. + + +File: gsl-ref.info, Node: Performance, Next: Examples<12>, Prev: Other random number generators, Up: Random Number Generation + +18.12 Performance +================= + +The following table shows the relative performance of a selection the +available random number generators. The fastest simulation quality +generators are ‘taus’, ‘gfsr4’ and ‘mt19937’. The generators which +offer the best mathematically-proven quality are those based on the +RANLUX algorithm: + + 1754 k ints/sec, 870 k doubles/sec, taus + 1613 k ints/sec, 855 k doubles/sec, gfsr4 + 1370 k ints/sec, 769 k doubles/sec, mt19937 + 565 k ints/sec, 571 k doubles/sec, ranlxs0 + 400 k ints/sec, 405 k doubles/sec, ranlxs1 + 490 k ints/sec, 389 k doubles/sec, mrg + 407 k ints/sec, 297 k doubles/sec, ranlux + 243 k ints/sec, 254 k doubles/sec, ranlxd1 + 251 k ints/sec, 253 k doubles/sec, ranlxs2 + 238 k ints/sec, 215 k doubles/sec, cmrg + 247 k ints/sec, 198 k doubles/sec, ranlux389 + 141 k ints/sec, 140 k doubles/sec, ranlxd2 + + +File: gsl-ref.info, Node: Examples<12>, Next: References and Further Reading<13>, Prev: Performance, Up: Random Number Generation + +18.13 Examples +============== + +The following program demonstrates the use of a random number generator +to produce uniform random numbers in the range [0.0, 1.0), + + #include + #include + + int + main (void) + { + const gsl_rng_type * T; + gsl_rng * r; + + int i, n = 10; + + gsl_rng_env_setup(); + + T = gsl_rng_default; + r = gsl_rng_alloc (T); + + for (i = 0; i < n; i++) + { + double u = gsl_rng_uniform (r); + printf ("%.5f\n", u); + } + + gsl_rng_free (r); + + return 0; + } + +Here is the output of the program, + + 0.99974 + 0.16291 + 0.28262 + 0.94720 + 0.23166 + 0.48497 + 0.95748 + 0.74431 + 0.54004 + 0.73995 + +The numbers depend on the seed used by the generator. The default seed +can be changed with the *note GSL_RNG_SEED: 643. environment variable to +produce a different stream of numbers. The generator itself can be +changed using the environment variable *note GSL_RNG_TYPE: 658. Here is +the output of the program using a seed value of 123 and the +multiple-recursive generator ‘mrg’: + + $ GSL_RNG_SEED=123 GSL_RNG_TYPE=mrg ./a.out + + 0.33050 + 0.86631 + 0.32982 + 0.67620 + 0.53391 + 0.06457 + 0.16847 + 0.70229 + 0.04371 + 0.86374 + + +File: gsl-ref.info, Node: References and Further Reading<13>, Next: Acknowledgements, Prev: Examples<12>, Up: Random Number Generation + +18.14 References and Further Reading +==================================== + +The subject of random number generation and testing is reviewed +extensively in Knuth’s `Seminumerical Algorithms'. + + * Donald E. Knuth, The Art of Computer Programming: Seminumerical + Algorithms (Vol 2, 3rd Ed, 1997), Addison-Wesley, ISBN 0201896842. + +Further information is available in the review paper written by Pierre +L’Ecuyer, + + * P. L’Ecuyer, “Random Number Generation”, Chapter 4 of the Handbook + on Simulation, Jerry Banks Ed., Wiley, 1998, 93–137. + + * ‘http://www.iro.umontreal.ca/~lecuyer/papers.html’ in the file + ‘handsim.ps’. + +The source code for the DIEHARD random number generator tests is also +available online, + + * DIEHARD source code, G. Marsaglia, + ‘http://stat.fsu.edu/pub/diehard/’ + +A comprehensive set of random number generator tests is available from +NIST, + + * NIST Special Publication 800-22, “A Statistical Test Suite for the + Validation of Random Number Generators and Pseudo Random Number + Generators for Cryptographic Applications”. + + * ‘http://csrc.nist.gov/rng/’ + + +File: gsl-ref.info, Node: Acknowledgements, Prev: References and Further Reading<13>, Up: Random Number Generation + +18.15 Acknowledgements +====================== + +Thanks to Makoto Matsumoto, Takuji Nishimura and Yoshiharu Kurita for +making the source code to their generators (MT19937, MM&TN; TT800, +MM&YK) available under the GNU General Public License. Thanks to Martin +Luscher for providing notes and source code for the RANLXS and RANLXD +generators. + + +File: gsl-ref.info, Node: Quasi-Random Sequences, Next: Random Number Distributions, Prev: Random Number Generation, Up: Top + +19 Quasi-Random Sequences +************************* + +This chapter describes functions for generating quasi-random sequences +in arbitrary dimensions. A quasi-random sequence progressively covers a +d-dimensional space with a set of points that are uniformly distributed. +Quasi-random sequences are also known as low-discrepancy sequences. The +quasi-random sequence generators use an interface that is similar to the +interface for random number generators, except that seeding is not +required—each generator produces a single sequence. + +The functions described in this section are declared in the header file +‘gsl_qrng.h’. + +* Menu: + +* Quasi-random number generator initialization:: +* Sampling from a quasi-random number generator:: +* Auxiliary quasi-random number generator functions:: +* Saving and restoring quasi-random number generator state:: +* Quasi-random number generator algorithms:: +* Examples: Examples<13>. +* References:: + + +File: gsl-ref.info, Node: Quasi-random number generator initialization, Next: Sampling from a quasi-random number generator, Up: Quasi-Random Sequences + +19.1 Quasi-random number generator initialization +================================================= + + -- Type: gsl_qrng + + This is a workspace for computing quasi-random sequences. + + -- Function: gsl_qrng * gsl_qrng_alloc (const gsl_qrng_type * T, + unsigned int d) + + This function returns a pointer to a newly-created instance of a + quasi-random sequence generator of type ‘T’ and dimension ‘d’. If + there is insufficient memory to create the generator then the + function returns a null pointer and the error handler is invoked + with an error code of *note GSL_ENOMEM: 2a. + + -- Function: void gsl_qrng_free (gsl_qrng * q) + + This function frees all the memory associated with the generator + ‘q’. + + -- Function: void gsl_qrng_init (gsl_qrng * q) + + This function reinitializes the generator ‘q’ to its starting + point. Note that quasi-random sequences do not use a seed and + always produce the same set of values. + + +File: gsl-ref.info, Node: Sampling from a quasi-random number generator, Next: Auxiliary quasi-random number generator functions, Prev: Quasi-random number generator initialization, Up: Quasi-Random Sequences + +19.2 Sampling from a quasi-random number generator +================================================== + + -- Function: int gsl_qrng_get (const gsl_qrng * q, double x[]) + + This function stores the next point from the sequence generator ‘q’ + in the array ‘x’. The space available for ‘x’ must match the + dimension of the generator. The point ‘x’ will lie in the range 0 + < x_i < 1 for each x_i. An inline version of this function is used + when ‘HAVE_INLINE’ is defined. + + +File: gsl-ref.info, Node: Auxiliary quasi-random number generator functions, Next: Saving and restoring quasi-random number generator state, Prev: Sampling from a quasi-random number generator, Up: Quasi-Random Sequences + +19.3 Auxiliary quasi-random number generator functions +====================================================== + + -- Function: const char * gsl_qrng_name (const gsl_qrng * q) + + This function returns a pointer to the name of the generator. + + -- Function: size_t gsl_qrng_size (const gsl_qrng * q) + -- Function: void * gsl_qrng_state (const gsl_qrng * q) + + These functions return a pointer to the state of generator ‘r’ and + its size. You can use this information to access the state + directly. For example, the following code will write the state of + a generator to a stream: + + void * state = gsl_qrng_state (q); + size_t n = gsl_qrng_size (q); + fwrite (state, n, 1, stream); + + +File: gsl-ref.info, Node: Saving and restoring quasi-random number generator state, Next: Quasi-random number generator algorithms, Prev: Auxiliary quasi-random number generator functions, Up: Quasi-Random Sequences + +19.4 Saving and restoring quasi-random number generator state +============================================================= + + -- Function: int gsl_qrng_memcpy (gsl_qrng * dest, const gsl_qrng + * src) + + This function copies the quasi-random sequence generator ‘src’ into + the pre-existing generator ‘dest’, making ‘dest’ into an exact copy + of ‘src’. The two generators must be of the same type. + + -- Function: gsl_qrng * gsl_qrng_clone (const gsl_qrng * q) + + This function returns a pointer to a newly created generator which + is an exact copy of the generator ‘q’. + + +File: gsl-ref.info, Node: Quasi-random number generator algorithms, Next: Examples<13>, Prev: Saving and restoring quasi-random number generator state, Up: Quasi-Random Sequences + +19.5 Quasi-random number generator algorithms +============================================= + +The following quasi-random sequence algorithms are available, + + -- Type: gsl_qrng_type + + -- Variable: gsl_qrng_niederreiter_2 + + This generator uses the algorithm described in Bratley, Fox, + Niederreiter, ACM Trans. Model. Comp. Sim. 2, 195 (1992). + It is valid up to 12 dimensions. + + -- Variable: gsl_qrng_sobol + + This generator uses the Sobol sequence described in Antonov, + Saleev, USSR Comput. Maths. Math. Phys. 19, 252 (1980). + It is valid up to 40 dimensions. + + -- Variable: gsl_qrng_halton + -- Variable: gsl_qrng_reversehalton + + These generators use the Halton and reverse Halton sequences + described in J.H. Halton, Numerische Mathematik, 2, 84-90 + (1960) and B. Vandewoestyne and R. Cools Computational and + Applied Mathematics, 189, 1&2, 341-361 (2006). They are valid + up to 1229 dimensions. + + +File: gsl-ref.info, Node: Examples<13>, Next: References, Prev: Quasi-random number generator algorithms, Up: Quasi-Random Sequences + +19.6 Examples +============= + +The following program prints the first 1024 points of the 2-dimensional +Sobol sequence. + + #include + #include + + int + main (void) + { + int i; + gsl_qrng * q = gsl_qrng_alloc (gsl_qrng_sobol, 2); + + for (i = 0; i < 1024; i++) + { + double v[2]; + gsl_qrng_get (q, v); + printf ("%.5f %.5f\n", v[0], v[1]); + } + + gsl_qrng_free (q); + return 0; + } + +Here is the output from the program: + + $ ./a.out + 0.50000 0.50000 + 0.75000 0.25000 + 0.25000 0.75000 + 0.37500 0.37500 + 0.87500 0.87500 + 0.62500 0.12500 + 0.12500 0.62500 + .... + +It can be seen that successive points progressively fill-in the spaces +between previous points. + +Fig. %s shows the distribution in the x-y plane of the first 1024 +points from the Sobol sequence, + +[image src="qrng.png"] + +Figure: Distribution of the first 1024 points from the quasi-random +Sobol sequence + + +File: gsl-ref.info, Node: References, Prev: Examples<13>, Up: Quasi-Random Sequences + +19.7 References +=============== + +The implementations of the quasi-random sequence routines are based on +the algorithms described in the following paper, + + * P. Bratley and B.L. Fox and H. Niederreiter, “Algorithm 738: + Programs to Generate Niederreiter’s Low-discrepancy Sequences”, ACM + Transactions on Mathematical Software, Vol.: 20, No.: 4, December, + 1994, p.: 494–495. + + +File: gsl-ref.info, Node: Random Number Distributions, Next: Statistics, Prev: Quasi-Random Sequences, Up: Top + +20 Random Number Distributions +****************************** + +This chapter describes functions for generating random variates and +computing their probability distributions. Samples from the +distributions described in this chapter can be obtained using any of the +random number generators in the library as an underlying source of +randomness. + +In the simplest cases a non-uniform distribution can be obtained +analytically from the uniform distribution of a random number generator +by applying an appropriate transformation. This method uses one call to +the random number generator. More complicated distributions are created +by the `acceptance-rejection' method, which compares the desired +distribution against a distribution which is similar and known +analytically. This usually requires several samples from the generator. + +The library also provides cumulative distribution functions and inverse +cumulative distribution functions, sometimes referred to as quantile +functions. The cumulative distribution functions and their inverses are +computed separately for the upper and lower tails of the distribution, +allowing full accuracy to be retained for small results. + +The functions for random variates and probability density functions +described in this section are declared in ‘gsl_randist.h’. The +corresponding cumulative distribution functions are declared in +‘gsl_cdf.h’. + +Note that the discrete random variate functions always return a value of +type ‘unsigned int’, and on most platforms this has a maximum value of + + 2^32-1 ~=~ 4.29e9 + +They should only be called with a safe range of parameters (where there +is a negligible probability of a variate exceeding this limit) to +prevent incorrect results due to overflow. + +* Menu: + +* Introduction: Introduction<3>. +* The Gaussian Distribution:: +* The Gaussian Tail Distribution:: +* The Bivariate Gaussian Distribution:: +* The Multivariate Gaussian Distribution:: +* The Exponential Distribution:: +* The Laplace Distribution:: +* The Exponential Power Distribution:: +* The Cauchy Distribution:: +* The Rayleigh Distribution:: +* The Rayleigh Tail Distribution:: +* The Landau Distribution:: +* The Levy alpha-Stable Distributions:: +* The Levy skew alpha-Stable Distribution:: +* The Gamma Distribution:: +* The Flat (Uniform) Distribution: The Flat Uniform Distribution. +* The Lognormal Distribution:: +* The Chi-squared Distribution:: +* The F-distribution:: +* The t-distribution:: +* The Beta Distribution:: +* The Logistic Distribution:: +* The Pareto Distribution:: +* Spherical Vector Distributions:: +* The Weibull Distribution:: +* The Type-1 Gumbel Distribution:: +* The Type-2 Gumbel Distribution:: +* The Dirichlet Distribution:: +* General Discrete Distributions:: +* The Poisson Distribution:: +* The Bernoulli Distribution:: +* The Binomial Distribution:: +* The Multinomial Distribution:: +* The Negative Binomial Distribution:: +* The Pascal Distribution:: +* The Geometric Distribution:: +* The Hypergeometric Distribution:: +* The Logarithmic Distribution:: +* The Wishart Distribution:: +* Shuffling and Sampling:: +* Examples: Examples<14>. +* References and Further Reading: References and Further Reading<14>. + + +File: gsl-ref.info, Node: Introduction<3>, Next: The Gaussian Distribution, Up: Random Number Distributions + +20.1 Introduction +================= + +Continuous random number distributions are defined by a probability +density function, p(x), such that the probability of x occurring in the +infinitesimal range x to x + dx is p(x) dx. + +The cumulative distribution function for the lower tail P(x) is defined +by the integral, + + P(x) = \int_{-\infty}^{x} dx' p(x') + +and gives the probability of a variate taking a value less than x. + +The cumulative distribution function for the upper tail Q(x) is defined +by the integral, + + Q(x) = \int_{x}^{+\infty} dx' p(x') + +and gives the probability of a variate taking a value greater than x. + +The upper and lower cumulative distribution functions are related by +P(x) + Q(x) = 1 and satisfy 0 \le P(x) \le 1, 0 \le Q(x) \le 1. + +The inverse cumulative distributions, x = P^{-1}(P) and x = Q^{-1}(Q) +give the values of x which correspond to a specific value of P or Q. +They can be used to find confidence limits from probability values. + +For discrete distributions the probability of sampling the integer value +k is given by p(k), where \sum_k p(k) = 1. The cumulative distribution +for the lower tail P(k) of a discrete distribution is defined as, + + P(k) = \sum_{i \le k} p(i) + +where the sum is over the allowed range of the distribution less than or +equal to k. + +The cumulative distribution for the upper tail of a discrete +distribution Q(k) is defined as + + Q(k) = \sum_{i > k} p(i) + +giving the sum of probabilities for all values greater than k. These +two definitions satisfy the identity P(k)+Q(k)=1. + +If the range of the distribution is 1 to n inclusive then P(n) = 1, Q(n) += 0 while P(1) = p(1), Q(1) = 1 - p(1). + + +File: gsl-ref.info, Node: The Gaussian Distribution, Next: The Gaussian Tail Distribution, Prev: Introduction<3>, Up: Random Number Distributions + +20.2 The Gaussian Distribution +============================== + + -- Function: double gsl_ran_gaussian (const gsl_rng * r, double sigma) + + This function returns a Gaussian random variate, with mean zero and + standard deviation ‘sigma’. The probability distribution for + Gaussian random variates is, + + p(x) dx = {1 \over \sqrt{2 \pi \sigma^2}} \exp (-x^2 / 2\sigma^2) dx + + for x in the range -\infty to +\infty. Use the transformation z = + \mu + x on the numbers returned by *note gsl_ran_gaussian(): 6a9. + to obtain a Gaussian distribution with mean \mu. This function + uses the Box-Muller algorithm which requires two calls to the + random number generator ‘r’. + + -- Function: double gsl_ran_gaussian_pdf (double x, double sigma) + + This function computes the probability density p(x) at ‘x’ for a + Gaussian distribution with standard deviation ‘sigma’, using the + formula given above. + +[image src="rand-gaussian.png"] + + -- Function: double gsl_ran_gaussian_ziggurat (const gsl_rng * r, + double sigma) + -- Function: double gsl_ran_gaussian_ratio_method (const gsl_rng * r, + double sigma) + + This function computes a Gaussian random variate using the + alternative Marsaglia-Tsang ziggurat and Kinderman-Monahan-Leva + ratio methods. The Ziggurat algorithm is the fastest available + algorithm in most cases. + + -- Function: double gsl_ran_ugaussian (const gsl_rng * r) + -- Function: double gsl_ran_ugaussian_pdf (double x) + -- Function: double gsl_ran_ugaussian_ratio_method (const gsl_rng * r) + + These functions compute results for the unit Gaussian distribution. + They are equivalent to the functions above with a standard + deviation of one, ‘sigma’ = 1. + + -- Function: double gsl_cdf_gaussian_P (double x, double sigma) + -- Function: double gsl_cdf_gaussian_Q (double x, double sigma) + -- Function: double gsl_cdf_gaussian_Pinv (double P, double sigma) + -- Function: double gsl_cdf_gaussian_Qinv (double Q, double sigma) + + These functions compute the cumulative distribution functions P(x), + Q(x) and their inverses for the Gaussian distribution with standard + deviation ‘sigma’. + + -- Function: double gsl_cdf_ugaussian_P (double x) + -- Function: double gsl_cdf_ugaussian_Q (double x) + -- Function: double gsl_cdf_ugaussian_Pinv (double P) + -- Function: double gsl_cdf_ugaussian_Qinv (double Q) + + These functions compute the cumulative distribution functions P(x), + Q(x) and their inverses for the unit Gaussian distribution. + + +File: gsl-ref.info, Node: The Gaussian Tail Distribution, Next: The Bivariate Gaussian Distribution, Prev: The Gaussian Distribution, Up: Random Number Distributions + +20.3 The Gaussian Tail Distribution +=================================== + + -- Function: double gsl_ran_gaussian_tail (const gsl_rng * r, double a, + double sigma) + + This function provides random variates from the upper tail of a + Gaussian distribution with standard deviation ‘sigma’. The values + returned are larger than the lower limit ‘a’, which must be + positive. The method is based on Marsaglia’s famous + rectangle-wedge-tail algorithm (Ann. Math. Stat. 32, 894–899 + (1961)), with this aspect explained in Knuth, v2, 3rd ed, p139,586 + (exercise 11). + + The probability distribution for Gaussian tail random variates is, + + p(x) dx = {1 \over N(a;\sigma) \sqrt{2 \pi \sigma^2}} \exp (- x^2 / 2\sigma^2) dx + + for x > a where N(a;\sigma) is the normalization constant, + + N(a;\sigma) = (1/2) erfc(a / sqrt(2 sigma^2)). + + -- Function: double gsl_ran_gaussian_tail_pdf (double x, double a, + double sigma) + + This function computes the probability density p(x) at ‘x’ for a + Gaussian tail distribution with standard deviation ‘sigma’ and + lower limit ‘a’, using the formula given above. + +[image src="rand-gaussian-tail.png"] + + -- Function: double gsl_ran_ugaussian_tail (const gsl_rng * r, + double a) + -- Function: double gsl_ran_ugaussian_tail_pdf (double :data:x, + double :data:a) + + These functions compute results for the tail of a unit Gaussian + distribution. They are equivalent to the functions above with a + standard deviation of one, ‘sigma’ = 1. + + +File: gsl-ref.info, Node: The Bivariate Gaussian Distribution, Next: The Multivariate Gaussian Distribution, Prev: The Gaussian Tail Distribution, Up: Random Number Distributions + +20.4 The Bivariate Gaussian Distribution +======================================== + + -- Function: void gsl_ran_bivariate_gaussian (const gsl_rng * r, + double sigma_x, double sigma_y, double rho, double * x, double + * y) + + This function generates a pair of correlated Gaussian variates, + with mean zero, correlation coefficient ‘rho’ and standard + deviations ‘sigma_x’ and ‘sigma_y’ in the x and y directions. The + probability distribution for bivariate Gaussian random variates is, + + p(x,y) dx dy = {1 \over 2 \pi \sigma_x \sigma_y \sqrt{1-\rho^2}} \exp (-(x^2/\sigma_x^2 + y^2/\sigma_y^2 - 2 \rho x y/(\sigma_x\sigma_y))/2(1-\rho^2)) dx dy + + for x,y in the range -\infty to +\infty. The correlation + coefficient ‘rho’ should lie between 1 and -1. + + -- Function: double gsl_ran_bivariate_gaussian_pdf (double x, double y, + double sigma_x, double sigma_y, double rho) + + This function computes the probability density p(x,y) at (‘x’, ‘y’) + for a bivariate Gaussian distribution with standard deviations + ‘sigma_x’, ‘sigma_y’ and correlation coefficient ‘rho’, using the + formula given above. + +[image src="rand-bivariate-gaussian.png"] + + +File: gsl-ref.info, Node: The Multivariate Gaussian Distribution, Next: The Exponential Distribution, Prev: The Bivariate Gaussian Distribution, Up: Random Number Distributions + +20.5 The Multivariate Gaussian Distribution +=========================================== + + -- Function: int gsl_ran_multivariate_gaussian (const gsl_rng * r, + const gsl_vector * mu, const gsl_matrix * L, gsl_vector + * result) + + This function generates a random vector satisfying the + k-dimensional multivariate Gaussian distribution with mean \mu and + variance-covariance matrix \Sigma. On input, the k-vector \mu is + given in ‘mu’, and the Cholesky factor of the k-by-k matrix \Sigma + = L L^T is given in the lower triangle of ‘L’, as output from *note + gsl_linalg_cholesky_decomp(): 521. The random vector is stored in + ‘result’ on output. The probability distribution for multivariate + Gaussian random variates is + + p(x_1,...,x_k) dx_1 ... dx_k = 1 / ( \sqrt{(2 \pi)^k |\Sigma| ) \exp (-1/2 (x - \mu)^T \Sigma^{-1} (x - \mu)) dx_1 ... dx_k + + -- Function: int gsl_ran_multivariate_gaussian_pdf (const gsl_vector + * x, const gsl_vector * mu, const gsl_matrix * L, double + * result, gsl_vector * work) + -- Function: int gsl_ran_multivariate_gaussian_log_pdf (const + gsl_vector * x, const gsl_vector * mu, const gsl_matrix * L, + double * result, gsl_vector * work) + + These functions compute p(x) or \log{p(x)} at the point ‘x’, using + mean vector ‘mu’ and variance-covariance matrix specified by its + Cholesky factor ‘L’ using the formula above. Additional workspace + of length k is required in ‘work’. + + -- Function: int gsl_ran_multivariate_gaussian_mean (const gsl_matrix + * X, gsl_vector * mu_hat) + + Given a set of n samples X_j from a k-dimensional multivariate + Gaussian distribution, this function computes the maximum + likelihood estimate of the mean of the distribution, given by + + \Hat{\mu} = {1 \over n} \sum_{j=1}^n X_j + + The samples X_1,X_2,\dots,X_n are given in the n-by-k matrix ‘X’, + and the maximum likelihood estimate of the mean is stored in + ‘mu_hat’ on output. + + -- Function: int gsl_ran_multivariate_gaussian_vcov (const gsl_matrix + * X, gsl_matrix * sigma_hat) + + Given a set of n samples X_j from a k-dimensional multivariate + Gaussian distribution, this function computes the maximum + likelihood estimate of the variance-covariance matrix of the + distribution, given by + + \Hat{\Sigma} = (1 / n) \sum_{j=1}^n ( X_j - \Hat{\mu} ) ( X_j - \Hat{\mu} )^T + + The samples X_1,X_2,\dots,X_n are given in the n-by-k matrix ‘X’ + and the maximum likelihood estimate of the variance-covariance + matrix is stored in ‘sigma_hat’ on output. + + +File: gsl-ref.info, Node: The Exponential Distribution, Next: The Laplace Distribution, Prev: The Multivariate Gaussian Distribution, Up: Random Number Distributions + +20.6 The Exponential Distribution +================================= + + -- Function: double gsl_ran_exponential (const gsl_rng * r, double mu) + + This function returns a random variate from the exponential + distribution with mean ‘mu’. The distribution is, + + p(x) dx = {1 \over \mu} \exp(-x/\mu) dx + + for x \ge 0. + + -- Function: double gsl_ran_exponential_pdf (double x, double mu) + + This function computes the probability density p(x) at ‘x’ for an + exponential distribution with mean ‘mu’, using the formula given + above. + +[image src="rand-exponential.png"] + + -- Function: double gsl_cdf_exponential_P (double x, double mu) + -- Function: double gsl_cdf_exponential_Q (double x, double mu) + -- Function: double gsl_cdf_exponential_Pinv (double P, double mu) + -- Function: double gsl_cdf_exponential_Qinv (double Q, double mu) + + These functions compute the cumulative distribution functions P(x), + Q(x) and their inverses for the exponential distribution with mean + ‘mu’. + + +File: gsl-ref.info, Node: The Laplace Distribution, Next: The Exponential Power Distribution, Prev: The Exponential Distribution, Up: Random Number Distributions + +20.7 The Laplace Distribution +============================= + + -- Function: double gsl_ran_laplace (const gsl_rng * r, double a) + + This function returns a random variate from the Laplace + distribution with width ‘a’. The distribution is, + + p(x) dx = {1 \over 2 a} \exp(-|x/a|) dx + + for -\infty < x < \infty. + + -- Function: double gsl_ran_laplace_pdf (double x, double a) + + This function computes the probability density p(x) at ‘x’ for a + Laplace distribution with width ‘a’, using the formula given above. + +[image src="rand-laplace.png"] + + -- Function: double gsl_cdf_laplace_P (double x, double a) + -- Function: double gsl_cdf_laplace_Q (double x, double a) + -- Function: double gsl_cdf_laplace_Pinv (double P, double a) + -- Function: double gsl_cdf_laplace_Qinv (double Q, double a) + + These functions compute the cumulative distribution functions P(x), + Q(x) and their inverses for the Laplace distribution with width + ‘a’. + + +File: gsl-ref.info, Node: The Exponential Power Distribution, Next: The Cauchy Distribution, Prev: The Laplace Distribution, Up: Random Number Distributions + +20.8 The Exponential Power Distribution +======================================= + + -- Function: double gsl_ran_exppow (const gsl_rng * r, double a, + double b) + + This function returns a random variate from the exponential power + distribution with scale parameter ‘a’ and exponent ‘b’. The + distribution is, + + p(x) dx = {1 \over 2 a \Gamma(1+1/b)} \exp(-|x/a|^b) dx + + for x \ge 0. For b = 1 this reduces to the Laplace distribution. + For b = 2 it has the same form as a Gaussian distribution, but with + a = \sqrt{2} \sigma. + + -- Function: double gsl_ran_exppow_pdf (double x, double a, double b) + + This function computes the probability density p(x) at ‘x’ for an + exponential power distribution with scale parameter ‘a’ and + exponent ‘b’, using the formula given above. + +[image src="rand-exppow.png"] + + -- Function: double gsl_cdf_exppow_P (double x, double a, double b) + -- Function: double gsl_cdf_exppow_Q (double x, double a, double b) + + These functions compute the cumulative distribution functions P(x), + Q(x) for the exponential power distribution with parameters ‘a’ and + ‘b’. + + +File: gsl-ref.info, Node: The Cauchy Distribution, Next: The Rayleigh Distribution, Prev: The Exponential Power Distribution, Up: Random Number Distributions + +20.9 The Cauchy Distribution +============================ + + -- Function: double gsl_ran_cauchy (const gsl_rng * r, double a) + + This function returns a random variate from the Cauchy distribution + with scale parameter ‘a’. The probability distribution for Cauchy + random variates is, + + p(x) dx = {1 \over a\pi (1 + (x/a)^2) } dx + + for x in the range -\infty to +\infty. The Cauchy distribution is + also known as the Lorentz distribution. + + -- Function: double gsl_ran_cauchy_pdf (double x, double a) + + This function computes the probability density p(x) at ‘x’ for a + Cauchy distribution with scale parameter ‘a’, using the formula + given above. + +[image src="rand-cauchy.png"] + + -- Function: double gsl_cdf_cauchy_P (double x, double a) + -- Function: double gsl_cdf_cauchy_Q (double x, double a) + -- Function: double gsl_cdf_cauchy_Pinv (double P, double a) + -- Function: double gsl_cdf_cauchy_Qinv (double Q, double a) + + These functions compute the cumulative distribution functions P(x), + Q(x) and their inverses for the Cauchy distribution with scale + parameter ‘a’. + + +File: gsl-ref.info, Node: The Rayleigh Distribution, Next: The Rayleigh Tail Distribution, Prev: The Cauchy Distribution, Up: Random Number Distributions + +20.10 The Rayleigh Distribution +=============================== + + -- Function: double gsl_ran_rayleigh (const gsl_rng * r, double sigma) + + This function returns a random variate from the Rayleigh + distribution with scale parameter ‘sigma’. The distribution is, + + p(x) dx = {x \over \sigma^2} \exp(- x^2/(2 \sigma^2)) dx + + for x > 0. + + -- Function: double gsl_ran_rayleigh_pdf (double x, double sigma) + + This function computes the probability density p(x) at ‘x’ for a + Rayleigh distribution with scale parameter ‘sigma’, using the + formula given above. + +[image src="rand-rayleigh.png"] + + -- Function: double gsl_cdf_rayleigh_P (double x, double sigma) + -- Function: double gsl_cdf_rayleigh_Q (double x, double sigma) + -- Function: double gsl_cdf_rayleigh_Pinv (double P, double sigma) + -- Function: double gsl_cdf_rayleigh_Qinv (double Q, double sigma) + + These functions compute the cumulative distribution functions P(x), + Q(x) and their inverses for the Rayleigh distribution with scale + parameter ‘sigma’. + + +File: gsl-ref.info, Node: The Rayleigh Tail Distribution, Next: The Landau Distribution, Prev: The Rayleigh Distribution, Up: Random Number Distributions + +20.11 The Rayleigh Tail Distribution +==================================== + + -- Function: double gsl_ran_rayleigh_tail (const gsl_rng * r, double a, + double sigma) + + This function returns a random variate from the tail of the + Rayleigh distribution with scale parameter ‘sigma’ and a lower + limit of ‘a’. The distribution is, + + p(x) dx = {x \over \sigma^2} \exp ((a^2 - x^2) /(2 \sigma^2)) dx + + for x > a. + + -- Function: double gsl_ran_rayleigh_tail_pdf (double x, double a, + double sigma) + + This function computes the probability density p(x) at ‘x’ for a + Rayleigh tail distribution with scale parameter ‘sigma’ and lower + limit ‘a’, using the formula given above. + +[image src="rand-rayleigh-tail.png"] + + +File: gsl-ref.info, Node: The Landau Distribution, Next: The Levy alpha-Stable Distributions, Prev: The Rayleigh Tail Distribution, Up: Random Number Distributions + +20.12 The Landau Distribution +============================= + + -- Function: double gsl_ran_landau (const gsl_rng * r) + + This function returns a random variate from the Landau + distribution. The probability distribution for Landau random + variates is defined analytically by the complex integral, + + p(x) = (1/(2 \pi i)) \int_{c-i\infty}^{c+i\infty} ds exp(s log(s) + x s) + + For numerical purposes it is more convenient to use the following + equivalent form of the integral, + + p(x) = (1/\pi) \int_0^\infty dt \exp(-t \log(t) - x t) \sin(\pi t). + + -- Function: double gsl_ran_landau_pdf (double x) + + This function computes the probability density p(x) at ‘x’ for the + Landau distribution using an approximation to the formula given + above. + +[image src="rand-landau.png"] + + +File: gsl-ref.info, Node: The Levy alpha-Stable Distributions, Next: The Levy skew alpha-Stable Distribution, Prev: The Landau Distribution, Up: Random Number Distributions + +20.13 The Levy alpha-Stable Distributions +========================================= + + -- Function: double gsl_ran_levy (const gsl_rng * r, double c, + double alpha) + + This function returns a random variate from the Levy symmetric + stable distribution with scale ‘c’ and exponent *note alpha: 497. + The symmetric stable probability distribution is defined by a + Fourier transform, + + p(x) = 1 / (2 \pi) \int_{-\infty}^{+\infty} dt \exp(-it x - |c t|^alpha) + + There is no explicit solution for the form of p(x) and the library + does not define a corresponding ‘pdf’ function. For \alpha = 1 the + distribution reduces to the Cauchy distribution. For \alpha = 2 it + is a Gaussian distribution with \sigma = \sqrt{2} c. For \alpha < + 1 the tails of the distribution become extremely wide. + + The algorithm only works for 0 < \alpha \le 2. + +[image src="rand-levy.png"] + + +File: gsl-ref.info, Node: The Levy skew alpha-Stable Distribution, Next: The Gamma Distribution, Prev: The Levy alpha-Stable Distributions, Up: Random Number Distributions + +20.14 The Levy skew alpha-Stable Distribution +============================================= + + -- Function: double gsl_ran_levy_skew (const gsl_rng * r, double c, + double alpha, double beta) + + This function returns a random variate from the Levy skew stable + distribution with scale ‘c’, exponent *note alpha: 497. and + skewness parameter ‘beta’. The skewness parameter must lie in the + range [-1,1]. The Levy skew stable probability distribution is + defined by a Fourier transform, + + p(x) = 1 / (2 \pi) \int_{-\infty}^{+\infty} dt \exp(-it x - |c t|^alpha (1-i beta sign(t) tan(pi alpha/2))) + + When \alpha = 1 the term \tan(\pi \alpha/2) is replaced by + -(2/\pi)\log|t|. There is no explicit solution for the form of + p(x) and the library does not define a corresponding ‘pdf’ + function. For \alpha = 2 the distribution reduces to a Gaussian + distribution with \sigma = \sqrt{2} c and the skewness parameter + has no effect. For \alpha < 1 the tails of the distribution become + extremely wide. The symmetric distribution corresponds to \beta = + 0. + + The algorithm only works for 0 < \alpha \le 2. + +The Levy alpha-stable distributions have the property that if N +alpha-stable variates are drawn from the distribution p(c, \alpha, +\beta) then the sum Y = X_1 + X_2 + \dots + X_N will also be distributed +as an alpha-stable variate, p(N^{1/\alpha} c, \alpha, \beta). + +[image src="rand-levyskew.png"] + + +File: gsl-ref.info, Node: The Gamma Distribution, Next: The Flat Uniform Distribution, Prev: The Levy skew alpha-Stable Distribution, Up: Random Number Distributions + +20.15 The Gamma Distribution +============================ + + -- Function: double gsl_ran_gamma (const gsl_rng * r, double a, + double b) + + This function returns a random variate from the gamma distribution. + The distribution function is, + + p(x) dx = {1 \over \Gamma(a) b^a} x^{a-1} e^{-x/b} dx + + for x > 0. + + The gamma distribution with an integer parameter ‘a’ is known as + the Erlang distribution. + + The variates are computed using the Marsaglia-Tsang fast gamma + method. This function for this method was previously called + ‘gsl_ran_gamma_mt()’ and can still be accessed using this name. + + -- Function: double gsl_ran_gamma_knuth (const gsl_rng * r, double a, + double b) + + This function returns a gamma variate using the algorithms from + Knuth (vol 2). + + -- Function: double gsl_ran_gamma_pdf (double x, double a, double b) + + This function computes the probability density p(x) at ‘x’ for a + gamma distribution with parameters ‘a’ and ‘b’, using the formula + given above. + +[image src="rand-gamma.png"] + + -- Function: double gsl_cdf_gamma_P (double x, double a, double b) + -- Function: double gsl_cdf_gamma_Q (double x, double a, double b) + -- Function: double gsl_cdf_gamma_Pinv (double P, double a, double b) + -- Function: double gsl_cdf_gamma_Qinv (double Q, double a, double b) + + These functions compute the cumulative distribution functions P(x), + Q(x) and their inverses for the gamma distribution with parameters + ‘a’ and ‘b’. + + +File: gsl-ref.info, Node: The Flat Uniform Distribution, Next: The Lognormal Distribution, Prev: The Gamma Distribution, Up: Random Number Distributions + +20.16 The Flat (Uniform) Distribution +===================================== + + -- Function: double gsl_ran_flat (const gsl_rng * r, double a, + double b) + + This function returns a random variate from the flat (uniform) + distribution from ‘a’ to ‘b’. The distribution is, + + p(x) dx = {1 \over (b-a)} dx + + if a \le x < b and 0 otherwise. + + -- Function: double gsl_ran_flat_pdf (double x, double a, double b) + + This function computes the probability density p(x) at ‘x’ for a + uniform distribution from ‘a’ to ‘b’, using the formula given + above. + +[image src="rand-flat.png"] + + -- Function: double gsl_cdf_flat_P (double x, double a, double b) + -- Function: double gsl_cdf_flat_Q (double x, double a, double b) + -- Function: double gsl_cdf_flat_Pinv (double P, double a, double b) + -- Function: double gsl_cdf_flat_Qinv (double Q, double a, double b) + + These functions compute the cumulative distribution functions P(x), + Q(x) and their inverses for a uniform distribution from ‘a’ to ‘b’. + + +File: gsl-ref.info, Node: The Lognormal Distribution, Next: The Chi-squared Distribution, Prev: The Flat Uniform Distribution, Up: Random Number Distributions + +20.17 The Lognormal Distribution +================================ + + -- Function: double gsl_ran_lognormal (const gsl_rng * r, double zeta, + double sigma) + + This function returns a random variate from the lognormal + distribution. The distribution function is, + + p(x) dx = {1 \over x \sqrt{2 \pi \sigma^2}} \exp(-(\ln(x) - \zeta)^2/2 \sigma^2) dx + + for x > 0. + + -- Function: double gsl_ran_lognormal_pdf (double x, double zeta, + double sigma) + + This function computes the probability density p(x) at ‘x’ for a + lognormal distribution with parameters ‘zeta’ and ‘sigma’, using + the formula given above. + +[image src="rand-lognormal.png"] + + -- Function: double gsl_cdf_lognormal_P (double x, double zeta, + double sigma) + -- Function: double gsl_cdf_lognormal_Q (double x, double zeta, + double sigma) + -- Function: double gsl_cdf_lognormal_Pinv (double P, double zeta, + double sigma) + -- Function: double gsl_cdf_lognormal_Qinv (double Q, double zeta, + double sigma) + + These functions compute the cumulative distribution functions P(x), + Q(x) and their inverses for the lognormal distribution with + parameters ‘zeta’ and ‘sigma’. + + +File: gsl-ref.info, Node: The Chi-squared Distribution, Next: The F-distribution, Prev: The Lognormal Distribution, Up: Random Number Distributions + +20.18 The Chi-squared Distribution +================================== + +The chi-squared distribution arises in statistics. If Y_i are n +independent Gaussian random variates with unit variance then the +sum-of-squares, + + X_i = \sum_i Y_i^2 + +has a chi-squared distribution with n degrees of freedom. + + -- Function: double gsl_ran_chisq (const gsl_rng * r, double nu) + + This function returns a random variate from the chi-squared + distribution with ‘nu’ degrees of freedom. The distribution + function is, + + p(x) dx = {1 \over 2 \Gamma(\nu/2) } (x/2)^{\nu/2 - 1} \exp(-x/2) dx + + for x \ge 0. + + -- Function: double gsl_ran_chisq_pdf (double x, double nu) + + This function computes the probability density p(x) at ‘x’ for a + chi-squared distribution with ‘nu’ degrees of freedom, using the + formula given above. + +[image src="rand-chisq.png"] + + -- Function: double gsl_cdf_chisq_P (double x, double nu) + -- Function: double gsl_cdf_chisq_Q (double x, double nu) + -- Function: double gsl_cdf_chisq_Pinv (double P, double nu) + -- Function: double gsl_cdf_chisq_Qinv (double Q, double nu) + + These functions compute the cumulative distribution functions P(x), + Q(x) and their inverses for the chi-squared distribution with ‘nu’ + degrees of freedom. + + +File: gsl-ref.info, Node: The F-distribution, Next: The t-distribution, Prev: The Chi-squared Distribution, Up: Random Number Distributions + +20.19 The F-distribution +======================== + +The F-distribution arises in statistics. If Y_1 and Y_2 are chi-squared +deviates with \nu_1 and \nu_2 degrees of freedom then the ratio, + + X = { (Y_1 / \nu_1) \over (Y_2 / \nu_2) } + +has an F-distribution F(x;\nu_1,\nu_2). + + -- Function: double gsl_ran_fdist (const gsl_rng * r, double nu1, + double nu2) + + This function returns a random variate from the F-distribution with + degrees of freedom ‘nu1’ and ‘nu2’. The distribution function is, + + p(x) dx = + { \Gamma((\nu_1 + \nu_2)/2) + \over \Gamma(\nu_1/2) \Gamma(\nu_2/2) } + \nu_1^{\nu_1/2} \nu_2^{\nu_2/2} + x^{\nu_1/2 - 1} (\nu_2 + \nu_1 x)^{-\nu_1/2 -\nu_2/2} + + for x \ge 0. + + -- Function: double gsl_ran_fdist_pdf (double x, double nu1, + double nu2) + + This function computes the probability density p(x) at ‘x’ for an + F-distribution with ‘nu1’ and ‘nu2’ degrees of freedom, using the + formula given above. + +[image src="rand-fdist.png"] + + -- Function: double gsl_cdf_fdist_P (double x, double nu1, double nu2) + -- Function: double gsl_cdf_fdist_Q (double x, double nu1, double nu2) + -- Function: double gsl_cdf_fdist_Pinv (double P, double nu1, + double nu2) + -- Function: double gsl_cdf_fdist_Qinv (double Q, double nu1, + double nu2) + + These functions compute the cumulative distribution functions P(x), + Q(x) and their inverses for the F-distribution with ‘nu1’ and ‘nu2’ + degrees of freedom. + + +File: gsl-ref.info, Node: The t-distribution, Next: The Beta Distribution, Prev: The F-distribution, Up: Random Number Distributions + +20.20 The t-distribution +======================== + +The t-distribution arises in statistics. If Y_1 has a normal +distribution and Y_2 has a chi-squared distribution with \nu degrees of +freedom then the ratio, + + X = { Y_1 \over \sqrt{Y_2 / \nu} } + +has a t-distribution t(x;\nu) with \nu degrees of freedom. + + -- Function: double gsl_ran_tdist (const gsl_rng * r, double nu) + + This function returns a random variate from the t-distribution. + The distribution function is, + + p(x) dx = {\Gamma((\nu + 1)/2) \over \sqrt{\pi \nu} \Gamma(\nu/2)} (1 + x^2/\nu)^{-(\nu + 1)/2} dx + + for -\infty < x < +\infty. + + -- Function: double gsl_ran_tdist_pdf (double x, double nu) + + This function computes the probability density p(x) at ‘x’ for a + t-distribution with ‘nu’ degrees of freedom, using the formula + given above. + +[image src="rand-tdist.png"] + + -- Function: double gsl_cdf_tdist_P (double x, double nu) + -- Function: double gsl_cdf_tdist_Q (double x, double nu) + -- Function: double gsl_cdf_tdist_Pinv (double P, double nu) + -- Function: double gsl_cdf_tdist_Qinv (double Q, double nu) + + These functions compute the cumulative distribution functions P(x), + Q(x) and their inverses for the t-distribution with ‘nu’ degrees of + freedom. + + +File: gsl-ref.info, Node: The Beta Distribution, Next: The Logistic Distribution, Prev: The t-distribution, Up: Random Number Distributions + +20.21 The Beta Distribution +=========================== + + -- Function: double gsl_ran_beta (const gsl_rng * r, double a, + double b) + + This function returns a random variate from the beta distribution. + The distribution function is, + + p(x) dx = {\Gamma(a+b) \over \Gamma(a) \Gamma(b)} x^{a-1} (1-x)^{b-1} dx + + for 0 \le x \le 1. + + -- Function: double gsl_ran_beta_pdf (double x, double a, double b) + + This function computes the probability density p(x) at ‘x’ for a + beta distribution with parameters ‘a’ and ‘b’, using the formula + given above. + +[image src="rand-beta.png"] + + -- Function: double gsl_cdf_beta_P (double x, double a, double b) + -- Function: double gsl_cdf_beta_Q (double x, double a, double b) + -- Function: double gsl_cdf_beta_Pinv (double P, double a, double b) + -- Function: double gsl_cdf_beta_Qinv (double Q, double a, double b) + + These functions compute the cumulative distribution functions P(x), + Q(x) and their inverses for the beta distribution with parameters + ‘a’ and ‘b’. + + +File: gsl-ref.info, Node: The Logistic Distribution, Next: The Pareto Distribution, Prev: The Beta Distribution, Up: Random Number Distributions + +20.22 The Logistic Distribution +=============================== + + -- Function: double gsl_ran_logistic (const gsl_rng * r, double a) + + This function returns a random variate from the logistic + distribution. The distribution function is, + + p(x) dx = { \exp(-x/a) \over a (1 + \exp(-x/a))^2 } dx + + for -\infty < x < +\infty. + + -- Function: double gsl_ran_logistic_pdf (double x, double a) + + This function computes the probability density p(x) at ‘x’ for a + logistic distribution with scale parameter ‘a’, using the formula + given above. + +[image src="rand-logistic.png"] + + -- Function: double gsl_cdf_logistic_P (double x, double a) + -- Function: double gsl_cdf_logistic_Q (double x, double a) + -- Function: double gsl_cdf_logistic_Pinv (double P, double a) + -- Function: double gsl_cdf_logistic_Qinv (double Q, double a) + + These functions compute the cumulative distribution functions P(x), + Q(x) and their inverses for the logistic distribution with scale + parameter ‘a’. + + +File: gsl-ref.info, Node: The Pareto Distribution, Next: Spherical Vector Distributions, Prev: The Logistic Distribution, Up: Random Number Distributions + +20.23 The Pareto Distribution +============================= + + -- Function: double gsl_ran_pareto (const gsl_rng * r, double a, + double b) + + This function returns a random variate from the Pareto distribution + of order ‘a’. The distribution function is, + + p(x) dx = (a/b) / (x/b)^{a+1} dx + + for x \ge b. + + -- Function: double gsl_ran_pareto_pdf (double x, double a, double b) + + This function computes the probability density p(x) at ‘x’ for a + Pareto distribution with exponent ‘a’ and scale ‘b’, using the + formula given above. + +[image src="rand-pareto.png"] + + -- Function: double gsl_cdf_pareto_P (double x, double a, double b) + -- Function: double gsl_cdf_pareto_Q (double x, double a, double b) + -- Function: double gsl_cdf_pareto_Pinv (double P, double a, double b) + -- Function: double gsl_cdf_pareto_Qinv (double Q, double a, double b) + + These functions compute the cumulative distribution functions P(x), + Q(x) and their inverses for the Pareto distribution with exponent + ‘a’ and scale ‘b’. + + +File: gsl-ref.info, Node: Spherical Vector Distributions, Next: The Weibull Distribution, Prev: The Pareto Distribution, Up: Random Number Distributions + +20.24 Spherical Vector Distributions +==================================== + +The spherical distributions generate random vectors, located on a +spherical surface. They can be used as random directions, for example +in the steps of a random walk. + + -- Function: void gsl_ran_dir_2d (const gsl_rng * r, double * x, double + * y) + -- Function: void gsl_ran_dir_2d_trig_method (const gsl_rng * r, double + * x, double * y) + + This function returns a random direction vector v = (‘x’, ‘y’) in + two dimensions. The vector is normalized such that |v|^2 = x^2 + + y^2 = 1. The obvious way to do this is to take a uniform random + number between 0 and 2\pi and let ‘x’ and ‘y’ be the sine and + cosine respectively. Two trig functions would have been expensive + in the old days, but with modern hardware implementations, this is + sometimes the fastest way to go. This is the case for the Pentium + (but not the case for the Sun Sparcstation). One can avoid the + trig evaluations by choosing ‘x’ and ‘y’ in the interior of a unit + circle (choose them at random from the interior of the enclosing + square, and then reject those that are outside the unit circle), + and then dividing by \sqrt{x^2 + y^2}. A much cleverer approach, + attributed to von Neumann (See Knuth, v2, 3rd ed, p140, exercise + 23), requires neither trig nor a square root. In this approach, + ‘u’ and ‘v’ are chosen at random from the interior of a unit + circle, and then x=(u^2-v^2)/(u^2+v^2) and y=2uv/(u^2+v^2). + + -- Function: void gsl_ran_dir_3d (const gsl_rng * r, double * x, double + * y, double * z) + + This function returns a random direction vector v = (‘x’, ‘y’, ‘z’) + in three dimensions. The vector is normalized such that |v|^2 = + x^2 + y^2 + z^2 = 1. The method employed is due to Robert E. Knop + (CACM 13, 326 (1970)), and explained in Knuth, v2, 3rd ed, p136. + It uses the surprising fact that the distribution projected along + any axis is actually uniform (this is only true for 3 dimensions). + + -- Function: void gsl_ran_dir_nd (const gsl_rng * r, size_t n, double + * x) + + This function returns a random direction vector v = + (x_1,x_2,\ldots,x_n) in ‘n’ dimensions. The vector is normalized + such that |v|^2 = x_1^2 + x_2^2 + \cdots + x_n^2 = 1. The method + uses the fact that a multivariate Gaussian distribution is + spherically symmetric. Each component is generated to have a + Gaussian distribution, and then the components are normalized. The + method is described by Knuth, v2, 3rd ed, p135–136, and attributed + to G. W. Brown, Modern Mathematics for the Engineer (1956). + + +File: gsl-ref.info, Node: The Weibull Distribution, Next: The Type-1 Gumbel Distribution, Prev: Spherical Vector Distributions, Up: Random Number Distributions + +20.25 The Weibull Distribution +============================== + + -- Function: double gsl_ran_weibull (const gsl_rng * r, double a, + double b) + + This function returns a random variate from the Weibull + distribution. The distribution function is, + + p(x) dx = {b \over a^b} x^{b-1} \exp(-(x/a)^b) dx + + for x \ge 0. + + -- Function: double gsl_ran_weibull_pdf (double x, double a, double b) + + This function computes the probability density p(x) at ‘x’ for a + Weibull distribution with scale ‘a’ and exponent ‘b’, using the + formula given above. + +[image src="rand-weibull.png"] + + -- Function: double gsl_cdf_weibull_P (double x, double a, double b) + -- Function: double gsl_cdf_weibull_Q (double x, double a, double b) + -- Function: double gsl_cdf_weibull_Pinv (double P, double a, double b) + -- Function: double gsl_cdf_weibull_Qinv (double Q, double a, double b) + + These functions compute the cumulative distribution functions P(x), + Q(x) and their inverses for the Weibull distribution with scale ‘a’ + and exponent ‘b’. + + +File: gsl-ref.info, Node: The Type-1 Gumbel Distribution, Next: The Type-2 Gumbel Distribution, Prev: The Weibull Distribution, Up: Random Number Distributions + +20.26 The Type-1 Gumbel Distribution +==================================== + + -- Function: double gsl_ran_gumbel1 (const gsl_rng * r, double a, + double b) + + This function returns a random variate from the Type-1 Gumbel + distribution. The Type-1 Gumbel distribution function is, + + p(x) dx = a b \exp(-(b \exp(-ax) + ax)) dx + + for -\infty < x < \infty. + + -- Function: double gsl_ran_gumbel1_pdf (double x, double a, double b) + + This function computes the probability density p(x) at ‘x’ for a + Type-1 Gumbel distribution with parameters ‘a’ and ‘b’, using the + formula given above. + +[image src="rand-gumbel1.png"] + + -- Function: double gsl_cdf_gumbel1_P (double x, double a, double b) + -- Function: double gsl_cdf_gumbel1_Q (double x, double a, double b) + -- Function: double gsl_cdf_gumbel1_Pinv (double P, double a, double b) + -- Function: double gsl_cdf_gumbel1_Qinv (double Q, double a, double b) + + These functions compute the cumulative distribution functions P(x), + Q(x) and their inverses for the Type-1 Gumbel distribution with + parameters ‘a’ and ‘b’. + + +File: gsl-ref.info, Node: The Type-2 Gumbel Distribution, Next: The Dirichlet Distribution, Prev: The Type-1 Gumbel Distribution, Up: Random Number Distributions + +20.27 The Type-2 Gumbel Distribution +==================================== + + -- Function: double gsl_ran_gumbel2 (const gsl_rng * r, double a, + double b) + + This function returns a random variate from the Type-2 Gumbel + distribution. The Type-2 Gumbel distribution function is, + + p(x) dx = a b x^{-a-1} \exp(-b x^{-a}) dx + + for 0 < x < \infty. + + -- Function: double gsl_ran_gumbel2_pdf (double x, double a, double b) + + This function computes the probability density p(x) at ‘x’ for a + Type-2 Gumbel distribution with parameters ‘a’ and ‘b’, using the + formula given above. + +[image src="rand-gumbel2.png"] + + -- Function: double gsl_cdf_gumbel2_P (double x, double a, double b) + -- Function: double gsl_cdf_gumbel2_Q (double x, double a, double b) + -- Function: double gsl_cdf_gumbel2_Pinv (double P, double a, double b) + -- Function: double gsl_cdf_gumbel2_Qinv (double Q, double a, double b) + + These functions compute the cumulative distribution functions P(x), + Q(x) and their inverses for the Type-2 Gumbel distribution with + parameters ‘a’ and ‘b’. + + +File: gsl-ref.info, Node: The Dirichlet Distribution, Next: General Discrete Distributions, Prev: The Type-2 Gumbel Distribution, Up: Random Number Distributions + +20.28 The Dirichlet Distribution +================================ + + -- Function: void gsl_ran_dirichlet (const gsl_rng * r, size_t K, const + double alpha[], double theta[]) + + This function returns an array of ‘K’ random variates from a + Dirichlet distribution of order ‘K’-1. The distribution function + is + + p(\theta_1, ..., \theta_K) d\theta_1 ... d\theta_K = + (1/Z) \prod_{i=1}^K \theta_i^{\alpha_i - 1} \delta(1 -\sum_{i=1}^K \theta_i) d\theta_1 ... d\theta_K + + for \theta_i \ge 0 and \alpha_i > 0. The delta function ensures + that \sum \theta_i = 1. The normalization factor Z is + + Z = {\prod_{i=1}^K \Gamma(\alpha_i) \over \Gamma( \sum_{i=1}^K \alpha_i)} + + The random variates are generated by sampling ‘K’ values from gamma + distributions with parameters a=\alpha_i$, $b=1, and renormalizing. + See A.M. Law, W.D. Kelton, `Simulation Modeling and Analysis' + (1991). + + -- Function: double gsl_ran_dirichlet_pdf (size_t K, const + double alpha[], const double theta[]) + + This function computes the probability density p(\theta_1, \ldots , + \theta_K) at ‘theta[K]’ for a Dirichlet distribution with + parameters ‘alpha[K]’, using the formula given above. + + -- Function: double gsl_ran_dirichlet_lnpdf (size_t K, const + double alpha[], const double theta[]) + + This function computes the logarithm of the probability density + p(\theta_1, \ldots , \theta_K) for a Dirichlet distribution with + parameters ‘alpha[K]’. + + +File: gsl-ref.info, Node: General Discrete Distributions, Next: The Poisson Distribution, Prev: The Dirichlet Distribution, Up: Random Number Distributions + +20.29 General Discrete Distributions +==================================== + +Given K discrete events with different probabilities P[k], produce a +random value k consistent with its probability. + +The obvious way to do this is to preprocess the probability list by +generating a cumulative probability array with K + 1 elements: + + C[0] = 0 + C[k+1] = C[k] + P[k] + +Note that this construction produces C[K] = 1. Now choose a uniform +deviate u between 0 and 1, and find the value of k such that C[k] \le u +< C[k+1]. Although this in principle requires of order \log K steps per +random number generation, they are fast steps, and if you use something +like \lfloor uK \rfloor as a starting point, you can often do pretty +well. + +But faster methods have been devised. Again, the idea is to preprocess +the probability list, and save the result in some form of lookup table; +then the individual calls for a random discrete event can go rapidly. +An approach invented by G. Marsaglia (Generating discrete random +variables in a computer, Comm ACM 6, 37–38 (1963)) is very clever, and +readers interested in examples of good algorithm design are directed to +this short and well-written paper. Unfortunately, for large K, +Marsaglia’s lookup table can be quite large. + +A much better approach is due to Alastair J. Walker (An efficient method +for generating discrete random variables with general distributions, ACM +Trans on Mathematical Software 3, 253–256 (1977); see also Knuth, v2, +3rd ed, p120–121,139). This requires two lookup tables, one floating +point and one integer, but both only of size K. After preprocessing, the +random numbers are generated in O(1) time, even for large K. The +preprocessing suggested by Walker requires O(K^2) effort, but that is +not actually necessary, and the implementation provided here only takes +O(K) effort. In general, more preprocessing leads to faster generation +of the individual random numbers, but a diminishing return is reached +pretty early. Knuth points out that the optimal preprocessing is +combinatorially difficult for large K. + +This method can be used to speed up some of the discrete random number +generators below, such as the binomial distribution. To use it for +something like the Poisson Distribution, a modification would have to be +made, since it only takes a finite set of K outcomes. + + -- Type: gsl_ran_discrete_t + + This structure contains the lookup table for the discrete random + number generator. + + -- Function: gsl_ran_discrete_t * gsl_ran_discrete_preproc (size_t K, + const double * P) + + This function returns a pointer to a structure that contains the + lookup table for the discrete random number generator. The array + ‘P’ contains the probabilities of the discrete events; these array + elements must all be positive, but they needn’t add up to one (so + you can think of them more generally as “weights”)—the preprocessor + will normalize appropriately. This return value is used as an + argument for the *note gsl_ran_discrete(): 752. function below. + + -- Function: size_t gsl_ran_discrete (const gsl_rng * r, const + gsl_ran_discrete_t * g) + + After the preprocessor, above, has been called, you use this + function to get the discrete random numbers. + + -- Function: double gsl_ran_discrete_pdf (size_t k, const + gsl_ran_discrete_t * g) + + Returns the probability P[k] of observing the variable ‘k’. Since + P[k] is not stored as part of the lookup table, it must be + recomputed; this computation takes O(K), so if ‘K’ is large and you + care about the original array P[k] used to create the lookup table, + then you should just keep this original array P[k] around. + + -- Function: void gsl_ran_discrete_free (gsl_ran_discrete_t * g) + + De-allocates the lookup table pointed to by ‘g’. + + +File: gsl-ref.info, Node: The Poisson Distribution, Next: The Bernoulli Distribution, Prev: General Discrete Distributions, Up: Random Number Distributions + +20.30 The Poisson Distribution +============================== + + -- Function: unsigned int gsl_ran_poisson (const gsl_rng * r, + double mu) + + This function returns a random integer from the Poisson + distribution with mean ‘mu’. The probability distribution for + Poisson variates is, + + p(k) = {\mu^k \over k!} \exp(-\mu) + + for k \ge 0. + + -- Function: double gsl_ran_poisson_pdf (unsigned int k, double mu) + + This function computes the probability p(k) of obtaining ‘k’ from a + Poisson distribution with mean ‘mu’, using the formula given above. + +[image src="rand-poisson.png"] + + -- Function: double gsl_cdf_poisson_P (unsigned int k, double mu) + -- Function: double gsl_cdf_poisson_Q (unsigned int k, double mu) + + These functions compute the cumulative distribution functions P(k), + Q(k) for the Poisson distribution with parameter ‘mu’. + + +File: gsl-ref.info, Node: The Bernoulli Distribution, Next: The Binomial Distribution, Prev: The Poisson Distribution, Up: Random Number Distributions + +20.31 The Bernoulli Distribution +================================ + + -- Function: unsigned int gsl_ran_bernoulli (const gsl_rng * r, + double p) + + This function returns either 0 or 1, the result of a Bernoulli + trial with probability ‘p’. The probability distribution for a + Bernoulli trial is, + + p(0) = 1 - p + p(1) = p + + -- Function: double gsl_ran_bernoulli_pdf (unsigned int k, double p) + + This function computes the probability p(k) of obtaining ‘k’ from a + Bernoulli distribution with probability parameter ‘p’, using the + formula given above. + +[image src="rand-bernoulli.png"] + + +File: gsl-ref.info, Node: The Binomial Distribution, Next: The Multinomial Distribution, Prev: The Bernoulli Distribution, Up: Random Number Distributions + +20.32 The Binomial Distribution +=============================== + + -- Function: unsigned int gsl_ran_binomial (const gsl_rng * r, + double p, unsigned int n) + + This function returns a random integer from the binomial + distribution, the number of successes in ‘n’ independent trials + with probability ‘p’. The probability distribution for binomial + variates is, + + p(k) = {n! \over k! (n-k)!} p^k (1-p)^{n-k} + + for 0 \le k \le n. + + -- Function: double gsl_ran_binomial_pdf (unsigned int k, double p, + unsigned int n) + + This function computes the probability p(k) of obtaining ‘k’ from a + binomial distribution with parameters ‘p’ and ‘n’, using the + formula given above. + +[image src="rand-binomial.png"] + + -- Function: double gsl_cdf_binomial_P (unsigned int k, double p, + unsigned int n) + -- Function: double gsl_cdf_binomial_Q (unsigned int k, double p, + unsigned int n) + + These functions compute the cumulative distribution functions P(k), + Q(k) for the binomial distribution with parameters ‘p’ and ‘n’. + + +File: gsl-ref.info, Node: The Multinomial Distribution, Next: The Negative Binomial Distribution, Prev: The Binomial Distribution, Up: Random Number Distributions + +20.33 The Multinomial Distribution +================================== + + -- Function: void gsl_ran_multinomial (const gsl_rng * r, size_t K, + unsigned int N, const double p[], unsigned int n[]) + + This function computes a random sample ‘n’ from the multinomial + distribution formed by ‘N’ trials from an underlying distribution + ‘p[K]’. The distribution function for ‘n’ is, + + P(n_1, n_2, ..., n_K) = + (N!/(n_1! n_2! ... n_K!)) p_1^n_1 p_2^n_2 ... p_K^n_K + + where (n_1, n_2, \ldots, n_K) are nonnegative integers with + \sum_{k=1}^{K} n_k = N, and (p_1, p_2, \ldots, p_K) is a + probability distribution with \sum p_i = 1. If the array ‘p[K]’ is + not normalized then its entries will be treated as weights and + normalized appropriately. The arrays ‘n’ and ‘p’ must both be of + length ‘K’. + + Random variates are generated using the conditional binomial method + (see C.S. Davis, `The computer generation of multinomial random + variates', Comp. Stat. Data Anal. 16 (1993) 205–217 for + details). + + -- Function: double gsl_ran_multinomial_pdf (size_t K, const + double p[], const unsigned int n[]) + + This function computes the probability P(n_1, n_2, \ldots, n_K) of + sampling ‘n[K]’ from a multinomial distribution with parameters + ‘p[K]’, using the formula given above. + + -- Function: double gsl_ran_multinomial_lnpdf (size_t K, const + double p[], const unsigned int n[]) + + This function returns the logarithm of the probability for the + multinomial distribution P(n_1, n_2, \ldots, n_K) with parameters + ‘p[K]’. + + +File: gsl-ref.info, Node: The Negative Binomial Distribution, Next: The Pascal Distribution, Prev: The Multinomial Distribution, Up: Random Number Distributions + +20.34 The Negative Binomial Distribution +======================================== + + -- Function: unsigned int gsl_ran_negative_binomial (const gsl_rng * r, + double p, double n) + + This function returns a random integer from the negative binomial + distribution, the number of failures occurring before ‘n’ successes + in independent trials with probability ‘p’ of success. The + probability distribution for negative binomial variates is, + + p(k) = {\Gamma(n + k) \over \Gamma(k+1) \Gamma(n) } p^n (1-p)^k + + Note that n is not required to be an integer. + + -- Function: double gsl_ran_negative_binomial_pdf (unsigned int k, + double p, double n) + + This function computes the probability p(k) of obtaining ‘k’ from a + negative binomial distribution with parameters ‘p’ and ‘n’, using + the formula given above. + +[image src="rand-nbinomial.png"] + + -- Function: double gsl_cdf_negative_binomial_P (unsigned int k, + double p, double n) + -- Function: double gsl_cdf_negative_binomial_Q (unsigned int k, + double p, double n) + + These functions compute the cumulative distribution functions P(k), + Q(k) for the negative binomial distribution with parameters ‘p’ and + ‘n’. + + +File: gsl-ref.info, Node: The Pascal Distribution, Next: The Geometric Distribution, Prev: The Negative Binomial Distribution, Up: Random Number Distributions + +20.35 The Pascal Distribution +============================= + + -- Function: unsigned int gsl_ran_pascal (const gsl_rng * r, double p, + unsigned int n) + + This function returns a random integer from the Pascal + distribution. The Pascal distribution is simply a negative + binomial distribution with an integer value of n. + + p(k) = {(n + k - 1)! \over k! (n - 1)! } p^n (1-p)^k + + for k \ge 0. + + -- Function: double gsl_ran_pascal_pdf (unsigned int k, double p, + unsigned int n) + + This function computes the probability p(k) of obtaining ‘k’ from a + Pascal distribution with parameters ‘p’ and ‘n’, using the formula + given above. + +[image src="rand-pascal.png"] + + -- Function: double gsl_cdf_pascal_P (unsigned int k, double p, + unsigned int n) + -- Function: double gsl_cdf_pascal_Q (unsigned int k, double p, + unsigned int n) + + These functions compute the cumulative distribution functions P(k), + Q(k) for the Pascal distribution with parameters ‘p’ and ‘n’. + + +File: gsl-ref.info, Node: The Geometric Distribution, Next: The Hypergeometric Distribution, Prev: The Pascal Distribution, Up: Random Number Distributions + +20.36 The Geometric Distribution +================================ + + -- Function: unsigned int gsl_ran_geometric (const gsl_rng * r, + double p) + + This function returns a random integer from the geometric + distribution, the number of independent trials with probability ‘p’ + until the first success. The probability distribution for + geometric variates is, + + p(k) = p (1-p)^{k-1} + + for k \ge 1. Note that the distribution begins with k = 1 with + this definition. There is another convention in which the exponent + k - 1 is replaced by k. + + -- Function: double gsl_ran_geometric_pdf (unsigned int k, double p) + + This function computes the probability p(k) of obtaining ‘k’ from a + geometric distribution with probability parameter ‘p’, using the + formula given above. + +[image src="rand-geometric.png"] + + -- Function: double gsl_cdf_geometric_P (unsigned int k, double p) + -- Function: double gsl_cdf_geometric_Q (unsigned int k, double p) + + These functions compute the cumulative distribution functions P(k), + Q(k) for the geometric distribution with parameter ‘p’. + + +File: gsl-ref.info, Node: The Hypergeometric Distribution, Next: The Logarithmic Distribution, Prev: The Geometric Distribution, Up: Random Number Distributions + +20.37 The Hypergeometric Distribution +===================================== + + -- Function: unsigned int gsl_ran_hypergeometric (const gsl_rng * r, + unsigned int n1, unsigned int n2, unsigned int t) + + This function returns a random integer from the hypergeometric + distribution. The probability distribution for hypergeometric + random variates is, + + p(k) = C(n_1, k) C(n_2, t - k) / C(n_1 + n_2, t) + + where C(a,b) = a!/(b!(a-b)!) and t \leq n_1 + n_2. The domain of k + is \max(0, t - n_2), \ldots, \min(t, n_1) + + If a population contains n_1 elements of “type 1” and n_2 elements + of “type 2” then the hypergeometric distribution gives the + probability of obtaining k elements of “type 1” in t samples from + the population without replacement. + + -- Function: double gsl_ran_hypergeometric_pdf (unsigned int k, + unsigned int n1, unsigned int n2, unsigned int t) + + This function computes the probability p(k) of obtaining ‘k’ from a + hypergeometric distribution with parameters ‘n1’, ‘n2’, ‘t’, using + the formula given above. + +[image src="rand-hypergeometric.png"] + + -- Function: double gsl_cdf_hypergeometric_P (unsigned int k, unsigned + int n1, unsigned int n2, unsigned int t) + -- Function: double gsl_cdf_hypergeometric_Q (unsigned int k, unsigned + int n1, unsigned int n2, unsigned int t) + + These functions compute the cumulative distribution functions P(k), + Q(k) for the hypergeometric distribution with parameters ‘n1’, ‘n2’ + and ‘t’. + + +File: gsl-ref.info, Node: The Logarithmic Distribution, Next: The Wishart Distribution, Prev: The Hypergeometric Distribution, Up: Random Number Distributions + +20.38 The Logarithmic Distribution +================================== + + -- Function: unsigned int gsl_ran_logarithmic (const gsl_rng * r, + double p) + + This function returns a random integer from the logarithmic + distribution. The probability distribution for logarithmic random + variates is, + + p(k) = {-1 \over \log(1-p)} {(p^k \over k)} + + for k \ge 1. + + -- Function: double gsl_ran_logarithmic_pdf (unsigned int k, double p) + + This function computes the probability p(k) of obtaining ‘k’ from a + logarithmic distribution with probability parameter ‘p’, using the + formula given above. + +[image src="rand-logarithmic.png"] + + +File: gsl-ref.info, Node: The Wishart Distribution, Next: Shuffling and Sampling, Prev: The Logarithmic Distribution, Up: Random Number Distributions + +20.39 The Wishart Distribution +============================== + + -- Function: int gsl_ran_wishart (const gsl_rng * r, const double n, + const gsl_matrix * L, gsl_matrix * result, gsl_matrix * work) + + This function computes a random symmetric p-by-p matrix from the + Wishart distribution. The probability distribution for Wishart + random variates is, + + p(X) = \frac{|X|^{(n-p-1)/2} e^{-tr( V^{-1} X)/2}}{2^{(np)/2} |V|^{n/2} \Gamma_p(n/2)} + + Here, n > p - 1 is the number of degrees of freedom, V is a + symmetric positive definite p-by-p scale matrix, whose Cholesky + factor is specified by ‘L’, and ‘work’ is p-by-p workspace. The + p-by-p Wishart distributed matrix X is stored in ‘result’ on + output. + + -- Function: int gsl_ran_wishart_pdf (const gsl_matrix * X, const + gsl_matrix * L_X, const double n, const gsl_matrix * L, double + * result, gsl_matrix * work) + -- Function: int gsl_ran_wishart_log_pdf (const gsl_matrix * X, const + gsl_matrix * L_X, const double n, const gsl_matrix * L, double + * result, gsl_matrix * work) + + These functions compute p(X) or \log{p(X)} for the p-by-p matrix + ‘X’, whose Cholesky factor is specified in ‘L_X’. The degrees of + freedom is given by ‘n’, the Cholesky factor of the scale matrix V + is specified in ‘L’, and ‘work’ is p-by-p workspace. The probably + density value is returned in ‘result’. + + +File: gsl-ref.info, Node: Shuffling and Sampling, Next: Examples<14>, Prev: The Wishart Distribution, Up: Random Number Distributions + +20.40 Shuffling and Sampling +============================ + +The following functions allow the shuffling and sampling of a set of +objects. The algorithms rely on a random number generator as a source +of randomness and a poor quality generator can lead to correlations in +the output. In particular it is important to avoid generators with a +short period. For more information see Knuth, v2, 3rd ed, Section +3.4.2, “Random Sampling and Shuffling”. + + -- Function: void gsl_ran_shuffle (const gsl_rng * r, void * base, + size_t n, size_t size) + + This function randomly shuffles the order of ‘n’ objects, each of + size ‘size’, stored in the array ‘base[0..n-1]’. The output of the + random number generator ‘r’ is used to produce the permutation. + The algorithm generates all possible n! permutations with equal + probability, assuming a perfect source of random numbers. + + The following code shows how to shuffle the numbers from 0 to 51: + + int a[52]; + + for (i = 0; i < 52; i++) + { + a[i] = i; + } + + gsl_ran_shuffle (r, a, 52, sizeof (int)); + + -- Function: int gsl_ran_choose (const gsl_rng * r, void * dest, + size_t k, void * src, size_t n, size_t size) + + This function fills the array ‘dest[k]’ with ‘k’ objects taken + randomly from the ‘n’ elements of the array ‘src[0..n-1]’. The + objects are each of size ‘size’. The output of the random number + generator ‘r’ is used to make the selection. The algorithm ensures + all possible samples are equally likely, assuming a perfect source + of randomness. + + The objects are sampled `without' replacement, thus each object can + only appear once in ‘dest’. It is required that ‘k’ be less than + or equal to ‘n’. The objects in ‘dest’ will be in the same + relative order as those in ‘src’. You will need to call + ‘gsl_ran_shuffle(r, dest, n, size)’ if you want to randomize the + order. + + The following code shows how to select a random sample of three + unique numbers from the set 0 to 99: + + double a[3], b[100]; + + for (i = 0; i < 100; i++) + { + b[i] = (double) i; + } + + gsl_ran_choose (r, a, 3, b, 100, sizeof (double)); + + -- Function: void gsl_ran_sample (const gsl_rng * r, void * dest, + size_t k, void * src, size_t n, size_t size) + + This function is like *note gsl_ran_choose(): 783. but samples ‘k’ + items from the original array of ‘n’ items ‘src’ with replacement, + so the same object can appear more than once in the output sequence + ‘dest’. There is no requirement that ‘k’ be less than ‘n’ in this + case. + + +File: gsl-ref.info, Node: Examples<14>, Next: References and Further Reading<14>, Prev: Shuffling and Sampling, Up: Random Number Distributions + +20.41 Examples +============== + +The following program demonstrates the use of a random number generator +to produce variates from a distribution. It prints 10 samples from the +Poisson distribution with a mean of 3. + + #include + #include + #include + + int + main (void) + { + const gsl_rng_type * T; + gsl_rng * r; + + int i, n = 10; + double mu = 3.0; + + /* create a generator chosen by the + environment variable GSL_RNG_TYPE */ + + gsl_rng_env_setup(); + + T = gsl_rng_default; + r = gsl_rng_alloc (T); + + /* print n random variates chosen from + the poisson distribution with mean + parameter mu */ + + for (i = 0; i < n; i++) + { + unsigned int k = gsl_ran_poisson (r, mu); + printf (" %u", k); + } + + printf ("\n"); + gsl_rng_free (r); + return 0; + } + +If the library and header files are installed under ‘/usr/local’ (the +default location) then the program can be compiled with these options: + + $ gcc -Wall demo.c -lgsl -lgslcblas -lm + +Here is the output of the program, + + 2 5 5 2 1 0 3 4 1 1 + +The variates depend on the seed used by the generator. The seed for the +default generator type *note gsl_rng_default: 65a. can be changed with +the *note GSL_RNG_SEED: 643. environment variable to produce a different +stream of variates: + + $ GSL_RNG_SEED=123 ./a.out + +giving output + + 4 5 6 3 3 1 4 2 5 5 + +The following program generates a random walk in two dimensions. + + #include + #include + #include + + int + main (void) + { + int i; + double x = 0, y = 0, dx, dy; + + const gsl_rng_type * T; + gsl_rng * r; + + gsl_rng_env_setup(); + T = gsl_rng_default; + r = gsl_rng_alloc (T); + + printf ("%g %g\n", x, y); + + for (i = 0; i < 10; i++) + { + gsl_ran_dir_2d (r, &dx, &dy); + x += dx; y += dy; + printf ("%g %g\n", x, y); + } + + gsl_rng_free (r); + return 0; + } + +Fig. %s shows the output from the program. + +[image src="random-walk.png"] + +Figure: Four 10-step random walks from the origin. + +The following program computes the upper and lower cumulative +distribution functions for the standard normal distribution at x = 2. + + #include + #include + + int + main (void) + { + double P, Q; + double x = 2.0; + + P = gsl_cdf_ugaussian_P (x); + printf ("prob(x < %f) = %f\n", x, P); + + Q = gsl_cdf_ugaussian_Q (x); + printf ("prob(x > %f) = %f\n", x, Q); + + x = gsl_cdf_ugaussian_Pinv (P); + printf ("Pinv(%f) = %f\n", P, x); + + x = gsl_cdf_ugaussian_Qinv (Q); + printf ("Qinv(%f) = %f\n", Q, x); + + return 0; + } + +Here is the output of the program, + + prob(x < 2.000000) = 0.977250 + prob(x > 2.000000) = 0.022750 + Pinv(0.977250) = 2.000000 + Qinv(0.022750) = 2.000000 + + +File: gsl-ref.info, Node: References and Further Reading<14>, Prev: Examples<14>, Up: Random Number Distributions + +20.42 References and Further Reading +==================================== + +For an encyclopaedic coverage of the subject readers are advised to +consult the book “Non-Uniform Random Variate Generation” by Luc Devroye. +It covers every imaginable distribution and provides hundreds of +algorithms. + + * Luc Devroye, “Non-Uniform Random Variate Generation”, + Springer-Verlag, ISBN 0-387-96305-7. Available online at + ‘http://cg.scs.carleton.ca/~luc/rnbookindex.html’. + +The subject of random variate generation is also reviewed by Knuth, who +describes algorithms for all the major distributions. + + * Donald E. Knuth, “The Art of Computer Programming: Seminumerical + Algorithms” (Vol 2, 3rd Ed, 1997), Addison-Wesley, ISBN 0201896842. + +The Particle Data Group provides a short review of techniques for +generating distributions of random numbers in the “Monte Carlo” section +of its Annual Review of Particle Physics. + + * Review of Particle Properties, R.M. Barnett et al., Physical Review + D54, 1 (1996) ‘http://pdg.lbl.gov/’. + +The Review of Particle Physics is available online in postscript and pdf +format. + +An overview of methods used to compute cumulative distribution functions +can be found in `Statistical Computing' by W.J. Kennedy and J.E. Gentle. +Another general reference is `Elements of Statistical Computing' by R.A. +Thisted. + + * William E. Kennedy and James E. Gentle, Statistical Computing + (1980), Marcel Dekker, ISBN 0-8247-6898-1. + + * Ronald A. Thisted, Elements of Statistical Computing (1988), + Chapman & Hall, ISBN 0-412-01371-1. + +The cumulative distribution functions for the Gaussian distribution are +based on the following papers, + + * Rational Chebyshev Approximations Using Linear Equations, W.J. + Cody, W. Fraser, J.F. Hart. Numerische Mathematik 12, 242–251 + (1968). + + * Rational Chebyshev Approximations for the Error Function, W.J. + Cody. Mathematics of Computation 23, n107, 631–637 (July 1969). + + +File: gsl-ref.info, Node: Statistics, Next: Running Statistics, Prev: Random Number Distributions, Up: Top + +21 Statistics +************* + +This chapter describes the statistical functions in the library. The +basic statistical functions include routines to compute the mean, +variance and standard deviation. More advanced functions allow you to +calculate absolute deviations, skewness, and kurtosis as well as the +median and arbitrary percentiles. The algorithms use recurrence +relations to compute average quantities in a stable way, without large +intermediate values that might overflow. + +The functions are available in versions for datasets in the standard +floating-point and integer types. The versions for double precision +floating-point data have the prefix ‘gsl_stats’ and are declared in the +header file ‘gsl_statistics_double.h’. The versions for integer data +have the prefix ‘gsl_stats_int’ and are declared in the header file +‘gsl_statistics_int.h’. All the functions operate on C arrays with a +‘stride’ parameter specifying the spacing between elements. + +* Menu: + +* Mean, Standard Deviation and Variance: Mean Standard Deviation and Variance. +* Absolute deviation:: +* Higher moments (skewness and kurtosis): Higher moments skewness and kurtosis. +* Autocorrelation:: +* Covariance:: +* Correlation:: +* Weighted Samples:: +* Maximum and Minimum values:: +* Median and Percentiles:: +* Order Statistics:: +* Robust Location Estimates:: +* Robust Scale Estimates:: +* Examples: Examples<15>. +* References and Further Reading: References and Further Reading<15>. + + +File: gsl-ref.info, Node: Mean Standard Deviation and Variance, Next: Absolute deviation, Up: Statistics + +21.1 Mean, Standard Deviation and Variance +========================================== + + -- Function: double gsl_stats_mean (const double data[], size_t stride, + size_t n) + + This function returns the arithmetic mean of ‘data’, a dataset of + length ‘n’ with stride ‘stride’. The arithmetic mean, or `sample + mean', is denoted by \Hat\mu and defined as, + + \Hat\mu = {1 \over N} \sum x_i + + where x_i are the elements of the dataset ‘data’. For samples + drawn from a gaussian distribution the variance of \Hat\mu is + \sigma^2 / N. + + -- Function: double gsl_stats_variance (const double data[], + size_t stride, size_t n) + + This function returns the estimated, or `sample', variance of + ‘data’, a dataset of length ‘n’ with stride ‘stride’. The + estimated variance is denoted by \Hat\sigma^2 and is defined by, + + \Hat\sigma^2 = (1/(N-1)) \sum (x_i - \Hat\mu)^2 + + where x_i are the elements of the dataset ‘data’. Note that the + normalization factor of 1/(N-1) results from the derivation of + \Hat\sigma^2 as an unbiased estimator of the population variance + \sigma^2. For samples drawn from a Gaussian distribution the + variance of \Hat\sigma^2 itself is 2 \sigma^4 / N. + + This function computes the mean via a call to *note + gsl_stats_mean(): 1d. If you have already computed the mean then + you can pass it directly to *note gsl_stats_variance_m(): 78c. + + -- Function: double gsl_stats_variance_m (const double data[], + size_t stride, size_t n, double mean) + + This function returns the sample variance of ‘data’ relative to the + given value of ‘mean’. The function is computed with \Hat\mu + replaced by the value of ‘mean’ that you supply, + + \Hat\sigma^2 = (1/(N-1)) \sum (x_i - mean)^2 + + -- Function: double gsl_stats_sd (const double data[], size_t stride, + size_t n) + -- Function: double gsl_stats_sd_m (const double data[], size_t stride, + size_t n, double mean) + + The standard deviation is defined as the square root of the + variance. These functions return the square root of the + corresponding variance functions above. + + -- Function: double gsl_stats_tss (const double data[], size_t stride, + size_t n) + -- Function: double gsl_stats_tss_m (const double data[], + size_t stride, size_t n, double mean) + + These functions return the total sum of squares (TSS) of ‘data’ + about the mean. For *note gsl_stats_tss_m(): 790. the + user-supplied value of ‘mean’ is used, and for *note + gsl_stats_tss(): 78f. it is computed using *note gsl_stats_mean(): + 1d. + + TSS = \sum (x_i - mean)^2 + + -- Function: double gsl_stats_variance_with_fixed_mean (const + double data[], size_t stride, size_t n, double mean) + + This function computes an unbiased estimate of the variance of + ‘data’ when the population mean ‘mean’ of the underlying + distribution is known `a priori'. In this case the estimator for + the variance uses the factor 1/N and the sample mean \Hat\mu is + replaced by the known population mean \mu, + + \Hat\sigma^2 = (1/N) \sum (x_i - \mu)^2 + + -- Function: double gsl_stats_sd_with_fixed_mean (const double data[], + size_t stride, size_t n, double mean) + + This function calculates the standard deviation of ‘data’ for a + fixed population mean ‘mean’. The result is the square root of the + corresponding variance function. + + +File: gsl-ref.info, Node: Absolute deviation, Next: Higher moments skewness and kurtosis, Prev: Mean Standard Deviation and Variance, Up: Statistics + +21.2 Absolute deviation +======================= + + -- Function: double gsl_stats_absdev (const double data[], + size_t stride, size_t n) + + This function computes the absolute deviation from the mean of + ‘data’, a dataset of length ‘n’ with stride ‘stride’. The absolute + deviation from the mean is defined as, + + absdev = (1/N) \sum |x_i - \Hat\mu| + + where x_i are the elements of the dataset ‘data’. The absolute + deviation from the mean provides a more robust measure of the width + of a distribution than the variance. This function computes the + mean of ‘data’ via a call to *note gsl_stats_mean(): 1d. + + -- Function: double gsl_stats_absdev_m (const double data[], + size_t stride, size_t n, double mean) + + This function computes the absolute deviation of the dataset ‘data’ + relative to the given value of ‘mean’, + + absdev = (1/N) \sum |x_i - mean| + + This function is useful if you have already computed the mean of + ‘data’ (and want to avoid recomputing it), or wish to calculate the + absolute deviation relative to another value (such as zero, or the + median). + + +File: gsl-ref.info, Node: Higher moments skewness and kurtosis, Next: Autocorrelation, Prev: Absolute deviation, Up: Statistics + +21.3 Higher moments (skewness and kurtosis) +=========================================== + + -- Function: double gsl_stats_skew (const double data[], size_t stride, + size_t n) + + This function computes the skewness of ‘data’, a dataset of length + ‘n’ with stride ‘stride’. The skewness is defined as, + + skew = (1/N) \sum ((x_i - \Hat\mu)/\Hat\sigma)^3 + + where x_i are the elements of the dataset ‘data’. The skewness + measures the asymmetry of the tails of a distribution. + + The function computes the mean and estimated standard deviation of + ‘data’ via calls to *note gsl_stats_mean(): 1d. and *note + gsl_stats_sd(): 78d. + + -- Function: double gsl_stats_skew_m_sd (const double data[], + size_t stride, size_t n, double mean, double sd) + + This function computes the skewness of the dataset ‘data’ using the + given values of the mean ‘mean’ and standard deviation ‘sd’, + + skew = (1/N) \sum ((x_i - mean)/sd)^3 + + These functions are useful if you have already computed the mean + and standard deviation of ‘data’ and want to avoid recomputing + them. + + -- Function: double gsl_stats_kurtosis (const double data[], + size_t stride, size_t n) + + This function computes the kurtosis of ‘data’, a dataset of length + ‘n’ with stride ‘stride’. The kurtosis is defined as, + + kurtosis = ((1/N) \sum ((x_i - \Hat\mu)/\Hat\sigma)^4) - 3 + + The kurtosis measures how sharply peaked a distribution is, + relative to its width. The kurtosis is normalized to zero for a + Gaussian distribution. + + -- Function: double gsl_stats_kurtosis_m_sd (const double data[], + size_t stride, size_t n, double mean, double sd) + + This function computes the kurtosis of the dataset ‘data’ using the + given values of the mean ‘mean’ and standard deviation ‘sd’, + + kurtosis = ((1/N) \sum ((x_i - mean)/sd)^4) - 3 + + This function is useful if you have already computed the mean and + standard deviation of ‘data’ and want to avoid recomputing them. + + +File: gsl-ref.info, Node: Autocorrelation, Next: Covariance, Prev: Higher moments skewness and kurtosis, Up: Statistics + +21.4 Autocorrelation +==================== + + -- Function: double gsl_stats_lag1_autocorrelation (const + double data[], const size_t stride, const size_t n) + + This function computes the lag-1 autocorrelation of the dataset + ‘data’. + + a_1 = {\sum_{i = 2}^{n} (x_{i} - \Hat\mu) (x_{i-1} - \Hat\mu) + \over + \sum_{i = 1}^{n} (x_{i} - \Hat\mu) (x_{i} - \Hat\mu)} + + -- Function: double gsl_stats_lag1_autocorrelation_m (const + double data[], const size_t stride, const size_t n, const + double mean) + + This function computes the lag-1 autocorrelation of the dataset + ‘data’ using the given value of the mean ‘mean’. + + +File: gsl-ref.info, Node: Covariance, Next: Correlation, Prev: Autocorrelation, Up: Statistics + +21.5 Covariance +=============== + + -- Function: double gsl_stats_covariance (const double data1[], const + size_t stride1, const double data2[], const size_t stride2, + const size_t n) + + This function computes the covariance of the datasets ‘data1’ and + ‘data2’ which must both be of the same length ‘n’. + + covar = (1/(n - 1)) \sum_{i = 1}^{n} (x_i - \Hat x) (y_i - \Hat y) + + -- Function: double gsl_stats_covariance_m (const double data1[], const + size_t stride1, const double data2[], const size_t stride2, + const size_t n, const double mean1, const double mean2) + + This function computes the covariance of the datasets ‘data1’ and + ‘data2’ using the given values of the means, ‘mean1’ and ‘mean2’. + This is useful if you have already computed the means of ‘data1’ + and ‘data2’ and want to avoid recomputing them. + + +File: gsl-ref.info, Node: Correlation, Next: Weighted Samples, Prev: Covariance, Up: Statistics + +21.6 Correlation +================ + + -- Function: double gsl_stats_correlation (const double data1[], const + size_t stride1, const double data2[], const size_t stride2, + const size_t n) + + This function efficiently computes the Pearson correlation + coefficient between the datasets ‘data1’ and ‘data2’ which must + both be of the same length ‘n’. + + r = cov(x, y) / (\Hat\sigma_x \Hat\sigma_y) + = {1/(n-1) \sum (x_i - \Hat x) (y_i - \Hat y) + \over + \sqrt{1/(n-1) \sum (x_i - \Hat x)^2} \sqrt{1/(n-1) \sum (y_i - \Hat y)^2} + } + + -- Function: double gsl_stats_spearman (const double data1[], const + size_t stride1, const double data2[], const size_t stride2, + const size_t n, double work[]) + + This function computes the Spearman rank correlation coefficient + between the datasets ‘data1’ and ‘data2’ which must both be of the + same length ‘n’. Additional workspace of size 2 * ‘n’ is required + in ‘work’. The Spearman rank correlation between vectors x and y + is equivalent to the Pearson correlation between the ranked vectors + x_R and y_R, where ranks are defined to be the average of the + positions of an element in the ascending order of the values. + + +File: gsl-ref.info, Node: Weighted Samples, Next: Maximum and Minimum values, Prev: Correlation, Up: Statistics + +21.7 Weighted Samples +===================== + +The functions described in this section allow the computation of +statistics for weighted samples. The functions accept an array of +samples, x_i, with associated weights, w_i. Each sample x_i is +considered as having been drawn from a Gaussian distribution with +variance \sigma_i^2. The sample weight w_i is defined as the reciprocal +of this variance, w_i = 1/\sigma_i^2. Setting a weight to zero +corresponds to removing a sample from a dataset. + + -- Function: double gsl_stats_wmean (const double w[], size_t wstride, + const double data[], size_t stride, size_t n) + + This function returns the weighted mean of the dataset ‘data’ with + stride ‘stride’ and length ‘n’, using the set of weights ‘w’ with + stride ‘wstride’ and length ‘n’. The weighted mean is defined as, + + \Hat\mu = (\sum w_i x_i) / (\sum w_i) + + -- Function: double gsl_stats_wvariance (const double w[], + size_t wstride, const double data[], size_t stride, size_t n) + + This function returns the estimated variance of the dataset ‘data’ + with stride ‘stride’ and length ‘n’, using the set of weights ‘w’ + with stride ‘wstride’ and length ‘n’. The estimated variance of a + weighted dataset is calculated as, + + \Hat\sigma^2 = ((\sum w_i)/((\sum w_i)^2 - \sum (w_i^2))) + \sum w_i (x_i - \Hat\mu)^2 + + Note that this expression reduces to an unweighted variance with + the familiar 1/(N-1) factor when there are N equal non-zero + weights. + + -- Function: double gsl_stats_wvariance_m (const double w[], + size_t wstride, const double data[], size_t stride, size_t n, + double wmean) + + This function returns the estimated variance of the weighted + dataset ‘data’ using the given weighted mean ‘wmean’. + + -- Function: double gsl_stats_wsd (const double w[], size_t wstride, + const double data[], size_t stride, size_t n) + + The standard deviation is defined as the square root of the + variance. This function returns the square root of the + corresponding variance function *note gsl_stats_wvariance(): 7a6. + above. + + -- Function: double gsl_stats_wsd_m (const double w[], size_t wstride, + const double data[], size_t stride, size_t n, double wmean) + + This function returns the square root of the corresponding variance + function *note gsl_stats_wvariance_m(): 7a7. above. + + -- Function: double gsl_stats_wvariance_with_fixed_mean (const + double w[], size_t wstride, const double data[], + size_t stride, size_t n, const double mean) + + This function computes an unbiased estimate of the variance of the + weighted dataset ‘data’ when the population mean ‘mean’ of the + underlying distribution is known `a priori'. In this case the + estimator for the variance replaces the sample mean \Hat\mu by the + known population mean \mu, + + \Hat\sigma^2 = (\sum w_i (x_i - \mu)^2) / (\sum w_i) + + -- Function: double gsl_stats_wsd_with_fixed_mean (const double w[], + size_t wstride, const double data[], size_t stride, size_t n, + const double mean) + + The standard deviation is defined as the square root of the + variance. This function returns the square root of the + corresponding variance function above. + + -- Function: double gsl_stats_wtss (const double w[], const + size_t wstride, const double data[], size_t stride, size_t n) + -- Function: double gsl_stats_wtss_m (const double w[], const + size_t wstride, const double data[], size_t stride, size_t n, + double wmean) + + These functions return the weighted total sum of squares (TSS) of + ‘data’ about the weighted mean. For *note gsl_stats_wtss_m(): 7ad. + the user-supplied value of ‘wmean’ is used, and for *note + gsl_stats_wtss(): 7ac. it is computed using *note + gsl_stats_wmean(): 7a5. + + TSS = \sum w_i (x_i - wmean)^2 + + -- Function: double gsl_stats_wabsdev (const double w[], + size_t wstride, const double data[], size_t stride, size_t n) + + This function computes the weighted absolute deviation from the + weighted mean of ‘data’. The absolute deviation from the mean is + defined as, + + absdev = (\sum w_i |x_i - \Hat\mu|) / (\sum w_i) + + -- Function: double gsl_stats_wabsdev_m (const double w[], + size_t wstride, const double data[], size_t stride, size_t n, + double wmean) + + This function computes the absolute deviation of the weighted + dataset ‘data’ about the given weighted mean ‘wmean’. + + -- Function: double gsl_stats_wskew (const double w[], size_t wstride, + const double data[], size_t stride, size_t n) + + This function computes the weighted skewness of the dataset ‘data’. + + skew = (\sum w_i ((x_i - \Hat x)/\Hat \sigma)^3) / (\sum w_i) + + -- Function: double gsl_stats_wskew_m_sd (const double w[], + size_t wstride, const double data[], size_t stride, size_t n, + double wmean, double wsd) + + This function computes the weighted skewness of the dataset ‘data’ + using the given values of the weighted mean and weighted standard + deviation, ‘wmean’ and ‘wsd’. + + -- Function: double gsl_stats_wkurtosis (const double w[], + size_t wstride, const double data[], size_t stride, size_t n) + + This function computes the weighted kurtosis of the dataset ‘data’. + + kurtosis = ((\sum w_i ((x_i - \Hat x)/\Hat \sigma)^4) / (\sum w_i)) - 3 + + -- Function: double gsl_stats_wkurtosis_m_sd (const double w[], + size_t wstride, const double data[], size_t stride, size_t n, + double wmean, double wsd) + + This function computes the weighted kurtosis of the dataset ‘data’ + using the given values of the weighted mean and weighted standard + deviation, ‘wmean’ and ‘wsd’. + + +File: gsl-ref.info, Node: Maximum and Minimum values, Next: Median and Percentiles, Prev: Weighted Samples, Up: Statistics + +21.8 Maximum and Minimum values +=============================== + +The following functions find the maximum and minimum values of a dataset +(or their indices). If the data contains ‘NaN’-s then a ‘NaN’ will be +returned, since the maximum or minimum value is undefined. For +functions which return an index, the location of the first ‘NaN’ in the +array is returned. + + -- Function: double gsl_stats_max (const double data[], size_t stride, + size_t n) + + This function returns the maximum value in ‘data’, a dataset of + length ‘n’ with stride ‘stride’. The maximum value is defined as + the value of the element x_i which satisfies x_i \ge x_j for all j. + + If you want instead to find the element with the largest absolute + magnitude you will need to apply ‘fabs()’ or ‘abs()’ to your data + before calling this function. + + -- Function: double gsl_stats_min (const double data[], size_t stride, + size_t n) + + This function returns the minimum value in ‘data’, a dataset of + length ‘n’ with stride ‘stride’. The minimum value is defined as + the value of the element x_i which satisfies x_i \le x_j for all j. + + If you want instead to find the element with the smallest absolute + magnitude you will need to apply ‘fabs()’ or ‘abs()’ to your data + before calling this function. + + -- Function: void gsl_stats_minmax (double * min, double * max, const + double data[], size_t stride, size_t n) + + This function finds both the minimum and maximum values ‘min’, + ‘max’ in ‘data’ in a single pass. + + -- Function: size_t gsl_stats_max_index (const double data[], + size_t stride, size_t n) + + This function returns the index of the maximum value in ‘data’, a + dataset of length ‘n’ with stride ‘stride’. The maximum value is + defined as the value of the element x_i which satisfies x_i \ge x_j + for all j. When there are several equal maximum elements then the + first one is chosen. + + -- Function: size_t gsl_stats_min_index (const double data[], + size_t stride, size_t n) + + This function returns the index of the minimum value in ‘data’, a + dataset of length ‘n’ with stride ‘stride’. The minimum value is + defined as the value of the element x_i which satisfies x_i \ge x_j + for all j. When there are several equal minimum elements then the + first one is chosen. + + -- Function: void gsl_stats_minmax_index (size_t * min_index, size_t + * max_index, const double data[], size_t stride, size_t n) + + This function returns the indexes ‘min_index’, ‘max_index’ of the + minimum and maximum values in ‘data’ in a single pass. + + +File: gsl-ref.info, Node: Median and Percentiles, Next: Order Statistics, Prev: Maximum and Minimum values, Up: Statistics + +21.9 Median and Percentiles +=========================== + +The median and percentile functions described in this section operate on +sorted data in O(1) time. There is also a routine for computing the +median of an unsorted input array in average O(n) time using the +quickselect algorithm. For convenience we use `quantiles', measured on +a scale of 0 to 1, instead of percentiles (which use a scale of 0 to +100). + + -- Function: double gsl_stats_median_from_sorted_data (const + double sorted_data[], const size_t stride, const size_t n) + + This function returns the median value of ‘sorted_data’, a dataset + of length ‘n’ with stride ‘stride’. The elements of the array must + be in ascending numerical order. There are no checks to see + whether the data are sorted, so the function *note gsl_sort(): 45a. + should always be used first. + + When the dataset has an odd number of elements the median is the + value of element (n-1)/2. When the dataset has an even number of + elements the median is the mean of the two nearest middle values, + elements (n-1)/2 and n/2. Since the algorithm for computing the + median involves interpolation this function always returns a + floating-point number, even for integer data types. + + -- Function: double gsl_stats_median (double data[], const + size_t stride, const size_t n) + + This function returns the median value of ‘data’, a dataset of + length ‘n’ with stride ‘stride’. The median is found using the + quickselect algorithm. The input array does not need to be sorted, + but note that the algorithm rearranges the array and so the input + is not preserved on output. + + -- Function: double gsl_stats_quantile_from_sorted_data (const + double sorted_data[], size_t stride, size_t n, double f) + + This function returns a quantile value of ‘sorted_data’, a + double-precision array of length ‘n’ with stride ‘stride’. The + elements of the array must be in ascending numerical order. The + quantile is determined by the ‘f’, a fraction between 0 and 1. For + example, to compute the value of the 75th percentile ‘f’ should + have the value 0.75. + + There are no checks to see whether the data are sorted, so the + function *note gsl_sort(): 45a. should always be used first. + + The quantile is found by interpolation, using the formula + + quantile = (1 - \delta) x_i + \delta x_{i+1} + + where i is ‘floor((n - 1)f)’ and \delta is (n-1)f - i. + + Thus the minimum value of the array (‘data[0*stride]’) is given by + ‘f’ equal to zero, the maximum value (‘data[(n-1)*stride]’) is + given by ‘f’ equal to one and the median value is given by ‘f’ + equal to 0.5. Since the algorithm for computing quantiles involves + interpolation this function always returns a floating-point number, + even for integer data types. + + +File: gsl-ref.info, Node: Order Statistics, Next: Robust Location Estimates, Prev: Median and Percentiles, Up: Statistics + +21.10 Order Statistics +====================== + +The k-th `order statistic' of a sample is equal to its k-th smallest +value. The k-th order statistic of a set of n values x = \left\{ x_i +\right\}, 1 \le i \le n is denoted x_{(k)}. The median of the set x is +equal to x_{\left( \frac{n}{2} \right)} if n is odd, or the average of +x_{\left( \frac{n}{2} \right)} and x_{\left( \frac{n}{2} + 1 \right)} if +n is even. The k-th smallest element of a length n vector can be found +in average O(n) time using the quickselect algorithm. + + -- Function: gsl_stats_select (double data[], const size_t stride, + const size_t n, const size_t k) + + This function finds the ‘k’-th smallest element of the input array + ‘data’ of length ‘n’ and stride ‘stride’ using the quickselect + method. The algorithm rearranges the elements of ‘data’ and so the + input array is not preserved on output. + + +File: gsl-ref.info, Node: Robust Location Estimates, Next: Robust Scale Estimates, Prev: Order Statistics, Up: Statistics + +21.11 Robust Location Estimates +=============================== + +A `location estimate' refers to a typical or central value which best +describes a given dataset. The mean and median are both examples of +location estimators. However, the mean has a severe sensitivity to data +outliers and can give erroneous values when even a small number of +outliers are present. The median on the other hand, has a strong +insensitivity to data outliers, but due to its non-smoothness it can +behave unexpectedly in certain situations. GSL offers the following +alternative location estimators, which are robust to the presence of +outliers. + +* Menu: + +* Trimmed Mean:: +* Gastwirth Estimator:: + + +File: gsl-ref.info, Node: Trimmed Mean, Next: Gastwirth Estimator, Up: Robust Location Estimates + +21.11.1 Trimmed Mean +-------------------- + +The trimmed mean, or `truncated mean', discards a certain number of +smallest and largest samples from the input vector before computing the +mean of the remaining samples. The amount of trimming is specified by a +factor \alpha \in [0,0.5]. Then the number of samples discarded from +both ends of the input vector is \left\lfloor \alpha n \right\rfloor, +where n is the length of the input. So to discard 25% of the samples +from each end, one would set \alpha = 0.25. + + -- Function: double gsl_stats_trmean_from_sorted_data (const + double alpha, const double sorted_data[], const size_t stride, + const size_t n) + + This function returns the trimmed mean of ‘sorted_data’, a dataset + of length ‘n’ with stride ‘stride’. The elements of the array must + be in ascending numerical order. There are no checks to see + whether the data are sorted, so the function *note gsl_sort(): 45a. + should always be used first. The trimming factor \alpha is given + in *note alpha: 497. If \alpha \ge 0.5, then the median of the + input is returned. + + +File: gsl-ref.info, Node: Gastwirth Estimator, Prev: Trimmed Mean, Up: Robust Location Estimates + +21.11.2 Gastwirth Estimator +--------------------------- + +Gastwirth’s location estimator is a weighted sum of three order +statistics, + + gastwirth = 0.3 * Q_{1/3} + 0.4 * Q_{1/2} + 0.3 * Q_{2/3} + +where Q_{\frac{1}{3}} is the one-third quantile, Q_{\frac{1}{2}} is the +one-half quantile (i.e. median), and Q_{\frac{2}{3}} is the two-thirds +quantile. + + -- Function: double gsl_stats_gastwirth_from_sorted_data (const + double sorted_data[], const size_t stride, const size_t n) + + This function returns the Gastwirth location estimator of + ‘sorted_data’, a dataset of length ‘n’ with stride ‘stride’. The + elements of the array must be in ascending numerical order. There + are no checks to see whether the data are sorted, so the function + *note gsl_sort(): 45a. should always be used first. + + +File: gsl-ref.info, Node: Robust Scale Estimates, Next: Examples<15>, Prev: Robust Location Estimates, Up: Statistics + +21.12 Robust Scale Estimates +============================ + +A `robust scale estimate', also known as a robust measure of scale, +attempts to quantify the statistical dispersion (variability, scatter, +spread) in a set of data which may contain outliers. In such datasets, +the usual variance or standard deviation scale estimate can be rendered +useless by even a single outlier. + +* Menu: + +* Median Absolute Deviation (MAD): Median Absolute Deviation MAD. +* Statistic:: +* Statistic: Statistic<2>. + + +File: gsl-ref.info, Node: Median Absolute Deviation MAD, Next: Statistic, Up: Robust Scale Estimates + +21.12.1 Median Absolute Deviation (MAD) +--------------------------------------- + +The median absolute deviation (MAD) is defined as + + MAD = 1.4826 median { | x_i - median(x) | } + +In words, first the median of all samples is computed. Then the median +is subtracted from all samples in the input to find the deviation of +each sample from the median. The median of all absolute deviations is +then the MAD. The factor 1.4826 makes the MAD an unbiased estimator of +the standard deviation for Gaussian data. The median absolute deviation +has an asymptotic efficiency of 37%. + + -- Function: double gsl_stats_mad0 (const double data[], const + size_t stride, const size_t n, double work[]) + + -- Function: double gsl_stats_mad (const double data[], const + size_t stride, const size_t n, double work[]) + + These functions return the median absolute deviation of ‘data’, a + dataset of length ‘n’ and stride ‘stride’. The ‘mad0’ function + calculates \textrm{median} \left\{ \left| x_i - \textrm{median} + \left( x \right) \right| \right\} (i.e. the MAD statistic without + the bias correction scale factor). These functions require + additional workspace of size ‘n’ provided in ‘work’. + + +File: gsl-ref.info, Node: Statistic, Next: Statistic<2>, Prev: Median Absolute Deviation MAD, Up: Robust Scale Estimates + +21.12.2 S_n Statistic +--------------------- + +The S_n statistic developed by Croux and Rousseeuw is defined as + + S_n = 1.1926 * c_n * median_i { median_j ( | x_i - x_j | ) } + +For each sample x_i, 1 \le i \le n, the median of the values \left| x_i +- x_j \right| is computed for all x_j, 1 \le j \le n. This yields n +values, whose median then gives the final S_n. The factor 1.1926 makes +S_n an unbiased estimate of the standard deviation for Gaussian data. +The factor c_n is a correction factor to correct bias in small sample +sizes. S_n has an asymptotic efficiency of 58%. + + -- Function: double gsl_stats_Sn0_from_sorted_data (const + double sorted_data[], const size_t stride, const size_t n, + double work[]) + + -- Function: double gsl_stats_Sn_from_sorted_data (const + double sorted_data[], const size_t stride, const size_t n, + double work[]) + + These functions return the S_n statistic of ‘sorted_data’, a + dataset of length ‘n’ with stride ‘stride’. The elements of the + array must be in ascending numerical order. There are no checks to + see whether the data are sorted, so the function *note gsl_sort(): + 45a. should always be used first. The ‘Sn0’ function calculates + \textrm{median}_i \left\{ \textrm{median}_j \left( \left| x_i - x_j + \right| \right) \right\} (i.e. the S_n statistic without the bias + correction scale factors). These functions require additional + workspace of size ‘n’ provided in ‘work’. + + +File: gsl-ref.info, Node: Statistic<2>, Prev: Statistic, Up: Robust Scale Estimates + +21.12.3 Q_n Statistic +--------------------- + +The Q_n statistic developed by Croux and Rousseeuw is defined as + + Q_n = 2.21914 * d_n * { | x_i - x_j |, i < j }_{(k)} + +The factor 2.21914 makes Q_n an unbiased estimate of the standard +deviation for Gaussian data. The factor d_n is a correction factor to +correct bias in small sample sizes. The order statistic is + + k = ( floor(n/2) + 1 ) + ( 2 ) + +Q_n has an asymptotic efficiency of 82%. + + -- Function: double gsl_stats_Qn0_from_sorted_data (const + double sorted_data[], const size_t stride, const size_t n, + double work[], int work_int[]) + -- Function: double gsl_stats_Qn_from_sorted_data (const + double sorted_data[], const size_t stride, const size_t n, + double work[], int work_int[]) + + These functions return the Q_n statistic of ‘sorted_data’, a + dataset of length ‘n’ with stride ‘stride’. The elements of the + array must be in ascending numerical order. There are no checks to + see whether the data are sorted, so the function *note gsl_sort(): + 45a. should always be used first. The ‘Qn0’ function calculates + \left\{ \left| x_i - x_j \right|, i < j \right\}_{(k)} (i.e. Q_n + without the bias correction scale factors). These functions + require additional workspace of size ‘3n’ provided in ‘work’ and + integer workspace of size ‘5n’ provided in ‘work_int’. + + +File: gsl-ref.info, Node: Examples<15>, Next: References and Further Reading<15>, Prev: Robust Scale Estimates, Up: Statistics + +21.13 Examples +============== + +Here is a basic example of how to use the statistical functions: + + #include + #include + + int + main(void) + { + double data[5] = {17.2, 18.1, 16.5, 18.3, 12.6}; + double mean, variance, largest, smallest; + + mean = gsl_stats_mean(data, 1, 5); + variance = gsl_stats_variance(data, 1, 5); + largest = gsl_stats_max(data, 1, 5); + smallest = gsl_stats_min(data, 1, 5); + + printf ("The dataset is %g, %g, %g, %g, %g\n", + data[0], data[1], data[2], data[3], data[4]); + + printf ("The sample mean is %g\n", mean); + printf ("The estimated variance is %g\n", variance); + printf ("The largest value is %g\n", largest); + printf ("The smallest value is %g\n", smallest); + return 0; + } + +The program should produce the following output, + + The dataset is 17.2, 18.1, 16.5, 18.3, 12.6 + The sample mean is 16.54 + The estimated variance is 5.373 + The largest value is 18.3 + The smallest value is 12.6 + +Here is an example using sorted data, + + #include + #include + #include + + int + main(void) + { + double data[5] = {17.2, 18.1, 16.5, 18.3, 12.6}; + double median, upperq, lowerq; + + printf ("Original dataset: %g, %g, %g, %g, %g\n", + data[0], data[1], data[2], data[3], data[4]); + + gsl_sort (data, 1, 5); + + printf ("Sorted dataset: %g, %g, %g, %g, %g\n", + data[0], data[1], data[2], data[3], data[4]); + + median + = gsl_stats_median_from_sorted_data (data, + 1, 5); + + upperq + = gsl_stats_quantile_from_sorted_data (data, + 1, 5, + 0.75); + lowerq + = gsl_stats_quantile_from_sorted_data (data, + 1, 5, + 0.25); + + printf ("The median is %g\n", median); + printf ("The upper quartile is %g\n", upperq); + printf ("The lower quartile is %g\n", lowerq); + return 0; + } + +This program should produce the following output, + + Original dataset: 17.2, 18.1, 16.5, 18.3, 12.6 + Sorted dataset: 12.6, 16.5, 17.2, 18.1, 18.3 + The median is 17.2 + The upper quartile is 18.1 + The lower quartile is 16.5 + + +File: gsl-ref.info, Node: References and Further Reading<15>, Prev: Examples<15>, Up: Statistics + +21.14 References and Further Reading +==================================== + +The standard reference for almost any topic in statistics is the +multi-volume `Advanced Theory of Statistics' by Kendall and Stuart. + + * Maurice Kendall, Alan Stuart, and J. Keith Ord. `The Advanced + Theory of Statistics' (multiple volumes) reprinted as `Kendall’s + Advanced Theory of Statistics'. Wiley, ISBN 047023380X. + +Many statistical concepts can be more easily understood by a Bayesian +approach. The following book by Gelman, Carlin, Stern and Rubin gives a +comprehensive coverage of the subject. + + * Andrew Gelman, John B. Carlin, Hal S. Stern, Donald B. Rubin. + `Bayesian Data Analysis'. Chapman & Hall, ISBN 0412039915. + +For physicists the Particle Data Group provides useful reviews of +Probability and Statistics in the “Mathematical Tools” section of its +Annual Review of Particle Physics. + + * `Review of Particle Properties', R.M. Barnett et al., Physical + Review D54, 1 (1996) + +The Review of Particle Physics is available online at the website +‘http://pdg.lbl.gov/’. + +The following papers describe robust scale estimation, + + * C. Croux and P. J. Rousseeuw, `Time-Efficient algorithms for two + highly robust estimators of scale', Comp. Stat., Physica, + Heidelberg, 1992. + + * P. J. Rousseeuw and C. Croux, `Explicit scale estimators with high + breakdown point', L1-Statistical Analysis and Related Methods, pp. + 77-92, 1992. + + +File: gsl-ref.info, Node: Running Statistics, Next: Moving Window Statistics, Prev: Statistics, Up: Top + +22 Running Statistics +********************* + +This chapter describes routines for computing running statistics, also +known as online statistics, of data. These routines are suitable for +handling large datasets for which it may be inconvenient or impractical +to store in memory all at once. The data can be processed in a single +pass, one point at a time. Each time a data point is added to the +accumulator, internal parameters are updated in order to compute the +current mean, variance, standard deviation, skewness, and kurtosis. +These statistics are exact, and are updated with numerically stable +single-pass algorithms. The median and arbitrary quantiles are also +available, however these calculations use algorithms which provide +approximations, and grow more accurate as more data is added to the +accumulator. + +The functions described in this chapter are declared in the header file +‘gsl_rstat.h’. + +* Menu: + +* Initializing the Accumulator:: +* Adding Data to the Accumulator:: +* Current Statistics:: +* Quantiles:: +* Examples: Examples<16>. +* References and Further Reading: References and Further Reading<16>. + + +File: gsl-ref.info, Node: Initializing the Accumulator, Next: Adding Data to the Accumulator, Up: Running Statistics + +22.1 Initializing the Accumulator +================================= + + -- Type: gsl_rstat_workspace + + This workspace contains parameters used to calculate various + statistics and are updated after each data point is added to the + accumulator. + + -- Function: gsl_rstat_workspace * gsl_rstat_alloc (void) + + This function allocates a workspace for computing running + statistics. The size of the workspace is O(1). + + -- Function: void gsl_rstat_free (gsl_rstat_workspace * w) + + This function frees the memory associated with the workspace ‘w’. + + -- Function: int gsl_rstat_reset (gsl_rstat_workspace * w) + + This function resets the workspace ‘w’ to its initial state, so it + can begin working on a new set of data. + + +File: gsl-ref.info, Node: Adding Data to the Accumulator, Next: Current Statistics, Prev: Initializing the Accumulator, Up: Running Statistics + +22.2 Adding Data to the Accumulator +=================================== + + -- Function: int gsl_rstat_add (const double x, gsl_rstat_workspace + * w) + + This function adds the data point ‘x’ to the statistical + accumulator, updating calculations of the mean, variance, standard + deviation, skewness, kurtosis, and median. + + -- Function: size_t gsl_rstat_n (const gsl_rstat_workspace * w) + + This function returns the number of data so far added to the + accumulator. + + +File: gsl-ref.info, Node: Current Statistics, Next: Quantiles, Prev: Adding Data to the Accumulator, Up: Running Statistics + +22.3 Current Statistics +======================= + + -- Function: double gsl_rstat_min (const gsl_rstat_workspace * w) + + This function returns the minimum value added to the accumulator. + + -- Function: double gsl_rstat_max (const gsl_rstat_workspace * w) + + This function returns the maximum value added to the accumulator. + + -- Function: double gsl_rstat_mean (const gsl_rstat_workspace * w) + + This function returns the mean of all data added to the + accumulator, defined as + + \Hat\mu = (1/N) \sum x_i + + -- Function: double gsl_rstat_variance (const gsl_rstat_workspace * w) + + This function returns the variance of all data added to the + accumulator, defined as + + \Hat\sigma^2 = (1/(N-1)) \sum (x_i - \Hat\mu)^2 + + -- Function: double gsl_rstat_sd (const gsl_rstat_workspace * w) + + This function returns the standard deviation of all data added to + the accumulator, defined as the square root of the variance given + above. + + -- Function: double gsl_rstat_sd_mean (const gsl_rstat_workspace * w) + + This function returns the standard deviation of the mean, defined + as + + sd_mean = \Hat\sigma / \sqrt{N} + + -- Function: double gsl_rstat_rms (const gsl_rstat_workspace * w) + + This function returns the root mean square of all data added to the + accumulator, defined as + + rms = \sqrt{{1 \over N} \sum x_i^2} + + -- Function: double gsl_rstat_skew (const gsl_rstat_workspace * w) + + This function returns the skewness of all data added to the + accumulator, defined as + + skew = (1/N) \sum ((x_i - \Hat\mu)/\Hat\sigma)^3 + + -- Function: double gsl_rstat_kurtosis (const gsl_rstat_workspace * w) + + This function returns the kurtosis of all data added to the + accumulator, defined as + + kurtosis = ((1/N) \sum ((x_i - \Hat\mu)/\Hat\sigma)^4) - 3 + + -- Function: double gsl_rstat_median (gsl_rstat_workspace * w) + + This function returns an estimate of the median of the data added + to the accumulator. + + +File: gsl-ref.info, Node: Quantiles, Next: Examples<16>, Prev: Current Statistics, Up: Running Statistics + +22.4 Quantiles +============== + +The functions in this section estimate quantiles dynamically without +storing the entire dataset, using the algorithm of Jain and Chlamtec, +1985. Only five points (markers) are stored which represent the minimum +and maximum of the data, as well as current estimates of the p/2-, p-, +and (1+p)/2-quantiles. Each time a new data point is added, the marker +positions and heights are updated. + + -- Type: gsl_rstat_quantile_workspace + + This workspace contains parameters for estimating quantiles of the + current dataset + + -- Function: gsl_rstat_quantile_workspace * gsl_rstat_quantile_alloc + (const double p) + + This function allocates a workspace for the dynamic estimation of + ‘p’-quantiles, where ‘p’ is between 0 and 1. The median + corresponds to p = 0.5. The size of the workspace is O(1). + + -- Function: void gsl_rstat_quantile_free (gsl_rstat_quantile_workspace + * w) + + This function frees the memory associated with the workspace ‘w’. + + -- Function: int gsl_rstat_quantile_reset (gsl_rstat_quantile_workspace + * w) + + This function resets the workspace ‘w’ to its initial state, so it + can begin working on a new set of data. + + -- Function: int gsl_rstat_quantile_add (const double x, + gsl_rstat_quantile_workspace * w) + + This function updates the estimate of the p-quantile with the new + data point ‘x’. + + -- Function: double gsl_rstat_quantile_get + (gsl_rstat_quantile_workspace * w) + + This function returns the current estimate of the p-quantile. + + +File: gsl-ref.info, Node: Examples<16>, Next: References and Further Reading<16>, Prev: Quantiles, Up: Running Statistics + +22.5 Examples +============= + +Here is a basic example of how to use the statistical functions: + + #include + #include + + int + main(void) + { + double data[5] = {17.2, 18.1, 16.5, 18.3, 12.6}; + double mean, variance, largest, smallest, sd, + rms, sd_mean, median, skew, kurtosis; + gsl_rstat_workspace *rstat_p = gsl_rstat_alloc(); + size_t i, n; + + /* add data to rstat accumulator */ + for (i = 0; i < 5; ++i) + gsl_rstat_add(data[i], rstat_p); + + mean = gsl_rstat_mean(rstat_p); + variance = gsl_rstat_variance(rstat_p); + largest = gsl_rstat_max(rstat_p); + smallest = gsl_rstat_min(rstat_p); + median = gsl_rstat_median(rstat_p); + sd = gsl_rstat_sd(rstat_p); + sd_mean = gsl_rstat_sd_mean(rstat_p); + skew = gsl_rstat_skew(rstat_p); + rms = gsl_rstat_rms(rstat_p); + kurtosis = gsl_rstat_kurtosis(rstat_p); + n = gsl_rstat_n(rstat_p); + + printf ("The dataset is %g, %g, %g, %g, %g\n", + data[0], data[1], data[2], data[3], data[4]); + + printf ("The sample mean is %g\n", mean); + printf ("The estimated variance is %g\n", variance); + printf ("The largest value is %g\n", largest); + printf ("The smallest value is %g\n", smallest); + printf( "The median is %g\n", median); + printf( "The standard deviation is %g\n", sd); + printf( "The root mean square is %g\n", rms); + printf( "The standard devation of the mean is %g\n", sd_mean); + printf( "The skew is %g\n", skew); + printf( "The kurtosis %g\n", kurtosis); + printf( "There are %zu items in the accumulator\n", n); + + gsl_rstat_reset(rstat_p); + n = gsl_rstat_n(rstat_p); + printf( "There are %zu items in the accumulator\n", n); + + gsl_rstat_free(rstat_p); + + return 0; + } + +The program should produce the following output, + + The dataset is 17.2, 18.1, 16.5, 18.3, 12.6 + The sample mean is 16.54 + The estimated variance is 5.373 + The largest value is 18.3 + The smallest value is 12.6 + The median is 16.5 + The standard deviation is 2.31797 + The root mean square is 16.6694 + The standard devation of the mean is 1.03663 + The skew is -0.829058 + The kurtosis -1.2217 + There are 5 items in the accumulator + There are 0 items in the accumulator + +This next program estimates the lower quartile, median and upper +quartile from 10,000 samples of a random Rayleigh distribution, using +the P^2 algorithm of Jain and Chlamtec. For comparison, the exact +values are also computed from the sorted dataset. + + #include + #include + #include + #include + #include + #include + #include + + int + main(void) + { + const size_t N = 10000; + double *data = malloc(N * sizeof(double)); + gsl_rstat_quantile_workspace *work_25 = gsl_rstat_quantile_alloc(0.25); + gsl_rstat_quantile_workspace *work_50 = gsl_rstat_quantile_alloc(0.5); + gsl_rstat_quantile_workspace *work_75 = gsl_rstat_quantile_alloc(0.75); + gsl_rng *r = gsl_rng_alloc(gsl_rng_default); + double exact_p25, exact_p50, exact_p75; + double val_p25, val_p50, val_p75; + size_t i; + + /* add data to quantile accumulators; also store data for exact + * comparisons */ + for (i = 0; i < N; ++i) + { + data[i] = gsl_ran_rayleigh(r, 1.0); + gsl_rstat_quantile_add(data[i], work_25); + gsl_rstat_quantile_add(data[i], work_50); + gsl_rstat_quantile_add(data[i], work_75); + } + + /* exact values */ + gsl_sort(data, 1, N); + exact_p25 = gsl_stats_quantile_from_sorted_data(data, 1, N, 0.25); + exact_p50 = gsl_stats_quantile_from_sorted_data(data, 1, N, 0.5); + exact_p75 = gsl_stats_quantile_from_sorted_data(data, 1, N, 0.75); + + /* estimated values */ + val_p25 = gsl_rstat_quantile_get(work_25); + val_p50 = gsl_rstat_quantile_get(work_50); + val_p75 = gsl_rstat_quantile_get(work_75); + + printf ("The dataset is %g, %g, %g, %g, %g, ...\n", + data[0], data[1], data[2], data[3], data[4]); + + printf ("0.25 quartile: exact = %.5f, estimated = %.5f, error = %.6e\n", + exact_p25, val_p25, (val_p25 - exact_p25) / exact_p25); + printf ("0.50 quartile: exact = %.5f, estimated = %.5f, error = %.6e\n", + exact_p50, val_p50, (val_p50 - exact_p50) / exact_p50); + printf ("0.75 quartile: exact = %.5f, estimated = %.5f, error = %.6e\n", + exact_p75, val_p75, (val_p75 - exact_p75) / exact_p75); + + gsl_rstat_quantile_free(work_25); + gsl_rstat_quantile_free(work_50); + gsl_rstat_quantile_free(work_75); + gsl_rng_free(r); + free(data); + + return 0; + } + +The program should produce the following output, + + The dataset is 0.00645272, 0.0074002, 0.0120706, 0.0207256, 0.0227282, ... + 0.25 quartile: exact = 0.75766, estimated = 0.75580, error = -2.450209e-03 + 0.50 quartile: exact = 1.17508, estimated = 1.17438, error = -5.995912e-04 + 0.75 quartile: exact = 1.65347, estimated = 1.65696, error = 2.110571e-03 + + +File: gsl-ref.info, Node: References and Further Reading<16>, Prev: Examples<16>, Up: Running Statistics + +22.6 References and Further Reading +=================================== + +The algorithm used to dynamically estimate p-quantiles is described in +the paper, + + * R. Jain and I. Chlamtac. `The P^2 algorithm for dynamic + calculation of quantiles and histograms without storing + observations', Communications of the ACM, Volume 28 (October), + Number 10, 1985, p. 1076-1085. + + +File: gsl-ref.info, Node: Moving Window Statistics, Next: Digital Filtering, Prev: Running Statistics, Up: Top + +23 Moving Window Statistics +*************************** + +This chapter describes routines for computing `moving window statistics' +(also called rolling statistics and running statistics), using a window +around a sample which is used to calculate various local statistical +properties of an input data stream. The window is then slid forward by +one sample to process the next data point and so on. + +The functions described in this chapter are declared in the header file +‘gsl_movstat.h’. + +* Menu: + +* Introduction: Introduction<4>. +* Handling Endpoints:: +* Allocation for Moving Window Statistics:: +* Moving Mean:: +* Moving Variance and Standard Deviation:: +* Moving Minimum and Maximum:: +* Moving Sum:: +* Moving Median:: +* Robust Scale Estimation:: +* User-defined Moving Statistics:: +* Accumulators:: +* Examples: Examples<17>. +* References and Further Reading: References and Further Reading<17>. + + +File: gsl-ref.info, Node: Introduction<4>, Next: Handling Endpoints, Up: Moving Window Statistics + +23.1 Introduction +================= + +This chapter is concerned with calculating various statistics from +subsets of a given dataset. The main idea is to compute statistics in +the vicinity of a given data sample by defining a `window' which +includes the sample itself as well as some specified number of samples +before and after the sample in question. For a sample x_i, we define a +window W_i^{H,J} as + + W_i^{H,J} = {x_{i-H},...,x_i,...,x_{i+J}} + +The parameters H and J are non-negative integers specifying the number +of samples to include before and after the sample x_i. Statistics such +as the mean and standard deviation of the window W_i^{H,J} may be +computed, and then the window is shifted forward by one sample to focus +on x_{i+1}. The total number of samples in the window is K = H + J + 1. +To define a symmetric window centered on x_i, one would set H = J = +\left\lfloor K / 2 \right\rfloor. + + +File: gsl-ref.info, Node: Handling Endpoints, Next: Allocation for Moving Window Statistics, Prev: Introduction<4>, Up: Moving Window Statistics + +23.2 Handling Endpoints +======================= + +When processing samples near the ends of the input signal, there will +not be enough samples to fill the window W_i^{H,J} defined above. +Therefore the user must specify how to construct the windows near the +end points. This is done by passing an input argument of type *note +gsl_movstat_end_t: 7f7.: + + -- Type: gsl_movstat_end_t + + This data type specifies how to construct windows near end points + and can be selected from the following choices: + + -- Macro: GSL_MOVSTAT_END_PADZERO + + With this option, a full window of length K will be + constructed by inserting zeros into the window near the signal + end points. Effectively, the input signal is modified to + + x~ = {0, ..., 0, x_1, x_2, ..., x_{n-1}, x_n, 0, ..., 0} + + to ensure a well-defined window for all x_i. + + -- Macro: GSL_MOVSTAT_END_PADVALUE + + With this option, a full window of length K will be + constructed by padding the window with the first and last + sample in the input signal. Effectively, the input signal is + modified to + + x~ = {x_1, ..., x_1, x_1, x_2, ..., x_{n-1}, x_n, x_n, ..., x_n} + + -- Macro: GSL_MOVSTAT_END_TRUNCATE + + With this option, no padding is performed, and the windows are + simply truncated as the end points are approached. + + +File: gsl-ref.info, Node: Allocation for Moving Window Statistics, Next: Moving Mean, Prev: Handling Endpoints, Up: Moving Window Statistics + +23.3 Allocation for Moving Window Statistics +============================================ + + -- Type: gsl_movstat_workspace + + The moving window statistical routines use a common workspace. + + -- Function: gsl_movstat_workspace * gsl_movstat_alloc (const size_t K) + + This function allocates a workspace for computing symmetric, + centered moving statistics with a window length of K samples. In + this case, H = J = \left\lfloor K/2 \right\rfloor. The size of the + workspace is O(7K). + + -- Function: gsl_movstat_workspace * gsl_movstat_alloc2 (const + size_t H, const size_t J) + + This function allocates a workspace for computing moving statistics + using a window with H samples prior to the current sample, and J + samples after the current sample. The total window size is K = H + + J + 1. The size of the workspace is O(7K). + + -- Function: void * gsl_movstat_free (gsl_movstat_workspace * w) + + This function frees the memory associated with ‘w’. + + +File: gsl-ref.info, Node: Moving Mean, Next: Moving Variance and Standard Deviation, Prev: Allocation for Moving Window Statistics, Up: Moving Window Statistics + +23.4 Moving Mean +================ + +The moving window mean calculates the mean of the values of each window +W_i^{H,J}. + + \hat{\mu}_i = 1/| W_i^{H,J} | \sum_{x_m \in W_i^{H,J}} x_m + +Here, \left| W_i^{H,J} \right| represents the number of elements in the +window W_i^{H,J}. This will normally be K, unless the *note +GSL_MOVSTAT_END_TRUNCATE: 7fa. option is selected, in which case it +could be less than K near the signal end points. + + -- Function: int gsl_movstat_mean (const gsl_movstat_end_t endtype, + const gsl_vector * x, gsl_vector * y, gsl_movstat_workspace + * w) + + This function computes the moving window mean of the input vector + ‘x’, storing the output in ‘y’. The parameter ‘endtype’ specifies + how windows near the ends of the input should be handled. It is + allowed to have ‘x’ = ‘y’ for an in-place moving mean. + + +File: gsl-ref.info, Node: Moving Variance and Standard Deviation, Next: Moving Minimum and Maximum, Prev: Moving Mean, Up: Moving Window Statistics + +23.5 Moving Variance and Standard Deviation +=========================================== + +The moving window variance calculates the `sample variance' of the +values of each window W_i^{H,J}, defined by + + \hat{\sigma}_i^2 = 1/(|W_i^{H,J}| - 1) \sum_{x_m \in W_i^{H,J}} ( x_m - \hat{\mu}_i )^2 + +where \hat{\mu}_i is the mean of W_i^{H,J} defined above. The standard +deviation \hat{\sigma}_i is the square root of the variance. + + -- Function: int gsl_movstat_variance (const gsl_movstat_end_t endtype, + const gsl_vector * x, gsl_vector * y, gsl_movstat_workspace + * w) + + This function computes the moving window variance of the input + vector ‘x’, storing the output in ‘y’. The parameter ‘endtype’ + specifies how windows near the ends of the input should be handled. + It is allowed to have ‘x’ = ‘y’ for an in-place moving variance. + + -- Function: int gsl_movstat_sd (const gsl_movstat_end_t endtype, const + gsl_vector * x, gsl_vector * y, gsl_movstat_workspace * w) + + This function computes the moving window standard deviation of the + input vector ‘x’, storing the output in ‘y’. The parameter + ‘endtype’ specifies how windows near the ends of the input should + be handled. It is allowed to have ‘x’ = ‘y’ for an in-place moving + standard deviation. + + +File: gsl-ref.info, Node: Moving Minimum and Maximum, Next: Moving Sum, Prev: Moving Variance and Standard Deviation, Up: Moving Window Statistics + +23.6 Moving Minimum and Maximum +=============================== + +The moving minimum/maximum calculates the minimum and maximum values of +each window W_i^{H,J}. + + y_i^{min} = \min W_i^{H,J} + y_i^{max} = \max W_i^{H,J} + + -- Function: int gsl_movstat_min (const gsl_movstat_end_t endtype, + const gsl_vector * x, gsl_vector * y, gsl_movstat_workspace + * w) + + This function computes the moving minimum of the input vector ‘x’, + storing the result in ‘y’. The parameter ‘endtype’ specifies how + windows near the ends of the input should be handled. It is + allowed to have ‘x’ = ‘y’ for an in-place moving minimum. + + -- Function: int gsl_movstat_max (const gsl_movstat_end_t endtype, + const gsl_vector * x, gsl_vector * y, gsl_movstat_workspace + * w) + + This function computes the moving maximum of the input vector ‘x’, + storing the result in ‘y’. The parameter ‘endtype’ specifies how + windows near the ends of the input should be handled. It is + allowed to have ‘x’ = ‘y’ for an in-place moving maximum. + + -- Function: int gsl_movstat_minmax (const gsl_movstat_end_t endtype, + const gsl_vector * x, gsl_vector * y_min, gsl_vector * y_max, + gsl_movstat_workspace * w) + + This function computes the moving minimum and maximum of the input + vector ‘x’, storing the window minimums in ‘y_min’ and the window + maximums in ‘y_max’. The parameter ‘endtype’ specifies how windows + near the ends of the input should be handled. + + +File: gsl-ref.info, Node: Moving Sum, Next: Moving Median, Prev: Moving Minimum and Maximum, Up: Moving Window Statistics + +23.7 Moving Sum +=============== + +The moving window sum calculates the sum of the values of each window +W_i^{H,J}. + + y_i = \sum_{x_m \in W_i^{H,J}} x_m + + -- Function: int gsl_movstat_sum (const gsl_movstat_end_t endtype, + const gsl_vector * x, gsl_vector * y, gsl_movstat_workspace + * w) + + This function computes the moving window sum of the input vector + ‘x’, storing the output in ‘y’. The parameter ‘endtype’ specifies + how windows near the ends of the input should be handled. It is + allowed to have ‘x’ = ‘y’ for an in-place moving sum. + + +File: gsl-ref.info, Node: Moving Median, Next: Robust Scale Estimation, Prev: Moving Sum, Up: Moving Window Statistics + +23.8 Moving Median +================== + +The moving median calculates the median of the window W_i^{H,J} for each +sample x_i: + + y_i = median(W_i^{H,J}) + + -- Function: int gsl_movstat_median (const gsl_movstat_end_t endtype, + const gsl_vector * x, gsl_vector * y, gsl_movstat_workspace + * w) + + This function computes the moving median of the input vector ‘x’, + storing the output in ‘y’. The parameter ‘endtype’ specifies how + windows near the ends of the input should be handled. It is + allowed for ‘x’ = ‘y’ for an in-place moving window median. + + +File: gsl-ref.info, Node: Robust Scale Estimation, Next: User-defined Moving Statistics, Prev: Moving Median, Up: Moving Window Statistics + +23.9 Robust Scale Estimation +============================ + +A common problem in statistics is to quantify the dispersion (also known +as the variability, scatter, and spread) of a set of data. Often this +is done by calculating the variance or standard deviation. However +these statistics are strongly influenced by outliers, and can often +provide erroneous results when even a small number of outliers are +present. + +Several useful statistics have emerged to provide robust estimates of +scale which are not as susceptible to data outliers. A few of these +statistical scale estimators are described below. + +* Menu: + +* Moving MAD:: +* Moving QQR:: +* Moving:: +* Moving: Moving<2>. + + +File: gsl-ref.info, Node: Moving MAD, Next: Moving QQR, Up: Robust Scale Estimation + +23.9.1 Moving MAD +----------------- + +The median absolute deviation (MAD) for the window W_i^{H,J} is defined +to be the median of the absolute deviations from the window’s median: + + MAD_i = 1.4826 * median[ |W_i^{H,J} - median(W_i^{H,J})| ] + +The factor of 1.4826 makes the MAD an unbiased estimator of the standard +deviation for Gaussian data. The MAD has an efficiency of 37%. See +*note here: 7c8. for more information. + + -- Function: int gsl_movstat_mad0 (const gsl_movstat_end_t endtype, + const gsl_vector * x, gsl_vector * xmedian, gsl_vector * xmad, + gsl_movstat_workspace * w) + -- Function: int gsl_movstat_mad (const gsl_movstat_end_t endtype, + const gsl_vector * x, gsl_vector * xmedian, gsl_vector * xmad, + gsl_movstat_workspace * w) + + These functions compute the moving MAD of the input vector ‘x’ and + store the result in ‘xmad’. The medians of each window W_i^{H,J} + are stored in ‘xmedian’ on output. The inputs ‘x’, ‘xmedian’, and + ‘xmad’ must all be the same length. The parameter ‘endtype’ + specifies how windows near the ends of the input should be handled. + The function ‘mad0’ does not include the scale factor of 1.4826, + while the function ‘mad’ does include this factor. + + +File: gsl-ref.info, Node: Moving QQR, Next: Moving, Prev: Moving MAD, Up: Robust Scale Estimation + +23.9.2 Moving QQR +----------------- + +The q-quantile range (QQR) is the difference between the (1-q) and q +quantiles of a set of data, + + QQR = Q_{1-q} - Q_q + +The case q = 0.25 corresponds to the well-known `interquartile range +(IQR)', which is the difference between the 75th and 25th percentiles of +a set of data. The QQR is a `trimmed estimator', the main idea being to +discard the largest and smallest values in a data window and compute a +scale estimate from the remaining middle values. In the case of the +IQR, the largest and smallest 25% of the data are discarded and the +scale is estimated from the remaining (middle) 50%. + + -- Function: int gsl_movstat_qqr (const gsl_movstat_end_t endtype, + const gsl_vector * x, const double q, gsl_vector * xqqr, + gsl_movstat_workspace * w) + + This function computes the moving QQR of the input vector ‘x’ and + stores the q-quantile ranges of each window W_i^{H,J} in ‘xqqr’. + The quantile parameter ‘q’ must be between 0 and 0.5. The input q + = 0.25 corresponds to the IQR. The inputs ‘x’ and ‘xqqr’ must be + the same length. The parameter ‘endtype’ specifies how windows + near the ends of the input should be handled. + + +File: gsl-ref.info, Node: Moving, Next: Moving<2>, Prev: Moving QQR, Up: Robust Scale Estimation + +23.9.3 Moving S_n +----------------- + +The S_n statistic proposed by Croux and Rousseeuw is based on pairwise +differences between all samples in the window. It has an efficiency of +58%, significantly higher than the MAD. See *note here: 7cb. for more +information. + + -- Function: int gsl_movstat_Sn (const gsl_movstat_end_t endtype, const + gsl_vector * x, gsl_vector * xscale, gsl_movstat_workspace + * w) + + This function computes the moving S_n of the input vector ‘x’ and + stores the output in ‘xscale’. The inputs ‘x’ and ‘xscale’ must be + the same length. The parameter ‘endtype’ specifies how windows + near the ends of the input should be handled. It is allowed for + ‘x’ = ‘xscale’ for an in-place moving window S_n. + + +File: gsl-ref.info, Node: Moving<2>, Prev: Moving, Up: Robust Scale Estimation + +23.9.4 Moving Q_n +----------------- + +The Q_n statistic proposed by Croux and Rousseeuw is loosely based on +the Hodges-Lehmann location estimator. It has a relatively high +efficiency of 82%. See *note here: 7cf. for more information. + + -- Function: int gsl_movstat_Qn (const gsl_movstat_end_t endtype, const + gsl_vector * x, gsl_vector * xscale, gsl_movstat_workspace + * w) + + This function computes the moving Q_n of the input vector ‘x’ and + stores the output in ‘xscale’. The inputs ‘x’ and ‘xscale’ must be + the same length. The parameter ‘endtype’ specifies how windows + near the ends of the input should be handled. It is allowed for + ‘x’ = ‘xscale’ for an in-place moving window Q_n. + + +File: gsl-ref.info, Node: User-defined Moving Statistics, Next: Accumulators, Prev: Robust Scale Estimation, Up: Moving Window Statistics + +23.10 User-defined Moving Statistics +==================================== + +GSL offers an interface for users to define their own moving window +statistics functions, without needing to implement the edge-handling and +accumulator machinery. This can be done by explicitly constructing the +windows W_i^{H,J} for a given input signal (*note gsl_movstat_fill(): +818.), or by calculating a user-defined function for each window +automatically. In order to apply a user-defined function to each +window, users must define a variable of type *note gsl_movstat_function: +819. to pass into *note gsl_movstat_apply(): 81a. This structure is +defined as follows. + + -- Type: gsl_movstat_function + + Structure specifying user-defined moving window statistical + function: + + typedef struct + { + double (* function) (const size_t n, double x[], void * params); + void * params; + } gsl_movstat_function; + + This structure contains a pointer to the user-defined function as + well as possible parameters to pass to the function. + + -- Member: double (* function) (const size_t n, double x[], void + * params) + + This function returns the user-defined statistic of the array + ‘x’ of length ‘n’. User-specified parameters are passed in + via ‘params’. It is allowed to modify the array ‘x’. + + -- Member: void * params + + User-specified parameters to be passed into the function. + + -- Function: int gsl_movstat_apply (const gsl_movstat_end_t endtype, + const gsl_movstat_function * F, const gsl_vector * x, + gsl_vector * y, gsl_movstat_workspace * w) + + This function applies the user-defined moving window statistic + specified in ‘F’ to the input vector ‘x’, storing the output in + ‘y’. The parameter ‘endtype’ specifies how windows near the ends + of the input should be handled. It is allowed for ‘x’ = ‘y’ for an + in-place moving window calculation. + + -- Function: size_t gsl_movstat_fill (const gsl_movstat_end_t endtype, + const gsl_vector * x, const size_t idx, const size_t H, const + size_t J, double * window) + + This function explicitly constructs the sliding window for the + input vector ‘x’ which is centered on the sample ‘idx’. On output, + the array ‘window’ will contain W_{idx}^{H,J}. The number of + samples to the left and right of the sample ‘idx’ are specified by + ‘H’ and ‘J’ respectively. The parameter ‘endtype’ specifies how + windows near the ends of the input should be handled. The function + returns the size of the window. + + +File: gsl-ref.info, Node: Accumulators, Next: Examples<17>, Prev: User-defined Moving Statistics, Up: Moving Window Statistics + +23.11 Accumulators +================== + +Many of the algorithms of this chapter are based on an accumulator +design, which process the input vector one sample at a time, updating +calculations of the desired statistic for the current window. Each +accumulator is stored in the following structure: + + -- Type: gsl_movstat_accum + + Structure specifying accumulator for moving window statistics: + + typedef struct + { + size_t (* size) (const size_t n); + int (* init) (const size_t n, void * vstate); + int (* insert) (const double x, void * vstate); + int (* delete) (void * vstate); + int (* get) (void * params, double * result, const void * vstate); + } gsl_movstat_accum; + + The structure contains function pointers responsible for performing + different tasks for the accumulator. + + -- Member: size_t (* size) (const size_t n) + + This function returns the size of the workspace (in bytes) + needed by the accumulator for a moving window of length ‘n’. + + -- Member: int (* init) (const size_t n, void * vstate) + + This function initializes the workspace ‘vstate’ for a moving + window of length ‘n’. + + -- Member: int (* insert) (const double x, void * vstate) + + This function inserts a single sample ‘x’ into the + accumulator, updating internal calculations of the desired + statistic. If the accumulator is full (i.e. n samples have + already been inserted), then the oldest sample is deleted from + the accumulator. + + -- Member: int (* delete) (void * vstate) + + This function deletes the oldest sample from the accumulator, + updating internal calculations of the desired statistic. + + -- Member: int (* get) (void * params, double * result, const void + * vstate) + + This function stores the desired statistic for the current + window in ‘result’. The input ‘params’ specifies optional + parameters for calculating the statistic. + +The following accumulators of type *note gsl_movstat_accum: 81e. are +defined by GSL to perform moving window statistics calculations. + + -- Variable: gsl_movstat_accum_min + -- Variable: gsl_movstat_accum_max + -- Variable: gsl_movstat_accum_minmax + + These accumulators calculate moving window minimum/maximums + efficiently, using the algorithm of D. Lemire. + + -- Variable: gsl_movstat_accum_mean + -- Variable: gsl_movstat_accum_sd + -- Variable: gsl_movstat_accum_variance + + These accumulators calculate the moving window mean, standard + deviation, and variance, using the algorithm of B. P. Welford. + + -- Variable: gsl_movstat_median + + This accumulator calculates the moving window median using the + min/max heap algorithm of Härdle and Steiger. + + -- Variable: gsl_movstat_accum_Sn + -- Variable: gsl_movstat_accum_Qn + + These accumulators calculate the moving window S_n and Q_n + statistics developed by Croux and Rousseeuw. + + -- Variable: gsl_movstat_accum_sum + + This accumulator calculates the moving window sum. + + -- Variable: gsl_movstat_accum_qqr + + This accumulator calculates the moving window q-quantile range. + + +File: gsl-ref.info, Node: Examples<17>, Next: References and Further Reading<17>, Prev: Accumulators, Up: Moving Window Statistics + +23.12 Examples +============== + +* Menu: + +* Example 1:: +* Example 2; Robust Scale: Example 2 Robust Scale. +* Example 3; User-defined Moving Window: Example 3 User-defined Moving Window. + + +File: gsl-ref.info, Node: Example 1, Next: Example 2 Robust Scale, Up: Examples<17> + +23.12.1 Example 1 +----------------- + +The following example program computes the moving mean, minimum and +maximum of a noisy sinusoid signal of length N = 500 with a symmetric +moving window of size K = 11. + +[image src="movstat1.png"] + +Figure: Original signal time series (gray) with moving mean (green), +moving minimum (blue), and moving maximum (orange). + +The program is given below. + + #include + #include + + #include + #include + #include + #include + #include + + int + main(void) + { + const size_t N = 500; /* length of time series */ + const size_t K = 11; /* window size */ + gsl_movstat_workspace * w = gsl_movstat_alloc(K); + gsl_vector *x = gsl_vector_alloc(N); + gsl_vector *xmean = gsl_vector_alloc(N); + gsl_vector *xmin = gsl_vector_alloc(N); + gsl_vector *xmax = gsl_vector_alloc(N); + gsl_rng *r = gsl_rng_alloc(gsl_rng_default); + size_t i; + + for (i = 0; i < N; ++i) + { + double xi = cos(2.0 * M_PI * i / (double) N); + double ei = gsl_ran_gaussian(r, 0.1); + + gsl_vector_set(x, i, xi + ei); + } + + /* compute moving statistics */ + gsl_movstat_mean(GSL_MOVSTAT_END_PADVALUE, x, xmean, w); + gsl_movstat_minmax(GSL_MOVSTAT_END_PADVALUE, x, xmin, xmax, w); + + /* print results */ + for (i = 0; i < N; ++i) + { + printf("%zu %f %f %f %f\n", + i, + gsl_vector_get(x, i), + gsl_vector_get(xmean, i), + gsl_vector_get(xmin, i), + gsl_vector_get(xmax, i)); + } + + gsl_vector_free(x); + gsl_vector_free(xmean); + gsl_rng_free(r); + gsl_movstat_free(w); + + return 0; + } + + +File: gsl-ref.info, Node: Example 2 Robust Scale, Next: Example 3 User-defined Moving Window, Prev: Example 1, Up: Examples<17> + +23.12.2 Example 2: Robust Scale +------------------------------- + +The following example program analyzes a time series of length N = 1000 +composed of Gaussian random variates with zero mean whose standard +deviation changes in a piecewise constant fashion as shown in the table +below. + +Sample Range \sigma + +------------------------------------ + +1-200 1.0 + + +201-450 5.0 + + +451-600 1.0 + + +601-850 3.0 + + +851-1000 5.0 + + +Additionally, about 1% of the samples are perturbed to represent +outliers by adding \pm 15 to the random Gaussian variate. The program +calculates the moving statistics MAD, IQR, S_n, Q_n, and the standard +deviation using a symmetric moving window of length K = 41. The results +are shown in Fig. %s. + +[image src="movstat2.png"] + +Figure: Top: time series of piecewise constant variance. Bottom: scale +estimates using a moving window; the true sigma value is in light blue, +MAD in green, IQR in red, S_n in yellow, and Q_n in dark blue. The +moving standard deviation is shown in gray. + +The robust statistics follow the true standard deviation piecewise +changes well, without being influenced by the outliers. The moving +standard deviation (gray curve) is heavily influenced by the presence of +the outliers. The program is given below. + + #include + #include + + #include + #include + #include + #include + #include + + int + main(void) + { + const size_t N = 1000; /* length of time series */ + const double sigma[] = { 1.0, 5.0, 1.0, 3.0, 5.0 }; /* variances */ + const size_t N_sigma[] = { 200, 450, 600, 850, 1000 }; /* samples where variance changes */ + const size_t K = 41; /* window size */ + gsl_vector *x = gsl_vector_alloc(N); + gsl_vector *xmedian = gsl_vector_alloc(N); + gsl_vector *xmad = gsl_vector_alloc(N); + gsl_vector *xiqr = gsl_vector_alloc(N); + gsl_vector *xSn = gsl_vector_alloc(N); + gsl_vector *xQn = gsl_vector_alloc(N); + gsl_vector *xsd = gsl_vector_alloc(N); + gsl_rng *r = gsl_rng_alloc(gsl_rng_default); + gsl_movstat_workspace * w = gsl_movstat_alloc(K); + size_t idx = 0; + size_t i; + + for (i = 0; i < N; ++i) + { + double gi = gsl_ran_gaussian(r, sigma[idx]); + double u = gsl_rng_uniform(r); + double outlier = (u < 0.01) ? 15.0*GSL_SIGN(gi) : 0.0; + double xi = gi + outlier; + + gsl_vector_set(x, i, xi); + + if (i == N_sigma[idx] - 1) + ++idx; + } + + /* compute moving statistics */ + gsl_movstat_mad(GSL_MOVSTAT_END_TRUNCATE, x, xmedian, xmad, w); + gsl_movstat_qqr(GSL_MOVSTAT_END_TRUNCATE, x, 0.25, xiqr, w); + gsl_movstat_Sn(GSL_MOVSTAT_END_TRUNCATE, x, xSn, w); + gsl_movstat_Qn(GSL_MOVSTAT_END_TRUNCATE, x, xQn, w); + gsl_movstat_sd(GSL_MOVSTAT_END_TRUNCATE, x, xsd, w); + + /* scale IQR by factor to approximate standard deviation */ + gsl_vector_scale(xiqr, 0.7413); + + /* print results */ + idx = 0; + for (i = 0; i < N; ++i) + { + printf("%zu %f %f %f %f %f %f %f\n", + i, + gsl_vector_get(x, i), + sigma[idx], + gsl_vector_get(xmad, i), + gsl_vector_get(xiqr, i), + gsl_vector_get(xSn, i), + gsl_vector_get(xQn, i), + gsl_vector_get(xsd, i)); + + if (i == N_sigma[idx] - 1) + ++idx; + } + + gsl_vector_free(x); + gsl_vector_free(xmedian); + gsl_vector_free(xmad); + gsl_vector_free(xiqr); + gsl_vector_free(xSn); + gsl_vector_free(xQn); + gsl_vector_free(xsd); + gsl_rng_free(r); + gsl_movstat_free(w); + + return 0; + } + + +File: gsl-ref.info, Node: Example 3 User-defined Moving Window, Prev: Example 2 Robust Scale, Up: Examples<17> + +23.12.3 Example 3: User-defined Moving Window +--------------------------------------------- + +This example program illustrates how a user can define their own moving +window function to apply to an input vector. It constructs a random +noisy time series of length N = 1000 with some outliers added. Then it +applies a moving window trimmed mean to the time series with trim +parameter \alpha = 0.1. The length of the moving window is K = 11, so +the smallest and largest sample of each window is discarded prior to +computing the mean. The results are shown in Fig. %s. + +[image src="movstat3.png"] + +Figure: Noisy time series data (black) with moving window trimmed mean +(red) + +The program is given below. + + #include + #include + + #include + #include + #include + #include + #include + #include + #include + + double + func(const size_t n, double x[], void * params) + { + const double alpha = *(double *) params; + + gsl_sort(x, 1, n); + + return gsl_stats_trmean_from_sorted_data(alpha, x, 1, n); + } + + int + main(void) + { + const size_t N = 1000; /* length of time series */ + const size_t K = 11; /* window size */ + double alpha = 0.1; /* trimmed mean parameter */ + gsl_vector *x = gsl_vector_alloc(N); /* input vector */ + gsl_vector *y = gsl_vector_alloc(N); /* filtered output vector for alpha1 */ + gsl_rng *r = gsl_rng_alloc(gsl_rng_default); + gsl_movstat_workspace *w = gsl_movstat_alloc(K); + gsl_movstat_function F; + size_t i; + double sum = 0.0; + + /* generate input signal */ + for (i = 0; i < N; ++i) + { + double ui = gsl_ran_gaussian(r, 1.0); + double outlier = (gsl_rng_uniform(r) < 0.01) ? 10.0*GSL_SIGN(ui) : 0.0; + sum += ui; + gsl_vector_set(x, i, sum + outlier); + } + + /* apply moving window function */ + F.function = func; + F.params = α + gsl_movstat_apply(GSL_MOVSTAT_END_PADVALUE, &F, x, y, w); + + /* print results */ + for (i = 0; i < N; ++i) + { + double xi = gsl_vector_get(x, i); + double yi = gsl_vector_get(y, i); + + printf("%f %f\n", xi, yi); + } + + gsl_vector_free(x); + gsl_vector_free(y); + gsl_rng_free(r); + gsl_movstat_free(w); + + return 0; + } + + +File: gsl-ref.info, Node: References and Further Reading<17>, Prev: Examples<17>, Up: Moving Window Statistics + +23.13 References and Further Reading +==================================== + +The following publications are relevant to the algorithms described in +this chapter, + + * W.Hardle and W. Steiger, `Optimal Median Smoothing', Appl. + Statist., 44 (2), 1995. + + * D. Lemire, `Streaming Maximum-Minimum Filter Using No More than + Three Comparisons per Element', Nordic Journal of Computing, 13 + (4), 2006 (‘https://arxiv.org/abs/cs/0610046’). + + * B. P. Welford, `Note on a method for calculating corrected sums of + squares and products', Technometrics, 4 (3), 1962. + + +File: gsl-ref.info, Node: Digital Filtering, Next: Histograms, Prev: Moving Window Statistics, Up: Top + +24 Digital Filtering +******************** + +* Menu: + +* Introduction: Introduction<5>. +* Handling Endpoints: Handling Endpoints<2>. +* Linear Digital Filters:: +* Nonlinear Digital Filters:: +* Examples: Examples<18>. + + +File: gsl-ref.info, Node: Introduction<5>, Next: Handling Endpoints<2>, Up: Digital Filtering + +24.1 Introduction +================= + +The filters discussed in this chapter are based on the following moving +data window which is centered on i-th sample: + + W_i^H = { x_{i-H}, ..., x_i, ..., x_{i+H} } + +Here, H is a non-negative integer called the `window half-length', which +represents the number of samples before and after sample i. The total +window length is K = 2 H + 1. + + +File: gsl-ref.info, Node: Handling Endpoints<2>, Next: Linear Digital Filters, Prev: Introduction<5>, Up: Digital Filtering + +24.2 Handling Endpoints +======================= + +When processing samples near the ends of the input signal, there will +not be enough samples to fill the window W_i^H defined above. Therefore +the user must specify how to construct the windows near the end points. +This is done by passing an input argument of type *note +gsl_filter_end_t: 83a.: + + -- Type: gsl_filter_end_t + + This data type specifies how to construct windows near end points + and can be selected from the following choices: + + -- Macro: GSL_FILTER_END_PADZERO + + With this option, a full window of length K will be + constructed by inserting zeros into the window near the signal + end points. Effectively, the input signal is modified to + + x~ = { 0, ..., 0, x_1, x_2, ..., x_{n-1}, x_n, 0, ..., 0 } + + to ensure a well-defined window for all x_i. + + -- Macro: GSL_FILTER_END_PADVALUE + + With this option, a full window of length K will be + constructed by padding the window with the first and last + sample in the input signal. Effectively, the input signal is + modified to + + x~ = { x_1, ..., x_1, x_1, x_2, ..., x_{n-1}, x_n, x_n, ..., x_n } + + -- Macro: GSL_FILTER_END_TRUNCATE + + With this option, no padding is performed, and the windows are + simply truncated as the end points are approached. + + +File: gsl-ref.info, Node: Linear Digital Filters, Next: Nonlinear Digital Filters, Prev: Handling Endpoints<2>, Up: Digital Filtering + +24.3 Linear Digital Filters +=========================== + +* Menu: + +* Gaussian Filter:: + + +File: gsl-ref.info, Node: Gaussian Filter, Up: Linear Digital Filters + +24.3.1 Gaussian Filter +---------------------- + +The Gaussian filter convolves the input signal with a Gaussian kernel or +window. This filter is often used as a smoothing or noise reduction +filter. The Gaussian kernel is defined by + + G(k) = e^{-1/2 ( \alpha k/((K-1)/2) )^2} = e^{-k^2/2\sigma^2} + +for -(K-1)/2 \le k \le (K-1)/2, and K is the size of the kernel. The +parameter \alpha specifies the number of standard deviations \sigma +desired in the kernel. So for example setting \alpha = 3 would define a +Gaussian window of length K which spans \pm 3 \sigma. It is often more +convenient to specify the parameter \alpha rather than the standard +deviation \sigma when constructing the kernel, since a fixed value of +\alpha would correspond to the same shape of Gaussian regardless of the +size K. The appropriate value of the standard deviation depends on K and +is related to \alpha as + + \sigma = (K - 1)/(2 \alpha) + +The routines below accept \alpha as an input argument instead of \sigma. + +The Gaussian filter offers a convenient way of differentiating and +smoothing an input signal in a single pass. Using the derivative +property of a convolution, + + d/dt ( G * x ) = dG/dt * x + +the input signal x(t) can be smoothed and differentiated at the same +time by convolution with a derivative Gaussian kernel, which can be +readily computed from the analytic expression above. The same principle +applies to higher order derivatives. + + -- Function: gsl_filter_gaussian_workspace * gsl_filter_gaussian_alloc + (const size_t K) + + This function initializes a workspace for Gaussian filtering using + a kernel of size ‘K’. Here, H = K / 2. If K is even, it is + rounded up to the next odd integer to ensure a symmetric window. + The size of the workspace is O(K). + + -- Function: void gsl_filter_gaussian_free + (gsl_filter_gaussian_workspace * w) + + This function frees the memory associated with ‘w’. + + -- Function: int gsl_filter_gaussian (const gsl_filter_end_t endtype, + const double alpha, const size_t order, const gsl_vector * x, + gsl_vector * y, gsl_filter_gaussian_workspace * w) + + This function applies a Gaussian filter parameterized by *note + alpha: 497. to the input vector ‘x’, storing the output in ‘y’. + The derivative order is specified by ‘order’, with ‘0’ + corresponding to a Gaussian, ‘1’ corresponding to a first + derivative Gaussian, and so on. The parameter ‘endtype’ specifies + how the signal end points are handled. It is allowed for ‘x’ = ‘y’ + for an in-place filter. + + -- Function: int gsl_filter_gaussian_kernel (const double alpha, const + size_t order, const int normalize, gsl_vector * kernel) + + This function constructs a Gaussian kernel parameterized by *note + alpha: 497. and stores the output in ‘kernel’. The parameter + ‘order’ specifies the derivative order, with ‘0’ corresponding to a + Gaussian, ‘1’ corresponding to a first derivative Gaussian, and so + on. If ‘normalize’ is set to ‘1’, then the kernel will be + normalized to sum to one on output. If ‘normalize’ is set to ‘0’, + no normalization is performed. + + +File: gsl-ref.info, Node: Nonlinear Digital Filters, Next: Examples<18>, Prev: Linear Digital Filters, Up: Digital Filtering + +24.4 Nonlinear Digital Filters +============================== + +The nonlinear digital filters described below are based on the window +median, which is given by + + m_i = median { W_i^H } = median { x_{i-H}, ..., x_i, ..., x_{i+H} } + +The median is considered robust to local outliers, unlike the mean. +Median filters can preserve sharp edges while at the same removing +signal noise, and are used in a wide range of applications. + +* Menu: + +* Standard Median Filter:: +* Recursive Median Filter:: +* Impulse Detection Filter:: + + +File: gsl-ref.info, Node: Standard Median Filter, Next: Recursive Median Filter, Up: Nonlinear Digital Filters + +24.4.1 Standard Median Filter +----------------------------- + +The `standard median filter' (SMF) simply replaces the sample x_i by the +median m_i of the window W_i^H: This filter has one tuning parameter +given by H. The standard median filter is considered highly resistant to +local outliers and local noise in the data sequence \{x_i\}. + + -- Function: gsl_filter_median_workspace * gsl_filter_median_alloc + (const size_t K) + + This function initializes a workspace for standard median filtering + using a symmetric centered moving window of size ‘K’. Here, H = K + / 2. If K is even, it is rounded up to the next odd integer to + ensure a symmetric window. The size of the workspace is O(7K). + + -- Function: void gsl_filter_median_free (gsl_filter_median_workspace + * w) + + This function frees the memory associated with ‘w’. + + -- Function: int gsl_filter_median (const gsl_filter_end_t endtype, + const gsl_vector * x, gsl_vector * y, + gsl_filter_median_workspace * w) + + This function applies a standard median filter to the input ‘x’, + storing the output in ‘y’. The parameter ‘endtype’ specifies how + the signal end points are handled. It is allowed to have ‘x’ = ‘y’ + for an in-place filter. + + +File: gsl-ref.info, Node: Recursive Median Filter, Next: Impulse Detection Filter, Prev: Standard Median Filter, Up: Nonlinear Digital Filters + +24.4.2 Recursive Median Filter +------------------------------ + +The `recursive median filter' (RMF) is a modification of the SMF to +include previous filter outputs in the window before computing the +median. The filter’s response is + + y_i = median ( y_{i-H}, ..., y_{i-1}, x_i, x_{i+1}, ..., x_{i+H} ) + +Sometimes, the SMF must be applied several times in a row to achieve +adequate smoothing (i.e. a cascade filter). The RMF, on the other +hand, converges to a `root sequence' in one pass, and can sometimes +provide a smoother result than several passes of the SMF. A root +sequence is an input which is left unchanged by the filter. So there is +no need to apply a recursive median filter twice to an input vector. + + -- Function: gsl_filter_rmedian_workspace * gsl_filter_rmedian_alloc + (const size_t K) + + This function initializes a workspace for recursive median + filtering using a symmetric centered moving window of size ‘K’. + Here, H = K / 2. If K is even, it is rounded up to the next odd + integer to ensure a symmetric window. The size of the workspace is + O(K). + + -- Function: void gsl_filter_rmedian_free (gsl_filter_rmedian_workspace + * w) + + This function frees the memory associated with ‘w’. + + -- Function: int gsl_filter_rmedian (const gsl_filter_end_t endtype, + const gsl_vector * x, gsl_vector * y, + gsl_filter_rmedian_workspace * w) + + This function applies a recursive median filter to the input ‘x’, + storing the output in ‘y’. The parameter ‘endtype’ specifies how + the signal end points are handled. It is allowed to have ‘x’ = ‘y’ + for an in-place filter. + + +File: gsl-ref.info, Node: Impulse Detection Filter, Prev: Recursive Median Filter, Up: Nonlinear Digital Filters + +24.4.3 Impulse Detection Filter +------------------------------- + +Impulsive noise is characterized by short sequences of data points +distinct from those in the surrounding neighborhood. This section +describes a powerful class of filters, also known as `impulse rejection +filters' and `decision-based filters', designed to detect and remove +such outliers from data. The filter’s response is given by + + y_i = { x_i, |x_i - m_i| <= t * S_i + { m_i, |x_i - m_i| > t * S_i + +where m_i is the median value of the window W_i^H, S_i is a robust +estimate of the scatter or dispersion for the window W_i^H, and t is a +tuning parameter specifying the number of scale factors needed to +determine that a point is an outlier. The main idea is that the median +m_i will be unaffected by a small number of outliers in the window, and +so a given sample x_i is tested to determine how far away it is from the +median in terms of the local scale estimate S_i. Samples which are more +than t scale estimates away from the median are labeled as outliers and +replaced by the window median m_i. Samples which are less than t scale +estimates from the median are left unchanged by the filter. + +Note that when t = 0, the impulse detection filter is equivalent to the +standard median filter. When t \rightarrow \infty, it becomes the +identity filter. This means the impulse detection filter can be viewed +as a “less aggressive” version of the standard median filter, becoming +less aggressive as t is increased. Note that this filter modifies only +samples identified as outliers, while the standard median filter changes +all samples to the local median, regardless of whether they are +outliers. This fact, plus the additional flexibility offered by the +additional tuning parameter t can make the impulse detection filter a +better choice for some applications. + +It is important to have a robust and accurate scale estimate S_i in +order to detect impulse outliers even in the presence of noise. The +window standard deviation is not typically a good choice, as it can be +significantly perturbed by the presence of even one outlier. GSL offers +the following choices (specified by a parameter of type *note +gsl_filter_scale_t: 84e.) for computing the scale estimate S_i, all of +which are robust to the presence of impulse outliers. + + -- Type: gsl_filter_scale_t + + This type specifies how the scale estimate S_i of the window W_i^H + is calculated. + + -- Macro: GSL_FILTER_SCALE_MAD + + This option specifies the median absolute deviation (MAD) + scale estimate, defined by + + S_i = 1.4826 median { | W_i^H - m_i | } + + This choice of scale estimate is also known as the `Hampel + filter' in the statistical literature. See *note here: 7c8. + for more information. + + -- Macro: GSL_FILTER_SCALE_IQR + + This option specifies the interquartile range (IQR) scale + estimate, defined as the difference between the 75th and 25th + percentiles of the window W_i^H, + + S_i = 0.7413 ( Q_{0.75} - Q_{0.25} ) + + where Q_p is the p-quantile of the window W_i^H. The idea is + to throw away the largest and smallest 25% of the window + samples (where the outliers would be), and estimate a scale + from the middle 50%. The factor 0.7413 provides an unbiased + estimate of the standard deviation for Gaussian data. + + -- Macro: GSL_FILTER_SCALE_SN + + This option specifies the so-called S_n statistic proposed by + Croux and Rousseeuw. See *note here: 7cb. for more + information. + + -- Macro: GSL_FILTER_SCALE_QN + + This option specifies the so-called Q_n statistic proposed by + Croux and Rousseeuw. See *note here: 7cf. for more + information. + + Warning: While the scale estimates defined above are much less + sensitive to outliers than the standard deviation, they can suffer + from an effect called `implosion'. The standard deviation of a + window W_i^H will be zero if and only if all samples in the window + are equal. However, it is possible for the MAD of a window to be + zero even if all the samples in the window are not equal. For + example, if K/2 + 1 or more of the K samples in the window are + equal to some value x^{*}, then the window median will be equal to + x^{*}. Consequently, at least K/2 + 1 of the absolute deviations + |x_j - x^{*}| will be zero, and so the MAD will be zero. In such a + case, the Hampel filter will act like the standard median filter + regardless of the value of t. Caution should also be exercised if + dividing by S_i. + + -- Function: gsl_filter_impulse_workspace * gsl_filter_impulse_alloc + (const size_t K) + + This function initializes a workspace for impulse detection + filtering using a symmetric moving window of size ‘K’. Here, H = K + / 2. If K is even, it is rounded up to the next odd integer to + ensure a symmetric window. The size of the workspace is O(6K). + + -- Function: void gsl_filter_impulse_free (gsl_filter_impulse_workspace + * w) + + This function frees the memory associated with ‘w’. + + -- Function: int gsl_filter_impulse (const gsl_filter_end_t endtype, + const gsl_filter_scale_t scale_type, const double t, const + gsl_vector * x, gsl_vector * y, gsl_vector * xmedian, + gsl_vector * xsigma, size_t * noutlier, gsl_vector_int + * ioutlier, gsl_filter_impulse_workspace * w) + + These functions apply an impulse detection filter to the input + vector ‘x’, storing the filtered output in ‘y’. The tuning + parameter t is provided in ‘t’. The window medians m_i are stored + in ‘xmedian’ and the S_i are stored in ‘xsigma’ on output. The + number of outliers detected is stored in ‘noutlier’ on output, + while the locations of flagged outliers are stored in the boolean + array ‘ioutlier’. The input ‘ioutlier’ may be ‘NULL’ if not + desired. It is allowed to have ‘x’ = ‘y’ for an in-place filter. + + +File: gsl-ref.info, Node: Examples<18>, Prev: Nonlinear Digital Filters, Up: Digital Filtering + +24.5 Examples +============= + +* Menu: + +* Gaussian Example 1:: +* Gaussian Example 2:: +* Square Wave Signal Example:: +* Impulse Detection Example:: + + +File: gsl-ref.info, Node: Gaussian Example 1, Next: Gaussian Example 2, Up: Examples<18> + +24.5.1 Gaussian Example 1 +------------------------- + +This example program illustrates the Gaussian filter applied to +smoothing a time series of length N = 500 with a kernel size of K = 51. +Three filters are applied with parameters \alpha = 0.5, 3, 10. The +results are shown in Fig. %s. + +[image src="gaussfilt.png"] + +Figure: Top panel: Gaussian kernels (unnormalized) for \alpha = 0.5, 3, +10. Bottom panel: Time series (gray) with Gaussian filter output for +same \alpha values. + +We see that the filter corresponding to \alpha = 0.5 applies the most +smoothing, while \alpha = 10 corresponds to the least amount of +smoothing. The program is given below. + + #include + #include + + #include + #include + #include + #include + #include + + int + main(void) + { + const size_t N = 500; /* length of time series */ + const size_t K = 51; /* window size */ + const double alpha[3] = { 0.5, 3.0, 10.0 }; /* alpha values */ + gsl_vector *x = gsl_vector_alloc(N); /* input vector */ + gsl_vector *y1 = gsl_vector_alloc(N); /* filtered output vector for alpha1 */ + gsl_vector *y2 = gsl_vector_alloc(N); /* filtered output vector for alpha2 */ + gsl_vector *y3 = gsl_vector_alloc(N); /* filtered output vector for alpha3 */ + gsl_vector *k1 = gsl_vector_alloc(K); /* Gaussian kernel for alpha1 */ + gsl_vector *k2 = gsl_vector_alloc(K); /* Gaussian kernel for alpha2 */ + gsl_vector *k3 = gsl_vector_alloc(K); /* Gaussian kernel for alpha3 */ + gsl_rng *r = gsl_rng_alloc(gsl_rng_default); + gsl_filter_gaussian_workspace *gauss_p = gsl_filter_gaussian_alloc(K); + size_t i; + double sum = 0.0; + + /* generate input signal */ + for (i = 0; i < N; ++i) + { + double ui = gsl_ran_gaussian(r, 1.0); + sum += ui; + gsl_vector_set(x, i, sum); + } + + /* compute kernels without normalization */ + gsl_filter_gaussian_kernel(alpha[0], 0, 0, k1); + gsl_filter_gaussian_kernel(alpha[1], 0, 0, k2); + gsl_filter_gaussian_kernel(alpha[2], 0, 0, k3); + + /* apply filters */ + gsl_filter_gaussian(GSL_FILTER_END_PADVALUE, alpha[0], 0, x, y1, gauss_p); + gsl_filter_gaussian(GSL_FILTER_END_PADVALUE, alpha[1], 0, x, y2, gauss_p); + gsl_filter_gaussian(GSL_FILTER_END_PADVALUE, alpha[2], 0, x, y3, gauss_p); + + /* print kernels */ + for (i = 0; i < K; ++i) + { + double k1i = gsl_vector_get(k1, i); + double k2i = gsl_vector_get(k2, i); + double k3i = gsl_vector_get(k3, i); + + printf("%e %e %e\n", k1i, k2i, k3i); + } + + printf("\n\n"); + + /* print filter results */ + for (i = 0; i < N; ++i) + { + double xi = gsl_vector_get(x, i); + double y1i = gsl_vector_get(y1, i); + double y2i = gsl_vector_get(y2, i); + double y3i = gsl_vector_get(y3, i); + + printf("%.12e %.12e %.12e %.12e\n", xi, y1i, y2i, y3i); + } + + gsl_vector_free(x); + gsl_vector_free(y1); + gsl_vector_free(y2); + gsl_vector_free(y3); + gsl_vector_free(k1); + gsl_vector_free(k2); + gsl_vector_free(k3); + gsl_rng_free(r); + gsl_filter_gaussian_free(gauss_p); + + return 0; + } + + +File: gsl-ref.info, Node: Gaussian Example 2, Next: Square Wave Signal Example, Prev: Gaussian Example 1, Up: Examples<18> + +24.5.2 Gaussian Example 2 +------------------------- + +A common application of the Gaussian filter is to detect edges, or +sudden jumps, in a noisy input signal. It is used both for 1D edge +detection in time series, as well as 2D edge detection in images. Here +we will examine a noisy time series of length N = 1000 with a single +edge. The input signal is defined as + + x(n) = e(n) + { 0, n <= N/2 + { 0.5, n > N/2 + +where e(n) is Gaussian random noise. The program smooths the input +signal with order 0,1, and 2 Gaussian filters of length K = 61 with +\alpha = 3. For comparison, the program also computes finite +differences of the input signal without smoothing. The results are +shown in Fig. %s. + +[image src="gaussfilt2.png"] + +Figure: Top row: original input signal x(n) (black) with Gaussian +smoothed signal in red. Second row: First finite differences of input +signal. Third row: Input signal smoothed with a first order Gaussian +filter. Fourth row: Input signal smoothed with a second order Gaussian +filter. + +The finite difference approximation of the first derivative (second row) +shows the common problem with differentiating a noisy signal. The noise +is amplified and makes it extremely difficult to detect the sharp +gradient at sample 500. The third row shows the first order Gaussian +smoothed signal with a clear peak at the location of the edge. +Alternatively, one could examine the second order Gaussian smoothed +signal (fourth row) and look for zero crossings to determine the edge +location. + +The program is given below. + + #include + #include + + #include + #include + #include + #include + #include + + int + main(void) + { + const size_t N = 1000; /* length of time series */ + const size_t K = 61; /* window size */ + const double alpha = 3.0; /* Gaussian kernel has +/- 3 standard deviations */ + gsl_vector *x = gsl_vector_alloc(N); /* input vector */ + gsl_vector *y = gsl_vector_alloc(N); /* filtered output vector */ + gsl_vector *dy = gsl_vector_alloc(N); /* first derivative filtered vector */ + gsl_vector *d2y = gsl_vector_alloc(N); /* second derivative filtered vector */ + gsl_rng *r = gsl_rng_alloc(gsl_rng_default); + gsl_filter_gaussian_workspace *gauss_p = gsl_filter_gaussian_alloc(K); + size_t i; + + /* generate input signal */ + for (i = 0; i < N; ++i) + { + double xi = (i > N / 2) ? 0.5 : 0.0; + double ei = gsl_ran_gaussian(r, 0.1); + + gsl_vector_set(x, i, xi + ei); + } + + /* apply filters */ + gsl_filter_gaussian(GSL_FILTER_END_PADVALUE, alpha, 0, x, y, gauss_p); + gsl_filter_gaussian(GSL_FILTER_END_PADVALUE, alpha, 1, x, dy, gauss_p); + gsl_filter_gaussian(GSL_FILTER_END_PADVALUE, alpha, 2, x, d2y, gauss_p); + + /* print results */ + for (i = 0; i < N; ++i) + { + double xi = gsl_vector_get(x, i); + double yi = gsl_vector_get(y, i); + double dyi = gsl_vector_get(dy, i); + double d2yi = gsl_vector_get(d2y, i); + double dxi; + + /* compute finite difference of x vector */ + if (i == 0) + dxi = gsl_vector_get(x, i + 1) - xi; + else if (i == N - 1) + dxi = gsl_vector_get(x, i) - gsl_vector_get(x, i - 1); + else + dxi = 0.5 * (gsl_vector_get(x, i + 1) - gsl_vector_get(x, i - 1)); + + printf("%.12e %.12e %.12e %.12e %.12e\n", + xi, + yi, + dxi, + dyi, + d2yi); + } + + gsl_vector_free(x); + gsl_vector_free(y); + gsl_vector_free(dy); + gsl_vector_free(d2y); + gsl_rng_free(r); + gsl_filter_gaussian_free(gauss_p); + + return 0; + } + + +File: gsl-ref.info, Node: Square Wave Signal Example, Next: Impulse Detection Example, Prev: Gaussian Example 2, Up: Examples<18> + +24.5.3 Square Wave Signal Example +--------------------------------- + +The following example program illustrates the median filters on a noisy +square wave signal. Median filters are well known for preserving sharp +edges in the input signal while reducing noise. The program constructs +a 5 Hz square wave signal with Gaussian noise added. Then the signal is +filtered with a standard median filter and recursive median filter using +a symmetric window of length K = 7. The results are shown in Fig. %s. + +[image src="filt_edge.png"] + +Figure: Original time series is in gray. The standard median filter +output is in green and the recursive median filter output is in red. + +Both filters preserve the sharp signal edges while reducing the noise. +The recursive median filter achieves a smoother result than the standard +median filter. The “blocky” nature of the output is characteristic of +all median filters. The program is given below. + + #include + #include + + #include + #include + #include + #include + #include + + int + main(void) + { + const size_t N = 1000; /* length of time series */ + const size_t K = 7; /* window size */ + const double f = 5.0; /* frequency of square wave in Hz */ + gsl_filter_median_workspace *median_p = gsl_filter_median_alloc(K); + gsl_filter_rmedian_workspace *rmedian_p = gsl_filter_rmedian_alloc(K); + gsl_vector *t = gsl_vector_alloc(N); /* time */ + gsl_vector *x = gsl_vector_alloc(N); /* input vector */ + gsl_vector *y_median = gsl_vector_alloc(N); /* median filtered output */ + gsl_vector *y_rmedian = gsl_vector_alloc(N); /* recursive median filtered output */ + gsl_rng *r = gsl_rng_alloc(gsl_rng_default); + size_t i; + + /* generate input signal */ + for (i = 0; i < N; ++i) + { + double ti = (double) i / (N - 1.0); + double tmp = sin(2.0 * M_PI * f * ti); + double xi = (tmp >= 0.0) ? 1.0 : -1.0; + double ei = gsl_ran_gaussian(r, 0.1); + + gsl_vector_set(t, i, ti); + gsl_vector_set(x, i, xi + ei); + } + + gsl_filter_median(GSL_FILTER_END_PADVALUE, x, y_median, median_p); + gsl_filter_rmedian(GSL_FILTER_END_PADVALUE, x, y_rmedian, rmedian_p); + + /* print results */ + for (i = 0; i < N; ++i) + { + double ti = gsl_vector_get(t, i); + double xi = gsl_vector_get(x, i); + double medi = gsl_vector_get(y_median, i); + double rmedi = gsl_vector_get(y_rmedian, i); + + printf("%f %f %f %f\n", + ti, + xi, + medi, + rmedi); + } + + gsl_vector_free(t); + gsl_vector_free(x); + gsl_vector_free(y_median); + gsl_vector_free(y_rmedian); + gsl_rng_free(r); + gsl_filter_median_free(median_p); + + return 0; + } + + +File: gsl-ref.info, Node: Impulse Detection Example, Prev: Square Wave Signal Example, Up: Examples<18> + +24.5.4 Impulse Detection Example +-------------------------------- + +The following example program illustrates the impulse detection filter. +First, it constructs a sinusoid signal of length N = 1000 with Gaussian +noise added. Then, about 1% of the data are perturbed to represent +large outliers. An impulse detecting filter is applied with a window +size K = 25 and tuning parameter t = 4, using the Q_n statistic as the +robust measure of scale. The results are plotted in Fig. %s. + +[image src="impulse.png"] + +Figure: Original time series is in blue, filter output is in green, +upper and lower intervals for detecting outliers are in red and yellow +respectively. Detected outliers are marked with squares. + +The program is given below. + + #include + #include + + #include + #include + #include + #include + #include + + int + main(void) + { + const size_t N = 1000; /* length of time series */ + const size_t K = 25; /* window size */ + const double t = 4.0; /* number of scale factors for outlier detection */ + gsl_vector *x = gsl_vector_alloc(N); /* input vector */ + gsl_vector *y = gsl_vector_alloc(N); /* output (filtered) vector */ + gsl_vector *xmedian = gsl_vector_alloc(N); /* window medians */ + gsl_vector *xsigma = gsl_vector_alloc(N); /* window scale estimates */ + gsl_vector_int *ioutlier = gsl_vector_int_alloc(N); /* outlier detected? */ + gsl_filter_impulse_workspace * w = gsl_filter_impulse_alloc(K); + gsl_rng *r = gsl_rng_alloc(gsl_rng_default); + size_t noutlier; + size_t i; + + /* generate input signal */ + for (i = 0; i < N; ++i) + { + double xi = 10.0 * sin(2.0 * M_PI * i / (double) N); + double ei = gsl_ran_gaussian(r, 2.0); + double u = gsl_rng_uniform(r); + double outlier = (u < 0.01) ? 15.0*GSL_SIGN(ei) : 0.0; + + gsl_vector_set(x, i, xi + ei + outlier); + } + + /* apply impulse detection filter */ + gsl_filter_impulse(GSL_FILTER_END_TRUNCATE, GSL_FILTER_SCALE_QN, t, x, y, + xmedian, xsigma, &noutlier, ioutlier, w); + + /* print results */ + for (i = 0; i < N; ++i) + { + double xi = gsl_vector_get(x, i); + double yi = gsl_vector_get(y, i); + double xmedi = gsl_vector_get(xmedian, i); + double xsigmai = gsl_vector_get(xsigma, i); + int outlier = gsl_vector_int_get(ioutlier, i); + + printf("%zu %f %f %f %f %d\n", + i, + xi, + yi, + xmedi + t * xsigmai, + xmedi - t * xsigmai, + outlier); + } + + gsl_vector_free(x); + gsl_vector_free(y); + gsl_vector_free(xmedian); + gsl_vector_free(xsigma); + gsl_vector_int_free(ioutlier); + gsl_filter_impulse_free(w); + gsl_rng_free(r); + + return 0; + } + + +File: gsl-ref.info, Node: Histograms, Next: N-tuples, Prev: Digital Filtering, Up: Top + +25 Histograms +************* + +This chapter describes functions for creating histograms. Histograms +provide a convenient way of summarizing the distribution of a set of +data. A histogram consists of a set of `bins' which count the number of +events falling into a given range of a continuous variable x. In GSL +the bins of a histogram contain floating-point numbers, so they can be +used to record both integer and non-integer distributions. The bins can +use arbitrary sets of ranges (uniformly spaced bins are the default). +Both one and two-dimensional histograms are supported. + +Once a histogram has been created it can also be converted into a +probability distribution function. The library provides efficient +routines for selecting random samples from probability distributions. +This can be useful for generating simulations based on real data. + +The functions are declared in the header files ‘gsl_histogram.h’ and +‘gsl_histogram2d.h’. + +* Menu: + +* The histogram struct:: +* Histogram allocation:: +* Copying Histograms:: +* Updating and accessing histogram elements:: +* Searching histogram ranges:: +* Histogram Statistics:: +* Histogram Operations:: +* Reading and writing histograms:: +* Resampling from histograms:: +* The histogram probability distribution struct:: +* Example programs for histograms:: +* Two dimensional histograms:: +* The 2D histogram struct:: +* 2D Histogram allocation:: +* Copying 2D Histograms:: +* Updating and accessing 2D histogram elements:: +* Searching 2D histogram ranges:: +* 2D Histogram Statistics:: +* 2D Histogram Operations:: +* Reading and writing 2D histograms:: +* Resampling from 2D histograms:: +* Example programs for 2D histograms:: + + +File: gsl-ref.info, Node: The histogram struct, Next: Histogram allocation, Up: Histograms + +25.1 The histogram struct +========================= + +A histogram is defined by the following struct, + + -- Type: gsl_histogram + + size_t n This is the number of histogram bins + + + double * range The ranges of the bins are stored in an array of ‘n+1’ elements pointed to by + range. + + + double * bin The counts for each bin are stored in an array of ‘n’ elements pointed to by + ‘bin’. The bins are floating-point numbers, so you can increment them by + non-integer values if necessary. + + + The range for ‘bin[i]’ is given by ‘range[i]’ to ‘range[i+1]’. For + n bins there are ‘n+1’ entries in the array ‘range’. Each bin is + inclusive at the lower end and exclusive at the upper end. + Mathematically this means that the bins are defined by the + following inequality, + + bin[i] corresponds to range[i] <= x < range[i+1] + + Here is a diagram of the correspondence between ranges and bins on + the number-line for x: + + [ bin[0] )[ bin[1] )[ bin[2] )[ bin[3] )[ bin[4] ) + ---|---------|---------|---------|---------|---------|--- x + r[0] r[1] r[2] r[3] r[4] r[5] + + In this picture the values of the ‘range’ array are denoted by r. + On the left-hand side of each bin the square bracket ‘[’ denotes an + inclusive lower bound (r \le x), and the round parentheses ‘)’ on + the right-hand side denote an exclusive upper bound (x < r). Thus + any samples which fall on the upper end of the histogram are + excluded. If you want to include this value for the last bin you + will need to add an extra bin to your histogram. + + The *note gsl_histogram: 862. struct and its associated functions + are defined in the header file ‘gsl_histogram.h’. + + +File: gsl-ref.info, Node: Histogram allocation, Next: Copying Histograms, Prev: The histogram struct, Up: Histograms + +25.2 Histogram allocation +========================= + +The functions for allocating memory to a histogram follow the style of +‘malloc()’ and ‘free()’. In addition they also perform their own error +checking. If there is insufficient memory available to allocate a +histogram then the functions call the error handler (with an error +number of *note GSL_ENOMEM: 2a.) in addition to returning a null +pointer. Thus if you use the library error handler to abort your +program then it isn’t necessary to check every histogram ‘alloc’. + + -- Function: gsl_histogram * gsl_histogram_alloc (size_t n) + + This function allocates memory for a histogram with ‘n’ bins, and + returns a pointer to a newly created *note gsl_histogram: 862. + struct. If insufficient memory is available a null pointer is + returned and the error handler is invoked with an error code of + *note GSL_ENOMEM: 2a. The bins and ranges are not initialized, and + should be prepared using one of the range-setting functions below + in order to make the histogram ready for use. + + -- Function: int gsl_histogram_set_ranges (gsl_histogram * h, const + double range[], size_t size) + + This function sets the ranges of the existing histogram ‘h’ using + the array ‘range’ of size ‘size’. The values of the histogram bins + are reset to zero. The ‘range’ array should contain the desired + bin limits. The ranges can be arbitrary, subject to the + restriction that they are monotonically increasing. + + The following example shows how to create a histogram with + logarithmic bins with ranges [1,10), [10,100) and [100,1000): + + gsl_histogram * h = gsl_histogram_alloc (3); + + /* bin[0] covers the range 1 <= x < 10 */ + /* bin[1] covers the range 10 <= x < 100 */ + /* bin[2] covers the range 100 <= x < 1000 */ + + double range[4] = { 1.0, 10.0, 100.0, 1000.0 }; + + gsl_histogram_set_ranges (h, range, 4); + + Note that the size of the ‘range’ array should be defined to be one + element bigger than the number of bins. The additional element is + required for the upper value of the final bin. + + -- Function: int gsl_histogram_set_ranges_uniform (gsl_histogram * h, + double xmin, double xmax) + + This function sets the ranges of the existing histogram ‘h’ to + cover the range ‘xmin’ to ‘xmax’ uniformly. The values of the + histogram bins are reset to zero. The bin ranges are shown in the + table below, + + bin[0] corresponds to xmin <= x < xmin + d + bin[1] corresponds to xmin + d <= x < xmin + 2 d + ...... + bin[n-1] corresponds to xmin + (n-1)d <= x < xmax + + where d is the bin spacing, d = (xmax-xmin)/n. + + -- Function: void gsl_histogram_free (gsl_histogram * h) + + This function frees the histogram ‘h’ and all of the memory + associated with it. + + +File: gsl-ref.info, Node: Copying Histograms, Next: Updating and accessing histogram elements, Prev: Histogram allocation, Up: Histograms + +25.3 Copying Histograms +======================= + + -- Function: int gsl_histogram_memcpy (gsl_histogram * dest, const + gsl_histogram * src) + + This function copies the histogram ‘src’ into the pre-existing + histogram ‘dest’, making ‘dest’ into an exact copy of ‘src’. The + two histograms must be of the same size. + + -- Function: gsl_histogram * gsl_histogram_clone (const gsl_histogram + * src) + + This function returns a pointer to a newly created histogram which + is an exact copy of the histogram ‘src’. + + +File: gsl-ref.info, Node: Updating and accessing histogram elements, Next: Searching histogram ranges, Prev: Copying Histograms, Up: Histograms + +25.4 Updating and accessing histogram elements +============================================== + +There are two ways to access histogram bins, either by specifying an x +coordinate or by using the bin-index directly. The functions for +accessing the histogram through x coordinates use a binary search to +identify the bin which covers the appropriate range. + + -- Function: int gsl_histogram_increment (gsl_histogram * h, double x) + + This function updates the histogram ‘h’ by adding one (1.0) to the + bin whose range contains the coordinate ‘x’. + + If ‘x’ lies in the valid range of the histogram then the function + returns zero to indicate success. If ‘x’ is less than the lower + limit of the histogram then the function returns *note GSL_EDOM: + 28, and none of bins are modified. Similarly, if the value of ‘x’ + is greater than or equal to the upper limit of the histogram then + the function returns *note GSL_EDOM: 28, and none of the bins are + modified. The error handler is not called, however, since it is + often necessary to compute histograms for a small range of a larger + dataset, ignoring the values outside the range of interest. + + -- Function: int gsl_histogram_accumulate (gsl_histogram * h, double x, + double weight) + + This function is similar to *note gsl_histogram_increment(): 86c. + but increases the value of the appropriate bin in the histogram ‘h’ + by the floating-point number ‘weight’. + + -- Function: double gsl_histogram_get (const gsl_histogram * h, + size_t i) + + This function returns the contents of the ‘i’-th bin of the + histogram ‘h’. If ‘i’ lies outside the valid range of indices for + the histogram then the error handler is called with an error code + of *note GSL_EDOM: 28. and the function returns 0. + + -- Function: int gsl_histogram_get_range (const gsl_histogram * h, + size_t i, double * lower, double * upper) + + This function finds the upper and lower range limits of the ‘i’-th + bin of the histogram ‘h’. If the index ‘i’ is valid then the + corresponding range limits are stored in ‘lower’ and ‘upper’. The + lower limit is inclusive (i.e. events with this coordinate are + included in the bin) and the upper limit is exclusive (i.e. events + with the coordinate of the upper limit are excluded and fall in the + neighboring higher bin, if it exists). The function returns 0 to + indicate success. If ‘i’ lies outside the valid range of indices + for the histogram then the error handler is called and the function + returns an error code of *note GSL_EDOM: 28. + + -- Function: double gsl_histogram_max (const gsl_histogram * h) + -- Function: double gsl_histogram_min (const gsl_histogram * h) + -- Function: size_t gsl_histogram_bins (const gsl_histogram * h) + + These functions return the maximum upper and minimum lower range + limits and the number of bins of the histogram ‘h’. They provide a + way of determining these values without accessing the *note + gsl_histogram: 862. struct directly. + + -- Function: void gsl_histogram_reset (gsl_histogram * h) + + This function resets all the bins in the histogram ‘h’ to zero. + + +File: gsl-ref.info, Node: Searching histogram ranges, Next: Histogram Statistics, Prev: Updating and accessing histogram elements, Up: Histograms + +25.5 Searching histogram ranges +=============================== + +The following functions are used by the access and update routines to +locate the bin which corresponds to a given x coordinate. + + -- Function: int gsl_histogram_find (const gsl_histogram * h, double x, + size_t * i) + + This function finds and sets the index ‘i’ to the bin number which + covers the coordinate ‘x’ in the histogram ‘h’. The bin is located + using a binary search. The search includes an optimization for + histograms with uniform range, and will return the correct bin + immediately in this case. If ‘x’ is found in the range of the + histogram then the function sets the index ‘i’ and returns + ‘GSL_SUCCESS’. If ‘x’ lies outside the valid range of the + histogram then the function returns *note GSL_EDOM: 28. and the + error handler is invoked. + + +File: gsl-ref.info, Node: Histogram Statistics, Next: Histogram Operations, Prev: Searching histogram ranges, Up: Histograms + +25.6 Histogram Statistics +========================= + + -- Function: double gsl_histogram_max_val (const gsl_histogram * h) + + This function returns the maximum value contained in the histogram + bins. + + -- Function: size_t gsl_histogram_max_bin (const gsl_histogram * h) + + This function returns the index of the bin containing the maximum + value. In the case where several bins contain the same maximum + value the smallest index is returned. + + -- Function: double gsl_histogram_min_val (const gsl_histogram * h) + + This function returns the minimum value contained in the histogram + bins. + + -- Function: size_t gsl_histogram_min_bin (const gsl_histogram * h) + + This function returns the index of the bin containing the minimum + value. In the case where several bins contain the same maximum + value the smallest index is returned. + + -- Function: double gsl_histogram_mean (const gsl_histogram * h) + + This function returns the mean of the histogrammed variable, where + the histogram is regarded as a probability distribution. Negative + bin values are ignored for the purposes of this calculation. The + accuracy of the result is limited by the bin width. + + -- Function: double gsl_histogram_sigma (const gsl_histogram * h) + + This function returns the standard deviation of the histogrammed + variable, where the histogram is regarded as a probability + distribution. Negative bin values are ignored for the purposes of + this calculation. The accuracy of the result is limited by the bin + width. + + -- Function: double gsl_histogram_sum (const gsl_histogram * h) + + This function returns the sum of all bin values. Negative bin + values are included in the sum. + + +File: gsl-ref.info, Node: Histogram Operations, Next: Reading and writing histograms, Prev: Histogram Statistics, Up: Histograms + +25.7 Histogram Operations +========================= + + -- Function: int gsl_histogram_equal_bins_p (const gsl_histogram * h1, + const gsl_histogram * h2) + + This function returns 1 if the all of the individual bin ranges of + the two histograms are identical, and 0 otherwise. + + -- Function: int gsl_histogram_add (gsl_histogram * h1, const + gsl_histogram * h2) + + This function adds the contents of the bins in histogram ‘h2’ to + the corresponding bins of histogram ‘h1’, i.e. h'_1(i) = h_1(i) + + h_2(i). The two histograms must have identical bin ranges. + + -- Function: int gsl_histogram_sub (gsl_histogram * h1, const + gsl_histogram * h2) + + This function subtracts the contents of the bins in histogram ‘h2’ + from the corresponding bins of histogram ‘h1’, i.e. h'_1(i) = + h_1(i) - h_2(i). The two histograms must have identical bin + ranges. + + -- Function: int gsl_histogram_mul (gsl_histogram * h1, const + gsl_histogram * h2) + + This function multiplies the contents of the bins of histogram ‘h1’ + by the contents of the corresponding bins in histogram ‘h2’, i.e. + h'_1(i) = h_1(i) * h_2(i). The two histograms must have identical + bin ranges. + + -- Function: int gsl_histogram_div (gsl_histogram * h1, const + gsl_histogram * h2) + + This function divides the contents of the bins of histogram ‘h1’ by + the contents of the corresponding bins in histogram ‘h2’, i.e. + h'_1(i) = h_1(i) / h_2(i). The two histograms must have identical + bin ranges. + + -- Function: int gsl_histogram_scale (gsl_histogram * h, double scale) + + This function multiplies the contents of the bins of histogram ‘h’ + by the constant ‘scale’, i.e. + + h'_1(i) = h_1(i) * scale + + -- Function: int gsl_histogram_shift (gsl_histogram * h, double offset) + + This function shifts the contents of the bins of histogram ‘h’ by + the constant ‘offset’, i.e. + + h'_1(i) = h_1(i) + offset + + +File: gsl-ref.info, Node: Reading and writing histograms, Next: Resampling from histograms, Prev: Histogram Operations, Up: Histograms + +25.8 Reading and writing histograms +=================================== + +The library provides functions for reading and writing histograms to a +file as binary data or formatted text. + + -- Function: int gsl_histogram_fwrite (FILE * stream, const + gsl_histogram * h) + + This function writes the ranges and bins of the histogram ‘h’ to + the stream ‘stream’ in binary format. The return value is 0 for + success and ‘GSL_EFAILED’ if there was a problem writing to the + file. Since the data is written in the native binary format it may + not be portable between different architectures. + + -- Function: int gsl_histogram_fread (FILE * stream, gsl_histogram * h) + + This function reads into the histogram ‘h’ from the open stream + ‘stream’ in binary format. The histogram ‘h’ must be preallocated + with the correct size since the function uses the number of bins in + ‘h’ to determine how many bytes to read. The return value is 0 for + success and ‘GSL_EFAILED’ if there was a problem reading from the + file. The data is assumed to have been written in the native + binary format on the same architecture. + + -- Function: int gsl_histogram_fprintf (FILE * stream, const + gsl_histogram * h, const char * range_format, const char + * bin_format) + + This function writes the ranges and bins of the histogram ‘h’ + line-by-line to the stream ‘stream’ using the format specifiers + ‘range_format’ and ‘bin_format’. These should be one of the ‘%g’, + ‘%e’ or ‘%f’ formats for floating point numbers. The function + returns 0 for success and ‘GSL_EFAILED’ if there was a problem + writing to the file. The histogram output is formatted in three + columns, and the columns are separated by spaces, like this: + + range[0] range[1] bin[0] + range[1] range[2] bin[1] + range[2] range[3] bin[2] + .... + range[n-1] range[n] bin[n-1] + + The values of the ranges are formatted using ‘range_format’ and the + value of the bins are formatted using ‘bin_format’. Each line + contains the lower and upper limit of the range of the bins and the + value of the bin itself. Since the upper limit of one bin is the + lower limit of the next there is duplication of these values + between lines but this allows the histogram to be manipulated with + line-oriented tools. + + -- Function: int gsl_histogram_fscanf (FILE * stream, gsl_histogram + * h) + + This function reads formatted data from the stream ‘stream’ into + the histogram ‘h’. The data is assumed to be in the three-column + format used by *note gsl_histogram_fprintf(): 889. The histogram + ‘h’ must be preallocated with the correct length since the function + uses the size of ‘h’ to determine how many numbers to read. The + function returns 0 for success and ‘GSL_EFAILED’ if there was a + problem reading from the file. + + +File: gsl-ref.info, Node: Resampling from histograms, Next: The histogram probability distribution struct, Prev: Reading and writing histograms, Up: Histograms + +25.9 Resampling from histograms +=============================== + +A histogram made by counting events can be regarded as a measurement of +a probability distribution. Allowing for statistical error, the height +of each bin represents the probability of an event where the value of x +falls in the range of that bin. The probability distribution function +has the one-dimensional form p(x)dx where, + + p(x) = n_i / (N w_i) + +In this equation n_i is the number of events in the bin which contains +x, w_i is the width of the bin and N is the total number of events. The +distribution of events within each bin is assumed to be uniform. + + +File: gsl-ref.info, Node: The histogram probability distribution struct, Next: Example programs for histograms, Prev: Resampling from histograms, Up: Histograms + +25.10 The histogram probability distribution struct +=================================================== + +The probability distribution function for a histogram consists of a set +of `bins' which measure the probability of an event falling into a given +range of a continuous variable x. A probability distribution function +is defined by the following struct, which actually stores the cumulative +probability distribution function. This is the natural quantity for +generating samples via the inverse transform method, because there is a +one-to-one mapping between the cumulative probability distribution and +the range [0,1]. It can be shown that by taking a uniform random number +in this range and finding its corresponding coordinate in the cumulative +probability distribution we obtain samples with the desired probability +distribution. + + -- Type: gsl_histogram_pdf + + ‘size_t n’ This is the number of bins used to approximate the probability + distribution function. + + + ‘double * range’ The ranges of the bins are stored in an array of n + 1 elements pointed + to by ‘range’. + + + ‘double * sum’ The cumulative probability for the bins is stored in an array of ‘n’ + elements pointed to by ‘sum’. + + +The following functions allow you to create a *note gsl_histogram_pdf: +88d. struct which represents this probability distribution and generate +random samples from it. + + -- Function: gsl_histogram_pdf * gsl_histogram_pdf_alloc (size_t n) + + This function allocates memory for a probability distribution with + ‘n’ bins and returns a pointer to a newly initialized *note + gsl_histogram_pdf: 88d. struct. If insufficient memory is + available a null pointer is returned and the error handler is + invoked with an error code of *note GSL_ENOMEM: 2a. + + -- Function: int gsl_histogram_pdf_init (gsl_histogram_pdf * p, const + gsl_histogram * h) + + This function initializes the probability distribution ‘p’ with the + contents of the histogram ‘h’. If any of the bins of ‘h’ are + negative then the error handler is invoked with an error code of + *note GSL_EDOM: 28. because a probability distribution cannot + contain negative values. + + -- Function: void gsl_histogram_pdf_free (gsl_histogram_pdf * p) + + This function frees the probability distribution function ‘p’ and + all of the memory associated with it. + + -- Function: double gsl_histogram_pdf_sample (const gsl_histogram_pdf + * p, double r) + + This function uses ‘r’, a uniform random number between zero and + one, to compute a single random sample from the probability + distribution ‘p’. The algorithm used to compute the sample s is + given by the following formula, + + s = range[i] + delta * (range[i+1] - range[i]) + + where i is the index which satisfies sum[i] \le r < sum[i+1] and + delta is (r - sum[i])/(sum[i+1] - sum[i]). + + +File: gsl-ref.info, Node: Example programs for histograms, Next: Two dimensional histograms, Prev: The histogram probability distribution struct, Up: Histograms + +25.11 Example programs for histograms +===================================== + +The following program shows how to make a simple histogram of a column +of numerical data supplied on ‘stdin’. The program takes three +arguments, specifying the upper and lower bounds of the histogram and +the number of bins. It then reads numbers from ‘stdin’, one line at a +time, and adds them to the histogram. When there is no more data to +read it prints out the accumulated histogram using *note +gsl_histogram_fprintf(): 889. + + #include + #include + #include + + int + main (int argc, char **argv) + { + double a, b; + size_t n; + + if (argc != 4) + { + printf ("Usage: gsl-histogram xmin xmax n\n" + "Computes a histogram of the data " + "on stdin using n bins from xmin " + "to xmax\n"); + exit (0); + } + + a = atof (argv[1]); + b = atof (argv[2]); + n = atoi (argv[3]); + + { + double x; + gsl_histogram * h = gsl_histogram_alloc (n); + gsl_histogram_set_ranges_uniform (h, a, b); + + while (fscanf (stdin, "%lg", &x) == 1) + { + gsl_histogram_increment (h, x); + } + gsl_histogram_fprintf (stdout, h, "%g", "%g"); + gsl_histogram_free (h); + } + exit (0); + } + +Here is an example of the program in use. We generate 10000 random +samples from a Cauchy distribution with a width of 30 and histogram them +over the range -100 to 100, using 200 bins: + + $ gsl-randist 0 10000 cauchy 30 + | gsl-histogram -- -100 100 200 > histogram.dat + +Fig. %s shows the familiar shape of the Cauchy distribution and the +fluctuations caused by the finite sample size. + +[image src="histogram.png"] + +Figure: Histogram output from example program + + +File: gsl-ref.info, Node: Two dimensional histograms, Next: The 2D histogram struct, Prev: Example programs for histograms, Up: Histograms + +25.12 Two dimensional histograms +================================ + +A two dimensional histogram consists of a set of `bins' which count the +number of events falling in a given area of the (x,y) plane. The +simplest way to use a two dimensional histogram is to record +two-dimensional position information, n(x,y). Another possibility is to +form a `joint distribution' by recording related variables. For example +a detector might record both the position of an event (x) and the amount +of energy it deposited E. These could be histogrammed as the joint +distribution n(x,E). + + +File: gsl-ref.info, Node: The 2D histogram struct, Next: 2D Histogram allocation, Prev: Two dimensional histograms, Up: Histograms + +25.13 The 2D histogram struct +============================= + +Two dimensional histograms are defined by the following struct, + + -- Type: gsl_histogram2d + + ‘size_t nx, ny’ This is the number of histogram bins in the x and y directions. + + + ‘double * xrange’ The ranges of the bins in the x-direction are stored in an array of ‘nx + 1’ + elements pointed to by ‘xrange’. + + + ‘double * yrange’ The ranges of the bins in the y-direction are stored in an array of ‘ny + 1’ + elements pointed to by ‘yrange’. + + + ‘double * bin’ The counts for each bin are stored in an array pointed to by ‘bin’. The bins + are floating-point numbers, so you can increment them by non-integer values if + necessary. The array ‘bin’ stores the two dimensional array of bins in a + single block of memory according to the mapping ‘bin(i,j)’ = ‘bin[i * ny + + j]’. + + +The range for ‘bin(i,j)’ is given by ‘xrange[i]’ to ‘xrange[i+1]’ in the +x-direction and ‘yrange[j]’ to ‘yrange[j+1]’ in the y-direction. Each +bin is inclusive at the lower end and exclusive at the upper end. +Mathematically this means that the bins are defined by the following +inequality, + + bin(i,j) corresponds to xrange[i] <= x < xrange[i+1] + and yrange[j] <= y < yrange[j+1] + +Note that any samples which fall on the upper sides of the histogram are +excluded. If you want to include these values for the side bins you +will need to add an extra row or column to your histogram. + +The *note gsl_histogram2d: 896. struct and its associated functions are +defined in the header file ‘gsl_histogram2d.h’. + + +File: gsl-ref.info, Node: 2D Histogram allocation, Next: Copying 2D Histograms, Prev: The 2D histogram struct, Up: Histograms + +25.14 2D Histogram allocation +============================= + +The functions for allocating memory to a 2D histogram follow the style +of ‘malloc()’ and ‘free()’. In addition they also perform their own +error checking. If there is insufficient memory available to allocate a +histogram then the functions call the error handler (with an error +number of *note GSL_ENOMEM: 2a.) in addition to returning a null +pointer. Thus if you use the library error handler to abort your +program then it isn’t necessary to check every 2D histogram ‘alloc’. + + -- Function: gsl_histogram2d * gsl_histogram2d_alloc (size_t nx, + size_t ny) + + This function allocates memory for a two-dimensional histogram with + ‘nx’ bins in the x direction and ‘ny’ bins in the y direction. The + function returns a pointer to a newly created *note + gsl_histogram2d: 896. struct. If insufficient memory is available + a null pointer is returned and the error handler is invoked with an + error code of *note GSL_ENOMEM: 2a. The bins and ranges must be + initialized with one of the functions below before the histogram is + ready for use. + + -- Function: int gsl_histogram2d_set_ranges (gsl_histogram2d * h, const + double xrange[], size_t xsize, const double yrange[], + size_t ysize) + + This function sets the ranges of the existing histogram ‘h’ using + the arrays ‘xrange’ and ‘yrange’ of size ‘xsize’ and ‘ysize’ + respectively. The values of the histogram bins are reset to zero. + + -- Function: int gsl_histogram2d_set_ranges_uniform (gsl_histogram2d + * h, double xmin, double xmax, double ymin, double ymax) + + This function sets the ranges of the existing histogram ‘h’ to + cover the ranges ‘xmin’ to ‘xmax’ and ‘ymin’ to ‘ymax’ uniformly. + The values of the histogram bins are reset to zero. + + -- Function: void gsl_histogram2d_free (gsl_histogram2d * h) + + This function frees the 2D histogram ‘h’ and all of the memory + associated with it. + + +File: gsl-ref.info, Node: Copying 2D Histograms, Next: Updating and accessing 2D histogram elements, Prev: 2D Histogram allocation, Up: Histograms + +25.15 Copying 2D Histograms +=========================== + + -- Function: int gsl_histogram2d_memcpy (gsl_histogram2d * dest, const + gsl_histogram2d * src) + + This function copies the histogram ‘src’ into the pre-existing + histogram ‘dest’, making ‘dest’ into an exact copy of ‘src’. The + two histograms must be of the same size. + + -- Function: gsl_histogram2d * gsl_histogram2d_clone (const + gsl_histogram2d * src) + + This function returns a pointer to a newly created histogram which + is an exact copy of the histogram ‘src’. + + +File: gsl-ref.info, Node: Updating and accessing 2D histogram elements, Next: Searching 2D histogram ranges, Prev: Copying 2D Histograms, Up: Histograms + +25.16 Updating and accessing 2D histogram elements +================================================== + +You can access the bins of a two-dimensional histogram either by +specifying a pair of (x,y) coordinates or by using the bin indices (i,j) +directly. The functions for accessing the histogram through (x,y) +coordinates use binary searches in the x and y directions to identify +the bin which covers the appropriate range. + + -- Function: int gsl_histogram2d_increment (gsl_histogram2d * h, + double x, double y) + + This function updates the histogram ‘h’ by adding one (1.0) to the + bin whose x and y ranges contain the coordinates (‘x’, ‘y’). + + If the point (x,y) lies inside the valid ranges of the histogram + then the function returns zero to indicate success. If (x,y) lies + outside the limits of the histogram then the function returns *note + GSL_EDOM: 28, and none of the bins are modified. The error handler + is not called, since it is often necessary to compute histograms + for a small range of a larger dataset, ignoring any coordinates + outside the range of interest. + + -- Function: int gsl_histogram2d_accumulate (gsl_histogram2d * h, + double x, double y, double weight) + + This function is similar to *note gsl_histogram2d_increment(): 8a0. + but increases the value of the appropriate bin in the histogram ‘h’ + by the floating-point number ‘weight’. + + -- Function: double gsl_histogram2d_get (const gsl_histogram2d * h, + size_t i, size_t j) + + This function returns the contents of the (‘i’, ‘j’)-th bin of the + histogram ‘h’. If (‘i’, ‘j’) lies outside the valid range of + indices for the histogram then the error handler is called with an + error code of *note GSL_EDOM: 28. and the function returns 0. + + -- Function: int gsl_histogram2d_get_xrange (const gsl_histogram2d * h, + size_t i, double * xlower, double * xupper) + -- Function: int gsl_histogram2d_get_yrange (const gsl_histogram2d * h, + size_t j, double * ylower, double * yupper) + + These functions find the upper and lower range limits of the ‘i’-th + and ‘j’-th bins in the x and y directions of the histogram ‘h’. + The range limits are stored in ‘xlower’ and ‘xupper’ or ‘ylower’ + and ‘yupper’. The lower limits are inclusive (i.e. events with + these coordinates are included in the bin) and the upper limits are + exclusive (i.e. events with the value of the upper limit are not + included and fall in the neighboring higher bin, if it exists). + The functions return 0 to indicate success. If ‘i’ or ‘j’ lies + outside the valid range of indices for the histogram then the error + handler is called with an error code of *note GSL_EDOM: 28. + + -- Function: double gsl_histogram2d_xmax (const gsl_histogram2d * h) + -- Function: double gsl_histogram2d_xmin (const gsl_histogram2d * h) + -- Function: size_t gsl_histogram2d_nx (const gsl_histogram2d * h) + -- Function: double gsl_histogram2d_ymax (const gsl_histogram2d * h) + -- Function: double gsl_histogram2d_ymin (const gsl_histogram2d * h) + -- Function: size_t gsl_histogram2d_ny (const gsl_histogram2d * h) + + These functions return the maximum upper and minimum lower range + limits and the number of bins for the x and y directions of the + histogram ‘h’. They provide a way of determining these values + without accessing the *note gsl_histogram2d: 896. struct directly. + + -- Function: void gsl_histogram2d_reset (gsl_histogram2d * h) + + This function resets all the bins of the histogram ‘h’ to zero. + + +File: gsl-ref.info, Node: Searching 2D histogram ranges, Next: 2D Histogram Statistics, Prev: Updating and accessing 2D histogram elements, Up: Histograms + +25.17 Searching 2D histogram ranges +=================================== + +The following functions are used by the access and update routines to +locate the bin which corresponds to a given (x,y) coordinate. + + -- Function: int gsl_histogram2d_find (const gsl_histogram2d * h, + double x, double y, size_t * i, size_t * j) + + This function finds and sets the indices ‘i’ and ‘j’ to the bin + which covers the coordinates (‘x’, ‘y’). The bin is located using + a binary search. The search includes an optimization for + histograms with uniform ranges, and will return the correct bin + immediately in this case. If (x,y) is found then the function sets + the indices (‘i’, ‘j’) and returns ‘GSL_SUCCESS’. If (x,y) lies + outside the valid range of the histogram then the function returns + *note GSL_EDOM: 28. and the error handler is invoked. + + +File: gsl-ref.info, Node: 2D Histogram Statistics, Next: 2D Histogram Operations, Prev: Searching 2D histogram ranges, Up: Histograms + +25.18 2D Histogram Statistics +============================= + + -- Function: double gsl_histogram2d_max_val (const gsl_histogram2d * h) + + This function returns the maximum value contained in the histogram + bins. + + -- Function: void gsl_histogram2d_max_bin (const gsl_histogram2d * h, + size_t * i, size_t * j) + + This function finds the indices of the bin containing the maximum + value in the histogram ‘h’ and stores the result in (‘i’, ‘j’). In + the case where several bins contain the same maximum value the + first bin found is returned. + + -- Function: double gsl_histogram2d_min_val (const gsl_histogram2d * h) + + This function returns the minimum value contained in the histogram + bins. + + -- Function: void gsl_histogram2d_min_bin (const gsl_histogram2d * h, + size_t * i, size_t * j) + + This function finds the indices of the bin containing the minimum + value in the histogram ‘h’ and stores the result in (‘i’, ‘j’). In + the case where several bins contain the same maximum value the + first bin found is returned. + + -- Function: double gsl_histogram2d_xmean (const gsl_histogram2d * h) + + This function returns the mean of the histogrammed x variable, + where the histogram is regarded as a probability distribution. + Negative bin values are ignored for the purposes of this + calculation. + + -- Function: double gsl_histogram2d_ymean (const gsl_histogram2d * h) + + This function returns the mean of the histogrammed y variable, + where the histogram is regarded as a probability distribution. + Negative bin values are ignored for the purposes of this + calculation. + + -- Function: double gsl_histogram2d_xsigma (const gsl_histogram2d * h) + + This function returns the standard deviation of the histogrammed x + variable, where the histogram is regarded as a probability + distribution. Negative bin values are ignored for the purposes of + this calculation. + + -- Function: double gsl_histogram2d_ysigma (const gsl_histogram2d * h) + + This function returns the standard deviation of the histogrammed y + variable, where the histogram is regarded as a probability + distribution. Negative bin values are ignored for the purposes of + this calculation. + + -- Function: double gsl_histogram2d_cov (const gsl_histogram2d * h) + + This function returns the covariance of the histogrammed x and y + variables, where the histogram is regarded as a probability + distribution. Negative bin values are ignored for the purposes of + this calculation. + + -- Function: double gsl_histogram2d_sum (const gsl_histogram2d * h) + + This function returns the sum of all bin values. Negative bin + values are included in the sum. + + +File: gsl-ref.info, Node: 2D Histogram Operations, Next: Reading and writing 2D histograms, Prev: 2D Histogram Statistics, Up: Histograms + +25.19 2D Histogram Operations +============================= + + -- Function: int gsl_histogram2d_equal_bins_p (const gsl_histogram2d + * h1, const gsl_histogram2d * h2) + + This function returns 1 if all the individual bin ranges of the two + histograms are identical, and 0 otherwise. + + -- Function: int gsl_histogram2d_add (gsl_histogram2d * h1, const + gsl_histogram2d * h2) + + This function adds the contents of the bins in histogram ‘h2’ to + the corresponding bins of histogram ‘h1’, i.e. h'_1(i,j) = + h_1(i,j) + h_2(i,j). The two histograms must have identical bin + ranges. + + -- Function: int gsl_histogram2d_sub (gsl_histogram2d * h1, const + gsl_histogram2d * h2) + + This function subtracts the contents of the bins in histogram ‘h2’ + from the corresponding bins of histogram ‘h1’, i.e. h'_1(i,j) = + h_1(i,j) - h_2(i,j). The two histograms must have identical bin + ranges. + + -- Function: int gsl_histogram2d_mul (gsl_histogram2d * h1, const + gsl_histogram2d * h2) + + This function multiplies the contents of the bins of histogram ‘h1’ + by the contents of the corresponding bins in histogram ‘h2’, i.e. + h'_1(i,j) = h_1(i,j) * h_2(i,j). The two histograms must have + identical bin ranges. + + -- Function: int gsl_histogram2d_div (gsl_histogram2d * h1, const + gsl_histogram2d * h2) + + This function divides the contents of the bins of histogram ‘h1’ by + the contents of the corresponding bins in histogram ‘h2’, i.e. + h'_1(i,j) = h_1(i,j) / h_2(i,j). The two histograms must have + identical bin ranges. + + -- Function: int gsl_histogram2d_scale (gsl_histogram2d * h, + double scale) + + This function multiplies the contents of the bins of histogram ‘h’ + by the constant ‘scale’, i.e. + + h'_1(i,j) = h_1(i,j) scale + + -- Function: int gsl_histogram2d_shift (gsl_histogram2d * h, + double offset) + + This function shifts the contents of the bins of histogram ‘h’ by + the constant ‘offset’, i.e. + + h'_1(i,j) = h_1(i,j) + offset + + +File: gsl-ref.info, Node: Reading and writing 2D histograms, Next: Resampling from 2D histograms, Prev: 2D Histogram Operations, Up: Histograms + +25.20 Reading and writing 2D histograms +======================================= + +The library provides functions for reading and writing two dimensional +histograms to a file as binary data or formatted text. + + -- Function: int gsl_histogram2d_fwrite (FILE * stream, const + gsl_histogram2d * h) + + This function writes the ranges and bins of the histogram ‘h’ to + the stream ‘stream’ in binary format. The return value is 0 for + success and ‘GSL_EFAILED’ if there was a problem writing to the + file. Since the data is written in the native binary format it may + not be portable between different architectures. + + -- Function: int gsl_histogram2d_fread (FILE * stream, gsl_histogram2d + * h) + + This function reads into the histogram ‘h’ from the stream ‘stream’ + in binary format. The histogram ‘h’ must be preallocated with the + correct size since the function uses the number of x and y bins in + ‘h’ to determine how many bytes to read. The return value is 0 for + success and ‘GSL_EFAILED’ if there was a problem reading from the + file. The data is assumed to have been written in the native + binary format on the same architecture. + + -- Function: int gsl_histogram2d_fprintf (FILE * stream, const + gsl_histogram2d * h, const char * range_format, const char + * bin_format) + + This function writes the ranges and bins of the histogram ‘h’ + line-by-line to the stream ‘stream’ using the format specifiers + ‘range_format’ and ‘bin_format’. These should be one of the ‘%g’, + ‘%e’ or ‘%f’ formats for floating point numbers. The function + returns 0 for success and ‘GSL_EFAILED’ if there was a problem + writing to the file. The histogram output is formatted in five + columns, and the columns are separated by spaces, like this: + + xrange[0] xrange[1] yrange[0] yrange[1] bin(0,0) + xrange[0] xrange[1] yrange[1] yrange[2] bin(0,1) + xrange[0] xrange[1] yrange[2] yrange[3] bin(0,2) + .... + xrange[0] xrange[1] yrange[ny-1] yrange[ny] bin(0,ny-1) + + xrange[1] xrange[2] yrange[0] yrange[1] bin(1,0) + xrange[1] xrange[2] yrange[1] yrange[2] bin(1,1) + xrange[1] xrange[2] yrange[1] yrange[2] bin(1,2) + .... + xrange[1] xrange[2] yrange[ny-1] yrange[ny] bin(1,ny-1) + + .... + + xrange[nx-1] xrange[nx] yrange[0] yrange[1] bin(nx-1,0) + xrange[nx-1] xrange[nx] yrange[1] yrange[2] bin(nx-1,1) + xrange[nx-1] xrange[nx] yrange[1] yrange[2] bin(nx-1,2) + .... + xrange[nx-1] xrange[nx] yrange[ny-1] yrange[ny] bin(nx-1,ny-1) + + Each line contains the lower and upper limits of the bin and the + contents of the bin. Since the upper limits of the each bin are + the lower limits of the neighboring bins there is duplication of + these values but this allows the histogram to be manipulated with + line-oriented tools. + + -- Function: int gsl_histogram2d_fscanf (FILE * stream, gsl_histogram2d + * h) + + This function reads formatted data from the stream ‘stream’ into + the histogram ‘h’. The data is assumed to be in the five-column + format used by *note gsl_histogram2d_fprintf(): 8c4. The histogram + ‘h’ must be preallocated with the correct lengths since the + function uses the sizes of ‘h’ to determine how many numbers to + read. The function returns 0 for success and ‘GSL_EFAILED’ if + there was a problem reading from the file. + + +File: gsl-ref.info, Node: Resampling from 2D histograms, Next: Example programs for 2D histograms, Prev: Reading and writing 2D histograms, Up: Histograms + +25.21 Resampling from 2D histograms +=================================== + +As in the one-dimensional case, a two-dimensional histogram made by +counting events can be regarded as a measurement of a probability +distribution. Allowing for statistical error, the height of each bin +represents the probability of an event where (x,:math:‘y’) falls in the +range of that bin. For a two-dimensional histogram the probability +distribution takes the form p(x,y) dx dy where, + + p(x,y) = n_{ij} / (N A_{ij}) + +In this equation n_{ij} is the number of events in the bin which +contains (x,y), A_{ij} is the area of the bin and N is the total number +of events. The distribution of events within each bin is assumed to be +uniform. + + -- Type: gsl_histogram2d_pdf + + ‘size_t nx, ny’ This is the number of histogram bins used to approximate the probability + distribution function in the x and y directions. + + + ‘double * xrange’ The ranges of the bins in the x-direction are stored in an array of ‘nx + 1’ + elements pointed to by ‘xrange’. + + + ‘double * yrange’ The ranges of the bins in the y-direction are stored in an array of ‘ny + 1’ + pointed to by ‘yrange’. + + + ‘double * sum’ The cumulative probability for the bins is stored in an array of ‘nx’ * ‘ny’ + elements pointed to by ‘sum’. + + +The following functions allow you to create a *note gsl_histogram2d_pdf: +8c7. struct which represents a two dimensional probability distribution +and generate random samples from it. + + -- Function: gsl_histogram2d_pdf * gsl_histogram2d_pdf_alloc + (size_t nx, size_t ny) + + This function allocates memory for a two-dimensional probability + distribution of size ‘nx’-by-‘ny’ and returns a pointer to a newly + initialized *note gsl_histogram2d_pdf: 8c7. struct. If + insufficient memory is available a null pointer is returned and the + error handler is invoked with an error code of *note GSL_ENOMEM: + 2a. + + -- Function: int gsl_histogram2d_pdf_init (gsl_histogram2d_pdf * p, + const gsl_histogram2d * h) + + This function initializes the two-dimensional probability + distribution calculated ‘p’ from the histogram ‘h’. If any of the + bins of ‘h’ are negative then the error handler is invoked with an + error code of *note GSL_EDOM: 28. because a probability + distribution cannot contain negative values. + + -- Function: void gsl_histogram2d_pdf_free (gsl_histogram2d_pdf * p) + + This function frees the two-dimensional probability distribution + function ‘p’ and all of the memory associated with it. + + -- Function: int gsl_histogram2d_pdf_sample (const gsl_histogram2d_pdf + * p, double r1, double r2, double * x, double * y) + + This function uses two uniform random numbers between zero and one, + ‘r1’ and ‘r2’, to compute a single random sample from the + two-dimensional probability distribution ‘p’. + + +File: gsl-ref.info, Node: Example programs for 2D histograms, Prev: Resampling from 2D histograms, Up: Histograms + +25.22 Example programs for 2D histograms +======================================== + +This program demonstrates two features of two-dimensional histograms. +First a 10-by-10 two-dimensional histogram is created with x and y +running from 0 to 1. Then a few sample points are added to the +histogram, at (0.3,0.3) with a height of 1, at (0.8,0.1) with a height +of 5 and at (0.7,0.9) with a height of 0.5. This histogram with three +events is used to generate a random sample of 1000 simulated events, +which are printed out. + + #include + #include + #include + + int + main (void) + { + const gsl_rng_type * T; + gsl_rng * r; + + gsl_histogram2d * h = gsl_histogram2d_alloc (10, 10); + + gsl_histogram2d_set_ranges_uniform (h, + 0.0, 1.0, + 0.0, 1.0); + + gsl_histogram2d_accumulate (h, 0.3, 0.3, 1); + gsl_histogram2d_accumulate (h, 0.8, 0.1, 5); + gsl_histogram2d_accumulate (h, 0.7, 0.9, 0.5); + + gsl_rng_env_setup (); + + T = gsl_rng_default; + r = gsl_rng_alloc (T); + + { + int i; + gsl_histogram2d_pdf * p + = gsl_histogram2d_pdf_alloc (h->nx, h->ny); + + gsl_histogram2d_pdf_init (p, h); + + for (i = 0; i < 1000; i++) { + double x, y; + double u = gsl_rng_uniform (r); + double v = gsl_rng_uniform (r); + + gsl_histogram2d_pdf_sample (p, u, v, &x, &y); + + printf ("%g %g\n", x, y); + } + + gsl_histogram2d_pdf_free (p); + } + + gsl_histogram2d_free (h); + gsl_rng_free (r); + + return 0; + } + +The following plot shows the distribution of the simulated events. +Using a higher resolution grid we can see the original underlying +histogram and also the statistical fluctuations caused by the events +being uniformly distributed over the area of the original bins. + +[image src="histogram2d.png"] + +Figure: Distribution of simulated events from example program + + +File: gsl-ref.info, Node: N-tuples, Next: Monte Carlo Integration, Prev: Histograms, Up: Top + +26 N-tuples +*********** + +This chapter describes functions for creating and manipulating +`ntuples', sets of values associated with events. The ntuples are +stored in files. Their values can be extracted in any combination and +`booked' in a histogram using a selection function. + +The values to be stored are held in a user-defined data structure, and +an ntuple is created associating this data structure with a file. The +values are then written to the file (normally inside a loop) using the +ntuple functions described below. + +A histogram can be created from ntuple data by providing a selection +function and a value function. The selection function specifies whether +an event should be included in the subset to be analyzed or not. The +value function computes the entry to be added to the histogram for each +event. + +All the ntuple functions are defined in the header file ‘gsl_ntuple.h’. + +* Menu: + +* The ntuple struct:: +* Creating ntuples:: +* Opening an existing ntuple file:: +* Writing ntuples:: +* Reading ntuples:: +* Closing an ntuple file:: +* Histogramming ntuple values:: +* Examples: Examples<19>. +* References and Further Reading: References and Further Reading<18>. + + +File: gsl-ref.info, Node: The ntuple struct, Next: Creating ntuples, Up: N-tuples + +26.1 The ntuple struct +====================== + + -- Type: gsl_ntuple + + Ntuples are manipulated using the *note gsl_ntuple: 8d0. struct. + This struct contains information on the file where the ntuple data + is stored, a pointer to the current ntuple data row and the size of + the user-defined ntuple data struct: + + typedef struct + { + FILE * file; + void * ntuple_data; + size_t size; + } gsl_ntuple; + + +File: gsl-ref.info, Node: Creating ntuples, Next: Opening an existing ntuple file, Prev: The ntuple struct, Up: N-tuples + +26.2 Creating ntuples +===================== + + -- Function: gsl_ntuple * gsl_ntuple_create (char * filename, void + * ntuple_data, size_t size) + + This function creates a new write-only ntuple file ‘filename’ for + ntuples of size ‘size’ and returns a pointer to the newly created + ntuple struct. Any existing file with the same name is truncated + to zero length and overwritten. A pointer to memory for the + current ntuple row ‘ntuple_data’ must be supplied—this is used to + copy ntuples in and out of the file. + + +File: gsl-ref.info, Node: Opening an existing ntuple file, Next: Writing ntuples, Prev: Creating ntuples, Up: N-tuples + +26.3 Opening an existing ntuple file +==================================== + + -- Function: gsl_ntuple * gsl_ntuple_open (char * filename, void + * ntuple_data, size_t size) + + This function opens an existing ntuple file ‘filename’ for reading + and returns a pointer to a corresponding ntuple struct. The + ntuples in the file must have size ‘size’. A pointer to memory for + the current ntuple row ‘ntuple_data’ must be supplied—this is used + to copy ntuples in and out of the file. + + +File: gsl-ref.info, Node: Writing ntuples, Next: Reading ntuples, Prev: Opening an existing ntuple file, Up: N-tuples + +26.4 Writing ntuples +==================== + + -- Function: int gsl_ntuple_write (gsl_ntuple * ntuple) + + This function writes the current ntuple ‘ntuple->ntuple_data’ of + size ‘ntuple->size’ to the corresponding file. + + -- Function: int gsl_ntuple_bookdata (gsl_ntuple * ntuple) + + This function is a synonym for *note gsl_ntuple_write(): 8d6. + + +File: gsl-ref.info, Node: Reading ntuples, Next: Closing an ntuple file, Prev: Writing ntuples, Up: N-tuples + +26.5 Reading ntuples +==================== + + -- Function: int gsl_ntuple_read (gsl_ntuple * ntuple) + + This function reads the current row of the ntuple file for ‘ntuple’ + and stores the values in ‘ntuple->data’. + + +File: gsl-ref.info, Node: Closing an ntuple file, Next: Histogramming ntuple values, Prev: Reading ntuples, Up: N-tuples + +26.6 Closing an ntuple file +=========================== + + -- Function: int gsl_ntuple_close (gsl_ntuple * ntuple) + + This function closes the ntuple file ‘ntuple’ and frees its + associated allocated memory. + + +File: gsl-ref.info, Node: Histogramming ntuple values, Next: Examples<19>, Prev: Closing an ntuple file, Up: N-tuples + +26.7 Histogramming ntuple values +================================ + +Once an ntuple has been created its contents can be histogrammed in +various ways using the function *note gsl_ntuple_project(): 8dd. Two +user-defined functions must be provided, a function to select events and +a function to compute scalar values. The selection function and the +value function both accept the ntuple row as a first argument and other +parameters as a second argument. + + -- Type: gsl_ntuple_select_fn + + The `selection function' determines which ntuple rows are selected + for histogramming. It is defined by the following struct: + + typedef struct + { + int (* function) (void * ntuple_data, void * params); + void * params; + } gsl_ntuple_select_fn; + + The struct component ‘function’ should return a non-zero value for + each ntuple row that is to be included in the histogram. + + -- Type: gsl_ntuple_value_fn + + The `value function' computes scalar values for those ntuple rows + selected by the selection function: + + typedef struct + { + double (* function) (void * ntuple_data, void * params); + void * params; + } gsl_ntuple_value_fn; + + In this case the struct component ‘function’ should return the + value to be added to the histogram for the ntuple row. + + -- Function: int gsl_ntuple_project (gsl_histogram * h, gsl_ntuple + * ntuple, gsl_ntuple_value_fn * value_func, + gsl_ntuple_select_fn * select_func) + + This function updates the histogram ‘h’ from the ntuple ‘ntuple’ + using the functions ‘value_func’ and ‘select_func’. For each + ntuple row where the selection function ‘select_func’ is non-zero + the corresponding value of that row is computed using the function + ‘value_func’ and added to the histogram. Those ntuple rows where + ‘select_func’ returns zero are ignored. New entries are added to + the histogram, so subsequent calls can be used to accumulate + further data in the same histogram. + + +File: gsl-ref.info, Node: Examples<19>, Next: References and Further Reading<18>, Prev: Histogramming ntuple values, Up: N-tuples + +26.8 Examples +============= + +The following example programs demonstrate the use of ntuples in +managing a large dataset. The first program creates a set of 10,000 +simulated “events”, each with 3 associated values (x,y,z). These are +generated from a Gaussian distribution with unit variance, for +demonstration purposes, and written to the ntuple file ‘test.dat’. + + #include + #include + #include + + struct data + { + double x; + double y; + double z; + }; + + int + main (void) + { + const gsl_rng_type * T; + gsl_rng * r; + + struct data ntuple_row; + int i; + + gsl_ntuple *ntuple + = gsl_ntuple_create ("test.dat", &ntuple_row, + sizeof (ntuple_row)); + + gsl_rng_env_setup (); + + T = gsl_rng_default; + r = gsl_rng_alloc (T); + + for (i = 0; i < 10000; i++) + { + ntuple_row.x = gsl_ran_ugaussian (r); + ntuple_row.y = gsl_ran_ugaussian (r); + ntuple_row.z = gsl_ran_ugaussian (r); + + gsl_ntuple_write (ntuple); + } + + gsl_ntuple_close (ntuple); + gsl_rng_free (r); + + return 0; + } + +The next program analyses the ntuple data in the file ‘test.dat’. The +analysis procedure is to compute the squared-magnitude of each event, +E^2=x^2+y^2+z^2, and select only those which exceed a lower limit of +1.5. The selected events are then histogrammed using their E^2 values. + + #include + #include + #include + + struct data + { + double x; + double y; + double z; + }; + + int sel_func (void *ntuple_data, void *params); + double val_func (void *ntuple_data, void *params); + + int + main (void) + { + struct data ntuple_row; + + gsl_ntuple *ntuple + = gsl_ntuple_open ("test.dat", &ntuple_row, + sizeof (ntuple_row)); + double lower = 1.5; + + gsl_ntuple_select_fn S; + gsl_ntuple_value_fn V; + + gsl_histogram *h = gsl_histogram_alloc (100); + gsl_histogram_set_ranges_uniform(h, 0.0, 10.0); + + S.function = &sel_func; + S.params = &lower; + + V.function = &val_func; + V.params = 0; + + gsl_ntuple_project (h, ntuple, &V, &S); + gsl_histogram_fprintf (stdout, h, "%f", "%f"); + gsl_histogram_free (h); + gsl_ntuple_close (ntuple); + + return 0; + } + + int + sel_func (void *ntuple_data, void *params) + { + struct data * data = (struct data *) ntuple_data; + double x, y, z, E2, scale; + scale = *(double *) params; + + x = data->x; + y = data->y; + z = data->z; + + E2 = x * x + y * y + z * z; + + return E2 > scale; + } + + double + val_func (void *ntuple_data, void *params) + { + (void)(params); /* avoid unused parameter warning */ + struct data * data = (struct data *) ntuple_data; + double x, y, z; + + x = data->x; + y = data->y; + z = data->z; + + return x * x + y * y + z * z; + } + +Fig. %s shows the distribution of the selected events. Note the +cut-off at the lower bound. + +[image src="ntuple.png"] + +Figure: Distribution of selected events + + +File: gsl-ref.info, Node: References and Further Reading<18>, Prev: Examples<19>, Up: N-tuples + +26.9 References and Further Reading +=================================== + +Further information on the use of ntuples can be found in the +documentation for the CERN packages PAW and HBOOK (available online). + + +File: gsl-ref.info, Node: Monte Carlo Integration, Next: Simulated Annealing, Prev: N-tuples, Up: Top + +27 Monte Carlo Integration +************************** + +This chapter describes routines for multidimensional Monte Carlo +integration. These include the traditional Monte Carlo method and +adaptive algorithms such as VEGAS and MISER which use importance +sampling and stratified sampling techniques. Each algorithm computes an +estimate of a multidimensional definite integral of the form, + + I = \int_{x_l}^{x_u} dx \int_{y_l}^{y_u} dy ... f(x, y, ...) + +over a hypercubic region ((x_l,x_u), (y_l,y_u), ...) using a fixed +number of function calls. The routines also provide a statistical +estimate of the error on the result. This error estimate should be +taken as a guide rather than as a strict error bound—random sampling of +the region may not uncover all the important features of the function, +resulting in an underestimate of the error. + +The functions are defined in separate header files for each routine, +‘gsl_monte_plain.h’, ‘gsl_monte_miser.h’ and ‘gsl_monte_vegas.h’. + +* Menu: + +* Interface:: +* PLAIN Monte Carlo:: +* MISER:: +* VEGAS:: +* Examples: Examples<20>. +* References and Further Reading: References and Further Reading<19>. + + +File: gsl-ref.info, Node: Interface, Next: PLAIN Monte Carlo, Up: Monte Carlo Integration + +27.1 Interface +============== + +All of the Monte Carlo integration routines use the same general form of +interface. There is an allocator to allocate memory for control +variables and workspace, a routine to initialize those control +variables, the integrator itself, and a function to free the space when +done. + +Each integration function requires a random number generator to be +supplied, and returns an estimate of the integral and its standard +deviation. The accuracy of the result is determined by the number of +function calls specified by the user. If a known level of accuracy is +required this can be achieved by calling the integrator several times +and averaging the individual results until the desired accuracy is +obtained. + +Random sample points used within the Monte Carlo routines are always +chosen strictly within the integration region, so that endpoint +singularities are automatically avoided. + +The function to be integrated has its own datatype, defined in the +header file ‘gsl_monte.h’. + + -- Type: gsl_monte_function + + This data type defines a general function with parameters for Monte + Carlo integration. + + ‘double (* f) (double * x, size_t dim, void * params)’ this function should return the value + f(x,params) for the argument ‘x’ and + parameters ‘params’, where ‘x’ is an array + of size ‘dim’ giving the coordinates of the + point where the function is to be evaluated. + + + ‘size_t dim’ the number of dimensions for ‘x’. + + + ‘void * params’ a pointer to the parameters of the function. + + +Here is an example for a quadratic function in two dimensions, + + f(x,y) = a x^2 + b x y + c y^2 + +with a = 3, b = 2, c = 1. The following code defines a *note +gsl_monte_function: 8e6. ‘F’ which you could pass to an integrator: + + struct my_f_params { double a; double b; double c; }; + + double + my_f (double x[], size_t dim, void * p) { + struct my_f_params * fp = (struct my_f_params *)p; + + if (dim != 2) + { + fprintf (stderr, "error: dim != 2"); + abort (); + } + + return fp->a * x[0] * x[0] + + fp->b * x[0] * x[1] + + fp->c * x[1] * x[1]; + } + + gsl_monte_function F; + struct my_f_params params = { 3.0, 2.0, 1.0 }; + + F.f = &my_f; + F.dim = 2; + F.params = ¶ms; + +The function f(x) can be evaluated using the following macro: + + #define GSL_MONTE_FN_EVAL(F,x) + (*((F)->f))(x,(F)->dim,(F)->params) + + +File: gsl-ref.info, Node: PLAIN Monte Carlo, Next: MISER, Prev: Interface, Up: Monte Carlo Integration + +27.2 PLAIN Monte Carlo +====================== + +The plain Monte Carlo algorithm samples points randomly from the +integration region to estimate the integral and its error. Using this +algorithm the estimate of the integral E(f; N) for N randomly +distributed points x_i is given by, + + E(f; N) = = V = (V / N) \sum_i^N f(x_i) + +where V is the volume of the integration region. The error on this +estimate \sigma(E;N) is calculated from the estimated variance of the +mean, + + \sigma^2 (E; N) = (V^2 / N^2) \sum_i^N (f(x_i) - )^2. + +For large N this variance decreases asymptotically as \Var(f)/N, where +\Var(f) is the true variance of the function over the integration +region. The error estimate itself should decrease as +\sigma(f)/\sqrt{N}. The familiar law of errors decreasing as 1/\sqrt{N} +applies—to reduce the error by a factor of 10 requires a 100-fold +increase in the number of sample points. + +The functions described in this section are declared in the header file +‘gsl_monte_plain.h’. + + -- Type: gsl_monte_plain_state + + This is a workspace for plain Monte Carlo integration + + -- Function: gsl_monte_plain_state * gsl_monte_plain_alloc (size_t dim) + + This function allocates and initializes a workspace for Monte Carlo + integration in ‘dim’ dimensions. + + -- Function: int gsl_monte_plain_init (gsl_monte_plain_state* s) + + This function initializes a previously allocated integration state. + This allows an existing workspace to be reused for different + integrations. + + -- Function: int gsl_monte_plain_integrate (gsl_monte_function * f, + const double xl[], const double xu[], size_t dim, + size_t calls, gsl_rng * r, gsl_monte_plain_state * s, double + * result, double * abserr) + + This routines uses the plain Monte Carlo algorithm to integrate the + function ‘f’ over the ‘dim’-dimensional hypercubic region defined + by the lower and upper limits in the arrays ‘xl’ and ‘xu’, each of + size ‘dim’. The integration uses a fixed number of function calls + ‘calls’, and obtains random sampling points using the random number + generator ‘r’. A previously allocated workspace ‘s’ must be + supplied. The result of the integration is returned in ‘result’, + with an estimated absolute error ‘abserr’. + + -- Function: void gsl_monte_plain_free (gsl_monte_plain_state * s) + + This function frees the memory associated with the integrator state + ‘s’. + + +File: gsl-ref.info, Node: MISER, Next: VEGAS, Prev: PLAIN Monte Carlo, Up: Monte Carlo Integration + +27.3 MISER +========== + +The MISER algorithm of Press and Farrar is based on recursive stratified +sampling. This technique aims to reduce the overall integration error +by concentrating integration points in the regions of highest variance. + +The idea of stratified sampling begins with the observation that for two +disjoint regions a and b with Monte Carlo estimates of the integral +E_a(f) and E_b(f) and variances \sigma_a^2(f) and \sigma_b^2(f), the +variance \Var(f) of the combined estimate E(f) = {1\over 2} (E_a(f) + +E_b(f)) is given by, + + \Var(f) = (\sigma_a^2(f) / 4 N_a) + (\sigma_b^2(f) / 4 N_b). + +It can be shown that this variance is minimized by distributing the +points such that, + + N_a / (N_a + N_b) = \sigma_a / (\sigma_a + \sigma_b). + +Hence the smallest error estimate is obtained by allocating sample +points in proportion to the standard deviation of the function in each +sub-region. + +The MISER algorithm proceeds by bisecting the integration region along +one coordinate axis to give two sub-regions at each step. The direction +is chosen by examining all d possible bisections and selecting the one +which will minimize the combined variance of the two sub-regions. The +variance in the sub-regions is estimated by sampling with a fraction of +the total number of points available to the current step. The same +procedure is then repeated recursively for each of the two half-spaces +from the best bisection. The remaining sample points are allocated to +the sub-regions using the formula for N_a and N_b. This recursive +allocation of integration points continues down to a user-specified +depth where each sub-region is integrated using a plain Monte Carlo +estimate. These individual values and their error estimates are then +combined upwards to give an overall result and an estimate of its error. + +The functions described in this section are declared in the header file +‘gsl_monte_miser.h’. + + -- Type: gsl_monte_miser_state + + This workspace is used for MISER Monte Carlo integration + + -- Function: gsl_monte_miser_state * gsl_monte_miser_alloc (size_t dim) + + This function allocates and initializes a workspace for Monte Carlo + integration in ‘dim’ dimensions. The workspace is used to maintain + the state of the integration. + + -- Function: int gsl_monte_miser_init (gsl_monte_miser_state* s) + + This function initializes a previously allocated integration state. + This allows an existing workspace to be reused for different + integrations. + + -- Function: int gsl_monte_miser_integrate (gsl_monte_function * f, + const double xl[], const double xu[], size_t dim, + size_t calls, gsl_rng * r, gsl_monte_miser_state * s, double + * result, double * abserr) + + This routines uses the MISER Monte Carlo algorithm to integrate the + function ‘f’ over the ‘dim’-dimensional hypercubic region defined + by the lower and upper limits in the arrays ‘xl’ and ‘xu’, each of + size ‘dim’. The integration uses a fixed number of function calls + ‘calls’, and obtains random sampling points using the random number + generator ‘r’. A previously allocated workspace ‘s’ must be + supplied. The result of the integration is returned in ‘result’, + with an estimated absolute error ‘abserr’. + + -- Function: void gsl_monte_miser_free (gsl_monte_miser_state * s) + + This function frees the memory associated with the integrator state + ‘s’. + +The MISER algorithm has several configurable parameters which can be +changed using the following two functions (1). + + -- Function: void gsl_monte_miser_params_get (const + gsl_monte_miser_state * s, gsl_monte_miser_params * params) + + This function copies the parameters of the integrator state into + the user-supplied ‘params’ structure. + + -- Function: void gsl_monte_miser_params_set (gsl_monte_miser_state + * s, const gsl_monte_miser_params * params) + + This function sets the integrator parameters based on values + provided in the ‘params’ structure. + +Typically the values of the parameters are first read using *note +gsl_monte_miser_params_get(): 8f3, the necessary changes are made to the +fields of the ‘params’ structure, and the values are copied back into +the integrator state using *note gsl_monte_miser_params_set(): 8f4. The +functions use the *note gsl_monte_miser_params: 8f5. structure which +contains the following fields: + + -- Type: gsl_monte_miser_params + + -- Variable: double estimate_frac + + This parameter specifies the fraction of the currently + available number of function calls which are allocated to + estimating the variance at each recursive step. The default + value is 0.1. + + -- Variable: size_t min_calls + + This parameter specifies the minimum number of function calls + required for each estimate of the variance. If the number of + function calls allocated to the estimate using *note + estimate_frac: 8f6. falls below *note min_calls: 8f7. then + *note min_calls: 8f7. are used instead. This ensures that + each estimate maintains a reasonable level of accuracy. The + default value of *note min_calls: 8f7. is ‘16 * dim’. + + -- Variable: size_t min_calls_per_bisection + + This parameter specifies the minimum number of function calls + required to proceed with a bisection step. When a recursive + step has fewer calls available than *note + min_calls_per_bisection: 8f8. it performs a plain Monte Carlo + estimate of the current sub-region and terminates its branch + of the recursion. The default value of this parameter is ‘32 + * min_calls’. + + -- Variable: double alpha + + This parameter controls how the estimated variances for the + two sub-regions of a bisection are combined when allocating + points. With recursive sampling the overall variance should + scale better than 1/N, since the values from the sub-regions + will be obtained using a procedure which explicitly minimizes + their variance. To accommodate this behavior the MISER + algorithm allows the total variance to depend on a scaling + parameter \alpha, + + \Var(f) = {\sigma_a \over N_a^\alpha} + {\sigma_b \over N_b^\alpha}. + + The authors of the original paper describing MISER recommend + the value \alpha = 2 as a good choice, obtained from numerical + experiments, and this is used as the default value in this + implementation. + + -- Variable: double dither + + This parameter introduces a random fractional variation of + size *note dither: 8f9. into each bisection, which can be used + to break the symmetry of integrands which are concentrated + near the exact center of the hypercubic integration region. + The default value of dither is zero, so no variation is + introduced. If needed, a typical value of *note dither: 8f9. + is 0.1. + + ---------- Footnotes ---------- + + (1) The previous method of accessing these fields directly through +the *note gsl_monte_miser_state: 8ee. struct is now deprecated. + + +File: gsl-ref.info, Node: VEGAS, Next: Examples<20>, Prev: MISER, Up: Monte Carlo Integration + +27.4 VEGAS +========== + +The VEGAS algorithm of Lepage is based on importance sampling. It +samples points from the probability distribution described by the +function |f|, so that the points are concentrated in the regions that +make the largest contribution to the integral. + +In general, if the Monte Carlo integral of f is sampled with points +distributed according to a probability distribution described by the +function g, we obtain an estimate E_g(f; N), + + E_g(f; N) = E(f/g; N) + +with a corresponding variance, + + \Var_g(f; N) = \Var(f/g; N) + +If the probability distribution is chosen as g = |f|/I(|f|) then it can +be shown that the variance V_g(f; N) vanishes, and the error in the +estimate will be zero. In practice it is not possible to sample from +the exact distribution g for an arbitrary function, so importance +sampling algorithms aim to produce efficient approximations to the +desired distribution. + +The VEGAS algorithm approximates the exact distribution by making a +number of passes over the integration region while histogramming the +function f. Each histogram is used to define a sampling distribution +for the next pass. Asymptotically this procedure converges to the +desired distribution. In order to avoid the number of histogram bins +growing like K^d the probability distribution is approximated by a +separable function: g(x_1, x_2, \ldots) = g_1(x_1) g_2(x_2) \ldots so +that the number of bins required is only Kd. This is equivalent to +locating the peaks of the function from the projections of the integrand +onto the coordinate axes. The efficiency of VEGAS depends on the +validity of this assumption. It is most efficient when the peaks of the +integrand are well-localized. If an integrand can be rewritten in a +form which is approximately separable this will increase the efficiency +of integration with VEGAS. + +VEGAS incorporates a number of additional features, and combines both +stratified sampling and importance sampling. The integration region is +divided into a number of “boxes”, with each box getting a fixed number +of points (the goal is 2). Each box can then have a fractional number +of bins, but if the ratio of bins-per-box is less than two, Vegas +switches to a kind variance reduction (rather than importance sampling). + + -- Type: gsl_monte_vegas_state + + This workspace is used for VEGAS Monte Carlo integration + + -- Function: gsl_monte_vegas_state * gsl_monte_vegas_alloc (size_t dim) + + This function allocates and initializes a workspace for Monte Carlo + integration in ‘dim’ dimensions. The workspace is used to maintain + the state of the integration. + + -- Function: int gsl_monte_vegas_init (gsl_monte_vegas_state* s) + + This function initializes a previously allocated integration state. + This allows an existing workspace to be reused for different + integrations. + + -- Function: int gsl_monte_vegas_integrate (gsl_monte_function * f, + double xl[], double xu[], size_t dim, size_t calls, gsl_rng + * r, gsl_monte_vegas_state * s, double * result, double + * abserr) + + This routines uses the VEGAS Monte Carlo algorithm to integrate the + function ‘f’ over the ‘dim’-dimensional hypercubic region defined + by the lower and upper limits in the arrays ‘xl’ and ‘xu’, each of + size ‘dim’. The integration uses a fixed number of function calls + ‘calls’, and obtains random sampling points using the random number + generator ‘r’. A previously allocated workspace ‘s’ must be + supplied. The result of the integration is returned in ‘result’, + with an estimated absolute error ‘abserr’. The result and its + error estimate are based on a weighted average of independent + samples. The chi-squared per degree of freedom for the weighted + average is returned via the state struct component, ‘s->chisq’, and + must be consistent with 1 for the weighted average to be reliable. + + -- Function: void gsl_monte_vegas_free (gsl_monte_vegas_state * s) + + This function frees the memory associated with the integrator state + ‘s’. + +The VEGAS algorithm computes a number of independent estimates of the +integral internally, according to the ‘iterations’ parameter described +below, and returns their weighted average. Random sampling of the +integrand can occasionally produce an estimate where the error is zero, +particularly if the function is constant in some regions. An estimate +with zero error causes the weighted average to break down and must be +handled separately. In the original Fortran implementations of VEGAS +the error estimate is made non-zero by substituting a small value +(typically ‘1e-30’). The implementation in GSL differs from this and +avoids the use of an arbitrary constant—it either assigns the value a +weight which is the average weight of the preceding estimates or +discards it according to the following procedure, + + * current estimate has zero error, weighted average has finite error + + The current estimate is assigned a weight which is the average + weight of the preceding estimates. + + * current estimate has finite error, previous estimates had zero + error + + The previous estimates are discarded and the weighted averaging + procedure begins with the current estimate. + + * current estimate has zero error, previous estimates had zero error + + The estimates are averaged using the arithmetic mean, but no error + is computed. + +The convergence of the algorithm can be tested using the overall +chi-squared value of the results, which is available from the following +function: + + -- Function: double gsl_monte_vegas_chisq (const gsl_monte_vegas_state + * s) + + This function returns the chi-squared per degree of freedom for the + weighted estimate of the integral. The returned value should be + close to 1. A value which differs significantly from 1 indicates + that the values from different iterations are inconsistent. In + this case the weighted error will be under-estimated, and further + iterations of the algorithm are needed to obtain reliable results. + + -- Function: void gsl_monte_vegas_runval (const gsl_monte_vegas_state + * s, double * result, double * sigma) + + This function returns the raw (unaveraged) values of the integral + ‘result’ and its error ‘sigma’ from the most recent iteration of + the algorithm. + +The VEGAS algorithm is highly configurable. Several parameters can be +changed using the following two functions. + + -- Function: void gsl_monte_vegas_params_get (const + gsl_monte_vegas_state * s, gsl_monte_vegas_params * params) + + This function copies the parameters of the integrator state into + the user-supplied ‘params’ structure. + + -- Function: void gsl_monte_vegas_params_set (gsl_monte_vegas_state + * s, const gsl_monte_vegas_params * params) + + This function sets the integrator parameters based on values + provided in the ‘params’ structure. + +Typically the values of the parameters are first read using *note +gsl_monte_vegas_params_get(): 902, the necessary changes are made to the +fields of the ‘params’ structure, and the values are copied back into +the integrator state using *note gsl_monte_vegas_params_set(): 903. The +functions use the *note gsl_monte_vegas_params: 904. structure which +contains the following fields: + + -- Type: gsl_monte_vegas_params + + -- Variable: double alpha + + The parameter *note alpha: 497. controls the stiffness of the + rebinning algorithm. It is typically set between one and two. + A value of zero prevents rebinning of the grid. The default + value is 1.5. + + -- Variable: size_t iterations + + The number of iterations to perform for each call to the + routine. The default value is 5 iterations. + + -- Variable: int stage + + Setting this determines the `stage' of the calculation. + Normally, ‘stage = 0’ which begins with a new uniform grid and + empty weighted average. Calling VEGAS with ‘stage = 1’ + retains the grid from the previous run but discards the + weighted average, so that one can “tune” the grid using a + relatively small number of points and then do a large run with + ‘stage = 1’ on the optimized grid. Setting ‘stage = 2’ keeps + the grid and the weighted average from the previous run, but + may increase (or decrease) the number of histogram bins in the + grid depending on the number of calls available. Choosing + ‘stage = 3’ enters at the main loop, so that nothing is + changed, and is equivalent to performing additional iterations + in a previous call. + + -- Variable: int mode + + The possible choices are ‘GSL_VEGAS_MODE_IMPORTANCE’, + ‘GSL_VEGAS_MODE_STRATIFIED’, ‘GSL_VEGAS_MODE_IMPORTANCE_ONLY’. + This determines whether VEGAS will use importance sampling or + stratified sampling, or whether it can pick on its own. In + low dimensions VEGAS uses strict stratified sampling (more + precisely, stratified sampling is chosen if there are fewer + than 2 bins per box). + + -- Variable: int verbose + -- Variable: FILE * ostream + + These parameters set the level of information printed by + VEGAS. All information is written to the stream *note ostream: + 908. The default setting of *note verbose: 907. is ‘-1’, + which turns off all output. A *note verbose: 907. value of + ‘0’ prints summary information about the weighted average and + final result, while a value of ‘1’ also displays the grid + coordinates. A value of ‘2’ prints information from the + rebinning procedure for each iteration. + +The above fields and the ‘chisq’ value can also be accessed directly in +the *note gsl_monte_vegas_state: 8fb. but such use is deprecated. + + +File: gsl-ref.info, Node: Examples<20>, Next: References and Further Reading<19>, Prev: VEGAS, Up: Monte Carlo Integration + +27.5 Examples +============= + +The example program below uses the Monte Carlo routines to estimate the +value of the following 3-dimensional integral from the theory of random +walks, + + I = \int_{-pi}^{+pi} {dk_x/(2 pi)} + \int_{-pi}^{+pi} {dk_y/(2 pi)} + \int_{-pi}^{+pi} {dk_z/(2 pi)} + 1 / (1 - cos(k_x)cos(k_y)cos(k_z)). + +The analytic value of this integral can be shown to be I = +\Gamma(1/4)^4/(4 \pi^3) = 1.393203929685676859.... The integral gives +the mean time spent at the origin by a random walk on a body-centered +cubic lattice in three dimensions. + +For simplicity we will compute the integral over the region (0,0,0) to +(\pi,\pi,\pi) and multiply by 8 to obtain the full result. The integral +is slowly varying in the middle of the region but has integrable +singularities at the corners (0,0,0), (0,\pi,\pi), (\pi,0,\pi) and +(\pi,\pi,0). The Monte Carlo routines only select points which are +strictly within the integration region and so no special measures are +needed to avoid these singularities. + + #include + #include + #include + #include + #include + #include + + /* Computation of the integral, + + I = int (dx dy dz)/(2pi)^3 1/(1-cos(x)cos(y)cos(z)) + + over (-pi,-pi,-pi) to (+pi, +pi, +pi). The exact answer + is Gamma(1/4)^4/(4 pi^3). This example is taken from + C.Itzykson, J.M.Drouffe, "Statistical Field Theory - + Volume 1", Section 1.1, p21, which cites the original + paper M.L.Glasser, I.J.Zucker, Proc.Natl.Acad.Sci.USA 74 + 1800 (1977) */ + + /* For simplicity we compute the integral over the region + (0,0,0) -> (pi,pi,pi) and multiply by 8 */ + + double exact = 1.3932039296856768591842462603255; + + double + g (double *k, size_t dim, void *params) + { + (void)(dim); /* avoid unused parameter warnings */ + (void)(params); + double A = 1.0 / (M_PI * M_PI * M_PI); + return A / (1.0 - cos (k[0]) * cos (k[1]) * cos (k[2])); + } + + void + display_results (char *title, double result, double error) + { + printf ("%s ==================\n", title); + printf ("result = % .6f\n", result); + printf ("sigma = % .6f\n", error); + printf ("exact = % .6f\n", exact); + printf ("error = % .6f = %.2g sigma\n", result - exact, + fabs (result - exact) / error); + } + + int + main (void) + { + double res, err; + + double xl[3] = { 0, 0, 0 }; + double xu[3] = { M_PI, M_PI, M_PI }; + + const gsl_rng_type *T; + gsl_rng *r; + + gsl_monte_function G = { &g, 3, 0 }; + + size_t calls = 500000; + + gsl_rng_env_setup (); + + T = gsl_rng_default; + r = gsl_rng_alloc (T); + + { + gsl_monte_plain_state *s = gsl_monte_plain_alloc (3); + gsl_monte_plain_integrate (&G, xl, xu, 3, calls, r, s, + &res, &err); + gsl_monte_plain_free (s); + + display_results ("plain", res, err); + } + + { + gsl_monte_miser_state *s = gsl_monte_miser_alloc (3); + gsl_monte_miser_integrate (&G, xl, xu, 3, calls, r, s, + &res, &err); + gsl_monte_miser_free (s); + + display_results ("miser", res, err); + } + + { + gsl_monte_vegas_state *s = gsl_monte_vegas_alloc (3); + + gsl_monte_vegas_integrate (&G, xl, xu, 3, 10000, r, s, + &res, &err); + display_results ("vegas warm-up", res, err); + + printf ("converging...\n"); + + do + { + gsl_monte_vegas_integrate (&G, xl, xu, 3, calls/5, r, s, + &res, &err); + printf ("result = % .6f sigma = % .6f " + "chisq/dof = %.1f\n", res, err, gsl_monte_vegas_chisq (s)); + } + while (fabs (gsl_monte_vegas_chisq (s) - 1.0) > 0.5); + + display_results ("vegas final", res, err); + + gsl_monte_vegas_free (s); + } + + gsl_rng_free (r); + + return 0; + } + +With 500,000 function calls the plain Monte Carlo algorithm achieves a +fractional error of 1%. The estimated error ‘sigma’ is roughly +consistent with the actual error–the computed result differs from the +true result by about 1.4 standard deviations: + + plain ================== + result = 1.412209 + sigma = 0.013436 + exact = 1.393204 + error = 0.019005 = 1.4 sigma + +The MISER algorithm reduces the error by a factor of four, and also +correctly estimates the error: + + miser ================== + result = 1.391322 + sigma = 0.003461 + exact = 1.393204 + error = -0.001882 = 0.54 sigma + +In the case of the VEGAS algorithm the program uses an initial warm-up +run of 10,000 function calls to prepare, or “warm up”, the grid. This +is followed by a main run with five iterations of 100,000 function +calls. The chi-squared per degree of freedom for the five iterations +are checked for consistency with 1, and the run is repeated if the +results have not converged. In this case the estimates are consistent +on the first pass: + + vegas warm-up ================== + result = 1.392673 + sigma = 0.003410 + exact = 1.393204 + error = -0.000531 = 0.16 sigma + converging... + result = 1.393281 sigma = 0.000362 chisq/dof = 1.5 + vegas final ================== + result = 1.393281 + sigma = 0.000362 + exact = 1.393204 + error = 0.000077 = 0.21 sigma + +If the value of ‘chisq’ had differed significantly from 1 it would +indicate inconsistent results, with a correspondingly underestimated +error. The final estimate from VEGAS (using a similar number of +function calls) is significantly more accurate than the other two +algorithms. + + +File: gsl-ref.info, Node: References and Further Reading<19>, Prev: Examples<20>, Up: Monte Carlo Integration + +27.6 References and Further Reading +=================================== + +The MISER algorithm is described in the following article by Press and +Farrar, + + * W.H. Press, G.R. Farrar, `Recursive Stratified Sampling for + Multidimensional Monte Carlo Integration', Computers in Physics, v4 + (1990), pp190–195. + +The VEGAS algorithm is described in the following papers, + + * G.P. Lepage, `A New Algorithm for Adaptive Multidimensional + Integration', Journal of Computational Physics 27, 192–203, (1978) + + * G.P. Lepage, `VEGAS: An Adaptive Multi-dimensional Integration + Program', Cornell preprint CLNS 80-447, March 1980 + + +File: gsl-ref.info, Node: Simulated Annealing, Next: Ordinary Differential Equations, Prev: Monte Carlo Integration, Up: Top + +28 Simulated Annealing +********************** + +Stochastic search techniques are used when the structure of a space is +not well understood or is not smooth, so that techniques like Newton’s +method (which requires calculating Jacobian derivative matrices) cannot +be used. In particular, these techniques are frequently used to solve +combinatorial optimization problems, such as the traveling salesman +problem. + +The goal is to find a point in the space at which a real valued `energy +function' (or `cost function') is minimized. Simulated annealing is a +minimization technique which has given good results in avoiding local +minima; it is based on the idea of taking a random walk through the +space at successively lower temperatures, where the probability of +taking a step is given by a Boltzmann distribution. + +The functions described in this chapter are declared in the header file +‘gsl_siman.h’. + +* Menu: + +* Simulated Annealing algorithm:: +* Simulated Annealing functions:: +* Examples: Examples<21>. +* References and Further Reading: References and Further Reading<20>. + + +File: gsl-ref.info, Node: Simulated Annealing algorithm, Next: Simulated Annealing functions, Up: Simulated Annealing + +28.1 Simulated Annealing algorithm +================================== + +The simulated annealing algorithm takes random walks through the problem +space, looking for points with low energies; in these random walks, the +probability of taking a step is determined by the Boltzmann +distribution, + + p = e^{-(E_{i+1} - E_i)/(kT)} + +if E_{i+1} > E_i, and p = 1 when E_{i+1} \le E_i. + +In other words, a step will occur if the new energy is lower. If the +new energy is higher, the transition can still occur, and its likelihood +is proportional to the temperature T and inversely proportional to the +energy difference E_{i+1} - E_i. + +The temperature T is initially set to a high value, and a random walk is +carried out at that temperature. Then the temperature is lowered very +slightly according to a `cooling schedule', for example: T \rightarrow +T/\mu_T where \mu_T is slightly greater than 1. + +The slight probability of taking a step that gives higher energy is what +allows simulated annealing to frequently get out of local minima. + + +File: gsl-ref.info, Node: Simulated Annealing functions, Next: Examples<21>, Prev: Simulated Annealing algorithm, Up: Simulated Annealing + +28.2 Simulated Annealing functions +================================== + + -- Function: void gsl_siman_solve (const gsl_rng * r, void * x0_p, + gsl_siman_Efunc_t Ef, gsl_siman_step_t take_step, + gsl_siman_metric_t distance, gsl_siman_print_t print_position, + gsl_siman_copy_t copyfunc, + gsl_siman_copy_construct_t copy_constructor, + gsl_siman_destroy_t destructor, size_t element_size, + gsl_siman_params_t params) + + This function performs a simulated annealing search through a given + space. The space is specified by providing the functions ‘Ef’ and + ‘distance’. The simulated annealing steps are generated using the + random number generator ‘r’ and the function ‘take_step’. + + The starting configuration of the system should be given by ‘x0_p’. + The routine offers two modes for updating configurations, a + fixed-size mode and a variable-size mode. In the fixed-size mode + the configuration is stored as a single block of memory of size + ‘element_size’. Copies of this configuration are created, copied + and destroyed internally using the standard library functions + ‘malloc()’, ‘memcpy()’ and ‘free()’. The function pointers + ‘copyfunc’, ‘copy_constructor’ and ‘destructor’ should be null + pointers in fixed-size mode. In the variable-size mode the + functions ‘copyfunc’, ‘copy_constructor’ and ‘destructor’ are used + to create, copy and destroy configurations internally. The + variable ‘element_size’ should be zero in the variable-size mode. + + The ‘params’ structure (described below) controls the run by + providing the temperature schedule and other tunable parameters to + the algorithm. + + On exit the best result achieved during the search is placed in + ‘x0_p’. If the annealing process has been successful this should + be a good approximation to the optimal point in the space. + + If the function pointer ‘print_position’ is not null, a debugging + log will be printed to ‘stdout’ with the following columns: + + #-iter #-evals temperature position energy best_energy + + and the output of the function ‘print_position’ itself. If + ‘print_position’ is null then no information is printed. + +The simulated annealing routines require several user-specified +functions to define the configuration space and energy function. The +prototypes for these functions are given below. + + -- Type: gsl_siman_Efunc_t + + This function type should return the energy of a configuration + ‘xp’: + + double (*gsl_siman_Efunc_t) (void *xp) + + -- Type: gsl_siman_step_t + + This function type should modify the configuration ‘xp’ using a + random step taken from the generator ‘r’, up to a maximum distance + of ‘step_size’: + + void (*gsl_siman_step_t) (const gsl_rng *r, void *xp, + double step_size) + + -- Type: gsl_siman_metric_t + + This function type should return the distance between two + configurations ‘xp’ and ‘yp’: + + double (*gsl_siman_metric_t) (void *xp, void *yp) + + -- Type: gsl_siman_print_t + + This function type should print the contents of the configuration + ‘xp’: + + void (*gsl_siman_print_t) (void *xp) + + -- Type: gsl_siman_copy_t + + This function type should copy the configuration ‘source’ into + ‘dest’: + + void (*gsl_siman_copy_t) (void *source, void *dest) + + -- Type: gsl_siman_copy_construct_t + + This function type should create a new copy of the configuration + ‘xp’: + + void * (*gsl_siman_copy_construct_t) (void *xp) + + -- Type: gsl_siman_destroy_t + + This function type should destroy the configuration ‘xp’, freeing + its memory: + + void (*gsl_siman_destroy_t) (void *xp) + + -- Type: gsl_siman_params_t + + These are the parameters that control a run of *note + gsl_siman_solve(): 90f. This structure contains all the + information needed to control the search, beyond the energy + function, the step function and the initial guess. + + ‘int n_tries’ The number of points to try for each step. + + + ‘int iters_fixed_T’ The number of iterations at each temperature. + + + ‘double step_size’ The maximum step size in the random walk. + + + ‘double k, t_initial, mu_t, t_min’ The parameters of the Boltzmann distribution and cooling + schedule. + + + +File: gsl-ref.info, Node: Examples<21>, Next: References and Further Reading<20>, Prev: Simulated Annealing functions, Up: Simulated Annealing + +28.3 Examples +============= + +The simulated annealing package is clumsy, and it has to be because it +is written in C, for C callers, and tries to be polymorphic at the same +time. But here we provide some examples which can be pasted into your +application with little change and should make things easier. + +* Menu: + +* Trivial example:: +* Traveling Salesman Problem:: + + +File: gsl-ref.info, Node: Trivial example, Next: Traveling Salesman Problem, Up: Examples<21> + +28.3.1 Trivial example +---------------------- + +The first example, in one dimensional Cartesian space, sets up an energy +function which is a damped sine wave; this has many local minima, but +only one global minimum, somewhere between 1.0 and 1.5. The initial +guess given is 15.5, which is several local minima away from the global +minimum. + + #include + #include + #include + #include + + /* set up parameters for this simulated annealing run */ + + /* how many points do we try before stepping */ + #define N_TRIES 200 + + /* how many iterations for each T? */ + #define ITERS_FIXED_T 1000 + + /* max step size in random walk */ + #define STEP_SIZE 1.0 + + /* Boltzmann constant */ + #define K 1.0 + + /* initial temperature */ + #define T_INITIAL 0.008 + + /* damping factor for temperature */ + #define MU_T 1.003 + #define T_MIN 2.0e-6 + + gsl_siman_params_t params + = {N_TRIES, ITERS_FIXED_T, STEP_SIZE, + K, T_INITIAL, MU_T, T_MIN}; + + /* now some functions to test in one dimension */ + double E1(void *xp) + { + double x = * ((double *) xp); + + return exp(-pow((x-1.0),2.0))*sin(8*x); + } + + double M1(void *xp, void *yp) + { + double x = *((double *) xp); + double y = *((double *) yp); + + return fabs(x - y); + } + + void S1(const gsl_rng * r, void *xp, double step_size) + { + double old_x = *((double *) xp); + double new_x; + + double u = gsl_rng_uniform(r); + new_x = u * 2 * step_size - step_size + old_x; + + memcpy(xp, &new_x, sizeof(new_x)); + } + + void P1(void *xp) + { + printf ("%12g", *((double *) xp)); + } + + int + main(void) + { + const gsl_rng_type * T; + gsl_rng * r; + + double x_initial = 15.5; + + gsl_rng_env_setup(); + + T = gsl_rng_default; + r = gsl_rng_alloc(T); + + gsl_siman_solve(r, &x_initial, E1, S1, M1, P1, + NULL, NULL, NULL, + sizeof(double), params); + + gsl_rng_free (r); + return 0; + } + +Fig. %s is generated by running ‘siman_test’ in the following way: + + $ ./siman_test | awk '!/^#/ {print $1, $4}' + | graph -y 1.34 1.4 -W0 -X generation -Y position + | plot -Tps > siman-test.eps + +Fig. %s is generated by running ‘siman_test’ in the following way: + + $ ./siman_test | awk '!/^#/ {print $1, $5}' + | graph -y -0.88 -0.83 -W0 -X generation -Y energy + | plot -Tps > siman-energy.eps + +[image src="siman-test.png"] + +Figure: Example of a simulated annealing run: at higher temperatures +(early in the plot) you see that the solution can fluctuate, but at +lower temperatures it converges. + +[image src="siman-energy.png"] + +Figure: Simulated annealing energy vs generation + + +File: gsl-ref.info, Node: Traveling Salesman Problem, Prev: Trivial example, Up: Examples<21> + +28.3.2 Traveling Salesman Problem +--------------------------------- + +The TSP (`Traveling Salesman Problem') is the classic combinatorial +optimization problem. I have provided a very simple version of it, +based on the coordinates of twelve cities in the southwestern United +States. This should maybe be called the `Flying Salesman Problem', +since I am using the great-circle distance between cities, rather than +the driving distance. Also: I assume the earth is a sphere, so I don’t +use geoid distances. + +The *note gsl_siman_solve(): 90f. routine finds a route which is 3490.62 +Kilometers long; this is confirmed by an exhaustive search of all +possible routes with the same initial city. + +The full code is given below. + + /* siman/siman_tsp.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Mark Galassi + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + + #include + #include + #include + #include + #include + #include + #include + #include + + /* set up parameters for this simulated annealing run */ + + #define N_TRIES 200 /* how many points do we try before stepping */ + #define ITERS_FIXED_T 2000 /* how many iterations for each T? */ + #define STEP_SIZE 1.0 /* max step size in random walk */ + #define K 1.0 /* Boltzmann constant */ + #define T_INITIAL 5000.0 /* initial temperature */ + #define MU_T 1.002 /* damping factor for temperature */ + #define T_MIN 5.0e-1 + + gsl_siman_params_t params = {N_TRIES, ITERS_FIXED_T, STEP_SIZE, + K, T_INITIAL, MU_T, T_MIN}; + + struct s_tsp_city { + const char * name; + double lat, longitude; /* coordinates */ + }; + typedef struct s_tsp_city Stsp_city; + + void prepare_distance_matrix(void); + void exhaustive_search(void); + void print_distance_matrix(void); + double city_distance(Stsp_city c1, Stsp_city c2); + double Etsp(void *xp); + double Mtsp(void *xp, void *yp); + void Stsp(const gsl_rng * r, void *xp, double step_size); + void Ptsp(void *xp); + + /* in this table, latitude and longitude are obtained from the US + Census Bureau, at http://www.census.gov/cgi-bin/gazetteer */ + + Stsp_city cities[] = {{"Santa Fe", 35.68, 105.95}, + {"Phoenix", 33.54, 112.07}, + {"Albuquerque", 35.12, 106.62}, + {"Clovis", 34.41, 103.20}, + {"Durango", 37.29, 107.87}, + {"Dallas", 32.79, 96.77}, + {"Tesuque", 35.77, 105.92}, + {"Grants", 35.15, 107.84}, + {"Los Alamos", 35.89, 106.28}, + {"Las Cruces", 32.34, 106.76}, + {"Cortez", 37.35, 108.58}, + {"Gallup", 35.52, 108.74}}; + + #define N_CITIES (sizeof(cities)/sizeof(Stsp_city)) + + double distance_matrix[N_CITIES][N_CITIES]; + + /* distance between two cities */ + double city_distance(Stsp_city c1, Stsp_city c2) + { + const double earth_radius = 6375.000; /* 6000KM approximately */ + /* sin and cos of lat and long; must convert to radians */ + double sla1 = sin(c1.lat*M_PI/180), cla1 = cos(c1.lat*M_PI/180), + slo1 = sin(c1.longitude*M_PI/180), clo1 = cos(c1.longitude*M_PI/180); + double sla2 = sin(c2.lat*M_PI/180), cla2 = cos(c2.lat*M_PI/180), + slo2 = sin(c2.longitude*M_PI/180), clo2 = cos(c2.longitude*M_PI/180); + + double x1 = cla1*clo1; + double x2 = cla2*clo2; + + double y1 = cla1*slo1; + double y2 = cla2*slo2; + + double z1 = sla1; + double z2 = sla2; + + double dot_product = x1*x2 + y1*y2 + z1*z2; + + double angle = acos(dot_product); + + /* distance is the angle (in radians) times the earth radius */ + return angle*earth_radius; + } + + /* energy for the travelling salesman problem */ + double Etsp(void *xp) + { + /* an array of N_CITIES integers describing the order */ + int *route = (int *) xp; + double E = 0; + unsigned int i; + + for (i = 0; i < N_CITIES; ++i) { + /* use the distance_matrix to optimize this calculation; it had + better be allocated!! */ + E += distance_matrix[route[i]][route[(i + 1) % N_CITIES]]; + } + + return E; + } + + double Mtsp(void *xp, void *yp) + { + int *route1 = (int *) xp, *route2 = (int *) yp; + double distance = 0; + unsigned int i; + + for (i = 0; i < N_CITIES; ++i) { + distance += ((route1[i] == route2[i]) ? 0 : 1); + } + + return distance; + } + + /* take a step through the TSP space */ + void Stsp(const gsl_rng * r, void *xp, double step_size) + { + int x1, x2, dummy; + int *route = (int *) xp; + + step_size = 0 ; /* prevent warnings about unused parameter */ + + /* pick the two cities to swap in the matrix; we leave the first + city fixed */ + x1 = (gsl_rng_get (r) % (N_CITIES-1)) + 1; + do { + x2 = (gsl_rng_get (r) % (N_CITIES-1)) + 1; + } while (x2 == x1); + + dummy = route[x1]; + route[x1] = route[x2]; + route[x2] = dummy; + } + + void Ptsp(void *xp) + { + unsigned int i; + int *route = (int *) xp; + printf(" ["); + for (i = 0; i < N_CITIES; ++i) { + printf(" %d ", route[i]); + } + printf("] "); + } + + int main(void) + { + int x_initial[N_CITIES]; + unsigned int i; + + const gsl_rng * r = gsl_rng_alloc (gsl_rng_env_setup()) ; + + gsl_ieee_env_setup (); + + prepare_distance_matrix(); + + /* set up a trivial initial route */ + printf("# initial order of cities:\n"); + for (i = 0; i < N_CITIES; ++i) { + printf("# \"%s\"\n", cities[i].name); + x_initial[i] = i; + } + + printf("# distance matrix is:\n"); + print_distance_matrix(); + + printf("# initial coordinates of cities (longitude and latitude)\n"); + /* this can be plotted with */ + /* ./siman_tsp > hhh ; grep city_coord hhh | awk '{print $2 " " $3}' | xyplot -ps -d "xy" > c.eps */ + for (i = 0; i < N_CITIES+1; ++i) { + printf("###initial_city_coord: %g %g \"%s\"\n", + -cities[x_initial[i % N_CITIES]].longitude, + cities[x_initial[i % N_CITIES]].lat, + cities[x_initial[i % N_CITIES]].name); + } + + /* exhaustive_search(); */ + + gsl_siman_solve(r, x_initial, Etsp, Stsp, Mtsp, Ptsp, NULL, NULL, NULL, + N_CITIES*sizeof(int), params); + + printf("# final order of cities:\n"); + for (i = 0; i < N_CITIES; ++i) { + printf("# \"%s\"\n", cities[x_initial[i]].name); + } + + printf("# final coordinates of cities (longitude and latitude)\n"); + /* this can be plotted with */ + /* ./siman_tsp > hhh ; grep city_coord hhh | awk '{print $2 " " $3}' | xyplot -ps -d "xy" > c.eps */ + for (i = 0; i < N_CITIES+1; ++i) { + printf("###final_city_coord: %g %g %s\n", + -cities[x_initial[i % N_CITIES]].longitude, + cities[x_initial[i % N_CITIES]].lat, + cities[x_initial[i % N_CITIES]].name); + } + + printf("# "); + fflush(stdout); + #if 0 + system("date"); + #endif /* 0 */ + fflush(stdout); + + return 0; + } + + void prepare_distance_matrix() + { + unsigned int i, j; + double dist; + + for (i = 0; i < N_CITIES; ++i) { + for (j = 0; j < N_CITIES; ++j) { + if (i == j) { + dist = 0; + } else { + dist = city_distance(cities[i], cities[j]); + } + distance_matrix[i][j] = dist; + } + } + } + + void print_distance_matrix() + { + unsigned int i, j; + + for (i = 0; i < N_CITIES; ++i) { + printf("# "); + for (j = 0; j < N_CITIES; ++j) { + printf("%15.8f ", distance_matrix[i][j]); + } + printf("\n"); + } + } + + /* [only works for 12] search the entire space for solutions */ + static double best_E = 1.0e100, second_E = 1.0e100, third_E = 1.0e100; + static int best_route[N_CITIES]; + static int second_route[N_CITIES]; + static int third_route[N_CITIES]; + static void do_all_perms(int *route, int n); + + void exhaustive_search() + { + static int initial_route[N_CITIES] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}; + printf("\n# "); + fflush(stdout); + #if 0 + system("date"); + #endif + fflush(stdout); + do_all_perms(initial_route, 1); + printf("\n# "); + fflush(stdout); + #if 0 + system("date"); + #endif /* 0 */ + fflush(stdout); + + printf("# exhaustive best route: "); + Ptsp(best_route); + printf("\n# its energy is: %g\n", best_E); + + printf("# exhaustive second_best route: "); + Ptsp(second_route); + printf("\n# its energy is: %g\n", second_E); + + printf("# exhaustive third_best route: "); + Ptsp(third_route); + printf("\n# its energy is: %g\n", third_E); + } + + /* James Theiler's recursive algorithm for generating all routes */ + static void do_all_perms(int *route, int n) + { + if (n == (N_CITIES-1)) { + /* do it! calculate the energy/cost for that route */ + double E; + E = Etsp(route); /* TSP energy function */ + /* now save the best 3 energies and routes */ + if (E < best_E) { + third_E = second_E; + memcpy(third_route, second_route, N_CITIES*sizeof(*route)); + second_E = best_E; + memcpy(second_route, best_route, N_CITIES*sizeof(*route)); + best_E = E; + memcpy(best_route, route, N_CITIES*sizeof(*route)); + } else if (E < second_E) { + third_E = second_E; + memcpy(third_route, second_route, N_CITIES*sizeof(*route)); + second_E = E; + memcpy(second_route, route, N_CITIES*sizeof(*route)); + } else if (E < third_E) { + third_E = E; + memcpy(route, third_route, N_CITIES*sizeof(*route)); + } + } else { + int new_route[N_CITIES]; + unsigned int j; + int swap_tmp; + memcpy(new_route, route, N_CITIES*sizeof(*route)); + for (j = n; j < N_CITIES; ++j) { + swap_tmp = new_route[j]; + new_route[j] = new_route[n]; + new_route[n] = swap_tmp; + do_all_perms(new_route, n+1); + } + } + } + +Below are some plots generated in the following way: + + $ ./siman_tsp > tsp.output + $ grep -v "^#" tsp.output + | awk '{print $1, $NF}' + | graph -y 3300 6500 -W0 -X generation -Y distance + -L "TSP - 12 southwest cities" + | plot -Tps > 12-cities.eps + $ grep initial_city_coord tsp.output + | awk '{print $2, $3}' + | graph -X "longitude (- means west)" -Y "latitude" + -L "TSP - initial-order" -f 0.03 -S 1 0.1 + | plot -Tps > initial-route.eps + $ grep final_city_coord tsp.output + | awk '{print $2, $3}' + | graph -X "longitude (- means west)" -Y "latitude" + -L "TSP - final-order" -f 0.03 -S 1 0.1 + | plot -Tps > final-route.eps + +This is the output showing the initial order of the cities; longitude is +negative, since it is west and I want the plot to look like a map: + + # initial coordinates of cities (longitude and latitude) + ###initial_city_coord: -105.95 35.68 Santa Fe + ###initial_city_coord: -112.07 33.54 Phoenix + ###initial_city_coord: -106.62 35.12 Albuquerque + ###initial_city_coord: -103.2 34.41 Clovis + ###initial_city_coord: -107.87 37.29 Durango + ###initial_city_coord: -96.77 32.79 Dallas + ###initial_city_coord: -105.92 35.77 Tesuque + ###initial_city_coord: -107.84 35.15 Grants + ###initial_city_coord: -106.28 35.89 Los Alamos + ###initial_city_coord: -106.76 32.34 Las Cruces + ###initial_city_coord: -108.58 37.35 Cortez + ###initial_city_coord: -108.74 35.52 Gallup + ###initial_city_coord: -105.95 35.68 Santa Fe + +The optimal route turns out to be: + + # final coordinates of cities (longitude and latitude) + ###final_city_coord: -105.95 35.68 Santa Fe + ###final_city_coord: -103.2 34.41 Clovis + ###final_city_coord: -96.77 32.79 Dallas + ###final_city_coord: -106.76 32.34 Las Cruces + ###final_city_coord: -112.07 33.54 Phoenix + ###final_city_coord: -108.74 35.52 Gallup + ###final_city_coord: -108.58 37.35 Cortez + ###final_city_coord: -107.87 37.29 Durango + ###final_city_coord: -107.84 35.15 Grants + ###final_city_coord: -106.62 35.12 Albuquerque + ###final_city_coord: -106.28 35.89 Los Alamos + ###final_city_coord: -105.92 35.77 Tesuque + ###final_city_coord: -105.95 35.68 Santa Fe + +[image src="siman-initial-route.png"] + +Figure: Initial route for the 12 southwestern cities Flying Salesman +Problem. + +[image src="siman-final-route.png"] + +Figure: Final (optimal) route for the 12 southwestern cities Flying +Salesman Problem. + +Here’s a plot of the cost function (energy) versus generation (point in +the calculation at which a new temperature is set) for this problem: + +[image src="siman-12-cities.png"] + +Figure: Example of a simulated annealing run for the 12 southwestern +cities Flying Salesman Problem. + + +File: gsl-ref.info, Node: References and Further Reading<20>, Prev: Examples<21>, Up: Simulated Annealing + +28.4 References and Further Reading +=================================== + +Further information is available in the following book, + + * `Modern Heuristic Techniques for Combinatorial Problems', Colin R. + Reeves (ed.), McGraw-Hill, 1995 (ISBN 0-07-709239-2). + + +File: gsl-ref.info, Node: Ordinary Differential Equations, Next: Interpolation, Prev: Simulated Annealing, Up: Top + +29 Ordinary Differential Equations +********************************** + +This chapter describes functions for solving ordinary differential +equation (ODE) initial value problems. The library provides a variety +of low-level methods, such as Runge-Kutta and Bulirsch-Stoer routines, +and higher-level components for adaptive step-size control. The +components can be combined by the user to achieve the desired solution, +with full access to any intermediate steps. A driver object can be used +as a high level wrapper for easy use of low level functions. + +These functions are declared in the header file ‘gsl_odeiv2.h’. This is +a new interface in version 1.15 and uses the prefix ‘gsl_odeiv2’ for all +functions. It is recommended over the previous ‘gsl_odeiv’ +implementation defined in ‘gsl_odeiv.h’ The old interface has been +retained under the original name for backwards compatibility. + +* Menu: + +* Defining the ODE System:: +* Stepping Functions:: +* Adaptive Step-size Control:: +* Evolution:: +* Driver:: +* Examples: Examples<22>. +* References and Further Reading: References and Further Reading<21>. + + +File: gsl-ref.info, Node: Defining the ODE System, Next: Stepping Functions, Up: Ordinary Differential Equations + +29.1 Defining the ODE System +============================ + +The routines solve the general n-dimensional first-order system, + + dy_i(t)/dt = f_i(t, y_1(t), ..., y_n(t)) + +for i = 1, \dots, n. The stepping functions rely on the vector of +derivatives f_i and the Jacobian matrix, + + J_{ij} = df_i(t,y(t)) / dy_j + +A system of equations is defined using the *note gsl_odeiv2_system: 921. +datatype. + + -- Type: gsl_odeiv2_system + + This data type defines a general ODE system with arbitrary + parameters. + + ‘int (* function) (double t, const double y[], double dydt[], void + * params)’ + + This function should store the vector elements f_i(t,y,params) + in the array ‘dydt’, for arguments (‘t’, ‘y’) and parameters + ‘params’. + + The function should return ‘GSL_SUCCESS’ if the calculation + was completed successfully. Any other return value indicates + an error. A special return value ‘GSL_EBADFUNC’ causes + ‘gsl_odeiv2’ routines to immediately stop and return. If + ‘function’ is modified (for example contents of ‘params’), the + user must call an appropriate reset function (*note + gsl_odeiv2_driver_reset(): 922, *note + gsl_odeiv2_evolve_reset(): 923. or *note + gsl_odeiv2_step_reset(): 924.) before continuing. Use return + values distinct from standard GSL error codes to distinguish + your function as the source of the error. + + ‘int (* jacobian) (double t, const double y[], double * dfdy, + double dfdt[], void * params)’ + + This function should store the vector of derivative elements + + df_i(t,y,params)/dt + + in the array ‘dfdt’ and the Jacobian matrix J_{ij} in the + array ‘dfdy’, regarded as a row-ordered matrix ‘J(i,j) = + dfdy[i * dimension + j]’ where ‘dimension’ is the dimension of + the system. + + Not all of the stepper algorithms of ‘gsl_odeiv2’ make use of + the Jacobian matrix, so it may not be necessary to provide + this function (the ‘jacobian’ element of the struct can be + replaced by a null pointer for those algorithms). + + The function should return ‘GSL_SUCCESS’ if the calculation + was completed successfully. Any other return value indicates + an error. A special return value ‘GSL_EBADFUNC’ causes + ‘gsl_odeiv2’ routines to immediately stop and return. If + ‘jacobian’ is modified (for example contents of ‘params’), the + user must call an appropriate reset function (*note + gsl_odeiv2_driver_reset(): 922, *note + gsl_odeiv2_evolve_reset(): 923. or *note + gsl_odeiv2_step_reset(): 924.) before continuing. Use return + values distinct from standard GSL error codes to distinguish + your function as the source of the error. + + ‘size_t dimension’ + + This is the dimension of the system of equations. + + ‘void * params’ + + This is a pointer to the arbitrary parameters of the system. + + +File: gsl-ref.info, Node: Stepping Functions, Next: Adaptive Step-size Control, Prev: Defining the ODE System, Up: Ordinary Differential Equations + +29.2 Stepping Functions +======================= + +The lowest level components are the `stepping functions' which advance a +solution from time t to t+h for a fixed step-size h and estimate the +resulting local error. + + -- Type: gsl_odeiv2_step + + This contains internal parameters for a stepping function. + + -- Function: gsl_odeiv2_step * gsl_odeiv2_step_alloc (const + gsl_odeiv2_step_type * T, size_t dim) + + This function returns a pointer to a newly allocated instance of a + stepping function of type ‘T’ for a system of ‘dim’ dimensions. + Please note that if you use a stepper method that requires access + to a driver object, it is advisable to use a driver allocation + method, which automatically allocates a stepper, too. + + -- Function: int gsl_odeiv2_step_reset (gsl_odeiv2_step * s) + + This function resets the stepping function ‘s’. It should be used + whenever the next use of ‘s’ will not be a continuation of a + previous step. + + -- Function: void gsl_odeiv2_step_free (gsl_odeiv2_step * s) + + This function frees all the memory associated with the stepping + function ‘s’. + + -- Function: const char * gsl_odeiv2_step_name (const gsl_odeiv2_step + * s) + + This function returns a pointer to the name of the stepping + function. For example: + + printf ("step method is '%s'\n", gsl_odeiv2_step_name (s)); + + would print something like ‘step method is 'rkf45'’. + + -- Function: unsigned int gsl_odeiv2_step_order (const gsl_odeiv2_step + * s) + + This function returns the order of the stepping function on the + previous step. The order can vary if the stepping function itself + is adaptive. + + -- Function: int gsl_odeiv2_step_set_driver (gsl_odeiv2_step * s, const + gsl_odeiv2_driver * d) + + This function sets a pointer of the driver object ‘d’ for stepper + ‘s’, to allow the stepper to access control (and evolve) object + through the driver object. This is a requirement for some + steppers, to get the desired error level for internal iteration of + stepper. Allocation of a driver object calls this function + automatically. + + -- Function: int gsl_odeiv2_step_apply (gsl_odeiv2_step * s, double t, + double h, double y[], double yerr[], const double dydt_in[], + double dydt_out[], const gsl_odeiv2_system * sys) + + This function applies the stepping function ‘s’ to the system of + equations defined by ‘sys’, using the step-size ‘h’ to advance the + system from time ‘t’ and state ‘y’ to time ‘t’ + ‘h’. The new + state of the system is stored in ‘y’ on output, with an estimate of + the absolute error in each component stored in ‘yerr’. If the + argument ‘dydt_in’ is not null it should point an array containing + the derivatives for the system at time ‘t’ on input. This is + optional as the derivatives will be computed internally if they are + not provided, but allows the reuse of existing derivative + information. On output the new derivatives of the system at time + ‘t’ + ‘h’ will be stored in ‘dydt_out’ if it is not null. + + The stepping function returns ‘GSL_FAILURE’ if it is unable to + compute the requested step. Also, if the user-supplied functions + defined in the system ‘sys’ return a status other than + ‘GSL_SUCCESS’ the step will be aborted. In that case, the elements + of ‘y’ will be restored to their pre-step values and the error code + from the user-supplied function will be returned. Failure may be + due to a singularity in the system or too large step-size ‘h’. In + that case the step should be attempted again with a smaller + step-size, e.g. ‘h’ / 2. + + If the driver object is not appropriately set via *note + gsl_odeiv2_step_set_driver(): 92b. for those steppers that need it, + the stepping function returns ‘GSL_EFAULT’. If the user-supplied + functions defined in the system ‘sys’ returns ‘GSL_EBADFUNC’, the + function returns immediately with the same return code. In this + case the user must call *note gsl_odeiv2_step_reset(): 924. before + calling this function again. + +The following algorithms are available, + + -- Type: gsl_odeiv2_step_type + + -- Variable: gsl_odeiv2_step_rk2 + + Explicit embedded Runge-Kutta (2, 3) method. + + -- Variable: gsl_odeiv2_step_rk4 + + Explicit 4th order (classical) Runge-Kutta. Error estimation + is carried out by the step doubling method. For more + efficient estimate of the error, use the embedded methods + described below. + + -- Variable: gsl_odeiv2_step_rkf45 + + Explicit embedded Runge-Kutta-Fehlberg (4, 5) method. This + method is a good general-purpose integrator. + + -- Variable: gsl_odeiv2_step_rkck + + Explicit embedded Runge-Kutta Cash-Karp (4, 5) method. + + -- Variable: gsl_odeiv2_step_rk8pd + + Explicit embedded Runge-Kutta Prince-Dormand (8, 9) method. + + -- Variable: gsl_odeiv2_step_rk1imp + + Implicit Gaussian first order Runge-Kutta. Also known as + implicit Euler or backward Euler method. Error estimation is + carried out by the step doubling method. This algorithm + requires the Jacobian and access to the driver object via + *note gsl_odeiv2_step_set_driver(): 92b. + + -- Variable: gsl_odeiv2_step_rk2imp + + Implicit Gaussian second order Runge-Kutta. Also known as + implicit mid-point rule. Error estimation is carried out by + the step doubling method. This stepper requires the Jacobian + and access to the driver object via *note + gsl_odeiv2_step_set_driver(): 92b. + + -- Variable: gsl_odeiv2_step_rk4imp + + Implicit Gaussian 4th order Runge-Kutta. Error estimation is + carried out by the step doubling method. This algorithm + requires the Jacobian and access to the driver object via + *note gsl_odeiv2_step_set_driver(): 92b. + + -- Variable: gsl_odeiv2_step_bsimp + + Implicit Bulirsch-Stoer method of Bader and Deuflhard. The + method is generally suitable for stiff problems. This stepper + requires the Jacobian. + + -- Variable: gsl_odeiv2_step_msadams + + A variable-coefficient linear multistep Adams method in + Nordsieck form. This stepper uses explicit Adams-Bashforth + (predictor) and implicit Adams-Moulton (corrector) methods in + P(EC)^m functional iteration mode. Method order varies + dynamically between 1 and 12. This stepper requires the + access to the driver object via *note + gsl_odeiv2_step_set_driver(): 92b. + + -- Variable: gsl_odeiv2_step_msbdf + + A variable-coefficient linear multistep backward + differentiation formula (BDF) method in Nordsieck form. This + stepper uses the explicit BDF formula as predictor and + implicit BDF formula as corrector. A modified Newton + iteration method is used to solve the system of non-linear + equations. Method order varies dynamically between 1 and 5. + The method is generally suitable for stiff problems. This + stepper requires the Jacobian and the access to the driver + object via *note gsl_odeiv2_step_set_driver(): 92b. + + +File: gsl-ref.info, Node: Adaptive Step-size Control, Next: Evolution, Prev: Stepping Functions, Up: Ordinary Differential Equations + +29.3 Adaptive Step-size Control +=============================== + +The control function examines the proposed change to the solution +produced by a stepping function and attempts to determine the optimal +step-size for a user-specified level of error. + + -- Type: gsl_odeiv2_control + + This is a workspace for controlling step size. + + -- Type: gsl_odeiv2_control_type + + This specifies the control type. + + -- Function: gsl_odeiv2_control * gsl_odeiv2_control_standard_new + (double eps_abs, double eps_rel, double a_y, double a_dydt) + + The standard control object is a four parameter heuristic based on + absolute and relative errors ‘eps_abs’ and ‘eps_rel’, and scaling + factors ‘a_y’ and ‘a_dydt’ for the system state y(t) and + derivatives y'(t) respectively. + + The step-size adjustment procedure for this method begins by + computing the desired error level D_i for each component, + + D_i = eps_abs + eps_rel * (a_y |y_i| + a_dydt h |y\prime_i|) + + and comparing it with the observed error E_i = |yerr_i|. If the + observed error ‘E’ exceeds the desired error level ‘D’ by more than + 10% for any component then the method reduces the step-size by an + appropriate factor, + + h_{new} = h_{old} * S * (E/D)^{-1/q} + + where q is the consistency order of the method (e.g. q=4 for 4(5) + embedded RK), and S is a safety factor of 0.9. The ratio E/D is + taken to be the maximum of the ratios E_i/D_i. + + If the observed error E is less than 50% of the desired error level + ‘D’ for the maximum ratio E_i/D_i then the algorithm takes the + opportunity to increase the step-size to bring the error in line + with the desired level, + + h_{new} = h_{old} * S * (E/D)^{-1/(q+1)} + + This encompasses all the standard error scaling methods. To avoid + uncontrolled changes in the stepsize, the overall scaling factor is + limited to the range 1/5 to 5. + + -- Function: gsl_odeiv2_control * gsl_odeiv2_control_y_new + (double eps_abs, double eps_rel) + + This function creates a new control object which will keep the + local error on each step within an absolute error of ‘eps_abs’ and + relative error of ‘eps_rel’ with respect to the solution y_i(t). + This is equivalent to the standard control object with ‘a_y’ = 1 + and ‘a_dydt’ = 0. + + -- Function: gsl_odeiv2_control * gsl_odeiv2_control_yp_new + (double eps_abs, double eps_rel) + + This function creates a new control object which will keep the + local error on each step within an absolute error of ‘eps_abs’ and + relative error of ‘eps_rel’ with respect to the derivatives of the + solution y'_i(t). This is equivalent to the standard control + object with ‘a_y’ = 0 and ‘a_dydt’ = 1. + + -- Function: gsl_odeiv2_control * gsl_odeiv2_control_scaled_new + (double eps_abs, double eps_rel, double a_y, double a_dydt, + const double scale_abs[], size_t dim) + + This function creates a new control object which uses the same + algorithm as *note gsl_odeiv2_control_standard_new(): 93c. but with + an absolute error which is scaled for each component by the array + ‘scale_abs’. The formula for D_i for this control object is, + + D_i = eps_abs * s_i + eps_rel * (a_y |y_i| + a_dydt h |y\prime_i|) + + where s_i is the i-th component of the array ‘scale_abs’. The same + error control heuristic is used by the Matlab ODE suite. + + -- Function: gsl_odeiv2_control * gsl_odeiv2_control_alloc (const + gsl_odeiv2_control_type * T) + + This function returns a pointer to a newly allocated instance of a + control function of type ‘T’. This function is only needed for + defining new types of control functions. For most purposes the + standard control functions described above should be sufficient. + + -- Function: int gsl_odeiv2_control_init (gsl_odeiv2_control * c, + double eps_abs, double eps_rel, double a_y, double a_dydt) + + This function initializes the control function ‘c’ with the + parameters ‘eps_abs’ (absolute error), ‘eps_rel’ (relative error), + ‘a_y’ (scaling factor for y) and ‘a_dydt’ (scaling factor for + derivatives). + + -- Function: void gsl_odeiv2_control_free (gsl_odeiv2_control * c) + + This function frees all the memory associated with the control + function ‘c’. + + -- Function: int gsl_odeiv2_control_hadjust (gsl_odeiv2_control * c, + gsl_odeiv2_step * s, const double y[], const double yerr[], + const double dydt[], double * h) + + This function adjusts the step-size ‘h’ using the control function + ‘c’, and the current values of ‘y’, ‘yerr’ and ‘dydt’. The + stepping function ‘step’ is also needed to determine the order of + the method. If the error in the y-values ‘yerr’ is found to be too + large then the step-size ‘h’ is reduced and the function returns + ‘GSL_ODEIV_HADJ_DEC’. If the error is sufficiently small then ‘h’ + may be increased and ‘GSL_ODEIV_HADJ_INC’ is returned. The + function returns ‘GSL_ODEIV_HADJ_NIL’ if the step-size is + unchanged. The goal of the function is to estimate the largest + step-size which satisfies the user-specified accuracy requirements + for the current point. + + -- Function: const char * gsl_odeiv2_control_name (const + gsl_odeiv2_control * c) + + This function returns a pointer to the name of the control + function. For example: + + printf ("control method is '%s'\n", gsl_odeiv2_control_name (c)); + + would print something like ‘control method is 'standard'’ + + -- Function: int gsl_odeiv2_control_errlevel (gsl_odeiv2_control * c, + const double y, const double dydt, const double h, const + size_t ind, double * errlev) + + This function calculates the desired error level of the ‘ind’-th + component to ‘errlev’. It requires the value (‘y’) and value of + the derivative (‘dydt’) of the component, and the current step size + ‘h’. + + -- Function: int gsl_odeiv2_control_set_driver (gsl_odeiv2_control * c, + const gsl_odeiv2_driver * d) + + This function sets a pointer of the driver object ‘d’ for control + object ‘c’. + + +File: gsl-ref.info, Node: Evolution, Next: Driver, Prev: Adaptive Step-size Control, Up: Ordinary Differential Equations + +29.4 Evolution +============== + +The evolution function combines the results of a stepping function and +control function to reliably advance the solution forward one step using +an acceptable step-size. + + -- Type: gsl_odeiv2_evolve + + This workspace contains parameters for controlling the evolution + function + + -- Function: gsl_odeiv2_evolve * gsl_odeiv2_evolve_alloc (size_t dim) + + This function returns a pointer to a newly allocated instance of an + evolution function for a system of ‘dim’ dimensions. + + -- Function: int gsl_odeiv2_evolve_apply (gsl_odeiv2_evolve * e, + gsl_odeiv2_control * con, gsl_odeiv2_step * step, const + gsl_odeiv2_system * sys, double * t, double t1, double * h, + double y[]) + + This function advances the system (‘e’, ‘sys’) from time ‘t’ and + position ‘y’ using the stepping function ‘step’. The new time and + position are stored in ‘t’ and ‘y’ on output. + + The initial step-size is taken as ‘h’. The control function ‘con’ + is applied to check whether the local error estimated by the + stepping function ‘step’ using step-size ‘h’ exceeds the required + error tolerance. If the error is too high, the step is retried by + calling ‘step’ with a decreased step-size. This process is + continued until an acceptable step-size is found. An estimate of + the local error for the step can be obtained from the components of + the array ‘e->yerr[]’. + + If the user-supplied functions defined in the system ‘sys’ returns + ‘GSL_EBADFUNC’, the function returns immediately with the same + return code. In this case the user must call *note + gsl_odeiv2_step_reset(): 924. and *note gsl_odeiv2_evolve_reset(): + 923. before calling this function again. + + Otherwise, if the user-supplied functions defined in the system + ‘sys’ or the stepping function ‘step’ return a status other than + ‘GSL_SUCCESS’, the step is retried with a decreased step-size. If + the step-size decreases below machine precision, a status of + ‘GSL_FAILURE’ is returned if the user functions returned + ‘GSL_SUCCESS’. Otherwise the value returned by user function is + returned. If no acceptable step can be made, ‘t’ and ‘y’ will be + restored to their pre-step values and ‘h’ contains the final + attempted step-size. + + If the step is successful the function returns a suggested + step-size for the next step in ‘h’. The maximum time ‘t1’ is + guaranteed not to be exceeded by the time-step. On the final + time-step the value of ‘t’ will be set to ‘t1’ exactly. + + -- Function: int gsl_odeiv2_evolve_apply_fixed_step (gsl_odeiv2_evolve + * e, gsl_odeiv2_control * con, gsl_odeiv2_step * step, const + gsl_odeiv2_system * sys, double * t, const double h, + double y[]) + + This function advances the ODE-system (‘e’, ‘sys’, ‘con’) from time + ‘t’ and position ‘y’ using the stepping function ‘step’ by a + specified step size ‘h’. If the local error estimated by the + stepping function exceeds the desired error level, the step is not + taken and the function returns ‘GSL_FAILURE’. Otherwise the value + returned by user function is returned. + + -- Function: int gsl_odeiv2_evolve_reset (gsl_odeiv2_evolve * e) + + This function resets the evolution function ‘e’. It should be used + whenever the next use of ‘e’ will not be a continuation of a + previous step. + + -- Function: void gsl_odeiv2_evolve_free (gsl_odeiv2_evolve * e) + + This function frees all the memory associated with the evolution + function ‘e’. + + -- Function: int gsl_odeiv2_evolve_set_driver (gsl_odeiv2_evolve * e, + const gsl_odeiv2_driver * d) + + This function sets a pointer of the driver object ‘d’ for evolve + object ‘e’. + +If a system has discontinuous changes in the derivatives at known +points, it is advisable to evolve the system between each discontinuity +in sequence. For example, if a step-change in an external driving force +occurs at times t_a, t_b and t_c then evolution should be carried out +over the ranges (t_0,t_a), (t_a,t_b), (t_b,t_c), and (t_c,t_1) +separately and not directly over the range (t_0,t_1). + + +File: gsl-ref.info, Node: Driver, Next: Examples<22>, Prev: Evolution, Up: Ordinary Differential Equations + +29.5 Driver +=========== + +The driver object is a high level wrapper that combines the evolution, +control and stepper objects for easy use. + + -- Function: gsl_odeiv2_driver * gsl_odeiv2_driver_alloc_y_new (const + gsl_odeiv2_system * sys, const gsl_odeiv2_step_type * T, const + double hstart, const double epsabs, const double epsrel) + -- Function: gsl_odeiv2_driver * gsl_odeiv2_driver_alloc_yp_new (const + gsl_odeiv2_system * sys, const gsl_odeiv2_step_type * T, const + double hstart, const double epsabs, const double epsrel) + -- Function: gsl_odeiv2_driver * gsl_odeiv2_driver_alloc_standard_new + (const gsl_odeiv2_system * sys, const gsl_odeiv2_step_type + * T, const double hstart, const double epsabs, const + double epsrel, const double a_y, const double a_dydt) + -- Function: gsl_odeiv2_driver * gsl_odeiv2_driver_alloc_scaled_new + (const gsl_odeiv2_system * sys, const gsl_odeiv2_step_type + * T, const double hstart, const double epsabs, const + double epsrel, const double a_y, const double a_dydt, const + double scale_abs[]) + + These functions return a pointer to a newly allocated instance of a + driver object. The functions automatically allocate and initialise + the evolve, control and stepper objects for ODE system ‘sys’ using + stepper type ‘T’. The initial step size is given in ‘hstart’. The + rest of the arguments follow the syntax and semantics of the + control functions with same name (‘gsl_odeiv2_control_*_new’). + + -- Function: int gsl_odeiv2_driver_set_hmin (gsl_odeiv2_driver * d, + const double hmin) + + The function sets a minimum for allowed step size ‘hmin’ for driver + ‘d’. Default value is 0. + + -- Function: int gsl_odeiv2_driver_set_hmax (gsl_odeiv2_driver * d, + const double hmax) + + The function sets a maximum for allowed step size ‘hmax’ for driver + ‘d’. Default value is ‘GSL_DBL_MAX’. + + -- Function: int gsl_odeiv2_driver_set_nmax (gsl_odeiv2_driver * d, + const unsigned long int nmax) + + The function sets a maximum for allowed number of steps ‘nmax’ for + driver ‘d’. Default value of 0 sets no limit for steps. + + -- Function: int gsl_odeiv2_driver_apply (gsl_odeiv2_driver * d, double + * t, const double t1, double y[]) + + This function evolves the driver system ‘d’ from ‘t’ to ‘t1’. + Initially vector ‘y’ should contain the values of dependent + variables at point ‘t’. If the function is unable to complete the + calculation, an error code from *note gsl_odeiv2_evolve_apply(): + 94a. is returned, and ‘t’ and ‘y’ contain the values from last + successful step. + + If maximum number of steps is reached, a value of ‘GSL_EMAXITER’ is + returned. If the step size drops below minimum value, the function + returns with ‘GSL_ENOPROG’. If the user-supplied functions defined + in the system ‘sys’ returns ‘GSL_EBADFUNC’, the function returns + immediately with the same return code. In this case the user must + call *note gsl_odeiv2_driver_reset(): 922. before calling this + function again. + + -- Function: int gsl_odeiv2_driver_apply_fixed_step (gsl_odeiv2_driver + * d, double * t, const double h, const unsigned long int n, + double y[]) + + This function evolves the driver system ‘d’ from ‘t’ with ‘n’ steps + of size ‘h’. If the function is unable to complete the + calculation, an error code from *note + gsl_odeiv2_evolve_apply_fixed_step(): 94b. is returned, and ‘t’ and + ‘y’ contain the values from last successful step. + + -- Function: int gsl_odeiv2_driver_reset (gsl_odeiv2_driver * d) + + This function resets the evolution and stepper objects. + + -- Function: int gsl_odeiv2_driver_reset_hstart (gsl_odeiv2_driver * d, + const double hstart) + + The routine resets the evolution and stepper objects and sets new + initial step size to ‘hstart’. This function can be used e.g. to + change the direction of integration. + + -- Function: int gsl_odeiv2_driver_free (gsl_odeiv2_driver * d) + + This function frees the driver object, and the related evolution, + stepper and control objects. + + +File: gsl-ref.info, Node: Examples<22>, Next: References and Further Reading<21>, Prev: Driver, Up: Ordinary Differential Equations + +29.6 Examples +============= + +The following program solves the second-order nonlinear Van der Pol +oscillator equation, + + u''(t) + \mu u'(t) (u(t)^2 - 1) + u(t) = 0 + +This can be converted into a first order system suitable for use with +the routines described in this chapter by introducing a separate +variable for the velocity, v = u'(t), + + u' = v + v' = -u + \mu v (1-u^2) + +The program begins by defining functions for these derivatives and their +Jacobian. The main function uses driver level functions to solve the +problem. The program evolves the solution from (u, v) = (1, 0) at t = 0 +to t = 100. The step-size h is automatically adjusted by the controller +to maintain an absolute accuracy of 10^{-6} in the function values (u, +v). The loop in the example prints the solution at the points t_i = 1, +2, \dots, 100. + + #include + #include + #include + #include + + int + func (double t, const double y[], double f[], + void *params) + { + (void)(t); /* avoid unused parameter warning */ + double mu = *(double *)params; + f[0] = y[1]; + f[1] = -y[0] - mu*y[1]*(y[0]*y[0] - 1); + return GSL_SUCCESS; + } + + int + jac (double t, const double y[], double *dfdy, + double dfdt[], void *params) + { + (void)(t); /* avoid unused parameter warning */ + double mu = *(double *)params; + gsl_matrix_view dfdy_mat + = gsl_matrix_view_array (dfdy, 2, 2); + gsl_matrix * m = &dfdy_mat.matrix; + gsl_matrix_set (m, 0, 0, 0.0); + gsl_matrix_set (m, 0, 1, 1.0); + gsl_matrix_set (m, 1, 0, -2.0*mu*y[0]*y[1] - 1.0); + gsl_matrix_set (m, 1, 1, -mu*(y[0]*y[0] - 1.0)); + dfdt[0] = 0.0; + dfdt[1] = 0.0; + return GSL_SUCCESS; + } + + int + main (void) + { + double mu = 10; + gsl_odeiv2_system sys = {func, jac, 2, &mu}; + + gsl_odeiv2_driver * d = + gsl_odeiv2_driver_alloc_y_new (&sys, gsl_odeiv2_step_rk8pd, + 1e-6, 1e-6, 0.0); + int i; + double t = 0.0, t1 = 100.0; + double y[2] = { 1.0, 0.0 }; + + for (i = 1; i <= 100; i++) + { + double ti = i * t1 / 100.0; + int status = gsl_odeiv2_driver_apply (d, &t, ti, y); + + if (status != GSL_SUCCESS) + { + printf ("error, return value=%d\n", status); + break; + } + + printf ("%.5e %.5e %.5e\n", t, y[0], y[1]); + } + + gsl_odeiv2_driver_free (d); + return 0; + } + +The user can work with the lower level functions directly, as in the +following example. In this case an intermediate result is printed after +each successful step instead of equidistant time points. + + int + main (void) + { + const gsl_odeiv2_step_type * T + = gsl_odeiv2_step_rk8pd; + + gsl_odeiv2_step * s + = gsl_odeiv2_step_alloc (T, 2); + gsl_odeiv2_control * c + = gsl_odeiv2_control_y_new (1e-6, 0.0); + gsl_odeiv2_evolve * e + = gsl_odeiv2_evolve_alloc (2); + + double mu = 10; + gsl_odeiv2_system sys = {func, jac, 2, &mu}; + + double t = 0.0, t1 = 100.0; + double h = 1e-6; + double y[2] = { 1.0, 0.0 }; + + while (t < t1) + { + int status = gsl_odeiv2_evolve_apply (e, c, s, + &sys, + &t, t1, + &h, y); + + if (status != GSL_SUCCESS) + break; + + printf ("%.5e %.5e %.5e\n", t, y[0], y[1]); + } + + gsl_odeiv2_evolve_free (e); + gsl_odeiv2_control_free (c); + gsl_odeiv2_step_free (s); + return 0; + } + +For functions with multiple parameters, the appropriate information can +be passed in through the ‘params’ argument in *note gsl_odeiv2_system: +921. definition (‘mu’ in this example) by using a pointer to a struct. + +[image src="ode-vdp.png"] + +Figure: Numerical solution of the Van der Pol oscillator equation using +Prince-Dormand 8th order Runge-Kutta. + +It is also possible to work with a non-adaptive integrator, using only +the stepping function itself, *note +gsl_odeiv2_driver_apply_fixed_step(): 957. or *note +gsl_odeiv2_evolve_apply_fixed_step(): 94b. The following program uses +the driver level function, with fourth-order Runge-Kutta stepping +function with a fixed stepsize of 0.001. + + int + main (void) + { + double mu = 10; + gsl_odeiv2_system sys = { func, jac, 2, &mu }; + + gsl_odeiv2_driver *d = + gsl_odeiv2_driver_alloc_y_new (&sys, gsl_odeiv2_step_rk4, + 1e-3, 1e-8, 1e-8); + + double t = 0.0; + double y[2] = { 1.0, 0.0 }; + int i, s; + + for (i = 0; i < 100; i++) + { + s = gsl_odeiv2_driver_apply_fixed_step (d, &t, 1e-3, 1000, y); + + if (s != GSL_SUCCESS) + { + printf ("error: driver returned %d\n", s); + break; + } + + printf ("%.5e %.5e %.5e\n", t, y[0], y[1]); + } + + gsl_odeiv2_driver_free (d); + return s; + } + + +File: gsl-ref.info, Node: References and Further Reading<21>, Prev: Examples<22>, Up: Ordinary Differential Equations + +29.7 References and Further Reading +=================================== + + * Ascher, U.M., Petzold, L.R., `Computer Methods for Ordinary + Differential and Differential-Algebraic Equations', SIAM, + Philadelphia, 1998. + + * Hairer, E., Norsett, S. P., Wanner, G., `Solving Ordinary + Differential Equations I: Nonstiff Problems', Springer, Berlin, + 1993. + + * Hairer, E., Wanner, G., `Solving Ordinary Differential Equations + II: Stiff and Differential-Algebraic Problems', Springer, Berlin, + 1996. + +Many of the basic Runge-Kutta formulas can be found in the Handbook of +Mathematical Functions, + + * Abramowitz & Stegun (eds.), `Handbook of Mathematical Functions', + Section 25.5. + +The implicit Bulirsch-Stoer algorithm ‘bsimp’ is described in the +following paper, + + * G. Bader and P. Deuflhard, “A Semi-Implicit Mid-Point Rule for + Stiff Systems of Ordinary Differential Equations.”, Numer.: Math.: + 41, 373–398, 1983. + +The Adams and BDF multistep methods ‘msadams’ and ‘msbdf’ are based on +the following articles, + + * G. D. Byrne and A. C. Hindmarsh, “A Polyalgorithm for the Numerical + Solution of Ordinary Differential Equations.”, ACM Trans. Math. + Software, 1, 71–96, 1975. + + * P. N. Brown, G. D. Byrne and A. C. Hindmarsh, “VODE: A + Variable-coefficient ODE Solver.”, SIAM J. Sci. Stat. Comput. + 10, 1038–1051, 1989. + + * A. C. Hindmarsh, P. N. Brown, K. E. Grant, S. L. Lee, R. Serban, D. + E. Shumaker and C. S. Woodward, “SUNDIALS: Suite of Nonlinear and + Differential/Algebraic Equation Solvers.”, ACM Trans. Math. + Software 31, 363–396, 2005. + + +File: gsl-ref.info, Node: Interpolation, Next: Numerical Differentiation, Prev: Ordinary Differential Equations, Up: Top + +30 Interpolation +**************** + +This chapter describes functions for performing interpolation. The +library provides a variety of interpolation methods, including Cubic, +Akima, and Steffen splines. The interpolation types are +interchangeable, allowing different methods to be used without +recompiling. Interpolations can be defined for both normal and periodic +boundary conditions. Additional functions are available for computing +derivatives and integrals of interpolating functions. Routines are +provided for interpolating both one and two dimensional datasets. + +These interpolation methods produce curves that pass through each +datapoint. To interpolate noisy data with a smoothing curve see *note +Basis Splines: 95f. + +The functions described in this section are declared in the header files +‘gsl_interp.h’ and ‘gsl_spline.h’. + +* Menu: + +* Introduction to 1D Interpolation:: +* 1D Interpolation Functions:: +* 1D Interpolation Types:: +* 1D Index Look-up and Acceleration:: +* 1D Evaluation of Interpolating Functions:: +* 1D Higher-level Interface:: +* 1D Interpolation Example Programs:: +* Introduction to 2D Interpolation:: +* 2D Interpolation Functions:: +* 2D Interpolation Grids:: +* 2D Interpolation Types:: +* 2D Evaluation of Interpolating Functions:: +* 2D Higher-level Interface:: +* 2D Interpolation Example programs:: +* References and Further Reading: References and Further Reading<22>. + + +File: gsl-ref.info, Node: Introduction to 1D Interpolation, Next: 1D Interpolation Functions, Up: Interpolation + +30.1 Introduction to 1D Interpolation +===================================== + +Given a set of data points (x_1, y_1) \dots (x_n, y_n) the routines +described in this section compute a continuous interpolating function +y(x) such that y(x_i) = y_i. The interpolation is piecewise smooth, and +its behavior at the end-points is determined by the type of +interpolation used. + + +File: gsl-ref.info, Node: 1D Interpolation Functions, Next: 1D Interpolation Types, Prev: Introduction to 1D Interpolation, Up: Interpolation + +30.2 1D Interpolation Functions +=============================== + +The interpolation function for a given dataset is stored in a *note +gsl_interp: 962. object. These are created by the following functions. + + -- Type: gsl_interp + + Workspace for 1D interpolation + + -- Function: gsl_interp * gsl_interp_alloc (const gsl_interp_type * T, + size_t size) + + This function returns a pointer to a newly allocated interpolation + object of type ‘T’ for ‘size’ data-points. + + -- Function: int gsl_interp_init (gsl_interp * interp, const + double xa[], const double ya[], size_t size) + + This function initializes the interpolation object ‘interp’ for the + data (‘xa’, ‘ya’) where ‘xa’ and ‘ya’ are arrays of size ‘size’. + The interpolation object (*note gsl_interp: 962.) does not save the + data arrays ‘xa’ and ‘ya’ and only stores the static state computed + from the data. The ‘xa’ data array is always assumed to be + strictly ordered, with increasing x values; the behavior for other + arrangements is not defined. + + -- Function: void gsl_interp_free (gsl_interp * interp) + + This function frees the interpolation object ‘interp’. + + +File: gsl-ref.info, Node: 1D Interpolation Types, Next: 1D Index Look-up and Acceleration, Prev: 1D Interpolation Functions, Up: Interpolation + +30.3 1D Interpolation Types +=========================== + +The interpolation library provides the following interpolation types: + + -- Type: gsl_interp_type + + -- Variable: gsl_interp_linear + + Linear interpolation. This interpolation method does not + require any additional memory. + + -- Variable: gsl_interp_polynomial + + Polynomial interpolation. This method should only be used for + interpolating small numbers of points because polynomial + interpolation introduces large oscillations, even for + well-behaved datasets. The number of terms in the + interpolating polynomial is equal to the number of points. + + -- Variable: gsl_interp_cspline + + Cubic spline with natural boundary conditions. The resulting + curve is piecewise cubic on each interval, with matching first + and second derivatives at the supplied data-points. The + second derivative is chosen to be zero at the first point and + last point. + + -- Variable: gsl_interp_cspline_periodic + + Cubic spline with periodic boundary conditions. The resulting + curve is piecewise cubic on each interval, with matching first + and second derivatives at the supplied data-points. The + derivatives at the first and last points are also matched. + Note that the last point in the data must have the same + y-value as the first point, otherwise the resulting periodic + interpolation will have a discontinuity at the boundary. + + -- Variable: gsl_interp_akima + + Non-rounded Akima spline with natural boundary conditions. + This method uses the non-rounded corner algorithm of Wodicka. + + -- Variable: gsl_interp_akima_periodic + + Non-rounded Akima spline with periodic boundary conditions. + This method uses the non-rounded corner algorithm of Wodicka. + + -- Variable: gsl_interp_steffen + + Steffen’s method guarantees the monotonicity of the + interpolating function between the given data points. + Therefore, minima and maxima can only occur exactly at the + data points, and there can never be spurious oscillations + between data points. The interpolated function is piecewise + cubic in each interval. The resulting curve and its first + derivative are guaranteed to be continuous, but the second + derivative may be discontinuous. + +The following related functions are available: + + -- Function: const char * gsl_interp_name (const gsl_interp * interp) + + This function returns the name of the interpolation type used by + ‘interp’. For example: + + printf ("interp uses '%s' interpolation.\n", gsl_interp_name (interp)); + + would print something like: + + interp uses 'cspline' interpolation. + + -- Function: unsigned int gsl_interp_min_size (const gsl_interp + * interp) + -- Function: unsigned int gsl_interp_type_min_size (const + gsl_interp_type * T) + + These functions return the minimum number of points required by the + interpolation object ‘interp’ or interpolation type ‘T’. For + example, Akima spline interpolation requires a minimum of 5 points. + + +File: gsl-ref.info, Node: 1D Index Look-up and Acceleration, Next: 1D Evaluation of Interpolating Functions, Prev: 1D Interpolation Types, Up: Interpolation + +30.4 1D Index Look-up and Acceleration +====================================== + +The state of searches can be stored in a *note gsl_interp_accel: 973. +object, which is a kind of iterator for interpolation lookups. + + -- Type: gsl_interp_accel + + This workspace stores state variables for interpolation lookups. + It caches the previous value of an index lookup. When the + subsequent interpolation point falls in the same interval its index + value can be returned immediately. + + -- Function: size_t gsl_interp_bsearch (const double x_array[], + double x, size_t index_lo, size_t index_hi) + + This function returns the index i of the array ‘x_array’ such that + ‘x_array[i] <= x < x_array[i+1]’. The index is searched for in the + range [‘index_lo’, ‘index_hi’]. An inline version of this function + is used when ‘HAVE_INLINE’ is defined. + + -- Function: gsl_interp_accel * gsl_interp_accel_alloc (void) + + This function returns a pointer to an accelerator object, which is + a kind of iterator for interpolation lookups. It tracks the state + of lookups, thus allowing for application of various acceleration + strategies. + + -- Function: size_t gsl_interp_accel_find (gsl_interp_accel * a, const + double x_array[], size_t size, double x) + + This function performs a lookup action on the data array ‘x_array’ + of size ‘size’, using the given accelerator ‘a’. This is how + lookups are performed during evaluation of an interpolation. The + function returns an index i such that ‘x_array[i] <= x < + x_array[i+1]’. An inline version of this function is used when + ‘HAVE_INLINE’ is defined. + + -- Function: int gsl_interp_accel_reset (gsl_interp_accel * acc); + + This function reinitializes the accelerator object ‘acc’. It + should be used when the cached information is no longer + applicable—for example, when switching to a new dataset. + + -- Function: void gsl_interp_accel_free (gsl_interp_accel* acc) + + This function frees the accelerator object ‘acc’. + + +File: gsl-ref.info, Node: 1D Evaluation of Interpolating Functions, Next: 1D Higher-level Interface, Prev: 1D Index Look-up and Acceleration, Up: Interpolation + +30.5 1D Evaluation of Interpolating Functions +============================================= + + -- Function: double gsl_interp_eval (const gsl_interp * interp, const + double xa[], const double ya[], double x, gsl_interp_accel + * acc) + -- Function: int gsl_interp_eval_e (const gsl_interp * interp, const + double xa[], const double ya[], double x, gsl_interp_accel + * acc, double * y) + + These functions return the interpolated value of ‘y’ for a given + point ‘x’, using the interpolation object ‘interp’, data arrays + ‘xa’ and ‘ya’ and the accelerator ‘acc’. When ‘x’ is outside the + range of ‘xa’, the error code *note GSL_EDOM: 28. is returned with + a value of *note GSL_NAN: 3c. for ‘y’. + + -- Function: double gsl_interp_eval_deriv (const gsl_interp * interp, + const double xa[], const double ya[], double x, + gsl_interp_accel * acc) + -- Function: int gsl_interp_eval_deriv_e (const gsl_interp * interp, + const double xa[], const double ya[], double x, + gsl_interp_accel * acc, double * d) + + These functions return the derivative ‘d’ of an interpolated + function for a given point ‘x’, using the interpolation object + ‘interp’, data arrays ‘xa’ and ‘ya’ and the accelerator ‘acc’. + + -- Function: double gsl_interp_eval_deriv2 (const gsl_interp * interp, + const double xa[], const double ya[], double x, + gsl_interp_accel * acc) + -- Function: int gsl_interp_eval_deriv2_e (const gsl_interp * interp, + const double xa[], const double ya[], double x, + gsl_interp_accel * acc, double * d2) + + These functions return the second derivative ‘d2’ of an + interpolated function for a given point ‘x’, using the + interpolation object ‘interp’, data arrays ‘xa’ and ‘ya’ and the + accelerator ‘acc’. + + -- Function: double gsl_interp_eval_integ (const gsl_interp * interp, + const double xa[], const double ya[], double a, double b, + gsl_interp_accel * acc) + -- Function: int gsl_interp_eval_integ_e (const gsl_interp * interp, + const double xa[], const double ya[], double a, double b, + gsl_interp_accel * acc, double * result) + + These functions return the numerical integral ‘result’ of an + interpolated function over the range [‘a’, ‘b’], using the + interpolation object ‘interp’, data arrays ‘xa’ and ‘ya’ and the + accelerator ‘acc’. + + +File: gsl-ref.info, Node: 1D Higher-level Interface, Next: 1D Interpolation Example Programs, Prev: 1D Evaluation of Interpolating Functions, Up: Interpolation + +30.6 1D Higher-level Interface +============================== + +The functions described in the previous sections required the user to +supply pointers to the x and y arrays on each call. The following +functions are equivalent to the corresponding *note gsl_interp: 962. +functions but maintain a copy of this data in the *note gsl_spline: 982. +object. This removes the need to pass both ‘xa’ and ‘ya’ as arguments +on each evaluation. These functions are defined in the header file +‘gsl_spline.h’. + + -- Type: gsl_spline + + This workspace provides a higher level interface for the *note + gsl_interp: 962. object + + -- Function: gsl_spline * gsl_spline_alloc (const gsl_interp_type * T, + size_t size) + + -- Function: int gsl_spline_init (gsl_spline * spline, const + double xa[], const double ya[], size_t size) + + -- Function: void gsl_spline_free (gsl_spline * spline) + + -- Function: const char * gsl_spline_name (const gsl_spline * spline) + + -- Function: unsigned int gsl_spline_min_size (const gsl_spline + * spline) + + -- Function: double gsl_spline_eval (const gsl_spline * spline, + double x, gsl_interp_accel * acc) + -- Function: int gsl_spline_eval_e (const gsl_spline * spline, + double x, gsl_interp_accel * acc, double * y) + + -- Function: double gsl_spline_eval_deriv (const gsl_spline * spline, + double x, gsl_interp_accel * acc) + -- Function: int gsl_spline_eval_deriv_e (const gsl_spline * spline, + double x, gsl_interp_accel * acc, double * d) + + -- Function: double gsl_spline_eval_deriv2 (const gsl_spline * spline, + double x, gsl_interp_accel * acc) + -- Function: int gsl_spline_eval_deriv2_e (const gsl_spline * spline, + double x, gsl_interp_accel * acc, double * d2) + + -- Function: double gsl_spline_eval_integ (const gsl_spline * spline, + double a, double b, gsl_interp_accel * acc) + -- Function: int gsl_spline_eval_integ_e (const gsl_spline * spline, + double a, double b, gsl_interp_accel * acc, double * result) + + +File: gsl-ref.info, Node: 1D Interpolation Example Programs, Next: Introduction to 2D Interpolation, Prev: 1D Higher-level Interface, Up: Interpolation + +30.7 1D Interpolation Example Programs +====================================== + +The following program demonstrates the use of the interpolation and +spline functions. It computes a cubic spline interpolation of the +10-point dataset (x_i, y_i) where x_i = i + \sin(i)/2 and y_i = i + +\cos(i^2) for i = 0 \dots 9. + + #include + #include + #include + #include + #include + + int + main (void) + { + int i; + double xi, yi, x[10], y[10]; + + printf ("#m=0,S=17\n"); + + for (i = 0; i < 10; i++) + { + x[i] = i + 0.5 * sin (i); + y[i] = i + cos (i * i); + printf ("%g %g\n", x[i], y[i]); + } + + printf ("#m=1,S=0\n"); + + { + gsl_interp_accel *acc + = gsl_interp_accel_alloc (); + gsl_spline *spline + = gsl_spline_alloc (gsl_interp_cspline, 10); + + gsl_spline_init (spline, x, y, 10); + + for (xi = x[0]; xi < x[9]; xi += 0.01) + { + yi = gsl_spline_eval (spline, xi, acc); + printf ("%g %g\n", xi, yi); + } + gsl_spline_free (spline); + gsl_interp_accel_free (acc); + } + return 0; + } + +The output is designed to be used with the GNU plotutils ‘graph’ +program: + + $ ./a.out > interp.dat + $ graph -T ps < interp.dat > interp.ps + +[image src="interp.png"] + +Figure: Cubic spline interpolation + +Fig. %s shows a smooth interpolation of the original points. The +interpolation method can be changed simply by varying the first argument +of *note gsl_spline_alloc(): 983. + +The next program demonstrates a periodic cubic spline with 4 data +points. Note that the first and last points must be supplied with the +same y-value for a periodic spline. + + #include + #include + #include + #include + #include + + int + main (void) + { + int N = 4; + double x[4] = {0.00, 0.10, 0.27, 0.30}; + double y[4] = {0.15, 0.70, -0.10, 0.15}; + /* Note: y[0] == y[3] for periodic data */ + + gsl_interp_accel *acc = gsl_interp_accel_alloc (); + const gsl_interp_type *t = gsl_interp_cspline_periodic; + gsl_spline *spline = gsl_spline_alloc (t, N); + + int i; double xi, yi; + + printf ("#m=0,S=5\n"); + for (i = 0; i < N; i++) + { + printf ("%g %g\n", x[i], y[i]); + } + + printf ("#m=1,S=0\n"); + gsl_spline_init (spline, x, y, N); + + for (i = 0; i <= 100; i++) + { + xi = (1 - i / 100.0) * x[0] + (i / 100.0) * x[N-1]; + yi = gsl_spline_eval (spline, xi, acc); + printf ("%g %g\n", xi, yi); + } + + gsl_spline_free (spline); + gsl_interp_accel_free (acc); + return 0; + } + +The output can be plotted with GNU ‘graph’: + + $ ./a.out > interp.dat + $ graph -T ps < interp.dat > interp.ps + +[image src="interpp.png"] + +Figure: Periodic cubic spline interpolation + +Fig. %s shows a periodic interpolation of the original points. The +slope of the fitted curve is the same at the beginning and end of the +data, and the second derivative is also. + +The next program illustrates the difference between the cubic spline, +Akima, and Steffen interpolation types on a difficult dataset. + + #include + #include + #include + + #include + #include + + int + main(void) + { + size_t i; + const size_t N = 9; + + /* this dataset is taken from + * J. M. Hyman, Accurate Monotonicity preserving cubic interpolation, + * SIAM J. Sci. Stat. Comput. 4, 4, 1983. */ + const double x[] = { 7.99, 8.09, 8.19, 8.7, 9.2, + 10.0, 12.0, 15.0, 20.0 }; + const double y[] = { 0.0, 2.76429e-5, 4.37498e-2, + 0.169183, 0.469428, 0.943740, + 0.998636, 0.999919, 0.999994 }; + + gsl_interp_accel *acc = gsl_interp_accel_alloc(); + gsl_spline *spline_cubic = gsl_spline_alloc(gsl_interp_cspline, N); + gsl_spline *spline_akima = gsl_spline_alloc(gsl_interp_akima, N); + gsl_spline *spline_steffen = gsl_spline_alloc(gsl_interp_steffen, N); + + gsl_spline_init(spline_cubic, x, y, N); + gsl_spline_init(spline_akima, x, y, N); + gsl_spline_init(spline_steffen, x, y, N); + + for (i = 0; i < N; ++i) + printf("%g %g\n", x[i], y[i]); + + printf("\n\n"); + + for (i = 0; i <= 100; ++i) + { + double xi = (1 - i / 100.0) * x[0] + (i / 100.0) * x[N-1]; + double yi_cubic = gsl_spline_eval(spline_cubic, xi, acc); + double yi_akima = gsl_spline_eval(spline_akima, xi, acc); + double yi_steffen = gsl_spline_eval(spline_steffen, xi, acc); + + printf("%g %g %g %g\n", xi, yi_cubic, yi_akima, yi_steffen); + } + + gsl_spline_free(spline_cubic); + gsl_spline_free(spline_akima); + gsl_spline_free(spline_steffen); + gsl_interp_accel_free(acc); + + return 0; + } + +[image src="interp_compare.png"] + +Figure: Comparison of different 1D interpolation methods + +The output is shown in Fig. %s. The cubic method exhibits a local +maxima between the 6th and 7th data points and continues oscillating for +the rest of the data. Akima also shows a local maxima but recovers and +follows the data well after the 7th grid point. Steffen preserves +monotonicity in all intervals and does not exhibit oscillations, at the +expense of having a discontinuous second derivative. + + +File: gsl-ref.info, Node: Introduction to 2D Interpolation, Next: 2D Interpolation Functions, Prev: 1D Interpolation Example Programs, Up: Interpolation + +30.8 Introduction to 2D Interpolation +===================================== + +Given a set of x coordinates x_1,...,x_m and a set of y coordinates +y_1,...,y_n, each in increasing order, plus a set of function values +z_{ij} for each grid point (x_i,y_j), the routines described in this +section compute a continuous interpolation function z(x,y) such that +z(x_i,y_j) = z_{ij}. + + +File: gsl-ref.info, Node: 2D Interpolation Functions, Next: 2D Interpolation Grids, Prev: Introduction to 2D Interpolation, Up: Interpolation + +30.9 2D Interpolation Functions +=============================== + +The interpolation function for a given dataset is stored in a *note +gsl_interp2d: 996. object. These are created by the following +functions. + + -- Type: gsl_interp2d + + Workspace for 2D interpolation + + -- Function: gsl_interp2d * gsl_interp2d_alloc (const gsl_interp2d_type + * T, const size_t xsize, const size_t ysize) + + This function returns a pointer to a newly allocated interpolation + object of type ‘T’ for ‘xsize’ grid points in the x direction and + ‘ysize’ grid points in the y direction. + + -- Function: int gsl_interp2d_init (gsl_interp2d * interp, const + double xa[], const double ya[], const double za[], const + size_t xsize, const size_t ysize) + + This function initializes the interpolation object ‘interp’ for the + data (‘xa’, ‘ya’, ‘za’) where ‘xa’ and ‘ya’ are arrays of the x and + y grid points of size ‘xsize’ and ‘ysize’ respectively, and ‘za’ is + an array of function values of size ‘xsize’ * ‘ysize’. The + interpolation object (*note gsl_interp2d: 996.) does not save the + data arrays ‘xa’, ‘ya’, and ‘za’ and only stores the static state + computed from the data. The ‘xa’ and ‘ya’ data arrays are always + assumed to be strictly ordered, with increasing x,y values; the + behavior for other arrangements is not defined. + + -- Function: void gsl_interp2d_free (gsl_interp2d * interp) + + This function frees the interpolation object ‘interp’. + + +File: gsl-ref.info, Node: 2D Interpolation Grids, Next: 2D Interpolation Types, Prev: 2D Interpolation Functions, Up: Interpolation + +30.10 2D Interpolation Grids +============================ + +The 2D interpolation routines access the function values z_{ij} with the +following ordering: + + z_{ij} = za[j*xsize + i] + +with i = 0,...,xsize-1 and j = 0,...,ysize-1. However, for ease of use, +the following functions are provided to add and retrieve elements from +the function grid without requiring knowledge of the internal ordering. + + -- Function: int gsl_interp2d_set (const gsl_interp2d * interp, + double za[], const size_t i, const size_t j, const double z) + + This function sets the value z_{ij} for grid point (‘i’, ‘j’) of + the array ‘za’ to ‘z’. + + -- Function: double gsl_interp2d_get (const gsl_interp2d * interp, + const double za[], const size_t i, const size_t j) + + This function returns the value z_{ij} for grid point (‘i’, ‘j’) + stored in the array ‘za’. + + -- Function: size_t gsl_interp2d_idx (const gsl_interp2d * interp, + const size_t i, const size_t j) + + This function returns the index corresponding to the grid point + (‘i’, ‘j’). The index is given by j*xsize + i. + + +File: gsl-ref.info, Node: 2D Interpolation Types, Next: 2D Evaluation of Interpolating Functions, Prev: 2D Interpolation Grids, Up: Interpolation + +30.11 2D Interpolation Types +============================ + + -- Type: gsl_interp2d_type + + The interpolation library provides the following 2D interpolation + types: + + -- Variable: gsl_interp2d_bilinear + + Bilinear interpolation. This interpolation method does not + require any additional memory. + + -- Variable: gsl_interp2d_bicubic + + Bicubic interpolation. + + -- Function: const char * gsl_interp2d_name (const gsl_interp2d + * interp) + + This function returns the name of the interpolation type used by + ‘interp’. For example: + + printf ("interp uses '%s' interpolation.\n", gsl_interp2d_name (interp)); + + would print something like: + + interp uses 'bilinear' interpolation. + + -- Function: unsigned int gsl_interp2d_min_size (const gsl_interp2d + * interp) + -- Function: unsigned int gsl_interp2d_type_min_size (const + gsl_interp2d_type * T) + + These functions return the minimum number of points required by the + interpolation object ‘interp’ or interpolation type ‘T’. For + example, bicubic interpolation requires a minimum of 4 points. + + +File: gsl-ref.info, Node: 2D Evaluation of Interpolating Functions, Next: 2D Higher-level Interface, Prev: 2D Interpolation Types, Up: Interpolation + +30.12 2D Evaluation of Interpolating Functions +============================================== + + -- Function: double gsl_interp2d_eval (const gsl_interp2d * interp, + const double xa[], const double ya[], const double za[], const + double x, const double y, gsl_interp_accel * xacc, + gsl_interp_accel * yacc) + -- Function: int gsl_interp2d_eval_e (const gsl_interp2d * interp, + const double xa[], const double ya[], const double za[], const + double x, const double y, gsl_interp_accel * xacc, + gsl_interp_accel * yacc, double * z) + + These functions return the interpolated value of ‘z’ for a given + point (‘x’, ‘y’), using the interpolation object ‘interp’, data + arrays ‘xa’, ‘ya’, and ‘za’ and the accelerators ‘xacc’ and ‘yacc’. + When ‘x’ is outside the range of ‘xa’ or ‘y’ is outside the range + of ‘ya’, the error code *note GSL_EDOM: 28. is returned. + + -- Function: double gsl_interp2d_eval_extrap (const gsl_interp2d + * interp, const double xa[], const double ya[], const + double za[], const double x, const double y, gsl_interp_accel + * xacc, gsl_interp_accel * yacc) + -- Function: int gsl_interp2d_eval_extrap_e (const gsl_interp2d + * interp, const double xa[], const double ya[], const + double za[], const double x, const double y, gsl_interp_accel + * xacc, gsl_interp_accel * yacc, double * z) + + These functions return the interpolated value of ‘z’ for a given + point (‘x’, ‘y’), using the interpolation object ‘interp’, data + arrays ‘xa’, ‘ya’, and ‘za’ and the accelerators ‘xacc’ and ‘yacc’. + The functions perform no bounds checking, so when ‘x’ is outside + the range of ‘xa’ or ‘y’ is outside the range of ‘ya’, + extrapolation is performed. + + -- Function: double gsl_interp2d_eval_deriv_x (const gsl_interp2d + * interp, const double xa[], const double ya[], const + double za[], const double x, const double y, gsl_interp_accel + * xacc, gsl_interp_accel * yacc) + -- Function: int gsl_interp2d_eval_deriv_x_e (const gsl_interp2d + * interp, const double xa[], const double ya[], const + double za[], const double x, const double y, gsl_interp_accel + * xacc, gsl_interp_accel * yacc, double * d) + + These functions return the interpolated value ‘d’ = \partial z / + \partial x for a given point (‘x’, ‘y’), using the interpolation + object ‘interp’, data arrays ‘xa’, ‘ya’, and ‘za’ and the + accelerators ‘xacc’ and ‘yacc’. When ‘x’ is outside the range of + ‘xa’ or ‘y’ is outside the range of ‘ya’, the error code *note + GSL_EDOM: 28. is returned. + + -- Function: double gsl_interp2d_eval_deriv_y (const gsl_interp2d + * interp, const double xa[], const double ya[], const + double za[], const double x, const double y, gsl_interp_accel + * xacc, gsl_interp_accel * yacc) + -- Function: int gsl_interp2d_eval_deriv_y_e (const gsl_interp2d + * interp, const double xa[], const double ya[], const + double za[], const double x, const double y, gsl_interp_accel + * xacc, gsl_interp_accel * yacc, double * d) + + These functions return the interpolated value ‘d’ = \partial z / + \partial y for a given point (‘x’, ‘y’), using the interpolation + object ‘interp’, data arrays ‘xa’, ‘ya’, and ‘za’ and the + accelerators ‘xacc’ and ‘yacc’. When ‘x’ is outside the range of + ‘xa’ or ‘y’ is outside the range of ‘ya’, the error code *note + GSL_EDOM: 28. is returned. + + -- Function: double gsl_interp2d_eval_deriv_xx (const gsl_interp2d + * interp, const double xa[], const double ya[], const + double za[], const double x, const double y, gsl_interp_accel + * xacc, gsl_interp_accel * yacc) + -- Function: int gsl_interp2d_eval_deriv_xx_e (const gsl_interp2d + * interp, const double xa[], const double ya[], const + double za[], const double x, const double y, gsl_interp_accel + * xacc, gsl_interp_accel * yacc, double * d) + + These functions return the interpolated value ‘d’ = \partial^2 z / + \partial x^2 for a given point (‘x’, ‘y’), using the interpolation + object ‘interp’, data arrays ‘xa’, ‘ya’, and ‘za’ and the + accelerators ‘xacc’ and ‘yacc’. When ‘x’ is outside the range of + ‘xa’ or ‘y’ is outside the range of ‘ya’, the error code *note + GSL_EDOM: 28. is returned. + + -- Function: double gsl_interp2d_eval_deriv_yy (const gsl_interp2d + * interp, const double xa[], const double ya[], const + double za[], const double x, const double y, gsl_interp_accel + * xacc, gsl_interp_accel * yacc) + -- Function: int gsl_interp2d_eval_deriv_yy_e (const gsl_interp2d + * interp, const double xa[], const double ya[], const + double za[], const double x, const double y, gsl_interp_accel + * xacc, gsl_interp_accel * yacc, double * d) + + These functions return the interpolated value ‘d’ = \partial^2 z / + \partial y^2 for a given point (‘x’, ‘y’), using the interpolation + object ‘interp’, data arrays ‘xa’, ‘ya’, and ‘za’ and the + accelerators ‘xacc’ and ‘yacc’. When ‘x’ is outside the range of + ‘xa’ or ‘y’ is outside the range of ‘ya’, the error code *note + GSL_EDOM: 28. is returned. + + -- Function: double gsl_interp2d_eval_deriv_xy (const gsl_interp2d + * interp, const double xa[], const double ya[], const + double za[], const double x, const double y, gsl_interp_accel + * xacc, gsl_interp_accel * yacc) + -- Function: int gsl_interp2d_eval_deriv_xy_e (const gsl_interp2d + * interp, const double xa[], const double ya[], const + double za[], const double x, const double y, gsl_interp_accel + * xacc, gsl_interp_accel * yacc, double * d) + + These functions return the interpolated value ‘d’ = \partial^2 z / + \partial x \partial y for a given point (‘x’, ‘y’), using the + interpolation object ‘interp’, data arrays ‘xa’, ‘ya’, and ‘za’ and + the accelerators ‘xacc’ and ‘yacc’. When ‘x’ is outside the range + of ‘xa’ or ‘y’ is outside the range of ‘ya’, the error code *note + GSL_EDOM: 28. is returned. + + +File: gsl-ref.info, Node: 2D Higher-level Interface, Next: 2D Interpolation Example programs, Prev: 2D Evaluation of Interpolating Functions, Up: Interpolation + +30.13 2D Higher-level Interface +=============================== + +The functions described in the previous sections required the user to +supply pointers to the x, y, and z arrays on each call. The following +functions are equivalent to the corresponding ‘gsl_interp2d’ functions +but maintain a copy of this data in the *note gsl_spline2d: 9b5. object. +This removes the need to pass ‘xa’, ‘ya’, and ‘za’ as arguments on each +evaluation. These functions are defined in the header file +‘gsl_spline2d.h’. + + -- Type: gsl_spline2d + + This workspace provides a higher level interface for the *note + gsl_interp2d: 996. object + + -- Function: gsl_spline2d * gsl_spline2d_alloc (const gsl_interp2d_type + * T, size_t xsize, size_t ysize) + + -- Function: int gsl_spline2d_init (gsl_spline2d * spline, const + double xa[], const double ya[], const double za[], + size_t xsize, size_t ysize) + + -- Function: void gsl_spline2d_free (gsl_spline2d * spline) + + -- Function: const char * gsl_spline2d_name (const gsl_spline2d + * spline) + + -- Function: unsigned int gsl_spline2d_min_size (const gsl_spline2d + * spline) + + -- Function: double gsl_spline2d_eval (const gsl_spline2d * spline, + const double x, const double y, gsl_interp_accel * xacc, + gsl_interp_accel * yacc) + -- Function: int gsl_spline2d_eval_e (const gsl_spline2d * spline, + const double x, const double y, gsl_interp_accel * xacc, + gsl_interp_accel * yacc, double * z) + + -- Function: double gsl_spline2d_eval_deriv_x (const gsl_spline2d + * spline, const double x, const double y, gsl_interp_accel + * xacc, gsl_interp_accel * yacc) + -- Function: int gsl_spline2d_eval_deriv_x_e (const gsl_spline2d + * spline, const double x, const double y, gsl_interp_accel + * xacc, gsl_interp_accel * yacc, double * d) + + -- Function: double gsl_spline2d_eval_deriv_y (const gsl_spline2d + * spline, const double x, const double y, gsl_interp_accel + * xacc, gsl_interp_accel * yacc) + -- Function: int gsl_spline2d_eval_deriv_y_e (const gsl_spline2d + * spline, const double x, const double y, gsl_interp_accel + * xacc, gsl_interp_accel * yacc, double * d) + + -- Function: double gsl_spline2d_eval_deriv_xx (const gsl_spline2d + * spline, const double x, const double y, gsl_interp_accel + * xacc, gsl_interp_accel * yacc) + -- Function: int gsl_spline2d_eval_deriv_xx_e (const gsl_spline2d + * spline, const double x, const double y, gsl_interp_accel + * xacc, gsl_interp_accel * yacc, double * d) + + -- Function: double gsl_spline2d_eval_deriv_yy (const gsl_spline2d + * spline, const double x, const double y, gsl_interp_accel + * xacc, gsl_interp_accel * yacc) + -- Function: int gsl_spline2d_eval_deriv_yy_e (const gsl_spline2d + * spline, const double x, const double y, gsl_interp_accel + * xacc, gsl_interp_accel * yacc, double * d) + + -- Function: double gsl_spline2d_eval_deriv_xy (const gsl_spline2d + * spline, const double x, const double y, gsl_interp_accel + * xacc, gsl_interp_accel * yacc) + -- Function: int gsl_spline2d_eval_deriv_xy_e (const gsl_spline2d + * spline, const double x, const double y, gsl_interp_accel + * xacc, gsl_interp_accel * yacc, double * d) + + -- Function: int gsl_spline2d_set (const gsl_spline2d * spline, + double za[], const size_t i, const size_t j, const double z) + + -- Function: double gsl_spline2d_get (const gsl_spline2d * spline, + const double za[], const size_t i, const size_t j) + + This function returns the value z_{ij} for grid point (‘i’, ‘j’) + stored in the array ‘za’. + + +File: gsl-ref.info, Node: 2D Interpolation Example programs, Next: References and Further Reading<22>, Prev: 2D Higher-level Interface, Up: Interpolation + +30.14 2D Interpolation Example programs +======================================= + +The following example performs bilinear interpolation on the unit +square, using z values of (0,1,0.5,1) going clockwise around the square. + + #include + #include + + #include + #include + #include + + int + main() + { + const gsl_interp2d_type *T = gsl_interp2d_bilinear; + const size_t N = 100; /* number of points to interpolate */ + const double xa[] = { 0.0, 1.0 }; /* define unit square */ + const double ya[] = { 0.0, 1.0 }; + const size_t nx = sizeof(xa) / sizeof(double); /* x grid points */ + const size_t ny = sizeof(ya) / sizeof(double); /* y grid points */ + double *za = malloc(nx * ny * sizeof(double)); + gsl_spline2d *spline = gsl_spline2d_alloc(T, nx, ny); + gsl_interp_accel *xacc = gsl_interp_accel_alloc(); + gsl_interp_accel *yacc = gsl_interp_accel_alloc(); + size_t i, j; + + /* set z grid values */ + gsl_spline2d_set(spline, za, 0, 0, 0.0); + gsl_spline2d_set(spline, za, 0, 1, 1.0); + gsl_spline2d_set(spline, za, 1, 1, 0.5); + gsl_spline2d_set(spline, za, 1, 0, 1.0); + + /* initialize interpolation */ + gsl_spline2d_init(spline, xa, ya, za, nx, ny); + + /* interpolate N values in x and y and print out grid for plotting */ + for (i = 0; i < N; ++i) + { + double xi = i / (N - 1.0); + + for (j = 0; j < N; ++j) + { + double yj = j / (N - 1.0); + double zij = gsl_spline2d_eval(spline, xi, yj, xacc, yacc); + + printf("%f %f %f\n", xi, yj, zij); + } + printf("\n"); + } + + gsl_spline2d_free(spline); + gsl_interp_accel_free(xacc); + gsl_interp_accel_free(yacc); + free(za); + + return 0; + } + +The results of the interpolation are shown in Fig. %s, where the +corners are labeled with their fixed z values. + +[image src="interp2d.png"] + +Figure: 2D interpolation example + + +File: gsl-ref.info, Node: References and Further Reading<22>, Prev: 2D Interpolation Example programs, Up: Interpolation + +30.15 References and Further Reading +==================================== + +Descriptions of the interpolation algorithms and further references can +be found in the following publications: + + * C.W. Ueberhuber, `Numerical Computation (Volume 1), Chapter 9 + “Interpolation”', Springer (1997), ISBN 3-540-62058-3. + + * D.M. Young, R.T. Gregory, `A Survey of Numerical Mathematics + (Volume 1), Chapter 6.8', Dover (1988), ISBN 0-486-65691-8. + + * M. Steffen, `A simple method for monotonic interpolation in one + dimension', Astron. Astrophys. 239, 443-450, 1990. + + +File: gsl-ref.info, Node: Numerical Differentiation, Next: Chebyshev Approximations, Prev: Interpolation, Up: Top + +31 Numerical Differentiation +**************************** + +The functions described in this chapter compute numerical derivatives by +finite differencing. An adaptive algorithm is used to find the best +choice of finite difference and to estimate the error in the derivative. +These functions are declared in the header file ‘gsl_deriv.h’. + +* Menu: + +* Functions:: +* Examples: Examples<23>. +* References and Further Reading: References and Further Reading<23>. + + +File: gsl-ref.info, Node: Functions, Next: Examples<23>, Up: Numerical Differentiation + +31.1 Functions +============== + + -- Function: int gsl_deriv_central (const gsl_function * f, double x, + double h, double * result, double * abserr) + + This function computes the numerical derivative of the function ‘f’ + at the point ‘x’ using an adaptive central difference algorithm + with a step-size of ‘h’. The derivative is returned in ‘result’ + and an estimate of its absolute error is returned in ‘abserr’. + + The initial value of ‘h’ is used to estimate an optimal step-size, + based on the scaling of the truncation error and round-off error in + the derivative calculation. The derivative is computed using a + 5-point rule for equally spaced abscissae at x - h, x - h/2, x, x + + h/2, x+h, with an error estimate taken from the difference between + the 5-point rule and the corresponding 3-point rule x-h, x, x+h. + Note that the value of the function at x does not contribute to the + derivative calculation, so only 4-points are actually used. + + -- Function: int gsl_deriv_forward (const gsl_function * f, double x, + double h, double * result, double * abserr) + + This function computes the numerical derivative of the function ‘f’ + at the point ‘x’ using an adaptive forward difference algorithm + with a step-size of ‘h’. The function is evaluated only at points + greater than ‘x’, and never at ‘x’ itself. The derivative is + returned in ‘result’ and an estimate of its absolute error is + returned in ‘abserr’. This function should be used if f(x) has a + discontinuity at ‘x’, or is undefined for values less than ‘x’. + + The initial value of ‘h’ is used to estimate an optimal step-size, + based on the scaling of the truncation error and round-off error in + the derivative calculation. The derivative at x is computed using + an “open” 4-point rule for equally spaced abscissae at x+h/4, x + + h/2, x + 3h/4, x+h, with an error estimate taken from the + difference between the 4-point rule and the corresponding 2-point + rule x+h/2, x+h. + + -- Function: int gsl_deriv_backward (const gsl_function * f, double x, + double h, double * result, double * abserr) + + This function computes the numerical derivative of the function ‘f’ + at the point ‘x’ using an adaptive backward difference algorithm + with a step-size of ‘h’. The function is evaluated only at points + less than ‘x’, and never at ‘x’ itself. The derivative is returned + in ‘result’ and an estimate of its absolute error is returned in + ‘abserr’. This function should be used if f(x) has a discontinuity + at ‘x’, or is undefined for values greater than ‘x’. + + This function is equivalent to calling *note gsl_deriv_forward(): + 9d0. with a negative step-size. + + +File: gsl-ref.info, Node: Examples<23>, Next: References and Further Reading<23>, Prev: Functions, Up: Numerical Differentiation + +31.2 Examples +============= + +The following code estimates the derivative of the function f(x) = +x^{3/2} at x = 2 and at x = 0. The function f(x) is undefined for x < 0 +so the derivative at x=0 is computed using *note gsl_deriv_forward(): +9d0. + + #include + #include + #include + + double f (double x, void * params) + { + (void)(params); /* avoid unused parameter warning */ + return pow (x, 1.5); + } + + int + main (void) + { + gsl_function F; + double result, abserr; + + F.function = &f; + F.params = 0; + + printf ("f(x) = x^(3/2)\n"); + + gsl_deriv_central (&F, 2.0, 1e-8, &result, &abserr); + printf ("x = 2.0\n"); + printf ("f'(x) = %.10f +/- %.10f\n", result, abserr); + printf ("exact = %.10f\n\n", 1.5 * sqrt(2.0)); + + gsl_deriv_forward (&F, 0.0, 1e-8, &result, &abserr); + printf ("x = 0.0\n"); + printf ("f'(x) = %.10f +/- %.10f\n", result, abserr); + printf ("exact = %.10f\n", 0.0); + + return 0; + } + +Here is the output of the program, + + f(x) = x^(3/2) + x = 2.0 + f'(x) = 2.1213203120 +/- 0.0000005006 + exact = 2.1213203436 + + x = 0.0 + f'(x) = 0.0000000160 +/- 0.0000000339 + exact = 0.0000000000 + + +File: gsl-ref.info, Node: References and Further Reading<23>, Prev: Examples<23>, Up: Numerical Differentiation + +31.3 References and Further Reading +=================================== + +The algorithms used by these functions are described in the following +sources: + + * Abramowitz and Stegun, `Handbook of Mathematical Functions', + Section 25.3.4, and Table 25.5 (Coefficients for Differentiation). + + * S.D. Conte and Carl de Boor, `Elementary Numerical Analysis: An + Algorithmic Approach', McGraw-Hill, 1972. + + +File: gsl-ref.info, Node: Chebyshev Approximations, Next: Series Acceleration, Prev: Numerical Differentiation, Up: Top + +32 Chebyshev Approximations +*************************** + +This chapter describes routines for computing Chebyshev approximations +to univariate functions. A Chebyshev approximation is a truncation of +the series f(x) = \sum c_n T_n(x), where the Chebyshev polynomials +T_n(x) = \cos(n \arccos x) provide an orthogonal basis of polynomials on +the interval [-1,1] with the weight function 1 / \sqrt{1-x^2}. The +first few Chebyshev polynomials are, T_0(x) = 1, T_1(x) = x, T_2(x) = 2 +x^2 - 1. For further information see Abramowitz & Stegun, Chapter 22. + +The functions described in this chapter are declared in the header file +‘gsl_chebyshev.h’. + +* Menu: + +* Definitions:: +* Creation and Calculation of Chebyshev Series:: +* Auxiliary Functions:: +* Chebyshev Series Evaluation:: +* Derivatives and Integrals:: +* Examples: Examples<24>. +* References and Further Reading: References and Further Reading<24>. + + +File: gsl-ref.info, Node: Definitions, Next: Creation and Calculation of Chebyshev Series, Up: Chebyshev Approximations + +32.1 Definitions +================ + + -- Type: gsl_cheb_series + + A Chebyshev series is stored using the following structure: + + typedef struct + { + double * c; /* coefficients c[0] .. c[order] */ + int order; /* order of expansion */ + double a; /* lower interval point */ + double b; /* upper interval point */ + ... + } gsl_cheb_series + +The approximation is made over the range [a,b] using ‘order’ + 1 terms, +including the coefficient c[0]. The series is computed using the +following convention, + + f(x) = (c_0 / 2) + \sum_{n=1} c_n T_n(x) + +which is needed when accessing the coefficients directly. + + +File: gsl-ref.info, Node: Creation and Calculation of Chebyshev Series, Next: Auxiliary Functions, Prev: Definitions, Up: Chebyshev Approximations + +32.2 Creation and Calculation of Chebyshev Series +================================================= + + -- Function: gsl_cheb_series * gsl_cheb_alloc (const size_t n) + + This function allocates space for a Chebyshev series of order ‘n’ + and returns a pointer to a new *note gsl_cheb_series: 9d7. struct. + + -- Function: void gsl_cheb_free (gsl_cheb_series * cs) + + This function frees a previously allocated Chebyshev series ‘cs’. + + -- Function: int gsl_cheb_init (gsl_cheb_series * cs, const + gsl_function * f, const double a, const double b) + + This function computes the Chebyshev approximation ‘cs’ for the + function ‘f’ over the range (a,b) to the previously specified + order. The computation of the Chebyshev approximation is an O(n^2) + process, and requires n function evaluations. + + +File: gsl-ref.info, Node: Auxiliary Functions, Next: Chebyshev Series Evaluation, Prev: Creation and Calculation of Chebyshev Series, Up: Chebyshev Approximations + +32.3 Auxiliary Functions +======================== + +The following functions provide information about an existing Chebyshev +series. + + -- Function: size_t gsl_cheb_order (const gsl_cheb_series * cs) + + This function returns the order of Chebyshev series ‘cs’. + + -- Function: size_t gsl_cheb_size (const gsl_cheb_series * cs) + -- Function: double * gsl_cheb_coeffs (const gsl_cheb_series * cs) + + These functions return the size of the Chebyshev coefficient array + ‘c[]’ and a pointer to its location in memory for the Chebyshev + series ‘cs’. + + +File: gsl-ref.info, Node: Chebyshev Series Evaluation, Next: Derivatives and Integrals, Prev: Auxiliary Functions, Up: Chebyshev Approximations + +32.4 Chebyshev Series Evaluation +================================ + + -- Function: double gsl_cheb_eval (const gsl_cheb_series * cs, + double x) + + This function evaluates the Chebyshev series ‘cs’ at a given point + ‘x’. + + -- Function: int gsl_cheb_eval_err (const gsl_cheb_series * cs, const + double x, double * result, double * abserr) + + This function computes the Chebyshev series ‘cs’ at a given point + ‘x’, estimating both the series ‘result’ and its absolute error + ‘abserr’. The error estimate is made from the first neglected term + in the series. + + -- Function: double gsl_cheb_eval_n (const gsl_cheb_series * cs, + size_t order, double x) + + This function evaluates the Chebyshev series ‘cs’ at a given point + ‘x’, to (at most) the given order ‘order’. + + -- Function: int gsl_cheb_eval_n_err (const gsl_cheb_series * cs, const + size_t order, const double x, double * result, double + * abserr) + + This function evaluates a Chebyshev series ‘cs’ at a given point + ‘x’, estimating both the series ‘result’ and its absolute error + ‘abserr’, to (at most) the given order ‘order’. The error estimate + is made from the first neglected term in the series. + + +File: gsl-ref.info, Node: Derivatives and Integrals, Next: Examples<24>, Prev: Chebyshev Series Evaluation, Up: Chebyshev Approximations + +32.5 Derivatives and Integrals +============================== + +The following functions allow a Chebyshev series to be differentiated or +integrated, producing a new Chebyshev series. Note that the error +estimate produced by evaluating the derivative series will be +underestimated due to the contribution of higher order terms being +neglected. + + -- Function: int gsl_cheb_calc_deriv (gsl_cheb_series * deriv, const + gsl_cheb_series * cs) + + This function computes the derivative of the series ‘cs’, storing + the derivative coefficients in the previously allocated ‘deriv’. + The two series ‘cs’ and ‘deriv’ must have been allocated with the + same order. + + -- Function: int gsl_cheb_calc_integ (gsl_cheb_series * integ, const + gsl_cheb_series * cs) + + This function computes the integral of the series ‘cs’, storing the + integral coefficients in the previously allocated ‘integ’. The two + series ‘cs’ and ‘integ’ must have been allocated with the same + order. The lower limit of the integration is taken to be the left + hand end of the range ‘a’. + + +File: gsl-ref.info, Node: Examples<24>, Next: References and Further Reading<24>, Prev: Derivatives and Integrals, Up: Chebyshev Approximations + +32.6 Examples +============= + +The following example program computes Chebyshev approximations to a +step function. This is an extremely difficult approximation to make, +due to the discontinuity, and was chosen as an example where +approximation error is visible. For smooth functions the Chebyshev +approximation converges extremely rapidly and errors would not be +visible. + + #include + #include + #include + + double + f (double x, void *p) + { + (void)(p); /* avoid unused parameter warning */ + + if (x < 0.5) + return 0.25; + else + return 0.75; + } + + int + main (void) + { + int i, n = 10000; + + gsl_cheb_series *cs = gsl_cheb_alloc (40); + + gsl_function F; + + F.function = f; + F.params = 0; + + gsl_cheb_init (cs, &F, 0.0, 1.0); + + for (i = 0; i < n; i++) + { + double x = i / (double)n; + double r10 = gsl_cheb_eval_n (cs, 10, x); + double r40 = gsl_cheb_eval (cs, x); + printf ("%g %g %g %g\n", + x, GSL_FN_EVAL (&F, x), r10, r40); + } + + gsl_cheb_free (cs); + + return 0; + } + +Fig. %s shows output from the program with the original function, 10-th +order approximation and 40-th order approximation, all sampled at +intervals of 0.001 in x. + +[image src="cheb.png"] + +Figure: Chebyshev approximations to a step function + + +File: gsl-ref.info, Node: References and Further Reading<24>, Prev: Examples<24>, Up: Chebyshev Approximations + +32.7 References and Further Reading +=================================== + +The following paper describes the use of Chebyshev series, + + * R. Broucke, “Ten Subroutines for the Manipulation of Chebyshev + Series [C1] (Algorithm 446)”. `Communications of the ACM' 16(4), + 254–256 (1973) + + +File: gsl-ref.info, Node: Series Acceleration, Next: Wavelet Transforms, Prev: Chebyshev Approximations, Up: Top + +33 Series Acceleration +********************** + +The functions described in this chapter accelerate the convergence of a +series using the Levin u-transform. This method takes a small number of +terms from the start of a series and uses a systematic approximation to +compute an extrapolated value and an estimate of its error. The +u-transform works for both convergent and divergent series, including +asymptotic series. + +These functions are declared in the header file ‘gsl_sum.h’. + +* Menu: + +* Acceleration functions:: +* Acceleration functions without error estimation:: +* Examples: Examples<25>. +* References and Further Reading: References and Further Reading<25>. + + +File: gsl-ref.info, Node: Acceleration functions, Next: Acceleration functions without error estimation, Up: Series Acceleration + +33.1 Acceleration functions +=========================== + +The following functions compute the full Levin u-transform of a series +with its error estimate. The error estimate is computed by propagating +rounding errors from each term through to the final extrapolation. + +These functions are intended for summing analytic series where each term +is known to high accuracy, and the rounding errors are assumed to +originate from finite precision. They are taken to be relative errors +of order ‘GSL_DBL_EPSILON’ for each term. + +The calculation of the error in the extrapolated value is an O(N^2) +process, which is expensive in time and memory. A faster but less +reliable method which estimates the error from the convergence of the +extrapolated value is described in the next section. For the method +described here a full table of intermediate values and derivatives +through to O(N) must be computed and stored, but this does give a +reliable error estimate. + + -- Type: gsl_sum_levin_u_workspace + + Workspace for a Leven u-transform. + + -- Function: gsl_sum_levin_u_workspace * gsl_sum_levin_u_alloc + (size_t n) + + This function allocates a workspace for a Levin u-transform of ‘n’ + terms. The size of the workspace is O(2n^2 + 3n). + + -- Function: void gsl_sum_levin_u_free (gsl_sum_levin_u_workspace * w) + + This function frees the memory associated with the workspace ‘w’. + + -- Function: int gsl_sum_levin_u_accel (const double * array, + size_t array_size, gsl_sum_levin_u_workspace * w, double + * sum_accel, double * abserr) + + This function takes the terms of a series in ‘array’ of size + ‘array_size’ and computes the extrapolated limit of the series + using a Levin u-transform. Additional working space must be + provided in ‘w’. The extrapolated sum is stored in ‘sum_accel’, + with an estimate of the absolute error stored in ‘abserr’. The + actual term-by-term sum is returned in ‘w->sum_plain’. The + algorithm calculates the truncation error (the difference between + two successive extrapolations) and round-off error (propagated from + the individual terms) to choose an optimal number of terms for the + extrapolation. All the terms of the series passed in through + ‘array’ should be non-zero. + + +File: gsl-ref.info, Node: Acceleration functions without error estimation, Next: Examples<25>, Prev: Acceleration functions, Up: Series Acceleration + +33.2 Acceleration functions without error estimation +==================================================== + +The functions described in this section compute the Levin u-transform of +series and attempt to estimate the error from the “truncation error” in +the extrapolation, the difference between the final two approximations. +Using this method avoids the need to compute an intermediate table of +derivatives because the error is estimated from the behavior of the +extrapolated value itself. Consequently this algorithm is an O(N) +process and only requires O(N) terms of storage. If the series +converges sufficiently fast then this procedure can be acceptable. It +is appropriate to use this method when there is a need to compute many +extrapolations of series with similar convergence properties at +high-speed. For example, when numerically integrating a function +defined by a parameterized series where the parameter varies only +slightly. A reliable error estimate should be computed first using the +full algorithm described above in order to verify the consistency of the +results. + + -- Type: gsl_sum_levin_utrunc_workspace + + Workspace for a Levin u-transform without error estimation + + -- Function: gsl_sum_levin_utrunc_workspace * + gsl_sum_levin_utrunc_alloc (size_t n) + + This function allocates a workspace for a Levin u-transform of ‘n’ + terms, without error estimation. The size of the workspace is + O(3n). + + -- Function: void gsl_sum_levin_utrunc_free + (gsl_sum_levin_utrunc_workspace * w) + + This function frees the memory associated with the workspace ‘w’. + + -- Function: int gsl_sum_levin_utrunc_accel (const double * array, + size_t array_size, gsl_sum_levin_utrunc_workspace * w, double + * sum_accel, double * abserr_trunc) + + This function takes the terms of a series in ‘array’ of size + ‘array_size’ and computes the extrapolated limit of the series + using a Levin u-transform. Additional working space must be + provided in ‘w’. The extrapolated sum is stored in ‘sum_accel’. + The actual term-by-term sum is returned in ‘w->sum_plain’. The + algorithm terminates when the difference between two successive + extrapolations reaches a minimum or is sufficiently small. The + difference between these two values is used as estimate of the + error and is stored in ‘abserr_trunc’. To improve the reliability + of the algorithm the extrapolated values are replaced by moving + averages when calculating the truncation error, smoothing out any + fluctuations. + + +File: gsl-ref.info, Node: Examples<25>, Next: References and Further Reading<25>, Prev: Acceleration functions without error estimation, Up: Series Acceleration + +33.3 Examples +============= + +The following code calculates an estimate of \zeta(2) = \pi^2 / 6 using +the series, + + \zeta(2) = 1 + 1/2^2 + 1/3^2 + 1/4^2 + \dots + +After ‘N’ terms the error in the sum is O(1/N), making direct summation +of the series converge slowly. + + #include + #include + #include + + #define N 20 + + int + main (void) + { + double t[N]; + double sum_accel, err; + double sum = 0; + int n; + + gsl_sum_levin_u_workspace * w + = gsl_sum_levin_u_alloc (N); + + const double zeta_2 = M_PI * M_PI / 6.0; + + /* terms for zeta(2) = \sum_{n=1}^{\infty} 1/n^2 */ + + for (n = 0; n < N; n++) + { + double np1 = n + 1.0; + t[n] = 1.0 / (np1 * np1); + sum += t[n]; + } + + gsl_sum_levin_u_accel (t, N, w, &sum_accel, &err); + + printf ("term-by-term sum = % .16f using %d terms\n", + sum, N); + + printf ("term-by-term sum = % .16f using %zu terms\n", + w->sum_plain, w->terms_used); + + printf ("exact value = % .16f\n", zeta_2); + printf ("accelerated sum = % .16f using %zu terms\n", + sum_accel, w->terms_used); + + printf ("estimated error = % .16f\n", err); + printf ("actual error = % .16f\n", + sum_accel - zeta_2); + + gsl_sum_levin_u_free (w); + return 0; + } + +The output below shows that the Levin u-transform is able to obtain an +estimate of the sum to 1 part in 10^{10} using the first eleven terms of +the series. The error estimate returned by the function is also +accurate, giving the correct number of significant digits. + + term-by-term sum = 1.5961632439130233 using 20 terms + term-by-term sum = 1.5759958390005426 using 13 terms + exact value = 1.6449340668482264 + accelerated sum = 1.6449340669228176 using 13 terms + estimated error = 0.0000000000888360 + actual error = 0.0000000000745912 + +Note that a direct summation of this series would require 10^{10} terms +to achieve the same precision as the accelerated sum does in 13 terms. + + +File: gsl-ref.info, Node: References and Further Reading<25>, Prev: Examples<25>, Up: Series Acceleration + +33.4 References and Further Reading +=================================== + +The algorithms used by these functions are described in the following +papers, + + * T. Fessler, W.F. Ford, D.A. Smith, HURRY: An acceleration algorithm + for scalar sequences and series `ACM Transactions on Mathematical + Software', 9(3):346–354, 1983. and Algorithm 602 9(3):355–357, + 1983. + +The theory of the u-transform was presented by Levin, + + * D. Levin, Development of Non-Linear Transformations for Improving + Convergence of Sequences, `Intern.: J.: Computer Math.' + B3:371–388, 1973. + +A review paper on the Levin Transform is available online, + + * Herbert H. H. Homeier, Scalar Levin-Type Sequence Transformations, + ‘http://arxiv.org/abs/math/0005209’ + + +File: gsl-ref.info, Node: Wavelet Transforms, Next: Discrete Hankel Transforms, Prev: Series Acceleration, Up: Top + +34 Wavelet Transforms +********************* + +This chapter describes functions for performing Discrete Wavelet +Transforms (DWTs). The library includes wavelets for real data in both +one and two dimensions. The wavelet functions are declared in the +header files ‘gsl_wavelet.h’ and ‘gsl_wavelet2d.h’. + +* Menu: + +* Definitions: Definitions<2>. +* Initialization:: +* Transform Functions:: +* Examples: Examples<26>. +* References and Further Reading: References and Further Reading<26>. + + +File: gsl-ref.info, Node: Definitions<2>, Next: Initialization, Up: Wavelet Transforms + +34.1 Definitions +================ + +The continuous wavelet transform and its inverse are defined by the +relations, + + w(s, \tau) = \int_{-\infty}^\infty f(t) * \psi^*_{s,\tau}(t) dt + +and, + + f(t) = \int_0^\infty ds \int_{-\infty}^\infty w(s, \tau) * \psi_{s,\tau}(t) d\tau + +where the basis functions \psi_{s,\tau} are obtained by scaling and +translation from a single function, referred to as the {mother wavelet*. + +The discrete version of the wavelet transform acts on equally-spaced +samples, with fixed scaling and translation steps (s, \tau). The +frequency and time axes are sampled `dyadically' on scales of 2^j +through a level parameter j. + +The resulting family of functions \{\psi_{j,n}\} constitutes an +orthonormal basis for square-integrable signals. The discrete wavelet +transform is an O(N) algorithm, and is also referred to as the `fast +wavelet transform'. + + +File: gsl-ref.info, Node: Initialization, Next: Transform Functions, Prev: Definitions<2>, Up: Wavelet Transforms + +34.2 Initialization +=================== + + -- Type: gsl_wavelet + + This structure contains the filter coefficients defining the + wavelet and any associated offset parameters. + + -- Function: gsl_wavelet * gsl_wavelet_alloc (const gsl_wavelet_type + * T, size_t k) + + This function allocates and initializes a wavelet object of type + ‘T’. The parameter ‘k’ selects the specific member of the wavelet + family. A null pointer is returned if insufficient memory is + available or if a unsupported member is selected. + +The following wavelet types are implemented: + + -- Type: gsl_wavelet_type + + -- Variable: gsl_wavelet_daubechies + -- Variable: gsl_wavelet_daubechies_centered + + This is the Daubechies wavelet family of maximum phase with + k/2 vanishing moments. The implemented wavelets are k=4, 6, + \dots, 20, with ‘k’ even. + + -- Variable: gsl_wavelet_haar + -- Variable: gsl_wavelet_haar_centered + + This is the Haar wavelet. The only valid choice of k for the + Haar wavelet is k=2. + + -- Variable: gsl_wavelet_bspline + -- Variable: gsl_wavelet_bspline_centered + + This is the biorthogonal B-spline wavelet family of order + (i,j). The implemented values of k = 100*i + j are 103, 105, + 202, 204, 206, 208, 301, 303, 305 307, 309. + +The centered forms of the wavelets align the coefficients of the various +sub-bands on edges. Thus the resulting visualization of the +coefficients of the wavelet transform in the phase plane is easier to +understand. + + -- Function: const char * gsl_wavelet_name (const gsl_wavelet * w) + + This function returns a pointer to the name of the wavelet family + for ‘w’. + + -- Function: void gsl_wavelet_free (gsl_wavelet * w) + + This function frees the wavelet object ‘w’. + + -- Type: gsl_wavelet_workspace + + This structure contains scratch space of the same size as the input + data and is used to hold intermediate results during the transform. + + -- Function: gsl_wavelet_workspace * gsl_wavelet_workspace_alloc + (size_t n) + + This function allocates a workspace for the discrete wavelet + transform. To perform a one-dimensional transform on ‘n’ elements, + a workspace of size ‘n’ must be provided. For two-dimensional + transforms of ‘n’-by-‘n’ matrices it is sufficient to allocate a + workspace of size ‘n’, since the transform operates on individual + rows and columns. A null pointer is returned if insufficient + memory is available. + + -- Function: void gsl_wavelet_workspace_free (gsl_wavelet_workspace + * work) + + This function frees the allocated workspace ‘work’. + + +File: gsl-ref.info, Node: Transform Functions, Next: Examples<26>, Prev: Initialization, Up: Wavelet Transforms + +34.3 Transform Functions +======================== + +This sections describes the actual functions performing the discrete +wavelet transform. Note that the transforms use periodic boundary +conditions. If the signal is not periodic in the sample length then +spurious coefficients will appear at the beginning and end of each level +of the transform. + +* Menu: + +* Wavelet transforms in one dimension:: +* Wavelet transforms in two dimension:: + + +File: gsl-ref.info, Node: Wavelet transforms in one dimension, Next: Wavelet transforms in two dimension, Up: Transform Functions + +34.3.1 Wavelet transforms in one dimension +------------------------------------------ + + -- Function: int gsl_wavelet_transform (const gsl_wavelet * w, double + * data, size_t stride, size_t n, gsl_wavelet_direction dir, + gsl_wavelet_workspace * work) + -- Function: int gsl_wavelet_transform_forward (const gsl_wavelet * w, + double * data, size_t stride, size_t n, gsl_wavelet_workspace + * work) + -- Function: int gsl_wavelet_transform_inverse (const gsl_wavelet * w, + double * data, size_t stride, size_t n, gsl_wavelet_workspace + * work) + + These functions compute in-place forward and inverse discrete + wavelet transforms of length ‘n’ with stride ‘stride’ on the array + ‘data’. The length of the transform ‘n’ is restricted to powers of + two. For the ‘transform’ version of the function the argument + ‘dir’ can be either ‘forward’ (+1) or ‘backward’ (-1). A workspace + ‘work’ of length ‘n’ must be provided. + + For the forward transform, the elements of the original array are + replaced by the discrete wavelet transform f_i \rightarrow w_{j,k} + in a packed triangular storage layout, where ‘j’ is the index of + the level j = 0 \dots J-1 and ‘k’ is the index of the coefficient + within each level, k = 0 \dots 2^j - 1. The total number of levels + is J = \log_2(n). The output data has the following form, + + (s_{-1,0}, d_{0,0}, d_{1,0}, d_{1,1}, d_{2,0},\cdots, d_{j,k},\cdots, d_{J-1,2^{J-1} - 1}) + + where the first element is the smoothing coefficient s_{-1,0}, + followed by the detail coefficients d_{j,k} for each level j. The + backward transform inverts these coefficients to obtain the + original data. + + These functions return a status of ‘GSL_SUCCESS’ upon successful + completion. *note GSL_EINVAL: 2b. is returned if ‘n’ is not an + integer power of 2 or if insufficient workspace is provided. + + +File: gsl-ref.info, Node: Wavelet transforms in two dimension, Prev: Wavelet transforms in one dimension, Up: Transform Functions + +34.3.2 Wavelet transforms in two dimension +------------------------------------------ + +The library provides functions to perform two-dimensional discrete +wavelet transforms on square matrices. The matrix dimensions must be an +integer power of two. There are two possible orderings of the rows and +columns in the two-dimensional wavelet transform, referred to as the +“standard” and “non-standard” forms. + +The “standard” transform performs a complete discrete wavelet transform +on the rows of the matrix, followed by a separate complete discrete +wavelet transform on the columns of the resulting row-transformed +matrix. This procedure uses the same ordering as a two-dimensional +Fourier transform. + +The “non-standard” transform is performed in interleaved passes on the +rows and columns of the matrix for each level of the transform. The +first level of the transform is applied to the matrix rows, and then to +the matrix columns. This procedure is then repeated across the rows and +columns of the data for the subsequent levels of the transform, until +the full discrete wavelet transform is complete. The non-standard form +of the discrete wavelet transform is typically used in image analysis. + +The functions described in this section are declared in the header file +‘gsl_wavelet2d.h’. + + -- Function: int gsl_wavelet2d_transform (const gsl_wavelet * w, double + * data, size_t tda, size_t size1, size_t size2, + gsl_wavelet_direction dir, gsl_wavelet_workspace * work) + -- Function: int gsl_wavelet2d_transform_forward (const gsl_wavelet + * w, double * data, size_t tda, size_t size1, size_t size2, + gsl_wavelet_workspace * work) + -- Function: int gsl_wavelet2d_transform_inverse (const gsl_wavelet + * w, double * data, size_t tda, size_t size1, size_t size2, + gsl_wavelet_workspace * work) + + These functions compute two-dimensional in-place forward and + inverse discrete wavelet transforms in standard form on the array + ‘data’ stored in row-major form with dimensions ‘size1’ and ‘size2’ + and physical row length ‘tda’. The dimensions must be equal + (square matrix) and are restricted to powers of two. For the + ‘transform’ version of the function the argument ‘dir’ can be + either ‘forward’ (+1) or ‘backward’ (-1). A workspace ‘work’ of + the appropriate size must be provided. On exit, the appropriate + elements of the array ‘data’ are replaced by their two-dimensional + wavelet transform. + + The functions return a status of ‘GSL_SUCCESS’ upon successful + completion. *note GSL_EINVAL: 2b. is returned if ‘size1’ and + ‘size2’ are not equal and integer powers of 2, or if insufficient + workspace is provided. + + -- Function: int gsl_wavelet2d_transform_matrix (const gsl_wavelet * w, + gsl_matrix * m, gsl_wavelet_direction dir, + gsl_wavelet_workspace * work) + -- Function: int gsl_wavelet2d_transform_matrix_forward (const + gsl_wavelet * w, gsl_matrix * m, gsl_wavelet_workspace * work) + -- Function: int gsl_wavelet2d_transform_matrix_inverse (const + gsl_wavelet * w, gsl_matrix * m, gsl_wavelet_workspace * work) + + These functions compute the two-dimensional in-place wavelet + transform on a matrix ‘m’. + + -- Function: int gsl_wavelet2d_nstransform (const gsl_wavelet * w, + double * data, size_t tda, size_t size1, size_t size2, + gsl_wavelet_direction dir, gsl_wavelet_workspace * work) + -- Function: int gsl_wavelet2d_nstransform_forward (const gsl_wavelet + * w, double * data, size_t tda, size_t size1, size_t size2, + gsl_wavelet_workspace * work) + -- Function: int gsl_wavelet2d_nstransform_inverse (const gsl_wavelet + * w, double * data, size_t tda, size_t size1, size_t size2, + gsl_wavelet_workspace * work) + + These functions compute the two-dimensional wavelet transform in + non-standard form. + + -- Function: int gsl_wavelet2d_nstransform_matrix (const gsl_wavelet + * w, gsl_matrix * m, gsl_wavelet_direction dir, + gsl_wavelet_workspace * work) + -- Function: int gsl_wavelet2d_nstransform_matrix_forward (const + gsl_wavelet * w, gsl_matrix * m, gsl_wavelet_workspace * work) + -- Function: int gsl_wavelet2d_nstransform_matrix_inverse (const + gsl_wavelet * w, gsl_matrix * m, gsl_wavelet_workspace * work) + + These functions compute the non-standard form of the + two-dimensional in-place wavelet transform on a matrix ‘m’. + + +File: gsl-ref.info, Node: Examples<26>, Next: References and Further Reading<26>, Prev: Transform Functions, Up: Wavelet Transforms + +34.4 Examples +============= + +The following program demonstrates the use of the one-dimensional +wavelet transform functions. It computes an approximation to an input +signal (of length 256) using the 20 largest components of the wavelet +transform, while setting the others to zero. + + #include + #include + #include + #include + + int + main (int argc, char **argv) + { + (void)(argc); /* avoid unused parameter warning */ + int i, n = 256, nc = 20; + double *orig_data = malloc (n * sizeof (double)); + double *data = malloc (n * sizeof (double)); + double *abscoeff = malloc (n * sizeof (double)); + size_t *p = malloc (n * sizeof (size_t)); + + FILE * f; + gsl_wavelet *w; + gsl_wavelet_workspace *work; + + w = gsl_wavelet_alloc (gsl_wavelet_daubechies, 4); + work = gsl_wavelet_workspace_alloc (n); + + f = fopen (argv[1], "r"); + for (i = 0; i < n; i++) + { + fscanf (f, "%lg", &orig_data[i]); + data[i] = orig_data[i]; + } + fclose (f); + + gsl_wavelet_transform_forward (w, data, 1, n, work); + + for (i = 0; i < n; i++) + { + abscoeff[i] = fabs (data[i]); + } + + gsl_sort_index (p, abscoeff, 1, n); + + for (i = 0; (i + nc) < n; i++) + data[p[i]] = 0; + + gsl_wavelet_transform_inverse (w, data, 1, n, work); + + for (i = 0; i < n; i++) + { + printf ("%g %g\n", orig_data[i], data[i]); + } + + gsl_wavelet_free (w); + gsl_wavelet_workspace_free (work); + + free (data); + free (orig_data); + free (abscoeff); + free (p); + return 0; + } + +The output can be used with the GNU plotutils ‘graph’ program: + + $ ./a.out ecg.dat > dwt.txt + $ graph -T ps -x 0 256 32 -h 0.3 -a dwt.txt > dwt.ps + +Fig. %s shows an original and compressed version of a sample ECG +recording from the MIT-BIH Arrhythmia Database, part of the PhysioNet +archive of public-domain of medical datasets. + +[image src="dwt.png"] + +Figure: Original (upper) and wavelet-compressed (lower) ECG signals, +using the 20 largest components of the Daubechies(4) discrete wavelet +transform. + + +File: gsl-ref.info, Node: References and Further Reading<26>, Prev: Examples<26>, Up: Wavelet Transforms + +34.5 References and Further Reading +=================================== + +The mathematical background to wavelet transforms is covered in the +original lectures by Daubechies, + + * Ingrid Daubechies. Ten Lectures on Wavelets. `CBMS-NSF Regional + Conference Series in Applied Mathematics' (1992), SIAM, ISBN + 0898712742. + +An easy to read introduction to the subject with an emphasis on the +application of the wavelet transform in various branches of science is, + + * Paul S. Addison. `The Illustrated Wavelet Transform Handbook'. + Institute of Physics Publishing (2002), ISBN 0750306920. + +For extensive coverage of signal analysis by wavelets, wavelet packets +and local cosine bases see, + + * S. G. Mallat. `A wavelet tour of signal processing' (Second + edition). Academic Press (1999), ISBN 012466606X. + +The concept of multiresolution analysis underlying the wavelet transform +is described in, + + * S. G. Mallat. Multiresolution Approximations and Wavelet + Orthonormal Bases of L^2(R). `Transactions of the American + Mathematical Society', 315(1), 1989, 69–87. + + * S. G. Mallat. A Theory for Multiresolution Signal + Decomposition—The Wavelet Representation. `IEEE Transactions on + Pattern Analysis and Machine Intelligence', 11, 1989, 674–693. + +The coefficients for the individual wavelet families implemented by the +library can be found in the following papers, + + * I. Daubechies. Orthonormal Bases of Compactly Supported Wavelets. + `Communications on Pure and Applied Mathematics', 41 (1988) + 909–996. + + * A. Cohen, I. Daubechies, and J.-C. Feauveau. Biorthogonal Bases of + Compactly Supported Wavelets. `Communications on Pure and Applied + Mathematics', 45 (1992) 485–560. + +The PhysioNet archive of physiological datasets can be found online at +‘http://www.physionet.org/’ and is described in the following paper, + + * Goldberger et al. PhysioBank, PhysioToolkit, and PhysioNet: + Components of a New Research Resource for Complex Physiologic + Signals. `Circulation' 101(23):e215-e220 2000. + + +File: gsl-ref.info, Node: Discrete Hankel Transforms, Next: One Dimensional Root-Finding, Prev: Wavelet Transforms, Up: Top + +35 Discrete Hankel Transforms +***************************** + +This chapter describes functions for performing Discrete Hankel +Transforms (DHTs). The functions are declared in the header file +‘gsl_dht.h’. + +* Menu: + +* Definitions: Definitions<3>. +* Functions: Functions<2>. +* References and Further Reading: References and Further Reading<27>. + + +File: gsl-ref.info, Node: Definitions<3>, Next: Functions<2>, Up: Discrete Hankel Transforms + +35.1 Definitions +================ + +The discrete Hankel transform acts on a vector of sampled data, where +the samples are assumed to have been taken at points related to the +zeros of a Bessel function of fixed order; compare this to the case of +the discrete Fourier transform, where samples are taken at points +related to the zeroes of the sine or cosine function. + +Starting with its definition, the Hankel transform (or Bessel transform) +of order \nu of a function f with \nu > -1/2 is defined as (see Johnson, +1987 and Lemoine, 1994) + + F_\nu(u) = \int_0^\infty f(t) J_\nu(u t) t dt + +If the integral exists, F_\nu is called the Hankel transformation of f. +The reverse transform is given by + + f(t) = \int_0^\infty F_\nu(u) J_\nu(u t) u du + +where \int_0^\infty f(t) t^{1/2} dt must exist and be absolutely +convergent, and where f(t) satisfies Dirichlet’s conditions (of limited +total fluctuations) in the interval [0,\infty]. + +Now the discrete Hankel transform works on a discrete function f, which +is sampled on points n=1...M located at positions +t_n=(j_{\nu,n}/j_{\nu,M}) X in real space and at u_n=j_{\nu,n}/X in +reciprocal space. Here, j_{\nu,m} are the m-th zeros of the Bessel +function J_\nu(x) arranged in ascending order. Moreover, the discrete +functions are assumed to be band limited, so f(t_n)=0 and F(u_n)=0 for +n>M. Accordingly, the function f is defined on the interval [0,X]. + +Following the work of Johnson, 1987 and Lemoine, 1994, the discrete +Hankel transform is given by + + F_\nu(u_m) = (2 X^2 / j_(\nu,M)^2) + \sum_{k=1}^{M-1} f(j_(\nu,k) X/j_(\nu,M)) + (J_\nu(j_(\nu,m) j_(\nu,k) / j_(\nu,M)) / J_(\nu+1)(j_(\nu,k))^2). + +It is this discrete expression which defines the discrete Hankel +transform calculated by GSL. In GSL, forward and backward transforms are +defined equally and calculate F_\nu(u_m). Following Johnson, the +backward transform reads + + f(t_k) = (2 / X^2) + \sum_{m=1}^{M-1} F(j_(\nu,m)/X) + (J_\nu(j_(\nu,m) j_(\nu,k) / j_(\nu,M)) / J_(\nu+1)(j_(\nu,m))^2). + +Obviously, using the forward transform instead of the backward transform +gives an additional factor X^4/j_{\nu,M}^2=t_m^2/u_m^2. + +The kernel in the summation above defines the matrix of the \nu-Hankel +transform of size M-1. The coefficients of this matrix, being dependent +on \nu and M, must be precomputed and stored; the *note gsl_dht: a23. +object encapsulates this data. The allocation function *note +gsl_dht_alloc(): a24. returns a *note gsl_dht: a23. object which must be +properly initialized with *note gsl_dht_init(): a25. before it can be +used to perform transforms on data sample vectors, for fixed \nu and M, +using the *note gsl_dht_apply(): a26. function. The implementation +allows to define the length X of the fundamental interval, for +convenience, while discrete Hankel transforms are often defined on the +unit interval instead of [0,X]. + +Notice that by assumption f(t) vanishes at the endpoints of the +interval, consistent with the inversion formula and the sampling formula +given above. Therefore, this transform corresponds to an orthogonal +expansion in eigenfunctions of the Dirichlet problem for the Bessel +differential equation. + + +File: gsl-ref.info, Node: Functions<2>, Next: References and Further Reading<27>, Prev: Definitions<3>, Up: Discrete Hankel Transforms + +35.2 Functions +============== + + -- Type: gsl_dht + + Workspace for computing discrete Hankel transforms + + -- Function: gsl_dht * gsl_dht_alloc (size_t size) + + This function allocates a Discrete Hankel transform object of size + ‘size’. + + -- Function: int gsl_dht_init (gsl_dht * t, double nu, double xmax) + + This function initializes the transform ‘t’ for the given values of + ‘nu’ and ‘xmax’. + + -- Function: gsl_dht * gsl_dht_new (size_t size, double nu, + double xmax) + + This function allocates a Discrete Hankel transform object of size + ‘size’ and initializes it for the given values of ‘nu’ and ‘xmax’. + + -- Function: void gsl_dht_free (gsl_dht * t) + + This function frees the transform ‘t’. + + -- Function: int gsl_dht_apply (const gsl_dht * t, double * f_in, + double * f_out) + + This function applies the transform ‘t’ to the array ‘f_in’ whose + size is equal to the size of the transform. The result is stored + in the array ‘f_out’ which must be of the same length. + + Applying this function to its output gives the original data + multiplied by (X^2/j_{\nu,M})^2, up to numerical errors. + + -- Function: double gsl_dht_x_sample (const gsl_dht * t, int n) + + This function returns the value of the ‘n’-th sample point in the + unit interval, {({j_{\nu,n+1}} / {j_{\nu,M}}}) X. These are the + points where the function f(t) is assumed to be sampled. + + -- Function: double gsl_dht_k_sample (const gsl_dht * t, int n) + + This function returns the value of the ‘n’-th sample point in + “k-space”, {{j_{\nu,n+1}} / X}. + + +File: gsl-ref.info, Node: References and Further Reading<27>, Prev: Functions<2>, Up: Discrete Hankel Transforms + +35.3 References and Further Reading +=================================== + +The algorithms used by these functions are described in the following +papers, + + * + 8. Fisk Johnson, Comp.: Phys.: Comm.: 43, 181 (1987). + + * + 4. Lemoine, J. Chem.: Phys.: 101, 3936 (1994). + + +File: gsl-ref.info, Node: One Dimensional Root-Finding, Next: One Dimensional Minimization, Prev: Discrete Hankel Transforms, Up: Top + +36 One Dimensional Root-Finding +******************************* + +This chapter describes routines for finding roots of arbitrary +one-dimensional functions. The library provides low level components +for a variety of iterative solvers and convergence tests. These can be +combined by the user to achieve the desired solution, with full access +to the intermediate steps of the iteration. Each class of methods uses +the same framework, so that you can switch between solvers at runtime +without needing to recompile your program. Each instance of a solver +keeps track of its own state, allowing the solvers to be used in +multi-threaded programs. + +The header file ‘gsl_roots.h’ contains prototypes for the root finding +functions and related declarations. + +* Menu: + +* Overview:: +* Caveats:: +* Initializing the Solver:: +* Providing the function to solve:: +* Search Bounds and Guesses:: +* Iteration:: +* Search Stopping Parameters:: +* Root Bracketing Algorithms:: +* Root Finding Algorithms using Derivatives:: +* Examples: Examples<27>. +* References and Further Reading: References and Further Reading<28>. + + +File: gsl-ref.info, Node: Overview, Next: Caveats, Up: One Dimensional Root-Finding + +36.1 Overview +============= + +One-dimensional root finding algorithms can be divided into two classes, +`root bracketing' and `root polishing'. Algorithms which proceed by +bracketing a root are guaranteed to converge. Bracketing algorithms +begin with a bounded region known to contain a root. The size of this +bounded region is reduced, iteratively, until it encloses the root to a +desired tolerance. This provides a rigorous error estimate for the +location of the root. + +The technique of `root polishing' attempts to improve an initial guess +to the root. These algorithms converge only if started “close enough” +to a root, and sacrifice a rigorous error bound for speed. By +approximating the behavior of a function in the vicinity of a root they +attempt to find a higher order improvement of an initial guess. When +the behavior of the function is compatible with the algorithm and a good +initial guess is available a polishing algorithm can provide rapid +convergence. + +In GSL both types of algorithm are available in similar frameworks. The +user provides a high-level driver for the algorithms, and the library +provides the individual functions necessary for each of the steps. +There are three main phases of the iteration. The steps are, + + * initialize solver state, ‘s’, for algorithm ‘T’ + + * update ‘s’ using the iteration ‘T’ + + * test ‘s’ for convergence, and repeat iteration if necessary + +The state for bracketing solvers is held in a *note gsl_root_fsolver: +a30. struct. The updating procedure uses only function evaluations (not +derivatives). The state for root polishing solvers is held in a *note +gsl_root_fdfsolver: a31. struct. The updates require both the function +and its derivative (hence the name ‘fdf’) to be supplied by the user. + + +File: gsl-ref.info, Node: Caveats, Next: Initializing the Solver, Prev: Overview, Up: One Dimensional Root-Finding + +36.2 Caveats +============ + +Note that root finding functions can only search for one root at a time. +When there are several roots in the search area, the first root to be +found will be returned; however it is difficult to predict which of the +roots this will be. `In most cases, no error will be reported if you +try to find a root in an area where there is more than one.' + +Care must be taken when a function may have a multiple root (such as +f(x) = (x-x_0)^2 or f(x) = (x-x_0)^3. It is not possible to use +root-bracketing algorithms on even-multiplicity roots. For these +algorithms the initial interval must contain a zero-crossing, where the +function is negative at one end of the interval and positive at the +other end. Roots with even-multiplicity do not cross zero, but only +touch it instantaneously. Algorithms based on root bracketing will +still work for odd-multiplicity roots (e.g. cubic, quintic, …). Root +polishing algorithms generally work with higher multiplicity roots, but +at a reduced rate of convergence. In these cases the `Steffenson +algorithm' can be used to accelerate the convergence of multiple roots. + +While it is not absolutely required that f have a root within the search +region, numerical root finding functions should not be used haphazardly +to check for the `existence' of roots. There are better ways to do +this. Because it is easy to create situations where numerical root +finders can fail, it is a bad idea to throw a root finder at a function +you do not know much about. In general it is best to examine the +function visually by plotting before searching for a root. + + +File: gsl-ref.info, Node: Initializing the Solver, Next: Providing the function to solve, Prev: Caveats, Up: One Dimensional Root-Finding + +36.3 Initializing the Solver +============================ + + -- Type: gsl_root_fsolver + + This is a workspace for finding roots using methods which do not + require derivatives. + + -- Type: gsl_root_fdfsolver + + This is a workspace for finding roots using methods which require + derivatives. + + -- Function: gsl_root_fsolver * gsl_root_fsolver_alloc (const + gsl_root_fsolver_type * T) + + This function returns a pointer to a newly allocated instance of a + solver of type ‘T’. For example, the following code creates an + instance of a bisection solver: + + const gsl_root_fsolver_type * T = gsl_root_fsolver_bisection; + gsl_root_fsolver * s = gsl_root_fsolver_alloc (T); + + If there is insufficient memory to create the solver then the + function returns a null pointer and the error handler is invoked + with an error code of *note GSL_ENOMEM: 2a. + + -- Function: gsl_root_fdfsolver * gsl_root_fdfsolver_alloc (const + gsl_root_fdfsolver_type * T) + + This function returns a pointer to a newly allocated instance of a + derivative-based solver of type ‘T’. For example, the following + code creates an instance of a Newton-Raphson solver: + + const gsl_root_fdfsolver_type * T = gsl_root_fdfsolver_newton; + gsl_root_fdfsolver * s = gsl_root_fdfsolver_alloc (T); + + If there is insufficient memory to create the solver then the + function returns a null pointer and the error handler is invoked + with an error code of *note GSL_ENOMEM: 2a. + + -- Function: int gsl_root_fsolver_set (gsl_root_fsolver * s, + gsl_function * f, double x_lower, double x_upper) + + This function initializes, or reinitializes, an existing solver ‘s’ + to use the function ‘f’ and the initial search interval [‘x_lower’, + ‘x_upper’]. + + -- Function: int gsl_root_fdfsolver_set (gsl_root_fdfsolver * s, + gsl_function_fdf * fdf, double root) + + This function initializes, or reinitializes, an existing solver ‘s’ + to use the function and derivative ‘fdf’ and the initial guess + ‘root’. + + -- Function: void gsl_root_fsolver_free (gsl_root_fsolver * s) + -- Function: void gsl_root_fdfsolver_free (gsl_root_fdfsolver * s) + + These functions free all the memory associated with the solver ‘s’. + + -- Function: const char * gsl_root_fsolver_name (const gsl_root_fsolver + * s) + -- Function: const char * gsl_root_fdfsolver_name (const + gsl_root_fdfsolver * s) + + These functions return a pointer to the name of the solver. For + example: + + printf ("s is a '%s' solver\n", gsl_root_fsolver_name (s)); + + would print something like ‘s is a 'bisection' solver’. + + +File: gsl-ref.info, Node: Providing the function to solve, Next: Search Bounds and Guesses, Prev: Initializing the Solver, Up: One Dimensional Root-Finding + +36.4 Providing the function to solve +==================================== + +You must provide a continuous function of one variable for the root +finders to operate on, and, sometimes, its first derivative. In order +to allow for general parameters the functions are defined by the +following data types: + + -- Type: gsl_function + + This data type defines a general function with parameters. + + ‘double (* function) (double x, void * params)’ + + this function should return the value f(x,params) for argument + ‘x’ and parameters ‘params’ + + ‘void * params’ + + a pointer to the parameters of the function + +Here is an example for the general quadratic function, + + f(x) = a x^2 + b x + c + +with a = 3, b = 2, c = 1. The following code defines a *note +gsl_function: a3e. ‘F’ which you could pass to a root finder as a +function pointer: + + struct my_f_params { double a; double b; double c; }; + + double + my_f (double x, void * p) + { + struct my_f_params * params = (struct my_f_params *)p; + double a = (params->a); + double b = (params->b); + double c = (params->c); + + return (a * x + b) * x + c; + } + + gsl_function F; + struct my_f_params params = { 3.0, 2.0, 1.0 }; + + F.function = &my_f; + F.params = ¶ms; + +The function f(x) can be evaluated using the macro ‘GSL_FN_EVAL(&F,x)’ +defined in ‘gsl_math.h’. + + -- Type: gsl_function_fdf + + This data type defines a general function with parameters and its + first derivative. + + ‘double (* f) (double x, void * params)’ + + this function should return the value of f(x,params) for + argument ‘x’ and parameters ‘params’ + + ‘double (* df) (double x, void * params)’ + + this function should return the value of the derivative of ‘f’ + with respect to ‘x’, f'(x,params), for argument ‘x’ and + parameters ‘params’ + + ‘void (* fdf) (double x, void * params, double * f, double * df)’ + + this function should set the values of the function ‘f’ to + f(x,params) and its derivative ‘df’ to f'(x,params) for + argument ‘x’ and parameters ‘params’. This function provides + an optimization of the separate functions for f(x) and + f'(x)—it is always faster to compute the function and its + derivative at the same time. + + ‘void * params’ + + a pointer to the parameters of the function + +Here is an example where f(x) = \exp(2x): + + double + my_f (double x, void * params) + { + return exp (2 * x); + } + + double + my_df (double x, void * params) + { + return 2 * exp (2 * x); + } + + void + my_fdf (double x, void * params, + double * f, double * df) + { + double t = exp (2 * x); + + *f = t; + *df = 2 * t; /* uses existing value */ + } + + gsl_function_fdf FDF; + + FDF.f = &my_f; + FDF.df = &my_df; + FDF.fdf = &my_fdf; + FDF.params = 0; + +The function f(x) can be evaluated using the macro +‘GSL_FN_FDF_EVAL_F(&FDF,x)’ and the derivative f'(x) can be evaluated +using the macro ‘GSL_FN_FDF_EVAL_DF(&FDF,x)’. Both the function y = +f(x) and its derivative dy = f'(x) can be evaluated at the same time +using the macro ‘GSL_FN_FDF_EVAL_F_DF(&FDF,x,y,dy)’. The macro stores +f(x) in its ‘y’ argument and f'(x) in its ‘dy’ argument—both of these +should be pointers to ‘double’. + + +File: gsl-ref.info, Node: Search Bounds and Guesses, Next: Iteration, Prev: Providing the function to solve, Up: One Dimensional Root-Finding + +36.5 Search Bounds and Guesses +============================== + +You provide either search bounds or an initial guess; this section +explains how search bounds and guesses work and how function arguments +control them. + +A guess is simply an x value which is iterated until it is within the +desired precision of a root. It takes the form of a ‘double’. + +Search bounds are the endpoints of an interval which is iterated until +the length of the interval is smaller than the requested precision. The +interval is defined by two values, the lower limit and the upper limit. +Whether the endpoints are intended to be included in the interval or not +depends on the context in which the interval is used. + + +File: gsl-ref.info, Node: Iteration, Next: Search Stopping Parameters, Prev: Search Bounds and Guesses, Up: One Dimensional Root-Finding + +36.6 Iteration +============== + +The following functions drive the iteration of each algorithm. Each +function performs one iteration to update the state of any solver of the +corresponding type. The same functions work for all solvers so that +different methods can be substituted at runtime without modifications to +the code. + + -- Function: int gsl_root_fsolver_iterate (gsl_root_fsolver * s) + -- Function: int gsl_root_fdfsolver_iterate (gsl_root_fdfsolver * s) + + These functions perform a single iteration of the solver ‘s’. If + the iteration encounters an unexpected problem then an error code + will be returned, + + ‘GSL_EBADFUNC’ + + the iteration encountered a singular point where the function + or its derivative evaluated to ‘Inf’ or ‘NaN’. + + ‘GSL_EZERODIV’ + + the derivative of the function vanished at the iteration + point, preventing the algorithm from continuing without a + division by zero. + +The solver maintains a current best estimate of the root at all times. +The bracketing solvers also keep track of the current best interval +bounding the root. This information can be accessed with the following +auxiliary functions, + + -- Function: double gsl_root_fsolver_root (const gsl_root_fsolver * s) + -- Function: double gsl_root_fdfsolver_root (const gsl_root_fdfsolver + * s) + + These functions return the current estimate of the root for the + solver ‘s’. + + -- Function: double gsl_root_fsolver_x_lower (const gsl_root_fsolver + * s) + -- Function: double gsl_root_fsolver_x_upper (const gsl_root_fsolver + * s) + + These functions return the current bracketing interval for the + solver ‘s’. + + +File: gsl-ref.info, Node: Search Stopping Parameters, Next: Root Bracketing Algorithms, Prev: Iteration, Up: One Dimensional Root-Finding + +36.7 Search Stopping Parameters +=============================== + +A root finding procedure should stop when one of the following +conditions is true: + + * A root has been found to within the user-specified precision. + + * A user-specified maximum number of iterations has been reached. + + * An error has occurred. + +The handling of these conditions is under user control. The functions +below allow the user to test the precision of the current result in +several standard ways. + + -- Function: int gsl_root_test_interval (double x_lower, + double x_upper, double epsabs, double epsrel) + + This function tests for the convergence of the interval [‘x_lower’, + ‘x_upper’] with absolute error ‘epsabs’ and relative error + ‘epsrel’. The test returns ‘GSL_SUCCESS’ if the following + condition is achieved, + + |a - b| < epsabs + epsrel min(|a|,|b|) + + when the interval x = [a,b] does not include the origin. If the + interval includes the origin then \min(|a|,|b|) is replaced by zero + (which is the minimum value of |x| over the interval). This + ensures that the relative error is accurately estimated for roots + close to the origin. + + This condition on the interval also implies that any estimate of + the root r in the interval satisfies the same condition with + respect to the true root r^*, + + |r - r^*| < epsabs + epsrel r^* + + assuming that the true root r^* is contained within the interval. + + -- Function: int gsl_root_test_delta (double x1, double x0, + double epsabs, double epsrel) + + This function tests for the convergence of the sequence ‘x0’, ‘x1’ + with absolute error ‘epsabs’ and relative error ‘epsrel’. The test + returns ‘GSL_SUCCESS’ if the following condition is achieved, + + |x_1 - x_0| < epsabs + epsrel |x_1| + + and returns ‘GSL_CONTINUE’ otherwise. + + -- Function: int gsl_root_test_residual (double f, double epsabs) + + This function tests the residual value ‘f’ against the absolute + error bound ‘epsabs’. The test returns ‘GSL_SUCCESS’ if the + following condition is achieved, + + |f| < epsabs + + and returns ‘GSL_CONTINUE’ otherwise. This criterion is suitable + for situations where the precise location of the root, x, is + unimportant provided a value can be found where the residual, + |f(x)|, is small enough. + + +File: gsl-ref.info, Node: Root Bracketing Algorithms, Next: Root Finding Algorithms using Derivatives, Prev: Search Stopping Parameters, Up: One Dimensional Root-Finding + +36.8 Root Bracketing Algorithms +=============================== + +The root bracketing algorithms described in this section require an +initial interval which is guaranteed to contain a root—if a and b are +the endpoints of the interval then f(a) must differ in sign from f(b). +This ensures that the function crosses zero at least once in the +interval. If a valid initial interval is used then these algorithm +cannot fail, provided the function is well-behaved. + +Note that a bracketing algorithm cannot find roots of even degree, since +these do not cross the x-axis. + + -- Type: gsl_root_fsolver_type + + -- Variable: gsl_root_fsolver_bisection + + The `bisection algorithm' is the simplest method of bracketing + the roots of a function. It is the slowest algorithm provided + by the library, with linear convergence. + + On each iteration, the interval is bisected and the value of + the function at the midpoint is calculated. The sign of this + value is used to determine which half of the interval does not + contain a root. That half is discarded to give a new, smaller + interval containing the root. This procedure can be continued + indefinitely until the interval is sufficiently small. + + At any time the current estimate of the root is taken as the + midpoint of the interval. + + -- Variable: gsl_root_fsolver_falsepos + + The `false position algorithm' is a method of finding roots + based on linear interpolation. Its convergence is linear, but + it is usually faster than bisection. + + On each iteration a line is drawn between the endpoints + (a,f(a)) and (b,f(b)) and the point where this line crosses + the x-axis taken as a “midpoint”. The value of the function + at this point is calculated and its sign is used to determine + which side of the interval does not contain a root. That side + is discarded to give a new, smaller interval containing the + root. This procedure can be continued indefinitely until the + interval is sufficiently small. + + The best estimate of the root is taken from the linear + interpolation of the interval on the current iteration. + + -- Variable: gsl_root_fsolver_brent + + The `Brent-Dekker method' (referred to here as `Brent’s + method') combines an interpolation strategy with the bisection + algorithm. This produces a fast algorithm which is still + robust. + + On each iteration Brent’s method approximates the function + using an interpolating curve. On the first iteration this is + a linear interpolation of the two endpoints. For subsequent + iterations the algorithm uses an inverse quadratic fit to the + last three points, for higher accuracy. The intercept of the + interpolating curve with the x-axis is taken as a guess for + the root. If it lies within the bounds of the current + interval then the interpolating point is accepted, and used to + generate a smaller interval. If the interpolating point is + not accepted then the algorithm falls back to an ordinary + bisection step. + + The best estimate of the root is taken from the most recent + interpolation or bisection. + + +File: gsl-ref.info, Node: Root Finding Algorithms using Derivatives, Next: Examples<27>, Prev: Root Bracketing Algorithms, Up: One Dimensional Root-Finding + +36.9 Root Finding Algorithms using Derivatives +============================================== + +The root polishing algorithms described in this section require an +initial guess for the location of the root. There is no absolute +guarantee of convergence—the function must be suitable for this +technique and the initial guess must be sufficiently close to the root +for it to work. When these conditions are satisfied then convergence is +quadratic. + +These algorithms make use of both the function and its derivative. + + -- Type: gsl_root_fdfsolver_type + + -- Variable: gsl_root_fdfsolver_newton + + Newton’s Method is the standard root-polishing algorithm. The + algorithm begins with an initial guess for the location of the + root. On each iteration, a line tangent to the function f is + drawn at that position. The point where this line crosses the + x-axis becomes the new guess. The iteration is defined by the + following sequence, + + x_{i+1} = x_i - f(x_i)/f'(x_i) + + Newton’s method converges quadratically for single roots, and + linearly for multiple roots. + + -- Variable: gsl_root_fdfsolver_secant + + The `secant method' is a simplified version of Newton’s method + which does not require the computation of the derivative on + every step. + + On its first iteration the algorithm begins with Newton’s + method, using the derivative to compute a first step, + + x_1 = x_0 - f(x_0)/f'(x_0) + + Subsequent iterations avoid the evaluation of the derivative + by replacing it with a numerical estimate, the slope of the + line through the previous two points, + + x_{i+1} = x_i f(x_i) / f'_{est} where + f'_{est} = (f(x_i) - f(x_{i-1})/(x_i - x_{i-1}) + + When the derivative does not change significantly in the + vicinity of the root the secant method gives a useful saving. + Asymptotically the secant method is faster than Newton’s + method whenever the cost of evaluating the derivative is more + than 0.44 times the cost of evaluating the function itself. + As with all methods of computing a numerical derivative the + estimate can suffer from cancellation errors if the separation + of the points becomes too small. + + On single roots, the method has a convergence of order (1 + + \sqrt 5)/2 (approximately 1.62). It converges linearly for + multiple roots. + + -- Variable: gsl_root_fdfsolver_steffenson + + The `Steffenson Method' (1) provides the fastest convergence + of all the routines. It combines the basic Newton algorithm + with an Aitken “delta-squared” acceleration. If the Newton + iterates are x_i then the acceleration procedure generates a + new sequence R_i, + + R_i = x_i - (x_{i+1} - x_i)^2 / (x_{i+2} - 2 x_{i+1} + x_{i}) + + which converges faster than the original sequence under + reasonable conditions. The new sequence requires three terms + before it can produce its first value so the method returns + accelerated values on the second and subsequent iterations. + On the first iteration it returns the ordinary Newton + estimate. The Newton iterate is also returned if the + denominator of the acceleration term ever becomes zero. + + As with all acceleration procedures this method can become + unstable if the function is not well-behaved. + + ---------- Footnotes ---------- + + (1) J.F. Steffensen (1873–1961). The spelling used in the name of +the function is slightly incorrect, but has been preserved to avoid +incompatibility. + + +File: gsl-ref.info, Node: Examples<27>, Next: References and Further Reading<28>, Prev: Root Finding Algorithms using Derivatives, Up: One Dimensional Root-Finding + +36.10 Examples +============== + +For any root finding algorithm we need to prepare the function to be +solved. For this example we will use the general quadratic equation +described earlier. We first need a header file (‘demo_fn.h’) to define +the function parameters, + + struct quadratic_params + { + double a, b, c; + }; + + double quadratic (double x, void *params); + double quadratic_deriv (double x, void *params); + void quadratic_fdf (double x, void *params, + double *y, double *dy); + +We place the function definitions in a separate file (‘demo_fn.c’), + + double + quadratic (double x, void *params) + { + struct quadratic_params *p + = (struct quadratic_params *) params; + + double a = p->a; + double b = p->b; + double c = p->c; + + return (a * x + b) * x + c; + } + + double + quadratic_deriv (double x, void *params) + { + struct quadratic_params *p + = (struct quadratic_params *) params; + + double a = p->a; + double b = p->b; + + return 2.0 * a * x + b; + } + + void + quadratic_fdf (double x, void *params, + double *y, double *dy) + { + struct quadratic_params *p + = (struct quadratic_params *) params; + + double a = p->a; + double b = p->b; + double c = p->c; + + *y = (a * x + b) * x + c; + *dy = 2.0 * a * x + b; + } + +The first program uses the function solver *note gsl_root_fsolver_brent: +a50. for Brent’s method and the general quadratic defined above to solve +the following equation, + + x^2 - 5 = 0 + +with solution x = \sqrt 5 = 2.236068... + + #include + #include + #include + #include + + #include "demo_fn.h" + #include "demo_fn.c" + + int + main (void) + { + int status; + int iter = 0, max_iter = 100; + const gsl_root_fsolver_type *T; + gsl_root_fsolver *s; + double r = 0, r_expected = sqrt (5.0); + double x_lo = 0.0, x_hi = 5.0; + gsl_function F; + struct quadratic_params params = {1.0, 0.0, -5.0}; + + F.function = &quadratic; + F.params = ¶ms; + + T = gsl_root_fsolver_brent; + s = gsl_root_fsolver_alloc (T); + gsl_root_fsolver_set (s, &F, x_lo, x_hi); + + printf ("using %s method\n", + gsl_root_fsolver_name (s)); + + printf ("%5s [%9s, %9s] %9s %10s %9s\n", + "iter", "lower", "upper", "root", + "err", "err(est)"); + + do + { + iter++; + status = gsl_root_fsolver_iterate (s); + r = gsl_root_fsolver_root (s); + x_lo = gsl_root_fsolver_x_lower (s); + x_hi = gsl_root_fsolver_x_upper (s); + status = gsl_root_test_interval (x_lo, x_hi, + 0, 0.001); + + if (status == GSL_SUCCESS) + printf ("Converged:\n"); + + printf ("%5d [%.7f, %.7f] %.7f %+.7f %.7f\n", + iter, x_lo, x_hi, + r, r - r_expected, + x_hi - x_lo); + } + while (status == GSL_CONTINUE && iter < max_iter); + + gsl_root_fsolver_free (s); + + return status; + } + +Here are the results of the iterations: + + $ ./a.out + using brent method + iter [ lower, upper] root err err(est) + 1 [1.0000000, 5.0000000] 1.0000000 -1.2360680 4.0000000 + 2 [1.0000000, 3.0000000] 3.0000000 +0.7639320 2.0000000 + 3 [2.0000000, 3.0000000] 2.0000000 -0.2360680 1.0000000 + 4 [2.2000000, 3.0000000] 2.2000000 -0.0360680 0.8000000 + 5 [2.2000000, 2.2366300] 2.2366300 +0.0005621 0.0366300 + Converged: + 6 [2.2360634, 2.2366300] 2.2360634 -0.0000046 0.0005666 + +If the program is modified to use the bisection solver instead of +Brent’s method, by changing *note gsl_root_fsolver_brent: a50. to *note +gsl_root_fsolver_bisection: a4e. the slower convergence of the Bisection +method can be observed: + + $ ./a.out + using bisection method + iter [ lower, upper] root err err(est) + 1 [0.0000000, 2.5000000] 1.2500000 -0.9860680 2.5000000 + 2 [1.2500000, 2.5000000] 1.8750000 -0.3610680 1.2500000 + 3 [1.8750000, 2.5000000] 2.1875000 -0.0485680 0.6250000 + 4 [2.1875000, 2.5000000] 2.3437500 +0.1076820 0.3125000 + 5 [2.1875000, 2.3437500] 2.2656250 +0.0295570 0.1562500 + 6 [2.1875000, 2.2656250] 2.2265625 -0.0095055 0.0781250 + 7 [2.2265625, 2.2656250] 2.2460938 +0.0100258 0.0390625 + 8 [2.2265625, 2.2460938] 2.2363281 +0.0002601 0.0195312 + 9 [2.2265625, 2.2363281] 2.2314453 -0.0046227 0.0097656 + 10 [2.2314453, 2.2363281] 2.2338867 -0.0021813 0.0048828 + 11 [2.2338867, 2.2363281] 2.2351074 -0.0009606 0.0024414 + Converged: + 12 [2.2351074, 2.2363281] 2.2357178 -0.0003502 0.0012207 + +The next program solves the same function using a derivative solver +instead. + + #include + #include + #include + #include + + #include "demo_fn.h" + #include "demo_fn.c" + + int + main (void) + { + int status; + int iter = 0, max_iter = 100; + const gsl_root_fdfsolver_type *T; + gsl_root_fdfsolver *s; + double x0, x = 5.0, r_expected = sqrt (5.0); + gsl_function_fdf FDF; + struct quadratic_params params = {1.0, 0.0, -5.0}; + + FDF.f = &quadratic; + FDF.df = &quadratic_deriv; + FDF.fdf = &quadratic_fdf; + FDF.params = ¶ms; + + T = gsl_root_fdfsolver_newton; + s = gsl_root_fdfsolver_alloc (T); + gsl_root_fdfsolver_set (s, &FDF, x); + + printf ("using %s method\n", + gsl_root_fdfsolver_name (s)); + + printf ("%-5s %10s %10s %10s\n", + "iter", "root", "err", "err(est)"); + do + { + iter++; + status = gsl_root_fdfsolver_iterate (s); + x0 = x; + x = gsl_root_fdfsolver_root (s); + status = gsl_root_test_delta (x, x0, 0, 1e-3); + + if (status == GSL_SUCCESS) + printf ("Converged:\n"); + + printf ("%5d %10.7f %+10.7f %10.7f\n", + iter, x, x - r_expected, x - x0); + } + while (status == GSL_CONTINUE && iter < max_iter); + + gsl_root_fdfsolver_free (s); + return status; + } + +Here are the results for Newton’s method: + + $ ./a.out + using newton method + iter root err err(est) + 1 3.0000000 +0.7639320 -2.0000000 + 2 2.3333333 +0.0972654 -0.6666667 + 3 2.2380952 +0.0020273 -0.0952381 + Converged: + 4 2.2360689 +0.0000009 -0.0020263 + +Note that the error can be estimated more accurately by taking the +difference between the current iterate and next iterate rather than the +previous iterate. The other derivative solvers can be investigated by +changing *note gsl_root_fdfsolver_newton: a53. to *note +gsl_root_fdfsolver_secant: a54. or *note gsl_root_fdfsolver_steffenson: +a55. + + +File: gsl-ref.info, Node: References and Further Reading<28>, Prev: Examples<27>, Up: One Dimensional Root-Finding + +36.11 References and Further Reading +==================================== + +For information on the Brent-Dekker algorithm see the following two +papers, + + * R. P. Brent, “An algorithm with guaranteed convergence for finding + a zero of a function”, `Computer Journal', 14 (1971) 422–425 + + * J. C. P. Bus and T. J. Dekker, “Two Efficient Algorithms with + Guaranteed Convergence for Finding a Zero of a Function”, `ACM + Transactions of Mathematical Software', Vol.: 1 No.: 4 (1975) + 330–345 + + +File: gsl-ref.info, Node: One Dimensional Minimization, Next: Multidimensional Root-Finding, Prev: One Dimensional Root-Finding, Up: Top + +37 One Dimensional Minimization +******************************* + +This chapter describes routines for finding minima of arbitrary +one-dimensional functions. The library provides low level components +for a variety of iterative minimizers and convergence tests. These can +be combined by the user to achieve the desired solution, with full +access to the intermediate steps of the algorithms. Each class of +methods uses the same framework, so that you can switch between +minimizers at runtime without needing to recompile your program. Each +instance of a minimizer keeps track of its own state, allowing the +minimizers to be used in multi-threaded programs. + +The header file ‘gsl_min.h’ contains prototypes for the minimization +functions and related declarations. To use the minimization algorithms +to find the maximum of a function simply invert its sign. + +* Menu: + +* Overview: Overview<2>. +* Caveats: Caveats<2>. +* Initializing the Minimizer:: +* Providing the function to minimize:: +* Iteration: Iteration<2>. +* Stopping Parameters:: +* Minimization Algorithms:: +* Examples: Examples<28>. +* References and Further Reading: References and Further Reading<29>. + + +File: gsl-ref.info, Node: Overview<2>, Next: Caveats<2>, Up: One Dimensional Minimization + +37.1 Overview +============= + +The minimization algorithms begin with a bounded region known to contain +a minimum. The region is described by a lower bound a and an upper +bound b, with an estimate of the location of the minimum x, as shown in +Fig. %s. + +[image src="min-interval.png"] + +Figure: Function with lower and upper bounds with an estimate of the +minimum. + +The value of the function at x must be less than the value of the +function at the ends of the interval, + + f(a) > f(x) < f(b) + +This condition guarantees that a minimum is contained somewhere within +the interval. On each iteration a new point x' is selected using one of +the available algorithms. If the new point is a better estimate of the +minimum, i.e.: where f(x') < f(x), then the current estimate of the +minimum x is updated. The new point also allows the size of the bounded +interval to be reduced, by choosing the most compact set of points which +satisfies the constraint f(a) > f(x) < f(b). The interval is reduced +until it encloses the true minimum to a desired tolerance. This +provides a best estimate of the location of the minimum and a rigorous +error estimate. + +Several bracketing algorithms are available within a single framework. +The user provides a high-level driver for the algorithm, and the library +provides the individual functions necessary for each of the steps. +There are three main phases of the iteration. The steps are, + + * initialize minimizer state, ‘s’, for algorithm ‘T’ + + * update ‘s’ using the iteration ‘T’ + + * test ‘s’ for convergence, and repeat iteration if necessary + +The state for the minimizers is held in a *note gsl_min_fminimizer: a5c. +struct. The updating procedure uses only function evaluations (not +derivatives). + + +File: gsl-ref.info, Node: Caveats<2>, Next: Initializing the Minimizer, Prev: Overview<2>, Up: One Dimensional Minimization + +37.2 Caveats +============ + +Note that minimization functions can only search for one minimum at a +time. When there are several minima in the search area, the first +minimum to be found will be returned; however it is difficult to predict +which of the minima this will be. `In most cases, no error will be +reported if you try to find a minimum in an area where there is more +than one.' + +With all minimization algorithms it can be difficult to determine the +location of the minimum to full numerical precision. The behavior of +the function in the region of the minimum x^* can be approximated by a +Taylor expansion, + + y = f(x^*) + (1/2) f''(x^*) (x - x^*)^2 + +and the second term of this expansion can be lost when added to the +first term at finite precision. This magnifies the error in locating +x^*, making it proportional to \sqrt \epsilon (where \epsilon is the +relative accuracy of the floating point numbers). For functions with +higher order minima, such as x^4, the magnification of the error is +correspondingly worse. The best that can be achieved is to converge to +the limit of numerical accuracy in the function values, rather than the +location of the minimum itself. + + +File: gsl-ref.info, Node: Initializing the Minimizer, Next: Providing the function to minimize, Prev: Caveats<2>, Up: One Dimensional Minimization + +37.3 Initializing the Minimizer +=============================== + + -- Type: gsl_min_fminimizer + + This is a workspace for minimizing functions. + + -- Function: gsl_min_fminimizer * gsl_min_fminimizer_alloc (const + gsl_min_fminimizer_type * T) + + This function returns a pointer to a newly allocated instance of a + minimizer of type ‘T’. For example, the following code creates an + instance of a golden section minimizer: + + const gsl_min_fminimizer_type * T = gsl_min_fminimizer_goldensection; + gsl_min_fminimizer * s = gsl_min_fminimizer_alloc (T); + + If there is insufficient memory to create the minimizer then the + function returns a null pointer and the error handler is invoked + with an error code of *note GSL_ENOMEM: 2a. + + -- Function: int gsl_min_fminimizer_set (gsl_min_fminimizer * s, + gsl_function * f, double x_minimum, double x_lower, + double x_upper) + + This function sets, or resets, an existing minimizer ‘s’ to use the + function ‘f’ and the initial search interval [‘x_lower’, + ‘x_upper’], with a guess for the location of the minimum + ‘x_minimum’. + + If the interval given does not contain a minimum, then the function + returns an error code of *note GSL_EINVAL: 2b. + + -- Function: int gsl_min_fminimizer_set_with_values (gsl_min_fminimizer + * s, gsl_function * f, double x_minimum, double f_minimum, + double x_lower, double f_lower, double x_upper, + double f_upper) + + This function is equivalent to *note gsl_min_fminimizer_set(): a60. + but uses the values ‘f_minimum’, ‘f_lower’ and ‘f_upper’ instead of + computing ‘f(x_minimum)’, ‘f(x_lower)’ and ‘f(x_upper)’. + + -- Function: void gsl_min_fminimizer_free (gsl_min_fminimizer * s) + + This function frees all the memory associated with the minimizer + ‘s’. + + -- Function: const char * gsl_min_fminimizer_name (const + gsl_min_fminimizer * s) + + This function returns a pointer to the name of the minimizer. For + example: + + printf ("s is a '%s' minimizer\n", gsl_min_fminimizer_name (s)); + + would print something like ‘s is a 'brent' minimizer’. + + +File: gsl-ref.info, Node: Providing the function to minimize, Next: Iteration<2>, Prev: Initializing the Minimizer, Up: One Dimensional Minimization + +37.4 Providing the function to minimize +======================================= + +You must provide a continuous function of one variable for the +minimizers to operate on. In order to allow for general parameters the +functions are defined by a *note gsl_function: a3e. data type (*note +Providing the function to solve: a3d.). + + +File: gsl-ref.info, Node: Iteration<2>, Next: Stopping Parameters, Prev: Providing the function to minimize, Up: One Dimensional Minimization + +37.5 Iteration +============== + +The following functions drive the iteration of each algorithm. Each +function performs one iteration to update the state of any minimizer of +the corresponding type. The same functions work for all minimizers so +that different methods can be substituted at runtime without +modifications to the code. + + -- Function: int gsl_min_fminimizer_iterate (gsl_min_fminimizer * s) + + This function performs a single iteration of the minimizer ‘s’. If + the iteration encounters an unexpected problem then an error code + will be returned, + + ‘GSL_EBADFUNC’ + + the iteration encountered a singular point where the function + evaluated to ‘Inf’ or ‘NaN’. + + ‘GSL_FAILURE’ + + the algorithm could not improve the current best approximation + or bounding interval. + +The minimizer maintains a current best estimate of the position of the +minimum at all times, and the current interval bounding the minimum. +This information can be accessed with the following auxiliary functions, + + -- Function: double gsl_min_fminimizer_x_minimum (const + gsl_min_fminimizer * s) + + This function returns the current estimate of the position of the + minimum for the minimizer ‘s’. + + -- Function: double gsl_min_fminimizer_x_upper (const + gsl_min_fminimizer * s) + -- Function: double gsl_min_fminimizer_x_lower (const + gsl_min_fminimizer * s) + + These functions return the current upper and lower bound of the + interval for the minimizer ‘s’. + + -- Function: double gsl_min_fminimizer_f_minimum (const + gsl_min_fminimizer * s) + -- Function: double gsl_min_fminimizer_f_upper (const + gsl_min_fminimizer * s) + -- Function: double gsl_min_fminimizer_f_lower (const + gsl_min_fminimizer * s) + + These functions return the value of the function at the current + estimate of the minimum and at the upper and lower bounds of the + interval for the minimizer ‘s’. + + +File: gsl-ref.info, Node: Stopping Parameters, Next: Minimization Algorithms, Prev: Iteration<2>, Up: One Dimensional Minimization + +37.6 Stopping Parameters +======================== + +A minimization procedure should stop when one of the following +conditions is true: + + * A minimum has been found to within the user-specified precision. + + * A user-specified maximum number of iterations has been reached. + + * An error has occurred. + +The handling of these conditions is under user control. The function +below allows the user to test the precision of the current result. + + -- Function: int gsl_min_test_interval (double x_lower, double x_upper, + double epsabs, double epsrel) + + This function tests for the convergence of the interval [‘x_lower’, + ‘x_upper’] with absolute error ‘epsabs’ and relative error + ‘epsrel’. The test returns ‘GSL_SUCCESS’ if the following + condition is achieved, + + |a - b| < epsabs + epsrel min(|a|,|b|) + + when the interval x = [a,b] does not include the origin. If the + interval includes the origin then \min(|a|,|b|) is replaced by zero + (which is the minimum value of |x| over the interval). This + ensures that the relative error is accurately estimated for minima + close to the origin. + + This condition on the interval also implies that any estimate of + the minimum x_m in the interval satisfies the same condition with + respect to the true minimum x_m^*, + + |x_m - x_m^*| < epsabs + epsrel x_m^* + + assuming that the true minimum x_m^* is contained within the + interval. + + +File: gsl-ref.info, Node: Minimization Algorithms, Next: Examples<28>, Prev: Stopping Parameters, Up: One Dimensional Minimization + +37.7 Minimization Algorithms +============================ + +The minimization algorithms described in this section require an initial +interval which is guaranteed to contain a minimum—if a and b are the +endpoints of the interval and x is an estimate of the minimum then f(a) +> f(x) < f(b). This ensures that the function has at least one minimum +somewhere in the interval. If a valid initial interval is used then +these algorithm cannot fail, provided the function is well-behaved. + + -- Type: gsl_min_fminimizer_type + + -- Variable: gsl_min_fminimizer_goldensection + + The `golden section algorithm' is the simplest method of + bracketing the minimum of a function. It is the slowest + algorithm provided by the library, with linear convergence. + + On each iteration, the algorithm first compares the + subintervals from the endpoints to the current minimum. The + larger subinterval is divided in a golden section (using the + famous ratio (3-\sqrt 5)/2 \approx 0.3819660 and the value of + the function at this new point is calculated. The new value + is used with the constraint f(a') > f(x') < f(b') to a select + new interval containing the minimum, by discarding the least + useful point. This procedure can be continued indefinitely + until the interval is sufficiently small. Choosing the golden + section as the bisection ratio can be shown to provide the + fastest convergence for this type of algorithm. + + -- Variable: gsl_min_fminimizer_brent + + The `Brent minimization algorithm' combines a parabolic + interpolation with the golden section algorithm. This + produces a fast algorithm which is still robust. + + The outline of the algorithm can be summarized as follows: on + each iteration Brent’s method approximates the function using + an interpolating parabola through three existing points. The + minimum of the parabola is taken as a guess for the minimum. + If it lies within the bounds of the current interval then the + interpolating point is accepted, and used to generate a + smaller interval. If the interpolating point is not accepted + then the algorithm falls back to an ordinary golden section + step. The full details of Brent’s method include some + additional checks to improve convergence. + + -- Variable: gsl_min_fminimizer_quad_golden + + This is a variant of Brent’s algorithm which uses the + safeguarded step-length algorithm of Gill and Murray. + + +File: gsl-ref.info, Node: Examples<28>, Next: References and Further Reading<29>, Prev: Minimization Algorithms, Up: One Dimensional Minimization + +37.8 Examples +============= + +The following program uses the Brent algorithm to find the minimum of +the function f(x) = \cos(x) + 1, which occurs at x = \pi. The starting +interval is (0,6), with an initial guess for the minimum of 2. + + #include + #include + #include + #include + + double fn1 (double x, void * params) + { + (void)(params); /* avoid unused parameter warning */ + return cos(x) + 1.0; + } + + int + main (void) + { + int status; + int iter = 0, max_iter = 100; + const gsl_min_fminimizer_type *T; + gsl_min_fminimizer *s; + double m = 2.0, m_expected = M_PI; + double a = 0.0, b = 6.0; + gsl_function F; + + F.function = &fn1; + F.params = 0; + + T = gsl_min_fminimizer_brent; + s = gsl_min_fminimizer_alloc (T); + gsl_min_fminimizer_set (s, &F, m, a, b); + + printf ("using %s method\n", + gsl_min_fminimizer_name (s)); + + printf ("%5s [%9s, %9s] %9s %10s %9s\n", + "iter", "lower", "upper", "min", + "err", "err(est)"); + + printf ("%5d [%.7f, %.7f] %.7f %+.7f %.7f\n", + iter, a, b, + m, m - m_expected, b - a); + + do + { + iter++; + status = gsl_min_fminimizer_iterate (s); + + m = gsl_min_fminimizer_x_minimum (s); + a = gsl_min_fminimizer_x_lower (s); + b = gsl_min_fminimizer_x_upper (s); + + status + = gsl_min_test_interval (a, b, 0.001, 0.0); + + if (status == GSL_SUCCESS) + printf ("Converged:\n"); + + printf ("%5d [%.7f, %.7f] " + "%.7f %+.7f %.7f\n", + iter, a, b, + m, m - m_expected, b - a); + } + while (status == GSL_CONTINUE && iter < max_iter); + + gsl_min_fminimizer_free (s); + + return status; + } + +Here are the results of the minimization procedure. + + using brent method + iter [ lower, upper] min err err(est) + 0 [0.0000000, 6.0000000] 2.0000000 -1.1415927 6.0000000 + 1 [2.0000000, 6.0000000] 3.5278640 +0.3862713 4.0000000 + 2 [2.0000000, 3.5278640] 3.1748217 +0.0332290 1.5278640 + 3 [2.0000000, 3.1748217] 3.1264576 -0.0151351 1.1748217 + 4 [3.1264576, 3.1748217] 3.1414743 -0.0001183 0.0483641 + 5 [3.1414743, 3.1748217] 3.1415930 +0.0000004 0.0333474 + Converged: + 6 [3.1414743, 3.1415930] 3.1415927 +0.0000000 0.0001187 + + +File: gsl-ref.info, Node: References and Further Reading<29>, Prev: Examples<28>, Up: One Dimensional Minimization + +37.9 References and Further Reading +=================================== + +Further information on Brent’s algorithm is available in the following +book, + + * Richard Brent, `Algorithms for minimization without derivatives', + Prentice-Hall (1973), republished by Dover in paperback (2002), + ISBN 0-486-41998-3. + + +File: gsl-ref.info, Node: Multidimensional Root-Finding, Next: Multidimensional Minimization, Prev: One Dimensional Minimization, Up: Top + +38 Multidimensional Root-Finding +******************************** + +This chapter describes functions for multidimensional root-finding +(solving nonlinear systems with n equations in n unknowns). The library +provides low level components for a variety of iterative solvers and +convergence tests. These can be combined by the user to achieve the +desired solution, with full access to the intermediate steps of the +iteration. Each class of methods uses the same framework, so that you +can switch between solvers at runtime without needing to recompile your +program. Each instance of a solver keeps track of its own state, +allowing the solvers to be used in multi-threaded programs. The solvers +are based on the original Fortran library MINPACK. + +The header file ‘gsl_multiroots.h’ contains prototypes for the +multidimensional root finding functions and related declarations. + +* Menu: + +* Overview: Overview<3>. +* Initializing the Solver: Initializing the Solver<2>. +* Providing the function to solve: Providing the function to solve<2>. +* Iteration: Iteration<3>. +* Search Stopping Parameters: Search Stopping Parameters<2>. +* Algorithms using Derivatives:: +* Algorithms without Derivatives:: +* Examples: Examples<29>. +* References and Further Reading: References and Further Reading<30>. + + +File: gsl-ref.info, Node: Overview<3>, Next: Initializing the Solver<2>, Up: Multidimensional Root-Finding + +38.1 Overview +============= + +The problem of multidimensional root finding requires the simultaneous +solution of n equations, f_i, in n variables, x_i, + + f_i (x_1, ..., x_n) = 0 for i = 1 ... n. + +In general there are no bracketing methods available for n dimensional +systems, and no way of knowing whether any solutions exist. All +algorithms proceed from an initial guess using a variant of the Newton +iteration, + + x -> x' = x - J^{-1} f(x) + +where x, f are vector quantities and J is the Jacobian matrix J_{ij} = +\partial f_i / \partial x_j. Additional strategies can be used to +enlarge the region of convergence. These include requiring a decrease +in the norm |f| on each step proposed by Newton’s method, or taking +steepest-descent steps in the direction of the negative gradient of |f|. + +Several root-finding algorithms are available within a single framework. +The user provides a high-level driver for the algorithms, and the +library provides the individual functions necessary for each of the +steps. There are three main phases of the iteration. The steps are, + + * initialize solver state, ‘s’, for algorithm ‘T’ + + * update ‘s’ using the iteration ‘T’ + + * test ‘s’ for convergence, and repeat iteration if necessary + +The evaluation of the Jacobian matrix can be problematic, either because +programming the derivatives is intractable or because computation of the +n^2 terms of the matrix becomes too expensive. For these reasons the +algorithms provided by the library are divided into two classes +according to whether the derivatives are available or not. + +The state for solvers with an analytic Jacobian matrix is held in a +*note gsl_multiroot_fdfsolver: a79. struct. The updating procedure +requires both the function and its derivatives to be supplied by the +user. + +The state for solvers which do not use an analytic Jacobian matrix is +held in a *note gsl_multiroot_fsolver: a7a. struct. The updating +procedure uses only function evaluations (not derivatives). The +algorithms estimate the matrix J or J^{-1} by approximate methods. + + +File: gsl-ref.info, Node: Initializing the Solver<2>, Next: Providing the function to solve<2>, Prev: Overview<3>, Up: Multidimensional Root-Finding + +38.2 Initializing the Solver +============================ + +The following functions initialize a multidimensional solver, either +with or without derivatives. The solver itself depends only on the +dimension of the problem and the algorithm and can be reused for +different problems. + + -- Type: gsl_multiroot_fsolver + + This is a workspace for multidimensional root-finding without + derivatives. + + -- Type: gsl_multiroot_fdfsolver + + This is a workspace for multidimensional root-finding with + derivatives. + + -- Function: gsl_multiroot_fsolver * gsl_multiroot_fsolver_alloc (const + gsl_multiroot_fsolver_type * T, size_t n) + + This function returns a pointer to a newly allocated instance of a + solver of type ‘T’ for a system of ‘n’ dimensions. For example, + the following code creates an instance of a hybrid solver, to solve + a 3-dimensional system of equations: + + const gsl_multiroot_fsolver_type * T = gsl_multiroot_fsolver_hybrid; + gsl_multiroot_fsolver * s = gsl_multiroot_fsolver_alloc (T, 3); + + If there is insufficient memory to create the solver then the + function returns a null pointer and the error handler is invoked + with an error code of *note GSL_ENOMEM: 2a. + + -- Function: gsl_multiroot_fdfsolver * gsl_multiroot_fdfsolver_alloc + (const gsl_multiroot_fdfsolver_type * T, size_t n) + + This function returns a pointer to a newly allocated instance of a + derivative solver of type ‘T’ for a system of ‘n’ dimensions. For + example, the following code creates an instance of a Newton-Raphson + solver, for a 2-dimensional system of equations: + + const gsl_multiroot_fdfsolver_type * T = gsl_multiroot_fdfsolver_newton; + gsl_multiroot_fdfsolver * s = gsl_multiroot_fdfsolver_alloc (T, 2); + + If there is insufficient memory to create the solver then the + function returns a null pointer and the error handler is invoked + with an error code of *note GSL_ENOMEM: 2a. + + -- Function: int gsl_multiroot_fsolver_set (gsl_multiroot_fsolver * s, + gsl_multiroot_function * f, const gsl_vector * x) + -- Function: int gsl_multiroot_fdfsolver_set (gsl_multiroot_fdfsolver + * s, gsl_multiroot_function_fdf * fdf, const gsl_vector * x) + + These functions set, or reset, an existing solver ‘s’ to use the + function ‘f’ or function and derivative ‘fdf’, and the initial + guess ‘x’. Note that the initial position is copied from ‘x’, this + argument is not modified by subsequent iterations. + + -- Function: void gsl_multiroot_fsolver_free (gsl_multiroot_fsolver + * s) + -- Function: void gsl_multiroot_fdfsolver_free (gsl_multiroot_fdfsolver + * s) + + These functions free all the memory associated with the solver ‘s’. + + -- Function: const char * gsl_multiroot_fsolver_name (const + gsl_multiroot_fsolver * s) + -- Function: const char * gsl_multiroot_fdfsolver_name (const + gsl_multiroot_fdfsolver * s) + + These functions return a pointer to the name of the solver. For + example: + + printf ("s is a '%s' solver\n", gsl_multiroot_fdfsolver_name (s)); + + would print something like ‘s is a 'newton' solver’. + + +File: gsl-ref.info, Node: Providing the function to solve<2>, Next: Iteration<3>, Prev: Initializing the Solver<2>, Up: Multidimensional Root-Finding + +38.3 Providing the function to solve +==================================== + +You must provide n functions of n variables for the root finders to +operate on. In order to allow for general parameters the functions are +defined by the following data types: + + -- Type: gsl_multiroot_function + + This data type defines a general system of functions with + parameters. + + ‘int (* f) (const gsl_vector * x, void * params, gsl_vector * f)’ + + this function should store the vector result f(x,params) in + ‘f’ for argument ‘x’ and parameters ‘params’, returning an + appropriate error code if the function cannot be computed. + + ‘size_t n’ + + the dimension of the system, i.e. the number of components of + the vectors ‘x’ and ‘f’. + + ‘void * params’ + + a pointer to the parameters of the function. + +Here is an example using Powell’s test function, + + f_1(x) = A x_0 x_1 - 1, + f_2(x) = exp(-x_0) + exp(-x_1) - (1 + 1/A) + +with A = 10^4. The following code defines a *note +gsl_multiroot_function: a85. system ‘F’ which you could pass to a +solver: + + struct powell_params { double A; }; + + int + powell (gsl_vector * x, void * p, gsl_vector * f) { + struct powell_params * params + = (struct powell_params *)p; + const double A = (params->A); + const double x0 = gsl_vector_get(x,0); + const double x1 = gsl_vector_get(x,1); + + gsl_vector_set (f, 0, A * x0 * x1 - 1); + gsl_vector_set (f, 1, (exp(-x0) + exp(-x1) + - (1.0 + 1.0/A))); + return GSL_SUCCESS + } + + gsl_multiroot_function F; + struct powell_params params = { 10000.0 }; + + F.f = &powell; + F.n = 2; + F.params = ¶ms; + + -- Type: gsl_multiroot_function_fdf + + This data type defines a general system of functions with + parameters and the corresponding Jacobian matrix of derivatives, + + ‘int (* f) (const gsl_vector * x, void * params, gsl_vector * f)’ + + this function should store the vector result f(x,params) in + ‘f’ for argument ‘x’ and parameters ‘params’, returning an + appropriate error code if the function cannot be computed. + + ‘int (* df) (const gsl_vector * x, void * params, gsl_matrix * J)’ + + this function should store the ‘n’-by-‘n’ matrix result + + J_ij = d f_i(x,params) / d x_j + + in ‘J’ for argument ‘x’ and parameters ‘params’, returning an + appropriate error code if the function cannot be computed. + + ‘int (* fdf) (const gsl_vector * x, void * params, gsl_vector * f, + gsl_matrix * J)’ + + This function should set the values of the ‘f’ and ‘J’ as + above, for arguments ‘x’ and parameters ‘params’. This + function provides an optimization of the separate functions + for f(x) and J(x)—it is always faster to compute the function + and its derivative at the same time. + + ‘size_t n’ + + the dimension of the system, i.e. the number of components of + the vectors ‘x’ and ‘f’. + + ‘void * params’ + + a pointer to the parameters of the function. + +The example of Powell’s test function defined above can be extended to +include analytic derivatives using the following code: + + int + powell_df (gsl_vector * x, void * p, gsl_matrix * J) + { + struct powell_params * params + = (struct powell_params *)p; + const double A = (params->A); + const double x0 = gsl_vector_get(x,0); + const double x1 = gsl_vector_get(x,1); + gsl_matrix_set (J, 0, 0, A * x1); + gsl_matrix_set (J, 0, 1, A * x0); + gsl_matrix_set (J, 1, 0, -exp(-x0)); + gsl_matrix_set (J, 1, 1, -exp(-x1)); + return GSL_SUCCESS + } + + int + powell_fdf (gsl_vector * x, void * p, + gsl_matrix * f, gsl_matrix * J) { + struct powell_params * params + = (struct powell_params *)p; + const double A = (params->A); + const double x0 = gsl_vector_get(x,0); + const double x1 = gsl_vector_get(x,1); + + const double u0 = exp(-x0); + const double u1 = exp(-x1); + + gsl_vector_set (f, 0, A * x0 * x1 - 1); + gsl_vector_set (f, 1, u0 + u1 - (1 + 1/A)); + + gsl_matrix_set (J, 0, 0, A * x1); + gsl_matrix_set (J, 0, 1, A * x0); + gsl_matrix_set (J, 1, 0, -u0); + gsl_matrix_set (J, 1, 1, -u1); + return GSL_SUCCESS + } + + gsl_multiroot_function_fdf FDF; + + FDF.f = &powell_f; + FDF.df = &powell_df; + FDF.fdf = &powell_fdf; + FDF.n = 2; + FDF.params = 0; + +Note that the function ‘powell_fdf’ is able to reuse existing terms from +the function when calculating the Jacobian, thus saving time. + + +File: gsl-ref.info, Node: Iteration<3>, Next: Search Stopping Parameters<2>, Prev: Providing the function to solve<2>, Up: Multidimensional Root-Finding + +38.4 Iteration +============== + +The following functions drive the iteration of each algorithm. Each +function performs one iteration to update the state of any solver of the +corresponding type. The same functions work for all solvers so that +different methods can be substituted at runtime without modifications to +the code. + + -- Function: int gsl_multiroot_fsolver_iterate (gsl_multiroot_fsolver + * s) + -- Function: int gsl_multiroot_fdfsolver_iterate + (gsl_multiroot_fdfsolver * s) + + These functions perform a single iteration of the solver ‘s’. If + the iteration encounters an unexpected problem then an error code + will be returned, + + ‘GSL_EBADFUNC’ + + the iteration encountered a singular point where the function + or its derivative evaluated to ‘Inf’ or ‘NaN’. + + ‘GSL_ENOPROG’ + + the iteration is not making any progress, preventing the + algorithm from continuing. + +The solver maintains a current best estimate of the root ‘s->x’ and its +function value ‘s->f’ at all times. This information can be accessed +with the following auxiliary functions, + + -- Function: gsl_vector * gsl_multiroot_fsolver_root (const + gsl_multiroot_fsolver * s) + -- Function: gsl_vector * gsl_multiroot_fdfsolver_root (const + gsl_multiroot_fdfsolver * s) + + These functions return the current estimate of the root for the + solver ‘s’, given by ‘s->x’. + + -- Function: gsl_vector * gsl_multiroot_fsolver_f (const + gsl_multiroot_fsolver * s) + -- Function: gsl_vector * gsl_multiroot_fdfsolver_f (const + gsl_multiroot_fdfsolver * s) + + These functions return the function value f(x) at the current + estimate of the root for the solver ‘s’, given by ‘s->f’. + + -- Function: gsl_vector * gsl_multiroot_fsolver_dx (const + gsl_multiroot_fsolver * s) + -- Function: gsl_vector * gsl_multiroot_fdfsolver_dx (const + gsl_multiroot_fdfsolver * s) + + These functions return the last step dx taken by the solver ‘s’, + given by ‘s->dx’. + + +File: gsl-ref.info, Node: Search Stopping Parameters<2>, Next: Algorithms using Derivatives, Prev: Iteration<3>, Up: Multidimensional Root-Finding + +38.5 Search Stopping Parameters +=============================== + +A root finding procedure should stop when one of the following +conditions is true: + + * A multidimensional root has been found to within the user-specified + precision. + + * A user-specified maximum number of iterations has been reached. + + * An error has occurred. + +The handling of these conditions is under user control. The functions +below allow the user to test the precision of the current result in +several standard ways. + + -- Function: int gsl_multiroot_test_delta (const gsl_vector * dx, const + gsl_vector * x, double epsabs, double epsrel) + + This function tests for the convergence of the sequence by + comparing the last step ‘dx’ with the absolute error ‘epsabs’ and + relative error ‘epsrel’ to the current position ‘x’. The test + returns ‘GSL_SUCCESS’ if the following condition is achieved, + + |dx_i| < epsabs + epsrel |x_i| + + for each component of ‘x’ and returns ‘GSL_CONTINUE’ otherwise. + + -- Function: int gsl_multiroot_test_residual (const gsl_vector * f, + double epsabs) + + This function tests the residual value ‘f’ against the absolute + error bound ‘epsabs’. The test returns ‘GSL_SUCCESS’ if the + following condition is achieved, + + \sum_i |f_i| < epsabs + + and returns ‘GSL_CONTINUE’ otherwise. This criterion is suitable + for situations where the precise location of the root, x, is + unimportant provided a value can be found where the residual is + small enough. + + +File: gsl-ref.info, Node: Algorithms using Derivatives, Next: Algorithms without Derivatives, Prev: Search Stopping Parameters<2>, Up: Multidimensional Root-Finding + +38.6 Algorithms using Derivatives +================================= + +The root finding algorithms described in this section make use of both +the function and its derivative. They require an initial guess for the +location of the root, but there is no absolute guarantee of +convergence—the function must be suitable for this technique and the +initial guess must be sufficiently close to the root for it to work. +When the conditions are satisfied then convergence is quadratic. + + -- Type: gsl_multiroot_fdfsolver_type + + The following are available algorithms for minimizing functions + using derivatives. + + -- Variable: gsl_multiroot_fdfsolver_hybridsj + + This is a modified version of Powell’s Hybrid method as + implemented in the HYBRJ algorithm in MINPACK. Minpack was + written by Jorge J. Moré, Burton S. Garbow and Kenneth E. + Hillstrom. The Hybrid algorithm retains the fast convergence + of Newton’s method but will also reduce the residual when + Newton’s method is unreliable. + + The algorithm uses a generalized trust region to keep each + step under control. In order to be accepted a proposed new + position x' must satisfy the condition |D (x' - x)| < \delta, + where D is a diagonal scaling matrix and \delta is the size of + the trust region. The components of D are computed + internally, using the column norms of the Jacobian to estimate + the sensitivity of the residual to each component of x. This + improves the behavior of the algorithm for badly scaled + functions. + + On each iteration the algorithm first determines the standard + Newton step by solving the system J dx = - f. If this step + falls inside the trust region it is used as a trial step in + the next stage. If not, the algorithm uses the linear + combination of the Newton and gradient directions which is + predicted to minimize the norm of the function while staying + inside the trust region, + + dx = - \alpha J^{-1} f(x) - \beta \nabla |f(x)|^2 + + This combination of Newton and gradient directions is referred + to as a `dogleg step'. + + The proposed step is now tested by evaluating the function at + the resulting point, x'. If the step reduces the norm of the + function sufficiently then it is accepted and size of the + trust region is increased. If the proposed step fails to + improve the solution then the size of the trust region is + decreased and another trial step is computed. + + The speed of the algorithm is increased by computing the + changes to the Jacobian approximately, using a rank-1 update. + If two successive attempts fail to reduce the residual then + the full Jacobian is recomputed. The algorithm also monitors + the progress of the solution and returns an error if several + steps fail to make any improvement, + + ‘GSL_ENOPROG’ + + the iteration is not making any progress, preventing the + algorithm from continuing. + + ‘GSL_ENOPROGJ’ + + re-evaluations of the Jacobian indicate that the + iteration is not making any progress, preventing the + algorithm from continuing. + + -- Variable: gsl_multiroot_fdfsolver_hybridj + + This algorithm is an unscaled version of HYBRIDSJ. The steps + are controlled by a spherical trust region |x' - x| < \delta, + instead of a generalized region. This can be useful if the + generalized region estimated by HYBRIDSJ is inappropriate. + + -- Variable: gsl_multiroot_fdfsolver_newton + + Newton’s Method is the standard root-polishing algorithm. The + algorithm begins with an initial guess for the location of the + solution. On each iteration a linear approximation to the + function F is used to estimate the step which will zero all + the components of the residual. The iteration is defined by + the following sequence, + + x -> x' = x - J^{-1} f(x) + + where the Jacobian matrix J is computed from the derivative + functions provided by ‘f’. The step dx is obtained by solving + the linear system, + + J dx = - f(x) + + using LU decomposition. If the Jacobian matrix is singular, + an error code of *note GSL_EDOM: 28. is returned. + + -- Variable: gsl_multiroot_fdfsolver_gnewton + + This is a modified version of Newton’s method which attempts + to improve global convergence by requiring every step to + reduce the Euclidean norm of the residual, |f(x)|. If the + Newton step leads to an increase in the norm then a reduced + step of relative size, + + t = (\sqrt{1 + 6 r} - 1) / (3 r) + + is proposed, with r being the ratio of norms + |f(x')|^2/|f(x)|^2. This procedure is repeated until a + suitable step size is found. + + +File: gsl-ref.info, Node: Algorithms without Derivatives, Next: Examples<29>, Prev: Algorithms using Derivatives, Up: Multidimensional Root-Finding + +38.7 Algorithms without Derivatives +=================================== + +The algorithms described in this section do not require any derivative +information to be supplied by the user. Any derivatives needed are +approximated by finite differences. Note that if the +finite-differencing step size chosen by these routines is inappropriate, +an explicit user-supplied numerical derivative can always be used with +the algorithms described in the previous section. + + -- Type: gsl_multiroot_fsolver_type + + The following are available algorithms for minimizing functions + without derivatives. + + -- Variable: gsl_multiroot_fsolver_hybrids + + This is a version of the Hybrid algorithm which replaces calls + to the Jacobian function by its finite difference + approximation. The finite difference approximation is + computed using ‘gsl_multiroots_fdjac()’ with a relative step + size of ‘GSL_SQRT_DBL_EPSILON’. Note that this step size will + not be suitable for all problems. + + -- Variable: gsl_multiroot_fsolver_hybrid + + This is a finite difference version of the Hybrid algorithm + without internal scaling. + + -- Variable: gsl_multiroot_fsolver_dnewton + + The `discrete Newton algorithm' is the simplest method of + solving a multidimensional system. It uses the Newton + iteration + + x -> x - J^{-1} f(x) + + where the Jacobian matrix J is approximated by taking finite + differences of the function ‘f’. The approximation scheme + used by this implementation is, + + J_{ij} = (f_i(x + \delta_j) - f_i(x)) / \delta_j + + where \delta_j is a step of size \sqrt\epsilon |x_j| with + \epsilon being the machine precision (\epsilon \approx 2.22 + \times 10^{-16}). The order of convergence of Newton’s + algorithm is quadratic, but the finite differences require n^2 + function evaluations on each iteration. The algorithm may + become unstable if the finite differences are not a good + approximation to the true derivatives. + + -- Variable: gsl_multiroot_fsolver_broyden + + The `Broyden algorithm' is a version of the discrete Newton + algorithm which attempts to avoids the expensive update of the + Jacobian matrix on each iteration. The changes to the + Jacobian are also approximated, using a rank-1 update, + + J^{-1} \to J^{-1} - (J^{-1} df - dx) dx^T J^{-1} / dx^T J^{-1} df + + where the vectors dx and df are the changes in x and f. On + the first iteration the inverse Jacobian is estimated using + finite differences, as in the discrete Newton algorithm. + + This approximation gives a fast update but is unreliable if + the changes are not small, and the estimate of the inverse + Jacobian becomes worse as time passes. The algorithm has a + tendency to become unstable unless it starts close to the + root. The Jacobian is refreshed if this instability is + detected (consult the source for details). + + This algorithm is included only for demonstration purposes, + and is not recommended for serious use. + + +File: gsl-ref.info, Node: Examples<29>, Next: References and Further Reading<30>, Prev: Algorithms without Derivatives, Up: Multidimensional Root-Finding + +38.8 Examples +============= + +The multidimensional solvers are used in a similar way to the +one-dimensional root finding algorithms. This first example +demonstrates the HYBRIDS scaled-hybrid algorithm, which does not require +derivatives. The program solves the Rosenbrock system of equations, + + f_1 (x, y) = a (1 - x) + f_2 (x, y) = b (y - x^2) + +with a = 1, b = 10. The solution of this system lies at (x,y) = (1,1) +in a narrow valley. + +The first stage of the program is to define the system of equations: + + #include + #include + #include + #include + + struct rparams + { + double a; + double b; + }; + + int + rosenbrock_f (const gsl_vector * x, void *params, + gsl_vector * f) + { + double a = ((struct rparams *) params)->a; + double b = ((struct rparams *) params)->b; + + const double x0 = gsl_vector_get (x, 0); + const double x1 = gsl_vector_get (x, 1); + + const double y0 = a * (1 - x0); + const double y1 = b * (x1 - x0 * x0); + + gsl_vector_set (f, 0, y0); + gsl_vector_set (f, 1, y1); + + return GSL_SUCCESS; + } + +The main program begins by creating the function object ‘f’, with the +arguments ‘(x,y)’ and parameters ‘(a,b)’. The solver ‘s’ is initialized +to use this function, with the *note gsl_multiroot_fsolver_hybrids: a9b. +method: + + int + main (void) + { + const gsl_multiroot_fsolver_type *T; + gsl_multiroot_fsolver *s; + + int status; + size_t i, iter = 0; + + const size_t n = 2; + struct rparams p = {1.0, 10.0}; + gsl_multiroot_function f = {&rosenbrock_f, n, &p}; + + double x_init[2] = {-10.0, -5.0}; + gsl_vector *x = gsl_vector_alloc (n); + + gsl_vector_set (x, 0, x_init[0]); + gsl_vector_set (x, 1, x_init[1]); + + T = gsl_multiroot_fsolver_hybrids; + s = gsl_multiroot_fsolver_alloc (T, 2); + gsl_multiroot_fsolver_set (s, &f, x); + + print_state (iter, s); + + do + { + iter++; + status = gsl_multiroot_fsolver_iterate (s); + + print_state (iter, s); + + if (status) /* check if solver is stuck */ + break; + + status = + gsl_multiroot_test_residual (s->f, 1e-7); + } + while (status == GSL_CONTINUE && iter < 1000); + + printf ("status = %s\n", gsl_strerror (status)); + + gsl_multiroot_fsolver_free (s); + gsl_vector_free (x); + return 0; + } + +Note that it is important to check the return status of each solver +step, in case the algorithm becomes stuck. If an error condition is +detected, indicating that the algorithm cannot proceed, then the error +can be reported to the user, a new starting point chosen or a different +algorithm used. + +The intermediate state of the solution is displayed by the following +function. The solver state contains the vector ‘s->x’ which is the +current position, and the vector ‘s->f’ with corresponding function +values: + + int + print_state (size_t iter, gsl_multiroot_fsolver * s) + { + printf ("iter = %3u x = % .3f % .3f " + "f(x) = % .3e % .3e\n", + iter, + gsl_vector_get (s->x, 0), + gsl_vector_get (s->x, 1), + gsl_vector_get (s->f, 0), + gsl_vector_get (s->f, 1)); + } + +Here are the results of running the program. The algorithm is started +at (-10,-5) far from the solution. Since the solution is hidden in a +narrow valley the earliest steps follow the gradient of the function +downhill, in an attempt to reduce the large value of the residual. Once +the root has been approximately located, on iteration 8, the Newton +behavior takes over and convergence is very rapid: + + iter = 0 x = -10.000 -5.000 f(x) = 1.100e+01 -1.050e+03 + iter = 1 x = -10.000 -5.000 f(x) = 1.100e+01 -1.050e+03 + iter = 2 x = -3.976 24.827 f(x) = 4.976e+00 9.020e+01 + iter = 3 x = -3.976 24.827 f(x) = 4.976e+00 9.020e+01 + iter = 4 x = -3.976 24.827 f(x) = 4.976e+00 9.020e+01 + iter = 5 x = -1.274 -5.680 f(x) = 2.274e+00 -7.302e+01 + iter = 6 x = -1.274 -5.680 f(x) = 2.274e+00 -7.302e+01 + iter = 7 x = 0.249 0.298 f(x) = 7.511e-01 2.359e+00 + iter = 8 x = 0.249 0.298 f(x) = 7.511e-01 2.359e+00 + iter = 9 x = 1.000 0.878 f(x) = 1.268e-10 -1.218e+00 + iter = 10 x = 1.000 0.989 f(x) = 1.124e-11 -1.080e-01 + iter = 11 x = 1.000 1.000 f(x) = 0.000e+00 0.000e+00 + status = success + +Note that the algorithm does not update the location on every iteration. +Some iterations are used to adjust the trust-region parameter, after +trying a step which was found to be divergent, or to recompute the +Jacobian, when poor convergence behavior is detected. + +The next example program adds derivative information, in order to +accelerate the solution. There are two derivative functions +‘rosenbrock_df’ and ‘rosenbrock_fdf’. The latter computes both the +function and its derivative simultaneously. This allows the +optimization of any common terms. For simplicity we substitute calls to +the separate ‘f’ and ‘df’ functions at this point in the code below: + + int + rosenbrock_df (const gsl_vector * x, void *params, + gsl_matrix * J) + { + const double a = ((struct rparams *) params)->a; + const double b = ((struct rparams *) params)->b; + + const double x0 = gsl_vector_get (x, 0); + + const double df00 = -a; + const double df01 = 0; + const double df10 = -2 * b * x0; + const double df11 = b; + + gsl_matrix_set (J, 0, 0, df00); + gsl_matrix_set (J, 0, 1, df01); + gsl_matrix_set (J, 1, 0, df10); + gsl_matrix_set (J, 1, 1, df11); + + return GSL_SUCCESS; + } + + int + rosenbrock_fdf (const gsl_vector * x, void *params, + gsl_vector * f, gsl_matrix * J) + { + rosenbrock_f (x, params, f); + rosenbrock_df (x, params, J); + + return GSL_SUCCESS; + } + +The main program now makes calls to the corresponding ‘fdfsolver’ +versions of the functions: + + int + main (void) + { + const gsl_multiroot_fdfsolver_type *T; + gsl_multiroot_fdfsolver *s; + + int status; + size_t i, iter = 0; + + const size_t n = 2; + struct rparams p = {1.0, 10.0}; + gsl_multiroot_function_fdf f = {&rosenbrock_f, + &rosenbrock_df, + &rosenbrock_fdf, + n, &p}; + + double x_init[2] = {-10.0, -5.0}; + gsl_vector *x = gsl_vector_alloc (n); + + gsl_vector_set (x, 0, x_init[0]); + gsl_vector_set (x, 1, x_init[1]); + + T = gsl_multiroot_fdfsolver_gnewton; + s = gsl_multiroot_fdfsolver_alloc (T, n); + gsl_multiroot_fdfsolver_set (s, &f, x); + + print_state (iter, s); + + do + { + iter++; + + status = gsl_multiroot_fdfsolver_iterate (s); + + print_state (iter, s); + + if (status) + break; + + status = gsl_multiroot_test_residual (s->f, 1e-7); + } + while (status == GSL_CONTINUE && iter < 1000); + + printf ("status = %s\n", gsl_strerror (status)); + + gsl_multiroot_fdfsolver_free (s); + gsl_vector_free (x); + return 0; + } + +The addition of derivative information to the *note +gsl_multiroot_fsolver_hybrids: a9b. solver does not make any significant +difference to its behavior, since it able to approximate the Jacobian +numerically with sufficient accuracy. To illustrate the behavior of a +different derivative solver we switch to *note +gsl_multiroot_fdfsolver_gnewton: a98. This is a traditional Newton +solver with the constraint that it scales back its step if the full step +would lead “uphill”. Here is the output for the *note +gsl_multiroot_fdfsolver_gnewton: a98. algorithm: + + iter = 0 x = -10.000 -5.000 f(x) = 1.100e+01 -1.050e+03 + iter = 1 x = -4.231 -65.317 f(x) = 5.231e+00 -8.321e+02 + iter = 2 x = 1.000 -26.358 f(x) = -8.882e-16 -2.736e+02 + iter = 3 x = 1.000 1.000 f(x) = -2.220e-16 -4.441e-15 + status = success + +The convergence is much more rapid, but takes a wide excursion out to +the point (-4.23,-65.3). This could cause the algorithm to go astray in +a realistic application. The hybrid algorithm follows the downhill path +to the solution more reliably. + + +File: gsl-ref.info, Node: References and Further Reading<30>, Prev: Examples<29>, Up: Multidimensional Root-Finding + +38.9 References and Further Reading +=================================== + +The original version of the Hybrid method is described in the following +articles by Powell, + + * M.J.D. Powell, “A Hybrid Method for Nonlinear Equations” (Chap 6, p + 87–114) and “A Fortran Subroutine for Solving systems of Nonlinear + Algebraic Equations” (Chap 7, p 115–161), in `Numerical Methods for + Nonlinear Algebraic Equations', P. Rabinowitz, editor. Gordon and + Breach, 1970. + +The following papers are also relevant to the algorithms described in +this section, + + * J.J. Moré, M.Y. Cosnard, “Numerical Solution of Nonlinear + Equations”, `ACM Transactions on Mathematical Software', Vol 5, No + 1, (1979), p 64–85 + + * C.G. Broyden, “A Class of Methods for Solving Nonlinear + Simultaneous Equations”, `Mathematics of Computation', Vol 19 + (1965), p 577–593 + + * J.J. Moré, B.S. Garbow, K.E. Hillstrom, “Testing Unconstrained + Optimization Software”, ACM Transactions on Mathematical Software, + Vol 7, No 1 (1981), p 17–41 + + +File: gsl-ref.info, Node: Multidimensional Minimization, Next: Linear Least-Squares Fitting, Prev: Multidimensional Root-Finding, Up: Top + +39 Multidimensional Minimization +******************************** + +This chapter describes routines for finding minima of arbitrary +multidimensional functions. The library provides low level components +for a variety of iterative minimizers and convergence tests. These can +be combined by the user to achieve the desired solution, while providing +full access to the intermediate steps of the algorithms. Each class of +methods uses the same framework, so that you can switch between +minimizers at runtime without needing to recompile your program. Each +instance of a minimizer keeps track of its own state, allowing the +minimizers to be used in multi-threaded programs. The minimization +algorithms can be used to maximize a function by inverting its sign. + +The header file ‘gsl_multimin.h’ contains prototypes for the +minimization functions and related declarations. + +* Menu: + +* Overview: Overview<4>. +* Caveats: Caveats<3>. +* Initializing the Multidimensional Minimizer:: +* Providing a function to minimize:: +* Iteration: Iteration<4>. +* Stopping Criteria:: +* Algorithms with Derivatives:: +* Algorithms without Derivatives: Algorithms without Derivatives<2>. +* Examples: Examples<30>. +* References and Further Reading: References and Further Reading<31>. + + +File: gsl-ref.info, Node: Overview<4>, Next: Caveats<3>, Up: Multidimensional Minimization + +39.1 Overview +============= + +The problem of multidimensional minimization requires finding a point x +such that the scalar function, + + f(x_1, \dots, x_n) + +takes a value which is lower than at any neighboring point. For smooth +functions the gradient g = \nabla f vanishes at the minimum. In general +there are no bracketing methods available for the minimization of +n-dimensional functions. The algorithms proceed from an initial guess +using a search algorithm which attempts to move in a downhill direction. + +Algorithms making use of the gradient of the function perform a +one-dimensional line minimisation along this direction until the lowest +point is found to a suitable tolerance. The search direction is then +updated with local information from the function and its derivatives, +and the whole process repeated until the true n-dimensional minimum is +found. + +Algorithms which do not require the gradient of the function use +different strategies. For example, the Nelder-Mead Simplex algorithm +maintains n+1 trial parameter vectors as the vertices of a n-dimensional +simplex. On each iteration it tries to improve the worst vertex of the +simplex by geometrical transformations. The iterations are continued +until the overall size of the simplex has decreased sufficiently. + +Both types of algorithms use a standard framework. The user provides a +high-level driver for the algorithms, and the library provides the +individual functions necessary for each of the steps. There are three +main phases of the iteration. The steps are, + + * initialize minimizer state, ‘s’, for algorithm ‘T’ + + * update ‘s’ using the iteration ‘T’ + + * test ‘s’ for convergence, and repeat iteration if necessary + +Each iteration step consists either of an improvement to the +line-minimisation in the current direction or an update to the search +direction itself. The state for the minimizers is held in a *note +gsl_multimin_fdfminimizer: aa4. struct or a *note +gsl_multimin_fminimizer: aa5. struct. + + +File: gsl-ref.info, Node: Caveats<3>, Next: Initializing the Multidimensional Minimizer, Prev: Overview<4>, Up: Multidimensional Minimization + +39.2 Caveats +============ + +Note that the minimization algorithms can only search for one local +minimum at a time. When there are several local minima in the search +area, the first minimum to be found will be returned; however it is +difficult to predict which of the minima this will be. In most cases, +no error will be reported if you try to find a local minimum in an area +where there is more than one. + +It is also important to note that the minimization algorithms find local +minima; there is no way to determine whether a minimum is a global +minimum of the function in question. + + +File: gsl-ref.info, Node: Initializing the Multidimensional Minimizer, Next: Providing a function to minimize, Prev: Caveats<3>, Up: Multidimensional Minimization + +39.3 Initializing the Multidimensional Minimizer +================================================ + +The following function initializes a multidimensional minimizer. The +minimizer itself depends only on the dimension of the problem and the +algorithm and can be reused for different problems. + + -- Type: gsl_multimin_fdfminimizer + + This is a workspace for minimizing functions using derivatives. + + -- Type: gsl_multimin_fminimizer + + This is a workspace for minimizing functions without derivatives. + + -- Function: gsl_multimin_fdfminimizer * + gsl_multimin_fdfminimizer_alloc (const + gsl_multimin_fdfminimizer_type * T, size_t n) + -- Function: gsl_multimin_fminimizer * gsl_multimin_fminimizer_alloc + (const gsl_multimin_fminimizer_type * T, size_t n) + + This function returns a pointer to a newly allocated instance of a + minimizer of type ‘T’ for an ‘n’-dimension function. If there is + insufficient memory to create the minimizer then the function + returns a null pointer and the error handler is invoked with an + error code of *note GSL_ENOMEM: 2a. + + -- Function: int gsl_multimin_fdfminimizer_set + (gsl_multimin_fdfminimizer * s, gsl_multimin_function_fdf + * fdf, const gsl_vector * x, double step_size, double tol) + -- Function: int gsl_multimin_fminimizer_set (gsl_multimin_fminimizer + * s, gsl_multimin_function * f, const gsl_vector * x, const + gsl_vector * step_size) + + The function *note gsl_multimin_fdfminimizer_set(): aaa. + initializes the minimizer ‘s’ to minimize the function ‘fdf’ + starting from the initial point ‘x’. The size of the first trial + step is given by ‘step_size’. The accuracy of the line + minimization is specified by ‘tol’. The precise meaning of this + parameter depends on the method used. Typically the line + minimization is considered successful if the gradient of the + function g is orthogonal to the current search direction p to a + relative accuracy of ‘tol’, where p \cdot g < tol |p| |g|. A ‘tol’ + value of 0.1 is suitable for most purposes, since line minimization + only needs to be carried out approximately. Note that setting + ‘tol’ to zero will force the use of “exact” line-searches, which + are extremely expensive. + + The function *note gsl_multimin_fminimizer_set(): aab. initializes + the minimizer ‘s’ to minimize the function ‘f’, starting from the + initial point ‘x’. The size of the initial trial steps is given in + vector ‘step_size’. The precise meaning of this parameter depends + on the method used. + + -- Function: void gsl_multimin_fdfminimizer_free + (gsl_multimin_fdfminimizer * s) + -- Function: void gsl_multimin_fminimizer_free (gsl_multimin_fminimizer + * s) + + This function frees all the memory associated with the minimizer + ‘s’. + + -- Function: const char * gsl_multimin_fdfminimizer_name (const + gsl_multimin_fdfminimizer * s) + -- Function: const char * gsl_multimin_fminimizer_name (const + gsl_multimin_fminimizer * s) + + This function returns a pointer to the name of the minimizer. For + example: + + printf ("s is a '%s' minimizer\n", gsl_multimin_fdfminimizer_name (s)); + + would print something like ‘s is a 'conjugate_pr' minimizer’. + + +File: gsl-ref.info, Node: Providing a function to minimize, Next: Iteration<4>, Prev: Initializing the Multidimensional Minimizer, Up: Multidimensional Minimization + +39.4 Providing a function to minimize +===================================== + +You must provide a parametric function of n variables for the minimizers +to operate on. You may also need to provide a routine which calculates +the gradient of the function and a third routine which calculates both +the function value and the gradient together. In order to allow for +general parameters the functions are defined by the following data +types: + + -- Type: gsl_multimin_function_fdf + + This data type defines a general function of n variables with + parameters and the corresponding gradient vector of derivatives, + + ‘double (* f) (const gsl_vector * x, void * params)’ + + this function should return the result f(x,params) for + argument ‘x’ and parameters ‘params’. If the function cannot + be computed, an error value of *note GSL_NAN: 3c. should be + returned. + + ‘void (* df) (const gsl_vector * x, void * params, gsl_vector * g)’ + + this function should store the ‘n’-dimensional gradient + + g_i = d f(x,params) / d x_i + + in the vector ‘g’ for argument ‘x’ and parameters ‘params’, + returning an appropriate error code if the function cannot be + computed. + + ‘void (* fdf) (const gsl_vector * x, void * params, double * f, + gsl_vector * g)’ + + This function should set the values of the ‘f’ and ‘g’ as + above, for arguments ‘x’ and parameters ‘params’. This + function provides an optimization of the separate functions + for f(x) and g(x)—it is always faster to compute the function + and its derivative at the same time. + + ‘size_t n’ + + the dimension of the system, i.e. the number of components of + the vectors ‘x’. + + ‘void * params’ + + a pointer to the parameters of the function. + + -- Type: gsl_multimin_function + + This data type defines a general function of n variables with + parameters, + + ‘double (* f) (const gsl_vector * x, void * params)’ + + this function should return the result f(x,params) for + argument ‘x’ and parameters ‘params’. If the function cannot + be computed, an error value of *note GSL_NAN: 3c. should be + returned. + + ‘size_t n’ + + the dimension of the system, i.e. the number of components of + the vectors ‘x’. + + ‘void * params’ + + a pointer to the parameters of the function. +The following example function defines a simple two-dimensional +paraboloid with five parameters, + + /* Paraboloid centered on (p[0],p[1]), with + scale factors (p[2],p[3]) and minimum p[4] */ + + double + my_f (const gsl_vector *v, void *params) + { + double x, y; + double *p = (double *)params; + + x = gsl_vector_get(v, 0); + y = gsl_vector_get(v, 1); + + return p[2] * (x - p[0]) * (x - p[0]) + + p[3] * (y - p[1]) * (y - p[1]) + p[4]; + } + + /* The gradient of f, df = (df/dx, df/dy). */ + void + my_df (const gsl_vector *v, void *params, + gsl_vector *df) + { + double x, y; + double *p = (double *)params; + + x = gsl_vector_get(v, 0); + y = gsl_vector_get(v, 1); + + gsl_vector_set(df, 0, 2.0 * p[2] * (x - p[0])); + gsl_vector_set(df, 1, 2.0 * p[3] * (y - p[1])); + } + + /* Compute both f and df together. */ + void + my_fdf (const gsl_vector *x, void *params, + double *f, gsl_vector *df) + { + *f = my_f(x, params); + my_df(x, params, df); + } + +The function can be initialized using the following code: + + gsl_multimin_function_fdf my_func; + + /* Paraboloid center at (1,2), scale factors (10, 20), + minimum value 30 */ + double p[5] = { 1.0, 2.0, 10.0, 20.0, 30.0 }; + + my_func.n = 2; /* number of function components */ + my_func.f = &my_f; + my_func.df = &my_df; + my_func.fdf = &my_fdf; + my_func.params = (void *)p; + + +File: gsl-ref.info, Node: Iteration<4>, Next: Stopping Criteria, Prev: Providing a function to minimize, Up: Multidimensional Minimization + +39.5 Iteration +============== + +The following function drives the iteration of each algorithm. The +function performs one iteration to update the state of the minimizer. +The same function works for all minimizers so that different methods can +be substituted at runtime without modifications to the code. + + -- Function: int gsl_multimin_fdfminimizer_iterate + (gsl_multimin_fdfminimizer * s) + -- Function: int gsl_multimin_fminimizer_iterate + (gsl_multimin_fminimizer * s) + + These functions perform a single iteration of the minimizer ‘s’. + If the iteration encounters an unexpected problem then an error + code will be returned. The error code ‘GSL_ENOPROG’ signifies that + the minimizer is unable to improve on its current estimate, either + due to numerical difficulty or because a genuine local minimum has + been reached. + +The minimizer maintains a current best estimate of the minimum at all +times. This information can be accessed with the following auxiliary +functions, + + -- Function: gsl_vector * gsl_multimin_fdfminimizer_x (const + gsl_multimin_fdfminimizer * s) + -- Function: gsl_vector * gsl_multimin_fminimizer_x (const + gsl_multimin_fminimizer * s) + -- Function: double gsl_multimin_fdfminimizer_minimum (const + gsl_multimin_fdfminimizer * s) + -- Function: double gsl_multimin_fminimizer_minimum (const + gsl_multimin_fminimizer * s) + -- Function: gsl_vector * gsl_multimin_fdfminimizer_gradient (const + gsl_multimin_fdfminimizer * s) + -- Function: gsl_vector * gsl_multimin_fdfminimizer_dx (const + gsl_multimin_fdfminimizer * s) + -- Function: double gsl_multimin_fminimizer_size (const + gsl_multimin_fminimizer * s) + + These functions return the current best estimate of the location of + the minimum, the value of the function at that point, its gradient, + the last step increment of the estimate, and minimizer specific + characteristic size for the minimizer ‘s’. + + -- Function: int gsl_multimin_fdfminimizer_restart + (gsl_multimin_fdfminimizer * s) + + This function resets the minimizer ‘s’ to use the current point as + a new starting point. + + +File: gsl-ref.info, Node: Stopping Criteria, Next: Algorithms with Derivatives, Prev: Iteration<4>, Up: Multidimensional Minimization + +39.6 Stopping Criteria +====================== + +A minimization procedure should stop when one of the following +conditions is true: + + * A minimum has been found to within the user-specified precision. + + * A user-specified maximum number of iterations has been reached. + + * An error has occurred. + +The handling of these conditions is under user control. The functions +below allow the user to test the precision of the current result. + + -- Function: int gsl_multimin_test_gradient (const gsl_vector * g, + double epsabs) + + This function tests the norm of the gradient ‘g’ against the + absolute tolerance ‘epsabs’. The gradient of a multidimensional + function goes to zero at a minimum. The test returns ‘GSL_SUCCESS’ + if the following condition is achieved, + + |g| < epsabs + + and returns ‘GSL_CONTINUE’ otherwise. A suitable choice of + ‘epsabs’ can be made from the desired accuracy in the function for + small variations in x. The relationship between these quantities + is given by \delta{f} = g\,\delta{x}. + + -- Function: int gsl_multimin_test_size (const double size, + double epsabs) + + This function tests the minimizer specific characteristic size (if + applicable to the used minimizer) against absolute tolerance + ‘epsabs’. The test returns ‘GSL_SUCCESS’ if the size is smaller + than tolerance, otherwise ‘GSL_CONTINUE’ is returned. + + +File: gsl-ref.info, Node: Algorithms with Derivatives, Next: Algorithms without Derivatives<2>, Prev: Stopping Criteria, Up: Multidimensional Minimization + +39.7 Algorithms with Derivatives +================================ + +There are several minimization methods available. The best choice of +algorithm depends on the problem. The algorithms described in this +section use the value of the function and its gradient at each +evaluation point. + + -- Type: gsl_multimin_fdfminimizer_type + + This type specifies a minimization algorithm using gradients. + + -- Variable: gsl_multimin_fdfminimizer_conjugate_fr + + This is the Fletcher-Reeves conjugate gradient algorithm. The + conjugate gradient algorithm proceeds as a succession of line + minimizations. The sequence of search directions is used to + build up an approximation to the curvature of the function in + the neighborhood of the minimum. + + An initial search direction ‘p’ is chosen using the gradient, + and line minimization is carried out in that direction. The + accuracy of the line minimization is specified by the + parameter ‘tol’. The minimum along this line occurs when the + function gradient ‘g’ and the search direction ‘p’ are + orthogonal. The line minimization terminates when p\cdot g < + tol |p| |g|. The search direction is updated using the + Fletcher-Reeves formula p' = g' - \beta g where + \beta=-|g'|^2/|g|^2, and the line minimization is then + repeated for the new search direction. + + -- Variable: gsl_multimin_fdfminimizer_conjugate_pr + + This is the Polak-Ribiere conjugate gradient algorithm. It is + similar to the Fletcher-Reeves method, differing only in the + choice of the coefficient \beta. Both methods work well when + the evaluation point is close enough to the minimum of the + objective function that it is well approximated by a quadratic + hypersurface. + + -- Variable: gsl_multimin_fdfminimizer_vector_bfgs2 + -- Variable: gsl_multimin_fdfminimizer_vector_bfgs + + These methods use the vector Broyden-Fletcher-Goldfarb-Shanno + (BFGS) algorithm. This is a quasi-Newton method which builds + up an approximation to the second derivatives of the function + f using the difference between successive gradient vectors. + By combining the first and second derivatives the algorithm is + able to take Newton-type steps towards the function minimum, + assuming quadratic behavior in that region. + + The ‘bfgs2’ version of this minimizer is the most efficient + version available, and is a faithful implementation of the + line minimization scheme described in Fletcher’s `Practical + Methods of Optimization', Algorithms 2.6.2 and 2.6.4. It + supersedes the original ‘bfgs’ routine and requires + substantially fewer function and gradient evaluations. The + user-supplied tolerance ‘tol’ corresponds to the parameter + \sigma used by Fletcher. A value of 0.1 is recommended for + typical use (larger values correspond to less accurate line + searches). + + -- Variable: gsl_multimin_fdfminimizer_steepest_descent + + The steepest descent algorithm follows the downhill gradient + of the function at each step. When a downhill step is + successful the step-size is increased by a factor of two. If + the downhill step leads to a higher function value then the + algorithm backtracks and the step size is decreased using the + parameter ‘tol’. A suitable value of ‘tol’ for most + applications is 0.1. The steepest descent method is + inefficient and is included only for demonstration purposes. + + +File: gsl-ref.info, Node: Algorithms without Derivatives<2>, Next: Examples<30>, Prev: Algorithms with Derivatives, Up: Multidimensional Minimization + +39.8 Algorithms without Derivatives +=================================== + +The algorithms described in this section use only the value of the +function at each evaluation point. + + -- Type: gsl_multimin_fminimizer_type + + This type specifies minimization algorithms which do not use + gradients. + + -- Variable: gsl_multimin_fminimizer_nmsimplex2 + -- Variable: gsl_multimin_fminimizer_nmsimplex + + These methods use the Simplex algorithm of Nelder and Mead. + Starting from the initial vector :data:`x = p_0‘, the + algorithm constructs an additional n vectors p_i using the + step size vector s = step\_size as follows: + + p_0 = (x_0, x_1, ... , x_n) + p_1 = (x_0 + s_0, x_1, ... , x_n) + p_2 = (x_0, x_1 + s_1, ... , x_n) + ... = ... + p_n = (x_0, x_1, ... , x_n + s_n) + + These vectors form the n+1 vertices of a simplex in n + dimensions. On each iteration the algorithm uses simple + geometrical transformations to update the vector corresponding + to the highest function value. The geometric transformations + are reflection, reflection followed by expansion, contraction + and multiple contraction. Using these transformations the + simplex moves through the space towards the minimum, where it + contracts itself. + + After each iteration, the best vertex is returned. Note, that + due to the nature of the algorithm not every step improves the + current best parameter vector. Usually several iterations are + required. + + The minimizer-specific characteristic size is calculated as + the average distance from the geometrical center of the + simplex to all its vertices. This size can be used as a + stopping criteria, as the simplex contracts itself near the + minimum. The size is returned by the function *note + gsl_multimin_fminimizer_size(): abd. + + The *note gsl_multimin_fminimizer_nmsimplex2: acb. version of + this minimiser is a new O(N) operations implementation of the + earlier O(N^2) operations *note + gsl_multimin_fminimizer_nmsimplex: acc. minimiser. It uses + the same underlying algorithm, but the simplex updates are + computed more efficiently for high-dimensional problems. In + addition, the size of simplex is calculated as the RMS + distance of each vertex from the center rather than the mean + distance, allowing a linear update of this quantity on each + step. The memory usage is O(N^2) for both algorithms. + + -- Variable: gsl_multimin_fminimizer_nmsimplex2rand + + This method is a variant of *note + gsl_multimin_fminimizer_nmsimplex2: acb. which initialises the + simplex around the starting point ‘x’ using a + randomly-oriented set of basis vectors instead of the fixed + coordinate axes. The final dimensions of the simplex are + scaled along the coordinate axes by the vector ‘step_size’. + The randomisation uses a simple deterministic generator so + that repeated calls to *note gsl_multimin_fminimizer_set(): + aab. for a given solver object will vary the orientation in a + well-defined way. + + +File: gsl-ref.info, Node: Examples<30>, Next: References and Further Reading<31>, Prev: Algorithms without Derivatives<2>, Up: Multidimensional Minimization + +39.9 Examples +============= + +This example program finds the minimum of the *note paraboloid function: +ab3. defined earlier. The location of the minimum is offset from the +origin in x and y, and the function value at the minimum is non-zero. +The main program is given below, it requires the example function given +earlier in this chapter. + + int + main (void) + { + size_t iter = 0; + int status; + + const gsl_multimin_fdfminimizer_type *T; + gsl_multimin_fdfminimizer *s; + + /* Position of the minimum (1,2), scale factors + 10,20, height 30. */ + double par[5] = { 1.0, 2.0, 10.0, 20.0, 30.0 }; + + gsl_vector *x; + gsl_multimin_function_fdf my_func; + + my_func.n = 2; + my_func.f = my_f; + my_func.df = my_df; + my_func.fdf = my_fdf; + my_func.params = par; + + /* Starting point, x = (5,7) */ + x = gsl_vector_alloc (2); + gsl_vector_set (x, 0, 5.0); + gsl_vector_set (x, 1, 7.0); + + T = gsl_multimin_fdfminimizer_conjugate_fr; + s = gsl_multimin_fdfminimizer_alloc (T, 2); + + gsl_multimin_fdfminimizer_set (s, &my_func, x, 0.01, 1e-4); + + do + { + iter++; + status = gsl_multimin_fdfminimizer_iterate (s); + + if (status) + break; + + status = gsl_multimin_test_gradient (s->gradient, 1e-3); + + if (status == GSL_SUCCESS) + printf ("Minimum found at:\n"); + + printf ("%5d %.5f %.5f %10.5f\n", iter, + gsl_vector_get (s->x, 0), + gsl_vector_get (s->x, 1), + s->f); + + } + while (status == GSL_CONTINUE && iter < 100); + + gsl_multimin_fdfminimizer_free (s); + gsl_vector_free (x); + + return 0; + } + +The initial step-size is chosen as 0.01, a conservative estimate in this +case, and the line minimization parameter is set at 0.0001. The program +terminates when the norm of the gradient has been reduced below 0.001. +The output of the program is shown below, + + x y f + 1 4.99629 6.99072 687.84780 + 2 4.98886 6.97215 683.55456 + 3 4.97400 6.93501 675.01278 + 4 4.94429 6.86073 658.10798 + 5 4.88487 6.71217 625.01340 + 6 4.76602 6.41506 561.68440 + 7 4.52833 5.82083 446.46694 + 8 4.05295 4.63238 261.79422 + 9 3.10219 2.25548 75.49762 + 10 2.85185 1.62963 67.03704 + 11 2.19088 1.76182 45.31640 + 12 0.86892 2.02622 30.18555 + Minimum found at: + 13 1.00000 2.00000 30.00000 + +Note that the algorithm gradually increases the step size as it +successfully moves downhill, as can be seen by plotting the successive +points in Fig. %s. + +[image src="multimin.png"] + +Figure: Function contours with path taken by minimization algorithm + +The conjugate gradient algorithm finds the minimum on its second +direction because the function is purely quadratic. Additional +iterations would be needed for a more complicated function. + +Here is another example using the Nelder-Mead Simplex algorithm to +minimize the same example object function, as above. + + int + main(void) + { + double par[5] = {1.0, 2.0, 10.0, 20.0, 30.0}; + + const gsl_multimin_fminimizer_type *T = + gsl_multimin_fminimizer_nmsimplex2; + gsl_multimin_fminimizer *s = NULL; + gsl_vector *ss, *x; + gsl_multimin_function minex_func; + + size_t iter = 0; + int status; + double size; + + /* Starting point */ + x = gsl_vector_alloc (2); + gsl_vector_set (x, 0, 5.0); + gsl_vector_set (x, 1, 7.0); + + /* Set initial step sizes to 1 */ + ss = gsl_vector_alloc (2); + gsl_vector_set_all (ss, 1.0); + + /* Initialize method and iterate */ + minex_func.n = 2; + minex_func.f = my_f; + minex_func.params = par; + + s = gsl_multimin_fminimizer_alloc (T, 2); + gsl_multimin_fminimizer_set (s, &minex_func, x, ss); + + do + { + iter++; + status = gsl_multimin_fminimizer_iterate(s); + + if (status) + break; + + size = gsl_multimin_fminimizer_size (s); + status = gsl_multimin_test_size (size, 1e-2); + + if (status == GSL_SUCCESS) + { + printf ("converged to minimum at\n"); + } + + printf ("%5d %10.3e %10.3e f() = %7.3f size = %.3f\n", + iter, + gsl_vector_get (s->x, 0), + gsl_vector_get (s->x, 1), + s->fval, size); + } + while (status == GSL_CONTINUE && iter < 100); + + gsl_vector_free(x); + gsl_vector_free(ss); + gsl_multimin_fminimizer_free (s); + + return status; + } + +The minimum search stops when the Simplex size drops to 0.01. The +output is shown below. + + 1 6.500e+00 5.000e+00 f() = 512.500 size = 1.130 + 2 5.250e+00 4.000e+00 f() = 290.625 size = 1.409 + 3 5.250e+00 4.000e+00 f() = 290.625 size = 1.409 + 4 5.500e+00 1.000e+00 f() = 252.500 size = 1.409 + 5 2.625e+00 3.500e+00 f() = 101.406 size = 1.847 + 6 2.625e+00 3.500e+00 f() = 101.406 size = 1.847 + 7 0.000e+00 3.000e+00 f() = 60.000 size = 1.847 + 8 2.094e+00 1.875e+00 f() = 42.275 size = 1.321 + 9 2.578e-01 1.906e+00 f() = 35.684 size = 1.069 + 10 5.879e-01 2.445e+00 f() = 35.664 size = 0.841 + 11 1.258e+00 2.025e+00 f() = 30.680 size = 0.476 + 12 1.258e+00 2.025e+00 f() = 30.680 size = 0.367 + 13 1.093e+00 1.849e+00 f() = 30.539 size = 0.300 + 14 8.830e-01 2.004e+00 f() = 30.137 size = 0.172 + 15 8.830e-01 2.004e+00 f() = 30.137 size = 0.126 + 16 9.582e-01 2.060e+00 f() = 30.090 size = 0.106 + 17 1.022e+00 2.004e+00 f() = 30.005 size = 0.063 + 18 1.022e+00 2.004e+00 f() = 30.005 size = 0.043 + 19 1.022e+00 2.004e+00 f() = 30.005 size = 0.043 + 20 1.022e+00 2.004e+00 f() = 30.005 size = 0.027 + 21 1.022e+00 2.004e+00 f() = 30.005 size = 0.022 + 22 9.920e-01 1.997e+00 f() = 30.001 size = 0.016 + 23 9.920e-01 1.997e+00 f() = 30.001 size = 0.013 + converged to minimum at + 24 9.920e-01 1.997e+00 f() = 30.001 size = 0.008 + +The simplex size first increases, while the simplex moves towards the +minimum. After a while the size begins to decrease as the simplex +contracts around the minimum. + + +File: gsl-ref.info, Node: References and Further Reading<31>, Prev: Examples<30>, Up: Multidimensional Minimization + +39.10 References and Further Reading +==================================== + +The conjugate gradient and BFGS methods are described in detail in the +following book, + + * R. Fletcher, `Practical Methods of Optimization (Second Edition)' + Wiley (1987), ISBN 0471915475. + +A brief description of multidimensional minimization algorithms and more +recent references can be found in, + + * C.W. Ueberhuber, `Numerical Computation (Volume 2)', Chapter 14, + Section 4.4 “Minimization Methods”, p.: 325–335, Springer (1997), + ISBN 3-540-62057-5. + +The simplex algorithm is described in the following paper, + + * J.A. Nelder and R. Mead, `A simplex method for function + minimization', Computer Journal vol.: 7 (1965), 308–313. + + +File: gsl-ref.info, Node: Linear Least-Squares Fitting, Next: Nonlinear Least-Squares Fitting, Prev: Multidimensional Minimization, Up: Top + +40 Linear Least-Squares Fitting +******************************* + +This chapter describes routines for performing least squares fits to +experimental data using linear combinations of functions. The data may +be weighted or unweighted, i.e. with known or unknown errors. For +weighted data the functions compute the best fit parameters and their +associated covariance matrix. For unweighted data the covariance matrix +is estimated from the scatter of the points, giving a +variance-covariance matrix. + +The functions are divided into separate versions for simple one- or +two-parameter regression and multiple-parameter fits. + +* Menu: + +* Overview: Overview<5>. +* Linear regression:: +* Multi-parameter regression:: +* Regularized regression:: +* Robust linear regression:: +* Large dense linear systems:: +* Troubleshooting:: +* Examples: Examples<31>. +* References and Further Reading: References and Further Reading<32>. + + +File: gsl-ref.info, Node: Overview<5>, Next: Linear regression, Up: Linear Least-Squares Fitting + +40.1 Overview +============= + +Least-squares fits are found by minimizing \chi^2 (chi-squared), the +weighted sum of squared residuals over n experimental datapoints (x_i, +y_i) for the model Y(c,x), + + \chi^2 = \sum_i w_i (y_i - Y(c, x_i))^2 + +The p parameters of the model are c = \{c_0, c_1, \dots\}. The weight +factors w_i are given by w_i = 1/\sigma_i^2 where \sigma_i is the +experimental error on the data-point y_i. The errors are assumed to be +Gaussian and uncorrelated. For unweighted data the chi-squared sum is +computed without any weight factors. + +The fitting routines return the best-fit parameters c and their p \times +p covariance matrix. The covariance matrix measures the statistical +errors on the best-fit parameters resulting from the errors on the data, +\sigma_i, and is defined as + + C_{ab} = <\delta c_a \delta c_b> + +where \langle \, \rangle denotes an average over the Gaussian error +distributions of the underlying datapoints. + +The covariance matrix is calculated by error propagation from the data +errors \sigma_i. The change in a fitted parameter \delta c_a caused by +a small change in the data \delta y_i is given by + + \delta c_a = \sum_i (dc_a/dy_i) \delta y_i + +allowing the covariance matrix to be written in terms of the errors on +the data, + + C_{ab} = \sum_{i,j} (dc_a/dy_i) (dc_b/dy_j) <\delta y_i \delta y_j> + +For uncorrelated data the fluctuations of the underlying datapoints +satisfy + + <\delta y_i \delta y_j> = \sigma_i^2 \delta_{ij} + +giving a corresponding parameter covariance matrix of + + C_{ab} = \sum_i (1/w_i) (dc_a/dy_i) (dc_b/dy_i) + +When computing the covariance matrix for unweighted data, i.e. data +with unknown errors, the weight factors w_i in this sum are replaced by +the single estimate w = 1/\sigma^2, where \sigma^2 is the computed +variance of the residuals about the best-fit model, \sigma^2 = \sum (y_i +- Y(c,x_i))^2 / (n-p). This is referred to as the `variance-covariance +matrix'. + +The standard deviations of the best-fit parameters are given by the +square root of the corresponding diagonal elements of the covariance +matrix, \sigma_{c_a} = \sqrt{C_{aa}}. The correlation coefficient of +the fit parameters c_a and c_b is given by \rho_{ab} = C_{ab} / +\sqrt{C_{aa} C_{bb}}. + + +File: gsl-ref.info, Node: Linear regression, Next: Multi-parameter regression, Prev: Overview<5>, Up: Linear Least-Squares Fitting + +40.2 Linear regression +====================== + +The functions in this section are used to fit simple one or two +parameter linear regression models. The functions are declared in the +header file ‘gsl_fit.h’. + +* Menu: + +* Linear regression with a constant term:: +* Linear regression without a constant term:: + + +File: gsl-ref.info, Node: Linear regression with a constant term, Next: Linear regression without a constant term, Up: Linear regression + +40.2.1 Linear regression with a constant term +--------------------------------------------- + +The functions described in this section can be used to perform +least-squares fits to a straight line model, Y(c,x) = c_0 + c_1 x. + + -- Function: int gsl_fit_linear (const double * x, const + size_t xstride, const double * y, const size_t ystride, + size_t n, double * c0, double * c1, double * cov00, double + * cov01, double * cov11, double * sumsq) + + This function computes the best-fit linear regression coefficients + (‘c0’, ‘c1’) of the model Y = c_0 + c_1 X for the dataset (‘x’, + ‘y’), two vectors of length ‘n’ with strides ‘xstride’ and + ‘ystride’. The errors on ‘y’ are assumed unknown so the + variance-covariance matrix for the parameters (‘c0’, ‘c1’) is + estimated from the scatter of the points around the best-fit line + and returned via the parameters (‘cov00’, ‘cov01’, ‘cov11’). The + sum of squares of the residuals from the best-fit line is returned + in ‘sumsq’. Note: the correlation coefficient of the data can be + computed using *note gsl_stats_correlation(): 7a2, it does not + depend on the fit. + + -- Function: int gsl_fit_wlinear (const double * x, const + size_t xstride, const double * w, const size_t wstride, const + double * y, const size_t ystride, size_t n, double * c0, + double * c1, double * cov00, double * cov01, double * cov11, + double * chisq) + + This function computes the best-fit linear regression coefficients + (‘c0’, ‘c1’) of the model Y = c_0 + c_1 X for the weighted dataset + (‘x’, ‘y’), two vectors of length ‘n’ with strides ‘xstride’ and + ‘ystride’. The vector ‘w’, of length ‘n’ and stride ‘wstride’, + specifies the weight of each datapoint. The weight is the + reciprocal of the variance for each datapoint in ‘y’. + + The covariance matrix for the parameters (‘c0’, ‘c1’) is computed + using the weights and returned via the parameters (‘cov00’, + ‘cov01’, ‘cov11’). The weighted sum of squares of the residuals + from the best-fit line, \chi^2, is returned in ‘chisq’. + + -- Function: int gsl_fit_linear_est (double x, double c0, double c1, + double cov00, double cov01, double cov11, double * y, double + * y_err) + + This function uses the best-fit linear regression coefficients + ‘c0’, ‘c1’ and their covariance ‘cov00’, ‘cov01’, ‘cov11’ to + compute the fitted function ‘y’ and its standard deviation ‘y_err’ + for the model Y = c_0 + c_1 X at the point ‘x’. + + +File: gsl-ref.info, Node: Linear regression without a constant term, Prev: Linear regression with a constant term, Up: Linear regression + +40.2.2 Linear regression without a constant term +------------------------------------------------ + +The functions described in this section can be used to perform +least-squares fits to a straight line model without a constant term, Y = +c_1 X. + + -- Function: int gsl_fit_mul (const double * x, const size_t xstride, + const double * y, const size_t ystride, size_t n, double * c1, + double * cov11, double * sumsq) + + This function computes the best-fit linear regression coefficient + ‘c1’ of the model Y = c_1 X for the datasets (‘x’, ‘y’), two + vectors of length ‘n’ with strides ‘xstride’ and ‘ystride’. The + errors on ‘y’ are assumed unknown so the variance of the parameter + ‘c1’ is estimated from the scatter of the points around the + best-fit line and returned via the parameter ‘cov11’. The sum of + squares of the residuals from the best-fit line is returned in + ‘sumsq’. + + -- Function: int gsl_fit_wmul (const double * x, const size_t xstride, + const double * w, const size_t wstride, const double * y, + const size_t ystride, size_t n, double * c1, double * cov11, + double * sumsq) + + This function computes the best-fit linear regression coefficient + ‘c1’ of the model Y = c_1 X for the weighted datasets (‘x’, ‘y’), + two vectors of length ‘n’ with strides ‘xstride’ and ‘ystride’. + The vector ‘w’, of length ‘n’ and stride ‘wstride’, specifies the + weight of each datapoint. The weight is the reciprocal of the + variance for each datapoint in ‘y’. + + The variance of the parameter ‘c1’ is computed using the weights + and returned via the parameter ‘cov11’. The weighted sum of + squares of the residuals from the best-fit line, \chi^2, is + returned in ‘chisq’. + + -- Function: int gsl_fit_mul_est (double x, double c1, double cov11, + double * y, double * y_err) + + This function uses the best-fit linear regression coefficient ‘c1’ + and its covariance ‘cov11’ to compute the fitted function ‘y’ and + its standard deviation ‘y_err’ for the model Y = c_1 X at the point + ‘x’. + + +File: gsl-ref.info, Node: Multi-parameter regression, Next: Regularized regression, Prev: Linear regression, Up: Linear Least-Squares Fitting + +40.3 Multi-parameter regression +=============================== + +This section describes routines which perform least squares fits to a +linear model by minimizing the cost function + + \chi^2 = \sum_i w_i (y_i - \sum_j X_{ij} c_j)^2 = || y - Xc ||_W^2 + +where y is a vector of n observations, X is an n-by-p matrix of +predictor variables, c is a vector of the p unknown best-fit parameters +to be estimated, and ||r||_W^2 = r^T W r. The matrix W = +\diag(w_1,w_2,...,w_n) defines the weights or uncertainties of the +observation vector. + +This formulation can be used for fits to any number of functions and/or +variables by preparing the n-by-p matrix X appropriately. For example, +to fit to a p-th order polynomial in ‘x’, use the following matrix, + + X_{ij} = x_i^j + +where the index i runs over the observations and the index j runs from 0 +to p-1. + +To fit to a set of p sinusoidal functions with fixed frequencies +\omega_1, \omega_2, \ldots, \omega_p, use, + + X_{ij} = \sin(\omega_j x_i) + +To fit to p independent variables x_1, x_2, \ldots, x_p, use, + + X_{ij} = x_j(i) + +where x_j(i) is the i-th value of the predictor variable x_j. + +The solution of the general linear least-squares system requires an +additional working space for intermediate results, such as the singular +value decomposition of the matrix X. + +These functions are declared in the header file ‘gsl_multifit.h’. + + -- Type: gsl_multifit_linear_workspace + + This workspace contains internal variables for fitting + multi-parameter models. + + -- Function: gsl_multifit_linear_workspace * gsl_multifit_linear_alloc + (const size_t n, const size_t p) + + This function allocates a workspace for fitting a model to a + maximum of ‘n’ observations using a maximum of ‘p’ parameters. The + user may later supply a smaller least squares system if desired. + The size of the workspace is O(np + p^2). + + -- Function: void gsl_multifit_linear_free + (gsl_multifit_linear_workspace * work) + + This function frees the memory associated with the workspace ‘w’. + + -- Function: int gsl_multifit_linear_svd (const gsl_matrix * X, + gsl_multifit_linear_workspace * work) + + This function performs a singular value decomposition of the matrix + ‘X’ and stores the SVD factors internally in ‘work’. + + -- Function: int gsl_multifit_linear_bsvd (const gsl_matrix * X, + gsl_multifit_linear_workspace * work) + + This function performs a singular value decomposition of the matrix + ‘X’ and stores the SVD factors internally in ‘work’. The matrix + ‘X’ is first balanced by applying column scaling factors to improve + the accuracy of the singular values. + + -- Function: int gsl_multifit_linear (const gsl_matrix * X, const + gsl_vector * y, gsl_vector * c, gsl_matrix * cov, double + * chisq, gsl_multifit_linear_workspace * work) + + This function computes the best-fit parameters ‘c’ of the model y = + X c for the observations ‘y’ and the matrix of predictor variables + ‘X’, using the preallocated workspace provided in ‘work’. The + p-by-p variance-covariance matrix of the model parameters ‘cov’ is + set to \sigma^2 (X^T X)^{-1}, where \sigma is the standard + deviation of the fit residuals. The sum of squares of the + residuals from the best-fit, \chi^2, is returned in ‘chisq’. If + the coefficient of determination is desired, it can be computed + from the expression R^2 = 1 - \chi^2 / TSS, where the total sum of + squares (TSS) of the observations ‘y’ may be computed from *note + gsl_stats_tss(): 78f. + + The best-fit is found by singular value decomposition of the matrix + ‘X’ using the modified Golub-Reinsch SVD algorithm, with column + scaling to improve the accuracy of the singular values. Any + components which have zero singular value (to machine precision) + are discarded from the fit. + + -- Function: int gsl_multifit_linear_tsvd (const gsl_matrix * X, const + gsl_vector * y, const double tol, gsl_vector * c, gsl_matrix + * cov, double * chisq, size_t * rank, + gsl_multifit_linear_workspace * work) + + This function computes the best-fit parameters ‘c’ of the model y = + X c for the observations ‘y’ and the matrix of predictor variables + ‘X’, using a truncated SVD expansion. Singular values which + satisfy s_i \le tol \times s_0 are discarded from the fit, where + s_0 is the largest singular value. The p-by-p variance-covariance + matrix of the model parameters ‘cov’ is set to \sigma^2 (X^T + X)^{-1}, where \sigma is the standard deviation of the fit + residuals. The sum of squares of the residuals from the best-fit, + \chi^2, is returned in ‘chisq’. The effective rank (number of + singular values used in solution) is returned in ‘rank’. If the + coefficient of determination is desired, it can be computed from + the expression R^2 = 1 - \chi^2 / TSS, where the total sum of + squares (TSS) of the observations ‘y’ may be computed from *note + gsl_stats_tss(): 78f. + + -- Function: int gsl_multifit_wlinear (const gsl_matrix * X, const + gsl_vector * w, const gsl_vector * y, gsl_vector * c, + gsl_matrix * cov, double * chisq, + gsl_multifit_linear_workspace * work) + + This function computes the best-fit parameters ‘c’ of the weighted + model y = X c for the observations ‘y’ with weights ‘w’ and the + matrix of predictor variables ‘X’, using the preallocated workspace + provided in ‘work’. The p-by-p covariance matrix of the model + parameters ‘cov’ is computed as (X^T W X)^{-1}. The weighted sum + of squares of the residuals from the best-fit, \chi^2, is returned + in ‘chisq’. If the coefficient of determination is desired, it can + be computed from the expression R^2 = 1 - \chi^2 / WTSS, where the + weighted total sum of squares (WTSS) of the observations ‘y’ may be + computed from *note gsl_stats_wtss(): 7ac. + + -- Function: int gsl_multifit_wlinear_tsvd (const gsl_matrix * X, const + gsl_vector * w, const gsl_vector * y, const double tol, + gsl_vector * c, gsl_matrix * cov, double * chisq, size_t + * rank, gsl_multifit_linear_workspace * work) + + This function computes the best-fit parameters ‘c’ of the weighted + model y = X c for the observations ‘y’ with weights ‘w’ and the + matrix of predictor variables ‘X’, using a truncated SVD expansion. + Singular values which satisfy s_i \le tol \times s_0 are discarded + from the fit, where s_0 is the largest singular value. The p-by-p + covariance matrix of the model parameters ‘cov’ is computed as (X^T + W X)^{-1}. The weighted sum of squares of the residuals from the + best-fit, \chi^2, is returned in ‘chisq’. The effective rank of + the system (number of singular values used in the solution) is + returned in ‘rank’. If the coefficient of determination is + desired, it can be computed from the expression R^2 = 1 - \chi^2 / + WTSS, where the weighted total sum of squares (WTSS) of the + observations ‘y’ may be computed from *note gsl_stats_wtss(): 7ac. + + -- Function: int gsl_multifit_linear_est (const gsl_vector * x, const + gsl_vector * c, const gsl_matrix * cov, double * y, double + * y_err) + + This function uses the best-fit multilinear regression coefficients + ‘c’ and their covariance matrix ‘cov’ to compute the fitted + function value ‘y’ and its standard deviation ‘y_err’ for the model + y = x.c at the point ‘x’. + + -- Function: int gsl_multifit_linear_residuals (const gsl_matrix * X, + const gsl_vector * y, const gsl_vector * c, gsl_vector * r) + + This function computes the vector of residuals r = y - X c for the + observations ‘y’, coefficients ‘c’ and matrix of predictor + variables ‘X’. + + -- Function: size_t gsl_multifit_linear_rank (const double tol, const + gsl_multifit_linear_workspace * work) + + This function returns the rank of the matrix X which must first + have its singular value decomposition computed. The rank is + computed by counting the number of singular values \sigma_j which + satisfy \sigma_j > tol \times \sigma_0, where \sigma_0 is the + largest singular value. + + +File: gsl-ref.info, Node: Regularized regression, Next: Robust linear regression, Prev: Multi-parameter regression, Up: Linear Least-Squares Fitting + +40.4 Regularized regression +=========================== + +Ordinary weighted least squares models seek a solution vector c which +minimizes the residual + + \chi^2 = || y - Xc ||_W^2 + +where y is the n-by-1 observation vector, X is the n-by-p design matrix, +c is the p-by-1 solution vector, W = \diag(w_1,...,w_n) is the data +weighting matrix, and ||r||_W^2 = r^T W r. In cases where the least +squares matrix X is ill-conditioned, small perturbations (ie: noise) in +the observation vector could lead to widely different solution vectors +c. One way of dealing with ill-conditioned matrices is to use a +“truncated SVD” in which small singular values, below some given +tolerance, are discarded from the solution. The truncated SVD method is +available using the functions *note gsl_multifit_linear_tsvd(): ae5. and +*note gsl_multifit_wlinear_tsvd(): ae7. Another way to help solve +ill-posed problems is to include a regularization term in the least +squares minimization + + \chi^2 = || y - Xc ||_W^2 + \lambda^2 || L c ||^2 + +for a suitably chosen regularization parameter \lambda and matrix L. +This type of regularization is known as Tikhonov, or ridge, regression. +In some applications, L is chosen as the identity matrix, giving +preference to solution vectors c with smaller norms. Including this +regularization term leads to the explicit “normal equations” solution + + c = ( X^T W X + \lambda^2 L^T L )^-1 X^T W y + +which reduces to the ordinary least squares solution when L = 0. In +practice, it is often advantageous to transform a regularized least +squares system into the form + + \chi^2 = || y~ - X~ c~ ||^2 + \lambda^2 || c~ ||^2 + +This is known as the Tikhonov “standard form” and has the normal +equations solution + + \tilde{c} = ( \tilde{X}^T \tilde{X} + \lambda^2 I )^{-1} \tilde{X}^T \tilde{y} + +For an m-by-p matrix L which is full rank and has m >= p (ie: L is +square or has more rows than columns), we can calculate the “thin” QR +decomposition of L, and note that ||L c|| = ||R c|| since the Q factor +will not change the norm. Since R is p-by-p, we can then use the +transformation + + X~ = sqrt(W) X R^-1 + y~ = sqrt(W) y + c~ = R c + +to achieve the standard form. For a rectangular matrix L with m < p, a +more sophisticated approach is needed (see Hansen 1998, chapter 2.3). +In practice, the normal equations solution above is not desirable due to +numerical instabilities, and so the system is solved using the singular +value decomposition of the matrix \tilde{X}. The matrix L is often +chosen as the identity matrix, or as a first or second finite difference +operator, to ensure a smoothly varying coefficient vector c, or as a +diagonal matrix to selectively damp each model parameter differently. +If L \ne I, the user must first convert the least squares problem to +standard form using *note gsl_multifit_linear_stdform1(): aed. or *note +gsl_multifit_linear_stdform2(): aee, solve the system, and then +backtransform the solution vector to recover the solution of the +original problem (see *note gsl_multifit_linear_genform1(): aef. and +*note gsl_multifit_linear_genform2(): af0.). + +In many regularization problems, care must be taken when choosing the +regularization parameter \lambda. Since both the residual norm ||y - X +c|| and solution norm ||L c|| are being minimized, the parameter \lambda +represents a tradeoff between minimizing either the residuals or the +solution vector. A common tool for visualizing the comprimise between +the minimization of these two quantities is known as the L-curve. The +L-curve is a log-log plot of the residual norm ||y - X c|| on the +horizontal axis and the solution norm ||L c|| on the vertical axis. +This curve nearly always as an L shaped appearance, with a distinct +corner separating the horizontal and vertical sections of the curve. +The regularization parameter corresponding to this corner is often +chosen as the optimal value. GSL provides routines to calculate the +L-curve for all relevant regularization parameters as well as locating +the corner. + +Another method of choosing the regularization parameter is known as +Generalized Cross Validation (GCV). This method is based on the idea +that if an arbitrary element y_i is left out of the right hand side, the +resulting regularized solution should predict this element accurately. +This leads to choosing the parameter \lambda which minimizes the GCV +function + + G(\lambda) = (||y - X c_{\lambda}||^2) / Tr(I_n - X X^I)^2 + +where X_{\lambda}^I is the matrix which relates the solution c_{\lambda} +to the right hand side y, ie: c_{\lambda} = X_{\lambda}^I y. GSL +provides routines to compute the GCV curve and its minimum. + +For most applications, the steps required to solve a regularized least +squares problem are as follows: + + 1. Construct the least squares system (X, y, W, L) + + 2. Transform the system to standard form (\tilde{X}, \tilde{y}). This + step can be skipped if L = I_p and W = I_n. + + 3. Calculate the SVD of \tilde{X}. + + 4. Determine an appropriate regularization parameter \lambda (using + for example L-curve or GCV analysis). + + 5. Solve the standard form system using the chosen \lambda and the SVD + of \tilde{X}. + + 6. Backtransform the standard form solution \tilde{c} to recover the + original solution vector c. + + -- Function: int gsl_multifit_linear_stdform1 (const gsl_vector * L, + const gsl_matrix * X, const gsl_vector * y, gsl_matrix * Xs, + gsl_vector * ys, gsl_multifit_linear_workspace * work) + -- Function: int gsl_multifit_linear_wstdform1 (const gsl_vector * L, + const gsl_matrix * X, const gsl_vector * w, const gsl_vector + * y, gsl_matrix * Xs, gsl_vector * ys, + gsl_multifit_linear_workspace * work) + + These functions define a regularization matrix L = + \diag(l_0,l_1,...,l_{p-1}). The diagonal matrix element l_i is + provided by the i-th element of the input vector ‘L’. The n-by-p + least squares matrix ‘X’ and vector ‘y’ of length n are then + converted to standard form as described above and the parameters + (\tilde{X}, \tilde{y}) are stored in ‘Xs’ and ‘ys’ on output. ‘Xs’ + and ‘ys’ have the same dimensions as ‘X’ and ‘y’. Optional data + weights may be supplied in the vector ‘w’ of length n. In order to + apply this transformation, L^{-1} must exist and so none of the l_i + may be zero. After the standard form system has been solved, use + *note gsl_multifit_linear_genform1(): aef. to recover the original + solution vector. It is allowed to have ‘X’ = ‘Xs’ and ‘y’ = ‘ys’ + for an in-place transform. In order to perform a weighted + regularized fit with L = I, the user may call *note + gsl_multifit_linear_applyW(): af2. to convert to standard form. + + -- Function: int gsl_multifit_linear_L_decomp (gsl_matrix * L, + gsl_vector * tau) + + This function factors the m-by-p regularization matrix ‘L’ into a + form needed for the later transformation to standard form. ‘L’ may + have any number of rows m. If m \ge p the QR decomposition of ‘L’ + is computed and stored in ‘L’ on output. If m < p, the QR + decomposition of L^T is computed and stored in ‘L’ on output. On + output, the Householder scalars are stored in the vector ‘tau’ of + size MIN(m,p). These outputs will be used by *note + gsl_multifit_linear_wstdform2(): af4. to complete the + transformation to standard form. + + -- Function: int gsl_multifit_linear_stdform2 (const gsl_matrix * LQR, + const gsl_vector * Ltau, const gsl_matrix * X, const + gsl_vector * y, gsl_matrix * Xs, gsl_vector * ys, gsl_matrix + * M, gsl_multifit_linear_workspace * work) + -- Function: int gsl_multifit_linear_wstdform2 (const gsl_matrix * LQR, + const gsl_vector * Ltau, const gsl_matrix * X, const + gsl_vector * w, const gsl_vector * y, gsl_matrix * Xs, + gsl_vector * ys, gsl_matrix * M, gsl_multifit_linear_workspace + * work) + + These functions convert the least squares system (‘X’, ‘y’, ‘W’, L) + to standard form (\tilde{X}, \tilde{y}) which are stored in ‘Xs’ + and ‘ys’ respectively. The m-by-p regularization matrix ‘L’ is + specified by the inputs ‘LQR’ and ‘Ltau’, which are outputs from + *note gsl_multifit_linear_L_decomp(): af3. The dimensions of the + standard form parameters (\tilde{X}, \tilde{y}) depend on whether m + is larger or less than p. For m \ge p, ‘Xs’ is n-by-p, ‘ys’ is + n-by-1, and ‘M’ is not used. For m < p, ‘Xs’ is (n - p + m)-by-m, + ‘ys’ is (n - p + m)-by-1, and ‘M’ is additional n-by-p workspace, + which is required to recover the original solution vector after the + system has been solved (see *note gsl_multifit_linear_genform2(): + af0.). Optional data weights may be supplied in the vector ‘w’ of + length n, where W = \diag(w). + + -- Function: int gsl_multifit_linear_solve (const double lambda, const + gsl_matrix * Xs, const gsl_vector * ys, gsl_vector * cs, + double * rnorm, double * snorm, gsl_multifit_linear_workspace + * work) + + This function computes the regularized best-fit parameters + \tilde{c} which minimize the cost function \chi^2 = || \tilde{y} - + \tilde{X} \tilde{c} ||^2 + \lambda^2 || \tilde{c} ||^2 which is in + standard form. The least squares system must therefore be + converted to standard form prior to calling this function. The + observation vector \tilde{y} is provided in ‘ys’ and the matrix of + predictor variables \tilde{X} in ‘Xs’. The solution vector + \tilde{c} is returned in ‘cs’, which has length min(m,p). The SVD + of ‘Xs’ must be computed prior to calling this function, using + *note gsl_multifit_linear_svd(): ae2. The regularization parameter + \lambda is provided in ‘lambda’. The residual norm || \tilde{y} - + \tilde{X} \tilde{c} || = ||y - X c||_W is returned in ‘rnorm’. The + solution norm || \tilde{c} || = ||L c|| is returned in ‘snorm’. + + -- Function: int gsl_multifit_linear_genform1 (const gsl_vector * L, + const gsl_vector * cs, gsl_vector * c, + gsl_multifit_linear_workspace * work) + + After a regularized system has been solved with L = + \diag(\l_0,\l_1,...,\l_{p-1}), this function backtransforms the + standard form solution vector ‘cs’ to recover the solution vector + of the original problem ‘c’. The diagonal matrix elements l_i are + provided in the vector ‘L’. It is allowed to have ‘c’ = ‘cs’ for + an in-place transform. + + -- Function: int gsl_multifit_linear_genform2 (const gsl_matrix * LQR, + const gsl_vector * Ltau, const gsl_matrix * X, const + gsl_vector * y, const gsl_vector * cs, const gsl_matrix * M, + gsl_vector * c, gsl_multifit_linear_workspace * work) + -- Function: int gsl_multifit_linear_wgenform2 (const gsl_matrix * LQR, + const gsl_vector * Ltau, const gsl_matrix * X, const + gsl_vector * w, const gsl_vector * y, const gsl_vector * cs, + const gsl_matrix * M, gsl_vector * c, + gsl_multifit_linear_workspace * work) + + After a regularized system has been solved with a general + rectangular matrix L, specified by (‘LQR’, ‘Ltau’), this function + backtransforms the standard form solution ‘cs’ to recover the + solution vector of the original problem, which is stored in ‘c’, of + length p. The original least squares matrix and observation vector + are provided in ‘X’ and ‘y’ respectively. ‘M’ is the matrix + computed by *note gsl_multifit_linear_stdform2(): aee. For + weighted fits, the weight vector ‘w’ must also be supplied. + + -- Function: int gsl_multifit_linear_applyW (const gsl_matrix * X, + const gsl_vector * w, const gsl_vector * y, gsl_matrix * WX, + gsl_vector * Wy) + + For weighted least squares systems with L = I, this function may be + used to convert the system to standard form by applying the weight + matrix W = \diag(w) to the least squares matrix ‘X’ and observation + vector ‘y’. On output, ‘WX’ is equal to W^{1/2} X and ‘Wy’ is + equal to W^{1/2} y. It is allowed for ‘WX’ = ‘X’ and ‘Wy’ = ‘y’ + for an in-place transform. + + -- Function: int gsl_multifit_linear_lcurve (const gsl_vector * y, + gsl_vector * reg_param, gsl_vector * rho, gsl_vector * eta, + gsl_multifit_linear_workspace * work) + + This function computes the L-curve for a least squares system using + the right hand side vector ‘y’ and the SVD decomposition of the + least squares matrix ‘X’, which must be provided to *note + gsl_multifit_linear_svd(): ae2. prior to calling this function. + The output vectors ‘reg_param’, ‘rho’, and ‘eta’ must all be the + same size, and will contain the regularization parameters + \lambda_i, residual norms ||y - X c_i||, and solution norms || L + c_i || which compose the L-curve, where c_i is the regularized + solution vector corresponding to \lambda_i. The user may determine + the number of points on the L-curve by adjusting the size of these + input arrays. The regularization parameters \lambda_i are + estimated from the singular values of ‘X’, and chosen to represent + the most relevant portion of the L-curve. + + -- Function: int gsl_multifit_linear_lcorner (const gsl_vector * rho, + const gsl_vector * eta, size_t * idx) + + This function attempts to locate the corner of the L-curve (||y - X + c||, ||L c||) defined by the ‘rho’ and ‘eta’ input arrays + respectively. The corner is defined as the point of maximum + curvature of the L-curve in log-log scale. The ‘rho’ and ‘eta’ + arrays can be outputs of *note gsl_multifit_linear_lcurve(): af7. + The algorithm used simply fits a circle to 3 consecutive points on + the L-curve and uses the circle’s radius to determine the curvature + at the middle point. Therefore, the input array sizes must be \ge + 3. With more points provided for the L-curve, a better estimate of + the curvature can be obtained. The array index corresponding to + maximum curvature (ie: the corner) is returned in ‘idx’. If the + input arrays contain colinear points, this function could fail and + return *note GSL_EINVAL: 2b. + + -- Function: int gsl_multifit_linear_lcorner2 (const gsl_vector + * reg_param, const gsl_vector * eta, size_t * idx) + + This function attempts to locate the corner of an alternate L-curve + (\lambda^2, ||L c||^2) studied by Rezghi and Hosseini, 2009. This + alternate L-curve can provide better estimates of the + regularization parameter for smooth solution vectors. The + regularization parameters \lambda and solution norms ||L c|| are + provided in the ‘reg_param’ and ‘eta’ input arrays respectively. + The corner is defined as the point of maximum curvature of this + alternate L-curve in linear scale. The ‘reg_param’ and ‘eta’ + arrays can be outputs of *note gsl_multifit_linear_lcurve(): af7. + The algorithm used simply fits a circle to 3 consecutive points on + the L-curve and uses the circle’s radius to determine the curvature + at the middle point. Therefore, the input array sizes must be \ge + 3. With more points provided for the L-curve, a better estimate of + the curvature can be obtained. The array index corresponding to + maximum curvature (ie: the corner) is returned in ‘idx’. If the + input arrays contain colinear points, this function could fail and + return *note GSL_EINVAL: 2b. + + -- Function: int gsl_multifit_linear_gcv_init (const gsl_vector * y, + gsl_vector * reg_param, gsl_vector * UTy, double * delta0, + gsl_multifit_linear_workspace * work) + + This function performs some initialization in preparation for + computing the GCV curve and its minimum. The right hand side + vector is provided in ‘y’. On output, ‘reg_param’ is set to a + vector of regularization parameters in decreasing order and may be + of any size. The vector ‘UTy’ of size p is set to U^T y. The + parameter ‘delta0’ is needed for subsequent steps of the GCV + calculation. + + -- Function: int gsl_multifit_linear_gcv_curve (const gsl_vector + * reg_param, const gsl_vector * UTy, const double delta0, + gsl_vector * G, gsl_multifit_linear_workspace * work) + + This funtion calculates the GCV curve G(\lambda) and stores it in + ‘G’ on output, which must be the same size as ‘reg_param’. The + inputs ‘reg_param’, ‘UTy’ and ‘delta0’ are computed in *note + gsl_multifit_linear_gcv_init(): afa. + + -- Function: int gsl_multifit_linear_gcv_min (const gsl_vector + * reg_param, const gsl_vector * UTy, const gsl_vector * G, + const double delta0, double * lambda, + gsl_multifit_linear_workspace * work) + + This function computes the value of the regularization parameter + which minimizes the GCV curve G(\lambda) and stores it in ‘lambda’. + The input ‘G’ is calculated by *note + gsl_multifit_linear_gcv_curve(): afb. and the inputs ‘reg_param’, + ‘UTy’ and ‘delta0’ are computed by *note + gsl_multifit_linear_gcv_init(): afa. + + -- Function: double gsl_multifit_linear_gcv_calc (const double lambda, + const gsl_vector * UTy, const double delta0, + gsl_multifit_linear_workspace * work) + + This function returns the value of the GCV curve G(\lambda) + corresponding to the input ‘lambda’. + + -- Function: int gsl_multifit_linear_gcv (const gsl_vector * y, + gsl_vector * reg_param, gsl_vector * G, double * lambda, + double * G_lambda, gsl_multifit_linear_workspace * work) + + This function combines the steps ‘gcv_init’, ‘gcv_curve’, and + ‘gcv_min’ defined above into a single function. The input ‘y’ is + the right hand side vector. On output, ‘reg_param’ and ‘G’, which + must be the same size, are set to vectors of \lambda and G(\lambda) + values respectively. The output ‘lambda’ is set to the optimal + value of \lambda which minimizes the GCV curve. The minimum value + of the GCV curve is returned in ‘G_lambda’. + + -- Function: int gsl_multifit_linear_Lk (const size_t p, const + size_t k, gsl_matrix * L) + + This function computes the discrete approximation to the derivative + operator L_k of order ‘k’ on a regular grid of ‘p’ points and + stores it in ‘L’. The dimensions of ‘L’ are (p-k)-by-p. + + -- Function: int gsl_multifit_linear_Lsobolev (const size_t p, const + size_t kmax, const gsl_vector * alpha, gsl_matrix * L, + gsl_multifit_linear_workspace * work) + + This function computes the regularization matrix ‘L’ corresponding + to the weighted Sobolov norm ||L c||^2 = \sum_k \alpha_k^2 ||L_k + c||^2 where L_k approximates the derivative operator of order k. + This regularization norm can be useful in applications where it is + necessary to smooth several derivatives of the solution. ‘p’ is + the number of model parameters, ‘kmax’ is the highest derivative to + include in the summation above, and *note alpha: 497. is the vector + of weights of size ‘kmax’ + 1, where ‘alpha[k]’ = \alpha_k is the + weight assigned to the derivative of order k. The output matrix + ‘L’ is size ‘p’-by-‘p’ and upper triangular. + + -- Function: double gsl_multifit_linear_rcond (const + gsl_multifit_linear_workspace * work) + + This function returns the reciprocal condition number of the least + squares matrix X, defined as the ratio of the smallest and largest + singular values, rcond = \sigma_{min}/\sigma_{max}. The routine + *note gsl_multifit_linear_svd(): ae2. must first be called to + compute the SVD of X. + + +File: gsl-ref.info, Node: Robust linear regression, Next: Large dense linear systems, Prev: Regularized regression, Up: Linear Least-Squares Fitting + +40.5 Robust linear regression +============================= + +Ordinary least squares (OLS) models are often heavily influenced by the +presence of outliers. Outliers are data points which do not follow the +general trend of the other observations, although there is strictly no +precise definition of an outlier. Robust linear regression refers to +regression algorithms which are robust to outliers. The most common +type of robust regression is M-estimation. The general M-estimator +minimizes the objective function + + \sum_i \rho(e_i) = \sum_i \rho (y_i - Y(c, x_i)) + +where e_i = y_i - Y(c, x_i) is the residual of the ith data point, and +\rho(e_i) is a function which should have the following properties: + + * \rho(e) \ge 0 + + * \rho(0) = 0 + + * \rho(-e) = \rho(e) + + * \rho(e_1) > \rho(e_2) for |e_1| > |e_2| + +The special case of ordinary least squares is given by \rho(e_i) = +e_i^2. Letting \psi = \rho' be the derivative of \rho, differentiating +the objective function with respect to the coefficients c and setting +the partial derivatives to zero produces the system of equations + + \sum_i \psi(e_i) X_i = 0 + +where X_i is a vector containing row i of the design matrix X. Next, we +define a weight function w(e) = \psi(e)/e, and let w_i = w(e_i): + + \sum_i w_i e_i X_i = 0 + +This system of equations is equivalent to solving a weighted ordinary +least squares problem, minimizing \chi^2 = \sum_i w_i e_i^2. The +weights however, depend on the residuals e_i, which depend on the +coefficients c, which depend on the weights. Therefore, an iterative +solution is used, called Iteratively Reweighted Least Squares (IRLS). + + 1. Compute initial estimates of the coefficients c^{(0)} using + ordinary least squares + + 2. For iteration k, form the residuals e_i^{(k)} = (y_i - X_i + c^{(k-1)})/(t \sigma^{(k)} \sqrt{1 - h_i}), where t is a tuning + constant depending on the choice of \psi, and h_i are the + statistical leverages (diagonal elements of the matrix X (X^T + X)^{-1} X^T). Including t and h_i in the residual calculation has + been shown to improve the convergence of the method. The residual + standard deviation is approximated as \sigma^{(k)} = MAD / 0.6745, + where MAD is the Median-Absolute-Deviation of the n-p largest + residuals from the previous iteration. + + 3. Compute new weights w_i^{(k)} = \psi(e_i^{(k)})/e_i^{(k)}. + + 4. Compute new coefficients c^{(k)} by solving the weighted least + squares problem with weights w_i^{(k)}. + + 5. Steps 2 through 4 are iterated until the coefficients converge or + until some maximum iteration limit is reached. Coefficients are + tested for convergence using the critera: + + |c_i^(k) - c_i^(k-1)| <= \epsilon * max(|c_i^(k)|, |c_i^(k-1)|) + + for all 0 \le i < p where \epsilon is a small tolerance factor. + +The key to this method lies in selecting the function \psi(e_i) to +assign smaller weights to large residuals, and larger weights to smaller +residuals. As the iteration proceeds, outliers are assigned smaller and +smaller weights, eventually having very little or no effect on the +fitted model. + + -- Type: gsl_multifit_robust_workspace + + This workspace is used for robust least squares fitting. + + -- Function: gsl_multifit_robust_workspace * gsl_multifit_robust_alloc + (const gsl_multifit_robust_type * T, const size_t n, const + size_t p) + + This function allocates a workspace for fitting a model to ‘n’ + observations using ‘p’ parameters. The size of the workspace is + O(np + p^2). The type ‘T’ specifies the function \psi and can be + selected from the following choices. + + -- Type: gsl_multifit_robust_type + + -- Variable: gsl_multifit_robust_default + + This specifies the *note gsl_multifit_robust_bisquare: + b07. type (see below) and is a good general purpose + choice for robust regression. + + -- Variable: gsl_multifit_robust_bisquare + + This is Tukey’s biweight (bisquare) function and is a + good general purpose choice for robust regression. The + weight function is given by + + w(e) = { (1 - e^2)^2, |e| <= 1 + { 0, |e| > 1 + + and the default tuning constant is t = 4.685. + + -- Variable: gsl_multifit_robust_cauchy + + This is Cauchy’s function, also known as the Lorentzian + function. This function does not guarantee a unique + solution, meaning different choices of the coefficient + vector ‘c’ could minimize the objective function. + Therefore this option should be used with care. The + weight function is given by + + w(e) = 1 / (1 + e^2) + + and the default tuning constant is t = 2.385. + + -- Variable: gsl_multifit_robust_fair + + This is the fair \rho function, which guarantees a unique + solution and has continuous derivatives to three orders. + The weight function is given by + + w(e) = 1 / (1 + |e|) + + and the default tuning constant is t = 1.400. + + -- Variable: gsl_multifit_robust_huber + + This specifies Huber’s \rho function, which is a parabola + in the vicinity of zero and increases linearly for a + given threshold |e| > t. This function is also + considered an excellent general purpose robust estimator, + however, occasional difficulties can be encountered due + to the discontinuous first derivative of the \psi + function. The weight function is given by + + w(e) = 1/max(1,|e|) + + and the default tuning constant is t = 1.345. + + -- Variable: gsl_multifit_robust_ols + + This specifies the ordinary least squares solution, which + can be useful for quickly checking the difference between + the various robust and OLS solutions. The weight + function is given by + + w(e) = 1 + + and the default tuning constant is t = 1. + + -- Variable: gsl_multifit_robust_welsch + + This specifies the Welsch function which can perform well + in cases where the residuals have an exponential + distribution. The weight function is given by + + w(e) = \exp{(-e^2)} + + and the default tuning constant is t = 2.985. + + -- Function: void gsl_multifit_robust_free + (gsl_multifit_robust_workspace * w) + + This function frees the memory associated with the workspace ‘w’. + + -- Function: const char * gsl_multifit_robust_name (const + gsl_multifit_robust_workspace * w) + + This function returns the name of the robust type ‘T’ specified to + *note gsl_multifit_robust_alloc(): b04. + + -- Function: int gsl_multifit_robust_tune (const double tune, + gsl_multifit_robust_workspace * w) + + This function sets the tuning constant t used to adjust the + residuals at each iteration to ‘tune’. Decreasing the tuning + constant increases the downweight assigned to large residuals, + while increasing the tuning constant decreases the downweight + assigned to large residuals. + + -- Function: int gsl_multifit_robust_maxiter (const size_t maxiter, + gsl_multifit_robust_workspace * w) + + This function sets the maximum number of iterations in the + iteratively reweighted least squares algorithm to ‘maxiter’. By + default, this value is set to 100 by *note + gsl_multifit_robust_alloc(): b04. + + -- Function: int gsl_multifit_robust_weights (const gsl_vector * r, + gsl_vector * wts, gsl_multifit_robust_workspace * w) + + This function assigns weights to the vector ‘wts’ using the + residual vector ‘r’ and previously specified weighting function. + The output weights are given by wts_i = w(r_i / (t \sigma)), where + the weighting functions w are detailed in *note + gsl_multifit_robust_alloc(): b04. \sigma is an estimate of the + residual standard deviation based on the Median-Absolute-Deviation + and t is the tuning constant. This function is useful if the user + wishes to implement their own robust regression rather than using + the supplied *note gsl_multifit_robust(): b12. routine below. + + -- Function: int gsl_multifit_robust (const gsl_matrix * X, const + gsl_vector * y, gsl_vector * c, gsl_matrix * cov, + gsl_multifit_robust_workspace * w) + + This function computes the best-fit parameters ‘c’ of the model y = + X c for the observations ‘y’ and the matrix of predictor variables + ‘X’, attemping to reduce the influence of outliers using the + algorithm outlined above. The p-by-p variance-covariance matrix of + the model parameters ‘cov’ is estimated as \sigma^2 (X^T X)^{-1}, + where \sigma is an approximation of the residual standard deviation + using the theory of robust regression. Special care must be taken + when estimating \sigma and other statistics such as R^2, and so + these are computed internally and are available by calling the + function *note gsl_multifit_robust_statistics(): b13. + + If the coefficients do not converge within the maximum iteration + limit, the function returns ‘GSL_EMAXITER’. In this case, the + current estimates of the coefficients and covariance matrix are + returned in ‘c’ and ‘cov’ and the internal fit statistics are + computed with these estimates. + + -- Function: int gsl_multifit_robust_est (const gsl_vector * x, const + gsl_vector * c, const gsl_matrix * cov, double * y, double + * y_err) + + This function uses the best-fit robust regression coefficients ‘c’ + and their covariance matrix ‘cov’ to compute the fitted function + value ‘y’ and its standard deviation ‘y_err’ for the model y = x + \cdot c at the point ‘x’. + + -- Function: int gsl_multifit_robust_residuals (const gsl_matrix * X, + const gsl_vector * y, const gsl_vector * c, gsl_vector * r, + gsl_multifit_robust_workspace * w) + + This function computes the vector of studentized residuals r_i = + {y_i - (X c)_i \over \sigma \sqrt{1 - h_i}} for the observations + ‘y’, coefficients ‘c’ and matrix of predictor variables ‘X’. The + routine *note gsl_multifit_robust(): b12. must first be called to + compute the statisical leverages h_i of the matrix ‘X’ and residual + standard deviation estimate \sigma. + + -- Function: gsl_multifit_robust_stats gsl_multifit_robust_statistics + (const gsl_multifit_robust_workspace * w) + + This function returns a structure containing relevant statistics + from a robust regression. The function *note + gsl_multifit_robust(): b12. must be called first to perform the + regression and calculate these statistics. The returned *note + gsl_multifit_robust_stats: b16. structure contains the following + fields. + + -- Type: gsl_multifit_robust_stats + + ‘double sigma_ols’ + + This contains the standard deviation of the residuals as + computed from ordinary least squares (OLS). + + ‘double sigma_mad’ + + This contains an estimate of the standard deviation of + the final residuals using the Median-Absolute-Deviation + statistic + + ‘double sigma_rob’ + + This contains an estimate of the standard deviation of + the final residuals from the theory of robust regression + (see Street et al, 1988). + + ‘double sigma’ + + This contains an estimate of the standard deviation of + the final residuals by attemping to reconcile ‘sigma_rob’ + and ‘sigma_ols’ in a reasonable way. + + ‘double Rsq’ + + This contains the R^2 coefficient of determination + statistic using the estimate ‘sigma’. + + ‘double adj_Rsq’ + + This contains the adjusted R^2 coefficient of + determination statistic using the estimate ‘sigma’. + + ‘double rmse’ + + This contains the root mean squared error of the final + residuals + + ‘double sse’ + + This contains the residual sum of squares taking into + account the robust covariance matrix. + + ‘size_t dof’ + + This contains the number of degrees of freedom n - p + + ‘size_t numit’ + + Upon successful convergence, this contains the number of + iterations performed + + ‘gsl_vector * weights’ + + This contains the final weight vector of length ‘n’ + + ‘gsl_vector * r’ + + This contains the final residual vector of length ‘n’, r + = y - X c + + +File: gsl-ref.info, Node: Large dense linear systems, Next: Troubleshooting, Prev: Robust linear regression, Up: Linear Least-Squares Fitting + +40.6 Large dense linear systems +=============================== + +This module is concerned with solving large dense least squares systems +X c = y where the n-by-p matrix X has n >> p (ie: many more rows than +columns). This type of matrix is called a “tall skinny” matrix, and for +some applications, it may not be possible to fit the entire matrix in +memory at once to use the standard SVD approach. Therefore, the +algorithms in this module are designed to allow the user to construct +smaller blocks of the matrix X and accumulate those blocks into the +larger system one at a time. The algorithms in this module never need +to store the entire matrix X in memory. The large linear least squares +routines support data weights and Tikhonov regularization, and are +designed to minimize the residual + + \chi^2 = || y - Xc ||_W^2 + \lambda^2 || L c ||^2 + +where y is the n-by-1 observation vector, X is the n-by-p design matrix, +c is the p-by-1 solution vector, W = \diag(w_1,...,w_n) is the data +weighting matrix, L is an m-by-p regularization matrix, \lambda is a +regularization parameter, and ||r||_W^2 = r^T W r. In the discussion +which follows, we will assume that the system has been converted into +Tikhonov standard form, + + \chi^2 = || y~ - X~ c~ ||^2 + \lambda^2 || c~ ||^2 + +and we will drop the tilde characters from the various parameters. For +a discussion of the transformation to standard form, see *note +Regularized regression: aec. + +The basic idea is to partition the matrix X and observation vector y as + + [ X_1 ] c = [ y_1 ] + [ X_2 ] [ y_2 ] + [ X_3 ] [ y_3 ] + [ ... ] [ ... ] + [ X_k ] [ y_k ] + +into k blocks, where each block (X_i,y_i) may have any number of rows, +but each X_i has p columns. The sections below describe the methods +available for solving this partitioned system. The functions are +declared in the header file ‘gsl_multilarge.h’. + +* Menu: + +* Normal Equations Approach:: +* Tall Skinny QR (TSQR) Approach: Tall Skinny QR TSQR Approach. +* Large Dense Linear Systems Solution Steps:: +* Large Dense Linear Least Squares Routines:: + + +File: gsl-ref.info, Node: Normal Equations Approach, Next: Tall Skinny QR TSQR Approach, Up: Large dense linear systems + +40.6.1 Normal Equations Approach +-------------------------------- + +The normal equations approach to the large linear least squares problem +described above is popular due to its speed and simplicity. Since the +normal equations solution to the problem is given by + + c = ( X^T X + \lambda^2 I )^-1 X^T y + +only the p-by-p matrix X^T X and p-by-1 vector X^T y need to be stored. +Using the partition scheme described above, these are given by + + X^T X = \sum_i X_i^T X_i + X^T y = \sum_i X_i^T y_i + +Since the matrix X^T X is symmetric, only half of it needs to be +calculated. Once all of the blocks (X_i,y_i) have been accumulated into +the final X^T X and X^T y, the system can be solved with a Cholesky +factorization of the X^T X matrix. The X^T X matrix is first +transformed via a diagonal scaling transformation to attempt to reduce +its condition number as much as possible to recover a more accurate +solution vector. The normal equations approach is the fastest method +for solving the large least squares problem, and is accurate for +well-conditioned matrices X. However, for ill-conditioned matrices, as +is often the case for large systems, this method can suffer from +numerical instabilities (see Trefethen and Bau, 1997). The number of +operations for this method is O(np^2 + {1 \over 3}p^3). + + +File: gsl-ref.info, Node: Tall Skinny QR TSQR Approach, Next: Large Dense Linear Systems Solution Steps, Prev: Normal Equations Approach, Up: Large dense linear systems + +40.6.2 Tall Skinny QR (TSQR) Approach +------------------------------------- + +An algorithm which has better numerical stability for ill-conditioned +problems is known as the Tall Skinny QR (TSQR) method. This method is +based on computing the thin QR decomposition of the least squares matrix +X = Q R, where Q is an n-by-p matrix with orthogonal columns, and R is a +p-by-p upper triangular matrix. Once these factors are calculated, the +residual becomes + + \chi^2 = || Q^T y - R c ||^2 + \lambda^2 || c ||^2 + +which can be written as the matrix equation + + [ R ; \lambda I ] c = [ Q^T b ; 0 ] + +The matrix on the left hand side is now a much smaller 2p-by-p matrix +which can be solved with a standard SVD approach. The Q matrix is just +as large as the original matrix X, however it does not need to be +explicitly constructed. The TSQR algorithm computes only the p-by-p +matrix R and the p-by-1 vector Q^T y, and updates these quantities as +new blocks are added to the system. Each time a new block of rows +(X_i,y_i) is added, the algorithm performs a QR decomposition of the +matrix + + [ R_(i-1) ; X_i ] + +where R_{i-1} is the upper triangular R factor for the matrix + + [ X_1 ; ... ; X_(i-1) ] + +This QR decomposition is done efficiently taking into account the sparse +structure of R_{i-1}. See Demmel et al, 2008 for more details on how +this is accomplished. The number of operations for this method is +O(2np^2 - {2 \over 3}p^3). + + +File: gsl-ref.info, Node: Large Dense Linear Systems Solution Steps, Next: Large Dense Linear Least Squares Routines, Prev: Tall Skinny QR TSQR Approach, Up: Large dense linear systems + +40.6.3 Large Dense Linear Systems Solution Steps +------------------------------------------------ + +The typical steps required to solve large regularized linear least +squares problems are as follows: + + 1. Choose the regularization matrix L. + + 2. Construct a block of rows of the least squares matrix, right hand + side vector, and weight vector (X_i, y_i, w_i). + + 3. Transform the block to standard form (\tilde{X_i}, \tilde{y_i}). + This step can be skipped if L = I and W = I. + + 4. Accumulate the standard form block (\tilde{X_i}, \tilde{y_i}) into + the system. + + 5. Repeat steps 2-4 until the entire matrix and right hand side vector + have been accumulated. + + 6. Determine an appropriate regularization parameter \lambda (using + for example L-curve analysis). + + 7. Solve the standard form system using the chosen \lambda. + + 8. Backtransform the standard form solution \tilde{c} to recover the + original solution vector c. + + +File: gsl-ref.info, Node: Large Dense Linear Least Squares Routines, Prev: Large Dense Linear Systems Solution Steps, Up: Large dense linear systems + +40.6.4 Large Dense Linear Least Squares Routines +------------------------------------------------ + + -- Type: gsl_multilarge_linear_workspace + + This workspace contains parameters for solving large linear least + squares problems. + + -- Function: gsl_multilarge_linear_workspace * + gsl_multilarge_linear_alloc (const gsl_multilarge_linear_type + * T, const size_t p) + + This function allocates a workspace for solving large linear least + squares systems. The least squares matrix X has ‘p’ columns, but + may have any number of rows. + + -- Type: gsl_multilarge_linear_type + + The parameter ‘T’ specifies the method to be used for solving + the large least squares system and may be selected from the + following choices + + -- Variable: gsl_multilarge_linear_normal + + This specifies the normal equations approach for solving + the least squares system. This method is suitable in + cases where performance is critical and it is known that + the least squares matrix X is well conditioned. The size + of this workspace is O(p^2). + + -- Variable: gsl_multilarge_linear_tsqr + + This specifies the sequential Tall Skinny QR (TSQR) + approach for solving the least squares system. This + method is a good general purpose choice for large + systems, but requires about twice as many operations as + the normal equations method for n >> p. The size of this + workspace is O(p^2). + + -- Function: void gsl_multilarge_linear_free + (gsl_multilarge_linear_workspace * w) + + This function frees the memory associated with the workspace ‘w’. + + -- Function: const char * gsl_multilarge_linear_name + (gsl_multilarge_linear_workspace * w) + + This function returns a string pointer to the name of the + multilarge solver. + + -- Function: int gsl_multilarge_linear_reset + (gsl_multilarge_linear_workspace * w) + + This function resets the workspace ‘w’ so it can begin to + accumulate a new least squares system. + + -- Function: int gsl_multilarge_linear_stdform1 (const gsl_vector * L, + const gsl_matrix * X, const gsl_vector * y, gsl_matrix * Xs, + gsl_vector * ys, gsl_multilarge_linear_workspace * work) + -- Function: int gsl_multilarge_linear_wstdform1 (const gsl_vector * L, + const gsl_matrix * X, const gsl_vector * w, const gsl_vector + * y, gsl_matrix * Xs, gsl_vector * ys, + gsl_multilarge_linear_workspace * work) + + These functions define a regularization matrix L = + \diag(l_0,l_1,...,l_{p-1}). The diagonal matrix element l_i is + provided by the i-th element of the input vector ‘L’. The block + (‘X’, ‘y’) is converted to standard form and the parameters + (\tilde{X}, \tilde{y}) are stored in ‘Xs’ and ‘ys’ on output. ‘Xs’ + and ‘ys’ have the same dimensions as ‘X’ and ‘y’. Optional data + weights may be supplied in the vector ‘w’. In order to apply this + transformation, L^{-1} must exist and so none of the l_i may be + zero. After the standard form system has been solved, use *note + gsl_multilarge_linear_genform1(): b26. to recover the original + solution vector. It is allowed to have ‘X’ = ‘Xs’ and ‘y’ = ‘ys’ + for an in-place transform. + + -- Function: int gsl_multilarge_linear_L_decomp (gsl_matrix * L, + gsl_vector * tau) + + This function calculates the QR decomposition of the m-by-p + regularization matrix ‘L’. ‘L’ must have m \ge p. On output, the + Householder scalars are stored in the vector ‘tau’ of size p. + These outputs will be used by *note + gsl_multilarge_linear_wstdform2(): b28. to complete the + transformation to standard form. + + -- Function: int gsl_multilarge_linear_stdform2 (const gsl_matrix + * LQR, const gsl_vector * Ltau, const gsl_matrix * X, const + gsl_vector * y, gsl_matrix * Xs, gsl_vector * ys, + gsl_multilarge_linear_workspace * work) + -- Function: int gsl_multilarge_linear_wstdform2 (const gsl_matrix + * LQR, const gsl_vector * Ltau, const gsl_matrix * X, const + gsl_vector * w, const gsl_vector * y, gsl_matrix * Xs, + gsl_vector * ys, gsl_multilarge_linear_workspace * work) + + These functions convert a block of rows (‘X’, ‘y’, ‘w’) to standard + form (\tilde{X}, \tilde{y}) which are stored in ‘Xs’ and ‘ys’ + respectively. ‘X’, ‘y’, and ‘w’ must all have the same number of + rows. The m-by-p regularization matrix ‘L’ is specified by the + inputs ‘LQR’ and ‘Ltau’, which are outputs from *note + gsl_multilarge_linear_L_decomp(): b27. ‘Xs’ and ‘ys’ have the same + dimensions as ‘X’ and ‘y’. After the standard form system has been + solved, use *note gsl_multilarge_linear_genform2(): b2a. to recover + the original solution vector. Optional data weights may be + supplied in the vector ‘w’, where W = \diag(w). + + -- Function: int gsl_multilarge_linear_accumulate (gsl_matrix * X, + gsl_vector * y, gsl_multilarge_linear_workspace * w) + + This function accumulates the standard form block (X,y) into the + current least squares system. ‘X’ and ‘y’ have the same number of + rows, which can be arbitrary. ‘X’ must have p columns. For the + TSQR method, ‘X’ and ‘y’ are destroyed on output. For the normal + equations method, they are both unchanged. + + -- Function: int gsl_multilarge_linear_solve (const double lambda, + gsl_vector * c, double * rnorm, double * snorm, + gsl_multilarge_linear_workspace * w) + + After all blocks (X_i,y_i) have been accumulated into the large + least squares system, this function will compute the solution + vector which is stored in ‘c’ on output. The regularization + parameter \lambda is provided in ‘lambda’. On output, ‘rnorm’ + contains the residual norm ||y - X c||_W and ‘snorm’ contains the + solution norm ||L c||. + + -- Function: int gsl_multilarge_linear_genform1 (const gsl_vector * L, + const gsl_vector * cs, gsl_vector * c, + gsl_multilarge_linear_workspace * work) + + After a regularized system has been solved with L = + \diag(\l_0,\l_1,...,\l_{p-1}), this function backtransforms the + standard form solution vector ‘cs’ to recover the solution vector + of the original problem ‘c’. The diagonal matrix elements l_i are + provided in the vector ‘L’. It is allowed to have ‘c’ = ‘cs’ for + an in-place transform. + + -- Function: int gsl_multilarge_linear_genform2 (const gsl_matrix + * LQR, const gsl_vector * Ltau, const gsl_vector * cs, + gsl_vector * c, gsl_multilarge_linear_workspace * work) + + After a regularized system has been solved with a regularization + matrix L, specified by (‘LQR’, ‘Ltau’), this function + backtransforms the standard form solution ‘cs’ to recover the + solution vector of the original problem, which is stored in ‘c’, of + length p. + + -- Function: int gsl_multilarge_linear_lcurve (gsl_vector * reg_param, + gsl_vector * rho, gsl_vector * eta, + gsl_multilarge_linear_workspace * work) + + This function computes the L-curve for a large least squares system + after it has been fully accumulated into the workspace ‘work’. The + output vectors ‘reg_param’, ‘rho’, and ‘eta’ must all be the same + size, and will contain the regularization parameters \lambda_i, + residual norms ||y - X c_i||, and solution norms || L c_i || which + compose the L-curve, where c_i is the regularized solution vector + corresponding to \lambda_i. The user may determine the number of + points on the L-curve by adjusting the size of these input arrays. + For the TSQR method, the regularization parameters \lambda_i are + estimated from the singular values of the triangular R factor. For + the normal equations method, they are estimated from the + eigenvalues of the X^T X matrix. + + -- Function: int gsl_multilarge_linear_rcond (double * rcond, + gsl_multilarge_linear_workspace * work) + + This function computes the reciprocal condition number, stored in + ‘rcond’, of the least squares matrix after it has been accumulated + into the workspace ‘work’. For the TSQR algorithm, this is + accomplished by calculating the SVD of the R factor, which has the + same singular values as the matrix X. For the normal equations + method, this is done by computing the eigenvalues of X^T X, which + could be inaccurate for ill-conditioned matrices X. + + +File: gsl-ref.info, Node: Troubleshooting, Next: Examples<31>, Prev: Large dense linear systems, Up: Linear Least-Squares Fitting + +40.7 Troubleshooting +==================== + +When using models based on polynomials, care should be taken when +constructing the design matrix X. If the x values are large, then the +matrix X could be ill-conditioned since its columns are powers of x, +leading to unstable least-squares solutions. In this case it can often +help to center and scale the x values using the mean and standard +deviation: + + x' = (x - mu)/sigma + +and then construct the X matrix using the transformed values x'. + + +File: gsl-ref.info, Node: Examples<31>, Next: References and Further Reading<32>, Prev: Troubleshooting, Up: Linear Least-Squares Fitting + +40.8 Examples +============= + +The example programs in this section demonstrate the various linear +regression methods. + +* Menu: + +* Simple Linear Regression Example:: +* Multi-parameter Linear Regression Example:: +* Regularized Linear Regression Example 1:: +* Regularized Linear Regression Example 2:: +* Robust Linear Regression Example:: +* Large Dense Linear Regression Example:: + + +File: gsl-ref.info, Node: Simple Linear Regression Example, Next: Multi-parameter Linear Regression Example, Up: Examples<31> + +40.8.1 Simple Linear Regression Example +--------------------------------------- + +The following program computes a least squares straight-line fit to a +simple dataset, and outputs the best-fit line and its associated one +standard-deviation error bars. + + #include + #include + + int + main (void) + { + int i, n = 4; + double x[4] = { 1970, 1980, 1990, 2000 }; + double y[4] = { 12, 11, 14, 13 }; + double w[4] = { 0.1, 0.2, 0.3, 0.4 }; + + double c0, c1, cov00, cov01, cov11, chisq; + + gsl_fit_wlinear (x, 1, w, 1, y, 1, n, + &c0, &c1, &cov00, &cov01, &cov11, + &chisq); + + printf ("# best fit: Y = %g + %g X\n", c0, c1); + printf ("# covariance matrix:\n"); + printf ("# [ %g, %g\n# %g, %g]\n", + cov00, cov01, cov01, cov11); + printf ("# chisq = %g\n", chisq); + + for (i = 0; i < n; i++) + printf ("data: %g %g %g\n", + x[i], y[i], 1/sqrt(w[i])); + + printf ("\n"); + + for (i = -30; i < 130; i++) + { + double xf = x[0] + (i/100.0) * (x[n-1] - x[0]); + double yf, yf_err; + + gsl_fit_linear_est (xf, + c0, c1, + cov00, cov01, cov11, + &yf, &yf_err); + + printf ("fit: %g %g\n", xf, yf); + printf ("hi : %g %g\n", xf, yf + yf_err); + printf ("lo : %g %g\n", xf, yf - yf_err); + } + return 0; + } + +The following commands extract the data from the output of the program +and display it using the GNU plotutils “graph” utility: + + $ ./demo > tmp + $ more tmp + # best fit: Y = -106.6 + 0.06 X + # covariance matrix: + # [ 39602, -19.9 + # -19.9, 0.01] + # chisq = 0.8 + + $ for n in data fit hi lo ; + do + grep "^$n" tmp | cut -d: -f2 > $n ; + done + $ graph -T X -X x -Y y -y 0 20 -m 0 -S 2 -Ie data + -S 0 -I a -m 1 fit -m 2 hi -m 2 lo + +The result is shown in Fig. %s. + +[image src="fit-wlinear.png"] + +Figure: Straight line fit with 1-\sigma error bars + + +File: gsl-ref.info, Node: Multi-parameter Linear Regression Example, Next: Regularized Linear Regression Example 1, Prev: Simple Linear Regression Example, Up: Examples<31> + +40.8.2 Multi-parameter Linear Regression Example +------------------------------------------------ + +The following program performs a quadratic fit y = c_0 + c_1 x + c_2 x^2 +to a weighted dataset using the generalised linear fitting function +*note gsl_multifit_wlinear(): ae6. The model matrix X for a quadratic +fit is given by, + + X = [ 1 , x_0 , x_0^2 ; + 1 , x_1 , x_1^2 ; + 1 , x_2 , x_2^2 ; + ... , ... , ... ] + +where the column of ones corresponds to the constant term c_0. The two +remaining columns corresponds to the terms c_1 x and c_2 x^2. + +The program reads ‘n’ lines of data in the format (‘x’, ‘y’, ‘err’) +where ‘err’ is the error (standard deviation) in the value ‘y’. + + #include + #include + + int + main (int argc, char **argv) + { + int i, n; + double xi, yi, ei, chisq; + gsl_matrix *X, *cov; + gsl_vector *y, *w, *c; + + if (argc != 2) + { + fprintf (stderr,"usage: fit n < data\n"); + exit (-1); + } + + n = atoi (argv[1]); + + X = gsl_matrix_alloc (n, 3); + y = gsl_vector_alloc (n); + w = gsl_vector_alloc (n); + + c = gsl_vector_alloc (3); + cov = gsl_matrix_alloc (3, 3); + + for (i = 0; i < n; i++) + { + int count = fscanf (stdin, "%lg %lg %lg", + &xi, &yi, &ei); + + if (count != 3) + { + fprintf (stderr, "error reading file\n"); + exit (-1); + } + + printf ("%g %g +/- %g\n", xi, yi, ei); + + gsl_matrix_set (X, i, 0, 1.0); + gsl_matrix_set (X, i, 1, xi); + gsl_matrix_set (X, i, 2, xi*xi); + + gsl_vector_set (y, i, yi); + gsl_vector_set (w, i, 1.0/(ei*ei)); + } + + { + gsl_multifit_linear_workspace * work + = gsl_multifit_linear_alloc (n, 3); + gsl_multifit_wlinear (X, w, y, c, cov, + &chisq, work); + gsl_multifit_linear_free (work); + } + + #define C(i) (gsl_vector_get(c,(i))) + #define COV(i,j) (gsl_matrix_get(cov,(i),(j))) + + { + printf ("# best fit: Y = %g + %g X + %g X^2\n", + C(0), C(1), C(2)); + + printf ("# covariance matrix:\n"); + printf ("[ %+.5e, %+.5e, %+.5e \n", + COV(0,0), COV(0,1), COV(0,2)); + printf (" %+.5e, %+.5e, %+.5e \n", + COV(1,0), COV(1,1), COV(1,2)); + printf (" %+.5e, %+.5e, %+.5e ]\n", + COV(2,0), COV(2,1), COV(2,2)); + printf ("# chisq = %g\n", chisq); + } + + gsl_matrix_free (X); + gsl_vector_free (y); + gsl_vector_free (w); + gsl_vector_free (c); + gsl_matrix_free (cov); + + return 0; + } + +A suitable set of data for fitting can be generated using the following +program. It outputs a set of points with gaussian errors from the curve +y = e^x in the region 0 < x < 2. + + #include + #include + #include + + int + main (void) + { + double x; + const gsl_rng_type * T; + gsl_rng * r; + + gsl_rng_env_setup (); + + T = gsl_rng_default; + r = gsl_rng_alloc (T); + + for (x = 0.1; x < 2; x+= 0.1) + { + double y0 = exp (x); + double sigma = 0.1 * y0; + double dy = gsl_ran_gaussian (r, sigma); + + printf ("%g %g %g\n", x, y0 + dy, sigma); + } + + gsl_rng_free(r); + + return 0; + } + +The data can be prepared by running the resulting executable program: + + $ GSL_RNG_TYPE=mt19937_1999 ./generate > exp.dat + $ more exp.dat + 0.1 0.97935 0.110517 + 0.2 1.3359 0.12214 + 0.3 1.52573 0.134986 + 0.4 1.60318 0.149182 + 0.5 1.81731 0.164872 + 0.6 1.92475 0.182212 + .... + +To fit the data use the previous program, with the number of data points +given as the first argument. In this case there are 19 data points: + + $ ./fit 19 < exp.dat + 0.1 0.97935 +/- 0.110517 + 0.2 1.3359 +/- 0.12214 + ... + # best fit: Y = 1.02318 + 0.956201 X + 0.876796 X^2 + # covariance matrix: + [ +1.25612e-02, -3.64387e-02, +1.94389e-02 + -3.64387e-02, +1.42339e-01, -8.48761e-02 + +1.94389e-02, -8.48761e-02, +5.60243e-02 ] + # chisq = 23.0987 + +The parameters of the quadratic fit match the coefficients of the +expansion of e^x, taking into account the errors on the parameters and +the O(x^3) difference between the exponential and quadratic functions +for the larger values of x. The errors on the parameters are given by +the square-root of the corresponding diagonal elements of the covariance +matrix. The chi-squared per degree of freedom is 1.4, indicating a +reasonable fit to the data. + +Fig. %s shows the resulting fit. + +[image src="fit-wlinear2.png"] + +Figure: Weighted fit example with error bars + + +File: gsl-ref.info, Node: Regularized Linear Regression Example 1, Next: Regularized Linear Regression Example 2, Prev: Multi-parameter Linear Regression Example, Up: Examples<31> + +40.8.3 Regularized Linear Regression Example 1 +---------------------------------------------- + +The next program demonstrates the difference between ordinary and +regularized least squares when the design matrix is near-singular. In +this program, we generate two random normally distributed variables u +and v, with v = u + noise so that u and v are nearly colinear. We then +set a third dependent variable y = u + v + noise and solve for the +coefficients c_1,c_2 of the model Y(c_1,c_2) = c_1 u + c_2 v. Since u +\approx v, the design matrix X is nearly singular, leading to unstable +ordinary least squares solutions. + +Here is the program output: + + matrix condition number = 1.025113e+04 + + === Unregularized fit === + best fit: y = -43.6588 u + 45.6636 v + residual norm = 31.6248 + solution norm = 63.1764 + chisq/dof = 1.00213 + + === Regularized fit (L-curve) === + optimal lambda: 4.51103 + best fit: y = 1.00113 u + 1.0032 v + residual norm = 31.6547 + solution norm = 1.41728 + chisq/dof = 1.04499 + + === Regularized fit (GCV) === + optimal lambda: 0.0232029 + best fit: y = -19.8367 u + 21.8417 v + residual norm = 31.6332 + solution norm = 29.5051 + chisq/dof = 1.00314 + +We see that the ordinary least squares solution is completely wrong, +while the L-curve regularized method with the optimal \lambda = 4.51103 +finds the correct solution c_1 \approx c_2 \approx 1. The GCV +regularized method finds a regularization parameter \lambda = 0.0232029 +which is too small to give an accurate solution, although it performs +better than OLS. The L-curve and its computed corner, as well as the GCV +curve and its minimum are plotted in Fig. %s. + +[image src="regularized.png"] + +Figure: L-curve and GCV curve for example program. + +The program is given below. + + #include + #include + #include + #include + #include + #include + + int + main() + { + const size_t n = 1000; /* number of observations */ + const size_t p = 2; /* number of model parameters */ + size_t i; + gsl_rng *r = gsl_rng_alloc(gsl_rng_default); + gsl_matrix *X = gsl_matrix_alloc(n, p); + gsl_vector *y = gsl_vector_alloc(n); + + for (i = 0; i < n; ++i) + { + /* generate first random variable u */ + double ui = 5.0 * gsl_ran_gaussian(r, 1.0); + + /* set v = u + noise */ + double vi = ui + gsl_ran_gaussian(r, 0.001); + + /* set y = u + v + noise */ + double yi = ui + vi + gsl_ran_gaussian(r, 1.0); + + /* since u =~ v, the matrix X is ill-conditioned */ + gsl_matrix_set(X, i, 0, ui); + gsl_matrix_set(X, i, 1, vi); + + /* rhs vector */ + gsl_vector_set(y, i, yi); + } + + { + const size_t npoints = 200; /* number of points on L-curve and GCV curve */ + gsl_multifit_linear_workspace *w = + gsl_multifit_linear_alloc(n, p); + gsl_vector *c = gsl_vector_alloc(p); /* OLS solution */ + gsl_vector *c_lcurve = gsl_vector_alloc(p); /* regularized solution (L-curve) */ + gsl_vector *c_gcv = gsl_vector_alloc(p); /* regularized solution (GCV) */ + gsl_vector *reg_param = gsl_vector_alloc(npoints); + gsl_vector *rho = gsl_vector_alloc(npoints); /* residual norms */ + gsl_vector *eta = gsl_vector_alloc(npoints); /* solution norms */ + gsl_vector *G = gsl_vector_alloc(npoints); /* GCV function values */ + double lambda_l; /* optimal regularization parameter (L-curve) */ + double lambda_gcv; /* optimal regularization parameter (GCV) */ + double G_gcv; /* G(lambda_gcv) */ + size_t reg_idx; /* index of optimal lambda */ + double rcond; /* reciprocal condition number of X */ + double chisq, rnorm, snorm; + + /* compute SVD of X */ + gsl_multifit_linear_svd(X, w); + + rcond = gsl_multifit_linear_rcond(w); + fprintf(stderr, "matrix condition number = %e\n\n", 1.0 / rcond); + + /* unregularized (standard) least squares fit, lambda = 0 */ + gsl_multifit_linear_solve(0.0, X, y, c, &rnorm, &snorm, w); + chisq = pow(rnorm, 2.0); + + fprintf(stderr, "=== Unregularized fit ===\n"); + fprintf(stderr, "best fit: y = %g u + %g v\n", + gsl_vector_get(c, 0), gsl_vector_get(c, 1)); + fprintf(stderr, "residual norm = %g\n", rnorm); + fprintf(stderr, "solution norm = %g\n", snorm); + fprintf(stderr, "chisq/dof = %g\n", chisq / (n - p)); + + /* calculate L-curve and find its corner */ + gsl_multifit_linear_lcurve(y, reg_param, rho, eta, w); + gsl_multifit_linear_lcorner(rho, eta, ®_idx); + + /* store optimal regularization parameter */ + lambda_l = gsl_vector_get(reg_param, reg_idx); + + /* regularize with lambda_l */ + gsl_multifit_linear_solve(lambda_l, X, y, c_lcurve, &rnorm, &snorm, w); + chisq = pow(rnorm, 2.0) + pow(lambda_l * snorm, 2.0); + + fprintf(stderr, "\n=== Regularized fit (L-curve) ===\n"); + fprintf(stderr, "optimal lambda: %g\n", lambda_l); + fprintf(stderr, "best fit: y = %g u + %g v\n", + gsl_vector_get(c_lcurve, 0), gsl_vector_get(c_lcurve, 1)); + fprintf(stderr, "residual norm = %g\n", rnorm); + fprintf(stderr, "solution norm = %g\n", snorm); + fprintf(stderr, "chisq/dof = %g\n", chisq / (n - p)); + + /* calculate GCV curve and find its minimum */ + gsl_multifit_linear_gcv(y, reg_param, G, &lambda_gcv, &G_gcv, w); + + /* regularize with lambda_gcv */ + gsl_multifit_linear_solve(lambda_gcv, X, y, c_gcv, &rnorm, &snorm, w); + chisq = pow(rnorm, 2.0) + pow(lambda_gcv * snorm, 2.0); + + fprintf(stderr, "\n=== Regularized fit (GCV) ===\n"); + fprintf(stderr, "optimal lambda: %g\n", lambda_gcv); + fprintf(stderr, "best fit: y = %g u + %g v\n", + gsl_vector_get(c_gcv, 0), gsl_vector_get(c_gcv, 1)); + fprintf(stderr, "residual norm = %g\n", rnorm); + fprintf(stderr, "solution norm = %g\n", snorm); + fprintf(stderr, "chisq/dof = %g\n", chisq / (n - p)); + + /* output L-curve and GCV curve */ + for (i = 0; i < npoints; ++i) + { + printf("%e %e %e %e\n", + gsl_vector_get(reg_param, i), + gsl_vector_get(rho, i), + gsl_vector_get(eta, i), + gsl_vector_get(G, i)); + } + + /* output L-curve corner point */ + printf("\n\n%f %f\n", + gsl_vector_get(rho, reg_idx), + gsl_vector_get(eta, reg_idx)); + + /* output GCV curve corner minimum */ + printf("\n\n%e %e\n", + lambda_gcv, + G_gcv); + + gsl_multifit_linear_free(w); + gsl_vector_free(c); + gsl_vector_free(c_lcurve); + gsl_vector_free(reg_param); + gsl_vector_free(rho); + gsl_vector_free(eta); + gsl_vector_free(G); + } + + gsl_rng_free(r); + gsl_matrix_free(X); + gsl_vector_free(y); + + return 0; + } + + +File: gsl-ref.info, Node: Regularized Linear Regression Example 2, Next: Robust Linear Regression Example, Prev: Regularized Linear Regression Example 1, Up: Examples<31> + +40.8.4 Regularized Linear Regression Example 2 +---------------------------------------------- + +The following example program minimizes the cost function + + ||y - X c||^2 + \lambda^2 ||x||^2 + +where X is the 10-by-8 Hilbert matrix whose entries are given by + + X_{ij} = 1 / (i + j - 1) + +and the right hand side vector is given by y = +[1,-1,1,-1,1,-1,1,-1,1,-1]^T. Solutions are computed for \lambda = 0 +(unregularized) as well as for optimal parameters \lambda chosen by +analyzing the L-curve and GCV curve. + +Here is the program output: + + matrix condition number = 3.565872e+09 + + === Unregularized fit === + residual norm = 2.15376 + solution norm = 2.92217e+09 + chisq/dof = 2.31934 + + === Regularized fit (L-curve) === + optimal lambda: 7.11407e-07 + residual norm = 2.60386 + solution norm = 424507 + chisq/dof = 3.43565 + + === Regularized fit (GCV) === + optimal lambda: 1.72278 + residual norm = 3.1375 + solution norm = 0.139357 + chisq/dof = 4.95076 + +Here we see the unregularized solution results in a large solution norm +due to the ill-conditioned matrix. The L-curve solution finds a small +value of \lambda = 7.11e-7 which still results in a badly conditioned +system and a large solution norm. The GCV method finds a parameter +\lambda = 1.72 which results in a well-conditioned system and small +solution norm. + +The L-curve and its computed corner, as well as the GCV curve and its +minimum are plotted in Fig. %s. + +[image src="regularized2.png"] + +Figure: L-curve and GCV curve for example program. + +The program is given below. + + #include + #include + #include + #include + #include + + static int + hilbert_matrix(gsl_matrix * m) + { + const size_t N = m->size1; + const size_t M = m->size2; + size_t i, j; + + for (i = 0; i < N; i++) + { + for (j = 0; j < M; j++) + { + gsl_matrix_set(m, i, j, 1.0/(i+j+1.0)); + } + } + + return GSL_SUCCESS; + } + + int + main() + { + const size_t n = 10; /* number of observations */ + const size_t p = 8; /* number of model parameters */ + size_t i; + gsl_matrix *X = gsl_matrix_alloc(n, p); + gsl_vector *y = gsl_vector_alloc(n); + + /* construct Hilbert matrix and rhs vector */ + hilbert_matrix(X); + + { + double val = 1.0; + for (i = 0; i < n; ++i) + { + gsl_vector_set(y, i, val); + val *= -1.0; + } + } + + { + const size_t npoints = 200; /* number of points on L-curve and GCV curve */ + gsl_multifit_linear_workspace *w = + gsl_multifit_linear_alloc(n, p); + gsl_vector *c = gsl_vector_alloc(p); /* OLS solution */ + gsl_vector *c_lcurve = gsl_vector_alloc(p); /* regularized solution (L-curve) */ + gsl_vector *c_gcv = gsl_vector_alloc(p); /* regularized solution (GCV) */ + gsl_vector *reg_param = gsl_vector_alloc(npoints); + gsl_vector *rho = gsl_vector_alloc(npoints); /* residual norms */ + gsl_vector *eta = gsl_vector_alloc(npoints); /* solution norms */ + gsl_vector *G = gsl_vector_alloc(npoints); /* GCV function values */ + double lambda_l; /* optimal regularization parameter (L-curve) */ + double lambda_gcv; /* optimal regularization parameter (GCV) */ + double G_gcv; /* G(lambda_gcv) */ + size_t reg_idx; /* index of optimal lambda */ + double rcond; /* reciprocal condition number of X */ + double chisq, rnorm, snorm; + + /* compute SVD of X */ + gsl_multifit_linear_svd(X, w); + + rcond = gsl_multifit_linear_rcond(w); + fprintf(stderr, "matrix condition number = %e\n", 1.0 / rcond); + + /* unregularized (standard) least squares fit, lambda = 0 */ + gsl_multifit_linear_solve(0.0, X, y, c, &rnorm, &snorm, w); + chisq = pow(rnorm, 2.0); + + fprintf(stderr, "\n=== Unregularized fit ===\n"); + fprintf(stderr, "residual norm = %g\n", rnorm); + fprintf(stderr, "solution norm = %g\n", snorm); + fprintf(stderr, "chisq/dof = %g\n", chisq / (n - p)); + + /* calculate L-curve and find its corner */ + gsl_multifit_linear_lcurve(y, reg_param, rho, eta, w); + gsl_multifit_linear_lcorner(rho, eta, ®_idx); + + /* store optimal regularization parameter */ + lambda_l = gsl_vector_get(reg_param, reg_idx); + + /* regularize with lambda_l */ + gsl_multifit_linear_solve(lambda_l, X, y, c_lcurve, &rnorm, &snorm, w); + chisq = pow(rnorm, 2.0) + pow(lambda_l * snorm, 2.0); + + fprintf(stderr, "\n=== Regularized fit (L-curve) ===\n"); + fprintf(stderr, "optimal lambda: %g\n", lambda_l); + fprintf(stderr, "residual norm = %g\n", rnorm); + fprintf(stderr, "solution norm = %g\n", snorm); + fprintf(stderr, "chisq/dof = %g\n", chisq / (n - p)); + + /* calculate GCV curve and find its minimum */ + gsl_multifit_linear_gcv(y, reg_param, G, &lambda_gcv, &G_gcv, w); + + /* regularize with lambda_gcv */ + gsl_multifit_linear_solve(lambda_gcv, X, y, c_gcv, &rnorm, &snorm, w); + chisq = pow(rnorm, 2.0) + pow(lambda_gcv * snorm, 2.0); + + fprintf(stderr, "\n=== Regularized fit (GCV) ===\n"); + fprintf(stderr, "optimal lambda: %g\n", lambda_gcv); + fprintf(stderr, "residual norm = %g\n", rnorm); + fprintf(stderr, "solution norm = %g\n", snorm); + fprintf(stderr, "chisq/dof = %g\n", chisq / (n - p)); + + /* output L-curve and GCV curve */ + for (i = 0; i < npoints; ++i) + { + printf("%e %e %e %e\n", + gsl_vector_get(reg_param, i), + gsl_vector_get(rho, i), + gsl_vector_get(eta, i), + gsl_vector_get(G, i)); + } + + /* output L-curve corner point */ + printf("\n\n%f %f\n", + gsl_vector_get(rho, reg_idx), + gsl_vector_get(eta, reg_idx)); + + /* output GCV curve corner minimum */ + printf("\n\n%e %e\n", + lambda_gcv, + G_gcv); + + gsl_multifit_linear_free(w); + gsl_vector_free(c); + gsl_vector_free(c_lcurve); + gsl_vector_free(reg_param); + gsl_vector_free(rho); + gsl_vector_free(eta); + gsl_vector_free(G); + } + + gsl_matrix_free(X); + gsl_vector_free(y); + + return 0; + } + + +File: gsl-ref.info, Node: Robust Linear Regression Example, Next: Large Dense Linear Regression Example, Prev: Regularized Linear Regression Example 2, Up: Examples<31> + +40.8.5 Robust Linear Regression Example +--------------------------------------- + +The next program demonstrates the advantage of robust least squares on a +dataset with outliers. The program generates linear (x,y) data pairs on +the line y = 1.45 x + 3.88, adds some random noise, and inserts 3 +outliers into the dataset. Both the robust and ordinary least squares +(OLS) coefficients are computed for comparison. + + #include + #include + #include + + int + dofit(const gsl_multifit_robust_type *T, + const gsl_matrix *X, const gsl_vector *y, + gsl_vector *c, gsl_matrix *cov) + { + int s; + gsl_multifit_robust_workspace * work + = gsl_multifit_robust_alloc (T, X->size1, X->size2); + + s = gsl_multifit_robust (X, y, c, cov, work); + gsl_multifit_robust_free (work); + + return s; + } + + int + main (int argc, char **argv) + { + size_t i; + size_t n; + const size_t p = 2; /* linear fit */ + gsl_matrix *X, *cov; + gsl_vector *x, *y, *c, *c_ols; + const double a = 1.45; /* slope */ + const double b = 3.88; /* intercept */ + gsl_rng *r; + + if (argc != 2) + { + fprintf (stderr,"usage: robfit n\n"); + exit (-1); + } + + n = atoi (argv[1]); + + X = gsl_matrix_alloc (n, p); + x = gsl_vector_alloc (n); + y = gsl_vector_alloc (n); + + c = gsl_vector_alloc (p); + c_ols = gsl_vector_alloc (p); + cov = gsl_matrix_alloc (p, p); + + r = gsl_rng_alloc(gsl_rng_default); + + /* generate linear dataset */ + for (i = 0; i < n - 3; i++) + { + double dx = 10.0 / (n - 1.0); + double ei = gsl_rng_uniform(r); + double xi = -5.0 + i * dx; + double yi = a * xi + b; + + gsl_vector_set (x, i, xi); + gsl_vector_set (y, i, yi + ei); + } + + /* add a few outliers */ + gsl_vector_set(x, n - 3, 4.7); + gsl_vector_set(y, n - 3, -8.3); + + gsl_vector_set(x, n - 2, 3.5); + gsl_vector_set(y, n - 2, -6.7); + + gsl_vector_set(x, n - 1, 4.1); + gsl_vector_set(y, n - 1, -6.0); + + /* construct design matrix X for linear fit */ + for (i = 0; i < n; ++i) + { + double xi = gsl_vector_get(x, i); + + gsl_matrix_set (X, i, 0, 1.0); + gsl_matrix_set (X, i, 1, xi); + } + + /* perform robust and OLS fit */ + dofit(gsl_multifit_robust_ols, X, y, c_ols, cov); + dofit(gsl_multifit_robust_bisquare, X, y, c, cov); + + /* output data and model */ + for (i = 0; i < n; ++i) + { + double xi = gsl_vector_get(x, i); + double yi = gsl_vector_get(y, i); + gsl_vector_view v = gsl_matrix_row(X, i); + double y_ols, y_rob, y_err; + + gsl_multifit_robust_est(&v.vector, c, cov, &y_rob, &y_err); + gsl_multifit_robust_est(&v.vector, c_ols, cov, &y_ols, &y_err); + + printf("%g %g %g %g\n", xi, yi, y_rob, y_ols); + } + + #define C(i) (gsl_vector_get(c,(i))) + #define COV(i,j) (gsl_matrix_get(cov,(i),(j))) + + { + printf ("# best fit: Y = %g + %g X\n", + C(0), C(1)); + + printf ("# covariance matrix:\n"); + printf ("# [ %+.5e, %+.5e\n", + COV(0,0), COV(0,1)); + printf ("# %+.5e, %+.5e\n", + COV(1,0), COV(1,1)); + } + + gsl_matrix_free (X); + gsl_vector_free (x); + gsl_vector_free (y); + gsl_vector_free (c); + gsl_vector_free (c_ols); + gsl_matrix_free (cov); + gsl_rng_free(r); + + return 0; + } + +The output from the program is shown in Fig. %s. + +[image src="robust.png"] + +Figure: Linear fit to dataset with outliers. + + +File: gsl-ref.info, Node: Large Dense Linear Regression Example, Prev: Robust Linear Regression Example, Up: Examples<31> + +40.8.6 Large Dense Linear Regression Example +-------------------------------------------- + +The following program demostrates the large dense linear least squares +solvers. This example is adapted from Trefethen and Bau, and fits the +function f(t) = \exp{(\sin^3{(10t)}}) on the interval [0,1] with a +degree 15 polynomial. The program generates n = 50000 equally spaced +points t_i on this interval, calculates the function value and adds +random noise to determine the observation value y_i. The entries of the +least squares matrix are X_{ij} = t_i^j, representing a polynomial fit. +The matrix is highly ill-conditioned, with a condition number of about +1.4 \cdot 10^{11}. The program accumulates the matrix into the least +squares system in 5 blocks, each with 10000 rows. This way the full +matrix X is never stored in memory. We solve the system with both the +normal equations and TSQR methods. The results are shown in Fig. %s. +In the top left plot, we see the unregularized normal equations solution +has larger error than TSQR due to the ill-conditioning of the matrix. +In the bottom left plot, we show the L-curve, which exhibits multiple +corners. In the top right panel, we plot a regularized solution using +\lambda = 10^{-6}. The TSQR and normal solutions now agree, however +they are unable to provide a good fit due to the damping. This +indicates that for some ill-conditioned problems, regularizing the +normal equations does not improve the solution. This is further +illustrated in the bottom right panel, where we plot the L-curve +calculated from the normal equations. The curve agrees with the TSQR +curve for larger damping parameters, but for small \lambda, the normal +equations approach cannot provide accurate solution vectors leading to +numerical inaccuracies in the left portion of the curve. + +[image src="multilarge.png"] + +Figure + + #include + #include + #include + #include + #include + #include + #include + #include + + /* function to be fitted */ + double + func(const double t) + { + double x = sin(10.0 * t); + return exp(x*x*x); + } + + /* construct a row of the least squares matrix */ + int + build_row(const double t, gsl_vector *row) + { + const size_t p = row->size; + double Xj = 1.0; + size_t j; + + for (j = 0; j < p; ++j) + { + gsl_vector_set(row, j, Xj); + Xj *= t; + } + + return 0; + } + + int + solve_system(const int print_data, const gsl_multilarge_linear_type * T, + const double lambda, const size_t n, const size_t p, + gsl_vector * c) + { + const size_t nblock = 5; /* number of blocks to accumulate */ + const size_t nrows = n / nblock; /* number of rows per block */ + gsl_multilarge_linear_workspace * w = + gsl_multilarge_linear_alloc(T, p); + gsl_matrix *X = gsl_matrix_alloc(nrows, p); + gsl_vector *y = gsl_vector_alloc(nrows); + gsl_rng *r = gsl_rng_alloc(gsl_rng_default); + const size_t nlcurve = 200; + gsl_vector *reg_param = gsl_vector_alloc(nlcurve); + gsl_vector *rho = gsl_vector_alloc(nlcurve); + gsl_vector *eta = gsl_vector_alloc(nlcurve); + size_t rowidx = 0; + double rnorm, snorm, rcond; + double t = 0.0; + double dt = 1.0 / (n - 1.0); + + while (rowidx < n) + { + size_t nleft = n - rowidx; /* number of rows left to accumulate */ + size_t nr = GSL_MIN(nrows, nleft); /* number of rows in this block */ + gsl_matrix_view Xv = gsl_matrix_submatrix(X, 0, 0, nr, p); + gsl_vector_view yv = gsl_vector_subvector(y, 0, nr); + size_t i; + + /* build (X,y) block with 'nr' rows */ + for (i = 0; i < nr; ++i) + { + gsl_vector_view row = gsl_matrix_row(&Xv.matrix, i); + double fi = func(t); + double ei = gsl_ran_gaussian (r, 0.1 * fi); /* noise */ + double yi = fi + ei; + + /* construct this row of LS matrix */ + build_row(t, &row.vector); + + /* set right hand side value with added noise */ + gsl_vector_set(&yv.vector, i, yi); + + if (print_data && (i % 100 == 0)) + printf("%f %f\n", t, yi); + + t += dt; + } + + /* accumulate (X,y) block into LS system */ + gsl_multilarge_linear_accumulate(&Xv.matrix, &yv.vector, w); + + rowidx += nr; + } + + if (print_data) + printf("\n\n"); + + /* compute L-curve */ + gsl_multilarge_linear_lcurve(reg_param, rho, eta, w); + + /* solve large LS system and store solution in c */ + gsl_multilarge_linear_solve(lambda, c, &rnorm, &snorm, w); + + /* compute reciprocal condition number */ + gsl_multilarge_linear_rcond(&rcond, w); + + fprintf(stderr, "=== Method %s ===\n", gsl_multilarge_linear_name(w)); + fprintf(stderr, "condition number = %e\n", 1.0 / rcond); + fprintf(stderr, "residual norm = %e\n", rnorm); + fprintf(stderr, "solution norm = %e\n", snorm); + + /* output L-curve */ + { + size_t i; + for (i = 0; i < nlcurve; ++i) + { + printf("%.12e %.12e %.12e\n", + gsl_vector_get(reg_param, i), + gsl_vector_get(rho, i), + gsl_vector_get(eta, i)); + } + printf("\n\n"); + } + + gsl_matrix_free(X); + gsl_vector_free(y); + gsl_multilarge_linear_free(w); + gsl_rng_free(r); + gsl_vector_free(reg_param); + gsl_vector_free(rho); + gsl_vector_free(eta); + + return 0; + } + + int + main(int argc, char *argv[]) + { + const size_t n = 50000; /* number of observations */ + const size_t p = 16; /* polynomial order + 1 */ + double lambda = 0.0; /* regularization parameter */ + gsl_vector *c_tsqr = gsl_vector_alloc(p); + gsl_vector *c_normal = gsl_vector_alloc(p); + + if (argc > 1) + lambda = atof(argv[1]); + + /* solve system with TSQR method */ + solve_system(1, gsl_multilarge_linear_tsqr, lambda, n, p, c_tsqr); + + /* solve system with Normal equations method */ + solve_system(0, gsl_multilarge_linear_normal, lambda, n, p, c_normal); + + /* output solutions */ + { + gsl_vector *v = gsl_vector_alloc(p); + double t; + + for (t = 0.0; t <= 1.0; t += 0.01) + { + double f_exact = func(t); + double f_tsqr, f_normal; + + build_row(t, v); + gsl_blas_ddot(v, c_tsqr, &f_tsqr); + gsl_blas_ddot(v, c_normal, &f_normal); + + printf("%f %e %e %e\n", t, f_exact, f_tsqr, f_normal); + } + + gsl_vector_free(v); + } + + gsl_vector_free(c_tsqr); + gsl_vector_free(c_normal); + + return 0; + } + + +File: gsl-ref.info, Node: References and Further Reading<32>, Prev: Examples<31>, Up: Linear Least-Squares Fitting + +40.9 References and Further Reading +=================================== + +A summary of formulas and techniques for least squares fitting can be +found in the “Statistics” chapter of the Annual Review of Particle +Physics prepared by the Particle Data Group, + + * `Review of Particle Properties', R.M. Barnett et al., Physical + Review D54, 1 (1996) ‘http://pdg.lbl.gov’ + +The Review of Particle Physics is available online at the website given +above. + +The tests used to prepare these routines are based on the NIST +Statistical Reference Datasets. The datasets and their documentation +are available from NIST at the following website, + +‘http://www.nist.gov/itl/div898/strd/index.html’ + +More information on Tikhonov regularization can be found in + + * Hansen, P. C. (1998), Rank-Deficient and Discrete Ill-Posed + Problems: Numerical Aspects of Linear Inversion. SIAM Monogr. on + Mathematical Modeling and Computation, Society for Industrial and + Applied Mathematics + + * M. Rezghi and S. M. Hosseini (2009), A new variant of L-curve for + Tikhonov regularization, Journal of Computational and Applied + Mathematics, Volume 231, Issue 2, pages 914-924. + +The GSL implementation of robust linear regression closely follows the +publications + + * DuMouchel, W. and F. O’Brien (1989), “Integrating a robust option + into a multiple regression computing environment,” Computer Science + and Statistics: Proceedings of the 21st Symposium on the Interface, + American Statistical Association + + * Street, J.O., R.J. Carroll, and D. Ruppert (1988), “A note on + computing robust regression estimates via iteratively reweighted + least squares,” The American Statistician, v. 42, pp. 152-154. + +More information about the normal equations and TSQR approach for +solving large linear least squares systems can be found in the +publications + + * Trefethen, L. N. and Bau, D. (1997), “Numerical Linear Algebra”, + SIAM. + + * Demmel, J., Grigori, L., Hoemmen, M. F., and Langou, J. + “Communication-optimal parallel and sequential QR and LU + factorizations”, UCB Technical Report No. UCB/EECS-2008-89, 2008. + + +File: gsl-ref.info, Node: Nonlinear Least-Squares Fitting, Next: Basis Splines, Prev: Linear Least-Squares Fitting, Up: Top + +41 Nonlinear Least-Squares Fitting +********************************** + +This chapter describes functions for multidimensional nonlinear +least-squares fitting. There are generally two classes of algorithms +for solving nonlinear least squares problems, which fall under line +search methods and trust region methods. GSL currently implements only +trust region methods and provides the user with full access to +intermediate steps of the iteration. The user also has the ability to +tune a number of parameters which affect low-level aspects of the +algorithm which can help to accelerate convergence for the specific +problem at hand. GSL provides two separate interfaces for nonlinear +least squares fitting. The first is designed for small to moderate +sized problems, and the second is designed for very large problems, +which may or may not have significant sparse structure. + +The header file ‘gsl_multifit_nlinear.h’ contains prototypes for the +multidimensional nonlinear fitting functions and related declarations +relating to the small to moderate sized systems. + +The header file ‘gsl_multilarge_nlinear.h’ contains prototypes for the +multidimensional nonlinear fitting functions and related declarations +relating to large systems. + +* Menu: + +* Overview: Overview<6>. +* Solving the Trust Region Subproblem (TRS): Solving the Trust Region Subproblem TRS. +* Weighted Nonlinear Least-Squares:: +* Tunable Parameters:: +* Initializing the Solver: Initializing the Solver<3>. +* Providing the Function to be Minimized:: +* Iteration: Iteration<5>. +* Testing for Convergence:: +* High Level Driver:: +* Covariance matrix of best fit parameters:: +* Troubleshooting: Troubleshooting<2>. +* Examples: Examples<32>. +* References and Further Reading: References and Further Reading<33>. + + +File: gsl-ref.info, Node: Overview<6>, Next: Solving the Trust Region Subproblem TRS, Up: Nonlinear Least-Squares Fitting + +41.1 Overview +============= + +The problem of multidimensional nonlinear least-squares fitting requires +the minimization of the squared residuals of n functions, f_i, in p +parameters, x_i, + + \Phi(x) = (1/2) || f(x) ||^2 + = (1/2) \sum_{i=1}^{n} f_i(x_1, ..., x_p)^2 + +In trust region methods, the objective (or cost) function \Phi(x) is +approximated by a model function m_k(\delta) in the vicinity of some +point x_k. The model function is often simply a second order Taylor +series expansion around the point x_k, ie: + + \Phi(x_k + \delta) ~=~ m_k(\delta) = \Phi(x_k) + g_k^T \delta + 1/2 \delta^T B_k \delta + +where g_k = \nabla \Phi(x_k) = J^T f is the gradient vector at the point +x_k, B_k = \nabla^2 \Phi(x_k) is the Hessian matrix at x_k, or some +approximation to it, and J is the n-by-p Jacobian matrix + + J_{ij} = d f_i / d x_j + +In order to find the next step \delta, we minimize the model function +m_k(\delta), but search for solutions only within a region where we +trust that m_k(\delta) is a good approximation to the objective function +\Phi(x_k + \delta). In other words, we seek a solution of the trust +region subproblem (TRS) + + \min_(\delta \in R^p) m_k(\delta), s.t. || D_k \delta || <= \Delta_k + +where \Delta_k > 0 is the trust region radius and D_k is a scaling +matrix. If D_k = I, then the trust region is a ball of radius \Delta_k +centered at x_k. In some applications, the parameter vector x may have +widely different scales. For example, one parameter might be a +temperature on the order of 10^3 K, while another might be a length on +the order of 10^{-6} m. In such cases, a spherical trust region may not +be the best choice, since if \Phi changes rapidly along directions with +one scale, and more slowly along directions with a different scale, the +model function m_k may be a poor approximation to \Phi along the rapidly +changing directions. In such problems, it may be best to use an +elliptical trust region, by setting D_k to a diagonal matrix whose +entries are designed so that the scaled step D_k \delta has entries of +approximately the same order of magnitude. + +The trust region subproblem above normally amounts to solving a linear +least squares system (or multiple systems) for the step \delta. Once +\delta is computed, it is checked whether or not it reduces the +objective function \Phi(x). A useful statistic for this is to look at +the ratio + + \rho_k = ( \Phi(x_k) - \Phi(x_k + \delta_k) / ( m_k(0) - m_k(\delta_k) ) + +where the numerator is the actual reduction of the objective function +due to the step \delta_k, and the denominator is the predicted reduction +due to the model m_k. If \rho_k is negative, it means that the step +\delta_k increased the objective function and so it is rejected. If +\rho_k is positive, then we have found a step which reduced the +objective function and it is accepted. Furthermore, if \rho_k is close +to 1, then this indicates that the model function is a good +approximation to the objective function in the trust region, and so on +the next iteration the trust region is enlarged in order to take more +ambitious steps. When a step is rejected, the trust region is made +smaller and the TRS is solved again. An outline for the general trust +region method used by GSL can now be given. + +`Trust Region Algorithm' + + 1. Initialize: given x_0, construct m_0(\delta), D_0 and \Delta_0 > 0 + + 2. For k = 0, 1, 2, … + + a. If converged, then stop + + b. Solve TRS for trial step \delta_k + + c. Evaluate trial step by computing \rho_k + + 1). if step is accepted, set x_{k+1} = x_k + \delta_k and increase radius, + + \Delta_{k+1} = \alpha \Delta_k + + 2). if step is rejected, set x_{k+1} = x_k and decrease radius, + + \Delta_{k+1} = {\Delta_k \over \beta}; goto 2(b) + + d. Construct m_{k+1}(\delta) and D_{k+1} + +GSL offers the user a number of different algorithms for solving the +trust region subproblem in 2(b), as well as different choices of scaling +matrices D_k and different methods of updating the trust region radius +\Delta_k. Therefore, while reasonable default methods are provided, the +user has a lot of control to fine-tune the various steps of the +algorithm for their specific problem. + + +File: gsl-ref.info, Node: Solving the Trust Region Subproblem TRS, Next: Weighted Nonlinear Least-Squares, Prev: Overview<6>, Up: Nonlinear Least-Squares Fitting + +41.2 Solving the Trust Region Subproblem (TRS) +============================================== + +Below we describe the methods available for solving the trust region +subproblem. The methods available provide either exact or approximate +solutions to the trust region subproblem. In all algorithms below, the +Hessian matrix B_k is approximated as B_k \approx J_k^T J_k, where J_k = +J(x_k). In all methods, the solution of the TRS involves solving a +linear least squares system involving the Jacobian matrix. For small to +moderate sized problems (‘gsl_multifit_nlinear’ interface), this is +accomplished by factoring the full Jacobian matrix, which is provided by +the user, with the Cholesky, QR, or SVD decompositions. For large +systems (‘gsl_multilarge_nlinear’ interface), the user has two choices. +One is to solve the system iteratively, without needing to store the +full Jacobian matrix in memory. With this method, the user must provide +a routine to calculate the matrix-vector products J u or J^T u for a +given vector u. This iterative method is particularly useful for +systems where the Jacobian has sparse structure, since forming +matrix-vector products can be done cheaply. The second option for large +systems involves forming the normal equations matrix J^T J and then +factoring it using a Cholesky decomposition. The normal equations +matrix is p-by-p, typically much smaller than the full n-by-p Jacobian, +and can usually be stored in memory even if the full Jacobian matrix +cannot. This option is useful for large, dense systems, or if the +iterative method has difficulty converging. + +* Menu: + +* Levenberg-Marquardt:: +* Levenberg-Marquardt with Geodesic Acceleration:: +* Dogleg:: +* Double Dogleg:: +* Two Dimensional Subspace:: +* Steihaug-Toint Conjugate Gradient:: + + +File: gsl-ref.info, Node: Levenberg-Marquardt, Next: Levenberg-Marquardt with Geodesic Acceleration, Up: Solving the Trust Region Subproblem TRS + +41.2.1 Levenberg-Marquardt +-------------------------- + +There is a theorem which states that if \delta_k is a solution to the +trust region subproblem given above, then there exists \mu_k \ge 0 such +that + + ( B_k + \mu_k D_k^T D_k ) \delta_k = -g_k + +with \mu_k (\Delta_k - ||D_k \delta_k||) = 0. This forms the basis of +the Levenberg-Marquardt algorithm, which controls the trust region size +by adjusting the parameter \mu_k rather than the radius \Delta_k +directly. For each radius \Delta_k, there is a unique parameter \mu_k +which solves the TRS, and they have an inverse relationship, so that +large values of \mu_k correspond to smaller trust regions, while small +values of \mu_k correspond to larger trust regions. + +With the approximation B_k \approx J_k^T J_k, on each iteration, in +order to calculate the step \delta_k, the following linear least squares +problem is solved: + + [J_k; sqrt(mu_k) D_k] \delta_k = - [f_k; 0] + +If the step \delta_k is accepted, then \mu_k is decreased on the next +iteration in order to take a larger step, otherwise it is increased to +take a smaller step. The Levenberg-Marquardt algorithm provides an +exact solution of the trust region subproblem, but typically has a +higher computational cost per iteration than the approximate methods +discussed below, since it may need to solve the least squares system +above several times for different values of \mu_k. + + +File: gsl-ref.info, Node: Levenberg-Marquardt with Geodesic Acceleration, Next: Dogleg, Prev: Levenberg-Marquardt, Up: Solving the Trust Region Subproblem TRS + +41.2.2 Levenberg-Marquardt with Geodesic Acceleration +----------------------------------------------------- + +This method applies a so-called geodesic acceleration correction to the +standard Levenberg-Marquardt step \delta_k (Transtrum et al, 2011). By +interpreting \delta_k as a first order step along a geodesic in the +model parameter space (ie: a velocity \delta_k = v_k), the geodesic +acceleration a_k is a second order correction along the geodesic which +is determined by solving the linear least squares system + + [J_k; sqrt(mu_k) D_k] a_k = - [f_vv(x_k); 0] + +where f_{vv} is the second directional derivative of the residual vector +in the velocity direction v, f_{vv}(x) = D_v^2 f = \sum_{\alpha\beta} +v_{\alpha} v_{\beta} \partial_{\alpha} \partial_{\beta} f(x), where +\alpha and \beta are summed over the p parameters. The new total step +is then \delta_k' = v_k + {1 \over 2}a_k. The second order correction +a_k can be calculated with a modest additional cost, and has been shown +to dramatically reduce the number of iterations (and expensive Jacobian +evaluations) required to reach convergence on a variety of different +problems. In order to utilize the geodesic acceleration, the user must +supply a function which provides the second directional derivative +vector f_{vv}(x), or alternatively the library can use a finite +difference method to estimate this vector with one additional function +evaluation of f(x + h v) where h is a tunable step size (see the ‘h_fvv’ +parameter description). + + +File: gsl-ref.info, Node: Dogleg, Next: Double Dogleg, Prev: Levenberg-Marquardt with Geodesic Acceleration, Up: Solving the Trust Region Subproblem TRS + +41.2.3 Dogleg +------------- + +This is Powell’s dogleg method, which finds an approximate solution to +the trust region subproblem, by restricting its search to a piecewise +linear “dogleg” path, composed of the origin, the Cauchy point which +represents the model minimizer along the steepest descent direction, and +the Gauss-Newton point, which is the overall minimizer of the +unconstrained model. The Gauss-Newton step is calculated by solving + + J_k \delta_{gn} = -f_k + +which is the main computational task for each iteration, but only needs +to be performed once per iteration. If the Gauss-Newton point is inside +the trust region, it is selected as the step. If it is outside, the +method then calculates the Cauchy point, which is located along the +gradient direction. If the Cauchy point is also outside the trust +region, the method assumes that it is still far from the minimum and so +proceeds along the gradient direction, truncating the step at the trust +region boundary. If the Cauchy point is inside the trust region, with +the Gauss-Newton point outside, the method uses a dogleg step, which is +a linear combination of the gradient direction and the Gauss-Newton +direction, stopping at the trust region boundary. + + +File: gsl-ref.info, Node: Double Dogleg, Next: Two Dimensional Subspace, Prev: Dogleg, Up: Solving the Trust Region Subproblem TRS + +41.2.4 Double Dogleg +-------------------- + +This method is an improvement over the classical dogleg algorithm, which +attempts to include information about the Gauss-Newton step while the +iteration is still far from the minimum. When the Cauchy point is +inside the trust region and the Gauss-Newton point is outside, the +method computes a scaled Gauss-Newton point and then takes a dogleg step +between the Cauchy point and the scaled Gauss-Newton point. The scaling +is calculated to ensure that the reduction in the model m_k is about the +same as the reduction provided by the Cauchy point. + + +File: gsl-ref.info, Node: Two Dimensional Subspace, Next: Steihaug-Toint Conjugate Gradient, Prev: Double Dogleg, Up: Solving the Trust Region Subproblem TRS + +41.2.5 Two Dimensional Subspace +------------------------------- + +The dogleg methods restrict the search for the TRS solution to a 1D +curve defined by the Cauchy and Gauss-Newton points. An improvement to +this is to search for a solution using the full two dimensional subspace +spanned by the Cauchy and Gauss-Newton directions. The dogleg path is +of course inside this subspace, and so this method solves the TRS at +least as accurately as the dogleg methods. Since this method searches a +larger subspace for a solution, it can converge more quickly than dogleg +on some problems. Because the subspace is only two dimensional, this +method is very efficient and the main computation per iteration is to +determine the Gauss-Newton point. + + +File: gsl-ref.info, Node: Steihaug-Toint Conjugate Gradient, Prev: Two Dimensional Subspace, Up: Solving the Trust Region Subproblem TRS + +41.2.6 Steihaug-Toint Conjugate Gradient +---------------------------------------- + +One difficulty of the dogleg methods is calculating the Gauss-Newton +step when the Jacobian matrix is singular. The Steihaug-Toint method +also computes a generalized dogleg step, but avoids solving for the +Gauss-Newton step directly, instead using an iterative conjugate +gradient algorithm. This method performs well at points where the +Jacobian is singular, and is also suitable for large-scale problems +where factoring the Jacobian matrix could be prohibitively expensive. + + +File: gsl-ref.info, Node: Weighted Nonlinear Least-Squares, Next: Tunable Parameters, Prev: Solving the Trust Region Subproblem TRS, Up: Nonlinear Least-Squares Fitting + +41.3 Weighted Nonlinear Least-Squares +===================================== + +Weighted nonlinear least-squares fitting minimizes the function + + \Phi(x) = (1/2) || f(x) ||_W^2 + = (1/2) \sum_{i=1}^{n} f_i(x_1, ..., x_p)^2 + +where W = \diag(w_1,w_2,...,w_n) is the weighting matrix, and ||f||_W^2 += f^T W f. The weights w_i are commonly defined as w_i = 1/\sigma_i^2, +where \sigma_i is the error in the i-th measurement. A simple change of +variables \tilde{f} = W^{1 \over 2} f yields \Phi(x) = {1 \over 2} +||\tilde{f}||^2, which is in the same form as the unweighted case. The +user can either perform this transform directly on their function +residuals and Jacobian, or use the *note gsl_multifit_nlinear_winit(): +b49. interface which automatically performs the correct scaling. To +manually perform this transformation, the residuals and Jacobian should +be modified according to + + f~_i = f_i / \sigma_i + J~_ij = 1 / \sigma_i df_i/dx_j + +For large systems, the user must perform their own weighting. + + +File: gsl-ref.info, Node: Tunable Parameters, Next: Initializing the Solver<3>, Prev: Weighted Nonlinear Least-Squares, Up: Nonlinear Least-Squares Fitting + +41.4 Tunable Parameters +======================= + +The user can tune nearly all aspects of the iteration at allocation +time. For the ‘gsl_multifit_nlinear’ interface, the user may modify the +*note gsl_multifit_nlinear_parameters: b4c. structure, which is defined +as follows: + + -- Type: gsl_multifit_nlinear_parameters + + typedef struct + { + const gsl_multifit_nlinear_trs *trs; /* trust region subproblem method */ + const gsl_multifit_nlinear_scale *scale; /* scaling method */ + const gsl_multifit_nlinear_solver *solver; /* solver method */ + gsl_multifit_nlinear_fdtype fdtype; /* finite difference method */ + double factor_up; /* factor for increasing trust radius */ + double factor_down; /* factor for decreasing trust radius */ + double avmax; /* max allowed |a|/|v| */ + double h_df; /* step size for finite difference Jacobian */ + double h_fvv; /* step size for finite difference fvv */ + } gsl_multifit_nlinear_parameters; + +For the ‘gsl_multilarge_nlinear’ interface, the user may modify the +*note gsl_multilarge_nlinear_parameters: b4d. structure, which is +defined as follows: + + -- Type: gsl_multilarge_nlinear_parameters + + typedef struct + { + const gsl_multilarge_nlinear_trs *trs; /* trust region subproblem method */ + const gsl_multilarge_nlinear_scale *scale; /* scaling method */ + const gsl_multilarge_nlinear_solver *solver; /* solver method */ + gsl_multilarge_nlinear_fdtype fdtype; /* finite difference method */ + double factor_up; /* factor for increasing trust radius */ + double factor_down; /* factor for decreasing trust radius */ + double avmax; /* max allowed |a|/|v| */ + double h_df; /* step size for finite difference Jacobian */ + double h_fvv; /* step size for finite difference fvv */ + size_t max_iter; /* maximum iterations for trs method */ + double tol; /* tolerance for solving trs */ + } gsl_multilarge_nlinear_parameters; + +Each of these parameters is discussed in further detail below. + + -- Type: gsl_multifit_nlinear_trs + -- Type: gsl_multilarge_nlinear_trs + + The parameter ‘trs’ determines the method used to solve the trust + region subproblem, and may be selected from the following choices, + + -- Variable: gsl_multifit_nlinear_trs_lm + -- Variable: gsl_multilarge_nlinear_trs_lm + + This selects the Levenberg-Marquardt algorithm. + + -- Variable: gsl_multifit_nlinear_trs_lmaccel + -- Variable: gsl_multilarge_nlinear_trs_lmaccel + + This selects the Levenberg-Marquardt algorithm with geodesic + acceleration. + + -- Variable: gsl_multifit_nlinear_trs_dogleg + -- Variable: gsl_multilarge_nlinear_trs_dogleg + + This selects the dogleg algorithm. + + -- Variable: gsl_multifit_nlinear_trs_ddogleg + -- Variable: gsl_multilarge_nlinear_trs_ddogleg + + This selects the double dogleg algorithm. + + -- Variable: gsl_multifit_nlinear_trs_subspace2D + -- Variable: gsl_multilarge_nlinear_trs_subspace2D + + This selects the 2D subspace algorithm. + + -- Variable: gsl_multilarge_nlinear_trs_cgst + + This selects the Steihaug-Toint conjugate gradient algorithm. + This method is available only for large systems. + + -- Type: gsl_multifit_nlinear_scale + -- Type: gsl_multilarge_nlinear_scale + + The parameter ‘scale’ determines the diagonal scaling matrix D and + may be selected from the following choices, + + -- Variable: gsl_multifit_nlinear_scale_more + -- Variable: gsl_multilarge_nlinear_scale_more + + This damping strategy was suggested by Moré, and corresponds + to D^T D = \max(\diag(J^T J)), in other words the maximum + elements of \diag(J^T J) encountered thus far in the + iteration. This choice of D makes the problem + scale-invariant, so that if the model parameters x_i are each + scaled by an arbitrary constant, \tilde{x}_i = a_i x_i, then + the sequence of iterates produced by the algorithm would be + unchanged. This method can work very well in cases where the + model parameters have widely different scales (ie: if some + parameters are measured in nanometers, while others are + measured in degrees Kelvin). This strategy has been proven + effective on a large class of problems and so it is the + library default, but it may not be the best choice for all + problems. + + -- Variable: gsl_multifit_nlinear_scale_levenberg + -- Variable: gsl_multilarge_nlinear_scale_levenberg + + This damping strategy was originally suggested by Levenberg, + and corresponds to D^T D = I. This method has also proven + effective on a large class of problems, but is not + scale-invariant. However, some authors (e.g. Transtrum and + Sethna 2012) argue that this choice is better for problems + which are susceptible to parameter evaporation (ie: parameters + go to infinity) + + -- Variable: gsl_multifit_nlinear_scale_marquardt + -- Variable: gsl_multilarge_nlinear_scale_marquardt + + This damping strategy was suggested by Marquardt, and + corresponds to D^T D = \diag(J^T J). This method is + scale-invariant, but it is generally considered inferior to + both the Levenberg and Moré strategies, though may work well + on certain classes of problems. + + -- Type: gsl_multifit_nlinear_solver + -- Type: gsl_multilarge_nlinear_solver + + Solving the trust region subproblem on each iteration almost always + requires the solution of the following linear least squares system + + [J; sqrt(mu) D] \delta = - [f; 0] + + The ‘solver’ parameter determines how the system is solved and can + be selected from the following choices: + + -- Variable: gsl_multifit_nlinear_solver_qr + + This method solves the system using a rank revealing QR + decomposition of the Jacobian J. This method will produce + reliable solutions in cases where the Jacobian is rank + deficient or near-singular but does require about twice as + many operations as the Cholesky method discussed below. + + -- Variable: gsl_multifit_nlinear_solver_cholesky + -- Variable: gsl_multilarge_nlinear_solver_cholesky + + This method solves the alternate normal equations problem + + ( J^T J + \mu D^T D ) \delta = -J^T f + + by using a Cholesky decomposition of the matrix J^T J + \mu + D^T D. This method is faster than the QR approach, however it + is susceptible to numerical instabilities if the Jacobian + matrix is rank deficient or near-singular. In these cases, an + attempt is made to reduce the condition number of the matrix + using Jacobi preconditioning, but for highly ill-conditioned + problems the QR approach is better. If it is known that the + Jacobian matrix is well conditioned, this method is accurate + and will perform faster than the QR approach. + + -- Variable: gsl_multifit_nlinear_solver_svd + + This method solves the system using a singular value + decomposition of the Jacobian J. This method will produce the + most reliable solutions for ill-conditioned Jacobians but is + also the slowest solver method. + + -- Type: gsl_multifit_nlinear_fdtype + + The parameter ‘fdtype’ specifies whether to use forward or centered + differences when approximating the Jacobian. This is only used + when an analytic Jacobian is not provided to the solver. This + parameter may be set to one of the following choices. + + -- Macro: GSL_MULTIFIT_NLINEAR_FWDIFF + + This specifies a forward finite difference to approximate the + Jacobian matrix. The Jacobian matrix will be calculated as + + J_ij = 1 / \Delta_j ( f_i(x + \Delta_j e_j) - f_i(x) ) + + where \Delta_j = h |x_j| and e_j is the standard j-th + Cartesian unit basis vector so that x + \Delta_j e_j + represents a small (forward) perturbation of the j-th + parameter by an amount \Delta_j. The perturbation \Delta_j is + proportional to the current value |x_j| which helps to + calculate an accurate Jacobian when the various parameters + have different scale sizes. The value of h is specified by + the ‘h_df’ parameter. The accuracy of this method is O(h), + and evaluating this matrix requires an additional p function + evaluations. + + -- Macro: GSL_MULTIFIT_NLINEAR_CTRDIFF + + This specifies a centered finite difference to approximate the + Jacobian matrix. The Jacobian matrix will be calculated as + + J_ij = 1 / \Delta_j ( f_i(x + 1/2 \Delta_j e_j) - f_i(x - 1/2 \Delta_j e_j) ) + + See above for a description of \Delta_j. The accuracy of this + method is O(h^2), but evaluating this matrix requires an + additional 2p function evaluations. + +‘double factor_up’ + +When a step is accepted, the trust region radius will be increased by +this factor. The default value is 3. + +‘double factor_down’ + +When a step is rejected, the trust region radius will be decreased by +this factor. The default value is 2. + +‘double avmax’ + +When using geodesic acceleration to solve a nonlinear least squares +problem, an important parameter to monitor is the ratio of the +acceleration term to the velocity term, + + |a| / |v| + +If this ratio is small, it means the acceleration correction is +contributing very little to the step. This could be because the problem +is not “nonlinear” enough to benefit from the acceleration. If the +ratio is large (> 1) it means that the acceleration is larger than the +velocity, which shouldn’t happen since the step represents a truncated +series and so the second order term a should be smaller than the first +order term v to guarantee convergence. Therefore any steps with a ratio +larger than the parameter ‘avmax’ are rejected. ‘avmax’ is set to 0.75 +by default. For problems which experience difficulty converging, this +threshold could be lowered. + +‘double h_df’ + +This parameter specifies the step size for approximating the Jacobian +matrix with finite differences. It is set to \sqrt{\epsilon} by +default, where \epsilon is ‘GSL_DBL_EPSILON’. + +‘double h_fvv’ + +When using geodesic acceleration, the user must either supply a function +to calculate f_{vv}(x) or the library can estimate this second +directional derivative using a finite difference method. When using +finite differences, the library must calculate f(x + h v) where h +represents a small step in the velocity direction. The parameter +‘h_fvv’ defines this step size and is set to 0.02 by default. + + +File: gsl-ref.info, Node: Initializing the Solver<3>, Next: Providing the Function to be Minimized, Prev: Tunable Parameters, Up: Nonlinear Least-Squares Fitting + +41.5 Initializing the Solver +============================ + + -- Type: gsl_multifit_nlinear_type + + This structure specifies the type of algorithm which will be used + to solve a nonlinear least squares problem. It may be selected + from the following choices, + + -- Variable: gsl_multifit_nlinear_trust + + This specifies a trust region method. It is currently the + only implemented nonlinear least squares method. + + -- Function: gsl_multifit_nlinear_workspace * + gsl_multifit_nlinear_alloc (const gsl_multifit_nlinear_type + * T, const gsl_multifit_nlinear_parameters * params, const + size_t n, const size_t p) + -- Function: gsl_multilarge_nlinear_workspace * + gsl_multilarge_nlinear_alloc (const + gsl_multilarge_nlinear_type * T, const + gsl_multilarge_nlinear_parameters * params, const size_t n, + const size_t p) + + These functions return a pointer to a newly allocated instance of a + derivative solver of type ‘T’ for ‘n’ observations and ‘p’ + parameters. The ‘params’ input specifies a tunable set of + parameters which will affect important details in each iteration of + the trust region subproblem algorithm. It is recommended to start + with the suggested default parameters (see *note + gsl_multifit_nlinear_default_parameters(): b71. and *note + gsl_multilarge_nlinear_default_parameters(): b72.) and then tune + the parameters once the code is working correctly. See *note + Tunable Parameters: b4a. for descriptions of the various + parameters. For example, the following code creates an instance of + a Levenberg-Marquardt solver for 100 data points and 3 parameters, + using suggested defaults: + + const gsl_multifit_nlinear_type * T = gsl_multifit_nlinear_trust; + gsl_multifit_nlinear_parameters params = gsl_multifit_nlinear_default_parameters(); + gsl_multifit_nlinear_workspace * w = gsl_multifit_nlinear_alloc (T, ¶ms, 100, 3); + + The number of observations ‘n’ must be greater than or equal to + parameters ‘p’. + + If there is insufficient memory to create the solver then the + function returns a null pointer and the error handler is invoked + with an error code of *note GSL_ENOMEM: 2a. + + -- Function: gsl_multifit_nlinear_parameters + gsl_multifit_nlinear_default_parameters (void) + -- Function: gsl_multilarge_nlinear_parameters + gsl_multilarge_nlinear_default_parameters (void) + + These functions return a set of recommended default parameters for + use in solving nonlinear least squares problems. The user can tune + each parameter to improve the performance on their particular + problem, see *note Tunable Parameters: b4a. + + -- Function: int gsl_multifit_nlinear_init (const gsl_vector * x, + gsl_multifit_nlinear_fdf * fdf, gsl_multifit_nlinear_workspace + * w) + -- Function: int gsl_multifit_nlinear_winit (const gsl_vector * x, + const gsl_vector * wts, gsl_multifit_nlinear_fdf * fdf, + gsl_multifit_nlinear_workspace * w) + -- Function: int gsl_multilarge_nlinear_init (const gsl_vector * x, + gsl_multilarge_nlinear_fdf * fdf, + gsl_multilarge_nlinear_workspace * w) + + These functions initialize, or reinitialize, an existing workspace + ‘w’ to use the system ‘fdf’ and the initial guess ‘x’. See *note + Providing the Function to be Minimized: b75. for a description of + the ‘fdf’ structure. + + Optionally, a weight vector ‘wts’ can be given to perform a + weighted nonlinear regression. Here, the weighting matrix is W = + \diag(w_1,w_2,...,w_n). + + -- Function: void gsl_multifit_nlinear_free + (gsl_multifit_nlinear_workspace * w) + -- Function: void gsl_multilarge_nlinear_free + (gsl_multilarge_nlinear_workspace * w) + + These functions free all the memory associated with the workspace + ‘w’. + + -- Function: const char * gsl_multifit_nlinear_name (const + gsl_multifit_nlinear_workspace * w) + -- Function: const char * gsl_multilarge_nlinear_name (const + gsl_multilarge_nlinear_workspace * w) + + These functions return a pointer to the name of the solver. For + example: + + printf ("w is a '%s' solver\n", gsl_multifit_nlinear_name (w)); + + would print something like ‘w is a 'trust-region' solver’. + + -- Function: const char * gsl_multifit_nlinear_trs_name (const + gsl_multifit_nlinear_workspace * w) + -- Function: const char * gsl_multilarge_nlinear_trs_name (const + gsl_multilarge_nlinear_workspace * w) + + These functions return a pointer to the name of the trust region + subproblem method. For example: + + printf ("w is a '%s' solver\n", gsl_multifit_nlinear_trs_name (w)); + + would print something like ‘w is a 'levenberg-marquardt' solver’. + + +File: gsl-ref.info, Node: Providing the Function to be Minimized, Next: Iteration<5>, Prev: Initializing the Solver<3>, Up: Nonlinear Least-Squares Fitting + +41.6 Providing the Function to be Minimized +=========================================== + +The user must provide n functions of p variables for the minimization +algorithm to operate on. In order to allow for arbitrary parameters the +functions are defined by the following data types: + + -- Type: gsl_multifit_nlinear_fdf + + This data type defines a general system of functions with arbitrary + parameters, the corresponding Jacobian matrix of derivatives, and + optionally the second directional derivative of the functions for + geodesic acceleration. + + ‘int (* f) (const gsl_vector * x, void * params, gsl_vector * f)’ + + This function should store the n components of the vector f(x) + in ‘f’ for argument ‘x’ and arbitrary parameters ‘params’, + returning an appropriate error code if the function cannot be + computed. + + ‘int (* df) (const gsl_vector * x, void * params, gsl_matrix * J)’ + + This function should store the ‘n’-by-‘p’ matrix result + + J_ij = d f_i(x) / d x_j + + in ‘J’ for argument ‘x’ and arbitrary parameters ‘params’, + returning an appropriate error code if the matrix cannot be + computed. If an analytic Jacobian is unavailable, or too + expensive to compute, this function pointer may be set to + ‘NULL’, in which case the Jacobian will be internally computed + using finite difference approximations of the function ‘f’. + + ‘int (* fvv) (const gsl_vector * x, const gsl_vector * v, void * + params, gsl_vector * fvv)’ + + When geodesic acceleration is enabled, this function should + store the n components of the vector f_{vv}(x) = + \sum_{\alpha\beta} v_{\alpha} v_{\beta} {\partial \over + \partial x_{\alpha}} {\partial \over \partial x_{\beta}} f(x), + representing second directional derivatives of the function to + be minimized, into the output ‘fvv’. The parameter vector is + provided in ‘x’ and the velocity vector is provided in ‘v’, + both of which have p components. The arbitrary parameters are + given in ‘params’. If analytic expressions for f_{vv}(x) are + unavailable or too difficult to compute, this function pointer + may be set to ‘NULL’, in which case f_{vv}(x) will be computed + internally using a finite difference approximation. + + ‘size_t n’ + + the number of functions, i.e. the number of components of the + vector ‘f’. + + ‘size_t p’ + + the number of independent variables, i.e. the number of + components of the vector ‘x’. + + ‘void * params’ + + a pointer to the arbitrary parameters of the function. + + ‘size_t nevalf’ + + This does not need to be set by the user. It counts the + number of function evaluations and is initialized by the + ‘_init’ function. + + ‘size_t nevaldf’ + + This does not need to be set by the user. It counts the + number of Jacobian evaluations and is initialized by the + ‘_init’ function. + + ‘size_t nevalfvv’ + + This does not need to be set by the user. It counts the + number of f_{vv}(x) evaluations and is initialized by the + ‘_init’ function. + + -- Type: gsl_multilarge_nlinear_fdf + + This data type defines a general system of functions with arbitrary + parameters, a function to compute J u or J^T u for a given vector + u, the normal equations matrix J^T J, and optionally the second + directional derivative of the functions for geodesic acceleration. + + ‘int (* f) (const gsl_vector * x, void * params, gsl_vector * f)’ + + This function should store the n components of the vector f(x) + in ‘f’ for argument ‘x’ and arbitrary parameters ‘params’, + returning an appropriate error code if the function cannot be + computed. + + ‘int (* df) (CBLAS_TRANSPOSE_t TransJ, const gsl_vector * x, const + gsl_vector * u, void * params, gsl_vector * v, gsl_matrix * JTJ)’ + + If ‘TransJ’ is equal to ‘CblasNoTrans’, then this function + should compute the matrix-vector product J u and store the + result in ‘v’. If ‘TransJ’ is equal to ‘CblasTrans’, then + this function should compute the matrix-vector product J^T u + and store the result in ‘v’. Additionally, the normal + equations matrix J^T J should be stored in the lower half of + ‘JTJ’. The input matrix ‘JTJ’ could be set to ‘NULL’, for + example by iterative methods which do not require this matrix, + so the user should check for this prior to constructing the + matrix. The input ‘params’ contains the arbitrary parameters. + + ‘int (* fvv) (const gsl_vector * x, const gsl_vector * v, void * + params, gsl_vector * fvv)’ + + When geodesic acceleration is enabled, this function should + store the n components of the vector f_{vv}(x) = + \sum_{\alpha\beta} v_{\alpha} v_{\beta} {\partial \over + \partial x_{\alpha}} {\partial \over \partial x_{\beta}} f(x), + representing second directional derivatives of the function to + be minimized, into the output ‘fvv’. The parameter vector is + provided in ‘x’ and the velocity vector is provided in ‘v’, + both of which have p components. The arbitrary parameters are + given in ‘params’. If analytic expressions for f_{vv}(x) are + unavailable or too difficult to compute, this function pointer + may be set to ‘NULL’, in which case f_{vv}(x) will be computed + internally using a finite difference approximation. + + ‘size_t n’ + + the number of functions, i.e. the number of components of the + vector ‘f’. + + ‘size_t p’ + + the number of independent variables, i.e. the number of + components of the vector ‘x’. + + ‘void * params’ + + a pointer to the arbitrary parameters of the function. + + ‘size_t nevalf’ + + This does not need to be set by the user. It counts the + number of function evaluations and is initialized by the + ‘_init’ function. + + ‘size_t nevaldfu’ + + This does not need to be set by the user. It counts the + number of Jacobian matrix-vector evaluations (J u or J^T u) + and is initialized by the ‘_init’ function. + + ‘size_t nevaldf2’ + + This does not need to be set by the user. It counts the + number of J^T J evaluations and is initialized by the ‘_init’ + function. + + ‘size_t nevalfvv’ + + This does not need to be set by the user. It counts the + number of f_{vv}(x) evaluations and is initialized by the + ‘_init’ function. + +Note that when fitting a non-linear model against experimental data, the +data is passed to the functions above using the ‘params’ argument and +the trial best-fit parameters through the ‘x’ argument. + + +File: gsl-ref.info, Node: Iteration<5>, Next: Testing for Convergence, Prev: Providing the Function to be Minimized, Up: Nonlinear Least-Squares Fitting + +41.7 Iteration +============== + +The following functions drive the iteration of each algorithm. Each +function performs one iteration of the trust region method and updates +the state of the solver. + + -- Function: int gsl_multifit_nlinear_iterate + (gsl_multifit_nlinear_workspace * w) + -- Function: int gsl_multilarge_nlinear_iterate + (gsl_multilarge_nlinear_workspace * w) + + These functions perform a single iteration of the solver ‘w’. If + the iteration encounters an unexpected problem then an error code + will be returned. The solver workspace maintains a current + estimate of the best-fit parameters at all times. + +The solver workspace ‘w’ contains the following entries, which can be +used to track the progress of the solution: + +‘gsl_vector * x’ + + The current position, length p. + +‘gsl_vector * f’ + + The function residual vector at the current position f(x), length + n. + +‘gsl_matrix * J’ + + The Jacobian matrix at the current position J(x), size n-by-p (only + for ‘gsl_multifit_nlinear’ interface). + +‘gsl_vector * dx’ + + The difference between the current position and the previous + position, i.e. the last step \delta, taken as a vector, length p. + +These quantities can be accessed with the following functions, + + -- Function: gsl_vector * gsl_multifit_nlinear_position (const + gsl_multifit_nlinear_workspace * w) + -- Function: gsl_vector * gsl_multilarge_nlinear_position (const + gsl_multilarge_nlinear_workspace * w) + + These functions return the current position x (i.e. best-fit + parameters) of the solver ‘w’. + + -- Function: gsl_vector * gsl_multifit_nlinear_residual (const + gsl_multifit_nlinear_workspace * w) + -- Function: gsl_vector * gsl_multilarge_nlinear_residual (const + gsl_multilarge_nlinear_workspace * w) + + These functions return the current residual vector f(x) of the + solver ‘w’. For weighted systems, the residual vector includes the + weighting factor \sqrt{W}. + + -- Function: gsl_matrix * gsl_multifit_nlinear_jac (const + gsl_multifit_nlinear_workspace * w) + + This function returns a pointer to the n-by-p Jacobian matrix for + the current iteration of the solver ‘w’. This function is + available only for the ‘gsl_multifit_nlinear’ interface. + + -- Function: size_t gsl_multifit_nlinear_niter (const + gsl_multifit_nlinear_workspace * w) + -- Function: size_t gsl_multilarge_nlinear_niter (const + gsl_multilarge_nlinear_workspace * w) + + These functions return the number of iterations performed so far. + The iteration counter is updated on each call to the ‘_iterate’ + functions above, and reset to 0 in the ‘_init’ functions. + + -- Function: int gsl_multifit_nlinear_rcond (double * rcond, const + gsl_multifit_nlinear_workspace * w) + -- Function: int gsl_multilarge_nlinear_rcond (double * rcond, const + gsl_multilarge_nlinear_workspace * w) + + This function estimates the reciprocal condition number of the + Jacobian matrix at the current position x and stores it in ‘rcond’. + The computed value is only an estimate to give the user a guideline + as to the conditioning of their particular problem. Its + calculation is based on which factorization method is used + (Cholesky, QR, or SVD). + + * For the Cholesky solver, the matrix J^T J is factored at each + iteration. Therefore this function will estimate the 1-norm + condition number rcond^2 = 1/(||J^T J||_1 \cdot ||(J^T + J)^{-1}||_1) + + * For the QR solver, J is factored as J = Q R at each iteration. + For simplicity, this function calculates the 1-norm + conditioning of only the R factor, rcond = 1 / (||R||_1 \cdot + ||R^{-1}||_1). This can be computed efficiently since R is + upper triangular. + + * For the SVD solver, in order to efficiently solve the trust + region subproblem, the matrix which is factored is J D^{-1}, + instead of J itself. The resulting singular values are used + to provide the 2-norm reciprocal condition number, as rcond = + \sigma_{min} / \sigma_{max}. Note that when using Moré + scaling, D \ne I and the resulting ‘rcond’ estimate may be + significantly different from the true ‘rcond’ of J itself. + + -- Function: double gsl_multifit_nlinear_avratio (const + gsl_multifit_nlinear_workspace * w) + -- Function: double gsl_multilarge_nlinear_avratio (const + gsl_multilarge_nlinear_workspace * w) + + This function returns the current ratio |a| / |v| of the + acceleration correction term to the velocity step term. The + acceleration term is computed only by the *note + gsl_multifit_nlinear_trs_lmaccel: b52. and *note + gsl_multilarge_nlinear_trs_lmaccel: b53. methods, so this ratio + will be zero for other TRS methods. + + +File: gsl-ref.info, Node: Testing for Convergence, Next: High Level Driver, Prev: Iteration<5>, Up: Nonlinear Least-Squares Fitting + +41.8 Testing for Convergence +============================ + +A minimization procedure should stop when one of the following +conditions is true: + + * A minimum has been found to within the user-specified precision. + + * A user-specified maximum number of iterations has been reached. + + * An error has occurred. + +The handling of these conditions is under user control. The functions +below allow the user to test the current estimate of the best-fit +parameters in several standard ways. + + -- Function: int gsl_multifit_nlinear_test (const double xtol, const + double gtol, const double ftol, int * info, const + gsl_multifit_nlinear_workspace * w) + -- Function: int gsl_multilarge_nlinear_test (const double xtol, const + double gtol, const double ftol, int * info, const + gsl_multilarge_nlinear_workspace * w) + + These functions test for convergence of the minimization method + using the following criteria: + + * Testing for a small step size relative to the current + parameter vector + + |\delta_i| \le xtol (|x_i| + xtol) + + for each 0 <= i < p. Each element of the step vector \delta + is tested individually in case the different parameters have + widely different scales. Adding ‘xtol’ to |x_i| helps the + test avoid breaking down in situations where the true solution + value x_i = 0. If this test succeeds, ‘info’ is set to 1 and + the function returns ‘GSL_SUCCESS’. + + A general guideline for selecting the step tolerance is to + choose xtol = 10^{-d} where d is the number of accurate + decimal digits desired in the solution x. See Dennis and + Schnabel for more information. + + * Testing for a small gradient (g = \nabla \Phi(x) = J^T f) + indicating a local function minimum: + + ||g||_inf <= gtol + + This expression tests whether the ratio (\nabla \Phi)_i x_i / + \Phi is small. Testing this scaled gradient is a better than + \nabla \Phi alone since it is a dimensionless quantity and so + independent of the scale of the problem. The ‘max’ arguments + help ensure the test doesn’t break down in regions where x_i + or \Phi(x) are close to 0. If this test succeeds, ‘info’ is + set to 2 and the function returns ‘GSL_SUCCESS’. + + A general guideline for choosing the gradient tolerance is to + set ‘gtol = GSL_DBL_EPSILON^(1/3)’. See Dennis and Schnabel + for more information. + + If none of the tests succeed, ‘info’ is set to 0 and the function + returns ‘GSL_CONTINUE’, indicating further iterations are required. + + +File: gsl-ref.info, Node: High Level Driver, Next: Covariance matrix of best fit parameters, Prev: Testing for Convergence, Up: Nonlinear Least-Squares Fitting + +41.9 High Level Driver +====================== + +These routines provide a high level wrapper that combines the iteration +and convergence testing for easy use. + + -- Function: int gsl_multifit_nlinear_driver (const size_t maxiter, + const double xtol, const double gtol, const double ftol, void + (* callback)(const size_t iter, void * params, const + gsl_multifit_linear_workspace * w), void * callback_params, + int * info, gsl_multifit_nlinear_workspace * w) + -- Function: int gsl_multilarge_nlinear_driver (const size_t maxiter, + const double xtol, const double gtol, const double ftol, void + (* callback)(const size_t iter, void * params, const + gsl_multilarge_linear_workspace * w), void * callback_params, + int * info, gsl_multilarge_nlinear_workspace * w) + + These functions iterate the nonlinear least squares solver ‘w’ for + a maximum of ‘maxiter’ iterations. After each iteration, the + system is tested for convergence with the error tolerances ‘xtol’, + ‘gtol’ and ‘ftol’. Additionally, the user may supply a callback + function ‘callback’ which is called after each iteration, so that + the user may save or print relevant quantities for each iteration. + The parameter ‘callback_params’ is passed to the ‘callback’ + function. The parameters ‘callback’ and ‘callback_params’ may be + set to ‘NULL’ to disable this feature. Upon successful + convergence, the function returns ‘GSL_SUCCESS’ and sets ‘info’ to + the reason for convergence (see *note gsl_multifit_nlinear_test(): + b8e.). If the function has not converged after ‘maxiter’ + iterations, ‘GSL_EMAXITER’ is returned. In rare cases, during an + iteration the algorithm may be unable to find a new acceptable step + \delta to take. In this case, ‘GSL_ENOPROG’ is returned indicating + no further progress can be made. If your problem is having + difficulty converging, see *note Troubleshooting: b93. for further + guidance. + + +File: gsl-ref.info, Node: Covariance matrix of best fit parameters, Next: Troubleshooting<2>, Prev: High Level Driver, Up: Nonlinear Least-Squares Fitting + +41.10 Covariance matrix of best fit parameters +============================================== + + -- Function: int gsl_multifit_nlinear_covar (const gsl_matrix * J, + const double epsrel, gsl_matrix * covar) + -- Function: int gsl_multilarge_nlinear_covar (gsl_matrix * covar, + gsl_multilarge_nlinear_workspace * w) + + This function computes the covariance matrix of best-fit parameters + using the Jacobian matrix ‘J’ and stores it in ‘covar’. The + parameter ‘epsrel’ is used to remove linear-dependent columns when + ‘J’ is rank deficient. + + The covariance matrix is given by, + + C = (J^T J)^{-1} + + or in the weighted case, + + C = (J^T W J)^{-1} + + and is computed using the factored form of the Jacobian (Cholesky, + QR, or SVD). Any columns of R which satisfy + + |R_{kk}| \leq epsrel |R_{11}| + + are considered linearly-dependent and are excluded from the + covariance matrix (the corresponding rows and columns of the + covariance matrix are set to zero). + + If the minimisation uses the weighted least-squares function f_i = + (Y(x, t_i) - y_i) / \sigma_i then the covariance matrix above gives + the statistical error on the best-fit parameters resulting from the + Gaussian errors \sigma_i on the underlying data y_i. This can be + verified from the relation \delta f = J \delta c and the fact that + the fluctuations in f from the data y_i are normalised by \sigma_i + and so satisfy + + <\delta f \delta f^T> = I + + For an unweighted least-squares function f_i = (Y(x, t_i) - y_i) + the covariance matrix above should be multiplied by the variance of + the residuals about the best-fit \sigma^2 = \sum (y_i - Y(x,t_i))^2 + / (n-p) to give the variance-covariance matrix \sigma^2 C. This + estimates the statistical error on the best-fit parameters from the + scatter of the underlying data. + + For more information about covariance matrices see *note Linear + Least-Squares Overview: ad4. + + +File: gsl-ref.info, Node: Troubleshooting<2>, Next: Examples<32>, Prev: Covariance matrix of best fit parameters, Up: Nonlinear Least-Squares Fitting + +41.11 Troubleshooting +===================== + +When developing a code to solve a nonlinear least squares problem, here +are a few considerations to keep in mind. + + 1. The most common difficulty is the accurate implementation of the + Jacobian matrix. If the analytic Jacobian is not properly provided + to the solver, this can hinder and many times prevent convergence + of the method. When developing a new nonlinear least squares code, + it often helps to compare the program output with the internally + computed finite difference Jacobian and the user supplied analytic + Jacobian. If there is a large difference in coefficients, it is + likely the analytic Jacobian is incorrectly implemented. + + 2. If your code is having difficulty converging, the next thing to + check is the starting point provided to the solver. The methods of + this chapter are local methods, meaning if you provide a starting + point far away from the true minimum, the method may converge to a + local minimum or not converge at all. Sometimes it is possible to + solve a linearized approximation to the nonlinear problem, and use + the linear solution as the starting point to the nonlinear problem. + + 3. If the various parameters of the coefficient vector x vary widely + in magnitude, then the problem is said to be badly scaled. The + methods of this chapter do attempt to automatically rescale the + elements of x to have roughly the same order of magnitude, but in + extreme cases this could still cause problems for convergence. In + these cases it is recommended for the user to scale their parameter + vector x so that each parameter spans roughly the same range, say + [-1,1]. The solution vector can be backscaled to recover the + original units of the problem. + + +File: gsl-ref.info, Node: Examples<32>, Next: References and Further Reading<33>, Prev: Troubleshooting<2>, Up: Nonlinear Least-Squares Fitting + +41.12 Examples +============== + +The following example programs demonstrate the nonlinear least squares +fitting capabilities. + +* Menu: + +* Exponential Fitting Example:: +* Geodesic Acceleration Example 1:: +* Geodesic Acceleration Example 2:: +* Comparing TRS Methods Example:: +* Large Nonlinear Least Squares Example:: + + +File: gsl-ref.info, Node: Exponential Fitting Example, Next: Geodesic Acceleration Example 1, Up: Examples<32> + +41.12.1 Exponential Fitting Example +----------------------------------- + +The following example program fits a weighted exponential model with +background to experimental data, Y = A \exp(-\lambda t) + b. The first +part of the program sets up the functions ‘expb_f()’ and ‘expb_df()’ to +calculate the model and its Jacobian. The appropriate fitting function +is given by, + + f_i = (A \exp(-\lambda t_i) + b) - y_i + +where we have chosen t_i = i T / (N - 1), where N is the number of data +points fitted, so that t_i \in [0, T]. The Jacobian matrix J is the +derivative of these functions with respect to the three parameters (A, +\lambda, b). It is given by, + + J_{ij} = d f_i / d x_j + +where x_0 = A, x_1 = \lambda and x_2 = b. The i-th row of the Jacobian +is therefore + + J(i,:) = [ \exp(-\lambda t_i) ; -t_i A \exp(-\lambda t_i) ; 1 ] + +The main part of the program sets up a Levenberg-Marquardt solver and +some simulated random data. The data uses the known parameters +(5.0,0.1,1.0) combined with Gaussian noise (standard deviation = 0.1) +with a maximum time T = 40 and N = 100 timesteps. The initial guess for +the parameters is chosen as (1.0, 1.0, 0.0). The iteration terminates +when the relative change in x is smaller than 10^{-8}, or when the +magnitude of the gradient falls below 10^{-8}. Here are the results of +running the program: + + iter 0: A = 1.0000, lambda = 1.0000, b = 0.0000, cond(J) = inf, |f(x)| = 100.8779 + iter 1: A = 1.2692, lambda = 0.3924, b = 0.0443, cond(J) = 69.5973, |f(x)| = 97.1734 + iter 2: A = 1.6749, lambda = 0.1685, b = 0.1072, cond(J) = 29.5220, |f(x)| = 88.6636 + iter 3: A = 2.5579, lambda = 0.0544, b = 0.2552, cond(J) = 22.9334, |f(x)| = 42.7765 + iter 4: A = 3.0167, lambda = 0.0472, b = 0.3704, cond(J) = 120.2912, |f(x)| = 23.0102 + iter 5: A = 3.3590, lambda = 0.0455, b = 0.4321, cond(J) = 266.5620, |f(x)| = 16.0680 + iter 6: A = 3.6552, lambda = 0.0479, b = 0.4426, cond(J) = 343.8946, |f(x)| = 14.6421 + iter 7: A = 3.9546, lambda = 0.0532, b = 0.4897, cond(J) = 301.4985, |f(x)| = 13.5266 + iter 8: A = 4.1421, lambda = 0.0633, b = 0.6783, cond(J) = 203.9164, |f(x)| = 12.3149 + iter 9: A = 4.3752, lambda = 0.0800, b = 0.9228, cond(J) = 158.2267, |f(x)| = 11.2475 + iter 10: A = 4.6371, lambda = 0.0891, b = 0.9588, cond(J) = 136.6189, |f(x)| = 10.5457 + iter 11: A = 4.7684, lambda = 0.0937, b = 0.9860, cond(J) = 125.4740, |f(x)| = 10.4753 + iter 12: A = 4.7977, lambda = 0.0948, b = 0.9917, cond(J) = 120.1098, |f(x)| = 10.4723 + iter 13: A = 4.8006, lambda = 0.0949, b = 0.9924, cond(J) = 118.9113, |f(x)| = 10.4723 + iter 14: A = 4.8008, lambda = 0.0949, b = 0.9925, cond(J) = 118.7661, |f(x)| = 10.4723 + iter 15: A = 4.8008, lambda = 0.0949, b = 0.9925, cond(J) = 118.7550, |f(x)| = 10.4723 + iter 16: A = 4.8008, lambda = 0.0949, b = 0.9925, cond(J) = 118.7543, |f(x)| = 10.4723 + iter 17: A = 4.8008, lambda = 0.0949, b = 0.9925, cond(J) = 118.7543, |f(x)| = 10.4723 + iter 18: A = 4.8008, lambda = 0.0949, b = 0.9925, cond(J) = 118.7543, |f(x)| = 10.4723 + summary from method 'trust-region/levenberg-marquardt' + number of iterations: 18 + function evaluations: 25 + Jacobian evaluations: 19 + reason for stopping: small step size + initial |f(x)| = 100.877904 + final |f(x)| = 10.472268 + chisq/dof = 1.1306 + A = 4.80085 +/- 0.17652 + lambda = 0.09488 +/- 0.00527 + b = 0.99249 +/- 0.04419 + status = success + +The approximate values of the parameters are found correctly, and the +chi-squared value indicates a good fit (the chi-squared per degree of +freedom is approximately 1). In this case the errors on the parameters +can be estimated from the square roots of the diagonal elements of the +covariance matrix. If the chi-squared value shows a poor fit (i.e. +\chi^2/(n-p) \gg 1 then the error estimates obtained from the covariance +matrix will be too small. In the example program the error estimates +are multiplied by \sqrt{\chi^2/(n-p)} in this case, a common way of +increasing the errors for a poor fit. Note that a poor fit will result +from the use of an inappropriate model, and the scaled error estimates +may then be outside the range of validity for Gaussian errors. + +Additionally, we see that the condition number of J(x) stays reasonably +small throughout the iteration. This indicates we could safely switch +to the Cholesky solver for speed improvement, although this particular +system is too small to really benefit. + +Fig. %s shows the fitted curve with the original data. + +[image src="fit-exp.png"] + +Figure: Exponential fitted curve with data + + #include + #include + #include + #include + #include + #include + #include + #include + + #define N 100 /* number of data points to fit */ + #define TMAX (40.0) /* time variable in [0,TMAX] */ + + struct data { + size_t n; + double * t; + double * y; + }; + + int + expb_f (const gsl_vector * x, void *data, + gsl_vector * f) + { + size_t n = ((struct data *)data)->n; + double *t = ((struct data *)data)->t; + double *y = ((struct data *)data)->y; + + double A = gsl_vector_get (x, 0); + double lambda = gsl_vector_get (x, 1); + double b = gsl_vector_get (x, 2); + + size_t i; + + for (i = 0; i < n; i++) + { + /* Model Yi = A * exp(-lambda * t_i) + b */ + double Yi = A * exp (-lambda * t[i]) + b; + gsl_vector_set (f, i, Yi - y[i]); + } + + return GSL_SUCCESS; + } + + int + expb_df (const gsl_vector * x, void *data, + gsl_matrix * J) + { + size_t n = ((struct data *)data)->n; + double *t = ((struct data *)data)->t; + + double A = gsl_vector_get (x, 0); + double lambda = gsl_vector_get (x, 1); + + size_t i; + + for (i = 0; i < n; i++) + { + /* Jacobian matrix J(i,j) = dfi / dxj, */ + /* where fi = (Yi - yi)/sigma[i], */ + /* Yi = A * exp(-lambda * t_i) + b */ + /* and the xj are the parameters (A,lambda,b) */ + double e = exp(-lambda * t[i]); + gsl_matrix_set (J, i, 0, e); + gsl_matrix_set (J, i, 1, -t[i] * A * e); + gsl_matrix_set (J, i, 2, 1.0); + } + + return GSL_SUCCESS; + } + + void + callback(const size_t iter, void *params, + const gsl_multifit_nlinear_workspace *w) + { + gsl_vector *f = gsl_multifit_nlinear_residual(w); + gsl_vector *x = gsl_multifit_nlinear_position(w); + double rcond; + + /* compute reciprocal condition number of J(x) */ + gsl_multifit_nlinear_rcond(&rcond, w); + + fprintf(stderr, "iter %2zu: A = %.4f, lambda = %.4f, b = %.4f, cond(J) = %8.4f, |f(x)| = %.4f\n", + iter, + gsl_vector_get(x, 0), + gsl_vector_get(x, 1), + gsl_vector_get(x, 2), + 1.0 / rcond, + gsl_blas_dnrm2(f)); + } + + int + main (void) + { + const gsl_multifit_nlinear_type *T = gsl_multifit_nlinear_trust; + gsl_multifit_nlinear_workspace *w; + gsl_multifit_nlinear_fdf fdf; + gsl_multifit_nlinear_parameters fdf_params = + gsl_multifit_nlinear_default_parameters(); + const size_t n = N; + const size_t p = 3; + + gsl_vector *f; + gsl_matrix *J; + gsl_matrix *covar = gsl_matrix_alloc (p, p); + double t[N], y[N], weights[N]; + struct data d = { n, t, y }; + double x_init[3] = { 1.0, 1.0, 0.0 }; /* starting values */ + gsl_vector_view x = gsl_vector_view_array (x_init, p); + gsl_vector_view wts = gsl_vector_view_array(weights, n); + gsl_rng * r; + double chisq, chisq0; + int status, info; + size_t i; + + const double xtol = 1e-8; + const double gtol = 1e-8; + const double ftol = 0.0; + + gsl_rng_env_setup(); + r = gsl_rng_alloc(gsl_rng_default); + + /* define the function to be minimized */ + fdf.f = expb_f; + fdf.df = expb_df; /* set to NULL for finite-difference Jacobian */ + fdf.fvv = NULL; /* not using geodesic acceleration */ + fdf.n = n; + fdf.p = p; + fdf.params = &d; + + /* this is the data to be fitted */ + for (i = 0; i < n; i++) + { + double ti = i * TMAX / (n - 1.0); + double yi = 1.0 + 5 * exp (-0.1 * ti); + double si = 0.1 * yi; + double dy = gsl_ran_gaussian(r, si); + + t[i] = ti; + y[i] = yi + dy; + weights[i] = 1.0 / (si * si); + printf ("data: %g %g %g\n", ti, y[i], si); + }; + + /* allocate workspace with default parameters */ + w = gsl_multifit_nlinear_alloc (T, &fdf_params, n, p); + + /* initialize solver with starting point and weights */ + gsl_multifit_nlinear_winit (&x.vector, &wts.vector, &fdf, w); + + /* compute initial cost function */ + f = gsl_multifit_nlinear_residual(w); + gsl_blas_ddot(f, f, &chisq0); + + /* solve the system with a maximum of 100 iterations */ + status = gsl_multifit_nlinear_driver(100, xtol, gtol, ftol, + callback, NULL, &info, w); + + /* compute covariance of best fit parameters */ + J = gsl_multifit_nlinear_jac(w); + gsl_multifit_nlinear_covar (J, 0.0, covar); + + /* compute final cost */ + gsl_blas_ddot(f, f, &chisq); + + #define FIT(i) gsl_vector_get(w->x, i) + #define ERR(i) sqrt(gsl_matrix_get(covar,i,i)) + + fprintf(stderr, "summary from method '%s/%s'\n", + gsl_multifit_nlinear_name(w), + gsl_multifit_nlinear_trs_name(w)); + fprintf(stderr, "number of iterations: %zu\n", + gsl_multifit_nlinear_niter(w)); + fprintf(stderr, "function evaluations: %zu\n", fdf.nevalf); + fprintf(stderr, "Jacobian evaluations: %zu\n", fdf.nevaldf); + fprintf(stderr, "reason for stopping: %s\n", + (info == 1) ? "small step size" : "small gradient"); + fprintf(stderr, "initial |f(x)| = %f\n", sqrt(chisq0)); + fprintf(stderr, "final |f(x)| = %f\n", sqrt(chisq)); + + { + double dof = n - p; + double c = GSL_MAX_DBL(1, sqrt(chisq / dof)); + + fprintf(stderr, "chisq/dof = %g\n", chisq / dof); + + fprintf (stderr, "A = %.5f +/- %.5f\n", FIT(0), c*ERR(0)); + fprintf (stderr, "lambda = %.5f +/- %.5f\n", FIT(1), c*ERR(1)); + fprintf (stderr, "b = %.5f +/- %.5f\n", FIT(2), c*ERR(2)); + } + + fprintf (stderr, "status = %s\n", gsl_strerror (status)); + + gsl_multifit_nlinear_free (w); + gsl_matrix_free (covar); + gsl_rng_free (r); + + return 0; + } + + +File: gsl-ref.info, Node: Geodesic Acceleration Example 1, Next: Geodesic Acceleration Example 2, Prev: Exponential Fitting Example, Up: Examples<32> + +41.12.2 Geodesic Acceleration Example 1 +--------------------------------------- + +The following example program minimizes a modified Rosenbrock function, +which is characterized by a narrow canyon with steep walls. The +starting point is selected high on the canyon wall, so the solver must +first find the canyon bottom and then navigate to the minimum. The +problem is solved both with and without using geodesic acceleration for +comparison. The cost function is given by + + Phi(x) = 1/2 (f1^2 + f2^2) + f1 = 100 ( x2 - x1^2 ) + f2 = 1 - x1 + +The Jacobian matrix is + + J = [ -200*x1 100 ] + [ -1 0 ] + +In order to use geodesic acceleration, the user must provide the second +directional derivative of each residual in the velocity direction, D_v^2 +f_i = \sum_{\alpha\beta} v_{\alpha} v_{\beta} \partial_{\alpha} +\partial_{\beta} f_i. The velocity vector v is provided by the solver. +For this example, these derivatives are + + fvv = [ -200 v1^2 ] + [ 0 ] + +The solution of this minimization problem is + + x* = [ 1 ; 1 ] + Phi(x*) = 0 + +The program output is shown below: + + === Solving system without acceleration === + NITER = 53 + NFEV = 56 + NJEV = 54 + NAEV = 0 + initial cost = 2.250225000000e+04 + final cost = 6.674986031430e-18 + final x = (9.999999974165e-01, 9.999999948328e-01) + final cond(J) = 6.000096055094e+02 + === Solving system with acceleration === + NITER = 15 + NFEV = 17 + NJEV = 16 + NAEV = 16 + initial cost = 2.250225000000e+04 + final cost = 7.518932873279e-19 + final x = (9.999999991329e-01, 9.999999982657e-01) + final cond(J) = 6.000097233278e+02 + +[image src="nlfit2.png"] + +Figure: Paths taken by solver for Rosenbrock function + +We can see that enabling geodesic acceleration requires less than a +third of the number of Jacobian evaluations in order to locate the +minimum. The path taken by both methods is shown in Fig. %s. The +contours show the cost function \Phi(x_1,x_2). We see that both methods +quickly find the canyon bottom, but the geodesic acceleration method +navigates along the bottom to the solution with significantly fewer +iterations. + +The program is given below. + + #include + #include + #include + #include + #include + #include + + int + func_f (const gsl_vector * x, void *params, gsl_vector * f) + { + double x1 = gsl_vector_get(x, 0); + double x2 = gsl_vector_get(x, 1); + + gsl_vector_set(f, 0, 100.0 * (x2 - x1*x1)); + gsl_vector_set(f, 1, 1.0 - x1); + + return GSL_SUCCESS; + } + + int + func_df (const gsl_vector * x, void *params, gsl_matrix * J) + { + double x1 = gsl_vector_get(x, 0); + + gsl_matrix_set(J, 0, 0, -200.0*x1); + gsl_matrix_set(J, 0, 1, 100.0); + gsl_matrix_set(J, 1, 0, -1.0); + gsl_matrix_set(J, 1, 1, 0.0); + + return GSL_SUCCESS; + } + + int + func_fvv (const gsl_vector * x, const gsl_vector * v, + void *params, gsl_vector * fvv) + { + double v1 = gsl_vector_get(v, 0); + + gsl_vector_set(fvv, 0, -200.0 * v1 * v1); + gsl_vector_set(fvv, 1, 0.0); + + return GSL_SUCCESS; + } + + void + callback(const size_t iter, void *params, + const gsl_multifit_nlinear_workspace *w) + { + gsl_vector * x = gsl_multifit_nlinear_position(w); + + /* print out current location */ + printf("%f %f\n", + gsl_vector_get(x, 0), + gsl_vector_get(x, 1)); + } + + void + solve_system(gsl_vector *x0, gsl_multifit_nlinear_fdf *fdf, + gsl_multifit_nlinear_parameters *params) + { + const gsl_multifit_nlinear_type *T = gsl_multifit_nlinear_trust; + const size_t max_iter = 200; + const double xtol = 1.0e-8; + const double gtol = 1.0e-8; + const double ftol = 1.0e-8; + const size_t n = fdf->n; + const size_t p = fdf->p; + gsl_multifit_nlinear_workspace *work = + gsl_multifit_nlinear_alloc(T, params, n, p); + gsl_vector * f = gsl_multifit_nlinear_residual(work); + gsl_vector * x = gsl_multifit_nlinear_position(work); + int info; + double chisq0, chisq, rcond; + + /* initialize solver */ + gsl_multifit_nlinear_init(x0, fdf, work); + + /* store initial cost */ + gsl_blas_ddot(f, f, &chisq0); + + /* iterate until convergence */ + gsl_multifit_nlinear_driver(max_iter, xtol, gtol, ftol, + callback, NULL, &info, work); + + /* store final cost */ + gsl_blas_ddot(f, f, &chisq); + + /* store cond(J(x)) */ + gsl_multifit_nlinear_rcond(&rcond, work); + + /* print summary */ + + fprintf(stderr, "NITER = %zu\n", gsl_multifit_nlinear_niter(work)); + fprintf(stderr, "NFEV = %zu\n", fdf->nevalf); + fprintf(stderr, "NJEV = %zu\n", fdf->nevaldf); + fprintf(stderr, "NAEV = %zu\n", fdf->nevalfvv); + fprintf(stderr, "initial cost = %.12e\n", chisq0); + fprintf(stderr, "final cost = %.12e\n", chisq); + fprintf(stderr, "final x = (%.12e, %.12e)\n", + gsl_vector_get(x, 0), gsl_vector_get(x, 1)); + fprintf(stderr, "final cond(J) = %.12e\n", 1.0 / rcond); + + printf("\n\n"); + + gsl_multifit_nlinear_free(work); + } + + int + main (void) + { + const size_t n = 2; + const size_t p = 2; + gsl_vector *f = gsl_vector_alloc(n); + gsl_vector *x = gsl_vector_alloc(p); + gsl_multifit_nlinear_fdf fdf; + gsl_multifit_nlinear_parameters fdf_params = + gsl_multifit_nlinear_default_parameters(); + + /* print map of Phi(x1, x2) */ + { + double x1, x2, chisq; + double *f1 = gsl_vector_ptr(f, 0); + double *f2 = gsl_vector_ptr(f, 1); + + for (x1 = -1.2; x1 < 1.3; x1 += 0.1) + { + for (x2 = -0.5; x2 < 2.1; x2 += 0.1) + { + gsl_vector_set(x, 0, x1); + gsl_vector_set(x, 1, x2); + func_f(x, NULL, f); + + chisq = (*f1) * (*f1) + (*f2) * (*f2); + printf("%f %f %f\n", x1, x2, chisq); + } + printf("\n"); + } + printf("\n\n"); + } + + /* define function to be minimized */ + fdf.f = func_f; + fdf.df = func_df; + fdf.fvv = func_fvv; + fdf.n = n; + fdf.p = p; + fdf.params = NULL; + + /* starting point */ + gsl_vector_set(x, 0, -0.5); + gsl_vector_set(x, 1, 1.75); + + fprintf(stderr, "=== Solving system without acceleration ===\n"); + fdf_params.trs = gsl_multifit_nlinear_trs_lm; + solve_system(x, &fdf, &fdf_params); + + fprintf(stderr, "=== Solving system with acceleration ===\n"); + fdf_params.trs = gsl_multifit_nlinear_trs_lmaccel; + solve_system(x, &fdf, &fdf_params); + + gsl_vector_free(f); + gsl_vector_free(x); + + return 0; + } + + +File: gsl-ref.info, Node: Geodesic Acceleration Example 2, Next: Comparing TRS Methods Example, Prev: Geodesic Acceleration Example 1, Up: Examples<32> + +41.12.3 Geodesic Acceleration Example 2 +--------------------------------------- + +The following example fits a set of data to a Gaussian model using the +Levenberg-Marquardt method with geodesic acceleration. The cost +function is + + Phi(x) = 1/2 \sum_i f_i^2 + f_i = y_i - Y(a,b,c;t_i) + +where y_i is the measured data point at time t_i, and the model is +specified by + + Y(a,b,c;t) = a exp(-1/2 ((t-b)/c)^2) + +The parameters a,b,c represent the amplitude, mean, and width of the +Gaussian respectively. The program below generates the y_i data on +[0,1] using the values a = 5, b = 0.4, c = 0.15 and adding random noise. +The i-th row of the Jacobian is + + J(i,:) = ( -e_i -(a/c)*z_i*e_i -(a/c)*z_i^2*e_i ) + +where + + z_i = (t_i - b) / c + e_i = \exp(-1/2 z_i^2) + +In order to use geodesic acceleration, we need the second directional +derivative of the residuals in the velocity direction, D_v^2 f_i = +\sum_{\alpha\beta} v_{\alpha} v_{\beta} \partial_{\alpha} +\partial_{\beta} f_i, where v is provided by the solver. To compute +this, it is helpful to make a table of all second derivatives of the +residuals f_i with respect to each combination of model parameters. +This table is + +The lower half of the table is omitted since it is symmetric. Then, the +second directional derivative of f_i is + + D_v^2 f_i = v_a^2 (d/da)^2 f_i + 2 v_a v_b (d/da) (d/db) f_i + 2 v_a v_c (d/da) (d/dc) f_i + v_b^2 (d/db)^2 f_i + 2 v_b v_c (d/db) (d/dc) f_i + v_c^2 (d/dc)^2 f_i + +The factors of 2 come from the symmetry of the mixed second partial +derivatives. The iteration is started using the initial guess a = 1, b += 0, c = 1. The program output is shown below: + + iter 0: a = 1.0000, b = 0.0000, c = 1.0000, |a|/|v| = 0.0000 cond(J) = inf, |f(x)| = 35.4785 + iter 1: a = 1.5708, b = 0.5321, c = 0.5219, |a|/|v| = 0.3093 cond(J) = 29.0443, |f(x)| = 31.1042 + iter 2: a = 1.7387, b = 0.4040, c = 0.4568, |a|/|v| = 0.1199 cond(J) = 3.5256, |f(x)| = 28.7217 + iter 3: a = 2.2340, b = 0.3829, c = 0.3053, |a|/|v| = 0.3308 cond(J) = 4.5121, |f(x)| = 23.8074 + iter 4: a = 3.2275, b = 0.3952, c = 0.2243, |a|/|v| = 0.2784 cond(J) = 8.6499, |f(x)| = 15.6003 + iter 5: a = 4.3347, b = 0.3974, c = 0.1752, |a|/|v| = 0.2029 cond(J) = 15.1732, |f(x)| = 7.5908 + iter 6: a = 4.9352, b = 0.3992, c = 0.1536, |a|/|v| = 0.1001 cond(J) = 26.6621, |f(x)| = 4.8402 + iter 7: a = 5.0716, b = 0.3994, c = 0.1498, |a|/|v| = 0.0166 cond(J) = 34.6922, |f(x)| = 4.7103 + iter 8: a = 5.0828, b = 0.3994, c = 0.1495, |a|/|v| = 0.0012 cond(J) = 36.5422, |f(x)| = 4.7095 + iter 9: a = 5.0831, b = 0.3994, c = 0.1495, |a|/|v| = 0.0000 cond(J) = 36.6929, |f(x)| = 4.7095 + iter 10: a = 5.0831, b = 0.3994, c = 0.1495, |a|/|v| = 0.0000 cond(J) = 36.6975, |f(x)| = 4.7095 + iter 11: a = 5.0831, b = 0.3994, c = 0.1495, |a|/|v| = 0.0000 cond(J) = 36.6976, |f(x)| = 4.7095 + NITER = 11 + NFEV = 18 + NJEV = 12 + NAEV = 17 + initial cost = 1.258724737288e+03 + final cost = 2.217977560180e+01 + final x = (5.083101559156e+00, 3.994484109594e-01, 1.494898e-01) + final cond(J) = 3.669757713403e+01 + +We see the method converges after 11 iterations. For comparison the +standard Levenberg-Marquardt method requires 26 iterations and so the +Gaussian fitting problem benefits substantially from the geodesic +acceleration correction. The column marked ‘|a|/|v|’ above shows the +ratio of the acceleration term to the velocity term as the iteration +progresses. Larger values of this ratio indicate that the geodesic +acceleration correction term is contributing substantial information to +the solver relative to the standard LM velocity step. + +The data and fitted model are shown in Fig. %s. + +[image src="nlfit2b.png"] + +Figure: Gaussian model fitted to data + +The program is given below. + + #include + #include + #include + #include + #include + #include + #include + #include + + struct data + { + double *t; + double *y; + size_t n; + }; + + /* model function: a * exp( -1/2 * [ (t - b) / c ]^2 ) */ + double + gaussian(const double a, const double b, const double c, const double t) + { + const double z = (t - b) / c; + return (a * exp(-0.5 * z * z)); + } + + int + func_f (const gsl_vector * x, void *params, gsl_vector * f) + { + struct data *d = (struct data *) params; + double a = gsl_vector_get(x, 0); + double b = gsl_vector_get(x, 1); + double c = gsl_vector_get(x, 2); + size_t i; + + for (i = 0; i < d->n; ++i) + { + double ti = d->t[i]; + double yi = d->y[i]; + double y = gaussian(a, b, c, ti); + + gsl_vector_set(f, i, yi - y); + } + + return GSL_SUCCESS; + } + + int + func_df (const gsl_vector * x, void *params, gsl_matrix * J) + { + struct data *d = (struct data *) params; + double a = gsl_vector_get(x, 0); + double b = gsl_vector_get(x, 1); + double c = gsl_vector_get(x, 2); + size_t i; + + for (i = 0; i < d->n; ++i) + { + double ti = d->t[i]; + double zi = (ti - b) / c; + double ei = exp(-0.5 * zi * zi); + + gsl_matrix_set(J, i, 0, -ei); + gsl_matrix_set(J, i, 1, -(a / c) * ei * zi); + gsl_matrix_set(J, i, 2, -(a / c) * ei * zi * zi); + } + + return GSL_SUCCESS; + } + + int + func_fvv (const gsl_vector * x, const gsl_vector * v, + void *params, gsl_vector * fvv) + { + struct data *d = (struct data *) params; + double a = gsl_vector_get(x, 0); + double b = gsl_vector_get(x, 1); + double c = gsl_vector_get(x, 2); + double va = gsl_vector_get(v, 0); + double vb = gsl_vector_get(v, 1); + double vc = gsl_vector_get(v, 2); + size_t i; + + for (i = 0; i < d->n; ++i) + { + double ti = d->t[i]; + double zi = (ti - b) / c; + double ei = exp(-0.5 * zi * zi); + double Dab = -zi * ei / c; + double Dac = -zi * zi * ei / c; + double Dbb = a * ei / (c * c) * (1.0 - zi*zi); + double Dbc = a * zi * ei / (c * c) * (2.0 - zi*zi); + double Dcc = a * zi * zi * ei / (c * c) * (3.0 - zi*zi); + double sum; + + sum = 2.0 * va * vb * Dab + + 2.0 * va * vc * Dac + + vb * vb * Dbb + + 2.0 * vb * vc * Dbc + + vc * vc * Dcc; + + gsl_vector_set(fvv, i, sum); + } + + return GSL_SUCCESS; + } + + void + callback(const size_t iter, void *params, + const gsl_multifit_nlinear_workspace *w) + { + gsl_vector *f = gsl_multifit_nlinear_residual(w); + gsl_vector *x = gsl_multifit_nlinear_position(w); + double avratio = gsl_multifit_nlinear_avratio(w); + double rcond; + + (void) params; /* not used */ + + /* compute reciprocal condition number of J(x) */ + gsl_multifit_nlinear_rcond(&rcond, w); + + fprintf(stderr, "iter %2zu: a = %.4f, b = %.4f, c = %.4f, |a|/|v| = %.4f cond(J) = %8.4f, |f(x)| = %.4f\n", + iter, + gsl_vector_get(x, 0), + gsl_vector_get(x, 1), + gsl_vector_get(x, 2), + avratio, + 1.0 / rcond, + gsl_blas_dnrm2(f)); + } + + void + solve_system(gsl_vector *x, gsl_multifit_nlinear_fdf *fdf, + gsl_multifit_nlinear_parameters *params) + { + const gsl_multifit_nlinear_type *T = gsl_multifit_nlinear_trust; + const size_t max_iter = 200; + const double xtol = 1.0e-8; + const double gtol = 1.0e-8; + const double ftol = 1.0e-8; + const size_t n = fdf->n; + const size_t p = fdf->p; + gsl_multifit_nlinear_workspace *work = + gsl_multifit_nlinear_alloc(T, params, n, p); + gsl_vector * f = gsl_multifit_nlinear_residual(work); + gsl_vector * y = gsl_multifit_nlinear_position(work); + int info; + double chisq0, chisq, rcond; + + /* initialize solver */ + gsl_multifit_nlinear_init(x, fdf, work); + + /* store initial cost */ + gsl_blas_ddot(f, f, &chisq0); + + /* iterate until convergence */ + gsl_multifit_nlinear_driver(max_iter, xtol, gtol, ftol, + callback, NULL, &info, work); + + /* store final cost */ + gsl_blas_ddot(f, f, &chisq); + + /* store cond(J(x)) */ + gsl_multifit_nlinear_rcond(&rcond, work); + + gsl_vector_memcpy(x, y); + + /* print summary */ + + fprintf(stderr, "NITER = %zu\n", gsl_multifit_nlinear_niter(work)); + fprintf(stderr, "NFEV = %zu\n", fdf->nevalf); + fprintf(stderr, "NJEV = %zu\n", fdf->nevaldf); + fprintf(stderr, "NAEV = %zu\n", fdf->nevalfvv); + fprintf(stderr, "initial cost = %.12e\n", chisq0); + fprintf(stderr, "final cost = %.12e\n", chisq); + fprintf(stderr, "final x = (%.12e, %.12e, %12e)\n", + gsl_vector_get(x, 0), gsl_vector_get(x, 1), gsl_vector_get(x, 2)); + fprintf(stderr, "final cond(J) = %.12e\n", 1.0 / rcond); + + gsl_multifit_nlinear_free(work); + } + + int + main (void) + { + const size_t n = 300; /* number of data points to fit */ + const size_t p = 3; /* number of model parameters */ + const double a = 5.0; /* amplitude */ + const double b = 0.4; /* center */ + const double c = 0.15; /* width */ + const gsl_rng_type * T = gsl_rng_default; + gsl_vector *f = gsl_vector_alloc(n); + gsl_vector *x = gsl_vector_alloc(p); + gsl_multifit_nlinear_fdf fdf; + gsl_multifit_nlinear_parameters fdf_params = + gsl_multifit_nlinear_default_parameters(); + struct data fit_data; + gsl_rng * r; + size_t i; + + gsl_rng_env_setup (); + r = gsl_rng_alloc (T); + + fit_data.t = malloc(n * sizeof(double)); + fit_data.y = malloc(n * sizeof(double)); + fit_data.n = n; + + /* generate synthetic data with noise */ + for (i = 0; i < n; ++i) + { + double t = (double)i / (double) n; + double y0 = gaussian(a, b, c, t); + double dy = gsl_ran_gaussian (r, 0.1 * y0); + + fit_data.t[i] = t; + fit_data.y[i] = y0 + dy; + } + + /* define function to be minimized */ + fdf.f = func_f; + fdf.df = func_df; + fdf.fvv = func_fvv; + fdf.n = n; + fdf.p = p; + fdf.params = &fit_data; + + /* starting point */ + gsl_vector_set(x, 0, 1.0); + gsl_vector_set(x, 1, 0.0); + gsl_vector_set(x, 2, 1.0); + + fdf_params.trs = gsl_multifit_nlinear_trs_lmaccel; + solve_system(x, &fdf, &fdf_params); + + /* print data and model */ + { + double A = gsl_vector_get(x, 0); + double B = gsl_vector_get(x, 1); + double C = gsl_vector_get(x, 2); + + for (i = 0; i < n; ++i) + { + double ti = fit_data.t[i]; + double yi = fit_data.y[i]; + double fi = gaussian(A, B, C, ti); + + printf("%f %f %f\n", ti, yi, fi); + } + } + + gsl_vector_free(f); + gsl_vector_free(x); + gsl_rng_free(r); + + return 0; + } + + +File: gsl-ref.info, Node: Comparing TRS Methods Example, Next: Large Nonlinear Least Squares Example, Prev: Geodesic Acceleration Example 2, Up: Examples<32> + +41.12.4 Comparing TRS Methods Example +------------------------------------- + +The following program compares all available nonlinear least squares +trust-region subproblem (TRS) methods on the Branin function, a common +optimization test problem. The cost function is + + \Phi(x) &= 1/2 (f_1^2 + f_2^2) + f_1 &= x_2 + a_1 x_1^2 + a_2 x_1 + a_3 + f_2 &= sqrt(a_4) sqrt(1 + (1 - a_5) cos(x_1)) + +with a_1 = -{5.1 \over 4 \pi^2}, a_2 = {5 \over \pi}, a_3 = -6, a_4 = +10, a_5 = {1 \over 8\pi}. There are three minima of this function in +the range (x_1,x_2) \in [-5,15] \times [-5,15]. The program below uses +the starting point (x_1,x_2) = (6,14.5) and calculates the solution with +all available nonlinear least squares TRS methods. The program output +is shown below: + + Method NITER NFEV NJEV Initial Cost Final cost Final cond(J) Final x + levenberg-marquardt 20 27 21 1.9874e+02 3.9789e-01 6.1399e+07 (-3.14e+00, 1.23e+01) + levenberg-marquardt+accel 27 36 28 1.9874e+02 3.9789e-01 1.4465e+07 (3.14e+00, 2.27e+00) + dogleg 23 64 23 1.9874e+02 3.9789e-01 5.0692e+08 (3.14e+00, 2.28e+00) + double-dogleg 24 69 24 1.9874e+02 3.9789e-01 3.4879e+07 (3.14e+00, 2.27e+00) + 2D-subspace 23 54 24 1.9874e+02 3.9789e-01 2.5142e+07 (3.14e+00, 2.27e+00) + +The first row of output above corresponds to standard +Levenberg-Marquardt, while the second row includes geodesic +acceleration. We see that the standard LM method converges to the +minimum at (-\pi,12.275) and also uses the least number of iterations +and Jacobian evaluations. All other methods converge to the minimum +(\pi,2.275) and perform similarly in terms of number of Jacobian +evaluations. We see that J is fairly ill-conditioned at both minima, +indicating that the QR (or SVD) solver is the best choice for this +problem. Since there are only two parameters in this optimization +problem, we can easily visualize the paths taken by each method, which +are shown in Fig. %s. The figure shows contours of the cost function +\Phi(x_1,x_2) which exhibits three global minima in the range [-5,15] +\times [-5,15]. The paths taken by each solver are shown as colored +lines. + +[image src="nlfit3.png"] + +Figure: Paths taken for different TRS methods for the Branin function + +The program is given below. + + #include + #include + #include + #include + #include + #include + + /* parameters to model */ + struct model_params + { + double a1; + double a2; + double a3; + double a4; + double a5; + }; + + /* Branin function */ + int + func_f (const gsl_vector * x, void *params, gsl_vector * f) + { + struct model_params *par = (struct model_params *) params; + double x1 = gsl_vector_get(x, 0); + double x2 = gsl_vector_get(x, 1); + double f1 = x2 + par->a1 * x1 * x1 + par->a2 * x1 + par->a3; + double f2 = sqrt(par->a4) * sqrt(1.0 + (1.0 - par->a5) * cos(x1)); + + gsl_vector_set(f, 0, f1); + gsl_vector_set(f, 1, f2); + + return GSL_SUCCESS; + } + + int + func_df (const gsl_vector * x, void *params, gsl_matrix * J) + { + struct model_params *par = (struct model_params *) params; + double x1 = gsl_vector_get(x, 0); + double f2 = sqrt(par->a4) * sqrt(1.0 + (1.0 - par->a5) * cos(x1)); + + gsl_matrix_set(J, 0, 0, 2.0 * par->a1 * x1 + par->a2); + gsl_matrix_set(J, 0, 1, 1.0); + + gsl_matrix_set(J, 1, 0, -0.5 * par->a4 / f2 * (1.0 - par->a5) * sin(x1)); + gsl_matrix_set(J, 1, 1, 0.0); + + return GSL_SUCCESS; + } + + int + func_fvv (const gsl_vector * x, const gsl_vector * v, + void *params, gsl_vector * fvv) + { + struct model_params *par = (struct model_params *) params; + double x1 = gsl_vector_get(x, 0); + double v1 = gsl_vector_get(v, 0); + double c = cos(x1); + double s = sin(x1); + double f2 = sqrt(par->a4) * sqrt(1.0 + (1.0 - par->a5) * c); + double t = 0.5 * par->a4 * (1.0 - par->a5) / f2; + + gsl_vector_set(fvv, 0, 2.0 * par->a1 * v1 * v1); + gsl_vector_set(fvv, 1, -t * (c + s*s/f2) * v1 * v1); + + return GSL_SUCCESS; + } + + void + callback(const size_t iter, void *params, + const gsl_multifit_nlinear_workspace *w) + { + gsl_vector * x = gsl_multifit_nlinear_position(w); + double x1 = gsl_vector_get(x, 0); + double x2 = gsl_vector_get(x, 1); + + /* print out current location */ + printf("%f %f\n", x1, x2); + } + + void + solve_system(gsl_vector *x0, gsl_multifit_nlinear_fdf *fdf, + gsl_multifit_nlinear_parameters *params) + { + const gsl_multifit_nlinear_type *T = gsl_multifit_nlinear_trust; + const size_t max_iter = 200; + const double xtol = 1.0e-8; + const double gtol = 1.0e-8; + const double ftol = 1.0e-8; + const size_t n = fdf->n; + const size_t p = fdf->p; + gsl_multifit_nlinear_workspace *work = + gsl_multifit_nlinear_alloc(T, params, n, p); + gsl_vector * f = gsl_multifit_nlinear_residual(work); + gsl_vector * x = gsl_multifit_nlinear_position(work); + int info; + double chisq0, chisq, rcond; + + printf("# %s/%s\n", + gsl_multifit_nlinear_name(work), + gsl_multifit_nlinear_trs_name(work)); + + /* initialize solver */ + gsl_multifit_nlinear_init(x0, fdf, work); + + /* store initial cost */ + gsl_blas_ddot(f, f, &chisq0); + + /* iterate until convergence */ + gsl_multifit_nlinear_driver(max_iter, xtol, gtol, ftol, + callback, NULL, &info, work); + + /* store final cost */ + gsl_blas_ddot(f, f, &chisq); + + /* store cond(J(x)) */ + gsl_multifit_nlinear_rcond(&rcond, work); + + /* print summary */ + fprintf(stderr, "%-25s %-6zu %-5zu %-5zu %-13.4e %-12.4e %-13.4e (%.2e, %.2e)\n", + gsl_multifit_nlinear_trs_name(work), + gsl_multifit_nlinear_niter(work), + fdf->nevalf, + fdf->nevaldf, + chisq0, + chisq, + 1.0 / rcond, + gsl_vector_get(x, 0), + gsl_vector_get(x, 1)); + + printf("\n\n"); + + gsl_multifit_nlinear_free(work); + } + + int + main (void) + { + const size_t n = 2; + const size_t p = 2; + gsl_vector *f = gsl_vector_alloc(n); + gsl_vector *x = gsl_vector_alloc(p); + gsl_multifit_nlinear_fdf fdf; + gsl_multifit_nlinear_parameters fdf_params = + gsl_multifit_nlinear_default_parameters(); + struct model_params params; + + params.a1 = -5.1 / (4.0 * M_PI * M_PI); + params.a2 = 5.0 / M_PI; + params.a3 = -6.0; + params.a4 = 10.0; + params.a5 = 1.0 / (8.0 * M_PI); + + /* print map of Phi(x1, x2) */ + { + double x1, x2, chisq; + + for (x1 = -5.0; x1 < 15.0; x1 += 0.1) + { + for (x2 = -5.0; x2 < 15.0; x2 += 0.1) + { + gsl_vector_set(x, 0, x1); + gsl_vector_set(x, 1, x2); + func_f(x, ¶ms, f); + + gsl_blas_ddot(f, f, &chisq); + + printf("%f %f %f\n", x1, x2, chisq); + } + printf("\n"); + } + printf("\n\n"); + } + + /* define function to be minimized */ + fdf.f = func_f; + fdf.df = func_df; + fdf.fvv = func_fvv; + fdf.n = n; + fdf.p = p; + fdf.params = ¶ms; + + /* starting point */ + gsl_vector_set(x, 0, 6.0); + gsl_vector_set(x, 1, 14.5); + + fprintf(stderr, "%-25s %-6s %-5s %-5s %-13s %-12s %-13s %-15s\n", + "Method", "NITER", "NFEV", "NJEV", "Initial Cost", + "Final cost", "Final cond(J)", "Final x"); + + fdf_params.trs = gsl_multifit_nlinear_trs_lm; + solve_system(x, &fdf, &fdf_params); + + fdf_params.trs = gsl_multifit_nlinear_trs_lmaccel; + solve_system(x, &fdf, &fdf_params); + + fdf_params.trs = gsl_multifit_nlinear_trs_dogleg; + solve_system(x, &fdf, &fdf_params); + + fdf_params.trs = gsl_multifit_nlinear_trs_ddogleg; + solve_system(x, &fdf, &fdf_params); + + fdf_params.trs = gsl_multifit_nlinear_trs_subspace2D; + solve_system(x, &fdf, &fdf_params); + + gsl_vector_free(f); + gsl_vector_free(x); + + return 0; + } + + +File: gsl-ref.info, Node: Large Nonlinear Least Squares Example, Prev: Comparing TRS Methods Example, Up: Examples<32> + +41.12.5 Large Nonlinear Least Squares Example +--------------------------------------------- + +The following program illustrates the large nonlinear least squares +solvers on a system with significant sparse structure in the Jacobian. +The cost function is + + \Phi(x) &= 1/2 \sum_{i=1}^{p+1} f_i^2 + f_i &= \sqrt{\alpha} (x_i - 1), 1 \le i \le p + f_{p+1} &= ||x||^2 - 1/4 + +with \alpha = 10^{-5}. The residual f_{p+1} imposes a constraint on the +p parameters x, to ensure that ||x||^2 \approx {1 \over 4}. The +(p+1)-by-p Jacobian for this system is + + J(x) = [ \sqrt{alpha} I_p; 2 x^T ] + +and the normal equations matrix is + + J^T J = \alpha I_p + 4 x x^T + +Finally, the second directional derivative of f for the geodesic +acceleration method is + + fvv = [ 0 ] + [ 2 ||v||^2 ] + +Since the upper p-by-p block of J is diagonal, this sparse structure +should be exploited in the nonlinear solver. For comparison, the +following program solves the system for p = 2000 using the dense direct +Cholesky solver based on the normal equations matrix J^T J, as well as +the iterative Steihaug-Toint solver, based on sparse matrix-vector +products J u and J^T u. The program output is shown below: + + Method NITER NFEV NJUEV NJTJEV NAEV Init Cost Final cost cond(J) Final |x|^2 Time (s) + levenberg-marquardt 25 31 26 26 0 7.1218e+18 1.9555e-02 447.50 2.5044e-01 46.28 + levenberg-marquardt+accel 22 23 45 23 22 7.1218e+18 1.9555e-02 447.64 2.5044e-01 33.92 + dogleg 37 87 36 36 0 7.1218e+18 1.9555e-02 447.59 2.5044e-01 56.05 + double-dogleg 35 88 34 34 0 7.1218e+18 1.9555e-02 447.62 2.5044e-01 52.65 + 2D-subspace 37 88 36 36 0 7.1218e+18 1.9555e-02 447.71 2.5044e-01 59.75 + steihaug-toint 35 88 345 0 0 7.1218e+18 1.9555e-02 inf 2.5044e-01 0.09 + +The first five rows use methods based on factoring the dense J^T J +matrix while the last row uses the iterative Steihaug-Toint method. +While the number of Jacobian matrix-vector products (NJUEV) is less for +the dense methods, the added time to construct and factor the J^T J +matrix (NJTJEV) results in a much larger runtime than the iterative +method (see last column). + +The program is given below. + + #include + #include + #include + #include + #include + #include + #include + #include + #include + + /* parameters for functions */ + struct model_params + { + double alpha; + gsl_spmatrix *J; + }; + + /* penalty function */ + int + penalty_f (const gsl_vector * x, void *params, gsl_vector * f) + { + struct model_params *par = (struct model_params *) params; + const double sqrt_alpha = sqrt(par->alpha); + const size_t p = x->size; + size_t i; + double sum = 0.0; + + for (i = 0; i < p; ++i) + { + double xi = gsl_vector_get(x, i); + + gsl_vector_set(f, i, sqrt_alpha*(xi - 1.0)); + + sum += xi * xi; + } + + gsl_vector_set(f, p, sum - 0.25); + + return GSL_SUCCESS; + } + + int + penalty_df (CBLAS_TRANSPOSE_t TransJ, const gsl_vector * x, + const gsl_vector * u, void * params, gsl_vector * v, + gsl_matrix * JTJ) + { + struct model_params *par = (struct model_params *) params; + const size_t p = x->size; + size_t j; + + /* store 2*x in last row of J */ + for (j = 0; j < p; ++j) + { + double xj = gsl_vector_get(x, j); + gsl_spmatrix_set(par->J, p, j, 2.0 * xj); + } + + /* compute v = op(J) u */ + if (v) + gsl_spblas_dgemv(TransJ, 1.0, par->J, u, 0.0, v); + + if (JTJ) + { + gsl_vector_view diag = gsl_matrix_diagonal(JTJ); + + /* compute J^T J = [ alpha*I_p + 4 x x^T ] */ + gsl_matrix_set_zero(JTJ); + + /* store 4 x x^T in lower half of JTJ */ + gsl_blas_dsyr(CblasLower, 4.0, x, JTJ); + + /* add alpha to diag(JTJ) */ + gsl_vector_add_constant(&diag.vector, par->alpha); + } + + return GSL_SUCCESS; + } + + int + penalty_fvv (const gsl_vector * x, const gsl_vector * v, + void *params, gsl_vector * fvv) + { + const size_t p = x->size; + double normv = gsl_blas_dnrm2(v); + + gsl_vector_set_zero(fvv); + gsl_vector_set(fvv, p, 2.0 * normv * normv); + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; + } + + void + solve_system(const gsl_vector *x0, gsl_multilarge_nlinear_fdf *fdf, + gsl_multilarge_nlinear_parameters *params) + { + const gsl_multilarge_nlinear_type *T = gsl_multilarge_nlinear_trust; + const size_t max_iter = 200; + const double xtol = 1.0e-8; + const double gtol = 1.0e-8; + const double ftol = 1.0e-8; + const size_t n = fdf->n; + const size_t p = fdf->p; + gsl_multilarge_nlinear_workspace *work = + gsl_multilarge_nlinear_alloc(T, params, n, p); + gsl_vector * f = gsl_multilarge_nlinear_residual(work); + gsl_vector * x = gsl_multilarge_nlinear_position(work); + int info; + double chisq0, chisq, rcond, xsq; + struct timeval tv0, tv1; + + gettimeofday(&tv0, NULL); + + /* initialize solver */ + gsl_multilarge_nlinear_init(x0, fdf, work); + + /* store initial cost */ + gsl_blas_ddot(f, f, &chisq0); + + /* iterate until convergence */ + gsl_multilarge_nlinear_driver(max_iter, xtol, gtol, ftol, + NULL, NULL, &info, work); + + gettimeofday(&tv1, NULL); + + /* store final cost */ + gsl_blas_ddot(f, f, &chisq); + + /* compute final ||x||^2 */ + gsl_blas_ddot(x, x, &xsq); + + /* store cond(J(x)) */ + gsl_multilarge_nlinear_rcond(&rcond, work); + + /* print summary */ + fprintf(stderr, "%-25s %-5zu %-4zu %-5zu %-6zu %-4zu %-10.4e %-10.4e %-7.2f %-11.4e %.2f\n", + gsl_multilarge_nlinear_trs_name(work), + gsl_multilarge_nlinear_niter(work), + fdf->nevalf, + fdf->nevaldfu, + fdf->nevaldf2, + fdf->nevalfvv, + chisq0, + chisq, + 1.0 / rcond, + xsq, + (tv1.tv_sec - tv0.tv_sec) + 1.0e-6 * (tv1.tv_usec - tv0.tv_usec)); + + gsl_multilarge_nlinear_free(work); + } + + int + main (void) + { + const size_t p = 2000; + const size_t n = p + 1; + gsl_vector *f = gsl_vector_alloc(n); + gsl_vector *x = gsl_vector_alloc(p); + + /* allocate sparse Jacobian matrix with 2*p non-zero elements in triplet format */ + gsl_spmatrix *J = gsl_spmatrix_alloc_nzmax(n, p, 2 * p, GSL_SPMATRIX_TRIPLET); + + gsl_multilarge_nlinear_fdf fdf; + gsl_multilarge_nlinear_parameters fdf_params = + gsl_multilarge_nlinear_default_parameters(); + struct model_params params; + size_t i; + + params.alpha = 1.0e-5; + params.J = J; + + /* define function to be minimized */ + fdf.f = penalty_f; + fdf.df = penalty_df; + fdf.fvv = penalty_fvv; + fdf.n = n; + fdf.p = p; + fdf.params = ¶ms; + + for (i = 0; i < p; ++i) + { + /* starting point */ + gsl_vector_set(x, i, i + 1.0); + + /* store sqrt(alpha)*I_p in upper p-by-p block of J */ + gsl_spmatrix_set(J, i, i, sqrt(params.alpha)); + } + + fprintf(stderr, "%-25s %-4s %-4s %-5s %-6s %-4s %-10s %-10s %-7s %-11s %-10s\n", + "Method", "NITER", "NFEV", "NJUEV", "NJTJEV", "NAEV", "Init Cost", + "Final cost", "cond(J)", "Final |x|^2", "Time (s)"); + + fdf_params.scale = gsl_multilarge_nlinear_scale_levenberg; + + fdf_params.trs = gsl_multilarge_nlinear_trs_lm; + solve_system(x, &fdf, &fdf_params); + + fdf_params.trs = gsl_multilarge_nlinear_trs_lmaccel; + solve_system(x, &fdf, &fdf_params); + + fdf_params.trs = gsl_multilarge_nlinear_trs_dogleg; + solve_system(x, &fdf, &fdf_params); + + fdf_params.trs = gsl_multilarge_nlinear_trs_ddogleg; + solve_system(x, &fdf, &fdf_params); + + fdf_params.trs = gsl_multilarge_nlinear_trs_subspace2D; + solve_system(x, &fdf, &fdf_params); + + fdf_params.trs = gsl_multilarge_nlinear_trs_cgst; + solve_system(x, &fdf, &fdf_params); + + gsl_vector_free(f); + gsl_vector_free(x); + gsl_spmatrix_free(J); + + return 0; + } + + +File: gsl-ref.info, Node: References and Further Reading<33>, Prev: Examples<32>, Up: Nonlinear Least-Squares Fitting + +41.13 References and Further Reading +==================================== + +The following publications are relevant to the algorithms described in +this section, + + * J.J. Moré, `The Levenberg-Marquardt Algorithm: Implementation and + Theory', Lecture Notes in Mathematics, v630 (1978), ed G. Watson. + + * H. B. Nielsen, “Damping Parameter in Marquardt’s Method”, IMM + Department of Mathematical Modeling, DTU, Tech. Report + IMM-REP-1999-05 (1999). + + * K. Madsen and H. B. Nielsen, “Introduction to Optimization and Data + Fitting”, IMM Department of Mathematical Modeling, DTU, 2010. + + * J. E. Dennis and R. B. Schnabel, Numerical Methods for + Unconstrained Optimization and Nonlinear Equations, SIAM, 1996. + + * M. K. Transtrum, B. B. Machta, and J. P. Sethna, Geometry of + nonlinear least squares with applications to sloppy models and + optimization, Phys. Rev. E 83, 036701, 2011. + + * M. K. Transtrum and J. P. Sethna, Improvements to the + Levenberg-Marquardt algorithm for nonlinear least-squares + minimization, arXiv:1201.5885, 2012. + + * J.J. Moré, B.S. Garbow, K.E. Hillstrom, “Testing Unconstrained + Optimization Software”, ACM Transactions on Mathematical Software, + Vol 7, No 1 (1981), p 17–41. + + * H. B. Nielsen, “UCTP Test Problems for Unconstrained Optimization”, + IMM Department of Mathematical Modeling, DTU, Tech. Report + IMM-REP-2000-17 (2000). + + +File: gsl-ref.info, Node: Basis Splines, Next: Sparse Matrices, Prev: Nonlinear Least-Squares Fitting, Up: Top + +42 Basis Splines +**************** + +This chapter describes functions for the computation of smoothing basis +splines (B-splines). A smoothing spline differs from an interpolating +spline in that the resulting curve is not required to pass through each +datapoint. For information about interpolating splines, see *note +Interpolation: 95c. + +The header file ‘gsl_bspline.h’ contains the prototypes for the bspline +functions and related declarations. + +* Menu: + +* Overview: Overview<7>. +* Initializing the B-splines solver:: +* Constructing the knots vector:: +* Evaluation of B-splines:: +* Evaluation of B-spline derivatives:: +* Working with the Greville abscissae:: +* Examples: Examples<33>. +* References and Further Reading: References and Further Reading<34>. + + +File: gsl-ref.info, Node: Overview<7>, Next: Initializing the B-splines solver, Up: Basis Splines + +42.1 Overview +============= + +B-splines are commonly used as basis functions to fit smoothing curves +to large data sets. To do this, the abscissa axis is broken up into +some number of intervals, where the endpoints of each interval are +called `breakpoints'. These breakpoints are then converted to `knots' +by imposing various continuity and smoothness conditions at each +interface. Given a nondecreasing knot vector + + t = \{t_0, t_1, \dots, t_{n+k-1}\} + +the n basis splines of order k are defined by + + B_(i,1)(x) = (1, t_i <= x < t_(i+1) + (0, else + B_(i,k)(x) = [(x - t_i)/(t_(i+k-1) - t_i)] B_(i,k-1)(x) + + [(t_(i+k) - x)/(t_(i+k) - t_(i+1))] B_(i+1,k-1)(x) + +for i = 0, \ldots, n-1. The common case of cubic B-splines is given by +k = 4. The above recurrence relation can be evaluated in a numerically +stable way by the de Boor algorithm. + +If we define appropriate knots on an interval [a,b] then the B-spline +basis functions form a complete set on that interval. Therefore we can +expand a smoothing function as + + f(x) = \sum_{i=0}^{n-1} c_i B_{i,k}(x) + +given enough (x_j, f(x_j)) data pairs. The coefficients c_i can be +readily obtained from a least-squares fit. + + +File: gsl-ref.info, Node: Initializing the B-splines solver, Next: Constructing the knots vector, Prev: Overview<7>, Up: Basis Splines + +42.2 Initializing the B-splines solver +====================================== + + -- Type: gsl_bspline_workspace + + The computation of B-spline functions requires a preallocated + workspace. + + -- Function: gsl_bspline_workspace * gsl_bspline_alloc (const size_t k, + const size_t nbreak) + + This function allocates a workspace for computing B-splines of + order ‘k’. The number of breakpoints is given by ‘nbreak’. This + leads to n = nbreak + k - 2 basis functions. Cubic B-splines are + specified by k = 4. The size of the workspace is O(2k^2 + 5k + + nbreak). + + -- Function: void gsl_bspline_free (gsl_bspline_workspace * w) + + This function frees the memory associated with the workspace ‘w’. + + +File: gsl-ref.info, Node: Constructing the knots vector, Next: Evaluation of B-splines, Prev: Initializing the B-splines solver, Up: Basis Splines + +42.3 Constructing the knots vector +================================== + + -- Function: int gsl_bspline_knots (const gsl_vector * breakpts, + gsl_bspline_workspace * w) + + This function computes the knots associated with the given + breakpoints and stores them internally in ‘w->knots’. + + -- Function: int gsl_bspline_knots_uniform (const double a, const + double b, gsl_bspline_workspace * w) + + This function assumes uniformly spaced breakpoints on [a,b] and + constructs the corresponding knot vector using the previously + specified ‘nbreak’ parameter. The knots are stored in ‘w->knots’. + + +File: gsl-ref.info, Node: Evaluation of B-splines, Next: Evaluation of B-spline derivatives, Prev: Constructing the knots vector, Up: Basis Splines + +42.4 Evaluation of B-splines +============================ + + -- Function: int gsl_bspline_eval (const double x, gsl_vector * B, + gsl_bspline_workspace * w) + + This function evaluates all B-spline basis functions at the + position ‘x’ and stores them in the vector ‘B’, so that the i-th + element is B_i(x). The vector ‘B’ must be of length n = nbreak + k + - 2. This value may also be obtained by calling *note + gsl_bspline_ncoeffs(): baf. Computing all the basis functions at + once is more efficient than computing them individually, due to the + nature of the defining recurrence relation. + + -- Function: int gsl_bspline_eval_nonzero (const double x, gsl_vector + * Bk, size_t * istart, size_t * iend, gsl_bspline_workspace + * w) + + This function evaluates all potentially nonzero B-spline basis + functions at the position ‘x’ and stores them in the vector ‘Bk’, + so that the i-th element is B_{(istart+i)}(x). The last element of + ‘Bk’ is B_{iend}(x). The vector ‘Bk’ must be of length k. By + returning only the nonzero basis functions, this function allows + quantities involving linear combinations of the B_i(x) to be + computed without unnecessary terms (such linear combinations occur, + for example, when evaluating an interpolated function). + + -- Function: size_t gsl_bspline_ncoeffs (gsl_bspline_workspace * w) + + This function returns the number of B-spline coefficients given by + n = nbreak + k - 2. + + +File: gsl-ref.info, Node: Evaluation of B-spline derivatives, Next: Working with the Greville abscissae, Prev: Evaluation of B-splines, Up: Basis Splines + +42.5 Evaluation of B-spline derivatives +======================================= + + -- Function: int gsl_bspline_deriv_eval (const double x, const + size_t nderiv, gsl_matrix * dB, gsl_bspline_workspace * w) + + This function evaluates all B-spline basis function derivatives of + orders 0 through ‘nderiv’ (inclusive) at the position ‘x’ and + stores them in the matrix ‘dB’. The (i,j)-th element of ‘dB’ is + d^jB_i(x)/dx^j. The matrix ‘dB’ must be of size n = nbreak + k - 2 + by nderiv + 1. The value n may also be obtained by calling *note + gsl_bspline_ncoeffs(): baf. Note that function evaluations are + included as the zeroth order derivatives in ‘dB’. Computing all + the basis function derivatives at once is more efficient than + computing them individually, due to the nature of the defining + recurrence relation. + + -- Function: int gsl_bspline_deriv_eval_nonzero (const double x, const + size_t nderiv, gsl_matrix * dB, size_t * istart, size_t + * iend, gsl_bspline_workspace * w) + + This function evaluates all potentially nonzero B-spline basis + function derivatives of orders 0 through ‘nderiv’ (inclusive) at + the position ‘x’ and stores them in the matrix ‘dB’. The (i,j)-th + element of ‘dB’ is d^jB_{(istart+i)}(x)/dx^j. The last row of ‘dB’ + contains d^jB_{iend}(x)/dx^j. The matrix ‘dB’ must be of size k by + at least nderiv + 1. Note that function evaluations are included + as the zeroth order derivatives in ‘dB’. By returning only the + nonzero basis functions, this function allows quantities involving + linear combinations of the B_i(x) and their derivatives to be + computed without unnecessary terms. + + +File: gsl-ref.info, Node: Working with the Greville abscissae, Next: Examples<33>, Prev: Evaluation of B-spline derivatives, Up: Basis Splines + +42.6 Working with the Greville abscissae +======================================== + +The Greville abscissae are defined to be the mean location of k-1 +consecutive knots in the knot vector for each basis spline function of +order k. With the first and last knots in the *note +gsl_bspline_workspace: ba7. knot vector excluded, there are *note +gsl_bspline_ncoeffs(): baf. Greville abscissae for any given B-spline +basis. These values are often used in B-spline collocation applications +and may also be called Marsden-Schoenberg points. + + -- Function: double gsl_bspline_greville_abscissa (size_t i, + gsl_bspline_workspace * w) + + Returns the location of the i-th Greville abscissa for the given + B-spline basis. For the ill-defined case when k = 1, the + implementation chooses to return breakpoint interval midpoints. + + +File: gsl-ref.info, Node: Examples<33>, Next: References and Further Reading<34>, Prev: Working with the Greville abscissae, Up: Basis Splines + +42.7 Examples +============= + +The following program computes a linear least squares fit to data using +cubic B-spline basis functions with uniform breakpoints. The data is +generated from the curve y(x) = \cos{(x)} \exp{(-x/10)} on the interval +[0, 15] with Gaussian noise added. + + #include + #include + #include + #include + #include + #include + #include + #include + + /* number of data points to fit */ + #define N 200 + + /* number of fit coefficients */ + #define NCOEFFS 12 + + /* nbreak = ncoeffs + 2 - k = ncoeffs - 2 since k = 4 */ + #define NBREAK (NCOEFFS - 2) + + int + main (void) + { + const size_t n = N; + const size_t ncoeffs = NCOEFFS; + const size_t nbreak = NBREAK; + size_t i, j; + gsl_bspline_workspace *bw; + gsl_vector *B; + double dy; + gsl_rng *r; + gsl_vector *c, *w; + gsl_vector *x, *y; + gsl_matrix *X, *cov; + gsl_multifit_linear_workspace *mw; + double chisq, Rsq, dof, tss; + + gsl_rng_env_setup(); + r = gsl_rng_alloc(gsl_rng_default); + + /* allocate a cubic bspline workspace (k = 4) */ + bw = gsl_bspline_alloc(4, nbreak); + B = gsl_vector_alloc(ncoeffs); + + x = gsl_vector_alloc(n); + y = gsl_vector_alloc(n); + X = gsl_matrix_alloc(n, ncoeffs); + c = gsl_vector_alloc(ncoeffs); + w = gsl_vector_alloc(n); + cov = gsl_matrix_alloc(ncoeffs, ncoeffs); + mw = gsl_multifit_linear_alloc(n, ncoeffs); + + /* this is the data to be fitted */ + for (i = 0; i < n; ++i) + { + double sigma; + double xi = (15.0 / (N - 1)) * i; + double yi = cos(xi) * exp(-0.1 * xi); + + sigma = 0.1 * yi; + dy = gsl_ran_gaussian(r, sigma); + yi += dy; + + gsl_vector_set(x, i, xi); + gsl_vector_set(y, i, yi); + gsl_vector_set(w, i, 1.0 / (sigma * sigma)); + + printf("%f %f\n", xi, yi); + } + + /* use uniform breakpoints on [0, 15] */ + gsl_bspline_knots_uniform(0.0, 15.0, bw); + + /* construct the fit matrix X */ + for (i = 0; i < n; ++i) + { + double xi = gsl_vector_get(x, i); + + /* compute B_j(xi) for all j */ + gsl_bspline_eval(xi, B, bw); + + /* fill in row i of X */ + for (j = 0; j < ncoeffs; ++j) + { + double Bj = gsl_vector_get(B, j); + gsl_matrix_set(X, i, j, Bj); + } + } + + /* do the fit */ + gsl_multifit_wlinear(X, w, y, c, cov, &chisq, mw); + + dof = n - ncoeffs; + tss = gsl_stats_wtss(w->data, 1, y->data, 1, y->size); + Rsq = 1.0 - chisq / tss; + + fprintf(stderr, "chisq/dof = %e, Rsq = %f\n", + chisq / dof, Rsq); + + printf("\n\n"); + + /* output the smoothed curve */ + { + double xi, yi, yerr; + + for (xi = 0.0; xi < 15.0; xi += 0.1) + { + gsl_bspline_eval(xi, B, bw); + gsl_multifit_linear_est(B, c, cov, &yi, &yerr); + printf("%f %f\n", xi, yi); + } + } + + gsl_rng_free(r); + gsl_bspline_free(bw); + gsl_vector_free(B); + gsl_vector_free(x); + gsl_vector_free(y); + gsl_matrix_free(X); + gsl_vector_free(c); + gsl_vector_free(w); + gsl_matrix_free(cov); + gsl_multifit_linear_free(mw); + + return 0; + } /* main() */ + +The output is shown below: + + $ ./a.out > bspline.txt + chisq/dof = 1.118217e+00, Rsq = 0.989771 + +The data and fitted model are shown in Fig. %s. + +[image src="bspline.png"] + +Figure: Data (black) and fitted model (red) + + +File: gsl-ref.info, Node: References and Further Reading<34>, Prev: Examples<33>, Up: Basis Splines + +42.8 References and Further Reading +=================================== + +Further information on the algorithms described in this section can be +found in the following book, + + * C. de Boor, `A Practical Guide to Splines' (1978), Springer-Verlag, + ISBN 0-387-90356-9. + +Further information of Greville abscissae and B-spline collocation can +be found in the following paper, + + * Richard W. Johnson, Higher order B-spline collocation at the + Greville abscissae. `Applied Numerical Mathematics'. vol.: 52, + 2005, 63–75. + +A large collection of B-spline routines is available in the PPPACK +library available at ‘http://www.netlib.org/pppack’, which is also part +of SLATEC. + + +File: gsl-ref.info, Node: Sparse Matrices, Next: Sparse BLAS Support, Prev: Basis Splines, Up: Top + +43 Sparse Matrices +****************** + +This chapter describes functions for the construction and manipulation +of sparse matrices, matrices which are populated primarily with zeros +and contain only a few non-zero elements. Sparse matrices often appear +in the solution of partial differential equations. It is beneficial to +use specialized data structures and algorithms for storing and working +with sparse matrices, since dense matrix algorithms and structures can +be very slow and use huge amounts of memory when applied to sparse +matrices. + +The header file ‘gsl_spmatrix.h’ contains the prototypes for the sparse +matrix functions and related declarations. + +* Menu: + +* Overview: Overview<8>. +* Allocation:: +* Accessing Matrix Elements:: +* Initializing Matrix Elements:: +* Reading and Writing Matrices:: +* Copying Matrices:: +* Exchanging Rows and Columns:: +* Matrix Operations:: +* Matrix Properties:: +* Finding Maximum and Minimum Elements:: +* Compressed Format:: +* Conversion Between Sparse and Dense Matrices:: +* Examples: Examples<34>. +* References and Further Reading: References and Further Reading<35>. + + +File: gsl-ref.info, Node: Overview<8>, Next: Allocation, Up: Sparse Matrices + +43.1 Overview +============= + +These routines provide support for constructing and manipulating sparse +matrices in GSL, using an API similar to *note gsl_matrix: 39e. The +basic structure is called *note gsl_spmatrix: bbc. There are three +supported storage formats for sparse matrices: the triplet, compressed +column storage (CCS) and compressed row storage (CRS) formats. The +triplet format stores triplets (i,j,x) for each non-zero element of the +matrix. This notation means that the (i,j) element of the matrix A is +A_{ij} = x. Compressed column storage stores each column of non-zero +values in the sparse matrix in a continuous memory block, keeping +pointers to the beginning of each column in that memory block, and +storing the row indices of each non-zero element. Compressed row +storage stores each row of non-zero values in a continuous memory block, +keeping pointers to the beginning of each row in the block and storing +the column indices of each non-zero element. The triplet format is +ideal for adding elements to the sparse matrix structure while it is +being constructed, while the compressed storage formats are better +suited for matrix-matrix multiplication or linear solvers. + + -- Type: gsl_spmatrix + + This structure is defined as: + + typedef struct + { + size_t size1; + size_t size2; + size_t *i; + double *data; + size_t *p; + size_t nzmax; + size_t nz; + gsl_spmatrix_tree *tree_data; + void *work; + size_t sptype; + } gsl_spmatrix; + + This defines a ‘size1’-by-‘size2’ sparse matrix. The number of + non-zero elements currently in the matrix is given by ‘nz’. For + the triplet representation, ‘i’, ‘p’, and ‘data’ are arrays of size + ‘nz’ which contain the row indices, column indices, and element + value, respectively. So if data[k] = A(i,j), then i = i[k] and j = + p[k]. + + For compressed column storage, ‘i’ and ‘data’ are arrays of size + ‘nz’ containing the row indices and element values, identical to + the triplet case. ‘p’ is an array of size ‘size2’ + 1 where ‘p[j]’ + points to the index in ‘data’ of the start of column ‘j’. Thus, if + data[k] = A(i,j), then i = i[k] and p[j] <= k < p[j+1]. + + For compressed row storage, ‘i’ and ‘data’ are arrays of size ‘nz’ + containing the column indices and element values, identical to the + triplet case. ‘p’ is an array of size ‘size1’ + 1 where ‘p[i]’ + points to the index in ‘data’ of the start of row ‘i’. Thus, if + data[k] = A(i,j), then j = i[k] and p[i] <= k < p[i+1]. + + The parameter ‘tree_data’ is a binary tree structure used in the + triplet representation, specifically a balanced AVL tree. This + speeds up element searches and duplicate detection during the + matrix assembly process. The parameter ‘work’ is additional + workspace needed for various operations like converting from + triplet to compressed storage. ‘sptype’ indicates the type of + storage format being used (triplet, CCS or CRS). + + The compressed storage format defined above makes it very simple to + interface with sophisticated external linear solver libraries which + accept compressed storage input. The user can simply pass the + arrays ‘i’, ‘p’, and ‘data’ as the inputs to external libraries. + + +File: gsl-ref.info, Node: Allocation, Next: Accessing Matrix Elements, Prev: Overview<8>, Up: Sparse Matrices + +43.2 Allocation +=============== + +The functions for allocating memory for a sparse matrix follow the style +of ‘malloc()’ and ‘free()’. They also perform their own error checking. +If there is insufficient memory available to allocate a matrix then the +functions call the GSL error handler with an error code of *note +GSL_ENOMEM: 2a. in addition to returning a null pointer. + + -- Function: gsl_spmatrix * gsl_spmatrix_alloc (const size_t n1, const + size_t n2) + + This function allocates a sparse matrix of size ‘n1’-by-‘n2’ and + initializes it to all zeros. If the size of the matrix is not + known at allocation time, both ‘n1’ and ‘n2’ may be set to 1, and + they will automatically grow as elements are added to the matrix. + This function sets the matrix to the triplet representation, which + is the easiest for adding and accessing matrix elements. This + function tries to make a reasonable guess for the number of + non-zero elements (‘nzmax’) which will be added to the matrix by + assuming a sparse density of 10\%. The function *note + gsl_spmatrix_alloc_nzmax(): bbf. can be used if this number is + known more accurately. The workspace is of size O(nzmax). + + -- Function: gsl_spmatrix * gsl_spmatrix_alloc_nzmax (const size_t n1, + const size_t n2, const size_t nzmax, const size_t sptype) + + This function allocates a sparse matrix of size ‘n1’-by-‘n2’ and + initializes it to all zeros. If the size of the matrix is not + known at allocation time, both ‘n1’ and ‘n2’ may be set to 1, and + they will automatically grow as elements are added to the matrix. + The parameter ‘nzmax’ specifies the maximum number of non-zero + elements which will be added to the matrix. It does not need to be + precisely known in advance, since storage space will automatically + grow using *note gsl_spmatrix_realloc(): bc0. if ‘nzmax’ is not + large enough. Accurate knowledge of this parameter reduces the + number of reallocation calls required. The parameter ‘sptype’ + specifies the storage format of the sparse matrix. Possible values + are + + -- Macro: GSL_SPMATRIX_TRIPLET + + This flag specifies triplet storage. + + -- Macro: GSL_SPMATRIX_CCS + + This flag specifies compressed column storage. + + -- Macro: GSL_SPMATRIX_CRS + + This flag specifies compressed row storage. + + The allocated *note gsl_spmatrix: bbc. structure is of size + O(nzmax). + + -- Function: int gsl_spmatrix_realloc (const size_t nzmax, gsl_spmatrix + * m) + + This function reallocates the storage space for ‘m’ to accomodate + ‘nzmax’ non-zero elements. It is typically called internally by + *note gsl_spmatrix_set(): bc4. if the user wants to add more + elements to the sparse matrix than the previously specified + ‘nzmax’. + + -- Function: void gsl_spmatrix_free (gsl_spmatrix * m) + + This function frees the memory associated with the sparse matrix + ‘m’. + + +File: gsl-ref.info, Node: Accessing Matrix Elements, Next: Initializing Matrix Elements, Prev: Allocation, Up: Sparse Matrices + +43.3 Accessing Matrix Elements +============================== + + -- Function: double gsl_spmatrix_get (const gsl_spmatrix * m, const + size_t i, const size_t j) + + This function returns element (‘i’, ‘j’) of the matrix ‘m’. The + matrix may be in triplet or compressed format. + + -- Function: int gsl_spmatrix_set (gsl_spmatrix * m, const size_t i, + const size_t j, const double x) + + This function sets element (‘i’, ‘j’) of the matrix ‘m’ to the + value ‘x’. The matrix must be in triplet representation. + + -- Function: double * gsl_spmatrix_ptr (gsl_spmatrix * m, const + size_t i, const size_t j) + + This function returns a pointer to the (‘i’, ‘j’) element of the + matrix ‘m’. If the (‘i’, ‘j’) element is not explicitly stored in + the matrix, a null pointer is returned. + + +File: gsl-ref.info, Node: Initializing Matrix Elements, Next: Reading and Writing Matrices, Prev: Accessing Matrix Elements, Up: Sparse Matrices + +43.4 Initializing Matrix Elements +================================= + +Since the sparse matrix format only stores the non-zero elements, it is +automatically initialized to zero upon allocation. The function *note +gsl_spmatrix_set_zero(): bca. may be used to re-initialize a matrix to +zero after elements have been added to it. + + -- Function: int gsl_spmatrix_set_zero (gsl_spmatrix * m) + + This function sets (or resets) all the elements of the matrix ‘m’ + to zero. + + +File: gsl-ref.info, Node: Reading and Writing Matrices, Next: Copying Matrices, Prev: Initializing Matrix Elements, Up: Sparse Matrices + +43.5 Reading and Writing Matrices +================================= + + -- Function: int gsl_spmatrix_fwrite (FILE * stream, const gsl_spmatrix + * m) + + This function writes the elements of the matrix ‘m’ to the stream + ‘stream’ in binary format. The return value is 0 for success and + ‘GSL_EFAILED’ if there was a problem writing to the file. Since + the data is written in the native binary format it may not be + portable between different architectures. + + -- Function: int gsl_spmatrix_fread (FILE * stream, gsl_spmatrix * m) + + This function reads into the matrix ‘m’ from the open stream + ‘stream’ in binary format. The matrix ‘m’ must be preallocated + with the correct storage format, dimensions and have a sufficiently + large ‘nzmax’ in order to read in all matrix elements, otherwise + ‘GSL_EBADLEN’ is returned. The return value is 0 for success and + ‘GSL_EFAILED’ if there was a problem reading from the file. The + data is assumed to have been written in the native binary format on + the same architecture. + + -- Function: int gsl_spmatrix_fprintf (FILE * stream, const + gsl_spmatrix * m, const char * format) + + This function writes the elements of the matrix ‘m’ line-by-line to + the stream ‘stream’ using the format specifier ‘format’, which + should be one of the ‘%g’, ‘%e’ or ‘%f’ formats for floating point + numbers. The function returns 0 for success and ‘GSL_EFAILED’ if + there was a problem writing to the file. The input matrix ‘m’ may + be in any storage format, and the output file will be written in + MatrixMarket format. + + -- Function: gsl_spmatrix * gsl_spmatrix_fscanf (FILE * stream) + + This function reads sparse matrix data in the MatrixMarket format + from the stream ‘stream’ and stores it in a newly allocated matrix + which is returned in triplet format. The function returns 0 for + success and ‘GSL_EFAILED’ if there was a problem reading from the + file. The user should free the returned matrix when it is no + longer needed. + + +File: gsl-ref.info, Node: Copying Matrices, Next: Exchanging Rows and Columns, Prev: Reading and Writing Matrices, Up: Sparse Matrices + +43.6 Copying Matrices +===================== + + -- Function: int gsl_spmatrix_memcpy (gsl_spmatrix * dest, const + gsl_spmatrix * src) + + This function copies the elements of the sparse matrix ‘src’ into + ‘dest’. The two matrices must have the same dimensions and be in + the same storage format. + + +File: gsl-ref.info, Node: Exchanging Rows and Columns, Next: Matrix Operations, Prev: Copying Matrices, Up: Sparse Matrices + +43.7 Exchanging Rows and Columns +================================ + + -- Function: int gsl_spmatrix_transpose_memcpy (gsl_spmatrix * dest, + const gsl_spmatrix * src) + + This function copies the transpose of the sparse matrix ‘src’ into + ‘dest’. The dimensions of ‘dest’ must match the transpose of the + matrix ‘src’. Also, both matrices must use the same sparse storage + format. + + -- Function: int gsl_spmatrix_transpose (gsl_spmatrix * m) + + This function replaces the matrix ‘m’ by its transpose, preserving + the storage format of the input matrix. Currently, only triplet + matrix inputs are supported. + + -- Function: int gsl_spmatrix_transpose2 (gsl_spmatrix * m) + + This function replaces the matrix ‘m’ by its transpose, but changes + the storage format for compressed matrix inputs. Since compressed + column storage is the transpose of compressed row storage, this + function simply converts a CCS matrix to CRS and vice versa. This + is the most efficient way to transpose a compressed storage matrix, + but the user should note that the storage format of their + compressed matrix will change on output. For triplet matrices, the + output matrix is also in triplet storage. + + +File: gsl-ref.info, Node: Matrix Operations, Next: Matrix Properties, Prev: Exchanging Rows and Columns, Up: Sparse Matrices + +43.8 Matrix Operations +====================== + + -- Function: int gsl_spmatrix_add (gsl_spmatrix * c, const gsl_spmatrix + * a, const gsl_spmatrix * b) + + This function computes the sum c = a + b. The three matrices must + have the same dimensions and be stored in a compressed format. + + -- Function: int gsl_spmatrix_scale (gsl_spmatrix * m, const double x) + + This function scales all elements of the matrix ‘m’ by the constant + factor ‘x’. The result m(i,j) \leftarrow x m(i,j) is stored in + ‘m’. + + +File: gsl-ref.info, Node: Matrix Properties, Next: Finding Maximum and Minimum Elements, Prev: Matrix Operations, Up: Sparse Matrices + +43.9 Matrix Properties +====================== + + -- Function: size_t gsl_spmatrix_nnz (const gsl_spmatrix * m) + + This function returns the number of non-zero elements in ‘m’. + + -- Function: int gsl_spmatrix_equal (const gsl_spmatrix * a, const + gsl_spmatrix * b) + + This function returns 1 if the matrices ‘a’ and ‘b’ are equal (by + comparison of element values) and 0 otherwise. The matrices ‘a’ + and ‘b’ must be in the same sparse storage format for comparison. + + +File: gsl-ref.info, Node: Finding Maximum and Minimum Elements, Next: Compressed Format, Prev: Matrix Properties, Up: Sparse Matrices + +43.10 Finding Maximum and Minimum Elements +========================================== + + -- Function: int gsl_spmatrix_minmax (const gsl_spmatrix * m, double + * min_out, double * max_out) + + This function returns the minimum and maximum elements of the + matrix ‘m’, storing them in ‘min_out’ and ‘max_out’, and searching + only the non-zero values. + + +File: gsl-ref.info, Node: Compressed Format, Next: Conversion Between Sparse and Dense Matrices, Prev: Finding Maximum and Minimum Elements, Up: Sparse Matrices + +43.11 Compressed Format +======================= + +GSL supports compressed column storage (CCS) and compressed row storage +(CRS) formats. + + -- Function: gsl_spmatrix * gsl_spmatrix_ccs (const gsl_spmatrix * T) + + This function creates a sparse matrix in compressed column format + from the input sparse matrix ‘T’ which must be in triplet format. + A pointer to a newly allocated matrix is returned. The calling + function should free the newly allocated matrix when it is no + longer needed. + + -- Function: gsl_spmatrix * gsl_spmatrix_crs (const gsl_spmatrix * T) + + This function creates a sparse matrix in compressed row format from + the input sparse matrix ‘T’ which must be in triplet format. A + pointer to a newly allocated matrix is returned. The calling + function should free the newly allocated matrix when it is no + longer needed. + + +File: gsl-ref.info, Node: Conversion Between Sparse and Dense Matrices, Next: Examples<34>, Prev: Compressed Format, Up: Sparse Matrices + +43.12 Conversion Between Sparse and Dense Matrices +================================================== + +The *note gsl_spmatrix: bbc. structure can be converted into the dense +*note gsl_matrix: 39e. format and vice versa with the following +routines. + + -- Function: int gsl_spmatrix_d2sp (gsl_spmatrix * S, const gsl_matrix + * A) + + This function converts the dense matrix ‘A’ into sparse triplet + format and stores the result in ‘S’. + + -- Function: int gsl_spmatrix_sp2d (gsl_matrix * A, const gsl_spmatrix + * S) + + This function converts the sparse matrix ‘S’ into a dense matrix + and stores the result in ‘A’. ‘S’ must be in triplet format. + + +File: gsl-ref.info, Node: Examples<34>, Next: References and Further Reading<35>, Prev: Conversion Between Sparse and Dense Matrices, Up: Sparse Matrices + +43.13 Examples +============== + +The following example program builds a 5-by-4 sparse matrix and prints +it in triplet, compressed column, and compressed row format. The matrix +which is constructed is + + [ 0 0 3.1 4.6 ] + [ 1 0 7.2 0 ] + [ 0 0 0 0 ] + [ 2.1 2.9 0 8.5 ] + [ 4.1 0 0 0 ] + +The output of the program is: + + printing all matrix elements: + A(0,0) = 0 + A(0,1) = 0 + A(0,2) = 3.1 + A(0,3) = 4.6 + A(1,0) = 1 + . + . + . + A(4,0) = 4.1 + A(4,1) = 0 + A(4,2) = 0 + A(4,3) = 0 + matrix in triplet format (i,j,Aij): + (0, 2, 3.1) + (0, 3, 4.6) + (1, 0, 1.0) + (1, 2, 7.2) + (3, 0, 2.1) + (3, 1, 2.9) + (3, 3, 8.5) + (4, 0, 4.1) + matrix in compressed column format: + i = [ 1, 3, 4, 3, 0, 1, 0, 3, ] + p = [ 0, 3, 4, 6, 8, ] + d = [ 1, 2.1, 4.1, 2.9, 3.1, 7.2, 4.6, 8.5, ] + matrix in compressed row format: + i = [ 2, 3, 0, 2, 0, 1, 3, 0, ] + p = [ 0, 2, 4, 4, 7, 8, ] + d = [ 3.1, 4.6, 1, 7.2, 2.1, 2.9, 8.5, 4.1, ] + +We see in the compressed column output, the data array stores each +column contiguously, the array i stores the row index of the +corresponding data element, and the array p stores the index of the +start of each column in the data array. Similarly, for the compressed +row output, the data array stores each row contiguously, the array i +stores the column index of the corresponding data element, and the p +array stores the index of the start of each row in the data array. + + #include + #include + + #include + + int + main() + { + gsl_spmatrix *A = gsl_spmatrix_alloc(5, 4); /* triplet format */ + gsl_spmatrix *B, *C; + size_t i, j; + + /* build the sparse matrix */ + gsl_spmatrix_set(A, 0, 2, 3.1); + gsl_spmatrix_set(A, 0, 3, 4.6); + gsl_spmatrix_set(A, 1, 0, 1.0); + gsl_spmatrix_set(A, 1, 2, 7.2); + gsl_spmatrix_set(A, 3, 0, 2.1); + gsl_spmatrix_set(A, 3, 1, 2.9); + gsl_spmatrix_set(A, 3, 3, 8.5); + gsl_spmatrix_set(A, 4, 0, 4.1); + + printf("printing all matrix elements:\n"); + for (i = 0; i < 5; ++i) + for (j = 0; j < 4; ++j) + printf("A(%zu,%zu) = %g\n", i, j, + gsl_spmatrix_get(A, i, j)); + + /* print out elements in triplet format */ + printf("matrix in triplet format (i,j,Aij):\n"); + gsl_spmatrix_fprintf(stdout, A, "%.1f"); + + /* convert to compressed column format */ + B = gsl_spmatrix_ccs(A); + + printf("matrix in compressed column format:\n"); + printf("i = [ "); + for (i = 0; i < B->nz; ++i) + printf("%zu, ", B->i[i]); + printf("]\n"); + + printf("p = [ "); + for (i = 0; i < B->size2 + 1; ++i) + printf("%zu, ", B->p[i]); + printf("]\n"); + + printf("d = [ "); + for (i = 0; i < B->nz; ++i) + printf("%g, ", B->data[i]); + printf("]\n"); + + /* convert to compressed row format */ + C = gsl_spmatrix_crs(A); + + printf("matrix in compressed row format:\n"); + printf("i = [ "); + for (i = 0; i < C->nz; ++i) + printf("%zu, ", C->i[i]); + printf("]\n"); + + printf("p = [ "); + for (i = 0; i < C->size1 + 1; ++i) + printf("%zu, ", C->p[i]); + printf("]\n"); + + printf("d = [ "); + for (i = 0; i < C->nz; ++i) + printf("%g, ", C->data[i]); + printf("]\n"); + + gsl_spmatrix_free(A); + gsl_spmatrix_free(B); + gsl_spmatrix_free(C); + + return 0; + } + + +File: gsl-ref.info, Node: References and Further Reading<35>, Prev: Examples<34>, Up: Sparse Matrices + +43.14 References and Further Reading +==================================== + +The algorithms used by these functions are described in the following +sources, + + * Davis, T. A., Direct Methods for Sparse Linear Systems, SIAM, 2006. + + * CSparse software library, + ‘https://www.cise.ufl.edu/research/sparse/CSparse’ + + +File: gsl-ref.info, Node: Sparse BLAS Support, Next: Sparse Linear Algebra, Prev: Sparse Matrices, Up: Top + +44 Sparse BLAS Support +********************** + +The Sparse Basic Linear Algebra Subprograms (BLAS) define a set of +fundamental operations on vectors and sparse matrices which can be used +to create optimized higher-level linear algebra functionality. GSL +supports a limited number of BLAS operations for sparse matrices. + +The header file ‘gsl_spblas.h’ contains the prototypes for the sparse +BLAS functions and related declarations. + +* Menu: + +* Sparse BLAS operations:: +* References and Further Reading: References and Further Reading<36>. + + +File: gsl-ref.info, Node: Sparse BLAS operations, Next: References and Further Reading<36>, Up: Sparse BLAS Support + +44.1 Sparse BLAS operations +=========================== + + -- Function: int gsl_spblas_dgemv (const CBLAS_TRANSPOSE_t TransA, + const double alpha, const gsl_spmatrix * A, const gsl_vector + * x, const double beta, gsl_vector * y) + + This function computes the matrix-vector product and sum y + \leftarrow \alpha op(A) x + \beta y, where op(A) = A, A^T for + ‘TransA’ = ‘CblasNoTrans’, ‘CblasTrans’. In-place computations are + not supported, so ‘x’ and ‘y’ must be distinct vectors. The matrix + ‘A’ may be in triplet or compressed format. + + -- Function: int gsl_spblas_dgemm (const double alpha, const + gsl_spmatrix * A, const gsl_spmatrix * B, gsl_spmatrix * C) + + This function computes the sparse matrix-matrix product C = \alpha + A B. The matrices must be in compressed format. + + +File: gsl-ref.info, Node: References and Further Reading<36>, Prev: Sparse BLAS operations, Up: Sparse BLAS Support + +44.2 References and Further Reading +=================================== + +The algorithms used by these functions are described in the following +sources: + + * Davis, T. A., Direct Methods for Sparse Linear Systems, SIAM, 2006. + + * CSparse software library, + ‘https://www.cise.ufl.edu/research/sparse/CSparse’ + + +File: gsl-ref.info, Node: Sparse Linear Algebra, Next: Physical Constants, Prev: Sparse BLAS Support, Up: Top + +45 Sparse Linear Algebra +************************ + +This chapter describes functions for solving sparse linear systems of +equations. The library provides linear algebra routines which operate +directly on the *note gsl_spmatrix: bbc. and *note gsl_vector: 35d. +objects. + +The functions described in this chapter are declared in the header file +‘gsl_splinalg.h’. + +* Menu: + +* Overview: Overview<9>. +* Sparse Iterative Solvers:: +* Examples: Examples<35>. +* References and Further Reading: References and Further Reading<37>. + + +File: gsl-ref.info, Node: Overview<9>, Next: Sparse Iterative Solvers, Up: Sparse Linear Algebra + +45.1 Overview +============= + +This chapter is primarily concerned with the solution of the linear +system + + A x = b + +where A is a general square n-by-n non-singular sparse matrix, x is an +unknown n-by-1 vector, and b is a given n-by-1 right hand side vector. +There exist many methods for solving such sparse linear systems, which +broadly fall into either direct or iterative categories. Direct methods +include LU and QR decompositions, while iterative methods start with an +initial guess for the vector x and update the guess through iteration +until convergence. GSL does not currently provide any direct sparse +solvers. + + +File: gsl-ref.info, Node: Sparse Iterative Solvers, Next: Examples<35>, Prev: Overview<9>, Up: Sparse Linear Algebra + +45.2 Sparse Iterative Solvers +============================= + +* Menu: + +* Overview: Overview<10>. +* Types of Sparse Iterative Solvers:: +* Iterating the Sparse Linear System:: + + +File: gsl-ref.info, Node: Overview<10>, Next: Types of Sparse Iterative Solvers, Up: Sparse Iterative Solvers + +45.2.1 Overview +--------------- + +Many practical iterative methods of solving large n-by-n sparse linear +systems involve projecting an approximate solution for ‘x’ onto a +subspace of {\bf R}^n. If we define a m-dimensional subspace {\cal K} +as the subspace of approximations to the solution ‘x’, then m +constraints must be imposed to determine the next approximation. These +m constraints define another m-dimensional subspace denoted by {\cal L}. +The subspace dimension m is typically chosen to be much smaller than n +in order to reduce the computational effort needed to generate the next +approximate solution vector. The many iterative algorithms which exist +differ mainly in their choice of {\cal K} and {\cal L}. + + +File: gsl-ref.info, Node: Types of Sparse Iterative Solvers, Next: Iterating the Sparse Linear System, Prev: Overview<10>, Up: Sparse Iterative Solvers + +45.2.2 Types of Sparse Iterative Solvers +---------------------------------------- + +The sparse linear algebra library provides the following types of +iterative solvers: + + -- Type: gsl_splinalg_itersolve_type + + -- Variable: gsl_splinalg_itersolve_gmres + + This specifies the Generalized Minimum Residual Method + (GMRES). This is a projection method using {\cal K} = {\cal + K}_m and {\cal L} = A {\cal K}_m where {\cal K}_m is the m-th + Krylov subspace + + K_m = span( r_0, A r_0, ..., A^(m-1) r_0) + + and r_0 = b - A x_0 is the residual vector of the initial + guess x_0. If m is set equal to n, then the Krylov subspace + is {\bf R}^n and GMRES will provide the exact solution ‘x’. + However, the goal is for the method to arrive at a very good + approximation to ‘x’ using a much smaller subspace {\cal K}_m. + By default, the GMRES method selects m = MIN(n,10) but the + user may specify a different value for m. The GMRES storage + requirements grow as O(n(m+1)) and the number of flops grow as + O(4 m^2 n - 4 m^3 / 3). + + In the below function *note gsl_splinalg_itersolve_iterate(): + bf4, one GMRES iteration is defined as projecting the + approximate solution vector onto each Krylov subspace {\cal + K}_1, ..., {\cal K}_m, and so m can be kept smaller by + “restarting” the method and calling *note + gsl_splinalg_itersolve_iterate(): bf4. multiple times, + providing the updated approximation ‘x’ to each new call. If + the method is not adequately converging, the user may try + increasing the parameter m. + + GMRES is considered a robust general purpose iterative solver, + however there are cases where the method stagnates if the + matrix is not positive-definite and fails to reduce the + residual until the very last projection onto the subspace + {\cal K}_n = {\bf R}^n. In these cases, preconditioning the + linear system can help, but GSL does not currently provide any + preconditioners. + + +File: gsl-ref.info, Node: Iterating the Sparse Linear System, Prev: Types of Sparse Iterative Solvers, Up: Sparse Iterative Solvers + +45.2.3 Iterating the Sparse Linear System +----------------------------------------- + +The following functions are provided to allocate storage for the sparse +linear solvers and iterate the system to a solution. + + -- Function: gsl_splinalg_itersolve * gsl_splinalg_itersolve_alloc + (const gsl_splinalg_itersolve_type * T, const size_t n, const + size_t m) + + This function allocates a workspace for the iterative solution of + ‘n’-by-‘n’ sparse matrix systems. The iterative solver type is + specified by ‘T’. The argument ‘m’ specifies the size of the + solution candidate subspace {\cal K}_m. The dimension ‘m’ may be + set to 0 in which case a reasonable default value is used. + + -- Function: void gsl_splinalg_itersolve_free (gsl_splinalg_itersolve + * w) + + This function frees the memory associated with the workspace ‘w’. + + -- Function: const char * gsl_splinalg_itersolve_name (const + gsl_splinalg_itersolve * w) + + This function returns a string pointer to the name of the solver. + + -- Function: int gsl_splinalg_itersolve_iterate (const gsl_spmatrix + * A, const gsl_vector * b, const double tol, gsl_vector * x, + gsl_splinalg_itersolve * w) + + This function performs one iteration of the iterative method for + the sparse linear system specfied by the matrix ‘A’, right hand + side vector ‘b’ and solution vector ‘x’. On input, ‘x’ must be set + to an initial guess for the solution. On output, ‘x’ is updated to + give the current solution estimate. The parameter ‘tol’ specifies + the relative tolerance between the residual norm and norm of ‘b’ in + order to check for convergence. When the following condition is + satisfied: + + || A x - b || <= tol * || b || + + the method has converged, the function returns ‘GSL_SUCCESS’ and + the final solution is provided in ‘x’. Otherwise, the function + returns ‘GSL_CONTINUE’ to signal that more iterations are required. + Here, || \cdot || represents the Euclidean norm. The input matrix + ‘A’ may be in triplet or compressed format. + + -- Function: double gsl_splinalg_itersolve_normr (const + gsl_splinalg_itersolve * w) + + This function returns the current residual norm ||r|| = ||A x - + b||, which is updated after each call to *note + gsl_splinalg_itersolve_iterate(): bf4. + + +File: gsl-ref.info, Node: Examples<35>, Next: References and Further Reading<37>, Prev: Sparse Iterative Solvers, Up: Sparse Linear Algebra + +45.3 Examples +============= + +This example program demonstrates the sparse linear algebra routines on +the solution of a simple 1D Poisson equation on [0,1]: + + u''(x) = f(x) = -\pi^2 \sin(\pi x) + +with boundary conditions u(0) = u(1) = 0. The analytic solution of this +simple problem is u(x) = \sin{\pi x}. We will solve this problem by +finite differencing the left hand side to give + + 1/h^2 ( u_(i+1) - 2 u_i + u_(i-1) ) = f_i + +Defining a grid of N points, h = 1/(N-1). In the finite difference +equation above, u_0 = u_{N-1} = 0 are known from the boundary +conditions, so we will only put the equations for i = 1, ..., N-2 into +the matrix system. The resulting (N-2) \times (N-2) matrix equation is + +An example program which constructs and solves this system is given +below. The system is solved using the iterative GMRES solver. Here is +the output of the program: + + iter 0 residual = 4.297275996844e-11 + Converged + +showing that the method converged in a single iteration. The calculated +solution is shown in Fig. %s. + +[image src="sparse_poisson.png"] + +Figure: Solution of PDE + + #include + #include + #include + + #include + #include + #include + #include + + int + main() + { + const size_t N = 100; /* number of grid points */ + const size_t n = N - 2; /* subtract 2 to exclude boundaries */ + const double h = 1.0 / (N - 1.0); /* grid spacing */ + gsl_spmatrix *A = gsl_spmatrix_alloc(n ,n); /* triplet format */ + gsl_spmatrix *C; /* compressed format */ + gsl_vector *f = gsl_vector_alloc(n); /* right hand side vector */ + gsl_vector *u = gsl_vector_alloc(n); /* solution vector */ + size_t i; + + /* construct the sparse matrix for the finite difference equation */ + + /* construct first row */ + gsl_spmatrix_set(A, 0, 0, -2.0); + gsl_spmatrix_set(A, 0, 1, 1.0); + + /* construct rows [1:n-2] */ + for (i = 1; i < n - 1; ++i) + { + gsl_spmatrix_set(A, i, i + 1, 1.0); + gsl_spmatrix_set(A, i, i, -2.0); + gsl_spmatrix_set(A, i, i - 1, 1.0); + } + + /* construct last row */ + gsl_spmatrix_set(A, n - 1, n - 1, -2.0); + gsl_spmatrix_set(A, n - 1, n - 2, 1.0); + + /* scale by h^2 */ + gsl_spmatrix_scale(A, 1.0 / (h * h)); + + /* construct right hand side vector */ + for (i = 0; i < n; ++i) + { + double xi = (i + 1) * h; + double fi = -M_PI * M_PI * sin(M_PI * xi); + gsl_vector_set(f, i, fi); + } + + /* convert to compressed column format */ + C = gsl_spmatrix_ccs(A); + + /* now solve the system with the GMRES iterative solver */ + { + const double tol = 1.0e-6; /* solution relative tolerance */ + const size_t max_iter = 10; /* maximum iterations */ + const gsl_splinalg_itersolve_type *T = gsl_splinalg_itersolve_gmres; + gsl_splinalg_itersolve *work = + gsl_splinalg_itersolve_alloc(T, n, 0); + size_t iter = 0; + double residual; + int status; + + /* initial guess u = 0 */ + gsl_vector_set_zero(u); + + /* solve the system A u = f */ + do + { + status = gsl_splinalg_itersolve_iterate(C, f, tol, u, work); + + /* print out residual norm ||A*u - f|| */ + residual = gsl_splinalg_itersolve_normr(work); + fprintf(stderr, "iter %zu residual = %.12e\n", iter, residual); + + if (status == GSL_SUCCESS) + fprintf(stderr, "Converged\n"); + } + while (status == GSL_CONTINUE && ++iter < max_iter); + + /* output solution */ + for (i = 0; i < n; ++i) + { + double xi = (i + 1) * h; + double u_exact = sin(M_PI * xi); + double u_gsl = gsl_vector_get(u, i); + + printf("%f %.12e %.12e\n", xi, u_gsl, u_exact); + } + + gsl_splinalg_itersolve_free(work); + } + + gsl_spmatrix_free(A); + gsl_spmatrix_free(C); + gsl_vector_free(f); + gsl_vector_free(u); + + return 0; + } /* main() */ + + +File: gsl-ref.info, Node: References and Further Reading<37>, Prev: Examples<35>, Up: Sparse Linear Algebra + +45.4 References and Further Reading +=================================== + +The implementation of the GMRES iterative solver closely follows the +publications + + * H. F. Walker, Implementation of the GMRES method using Householder + transformations, SIAM J. Sci. Stat. Comput. 9(1), 1988. + + * Y. Saad, Iterative methods for sparse linear systems, 2nd edition, + SIAM, 2003. + + +File: gsl-ref.info, Node: Physical Constants, Next: IEEE floating-point arithmetic, Prev: Sparse Linear Algebra, Up: Top + +46 Physical Constants +********************* + +This chapter describes macros for the values of physical constants, such +as the speed of light, c, and gravitational constant, G. The values are +available in different unit systems, including the standard MKSA system +(meters, kilograms, seconds, amperes) and the CGSM system (centimeters, +grams, seconds, gauss), which is commonly used in Astronomy. + +The definitions of constants in the MKSA system are available in the +file ‘gsl_const_mksa.h’. The constants in the CGSM system are defined +in ‘gsl_const_cgsm.h’. Dimensionless constants, such as the fine +structure constant, which are pure numbers are defined in +‘gsl_const_num.h’. + +The full list of constants is described briefly below. Consult the +header files themselves for the values of the constants used in the +library. + +* Menu: + +* Fundamental Constants:: +* Astronomy and Astrophysics:: +* Atomic and Nuclear Physics:: +* Measurement of Time:: +* Imperial Units:: +* Speed and Nautical Units:: +* Printers Units:: +* Volume, Area and Length: Volume Area and Length. +* Mass and Weight:: +* Thermal Energy and Power:: +* Pressure:: +* Viscosity:: +* Light and Illumination:: +* Radioactivity:: +* Force and Energy:: +* Prefixes:: +* Examples: Examples<36>. +* References and Further Reading: References and Further Reading<38>. + + +File: gsl-ref.info, Node: Fundamental Constants, Next: Astronomy and Astrophysics, Up: Physical Constants + +46.1 Fundamental Constants +========================== + + -- Macro: GSL_CONST_MKSA_SPEED_OF_LIGHT + + The speed of light in vacuum, c. + + -- Macro: GSL_CONST_MKSA_VACUUM_PERMEABILITY + + The permeability of free space, \mu_0. This constant is defined in + the MKSA system only. + + -- Macro: GSL_CONST_MKSA_VACUUM_PERMITTIVITY + + The permittivity of free space, \epsilon_0. This constant is + defined in the MKSA system only. + + -- Macro: GSL_CONST_MKSA_PLANCKS_CONSTANT_H + + Planck’s constant, h. + + -- Macro: GSL_CONST_MKSA_PLANCKS_CONSTANT_HBAR + + Planck’s constant divided by 2\pi, \hbar. + + -- Macro: GSL_CONST_NUM_AVOGADRO + + Avogadro’s number, N_a. + + -- Macro: GSL_CONST_MKSA_FARADAY + + The molar charge of 1 Faraday. + + -- Macro: GSL_CONST_MKSA_BOLTZMANN + + The Boltzmann constant, k. + + -- Macro: GSL_CONST_MKSA_MOLAR_GAS + + The molar gas constant, R_0. + + -- Macro: GSL_CONST_MKSA_STANDARD_GAS_VOLUME + + The standard gas volume, V_0. + + -- Macro: GSL_CONST_MKSA_STEFAN_BOLTZMANN_CONSTANT + + The Stefan-Boltzmann radiation constant, \sigma. + + -- Macro: GSL_CONST_MKSA_GAUSS + + The magnetic field of 1 Gauss. + + +File: gsl-ref.info, Node: Astronomy and Astrophysics, Next: Atomic and Nuclear Physics, Prev: Fundamental Constants, Up: Physical Constants + +46.2 Astronomy and Astrophysics +=============================== + + -- Macro: GSL_CONST_MKSA_ASTRONOMICAL_UNIT + + The length of 1 astronomical unit (mean earth-sun distance), au. + + -- Macro: GSL_CONST_MKSA_GRAVITATIONAL_CONSTANT + + The gravitational constant, G. + + -- Macro: GSL_CONST_MKSA_LIGHT_YEAR + + The distance of 1 light-year, ly. + + -- Macro: GSL_CONST_MKSA_PARSEC + + The distance of 1 parsec, pc. + + -- Macro: GSL_CONST_MKSA_GRAV_ACCEL + + The standard gravitational acceleration on Earth, g. + + -- Macro: GSL_CONST_MKSA_SOLAR_MASS + + The mass of the Sun. + + +File: gsl-ref.info, Node: Atomic and Nuclear Physics, Next: Measurement of Time, Prev: Astronomy and Astrophysics, Up: Physical Constants + +46.3 Atomic and Nuclear Physics +=============================== + + -- Macro: GSL_CONST_MKSA_ELECTRON_CHARGE + + The charge of the electron, e. + + -- Macro: GSL_CONST_MKSA_ELECTRON_VOLT + + The energy of 1 electron volt, eV. + + -- Macro: GSL_CONST_MKSA_UNIFIED_ATOMIC_MASS + + The unified atomic mass, amu. + + -- Macro: GSL_CONST_MKSA_MASS_ELECTRON + + The mass of the electron, m_e. + + -- Macro: GSL_CONST_MKSA_MASS_MUON + + The mass of the muon, m_\mu. + + -- Macro: GSL_CONST_MKSA_MASS_PROTON + + The mass of the proton, m_p. + + -- Macro: GSL_CONST_MKSA_MASS_NEUTRON + + The mass of the neutron, m_n. + + -- Macro: GSL_CONST_NUM_FINE_STRUCTURE + + The electromagnetic fine structure constant \alpha. + + -- Macro: GSL_CONST_MKSA_RYDBERG + + The Rydberg constant, Ry, in units of energy. This is related to + the Rydberg inverse wavelength R_\infty by Ry = h c R_\infty. + + -- Macro: GSL_CONST_MKSA_BOHR_RADIUS + + The Bohr radius, a_0. + + -- Macro: GSL_CONST_MKSA_ANGSTROM + + The length of 1 angstrom. + + -- Macro: GSL_CONST_MKSA_BARN + + The area of 1 barn. + + -- Macro: GSL_CONST_MKSA_BOHR_MAGNETON + + The Bohr Magneton, \mu_B. + + -- Macro: GSL_CONST_MKSA_NUCLEAR_MAGNETON + + The Nuclear Magneton, \mu_N. + + -- Macro: GSL_CONST_MKSA_ELECTRON_MAGNETIC_MOMENT + + The absolute value of the magnetic moment of the electron, \mu_e. + The physical magnetic moment of the electron is negative. + + -- Macro: GSL_CONST_MKSA_PROTON_MAGNETIC_MOMENT + + The magnetic moment of the proton, \mu_p. + + -- Macro: GSL_CONST_MKSA_THOMSON_CROSS_SECTION + + The Thomson cross section, \sigma_T. + + -- Macro: GSL_CONST_MKSA_DEBYE + + The electric dipole moment of 1 Debye, D. + + +File: gsl-ref.info, Node: Measurement of Time, Next: Imperial Units, Prev: Atomic and Nuclear Physics, Up: Physical Constants + +46.4 Measurement of Time +======================== + + -- Macro: GSL_CONST_MKSA_MINUTE + + The number of seconds in 1 minute. + + -- Macro: GSL_CONST_MKSA_HOUR + + The number of seconds in 1 hour. + + -- Macro: GSL_CONST_MKSA_DAY + + The number of seconds in 1 day. + + -- Macro: GSL_CONST_MKSA_WEEK + + The number of seconds in 1 week. + + +File: gsl-ref.info, Node: Imperial Units, Next: Speed and Nautical Units, Prev: Measurement of Time, Up: Physical Constants + +46.5 Imperial Units +=================== + + -- Macro: GSL_CONST_MKSA_INCH + + The length of 1 inch. + + -- Macro: GSL_CONST_MKSA_FOOT + + The length of 1 foot. + + -- Macro: GSL_CONST_MKSA_YARD + + The length of 1 yard. + + -- Macro: GSL_CONST_MKSA_MILE + + The length of 1 mile. + + -- Macro: GSL_CONST_MKSA_MIL + + The length of 1 mil (1/1000th of an inch). + + +File: gsl-ref.info, Node: Speed and Nautical Units, Next: Printers Units, Prev: Imperial Units, Up: Physical Constants + +46.6 Speed and Nautical Units +============================= + + -- Macro: GSL_CONST_MKSA_KILOMETERS_PER_HOUR + + The speed of 1 kilometer per hour. + + -- Macro: GSL_CONST_MKSA_MILES_PER_HOUR + + The speed of 1 mile per hour. + + -- Macro: GSL_CONST_MKSA_NAUTICAL_MILE + + The length of 1 nautical mile. + + -- Macro: GSL_CONST_MKSA_FATHOM + + The length of 1 fathom. + + -- Macro: GSL_CONST_MKSA_KNOT + + The speed of 1 knot. + + +File: gsl-ref.info, Node: Printers Units, Next: Volume Area and Length, Prev: Speed and Nautical Units, Up: Physical Constants + +46.7 Printers Units +=================== + + -- Macro: GSL_CONST_MKSA_POINT + + The length of 1 printer’s point (1/72 inch). + + -- Macro: GSL_CONST_MKSA_TEXPOINT + + The length of 1 TeX point (1/72.27 inch). + + +File: gsl-ref.info, Node: Volume Area and Length, Next: Mass and Weight, Prev: Printers Units, Up: Physical Constants + +46.8 Volume, Area and Length +============================ + + -- Macro: GSL_CONST_MKSA_MICRON + + The length of 1 micron. + + -- Macro: GSL_CONST_MKSA_HECTARE + + The area of 1 hectare. + + -- Macro: GSL_CONST_MKSA_ACRE + + The area of 1 acre. + + -- Macro: GSL_CONST_MKSA_LITER + + The volume of 1 liter. + + -- Macro: GSL_CONST_MKSA_US_GALLON + + The volume of 1 US gallon. + + -- Macro: GSL_CONST_MKSA_CANADIAN_GALLON + + The volume of 1 Canadian gallon. + + -- Macro: GSL_CONST_MKSA_UK_GALLON + + The volume of 1 UK gallon. + + -- Macro: GSL_CONST_MKSA_QUART + + The volume of 1 quart. + + -- Macro: GSL_CONST_MKSA_PINT + + The volume of 1 pint. + + +File: gsl-ref.info, Node: Mass and Weight, Next: Thermal Energy and Power, Prev: Volume Area and Length, Up: Physical Constants + +46.9 Mass and Weight +==================== + + -- Macro: GSL_CONST_MKSA_POUND_MASS + + The mass of 1 pound. + + -- Macro: GSL_CONST_MKSA_OUNCE_MASS + + The mass of 1 ounce. + + -- Macro: GSL_CONST_MKSA_TON + + The mass of 1 ton. + + -- Macro: GSL_CONST_MKSA_METRIC_TON + + The mass of 1 metric ton (1000 kg). + + -- Macro: GSL_CONST_MKSA_UK_TON + + The mass of 1 UK ton. + + -- Macro: GSL_CONST_MKSA_TROY_OUNCE + + The mass of 1 troy ounce. + + -- Macro: GSL_CONST_MKSA_CARAT + + The mass of 1 carat. + + -- Macro: GSL_CONST_MKSA_GRAM_FORCE + + The force of 1 gram weight. + + -- Macro: GSL_CONST_MKSA_POUND_FORCE + + The force of 1 pound weight. + + -- Macro: GSL_CONST_MKSA_KILOPOUND_FORCE + + The force of 1 kilopound weight. + + -- Macro: GSL_CONST_MKSA_POUNDAL + + The force of 1 poundal. + + +File: gsl-ref.info, Node: Thermal Energy and Power, Next: Pressure, Prev: Mass and Weight, Up: Physical Constants + +46.10 Thermal Energy and Power +============================== + + -- Macro: GSL_CONST_MKSA_CALORIE + + The energy of 1 calorie. + + -- Macro: GSL_CONST_MKSA_BTU + + The energy of 1 British Thermal Unit, btu. + + -- Macro: GSL_CONST_MKSA_THERM + + The energy of 1 Therm. + + -- Macro: GSL_CONST_MKSA_HORSEPOWER + + The power of 1 horsepower. + + +File: gsl-ref.info, Node: Pressure, Next: Viscosity, Prev: Thermal Energy and Power, Up: Physical Constants + +46.11 Pressure +============== + + -- Macro: GSL_CONST_MKSA_BAR + + The pressure of 1 bar. + + -- Macro: GSL_CONST_MKSA_STD_ATMOSPHERE + + The pressure of 1 standard atmosphere. + + -- Macro: GSL_CONST_MKSA_TORR + + The pressure of 1 torr. + + -- Macro: GSL_CONST_MKSA_METER_OF_MERCURY + + The pressure of 1 meter of mercury. + + -- Macro: GSL_CONST_MKSA_INCH_OF_MERCURY + + The pressure of 1 inch of mercury. + + -- Macro: GSL_CONST_MKSA_INCH_OF_WATER + + The pressure of 1 inch of water. + + -- Macro: GSL_CONST_MKSA_PSI + + The pressure of 1 pound per square inch. + + +File: gsl-ref.info, Node: Viscosity, Next: Light and Illumination, Prev: Pressure, Up: Physical Constants + +46.12 Viscosity +=============== + + -- Macro: GSL_CONST_MKSA_POISE + + The dynamic viscosity of 1 poise. + + -- Macro: GSL_CONST_MKSA_STOKES + + The kinematic viscosity of 1 stokes. + + +File: gsl-ref.info, Node: Light and Illumination, Next: Radioactivity, Prev: Viscosity, Up: Physical Constants + +46.13 Light and Illumination +============================ + + -- Macro: GSL_CONST_MKSA_STILB + + The luminance of 1 stilb. + + -- Macro: GSL_CONST_MKSA_LUMEN + + The luminous flux of 1 lumen. + + -- Macro: GSL_CONST_MKSA_LUX + + The illuminance of 1 lux. + + -- Macro: GSL_CONST_MKSA_PHOT + + The illuminance of 1 phot. + + -- Macro: GSL_CONST_MKSA_FOOTCANDLE + + The illuminance of 1 footcandle. + + -- Macro: GSL_CONST_MKSA_LAMBERT + + The luminance of 1 lambert. + + -- Macro: GSL_CONST_MKSA_FOOTLAMBERT + + The luminance of 1 footlambert. + + +File: gsl-ref.info, Node: Radioactivity, Next: Force and Energy, Prev: Light and Illumination, Up: Physical Constants + +46.14 Radioactivity +=================== + + -- Macro: GSL_CONST_MKSA_CURIE + + The activity of 1 curie. + + -- Macro: GSL_CONST_MKSA_ROENTGEN + + The exposure of 1 roentgen. + + -- Macro: GSL_CONST_MKSA_RAD + + The absorbed dose of 1 rad. + + +File: gsl-ref.info, Node: Force and Energy, Next: Prefixes, Prev: Radioactivity, Up: Physical Constants + +46.15 Force and Energy +====================== + + -- Macro: GSL_CONST_MKSA_NEWTON + + The SI unit of force, 1 Newton. + + -- Macro: GSL_CONST_MKSA_DYNE + + The force of 1 Dyne = 10^{-5} Newton. + + -- Macro: GSL_CONST_MKSA_JOULE + + The SI unit of energy, 1 Joule. + + -- Macro: GSL_CONST_MKSA_ERG + + The energy 1 erg = 10^{-7} Joule. + + +File: gsl-ref.info, Node: Prefixes, Next: Examples<36>, Prev: Force and Energy, Up: Physical Constants + +46.16 Prefixes +============== + +These constants are dimensionless scaling factors. + + -- Macro: GSL_CONST_NUM_YOTTA + + 10^{24} + + -- Macro: GSL_CONST_NUM_ZETTA + + 10^{21} + + -- Macro: GSL_CONST_NUM_EXA + + 10^{18} + + -- Macro: GSL_CONST_NUM_PETA + + 10^{15} + + -- Macro: GSL_CONST_NUM_TERA + + 10^{12} + + -- Macro: GSL_CONST_NUM_GIGA + + 10^9 + + -- Macro: GSL_CONST_NUM_MEGA + + 10^6 + + -- Macro: GSL_CONST_NUM_KILO + + 10^3 + + -- Macro: GSL_CONST_NUM_MILLI + + 10^{-3} + + -- Macro: GSL_CONST_NUM_MICRO + + 10^{-6} + + -- Macro: GSL_CONST_NUM_NANO + + 10^{-9} + + -- Macro: GSL_CONST_NUM_PICO + + 10^{-12} + + -- Macro: GSL_CONST_NUM_FEMTO + + 10^{-15} + + -- Macro: GSL_CONST_NUM_ATTO + + 10^{-18} + + -- Macro: GSL_CONST_NUM_ZEPTO + + 10^{-21} + + -- Macro: GSL_CONST_NUM_YOCTO + + 10^{-24} + + +File: gsl-ref.info, Node: Examples<36>, Next: References and Further Reading<38>, Prev: Prefixes, Up: Physical Constants + +46.17 Examples +============== + +The following program demonstrates the use of the physical constants in +a calculation. In this case, the goal is to calculate the range of +light-travel times from Earth to Mars. + +The required data is the average distance of each planet from the Sun in +astronomical units (the eccentricities and inclinations of the orbits +will be neglected for the purposes of this calculation). The average +radius of the orbit of Mars is 1.52 astronomical units, and for the +orbit of Earth it is 1 astronomical unit (by definition). These values +are combined with the MKSA values of the constants for the speed of +light and the length of an astronomical unit to produce a result for the +shortest and longest light-travel times in seconds. The figures are +converted into minutes before being displayed. + + #include + #include + + int + main (void) + { + double c = GSL_CONST_MKSA_SPEED_OF_LIGHT; + double au = GSL_CONST_MKSA_ASTRONOMICAL_UNIT; + double minutes = GSL_CONST_MKSA_MINUTE; + + /* distance stored in meters */ + double r_earth = 1.00 * au; + double r_mars = 1.52 * au; + + double t_min, t_max; + + t_min = (r_mars - r_earth) / c; + t_max = (r_mars + r_earth) / c; + + printf ("light travel time from Earth to Mars:\n"); + printf ("minimum = %.1f minutes\n", t_min / minutes); + printf ("maximum = %.1f minutes\n", t_max / minutes); + + return 0; + } + +Here is the output from the program, + + light travel time from Earth to Mars: + minimum = 4.3 minutes + maximum = 21.0 minutes + + +File: gsl-ref.info, Node: References and Further Reading<38>, Prev: Examples<36>, Up: Physical Constants + +46.18 References and Further Reading +==================================== + +The authoritative sources for physical constants are the 2006 CODATA +recommended values, published in the article below. Further information +on the values of physical constants is also available from the NIST +website. + + * P.J. Mohr, B.N. Taylor, D.B. Newell, “CODATA Recommended Values of + the Fundamental Physical Constants: 2006”, Reviews of Modern + Physics, 80(2), pp. 633–730 (2008). + + * ‘http://www.physics.nist.gov/cuu/Constants/index.html’ + + * ‘http://physics.nist.gov/Pubs/SP811/appenB9.html’ + + +File: gsl-ref.info, Node: IEEE floating-point arithmetic, Next: Debugging Numerical Programs, Prev: Physical Constants, Up: Top + +47 IEEE floating-point arithmetic +********************************* + +This chapter describes functions for examining the representation of +floating point numbers and controlling the floating point environment of +your program. The functions described in this chapter are declared in +the header file ‘gsl_ieee_utils.h’. + +* Menu: + +* Representation of floating point numbers:: +* Setting up your IEEE environment:: +* References and Further Reading: References and Further Reading<39>. + + +File: gsl-ref.info, Node: Representation of floating point numbers, Next: Setting up your IEEE environment, Up: IEEE floating-point arithmetic + +47.1 Representation of floating point numbers +============================================= + +The IEEE Standard for Binary Floating-Point Arithmetic defines binary +formats for single and double precision numbers. Each number is +composed of three parts: a `sign bit' (s), an `exponent' (E) and a +`fraction' (f). The numerical value of the combination (s,E,f) is given +by the following formula, + + (-1)^s (1.fffff...) 2^E + +The sign bit is either zero or one. The exponent ranges from a minimum +value E_{min} to a maximum value E_{max} depending on the precision. +The exponent is converted to an unsigned number e, known as the `biased +exponent', for storage by adding a `bias' parameter, + + e = E + bias + +The sequence fffff... represents the digits of the binary fraction f. +The binary digits are stored in `normalized form', by adjusting the +exponent to give a leading digit of 1. Since the leading digit is +always 1 for normalized numbers it is assumed implicitly and does not +have to be stored. Numbers smaller than 2^{E_{min}} are be stored in +`denormalized form' with a leading zero, + + (-1)^s (0.fffff...) 2^(E_min) + +This allows gradual underflow down to 2^{E_{min} - p} for p bits of +precision. A zero is encoded with the special exponent of 2^{E_{min}-1} +and infinities with the exponent of 2^{E_{max}+1}. + +The format for single precision numbers uses 32 bits divided in the +following way: + + seeeeeeeefffffffffffffffffffffff + + s = sign bit, 1 bit + e = exponent, 8 bits (E_min=-126, E_max=127, bias=127) + f = fraction, 23 bits + +The format for double precision numbers uses 64 bits divided in the +following way: + + seeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffff + + s = sign bit, 1 bit + e = exponent, 11 bits (E_min=-1022, E_max=1023, bias=1023) + f = fraction, 52 bits + +It is often useful to be able to investigate the behavior of a +calculation at the bit-level and the library provides functions for +printing the IEEE representations in a human-readable form. + + -- Function: void gsl_ieee_fprintf_float (FILE * stream, const float + * x) + -- Function: void gsl_ieee_fprintf_double (FILE * stream, const double + * x) + + These functions output a formatted version of the IEEE + floating-point number pointed to by ‘x’ to the stream ‘stream’. A + pointer is used to pass the number indirectly, to avoid any + undesired promotion from ‘float’ to ‘double’. The output takes one + of the following forms, + + ‘NaN’ + + the Not-a-Number symbol + + ‘Inf, -Inf’ + + positive or negative infinity + + ‘1.fffff...*2^E, -1.fffff...*2^E’ + + a normalized floating point number + + ‘0.fffff...*2^E, -0.fffff...*2^E’ + + a denormalized floating point number + + ‘0, -0’ + + positive or negative zero + + The output can be used directly in GNU Emacs Calc mode by preceding + it with ‘2#’ to indicate binary. + + -- Function: void gsl_ieee_printf_float (const float * x) + -- Function: void gsl_ieee_printf_double (const double * x) + + These functions output a formatted version of the IEEE + floating-point number pointed to by ‘x’ to the stream ‘stdout’. + +The following program demonstrates the use of the functions by printing +the single and double precision representations of the fraction 1/3. +For comparison the representation of the value promoted from single to +double precision is also printed. + + #include + #include + + int + main (void) + { + float f = 1.0/3.0; + double d = 1.0/3.0; + + double fd = f; /* promote from float to double */ + + printf (" f="); gsl_ieee_printf_float(&f); + printf ("\n"); + + printf ("fd="); gsl_ieee_printf_double(&fd); + printf ("\n"); + + printf (" d="); gsl_ieee_printf_double(&d); + printf ("\n"); + + return 0; + } + +The binary representation of 1/3 is 0.01010101.... The output below +shows that the IEEE format normalizes this fraction to give a leading +digit of 1: + + f= 1.01010101010101010101011*2^-2 + fd= 1.0101010101010101010101100000000000000000000000000000*2^-2 + d= 1.0101010101010101010101010101010101010101010101010101*2^-2 + +The output also shows that a single-precision number is promoted to +double-precision by adding zeros in the binary representation. + + +File: gsl-ref.info, Node: Setting up your IEEE environment, Next: References and Further Reading<39>, Prev: Representation of floating point numbers, Up: IEEE floating-point arithmetic + +47.2 Setting up your IEEE environment +===================================== + +The IEEE standard defines several `modes' for controlling the behavior +of floating point operations. These modes specify the important +properties of computer arithmetic: the direction used for rounding (e.g. +whether numbers should be rounded up, down or to the nearest number), +the rounding precision and how the program should handle arithmetic +exceptions, such as division by zero. + +Many of these features can now be controlled via standard functions such +as ‘fpsetround()’, which should be used whenever they are available. +Unfortunately in the past there has been no universal API for +controlling their behavior—each system has had its own low-level way of +accessing them. To help you write portable programs GSL allows you to +specify modes in a platform-independent way using the environment +variable *note GSL_IEEE_MODE: c8d. The library then takes care of all +the necessary machine-specific initializations for you when you call the +function *note gsl_ieee_env_setup(): c8e. + + -- Macro: GSL_IEEE_MODE + + Environment variable which specifies IEEE mode. + + -- Function: void gsl_ieee_env_setup () + + This function reads the environment variable *note GSL_IEEE_MODE: + c8d. and attempts to set up the corresponding specified IEEE modes. + The environment variable should be a list of keywords, separated by + commas, like this: + + GSL_IEEE_MODE = "keyword, keyword, ..." + + where ‘keyword’ is one of the following mode-names: + + single-precision + double-precision + extended-precision + round-to-nearest + round-down + round-up + round-to-zero + mask-all + mask-invalid + mask-denormalized + mask-division-by-zero + mask-overflow + mask-underflow + trap-inexact + trap-common + + If *note GSL_IEEE_MODE: c8d. is empty or undefined then the + function returns immediately and no attempt is made to change the + system’s IEEE mode. When the modes from *note GSL_IEEE_MODE: c8d. + are turned on the function prints a short message showing the new + settings to remind you that the results of the program will be + affected. + + If the requested modes are not supported by the platform being used + then the function calls the error handler and returns an error code + of ‘GSL_EUNSUP’. + + When options are specified using this method, the resulting mode is + based on a default setting of the highest available precision + (double precision or extended precision, depending on the platform) + in round-to-nearest mode, with all exceptions enabled apart from + the INEXACT exception. The INEXACT exception is generated whenever + rounding occurs, so it must generally be disabled in typical + scientific calculations. All other floating-point exceptions are + enabled by default, including underflows and the use of + denormalized numbers, for safety. They can be disabled with the + individual ‘mask-’ settings or together using ‘mask-all’. + + The following adjusted combination of modes is convenient for many + purposes: + + GSL_IEEE_MODE="double-precision,"\ + "mask-underflow,"\ + "mask-denormalized" + + This choice ignores any errors relating to small numbers (either + denormalized, or underflowing to zero) but traps overflows, + division by zero and invalid operations. + + Note that on the x86 series of processors this function sets both + the original x87 mode and the newer MXCSR mode, which controls SSE + floating-point operations. The SSE floating-point units do not + have a precision-control bit, and always work in double-precision. + The single-precision and extended-precision keywords have no effect + in this case. + +To demonstrate the effects of different rounding modes consider the +following program which computes e, the base of natural logarithms, by +summing a rapidly-decreasing series, + + e = 1 + 1/2! + 1/3! + 1/4! + ... + = 2.71828182846... + + #include + #include + #include + + int + main (void) + { + double x = 1, oldsum = 0, sum = 0; + int i = 0; + + gsl_ieee_env_setup (); /* read GSL_IEEE_MODE */ + + do + { + i++; + + oldsum = sum; + sum += x; + x = x / i; + + printf ("i=%2d sum=%.18f error=%g\n", + i, sum, sum - M_E); + + if (i > 30) + break; + } + while (sum != oldsum); + + return 0; + } + +Here are the results of running the program in ‘round-to-nearest’ mode. +This is the IEEE default so it isn’t really necessary to specify it +here: + + $ GSL_IEEE_MODE="round-to-nearest" ./a.out + i= 1 sum=1.000000000000000000 error=-1.71828 + i= 2 sum=2.000000000000000000 error=-0.718282 + .... + i=18 sum=2.718281828459045535 error=4.44089e-16 + i=19 sum=2.718281828459045535 error=4.44089e-16 + +After nineteen terms the sum converges to within 4 \times 10^{-16} of +the correct value. If we now change the rounding mode to ‘round-down’ +the final result is less accurate: + + $ GSL_IEEE_MODE="round-down" ./a.out + i= 1 sum=1.000000000000000000 error=-1.71828 + .... + i=19 sum=2.718281828459041094 error=-3.9968e-15 + +The result is about 4 \times 10^{-15} below the correct value, an order +of magnitude worse than the result obtained in the ‘round-to-nearest’ +mode. + +If we change to rounding mode to ‘round-up’ then the final result is +higher than the correct value (when we add each term to the sum the +final result is always rounded up, which increases the sum by at least +one tick until the added term underflows to zero). To avoid this +problem we would need to use a safer converge criterion, such as ‘while +(fabs(sum - oldsum) > epsilon)’, with a suitably chosen value of +epsilon. + +Finally we can see the effect of computing the sum using +single-precision rounding, in the default ‘round-to-nearest’ mode. In +this case the program thinks it is still using double precision numbers +but the CPU rounds the result of each floating point operation to +single-precision accuracy. This simulates the effect of writing the +program using single-precision ‘float’ variables instead of ‘double’ +variables. The iteration stops after about half the number of +iterations and the final result is much less accurate: + + $ GSL_IEEE_MODE="single-precision" ./a.out + .... + i=12 sum=2.718281984329223633 error=1.5587e-07 + +with an error of O(10^{-7}), which corresponds to single precision +accuracy (about 1 part in 10^7). Continuing the iterations further does +not decrease the error because all the subsequent results are rounded to +the same value. + + +File: gsl-ref.info, Node: References and Further Reading<39>, Prev: Setting up your IEEE environment, Up: IEEE floating-point arithmetic + +47.3 References and Further Reading +=================================== + +The reference for the IEEE standard is, + + * ANSI/IEEE Std 754-1985, IEEE Standard for Binary Floating-Point + Arithmetic. + +A more pedagogical introduction to the standard can be found in the +following paper, + + * David Goldberg: What Every Computer Scientist Should Know About + Floating-Point Arithmetic. `ACM Computing Surveys', Vol.: 23, No.: + 1 (March 1991), pages 5–48. + + * Corrigendum: `ACM Computing Surveys', Vol.: 23, No.: 3 (September + 1991), page 413. and see also the sections by B. A. Wichmann and + Charles B. Dunham in Surveyor’s Forum: “What Every Computer + Scientist Should Know About Floating-Point Arithmetic”. `ACM + Computing Surveys', Vol.: 24, No.: 3 (September 1992), page 319. + +A detailed textbook on IEEE arithmetic and its practical use is +available from SIAM Press, + + * Michael L. Overton, `Numerical Computing with IEEE Floating Point + Arithmetic', SIAM Press, ISBN 0898715717. + + +File: gsl-ref.info, Node: Debugging Numerical Programs, Next: Contributors to GSL, Prev: IEEE floating-point arithmetic, Up: Top + +48 Debugging Numerical Programs +******************************* + +This chapter describes some tips and tricks for debugging numerical +programs which use GSL. + +* Menu: + +* Using gdb:: +* Examining floating point registers:: +* Handling floating point exceptions:: +* GCC warning options for numerical programs:: +* References and Further Reading: References and Further Reading<40>. + + +File: gsl-ref.info, Node: Using gdb, Next: Examining floating point registers, Up: Debugging Numerical Programs + +48.1 Using gdb +============== + +Any errors reported by the library are passed to the function +‘gsl_error()’. By running your programs under gdb and setting a +breakpoint in this function you can automatically catch any library +errors. You can add a breakpoint for every session by putting: + + break gsl_error + +into your ‘.gdbinit’ file in the directory where your program is +started. + +If the breakpoint catches an error then you can use a backtrace (‘bt’) +to see the call-tree, and the arguments which possibly caused the error. +By moving up into the calling function you can investigate the values of +variables at that point. Here is an example from the program +‘fft/test_trap’, which contains the following line: + + status = gsl_fft_complex_wavetable_alloc (0, &complex_wavetable); + +The function *note gsl_fft_complex_wavetable_alloc(): 5ca. takes the +length of an FFT as its first argument. When this line is executed an +error will be generated because the length of an FFT is not allowed to +be zero. + +To debug this problem we start ‘gdb’, using the file ‘.gdbinit’ to +define a breakpoint in ‘gsl_error()’: + + $ gdb test_trap + + GDB is free software and you are welcome to distribute copies + of it under certain conditions; type "show copying" to see + the conditions. There is absolutely no warranty for GDB; + type "show warranty" for details. GDB 4.16 (i586-debian-linux), + Copyright 1996 Free Software Foundation, Inc. + + Breakpoint 1 at 0x8050b1e: file error.c, line 14. + +When we run the program this breakpoint catches the error and shows the +reason for it: + + (gdb) run + Starting program: test_trap + + Breakpoint 1, gsl_error (reason=0x8052b0d + "length n must be positive integer", + file=0x8052b04 "c_init.c", line=108, gsl_errno=1) + at error.c:14 + 14 if (gsl_error_handler) + +The first argument of ‘gsl_error()’ is always a string describing the +error. Now we can look at the backtrace to see what caused the problem: + + (gdb) bt + #0 gsl_error (reason=0x8052b0d + "length n must be positive integer", + file=0x8052b04 "c_init.c", line=108, gsl_errno=1) + at error.c:14 + #1 0x8049376 in gsl_fft_complex_wavetable_alloc (n=0, + wavetable=0xbffff778) at c_init.c:108 + #2 0x8048a00 in main (argc=1, argv=0xbffff9bc) + at test_trap.c:94 + #3 0x80488be in ___crt_dummy__ () + +We can see that the error was generated in the function *note +gsl_fft_complex_wavetable_alloc(): 5ca. when it was called with an +argument of ‘n = 0’. The original call came from line 94 in the file +‘test_trap.c’. + +By moving up to the level of the original call we can find the line that +caused the error: + + (gdb) up + #1 0x8049376 in gsl_fft_complex_wavetable_alloc (n=0, + wavetable=0xbffff778) at c_init.c:108 + 108 GSL_ERROR ("length n must be positive integer", GSL_EDOM); + (gdb) up + #2 0x8048a00 in main (argc=1, argv=0xbffff9bc) + at test_trap.c:94 + 94 status = gsl_fft_complex_wavetable_alloc (0, + &complex_wavetable); + +Thus we have found the line that caused the problem. From this point we +could also print out the values of other variables such as +‘complex_wavetable’. + + +File: gsl-ref.info, Node: Examining floating point registers, Next: Handling floating point exceptions, Prev: Using gdb, Up: Debugging Numerical Programs + +48.2 Examining floating point registers +======================================= + +The contents of floating point registers can be examined using the +command ‘info float’ (on supported platforms): + + (gdb) info float + st0: 0xc4018b895aa17a945000 Valid Normal -7.838871e+308 + st1: 0x3ff9ea3f50e4d7275000 Valid Normal 0.0285946 + st2: 0x3fe790c64ce27dad4800 Valid Normal 6.7415931e-08 + st3: 0x3ffaa3ef0df6607d7800 Spec Normal 0.0400229 + st4: 0x3c028000000000000000 Valid Normal 4.4501477e-308 + st5: 0x3ffef5412c22219d9000 Zero Normal 0.9580257 + st6: 0x3fff8000000000000000 Valid Normal 1 + st7: 0xc4028b65a1f6d243c800 Valid Normal -1.566206e+309 + fctrl: 0x0272 53 bit; NEAR; mask DENOR UNDER LOS; + fstat: 0xb9ba flags 0001; top 7; excep DENOR OVERF UNDER LOS + ftag: 0x3fff + fip: 0x08048b5c + fcs: 0x051a0023 + fopoff: 0x08086820 + fopsel: 0x002b + +Individual registers can be examined using the variables ‘$reg’, where +‘reg’ is the register name: + + (gdb) p $st1 + $1 = 0.02859464454261210347719 + + +File: gsl-ref.info, Node: Handling floating point exceptions, Next: GCC warning options for numerical programs, Prev: Examining floating point registers, Up: Debugging Numerical Programs + +48.3 Handling floating point exceptions +======================================= + +It is possible to stop the program whenever a ‘SIGFPE’ floating point +exception occurs. This can be useful for finding the cause of an +unexpected infinity or ‘NaN’. The current handler settings can be shown +with the command ‘info signal SIGFPE’: + + (gdb) info signal SIGFPE + Signal Stop Print Pass to program Description + SIGFPE Yes Yes Yes Arithmetic exception + +Unless the program uses a signal handler the default setting should be +changed so that SIGFPE is not passed to the program, as this would cause +it to exit. The command ‘handle SIGFPE stop nopass’ prevents this: + + (gdb) handle SIGFPE stop nopass + Signal Stop Print Pass to program Description + SIGFPE Yes Yes No Arithmetic exception + +Depending on the platform it may be necessary to instruct the kernel to +generate signals for floating point exceptions. For programs using GSL +this can be achieved using the *note GSL_IEEE_MODE: c8d. environment +variable in conjunction with the function *note gsl_ieee_env_setup(): +c8e. as described in *note IEEE floating-point arithmetic: c86.: + + (gdb) set env GSL_IEEE_MODE=double-precision + + +File: gsl-ref.info, Node: GCC warning options for numerical programs, Next: References and Further Reading<40>, Prev: Handling floating point exceptions, Up: Debugging Numerical Programs + +48.4 GCC warning options for numerical programs +=============================================== + +Writing reliable numerical programs in C requires great care. The +following GCC warning options are recommended when compiling numerical +programs: + + gcc -ansi -pedantic -Werror -Wall -W + -Wmissing-prototypes -Wstrict-prototypes + -Wconversion -Wshadow -Wpointer-arith + -Wcast-qual -Wcast-align + -Wwrite-strings -Wnested-externs + -fshort-enums -fno-common -Dinline= -g -O2 + +For details of each option consult the manual `Using and Porting GCC'. +The following table gives a brief explanation of what types of errors +these options catch. + +‘-ansi -pedantic’ + + Use ANSI C, and reject any non-ANSI extensions. These flags help + in writing portable programs that will compile on other systems. + +‘-Werror’ + + Consider warnings to be errors, so that compilation stops. This + prevents warnings from scrolling off the top of the screen and + being lost. You won’t be able to compile the program until it is + completely warning-free. + +‘-Wall’ + + This turns on a set of warnings for common programming problems. + You need ‘-Wall’, but it is not enough on its own. + +‘-O2’ + + Turn on optimization. The warnings for uninitialized variables in + ‘-Wall’ rely on the optimizer to analyze the code. If there is no + optimization then these warnings aren’t generated. + +‘-W’ + + This turns on some extra warnings not included in ‘-Wall’, such as + missing return values and comparisons between signed and unsigned + integers. + +‘-Wmissing-prototypes -Wstrict-prototypes’ + + Warn if there are any missing or inconsistent prototypes. Without + prototypes it is harder to detect problems with incorrect + arguments. + +‘-Wconversion’ + + The main use of this option is to warn about conversions from + signed to unsigned integers. For example, ‘unsigned int x = -1’. + If you need to perform such a conversion you can use an explicit + cast. + +‘-Wshadow’ + + This warns whenever a local variable shadows another local + variable. If two variables have the same name then it is a + potential source of confusion. + +‘-Wpointer-arith -Wcast-qual -Wcast-align’ + + These options warn if you try to do pointer arithmetic for types + which don’t have a size, such as ‘void’, if you remove a ‘const’ + cast from a pointer, or if you cast a pointer to a type which has a + different size, causing an invalid alignment. + +‘-Wwrite-strings’ + + This option gives string constants a ‘const’ qualifier so that it + will be a compile-time error to attempt to overwrite them. + +‘-fshort-enums’ + + This option makes the type of ‘enum’ as short as possible. + Normally this makes an ‘enum’ different from an ‘int’. + Consequently any attempts to assign a pointer-to-int to a + pointer-to-enum will generate a cast-alignment warning. + +‘-fno-common’ + + This option prevents global variables being simultaneously defined + in different object files (you get an error at link time). Such a + variable should be defined in one file and referred to in other + files with an ‘extern’ declaration. + +‘-Wnested-externs’ + + This warns if an ‘extern’ declaration is encountered within a + function. + +‘-Dinline=’ + + The ‘inline’ keyword is not part of ANSI C. Thus if you want to use + ‘-ansi’ with a program which uses inline functions you can use this + preprocessor definition to remove the ‘inline’ keywords. + +‘-g’ + + It always makes sense to put debugging symbols in the executable so + that you can debug it using ‘gdb’. The only effect of debugging + symbols is to increase the size of the file, and you can use the + ‘strip’ command to remove them later if necessary. + + +File: gsl-ref.info, Node: References and Further Reading<40>, Prev: GCC warning options for numerical programs, Up: Debugging Numerical Programs + +48.5 References and Further Reading +=================================== + +The following books are essential reading for anyone writing and +debugging numerical programs with ‘gcc’ and ‘gdb’. + + * R.M. Stallman, `Using and Porting GNU CC', Free Software + Foundation, ISBN 1882114388 + + * R.M. Stallman, R.H. Pesch, `Debugging with GDB: The GNU + Source-Level Debugger', Free Software Foundation, ISBN 1882114779 + +For a tutorial introduction to the GNU C Compiler and related programs, +see + + * B.J. Gough, ‘http://www.network-theory.co.uk/gcc/intro/’,’ `An + Introduction to GCC', Network Theory Ltd, ISBN 0954161793 + + +File: gsl-ref.info, Node: Contributors to GSL, Next: Autoconf Macros, Prev: Debugging Numerical Programs, Up: Top + +49 Contributors to GSL +********************** + +(See the ‘AUTHORS’ file in the distribution for up-to-date information.) + +Mark Galassi + + Conceived GSL (with James Theiler) and wrote the design document. + Wrote the simulated annealing package and the relevant chapter in + the manual. + +James Theiler + + Conceived GSL (with Mark Galassi). Wrote the random number + generators and the relevant chapter in this manual. + +Jim Davies + + Wrote the statistical routines and the relevant chapter in this + manual. + +Brian Gough + + FFTs, numerical integration, random number generators and + distributions, root finding, minimization and fitting, polynomial + solvers, complex numbers, physical constants, permutations, vector + and matrix functions, histograms, statistics, ieee-utils, revised + CBLAS Level 2 & 3, matrix decompositions, eigensystems, cumulative + distribution functions, testing, documentation and releases. + +Reid Priedhorsky + + Wrote and documented the initial version of the root finding + routines while at Los Alamos National Laboratory, Mathematical + Modeling and Analysis Group. + +Gerard Jungman + + Special Functions, Series acceleration, ODEs, BLAS, Linear Algebra, + Eigensystems, Hankel Transforms. + +Patrick Alken + + Implementation of nonsymmetric and generalized eigensystems, + B-splines, linear and nonlinear least squares, matrix + decompositions, associated Legendre functions, running statistics, + sparse matrices, and sparse linear algebra. + +Mike Booth + + Wrote the Monte Carlo library. + +Jorma Olavi Tähtinen + + Wrote the initial complex arithmetic functions. + +Thomas Walter + + Wrote the initial heapsort routines and Cholesky decomposition. + +Fabrice Rossi + + Multidimensional minimization. + +Carlo Perassi + + Implementation of the random number generators in Knuth’s + `Seminumerical Algorithms', 3rd Ed. + +Szymon Jaroszewicz + + Wrote the routines for generating combinations. + +Nicolas Darnis + + Wrote the cyclic functions and the initial functions for canonical + permutations. + +Jason H. Stover + + Wrote the major cumulative distribution functions. + +Ivo Alxneit + + Wrote the routines for wavelet transforms. + +Tuomo Keskitalo + + Improved the implementation of the ODE solvers and wrote the + ode-initval2 routines. + +Lowell Johnson + + Implementation of the Mathieu functions. + +Rhys Ulerich + + Wrote the multiset routines. + +Pavel Holoborodko + + Wrote the fixed order Gauss-Legendre quadrature routines. + +Pedro Gonnet + + Wrote the CQUAD integration routines. + +Thanks to Nigel Lowry for help in proofreading the manual. + +The non-symmetric eigensystems routines contain code based on the LAPACK +linear algebra library. LAPACK is distributed under the following +license: + + Copyright (c) 1992-2006 The University of Tennessee. All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer listed + in this license in the documentation and/or other materials + provided with the distribution. + + * Neither the name of the copyright holders nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +File: gsl-ref.info, Node: Autoconf Macros, Next: GSL CBLAS Library, Prev: Contributors to GSL, Up: Top + +50 Autoconf Macros +****************** + +For applications using ‘autoconf’ the standard macro ‘AC_CHECK_LIB’ can +be used to link with GSL automatically from a ‘configure’ script. The +library itself depends on the presence of a CBLAS and math library as +well, so these must also be located before linking with the main +‘libgsl’ file. The following commands should be placed in the +‘configure.ac’ file to perform these tests: + + AC_CHECK_LIB([m],[cos]) + AC_CHECK_LIB([gslcblas],[cblas_dgemm]) + AC_CHECK_LIB([gsl],[gsl_blas_dgemm]) + +It is important to check for ‘libm’ and ‘libgslcblas’ before ‘libgsl’, +otherwise the tests will fail. Assuming the libraries are found the +output during the configure stage looks like this: + + checking for cos in -lm... yes + checking for cblas_dgemm in -lgslcblas... yes + checking for gsl_blas_dgemm in -lgsl... yes + +If the library is found then the tests will define the macros +‘HAVE_LIBGSL’, ‘HAVE_LIBGSLCBLAS’, ‘HAVE_LIBM’ and add the options +‘-lgsl -lgslcblas -lm’ to the variable ‘LIBS’. + +The tests above will find any version of the library. They are suitable +for general use, where the versions of the functions are not important. +An alternative macro is available in the file ‘gsl.m4’ to test for a +specific version of the library. To use this macro simply add the +following line to your ‘configure.in’ file instead of the tests above: + + AX_PATH_GSL(GSL_VERSION, + [action-if-found], + [action-if-not-found]) + +The argument ‘GSL_VERSION’ should be the two or three digit +‘major.minor’ or ‘major.minor.micro’ version number of the release you +require. A suitable choice for ‘action-if-not-found’ is: + + AC_MSG_ERROR(could not find required version of GSL) + +Then you can add the variables ‘GSL_LIBS’ and ‘GSL_CFLAGS’ to your +Makefile.am files to obtain the correct compiler flags. ‘GSL_LIBS’ is +equal to the output of the ‘gsl-config --libs’ command and ‘GSL_CFLAGS’ +is equal to ‘gsl-config --cflags’ command. For example: + + libfoo_la_LDFLAGS = -lfoo $(GSL_LIBS) -lgslcblas + +Note that the macro ‘AX_PATH_GSL’ needs to use the C compiler so it +should appear in the ‘configure.in’ file before the macro +‘AC_LANG_CPLUSPLUS’ for programs that use C++. + +To test for ‘inline’ the following test should be placed in your +‘configure.in’ file: + + AC_C_INLINE + + if test "$ac_cv_c_inline" != no ; then + AC_DEFINE(HAVE_INLINE,1) + AC_SUBST(HAVE_INLINE) + fi + +and the macro will then be defined in the compilation flags or by +including the file ‘config.h’ before any library headers. + +The following autoconf test will check for ‘extern inline’: + + dnl Check for "extern inline", using a modified version + dnl of the test for AC_C_INLINE from acspecific.mt + dnl + AC_CACHE_CHECK([for extern inline], ac_cv_c_extern_inline, + [ac_cv_c_extern_inline=no + AC_TRY_COMPILE([extern $ac_cv_c_inline double foo(double x); + extern $ac_cv_c_inline double foo(double x) { return x+1.0; }; + double foo (double x) { return x + 1.0; };], + [ foo(1.0) ], + [ac_cv_c_extern_inline="yes"]) + ]) + + if test "$ac_cv_c_extern_inline" != no ; then + AC_DEFINE(HAVE_INLINE,1) + AC_SUBST(HAVE_INLINE) + fi + +The substitution of portability functions can be made automatically if +you use ‘autoconf’. For example, to test whether the BSD function +‘hypot()’ is available you can include the following line in the +configure file ‘configure.in’ for your application: + + AC_CHECK_FUNCS(hypot) + +and place the following macro definitions in the file ‘config.h.in’: + + /* Substitute gsl_hypot for missing system hypot */ + + #ifndef HAVE_HYPOT + #define hypot gsl_hypot + #endif + +The application source files can then use the include command ‘#include +’ to substitute *note gsl_hypot(): 1a. for each occurrence of +‘hypot()’ when ‘hypot()’ is not available. + + +File: gsl-ref.info, Node: GSL CBLAS Library, Next: GNU General Public License, Prev: Autoconf Macros, Up: Top + +51 GSL CBLAS Library +******************** + +The prototypes for the low-level CBLAS functions are declared in the +file ‘gsl_cblas.h’. For the definition of the functions consult the +documentation available from Netlib (*note see BLAS References and +Further Reading: 4df.). + +* Menu: + +* Level 1: Level 1<2>. +* Level 2: Level 2<2>. +* Level 3: Level 3<2>. +* Examples: Examples<37>. + + +File: gsl-ref.info, Node: Level 1<2>, Next: Level 2<2>, Up: GSL CBLAS Library + +51.1 Level 1 +============ + + -- Function: float cblas_sdsdot (const int N, const float alpha, const + float * x, const int incx, const float * y, const int incy) + + -- Function: double cblas_dsdot (const int N, const float * x, const + int incx, const float * y, const int incy) + + -- Function: float cblas_sdot (const int N, const float * x, const + int incx, const float * y, const int incy) + + -- Function: double cblas_ddot (const int N, const double * x, const + int incx, const double * y, const int incy) + + -- Function: void cblas_cdotu_sub (const int N, const void * x, const + int incx, const void * y, const int incy, void * dotu) + + -- Function: void cblas_cdotc_sub (const int N, const void * x, const + int incx, const void * y, const int incy, void * dotc) + + -- Function: void cblas_zdotu_sub (const int N, const void * x, const + int incx, const void * y, const int incy, void * dotu) + + -- Function: void cblas_zdotc_sub (const int N, const void * x, const + int incx, const void * y, const int incy, void * dotc) + + -- Function: float cblas_snrm2 (const int N, const float * x, const + int incx) + + -- Function: float cblas_sasum (const int N, const float * x, const + int incx) + + -- Function: double cblas_dnrm2 (const int N, const double * x, const + int incx) + + -- Function: double cblas_dasum (const int N, const double * x, const + int incx) + + -- Function: float cblas_scnrm2 (const int N, const void * x, const + int incx) + + -- Function: float cblas_scasum (const int N, const void * x, const + int incx) + + -- Function: double cblas_dznrm2 (const int N, const void * x, const + int incx) + + -- Function: double cblas_dzasum (const int N, const void * x, const + int incx) + + -- Function: CBLAS_INDEX cblas_isamax (const int N, const float * x, + const int incx) + + -- Function: CBLAS_INDEX cblas_idamax (const int N, const double * x, + const int incx) + + -- Function: CBLAS_INDEX cblas_icamax (const int N, const void * x, + const int incx) + + -- Function: CBLAS_INDEX cblas_izamax (const int N, const void * x, + const int incx) + + -- Function: void cblas_sswap (const int N, float * x, const int incx, + float * y, const int incy) + + -- Function: void cblas_scopy (const int N, const float * x, const + int incx, float * y, const int incy) + + -- Function: void cblas_saxpy (const int N, const float alpha, const + float * x, const int incx, float * y, const int incy) + + -- Function: void cblas_dswap (const int N, double * x, const int incx, + double * y, const int incy) + + -- Function: void cblas_dcopy (const int N, const double * x, const + int incx, double * y, const int incy) + + -- Function: void cblas_daxpy (const int N, const double alpha, const + double * x, const int incx, double * y, const int incy) + + -- Function: void cblas_cswap (const int N, void * x, const int incx, + void * y, const int incy) + + -- Function: void cblas_ccopy (const int N, const void * x, const + int incx, void * y, const int incy) + + -- Function: void cblas_caxpy (const int N, const void * alpha, const + void * x, const int incx, void * y, const int incy) + + -- Function: void cblas_zswap (const int N, void * x, const int incx, + void * y, const int incy) + + -- Function: void cblas_zcopy (const int N, const void * x, const + int incx, void * y, const int incy) + + -- Function: void cblas_zaxpy (const int N, const void * alpha, const + void * x, const int incx, void * y, const int incy) + + -- Function: void cblas_srotg (float * a, float * b, float * c, float + * s) + + -- Function: void cblas_srotmg (float * d1, float * d2, float * b1, + const float b2, float * P) + + -- Function: void cblas_srot (const int N, float * x, const int incx, + float * y, const int incy, const float c, const float s) + + -- Function: void cblas_srotm (const int N, float * x, const int incx, + float * y, const int incy, const float * P) + + -- Function: void cblas_drotg (double * a, double * b, double * c, + double * s) + + -- Function: void cblas_drotmg (double * d1, double * d2, double * b1, + const double b2, double * P) + + -- Function: void cblas_drot (const int N, double * x, const int incx, + double * y, const int incy, const double c, const double s) + + -- Function: void cblas_drotm (const int N, double * x, const int incx, + double * y, const int incy, const double * P) + + -- Function: void cblas_sscal (const int N, const float alpha, float + * x, const int incx) + + -- Function: void cblas_dscal (const int N, const double alpha, double + * x, const int incx) + + -- Function: void cblas_cscal (const int N, const void * alpha, void + * x, const int incx) + + -- Function: void cblas_zscal (const int N, const void * alpha, void + * x, const int incx) + + -- Function: void cblas_csscal (const int N, const float alpha, void + * x, const int incx) + + -- Function: void cblas_zdscal (const int N, const double alpha, void + * x, const int incx) + + +File: gsl-ref.info, Node: Level 2<2>, Next: Level 3<2>, Prev: Level 1<2>, Up: GSL CBLAS Library + +51.2 Level 2 +============ + + -- Function: void cblas_sgemv (const enum CBLAS_ORDER order, const enum + CBLAS_TRANSPOSE TransA, const int M, const int N, const + float alpha, const float * A, const int lda, const float * x, + const int incx, const float beta, float * y, const int incy) + + -- Function: void cblas_sgbmv (const enum CBLAS_ORDER order, const enum + CBLAS_TRANSPOSE TransA, const int M, const int N, const + int KL, const int KU, const float alpha, const float * A, + const int lda, const float * x, const int incx, const + float beta, float * y, const int incy) + + -- Function: void cblas_strmv (const enum CBLAS_ORDER order, const enum + CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, const enum + CBLAS_DIAG Diag, const int N, const float * A, const int lda, + float * x, const int incx) + + -- Function: void cblas_stbmv (const enum CBLAS_ORDER order, const enum + CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, const enum + CBLAS_DIAG Diag, const int N, const int K, const float * A, + const int lda, float * x, const int incx) + + -- Function: void cblas_stpmv (const enum CBLAS_ORDER order, const enum + CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, const enum + CBLAS_DIAG Diag, const int N, const float * Ap, float * x, + const int incx) + + -- Function: void cblas_strsv (const enum CBLAS_ORDER order, const enum + CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, const enum + CBLAS_DIAG Diag, const int N, const float * A, const int lda, + float * x, const int incx) + + -- Function: void cblas_stbsv (const enum CBLAS_ORDER order, const enum + CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, const enum + CBLAS_DIAG Diag, const int N, const int K, const float * A, + const int lda, float * x, const int incx) + + -- Function: void cblas_stpsv (const enum CBLAS_ORDER order, const enum + CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, const enum + CBLAS_DIAG Diag, const int N, const float * Ap, float * x, + const int incx) + + -- Function: void cblas_dgemv (const enum CBLAS_ORDER order, const enum + CBLAS_TRANSPOSE TransA, const int M, const int N, const + double alpha, const double * A, const int lda, const double + * x, const int incx, const double beta, double * y, const + int incy) + + -- Function: void cblas_dgbmv (const enum CBLAS_ORDER order, const enum + CBLAS_TRANSPOSE TransA, const int M, const int N, const + int KL, const int KU, const double alpha, const double * A, + const int lda, const double * x, const int incx, const + double beta, double * y, const int incy) + + -- Function: void cblas_dtrmv (const enum CBLAS_ORDER order, const enum + CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, const enum + CBLAS_DIAG Diag, const int N, const double * A, const int lda, + double * x, const int incx) + + -- Function: void cblas_dtbmv (const enum CBLAS_ORDER order, const enum + CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, const enum + CBLAS_DIAG Diag, const int N, const int K, const double * A, + const int lda, double * x, const int incx) + + -- Function: void cblas_dtpmv (const enum CBLAS_ORDER order, const enum + CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, const enum + CBLAS_DIAG Diag, const int N, const double * Ap, double * x, + const int incx) + + -- Function: void cblas_dtrsv (const enum CBLAS_ORDER order, const enum + CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, const enum + CBLAS_DIAG Diag, const int N, const double * A, const int lda, + double * x, const int incx) + + -- Function: void cblas_dtbsv (const enum CBLAS_ORDER order, const enum + CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, const enum + CBLAS_DIAG Diag, const int N, const int K, const double * A, + const int lda, double * x, const int incx) + + -- Function: void cblas_dtpsv (const enum CBLAS_ORDER order, const enum + CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, const enum + CBLAS_DIAG Diag, const int N, const double * Ap, double * x, + const int incx) + + -- Function: void cblas_cgemv (const enum CBLAS_ORDER order, const enum + CBLAS_TRANSPOSE TransA, const int M, const int N, const void + * alpha, const void * A, const int lda, const void * x, const + int incx, const void * beta, void * y, const int incy) + + -- Function: void cblas_cgbmv (const enum CBLAS_ORDER order, const enum + CBLAS_TRANSPOSE TransA, const int M, const int N, const + int KL, const int KU, const void * alpha, const void * A, + const int lda, const void * x, const int incx, const void + * beta, void * y, const int incy) + + -- Function: void cblas_ctrmv (const enum CBLAS_ORDER order, const enum + CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, const enum + CBLAS_DIAG Diag, const int N, const void * A, const int lda, + void * x, const int incx) + + -- Function: void cblas_ctbmv (const enum CBLAS_ORDER order, const enum + CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, const enum + CBLAS_DIAG Diag, const int N, const int K, const void * A, + const int lda, void * x, const int incx) + + -- Function: void cblas_ctpmv (const enum CBLAS_ORDER order, const enum + CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, const enum + CBLAS_DIAG Diag, const int N, const void * Ap, void * x, const + int incx) + + -- Function: void cblas_ctrsv (const enum CBLAS_ORDER order, const enum + CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, const enum + CBLAS_DIAG Diag, const int N, const void * A, const int lda, + void * x, const int incx) + + -- Function: void cblas_ctbsv (const enum CBLAS_ORDER order, const enum + CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, const enum + CBLAS_DIAG Diag, const int N, const int K, const void * A, + const int lda, void * x, const int incx) + + -- Function: void cblas_ctpsv (const enum CBLAS_ORDER order, const enum + CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, const enum + CBLAS_DIAG Diag, const int N, const void * Ap, void * x, const + int incx) + + -- Function: void cblas_zgemv (const enum CBLAS_ORDER order, const enum + CBLAS_TRANSPOSE TransA, const int M, const int N, const void + * alpha, const void * A, const int lda, const void * x, const + int incx, const void * beta, void * y, const int incy) + + -- Function: void cblas_zgbmv (const enum CBLAS_ORDER order, const enum + CBLAS_TRANSPOSE TransA, const int M, const int N, const + int KL, const int KU, const void * alpha, const void * A, + const int lda, const void * x, const int incx, const void + * beta, void * y, const int incy) + + -- Function: void cblas_ztrmv (const enum CBLAS_ORDER order, const enum + CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, const enum + CBLAS_DIAG Diag, const int N, const void * A, const int lda, + void * x, const int incx) + + -- Function: void cblas_ztbmv (const enum CBLAS_ORDER order, const enum + CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, const enum + CBLAS_DIAG Diag, const int N, const int K, const void * A, + const int lda, void * x, const int incx) + + -- Function: void cblas_ztpmv (const enum CBLAS_ORDER order, const enum + CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, const enum + CBLAS_DIAG Diag, const int N, const void * Ap, void * x, const + int incx) + + -- Function: void cblas_ztrsv (const enum CBLAS_ORDER order, const enum + CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, const enum + CBLAS_DIAG Diag, const int N, const void * A, const int lda, + void * x, const int incx) + + -- Function: void cblas_ztbsv (const enum CBLAS_ORDER order, const enum + CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, const enum + CBLAS_DIAG Diag, const int N, const int K, const void * A, + const int lda, void * x, const int incx) + + -- Function: void cblas_ztpsv (const enum CBLAS_ORDER order, const enum + CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, const enum + CBLAS_DIAG Diag, const int N, const void * Ap, void * x, const + int incx) + + -- Function: void cblas_ssymv (const enum CBLAS_ORDER order, const enum + CBLAS_UPLO Uplo, const int N, const float alpha, const float + * A, const int lda, const float * x, const int incx, const + float beta, float * y, const int incy) + + -- Function: void cblas_ssbmv (const enum CBLAS_ORDER order, const enum + CBLAS_UPLO Uplo, const int N, const int K, const float alpha, + const float * A, const int lda, const float * x, const + int incx, const float beta, float * y, const int incy) + + -- Function: void cblas_sspmv (const enum CBLAS_ORDER order, const enum + CBLAS_UPLO Uplo, const int N, const float alpha, const float + * Ap, const float * x, const int incx, const float beta, float + * y, const int incy) + + -- Function: void cblas_sger (const enum CBLAS_ORDER order, const + int M, const int N, const float alpha, const float * x, const + int incx, const float * y, const int incy, float * A, const + int lda) + + -- Function: void cblas_ssyr (const enum CBLAS_ORDER order, const enum + CBLAS_UPLO Uplo, const int N, const float alpha, const float + * x, const int incx, float * A, const int lda) + + -- Function: void cblas_sspr (const enum CBLAS_ORDER order, const enum + CBLAS_UPLO Uplo, const int N, const float alpha, const float + * x, const int incx, float * Ap) + + -- Function: void cblas_ssyr2 (const enum CBLAS_ORDER order, const enum + CBLAS_UPLO Uplo, const int N, const float alpha, const float + * x, const int incx, const float * y, const int incy, float + * A, const int lda) + + -- Function: void cblas_sspr2 (const enum CBLAS_ORDER order, const enum + CBLAS_UPLO Uplo, const int N, const float alpha, const float + * x, const int incx, const float * y, const int incy, float + * A) + + -- Function: void cblas_dsymv (const enum CBLAS_ORDER order, const enum + CBLAS_UPLO Uplo, const int N, const double alpha, const double + * A, const int lda, const double * x, const int incx, const + double beta, double * y, const int incy) + + -- Function: void cblas_dsbmv (const enum CBLAS_ORDER order, const enum + CBLAS_UPLO Uplo, const int N, const int K, const double alpha, + const double * A, const int lda, const double * x, const + int incx, const double beta, double * y, const int incy) + + -- Function: void cblas_dspmv (const enum CBLAS_ORDER order, const enum + CBLAS_UPLO Uplo, const int N, const double alpha, const double + * Ap, const double * x, const int incx, const double beta, + double * y, const int incy) + + -- Function: void cblas_dger (const enum CBLAS_ORDER order, const + int M, const int N, const double alpha, const double * x, + const int incx, const double * y, const int incy, double * A, + const int lda) + + -- Function: void cblas_dsyr (const enum CBLAS_ORDER order, const enum + CBLAS_UPLO Uplo, const int N, const double alpha, const double + * x, const int incx, double * A, const int lda) + + -- Function: void cblas_dspr (const enum CBLAS_ORDER order, const enum + CBLAS_UPLO Uplo, const int N, const double alpha, const double + * x, const int incx, double * Ap) + + -- Function: void cblas_dsyr2 (const enum CBLAS_ORDER order, const enum + CBLAS_UPLO Uplo, const int N, const double alpha, const double + * x, const int incx, const double * y, const int incy, double + * A, const int lda) + + -- Function: void cblas_dspr2 (const enum CBLAS_ORDER order, const enum + CBLAS_UPLO Uplo, const int N, const double alpha, const double + * x, const int incx, const double * y, const int incy, double + * A) + + -- Function: void cblas_chemv (const enum CBLAS_ORDER order, const enum + CBLAS_UPLO Uplo, const int N, const void * alpha, const void + * A, const int lda, const void * x, const int incx, const void + * beta, void * y, const int incy) + + -- Function: void cblas_chbmv (const enum CBLAS_ORDER order, const enum + CBLAS_UPLO Uplo, const int N, const int K, const void * alpha, + const void * A, const int lda, const void * x, const int incx, + const void * beta, void * y, const int incy) + + -- Function: void cblas_chpmv (const enum CBLAS_ORDER order, const enum + CBLAS_UPLO Uplo, const int N, const void * alpha, const void + * Ap, const void * x, const int incx, const void * beta, void + * y, const int incy) + + -- Function: void cblas_cgeru (const enum CBLAS_ORDER order, const + int M, const int N, const void * alpha, const void * x, const + int incx, const void * y, const int incy, void * A, const + int lda) + + -- Function: void cblas_cgerc (const enum CBLAS_ORDER order, const + int M, const int N, const void * alpha, const void * x, const + int incx, const void * y, const int incy, void * A, const + int lda) + + -- Function: void cblas_cher (const enum CBLAS_ORDER order, const enum + CBLAS_UPLO Uplo, const int N, const float alpha, const void + * x, const int incx, void * A, const int lda) + + -- Function: void cblas_chpr (const enum CBLAS_ORDER order, const enum + CBLAS_UPLO Uplo, const int N, const float alpha, const void + * x, const int incx, void * A) + + -- Function: void cblas_cher2 (const enum CBLAS_ORDER order, const enum + CBLAS_UPLO Uplo, const int N, const void * alpha, const void + * x, const int incx, const void * y, const int incy, void * A, + const int lda) + + -- Function: void cblas_chpr2 (const enum CBLAS_ORDER order, const enum + CBLAS_UPLO Uplo, const int N, const void * alpha, const void + * x, const int incx, const void * y, const int incy, void + * Ap) + + -- Function: void cblas_zhemv (const enum CBLAS_ORDER order, const enum + CBLAS_UPLO Uplo, const int N, const void * alpha, const void + * A, const int lda, const void * x, const int incx, const void + * beta, void * y, const int incy) + + -- Function: void cblas_zhbmv (const enum CBLAS_ORDER order, const enum + CBLAS_UPLO Uplo, const int N, const int K, const void * alpha, + const void * A, const int lda, const void * x, const int incx, + const void * beta, void * y, const int incy) + + -- Function: void cblas_zhpmv (const enum CBLAS_ORDER order, const enum + CBLAS_UPLO Uplo, const int N, const void * alpha, const void + * Ap, const void * x, const int incx, const void * beta, void + * y, const int incy) + + -- Function: void cblas_zgeru (const enum CBLAS_ORDER order, const + int M, const int N, const void * alpha, const void * x, const + int incx, const void * y, const int incy, void * A, const + int lda) + + -- Function: void cblas_zgerc (const enum CBLAS_ORDER order, const + int M, const int N, const void * alpha, const void * x, const + int incx, const void * y, const int incy, void * A, const + int lda) + + -- Function: void cblas_zher (const enum CBLAS_ORDER order, const enum + CBLAS_UPLO Uplo, const int N, const double alpha, const void + * x, const int incx, void * A, const int lda) + + -- Function: void cblas_zhpr (const enum CBLAS_ORDER order, const enum + CBLAS_UPLO Uplo, const int N, const double alpha, const void + * x, const int incx, void * A) + + -- Function: void cblas_zher2 (const enum CBLAS_ORDER order, const enum + CBLAS_UPLO Uplo, const int N, const void * alpha, const void + * x, const int incx, const void * y, const int incy, void * A, + const int lda) + + -- Function: void cblas_zhpr2 (const enum CBLAS_ORDER order, const enum + CBLAS_UPLO Uplo, const int N, const void * alpha, const void + * x, const int incx, const void * y, const int incy, void + * Ap) + + +File: gsl-ref.info, Node: Level 3<2>, Next: Examples<37>, Prev: Level 2<2>, Up: GSL CBLAS Library + +51.3 Level 3 +============ + + -- Function: void cblas_sgemm (const enum CBLAS_ORDER Order, const enum + CBLAS_TRANSPOSE TransA, const enum CBLAS_TRANSPOSE TransB, + const int M, const int N, const int K, const float alpha, + const float * A, const int lda, const float * B, const + int ldb, const float beta, float * C, const int ldc) + + -- Function: void cblas_ssymm (const enum CBLAS_ORDER Order, const enum + CBLAS_SIDE Side, const enum CBLAS_UPLO Uplo, const int M, + const int N, const float alpha, const float * A, const + int lda, const float * B, const int ldb, const float beta, + float * C, const int ldc) + + -- Function: void cblas_ssyrk (const enum CBLAS_ORDER Order, const enum + CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE Trans, const + int N, const int K, const float alpha, const float * A, const + int lda, const float beta, float * C, const int ldc) + + -- Function: void cblas_ssyr2k (const enum CBLAS_ORDER Order, const + enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE Trans, const + int N, const int K, const float alpha, const float * A, const + int lda, const float * B, const int ldb, const float beta, + float * C, const int ldc) + + -- Function: void cblas_strmm (const enum CBLAS_ORDER Order, const enum + CBLAS_SIDE Side, const enum CBLAS_UPLO Uplo, const enum + CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, const + int M, const int N, const float alpha, const float * A, const + int lda, float * B, const int ldb) + + -- Function: void cblas_strsm (const enum CBLAS_ORDER Order, const enum + CBLAS_SIDE Side, const enum CBLAS_UPLO Uplo, const enum + CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, const + int M, const int N, const float alpha, const float * A, const + int lda, float * B, const int ldb) + + -- Function: void cblas_dgemm (const enum CBLAS_ORDER Order, const enum + CBLAS_TRANSPOSE TransA, const enum CBLAS_TRANSPOSE TransB, + const int M, const int N, const int K, const double alpha, + const double * A, const int lda, const double * B, const + int ldb, const double beta, double * C, const int ldc) + + -- Function: void cblas_dsymm (const enum CBLAS_ORDER Order, const enum + CBLAS_SIDE Side, const enum CBLAS_UPLO Uplo, const int M, + const int N, const double alpha, const double * A, const + int lda, const double * B, const int ldb, const double beta, + double * C, const int ldc) + + -- Function: void cblas_dsyrk (const enum CBLAS_ORDER Order, const enum + CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE Trans, const + int N, const int K, const double alpha, const double * A, + const int lda, const double beta, double * C, const int ldc) + + -- Function: void cblas_dsyr2k (const enum CBLAS_ORDER Order, const + enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE Trans, const + int N, const int K, const double alpha, const double * A, + const int lda, const double * B, const int ldb, const + double beta, double * C, const int ldc) + + -- Function: void cblas_dtrmm (const enum CBLAS_ORDER Order, const enum + CBLAS_SIDE Side, const enum CBLAS_UPLO Uplo, const enum + CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, const + int M, const int N, const double alpha, const double * A, + const int lda, double * B, const int ldb) + + -- Function: void cblas_dtrsm (const enum CBLAS_ORDER Order, const enum + CBLAS_SIDE Side, const enum CBLAS_UPLO Uplo, const enum + CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, const + int M, const int N, const double alpha, const double * A, + const int lda, double * B, const int ldb) + + -- Function: void cblas_cgemm (const enum CBLAS_ORDER Order, const enum + CBLAS_TRANSPOSE TransA, const enum CBLAS_TRANSPOSE TransB, + const int M, const int N, const int K, const void * alpha, + const void * A, const int lda, const void * B, const int ldb, + const void * beta, void * C, const int ldc) + + -- Function: void cblas_csymm (const enum CBLAS_ORDER Order, const enum + CBLAS_SIDE Side, const enum CBLAS_UPLO Uplo, const int M, + const int N, const void * alpha, const void * A, const + int lda, const void * B, const int ldb, const void * beta, + void * C, const int ldc) + + -- Function: void cblas_csyrk (const enum CBLAS_ORDER Order, const enum + CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE Trans, const + int N, const int K, const void * alpha, const void * A, const + int lda, const void * beta, void * C, const int ldc) + + -- Function: void cblas_csyr2k (const enum CBLAS_ORDER Order, const + enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE Trans, const + int N, const int K, const void * alpha, const void * A, const + int lda, const void * B, const int ldb, const void * beta, + void * C, const int ldc) + + -- Function: void cblas_ctrmm (const enum CBLAS_ORDER Order, const enum + CBLAS_SIDE Side, const enum CBLAS_UPLO Uplo, const enum + CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, const + int M, const int N, const void * alpha, const void * A, const + int lda, void * B, const int ldb) + + -- Function: void cblas_ctrsm (const enum CBLAS_ORDER Order, const enum + CBLAS_SIDE Side, const enum CBLAS_UPLO Uplo, const enum + CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, const + int M, const int N, const void * alpha, const void * A, const + int lda, void * B, const int ldb) + + -- Function: void cblas_zgemm (const enum CBLAS_ORDER Order, const enum + CBLAS_TRANSPOSE TransA, const enum CBLAS_TRANSPOSE TransB, + const int M, const int N, const int K, const void * alpha, + const void * A, const int lda, const void * B, const int ldb, + const void * beta, void * C, const int ldc) + + -- Function: void cblas_zsymm (const enum CBLAS_ORDER Order, const enum + CBLAS_SIDE Side, const enum CBLAS_UPLO Uplo, const int M, + const int N, const void * alpha, const void * A, const + int lda, const void * B, const int ldb, const void * beta, + void * C, const int ldc) + + -- Function: void cblas_zsyrk (const enum CBLAS_ORDER Order, const enum + CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE Trans, const + int N, const int K, const void * alpha, const void * A, const + int lda, const void * beta, void * C, const int ldc) + + -- Function: void cblas_zsyr2k (const enum CBLAS_ORDER Order, const + enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE Trans, const + int N, const int K, const void * alpha, const void * A, const + int lda, const void * B, const int ldb, const void * beta, + void * C, const int ldc) + + -- Function: void cblas_ztrmm (const enum CBLAS_ORDER Order, const enum + CBLAS_SIDE Side, const enum CBLAS_UPLO Uplo, const enum + CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, const + int M, const int N, const void * alpha, const void * A, const + int lda, void * B, const int ldb) + + -- Function: void cblas_ztrsm (const enum CBLAS_ORDER Order, const enum + CBLAS_SIDE Side, const enum CBLAS_UPLO Uplo, const enum + CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, const + int M, const int N, const void * alpha, const void * A, const + int lda, void * B, const int ldb) + + -- Function: void cblas_chemm (const enum CBLAS_ORDER Order, const enum + CBLAS_SIDE Side, const enum CBLAS_UPLO Uplo, const int M, + const int N, const void * alpha, const void * A, const + int lda, const void * B, const int ldb, const void * beta, + void * C, const int ldc) + + -- Function: void cblas_cherk (const enum CBLAS_ORDER Order, const enum + CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE Trans, const + int N, const int K, const float alpha, const void * A, const + int lda, const float beta, void * C, const int ldc) + + -- Function: void cblas_cher2k (const enum CBLAS_ORDER Order, const + enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE Trans, const + int N, const int K, const void * alpha, const void * A, const + int lda, const void * B, const int ldb, const float beta, void + * C, const int ldc) + + -- Function: void cblas_zhemm (const enum CBLAS_ORDER Order, const enum + CBLAS_SIDE Side, const enum CBLAS_UPLO Uplo, const int M, + const int N, const void * alpha, const void * A, const + int lda, const void * B, const int ldb, const void * beta, + void * C, const int ldc) + + -- Function: void cblas_zherk (const enum CBLAS_ORDER Order, const enum + CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE Trans, const + int N, const int K, const double alpha, const void * A, const + int lda, const double beta, void * C, const int ldc) + + -- Function: void cblas_zher2k (const enum CBLAS_ORDER Order, const + enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE Trans, const + int N, const int K, const void * alpha, const void * A, const + int lda, const void * B, const int ldb, const double beta, + void * C, const int ldc) + + -- Function: void cblas_xerbla (int p, const char * rout, const char + * form, ...) + + +File: gsl-ref.info, Node: Examples<37>, Prev: Level 3<2>, Up: GSL CBLAS Library + +51.4 Examples +============= + +The following program computes the product of two matrices using the +Level-3 BLAS function SGEMM, + + [ 0.11 0.12 0.13 ] [ 1011 1012 ] [ 367.76 368.12 ] + [ 0.21 0.22 0.23 ] [ 1021 1022 ] = [ 674.06 674.72 ] + [ 1031 1032 ] + +The matrices are stored in row major order but could be stored in column +major order if the first argument of the call to *note cblas_sgemm(): +d10. was changed to ‘CblasColMajor’. + + #include + #include + + int + main (void) + { + int lda = 3; + + float A[] = { 0.11, 0.12, 0.13, + 0.21, 0.22, 0.23 }; + + int ldb = 2; + + float B[] = { 1011, 1012, + 1021, 1022, + 1031, 1032 }; + + int ldc = 2; + + float C[] = { 0.00, 0.00, + 0.00, 0.00 }; + + /* Compute C = A B */ + + cblas_sgemm (CblasRowMajor, + CblasNoTrans, CblasNoTrans, 2, 2, 3, + 1.0, A, lda, B, ldb, 0.0, C, ldc); + + printf ("[ %g, %g\n", C[0], C[1]); + printf (" %g, %g ]\n", C[2], C[3]); + + return 0; + } + +To compile the program use the following command line: + + $ gcc -Wall demo.c -lgslcblas + +There is no need to link with the main library ‘-lgsl’ in this case as +the CBLAS library is an independent unit. Here is the output from the +program, + + [ 367.76, 368.12 + 674.06, 674.72 ] + + +File: gsl-ref.info, Node: GNU General Public License, Next: GNU Free Documentation License, Prev: GSL CBLAS Library, Up: Top + +52 GNU General Public License +***************************** + + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for + software and other kinds of works. + + The licenses for most software and other practical works are designed + to take away your freedom to share and change the works. By contrast, + the GNU General Public License is intended to guarantee your freedom to + share and change all versions of a program--to make sure it remains free + software for all its users. We, the Free Software Foundation, use the + GNU General Public License for most of our software; it applies also to + any other work released this way by its authors. You can apply it to + your programs, too. + + When we speak of free software, we are referring to freedom, not + price. Our General Public Licenses are designed to make sure that you + have the freedom to distribute copies of free software (and charge for + them if you wish), that you receive source code or can get it if you + want it, that you can change the software or use pieces of it in new + free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you + these rights or asking you to surrender the rights. Therefore, you have + certain responsibilities if you distribute copies of the software, or if + you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether + gratis or for a fee, you must pass on to the recipients the same + freedoms that you received. You must make sure that they, too, receive + or can get the source code. And you must show them these terms so they + know their rights. + + Developers that use the GNU GPL protect your rights with two steps: + (1) assert copyright on the software, and (2) offer you this License + giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains + that there is no warranty for this free software. For both users' and + authors' sake, the GPL requires that modified versions be marked as + changed, so that their problems will not be attributed erroneously to + authors of previous versions. + + Some devices are designed to deny users access to install or run + modified versions of the software inside them, although the manufacturer + can do so. This is fundamentally incompatible with the aim of + protecting users' freedom to change the software. The systematic + pattern of such abuse occurs in the area of products for individuals to + use, which is precisely where it is most unacceptable. Therefore, we + have designed this version of the GPL to prohibit the practice for those + products. If such problems arise substantially in other domains, we + stand ready to extend this provision to those domains in future versions + of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. + States should not allow patents to restrict development and use of + software on general-purpose computers, but in those that do, we wish to + avoid the special danger that patents applied to a free program could + make it effectively proprietary. To prevent this, the GPL assures that + patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and + modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of + works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this + License. Each licensee is addressed as "you". "Licensees" and + "recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work + in a fashion requiring copyright permission, other than the making of an + exact copy. The resulting work is called a "modified version" of the + earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based + on the Program. + + To "propagate" a work means to do anything with it that, without + permission, would make you directly or secondarily liable for + infringement under applicable copyright law, except executing it on a + computer or modifying a private copy. Propagation includes copying, + distribution (with or without modification), making available to the + public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other + parties to make or receive copies. Mere interaction with a user through + a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" + to the extent that it includes a convenient and prominently visible + feature that (1) displays an appropriate copyright notice, and (2) + tells the user that there is no warranty for the work (except to the + extent that warranties are provided), that licensees may convey the + work under this License, and how to view a copy of this License. If + the interface presents a list of user commands or options, such as a + menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work + for making modifications to it. "Object code" means any non-source + form of a work. + + A "Standard Interface" means an interface that either is an official + standard defined by a recognized standards body, or, in the case of + interfaces specified for a particular programming language, one that + is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other + than the work as a whole, that (a) is included in the normal form of + packaging a Major Component, but which is not part of that Major + Component, and (b) serves only to enable use of the work with that + Major Component, or to implement a Standard Interface for which an + implementation is available to the public in source code form. A + "Major Component", in this context, means a major essential component + (kernel, window system, and so on) of the specific operating system + (if any) on which the executable work runs, or a compiler used to + produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all + the source code needed to generate, install, and (for an executable + work) run the object code and to modify the work, including scripts to + control those activities. However, it does not include the work's + System Libraries, or general-purpose tools or generally available free + programs which are used unmodified in performing those activities but + which are not part of the work. For example, Corresponding Source + includes interface definition files associated with source files for + the work, and the source code for shared libraries and dynamically + linked subprograms that the work is specifically designed to require, + such as by intimate data communication or control flow between those + subprograms and other parts of the work. + + The Corresponding Source need not include anything that users + can regenerate automatically from other parts of the Corresponding + Source. + + The Corresponding Source for a work in source code form is that + same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of + copyright on the Program, and are irrevocable provided the stated + conditions are met. This License explicitly affirms your unlimited + permission to run the unmodified Program. The output from running a + covered work is covered by this License only if the output, given its + content, constitutes a covered work. This License acknowledges your + rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not + convey, without conditions so long as your license otherwise remains + in force. You may convey covered works to others for the sole purpose + of having them make modifications exclusively for you, or provide you + with facilities for running those works, provided that you comply with + the terms of this License in conveying all material for which you do + not control copyright. Those thus making or running the covered works + for you must do so exclusively on your behalf, under your direction + and control, on terms that prohibit them from making any copies of + your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under + the conditions stated below. Sublicensing is not allowed; section 10 + makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological + measure under any applicable law fulfilling obligations under article + 11 of the WIPO copyright treaty adopted on 20 December 1996, or + similar laws prohibiting or restricting circumvention of such + measures. + + When you convey a covered work, you waive any legal power to forbid + circumvention of technological measures to the extent such circumvention + is effected by exercising rights under this License with respect to + the covered work, and you disclaim any intention to limit operation or + modification of the work as a means of enforcing, against the work's + users, your or third parties' legal rights to forbid circumvention of + technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you + receive it, in any medium, provided that you conspicuously and + appropriately publish on each copy an appropriate copyright notice; + keep intact all notices stating that this License and any + non-permissive terms added in accord with section 7 apply to the code; + keep intact all notices of the absence of any warranty; and give all + recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, + and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to + produce it from the Program, in the form of source code under the + terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent + works, which are not by their nature extensions of the covered work, + and which are not combined with it such as to form a larger program, + in or on a volume of a storage or distribution medium, is called an + "aggregate" if the compilation and its resulting copyright are not + used to limit the access or legal rights of the compilation's users + beyond what the individual works permit. Inclusion of a covered work + in an aggregate does not cause this License to apply to the other + parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms + of sections 4 and 5, provided that you also convey the + machine-readable Corresponding Source under the terms of this License, + in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded + from the Corresponding Source as a System Library, need not be + included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any + tangible personal property which is normally used for personal, family, + or household purposes, or (2) anything designed or sold for incorporation + into a dwelling. In determining whether a product is a consumer product, + doubtful cases shall be resolved in favor of coverage. For a particular + product received by a particular user, "normally used" refers to a + typical or common use of that class of product, regardless of the status + of the particular user or of the way in which the particular user + actually uses, or expects or is expected to use, the product. A product + is a consumer product regardless of whether the product has substantial + commercial, industrial or non-consumer uses, unless such uses represent + the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, + procedures, authorization keys, or other information required to install + and execute modified versions of a covered work in that User Product from + a modified version of its Corresponding Source. The information must + suffice to ensure that the continued functioning of the modified object + code is in no case prevented or interfered with solely because + modification has been made. + + If you convey an object code work under this section in, or with, or + specifically for use in, a User Product, and the conveying occurs as + part of a transaction in which the right of possession and use of the + User Product is transferred to the recipient in perpetuity or for a + fixed term (regardless of how the transaction is characterized), the + Corresponding Source conveyed under this section must be accompanied + by the Installation Information. But this requirement does not apply + if neither you nor any third party retains the ability to install + modified object code on the User Product (for example, the work has + been installed in ROM). + + The requirement to provide Installation Information does not include a + requirement to continue to provide support service, warranty, or updates + for a work that has been modified or installed by the recipient, or for + the User Product in which it has been modified or installed. Access to a + network may be denied when the modification itself materially and + adversely affects the operation of the network or violates the rules and + protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, + in accord with this section must be in a format that is publicly + documented (and with an implementation available to the public in + source code form), and must require no special password or key for + unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this + License by making exceptions from one or more of its conditions. + Additional permissions that are applicable to the entire Program shall + be treated as though they were included in this License, to the extent + that they are valid under applicable law. If additional permissions + apply only to part of the Program, that part may be used separately + under those permissions, but the entire Program remains governed by + this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option + remove any additional permissions from that copy, or from any part of + it. (Additional permissions may be written to require their own + removal in certain cases when you modify the work.) You may place + additional permissions on material, added by you to a covered work, + for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you + add to a covered work, you may (if authorized by the copyright holders of + that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further + restrictions" within the meaning of section 10. If the Program as you + received it, or any part of it, contains a notice stating that it is + governed by this License along with a term that is a further + restriction, you may remove that term. If a license document contains + a further restriction but permits relicensing or conveying under this + License, you may add to a covered work material governed by the terms + of that license document, provided that the further restriction does + not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you + must place, in the relevant source files, a statement of the + additional terms that apply to those files, or a notice indicating + where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the + form of a separately written license, or stated as exceptions; + the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly + provided under this License. Any attempt otherwise to propagate or + modify it is void, and will automatically terminate your rights under + this License (including any patent licenses granted under the third + paragraph of section 11). + + However, if you cease all violation of this License, then your + license from a particular copyright holder is reinstated (a) + provisionally, unless and until the copyright holder explicitly and + finally terminates your license, and (b) permanently, if the copyright + holder fails to notify you of the violation by some reasonable means + prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is + reinstated permanently if the copyright holder notifies you of the + violation by some reasonable means, this is the first time you have + received notice of violation of this License (for any work) from that + copyright holder, and you cure the violation prior to 30 days after + your receipt of the notice. + + Termination of your rights under this section does not terminate the + licenses of parties who have received copies or rights from you under + this License. If your rights have been terminated and not permanently + reinstated, you do not qualify to receive new licenses for the same + material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or + run a copy of the Program. Ancillary propagation of a covered work + occurring solely as a consequence of using peer-to-peer transmission + to receive a copy likewise does not require acceptance. However, + nothing other than this License grants you permission to propagate or + modify any covered work. These actions infringe copyright if you do + not accept this License. Therefore, by modifying or propagating a + covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically + receives a license from the original licensors, to run, modify and + propagate that work, subject to this License. You are not responsible + for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an + organization, or substantially all assets of one, or subdividing an + organization, or merging organizations. If propagation of a covered + work results from an entity transaction, each party to that + transaction who receives a copy of the work also receives whatever + licenses to the work the party's predecessor in interest had or could + give under the previous paragraph, plus a right to possession of the + Corresponding Source of the work from the predecessor in interest, if + the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the + rights granted or affirmed under this License. For example, you may + not impose a license fee, royalty, or other charge for exercise of + rights granted under this License, and you may not initiate litigation + (including a cross-claim or counterclaim in a lawsuit) alleging that + any patent claim is infringed by making, using, selling, offering for + sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this + License of the Program or a work on which the Program is based. The + work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims + owned or controlled by the contributor, whether already acquired or + hereafter acquired, that would be infringed by some manner, permitted + by this License, of making, using, or selling its contributor version, + but do not include claims that would be infringed only as a + consequence of further modification of the contributor version. For + purposes of this definition, "control" includes the right to grant + patent sublicenses in a manner consistent with the requirements of + this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free + patent license under the contributor's essential patent claims, to + make, use, sell, offer for sale, import and otherwise run, modify and + propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express + agreement or commitment, however denominated, not to enforce a patent + (such as an express permission to practice a patent or covenant not to + sue for patent infringement). To "grant" such a patent license to a + party means to make such an agreement or commitment not to enforce a + patent against the party. + + If you convey a covered work, knowingly relying on a patent license, + and the Corresponding Source of the work is not available for anyone + to copy, free of charge and under the terms of this License, through a + publicly available network server or other readily accessible means, + then you must either (1) cause the Corresponding Source to be so + available, or (2) arrange to deprive yourself of the benefit of the + patent license for this particular work, or (3) arrange, in a manner + consistent with the requirements of this License, to extend the patent + license to downstream recipients. "Knowingly relying" means you have + actual knowledge that, but for the patent license, your conveying the + covered work in a country, or your recipient's use of the covered work + in a country, would infringe one or more identifiable patents in that + country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or + arrangement, you convey, or propagate by procuring conveyance of, a + covered work, and grant a patent license to some of the parties + receiving the covered work authorizing them to use, propagate, modify + or convey a specific copy of the covered work, then the patent license + you grant is automatically extended to all recipients of the covered + work and works based on it. + + A patent license is "discriminatory" if it does not include within + the scope of its coverage, prohibits the exercise of, or is + conditioned on the non-exercise of one or more of the rights that are + specifically granted under this License. You may not convey a covered + work if you are a party to an arrangement with a third party that is + in the business of distributing software, under which you make payment + to the third party based on the extent of your activity of conveying + the work, and under which the third party grants, to any of the + parties who would receive the covered work from you, a discriminatory + patent license (a) in connection with copies of the covered work + conveyed by you (or copies made from those copies), or (b) primarily + for and in connection with specific products or compilations that + contain the covered work, unless you entered into that arrangement, + or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting + any implied license or other defenses to infringement that may + otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or + otherwise) that contradict the conditions of this License, they do not + excuse you from the conditions of this License. If you cannot convey a + covered work so as to satisfy simultaneously your obligations under this + License and any other pertinent obligations, then as a consequence you may + not convey it at all. For example, if you agree to terms that obligate you + to collect a royalty for further conveying from those to whom you convey + the Program, the only way you could satisfy both those terms and this + License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have + permission to link or combine any covered work with a work licensed + under version 3 of the GNU Affero General Public License into a single + combined work, and to convey the resulting work. The terms of this + License will continue to apply to the part which is the covered work, + but the special requirements of the GNU Affero General Public License, + section 13, concerning interaction through a network will apply to the + combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of + the GNU General Public License from time to time. Such new versions will + be similar in spirit to the present version, but may differ in detail to + address new problems or concerns. + + Each version is given a distinguishing version number. If the + Program specifies that a certain numbered version of the GNU General + Public License "or any later version" applies to it, you have the + option of following the terms and conditions either of that numbered + version or of any later version published by the Free Software + Foundation. If the Program does not specify a version number of the + GNU General Public License, you may choose any version ever published + by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future + versions of the GNU General Public License can be used, that proxy's + public statement of acceptance of a version permanently authorizes you + to choose that version for the Program. + + Later license versions may give you additional or different + permissions. However, no additional obligations are imposed on any + author or copyright holder as a result of your choosing to follow a + later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY + APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT + HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY + OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, + THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM + IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF + ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING + WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS + THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY + GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE + USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF + DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD + PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), + EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF + SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided + above cannot be given local legal effect according to their terms, + reviewing courts shall apply local law that most closely approximates + an absolute waiver of all civil liability in connection with the + Program, unless a warranty or assumption of liability accompanies a + copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest + possible use to the public, the best way to achieve this is to make it + free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest + to attach them to the start of each source file to most effectively + state the exclusion of warranty; and each file should have at least + the "copyright" line and a pointer to where the full notice is found. + + + 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 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + + Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short + notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + + The hypothetical commands `show w' and `show c' should show the appropriate + parts of the General Public License. Of course, your program's commands + might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, + if any, to sign a "copyright disclaimer" for the program, if necessary. + For more information on this, and how to apply and follow the GNU GPL, see + . + + The GNU General Public License does not permit incorporating your program + into proprietary programs. If your program is a subroutine library, you + may consider it more useful to permit linking proprietary applications with + the library. If this is what you want to do, use the GNU Lesser General + Public License instead of this License. But first, please read + . + + +File: gsl-ref.info, Node: GNU Free Documentation License, Next: Index, Prev: GNU General Public License, Up: Top + +53 GNU Free Documentation License +********************************* + + + GNU Free Documentation License + Version 1.3, 3 November 2008 + + + Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc. + + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + 0. PREAMBLE + + The purpose of this License is to make a manual, textbook, or other + functional and useful document "free" in the sense of freedom: to + assure everyone the effective freedom to copy and redistribute it, + with or without modifying it, either commercially or noncommercially. + Secondarily, this License preserves for the author and publisher a way + to get credit for their work, while not being considered responsible + for modifications made by others. + + This License is a kind of "copyleft", which means that derivative + works of the document must themselves be free in the same sense. It + complements the GNU General Public License, which is a copyleft + license designed for free software. + + We have designed this License in order to use it for manuals for free + software, because free software needs free documentation: a free + program should come with manuals providing the same freedoms that the + software does. But this License is not limited to software manuals; + it can be used for any textual work, regardless of subject matter or + whether it is published as a printed book. We recommend this License + principally for works whose purpose is instruction or reference. + + + 1. APPLICABILITY AND DEFINITIONS + + This License applies to any manual or other work, in any medium, that + contains a notice placed by the copyright holder saying it can be + distributed under the terms of this License. Such a notice grants a + world-wide, royalty-free license, unlimited in duration, to use that + work under the conditions stated herein. The "Document", below, + refers to any such manual or work. Any member of the public is a + licensee, and is addressed as "you". You accept the license if you + copy, modify or distribute the work in a way requiring permission + under copyright law. + + A "Modified Version" of the Document means any work containing the + Document or a portion of it, either copied verbatim, or with + modifications and/or translated into another language. + + A "Secondary Section" is a named appendix or a front-matter section of + the Document that deals exclusively with the relationship of the + publishers or authors of the Document to the Document's overall + subject (or to related matters) and contains nothing that could fall + directly within that overall subject. (Thus, if the Document is in + part a textbook of mathematics, a Secondary Section may not explain + any mathematics.) The relationship could be a matter of historical + connection with the subject or with related matters, or of legal, + commercial, philosophical, ethical or political position regarding + them. + + The "Invariant Sections" are certain Secondary Sections whose titles + are designated, as being those of Invariant Sections, in the notice + that says that the Document is released under this License. If a + section does not fit the above definition of Secondary then it is not + allowed to be designated as Invariant. The Document may contain zero + Invariant Sections. If the Document does not identify any Invariant + Sections then there are none. + + The "Cover Texts" are certain short passages of text that are listed, + as Front-Cover Texts or Back-Cover Texts, in the notice that says that + the Document is released under this License. A Front-Cover Text may + be at most 5 words, and a Back-Cover Text may be at most 25 words. + + A "Transparent" copy of the Document means a machine-readable copy, + represented in a format whose specification is available to the + general public, that is suitable for revising the document + straightforwardly with generic text editors or (for images composed of + pixels) generic paint programs or (for drawings) some widely available + drawing editor, and that is suitable for input to text formatters or + for automatic translation to a variety of formats suitable for input + to text formatters. A copy made in an otherwise Transparent file + format whose markup, or absence of markup, has been arranged to thwart + or discourage subsequent modification by readers is not Transparent. + An image format is not Transparent if used for any substantial amount + of text. A copy that is not "Transparent" is called "Opaque". + + Examples of suitable formats for Transparent copies include plain + ASCII without markup, Texinfo input format, LaTeX input format, SGML + or XML using a publicly available DTD, and standard-conforming simple + HTML, PostScript or PDF designed for human modification. Examples of + transparent image formats include PNG, XCF and JPG. Opaque formats + include proprietary formats that can be read and edited only by + proprietary word processors, SGML or XML for which the DTD and/or + processing tools are not generally available, and the + machine-generated HTML, PostScript or PDF produced by some word + processors for output purposes only. + + The "Title Page" means, for a printed book, the title page itself, + plus such following pages as are needed to hold, legibly, the material + this License requires to appear in the title page. For works in + formats which do not have any title page as such, "Title Page" means + the text near the most prominent appearance of the work's title, + preceding the beginning of the body of the text. + + The "publisher" means any person or entity that distributes copies of + the Document to the public. + + A section "Entitled XYZ" means a named subunit of the Document whose + title either is precisely XYZ or contains XYZ in parentheses following + text that translates XYZ in another language. (Here XYZ stands for a + specific section name mentioned below, such as "Acknowledgements", + "Dedications", "Endorsements", or "History".) To "Preserve the Title" + of such a section when you modify the Document means that it remains a + section "Entitled XYZ" according to this definition. + + The Document may include Warranty Disclaimers next to the notice which + states that this License applies to the Document. These Warranty + Disclaimers are considered to be included by reference in this + License, but only as regards disclaiming warranties: any other + implication that these Warranty Disclaimers may have is void and has + no effect on the meaning of this License. + + 2. VERBATIM COPYING + + You may copy and distribute the Document in any medium, either + commercially or noncommercially, provided that this License, the + copyright notices, and the license notice saying this License applies + to the Document are reproduced in all copies, and that you add no + other conditions whatsoever to those of this License. You may not use + technical measures to obstruct or control the reading or further + copying of the copies you make or distribute. However, you may accept + compensation in exchange for copies. If you distribute a large enough + number of copies you must also follow the conditions in section 3. + + You may also lend copies, under the same conditions stated above, and + you may publicly display copies. + + + 3. COPYING IN QUANTITY + + If you publish printed copies (or copies in media that commonly have + printed covers) of the Document, numbering more than 100, and the + Document's license notice requires Cover Texts, you must enclose the + copies in covers that carry, clearly and legibly, all these Cover + Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on + the back cover. Both covers must also clearly and legibly identify + you as the publisher of these copies. The front cover must present + the full title with all words of the title equally prominent and + visible. You may add other material on the covers in addition. + Copying with changes limited to the covers, as long as they preserve + the title of the Document and satisfy these conditions, can be treated + as verbatim copying in other respects. + + If the required texts for either cover are too voluminous to fit + legibly, you should put the first ones listed (as many as fit + reasonably) on the actual cover, and continue the rest onto adjacent + pages. + + If you publish or distribute Opaque copies of the Document numbering + more than 100, you must either include a machine-readable Transparent + copy along with each Opaque copy, or state in or with each Opaque copy + a computer-network location from which the general network-using + public has access to download using public-standard network protocols + a complete Transparent copy of the Document, free of added material. + If you use the latter option, you must take reasonably prudent steps, + when you begin distribution of Opaque copies in quantity, to ensure + that this Transparent copy will remain thus accessible at the stated + location until at least one year after the last time you distribute an + Opaque copy (directly or through your agents or retailers) of that + edition to the public. + + It is requested, but not required, that you contact the authors of the + Document well before redistributing any large number of copies, to + give them a chance to provide you with an updated version of the + Document. + + + 4. MODIFICATIONS + + You may copy and distribute a Modified Version of the Document under + the conditions of sections 2 and 3 above, provided that you release + the Modified Version under precisely this License, with the Modified + Version filling the role of the Document, thus licensing distribution + and modification of the Modified Version to whoever possesses a copy + of it. In addition, you must do these things in the Modified Version: + + A. Use in the Title Page (and on the covers, if any) a title distinct + from that of the Document, and from those of previous versions + (which should, if there were any, be listed in the History section + of the Document). You may use the same title as a previous version + if the original publisher of that version gives permission. + B. List on the Title Page, as authors, one or more persons or entities + responsible for authorship of the modifications in the Modified + Version, together with at least five of the principal authors of the + Document (all of its principal authors, if it has fewer than five), + unless they release you from this requirement. + C. State on the Title page the name of the publisher of the + Modified Version, as the publisher. + D. Preserve all the copyright notices of the Document. + E. Add an appropriate copyright notice for your modifications + adjacent to the other copyright notices. + F. Include, immediately after the copyright notices, a license notice + giving the public permission to use the Modified Version under the + terms of this License, in the form shown in the Addendum below. + G. Preserve in that license notice the full lists of Invariant Sections + and required Cover Texts given in the Document's license notice. + H. Include an unaltered copy of this License. + I. Preserve the section Entitled "History", Preserve its Title, and add + to it an item stating at least the title, year, new authors, and + publisher of the Modified Version as given on the Title Page. If + there is no section Entitled "History" in the Document, create one + stating the title, year, authors, and publisher of the Document as + given on its Title Page, then add an item describing the Modified + Version as stated in the previous sentence. + J. Preserve the network location, if any, given in the Document for + public access to a Transparent copy of the Document, and likewise + the network locations given in the Document for previous versions + it was based on. These may be placed in the "History" section. + You may omit a network location for a work that was published at + least four years before the Document itself, or if the original + publisher of the version it refers to gives permission. + K. For any section Entitled "Acknowledgements" or "Dedications", + Preserve the Title of the section, and preserve in the section all + the substance and tone of each of the contributor acknowledgements + and/or dedications given therein. + L. Preserve all the Invariant Sections of the Document, + unaltered in their text and in their titles. Section numbers + or the equivalent are not considered part of the section titles. + M. Delete any section Entitled "Endorsements". Such a section + may not be included in the Modified Version. + N. Do not retitle any existing section to be Entitled "Endorsements" + or to conflict in title with any Invariant Section. + O. Preserve any Warranty Disclaimers. + + If the Modified Version includes new front-matter sections or + appendices that qualify as Secondary Sections and contain no material + copied from the Document, you may at your option designate some or all + of these sections as invariant. To do this, add their titles to the + list of Invariant Sections in the Modified Version's license notice. + These titles must be distinct from any other section titles. + + You may add a section Entitled "Endorsements", provided it contains + nothing but endorsements of your Modified Version by various + parties--for example, statements of peer review or that the text has + been approved by an organization as the authoritative definition of a + standard. + + You may add a passage of up to five words as a Front-Cover Text, and a + passage of up to 25 words as a Back-Cover Text, to the end of the list + of Cover Texts in the Modified Version. Only one passage of + Front-Cover Text and one of Back-Cover Text may be added by (or + through arrangements made by) any one entity. If the Document already + includes a cover text for the same cover, previously added by you or + by arrangement made by the same entity you are acting on behalf of, + you may not add another; but you may replace the old one, on explicit + permission from the previous publisher that added the old one. + + The author(s) and publisher(s) of the Document do not by this License + give permission to use their names for publicity for or to assert or + imply endorsement of any Modified Version. + + + 5. COMBINING DOCUMENTS + + You may combine the Document with other documents released under this + License, under the terms defined in section 4 above for modified + versions, provided that you include in the combination all of the + Invariant Sections of all of the original documents, unmodified, and + list them all as Invariant Sections of your combined work in its + license notice, and that you preserve all their Warranty Disclaimers. + + The combined work need only contain one copy of this License, and + multiple identical Invariant Sections may be replaced with a single + copy. If there are multiple Invariant Sections with the same name but + different contents, make the title of each such section unique by + adding at the end of it, in parentheses, the name of the original + author or publisher of that section if known, or else a unique number. + Make the same adjustment to the section titles in the list of + Invariant Sections in the license notice of the combined work. + + In the combination, you must combine any sections Entitled "History" + in the various original documents, forming one section Entitled + "History"; likewise combine any sections Entitled "Acknowledgements", + and any sections Entitled "Dedications". You must delete all sections + Entitled "Endorsements". + + + 6. COLLECTIONS OF DOCUMENTS + + You may make a collection consisting of the Document and other + documents released under this License, and replace the individual + copies of this License in the various documents with a single copy + that is included in the collection, provided that you follow the rules + of this License for verbatim copying of each of the documents in all + other respects. + + You may extract a single document from such a collection, and + distribute it individually under this License, provided you insert a + copy of this License into the extracted document, and follow this + License in all other respects regarding verbatim copying of that + document. + + + 7. AGGREGATION WITH INDEPENDENT WORKS + + A compilation of the Document or its derivatives with other separate + and independent documents or works, in or on a volume of a storage or + distribution medium, is called an "aggregate" if the copyright + resulting from the compilation is not used to limit the legal rights + of the compilation's users beyond what the individual works permit. + When the Document is included in an aggregate, this License does not + apply to the other works in the aggregate which are not themselves + derivative works of the Document. + + If the Cover Text requirement of section 3 is applicable to these + copies of the Document, then if the Document is less than one half of + the entire aggregate, the Document's Cover Texts may be placed on + covers that bracket the Document within the aggregate, or the + electronic equivalent of covers if the Document is in electronic form. + Otherwise they must appear on printed covers that bracket the whole + aggregate. + + + 8. TRANSLATION + + Translation is considered a kind of modification, so you may + distribute translations of the Document under the terms of section 4. + Replacing Invariant Sections with translations requires special + permission from their copyright holders, but you may include + translations of some or all Invariant Sections in addition to the + original versions of these Invariant Sections. You may include a + translation of this License, and all the license notices in the + Document, and any Warranty Disclaimers, provided that you also include + the original English version of this License and the original versions + of those notices and disclaimers. In case of a disagreement between + the translation and the original version of this License or a notice + or disclaimer, the original version will prevail. + + If a section in the Document is Entitled "Acknowledgements", + "Dedications", or "History", the requirement (section 4) to Preserve + its Title (section 1) will typically require changing the actual + title. + + + 9. TERMINATION + + You may not copy, modify, sublicense, or distribute the Document + except as expressly provided under this License. Any attempt + otherwise to copy, modify, sublicense, or distribute it is void, and + will automatically terminate your rights under this License. + + However, if you cease all violation of this License, then your license + from a particular copyright holder is reinstated (a) provisionally, + unless and until the copyright holder explicitly and finally + terminates your license, and (b) permanently, if the copyright holder + fails to notify you of the violation by some reasonable means prior to + 60 days after the cessation. + + Moreover, your license from a particular copyright holder is + reinstated permanently if the copyright holder notifies you of the + violation by some reasonable means, this is the first time you have + received notice of violation of this License (for any work) from that + copyright holder, and you cure the violation prior to 30 days after + your receipt of the notice. + + Termination of your rights under this section does not terminate the + licenses of parties who have received copies or rights from you under + this License. If your rights have been terminated and not permanently + reinstated, receipt of a copy of some or all of the same material does + not give you any rights to use it. + + + 10. FUTURE REVISIONS OF THIS LICENSE + + The Free Software Foundation may publish new, revised versions of the + GNU Free Documentation 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. See + http://www.gnu.org/copyleft/. + + Each version of the License is given a distinguishing version number. + If the Document specifies that a particular numbered version of this + License "or any later version" applies to it, you have the option of + following the terms and conditions either of that specified version or + of any later version that has been published (not as a draft) by the + Free Software Foundation. If the Document does not specify a version + number of this License, you may choose any version ever published (not + as a draft) by the Free Software Foundation. If the Document + specifies that a proxy can decide which future versions of this + License can be used, that proxy's public statement of acceptance of a + version permanently authorizes you to choose that version for the + Document. + + 11. RELICENSING + + "Massive Multiauthor Collaboration Site" (or "MMC Site") means any + World Wide Web server that publishes copyrightable works and also + provides prominent facilities for anybody to edit those works. A + public wiki that anybody can edit is an example of such a server. A + "Massive Multiauthor Collaboration" (or "MMC") contained in the site + means any set of copyrightable works thus published on the MMC site. + + "CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0 + license published by Creative Commons Corporation, a not-for-profit + corporation with a principal place of business in San Francisco, + California, as well as future copyleft versions of that license + published by that same organization. + + "Incorporate" means to publish or republish a Document, in whole or in + part, as part of another Document. + + An MMC is "eligible for relicensing" if it is licensed under this + License, and if all works that were first published under this License + somewhere other than this MMC, and subsequently incorporated in whole or + in part into the MMC, (1) had no cover texts or invariant sections, and + (2) were thus incorporated prior to November 1, 2008. + + The operator of an MMC Site may republish an MMC contained in the site + under CC-BY-SA on the same site at any time before August 1, 2009, + provided the MMC is eligible for relicensing. + + + ADDENDUM: How to use this License for your documents + + To use this License in a document you have written, include a copy of + the License in the document and put the following copyright and + license notices just after the title page: + + Copyright (c) YEAR YOUR NAME. + Permission is granted to copy, distribute and/or modify this document + under the terms of the GNU Free Documentation License, Version 1.3 + or any later version published by the Free Software Foundation; + with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. + A copy of the license is included in the section entitled "GNU + Free Documentation License". + + If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, + replace the "with...Texts." line with this: + + with the Invariant Sections being LIST THEIR TITLES, with the + Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST. + + If you have Invariant Sections without Cover Texts, or some other + combination of the three, merge those two alternatives to suit the + situation. + + If your document contains nontrivial examples of program code, we + recommend releasing these examples in parallel under your choice of + free software license, such as the GNU General Public License, + to permit their use in free software. + + * genindex + + +File: gsl-ref.info, Node: Index, Prev: GNU Free Documentation License, Up: Top + +Index +***** + +[index] +* Menu: + +* $, shell prompt: Further Information. (line 26) +* 2D histograms: Example programs for histograms. + (line 64) +* 2D random direction vector: Spherical Vector Distributions. + (line 10) +* 3-j symbols: Coupling Coefficients. + (line 6) +* 3D random direction vector: Spherical Vector Distributions. + (line 32) +* 6-j symbols: Coupling Coefficients. + (line 6) +* 9-j symbols: Coupling Coefficients. + (line 6) +* acceleration of series: References and Further Reading<24>. + (line 12) +* acosh: Elementary Functions. + (line 37) +* Adams method: Stepping Functions. (line 156) +* Adaptive step-size control, differential equations: Stepping Functions. + (line 177) +* Ai(x): Airy Functions and Derivatives. + (line 6) +* Airy functions: Airy Functions and Derivatives. + (line 6) +* Akima splines: 1D Interpolation Types. + (line 41) +* aliasing of arrays: Compatibility with C++. + (line 13) +* alpha (C variable): MISER. (line 131) +* alpha (C variable) <1>: VEGAS. (line 166) +* alternative optimized functions: Portability functions. + (line 34) +* AMAX, Level-1 BLAS: Level 1. (line 67) +* Angular Mathieu Functions: Angular Mathieu Functions. + (line 6) +* angular reduction: Restriction Functions. + (line 6) +* ANSI C, use of: Conventions used in this manual. + (line 20) +* Apell symbol, see Pochhammer symbol: Pochhammer Symbol. (line 6) +* approximate comparison of floating point numbers: Approximate Comparison of Floating Point Numbers. + (line 12) +* arctangent integral: Arctangent Integral. (line 6) +* argument of complex number: Properties of complex numbers. + (line 6) +* arithmetic exceptions: Representation of floating point numbers. + (line 136) +* asinh: Elementary Functions. + (line 42) +* astronomical constants: Fundamental Constants. + (line 55) +* ASUM, Level-1 BLAS: Level 1. (line 54) +* atanh: Elementary Functions. + (line 47) +* atomic physics, constants: Astronomy and Astrophysics. + (line 30) +* autoconf, using with GSL: Contributors to GSL. (line 145) +* AXPY, Level-1 BLAS: Level 1. (line 102) +* B-spline wavelets: Initialization. (line 36) +* Bader and Deuflhard, Bulirsch-Stoer method.: Stepping Functions. + (line 150) +* balancing matrices: Triangular Systems. (line 29) +* Basic Linear Algebra Subroutines (BLAS): References and Further Reading<7>. + (line 14) +* Basic Linear Algebra Subroutines (BLAS) <1>: Autoconf Macros. + (line 106) +* basis splines, B-splines: References and Further Reading<33>. + (line 38) +* basis splines, derivatives: Evaluation of B-splines. + (line 35) +* basis splines, evaluation: Constructing the knots vector. + (line 19) +* basis splines, examples: Working with the Greville abscissae. + (line 20) +* basis splines, Greville abscissae: Evaluation of B-spline derivatives. + (line 36) +* basis splines, initializing: Overview<7>. (line 34) +* basis splines, Marsden-Schoenberg points: Evaluation of B-spline derivatives. + (line 35) +* basis splines, overview: Basis Splines. (line 15) +* BDF method: Stepping Functions. (line 166) +* Bernoulli trial, random variates: The Bernoulli Distribution. + (line 6) +* Bessel functions: Bessel Functions. (line 6) +* Bessel Functions, Fractional Order: Regular Bessel Function—Fractional Order. + (line 6) +* best-fit parameters, covariance: High Level Driver. (line 39) +* Beta distribution: The Beta Distribution. + (line 6) +* Beta function: Beta Functions. (line 6) +* Beta function, incomplete normalized: Incomplete Beta Function. + (line 6) +* BFGS algorithm, minimization: Algorithms with Derivatives. + (line 43) +* Bi(x): Airy Functions and Derivatives. + (line 6) +* bias, IEEE format: IEEE floating-point arithmetic. + (line 11) +* bicubic interpolation: 2D Interpolation Types. + (line 16) +* bidiagonalization of real matrices: Hessenberg-Triangular Decomposition of Real Matrices. + (line 26) +* bilinear interpolation: 2D Interpolation Types. + (line 11) +* binning data: Impulse Detection Example. + (line 88) +* Binomial random variates: The Binomial Distribution. + (line 6) +* biorthogonal wavelets: Initialization. (line 36) +* bisection algorithm for finding roots: Root Bracketing Algorithms. + (line 18) +* Bivariate Gaussian distribution: The Bivariate Gaussian Distribution. + (line 6) +* Bivariate Gaussian distribution <1>: The Multivariate Gaussian Distribution. + (line 6) +* BLAS: References and Further Reading<7>. + (line 15) +* BLAS, Low-level C interface: Autoconf Macros. (line 107) +* BLAS, sparse: References and Further Reading<35>. + (line 13) +* blocks: Data types. (line 60) +* bounds checking, extension to GCC: Vector allocation. (line 36) +* breakpoints: Debugging Numerical Programs. + (line 9) +* Brent’s method for finding minima: Minimization Algorithms. + (line 33) +* Brent’s method for finding roots: Root Bracketing Algorithms. + (line 52) +* Broyden algorithm for multidimensional roots: Algorithms without Derivatives. + (line 54) +* BSD random number generator: Unix random number generators. + (line 17) +* bug-gsl: No Warranty. (line 11) +* bug-gsl mailing list: No Warranty. (line 12) +* bugs: No Warranty. (line 12) +* Bulirsch-Stoer method: Stepping Functions. (line 150) +* C extensions, compatible use of: Conventions used in this manual. + (line 20) +* C++, compatibility: Support for different numeric types. + (line 67) +* C99, inline keyword: ANSI C Compliance. (line 25) +* Carlson forms of Elliptic integrals: Definition of Carlson Forms. + (line 6) +* Cash-Karp, Runge-Kutta method: Stepping Functions. (line 119) +* Cauchy distribution: The Cauchy Distribution. + (line 6) +* Cauchy principal value, by numerical quadrature: QAWC adaptive integration for Cauchy principal values. + (line 6) +* CBLAS: References and Further Reading<7>. + (line 15) +* CBLAS, Low-level interface: Autoconf Macros. (line 107) +* cblas_caxpy (C function): Level 1<2>. (line 105) +* cblas_ccopy (C function): Level 1<2>. (line 102) +* cblas_cdotc_sub (C function): Level 1<2>. (line 24) +* cblas_cdotu_sub (C function): Level 1<2>. (line 20) +* cblas_cgbmv (C function): Level 2<2>. (line 97) +* cblas_cgemm (C function): Level 3<2>. (line 86) +* cblas_cgemv (C function): Level 2<2>. (line 90) +* cblas_cgerc (C function): Level 2<2>. (line 292) +* cblas_cgeru (C function): Level 2<2>. (line 286) +* cblas_chbmv (C function): Level 2<2>. (line 274) +* cblas_chemm (C function): Level 3<2>. (line 170) +* cblas_chemv (C function): Level 2<2>. (line 268) +* cblas_cher (C function): Level 2<2>. (line 298) +* cblas_cher2 (C function): Level 2<2>. (line 308) +* cblas_cher2k (C function): Level 3<2>. (line 182) +* cblas_cherk (C function): Level 3<2>. (line 176) +* cblas_chpmv (C function): Level 2<2>. (line 279) +* cblas_chpr (C function): Level 2<2>. (line 303) +* cblas_chpr2 (C function): Level 2<2>. (line 314) +* cblas_cscal (C function): Level 1<2>. (line 149) +* cblas_csscal (C function): Level 1<2>. (line 155) +* cblas_cswap (C function): Level 1<2>. (line 99) +* cblas_csymm (C function): Level 3<2>. (line 92) +* cblas_csyr2k (C function): Level 3<2>. (line 104) +* cblas_csyrk (C function): Level 3<2>. (line 98) +* cblas_ctbmv (C function): Level 2<2>. (line 108) +* cblas_ctbsv (C function): Level 2<2>. (line 123) +* cblas_ctpmv (C function): Level 2<2>. (line 113) +* cblas_ctpsv (C function): Level 2<2>. (line 128) +* cblas_ctrmm (C function): Level 3<2>. (line 112) +* cblas_ctrmv (C function): Level 2<2>. (line 103) +* cblas_ctrsm (C function): Level 3<2>. (line 120) +* cblas_ctrsv (C function): Level 2<2>. (line 118) +* cblas_dasum (C function): Level 1<2>. (line 48) +* cblas_daxpy (C function): Level 1<2>. (line 96) +* cblas_dcopy (C function): Level 1<2>. (line 92) +* cblas_ddot (C function): Level 1<2>. (line 16) +* cblas_dgbmv (C function): Level 2<2>. (line 54) +* cblas_dgemm (C function): Level 3<2>. (line 48) +* cblas_dgemv (C function): Level 2<2>. (line 47) +* cblas_dger (C function): Level 2<2>. (line 241) +* cblas_dnrm2 (C function): Level 1<2>. (line 44) +* cblas_drot (C function): Level 1<2>. (line 136) +* cblas_drotg (C function): Level 1<2>. (line 130) +* cblas_drotm (C function): Level 1<2>. (line 139) +* cblas_drotmg (C function): Level 1<2>. (line 133) +* cblas_dsbmv (C function): Level 2<2>. (line 231) +* cblas_dscal (C function): Level 1<2>. (line 145) +* cblas_dsdot (C function): Level 1<2>. (line 9) +* cblas_dspmv (C function): Level 2<2>. (line 236) +* cblas_dspr (C function): Level 2<2>. (line 251) +* cblas_dspr2 (C function): Level 2<2>. (line 262) +* cblas_dswap (C function): Level 1<2>. (line 89) +* cblas_dsymm (C function): Level 3<2>. (line 54) +* cblas_dsymv (C function): Level 2<2>. (line 225) +* cblas_dsyr (C function): Level 2<2>. (line 246) +* cblas_dsyr2 (C function): Level 2<2>. (line 256) +* cblas_dsyr2k (C function): Level 3<2>. (line 65) +* cblas_dsyrk (C function): Level 3<2>. (line 60) +* cblas_dtbmv (C function): Level 2<2>. (line 65) +* cblas_dtbsv (C function): Level 2<2>. (line 80) +* cblas_dtpmv (C function): Level 2<2>. (line 70) +* cblas_dtpsv (C function): Level 2<2>. (line 85) +* cblas_dtrmm (C function): Level 3<2>. (line 72) +* cblas_dtrmv (C function): Level 2<2>. (line 60) +* cblas_dtrsm (C function): Level 3<2>. (line 79) +* cblas_dtrsv (C function): Level 2<2>. (line 75) +* cblas_dzasum (C function): Level 1<2>. (line 64) +* cblas_dznrm2 (C function): Level 1<2>. (line 60) +* cblas_icamax (C function): Level 1<2>. (line 74) +* cblas_idamax (C function): Level 1<2>. (line 71) +* cblas_isamax (C function): Level 1<2>. (line 68) +* cblas_izamax (C function): Level 1<2>. (line 77) +* cblas_sasum (C function): Level 1<2>. (line 40) +* cblas_saxpy (C function): Level 1<2>. (line 86) +* cblas_scasum (C function): Level 1<2>. (line 56) +* cblas_scnrm2 (C function): Level 1<2>. (line 52) +* cblas_scopy (C function): Level 1<2>. (line 83) +* cblas_sdot (C function): Level 1<2>. (line 13) +* cblas_sdsdot (C function): Level 1<2>. (line 6) +* cblas_sgbmv (C function): Level 2<2>. (line 11) +* cblas_sgemm (C function): Level 3<2>. (line 6) +* cblas_sgemv (C function): Level 2<2>. (line 6) +* cblas_sger (C function): Level 2<2>. (line 194) +* cblas_snrm2 (C function): Level 1<2>. (line 36) +* cblas_srot (C function): Level 1<2>. (line 124) +* cblas_srotg (C function): Level 1<2>. (line 117) +* cblas_srotm (C function): Level 1<2>. (line 127) +* cblas_srotmg (C function): Level 1<2>. (line 121) +* cblas_ssbmv (C function): Level 2<2>. (line 183) +* cblas_sscal (C function): Level 1<2>. (line 142) +* cblas_sspmv (C function): Level 2<2>. (line 188) +* cblas_sspr (C function): Level 2<2>. (line 207) +* cblas_sspr2 (C function): Level 2<2>. (line 219) +* cblas_sswap (C function): Level 1<2>. (line 80) +* cblas_ssymm (C function): Level 3<2>. (line 12) +* cblas_ssymv (C function): Level 2<2>. (line 176) +* cblas_ssyr (C function): Level 2<2>. (line 201) +* cblas_ssyr2 (C function): Level 2<2>. (line 213) +* cblas_ssyr2k (C function): Level 3<2>. (line 24) +* cblas_ssyrk (C function): Level 3<2>. (line 18) +* cblas_stbmv (C function): Level 2<2>. (line 22) +* cblas_stbsv (C function): Level 2<2>. (line 37) +* cblas_stpmv (C function): Level 2<2>. (line 27) +* cblas_stpsv (C function): Level 2<2>. (line 42) +* cblas_strmm (C function): Level 3<2>. (line 32) +* cblas_strmv (C function): Level 2<2>. (line 17) +* cblas_strsm (C function): Level 3<2>. (line 40) +* cblas_strsv (C function): Level 2<2>. (line 32) +* cblas_xerbla (C function): Level 3<2>. (line 210) +* cblas_zaxpy (C function): Level 1<2>. (line 114) +* cblas_zcopy (C function): Level 1<2>. (line 111) +* cblas_zdotc_sub (C function): Level 1<2>. (line 32) +* cblas_zdotu_sub (C function): Level 1<2>. (line 28) +* cblas_zdscal (C function): Level 1<2>. (line 158) +* cblas_zgbmv (C function): Level 2<2>. (line 140) +* cblas_zgemm (C function): Level 3<2>. (line 128) +* cblas_zgemv (C function): Level 2<2>. (line 133) +* cblas_zgerc (C function): Level 2<2>. (line 344) +* cblas_zgeru (C function): Level 2<2>. (line 338) +* cblas_zhbmv (C function): Level 2<2>. (line 326) +* cblas_zhemm (C function): Level 3<2>. (line 190) +* cblas_zhemv (C function): Level 2<2>. (line 320) +* cblas_zher (C function): Level 2<2>. (line 350) +* cblas_zher2 (C function): Level 2<2>. (line 362) +* cblas_zher2k (C function): Level 3<2>. (line 202) +* cblas_zherk (C function): Level 3<2>. (line 196) +* cblas_zhpmv (C function): Level 2<2>. (line 331) +* cblas_zhpr (C function): Level 2<2>. (line 356) +* cblas_zhpr2 (C function): Level 2<2>. (line 368) +* cblas_zscal (C function): Level 1<2>. (line 152) +* cblas_zswap (C function): Level 1<2>. (line 108) +* cblas_zsymm (C function): Level 3<2>. (line 134) +* cblas_zsyr2k (C function): Level 3<2>. (line 146) +* cblas_zsyrk (C function): Level 3<2>. (line 140) +* cblas_ztbmv (C function): Level 2<2>. (line 151) +* cblas_ztbsv (C function): Level 2<2>. (line 166) +* cblas_ztpmv (C function): Level 2<2>. (line 156) +* cblas_ztpsv (C function): Level 2<2>. (line 171) +* cblas_ztrmm (C function): Level 3<2>. (line 154) +* cblas_ztrmv (C function): Level 2<2>. (line 146) +* cblas_ztrsm (C function): Level 3<2>. (line 162) +* cblas_ztrsv (C function): Level 2<2>. (line 161) +* CDFs, cumulative distribution functions: References. (line 14) +* ce(q,x), Mathieu function: Angular Mathieu Functions. + (line 6) +* Chebyshev series: References and Further Reading<23>. + (line 15) +* checking combination for validity: Combination properties. + (line 20) +* checking multiset for validity: Multiset properties. (line 20) +* checking permutation for validity: Permutation properties. + (line 15) +* Chi(x): Hyperbolic Integrals. + (line 6) +* Chi-squared distribution: The Chi-squared Distribution. + (line 14) +* Cholesky decomposition: Singular Value Decomposition. + (line 95) +* Cholesky decomposition, modified: Pivoted Cholesky Decomposition. + (line 107) +* Cholesky decomposition, pivoted: Cholesky Decomposition. + (line 148) +* Ci(x): Trigonometric Integrals. + (line 6) +* Clausen functions: Clausen Functions. (line 6) +* Clenshaw-Curtis quadrature: Integrands with weight functions. + (line 6) +* CMRG, combined multiple recursive random number generator: Random number generator algorithms. + (line 103) +* code reuse in applications: Deprecated Functions. + (line 14) +* combinations: References and Further Reading<5>. + (line 16) +* combinatorial factor C(m: Factorials. (line 44) +* combinatorial optimization: References and Further Reading<19>. + (line 21) +* comparison functions, definition: Sorting objects. (line 16) +* compatibility: Conventions used in this manual. + (line 19) +* compiling programs, include paths: An Example Program. (line 29) +* compiling programs, library paths: Compiling and Linking. + (line 24) +* complementary incomplete Gamma function: Incomplete Gamma Functions. + (line 23) +* complete Fermi-Dirac integrals: Complete Fermi-Dirac Integrals. + (line 6) +* complete orthogonal decomposition: QR Decomposition with Column Pivoting. + (line 165) +* complex arithmetic: Properties of complex numbers. + (line 27) +* complex cosine function, special functions: Trigonometric Functions for Complex Arguments. + (line 12) +* Complex Gamma function: Gamma Functions. (line 60) +* complex hermitian matrix, eigensystem: Complex Hermitian Matrices. + (line 9) +* complex log sine function, special functions: Trigonometric Functions for Complex Arguments. + (line 18) +* complex numbers: Approximate Comparison of Floating Point Numbers. + (line 30) +* complex sinc function, special functions: Circular Trigonometric Functions. + (line 23) +* complex sine function, special functions: Trigonometric Functions for Complex Arguments. + (line 6) +* confluent hypergeometric function: Laguerre Functions. (line 6) +* confluent hypergeometric functions: Hypergeometric Functions. + (line 6) +* conical functions: Legendre Functions and Spherical Harmonics. + (line 6) +* Conjugate gradient algorithm, minimization: Algorithms with Derivatives. + (line 15) +* conjugate of complex number: Complex arithmetic operators. + (line 66) +* constant matrix: Accessing matrix elements. + (line 49) +* constants, fundamental: Physical Constants. (line 22) +* constants, mathematical (defined as macros): Mathematical Functions. + (line 14) +* constants, physical: References and Further Reading<37>. + (line 15) +* constants, prefixes: Force and Energy. (line 21) +* contacting the GSL developers: Reporting Bugs. (line 30) +* conventions, used in manual: Further Information. (line 27) +* convergence, accelerating a series: References and Further Reading<24>. + (line 11) +* conversion of units: References and Further Reading<37>. + (line 15) +* cooling schedule: Simulated Annealing algorithm. + (line 20) +* COPY, Level-1 BLAS: Level 1. (line 91) +* correlation, of two datasets: Covariance. (line 24) +* cosine function, special functions: Circular Trigonometric Functions. + (line 11) +* cosine of complex number: Complex Trigonometric Functions. + (line 11) +* cost function: References and Further Reading<19>. + (line 20) +* Coulomb wave functions: Coulomb Functions. (line 6) +* coupling coefficients: Coupling Coefficients. + (line 6) +* covariance matrix, from linear regression: Linear regression with a constant term. + (line 9) +* covariance matrix, linear fits: Overview<5>. (line 18) +* covariance matrix, nonlinear fits: High Level Driver. (line 38) +* covariance, of two datasets: Autocorrelation. (line 23) +* cquad, doubly-adaptive integration: QAWF adaptive integration for Fourier integrals. + (line 59) +* CRAY random number generator, RANF: Other random number generators. + (line 22) +* cubic equation, solving: Quadratic Equations. (line 43) +* cubic splines: 1D Interpolation Types. + (line 23) +* cumulative distribution functions (CDFs): References. (line 14) +* Cylindrical Bessel Functions: Regular Cylindrical Bessel Functions. + (line 6) +* Daubechies wavelets: Initialization. (line 23) +* Dawson function: Dawson Function. (line 6) +* DAXPY, Level-1 BLAS: Level 1. (line 102) +* debugging numerical programs: Debugging Numerical Programs. + (line 9) +* Debye functions: Debye Functions. (line 6) +* denormalized form, IEEE format: Representation of floating point numbers. + (line 14) +* deprecated functions: Thread-safety. (line 21) +* derivatives, calculating numerically: References and Further Reading<22>. + (line 18) +* determinant of a matrix, by LU decomposition: LU Decomposition. + (line 91) +* Deuflhard and Bader, Bulirsch-Stoer method.: Stepping Functions. + (line 150) +* DFTs, see FFT: References and Further Reading<10>. + (line 27) +* diagonal, of a matrix: Creating row and column views. + (line 67) +* differential equations, initial value problems: References and Further Reading<20>. + (line 11) +* differentiation of functions, numeric: References and Further Reading<22>. + (line 18) +* digamma function: Psi Digamma Function. + (line 6) +* dilogarithm: Dilogarithm. (line 6) +* direction vector, random 2D: Spherical Vector Distributions. + (line 10) +* direction vector, random 3D: Spherical Vector Distributions. + (line 32) +* direction vector, random N-dimensional: Spherical Vector Distributions. + (line 42) +* Dirichlet distribution: The Dirichlet Distribution. + (line 6) +* discontinuities, in ODE systems: Evolution. (line 90) +* Discrete Fourier Transforms, see FFT: References and Further Reading<10>. + (line 28) +* discrete Hankel transforms: References and Further Reading<26>. + (line 54) +* Discrete Newton algorithm for multidimensional roots: Algorithms without Derivatives. + (line 32) +* Discrete random numbers: General Discrete Distributions. + (line 49) +* Discrete random numbers <1>: General Discrete Distributions. + (line 65) +* Discrete random numbers <2>: General Discrete Distributions. + (line 71) +* Discrete random numbers <3>: General Discrete Distributions. + (line 80) +* Discrete random numbers, preprocessing: General Discrete Distributions. + (line 49) +* dither (C variable): MISER. (line 149) +* divided differences, polynomials: Polynomial Evaluation. + (line 41) +* division by zero, IEEE exceptions: Representation of floating point numbers. + (line 136) +* Dogleg algorithm: Levenberg-Marquardt with Geodesic Acceleration. + (line 30) +* Dogleg algorithm, double: Dogleg. (line 27) +* dollar sign $, shell prompt: Conventions used in this manual. + (line 6) +* DOT, Level-1 BLAS: Level 1. (line 6) +* double Dogleg algorithm: Dogleg. (line 27) +* double factorial: Factorials. (line 19) +* double precision, IEEE format: Representation of floating point numbers. + (line 43) +* downloading GSL: GSL is Free Software. + (line 46) +* DWT initialization: Definitions<2>. (line 27) +* DWT, mathematical definition: Wavelet Transforms. (line 11) +* DWT, one dimensional: Transform Functions. (line 12) +* DWT, see wavelet transforms: References and Further Reading<25>. + (line 25) +* DWT, two dimensional: Wavelet transforms in one dimension. + (line 43) +* e, defined as a macro: Mathematical Constants. + (line 9) +* E1(x): Exponential Integral. + (line 6) +* E2(x): Exponential Integral. + (line 6) +* Ei(x): Exponential Integral. + (line 6) +* eigenvalues and eigenvectors: References and Further Reading<9>. + (line 50) +* elementary functions: Examples. (line 39) +* elementary operations: Elementary Operations. + (line 6) +* elliptic functions (Jacobi): Elliptic Functions Jacobi. + (line 6) +* elliptic integrals: Elliptic Integrals. (line 6) +* energy function: References and Further Reading<19>. + (line 21) +* energy, units of: Mass and Weight. (line 50) +* erf(x): Error Functions. (line 6) +* erfc(x): Error Functions. (line 6) +* Erlang distribution: The Gamma Distribution. + (line 6) +* error codes: Error Codes. (line 13) +* error codes, reserved: Error Reporting. (line 44) +* error function: Error Functions. (line 6) +* error handlers: Error Codes. (line 50) +* error handling: Code Reuse. (line 14) +* error handling macros: Error Handlers. (line 81) +* estimated standard deviation: References and Further Reading<14>. + (line 52) +* estimated variance: References and Further Reading<14>. + (line 52) +* estimate_frac (C variable): MISER. (line 104) +* estimation, location: Order Statistics. (line 21) +* estimation, scale: Gastwirth Estimator. (line 23) +* Eta Function: Eta Function. (line 6) +* euclidean distance function, hypot: Elementary Functions. + (line 24) +* euclidean distance function, hypot3: Elementary Functions. + (line 30) +* Euler’s constant, defined as a macro: Mathematical Constants. + (line 9) +* evaluation of polynomials: Polynomials. (line 13) +* evaluation of polynomials, in divided difference form: Polynomial Evaluation. + (line 40) +* examples, conventions used in: Further Information. (line 27) +* exceptions, C++: Support for different numeric types. + (line 66) +* exceptions, floating point: Examining floating point registers. + (line 32) +* exceptions, IEEE arithmetic: Representation of floating point numbers. + (line 136) +* exchanging permutation elements: Accessing permutation elements. + (line 17) +* exp: Exponential Functions. + (line 6) +* expm1: Elementary Functions. + (line 18) +* exponent, IEEE format: IEEE floating-point arithmetic. + (line 11) +* Exponential distribution: The Exponential Distribution. + (line 6) +* exponential function: Exponential Functions. + (line 6) +* exponential integrals: Exponential Integrals. + (line 6) +* Exponential power distribution: The Exponential Power Distribution. + (line 6) +* exponential, difference from 1 computed accurately: Elementary Functions. + (line 18) +* exponentiation of complex number: Elementary Complex Functions. + (line 17) +* extern inline: ANSI C Compliance. (line 24) +* F-distribution: The F-distribution. (line 13) +* factorial: Factorials. (line 6) +* factorial <1>: Factorials. (line 11) +* factorization of matrices: References and Further Reading<8>. + (line 32) +* false position algorithm for finding roots: Root Bracketing Algorithms. + (line 34) +* Fast Fourier Transforms, see FFT: References and Further Reading<10>. + (line 28) +* Fehlberg method, differential equations: Stepping Functions. + (line 114) +* Fermi-Dirac function: Fermi-Dirac Function. + (line 6) +* FFT: References and Further Reading<10>. + (line 28) +* FFT mathematical definition: Fast Fourier Transforms FFTs. + (line 18) +* FFT of complex data, mixed-radix algorithm: Radix-2 FFT routines for complex data. + (line 129) +* FFT of complex data, radix-2 algorithm: Overview of complex data FFTs. + (line 73) +* FFT of real data: Mixed-radix FFT routines for complex data. + (line 226) +* FFT of real data, mixed-radix algorithm: Radix-2 FFT routines for real data. + (line 102) +* FFT of real data, radix-2 algorithm: Overview of real data FFTs. + (line 50) +* FFT, complex data: Mathematical Definitions. + (line 54) +* finding minima: References and Further Reading<28>. + (line 17) +* finding roots: References and Further Reading<27>. + (line 15) +* finding zeros: References and Further Reading<27>. + (line 15) +* fits, multi-parameter linear: Linear regression without a constant term. + (line 47) +* fitting: References and Further Reading<31>. + (line 24) +* fitting, using Chebyshev polynomials: References and Further Reading<23>. + (line 15) +* Fj(x), Fermi-Dirac integral: Complete Fermi-Dirac Integrals. + (line 6) +* Fj(x,b), incomplete Fermi-Dirac integral: Incomplete Fermi-Dirac Integrals. + (line 6) +* flat distribution: The Flat Uniform Distribution. + (line 6) +* Fletcher-Reeves conjugate gradient algorithm, minimization: Algorithms with Derivatives. + (line 15) +* floating point exceptions: Examining floating point registers. + (line 31) +* floating point numbers, approximate comparison: Approximate Comparison of Floating Point Numbers. + (line 12) +* floating point registers: Using gdb. (line 89) +* force and energy: Radioactivity. (line 18) +* Fortran range checking, equivalent in gcc: Vector allocation. + (line 35) +* Four-tap Generalized Feedback Shift Register: Random number generator algorithms. + (line 181) +* Fourier integrals, numerical: QAWF adaptive integration for Fourier integrals. + (line 6) +* Fourier Transforms, see FFT: References and Further Reading<10>. + (line 28) +* Fractional Order Bessel Functions: Regular Bessel Function—Fractional Order. + (line 6) +* free software, explanation of: Routines available in GSL. + (line 53) +* frexp: Elementary Functions. + (line 57) +* functions, numerical differentiation: References and Further Reading<22>. + (line 18) +* fundamental constants: Physical Constants. (line 22) +* Gamma distribution: The Gamma Distribution. + (line 6) +* gamma functions: Gamma Functions. (line 6) +* Gastwirth estimator: Trimmed Mean. (line 25) +* Gauss-Kronrod quadrature: Introduction<2>. (line 57) +* Gaussian distribution: The Gaussian Distribution. + (line 6) +* Gaussian distribution, bivariate: The Bivariate Gaussian Distribution. + (line 6) +* Gaussian distribution, bivariate <1>: The Multivariate Gaussian Distribution. + (line 6) +* Gaussian Tail distribution: The Gaussian Tail Distribution. + (line 6) +* gcc extensions, range-checking: Vector allocation. (line 36) +* gcc warning options: Handling floating point exceptions. + (line 30) +* gdb: Debugging Numerical Programs. + (line 9) +* Gegenbauer functions: Gegenbauer Functions. + (line 6) +* GEMM, Level-3 BLAS: Level 3. (line 6) +* GEMV, Level-2 BLAS: Level 2. (line 6) +* general polynomial equations, solving: Cubic Equations. (line 38) +* generalized eigensystems: Real Generalized Nonsymmetric Eigensystems. + (line 6) +* generalized hermitian definite eigensystems: Complex Generalized Hermitian-Definite Eigensystems. + (line 6) +* generalized symmetric eigensystems: Real Generalized Symmetric-Definite Eigensystems. + (line 6) +* Geometric random variates: The Geometric Distribution. + (line 6) +* Geometric random variates <1>: The Hypergeometric Distribution. + (line 6) +* GER, Level-2 BLAS: Level 2. (line 107) +* GERC, Level-2 BLAS: Level 2. (line 122) +* GERU, Level-2 BLAS: Level 2. (line 107) +* Givens rotation: Bidiagonalization. (line 56) +* Givens Rotation, BLAS: Level 1. (line 128) +* Givens Rotation, Modified, BLAS: Level 1. (line 153) +* gmres: Types of Sparse Iterative Solvers. + (line 11) +* GNU General Public License: Top. (line 12) +* golden section algorithm for finding minima: Minimization Algorithms. + (line 15) +* gsl_acosh (C function): Elementary Functions. + (line 37) +* gsl_asinh (C function): Elementary Functions. + (line 42) +* gsl_atanh (C function): Elementary Functions. + (line 47) +* gsl_blas_caxpy (C function): Level 1. (line 102) +* gsl_blas_ccopy (C function): Level 1. (line 91) +* gsl_blas_cdotc (C function): Level 1. (line 32) +* gsl_blas_cdotu (C function): Level 1. (line 24) +* gsl_blas_cgemm (C function): Level 3. (line 6) +* gsl_blas_cgemv (C function): Level 2. (line 6) +* gsl_blas_cgerc (C function): Level 2. (line 122) +* gsl_blas_cgeru (C function): Level 2. (line 107) +* gsl_blas_chemm (C function): Level 3. (line 63) +* gsl_blas_chemv (C function): Level 2. (line 88) +* gsl_blas_cher (C function): Level 2. (line 145) +* gsl_blas_cher2 (C function): Level 2. (line 171) +* gsl_blas_cher2k (C function): Level 3. (line 217) +* gsl_blas_cherk (C function): Level 3. (line 170) +* gsl_blas_cscal (C function): Level 1. (line 114) +* gsl_blas_csscal (C function): Level 1. (line 114) +* gsl_blas_cswap (C function): Level 1. (line 81) +* gsl_blas_csymm (C function): Level 3. (line 36) +* gsl_blas_csyr2k (C function): Level 3. (line 187) +* gsl_blas_csyrk (C function): Level 3. (line 145) +* gsl_blas_ctrmm (C function): Level 3. (line 82) +* gsl_blas_ctrmv (C function): Level 2. (line 28) +* gsl_blas_ctrsm (C function): Level 3. (line 113) +* gsl_blas_ctrsv (C function): Level 2. (line 51) +* gsl_blas_dasum (C function): Level 1. (line 54) +* gsl_blas_daxpy (C function): Level 1. (line 102) +* gsl_blas_dcopy (C function): Level 1. (line 91) +* gsl_blas_ddot (C function): Level 1. (line 13) +* gsl_blas_dgemm (C function): Level 3. (line 6) +* gsl_blas_dgemv (C function): Level 2. (line 6) +* gsl_blas_dger (C function): Level 2. (line 107) +* gsl_blas_dnrm2 (C function): Level 1. (line 40) +* gsl_blas_drot (C function): Level 1. (line 143) +* gsl_blas_drotg (C function): Level 1. (line 128) +* gsl_blas_drotm (C function): Level 1. (line 163) +* gsl_blas_drotmg (C function): Level 1. (line 153) +* gsl_blas_dscal (C function): Level 1. (line 114) +* gsl_blas_dsdot (C function): Level 1. (line 13) +* gsl_blas_dswap (C function): Level 1. (line 81) +* gsl_blas_dsymm (C function): Level 3. (line 36) +* gsl_blas_dsymv (C function): Level 2. (line 73) +* gsl_blas_dsyr (C function): Level 2. (line 133) +* gsl_blas_dsyr2 (C function): Level 2. (line 158) +* gsl_blas_dsyr2k (C function): Level 3. (line 187) +* gsl_blas_dsyrk (C function): Level 3. (line 145) +* gsl_blas_dtrmm (C function): Level 3. (line 82) +* gsl_blas_dtrmv (C function): Level 2. (line 28) +* gsl_blas_dtrsm (C function): Level 3. (line 113) +* gsl_blas_dtrsv (C function): Level 2. (line 51) +* gsl_blas_dzasum (C function): Level 1. (line 60) +* gsl_blas_dznrm2 (C function): Level 1. (line 46) +* gsl_blas_icamax (C function): Level 1. (line 67) +* gsl_blas_idamax (C function): Level 1. (line 67) +* gsl_blas_isamax (C function): Level 1. (line 67) +* gsl_blas_izamax (C function): Level 1. (line 67) +* gsl_blas_sasum (C function): Level 1. (line 54) +* gsl_blas_saxpy (C function): Level 1. (line 102) +* gsl_blas_scasum (C function): Level 1. (line 60) +* gsl_blas_scnrm2 (C function): Level 1. (line 46) +* gsl_blas_scopy (C function): Level 1. (line 91) +* gsl_blas_sdot (C function): Level 1. (line 13) +* gsl_blas_sdsdot (C function): Level 1. (line 6) +* gsl_blas_sgemm (C function): Level 3. (line 6) +* gsl_blas_sgemv (C function): Level 2. (line 6) +* gsl_blas_sger (C function): Level 2. (line 107) +* gsl_blas_snrm2 (C function): Level 1. (line 40) +* gsl_blas_srot (C function): Level 1. (line 143) +* gsl_blas_srotg (C function): Level 1. (line 128) +* gsl_blas_srotm (C function): Level 1. (line 163) +* gsl_blas_srotmg (C function): Level 1. (line 153) +* gsl_blas_sscal (C function): Level 1. (line 114) +* gsl_blas_sswap (C function): Level 1. (line 81) +* gsl_blas_ssymm (C function): Level 3. (line 36) +* gsl_blas_ssymv (C function): Level 2. (line 73) +* gsl_blas_ssyr (C function): Level 2. (line 133) +* gsl_blas_ssyr2 (C function): Level 2. (line 158) +* gsl_blas_ssyr2k (C function): Level 3. (line 187) +* gsl_blas_ssyrk (C function): Level 3. (line 145) +* gsl_blas_strmm (C function): Level 3. (line 82) +* gsl_blas_strmv (C function): Level 2. (line 28) +* gsl_blas_strsm (C function): Level 3. (line 113) +* gsl_blas_strsv (C function): Level 2. (line 51) +* gsl_blas_zaxpy (C function): Level 1. (line 102) +* gsl_blas_zcopy (C function): Level 1. (line 91) +* gsl_blas_zdotc (C function): Level 1. (line 32) +* gsl_blas_zdotu (C function): Level 1. (line 24) +* gsl_blas_zdscal (C function): Level 1. (line 114) +* gsl_blas_zgemm (C function): Level 3. (line 6) +* gsl_blas_zgemv (C function): Level 2. (line 6) +* gsl_blas_zgerc (C function): Level 2. (line 122) +* gsl_blas_zgeru (C function): Level 2. (line 107) +* gsl_blas_zhemm (C function): Level 3. (line 63) +* gsl_blas_zhemv (C function): Level 2. (line 88) +* gsl_blas_zher (C function): Level 2. (line 145) +* gsl_blas_zher2 (C function): Level 2. (line 171) +* gsl_blas_zher2k (C function): Level 3. (line 217) +* gsl_blas_zherk (C function): Level 3. (line 170) +* gsl_blas_zscal (C function): Level 1. (line 114) +* gsl_blas_zswap (C function): Level 1. (line 81) +* gsl_blas_zsymm (C function): Level 3. (line 36) +* gsl_blas_zsyr2k (C function): Level 3. (line 187) +* gsl_blas_zsyrk (C function): Level 3. (line 145) +* gsl_blas_ztrmm (C function): Level 3. (line 82) +* gsl_blas_ztrmv (C function): Level 2. (line 28) +* gsl_blas_ztrsm (C function): Level 3. (line 113) +* gsl_blas_ztrsv (C function): Level 2. (line 51) +* gsl_block (C type): Blocks. (line 10) +* gsl_block_alloc (C function): Block allocation. (line 14) +* gsl_block_calloc (C function): Block allocation. (line 26) +* gsl_block_fprintf (C function): Reading and writing blocks. + (line 27) +* gsl_block_fread (C function): Reading and writing blocks. + (line 17) +* gsl_block_free (C function): Block allocation. (line 31) +* gsl_block_fscanf (C function): Reading and writing blocks. + (line 36) +* gsl_block_fwrite (C function): Reading and writing blocks. + (line 9) +* gsl_bspline_alloc (C function): Initializing the B-splines solver. + (line 11) +* gsl_bspline_deriv_eval (C function): Evaluation of B-spline derivatives. + (line 6) +* gsl_bspline_deriv_eval_nonzero (C function): Evaluation of B-spline derivatives. + (line 20) +* gsl_bspline_eval (C function): Evaluation of B-splines. + (line 6) +* gsl_bspline_eval_nonzero (C function): Evaluation of B-splines. + (line 17) +* gsl_bspline_free (C function): Initializing the B-splines solver. + (line 20) +* gsl_bspline_greville_abscissa (C function): Working with the Greville abscissae. + (line 14) +* gsl_bspline_knots (C function): Constructing the knots vector. + (line 6) +* gsl_bspline_knots_uniform (C function): Constructing the knots vector. + (line 12) +* gsl_bspline_ncoeffs (C function): Evaluation of B-splines. + (line 31) +* gsl_bspline_workspace (C type): Initializing the B-splines solver. + (line 6) +* GSL_C99_INLINE: ANSI C Compliance. (line 25) +* GSL_C99_INLINE (C macro): Accessing vector elements. + (line 29) +* gsl_cdf_beta_P (C function): The Beta Distribution. + (line 23) +* gsl_cdf_beta_Pinv (C function): The Beta Distribution. + (line 23) +* gsl_cdf_beta_Q (C function): The Beta Distribution. + (line 23) +* gsl_cdf_beta_Qinv (C function): The Beta Distribution. + (line 23) +* gsl_cdf_binomial_P (C function): The Binomial Distribution. + (line 26) +* gsl_cdf_binomial_Q (C function): The Binomial Distribution. + (line 26) +* gsl_cdf_cauchy_P (C function): The Cauchy Distribution. + (line 24) +* gsl_cdf_cauchy_Pinv (C function): The Cauchy Distribution. + (line 24) +* gsl_cdf_cauchy_Q (C function): The Cauchy Distribution. + (line 24) +* gsl_cdf_cauchy_Qinv (C function): The Cauchy Distribution. + (line 24) +* gsl_cdf_chisq_P (C function): The Chi-squared Distribution. + (line 31) +* gsl_cdf_chisq_Pinv (C function): The Chi-squared Distribution. + (line 31) +* gsl_cdf_chisq_Q (C function): The Chi-squared Distribution. + (line 31) +* gsl_cdf_chisq_Qinv (C function): The Chi-squared Distribution. + (line 31) +* gsl_cdf_exponential_P (C function): The Exponential Distribution. + (line 22) +* gsl_cdf_exponential_Pinv (C function): The Exponential Distribution. + (line 22) +* gsl_cdf_exponential_Q (C function): The Exponential Distribution. + (line 22) +* gsl_cdf_exponential_Qinv (C function): The Exponential Distribution. + (line 22) +* gsl_cdf_exppow_P (C function): The Exponential Power Distribution. + (line 27) +* gsl_cdf_exppow_Q (C function): The Exponential Power Distribution. + (line 27) +* gsl_cdf_fdist_P (C function): The F-distribution. (line 36) +* gsl_cdf_fdist_Pinv (C function): The F-distribution. (line 36) +* gsl_cdf_fdist_Q (C function): The F-distribution. (line 36) +* gsl_cdf_fdist_Qinv (C function): The F-distribution. (line 36) +* gsl_cdf_flat_P (C function): The Flat Uniform Distribution. + (line 23) +* gsl_cdf_flat_Pinv (C function): The Flat Uniform Distribution. + (line 23) +* gsl_cdf_flat_Q (C function): The Flat Uniform Distribution. + (line 23) +* gsl_cdf_flat_Qinv (C function): The Flat Uniform Distribution. + (line 23) +* gsl_cdf_gamma_P (C function): The Gamma Distribution. + (line 37) +* gsl_cdf_gamma_Pinv (C function): The Gamma Distribution. + (line 37) +* gsl_cdf_gamma_Q (C function): The Gamma Distribution. + (line 37) +* gsl_cdf_gamma_Qinv (C function): The Gamma Distribution. + (line 37) +* gsl_cdf_gaussian_P (C function): The Gaussian Distribution. + (line 47) +* gsl_cdf_gaussian_Pinv (C function): The Gaussian Distribution. + (line 47) +* gsl_cdf_gaussian_Q (C function): The Gaussian Distribution. + (line 47) +* gsl_cdf_gaussian_Qinv (C function): The Gaussian Distribution. + (line 47) +* gsl_cdf_geometric_P (C function): The Geometric Distribution. + (line 27) +* gsl_cdf_geometric_Q (C function): The Geometric Distribution. + (line 27) +* gsl_cdf_gumbel1_P (C function): The Type-1 Gumbel Distribution. + (line 24) +* gsl_cdf_gumbel1_Pinv (C function): The Type-1 Gumbel Distribution. + (line 24) +* gsl_cdf_gumbel1_Q (C function): The Type-1 Gumbel Distribution. + (line 24) +* gsl_cdf_gumbel1_Qinv (C function): The Type-1 Gumbel Distribution. + (line 24) +* gsl_cdf_gumbel2_P (C function): The Type-2 Gumbel Distribution. + (line 24) +* gsl_cdf_gumbel2_Pinv (C function): The Type-2 Gumbel Distribution. + (line 24) +* gsl_cdf_gumbel2_Q (C function): The Type-2 Gumbel Distribution. + (line 24) +* gsl_cdf_gumbel2_Qinv (C function): The Type-2 Gumbel Distribution. + (line 24) +* gsl_cdf_hypergeometric_P (C function): The Hypergeometric Distribution. + (line 31) +* gsl_cdf_hypergeometric_Q (C function): The Hypergeometric Distribution. + (line 31) +* gsl_cdf_laplace_P (C function): The Laplace Distribution. + (line 21) +* gsl_cdf_laplace_Pinv (C function): The Laplace Distribution. + (line 21) +* gsl_cdf_laplace_Q (C function): The Laplace Distribution. + (line 21) +* gsl_cdf_laplace_Qinv (C function): The Laplace Distribution. + (line 21) +* gsl_cdf_logistic_P (C function): The Logistic Distribution. + (line 22) +* gsl_cdf_logistic_Pinv (C function): The Logistic Distribution. + (line 22) +* gsl_cdf_logistic_Q (C function): The Logistic Distribution. + (line 22) +* gsl_cdf_logistic_Qinv (C function): The Logistic Distribution. + (line 22) +* gsl_cdf_lognormal_P (C function): The Lognormal Distribution. + (line 26) +* gsl_cdf_lognormal_Pinv (C function): The Lognormal Distribution. + (line 26) +* gsl_cdf_lognormal_Q (C function): The Lognormal Distribution. + (line 26) +* gsl_cdf_lognormal_Qinv (C function): The Lognormal Distribution. + (line 26) +* gsl_cdf_negative_binomial_P (C function): The Negative Binomial Distribution. + (line 27) +* gsl_cdf_negative_binomial_Q (C function): The Negative Binomial Distribution. + (line 27) +* gsl_cdf_pareto_P (C function): The Pareto Distribution. + (line 24) +* gsl_cdf_pareto_Pinv (C function): The Pareto Distribution. + (line 24) +* gsl_cdf_pareto_Q (C function): The Pareto Distribution. + (line 24) +* gsl_cdf_pareto_Qinv (C function): The Pareto Distribution. + (line 24) +* gsl_cdf_pascal_P (C function): The Pascal Distribution. + (line 25) +* gsl_cdf_pascal_Q (C function): The Pascal Distribution. + (line 25) +* gsl_cdf_poisson_P (C function): The Poisson Distribution. + (line 23) +* gsl_cdf_poisson_Q (C function): The Poisson Distribution. + (line 23) +* gsl_cdf_rayleigh_P (C function): The Rayleigh Distribution. + (line 22) +* gsl_cdf_rayleigh_Pinv (C function): The Rayleigh Distribution. + (line 22) +* gsl_cdf_rayleigh_Q (C function): The Rayleigh Distribution. + (line 22) +* gsl_cdf_rayleigh_Qinv (C function): The Rayleigh Distribution. + (line 22) +* gsl_cdf_tdist_P (C function): The t-distribution. (line 30) +* gsl_cdf_tdist_Pinv (C function): The t-distribution. (line 30) +* gsl_cdf_tdist_Q (C function): The t-distribution. (line 30) +* gsl_cdf_tdist_Qinv (C function): The t-distribution. (line 30) +* gsl_cdf_ugaussian_P (C function): The Gaussian Distribution. + (line 56) +* gsl_cdf_ugaussian_Pinv (C function): The Gaussian Distribution. + (line 56) +* gsl_cdf_ugaussian_Q (C function): The Gaussian Distribution. + (line 56) +* gsl_cdf_ugaussian_Qinv (C function): The Gaussian Distribution. + (line 56) +* gsl_cdf_weibull_P (C function): The Weibull Distribution. + (line 24) +* gsl_cdf_weibull_Pinv (C function): The Weibull Distribution. + (line 24) +* gsl_cdf_weibull_Q (C function): The Weibull Distribution. + (line 24) +* gsl_cdf_weibull_Qinv (C function): The Weibull Distribution. + (line 24) +* gsl_cheb_alloc (C function): Creation and Calculation of Chebyshev Series. + (line 6) +* gsl_cheb_calc_deriv (C function): Derivatives and Integrals. + (line 12) +* gsl_cheb_calc_integ (C function): Derivatives and Integrals. + (line 20) +* gsl_cheb_coeffs (C function): Auxiliary Functions. (line 13) +* gsl_cheb_eval (C function): Chebyshev Series Evaluation. + (line 6) +* gsl_cheb_eval_err (C function): Chebyshev Series Evaluation. + (line 12) +* gsl_cheb_eval_n (C function): Chebyshev Series Evaluation. + (line 21) +* gsl_cheb_eval_n_err (C function): Chebyshev Series Evaluation. + (line 28) +* gsl_cheb_free (C function): Creation and Calculation of Chebyshev Series. + (line 11) +* gsl_cheb_init (C function): Creation and Calculation of Chebyshev Series. + (line 15) +* gsl_cheb_order (C function): Auxiliary Functions. (line 9) +* gsl_cheb_series (C type): Definitions. (line 6) +* gsl_cheb_size (C function): Auxiliary Functions. (line 13) +* gsl_check_range (C variable): Accessing vector elements. + (line 37) +* gsl_combination (C type): The Combination struct. + (line 6) +* gsl_combination_alloc (C function): Combination allocation. + (line 6) +* gsl_combination_calloc (C function): Combination allocation. + (line 17) +* gsl_combination_data (C function): Combination properties. + (line 15) +* gsl_combination_fprintf (C function): Reading and writing combinations. + (line 30) +* gsl_combination_fread (C function): Reading and writing combinations. + (line 18) +* gsl_combination_free (C function): Combination allocation. + (line 37) +* gsl_combination_fscanf (C function): Reading and writing combinations. + (line 40) +* gsl_combination_fwrite (C function): Reading and writing combinations. + (line 9) +* gsl_combination_get (C function): Accessing combination elements. + (line 9) +* gsl_combination_init_first (C function): Combination allocation. + (line 26) +* gsl_combination_init_last (C function): Combination allocation. + (line 31) +* gsl_combination_k (C function): Combination properties. + (line 10) +* gsl_combination_memcpy (C function): Combination allocation. + (line 41) +* gsl_combination_n (C function): Combination properties. + (line 6) +* gsl_combination_next (C function): Combination functions. + (line 6) +* gsl_combination_prev (C function): Combination functions. + (line 15) +* gsl_combination_valid (C function): Combination properties. + (line 20) +* gsl_comparison_fn_t (C type): Sorting objects. (line 23) +* gsl_complex: Complex Numbers. (line 21) +* gsl_complex_abs (C function): Properties of complex numbers. + (line 11) +* gsl_complex_abs2 (C function): Properties of complex numbers. + (line 15) +* gsl_complex_add (C function): Complex arithmetic operators. + (line 6) +* gsl_complex_add_imag (C function): Complex arithmetic operators. + (line 46) +* gsl_complex_add_real (C function): Complex arithmetic operators. + (line 26) +* gsl_complex_arccos (C function): Inverse Complex Trigonometric Functions. + (line 21) +* gsl_complex_arccosh (C function): Inverse Complex Hyperbolic Functions. + (line 12) +* gsl_complex_arccosh_real (C function): Inverse Complex Hyperbolic Functions. + (line 20) +* gsl_complex_arccos_real (C function): Inverse Complex Trigonometric Functions. + (line 27) +* gsl_complex_arccot (C function): Inverse Complex Trigonometric Functions. + (line 61) +* gsl_complex_arccoth (C function): Inverse Complex Hyperbolic Functions. + (line 46) +* gsl_complex_arccsc (C function): Inverse Complex Trigonometric Functions. + (line 51) +* gsl_complex_arccsch (C function): Inverse Complex Hyperbolic Functions. + (line 41) +* gsl_complex_arccsc_real (C function): Inverse Complex Trigonometric Functions. + (line 56) +* gsl_complex_arcsec (C function): Inverse Complex Trigonometric Functions. + (line 41) +* gsl_complex_arcsech (C function): Inverse Complex Hyperbolic Functions. + (line 36) +* gsl_complex_arcsec_real (C function): Inverse Complex Trigonometric Functions. + (line 46) +* gsl_complex_arcsin (C function): Inverse Complex Trigonometric Functions. + (line 6) +* gsl_complex_arcsinh (C function): Inverse Complex Hyperbolic Functions. + (line 6) +* gsl_complex_arcsin_real (C function): Inverse Complex Trigonometric Functions. + (line 12) +* gsl_complex_arctan (C function): Inverse Complex Trigonometric Functions. + (line 35) +* gsl_complex_arctanh (C function): Inverse Complex Hyperbolic Functions. + (line 25) +* gsl_complex_arctanh_real (C function): Inverse Complex Hyperbolic Functions. + (line 31) +* gsl_complex_arg (C function): Properties of complex numbers. + (line 6) +* gsl_complex_conjugate (C function): Complex arithmetic operators. + (line 66) +* gsl_complex_cos (C function): Complex Trigonometric Functions. + (line 11) +* gsl_complex_cosh (C function): Complex Hyperbolic Functions. + (line 11) +* gsl_complex_cot (C function): Complex Trigonometric Functions. + (line 31) +* gsl_complex_coth (C function): Complex Hyperbolic Functions. + (line 31) +* gsl_complex_csc (C function): Complex Trigonometric Functions. + (line 26) +* gsl_complex_csch (C function): Complex Hyperbolic Functions. + (line 26) +* gsl_complex_div (C function): Complex arithmetic operators. + (line 21) +* gsl_complex_div_imag (C function): Complex arithmetic operators. + (line 61) +* gsl_complex_div_real (C function): Complex arithmetic operators. + (line 41) +* gsl_complex_exp (C function): Elementary Complex Functions. + (line 28) +* gsl_complex_inverse (C function): Complex arithmetic operators. + (line 71) +* gsl_complex_log (C function): Elementary Complex Functions. + (line 33) +* gsl_complex_log10 (C function): Elementary Complex Functions. + (line 39) +* gsl_complex_logabs (C function): Properties of complex numbers. + (line 20) +* gsl_complex_log_b (C function): Elementary Complex Functions. + (line 44) +* gsl_complex_mul (C function): Complex arithmetic operators. + (line 16) +* gsl_complex_mul_imag (C function): Complex arithmetic operators. + (line 56) +* gsl_complex_mul_real (C function): Complex arithmetic operators. + (line 36) +* gsl_complex_negative (C function): Complex arithmetic operators. + (line 76) +* gsl_complex_polar (C function): Representation of complex numbers. + (line 30) +* gsl_complex_poly_complex_eval (C function): Polynomial Evaluation. + (line 25) +* gsl_complex_pow (C function): Elementary Complex Functions. + (line 17) +* gsl_complex_pow_real (C function): Elementary Complex Functions. + (line 23) +* gsl_complex_rect (C function): Representation of complex numbers. + (line 24) +* gsl_complex_sec (C function): Complex Trigonometric Functions. + (line 21) +* gsl_complex_sech (C function): Complex Hyperbolic Functions. + (line 21) +* gsl_complex_sin (C function): Complex Trigonometric Functions. + (line 6) +* gsl_complex_sinh (C function): Complex Hyperbolic Functions. + (line 6) +* gsl_complex_sqrt (C function): Elementary Complex Functions. + (line 6) +* gsl_complex_sqrt_real (C function): Elementary Complex Functions. + (line 12) +* gsl_complex_sub (C function): Complex arithmetic operators. + (line 11) +* gsl_complex_sub_imag (C function): Complex arithmetic operators. + (line 51) +* gsl_complex_sub_real (C function): Complex arithmetic operators. + (line 31) +* gsl_complex_tan (C function): Complex Trigonometric Functions. + (line 16) +* gsl_complex_tanh (C function): Complex Hyperbolic Functions. + (line 16) +* GSL_CONST_MKSA_ACRE (C macro): Volume Area and Length. + (line 14) +* GSL_CONST_MKSA_ANGSTROM (C macro): Atomic and Nuclear Physics. + (line 47) +* GSL_CONST_MKSA_ASTRONOMICAL_UNIT (C macro): Astronomy and Astrophysics. + (line 6) +* GSL_CONST_MKSA_BAR (C macro): Pressure. (line 6) +* GSL_CONST_MKSA_BARN (C macro): Atomic and Nuclear Physics. + (line 51) +* GSL_CONST_MKSA_BOHR_MAGNETON (C macro): Atomic and Nuclear Physics. + (line 55) +* GSL_CONST_MKSA_BOHR_RADIUS (C macro): Atomic and Nuclear Physics. + (line 43) +* GSL_CONST_MKSA_BOLTZMANN (C macro): Fundamental Constants. + (line 36) +* GSL_CONST_MKSA_BTU (C macro): Thermal Energy and Power. + (line 10) +* GSL_CONST_MKSA_CALORIE (C macro): Thermal Energy and Power. + (line 6) +* GSL_CONST_MKSA_CANADIAN_GALLON (C macro): Volume Area and Length. + (line 26) +* GSL_CONST_MKSA_CARAT (C macro): Mass and Weight. (line 30) +* GSL_CONST_MKSA_CURIE (C macro): Radioactivity. (line 6) +* GSL_CONST_MKSA_DAY (C macro): Measurement of Time. (line 14) +* GSL_CONST_MKSA_DEBYE (C macro): Atomic and Nuclear Physics. + (line 76) +* GSL_CONST_MKSA_DYNE (C macro): Force and Energy. (line 10) +* GSL_CONST_MKSA_ELECTRON_CHARGE (C macro): Atomic and Nuclear Physics. + (line 6) +* GSL_CONST_MKSA_ELECTRON_MAGNETIC_MOMENT (C macro): Atomic and Nuclear Physics. + (line 63) +* GSL_CONST_MKSA_ELECTRON_VOLT (C macro): Atomic and Nuclear Physics. + (line 10) +* GSL_CONST_MKSA_ERG (C macro): Force and Energy. (line 18) +* GSL_CONST_MKSA_FARADAY (C macro): Fundamental Constants. + (line 32) +* GSL_CONST_MKSA_FATHOM (C macro): Speed and Nautical Units. + (line 18) +* GSL_CONST_MKSA_FOOT (C macro): Imperial Units. (line 10) +* GSL_CONST_MKSA_FOOTCANDLE (C macro): Light and Illumination. + (line 22) +* GSL_CONST_MKSA_FOOTLAMBERT (C macro): Light and Illumination. + (line 30) +* GSL_CONST_MKSA_GAUSS (C macro): Fundamental Constants. + (line 52) +* GSL_CONST_MKSA_GRAM_FORCE (C macro): Mass and Weight. (line 34) +* GSL_CONST_MKSA_GRAVITATIONAL_CONSTANT (C macro): Astronomy and Astrophysics. + (line 10) +* GSL_CONST_MKSA_GRAV_ACCEL (C macro): Astronomy and Astrophysics. + (line 22) +* GSL_CONST_MKSA_HECTARE (C macro): Volume Area and Length. + (line 10) +* GSL_CONST_MKSA_HORSEPOWER (C macro): Thermal Energy and Power. + (line 18) +* GSL_CONST_MKSA_HOUR (C macro): Measurement of Time. (line 10) +* GSL_CONST_MKSA_INCH (C macro): Imperial Units. (line 6) +* GSL_CONST_MKSA_INCH_OF_MERCURY (C macro): Pressure. (line 22) +* GSL_CONST_MKSA_INCH_OF_WATER (C macro): Pressure. (line 26) +* GSL_CONST_MKSA_JOULE (C macro): Force and Energy. (line 14) +* GSL_CONST_MKSA_KILOMETERS_PER_HOUR (C macro): Speed and Nautical Units. + (line 6) +* GSL_CONST_MKSA_KILOPOUND_FORCE (C macro): Mass and Weight. (line 42) +* GSL_CONST_MKSA_KNOT (C macro): Speed and Nautical Units. + (line 22) +* GSL_CONST_MKSA_LAMBERT (C macro): Light and Illumination. + (line 26) +* GSL_CONST_MKSA_LIGHT_YEAR (C macro): Astronomy and Astrophysics. + (line 14) +* GSL_CONST_MKSA_LITER (C macro): Volume Area and Length. + (line 18) +* GSL_CONST_MKSA_LUMEN (C macro): Light and Illumination. + (line 10) +* GSL_CONST_MKSA_LUX (C macro): Light and Illumination. + (line 14) +* GSL_CONST_MKSA_MASS_ELECTRON (C macro): Atomic and Nuclear Physics. + (line 18) +* GSL_CONST_MKSA_MASS_MUON (C macro): Atomic and Nuclear Physics. + (line 22) +* GSL_CONST_MKSA_MASS_NEUTRON (C macro): Atomic and Nuclear Physics. + (line 30) +* GSL_CONST_MKSA_MASS_PROTON (C macro): Atomic and Nuclear Physics. + (line 26) +* GSL_CONST_MKSA_METER_OF_MERCURY (C macro): Pressure. (line 18) +* GSL_CONST_MKSA_METRIC_TON (C macro): Mass and Weight. (line 18) +* GSL_CONST_MKSA_MICRON (C macro): Volume Area and Length. + (line 6) +* GSL_CONST_MKSA_MIL (C macro): Imperial Units. (line 22) +* GSL_CONST_MKSA_MILE (C macro): Imperial Units. (line 18) +* GSL_CONST_MKSA_MILES_PER_HOUR (C macro): Speed and Nautical Units. + (line 10) +* GSL_CONST_MKSA_MINUTE (C macro): Measurement of Time. (line 6) +* GSL_CONST_MKSA_MOLAR_GAS (C macro): Fundamental Constants. + (line 40) +* GSL_CONST_MKSA_NAUTICAL_MILE (C macro): Speed and Nautical Units. + (line 14) +* GSL_CONST_MKSA_NEWTON (C macro): Force and Energy. (line 6) +* GSL_CONST_MKSA_NUCLEAR_MAGNETON (C macro): Atomic and Nuclear Physics. + (line 59) +* GSL_CONST_MKSA_OUNCE_MASS (C macro): Mass and Weight. (line 10) +* GSL_CONST_MKSA_PARSEC (C macro): Astronomy and Astrophysics. + (line 18) +* GSL_CONST_MKSA_PHOT (C macro): Light and Illumination. + (line 18) +* GSL_CONST_MKSA_PINT (C macro): Volume Area and Length. + (line 38) +* GSL_CONST_MKSA_PLANCKS_CONSTANT_H (C macro): Fundamental Constants. + (line 20) +* GSL_CONST_MKSA_PLANCKS_CONSTANT_HBAR (C macro): Fundamental Constants. + (line 24) +* GSL_CONST_MKSA_POINT (C macro): Printers Units. (line 6) +* GSL_CONST_MKSA_POISE (C macro): Viscosity. (line 6) +* GSL_CONST_MKSA_POUNDAL (C macro): Mass and Weight. (line 46) +* GSL_CONST_MKSA_POUND_FORCE (C macro): Mass and Weight. (line 38) +* GSL_CONST_MKSA_POUND_MASS (C macro): Mass and Weight. (line 6) +* GSL_CONST_MKSA_PROTON_MAGNETIC_MOMENT (C macro): Atomic and Nuclear Physics. + (line 68) +* GSL_CONST_MKSA_PSI (C macro): Pressure. (line 30) +* GSL_CONST_MKSA_QUART (C macro): Volume Area and Length. + (line 34) +* GSL_CONST_MKSA_RAD (C macro): Radioactivity. (line 14) +* GSL_CONST_MKSA_ROENTGEN (C macro): Radioactivity. (line 10) +* GSL_CONST_MKSA_RYDBERG (C macro): Atomic and Nuclear Physics. + (line 38) +* GSL_CONST_MKSA_SOLAR_MASS (C macro): Astronomy and Astrophysics. + (line 26) +* GSL_CONST_MKSA_SPEED_OF_LIGHT (C macro): Fundamental Constants. + (line 6) +* GSL_CONST_MKSA_STANDARD_GAS_VOLUME (C macro): Fundamental Constants. + (line 44) +* GSL_CONST_MKSA_STD_ATMOSPHERE (C macro): Pressure. (line 10) +* GSL_CONST_MKSA_STEFAN_BOLTZMANN_CONSTANT (C macro): Fundamental Constants. + (line 48) +* GSL_CONST_MKSA_STILB (C macro): Light and Illumination. + (line 6) +* GSL_CONST_MKSA_STOKES (C macro): Viscosity. (line 10) +* GSL_CONST_MKSA_TEXPOINT (C macro): Printers Units. (line 10) +* GSL_CONST_MKSA_THERM (C macro): Thermal Energy and Power. + (line 14) +* GSL_CONST_MKSA_THOMSON_CROSS_SECTION (C macro): Atomic and Nuclear Physics. + (line 72) +* GSL_CONST_MKSA_TON (C macro): Mass and Weight. (line 14) +* GSL_CONST_MKSA_TORR (C macro): Pressure. (line 14) +* GSL_CONST_MKSA_TROY_OUNCE (C macro): Mass and Weight. (line 26) +* GSL_CONST_MKSA_UK_GALLON (C macro): Volume Area and Length. + (line 30) +* GSL_CONST_MKSA_UK_TON (C macro): Mass and Weight. (line 22) +* GSL_CONST_MKSA_UNIFIED_ATOMIC_MASS (C macro): Atomic and Nuclear Physics. + (line 14) +* GSL_CONST_MKSA_US_GALLON (C macro): Volume Area and Length. + (line 22) +* GSL_CONST_MKSA_VACUUM_PERMEABILITY (C macro): Fundamental Constants. + (line 10) +* GSL_CONST_MKSA_VACUUM_PERMITTIVITY (C macro): Fundamental Constants. + (line 15) +* GSL_CONST_MKSA_WEEK (C macro): Measurement of Time. (line 18) +* GSL_CONST_MKSA_YARD (C macro): Imperial Units. (line 14) +* GSL_CONST_NUM_ATTO (C macro): Prefixes. (line 60) +* GSL_CONST_NUM_AVOGADRO (C macro): Fundamental Constants. + (line 28) +* GSL_CONST_NUM_EXA (C macro): Prefixes. (line 16) +* GSL_CONST_NUM_FEMTO (C macro): Prefixes. (line 56) +* GSL_CONST_NUM_FINE_STRUCTURE (C macro): Atomic and Nuclear Physics. + (line 34) +* GSL_CONST_NUM_GIGA (C macro): Prefixes. (line 28) +* GSL_CONST_NUM_KILO (C macro): Prefixes. (line 36) +* GSL_CONST_NUM_MEGA (C macro): Prefixes. (line 32) +* GSL_CONST_NUM_MICRO (C macro): Prefixes. (line 44) +* GSL_CONST_NUM_MILLI (C macro): Prefixes. (line 40) +* GSL_CONST_NUM_NANO (C macro): Prefixes. (line 48) +* GSL_CONST_NUM_PETA (C macro): Prefixes. (line 20) +* GSL_CONST_NUM_PICO (C macro): Prefixes. (line 52) +* GSL_CONST_NUM_TERA (C macro): Prefixes. (line 24) +* GSL_CONST_NUM_YOCTO (C macro): Prefixes. (line 68) +* GSL_CONST_NUM_YOTTA (C macro): Prefixes. (line 8) +* GSL_CONST_NUM_ZEPTO (C macro): Prefixes. (line 64) +* GSL_CONST_NUM_ZETTA (C macro): Prefixes. (line 12) +* gsl_deriv_backward (C function): Functions. (line 44) +* gsl_deriv_central (C function): Functions. (line 6) +* gsl_deriv_forward (C function): Functions. (line 24) +* gsl_dht (C type): Functions<2>. (line 6) +* gsl_dht_alloc (C function): Functions<2>. (line 10) +* gsl_dht_apply (C function): Functions<2>. (line 30) +* gsl_dht_free (C function): Functions<2>. (line 26) +* gsl_dht_init (C function): Functions<2>. (line 15) +* gsl_dht_k_sample (C function): Functions<2>. (line 46) +* gsl_dht_new (C function): Functions<2>. (line 20) +* gsl_dht_x_sample (C function): Functions<2>. (line 40) +* GSL_EDOM (C variable): Error Codes. (line 13) +* gsl_eigen_gen (C function): Real Generalized Nonsymmetric Eigensystems. + (line 89) +* gsl_eigen_genherm (C function): Complex Generalized Hermitian-Definite Eigensystems. + (line 37) +* gsl_eigen_genhermv (C function): Complex Generalized Hermitian-Definite Eigensystems. + (line 63) +* gsl_eigen_genhermv_alloc (C function): Complex Generalized Hermitian-Definite Eigensystems. + (line 51) +* gsl_eigen_genhermv_free (C function): Complex Generalized Hermitian-Definite Eigensystems. + (line 58) +* gsl_eigen_genhermv_sort (C function): Sorting Eigenvalues and Eigenvectors. + (line 54) +* gsl_eigen_genhermv_workspace (C type): Complex Generalized Hermitian-Definite Eigensystems. + (line 46) +* gsl_eigen_genherm_alloc (C function): Complex Generalized Hermitian-Definite Eigensystems. + (line 24) +* gsl_eigen_genherm_free (C function): Complex Generalized Hermitian-Definite Eigensystems. + (line 31) +* gsl_eigen_genherm_workspace (C type): Complex Generalized Hermitian-Definite Eigensystems. + (line 19) +* gsl_eigen_gensymm (C function): Real Generalized Symmetric-Definite Eigensystems. + (line 44) +* gsl_eigen_gensymmv (C function): Real Generalized Symmetric-Definite Eigensystems. + (line 69) +* gsl_eigen_gensymmv_alloc (C function): Real Generalized Symmetric-Definite Eigensystems. + (line 57) +* gsl_eigen_gensymmv_free (C function): Real Generalized Symmetric-Definite Eigensystems. + (line 64) +* gsl_eigen_gensymmv_sort (C function): Sorting Eigenvalues and Eigenvectors. + (line 46) +* gsl_eigen_gensymmv_workspace (C type): Real Generalized Symmetric-Definite Eigensystems. + (line 52) +* gsl_eigen_gensymm_alloc (C function): Real Generalized Symmetric-Definite Eigensystems. + (line 31) +* gsl_eigen_gensymm_free (C function): Real Generalized Symmetric-Definite Eigensystems. + (line 38) +* gsl_eigen_gensymm_workspace (C type): Real Generalized Symmetric-Definite Eigensystems. + (line 26) +* gsl_eigen_genv (C function): Real Generalized Nonsymmetric Eigensystems. + (line 134) +* gsl_eigen_genv_alloc (C function): Real Generalized Nonsymmetric Eigensystems. + (line 122) +* gsl_eigen_genv_free (C function): Real Generalized Nonsymmetric Eigensystems. + (line 130) +* gsl_eigen_genv_QZ (C function): Real Generalized Nonsymmetric Eigensystems. + (line 151) +* gsl_eigen_genv_sort (C function): Sorting Eigenvalues and Eigenvectors. + (line 62) +* gsl_eigen_genv_workspace (C type): Real Generalized Nonsymmetric Eigensystems. + (line 117) +* gsl_eigen_gen_alloc (C function): Real Generalized Nonsymmetric Eigensystems. + (line 54) +* gsl_eigen_gen_free (C function): Real Generalized Nonsymmetric Eigensystems. + (line 62) +* gsl_eigen_gen_params (C function): Real Generalized Nonsymmetric Eigensystems. + (line 66) +* gsl_eigen_gen_QZ (C function): Real Generalized Nonsymmetric Eigensystems. + (line 109) +* gsl_eigen_gen_workspace (C type): Real Generalized Nonsymmetric Eigensystems. + (line 49) +* gsl_eigen_herm (C function): Complex Hermitian Matrices. + (line 26) +* gsl_eigen_hermv (C function): Complex Hermitian Matrices. + (line 54) +* gsl_eigen_hermv_alloc (C function): Complex Hermitian Matrices. + (line 42) +* gsl_eigen_hermv_free (C function): Complex Hermitian Matrices. + (line 50) +* gsl_eigen_hermv_sort (C function): Sorting Eigenvalues and Eigenvectors. + (line 28) +* gsl_eigen_hermv_workspace (C type): Complex Hermitian Matrices. + (line 37) +* gsl_eigen_herm_alloc (C function): Complex Hermitian Matrices. + (line 14) +* gsl_eigen_herm_free (C function): Complex Hermitian Matrices. + (line 22) +* gsl_eigen_herm_workspace (C type): Complex Hermitian Matrices. + (line 9) +* gsl_eigen_nonsymm (C function): Real Nonsymmetric Matrices. + (line 72) +* gsl_eigen_nonsymmv (C function): Real Nonsymmetric Matrices. + (line 123) +* gsl_eigen_nonsymmv_alloc (C function): Real Nonsymmetric Matrices. + (line 100) +* gsl_eigen_nonsymmv_free (C function): Real Nonsymmetric Matrices. + (line 107) +* gsl_eigen_nonsymmv_params (C function): Real Nonsymmetric Matrices. + (line 112) +* gsl_eigen_nonsymmv_sort (C function): Sorting Eigenvalues and Eigenvectors. + (line 36) +* gsl_eigen_nonsymmv_workspace (C type): Real Nonsymmetric Matrices. + (line 95) +* gsl_eigen_nonsymmv_Z (C function): Real Nonsymmetric Matrices. + (line 138) +* gsl_eigen_nonsymm_alloc (C function): Real Nonsymmetric Matrices. + (line 22) +* gsl_eigen_nonsymm_free (C function): Real Nonsymmetric Matrices. + (line 29) +* gsl_eigen_nonsymm_params (C function): Real Nonsymmetric Matrices. + (line 35) +* gsl_eigen_nonsymm_workspace (C type): Real Nonsymmetric Matrices. + (line 17) +* gsl_eigen_nonsymm_Z (C function): Real Nonsymmetric Matrices. + (line 87) +* gsl_eigen_sort_t (C type): Sorting Eigenvalues and Eigenvectors. + (line 14) +* gsl_eigen_symm (C function): Real Symmetric Matrices. + (line 29) +* gsl_eigen_symmv (C function): Real Symmetric Matrices. + (line 56) +* gsl_eigen_symmv_alloc (C function): Real Symmetric Matrices. + (line 44) +* gsl_eigen_symmv_free (C function): Real Symmetric Matrices. + (line 52) +* gsl_eigen_symmv_sort (C function): Sorting Eigenvalues and Eigenvectors. + (line 6) +* gsl_eigen_symmv_workspace (C type): Real Symmetric Matrices. + (line 39) +* gsl_eigen_symm_alloc (C function): Real Symmetric Matrices. + (line 17) +* gsl_eigen_symm_free (C function): Real Symmetric Matrices. + (line 25) +* gsl_eigen_symm_workspace (C type): Real Symmetric Matrices. + (line 12) +* GSL_EINVAL (C variable): Error Codes. (line 32) +* GSL_ENOMEM (C variable): Error Codes. (line 25) +* GSL_ERANGE (C variable): Error Codes. (line 19) +* GSL_ERROR (C macro): Using GSL error reporting in your own functions. + (line 15) +* gsl_error_handler_t (C type): Error Handlers. (line 23) +* GSL_ERROR_VAL (C macro): Using GSL error reporting in your own functions. + (line 36) +* gsl_expm1 (C function): Elementary Functions. + (line 18) +* gsl_fcmp (C function): Approximate Comparison of Floating Point Numbers. + (line 12) +* gsl_fft_complex_backward (C function): Mixed-radix FFT routines for complex data. + (line 120) +* gsl_fft_complex_forward (C function): Mixed-radix FFT routines for complex data. + (line 120) +* gsl_fft_complex_inverse (C function): Mixed-radix FFT routines for complex data. + (line 120) +* gsl_fft_complex_radix2_backward (C function): Radix-2 FFT routines for complex data. + (line 16) +* gsl_fft_complex_radix2_dif_backward (C function): Radix-2 FFT routines for complex data. + (line 42) +* gsl_fft_complex_radix2_dif_forward (C function): Radix-2 FFT routines for complex data. + (line 42) +* gsl_fft_complex_radix2_dif_inverse (C function): Radix-2 FFT routines for complex data. + (line 42) +* gsl_fft_complex_radix2_dif_transform (C function): Radix-2 FFT routines for complex data. + (line 42) +* gsl_fft_complex_radix2_forward (C function): Radix-2 FFT routines for complex data. + (line 16) +* gsl_fft_complex_radix2_inverse (C function): Radix-2 FFT routines for complex data. + (line 16) +* gsl_fft_complex_radix2_transform (C function): Radix-2 FFT routines for complex data. + (line 16) +* gsl_fft_complex_transform (C function): Mixed-radix FFT routines for complex data. + (line 120) +* gsl_fft_complex_wavetable (C type): Mixed-radix FFT routines for complex data. + (line 79) +* gsl_fft_complex_wavetable_alloc (C function): Mixed-radix FFT routines for complex data. + (line 44) +* gsl_fft_complex_wavetable_free (C function): Mixed-radix FFT routines for complex data. + (line 64) +* gsl_fft_complex_workspace (C type): Mixed-radix FFT routines for complex data. + (line 100) +* gsl_fft_complex_workspace_alloc (C function): Mixed-radix FFT routines for complex data. + (line 105) +* gsl_fft_complex_workspace_free (C function): Mixed-radix FFT routines for complex data. + (line 111) +* gsl_fft_halfcomplex_radix2_backward (C function): Radix-2 FFT routines for real data. + (line 57) +* gsl_fft_halfcomplex_radix2_inverse (C function): Radix-2 FFT routines for real data. + (line 57) +* gsl_fft_halfcomplex_radix2_unpack (C function): Radix-2 FFT routines for real data. + (line 70) +* gsl_fft_halfcomplex_transform (C function): Mixed-radix FFT routines for real data. + (line 137) +* gsl_fft_halfcomplex_unpack (C function): Mixed-radix FFT routines for real data. + (line 175) +* gsl_fft_halfcomplex_wavetable (C type): Mixed-radix FFT routines for real data. + (line 72) +* gsl_fft_halfcomplex_wavetable_alloc (C function): Mixed-radix FFT routines for real data. + (line 78) +* gsl_fft_halfcomplex_wavetable_free (C function): Mixed-radix FFT routines for real data. + (line 101) +* gsl_fft_real_radix2_transform (C function): Radix-2 FFT routines for real data. + (line 13) +* gsl_fft_real_transform (C function): Mixed-radix FFT routines for real data. + (line 137) +* gsl_fft_real_unpack (C function): Mixed-radix FFT routines for real data. + (line 158) +* gsl_fft_real_wavetable (C type): Mixed-radix FFT routines for real data. + (line 72) +* gsl_fft_real_wavetable_alloc (C function): Mixed-radix FFT routines for real data. + (line 78) +* gsl_fft_real_wavetable_free (C function): Mixed-radix FFT routines for real data. + (line 101) +* gsl_fft_real_workspace (C type): Mixed-radix FFT routines for real data. + (line 114) +* gsl_fft_real_workspace_alloc (C function): Mixed-radix FFT routines for real data. + (line 118) +* gsl_fft_real_workspace_free (C function): Mixed-radix FFT routines for real data. + (line 126) +* GSL_FILTER_END_PADVALUE (C macro): Handling Endpoints<2>. + (line 27) +* GSL_FILTER_END_PADZERO (C macro): Handling Endpoints<2>. + (line 17) +* gsl_filter_end_t (C type): Handling Endpoints<2>. + (line 12) +* GSL_FILTER_END_TRUNCATE (C macro): Handling Endpoints<2>. + (line 36) +* gsl_filter_gaussian (C function): Gaussian Filter. (line 50) +* gsl_filter_gaussian_alloc (C function): Gaussian Filter. (line 37) +* gsl_filter_gaussian_free (C function): Gaussian Filter. (line 45) +* gsl_filter_gaussian_kernel (C function): Gaussian Filter. (line 62) +* gsl_filter_impulse (C function): Impulse Detection Filter. + (line 114) +* gsl_filter_impulse_alloc (C function): Impulse Detection Filter. + (line 101) +* gsl_filter_impulse_free (C function): Impulse Detection Filter. + (line 109) +* gsl_filter_median (C function): Standard Median Filter. + (line 25) +* gsl_filter_median_alloc (C function): Standard Median Filter. + (line 11) +* gsl_filter_median_free (C function): Standard Median Filter. + (line 19) +* gsl_filter_rmedian (C function): Recursive Median Filter. + (line 33) +* gsl_filter_rmedian_alloc (C function): Recursive Median Filter. + (line 19) +* gsl_filter_rmedian_free (C function): Recursive Median Filter. + (line 28) +* GSL_FILTER_SCALE_IQR (C macro): Impulse Detection Filter. + (line 61) +* GSL_FILTER_SCALE_MAD (C macro): Impulse Detection Filter. + (line 50) +* GSL_FILTER_SCALE_QN (C macro): Impulse Detection Filter. + (line 81) +* GSL_FILTER_SCALE_SN (C macro): Impulse Detection Filter. + (line 75) +* gsl_filter_scale_t (C type): Impulse Detection Filter. + (line 45) +* gsl_finite (C function): Infinities and Not-a-number. + (line 30) +* gsl_fit_linear (C function): Linear regression with a constant term. + (line 9) +* gsl_fit_linear_est (C function): Linear regression with a constant term. + (line 45) +* gsl_fit_mul (C function): Linear regression without a constant term. + (line 10) +* gsl_fit_mul_est (C function): Linear regression without a constant term. + (line 40) +* gsl_fit_wlinear (C function): Linear regression with a constant term. + (line 27) +* gsl_fit_wmul (C function): Linear regression without a constant term. + (line 23) +* gsl_frexp (C function): Elementary Functions. + (line 57) +* gsl_function (C type): Providing the function to solve. + (line 11) +* gsl_function_fdf (C type): Providing the function to solve. + (line 54) +* gsl_heapsort (C function): Sorting objects. (line 16) +* gsl_heapsort_index (C function): Sorting objects. (line 57) +* gsl_histogram (C type): The histogram struct. + (line 8) +* gsl_histogram2d (C type): The 2D histogram struct. + (line 8) +* gsl_histogram2d_accumulate (C function): Updating and accessing 2D histogram elements. + (line 27) +* gsl_histogram2d_add (C function): 2D Histogram Operations. + (line 12) +* gsl_histogram2d_alloc (C function): 2D Histogram allocation. + (line 14) +* gsl_histogram2d_clone (C function): Copying 2D Histograms. + (line 13) +* gsl_histogram2d_cov (C function): 2D Histogram Statistics. + (line 60) +* gsl_histogram2d_div (C function): 2D Histogram Operations. + (line 36) +* gsl_histogram2d_equal_bins_p (C function): 2D Histogram Operations. + (line 6) +* gsl_histogram2d_find (C function): Searching 2D histogram ranges. + (line 9) +* gsl_histogram2d_fprintf (C function): Reading and writing 2D histograms. + (line 30) +* gsl_histogram2d_fread (C function): Reading and writing 2D histograms. + (line 18) +* gsl_histogram2d_free (C function): 2D Histogram allocation. + (line 42) +* gsl_histogram2d_fscanf (C function): Reading and writing 2D histograms. + (line 68) +* gsl_histogram2d_fwrite (C function): Reading and writing 2D histograms. + (line 9) +* gsl_histogram2d_get (C function): Updating and accessing 2D histogram elements. + (line 35) +* gsl_histogram2d_get_xrange (C function): Updating and accessing 2D histogram elements. + (line 44) +* gsl_histogram2d_get_yrange (C function): Updating and accessing 2D histogram elements. + (line 44) +* gsl_histogram2d_increment (C function): Updating and accessing 2D histogram elements. + (line 12) +* gsl_histogram2d_max_bin (C function): 2D Histogram Statistics. + (line 11) +* gsl_histogram2d_max_val (C function): 2D Histogram Statistics. + (line 6) +* gsl_histogram2d_memcpy (C function): Copying 2D Histograms. + (line 6) +* gsl_histogram2d_min_bin (C function): 2D Histogram Statistics. + (line 24) +* gsl_histogram2d_min_val (C function): 2D Histogram Statistics. + (line 19) +* gsl_histogram2d_mul (C function): 2D Histogram Operations. + (line 28) +* gsl_histogram2d_nx (C function): Updating and accessing 2D histogram elements. + (line 60) +* gsl_histogram2d_ny (C function): Updating and accessing 2D histogram elements. + (line 60) +* gsl_histogram2d_pdf (C type): Resampling from 2D histograms. + (line 20) +* gsl_histogram2d_pdf_alloc (C function): Resampling from 2D histograms. + (line 42) +* gsl_histogram2d_pdf_free (C function): Resampling from 2D histograms. + (line 61) +* gsl_histogram2d_pdf_init (C function): Resampling from 2D histograms. + (line 52) +* gsl_histogram2d_pdf_sample (C function): Resampling from 2D histograms. + (line 66) +* gsl_histogram2d_reset (C function): Updating and accessing 2D histogram elements. + (line 72) +* gsl_histogram2d_scale (C function): 2D Histogram Operations. + (line 44) +* gsl_histogram2d_set_ranges (C function): 2D Histogram allocation. + (line 27) +* gsl_histogram2d_set_ranges_uniform (C function): 2D Histogram allocation. + (line 35) +* gsl_histogram2d_shift (C function): 2D Histogram Operations. + (line 52) +* gsl_histogram2d_sub (C function): 2D Histogram Operations. + (line 20) +* gsl_histogram2d_sum (C function): 2D Histogram Statistics. + (line 67) +* gsl_histogram2d_xmax (C function): Updating and accessing 2D histogram elements. + (line 60) +* gsl_histogram2d_xmean (C function): 2D Histogram Statistics. + (line 32) +* gsl_histogram2d_xmin (C function): Updating and accessing 2D histogram elements. + (line 60) +* gsl_histogram2d_xsigma (C function): 2D Histogram Statistics. + (line 46) +* gsl_histogram2d_ymax (C function): Updating and accessing 2D histogram elements. + (line 60) +* gsl_histogram2d_ymean (C function): 2D Histogram Statistics. + (line 39) +* gsl_histogram2d_ymin (C function): Updating and accessing 2D histogram elements. + (line 60) +* gsl_histogram2d_ysigma (C function): 2D Histogram Statistics. + (line 53) +* gsl_histogram_accumulate (C function): Updating and accessing histogram elements. + (line 26) +* gsl_histogram_add (C function): Histogram Operations. + (line 12) +* gsl_histogram_alloc (C function): Histogram allocation. + (line 14) +* gsl_histogram_bins (C function): Updating and accessing histogram elements. + (line 56) +* gsl_histogram_clone (C function): Copying Histograms. (line 13) +* gsl_histogram_div (C function): Histogram Operations. + (line 35) +* gsl_histogram_equal_bins_p (C function): Histogram Operations. + (line 6) +* gsl_histogram_find (C function): Searching histogram ranges. + (line 9) +* gsl_histogram_fprintf (C function): Reading and writing histograms. + (line 28) +* gsl_histogram_fread (C function): Reading and writing histograms. + (line 18) +* gsl_histogram_free (C function): Histogram allocation. + (line 67) +* gsl_histogram_fscanf (C function): Reading and writing histograms. + (line 54) +* gsl_histogram_fwrite (C function): Reading and writing histograms. + (line 9) +* gsl_histogram_get (C function): Updating and accessing histogram elements. + (line 33) +* gsl_histogram_get_range (C function): Updating and accessing histogram elements. + (line 41) +* gsl_histogram_increment (C function): Updating and accessing histogram elements. + (line 11) +* gsl_histogram_max (C function): Updating and accessing histogram elements. + (line 56) +* gsl_histogram_max_bin (C function): Histogram Statistics. + (line 11) +* gsl_histogram_max_val (C function): Histogram Statistics. + (line 6) +* gsl_histogram_mean (C function): Histogram Statistics. + (line 28) +* gsl_histogram_memcpy (C function): Copying Histograms. (line 6) +* gsl_histogram_min (C function): Updating and accessing histogram elements. + (line 56) +* gsl_histogram_min_bin (C function): Histogram Statistics. + (line 22) +* gsl_histogram_min_val (C function): Histogram Statistics. + (line 17) +* gsl_histogram_mul (C function): Histogram Operations. + (line 27) +* gsl_histogram_pdf (C type): The histogram probability distribution struct. + (line 18) +* gsl_histogram_pdf_alloc (C function): The histogram probability distribution struct. + (line 36) +* gsl_histogram_pdf_free (C function): The histogram probability distribution struct. + (line 53) +* gsl_histogram_pdf_init (C function): The histogram probability distribution struct. + (line 44) +* gsl_histogram_pdf_sample (C function): The histogram probability distribution struct. + (line 58) +* gsl_histogram_reset (C function): Updating and accessing histogram elements. + (line 65) +* gsl_histogram_scale (C function): Histogram Operations. + (line 43) +* gsl_histogram_set_ranges (C function): Histogram allocation. + (line 24) +* gsl_histogram_set_ranges_uniform (C function): Histogram allocation. + (line 51) +* gsl_histogram_shift (C function): Histogram Operations. + (line 50) +* gsl_histogram_sigma (C function): Histogram Statistics. + (line 35) +* gsl_histogram_sub (C function): Histogram Operations. + (line 19) +* gsl_histogram_sum (C function): Histogram Statistics. + (line 43) +* gsl_hypot (C function): Elementary Functions. + (line 24) +* gsl_hypot3 (C function): Elementary Functions. + (line 30) +* gsl_ieee_env_setup (C function): Setting up your IEEE environment. + (line 27) +* gsl_ieee_fprintf_double (C function): Representation of floating point numbers. + (line 56) +* gsl_ieee_fprintf_float (C function): Representation of floating point numbers. + (line 56) +* GSL_IEEE_MODE (C macro): Setting up your IEEE environment. + (line 23) +* gsl_ieee_printf_double (C function): Representation of floating point numbers. + (line 91) +* gsl_ieee_printf_float (C function): Representation of floating point numbers. + (line 91) +* GSL_IMAG (C macro): Representation of complex numbers. + (line 36) +* gsl_integration_cquad (C function): CQUAD doubly-adaptive integration. + (line 35) +* gsl_integration_cquad_workspace: CQUAD doubly-adaptive integration. + (line 20) +* gsl_integration_cquad_workspace_alloc (C function): CQUAD doubly-adaptive integration. + (line 20) +* gsl_integration_cquad_workspace_free (C function): CQUAD doubly-adaptive integration. + (line 30) +* gsl_integration_fixed (C function): Fixed point quadratures. + (line 161) +* gsl_integration_fixed_alloc (C function): Fixed point quadratures. + (line 74) +* gsl_integration_fixed_chebyshev (C variable): Fixed point quadratures. + (line 99) +* gsl_integration_fixed_chebyshev2 (C variable): Fixed point quadratures. + (line 133) +* gsl_integration_fixed_exponential (C variable): Fixed point quadratures. + (line 124) +* gsl_integration_fixed_free (C function): Fixed point quadratures. + (line 139) +* gsl_integration_fixed_gegenbauer (C variable): Fixed point quadratures. + (line 105) +* gsl_integration_fixed_hermite (C variable): Fixed point quadratures. + (line 119) +* gsl_integration_fixed_jacobi (C variable): Fixed point quadratures. + (line 110) +* gsl_integration_fixed_laguerre (C variable): Fixed point quadratures. + (line 114) +* gsl_integration_fixed_legendre (C variable): Fixed point quadratures. + (line 93) +* gsl_integration_fixed_n (C function): Fixed point quadratures. + (line 144) +* gsl_integration_fixed_nodes (C function): Fixed point quadratures. + (line 149) +* gsl_integration_fixed_rational (C variable): Fixed point quadratures. + (line 129) +* gsl_integration_fixed_type (C type): Fixed point quadratures. + (line 88) +* gsl_integration_fixed_weights (C function): Fixed point quadratures. + (line 155) +* gsl_integration_fixed_workspace (C type): Fixed point quadratures. + (line 59) +* gsl_integration_glfixed (C function): Gauss-Legendre integration. + (line 23) +* gsl_integration_glfixed_point (C function): Gauss-Legendre integration. + (line 30) +* gsl_integration_glfixed_table: Gauss-Legendre integration. + (line 14) +* gsl_integration_glfixed_table <1>: Gauss-Legendre integration. + (line 41) +* gsl_integration_glfixed_table_alloc (C function): Gauss-Legendre integration. + (line 14) +* gsl_integration_glfixed_table_free (C function): Gauss-Legendre integration. + (line 41) +* gsl_integration_qag (C function): QAG adaptive integration. + (line 32) +* gsl_integration_qagi (C function): QAGI adaptive integration on infinite intervals. + (line 6) +* gsl_integration_qagil (C function): QAGI adaptive integration on infinite intervals. + (line 36) +* gsl_integration_qagiu (C function): QAGI adaptive integration on infinite intervals. + (line 21) +* gsl_integration_qagp (C function): QAGP adaptive integration with known singular points. + (line 6) +* gsl_integration_qags (C function): QAGS adaptive integration with singularities. + (line 15) +* gsl_integration_qawc (C function): QAWC adaptive integration for Cauchy principal values. + (line 6) +* gsl_integration_qawf (C function): QAWF adaptive integration for Fourier integrals. + (line 6) +* gsl_integration_qawo (C function): QAWO adaptive integration for oscillatory functions. + (line 60) +* gsl_integration_qawo_table: QAWO adaptive integration for oscillatory functions. + (line 11) +* gsl_integration_qawo_table_alloc (C function): QAWO adaptive integration for oscillatory functions. + (line 11) +* gsl_integration_qawo_table_free (C function): QAWO adaptive integration for oscillatory functions. + (line 54) +* gsl_integration_qawo_table_set (C function): QAWO adaptive integration for oscillatory functions. + (line 40) +* gsl_integration_qawo_table_set_length (C function): QAWO adaptive integration for oscillatory functions. + (line 48) +* gsl_integration_qaws (C function): QAWS adaptive integration for singular functions. + (line 69) +* gsl_integration_qaws_table (C type): QAWS adaptive integration for singular functions. + (line 11) +* gsl_integration_qaws_table_alloc (C function): QAWS adaptive integration for singular functions. + (line 16) +* gsl_integration_qaws_table_free (C function): QAWS adaptive integration for singular functions. + (line 63) +* gsl_integration_qaws_table_set (C function): QAWS adaptive integration for singular functions. + (line 55) +* gsl_integration_qng (C function): QNG non-adaptive Gauss-Kronrod integration. + (line 10) +* gsl_integration_romberg (C function): Romberg integration. (line 35) +* gsl_integration_romberg_alloc (C function): Romberg integration. + (line 21) +* gsl_integration_romberg_free (C function): Romberg integration. + (line 30) +* gsl_integration_workspace: QAG adaptive integration. + (line 18) +* gsl_integration_workspace (C type): QAG adaptive integration. + (line 13) +* gsl_integration_workspace_alloc (C function): QAG adaptive integration. + (line 18) +* gsl_integration_workspace_free (C function): QAG adaptive integration. + (line 27) +* GSL_INTEG_COSINE (C macro): QAWO adaptive integration for oscillatory functions. + (line 27) +* GSL_INTEG_GAUSS15 (C macro): QAG adaptive integration. + (line 45) +* GSL_INTEG_GAUSS21 (C macro): QAG adaptive integration. + (line 47) +* GSL_INTEG_GAUSS31 (C macro): QAG adaptive integration. + (line 49) +* GSL_INTEG_GAUSS41 (C macro): QAG adaptive integration. + (line 51) +* GSL_INTEG_GAUSS51 (C macro): QAG adaptive integration. + (line 53) +* GSL_INTEG_GAUSS61 (C macro): QAG adaptive integration. + (line 55) +* GSL_INTEG_SINE (C macro): QAWO adaptive integration for oscillatory functions. + (line 29) +* gsl_interp (C type): 1D Interpolation Functions. + (line 9) +* gsl_interp2d (C type): 2D Interpolation Functions. + (line 10) +* gsl_interp2d_alloc (C function): 2D Interpolation Functions. + (line 14) +* gsl_interp2d_bicubic (C variable): 2D Interpolation Types. + (line 16) +* gsl_interp2d_bilinear (C variable): 2D Interpolation Types. + (line 11) +* gsl_interp2d_eval (C function): 2D Evaluation of Interpolating Functions. + (line 6) +* gsl_interp2d_eval_deriv_x (C function): 2D Evaluation of Interpolating Functions. + (line 39) +* gsl_interp2d_eval_deriv_xx (C function): 2D Evaluation of Interpolating Functions. + (line 75) +* gsl_interp2d_eval_deriv_xx_e (C function): 2D Evaluation of Interpolating Functions. + (line 75) +* gsl_interp2d_eval_deriv_xy (C function): 2D Evaluation of Interpolating Functions. + (line 111) +* gsl_interp2d_eval_deriv_xy_e (C function): 2D Evaluation of Interpolating Functions. + (line 111) +* gsl_interp2d_eval_deriv_x_e (C function): 2D Evaluation of Interpolating Functions. + (line 39) +* gsl_interp2d_eval_deriv_y (C function): 2D Evaluation of Interpolating Functions. + (line 57) +* gsl_interp2d_eval_deriv_yy (C function): 2D Evaluation of Interpolating Functions. + (line 93) +* gsl_interp2d_eval_deriv_yy_e (C function): 2D Evaluation of Interpolating Functions. + (line 93) +* gsl_interp2d_eval_deriv_y_e (C function): 2D Evaluation of Interpolating Functions. + (line 57) +* gsl_interp2d_eval_e (C function): 2D Evaluation of Interpolating Functions. + (line 6) +* gsl_interp2d_eval_extrap (C function): 2D Evaluation of Interpolating Functions. + (line 21) +* gsl_interp2d_eval_extrap_e (C function): 2D Evaluation of Interpolating Functions. + (line 21) +* gsl_interp2d_free (C function): 2D Interpolation Functions. + (line 37) +* gsl_interp2d_get (C function): 2D Interpolation Grids. + (line 21) +* gsl_interp2d_idx (C function): 2D Interpolation Grids. + (line 27) +* gsl_interp2d_init (C function): 2D Interpolation Functions. + (line 21) +* gsl_interp2d_min_size (C function): 2D Interpolation Types. + (line 32) +* gsl_interp2d_name (C function): 2D Interpolation Types. + (line 20) +* gsl_interp2d_set (C function): 2D Interpolation Grids. + (line 15) +* gsl_interp2d_type (C type): 2D Interpolation Types. + (line 6) +* gsl_interp2d_type_min_size (C function): 2D Interpolation Types. + (line 32) +* gsl_interp_accel (C type): 1D Index Look-up and Acceleration. + (line 9) +* gsl_interp_accel_alloc (C function): 1D Index Look-up and Acceleration. + (line 24) +* gsl_interp_accel_find (C function): 1D Index Look-up and Acceleration. + (line 31) +* gsl_interp_accel_free (C function): 1D Index Look-up and Acceleration. + (line 48) +* gsl_interp_akima (C variable): 1D Interpolation Types. + (line 41) +* gsl_interp_akima_periodic (C variable): 1D Interpolation Types. + (line 46) +* gsl_interp_alloc (C function): 1D Interpolation Functions. + (line 13) +* gsl_interp_bsearch (C function): 1D Index Look-up and Acceleration. + (line 16) +* gsl_interp_cspline (C variable): 1D Interpolation Types. + (line 23) +* gsl_interp_cspline_periodic (C variable): 1D Interpolation Types. + (line 31) +* gsl_interp_eval (C function): 1D Evaluation of Interpolating Functions. + (line 6) +* gsl_interp_eval_deriv (C function): 1D Evaluation of Interpolating Functions. + (line 21) +* gsl_interp_eval_deriv2 (C function): 1D Evaluation of Interpolating Functions. + (line 32) +* gsl_interp_eval_deriv2_e (C function): 1D Evaluation of Interpolating Functions. + (line 32) +* gsl_interp_eval_deriv_e (C function): 1D Evaluation of Interpolating Functions. + (line 21) +* gsl_interp_eval_e (C function): 1D Evaluation of Interpolating Functions. + (line 6) +* gsl_interp_eval_integ (C function): 1D Evaluation of Interpolating Functions. + (line 44) +* gsl_interp_eval_integ_e (C function): 1D Evaluation of Interpolating Functions. + (line 44) +* gsl_interp_free (C function): 1D Interpolation Functions. + (line 31) +* gsl_interp_init (C function): 1D Interpolation Functions. + (line 20) +* gsl_interp_linear (C variable): 1D Interpolation Types. + (line 10) +* gsl_interp_min_size (C function): 1D Interpolation Types. + (line 75) +* gsl_interp_name (C function): 1D Interpolation Types. + (line 64) +* gsl_interp_polynomial (C variable): 1D Interpolation Types. + (line 15) +* gsl_interp_steffen (C variable): 1D Interpolation Types. + (line 51) +* gsl_interp_type (C type): 1D Interpolation Types. + (line 8) +* gsl_interp_type_min_size (C function): 1D Interpolation Types. + (line 75) +* gsl_isinf (C function): Infinities and Not-a-number. + (line 25) +* gsl_isnan (C function): Infinities and Not-a-number. + (line 21) +* GSL_IS_EVEN (C macro): Testing for Odd and Even Numbers. + (line 11) +* GSL_IS_ODD (C macro): Testing for Odd and Even Numbers. + (line 6) +* gsl_ldexp (C function): Elementary Functions. + (line 52) +* gsl_linalg_balance_matrix (C function): Balancing. (line 17) +* gsl_linalg_bidiag_decomp (C function): Bidiagonalization. (line 15) +* gsl_linalg_bidiag_unpack (C function): Bidiagonalization. (line 28) +* gsl_linalg_bidiag_unpack2 (C function): Bidiagonalization. (line 39) +* gsl_linalg_bidiag_unpack_B (C function): Bidiagonalization. (line 49) +* gsl_linalg_cholesky_decomp (C function): Cholesky Decomposition. + (line 46) +* gsl_linalg_cholesky_decomp1 (C function): Cholesky Decomposition. + (line 29) +* gsl_linalg_cholesky_decomp2 (C function): Cholesky Decomposition. + (line 85) +* gsl_linalg_cholesky_invert (C function): Cholesky Decomposition. + (line 75) +* gsl_linalg_cholesky_rcond (C function): Cholesky Decomposition. + (line 138) +* gsl_linalg_cholesky_scale (C function): Cholesky Decomposition. + (line 121) +* gsl_linalg_cholesky_scale_apply (C function): Cholesky Decomposition. + (line 132) +* gsl_linalg_cholesky_solve (C function): Cholesky Decomposition. + (line 51) +* gsl_linalg_cholesky_solve2 (C function): Cholesky Decomposition. + (line 103) +* gsl_linalg_cholesky_svx (C function): Cholesky Decomposition. + (line 62) +* gsl_linalg_cholesky_svx2 (C function): Cholesky Decomposition. + (line 112) +* gsl_linalg_COD_decomp (C function): Complete Orthogonal Decomposition. + (line 49) +* gsl_linalg_COD_decomp_e (C function): Complete Orthogonal Decomposition. + (line 49) +* gsl_linalg_COD_lssolve (C function): Complete Orthogonal Decomposition. + (line 68) +* gsl_linalg_COD_lssolve2 (C function): Complete Orthogonal Decomposition. + (line 83) +* gsl_linalg_COD_matZ (C function): Complete Orthogonal Decomposition. + (line 108) +* gsl_linalg_COD_unpack (C function): Complete Orthogonal Decomposition. + (line 100) +* gsl_linalg_complex_cholesky_decomp (C function): Cholesky Decomposition. + (line 29) +* gsl_linalg_complex_cholesky_invert (C function): Cholesky Decomposition. + (line 75) +* gsl_linalg_complex_cholesky_solve (C function): Cholesky Decomposition. + (line 51) +* gsl_linalg_complex_cholesky_svx (C function): Cholesky Decomposition. + (line 62) +* gsl_linalg_complex_householder_hm (C function): Householder Transformations. + (line 30) +* gsl_linalg_complex_householder_hv (C function): Householder Transformations. + (line 48) +* gsl_linalg_complex_householder_mh (C function): Householder Transformations. + (line 39) +* gsl_linalg_complex_householder_transform (C function): Householder Transformations. + (line 17) +* gsl_linalg_complex_LU_decomp (C function): LU Decomposition. + (line 18) +* gsl_linalg_complex_LU_det (C function): LU Decomposition. (line 91) +* gsl_linalg_complex_LU_invert (C function): LU Decomposition. + (line 77) +* gsl_linalg_complex_LU_lndet (C function): LU Decomposition. (line 101) +* gsl_linalg_complex_LU_refine (C function): LU Decomposition. + (line 64) +* gsl_linalg_complex_LU_sgndet (C function): LU Decomposition. + (line 110) +* gsl_linalg_complex_LU_solve (C function): LU Decomposition. (line 42) +* gsl_linalg_complex_LU_svx (C function): LU Decomposition. (line 54) +* gsl_linalg_givens (C function): Givens Rotations. (line 21) +* gsl_linalg_givens_gv (C function): Givens Rotations. (line 28) +* gsl_linalg_hermtd_decomp (C function): Tridiagonal Decomposition of Hermitian Matrices. + (line 14) +* gsl_linalg_hermtd_unpack (C function): Tridiagonal Decomposition of Hermitian Matrices. + (line 27) +* gsl_linalg_hermtd_unpack_T (C function): Tridiagonal Decomposition of Hermitian Matrices. + (line 36) +* gsl_linalg_hessenberg_decomp (C function): Hessenberg Decomposition of Real Matrices. + (line 16) +* gsl_linalg_hessenberg_set_zero (C function): Hessenberg Decomposition of Real Matrices. + (line 47) +* gsl_linalg_hessenberg_unpack (C function): Hessenberg Decomposition of Real Matrices. + (line 28) +* gsl_linalg_hessenberg_unpack_accum (C function): Hessenberg Decomposition of Real Matrices. + (line 36) +* gsl_linalg_hesstri_decomp (C function): Hessenberg-Triangular Decomposition of Real Matrices. + (line 17) +* gsl_linalg_HH_solve (C function): Householder solver for linear systems. + (line 6) +* gsl_linalg_HH_svx (C function): Householder solver for linear systems. + (line 15) +* gsl_linalg_householder_hm (C function): Householder Transformations. + (line 30) +* gsl_linalg_householder_hv (C function): Householder Transformations. + (line 48) +* gsl_linalg_householder_mh (C function): Householder Transformations. + (line 39) +* gsl_linalg_householder_transform (C function): Householder Transformations. + (line 17) +* gsl_linalg_LU_decomp (C function): LU Decomposition. (line 18) +* gsl_linalg_LU_det (C function): LU Decomposition. (line 91) +* gsl_linalg_LU_invert (C function): LU Decomposition. (line 77) +* gsl_linalg_LU_lndet (C function): LU Decomposition. (line 101) +* gsl_linalg_LU_refine (C function): LU Decomposition. (line 64) +* gsl_linalg_LU_sgndet (C function): LU Decomposition. (line 110) +* gsl_linalg_LU_solve (C function): LU Decomposition. (line 42) +* gsl_linalg_LU_svx (C function): LU Decomposition. (line 54) +* gsl_linalg_mcholesky_decomp (C function): Modified Cholesky Decomposition. + (line 25) +* gsl_linalg_mcholesky_rcond (C function): Modified Cholesky Decomposition. + (line 59) +* gsl_linalg_mcholesky_solve (C function): Modified Cholesky Decomposition. + (line 40) +* gsl_linalg_mcholesky_svx (C function): Modified Cholesky Decomposition. + (line 49) +* gsl_linalg_pcholesky_decomp (C function): Pivoted Cholesky Decomposition. + (line 20) +* gsl_linalg_pcholesky_decomp2 (C function): Pivoted Cholesky Decomposition. + (line 52) +* gsl_linalg_pcholesky_invert (C function): Pivoted Cholesky Decomposition. + (line 90) +* gsl_linalg_pcholesky_rcond (C function): Pivoted Cholesky Decomposition. + (line 97) +* gsl_linalg_pcholesky_solve (C function): Pivoted Cholesky Decomposition. + (line 33) +* gsl_linalg_pcholesky_solve2 (C function): Pivoted Cholesky Decomposition. + (line 70) +* gsl_linalg_pcholesky_svx (C function): Pivoted Cholesky Decomposition. + (line 42) +* gsl_linalg_pcholesky_svx2 (C function): Pivoted Cholesky Decomposition. + (line 79) +* gsl_linalg_QRPT_decomp (C function): QR Decomposition with Column Pivoting. + (line 33) +* gsl_linalg_QRPT_decomp2 (C function): QR Decomposition with Column Pivoting. + (line 58) +* gsl_linalg_QRPT_lssolve (C function): QR Decomposition with Column Pivoting. + (line 83) +* gsl_linalg_QRPT_lssolve2 (C function): QR Decomposition with Column Pivoting. + (line 98) +* gsl_linalg_QRPT_QRsolve (C function): QR Decomposition with Column Pivoting. + (line 115) +* gsl_linalg_QRPT_rank (C function): QR Decomposition with Column Pivoting. + (line 146) +* gsl_linalg_QRPT_rcond (C function): QR Decomposition with Column Pivoting. + (line 156) +* gsl_linalg_QRPT_Rsolve (C function): QR Decomposition with Column Pivoting. + (line 133) +* gsl_linalg_QRPT_Rsvx (C function): QR Decomposition with Column Pivoting. + (line 139) +* gsl_linalg_QRPT_solve (C function): QR Decomposition with Column Pivoting. + (line 66) +* gsl_linalg_QRPT_svx (C function): QR Decomposition with Column Pivoting. + (line 75) +* gsl_linalg_QRPT_update (C function): QR Decomposition with Column Pivoting. + (line 123) +* gsl_linalg_QR_decomp (C function): QR Decomposition. (line 19) +* gsl_linalg_QR_lssolve (C function): QR Decomposition. (line 54) +* gsl_linalg_QR_QRsolve (C function): QR Decomposition. (line 117) +* gsl_linalg_QR_QTmat (C function): QR Decomposition. (line 84) +* gsl_linalg_QR_QTvec (C function): QR Decomposition. (line 66) +* gsl_linalg_QR_Qvec (C function): QR Decomposition. (line 75) +* gsl_linalg_QR_Rsolve (C function): QR Decomposition. (line 93) +* gsl_linalg_QR_Rsvx (C function): QR Decomposition. (line 100) +* gsl_linalg_QR_solve (C function): QR Decomposition. (line 36) +* gsl_linalg_QR_svx (C function): QR Decomposition. (line 45) +* gsl_linalg_QR_unpack (C function): QR Decomposition. (line 110) +* gsl_linalg_QR_update (C function): QR Decomposition. (line 124) +* gsl_linalg_R_solve (C function): QR Decomposition. (line 132) +* gsl_linalg_R_svx (C function): QR Decomposition. (line 138) +* gsl_linalg_solve_cyc_tridiag (C function): Tridiagonal Systems. + (line 42) +* gsl_linalg_solve_symm_cyc_tridiag (C function): Tridiagonal Systems. + (line 58) +* gsl_linalg_solve_symm_tridiag (C function): Tridiagonal Systems. + (line 28) +* gsl_linalg_solve_tridiag (C function): Tridiagonal Systems. (line 13) +* gsl_linalg_SV_decomp (C function): Singular Value Decomposition. + (line 38) +* gsl_linalg_SV_decomp_jacobi (C function): Singular Value Decomposition. + (line 61) +* gsl_linalg_SV_decomp_mod (C function): Singular Value Decomposition. + (line 52) +* gsl_linalg_SV_leverage (C function): Singular Value Decomposition. + (line 86) +* gsl_linalg_SV_solve (C function): Singular Value Decomposition. + (line 69) +* gsl_linalg_symmtd_decomp (C function): Tridiagonal Decomposition of Real Symmetric Matrices. + (line 13) +* gsl_linalg_symmtd_unpack (C function): Tridiagonal Decomposition of Real Symmetric Matrices. + (line 26) +* gsl_linalg_symmtd_unpack_T (C function): Tridiagonal Decomposition of Real Symmetric Matrices. + (line 36) +* gsl_linalg_tri_lower_invert (C function): Triangular Systems. + (line 6) +* gsl_linalg_tri_lower_rcond (C function): Triangular Systems. + (line 19) +* gsl_linalg_tri_lower_unit_invert (C function): Triangular Systems. + (line 6) +* gsl_linalg_tri_upper_invert (C function): Triangular Systems. + (line 6) +* gsl_linalg_tri_upper_rcond (C function): Triangular Systems. + (line 19) +* gsl_linalg_tri_upper_unit_invert (C function): Triangular Systems. + (line 6) +* gsl_log1p (C function): Elementary Functions. + (line 12) +* gsl_matrix (C type): Matrices. (line 11) +* gsl_matrix_add (C function): Matrix operations. (line 8) +* gsl_matrix_add_constant (C function): Matrix operations. (line 44) +* gsl_matrix_alloc (C function): Matrix allocation. (line 14) +* gsl_matrix_calloc (C function): Matrix allocation. (line 24) +* gsl_matrix_column (C function): Creating row and column views. + (line 25) +* gsl_matrix_const_column (C function): Creating row and column views. + (line 25) +* gsl_matrix_const_diagonal (C function): Creating row and column views. + (line 67) +* gsl_matrix_const_ptr (C function): Accessing matrix elements. + (line 38) +* gsl_matrix_const_row (C function): Creating row and column views. + (line 13) +* gsl_matrix_const_subcolumn (C function): Creating row and column views. + (line 52) +* gsl_matrix_const_subdiagonal (C function): Creating row and column views. + (line 80) +* gsl_matrix_const_submatrix (C function): Matrix views. (line 21) +* gsl_matrix_const_subrow (C function): Creating row and column views. + (line 38) +* gsl_matrix_const_superdiagonal (C function): Creating row and column views. + (line 94) +* gsl_matrix_const_view (C type): Matrix views. (line 6) +* gsl_matrix_const_view_array (C function): Matrix views. (line 55) +* gsl_matrix_const_view_array_with_tda (C function): Matrix views. + (line 81) +* gsl_matrix_const_view_vector (C function): Matrix views. (line 108) +* gsl_matrix_const_view_vector_with_tda (C function): Matrix views. + (line 134) +* gsl_matrix_diagonal (C function): Creating row and column views. + (line 67) +* gsl_matrix_div_elements (C function): Matrix operations. (line 30) +* gsl_matrix_equal (C function): Matrix properties. (line 20) +* gsl_matrix_fprintf (C function): Reading and writing matrices. + (line 28) +* gsl_matrix_fread (C function): Reading and writing matrices. + (line 18) +* gsl_matrix_free (C function): Matrix allocation. (line 30) +* gsl_matrix_fscanf (C function): Reading and writing matrices. + (line 37) +* gsl_matrix_fwrite (C function): Reading and writing matrices. + (line 9) +* gsl_matrix_get (C function): Accessing matrix elements. + (line 20) +* gsl_matrix_get_col (C function): Copying rows and columns. + (line 21) +* gsl_matrix_get_row (C function): Copying rows and columns. + (line 13) +* gsl_matrix_isneg (C function): Matrix properties. (line 10) +* gsl_matrix_isnonneg (C function): Matrix properties. (line 10) +* gsl_matrix_isnull (C function): Matrix properties. (line 10) +* gsl_matrix_ispos (C function): Matrix properties. (line 10) +* gsl_matrix_max (C function): Finding maximum and minimum elements of matrices. + (line 8) +* gsl_matrix_max_index (C function): Finding maximum and minimum elements of matrices. + (line 22) +* gsl_matrix_memcpy (C function): Copying matrices. (line 6) +* gsl_matrix_min (C function): Finding maximum and minimum elements of matrices. + (line 12) +* gsl_matrix_minmax (C function): Finding maximum and minimum elements of matrices. + (line 16) +* gsl_matrix_minmax_index (C function): Finding maximum and minimum elements of matrices. + (line 38) +* gsl_matrix_min_index (C function): Finding maximum and minimum elements of matrices. + (line 30) +* gsl_matrix_mul_elements (C function): Matrix operations. (line 22) +* gsl_matrix_ptr (C function): Accessing matrix elements. + (line 38) +* gsl_matrix_row (C function): Creating row and column views. + (line 13) +* gsl_matrix_scale (C function): Matrix operations. (line 38) +* gsl_matrix_set (C function): Accessing matrix elements. + (line 29) +* gsl_matrix_set_all (C function): Initializing matrix elements. + (line 6) +* gsl_matrix_set_col (C function): Copying rows and columns. + (line 36) +* gsl_matrix_set_identity (C function): Initializing matrix elements. + (line 15) +* gsl_matrix_set_row (C function): Copying rows and columns. + (line 29) +* gsl_matrix_set_zero (C function): Initializing matrix elements. + (line 11) +* gsl_matrix_sub (C function): Matrix operations. (line 15) +* gsl_matrix_subcolumn (C function): Creating row and column views. + (line 52) +* gsl_matrix_subdiagonal (C function): Creating row and column views. + (line 80) +* gsl_matrix_submatrix (C function): Matrix views. (line 21) +* gsl_matrix_subrow (C function): Creating row and column views. + (line 38) +* gsl_matrix_superdiagonal (C function): Creating row and column views. + (line 94) +* gsl_matrix_swap (C function): Copying matrices. (line 12) +* gsl_matrix_swap_columns (C function): Exchanging rows and columns. + (line 16) +* gsl_matrix_swap_rowcol (C function): Exchanging rows and columns. + (line 23) +* gsl_matrix_swap_rows (C function): Exchanging rows and columns. + (line 9) +* gsl_matrix_transpose (C function): Exchanging rows and columns. + (line 39) +* gsl_matrix_transpose_memcpy (C function): Exchanging rows and columns. + (line 31) +* gsl_matrix_view (C type): Matrix views. (line 6) +* gsl_matrix_view_array (C function): Matrix views. (line 55) +* gsl_matrix_view_array_with_tda (C function): Matrix views. (line 81) +* gsl_matrix_view_vector (C function): Matrix views. (line 108) +* gsl_matrix_view_vector_with_tda (C function): Matrix views. (line 134) +* GSL_MAX (C macro): Maximum and Minimum functions. + (line 10) +* GSL_MAX_DBL (C function): Maximum and Minimum functions. + (line 20) +* GSL_MAX_INT (C function): Maximum and Minimum functions. + (line 36) +* GSL_MAX_LDBL (C function): Maximum and Minimum functions. + (line 44) +* GSL_MIN (C macro): Maximum and Minimum functions. + (line 15) +* GSL_MIN_DBL (C function): Maximum and Minimum functions. + (line 28) +* gsl_min_fminimizer (C type): Initializing the Minimizer. + (line 6) +* gsl_min_fminimizer_alloc (C function): Initializing the Minimizer. + (line 10) +* gsl_min_fminimizer_brent (C variable): Minimization Algorithms. + (line 33) +* gsl_min_fminimizer_free (C function): Initializing the Minimizer. + (line 46) +* gsl_min_fminimizer_f_lower (C function): Iteration<2>. (line 46) +* gsl_min_fminimizer_f_minimum (C function): Iteration<2>. (line 46) +* gsl_min_fminimizer_f_upper (C function): Iteration<2>. (line 46) +* gsl_min_fminimizer_goldensection (C variable): Minimization Algorithms. + (line 15) +* gsl_min_fminimizer_iterate (C function): Iteration<2>. (line 12) +* gsl_min_fminimizer_name (C function): Initializing the Minimizer. + (line 51) +* gsl_min_fminimizer_quad_golden (C variable): Minimization Algorithms. + (line 50) +* gsl_min_fminimizer_set (C function): Initializing the Minimizer. + (line 24) +* gsl_min_fminimizer_set_with_values (C function): Initializing the Minimizer. + (line 36) +* gsl_min_fminimizer_type (C type): Minimization Algorithms. + (line 13) +* gsl_min_fminimizer_x_lower (C function): Iteration<2>. (line 38) +* gsl_min_fminimizer_x_minimum (C function): Iteration<2>. (line 32) +* gsl_min_fminimizer_x_upper (C function): Iteration<2>. (line 38) +* GSL_MIN_INT (C function): Maximum and Minimum functions. + (line 36) +* GSL_MIN_LDBL (C function): Maximum and Minimum functions. + (line 44) +* gsl_min_test_interval (C function): Stopping Parameters. (line 18) +* gsl_mode_t (C type): Modes. (line 14) +* gsl_monte_function (C type): Interface. (line 27) +* gsl_monte_miser_alloc (C function): MISER. (line 48) +* gsl_monte_miser_free (C function): MISER. (line 75) +* gsl_monte_miser_init (C function): MISER. (line 54) +* gsl_monte_miser_integrate (C function): MISER. (line 60) +* gsl_monte_miser_params (C type): MISER. (line 102) +* gsl_monte_miser_params_get (C function): MISER. (line 83) +* gsl_monte_miser_params_set (C function): MISER. (line 89) +* gsl_monte_miser_state (C type): MISER. (line 44) +* gsl_monte_plain_alloc (C function): PLAIN Monte Carlo. (line 33) +* gsl_monte_plain_free (C function): PLAIN Monte Carlo. (line 59) +* gsl_monte_plain_init (C function): PLAIN Monte Carlo. (line 38) +* gsl_monte_plain_integrate (C function): PLAIN Monte Carlo. (line 44) +* gsl_monte_plain_state (C type): PLAIN Monte Carlo. (line 29) +* gsl_monte_vegas_alloc (C function): VEGAS. (line 54) +* gsl_monte_vegas_chisq (C function): VEGAS. (line 123) +* gsl_monte_vegas_free (C function): VEGAS. (line 85) +* gsl_monte_vegas_init (C function): VEGAS. (line 60) +* gsl_monte_vegas_integrate (C function): VEGAS. (line 66) +* gsl_monte_vegas_params (C type): VEGAS. (line 164) +* gsl_monte_vegas_params_get (C function): VEGAS. (line 145) +* gsl_monte_vegas_params_set (C function): VEGAS. (line 151) +* gsl_monte_vegas_runval (C function): VEGAS. (line 134) +* gsl_monte_vegas_state (C type): VEGAS. (line 50) +* gsl_movstat_accum (C type): Accumulators. (line 11) +* gsl_movstat_accum.delete (C member): Accumulators. (line 45) +* gsl_movstat_accum.get (C member): Accumulators. (line 50) +* gsl_movstat_accum.init (C member): Accumulators. (line 32) +* gsl_movstat_accum.insert (C member): Accumulators. (line 37) +* gsl_movstat_accum.size (C member): Accumulators. (line 27) +* gsl_movstat_accum_max (C variable): Accumulators. (line 60) +* gsl_movstat_accum_mean (C variable): Accumulators. (line 67) +* gsl_movstat_accum_min (C variable): Accumulators. (line 60) +* gsl_movstat_accum_minmax (C variable): Accumulators. (line 60) +* gsl_movstat_accum_Qn (C variable): Accumulators. (line 79) +* gsl_movstat_accum_qqr (C variable): Accumulators. (line 89) +* gsl_movstat_accum_sd (C variable): Accumulators. (line 67) +* gsl_movstat_accum_Sn (C variable): Accumulators. (line 79) +* gsl_movstat_accum_sum (C variable): Accumulators. (line 85) +* gsl_movstat_accum_variance (C variable): Accumulators. (line 67) +* gsl_movstat_alloc (C function): Allocation for Moving Window Statistics. + (line 10) +* gsl_movstat_alloc2 (C function): Allocation for Moving Window Statistics. + (line 17) +* gsl_movstat_apply (C function): User-defined Moving Statistics. + (line 42) +* GSL_MOVSTAT_END_PADVALUE (C macro): Handling Endpoints. (line 27) +* GSL_MOVSTAT_END_PADZERO (C macro): Handling Endpoints. (line 17) +* gsl_movstat_end_t (C type): Handling Endpoints. (line 12) +* GSL_MOVSTAT_END_TRUNCATE (C macro): Handling Endpoints. (line 36) +* gsl_movstat_fill (C function): User-defined Moving Statistics. + (line 52) +* gsl_movstat_free (C function): Allocation for Moving Window Statistics. + (line 25) +* gsl_movstat_function (C type): User-defined Moving Statistics. + (line 16) +* gsl_movstat_function.function (C member): User-defined Moving Statistics. + (line 30) +* gsl_movstat_function.params (C member): User-defined Moving Statistics. + (line 38) +* gsl_movstat_mad (C function): Moving MAD. (line 15) +* gsl_movstat_mad0 (C function): Moving MAD. (line 15) +* gsl_movstat_max (C function): Moving Minimum and Maximum. + (line 21) +* gsl_movstat_mean (C function): Moving Mean. (line 16) +* gsl_movstat_median (C function): Moving Median. (line 11) +* gsl_movstat_median (C variable): Accumulators. (line 74) +* gsl_movstat_min (C function): Moving Minimum and Maximum. + (line 12) +* gsl_movstat_minmax (C function): Moving Minimum and Maximum. + (line 30) +* gsl_movstat_Qn (C function): Moving<2>. (line 10) +* gsl_movstat_qqr (C function): Moving QQR. (line 19) +* gsl_movstat_sd (C function): Moving Variance and Standard Deviation. + (line 23) +* gsl_movstat_Sn (C function): Moving. (line 11) +* gsl_movstat_sum (C function): Moving Sum. (line 11) +* gsl_movstat_variance (C function): Moving Variance and Standard Deviation. + (line 14) +* gsl_movstat_workspace (C type): Allocation for Moving Window Statistics. + (line 6) +* gsl_multifit_linear (C function): Multi-parameter regression. + (line 75) +* gsl_multifit_linear_alloc (C function): Multi-parameter regression. + (line 48) +* gsl_multifit_linear_applyW (C function): Regularized regression. + (line 230) +* gsl_multifit_linear_bsvd (C function): Multi-parameter regression. + (line 67) +* gsl_multifit_linear_est (C function): Multi-parameter regression. + (line 153) +* gsl_multifit_linear_free (C function): Multi-parameter regression. + (line 56) +* gsl_multifit_linear_gcv (C function): Regularized regression. + (line 337) +* gsl_multifit_linear_gcv_calc (C function): Regularized regression. + (line 330) +* gsl_multifit_linear_gcv_curve (C function): Regularized regression. + (line 309) +* gsl_multifit_linear_gcv_init (C function): Regularized regression. + (line 297) +* gsl_multifit_linear_gcv_min (C function): Regularized regression. + (line 318) +* gsl_multifit_linear_genform1 (C function): Regularized regression. + (line 200) +* gsl_multifit_linear_genform2 (C function): Regularized regression. + (line 211) +* gsl_multifit_linear_lcorner (C function): Regularized regression. + (line 259) +* gsl_multifit_linear_lcorner2 (C function): Regularized regression. + (line 276) +* gsl_multifit_linear_lcurve (C function): Regularized regression. + (line 241) +* gsl_multifit_linear_Lk (C function): Regularized regression. + (line 349) +* gsl_multifit_linear_Lsobolev (C function): Regularized regression. + (line 356) +* gsl_multifit_linear_L_decomp (C function): Regularized regression. + (line 142) +* gsl_multifit_linear_rank (C function): Multi-parameter regression. + (line 169) +* gsl_multifit_linear_rcond (C function): Regularized regression. + (line 372) +* gsl_multifit_linear_residuals (C function): Multi-parameter regression. + (line 162) +* gsl_multifit_linear_solve (C function): Regularized regression. + (line 180) +* gsl_multifit_linear_stdform1 (C function): Regularized regression. + (line 117) +* gsl_multifit_linear_stdform2 (C function): Regularized regression. + (line 155) +* gsl_multifit_linear_svd (C function): Multi-parameter regression. + (line 61) +* gsl_multifit_linear_tsvd (C function): Multi-parameter regression. + (line 97) +* gsl_multifit_linear_wgenform2 (C function): Regularized regression. + (line 211) +* gsl_multifit_linear_workspace (C type): Multi-parameter regression. + (line 43) +* gsl_multifit_linear_wstdform1 (C function): Regularized regression. + (line 117) +* gsl_multifit_linear_wstdform2 (C function): Regularized regression. + (line 155) +* gsl_multifit_nlinear_alloc (C function): Initializing the Solver<3>. + (line 17) +* gsl_multifit_nlinear_avratio (C function): Iteration<5>. (line 108) +* gsl_multifit_nlinear_covar (C function): Covariance matrix of best fit parameters. + (line 6) +* GSL_MULTIFIT_NLINEAR_CTRDIFF (C macro): Tunable Parameters. (line 198) +* gsl_multifit_nlinear_default_parameters (C function): Initializing the Solver<3>. + (line 53) +* gsl_multifit_nlinear_driver (C function): High Level Driver. + (line 9) +* gsl_multifit_nlinear_fdf (C type): Providing the Function to be Minimized. + (line 10) +* gsl_multifit_nlinear_fdtype (C type): Tunable Parameters. (line 173) +* gsl_multifit_nlinear_free (C function): Initializing the Solver<3>. + (line 82) +* GSL_MULTIFIT_NLINEAR_FWDIFF (C macro): Tunable Parameters. (line 180) +* gsl_multifit_nlinear_init (C function): Initializing the Solver<3>. + (line 63) +* gsl_multifit_nlinear_iterate (C function): Iteration<5>. (line 10) +* gsl_multifit_nlinear_jac (C function): Iteration<5>. (line 61) +* gsl_multifit_nlinear_name (C function): Initializing the Solver<3>. + (line 90) +* gsl_multifit_nlinear_niter (C function): Iteration<5>. (line 68) +* gsl_multifit_nlinear_parameters (C type): Tunable Parameters. + (line 11) +* gsl_multifit_nlinear_position (C function): Iteration<5>. (line 44) +* gsl_multifit_nlinear_rcond (C function): Iteration<5>. (line 77) +* gsl_multifit_nlinear_residual (C function): Iteration<5>. (line 52) +* gsl_multifit_nlinear_scale (C type): Tunable Parameters. (line 86) +* gsl_multifit_nlinear_scale_levenberg (C variable): Tunable Parameters. + (line 110) +* gsl_multifit_nlinear_scale_marquardt (C variable): Tunable Parameters. + (line 121) +* gsl_multifit_nlinear_scale_more (C variable): Tunable Parameters. + (line 92) +* gsl_multifit_nlinear_solver (C type): Tunable Parameters. (line 130) +* gsl_multifit_nlinear_solver_cholesky (C variable): Tunable Parameters. + (line 149) +* gsl_multifit_nlinear_solver_qr (C variable): Tunable Parameters. + (line 141) +* gsl_multifit_nlinear_solver_svd (C variable): Tunable Parameters. + (line 166) +* gsl_multifit_nlinear_test (C function): Testing for Convergence. + (line 19) +* gsl_multifit_nlinear_trs (C type): Tunable Parameters. (line 49) +* gsl_multifit_nlinear_trs_ddogleg (C variable): Tunable Parameters. + (line 71) +* gsl_multifit_nlinear_trs_dogleg (C variable): Tunable Parameters. + (line 66) +* gsl_multifit_nlinear_trs_lm (C variable): Tunable Parameters. + (line 55) +* gsl_multifit_nlinear_trs_lmaccel (C variable): Tunable Parameters. + (line 60) +* gsl_multifit_nlinear_trs_name (C function): Initializing the Solver<3>. + (line 102) +* gsl_multifit_nlinear_trs_subspace2D (C variable): Tunable Parameters. + (line 76) +* gsl_multifit_nlinear_trust (C variable): Initializing the Solver<3>. + (line 12) +* gsl_multifit_nlinear_type (C type): Initializing the Solver<3>. + (line 6) +* gsl_multifit_nlinear_winit (C function): Initializing the Solver<3>. + (line 63) +* gsl_multifit_robust (C function): Robust linear regression. + (line 209) +* gsl_multifit_robust_alloc (C function): Robust linear regression. + (line 81) +* gsl_multifit_robust_bisquare (C variable): Robust linear regression. + (line 99) +* gsl_multifit_robust_cauchy (C variable): Robust linear regression. + (line 110) +* gsl_multifit_robust_default (C variable): Robust linear regression. + (line 93) +* gsl_multifit_robust_est (C function): Robust linear regression. + (line 230) +* gsl_multifit_robust_fair (C variable): Robust linear regression. + (line 123) +* gsl_multifit_robust_free (C function): Robust linear regression. + (line 168) +* gsl_multifit_robust_huber (C variable): Robust linear regression. + (line 133) +* gsl_multifit_robust_maxiter (C function): Robust linear regression. + (line 188) +* gsl_multifit_robust_name (C function): Robust linear regression. + (line 173) +* gsl_multifit_robust_ols (C variable): Robust linear regression. + (line 147) +* gsl_multifit_robust_residuals (C function): Robust linear regression. + (line 239) +* gsl_multifit_robust_statistics (C function): Robust linear regression. + (line 250) +* gsl_multifit_robust_stats (C type): Robust linear regression. + (line 260) +* gsl_multifit_robust_tune (C function): Robust linear regression. + (line 179) +* gsl_multifit_robust_type (C type): Robust linear regression. + (line 91) +* gsl_multifit_robust_weights (C function): Robust linear regression. + (line 196) +* gsl_multifit_robust_welsch (C variable): Robust linear regression. + (line 158) +* gsl_multifit_robust_workspace (C type): Robust linear regression. + (line 77) +* gsl_multifit_wlinear (C function): Multi-parameter regression. + (line 118) +* gsl_multifit_wlinear_tsvd (C function): Multi-parameter regression. + (line 134) +* gsl_multilarge_linear_accumulate (C function): Large Dense Linear Least Squares Routines. + (line 112) +* gsl_multilarge_linear_alloc (C function): Large Dense Linear Least Squares Routines. + (line 11) +* gsl_multilarge_linear_free (C function): Large Dense Linear Least Squares Routines. + (line 43) +* gsl_multilarge_linear_genform1 (C function): Large Dense Linear Least Squares Routines. + (line 132) +* gsl_multilarge_linear_genform2 (C function): Large Dense Linear Least Squares Routines. + (line 143) +* gsl_multilarge_linear_lcurve (C function): Large Dense Linear Least Squares Routines. + (line 153) +* gsl_multilarge_linear_L_decomp (C function): Large Dense Linear Least Squares Routines. + (line 82) +* gsl_multilarge_linear_name (C function): Large Dense Linear Least Squares Routines. + (line 48) +* gsl_multilarge_linear_normal (C variable): Large Dense Linear Least Squares Routines. + (line 26) +* gsl_multilarge_linear_rcond (C function): Large Dense Linear Least Squares Routines. + (line 170) +* gsl_multilarge_linear_reset (C function): Large Dense Linear Least Squares Routines. + (line 54) +* gsl_multilarge_linear_solve (C function): Large Dense Linear Least Squares Routines. + (line 121) +* gsl_multilarge_linear_stdform1 (C function): Large Dense Linear Least Squares Routines. + (line 60) +* gsl_multilarge_linear_stdform2 (C function): Large Dense Linear Least Squares Routines. + (line 92) +* gsl_multilarge_linear_tsqr (C variable): Large Dense Linear Least Squares Routines. + (line 34) +* gsl_multilarge_linear_type (C type): Large Dense Linear Least Squares Routines. + (line 20) +* gsl_multilarge_linear_workspace (C type): Large Dense Linear Least Squares Routines. + (line 6) +* gsl_multilarge_linear_wstdform1 (C function): Large Dense Linear Least Squares Routines. + (line 60) +* gsl_multilarge_linear_wstdform2 (C function): Large Dense Linear Least Squares Routines. + (line 92) +* gsl_multilarge_nlinear_alloc (C function): Initializing the Solver<3>. + (line 17) +* gsl_multilarge_nlinear_avratio (C function): Iteration<5>. (line 108) +* gsl_multilarge_nlinear_covar (C function): Covariance matrix of best fit parameters. + (line 6) +* gsl_multilarge_nlinear_default_parameters (C function): Initializing the Solver<3>. + (line 53) +* gsl_multilarge_nlinear_driver (C function): High Level Driver. + (line 9) +* gsl_multilarge_nlinear_fdf (C type): Providing the Function to be Minimized. + (line 85) +* gsl_multilarge_nlinear_free (C function): Initializing the Solver<3>. + (line 82) +* gsl_multilarge_nlinear_init (C function): Initializing the Solver<3>. + (line 63) +* gsl_multilarge_nlinear_iterate (C function): Iteration<5>. (line 10) +* gsl_multilarge_nlinear_name (C function): Initializing the Solver<3>. + (line 90) +* gsl_multilarge_nlinear_niter (C function): Iteration<5>. (line 68) +* gsl_multilarge_nlinear_parameters (C type): Tunable Parameters. + (line 30) +* gsl_multilarge_nlinear_position (C function): Iteration<5>. (line 44) +* gsl_multilarge_nlinear_rcond (C function): Iteration<5>. (line 77) +* gsl_multilarge_nlinear_residual (C function): Iteration<5>. (line 52) +* gsl_multilarge_nlinear_scale (C type): Tunable Parameters. (line 86) +* gsl_multilarge_nlinear_scale_levenberg (C variable): Tunable Parameters. + (line 110) +* gsl_multilarge_nlinear_scale_marquardt (C variable): Tunable Parameters. + (line 121) +* gsl_multilarge_nlinear_scale_more (C variable): Tunable Parameters. + (line 92) +* gsl_multilarge_nlinear_solver (C type): Tunable Parameters. (line 130) +* gsl_multilarge_nlinear_solver_cholesky (C variable): Tunable Parameters. + (line 149) +* gsl_multilarge_nlinear_test (C function): Testing for Convergence. + (line 19) +* gsl_multilarge_nlinear_trs (C type): Tunable Parameters. (line 49) +* gsl_multilarge_nlinear_trs_cgst (C variable): Tunable Parameters. + (line 81) +* gsl_multilarge_nlinear_trs_ddogleg (C variable): Tunable Parameters. + (line 71) +* gsl_multilarge_nlinear_trs_dogleg (C variable): Tunable Parameters. + (line 66) +* gsl_multilarge_nlinear_trs_lm (C variable): Tunable Parameters. + (line 55) +* gsl_multilarge_nlinear_trs_lmaccel (C variable): Tunable Parameters. + (line 60) +* gsl_multilarge_nlinear_trs_name (C function): Initializing the Solver<3>. + (line 102) +* gsl_multilarge_nlinear_trs_subspace2D (C variable): Tunable Parameters. + (line 76) +* gsl_multimin_fdfminimizer (C type): Initializing the Multidimensional Minimizer. + (line 10) +* gsl_multimin_fdfminimizer_alloc (C function): Initializing the Multidimensional Minimizer. + (line 18) +* gsl_multimin_fdfminimizer_conjugate_fr (C variable): Algorithms with Derivatives. + (line 15) +* gsl_multimin_fdfminimizer_conjugate_pr (C variable): Algorithms with Derivatives. + (line 34) +* gsl_multimin_fdfminimizer_dx (C function): Iteration<4>. (line 27) +* gsl_multimin_fdfminimizer_free (C function): Initializing the Multidimensional Minimizer. + (line 58) +* gsl_multimin_fdfminimizer_gradient (C function): Iteration<4>. + (line 27) +* gsl_multimin_fdfminimizer_iterate (C function): Iteration<4>. + (line 11) +* gsl_multimin_fdfminimizer_minimum (C function): Iteration<4>. + (line 27) +* gsl_multimin_fdfminimizer_name (C function): Initializing the Multidimensional Minimizer. + (line 66) +* gsl_multimin_fdfminimizer_restart (C function): Iteration<4>. + (line 47) +* gsl_multimin_fdfminimizer_set (C function): Initializing the Multidimensional Minimizer. + (line 30) +* gsl_multimin_fdfminimizer_steepest_descent (C variable): Algorithms with Derivatives. + (line 65) +* gsl_multimin_fdfminimizer_type (C type): Algorithms with Derivatives. + (line 11) +* gsl_multimin_fdfminimizer_vector_bfgs (C variable): Algorithms with Derivatives. + (line 43) +* gsl_multimin_fdfminimizer_vector_bfgs2 (C variable): Algorithms with Derivatives. + (line 43) +* gsl_multimin_fdfminimizer_x (C function): Iteration<4>. (line 27) +* gsl_multimin_fminimizer (C type): Initializing the Multidimensional Minimizer. + (line 14) +* gsl_multimin_fminimizer_alloc (C function): Initializing the Multidimensional Minimizer. + (line 18) +* gsl_multimin_fminimizer_free (C function): Initializing the Multidimensional Minimizer. + (line 58) +* gsl_multimin_fminimizer_iterate (C function): Iteration<4>. (line 11) +* gsl_multimin_fminimizer_minimum (C function): Iteration<4>. (line 27) +* gsl_multimin_fminimizer_name (C function): Initializing the Multidimensional Minimizer. + (line 66) +* gsl_multimin_fminimizer_nmsimplex (C variable): Algorithms without Derivatives<2>. + (line 14) +* gsl_multimin_fminimizer_nmsimplex2 (C variable): Algorithms without Derivatives<2>. + (line 14) +* gsl_multimin_fminimizer_nmsimplex2rand (C variable): Algorithms without Derivatives<2>. + (line 60) +* gsl_multimin_fminimizer_set (C function): Initializing the Multidimensional Minimizer. + (line 30) +* gsl_multimin_fminimizer_size (C function): Iteration<4>. (line 27) +* gsl_multimin_fminimizer_type (C type): Algorithms without Derivatives<2>. + (line 9) +* gsl_multimin_fminimizer_x (C function): Iteration<4>. (line 27) +* gsl_multimin_function (C type): Providing a function to minimize. + (line 53) +* gsl_multimin_function_fdf (C type): Providing a function to minimize. + (line 13) +* gsl_multimin_test_gradient (C function): Stopping Criteria. (line 18) +* gsl_multimin_test_size (C function): Stopping Criteria. (line 34) +* gsl_multiroot_fdfsolver (C type): Initializing the Solver<2>. + (line 16) +* gsl_multiroot_fdfsolver_alloc (C function): Initializing the Solver<2>. + (line 36) +* gsl_multiroot_fdfsolver_dx (C function): Iteration<3>. (line 52) +* gsl_multiroot_fdfsolver_f (C function): Iteration<3>. (line 44) +* gsl_multiroot_fdfsolver_free (C function): Initializing the Solver<2>. + (line 62) +* gsl_multiroot_fdfsolver_gnewton (C variable): Algorithms using Derivatives. + (line 102) +* gsl_multiroot_fdfsolver_hybridj (C variable): Algorithms using Derivatives. + (line 75) +* gsl_multiroot_fdfsolver_hybridsj (C variable): Algorithms using Derivatives. + (line 18) +* gsl_multiroot_fdfsolver_iterate (C function): Iteration<3>. (line 12) +* gsl_multiroot_fdfsolver_name (C function): Initializing the Solver<2>. + (line 69) +* gsl_multiroot_fdfsolver_newton (C variable): Algorithms using Derivatives. + (line 82) +* gsl_multiroot_fdfsolver_root (C function): Iteration<3>. (line 36) +* gsl_multiroot_fdfsolver_set (C function): Initializing the Solver<2>. + (line 51) +* gsl_multiroot_fdfsolver_type (C type): Algorithms using Derivatives. + (line 13) +* gsl_multiroot_fsolver (C type): Initializing the Solver<2>. + (line 11) +* gsl_multiroot_fsolver_alloc (C function): Initializing the Solver<2>. + (line 21) +* gsl_multiroot_fsolver_broyden (C variable): Algorithms without Derivatives. + (line 54) +* gsl_multiroot_fsolver_dnewton (C variable): Algorithms without Derivatives. + (line 32) +* gsl_multiroot_fsolver_dx (C function): Iteration<3>. (line 52) +* gsl_multiroot_fsolver_f (C function): Iteration<3>. (line 44) +* gsl_multiroot_fsolver_free (C function): Initializing the Solver<2>. + (line 62) +* gsl_multiroot_fsolver_hybrid (C variable): Algorithms without Derivatives. + (line 27) +* gsl_multiroot_fsolver_hybrids (C variable): Algorithms without Derivatives. + (line 18) +* gsl_multiroot_fsolver_iterate (C function): Iteration<3>. (line 12) +* gsl_multiroot_fsolver_name (C function): Initializing the Solver<2>. + (line 69) +* gsl_multiroot_fsolver_root (C function): Iteration<3>. (line 36) +* gsl_multiroot_fsolver_set (C function): Initializing the Solver<2>. + (line 51) +* gsl_multiroot_fsolver_type (C type): Algorithms without Derivatives. + (line 13) +* gsl_multiroot_function (C type): Providing the function to solve<2>. + (line 10) +* gsl_multiroot_function_fdf (C type): Providing the function to solve<2>. + (line 62) +* gsl_multiroot_test_delta (C function): Search Stopping Parameters<2>. + (line 20) +* gsl_multiroot_test_residual (C function): Search Stopping Parameters<2>. + (line 32) +* gsl_multiset (C type): The Multiset struct. (line 6) +* gsl_multiset_alloc (C function): Multiset allocation. (line 6) +* gsl_multiset_calloc (C function): Multiset allocation. (line 16) +* gsl_multiset_data (C function): Multiset properties. (line 15) +* gsl_multiset_fprintf (C function): Reading and writing multisets. + (line 28) +* gsl_multiset_fread (C function): Reading and writing multisets. + (line 18) +* gsl_multiset_free (C function): Multiset allocation. (line 33) +* gsl_multiset_fscanf (C function): Reading and writing multisets. + (line 38) +* gsl_multiset_fwrite (C function): Reading and writing multisets. + (line 9) +* gsl_multiset_get (C function): Accessing multiset elements. + (line 8) +* gsl_multiset_init_first (C function): Multiset allocation. (line 23) +* gsl_multiset_init_last (C function): Multiset allocation. (line 28) +* gsl_multiset_k (C function): Multiset properties. (line 10) +* gsl_multiset_memcpy (C function): Multiset allocation. (line 37) +* gsl_multiset_n (C function): Multiset properties. (line 6) +* gsl_multiset_next (C function): Multiset functions. (line 6) +* gsl_multiset_prev (C function): Multiset functions. (line 15) +* gsl_multiset_valid (C function): Multiset properties. (line 20) +* GSL_NAN (C macro): Infinities and Not-a-number. + (line 16) +* GSL_NEGINF (C macro): Infinities and Not-a-number. + (line 11) +* gsl_ntuple (C type): The ntuple struct. (line 6) +* gsl_ntuple_bookdata (C function): Writing ntuples. (line 11) +* gsl_ntuple_close (C function): Closing an ntuple file. + (line 6) +* gsl_ntuple_create (C function): Creating ntuples. (line 6) +* gsl_ntuple_open (C function): Opening an existing ntuple file. + (line 6) +* gsl_ntuple_project (C function): Histogramming ntuple values. + (line 41) +* gsl_ntuple_read (C function): Reading ntuples. (line 6) +* gsl_ntuple_select_fn (C type): Histogramming ntuple values. + (line 13) +* gsl_ntuple_value_fn (C type): Histogramming ntuple values. + (line 27) +* gsl_ntuple_write (C function): Writing ntuples. (line 6) +* gsl_odeiv2_control (C type): Adaptive Step-size Control. + (line 10) +* gsl_odeiv2_control_alloc (C function): Adaptive Step-size Control. + (line 87) +* gsl_odeiv2_control_errlevel (C function): Adaptive Step-size Control. + (line 135) +* gsl_odeiv2_control_free (C function): Adaptive Step-size Control. + (line 104) +* gsl_odeiv2_control_hadjust (C function): Adaptive Step-size Control. + (line 109) +* gsl_odeiv2_control_init (C function): Adaptive Step-size Control. + (line 95) +* gsl_odeiv2_control_name (C function): Adaptive Step-size Control. + (line 125) +* gsl_odeiv2_control_scaled_new (C function): Adaptive Step-size Control. + (line 72) +* gsl_odeiv2_control_set_driver (C function): Adaptive Step-size Control. + (line 145) +* gsl_odeiv2_control_standard_new (C function): Adaptive Step-size Control. + (line 18) +* gsl_odeiv2_control_type (C type): Adaptive Step-size Control. + (line 14) +* gsl_odeiv2_control_yp_new (C function): Adaptive Step-size Control. + (line 63) +* gsl_odeiv2_control_y_new (C function): Adaptive Step-size Control. + (line 54) +* gsl_odeiv2_driver_alloc_scaled_new (C function): Driver. (line 9) +* gsl_odeiv2_driver_alloc_standard_new (C function): Driver. (line 9) +* gsl_odeiv2_driver_alloc_yp_new (C function): Driver. (line 9) +* gsl_odeiv2_driver_alloc_y_new (C function): Driver. (line 9) +* gsl_odeiv2_driver_apply (C function): Driver. (line 51) +* gsl_odeiv2_driver_apply_fixed_step (C function): Driver. (line 69) +* gsl_odeiv2_driver_free (C function): Driver. (line 92) +* gsl_odeiv2_driver_reset (C function): Driver. (line 81) +* gsl_odeiv2_driver_reset_hstart (C function): Driver. (line 85) +* gsl_odeiv2_driver_set_hmax (C function): Driver. (line 39) +* gsl_odeiv2_driver_set_hmin (C function): Driver. (line 33) +* gsl_odeiv2_driver_set_nmax (C function): Driver. (line 45) +* gsl_odeiv2_evolve (C type): Evolution. (line 10) +* gsl_odeiv2_evolve_alloc (C function): Evolution. (line 15) +* gsl_odeiv2_evolve_apply (C function): Evolution. (line 20) +* gsl_odeiv2_evolve_apply_fixed_step (C function): Evolution. (line 60) +* gsl_odeiv2_evolve_free (C function): Evolution. (line 79) +* gsl_odeiv2_evolve_reset (C function): Evolution. (line 73) +* gsl_odeiv2_evolve_set_driver (C function): Evolution. (line 84) +* gsl_odeiv2_step (C type): Stepping Functions. (line 10) +* gsl_odeiv2_step_alloc (C function): Stepping Functions. (line 14) +* gsl_odeiv2_step_apply (C function): Stepping Functions. (line 63) +* gsl_odeiv2_step_bsimp (C variable): Stepping Functions. (line 150) +* gsl_odeiv2_step_free (C function): Stepping Functions. (line 29) +* gsl_odeiv2_step_msadams (C variable): Stepping Functions. (line 156) +* gsl_odeiv2_step_msbdf (C variable): Stepping Functions. (line 166) +* gsl_odeiv2_step_name (C function): Stepping Functions. (line 34) +* gsl_odeiv2_step_order (C function): Stepping Functions. (line 45) +* gsl_odeiv2_step_reset (C function): Stepping Functions. (line 23) +* gsl_odeiv2_step_rk1imp (C variable): Stepping Functions. (line 127) +* gsl_odeiv2_step_rk2 (C variable): Stepping Functions. (line 103) +* gsl_odeiv2_step_rk2imp (C variable): Stepping Functions. (line 135) +* gsl_odeiv2_step_rk4 (C variable): Stepping Functions. (line 107) +* gsl_odeiv2_step_rk4imp (C variable): Stepping Functions. (line 143) +* gsl_odeiv2_step_rk8pd (C variable): Stepping Functions. (line 123) +* gsl_odeiv2_step_rkck (C variable): Stepping Functions. (line 119) +* gsl_odeiv2_step_rkf45 (C variable): Stepping Functions. (line 114) +* gsl_odeiv2_step_set_driver (C function): Stepping Functions. + (line 53) +* gsl_odeiv2_step_type (C type): Stepping Functions. (line 101) +* gsl_odeiv2_system (C type): Defining the ODE System. + (line 18) +* gsl_permutation (C type): The Permutation struct. + (line 6) +* gsl_permutation_alloc (C function): Permutation allocation. + (line 6) +* gsl_permutation_calloc (C function): Permutation allocation. + (line 15) +* gsl_permutation_canonical_cycles (C function): Permutations in cyclic form. + (line 75) +* gsl_permutation_canonical_to_linear (C function): Permutations in cyclic form. + (line 52) +* gsl_permutation_data (C function): Permutation properties. + (line 10) +* gsl_permutation_fprintf (C function): Reading and writing permutations. + (line 30) +* gsl_permutation_fread (C function): Reading and writing permutations. + (line 18) +* gsl_permutation_free (C function): Permutation allocation. + (line 26) +* gsl_permutation_fscanf (C function): Reading and writing permutations. + (line 40) +* gsl_permutation_fwrite (C function): Reading and writing permutations. + (line 9) +* gsl_permutation_get (C function): Accessing permutation elements. + (line 9) +* gsl_permutation_init (C function): Permutation allocation. + (line 21) +* gsl_permutation_inverse (C function): Permutation functions. + (line 10) +* gsl_permutation_inversions (C function): Permutations in cyclic form. + (line 59) +* gsl_permutation_linear_cycles (C function): Permutations in cyclic form. + (line 69) +* gsl_permutation_linear_to_canonical (C function): Permutations in cyclic form. + (line 45) +* gsl_permutation_memcpy (C function): Permutation allocation. + (line 30) +* gsl_permutation_mul (C function): Applying Permutations. + (line 49) +* gsl_permutation_next (C function): Permutation functions. + (line 16) +* gsl_permutation_prev (C function): Permutation functions. + (line 25) +* gsl_permutation_reverse (C function): Permutation functions. + (line 6) +* gsl_permutation_size (C function): Permutation properties. + (line 6) +* gsl_permutation_swap (C function): Accessing permutation elements. + (line 17) +* gsl_permutation_valid (C function): Permutation properties. + (line 15) +* gsl_permute (C function): Applying Permutations. + (line 6) +* gsl_permute_inverse (C function): Applying Permutations. + (line 12) +* gsl_permute_matrix (C function): Applying Permutations. + (line 39) +* gsl_permute_vector (C function): Applying Permutations. + (line 19) +* gsl_permute_vector_inverse (C function): Applying Permutations. + (line 28) +* gsl_poly_complex_eval (C function): Polynomial Evaluation. + (line 19) +* gsl_poly_complex_solve (C function): General Polynomial Equations. + (line 34) +* gsl_poly_complex_solve_cubic (C function): Cubic Equations. (line 25) +* gsl_poly_complex_solve_quadratic (C function): Quadratic Equations. + (line 30) +* gsl_poly_complex_workspace (C type): General Polynomial Equations. + (line 11) +* gsl_poly_complex_workspace_alloc (C function): General Polynomial Equations. + (line 16) +* gsl_poly_complex_workspace_free (C function): General Polynomial Equations. + (line 28) +* gsl_poly_dd_eval (C function): Divided Difference Representation of Polynomials. + (line 41) +* gsl_poly_dd_hermite_init (C function): Divided Difference Representation of Polynomials. + (line 61) +* gsl_poly_dd_init (C function): Divided Difference Representation of Polynomials. + (line 32) +* gsl_poly_dd_taylor (C function): Divided Difference Representation of Polynomials. + (line 49) +* gsl_poly_eval (C function): Polynomial Evaluation. + (line 13) +* gsl_poly_eval_derivs (C function): Polynomial Evaluation. + (line 32) +* gsl_poly_solve_cubic (C function): Cubic Equations. (line 6) +* gsl_poly_solve_quadratic (C function): Quadratic Equations. (line 6) +* GSL_POSINF (C macro): Infinities and Not-a-number. + (line 6) +* gsl_pow_2 (C function): Small integer powers. + (line 20) +* gsl_pow_3 (C function): Small integer powers. + (line 20) +* gsl_pow_4 (C function): Small integer powers. + (line 20) +* gsl_pow_5 (C function): Small integer powers. + (line 20) +* gsl_pow_6 (C function): Small integer powers. + (line 20) +* gsl_pow_7 (C function): Small integer powers. + (line 20) +* gsl_pow_8 (C function): Small integer powers. + (line 20) +* gsl_pow_9 (C function): Small integer powers. + (line 20) +* gsl_pow_int (C function): Small integer powers. + (line 11) +* gsl_pow_uint (C function): Small integer powers. + (line 11) +* GSL_PREC_APPROX (C macro): Modes. (line 26) +* GSL_PREC_DOUBLE (C macro): Modes. (line 16) +* GSL_PREC_SINGLE (C macro): Modes. (line 21) +* gsl_qrng (C type): Quasi-random number generator initialization. + (line 6) +* gsl_qrng_alloc (C function): Quasi-random number generator initialization. + (line 10) +* gsl_qrng_clone (C function): Saving and restoring quasi-random number generator state. + (line 13) +* gsl_qrng_free (C function): Quasi-random number generator initialization. + (line 19) +* gsl_qrng_get (C function): Sampling from a quasi-random number generator. + (line 6) +* gsl_qrng_halton (C variable): Quasi-random number generator algorithms. + (line 22) +* gsl_qrng_init (C function): Quasi-random number generator initialization. + (line 24) +* gsl_qrng_memcpy (C function): Saving and restoring quasi-random number generator state. + (line 6) +* gsl_qrng_name (C function): Auxiliary quasi-random number generator functions. + (line 6) +* gsl_qrng_niederreiter_2 (C variable): Quasi-random number generator algorithms. + (line 10) +* gsl_qrng_reversehalton (C variable): Quasi-random number generator algorithms. + (line 22) +* gsl_qrng_size (C function): Auxiliary quasi-random number generator functions. + (line 10) +* gsl_qrng_sobol (C variable): Quasi-random number generator algorithms. + (line 16) +* gsl_qrng_state (C function): Auxiliary quasi-random number generator functions. + (line 10) +* gsl_qrng_type (C type): Quasi-random number generator algorithms. + (line 8) +* GSL_RANGE_CHECK_OFF (C macro): Accessing vector elements. + (line 17) +* gsl_ran_bernoulli (C function): The Bernoulli Distribution. + (line 6) +* gsl_ran_bernoulli_pdf (C function): The Bernoulli Distribution. + (line 16) +* gsl_ran_beta (C function): The Beta Distribution. + (line 6) +* gsl_ran_beta_pdf (C function): The Beta Distribution. + (line 16) +* gsl_ran_binomial (C function): The Binomial Distribution. + (line 6) +* gsl_ran_binomial_pdf (C function): The Binomial Distribution. + (line 18) +* gsl_ran_bivariate_gaussian (C function): The Bivariate Gaussian Distribution. + (line 6) +* gsl_ran_bivariate_gaussian_pdf (C function): The Bivariate Gaussian Distribution. + (line 21) +* gsl_ran_cauchy (C function): The Cauchy Distribution. + (line 6) +* gsl_ran_cauchy_pdf (C function): The Cauchy Distribution. + (line 17) +* gsl_ran_chisq (C function): The Chi-squared Distribution. + (line 14) +* gsl_ran_chisq_pdf (C function): The Chi-squared Distribution. + (line 24) +* gsl_ran_choose (C function): Shuffling and Sampling. + (line 34) +* gsl_ran_dirichlet (C function): The Dirichlet Distribution. + (line 6) +* gsl_ran_dirichlet_lnpdf (C function): The Dirichlet Distribution. + (line 33) +* gsl_ran_dirichlet_pdf (C function): The Dirichlet Distribution. + (line 26) +* gsl_ran_dir_2d (C function): Spherical Vector Distributions. + (line 10) +* gsl_ran_dir_2d_trig_method (C function): Spherical Vector Distributions. + (line 10) +* gsl_ran_dir_3d (C function): Spherical Vector Distributions. + (line 32) +* gsl_ran_dir_nd (C function): Spherical Vector Distributions. + (line 42) +* gsl_ran_discrete (C function): General Discrete Distributions. + (line 65) +* gsl_ran_discrete_free (C function): General Discrete Distributions. + (line 80) +* gsl_ran_discrete_pdf (C function): General Discrete Distributions. + (line 71) +* gsl_ran_discrete_preproc (C function): General Discrete Distributions. + (line 54) +* gsl_ran_discrete_t (C type): General Discrete Distributions. + (line 49) +* gsl_ran_exponential (C function): The Exponential Distribution. + (line 6) +* gsl_ran_exponential_pdf (C function): The Exponential Distribution. + (line 15) +* gsl_ran_exppow (C function): The Exponential Power Distribution. + (line 6) +* gsl_ran_exppow_pdf (C function): The Exponential Power Distribution. + (line 20) +* gsl_ran_fdist (C function): The F-distribution. (line 13) +* gsl_ran_fdist_pdf (C function): The F-distribution. (line 28) +* gsl_ran_flat (C function): The Flat Uniform Distribution. + (line 6) +* gsl_ran_flat_pdf (C function): The Flat Uniform Distribution. + (line 16) +* gsl_ran_gamma (C function): The Gamma Distribution. + (line 6) +* gsl_ran_gamma_knuth (C function): The Gamma Distribution. + (line 23) +* gsl_ran_gamma_pdf (C function): The Gamma Distribution. + (line 30) +* gsl_ran_gaussian (C function): The Gaussian Distribution. + (line 6) +* gsl_ran_gaussian_pdf (C function): The Gaussian Distribution. + (line 20) +* gsl_ran_gaussian_ratio_method (C function): The Gaussian Distribution. + (line 27) +* gsl_ran_gaussian_tail (C function): The Gaussian Tail Distribution. + (line 6) +* gsl_ran_gaussian_tail_pdf (C function): The Gaussian Tail Distribution. + (line 25) +* gsl_ran_gaussian_ziggurat (C function): The Gaussian Distribution. + (line 27) +* gsl_ran_geometric (C function): The Geometric Distribution. + (line 6) +* gsl_ran_geometric_pdf (C function): The Geometric Distribution. + (line 20) +* gsl_ran_gumbel1 (C function): The Type-1 Gumbel Distribution. + (line 6) +* gsl_ran_gumbel1_pdf (C function): The Type-1 Gumbel Distribution. + (line 17) +* gsl_ran_gumbel2 (C function): The Type-2 Gumbel Distribution. + (line 6) +* gsl_ran_gumbel2_pdf (C function): The Type-2 Gumbel Distribution. + (line 17) +* gsl_ran_hypergeometric (C function): The Hypergeometric Distribution. + (line 6) +* gsl_ran_hypergeometric_pdf (C function): The Hypergeometric Distribution. + (line 23) +* gsl_ran_landau (C function): The Landau Distribution. + (line 6) +* gsl_ran_landau_pdf (C function): The Landau Distribution. + (line 19) +* gsl_ran_laplace (C function): The Laplace Distribution. + (line 6) +* gsl_ran_laplace_pdf (C function): The Laplace Distribution. + (line 15) +* gsl_ran_levy (C function): The Levy alpha-Stable Distributions. + (line 6) +* gsl_ran_levy_skew (C function): The Levy skew alpha-Stable Distribution. + (line 6) +* gsl_ran_logarithmic (C function): The Logarithmic Distribution. + (line 6) +* gsl_ran_logarithmic_pdf (C function): The Logarithmic Distribution. + (line 18) +* gsl_ran_logistic (C function): The Logistic Distribution. + (line 6) +* gsl_ran_logistic_pdf (C function): The Logistic Distribution. + (line 15) +* gsl_ran_lognormal (C function): The Lognormal Distribution. + (line 6) +* gsl_ran_lognormal_pdf (C function): The Lognormal Distribution. + (line 17) +* gsl_ran_multinomial (C function): The Multinomial Distribution. + (line 6) +* gsl_ran_multinomial_lnpdf (C function): The Multinomial Distribution. + (line 35) +* gsl_ran_multinomial_pdf (C function): The Multinomial Distribution. + (line 28) +* gsl_ran_multivariate_gaussian (C function): The Multivariate Gaussian Distribution. + (line 6) +* gsl_ran_multivariate_gaussian_log_pdf (C function): The Multivariate Gaussian Distribution. + (line 21) +* gsl_ran_multivariate_gaussian_mean (C function): The Multivariate Gaussian Distribution. + (line 33) +* gsl_ran_multivariate_gaussian_pdf (C function): The Multivariate Gaussian Distribution. + (line 21) +* gsl_ran_multivariate_gaussian_vcov (C function): The Multivariate Gaussian Distribution. + (line 47) +* gsl_ran_negative_binomial (C function): The Negative Binomial Distribution. + (line 6) +* gsl_ran_negative_binomial_pdf (C function): The Negative Binomial Distribution. + (line 18) +* gsl_ran_pareto (C function): The Pareto Distribution. + (line 6) +* gsl_ran_pareto_pdf (C function): The Pareto Distribution. + (line 17) +* gsl_ran_pascal (C function): The Pascal Distribution. + (line 6) +* gsl_ran_pascal_pdf (C function): The Pascal Distribution. + (line 17) +* gsl_ran_poisson (C function): The Poisson Distribution. + (line 6) +* gsl_ran_poisson_pdf (C function): The Poisson Distribution. + (line 17) +* gsl_ran_rayleigh (C function): The Rayleigh Distribution. + (line 6) +* gsl_ran_rayleigh_pdf (C function): The Rayleigh Distribution. + (line 15) +* gsl_ran_rayleigh_tail (C function): The Rayleigh Tail Distribution. + (line 6) +* gsl_ran_rayleigh_tail_pdf (C function): The Rayleigh Tail Distribution. + (line 17) +* gsl_ran_sample (C function): Shuffling and Sampling. + (line 64) +* gsl_ran_shuffle (C function): Shuffling and Sampling. + (line 13) +* gsl_ran_tdist (C function): The t-distribution. (line 14) +* gsl_ran_tdist_pdf (C function): The t-distribution. (line 23) +* gsl_ran_ugaussian (C function): The Gaussian Distribution. + (line 39) +* gsl_ran_ugaussian_pdf (C function): The Gaussian Distribution. + (line 39) +* gsl_ran_ugaussian_ratio_method (C function): The Gaussian Distribution. + (line 39) +* gsl_ran_ugaussian_tail (C function): The Gaussian Tail Distribution. + (line 34) +* gsl_ran_ugaussian_tail_pdf (C function): The Gaussian Tail Distribution. + (line 34) +* gsl_ran_weibull (C function): The Weibull Distribution. + (line 6) +* gsl_ran_weibull_pdf (C function): The Weibull Distribution. + (line 17) +* gsl_ran_wishart (C function): The Wishart Distribution. + (line 6) +* gsl_ran_wishart_log_pdf (C function): The Wishart Distribution. + (line 21) +* gsl_ran_wishart_pdf (C function): The Wishart Distribution. + (line 21) +* GSL_REAL (C macro): Representation of complex numbers. + (line 36) +* gsl_rng (C type): The Random Number Generator Interface. + (line 18) +* gsl_rng_alloc (C function): Random number generator initialization. + (line 6) +* gsl_rng_borosh13 (C variable): Other random number generators. + (line 193) +* gsl_rng_clone (C function): Copying random number generator state. + (line 17) +* gsl_rng_cmrg (C variable): Random number generator algorithms. + (line 103) +* gsl_rng_coveyou (C variable): Other random number generators. + (line 222) +* gsl_rng_default (C variable): Random number environment variables. + (line 23) +* gsl_rng_default_seed (C variable): Random number environment variables. + (line 31) +* gsl_rng_env_setup (C function): Random number environment variables. + (line 40) +* gsl_rng_fishman18 (C variable): Other random number generators. + (line 193) +* gsl_rng_fishman20 (C variable): Other random number generators. + (line 193) +* gsl_rng_fishman2x (C variable): Other random number generators. + (line 211) +* gsl_rng_fread (C function): Reading and writing random number generator state. + (line 18) +* gsl_rng_free (C function): Random number generator initialization. + (line 47) +* gsl_rng_fwrite (C function): Reading and writing random number generator state. + (line 9) +* gsl_rng_get (C function): Sampling from a random number generator. + (line 12) +* gsl_rng_gfsr4 (C variable): Random number generator algorithms. + (line 181) +* gsl_rng_knuthran (C variable): Other random number generators. + (line 183) +* gsl_rng_knuthran2 (C variable): Other random number generators. + (line 173) +* gsl_rng_knuthran2002 (C variable): Other random number generators. + (line 183) +* gsl_rng_lecuyer21 (C variable): Other random number generators. + (line 193) +* gsl_rng_max (C function): Auxiliary random number generator functions. + (line 21) +* gsl_rng_memcpy (C function): Copying random number generator state. + (line 11) +* gsl_rng_min (C function): Auxiliary random number generator functions. + (line 26) +* gsl_rng_minstd (C variable): Other random number generators. + (line 123) +* gsl_rng_mrg (C variable): Random number generator algorithms. + (line 126) +* gsl_rng_mt19937 (C variable): Random number generator algorithms. + (line 19) +* gsl_rng_name (C function): Auxiliary random number generator functions. + (line 10) +* gsl_rng_r250 (C variable): Other random number generators. + (line 62) +* gsl_rng_rand (C variable): Unix random number generators. + (line 17) +* gsl_rng_rand48 (C variable): Unix random number generators. + (line 59) +* gsl_rng_random_bsd (C variable): Unix random number generators. + (line 27) +* gsl_rng_random_glibc2 (C variable): Unix random number generators. + (line 27) +* gsl_rng_random_libc5 (C variable): Unix random number generators. + (line 27) +* gsl_rng_randu (C variable): Other random number generators. + (line 113) +* gsl_rng_ranf (C variable): Other random number generators. + (line 22) +* gsl_rng_ranlux (C variable): Random number generator algorithms. + (line 74) +* gsl_rng_ranlux389 (C variable): Random number generator algorithms. + (line 74) +* gsl_rng_ranlxd1 (C variable): Random number generator algorithms. + (line 67) +* gsl_rng_ranlxd2 (C variable): Random number generator algorithms. + (line 67) +* gsl_rng_ranlxs0 (C variable): Random number generator algorithms. + (line 47) +* gsl_rng_ranlxs1 (C variable): Random number generator algorithms. + (line 47) +* gsl_rng_ranlxs2 (C variable): Random number generator algorithms. + (line 47) +* gsl_rng_ranmar (C variable): Other random number generators. + (line 55) +* GSL_RNG_SEED (C macro): Random number environment variables. + (line 18) +* gsl_rng_set (C function): Random number generator initialization. + (line 26) +* gsl_rng_size (C function): Auxiliary random number generator functions. + (line 33) +* gsl_rng_slatec (C variable): Other random number generators. + (line 153) +* gsl_rng_state (C function): Auxiliary random number generator functions. + (line 33) +* gsl_rng_taus (C variable): Random number generator algorithms. + (line 144) +* gsl_rng_taus2 (C variable): Random number generator algorithms. + (line 144) +* gsl_rng_transputer (C variable): Other random number generators. + (line 103) +* gsl_rng_tt800 (C variable): Other random number generators. + (line 79) +* GSL_RNG_TYPE (C macro): Random number environment variables. + (line 12) +* gsl_rng_type (C type): The Random Number Generator Interface. + (line 18) +* gsl_rng_types_setup (C function): Auxiliary random number generator functions. + (line 45) +* gsl_rng_uni (C variable): Other random number generators. + (line 145) +* gsl_rng_uni32 (C variable): Other random number generators. + (line 145) +* gsl_rng_uniform (C function): Sampling from a random number generator. + (line 20) +* gsl_rng_uniform_int (C function): Sampling from a random number generator. + (line 40) +* gsl_rng_uniform_pos (C function): Sampling from a random number generator. + (line 31) +* gsl_rng_vax (C variable): Other random number generators. + (line 93) +* gsl_rng_waterman14 (C variable): Other random number generators. + (line 193) +* gsl_rng_zuf (C variable): Other random number generators. + (line 158) +* gsl_root_fdfsolver (C type): Initializing the Solver. + (line 11) +* gsl_root_fdfsolver_alloc (C function): Initializing the Solver. + (line 30) +* gsl_root_fdfsolver_free (C function): Initializing the Solver. + (line 58) +* gsl_root_fdfsolver_iterate (C function): Iteration. (line 12) +* gsl_root_fdfsolver_name (C function): Initializing the Solver. + (line 63) +* gsl_root_fdfsolver_newton (C variable): Root Finding Algorithms using Derivatives. + (line 17) +* gsl_root_fdfsolver_root (C function): Iteration. (line 35) +* gsl_root_fdfsolver_secant (C variable): Root Finding Algorithms using Derivatives. + (line 31) +* gsl_root_fdfsolver_set (C function): Initializing the Solver. + (line 51) +* gsl_root_fdfsolver_steffenson (C variable): Root Finding Algorithms using Derivatives. + (line 62) +* gsl_root_fdfsolver_type (C type): Root Finding Algorithms using Derivatives. + (line 15) +* gsl_root_fsolver (C type): Initializing the Solver. + (line 6) +* gsl_root_fsolver_alloc (C function): Initializing the Solver. + (line 16) +* gsl_root_fsolver_bisection (C variable): Root Bracketing Algorithms. + (line 18) +* gsl_root_fsolver_brent (C variable): Root Bracketing Algorithms. + (line 52) +* gsl_root_fsolver_falsepos (C variable): Root Bracketing Algorithms. + (line 34) +* gsl_root_fsolver_free (C function): Initializing the Solver. + (line 58) +* gsl_root_fsolver_iterate (C function): Iteration. (line 12) +* gsl_root_fsolver_name (C function): Initializing the Solver. + (line 63) +* gsl_root_fsolver_root (C function): Iteration. (line 35) +* gsl_root_fsolver_set (C function): Initializing the Solver. + (line 44) +* gsl_root_fsolver_type (C type): Root Bracketing Algorithms. + (line 16) +* gsl_root_fsolver_x_lower (C function): Iteration. (line 43) +* gsl_root_fsolver_x_upper (C function): Iteration. (line 43) +* gsl_root_test_delta (C function): Search Stopping Parameters. + (line 43) +* gsl_root_test_interval (C function): Search Stopping Parameters. + (line 19) +* gsl_root_test_residual (C function): Search Stopping Parameters. + (line 54) +* gsl_rstat_add (C function): Adding Data to the Accumulator. + (line 6) +* gsl_rstat_alloc (C function): Initializing the Accumulator. + (line 12) +* gsl_rstat_free (C function): Initializing the Accumulator. + (line 17) +* gsl_rstat_kurtosis (C function): Current Statistics. (line 55) +* gsl_rstat_max (C function): Current Statistics. (line 10) +* gsl_rstat_mean (C function): Current Statistics. (line 14) +* gsl_rstat_median (C function): Current Statistics. (line 62) +* gsl_rstat_min (C function): Current Statistics. (line 6) +* gsl_rstat_n (C function): Adding Data to the Accumulator. + (line 13) +* gsl_rstat_quantile_add (C function): Quantiles. (line 36) +* gsl_rstat_quantile_alloc (C function): Quantiles. (line 18) +* gsl_rstat_quantile_free (C function): Quantiles. (line 25) +* gsl_rstat_quantile_get (C function): Quantiles. (line 42) +* gsl_rstat_quantile_reset (C function): Quantiles. (line 30) +* gsl_rstat_quantile_workspace (C type): Quantiles. (line 13) +* gsl_rstat_reset (C function): Initializing the Accumulator. + (line 21) +* gsl_rstat_rms (C function): Current Statistics. (line 41) +* gsl_rstat_sd (C function): Current Statistics. (line 28) +* gsl_rstat_sd_mean (C function): Current Statistics. (line 34) +* gsl_rstat_skew (C function): Current Statistics. (line 48) +* gsl_rstat_variance (C function): Current Statistics. (line 21) +* gsl_rstat_workspace (C type): Initializing the Accumulator. + (line 6) +* GSL_SET_COMPLEX (C macro): Representation of complex numbers. + (line 42) +* gsl_set_error_handler (C function): Error Handlers. (line 43) +* gsl_set_error_handler_off (C function): Error Handlers. (line 69) +* GSL_SET_IMAG (C macro): Representation of complex numbers. + (line 52) +* GSL_SET_REAL (C macro): Representation of complex numbers. + (line 52) +* gsl_sf_airy_Ai (C function): Airy Functions. (line 6) +* gsl_sf_airy_Ai_deriv (C function): Derivatives of Airy Functions. + (line 6) +* gsl_sf_airy_Ai_deriv_e (C function): Derivatives of Airy Functions. + (line 6) +* gsl_sf_airy_Ai_deriv_scaled (C function): Derivatives of Airy Functions. + (line 20) +* gsl_sf_airy_Ai_deriv_scaled_e (C function): Derivatives of Airy Functions. + (line 20) +* gsl_sf_airy_Ai_e (C function): Airy Functions. (line 6) +* gsl_sf_airy_Ai_scaled (C function): Airy Functions. (line 20) +* gsl_sf_airy_Ai_scaled_e (C function): Airy Functions. (line 20) +* gsl_sf_airy_Bi (C function): Airy Functions. (line 13) +* gsl_sf_airy_Bi_deriv (C function): Derivatives of Airy Functions. + (line 13) +* gsl_sf_airy_Bi_deriv_e (C function): Derivatives of Airy Functions. + (line 13) +* gsl_sf_airy_Bi_deriv_scaled (C function): Derivatives of Airy Functions. + (line 29) +* gsl_sf_airy_Bi_deriv_scaled_e (C function): Derivatives of Airy Functions. + (line 29) +* gsl_sf_airy_Bi_e (C function): Airy Functions. (line 13) +* gsl_sf_airy_Bi_scaled (C function): Airy Functions. (line 28) +* gsl_sf_airy_Bi_scaled_e (C function): Airy Functions. (line 28) +* gsl_sf_airy_zero_Ai (C function): Zeros of Airy Functions. + (line 6) +* gsl_sf_airy_zero_Ai_deriv (C function): Zeros of Derivatives of Airy Functions. + (line 6) +* gsl_sf_airy_zero_Ai_deriv_e (C function): Zeros of Derivatives of Airy Functions. + (line 6) +* gsl_sf_airy_zero_Ai_e (C function): Zeros of Airy Functions. + (line 6) +* gsl_sf_airy_zero_Bi (C function): Zeros of Airy Functions. + (line 14) +* gsl_sf_airy_zero_Bi_deriv (C function): Zeros of Derivatives of Airy Functions. + (line 13) +* gsl_sf_airy_zero_Bi_deriv_e (C function): Zeros of Derivatives of Airy Functions. + (line 13) +* gsl_sf_airy_zero_Bi_e (C function): Zeros of Airy Functions. + (line 14) +* gsl_sf_angle_restrict_pos (C function): Restriction Functions. + (line 16) +* gsl_sf_angle_restrict_pos_e (C function): Restriction Functions. + (line 16) +* gsl_sf_angle_restrict_symm (C function): Restriction Functions. + (line 6) +* gsl_sf_angle_restrict_symm_e (C function): Restriction Functions. + (line 6) +* gsl_sf_atanint (C function): Arctangent Integral. (line 6) +* gsl_sf_atanint_e (C function): Arctangent Integral. (line 6) +* gsl_sf_bessel_I0 (C function): Regular Modified Cylindrical Bessel Functions. + (line 6) +* gsl_sf_bessel_I0_e (C function): Regular Modified Cylindrical Bessel Functions. + (line 6) +* gsl_sf_bessel_I0_scaled (C function): Regular Modified Cylindrical Bessel Functions. + (line 36) +* gsl_sf_bessel_i0_scaled (C function): Regular Modified Spherical Bessel Functions. + (line 10) +* gsl_sf_bessel_I0_scaled_e (C function): Regular Modified Cylindrical Bessel Functions. + (line 36) +* gsl_sf_bessel_i0_scaled_e (C function): Regular Modified Spherical Bessel Functions. + (line 10) +* gsl_sf_bessel_I1 (C function): Regular Modified Cylindrical Bessel Functions. + (line 12) +* gsl_sf_bessel_I1_e (C function): Regular Modified Cylindrical Bessel Functions. + (line 12) +* gsl_sf_bessel_I1_scaled (C function): Regular Modified Cylindrical Bessel Functions. + (line 43) +* gsl_sf_bessel_i1_scaled (C function): Regular Modified Spherical Bessel Functions. + (line 17) +* gsl_sf_bessel_I1_scaled_e (C function): Regular Modified Cylindrical Bessel Functions. + (line 43) +* gsl_sf_bessel_i1_scaled_e (C function): Regular Modified Spherical Bessel Functions. + (line 17) +* gsl_sf_bessel_i2_scaled (C function): Regular Modified Spherical Bessel Functions. + (line 24) +* gsl_sf_bessel_i2_scaled_e (C function): Regular Modified Spherical Bessel Functions. + (line 24) +* gsl_sf_bessel_il_scaled (C function): Regular Modified Spherical Bessel Functions. + (line 31) +* gsl_sf_bessel_il_scaled_array (C function): Regular Modified Spherical Bessel Functions. + (line 38) +* gsl_sf_bessel_il_scaled_e (C function): Regular Modified Spherical Bessel Functions. + (line 31) +* gsl_sf_bessel_In (C function): Regular Modified Cylindrical Bessel Functions. + (line 18) +* gsl_sf_bessel_Inu (C function): Regular Modified Bessel Functions—Fractional Order. + (line 6) +* gsl_sf_bessel_Inu_e (C function): Regular Modified Bessel Functions—Fractional Order. + (line 6) +* gsl_sf_bessel_Inu_scaled (C function): Regular Modified Bessel Functions—Fractional Order. + (line 13) +* gsl_sf_bessel_Inu_scaled_e (C function): Regular Modified Bessel Functions—Fractional Order. + (line 13) +* gsl_sf_bessel_In_array (C function): Regular Modified Cylindrical Bessel Functions. + (line 25) +* gsl_sf_bessel_In_e (C function): Regular Modified Cylindrical Bessel Functions. + (line 18) +* gsl_sf_bessel_In_scaled (C function): Regular Modified Cylindrical Bessel Functions. + (line 50) +* gsl_sf_bessel_In_scaled_array (C function): Regular Modified Cylindrical Bessel Functions. + (line 57) +* gsl_sf_bessel_In_scaled_e (C function): Regular Modified Cylindrical Bessel Functions. + (line 50) +* gsl_sf_bessel_J0 (C function): Regular Cylindrical Bessel Functions. + (line 6) +* gsl_sf_bessel_j0 (C function): Regular Spherical Bessel Functions. + (line 6) +* gsl_sf_bessel_J0_e (C function): Regular Cylindrical Bessel Functions. + (line 6) +* gsl_sf_bessel_j0_e (C function): Regular Spherical Bessel Functions. + (line 6) +* gsl_sf_bessel_J1 (C function): Regular Cylindrical Bessel Functions. + (line 12) +* gsl_sf_bessel_j1 (C function): Regular Spherical Bessel Functions. + (line 12) +* gsl_sf_bessel_J1_e (C function): Regular Cylindrical Bessel Functions. + (line 12) +* gsl_sf_bessel_j1_e (C function): Regular Spherical Bessel Functions. + (line 12) +* gsl_sf_bessel_j2 (C function): Regular Spherical Bessel Functions. + (line 18) +* gsl_sf_bessel_j2_e (C function): Regular Spherical Bessel Functions. + (line 18) +* gsl_sf_bessel_jl (C function): Regular Spherical Bessel Functions. + (line 24) +* gsl_sf_bessel_jl_array (C function): Regular Spherical Bessel Functions. + (line 31) +* gsl_sf_bessel_jl_e (C function): Regular Spherical Bessel Functions. + (line 24) +* gsl_sf_bessel_jl_steed_array (C function): Regular Spherical Bessel Functions. + (line 40) +* gsl_sf_bessel_Jn (C function): Regular Cylindrical Bessel Functions. + (line 18) +* gsl_sf_bessel_Jnu (C function): Regular Bessel Function—Fractional Order. + (line 6) +* gsl_sf_bessel_Jnu_e (C function): Regular Bessel Function—Fractional Order. + (line 6) +* gsl_sf_bessel_Jn_array (C function): Regular Cylindrical Bessel Functions. + (line 25) +* gsl_sf_bessel_Jn_e (C function): Regular Cylindrical Bessel Functions. + (line 18) +* gsl_sf_bessel_K0 (C function): Irregular Modified Cylindrical Bessel Functions. + (line 6) +* gsl_sf_bessel_K0_e (C function): Irregular Modified Cylindrical Bessel Functions. + (line 6) +* gsl_sf_bessel_K0_scaled (C function): Irregular Modified Cylindrical Bessel Functions. + (line 37) +* gsl_sf_bessel_k0_scaled (C function): Irregular Modified Spherical Bessel Functions. + (line 10) +* gsl_sf_bessel_K0_scaled_e (C function): Irregular Modified Cylindrical Bessel Functions. + (line 37) +* gsl_sf_bessel_k0_scaled_e (C function): Irregular Modified Spherical Bessel Functions. + (line 10) +* gsl_sf_bessel_K1 (C function): Irregular Modified Cylindrical Bessel Functions. + (line 12) +* gsl_sf_bessel_K1_e (C function): Irregular Modified Cylindrical Bessel Functions. + (line 12) +* gsl_sf_bessel_K1_scaled (C function): Irregular Modified Cylindrical Bessel Functions. + (line 44) +* gsl_sf_bessel_k1_scaled (C function): Irregular Modified Spherical Bessel Functions. + (line 17) +* gsl_sf_bessel_K1_scaled_e (C function): Irregular Modified Cylindrical Bessel Functions. + (line 44) +* gsl_sf_bessel_k1_scaled_e (C function): Irregular Modified Spherical Bessel Functions. + (line 17) +* gsl_sf_bessel_k2_scaled (C function): Irregular Modified Spherical Bessel Functions. + (line 24) +* gsl_sf_bessel_k2_scaled_e (C function): Irregular Modified Spherical Bessel Functions. + (line 24) +* gsl_sf_bessel_kl_scaled (C function): Irregular Modified Spherical Bessel Functions. + (line 31) +* gsl_sf_bessel_kl_scaled_array (C function): Irregular Modified Spherical Bessel Functions. + (line 38) +* gsl_sf_bessel_kl_scaled_e (C function): Irregular Modified Spherical Bessel Functions. + (line 31) +* gsl_sf_bessel_Kn (C function): Irregular Modified Cylindrical Bessel Functions. + (line 18) +* gsl_sf_bessel_Knu (C function): Irregular Modified Bessel Functions—Fractional Order. + (line 6) +* gsl_sf_bessel_Knu_e (C function): Irregular Modified Bessel Functions—Fractional Order. + (line 6) +* gsl_sf_bessel_Knu_scaled (C function): Irregular Modified Bessel Functions—Fractional Order. + (line 21) +* gsl_sf_bessel_Knu_scaled_e (C function): Irregular Modified Bessel Functions—Fractional Order. + (line 21) +* gsl_sf_bessel_Kn_array (C function): Irregular Modified Cylindrical Bessel Functions. + (line 25) +* gsl_sf_bessel_Kn_e (C function): Irregular Modified Cylindrical Bessel Functions. + (line 18) +* gsl_sf_bessel_Kn_scaled (C function): Irregular Modified Cylindrical Bessel Functions. + (line 51) +* gsl_sf_bessel_Kn_scaled_array (C function): Irregular Modified Cylindrical Bessel Functions. + (line 58) +* gsl_sf_bessel_Kn_scaled_e (C function): Irregular Modified Cylindrical Bessel Functions. + (line 51) +* gsl_sf_bessel_lnKnu (C function): Irregular Modified Bessel Functions—Fractional Order. + (line 13) +* gsl_sf_bessel_lnKnu_e (C function): Irregular Modified Bessel Functions—Fractional Order. + (line 13) +* gsl_sf_bessel_sequence_Jnu_e (C function): Regular Bessel Function—Fractional Order. + (line 13) +* gsl_sf_bessel_Y0 (C function): Irregular Cylindrical Bessel Functions. + (line 6) +* gsl_sf_bessel_y0 (C function): Irregular Spherical Bessel Functions. + (line 6) +* gsl_sf_bessel_Y0_e (C function): Irregular Cylindrical Bessel Functions. + (line 6) +* gsl_sf_bessel_y0_e (C function): Irregular Spherical Bessel Functions. + (line 6) +* gsl_sf_bessel_Y1 (C function): Irregular Cylindrical Bessel Functions. + (line 12) +* gsl_sf_bessel_y1 (C function): Irregular Spherical Bessel Functions. + (line 12) +* gsl_sf_bessel_Y1_e (C function): Irregular Cylindrical Bessel Functions. + (line 12) +* gsl_sf_bessel_y1_e (C function): Irregular Spherical Bessel Functions. + (line 12) +* gsl_sf_bessel_y2 (C function): Irregular Spherical Bessel Functions. + (line 18) +* gsl_sf_bessel_y2_e (C function): Irregular Spherical Bessel Functions. + (line 18) +* gsl_sf_bessel_yl (C function): Irregular Spherical Bessel Functions. + (line 24) +* gsl_sf_bessel_yl_array (C function): Irregular Spherical Bessel Functions. + (line 31) +* gsl_sf_bessel_yl_e (C function): Irregular Spherical Bessel Functions. + (line 24) +* gsl_sf_bessel_Yn (C function): Irregular Cylindrical Bessel Functions. + (line 18) +* gsl_sf_bessel_Ynu (C function): Irregular Bessel Functions—Fractional Order. + (line 6) +* gsl_sf_bessel_Ynu_e (C function): Irregular Bessel Functions—Fractional Order. + (line 6) +* gsl_sf_bessel_Yn_array (C function): Irregular Cylindrical Bessel Functions. + (line 25) +* gsl_sf_bessel_Yn_e (C function): Irregular Cylindrical Bessel Functions. + (line 18) +* gsl_sf_bessel_zero_J0 (C function): Zeros of Regular Bessel Functions. + (line 6) +* gsl_sf_bessel_zero_J0_e (C function): Zeros of Regular Bessel Functions. + (line 6) +* gsl_sf_bessel_zero_J1 (C function): Zeros of Regular Bessel Functions. + (line 13) +* gsl_sf_bessel_zero_J1_e (C function): Zeros of Regular Bessel Functions. + (line 13) +* gsl_sf_bessel_zero_Jnu (C function): Zeros of Regular Bessel Functions. + (line 20) +* gsl_sf_bessel_zero_Jnu_e (C function): Zeros of Regular Bessel Functions. + (line 20) +* gsl_sf_beta (C function): Beta Functions. (line 6) +* gsl_sf_beta_e (C function): Beta Functions. (line 6) +* gsl_sf_beta_inc (C function): Incomplete Beta Function. + (line 6) +* gsl_sf_beta_inc_e (C function): Incomplete Beta Function. + (line 6) +* gsl_sf_Chi (C function): Hyperbolic Integrals. + (line 13) +* gsl_sf_Chi_e (C function): Hyperbolic Integrals. + (line 13) +* gsl_sf_choose (C function): Factorials. (line 44) +* gsl_sf_choose_e (C function): Factorials. (line 44) +* gsl_sf_Ci (C function): Trigonometric Integrals. + (line 13) +* gsl_sf_Ci_e (C function): Trigonometric Integrals. + (line 13) +* gsl_sf_clausen (C function): Clausen Functions. (line 14) +* gsl_sf_clausen_e (C function): Clausen Functions. (line 14) +* gsl_sf_complex_cos_e (C function): Trigonometric Functions for Complex Arguments. + (line 12) +* gsl_sf_complex_dilog_e (C function): Complex Argument. (line 6) +* gsl_sf_complex_logsin_e (C function): Trigonometric Functions for Complex Arguments. + (line 18) +* gsl_sf_complex_log_e (C function): Logarithm and Related Functions. + (line 21) +* gsl_sf_complex_sin_e (C function): Trigonometric Functions for Complex Arguments. + (line 6) +* gsl_sf_conicalP_0 (C function): Conical Functions. (line 24) +* gsl_sf_conicalP_0_e (C function): Conical Functions. (line 24) +* gsl_sf_conicalP_1 (C function): Conical Functions. (line 31) +* gsl_sf_conicalP_1_e (C function): Conical Functions. (line 31) +* gsl_sf_conicalP_cyl_reg (C function): Conical Functions. (line 48) +* gsl_sf_conicalP_cyl_reg_e (C function): Conical Functions. (line 48) +* gsl_sf_conicalP_half (C function): Conical Functions. (line 10) +* gsl_sf_conicalP_half_e (C function): Conical Functions. (line 10) +* gsl_sf_conicalP_mhalf (C function): Conical Functions. (line 17) +* gsl_sf_conicalP_mhalf_e (C function): Conical Functions. (line 17) +* gsl_sf_conicalP_sph_reg (C function): Conical Functions. (line 38) +* gsl_sf_conicalP_sph_reg_e (C function): Conical Functions. (line 38) +* gsl_sf_cos (C function): Circular Trigonometric Functions. + (line 11) +* gsl_sf_cos_e (C function): Circular Trigonometric Functions. + (line 11) +* gsl_sf_cos_err_e (C function): Trigonometric Functions With Error Estimates. + (line 15) +* gsl_sf_coulomb_CL_array (C function): Coulomb Wave Function Normalization Constant. + (line 15) +* gsl_sf_coulomb_CL_e (C function): Coulomb Wave Function Normalization Constant. + (line 9) +* gsl_sf_coulomb_wave_FGp_array (C function): Coulomb Wave Functions. + (line 55) +* gsl_sf_coulomb_wave_FG_array (C function): Coulomb Wave Functions. + (line 45) +* gsl_sf_coulomb_wave_FG_e (C function): Coulomb Wave Functions. + (line 20) +* gsl_sf_coulomb_wave_F_array (C function): Coulomb Wave Functions. + (line 37) +* gsl_sf_coulomb_wave_sphF_array (C function): Coulomb Wave Functions. + (line 67) +* gsl_sf_coupling_3j (C function): 3-j Symbols. (line 6) +* gsl_sf_coupling_3j_e (C function): 3-j Symbols. (line 6) +* gsl_sf_coupling_6j (C function): 6-j Symbols. (line 6) +* gsl_sf_coupling_6j_e (C function): 6-j Symbols. (line 6) +* gsl_sf_coupling_9j (C function): 9-j Symbols. (line 6) +* gsl_sf_coupling_9j_e (C function): 9-j Symbols. (line 6) +* gsl_sf_dawson (C function): Dawson Function. (line 14) +* gsl_sf_dawson_e (C function): Dawson Function. (line 14) +* gsl_sf_debye_1 (C function): Debye Functions. (line 13) +* gsl_sf_debye_1_e (C function): Debye Functions. (line 13) +* gsl_sf_debye_2 (C function): Debye Functions. (line 18) +* gsl_sf_debye_2_e (C function): Debye Functions. (line 18) +* gsl_sf_debye_3 (C function): Debye Functions. (line 23) +* gsl_sf_debye_3_e (C function): Debye Functions. (line 23) +* gsl_sf_debye_4 (C function): Debye Functions. (line 28) +* gsl_sf_debye_4_e (C function): Debye Functions. (line 28) +* gsl_sf_debye_5 (C function): Debye Functions. (line 33) +* gsl_sf_debye_5_e (C function): Debye Functions. (line 33) +* gsl_sf_debye_6 (C function): Debye Functions. (line 38) +* gsl_sf_debye_6_e (C function): Debye Functions. (line 38) +* gsl_sf_dilog (C function): Real Argument. (line 6) +* gsl_sf_dilog_e (C function): Real Argument. (line 6) +* gsl_sf_doublefact (C function): Factorials. (line 19) +* gsl_sf_doublefact_e (C function): Factorials. (line 19) +* gsl_sf_ellint_D (C function): Legendre Form of Incomplete Elliptic Integrals. + (line 39) +* gsl_sf_ellint_D_e (C function): Legendre Form of Incomplete Elliptic Integrals. + (line 39) +* gsl_sf_ellint_E (C function): Legendre Form of Incomplete Elliptic Integrals. + (line 16) +* gsl_sf_ellint_Ecomp (C function): Legendre Form of Complete Elliptic Integrals. + (line 15) +* gsl_sf_ellint_Ecomp_e (C function): Legendre Form of Complete Elliptic Integrals. + (line 15) +* gsl_sf_ellint_E_e (C function): Legendre Form of Incomplete Elliptic Integrals. + (line 16) +* gsl_sf_ellint_F (C function): Legendre Form of Incomplete Elliptic Integrals. + (line 6) +* gsl_sf_ellint_F_e (C function): Legendre Form of Incomplete Elliptic Integrals. + (line 6) +* gsl_sf_ellint_Kcomp (C function): Legendre Form of Complete Elliptic Integrals. + (line 6) +* gsl_sf_ellint_Kcomp_e (C function): Legendre Form of Complete Elliptic Integrals. + (line 6) +* gsl_sf_ellint_P (C function): Legendre Form of Incomplete Elliptic Integrals. + (line 26) +* gsl_sf_ellint_Pcomp (C function): Legendre Form of Complete Elliptic Integrals. + (line 24) +* gsl_sf_ellint_Pcomp_e (C function): Legendre Form of Complete Elliptic Integrals. + (line 24) +* gsl_sf_ellint_P_e (C function): Legendre Form of Incomplete Elliptic Integrals. + (line 26) +* gsl_sf_ellint_RC (C function): Carlson Forms. (line 6) +* gsl_sf_ellint_RC_e (C function): Carlson Forms. (line 6) +* gsl_sf_ellint_RD (C function): Carlson Forms. (line 14) +* gsl_sf_ellint_RD_e (C function): Carlson Forms. (line 14) +* gsl_sf_ellint_RF (C function): Carlson Forms. (line 24) +* gsl_sf_ellint_RF_e (C function): Carlson Forms. (line 24) +* gsl_sf_ellint_RJ (C function): Carlson Forms. (line 34) +* gsl_sf_ellint_RJ_e (C function): Carlson Forms. (line 34) +* gsl_sf_elljac_e (C function): Elliptic Functions Jacobi. + (line 10) +* gsl_sf_erf (C function): Error Function. (line 6) +* gsl_sf_erfc (C function): Complementary Error Function. + (line 6) +* gsl_sf_erfc_e (C function): Complementary Error Function. + (line 6) +* gsl_sf_erf_e (C function): Error Function. (line 6) +* gsl_sf_erf_Q (C function): Probability functions. + (line 15) +* gsl_sf_erf_Q_e (C function): Probability functions. + (line 15) +* gsl_sf_erf_Z (C function): Probability functions. + (line 9) +* gsl_sf_erf_Z_e (C function): Probability functions. + (line 9) +* gsl_sf_eta (C function): Eta Function. (line 15) +* gsl_sf_eta_e (C function): Eta Function. (line 15) +* gsl_sf_eta_int (C function): Eta Function. (line 10) +* gsl_sf_eta_int_e (C function): Eta Function. (line 10) +* gsl_sf_exp (C function): Exponential Function. + (line 6) +* gsl_sf_expint_3 (C function): Ei_3 x. (line 6) +* gsl_sf_expint_3_e (C function): Ei_3 x. (line 6) +* gsl_sf_expint_E1 (C function): Exponential Integral. + (line 6) +* gsl_sf_expint_E1_e (C function): Exponential Integral. + (line 6) +* gsl_sf_expint_E2 (C function): Exponential Integral. + (line 13) +* gsl_sf_expint_E2_e (C function): Exponential Integral. + (line 13) +* gsl_sf_expint_Ei (C function): Ei x. (line 6) +* gsl_sf_expint_Ei_e (C function): Ei x. (line 6) +* gsl_sf_expint_En (C function): Exponential Integral. + (line 21) +* gsl_sf_expint_En_e (C function): Exponential Integral. + (line 21) +* gsl_sf_expm1 (C function): Relative Exponential Functions. + (line 6) +* gsl_sf_expm1_e (C function): Relative Exponential Functions. + (line 6) +* gsl_sf_exprel (C function): Relative Exponential Functions. + (line 12) +* gsl_sf_exprel_2 (C function): Relative Exponential Functions. + (line 20) +* gsl_sf_exprel_2_e (C function): Relative Exponential Functions. + (line 20) +* gsl_sf_exprel_e (C function): Relative Exponential Functions. + (line 12) +* gsl_sf_exprel_n (C function): Relative Exponential Functions. + (line 28) +* gsl_sf_exprel_n_e (C function): Relative Exponential Functions. + (line 28) +* gsl_sf_exp_e (C function): Exponential Function. + (line 6) +* gsl_sf_exp_e10_e (C function): Exponential Function. + (line 12) +* gsl_sf_exp_err_e (C function): Exponentiation With Error Estimate. + (line 6) +* gsl_sf_exp_err_e10_e (C function): Exponentiation With Error Estimate. + (line 13) +* gsl_sf_exp_mult (C function): Exponential Function. + (line 20) +* gsl_sf_exp_mult_e (C function): Exponential Function. + (line 20) +* gsl_sf_exp_mult_e10_e (C function): Exponential Function. + (line 28) +* gsl_sf_exp_mult_err_e (C function): Exponentiation With Error Estimate. + (line 20) +* gsl_sf_exp_mult_err_e10_e (C function): Exponentiation With Error Estimate. + (line 27) +* gsl_sf_fact (C function): Factorials. (line 11) +* gsl_sf_fact_e (C function): Factorials. (line 11) +* gsl_sf_fermi_dirac_0 (C function): Complete Fermi-Dirac Integrals. + (line 21) +* gsl_sf_fermi_dirac_0_e (C function): Complete Fermi-Dirac Integrals. + (line 21) +* gsl_sf_fermi_dirac_1 (C function): Complete Fermi-Dirac Integrals. + (line 28) +* gsl_sf_fermi_dirac_1_e (C function): Complete Fermi-Dirac Integrals. + (line 28) +* gsl_sf_fermi_dirac_2 (C function): Complete Fermi-Dirac Integrals. + (line 35) +* gsl_sf_fermi_dirac_2_e (C function): Complete Fermi-Dirac Integrals. + (line 35) +* gsl_sf_fermi_dirac_3half (C function): Complete Fermi-Dirac Integrals. + (line 64) +* gsl_sf_fermi_dirac_3half_e (C function): Complete Fermi-Dirac Integrals. + (line 64) +* gsl_sf_fermi_dirac_half (C function): Complete Fermi-Dirac Integrals. + (line 57) +* gsl_sf_fermi_dirac_half_e (C function): Complete Fermi-Dirac Integrals. + (line 57) +* gsl_sf_fermi_dirac_inc_0 (C function): Incomplete Fermi-Dirac Integrals. + (line 10) +* gsl_sf_fermi_dirac_inc_0_e (C function): Incomplete Fermi-Dirac Integrals. + (line 10) +* gsl_sf_fermi_dirac_int (C function): Complete Fermi-Dirac Integrals. + (line 42) +* gsl_sf_fermi_dirac_int_e (C function): Complete Fermi-Dirac Integrals. + (line 42) +* gsl_sf_fermi_dirac_m1 (C function): Complete Fermi-Dirac Integrals. + (line 13) +* gsl_sf_fermi_dirac_m1_e (C function): Complete Fermi-Dirac Integrals. + (line 13) +* gsl_sf_fermi_dirac_mhalf (C function): Complete Fermi-Dirac Integrals. + (line 50) +* gsl_sf_fermi_dirac_mhalf_e (C function): Complete Fermi-Dirac Integrals. + (line 50) +* gsl_sf_gamma (C function): Gamma Functions. (line 14) +* gsl_sf_gammainv (C function): Gamma Functions. (line 54) +* gsl_sf_gammainv_e (C function): Gamma Functions. (line 54) +* gsl_sf_gammastar (C function): Gamma Functions. (line 43) +* gsl_sf_gammastar_e (C function): Gamma Functions. (line 43) +* gsl_sf_gamma_e (C function): Gamma Functions. (line 14) +* gsl_sf_gamma_inc (C function): Incomplete Gamma Functions. + (line 6) +* gsl_sf_gamma_inc_e (C function): Incomplete Gamma Functions. + (line 6) +* gsl_sf_gamma_inc_P (C function): Incomplete Gamma Functions. + (line 23) +* gsl_sf_gamma_inc_P_e (C function): Incomplete Gamma Functions. + (line 23) +* gsl_sf_gamma_inc_Q (C function): Incomplete Gamma Functions. + (line 15) +* gsl_sf_gamma_inc_Q_e (C function): Incomplete Gamma Functions. + (line 15) +* gsl_sf_gegenpoly_1 (C function): Gegenbauer Functions. + (line 11) +* gsl_sf_gegenpoly_1_e (C function): Gegenbauer Functions. + (line 11) +* gsl_sf_gegenpoly_2 (C function): Gegenbauer Functions. + (line 11) +* gsl_sf_gegenpoly_2_e (C function): Gegenbauer Functions. + (line 11) +* gsl_sf_gegenpoly_3 (C function): Gegenbauer Functions. + (line 11) +* gsl_sf_gegenpoly_3_e (C function): Gegenbauer Functions. + (line 11) +* gsl_sf_gegenpoly_array (C function): Gegenbauer Functions. + (line 32) +* gsl_sf_gegenpoly_n (C function): Gegenbauer Functions. + (line 24) +* gsl_sf_gegenpoly_n_e (C function): Gegenbauer Functions. + (line 24) +* gsl_sf_hazard (C function): Probability functions. + (line 29) +* gsl_sf_hazard_e (C function): Probability functions. + (line 29) +* gsl_sf_hermite_func (C function): Hermite Functions. (line 6) +* gsl_sf_hermite_func_array (C function): Hermite Functions. (line 13) +* gsl_sf_hermite_func_der (C function): Derivatives of Hermite Functions. + (line 6) +* gsl_sf_hermite_func_der_e (C function): Derivatives of Hermite Functions. + (line 6) +* gsl_sf_hermite_func_e (C function): Hermite Functions. (line 6) +* gsl_sf_hermite_func_series (C function): Hermite Functions. (line 20) +* gsl_sf_hermite_func_series_e (C function): Hermite Functions. + (line 20) +* gsl_sf_hermite_func_zero (C function): Zeros of Hermite Polynomials and Hermite Functions. + (line 26) +* gsl_sf_hermite_func_zero_e (C function): Zeros of Hermite Polynomials and Hermite Functions. + (line 26) +* gsl_sf_hermite_phys (C function): Hermite Polynomials. (line 32) +* gsl_sf_hermite_phys_array (C function): Hermite Polynomials. + (line 39) +* gsl_sf_hermite_phys_array_der (C function): Derivatives of Hermite Polynomials. + (line 38) +* gsl_sf_hermite_phys_der (C function): Derivatives of Hermite Polynomials. + (line 30) +* gsl_sf_hermite_phys_der_array (C function): Derivatives of Hermite Polynomials. + (line 45) +* gsl_sf_hermite_phys_der_e (C function): Derivatives of Hermite Polynomials. + (line 30) +* gsl_sf_hermite_phys_e (C function): Hermite Polynomials. (line 32) +* gsl_sf_hermite_phys_series (C function): Hermite Polynomials. + (line 47) +* gsl_sf_hermite_phys_series_e (C function): Hermite Polynomials. + (line 47) +* gsl_sf_hermite_phys_zero (C function): Zeros of Hermite Polynomials and Hermite Functions. + (line 19) +* gsl_sf_hermite_phys_zero_e (C function): Zeros of Hermite Polynomials and Hermite Functions. + (line 19) +* gsl_sf_hermite_prob (C function): Hermite Polynomials. (line 6) +* gsl_sf_hermite_prob_array (C function): Hermite Polynomials. + (line 13) +* gsl_sf_hermite_prob_array_der (C function): Derivatives of Hermite Polynomials. + (line 14) +* gsl_sf_hermite_prob_der (C function): Derivatives of Hermite Polynomials. + (line 6) +* gsl_sf_hermite_prob_der_array (C function): Derivatives of Hermite Polynomials. + (line 21) +* gsl_sf_hermite_prob_der_e (C function): Derivatives of Hermite Polynomials. + (line 6) +* gsl_sf_hermite_prob_e (C function): Hermite Polynomials. (line 6) +* gsl_sf_hermite_prob_series (C function): Hermite Polynomials. + (line 21) +* gsl_sf_hermite_prob_series_e (C function): Hermite Polynomials. + (line 21) +* gsl_sf_hermite_prob_zero (C function): Zeros of Hermite Polynomials and Hermite Functions. + (line 12) +* gsl_sf_hermite_prob_zero_e (C function): Zeros of Hermite Polynomials and Hermite Functions. + (line 12) +* gsl_sf_hydrogenicR (C function): Normalized Hydrogenic Bound States. + (line 13) +* gsl_sf_hydrogenicR_1 (C function): Normalized Hydrogenic Bound States. + (line 6) +* gsl_sf_hydrogenicR_1_e (C function): Normalized Hydrogenic Bound States. + (line 6) +* gsl_sf_hydrogenicR_e (C function): Normalized Hydrogenic Bound States. + (line 13) +* gsl_sf_hyperg_0F1 (C function): Hypergeometric Functions. + (line 10) +* gsl_sf_hyperg_0F1_e (C function): Hypergeometric Functions. + (line 10) +* gsl_sf_hyperg_1F1 (C function): Hypergeometric Functions. + (line 28) +* gsl_sf_hyperg_1F1_e (C function): Hypergeometric Functions. + (line 28) +* gsl_sf_hyperg_1F1_int (C function): Hypergeometric Functions. + (line 18) +* gsl_sf_hyperg_1F1_int_e (C function): Hypergeometric Functions. + (line 18) +* gsl_sf_hyperg_2F0 (C function): Hypergeometric Functions. + (line 121) +* gsl_sf_hyperg_2F0_e (C function): Hypergeometric Functions. + (line 121) +* gsl_sf_hyperg_2F1 (C function): Hypergeometric Functions. + (line 66) +* gsl_sf_hyperg_2F1_conj (C function): Hypergeometric Functions. + (line 82) +* gsl_sf_hyperg_2F1_conj_e (C function): Hypergeometric Functions. + (line 82) +* gsl_sf_hyperg_2F1_conj_renorm (C function): Hypergeometric Functions. + (line 109) +* gsl_sf_hyperg_2F1_conj_renorm_e (C function): Hypergeometric Functions. + (line 109) +* gsl_sf_hyperg_2F1_e (C function): Hypergeometric Functions. + (line 66) +* gsl_sf_hyperg_2F1_renorm (C function): Hypergeometric Functions. + (line 95) +* gsl_sf_hyperg_2F1_renorm_e (C function): Hypergeometric Functions. + (line 95) +* gsl_sf_hyperg_U (C function): Hypergeometric Functions. + (line 52) +* gsl_sf_hyperg_U_e (C function): Hypergeometric Functions. + (line 52) +* gsl_sf_hyperg_U_e10_e (C function): Hypergeometric Functions. + (line 59) +* gsl_sf_hyperg_U_int (C function): Hypergeometric Functions. + (line 38) +* gsl_sf_hyperg_U_int_e (C function): Hypergeometric Functions. + (line 38) +* gsl_sf_hyperg_U_int_e10_e (C function): Hypergeometric Functions. + (line 45) +* gsl_sf_hypot (C function): Circular Trigonometric Functions. + (line 16) +* gsl_sf_hypot_e (C function): Circular Trigonometric Functions. + (line 16) +* gsl_sf_hzeta (C function): Hurwitz Zeta Function. + (line 10) +* gsl_sf_hzeta_e (C function): Hurwitz Zeta Function. + (line 10) +* gsl_sf_laguerre_1 (C function): Laguerre Functions. (line 20) +* gsl_sf_laguerre_1_e (C function): Laguerre Functions. (line 20) +* gsl_sf_laguerre_2 (C function): Laguerre Functions. (line 20) +* gsl_sf_laguerre_2_e (C function): Laguerre Functions. (line 20) +* gsl_sf_laguerre_3 (C function): Laguerre Functions. (line 20) +* gsl_sf_laguerre_3_e (C function): Laguerre Functions. (line 20) +* gsl_sf_laguerre_n (C function): Laguerre Functions. (line 33) +* gsl_sf_laguerre_n_e (C function): Laguerre Functions. (line 33) +* gsl_sf_lambert_W0 (C function): Lambert W Functions. (line 13) +* gsl_sf_lambert_W0_e (C function): Lambert W Functions. (line 13) +* gsl_sf_lambert_Wm1 (C function): Lambert W Functions. (line 19) +* gsl_sf_lambert_Wm1_e (C function): Lambert W Functions. (line 19) +* gsl_sf_legendre_array (C function): Associated Legendre Polynomials and Spherical Harmonics. + (line 84) +* gsl_sf_legendre_array_e (C function): Associated Legendre Polynomials and Spherical Harmonics. + (line 84) +* gsl_sf_legendre_array_index (C function): Associated Legendre Polynomials and Spherical Harmonics. + (line 195) +* gsl_sf_legendre_array_n (C function): Associated Legendre Polynomials and Spherical Harmonics. + (line 187) +* gsl_sf_legendre_array_size (C function): Associated Legendre Polynomials and Spherical Harmonics. + (line 242) +* gsl_sf_legendre_deriv2_alt_array (C function): Associated Legendre Polynomials and Spherical Harmonics. + (line 163) +* gsl_sf_legendre_deriv2_alt_array_e (C function): Associated Legendre Polynomials and Spherical Harmonics. + (line 163) +* gsl_sf_legendre_deriv2_array (C function): Associated Legendre Polynomials and Spherical Harmonics. + (line 141) +* gsl_sf_legendre_deriv2_array_e (C function): Associated Legendre Polynomials and Spherical Harmonics. + (line 141) +* gsl_sf_legendre_deriv_alt_array (C function): Associated Legendre Polynomials and Spherical Harmonics. + (line 121) +* gsl_sf_legendre_deriv_alt_array_e (C function): Associated Legendre Polynomials and Spherical Harmonics. + (line 121) +* gsl_sf_legendre_deriv_array (C function): Associated Legendre Polynomials and Spherical Harmonics. + (line 102) +* gsl_sf_legendre_deriv_array_e (C function): Associated Legendre Polynomials and Spherical Harmonics. + (line 102) +* gsl_sf_legendre_H3d (C function): Radial Functions for Hyperbolic Space. + (line 35) +* gsl_sf_legendre_H3d_0 (C function): Radial Functions for Hyperbolic Space. + (line 11) +* gsl_sf_legendre_H3d_0_e (C function): Radial Functions for Hyperbolic Space. + (line 11) +* gsl_sf_legendre_H3d_1 (C function): Radial Functions for Hyperbolic Space. + (line 23) +* gsl_sf_legendre_H3d_1_e (C function): Radial Functions for Hyperbolic Space. + (line 23) +* gsl_sf_legendre_H3d_array (C function): Radial Functions for Hyperbolic Space. + (line 45) +* gsl_sf_legendre_H3d_e (C function): Radial Functions for Hyperbolic Space. + (line 35) +* gsl_sf_legendre_P1 (C function): Legendre Polynomials. + (line 6) +* gsl_sf_legendre_P1_e (C function): Legendre Polynomials. + (line 6) +* gsl_sf_legendre_P2 (C function): Legendre Polynomials. + (line 6) +* gsl_sf_legendre_P2_e (C function): Legendre Polynomials. + (line 6) +* gsl_sf_legendre_P3 (C function): Legendre Polynomials. + (line 6) +* gsl_sf_legendre_P3_e (C function): Legendre Polynomials. + (line 6) +* gsl_sf_legendre_Pl (C function): Legendre Polynomials. + (line 19) +* gsl_sf_legendre_Plm (C function): Associated Legendre Polynomials and Spherical Harmonics. + (line 204) +* gsl_sf_legendre_Plm_array (C function): Associated Legendre Polynomials and Spherical Harmonics. + (line 221) +* gsl_sf_legendre_Plm_deriv_array (C function): Associated Legendre Polynomials and Spherical Harmonics. + (line 221) +* gsl_sf_legendre_Plm_e (C function): Associated Legendre Polynomials and Spherical Harmonics. + (line 204) +* gsl_sf_legendre_Pl_array (C function): Legendre Polynomials. + (line 27) +* gsl_sf_legendre_Pl_deriv_array (C function): Legendre Polynomials. + (line 27) +* gsl_sf_legendre_Pl_e (C function): Legendre Polynomials. + (line 19) +* gsl_sf_legendre_Q0 (C function): Legendre Polynomials. + (line 36) +* gsl_sf_legendre_Q0_e (C function): Legendre Polynomials. + (line 36) +* gsl_sf_legendre_Q1 (C function): Legendre Polynomials. + (line 43) +* gsl_sf_legendre_Q1_e (C function): Legendre Polynomials. + (line 43) +* gsl_sf_legendre_Ql (C function): Legendre Polynomials. + (line 50) +* gsl_sf_legendre_Ql_e (C function): Legendre Polynomials. + (line 50) +* gsl_sf_legendre_sphPlm (C function): Associated Legendre Polynomials and Spherical Harmonics. + (line 211) +* gsl_sf_legendre_sphPlm_array (C function): Associated Legendre Polynomials and Spherical Harmonics. + (line 232) +* gsl_sf_legendre_sphPlm_deriv_array (C function): Associated Legendre Polynomials and Spherical Harmonics. + (line 232) +* gsl_sf_legendre_sphPlm_e (C function): Associated Legendre Polynomials and Spherical Harmonics. + (line 211) +* gsl_sf_legendre_t (C type): Associated Legendre Polynomials and Spherical Harmonics. + (line 66) +* gsl_sf_lnbeta (C function): Beta Functions. (line 14) +* gsl_sf_lnbeta_e (C function): Beta Functions. (line 14) +* gsl_sf_lnchoose (C function): Factorials. (line 51) +* gsl_sf_lnchoose_e (C function): Factorials. (line 51) +* gsl_sf_lncosh (C function): Hyperbolic Trigonometric Functions. + (line 11) +* gsl_sf_lncosh_e (C function): Hyperbolic Trigonometric Functions. + (line 11) +* gsl_sf_lndoublefact (C function): Factorials. (line 36) +* gsl_sf_lndoublefact_e (C function): Factorials. (line 36) +* gsl_sf_lnfact (C function): Factorials. (line 27) +* gsl_sf_lnfact_e (C function): Factorials. (line 27) +* gsl_sf_lngamma (C function): Gamma Functions. (line 23) +* gsl_sf_lngamma_complex_e (C function): Gamma Functions. (line 60) +* gsl_sf_lngamma_e (C function): Gamma Functions. (line 23) +* gsl_sf_lngamma_sgn_e (C function): Gamma Functions. (line 32) +* gsl_sf_lnpoch (C function): Pochhammer Symbol. (line 16) +* gsl_sf_lnpoch_e (C function): Pochhammer Symbol. (line 16) +* gsl_sf_lnpoch_sgn_e (C function): Pochhammer Symbol. (line 23) +* gsl_sf_lnsinh (C function): Hyperbolic Trigonometric Functions. + (line 6) +* gsl_sf_lnsinh_e (C function): Hyperbolic Trigonometric Functions. + (line 6) +* gsl_sf_log (C function): Logarithm and Related Functions. + (line 10) +* gsl_sf_log_1plusx (C function): Logarithm and Related Functions. + (line 28) +* gsl_sf_log_1plusx_e (C function): Logarithm and Related Functions. + (line 28) +* gsl_sf_log_1plusx_mx (C function): Logarithm and Related Functions. + (line 34) +* gsl_sf_log_1plusx_mx_e (C function): Logarithm and Related Functions. + (line 34) +* gsl_sf_log_abs (C function): Logarithm and Related Functions. + (line 15) +* gsl_sf_log_abs_e (C function): Logarithm and Related Functions. + (line 15) +* gsl_sf_log_e (C function): Logarithm and Related Functions. + (line 10) +* gsl_sf_log_erfc (C function): Log Complementary Error Function. + (line 6) +* gsl_sf_log_erfc_e (C function): Log Complementary Error Function. + (line 6) +* gsl_sf_mathieu_a (C function): Mathieu Function Characteristic Values. + (line 6) +* gsl_sf_mathieu_alloc (C function): Mathieu Function Workspace. + (line 14) +* gsl_sf_mathieu_a_array (C function): Mathieu Function Characteristic Values. + (line 16) +* gsl_sf_mathieu_a_e (C function): Mathieu Function Characteristic Values. + (line 6) +* gsl_sf_mathieu_b (C function): Mathieu Function Characteristic Values. + (line 6) +* gsl_sf_mathieu_b_array (C function): Mathieu Function Characteristic Values. + (line 16) +* gsl_sf_mathieu_b_e (C function): Mathieu Function Characteristic Values. + (line 6) +* gsl_sf_mathieu_ce (C function): Angular Mathieu Functions. + (line 6) +* gsl_sf_mathieu_ce_array (C function): Angular Mathieu Functions. + (line 16) +* gsl_sf_mathieu_ce_e (C function): Angular Mathieu Functions. + (line 6) +* gsl_sf_mathieu_free (C function): Mathieu Function Workspace. + (line 22) +* gsl_sf_mathieu_Mc (C function): Radial Mathieu Functions. + (line 6) +* gsl_sf_mathieu_Mc_array (C function): Radial Mathieu Functions. + (line 21) +* gsl_sf_mathieu_Mc_e (C function): Radial Mathieu Functions. + (line 6) +* gsl_sf_mathieu_Ms (C function): Radial Mathieu Functions. + (line 6) +* gsl_sf_mathieu_Ms_array (C function): Radial Mathieu Functions. + (line 21) +* gsl_sf_mathieu_Ms_e (C function): Radial Mathieu Functions. + (line 6) +* gsl_sf_mathieu_se (C function): Angular Mathieu Functions. + (line 6) +* gsl_sf_mathieu_se_array (C function): Angular Mathieu Functions. + (line 16) +* gsl_sf_mathieu_se_e (C function): Angular Mathieu Functions. + (line 6) +* gsl_sf_mathieu_workspace (C type): Mathieu Function Workspace. + (line 10) +* gsl_sf_multiply (C function): Elementary Operations. + (line 10) +* gsl_sf_multiply_e (C function): Elementary Operations. + (line 10) +* gsl_sf_multiply_err_e (C function): Elementary Operations. + (line 18) +* gsl_sf_poch (C function): Pochhammer Symbol. (line 6) +* gsl_sf_pochrel (C function): Pochhammer Symbol. (line 31) +* gsl_sf_pochrel_e (C function): Pochhammer Symbol. (line 31) +* gsl_sf_poch_e (C function): Pochhammer Symbol. (line 6) +* gsl_sf_polar_to_rect (C function): Conversion Functions. + (line 6) +* gsl_sf_pow_int (C function): Power Function. (line 10) +* gsl_sf_pow_int_e (C function): Power Function. (line 10) +* gsl_sf_psi (C function): Digamma Function. (line 12) +* gsl_sf_psi_1 (C function): Trigamma Function. (line 12) +* gsl_sf_psi_1piy (C function): Digamma Function. (line 18) +* gsl_sf_psi_1piy_e (C function): Digamma Function. (line 18) +* gsl_sf_psi_1_e (C function): Trigamma Function. (line 12) +* gsl_sf_psi_1_int (C function): Trigamma Function. (line 6) +* gsl_sf_psi_1_int_e (C function): Trigamma Function. (line 6) +* gsl_sf_psi_e (C function): Digamma Function. (line 12) +* gsl_sf_psi_int (C function): Digamma Function. (line 6) +* gsl_sf_psi_int_e (C function): Digamma Function. (line 6) +* gsl_sf_psi_n (C function): Polygamma Function. (line 6) +* gsl_sf_psi_n_e (C function): Polygamma Function. (line 6) +* gsl_sf_rect_to_polar (C function): Conversion Functions. + (line 13) +* gsl_sf_result (C type): The gsl_sf_result struct. + (line 13) +* gsl_sf_result_e10 (C type): The gsl_sf_result struct. + (line 31) +* gsl_sf_Shi (C function): Hyperbolic Integrals. + (line 6) +* gsl_sf_Shi_e (C function): Hyperbolic Integrals. + (line 6) +* gsl_sf_Si (C function): Trigonometric Integrals. + (line 6) +* gsl_sf_sin (C function): Circular Trigonometric Functions. + (line 6) +* gsl_sf_sinc (C function): Circular Trigonometric Functions. + (line 23) +* gsl_sf_sinc_e (C function): Circular Trigonometric Functions. + (line 23) +* gsl_sf_sin_e (C function): Circular Trigonometric Functions. + (line 6) +* gsl_sf_sin_err_e (C function): Trigonometric Functions With Error Estimates. + (line 6) +* gsl_sf_Si_e (C function): Trigonometric Integrals. + (line 6) +* gsl_sf_synchrotron_1 (C function): Synchrotron Functions. + (line 9) +* gsl_sf_synchrotron_1_e (C function): Synchrotron Functions. + (line 9) +* gsl_sf_synchrotron_2 (C function): Synchrotron Functions. + (line 16) +* gsl_sf_synchrotron_2_e (C function): Synchrotron Functions. + (line 16) +* gsl_sf_taylorcoeff (C function): Factorials. (line 58) +* gsl_sf_taylorcoeff_e (C function): Factorials. (line 58) +* gsl_sf_transport_2 (C function): Transport Functions. (line 13) +* gsl_sf_transport_2_e (C function): Transport Functions. (line 13) +* gsl_sf_transport_3 (C function): Transport Functions. (line 19) +* gsl_sf_transport_3_e (C function): Transport Functions. (line 19) +* gsl_sf_transport_4 (C function): Transport Functions. (line 25) +* gsl_sf_transport_4_e (C function): Transport Functions. (line 25) +* gsl_sf_transport_5 (C function): Transport Functions. (line 31) +* gsl_sf_transport_5_e (C function): Transport Functions. (line 31) +* gsl_sf_zeta (C function): Riemann Zeta Function. + (line 16) +* gsl_sf_zetam1 (C function): Riemann Zeta Function Minus One. + (line 15) +* gsl_sf_zetam1_e (C function): Riemann Zeta Function Minus One. + (line 15) +* gsl_sf_zetam1_int (C function): Riemann Zeta Function Minus One. + (line 10) +* gsl_sf_zetam1_int_e (C function): Riemann Zeta Function Minus One. + (line 10) +* gsl_sf_zeta_e (C function): Riemann Zeta Function. + (line 16) +* gsl_sf_zeta_int (C function): Riemann Zeta Function. + (line 10) +* gsl_sf_zeta_int_e (C function): Riemann Zeta Function. + (line 10) +* GSL_SIGN (C macro): Testing the Sign of Numbers. + (line 6) +* gsl_siman_copy_construct_t (C type): Simulated Annealing functions. + (line 93) +* gsl_siman_copy_t (C type): Simulated Annealing functions. + (line 86) +* gsl_siman_destroy_t (C type): Simulated Annealing functions. + (line 100) +* gsl_siman_Efunc_t (C type): Simulated Annealing functions. + (line 56) +* gsl_siman_metric_t (C type): Simulated Annealing functions. + (line 72) +* gsl_siman_params_t (C type): Simulated Annealing functions. + (line 107) +* gsl_siman_print_t (C type): Simulated Annealing functions. + (line 79) +* gsl_siman_solve (C function): Simulated Annealing functions. + (line 6) +* gsl_siman_step_t (C type): Simulated Annealing functions. + (line 63) +* gsl_sort (C function): Sorting vectors. (line 22) +* gsl_sort2 (C function): Sorting vectors. (line 28) +* gsl_sort_index (C function): Sorting vectors. (line 47) +* gsl_sort_largest (C function): Selecting the k smallest or largest elements. + (line 24) +* gsl_sort_largest_index (C function): Selecting the k smallest or largest elements. + (line 53) +* gsl_sort_smallest (C function): Selecting the k smallest or largest elements. + (line 16) +* gsl_sort_smallest_index (C function): Selecting the k smallest or largest elements. + (line 44) +* gsl_sort_vector (C function): Sorting vectors. (line 36) +* gsl_sort_vector2 (C function): Sorting vectors. (line 41) +* gsl_sort_vector_index (C function): Sorting vectors. (line 59) +* gsl_sort_vector_largest (C function): Selecting the k smallest or largest elements. + (line 32) +* gsl_sort_vector_largest_index (C function): Selecting the k smallest or largest elements. + (line 62) +* gsl_sort_vector_smallest (C function): Selecting the k smallest or largest elements. + (line 32) +* gsl_sort_vector_smallest_index (C function): Selecting the k smallest or largest elements. + (line 62) +* gsl_spblas_dgemm (C function): Sparse BLAS operations. + (line 17) +* gsl_spblas_dgemv (C function): Sparse BLAS operations. + (line 6) +* gsl_splinalg_itersolve_alloc (C function): Iterating the Sparse Linear System. + (line 9) +* gsl_splinalg_itersolve_free (C function): Iterating the Sparse Linear System. + (line 20) +* gsl_splinalg_itersolve_gmres (C variable): Types of Sparse Iterative Solvers. + (line 11) +* gsl_splinalg_itersolve_iterate (C function): Iterating the Sparse Linear System. + (line 31) +* gsl_splinalg_itersolve_name (C function): Iterating the Sparse Linear System. + (line 26) +* gsl_splinalg_itersolve_normr (C function): Iterating the Sparse Linear System. + (line 52) +* gsl_splinalg_itersolve_type (C type): Types of Sparse Iterative Solvers. + (line 9) +* gsl_spline (C type): 1D Higher-level Interface. + (line 14) +* gsl_spline2d (C type): 2D Higher-level Interface. + (line 14) +* gsl_spline2d_alloc (C function): 2D Higher-level Interface. + (line 19) +* gsl_spline2d_eval (C function): 2D Higher-level Interface. + (line 35) +* gsl_spline2d_eval_deriv_x (C function): 2D Higher-level Interface. + (line 42) +* gsl_spline2d_eval_deriv_xx (C function): 2D Higher-level Interface. + (line 56) +* gsl_spline2d_eval_deriv_xx_e (C function): 2D Higher-level Interface. + (line 56) +* gsl_spline2d_eval_deriv_xy (C function): 2D Higher-level Interface. + (line 70) +* gsl_spline2d_eval_deriv_xy_e (C function): 2D Higher-level Interface. + (line 70) +* gsl_spline2d_eval_deriv_x_e (C function): 2D Higher-level Interface. + (line 42) +* gsl_spline2d_eval_deriv_y (C function): 2D Higher-level Interface. + (line 49) +* gsl_spline2d_eval_deriv_yy (C function): 2D Higher-level Interface. + (line 63) +* gsl_spline2d_eval_deriv_yy_e (C function): 2D Higher-level Interface. + (line 63) +* gsl_spline2d_eval_deriv_y_e (C function): 2D Higher-level Interface. + (line 49) +* gsl_spline2d_eval_e (C function): 2D Higher-level Interface. + (line 35) +* gsl_spline2d_free (C function): 2D Higher-level Interface. + (line 27) +* gsl_spline2d_get (C function): 2D Higher-level Interface. + (line 80) +* gsl_spline2d_init (C function): 2D Higher-level Interface. + (line 22) +* gsl_spline2d_min_size (C function): 2D Higher-level Interface. + (line 32) +* gsl_spline2d_name (C function): 2D Higher-level Interface. + (line 29) +* gsl_spline2d_set (C function): 2D Higher-level Interface. + (line 77) +* gsl_spline_alloc (C function): 1D Higher-level Interface. + (line 19) +* gsl_spline_eval (C function): 1D Higher-level Interface. + (line 33) +* gsl_spline_eval_deriv (C function): 1D Higher-level Interface. + (line 38) +* gsl_spline_eval_deriv2 (C function): 1D Higher-level Interface. + (line 45) +* gsl_spline_eval_deriv2_e (C function): 1D Higher-level Interface. + (line 45) +* gsl_spline_eval_deriv_e (C function): 1D Higher-level Interface. + (line 38) +* gsl_spline_eval_e (C function): 1D Higher-level Interface. + (line 33) +* gsl_spline_eval_integ (C function): 1D Higher-level Interface. + (line 52) +* gsl_spline_eval_integ_e (C function): 1D Higher-level Interface. + (line 52) +* gsl_spline_free (C function): 1D Higher-level Interface. + (line 26) +* gsl_spline_init (C function): 1D Higher-level Interface. + (line 23) +* gsl_spline_min_size (C function): 1D Higher-level Interface. + (line 30) +* gsl_spline_name (C function): 1D Higher-level Interface. + (line 28) +* gsl_spmatrix (C type): Overview<8>. (line 24) +* gsl_spmatrix_add (C function): Matrix Operations. (line 6) +* gsl_spmatrix_alloc (C function): Allocation. (line 12) +* gsl_spmatrix_alloc_nzmax (C function): Allocation. (line 28) +* gsl_spmatrix_ccs (C function): Compressed Format. (line 9) +* GSL_SPMATRIX_CCS (C macro): Allocation. (line 48) +* gsl_spmatrix_crs (C function): Compressed Format. (line 17) +* GSL_SPMATRIX_CRS (C macro): Allocation. (line 52) +* gsl_spmatrix_d2sp (C function): Conversion Between Sparse and Dense Matrices. + (line 10) +* gsl_spmatrix_equal (C function): Matrix Properties. (line 10) +* gsl_spmatrix_fprintf (C function): Reading and Writing Matrices. + (line 26) +* gsl_spmatrix_fread (C function): Reading and Writing Matrices. + (line 15) +* gsl_spmatrix_free (C function): Allocation. (line 68) +* gsl_spmatrix_fscanf (C function): Reading and Writing Matrices. + (line 37) +* gsl_spmatrix_fwrite (C function): Reading and Writing Matrices. + (line 6) +* gsl_spmatrix_get (C function): Accessing Matrix Elements. + (line 6) +* gsl_spmatrix_memcpy (C function): Copying Matrices. (line 6) +* gsl_spmatrix_minmax (C function): Finding Maximum and Minimum Elements. + (line 6) +* gsl_spmatrix_nnz (C function): Matrix Properties. (line 6) +* gsl_spmatrix_ptr (C function): Accessing Matrix Elements. + (line 19) +* gsl_spmatrix_realloc (C function): Allocation. (line 59) +* gsl_spmatrix_scale (C function): Matrix Operations. (line 12) +* gsl_spmatrix_set (C function): Accessing Matrix Elements. + (line 13) +* gsl_spmatrix_set_zero (C function): Initializing Matrix Elements. + (line 11) +* gsl_spmatrix_sp2d (C function): Conversion Between Sparse and Dense Matrices. + (line 17) +* gsl_spmatrix_transpose (C function): Exchanging Rows and Columns. + (line 14) +* gsl_spmatrix_transpose2 (C function): Exchanging Rows and Columns. + (line 20) +* gsl_spmatrix_transpose_memcpy (C function): Exchanging Rows and Columns. + (line 6) +* GSL_SPMATRIX_TRIPLET (C macro): Allocation. (line 44) +* gsl_stats_absdev (C function): Absolute deviation. (line 6) +* gsl_stats_absdev_m (C function): Absolute deviation. (line 20) +* gsl_stats_correlation (C function): Correlation. (line 6) +* gsl_stats_covariance (C function): Covariance. (line 6) +* gsl_stats_covariance_m (C function): Covariance. (line 16) +* gsl_stats_gastwirth_from_sorted_data (C function): Gastwirth Estimator. + (line 15) +* gsl_stats_kurtosis (C function): Higher moments skewness and kurtosis. + (line 33) +* gsl_stats_kurtosis_m_sd (C function): Higher moments skewness and kurtosis. + (line 45) +* gsl_stats_lag1_autocorrelation (C function): Autocorrelation. + (line 6) +* gsl_stats_lag1_autocorrelation_m (C function): Autocorrelation. + (line 16) +* gsl_stats_mad (C function): Median Absolute Deviation MAD. + (line 20) +* gsl_stats_mad0 (C function): Median Absolute Deviation MAD. + (line 17) +* gsl_stats_max (C function): Maximum and Minimum values. + (line 12) +* gsl_stats_max_index (C function): Maximum and Minimum values. + (line 43) +* gsl_stats_mean (C function): Mean Standard Deviation and Variance. + (line 6) +* gsl_stats_median (C function): Median and Percentiles. + (line 29) +* gsl_stats_median_from_sorted_data (C function): Median and Percentiles. + (line 13) +* gsl_stats_min (C function): Maximum and Minimum values. + (line 24) +* gsl_stats_minmax (C function): Maximum and Minimum values. + (line 36) +* gsl_stats_minmax_index (C function): Maximum and Minimum values. + (line 61) +* gsl_stats_min_index (C function): Maximum and Minimum values. + (line 52) +* gsl_stats_Qn0_from_sorted_data (C function): Statistic<2>. (line 19) +* gsl_stats_Qn_from_sorted_data (C function): Statistic<2>. (line 19) +* gsl_stats_quantile_from_sorted_data (C function): Median and Percentiles. + (line 38) +* gsl_stats_sd (C function): Mean Standard Deviation and Variance. + (line 47) +* gsl_stats_sd_m (C function): Mean Standard Deviation and Variance. + (line 47) +* gsl_stats_sd_with_fixed_mean (C function): Mean Standard Deviation and Variance. + (line 82) +* gsl_stats_select (C function): Order Statistics. (line 14) +* gsl_stats_skew (C function): Higher moments skewness and kurtosis. + (line 6) +* gsl_stats_skew_m_sd (C function): Higher moments skewness and kurtosis. + (line 21) +* gsl_stats_Sn0_from_sorted_data (C function): Statistic. (line 17) +* gsl_stats_Sn_from_sorted_data (C function): Statistic. (line 22) +* gsl_stats_spearman (C function): Correlation. (line 21) +* gsl_stats_trmean_from_sorted_data (C function): Trimmed Mean. + (line 14) +* gsl_stats_tss (C function): Mean Standard Deviation and Variance. + (line 57) +* gsl_stats_tss_m (C function): Mean Standard Deviation and Variance. + (line 57) +* gsl_stats_variance (C function): Mean Standard Deviation and Variance. + (line 19) +* gsl_stats_variance_m (C function): Mean Standard Deviation and Variance. + (line 38) +* gsl_stats_variance_with_fixed_mean (C function): Mean Standard Deviation and Variance. + (line 71) +* gsl_stats_wabsdev (C function): Weighted Samples. (line 96) +* gsl_stats_wabsdev_m (C function): Weighted Samples. (line 105) +* gsl_stats_wkurtosis (C function): Weighted Samples. (line 129) +* gsl_stats_wkurtosis_m_sd (C function): Weighted Samples. (line 136) +* gsl_stats_wmean (C function): Weighted Samples. (line 14) +* gsl_stats_wsd (C function): Weighted Samples. (line 46) +* gsl_stats_wsd_m (C function): Weighted Samples. (line 54) +* gsl_stats_wsd_with_fixed_mean (C function): Weighted Samples. + (line 72) +* gsl_stats_wskew (C function): Weighted Samples. (line 113) +* gsl_stats_wskew_m_sd (C function): Weighted Samples. (line 120) +* gsl_stats_wtss (C function): Weighted Samples. (line 81) +* gsl_stats_wtss_m (C function): Weighted Samples. (line 81) +* gsl_stats_wvariance (C function): Weighted Samples. (line 23) +* gsl_stats_wvariance_m (C function): Weighted Samples. (line 38) +* gsl_stats_wvariance_with_fixed_mean (C function): Weighted Samples. + (line 60) +* gsl_strerror (C function): Error Codes. (line 41) +* gsl_sum_levin_utrunc_accel (C function): Acceleration functions without error estimation. + (line 38) +* gsl_sum_levin_utrunc_alloc (C function): Acceleration functions without error estimation. + (line 26) +* gsl_sum_levin_utrunc_free (C function): Acceleration functions without error estimation. + (line 33) +* gsl_sum_levin_utrunc_workspace (C type): Acceleration functions without error estimation. + (line 22) +* gsl_sum_levin_u_accel (C function): Acceleration functions. + (line 37) +* gsl_sum_levin_u_alloc (C function): Acceleration functions. + (line 27) +* gsl_sum_levin_u_free (C function): Acceleration functions. + (line 33) +* gsl_sum_levin_u_workspace (C type): Acceleration functions. + (line 23) +* gsl_vector (C type): Vectors. (line 17) +* gsl_vector_add (C function): Vector operations. (line 6) +* gsl_vector_add_constant (C function): Vector operations. (line 39) +* gsl_vector_alloc (C function): Vector allocation. (line 14) +* gsl_vector_calloc (C function): Vector allocation. (line 23) +* gsl_vector_complex_const_imag (C function): Vector views. (line 114) +* gsl_vector_complex_const_real (C function): Vector views. (line 102) +* gsl_vector_complex_imag (C function): Vector views. (line 114) +* gsl_vector_complex_real (C function): Vector views. (line 102) +* gsl_vector_const_ptr (C function): Accessing vector elements. + (line 65) +* gsl_vector_const_subvector (C function): Vector views. (line 31) +* gsl_vector_const_subvector_with_stride (C function): Vector views. + (line 63) +* gsl_vector_const_view (C type): Vector views. (line 12) +* gsl_vector_const_view_array (C function): Vector views. (line 126) +* gsl_vector_const_view_array_with_stride (C function): Vector views. + (line 152) +* gsl_vector_div (C function): Vector operations. (line 27) +* gsl_vector_equal (C function): Vector properties. (line 19) +* gsl_vector_fprintf (C function): Reading and writing vectors. + (line 28) +* gsl_vector_fread (C function): Reading and writing vectors. + (line 18) +* gsl_vector_free (C function): Vector allocation. (line 28) +* gsl_vector_fscanf (C function): Reading and writing vectors. + (line 37) +* gsl_vector_fwrite (C function): Reading and writing vectors. + (line 9) +* gsl_vector_get (C function): Accessing vector elements. + (line 48) +* gsl_vector_isneg (C function): Vector properties. (line 10) +* gsl_vector_isnonneg (C function): Vector properties. (line 10) +* gsl_vector_isnull (C function): Vector properties. (line 10) +* gsl_vector_ispos (C function): Vector properties. (line 10) +* gsl_vector_max (C function): Finding maximum and minimum elements of vectors. + (line 8) +* gsl_vector_max_index (C function): Finding maximum and minimum elements of vectors. + (line 22) +* gsl_vector_memcpy (C function): Copying vectors. (line 12) +* gsl_vector_min (C function): Finding maximum and minimum elements of vectors. + (line 12) +* gsl_vector_minmax (C function): Finding maximum and minimum elements of vectors. + (line 16) +* gsl_vector_minmax_index (C function): Finding maximum and minimum elements of vectors. + (line 34) +* gsl_vector_min_index (C function): Finding maximum and minimum elements of vectors. + (line 28) +* gsl_vector_mul (C function): Vector operations. (line 20) +* gsl_vector_ptr (C function): Accessing vector elements. + (line 65) +* gsl_vector_reverse (C function): Exchanging elements. (line 16) +* gsl_vector_scale (C function): Vector operations. (line 34) +* gsl_vector_set (C function): Accessing vector elements. + (line 56) +* gsl_vector_set_all (C function): Initializing vector elements. + (line 6) +* gsl_vector_set_basis (C function): Initializing vector elements. + (line 15) +* gsl_vector_set_zero (C function): Initializing vector elements. + (line 11) +* gsl_vector_sub (C function): Vector operations. (line 13) +* gsl_vector_subvector (C function): Vector views. (line 31) +* gsl_vector_subvector_with_stride (C function): Vector views. + (line 63) +* gsl_vector_swap (C function): Copying vectors. (line 18) +* gsl_vector_swap_elements (C function): Exchanging elements. (line 9) +* gsl_vector_view (C type): Vector views. (line 12) +* gsl_vector_view_array (C function): Vector views. (line 126) +* gsl_vector_view_array_with_stride (C function): Vector views. + (line 152) +* gsl_wavelet (C type): Initialization. (line 6) +* gsl_wavelet2d_nstransform (C function): Wavelet transforms in two dimension. + (line 67) +* gsl_wavelet2d_nstransform_forward (C function): Wavelet transforms in two dimension. + (line 67) +* gsl_wavelet2d_nstransform_inverse (C function): Wavelet transforms in two dimension. + (line 67) +* gsl_wavelet2d_nstransform_matrix (C function): Wavelet transforms in two dimension. + (line 83) +* gsl_wavelet2d_nstransform_matrix_forward (C function): Wavelet transforms in two dimension. + (line 83) +* gsl_wavelet2d_nstransform_matrix_inverse (C function): Wavelet transforms in two dimension. + (line 83) +* gsl_wavelet2d_transform (C function): Wavelet transforms in two dimension. + (line 29) +* gsl_wavelet2d_transform_forward (C function): Wavelet transforms in two dimension. + (line 29) +* gsl_wavelet2d_transform_inverse (C function): Wavelet transforms in two dimension. + (line 29) +* gsl_wavelet2d_transform_matrix (C function): Wavelet transforms in two dimension. + (line 56) +* gsl_wavelet2d_transform_matrix_forward (C function): Wavelet transforms in two dimension. + (line 56) +* gsl_wavelet2d_transform_matrix_inverse (C function): Wavelet transforms in two dimension. + (line 56) +* gsl_wavelet_alloc (C function): Initialization. (line 11) +* gsl_wavelet_bspline (C variable): Initialization. (line 36) +* gsl_wavelet_bspline_centered (C variable): Initialization. (line 36) +* gsl_wavelet_daubechies (C variable): Initialization. (line 23) +* gsl_wavelet_daubechies_centered (C variable): Initialization. + (line 23) +* gsl_wavelet_free (C function): Initialization. (line 53) +* gsl_wavelet_haar (C variable): Initialization. (line 30) +* gsl_wavelet_haar_centered (C variable): Initialization. (line 30) +* gsl_wavelet_name (C function): Initialization. (line 48) +* gsl_wavelet_transform (C function): Wavelet transforms in one dimension. + (line 6) +* gsl_wavelet_transform_forward (C function): Wavelet transforms in one dimension. + (line 6) +* gsl_wavelet_transform_inverse (C function): Wavelet transforms in one dimension. + (line 6) +* gsl_wavelet_type (C type): Initialization. (line 21) +* gsl_wavelet_workspace (C type): Initialization. (line 57) +* gsl_wavelet_workspace_alloc (C function): Initialization. (line 62) +* gsl_wavelet_workspace_free (C function): Initialization. (line 74) +* Gumbel distribution (Type 1): The Type-1 Gumbel Distribution. + (line 6) +* Gumbel distribution (Type 2): The Type-2 Gumbel Distribution. + (line 6) +* Haar wavelets: Initialization. (line 30) +* Hankel transforms, discrete: References and Further Reading<26>. + (line 54) +* HAVE_INLINE: ANSI C Compliance. (line 25) +* hazard function, normal distribution: Probability functions. + (line 21) +* HBOOK: References and Further Reading<18>. + (line 6) +* header files, including: An Example Program. (line 28) +* heapsort: Examples<6>. (line 111) +* HEMM, Level-3 BLAS: Level 3. (line 63) +* HEMV, Level-2 BLAS: Level 2. (line 88) +* HER, Level-2 BLAS: Level 2. (line 145) +* HER2, Level-2 BLAS: Level 2. (line 171) +* HER2K, Level-3 BLAS: Level 3. (line 217) +* HERK, Level-3 BLAS: Level 3. (line 170) +* Hermite functions: Hermite Polynomials and Functions. + (line 6) +* Hermite functions, derivatives: Derivatives of Hermite Functions. + (line 6) +* Hermite functions, zeros: Zeros of Hermite Polynomials and Hermite Functions. + (line 6) +* Hermite polynomials: Hermite Polynomials and Functions. + (line 6) +* Hermite polynomials, derivatives: Derivatives of Hermite Polynomials. + (line 6) +* Hermite polynomials, zeros: Zeros of Hermite Polynomials and Hermite Functions. + (line 6) +* hermitian matrix, complex, eigensystem: Complex Hermitian Matrices. + (line 9) +* Hessenberg decomposition: Tridiagonal Decomposition of Hermitian Matrices. + (line 44) +* Hessenberg triangular decomposition: Hessenberg Decomposition of Real Matrices. + (line 53) +* histogram statistics: Searching histogram ranges. + (line 22) +* histogram, from ntuple: Histogramming ntuple values. + (line 41) +* histograms: Impulse Detection Example. + (line 89) +* histograms, random sampling from: Resampling from histograms. + (line 17) +* Householder linear solver: Householder Transformations. + (line 56) +* Householder matrix: Givens Rotations. (line 35) +* Householder transformation: Givens Rotations. (line 35) +* how to report: No Warranty. (line 12) +* Hurwitz Zeta Function: Hurwitz Zeta Function. + (line 6) +* HYBRID algorithm, unscaled without derivatives: Algorithms without Derivatives. + (line 27) +* HYBRID algorithms for nonlinear systems: Algorithms using Derivatives. + (line 18) +* HYBRIDJ algorithm: Algorithms using Derivatives. + (line 75) +* HYBRIDS algorithm, scaled without derivatives: Algorithms without Derivatives. + (line 18) +* HYBRIDSJ algorithm: Algorithms using Derivatives. + (line 18) +* hydrogen atom: Coulomb Functions. (line 6) +* hyperbolic cosine, inverse: Elementary Functions. + (line 37) +* hyperbolic functions, complex numbers: Inverse Complex Trigonometric Functions. + (line 65) +* hyperbolic integrals: Hyperbolic Integrals. + (line 6) +* hyperbolic sine, inverse: Elementary Functions. + (line 42) +* hyperbolic space: Legendre Functions and Spherical Harmonics. + (line 6) +* hyperbolic tangent, inverse: Elementary Functions. + (line 47) +* hypergeometric functions: Hypergeometric Functions. + (line 6) +* hypergeometric random variates: The Hypergeometric Distribution. + (line 6) +* hypot: Elementary Functions. + (line 24) +* hypot function, special functions: Circular Trigonometric Functions. + (line 16) +* I(x), Bessel Functions: Regular Modified Cylindrical Bessel Functions. + (line 6) +* i(x), Bessel Functions: Regular Modified Spherical Bessel Functions. + (line 6) +* identity matrix: Accessing matrix elements. + (line 49) +* identity permutation: Permutation allocation. + (line 21) +* IEEE exceptions: Representation of floating point numbers. + (line 136) +* IEEE floating point: References and Further Reading<38>. + (line 18) +* IEEE format for floating point numbers: IEEE floating-point arithmetic. + (line 11) +* IEEE infinity, defined as a macro: Mathematical Constants. + (line 59) +* IEEE NaN, defined as a macro: Infinities and Not-a-number. + (line 16) +* illumination, units of: Viscosity. (line 13) +* imperial units: Measurement of Time. (line 22) +* Implicit Euler method: Stepping Functions. (line 127) +* Implicit Runge-Kutta method: Stepping Functions. (line 135) +* importance sampling, VEGAS: MISER. (line 158) +* including GSL header files: An Example Program. (line 29) +* incomplete Beta function, normalized: Incomplete Beta Function. + (line 6) +* incomplete Fermi-Dirac integral: Incomplete Fermi-Dirac Integrals. + (line 6) +* incomplete Gamma function: Incomplete Gamma Functions. + (line 15) +* indirect sorting: Sorting objects. (line 57) +* indirect sorting, of vector elements: Sorting vectors. (line 47) +* infinity, defined as a macro: Mathematical Constants. + (line 60) +* infinity, IEEE format: Representation of floating point numbers. + (line 30) +* info-gsl mailing list: GSL is Free Software. + (line 45) +* initial value problems, differential equations: References and Further Reading<20>. + (line 11) +* initializing matrices: Accessing matrix elements. + (line 49) +* initializing vectors: Accessing vector elements. + (line 74) +* inline functions: ANSI C Compliance. (line 25) +* integer powers: Power Function. (line 6) +* integrals, exponential: Exponential Integrals. + (line 6) +* integration, numerical (quadrature): References and Further Reading<11>. + (line 67) +* interpolating quadrature: Fixed point quadratures. + (line 6) +* interpolation: References and Further Reading<21>. + (line 47) +* interpolation, using Chebyshev polynomials: References and Further Reading<23>. + (line 14) +* inverse complex trigonometric functions: Complex Trigonometric Functions. + (line 35) +* inverse cumulative distribution functions: References. (line 14) +* inverse hyperbolic cosine: Elementary Functions. + (line 37) +* inverse hyperbolic functions, complex numbers: Complex Hyperbolic Functions. + (line 35) +* inverse hyperbolic sine: Elementary Functions. + (line 42) +* inverse hyperbolic tangent: Elementary Functions. + (line 47) +* inverse of a matrix, by LU decomposition: LU Decomposition. (line 77) +* inverting a permutation: Permutation functions. + (line 10) +* Irregular Cylindrical Bessel Functions: Irregular Cylindrical Bessel Functions. + (line 6) +* Irregular Modified Bessel Functions, Fractional Order: Irregular Modified Bessel Functions—Fractional Order. + (line 6) +* Irregular Modified Cylindrical Bessel Functions: Irregular Modified Cylindrical Bessel Functions. + (line 6) +* Irregular Modified Spherical Bessel Functions: Irregular Modified Spherical Bessel Functions. + (line 6) +* Irregular Spherical Bessel Functions: Irregular Spherical Bessel Functions. + (line 6) +* iterating through combinations: Combination functions. + (line 6) +* iterating through multisets: Multiset functions. (line 6) +* iterating through permutations: Permutation functions. + (line 16) +* iterations (C variable): VEGAS. (line 173) +* iterative refinement of solutions in linear systems: LU Decomposition. + (line 64) +* J(x), Bessel Functions: Regular Cylindrical Bessel Functions. + (line 6) +* j(x), Bessel Functions: Regular Spherical Bessel Functions. + (line 6) +* Jacobi elliptic functions: Elliptic Functions Jacobi. + (line 6) +* Jacobi orthogonalization: Singular Value Decomposition. + (line 61) +* Jacobian matrix, ODEs: Defining the ODE System. + (line 42) +* Jacobian matrix, root finding: Overview<3>. (line 41) +* K(x), Bessel Functions: Irregular Modified Cylindrical Bessel Functions. + (line 6) +* k(x), Bessel Functions: Irregular Modified Spherical Bessel Functions. + (line 6) +* knots, basis splines: Initializing the B-splines solver. + (line 23) +* kurtosis: Absolute deviation. (line 32) +* Laguerre functions: Laguerre Functions. (line 6) +* Lambert function: Lambert W Functions. (line 6) +* Landau distribution: The Landau Distribution. + (line 6) +* LAPACK: References and Further Reading<10>. + (line 18) +* Laplace distribution: The Laplace Distribution. + (line 6) +* large dense linear least squares: Robust linear regression. + (line 323) +* large linear least squares, normal equations: Large dense linear systems. + (line 46) +* large linear least squares, routines: Large Dense Linear Systems Solution Steps. + (line 30) +* large linear least squares, steps: Tall Skinny QR TSQR Approach. + (line 38) +* large linear least squares, TSQR: Normal Equations Approach. + (line 30) +* ldexp: Elementary Functions. + (line 52) +* LD_LIBRARY_PATH: Linking with an alternative BLAS library. + (line 25) +* leading dimension, matrices: Example programs for vectors. + (line 100) +* least squares fit: References and Further Reading<31>. + (line 24) +* least squares troubleshooting: Large Dense Linear Least Squares Routines. + (line 180) +* least squares, covariance of best-fit parameters: High Level Driver. + (line 39) +* least squares, nonlinear: References and Further Reading<32>. + (line 55) +* least squares, regularized: Multi-parameter regression. + (line 177) +* least squares, robust: Regularized regression. + (line 380) +* Legendre forms of elliptic integrals: Definition of Legendre Forms. + (line 6) +* Legendre functions: Legendre Functions and Spherical Harmonics. + (line 6) +* Legendre polynomials: Legendre Functions and Spherical Harmonics. + (line 6) +* length, computed accurately using hypot: Elementary Functions. + (line 24) +* length, computed accurately using hypot3: Elementary Functions. + (line 30) +* Levenberg-Marquardt algorithm: Solving the Trust Region Subproblem TRS. + (line 29) +* Levenberg-Marquardt algorithm, geodesic acceleration: Levenberg-Marquardt. + (line 34) +* Levin u-transform: References and Further Reading<24>. + (line 12) +* Levy distribution: The Levy alpha-Stable Distributions. + (line 6) +* Levy distribution, skew: The Levy skew alpha-Stable Distribution. + (line 6) +* libraries, linking with: Compiling and Linking. + (line 24) +* libraries, shared: Linking with an alternative BLAS library. + (line 26) +* license of GSL: Top. (line 12) +* light, units of: Viscosity. (line 14) +* linear algebra: References and Further Reading<8>. + (line 33) +* linear algebra, BLAS: References and Further Reading<7>. + (line 15) +* linear algebra, sparse: References and Further Reading<36>. + (line 13) +* linear interpolation: 1D Interpolation Types. + (line 10) +* linear least squares, large: Robust linear regression. + (line 322) +* linear regression: Overview<5>. (line 60) +* linear systems: LU Decomposition. (line 42) +* linear systems, refinement of solutions: LU Decomposition. (line 64) +* linking with GSL libraries: Compiling and Linking. + (line 24) +* location estimation: Order Statistics. (line 22) +* log1p: Elementary Functions. + (line 12) +* logarithm and related functions: Logarithm and Related Functions. + (line 6) +* logarithm of Beta function: Beta Functions. (line 14) +* logarithm of combinatorial factor C(m: Factorials. (line 51) +* logarithm of complex number: Elementary Complex Functions. + (line 33) +* logarithm of cosh function, special functions: Hyperbolic Trigonometric Functions. + (line 11) +* logarithm of double factorial: Factorials. (line 36) +* logarithm of factorial: Factorials. (line 27) +* logarithm of Gamma function: Gamma Functions. (line 23) +* logarithm of Pochhammer symbol: Pochhammer Symbol. (line 16) +* logarithm of sinh function: Hyperbolic Trigonometric Functions. + (line 6) +* logarithm of the determinant of a matrix: LU Decomposition. (line 101) +* logarithm, computed accurately near 1: Elementary Functions. + (line 12) +* Logarithmic random variates: The Hypergeometric Distribution. + (line 41) +* Logistic distribution: The Logistic Distribution. + (line 6) +* Lognormal distribution: The Lognormal Distribution. + (line 6) +* low discrepancy sequences: Acknowledgements. (line 12) +* Low-level CBLAS: Autoconf Macros. (line 107) +* LU decomposition: Linear Algebra. (line 15) +* macros for mathematical constants: Mathematical Functions. + (line 14) +* magnitude of complex number: Properties of complex numbers. + (line 11) +* mailing list: No Warranty. (line 12) +* mailing list archives: Reporting Bugs. (line 31) +* mailing list for GSL announcements: GSL is Free Software. + (line 46) +* mantissa, IEEE format: IEEE floating-point arithmetic. + (line 11) +* mass, units of: Volume Area and Length. + (line 42) +* mathematical constants, defined as macros: Mathematical Functions. + (line 14) +* mathematical functions, elementary: Examples. (line 38) +* Mathieu Function Characteristic Values: Mathieu Function Characteristic Values. + (line 6) +* Mathieu functions: Mathieu Functions. (line 6) +* matrices: Example programs for vectors. + (line 100) +* matrices, initializing: Accessing matrix elements. + (line 49) +* matrices, range-checking: Matrix allocation. (line 38) +* matrices, sparse: References and Further Reading<34>. + (line 22) +* matrix determinant: LU Decomposition. (line 91) +* matrix diagonal: Creating row and column views. + (line 67) +* matrix factorization: References and Further Reading<8>. + (line 33) +* matrix inverse: LU Decomposition. (line 77) +* matrix square root, Cholesky decomposition: Singular Value Decomposition. + (line 94) +* matrix subdiagonal: Creating row and column views. + (line 80) +* matrix superdiagonal: Creating row and column views. + (line 94) +* matrix, constant: Accessing matrix elements. + (line 48) +* matrix, identity: Accessing matrix elements. + (line 49) +* matrix, operations: References and Further Reading<7>. + (line 15) +* matrix, zero: Accessing matrix elements. + (line 49) +* max: References and Further Reading<14>. + (line 51) +* maximal phase, Daubechies wavelets: Initialization. (line 23) +* maximization, see minimization: References and Further Reading<28>. + (line 17) +* maximum of two numbers: Maximum and Minimum functions. + (line 10) +* maximum value, from histogram: Searching histogram ranges. + (line 22) +* mean: References and Further Reading<14>. + (line 52) +* mean value, from histogram: Histogram Statistics. + (line 28) +* mean, trimmed: Robust Location Estimates. + (line 16) +* mean, truncated: Robust Location Estimates. + (line 16) +* median absolute deviation: Robust Scale Estimates. + (line 12) +* Mills’ ratio, inverse: Probability functions. + (line 21) +* min: References and Further Reading<14>. + (line 52) +* minimization, BFGS algorithm: Algorithms with Derivatives. + (line 43) +* minimization, caveats: Overview<2>. (line 45) +* minimization, conjugate gradient algorithm: Algorithms with Derivatives. + (line 15) +* minimization, multidimensional: References and Further Reading<30>. + (line 29) +* minimization, one-dimensional: References and Further Reading<28>. + (line 17) +* minimization, overview: One Dimensional Minimization. + (line 20) +* minimization, Polak-Ribiere algorithm: Algorithms with Derivatives. + (line 34) +* minimization, providing a function to minimize: Initializing the Minimizer. + (line 60) +* minimization, simplex algorithm: Algorithms without Derivatives<2>. + (line 14) +* minimization, steepest descent algorithm: Algorithms with Derivatives. + (line 65) +* minimization, stopping parameters: Iteration<2>. (line 56) +* minimum finding, Brent’s method: Minimization Algorithms. + (line 33) +* minimum finding, golden section algorithm: Minimization Algorithms. + (line 15) +* minimum of two numbers: Maximum and Minimum functions. + (line 15) +* minimum value, from histogram: Searching histogram ranges. + (line 21) +* MINPACK, minimization algorithms: Algorithms using Derivatives. + (line 18) +* min_calls (C variable): MISER. (line 111) +* min_calls_per_bisection (C variable): MISER. (line 121) +* MISCFUN: References and Further Reading<3>. + (line 15) +* MISER monte carlo integration: PLAIN Monte Carlo. (line 64) +* Mixed-radix FFT, complex data: Radix-2 FFT routines for complex data. + (line 128) +* Mixed-radix FFT, real data: Radix-2 FFT routines for real data. + (line 101) +* mode (C variable): VEGAS. (line 194) +* Modified Bessel Functions, Fractional Order: Regular Modified Bessel Functions—Fractional Order. + (line 6) +* Modified Cholesky Decomposition: Pivoted Cholesky Decomposition. + (line 106) +* Modified Clenshaw-Curtis quadrature: Integrands with weight functions. + (line 6) +* Modified Cylindrical Bessel Functions: Regular Modified Cylindrical Bessel Functions. + (line 6) +* Modified Givens Rotation, BLAS: Level 1. (line 153) +* Modified Newton’s method for nonlinear systems: Algorithms using Derivatives. + (line 102) +* Modified Spherical Bessel Functions: Regular Modified Spherical Bessel Functions. + (line 6) +* Monte Carlo integration: References and Further Reading<18>. + (line 9) +* moving maximum: Moving Variance and Standard Deviation. + (line 32) +* moving mean: Allocation for Moving Window Statistics. + (line 29) +* moving median: Moving Sum. (line 20) +* moving median absolute deviation: Robust Scale Estimation. + (line 17) +* moving minimum: Moving Variance and Standard Deviation. + (line 32) +* moving quantile range: Moving MAD. (line 30) +* moving standard deviation: Moving Mean. (line 25) +* moving sum: Moving Minimum and Maximum. + (line 39) +* moving variance: Moving Mean. (line 25) +* moving window accumulators: Moving<2>. (line 20) +* moving window statistics: References and Further Reading<16>. + (line 14) +* moving window, allocation: Handling Endpoints. (line 40) +* MRG, multiple recursive random number generator: Random number generator algorithms. + (line 126) +* MT19937 random number generator: Random number generator algorithms. + (line 19) +* multi-parameter regression: Linear regression without a constant term. + (line 48) +* multidimensional integration: References and Further Reading<18>. + (line 8) +* multidimensional root finding, Broyden algorithm: Algorithms without Derivatives. + (line 54) +* multidimensional root finding, overview: Multidimensional Root-Finding. + (line 20) +* multidimensional root finding, providing a function to solve: Initializing the Solver<2>. + (line 80) +* Multimin, caveats: Overview<4>. (line 47) +* Multinomial distribution: The Multinomial Distribution. + (line 6) +* multiplication: Elementary Operations. + (line 6) +* multisets: References and Further Reading<6>. + (line 11) +* multistep methods, ODEs: Stepping Functions. (line 156) +* n): Factorials. (line 44) +* n) <1>: Factorials. (line 51) +* N-dimensional random direction vector: Spherical Vector Distributions. + (line 42) +* NaN, defined as a macro: Infinities and Not-a-number. + (line 16) +* nautical units: Imperial Units. (line 25) +* Negative Binomial distribution, random variates: The Negative Binomial Distribution. + (line 6) +* Nelder-Mead simplex algorithm for minimization: Algorithms without Derivatives<2>. + (line 14) +* Newton algorithm, discrete: Algorithms without Derivatives. + (line 32) +* Newton algorithm, globally convergent: Algorithms using Derivatives. + (line 102) +* Newton’s method for finding roots: Root Finding Algorithms using Derivatives. + (line 17) +* Newton’s method for systems of nonlinear equations: Algorithms using Derivatives. + (line 82) +* Niederreiter sequence: Acknowledgements. (line 11) +* NIST Statistical Reference Datasets: References and Further Reading<32>. + (line 16) +* non-normalized incomplete Gamma function: Incomplete Gamma Functions. + (line 6) +* nonlinear equation, solutions of: References and Further Reading<27>. + (line 14) +* nonlinear fitting, stopping parameters, convergence: Iteration<5>. + (line 119) +* nonlinear functions, minimization: References and Further Reading<28>. + (line 16) +* nonlinear least squares: References and Further Reading<32>. + (line 56) +* nonlinear least squares, dogleg: Levenberg-Marquardt with Geodesic Acceleration. + (line 29) +* nonlinear least squares, double dogleg: Dogleg. (line 26) +* nonlinear least squares, levenberg-marquardt: Solving the Trust Region Subproblem TRS. + (line 29) +* nonlinear least squares, levenberg-marquardt, geodesic acceleration: Levenberg-Marquardt. + (line 33) +* nonlinear least squares, overview: Nonlinear Least-Squares Fitting. + (line 27) +* nonlinear systems of equations, solution of: References and Further Reading<29>. + (line 13) +* nonsymmetric matrix, real, eigensystem: Real Nonsymmetric Matrices. + (line 6) +* Nordsieck form: Stepping Functions. (line 156) +* normalized form, IEEE format: Representation of floating point numbers. + (line 14) +* normalized incomplete Beta function: Incomplete Beta Function. + (line 6) +* Not-a-number, defined as a macro: Infinities and Not-a-number. + (line 16) +* NRM2, Level-1 BLAS: Level 1. (line 40) +* ntuples: Example programs for 2D histograms. + (line 72) +* nuclear physics, constants: Astronomy and Astrophysics. + (line 29) +* numerical constants, defined as macros: Mathematical Functions. + (line 14) +* numerical derivatives: References and Further Reading<22>. + (line 18) +* numerical integration (quadrature): References and Further Reading<11>. + (line 67) +* obtaining GSL: GSL is Free Software. + (line 46) +* ODEs, initial value problems: References and Further Reading<20>. + (line 10) +* online statistics: References and Further Reading<15>. + (line 39) +* online statistics <1>: References and Further Reading<16>. + (line 13) +* optimization, combinatorial: References and Further Reading<19>. + (line 21) +* optimization, see minimization: References and Further Reading<28>. + (line 17) +* optimized functions, alternatives: Portability functions. + (line 33) +* ordering, matrix elements: Example programs for vectors. + (line 99) +* ordinary differential equations, initial value problem: References and Further Reading<20>. + (line 11) +* oscillatory functions, numerical integration of: QAWO adaptive integration for oscillatory functions. + (line 6) +* ostream (C variable): VEGAS. (line 204) +* overflow, IEEE exceptions: Representation of floating point numbers. + (line 135) +* Pareto distribution: The Pareto Distribution. + (line 6) +* PAW: References and Further Reading<18>. + (line 6) +* permutations: References and Further Reading<4>. + (line 12) +* physical constants: References and Further Reading<37>. + (line 15) +* physical dimension, matrices: Example programs for vectors. + (line 100) +* pi, defined as a macro: Mathematical Constants. + (line 9) +* Pivoted Cholesky Decomposition: Cholesky Decomposition. + (line 147) +* plain Monte Carlo: Interface. (line 80) +* Pochhammer symbol: Pochhammer Symbol. (line 6) +* Poisson random numbers: The Poisson Distribution. + (line 6) +* Polak-Ribiere algorithm, minimization: Algorithms with Derivatives. + (line 34) +* polar form of complex numbers: Complex Numbers. (line 21) +* polar to rectangular conversion: Conversion Functions. + (line 6) +* polygamma functions: Psi Digamma Function. + (line 6) +* polynomial evaluation: Polynomials. (line 13) +* polynomial interpolation: 1D Interpolation Types. + (line 15) +* polynomials, roots of: References and Further Reading. + (line 32) +* power function: Power Function. (line 6) +* power of complex number: Elementary Complex Functions. + (line 17) +* power, units of: Mass and Weight. (line 50) +* precision, IEEE arithmetic: Representation of floating point numbers. + (line 136) +* predictor-corrector method, ODEs: Stepping Functions. (line 156) +* prefixes: Force and Energy. (line 22) +* pressure: Thermal Energy and Power. + (line 22) +* Prince-Dormand, Runge-Kutta method: Stepping Functions. (line 123) +* printers units: Speed and Nautical Units. + (line 25) +* probability distribution, from histogram: Resampling from histograms. + (line 18) +* probability distributions, from histograms: Reading and writing histograms. + (line 64) +* projection of ntuples: Histogramming ntuple values. + (line 41) +* psi function: Psi Digamma Function. + (line 6) +* QAG quadrature algorithm: QAG adaptive integration. + (line 6) +* QAGI quadrature algorithm: QAGI adaptive integration on infinite intervals. + (line 6) +* QAGP quadrature algorithm: QAGP adaptive integration with known singular points. + (line 6) +* QAGS quadrature algorithm: QAGS adaptive integration with singularities. + (line 6) +* QAWC quadrature algorithm: QAWC adaptive integration for Cauchy principal values. + (line 6) +* QAWF quadrature algorithm: QAWF adaptive integration for Fourier integrals. + (line 6) +* QAWO quadrature algorithm: QAWO adaptive integration for oscillatory functions. + (line 6) +* QAWS quadrature algorithm: QAWS adaptive integration for singular functions. + (line 6) +* Qn statistic: Statistic. (line 36) +* QNG quadrature algorithm: QNG non-adaptive Gauss-Kronrod integration. + (line 6) +* QR decomposition: LU Decomposition. (line 116) +* QR decomposition with column pivoting: QR Decomposition. (line 144) +* QUADPACK: References and Further Reading<11>. + (line 66) +* quadratic equation, solving: Divided Difference Representation of Polynomials. + (line 79) +* quadrature: References and Further Reading<11>. + (line 67) +* quadrature, fixed point: Fixed point quadratures. + (line 6) +* quadrature, interpolating: Fixed point quadratures. + (line 6) +* quantile functions: References. (line 13) +* quasi-random sequences: Acknowledgements. (line 12) +* R250 shift-register random number generator: Other random number generators. + (line 62) +* Racah coefficients: Coupling Coefficients. + (line 6) +* Radial Mathieu Functions: Radial Mathieu Functions. + (line 6) +* radioactivity: Light and Illumination. + (line 34) +* Radix-2 FFT for real data: Overview of real data FFTs. + (line 49) +* Radix-2 FFT, complex data: Overview of complex data FFTs. + (line 72) +* rand, BSD random number generator: Unix random number generators. + (line 17) +* rand48 random number generator: Unix random number generators. + (line 59) +* random number distributions: References. (line 14) +* random number generators: References and Further Reading<12>. + (line 33) +* random sampling from histograms: Resampling from histograms. + (line 18) +* RANDU random number generator: Other random number generators. + (line 113) +* RANF random number generator: Other random number generators. + (line 22) +* range: References and Further Reading<14>. + (line 52) +* range-checking for matrices: Matrix allocation. (line 37) +* range-checking for vectors: Vector allocation. (line 36) +* RANLUX random number generator: Random number generator algorithms. + (line 74) +* RANLXD random number generator: Random number generator algorithms. + (line 67) +* RANLXS random number generator: Random number generator algorithms. + (line 47) +* RANMAR random number generator: Other random number generators. + (line 55) +* RANMAR random number generator <1>: Other random number generators. + (line 123) +* Rayleigh distribution: The Rayleigh Distribution. + (line 6) +* Rayleigh Tail distribution: The Rayleigh Tail Distribution. + (line 6) +* real nonsymmetric matrix, eigensystem: Real Nonsymmetric Matrices. + (line 6) +* real symmetric matrix, eigensystem: Real Symmetric Matrices. + (line 6) +* Reciprocal Gamma function: Gamma Functions. (line 54) +* rectangular to polar conversion: Conversion Functions. + (line 6) +* recursive stratified sampling, MISER: PLAIN Monte Carlo. (line 63) +* reduction of angular variables: Restriction Functions. + (line 6) +* refinement of solutions in linear systems: LU Decomposition. + (line 64) +* regression, least squares: References and Further Reading<31>. + (line 24) +* regression, ridge: Multi-parameter regression. + (line 178) +* regression, robust: Regularized regression. + (line 381) +* regression, Tikhonov: Multi-parameter regression. + (line 178) +* Regular Bessel Functions, Fractional Order: Regular Bessel Function—Fractional Order. + (line 6) +* Regular Bessel Functions, Zeros of: Zeros of Regular Bessel Functions. + (line 6) +* Regular Cylindrical Bessel Functions: Regular Cylindrical Bessel Functions. + (line 6) +* Regular Modified Bessel Functions, Fractional Order: Regular Modified Bessel Functions—Fractional Order. + (line 6) +* Regular Modified Cylindrical Bessel Functions: Regular Modified Cylindrical Bessel Functions. + (line 6) +* Regular Modified Spherical Bessel Functions: Regular Modified Spherical Bessel Functions. + (line 6) +* Regular Spherical Bessel Functions: Regular Spherical Bessel Functions. + (line 6) +* Regulated Gamma function: Gamma Functions. (line 43) +* relative Pochhammer symbol: Pochhammer Symbol. (line 31) +* reporting bugs in GSL: No Warranty. (line 12) +* representations of complex numbers: Complex Numbers. (line 21) +* resampling from histograms: Reading and writing histograms. + (line 65) +* residual, in nonlinear systems of equations: Search Stopping Parameters<2>. + (line 32) +* reversing a permutation: Permutation functions. + (line 6) +* ridge regression: Multi-parameter regression. + (line 178) +* Riemann Zeta Function: Riemann Zeta Function. + (line 6) +* RK2, Runge-Kutta method: Stepping Functions. (line 103) +* RK4, Runge-Kutta method: Stepping Functions. (line 107) +* RKF45, Runge-Kutta-Fehlberg method: Stepping Functions. (line 114) +* robust location estimators: Order Statistics. (line 22) +* robust regression: Regularized regression. + (line 381) +* robust scale estimators: Gastwirth Estimator. (line 24) +* rolling maximum: Moving Variance and Standard Deviation. + (line 31) +* rolling mean: Allocation for Moving Window Statistics. + (line 28) +* rolling median: Moving Sum. (line 19) +* rolling median absolute deviation: Robust Scale Estimation. + (line 17) +* rolling minimum: Moving Variance and Standard Deviation. + (line 32) +* rolling quantile range: Moving MAD. (line 29) +* rolling standard deviation: Moving Mean. (line 24) +* rolling sum: Moving Minimum and Maximum. + (line 38) +* rolling variance: Moving Mean. (line 25) +* rolling window accumulators: Moving<2>. (line 19) +* root finding: References and Further Reading<27>. + (line 15) +* root finding, bisection algorithm: Root Bracketing Algorithms. + (line 18) +* root finding, Brent’s method: Root Bracketing Algorithms. + (line 52) +* root finding, caveats: Overview. (line 39) +* root finding, false position algorithm: Root Bracketing Algorithms. + (line 34) +* root finding, initial guess: Providing the function to solve. + (line 121) +* root finding, Newton’s method: Root Finding Algorithms using Derivatives. + (line 17) +* root finding, overview: One Dimensional Root-Finding. + (line 19) +* root finding, providing a function to solve: Initializing the Solver. + (line 74) +* root finding, search bounds: Providing the function to solve. + (line 122) +* root finding, secant method: Root Finding Algorithms using Derivatives. + (line 31) +* root finding, Steffenson’s method: Root Finding Algorithms using Derivatives. + (line 62) +* root finding, stopping parameters: Iteration. (line 50) +* root finding, stopping parameters <1>: Iteration<3>. (line 59) +* roots: References and Further Reading<27>. + (line 15) +* ROTG, Level-1 BLAS: Level 1. (line 128) +* rounding mode: Representation of floating point numbers. + (line 136) +* Runge-Kutta Cash-Karp method: Stepping Functions. (line 119) +* Runge-Kutta methods, ordinary differential equations: Stepping Functions. + (line 103) +* Runge-Kutta Prince-Dormand method: Stepping Functions. (line 123) +* running statistics: References and Further Reading<15>. + (line 40) +* safe comparison of floating point numbers: Approximate Comparison of Floating Point Numbers. + (line 12) +* safeguarded step-length algorithm: Minimization Algorithms. + (line 50) +* sampling from histograms: Reading and writing histograms. + (line 65) +* sampling from histograms <1>: Resampling from histograms. + (line 18) +* SAXPY, Level-1 BLAS: Level 1. (line 102) +* SCAL, Level-1 BLAS: Level 1. (line 114) +* scale estimation: Gastwirth Estimator. (line 24) +* schedule, cooling: Simulated Annealing algorithm. + (line 20) +* se(q,x), Mathieu function: Angular Mathieu Functions. + (line 6) +* secant method for finding roots: Root Finding Algorithms using Derivatives. + (line 31) +* selection function, ntuples: Histogramming ntuple values. + (line 13) +* series, acceleration: References and Further Reading<24>. + (line 12) +* shared libraries: Linking with an alternative BLAS library. + (line 26) +* shell prompt: Further Information. (line 27) +* Shi(x): Hyperbolic Integrals. + (line 6) +* shift-register random number generator: Other random number generators. + (line 62) +* Si(x): Trigonometric Integrals. + (line 6) +* sign bit, IEEE format: IEEE floating-point arithmetic. + (line 11) +* sign of the determinant of a matrix: LU Decomposition. (line 110) +* simplex algorithm, minimization: Algorithms without Derivatives<2>. + (line 14) +* simulated annealing: References and Further Reading<19>. + (line 21) +* sin, of complex number: Complex Trigonometric Functions. + (line 6) +* sine function, special functions: Circular Trigonometric Functions. + (line 6) +* single precision, IEEE format: Representation of floating point numbers. + (line 34) +* singular functions, numerical integration of: QAWS adaptive integration for singular functions. + (line 6) +* singular points, specifying positions in quadrature: QAGP adaptive integration with known singular points. + (line 6) +* singular value decomposition: Complete Orthogonal Decomposition. + (line 116) +* Skew Levy distribution: The Levy skew alpha-Stable Distribution. + (line 6) +* skewness: Absolute deviation. (line 33) +* slope, see numerical derivative: References and Further Reading<22>. + (line 17) +* Sn statistic: Median Absolute Deviation MAD. + (line 29) +* Sobol sequence: Acknowledgements. (line 12) +* solution of: LU Decomposition. (line 42) +* solution of linear system by Householder transformations: Householder Transformations. + (line 57) +* solution of linear systems, Ax=b: References and Further Reading<8>. + (line 33) +* solving a nonlinear equation: References and Further Reading<27>. + (line 15) +* solving nonlinear systems of equations: References and Further Reading<29>. + (line 13) +* sorting: Examples<6>. (line 112) +* sorting eigenvalues and eigenvectors: Sorting Eigenvalues and Eigenvectors. + (line 6) +* sorting vector elements: Sorting vectors. (line 22) +* source code, reuse in applications: Deprecated Functions. + (line 13) +* sparse BLAS: References and Further Reading<35>. + (line 14) +* sparse BLAS, references: Sparse BLAS operations. + (line 22) +* sparse linear algebra: References and Further Reading<36>. + (line 14) +* sparse linear algebra, examples: Iterating the Sparse Linear System. + (line 58) +* sparse linear algebra, iterative solvers: Overview<9>. (line 20) +* sparse linear algebra, overview: Sparse Linear Algebra. + (line 14) +* sparse linear algebra, references: Examples<35>. (line 136) +* sparse matrices: References and Further Reading<34>. + (line 23) +* sparse matrices, accessing elements: Allocation. (line 72) +* sparse matrices, allocation: Overview<8>. (line 73) +* sparse matrices, BLAS operations: Sparse BLAS Support. (line 14) +* sparse matrices, compression: Finding Maximum and Minimum Elements. + (line 12) +* sparse matrices, conversion: Compressed Format. (line 24) +* sparse matrices, copying: Reading and Writing Matrices. + (line 45) +* sparse matrices, examples: Conversion Between Sparse and Dense Matrices. + (line 23) +* sparse matrices, exchanging rows and columns: Copying Matrices. + (line 12) +* sparse matrices, initializing elements: Accessing Matrix Elements. + (line 25) +* sparse matrices, iterative solvers: Overview<9>. (line 20) +* sparse matrices, min/max elements: Matrix Properties. (line 16) +* sparse matrices, operations: Exchanging Rows and Columns. + (line 30) +* sparse matrices, overview: Sparse Matrices. (line 18) +* sparse matrices, properties: Matrix Operations. (line 17) +* sparse matrices, reading: Initializing Matrix Elements. + (line 16) +* sparse matrices, references: Examples<34>. (line 133) +* sparse matrices, writing: Initializing Matrix Elements. + (line 15) +* sparse, iterative solvers: Overview<9>. (line 19) +* special functions: References and Further Reading<2>. + (line 28) +* special functions <1>: Hyperbolic Trigonometric Functions. + (line 6) +* Spherical Bessel Functions: Regular Spherical Bessel Functions. + (line 6) +* spherical harmonics: Legendre Functions and Spherical Harmonics. + (line 6) +* spherical random variates, 2D: Spherical Vector Distributions. + (line 10) +* spherical random variates, 3D: Spherical Vector Distributions. + (line 32) +* spherical random variates, N-dimensional: Spherical Vector Distributions. + (line 42) +* spline: References and Further Reading<21>. + (line 46) +* splines, basis: References and Further Reading<33>. + (line 37) +* square root of a matrix, Cholesky decomposition: Singular Value Decomposition. + (line 95) +* square root of complex number: Elementary Complex Functions. + (line 6) +* stage (C variable): VEGAS. (line 178) +* standard deviation: References and Further Reading<14>. + (line 52) +* standard deviation, from histogram: Histogram Statistics. + (line 35) +* standards conformance, ANSI C: Conventions used in this manual. + (line 20) +* Statistical Reference Datasets (StRD): References and Further Reading<32>. + (line 16) +* statistics: References and Further Reading<14>. + (line 52) +* statistics, from histogram: Searching histogram ranges. + (line 22) +* statistics, moving window: References and Further Reading<16>. + (line 14) +* steepest descent algorithm, minimization: Algorithms with Derivatives. + (line 65) +* Steffenson’s method for finding roots: Root Finding Algorithms using Derivatives. + (line 62) +* stratified sampling in Monte Carlo integration: References and Further Reading<18>. + (line 9) +* stride, of vector index: Example programs for blocks. + (line 27) +* Student t-distribution: The t-distribution. (line 14) +* subdiagonal, of a matrix: Creating row and column views. + (line 80) +* summation, acceleration: References and Further Reading<24>. + (line 12) +* superdiagonal, matrix: Creating row and column views. + (line 94) +* SVD: Complete Orthogonal Decomposition. + (line 117) +* SWAP, Level-1 BLAS: Level 1. (line 81) +* swapping permutation elements: Accessing permutation elements. + (line 17) +* SYMM, Level-3 BLAS: Level 3. (line 36) +* symmetric matrix, real, eigensystem: Real Symmetric Matrices. + (line 6) +* SYMV, Level-2 BLAS: Level 2. (line 73) +* synchrotron functions: Synchrotron Functions. + (line 6) +* SYR, Level-2 BLAS: Level 2. (line 133) +* SYR2, Level-2 BLAS: Level 2. (line 158) +* SYR2K, Level-3 BLAS: Level 3. (line 187) +* SYRK, Level-3 BLAS: Level 3. (line 145) +* systems of equations, nonlinear: References and Further Reading<29>. + (line 12) +* t-distribution: The t-distribution. (line 14) +* t-test: References and Further Reading<14>. + (line 52) +* tangent of complex number: Complex Trigonometric Functions. + (line 16) +* Tausworthe random number generator: Random number generator algorithms. + (line 144) +* Taylor coefficients, computation of: Factorials. (line 58) +* testing combination for validity: Combination properties. + (line 20) +* testing multiset for validity: Multiset properties. (line 20) +* testing permutation for validity: Permutation properties. + (line 15) +* thermal energy, units of: Mass and Weight. (line 49) +* Tikhonov regression: Multi-parameter regression. + (line 178) +* time units: Atomic and Nuclear Physics. + (line 79) +* trailing dimension, matrices: Example programs for vectors. + (line 100) +* transformation, Householder: Givens Rotations. (line 34) +* transforms, Hankel: References and Further Reading<26>. + (line 53) +* transforms, wavelet: References and Further Reading<25>. + (line 24) +* transport functions: Transport Functions. (line 6) +* traveling salesman problem: Trivial example. (line 114) +* triangular systems: Tridiagonal Systems. (line 71) +* tridiagonal decomposition: Modified Cholesky Decomposition. + (line 68) +* tridiagonal decomposition <1>: Tridiagonal Decomposition of Real Symmetric Matrices. + (line 43) +* tridiagonal systems: Householder solver for linear systems. + (line 21) +* trigonometric functions: Trigonometric Functions. + (line 6) +* trigonometric functions of complex numbers: Elementary Complex Functions. + (line 50) +* trigonometric integrals: Trigonometric Integrals. + (line 6) +* trimmed mean: Robust Location Estimates. + (line 16) +* TRMM, Level-3 BLAS: Level 3. (line 82) +* TRMV, Level-2 BLAS: Level 2. (line 28) +* TRSM, Level-3 BLAS: Level 3. (line 113) +* TRSV, Level-2 BLAS: Level 2. (line 51) +* truncated mean: Robust Location Estimates. + (line 16) +* TSP: Trivial example. (line 115) +* TT800 random number generator: Other random number generators. + (line 79) +* two dimensional Gaussian distribution: The Bivariate Gaussian Distribution. + (line 6) +* two dimensional Gaussian distribution <1>: The Multivariate Gaussian Distribution. + (line 6) +* two dimensional histograms: Example programs for histograms. + (line 65) +* two-sided exponential distribution: The Laplace Distribution. + (line 6) +* Type 1 Gumbel distribution, random variates: The Type-1 Gumbel Distribution. + (line 6) +* Type 2 Gumbel distribution: The Type-2 Gumbel Distribution. + (line 6) +* u-transform for series: References and Further Reading<24>. + (line 12) +* underflow, IEEE exceptions: Representation of floating point numbers. + (line 136) +* uniform distribution: The Flat Uniform Distribution. + (line 6) +* units of: Thermal Energy and Power. + (line 21) +* units of <1>: Pressure. (line 33) +* units of <2>: Light and Illumination. + (line 33) +* units of <3>: Radioactivity. (line 17) +* units, conversion of: References and Further Reading<37>. + (line 14) +* units, imperial: Measurement of Time. (line 21) +* Unix random number generators, rand: Unix random number generators. + (line 17) +* Unix random number generators, rand48: Unix random number generators. + (line 17) +* unnormalized incomplete Gamma function: Incomplete Gamma Functions. + (line 6) +* unweighted linear fits: References and Further Reading<31>. + (line 23) +* value function, ntuples: Histogramming ntuple values. + (line 27) +* Van der Pol oscillator, example: Examples<22>. (line 6) +* variance: References and Further Reading<14>. + (line 52) +* variance, from histogram: Histogram Statistics. + (line 35) +* variance-covariance matrix, linear fits: Overview<5>. (line 48) +* VAX random number generator: Other random number generators. + (line 93) +* vector, operations: References and Further Reading<7>. + (line 15) +* vector, sorting elements of: Sorting vectors. (line 22) +* vectors: Example programs for blocks. + (line 28) +* vectors, initializing: Accessing vector elements. + (line 75) +* vectors, range-checking: Vector allocation. (line 36) +* VEGAS Monte Carlo integration: MISER. (line 159) +* verbose (C variable): VEGAS. (line 204) +* viscosity: Pressure. (line 34) +* volume units: Printers Units. (line 13) +* W function: Lambert W Functions. (line 6) +* warning options: Handling floating point exceptions. + (line 31) +* warranty (none): Obtaining GSL. (line 25) +* wavelet transforms: References and Further Reading<25>. + (line 25) +* website, developer information: Reporting Bugs. (line 31) +* Weibull distribution: The Weibull Distribution. + (line 6) +* weight, units of: Volume Area and Length. + (line 41) +* weighted linear fits: References and Further Reading<31>. + (line 24) +* Wigner coefficients: Coupling Coefficients. + (line 6) +* Wishart random variates: The Logarithmic Distribution. + (line 24) +* Y(x), Bessel Functions: Irregular Cylindrical Bessel Functions. + (line 6) +* y(x), Bessel Functions: Irregular Spherical Bessel Functions. + (line 6) +* zero finding: References and Further Reading<27>. + (line 15) +* zero matrix: Accessing matrix elements. + (line 49) +* zero, IEEE format: Representation of floating point numbers. + (line 30) +* Zeros of Regular Bessel Functions: Zeros of Regular Bessel Functions. + (line 6) +* Zeta functions: Zeta Functions. (line 6) +* Ziggurat method: The Gaussian Distribution. + (line 27) + + + +Tag Table: +Node: Top324 +Ref: index doc527 +Ref: 0527 +Node: Introduction25585 +Ref: intro introduction25676 +Ref: 125676 +Ref: intro doc25676 +Ref: 225676 +Ref: intro gnu-scientific-library25676 +Ref: 325676 +Node: Routines available in GSL26237 +Ref: intro routines-available-in-gsl26341 +Ref: 426341 +Node: GSL is Free Software29378 +Ref: intro gsl-is-free-software29504 +Ref: 529504 +Ref: GSL is Free Software-Footnote-131717 +Ref: GSL is Free Software-Footnote-231835 +Node: Obtaining GSL31884 +Ref: intro obtaining-gsl31996 +Ref: 631996 +Node: No Warranty32908 +Ref: intro no-warranty33014 +Ref: 733014 +Ref: No Warranty-Footnote-133420 +Node: Reporting Bugs33538 +Ref: intro reporting-bugs33650 +Ref: 833650 +Ref: Reporting Bugs-Footnote-134494 +Node: Further Information34548 +Ref: intro further-information34680 +Ref: 934680 +Node: Conventions used in this manual35565 +Ref: intro conventions-used-in-this-manual35674 +Ref: a35674 +Node: Using the Library36328 +Ref: usage doc36430 +Ref: b36430 +Ref: usage using-the-library36430 +Ref: c36430 +Node: An Example Program36914 +Ref: usage an-example-program37017 +Ref: d37017 +Ref: An Example Program-Footnote-137658 +Node: Compiling and Linking37765 +Ref: usage compiling-and-linking37893 +Ref: e37893 +Node: Linking programs with the library38874 +Ref: usage linking-programs-with-the-library39015 +Ref: f39015 +Ref: Linking programs with the library-Footnote-140308 +Ref: Linking programs with the library-Footnote-240344 +Node: Linking with an alternative BLAS library40401 +Ref: usage linking-with-an-alternative-blas-library40542 +Ref: 1040542 +Node: Shared Libraries41495 +Ref: usage shared-libraries41622 +Ref: 1241622 +Ref: Shared Libraries-Footnote-142987 +Node: ANSI C Compliance43038 +Ref: usage ansi-c-compliance43160 +Ref: 1343160 +Node: Inline functions44130 +Ref: usage inline-functions44247 +Ref: 1444247 +Ref: usage sec-inline-functions44247 +Ref: 1544247 +Node: Long double45709 +Ref: usage long-double45830 +Ref: 1745830 +Node: Portability functions47337 +Ref: usage id547473 +Ref: 1847473 +Ref: usage portability-functions47473 +Ref: 1947473 +Node: Alternative optimized functions48772 +Ref: usage alternative-optimized-functions48932 +Ref: 1b48932 +Node: Support for different numeric types50234 +Ref: usage support-for-different-numeric-types50395 +Ref: 1c50395 +Node: Compatibility with C++53339 +Ref: usage compatibility-with-c53487 +Ref: 1e53487 +Node: Aliasing of arrays53920 +Ref: usage id654046 +Ref: 1f54046 +Ref: usage aliasing-of-arrays54046 +Ref: 2054046 +Node: Thread-safety54675 +Ref: usage thread-safety54799 +Ref: 2154799 +Node: Deprecated Functions55764 +Ref: usage deprecated-functions55880 +Ref: 2255880 +Node: Code Reuse56393 +Ref: usage code-reuse56487 +Ref: 2356487 +Node: Error Handling57046 +Ref: err doc57158 +Ref: 2457158 +Ref: err error-handling57158 +Ref: 2557158 +Node: Error Reporting57781 +Ref: err error-reporting57868 +Ref: 2657868 +Node: Error Codes59681 +Ref: err error-codes59791 +Ref: 2759791 +Ref: err c GSL_EDOM60239 +Ref: 2860239 +Ref: err c GSL_ERANGE60451 +Ref: 2960451 +Ref: err c GSL_ENOMEM60654 +Ref: 2a60654 +Ref: err c GSL_EINVAL60956 +Ref: 2b60956 +Ref: err c gsl_strerror61265 +Ref: 2c61265 +Node: Error Handlers61619 +Ref: err error-handlers61761 +Ref: 2d61761 +Ref: err c gsl_error_handler_t62700 +Ref: 2e62700 +Ref: err c gsl_set_error_handler63619 +Ref: 2f63619 +Ref: err c gsl_set_error_handler_off64698 +Ref: 3064698 +Node: Using GSL error reporting in your own functions65314 +Ref: err using-gsl-error-reporting-in-your-own-functions65453 +Ref: 3165453 +Ref: err c GSL_ERROR66028 +Ref: 3266028 +Ref: err c GSL_ERROR_VAL66779 +Ref: 3366779 +Node: Examples67278 +Ref: err examples67394 +Ref: 3467394 +Node: Mathematical Functions68487 +Ref: math doc68597 +Ref: 3668597 +Ref: math mathematical-functions68597 +Ref: 3768597 +Node: Mathematical Constants69249 +Ref: math mathematical-constants69367 +Ref: 3869367 +Node: Infinities and Not-a-number71521 +Ref: math infinities-and-not-a-number71668 +Ref: 3971668 +Ref: math c GSL_POSINF71733 +Ref: 3a71733 +Ref: math c GSL_NEGINF71894 +Ref: 3b71894 +Ref: math c GSL_NAN72055 +Ref: 3c72055 +Ref: math c gsl_isnan72215 +Ref: 3d72215 +Ref: math c gsl_isinf72319 +Ref: 3e72319 +Ref: math c gsl_finite72491 +Ref: 3f72491 +Ref: Infinities and Not-a-number-Footnote-172679 +Node: Elementary Functions73115 +Ref: math elementary-functions73260 +Ref: 4073260 +Ref: math c gsl_log1p73640 +Ref: 4173640 +Ref: math c gsl_expm173865 +Ref: 4273865 +Ref: math c gsl_hypot74090 +Ref: 1a74090 +Ref: math c gsl_hypot374326 +Ref: 4374326 +Ref: math c gsl_acosh74519 +Ref: 4474519 +Ref: math c gsl_asinh74704 +Ref: 4574704 +Ref: math c gsl_atanh74889 +Ref: 4674889 +Ref: math c gsl_ldexp75074 +Ref: 4775074 +Ref: math c gsl_frexp75256 +Ref: 4875256 +Node: Small integer powers75648 +Ref: math small-integer-powers75793 +Ref: 4975793 +Ref: math c gsl_pow_int76108 +Ref: 4a76108 +Ref: math c gsl_pow_uint76159 +Ref: 4b76159 +Ref: math c gsl_pow_276550 +Ref: 4d76550 +Ref: math c gsl_pow_376598 +Ref: 4e76598 +Ref: math c gsl_pow_476646 +Ref: 4f76646 +Ref: math c gsl_pow_576694 +Ref: 5076694 +Ref: math c gsl_pow_676742 +Ref: 5176742 +Ref: math c gsl_pow_776790 +Ref: 5276790 +Ref: math c gsl_pow_876838 +Ref: 5376838 +Ref: math c gsl_pow_976886 +Ref: 5476886 +Node: Testing the Sign of Numbers77330 +Ref: math testing-the-sign-of-numbers77487 +Ref: 5577487 +Ref: math c GSL_SIGN77552 +Ref: 5677552 +Node: Testing for Odd and Even Numbers77774 +Ref: math testing-for-odd-and-even-numbers77940 +Ref: 5777940 +Ref: math c GSL_IS_ODD78015 +Ref: 5878015 +Ref: math c GSL_IS_EVEN78170 +Ref: 5978170 +Node: Maximum and Minimum functions78376 +Ref: math maximum-and-minimum-functions78563 +Ref: 5a78563 +Ref: math c GSL_MAX78825 +Ref: 5b78825 +Ref: math c GSL_MIN78965 +Ref: 5c78965 +Ref: math c GSL_MAX_DBL79105 +Ref: 5d79105 +Ref: math c GSL_MIN_DBL79524 +Ref: 5e79524 +Ref: math c GSL_MAX_INT79943 +Ref: 5f79943 +Ref: math c GSL_MIN_INT80002 +Ref: 6080002 +Ref: math c GSL_MAX_LDBL80333 +Ref: 6180333 +Ref: math c GSL_MIN_LDBL80427 +Ref: 6280427 +Node: Approximate Comparison of Floating Point Numbers80797 +Ref: math approximate-comparison-of-floating-point-numbers80943 +Ref: 6380943 +Ref: math c gsl_fcmp81359 +Ref: 6481359 +Node: Complex Numbers82190 +Ref: complex doc82297 +Ref: 6582297 +Ref: complex complex-numbers82297 +Ref: 6682297 +Ref: Complex Numbers-Footnote-183465 +Node: Representation of complex numbers83529 +Ref: complex representation-of-complex-numbers83653 +Ref: 6783653 +Ref: complex c gsl_complex_rect84426 +Ref: 6884426 +Ref: complex c gsl_complex_polar84690 +Ref: 6984690 +Ref: complex c GSL_REAL84928 +Ref: 6a84928 +Ref: complex c GSL_IMAG84952 +Ref: 6b84952 +Ref: complex c GSL_SET_COMPLEX85068 +Ref: 6c85068 +Ref: complex c GSL_SET_REAL85343 +Ref: 6d85343 +Ref: complex c GSL_SET_IMAG85375 +Ref: 6e85375 +Node: Properties of complex numbers85537 +Ref: complex properties-of-complex-numbers85698 +Ref: 6f85698 +Ref: complex c gsl_complex_arg85767 +Ref: 7085767 +Ref: complex c gsl_complex_abs85936 +Ref: 7185936 +Ref: complex c gsl_complex_abs286068 +Ref: 7286068 +Ref: complex c gsl_complex_logabs86216 +Ref: 7386216 +Node: Complex arithmetic operators86575 +Ref: complex complex-arithmetic-operators86731 +Ref: 7486731 +Ref: complex c gsl_complex_add86798 +Ref: 7586798 +Ref: complex c gsl_complex_sub86964 +Ref: 7686964 +Ref: complex c gsl_complex_mul87137 +Ref: 7787137 +Ref: complex c gsl_complex_div87306 +Ref: 7887306 +Ref: complex c gsl_complex_add_real87477 +Ref: 7987477 +Ref: complex c gsl_complex_sub_real87658 +Ref: 7a87658 +Ref: complex c gsl_complex_mul_real87846 +Ref: 7b87846 +Ref: complex c gsl_complex_div_real88030 +Ref: 7c88030 +Ref: complex c gsl_complex_add_imag88216 +Ref: 7d88216 +Ref: complex c gsl_complex_sub_imag88398 +Ref: 7e88398 +Ref: complex c gsl_complex_mul_imag88587 +Ref: 7f88587 +Ref: complex c gsl_complex_div_imag88775 +Ref: 8088775 +Ref: complex c gsl_complex_conjugate88964 +Ref: 8188964 +Ref: complex c gsl_complex_inverse89130 +Ref: 8289130 +Ref: complex c gsl_complex_negative89314 +Ref: 8389314 +Node: Elementary Complex Functions89474 +Ref: complex elementary-complex-functions89632 +Ref: 8489632 +Ref: complex c gsl_complex_sqrt89699 +Ref: 8589699 +Ref: complex c gsl_complex_sqrt_real89960 +Ref: 8689960 +Ref: complex c gsl_complex_pow90136 +Ref: 8790136 +Ref: complex c gsl_complex_pow_real90404 +Ref: 8890404 +Ref: complex c gsl_complex_exp90577 +Ref: 8990577 +Ref: complex c gsl_complex_log90733 +Ref: 8a90733 +Ref: complex c gsl_complex_log1090952 +Ref: 8b90952 +Ref: complex c gsl_complex_log_b91122 +Ref: 8c91122 +Node: Complex Trigonometric Functions91380 +Ref: complex complex-trigonometric-functions91549 +Ref: 8d91549 +Ref: complex c gsl_complex_sin91622 +Ref: 8e91622 +Ref: complex c gsl_complex_cos91801 +Ref: 8f91801 +Ref: complex c gsl_complex_tan91979 +Ref: 9091979 +Ref: complex c gsl_complex_sec92149 +Ref: 9192149 +Ref: complex c gsl_complex_csc92312 +Ref: 9292312 +Ref: complex c gsl_complex_cot92477 +Ref: 9392477 +Node: Inverse Complex Trigonometric Functions92643 +Ref: complex inverse-complex-trigonometric-functions92812 +Ref: 9492812 +Ref: complex c gsl_complex_arcsin92901 +Ref: 9592901 +Ref: complex c gsl_complex_arcsin_real93136 +Ref: 9693136 +Ref: complex c gsl_complex_arccos93576 +Ref: 9793576 +Ref: complex c gsl_complex_arccos_real93813 +Ref: 9893813 +Ref: complex c gsl_complex_arctan94218 +Ref: 9994218 +Ref: complex c gsl_complex_arcsec94450 +Ref: 9a94450 +Ref: complex c gsl_complex_arcsec_real94625 +Ref: 9b94625 +Ref: complex c gsl_complex_arccsc94797 +Ref: 9c94797 +Ref: complex c gsl_complex_arccsc_real94974 +Ref: 9d94974 +Ref: complex c gsl_complex_arccot95148 +Ref: 9e95148 +Node: Complex Hyperbolic Functions95326 +Ref: complex complex-hyperbolic-functions95500 +Ref: 9f95500 +Ref: complex c gsl_complex_sinh95567 +Ref: a095567 +Ref: complex c gsl_complex_cosh95754 +Ref: a195754 +Ref: complex c gsl_complex_tanh95943 +Ref: a295943 +Ref: complex c gsl_complex_sech96128 +Ref: a396128 +Ref: complex c gsl_complex_csch96305 +Ref: a496305 +Ref: complex c gsl_complex_coth96484 +Ref: a596484 +Node: Inverse Complex Hyperbolic Functions96664 +Ref: complex inverse-complex-hyperbolic-functions96829 +Ref: a696829 +Ref: complex c gsl_complex_arcsinh96912 +Ref: a796912 +Ref: complex c gsl_complex_arccosh97154 +Ref: a897154 +Ref: complex c gsl_complex_arccosh_real97530 +Ref: a997530 +Ref: complex c gsl_complex_arctanh97700 +Ref: aa97700 +Ref: complex c gsl_complex_arctanh_real97951 +Ref: ab97951 +Ref: complex c gsl_complex_arcsech98122 +Ref: ac98122 +Ref: complex c gsl_complex_arccsch98311 +Ref: ad98311 +Ref: complex c gsl_complex_arccoth98502 +Ref: ae98502 +Node: References and Further Reading98694 +Ref: complex references-and-further-reading98822 +Ref: af98822 +Node: Polynomials100104 +Ref: poly doc100206 +Ref: b0100206 +Ref: poly polynomials100206 +Ref: b1100206 +Node: Polynomial Evaluation100879 +Ref: poly polynomial-evaluation101006 +Ref: b2101006 +Ref: poly c gsl_poly_eval101293 +Ref: b3101293 +Ref: poly c gsl_poly_complex_eval101491 +Ref: b4101491 +Ref: poly c gsl_complex_poly_complex_eval101710 +Ref: b5101710 +Ref: poly c gsl_poly_eval_derivs101945 +Ref: b6101945 +Node: Divided Difference Representation of Polynomials102349 +Ref: poly divided-difference-representation-of-polynomials102504 +Ref: b7102504 +Ref: poly c gsl_poly_dd_init103831 +Ref: b8103831 +Ref: poly c gsl_poly_dd_eval104320 +Ref: b9104320 +Ref: poly c gsl_poly_dd_taylor104694 +Ref: ba104694 +Ref: poly c gsl_poly_dd_hermite_init105293 +Ref: bb105293 +Node: Quadratic Equations106411 +Ref: poly quadratic-equations106560 +Ref: bc106560 +Ref: poly c gsl_poly_solve_quadratic106609 +Ref: bd106609 +Ref: poly c gsl_poly_complex_solve_quadratic107828 +Ref: be107828 +Node: Cubic Equations108413 +Ref: poly cubic-equations108542 +Ref: bf108542 +Ref: poly c gsl_poly_solve_cubic108583 +Ref: c0108583 +Ref: poly c gsl_poly_complex_solve_cubic109528 +Ref: c1109528 +Node: General Polynomial Equations110061 +Ref: poly general-polynomial-equations110182 +Ref: c2110182 +Ref: poly c gsl_poly_complex_workspace110522 +Ref: c3110522 +Ref: poly c gsl_poly_complex_workspace_alloc110652 +Ref: c4110652 +Ref: poly c gsl_poly_complex_workspace_free111159 +Ref: c6111159 +Ref: poly c gsl_poly_complex_solve111339 +Ref: c5111339 +Node: Examples<2>112613 +Ref: poly examples112752 +Ref: c7112752 +Node: References and Further Reading<2>113941 +Ref: poly references-and-further-reading114043 +Ref: c8114043 +Node: Special Functions114961 +Ref: specfunc doc115068 +Ref: c9115068 +Ref: specfunc special-functions115068 +Ref: ca115068 +Node: Usage117060 +Ref: specfunc usage117153 +Ref: cb117153 +Node: The gsl_sf_result struct118232 +Ref: specfunc the-gsl-sf-result-struct118339 +Ref: cc118339 +Ref: specfunc c gsl_sf_result118727 +Ref: cd118727 +Ref: specfunc c gsl_sf_result_e10119409 +Ref: ce119409 +Node: Modes119579 +Ref: specfunc modes119711 +Ref: cf119711 +Ref: specfunc c gsl_mode_t120187 +Ref: d0120187 +Ref: specfunc c GSL_PREC_DOUBLE120209 +Ref: d1120209 +Ref: specfunc c GSL_PREC_SINGLE120332 +Ref: d2120332 +Ref: specfunc c GSL_PREC_APPROX120450 +Ref: d3120450 +Node: Airy Functions and Derivatives120652 +Ref: specfunc airy-functions-and-derivatives120776 +Ref: d4120776 +Node: Airy Functions121335 +Ref: specfunc airy-functions121455 +Ref: d5121455 +Ref: specfunc c gsl_sf_airy_Ai121498 +Ref: d6121498 +Ref: specfunc c gsl_sf_airy_Ai_e121562 +Ref: d7121562 +Ref: specfunc c gsl_sf_airy_Bi121764 +Ref: d9121764 +Ref: specfunc c gsl_sf_airy_Bi_e121828 +Ref: da121828 +Ref: specfunc c gsl_sf_airy_Ai_scaled122030 +Ref: db122030 +Ref: specfunc c gsl_sf_airy_Ai_scaled_e122101 +Ref: dc122101 +Ref: specfunc c gsl_sf_airy_Bi_scaled122379 +Ref: dd122379 +Ref: specfunc c gsl_sf_airy_Bi_scaled_e122450 +Ref: de122450 +Node: Derivatives of Airy Functions122727 +Ref: specfunc derivatives-of-airy-functions122879 +Ref: df122879 +Ref: specfunc c gsl_sf_airy_Ai_deriv122952 +Ref: e0122952 +Ref: specfunc c gsl_sf_airy_Ai_deriv_e123022 +Ref: e1123022 +Ref: specfunc c gsl_sf_airy_Bi_deriv123242 +Ref: e2123242 +Ref: specfunc c gsl_sf_airy_Bi_deriv_e123312 +Ref: e3123312 +Ref: specfunc c gsl_sf_airy_Ai_deriv_scaled123532 +Ref: e4123532 +Ref: specfunc c gsl_sf_airy_Ai_deriv_scaled_e123619 +Ref: e5123619 +Ref: specfunc c gsl_sf_airy_Bi_deriv_scaled123902 +Ref: e6123902 +Ref: specfunc c gsl_sf_airy_Bi_deriv_scaled_e123989 +Ref: e7123989 +Node: Zeros of Airy Functions124271 +Ref: specfunc zeros-of-airy-functions124447 +Ref: e8124447 +Ref: specfunc c gsl_sf_airy_zero_Ai124508 +Ref: e9124508 +Ref: specfunc c gsl_sf_airy_zero_Ai_e124566 +Ref: ea124566 +Ref: specfunc c gsl_sf_airy_zero_Bi124756 +Ref: eb124756 +Ref: specfunc c gsl_sf_airy_zero_Bi_e124814 +Ref: ec124814 +Node: Zeros of Derivatives of Airy Functions125004 +Ref: specfunc zeros-of-derivatives-of-airy-functions125142 +Ref: ed125142 +Ref: specfunc c gsl_sf_airy_zero_Ai_deriv125233 +Ref: ee125233 +Ref: specfunc c gsl_sf_airy_zero_Ai_deriv_e125297 +Ref: ef125297 +Ref: specfunc c gsl_sf_airy_zero_Bi_deriv125505 +Ref: f0125505 +Ref: specfunc c gsl_sf_airy_zero_Bi_deriv_e125569 +Ref: f1125569 +Node: Bessel Functions125777 +Ref: specfunc bessel-functions125913 +Ref: f2125913 +Node: Regular Cylindrical Bessel Functions126973 +Ref: specfunc regular-cylindrical-bessel-functions127110 +Ref: f3127110 +Ref: specfunc c gsl_sf_bessel_J0127197 +Ref: f4127197 +Ref: specfunc c gsl_sf_bessel_J0_e127246 +Ref: f5127246 +Ref: specfunc c gsl_sf_bessel_J1127418 +Ref: f6127418 +Ref: specfunc c gsl_sf_bessel_J1_e127467 +Ref: f7127467 +Ref: specfunc c gsl_sf_bessel_Jn127638 +Ref: f8127638 +Ref: specfunc c gsl_sf_bessel_Jn_e127694 +Ref: f9127694 +Ref: specfunc c gsl_sf_bessel_Jn_array127884 +Ref: fa127884 +Node: Irregular Cylindrical Bessel Functions128325 +Ref: specfunc irregular-cylindrical-bessel-functions128516 +Ref: fb128516 +Ref: specfunc c gsl_sf_bessel_Y0128607 +Ref: fc128607 +Ref: specfunc c gsl_sf_bessel_Y0_e128656 +Ref: fd128656 +Ref: specfunc c gsl_sf_bessel_Y1128839 +Ref: fe128839 +Ref: specfunc c gsl_sf_bessel_Y1_e128888 +Ref: ff128888 +Ref: specfunc c gsl_sf_bessel_Yn129070 +Ref: 100129070 +Ref: specfunc c gsl_sf_bessel_Yn_e129126 +Ref: 101129126 +Ref: specfunc c gsl_sf_bessel_Yn_array129327 +Ref: 102129327 +Node: Regular Modified Cylindrical Bessel Functions129811 +Ref: specfunc regular-modified-cylindrical-bessel-functions130013 +Ref: 103130013 +Ref: specfunc c gsl_sf_bessel_I0130118 +Ref: 104130118 +Ref: specfunc c gsl_sf_bessel_I0_e130167 +Ref: 105130167 +Ref: specfunc c gsl_sf_bessel_I1130348 +Ref: 106130348 +Ref: specfunc c gsl_sf_bessel_I1_e130397 +Ref: 107130397 +Ref: specfunc c gsl_sf_bessel_In130577 +Ref: 108130577 +Ref: specfunc c gsl_sf_bessel_In_e130633 +Ref: 109130633 +Ref: specfunc c gsl_sf_bessel_In_array130832 +Ref: 10a130832 +Ref: specfunc c gsl_sf_bessel_I0_scaled131348 +Ref: 10b131348 +Ref: specfunc c gsl_sf_bessel_I0_scaled_e131404 +Ref: 10c131404 +Ref: specfunc c gsl_sf_bessel_I1_scaled131619 +Ref: 10d131619 +Ref: specfunc c gsl_sf_bessel_I1_scaled_e131675 +Ref: 10e131675 +Ref: specfunc c gsl_sf_bessel_In_scaled131889 +Ref: 10f131889 +Ref: specfunc c gsl_sf_bessel_In_scaled_e131952 +Ref: 110131952 +Ref: specfunc c gsl_sf_bessel_In_scaled_array132175 +Ref: 111132175 +Node: Irregular Modified Cylindrical Bessel Functions132707 +Ref: specfunc irregular-modified-cylindrical-bessel-functions132905 +Ref: 112132905 +Ref: specfunc c gsl_sf_bessel_K0133014 +Ref: 113133014 +Ref: specfunc c gsl_sf_bessel_K0_e133063 +Ref: 114133063 +Ref: specfunc c gsl_sf_bessel_K1133257 +Ref: 115133257 +Ref: specfunc c gsl_sf_bessel_K1_e133306 +Ref: 116133306 +Ref: specfunc c gsl_sf_bessel_Kn133499 +Ref: 117133499 +Ref: specfunc c gsl_sf_bessel_Kn_e133555 +Ref: 118133555 +Ref: specfunc c gsl_sf_bessel_Kn_array133767 +Ref: 119133767 +Ref: specfunc c gsl_sf_bessel_K0_scaled134326 +Ref: 11a134326 +Ref: specfunc c gsl_sf_bessel_K0_scaled_e134382 +Ref: 11b134382 +Ref: specfunc c gsl_sf_bessel_K1_scaled134604 +Ref: 11c134604 +Ref: specfunc c gsl_sf_bessel_K1_scaled_e134660 +Ref: 11d134660 +Ref: specfunc c gsl_sf_bessel_Kn_scaled134881 +Ref: 11e134881 +Ref: specfunc c gsl_sf_bessel_Kn_scaled_e134944 +Ref: 11f134944 +Ref: specfunc c gsl_sf_bessel_Kn_scaled_array135176 +Ref: 120135176 +Node: Regular Spherical Bessel Functions135747 +Ref: specfunc regular-spherical-bessel-functions135936 +Ref: 121135936 +Ref: specfunc c gsl_sf_bessel_j0136019 +Ref: 122136019 +Ref: specfunc c gsl_sf_bessel_j0_e136068 +Ref: 123136068 +Ref: specfunc c gsl_sf_bessel_j1136250 +Ref: 124136250 +Ref: specfunc c gsl_sf_bessel_j1_e136299 +Ref: 125136299 +Ref: specfunc c gsl_sf_bessel_j2136494 +Ref: 126136494 +Ref: specfunc c gsl_sf_bessel_j2_e136543 +Ref: 127136543 +Ref: specfunc c gsl_sf_bessel_jl136751 +Ref: 128136751 +Ref: specfunc c gsl_sf_bessel_jl_e136807 +Ref: 129136807 +Ref: specfunc c gsl_sf_bessel_jl_array137022 +Ref: 12a137022 +Ref: specfunc c gsl_sf_bessel_jl_steed_array137471 +Ref: 12b137471 +Node: Irregular Spherical Bessel Functions138013 +Ref: specfunc irregular-spherical-bessel-functions138198 +Ref: 12c138198 +Ref: specfunc c gsl_sf_bessel_y0138285 +Ref: 12d138285 +Ref: specfunc c gsl_sf_bessel_y0_e138334 +Ref: 12e138334 +Ref: specfunc c gsl_sf_bessel_y1138519 +Ref: 12f138519 +Ref: specfunc c gsl_sf_bessel_y1_e138568 +Ref: 130138568 +Ref: specfunc c gsl_sf_bessel_y2138766 +Ref: 131138766 +Ref: specfunc c gsl_sf_bessel_y2_e138815 +Ref: 132138815 +Ref: specfunc c gsl_sf_bessel_yl139028 +Ref: 133139028 +Ref: specfunc c gsl_sf_bessel_yl_e139084 +Ref: 134139084 +Ref: specfunc c gsl_sf_bessel_yl_array139288 +Ref: 135139288 +Node: Regular Modified Spherical Bessel Functions139726 +Ref: specfunc regular-modified-spherical-bessel-functions139922 +Ref: 136139922 +Ref: specfunc c gsl_sf_bessel_i0_scaled140183 +Ref: 137140183 +Ref: specfunc c gsl_sf_bessel_i0_scaled_e140239 +Ref: 138140239 +Ref: specfunc c gsl_sf_bessel_i1_scaled140453 +Ref: 139140453 +Ref: specfunc c gsl_sf_bessel_i1_scaled_e140509 +Ref: 13a140509 +Ref: specfunc c gsl_sf_bessel_i2_scaled140722 +Ref: 13b140722 +Ref: specfunc c gsl_sf_bessel_i2_scaled_e140778 +Ref: 13c140778 +Ref: specfunc c gsl_sf_bessel_il_scaled140991 +Ref: 13d140991 +Ref: specfunc c gsl_sf_bessel_il_scaled_e141054 +Ref: 13e141054 +Ref: specfunc c gsl_sf_bessel_il_scaled_array141275 +Ref: 13f141275 +Node: Irregular Modified Spherical Bessel Functions141750 +Ref: specfunc irregular-modified-spherical-bessel-functions141952 +Ref: 140141952 +Ref: specfunc c gsl_sf_bessel_k0_scaled142230 +Ref: 141142230 +Ref: specfunc c gsl_sf_bessel_k0_scaled_e142286 +Ref: 142142286 +Ref: specfunc c gsl_sf_bessel_k1_scaled142508 +Ref: 143142508 +Ref: specfunc c gsl_sf_bessel_k1_scaled_e142564 +Ref: 144142564 +Ref: specfunc c gsl_sf_bessel_k2_scaled142785 +Ref: 145142785 +Ref: specfunc c gsl_sf_bessel_k2_scaled_e142841 +Ref: 146142841 +Ref: specfunc c gsl_sf_bessel_kl_scaled143063 +Ref: 147143063 +Ref: specfunc c gsl_sf_bessel_kl_scaled_e143126 +Ref: 148143126 +Ref: specfunc c gsl_sf_bessel_kl_scaled_array143356 +Ref: 149143356 +Node: Regular Bessel Function—Fractional Order143838 +Ref: specfunc regular-bessel-function-fractional-order144042 +Ref: 14a144042 +Ref: specfunc c gsl_sf_bessel_Jnu144139 +Ref: 14b144139 +Ref: specfunc c gsl_sf_bessel_Jnu_e144200 +Ref: 14c144200 +Ref: specfunc c gsl_sf_bessel_sequence_Jnu_e144404 +Ref: 14d144404 +Node: Irregular Bessel Functions—Fractional Order144850 +Ref: specfunc irregular-bessel-functions-fractional-order145061 +Ref: 14e145061 +Ref: specfunc c gsl_sf_bessel_Ynu145166 +Ref: 14f145166 +Ref: specfunc c gsl_sf_bessel_Ynu_e145227 +Ref: 150145227 +Node: Regular Modified Bessel Functions—Fractional Order145433 +Ref: specfunc regular-modified-bessel-functions-fractional-order145656 +Ref: 151145656 +Ref: specfunc c gsl_sf_bessel_Inu145775 +Ref: 152145775 +Ref: specfunc c gsl_sf_bessel_Inu_e145836 +Ref: 153145836 +Ref: specfunc c gsl_sf_bessel_Inu_scaled146052 +Ref: 154146052 +Ref: specfunc c gsl_sf_bessel_Inu_scaled_e146120 +Ref: 155146120 +Node: Irregular Modified Bessel Functions—Fractional Order146360 +Ref: specfunc irregular-modified-bessel-functions-fractional-order146571 +Ref: 156146571 +Ref: specfunc c gsl_sf_bessel_Knu146694 +Ref: 157146694 +Ref: specfunc c gsl_sf_bessel_Knu_e146755 +Ref: 158146755 +Ref: specfunc c gsl_sf_bessel_lnKnu146973 +Ref: 159146973 +Ref: specfunc c gsl_sf_bessel_lnKnu_e147036 +Ref: 15a147036 +Ref: specfunc c gsl_sf_bessel_Knu_scaled147283 +Ref: 15b147283 +Ref: specfunc c gsl_sf_bessel_Knu_scaled_e147351 +Ref: 15c147351 +Node: Zeros of Regular Bessel Functions147599 +Ref: specfunc zeros-of-regular-bessel-functions147749 +Ref: 15d147749 +Ref: specfunc c gsl_sf_bessel_zero_J0147832 +Ref: 15e147832 +Ref: specfunc c gsl_sf_bessel_zero_J0_e147892 +Ref: 15f147892 +Ref: specfunc c gsl_sf_bessel_zero_J1148096 +Ref: 160148096 +Ref: specfunc c gsl_sf_bessel_zero_J1_e148156 +Ref: 161148156 +Ref: specfunc c gsl_sf_bessel_zero_Jnu148360 +Ref: 162148360 +Ref: specfunc c gsl_sf_bessel_zero_Jnu_e148432 +Ref: 163148432 +Node: Clausen Functions148729 +Ref: specfunc clausen-functions148852 +Ref: 164148852 +Ref: specfunc c gsl_sf_clausen149167 +Ref: 166149167 +Ref: specfunc c gsl_sf_clausen_e149214 +Ref: 167149214 +Node: Coulomb Functions149344 +Ref: specfunc coulomb-functions149472 +Ref: 168149472 +Node: Normalized Hydrogenic Bound States149797 +Ref: specfunc normalized-hydrogenic-bound-states149917 +Ref: 169149917 +Ref: specfunc c gsl_sf_hydrogenicR_1150000 +Ref: 16a150000 +Ref: specfunc c gsl_sf_hydrogenicR_1_e150063 +Ref: 16b150063 +Ref: specfunc c gsl_sf_hydrogenicR150296 +Ref: 16c150296 +Ref: specfunc c gsl_sf_hydrogenicR_e150381 +Ref: 16d150381 +Node: Coulomb Wave Functions150894 +Ref: specfunc coulomb-wave-functions151067 +Ref: 16f151067 +Ref: specfunc c gsl_sf_coulomb_wave_FG_e151727 +Ref: 170151727 +Ref: specfunc c gsl_sf_coulomb_wave_F_array152542 +Ref: 171152542 +Ref: specfunc c gsl_sf_coulomb_wave_FG_array152903 +Ref: 172152903 +Ref: specfunc c gsl_sf_coulomb_wave_FGp_array153362 +Ref: 173153362 +Ref: specfunc c gsl_sf_coulomb_wave_sphF_array153960 +Ref: 174153960 +Node: Coulomb Wave Function Normalization Constant154449 +Ref: specfunc coulomb-wave-function-normalization-constant154579 +Ref: 175154579 +Ref: specfunc c gsl_sf_coulomb_CL_e154765 +Ref: 176154765 +Ref: specfunc c gsl_sf_coulomb_CL_array154966 +Ref: 177154966 +Node: Coupling Coefficients155204 +Ref: specfunc coupling-coefficients155330 +Ref: 178155330 +Node: 3-j Symbols155931 +Ref: specfunc j-symbols156021 +Ref: 179156021 +Ref: specfunc c gsl_sf_coupling_3j156058 +Ref: 17a156058 +Ref: specfunc c gsl_sf_coupling_3j_e156181 +Ref: 17b156181 +Node: 6-j Symbols156555 +Ref: specfunc id1156665 +Ref: 17c156665 +Ref: specfunc c gsl_sf_coupling_6j156702 +Ref: 17d156702 +Ref: specfunc c gsl_sf_coupling_6j_e156825 +Ref: 17e156825 +Node: 9-j Symbols157199 +Ref: specfunc id2157289 +Ref: 17f157289 +Ref: specfunc c gsl_sf_coupling_9j157326 +Ref: 180157326 +Ref: specfunc c gsl_sf_coupling_9j_e157495 +Ref: 181157495 +Node: Dawson Function157929 +Ref: specfunc dawson-function158053 +Ref: 182158053 +Ref: specfunc c gsl_sf_dawson158325 +Ref: 183158325 +Ref: specfunc c gsl_sf_dawson_e158371 +Ref: 184158371 +Node: Debye Functions158516 +Ref: specfunc debye-functions158630 +Ref: 185158630 +Ref: specfunc c gsl_sf_debye_1158928 +Ref: 186158928 +Ref: specfunc c gsl_sf_debye_1_e158975 +Ref: 187158975 +Ref: specfunc c gsl_sf_debye_2159114 +Ref: 188159114 +Ref: specfunc c gsl_sf_debye_2_e159161 +Ref: 189159161 +Ref: specfunc c gsl_sf_debye_3159301 +Ref: 18a159301 +Ref: specfunc c gsl_sf_debye_3_e159348 +Ref: 18b159348 +Ref: specfunc c gsl_sf_debye_4159487 +Ref: 18c159487 +Ref: specfunc c gsl_sf_debye_4_e159534 +Ref: 18d159534 +Ref: specfunc c gsl_sf_debye_5159674 +Ref: 18e159674 +Ref: specfunc c gsl_sf_debye_5_e159721 +Ref: 18f159721 +Ref: specfunc c gsl_sf_debye_6159860 +Ref: 190159860 +Ref: specfunc c gsl_sf_debye_6_e159907 +Ref: 191159907 +Node: Dilogarithm160046 +Ref: specfunc dilog-function160166 +Ref: 165160166 +Ref: specfunc dilogarithm160166 +Ref: 192160166 +Node: Real Argument160419 +Ref: specfunc real-argument160506 +Ref: 193160506 +Ref: specfunc c gsl_sf_dilog160549 +Ref: 194160549 +Ref: specfunc c gsl_sf_dilog_e160594 +Ref: 195160594 +Node: Complex Argument161126 +Ref: specfunc complex-argument161213 +Ref: 196161213 +Ref: specfunc c gsl_sf_complex_dilog_e161262 +Ref: 197161262 +Node: Elementary Operations161609 +Ref: specfunc elementary-operations161732 +Ref: 198161732 +Ref: specfunc c gsl_sf_multiply161967 +Ref: 199161967 +Ref: specfunc c gsl_sf_multiply_e162025 +Ref: 19a162025 +Ref: specfunc c gsl_sf_multiply_err_e162235 +Ref: 19b162235 +Node: Elliptic Integrals162545 +Ref: specfunc elliptic-integrals162682 +Ref: 19c162682 +Node: Definition of Legendre Forms163119 +Ref: specfunc definition-of-legendre-forms163239 +Ref: 19d163239 +Node: Definition of Carlson Forms163934 +Ref: specfunc definition-of-carlson-forms164107 +Ref: 19e164107 +Node: Legendre Form of Complete Elliptic Integrals164620 +Ref: specfunc legendre-form-of-complete-elliptic-integrals164811 +Ref: 19f164811 +Ref: specfunc c gsl_sf_ellint_Kcomp164916 +Ref: 1a0164916 +Ref: specfunc c gsl_sf_ellint_Kcomp_e164985 +Ref: 1a1164985 +Ref: specfunc c gsl_sf_ellint_Ecomp165318 +Ref: 1a2165318 +Ref: specfunc c gsl_sf_ellint_Ecomp_e165387 +Ref: 1a3165387 +Ref: specfunc c gsl_sf_ellint_Pcomp165720 +Ref: 1a4165720 +Ref: specfunc c gsl_sf_ellint_Pcomp_e165809 +Ref: 1a5165809 +Node: Legendre Form of Incomplete Elliptic Integrals166221 +Ref: specfunc legendre-form-of-incomplete-elliptic-integrals166398 +Ref: 1a6166398 +Ref: specfunc c gsl_sf_ellint_F166507 +Ref: 1a7166507 +Ref: specfunc c gsl_sf_ellint_F_e166594 +Ref: 1a8166594 +Ref: specfunc c gsl_sf_ellint_E166941 +Ref: 1a9166941 +Ref: specfunc c gsl_sf_ellint_E_e167028 +Ref: 1aa167028 +Ref: specfunc c gsl_sf_ellint_P167375 +Ref: 1ab167375 +Ref: specfunc c gsl_sf_ellint_P_e167472 +Ref: 1ac167472 +Ref: specfunc c gsl_sf_ellint_D167899 +Ref: 1ad167899 +Ref: specfunc c gsl_sf_ellint_D_e167986 +Ref: 1ae167986 +Node: Carlson Forms168346 +Ref: specfunc carlson-forms168470 +Ref: 1af168470 +Ref: specfunc c gsl_sf_ellint_RC168513 +Ref: 1b0168513 +Ref: specfunc c gsl_sf_ellint_RC_e168599 +Ref: 1b1168599 +Ref: specfunc c gsl_sf_ellint_RD168847 +Ref: 1b2168847 +Ref: specfunc c gsl_sf_ellint_RD_e168943 +Ref: 1b3168943 +Ref: specfunc c gsl_sf_ellint_RF169203 +Ref: 1b4169203 +Ref: specfunc c gsl_sf_ellint_RF_e169299 +Ref: 1b5169299 +Ref: specfunc c gsl_sf_ellint_RJ169559 +Ref: 1b6169559 +Ref: specfunc c gsl_sf_ellint_RJ_e169665 +Ref: 1b7169665 +Node: Elliptic Functions Jacobi169937 +Ref: specfunc elliptic-functions-jacobi170068 +Ref: 1b8170068 +Ref: specfunc c gsl_sf_elljac_e170286 +Ref: 1b9170286 +Node: Error Functions170521 +Ref: specfunc error-functions170655 +Ref: 1ba170655 +Node: Error Function170974 +Ref: specfunc error-function171078 +Ref: 1bb171078 +Ref: specfunc c gsl_sf_erf171123 +Ref: 1bc171123 +Ref: specfunc c gsl_sf_erf_e171166 +Ref: 1bd171166 +Node: Complementary Error Function171350 +Ref: specfunc complementary-error-function171495 +Ref: 1be171495 +Ref: specfunc c gsl_sf_erfc171568 +Ref: 1bf171568 +Ref: specfunc c gsl_sf_erfc_e171612 +Ref: 1c0171612 +Node: Log Complementary Error Function171812 +Ref: specfunc log-complementary-error-function171964 +Ref: 1c1171964 +Ref: specfunc c gsl_sf_log_erfc172045 +Ref: 1c2172045 +Ref: specfunc c gsl_sf_log_erfc_e172093 +Ref: 1c3172093 +Node: Probability functions172265 +Ref: specfunc probability-functions172380 +Ref: 1c4172380 +Ref: specfunc c gsl_sf_erf_Z172558 +Ref: 1c5172558 +Ref: specfunc c gsl_sf_erf_Z_e172603 +Ref: 1c6172603 +Ref: specfunc c gsl_sf_erf_Q172784 +Ref: 1c7172784 +Ref: specfunc c gsl_sf_erf_Q_e172829 +Ref: 1c8172829 +Ref: specfunc c gsl_sf_hazard173319 +Ref: 1c9173319 +Ref: specfunc c gsl_sf_hazard_e173365 +Ref: 1ca173365 +Node: Exponential Functions173518 +Ref: specfunc exponential-functions173648 +Ref: 1cb173648 +Node: Exponential Function173905 +Ref: specfunc exponential-function174023 +Ref: 1cc174023 +Ref: specfunc c gsl_sf_exp174080 +Ref: 1cd174080 +Ref: specfunc c gsl_sf_exp_e174123 +Ref: 1ce174123 +Ref: specfunc c gsl_sf_exp_e10_e174296 +Ref: 1cf174296 +Ref: specfunc c gsl_sf_exp_mult174635 +Ref: 1d0174635 +Ref: specfunc c gsl_sf_exp_mult_e174693 +Ref: 1d1174693 +Ref: specfunc c gsl_sf_exp_mult_e10_e174900 +Ref: 1d2174900 +Node: Relative Exponential Functions175165 +Ref: specfunc relative-exponential-functions175326 +Ref: 1d3175326 +Ref: specfunc c gsl_sf_expm1175403 +Ref: 1d4175403 +Ref: specfunc c gsl_sf_expm1_e175448 +Ref: 1d5175448 +Ref: specfunc c gsl_sf_exprel175623 +Ref: 1d6175623 +Ref: specfunc c gsl_sf_exprel_e175669 +Ref: 1d7175669 +Ref: specfunc c gsl_sf_exprel_2175983 +Ref: 1d8175983 +Ref: specfunc c gsl_sf_exprel_2_e176031 +Ref: 1d9176031 +Ref: specfunc c gsl_sf_exprel_n176357 +Ref: 1da176357 +Ref: specfunc c gsl_sf_exprel_n_e176412 +Ref: 1db176412 +Node: Exponentiation With Error Estimate176899 +Ref: specfunc exponentiation-with-error-estimate177031 +Ref: 1dc177031 +Ref: specfunc c gsl_sf_exp_err_e177116 +Ref: 1dd177116 +Ref: specfunc c gsl_sf_exp_err_e10_e177299 +Ref: 1de177299 +Ref: specfunc c gsl_sf_exp_mult_err_e177589 +Ref: 1df177589 +Ref: specfunc c gsl_sf_exp_mult_err_e10_e177850 +Ref: 1e0177850 +Node: Exponential Integrals178207 +Ref: specfunc exponential-integrals178342 +Ref: 1e1178342 +Node: Exponential Integral178705 +Ref: specfunc exponential-integral178797 +Ref: 1e2178797 +Ref: specfunc c gsl_sf_expint_E1178854 +Ref: 1e3178854 +Ref: specfunc c gsl_sf_expint_E1_e178903 +Ref: 1e4178903 +Ref: specfunc c gsl_sf_expint_E2179093 +Ref: 1e5179093 +Ref: specfunc c gsl_sf_expint_E2_e179142 +Ref: 1e6179142 +Ref: specfunc c gsl_sf_expint_En179351 +Ref: 1e7179351 +Ref: specfunc c gsl_sf_expint_En_e179407 +Ref: 1e8179407 +Node: Ei x179638 +Ref: specfunc ei-x179759 +Ref: 1e9179759 +Ref: specfunc c gsl_sf_expint_Ei179786 +Ref: 1ea179786 +Ref: specfunc c gsl_sf_expint_Ei_e179835 +Ref: 1eb179835 +Node: Hyperbolic Integrals180085 +Ref: specfunc hyperbolic-integrals180192 +Ref: 1ec180192 +Ref: specfunc c gsl_sf_Shi180249 +Ref: 1ed180249 +Ref: specfunc c gsl_sf_Shi_e180292 +Ref: 1ee180292 +Ref: specfunc c gsl_sf_Chi180444 +Ref: 1ef180444 +Ref: specfunc c gsl_sf_Chi_e180487 +Ref: 1f0180487 +Node: Ei_3 x180760 +Ref: specfunc ei-3-x180886 +Ref: 1f1180886 +Ref: specfunc c gsl_sf_expint_3180917 +Ref: 1f2180917 +Ref: specfunc c gsl_sf_expint_3_e180965 +Ref: 1f3180965 +Node: Trigonometric Integrals181167 +Ref: specfunc trigonometric-integrals181292 +Ref: 1f4181292 +Ref: specfunc c gsl_sf_Si181355 +Ref: 1f5181355 +Ref: specfunc c gsl_sf_Si_e181403 +Ref: 1f6181403 +Ref: specfunc c gsl_sf_Ci181557 +Ref: 1f7181557 +Ref: specfunc c gsl_sf_Ci_e181605 +Ref: 1f8181605 +Node: Arctangent Integral181784 +Ref: specfunc arctangent-integral181894 +Ref: 1f9181894 +Ref: specfunc c gsl_sf_atanint181949 +Ref: 1fa181949 +Ref: specfunc c gsl_sf_atanint_e181996 +Ref: 1fb181996 +Node: Fermi-Dirac Function182190 +Ref: specfunc fermi-dirac-function182328 +Ref: 1fc182328 +Node: Complete Fermi-Dirac Integrals182564 +Ref: specfunc complete-fermi-dirac-integrals182693 +Ref: 1fd182693 +Ref: specfunc c gsl_sf_fermi_dirac_m1183004 +Ref: 1fe183004 +Ref: specfunc c gsl_sf_fermi_dirac_m1_e183058 +Ref: 1ff183058 +Ref: specfunc c gsl_sf_fermi_dirac_0183296 +Ref: 200183296 +Ref: specfunc c gsl_sf_fermi_dirac_0_e183349 +Ref: 201183349 +Ref: specfunc c gsl_sf_fermi_dirac_1183574 +Ref: 202183574 +Ref: specfunc c gsl_sf_fermi_dirac_1_e183627 +Ref: 203183627 +Ref: specfunc c gsl_sf_fermi_dirac_2183848 +Ref: 204183848 +Ref: specfunc c gsl_sf_fermi_dirac_2_e183901 +Ref: 205183901 +Ref: specfunc c gsl_sf_fermi_dirac_int184130 +Ref: 206184130 +Ref: specfunc c gsl_sf_fermi_dirac_int_e184192 +Ref: 207184192 +Ref: specfunc c gsl_sf_fermi_dirac_mhalf184453 +Ref: 208184453 +Ref: specfunc c gsl_sf_fermi_dirac_mhalf_e184510 +Ref: 209184510 +Ref: specfunc c gsl_sf_fermi_dirac_half184682 +Ref: 20a184682 +Ref: specfunc c gsl_sf_fermi_dirac_half_e184738 +Ref: 20b184738 +Ref: specfunc c gsl_sf_fermi_dirac_3half184908 +Ref: 20c184908 +Ref: specfunc c gsl_sf_fermi_dirac_3half_e184965 +Ref: 20d184965 +Node: Incomplete Fermi-Dirac Integrals185136 +Ref: specfunc incomplete-fermi-dirac-integrals185265 +Ref: 20e185265 +Ref: specfunc c gsl_sf_fermi_dirac_inc_0185480 +Ref: 20f185480 +Ref: specfunc c gsl_sf_fermi_dirac_inc_0_e185547 +Ref: 210185547 +Node: Gamma and Beta Functions185777 +Ref: specfunc gamma-and-beta-functions185914 +Ref: 211185914 +Node: Gamma Functions186353 +Ref: specfunc gamma-functions186449 +Ref: 212186449 +Ref: specfunc c gsl_sf_gamma186786 +Ref: 213186786 +Ref: specfunc c gsl_sf_gamma_e186831 +Ref: 214186831 +Ref: specfunc c gsl_sf_lngamma187221 +Ref: 215187221 +Ref: specfunc c gsl_sf_lngamma_e187268 +Ref: 216187268 +Ref: specfunc c gsl_sf_lngamma_sgn_e187648 +Ref: 217187648 +Ref: specfunc c gsl_sf_gammastar188165 +Ref: 218188165 +Ref: specfunc c gsl_sf_gammastar_e188214 +Ref: 219188214 +Ref: specfunc c gsl_sf_gammainv188591 +Ref: 21a188591 +Ref: specfunc c gsl_sf_gammainv_e188639 +Ref: 21b188639 +Ref: specfunc c gsl_sf_lngamma_complex_e188826 +Ref: 21c188826 +Node: Factorials189504 +Ref: specfunc factorials189626 +Ref: 21d189626 +Ref: specfunc c gsl_sf_fact189952 +Ref: 21e189952 +Ref: specfunc c gsl_sf_fact_e190002 +Ref: 21f190002 +Ref: specfunc c gsl_sf_doublefact190331 +Ref: 220190331 +Ref: specfunc c gsl_sf_doublefact_e190387 +Ref: 221190387 +Ref: specfunc c gsl_sf_lnfact190693 +Ref: 222190693 +Ref: specfunc c gsl_sf_lnfact_e190745 +Ref: 223190745 +Ref: specfunc c gsl_sf_lndoublefact191062 +Ref: 224191062 +Ref: specfunc c gsl_sf_lndoublefact_e191120 +Ref: 225191120 +Ref: specfunc c gsl_sf_choose191307 +Ref: 226191307 +Ref: specfunc c gsl_sf_choose_e191375 +Ref: 227191375 +Ref: specfunc c gsl_sf_lnchoose191569 +Ref: 228191569 +Ref: specfunc c gsl_sf_lnchoose_e191639 +Ref: 229191639 +Ref: specfunc c gsl_sf_taylorcoeff191879 +Ref: 22a191879 +Ref: specfunc c gsl_sf_taylorcoeff_e191937 +Ref: 22b191937 +Node: Pochhammer Symbol192116 +Ref: specfunc pochhammer-symbol192249 +Ref: 22c192249 +Ref: specfunc id3192249 +Ref: 22d192249 +Ref: specfunc c gsl_sf_poch192300 +Ref: 22e192300 +Ref: specfunc c gsl_sf_poch_e192354 +Ref: 22f192354 +Ref: specfunc c gsl_sf_lnpoch192729 +Ref: 230192729 +Ref: specfunc c gsl_sf_lnpoch_e192785 +Ref: 231192785 +Ref: specfunc c gsl_sf_lnpoch_sgn_e192994 +Ref: 232192994 +Ref: specfunc c gsl_sf_pochrel193362 +Ref: 233193362 +Ref: specfunc c gsl_sf_pochrel_e193419 +Ref: 234193419 +Node: Incomplete Gamma Functions193628 +Ref: specfunc incomplete-gamma-functions193765 +Ref: 235193765 +Ref: specfunc c gsl_sf_gamma_inc193834 +Ref: 236193834 +Ref: specfunc c gsl_sf_gamma_inc_e193893 +Ref: 237193893 +Ref: specfunc c gsl_sf_gamma_inc_Q194143 +Ref: 238194143 +Ref: specfunc c gsl_sf_gamma_inc_Q_e194204 +Ref: 239194204 +Ref: specfunc c gsl_sf_gamma_inc_P194456 +Ref: 23a194456 +Ref: specfunc c gsl_sf_gamma_inc_P_e194517 +Ref: 23b194517 +Node: Beta Functions194889 +Ref: specfunc beta-functions195033 +Ref: 23c195033 +Ref: specfunc c gsl_sf_beta195078 +Ref: 23d195078 +Ref: specfunc c gsl_sf_beta_e195132 +Ref: 23e195132 +Ref: specfunc c gsl_sf_lnbeta195366 +Ref: 23f195366 +Ref: specfunc c gsl_sf_lnbeta_e195422 +Ref: 240195422 +Node: Incomplete Beta Function195643 +Ref: specfunc incomplete-beta-function195752 +Ref: 241195752 +Ref: specfunc c gsl_sf_beta_inc195817 +Ref: 242195817 +Ref: specfunc c gsl_sf_beta_inc_e195885 +Ref: 243195885 +Node: Gegenbauer Functions196379 +Ref: specfunc gegenbauer-functions196529 +Ref: 244196529 +Ref: specfunc c gsl_sf_gegenpoly_1196810 +Ref: 245196810 +Ref: specfunc c gsl_sf_gegenpoly_2196876 +Ref: 246196876 +Ref: specfunc c gsl_sf_gegenpoly_3196942 +Ref: 247196942 +Ref: specfunc c gsl_sf_gegenpoly_1_e197008 +Ref: 248197008 +Ref: specfunc c gsl_sf_gegenpoly_2_e197107 +Ref: 249197107 +Ref: specfunc c gsl_sf_gegenpoly_3_e197206 +Ref: 24a197206 +Ref: specfunc c gsl_sf_gegenpoly_n197436 +Ref: 24b197436 +Ref: specfunc c gsl_sf_gegenpoly_n_e197509 +Ref: 24c197509 +Ref: specfunc c gsl_sf_gegenpoly_array197793 +Ref: 24d197793 +Node: Hermite Polynomials and Functions198066 +Ref: specfunc hermite-polynomials-and-functions198216 +Ref: 24e198216 +Node: Hermite Polynomials199610 +Ref: specfunc hermite-polynomials199726 +Ref: 24f199726 +Ref: specfunc c gsl_sf_hermite_prob199781 +Ref: 250199781 +Ref: specfunc c gsl_sf_hermite_prob_e199852 +Ref: 251199852 +Ref: specfunc c gsl_sf_hermite_prob_array200077 +Ref: 252200077 +Ref: specfunc c gsl_sf_hermite_prob_series200366 +Ref: 253200366 +Ref: specfunc c gsl_sf_hermite_prob_series_e200472 +Ref: 254200472 +Ref: specfunc c gsl_sf_hermite_phys200768 +Ref: 255200768 +Ref: specfunc c gsl_sf_hermite_phys_e200839 +Ref: 256200839 +Ref: specfunc c gsl_sf_hermite_phys_array201061 +Ref: 257201061 +Ref: specfunc c gsl_sf_hermite_phys_series201344 +Ref: 258201344 +Ref: specfunc c gsl_sf_hermite_phys_series_e201450 +Ref: 259201450 +Node: Hermite Functions201742 +Ref: specfunc hermite-functions201901 +Ref: 25a201901 +Ref: specfunc c gsl_sf_hermite_func201952 +Ref: 25b201952 +Ref: specfunc c gsl_sf_hermite_func_e202023 +Ref: 25c202023 +Ref: specfunc c gsl_sf_hermite_func_array202232 +Ref: 25d202232 +Ref: specfunc c gsl_sf_hermite_func_series202500 +Ref: 25e202500 +Ref: specfunc c gsl_sf_hermite_func_series_e202606 +Ref: 25f202606 +Node: Derivatives of Hermite Polynomials202888 +Ref: specfunc derivatives-of-hermite-polynomials203060 +Ref: 260203060 +Ref: specfunc c gsl_sf_hermite_prob_der203145 +Ref: 261203145 +Ref: specfunc c gsl_sf_hermite_prob_der_e203243 +Ref: 262203243 +Ref: specfunc c gsl_sf_hermite_prob_array_der203514 +Ref: 263203514 +Ref: specfunc c gsl_sf_hermite_prob_der_array203848 +Ref: 264203848 +Ref: specfunc c gsl_sf_hermite_phys_der204224 +Ref: 265204224 +Ref: specfunc c gsl_sf_hermite_phys_der_e204322 +Ref: 266204322 +Ref: specfunc c gsl_sf_hermite_phys_array_der204590 +Ref: 267204590 +Ref: specfunc c gsl_sf_hermite_phys_der_array204919 +Ref: 268204919 +Node: Derivatives of Hermite Functions205284 +Ref: specfunc derivatives-of-hermite-functions205489 +Ref: 269205489 +Ref: specfunc c gsl_sf_hermite_func_der205570 +Ref: 26a205570 +Ref: specfunc c gsl_sf_hermite_func_der_e205668 +Ref: 26b205668 +Node: Zeros of Hermite Polynomials and Hermite Functions205923 +Ref: specfunc zeros-of-hermite-polynomials-and-hermite-functions206085 +Ref: 26c206085 +Ref: specfunc c gsl_sf_hermite_prob_zero206511 +Ref: 26d206511 +Ref: specfunc c gsl_sf_hermite_prob_zero_e206584 +Ref: 26e206584 +Ref: specfunc c gsl_sf_hermite_phys_zero206814 +Ref: 26f206814 +Ref: specfunc c gsl_sf_hermite_phys_zero_e206887 +Ref: 270206887 +Ref: specfunc c gsl_sf_hermite_func_zero207114 +Ref: 271207114 +Ref: specfunc c gsl_sf_hermite_func_zero_e207187 +Ref: 272207187 +Node: Hypergeometric Functions207401 +Ref: specfunc hypergeometric-functions207549 +Ref: 273207549 +Ref: specfunc c gsl_sf_hyperg_0F1207766 +Ref: 274207766 +Ref: specfunc c gsl_sf_hyperg_0F1_e207826 +Ref: 275207826 +Ref: specfunc c gsl_sf_hyperg_1F1_int207997 +Ref: 276207997 +Ref: specfunc c gsl_sf_hyperg_1F1_int_e208065 +Ref: 277208065 +Ref: specfunc c gsl_sf_hyperg_1F1208314 +Ref: 278208314 +Ref: specfunc c gsl_sf_hyperg_1F1_e208384 +Ref: 279208384 +Ref: specfunc c gsl_sf_hyperg_U_int208635 +Ref: 27a208635 +Ref: specfunc c gsl_sf_hyperg_U_int_e208701 +Ref: 27b208701 +Ref: specfunc c gsl_sf_hyperg_U_int_e10_e208923 +Ref: 27c208923 +Ref: specfunc c gsl_sf_hyperg_U209240 +Ref: 27d209240 +Ref: specfunc c gsl_sf_hyperg_U_e209308 +Ref: 27e209308 +Ref: specfunc c gsl_sf_hyperg_U_e10_e209492 +Ref: 27f209492 +Ref: specfunc c gsl_sf_hyperg_2F1209771 +Ref: 280209771 +Ref: specfunc c gsl_sf_hyperg_2F1_e209861 +Ref: 281209861 +Ref: specfunc c gsl_sf_hyperg_2F1_conj210348 +Ref: 282210348 +Ref: specfunc c gsl_sf_hyperg_2F1_conj_e210445 +Ref: 283210445 +Ref: specfunc c gsl_sf_hyperg_2F1_renorm210717 +Ref: 284210717 +Ref: specfunc c gsl_sf_hyperg_2F1_renorm_e210814 +Ref: 285210814 +Ref: specfunc c gsl_sf_hyperg_2F1_conj_renorm211071 +Ref: 286211071 +Ref: specfunc c gsl_sf_hyperg_2F1_conj_renorm_e211175 +Ref: 287211175 +Ref: specfunc c gsl_sf_hyperg_2F0211462 +Ref: 288211462 +Ref: specfunc c gsl_sf_hyperg_2F0_e211532 +Ref: 289211532 +Node: Laguerre Functions211866 +Ref: specfunc laguerre-functions212000 +Ref: 16e212000 +Ref: specfunc id4212000 +Ref: 28a212000 +Ref: specfunc c gsl_sf_laguerre_1212601 +Ref: 28b212601 +Ref: specfunc c gsl_sf_laguerre_2212661 +Ref: 28c212661 +Ref: specfunc c gsl_sf_laguerre_3212721 +Ref: 28d212721 +Ref: specfunc c gsl_sf_laguerre_1_e212781 +Ref: 28e212781 +Ref: specfunc c gsl_sf_laguerre_2_e212874 +Ref: 28f212874 +Ref: specfunc c gsl_sf_laguerre_3_e212967 +Ref: 290212967 +Ref: specfunc c gsl_sf_laguerre_n213194 +Ref: 291213194 +Ref: specfunc c gsl_sf_laguerre_n_e213289 +Ref: 292213289 +Node: Lambert W Functions213492 +Ref: specfunc lambert-w-functions213644 +Ref: 293213644 +Ref: specfunc c gsl_sf_lambert_W0214103 +Ref: 294214103 +Ref: specfunc c gsl_sf_lambert_W0_e214153 +Ref: 295214153 +Ref: specfunc c gsl_sf_lambert_Wm1214308 +Ref: 296214308 +Ref: specfunc c gsl_sf_lambert_Wm1_e214359 +Ref: 297214359 +Node: Legendre Functions and Spherical Harmonics214540 +Ref: specfunc legendre-functions-and-spherical-harmonics214705 +Ref: 298214705 +Node: Legendre Polynomials215133 +Ref: specfunc legendre-polynomials215297 +Ref: 299215297 +Ref: specfunc c gsl_sf_legendre_P1215354 +Ref: 29a215354 +Ref: specfunc c gsl_sf_legendre_P2215405 +Ref: 29b215405 +Ref: specfunc c gsl_sf_legendre_P3215456 +Ref: 29c215456 +Ref: specfunc c gsl_sf_legendre_P1_e215507 +Ref: 29d215507 +Ref: specfunc c gsl_sf_legendre_P2_e215591 +Ref: 29e215591 +Ref: specfunc c gsl_sf_legendre_P3_e215675 +Ref: 29f215675 +Ref: specfunc c gsl_sf_legendre_Pl215876 +Ref: 2a0215876 +Ref: specfunc c gsl_sf_legendre_Pl_e215934 +Ref: 2a1215934 +Ref: specfunc c gsl_sf_legendre_Pl_array216168 +Ref: 2a2216168 +Ref: specfunc c gsl_sf_legendre_Pl_deriv_array216265 +Ref: 2a3216265 +Ref: specfunc c gsl_sf_legendre_Q0216536 +Ref: 2a4216536 +Ref: specfunc c gsl_sf_legendre_Q0_e216587 +Ref: 2a5216587 +Ref: specfunc c gsl_sf_legendre_Q1216759 +Ref: 2a6216759 +Ref: specfunc c gsl_sf_legendre_Q1_e216810 +Ref: 2a7216810 +Ref: specfunc c gsl_sf_legendre_Ql216982 +Ref: 2a8216982 +Ref: specfunc c gsl_sf_legendre_Ql_e217040 +Ref: 2a9217040 +Node: Associated Legendre Polynomials and Spherical Harmonics217228 +Ref: specfunc associated-legendre-polynomials-and-spherical-harmonics217418 +Ref: 2aa217418 +Ref: specfunc c gsl_sf_legendre_t219966 +Ref: 2ab219966 +Ref: specfunc c gsl_sf_legendre_array221031 +Ref: 2ac221031 +Ref: specfunc c gsl_sf_legendre_array_e221170 +Ref: 2ad221170 +Ref: specfunc c gsl_sf_legendre_deriv_array222026 +Ref: 2af222026 +Ref: specfunc c gsl_sf_legendre_deriv_array_e222210 +Ref: 2b0222210 +Ref: specfunc c gsl_sf_legendre_deriv_alt_array223002 +Ref: 2b1223002 +Ref: specfunc c gsl_sf_legendre_deriv_alt_array_e223190 +Ref: 2b2223190 +Ref: specfunc c gsl_sf_legendre_deriv2_array223954 +Ref: 2b3223954 +Ref: specfunc c gsl_sf_legendre_deriv2_array_e224179 +Ref: 2b4224179 +Ref: specfunc c gsl_sf_legendre_deriv2_alt_array225095 +Ref: 2b5225095 +Ref: specfunc c gsl_sf_legendre_deriv2_alt_array_e225324 +Ref: 2b6225324 +Ref: specfunc c gsl_sf_legendre_array_n226293 +Ref: 2ae226293 +Ref: specfunc c gsl_sf_legendre_array_index226682 +Ref: 2b7226682 +Ref: specfunc c gsl_sf_legendre_Plm227002 +Ref: 2b8227002 +Ref: specfunc c gsl_sf_legendre_Plm_e227068 +Ref: 2b9227068 +Ref: specfunc c gsl_sf_legendre_sphPlm227283 +Ref: 2ba227283 +Ref: specfunc c gsl_sf_legendre_sphPlm_e227352 +Ref: 2bb227352 +Ref: specfunc c gsl_sf_legendre_Plm_array227795 +Ref: 2bc227795 +Ref: specfunc c gsl_sf_legendre_Plm_deriv_array227900 +Ref: 2bd227900 +Ref: specfunc c gsl_sf_legendre_sphPlm_array228219 +Ref: 2be228219 +Ref: specfunc c gsl_sf_legendre_sphPlm_deriv_array228327 +Ref: 2bf228327 +Ref: specfunc c gsl_sf_legendre_array_size228649 +Ref: 2c0228649 +Node: Conical Functions228819 +Ref: specfunc conical-functions229026 +Ref: 2c1229026 +Ref: specfunc c gsl_sf_conicalP_half229207 +Ref: 2c2229207 +Ref: specfunc c gsl_sf_conicalP_half_e229275 +Ref: 2c3229275 +Ref: specfunc c gsl_sf_conicalP_mhalf229494 +Ref: 2c4229494 +Ref: specfunc c gsl_sf_conicalP_mhalf_e229563 +Ref: 2c5229563 +Ref: specfunc c gsl_sf_conicalP_0229782 +Ref: 2c6229782 +Ref: specfunc c gsl_sf_conicalP_0_e229847 +Ref: 2c7229847 +Ref: specfunc c gsl_sf_conicalP_1230039 +Ref: 2c8230039 +Ref: specfunc c gsl_sf_conicalP_1_e230104 +Ref: 2c9230104 +Ref: specfunc c gsl_sf_conicalP_sph_reg230296 +Ref: 2ca230296 +Ref: specfunc c gsl_sf_conicalP_sph_reg_e230384 +Ref: 2cb230384 +Ref: specfunc c gsl_sf_conicalP_cyl_reg230627 +Ref: 2cc230627 +Ref: specfunc c gsl_sf_conicalP_cyl_reg_e230715 +Ref: 2cd230715 +Node: Radial Functions for Hyperbolic Space230956 +Ref: specfunc radial-functions-for-hyperbolic-space231099 +Ref: 2ce231099 +Ref: specfunc c gsl_sf_legendre_H3d_0231457 +Ref: 2cf231457 +Ref: specfunc c gsl_sf_legendre_H3d_0_e231528 +Ref: 2d0231528 +Ref: specfunc c gsl_sf_legendre_H3d_1231948 +Ref: 2d1231948 +Ref: specfunc c gsl_sf_legendre_H3d_1_e232019 +Ref: 2d2232019 +Ref: specfunc c gsl_sf_legendre_H3d232532 +Ref: 2d3232532 +Ref: specfunc c gsl_sf_legendre_H3d_e232618 +Ref: 2d4232618 +Ref: specfunc c gsl_sf_legendre_H3d_array232970 +Ref: 2d5232970 +Node: Logarithm and Related Functions233202 +Ref: specfunc logarithm-and-related-functions233365 +Ref: 2d6233365 +Ref: specfunc c gsl_sf_log233638 +Ref: 2d7233638 +Ref: specfunc c gsl_sf_log_e233681 +Ref: 2d8233681 +Ref: specfunc c gsl_sf_log_abs233823 +Ref: 2d9233823 +Ref: specfunc c gsl_sf_log_abs_e233870 +Ref: 2da233870 +Ref: specfunc c gsl_sf_complex_log_e234042 +Ref: 2db234042 +Ref: specfunc c gsl_sf_log_1plusx234379 +Ref: 2dc234379 +Ref: specfunc c gsl_sf_log_1plusx_e234429 +Ref: 2dd234429 +Ref: specfunc c gsl_sf_log_1plusx_mx234615 +Ref: 2de234615 +Ref: specfunc c gsl_sf_log_1plusx_mx_e234668 +Ref: 2df234668 +Node: Mathieu Functions234871 +Ref: specfunc mathieu-functions235006 +Ref: 2e0235006 +Node: Mathieu Function Workspace236229 +Ref: specfunc mathieu-function-workspace236357 +Ref: 2e1236357 +Ref: specfunc c gsl_sf_mathieu_workspace236596 +Ref: 2e2236596 +Ref: specfunc c gsl_sf_mathieu_alloc236682 +Ref: 2e3236682 +Ref: specfunc c gsl_sf_mathieu_free237016 +Ref: 2e4237016 +Node: Mathieu Function Characteristic Values237142 +Ref: specfunc mathieu-function-characteristic-values237304 +Ref: 2e5237304 +Ref: specfunc c gsl_sf_mathieu_a237397 +Ref: 2e6237397 +Ref: specfunc c gsl_sf_mathieu_a_e237450 +Ref: 2e7237450 +Ref: specfunc c gsl_sf_mathieu_b237539 +Ref: 2e8237539 +Ref: specfunc c gsl_sf_mathieu_b_e237592 +Ref: 2e9237592 +Ref: specfunc c gsl_sf_mathieu_a_array237821 +Ref: 2ea237821 +Ref: specfunc c gsl_sf_mathieu_b_array237979 +Ref: 2eb237979 +Node: Angular Mathieu Functions238344 +Ref: specfunc angular-mathieu-functions238504 +Ref: 2ec238504 +Ref: specfunc c gsl_sf_mathieu_ce238571 +Ref: 2ed238571 +Ref: specfunc c gsl_sf_mathieu_ce_e238635 +Ref: 2ee238635 +Ref: specfunc c gsl_sf_mathieu_se238735 +Ref: 2ef238735 +Ref: specfunc c gsl_sf_mathieu_se_e238799 +Ref: 2f0238799 +Ref: specfunc c gsl_sf_mathieu_ce_array239003 +Ref: 2f1239003 +Ref: specfunc c gsl_sf_mathieu_se_array239162 +Ref: 2f2239162 +Node: Radial Mathieu Functions239532 +Ref: specfunc radial-mathieu-functions239645 +Ref: 2f3239645 +Ref: specfunc c gsl_sf_mathieu_Mc239710 +Ref: 2f4239710 +Ref: specfunc c gsl_sf_mathieu_Mc_e239781 +Ref: 2f5239781 +Ref: specfunc c gsl_sf_mathieu_Ms239888 +Ref: 2f6239888 +Ref: specfunc c gsl_sf_mathieu_Ms_e239959 +Ref: 2f7239959 +Ref: specfunc c gsl_sf_mathieu_Mc_array240429 +Ref: 2f8240429 +Ref: specfunc c gsl_sf_mathieu_Ms_array240595 +Ref: 2f9240595 +Node: Power Function240964 +Ref: specfunc power-function241088 +Ref: 2fa241088 +Ref: specfunc c gsl_sf_pow_int241307 +Ref: 2fb241307 +Ref: specfunc c gsl_sf_pow_int_e241361 +Ref: 4c241361 +Node: Psi Digamma Function241937 +Ref: specfunc psi-digamma-function242065 +Ref: 2fc242065 +Node: Digamma Function242459 +Ref: specfunc digamma-function242559 +Ref: 2fd242559 +Ref: specfunc c gsl_sf_psi_int242608 +Ref: 2fe242608 +Ref: specfunc c gsl_sf_psi_int_e242652 +Ref: 2ff242652 +Ref: specfunc c gsl_sf_psi242868 +Ref: 300242868 +Ref: specfunc c gsl_sf_psi_e242911 +Ref: 301242911 +Ref: specfunc c gsl_sf_psi_1piy243071 +Ref: 302243071 +Ref: specfunc c gsl_sf_psi_1piy_e243119 +Ref: 303243119 +Node: Trigamma Function243304 +Ref: specfunc trigamma-function243431 +Ref: 304243431 +Ref: specfunc c gsl_sf_psi_1_int243482 +Ref: 305243482 +Ref: specfunc c gsl_sf_psi_1_int_e243528 +Ref: 306243528 +Ref: specfunc c gsl_sf_psi_1243687 +Ref: 307243687 +Ref: specfunc c gsl_sf_psi_1_e243732 +Ref: 308243732 +Node: Polygamma Function243887 +Ref: specfunc polygamma-function243989 +Ref: 309243989 +Ref: specfunc c gsl_sf_psi_n244042 +Ref: 30a244042 +Ref: specfunc c gsl_sf_psi_n_e244094 +Ref: 30b244094 +Node: Synchrotron Functions244271 +Ref: specfunc synchrotron-functions244404 +Ref: 30c244404 +Ref: specfunc c gsl_sf_synchrotron_1244560 +Ref: 30d244560 +Ref: specfunc c gsl_sf_synchrotron_1_e244613 +Ref: 30e244613 +Ref: specfunc c gsl_sf_synchrotron_2244808 +Ref: 30f244808 +Ref: specfunc c gsl_sf_synchrotron_2_e244861 +Ref: 310244861 +Node: Transport Functions245040 +Ref: specfunc transport-functions245176 +Ref: 311245176 +Ref: specfunc c gsl_sf_transport_2245415 +Ref: 312245415 +Ref: specfunc c gsl_sf_transport_2_e245466 +Ref: 313245466 +Ref: specfunc c gsl_sf_transport_3245611 +Ref: 314245611 +Ref: specfunc c gsl_sf_transport_3_e245662 +Ref: 315245662 +Ref: specfunc c gsl_sf_transport_4245807 +Ref: 316245807 +Ref: specfunc c gsl_sf_transport_4_e245858 +Ref: 317245858 +Ref: specfunc c gsl_sf_transport_5246003 +Ref: 318246003 +Ref: specfunc c gsl_sf_transport_5_e246054 +Ref: 319246054 +Node: Trigonometric Functions246199 +Ref: specfunc trigonometric-functions246328 +Ref: 31a246328 +Node: Circular Trigonometric Functions246826 +Ref: specfunc circular-trigonometric-functions246973 +Ref: 31b246973 +Ref: specfunc c gsl_sf_sin247054 +Ref: 31c247054 +Ref: specfunc c gsl_sf_sin_e247097 +Ref: 31d247097 +Ref: specfunc c gsl_sf_cos247220 +Ref: 31e247220 +Ref: specfunc c gsl_sf_cos_e247263 +Ref: 31f247263 +Ref: specfunc c gsl_sf_hypot247388 +Ref: 320247388 +Ref: specfunc c gsl_sf_hypot_e247443 +Ref: 321247443 +Ref: specfunc c gsl_sf_sinc247640 +Ref: 322247640 +Ref: specfunc c gsl_sf_sinc_e247684 +Ref: 323247684 +Node: Trigonometric Functions for Complex Arguments247845 +Ref: specfunc trigonometric-functions-for-complex-arguments248035 +Ref: 324248035 +Ref: specfunc c gsl_sf_complex_sin_e248142 +Ref: 325248142 +Ref: specfunc c gsl_sf_complex_cos_e248389 +Ref: 326248389 +Ref: specfunc c gsl_sf_complex_logsin_e248638 +Ref: 327248638 +Node: Hyperbolic Trigonometric Functions248920 +Ref: specfunc hyperbolic-trigonometric-functions249098 +Ref: 328249098 +Ref: specfunc c gsl_sf_lnsinh249183 +Ref: 329249183 +Ref: specfunc c gsl_sf_lnsinh_e249229 +Ref: 32a249229 +Ref: specfunc c gsl_sf_lncosh249354 +Ref: 32b249354 +Ref: specfunc c gsl_sf_lncosh_e249400 +Ref: 32c249400 +Node: Conversion Functions249531 +Ref: specfunc conversion-functions249685 +Ref: 32d249685 +Ref: specfunc c gsl_sf_polar_to_rect249742 +Ref: 32e249742 +Ref: specfunc c gsl_sf_rect_to_polar250024 +Ref: 32f250024 +Node: Restriction Functions250373 +Ref: specfunc restriction-functions250537 +Ref: 330250537 +Ref: specfunc c gsl_sf_angle_restrict_symm250596 +Ref: 331250596 +Ref: specfunc c gsl_sf_angle_restrict_symm_e250659 +Ref: 332250659 +Ref: specfunc c gsl_sf_angle_restrict_pos250980 +Ref: 333250980 +Ref: specfunc c gsl_sf_angle_restrict_pos_e251042 +Ref: 334251042 +Node: Trigonometric Functions With Error Estimates251343 +Ref: specfunc trigonometric-functions-with-error-estimates251478 +Ref: 335251478 +Ref: specfunc c gsl_sf_sin_err_e251583 +Ref: 336251583 +Ref: specfunc c gsl_sf_cos_err_e251930 +Ref: 337251930 +Node: Zeta Functions252279 +Ref: specfunc zeta-functions252400 +Ref: 338252400 +Node: Riemann Zeta Function252726 +Ref: specfunc riemann-zeta-function252839 +Ref: 339252839 +Ref: specfunc c gsl_sf_zeta_int252998 +Ref: 33a252998 +Ref: specfunc c gsl_sf_zeta_int_e253043 +Ref: 33b253043 +Ref: specfunc c gsl_sf_zeta253211 +Ref: 33c253211 +Ref: specfunc c gsl_sf_zeta_e253255 +Ref: 33d253255 +Node: Riemann Zeta Function Minus One253424 +Ref: specfunc riemann-zeta-function-minus-one253567 +Ref: 33e253567 +Ref: specfunc c gsl_sf_zetam1_int253829 +Ref: 33f253829 +Ref: specfunc c gsl_sf_zetam1_int_e253876 +Ref: 340253876 +Ref: specfunc c gsl_sf_zetam1254019 +Ref: 341254019 +Ref: specfunc c gsl_sf_zetam1_e254065 +Ref: 342254065 +Node: Hurwitz Zeta Function254209 +Ref: specfunc hurwitz-zeta-function254343 +Ref: 343254343 +Ref: specfunc c gsl_sf_hzeta254487 +Ref: 344254487 +Ref: specfunc c gsl_sf_hzeta_e254542 +Ref: 345254542 +Node: Eta Function254720 +Ref: specfunc eta-function254814 +Ref: 346254814 +Ref: specfunc c gsl_sf_eta_int254924 +Ref: 347254924 +Ref: specfunc c gsl_sf_eta_int_e254968 +Ref: 348254968 +Ref: specfunc c gsl_sf_eta255111 +Ref: 349255111 +Ref: specfunc c gsl_sf_eta_e255154 +Ref: 34a255154 +Node: Examples<3>255298 +Ref: specfunc examples255429 +Ref: 34b255429 +Node: References and Further Reading<3>256939 +Ref: specfunc references-and-further-reading257047 +Ref: 34c257047 +Node: Vectors and Matrices258459 +Ref: vectors doc258567 +Ref: 34d258567 +Ref: vectors vectors-and-matrices258567 +Ref: 34e258567 +Node: Data types259166 +Ref: vectors data-types259249 +Ref: 34f259249 +Node: Blocks261571 +Ref: vectors blocks261670 +Ref: 350261670 +Ref: vectors c gsl_block261917 +Ref: 351261917 +Node: Block allocation262544 +Ref: vectors block-allocation262639 +Ref: 352262639 +Ref: vectors c gsl_block_alloc263157 +Ref: 353263157 +Ref: vectors c gsl_block_calloc263716 +Ref: 354263716 +Ref: vectors c gsl_block_free263880 +Ref: 355263880 +Node: Reading and writing blocks264092 +Ref: vectors reading-and-writing-blocks264223 +Ref: 356264223 +Ref: vectors c gsl_block_fwrite264397 +Ref: 357264397 +Ref: vectors c gsl_block_fread264808 +Ref: 358264808 +Ref: vectors c gsl_block_fprintf265349 +Ref: 359265349 +Ref: vectors c gsl_block_fscanf265838 +Ref: 35a265838 +Node: Example programs for blocks266270 +Ref: vectors example-programs-for-blocks266376 +Ref: 35b266376 +Node: Vectors266897 +Ref: vectors vectors266994 +Ref: 35c266994 +Ref: vectors c gsl_vector267562 +Ref: 35d267562 +Node: Vector allocation268923 +Ref: vectors vector-allocation269019 +Ref: 35e269019 +Ref: vectors c gsl_vector_alloc269541 +Ref: 35f269541 +Ref: vectors c gsl_vector_calloc270008 +Ref: 360270008 +Ref: vectors c gsl_vector_free270194 +Ref: 361270194 +Node: Accessing vector elements270586 +Ref: vectors accessing-vector-elements270719 +Ref: 362270719 +Ref: vectors c GSL_RANGE_CHECK_OFF271381 +Ref: 365271381 +Ref: vectors c GSL_C99_INLINE272006 +Ref: 366272006 +Ref: vectors c gsl_check_range272358 +Ref: 367272358 +Ref: vectors c gsl_vector_get272924 +Ref: 363272924 +Ref: vectors c gsl_vector_set273295 +Ref: 364273295 +Ref: vectors c gsl_vector_ptr273671 +Ref: 368273671 +Ref: vectors c gsl_vector_const_ptr273736 +Ref: 369273736 +Ref: Accessing vector elements-Footnote-1274183 +Node: Initializing vector elements274426 +Ref: vectors initializing-vector-elements274569 +Ref: 36a274569 +Ref: vectors c gsl_vector_set_all274640 +Ref: 36b274640 +Ref: vectors c gsl_vector_set_zero274797 +Ref: 36c274797 +Ref: vectors c gsl_vector_set_basis274927 +Ref: 36d274927 +Node: Reading and writing vectors275158 +Ref: vectors reading-and-writing-vectors275288 +Ref: 36e275288 +Ref: vectors c gsl_vector_fwrite275465 +Ref: 36f275465 +Ref: vectors c gsl_vector_fread275889 +Ref: 370275889 +Ref: vectors c gsl_vector_fprintf276434 +Ref: 371276434 +Ref: vectors c gsl_vector_fscanf276926 +Ref: 372276926 +Node: Vector views277362 +Ref: vectors vector-views277479 +Ref: 373277479 +Ref: vectors c gsl_vector_view277797 +Ref: 374277797 +Ref: vectors c gsl_vector_const_view277823 +Ref: 375277823 +Ref: vectors c gsl_vector_subvector278816 +Ref: 376278816 +Ref: vectors c gsl_vector_const_subvector278919 +Ref: 377278919 +Ref: vectors c gsl_vector_subvector_with_stride280297 +Ref: 378280297 +Ref: vectors c gsl_vector_const_subvector_with_stride280427 +Ref: 379280427 +Ref: vectors c gsl_vector_complex_real282164 +Ref: 37a282164 +Ref: vectors c gsl_vector_complex_const_real282253 +Ref: 37b282253 +Ref: vectors c gsl_vector_complex_imag282646 +Ref: 37c282646 +Ref: vectors c gsl_vector_complex_const_imag282735 +Ref: 37d282735 +Ref: vectors c gsl_vector_view_array283133 +Ref: 37e283133 +Ref: vectors c gsl_vector_const_view_array283221 +Ref: 37f283221 +Ref: vectors c gsl_vector_view_array_with_stride284191 +Ref: 380284191 +Ref: vectors c gsl_vector_const_view_array_with_stride284306 +Ref: 381284306 +Node: Copying vectors285424 +Ref: vectors copying-vectors285533 +Ref: 382285533 +Ref: vectors c gsl_vector_memcpy285878 +Ref: 383285878 +Ref: vectors c gsl_vector_swap286110 +Ref: 384286110 +Node: Exchanging elements286317 +Ref: vectors exchanging-elements286431 +Ref: 385286431 +Ref: vectors c gsl_vector_swap_elements286572 +Ref: 386286572 +Ref: vectors c gsl_vector_reverse286769 +Ref: 387286769 +Node: Vector operations286902 +Ref: vectors vector-operations287048 +Ref: 388287048 +Ref: vectors c gsl_vector_add287097 +Ref: 389287097 +Ref: vectors c gsl_vector_sub287409 +Ref: 38a287409 +Ref: vectors c gsl_vector_mul287728 +Ref: 38b287728 +Ref: vectors c gsl_vector_div288046 +Ref: 38c288046 +Ref: vectors c gsl_vector_scale288361 +Ref: 38d288361 +Ref: vectors c gsl_vector_add_constant288584 +Ref: 38e288584 +Node: Finding maximum and minimum elements of vectors288823 +Ref: vectors finding-maximum-and-minimum-elements-of-vectors288967 +Ref: 38f288967 +Ref: vectors c gsl_vector_max289137 +Ref: 390289137 +Ref: vectors c gsl_vector_min289266 +Ref: 391289266 +Ref: vectors c gsl_vector_minmax289395 +Ref: 392289395 +Ref: vectors c gsl_vector_max_index289638 +Ref: 393289638 +Ref: vectors c gsl_vector_min_index289878 +Ref: 394289878 +Ref: vectors c gsl_vector_minmax_index290118 +Ref: 395290118 +Node: Vector properties290476 +Ref: vectors vector-properties290631 +Ref: 396290631 +Ref: vectors c gsl_vector_isnull290833 +Ref: 397290833 +Ref: vectors c gsl_vector_ispos290892 +Ref: 398290892 +Ref: vectors c gsl_vector_isneg290950 +Ref: 399290950 +Ref: vectors c gsl_vector_isnonneg291008 +Ref: 39a291008 +Ref: vectors c gsl_vector_equal291248 +Ref: 39b291248 +Node: Example programs for vectors291470 +Ref: vectors example-programs-for-vectors291569 +Ref: 39c291569 +Node: Matrices293824 +Ref: vectors matrices293906 +Ref: 39d293906 +Ref: vectors c gsl_matrix294147 +Ref: 39e294147 +Node: Matrix allocation296930 +Ref: vectors matrix-allocation297027 +Ref: 39f297027 +Ref: vectors c gsl_matrix_alloc297537 +Ref: 3a0297537 +Ref: vectors c gsl_matrix_calloc298072 +Ref: 3a1298072 +Ref: vectors c gsl_matrix_free298299 +Ref: 3a2298299 +Node: Accessing matrix elements298691 +Ref: vectors accessing-matrix-elements298825 +Ref: 3a3298825 +Ref: vectors c gsl_matrix_get299441 +Ref: 3a4299441 +Ref: vectors c gsl_matrix_set299861 +Ref: 3a5299861 +Ref: vectors c gsl_matrix_ptr300287 +Ref: 3a6300287 +Ref: vectors c gsl_matrix_const_ptr300372 +Ref: 3a7300372 +Node: Initializing matrix elements300822 +Ref: vectors initializing-matrix-elements300967 +Ref: 3a8300967 +Ref: vectors c gsl_matrix_set_all301038 +Ref: 3a9301038 +Ref: vectors c gsl_matrix_set_zero301195 +Ref: 3aa301195 +Ref: vectors c gsl_matrix_set_identity301325 +Ref: 3ab301325 +Node: Reading and writing matrices301651 +Ref: vectors reading-and-writing-matrices301783 +Ref: 3ac301783 +Ref: vectors c gsl_matrix_fwrite301963 +Ref: 3ad301963 +Ref: vectors c gsl_matrix_fread302387 +Ref: 3ae302387 +Ref: vectors c gsl_matrix_fprintf302936 +Ref: 3af302936 +Ref: vectors c gsl_matrix_fscanf303428 +Ref: 3b0303428 +Node: Matrix views303873 +Ref: vectors matrix-views304006 +Ref: 3b1304006 +Ref: vectors c gsl_matrix_view304045 +Ref: 3b2304045 +Ref: vectors c gsl_matrix_const_view304071 +Ref: 3b3304071 +Ref: vectors c gsl_matrix_submatrix304904 +Ref: 3b4304904 +Ref: vectors c gsl_matrix_const_submatrix305026 +Ref: 3b5305026 +Ref: vectors c gsl_matrix_view_array306608 +Ref: 3b6306608 +Ref: vectors c gsl_matrix_const_view_array306708 +Ref: 3b7306708 +Ref: vectors c gsl_matrix_view_array_with_tda307767 +Ref: 3b8307767 +Ref: vectors c gsl_matrix_const_view_array_with_tda307888 +Ref: 3b9307888 +Ref: vectors c gsl_matrix_view_vector309104 +Ref: 3ba309104 +Ref: vectors c gsl_matrix_const_view_vector309206 +Ref: 3bb309206 +Ref: vectors c gsl_matrix_view_vector_with_tda310301 +Ref: 3bc310301 +Ref: vectors c gsl_matrix_const_view_vector_with_tda310424 +Ref: 3bd310424 +Node: Creating row and column views311680 +Ref: vectors creating-row-and-column-views311801 +Ref: 3be311801 +Ref: vectors c gsl_matrix_row312223 +Ref: 3bf312223 +Ref: vectors c gsl_matrix_const_row312295 +Ref: 3c0312295 +Ref: vectors c gsl_matrix_column312750 +Ref: 3c1312750 +Ref: vectors c gsl_matrix_const_column312835 +Ref: 3c2312835 +Ref: vectors c gsl_matrix_subrow313302 +Ref: 3c3313302 +Ref: vectors c gsl_matrix_const_subrow313412 +Ref: 3c4313412 +Ref: vectors c gsl_matrix_subcolumn314022 +Ref: 3c5314022 +Ref: vectors c gsl_matrix_const_subcolumn314135 +Ref: 3c6314135 +Ref: vectors c gsl_matrix_diagonal314754 +Ref: 3c7314754 +Ref: vectors c gsl_matrix_const_diagonal314821 +Ref: 3c8314821 +Ref: vectors c gsl_matrix_subdiagonal315350 +Ref: 3c9315350 +Ref: vectors c gsl_matrix_const_subdiagonal315440 +Ref: 3ca315440 +Ref: vectors c gsl_matrix_superdiagonal315942 +Ref: 3cb315942 +Ref: vectors c gsl_matrix_const_superdiagonal316034 +Ref: 3cc316034 +Node: Copying matrices316544 +Ref: vectors copying-matrices316677 +Ref: 3cd316677 +Ref: vectors c gsl_matrix_memcpy316724 +Ref: 3ce316724 +Ref: vectors c gsl_matrix_swap316955 +Ref: 3cf316955 +Node: Copying rows and columns317166 +Ref: vectors copying-rows-and-columns317297 +Ref: 3d0317297 +Ref: vectors c gsl_matrix_get_row317779 +Ref: 3d1317779 +Ref: vectors c gsl_matrix_get_col318064 +Ref: 3d2318064 +Ref: vectors c gsl_matrix_set_row318355 +Ref: 3d3318355 +Ref: vectors c gsl_matrix_set_col318640 +Ref: 3d4318640 +Node: Exchanging rows and columns318931 +Ref: vectors exchanging-rows-and-columns319063 +Ref: 3d5319063 +Ref: vectors c gsl_matrix_swap_rows319215 +Ref: 3d6319215 +Ref: vectors c gsl_matrix_swap_columns319404 +Ref: 3d7319404 +Ref: vectors c gsl_matrix_swap_rowcol319599 +Ref: 3d8319599 +Ref: vectors c gsl_matrix_transpose_memcpy319863 +Ref: 3d9319863 +Ref: vectors c gsl_matrix_transpose320268 +Ref: 3da320268 +Node: Matrix operations320510 +Ref: vectors matrix-operations320666 +Ref: 3db320666 +Ref: vectors c gsl_matrix_add320786 +Ref: 3dc320786 +Ref: vectors c gsl_matrix_sub321112 +Ref: 3dd321112 +Ref: vectors c gsl_matrix_mul_elements321445 +Ref: 3de321445 +Ref: vectors c gsl_matrix_div_elements321796 +Ref: 3df321796 +Ref: vectors c gsl_matrix_scale322144 +Ref: 3e0322144 +Ref: vectors c gsl_matrix_add_constant322378 +Ref: 3e1322378 +Node: Finding maximum and minimum elements of matrices322628 +Ref: vectors finding-maximum-and-minimum-elements-of-matrices322774 +Ref: 3e2322774 +Ref: vectors c gsl_matrix_max322949 +Ref: 3e3322949 +Ref: vectors c gsl_matrix_min323078 +Ref: 3e4323078 +Ref: vectors c gsl_matrix_minmax323207 +Ref: 3e5323207 +Ref: vectors c gsl_matrix_max_index323450 +Ref: 3e6323450 +Ref: vectors c gsl_matrix_min_index323815 +Ref: 3e7323815 +Ref: vectors c gsl_matrix_minmax_index324180 +Ref: 3e8324180 +Node: Matrix properties324637 +Ref: vectors matrix-properties324795 +Ref: 3e9324795 +Ref: vectors c gsl_matrix_isnull324999 +Ref: 3ea324999 +Ref: vectors c gsl_matrix_ispos325058 +Ref: 3eb325058 +Ref: vectors c gsl_matrix_isneg325116 +Ref: 3ec325116 +Ref: vectors c gsl_matrix_isnonneg325174 +Ref: 3ed325174 +Ref: vectors c gsl_matrix_equal325510 +Ref: 3ef325510 +Node: Example programs for matrices325733 +Ref: vectors example-programs-for-matrices325876 +Ref: 3f0325876 +Node: References and Further Reading<4>329898 +Ref: vectors references-and-further-reading330015 +Ref: 3f1330015 +Node: Permutations330386 +Ref: permutation permutations330489 +Ref: 3f2330489 +Ref: permutation doc330489 +Ref: 3f3330489 +Node: The Permutation struct331695 +Ref: permutation the-permutation-struct331798 +Ref: 3f4331798 +Ref: permutation c gsl_permutation331853 +Ref: 3f5331853 +Node: Permutation allocation332282 +Ref: permutation permutation-allocation332424 +Ref: 3f6332424 +Ref: permutation c gsl_permutation_alloc332479 +Ref: 3f7332479 +Ref: permutation c gsl_permutation_calloc332932 +Ref: 3f8332932 +Ref: permutation c gsl_permutation_init333211 +Ref: 3f9333211 +Ref: permutation c gsl_permutation_free333382 +Ref: 3fa333382 +Ref: permutation c gsl_permutation_memcpy333519 +Ref: 3fb333519 +Node: Accessing permutation elements333779 +Ref: permutation accessing-permutation-elements333921 +Ref: 3fc333921 +Ref: permutation c gsl_permutation_get334068 +Ref: 3fd334068 +Ref: permutation c gsl_permutation_swap334460 +Ref: 3fe334460 +Node: Permutation properties334666 +Ref: permutation permutation-properties334807 +Ref: 3ff334807 +Ref: permutation c gsl_permutation_size334862 +Ref: 400334862 +Ref: permutation c gsl_permutation_data334998 +Ref: 401334998 +Ref: permutation c gsl_permutation_valid335167 +Ref: 402335167 +Node: Permutation functions335406 +Ref: permutation permutation-functions335538 +Ref: 403335538 +Ref: permutation c gsl_permutation_reverse335591 +Ref: 404335591 +Ref: permutation c gsl_permutation_inverse335727 +Ref: 405335727 +Ref: permutation c gsl_permutation_next335938 +Ref: 406335938 +Ref: permutation c gsl_permutation_prev336401 +Ref: 407336401 +Node: Applying Permutations336725 +Ref: permutation applying-permutations336867 +Ref: 408336867 +Ref: permutation c gsl_permute336920 +Ref: 409336920 +Ref: permutation c gsl_permute_inverse337143 +Ref: 40a337143 +Ref: permutation c gsl_permute_vector337389 +Ref: 40b337389 +Ref: permutation c gsl_permute_vector_inverse337851 +Ref: 40c337851 +Ref: permutation c gsl_permute_matrix338442 +Ref: 40d338442 +Ref: permutation c gsl_permutation_mul338933 +Ref: 40e338933 +Node: Reading and writing permutations339279 +Ref: permutation reading-and-writing-permutations339427 +Ref: 40f339427 +Ref: permutation c gsl_permutation_fwrite339615 +Ref: 410339615 +Ref: permutation c gsl_permutation_fread340037 +Ref: 411340037 +Ref: permutation c gsl_permutation_fprintf340594 +Ref: 412340594 +Ref: permutation c gsl_permutation_fscanf341127 +Ref: 413341127 +Ref: Reading and writing permutations-Footnote-1341611 +Node: Permutations in cyclic form341727 +Ref: permutation permutations-in-cyclic-form341865 +Ref: 414341865 +Ref: permutation c gsl_permutation_linear_to_canonical343900 +Ref: 415343900 +Ref: permutation c gsl_permutation_canonical_to_linear344140 +Ref: 416344140 +Ref: permutation c gsl_permutation_inversions344393 +Ref: 417344393 +Ref: permutation c gsl_permutation_linear_cycles344792 +Ref: 418344792 +Ref: permutation c gsl_permutation_canonical_cycles344985 +Ref: 419344985 +Node: Examples<4>345184 +Ref: permutation examples345323 +Ref: 41a345323 +Node: References and Further Reading<5>347741 +Ref: permutation references-and-further-reading347844 +Ref: 41b347844 +Node: Combinations348375 +Ref: combination combinations348467 +Ref: 41c348467 +Ref: combination doc348467 +Ref: 41d348467 +Node: The Combination struct349248 +Ref: combination the-combination-struct349351 +Ref: 41e349351 +Ref: combination c gsl_combination349408 +Ref: 41f349408 +Node: Combination allocation349895 +Ref: combination combination-allocation350037 +Ref: 420350037 +Ref: combination c gsl_combination_alloc350094 +Ref: 421350094 +Ref: combination c gsl_combination_calloc350618 +Ref: 422350618 +Ref: combination c gsl_combination_init_first350966 +Ref: 423350966 +Ref: combination c gsl_combination_init_last351171 +Ref: 424351171 +Ref: combination c gsl_combination_free351388 +Ref: 425351388 +Ref: combination c gsl_combination_memcpy351525 +Ref: 426351525 +Node: Accessing combination elements351785 +Ref: combination accessing-combination-elements351927 +Ref: 427351927 +Ref: combination c gsl_combination_get352077 +Ref: 428352077 +Node: Combination properties352469 +Ref: combination combination-properties352610 +Ref: 429352610 +Ref: combination c gsl_combination_n352667 +Ref: 42a352667 +Ref: combination c gsl_combination_k352799 +Ref: 42b352799 +Ref: combination c gsl_combination_data352955 +Ref: 42c352955 +Ref: combination c gsl_combination_valid353124 +Ref: 42d353124 +Node: Combination functions353385 +Ref: combination combination-functions353528 +Ref: 42e353528 +Ref: combination c gsl_combination_next353583 +Ref: 42f353583 +Ref: combination c gsl_combination_prev354043 +Ref: 430354043 +Node: Reading and writing combinations354367 +Ref: combination reading-and-writing-combinations354499 +Ref: 431354499 +Ref: combination c gsl_combination_fwrite354689 +Ref: 432354689 +Ref: combination c gsl_combination_fread355111 +Ref: 433355111 +Ref: combination c gsl_combination_fprintf355684 +Ref: 434355684 +Ref: combination c gsl_combination_fscanf356217 +Ref: 435356217 +Ref: Reading and writing combinations-Footnote-1356708 +Node: Examples<5>356824 +Ref: combination examples356968 +Ref: 436356968 +Node: References and Further Reading<6>358099 +Ref: combination references-and-further-reading358202 +Ref: 437358202 +Node: Multisets358482 +Ref: multiset doc358569 +Ref: 438358569 +Ref: multiset multisets358569 +Ref: 439358569 +Node: The Multiset struct359414 +Ref: multiset the-multiset-struct359508 +Ref: 43a359508 +Ref: multiset c gsl_multiset359559 +Ref: 43b359559 +Node: Multiset allocation360028 +Ref: multiset multiset-allocation360158 +Ref: 43c360158 +Ref: multiset c gsl_multiset_alloc360209 +Ref: 43d360209 +Ref: multiset c gsl_multiset_calloc360707 +Ref: 43e360707 +Ref: multiset c gsl_multiset_init_first361038 +Ref: 43f361038 +Ref: multiset c gsl_multiset_init_last361234 +Ref: 440361234 +Ref: multiset c gsl_multiset_free361430 +Ref: 441361430 +Ref: multiset c gsl_multiset_memcpy361558 +Ref: 442361558 +Node: Accessing multiset elements361800 +Ref: multiset accessing-multiset-elements361930 +Ref: 443361930 +Ref: multiset c gsl_multiset_get362071 +Ref: 444362071 +Node: Multiset properties362454 +Ref: multiset multiset-properties362583 +Ref: 445362583 +Ref: multiset c gsl_multiset_n362634 +Ref: 446362634 +Ref: multiset c gsl_multiset_k362763 +Ref: 447362763 +Ref: multiset c gsl_multiset_data362910 +Ref: 448362910 +Ref: multiset c gsl_multiset_valid363070 +Ref: 449363070 +Node: Multiset functions363308 +Ref: multiset multiset-functions363439 +Ref: 44a363439 +Ref: multiset c gsl_multiset_next363488 +Ref: 44b363488 +Ref: multiset c gsl_multiset_prev363944 +Ref: 44c363944 +Node: Reading and writing multisets364260 +Ref: multiset reading-and-writing-multisets364383 +Ref: 44d364383 +Ref: multiset c gsl_multiset_fwrite364564 +Ref: 44e364564 +Ref: multiset c gsl_multiset_fread364977 +Ref: 44f364977 +Ref: multiset c gsl_multiset_fprintf365528 +Ref: 450365528 +Ref: multiset c gsl_multiset_fscanf366052 +Ref: 451366052 +Ref: Reading and writing multisets-Footnote-1366521 +Node: Examples<6>366637 +Ref: multiset examples366733 +Ref: 452366733 +Node: Sorting368724 +Ref: sort sorting368811 +Ref: 453368811 +Ref: sort doc368811 +Ref: 454368811 +Node: Sorting objects369702 +Ref: sort sorting-objects369786 +Ref: 455369786 +Ref: sort c gsl_heapsort370324 +Ref: 456370324 +Ref: sort c gsl_comparison_fn_t370667 +Ref: 457370667 +Ref: sort c gsl_heapsort_index371890 +Ref: 458371890 +Node: Sorting vectors372673 +Ref: sort sorting-vectors372810 +Ref: 459372810 +Ref: sort c gsl_sort373845 +Ref: 45a373845 +Ref: sort c gsl_sort2374064 +Ref: 45b374064 +Ref: sort c gsl_sort_vector374446 +Ref: 45c374446 +Ref: sort c gsl_sort_vector2374597 +Ref: 45d374597 +Ref: sort c gsl_sort_index374833 +Ref: 45e374833 +Ref: sort c gsl_sort_vector_index375437 +Ref: 45f375437 +Node: Selecting the k smallest or largest elements376049 +Ref: sort selecting-the-k-smallest-or-largest-elements376189 +Ref: 460376189 +Ref: sort c gsl_sort_smallest376898 +Ref: 461376898 +Ref: sort c gsl_sort_largest377335 +Ref: 462377335 +Ref: sort c gsl_sort_vector_smallest377748 +Ref: 463377748 +Ref: sort c gsl_sort_vector_largest377849 +Ref: 464377849 +Ref: sort c gsl_sort_smallest_index378244 +Ref: 465378244 +Ref: sort c gsl_sort_largest_index378733 +Ref: 466378733 +Ref: sort c gsl_sort_vector_smallest_index379221 +Ref: 467379221 +Ref: sort c gsl_sort_vector_largest_index379325 +Ref: 468379325 +Node: Computing the rank379640 +Ref: sort computing-the-rank379776 +Ref: 469379776 +Node: Examples<7>380849 +Ref: sort examples380974 +Ref: 46a380974 +Node: References and Further Reading<7>382485 +Ref: sort references-and-further-reading382583 +Ref: 46b382583 +Node: BLAS Support382994 +Ref: blas blas-support383086 +Ref: 46c383086 +Ref: blas doc383086 +Ref: 46d383086 +Ref: blas chap-blas-support383086 +Ref: 11383086 +Ref: BLAS Support-Footnote-1387036 +Node: GSL BLAS Interface387205 +Ref: blas gsl-blas-interface387293 +Ref: 46f387293 +Node: Level 1387637 +Ref: blas level-1387716 +Ref: 470387716 +Ref: blas c gsl_blas_sdsdot387747 +Ref: 471387747 +Ref: blas c gsl_blas_sdot388010 +Ref: 472388010 +Ref: blas c gsl_blas_dsdot388125 +Ref: 473388125 +Ref: blas c gsl_blas_ddot388242 +Ref: 474388242 +Ref: blas c gsl_blas_cdotu388482 +Ref: 475388482 +Ref: blas c gsl_blas_zdotu388624 +Ref: 476388624 +Ref: blas c gsl_blas_cdotc388889 +Ref: 477388889 +Ref: blas c gsl_blas_zdotc389031 +Ref: 478389031 +Ref: blas c gsl_blas_snrm2389306 +Ref: 479389306 +Ref: blas c gsl_blas_dnrm2389370 +Ref: 47a389370 +Ref: blas c gsl_blas_scnrm2389535 +Ref: 47b389535 +Ref: blas c gsl_blas_dznrm2389608 +Ref: 47c389608 +Ref: blas c gsl_blas_sasum389822 +Ref: 47d389822 +Ref: blas c gsl_blas_dasum389886 +Ref: 47e389886 +Ref: blas c gsl_blas_scasum390048 +Ref: 47f390048 +Ref: blas c gsl_blas_dzasum390121 +Ref: 480390121 +Ref: blas c gsl_blas_isamax390364 +Ref: 481390364 +Ref: blas c gsl_blas_idamax390437 +Ref: 482390437 +Ref: blas c gsl_blas_icamax390504 +Ref: 483390504 +Ref: blas c gsl_blas_izamax390595 +Ref: 484390595 +Ref: blas c gsl_blas_sswap391074 +Ref: 485391074 +Ref: blas c gsl_blas_dswap391162 +Ref: 486391162 +Ref: blas c gsl_blas_cswap391228 +Ref: 487391228 +Ref: blas c gsl_blas_zswap391332 +Ref: 488391332 +Ref: blas c gsl_blas_scopy391505 +Ref: 489391505 +Ref: blas c gsl_blas_dcopy391599 +Ref: 48a391599 +Ref: blas c gsl_blas_ccopy391671 +Ref: 48b391671 +Ref: blas c gsl_blas_zcopy391781 +Ref: 48c391781 +Ref: blas c gsl_blas_saxpy391972 +Ref: 48d391972 +Ref: blas c gsl_blas_daxpy392079 +Ref: 48e392079 +Ref: blas c gsl_blas_caxpy392175 +Ref: 48f392175 +Ref: blas c gsl_blas_zaxpy392316 +Ref: 490392316 +Ref: blas c gsl_blas_sscal392537 +Ref: 491392537 +Ref: blas c gsl_blas_dscal392607 +Ref: 492392607 +Ref: blas c gsl_blas_cscal392672 +Ref: 493392672 +Ref: blas c gsl_blas_zscal392778 +Ref: 494392778 +Ref: blas c gsl_blas_csscal392872 +Ref: 495392872 +Ref: blas c gsl_blas_zdscal392961 +Ref: 496392961 +Ref: blas c gsl_blas_srotg393147 +Ref: 498393147 +Ref: blas c gsl_blas_drotg393235 +Ref: 499393235 +Ref: blas c gsl_blas_srot393559 +Ref: 49a393559 +Ref: blas c gsl_blas_drot393664 +Ref: 49b393664 +Ref: blas c gsl_blas_srotmg393891 +Ref: 49c393891 +Ref: blas c gsl_blas_drotmg393993 +Ref: 49d393993 +Ref: blas c gsl_blas_srotm394291 +Ref: 49e394291 +Ref: blas c gsl_blas_drotm394396 +Ref: 49f394396 +Node: Level 2394553 +Ref: blas level-2394648 +Ref: 4a0394648 +Ref: blas c gsl_blas_sgemv394679 +Ref: 4a1394679 +Ref: blas c gsl_blas_dgemv394862 +Ref: 4a2394862 +Ref: blas c gsl_blas_cgemv395029 +Ref: 4a3395029 +Ref: blas c gsl_blas_zgemv395282 +Ref: 4a4395282 +Ref: blas c gsl_blas_strmv395715 +Ref: 4a5395715 +Ref: blas c gsl_blas_dtrmv395883 +Ref: 4a6395883 +Ref: blas c gsl_blas_ctrmv396039 +Ref: 4a7396039 +Ref: blas c gsl_blas_ztrmv396223 +Ref: 4a8396223 +Ref: blas c gsl_blas_strsv397011 +Ref: 4a9397011 +Ref: blas c gsl_blas_dtrsv397179 +Ref: 4aa397179 +Ref: blas c gsl_blas_ctrsv397335 +Ref: 4ab397335 +Ref: blas c gsl_blas_ztrsv397519 +Ref: 4ac397519 +Ref: blas c gsl_blas_ssymv398254 +Ref: 4ad398254 +Ref: blas c gsl_blas_dsymv398430 +Ref: 4ae398430 +Ref: blas c gsl_blas_chemv399024 +Ref: 4af399024 +Ref: blas c gsl_blas_zhemv399270 +Ref: 4b0399270 +Ref: blas c gsl_blas_sger400031 +Ref: 4b1400031 +Ref: blas c gsl_blas_dger400165 +Ref: 4b2400165 +Ref: blas c gsl_blas_cgeru400282 +Ref: 4b3400282 +Ref: blas c gsl_blas_zgeru400469 +Ref: 4b4400469 +Ref: blas c gsl_blas_cgerc400730 +Ref: 4b5400730 +Ref: blas c gsl_blas_zgerc400917 +Ref: 4b6400917 +Ref: blas c gsl_blas_ssyr401188 +Ref: 4b7401188 +Ref: blas c gsl_blas_dsyr401313 +Ref: 4b8401313 +Ref: blas c gsl_blas_cher401849 +Ref: 4b9401849 +Ref: blas c gsl_blas_zher401990 +Ref: 4ba401990 +Ref: blas c gsl_blas_ssyr2402618 +Ref: 4bb402618 +Ref: blas c gsl_blas_dsyr2402782 +Ref: 4bc402782 +Ref: blas c gsl_blas_cher2403357 +Ref: 4bd403357 +Ref: blas c gsl_blas_zher2403573 +Ref: 4be403573 +Node: Level 3404271 +Ref: blas level-3404350 +Ref: 4bf404350 +Ref: blas c gsl_blas_sgemm404381 +Ref: 4c0404381 +Ref: blas c gsl_blas_dgemm404600 +Ref: 4c1404600 +Ref: blas c gsl_blas_cgemm404793 +Ref: 4c2404793 +Ref: blas c gsl_blas_zgemm405082 +Ref: 4c3405082 +Ref: blas c gsl_blas_ssymm405594 +Ref: 4c4405594 +Ref: blas c gsl_blas_dsymm405789 +Ref: 4c5405789 +Ref: blas c gsl_blas_csymm405968 +Ref: 4c6405968 +Ref: blas c gsl_blas_zsymm406233 +Ref: 4c7406233 +Ref: blas c gsl_blas_chemm406914 +Ref: 4c8406914 +Ref: blas c gsl_blas_zhemm407179 +Ref: 4c9407179 +Ref: blas c gsl_blas_strmm407936 +Ref: 4ca407936 +Ref: blas c gsl_blas_dtrmm408136 +Ref: 4cb408136 +Ref: blas c gsl_blas_ctrmm408325 +Ref: 4cc408325 +Ref: blas c gsl_blas_ztrmm408569 +Ref: 4cd408569 +Ref: blas c gsl_blas_strsm409509 +Ref: 4ce409509 +Ref: blas c gsl_blas_dtrsm409709 +Ref: 4cf409709 +Ref: blas c gsl_blas_ctrsm409898 +Ref: 4d0409898 +Ref: blas c gsl_blas_ztrsm410142 +Ref: 4d1410142 +Ref: blas c gsl_blas_ssyrk411105 +Ref: 4d2411105 +Ref: blas c gsl_blas_dsyrk411278 +Ref: 4d3411278 +Ref: blas c gsl_blas_csyrk411441 +Ref: 4d4411441 +Ref: blas c gsl_blas_zsyrk411676 +Ref: 4d5411676 +Ref: blas c gsl_blas_cherk412417 +Ref: 4d6412417 +Ref: blas c gsl_blas_zherk412616 +Ref: 4d7412616 +Ref: blas c gsl_blas_ssyr2k413405 +Ref: 4d8413405 +Ref: blas c gsl_blas_dsyr2k413617 +Ref: 4d9413617 +Ref: blas c gsl_blas_csyr2k413803 +Ref: 4da413803 +Ref: blas c gsl_blas_zsyr2k414085 +Ref: 4db414085 +Ref: blas c gsl_blas_cher2k414893 +Ref: 4dc414893 +Ref: blas c gsl_blas_zher2k415147 +Ref: 4dd415147 +Node: Examples<8>416028 +Ref: blas examples416158 +Ref: 4de416158 +Node: References and Further Reading<8>417430 +Ref: blas sec-blas-references417533 +Ref: 4df417533 +Ref: blas references-and-further-reading417533 +Ref: 4e0417533 +Node: Linear Algebra418785 +Ref: linalg linear-algebra418882 +Ref: 4e1418882 +Ref: linalg doc418882 +Ref: 4e2418882 +Node: LU Decomposition420102 +Ref: linalg lu-decomposition420195 +Ref: 4e3420195 +Ref: linalg c gsl_linalg_LU_decomp420721 +Ref: 4e4420721 +Ref: linalg c gsl_linalg_complex_LU_decomp420822 +Ref: 4e5420822 +Ref: linalg c gsl_linalg_LU_solve421847 +Ref: 4e6421847 +Ref: linalg c gsl_linalg_complex_LU_solve421984 +Ref: 4e7421984 +Ref: linalg c gsl_linalg_LU_svx422390 +Ref: 4e8422390 +Ref: linalg c gsl_linalg_complex_LU_svx422503 +Ref: 4e9422503 +Ref: linalg c gsl_linalg_LU_refine422890 +Ref: 4ea422890 +Ref: linalg c gsl_linalg_complex_LU_refine423079 +Ref: 4eb423079 +Ref: linalg c gsl_linalg_LU_invert423563 +Ref: 4ec423563 +Ref: linalg c gsl_linalg_complex_LU_invert423685 +Ref: 4ed423685 +Ref: linalg c gsl_linalg_LU_det424350 +Ref: 4ee424350 +Ref: linalg c gsl_linalg_complex_LU_det424419 +Ref: 4ef424419 +Ref: linalg c gsl_linalg_LU_lndet424756 +Ref: 4f0424756 +Ref: linalg c gsl_linalg_complex_LU_lndet424815 +Ref: 4f1424815 +Ref: linalg c gsl_linalg_LU_sgndet425170 +Ref: 4f2425170 +Ref: linalg c gsl_linalg_complex_LU_sgndet425239 +Ref: 4f3425239 +Node: QR Decomposition425493 +Ref: linalg qr-decomposition425632 +Ref: 4f4425632 +Ref: linalg c gsl_linalg_QR_decomp426223 +Ref: 4f5426223 +Ref: linalg c gsl_linalg_QR_solve427155 +Ref: 4f6427155 +Ref: linalg c gsl_linalg_QR_svx427613 +Ref: 4f8427613 +Ref: linalg c gsl_linalg_QR_lssolve428048 +Ref: 4f7428048 +Ref: linalg c gsl_linalg_QR_QTvec428713 +Ref: 4f9428713 +Ref: linalg c gsl_linalg_QR_Qvec429141 +Ref: 4fa429141 +Ref: linalg c gsl_linalg_QR_QTmat429562 +Ref: 4fb429562 +Ref: linalg c gsl_linalg_QR_Rsolve429990 +Ref: 4fc429990 +Ref: linalg c gsl_linalg_QR_Rsvx430292 +Ref: 4fd430292 +Ref: linalg c gsl_linalg_QR_unpack430698 +Ref: 4fe430698 +Ref: linalg c gsl_linalg_QR_QRsolve431003 +Ref: 4ff431003 +Ref: linalg c gsl_linalg_QR_update431305 +Ref: 500431305 +Ref: linalg c gsl_linalg_R_solve431704 +Ref: 501431704 +Ref: linalg c gsl_linalg_R_svx431906 +Ref: 502431906 +Node: QR Decomposition with Column Pivoting432169 +Ref: linalg qr-decomposition-with-column-pivoting432325 +Ref: 503432325 +Ref: linalg c gsl_linalg_QRPT_decomp433469 +Ref: 505433469 +Ref: linalg c gsl_linalg_QRPT_decomp2434793 +Ref: 506434793 +Ref: linalg c gsl_linalg_QRPT_solve435180 +Ref: 507435180 +Ref: linalg c gsl_linalg_QRPT_svx435572 +Ref: 508435572 +Ref: linalg c gsl_linalg_QRPT_lssolve435965 +Ref: 509435965 +Ref: linalg c gsl_linalg_QRPT_lssolve2436808 +Ref: 50a436808 +Ref: linalg c gsl_linalg_QRPT_QRsolve437755 +Ref: 50c437755 +Ref: linalg c gsl_linalg_QRPT_update438119 +Ref: 50d438119 +Ref: linalg c gsl_linalg_QRPT_Rsolve438618 +Ref: 50e438618 +Ref: linalg c gsl_linalg_QRPT_Rsvx438872 +Ref: 50f438872 +Ref: linalg c gsl_linalg_QRPT_rank439217 +Ref: 50b439217 +Ref: linalg c gsl_linalg_QRPT_rcond439655 +Ref: 510439655 +Node: Complete Orthogonal Decomposition440100 +Ref: linalg complete-orthogonal-decomposition440268 +Ref: 511440268 +Ref: linalg cod440268 +Ref: 504440268 +Ref: linalg c gsl_linalg_COD_decomp441893 +Ref: 512441893 +Ref: linalg c gsl_linalg_COD_decomp_e442065 +Ref: 513442065 +Ref: linalg c gsl_linalg_COD_lssolve443066 +Ref: 514443066 +Ref: linalg c gsl_linalg_COD_lssolve2443943 +Ref: 515443943 +Ref: linalg c gsl_linalg_COD_unpack444901 +Ref: 516444901 +Ref: linalg c gsl_linalg_COD_matZ445343 +Ref: 517445343 +Node: Singular Value Decomposition445811 +Ref: linalg singular-value-decomposition445964 +Ref: 518445964 +Ref: linalg c gsl_linalg_SV_decomp447591 +Ref: 519447591 +Ref: linalg c gsl_linalg_SV_decomp_mod448350 +Ref: 51a448350 +Ref: linalg c gsl_linalg_SV_decomp_jacobi448724 +Ref: 51b448724 +Ref: linalg c gsl_linalg_SV_solve449099 +Ref: 51c449099 +Ref: linalg c gsl_linalg_SV_leverage449930 +Ref: 51d449930 +Node: Cholesky Decomposition450384 +Ref: linalg cholesky-decomposition450534 +Ref: 51e450534 +Ref: linalg sec-cholesky-decomposition450534 +Ref: 3ee450534 +Ref: linalg c gsl_linalg_cholesky_decomp1451503 +Ref: 51f451503 +Ref: linalg c gsl_linalg_complex_cholesky_decomp451566 +Ref: 520451566 +Ref: linalg c gsl_linalg_cholesky_decomp452397 +Ref: 521452397 +Ref: linalg c gsl_linalg_cholesky_solve452552 +Ref: 522452552 +Ref: linalg c gsl_linalg_complex_cholesky_solve452674 +Ref: 523452674 +Ref: linalg c gsl_linalg_cholesky_svx453110 +Ref: 524453110 +Ref: linalg c gsl_linalg_complex_cholesky_svx453208 +Ref: 525453208 +Ref: linalg c gsl_linalg_cholesky_invert453727 +Ref: 526453727 +Ref: linalg c gsl_linalg_complex_cholesky_invert453796 +Ref: 527453796 +Ref: linalg c gsl_linalg_cholesky_decomp2454213 +Ref: 528454213 +Ref: linalg c gsl_linalg_cholesky_solve2455213 +Ref: 529455213 +Ref: linalg c gsl_linalg_cholesky_svx2455609 +Ref: 52a455609 +Ref: linalg c gsl_linalg_cholesky_scale456086 +Ref: 52b456086 +Ref: linalg c gsl_linalg_cholesky_scale_apply456627 +Ref: 52c456627 +Ref: linalg c gsl_linalg_cholesky_rcond456860 +Ref: 52d456860 +Node: Pivoted Cholesky Decomposition457367 +Ref: linalg pivoted-cholesky-decomposition457520 +Ref: 52e457520 +Ref: linalg c gsl_linalg_pcholesky_decomp458236 +Ref: 52f458236 +Ref: linalg c gsl_linalg_pcholesky_solve458986 +Ref: 530458986 +Ref: linalg c gsl_linalg_pcholesky_svx459390 +Ref: 531459390 +Ref: linalg c gsl_linalg_pcholesky_decomp2459888 +Ref: 532459888 +Ref: linalg c gsl_linalg_pcholesky_solve2461026 +Ref: 533461026 +Ref: linalg c gsl_linalg_pcholesky_svx2461493 +Ref: 534461493 +Ref: linalg c gsl_linalg_pcholesky_invert462062 +Ref: 535462062 +Ref: linalg c gsl_linalg_pcholesky_rcond462385 +Ref: 536462385 +Node: Modified Cholesky Decomposition462920 +Ref: linalg modified-cholesky-decomposition463103 +Ref: 537463103 +Ref: linalg c gsl_linalg_mcholesky_decomp464186 +Ref: 538464186 +Ref: linalg c gsl_linalg_mcholesky_solve465092 +Ref: 539465092 +Ref: linalg c gsl_linalg_mcholesky_svx465508 +Ref: 53a465508 +Ref: linalg c gsl_linalg_mcholesky_rcond466018 +Ref: 53b466018 +Node: Tridiagonal Decomposition of Real Symmetric Matrices466549 +Ref: linalg tridiagonal-decomposition-of-real-symmetric-matrices466749 +Ref: 53c466749 +Ref: linalg c gsl_linalg_symmtd_decomp467043 +Ref: 53d467043 +Ref: linalg c gsl_linalg_symmtd_unpack467683 +Ref: 53e467683 +Ref: linalg c gsl_linalg_symmtd_unpack_T468154 +Ref: 53f468154 +Node: Tridiagonal Decomposition of Hermitian Matrices468518 +Ref: linalg tridiagonal-decomposition-of-hermitian-matrices468728 +Ref: 540468728 +Ref: linalg c gsl_linalg_hermtd_decomp469015 +Ref: 541469015 +Ref: linalg c gsl_linalg_hermtd_unpack469721 +Ref: 542469721 +Ref: linalg c gsl_linalg_hermtd_unpack_T470208 +Ref: 543470208 +Node: Hessenberg Decomposition of Real Matrices470579 +Ref: linalg hessenberg-decomposition-of-real-matrices470789 +Ref: 544470789 +Ref: linalg c gsl_linalg_hessenberg_decomp471274 +Ref: 545471274 +Ref: linalg c gsl_linalg_hessenberg_unpack471945 +Ref: 546471945 +Ref: linalg c gsl_linalg_hessenberg_unpack_accum472301 +Ref: 547472301 +Ref: linalg c gsl_linalg_hessenberg_set_zero472879 +Ref: 548472879 +Node: Hessenberg-Triangular Decomposition of Real Matrices473171 +Ref: linalg hessenberg-triangular-decomposition-of-real-matrices473351 +Ref: 549473351 +Ref: linalg c gsl_linalg_hesstri_decomp473838 +Ref: 54a473838 +Node: Bidiagonalization474336 +Ref: linalg bidiagonalization474491 +Ref: 54b474491 +Ref: linalg c gsl_linalg_bidiag_decomp474843 +Ref: 54c474843 +Ref: linalg c gsl_linalg_bidiag_unpack475536 +Ref: 54d475536 +Ref: linalg c gsl_linalg_bidiag_unpack2476159 +Ref: 54e476159 +Ref: linalg c gsl_linalg_bidiag_unpack_B476638 +Ref: 54f476638 +Node: Givens Rotations476999 +Ref: linalg givens-rotations477129 +Ref: 550477129 +Ref: linalg c gsl_linalg_givens477771 +Ref: 551477771 +Ref: linalg c gsl_linalg_givens_gv478060 +Ref: 552478060 +Node: Householder Transformations478405 +Ref: linalg householder-transformations478555 +Ref: 553478555 +Ref: linalg c gsl_linalg_householder_transform479058 +Ref: 554479058 +Ref: linalg c gsl_linalg_complex_householder_transform479129 +Ref: 555479129 +Ref: linalg c gsl_linalg_householder_hm479806 +Ref: 556479806 +Ref: linalg c gsl_linalg_complex_householder_hm479911 +Ref: 557479911 +Ref: linalg c gsl_linalg_householder_mh480257 +Ref: 558480257 +Ref: linalg c gsl_linalg_complex_householder_mh480362 +Ref: 559480362 +Ref: linalg c gsl_linalg_householder_hv480709 +Ref: 55a480709 +Ref: linalg c gsl_linalg_complex_householder_hv480814 +Ref: 55b480814 +Node: Householder solver for linear systems481146 +Ref: linalg householder-solver-for-linear-systems481299 +Ref: 55c481299 +Ref: linalg c gsl_linalg_HH_solve481388 +Ref: 55d481388 +Ref: linalg c gsl_linalg_HH_svx481740 +Ref: 55e481740 +Node: Tridiagonal Systems482085 +Ref: linalg tridiagonal-systems482229 +Ref: 55f482229 +Ref: linalg c gsl_linalg_solve_tridiag482661 +Ref: 560482661 +Ref: linalg c gsl_linalg_solve_symm_tridiag483274 +Ref: 561483274 +Ref: linalg c gsl_linalg_solve_cyc_tridiag483848 +Ref: 562483848 +Ref: linalg c gsl_linalg_solve_symm_cyc_tridiag484492 +Ref: 563484492 +Node: Triangular Systems485092 +Ref: linalg triangular-systems485208 +Ref: 564485208 +Ref: linalg c gsl_linalg_tri_upper_invert485259 +Ref: 565485259 +Ref: linalg c gsl_linalg_tri_lower_invert485322 +Ref: 566485322 +Ref: linalg c gsl_linalg_tri_upper_unit_invert485385 +Ref: 567485385 +Ref: linalg c gsl_linalg_tri_lower_unit_invert485453 +Ref: 568485453 +Ref: linalg c gsl_linalg_tri_upper_rcond485992 +Ref: 569485992 +Ref: linalg c gsl_linalg_tri_lower_rcond486105 +Ref: 56a486105 +Node: Balancing486556 +Ref: linalg balancing486664 +Ref: 56b486664 +Ref: linalg id1486664 +Ref: 56c486664 +Ref: linalg c gsl_linalg_balance_matrix487089 +Ref: 56d487089 +Node: Examples<9>487356 +Ref: linalg examples487479 +Ref: 56e487479 +Node: References and Further Reading<9>489326 +Ref: linalg references-and-further-reading489431 +Ref: 56f489431 +Node: Eigensystems491273 +Ref: eigen doc491386 +Ref: 570491386 +Ref: eigen eigensystems491386 +Ref: 571491386 +Node: Real Symmetric Matrices492509 +Ref: eigen real-symmetric-matrices492617 +Ref: 572492617 +Ref: eigen c gsl_eigen_symm_workspace492958 +Ref: 573492958 +Ref: eigen c gsl_eigen_symm_alloc493097 +Ref: 574493097 +Ref: eigen c gsl_eigen_symm_free493349 +Ref: 575493349 +Ref: eigen c gsl_eigen_symm493496 +Ref: 576493496 +Ref: eigen c gsl_eigen_symmv_workspace494006 +Ref: 577494006 +Ref: eigen c gsl_eigen_symmv_alloc494162 +Ref: 578494162 +Ref: eigen c gsl_eigen_symmv_free494433 +Ref: 579494433 +Ref: eigen c gsl_eigen_symmv494582 +Ref: 57a494582 +Node: Complex Hermitian Matrices495414 +Ref: eigen complex-hermitian-matrices495557 +Ref: 57b495557 +Ref: eigen c gsl_eigen_herm_workspace495741 +Ref: 57c495741 +Ref: eigen c gsl_eigen_herm_alloc495880 +Ref: 57d495880 +Ref: eigen c gsl_eigen_herm_free496135 +Ref: 57e496135 +Ref: eigen c gsl_eigen_herm496282 +Ref: 57f496282 +Ref: eigen c gsl_eigen_hermv_workspace496892 +Ref: 580496892 +Ref: eigen c gsl_eigen_hermv_alloc497048 +Ref: 581497048 +Ref: eigen c gsl_eigen_hermv_free497322 +Ref: 582497322 +Ref: eigen c gsl_eigen_hermv497471 +Ref: 583497471 +Node: Real Nonsymmetric Matrices498434 +Ref: eigen real-nonsymmetric-matrices498602 +Ref: 584498602 +Ref: eigen c gsl_eigen_nonsymm_workspace499102 +Ref: 585499102 +Ref: eigen c gsl_eigen_nonsymm_alloc499247 +Ref: 586499247 +Ref: eigen c gsl_eigen_nonsymm_free499508 +Ref: 587499508 +Ref: eigen c gsl_eigen_nonsymm_params499671 +Ref: 588499671 +Ref: eigen c gsl_eigen_nonsymm501366 +Ref: 589501366 +Ref: eigen c gsl_eigen_nonsymm_Z502160 +Ref: 58a502160 +Ref: eigen c gsl_eigen_nonsymmv_workspace502467 +Ref: 58b502467 +Ref: eigen c gsl_eigen_nonsymmv_alloc502629 +Ref: 58c502629 +Ref: eigen c gsl_eigen_nonsymmv_free502909 +Ref: 58d502909 +Ref: eigen c gsl_eigen_nonsymmv_params503074 +Ref: 58e503074 +Ref: eigen c gsl_eigen_nonsymmv503611 +Ref: 58f503611 +Ref: eigen c gsl_eigen_nonsymmv_Z504481 +Ref: 590504481 +Node: Real Generalized Symmetric-Definite Eigensystems504794 +Ref: eigen real-generalized-symmetric-definite-eigensystems504987 +Ref: 591504987 +Ref: eigen c gsl_eigen_gensymm_workspace505882 +Ref: 592505882 +Ref: eigen c gsl_eigen_gensymm_alloc506036 +Ref: 593506036 +Ref: eigen c gsl_eigen_gensymm_free506319 +Ref: 594506319 +Ref: eigen c gsl_eigen_gensymm506482 +Ref: 595506482 +Ref: eigen c gsl_eigen_gensymmv_workspace506895 +Ref: 596506895 +Ref: eigen c gsl_eigen_gensymmv_alloc507066 +Ref: 597507066 +Ref: eigen c gsl_eigen_gensymmv_free507368 +Ref: 598507368 +Ref: eigen c gsl_eigen_gensymmv507533 +Ref: 599507533 +Node: Complex Generalized Hermitian-Definite Eigensystems508060 +Ref: eigen complex-generalized-hermitian-definite-eigensystems508269 +Ref: 59a508269 +Ref: eigen c gsl_eigen_genherm_workspace508979 +Ref: 59b508979 +Ref: eigen c gsl_eigen_genherm_alloc509133 +Ref: 59c509133 +Ref: eigen c gsl_eigen_genherm_free509418 +Ref: 59d509418 +Ref: eigen c gsl_eigen_genherm509581 +Ref: 59e509581 +Ref: eigen c gsl_eigen_genhermv_workspace510023 +Ref: 59f510023 +Ref: eigen c gsl_eigen_genhermv_alloc510194 +Ref: 5a0510194 +Ref: eigen c gsl_eigen_genhermv_free510499 +Ref: 5a1510499 +Ref: eigen c gsl_eigen_genhermv510664 +Ref: 5a2510664 +Node: Real Generalized Nonsymmetric Eigensystems511218 +Ref: eigen real-generalized-nonsymmetric-eigensystems511415 +Ref: 5a3511415 +Ref: eigen c gsl_eigen_gen_workspace513207 +Ref: 5a4513207 +Ref: eigen c gsl_eigen_gen_alloc513347 +Ref: 5a5513347 +Ref: eigen c gsl_eigen_gen_free513615 +Ref: 5a6513615 +Ref: eigen c gsl_eigen_gen_params513760 +Ref: 5a7513760 +Ref: eigen c gsl_eigen_gen514913 +Ref: 5a8514913 +Ref: eigen c gsl_eigen_gen_QZ515984 +Ref: 5a9515984 +Ref: eigen c gsl_eigen_genv_workspace516372 +Ref: 5aa516372 +Ref: eigen c gsl_eigen_genv_alloc516529 +Ref: 5ab516529 +Ref: eigen c gsl_eigen_genv_free516817 +Ref: 5ac516817 +Ref: eigen c gsl_eigen_genv516964 +Ref: 5ad516964 +Ref: eigen c gsl_eigen_genv_QZ518017 +Ref: 5ae518017 +Node: Sorting Eigenvalues and Eigenvectors518445 +Ref: eigen sorting-eigenvalues-and-eigenvectors518603 +Ref: 5af518603 +Ref: eigen c gsl_eigen_symmv_sort518688 +Ref: 5b0518688 +Ref: eigen c gsl_eigen_sort_t519088 +Ref: 5b1519088 +Ref: eigen c gsl_eigen_hermv_sort519803 +Ref: 5b2519803 +Ref: eigen c gsl_eigen_nonsymmv_sort520229 +Ref: 5b3520229 +Ref: eigen c gsl_eigen_gensymmv_sort520796 +Ref: 5b4520796 +Ref: eigen c gsl_eigen_genhermv_sort521214 +Ref: 5b5521214 +Ref: eigen c gsl_eigen_genv_sort521643 +Ref: 5b6521643 +Node: Examples<10>522263 +Ref: eigen examples522413 +Ref: 5b7522413 +Node: References and Further Reading<10>527622 +Ref: eigen references-and-further-reading527727 +Ref: 5b8527727 +Node: Fast Fourier Transforms FFTs528622 +Ref: fft doc528742 +Ref: 5b9528742 +Ref: fft fast-fourier-transforms-ffts528742 +Ref: 5ba528742 +Node: Mathematical Definitions529874 +Ref: fft mathematical-definitions530002 +Ref: 5bc530002 +Node: Overview of complex data FFTs532316 +Ref: fft overview-of-complex-data-ffts532490 +Ref: 5bf532490 +Node: Radix-2 FFT routines for complex data535277 +Ref: fft radix-2-fft-routines-for-complex-data535468 +Ref: 5c0535468 +Ref: fft c gsl_fft_complex_radix2_forward536050 +Ref: 35536050 +Ref: fft c gsl_fft_complex_radix2_transform536166 +Ref: 5c1536166 +Ref: fft c gsl_fft_complex_radix2_backward536318 +Ref: 5c2536318 +Ref: fft c gsl_fft_complex_radix2_inverse536435 +Ref: 5c3536435 +Ref: fft c gsl_fft_complex_radix2_dif_forward537154 +Ref: 5c4537154 +Ref: fft c gsl_fft_complex_radix2_dif_transform537274 +Ref: 5c5537274 +Ref: fft c gsl_fft_complex_radix2_dif_backward537430 +Ref: 5c6537430 +Ref: fft c gsl_fft_complex_radix2_dif_inverse537551 +Ref: 5c7537551 +Ref: fft fig-fft-complex-radix2539700 +Ref: 5c8539700 +Node: Mixed-radix FFT routines for complex data539830 +Ref: fft mixed-radix-fft-routines-for-complex-data540018 +Ref: 5c9540018 +Ref: fft c gsl_fft_complex_wavetable_alloc542281 +Ref: 5ca542281 +Ref: fft c gsl_fft_complex_wavetable_free543440 +Ref: 5cc543440 +Ref: fft c gsl_fft_complex_wavetable544171 +Ref: 5cb544171 +Ref: fft c gsl_fft_complex_workspace545377 +Ref: 5cd545377 +Ref: fft c gsl_fft_complex_workspace_alloc545534 +Ref: 5ce545534 +Ref: fft c gsl_fft_complex_workspace_free545720 +Ref: 5cf545720 +Ref: fft c gsl_fft_complex_forward546045 +Ref: 5bd546045 +Ref: fft c gsl_fft_complex_transform546253 +Ref: 5d0546253 +Ref: fft c gsl_fft_complex_backward546487 +Ref: 5d1546487 +Ref: fft c gsl_fft_complex_inverse546696 +Ref: 5be546696 +Node: Overview of real data FFTs550024 +Ref: fft overview-of-real-data-ffts550209 +Ref: 5d2550209 +Node: Radix-2 FFT routines for real data552481 +Ref: fft radix-2-fft-routines-for-real-data552663 +Ref: 5d3552663 +Ref: fft c gsl_fft_real_radix2_transform552999 +Ref: 5d4552999 +Ref: fft c gsl_fft_halfcomplex_radix2_inverse555070 +Ref: 5d6555070 +Ref: fft c gsl_fft_halfcomplex_radix2_backward555174 +Ref: 5d7555174 +Ref: fft c gsl_fft_halfcomplex_radix2_unpack555583 +Ref: 5d5555583 +Node: Mixed-radix FFT routines for real data556934 +Ref: fft mixed-radix-fft-routines-for-real-data557124 +Ref: 5d8557124 +Ref: fft c gsl_fft_real_wavetable560353 +Ref: 5da560353 +Ref: fft c gsl_fft_halfcomplex_wavetable560386 +Ref: 5db560386 +Ref: fft c gsl_fft_real_wavetable_alloc560510 +Ref: 5dc560510 +Ref: fft c gsl_fft_halfcomplex_wavetable_alloc560599 +Ref: 5dd560599 +Ref: fft c gsl_fft_real_wavetable_free561736 +Ref: 5de561736 +Ref: fft c gsl_fft_halfcomplex_wavetable_free561830 +Ref: 5df561830 +Ref: fft c gsl_fft_real_workspace562226 +Ref: 5e0562226 +Ref: fft c gsl_fft_real_workspace_alloc562331 +Ref: 5e1562331 +Ref: fft c gsl_fft_real_workspace_free562603 +Ref: 5e2562603 +Ref: fft c gsl_fft_real_transform562953 +Ref: 5d9562953 +Ref: fft c gsl_fft_halfcomplex_transform563128 +Ref: 5e3563128 +Ref: fft c gsl_fft_real_unpack564059 +Ref: 5e4564059 +Ref: fft c gsl_fft_halfcomplex_unpack564695 +Ref: 5e5564695 +Ref: fft fig-fft-real-mixedradix568070 +Ref: 5e6568070 +Node: References and Further Reading<11>568200 +Ref: fft fft-references568347 +Ref: 5bb568347 +Ref: fft references-and-further-reading568347 +Ref: 5e7568347 +Node: Numerical Integration571030 +Ref: integration doc571162 +Ref: 5e8571162 +Ref: integration numerical-integration571162 +Ref: 5e9571162 +Node: Introduction<2>572887 +Ref: integration introduction573012 +Ref: 5ea573012 +Node: Integrands without weight functions575112 +Ref: integration integrands-without-weight-functions575241 +Ref: 5eb575241 +Node: Integrands with weight functions575919 +Ref: integration integrands-with-weight-functions576098 +Ref: 5ec576098 +Node: Integrands with singular weight functions576608 +Ref: integration integrands-with-singular-weight-functions576743 +Ref: 5ed576743 +Node: QNG non-adaptive Gauss-Kronrod integration577505 +Ref: integration qng-non-adaptive-gauss-kronrod-integration577663 +Ref: 5ee577663 +Ref: integration c gsl_integration_qng577967 +Ref: 5ef577967 +Node: QAG adaptive integration578797 +Ref: integration qag-adaptive-integration578984 +Ref: 5f0578984 +Ref: integration c gsl_integration_workspace579428 +Ref: 5f1579428 +Ref: integration c gsl_integration_workspace_alloc579567 +Ref: 5f2579567 +Ref: integration c gsl_integration_workspace_free579958 +Ref: 5f3579958 +Ref: integration c gsl_integration_qag580127 +Ref: 5f4580127 +Ref: integration c GSL_INTEG_GAUSS15580848 +Ref: 5f5580848 +Ref: integration c GSL_INTEG_GAUSS21580898 +Ref: 5f6580898 +Ref: integration c GSL_INTEG_GAUSS31580948 +Ref: 5f7580948 +Ref: integration c GSL_INTEG_GAUSS41580998 +Ref: 5f8580998 +Ref: integration c GSL_INTEG_GAUSS51581048 +Ref: 5f9581048 +Ref: integration c GSL_INTEG_GAUSS61581098 +Ref: 5fa581098 +Node: QAGS adaptive integration with singularities581746 +Ref: integration qags-adaptive-integration-with-singularities581943 +Ref: 5fb581943 +Ref: integration c gsl_integration_qags582544 +Ref: 5fc582544 +Node: QAGP adaptive integration with known singular points583582 +Ref: integration qagp-adaptive-integration-with-known-singular-points583802 +Ref: 5fd583802 +Ref: integration c gsl_integration_qagp583919 +Ref: 5fe583919 +Node: QAGI adaptive integration on infinite intervals584953 +Ref: integration qagi-adaptive-integration-on-infinite-intervals585182 +Ref: 5ff585182 +Ref: integration c gsl_integration_qagi585289 +Ref: 600585289 +Ref: integration c gsl_integration_qagiu586075 +Ref: 601586075 +Ref: integration c gsl_integration_qagil586641 +Ref: 602586641 +Node: QAWC adaptive integration for Cauchy principal values587207 +Ref: integration qawc-adaptive-integration-for-cauchy-principal-values587432 +Ref: 603587432 +Ref: integration c gsl_integration_qawc587551 +Ref: 604587551 +Node: QAWS adaptive integration for singular functions588383 +Ref: integration qaws-adaptive-integration-for-singular-functions588612 +Ref: 605588612 +Ref: integration c gsl_integration_qaws_table588948 +Ref: 606588948 +Ref: integration c gsl_integration_qaws_table_alloc589068 +Ref: 607589068 +Ref: integration c gsl_integration_qaws_table_set591089 +Ref: 608591089 +Ref: integration c gsl_integration_qaws_table_free591380 +Ref: 609591380 +Ref: integration c gsl_integration_qaws591596 +Ref: 60a591596 +Node: QAWO adaptive integration for oscillatory functions592634 +Ref: integration qawo-adaptive-integration-for-oscillatory-functions592857 +Ref: 60b592857 +Ref: integration c gsl_integration_qawo_table_alloc593225 +Ref: 60c593225 +Ref: integration c GSL_INTEG_COSINE593930 +Ref: 60d593930 +Ref: integration c GSL_INTEG_SINE593964 +Ref: 60e593964 +Ref: integration c gsl_integration_qawo_table_set594550 +Ref: 610594550 +Ref: integration c gsl_integration_qawo_table_set_length594833 +Ref: 611594833 +Ref: integration c gsl_integration_qawo_table_free595044 +Ref: 612595044 +Ref: integration c gsl_integration_qawo595224 +Ref: 60f595224 +Node: QAWF adaptive integration for Fourier integrals596575 +Ref: integration qawf-adaptive-integration-for-fourier-integrals596783 +Ref: 613596783 +Ref: integration c gsl_integration_qawf596892 +Ref: 614596892 +Node: CQUAD doubly-adaptive integration599253 +Ref: integration cquad-doubly-adaptive-integration599429 +Ref: 615599429 +Ref: integration c gsl_integration_cquad_workspace_alloc600300 +Ref: 616600300 +Ref: integration c gsl_integration_cquad_workspace_free600795 +Ref: 617600795 +Ref: integration c gsl_integration_cquad600976 +Ref: 618600976 +Node: Romberg integration602575 +Ref: integration romberg-integration602730 +Ref: 619602730 +Ref: integration c gsl_integration_romberg_alloc603312 +Ref: 61a603312 +Ref: integration c gsl_integration_romberg_free603763 +Ref: 61b603763 +Ref: integration c gsl_integration_romberg603938 +Ref: 61c603938 +Node: Gauss-Legendre integration604912 +Ref: integration gauss-legendre-integration605057 +Ref: 61d605057 +Ref: integration c gsl_integration_glfixed_table_alloc605589 +Ref: 61e605589 +Ref: integration c gsl_integration_glfixed606003 +Ref: 61f606003 +Ref: integration c gsl_integration_glfixed_point606265 +Ref: 620606265 +Ref: integration c gsl_integration_glfixed_table_free606768 +Ref: 621606768 +Node: Fixed point quadratures606941 +Ref: integration fixed-point-quadratures607078 +Ref: 622607078 +Ref: integration tab-fixed-quadratures608021 +Ref: 623608021 +Ref: integration c gsl_integration_fixed_workspace611383 +Ref: 624611383 +Ref: integration c gsl_integration_fixed_alloc611940 +Ref: 625611940 +Ref: integration c gsl_integration_fixed_type612594 +Ref: 626612594 +Ref: integration c gsl_integration_fixed_legendre612753 +Ref: 627612753 +Ref: integration c gsl_integration_fixed_chebyshev612979 +Ref: 628612979 +Ref: integration c gsl_integration_fixed_gegenbauer613213 +Ref: 629613213 +Ref: integration c gsl_integration_fixed_jacobi613404 +Ref: 62a613404 +Ref: integration c gsl_integration_fixed_laguerre613520 +Ref: 62b613520 +Ref: integration c gsl_integration_fixed_hermite613707 +Ref: 62c613707 +Ref: integration c gsl_integration_fixed_exponential613892 +Ref: 62d613892 +Ref: integration c gsl_integration_fixed_rational614085 +Ref: 62e614085 +Ref: integration c gsl_integration_fixed_chebyshev2614205 +Ref: 62f614205 +Ref: integration c gsl_integration_fixed_free614440 +Ref: 630614440 +Ref: integration c gsl_integration_fixed_n614609 +Ref: 631614609 +Ref: integration c gsl_integration_fixed_nodes614781 +Ref: 632614781 +Ref: integration c gsl_integration_fixed_weights614995 +Ref: 633614995 +Ref: integration c gsl_integration_fixed615213 +Ref: 634615213 +Node: Error codes615749 +Ref: integration error-codes615872 +Ref: 635615872 +Node: Examples<11>616792 +Ref: integration examples616926 +Ref: 636616926 +Node: Adaptive integration example617035 +Ref: integration adaptive-integration-example617152 +Ref: 637617152 +Node: Fixed-point quadrature example619059 +Ref: integration fixed-point-quadrature-example619176 +Ref: 638619176 +Node: References and Further Reading<12>621850 +Ref: integration references-and-further-reading621964 +Ref: 639621964 +Node: Random Number Generation623291 +Ref: rng doc623417 +Ref: 63a623417 +Ref: rng random-number-generation623417 +Ref: 63b623417 +Node: General comments on random numbers624766 +Ref: rng general-comments-on-random-numbers624908 +Ref: 63c624908 +Node: The Random Number Generator Interface626735 +Ref: rng the-random-number-generator-interface626924 +Ref: 63d626924 +Ref: rng c gsl_rng_type627777 +Ref: 63e627777 +Ref: rng c gsl_rng627800 +Ref: 63f627800 +Node: Random number generator initialization628190 +Ref: rng random-number-generator-initialization628384 +Ref: 640628384 +Ref: rng c gsl_rng_alloc628473 +Ref: 641628473 +Ref: rng c gsl_rng_set629321 +Ref: 644629321 +Ref: rng c gsl_rng_free630468 +Ref: 646630468 +Node: Sampling from a random number generator630600 +Ref: rng sampling-from-a-random-number-generator630800 +Ref: 647630800 +Ref: rng c gsl_rng_get631186 +Ref: 649631186 +Ref: rng c gsl_rng_uniform631622 +Ref: 64c631622 +Ref: rng c gsl_rng_uniform_pos632230 +Ref: 64d632230 +Ref: rng c gsl_rng_uniform_int632673 +Ref: 64e632673 +Node: Auxiliary random number generator functions634004 +Ref: rng auxiliary-random-number-generator-functions634201 +Ref: 652634201 +Ref: rng c gsl_rng_name634468 +Ref: 653634468 +Ref: rng c gsl_rng_max634750 +Ref: 64a634750 +Ref: rng c gsl_rng_min634909 +Ref: 64b634909 +Ref: rng c gsl_rng_state635225 +Ref: 654635225 +Ref: rng c gsl_rng_size635280 +Ref: 655635280 +Ref: rng c gsl_rng_types_setup635703 +Ref: 656635703 +Node: Random number environment variables636350 +Ref: rng random-number-environment-variables636545 +Ref: 657636545 +Ref: rng c GSL_RNG_TYPE636926 +Ref: 658636926 +Ref: rng c GSL_RNG_SEED637116 +Ref: 643637116 +Ref: rng c gsl_rng_default637237 +Ref: 65a637237 +Ref: rng c gsl_rng_default_seed637532 +Ref: 642637532 +Ref: rng c gsl_rng_env_setup637883 +Ref: 659637883 +Node: Copying random number generator state639631 +Ref: rng copying-random-number-generator-state639832 +Ref: 65b639832 +Ref: rng c gsl_rng_memcpy640168 +Ref: 65c640168 +Ref: rng c gsl_rng_clone640456 +Ref: 65d640456 +Node: Reading and writing random number generator state640636 +Ref: rng reading-and-writing-random-number-generator-state640836 +Ref: 65e640836 +Ref: rng c gsl_rng_fwrite641053 +Ref: 65f641053 +Ref: rng c gsl_rng_fread641494 +Ref: 660641494 +Node: Random number generator algorithms642070 +Ref: rng random-number-generator-algorithms642262 +Ref: 661642262 +Ref: rng c gsl_rng_mt19937643034 +Ref: 650643034 +Ref: rng c gsl_rng_ranlxs0644520 +Ref: 662644520 +Ref: rng c gsl_rng_ranlxs1644550 +Ref: 663644550 +Ref: rng c gsl_rng_ranlxs2644580 +Ref: 664644580 +Ref: rng c gsl_rng_ranlxd1645561 +Ref: 64f645561 +Ref: rng c gsl_rng_ranlxd2645591 +Ref: 665645591 +Ref: rng c gsl_rng_ranlux645830 +Ref: 645645830 +Ref: rng c gsl_rng_ranlux389645859 +Ref: 666645859 +Ref: rng c gsl_rng_cmrg647321 +Ref: 667647321 +Ref: rng c gsl_rng_mrg648178 +Ref: 668648178 +Ref: rng c gsl_rng_taus648828 +Ref: 651648828 +Ref: rng c gsl_rng_taus2648855 +Ref: 669648855 +Ref: rng c gsl_rng_gfsr4650292 +Ref: 66a650292 +Node: Unix random number generators652265 +Ref: rng unix-random-number-generators652438 +Ref: 66b652438 +Ref: rng c gsl_rng_rand653179 +Ref: 66c653179 +Ref: rng c gsl_rng_random_bsd653501 +Ref: 66d653501 +Ref: rng c gsl_rng_random_libc5653534 +Ref: 66e653534 +Ref: rng c gsl_rng_random_glibc2653569 +Ref: 66f653569 +Ref: rng c gsl_rng_rand48655092 +Ref: 670655092 +Node: Other random number generators656112 +Ref: rng other-random-number-generators656262 +Ref: 671656262 +Ref: rng c gsl_rng_ranf657291 +Ref: 672657291 +Ref: rng c gsl_rng_ranmar658742 +Ref: 673658742 +Ref: rng c gsl_rng_r250659028 +Ref: 674659028 +Ref: rng c gsl_rng_tt800659596 +Ref: 675659596 +Ref: rng c gsl_rng_vax660162 +Ref: 676660162 +Ref: rng c gsl_rng_transputer660480 +Ref: 677660480 +Ref: rng c gsl_rng_randu660749 +Ref: 678660749 +Ref: rng c gsl_rng_minstd661069 +Ref: 679661069 +Ref: rng c gsl_rng_uni661920 +Ref: 67a661920 +Ref: rng c gsl_rng_uni32661946 +Ref: 67b661946 +Ref: rng c gsl_rng_slatec662213 +Ref: 67c662213 +Ref: rng c gsl_rng_zuf662369 +Ref: 67d662369 +Ref: rng c gsl_rng_knuthran2662809 +Ref: 67e662809 +Ref: rng c gsl_rng_knuthran2002663110 +Ref: 67f663110 +Ref: rng c gsl_rng_knuthran663145 +Ref: 680663145 +Ref: rng c gsl_rng_borosh13663551 +Ref: 681663551 +Ref: rng c gsl_rng_fishman18663582 +Ref: 682663582 +Ref: rng c gsl_rng_fishman20663614 +Ref: 683663614 +Ref: rng c gsl_rng_lecuyer21663646 +Ref: 684663646 +Ref: rng c gsl_rng_waterman14663678 +Ref: 685663678 +Ref: rng c gsl_rng_fishman2x664209 +Ref: 686664209 +Ref: rng c gsl_rng_coveyou664599 +Ref: 687664599 +Node: Performance664898 +Ref: rng performance665031 +Ref: 688665031 +Node: Examples<12>665987 +Ref: rng examples666124 +Ref: 689666124 +Node: References and Further Reading<13>667454 +Ref: rng references-and-further-reading667596 +Ref: 68a667596 +Node: Acknowledgements668735 +Ref: rng acknowledgements668856 +Ref: 68b668856 +Node: Quasi-Random Sequences669196 +Ref: qrng quasi-random-sequences669328 +Ref: 68c669328 +Ref: qrng doc669328 +Ref: 68d669328 +Node: Quasi-random number generator initialization670267 +Ref: qrng quasi-random-number-generator-initialization670425 +Ref: 68e670425 +Ref: qrng c gsl_qrng670526 +Ref: 68f670526 +Ref: qrng c gsl_qrng_alloc670610 +Ref: 690670610 +Ref: qrng c gsl_qrng_free671040 +Ref: 691671040 +Ref: qrng c gsl_qrng_init671174 +Ref: 692671174 +Node: Sampling from a quasi-random number generator671407 +Ref: qrng sampling-from-a-quasi-random-number-generator671623 +Ref: 693671623 +Ref: qrng c gsl_qrng_get671726 +Ref: 694671726 +Node: Auxiliary quasi-random number generator functions672133 +Ref: qrng auxiliary-quasi-random-number-generator-functions672361 +Ref: 695672361 +Ref: qrng c gsl_qrng_name672472 +Ref: 696672472 +Ref: qrng c gsl_qrng_size672603 +Ref: 697672603 +Ref: qrng c gsl_qrng_state672659 +Ref: 698672659 +Node: Saving and restoring quasi-random number generator state673087 +Ref: qrng saving-and-restoring-quasi-random-number-generator-state673310 +Ref: 699673310 +Ref: qrng c gsl_qrng_memcpy673435 +Ref: 69a673435 +Ref: qrng c gsl_qrng_clone673744 +Ref: 69b673744 +Node: Quasi-random number generator algorithms673927 +Ref: qrng quasi-random-number-generator-algorithms674113 +Ref: 69c674113 +Ref: qrng c gsl_qrng_type674269 +Ref: 69d674269 +Ref: qrng c gsl_qrng_niederreiter_2674294 +Ref: 69e674294 +Ref: qrng c gsl_qrng_sobol674525 +Ref: 69f674525 +Ref: qrng c gsl_qrng_halton674745 +Ref: 6a0674745 +Ref: qrng c gsl_qrng_reversehalton674780 +Ref: 6a1674780 +Node: Examples<13>675138 +Ref: qrng examples675278 +Ref: 6a2675278 +Ref: qrng fig-qrng676175 +Ref: 6a3676175 +Node: References676289 +Ref: qrng references676380 +Ref: 6a4676380 +Node: Random Number Distributions676778 +Ref: randist random-number-distributions676896 +Ref: 6a5676896 +Ref: randist chap-random-number-distributions676896 +Ref: 648676896 +Ref: randist doc676896 +Ref: 6a6676896 +Node: Introduction<3>680068 +Ref: randist introduction680182 +Ref: 6a7680182 +Node: The Gaussian Distribution681840 +Ref: randist the-gaussian-distribution681993 +Ref: 6a8681993 +Ref: randist c gsl_ran_gaussian682056 +Ref: 6a9682056 +Ref: randist c gsl_ran_gaussian_pdf682706 +Ref: 6aa682706 +Ref: randist c gsl_ran_gaussian_ziggurat682986 +Ref: 6ab682986 +Ref: randist c gsl_ran_gaussian_ratio_method683077 +Ref: 6ac683077 +Ref: randist c gsl_ran_ugaussian683406 +Ref: 6ad683406 +Ref: randist c gsl_ran_ugaussian_pdf683465 +Ref: 6ae683465 +Ref: randist c gsl_ran_ugaussian_ratio_method683519 +Ref: 6af683519 +Ref: randist c gsl_cdf_gaussian_P683770 +Ref: 6b0683770 +Ref: randist c gsl_cdf_gaussian_Q683835 +Ref: 6b1683835 +Ref: randist c gsl_cdf_gaussian_Pinv683900 +Ref: 6b2683900 +Ref: randist c gsl_cdf_gaussian_Qinv683968 +Ref: 6b3683968 +Ref: randist c gsl_cdf_ugaussian_P684212 +Ref: 6b4684212 +Ref: randist c gsl_cdf_ugaussian_Q684264 +Ref: 6b5684264 +Ref: randist c gsl_cdf_ugaussian_Pinv684316 +Ref: 6b6684316 +Ref: randist c gsl_cdf_ugaussian_Qinv684371 +Ref: 6b7684371 +Node: The Gaussian Tail Distribution684566 +Ref: randist the-gaussian-tail-distribution684739 +Ref: 6b8684739 +Ref: randist c gsl_ran_gaussian_tail684812 +Ref: 6b9684812 +Ref: randist c gsl_ran_gaussian_tail_pdf685637 +Ref: 6ba685637 +Ref: randist c gsl_ran_ugaussian_tail685976 +Ref: 6bb685976 +Ref: randist c gsl_ran_ugaussian_tail_pdf686060 +Ref: 6bc686060 +Node: The Bivariate Gaussian Distribution686341 +Ref: randist the-bivariate-gaussian-distribution686527 +Ref: 6bd686527 +Ref: randist c gsl_ran_bivariate_gaussian686610 +Ref: 6be686610 +Ref: randist c gsl_ran_bivariate_gaussian_pdf687344 +Ref: 6bf687344 +Node: The Multivariate Gaussian Distribution687778 +Ref: randist the-multivariate-gaussian-distribution687962 +Ref: 6c0687962 +Ref: randist c gsl_ran_multivariate_gaussian688051 +Ref: 6c1688051 +Ref: randist c gsl_ran_multivariate_gaussian_pdf688879 +Ref: 6c2688879 +Ref: randist c gsl_ran_multivariate_gaussian_log_pdf689055 +Ref: 6c3689055 +Ref: randist c gsl_ran_multivariate_gaussian_mean689507 +Ref: 6c4689507 +Ref: randist c gsl_ran_multivariate_gaussian_vcov690037 +Ref: 6c5690037 +Node: The Exponential Distribution690658 +Ref: randist the-exponential-distribution690831 +Ref: 6c6690831 +Ref: randist c gsl_ran_exponential690900 +Ref: 6c7690900 +Ref: randist c gsl_ran_exponential_pdf691169 +Ref: 6c8691169 +Ref: randist c gsl_cdf_exponential_P691439 +Ref: 6c9691439 +Ref: randist c gsl_cdf_exponential_Q691504 +Ref: 6ca691504 +Ref: randist c gsl_cdf_exponential_Pinv691569 +Ref: 6cb691569 +Ref: randist c gsl_cdf_exponential_Qinv691637 +Ref: 6cc691637 +Node: The Laplace Distribution691867 +Ref: randist the-laplace-distribution692036 +Ref: 6cd692036 +Ref: randist c gsl_ran_laplace692097 +Ref: 6ce692097 +Ref: randist c gsl_ran_laplace_pdf692370 +Ref: 6cf692370 +Ref: randist c gsl_cdf_laplace_P692621 +Ref: 6d0692621 +Ref: randist c gsl_cdf_laplace_Q692681 +Ref: 6d1692681 +Ref: randist c gsl_cdf_laplace_Pinv692741 +Ref: 6d2692741 +Ref: randist c gsl_cdf_laplace_Qinv692804 +Ref: 6d3692804 +Node: The Exponential Power Distribution693025 +Ref: randist the-exponential-power-distribution693189 +Ref: 6d4693189 +Ref: randist c gsl_ran_exppow693270 +Ref: 6d5693270 +Ref: randist c gsl_ran_exppow_pdf693763 +Ref: 6d6693763 +Ref: randist c gsl_cdf_exppow_P694069 +Ref: 6d7694069 +Ref: randist c gsl_cdf_exppow_Q694138 +Ref: 6d8694138 +Node: The Cauchy Distribution694373 +Ref: randist the-cauchy-distribution694538 +Ref: 6d9694538 +Ref: randist c gsl_ran_cauchy694597 +Ref: 6da694597 +Ref: randist c gsl_ran_cauchy_pdf695011 +Ref: 6db695011 +Ref: randist c gsl_cdf_cauchy_P695274 +Ref: 6dc695274 +Ref: randist c gsl_cdf_cauchy_Q695333 +Ref: 6dd695333 +Ref: randist c gsl_cdf_cauchy_Pinv695392 +Ref: 6de695392 +Ref: randist c gsl_cdf_cauchy_Qinv695454 +Ref: 6df695454 +Node: The Rayleigh Distribution695683 +Ref: randist the-rayleigh-distribution695844 +Ref: 6e0695844 +Ref: randist c gsl_ran_rayleigh695909 +Ref: 6e1695909 +Ref: randist c gsl_ran_rayleigh_pdf696204 +Ref: 6e2696204 +Ref: randist c gsl_cdf_rayleigh_P696481 +Ref: 6e3696481 +Ref: randist c gsl_cdf_rayleigh_Q696546 +Ref: 6e4696546 +Ref: randist c gsl_cdf_rayleigh_Pinv696611 +Ref: 6e5696611 +Ref: randist c gsl_cdf_rayleigh_Qinv696679 +Ref: 6e6696679 +Node: The Rayleigh Tail Distribution696920 +Ref: randist the-rayleigh-tail-distribution697081 +Ref: 6e7697081 +Ref: randist c gsl_ran_rayleigh_tail697156 +Ref: 6e8697156 +Ref: randist c gsl_ran_rayleigh_tail_pdf697530 +Ref: 6e9697530 +Node: The Landau Distribution697866 +Ref: randist the-landau-distribution698037 +Ref: 6ea698037 +Ref: randist c gsl_ran_landau698098 +Ref: 6eb698098 +Ref: randist c gsl_ran_landau_pdf698619 +Ref: 6ec698619 +Node: The Levy alpha-Stable Distributions698864 +Ref: randist the-levy-alpha-stable-distributions699044 +Ref: 6ed699044 +Ref: randist c gsl_ran_levy699129 +Ref: 6ee699129 +Node: The Levy skew alpha-Stable Distribution699978 +Ref: randist the-levy-skew-alpha-stable-distribution700157 +Ref: 6ef700157 +Ref: randist c gsl_ran_levy_skew700250 +Ref: 6f0700250 +Node: The Gamma Distribution701650 +Ref: randist the-gamma-distribution701823 +Ref: 6f1701823 +Ref: randist c gsl_ran_gamma701882 +Ref: 6f2701882 +Ref: randist c gsl_ran_gamma_knuth702472 +Ref: 6f3702472 +Ref: randist c gsl_ran_gamma_pdf702654 +Ref: 6f4702654 +Ref: randist c gsl_cdf_gamma_P702931 +Ref: 6f5702931 +Ref: randist c gsl_cdf_gamma_Q702999 +Ref: 6f6702999 +Ref: randist c gsl_cdf_gamma_Pinv703067 +Ref: 6f7703067 +Ref: randist c gsl_cdf_gamma_Qinv703138 +Ref: 6f8703138 +Node: The Flat Uniform Distribution703382 +Ref: randist the-flat-uniform-distribution703542 +Ref: 6f9703542 +Ref: randist c gsl_ran_flat703619 +Ref: 6fa703619 +Ref: randist c gsl_ran_flat_pdf703916 +Ref: 6fb703916 +Ref: randist c gsl_cdf_flat_P704181 +Ref: 6fc704181 +Ref: randist c gsl_cdf_flat_Q704248 +Ref: 6fd704248 +Ref: randist c gsl_cdf_flat_Pinv704315 +Ref: 6fe704315 +Ref: randist c gsl_cdf_flat_Qinv704385 +Ref: 6ff704385 +Node: The Lognormal Distribution704611 +Ref: randist the-lognormal-distribution704777 +Ref: 700704777 +Ref: randist c gsl_ran_lognormal704844 +Ref: 701704844 +Ref: randist c gsl_ran_lognormal_pdf705167 +Ref: 702705167 +Ref: randist c gsl_cdf_lognormal_P705480 +Ref: 703705480 +Ref: randist c gsl_cdf_lognormal_Q705569 +Ref: 704705569 +Ref: randist c gsl_cdf_lognormal_Pinv705658 +Ref: 705705658 +Ref: randist c gsl_cdf_lognormal_Qinv705750 +Ref: 706705750 +Node: The Chi-squared Distribution706026 +Ref: randist the-chi-squared-distribution706181 +Ref: 707706181 +Ref: randist c gsl_ran_chisq706483 +Ref: 708706483 +Ref: randist c gsl_ran_chisq_pdf706803 +Ref: 709706803 +Ref: randist c gsl_cdf_chisq_P707074 +Ref: 70a707074 +Ref: randist c gsl_cdf_chisq_Q707133 +Ref: 70b707133 +Ref: randist c gsl_cdf_chisq_Pinv707192 +Ref: 70c707192 +Ref: randist c gsl_cdf_chisq_Qinv707254 +Ref: 70d707254 +Node: The F-distribution707492 +Ref: randist the-f-distribution707639 +Ref: 70e707639 +Ref: randist c gsl_ran_fdist707918 +Ref: 70f707918 +Ref: randist c gsl_ran_fdist_pdf708413 +Ref: 710708413 +Ref: randist c gsl_cdf_fdist_P708713 +Ref: 711708713 +Ref: randist c gsl_cdf_fdist_Q708785 +Ref: 712708785 +Ref: randist c gsl_cdf_fdist_Pinv708857 +Ref: 713708857 +Ref: randist c gsl_cdf_fdist_Qinv708942 +Ref: 714708942 +Node: The t-distribution709208 +Ref: randist the-t-distribution709348 +Ref: 715709348 +Ref: randist c gsl_ran_tdist709659 +Ref: 716709659 +Ref: randist c gsl_ran_tdist_pdf709974 +Ref: 717709974 +Ref: randist c gsl_cdf_tdist_P710235 +Ref: 718710235 +Ref: randist c gsl_cdf_tdist_Q710294 +Ref: 719710294 +Ref: randist c gsl_cdf_tdist_Pinv710353 +Ref: 71a710353 +Ref: randist c gsl_cdf_tdist_Qinv710415 +Ref: 71b710415 +Node: The Beta Distribution710643 +Ref: randist the-beta-distribution710790 +Ref: 71c710790 +Ref: randist c gsl_ran_beta710847 +Ref: 71d710847 +Ref: randist c gsl_ran_beta_pdf711149 +Ref: 71e711149 +Ref: randist c gsl_cdf_beta_P711423 +Ref: 71f711423 +Ref: randist c gsl_cdf_beta_Q711490 +Ref: 720711490 +Ref: randist c gsl_cdf_beta_Pinv711557 +Ref: 721711557 +Ref: randist c gsl_cdf_beta_Qinv711627 +Ref: 722711627 +Node: The Logistic Distribution711869 +Ref: randist the-logistic-distribution712021 +Ref: 723712021 +Ref: randist c gsl_ran_logistic712086 +Ref: 724712086 +Ref: randist c gsl_ran_logistic_pdf712367 +Ref: 725712367 +Ref: randist c gsl_cdf_logistic_P712636 +Ref: 726712636 +Ref: randist c gsl_cdf_logistic_Q712697 +Ref: 727712697 +Ref: randist c gsl_cdf_logistic_Pinv712758 +Ref: 728712758 +Ref: randist c gsl_cdf_logistic_Qinv712822 +Ref: 729712822 +Node: The Pareto Distribution713055 +Ref: randist the-pareto-distribution713216 +Ref: 72a713216 +Ref: randist c gsl_ran_pareto713277 +Ref: 72b713277 +Ref: randist c gsl_ran_pareto_pdf713555 +Ref: 72c713555 +Ref: randist c gsl_cdf_pareto_P713839 +Ref: 72d713839 +Ref: randist c gsl_cdf_pareto_Q713908 +Ref: 72e713908 +Ref: randist c gsl_cdf_pareto_Pinv713977 +Ref: 72f713977 +Ref: randist c gsl_cdf_pareto_Qinv714049 +Ref: 730714049 +Node: Spherical Vector Distributions714299 +Ref: randist spherical-vector-distributions714459 +Ref: 731714459 +Ref: randist c gsl_ran_dir_2d714703 +Ref: 732714703 +Ref: randist c gsl_ran_dir_2d_trig_method714791 +Ref: 733714791 +Ref: randist c gsl_ran_dir_3d716043 +Ref: 734716043 +Ref: randist c gsl_ran_dir_nd716585 +Ref: 735716585 +Node: The Weibull Distribution717219 +Ref: randist the-weibull-distribution717386 +Ref: 736717386 +Ref: randist c gsl_ran_weibull717449 +Ref: 737717449 +Ref: randist c gsl_ran_weibull_pdf717729 +Ref: 738717729 +Ref: randist c gsl_cdf_weibull_P718016 +Ref: 739718016 +Ref: randist c gsl_cdf_weibull_Q718086 +Ref: 73a718086 +Ref: randist c gsl_cdf_weibull_Pinv718156 +Ref: 73b718156 +Ref: randist c gsl_cdf_weibull_Qinv718229 +Ref: 73c718229 +Node: The Type-1 Gumbel Distribution718481 +Ref: randist the-type-1-gumbel-distribution718648 +Ref: 73d718648 +Ref: randist c gsl_ran_gumbel1718723 +Ref: 73e718723 +Ref: randist c gsl_ran_gumbel1_pdf719029 +Ref: 73f719029 +Ref: randist c gsl_cdf_gumbel1_P719318 +Ref: 740719318 +Ref: randist c gsl_cdf_gumbel1_Q719388 +Ref: 741719388 +Ref: randist c gsl_cdf_gumbel1_Pinv719458 +Ref: 742719458 +Ref: randist c gsl_cdf_gumbel1_Qinv719531 +Ref: 743719531 +Node: The Type-2 Gumbel Distribution719785 +Ref: randist the-type-2-gumbel-distribution719954 +Ref: 744719954 +Ref: randist c gsl_ran_gumbel2720029 +Ref: 745720029 +Ref: randist c gsl_ran_gumbel2_pdf720328 +Ref: 746720328 +Ref: randist c gsl_cdf_gumbel2_P720617 +Ref: 747720617 +Ref: randist c gsl_cdf_gumbel2_Q720687 +Ref: 748720687 +Ref: randist c gsl_cdf_gumbel2_Pinv720757 +Ref: 749720757 +Ref: randist c gsl_cdf_gumbel2_Qinv720830 +Ref: 74a720830 +Node: The Dirichlet Distribution721084 +Ref: randist the-dirichlet-distribution721253 +Ref: 74b721253 +Ref: randist c gsl_ran_dirichlet721320 +Ref: 74c721320 +Ref: randist c gsl_ran_dirichlet_pdf722214 +Ref: 74d722214 +Ref: randist c gsl_ran_dirichlet_lnpdf722527 +Ref: 74e722527 +Node: General Discrete Distributions722810 +Ref: randist general-discrete-distributions722973 +Ref: 74f722973 +Ref: randist c gsl_ran_discrete_t725322 +Ref: 750725322 +Ref: randist c gsl_ran_discrete_preproc725446 +Ref: 751725446 +Ref: randist c gsl_ran_discrete726053 +Ref: 752726053 +Ref: randist c gsl_ran_discrete_pdf726269 +Ref: 753726269 +Ref: randist c gsl_ran_discrete_free726718 +Ref: 754726718 +Node: The Poisson Distribution726844 +Ref: randist the-poisson-distribution727007 +Ref: 755727007 +Ref: randist c gsl_ran_poisson727070 +Ref: 756727070 +Ref: randist c gsl_ran_poisson_pdf727380 +Ref: 757727380 +Ref: randist c gsl_cdf_poisson_P727641 +Ref: 758727641 +Ref: randist c gsl_cdf_poisson_Q727708 +Ref: 759727708 +Node: The Bernoulli Distribution727914 +Ref: randist the-bernoulli-distribution728072 +Ref: 75a728072 +Ref: randist c gsl_ran_bernoulli728139 +Ref: 75b728139 +Ref: randist c gsl_ran_bernoulli_pdf728435 +Ref: 75c728435 +Node: The Binomial Distribution728722 +Ref: randist the-binomial-distribution728884 +Ref: 75d728884 +Ref: randist c gsl_ran_binomial728949 +Ref: 75e728949 +Ref: randist c gsl_ran_binomial_pdf729358 +Ref: 75f729358 +Ref: randist c gsl_cdf_binomial_P729669 +Ref: 760729669 +Ref: randist c gsl_cdf_binomial_Q729762 +Ref: 761729762 +Node: The Multinomial Distribution730007 +Ref: randist the-multinomial-distribution730177 +Ref: 762730177 +Ref: randist c gsl_ran_multinomial730248 +Ref: 763730248 +Ref: randist c gsl_ran_multinomial_pdf731287 +Ref: 764731287 +Ref: randist c gsl_ran_multinomial_lnpdf731590 +Ref: 765731590 +Node: The Negative Binomial Distribution731858 +Ref: randist the-negative-binomial-distribution732026 +Ref: 766732026 +Ref: randist c gsl_ran_negative_binomial732109 +Ref: 767732109 +Ref: randist c gsl_ran_negative_binomial_pdf732623 +Ref: 768732623 +Ref: randist c gsl_cdf_negative_binomial_P732948 +Ref: 769732948 +Ref: randist c gsl_cdf_negative_binomial_Q733044 +Ref: 76a733044 +Node: The Pascal Distribution733306 +Ref: randist the-pascal-distribution733472 +Ref: 76b733472 +Ref: randist c gsl_ran_pascal733533 +Ref: 76c733533 +Ref: randist c gsl_ran_pascal_pdf733896 +Ref: 76d733896 +Ref: randist c gsl_cdf_pascal_P734201 +Ref: 76e734201 +Ref: randist c gsl_cdf_pascal_Q734292 +Ref: 76f734292 +Node: The Geometric Distribution734533 +Ref: randist the-geometric-distribution734696 +Ref: 770734696 +Ref: randist c gsl_ran_geometric734763 +Ref: 771734763 +Ref: randist c gsl_ran_geometric_pdf735286 +Ref: 772735286 +Ref: randist c gsl_cdf_geometric_P735573 +Ref: 773735573 +Ref: randist c gsl_cdf_geometric_Q735641 +Ref: 774735641 +Node: The Hypergeometric Distribution735849 +Ref: randist the-hypergeometric-distribution736017 +Ref: 775736017 +Ref: randist c gsl_ran_hypergeometric736094 +Ref: 776736094 +Ref: randist c gsl_ran_hypergeometric_pdf736829 +Ref: 777736829 +Ref: randist c gsl_cdf_hypergeometric_P737190 +Ref: 778737190 +Ref: randist c gsl_cdf_hypergeometric_Q737313 +Ref: 779737313 +Node: The Logarithmic Distribution737610 +Ref: randist the-logarithmic-distribution737776 +Ref: 77a737776 +Ref: randist c gsl_ran_logarithmic737847 +Ref: 77b737847 +Ref: randist c gsl_ran_logarithmic_pdf738165 +Ref: 77c738165 +Node: The Wishart Distribution738458 +Ref: randist the-wishart-distribution738615 +Ref: 77d738615 +Ref: randist c gsl_ran_wishart738678 +Ref: 77e738678 +Ref: randist c gsl_ran_wishart_pdf739380 +Ref: 77f739380 +Ref: randist c gsl_ran_wishart_log_pdf739559 +Ref: 780739559 +Node: Shuffling and Sampling740097 +Ref: randist shuffling-and-sampling740238 +Ref: 781740238 +Ref: randist c gsl_ran_shuffle740690 +Ref: 782740690 +Ref: randist c gsl_ran_choose741389 +Ref: 783741389 +Ref: randist c gsl_ran_sample742591 +Ref: 784742591 +Node: Examples<14>743039 +Ref: randist examples743190 +Ref: 785743190 +Ref: randist fig-rand-walk745367 +Ref: 786745367 +Node: References and Further Reading<14>746241 +Ref: randist references-and-further-reading746361 +Ref: 787746361 +Node: Statistics748358 +Ref: statistics statistics748472 +Ref: 788748472 +Ref: statistics doc748472 +Ref: 789748472 +Node: Mean Standard Deviation and Variance749950 +Ref: statistics mean-standard-deviation-and-variance750061 +Ref: 78a750061 +Ref: statistics c gsl_stats_mean750148 +Ref: 1d750148 +Ref: statistics c gsl_stats_variance750648 +Ref: 78b750648 +Ref: statistics c gsl_stats_variance_m751552 +Ref: 78c751552 +Ref: statistics c gsl_stats_sd751928 +Ref: 78d751928 +Ref: statistics c gsl_stats_sd_m752019 +Ref: 78e752019 +Ref: statistics c gsl_stats_tss752299 +Ref: 78f752299 +Ref: statistics c gsl_stats_tss_m752391 +Ref: 790752391 +Ref: statistics c gsl_stats_variance_with_fixed_mean752814 +Ref: 791752814 +Ref: statistics c gsl_stats_sd_with_fixed_mean753319 +Ref: 792753319 +Node: Absolute deviation753629 +Ref: statistics absolute-deviation753785 +Ref: 793753785 +Ref: statistics c gsl_stats_absdev753834 +Ref: 794753834 +Ref: statistics c gsl_stats_absdev_m754459 +Ref: 795754459 +Node: Higher moments skewness and kurtosis754975 +Ref: statistics higher-moments-skewness-and-kurtosis755110 +Ref: 796755110 +Ref: statistics c gsl_stats_skew755199 +Ref: 797755199 +Ref: statistics c gsl_stats_skew_m_sd755798 +Ref: 798755798 +Ref: statistics c gsl_stats_kurtosis756276 +Ref: 799756276 +Ref: statistics c gsl_stats_kurtosis_m_sd756754 +Ref: 79a756754 +Node: Autocorrelation757238 +Ref: statistics autocorrelation757365 +Ref: 79b757365 +Ref: statistics c gsl_stats_lag1_autocorrelation757408 +Ref: 79c757408 +Ref: statistics c gsl_stats_lag1_autocorrelation_m757784 +Ref: 79d757784 +Node: Covariance758069 +Ref: statistics covariance758171 +Ref: 79e758171 +Ref: statistics c gsl_stats_covariance758204 +Ref: 79f758204 +Ref: statistics c gsl_stats_covariance_m758590 +Ref: 7a0758590 +Node: Correlation759090 +Ref: statistics correlation759193 +Ref: 7a1759193 +Ref: statistics c gsl_stats_correlation759228 +Ref: 7a2759228 +Ref: statistics c gsl_stats_spearman759819 +Ref: 7a3759819 +Node: Weighted Samples760513 +Ref: statistics weighted-samples760632 +Ref: 7a4760632 +Ref: statistics c gsl_stats_wmean761126 +Ref: 7a5761126 +Ref: statistics c gsl_stats_wvariance761544 +Ref: 7a6761544 +Ref: statistics c gsl_stats_wvariance_m762229 +Ref: 7a7762229 +Ref: statistics c gsl_stats_wsd762522 +Ref: 7a8762522 +Ref: statistics c gsl_stats_wsd_m762859 +Ref: 7a9762859 +Ref: statistics c gsl_stats_wvariance_with_fixed_mean763133 +Ref: 7aa763133 +Ref: statistics c gsl_stats_wsd_with_fixed_mean763696 +Ref: 7ab763696 +Ref: statistics c gsl_stats_wtss764039 +Ref: 7ac764039 +Ref: statistics c gsl_stats_wtss_m764172 +Ref: 7ad764172 +Ref: statistics c gsl_stats_wabsdev764675 +Ref: 7ae764675 +Ref: statistics c gsl_stats_wabsdev_m765028 +Ref: 7af765028 +Ref: statistics c gsl_stats_wskew765320 +Ref: 7b0765320 +Ref: statistics c gsl_stats_wskew_m_sd765600 +Ref: 7b1765600 +Ref: statistics c gsl_stats_wkurtosis765961 +Ref: 7b2765961 +Ref: statistics c gsl_stats_wkurtosis_m_sd766255 +Ref: 7b3766255 +Node: Maximum and Minimum values766620 +Ref: statistics maximum-and-minimum-values766750 +Ref: 7b4766750 +Ref: statistics c gsl_stats_max767127 +Ref: 7b5767127 +Ref: statistics c gsl_stats_min767632 +Ref: 7b6767632 +Ref: statistics c gsl_stats_minmax768138 +Ref: 7b7768138 +Ref: statistics c gsl_stats_max_index768380 +Ref: 7b8768380 +Ref: statistics c gsl_stats_min_index768805 +Ref: 7b9768805 +Ref: statistics c gsl_stats_minmax_index769230 +Ref: 7ba769230 +Node: Median and Percentiles769514 +Ref: statistics median-and-percentiles769644 +Ref: 7bb769644 +Ref: statistics c gsl_stats_median_from_sorted_data770056 +Ref: 7bc770056 +Ref: statistics c gsl_stats_median770925 +Ref: 7bd770925 +Ref: statistics c gsl_stats_quantile_from_sorted_data771354 +Ref: 7be771354 +Node: Order Statistics772607 +Ref: statistics order-statistics772736 +Ref: 7bf772736 +Ref: statistics c gsl_stats_select773265 +Ref: 7c0773265 +Node: Robust Location Estimates773655 +Ref: statistics robust-location-estimates773784 +Ref: 7c1773784 +Node: Trimmed Mean774463 +Ref: statistics trimmed-mean774566 +Ref: 7c2774566 +Ref: statistics c gsl_stats_trmean_from_sorted_data775077 +Ref: 7c3775077 +Node: Gastwirth Estimator775700 +Ref: statistics gastwirth-estimator775803 +Ref: 7c4775803 +Ref: statistics c gsl_stats_gastwirth_from_sorted_data776158 +Ref: 7c5776158 +Node: Robust Scale Estimates776640 +Ref: statistics robust-scale-estimates776765 +Ref: 7c6776765 +Node: Median Absolute Deviation MAD777259 +Ref: statistics median-absolute-deviation-mad777366 +Ref: 7c7777366 +Ref: statistics sec-mad-statistic777366 +Ref: 7c8777366 +Ref: statistics c gsl_stats_mad0777942 +Ref: 7c9777942 +Ref: statistics c gsl_stats_mad778063 +Ref: 7ca778063 +Node: Statistic778612 +Ref: statistics sec-sn-statistic778740 +Ref: 7cb778740 +Ref: statistics statistic778740 +Ref: 7cc778740 +Ref: statistics c gsl_stats_Sn0_from_sorted_data779321 +Ref: 7cd779321 +Ref: statistics c gsl_stats_Sn_from_sorted_data779475 +Ref: 7ce779475 +Node: Statistic<2>780264 +Ref: statistics sec-qn-statistic780354 +Ref: 7cf780354 +Ref: statistics id1780354 +Ref: 7d0780354 +Ref: statistics c gsl_stats_Qn0_from_sorted_data780821 +Ref: 7d1780821 +Ref: statistics c gsl_stats_Qn_from_sorted_data780990 +Ref: 7d2780990 +Node: Examples<15>781810 +Ref: statistics examples781944 +Ref: 7d3781944 +Node: References and Further Reading<15>784439 +Ref: statistics references-and-further-reading784542 +Ref: 7d4784542 +Node: Running Statistics786012 +Ref: rstat doc786123 +Ref: 7d5786123 +Ref: rstat running-statistics786123 +Ref: 7d6786123 +Node: Initializing the Accumulator787245 +Ref: rstat initializing-the-accumulator787368 +Ref: 7d7787368 +Ref: rstat c gsl_rstat_workspace787437 +Ref: 7d8787437 +Ref: rstat c gsl_rstat_alloc787623 +Ref: 7d9787623 +Ref: rstat c gsl_rstat_free787800 +Ref: 7da787800 +Ref: rstat c gsl_rstat_reset787937 +Ref: 7db787937 +Node: Adding Data to the Accumulator788120 +Ref: rstat adding-data-to-the-accumulator788270 +Ref: 7dc788270 +Ref: rstat c gsl_rstat_add788343 +Ref: 7dd788343 +Ref: rstat c gsl_rstat_n788615 +Ref: 7de788615 +Node: Current Statistics788766 +Ref: rstat current-statistics788897 +Ref: 7df788897 +Ref: rstat c gsl_rstat_min788946 +Ref: 7e0788946 +Ref: rstat c gsl_rstat_max789086 +Ref: 7e1789086 +Ref: rstat c gsl_rstat_mean789226 +Ref: 7e2789226 +Ref: rstat c gsl_rstat_variance789422 +Ref: 7e3789422 +Ref: rstat c gsl_rstat_sd789649 +Ref: 7e4789649 +Ref: rstat c gsl_rstat_sd_mean789871 +Ref: 7e5789871 +Ref: rstat c gsl_rstat_rms790066 +Ref: 7e6790066 +Ref: rstat c gsl_rstat_skew790284 +Ref: 7e7790284 +Ref: rstat c gsl_rstat_kurtosis790508 +Ref: 7e8790508 +Ref: rstat c gsl_rstat_median790747 +Ref: 7e9790747 +Node: Quantiles790909 +Ref: rstat quantiles791022 +Ref: 7ea791022 +Ref: rstat c gsl_rstat_quantile_workspace791444 +Ref: 7eb791444 +Ref: rstat c gsl_rstat_quantile_alloc791578 +Ref: 7ec791578 +Ref: rstat c gsl_rstat_quantile_free791883 +Ref: 7ed791883 +Ref: rstat c gsl_rstat_quantile_reset792048 +Ref: 7ee792048 +Ref: rstat c gsl_rstat_quantile_add792259 +Ref: 7ef792259 +Ref: rstat c gsl_rstat_quantile_get792459 +Ref: 7f0792459 +Node: Examples<16>792617 +Ref: rstat examples792746 +Ref: 7f1792746 +Node: References and Further Reading<16>798104 +Ref: rstat references-and-further-reading798215 +Ref: 7f2798215 +Node: Moving Window Statistics798600 +Ref: movstat doc798718 +Ref: 7f3798718 +Ref: movstat moving-window-statistics798718 +Ref: 7f4798718 +Node: Introduction<4>799618 +Ref: movstat introduction799722 +Ref: 7f5799722 +Node: Handling Endpoints800631 +Ref: movstat handling-endpoints800783 +Ref: 7f6800783 +Ref: movstat c gsl_movstat_end_t801133 +Ref: 7f7801133 +Ref: movstat c GSL_MOVSTAT_END_PADZERO801287 +Ref: 7f8801287 +Ref: movstat c GSL_MOVSTAT_END_PADVALUE801661 +Ref: 7f9801661 +Ref: movstat c GSL_MOVSTAT_END_TRUNCATE802009 +Ref: 7fa802009 +Node: Allocation for Moving Window Statistics802186 +Ref: movstat allocation-for-moving-window-statistics802334 +Ref: 7fb802334 +Ref: movstat c gsl_movstat_workspace802425 +Ref: 7fc802425 +Ref: movstat c gsl_movstat_alloc802527 +Ref: 7fd802527 +Ref: movstat c gsl_movstat_alloc2802837 +Ref: 7fe802837 +Ref: movstat c gsl_movstat_free803204 +Ref: 7ff803204 +Node: Moving Mean803333 +Ref: movstat moving-mean803501 +Ref: 800803501 +Ref: movstat c gsl_movstat_mean803936 +Ref: 801803936 +Node: Moving Variance and Standard Deviation804385 +Ref: movstat moving-variance-and-standard-deviation804540 +Ref: 802804540 +Ref: movstat c gsl_movstat_variance804969 +Ref: 803804969 +Ref: movstat c gsl_movstat_sd805429 +Ref: 804805429 +Node: Moving Minimum and Maximum805899 +Ref: movstat moving-minimum-and-maximum806053 +Ref: 805806053 +Ref: movstat c gsl_movstat_min806279 +Ref: 806806279 +Ref: movstat c gsl_movstat_max806726 +Ref: 807806726 +Ref: movstat c gsl_movstat_minmax807173 +Ref: 808807173 +Node: Moving Sum807638 +Ref: movstat moving-sum807767 +Ref: 809807767 +Ref: movstat c gsl_movstat_sum807923 +Ref: 80a807923 +Node: Moving Median808369 +Ref: movstat moving-median808495 +Ref: 80b808495 +Ref: movstat c gsl_movstat_median808650 +Ref: 80c808650 +Node: Robust Scale Estimation809101 +Ref: movstat robust-scale-estimation809247 +Ref: 80d809247 +Node: Moving MAD809925 +Ref: movstat moving-mad810015 +Ref: 80e810015 +Ref: movstat c gsl_movstat_mad0810444 +Ref: 80f810444 +Ref: movstat c gsl_movstat_mad810623 +Ref: 810810623 +Node: Moving QQR811319 +Ref: movstat moving-qqr811424 +Ref: 811811424 +Ref: movstat c gsl_movstat_qqr812061 +Ref: 812812061 +Node: Moving812662 +Ref: movstat moving812766 +Ref: 813812766 +Ref: movstat c gsl_movstat_Sn813030 +Ref: 814813030 +Node: Moving<2>813555 +Ref: movstat id1813640 +Ref: 815813640 +Ref: movstat c gsl_movstat_Qn813876 +Ref: 816813876 +Node: User-defined Moving Statistics814401 +Ref: movstat user-defined-moving-statistics814546 +Ref: 817814546 +Ref: movstat c gsl_movstat_function815198 +Ref: 819815198 +Ref: movstat c gsl_movstat_function function815617 +Ref: 81b815617 +Ref: movstat c gsl_movstat_function params815937 +Ref: 81c815937 +Ref: movstat c gsl_movstat_apply816038 +Ref: 81a816038 +Ref: movstat c gsl_movstat_fill816573 +Ref: 818816573 +Node: Accumulators817244 +Ref: movstat accumulators817378 +Ref: 81d817378 +Ref: movstat c gsl_movstat_accum817673 +Ref: 81e817673 +Ref: movstat c gsl_movstat_accum size818243 +Ref: 81f818243 +Ref: movstat c gsl_movstat_accum init818439 +Ref: 820818439 +Ref: movstat c gsl_movstat_accum insert818615 +Ref: 821818615 +Ref: movstat c gsl_movstat_accum delete818986 +Ref: 822818986 +Ref: movstat c gsl_movstat_accum get819175 +Ref: 823819175 +Ref: movstat c gsl_movstat_accum_min819608 +Ref: 824819608 +Ref: movstat c gsl_movstat_accum_max819644 +Ref: 825819644 +Ref: movstat c gsl_movstat_accum_minmax819680 +Ref: 826819680 +Ref: movstat c gsl_movstat_accum_mean819838 +Ref: 827819838 +Ref: movstat c gsl_movstat_accum_sd819875 +Ref: 828819875 +Ref: movstat c gsl_movstat_accum_variance819910 +Ref: 829819910 +Ref: movstat c gsl_movstat_accum_Sn820243 +Ref: 82a820243 +Ref: movstat c gsl_movstat_accum_Qn820278 +Ref: 82b820278 +Ref: movstat c gsl_movstat_accum_sum820429 +Ref: 82c820429 +Ref: movstat c gsl_movstat_accum_qqr820523 +Ref: 82d820523 +Node: Examples<17>820630 +Ref: movstat examples820768 +Ref: 82e820768 +Node: Example 1820953 +Ref: movstat example-1821043 +Ref: 82f821043 +Ref: movstat fig-movstat1821247 +Ref: 830821247 +Node: Example 2 Robust Scale822962 +Ref: movstat example-2-robust-scale823097 +Ref: 831823097 +Ref: movstat fig-movstat2824047 +Ref: 832824047 +Node: Example 3 User-defined Moving Window827269 +Ref: movstat example-3-user-defined-moving-window827386 +Ref: 833827386 +Ref: movstat fig-movstat3827953 +Ref: 834827953 +Node: References and Further Reading<17>829962 +Ref: movstat references-and-further-reading830079 +Ref: 835830079 +Node: Digital Filtering830659 +Ref: filter digital-filtering830769 +Ref: 836830769 +Ref: filter doc830769 +Ref: 837830769 +Node: Introduction<5>830983 +Ref: filter introduction831083 +Ref: 838831083 +Node: Handling Endpoints<2>831464 +Ref: filter handling-endpoints831595 +Ref: 839831595 +Ref: filter c gsl_filter_end_t831940 +Ref: 83a831940 +Ref: filter c GSL_FILTER_END_PADZERO832093 +Ref: 83b832093 +Ref: filter c GSL_FILTER_END_PADVALUE832468 +Ref: 83c832468 +Ref: filter c GSL_FILTER_END_TRUNCATE832817 +Ref: 83d832817 +Node: Linear Digital Filters832993 +Ref: filter linear-digital-filters833134 +Ref: 83e833134 +Node: Gaussian Filter833221 +Ref: filter gaussian-filter833296 +Ref: 83f833296 +Ref: filter c gsl_filter_gaussian_alloc834738 +Ref: 840834738 +Ref: filter c gsl_filter_gaussian_free835091 +Ref: 841835091 +Ref: filter c gsl_filter_gaussian835244 +Ref: 842835244 +Ref: filter c gsl_filter_gaussian_kernel835916 +Ref: 843835916 +Node: Nonlinear Digital Filters836543 +Ref: filter nonlinear-digital-filters836675 +Ref: 844836675 +Node: Standard Median Filter837199 +Ref: filter standard-median-filter837316 +Ref: 845837316 +Ref: filter c gsl_filter_median_alloc837654 +Ref: 846837654 +Ref: filter c gsl_filter_median_free838038 +Ref: 847838038 +Ref: filter c gsl_filter_median838187 +Ref: 848838187 +Node: Recursive Median Filter838612 +Ref: filter recursive-median-filter838762 +Ref: 849838762 +Ref: filter c gsl_filter_rmedian_alloc839483 +Ref: 84a839483 +Ref: filter c gsl_filter_rmedian_free839873 +Ref: 84b839873 +Ref: filter c gsl_filter_rmedian840024 +Ref: 84c840024 +Node: Impulse Detection Filter840452 +Ref: filter impulse-detection-filter840571 +Ref: 84d840571 +Ref: filter c gsl_filter_scale_t842896 +Ref: 84e842896 +Ref: filter c GSL_FILTER_SCALE_MAD843019 +Ref: 84f843019 +Ref: filter c GSL_FILTER_SCALE_IQR843392 +Ref: 850843392 +Ref: filter c GSL_FILTER_SCALE_SN844011 +Ref: 851844011 +Ref: filter c GSL_FILTER_SCALE_QN844206 +Ref: 852844206 +Ref: filter c gsl_filter_impulse_alloc845270 +Ref: 853845270 +Ref: filter c gsl_filter_impulse_free845649 +Ref: 854845649 +Ref: filter c gsl_filter_impulse845800 +Ref: 855845800 +Node: Examples<18>846720 +Ref: filter examples846821 +Ref: 856846821 +Node: Gaussian Example 1846967 +Ref: filter gaussian-example-1847062 +Ref: 857847062 +Ref: filter fig-filt-gaussian847349 +Ref: 858847349 +Node: Gaussian Example 2850575 +Ref: filter gaussian-example-2850705 +Ref: 859850705 +Ref: filter fig-filt-gaussian2851428 +Ref: 85a851428 +Node: Square Wave Signal Example854737 +Ref: filter square-wave-signal-example854874 +Ref: 85b854874 +Ref: filter fig-filt-edge855376 +Ref: 85c855376 +Node: Impulse Detection Example858029 +Ref: filter impulse-detection-example858139 +Ref: 85d858139 +Ref: filter fig-impulse858621 +Ref: 85e858621 +Node: Histograms861343 +Ref: histogram histograms861437 +Ref: 85f861437 +Ref: histogram doc861437 +Ref: 860861437 +Node: The histogram struct863112 +Ref: histogram the-histogram-struct863209 +Ref: 861863209 +Ref: histogram c gsl_histogram863311 +Ref: 862863311 +Node: Histogram allocation865394 +Ref: histogram histogram-allocation865518 +Ref: 863865518 +Ref: histogram c gsl_histogram_alloc866060 +Ref: 864866060 +Ref: histogram c gsl_histogram_set_ranges866598 +Ref: 865866598 +Ref: histogram c gsl_histogram_set_ranges_uniform867720 +Ref: 866867720 +Ref: histogram c gsl_histogram_free868310 +Ref: 867868310 +Node: Copying Histograms868464 +Ref: histogram copying-histograms868609 +Ref: 868868609 +Ref: histogram c gsl_histogram_memcpy868658 +Ref: 869868658 +Ref: histogram c gsl_histogram_clone868960 +Ref: 86a868960 +Node: Updating and accessing histogram elements869172 +Ref: histogram updating-and-accessing-histogram-elements869323 +Ref: 86b869323 +Ref: histogram c gsl_histogram_increment869678 +Ref: 86c869678 +Ref: histogram c gsl_histogram_accumulate870528 +Ref: 86d870528 +Ref: histogram c gsl_histogram_get870824 +Ref: 86e870824 +Ref: histogram c gsl_histogram_get_range871187 +Ref: 86f871187 +Ref: histogram c gsl_histogram_max872024 +Ref: 870872024 +Ref: histogram c gsl_histogram_min872089 +Ref: 871872089 +Ref: histogram c gsl_histogram_bins872154 +Ref: 872872154 +Ref: histogram c gsl_histogram_reset872476 +Ref: 873872476 +Node: Searching histogram ranges872610 +Ref: histogram searching-histogram-ranges872763 +Ref: 874872763 +Ref: histogram c gsl_histogram_find872957 +Ref: 875872957 +Node: Histogram Statistics873660 +Ref: histogram histogram-statistics873792 +Ref: 876873792 +Ref: histogram c gsl_histogram_max_val873845 +Ref: 877873845 +Ref: histogram c gsl_histogram_max_bin873999 +Ref: 878873999 +Ref: histogram c gsl_histogram_min_val874253 +Ref: 879874253 +Ref: histogram c gsl_histogram_min_bin874407 +Ref: 87a874407 +Ref: histogram c gsl_histogram_mean874661 +Ref: 87b874661 +Ref: histogram c gsl_histogram_sigma875001 +Ref: 87c875001 +Ref: histogram c gsl_histogram_sum875361 +Ref: 87d875361 +Node: Histogram Operations875533 +Ref: histogram histogram-operations875669 +Ref: 87e875669 +Ref: histogram c gsl_histogram_equal_bins_p875722 +Ref: 87f875722 +Ref: histogram c gsl_histogram_add875960 +Ref: 880875960 +Ref: histogram c gsl_histogram_sub876270 +Ref: 881876270 +Ref: histogram c gsl_histogram_mul876592 +Ref: 882876592 +Ref: histogram c gsl_histogram_div876928 +Ref: 883876928 +Ref: histogram c gsl_histogram_scale877261 +Ref: 884877261 +Ref: histogram c gsl_histogram_shift877486 +Ref: 885877486 +Node: Reading and writing histograms877710 +Ref: histogram reading-and-writing-histograms877852 +Ref: 886877852 +Ref: histogram c gsl_histogram_fwrite878036 +Ref: 887878036 +Ref: histogram c gsl_histogram_fread878476 +Ref: 888878476 +Ref: histogram c gsl_histogram_fprintf879041 +Ref: 889879041 +Ref: histogram c gsl_histogram_fscanf880326 +Ref: 88a880326 +Node: Resampling from histograms880892 +Ref: histogram resampling-from-histograms881059 +Ref: 88b881059 +Node: The histogram probability distribution struct881692 +Ref: histogram the-histogram-probability-distribution-struct881860 +Ref: 88c881860 +Ref: histogram c gsl_histogram_pdf882699 +Ref: 88d882699 +Ref: histogram c gsl_histogram_pdf_alloc883660 +Ref: 88e883660 +Ref: histogram c gsl_histogram_pdf_init884060 +Ref: 88f884060 +Ref: histogram c gsl_histogram_pdf_free884481 +Ref: 890884481 +Ref: histogram c gsl_histogram_pdf_sample884667 +Ref: 891884667 +Node: Example programs for histograms885192 +Ref: histogram example-programs-for-histograms885360 +Ref: 892885360 +Ref: histogram fig-histogram887171 +Ref: 893887171 +Node: Two dimensional histograms887253 +Ref: histogram two-dimensional-histograms887399 +Ref: 894887399 +Node: The 2D histogram struct887973 +Ref: histogram the-2d-histogram-struct888111 +Ref: 895888111 +Ref: histogram c gsl_histogram2d888237 +Ref: 896888237 +Node: 2D Histogram allocation890300 +Ref: histogram d-histogram-allocation890433 +Ref: 897890433 +Ref: histogram c gsl_histogram2d_alloc890989 +Ref: 898890989 +Ref: histogram c gsl_histogram2d_set_ranges891597 +Ref: 899891597 +Ref: histogram c gsl_histogram2d_set_ranges_uniform891989 +Ref: 89a891989 +Ref: histogram c gsl_histogram2d_free892344 +Ref: 89b892344 +Node: Copying 2D Histograms892505 +Ref: histogram copying-2d-histograms892659 +Ref: 89c892659 +Ref: histogram c gsl_histogram2d_memcpy892716 +Ref: 89d892716 +Ref: histogram c gsl_histogram2d_clone893024 +Ref: 89e893024 +Node: Updating and accessing 2D histogram elements893242 +Ref: histogram updating-and-accessing-2d-histogram-elements893402 +Ref: 89f893402 +Ref: histogram c gsl_histogram2d_increment893825 +Ref: 8a0893825 +Ref: histogram c gsl_histogram2d_accumulate894537 +Ref: 8a1894537 +Ref: histogram c gsl_histogram2d_get894849 +Ref: 8a2894849 +Ref: histogram c gsl_histogram2d_get_xrange895248 +Ref: 8a3895248 +Ref: histogram c gsl_histogram2d_get_yrange895375 +Ref: 8a4895375 +Ref: histogram c gsl_histogram2d_xmax896242 +Ref: 8a5896242 +Ref: histogram c gsl_histogram2d_xmin896312 +Ref: 8a6896312 +Ref: histogram c gsl_histogram2d_nx896382 +Ref: 8a7896382 +Ref: histogram c gsl_histogram2d_ymax896450 +Ref: 8a8896450 +Ref: histogram c gsl_histogram2d_ymin896520 +Ref: 8a9896520 +Ref: histogram c gsl_histogram2d_ny896590 +Ref: 8aa896590 +Ref: histogram c gsl_histogram2d_reset896943 +Ref: 8ab896943 +Node: Searching 2D histogram ranges897081 +Ref: histogram searching-2d-histogram-ranges897243 +Ref: 8ac897243 +Ref: histogram c gsl_histogram2d_find897449 +Ref: 8ad897449 +Node: 2D Histogram Statistics898147 +Ref: histogram d-histogram-statistics898288 +Ref: 8ae898288 +Ref: histogram c gsl_histogram2d_max_val898349 +Ref: 8af898349 +Ref: histogram c gsl_histogram2d_max_bin898507 +Ref: 8b0898507 +Ref: histogram c gsl_histogram2d_min_val898872 +Ref: 8b1898872 +Ref: histogram c gsl_histogram2d_min_bin899030 +Ref: 8b2899030 +Ref: histogram c gsl_histogram2d_xmean899395 +Ref: 8b3899395 +Ref: histogram c gsl_histogram2d_ymean899684 +Ref: 8b4899684 +Ref: histogram c gsl_histogram2d_xsigma899973 +Ref: 8b5899973 +Ref: histogram c gsl_histogram2d_ysigma900278 +Ref: 8b6900278 +Ref: histogram c gsl_histogram2d_cov900583 +Ref: 8b7900583 +Ref: histogram c gsl_histogram2d_sum900884 +Ref: 8b8900884 +Node: 2D Histogram Operations901060 +Ref: histogram d-histogram-operations901205 +Ref: 8b9901205 +Ref: histogram c gsl_histogram2d_equal_bins_p901266 +Ref: 8ba901266 +Ref: histogram c gsl_histogram2d_add901503 +Ref: 8bb901503 +Ref: histogram c gsl_histogram2d_sub901830 +Ref: 8bc901830 +Ref: histogram c gsl_histogram2d_mul902164 +Ref: 8bd902164 +Ref: histogram c gsl_histogram2d_div902512 +Ref: 8be902512 +Ref: histogram c gsl_histogram2d_scale902857 +Ref: 8bf902857 +Ref: histogram c gsl_histogram2d_shift903098 +Ref: 8c0903098 +Node: Reading and writing 2D histograms903340 +Ref: histogram reading-and-writing-2d-histograms903491 +Ref: 8c1903491 +Ref: histogram c gsl_histogram2d_fwrite903699 +Ref: 8c2903699 +Ref: histogram c gsl_histogram2d_fread904143 +Ref: 8c3904143 +Ref: histogram c gsl_histogram2d_fprintf904725 +Ref: 8c4904725 +Ref: histogram c gsl_histogram2d_fscanf906524 +Ref: 8c5906524 +Node: Resampling from 2D histograms907097 +Ref: histogram resampling-from-2d-histograms907259 +Ref: 8c6907259 +Ref: histogram c gsl_histogram2d_pdf907983 +Ref: 8c7907983 +Ref: histogram c gsl_histogram2d_pdf_alloc909274 +Ref: 8c8909274 +Ref: histogram c gsl_histogram2d_pdf_init909734 +Ref: 8c9909734 +Ref: histogram c gsl_histogram2d_pdf_free910172 +Ref: 8ca910172 +Ref: histogram c gsl_histogram2d_pdf_sample910378 +Ref: 8cb910378 +Node: Example programs for 2D histograms910712 +Ref: histogram example-programs-for-2d-histograms910832 +Ref: 8cc910832 +Node: N-tuples912904 +Ref: ntuple n-tuples913004 +Ref: 8cd913004 +Ref: ntuple doc913004 +Ref: 8ce913004 +Node: The ntuple struct914184 +Ref: ntuple the-ntuple-struct914272 +Ref: 8cf914272 +Ref: ntuple c gsl_ntuple914319 +Ref: 8d0914319 +Node: Creating ntuples914753 +Ref: ntuple creating-ntuples914881 +Ref: 8d1914881 +Ref: ntuple c gsl_ntuple_create914926 +Ref: 8d2914926 +Node: Opening an existing ntuple file915440 +Ref: ntuple opening-an-existing-ntuple-file915566 +Ref: 8d3915566 +Ref: ntuple c gsl_ntuple_open915641 +Ref: 8d4915641 +Node: Writing ntuples916089 +Ref: ntuple writing-ntuples916214 +Ref: 8d5916214 +Ref: ntuple c gsl_ntuple_write916257 +Ref: 8d6916257 +Ref: ntuple c gsl_ntuple_bookdata916446 +Ref: 8d7916446 +Node: Reading ntuples916575 +Ref: ntuple reading-ntuples916691 +Ref: 8d8916691 +Ref: ntuple c gsl_ntuple_read916734 +Ref: 8d9916734 +Node: Closing an ntuple file916919 +Ref: ntuple closing-an-ntuple-file917047 +Ref: 8da917047 +Ref: ntuple c gsl_ntuple_close917104 +Ref: 8db917104 +Node: Histogramming ntuple values917266 +Ref: ntuple histogramming-ntuple-values917391 +Ref: 8dc917391 +Ref: ntuple c gsl_ntuple_select_fn917844 +Ref: 8de917844 +Ref: ntuple c gsl_ntuple_value_fn918325 +Ref: 8df918325 +Ref: ntuple c gsl_ntuple_project918777 +Ref: 8dd918777 +Node: Examples<19>919504 +Ref: ntuple examples919641 +Ref: 8e0919641 +Ref: ntuple fig-ntuples922877 +Ref: 8e1922877 +Node: References and Further Reading<18>922950 +Ref: ntuple references-and-further-reading923051 +Ref: 8e2923051 +Node: Monte Carlo Integration923257 +Ref: montecarlo monte-carlo-integration923366 +Ref: 8e3923366 +Ref: montecarlo doc923366 +Ref: 8e4923366 +Node: Interface924523 +Ref: montecarlo interface924619 +Ref: 8e5924619 +Ref: montecarlo c gsl_monte_function925627 +Ref: 8e6925627 +Node: PLAIN Monte Carlo927868 +Ref: montecarlo plain-monte-carlo927978 +Ref: 8e7927978 +Ref: montecarlo c gsl_monte_plain_state928992 +Ref: 8e8928992 +Ref: montecarlo c gsl_monte_plain_alloc929085 +Ref: 8e9929085 +Ref: montecarlo c gsl_monte_plain_init929275 +Ref: 8ea929275 +Ref: montecarlo c gsl_monte_plain_integrate929501 +Ref: 8eb929501 +Ref: montecarlo c gsl_monte_plain_free930326 +Ref: 8ec930326 +Node: MISER930483 +Ref: montecarlo miser930589 +Ref: 8ed930589 +Ref: montecarlo c gsl_monte_miser_state932509 +Ref: 8ee932509 +Ref: montecarlo c gsl_monte_miser_alloc932605 +Ref: 8ef932605 +Ref: montecarlo c gsl_monte_miser_init932865 +Ref: 8f0932865 +Ref: montecarlo c gsl_monte_miser_integrate933091 +Ref: 8f1933091 +Ref: montecarlo c gsl_monte_miser_free933916 +Ref: 8f2933916 +Ref: montecarlo c gsl_monte_miser_params_get934190 +Ref: 8f3934190 +Ref: montecarlo c gsl_monte_miser_params_set934432 +Ref: 8f4934432 +Ref: montecarlo c gsl_monte_miser_params935055 +Ref: 8f5935055 +Ref: montecarlo c estimate_frac935089 +Ref: 8f6935089 +Ref: montecarlo c min_calls935359 +Ref: 8f7935359 +Ref: montecarlo c min_calls_per_bisection935881 +Ref: 8f8935881 +Ref: montecarlo c alpha936371 +Ref: 497936371 +Ref: montecarlo c dither937247 +Ref: 8f9937247 +Ref: MISER-Footnote-1937755 +Node: VEGAS937890 +Ref: montecarlo vegas937991 +Ref: 8fa937991 +Ref: montecarlo c gsl_monte_vegas_state940266 +Ref: 8fb940266 +Ref: montecarlo c gsl_monte_vegas_alloc940362 +Ref: 8fc940362 +Ref: montecarlo c gsl_monte_vegas_init940622 +Ref: 8fd940622 +Ref: montecarlo c gsl_monte_vegas_integrate940848 +Ref: 8fe940848 +Ref: montecarlo c gsl_monte_vegas_free941967 +Ref: 8ff941967 +Ref: montecarlo c gsl_monte_vegas_chisq943640 +Ref: 900943640 +Ref: montecarlo c gsl_monte_vegas_runval944155 +Ref: 901944155 +Ref: montecarlo c gsl_monte_vegas_params_get944560 +Ref: 902944560 +Ref: montecarlo c gsl_monte_vegas_params_set944802 +Ref: 903944802 +Ref: montecarlo c gsl_monte_vegas_params945425 +Ref: 904945425 +Ref: montecarlo c iterations945733 +Ref: 905945733 +Ref: montecarlo c stage945894 +Ref: 906945894 +Ref: montecarlo c mode946815 +Ref: d8946815 +Ref: montecarlo c verbose947307 +Ref: 907947307 +Ref: montecarlo c ostream947338 +Ref: 908947338 +Node: Examples<20>948068 +Ref: montecarlo examples948198 +Ref: 909948198 +Node: References and Further Reading<19>954119 +Ref: montecarlo references-and-further-reading954235 +Ref: 90a954235 +Node: Simulated Annealing954877 +Ref: siman doc955009 +Ref: 90b955009 +Ref: siman simulated-annealing955009 +Ref: 90c955009 +Node: Simulated Annealing algorithm956088 +Ref: siman simulated-annealing-algorithm956212 +Ref: 90d956212 +Node: Simulated Annealing functions957242 +Ref: siman simulated-annealing-functions957387 +Ref: 90e957387 +Ref: siman c gsl_siman_solve957458 +Ref: 90f957458 +Ref: siman c gsl_siman_Efunc_t959927 +Ref: 910959927 +Ref: siman c gsl_siman_step_t960090 +Ref: 911960090 +Ref: siman c gsl_siman_metric_t960412 +Ref: 912960412 +Ref: siman c gsl_siman_print_t960610 +Ref: 913960610 +Ref: siman c gsl_siman_copy_t960774 +Ref: 914960774 +Ref: siman c gsl_siman_copy_construct_t960955 +Ref: 915960955 +Ref: siman c gsl_siman_destroy_t961138 +Ref: 916961138 +Ref: siman c gsl_siman_params_t961312 +Ref: 917961312 +Node: Examples<21>962418 +Ref: siman examples962568 +Ref: 918962568 +Node: Trivial example962935 +Ref: siman trivial-example963035 +Ref: 919963035 +Ref: siman fig-siman-test965597 +Ref: 91a965597 +Ref: siman fig-siman-energy965803 +Ref: 91b965803 +Node: Traveling Salesman Problem965889 +Ref: siman traveling-salesman-problem965989 +Ref: 91c965989 +Node: References and Further Reading<20>980428 +Ref: siman references-and-further-reading980540 +Ref: 91d980540 +Node: Ordinary Differential Equations980802 +Ref: ode-initval doc980924 +Ref: 91e980924 +Ref: ode-initval ordinary-differential-equations980924 +Ref: 91f980924 +Node: Defining the ODE System982041 +Ref: ode-initval defining-the-ode-system982160 +Ref: 920982160 +Ref: ode-initval c gsl_odeiv2_system982560 +Ref: 921982560 +Node: Stepping Functions985327 +Ref: ode-initval stepping-functions985481 +Ref: 925985481 +Ref: ode-initval c gsl_odeiv2_step985696 +Ref: 926985696 +Ref: ode-initval c gsl_odeiv2_step_alloc985788 +Ref: 927985788 +Ref: ode-initval c gsl_odeiv2_step_reset986246 +Ref: 924986246 +Ref: ode-initval c gsl_odeiv2_step_free986476 +Ref: 928986476 +Ref: ode-initval c gsl_odeiv2_step_name986632 +Ref: 929986632 +Ref: ode-initval c gsl_odeiv2_step_order986948 +Ref: 92a986948 +Ref: ode-initval c gsl_odeiv2_step_set_driver987196 +Ref: 92b987196 +Ref: ode-initval c gsl_odeiv2_step_apply987673 +Ref: 92c987673 +Ref: ode-initval c gsl_odeiv2_step_type989809 +Ref: 92d989809 +Ref: ode-initval c gsl_odeiv2_step_rk2989841 +Ref: 92e989841 +Ref: ode-initval c gsl_odeiv2_step_rk4989937 +Ref: 92f989937 +Ref: ode-initval c gsl_odeiv2_step_rkf45990209 +Ref: 930990209 +Ref: ode-initval c gsl_odeiv2_step_rkck990377 +Ref: 931990377 +Ref: ode-initval c gsl_odeiv2_step_rk8pd990484 +Ref: 932990484 +Ref: ode-initval c gsl_odeiv2_step_rk1imp990597 +Ref: 933990597 +Ref: ode-initval c gsl_odeiv2_step_rk2imp990967 +Ref: 934990967 +Ref: ode-initval c gsl_odeiv2_step_rk4imp991320 +Ref: 935991320 +Ref: ode-initval c gsl_odeiv2_step_bsimp991622 +Ref: 936991622 +Ref: ode-initval c gsl_odeiv2_step_msadams991841 +Ref: 937991841 +Ref: ode-initval c gsl_odeiv2_step_msbdf992320 +Ref: 938992320 +Node: Adaptive Step-size Control992963 +Ref: ode-initval adaptive-step-size-control993103 +Ref: 939993103 +Ref: ode-initval c gsl_odeiv2_control993352 +Ref: 93a993352 +Ref: ode-initval c gsl_odeiv2_control_type993435 +Ref: 93b993435 +Ref: ode-initval c gsl_odeiv2_control_standard_new993509 +Ref: 93c993509 +Ref: ode-initval c gsl_odeiv2_control_y_new995078 +Ref: 93d995078 +Ref: ode-initval c gsl_odeiv2_control_yp_new995502 +Ref: 93e995502 +Ref: ode-initval c gsl_odeiv2_control_scaled_new995948 +Ref: 93f995948 +Ref: ode-initval c gsl_odeiv2_control_alloc996634 +Ref: 940996634 +Ref: ode-initval c gsl_odeiv2_control_init997026 +Ref: 941997026 +Ref: ode-initval c gsl_odeiv2_control_free997407 +Ref: 942997407 +Ref: ode-initval c gsl_odeiv2_control_hadjust997568 +Ref: 943997568 +Ref: ode-initval c gsl_odeiv2_control_name998521 +Ref: 944998521 +Ref: ode-initval c gsl_odeiv2_control_errlevel998853 +Ref: 945998853 +Ref: ode-initval c gsl_odeiv2_control_set_driver999275 +Ref: 946999275 +Node: Evolution999485 +Ref: ode-initval evolution999613 +Ref: 947999613 +Ref: ode-initval c gsl_odeiv2_evolve999814 +Ref: 948999814 +Ref: ode-initval c gsl_odeiv2_evolve_alloc999928 +Ref: 949999928 +Ref: ode-initval c gsl_odeiv2_evolve_apply1000136 +Ref: 94a1000136 +Ref: ode-initval c gsl_odeiv2_evolve_apply_fixed_step1002331 +Ref: 94b1002331 +Ref: ode-initval c gsl_odeiv2_evolve_reset1002987 +Ref: 9231002987 +Ref: ode-initval c gsl_odeiv2_evolve_free1003222 +Ref: 94c1003222 +Ref: ode-initval c gsl_odeiv2_evolve_set_driver1003383 +Ref: 94d1003383 +Node: Driver1003989 +Ref: ode-initval driver1004103 +Ref: 94e1004103 +Ref: ode-initval c gsl_odeiv2_driver_alloc_y_new1004242 +Ref: 94f1004242 +Ref: ode-initval c gsl_odeiv2_driver_alloc_yp_new1004453 +Ref: 9501004453 +Ref: ode-initval c gsl_odeiv2_driver_alloc_standard_new1004665 +Ref: 9511004665 +Ref: ode-initval c gsl_odeiv2_driver_alloc_scaled_new1004932 +Ref: 9521004932 +Ref: ode-initval c gsl_odeiv2_driver_set_hmin1005676 +Ref: 9531005676 +Ref: ode-initval c gsl_odeiv2_driver_set_hmax1005888 +Ref: 9541005888 +Ref: ode-initval c gsl_odeiv2_driver_set_nmax1006116 +Ref: 9551006116 +Ref: ode-initval c gsl_odeiv2_driver_apply1006369 +Ref: 9561006369 +Ref: ode-initval c gsl_odeiv2_driver_apply_fixed_step1007347 +Ref: 9571007347 +Ref: ode-initval c gsl_odeiv2_driver_reset1007842 +Ref: 9221007842 +Ref: ode-initval c gsl_odeiv2_driver_reset_hstart1007971 +Ref: 9581007971 +Ref: ode-initval c gsl_odeiv2_driver_free1008266 +Ref: 9591008266 +Node: Examples<22>1008438 +Ref: ode-initval examples1008577 +Ref: 95a1008577 +Node: References and Further Reading<21>1013833 +Ref: ode-initval references-and-further-reading1013957 +Ref: 95b1013957 +Node: Interpolation1015624 +Ref: interp sec-interpolation1015752 +Ref: 95c1015752 +Ref: interp doc1015752 +Ref: 95d1015752 +Ref: interp interpolation1015752 +Ref: 95e1015752 +Node: Introduction to 1D Interpolation1017160 +Ref: interp introduction-to-1d-interpolation1017278 +Ref: 9601017278 +Node: 1D Interpolation Functions1017647 +Ref: interp d-interpolation-functions1017796 +Ref: 9611017796 +Ref: interp c gsl_interp1018002 +Ref: 9621018002 +Ref: interp c gsl_interp_alloc1018061 +Ref: 9631018061 +Ref: interp c gsl_interp_init1018286 +Ref: 9641018286 +Ref: interp c gsl_interp_free1018901 +Ref: 9651018901 +Node: 1D Interpolation Types1019024 +Ref: interp d-interpolation-types1019174 +Ref: 9661019174 +Ref: interp c gsl_interp_type1019302 +Ref: 9671019302 +Ref: interp c gsl_interp_linear1019329 +Ref: 9681019329 +Ref: interp c gsl_interp_polynomial1019477 +Ref: 9691019477 +Ref: interp c gsl_interp_cspline1019854 +Ref: 96a1019854 +Ref: interp c gsl_interp_cspline_periodic1020200 +Ref: 96b1020200 +Ref: interp c gsl_interp_akima1020735 +Ref: 96c1020735 +Ref: interp c gsl_interp_akima_periodic1020914 +Ref: 96d1020914 +Ref: interp c gsl_interp_steffen1021103 +Ref: 96e1021103 +Ref: interp c gsl_interp_name1021708 +Ref: 96f1021708 +Ref: interp c gsl_interp_min_size1022049 +Ref: 9701022049 +Ref: interp c gsl_interp_type_min_size1022134 +Ref: 9711022134 +Node: 1D Index Look-up and Acceleration1022447 +Ref: interp d-index-look-up-and-acceleration1022611 +Ref: 9721022611 +Ref: interp c gsl_interp_accel1022824 +Ref: 9731022824 +Ref: interp c gsl_interp_bsearch1023100 +Ref: 9741023100 +Ref: interp c gsl_interp_accel_alloc1023503 +Ref: 9751023503 +Ref: interp c gsl_interp_accel_find1023800 +Ref: 9761023800 +Ref: interp c gsl_interp_accel_free1024582 +Ref: 9771024582 +Node: 1D Evaluation of Interpolating Functions1024708 +Ref: interp d-evaluation-of-interpolating-functions1024875 +Ref: 9781024875 +Ref: interp c gsl_interp_eval1024968 +Ref: 9791024968 +Ref: interp c gsl_interp_eval_e1025125 +Ref: 97a1025125 +Ref: interp c gsl_interp_eval_deriv1025657 +Ref: 97b1025657 +Ref: interp c gsl_interp_eval_deriv_e1025820 +Ref: 97c1025820 +Ref: interp c gsl_interp_eval_deriv21026222 +Ref: 97d1026222 +Ref: interp c gsl_interp_eval_deriv2_e1026386 +Ref: 97e1026386 +Ref: interp c gsl_interp_eval_integ1026803 +Ref: 97f1026803 +Ref: interp c gsl_interp_eval_integ_e1026976 +Ref: 9801026976 +Node: 1D Higher-level Interface1027419 +Ref: interp d-higher-level-interface1027586 +Ref: 9811027586 +Ref: interp c gsl_spline1028096 +Ref: 9821028096 +Ref: interp c gsl_spline_alloc1028216 +Ref: 9831028216 +Ref: interp c gsl_spline_init1028312 +Ref: 9841028312 +Ref: interp c gsl_spline_free1028430 +Ref: 9851028430 +Ref: interp c gsl_spline_name1028488 +Ref: 9861028488 +Ref: interp c gsl_spline_min_size1028560 +Ref: 9871028560 +Ref: interp c gsl_spline_eval1028646 +Ref: 9881028646 +Ref: interp c gsl_spline_eval_e1028755 +Ref: 9891028755 +Ref: interp c gsl_spline_eval_deriv1028876 +Ref: 98a1028876 +Ref: interp c gsl_spline_eval_deriv_e1028991 +Ref: 98b1028991 +Ref: interp c gsl_spline_eval_deriv21029118 +Ref: 98c1029118 +Ref: interp c gsl_spline_eval_deriv2_e1029234 +Ref: 98d1029234 +Ref: interp c gsl_spline_eval_integ1029363 +Ref: 98e1029363 +Ref: interp c gsl_spline_eval_integ_e1029488 +Ref: 98f1029488 +Node: 1D Interpolation Example Programs1029630 +Ref: interp d-interpolation-example-programs1029789 +Ref: 9901029789 +Ref: interp fig-interp1031193 +Ref: 9911031193 +Ref: interp fig-interpp1032788 +Ref: 9921032788 +Ref: interp fig-interp-compare1034957 +Ref: 9931034957 +Node: Introduction to 2D Interpolation1035460 +Ref: interp introduction-to-2d-interpolation1035620 +Ref: 9941035620 +Node: 2D Interpolation Functions1035994 +Ref: interp id11036143 +Ref: 9951036143 +Ref: interp c gsl_interp2d1036351 +Ref: 9961036351 +Ref: interp c gsl_interp2d_alloc1036412 +Ref: 9971036412 +Ref: interp c gsl_interp2d_init1036742 +Ref: 9981036742 +Ref: interp c gsl_interp2d_free1037604 +Ref: 9991037604 +Node: 2D Interpolation Grids1037731 +Ref: interp d-interpolation-grids1037870 +Ref: 99a1037870 +Ref: interp c gsl_interp2d_set1038271 +Ref: 99b1038271 +Ref: interp c gsl_interp2d_get1038523 +Ref: 99c1038523 +Ref: interp c gsl_interp2d_idx1038767 +Ref: 99d1038767 +Node: 2D Interpolation Types1039009 +Ref: interp id21039162 +Ref: 99e1039162 +Ref: interp c gsl_interp2d_type1039221 +Ref: 99f1039221 +Ref: interp c gsl_interp2d_bilinear1039334 +Ref: 9a01039334 +Ref: interp c gsl_interp2d_bicubic1039488 +Ref: 9a11039488 +Ref: interp c gsl_interp2d_name1039563 +Ref: 9a21039563 +Ref: interp c gsl_interp2d_min_size1039921 +Ref: 9a31039921 +Ref: interp c gsl_interp2d_type_min_size1040010 +Ref: 9a41040010 +Node: 2D Evaluation of Interpolating Functions1040322 +Ref: interp id31040478 +Ref: 9a51040478 +Ref: interp c gsl_interp2d_eval1040573 +Ref: 9a61040573 +Ref: interp c gsl_interp2d_eval_e1040811 +Ref: 9a71040811 +Ref: interp c gsl_interp2d_eval_extrap1041459 +Ref: 9a81041459 +Ref: interp c gsl_interp2d_eval_extrap_e1041704 +Ref: 9a91041704 +Ref: interp c gsl_interp2d_eval_deriv_x1042389 +Ref: 9aa1042389 +Ref: interp c gsl_interp2d_eval_deriv_x_e1042635 +Ref: 9ab1042635 +Ref: interp c gsl_interp2d_eval_deriv_y1043320 +Ref: 9ac1043320 +Ref: interp c gsl_interp2d_eval_deriv_y_e1043566 +Ref: 9ad1043566 +Ref: interp c gsl_interp2d_eval_deriv_xx1044251 +Ref: 9ae1044251 +Ref: interp c gsl_interp2d_eval_deriv_xx_e1044498 +Ref: 9af1044498 +Ref: interp c gsl_interp2d_eval_deriv_yy1045188 +Ref: 9b01045188 +Ref: interp c gsl_interp2d_eval_deriv_yy_e1045435 +Ref: 9b11045435 +Ref: interp c gsl_interp2d_eval_deriv_xy1046125 +Ref: 9b21046125 +Ref: interp c gsl_interp2d_eval_deriv_xy_e1046372 +Ref: 9b31046372 +Node: 2D Higher-level Interface1047071 +Ref: interp id41047238 +Ref: 9b41047238 +Ref: interp c gsl_spline2d1047759 +Ref: 9b51047759 +Ref: interp c gsl_spline2d_alloc1047883 +Ref: 9b61047883 +Ref: interp c gsl_spline2d_init1048000 +Ref: 9b71048000 +Ref: interp c gsl_spline2d_free1048166 +Ref: 9b81048166 +Ref: interp c gsl_spline2d_name1048228 +Ref: 9b91048228 +Ref: interp c gsl_spline2d_min_size1048314 +Ref: 9ba1048314 +Ref: interp c gsl_spline2d_eval1048404 +Ref: 9bb1048404 +Ref: interp c gsl_spline2d_eval_e1048575 +Ref: 9bc1048575 +Ref: interp c gsl_spline2d_eval_deriv_x1048758 +Ref: 9bd1048758 +Ref: interp c gsl_spline2d_eval_deriv_x_e1048937 +Ref: 9be1048937 +Ref: interp c gsl_spline2d_eval_deriv_y1049128 +Ref: 9bf1049128 +Ref: interp c gsl_spline2d_eval_deriv_y_e1049307 +Ref: 9c01049307 +Ref: interp c gsl_spline2d_eval_deriv_xx1049498 +Ref: 9c11049498 +Ref: interp c gsl_spline2d_eval_deriv_xx_e1049678 +Ref: 9c21049678 +Ref: interp c gsl_spline2d_eval_deriv_yy1049870 +Ref: 9c31049870 +Ref: interp c gsl_spline2d_eval_deriv_yy_e1050050 +Ref: 9c41050050 +Ref: interp c gsl_spline2d_eval_deriv_xy1050242 +Ref: 9c51050242 +Ref: interp c gsl_spline2d_eval_deriv_xy_e1050422 +Ref: 9c61050422 +Ref: interp c gsl_spline2d_set1050614 +Ref: 9c71050614 +Ref: interp c gsl_spline2d_get1050751 +Ref: 9c81050751 +Node: 2D Interpolation Example programs1050995 +Ref: interp id51051156 +Ref: 9c91051156 +Ref: interp fig-interp2d1053208 +Ref: 9ca1053208 +Node: References and Further Reading<22>1053276 +Ref: interp references-and-further-reading1053403 +Ref: 9cb1053403 +Node: Numerical Differentiation1053983 +Ref: diff numerical-differentiation1054104 +Ref: 9cc1054104 +Ref: diff doc1054104 +Ref: 9cd1054104 +Node: Functions1054566 +Ref: diff functions1054659 +Ref: 9ce1054659 +Ref: diff c gsl_deriv_central1054690 +Ref: 9cf1054690 +Ref: diff c gsl_deriv_forward1055689 +Ref: 9d01055689 +Ref: diff c gsl_deriv_backward1056793 +Ref: 9d11056793 +Node: Examples<23>1057555 +Ref: diff examples1057691 +Ref: 9d21057691 +Node: References and Further Reading<23>1058980 +Ref: diff references-and-further-reading1059098 +Ref: 9d31059098 +Node: Chebyshev Approximations1059507 +Ref: cheb doc1059634 +Ref: 9d41059634 +Ref: cheb chebyshev-approximations1059634 +Ref: 9d51059634 +Node: Definitions1060538 +Ref: cheb definitions1060664 +Ref: 9d61060664 +Ref: cheb c gsl_cheb_series1060699 +Ref: 9d71060699 +Node: Creation and Calculation of Chebyshev Series1061397 +Ref: cheb creation-and-calculation-of-chebyshev-series1061551 +Ref: 9d81061551 +Ref: cheb c gsl_cheb_alloc1061652 +Ref: 9d91061652 +Ref: cheb c gsl_cheb_free1061865 +Ref: 9da1061865 +Ref: cheb c gsl_cheb_init1061998 +Ref: 9db1061998 +Node: Auxiliary Functions1062389 +Ref: cheb auxiliary-functions1062559 +Ref: 9dc1062559 +Ref: cheb c gsl_cheb_order1062691 +Ref: 9dd1062691 +Ref: cheb c gsl_cheb_size1062825 +Ref: 9de1062825 +Ref: cheb c gsl_cheb_coeffs1062889 +Ref: 9df1062889 +Node: Chebyshev Series Evaluation1063126 +Ref: cheb chebyshev-series-evaluation1063277 +Ref: 9e01063277 +Ref: cheb c gsl_cheb_eval1063344 +Ref: 9e11063344 +Ref: cheb c gsl_cheb_eval_err1063520 +Ref: 9e21063520 +Ref: cheb c gsl_cheb_eval_n1063896 +Ref: 9e31063896 +Ref: cheb c gsl_cheb_eval_n_err1064130 +Ref: 9e41064130 +Node: Derivatives and Integrals1064579 +Ref: cheb derivatives-and-integrals1064723 +Ref: 9e51064723 +Ref: cheb c gsl_cheb_calc_deriv1065067 +Ref: 9e61065067 +Ref: cheb c gsl_cheb_calc_integ1065416 +Ref: 9e71065416 +Node: Examples<24>1065858 +Ref: cheb examples1066009 +Ref: 9e81066009 +Ref: cheb fig-cheb1067378 +Ref: 9e91067378 +Node: References and Further Reading<24>1067461 +Ref: cheb references-and-further-reading1067578 +Ref: 9ea1067578 +Node: Series Acceleration1067877 +Ref: sum doc1067997 +Ref: 9eb1067997 +Ref: sum series-acceleration1067997 +Ref: 9ec1067997 +Node: Acceleration functions1068667 +Ref: sum acceleration-functions1068802 +Ref: 9ed1068802 +Ref: sum c gsl_sum_levin_u_workspace1069760 +Ref: 9ee1069760 +Ref: sum c gsl_sum_levin_u_alloc1069838 +Ref: 9ef1069838 +Ref: sum c gsl_sum_levin_u_free1070057 +Ref: 9f01070057 +Ref: sum c gsl_sum_levin_u_accel1070206 +Ref: 9f11070206 +Node: Acceleration functions without error estimation1071126 +Ref: sum acceleration-functions-without-error-estimation1071282 +Ref: 9f21071282 +Ref: sum c gsl_sum_levin_utrunc_workspace1072372 +Ref: 9f31072372 +Ref: sum c gsl_sum_levin_utrunc_alloc1072479 +Ref: 9f41072479 +Ref: sum c gsl_sum_levin_utrunc_free1072732 +Ref: 9f51072732 +Ref: sum c gsl_sum_levin_utrunc_accel1072901 +Ref: 9f61072901 +Node: Examples<25>1073889 +Ref: sum examples1074057 +Ref: 9f71074057 +Node: References and Further Reading<25>1076218 +Ref: sum references-and-further-reading1076330 +Ref: 9f81076330 +Node: Wavelet Transforms1077102 +Ref: dwt doc1077224 +Ref: 9f91077224 +Ref: dwt wavelet-transforms1077224 +Ref: 9fa1077224 +Node: Definitions<2>1077714 +Ref: dwt definitions1077807 +Ref: 9fb1077807 +Node: Initialization1078684 +Ref: dwt initialization1078805 +Ref: 9fc1078805 +Ref: dwt c gsl_wavelet1078846 +Ref: 9fd1078846 +Ref: dwt c gsl_wavelet_alloc1078987 +Ref: 9fe1078987 +Ref: dwt c gsl_wavelet_type1079402 +Ref: 9ff1079402 +Ref: dwt c gsl_wavelet_daubechies1079430 +Ref: a001079430 +Ref: dwt c gsl_wavelet_daubechies_centered1079472 +Ref: a011079472 +Ref: dwt c gsl_wavelet_haar1079706 +Ref: a021079706 +Ref: dwt c gsl_wavelet_haar_centered1079742 +Ref: a031079742 +Ref: dwt c gsl_wavelet_bspline1079892 +Ref: a041079892 +Ref: dwt c gsl_wavelet_bspline_centered1079931 +Ref: a051079931 +Ref: dwt c gsl_wavelet_name1080392 +Ref: a061080392 +Ref: dwt c gsl_wavelet_free1080551 +Ref: a071080551 +Ref: dwt c gsl_wavelet_workspace1080660 +Ref: a081080660 +Ref: dwt c gsl_wavelet_workspace_alloc1080840 +Ref: a091080840 +Ref: dwt c gsl_wavelet_workspace_free1081390 +Ref: a0a1081390 +Node: Transform Functions1081540 +Ref: dwt transform-functions1081659 +Ref: a0b1081659 +Node: Wavelet transforms in one dimension1082097 +Ref: dwt wavelet-transforms-in-one-dimension1082233 +Ref: a0c1082233 +Ref: dwt c gsl_wavelet_transform1082320 +Ref: a0d1082320 +Ref: dwt c gsl_wavelet_transform_forward1082501 +Ref: a0e1082501 +Ref: dwt c gsl_wavelet_transform_inverse1082663 +Ref: a0f1082663 +Node: Wavelet transforms in two dimension1084236 +Ref: dwt wavelet-transforms-in-two-dimension1084372 +Ref: a101084372 +Ref: dwt c gsl_wavelet2d_transform1085683 +Ref: a111085683 +Ref: dwt c gsl_wavelet2d_transform_forward1085881 +Ref: a121085881 +Ref: dwt c gsl_wavelet2d_transform_inverse1086060 +Ref: a131086060 +Ref: dwt c gsl_wavelet2d_transform_matrix1087174 +Ref: a141087174 +Ref: dwt c gsl_wavelet2d_transform_matrix_forward1087340 +Ref: a151087340 +Ref: dwt c gsl_wavelet2d_transform_matrix_inverse1087477 +Ref: a161087477 +Ref: dwt c gsl_wavelet2d_nstransform1087718 +Ref: a171087718 +Ref: dwt c gsl_wavelet2d_nstransform_forward1087918 +Ref: a181087918 +Ref: dwt c gsl_wavelet2d_nstransform_inverse1088099 +Ref: a191088099 +Ref: dwt c gsl_wavelet2d_nstransform_matrix1088376 +Ref: a1a1088376 +Ref: dwt c gsl_wavelet2d_nstransform_matrix_forward1088544 +Ref: a1b1088544 +Ref: dwt c gsl_wavelet2d_nstransform_matrix_inverse1088683 +Ref: a1c1088683 +Node: Examples<26>1088951 +Ref: dwt examples1089090 +Ref: a1d1089090 +Ref: dwt fig-dwt1091166 +Ref: a1e1091166 +Node: References and Further Reading<26>1091346 +Ref: dwt references-and-further-reading1091457 +Ref: a1f1091457 +Node: Discrete Hankel Transforms1093543 +Ref: dht doc1093674 +Ref: a201093674 +Ref: dht discrete-hankel-transforms1093674 +Ref: a211093674 +Node: Definitions<3>1094021 +Ref: dht definitions1094120 +Ref: a221094120 +Node: Functions<2>1097331 +Ref: dht functions1097473 +Ref: a271097473 +Ref: dht c gsl_dht1097504 +Ref: a231097504 +Ref: dht c gsl_dht_alloc1097580 +Ref: a241097580 +Ref: dht c gsl_dht_init1097723 +Ref: a251097723 +Ref: dht c gsl_dht_new1097901 +Ref: a281097901 +Ref: dht c gsl_dht_free1098143 +Ref: a291098143 +Ref: dht c gsl_dht_apply1098239 +Ref: a261098239 +Ref: dht c gsl_dht_x_sample1098677 +Ref: a2a1098677 +Ref: dht c gsl_dht_k_sample1098950 +Ref: a2b1098950 +Node: References and Further Reading<27>1099129 +Ref: dht references-and-further-reading1099248 +Ref: a2c1099248 +Node: One Dimensional Root-Finding1099529 +Ref: roots doc1099670 +Ref: a2d1099670 +Ref: roots one-dimensional-root-finding1099670 +Ref: a2e1099670 +Node: Overview1100773 +Ref: roots overview1100863 +Ref: a2f1100863 +Node: Caveats1102657 +Ref: roots caveats1102779 +Ref: a321102779 +Node: Initializing the Solver1104393 +Ref: roots initializing-the-solver1104538 +Ref: a331104538 +Ref: roots c gsl_root_fsolver1104597 +Ref: a301104597 +Ref: roots c gsl_root_fdfsolver1104722 +Ref: a311104722 +Ref: roots c gsl_root_fsolver_alloc1104842 +Ref: a341104842 +Ref: roots c gsl_root_fdfsolver_alloc1105447 +Ref: a351105447 +Ref: roots c gsl_root_fsolver_set1106085 +Ref: a361106085 +Ref: roots c gsl_root_fdfsolver_set1106388 +Ref: a371106388 +Ref: roots c gsl_root_fsolver_free1106669 +Ref: a381106669 +Ref: roots c gsl_root_fdfsolver_free1106733 +Ref: a391106733 +Ref: roots c gsl_root_fsolver_name1106880 +Ref: a3a1106880 +Ref: roots c gsl_root_fdfsolver_name1106968 +Ref: a3b1106968 +Node: Providing the function to solve1107283 +Ref: roots providing-the-function-to-solve1107446 +Ref: a3c1107446 +Ref: roots providing-function-to-solve1107446 +Ref: a3d1107446 +Ref: roots c gsl_function1107748 +Ref: a3e1107748 +Ref: roots c gsl_function_fdf1108886 +Ref: a3f1108886 +Node: Search Bounds and Guesses1110980 +Ref: roots search-bounds-and-guesses1111129 +Ref: a401111129 +Node: Iteration1111827 +Ref: roots iteration1111971 +Ref: a411111971 +Ref: roots c gsl_root_fsolver_iterate1112297 +Ref: a421112297 +Ref: roots c gsl_root_fdfsolver_iterate1112363 +Ref: a431112363 +Ref: roots c gsl_root_fsolver_root1113189 +Ref: a441113189 +Ref: roots c gsl_root_fdfsolver_root1113261 +Ref: a451113261 +Ref: roots c gsl_root_fsolver_x_lower1113439 +Ref: a461113439 +Ref: roots c gsl_root_fsolver_x_upper1113524 +Ref: a471113524 +Node: Search Stopping Parameters1113700 +Ref: roots search-stopping-parameters1113845 +Ref: a481113845 +Ref: roots c gsl_root_test_interval1114324 +Ref: a491114324 +Ref: roots c gsl_root_test_delta1115333 +Ref: a4a1115333 +Ref: roots c gsl_root_test_residual1115763 +Ref: a4b1115763 +Node: Root Bracketing Algorithms1116280 +Ref: roots root-bracketing-algorithms1116457 +Ref: a4c1116457 +Ref: roots c gsl_root_fsolver_type1117024 +Ref: a4d1117024 +Ref: roots c gsl_root_fsolver_bisection1117057 +Ref: a4e1117057 +Ref: roots c gsl_root_fsolver_falsepos1117838 +Ref: a4f1117838 +Ref: roots c gsl_root_fsolver_brent1118748 +Ref: a501118748 +Node: Root Finding Algorithms using Derivatives1119859 +Ref: roots root-finding-algorithms-using-derivatives1120022 +Ref: a511120022 +Ref: roots c gsl_root_fdfsolver_type1120540 +Ref: a521120540 +Ref: roots c gsl_root_fdfsolver_newton1120575 +Ref: a531120575 +Ref: roots c gsl_root_fdfsolver_secant1121179 +Ref: a541121179 +Ref: roots c gsl_root_fdfsolver_steffenson1122583 +Ref: a551122583 +Ref: Root Finding Algorithms using Derivatives-Footnote-11123662 +Node: Examples<27>1123820 +Ref: roots examples1123991 +Ref: a561123991 +Node: References and Further Reading<28>1131136 +Ref: roots references-and-further-reading1131257 +Ref: a571131257 +Node: One Dimensional Minimization1131776 +Ref: min one-dimensional-minimization1131920 +Ref: a581131920 +Ref: min doc1131920 +Ref: a591131920 +Node: Overview<2>1133085 +Ref: min overview1133181 +Ref: a5a1133181 +Ref: min fig-min-interval1133432 +Ref: a5b1133432 +Node: Caveats<2>1134946 +Ref: min caveats1135077 +Ref: a5d1135077 +Node: Initializing the Minimizer1136261 +Ref: min initializing-the-minimizer1136415 +Ref: a5e1136415 +Ref: min c gsl_min_fminimizer1136480 +Ref: a5c1136480 +Ref: min c gsl_min_fminimizer_alloc1136562 +Ref: a5f1136562 +Ref: min c gsl_min_fminimizer_set1137199 +Ref: a601137199 +Ref: min c gsl_min_fminimizer_set_with_values1137716 +Ref: a611137716 +Ref: min c gsl_min_fminimizer_free1138176 +Ref: a621138176 +Ref: min c gsl_min_fminimizer_name1138330 +Ref: a631138330 +Node: Providing the function to minimize1138651 +Ref: min providing-the-function-to-minimize1138807 +Ref: a641138807 +Node: Iteration<2>1139133 +Ref: min iteration1139282 +Ref: a651139282 +Ref: min c gsl_min_fminimizer_iterate1139614 +Ref: a661139614 +Ref: min c gsl_min_fminimizer_x_minimum1140346 +Ref: a671140346 +Ref: min c gsl_min_fminimizer_x_upper1140550 +Ref: a681140550 +Ref: min c gsl_min_fminimizer_x_lower1140639 +Ref: a691140639 +Ref: min c gsl_min_fminimizer_f_minimum1140840 +Ref: a6a1140840 +Ref: min c gsl_min_fminimizer_f_upper1140931 +Ref: a6b1140931 +Ref: min c gsl_min_fminimizer_f_lower1141020 +Ref: a6c1141020 +Node: Stopping Parameters1141291 +Ref: min stopping-parameters1141429 +Ref: a6d1141429 +Ref: min c gsl_min_test_interval1141872 +Ref: a6e1141872 +Node: Minimization Algorithms1142907 +Ref: min minimization-algorithms1143045 +Ref: a6f1143045 +Ref: min c gsl_min_fminimizer_type1143530 +Ref: a701143530 +Ref: min c gsl_min_fminimizer_goldensection1143565 +Ref: a711143565 +Ref: min c gsl_min_fminimizer_brent1144584 +Ref: a721144584 +Ref: min c gsl_min_fminimizer_quad_golden1145509 +Ref: a731145509 +Node: Examples<28>1145691 +Ref: min examples1145844 +Ref: a741145844 +Node: References and Further Reading<29>1148409 +Ref: min references-and-further-reading1148530 +Ref: a751148530 +Node: Multidimensional Root-Finding1148849 +Ref: multiroots doc1148994 +Ref: a761148994 +Ref: multiroots multidimensional-root-finding1148994 +Ref: a771148994 +Node: Overview<3>1150288 +Ref: multiroots overview1150401 +Ref: a781150401 +Node: Initializing the Solver<2>1152487 +Ref: multiroots initializing-the-solver1152643 +Ref: a7b1152643 +Ref: multiroots c gsl_multiroot_fsolver1152925 +Ref: a7a1152925 +Ref: multiroots c gsl_multiroot_fdfsolver1153044 +Ref: a791153044 +Ref: multiroots c gsl_multiroot_fsolver_alloc1153162 +Ref: a7c1153162 +Ref: multiroots c gsl_multiroot_fdfsolver_alloc1153895 +Ref: a7d1153895 +Ref: multiroots c gsl_multiroot_fsolver_set1154656 +Ref: a7e1154656 +Ref: multiroots c gsl_multiroot_fdfsolver_set1154788 +Ref: a7f1154788 +Ref: multiroots c gsl_multiroot_fsolver_free1155219 +Ref: a801155219 +Ref: multiroots c gsl_multiroot_fdfsolver_free1155303 +Ref: a811155303 +Ref: multiroots c gsl_multiroot_fsolver_name1155470 +Ref: a821155470 +Ref: multiroots c gsl_multiroot_fdfsolver_name1155568 +Ref: a831155568 +Node: Providing the function to solve<2>1155897 +Ref: multiroots providing-the-function-to-solve1156054 +Ref: a841156054 +Ref: multiroots c gsl_multiroot_function1156307 +Ref: a851156307 +Ref: multiroots c gsl_multiroot_function_fdf1157841 +Ref: a861157841 +Node: Iteration<3>1160923 +Ref: multiroots iteration1161083 +Ref: a871161083 +Ref: multiroots c gsl_multiroot_fsolver_iterate1161409 +Ref: a881161409 +Ref: multiroots c gsl_multiroot_fdfsolver_iterate1161495 +Ref: a891161495 +Ref: multiroots c gsl_multiroot_fsolver_root1162239 +Ref: a8a1162239 +Ref: multiroots c gsl_multiroot_fdfsolver_root1162337 +Ref: a8b1162337 +Ref: multiroots c gsl_multiroot_fsolver_f1162552 +Ref: a8c1162552 +Ref: multiroots c gsl_multiroot_fdfsolver_f1162647 +Ref: a8d1162647 +Ref: multiroots c gsl_multiroot_fsolver_dx1162886 +Ref: a8e1162886 +Ref: multiroots c gsl_multiroot_fdfsolver_dx1162982 +Ref: a8f1162982 +Node: Search Stopping Parameters<2>1163185 +Ref: multiroots search-stopping-parameters1163339 +Ref: a901163339 +Ref: multiroots c gsl_multiroot_test_delta1163840 +Ref: a911163840 +Ref: multiroots c gsl_multiroot_test_residual1164381 +Ref: a921164381 +Node: Algorithms using Derivatives1164925 +Ref: multiroots algorithms-using-derivatives1165097 +Ref: a931165097 +Ref: multiroots c gsl_multiroot_fdfsolver_type1165575 +Ref: a941165575 +Ref: multiroots c gsl_multiroot_fdfsolver_hybridsj1165709 +Ref: a951165709 +Ref: multiroots c gsl_multiroot_fdfsolver_hybridj1168512 +Ref: a961168512 +Ref: multiroots c gsl_multiroot_fdfsolver_newton1168847 +Ref: a971168847 +Ref: multiroots c gsl_multiroot_fdfsolver_gnewton1169672 +Ref: a981169672 +Node: Algorithms without Derivatives1170247 +Ref: multiroots algorithms-without-derivatives1170402 +Ref: a991170402 +Ref: multiroots c gsl_multiroot_fsolver_type1170863 +Ref: a9a1170863 +Ref: multiroots c gsl_multiroot_fsolver_hybrids1170997 +Ref: a9b1170997 +Ref: multiroots c gsl_multiroot_fsolver_hybrid1171442 +Ref: a9c1171442 +Ref: multiroots c gsl_multiroot_fsolver_dnewton1171598 +Ref: a9d1171598 +Ref: multiroots c gsl_multiroot_fsolver_broyden1172556 +Ref: a9e1172556 +Node: Examples<29>1173688 +Ref: multiroots examples1173849 +Ref: a9f1173849 +Node: References and Further Reading<30>1182412 +Ref: multiroots references-and-further-reading1182534 +Ref: aa01182534 +Node: Multidimensional Minimization1183613 +Ref: multimin multidimensional-minimization1183758 +Ref: aa11183758 +Ref: multimin doc1183758 +Ref: aa21183758 +Node: Overview<4>1185021 +Ref: multimin overview1185118 +Ref: aa31185118 +Node: Caveats<3>1187132 +Ref: multimin caveats1187281 +Ref: aa61187281 +Node: Initializing the Multidimensional Minimizer1187866 +Ref: multimin initializing-the-multidimensional-minimizer1188036 +Ref: aa71188036 +Ref: multimin c gsl_multimin_fdfminimizer1188328 +Ref: aa41188328 +Ref: multimin c gsl_multimin_fminimizer1188435 +Ref: aa51188435 +Ref: multimin c gsl_multimin_fdfminimizer_alloc1188542 +Ref: aa81188542 +Ref: multimin c gsl_multimin_fminimizer_alloc1188689 +Ref: aa91188689 +Ref: multimin c gsl_multimin_fdfminimizer_set1189150 +Ref: aaa1189150 +Ref: multimin c gsl_multimin_fminimizer_set1189335 +Ref: aab1189335 +Ref: multimin c gsl_multimin_fdfminimizer_free1190720 +Ref: aac1190720 +Ref: multimin c gsl_multimin_fminimizer_free1190812 +Ref: aad1190812 +Ref: multimin c gsl_multimin_fdfminimizer_name1190986 +Ref: aae1190986 +Ref: multimin c gsl_multimin_fminimizer_name1191092 +Ref: aaf1191092 +Node: Providing a function to minimize1191437 +Ref: multimin providing-a-function-to-minimize1191609 +Ref: ab01191609 +Ref: multimin c gsl_multimin_function_fdf1192046 +Ref: ab11192046 +Ref: multimin c gsl_multimin_function1193534 +Ref: ab21193534 +Ref: multimin multimin-paraboloid1194158 +Ref: ab31194158 +Node: Iteration<4>1195669 +Ref: multimin iteration1195815 +Ref: ab41195815 +Ref: multimin c gsl_multimin_fdfminimizer_iterate1196119 +Ref: ab51196119 +Ref: multimin c gsl_multimin_fminimizer_iterate1196213 +Ref: ab61196213 +Ref: multimin c gsl_multimin_fdfminimizer_x1196840 +Ref: ab71196840 +Ref: multimin c gsl_multimin_fminimizer_x1196943 +Ref: ab81196943 +Ref: multimin c gsl_multimin_fdfminimizer_minimum1197042 +Ref: ab91197042 +Ref: multimin c gsl_multimin_fminimizer_minimum1197145 +Ref: aba1197145 +Ref: multimin c gsl_multimin_fdfminimizer_gradient1197244 +Ref: abb1197244 +Ref: multimin c gsl_multimin_fdfminimizer_dx1197354 +Ref: abc1197354 +Ref: multimin c gsl_multimin_fminimizer_size1197458 +Ref: abd1197458 +Ref: multimin c gsl_multimin_fdfminimizer_restart1197823 +Ref: abe1197823 +Node: Stopping Criteria1198022 +Ref: multimin stopping-criteria1198163 +Ref: abf1198163 +Ref: multimin c gsl_multimin_test_gradient1198602 +Ref: ac01198602 +Ref: multimin c gsl_multimin_test_size1199247 +Ref: ac11199247 +Node: Algorithms with Derivatives1199614 +Ref: multimin algorithms-with-derivatives1199776 +Ref: ac21199776 +Ref: multimin c gsl_multimin_fdfminimizer_type1200063 +Ref: ac31200063 +Ref: multimin c gsl_multimin_fdfminimizer_conjugate_fr1200173 +Ref: ac41200173 +Ref: multimin c gsl_multimin_fdfminimizer_conjugate_pr1201235 +Ref: ac51201235 +Ref: multimin c gsl_multimin_fdfminimizer_vector_bfgs21201677 +Ref: ac61201677 +Ref: multimin c gsl_multimin_fdfminimizer_vector_bfgs1201735 +Ref: ac71201735 +Ref: multimin c gsl_multimin_fdfminimizer_steepest_descent1202932 +Ref: ac81202932 +Node: Algorithms without Derivatives<2>1203551 +Ref: multimin algorithms-without-derivatives1203708 +Ref: ac91203708 +Ref: multimin c gsl_multimin_fminimizer_type1203884 +Ref: aca1203884 +Ref: multimin c gsl_multimin_fminimizer_nmsimplex21204007 +Ref: acb1204007 +Ref: multimin c gsl_multimin_fminimizer_nmsimplex1204061 +Ref: acc1204061 +Ref: multimin c gsl_multimin_fminimizer_nmsimplex2rand1206401 +Ref: acd1206401 +Node: Examples<30>1207089 +Ref: multimin examples1207253 +Ref: ace1207253 +Ref: multimin fig-multimin1210003 +Ref: acf1210003 +Node: References and Further Reading<31>1213764 +Ref: multimin references-and-further-reading1213886 +Ref: ad01213886 +Node: Linear Least-Squares Fitting1214625 +Ref: lls doc1214772 +Ref: ad11214772 +Ref: lls linear-least-squares-fitting1214772 +Ref: ad21214772 +Node: Overview<5>1215686 +Ref: lls overview1215789 +Ref: ad31215789 +Ref: lls sec-lls-overview1215789 +Ref: ad41215789 +Node: Linear regression1218043 +Ref: lls linear-regression1218181 +Ref: ad51218181 +Node: Linear regression with a constant term1218492 +Ref: lls linear-regression-with-a-constant-term1218635 +Ref: ad61218635 +Ref: lls c gsl_fit_linear1218859 +Ref: ad71218859 +Ref: lls c gsl_fit_wlinear1219872 +Ref: ad81219872 +Ref: lls c gsl_fit_linear_est1220911 +Ref: ad91220911 +Node: Linear regression without a constant term1221364 +Ref: lls linear-regression-without-a-constant-term1221507 +Ref: ada1221507 +Ref: lls c gsl_fit_mul1221750 +Ref: adb1221750 +Ref: lls c gsl_fit_wmul1222475 +Ref: adc1222475 +Ref: lls c gsl_fit_mul_est1223385 +Ref: add1223385 +Node: Multi-parameter regression1223741 +Ref: lls multi-parameter-regression1223890 +Ref: ade1223890 +Ref: lls c gsl_multifit_linear_workspace1225286 +Ref: adf1225286 +Ref: lls c gsl_multifit_linear_alloc1225417 +Ref: ae01225417 +Ref: lls c gsl_multifit_linear_free1225798 +Ref: ae11225798 +Ref: lls c gsl_multifit_linear_svd1225968 +Ref: ae21225968 +Ref: lls c gsl_multifit_linear_bsvd1226222 +Ref: ae31226222 +Ref: lls c gsl_multifit_linear1226608 +Ref: ae41226608 +Ref: lls c gsl_multifit_linear_tsvd1227866 +Ref: ae51227866 +Ref: lls c gsl_multifit_wlinear1229062 +Ref: ae61229062 +Ref: lls c gsl_multifit_wlinear_tsvd1230011 +Ref: ae71230011 +Ref: lls c gsl_multifit_linear_est1231221 +Ref: ae81231221 +Ref: lls c gsl_multifit_linear_residuals1231644 +Ref: ae91231644 +Ref: lls c gsl_multifit_linear_rank1231955 +Ref: aea1231955 +Node: Regularized regression1232378 +Ref: lls regularized-regression1232534 +Ref: aeb1232534 +Ref: lls sec-regularized-regression1232534 +Ref: aec1232534 +Ref: lls c gsl_multifit_linear_stdform11237841 +Ref: aed1237841 +Ref: lls c gsl_multifit_linear_wstdform11238047 +Ref: af11238047 +Ref: lls c gsl_multifit_linear_L_decomp1239369 +Ref: af31239369 +Ref: lls c gsl_multifit_linear_stdform21240063 +Ref: aee1240063 +Ref: lls c gsl_multifit_linear_wstdform21240322 +Ref: af41240322 +Ref: lls c gsl_multifit_linear_solve1241565 +Ref: af51241565 +Ref: lls c gsl_multifit_linear_genform11242729 +Ref: aef1242729 +Ref: lls c gsl_multifit_linear_genform21243286 +Ref: af01243286 +Ref: lls c gsl_multifit_linear_wgenform21243556 +Ref: af61243556 +Ref: lls c gsl_multifit_linear_applyW1244436 +Ref: af21244436 +Ref: lls c gsl_multifit_linear_lcurve1245024 +Ref: af71245024 +Ref: lls c gsl_multifit_linear_lcorner1246109 +Ref: af81246109 +Ref: lls c gsl_multifit_linear_lcorner21247130 +Ref: af91247130 +Ref: lls c gsl_multifit_linear_gcv_init1248431 +Ref: afa1248431 +Ref: lls c gsl_multifit_linear_gcv_curve1249062 +Ref: afb1249062 +Ref: lls c gsl_multifit_linear_gcv_min1249530 +Ref: afc1249530 +Ref: lls c gsl_multifit_linear_gcv_calc1250125 +Ref: afd1250125 +Ref: lls c gsl_multifit_linear_gcv1250413 +Ref: afe1250413 +Ref: lls c gsl_multifit_linear_Lk1251119 +Ref: aff1251119 +Ref: lls c gsl_multifit_linear_Lsobolev1251439 +Ref: b001251439 +Ref: lls c gsl_multifit_linear_rcond1252347 +Ref: b011252347 +Node: Robust linear regression1252759 +Ref: lls robust-linear-regression1252915 +Ref: b021252915 +Ref: lls c gsl_multifit_robust_workspace1256044 +Ref: b031256044 +Ref: lls c gsl_multifit_robust_alloc1256148 +Ref: b041256148 +Ref: lls c gsl_multifit_robust_type1256574 +Ref: b051256574 +Ref: lls c gsl_multifit_robust_default1256615 +Ref: b061256615 +Ref: lls c gsl_multifit_robust_bisquare1256851 +Ref: b071256851 +Ref: lls c gsl_multifit_robust_cauchy1257255 +Ref: b081257255 +Ref: lls c gsl_multifit_robust_fair1257803 +Ref: b091257803 +Ref: lls c gsl_multifit_robust_huber1258150 +Ref: b0a1258150 +Ref: lls c gsl_multifit_robust_ols1258778 +Ref: b0b1258778 +Ref: lls c gsl_multifit_robust_welsch1259163 +Ref: b0c1259163 +Ref: lls c gsl_multifit_robust_free1259518 +Ref: b0d1259518 +Ref: lls c gsl_multifit_robust_name1259685 +Ref: b0e1259685 +Ref: lls c gsl_multifit_robust_tune1259912 +Ref: b0f1259912 +Ref: lls c gsl_multifit_robust_maxiter1260327 +Ref: b101260327 +Ref: lls c gsl_multifit_robust_weights1260668 +Ref: b111260668 +Ref: lls c gsl_multifit_robust1261421 +Ref: b121261421 +Ref: lls c gsl_multifit_robust_est1262630 +Ref: b141262630 +Ref: lls c gsl_multifit_robust_residuals1263054 +Ref: b151263054 +Ref: lls c gsl_multifit_robust_statistics1263654 +Ref: b131263654 +Ref: lls c gsl_multifit_robust_stats1264120 +Ref: b161264120 +Node: Large dense linear systems1266054 +Ref: lls large-dense-linear-systems1266203 +Ref: b171266203 +Node: Normal Equations Approach1268312 +Ref: lls normal-equations-approach1268438 +Ref: b181268438 +Node: Tall Skinny QR TSQR Approach1269747 +Ref: lls tall-skinny-qr-tsqr-approach1269923 +Ref: b191269923 +Node: Large Dense Linear Systems Solution Steps1271367 +Ref: lls large-dense-linear-systems-solution-steps1271559 +Ref: b1a1271559 +Node: Large Dense Linear Least Squares Routines1272514 +Ref: lls large-dense-linear-least-squares-routines1272669 +Ref: b1b1272669 +Ref: lls c gsl_multilarge_linear_workspace1272768 +Ref: b1c1272768 +Ref: lls c gsl_multilarge_linear_alloc1272906 +Ref: b1d1272906 +Ref: lls c gsl_multilarge_linear_type1273240 +Ref: b1e1273240 +Ref: lls c gsl_multilarge_linear_normal1273458 +Ref: b1f1273458 +Ref: lls c gsl_multilarge_linear_tsqr1273843 +Ref: b201273843 +Ref: lls c gsl_multilarge_linear_free1274276 +Ref: b211274276 +Ref: lls c gsl_multilarge_linear_name1274447 +Ref: b221274447 +Ref: lls c gsl_multilarge_linear_reset1274638 +Ref: b231274638 +Ref: lls c gsl_multilarge_linear_stdform11274845 +Ref: b241274845 +Ref: lls c gsl_multilarge_linear_wstdform11275055 +Ref: b251275055 +Ref: lls c gsl_multilarge_linear_L_decomp1276141 +Ref: b271276141 +Ref: lls c gsl_multilarge_linear_stdform21276593 +Ref: b291276593 +Ref: lls c gsl_multilarge_linear_wstdform21276840 +Ref: b281276840 +Ref: lls c gsl_multilarge_linear_accumulate1277852 +Ref: b2b1277852 +Ref: lls c gsl_multilarge_linear_solve1278336 +Ref: b2c1278336 +Ref: lls c gsl_multilarge_linear_genform11278896 +Ref: b261278896 +Ref: lls c gsl_multilarge_linear_genform21279457 +Ref: b2a1279457 +Ref: lls c gsl_multilarge_linear_lcurve1279957 +Ref: b2d1279957 +Ref: lls c gsl_multilarge_linear_rcond1280958 +Ref: b2e1280958 +Node: Troubleshooting1281557 +Ref: lls troubleshooting1281694 +Ref: b2f1281694 +Node: Examples<31>1282184 +Ref: lls examples1282329 +Ref: b301282329 +Node: Simple Linear Regression Example1282707 +Ref: lls simple-linear-regression-example1282839 +Ref: b311282839 +Ref: lls fig-fit-wlinear1284932 +Ref: b321284932 +Node: Multi-parameter Linear Regression Example1285021 +Ref: lls multi-parameter-linear-regression-example1285201 +Ref: b331285201 +Ref: lls fig-fit-wlinear21290071 +Ref: b341290071 +Node: Regularized Linear Regression Example 11290155 +Ref: lls regularized-linear-regression-example-11290342 +Ref: b351290342 +Ref: lls fig-regularized1292040 +Ref: b361292040 +Node: Regularized Linear Regression Example 21297816 +Ref: lls regularized-linear-regression-example-21297994 +Ref: b371297994 +Ref: lls fig-regularized21299470 +Ref: b381299470 +Node: Robust Linear Regression Example1304812 +Ref: lls robust-linear-regression-example1304988 +Ref: b391304988 +Ref: lls fig-robust1308735 +Ref: b3a1308735 +Node: Large Dense Linear Regression Example1308813 +Ref: lls large-dense-linear-regression-example1308941 +Ref: b3b1308941 +Ref: lls fig-multilarge1310758 +Ref: b3c1310758 +Node: References and Further Reading<32>1316056 +Ref: lls references-and-further-reading1316177 +Ref: b3d1316177 +Node: Nonlinear Least-Squares Fitting1318351 +Ref: nls nonlinear-least-squares-fitting1318482 +Ref: b3e1318482 +Ref: nls doc1318482 +Ref: b3f1318482 +Node: Overview<6>1320259 +Ref: nls overview1320387 +Ref: b401320387 +Node: Solving the Trust Region Subproblem TRS1324639 +Ref: nls solving-the-trust-region-subproblem-trs1324808 +Ref: b411324808 +Node: Levenberg-Marquardt1326599 +Ref: nls levenberg-marquardt1326750 +Ref: b421326750 +Node: Levenberg-Marquardt with Geodesic Acceleration1328150 +Ref: nls levenberg-marquardt-with-geodesic-acceleration1328316 +Ref: b431328316 +Node: Dogleg1329827 +Ref: nls dogleg1329987 +Ref: b441329987 +Node: Double Dogleg1331221 +Ref: nls double-dogleg1331359 +Ref: b451331359 +Node: Two Dimensional Subspace1331951 +Ref: nls two-dimensional-subspace1332116 +Ref: b461332116 +Node: Steihaug-Toint Conjugate Gradient1332855 +Ref: nls steihaug-toint-conjugate-gradient1332998 +Ref: b471332998 +Node: Weighted Nonlinear Least-Squares1333559 +Ref: nls weighted-nonlinear-least-squares1333735 +Ref: b481333735 +Node: Tunable Parameters1334758 +Ref: nls sec-tunable-parameters1334921 +Ref: b4a1334921 +Ref: nls tunable-parameters1334921 +Ref: b4b1334921 +Ref: nls c gsl_multifit_nlinear_parameters1335200 +Ref: b4c1335200 +Ref: nls c gsl_multilarge_nlinear_parameters1336295 +Ref: b4d1336295 +Ref: nls c gsl_multifit_nlinear_trs1337494 +Ref: b4e1337494 +Ref: nls c gsl_multilarge_nlinear_trs1337529 +Ref: b4f1337529 +Ref: nls c gsl_multifit_nlinear_trs_lm1337715 +Ref: b501337715 +Ref: nls c gsl_multilarge_nlinear_trs_lm1337762 +Ref: b511337762 +Ref: nls c gsl_multifit_nlinear_trs_lmaccel1337871 +Ref: b521337871 +Ref: nls c gsl_multilarge_nlinear_trs_lmaccel1337923 +Ref: b531337923 +Ref: nls c gsl_multifit_nlinear_trs_dogleg1338074 +Ref: b541338074 +Ref: nls c gsl_multilarge_nlinear_trs_dogleg1338125 +Ref: b551338125 +Ref: nls c gsl_multifit_nlinear_trs_ddogleg1338225 +Ref: b561338225 +Ref: nls c gsl_multilarge_nlinear_trs_ddogleg1338277 +Ref: b571338277 +Ref: nls c gsl_multifit_nlinear_trs_subspace2D1338385 +Ref: b581338385 +Ref: nls c gsl_multilarge_nlinear_trs_subspace2D1338440 +Ref: b591338440 +Ref: nls c gsl_multilarge_nlinear_trs_cgst1338549 +Ref: b5a1338549 +Ref: nls c gsl_multifit_nlinear_scale1338733 +Ref: b5b1338733 +Ref: nls c gsl_multilarge_nlinear_scale1338770 +Ref: b5c1338770 +Ref: nls c gsl_multifit_nlinear_scale_more1338936 +Ref: b5d1338936 +Ref: nls c gsl_multilarge_nlinear_scale_more1338987 +Ref: b5e1338987 +Ref: nls c gsl_multifit_nlinear_scale_levenberg1339947 +Ref: b5f1339947 +Ref: nls c gsl_multilarge_nlinear_scale_levenberg1340003 +Ref: b601340003 +Ref: nls c gsl_multifit_nlinear_scale_marquardt1340502 +Ref: b611340502 +Ref: nls c gsl_multilarge_nlinear_scale_marquardt1340558 +Ref: b621340558 +Ref: nls c gsl_multifit_nlinear_solver1340928 +Ref: b631340928 +Ref: nls c gsl_multilarge_nlinear_solver1340966 +Ref: b641340966 +Ref: nls c gsl_multifit_nlinear_solver_qr1341320 +Ref: b651341320 +Ref: nls c gsl_multifit_nlinear_solver_cholesky1341706 +Ref: b661341706 +Ref: nls c gsl_multilarge_nlinear_solver_cholesky1341762 +Ref: b671341762 +Ref: nls c gsl_multifit_nlinear_solver_svd1342568 +Ref: b681342568 +Ref: nls c gsl_multifit_nlinear_fdtype1342869 +Ref: b691342869 +Ref: nls c GSL_MULTIFIT_NLINEAR_FWDIFF1343182 +Ref: b6a1343182 +Ref: nls c GSL_MULTIFIT_NLINEAR_CTRDIFF1344078 +Ref: b6b1344078 +Node: Initializing the Solver<3>1346331 +Ref: nls initializing-the-solver1346500 +Ref: b6c1346500 +Ref: nls c gsl_multifit_nlinear_type1346559 +Ref: b6d1346559 +Ref: nls c gsl_multifit_nlinear_trust1346770 +Ref: b6e1346770 +Ref: nls c gsl_multifit_nlinear_alloc1346946 +Ref: b6f1346946 +Ref: nls c gsl_multilarge_nlinear_alloc1347168 +Ref: b701347168 +Ref: nls c gsl_multifit_nlinear_default_parameters1348818 +Ref: b711348818 +Ref: nls c gsl_multilarge_nlinear_default_parameters1348921 +Ref: b721348921 +Ref: nls c gsl_multifit_nlinear_init1349291 +Ref: b731349291 +Ref: nls c gsl_multifit_nlinear_winit1349446 +Ref: b491349446 +Ref: nls c gsl_multilarge_nlinear_init1349626 +Ref: b741349626 +Ref: nls c gsl_multifit_nlinear_free1350215 +Ref: b761350215 +Ref: nls c gsl_multilarge_nlinear_free1350307 +Ref: b771350307 +Ref: nls c gsl_multifit_nlinear_name1350490 +Ref: b781350490 +Ref: nls c gsl_multilarge_nlinear_name1350596 +Ref: b791350596 +Ref: nls c gsl_multifit_nlinear_trs_name1350936 +Ref: b7a1350936 +Ref: nls c gsl_multilarge_nlinear_trs_name1351046 +Ref: b7b1351046 +Node: Providing the Function to be Minimized1351425 +Ref: nls providing-the-function-to-be-minimized1351588 +Ref: b7c1351588 +Ref: nls sec-providing-function-minimized1351588 +Ref: b751351588 +Ref: nls c gsl_multifit_nlinear_fdf1351872 +Ref: b7d1351872 +Ref: nls c gsl_multilarge_nlinear_fdf1354999 +Ref: b7e1354999 +Node: Iteration<5>1358857 +Ref: nls iteration1359017 +Ref: b7f1359017 +Ref: nls c gsl_multifit_nlinear_iterate1359214 +Ref: b801359214 +Ref: nls c gsl_multilarge_nlinear_iterate1359308 +Ref: b811359308 +Ref: nls c gsl_multifit_nlinear_position1360325 +Ref: b821360325 +Ref: nls c gsl_multilarge_nlinear_position1360435 +Ref: b831360435 +Ref: nls c gsl_multifit_nlinear_residual1360658 +Ref: b841360658 +Ref: nls c gsl_multilarge_nlinear_residual1360768 +Ref: b851360768 +Ref: nls c gsl_multifit_nlinear_jac1361061 +Ref: b861361061 +Ref: nls c gsl_multifit_nlinear_niter1361373 +Ref: b871361373 +Ref: nls c gsl_multilarge_nlinear_niter1361474 +Ref: b881361474 +Ref: nls c gsl_multifit_nlinear_rcond1361792 +Ref: b891361792 +Ref: nls c gsl_multilarge_nlinear_rcond1361906 +Ref: b8a1361906 +Ref: nls c gsl_multifit_nlinear_avratio1363435 +Ref: b8b1363435 +Ref: nls c gsl_multilarge_nlinear_avratio1363538 +Ref: b8c1363538 +Node: Testing for Convergence1363992 +Ref: nls testing-for-convergence1364131 +Ref: b8d1364131 +Ref: nls c gsl_multifit_nlinear_test1364619 +Ref: b8e1364619 +Ref: nls c gsl_multilarge_nlinear_test1364795 +Ref: b8f1364795 +Node: High Level Driver1366871 +Ref: nls high-level-driver1367038 +Ref: b901367038 +Ref: nls c gsl_multifit_nlinear_driver1367196 +Ref: b911367196 +Ref: nls c gsl_multilarge_nlinear_driver1367528 +Ref: b921367528 +Node: Covariance matrix of best fit parameters1369129 +Ref: nls covariance-matrix-of-best-fit-parameters1369291 +Ref: b941369291 +Ref: nls c gsl_multifit_nlinear_covar1369386 +Ref: b951369386 +Ref: nls c gsl_multilarge_nlinear_covar1369505 +Ref: b961369505 +Node: Troubleshooting<2>1371335 +Ref: nls troubleshooting1371492 +Ref: b971371492 +Ref: nls sec-nlinear-troubleshooting1371492 +Ref: b931371492 +Node: Examples<32>1373317 +Ref: nls examples1373468 +Ref: b981373468 +Node: Exponential Fitting Example1373783 +Ref: nls exponential-fitting-example1373900 +Ref: b991373900 +Ref: nls fig-fit-exp1378494 +Ref: b9a1378494 +Node: Geodesic Acceleration Example 11384849 +Ref: nls geodesic-acceleration-example-11385006 +Ref: b9b1385006 +Ref: nls fig-nlfit21386777 +Ref: b9c1386777 +Node: Geodesic Acceleration Example 21392197 +Ref: nls geodesic-acceleration-example-21392356 +Ref: b9d1392356 +Ref: nls fig-nlfit2b1396147 +Ref: b9e1396147 +Node: Comparing TRS Methods Example1403875 +Ref: nls comparing-trs-methods-example1404040 +Ref: b9f1404040 +Ref: nls fig-nlfit31406349 +Ref: ba01406349 +Node: Large Nonlinear Least Squares Example1412693 +Ref: nls large-nonlinear-least-squares-example1412818 +Ref: ba11412818 +Node: References and Further Reading<33>1421617 +Ref: nls references-and-further-reading1421741 +Ref: ba21421741 +Node: Basis Splines1423191 +Ref: bspline chap-basis-splines1423309 +Ref: 95f1423309 +Ref: bspline doc1423309 +Ref: ba31423309 +Ref: bspline basis-splines1423309 +Ref: ba41423309 +Node: Overview<7>1424070 +Ref: bspline overview1424174 +Ref: ba51424174 +Node: Initializing the B-splines solver1425396 +Ref: bspline initializing-the-b-splines-solver1425538 +Ref: ba61425538 +Ref: bspline c gsl_bspline_workspace1425617 +Ref: ba71425617 +Ref: bspline c gsl_bspline_alloc1425734 +Ref: ba81425734 +Ref: bspline c gsl_bspline_free1426141 +Ref: ba91426141 +Node: Constructing the knots vector1426282 +Ref: bspline constructing-the-knots-vector1426436 +Ref: baa1426436 +Ref: bspline c gsl_bspline_knots1426507 +Ref: bab1426507 +Ref: bspline c gsl_bspline_knots_uniform1426739 +Ref: bac1426739 +Node: Evaluation of B-splines1427071 +Ref: bspline evaluation-of-b-splines1427226 +Ref: bad1427226 +Ref: bspline c gsl_bspline_eval1427285 +Ref: bae1427285 +Ref: bspline c gsl_bspline_eval_nonzero1427865 +Ref: bb01427865 +Ref: bspline c gsl_bspline_ncoeffs1428589 +Ref: baf1428589 +Node: Evaluation of B-spline derivatives1428757 +Ref: bspline evaluation-of-b-spline-derivatives1428918 +Ref: bb11428918 +Ref: bspline c gsl_bspline_deriv_eval1428999 +Ref: bb21428999 +Ref: bspline c gsl_bspline_deriv_eval_nonzero1429811 +Ref: bb31429811 +Node: Working with the Greville abscissae1430700 +Ref: bspline working-with-the-greville-abscissae1430850 +Ref: bb41430850 +Ref: bspline c gsl_bspline_greville_abscissa1431383 +Ref: bb51431383 +Node: Examples<33>1431686 +Ref: bspline examples1431836 +Ref: bb61431836 +Ref: bspline fig-bspline1435585 +Ref: bb71435585 +Node: References and Further Reading<34>1435663 +Ref: bspline references-and-further-reading1435769 +Ref: bb81435769 +Node: Sparse Matrices1436459 +Ref: spmatrix sparse-matrices1436565 +Ref: bb91436565 +Ref: spmatrix doc1436565 +Ref: bba1436565 +Node: Overview<8>1437680 +Ref: spmatrix overview1437763 +Ref: bbb1437763 +Ref: spmatrix c gsl_spmatrix1438960 +Ref: bbc1438960 +Node: Allocation1441271 +Ref: spmatrix allocation1441388 +Ref: bbd1441388 +Ref: spmatrix c gsl_spmatrix_alloc1441770 +Ref: bbe1441770 +Ref: spmatrix c gsl_spmatrix_alloc_nzmax1442632 +Ref: bbf1442632 +Ref: spmatrix c GSL_SPMATRIX_TRIPLET1443583 +Ref: bc11443583 +Ref: spmatrix c GSL_SPMATRIX_CCS1443669 +Ref: bc21443669 +Ref: spmatrix c GSL_SPMATRIX_CRS1443761 +Ref: bc31443761 +Ref: spmatrix c gsl_spmatrix_realloc1443931 +Ref: bc01443931 +Ref: spmatrix c gsl_spmatrix_free1444319 +Ref: bc51444319 +Node: Accessing Matrix Elements1444461 +Ref: spmatrix accessing-matrix-elements1444595 +Ref: bc61444595 +Ref: spmatrix c gsl_spmatrix_get1444658 +Ref: bc71444658 +Ref: spmatrix c gsl_spmatrix_set1444899 +Ref: bc41444899 +Ref: spmatrix c gsl_spmatrix_ptr1445160 +Ref: bc81445160 +Node: Initializing Matrix Elements1445470 +Ref: spmatrix initializing-matrix-elements1445622 +Ref: bc91445622 +Ref: spmatrix c gsl_spmatrix_set_zero1445949 +Ref: bca1445949 +Node: Reading and Writing Matrices1446099 +Ref: spmatrix reading-and-writing-matrices1446242 +Ref: bcb1446242 +Ref: spmatrix c gsl_spmatrix_fwrite1446311 +Ref: bcc1446311 +Ref: spmatrix c gsl_spmatrix_fread1446739 +Ref: bcd1446739 +Ref: spmatrix c gsl_spmatrix_fprintf1447356 +Ref: bce1447356 +Ref: spmatrix c gsl_spmatrix_fscanf1447952 +Ref: bcf1447952 +Node: Copying Matrices1448398 +Ref: spmatrix copying-matrices1448540 +Ref: bd01448540 +Ref: spmatrix c gsl_spmatrix_memcpy1448585 +Ref: bd11448585 +Node: Exchanging Rows and Columns1448863 +Ref: spmatrix exchanging-rows-and-columns1448994 +Ref: bd21448994 +Ref: spmatrix c gsl_spmatrix_transpose_memcpy1449061 +Ref: bd31449061 +Ref: spmatrix c gsl_spmatrix_transpose1449414 +Ref: bd41449414 +Ref: spmatrix c gsl_spmatrix_transpose21449656 +Ref: bd51449656 +Node: Matrix Operations1450265 +Ref: spmatrix matrix-operations1450397 +Ref: bd61450397 +Ref: spmatrix c gsl_spmatrix_add1450444 +Ref: bd71450444 +Ref: spmatrix c gsl_spmatrix_scale1450698 +Ref: bd81450698 +Node: Matrix Properties1450936 +Ref: spmatrix matrix-properties1451077 +Ref: bd91451077 +Ref: spmatrix c gsl_spmatrix_nnz1451124 +Ref: bda1451124 +Ref: spmatrix c gsl_spmatrix_equal1451260 +Ref: bdb1451260 +Node: Finding Maximum and Minimum Elements1451586 +Ref: spmatrix finding-maximum-and-minimum-elements1451727 +Ref: bdc1451727 +Ref: spmatrix c gsl_spmatrix_minmax1451814 +Ref: bdd1451814 +Node: Compressed Format1452107 +Ref: spmatrix compressed-format1452275 +Ref: bde1452275 +Ref: spmatrix c gsl_spmatrix_ccs1452412 +Ref: bdf1452412 +Ref: spmatrix c gsl_spmatrix_crs1452787 +Ref: be01452787 +Node: Conversion Between Sparse and Dense Matrices1453160 +Ref: spmatrix conversion-between-sparse-and-dense-matrices1453304 +Ref: be11453304 +Ref: spmatrix c gsl_spmatrix_d2sp1453553 +Ref: be21453553 +Ref: spmatrix c gsl_spmatrix_sp2d1453761 +Ref: be31453761 +Node: Examples<34>1453999 +Ref: spmatrix examples1454160 +Ref: be41454160 +Node: References and Further Reading<35>1457748 +Ref: spmatrix references-and-further-reading1457856 +Ref: be51457856 +Node: Sparse BLAS Support1458177 +Ref: spblas sparse-blas-support1458291 +Ref: be61458291 +Ref: spblas doc1458291 +Ref: be71458291 +Node: Sparse BLAS operations1458835 +Ref: spblas sparse-blas-operations1458957 +Ref: be81458957 +Ref: spblas c gsl_spblas_dgemv1459014 +Ref: be91459014 +Ref: spblas c gsl_spblas_dgemm1459555 +Ref: bea1459555 +Node: References and Further Reading<36>1459814 +Ref: spblas references-and-further-reading1459936 +Ref: beb1459936 +Node: Sparse Linear Algebra1460255 +Ref: splinalg sparse-linear-algebra1460372 +Ref: bec1460372 +Ref: splinalg doc1460372 +Ref: bed1460372 +Node: Overview<9>1460897 +Ref: splinalg overview1461000 +Ref: bee1461000 +Node: Sparse Iterative Solvers1461626 +Ref: splinalg sparse-iterative-solvers1461750 +Ref: bef1461750 +Node: Overview<10>1461924 +Ref: splinalg id11462040 +Ref: bf01462040 +Node: Types of Sparse Iterative Solvers1462768 +Ref: splinalg types-of-sparse-iterative-solvers1462927 +Ref: bf11462927 +Ref: splinalg c gsl_splinalg_itersolve_type1463096 +Ref: bf21463096 +Ref: splinalg c gsl_splinalg_itersolve_gmres1463135 +Ref: bf31463135 +Node: Iterating the Sparse Linear System1465107 +Ref: splinalg iterating-the-sparse-linear-system1465245 +Ref: bf51465245 +Ref: splinalg c gsl_splinalg_itersolve_alloc1465456 +Ref: bf61465456 +Ref: splinalg c gsl_splinalg_itersolve_free1465980 +Ref: bf71465980 +Ref: splinalg c gsl_splinalg_itersolve_name1466143 +Ref: bf81466143 +Ref: splinalg c gsl_splinalg_itersolve_iterate1466316 +Ref: bf41466316 +Ref: splinalg c gsl_splinalg_itersolve_normr1467432 +Ref: bf91467432 +Node: Examples<35>1467694 +Ref: splinalg examples1467841 +Ref: bfa1467841 +Ref: splinalg fig-splinalg-poisson1468880 +Ref: bfb1468880 +Node: References and Further Reading<37>1472176 +Ref: splinalg references-and-further-reading1472290 +Ref: bfc1472290 +Node: Physical Constants1472673 +Ref: const doc1472801 +Ref: bfd1472801 +Ref: const physical-constants1472801 +Ref: bfe1472801 +Node: Fundamental Constants1474130 +Ref: const fundamental-constants1474242 +Ref: bff1474242 +Ref: const c GSL_CONST_MKSA_SPEED_OF_LIGHT1474297 +Ref: c001474297 +Ref: const c GSL_CONST_MKSA_VACUUM_PERMEABILITY1474378 +Ref: c011474378 +Ref: const c GSL_CONST_MKSA_VACUUM_PERMITTIVITY1474526 +Ref: c021474526 +Ref: const c GSL_CONST_MKSA_PLANCKS_CONSTANT_H1474679 +Ref: c031474679 +Ref: const c GSL_CONST_MKSA_PLANCKS_CONSTANT_HBAR1474755 +Ref: c041474755 +Ref: const c GSL_CONST_NUM_AVOGADRO1474854 +Ref: c051474854 +Ref: const c GSL_CONST_MKSA_FARADAY1474921 +Ref: c061474921 +Ref: const c GSL_CONST_MKSA_BOLTZMANN1474993 +Ref: c071474993 +Ref: const c GSL_CONST_MKSA_MOLAR_GAS1475063 +Ref: c081475063 +Ref: const c GSL_CONST_MKSA_STANDARD_GAS_VOLUME1475135 +Ref: c091475135 +Ref: const c GSL_CONST_MKSA_STEFAN_BOLTZMANN_CONSTANT1475218 +Ref: c0a1475218 +Ref: const c GSL_CONST_MKSA_GAUSS1475326 +Ref: c0b1475326 +Node: Astronomy and Astrophysics1475396 +Ref: const astronomy-and-astrophysics1475543 +Ref: c0c1475543 +Ref: const c GSL_CONST_MKSA_ASTRONOMICAL_UNIT1475608 +Ref: c0d1475608 +Ref: const c GSL_CONST_MKSA_GRAVITATIONAL_CONSTANT1475724 +Ref: c0e1475724 +Ref: const c GSL_CONST_MKSA_LIGHT_YEAR1475811 +Ref: c0f1475811 +Ref: const c GSL_CONST_MKSA_PARSEC1475889 +Ref: c101475889 +Ref: const c GSL_CONST_MKSA_GRAV_ACCEL1475959 +Ref: c111475959 +Ref: const c GSL_CONST_MKSA_SOLAR_MASS1476056 +Ref: c121476056 +Node: Atomic and Nuclear Physics1476121 +Ref: const atomic-and-nuclear-physics1476266 +Ref: c131476266 +Ref: const c GSL_CONST_MKSA_ELECTRON_CHARGE1476331 +Ref: c141476331 +Ref: const c GSL_CONST_MKSA_ELECTRON_VOLT1476411 +Ref: c151476411 +Ref: const c GSL_CONST_MKSA_UNIFIED_ATOMIC_MASS1476493 +Ref: c161476493 +Ref: const c GSL_CONST_MKSA_MASS_ELECTRON1476576 +Ref: c171476576 +Ref: const c GSL_CONST_MKSA_MASS_MUON1476654 +Ref: c181476654 +Ref: const c GSL_CONST_MKSA_MASS_PROTON1476726 +Ref: c191476726 +Ref: const c GSL_CONST_MKSA_MASS_NEUTRON1476800 +Ref: c1a1476800 +Ref: const c GSL_CONST_NUM_FINE_STRUCTURE1476876 +Ref: c1b1476876 +Ref: const c GSL_CONST_MKSA_RYDBERG1476975 +Ref: c1c1476975 +Ref: const c GSL_CONST_MKSA_BOHR_RADIUS1477149 +Ref: c1d1477149 +Ref: const c GSL_CONST_MKSA_ANGSTROM1477216 +Ref: c1e1477216 +Ref: const c GSL_CONST_MKSA_BARN1477284 +Ref: c1f1477284 +Ref: const c GSL_CONST_MKSA_BOHR_MAGNETON1477342 +Ref: c201477342 +Ref: const c GSL_CONST_MKSA_NUCLEAR_MAGNETON1477415 +Ref: c211477415 +Ref: const c GSL_CONST_MKSA_ELECTRON_MAGNETIC_MOMENT1477494 +Ref: c221477494 +Ref: const c GSL_CONST_MKSA_PROTON_MAGNETIC_MOMENT1477681 +Ref: c231477681 +Ref: const c GSL_CONST_MKSA_THOMSON_CROSS_SECTION1477779 +Ref: c241477779 +Ref: const c GSL_CONST_MKSA_DEBYE1477871 +Ref: c251477871 +Node: Measurement of Time1477952 +Ref: const measurement-of-time1478085 +Ref: c261478085 +Ref: const c GSL_CONST_MKSA_MINUTE1478136 +Ref: c271478136 +Ref: const c GSL_CONST_MKSA_HOUR1478211 +Ref: c281478211 +Ref: const c GSL_CONST_MKSA_DAY1478282 +Ref: c291478282 +Ref: const c GSL_CONST_MKSA_WEEK1478351 +Ref: c2a1478351 +Node: Imperial Units1478422 +Ref: const imperial-units1478553 +Ref: c2b1478553 +Ref: const c GSL_CONST_MKSA_INCH1478594 +Ref: c2c1478594 +Ref: const c GSL_CONST_MKSA_FOOT1478654 +Ref: c2d1478654 +Ref: const c GSL_CONST_MKSA_YARD1478714 +Ref: c2e1478714 +Ref: const c GSL_CONST_MKSA_MILE1478774 +Ref: c2f1478774 +Ref: const c GSL_CONST_MKSA_MIL1478834 +Ref: c301478834 +Node: Speed and Nautical Units1478914 +Ref: const speed-and-nautical-units1479040 +Ref: c311479040 +Ref: const c GSL_CONST_MKSA_KILOMETERS_PER_HOUR1479101 +Ref: c321479101 +Ref: const c GSL_CONST_MKSA_MILES_PER_HOUR1479189 +Ref: c331479189 +Ref: const c GSL_CONST_MKSA_NAUTICAL_MILE1479267 +Ref: c341479267 +Ref: const c GSL_CONST_MKSA_FATHOM1479345 +Ref: c351479345 +Ref: const c GSL_CONST_MKSA_KNOT1479409 +Ref: c361479409 +Node: Printers Units1479468 +Ref: const printers-units1479602 +Ref: c371479602 +Ref: const c GSL_CONST_MKSA_POINT1479643 +Ref: c381479643 +Ref: const c GSL_CONST_MKSA_TEXPOINT1479729 +Ref: c391479729 +Node: Volume Area and Length1479813 +Ref: const volume-area-and-length1479938 +Ref: c3a1479938 +Ref: const c GSL_CONST_MKSA_MICRON1479997 +Ref: c3b1479997 +Ref: const c GSL_CONST_MKSA_HECTARE1480061 +Ref: c3c1480061 +Ref: const c GSL_CONST_MKSA_ACRE1480125 +Ref: c3d1480125 +Ref: const c GSL_CONST_MKSA_LITER1480183 +Ref: c3e1480183 +Ref: const c GSL_CONST_MKSA_US_GALLON1480245 +Ref: c3f1480245 +Ref: const c GSL_CONST_MKSA_CANADIAN_GALLON1480315 +Ref: c401480315 +Ref: const c GSL_CONST_MKSA_UK_GALLON1480397 +Ref: c411480397 +Ref: const c GSL_CONST_MKSA_QUART1480467 +Ref: c421480467 +Ref: const c GSL_CONST_MKSA_PINT1480529 +Ref: c431480529 +Node: Mass and Weight1480589 +Ref: const mass-and-weight1480724 +Ref: c441480724 +Ref: const c GSL_CONST_MKSA_POUND_MASS1480767 +Ref: c451480767 +Ref: const c GSL_CONST_MKSA_OUNCE_MASS1480832 +Ref: c461480832 +Ref: const c GSL_CONST_MKSA_TON1480897 +Ref: c471480897 +Ref: const c GSL_CONST_MKSA_METRIC_TON1480953 +Ref: c481480953 +Ref: const c GSL_CONST_MKSA_UK_TON1481033 +Ref: c491481033 +Ref: const c GSL_CONST_MKSA_TROY_OUNCE1481095 +Ref: c4a1481095 +Ref: const c GSL_CONST_MKSA_CARAT1481165 +Ref: c4b1481165 +Ref: const c GSL_CONST_MKSA_GRAM_FORCE1481225 +Ref: c4c1481225 +Ref: const c GSL_CONST_MKSA_POUND_FORCE1481297 +Ref: c4d1481297 +Ref: const c GSL_CONST_MKSA_KILOPOUND_FORCE1481371 +Ref: c4e1481371 +Ref: const c GSL_CONST_MKSA_POUNDAL1481453 +Ref: c4f1481453 +Node: Thermal Energy and Power1481518 +Ref: const thermal-energy-and-power1481639 +Ref: c501481639 +Ref: const c GSL_CONST_MKSA_CALORIE1481702 +Ref: c511481702 +Ref: const c GSL_CONST_MKSA_BTU1481768 +Ref: c521481768 +Ref: const c GSL_CONST_MKSA_THERM1481848 +Ref: c531481848 +Ref: const c GSL_CONST_MKSA_HORSEPOWER1481910 +Ref: c541481910 +Node: Pressure1481981 +Ref: const pressure1482096 +Ref: c551482096 +Ref: const c GSL_CONST_MKSA_BAR1482127 +Ref: c561482127 +Ref: const c GSL_CONST_MKSA_STD_ATMOSPHERE1482187 +Ref: c571482187 +Ref: const c GSL_CONST_MKSA_TORR1482274 +Ref: c581482274 +Ref: const c GSL_CONST_MKSA_METER_OF_MERCURY1482336 +Ref: c591482336 +Ref: const c GSL_CONST_MKSA_INCH_OF_MERCURY1482422 +Ref: c5a1482422 +Ref: const c GSL_CONST_MKSA_INCH_OF_WATER1482506 +Ref: c5b1482506 +Ref: const c GSL_CONST_MKSA_PSI1482586 +Ref: c5c1482586 +Node: Viscosity1482664 +Ref: const viscosity1482777 +Ref: c5d1482777 +Ref: const c GSL_CONST_MKSA_POISE1482810 +Ref: c5e1482810 +Ref: const c GSL_CONST_MKSA_STOKES1482883 +Ref: c5f1482883 +Node: Light and Illumination1482960 +Ref: const light-and-illumination1483078 +Ref: c601483078 +Ref: const c GSL_CONST_MKSA_STILB1483137 +Ref: c611483137 +Ref: const c GSL_CONST_MKSA_LUMEN1483202 +Ref: c621483202 +Ref: const c GSL_CONST_MKSA_LUX1483271 +Ref: c631483271 +Ref: const c GSL_CONST_MKSA_PHOT1483334 +Ref: c641483334 +Ref: const c GSL_CONST_MKSA_FOOTCANDLE1483399 +Ref: c651483399 +Ref: const c GSL_CONST_MKSA_LAMBERT1483476 +Ref: c661483476 +Ref: const c GSL_CONST_MKSA_FOOTLAMBERT1483545 +Ref: c671483545 +Node: Radioactivity1483622 +Ref: const radioactivity1483747 +Ref: c681483747 +Ref: const c GSL_CONST_MKSA_CURIE1483788 +Ref: c691483788 +Ref: const c GSL_CONST_MKSA_ROENTGEN1483852 +Ref: c6a1483852 +Ref: const c GSL_CONST_MKSA_RAD1483922 +Ref: c6b1483922 +Node: Force and Energy1483987 +Ref: const force-and-energy1484098 +Ref: c6c1484098 +Ref: const c GSL_CONST_MKSA_NEWTON1484145 +Ref: c6d1484145 +Ref: const c GSL_CONST_MKSA_DYNE1484217 +Ref: c6e1484217 +Ref: const c GSL_CONST_MKSA_JOULE1484293 +Ref: c6f1484293 +Ref: const c GSL_CONST_MKSA_ERG1484364 +Ref: c701484364 +Node: Prefixes1484435 +Ref: const prefixes1484545 +Ref: c711484545 +Ref: const c GSL_CONST_NUM_YOTTA1484628 +Ref: c721484628 +Ref: const c GSL_CONST_NUM_ZETTA1484674 +Ref: c731484674 +Ref: const c GSL_CONST_NUM_EXA1484720 +Ref: c741484720 +Ref: const c GSL_CONST_NUM_PETA1484764 +Ref: c751484764 +Ref: const c GSL_CONST_NUM_TERA1484809 +Ref: c761484809 +Ref: const c GSL_CONST_NUM_GIGA1484854 +Ref: c771484854 +Ref: const c GSL_CONST_NUM_MEGA1484896 +Ref: c781484896 +Ref: const c GSL_CONST_NUM_KILO1484938 +Ref: c791484938 +Ref: const c GSL_CONST_NUM_MILLI1484980 +Ref: c7a1484980 +Ref: const c GSL_CONST_NUM_MICRO1485026 +Ref: c7b1485026 +Ref: const c GSL_CONST_NUM_NANO1485072 +Ref: c7c1485072 +Ref: const c GSL_CONST_NUM_PICO1485117 +Ref: c7d1485117 +Ref: const c GSL_CONST_NUM_FEMTO1485163 +Ref: c7e1485163 +Ref: const c GSL_CONST_NUM_ATTO1485210 +Ref: c7f1485210 +Ref: const c GSL_CONST_NUM_ZEPTO1485256 +Ref: c801485256 +Ref: const c GSL_CONST_NUM_YOCTO1485303 +Ref: c811485303 +Node: Examples<36>1485350 +Ref: const examples1485478 +Ref: c821485478 +Node: References and Further Reading<38>1487108 +Ref: const references-and-further-reading1487219 +Ref: c831487219 +Node: IEEE floating-point arithmetic1487826 +Ref: ieee754 ieee-floating-point-arithmetic1487961 +Ref: c841487961 +Ref: ieee754 doc1487961 +Ref: c851487961 +Ref: ieee754 chap-ieee1487961 +Ref: c861487961 +Node: Representation of floating point numbers1488446 +Ref: ieee754 representation-of-floating-point-numbers1488595 +Ref: c871488595 +Ref: ieee754 c gsl_ieee_fprintf_float1490624 +Ref: c881490624 +Ref: ieee754 c gsl_ieee_fprintf_double1490709 +Ref: c891490709 +Ref: ieee754 c gsl_ieee_printf_float1491580 +Ref: c8a1491580 +Ref: ieee754 c gsl_ieee_printf_double1491639 +Ref: c8b1491639 +Node: Setting up your IEEE environment1493003 +Ref: ieee754 setting-up-your-ieee-environment1493195 +Ref: c8c1493195 +Ref: ieee754 c GSL_IEEE_MODE1494264 +Ref: c8d1494264 +Ref: ieee754 c gsl_ieee_env_setup1494344 +Ref: c8e1494344 +Node: References and Further Reading<39>1500138 +Ref: ieee754 references-and-further-reading1500281 +Ref: c8f1500281 +Node: Debugging Numerical Programs1501308 +Ref: debug debugging-numerical-programs1501444 +Ref: c901501444 +Ref: debug doc1501444 +Ref: c911501444 +Node: Using gdb1501821 +Ref: debug using-gdb1501939 +Ref: c921501939 +Node: Examining floating point registers1505233 +Ref: debug examining-floating-point-registers1505394 +Ref: c931505394 +Node: Handling floating point exceptions1506536 +Ref: debug handling-floating-point-exceptions1506730 +Ref: c941506730 +Node: GCC warning options for numerical programs1507992 +Ref: debug gcc-warning-options-for-numerical-programs1508186 +Ref: c951508186 +Node: References and Further Reading<40>1512119 +Ref: debug references-and-further-reading1512270 +Ref: c961512270 +Node: Contributors to GSL1512912 +Ref: contrib doc1513033 +Ref: c971513033 +Ref: contrib contributors-to-gsl1513033 +Ref: c981513033 +Node: Autoconf Macros1517508 +Ref: autoconf autoconf-macros1517618 +Ref: c991517618 +Ref: autoconf doc1517618 +Ref: c9a1517618 +Ref: autoconf chap-autoconf-macros1517618 +Ref: 161517618 +Node: GSL CBLAS Library1521688 +Ref: cblas gsl-cblas-library1521805 +Ref: c9b1521805 +Ref: cblas doc1521805 +Ref: c9c1521805 +Ref: cblas chap-cblas1521805 +Ref: 46e1521805 +Node: Level 1<2>1522187 +Ref: cblas level-11522271 +Ref: c9d1522271 +Ref: cblas c cblas_sdsdot1522298 +Ref: c9e1522298 +Ref: cblas c cblas_dsdot1522441 +Ref: c9f1522441 +Ref: cblas c cblas_sdot1522565 +Ref: ca01522565 +Ref: cblas c cblas_ddot1522687 +Ref: ca11522687 +Ref: cblas c cblas_cdotu_sub1522812 +Ref: ca21522812 +Ref: cblas c cblas_cdotc_sub1522949 +Ref: ca31522949 +Ref: cblas c cblas_zdotu_sub1523086 +Ref: ca41523086 +Ref: cblas c cblas_zdotc_sub1523223 +Ref: ca51523223 +Ref: cblas c cblas_snrm21523360 +Ref: ca61523360 +Ref: cblas c cblas_sasum1523450 +Ref: ca71523450 +Ref: cblas c cblas_dnrm21523540 +Ref: ca81523540 +Ref: cblas c cblas_dasum1523632 +Ref: ca91523632 +Ref: cblas c cblas_scnrm21523724 +Ref: caa1523724 +Ref: cblas c cblas_scasum1523814 +Ref: cab1523814 +Ref: cblas c cblas_dznrm21523904 +Ref: cac1523904 +Ref: cblas c cblas_dzasum1523995 +Ref: cad1523995 +Ref: cblas c cblas_isamax1524086 +Ref: cae1524086 +Ref: cblas c cblas_idamax1524183 +Ref: caf1524183 +Ref: cblas c cblas_icamax1524281 +Ref: cb01524281 +Ref: cblas c cblas_izamax1524377 +Ref: cb11524377 +Ref: cblas c cblas_sswap1524473 +Ref: cb21524473 +Ref: cblas c cblas_scopy1524583 +Ref: cb31524583 +Ref: cblas c cblas_saxpy1524699 +Ref: cb41524699 +Ref: cblas c cblas_dswap1524834 +Ref: cb51524834 +Ref: cblas c cblas_dcopy1524946 +Ref: cb61524946 +Ref: cblas c cblas_daxpy1525064 +Ref: cb71525064 +Ref: cblas c cblas_cswap1525202 +Ref: cb81525202 +Ref: cblas c cblas_ccopy1525310 +Ref: cb91525310 +Ref: cblas c cblas_caxpy1525424 +Ref: cba1525424 +Ref: cblas c cblas_zswap1525558 +Ref: cbb1525558 +Ref: cblas c cblas_zcopy1525666 +Ref: cbc1525666 +Ref: cblas c cblas_zaxpy1525780 +Ref: cbd1525780 +Ref: cblas c cblas_srotg1525914 +Ref: cbe1525914 +Ref: cblas c cblas_srotmg1526001 +Ref: cbf1526001 +Ref: cblas c cblas_srot1526108 +Ref: cc01526108 +Ref: cblas c cblas_srotm1526247 +Ref: cc11526247 +Ref: cblas c cblas_drotg1526374 +Ref: cc21526374 +Ref: cblas c cblas_drotmg1526465 +Ref: cc31526465 +Ref: cblas c cblas_drot1526577 +Ref: cc41526577 +Ref: cblas c cblas_drotm1526720 +Ref: cc51526720 +Ref: cblas c cblas_sscal1526850 +Ref: cc61526850 +Ref: cblas c cblas_dscal1526952 +Ref: cc71526952 +Ref: cblas c cblas_cscal1527056 +Ref: cc81527056 +Ref: cblas c cblas_zscal1527158 +Ref: cc91527158 +Ref: cblas c cblas_csscal1527260 +Ref: cca1527260 +Ref: cblas c cblas_zdscal1527362 +Ref: ccb1527362 +Node: Level 2<2>1527465 +Ref: cblas level-21527568 +Ref: ccc1527568 +Ref: cblas c cblas_sgemv1527595 +Ref: ccd1527595 +Ref: cblas c cblas_sgbmv1527878 +Ref: cce1527878 +Ref: cblas c cblas_strmv1528199 +Ref: ccf1528199 +Ref: cblas c cblas_stbmv1528455 +Ref: cd01528455 +Ref: cblas c cblas_stpmv1528724 +Ref: cd11528724 +Ref: cblas c cblas_strsv1528966 +Ref: cd21528966 +Ref: cblas c cblas_stbsv1529222 +Ref: cd31529222 +Ref: cblas c cblas_stpsv1529491 +Ref: cd41529491 +Ref: cblas c cblas_dgemv1529733 +Ref: cd51529733 +Ref: cblas c cblas_dgbmv1530031 +Ref: cd61530031 +Ref: cblas c cblas_dtrmv1530357 +Ref: cd71530357 +Ref: cblas c cblas_dtbmv1530615 +Ref: cd81530615 +Ref: cblas c cblas_dtpmv1530886 +Ref: cd91530886 +Ref: cblas c cblas_dtrsv1531130 +Ref: cda1531130 +Ref: cblas c cblas_dtbsv1531388 +Ref: cdb1531388 +Ref: cblas c cblas_dtpsv1531659 +Ref: cdc1531659 +Ref: cblas c cblas_cgemv1531903 +Ref: cdd1531903 +Ref: cblas c cblas_cgbmv1532185 +Ref: cde1532185 +Ref: cblas c cblas_ctrmv1532505 +Ref: cdf1532505 +Ref: cblas c cblas_ctbmv1532759 +Ref: ce01532759 +Ref: cblas c cblas_ctpmv1533026 +Ref: ce11533026 +Ref: cblas c cblas_ctrsv1533266 +Ref: ce21533266 +Ref: cblas c cblas_ctbsv1533520 +Ref: ce31533520 +Ref: cblas c cblas_ctpsv1533787 +Ref: ce41533787 +Ref: cblas c cblas_zgemv1534027 +Ref: ce51534027 +Ref: cblas c cblas_zgbmv1534309 +Ref: ce61534309 +Ref: cblas c cblas_ztrmv1534629 +Ref: ce71534629 +Ref: cblas c cblas_ztbmv1534883 +Ref: ce81534883 +Ref: cblas c cblas_ztpmv1535150 +Ref: ce91535150 +Ref: cblas c cblas_ztrsv1535390 +Ref: cea1535390 +Ref: cblas c cblas_ztbsv1535644 +Ref: ceb1535644 +Ref: cblas c cblas_ztpsv1535911 +Ref: cec1535911 +Ref: cblas c cblas_ssymv1536151 +Ref: ced1536151 +Ref: cblas c cblas_ssbmv1536414 +Ref: cee1536414 +Ref: cblas c cblas_sspmv1536690 +Ref: cef1536690 +Ref: cblas c cblas_sger1536939 +Ref: cf01536939 +Ref: cblas c cblas_ssyr1537168 +Ref: cf11537168 +Ref: cblas c cblas_sspr1537369 +Ref: cf21537369 +Ref: cblas c cblas_ssyr21537556 +Ref: cf31537556 +Ref: cblas c cblas_sspr21537801 +Ref: cf41537801 +Ref: cblas c cblas_dsymv1538031 +Ref: cf51538031 +Ref: cblas c cblas_dsbmv1538299 +Ref: cf61538299 +Ref: cblas c cblas_dspmv1538580 +Ref: cf71538580 +Ref: cblas c cblas_dger1538834 +Ref: cf81538834 +Ref: cblas c cblas_dsyr1539067 +Ref: cf91539067 +Ref: cblas c cblas_dspr1539271 +Ref: cfa1539271 +Ref: cblas c cblas_dsyr21539461 +Ref: cfb1539461 +Ref: cblas c cblas_dspr21539710 +Ref: cfc1539710 +Ref: cblas c cblas_chemv1539944 +Ref: cfd1539944 +Ref: cblas c cblas_chbmv1540206 +Ref: cfe1540206 +Ref: cblas c cblas_chpmv1540481 +Ref: cff1540481 +Ref: cblas c cblas_cgeru1540729 +Ref: d001540729 +Ref: cblas c cblas_cgerc1540957 +Ref: d011540957 +Ref: cblas c cblas_cher1541185 +Ref: d021541185 +Ref: cblas c cblas_chpr1541384 +Ref: d031541384 +Ref: cblas c cblas_cher21541568 +Ref: d041541568 +Ref: cblas c cblas_chpr21541811 +Ref: d051541811 +Ref: cblas c cblas_zhemv1542040 +Ref: d061542040 +Ref: cblas c cblas_zhbmv1542302 +Ref: d071542302 +Ref: cblas c cblas_zhpmv1542577 +Ref: d081542577 +Ref: cblas c cblas_zgeru1542825 +Ref: d091542825 +Ref: cblas c cblas_zgerc1543053 +Ref: d0a1543053 +Ref: cblas c cblas_zher1543281 +Ref: d0b1543281 +Ref: cblas c cblas_zhpr1543481 +Ref: d0c1543481 +Ref: cblas c cblas_zher21543666 +Ref: d0d1543666 +Ref: cblas c cblas_zhpr21543909 +Ref: d0e1543909 +Node: Level 3<2>1544138 +Ref: cblas level-31544243 +Ref: d0f1544243 +Ref: cblas c cblas_sgemm1544270 +Ref: d101544270 +Ref: cblas c cblas_ssymm1544609 +Ref: d111544609 +Ref: cblas c cblas_ssyrk1544921 +Ref: d121544921 +Ref: cblas c cblas_ssyr2k1545197 +Ref: d131545197 +Ref: cblas c cblas_strmm1545516 +Ref: d141545516 +Ref: cblas c cblas_strsm1545841 +Ref: d151545841 +Ref: cblas c cblas_dgemm1546166 +Ref: d161546166 +Ref: cblas c cblas_dsymm1546510 +Ref: d171546510 +Ref: cblas c cblas_dsyrk1546827 +Ref: d181546827 +Ref: cblas c cblas_dsyr2k1547107 +Ref: d191547107 +Ref: cblas c cblas_dtrmm1547431 +Ref: d1a1547431 +Ref: cblas c cblas_dtrsm1547759 +Ref: d1b1547759 +Ref: cblas c cblas_cgemm1548087 +Ref: d1c1548087 +Ref: cblas c cblas_csymm1548425 +Ref: d1d1548425 +Ref: cblas c cblas_csyrk1548736 +Ref: d1e1548736 +Ref: cblas c cblas_csyr2k1549012 +Ref: d1f1549012 +Ref: cblas c cblas_ctrmm1549330 +Ref: d201549330 +Ref: cblas c cblas_ctrsm1549654 +Ref: d211549654 +Ref: cblas c cblas_zgemm1549978 +Ref: d221549978 +Ref: cblas c cblas_zsymm1550316 +Ref: d231550316 +Ref: cblas c cblas_zsyrk1550627 +Ref: d241550627 +Ref: cblas c cblas_zsyr2k1550903 +Ref: d251550903 +Ref: cblas c cblas_ztrmm1551221 +Ref: d261551221 +Ref: cblas c cblas_ztrsm1551545 +Ref: d271551545 +Ref: cblas c cblas_chemm1551869 +Ref: d281551869 +Ref: cblas c cblas_cherk1552180 +Ref: d291552180 +Ref: cblas c cblas_cher2k1552454 +Ref: d2a1552454 +Ref: cblas c cblas_zhemm1552771 +Ref: d2b1552771 +Ref: cblas c cblas_zherk1553082 +Ref: d2c1553082 +Ref: cblas c cblas_zher2k1553358 +Ref: d2d1553358 +Ref: cblas c cblas_xerbla1553676 +Ref: d2e1553676 +Node: Examples<37>1553770 +Ref: cblas examples1553856 +Ref: d2f1553856 +Node: GNU General Public License1555321 +Ref: gpl gnu-general-public-license1555453 +Ref: d301555453 +Ref: gpl doc1555453 +Ref: d311555453 +Node: GNU Free Documentation License1593427 +Ref: fdl doc1593547 +Ref: d321593547 +Ref: fdl gnu-free-documentation-license1593547 +Ref: d331593547 +Node: Index1618450 + +End Tag Table + + +Local Variables: +coding: utf-8 +End: diff --git a/gsl-2.5/doc/gsl.3 b/gsl-2.5/doc/gsl.3 new file mode 100644 index 00000000..1f82292a --- /dev/null +++ b/gsl-2.5/doc/gsl.3 @@ -0,0 +1,58 @@ +.TH GSL 3 "GNU Scientific Library" "GSL Team" \" -*- nroff -*- +.SH NAME +gsl - GNU Scientific Library +.SH SYNOPSIS +#include +.SH DESCRIPTION +The GNU Scientific Library (GSL) is a collection of routines for +numerical computing. The routines are written from scratch by the GSL +team in C, and present a modern Applications Programming Interface +(API) for C programmers, allowing wrappers to be written for very high +level languages. +.PP +The library covers the following areas, +.TP +.nf +.BR +Complex Numbers +Roots of Polynomials +Special Functions +Vectors and Matrices +Permutations +Combinations +Sorting +BLAS Support +Linear Algebra +Eigensystems +Fast Fourier Transforms +Quadrature +Random Numbers +Quasi-Random Sequences +Random Distributions +Statistics +Histograms +N-Tuples +Monte Carlo Integration +Simulated Annealing +Differential Equations +Interpolation +Numerical Differentiation +Chebyshev Approximations +Series Acceleration +Discrete Hankel Transforms +Root-Finding +Minimization +Least-Squares Fitting +Physical Constants +IEEE Floating-Point +.fi +.PP +For more information please consult the GSL Reference Manual, which is +available as an info file. You can read it online using the shell +command +.B info gsl-ref +(if the library is installed). +.PP +Please report any bugs to +.B bug-gsl@gnu.org. + diff --git a/gsl-2.5/doc/histogram.rst b/gsl-2.5/doc/histogram.rst new file mode 100644 index 00000000..44a63a3b --- /dev/null +++ b/gsl-2.5/doc/histogram.rst @@ -0,0 +1,1123 @@ +.. index:: + single: histograms + single: binning data + +********** +Histograms +********** + +This chapter describes functions for creating histograms. Histograms +provide a convenient way of summarizing the distribution of a set of +data. A histogram consists of a set of *bins* which count the number +of events falling into a given range of a continuous variable :math:`x`. +In GSL the bins of a histogram contain floating-point numbers, so they +can be used to record both integer and non-integer distributions. The +bins can use arbitrary sets of ranges (uniformly spaced bins are the +default). Both one and two-dimensional histograms are supported. + +Once a histogram has been created it can also be converted into a +probability distribution function. The library provides efficient +routines for selecting random samples from probability distributions. +This can be useful for generating simulations based on real data. + +The functions are declared in the header files :file:`gsl_histogram.h` +and :file:`gsl_histogram2d.h`. + +The histogram struct +==================== + +A histogram is defined by the following struct, + +.. type:: gsl_histogram + + ============================= ============================================================================ + size_t n This is the number of histogram bins + double * range The ranges of the bins are stored in an array of :code:`n+1` elements + pointed to by range. + double * bin The counts for each bin are stored in an array of :data:`n` elements + pointed to by :data:`bin`. The bins are floating-point numbers, so you can + increment them by non-integer values if necessary. + ============================= ============================================================================ + + The range for :code:`bin[i]` is given by :code:`range[i]` to + :code:`range[i+1]`. For :math:`n` bins there are :code:`n+1` entries in the + array :data:`range`. Each bin is inclusive at the lower end and exclusive + at the upper end. Mathematically this means that the bins are defined by + the following inequality, + + .. only:: not texinfo + + .. math:: \hbox{bin[i] corresponds to range[i]} \le x < \hbox{range[i+1]} + + .. only:: texinfo + + :: + + bin[i] corresponds to range[i] <= x < range[i+1] + + Here is a diagram of the correspondence between ranges and bins on the + number-line for :math:`x`:: + + [ bin[0] )[ bin[1] )[ bin[2] )[ bin[3] )[ bin[4] ) + ---|---------|---------|---------|---------|---------|--- x + r[0] r[1] r[2] r[3] r[4] r[5] + + In this picture the values of the :data:`range` array are denoted by + :math:`r`. On the left-hand side of each bin the square bracket + :code:`[` denotes an inclusive lower bound + (:math:`r \le x`), + and the round parentheses :code:`)` on the right-hand + side denote an exclusive upper bound (:math:`x < r`). Thus any samples + which fall on the upper end of the histogram are excluded. If you want + to include this value for the last bin you will need to add an extra bin + to your histogram. + + The :type:`gsl_histogram` struct and its associated functions are defined + in the header file :file:`gsl_histogram.h`. + +Histogram allocation +==================== + +The functions for allocating memory to a histogram follow the style of +:func:`malloc` and :func:`free`. In addition they also perform their own +error checking. If there is insufficient memory available to allocate a +histogram then the functions call the error handler (with an error +number of :macro:`GSL_ENOMEM`) in addition to returning a null pointer. +Thus if you use the library error handler to abort your program then it +isn't necessary to check every histogram :code:`alloc`. + +.. function:: gsl_histogram * gsl_histogram_alloc (size_t n) + + This function allocates memory for a histogram with :data:`n` bins, and + returns a pointer to a newly created :type:`gsl_histogram` struct. If + insufficient memory is available a null pointer is returned and the + error handler is invoked with an error code of :macro:`GSL_ENOMEM`. The + bins and ranges are not initialized, and should be prepared using one of + the range-setting functions below in order to make the histogram ready + for use. + +.. @deftypefun {gsl_histogram *} gsl_histogram_calloc (size_t n) +.. This function allocates memory for a histogram with :data:`n` bins, and +.. returns a pointer to its newly initialized :type:`gsl_histogram` struct. +.. The bins are uniformly spaced with a total range of +.. @c{$0 \le x < n$} +.. @math{0 <= x < n}, +.. as shown in the table below. + +.. @tex +.. \beforedisplay +.. $$ +.. \matrix{ +.. \hbox{bin[0]}&\hbox{corresponds to}& 0 \le x < 1\cr +.. \hbox{bin[1]}&\hbox{corresponds to}& 1 \le x < 2\cr +.. \dots&\dots&\dots\cr +.. \hbox{bin[n-1]}&\hbox{corresponds to}&n-1 \le x < n} +.. $$ +.. \afterdisplay +.. @end tex +.. @ifinfo +.. @display +.. bin[0] corresponds to 0 <= x < 1 +.. bin[1] corresponds to 1 <= x < 2 +.. @dots{} +.. bin[n-1] corresponds to n-1 <= x < n +.. @end display +.. @end ifinfo +.. @noindent +.. The bins are initialized to zero so the histogram is ready for use. + +.. If insufficient memory is available a null pointer is returned and the +.. error handler is invoked with an error code of :macro:`GSL_ENOMEM`. +.. @end deftypefun + +.. @deftypefun {gsl_histogram *} gsl_histogram_calloc_uniform (size_t n, double xmin, double xmax) +.. This function allocates memory for a histogram with :data:`n` uniformly +.. spaced bins from :data:`xmin` to :data:`xmax`, and returns a pointer to the +.. newly initialized :type:`gsl_histogram` struct. +.. If insufficient memory is available a null pointer is returned and the +.. error handler is invoked with an error code of :macro:`GSL_ENOMEM`. +.. @end deftypefun + +.. @deftypefun {gsl_histogram *} gsl_histogram_calloc_range (size_t n, double * range) +.. This function allocates a histogram of size :data:`n` using the @math{n+1} +.. bin ranges specified by the array :data:`range`. +.. @end deftypefun + +.. function:: int gsl_histogram_set_ranges (gsl_histogram * h, const double range[], size_t size) + + This function sets the ranges of the existing histogram :data:`h` using + the array :data:`range` of size :data:`size`. The values of the histogram + bins are reset to zero. The :data:`range` array should contain the + desired bin limits. The ranges can be arbitrary, subject to the + restriction that they are monotonically increasing. + + The following example shows how to create a histogram with logarithmic + bins with ranges [1,10), [10,100) and [100,1000):: + + gsl_histogram * h = gsl_histogram_alloc (3); + + /* bin[0] covers the range 1 <= x < 10 */ + /* bin[1] covers the range 10 <= x < 100 */ + /* bin[2] covers the range 100 <= x < 1000 */ + + double range[4] = { 1.0, 10.0, 100.0, 1000.0 }; + + gsl_histogram_set_ranges (h, range, 4); + + Note that the size of the :data:`range` array should be defined to be one + element bigger than the number of bins. The additional element is + required for the upper value of the final bin. + +.. function:: int gsl_histogram_set_ranges_uniform (gsl_histogram * h, double xmin, double xmax) + + This function sets the ranges of the existing histogram :data:`h` to cover + the range :data:`xmin` to :data:`xmax` uniformly. The values of the + histogram bins are reset to zero. The bin ranges are shown in the table + below, + + .. only:: not texinfo + + .. math:: + + \begin{array}{ccc} + \hbox{bin[0]}&\hbox{corresponds to}& xmin \le x < xmin + d \\ + \hbox{bin[1]} &\hbox{corresponds to}& xmin + d \le x < xmin + 2 d \\ + \dots&\dots&\dots \\ + \hbox{bin[n-1]} & \hbox{corresponds to}& xmin + (n-1)d \le x < xmax + \end{array} + + .. only:: texinfo + + :: + + bin[0] corresponds to xmin <= x < xmin + d + bin[1] corresponds to xmin + d <= x < xmin + 2 d + ...... + bin[n-1] corresponds to xmin + (n-1)d <= x < xmax + + where :math:`d` is the bin spacing, :math:`d = (xmax-xmin)/n`. + +.. function:: void gsl_histogram_free (gsl_histogram * h) + + This function frees the histogram :data:`h` and all of the memory + associated with it. + +Copying Histograms +================== + +.. function:: int gsl_histogram_memcpy (gsl_histogram * dest, const gsl_histogram * src) + + This function copies the histogram :data:`src` into the pre-existing + histogram :data:`dest`, making :data:`dest` into an exact copy of :data:`src`. + The two histograms must be of the same size. + +.. function:: gsl_histogram * gsl_histogram_clone (const gsl_histogram * src) + + This function returns a pointer to a newly created histogram which is an + exact copy of the histogram :data:`src`. + +Updating and accessing histogram elements +========================================= + +There are two ways to access histogram bins, either by specifying an +:math:`x` coordinate or by using the bin-index directly. The functions +for accessing the histogram through :math:`x` coordinates use a binary +search to identify the bin which covers the appropriate range. + +.. function:: int gsl_histogram_increment (gsl_histogram * h, double x) + + This function updates the histogram :data:`h` by adding one (1.0) to the + bin whose range contains the coordinate :data:`x`. + + If :data:`x` lies in the valid range of the histogram then the function + returns zero to indicate success. If :data:`x` is less than the lower + limit of the histogram then the function returns :macro:`GSL_EDOM`, and + none of bins are modified. Similarly, if the value of :data:`x` is greater + than or equal to the upper limit of the histogram then the function + returns :macro:`GSL_EDOM`, and none of the bins are modified. The error + handler is not called, however, since it is often necessary to compute + histograms for a small range of a larger dataset, ignoring the values + outside the range of interest. + +.. function:: int gsl_histogram_accumulate (gsl_histogram * h, double x, double weight) + + This function is similar to :func:`gsl_histogram_increment` but increases + the value of the appropriate bin in the histogram :data:`h` by the + floating-point number :data:`weight`. + +.. function:: double gsl_histogram_get (const gsl_histogram * h, size_t i) + + This function returns the contents of the :data:`i`-th bin of the histogram + :data:`h`. If :data:`i` lies outside the valid range of indices for the + histogram then the error handler is called with an error code of + :macro:`GSL_EDOM` and the function returns 0. + +.. function:: int gsl_histogram_get_range (const gsl_histogram * h, size_t i, double * lower, double * upper) + + This function finds the upper and lower range limits of the :data:`i`-th + bin of the histogram :data:`h`. If the index :data:`i` is valid then the + corresponding range limits are stored in :data:`lower` and :data:`upper`. + The lower limit is inclusive (i.e. events with this coordinate are + included in the bin) and the upper limit is exclusive (i.e. events with + the coordinate of the upper limit are excluded and fall in the + neighboring higher bin, if it exists). The function returns 0 to + indicate success. If :data:`i` lies outside the valid range of indices for + the histogram then the error handler is called and the function returns + an error code of :macro:`GSL_EDOM`. + +.. function:: double gsl_histogram_max (const gsl_histogram * h) + double gsl_histogram_min (const gsl_histogram * h) + size_t gsl_histogram_bins (const gsl_histogram * h) + + These functions return the maximum upper and minimum lower range limits + and the number of bins of the histogram :data:`h`. They provide a way of + determining these values without accessing the :type:`gsl_histogram` + struct directly. + +.. function:: void gsl_histogram_reset (gsl_histogram * h) + + This function resets all the bins in the histogram :data:`h` to zero. + +Searching histogram ranges +========================== + +The following functions are used by the access and update routines to +locate the bin which corresponds to a given :math:`x` coordinate. + +.. function:: int gsl_histogram_find (const gsl_histogram * h, double x, size_t * i) + + This function finds and sets the index :data:`i` to the bin number which + covers the coordinate :data:`x` in the histogram :data:`h`. The bin is + located using a binary search. The search includes an optimization for + histograms with uniform range, and will return the correct bin + immediately in this case. If :data:`x` is found in the range of the + histogram then the function sets the index :data:`i` and returns + :macro:`GSL_SUCCESS`. If :data:`x` lies outside the valid range of the + histogram then the function returns :macro:`GSL_EDOM` and the error + handler is invoked. + +.. index:: + single: histogram statistics + single: statistics, from histogram + single: maximum value, from histogram + single: minimum value, from histogram + +Histogram Statistics +==================== + +.. function:: double gsl_histogram_max_val (const gsl_histogram * h) + + This function returns the maximum value contained in the histogram bins. + +.. function:: size_t gsl_histogram_max_bin (const gsl_histogram * h) + + This function returns the index of the bin containing the maximum + value. In the case where several bins contain the same maximum value the + smallest index is returned. + +.. function:: double gsl_histogram_min_val (const gsl_histogram * h) + + This function returns the minimum value contained in the histogram bins. + +.. function:: size_t gsl_histogram_min_bin (const gsl_histogram * h) + + This function returns the index of the bin containing the minimum + value. In the case where several bins contain the same maximum value the + smallest index is returned. + +.. index:: + single: mean value, from histogram + +.. function:: double gsl_histogram_mean (const gsl_histogram * h) + + This function returns the mean of the histogrammed variable, where the + histogram is regarded as a probability distribution. Negative bin values + are ignored for the purposes of this calculation. The accuracy of the + result is limited by the bin width. + +.. index:: + single: standard deviation, from histogram + single: variance, from histogram + +.. function:: double gsl_histogram_sigma (const gsl_histogram * h) + + This function returns the standard deviation of the histogrammed + variable, where the histogram is regarded as a probability + distribution. Negative bin values are ignored for the purposes of this + calculation. The accuracy of the result is limited by the bin width. + +.. function:: double gsl_histogram_sum (const gsl_histogram * h) + + This function returns the sum of all bin values. Negative bin values + are included in the sum. + +Histogram Operations +==================== + +.. function:: int gsl_histogram_equal_bins_p (const gsl_histogram * h1, const gsl_histogram * h2) + + This function returns 1 if the all of the individual bin + ranges of the two histograms are identical, and 0 + otherwise. + +.. function:: int gsl_histogram_add (gsl_histogram * h1, const gsl_histogram * h2) + + This function adds the contents of the bins in histogram :data:`h2` to the + corresponding bins of histogram :data:`h1`, i.e. :math:`h'_1(i) = h_1(i) + h_2(i)`. + The two histograms must have identical bin ranges. + +.. function:: int gsl_histogram_sub (gsl_histogram * h1, const gsl_histogram * h2) + + This function subtracts the contents of the bins in histogram :data:`h2` + from the corresponding bins of histogram :data:`h1`, i.e. :math:`h'_1(i) = h_1(i) - h_2(i)`. + The two histograms must have identical bin ranges. + +.. function:: int gsl_histogram_mul (gsl_histogram * h1, const gsl_histogram * h2) + + This function multiplies the contents of the bins of histogram :data:`h1` + by the contents of the corresponding bins in histogram :data:`h2`, + i.e. :math:`h'_1(i) = h_1(i) * h_2(i)`. The two histograms must have + identical bin ranges. + +.. function:: int gsl_histogram_div (gsl_histogram * h1, const gsl_histogram * h2) + + This function divides the contents of the bins of histogram :data:`h1` by + the contents of the corresponding bins in histogram :data:`h2`, + i.e. :math:`h'_1(i) = h_1(i) / h_2(i)`. The two histograms must have + identical bin ranges. + +.. function:: int gsl_histogram_scale (gsl_histogram * h, double scale) + + This function multiplies the contents of the bins of histogram :data:`h` + by the constant :data:`scale`, i.e. + + .. only:: not texinfo + + .. math:: h'_1(i) = h_1(i) * \hbox{\it scale} + + .. only:: texinfo + + :: + + h'_1(i) = h_1(i) * scale + +.. function:: int gsl_histogram_shift (gsl_histogram * h, double offset) + + This function shifts the contents of the bins of histogram :data:`h` by + the constant :data:`offset`, i.e. + + .. only:: not texinfo + + .. math:: h'_1(i) = h_1(i) + \hbox{\it offset} + + .. only:: texinfo + + :: + + h'_1(i) = h_1(i) + offset + +Reading and writing histograms +============================== + +The library provides functions for reading and writing histograms to a file +as binary data or formatted text. + +.. function:: int gsl_histogram_fwrite (FILE * stream, const gsl_histogram * h) + + This function writes the ranges and bins of the histogram :data:`h` to the + stream :data:`stream` in binary format. The return value is 0 for success + and :macro:`GSL_EFAILED` if there was a problem writing to the file. Since + the data is written in the native binary format it may not be portable + between different architectures. + +.. function:: int gsl_histogram_fread (FILE * stream, gsl_histogram * h) + + This function reads into the histogram :data:`h` from the open stream + :data:`stream` in binary format. The histogram :data:`h` must be + preallocated with the correct size since the function uses the number of + bins in :data:`h` to determine how many bytes to read. The return value is + 0 for success and :macro:`GSL_EFAILED` if there was a problem reading from + the file. The data is assumed to have been written in the native binary + format on the same architecture. + +.. function:: int gsl_histogram_fprintf (FILE * stream, const gsl_histogram * h, const char * range_format, const char * bin_format) + + This function writes the ranges and bins of the histogram :data:`h` + line-by-line to the stream :data:`stream` using the format specifiers + :data:`range_format` and :data:`bin_format`. These should be one of the + :code:`%g`, :code:`%e` or :code:`%f` formats for floating point + numbers. The function returns 0 for success and :macro:`GSL_EFAILED` if + there was a problem writing to the file. The histogram output is + formatted in three columns, and the columns are separated by spaces, + like this:: + + range[0] range[1] bin[0] + range[1] range[2] bin[1] + range[2] range[3] bin[2] + .... + range[n-1] range[n] bin[n-1] + + The values of the ranges are formatted using :data:`range_format` and the + value of the bins are formatted using :data:`bin_format`. Each line + contains the lower and upper limit of the range of the bins and the + value of the bin itself. Since the upper limit of one bin is the lower + limit of the next there is duplication of these values between lines but + this allows the histogram to be manipulated with line-oriented tools. + +.. function:: int gsl_histogram_fscanf (FILE * stream, gsl_histogram * h) + + This function reads formatted data from the stream :data:`stream` into the + histogram :data:`h`. The data is assumed to be in the three-column format + used by :func:`gsl_histogram_fprintf`. The histogram :data:`h` must be + preallocated with the correct length since the function uses the size of + :data:`h` to determine how many numbers to read. The function returns 0 + for success and :macro:`GSL_EFAILED` if there was a problem reading from + the file. + +.. index:: + single: resampling from histograms + single: sampling from histograms + single: probability distributions, from histograms + +Resampling from histograms +========================== + +A histogram made by counting events can be regarded as a measurement of +a probability distribution. Allowing for statistical error, the height +of each bin represents the probability of an event where the value of +:math:`x` falls in the range of that bin. The probability distribution +function has the one-dimensional form :math:`p(x)dx` where, + +.. math:: p(x) = n_i / (N w_i) + +In this equation :math:`n_i` is the number of events in the bin which +contains :math:`x`, :math:`w_i` is the width of the bin and :math:`N` is +the total number of events. The distribution of events within each bin +is assumed to be uniform. + +.. index:: + single: probability distribution, from histogram + single: sampling from histograms + single: random sampling from histograms + single: histograms, random sampling from + +The histogram probability distribution struct +============================================= + +The probability distribution function for a histogram consists of a set +of *bins* which measure the probability of an event falling into a +given range of a continuous variable :math:`x`. A probability +distribution function is defined by the following struct, which actually +stores the cumulative probability distribution function. This is the +natural quantity for generating samples via the inverse transform +method, because there is a one-to-one mapping between the cumulative +probability distribution and the range [0,1]. It can be shown that by +taking a uniform random number in this range and finding its +corresponding coordinate in the cumulative probability distribution we +obtain samples with the desired probability distribution. + +.. type:: gsl_histogram_pdf + + ================================ ======================================================================= + :code:`size_t n` This is the number of bins used to approximate the probability + distribution function. + :code:`double * range` The ranges of the bins are stored in an array of :math:`n + 1` + elements pointed to by :data:`range`. + :code:`double * sum` The cumulative probability for the bins is stored in an array of + :data:`n` elements pointed to by :data:`sum`. + ================================ ======================================================================= + +The following functions allow you to create a :type:`gsl_histogram_pdf` +struct which represents this probability distribution and generate +random samples from it. + +.. function:: gsl_histogram_pdf * gsl_histogram_pdf_alloc (size_t n) + + This function allocates memory for a probability distribution with + :data:`n` bins and returns a pointer to a newly initialized + :type:`gsl_histogram_pdf` struct. If insufficient memory is available a + null pointer is returned and the error handler is invoked with an error + code of :macro:`GSL_ENOMEM`. + +.. function:: int gsl_histogram_pdf_init (gsl_histogram_pdf * p, const gsl_histogram * h) + + This function initializes the probability distribution :data:`p` with + the contents of the histogram :data:`h`. If any of the bins of :data:`h` are + negative then the error handler is invoked with an error code of + :macro:`GSL_EDOM` because a probability distribution cannot contain + negative values. + +.. function:: void gsl_histogram_pdf_free (gsl_histogram_pdf * p) + + This function frees the probability distribution function :data:`p` and + all of the memory associated with it. + +.. function:: double gsl_histogram_pdf_sample (const gsl_histogram_pdf * p, double r) + + This function uses :data:`r`, a uniform random number between zero and + one, to compute a single random sample from the probability distribution + :data:`p`. The algorithm used to compute the sample :math:`s` is given by + the following formula, + + .. only:: not texinfo + + .. math:: s = \hbox{range}[i] + \delta * (\hbox{range}[i+1] - \hbox{range}[i]) + + .. only:: texinfo + + :: + + s = range[i] + delta * (range[i+1] - range[i]) + + where :math:`i` is the index which satisfies + :math:`sum[i] \le r < sum[i+1]` + and :math:`delta` is + :math:`(r - sum[i])/(sum[i+1] - sum[i])`. + +Example programs for histograms +=============================== + +The following program shows how to make a simple histogram of a column +of numerical data supplied on :code:`stdin`. The program takes three +arguments, specifying the upper and lower bounds of the histogram and +the number of bins. It then reads numbers from :code:`stdin`, one line at +a time, and adds them to the histogram. When there is no more data to +read it prints out the accumulated histogram using +:func:`gsl_histogram_fprintf`. + +.. include:: examples/histogram.c + :code: + +Here is an example of the program in use. We generate 10000 random +samples from a Cauchy distribution with a width of 30 and histogram +them over the range -100 to 100, using 200 bins:: + + $ gsl-randist 0 10000 cauchy 30 + | gsl-histogram -- -100 100 200 > histogram.dat + +:numref:`fig_histogram` shows the familiar shape of the +Cauchy distribution and the fluctuations caused by the finite sample +size. + +.. _fig_histogram: + +.. figure:: /images/histogram.png + :scale: 60% + + Histogram output from example program + +.. index:: + single: two dimensional histograms + single: 2D histograms + +Two dimensional histograms +========================== + +A two dimensional histogram consists of a set of *bins* which count +the number of events falling in a given area of the :math:`(x,y)` +plane. The simplest way to use a two dimensional histogram is to record +two-dimensional position information, :math:`n(x,y)`. Another possibility +is to form a *joint distribution* by recording related +variables. For example a detector might record both the position of an +event (:math:`x`) and the amount of energy it deposited :math:`E`. These +could be histogrammed as the joint distribution :math:`n(x,E)`. + +The 2D histogram struct +======================= + +Two dimensional histograms are defined by the following struct, + +.. type:: gsl_histogram2d + + =========================== ============================================================================ + :code:`size_t nx, ny` This is the number of histogram bins in the x and y directions. + :code:`double * xrange` The ranges of the bins in the x-direction are stored in an array of + :code:`nx + 1` elements pointed to by :data:`xrange`. + :code:`double * yrange` The ranges of the bins in the y-direction are stored in an array of + :code:`ny + 1` elements pointed to by :data:`yrange`. + :code:`double * bin` The counts for each bin are stored in an array pointed to by :data:`bin`. + The bins are floating-point numbers, so you can increment them by + non-integer values if necessary. The array :data:`bin` stores the two + dimensional array of bins in a single block of memory according to the + mapping :code:`bin(i,j)` = :code:`bin[i * ny + j]`. + =========================== ============================================================================ + +The range for :code:`bin(i,j)` is given by :code:`xrange[i]` to +:code:`xrange[i+1]` in the x-direction and :code:`yrange[j]` to +:code:`yrange[j+1]` in the y-direction. Each bin is inclusive at the lower +end and exclusive at the upper end. Mathematically this means that the +bins are defined by the following inequality, + +.. only:: not texinfo + + .. math:: + + \begin{array}{cc} + \hbox{bin(i,j) corresponds to} & \hbox{\it xrange}[i] \le x < \hbox{\it xrange}[i+1] \\ + \hbox{and} & \hbox{\it yrange}[j] \le y < \hbox{\it yrange}[j+1] + \end{array} + +.. only:: texinfo + + :: + + bin(i,j) corresponds to xrange[i] <= x < xrange[i+1] + and yrange[j] <= y < yrange[j+1] + +Note that any samples which fall on the upper sides of the histogram are +excluded. If you want to include these values for the side bins you will +need to add an extra row or column to your histogram. + +The :type:`gsl_histogram2d` struct and its associated functions are +defined in the header file :file:`gsl_histogram2d.h`. + +2D Histogram allocation +======================= + +The functions for allocating memory to a 2D histogram follow the style +of :func:`malloc` and :func:`free`. In addition they also perform their +own error checking. If there is insufficient memory available to +allocate a histogram then the functions call the error handler (with +an error number of :macro:`GSL_ENOMEM`) in addition to returning a null +pointer. Thus if you use the library error handler to abort your program +then it isn't necessary to check every 2D histogram :code:`alloc`. + +.. function:: gsl_histogram2d * gsl_histogram2d_alloc (size_t nx, size_t ny) + + This function allocates memory for a two-dimensional histogram with + :data:`nx` bins in the x direction and :data:`ny` bins in the y direction. + The function returns a pointer to a newly created :type:`gsl_histogram2d` + struct. If insufficient memory is available a null pointer is returned + and the error handler is invoked with an error code of + :macro:`GSL_ENOMEM`. The bins and ranges must be initialized with one of + the functions below before the histogram is ready for use. + +.. @deftypefun {gsl_histogram2d *} gsl_histogram2d_calloc (size_t nx, size_t ny) +.. This function allocates memory for a two-dimensional histogram with +.. :data:`nx` bins in the x direction and :data:`ny` bins in the y +.. direction. The function returns a pointer to a newly initialized +.. :type:`gsl_histogram2d` struct. The bins are uniformly spaced with a +.. total range of +.. @c{$0 \le x < nx$} +.. @math{0 <= x < nx} in the x-direction and +.. @c{$0 \le y < ny$} +.. @math{0 <= y < ny} in the y-direction, as shown in the table below. +.. +.. The bins are initialized to zero so the histogram is ready for use. +.. +.. If insufficient memory is available a null pointer is returned and the +.. error handler is invoked with an error code of :macro:`GSL_ENOMEM`. +.. @end deftypefun +.. +.. @deftypefun {gsl_histogram2d *} gsl_histogram2d_calloc_uniform (size_t nx, size_t ny, double xmin, double xmax, double ymin, double ymax) +.. This function allocates a histogram of size :data:`nx`-by-:data:`ny` which +.. uniformly covers the ranges :data:`xmin` to :data:`xmax` and :data:`ymin` to +.. :data:`ymax` in the :math:`x` and :math:`y` directions respectively. +.. @end deftypefun +.. +.. @deftypefun {gsl_histogram2d *} gsl_histogram2d_calloc_range (size_t nx, size_t ny, double * xrange, double * yrange) +.. This function allocates a histogram of size :data:`nx`-by-:data:`ny` using +.. the @math{nx+1} and @math{ny+1} bin ranges specified by the arrays +.. :data:`xrange` and :data:`yrange`. +.. @end deftypefun + +.. function:: int gsl_histogram2d_set_ranges (gsl_histogram2d * h, const double xrange[], size_t xsize, const double yrange[], size_t ysize) + + This function sets the ranges of the existing histogram :data:`h` using + the arrays :data:`xrange` and :data:`yrange` of size :data:`xsize` and + :data:`ysize` respectively. The values of the histogram bins are reset to + zero. + +.. function:: int gsl_histogram2d_set_ranges_uniform (gsl_histogram2d * h, double xmin, double xmax, double ymin, double ymax) + + This function sets the ranges of the existing histogram :data:`h` to cover + the ranges :data:`xmin` to :data:`xmax` and :data:`ymin` to :data:`ymax` + uniformly. The values of the histogram bins are reset to zero. + +.. function:: void gsl_histogram2d_free (gsl_histogram2d * h) + + This function frees the 2D histogram :data:`h` and all of the memory + associated with it. + +Copying 2D Histograms +===================== + +.. function:: int gsl_histogram2d_memcpy (gsl_histogram2d * dest, const gsl_histogram2d * src) + + This function copies the histogram :data:`src` into the pre-existing + histogram :data:`dest`, making :data:`dest` into an exact copy of :data:`src`. + The two histograms must be of the same size. + +.. function:: gsl_histogram2d * gsl_histogram2d_clone (const gsl_histogram2d * src) + + This function returns a pointer to a newly created histogram which is an + exact copy of the histogram :data:`src`. + +Updating and accessing 2D histogram elements +============================================ + +You can access the bins of a two-dimensional histogram either by +specifying a pair of :math:`(x,y)` coordinates or by using the bin +indices :math:`(i,j)` directly. The functions for accessing the histogram +through :math:`(x,y)` coordinates use binary searches in the x and y +directions to identify the bin which covers the appropriate range. + +.. function:: int gsl_histogram2d_increment (gsl_histogram2d * h, double x, double y) + + This function updates the histogram :data:`h` by adding one (1.0) to the + bin whose x and y ranges contain the coordinates (:data:`x`, :data:`y`). + + If the point :math:`(x,y)` lies inside the valid ranges of the + histogram then the function returns zero to indicate success. If + :math:`(x,y)` lies outside the limits of the histogram then the + function returns :macro:`GSL_EDOM`, and none of the bins are modified. The + error handler is not called, since it is often necessary to compute + histograms for a small range of a larger dataset, ignoring any + coordinates outside the range of interest. + +.. function:: int gsl_histogram2d_accumulate (gsl_histogram2d * h, double x, double y, double weight) + + This function is similar to :func:`gsl_histogram2d_increment` but increases + the value of the appropriate bin in the histogram :data:`h` by the + floating-point number :data:`weight`. + +.. function:: double gsl_histogram2d_get (const gsl_histogram2d * h, size_t i, size_t j) + + This function returns the contents of the (:data:`i`, :data:`j`)-th bin of the + histogram :data:`h`. If (:data:`i`, :data:`j`) lies outside the valid range of + indices for the histogram then the error handler is called with an error + code of :macro:`GSL_EDOM` and the function returns 0. + +.. function:: int gsl_histogram2d_get_xrange (const gsl_histogram2d * h, size_t i, double * xlower, double * xupper) + int gsl_histogram2d_get_yrange (const gsl_histogram2d * h, size_t j, double * ylower, double * yupper) + + These functions find the upper and lower range limits of the :data:`i`-th + and :data:`j`-th bins in the x and y directions of the histogram :data:`h`. + The range limits are stored in :data:`xlower` and :data:`xupper` or + :data:`ylower` and :data:`yupper`. The lower limits are inclusive + (i.e. events with these coordinates are included in the bin) and the + upper limits are exclusive (i.e. events with the value of the upper + limit are not included and fall in the neighboring higher bin, if it + exists). The functions return 0 to indicate success. If :data:`i` or + :data:`j` lies outside the valid range of indices for the histogram then + the error handler is called with an error code of :macro:`GSL_EDOM`. + +.. function:: double gsl_histogram2d_xmax (const gsl_histogram2d * h) + double gsl_histogram2d_xmin (const gsl_histogram2d * h) + size_t gsl_histogram2d_nx (const gsl_histogram2d * h) + double gsl_histogram2d_ymax (const gsl_histogram2d * h) + double gsl_histogram2d_ymin (const gsl_histogram2d * h) + size_t gsl_histogram2d_ny (const gsl_histogram2d * h) + + These functions return the maximum upper and minimum lower range limits + and the number of bins for the x and y directions of the histogram + :data:`h`. They provide a way of determining these values without + accessing the :type:`gsl_histogram2d` struct directly. + +.. function:: void gsl_histogram2d_reset (gsl_histogram2d * h) + + This function resets all the bins of the histogram :data:`h` to zero. + +Searching 2D histogram ranges +============================= + +The following functions are used by the access and update routines to +locate the bin which corresponds to a given :math:`(x,y)` coordinate. + +.. function:: int gsl_histogram2d_find (const gsl_histogram2d * h, double x, double y, size_t * i, size_t * j) + + This function finds and sets the indices :data:`i` and :data:`j` to + the bin which covers the coordinates (:data:`x`, :data:`y`). The bin is + located using a binary search. The search includes an optimization for + histograms with uniform ranges, and will return the correct bin immediately + in this case. If :math:`(x,y)` is found then the function sets the + indices (:data:`i`, :data:`j`) and returns :macro:`GSL_SUCCESS`. If + :math:`(x,y)` lies outside the valid range of the histogram then the + function returns :macro:`GSL_EDOM` and the error handler is invoked. + +2D Histogram Statistics +======================= + +.. function:: double gsl_histogram2d_max_val (const gsl_histogram2d * h) + + This function returns the maximum value contained in the histogram bins. + +.. function:: void gsl_histogram2d_max_bin (const gsl_histogram2d * h, size_t * i, size_t * j) + + This function finds the indices of the bin containing the maximum value + in the histogram :data:`h` and stores the result in (:data:`i`, :data:`j`). In + the case where several bins contain the same maximum value the first bin + found is returned. + +.. function:: double gsl_histogram2d_min_val (const gsl_histogram2d * h) + + This function returns the minimum value contained in the histogram bins. + +.. function:: void gsl_histogram2d_min_bin (const gsl_histogram2d * h, size_t * i, size_t * j) + + This function finds the indices of the bin containing the minimum value + in the histogram :data:`h` and stores the result in (:data:`i`, :data:`j`). In + the case where several bins contain the same maximum value the first bin + found is returned. + +.. function:: double gsl_histogram2d_xmean (const gsl_histogram2d * h) + + This function returns the mean of the histogrammed x variable, where the + histogram is regarded as a probability distribution. Negative bin values + are ignored for the purposes of this calculation. + +.. function:: double gsl_histogram2d_ymean (const gsl_histogram2d * h) + + This function returns the mean of the histogrammed y variable, where the + histogram is regarded as a probability distribution. Negative bin values + are ignored for the purposes of this calculation. + +.. function:: double gsl_histogram2d_xsigma (const gsl_histogram2d * h) + + This function returns the standard deviation of the histogrammed + x variable, where the histogram is regarded as a probability + distribution. Negative bin values are ignored for the purposes of this + calculation. + +.. function:: double gsl_histogram2d_ysigma (const gsl_histogram2d * h) + + This function returns the standard deviation of the histogrammed + y variable, where the histogram is regarded as a probability + distribution. Negative bin values are ignored for the purposes of this + calculation. + +.. function:: double gsl_histogram2d_cov (const gsl_histogram2d * h) + + This function returns the covariance of the histogrammed x and y + variables, where the histogram is regarded as a probability + distribution. Negative bin values are ignored for the purposes of this + calculation. + +.. function:: double gsl_histogram2d_sum (const gsl_histogram2d * h) + + This function returns the sum of all bin values. Negative bin values + are included in the sum. + +2D Histogram Operations +======================= + +.. function:: int gsl_histogram2d_equal_bins_p (const gsl_histogram2d * h1, const gsl_histogram2d * h2) + + This function returns 1 if all the individual bin ranges of the two + histograms are identical, and 0 otherwise. + +.. function:: int gsl_histogram2d_add (gsl_histogram2d * h1, const gsl_histogram2d * h2) + + This function adds the contents of the bins in histogram :data:`h2` to the + corresponding bins of histogram :data:`h1`, + i.e. :math:`h'_1(i,j) = h_1(i,j) + h_2(i,j)`. + The two histograms must have identical bin ranges. + +.. function:: int gsl_histogram2d_sub (gsl_histogram2d * h1, const gsl_histogram2d * h2) + + This function subtracts the contents of the bins in histogram :data:`h2` from the + corresponding bins of histogram :data:`h1`, + i.e. :math:`h'_1(i,j) = h_1(i,j) - h_2(i,j)`. + The two histograms must have identical bin ranges. + +.. function:: int gsl_histogram2d_mul (gsl_histogram2d * h1, const gsl_histogram2d * h2) + + This function multiplies the contents of the bins of histogram :data:`h1` + by the contents of the corresponding bins in histogram :data:`h2`, + i.e. :math:`h'_1(i,j) = h_1(i,j) * h_2(i,j)`. + The two histograms must have identical bin ranges. + +.. function:: int gsl_histogram2d_div (gsl_histogram2d * h1, const gsl_histogram2d * h2) + + This function divides the contents of the bins of histogram :data:`h1` + by the contents of the corresponding bins in histogram :data:`h2`, + i.e. :math:`h'_1(i,j) = h_1(i,j) / h_2(i,j)`. + The two histograms must have identical bin ranges. + +.. function:: int gsl_histogram2d_scale (gsl_histogram2d * h, double scale) + + This function multiplies the contents of the bins of histogram :data:`h` + by the constant :data:`scale`, i.e. + + .. only:: not texinfo + + .. math:: h'_1(i,j) = h_1(i,j) * \hbox{\it scale} + + .. only:: texinfo + + :: + + h'_1(i,j) = h_1(i,j) scale + +.. function:: int gsl_histogram2d_shift (gsl_histogram2d * h, double offset) + + This function shifts the contents of the bins of histogram :data:`h` + by the constant :data:`offset`, i.e. + + .. only:: not texinfo + + .. math:: h'_1(i,j) = h_1(i,j) + \hbox{\it offset} + + .. only:: texinfo + + :: + + h'_1(i,j) = h_1(i,j) + offset + +Reading and writing 2D histograms +================================= + +The library provides functions for reading and writing two dimensional +histograms to a file as binary data or formatted text. + +.. function:: int gsl_histogram2d_fwrite (FILE * stream, const gsl_histogram2d * h) + + This function writes the ranges and bins of the histogram :data:`h` to the + stream :data:`stream` in binary format. The return value is 0 for success + and :macro:`GSL_EFAILED` if there was a problem writing to the file. Since + the data is written in the native binary format it may not be portable + between different architectures. + +.. function:: int gsl_histogram2d_fread (FILE * stream, gsl_histogram2d * h) + + This function reads into the histogram :data:`h` from the stream + :data:`stream` in binary format. The histogram :data:`h` must be + preallocated with the correct size since the function uses the number of + x and y bins in :data:`h` to determine how many bytes to read. The return + value is 0 for success and :macro:`GSL_EFAILED` if there was a problem + reading from the file. The data is assumed to have been written in the + native binary format on the same architecture. + +.. function:: int gsl_histogram2d_fprintf (FILE * stream, const gsl_histogram2d * h, const char * range_format, const char * bin_format) + + This function writes the ranges and bins of the histogram :data:`h` + line-by-line to the stream :data:`stream` using the format specifiers + :data:`range_format` and :data:`bin_format`. These should be one of the + :code:`%g`, :code:`%e` or :code:`%f` formats for floating point + numbers. The function returns 0 for success and :macro:`GSL_EFAILED` if + there was a problem writing to the file. The histogram output is + formatted in five columns, and the columns are separated by spaces, + like this:: + + xrange[0] xrange[1] yrange[0] yrange[1] bin(0,0) + xrange[0] xrange[1] yrange[1] yrange[2] bin(0,1) + xrange[0] xrange[1] yrange[2] yrange[3] bin(0,2) + .... + xrange[0] xrange[1] yrange[ny-1] yrange[ny] bin(0,ny-1) + + xrange[1] xrange[2] yrange[0] yrange[1] bin(1,0) + xrange[1] xrange[2] yrange[1] yrange[2] bin(1,1) + xrange[1] xrange[2] yrange[1] yrange[2] bin(1,2) + .... + xrange[1] xrange[2] yrange[ny-1] yrange[ny] bin(1,ny-1) + + .... + + xrange[nx-1] xrange[nx] yrange[0] yrange[1] bin(nx-1,0) + xrange[nx-1] xrange[nx] yrange[1] yrange[2] bin(nx-1,1) + xrange[nx-1] xrange[nx] yrange[1] yrange[2] bin(nx-1,2) + .... + xrange[nx-1] xrange[nx] yrange[ny-1] yrange[ny] bin(nx-1,ny-1) + + Each line contains the lower and upper limits of the bin and the + contents of the bin. Since the upper limits of the each bin are the + lower limits of the neighboring bins there is duplication of these + values but this allows the histogram to be manipulated with + line-oriented tools. + +.. function:: int gsl_histogram2d_fscanf (FILE * stream, gsl_histogram2d * h) + + This function reads formatted data from the stream :data:`stream` into the + histogram :data:`h`. The data is assumed to be in the five-column format + used by :func:`gsl_histogram2d_fprintf`. The histogram :data:`h` must be + preallocated with the correct lengths since the function uses the sizes + of :data:`h` to determine how many numbers to read. The function returns 0 + for success and :macro:`GSL_EFAILED` if there was a problem reading from + the file. + +Resampling from 2D histograms +============================= + +As in the one-dimensional case, a two-dimensional histogram made by +counting events can be regarded as a measurement of a probability +distribution. Allowing for statistical error, the height of each bin +represents the probability of an event where (:math:`x`,:math:`y`) falls in +the range of that bin. For a two-dimensional histogram the probability +distribution takes the form :math:`p(x,y) dx dy` where, + +.. math:: p(x,y) = n_{ij} / (N A_{ij}) + +In this equation :math:`n_{ij}` +is the number of events in the bin which +contains :math:`(x,y)`, :math:`A_{ij}` +is the area of the bin and :math:`N` is +the total number of events. The distribution of events within each bin +is assumed to be uniform. + +.. type:: gsl_histogram2d_pdf + + ============================= =========================================================================== + :code:`size_t nx, ny` This is the number of histogram bins used to approximate the probability + distribution function in the x and y directions. + :code:`double * xrange` The ranges of the bins in the x-direction are stored in an array of + :code:`nx + 1` elements pointed to by :data:`xrange`. + :code:`double * yrange` The ranges of the bins in the y-direction are stored in an array of + :code:`ny + 1` pointed to by :data:`yrange`. + :code:`double * sum` The cumulative probability for the bins is stored in an array of + :data:`nx` * :data:`ny` elements pointed to by :data:`sum`. + ============================= =========================================================================== + +The following functions allow you to create a :type:`gsl_histogram2d_pdf` +struct which represents a two dimensional probability distribution and +generate random samples from it. + +.. function:: gsl_histogram2d_pdf * gsl_histogram2d_pdf_alloc (size_t nx, size_t ny) + + This function allocates memory for a two-dimensional probability + distribution of size :data:`nx`-by-:data:`ny` and returns a pointer to a + newly initialized :type:`gsl_histogram2d_pdf` struct. If insufficient + memory is available a null pointer is returned and the error handler is + invoked with an error code of :macro:`GSL_ENOMEM`. + +.. function:: int gsl_histogram2d_pdf_init (gsl_histogram2d_pdf * p, const gsl_histogram2d * h) + + This function initializes the two-dimensional probability distribution + calculated :data:`p` from the histogram :data:`h`. If any of the bins of + :data:`h` are negative then the error handler is invoked with an error + code of :macro:`GSL_EDOM` because a probability distribution cannot + contain negative values. + +.. function:: void gsl_histogram2d_pdf_free (gsl_histogram2d_pdf * p) + + This function frees the two-dimensional probability distribution + function :data:`p` and all of the memory associated with it. + +.. function:: int gsl_histogram2d_pdf_sample (const gsl_histogram2d_pdf * p, double r1, double r2, double * x, double * y) + + This function uses two uniform random numbers between zero and one, + :data:`r1` and :data:`r2`, to compute a single random sample from the + two-dimensional probability distribution :data:`p`. + +Example programs for 2D histograms +================================== + +This program demonstrates two features of two-dimensional histograms. +First a 10-by-10 two-dimensional histogram is created with x and y running +from 0 to 1. Then a few sample points are added to the histogram, at +(0.3,0.3) with a height of 1, at (0.8,0.1) with a height of 5 and at +(0.7,0.9) with a height of 0.5. This histogram with three events is +used to generate a random sample of 1000 simulated events, which are +printed out. + +.. include:: examples/histogram2d.c + :code: + +The following plot shows the distribution of the simulated events. Using +a higher resolution grid we can see the original underlying histogram +and also the statistical fluctuations caused by the events being +uniformly distributed over the area of the original bins. + +.. figure:: /images/histogram2d.png + :scale: 60% + + Distribution of simulated events from example program diff --git a/gsl-2.5/doc/ieee754.rst b/gsl-2.5/doc/ieee754.rst new file mode 100644 index 00000000..88e1c25a --- /dev/null +++ b/gsl-2.5/doc/ieee754.rst @@ -0,0 +1,404 @@ +.. index:: IEEE floating point + +.. _chap_ieee: + +****************************** +IEEE floating-point arithmetic +****************************** + +This chapter describes functions for examining the representation of +floating point numbers and controlling the floating point environment of +your program. The functions described in this chapter are declared in +the header file :file:`gsl_ieee_utils.h`. + +.. index:: + single: IEEE format for floating point numbers + single: bias, IEEE format + single: exponent, IEEE format + single: sign bit, IEEE format + single: mantissa, IEEE format + +Representation of floating point numbers +======================================== + +The IEEE Standard for Binary Floating-Point Arithmetic defines binary +formats for single and double precision numbers. Each number is composed +of three parts: a *sign bit* (:math:`s`), an *exponent* +(:math:`E`) and a *fraction* (:math:`f`). The numerical value of the +combination :math:`(s,E,f)` is given by the following formula, + +.. only:: not texinfo + + .. math:: (-1)^s (1 \cdot fffff\dots) 2^E + +.. only:: texinfo + + :: + + (-1)^s (1.fffff...) 2^E + +.. index:: + single: normalized form, IEEE format + single: denormalized form, IEEE format + +The sign bit is either zero or one. The exponent ranges from a minimum value +:math:`E_{min}` +to a maximum value +:math:`E_{max}` +depending on the precision. The exponent is converted to an +unsigned number +:math:`e`, known as the *biased exponent*, for storage by adding a +*bias* parameter, + +.. only:: not texinfo + + .. math:: e = E + \hbox{\it bias} + +.. only:: texinfo + + :: + + e = E + bias + +The sequence :math:`fffff...` represents the digits of the binary +fraction :math:`f`. The binary digits are stored in *normalized +form*, by adjusting the exponent to give a leading digit of :math:`1`. +Since the leading digit is always 1 for normalized numbers it is +assumed implicitly and does not have to be stored. +Numbers smaller than +:math:`2^{E_{min}}` +are be stored in *denormalized form* with a leading zero, + +.. only:: not texinfo + + .. math:: (-1)^s (0 \cdot fffff\dots) 2^{E_{min}} + +.. only:: texinfo + + :: + + (-1)^s (0.fffff...) 2^(E_min) + +.. index:: + single: zero, IEEE format + single: infinity, IEEE format + +This allows gradual underflow down to +:math:`2^{E_{min} - p}` +for :math:`p` bits of precision. +A zero is encoded with the special exponent of +:math:`2^{E_{min}-1}` +and infinities with the exponent of +:math:`2^{E_{max}+1}`. + +.. index:: + single: single precision, IEEE format + +The format for single precision numbers uses 32 bits divided in the +following way:: + + seeeeeeeefffffffffffffffffffffff + + s = sign bit, 1 bit + e = exponent, 8 bits (E_min=-126, E_max=127, bias=127) + f = fraction, 23 bits + +.. index:: + single: double precision, IEEE format + +The format for double precision numbers uses 64 bits divided in the +following way:: + + seeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffff + + s = sign bit, 1 bit + e = exponent, 11 bits (E_min=-1022, E_max=1023, bias=1023) + f = fraction, 52 bits + +It is often useful to be able to investigate the behavior of a +calculation at the bit-level and the library provides functions for +printing the IEEE representations in a human-readable form. + +.. float vs double vs long double +.. (how many digits are available for each) + +.. function:: void gsl_ieee_fprintf_float (FILE * stream, const float * x) + void gsl_ieee_fprintf_double (FILE * stream, const double * x) + + These functions output a formatted version of the IEEE floating-point + number pointed to by :data:`x` to the stream :data:`stream`. A pointer is + used to pass the number indirectly, to avoid any undesired promotion + from :code:`float` to :code:`double`. The output takes one of the + following forms, + + :code:`NaN` + + the Not-a-Number symbol + + :code:`Inf, -Inf` + + positive or negative infinity + + :code:`1.fffff...*2^E, -1.fffff...*2^E` + + a normalized floating point number + + :code:`0.fffff...*2^E, -0.fffff...*2^E` + + a denormalized floating point number + + :code:`0, -0` + + positive or negative zero + + The output can be used directly in GNU Emacs Calc mode by preceding it + with :code:`2#` to indicate binary. + +.. @item [non-standard IEEE float], [non-standard IEEE double] +.. an unrecognized encoding + +.. function:: void gsl_ieee_printf_float (const float * x) + void gsl_ieee_printf_double (const double * x) + + These functions output a formatted version of the IEEE floating-point + number pointed to by :data:`x` to the stream :code:`stdout`. + +The following program demonstrates the use of the functions by printing +the single and double precision representations of the fraction +:math:`1/3`. For comparison the representation of the value promoted from +single to double precision is also printed. + +.. include:: examples/ieee.c + :code: + +The binary representation of :math:`1/3` is :math:`0.01010101...`. The +output below shows that the IEEE format normalizes this fraction to give +a leading digit of 1:: + + f= 1.01010101010101010101011*2^-2 + fd= 1.0101010101010101010101100000000000000000000000000000*2^-2 + d= 1.0101010101010101010101010101010101010101010101010101*2^-2 + +The output also shows that a single-precision number is promoted to +double-precision by adding zeros in the binary representation. + +.. importance of using 1.234L in long double calculations + +.. @example +.. int main (void) +.. @{ +.. long double x = 1.0, y = 1.0; + +.. x = x + 0.2; +.. y = y + 0.2L; + +.. printf(" d %.20Lf\n",x); +.. printf("ld %.20Lf\n",y); + +.. return 1; +.. @} + +.. d 1.20000000000000001110 +.. ld 1.20000000000000000004 +.. @end example + +.. index:: + single: IEEE exceptions + single: precision, IEEE arithmetic + single: rounding mode + single: arithmetic exceptions + single: exceptions, IEEE arithmetic + single: division by zero, IEEE exceptions + single: underflow, IEEE exceptions + single: overflow, IEEE exceptions + +Setting up your IEEE environment +================================ + +The IEEE standard defines several *modes* for controlling the +behavior of floating point operations. These modes specify the important +properties of computer arithmetic: the direction used for rounding (e.g. +whether numbers should be rounded up, down or to the nearest number), +the rounding precision and how the program should handle arithmetic +exceptions, such as division by zero. + +Many of these features can now be controlled via standard functions such +as :func:`fpsetround`, which should be used whenever they are available. +Unfortunately in the past there has been no universal API for +controlling their behavior---each system has had its own low-level way +of accessing them. To help you write portable programs GSL allows you +to specify modes in a platform-independent way using the environment +variable :macro:`GSL_IEEE_MODE`. The library then takes care of all the +necessary machine-specific initializations for you when you call the +function :func:`gsl_ieee_env_setup`. + +.. macro:: GSL_IEEE_MODE + + Environment variable which specifies IEEE mode. + +.. function:: void gsl_ieee_env_setup () + + This function reads the environment variable :macro:`GSL_IEEE_MODE` and + attempts to set up the corresponding specified IEEE modes. The + environment variable should be a list of keywords, separated by + commas, like this:: + + GSL_IEEE_MODE = "keyword, keyword, ..." + + where :data:`keyword` is one of the following mode-names:: + + single-precision + double-precision + extended-precision + round-to-nearest + round-down + round-up + round-to-zero + mask-all + mask-invalid + mask-denormalized + mask-division-by-zero + mask-overflow + mask-underflow + trap-inexact + trap-common + + If :macro:`GSL_IEEE_MODE` is empty or undefined then the function returns + immediately and no attempt is made to change the system's IEEE + mode. When the modes from :macro:`GSL_IEEE_MODE` are turned on the + function prints a short message showing the new settings to remind you + that the results of the program will be affected. + + If the requested modes are not supported by the platform being used then + the function calls the error handler and returns an error code of + :macro:`GSL_EUNSUP`. + + When options are specified using this method, the resulting mode is + based on a default setting of the highest available precision (double + precision or extended precision, depending on the platform) in + round-to-nearest mode, with all exceptions enabled apart from the + INEXACT exception. The INEXACT exception is generated + whenever rounding occurs, so it must generally be disabled in typical + scientific calculations. All other floating-point exceptions are + enabled by default, including underflows and the use of denormalized + numbers, for safety. They can be disabled with the individual + :code:`mask-` settings or together using :code:`mask-all`. + + The following adjusted combination of modes is convenient for many + purposes:: + + GSL_IEEE_MODE="double-precision,"\ + "mask-underflow,"\ + "mask-denormalized" + + This choice ignores any errors relating to small numbers (either + denormalized, or underflowing to zero) but traps overflows, division by + zero and invalid operations. + + Note that on the x86 series of processors this function sets both the + original x87 mode and the newer MXCSR mode, which controls SSE + floating-point operations. The SSE floating-point units do not have a + precision-control bit, and always work in double-precision. The + single-precision and extended-precision keywords have no effect in + this case. + +To demonstrate the effects of different rounding modes consider the +following program which computes :math:`e`, the base of natural +logarithms, by summing a rapidly-decreasing series, + +.. only:: not texinfo + + .. math:: + + e &= {1 \over 0!} + {1 \over 1!} + {1 \over 2!} + {1 \over 3!} + {1 \over 4!} + \dots \\ + &= 2.71828182846... + +.. only:: texinfo + + :: + + e = 1 + 1/2! + 1/3! + 1/4! + ... + = 2.71828182846... + +.. include:: examples/ieeeround.c + :code: + +Here are the results of running the program in :code:`round-to-nearest` +mode. This is the IEEE default so it isn't really necessary to specify +it here:: + + $ GSL_IEEE_MODE="round-to-nearest" ./a.out + i= 1 sum=1.000000000000000000 error=-1.71828 + i= 2 sum=2.000000000000000000 error=-0.718282 + .... + i=18 sum=2.718281828459045535 error=4.44089e-16 + i=19 sum=2.718281828459045535 error=4.44089e-16 + +After nineteen terms the sum converges to within :math:`4 \times 10^{-16}` +of the correct value. +If we now change the rounding mode to +:code:`round-down` the final result is less accurate:: + + $ GSL_IEEE_MODE="round-down" ./a.out + i= 1 sum=1.000000000000000000 error=-1.71828 + .... + i=19 sum=2.718281828459041094 error=-3.9968e-15 + +The result is about +:math:`4 \times 10^{-15}` +below the correct value, an order of magnitude worse than the result +obtained in the :code:`round-to-nearest` mode. + +If we change to rounding mode to :code:`round-up` then the final result +is higher than the correct value (when we add each term to the sum the +final result is always rounded up, which increases the sum by at least +one tick until the added term underflows to zero). To avoid this +problem we would need to use a safer converge criterion, such as +:code:`while (fabs(sum - oldsum) > epsilon)`, with a suitably chosen +value of epsilon. + +Finally we can see the effect of computing the sum using +single-precision rounding, in the default :code:`round-to-nearest` +mode. In this case the program thinks it is still using double precision +numbers but the CPU rounds the result of each floating point operation +to single-precision accuracy. This simulates the effect of writing the +program using single-precision :code:`float` variables instead of +:code:`double` variables. The iteration stops after about half the number +of iterations and the final result is much less accurate:: + + $ GSL_IEEE_MODE="single-precision" ./a.out + .... + i=12 sum=2.718281984329223633 error=1.5587e-07 + +with an error of +:math:`O(10^{-7})`, +which corresponds to single +precision accuracy (about 1 part in :math:`10^7`). Continuing the +iterations further does not decrease the error because all the +subsequent results are rounded to the same value. + +References and Further Reading +============================== + +The reference for the IEEE standard is, + +* ANSI/IEEE Std 754-1985, IEEE Standard for Binary Floating-Point Arithmetic. + +A more pedagogical introduction to the standard can be found in the +following paper, + +* David Goldberg: What Every Computer Scientist Should Know About + Floating-Point Arithmetic. *ACM Computing Surveys*, Vol.: 23, No.: 1 + (March 1991), pages 5--48. + +* Corrigendum: *ACM Computing Surveys*, Vol.: 23, No.: 3 (September + 1991), page 413. and see also the sections by B. A. Wichmann and Charles + B. Dunham in Surveyor's Forum: "What Every Computer Scientist Should + Know About Floating-Point Arithmetic". *ACM Computing Surveys*, + Vol.: 24, No.: 3 (September 1992), page 319. + +A detailed textbook on IEEE arithmetic and its practical use is +available from SIAM Press, + +* Michael L. Overton, *Numerical Computing with IEEE Floating Point Arithmetic*, + SIAM Press, ISBN 0898715717. diff --git a/gsl-2.5/doc/images/bspline.png b/gsl-2.5/doc/images/bspline.png new file mode 100644 index 00000000..be32fa68 Binary files /dev/null and b/gsl-2.5/doc/images/bspline.png differ diff --git a/gsl-2.5/doc/images/cheb.png b/gsl-2.5/doc/images/cheb.png new file mode 100644 index 00000000..ec8d2f34 Binary files /dev/null and b/gsl-2.5/doc/images/cheb.png differ diff --git a/gsl-2.5/doc/images/dwt.png b/gsl-2.5/doc/images/dwt.png new file mode 100644 index 00000000..c0729a3e Binary files /dev/null and b/gsl-2.5/doc/images/dwt.png differ diff --git a/gsl-2.5/doc/images/fft-complex-radix2.png b/gsl-2.5/doc/images/fft-complex-radix2.png new file mode 100644 index 00000000..db26fbb2 Binary files /dev/null and b/gsl-2.5/doc/images/fft-complex-radix2.png differ diff --git a/gsl-2.5/doc/images/fft-real-mixedradix.png b/gsl-2.5/doc/images/fft-real-mixedradix.png new file mode 100644 index 00000000..ee591489 Binary files /dev/null and b/gsl-2.5/doc/images/fft-real-mixedradix.png differ diff --git a/gsl-2.5/doc/images/filt_edge.png b/gsl-2.5/doc/images/filt_edge.png new file mode 100644 index 00000000..2b2007db Binary files /dev/null and b/gsl-2.5/doc/images/filt_edge.png differ diff --git a/gsl-2.5/doc/images/fit-exp.png b/gsl-2.5/doc/images/fit-exp.png new file mode 100644 index 00000000..6144c5a1 Binary files /dev/null and b/gsl-2.5/doc/images/fit-exp.png differ diff --git a/gsl-2.5/doc/images/fit-wlinear.png b/gsl-2.5/doc/images/fit-wlinear.png new file mode 100644 index 00000000..d749087f Binary files /dev/null and b/gsl-2.5/doc/images/fit-wlinear.png differ diff --git a/gsl-2.5/doc/images/fit-wlinear2.png b/gsl-2.5/doc/images/fit-wlinear2.png new file mode 100644 index 00000000..43ea9c14 Binary files /dev/null and b/gsl-2.5/doc/images/fit-wlinear2.png differ diff --git a/gsl-2.5/doc/images/gaussfilt.png b/gsl-2.5/doc/images/gaussfilt.png new file mode 100644 index 00000000..134a6824 Binary files /dev/null and b/gsl-2.5/doc/images/gaussfilt.png differ diff --git a/gsl-2.5/doc/images/gaussfilt2.png b/gsl-2.5/doc/images/gaussfilt2.png new file mode 100644 index 00000000..efe88bfb Binary files /dev/null and b/gsl-2.5/doc/images/gaussfilt2.png differ diff --git a/gsl-2.5/doc/images/histogram.png b/gsl-2.5/doc/images/histogram.png new file mode 100644 index 00000000..2bdaccd9 Binary files /dev/null and b/gsl-2.5/doc/images/histogram.png differ diff --git a/gsl-2.5/doc/images/histogram2d.png b/gsl-2.5/doc/images/histogram2d.png new file mode 100644 index 00000000..cbbd8643 Binary files /dev/null and b/gsl-2.5/doc/images/histogram2d.png differ diff --git a/gsl-2.5/doc/images/impulse.png b/gsl-2.5/doc/images/impulse.png new file mode 100644 index 00000000..678f4e29 Binary files /dev/null and b/gsl-2.5/doc/images/impulse.png differ diff --git a/gsl-2.5/doc/images/interp.png b/gsl-2.5/doc/images/interp.png new file mode 100644 index 00000000..40392485 Binary files /dev/null and b/gsl-2.5/doc/images/interp.png differ diff --git a/gsl-2.5/doc/images/interp2d.png b/gsl-2.5/doc/images/interp2d.png new file mode 100644 index 00000000..42ae79ee Binary files /dev/null and b/gsl-2.5/doc/images/interp2d.png differ diff --git a/gsl-2.5/doc/images/interp_compare.png b/gsl-2.5/doc/images/interp_compare.png new file mode 100644 index 00000000..3b82a58b Binary files /dev/null and b/gsl-2.5/doc/images/interp_compare.png differ diff --git a/gsl-2.5/doc/images/interpp.png b/gsl-2.5/doc/images/interpp.png new file mode 100644 index 00000000..a5aa81ed Binary files /dev/null and b/gsl-2.5/doc/images/interpp.png differ diff --git a/gsl-2.5/doc/images/min-interval.png b/gsl-2.5/doc/images/min-interval.png new file mode 100644 index 00000000..7795be58 Binary files /dev/null and b/gsl-2.5/doc/images/min-interval.png differ diff --git a/gsl-2.5/doc/images/movstat1.png b/gsl-2.5/doc/images/movstat1.png new file mode 100644 index 00000000..dd488c88 Binary files /dev/null and b/gsl-2.5/doc/images/movstat1.png differ diff --git a/gsl-2.5/doc/images/movstat2.png b/gsl-2.5/doc/images/movstat2.png new file mode 100644 index 00000000..b2dcefce Binary files /dev/null and b/gsl-2.5/doc/images/movstat2.png differ diff --git a/gsl-2.5/doc/images/movstat3.png b/gsl-2.5/doc/images/movstat3.png new file mode 100644 index 00000000..f8ba0290 Binary files /dev/null and b/gsl-2.5/doc/images/movstat3.png differ diff --git a/gsl-2.5/doc/images/multilarge.png b/gsl-2.5/doc/images/multilarge.png new file mode 100644 index 00000000..3490a17b Binary files /dev/null and b/gsl-2.5/doc/images/multilarge.png differ diff --git a/gsl-2.5/doc/images/multimin.png b/gsl-2.5/doc/images/multimin.png new file mode 100644 index 00000000..c7060b46 Binary files /dev/null and b/gsl-2.5/doc/images/multimin.png differ diff --git a/gsl-2.5/doc/images/nlfit2.png b/gsl-2.5/doc/images/nlfit2.png new file mode 100644 index 00000000..5ae19970 Binary files /dev/null and b/gsl-2.5/doc/images/nlfit2.png differ diff --git a/gsl-2.5/doc/images/nlfit2b.png b/gsl-2.5/doc/images/nlfit2b.png new file mode 100644 index 00000000..358927d2 Binary files /dev/null and b/gsl-2.5/doc/images/nlfit2b.png differ diff --git a/gsl-2.5/doc/images/nlfit3.png b/gsl-2.5/doc/images/nlfit3.png new file mode 100644 index 00000000..335b1e8a Binary files /dev/null and b/gsl-2.5/doc/images/nlfit3.png differ diff --git a/gsl-2.5/doc/images/ntuple.png b/gsl-2.5/doc/images/ntuple.png new file mode 100644 index 00000000..9627ba79 Binary files /dev/null and b/gsl-2.5/doc/images/ntuple.png differ diff --git a/gsl-2.5/doc/images/ode-vdp.png b/gsl-2.5/doc/images/ode-vdp.png new file mode 100644 index 00000000..2226ac88 Binary files /dev/null and b/gsl-2.5/doc/images/ode-vdp.png differ diff --git a/gsl-2.5/doc/images/qrng.png b/gsl-2.5/doc/images/qrng.png new file mode 100644 index 00000000..f9f50cd7 Binary files /dev/null and b/gsl-2.5/doc/images/qrng.png differ diff --git a/gsl-2.5/doc/images/rand-bernoulli.png b/gsl-2.5/doc/images/rand-bernoulli.png new file mode 100644 index 00000000..bac89236 Binary files /dev/null and b/gsl-2.5/doc/images/rand-bernoulli.png differ diff --git a/gsl-2.5/doc/images/rand-beta.png b/gsl-2.5/doc/images/rand-beta.png new file mode 100644 index 00000000..1df5fa0a Binary files /dev/null and b/gsl-2.5/doc/images/rand-beta.png differ diff --git a/gsl-2.5/doc/images/rand-binomial.png b/gsl-2.5/doc/images/rand-binomial.png new file mode 100644 index 00000000..292f8ea9 Binary files /dev/null and b/gsl-2.5/doc/images/rand-binomial.png differ diff --git a/gsl-2.5/doc/images/rand-bivariate-gaussian.png b/gsl-2.5/doc/images/rand-bivariate-gaussian.png new file mode 100644 index 00000000..e0ea6073 Binary files /dev/null and b/gsl-2.5/doc/images/rand-bivariate-gaussian.png differ diff --git a/gsl-2.5/doc/images/rand-cauchy.png b/gsl-2.5/doc/images/rand-cauchy.png new file mode 100644 index 00000000..1b36cde2 Binary files /dev/null and b/gsl-2.5/doc/images/rand-cauchy.png differ diff --git a/gsl-2.5/doc/images/rand-chisq.png b/gsl-2.5/doc/images/rand-chisq.png new file mode 100644 index 00000000..81c3f1d1 Binary files /dev/null and b/gsl-2.5/doc/images/rand-chisq.png differ diff --git a/gsl-2.5/doc/images/rand-erlang.png b/gsl-2.5/doc/images/rand-erlang.png new file mode 100644 index 00000000..3eaab682 Binary files /dev/null and b/gsl-2.5/doc/images/rand-erlang.png differ diff --git a/gsl-2.5/doc/images/rand-exponential.png b/gsl-2.5/doc/images/rand-exponential.png new file mode 100644 index 00000000..81bdd376 Binary files /dev/null and b/gsl-2.5/doc/images/rand-exponential.png differ diff --git a/gsl-2.5/doc/images/rand-exppow.png b/gsl-2.5/doc/images/rand-exppow.png new file mode 100644 index 00000000..421cbf81 Binary files /dev/null and b/gsl-2.5/doc/images/rand-exppow.png differ diff --git a/gsl-2.5/doc/images/rand-fdist.png b/gsl-2.5/doc/images/rand-fdist.png new file mode 100644 index 00000000..3145ad14 Binary files /dev/null and b/gsl-2.5/doc/images/rand-fdist.png differ diff --git a/gsl-2.5/doc/images/rand-flat.png b/gsl-2.5/doc/images/rand-flat.png new file mode 100644 index 00000000..cc5e0fc7 Binary files /dev/null and b/gsl-2.5/doc/images/rand-flat.png differ diff --git a/gsl-2.5/doc/images/rand-gamma.png b/gsl-2.5/doc/images/rand-gamma.png new file mode 100644 index 00000000..b48e9510 Binary files /dev/null and b/gsl-2.5/doc/images/rand-gamma.png differ diff --git a/gsl-2.5/doc/images/rand-gaussian-tail.png b/gsl-2.5/doc/images/rand-gaussian-tail.png new file mode 100644 index 00000000..bdefa9d9 Binary files /dev/null and b/gsl-2.5/doc/images/rand-gaussian-tail.png differ diff --git a/gsl-2.5/doc/images/rand-gaussian.png b/gsl-2.5/doc/images/rand-gaussian.png new file mode 100644 index 00000000..03e090a8 Binary files /dev/null and b/gsl-2.5/doc/images/rand-gaussian.png differ diff --git a/gsl-2.5/doc/images/rand-geometric.png b/gsl-2.5/doc/images/rand-geometric.png new file mode 100644 index 00000000..a8cafb95 Binary files /dev/null and b/gsl-2.5/doc/images/rand-geometric.png differ diff --git a/gsl-2.5/doc/images/rand-gumbel1.png b/gsl-2.5/doc/images/rand-gumbel1.png new file mode 100644 index 00000000..ae6f91dd Binary files /dev/null and b/gsl-2.5/doc/images/rand-gumbel1.png differ diff --git a/gsl-2.5/doc/images/rand-gumbel2.png b/gsl-2.5/doc/images/rand-gumbel2.png new file mode 100644 index 00000000..e39222cf Binary files /dev/null and b/gsl-2.5/doc/images/rand-gumbel2.png differ diff --git a/gsl-2.5/doc/images/rand-hypergeometric.png b/gsl-2.5/doc/images/rand-hypergeometric.png new file mode 100644 index 00000000..a0b8696d Binary files /dev/null and b/gsl-2.5/doc/images/rand-hypergeometric.png differ diff --git a/gsl-2.5/doc/images/rand-landau.png b/gsl-2.5/doc/images/rand-landau.png new file mode 100644 index 00000000..26872547 Binary files /dev/null and b/gsl-2.5/doc/images/rand-landau.png differ diff --git a/gsl-2.5/doc/images/rand-laplace.png b/gsl-2.5/doc/images/rand-laplace.png new file mode 100644 index 00000000..20df0dcf Binary files /dev/null and b/gsl-2.5/doc/images/rand-laplace.png differ diff --git a/gsl-2.5/doc/images/rand-levy.png b/gsl-2.5/doc/images/rand-levy.png new file mode 100644 index 00000000..8d2b2971 Binary files /dev/null and b/gsl-2.5/doc/images/rand-levy.png differ diff --git a/gsl-2.5/doc/images/rand-levyskew.png b/gsl-2.5/doc/images/rand-levyskew.png new file mode 100644 index 00000000..7b4e9c36 Binary files /dev/null and b/gsl-2.5/doc/images/rand-levyskew.png differ diff --git a/gsl-2.5/doc/images/rand-logarithmic.png b/gsl-2.5/doc/images/rand-logarithmic.png new file mode 100644 index 00000000..d703fd7f Binary files /dev/null and b/gsl-2.5/doc/images/rand-logarithmic.png differ diff --git a/gsl-2.5/doc/images/rand-logistic.png b/gsl-2.5/doc/images/rand-logistic.png new file mode 100644 index 00000000..9a111885 Binary files /dev/null and b/gsl-2.5/doc/images/rand-logistic.png differ diff --git a/gsl-2.5/doc/images/rand-lognormal.png b/gsl-2.5/doc/images/rand-lognormal.png new file mode 100644 index 00000000..c52b3327 Binary files /dev/null and b/gsl-2.5/doc/images/rand-lognormal.png differ diff --git a/gsl-2.5/doc/images/rand-nbinomial.png b/gsl-2.5/doc/images/rand-nbinomial.png new file mode 100644 index 00000000..44368835 Binary files /dev/null and b/gsl-2.5/doc/images/rand-nbinomial.png differ diff --git a/gsl-2.5/doc/images/rand-pareto.png b/gsl-2.5/doc/images/rand-pareto.png new file mode 100644 index 00000000..8413841a Binary files /dev/null and b/gsl-2.5/doc/images/rand-pareto.png differ diff --git a/gsl-2.5/doc/images/rand-pascal.png b/gsl-2.5/doc/images/rand-pascal.png new file mode 100644 index 00000000..09e0e865 Binary files /dev/null and b/gsl-2.5/doc/images/rand-pascal.png differ diff --git a/gsl-2.5/doc/images/rand-poisson.png b/gsl-2.5/doc/images/rand-poisson.png new file mode 100644 index 00000000..e34746ac Binary files /dev/null and b/gsl-2.5/doc/images/rand-poisson.png differ diff --git a/gsl-2.5/doc/images/rand-rayleigh-tail.png b/gsl-2.5/doc/images/rand-rayleigh-tail.png new file mode 100644 index 00000000..f30d5719 Binary files /dev/null and b/gsl-2.5/doc/images/rand-rayleigh-tail.png differ diff --git a/gsl-2.5/doc/images/rand-rayleigh.png b/gsl-2.5/doc/images/rand-rayleigh.png new file mode 100644 index 00000000..bca1791c Binary files /dev/null and b/gsl-2.5/doc/images/rand-rayleigh.png differ diff --git a/gsl-2.5/doc/images/rand-tdist.png b/gsl-2.5/doc/images/rand-tdist.png new file mode 100644 index 00000000..e456e995 Binary files /dev/null and b/gsl-2.5/doc/images/rand-tdist.png differ diff --git a/gsl-2.5/doc/images/rand-weibull.png b/gsl-2.5/doc/images/rand-weibull.png new file mode 100644 index 00000000..d1bf26fc Binary files /dev/null and b/gsl-2.5/doc/images/rand-weibull.png differ diff --git a/gsl-2.5/doc/images/random-walk.png b/gsl-2.5/doc/images/random-walk.png new file mode 100644 index 00000000..f555e769 Binary files /dev/null and b/gsl-2.5/doc/images/random-walk.png differ diff --git a/gsl-2.5/doc/images/regularized.png b/gsl-2.5/doc/images/regularized.png new file mode 100644 index 00000000..49578ce5 Binary files /dev/null and b/gsl-2.5/doc/images/regularized.png differ diff --git a/gsl-2.5/doc/images/regularized2.png b/gsl-2.5/doc/images/regularized2.png new file mode 100644 index 00000000..a5df5a52 Binary files /dev/null and b/gsl-2.5/doc/images/regularized2.png differ diff --git a/gsl-2.5/doc/images/robust.png b/gsl-2.5/doc/images/robust.png new file mode 100644 index 00000000..c1d06336 Binary files /dev/null and b/gsl-2.5/doc/images/robust.png differ diff --git a/gsl-2.5/doc/images/siman-12-cities.png b/gsl-2.5/doc/images/siman-12-cities.png new file mode 100644 index 00000000..30baab98 Binary files /dev/null and b/gsl-2.5/doc/images/siman-12-cities.png differ diff --git a/gsl-2.5/doc/images/siman-energy.png b/gsl-2.5/doc/images/siman-energy.png new file mode 100644 index 00000000..e838025d Binary files /dev/null and b/gsl-2.5/doc/images/siman-energy.png differ diff --git a/gsl-2.5/doc/images/siman-final-route.png b/gsl-2.5/doc/images/siman-final-route.png new file mode 100644 index 00000000..4e6d9bb8 Binary files /dev/null and b/gsl-2.5/doc/images/siman-final-route.png differ diff --git a/gsl-2.5/doc/images/siman-initial-route.png b/gsl-2.5/doc/images/siman-initial-route.png new file mode 100644 index 00000000..8dc42412 Binary files /dev/null and b/gsl-2.5/doc/images/siman-initial-route.png differ diff --git a/gsl-2.5/doc/images/siman-test.png b/gsl-2.5/doc/images/siman-test.png new file mode 100644 index 00000000..851b862b Binary files /dev/null and b/gsl-2.5/doc/images/siman-test.png differ diff --git a/gsl-2.5/doc/images/sparse_poisson.png b/gsl-2.5/doc/images/sparse_poisson.png new file mode 100644 index 00000000..97569d45 Binary files /dev/null and b/gsl-2.5/doc/images/sparse_poisson.png differ diff --git a/gsl-2.5/doc/include.rst b/gsl-2.5/doc/include.rst new file mode 100644 index 00000000..b84454c9 --- /dev/null +++ b/gsl-2.5/doc/include.rst @@ -0,0 +1,16 @@ +.. |inlinefns| replace:: Inline versions of these functions are used when :code:`HAVE_INLINE` is defined. +.. |inlinefn| replace:: An inline version of this function is used when :code:`HAVE_INLINE` is defined. +.. |lapack| replace:: LAPACK +.. |octave| replace:: GNU octave +.. |fftpack| replace:: FFTPACK +.. |quadpack| replace:: QUADPACK +.. |minpack| replace:: MINPACK +.. |cquad| replace:: CQUAD +.. |blas| replace:: BLAS +.. |cblas| replace:: CBLAS +.. |atlas| replace:: ATLAS +.. |More| replace:: Moré + +.. |newpage| raw:: latex + + \newpage diff --git a/gsl-2.5/doc/index.rst b/gsl-2.5/doc/index.rst new file mode 100644 index 00000000..effd7f45 --- /dev/null +++ b/gsl-2.5/doc/index.rst @@ -0,0 +1,68 @@ +.. GSL documentation master file, created by + sphinx-quickstart on Mon Feb 27 15:17:27 2017. + You can adapt this file completely to your liking, but it should at least + contain the root `toctree` directive. + +GNU Scientific Library +++++++++++++++++++++++ + +.. toctree:: + :maxdepth: 2 + + intro.rst + usage.rst + err.rst + math.rst + complex.rst + poly.rst + specfunc.rst + vectors.rst + permutation.rst + combination.rst + multiset.rst + sort.rst + blas.rst + linalg.rst + eigen.rst + fft.rst + integration.rst + rng.rst + qrng.rst + randist.rst + statistics.rst + rstat.rst + movstat.rst + filter.rst + histogram.rst + ntuple.rst + montecarlo.rst + siman.rst + ode-initval.rst + interp.rst + diff.rst + cheb.rst + sum.rst + dwt.rst + dht.rst + roots.rst + min.rst + multiroots.rst + multimin.rst + lls.rst + nls.rst + bspline.rst + spmatrix.rst + spblas.rst + splinalg.rst + const.rst + ieee754.rst + + debug.rst + contrib.rst + autoconf.rst + cblas.rst + gpl.rst + fdl.rst + + +* :ref:`genindex` diff --git a/gsl-2.5/doc/integration.rst b/gsl-2.5/doc/integration.rst new file mode 100644 index 00000000..b49fe1f2 --- /dev/null +++ b/gsl-2.5/doc/integration.rst @@ -0,0 +1,1022 @@ +.. index:: + single: quadrature + single: numerical integration (quadrature) + single: integration, numerical (quadrature) + single: QUADPACK + +********************* +Numerical Integration +********************* + +.. include:: include.rst + +This chapter describes routines for performing numerical integration +(quadrature) of a function in one dimension. There are routines for +adaptive and non-adaptive integration of general functions, with +specialised routines for specific cases. These include integration over +infinite and semi-infinite ranges, singular integrals, including +logarithmic singularities, computation of Cauchy principal values and +oscillatory integrals. The library reimplements the algorithms used in +|quadpack|, a numerical integration package written by Piessens, +de Doncker-Kapenga, Ueberhuber and Kahaner. Fortran code for |quadpack| is +available on Netlib. Also included are non-adaptive, fixed-order +Gauss-Legendre integration routines with high precision coefficients, as +well as fixed-order quadrature rules for a variety of weighting functions +from IQPACK. + +The functions described in this chapter are declared in the header file +:file:`gsl_integration.h`. + +Introduction +============ + +Each algorithm computes an approximation to a definite integral of the +form, + +.. math:: I = \int_a^b f(x) w(x) dx + +where :math:`w(x)` is a weight function (for general integrands :math:`w(x) = 1`). +The user provides absolute and relative error bounds +:math:`(epsabs, epsrel)` which specify the following accuracy requirement, + +.. only:: not texinfo + + .. math:: |RESULT - I| \leq \max{(epsabs, epsrel |I|)} + +.. only:: texinfo + + .. math:: |RESULT - I| <= max(epsabs, epsrel |I|) + +where :math:`RESULT` is the numerical approximation obtained by the +algorithm. The algorithms attempt to estimate the absolute error +:math:`ABSERR = |RESULT - I|` in such a way that the following inequality +holds, + +.. only:: not texinfo + + .. math:: |RESULT - I| \leq ABSERR \leq \max{(epsabs, epsrel |I|)} + +.. only:: texinfo + + .. math:: |RESULT - I| <= ABSERR <= max(epsabs, epsrel |I|) + +In short, the routines return the first approximation +which has an absolute error smaller than +:math:`epsabs` or a relative error smaller than :math:`epsrel`. + +Note that this is an *either-or* constraint, +not simultaneous. To compute to a specified absolute error, set +:math:`epsrel` to zero. To compute to a specified relative error, +set :math:`epsabs` to zero. +The routines will fail to converge if the error bounds are too +stringent, but always return the best approximation obtained up to +that stage. + +The algorithms in |quadpack| use a naming convention based on the +following letters:: + + Q - quadrature routine + + N - non-adaptive integrator + A - adaptive integrator + + G - general integrand (user-defined) + W - weight function with integrand + + S - singularities can be more readily integrated + P - points of special difficulty can be supplied + I - infinite range of integration + O - oscillatory weight function, cos or sin + F - Fourier integral + C - Cauchy principal value + +The algorithms are built on pairs of quadrature rules, a higher order +rule and a lower order rule. The higher order rule is used to compute +the best approximation to an integral over a small range. The +difference between the results of the higher order rule and the lower +order rule gives an estimate of the error in the approximation. + +.. index:: Gauss-Kronrod quadrature + +Integrands without weight functions +----------------------------------- + +The algorithms for general functions (without a weight function) are +based on Gauss-Kronrod rules. + +A Gauss-Kronrod rule begins with a classical Gaussian quadrature rule of +order :math:`m`. This is extended with additional points between each of +the abscissae to give a higher order Kronrod rule of order :math:`2m + 1`. +The Kronrod rule is efficient because it reuses existing function +evaluations from the Gaussian rule. + +The higher order Kronrod rule is used as the best approximation to the +integral, and the difference between the two rules is used as an +estimate of the error in the approximation. + +Integrands with weight functions +-------------------------------- + +.. index:: + single: Clenshaw-Curtis quadrature + single: Modified Clenshaw-Curtis quadrature + +For integrands with weight functions the algorithms use Clenshaw-Curtis +quadrature rules. + +A Clenshaw-Curtis rule begins with an :math:`n`-th order Chebyshev +polynomial approximation to the integrand. This polynomial can be +integrated exactly to give an approximation to the integral of the +original function. The Chebyshev expansion can be extended to higher +orders to improve the approximation and provide an estimate of the +error. + +Integrands with singular weight functions +----------------------------------------- + +The presence of singularities (or other behavior) in the integrand can +cause slow convergence in the Chebyshev approximation. The modified +Clenshaw-Curtis rules used in |quadpack| separate out several common +weight functions which cause slow convergence. + +These weight functions are integrated analytically against the Chebyshev +polynomials to precompute *modified Chebyshev moments*. Combining +the moments with the Chebyshev approximation to the function gives the +desired integral. The use of analytic integration for the singular part +of the function allows exact cancellations and substantially improves +the overall convergence behavior of the integration. + +QNG non-adaptive Gauss-Kronrod integration +========================================== +.. index:: QNG quadrature algorithm + +The QNG algorithm is a non-adaptive procedure which uses fixed +Gauss-Kronrod-Patterson abscissae to sample the integrand at a maximum of 87 +points. It is provided for fast integration of smooth functions. + +.. function:: int gsl_integration_qng (const gsl_function * f, double a, double b, double epsabs, double epsrel, double * result, double * abserr, size_t * neval) + + This function applies the Gauss-Kronrod 10-point, 21-point, 43-point and + 87-point integration rules in succession until an estimate of the + integral of :math:`f` over :math:`(a,b)` is achieved within the desired + absolute and relative error limits, :data:`epsabs` and :data:`epsrel`. The + function returns the final approximation, :data:`result`, an estimate of + the absolute error, :data:`abserr` and the number of function evaluations + used, :data:`neval`. The Gauss-Kronrod rules are designed in such a way + that each rule uses all the results of its predecessors, in order to + minimize the total number of function evaluations. + + +QAG adaptive integration +======================== +.. index:: QAG quadrature algorithm + +The QAG algorithm is a simple adaptive integration procedure. The +integration region is divided into subintervals, and on each iteration +the subinterval with the largest estimated error is bisected. This +reduces the overall error rapidly, as the subintervals become +concentrated around local difficulties in the integrand. These +subintervals are managed by the following struct, + +.. type:: gsl_integration_workspace + + This workspace handles the memory for the subinterval ranges, results and error + estimates. + +.. index:: gsl_integration_workspace + +.. function:: gsl_integration_workspace * gsl_integration_workspace_alloc (size_t n) + + This function allocates a workspace sufficient to hold :data:`n` double + precision intervals, their integration results and error estimates. + One workspace may be used multiple times as all necessary reinitialization + is performed automatically by the integration routines. + +.. function:: void gsl_integration_workspace_free (gsl_integration_workspace * w) + + This function frees the memory associated with the workspace :data:`w`. + +.. function:: int gsl_integration_qag (const gsl_function * f, double a, double b, double epsabs, double epsrel, size_t limit, int key, gsl_integration_workspace * workspace, double * result, double * abserr) + + This function applies an integration rule adaptively until an estimate + of the integral of :math:`f` over :math:`(a,b)` is achieved within the + desired absolute and relative error limits, :data:`epsabs` and + :data:`epsrel`. The function returns the final approximation, + :data:`result`, and an estimate of the absolute error, :data:`abserr`. The + integration rule is determined by the value of :data:`key`, which should + be chosen from the following symbolic names, + + * .. macro:: GSL_INTEG_GAUSS15 (key = 1) + + * .. macro:: GSL_INTEG_GAUSS21 (key = 2) + + * .. macro:: GSL_INTEG_GAUSS31 (key = 3) + + * .. macro:: GSL_INTEG_GAUSS41 (key = 4) + + * .. macro:: GSL_INTEG_GAUSS51 (key = 5) + + * .. macro:: GSL_INTEG_GAUSS61 (key = 6) + + corresponding to the 15, 21, 31, 41, 51 and 61 point Gauss-Kronrod + rules. The higher-order rules give better accuracy for smooth functions, + while lower-order rules save time when the function contains local + difficulties, such as discontinuities. + + On each iteration the adaptive integration strategy bisects the interval + with the largest error estimate. The subintervals and their results are + stored in the memory provided by :data:`workspace`. The maximum number of + subintervals is given by :data:`limit`, which may not exceed the allocated + size of the workspace. + +QAGS adaptive integration with singularities +============================================ +.. index:: QAGS quadrature algorithm + +The presence of an integrable singularity in the integration region +causes an adaptive routine to concentrate new subintervals around the +singularity. As the subintervals decrease in size the successive +approximations to the integral converge in a limiting fashion. This +approach to the limit can be accelerated using an extrapolation +procedure. The QAGS algorithm combines adaptive bisection with the Wynn +epsilon-algorithm to speed up the integration of many types of +integrable singularities. + +.. function:: int gsl_integration_qags (const gsl_function * f, double a, double b, double epsabs, double epsrel, size_t limit, gsl_integration_workspace * workspace, double * result, double * abserr) + + This function applies the Gauss-Kronrod 21-point integration rule + adaptively until an estimate of the integral of :math:`f` over + :math:`(a,b)` is achieved within the desired absolute and relative error + limits, :data:`epsabs` and :data:`epsrel`. The results are extrapolated + using the epsilon-algorithm, which accelerates the convergence of the + integral in the presence of discontinuities and integrable + singularities. The function returns the final approximation from the + extrapolation, :data:`result`, and an estimate of the absolute error, + :data:`abserr`. The subintervals and their results are stored in the + memory provided by :data:`workspace`. The maximum number of subintervals + is given by :data:`limit`, which may not exceed the allocated size of the + workspace. + +QAGP adaptive integration with known singular points +==================================================== +.. index:: + single: QAGP quadrature algorithm + single: singular points, specifying positions in quadrature + +.. function:: int gsl_integration_qagp (const gsl_function * f, double * pts, size_t npts, double epsabs, double epsrel, size_t limit, gsl_integration_workspace * workspace, double * result, double * abserr) + + This function applies the adaptive integration algorithm QAGS taking + account of the user-supplied locations of singular points. The array + :data:`pts` of length :data:`npts` should contain the endpoints of the + integration ranges defined by the integration region and locations of + the singularities. For example, to integrate over the region + :math:`(a,b)` with break-points at :math:`x_1, x_2, x_3` (where + :math:`a < x_1 < x_2 < x_3 < b`) the following :data:`pts` array should be used:: + + pts[0] = a + pts[1] = x_1 + pts[2] = x_2 + pts[3] = x_3 + pts[4] = b + + with :data:`npts` = 5. + + If you know the locations of the singular points in the integration + region then this routine will be faster than :func:`gsl_integration_qags`. + +QAGI adaptive integration on infinite intervals +=============================================== +.. index:: QAGI quadrature algorithm + +.. function:: int gsl_integration_qagi (gsl_function * f, double epsabs, double epsrel, size_t limit, gsl_integration_workspace * workspace, double * result, double * abserr) + + This function computes the integral of the function :data:`f` over the + infinite interval :math:`(-\infty,+\infty)`. The integral is mapped onto the + semi-open interval :math:`(0,1]` using the transformation :math:`x = (1-t)/t`, + + .. math:: \int_{-\infty}^{+\infty} dx f(x) = \int_0^1 dt (f((1-t)/t) + f(-(1-t)/t))/t^2. + + It is then integrated using the QAGS algorithm. The normal 21-point + Gauss-Kronrod rule of QAGS is replaced by a 15-point rule, because the + transformation can generate an integrable singularity at the origin. In + this case a lower-order rule is more efficient. + +.. function:: int gsl_integration_qagiu (gsl_function * f, double a, double epsabs, double epsrel, size_t limit, gsl_integration_workspace * workspace, double * result, double * abserr) + + This function computes the integral of the function :data:`f` over the + semi-infinite interval :math:`(a,+\infty)`. The integral is mapped onto the + semi-open interval :math:`(0,1]` using the transformation :math:`x = a + (1-t)/t`, + + .. math:: \int_{a}^{+\infty} dx f(x) = \int_0^1 dt f(a + (1-t)/t)/t^2 + + and then integrated using the QAGS algorithm. + +.. function:: int gsl_integration_qagil (gsl_function * f, double b, double epsabs, double epsrel, size_t limit, gsl_integration_workspace * workspace, double * result, double * abserr) + + This function computes the integral of the function :data:`f` over the + semi-infinite interval :math:`(-\infty,b)`. The integral is mapped onto the + semi-open interval :math:`(0,1]` using the transformation :math:`x = b - (1-t)/t`, + + .. math:: \int_{-\infty}^{b} dx f(x) = \int_0^1 dt f(b - (1-t)/t)/t^2 + + and then integrated using the QAGS algorithm. + +QAWC adaptive integration for Cauchy principal values +===================================================== +.. index:: + single: QAWC quadrature algorithm + single: Cauchy principal value, by numerical quadrature + +.. function:: int gsl_integration_qawc (gsl_function * f, double a, double b, double c, double epsabs, double epsrel, size_t limit, gsl_integration_workspace * workspace, double * result, double * abserr) + + This function computes the Cauchy principal value of the integral of + :math:`f` over :math:`(a,b)`, with a singularity at :data:`c`, + + .. only:: not texinfo + + .. math:: + + I = \int_a^b dx\, {f(x) \over x - c} + = \lim_{\epsilon \to 0} + \left\{ + \int_a^{c-\epsilon} dx\, {f(x) \over x - c} + + + \int_{c+\epsilon}^b dx\, {f(x) \over x - c} + \right\} + + .. only:: texinfo + + .. math:: I = \int_a^b dx f(x) / (x - c) + + The adaptive bisection algorithm of QAG is used, with modifications to + ensure that subdivisions do not occur at the singular point :math:`x = c`. + When a subinterval contains the point :math:`x = c` or is close to + it then a special 25-point modified Clenshaw-Curtis rule is used to control + the singularity. Further away from the + singularity the algorithm uses an ordinary 15-point Gauss-Kronrod + integration rule. + +QAWS adaptive integration for singular functions +================================================ +.. index:: + single: QAWS quadrature algorithm + single: singular functions, numerical integration of + +The QAWS algorithm is designed for integrands with algebraic-logarithmic +singularities at the end-points of an integration region. In order to +work efficiently the algorithm requires a precomputed table of +Chebyshev moments. + +.. type:: gsl_integration_qaws_table + + This structure contains precomputed quantities for the QAWS algorithm. + +.. function:: gsl_integration_qaws_table * gsl_integration_qaws_table_alloc (double alpha, double beta, int mu, int nu) + + This function allocates space for a :type:`gsl_integration_qaws_table` + struct describing a singular weight function + :math:`w(x)` with the parameters :math:`(\alpha, \beta, \mu, \nu)`, + + .. math:: w(x) = (x - a)^\alpha (b - x)^\beta \log^\mu (x - a) \log^\nu (b - x) + + where :math:`\alpha > -1`, :math:`\beta > -1`, and :math:`\mu = 0, 1`, + :math:`\nu = 0, 1`. The weight function can take four different forms + depending on the values of :math:`\mu` and :math:`\nu`, + + ============================================================ ================= + Weight function :math:`w(x)` :math:`(\mu,\nu)` + ============================================================ ================= + :math:`(x - a)^\alpha (b - x)^\beta` :math:`(0,0)` + :math:`(x - a)^\alpha (b - x)^\beta \log{(x-a)}` :math:`(1,0)` + :math:`(x - a)^\alpha (b - x)^\beta \log{(b-x)}` :math:`(0,1)` + :math:`(x - a)^\alpha (b - x)^\beta \log{(x-a)} \log{(b-x)}` :math:`(1,1)` + ============================================================ ================= + + The singular points :math:`(a,b)` do not have to be specified until the + integral is computed, where they are the endpoints of the integration + range. + + The function returns a pointer to the newly allocated table + :type:`gsl_integration_qaws_table` if no errors were detected, and 0 in + the case of error. + +.. function:: int gsl_integration_qaws_table_set (gsl_integration_qaws_table * t, double alpha, double beta, int mu, int nu) + + This function modifies the parameters :math:`(\alpha, \beta, \mu, \nu)` of + an existing :type:`gsl_integration_qaws_table` struct :data:`t`. + +.. function:: void gsl_integration_qaws_table_free (gsl_integration_qaws_table * t) + + This function frees all the memory associated with the + :type:`gsl_integration_qaws_table` struct :data:`t`. + +.. function:: int gsl_integration_qaws (gsl_function * f, const double a, const double b, gsl_integration_qaws_table * t, const double epsabs, const double epsrel, const size_t limit, gsl_integration_workspace * workspace, double * result, double * abserr) + + This function computes the integral of the function :math:`f(x)` over the + interval :math:`(a,b)` with the singular weight function + :math:`(x-a)^\alpha (b-x)^\beta \log^\mu (x-a) \log^\nu (b-x)`. The parameters + of the weight function :math:`(\alpha, \beta, \mu, \nu)` are taken from the + table :data:`t`. The integral is, + + .. math:: I = \int_a^b dx f(x) (x - a)^\alpha (b - x)^\beta \log^\mu (x - a) \log^\nu (b - x). + + The adaptive bisection algorithm of QAG is used. When a subinterval + contains one of the endpoints then a special 25-point modified + Clenshaw-Curtis rule is used to control the singularities. For + subintervals which do not include the endpoints an ordinary 15-point + Gauss-Kronrod integration rule is used. + +QAWO adaptive integration for oscillatory functions +=================================================== +.. index:: + single: QAWO quadrature algorithm + single: oscillatory functions, numerical integration of + +The QAWO algorithm is designed for integrands with an oscillatory +factor, :math:`\sin(\omega x)` or :math:`\cos(\omega x)`. In order to +work efficiently the algorithm requires a table of Chebyshev moments +which must be pre-computed with calls to the functions below. + +.. index:: gsl_integration_qawo_table + +.. function:: gsl_integration_qawo_table * gsl_integration_qawo_table_alloc (double omega, double L, enum gsl_integration_qawo_enum sine, size_t n) + + This function allocates space for a :type:`gsl_integration_qawo_table` + struct and its associated workspace describing a sine or cosine weight + function :math:`w(x)` with the parameters :math:`(\omega, L)`, + + .. only:: not texinfo + + .. math:: + + w(x) = + \left\{ + \begin{array}{c} + \sin{(\omega x)} \\ + \cos{(\omega x)} \\ + \end{array} + \right\} + + .. only:: texinfo + + | w(x) = sin(\omega x) + | w(x) = cos(\omega x) + + The parameter :data:`L` must be the length of the interval over which the + function will be integrated :math:`L = b - a`. The choice of sine or + cosine is made with the parameter :data:`sine` which should be chosen from + one of the two following symbolic values: + + .. macro:: GSL_INTEG_COSINE + + .. macro:: GSL_INTEG_SINE + + The :type:`gsl_integration_qawo_table` is a table of the trigonometric + coefficients required in the integration process. The parameter :data:`n` + determines the number of levels of coefficients that are computed. Each + level corresponds to one bisection of the interval :math:`L`, so that + :data:`n` levels are sufficient for subintervals down to the length + :math:`L/2^n`. The integration routine :func:`gsl_integration_qawo` + returns the error :code:`GSL_ETABLE` if the number of levels is + insufficient for the requested accuracy. + +.. function:: int gsl_integration_qawo_table_set (gsl_integration_qawo_table * t, double omega, double L, enum gsl_integration_qawo_enum sine) + + This function changes the parameters :data:`omega`, :data:`L` and :data:`sine` + of the existing workspace :data:`t`. + +.. function:: int gsl_integration_qawo_table_set_length (gsl_integration_qawo_table * t, double L) + + This function allows the length parameter :data:`L` of the workspace + :data:`t` to be changed. + +.. function:: void gsl_integration_qawo_table_free (gsl_integration_qawo_table * t) + + This function frees all the memory associated with the workspace :data:`t`. + +.. function:: int gsl_integration_qawo (gsl_function * f, const double a, const double epsabs, const double epsrel, const size_t limit, gsl_integration_workspace * workspace, gsl_integration_qawo_table * wf, double * result, double * abserr) + + This function uses an adaptive algorithm to compute the integral of + :math:`f` over :math:`(a,b)` with the weight function + :math:`\sin(\omega x)` or :math:`\cos(\omega x)` defined + by the table :data:`wf`, + + .. only:: not texinfo + + .. math:: + + I = \int_a^b dx f(x) + \left\{ + \begin{array}{c} + \sin{(\omega x)} \\ + \cos{(\omega x)} + \end{array} + \right\} + + .. only:: texinfo + + | I = \int_a^b dx f(x) sin(omega x) + | I = \int_a^b dx f(x) cos(omega x) + + The results are extrapolated using the epsilon-algorithm to accelerate + the convergence of the integral. The function returns the final + approximation from the extrapolation, :data:`result`, and an estimate of + the absolute error, :data:`abserr`. The subintervals and their results are + stored in the memory provided by :data:`workspace`. The maximum number of + subintervals is given by :data:`limit`, which may not exceed the allocated + size of the workspace. + + Those subintervals with "large" widths :math:`d` where :math:`d\omega > 4` are + computed using a 25-point Clenshaw-Curtis integration rule, which handles the + oscillatory behavior. Subintervals with a "small" widths where + :math:`d\omega < 4` are computed using a 15-point Gauss-Kronrod integration. + +QAWF adaptive integration for Fourier integrals +=============================================== +.. index:: + single: QAWF quadrature algorithm + single: Fourier integrals, numerical + +.. function:: int gsl_integration_qawf (gsl_function * f, const double a, const double epsabs, const size_t limit, gsl_integration_workspace * workspace, gsl_integration_workspace * cycle_workspace, gsl_integration_qawo_table * wf, double * result, double * abserr) + + This function attempts to compute a Fourier integral of the function + :data:`f` over the semi-infinite interval :math:`[a,+\infty)` + + .. only:: not texinfo + + .. math:: + + I = \int_a^{+\infty} dx f(x) + \left\{ + \begin{array}{c} + \sin{(\omega x)} \\ + \cos{(\omega x)} + \end{array} + \right\} + + .. only:: texinfo + + :: + + I = \int_a^{+\infty} dx f(x) sin(omega x) + I = \int_a^{+\infty} dx f(x) cos(omega x) + + The parameter :math:`\omega` and choice of :math:`\sin` or :math:`\cos` is + taken from the table :data:`wf` (the length :data:`L` can take any value, + since it is overridden by this function to a value appropriate for the + Fourier integration). The integral is computed using the QAWO algorithm + over each of the subintervals, + + .. only:: not texinfo + + .. math:: + + C_1 &= [a,a+c] \\ + C_2 &= [a+c,a+2c] \\ + \dots &= \dots \\ + C_k &= [a+(k-1)c,a+kc] + + .. only:: texinfo + + :: + + C_1 = [a, a + c] + C_2 = [a + c, a + 2 c] + ... = ... + C_k = [a + (k-1) c, a + k c] + + where + :math:`c = (2 floor(|\omega|) + 1) \pi/|\omega|`. The width :math:`c` is + chosen to cover an odd number of periods so that the contributions from + the intervals alternate in sign and are monotonically decreasing when + :data:`f` is positive and monotonically decreasing. The sum of this + sequence of contributions is accelerated using the epsilon-algorithm. + + This function works to an overall absolute tolerance of + :data:`abserr`. The following strategy is used: on each interval + :math:`C_k` the algorithm tries to achieve the tolerance + + .. math:: TOL_k = u_k abserr + + where + :math:`u_k = (1 - p)p^{k-1}` and :math:`p = 9/10`. + The sum of the geometric series of contributions from each interval + gives an overall tolerance of :data:`abserr`. + + If the integration of a subinterval leads to difficulties then the + accuracy requirement for subsequent intervals is relaxed, + + .. only:: not texinfo + + .. math:: TOL_k = u_k \max{(abserr, \max_{i a` +Chebyshev Type 1 :math:`(a,b)` :math:`1 / \sqrt{(b - x) (x - a)}` :math:`b > a` +Gegenbauer :math:`(a,b)` :math:`((b - x) (x - a))^{\alpha}` :math:`\alpha > -1, b > a` +Jacobi :math:`(a,b)` :math:`(b - x)^{\alpha} (x - a)^{\beta}` :math:`\alpha,\beta > -1, b > a` +Laguerre :math:`(a,\infty)` :math:`(x-a)^{\alpha} \exp{( -b (x - a) )}` :math:`\alpha > -1, b > 0` +Hermite :math:`(-\infty,\infty)` :math:`|x-a|^{\alpha} \exp{( -b (x-a)^2 )}` :math:`\alpha > -1, b > 0` +Exponential :math:`(a,b)` :math:`|x - (a + b)/2|^{\alpha}` :math:`\alpha > -1, b > a` +Rational :math:`(a,\infty)` :math:`(x - a)^{\alpha} (x + b)^{\beta}` :math:`\alpha > -1, \alpha + \beta + 2n < 0, a + b > 0` +Chebyshev Type 2 :math:`(a,b)` :math:`\sqrt{(b - x) (x - a)}` :math:`b > a` +================ ======================== =========================================== ======================================================= + +The fixed point quadrature routines use the following workspace to store the nodes and weights, +as well as additional variables for intermediate calculations: + +.. type:: gsl_integration_fixed_workspace + + This workspace is used for fixed point quadrature rules and looks like this:: + + typedef struct + { + size_t n; /* number of nodes/weights */ + double *weights; /* quadrature weights */ + double *x; /* quadrature nodes */ + double *diag; /* diagonal of Jacobi matrix */ + double *subdiag; /* subdiagonal of Jacobi matrix */ + const gsl_integration_fixed_type * type; + } gsl_integration_fixed_workspace; + +.. function:: gsl_integration_fixed_workspace * gsl_integration_fixed_alloc(const gsl_integration_fixed_type * T, const size_t n, const double a, const double b, const double alpha, const double beta) + + This function allocates a workspace for computing integrals with interpolating quadratures using :data:`n` + quadrature nodes. The parameters :data:`a`, :data:`b`, :data:`alpha`, and :data:`beta` specify the integration + interval and/or weighting function for the various quadrature types. See the :ref:`table ` above + for constraints on these parameters. The size of the workspace is :math:`O(4n)`. + + .. type:: gsl_integration_fixed_type + + The type of quadrature used is specified by :data:`T` which can be set to the following choices: + + .. var:: gsl_integration_fixed_legendre + + This specifies Legendre quadrature integration. The parameters :data:`alpha` and + :data:`beta` are ignored for this type. + + .. var:: gsl_integration_fixed_chebyshev + + This specifies Chebyshev type 1 quadrature integration. The parameters :data:`alpha` and + :data:`beta` are ignored for this type. + + .. var:: gsl_integration_fixed_gegenbauer + + This specifies Gegenbauer quadrature integration. The parameter :data:`beta` is ignored for this type. + + .. var:: gsl_integration_fixed_jacobi + + This specifies Jacobi quadrature integration. + + .. var:: gsl_integration_fixed_laguerre + + This specifies Laguerre quadrature integration. The parameter :data:`beta` is ignored for this type. + + .. var:: gsl_integration_fixed_hermite + + This specifies Hermite quadrature integration. The parameter :data:`beta` is ignored for this type. + + .. var:: gsl_integration_fixed_exponential + + This specifies exponential quadrature integration. The parameter :data:`beta` is ignored for this type. + + .. var:: gsl_integration_fixed_rational + + This specifies rational quadrature integration. + + .. var:: gsl_integration_fixed_chebyshev2 + + This specifies Chebyshev type 2 quadrature integration. The parameters :data:`alpha` and + :data:`beta` are ignored for this type. + +.. function:: void gsl_integration_fixed_free(gsl_integration_fixed_workspace * w) + + This function frees the memory assocated with the workspace :data:`w` + +.. function:: size_t gsl_integration_fixed_n(const gsl_integration_fixed_workspace * w) + + This function returns the number of quadrature nodes and weights. + +.. function:: double * gsl_integration_fixed_nodes(const gsl_integration_fixed_workspace * w) + + This function returns a pointer to an array of size :data:`n` containing the quadrature nodes :math:`x_i`. + +.. function:: double * gsl_integration_fixed_weights(const gsl_integration_fixed_workspace * w) + + This function returns a pointer to an array of size :data:`n` containing the quadrature weights :math:`w_i`. + +.. function:: int gsl_integration_fixed(const gsl_function * func, double * result, const gsl_integration_fixed_workspace * w) + + This function integrates the function :math:`f(x)` provided in :data:`func` using previously + computed fixed quadrature rules. The integral is approximated as + + .. math:: \sum_{i=1}^n w_i f(x_i) + + where :math:`w_i` are the quadrature weights and :math:`x_i` are the quadrature nodes computed + previously by :func:`gsl_integration_fixed_alloc`. The sum is stored in :data:`result` on output. + +Error codes +=========== + +In addition to the standard error codes for invalid arguments the +functions can return the following values, + +===================== ============================================================================================================ +:macro:`GSL_EMAXITER` the maximum number of subdivisions was exceeded. +:macro:`GSL_EROUND` cannot reach tolerance because of roundoff error, or roundoff error was detected in the extrapolation table. +:macro:`GSL_ESING` a non-integrable singularity or other bad integrand behavior was found in the integration interval. +:macro:`GSL_EDIVERGE` the integral is divergent, or too slowly convergent to be integrated numerically. +:macro:`GSL_EDOM` error in the values of the input arguments +===================== ============================================================================================================ + +Examples +======== + +Adaptive integration example +---------------------------- + +The integrator :code:`QAGS` will handle a large class of definite +integrals. For example, consider the following integral, which has an +algebraic-logarithmic singularity at the origin, + +.. math:: \int_0^1 x^{-1/2} \log(x) dx = -4 + +The program below computes this integral to a relative accuracy bound of +:code:`1e-7`. + +.. include:: examples/integration.c + :code: + +The results below show that the desired accuracy is achieved after 8 +subdivisions. + +.. include:: examples/integration.txt + :code: + +In fact, the extrapolation procedure used by :code:`QAGS` produces an +accuracy of almost twice as many digits. The error estimate returned by +the extrapolation procedure is larger than the actual error, giving a +margin of safety of one order of magnitude. + +Fixed-point quadrature example +------------------------------ + +In this example, we use a fixed-point quadrature rule to integrate the +integral + +.. math:: + + \int_{-\infty}^{\infty} e^{-x^2} \left( x^m + 1 \right) dx = + \left\{ + \begin{array}{cc} + \sqrt{\pi} + \Gamma{\left( \frac{m+1}{2} \right)}, & m \textrm{ even} \\ + \sqrt{\pi}, & m \textrm{ odd} + \end{array} + \right. + +for integer :math:`m`. Consulting our :ref:`table ` of fixed point quadratures, +we see that this integral can be evaluated with a Hermite quadrature rule, +setting :math:`\alpha = 0, a = 0, b = 1`. Since we are integrating a polynomial +of degree :math:`m`, we need to choose the number of nodes :math:`n \ge (m+1)/2` +to achieve the best results. + +First we will try integrating for :math:`m = 10, n = 5`, which does not satisfy +our criteria above:: + + $ ./integration2 10 5 + +The output is, + +.. include:: examples/integration2a.txt + :code: + +So, we find a large error. Now we try integrating for :math:`m = 10, n = 6` which +does satisfy the criteria above:: + + $ ./integration2 10 6 + +The output is, + +.. include:: examples/integration2b.txt + :code: + +The program is given below. + +.. include:: examples/integration2.c + :code: + +References and Further Reading +============================== + +The following book is the definitive reference for |quadpack|, and was +written by the original authors. It provides descriptions of the +algorithms, program listings, test programs and examples. It also +includes useful advice on numerical integration and many references to +the numerical integration literature used in developing |quadpack|. + +* R. Piessens, E. de Doncker-Kapenga, C.W. Ueberhuber, D.K. Kahaner. + |quadpack| A subroutine package for automatic integration + Springer Verlag, 1983. + +The |cquad| integration algorithm is described in the following paper: + +* P. Gonnet, "Increasing the Reliability of Adaptive Quadrature Using + Explicit Interpolants", ACM Transactions on Mathematical + Software, Volume 37 (2010), Issue 3, Article 26. + +The fixed-point quadrature routines are based on IQPACK, described in the +following papers: + +* S. Elhay, J. Kautsky, Algorithm 655: IQPACK, FORTRAN Subroutines for the + Weights of Interpolatory Quadrature, ACM Transactions on Mathematical Software, + Volume 13, Number 4, December 1987, pages 399-415. + +* J. Kautsky, S. Elhay, Calculation of the Weights of Interpolatory Quadratures, + Numerische Mathematik, Volume 40, Number 3, October 1982, pages 407-422. diff --git a/gsl-2.5/doc/interp.rst b/gsl-2.5/doc/interp.rst new file mode 100644 index 00000000..5a062d50 --- /dev/null +++ b/gsl-2.5/doc/interp.rst @@ -0,0 +1,613 @@ +.. index:: interpolation, spline + +.. _sec_interpolation: + +************* +Interpolation +************* + +.. include:: include.rst + +This chapter describes functions for performing interpolation. The +library provides a variety of interpolation methods, including Cubic, +Akima, and Steffen splines. The interpolation types are interchangeable, +allowing different methods to be used without recompiling. +Interpolations can be defined for both normal and periodic boundary +conditions. Additional functions are available for computing +derivatives and integrals of interpolating functions. Routines +are provided for interpolating both one and two dimensional datasets. + +These interpolation methods produce curves that pass through each +datapoint. To interpolate noisy data with a smoothing curve see +:ref:`chap_basis-splines`. + +The functions described in this section are declared in the header files +:file:`gsl_interp.h` and :file:`gsl_spline.h`. + +Introduction to 1D Interpolation +================================ + +Given a set of data points :math:`(x_1, y_1) \dots (x_n, y_n)` the +routines described in this section compute a continuous interpolating +function :math:`y(x)` such that :math:`y(x_i) = y_i`. The interpolation +is piecewise smooth, and its behavior at the end-points is determined by +the type of interpolation used. + +1D Interpolation Functions +========================== + +The interpolation function for a given dataset is stored in a +:type:`gsl_interp` object. These are created by the following functions. + +.. type:: gsl_interp + + Workspace for 1D interpolation + +.. function:: gsl_interp * gsl_interp_alloc (const gsl_interp_type * T, size_t size) + + This function returns a pointer to a newly allocated interpolation + object of type :data:`T` for :data:`size` data-points. + +.. function:: int gsl_interp_init (gsl_interp * interp, const double xa[], const double ya[], size_t size) + + This function initializes the interpolation object :data:`interp` for the + data (:data:`xa`, :data:`ya`) where :data:`xa` and :data:`ya` are arrays of size + :data:`size`. The interpolation object (:type:`gsl_interp`) does not save + the data arrays :data:`xa` and :data:`ya` and only stores the static state + computed from the data. The :data:`xa` data array is always assumed to be + strictly ordered, with increasing :math:`x` values; + the behavior for other arrangements is not defined. + +.. function:: void gsl_interp_free (gsl_interp * interp) + + This function frees the interpolation object :data:`interp`. + +1D Interpolation Types +====================== + +The interpolation library provides the following interpolation types: + +.. type:: gsl_interp_type + + .. index:: linear interpolation + + .. var:: gsl_interp_linear + + Linear interpolation. This interpolation method does not require any + additional memory. + + .. index:: polynomial interpolation + + .. var:: gsl_interp_polynomial + + Polynomial interpolation. This method should only be used for + interpolating small numbers of points because polynomial interpolation + introduces large oscillations, even for well-behaved datasets. The + number of terms in the interpolating polynomial is equal to the number + of points. + + .. index:: cubic splines + + .. var:: gsl_interp_cspline + + Cubic spline with natural boundary conditions. The resulting curve is + piecewise cubic on each interval, with matching first and second + derivatives at the supplied data-points. The second derivative is + chosen to be zero at the first point and last point. + + .. var:: gsl_interp_cspline_periodic + + Cubic spline with periodic boundary conditions. The resulting curve + is piecewise cubic on each interval, with matching first and second + derivatives at the supplied data-points. The derivatives at the first + and last points are also matched. Note that the last point in the + data must have the same y-value as the first point, otherwise the + resulting periodic interpolation will have a discontinuity at the + boundary. + + .. index:: Akima splines + + .. var:: gsl_interp_akima + + Non-rounded Akima spline with natural boundary conditions. This method + uses the non-rounded corner algorithm of Wodicka. + + .. var:: gsl_interp_akima_periodic + + Non-rounded Akima spline with periodic boundary conditions. This method + uses the non-rounded corner algorithm of Wodicka. + + .. var:: gsl_interp_steffen + + Steffen's method guarantees the monotonicity of the interpolating function + between the given data points. Therefore, minima and maxima can only occur + exactly at the data points, and there can never be spurious oscillations + between data points. The interpolated function is piecewise cubic + in each interval. The resulting curve and its first derivative + are guaranteed to be continuous, but the second derivative may be + discontinuous. + +The following related functions are available: + +.. function:: const char * gsl_interp_name (const gsl_interp * interp) + + This function returns the name of the interpolation type used by :data:`interp`. + For example:: + + printf ("interp uses '%s' interpolation.\n", gsl_interp_name (interp)); + + would print something like:: + + interp uses 'cspline' interpolation. + +.. function:: unsigned int gsl_interp_min_size (const gsl_interp * interp) + unsigned int gsl_interp_type_min_size (const gsl_interp_type * T) + + These functions return the minimum number of points required by the + interpolation object :data:`interp` or interpolation type :data:`T`. For + example, Akima spline interpolation requires a minimum of 5 points. + +1D Index Look-up and Acceleration +================================= + +The state of searches can be stored in a :type:`gsl_interp_accel` object, +which is a kind of iterator for interpolation lookups. + +.. type:: gsl_interp_accel + + This workspace stores state variables for interpolation lookups. + It caches the previous value of an index lookup. When the subsequent interpolation + point falls in the same interval its index value can be returned + immediately. + +.. function:: size_t gsl_interp_bsearch (const double x_array[], double x, size_t index_lo, size_t index_hi) + + This function returns the index :math:`i` of the array :data:`x_array` such + that :code:`x_array[i] <= x < x_array[i+1]`. The index is searched for + in the range [:data:`index_lo`, :data:`index_hi`]. |inlinefn| + +.. function:: gsl_interp_accel * gsl_interp_accel_alloc (void) + + This function returns a pointer to an accelerator object, which is a + kind of iterator for interpolation lookups. It tracks the state of + lookups, thus allowing for application of various acceleration + strategies. + +.. function:: size_t gsl_interp_accel_find (gsl_interp_accel * a, const double x_array[], size_t size, double x) + + This function performs a lookup action on the data array :data:`x_array` + of size :data:`size`, using the given accelerator :data:`a`. This is how + lookups are performed during evaluation of an interpolation. The + function returns an index :math:`i` such that :code:`x_array[i] <= x < x_array[i+1]`. + |inlinefn| + +.. function:: int gsl_interp_accel_reset (gsl_interp_accel * acc); + + This function reinitializes the accelerator object :data:`acc`. It + should be used when the cached information is no longer + applicable---for example, when switching to a new dataset. + +.. function:: void gsl_interp_accel_free (gsl_interp_accel* acc) + + This function frees the accelerator object :data:`acc`. + +1D Evaluation of Interpolating Functions +======================================== + +.. function:: double gsl_interp_eval (const gsl_interp * interp, const double xa[], const double ya[], double x, gsl_interp_accel * acc) + int gsl_interp_eval_e (const gsl_interp * interp, const double xa[], const double ya[], double x, gsl_interp_accel * acc, double * y) + + These functions return the interpolated value of :data:`y` for a given + point :data:`x`, using the interpolation object :data:`interp`, data + arrays :data:`xa` and :data:`ya` and the accelerator :data:`acc`. When + :data:`x` is outside the range of :data:`xa`, the error code + :macro:`GSL_EDOM` is returned with a value of :macro:`GSL_NAN` for + :data:`y`. + +.. function:: double gsl_interp_eval_deriv (const gsl_interp * interp, const double xa[], const double ya[], double x, gsl_interp_accel * acc) + int gsl_interp_eval_deriv_e (const gsl_interp * interp, const double xa[], const double ya[], double x, gsl_interp_accel * acc, double * d) + + These functions return the derivative :data:`d` of an interpolated + function for a given point :data:`x`, using the interpolation object + :data:`interp`, data arrays :data:`xa` and :data:`ya` and the accelerator + :data:`acc`. + +.. function:: double gsl_interp_eval_deriv2 (const gsl_interp * interp, const double xa[], const double ya[], double x, gsl_interp_accel * acc) + int gsl_interp_eval_deriv2_e (const gsl_interp * interp, const double xa[], const double ya[], double x, gsl_interp_accel * acc, double * d2) + + These functions return the second derivative :data:`d2` of an interpolated + function for a given point :data:`x`, using the interpolation object + :data:`interp`, data arrays :data:`xa` and :data:`ya` and the accelerator + :data:`acc`. + +.. function:: double gsl_interp_eval_integ (const gsl_interp * interp, const double xa[], const double ya[], double a, double b, gsl_interp_accel * acc) + int gsl_interp_eval_integ_e (const gsl_interp * interp, const double xa[], const double ya[], double a, double b, gsl_interp_accel * acc, double * result) + + These functions return the numerical integral :data:`result` of an + interpolated function over the range [:data:`a`, :data:`b`], using the + interpolation object :data:`interp`, data arrays :data:`xa` and :data:`ya` and + the accelerator :data:`acc`. + +1D Higher-level Interface +========================= + +The functions described in the previous sections required the user to +supply pointers to the :math:`x` and :math:`y` arrays on each call. The +following functions are equivalent to the corresponding +:type:`gsl_interp` functions but maintain a copy of this data in the +:type:`gsl_spline` object. This removes the need to pass both :data:`xa` +and :data:`ya` as arguments on each evaluation. These functions are +defined in the header file :file:`gsl_spline.h`. + +.. type:: gsl_spline + + This workspace provides a higher level interface for the + :type:`gsl_interp` object + +.. function:: gsl_spline * gsl_spline_alloc (const gsl_interp_type * T, size_t size) + +.. function:: int gsl_spline_init (gsl_spline * spline, const double xa[], const double ya[], size_t size) + +.. function:: void gsl_spline_free (gsl_spline * spline) + +.. function:: const char * gsl_spline_name (const gsl_spline * spline) + +.. function:: unsigned int gsl_spline_min_size (const gsl_spline * spline) + +.. function:: double gsl_spline_eval (const gsl_spline * spline, double x, gsl_interp_accel * acc) + int gsl_spline_eval_e (const gsl_spline * spline, double x, gsl_interp_accel * acc, double * y) + +.. function:: double gsl_spline_eval_deriv (const gsl_spline * spline, double x, gsl_interp_accel * acc) + int gsl_spline_eval_deriv_e (const gsl_spline * spline, double x, gsl_interp_accel * acc, double * d) + +.. function:: double gsl_spline_eval_deriv2 (const gsl_spline * spline, double x, gsl_interp_accel * acc) + int gsl_spline_eval_deriv2_e (const gsl_spline * spline, double x, gsl_interp_accel * acc, double * d2) + +.. function:: double gsl_spline_eval_integ (const gsl_spline * spline, double a, double b, gsl_interp_accel * acc) + int gsl_spline_eval_integ_e (const gsl_spline * spline, double a, double b, gsl_interp_accel * acc, double * result) + +1D Interpolation Example Programs +================================= + +The following program demonstrates the use of the interpolation and +spline functions. It computes a cubic spline interpolation of the +10-point dataset :math:`(x_i, y_i)` where :math:`x_i = i + \sin(i)/2` and +:math:`y_i = i + \cos(i^2)` for :math:`i = 0 \dots 9`. + +.. include:: examples/interp.c + :code: + +The output is designed to be used with the GNU plotutils +:code:`graph` program:: + + $ ./a.out > interp.dat + $ graph -T ps < interp.dat > interp.ps + +.. _fig_interp: + +.. figure:: /images/interp.png + :scale: 60% + + Cubic spline interpolation + +:numref:`fig_interp` shows a smooth interpolation of the original points. The +interpolation method can be changed simply by varying the first argument of +:func:`gsl_spline_alloc`. + +The next program demonstrates a periodic cubic spline with 4 data +points. Note that the first and last points must be supplied with +the same y-value for a periodic spline. + +.. include:: examples/interpp.c + :code: + +The output can be plotted with GNU :code:`graph`:: + + $ ./a.out > interp.dat + $ graph -T ps < interp.dat > interp.ps + +.. _fig_interpp: + +.. figure:: /images/interpp.png + :scale: 60% + + Periodic cubic spline interpolation + +:numref:`fig_interpp` shows a periodic interpolation of the original points. The +slope of the fitted curve is the same at the beginning and end of the +data, and the second derivative is also. + +The next program illustrates the difference between the cubic spline, +Akima, and Steffen interpolation types on a difficult dataset. + +.. include:: examples/interp_compare.c + :code: + +.. _fig_interp-compare: + +.. figure:: /images/interp_compare.png + :scale: 60% + + Comparison of different 1D interpolation methods + +The output is shown in :numref:`fig_interp-compare`. +The cubic method exhibits a local maxima between the 6th and 7th data points +and continues oscillating for the rest of the data. Akima also shows a +local maxima but recovers and follows the data well after the 7th grid point. +Steffen preserves monotonicity in all intervals and does not exhibit oscillations, +at the expense of having a discontinuous second derivative. + +Introduction to 2D Interpolation +================================ + +Given a set of :math:`x` coordinates :math:`x_1,...,x_m` and a set of +:math:`y` coordinates :math:`y_1,...,y_n`, each in increasing order, +plus a set of function values :math:`z_{ij}` +for each grid point :math:`(x_i,y_j)`, the routines described in this +section compute a continuous interpolation function :math:`z(x,y)` such +that :math:`z(x_i,y_j) = z_{ij}`. + +2D Interpolation Functions +========================== + +The interpolation function for a given dataset is stored in a +:type:`gsl_interp2d` object. These are created by the following functions. + +.. type:: gsl_interp2d + + Workspace for 2D interpolation + +.. function:: gsl_interp2d * gsl_interp2d_alloc (const gsl_interp2d_type * T, const size_t xsize, const size_t ysize) + + This function returns a pointer to a newly allocated interpolation + object of type :data:`T` for :data:`xsize` grid points in the :math:`x` + direction and :data:`ysize` grid points in the :math:`y` direction. + +.. function:: int gsl_interp2d_init (gsl_interp2d * interp, const double xa[], const double ya[], const double za[], const size_t xsize, const size_t ysize) + + This function initializes the interpolation object :data:`interp` for the + data (:data:`xa`, :data:`ya`, :data:`za`) where :data:`xa` and :data:`ya` are arrays of + the :math:`x` and :math:`y` grid points of size :data:`xsize` and :data:`ysize` + respectively, and :data:`za` is an array of function values of size + :data:`xsize` * :data:`ysize`. The interpolation object (:type:`gsl_interp2d`) does + not save the data arrays :data:`xa`, :data:`ya`, and :data:`za` and only stores the + static state computed from the data. The :data:`xa` and :data:`ya` data arrays + are always assumed to be strictly ordered, with increasing :math:`x,y` values; + the behavior for other arrangements is not defined. + +.. function:: void gsl_interp2d_free (gsl_interp2d * interp) + + This function frees the interpolation object :data:`interp`. + +2D Interpolation Grids +====================== + +The 2D interpolation routines access the function values :math:`z_{ij}` +with the following ordering: + +.. math:: z_{ij} = za[j*xsize + i] + +with :math:`i = 0,...,xsize-1` and :math:`j = 0,...,ysize-1`. However, +for ease of use, the following functions are provided to add and retrieve +elements from the function grid without requiring knowledge of the +internal ordering. + +.. function:: int gsl_interp2d_set (const gsl_interp2d * interp, double za[], const size_t i, const size_t j, const double z) + + This function sets the value :math:`z_{ij}` for grid point + (:data:`i`, :data:`j`) of the array :data:`za` to :data:`z`. + +.. function:: double gsl_interp2d_get (const gsl_interp2d * interp, const double za[], const size_t i, const size_t j) + + This function returns the value :math:`z_{ij}` for grid point + (:data:`i`, :data:`j`) stored in the array :data:`za`. + +.. function:: size_t gsl_interp2d_idx (const gsl_interp2d * interp, const size_t i, const size_t j) + + This function returns the index corresponding to the grid point + (:data:`i`, :data:`j`). The index is given by :math:`j*xsize + i`. + +2D Interpolation Types +====================== + +.. type:: gsl_interp2d_type + + The interpolation library provides the following 2D interpolation types: + + .. index:: bilinear interpolation + + .. var:: gsl_interp2d_bilinear + + Bilinear interpolation. This interpolation method does not require any + additional memory. + + .. index:: bicubic interpolation + + .. var:: gsl_interp2d_bicubic + + Bicubic interpolation. + +.. function:: const char * gsl_interp2d_name (const gsl_interp2d * interp) + + This function returns the name of the interpolation type used by :data:`interp`. + For example:: + + printf ("interp uses '%s' interpolation.\n", gsl_interp2d_name (interp)); + + would print something like:: + + interp uses 'bilinear' interpolation. + +.. function:: unsigned int gsl_interp2d_min_size (const gsl_interp2d * interp) + unsigned int gsl_interp2d_type_min_size (const gsl_interp2d_type * T) + + These functions return the minimum number of points required by the + interpolation object :data:`interp` or interpolation type :data:`T`. For + example, bicubic interpolation requires a minimum of 4 points. + +2D Evaluation of Interpolating Functions +======================================== + +.. function:: double gsl_interp2d_eval (const gsl_interp2d * interp, const double xa[], const double ya[], const double za[], const double x, const double y, gsl_interp_accel * xacc, gsl_interp_accel * yacc) + int gsl_interp2d_eval_e (const gsl_interp2d * interp, const double xa[], const double ya[], const double za[], const double x, const double y, gsl_interp_accel * xacc, gsl_interp_accel * yacc, double * z) + + These functions return the interpolated value of :data:`z` for a given + point (:data:`x`, :data:`y`), using the interpolation object :data:`interp`, data + arrays :data:`xa`, :data:`ya`, and :data:`za` and the accelerators :data:`xacc` + and :data:`yacc`. When :data:`x` is outside the range of :data:`xa` or :data:`y` + is outside the range of :data:`ya`, the error code + :macro:`GSL_EDOM` is returned. + +.. function:: double gsl_interp2d_eval_extrap (const gsl_interp2d * interp, const double xa[], const double ya[], const double za[], const double x, const double y, gsl_interp_accel * xacc, gsl_interp_accel * yacc) + int gsl_interp2d_eval_extrap_e (const gsl_interp2d * interp, const double xa[], const double ya[], const double za[], const double x, const double y, gsl_interp_accel * xacc, gsl_interp_accel * yacc, double * z) + + These functions return the interpolated value of :data:`z` for a given + point (:data:`x`, :data:`y`), using the interpolation object :data:`interp`, data + arrays :data:`xa`, :data:`ya`, and :data:`za` and the accelerators :data:`xacc` + and :data:`yacc`. The functions perform no bounds checking, so + when :data:`x` is outside the range of :data:`xa` or :data:`y` + is outside the range of :data:`ya`, extrapolation is performed. + +.. function:: double gsl_interp2d_eval_deriv_x (const gsl_interp2d * interp, const double xa[], const double ya[], const double za[], const double x, const double y, gsl_interp_accel * xacc, gsl_interp_accel * yacc) + int gsl_interp2d_eval_deriv_x_e (const gsl_interp2d * interp, const double xa[], const double ya[], const double za[], const double x, const double y, gsl_interp_accel * xacc, gsl_interp_accel * yacc, double * d) + + These functions return the interpolated value :data:`d` + :math:`= \partial z / \partial x` for a given point (:data:`x`, :data:`y`), + using the interpolation object :data:`interp`, data + arrays :data:`xa`, :data:`ya`, and :data:`za` and the accelerators :data:`xacc` + and :data:`yacc`. When :data:`x` is outside the range of :data:`xa` or :data:`y` + is outside the range of :data:`ya`, the error code + :macro:`GSL_EDOM` is returned. + +.. function:: double gsl_interp2d_eval_deriv_y (const gsl_interp2d * interp, const double xa[], const double ya[], const double za[], const double x, const double y, gsl_interp_accel * xacc, gsl_interp_accel * yacc) + int gsl_interp2d_eval_deriv_y_e (const gsl_interp2d * interp, const double xa[], const double ya[], const double za[], const double x, const double y, gsl_interp_accel * xacc, gsl_interp_accel * yacc, double * d) + + These functions return the interpolated value :data:`d` + :math:`= \partial z / \partial y` for a given point (:data:`x`, :data:`y`), + using the interpolation object :data:`interp`, data + arrays :data:`xa`, :data:`ya`, and :data:`za` and the accelerators :data:`xacc` + and :data:`yacc`. When :data:`x` is outside the range of :data:`xa` or :data:`y` + is outside the range of :data:`ya`, the error code + :macro:`GSL_EDOM` is returned. + +.. function:: double gsl_interp2d_eval_deriv_xx (const gsl_interp2d * interp, const double xa[], const double ya[], const double za[], const double x, const double y, gsl_interp_accel * xacc, gsl_interp_accel * yacc) + int gsl_interp2d_eval_deriv_xx_e (const gsl_interp2d * interp, const double xa[], const double ya[], const double za[], const double x, const double y, gsl_interp_accel * xacc, gsl_interp_accel * yacc, double * d) + + These functions return the interpolated value :data:`d` + :math:`= \partial^2 z / \partial x^2` for a given point (:data:`x`, :data:`y`), + using the interpolation object :data:`interp`, data + arrays :data:`xa`, :data:`ya`, and :data:`za` and the accelerators :data:`xacc` + and :data:`yacc`. When :data:`x` is outside the range of :data:`xa` or :data:`y` + is outside the range of :data:`ya`, the error code + :macro:`GSL_EDOM` is returned. + +.. function:: double gsl_interp2d_eval_deriv_yy (const gsl_interp2d * interp, const double xa[], const double ya[], const double za[], const double x, const double y, gsl_interp_accel * xacc, gsl_interp_accel * yacc) + int gsl_interp2d_eval_deriv_yy_e (const gsl_interp2d * interp, const double xa[], const double ya[], const double za[], const double x, const double y, gsl_interp_accel * xacc, gsl_interp_accel * yacc, double * d) + + These functions return the interpolated value :data:`d` + :math:`= \partial^2 z / \partial y^2` for a given point (:data:`x`, :data:`y`), + using the interpolation object :data:`interp`, data + arrays :data:`xa`, :data:`ya`, and :data:`za` and the accelerators :data:`xacc` + and :data:`yacc`. When :data:`x` is outside the range of :data:`xa` or :data:`y` + is outside the range of :data:`ya`, the error code + :macro:`GSL_EDOM` is returned. + +.. function:: double gsl_interp2d_eval_deriv_xy (const gsl_interp2d * interp, const double xa[], const double ya[], const double za[], const double x, const double y, gsl_interp_accel * xacc, gsl_interp_accel * yacc) + int gsl_interp2d_eval_deriv_xy_e (const gsl_interp2d * interp, const double xa[], const double ya[], const double za[], const double x, const double y, gsl_interp_accel * xacc, gsl_interp_accel * yacc, double * d) + + These functions return the interpolated value :data:`d` + :math:`= \partial^2 z / \partial x \partial y` for a given point (:data:`x`, :data:`y`), + using the interpolation object :data:`interp`, data + arrays :data:`xa`, :data:`ya`, and :data:`za` and the accelerators :data:`xacc` + and :data:`yacc`. When :data:`x` is outside the range of :data:`xa` or :data:`y` + is outside the range of :data:`ya`, the error code + :macro:`GSL_EDOM` is returned. + +2D Higher-level Interface +========================= + +The functions described in the previous sections required the user to +supply pointers to the :math:`x`, :math:`y`, and :math:`z` arrays on each call. +The following functions are equivalent to the corresponding +:code:`gsl_interp2d` functions but maintain a copy of this data in the +:type:`gsl_spline2d` object. This removes the need to pass :data:`xa`, +:data:`ya`, and :data:`za` as arguments on each evaluation. These functions are +defined in the header file :file:`gsl_spline2d.h`. + +.. type:: gsl_spline2d + + This workspace provides a higher level interface for the + :type:`gsl_interp2d` object + +.. function:: gsl_spline2d * gsl_spline2d_alloc (const gsl_interp2d_type * T, size_t xsize, size_t ysize) + +.. function:: int gsl_spline2d_init (gsl_spline2d * spline, const double xa[], const double ya[], const double za[], size_t xsize, size_t ysize) + +.. function:: void gsl_spline2d_free (gsl_spline2d * spline) + +.. function:: const char * gsl_spline2d_name (const gsl_spline2d * spline) + +.. function:: unsigned int gsl_spline2d_min_size (const gsl_spline2d * spline) + +.. function:: double gsl_spline2d_eval (const gsl_spline2d * spline, const double x, const double y, gsl_interp_accel * xacc, gsl_interp_accel * yacc) + int gsl_spline2d_eval_e (const gsl_spline2d * spline, const double x, const double y, gsl_interp_accel * xacc, gsl_interp_accel * yacc, double * z) + +.. function:: double gsl_spline2d_eval_deriv_x (const gsl_spline2d * spline, const double x, const double y, gsl_interp_accel * xacc, gsl_interp_accel * yacc) + int gsl_spline2d_eval_deriv_x_e (const gsl_spline2d * spline, const double x, const double y, gsl_interp_accel * xacc, gsl_interp_accel * yacc, double * d) + +.. function:: double gsl_spline2d_eval_deriv_y (const gsl_spline2d * spline, const double x, const double y, gsl_interp_accel * xacc, gsl_interp_accel * yacc) + int gsl_spline2d_eval_deriv_y_e (const gsl_spline2d * spline, const double x, const double y, gsl_interp_accel * xacc, gsl_interp_accel * yacc, double * d) + +.. function:: double gsl_spline2d_eval_deriv_xx (const gsl_spline2d * spline, const double x, const double y, gsl_interp_accel * xacc, gsl_interp_accel * yacc) + int gsl_spline2d_eval_deriv_xx_e (const gsl_spline2d * spline, const double x, const double y, gsl_interp_accel * xacc, gsl_interp_accel * yacc, double * d) + +.. function:: double gsl_spline2d_eval_deriv_yy (const gsl_spline2d * spline, const double x, const double y, gsl_interp_accel * xacc, gsl_interp_accel * yacc) + int gsl_spline2d_eval_deriv_yy_e (const gsl_spline2d * spline, const double x, const double y, gsl_interp_accel * xacc, gsl_interp_accel * yacc, double * d) + +.. function:: double gsl_spline2d_eval_deriv_xy (const gsl_spline2d * spline, const double x, const double y, gsl_interp_accel * xacc, gsl_interp_accel * yacc) + int gsl_spline2d_eval_deriv_xy_e (const gsl_spline2d * spline, const double x, const double y, gsl_interp_accel * xacc, gsl_interp_accel * yacc, double * d) + +.. function:: int gsl_spline2d_set (const gsl_spline2d * spline, double za[], const size_t i, const size_t j, const double z) + +.. function:: double gsl_spline2d_get (const gsl_spline2d * spline, const double za[], const size_t i, const size_t j) + + This function returns the value :math:`z_{ij}` for grid point + (:data:`i`, :data:`j`) stored in the array :data:`za`. + +2D Interpolation Example programs +================================= + +The following example performs bilinear interpolation on the unit +square, using :math:`z` values of :math:`(0,1,0.5,1)` going clockwise +around the square. + +.. include:: examples/interp2d.c + :code: + +The results of the interpolation are shown in :numref:`fig_interp2d`, +where the corners are labeled with their fixed :math:`z` values. + +.. _fig_interp2d: + +.. figure:: /images/interp2d.png + :scale: 60% + + 2D interpolation example + +References and Further Reading +============================== + +Descriptions of the interpolation algorithms and further references can +be found in the following publications: + +* C.W. Ueberhuber, + *Numerical Computation (Volume 1), Chapter 9 "Interpolation"*, + Springer (1997), ISBN 3-540-62058-3. + +* D.M. Young, R.T. Gregory, + *A Survey of Numerical Mathematics (Volume 1), Chapter 6.8*, + Dover (1988), ISBN 0-486-65691-8. + +* M. Steffen, + *A simple method for monotonic interpolation in one dimension*, + Astron. Astrophys. 239, 443-450, 1990. diff --git a/gsl-2.5/doc/intro.rst b/gsl-2.5/doc/intro.rst new file mode 100644 index 00000000..47c36cd0 --- /dev/null +++ b/gsl-2.5/doc/intro.rst @@ -0,0 +1,224 @@ +.. index:: + license of GSL + GNU General Public License + +************ +Introduction +************ + +The GNU Scientific Library (GSL) is a collection of routines for +numerical computing. The routines have been written from scratch in C, +and present a modern Applications Programming Interface +(API) for C programmers, allowing wrappers to be written for very +high level languages. The source code is distributed under the GNU +General Public License. + +Routines available in GSL +========================= + +The library covers a wide range of topics in numerical computing. +Routines are available for the following areas, + +=========================== =========================== =========================== +Complex Numbers Roots of Polynomials Special Functions +Vectors and Matrices Permutations Combinations +Sorting BLAS Support Linear Algebra +CBLAS Library Fast Fourier Transforms Eigensystems +Random Numbers Quadrature Random Distributions +Quasi-Random Sequences Histograms Statistics +Monte Carlo Integration N-Tuples Differential Equations +Simulated Annealing Numerical Differentiation Interpolation +Series Acceleration Chebyshev Approximations Root-Finding +Discrete Hankel Transforms Least-Squares Fitting Minimization +IEEE Floating-Point Physical Constants Basis Splines +Wavelets Sparse BLAS Support Sparse Linear Algebra +=========================== =========================== =========================== + +The use of these routines is described in this manual. Each chapter +provides detailed definitions of the functions, followed by example +programs and references to the articles on which the algorithms are +based. + +Where possible the routines have been based on reliable public-domain +packages such as FFTPACK and QUADPACK, which the developers of GSL +have reimplemented in C with modern coding conventions. + +.. index:: + single: free software, explanation of + +GSL is Free Software +==================== + +The subroutines in the GNU Scientific Library are "free software"; +this means that everyone is free to use them, and to redistribute them +in other free programs. The library is not in the public domain; it is +copyrighted and there are conditions on its distribution. These +conditions are designed to permit everything that a good cooperating +citizen would want to do. What is not allowed is to try to prevent +others from further sharing any version of the software that they might +get from you. + +Specifically, we want to make sure that you have the right to share +copies of programs that you are given which use the GNU Scientific +Library, that you receive their source code or else can get it if you +want it, that you can change these programs or use pieces of them in new +free programs, and that you know you can do these things. + +To make sure that everyone has such rights, we have to forbid you to +deprive anyone else of these rights. For example, if you distribute +copies of any code which uses the GNU Scientific Library, you must give +the recipients all the rights that you have received. You must make +sure that they, too, receive or can get the source code, both to the +library and the code which uses it. And you must tell them their +rights. This means that the library should not be redistributed in +proprietary programs. + +Also, for our own protection, we must make certain that everyone finds +out that there is no warranty for the GNU Scientific Library. If these +programs are modified by someone else and passed on, we want their +recipients to know that what they have is not what we distributed, so +that any problems introduced by others will not reflect on our +reputation. + +The precise conditions for the distribution of software related to the +GNU Scientific Library are found in the +`GNU General Public License `_. +Further information about this +license is available from the GNU Project webpage `Frequently Asked +Questions about the GNU GPL `_. + +The Free Software Foundation also operates a license consulting +service for commercial users (contact details available from +http://www.fsf.org. + +.. index:: + obtaining GSL + downloading GSL + mailing list for GSL announcements + info-gsl mailing list + +Obtaining GSL +============= + +The source code for the library can be obtained in different ways, by +copying it from a friend, purchasing it on CDROM or downloading it +from the internet. A list of public ftp servers which carry the source +code can be found on the GNU website, http://www.gnu.org/software/gsl/. + +The preferred platform for the library is a GNU system, which allows it +to take advantage of additional features in the GNU C compiler and GNU C +library. However, the library is fully portable and should compile on +most systems with a C compiler. + +Announcements of new releases, updates and other relevant events are +made on the info-gsl@gnu.org mailing list. To subscribe to this +low-volume list, send an email of the following form:: + + To: info-gsl-request@gnu.org + Subject: subscribe + +You will receive a response asking you to reply in order to confirm +your subscription. + +.. index:: + warranty (none) + +No Warranty +=========== + +The software described in this manual has no warranty, it is provided +"as is". It is your responsibility to validate the behavior of the +routines and their accuracy using the source code provided, or to +purchase support and warranties from commercial redistributors. Consult the +`GNU General Public License `_ +for further details. + +.. index:: + reporting bugs in GSL + bugs, how to report + bug-gsl mailing list + mailing list, bug-gsl + +Reporting Bugs +============== + +A list of known bugs can be found in the :file:`BUGS` file included in +the GSL distribution or online in the GSL bug tracker. [#f1]_ +Details of compilation problems can be found in the :file:`INSTALL` file. + +If you find a bug which is not listed in these files, please report it to +bug-gsl@gnu.org. + +All bug reports should include: + +- The version number of GSL +- The hardware and operating system +- The compiler used, including version number and compilation options +- A description of the bug behavior +- A short program which exercises the bug + +It is useful if you can check whether the same problem occurs when the +library is compiled without optimization. Thank you. + +Any errors or omissions in this manual can also be reported to the +same address. + +.. index:: + mailing list archives + single: website, developer information + contacting the GSL developers + +Further Information +=================== + +Additional information, including online copies of this manual, links to +related projects, and mailing list archives are available from the +website mentioned above. + +Any questions about the use and installation of the library can be asked +on the mailing list help-gsl@gnu.org. To subscribe to this +list, send an email of the following form:: + + To: help-gsl-request@gnu.org + Subject: subscribe + +This mailing list can be used to ask questions not covered by this +manual, and to contact the developers of the library. + +If you would like to refer to the GNU Scientific Library in a journal +article, the recommended way is to cite this reference manual, +e.g.:: + + M. Galassi et al, GNU Scientific Library Reference Manual (3rd Ed.), ISBN 0954612078. + +If you want to give a url, use "http://www.gnu.org/software/gsl/". + +.. index:: + single: conventions, used in manual + single: examples, conventions used in + single: shell prompt + single: $, shell prompt + +Conventions used in this manual +=============================== + +.. index:: + single: dollar sign $, shell prompt + +This manual contains many examples which can be typed at the keyboard. +A command entered at the terminal is shown like this:: + + $ command + +The first character on the line is the terminal prompt, and should not +be typed. The dollar sign $ is used as the standard prompt in +this manual, although some systems may use a different character. + +The examples assume the use of the GNU operating system. There may be +minor differences in the output on other systems. The commands for +setting environment variables use the Bourne shell syntax of the +standard GNU shell (:code:`bash`). + +.. rubric:: Footnotes + +.. [#f1] http://savannah.gnu.org/bugs/?group=gsl diff --git a/gsl-2.5/doc/linalg.rst b/gsl-2.5/doc/linalg.rst new file mode 100644 index 00000000..235b2b9d --- /dev/null +++ b/gsl-2.5/doc/linalg.rst @@ -0,0 +1,1687 @@ +.. index:: + single: linear algebra + single: solution of linear systems, Ax=b + single: matrix factorization + single: factorization of matrices + +************** +Linear Algebra +************** + +.. include:: include.rst + +This chapter describes functions for solving linear systems. The +library provides linear algebra operations which operate directly on +the :type:`gsl_vector` and :type:`gsl_matrix` objects. These routines +use the standard algorithms from Golub & Van Loan's *Matrix +Computations* with Level-1 and Level-2 BLAS calls for efficiency. + +The functions described in this chapter are declared in the header file +:file:`gsl_linalg.h`. + +.. index:: LU decomposition + +LU Decomposition +================ + +A general :math:`N`-by-:math:`N` square matrix :math:`A` has an :math:`LU` decomposition into +upper and lower triangular matrices, + +.. math:: P A = L U + +where :math:`P` is a permutation matrix, :math:`L` is unit lower +triangular matrix and :math:`U` is upper triangular matrix. For square +matrices this decomposition can be used to convert the linear system +:math:`A x = b` into a pair of triangular systems (:math:`L y = P b`, +:math:`U x = y`), which can be solved by forward and back-substitution. +Note that the :math:`LU` decomposition is valid for singular matrices. + +.. function:: int gsl_linalg_LU_decomp (gsl_matrix * A, gsl_permutation * p, int * signum) + int gsl_linalg_complex_LU_decomp (gsl_matrix_complex * A, gsl_permutation * p, int * signum) + + These functions factorize the square matrix :data:`A` into the :math:`LU` + decomposition :math:`PA = LU`. On output the diagonal and upper + triangular part of the input matrix :data:`A` contain the matrix + :math:`U`. The lower triangular part of the input matrix (excluding the + diagonal) contains :math:`L`. The diagonal elements of :math:`L` are + unity, and are not stored. + + The permutation matrix :math:`P` is encoded in the permutation + :data:`p` on output. The :math:`j`-th column of the matrix :math:`P` + is given by the :math:`k`-th column of the identity matrix, where + :math:`k = p_j` the + :math:`j`-th element of the permutation vector. The sign of the + permutation is given by :data:`signum`. It has the value :math:`(-1)^n`, + where :math:`n` is the number of interchanges in the permutation. + + The algorithm used in the decomposition is Gaussian Elimination with + partial pivoting (Golub & Van Loan, *Matrix Computations*, + Algorithm 3.4.1). + +.. index:: linear systems, solution of + +.. function:: int gsl_linalg_LU_solve (const gsl_matrix * LU, const gsl_permutation * p, const gsl_vector * b, gsl_vector * x) + int gsl_linalg_complex_LU_solve (const gsl_matrix_complex * LU, const gsl_permutation * p, const gsl_vector_complex * b, gsl_vector_complex * x) + + These functions solve the square system :math:`A x = b` using the :math:`LU` + decomposition of :math:`A` into (:data:`LU`, :data:`p`) given by + :func:`gsl_linalg_LU_decomp` or :func:`gsl_linalg_complex_LU_decomp` as input. + +.. function:: int gsl_linalg_LU_svx (const gsl_matrix * LU, const gsl_permutation * p, gsl_vector * x) + int gsl_linalg_complex_LU_svx (const gsl_matrix_complex * LU, const gsl_permutation * p, gsl_vector_complex * x) + + These functions solve the square system :math:`A x = b` in-place using the + precomputed :math:`LU` decomposition of :math:`A` into (:data:`LU`, :data:`p`). On input + :data:`x` should contain the right-hand side :math:`b`, which is replaced + by the solution on output. + +.. index:: + single: refinement of solutions in linear systems + single: iterative refinement of solutions in linear systems + single: linear systems, refinement of solutions + +.. function:: int gsl_linalg_LU_refine (const gsl_matrix * A, const gsl_matrix * LU, const gsl_permutation * p, const gsl_vector * b, gsl_vector * x, gsl_vector * work) + int gsl_linalg_complex_LU_refine (const gsl_matrix_complex * A, const gsl_matrix_complex * LU, const gsl_permutation * p, const gsl_vector_complex * b, gsl_vector_complex * x, gsl_vector_complex * work) + + These functions apply an iterative improvement to :data:`x`, the solution + of :math:`A x = b`, from the precomputed :math:`LU` decomposition of :math:`A` into + (:data:`LU`, :data:`p`). Additional workspace of length :data:`N` is required in :data:`work`. + +.. index:: + single: inverse of a matrix, by LU decomposition + single: matrix inverse + +.. function:: int gsl_linalg_LU_invert (const gsl_matrix * LU, const gsl_permutation * p, gsl_matrix * inverse) + int gsl_linalg_complex_LU_invert (const gsl_matrix_complex * LU, const gsl_permutation * p, gsl_matrix_complex * inverse) + + These functions compute the inverse of a matrix :math:`A` from its + :math:`LU` decomposition (:data:`LU`, :data:`p`), storing the result in the + matrix :data:`inverse`. The inverse is computed by solving the system + :math:`A x = b` for each column of the identity matrix. It is preferable + to avoid direct use of the inverse whenever possible, as the linear + solver functions can obtain the same result more efficiently and + reliably (consult any introductory textbook on numerical linear algebra + for details). + +.. index:: + single: determinant of a matrix, by LU decomposition + single: matrix determinant + +.. function:: double gsl_linalg_LU_det (gsl_matrix * LU, int signum) + gsl_complex gsl_linalg_complex_LU_det (gsl_matrix_complex * LU, int signum) + + These functions compute the determinant of a matrix :math:`A` from its + :math:`LU` decomposition, :data:`LU`. The determinant is computed as the + product of the diagonal elements of :math:`U` and the sign of the row + permutation :data:`signum`. + +.. index:: logarithm of the determinant of a matrix + +.. function:: double gsl_linalg_LU_lndet (gsl_matrix * LU) + double gsl_linalg_complex_LU_lndet (gsl_matrix_complex * LU) + + These functions compute the logarithm of the absolute value of the + determinant of a matrix :math:`A`, :math:`\ln|\det(A)|`, from its :math:`LU` + decomposition, :data:`LU`. This function may be useful if the direct + computation of the determinant would overflow or underflow. + +.. index:: sign of the determinant of a matrix + +.. function:: int gsl_linalg_LU_sgndet (gsl_matrix * LU, int signum) + gsl_complex gsl_linalg_complex_LU_sgndet (gsl_matrix_complex * LU, int signum) + + These functions compute the sign or phase factor of the determinant of a + matrix :math:`A`, :math:`\det(A)/|\det(A)|`, from its :math:`LU` decomposition, + :data:`LU`. + +.. index:: QR decomposition + +QR Decomposition +================ + +A general rectangular :math:`M`-by-:math:`N` matrix :math:`A` has a +:math:`QR` decomposition into the product of an orthogonal +:math:`M`-by-:math:`M` square matrix :math:`Q` (where :math:`Q^T Q = I`) and +an :math:`M`-by-:math:`N` right-triangular matrix :math:`R`, + +.. math:: A = Q R + +This decomposition can be used to convert the linear system :math:`A x = b` +into the triangular system :math:`R x = Q^T b`, which can be solved by +back-substitution. Another use of the :math:`QR` decomposition is to +compute an orthonormal basis for a set of vectors. The first :math:`N` +columns of :math:`Q` form an orthonormal basis for the range of :math:`A`, +:math:`ran(A)`, when :math:`A` has full column rank. + +.. function:: int gsl_linalg_QR_decomp (gsl_matrix * A, gsl_vector * tau) + + This function factorizes the :math:`M`-by-:math:`N` matrix :data:`A` into + the :math:`QR` decomposition :math:`A = Q R`. On output the diagonal and + upper triangular part of the input matrix contain the matrix + :math:`R`. The vector :data:`tau` and the columns of the lower triangular + part of the matrix :data:`A` contain the Householder coefficients and + Householder vectors which encode the orthogonal matrix :data:`Q`. The + vector :data:`tau` must be of length :math:`k=\min(M,N)`. The matrix + :math:`Q` is related to these components by, :math:`Q = Q_k ... Q_2 Q_1` + where :math:`Q_i = I - \tau_i v_i v_i^T` and :math:`v_i` is the + Householder vector :math:`v_i = (0,...,1,A(i+1,i),A(i+2,i),...,A(m,i))`. + This is the same storage scheme as used by |lapack|. + + The algorithm used to perform the decomposition is Householder QR (Golub + & Van Loan, "Matrix Computations", Algorithm 5.2.1). + +.. function:: int gsl_linalg_QR_solve (const gsl_matrix * QR, const gsl_vector * tau, const gsl_vector * b, gsl_vector * x) + + This function solves the square system :math:`A x = b` using the :math:`QR` + decomposition of :math:`A` held in (:data:`QR`, :data:`tau`) which must + have been computed previously with :func:`gsl_linalg_QR_decomp`. + The least-squares solution for + rectangular systems can be found using :func:`gsl_linalg_QR_lssolve`. + +.. function:: int gsl_linalg_QR_svx (const gsl_matrix * QR, const gsl_vector * tau, gsl_vector * x) + + This function solves the square system :math:`A x = b` in-place using + the :math:`QR` decomposition of :math:`A` held in (:data:`QR`, :data:`tau`) + which must have been computed previously by + :func:`gsl_linalg_QR_decomp`. On input :data:`x` should contain the + right-hand side :math:`b`, which is replaced by the solution on output. + +.. function:: int gsl_linalg_QR_lssolve (const gsl_matrix * QR, const gsl_vector * tau, const gsl_vector * b, gsl_vector * x, gsl_vector * residual) + + This function finds the least squares solution to the overdetermined + system :math:`A x = b` where the matrix :data:`A` has more rows than + columns. The least squares solution minimizes the Euclidean norm of the + residual, :math:`||Ax - b||`.The routine requires as input + the :math:`QR` decomposition + of :math:`A` into (:data:`QR`, :data:`tau`) given by + :func:`gsl_linalg_QR_decomp`. The solution is returned in :data:`x`. The + residual is computed as a by-product and stored in :data:`residual`. + +.. function:: int gsl_linalg_QR_QTvec (const gsl_matrix * QR, const gsl_vector * tau, gsl_vector * v) + + This function applies the matrix :math:`Q^T` encoded in the decomposition + (:data:`QR`, :data:`tau`) to the vector :data:`v`, storing the result :math:`Q^T v` + in :data:`v`. The matrix multiplication is carried out directly using + the encoding of the Householder vectors without needing to form the full + matrix :math:`Q^T`. + +.. function:: int gsl_linalg_QR_Qvec (const gsl_matrix * QR, const gsl_vector * tau, gsl_vector * v) + + This function applies the matrix :math:`Q` encoded in the decomposition + (:data:`QR`, :data:`tau`) to the vector :data:`v`, storing the result :math:`Q v` + in :data:`v`. The matrix multiplication is carried out directly using + the encoding of the Householder vectors without needing to form the full + matrix :math:`Q`. + +.. function:: int gsl_linalg_QR_QTmat (const gsl_matrix * QR, const gsl_vector * tau, gsl_matrix * A) + + This function applies the matrix :math:`Q^T` encoded in the decomposition + (:data:`QR`, :data:`tau`) to the matrix :data:`A`, storing the result :math:`Q^T A` + in :data:`A`. The matrix multiplication is carried out directly using + the encoding of the Householder vectors without needing to form the full + matrix :math:`Q^T`. + +.. function:: int gsl_linalg_QR_Rsolve (const gsl_matrix * QR, const gsl_vector * b, gsl_vector * x) + + This function solves the triangular system :math:`R x = b` for + :data:`x`. It may be useful if the product :math:`b' = Q^T b` has already + been computed using :func:`gsl_linalg_QR_QTvec`. + +.. function:: int gsl_linalg_QR_Rsvx (const gsl_matrix * QR, gsl_vector * x) + + This function solves the triangular system :math:`R x = b` for :data:`x` + in-place. On input :data:`x` should contain the right-hand side :math:`b` + and is replaced by the solution on output. This function may be useful if + the product :math:`b' = Q^T b` has already been computed using + :func:`gsl_linalg_QR_QTvec`. + +.. function:: int gsl_linalg_QR_unpack (const gsl_matrix * QR, const gsl_vector * tau, gsl_matrix * Q, gsl_matrix * R) + + This function unpacks the encoded :math:`QR` decomposition + (:data:`QR`, :data:`tau`) into the matrices :data:`Q` and :data:`R`, where + :data:`Q` is :math:`M`-by-:math:`M` and :data:`R` is :math:`M`-by-:math:`N`. + +.. function:: int gsl_linalg_QR_QRsolve (gsl_matrix * Q, gsl_matrix * R, const gsl_vector * b, gsl_vector * x) + + This function solves the system :math:`R x = Q^T b` for :data:`x`. It can + be used when the :math:`QR` decomposition of a matrix is available in + unpacked form as (:data:`Q`, :data:`R`). + +.. function:: int gsl_linalg_QR_update (gsl_matrix * Q, gsl_matrix * R, gsl_vector * w, const gsl_vector * v) + + This function performs a rank-1 update :math:`w v^T` of the :math:`QR` + decomposition (:data:`Q`, :data:`R`). The update is given by :math:`Q'R' = Q (R + w v^T)` + where the output matrices :math:`Q` and :math:`R` are also + orthogonal and right triangular. Note that :data:`w` is destroyed by the + update. + +.. function:: int gsl_linalg_R_solve (const gsl_matrix * R, const gsl_vector * b, gsl_vector * x) + + This function solves the triangular system :math:`R x = b` for the + :math:`N`-by-:math:`N` matrix :data:`R`. + +.. function:: int gsl_linalg_R_svx (const gsl_matrix * R, gsl_vector * x) + + This function solves the triangular system :math:`R x = b` in-place. On + input :data:`x` should contain the right-hand side :math:`b`, which is + replaced by the solution on output. + +.. index:: QR decomposition with column pivoting + +QR Decomposition with Column Pivoting +===================================== + +The :math:`QR` decomposition of an :math:`M`-by-:math:`N` matrix :math:`A` +can be extended to the rank deficient case by introducing a column permutation :math:`P`, + +.. math:: A P = Q R + +The first :math:`r` columns of :math:`Q` form an orthonormal basis +for the range of :math:`A` for a matrix with column rank :math:`r`. This +decomposition can also be used to convert the linear system :math:`A x = b` +into the triangular system :math:`R y = Q^T b, x = P y`, which can be +solved by back-substitution and permutation. We denote the :math:`QR` +decomposition with column pivoting by :math:`QRP^T` since :math:`A = Q R P^T`. +When :math:`A` is rank deficient with :math:`r = {\rm rank}(A)`, the matrix +:math:`R` can be partitioned as + +.. only:: not texinfo + + .. math:: + + R = \left( + \begin{matrix} + R_{11} & R_{12} \\ + 0 & R_{22} + \end{matrix} + \right) \approx + \left( + \begin{matrix} + R_{11} & R_{12} \\ + 0 & 0 + \end{matrix} + \right) + +.. only:: texinfo + + :: + + R = [ R11 R12 ] =~ [ R11 R12 ] + [ 0 R22 ] [ 0 0 ] + +where :math:`R_{11}` is :math:`r`-by-:math:`r` and nonsingular. In this case, +a *basic* least squares solution for the overdetermined system :math:`A x = b` +can be obtained as + +.. only:: not texinfo + + .. math:: + + x = P \left( + \begin{matrix} + R_{11}^{-1} c_1 \\ + 0 + \end{matrix} + \right) + +.. only:: texinfo + + :: + + x = P [ R11^-1 c1 ] + [ 0 ] + +where :math:`c_1` consists of the first :math:`r` elements of :math:`Q^T b`. +This basic solution is not guaranteed to be the minimum norm solution unless +:math:`R_{12} = 0` (see :ref:`Complete Orthogonal Decomposition `). + +.. function:: int gsl_linalg_QRPT_decomp (gsl_matrix * A, gsl_vector * tau, gsl_permutation * p, int * signum, gsl_vector * norm) + + This function factorizes the :math:`M`-by-:math:`N` matrix :data:`A` into + the :math:`QRP^T` decomposition :math:`A = Q R P^T`. On output the + diagonal and upper triangular part of the input matrix contain the + matrix :math:`R`. The permutation matrix :math:`P` is stored in the + permutation :data:`p`. The sign of the permutation is given by + :data:`signum`. It has the value :math:`(-1)^n`, where :math:`n` is the + number of interchanges in the permutation. The vector :data:`tau` and the + columns of the lower triangular part of the matrix :data:`A` contain the + Householder coefficients and vectors which encode the orthogonal matrix + :data:`Q`. The vector :data:`tau` must be of length :math:`k=\min(M,N)`. The + matrix :math:`Q` is related to these components by, :math:`Q = Q_k ... Q_2 Q_1` + where :math:`Q_i = I - \tau_i v_i v_i^T` and :math:`v_i` is the + Householder vector + + .. math:: v_i = (0,...,1,A(i+1,i),A(i+2,i),...,A(m,i)) + + This is the same storage scheme + as used by |lapack|. The vector :data:`norm` is a workspace of length + :data:`N` used for column pivoting. + + The algorithm used to perform the decomposition is Householder QR with + column pivoting (Golub & Van Loan, "Matrix Computations", Algorithm + 5.4.1). + +.. function:: int gsl_linalg_QRPT_decomp2 (const gsl_matrix * A, gsl_matrix * q, gsl_matrix * r, gsl_vector * tau, gsl_permutation * p, int * signum, gsl_vector * norm) + + This function factorizes the matrix :data:`A` into the decomposition + :math:`A = Q R P^T` without modifying :data:`A` itself and storing the + output in the separate matrices :data:`q` and :data:`r`. + +.. function:: int gsl_linalg_QRPT_solve (const gsl_matrix * QR, const gsl_vector * tau, const gsl_permutation * p, const gsl_vector * b, gsl_vector * x) + + This function solves the square system :math:`A x = b` using the :math:`QRP^T` + decomposition of :math:`A` held in (:data:`QR`, :data:`tau`, :data:`p`) which must + have been computed previously by :func:`gsl_linalg_QRPT_decomp`. + +.. function:: int gsl_linalg_QRPT_svx (const gsl_matrix * QR, const gsl_vector * tau, const gsl_permutation * p, gsl_vector * x) + + This function solves the square system :math:`A x = b` in-place using the + :math:`QRP^T` decomposition of :math:`A` held in + (:data:`QR`, :data:`tau`, :data:`p`). On input :data:`x` should contain the + right-hand side :math:`b`, which is replaced by the solution on output. + +.. function:: int gsl_linalg_QRPT_lssolve (const gsl_matrix * QR, const gsl_vector * tau, const gsl_permutation * p, const gsl_vector * b, gsl_vector * x, gsl_vector * residual) + + This function finds the least squares solution to the overdetermined + system :math:`A x = b` where the matrix :data:`A` has more rows than + columns and is assumed to have full rank. The least squares solution minimizes + the Euclidean norm of the residual, :math:`||b - A x||`. The routine requires as input + the :math:`QR` decomposition of :math:`A` into (:data:`QR`, :data:`tau`, :data:`p`) given by + :func:`gsl_linalg_QRPT_decomp`. The solution is returned in :data:`x`. The + residual is computed as a by-product and stored in :data:`residual`. For rank + deficient matrices, :func:`gsl_linalg_QRPT_lssolve2` should be used instead. + +.. function:: int gsl_linalg_QRPT_lssolve2 (const gsl_matrix * QR, const gsl_vector * tau, const gsl_permutation * p, const gsl_vector * b, const size_t rank, gsl_vector * x, gsl_vector * residual) + + This function finds the least squares solution to the overdetermined + system :math:`A x = b` where the matrix :data:`A` has more rows than + columns and has rank given by the input :data:`rank`. If the user does not + know the rank of :math:`A`, the routine :func:`gsl_linalg_QRPT_rank` can be + called to estimate it. The least squares solution is + the so-called "basic" solution discussed above and may not be the minimum + norm solution. The routine requires as input + the :math:`QR` decomposition of :math:`A` into (:data:`QR`, :data:`tau`, :data:`p`) given by + :func:`gsl_linalg_QRPT_decomp`. The solution is returned in :data:`x`. The + residual is computed as a by-product and stored in :data:`residual`. + +.. function:: int gsl_linalg_QRPT_QRsolve (const gsl_matrix * Q, const gsl_matrix * R, const gsl_permutation * p, const gsl_vector * b, gsl_vector * x) + + This function solves the square system :math:`R P^T x = Q^T b` for + :data:`x`. It can be used when the :math:`QR` decomposition of a matrix is + available in unpacked form as (:data:`Q`, :data:`R`). + +.. function:: int gsl_linalg_QRPT_update (gsl_matrix * Q, gsl_matrix * R, const gsl_permutation * p, gsl_vector * w, const gsl_vector * v) + + This function performs a rank-1 update :math:`w v^T` of the :math:`QRP^T` + decomposition (:data:`Q`, :data:`R`, :data:`p`). The update is given by + :math:`Q'R' = Q (R + w v^T P)` where the output matrices :math:`Q'` and + :math:`R'` are also orthogonal and right triangular. Note that :data:`w` is + destroyed by the update. The permutation :data:`p` is not changed. + +.. function:: int gsl_linalg_QRPT_Rsolve (const gsl_matrix * QR, const gsl_permutation * p, const gsl_vector * b, gsl_vector * x) + + This function solves the triangular system :math:`R P^T x = b` for the + :math:`N`-by-:math:`N` matrix :math:`R` contained in :data:`QR`. + +.. function:: int gsl_linalg_QRPT_Rsvx (const gsl_matrix * QR, const gsl_permutation * p, gsl_vector * x) + + This function solves the triangular system :math:`R P^T x = b` in-place + for the :math:`N`-by-:math:`N` matrix :math:`R` contained in :data:`QR`. On + input :data:`x` should contain the right-hand side :math:`b`, which is + replaced by the solution on output. + +.. function:: size_t gsl_linalg_QRPT_rank (const gsl_matrix * QR, const double tol) + + This function estimates the rank of the triangular matrix :math:`R` contained in :data:`QR`. + The algorithm simply counts the number of diagonal elements of :math:`R` whose absolute value + is greater than the specified tolerance :data:`tol`. If the input :data:`tol` is negative, + a default value of :math:`20 (M + N) eps(max(|diag(R)|))` is used. + +.. function:: int gsl_linalg_QRPT_rcond (const gsl_matrix * QR, double * rcond, gsl_vector * work) + + This function estimates the reciprocal condition number (using the 1-norm) of the :math:`R` factor, + stored in the upper triangle of :data:`QR`. The reciprocal condition number estimate, defined as + :math:`1 / (||R||_1 \cdot ||R^{-1}||_1)`, is stored in :data:`rcond`. + Additional workspace of size :math:`3 N` is required in :data:`work`. + +.. index:: complete orthogonal decomposition + +.. _cod: + +Complete Orthogonal Decomposition +================================= + +The complete orthogonal decomposition of a :math:`M`-by-:math:`N` matrix +:math:`A` is a generalization of the QR decomposition with column pivoting, given by + +.. only:: not texinfo + + .. math:: + + A P = Q + \left( + \begin{matrix} + R_{11} & 0 \\ + 0 & 0 + \end{matrix} + \right) Z^T + +.. only:: texinfo + + :: + + A P = Q [ R11 0 ] Z^T + [ 0 0 ] + +where :math:`P` is a :math:`N`-by-:math:`N` permutation matrix, +:math:`Q` is :math:`M`-by-:math:`M` orthogonal, :math:`R_{11}` is +:math:`r`-by-:math:`r` upper triangular, with :math:`r = {\rm rank}(A)`, +and :math:`Z` is :math:`N`-by-:math:`N` orthogonal. If :math:`A` +has full rank, then :math:`R_{11} = R`, :math:`Z = I` and this reduces to the +QR decomposition with column pivoting. + +For a rank deficient least squares problem, :math:`\min_x{|| b - Ax||^2}`, the solution vector +:math:`x` is not unique. However if we further require that :math:`||x||^2` is minimized, +then the complete orthogonal decomposition gives us the ability to compute +the unique minimum norm solution, which is given by + +.. only:: not texinfo + + .. math:: + + x = P Z + \left( + \begin{matrix} + R_{11}^{-1} c_1 \\ + 0 + \end{matrix} + \right) + +.. only:: texinfo + + :: + + x = P Z [ R11^-1 c1 ] + [ 0 ] + +and the vector :math:`c_1` is the first :math:`r` elements of :math:`Q^T b`. + +The COD also enables a straightforward solution of regularized least squares problems +in Tikhonov standard form, written as + +.. math:: \min_x ||b - A x||^2 + \lambda^2 ||x||^2 + +where :math:`\lambda > 0` is a regularization parameter which represents a tradeoff between +minimizing the residual norm :math:`||b - A x||` and the solution norm :math:`||x||`. For this system, +the solution is given by + +.. only:: not texinfo + + .. math:: + + x = P Z + \left( + \begin{matrix} + y_1 \\ + 0 + \end{matrix} + \right) + +.. only:: texinfo + + :: + + x = P Z [ y1 ] + [ 0 ] + +where :math:`y_1` is a vector of length :math:`r` which is found by solving + +.. only:: not texinfo + + .. math:: + + \left( + \begin{matrix} + R_{11} \\ + \lambda I_r + \end{matrix} + \right) y_1 = + \left( + \begin{matrix} + c_1 \\ + 0 + \end{matrix} + \right) + +.. only:: texinfo + + :: + + [ R11 ] y_1 = [ c_1 ] + [ \lambda I_r ] [ 0 ] + +and :math:`c_1` is defined above. The equation above can be solved efficiently for different +values of :math:`\lambda` using QR factorizations of the left hand side matrix. + +.. function:: int gsl_linalg_COD_decomp (gsl_matrix * A, gsl_vector * tau_Q, gsl_vector * tau_Z, gsl_permutation * p, size_t * rank, gsl_vector * work) + int gsl_linalg_COD_decomp_e (gsl_matrix * A, gsl_vector * tau_Q, gsl_vector * tau_Z, gsl_permutation * p, double tol, size_t * rank, gsl_vector * work) + + These functions factor the :math:`M`-by-:math:`N` matrix :data:`A` into the decomposition :math:`A = Q R Z P^T`. The rank of :data:`A` + is computed as the number of diagonal elements of :math:`R` greater than the tolerance :data:`tol` and output in :data:`rank`. + If :data:`tol` is not specified, a default value is used (see :func:`gsl_linalg_QRPT_rank`). On output, the permutation + matrix :math:`P` is stored in :data:`p`. The matrix :math:`R_{11}` is stored in the upper :data:`rank`-by-:data:`rank` block of :data:`A`. + The matrices :math:`Q` and :math:`Z` are encoded in packed storage in :data:`A` on output. The vectors :data:`tau_Q` and :data:`tau_Z` + contain the Householder scalars corresponding to the matrices :math:`Q` and :math:`Z` respectively and must be + of length :math:`k = \min(M,N)`. The vector :data:`work` is additional workspace of length :math:`N`. + +.. function:: int gsl_linalg_COD_lssolve (const gsl_matrix * QRZT, const gsl_vector * tau_Q, const gsl_vector * tau_Z, const gsl_permutation * p, const size_t rank, const gsl_vector * b, gsl_vector * x, gsl_vector * residual) + + This function finds the unique minimum norm least squares solution to the overdetermined + system :math:`A x = b` where the matrix :data:`A` has more rows than + columns. The least squares solution minimizes the Euclidean norm of the + residual, :math:`||b - A x||` as well as the norm of the solution :math:`||x||`. The routine requires as input + the :math:`QRZT` decomposition of :math:`A` into (:data:`QRZT`, :data:`tau_Q`, :data:`tau_Z`, :data:`p`, :data:`rank`) + given by :func:`gsl_linalg_COD_decomp`. The solution is returned in :data:`x`. The + residual, :math:`b - Ax`, is computed as a by-product and stored in :data:`residual`. + +.. function:: int gsl_linalg_COD_lssolve2 (const double lambda, const gsl_matrix * QRZT, const gsl_vector * tau_Q, const gsl_vector * tau_Z, const gsl_permutation * p, const size_t rank, const gsl_vector * b, gsl_vector * x, gsl_vector * residual, gsl_matrix * S, gsl_vector * work) + + This function finds the solution to the regularized least squares problem in Tikhonov + standard form, :math:`\min_x ||b - Ax||^2 + \lambda^2 ||x||^2`. The routine requires as input + the :math:`QRZT` decomposition of :math:`A` into (:data:`QRZT`, :data:`tau_Q`, :data:`tau_Z`, :data:`p`, :data:`rank`) + given by :func:`gsl_linalg_COD_decomp`. The parameter :math:`\lambda` is supplied in :data:`lambda`. The solution + is returned in :data:`x`. The residual, :math:`b - Ax`, is stored in :data:`residual` on output. :data:`S` is additional + workspace of size :data:`rank`-by-:data:`rank`. :data:`work` is additional workspace of length :data:`rank`. + +.. function:: int gsl_linalg_COD_unpack (const gsl_matrix * QRZT, const gsl_vector * tau_Q, const gsl_vector * tau_Z, const size_t rank, gsl_matrix * Q, gsl_matrix * R, gsl_matrix * Z) + + This function unpacks the encoded :math:`QRZT` decomposition + (:data:`QRZT`, :data:`tau_Q`, :data:`tau_Z`, :data:`rank`) into the matrices + :data:`Q`, :data:`R`, and :data:`Z`, where :data:`Q` is :math:`M`-by-:math:`M`, + :data:`R` is :math:`M`-by-:math:`N`, and :data:`Z` is :math:`N`-by-:math:`N`. + +.. function:: int gsl_linalg_COD_matZ (const gsl_matrix * QRZT, const gsl_vector * tau_Z, const size_t rank, gsl_matrix * A, gsl_vector * work) + + This function multiplies the input matrix :data:`A` on the right by :data:`Z`, + :math:`A' = A Z` using the encoded :math:`QRZT` decomposition + (:data:`QRZT`, :data:`tau_Z`, :data:`rank`). :data:`A` must have :math:`N` columns but may + have any number of rows. Additional workspace of length :math:`M` is provided + in :data:`work`. + +.. index:: SVD, singular value decomposition + +Singular Value Decomposition +============================ + +A general rectangular :math:`M`-by-:math:`N` matrix :math:`A` has a +singular value decomposition (SVD) into the product of an +:math:`M`-by-:math:`N` orthogonal matrix :math:`U`, an :math:`N`-by-:math:`N` +diagonal matrix of singular values :math:`S` and the transpose of an +:math:`N`-by-:math:`N` orthogonal square matrix :math:`V`, + +.. math:: A = U S V^T + +The singular values :math:`\sigma_i = S_{ii}` +are all non-negative and are +generally chosen to form a non-increasing sequence + +.. only:: not texinfo + + .. math:: \sigma_1 \ge \sigma_2 \ge ... \ge \sigma_N \ge 0 + +.. only:: texinfo + + .. math:: \sigma_1 >= \sigma_2 >= ... >= \sigma_N >= 0 + +The singular value decomposition of a matrix has many practical uses. +The condition number of the matrix is given by the ratio of the largest +singular value to the smallest singular value. The presence of a zero +singular value indicates that the matrix is singular. The number of +non-zero singular values indicates the rank of the matrix. In practice +singular value decomposition of a rank-deficient matrix will not produce +exact zeroes for singular values, due to finite numerical +precision. Small singular values should be edited by choosing a suitable +tolerance. + +For a rank-deficient matrix, the null space of :math:`A` is given by +the columns of :math:`V` corresponding to the zero singular values. +Similarly, the range of :math:`A` is given by columns of :math:`U` +corresponding to the non-zero singular values. + +Note that the routines here compute the "thin" version of the SVD +with :math:`U` as :math:`M`-by-:math:`N` orthogonal matrix. This allows +in-place computation and is the most commonly-used form in practice. +Mathematically, the "full" SVD is defined with :math:`U` as an +:math:`M`-by-:math:`M` orthogonal matrix and :math:`S` as an +:math:`M`-by-:math:`N` diagonal matrix (with additional rows of zeros). + +.. function:: int gsl_linalg_SV_decomp (gsl_matrix * A, gsl_matrix * V, gsl_vector * S, gsl_vector * work) + + This function factorizes the :math:`M`-by-:math:`N` matrix :data:`A` into + the singular value decomposition :math:`A = U S V^T` for :math:`M \ge N`. + On output the matrix :data:`A` is replaced by + :math:`U`. The diagonal elements of the singular value matrix :math:`S` + are stored in the vector :data:`S`. The singular values are non-negative + and form a non-increasing sequence from :math:`S_1` to :math:`S_N`. The + matrix :data:`V` contains the elements of :math:`V` in untransposed + form. To form the product :math:`U S V^T` it is necessary to take the + transpose of :data:`V`. A workspace of length :data:`N` is required in + :data:`work`. + + This routine uses the Golub-Reinsch SVD algorithm. + +.. function:: int gsl_linalg_SV_decomp_mod (gsl_matrix * A, gsl_matrix * X, gsl_matrix * V, gsl_vector * S, gsl_vector * work) + + This function computes the SVD using the modified Golub-Reinsch + algorithm, which is faster for :math:`M \gg N`. + It requires the vector :data:`work` of length :data:`N` and the + :math:`N`-by-:math:`N` matrix :data:`X` as additional working space. + +.. index:: Jacobi orthogonalization + +.. function:: int gsl_linalg_SV_decomp_jacobi (gsl_matrix * A, gsl_matrix * V, gsl_vector * S) + + This function computes the SVD of the :math:`M`-by-:math:`N` matrix :data:`A` + using one-sided Jacobi orthogonalization for :math:`M \ge N`. + The Jacobi method can compute singular values to higher + relative accuracy than Golub-Reinsch algorithms (see references for + details). + +.. function:: int gsl_linalg_SV_solve (const gsl_matrix * U, const gsl_matrix * V, const gsl_vector * S, const gsl_vector * b, gsl_vector * x) + + This function solves the system :math:`A x = b` using the singular value + decomposition (:data:`U`, :data:`S`, :data:`V`) of :math:`A` which must + have been computed previously with :func:`gsl_linalg_SV_decomp`. + + Only non-zero singular values are used in computing the solution. The + parts of the solution corresponding to singular values of zero are + ignored. Other singular values can be edited out by setting them to + zero before calling this function. + + In the over-determined case where :data:`A` has more rows than columns the + system is solved in the least squares sense, returning the solution + :data:`x` which minimizes :math:`||A x - b||_2`. + +.. function:: int gsl_linalg_SV_leverage (const gsl_matrix * U, gsl_vector * h) + + This function computes the statistical leverage values :math:`h_i` of a matrix :math:`A` + using its singular value decomposition (:data:`U`, :data:`S`, :data:`V`) previously computed + with :func:`gsl_linalg_SV_decomp`. :math:`h_i` are the diagonal values of the matrix + :math:`A (A^T A)^{-1} A^T` and depend only on the matrix :data:`U` which is the input to + this function. + +.. index:: + single: Cholesky decomposition + single: square root of a matrix, Cholesky decomposition + single: matrix square root, Cholesky decomposition + +.. _sec_cholesky-decomposition: + +Cholesky Decomposition +====================== + +A symmetric, positive definite square matrix :math:`A` has a Cholesky +decomposition into a product of a lower triangular matrix :math:`L` and +its transpose :math:`L^T`, + +.. math:: A = L L^T + +This is sometimes referred to as taking the square-root of a matrix. The +Cholesky decomposition can only be carried out when all the eigenvalues +of the matrix are positive. This decomposition can be used to convert +the linear system :math:`A x = b` into a pair of triangular systems +(:math:`L y = b`, :math:`L^T x = y`), which can be solved by forward and +back-substitution. + +If the matrix :math:`A` is near singular, it is sometimes possible to reduce +the condition number and recover a more accurate solution vector :math:`x` +by scaling as + +.. only:: not texinfo + + .. math:: \left( S A S \right) \left( S^{-1} x \right) = S b + +.. only:: texinfo + + .. math:: ( S A S ) ( S^(-1) x ) = S b + +where :math:`S` is a diagonal matrix whose elements are given by +:math:`S_{ii} = 1/\sqrt{A_{ii}}`. This scaling is also known as +Jacobi preconditioning. There are routines below to solve +both the scaled and unscaled systems. + +.. function:: int gsl_linalg_cholesky_decomp1 (gsl_matrix * A) + int gsl_linalg_complex_cholesky_decomp (gsl_matrix_complex * A) + + These functions factorize the symmetric, positive-definite square matrix + :data:`A` into the Cholesky decomposition :math:`A = L L^T` (or + :math:`A = L L^{\dagger}` + for the complex case). On input, the values from the diagonal and lower-triangular + part of the matrix :data:`A` are used (the upper triangular part is ignored). On output + the diagonal and lower triangular part of the input matrix :data:`A` contain the matrix + :math:`L`, while the upper triangular part is unmodified. If the matrix is not + positive-definite then the decomposition will fail, returning the + error code :macro:`GSL_EDOM`. + + When testing whether a matrix is positive-definite, disable the error + handler first to avoid triggering an error. + +.. function:: int gsl_linalg_cholesky_decomp (gsl_matrix * A) + + This function is now deprecated and is provided only for backward compatibility. + +.. function:: int gsl_linalg_cholesky_solve (const gsl_matrix * cholesky, const gsl_vector * b, gsl_vector * x) + int gsl_linalg_complex_cholesky_solve (const gsl_matrix_complex * cholesky, const gsl_vector_complex * b, gsl_vector_complex * x) + + These functions solve the system :math:`A x = b` using the Cholesky + decomposition of :math:`A` held in the matrix :data:`cholesky` which must + have been previously computed by :func:`gsl_linalg_cholesky_decomp` or + :func:`gsl_linalg_complex_cholesky_decomp`. + +.. function:: int gsl_linalg_cholesky_svx (const gsl_matrix * cholesky, gsl_vector * x) + int gsl_linalg_complex_cholesky_svx (const gsl_matrix_complex * cholesky, gsl_vector_complex * x) + + These functions solve the system :math:`A x = b` in-place using the + Cholesky decomposition of :math:`A` held in the matrix :data:`cholesky` + which must have been previously computed by + :func:`gsl_linalg_cholesky_decomp` or + :func:`gsl_linalg_complex_cholesky_decomp`. On input :data:`x` should + contain the right-hand side :math:`b`, which is replaced by the + solution on output. + +.. function:: int gsl_linalg_cholesky_invert (gsl_matrix * cholesky) + int gsl_linalg_complex_cholesky_invert (gsl_matrix_complex * cholesky) + + These functions compute the inverse of a matrix from its Cholesky + decomposition :data:`cholesky`, which must have been previously computed + by :func:`gsl_linalg_cholesky_decomp` or + :func:`gsl_linalg_complex_cholesky_decomp`. On output, the inverse is + stored in-place in :data:`cholesky`. + +.. function:: int gsl_linalg_cholesky_decomp2 (gsl_matrix * A, gsl_vector * S) + + This function calculates a diagonal scaling transformation :math:`S` for + the symmetric, positive-definite square matrix :data:`A`, and then + computes the Cholesky decomposition :math:`S A S = L L^T`. + On input, the values from the diagonal and lower-triangular part of the matrix :data:`A` are + used (the upper triangular part is ignored). On output the diagonal and lower triangular part + of the input matrix :data:`A` contain the matrix :math:`L`, while the upper triangular part + of the input matrix is overwritten with :math:`L^T` (the diagonal terms being + identical for both :math:`L` and :math:`L^T`). If the matrix is not + positive-definite then the decomposition will fail, returning the + error code :macro:`GSL_EDOM`. The diagonal scale factors are stored in :data:`S` + on output. + + When testing whether a matrix is positive-definite, disable the error + handler first to avoid triggering an error. + +.. function:: int gsl_linalg_cholesky_solve2 (const gsl_matrix * cholesky, const gsl_vector * S, const gsl_vector * b, gsl_vector * x) + + This function solves the system :math:`(S A S) (S^{-1} x) = S b` using the Cholesky + decomposition of :math:`S A S` held in the matrix :data:`cholesky` which must + have been previously computed by :func:`gsl_linalg_cholesky_decomp2`. + +.. function:: int gsl_linalg_cholesky_svx2 (const gsl_matrix * cholesky, const gsl_vector * S, gsl_vector * x) + + This function solves the system :math:`(S A S) (S^{-1} x) = S b` in-place using the + Cholesky decomposition of :math:`S A S` held in the matrix :data:`cholesky` + which must have been previously computed by + :func:`gsl_linalg_cholesky_decomp2`. On input :data:`x` should + contain the right-hand side :math:`b`, which is replaced by the + solution on output. + +.. function:: int gsl_linalg_cholesky_scale (const gsl_matrix * A, gsl_vector * S) + + This function calculates a diagonal scaling transformation of the + symmetric, positive definite matrix :data:`A`, such that + :math:`S A S` has a condition number within a factor of :math:`N` + of the matrix of smallest possible condition number over all + possible diagonal scalings. On output, :data:`S` contains the + scale factors, given by :math:`S_i = 1/\sqrt{A_{ii}}`. + For any :math:`A_{ii} \le 0`, the corresponding scale factor :math:`S_i` + is set to :math:`1`. + +.. function:: int gsl_linalg_cholesky_scale_apply (gsl_matrix * A, const gsl_vector * S) + + This function applies the scaling transformation :data:`S` to the matrix :data:`A`. On output, + :data:`A` is replaced by :math:`S A S`. + +.. function:: int gsl_linalg_cholesky_rcond (const gsl_matrix * cholesky, double * rcond, gsl_vector * work) + + This function estimates the reciprocal condition number (using the 1-norm) of the symmetric positive + definite matrix :math:`A`, using its Cholesky decomposition provided in :data:`cholesky`. + The reciprocal condition number estimate, defined as :math:`1 / (||A||_1 \cdot ||A^{-1}||_1)`, is stored + in :data:`rcond`. Additional workspace of size :math:`3 N` is required in :data:`work`. + +.. index:: + single: Cholesky decomposition, pivoted + single: Pivoted Cholesky Decomposition + +Pivoted Cholesky Decomposition +============================== + +A symmetric, positive definite square matrix :math:`A` has an alternate +Cholesky decomposition into a product of a lower unit triangular matrix :math:`L`, +a diagonal matrix :math:`D` and :math:`L^T`, given by :math:`L D L^T`. This is +equivalent to the Cholesky formulation discussed above, with +the standard Cholesky lower triangular factor given by :math:`L D^{1 \over 2}`. +For ill-conditioned matrices, it can help to use a pivoting strategy to +prevent the entries of :math:`D` and :math:`L` from growing too large, and also +ensure :math:`D_1 \ge D_2 \ge \cdots \ge D_n > 0`, where :math:`D_i` are +the diagonal entries of :math:`D`. The final decomposition is given by + +.. math:: P A P^T = L D L^T + +where :math:`P` is a permutation matrix. + +.. function:: int gsl_linalg_pcholesky_decomp (gsl_matrix * A, gsl_permutation * p) + + This function factors the symmetric, positive-definite square matrix + :data:`A` into the Pivoted Cholesky decomposition :math:`P A P^T = L D L^T`. + On input, the values from the diagonal and lower-triangular part of the matrix :data:`A` are + used to construct the factorization. On output the diagonal of the input matrix :data:`A` stores + the diagonal elements of :math:`D`, and the lower triangular portion of :data:`A` + contains the matrix :math:`L`. Since :math:`L` has ones on its diagonal these + do not need to be explicitely stored. The upper triangular portion of :data:`A` is + unmodified. The permutation matrix :math:`P` is stored in :data:`p` on output. + +.. function:: int gsl_linalg_pcholesky_solve (const gsl_matrix * LDLT, const gsl_permutation * p, const gsl_vector * b, gsl_vector * x) + + This function solves the system :math:`A x = b` using the Pivoted Cholesky + decomposition of :math:`A` held in the matrix :data:`LDLT` and permutation + :data:`p` which must have been previously computed by :func:`gsl_linalg_pcholesky_decomp`. + +.. function:: int gsl_linalg_pcholesky_svx (const gsl_matrix * LDLT, const gsl_permutation * p, gsl_vector * x) + + This function solves the system :math:`A x = b` in-place using the Pivoted Cholesky + decomposition of :math:`A` held in the matrix :data:`LDLT` and permutation + :data:`p` which must have been previously computed by :func:`gsl_linalg_pcholesky_decomp`. + On input, :data:`x` contains the right hand side vector :math:`b` which is + replaced by the solution vector on output. + +.. function:: int gsl_linalg_pcholesky_decomp2 (gsl_matrix * A, gsl_permutation * p, gsl_vector * S) + + This function computes the pivoted Cholesky factorization of the matrix + :math:`S A S`, where the input matrix :data:`A` is symmetric and positive + definite, and the diagonal scaling matrix :data:`S` is computed to reduce the + condition number of :data:`A` as much as possible. See + :ref:`Cholesky Decomposition ` for more information on the matrix :data:`S`. + The Pivoted Cholesky decomposition satisfies :math:`P S A S P^T = L D L^T`. + On input, the values from the diagonal and lower-triangular part of the matrix :data:`A` are + used to construct the factorization. On output the diagonal of the input matrix :data:`A` stores the diagonal + elements of :math:`D`, and the lower triangular portion of :data:`A` + contains the matrix :math:`L`. Since :math:`L` has ones on its diagonal these + do not need to be explicitely stored. The upper triangular portion of :data:`A` + is unmodified. The permutation matrix :math:`P` is stored in :data:`p` on output. + The diagonal scaling transformation is stored in :data:`S` on output. + +.. function:: int gsl_linalg_pcholesky_solve2 (const gsl_matrix * LDLT, const gsl_permutation * p, const gsl_vector * S, const gsl_vector * b, gsl_vector * x) + + This function solves the system :math:`(S A S) (S^{-1} x) = S b` using the Pivoted Cholesky + decomposition of :math:`S A S` held in the matrix :data:`LDLT`, permutation + :data:`p`, and vector :data:`S`, which must have been previously computed by + :func:`gsl_linalg_pcholesky_decomp2`. + +.. function:: int gsl_linalg_pcholesky_svx2 (const gsl_matrix * LDLT, const gsl_permutation * p, const gsl_vector * S, gsl_vector * x) + + This function solves the system :math:`(S A S) (S^{-1} x) = S b` in-place using the Pivoted Cholesky + decomposition of :math:`S A S` held in the matrix :data:`LDLT`, permutation + :data:`p` and vector :data:`S`, which must have been previously computed by + :func:`gsl_linalg_pcholesky_decomp2`. + On input, :data:`x` contains the right hand side vector :math:`b` which is + replaced by the solution vector on output. + +.. function:: int gsl_linalg_pcholesky_invert (const gsl_matrix * LDLT, const gsl_permutation * p, gsl_matrix * Ainv) + + This function computes the inverse of the matrix :math:`A`, using the Pivoted + Cholesky decomposition stored in :data:`LDLT` and :data:`p`. On output, the + matrix :data:`Ainv` contains :math:`A^{-1}`. + +.. function:: int gsl_linalg_pcholesky_rcond (const gsl_matrix * LDLT, const gsl_permutation * p, double * rcond, gsl_vector * work) + + This function estimates the reciprocal condition number (using the 1-norm) of the symmetric positive + definite matrix :math:`A`, using its pivoted Cholesky decomposition provided in :data:`LDLT`. + The reciprocal condition number estimate, defined as :math:`1 / (||A||_1 \cdot ||A^{-1}||_1)`, is stored + in :data:`rcond`. Additional workspace of size :math:`3 N` is required in :data:`work`. + +.. index:: + single: Cholesky decomposition, modified + single: Modified Cholesky Decomposition + +Modified Cholesky Decomposition +=============================== + +The modified Cholesky decomposition is suitable for solving systems +:math:`A x = b` where :math:`A` is a symmetric indefinite matrix. Such +matrices arise in nonlinear optimization algorithms. The standard +Cholesky decomposition requires a positive definite matrix and would +fail in this case. Instead of resorting to a method like QR or SVD, +which do not take into account the symmetry of the matrix, we can +instead introduce a small perturbation to the matrix :math:`A` to +make it positive definite, and then use a Cholesky decomposition on +the perturbed matrix. The resulting decomposition satisfies + +.. math:: P (A + E) P^T = L D L^T + +where :math:`P` is a permutation matrix, :math:`E` is a diagonal +perturbation matrix, :math:`L` is unit lower triangular, and +:math:`D` is diagonal. If :math:`A` is sufficiently positive +definite, then the perturbation matrix :math:`E` will be zero +and this method is equivalent to the pivoted Cholesky algorithm. +For indefinite matrices, the perturbation matrix :math:`E` is +computed to ensure that :math:`A + E` is positive definite and +well conditioned. + +.. function:: int gsl_linalg_mcholesky_decomp (gsl_matrix * A, gsl_permutation * p, gsl_vector * E) + + This function factors the symmetric, indefinite square matrix + :data:`A` into the Modified Cholesky decomposition :math:`P (A + E) P^T = L D L^T`. + On input, the values from the diagonal and lower-triangular part of the matrix :data:`A` are + used to construct the factorization. On output the diagonal of the input matrix :data:`A` stores the diagonal + elements of :math:`D`, and the lower triangular portion of :data:`A` + contains the matrix :math:`L`. Since :math:`L` has ones on its diagonal these + do not need to be explicitely stored. The upper triangular portion of :data:`A` + is unmodified. The permutation matrix :math:`P` is + stored in :data:`p` on output. The diagonal perturbation matrix is stored in + :data:`E` on output. The parameter :data:`E` may be set to NULL if it is not + required. + +.. function:: int gsl_linalg_mcholesky_solve (const gsl_matrix * LDLT, const gsl_permutation * p, const gsl_vector * b, gsl_vector * x) + + This function solves the perturbed system :math:`(A + E) x = b` using the Cholesky + decomposition of :math:`A + E` held in the matrix :data:`LDLT` and permutation + :data:`p` which must have been previously computed by :func:`gsl_linalg_mcholesky_decomp`. + +.. function:: int gsl_linalg_mcholesky_svx (const gsl_matrix * LDLT, const gsl_permutation * p, gsl_vector * x) + + This function solves the perturbed system :math:`(A + E) x = b` in-place using the Cholesky + decomposition of :math:`A + E` held in the matrix :data:`LDLT` and permutation + :data:`p` which must have been previously computed by :func:`gsl_linalg_mcholesky_decomp`. + On input, :data:`x` contains the right hand side vector :math:`b` which is + replaced by the solution vector on output. + +.. function:: int gsl_linalg_mcholesky_rcond (const gsl_matrix * LDLT, const gsl_permutation * p, double * rcond, gsl_vector * work) + + This function estimates the reciprocal condition number (using the 1-norm) of the perturbed matrix + :math:`A + E`, using its pivoted Cholesky decomposition provided in :data:`LDLT`. + The reciprocal condition number estimate, defined as :math:`1 / (||A + E||_1 \cdot ||(A + E)^{-1}||_1)`, is stored + in :data:`rcond`. Additional workspace of size :math:`3 N` is required in :data:`work`. + +.. index:: tridiagonal decomposition + +Tridiagonal Decomposition of Real Symmetric Matrices +==================================================== + +A symmetric matrix :math:`A` can be factorized by similarity +transformations into the form, + +.. math:: A = Q T Q^T + +where :math:`Q` is an orthogonal matrix and :math:`T` is a symmetric +tridiagonal matrix. + +.. function:: int gsl_linalg_symmtd_decomp (gsl_matrix * A, gsl_vector * tau) + + This function factorizes the symmetric square matrix :data:`A` into the + symmetric tridiagonal decomposition :math:`Q T Q^T`. On output the + diagonal and subdiagonal part of the input matrix :data:`A` contain the + tridiagonal matrix :math:`T`. The remaining lower triangular part of the + input matrix contains the Householder vectors which, together with the + Householder coefficients :data:`tau`, encode the orthogonal matrix + :math:`Q`. This storage scheme is the same as used by |lapack|. The + upper triangular part of :data:`A` is not referenced. + +.. function:: int gsl_linalg_symmtd_unpack (const gsl_matrix * A, const gsl_vector * tau, gsl_matrix * Q, gsl_vector * diag, gsl_vector * subdiag) + + This function unpacks the encoded symmetric tridiagonal decomposition + (:data:`A`, :data:`tau`) obtained from :func:`gsl_linalg_symmtd_decomp` into + the orthogonal matrix :data:`Q`, the vector of diagonal elements :data:`diag` + and the vector of subdiagonal elements :data:`subdiag`. + +.. function:: int gsl_linalg_symmtd_unpack_T (const gsl_matrix * A, gsl_vector * diag, gsl_vector * subdiag) + + This function unpacks the diagonal and subdiagonal of the encoded + symmetric tridiagonal decomposition (:data:`A`, :data:`tau`) obtained from + :func:`gsl_linalg_symmtd_decomp` into the vectors :data:`diag` and :data:`subdiag`. + +.. index:: tridiagonal decomposition + +Tridiagonal Decomposition of Hermitian Matrices +=============================================== + +A hermitian matrix :math:`A` can be factorized by similarity +transformations into the form, + +.. math:: A = U T U^T + +where :math:`U` is a unitary matrix and :math:`T` is a real symmetric +tridiagonal matrix. + +.. function:: int gsl_linalg_hermtd_decomp (gsl_matrix_complex * A, gsl_vector_complex * tau) + + This function factorizes the hermitian matrix :data:`A` into the symmetric + tridiagonal decomposition :math:`U T U^T`. On output the real parts of + the diagonal and subdiagonal part of the input matrix :data:`A` contain + the tridiagonal matrix :math:`T`. The remaining lower triangular part of + the input matrix contains the Householder vectors which, together with + the Householder coefficients :data:`tau`, encode the unitary matrix + :math:`U`. This storage scheme is the same as used by |lapack|. The + upper triangular part of :data:`A` and imaginary parts of the diagonal are + not referenced. + +.. function:: int gsl_linalg_hermtd_unpack (const gsl_matrix_complex * A, const gsl_vector_complex * tau, gsl_matrix_complex * U, gsl_vector * diag, gsl_vector * subdiag) + + This function unpacks the encoded tridiagonal decomposition (:data:`A`, + :data:`tau`) obtained from :func:`gsl_linalg_hermtd_decomp` into the + unitary matrix :data:`U`, the real vector of diagonal elements :data:`diag` and + the real vector of subdiagonal elements :data:`subdiag`. + +.. function:: int gsl_linalg_hermtd_unpack_T (const gsl_matrix_complex * A, gsl_vector * diag, gsl_vector * subdiag) + + This function unpacks the diagonal and subdiagonal of the encoded + tridiagonal decomposition (:data:`A`, :data:`tau`) obtained from the + :func:`gsl_linalg_hermtd_decomp` into the real vectors + :data:`diag` and :data:`subdiag`. + +.. index:: Hessenberg decomposition + +Hessenberg Decomposition of Real Matrices +========================================= + +A general real matrix :math:`A` can be decomposed by orthogonal +similarity transformations into the form + +.. math:: A = U H U^T + +where :math:`U` is orthogonal and :math:`H` is an upper Hessenberg matrix, +meaning that it has zeros below the first subdiagonal. The +Hessenberg reduction is the first step in the Schur decomposition +for the nonsymmetric eigenvalue problem, but has applications in +other areas as well. + +.. function:: int gsl_linalg_hessenberg_decomp (gsl_matrix * A, gsl_vector * tau) + + This function computes the Hessenberg decomposition of the matrix + :data:`A` by applying the similarity transformation :math:`H = U^T A U`. + On output, :math:`H` is stored in the upper portion of :data:`A`. The + information required to construct the matrix :math:`U` is stored in + the lower triangular portion of :data:`A`. :math:`U` is a product + of :math:`N - 2` Householder matrices. The Householder vectors + are stored in the lower portion of :data:`A` (below the subdiagonal) + and the Householder coefficients are stored in the vector :data:`tau`. + :data:`tau` must be of length :data:`N`. + +.. function:: int gsl_linalg_hessenberg_unpack (gsl_matrix * H, gsl_vector * tau, gsl_matrix * U) + + This function constructs the orthogonal matrix :math:`U` from the + information stored in the Hessenberg matrix :data:`H` along with the + vector :data:`tau`. :data:`H` and :data:`tau` are outputs from + :func:`gsl_linalg_hessenberg_decomp`. + +.. function:: int gsl_linalg_hessenberg_unpack_accum (gsl_matrix * H, gsl_vector * tau, gsl_matrix * V) + + This function is similar to :func:`gsl_linalg_hessenberg_unpack`, except + it accumulates the matrix :data:`U` into :data:`V`, so that :math:`V' = VU`. + The matrix :data:`V` must be initialized prior to calling this function. + Setting :data:`V` to the identity matrix provides the same result as + :func:`gsl_linalg_hessenberg_unpack`. If :data:`H` is order :data:`N`, then + :data:`V` must have :data:`N` columns but may have any number of rows. + +.. function:: int gsl_linalg_hessenberg_set_zero (gsl_matrix * H) + + This function sets the lower triangular portion of :data:`H`, below + the subdiagonal, to zero. It is useful for clearing out the + Householder vectors after calling :func:`gsl_linalg_hessenberg_decomp`. + +.. index:: Hessenberg triangular decomposition + +Hessenberg-Triangular Decomposition of Real Matrices +==================================================== + +A general real matrix pair (:math:`A`, :math:`B`) can be decomposed by +orthogonal similarity transformations into the form + +.. only:: not texinfo + + .. math:: + + A &= U H V^T \\ + B &= U R V^T + +.. only:: texinfo + + :: + + A = U H V^T + B = U R V^T + +where :math:`U` and :math:`V` are orthogonal, :math:`H` is an upper +Hessenberg matrix, and :math:`R` is upper triangular. The +Hessenberg-Triangular reduction is the first step in the generalized +Schur decomposition for the generalized eigenvalue problem. + +.. function:: int gsl_linalg_hesstri_decomp (gsl_matrix * A, gsl_matrix * B, gsl_matrix * U, gsl_matrix * V, gsl_vector * work) + + This function computes the Hessenberg-Triangular decomposition of the + matrix pair (:data:`A`, :data:`B`). On output, :math:`H` is stored in :data:`A`, + and :math:`R` is stored in :data:`B`. If :data:`U` and :data:`V` are provided + (they may be null), the similarity transformations are stored in them. + Additional workspace of length :math:`N` is needed in :data:`work`. + +.. index:: bidiagonalization of real matrices + +Bidiagonalization +================= + +A general matrix :math:`A` can be factorized by similarity +transformations into the form, + +.. math:: A = U B V^T + +where :math:`U` and :math:`V` are orthogonal matrices and :math:`B` is a +:math:`N`-by-:math:`N` bidiagonal matrix with non-zero entries only on the +diagonal and superdiagonal. The size of :data:`U` is :math:`M`-by-:math:`N` +and the size of :data:`V` is :math:`N`-by-:math:`N`. + +.. function:: int gsl_linalg_bidiag_decomp (gsl_matrix * A, gsl_vector * tau_U, gsl_vector * tau_V) + + This function factorizes the :math:`M`-by-:math:`N` matrix :data:`A` into + bidiagonal form :math:`U B V^T`. The diagonal and superdiagonal of the + matrix :math:`B` are stored in the diagonal and superdiagonal of :data:`A`. + The orthogonal matrices :math:`U` and :data:`V` are stored as compressed + Householder vectors in the remaining elements of :data:`A`. The + Householder coefficients are stored in the vectors :data:`tau_U` and + :data:`tau_V`. The length of :data:`tau_U` must equal the number of + elements in the diagonal of :data:`A` and the length of :data:`tau_V` should + be one element shorter. + +.. function:: int gsl_linalg_bidiag_unpack (const gsl_matrix * A, const gsl_vector * tau_U, gsl_matrix * U, const gsl_vector * tau_V, gsl_matrix * V, gsl_vector * diag, gsl_vector * superdiag) + + This function unpacks the bidiagonal decomposition of :data:`A` produced by + :func:`gsl_linalg_bidiag_decomp`, (:data:`A`, :data:`tau_U`, :data:`tau_V`) + into the separate orthogonal matrices :data:`U`, :data:`V` and the diagonal + vector :data:`diag` and superdiagonal :data:`superdiag`. Note that :data:`U` + is stored as a compact :math:`M`-by-:math:`N` orthogonal matrix satisfying + :math:`U^T U = I` for efficiency. + +.. function:: int gsl_linalg_bidiag_unpack2 (gsl_matrix * A, gsl_vector * tau_U, gsl_vector * tau_V, gsl_matrix * V) + + This function unpacks the bidiagonal decomposition of :data:`A` produced by + :func:`gsl_linalg_bidiag_decomp`, (:data:`A`, :data:`tau_U`, :data:`tau_V`) + into the separate orthogonal matrices :data:`U`, :data:`V` and the diagonal + vector :data:`diag` and superdiagonal :data:`superdiag`. The matrix :data:`U` + is stored in-place in :data:`A`. + +.. function:: int gsl_linalg_bidiag_unpack_B (const gsl_matrix * A, gsl_vector * diag, gsl_vector * superdiag) + + This function unpacks the diagonal and superdiagonal of the bidiagonal + decomposition of :data:`A` from :func:`gsl_linalg_bidiag_decomp`, into + the diagonal vector :data:`diag` and superdiagonal vector :data:`superdiag`. + +.. index:: Givens rotation + +Givens Rotations +================ + +A Givens rotation is a rotation in the plane acting on two elements +of a given vector. It can be represented in matrix form as + +.. only:: not texinfo + + .. math:: + + G(i,j,\theta) = + \left( + \begin{matrix} + 1 & \ldots & 0 & \ldots & 0 & \ldots & 0 \\ + \vdots & \ddots & \vdots & & \vdots & & \vdots \\ + 0 & \ldots & \cos{\theta} & \ldots & -\sin{\theta} & \ldots & 0 \\ + \vdots & & \vdots & \ddots & \vdots & & \vdots \\ + 0 & \ldots & \sin{\theta} & \ldots & \cos{\theta} & \ldots & 0 \\ + \vdots & & \vdots & & \vdots & \ddots & \vdots \\ + 0 & \ldots & 0 & \ldots & 0 & \ldots & 1 + \end{matrix} + \right) + +where the :math:`\cos{\theta}` and :math:`\sin{\theta}` appear at +the intersection of the :math:`i`-th and :math:`j`-th rows and columns. +When acting on a vector :math:`x`, :math:`G(i,j,\theta) x` performs +a rotation of the :math:`(i,j)` elements of :math:`x`. Givens +rotations are typically used to introduce zeros in +vectors, such as during the QR decomposition of a matrix. In this +case, it is typically desired to find :math:`c` and :math:`s` such that + +.. only:: not texinfo + + .. math:: + + \left( + \begin{matrix} + c & -s \\ + s & c + \end{matrix} + \right) + \left( + \begin{matrix} + a \\ + b + \end{matrix} + \right) = + \left( + \begin{matrix} + r \\ + 0 + \end{matrix} + \right) + +.. only:: texinfo + + :: + + [ c -s ] [ a ] = [ r ] + [ s c ] [ b ] [ 0 ] + +with :math:`r = \sqrt{a^2 + b^2}`. + +.. function:: void gsl_linalg_givens (const double a, const double b, double * c, double * s) + + This function computes :math:`c = \cos{\theta}` and :math:`s = \sin{\theta}` + so that the Givens matrix :math:`G(\theta)` acting on the + vector :math:`(a,b)` produces :math:`(r, 0)`, with :math:`r = \sqrt{a^2 + b^2}`. + +.. function:: void gsl_linalg_givens_gv (gsl_vector * v, const size_t i, const size_t j, const double c, const double s) + + This function applies the Givens rotation defined by + :math:`c = \cos{\theta}` and :math:`s = \sin{\theta}` to the :data:`i` + and :data:`j` elements of :data:`v`. On output, + :math:`(v(i),v(j)) \leftarrow G(\theta) (v(i),v(j))`. + +.. index:: + single: Householder matrix + single: Householder transformation + single: transformation, Householder + +Householder Transformations +=========================== + +A Householder transformation is a rank-1 modification of the identity +matrix which can be used to zero out selected elements of a vector. A +Householder matrix :math:`P` takes the form, + +.. math:: P = I - \tau v v^T + +where :math:`v` is a vector (called the *Householder vector*) and +:math:`\tau = 2/(v^T v)`. The functions described in this section use the +rank-1 structure of the Householder matrix to create and apply +Householder transformations efficiently. + +.. function:: double gsl_linalg_householder_transform (gsl_vector * w) + gsl_complex gsl_linalg_complex_householder_transform (gsl_vector_complex * w) + + This function prepares a Householder transformation :math:`P = I - \tau v v^T` + which can be used to zero all the elements of the input vector :data:`w` + except the first. On output the Householder vector :data:`v` is stored in + :data:`w` and the scalar :math:`\tau` is returned. The householder vector + :data:`v` is normalized so that :code:`v[0] = 1`, however this 1 is not + stored in the output vector. Instead, :code:`w[0]` is set to + the first element of the transformed vector, so that if + :math:`u = P w`, :code:`w[0] = u[0]` on output and the remainder + of :math:`u` is zero. + +.. function:: int gsl_linalg_householder_hm (double tau, const gsl_vector * v, gsl_matrix * A) + int gsl_linalg_complex_householder_hm (gsl_complex tau, const gsl_vector_complex * v, gsl_matrix_complex * A) + + This function applies the Householder matrix :math:`P` defined by the + scalar :data:`tau` and the vector :data:`v` to the left-hand side of the + matrix :data:`A`. On output the result :math:`P A` is stored in :data:`A`. + +.. function:: int gsl_linalg_householder_mh (double tau, const gsl_vector * v, gsl_matrix * A) + int gsl_linalg_complex_householder_mh (gsl_complex tau, const gsl_vector_complex * v, gsl_matrix_complex * A) + + This function applies the Householder matrix :math:`P` defined by the + scalar :data:`tau` and the vector :data:`v` to the right-hand side of the + matrix :data:`A`. On output the result :math:`A P` is stored in :data:`A`. + +.. function:: int gsl_linalg_householder_hv (double tau, const gsl_vector * v, gsl_vector * w) + int gsl_linalg_complex_householder_hv (gsl_complex tau, const gsl_vector_complex * v, gsl_vector_complex * w) + + This function applies the Householder transformation :math:`P` defined by + the scalar :data:`tau` and the vector :data:`v` to the vector :data:`w`. On + output the result :math:`P w` is stored in :data:`w`. + +.. @deftypefun int gsl_linalg_householder_hm1 (double tau, gsl_matrix * A) +.. This function applies the Householder transform, defined by the scalar +.. :data:`tau` and the vector :data:`v`, to a matrix being build up from the +.. identity matrix, using the first column of :data:`A` as a householder vector. +.. @end deftypefun + +.. index:: + single: solution of linear system by Householder transformations + single: Householder linear solver + +Householder solver for linear systems +===================================== + +.. function:: int gsl_linalg_HH_solve (gsl_matrix * A, const gsl_vector * b, gsl_vector * x) + + This function solves the system :math:`A x = b` directly using + Householder transformations. On output the solution is stored in :data:`x` + and :data:`b` is not modified. The matrix :data:`A` is destroyed by the + Householder transformations. + +.. function:: int gsl_linalg_HH_svx (gsl_matrix * A, gsl_vector * x) + + This function solves the system :math:`A x = b` in-place using + Householder transformations. On input :data:`x` should contain the + right-hand side :math:`b`, which is replaced by the solution on output. The + matrix :data:`A` is destroyed by the Householder transformations. + +.. index:: tridiagonal systems + +Tridiagonal Systems +=================== + +The functions described in this section efficiently solve symmetric, +non-symmetric and cyclic tridiagonal systems with minimal storage. +Note that the current implementations of these functions use a variant +of Cholesky decomposition, so the tridiagonal matrix must be positive +definite. For non-positive definite matrices, the functions return +the error code :macro:`GSL_ESING`. + +.. function:: int gsl_linalg_solve_tridiag (const gsl_vector * diag, const gsl_vector * e, const gsl_vector * f, const gsl_vector * b, gsl_vector * x) + + This function solves the general :math:`N`-by-:math:`N` system :math:`A x = b` + where :data:`A` is tridiagonal (:math:`N \geq 2`). + The super-diagonal and + sub-diagonal vectors :data:`e` and :data:`f` must be one element shorter + than the diagonal vector :data:`diag`. The form of :data:`A` for the 4-by-4 + case is shown below, + + .. only:: not texinfo + + .. math:: + + A = + \left( + \begin{matrix} + d_0&e_0& 0& 0\\ + f_0&d_1&e_1& 0\\ + 0 &f_1&d_2&e_2\\ + 0 &0 &f_2&d_3 + \end{matrix} + \right) + + .. only:: texinfo + + :: + + A = ( d_0 e_0 0 0 ) + ( f_0 d_1 e_1 0 ) + ( 0 f_1 d_2 e_2 ) + ( 0 0 f_2 d_3 ) + +.. function:: int gsl_linalg_solve_symm_tridiag (const gsl_vector * diag, const gsl_vector * e, const gsl_vector * b, gsl_vector * x) + + This function solves the general :math:`N`-by-:math:`N` system :math:`A x = b` + where :data:`A` is symmetric tridiagonal (:math:`N \geq 2`). + The off-diagonal vector + :data:`e` must be one element shorter than the diagonal vector :data:`diag`. + The form of :data:`A` for the 4-by-4 case is shown below, + + .. only:: not texinfo + + .. math:: + + A = + \left( + \begin{matrix} + d_0&e_0& 0& 0\\ + e_0&d_1&e_1& 0\\ + 0 &e_1&d_2&e_2\\ + 0 &0 &e_2&d_3 + \end{matrix} + \right) + + .. only:: texinfo + + :: + + A = ( d_0 e_0 0 0 ) + ( e_0 d_1 e_1 0 ) + ( 0 e_1 d_2 e_2 ) + ( 0 0 e_2 d_3 ) + +.. function:: int gsl_linalg_solve_cyc_tridiag (const gsl_vector * diag, const gsl_vector * e, const gsl_vector * f, const gsl_vector * b, gsl_vector * x) + + This function solves the general :math:`N`-by-:math:`N` system :math:`A x = b` + where :data:`A` is cyclic tridiagonal (:math:`N \geq 3`). + The cyclic super-diagonal and + sub-diagonal vectors :data:`e` and :data:`f` must have the same number of + elements as the diagonal vector :data:`diag`. The form of :data:`A` for the + 4-by-4 case is shown below, + + .. only:: not texinfo + + .. math:: + + A = + \left( + \begin{matrix} + d_0&e_0& 0 &f_3\\ + f_0&d_1&e_1& 0 \\ + 0 &f_1&d_2&e_2\\ + e_3& 0 &f_2&d_3 + \end{matrix} + \right) + + .. only:: texinfo + + :: + + A = ( d_0 e_0 0 f_3 ) + ( f_0 d_1 e_1 0 ) + ( 0 f_1 d_2 e_2 ) + ( e_3 0 f_2 d_3 ) + +.. function:: int gsl_linalg_solve_symm_cyc_tridiag (const gsl_vector * diag, const gsl_vector * e, const gsl_vector * b, gsl_vector * x) + + This function solves the general :math:`N`-by-:math:`N` system :math:`A x = b` + where :data:`A` is symmetric cyclic tridiagonal (:math:`N \geq 3`). + The cyclic + off-diagonal vector :data:`e` must have the same number of elements as the + diagonal vector :data:`diag`. The form of :data:`A` for the 4-by-4 case is + shown below, + + .. only:: not texinfo + + .. math:: + + A = + \left( + \begin{matrix} + d_0&e_0& 0 &e_3\\ + e_0&d_1&e_1& 0 \\ + 0 &e_1&d_2&e_2\\ + e_3& 0 &e_2&d_3 + \end{matrix} + \right) + + .. only:: texinfo + + :: + + A = ( d_0 e_0 0 e_3 ) + ( e_0 d_1 e_1 0 ) + ( 0 e_1 d_2 e_2 ) + ( e_3 0 e_2 d_3 ) + +.. index:: triangular systems + +Triangular Systems +================== + +.. function:: int gsl_linalg_tri_upper_invert (gsl_matrix * T) + int gsl_linalg_tri_lower_invert (gsl_matrix * T) + int gsl_linalg_tri_upper_unit_invert (gsl_matrix * T) + int gsl_linalg_tri_lower_unit_invert (gsl_matrix * T) + + These functions calculate the in-place inverse of the triangular matrix :data:`T`. When + the :code:`upper` prefix is specified, then the upper triangle of :data:`T` is used, and when + the :code:`lower` prefix is specified, the lower triangle is used. If the :code:`unit` + prefix is specified, then the diagonal elements of the matrix :data:`T` are taken as + unity and are not referenced. Otherwise the diagonal elements are used in the inversion. + +.. function:: int gsl_linalg_tri_upper_rcond (const gsl_matrix * T, double * rcond, gsl_vector * work) + int gsl_linalg_tri_lower_rcond (const gsl_matrix * T, double * rcond, gsl_vector * work) + + These functions estimate the reciprocal condition number, in the 1-norm, of the upper or lower + :math:`N`-by-:math:`N` triangular matrix :data:`T`. The reciprocal condition number + is stored in :data:`rcond` on output, and is defined by :math:`1 / (||T||_1 \cdot ||T^{-1}||_1)`. + Additional workspace of size :math:`3 N` is required in :data:`work`. + +.. index:: balancing matrices + +.. _balancing: + +Balancing +========= + +The process of balancing a matrix applies similarity transformations +to make the rows and columns have comparable norms. This is +useful, for example, to reduce roundoff errors in the solution +of eigenvalue problems. Balancing a matrix :math:`A` consists +of replacing :math:`A` with a similar matrix + +.. math:: A' = D^{-1} A D + +where :math:`D` is a diagonal matrix whose entries are powers +of the floating point radix. + +.. function:: int gsl_linalg_balance_matrix (gsl_matrix * A, gsl_vector * D) + + This function replaces the matrix :data:`A` with its balanced counterpart + and stores the diagonal elements of the similarity transformation + into the vector :data:`D`. + +Examples +======== + +The following program solves the linear system :math:`A x = b`. The +system to be solved is, + +.. only:: not texinfo + + .. math:: + + \left( + \begin{matrix} + 0.18& 0.60& 0.57& 0.96\\ + 0.41& 0.24& 0.99& 0.58\\ + 0.14& 0.30& 0.97& 0.66\\ + 0.51& 0.13& 0.19& 0.85 + \end{matrix} + \right) + \left( + \begin{matrix} + x_0\\ + x_1\\ + x_2\\ + x_3 + \end{matrix} + \right) + = + \left( + \begin{matrix} + 1.0\\ + 2.0\\ + 3.0\\ + 4.0 + \end{matrix} + \right) + +.. only:: texinfo + + :: + + [ 0.18 0.60 0.57 0.96 ] [x0] [1.0] + [ 0.41 0.24 0.99 0.58 ] [x1] = [2.0] + [ 0.14 0.30 0.97 0.66 ] [x2] [3.0] + [ 0.51 0.13 0.19 0.85 ] [x3] [4.0] + +and the solution is found using LU decomposition of the matrix :math:`A`. + +.. include:: examples/linalglu.c + :code: + +Here is the output from the program, + +.. include:: examples/linalglu.txt + :code: + +This can be verified by multiplying the solution :math:`x` by the +original matrix :math:`A` using |octave|, + +:: + + octave> A = [ 0.18, 0.60, 0.57, 0.96; + 0.41, 0.24, 0.99, 0.58; + 0.14, 0.30, 0.97, 0.66; + 0.51, 0.13, 0.19, 0.85 ]; + + octave> x = [ -4.05205; -12.6056; 1.66091; 8.69377]; + + octave> A * x + ans = + 1.0000 + 2.0000 + 3.0000 + 4.0000 + +This reproduces the original right-hand side vector, :math:`b`, in +accordance with the equation :math:`A x = b`. + +References and Further Reading +============================== + +Further information on the algorithms described in this section can be +found in the following book, + +* G. H. Golub, C. F. Van Loan, "Matrix Computations" (3rd Ed, 1996), + Johns Hopkins University Press, ISBN 0-8018-5414-8. + +The |lapack| library is described in the following manual, + +* *LAPACK Users' Guide* (Third Edition, 1999), Published by SIAM, + ISBN 0-89871-447-8 + +The |lapack| source code can be found at http://www.netlib.org/lapack, +along with an online copy of the users guide. + +The Modified Golub-Reinsch algorithm is described in the following paper, + +* T.F. Chan, "An Improved Algorithm for Computing the Singular Value + Decomposition", ACM Transactions on Mathematical Software, 8 + (1982), pp 72--83. + +The Jacobi algorithm for singular value decomposition is described in +the following papers, + +* J.C. Nash, "A one-sided transformation method for the singular value + decomposition and algebraic eigenproblem", Computer Journal, + Volume 18, Number 1 (1975), p 74--76 + +* J.C. Nash and S. Shlien "Simple algorithms for the partial singular + value decomposition", Computer Journal, Volume 30 (1987), p + 268--275. + +* J. Demmel, K. Veselic, "Jacobi's Method is more accurate than + QR", Lapack Working Note 15 (LAWN-15), October 1989. Available + from netlib, http://www.netlib.org/lapack/ in the :code:`lawns` or + :code:`lawnspdf` directories. + +The algorithm for estimating a matrix condition number is described in +the following paper, + +* N. J. Higham, "FORTRAN codes for estimating the one-norm of + a real or complex matrix, with applications to condition estimation", + ACM Trans. Math. Soft., vol. 14, no. 4, pp. 381-396, December 1988. diff --git a/gsl-2.5/doc/lls.rst b/gsl-2.5/doc/lls.rst new file mode 100644 index 00000000..ef7a37ec --- /dev/null +++ b/gsl-2.5/doc/lls.rst @@ -0,0 +1,1933 @@ +.. index:: + single: fitting + single: least squares fit + single: regression, least squares + single: weighted linear fits + single: unweighted linear fits + +**************************** +Linear Least-Squares Fitting +**************************** + +This chapter describes routines for performing least squares fits to +experimental data using linear combinations of functions. The data +may be weighted or unweighted, i.e. with known or unknown errors. For +weighted data the functions compute the best fit parameters and their +associated covariance matrix. For unweighted data the covariance +matrix is estimated from the scatter of the points, giving a +variance-covariance matrix. + +The functions are divided into separate versions for simple one- or +two-parameter regression and multiple-parameter fits. + +.. _sec_lls-overview: + +Overview +======== + +Least-squares fits are found by minimizing :math:`\chi^2` +(chi-squared), the weighted sum of squared residuals over :math:`n` +experimental datapoints :math:`(x_i, y_i)` for the model :math:`Y(c,x)`, + +.. math:: \chi^2 = \sum_i w_i (y_i - Y(c, x_i))^2 + +The :math:`p` parameters of the model are :math:`c = \{c_0, c_1, \dots\}`. +The weight factors :math:`w_i` are given by :math:`w_i = 1/\sigma_i^2` +where :math:`\sigma_i` is the experimental error on the data-point +:math:`y_i`. The errors are assumed to be +Gaussian and uncorrelated. +For unweighted data the chi-squared sum is computed without any weight factors. + +.. index:: + single: covariance matrix, linear fits + +The fitting routines return the best-fit parameters :math:`c` and their +:math:`p \times p` covariance matrix. The covariance matrix measures the +statistical errors on the best-fit parameters resulting from the +errors on the data, :math:`\sigma_i`, and is defined +as + +.. only:: not texinfo + + .. math:: C_{ab} = \langle \delta c_a \delta c_b \rangle + +.. only:: texinfo + + :: + + C_{ab} = <\delta c_a \delta c_b> + +where :math:`\langle \, \rangle` +denotes an average over the Gaussian error distributions of the underlying datapoints. + +The covariance matrix is calculated by error propagation from the data +errors :math:`\sigma_i`. The change in a fitted parameter :math:`\delta c_a` +caused by a small change in the data :math:`\delta y_i` is given +by + +.. only:: not texinfo + + .. math:: \delta c_a = \sum_i {\partial c_a \over \partial y_i} \delta y_i + +.. only:: texinfo + + :: + + \delta c_a = \sum_i (dc_a/dy_i) \delta y_i + +allowing the covariance matrix to be written in terms of the errors on the data, + +.. only:: not texinfo + + .. math:: + + C_{ab} = \sum_{i,j} {\partial c_a \over \partial y_i} + {\partial c_b \over \partial y_j} + \langle \delta y_i \delta y_j \rangle + +.. only:: texinfo + + :: + + C_{ab} = \sum_{i,j} (dc_a/dy_i) (dc_b/dy_j) <\delta y_i \delta y_j> + +For uncorrelated data the fluctuations of the underlying datapoints satisfy + +.. only:: not texinfo + + .. math:: \langle \delta y_i \delta y_j \rangle = \sigma_i^2 \delta_{ij} + +.. only:: texinfo + + :: + + <\delta y_i \delta y_j> = \sigma_i^2 \delta_{ij} + +giving a corresponding parameter covariance matrix of + +.. only:: not texinfo + + .. math:: C_{ab} = \sum_{i} {1 \over w_i} {\partial c_a \over \partial y_i} {\partial c_b \over \partial y_i} + +.. only:: texinfo + + :: + + C_{ab} = \sum_i (1/w_i) (dc_a/dy_i) (dc_b/dy_i) + +.. index:: + single: variance-covariance matrix, linear fits + +When computing the covariance matrix for unweighted data, i.e. data with unknown errors, +the weight factors :math:`w_i` in this sum are replaced by the single estimate +:math:`w = 1/\sigma^2`, where :math:`\sigma^2` is the computed variance of the +residuals about the best-fit model, :math:`\sigma^2 = \sum (y_i - Y(c,x_i))^2 / (n-p)`. +This is referred to as the *variance-covariance matrix*. + +The standard deviations of the best-fit parameters are given by the +square root of the corresponding diagonal elements of +the covariance matrix, :math:`\sigma_{c_a} = \sqrt{C_{aa}}`. +The correlation coefficient of the fit parameters :math:`c_a` and :math:`c_b` +is given by :math:`\rho_{ab} = C_{ab} / \sqrt{C_{aa} C_{bb}}`. + +.. index:: linear regression + +Linear regression +================= + +The functions in this section are used to fit simple one or two +parameter linear regression models. The functions are declared in +the header file :file:`gsl_fit.h`. + +Linear regression with a constant term +-------------------------------------- +The functions described in this section can be used to perform +least-squares fits to a straight line model, :math:`Y(c,x) = c_0 + c_1 x`. + +.. index:: + single: covariance matrix, from linear regression + +.. function:: int gsl_fit_linear (const double * x, const size_t xstride, const double * y, const size_t ystride, size_t n, double * c0, double * c1, double * cov00, double * cov01, double * cov11, double * sumsq) + + This function computes the best-fit linear regression coefficients + (:data:`c0`, :data:`c1`) of the model :math:`Y = c_0 + c_1 X` for the dataset + (:data:`x`, :data:`y`), two vectors of length :data:`n` with strides + :data:`xstride` and :data:`ystride`. The errors on :data:`y` are assumed unknown so + the variance-covariance matrix for the + parameters (:data:`c0`, :data:`c1`) is estimated from the scatter of the + points around the best-fit line and returned via the parameters + (:data:`cov00`, :data:`cov01`, :data:`cov11`). + The sum of squares of the residuals from the best-fit line is returned + in :data:`sumsq`. Note: the correlation coefficient of the data can be computed using + :func:`gsl_stats_correlation`, it does not depend on the fit. + +.. function:: int gsl_fit_wlinear (const double * x, const size_t xstride, const double * w, const size_t wstride, const double * y, const size_t ystride, size_t n, double * c0, double * c1, double * cov00, double * cov01, double * cov11, double * chisq) + + This function computes the best-fit linear regression coefficients + (:data:`c0`, :data:`c1`) of the model :math:`Y = c_0 + c_1 X` for the weighted + dataset (:data:`x`, :data:`y`), two vectors of length :data:`n` with strides + :data:`xstride` and :data:`ystride`. The vector :data:`w`, of length :data:`n` + and stride :data:`wstride`, specifies the weight of each datapoint. The + weight is the reciprocal of the variance for each datapoint in :data:`y`. + + The covariance matrix for the parameters (:data:`c0`, :data:`c1`) is + computed using the weights and returned via the parameters + (:data:`cov00`, :data:`cov01`, :data:`cov11`). The weighted sum of squares + of the residuals from the best-fit line, :math:`\chi^2`, is returned in + :data:`chisq`. + +.. function:: int gsl_fit_linear_est (double x, double c0, double c1, double cov00, double cov01, double cov11, double * y, double * y_err) + + This function uses the best-fit linear regression coefficients + :data:`c0`, :data:`c1` and their covariance + :data:`cov00`, :data:`cov01`, :data:`cov11` to compute the fitted function + :data:`y` and its standard deviation :data:`y_err` for the model :math:`Y = c_0 + c_1 X` + at the point :data:`x`. + +Linear regression without a constant term +----------------------------------------- + +The functions described in this section can be used to perform +least-squares fits to a straight line model without a constant term, +:math:`Y = c_1 X`. + +.. function:: int gsl_fit_mul (const double * x, const size_t xstride, const double * y, const size_t ystride, size_t n, double * c1, double * cov11, double * sumsq) + + This function computes the best-fit linear regression coefficient + :data:`c1` of the model :math:`Y = c_1 X` for the datasets (:data:`x`, + :data:`y`), two vectors of length :data:`n` with strides :data:`xstride` and + :data:`ystride`. The errors on :data:`y` are assumed unknown so the + variance of the parameter :data:`c1` is estimated from + the scatter of the points around the best-fit line and returned via the + parameter :data:`cov11`. The sum of squares of the residuals from the + best-fit line is returned in :data:`sumsq`. + +.. function:: int gsl_fit_wmul (const double * x, const size_t xstride, const double * w, const size_t wstride, const double * y, const size_t ystride, size_t n, double * c1, double * cov11, double * sumsq) + + This function computes the best-fit linear regression coefficient + :data:`c1` of the model :math:`Y = c_1 X` for the weighted datasets + (:data:`x`, :data:`y`), two vectors of length :data:`n` with strides + :data:`xstride` and :data:`ystride`. The vector :data:`w`, of length :data:`n` + and stride :data:`wstride`, specifies the weight of each datapoint. The + weight is the reciprocal of the variance for each datapoint in :data:`y`. + + The variance of the parameter :data:`c1` is computed using the weights + and returned via the parameter :data:`cov11`. The weighted sum of + squares of the residuals from the best-fit line, :math:`\chi^2`, is + returned in :data:`chisq`. + +.. function:: int gsl_fit_mul_est (double x, double c1, double cov11, double * y, double * y_err) + + This function uses the best-fit linear regression coefficient :data:`c1` + and its covariance :data:`cov11` to compute the fitted function + :data:`y` and its standard deviation :data:`y_err` for the model :math:`Y = c_1 X` + at the point :data:`x`. + +.. index:: + single: multi-parameter regression + single: fits, multi-parameter linear + +Multi-parameter regression +========================== + +This section describes routines which perform least squares fits +to a linear model by minimizing the cost function + +.. math:: \chi^2 = \sum_i w_i (y_i - \sum_j X_{ij} c_j)^2 = || y - Xc ||_W^2 + +where :math:`y` is a vector of :math:`n` observations, :math:`X` is an +:math:`n`-by-:math:`p` matrix of predictor variables, :math:`c` +is a vector of the :math:`p` unknown best-fit parameters to be estimated, +and :math:`||r||_W^2 = r^T W r`. +The matrix :math:`W = \diag(w_1,w_2,...,w_n)` +defines the weights or uncertainties of the observation vector. + +This formulation can be used for fits to any number of functions and/or +variables by preparing the :math:`n`-by-:math:`p` matrix :math:`X` +appropriately. For example, to fit to a :math:`p`-th order polynomial in +:data:`x`, use the following matrix, + +.. math:: X_{ij} = x_i^j + +where the index :math:`i` runs over the observations and the index +:math:`j` runs from 0 to :math:`p-1`. + +To fit to a set of :math:`p` sinusoidal functions with fixed frequencies +:math:`\omega_1`, :math:`\omega_2`, :math:`\ldots`, :math:`\omega_p`, use, + +.. math:: X_{ij} = \sin(\omega_j x_i) + +To fit to :math:`p` independent variables :math:`x_1`, :math:`x_2`, :math:`\ldots`, +:math:`x_p`, use, + +.. math:: X_{ij} = x_j(i) + +where :math:`x_j(i)` is the :math:`i`-th value of the predictor variable +:math:`x_j`. + +The solution of the general linear least-squares system requires an +additional working space for intermediate results, such as the singular +value decomposition of the matrix :math:`X`. + +These functions are declared in the header file :file:`gsl_multifit.h`. + +.. type:: gsl_multifit_linear_workspace + + This workspace contains internal variables for fitting multi-parameter models. + +.. function:: gsl_multifit_linear_workspace * gsl_multifit_linear_alloc (const size_t n, const size_t p) + + This function allocates a workspace for fitting a model to a maximum of :data:`n` + observations using a maximum of :data:`p` parameters. The user may later supply + a smaller least squares system if desired. The size of the workspace is + :math:`O(np + p^2)`. + +.. function:: void gsl_multifit_linear_free (gsl_multifit_linear_workspace * work) + + This function frees the memory associated with the workspace :data:`w`. + +.. function:: int gsl_multifit_linear_svd (const gsl_matrix * X, gsl_multifit_linear_workspace * work) + + This function performs a singular value decomposition of the + matrix :data:`X` and stores the SVD factors internally in :data:`work`. + +.. function:: int gsl_multifit_linear_bsvd (const gsl_matrix * X, gsl_multifit_linear_workspace * work) + + This function performs a singular value decomposition of the + matrix :data:`X` and stores the SVD factors internally in :data:`work`. + The matrix :data:`X` is first balanced by applying column scaling + factors to improve the accuracy of the singular values. + +.. function:: int gsl_multifit_linear (const gsl_matrix * X, const gsl_vector * y, gsl_vector * c, gsl_matrix * cov, double * chisq, gsl_multifit_linear_workspace * work) + + This function computes the best-fit parameters :data:`c` of the model + :math:`y = X c` for the observations :data:`y` and the matrix of + predictor variables :data:`X`, using the preallocated workspace provided + in :data:`work`. The :math:`p`-by-:math:`p` variance-covariance matrix of the model parameters + :data:`cov` is set to :math:`\sigma^2 (X^T X)^{-1}`, where :math:`\sigma` is + the standard deviation of the fit residuals. + The sum of squares of the residuals from the best-fit, + :math:`\chi^2`, is returned in :data:`chisq`. If the coefficient of + determination is desired, it can be computed from the expression + :math:`R^2 = 1 - \chi^2 / TSS`, where the total sum of squares (TSS) of + the observations :data:`y` may be computed from :func:`gsl_stats_tss`. + + The best-fit is found by singular value decomposition of the matrix + :data:`X` using the modified Golub-Reinsch SVD algorithm, with column + scaling to improve the accuracy of the singular values. Any components + which have zero singular value (to machine precision) are discarded + from the fit. + +.. function:: int gsl_multifit_linear_tsvd (const gsl_matrix * X, const gsl_vector * y, const double tol, gsl_vector * c, gsl_matrix * cov, double * chisq, size_t * rank, gsl_multifit_linear_workspace * work) + + This function computes the best-fit parameters :data:`c` of the model + :math:`y = X c` for the observations :data:`y` and the matrix of + predictor variables :data:`X`, using a truncated SVD expansion. + Singular values which satisfy :math:`s_i \le tol \times s_0` + are discarded from the fit, where :math:`s_0` is the largest singular value. + The :math:`p`-by-:math:`p` variance-covariance matrix of the model parameters + :data:`cov` is set to :math:`\sigma^2 (X^T X)^{-1}`, where :math:`\sigma` is + the standard deviation of the fit residuals. + The sum of squares of the residuals from the best-fit, + :math:`\chi^2`, is returned in :data:`chisq`. The effective rank + (number of singular values used in solution) is returned in :data:`rank`. + If the coefficient of + determination is desired, it can be computed from the expression + :math:`R^2 = 1 - \chi^2 / TSS`, where the total sum of squares (TSS) of + the observations :data:`y` may be computed from :func:`gsl_stats_tss`. + +.. function:: int gsl_multifit_wlinear (const gsl_matrix * X, const gsl_vector * w, const gsl_vector * y, gsl_vector * c, gsl_matrix * cov, double * chisq, gsl_multifit_linear_workspace * work) + + This function computes the best-fit parameters :data:`c` of the weighted + model :math:`y = X c` for the observations :data:`y` with weights :data:`w` + and the matrix of predictor variables :data:`X`, using the preallocated + workspace provided in :data:`work`. The :math:`p`-by-:math:`p` covariance matrix of the model + parameters :data:`cov` is computed as :math:`(X^T W X)^{-1}`. The weighted + sum of squares of the residuals from the best-fit, :math:`\chi^2`, is + returned in :data:`chisq`. If the coefficient of determination is + desired, it can be computed from the expression :math:`R^2 = 1 - \chi^2 / WTSS`, + where the weighted total sum of squares (WTSS) of the + observations :data:`y` may be computed from :func:`gsl_stats_wtss`. + +.. function:: int gsl_multifit_wlinear_tsvd (const gsl_matrix * X, const gsl_vector * w, const gsl_vector * y, const double tol, gsl_vector * c, gsl_matrix * cov, double * chisq, size_t * rank, gsl_multifit_linear_workspace * work) + + This function computes the best-fit parameters :data:`c` of the weighted + model :math:`y = X c` for the observations :data:`y` with weights :data:`w` + and the matrix of predictor variables :data:`X`, using a truncated SVD expansion. + Singular values which satisfy :math:`s_i \le tol \times s_0` + are discarded from the fit, where :math:`s_0` is the largest singular value. + The :math:`p`-by-:math:`p` covariance matrix of the model + parameters :data:`cov` is computed as :math:`(X^T W X)^{-1}`. The weighted + sum of squares of the residuals from the best-fit, :math:`\chi^2`, is + returned in :data:`chisq`. The effective rank of the system (number of + singular values used in the solution) is returned in :data:`rank`. + If the coefficient of determination is + desired, it can be computed from the expression :math:`R^2 = 1 - \chi^2 / WTSS`, + where the weighted total sum of squares (WTSS) of the + observations :data:`y` may be computed from :func:`gsl_stats_wtss`. + +.. function:: int gsl_multifit_linear_est (const gsl_vector * x, const gsl_vector * c, const gsl_matrix * cov, double * y, double * y_err) + + This function uses the best-fit multilinear regression coefficients + :data:`c` and their covariance matrix + :data:`cov` to compute the fitted function value + :data:`y` and its standard deviation :data:`y_err` for the model :math:`y = x.c` + at the point :data:`x`. + +.. function:: int gsl_multifit_linear_residuals (const gsl_matrix * X, const gsl_vector * y, const gsl_vector * c, gsl_vector * r) + + This function computes the vector of residuals :math:`r = y - X c` for + the observations :data:`y`, coefficients :data:`c` and matrix of predictor + variables :data:`X`. + +.. function:: size_t gsl_multifit_linear_rank (const double tol, const gsl_multifit_linear_workspace * work) + + This function returns the rank of the matrix :math:`X` which must first have its + singular value decomposition computed. The rank is computed by counting the number + of singular values :math:`\sigma_j` which satisfy :math:`\sigma_j > tol \times \sigma_0`, + where :math:`\sigma_0` is the largest singular value. + +.. index:: + single: ridge regression + single: Tikhonov regression + single: regression, ridge + single: regression, Tikhonov + single: least squares, regularized + +.. _sec_regularized-regression: + +Regularized regression +====================== + +Ordinary weighted least squares models seek a solution vector :math:`c` +which minimizes the residual + +.. math:: \chi^2 = || y - Xc ||_W^2 + +where :math:`y` is the :math:`n`-by-:math:`1` observation vector, +:math:`X` is the :math:`n`-by-:math:`p` design matrix, :math:`c` is +the :math:`p`-by-:math:`1` solution vector, +:math:`W = \diag(w_1,...,w_n)` is the data weighting matrix, +and :math:`||r||_W^2 = r^T W r`. +In cases where the least squares matrix :math:`X` is ill-conditioned, +small perturbations (ie: noise) in the observation vector could lead to +widely different solution vectors :math:`c`. +One way of dealing with ill-conditioned matrices is to use a "truncated SVD" +in which small singular values, below some given tolerance, are discarded +from the solution. The truncated SVD method is available using the functions +:func:`gsl_multifit_linear_tsvd` and :func:`gsl_multifit_wlinear_tsvd`. Another way +to help solve ill-posed problems is to include a regularization term in the least squares +minimization + +.. math:: \chi^2 = || y - Xc ||_W^2 + \lambda^2 || L c ||^2 + +for a suitably chosen regularization parameter :math:`\lambda` and +matrix :math:`L`. This type of regularization is known as Tikhonov, or ridge, +regression. In some applications, :math:`L` is chosen as the identity matrix, giving +preference to solution vectors :math:`c` with smaller norms. +Including this regularization term leads to the explicit "normal equations" solution + +.. only:: not texinfo + + .. math:: c = \left( X^T W X + \lambda^2 L^T L \right)^{-1} X^T W y + +.. only:: texinfo + + :: + + c = ( X^T W X + \lambda^2 L^T L )^-1 X^T W y + +which reduces to the ordinary least squares solution when :math:`L = 0`. +In practice, it is often advantageous to transform a regularized least +squares system into the form + +.. only:: not texinfo + + .. math:: \chi^2 = || \tilde{y} - \tilde{X} \tilde{c} ||^2 + \lambda^2 || \tilde{c} ||^2 + +.. only:: texinfo + + :: + + \chi^2 = || y~ - X~ c~ ||^2 + \lambda^2 || c~ ||^2 + +This is known as the Tikhonov "standard form" and has the normal equations solution + +.. only:: not texinfo + + .. math:: \tilde{c} = \left( \tilde{X}^T \tilde{X} + \lambda^2 I \right)^{-1} \tilde{X}^T \tilde{y} + +.. only:: texinfo + + :: + + \tilde{c} = ( \tilde{X}^T \tilde{X} + \lambda^2 I )^{-1} \tilde{X}^T \tilde{y} + +For an :math:`m`-by-:math:`p` matrix :math:`L` which is full rank and has :math:`m >= p` (ie: :math:`L` is +square or has more rows than columns), we can calculate the "thin" QR decomposition of :math:`L`, and +note that :math:`||L c|| = ||R c||` since the :math:`Q` factor will not change the norm. Since +:math:`R` is :math:`p`-by-:math:`p`, we can then use the transformation + +.. only:: not texinfo + + .. math:: + + \tilde{X} &= W^{1 \over 2} X R^{-1} \\ + \tilde{y} &= W^{1 \over 2} y \\ + \tilde{c} &= R c + +.. only:: texinfo + + :: + + X~ = sqrt(W) X R^-1 + y~ = sqrt(W) y + c~ = R c + +to achieve the standard form. For a rectangular matrix :math:`L` with :math:`m < p`, +a more sophisticated approach is needed (see Hansen 1998, chapter 2.3). +In practice, the normal equations solution above is not desirable due to +numerical instabilities, and so the system is solved using the +singular value decomposition of the matrix :math:`\tilde{X}`. +The matrix :math:`L` is often chosen as the identity matrix, or as a first +or second finite difference operator, to ensure a smoothly varying +coefficient vector :math:`c`, or as a diagonal matrix to selectively damp +each model parameter differently. If :math:`L \ne I`, the user must first +convert the least squares problem to standard form using +:func:`gsl_multifit_linear_stdform1` or :func:`gsl_multifit_linear_stdform2`, +solve the system, and then backtransform the solution vector to recover +the solution of the original problem (see +:func:`gsl_multifit_linear_genform1` and :func:`gsl_multifit_linear_genform2`). + +In many regularization problems, care must be taken when choosing +the regularization parameter :math:`\lambda`. Since both the +residual norm :math:`||y - X c||` and solution norm :math:`||L c||` +are being minimized, the parameter :math:`\lambda` represents +a tradeoff between minimizing either the residuals or the +solution vector. A common tool for visualizing the comprimise between +the minimization of these two quantities is known as the L-curve. +The L-curve is a log-log plot of the residual norm :math:`||y - X c||` +on the horizontal axis and the solution norm :math:`||L c||` on the +vertical axis. This curve nearly always as an :math:`L` shaped +appearance, with a distinct corner separating the horizontal +and vertical sections of the curve. The regularization parameter +corresponding to this corner is often chosen as the optimal +value. GSL provides routines to calculate the L-curve for all +relevant regularization parameters as well as locating the corner. + +Another method of choosing the regularization parameter is known +as Generalized Cross Validation (GCV). This method is based on +the idea that if an arbitrary element :math:`y_i` is left out of the +right hand side, the resulting regularized solution should predict this element +accurately. This leads to choosing the parameter :math:`\lambda` +which minimizes the GCV function + +.. only:: not texinfo + + .. math:: G(\lambda) = {||y - X c_{\lambda}||^2 \over \textrm{Tr}(I_n - X X_{\lambda}^I)^2} + +.. only:: texinfo + + :: + + G(\lambda) = (||y - X c_{\lambda}||^2) / Tr(I_n - X X^I)^2 + +where :math:`X_{\lambda}^I` is the matrix which relates the solution :math:`c_{\lambda}` +to the right hand side :math:`y`, ie: :math:`c_{\lambda} = X_{\lambda}^I y`. GSL +provides routines to compute the GCV curve and its minimum. + +For most applications, the steps required to solve a regularized least +squares problem are as follows: + +#. Construct the least squares system (:math:`X`, :math:`y`, :math:`W`, :math:`L`) + +#. Transform the system to standard form (:math:`\tilde{X}`, :math:`\tilde{y}`). This + step can be skipped if :math:`L = I_p` and :math:`W = I_n`. + +#. Calculate the SVD of :math:`\tilde{X}`. + +#. Determine an appropriate regularization parameter :math:`\lambda` (using for example + L-curve or GCV analysis). + +#. Solve the standard form system using the chosen :math:`\lambda` and the SVD of :math:`\tilde{X}`. + +#. Backtransform the standard form solution :math:`\tilde{c}` to recover the + original solution vector :math:`c`. + +.. function:: int gsl_multifit_linear_stdform1 (const gsl_vector * L, const gsl_matrix * X, const gsl_vector * y, gsl_matrix * Xs, gsl_vector * ys, gsl_multifit_linear_workspace * work) + int gsl_multifit_linear_wstdform1 (const gsl_vector * L, const gsl_matrix * X, const gsl_vector * w, const gsl_vector * y, gsl_matrix * Xs, gsl_vector * ys, gsl_multifit_linear_workspace * work) + + These functions define a regularization matrix + :math:`L = \diag(l_0,l_1,...,l_{p-1})`. + The diagonal matrix element :math:`l_i` is provided by the + :math:`i`-th element of the input vector :data:`L`. + The :math:`n`-by-:math:`p` least squares matrix :data:`X` and + vector :data:`y` of length :math:`n` are then + converted to standard form as described above and the parameters + (:math:`\tilde{X}`, :math:`\tilde{y}`) are stored in :data:`Xs` and :data:`ys` + on output. :data:`Xs` and :data:`ys` have the same dimensions as + :data:`X` and :data:`y`. Optional data weights may be supplied in the + vector :data:`w` of length :math:`n`. In order to apply this transformation, + :math:`L^{-1}` must exist and so none of the :math:`l_i` + may be zero. After the standard form system has been solved, + use :func:`gsl_multifit_linear_genform1` to recover the original solution vector. + It is allowed to have :data:`X` = :data:`Xs` and :data:`y` = :data:`ys` for an in-place transform. + In order to perform a weighted regularized fit with :math:`L = I`, the user may + call :func:`gsl_multifit_linear_applyW` to convert to standard form. + +.. function:: int gsl_multifit_linear_L_decomp (gsl_matrix * L, gsl_vector * tau) + + This function factors the :math:`m`-by-:math:`p` regularization matrix + :data:`L` into a form needed for the later transformation to standard form. :data:`L` + may have any number of rows :math:`m`. If :math:`m \ge p` the QR decomposition of + :data:`L` is computed and stored in :data:`L` on output. If :math:`m < p`, the QR decomposition + of :math:`L^T` is computed and stored in :data:`L` on output. On output, + the Householder scalars are stored in the vector :data:`tau` of size :math:`MIN(m,p)`. + These outputs will be used by :func:`gsl_multifit_linear_wstdform2` to complete the + transformation to standard form. + +.. function:: int gsl_multifit_linear_stdform2 (const gsl_matrix * LQR, const gsl_vector * Ltau, const gsl_matrix * X, const gsl_vector * y, gsl_matrix * Xs, gsl_vector * ys, gsl_matrix * M, gsl_multifit_linear_workspace * work) + int gsl_multifit_linear_wstdform2 (const gsl_matrix * LQR, const gsl_vector * Ltau, const gsl_matrix * X, const gsl_vector * w, const gsl_vector * y, gsl_matrix * Xs, gsl_vector * ys, gsl_matrix * M, gsl_multifit_linear_workspace * work) + + These functions convert the least squares system (:data:`X`, :data:`y`, :data:`W`, :math:`L`) to standard + form (:math:`\tilde{X}`, :math:`\tilde{y}`) which are stored in :data:`Xs` and :data:`ys` + respectively. The :math:`m`-by-:math:`p` regularization matrix :data:`L` is specified by the inputs + :data:`LQR` and :data:`Ltau`, which are outputs from :func:`gsl_multifit_linear_L_decomp`. + The dimensions of the standard form parameters (:math:`\tilde{X}`, :math:`\tilde{y}`) + depend on whether :math:`m` is larger or less than :math:`p`. For :math:`m \ge p`, + :data:`Xs` is :math:`n`-by-:math:`p`, :data:`ys` is :math:`n`-by-1, and :data:`M` is + not used. For :math:`m < p`, :data:`Xs` is :math:`(n - p + m)`-by-:math:`m`, + :data:`ys` is :math:`(n - p + m)`-by-1, and :data:`M` is additional :math:`n`-by-:math:`p` workspace, + which is required to recover the original solution vector after the system has been + solved (see :func:`gsl_multifit_linear_genform2`). Optional data weights may be supplied in the + vector :data:`w` of length :math:`n`, where :math:`W = \diag(w)`. + +.. function:: int gsl_multifit_linear_solve (const double lambda, const gsl_matrix * Xs, const gsl_vector * ys, gsl_vector * cs, double * rnorm, double * snorm, gsl_multifit_linear_workspace * work) + + This function computes the regularized best-fit parameters :math:`\tilde{c}` + which minimize the cost function + :math:`\chi^2 = || \tilde{y} - \tilde{X} \tilde{c} ||^2 + \lambda^2 || \tilde{c} ||^2` + which is in standard form. The least squares system must therefore be converted + to standard form prior to calling this function. + The observation vector :math:`\tilde{y}` is provided in :data:`ys` and the matrix of + predictor variables :math:`\tilde{X}` in :data:`Xs`. The solution vector :math:`\tilde{c}` is + returned in :data:`cs`, which has length min(:math:`m,p`). The SVD of :data:`Xs` must be computed prior + to calling this function, using :func:`gsl_multifit_linear_svd`. + The regularization parameter :math:`\lambda` is provided in :data:`lambda`. + The residual norm :math:`|| \tilde{y} - \tilde{X} \tilde{c} || = ||y - X c||_W` + is returned in :data:`rnorm`. + The solution norm :math:`|| \tilde{c} || = ||L c||` is returned in + :data:`snorm`. + +.. function:: int gsl_multifit_linear_genform1 (const gsl_vector * L, const gsl_vector * cs, gsl_vector * c, gsl_multifit_linear_workspace * work) + + After a regularized system has been solved with + :math:`L = \diag(\l_0,\l_1,...,\l_{p-1})`, + this function backtransforms the standard form solution vector :data:`cs` + to recover the solution vector of the original problem :data:`c`. The + diagonal matrix elements :math:`l_i` are provided in + the vector :data:`L`. It is allowed to have :data:`c` = :data:`cs` for an + in-place transform. + +.. function:: int gsl_multifit_linear_genform2 (const gsl_matrix * LQR, const gsl_vector * Ltau, const gsl_matrix * X, const gsl_vector * y, const gsl_vector * cs, const gsl_matrix * M, gsl_vector * c, gsl_multifit_linear_workspace * work) + int gsl_multifit_linear_wgenform2 (const gsl_matrix * LQR, const gsl_vector * Ltau, const gsl_matrix * X, const gsl_vector * w, const gsl_vector * y, const gsl_vector * cs, const gsl_matrix * M, gsl_vector * c, gsl_multifit_linear_workspace * work) + + After a regularized system has been solved with a general rectangular matrix :math:`L`, + specified by (:data:`LQR`, :data:`Ltau`), this function backtransforms the standard form solution :data:`cs` + to recover the solution vector of the original problem, which is stored in :data:`c`, + of length :math:`p`. The original least squares matrix and observation vector are provided in + :data:`X` and :data:`y` respectively. :data:`M` is the matrix computed by + :func:`gsl_multifit_linear_stdform2`. For weighted fits, the weight vector + :data:`w` must also be supplied. + +.. function:: int gsl_multifit_linear_applyW (const gsl_matrix * X, const gsl_vector * w, const gsl_vector * y, gsl_matrix * WX, gsl_vector * Wy) + + For weighted least squares systems with :math:`L = I`, this function may be used to + convert the system to standard form by applying the weight matrix :math:`W = \diag(w)` + to the least squares matrix :data:`X` and observation vector :data:`y`. On output, :data:`WX` + is equal to :math:`W^{1/2} X` and :data:`Wy` is equal to :math:`W^{1/2} y`. It is allowed + for :data:`WX` = :data:`X` and :data:`Wy` = :data:`y` for an in-place transform. + +.. function:: int gsl_multifit_linear_lcurve (const gsl_vector * y, gsl_vector * reg_param, gsl_vector * rho, gsl_vector * eta, gsl_multifit_linear_workspace * work) + + This function computes the L-curve for a least squares system + using the right hand side vector :data:`y` and the SVD decomposition + of the least squares matrix :data:`X`, which must be provided + to :func:`gsl_multifit_linear_svd` prior to + calling this function. The output vectors :data:`reg_param`, + :data:`rho`, and :data:`eta` must all be the same size, and will + contain the regularization parameters :math:`\lambda_i`, residual norms + :math:`||y - X c_i||`, and solution norms :math:`|| L c_i ||` + which compose the L-curve, where :math:`c_i` is the regularized + solution vector corresponding to :math:`\lambda_i`. + The user may determine the number of points on the L-curve by + adjusting the size of these input arrays. The regularization + parameters :math:`\lambda_i` are estimated from the singular values + of :data:`X`, and chosen to represent the most relevant portion of + the L-curve. + +.. function:: int gsl_multifit_linear_lcorner (const gsl_vector * rho, const gsl_vector * eta, size_t * idx) + + This function attempts to locate the corner of the L-curve + :math:`(||y - X c||, ||L c||)` defined by the :data:`rho` and :data:`eta` + input arrays respectively. The corner is defined as the point of maximum + curvature of the L-curve in log-log scale. The :data:`rho` and :data:`eta` + arrays can be outputs of :func:`gsl_multifit_linear_lcurve`. The + algorithm used simply fits a circle to 3 consecutive points on the L-curve + and uses the circle's radius to determine the curvature at + the middle point. Therefore, the input array sizes must be + :math:`\ge 3`. With more points provided for the L-curve, a better + estimate of the curvature can be obtained. The array index + corresponding to maximum curvature (ie: the corner) is returned + in :data:`idx`. If the input arrays contain colinear points, + this function could fail and return :macro:`GSL_EINVAL`. + +.. function:: int gsl_multifit_linear_lcorner2 (const gsl_vector * reg_param, const gsl_vector * eta, size_t * idx) + + This function attempts to locate the corner of an alternate L-curve + :math:`(\lambda^2, ||L c||^2)` studied by Rezghi and Hosseini, 2009. + This alternate L-curve can provide better estimates of the + regularization parameter for smooth solution vectors. The regularization + parameters :math:`\lambda` and solution norms :math:`||L c||` are provided + in the :data:`reg_param` and :data:`eta` input arrays respectively. The + corner is defined as the point of maximum curvature of this + alternate L-curve in linear scale. The :data:`reg_param` and :data:`eta` + arrays can be outputs of :func:`gsl_multifit_linear_lcurve`. The + algorithm used simply fits a circle to 3 consecutive points on the L-curve + and uses the circle's radius to determine the curvature at + the middle point. Therefore, the input array sizes must be + :math:`\ge 3`. With more points provided for the L-curve, a better + estimate of the curvature can be obtained. The array index + corresponding to maximum curvature (ie: the corner) is returned + in :data:`idx`. If the input arrays contain colinear points, + this function could fail and return :macro:`GSL_EINVAL`. + +.. function:: int gsl_multifit_linear_gcv_init(const gsl_vector * y, gsl_vector * reg_param, gsl_vector * UTy, double * delta0, gsl_multifit_linear_workspace * work) + + This function performs some initialization in preparation for computing + the GCV curve and its minimum. The right hand side vector is provided + in :data:`y`. On output, :data:`reg_param` is set to a vector of regularization + parameters in decreasing order and may be of any size. The vector + :data:`UTy` of size :math:`p` is set to :math:`U^T y`. The parameter + :data:`delta0` is needed for subsequent steps of the GCV calculation. + +.. function:: int gsl_multifit_linear_gcv_curve(const gsl_vector * reg_param, const gsl_vector * UTy, const double delta0, gsl_vector * G, gsl_multifit_linear_workspace * work) + + This funtion calculates the GCV curve :math:`G(\lambda)` and stores it in + :data:`G` on output, which must be the same size as :data:`reg_param`. The + inputs :data:`reg_param`, :data:`UTy` and :data:`delta0` are computed in + :func:`gsl_multifit_linear_gcv_init`. + +.. function:: int gsl_multifit_linear_gcv_min(const gsl_vector * reg_param, const gsl_vector * UTy, const gsl_vector * G, const double delta0, double * lambda, gsl_multifit_linear_workspace * work) + + This function computes the value of the regularization parameter + which minimizes the GCV curve :math:`G(\lambda)` and stores it in + :data:`lambda`. The input :data:`G` is calculated by + :func:`gsl_multifit_linear_gcv_curve` and the inputs + :data:`reg_param`, :data:`UTy` and :data:`delta0` are computed by + :func:`gsl_multifit_linear_gcv_init`. + +.. function:: double gsl_multifit_linear_gcv_calc(const double lambda, const gsl_vector * UTy, const double delta0, gsl_multifit_linear_workspace * work) + + This function returns the value of the GCV curve :math:`G(\lambda)` corresponding + to the input :data:`lambda`. + +.. function:: int gsl_multifit_linear_gcv(const gsl_vector * y, gsl_vector * reg_param, gsl_vector * G, double * lambda, double * G_lambda, gsl_multifit_linear_workspace * work) + + This function combines the steps :code:`gcv_init`, :code:`gcv_curve`, + and :code:`gcv_min` defined above into a single function. The input + :data:`y` is the right hand side vector. On output, :data:`reg_param` and + :data:`G`, which must be the same size, are set to vectors of + :math:`\lambda` and :math:`G(\lambda)` values respectively. The + output :data:`lambda` is set to the optimal value of :math:`\lambda` + which minimizes the GCV curve. The minimum value of the GCV curve is + returned in :data:`G_lambda`. + +.. function:: int gsl_multifit_linear_Lk (const size_t p, const size_t k, gsl_matrix * L) + + This function computes the discrete approximation to the derivative operator :math:`L_k` of + order :data:`k` on a regular grid of :data:`p` points and stores it in :data:`L`. The dimensions of :data:`L` are + :math:`(p-k)`-by-:math:`p`. + +.. function:: int gsl_multifit_linear_Lsobolev (const size_t p, const size_t kmax, const gsl_vector * alpha, gsl_matrix * L, gsl_multifit_linear_workspace * work) + + This function computes the regularization matrix :data:`L` corresponding to the + weighted Sobolov norm + :math:`||L c||^2 = \sum_k \alpha_k^2 ||L_k c||^2` where :math:`L_k` approximates + the derivative operator of order :math:`k`. This regularization norm can be useful + in applications where it is necessary to smooth several derivatives of the solution. + :data:`p` is the number of model parameters, :data:`kmax` is the highest derivative + to include in the summation above, and :data:`alpha` is the vector of weights of + size :data:`kmax` + 1, where :code:`alpha[k]` = :math:`\alpha_k` is the weight + assigned to the derivative of order :math:`k`. The output matrix :data:`L` is size + :data:`p`-by-:data:`p` and upper triangular. + +.. function:: double gsl_multifit_linear_rcond (const gsl_multifit_linear_workspace * work) + + This function returns the reciprocal condition number of the least squares matrix :math:`X`, + defined as the ratio of the smallest and largest singular values, + rcond = :math:`\sigma_{min}/\sigma_{max}`. + The routine :func:`gsl_multifit_linear_svd` must first be called to compute the SVD + of :math:`X`. + +.. index:: + single: robust regression + single: regression, robust + single: least squares, robust + +Robust linear regression +======================== + +Ordinary least squares (OLS) models are often heavily influenced by the presence of outliers. +Outliers are data points which do not follow the general trend of the other observations, +although there is strictly no precise definition of an outlier. Robust linear regression +refers to regression algorithms which are robust to outliers. The most common type of +robust regression is M-estimation. The general M-estimator minimizes the objective function + +.. math:: \sum_i \rho(e_i) = \sum_i \rho (y_i - Y(c, x_i)) + +where :math:`e_i = y_i - Y(c, x_i)` is the residual of the ith data point, and +:math:`\rho(e_i)` is a function which should have the following properties: + +* :math:`\rho(e) \ge 0` +* :math:`\rho(0) = 0` +* :math:`\rho(-e) = \rho(e)` +* :math:`\rho(e_1) > \rho(e_2)` for :math:`|e_1| > |e_2|` + +The special case of ordinary least squares is given by :math:`\rho(e_i) = e_i^2`. +Letting :math:`\psi = \rho'` be the derivative of :math:`\rho`, differentiating +the objective function with respect to the coefficients :math:`c` +and setting the partial derivatives to zero produces the system of equations + +.. math:: \sum_i \psi(e_i) X_i = 0 + +where :math:`X_i` is a vector containing row :math:`i` of the design matrix :math:`X`. +Next, we define a weight function :math:`w(e) = \psi(e)/e`, and let +:math:`w_i = w(e_i)`: + +.. math:: \sum_i w_i e_i X_i = 0 + +This system of equations is equivalent to solving a weighted ordinary least squares +problem, minimizing :math:`\chi^2 = \sum_i w_i e_i^2`. The weights however, depend +on the residuals :math:`e_i`, which depend on the coefficients :math:`c`, which depend +on the weights. Therefore, an iterative solution is used, called Iteratively Reweighted +Least Squares (IRLS). + +#. Compute initial estimates of the coefficients :math:`c^{(0)}` using ordinary least squares + +#. For iteration :math:`k`, form the residuals :math:`e_i^{(k)} = (y_i - X_i c^{(k-1)})/(t \sigma^{(k)} \sqrt{1 - h_i})`, + where :math:`t` is a tuning constant depending on the choice of :math:`\psi`, and :math:`h_i` are the + statistical leverages (diagonal elements of the matrix :math:`X (X^T X)^{-1} X^T`). Including :math:`t` + and :math:`h_i` in the residual calculation has been shown to improve the convergence of the method. + The residual standard deviation is approximated as :math:`\sigma^{(k)} = MAD / 0.6745`, where MAD is the + Median-Absolute-Deviation of the :math:`n-p` largest residuals from the previous iteration. + +#. Compute new weights :math:`w_i^{(k)} = \psi(e_i^{(k)})/e_i^{(k)}`. + +#. Compute new coefficients :math:`c^{(k)}` by solving the weighted least squares problem with + weights :math:`w_i^{(k)}`. + +#. Steps 2 through 4 are iterated until the coefficients converge or until some maximum iteration + limit is reached. Coefficients are tested for convergence using the critera: + + .. only:: not texinfo + + .. math:: |c_i^{(k)} - c_i^{(k-1)}| \le \epsilon \times \hbox{max}(|c_i^{(k)}|, |c_i^{(k-1)}|) + + .. only:: texinfo + + :: + + |c_i^(k) - c_i^(k-1)| <= \epsilon * max(|c_i^(k)|, |c_i^(k-1)|) + + for all :math:`0 \le i < p` where :math:`\epsilon` is a small tolerance factor. + +The key to this method lies in selecting the function :math:`\psi(e_i)` to assign +smaller weights to large residuals, and larger weights to smaller residuals. As +the iteration proceeds, outliers are assigned smaller and smaller weights, eventually +having very little or no effect on the fitted model. + +.. type:: gsl_multifit_robust_workspace + + This workspace is used for robust least squares fitting. + +.. function:: gsl_multifit_robust_workspace * gsl_multifit_robust_alloc (const gsl_multifit_robust_type * T, const size_t n, const size_t p) + + This function allocates a workspace for fitting a model to :data:`n` + observations using :data:`p` parameters. The size of the workspace + is :math:`O(np + p^2)`. The type :data:`T` specifies the + function :math:`\psi` and can be selected from the following choices. + + .. type:: gsl_multifit_robust_type + + .. var:: gsl_multifit_robust_default + + This specifies the :data:`gsl_multifit_robust_bisquare` type (see below) and is a good + general purpose choice for robust regression. + + .. var:: gsl_multifit_robust_bisquare + + This is Tukey's biweight (bisquare) function and is a good general purpose choice for + robust regression. The weight function is given by + + .. only:: not texinfo + + .. math:: + + w(e) = + \left\{ + \begin{array}{cc} + (1 - e^2)^2, & |e| \le 1 \\ + 0, & |e| > 1 + \end{array} + \right. + + .. only:: texinfo + + :: + + w(e) = { (1 - e^2)^2, |e| <= 1 + { 0, |e| > 1 + + and the default tuning constant is :math:`t = 4.685`. + + .. var:: gsl_multifit_robust_cauchy + + This is Cauchy's function, also known as the Lorentzian function. + This function does not guarantee a unique solution, + meaning different choices of the coefficient vector :data:`c` + could minimize the objective function. Therefore this option should + be used with care. The weight function is given by + + .. only:: not texinfo + + .. math:: w(e) = {1 \over 1 + e^2} + + .. only:: texinfo + + :: + + w(e) = 1 / (1 + e^2) + + and the default tuning constant is :math:`t = 2.385`. + + .. var:: gsl_multifit_robust_fair + + This is the fair :math:`\rho` function, which guarantees a unique solution and + has continuous derivatives to three orders. The weight function is given by + + .. only:: not texinfo + + .. math:: w(e) = {1 \over 1 + |e|} + + .. only:: texinfo + + :: + + w(e) = 1 / (1 + |e|) + + and the default tuning constant is :math:`t = 1.400`. + + .. var:: gsl_multifit_robust_huber + + This specifies Huber's :math:`\rho` function, which is a parabola in the vicinity of zero and + increases linearly for a given threshold :math:`|e| > t`. This function is also considered + an excellent general purpose robust estimator, however, occasional difficulties can + be encountered due to the discontinuous first derivative of the :math:`\psi` function. + The weight function is given by + + .. only:: not texinfo + + .. math:: + + w(e) = + \left\{ + \begin{array}{cc} + 1, & |e| \le 1 \\ + {1 \over |e|}, & |e| > 1 + \end{array} + \right. + + .. only:: texinfo + + :: + + w(e) = 1/max(1,|e|) + + and the default tuning constant is :math:`t = 1.345`. + + .. var:: gsl_multifit_robust_ols + + This specifies the ordinary least squares solution, which can be useful for quickly + checking the difference between the various robust and OLS solutions. The + weight function is given by + + .. math:: w(e) = 1 + + and the default tuning constant is :math:`t = 1`. + + .. var:: gsl_multifit_robust_welsch + + This specifies the Welsch function which can perform well in cases where the + residuals have an exponential distribution. The weight function is given by + + .. math:: w(e) = \exp{(-e^2)} + + and the default tuning constant is :math:`t = 2.985`. + +.. function:: void gsl_multifit_robust_free (gsl_multifit_robust_workspace * w) + + This function frees the memory associated with the workspace :data:`w`. + +.. function:: const char * gsl_multifit_robust_name (const gsl_multifit_robust_workspace * w) + + This function returns the name of the robust type :data:`T` specified to + :func:`gsl_multifit_robust_alloc`. + +.. function:: int gsl_multifit_robust_tune (const double tune, gsl_multifit_robust_workspace * w) + + This function sets the tuning constant :math:`t` used to adjust the residuals at each + iteration to :data:`tune`. Decreasing the tuning constant increases the downweight + assigned to large residuals, while increasing the tuning constant decreases the + downweight assigned to large residuals. + +.. function:: int gsl_multifit_robust_maxiter (const size_t maxiter, gsl_multifit_robust_workspace * w) + + This function sets the maximum number of iterations in the iteratively + reweighted least squares algorithm to :data:`maxiter`. By default, + this value is set to 100 by :func:`gsl_multifit_robust_alloc`. + +.. function:: int gsl_multifit_robust_weights (const gsl_vector * r, gsl_vector * wts, gsl_multifit_robust_workspace * w) + + This function assigns weights to the vector :data:`wts` using the residual vector + :data:`r` and previously specified weighting function. The output weights are given + by :math:`wts_i = w(r_i / (t \sigma))`, where the weighting functions :math:`w` are + detailed in :func:`gsl_multifit_robust_alloc`. :math:`\sigma` is an estimate of the + residual standard deviation based on the Median-Absolute-Deviation and :math:`t` + is the tuning constant. This function is useful if the user wishes to implement + their own robust regression rather than using + the supplied :func:`gsl_multifit_robust` routine below. + +.. function:: int gsl_multifit_robust (const gsl_matrix * X, const gsl_vector * y, gsl_vector * c, gsl_matrix * cov, gsl_multifit_robust_workspace * w) + + This function computes the best-fit parameters :data:`c` of the model + :math:`y = X c` for the observations :data:`y` and the matrix of + predictor variables :data:`X`, attemping to reduce the influence + of outliers using the algorithm outlined above. + The :math:`p`-by-:math:`p` variance-covariance matrix of the model parameters + :data:`cov` is estimated as :math:`\sigma^2 (X^T X)^{-1}`, where :math:`\sigma` is + an approximation of the residual standard deviation using the theory of robust + regression. Special care must be taken when estimating :math:`\sigma` and + other statistics such as :math:`R^2`, and so these + are computed internally and are available by calling the function + :func:`gsl_multifit_robust_statistics`. + + If the coefficients do not converge within the maximum iteration + limit, the function returns :macro:`GSL_EMAXITER`. In this case, + the current estimates of the coefficients and covariance matrix + are returned in :data:`c` and :data:`cov` and the internal fit statistics + are computed with these estimates. + +.. function:: int gsl_multifit_robust_est (const gsl_vector * x, const gsl_vector * c, const gsl_matrix * cov, double * y, double * y_err) + + This function uses the best-fit robust regression coefficients + :data:`c` and their covariance matrix + :data:`cov` to compute the fitted function value + :data:`y` and its standard deviation :data:`y_err` for the model :math:`y = x \cdot c` + at the point :data:`x`. + +.. function:: int gsl_multifit_robust_residuals (const gsl_matrix * X, const gsl_vector * y, const gsl_vector * c, gsl_vector * r, gsl_multifit_robust_workspace * w) + + This function computes the vector of studentized residuals + :math:`r_i = {y_i - (X c)_i \over \sigma \sqrt{1 - h_i}}` for + the observations :data:`y`, coefficients :data:`c` and matrix of predictor + variables :data:`X`. The routine :func:`gsl_multifit_robust` must + first be called to compute the statisical leverages :math:`h_i` of + the matrix :data:`X` and residual standard deviation estimate :math:`\sigma`. + +.. function:: gsl_multifit_robust_stats gsl_multifit_robust_statistics (const gsl_multifit_robust_workspace * w) + + This function returns a structure containing relevant statistics from a robust regression. + The function :func:`gsl_multifit_robust` must be called first to perform the regression and + calculate these statistics. The returned :type:`gsl_multifit_robust_stats` structure + contains the following fields. + + .. type:: gsl_multifit_robust_stats + + :code:`double sigma_ols` + + This contains the standard deviation of the residuals as computed from ordinary + least squares (OLS). + + :code:`double sigma_mad` + + This contains an estimate of the standard deviation of the final residuals using + the Median-Absolute-Deviation statistic + + :code:`double sigma_rob` + + This contains an estimate of the standard deviation of the final residuals + from the theory of robust regression (see Street et al, 1988). + + :code:`double sigma` + + This contains an estimate of the standard deviation of the final residuals + by attemping to reconcile :code:`sigma_rob` and :code:`sigma_ols` + in a reasonable way. + + :code:`double Rsq` + + This contains the :math:`R^2` coefficient of determination statistic using + the estimate :code:`sigma`. + + :code:`double adj_Rsq` + + This contains the adjusted :math:`R^2` coefficient of determination statistic + using the estimate :code:`sigma`. + + :code:`double rmse` + + This contains the root mean squared error of the final residuals + + :code:`double sse` + + This contains the residual sum of squares taking into account the robust + covariance matrix. + + :code:`size_t dof` + + This contains the number of degrees of freedom :math:`n - p` + + :code:`size_t numit` + + Upon successful convergence, this contains the number of iterations performed + + :code:`gsl_vector * weights` + + This contains the final weight vector of length :data:`n` + + :code:`gsl_vector * r` + + This contains the final residual vector of length :data:`n`, :math:`r = y - X c` + +.. index:: + single: large dense linear least squares + single: linear least squares, large + +Large dense linear systems +========================== + +This module is concerned with solving large dense least squares systems +:math:`X c = y` where the :math:`n`-by-:math:`p` matrix +:math:`X` has :math:`n >> p` (ie: many more rows than columns). +This type of matrix is called a "tall skinny" matrix, and for +some applications, it may not be possible to fit the +entire matrix in memory at once to use the standard SVD approach. +Therefore, the algorithms in this module are designed to allow +the user to construct smaller blocks of the matrix :math:`X` and +accumulate those blocks into the larger system one at a time. The +algorithms in this module never need to store the entire matrix +:math:`X` in memory. The large linear least squares routines +support data weights and Tikhonov regularization, and are +designed to minimize the residual + +.. math:: \chi^2 = || y - Xc ||_W^2 + \lambda^2 || L c ||^2 + +where :math:`y` is the :math:`n`-by-:math:`1` observation vector, +:math:`X` is the :math:`n`-by-:math:`p` design matrix, :math:`c` is +the :math:`p`-by-:math:`1` solution vector, +:math:`W = \diag(w_1,...,w_n)` is the data weighting matrix, +:math:`L` is an :math:`m`-by-:math:`p` regularization matrix, +:math:`\lambda` is a regularization parameter, +and :math:`||r||_W^2 = r^T W r`. In the discussion which follows, +we will assume that the system has been converted into Tikhonov +standard form, + +.. only:: not texinfo + + .. math:: \chi^2 = || \tilde{y} - \tilde{X} \tilde{c} ||^2 + \lambda^2 || \tilde{c} ||^2 + +.. only:: texinfo + + :: + + \chi^2 = || y~ - X~ c~ ||^2 + \lambda^2 || c~ ||^2 + +and we will drop the tilde characters from the various parameters. +For a discussion of the transformation to standard form, +see :ref:`sec_regularized-regression`. + +The basic idea is to partition the matrix :math:`X` and observation +vector :math:`y` as + +.. only:: not texinfo + + .. math:: + + \left( + \begin{array}{c} + X_1 \\ + X_2 \\ + X_3 \\ + \vdots \\ + X_k + \end{array} + \right) + c = + \left( + \begin{array}{c} + y_1 \\ + y_2 \\ + y_3 \\ + \vdots \\ + y_k + \end{array} + \right) + +.. only:: texinfo + + :: + + [ X_1 ] c = [ y_1 ] + [ X_2 ] [ y_2 ] + [ X_3 ] [ y_3 ] + [ ... ] [ ... ] + [ X_k ] [ y_k ] + +into :math:`k` blocks, where each block (:math:`X_i,y_i`) may have +any number of rows, but each :math:`X_i` has :math:`p` columns. +The sections below describe the methods available for solving +this partitioned system. The functions are declared in +the header file :file:`gsl_multilarge.h`. + +.. index:: + single: large linear least squares, normal equations + +Normal Equations Approach +------------------------- + +The normal equations approach to the large linear least squares +problem described above is popular due to its speed and simplicity. +Since the normal equations solution to the problem is given by + +.. only:: not texinfo + + .. math:: c = \left( X^T X + \lambda^2 I \right)^{-1} X^T y + +.. only:: texinfo + + :: + + c = ( X^T X + \lambda^2 I )^-1 X^T y + +only the :math:`p`-by-:math:`p` matrix :math:`X^T X` and +:math:`p`-by-1 vector :math:`X^T y` need to be stored. Using +the partition scheme described above, these are given by + +.. only:: not texinfo + + .. math:: + + X^T X &= \sum_i X_i^T X_i \\ + X^T y &= \sum_i X_i^T y_i + +.. only:: texinfo + + :: + + X^T X = \sum_i X_i^T X_i + X^T y = \sum_i X_i^T y_i + +Since the matrix :math:`X^T X` is symmetric, only half of it +needs to be calculated. Once all of the blocks :math:`(X_i,y_i)` +have been accumulated into the final :math:`X^T X` and :math:`X^T y`, +the system can be solved with a Cholesky factorization of the +:math:`X^T X` matrix. The :math:`X^T X` matrix is first transformed via +a diagonal scaling transformation to attempt to reduce its condition +number as much as possible to recover a more accurate solution vector. +The normal equations approach is the fastest method for solving the +large least squares problem, and is accurate for well-conditioned +matrices :math:`X`. However, for ill-conditioned matrices, as is often +the case for large systems, this method can suffer from numerical +instabilities (see Trefethen and Bau, 1997). The number of operations +for this method is :math:`O(np^2 + {1 \over 3}p^3)`. + +.. index:: + single: large linear least squares, TSQR + +Tall Skinny QR (TSQR) Approach +------------------------------ + +An algorithm which has better numerical stability for ill-conditioned +problems is known as the Tall Skinny QR (TSQR) method. This method +is based on computing the thin QR decomposition of the least squares +matrix :math:`X = Q R`, where :math:`Q` is an :math:`n`-by-:math:`p` matrix +with orthogonal columns, and :math:`R` is a :math:`p`-by-:math:`p` +upper triangular matrix. Once these factors are calculated, the +residual becomes + +.. math:: \chi^2 = || Q^T y - R c ||^2 + \lambda^2 || c ||^2 + +which can be written as the matrix equation + +.. only:: not texinfo + + .. math:: + + \left( + \begin{array}{c} + R \\ + \lambda I + \end{array} + \right) c = + \left( + \begin{array}{c} + Q^T y \\ + 0 + \end{array} + \right) + +.. only:: texinfo + + :: + + [ R ; \lambda I ] c = [ Q^T b ; 0 ] + +The matrix on the left hand side is now a much +smaller :math:`2p`-by-:math:`p` matrix which can +be solved with a standard SVD approach. The +:math:`Q` matrix is just as large as the original +matrix :math:`X`, however it does not need to be +explicitly constructed. The TSQR algorithm +computes only the :math:`p`-by-:math:`p` matrix +:math:`R` and the :math:`p`-by-1 vector :math:`Q^T y`, +and updates these quantities as new blocks +are added to the system. Each time a new block of rows +(:math:`X_i,y_i`) is added, the algorithm performs a QR decomposition +of the matrix + +.. only:: not texinfo + + .. math:: + + \left( + \begin{array}{c} + R_{i-1} \\ + X_i + \end{array} + \right) + +.. only:: texinfo + + :: + + [ R_(i-1) ; X_i ] + +where :math:`R_{i-1}` is the upper triangular +:math:`R` factor for the matrix + +.. only:: not texinfo + + .. math:: + + \left( + \begin{array}{c} + X_1 \\ + \vdots \\ + X_{i-1} + \end{array} + \right) + +.. only:: texinfo + + :: + + [ X_1 ; ... ; X_(i-1) ] + +This QR decomposition is done efficiently taking into account +the sparse structure of :math:`R_{i-1}`. See Demmel et al, 2008 for +more details on how this is accomplished. The number +of operations for this method is :math:`O(2np^2 - {2 \over 3}p^3)`. + +.. index:: + single: large linear least squares, steps + +Large Dense Linear Systems Solution Steps +----------------------------------------- + +The typical steps required to solve large regularized linear least +squares problems are as follows: + +#. Choose the regularization matrix :math:`L`. + +#. Construct a block of rows of the least squares matrix, right + hand side vector, and weight vector (:math:`X_i`, :math:`y_i`, :math:`w_i`). + +#. Transform the block to standard form (:math:`\tilde{X_i}`, :math:`\tilde{y_i}`). This + step can be skipped if :math:`L = I` and :math:`W = I`. + +#. Accumulate the standard form block (:math:`\tilde{X_i}`, :math:`\tilde{y_i}`) into + the system. + +#. Repeat steps 2-4 until the entire matrix and right hand side vector have + been accumulated. + +#. Determine an appropriate regularization parameter :math:`\lambda` (using for example + L-curve analysis). + +#. Solve the standard form system using the chosen :math:`\lambda`. + +#. Backtransform the standard form solution :math:`\tilde{c}` to recover the + original solution vector :math:`c`. + +.. index:: + single: large linear least squares, routines + +Large Dense Linear Least Squares Routines +----------------------------------------- + +.. type:: gsl_multilarge_linear_workspace + + This workspace contains parameters for solving large linear least squares problems. + +.. function:: gsl_multilarge_linear_workspace * gsl_multilarge_linear_alloc (const gsl_multilarge_linear_type * T, const size_t p) + + This function allocates a workspace for solving large linear least squares + systems. The least squares matrix :math:`X` has :data:`p` columns, + but may have any number of rows. + + .. type:: gsl_multilarge_linear_type + + The parameter :data:`T` specifies + the method to be used for solving the large least squares system + and may be selected from the following choices + + .. var:: gsl_multilarge_linear_normal + + This specifies the normal equations approach for + solving the least squares system. This method is suitable + in cases where performance is critical and it is known that the + least squares matrix :math:`X` is well conditioned. The size + of this workspace is :math:`O(p^2)`. + + .. var:: gsl_multilarge_linear_tsqr + + This specifies the sequential Tall Skinny QR (TSQR) approach for + solving the least squares system. This method is a good + general purpose choice for large systems, but requires about + twice as many operations as the normal equations method for + :math:`n >> p`. The size of this workspace is :math:`O(p^2)`. + +.. function:: void gsl_multilarge_linear_free (gsl_multilarge_linear_workspace * w) + + This function frees the memory associated with the + workspace :data:`w`. + +.. function:: const char * gsl_multilarge_linear_name (gsl_multilarge_linear_workspace * w) + + This function returns a string pointer to the name + of the multilarge solver. + +.. function:: int gsl_multilarge_linear_reset (gsl_multilarge_linear_workspace * w) + + This function resets the workspace :data:`w` so + it can begin to accumulate a new least squares + system. + +.. function:: int gsl_multilarge_linear_stdform1 (const gsl_vector * L, const gsl_matrix * X, const gsl_vector * y, gsl_matrix * Xs, gsl_vector * ys, gsl_multilarge_linear_workspace * work) + int gsl_multilarge_linear_wstdform1 (const gsl_vector * L, const gsl_matrix * X, const gsl_vector * w, const gsl_vector * y, gsl_matrix * Xs, gsl_vector * ys, gsl_multilarge_linear_workspace * work) + + These functions define a regularization matrix + :math:`L = \diag(l_0,l_1,...,l_{p-1})`. + The diagonal matrix element :math:`l_i` is provided by the + :math:`i`-th element of the input vector :data:`L`. + The block (:data:`X`, :data:`y`) is converted to standard form and + the parameters (:math:`\tilde{X}`, :math:`\tilde{y}`) are stored in :data:`Xs` + and :data:`ys` on output. :data:`Xs` and :data:`ys` have the same dimensions as + :data:`X` and :data:`y`. Optional data weights may be supplied in the + vector :data:`w`. In order to apply this transformation, + :math:`L^{-1}` must exist and so none of the :math:`l_i` + may be zero. After the standard form system has been solved, + use :func:`gsl_multilarge_linear_genform1` to recover the original solution vector. + It is allowed to have :data:`X` = :data:`Xs` and :data:`y` = :data:`ys` for an + in-place transform. + +.. function:: int gsl_multilarge_linear_L_decomp (gsl_matrix * L, gsl_vector * tau) + + This function calculates the QR decomposition of the :math:`m`-by-:math:`p` + regularization matrix :data:`L`. :data:`L` must have :math:`m \ge p`. On output, + the Householder scalars are stored in the vector :data:`tau` of size :math:`p`. + These outputs will be used by :func:`gsl_multilarge_linear_wstdform2` to complete the + transformation to standard form. + +.. function:: int gsl_multilarge_linear_stdform2 (const gsl_matrix * LQR, const gsl_vector * Ltau, const gsl_matrix * X, const gsl_vector * y, gsl_matrix * Xs, gsl_vector * ys, gsl_multilarge_linear_workspace * work) + int gsl_multilarge_linear_wstdform2 (const gsl_matrix * LQR, const gsl_vector * Ltau, const gsl_matrix * X, const gsl_vector * w, const gsl_vector * y, gsl_matrix * Xs, gsl_vector * ys, gsl_multilarge_linear_workspace * work) + + These functions convert a block of rows (:data:`X`, :data:`y`, :data:`w`) to standard + form (:math:`\tilde{X}`, :math:`\tilde{y}`) which are stored in :data:`Xs` and :data:`ys` + respectively. :data:`X`, :data:`y`, and :data:`w` must all have the same number of rows. + The :math:`m`-by-:math:`p` regularization matrix :data:`L` is specified by the inputs + :data:`LQR` and :data:`Ltau`, which are outputs from :func:`gsl_multilarge_linear_L_decomp`. + :data:`Xs` and :data:`ys` have the same dimensions as :data:`X` and :data:`y`. After the + standard form system has been solved, use :func:`gsl_multilarge_linear_genform2` to + recover the original solution vector. Optional data weights may be supplied in the + vector :data:`w`, where :math:`W = \diag(w)`. + +.. function:: int gsl_multilarge_linear_accumulate (gsl_matrix * X, gsl_vector * y, gsl_multilarge_linear_workspace * w) + + This function accumulates the standard form block (:math:`X,y`) into the + current least squares system. :data:`X` and :data:`y` have the same number + of rows, which can be arbitrary. :data:`X` must have :math:`p` columns. + For the TSQR method, :data:`X` and :data:`y` are destroyed on output. + For the normal equations method, they are both unchanged. + +.. function:: int gsl_multilarge_linear_solve (const double lambda, gsl_vector * c, double * rnorm, double * snorm, gsl_multilarge_linear_workspace * w) + + After all blocks (:math:`X_i,y_i`) have been accumulated into + the large least squares system, this function will compute + the solution vector which is stored in :data:`c` on output. + The regularization parameter :math:`\lambda` is provided in + :data:`lambda`. On output, :data:`rnorm` contains the residual norm + :math:`||y - X c||_W` and :data:`snorm` contains the solution + norm :math:`||L c||`. + +.. function:: int gsl_multilarge_linear_genform1 (const gsl_vector * L, const gsl_vector * cs, gsl_vector * c, gsl_multilarge_linear_workspace * work) + + After a regularized system has been solved with + :math:`L = \diag(\l_0,\l_1,...,\l_{p-1})`, + this function backtransforms the standard form solution vector :data:`cs` + to recover the solution vector of the original problem :data:`c`. The + diagonal matrix elements :math:`l_i` are provided in + the vector :data:`L`. It is allowed to have :data:`c` = :data:`cs` for an + in-place transform. + +.. function:: int gsl_multilarge_linear_genform2 (const gsl_matrix * LQR, const gsl_vector * Ltau, const gsl_vector * cs, gsl_vector * c, gsl_multilarge_linear_workspace * work) + + After a regularized system has been solved with a regularization matrix :math:`L`, + specified by (:data:`LQR`, :data:`Ltau`), this function backtransforms the standard form + solution :data:`cs` + to recover the solution vector of the original problem, which is stored in :data:`c`, + of length :math:`p`. + +.. function:: int gsl_multilarge_linear_lcurve (gsl_vector * reg_param, gsl_vector * rho, gsl_vector * eta, gsl_multilarge_linear_workspace * work) + + This function computes the L-curve for a large least squares system + after it has been fully accumulated into the workspace :data:`work`. + The output vectors :data:`reg_param`, :data:`rho`, and :data:`eta` must all + be the same size, and will contain the regularization parameters + :math:`\lambda_i`, residual norms :math:`||y - X c_i||`, and solution + norms :math:`|| L c_i ||` which compose the L-curve, where :math:`c_i` + is the regularized solution vector corresponding to :math:`\lambda_i`. + The user may determine the number of points on the L-curve by + adjusting the size of these input arrays. For the TSQR method, + the regularization parameters :math:`\lambda_i` are estimated from the + singular values of the triangular :math:`R` factor. For the normal + equations method, they are estimated from the eigenvalues of the + :math:`X^T X` matrix. + +.. function:: int gsl_multilarge_linear_rcond (double * rcond, gsl_multilarge_linear_workspace * work) + + This function computes the reciprocal condition number, stored in + :data:`rcond`, of the least squares matrix after it has been accumulated + into the workspace :data:`work`. For the TSQR algorithm, this is + accomplished by calculating the SVD of the :math:`R` factor, which + has the same singular values as the matrix :math:`X`. For the normal + equations method, this is done by computing the eigenvalues of + :math:`X^T X`, which could be inaccurate for ill-conditioned matrices + :math:`X`. + +.. index:: least squares troubleshooting + +Troubleshooting +=============== + +When using models based on polynomials, care should be taken when constructing the design matrix +:math:`X`. If the :math:`x` values are large, then the matrix :math:`X` could be ill-conditioned +since its columns are powers of :math:`x`, leading to unstable least-squares solutions. +In this case it can often help to center and scale the :math:`x` values using the mean and standard deviation: + +.. only:: not texinfo + + .. math:: x' = {x - \mu(x) \over \sigma(x)} + +.. only:: texinfo + + :: + + x' = (x - mu)/sigma + +and then construct the :math:`X` matrix using the transformed values :math:`x'`. + +Examples +======== + +The example programs in this section demonstrate the various linear regression methods. + +Simple Linear Regression Example +-------------------------------- + +The following program computes a least squares straight-line fit to a +simple dataset, and outputs the best-fit line and its +associated one standard-deviation error bars. + +.. include:: examples/fitting.c + :code: + +The following commands extract the data from the output of the program +and display it using the GNU plotutils "graph" utility:: + + $ ./demo > tmp + $ more tmp + # best fit: Y = -106.6 + 0.06 X + # covariance matrix: + # [ 39602, -19.9 + # -19.9, 0.01] + # chisq = 0.8 + + $ for n in data fit hi lo ; + do + grep "^$n" tmp | cut -d: -f2 > $n ; + done + $ graph -T X -X x -Y y -y 0 20 -m 0 -S 2 -Ie data + -S 0 -I a -m 1 fit -m 2 hi -m 2 lo + +The result is shown in :numref:`fig_fit-wlinear`. + +.. _fig_fit-wlinear: + +.. figure:: /images/fit-wlinear.png + + Straight line fit with 1-:math:`\sigma` error bars + +Multi-parameter Linear Regression Example +----------------------------------------- + +The following program performs a quadratic fit :math:`y = c_0 + c_1 x + c_2 x^2` +to a weighted dataset using the generalised linear fitting function +:func:`gsl_multifit_wlinear`. The model matrix :math:`X` for a quadratic +fit is given by, + +.. only:: not texinfo + + .. math:: + + X = + \left( + \begin{array}{ccc} + 1 & x_0 & x_0^2 \\ + 1 & x_1 & x_1^2 \\ + 1 & x_2 & x_2^2 \\ + \dots & \dots & \dots + \end{array} + \right) + +.. only:: texinfo + + :: + + X = [ 1 , x_0 , x_0^2 ; + 1 , x_1 , x_1^2 ; + 1 , x_2 , x_2^2 ; + ... , ... , ... ] + +where the column of ones corresponds to the constant term :math:`c_0`. +The two remaining columns corresponds to the terms :math:`c_1 x` and +:math:`c_2 x^2`. + +The program reads :data:`n` lines of data in the format (:data:`x`, :data:`y`, +:data:`err`) where :data:`err` is the error (standard deviation) in the +value :data:`y`. + +.. include:: examples/fitting2.c + :code: + +A suitable set of data for fitting can be generated using the following +program. It outputs a set of points with gaussian errors from the curve +:math:`y = e^x` in the region :math:`0 < x < 2`. + +.. include:: examples/fitting3.c + :code: + +The data can be prepared by running the resulting executable program:: + + $ GSL_RNG_TYPE=mt19937_1999 ./generate > exp.dat + $ more exp.dat + 0.1 0.97935 0.110517 + 0.2 1.3359 0.12214 + 0.3 1.52573 0.134986 + 0.4 1.60318 0.149182 + 0.5 1.81731 0.164872 + 0.6 1.92475 0.182212 + .... + +To fit the data use the previous program, with the number of data points +given as the first argument. In this case there are 19 data points:: + + $ ./fit 19 < exp.dat + 0.1 0.97935 +/- 0.110517 + 0.2 1.3359 +/- 0.12214 + ... + # best fit: Y = 1.02318 + 0.956201 X + 0.876796 X^2 + # covariance matrix: + [ +1.25612e-02, -3.64387e-02, +1.94389e-02 + -3.64387e-02, +1.42339e-01, -8.48761e-02 + +1.94389e-02, -8.48761e-02, +5.60243e-02 ] + # chisq = 23.0987 + +The parameters of the quadratic fit match the coefficients of the +expansion of :math:`e^x`, taking into account the errors on the +parameters and the :math:`O(x^3)` difference between the exponential and +quadratic functions for the larger values of :math:`x`. The errors on +the parameters are given by the square-root of the corresponding +diagonal elements of the covariance matrix. The chi-squared per degree +of freedom is 1.4, indicating a reasonable fit to the data. + +:numref:`fig_fit-wlinear2` shows the resulting fit. + +.. _fig_fit-wlinear2: + +.. figure:: /images/fit-wlinear2.png + + Weighted fit example with error bars + +Regularized Linear Regression Example 1 +--------------------------------------- + +The next program demonstrates the difference between ordinary and +regularized least squares when the design matrix is near-singular. +In this program, we generate two random normally distributed variables +:math:`u` and :math:`v`, with :math:`v = u + noise` so that :math:`u` +and :math:`v` are nearly colinear. We then set a third dependent +variable :math:`y = u + v + noise` and solve for the coefficients +:math:`c_1,c_2` of the model :math:`Y(c_1,c_2) = c_1 u + c_2 v`. +Since :math:`u \approx v`, the design matrix :math:`X` is nearly +singular, leading to unstable ordinary least squares solutions. + +Here is the program output:: + + matrix condition number = 1.025113e+04 + + === Unregularized fit === + best fit: y = -43.6588 u + 45.6636 v + residual norm = 31.6248 + solution norm = 63.1764 + chisq/dof = 1.00213 + + === Regularized fit (L-curve) === + optimal lambda: 4.51103 + best fit: y = 1.00113 u + 1.0032 v + residual norm = 31.6547 + solution norm = 1.41728 + chisq/dof = 1.04499 + + === Regularized fit (GCV) === + optimal lambda: 0.0232029 + best fit: y = -19.8367 u + 21.8417 v + residual norm = 31.6332 + solution norm = 29.5051 + chisq/dof = 1.00314 + +We see that the ordinary least squares solution is completely wrong, +while the L-curve regularized method with the optimal +:math:`\lambda = 4.51103` finds the correct solution +:math:`c_1 \approx c_2 \approx 1`. The GCV regularized method finds +a regularization parameter :math:`\lambda = 0.0232029` which is too +small to give an accurate solution, although it performs better than OLS. +The L-curve and its computed corner, as well as the GCV curve and its +minimum are plotted in :numref:`fig_regularized`. + +.. _fig_regularized: + +.. figure:: /images/regularized.png + + L-curve and GCV curve for example program. + +The program is given below. + +.. include:: examples/fitreg.c + :code: + +Regularized Linear Regression Example 2 +--------------------------------------- + +The following example program minimizes the cost function + +.. math:: ||y - X c||^2 + \lambda^2 ||x||^2 + +where :math:`X` is the :math:`10`-by-:math:`8` Hilbert matrix whose +entries are given by + +.. only:: not texinfo + + .. math:: X_{ij} = {1 \over i + j - 1} + +.. only:: texinfo + + :: + + X_{ij} = 1 / (i + j - 1) + +and the right hand side vector is given by +:math:`y = [1,-1,1,-1,1,-1,1,-1,1,-1]^T`. Solutions +are computed for :math:`\lambda = 0` (unregularized) as +well as for optimal parameters :math:`\lambda` chosen by +analyzing the L-curve and GCV curve. + +Here is the program output:: + + matrix condition number = 3.565872e+09 + + === Unregularized fit === + residual norm = 2.15376 + solution norm = 2.92217e+09 + chisq/dof = 2.31934 + + === Regularized fit (L-curve) === + optimal lambda: 7.11407e-07 + residual norm = 2.60386 + solution norm = 424507 + chisq/dof = 3.43565 + + === Regularized fit (GCV) === + optimal lambda: 1.72278 + residual norm = 3.1375 + solution norm = 0.139357 + chisq/dof = 4.95076 + +Here we see the unregularized solution results in a large solution +norm due to the ill-conditioned matrix. The L-curve solution finds +a small value of :math:`\lambda = 7.11e-7` which still results in +a badly conditioned system and a large solution norm. The GCV method +finds a parameter :math:`\lambda = 1.72` which results in a well-conditioned +system and small solution norm. + +The L-curve and its computed corner, as well as the GCV curve and its +minimum are plotted in :numref:`fig_regularized2`. + +.. _fig_regularized2: + +.. figure:: /images/regularized2.png + + L-curve and GCV curve for example program. + +The program is given below. + +.. include:: examples/fitreg2.c + :code: + +Robust Linear Regression Example +-------------------------------- + +The next program demonstrates the advantage of robust least squares on +a dataset with outliers. The program generates linear :math:`(x,y)` +data pairs on the line :math:`y = 1.45 x + 3.88`, adds some random +noise, and inserts 3 outliers into the dataset. Both the robust +and ordinary least squares (OLS) coefficients are computed for +comparison. + +.. include:: examples/robfit.c + :code: + +The output from the program is shown in :numref:`fig_robust`. + +.. _fig_robust: + +.. figure:: /images/robust.png + + Linear fit to dataset with outliers. + +Large Dense Linear Regression Example +------------------------------------- + +The following program demostrates the large dense linear least squares +solvers. This example is adapted from Trefethen and Bau, +and fits the function :math:`f(t) = \exp{(\sin^3{(10t)}})` on +the interval :math:`[0,1]` with a degree 15 polynomial. The +program generates :math:`n = 50000` equally spaced points +:math:`t_i` on this interval, calculates the function value +and adds random noise to determine the observation value +:math:`y_i`. The entries of the least squares matrix are +:math:`X_{ij} = t_i^j`, representing a polynomial fit. The +matrix is highly ill-conditioned, with a condition number +of about :math:`1.4 \cdot 10^{11}`. The program accumulates the +matrix into the least squares system in 5 blocks, each with +10000 rows. This way the full matrix :math:`X` is never +stored in memory. We solve the system with both the +normal equations and TSQR methods. The results are shown +in :numref:`fig_multilarge`. In the top left plot, we see the unregularized +normal equations solution has larger error than TSQR due to +the ill-conditioning of the matrix. In the bottom left plot, +we show the L-curve, which exhibits multiple corners. +In the top right panel, we plot a regularized solution using +:math:`\lambda = 10^{-6}`. The TSQR and normal solutions now agree, +however they are unable to provide a good fit due to the damping. +This indicates that for some ill-conditioned +problems, regularizing the normal equations does not improve the +solution. This is further illustrated in the bottom right panel, +where we plot the L-curve calculated from the normal equations. +The curve agrees with the TSQR curve for larger damping parameters, +but for small :math:`\lambda`, the normal equations approach cannot +provide accurate solution vectors leading to numerical +inaccuracies in the left portion of the curve. + +.. _fig_multilarge: + +.. figure:: /images/multilarge.png + +.. include:: examples/largefit.c + :code: + +References and Further Reading +============================== + +A summary of formulas and techniques for least squares fitting can be +found in the "Statistics" chapter of the Annual Review of Particle +Physics prepared by the Particle Data Group, + +* *Review of Particle Properties*, + R.M. Barnett et al., Physical Review D54, 1 (1996) + http://pdg.lbl.gov + +The Review of Particle Physics is available online at the website given +above. + +.. index:: + single: NIST Statistical Reference Datasets + single: Statistical Reference Datasets (StRD) + +The tests used to prepare these routines are based on the NIST +Statistical Reference Datasets. The datasets and their documentation are +available from NIST at the following website, + +http://www.nist.gov/itl/div898/strd/index.html + +More information on Tikhonov regularization can be found in + +* Hansen, P. C. (1998), Rank-Deficient and Discrete Ill-Posed Problems: + Numerical Aspects of Linear Inversion. SIAM Monogr. on Mathematical + Modeling and Computation, Society for Industrial and Applied Mathematics + +* M. Rezghi and S. M. Hosseini (2009), A new variant of L-curve for + Tikhonov regularization, Journal of Computational and Applied Mathematics, + Volume 231, Issue 2, pages 914-924. + +The GSL implementation of robust linear regression closely follows the publications + +* DuMouchel, W. and F. O'Brien (1989), "Integrating a robust + option into a multiple regression computing environment," + Computer Science and Statistics: Proceedings of the 21st + Symposium on the Interface, American Statistical Association + +* Street, J.O., R.J. Carroll, and D. Ruppert (1988), "A note on + computing robust regression estimates via iteratively + reweighted least squares," The American Statistician, v. 42, + pp. 152-154. + +More information about the normal equations and TSQR approach for solving +large linear least squares systems can be found in the publications + +* Trefethen, L. N. and Bau, D. (1997), "Numerical Linear Algebra", SIAM. + +* Demmel, J., Grigori, L., Hoemmen, M. F., and Langou, J. + "Communication-optimal parallel and sequential QR and LU factorizations", + UCB Technical Report No. UCB/EECS-2008-89, 2008. diff --git a/gsl-2.5/doc/math.rst b/gsl-2.5/doc/math.rst new file mode 100644 index 00000000..e457e9c5 --- /dev/null +++ b/gsl-2.5/doc/math.rst @@ -0,0 +1,351 @@ +.. index:: + single: elementary functions + single: mathematical functions, elementary + +********************** +Mathematical Functions +********************** + +This chapter describes basic mathematical functions. Some of these +functions are present in system libraries, but the alternative versions +given here can be used as a substitute when the system functions are not +available. + +The functions and macros described in this chapter are defined in the +header file :file:`gsl_math.h`. + +.. index:: + single: mathematical constants, defined as macros + single: numerical constants, defined as macros + single: constants, mathematical (defined as macros) + single: macros for mathematical constants + +Mathematical Constants +====================== + +The library ensures that the standard BSD mathematical constants +are defined. For reference, here is a list of the constants: + +.. index:: + single: e, defined as a macro + single: pi, defined as a macro + single: Euler's constant, defined as a macro + +===================== =================================== +:macro:`M_E` The base of exponentials, :math:`e` +:macro:`M_LOG2E` The base-2 logarithm of :math:`e`, :math:`\log_2 (e)` +:macro:`M_LOG10E` The base-10 logarithm of :math:`e`, :math:`\log_{10} (e)` +:macro:`M_SQRT2` The square root of two, :math:`\sqrt 2` +:macro:`M_SQRT1_2` The square root of one-half, :math:`\sqrt{1/2}` +:macro:`M_SQRT3` The square root of three, :math:`\sqrt 3` +:macro:`M_PI` The constant pi, :math:`\pi` +:macro:`M_PI_2` Pi divided by two, :math:`\pi/2` +:macro:`M_PI_4` Pi divided by four, :math:`\pi/4` +:macro:`M_SQRTPI` The square root of pi, :math:`\sqrt\pi` +:macro:`M_2_SQRTPI` Two divided by the square root of pi, :math:`2/\sqrt\pi` +:macro:`M_1_PI` The reciprocal of pi, :math:`1/\pi` +:macro:`M_2_PI` Twice the reciprocal of pi, :math:`2/\pi` +:macro:`M_LN10` The natural logarithm of ten, :math:`\ln(10)` +:macro:`M_LN2` The natural logarithm of two, :math:`\ln(2)` +:macro:`M_LNPI` The natural logarithm of pi, :math:`\ln(\pi)` +:macro:`M_EULER` Euler's constant, :math:`\gamma` +===================== =================================== + +.. index:: + single: infinity, defined as a macro + single: IEEE infinity, defined as a macro + +Infinities and Not-a-number +=========================== + +.. macro:: GSL_POSINF + + This macro contains the IEEE representation of positive infinity, + :math:`+\infty`. It is computed from the expression :code:`+1.0/0.0`. + +.. macro:: GSL_NEGINF + + This macro contains the IEEE representation of negative infinity, + :math:`-\infty`. It is computed from the expression :code:`-1.0/0.0`. + +.. index:: + single: NaN, defined as a macro + single: Not-a-number, defined as a macro + single: IEEE NaN, defined as a macro + +.. macro:: GSL_NAN + + This macro contains the IEEE representation of the Not-a-Number symbol, + :code:`NaN`. It is computed from the ratio :code:`0.0/0.0`. + +.. function:: int gsl_isnan (const double x) + + This function returns 1 if :data:`x` is not-a-number. + +.. function:: int gsl_isinf (const double x) + + This function returns :math:`+1` if :data:`x` is positive infinity, + :math:`-1` if :data:`x` is negative infinity and 0 + otherwise. [#f1]_ + +.. function:: int gsl_finite (const double x) + + This function returns 1 if :data:`x` is a real number, and 0 if it is + infinite or not-a-number. + +Elementary Functions +==================== + +The following routines provide portable implementations of functions +found in the BSD math library. When native versions are not available +the functions described here can be used instead. The substitution can +be made automatically if you use :code:`autoconf` to compile your +application (see :ref:`portability-functions`). + +.. index:: + single: log1p + single: logarithm, computed accurately near 1 + +.. function:: double gsl_log1p (const double x) + + This function computes the value of :math:`\log(1+x)` in a way that is + accurate for small :data:`x`. It provides an alternative to the BSD math + function :code:`log1p(x)`. + +.. index:: + single: expm1 + single: exponential, difference from 1 computed accurately + +.. function:: double gsl_expm1 (const double x) + + This function computes the value of :math:`\exp(x)-1` in a way that is + accurate for small :data:`x`. It provides an alternative to the BSD math + function :code:`expm1(x)`. + +.. index:: + single: hypot + single: euclidean distance function, hypot + single: length, computed accurately using hypot + +.. function:: double gsl_hypot (const double x, const double y) + + This function computes the value of + :math:`\sqrt{x^2 + y^2}` in a way that avoids overflow. It provides an + alternative to the BSD math function :code:`hypot(x,y)`. + +.. index:: + single: euclidean distance function, hypot3 + single: length, computed accurately using hypot3 + +.. function:: double gsl_hypot3 (const double x, const double y, const double z) + + This function computes the value of + :math:`\sqrt{x^2 + y^2 + z^2}` in a way that avoids overflow. + +.. index:: + single: acosh + single: hyperbolic cosine, inverse + single: inverse hyperbolic cosine + +.. function:: double gsl_acosh (const double x) + + This function computes the value of :math:`\arccosh{(x)}`. It provides an + alternative to the standard math function :code:`acosh(x)`. + +.. index:: + single: asinh + single: hyperbolic sine, inverse + single: inverse hyperbolic sine + +.. function:: double gsl_asinh (const double x) + + This function computes the value of :math:`\arcsinh{(x)}`. It provides an + alternative to the standard math function :code:`asinh(x)`. + +.. index:: + single: atanh + single: hyperbolic tangent, inverse + single: inverse hyperbolic tangent + +.. function:: double gsl_atanh (const double x) + + This function computes the value of :math:`\arctanh{(x)}`. It provides an + alternative to the standard math function :code:`atanh(x)`. + +.. index:: ldexp + +.. function:: double gsl_ldexp (double x, int e) + + This function computes the value of :math:`x * 2^e`. It provides an + alternative to the standard math function :code:`ldexp(x,e)`. + +.. index:: frexp + +.. function:: double gsl_frexp (double x, int * e) + + This function splits the number :data:`x` into its normalized fraction + :math:`f` and exponent :math:`e`, such that :math:`x = f * 2^e` and + :math:`0.5 <= f < 1`. The function returns :math:`f` and stores the + exponent in :math:`e`. If :math:`x` is zero, both :math:`f` and :math:`e` + are set to zero. This function provides an alternative to the standard + math function :code:`frexp(x, e)`. + +Small integer powers +==================== + +A common complaint about the standard C library is its lack of a +function for calculating (small) integer powers. GSL provides some simple +functions to fill this gap. For reasons of efficiency, these functions +do not check for overflow or underflow conditions. + +.. function:: + double gsl_pow_int (double x, int n) + double gsl_pow_uint (double x, unsigned int n) + + These routines computes the power :math:`x^n` for integer :data:`n`. The + power is computed efficiently---for example, :math:`x^8` is computed as + :math:`((x^2)^2)^2`, requiring only 3 multiplications. A version of this + function which also computes the numerical error in the result is + available as :func:`gsl_sf_pow_int_e`. + +.. function:: + double gsl_pow_2 (const double x) + double gsl_pow_3 (const double x) + double gsl_pow_4 (const double x) + double gsl_pow_5 (const double x) + double gsl_pow_6 (const double x) + double gsl_pow_7 (const double x) + double gsl_pow_8 (const double x) + double gsl_pow_9 (const double x) + + These functions can be used to compute small integer powers :math:`x^2`, + :math:`x^3`, etc. efficiently. The functions will be inlined when + :macro:`HAVE_INLINE` is defined, so that use of these functions + should be as efficient as explicitly writing the corresponding + product expression:: + + #include + double y = gsl_pow_4 (3.141) /* compute 3.141**4 */ + +Testing the Sign of Numbers +=========================== + +.. macro:: GSL_SIGN (x) + + This macro returns the sign of :data:`x`. It is defined as :code:`((x) >= 0 + ? 1 : -1)`. Note that with this definition the sign of zero is positive + (regardless of its IEEE sign bit). + +Testing for Odd and Even Numbers +================================ + +.. macro:: GSL_IS_ODD (n) + + This macro evaluates to 1 if :data:`n` is odd and 0 if :data:`n` is + even. The argument :data:`n` must be of integer type. + +.. macro:: GSL_IS_EVEN (n) + + This macro is the opposite of :macro:`GSL_IS_ODD`. It evaluates to 1 if + :data:`n` is even and 0 if :data:`n` is odd. The argument :data:`n` must be of + integer type. + +Maximum and Minimum functions +============================= + +Note that the following macros perform multiple evaluations of their +arguments, so they should not be used with arguments that have side +effects (such as a call to a random number generator). + +.. index:: maximum of two numbers + +.. macro:: GSL_MAX (a, b) + + This macro returns the maximum of :data:`a` and :data:`b`. It is defined + as :code:`((a) > (b) ? (a):(b))`. + +.. index:: minimum of two numbers + +.. macro:: GSL_MIN (a, b) + + This macro returns the minimum of :data:`a` and :data:`b`. It is defined as + :code:`((a) < (b) ? (a):(b))`. + +.. function:: extern inline double GSL_MAX_DBL (double a, double b) + + This function returns the maximum of the double precision numbers + :data:`a` and :data:`b` using an inline function. The use of a function + allows for type checking of the arguments as an extra safety feature. On + platforms where inline functions are not available the macro + :macro:`GSL_MAX` will be automatically substituted. + +.. function:: extern inline double GSL_MIN_DBL (double a, double b) + + This function returns the minimum of the double precision numbers + :data:`a` and :data:`b` using an inline function. The use of a function + allows for type checking of the arguments as an extra safety feature. On + platforms where inline functions are not available the macro + :macro:`GSL_MIN` will be automatically substituted. + +.. function:: + extern inline int GSL_MAX_INT (int a, int b) + extern inline int GSL_MIN_INT (int a, int b) + + These functions return the maximum or minimum of the integers :data:`a` + and :data:`b` using an inline function. On platforms where inline + functions are not available the macros :macro:`GSL_MAX` or :macro:`GSL_MIN` + will be automatically substituted. + +.. function:: + extern inline long double GSL_MAX_LDBL (long double a, long double b) + extern inline long double GSL_MIN_LDBL (long double a, long double b) + + These functions return the maximum or minimum of the long doubles :data:`a` + and :data:`b` using an inline function. On platforms where inline + functions are not available the macros :macro:`GSL_MAX` or :macro:`GSL_MIN` + will be automatically substituted. + +Approximate Comparison of Floating Point Numbers +================================================ + +It is sometimes useful to be able to compare two floating point numbers +approximately, to allow for rounding and truncation errors. The following +function implements the approximate floating-point comparison algorithm +proposed by D.E. Knuth in Section 4.2.2 of "Seminumerical +Algorithms" (3rd edition). + +.. index:: + single: approximate comparison of floating point numbers + single: safe comparison of floating point numbers + single: floating point numbers, approximate comparison + +.. function:: int gsl_fcmp (double x, double y, double epsilon) + + This function determines whether :data:`x` and :data:`y` are approximately + equal to a relative accuracy :data:`epsilon`. + + The relative accuracy is measured using an interval of size :math:`2 + \delta`, where :math:`\delta = 2^k \epsilon` and :math:`k` is the + maximum base-2 exponent of :math:`x` and :math:`y` as computed by the + function :func:`frexp`. + + If :math:`x` and :math:`y` lie within this interval, they are considered + approximately equal and the function returns 0. Otherwise if :math:`x < + y`, the function returns :math:`-1`, or if :math:`x > y`, the function returns + :math:`+1`. + + Note that :math:`x` and :math:`y` are compared to relative accuracy, so + this function is not suitable for testing whether a value is + approximately zero. + + The implementation is based on the package :code:`fcmp` by T.C. Belding. + +.. rubric:: Footnotes + +.. [#f1] Note that the C99 standard only requires the + system :func:`isinf` function to return a non-zero value, without the + sign of the infinity. The implementation in some earlier versions of + GSL used the system :func:`isinf` function and may have this behavior + on some platforms. Therefore, it is advisable to test the sign of + :data:`x` separately, if needed, rather than relying the sign of the + return value from :func:`gsl_isinf()`. diff --git a/gsl-2.5/doc/min.rst b/gsl-2.5/doc/min.rst new file mode 100644 index 00000000..4b1a68a2 --- /dev/null +++ b/gsl-2.5/doc/min.rst @@ -0,0 +1,358 @@ +.. index:: + single: optimization, see minimization + single: maximization, see minimization + single: minimization, one-dimensional + single: finding minima + single: nonlinear functions, minimization + +**************************** +One Dimensional Minimization +**************************** + +This chapter describes routines for finding minima of arbitrary +one-dimensional functions. The library provides low level components +for a variety of iterative minimizers and convergence tests. These can be +combined by the user to achieve the desired solution, with full access +to the intermediate steps of the algorithms. Each class of methods uses +the same framework, so that you can switch between minimizers at runtime +without needing to recompile your program. Each instance of a minimizer +keeps track of its own state, allowing the minimizers to be used in +multi-threaded programs. + +The header file :file:`gsl_min.h` contains prototypes for the +minimization functions and related declarations. To use the minimization +algorithms to find the maximum of a function simply invert its sign. + +.. index:: + single: minimization, overview + +Overview +======== + +The minimization algorithms begin with a bounded region known to contain +a minimum. The region is described by a lower bound :math:`a` and an +upper bound :math:`b`, with an estimate of the location of the minimum +:math:`x`, as shown in :numref:`fig_min-interval`. + +.. _fig_min-interval: + +.. figure:: /images/min-interval.png + :scale: 60% + + Function with lower and upper bounds with an estimate of the minimum. + +The value of the function at :math:`x` must be less than the value of the +function at the ends of the interval, + +.. math:: f(a) > f(x) < f(b) + +This condition guarantees that a minimum is contained somewhere within +the interval. On each iteration a new point :math:`x'` is selected using +one of the available algorithms. If the new point is a better estimate +of the minimum, i.e.: where :math:`f(x') < f(x)`, then the current +estimate of the minimum :math:`x` is updated. The new point also allows +the size of the bounded interval to be reduced, by choosing the most +compact set of points which satisfies the constraint :math:`f(a) > f(x) < f(b)`. +The interval is reduced until it encloses the true minimum to a +desired tolerance. This provides a best estimate of the location of the +minimum and a rigorous error estimate. + +Several bracketing algorithms are available within a single framework. +The user provides a high-level driver for the algorithm, and the +library provides the individual functions necessary for each of the +steps. There are three main phases of the iteration. The steps are, + +* initialize minimizer state, :data:`s`, for algorithm :data:`T` +* update :data:`s` using the iteration :data:`T` +* test :data:`s` for convergence, and repeat iteration if necessary + +The state for the minimizers is held in a :type:`gsl_min_fminimizer` +struct. The updating procedure uses only function evaluations (not +derivatives). + +.. index:: + single: minimization, caveats + +Caveats +======= + +Note that minimization functions can only search for one minimum at a +time. When there are several minima in the search area, the first +minimum to be found will be returned; however it is difficult to predict +which of the minima this will be. *In most cases, no error will be +reported if you try to find a minimum in an area where there is more +than one.* + +With all minimization algorithms it can be difficult to determine the +location of the minimum to full numerical precision. The behavior of the +function in the region of the minimum :math:`x^*` can be approximated by +a Taylor expansion, + +.. only:: not texinfo + + .. math:: y = f(x^*) + {1 \over 2} f''(x^*) (x - x^*)^2 + +.. only:: texinfo + + :: + + y = f(x^*) + (1/2) f''(x^*) (x - x^*)^2 + +and the second term of this expansion can be lost when added to the +first term at finite precision. This magnifies the error in locating +:math:`x^*`, making it proportional to :math:`\sqrt \epsilon` (where +:math:`\epsilon` is the relative accuracy of the floating point numbers). +For functions with higher order minima, such as :math:`x^4`, the +magnification of the error is correspondingly worse. The best that can +be achieved is to converge to the limit of numerical accuracy in the +function values, rather than the location of the minimum itself. + +Initializing the Minimizer +========================== + +.. type:: gsl_min_fminimizer + + This is a workspace for minimizing functions. + +.. function:: gsl_min_fminimizer * gsl_min_fminimizer_alloc (const gsl_min_fminimizer_type * T) + + This function returns a pointer to a newly allocated instance of a + minimizer of type :data:`T`. For example, the following code + creates an instance of a golden section minimizer:: + + const gsl_min_fminimizer_type * T = gsl_min_fminimizer_goldensection; + gsl_min_fminimizer * s = gsl_min_fminimizer_alloc (T); + + If there is insufficient memory to create the minimizer then the function + returns a null pointer and the error handler is invoked with an error + code of :macro:`GSL_ENOMEM`. + +.. function:: int gsl_min_fminimizer_set (gsl_min_fminimizer * s, gsl_function * f, double x_minimum, double x_lower, double x_upper) + + This function sets, or resets, an existing minimizer :data:`s` to use the + function :data:`f` and the initial search interval [:data:`x_lower`, + :data:`x_upper`], with a guess for the location of the minimum + :data:`x_minimum`. + + If the interval given does not contain a minimum, then the function + returns an error code of :macro:`GSL_EINVAL`. + +.. function:: int gsl_min_fminimizer_set_with_values (gsl_min_fminimizer * s, gsl_function * f, double x_minimum, double f_minimum, double x_lower, double f_lower, double x_upper, double f_upper) + + This function is equivalent to :func:`gsl_min_fminimizer_set` but uses + the values :data:`f_minimum`, :data:`f_lower` and :data:`f_upper` instead of + computing :code:`f(x_minimum)`, :code:`f(x_lower)` and :code:`f(x_upper)`. + +.. function:: void gsl_min_fminimizer_free (gsl_min_fminimizer * s) + + This function frees all the memory associated with the minimizer + :data:`s`. + +.. function:: const char * gsl_min_fminimizer_name (const gsl_min_fminimizer * s) + + This function returns a pointer to the name of the minimizer. For example:: + + printf ("s is a '%s' minimizer\n", gsl_min_fminimizer_name (s)); + + would print something like :code:`s is a 'brent' minimizer`. + +.. index:: + single: minimization, providing a function to minimize + +Providing the function to minimize +================================== + +You must provide a continuous function of one variable for the +minimizers to operate on. In order to allow for general parameters the +functions are defined by a :type:`gsl_function` data type +(:ref:`providing-function-to-solve`). + +Iteration +========= + +The following functions drive the iteration of each algorithm. Each +function performs one iteration to update the state of any minimizer of the +corresponding type. The same functions work for all minimizers so that +different methods can be substituted at runtime without modifications to +the code. + +.. function:: int gsl_min_fminimizer_iterate (gsl_min_fminimizer * s) + + This function performs a single iteration of the minimizer :data:`s`. If the + iteration encounters an unexpected problem then an error code will be + returned, + + :macro:`GSL_EBADFUNC` + + the iteration encountered a singular point where the function evaluated + to :code:`Inf` or :code:`NaN`. + + :macro:`GSL_FAILURE` + + the algorithm could not improve the current best approximation or + bounding interval. + +The minimizer maintains a current best estimate of the position of the +minimum at all times, and the current interval bounding the minimum. +This information can be accessed with the following auxiliary functions, + +.. function:: double gsl_min_fminimizer_x_minimum (const gsl_min_fminimizer * s) + + This function returns the current estimate of the position of the + minimum for the minimizer :data:`s`. + +.. function:: double gsl_min_fminimizer_x_upper (const gsl_min_fminimizer * s) + double gsl_min_fminimizer_x_lower (const gsl_min_fminimizer * s) + + These functions return the current upper and lower bound of the interval + for the minimizer :data:`s`. + +.. function:: double gsl_min_fminimizer_f_minimum (const gsl_min_fminimizer * s) + double gsl_min_fminimizer_f_upper (const gsl_min_fminimizer * s) + double gsl_min_fminimizer_f_lower (const gsl_min_fminimizer * s) + + These functions return the value of the function at the current estimate + of the minimum and at the upper and lower bounds of the interval for the + minimizer :data:`s`. + +.. index:: + single: minimization, stopping parameters + +Stopping Parameters +=================== + +A minimization procedure should stop when one of the following +conditions is true: + +* A minimum has been found to within the user-specified precision. +* A user-specified maximum number of iterations has been reached. +* An error has occurred. + +The handling of these conditions is under user control. The function +below allows the user to test the precision of the current result. + +.. function:: int gsl_min_test_interval (double x_lower, double x_upper, double epsabs, double epsrel) + + This function tests for the convergence of the interval [:data:`x_lower`, + :data:`x_upper`] with absolute error :data:`epsabs` and relative error + :data:`epsrel`. The test returns :macro:`GSL_SUCCESS` if the following + condition is achieved, + + .. only:: not texinfo + + .. math:: |a - b| < \hbox{\it epsabs} + \hbox{\it epsrel\/}\, \min(|a|,|b|) + + .. only:: texinfo + + :: + + |a - b| < epsabs + epsrel min(|a|,|b|) + + when the interval :math:`x = [a,b]` does not include the origin. If the + interval includes the origin then :math:`\min(|a|,|b|)` is replaced by + zero (which is the minimum value of :math:`|x|` over the interval). This + ensures that the relative error is accurately estimated for minima close + to the origin. + + This condition on the interval also implies that any estimate of the + minimum :math:`x_m` in the interval satisfies the same condition with respect + to the true minimum :math:`x_m^*`, + + .. only:: not texinfo + + .. math:: |x_m - x_m^*| < \hbox{\it epsabs} + \hbox{\it epsrel\/}\, x_m^* + + .. only:: texinfo + + :: + + |x_m - x_m^*| < epsabs + epsrel x_m^* + + assuming that the true minimum :math:`x_m^*` is contained within the interval. + +Minimization Algorithms +======================= + +The minimization algorithms described in this section require an initial +interval which is guaranteed to contain a minimum---if :math:`a` and +:math:`b` are the endpoints of the interval and :math:`x` is an estimate +of the minimum then :math:`f(a) > f(x) < f(b)`. This ensures that the +function has at least one minimum somewhere in the interval. If a valid +initial interval is used then these algorithm cannot fail, provided the +function is well-behaved. + +.. type:: gsl_min_fminimizer_type + + .. index:: + single: golden section algorithm for finding minima + single: minimum finding, golden section algorithm + + .. var:: gsl_min_fminimizer_goldensection + + The *golden section algorithm* is the simplest method of bracketing + the minimum of a function. It is the slowest algorithm provided by the + library, with linear convergence. + + On each iteration, the algorithm first compares the subintervals from + the endpoints to the current minimum. The larger subinterval is divided + in a golden section (using the famous ratio :math:`(3-\sqrt 5)/2 \approx 0.3819660` + and the value of the function at this new point is + calculated. The new value is used with the constraint :math:`f(a') > f(x') < f(b')` + to a select new interval containing the minimum, by + discarding the least useful point. This procedure can be continued + indefinitely until the interval is sufficiently small. Choosing the + golden section as the bisection ratio can be shown to provide the + fastest convergence for this type of algorithm. + + .. index:: + single: Brent's method for finding minima + single: minimum finding, Brent's method + + .. var:: gsl_min_fminimizer_brent + + The *Brent minimization algorithm* combines a parabolic + interpolation with the golden section algorithm. This produces a fast + algorithm which is still robust. + + The outline of the algorithm can be summarized as follows: on each + iteration Brent's method approximates the function using an + interpolating parabola through three existing points. The minimum of the + parabola is taken as a guess for the minimum. If it lies within the + bounds of the current interval then the interpolating point is accepted, + and used to generate a smaller interval. If the interpolating point is + not accepted then the algorithm falls back to an ordinary golden section + step. The full details of Brent's method include some additional checks + to improve convergence. + + .. index:: safeguarded step-length algorithm + + .. var:: gsl_min_fminimizer_quad_golden + + This is a variant of Brent's algorithm which uses the safeguarded + step-length algorithm of Gill and Murray. + +Examples +======== + +The following program uses the Brent algorithm to find the minimum of +the function :math:`f(x) = \cos(x) + 1`, which occurs at :math:`x = \pi`. +The starting interval is :math:`(0,6)`, with an initial guess for the +minimum of :math:`2`. + +.. include:: examples/min.c + :code: + +Here are the results of the minimization procedure. + +.. include:: examples/min.txt + :code: + +References and Further Reading +============================== + +Further information on Brent's algorithm is available in the following +book, + +* Richard Brent, *Algorithms for minimization without derivatives*, + Prentice-Hall (1973), republished by Dover in paperback (2002), ISBN + 0-486-41998-3. diff --git a/gsl-2.5/doc/montecarlo.rst b/gsl-2.5/doc/montecarlo.rst new file mode 100644 index 00000000..d44c73c2 --- /dev/null +++ b/gsl-2.5/doc/montecarlo.rst @@ -0,0 +1,683 @@ +.. index:: + single: Monte Carlo integration + single: stratified sampling in Monte Carlo integration + single: multidimensional integration + +*********************** +Monte Carlo Integration +*********************** + +This chapter describes routines for multidimensional Monte Carlo +integration. These include the traditional Monte Carlo method and +adaptive algorithms such as VEGAS and MISER which use +importance sampling and stratified sampling techniques. Each algorithm +computes an estimate of a multidimensional definite integral of the +form, + +.. math:: I = \int_{x_l}^{x_u} dx \int_{y_l}^{y_u} dy ... f(x, y, ...) + +over a hypercubic region :math:`((x_l,x_u)`, :math:`(y_l,y_u), ...)` using +a fixed number of function calls. The routines also provide a +statistical estimate of the error on the result. This error estimate +should be taken as a guide rather than as a strict error bound---random +sampling of the region may not uncover all the important features +of the function, resulting in an underestimate of the error. + +The functions are defined in separate header files for each routine, +:file:`gsl_monte_plain.h`, :file:`gsl_monte_miser.h` and +:file:`gsl_monte_vegas.h`. + +Interface +========= + +All of the Monte Carlo integration routines use the same general form of +interface. There is an allocator to allocate memory for control +variables and workspace, a routine to initialize those control +variables, the integrator itself, and a function to free the space when +done. + +Each integration function requires a random number generator to be +supplied, and returns an estimate of the integral and its standard +deviation. The accuracy of the result is determined by the number of +function calls specified by the user. If a known level of accuracy is +required this can be achieved by calling the integrator several times +and averaging the individual results until the desired accuracy is +obtained. + +Random sample points used within the Monte Carlo routines are always +chosen strictly within the integration region, so that endpoint +singularities are automatically avoided. + +The function to be integrated has its own datatype, defined in the +header file :file:`gsl_monte.h`. + +.. type:: gsl_monte_function + + This data type defines a general function with parameters for Monte + Carlo integration. + + ============================================================ ========================================== + :code:`double (* f) (double * x, size_t dim, void * params)` this function should return the value + :math:`f(x,params)` for the argument + :data:`x` and parameters :data:`params`, + where :data:`x` is an array of size + :data:`dim` giving the coordinates of the + point where the function is to be + evaluated. + + :code:`size_t dim` the number of dimensions for :data:`x`. + :code:`void * params` a pointer to the parameters of the + function. + ============================================================ ========================================== + +Here is an example for a quadratic function in two dimensions, + +.. math:: f(x,y) = a x^2 + b x y + c y^2 + +with :math:`a = 3`, :math:`b = 2`, :math:`c = 1`. The following code +defines a :type:`gsl_monte_function` :code:`F` which you could pass to an +integrator:: + + struct my_f_params { double a; double b; double c; }; + + double + my_f (double x[], size_t dim, void * p) { + struct my_f_params * fp = (struct my_f_params *)p; + + if (dim != 2) + { + fprintf (stderr, "error: dim != 2"); + abort (); + } + + return fp->a * x[0] * x[0] + + fp->b * x[0] * x[1] + + fp->c * x[1] * x[1]; + } + + gsl_monte_function F; + struct my_f_params params = { 3.0, 2.0, 1.0 }; + + F.f = &my_f; + F.dim = 2; + F.params = ¶ms; + +The function :math:`f(x)` can be evaluated using the following macro:: + + #define GSL_MONTE_FN_EVAL(F,x) + (*((F)->f))(x,(F)->dim,(F)->params) + +.. index:: plain Monte Carlo + +PLAIN Monte Carlo +================= + +The plain Monte Carlo algorithm samples points randomly from the +integration region to estimate the integral and its error. Using this +algorithm the estimate of the integral :math:`E(f; N)` for :math:`N` +randomly distributed points :math:`x_i` is given by, + +.. only:: not texinfo + + .. math:: E(f; N) = V \langle f \rangle = {V \over N} \sum_i^N f(x_i) + +.. only:: texinfo + + :: + + E(f; N) = = V = (V / N) \sum_i^N f(x_i) + +where :math:`V` is the volume of the integration region. The error on +this estimate :math:`\sigma(E;N)` is calculated from the estimated +variance of the mean, + +.. only:: not texinfo + + .. math:: \sigma^2 (E; N) = {V^2 \over N^2 } \sum_i^N (f(x_i) - \langle f \rangle)^2. + +.. only:: texinfo + + :: + + \sigma^2 (E; N) = (V^2 / N^2) \sum_i^N (f(x_i) - )^2. + +For large :math:`N` this variance decreases asymptotically as +:math:`\Var(f)/N`, where :math:`\Var(f)` is the true variance of the +function over the integration region. The error estimate itself should +decrease as :math:`\sigma(f)/\sqrt{N}`. +The familiar law of errors +decreasing as :math:`1/\sqrt{N}` +applies---to reduce the error by a +factor of 10 requires a 100-fold increase in the number of sample +points. + +The functions described in this section are declared in the header file +:file:`gsl_monte_plain.h`. + +.. type:: gsl_monte_plain_state + + This is a workspace for plain Monte Carlo integration + +.. function:: gsl_monte_plain_state * gsl_monte_plain_alloc (size_t dim) + + This function allocates and initializes a workspace for Monte Carlo + integration in :data:`dim` dimensions. + +.. function:: int gsl_monte_plain_init (gsl_monte_plain_state* s) + + This function initializes a previously allocated integration state. + This allows an existing workspace to be reused for different + integrations. + +.. function:: int gsl_monte_plain_integrate (gsl_monte_function * f, const double xl[], const double xu[], size_t dim, size_t calls, gsl_rng * r, gsl_monte_plain_state * s, double * result, double * abserr) + + This routines uses the plain Monte Carlo algorithm to integrate the + function :data:`f` over the :data:`dim`-dimensional hypercubic region + defined by the lower and upper limits in the arrays :data:`xl` and + :data:`xu`, each of size :data:`dim`. The integration uses a fixed number + of function calls :data:`calls`, and obtains random sampling points using + the random number generator :data:`r`. A previously allocated workspace + :data:`s` must be supplied. The result of the integration is returned in + :data:`result`, with an estimated absolute error :data:`abserr`. + +.. function:: void gsl_monte_plain_free (gsl_monte_plain_state * s) + + This function frees the memory associated with the integrator state + :data:`s`. + +.. index:: + single: MISER monte carlo integration + single: recursive stratified sampling, MISER + +MISER +===== + +The MISER algorithm of Press and Farrar is based on recursive +stratified sampling. This technique aims to reduce the overall +integration error by concentrating integration points in the regions of +highest variance. + +The idea of stratified sampling begins with the observation that for two +disjoint regions :math:`a` and :math:`b` with Monte Carlo estimates of the +integral :math:`E_a(f)` and :math:`E_b(f)` and variances +:math:`\sigma_a^2(f)` and :math:`\sigma_b^2(f)`, the variance +:math:`\Var(f)` of the combined estimate +:math:`E(f) = {1\over 2} (E_a(f) + E_b(f))` +is given by, + +.. only:: not texinfo + + .. math:: \Var(f) = {\sigma_a^2(f) \over 4 N_a} + {\sigma_b^2(f) \over 4 N_b}. + +.. only:: texinfo + + :: + + \Var(f) = (\sigma_a^2(f) / 4 N_a) + (\sigma_b^2(f) / 4 N_b). + +It can be shown that this variance is minimized by distributing the +points such that, + +.. only:: not texinfo + + .. math:: {N_a \over N_a+N_b} = {\sigma_a \over \sigma_a + \sigma_b}. + +.. only:: texinfo + + :: + + N_a / (N_a + N_b) = \sigma_a / (\sigma_a + \sigma_b). + +Hence the smallest error estimate is obtained by allocating sample +points in proportion to the standard deviation of the function in each +sub-region. + +The MISER algorithm proceeds by bisecting the integration region +along one coordinate axis to give two sub-regions at each step. The +direction is chosen by examining all :math:`d` possible bisections and +selecting the one which will minimize the combined variance of the two +sub-regions. The variance in the sub-regions is estimated by sampling +with a fraction of the total number of points available to the current +step. The same procedure is then repeated recursively for each of the +two half-spaces from the best bisection. The remaining sample points are +allocated to the sub-regions using the formula for :math:`N_a` and +:math:`N_b`. This recursive allocation of integration points continues +down to a user-specified depth where each sub-region is integrated using +a plain Monte Carlo estimate. These individual values and their error +estimates are then combined upwards to give an overall result and an +estimate of its error. + +The functions described in this section are declared in the header file +:file:`gsl_monte_miser.h`. + +.. type:: gsl_monte_miser_state + + This workspace is used for MISER Monte Carlo integration + +.. function:: gsl_monte_miser_state * gsl_monte_miser_alloc (size_t dim) + + This function allocates and initializes a workspace for Monte Carlo + integration in :data:`dim` dimensions. The workspace is used to maintain + the state of the integration. + +.. function:: int gsl_monte_miser_init (gsl_monte_miser_state* s) + + This function initializes a previously allocated integration state. + This allows an existing workspace to be reused for different + integrations. + +.. function:: int gsl_monte_miser_integrate (gsl_monte_function * f, const double xl[], const double xu[], size_t dim, size_t calls, gsl_rng * r, gsl_monte_miser_state * s, double * result, double * abserr) + + This routines uses the MISER Monte Carlo algorithm to integrate the + function :data:`f` over the :data:`dim`-dimensional hypercubic region + defined by the lower and upper limits in the arrays :data:`xl` and + :data:`xu`, each of size :data:`dim`. The integration uses a fixed number + of function calls :data:`calls`, and obtains random sampling points using + the random number generator :data:`r`. A previously allocated workspace + :data:`s` must be supplied. The result of the integration is returned in + :data:`result`, with an estimated absolute error :data:`abserr`. + +.. function:: void gsl_monte_miser_free (gsl_monte_miser_state * s) + + This function frees the memory associated with the integrator state + :data:`s`. + +The MISER algorithm has several configurable parameters which can +be changed using the following two functions [#f1]_. + +.. function:: void gsl_monte_miser_params_get (const gsl_monte_miser_state * s, gsl_monte_miser_params * params) + + This function copies the parameters of the integrator state into the + user-supplied :data:`params` structure. + +.. function:: void gsl_monte_miser_params_set (gsl_monte_miser_state * s, const gsl_monte_miser_params * params) + + This function sets the integrator parameters based on values provided + in the :data:`params` structure. + +Typically the values of the parameters are first read using +:func:`gsl_monte_miser_params_get`, the necessary changes are made to +the fields of the :data:`params` structure, and the values are copied +back into the integrator state using +:func:`gsl_monte_miser_params_set`. The functions use the +:type:`gsl_monte_miser_params` structure which contains the following +fields: + +.. type:: gsl_monte_miser_params + + .. var:: double estimate_frac + + This parameter specifies the fraction of the currently available number of + function calls which are allocated to estimating the variance at each + recursive step. The default value is 0.1. + + .. var:: size_t min_calls + + This parameter specifies the minimum number of function calls required + for each estimate of the variance. If the number of function calls + allocated to the estimate using :data:`estimate_frac` falls below + :data:`min_calls` then :data:`min_calls` are used instead. This ensures + that each estimate maintains a reasonable level of accuracy. The + default value of :data:`min_calls` is :code:`16 * dim`. + + .. var:: size_t min_calls_per_bisection + + This parameter specifies the minimum number of function calls required + to proceed with a bisection step. When a recursive step has fewer calls + available than :data:`min_calls_per_bisection` it performs a plain Monte + Carlo estimate of the current sub-region and terminates its branch of + the recursion. The default value of this parameter is :code:`32 * min_calls`. + + .. var:: double alpha + + This parameter controls how the estimated variances for the two + sub-regions of a bisection are combined when allocating points. With + recursive sampling the overall variance should scale better than + :math:`1/N`, since the values from the sub-regions will be obtained using + a procedure which explicitly minimizes their variance. To accommodate + this behavior the MISER algorithm allows the total variance to + depend on a scaling parameter :math:`\alpha`, + + .. only:: not texinfo + + .. math:: \Var(f) = {\sigma_a \over N_a^\alpha} + {\sigma_b \over N_b^\alpha}. + + .. only:: texinfo + + :: + + \Var(f) = {\sigma_a \over N_a^\alpha} + {\sigma_b \over N_b^\alpha}. + + The authors of the original paper describing MISER recommend the + value :math:`\alpha = 2` as a good choice, obtained from numerical + experiments, and this is used as the default value in this + implementation. + + .. var:: double dither + + This parameter introduces a random fractional variation of size + :data:`dither` into each bisection, which can be used to break the + symmetry of integrands which are concentrated near the exact center of + the hypercubic integration region. The default value of dither is zero, + so no variation is introduced. If needed, a typical value of + :data:`dither` is 0.1. + +.. index:: + single: VEGAS Monte Carlo integration + single: importance sampling, VEGAS + +VEGAS +===== + +The VEGAS algorithm of Lepage is based on importance sampling. It +samples points from the probability distribution described by the +function :math:`|f|`, so that the points are concentrated in the regions +that make the largest contribution to the integral. + +In general, if the Monte Carlo integral of :math:`f` is sampled with +points distributed according to a probability distribution described by +the function :math:`g`, we obtain an estimate :math:`E_g(f; N)`, + +.. math:: E_g(f; N) = E(f/g; N) + +with a corresponding variance, + +.. math:: \Var_g(f; N) = \Var(f/g; N) + +If the probability distribution is chosen as :math:`g = |f|/I(|f|)` then +it can be shown that the variance :math:`V_g(f; N)` vanishes, and the +error in the estimate will be zero. In practice it is not possible to +sample from the exact distribution :math:`g` for an arbitrary function, so +importance sampling algorithms aim to produce efficient approximations +to the desired distribution. + +The VEGAS algorithm approximates the exact distribution by making a +number of passes over the integration region while histogramming the +function :math:`f`. Each histogram is used to define a sampling +distribution for the next pass. Asymptotically this procedure converges +to the desired distribution. In order +to avoid the number of histogram bins growing like :math:`K^d` the +probability distribution is approximated by a separable function: +:math:`g(x_1, x_2, \ldots) = g_1(x_1) g_2(x_2) \ldots` +so that the number of bins required is only :math:`Kd`. +This is equivalent to locating the peaks of the function from the +projections of the integrand onto the coordinate axes. The efficiency +of VEGAS depends on the validity of this assumption. It is most +efficient when the peaks of the integrand are well-localized. If an +integrand can be rewritten in a form which is approximately separable +this will increase the efficiency of integration with VEGAS. + +VEGAS incorporates a number of additional features, and combines both +stratified sampling and importance sampling. The integration region is +divided into a number of "boxes", with each box getting a fixed +number of points (the goal is 2). Each box can then have a fractional +number of bins, but if the ratio of bins-per-box is less than two, Vegas switches to a +kind variance reduction (rather than importance sampling). + +.. type:: gsl_monte_vegas_state + + This workspace is used for VEGAS Monte Carlo integration + +.. function:: gsl_monte_vegas_state * gsl_monte_vegas_alloc (size_t dim) + + This function allocates and initializes a workspace for Monte Carlo + integration in :data:`dim` dimensions. The workspace is used to maintain + the state of the integration. + +.. function:: int gsl_monte_vegas_init (gsl_monte_vegas_state* s) + + This function initializes a previously allocated integration state. + This allows an existing workspace to be reused for different + integrations. + +.. function:: int gsl_monte_vegas_integrate (gsl_monte_function * f, double xl[], double xu[], size_t dim, size_t calls, gsl_rng * r, gsl_monte_vegas_state * s, double * result, double * abserr) + + This routines uses the VEGAS Monte Carlo algorithm to integrate the + function :data:`f` over the :data:`dim`-dimensional hypercubic region + defined by the lower and upper limits in the arrays :data:`xl` and + :data:`xu`, each of size :data:`dim`. The integration uses a fixed number + of function calls :data:`calls`, and obtains random sampling points using + the random number generator :data:`r`. A previously allocated workspace + :data:`s` must be supplied. The result of the integration is returned in + :data:`result`, with an estimated absolute error :data:`abserr`. The result + and its error estimate are based on a weighted average of independent + samples. The chi-squared per degree of freedom for the weighted average + is returned via the state struct component, :code:`s->chisq`, and must be + consistent with 1 for the weighted average to be reliable. + +.. function:: void gsl_monte_vegas_free (gsl_monte_vegas_state * s) + + This function frees the memory associated with the integrator state + :data:`s`. + +The VEGAS algorithm computes a number of independent estimates of the +integral internally, according to the :code:`iterations` parameter +described below, and returns their weighted average. Random sampling of +the integrand can occasionally produce an estimate where the error is +zero, particularly if the function is constant in some regions. An +estimate with zero error causes the weighted average to break down and +must be handled separately. In the original Fortran implementations of +VEGAS the error estimate is made non-zero by substituting a small +value (typically :code:`1e-30`). The implementation in GSL differs from +this and avoids the use of an arbitrary constant---it either assigns +the value a weight which is the average weight of the preceding +estimates or discards it according to the following procedure, + +* current estimate has zero error, weighted average has finite error + + The current estimate is assigned a weight which is the average weight of + the preceding estimates. + +* current estimate has finite error, previous estimates had zero error + + The previous estimates are discarded and the weighted averaging + procedure begins with the current estimate. + +* current estimate has zero error, previous estimates had zero error + + The estimates are averaged using the arithmetic mean, but no error is computed. + +The convergence of the algorithm can be tested using the overall +chi-squared value of the results, which is available from the +following function: + +.. function:: double gsl_monte_vegas_chisq (const gsl_monte_vegas_state * s) + + This function returns the chi-squared per degree of freedom for the + weighted estimate of the integral. The returned value should be close + to 1. A value which differs significantly from 1 indicates that the + values from different iterations are inconsistent. In this case the + weighted error will be under-estimated, and further iterations of the + algorithm are needed to obtain reliable results. + +.. function:: void gsl_monte_vegas_runval (const gsl_monte_vegas_state * s, double * result, double * sigma) + + This function returns the raw (unaveraged) values of the integral + :data:`result` and its error :data:`sigma` from the most recent iteration + of the algorithm. + +The VEGAS algorithm is highly configurable. Several parameters +can be changed using the following two functions. + +.. function:: void gsl_monte_vegas_params_get (const gsl_monte_vegas_state * s, gsl_monte_vegas_params * params) + + This function copies the parameters of the integrator state into the + user-supplied :data:`params` structure. + +.. function:: void gsl_monte_vegas_params_set (gsl_monte_vegas_state * s, const gsl_monte_vegas_params * params) + + This function sets the integrator parameters based on values provided + in the :data:`params` structure. + +Typically the values of the parameters are first read using +:func:`gsl_monte_vegas_params_get`, the necessary changes are made to +the fields of the :data:`params` structure, and the values are copied +back into the integrator state using +:func:`gsl_monte_vegas_params_set`. The functions use the +:type:`gsl_monte_vegas_params` structure which contains the following +fields: + +.. type:: gsl_monte_vegas_params + + .. var:: double alpha + + The parameter :data:`alpha` controls the stiffness of the rebinning + algorithm. It is typically set between one and two. A value of zero + prevents rebinning of the grid. The default value is 1.5. + + .. var:: size_t iterations + + The number of iterations to perform for each call to the routine. The + default value is 5 iterations. + + .. var:: int stage + + Setting this determines the *stage* of the calculation. Normally, + :code:`stage = 0` which begins with a new uniform grid and empty weighted + average. Calling VEGAS with :code:`stage = 1` retains the grid from the + previous run but discards the weighted average, so that one can "tune" + the grid using a relatively small number of points and then do a large + run with :code:`stage = 1` on the optimized grid. Setting :code:`stage = 2` + keeps the grid and the weighted average from the previous run, but + may increase (or decrease) the number of histogram bins in the grid + depending on the number of calls available. Choosing :code:`stage = 3` + enters at the main loop, so that nothing is changed, and is equivalent + to performing additional iterations in a previous call. + + .. var:: int mode + + The possible choices are :macro:`GSL_VEGAS_MODE_IMPORTANCE`, + :macro:`GSL_VEGAS_MODE_STRATIFIED`, :macro:`GSL_VEGAS_MODE_IMPORTANCE_ONLY`. + This determines whether VEGAS will use importance sampling or + stratified sampling, or whether it can pick on its own. In low + dimensions VEGAS uses strict stratified sampling (more precisely, + stratified sampling is chosen if there are fewer than 2 bins per box). + + .. var:: int verbose + FILE * ostream + + These parameters set the level of information printed by VEGAS. All + information is written to the stream :data:`ostream`. The default setting + of :data:`verbose` is :code:`-1`, which turns off all output. A + :data:`verbose` value of :code:`0` prints summary information about the + weighted average and final result, while a value of :code:`1` also + displays the grid coordinates. A value of :code:`2` prints information + from the rebinning procedure for each iteration. + +The above fields and the :data:`chisq` value can also be accessed +directly in the :type:`gsl_monte_vegas_state` but such use is +deprecated. + +Examples +======== + +The example program below uses the Monte Carlo routines to estimate the +value of the following 3-dimensional integral from the theory of random +walks, + +.. only:: not texinfo + + .. math:: + + I = \int_{-\pi}^{+\pi} {dk_x \over 2\pi} + \int_{-\pi}^{+\pi} {dk_y \over 2\pi} + \int_{-\pi}^{+\pi} {dk_z \over 2\pi} + { 1 \over (1 - \cos(k_x)\cos(k_y)\cos(k_z))}. + +.. only:: texinfo + + :: + + I = \int_{-pi}^{+pi} {dk_x/(2 pi)} + \int_{-pi}^{+pi} {dk_y/(2 pi)} + \int_{-pi}^{+pi} {dk_z/(2 pi)} + 1 / (1 - cos(k_x)cos(k_y)cos(k_z)). + +The analytic value of this integral can be shown to be +:math:`I = \Gamma(1/4)^4/(4 \pi^3) = 1.393203929685676859...`. The integral gives +the mean time spent at the origin by a random walk on a body-centered +cubic lattice in three dimensions. + +For simplicity we will compute the integral over the region +:math:`(0,0,0)` to :math:`(\pi,\pi,\pi)` and multiply by 8 to obtain the +full result. The integral is slowly varying in the middle of the region +but has integrable singularities at the corners :math:`(0,0,0)`, +:math:`(0,\pi,\pi)`, :math:`(\pi,0,\pi)` and :math:`(\pi,\pi,0)`. The +Monte Carlo routines only select points which are strictly within the +integration region and so no special measures are needed to avoid these +singularities. + +.. include:: examples/monte.c + :code: + +With 500,000 function calls the plain Monte Carlo algorithm achieves a +fractional error of 1%. The estimated error :code:`sigma` is roughly +consistent with the actual error--the computed result differs from +the true result by about 1.4 standard deviations:: + + plain ================== + result = 1.412209 + sigma = 0.013436 + exact = 1.393204 + error = 0.019005 = 1.4 sigma + +The MISER algorithm reduces the error by a factor of four, and also +correctly estimates the error:: + + miser ================== + result = 1.391322 + sigma = 0.003461 + exact = 1.393204 + error = -0.001882 = 0.54 sigma + +In the case of the VEGAS algorithm the program uses an initial +warm-up run of 10,000 function calls to prepare, or "warm up", the grid. +This is followed by a main run with five iterations of 100,000 function +calls. The chi-squared per degree of freedom for the five iterations are +checked for consistency with 1, and the run is repeated if the results +have not converged. In this case the estimates are consistent on the +first pass:: + + vegas warm-up ================== + result = 1.392673 + sigma = 0.003410 + exact = 1.393204 + error = -0.000531 = 0.16 sigma + converging... + result = 1.393281 sigma = 0.000362 chisq/dof = 1.5 + vegas final ================== + result = 1.393281 + sigma = 0.000362 + exact = 1.393204 + error = 0.000077 = 0.21 sigma + +If the value of :code:`chisq` had differed significantly from 1 it would +indicate inconsistent results, with a correspondingly underestimated +error. The final estimate from VEGAS (using a similar number of +function calls) is significantly more accurate than the other two +algorithms. + +References and Further Reading +============================== + +The MISER algorithm is described in the following article by Press +and Farrar, + +* W.H. Press, G.R. Farrar, *Recursive Stratified Sampling for + Multidimensional Monte Carlo Integration*, + Computers in Physics, v4 (1990), pp190--195. + +The VEGAS algorithm is described in the following papers, + +* G.P. Lepage, + *A New Algorithm for Adaptive Multidimensional Integration*, + Journal of Computational Physics 27, 192--203, (1978) + +* G.P. Lepage, + *VEGAS: An Adaptive Multi-dimensional Integration Program*, + Cornell preprint CLNS 80-447, March 1980 + +.. rubric:: Footnotes + +.. [#f1] The previous method of accessing these fields directly through the + :type:`gsl_monte_miser_state` struct is now deprecated. diff --git a/gsl-2.5/doc/movstat.rst b/gsl-2.5/doc/movstat.rst new file mode 100644 index 00000000..1e1682ac --- /dev/null +++ b/gsl-2.5/doc/movstat.rst @@ -0,0 +1,619 @@ +.. index:: + single: moving window statistics + single: statistics, moving window + single: online statistics + +************************ +Moving Window Statistics +************************ + +This chapter describes routines for computing *moving window +statistics* (also called rolling statistics and running statistics), +using a window around a sample which is used to calculate various +local statistical properties of an input data stream. The window is +then slid forward by one sample to process the next data point and so on. + +The functions described in this chapter are declared in the header file +:file:`gsl_movstat.h`. + +Introduction +============ + +This chapter is concerned with calculating various statistics from +subsets of a given dataset. The main idea is to compute statistics +in the vicinity of a given data sample by defining a *window* which +includes the sample itself as well as some specified number of samples +before and after the sample in question. For a sample :math:`x_i`, we +define a window :math:`W_i^{H,J}` as + +.. only:: not texinfo + + .. math:: W_i^{H,J} = \left\{ x_{i-H}, \dots, x_i, \dots, x_{i+J} \right\} + +.. only:: texinfo + + :: + + W_i^{H,J} = {x_{i-H},...,x_i,...,x_{i+J}} + +The parameters :math:`H` and :math:`J` are non-negative integers specifying +the number of samples to include before and after the sample :math:`x_i`. +Statistics such as the mean and standard deviation of the window :math:`W_i^{H,J}` +may be computed, and then the window is shifted forward by one sample to +focus on :math:`x_{i+1}`. The total number of samples in the window is +:math:`K = H + J + 1`. To define a symmetric window centered on :math:`x_i`, +one would set :math:`H = J = \left\lfloor K / 2 \right\rfloor`. + +Handling Endpoints +================== + +When processing samples near the ends of the input signal, there will not +be enough samples to fill the window :math:`W_i^{H,J}` defined above. +Therefore the user must specify how to construct the windows near the end points. +This is done by passing an input argument of type :type:`gsl_movstat_end_t`: + +.. type:: gsl_movstat_end_t + + This data type specifies how to construct windows near end points and can + be selected from the following choices: + + .. macro:: GSL_MOVSTAT_END_PADZERO + + With this option, a full window of length :math:`K` will be constructed + by inserting zeros into the window near the signal end points. Effectively, + the input signal is modified to + + .. only:: not texinfo + + .. math:: \tilde{x} = \{ \underbrace{0, \dots, 0}_{H \textrm{ zeros}}, x_1, x_2, \dots, x_{n-1}, x_n, \underbrace{0, \dots, 0}_{J \textrm{ zeros} } \} + + .. only:: texinfo + + :: + + x~ = {0, ..., 0, x_1, x_2, ..., x_{n-1}, x_n, 0, ..., 0} + + to ensure a well-defined window for all :math:`x_i`. + + .. macro:: GSL_MOVSTAT_END_PADVALUE + + With this option, a full window of length :math:`K` will be constructed + by padding the window with the first and last sample in the input signal. + Effectively, the input signal is modified to + + .. only:: not texinfo + + .. math:: \tilde{x} = \{ \underbrace{x_1, \dots, x_1}_{H}, x_1, x_2, \dots, x_{n-1}, x_n, \underbrace{x_n, \dots, x_n}_{J} \} + + .. only:: texinfo + + :: + + x~ = {x_1, ..., x_1, x_1, x_2, ..., x_{n-1}, x_n, x_n, ..., x_n} + + .. macro:: GSL_MOVSTAT_END_TRUNCATE + + With this option, no padding is performed, and the windows are simply truncated + as the end points are approached. + +.. index:: + single: moving window, allocation + +Allocation for Moving Window Statistics +======================================= + +.. type:: gsl_movstat_workspace + + The moving window statistical routines use a common workspace. + +.. function:: gsl_movstat_workspace * gsl_movstat_alloc(const size_t K) + + This function allocates a workspace for computing symmetric, centered moving statistics with a window + length of :math:`K` samples. In this case, :math:`H = J = \left\lfloor K/2 \right\rfloor`. The size of the workspace + is :math:`O(7K)`. + +.. function:: gsl_movstat_workspace * gsl_movstat_alloc2(const size_t H, const size_t J) + + This function allocates a workspace for computing moving statistics using a window with :math:`H` + samples prior to the current sample, and :math:`J` samples after the current sample. The + total window size is :math:`K = H + J + 1`. The size of the workspace is :math:`O(7K)`. + +.. function:: void * gsl_movstat_free(gsl_movstat_workspace * w) + + This function frees the memory associated with :data:`w`. + +.. index:: + single: moving mean + single: rolling mean + +Moving Mean +=========== + +The moving window mean calculates the mean of the values of each window :math:`W_i^{H,J}`. + +.. only:: not texinfo + + .. math:: \hat{\mu}_i = \frac{1}{\left| W_i^{H,J} \right|} \sum_{x_m \in W_i^{H,J}} x_m + +.. only:: texinfo + + :: + + \hat{\mu}_i = 1/| W_i^{H,J} | \sum_{x_m \in W_i^{H,J}} x_m + +Here, :math:`\left| W_i^{H,J} \right|` represents the number of elements in the window +:math:`W_i^{H,J}`. This will normally be :math:`K`, unless the :macro:`GSL_MOVSTAT_END_TRUNCATE` +option is selected, in which case it could be less than :math:`K` near the signal end points. + +.. function:: int gsl_movstat_mean(const gsl_movstat_end_t endtype, const gsl_vector * x, gsl_vector * y, gsl_movstat_workspace * w) + + This function computes the moving window mean of the input vector :data:`x`, storing + the output in :data:`y`. The parameter :data:`endtype` specifies how windows near + the ends of the input should be handled. It is allowed to have :data:`x` = :data:`y` + for an in-place moving mean. + +.. index:: + single: moving variance + single: moving standard deviation + single: rolling variance + single: rolling standard deviation + +Moving Variance and Standard Deviation +====================================== + +The moving window variance calculates the *sample variance* of the values of each window :math:`W_i^{H,J}`, +defined by + +.. only:: not texinfo + + .. math:: \hat{\sigma}_i^2 = \frac{1}{\left( \left| W_i^{H,J} \right| - 1 \right)} \sum_{x_m \in W_i^{H,J}} \left( x_m - \hat{\mu}_i \right)^2 + +.. only:: texinfo + + :: + + \hat{\sigma}_i^2 = 1/(|W_i^{H,J}| - 1) \sum_{x_m \in W_i^{H,J}} ( x_m - \hat{\mu}_i )^2 + +where :math:`\hat{\mu}_i` is the mean of :math:`W_i^{H,J}` defined above. The standard deviation :math:`\hat{\sigma}_i` +is the square root of the variance. + +.. function:: int gsl_movstat_variance(const gsl_movstat_end_t endtype, const gsl_vector * x, gsl_vector * y, gsl_movstat_workspace * w) + + This function computes the moving window variance of the input vector :data:`x`, storing + the output in :data:`y`. The parameter :data:`endtype` specifies how windows near + the ends of the input should be handled. It is allowed to have :data:`x` = :data:`y` + for an in-place moving variance. + +.. function:: int gsl_movstat_sd(const gsl_movstat_end_t endtype, const gsl_vector * x, gsl_vector * y, gsl_movstat_workspace * w) + + This function computes the moving window standard deviation of the input vector :data:`x`, storing + the output in :data:`y`. The parameter :data:`endtype` specifies how windows near + the ends of the input should be handled. It is allowed to have :data:`x` = :data:`y` + for an in-place moving standard deviation. + +.. index:: + single: moving minimum + single: moving maximum + single: rolling minimum + single: rolling maximum + +Moving Minimum and Maximum +========================== + +The moving minimum/maximum calculates the minimum and maximum values of +each window :math:`W_i^{H,J}`. + +.. only:: not texinfo + + .. math:: + + y_i^{min} &= \min \left( W_i^{H,J} \right) \\ + y_i^{max} &= \max \left( W_i^{H,J} \right) + +.. only:: texinfo + + :: + + y_i^{min} = \min W_i^{H,J} + y_i^{max} = \max W_i^{H,J} + +.. function:: int gsl_movstat_min(const gsl_movstat_end_t endtype, const gsl_vector * x, gsl_vector * y, gsl_movstat_workspace * w) + + This function computes the moving minimum of the input vector :data:`x`, storing + the result in :data:`y`. The parameter :data:`endtype` specifies how windows near + the ends of the input should be handled. + It is allowed to have :data:`x` = :data:`y` for an in-place moving minimum. + +.. function:: int gsl_movstat_max(const gsl_movstat_end_t endtype, const gsl_vector * x, gsl_vector * y, gsl_movstat_workspace * w) + + This function computes the moving maximum of the input vector :data:`x`, storing + the result in :data:`y`. The parameter :data:`endtype` specifies how windows near + the ends of the input should be handled. + It is allowed to have :data:`x` = :data:`y` for an in-place moving maximum. + +.. function:: int gsl_movstat_minmax(const gsl_movstat_end_t endtype, const gsl_vector * x, gsl_vector * y_min, gsl_vector * y_max, gsl_movstat_workspace * w) + + This function computes the moving minimum and maximum of the input vector :data:`x`, storing + the window minimums in :data:`y_min` and the window maximums in :data:`y_max`. + The parameter :data:`endtype` specifies how windows near the ends of the input should be handled. + +.. index:: + single: moving sum + single: rolling sum + +Moving Sum +========== + +The moving window sum calculates the sum of the values of each window :math:`W_i^{H,J}`. + +.. math:: y_i = \sum_{x_m \in W_i^{H,J}} x_m + +.. function:: int gsl_movstat_sum(const gsl_movstat_end_t endtype, const gsl_vector * x, gsl_vector * y, gsl_movstat_workspace * w) + + This function computes the moving window sum of the input vector :data:`x`, storing + the output in :data:`y`. The parameter :data:`endtype` specifies how windows near + the ends of the input should be handled. It is allowed to have :data:`x` = :data:`y` + for an in-place moving sum. + +.. index:: + single: moving median + single: rolling median + +Moving Median +============= + +The moving median calculates the median of the window :math:`W_i^{H,J}` for +each sample :math:`x_i`: + +.. only:: not texinfo + + .. math:: y_i = \textrm{median} \left( W_i^{H,J} \right) + +.. only:: texinfo + + :: + + y_i = median(W_i^{H,J}) + +.. function:: int gsl_movstat_median(const gsl_movstat_end_t endtype, const gsl_vector * x, gsl_vector * y, gsl_movstat_workspace * w) + + This function computes the moving median of the input vector :data:`x`, storing + the output in :data:`y`. The parameter :data:`endtype` specifies how windows near + the ends of the input should be handled. It is allowed for + :data:`x` = :data:`y` for an in-place moving window median. + +Robust Scale Estimation +======================= + +A common problem in statistics is to quantify the dispersion (also known as the variability, scatter, and spread) of +a set of data. Often this is done by calculating the variance or standard deviation. However these statistics +are strongly influenced by outliers, and can often provide erroneous results when even a small number of outliers +are present. + +Several useful statistics have emerged to provide robust estimates of scale which are not as susceptible to data outliers. +A few of these statistical scale estimators are described below. + +.. index:: + single: moving median absolute deviation + single: rolling median absolute deviation + +Moving MAD +---------- + +The median absolute deviation (MAD) for the window :math:`W_i^{H,J}` is defined +to be the median of the absolute deviations from the window's median: + +.. only:: not texinfo + + .. math:: MAD_i = 1.4826 \times \textrm{median} \left( \left| W_i^{H,J} - \textrm{median} \left( W_i^{H,J} \right) \right| \right) + +.. only:: texinfo + + :: + + MAD_i = 1.4826 * median[ |W_i^{H,J} - median(W_i^{H,J})| ] + +The factor of :math:`1.4826` makes the MAD an unbiased estimator of the standard deviation +for Gaussian data. The MAD has an efficiency of 37%. See :ref:`here ` for more information. + +.. function:: int gsl_movstat_mad0(const gsl_movstat_end_t endtype, const gsl_vector * x, gsl_vector * xmedian, gsl_vector * xmad, gsl_movstat_workspace * w) + int gsl_movstat_mad(const gsl_movstat_end_t endtype, const gsl_vector * x, gsl_vector * xmedian, gsl_vector * xmad, gsl_movstat_workspace * w) + + These functions compute the moving MAD of the input vector :data:`x` and store the result + in :data:`xmad`. The medians of each window :math:`W_i^{H,J}` are stored in :data:`xmedian` + on output. The inputs :data:`x`, :data:`xmedian`, and :data:`xmad` must all be the same length. + The parameter :data:`endtype` specifies how windows near the ends of the input should be handled. + The function :code:`mad0` does not include the scale factor of :math:`1.4826`, while the + function :code:`mad` does include this factor. + +.. index:: + single: moving quantile range + single: rolling quantile range + +Moving QQR +---------- + +The q-quantile range (QQR) is the difference between the :math:`(1-q)` and :math:`q` quantiles +of a set of data, + +.. math:: QQR = Q_{1-q} - Q_q + +The case :math:`q = 0.25` corresponds to the well-known *interquartile range (IQR)*, which +is the difference between the 75th and 25th percentiles of a set of data. The QQR is +a *trimmed estimator*, the main idea being to discard the largest and smallest values in +a data window and compute a scale estimate from the remaining middle values. In the case +of the IQR, the largest and smallest 25% of the data are discarded and the scale is +estimated from the remaining (middle) 50%. + +.. function:: int gsl_movstat_qqr(const gsl_movstat_end_t endtype, const gsl_vector * x, const double q, gsl_vector * xqqr, gsl_movstat_workspace * w) + + This function computes the moving QQR of the input vector :data:`x` and stores the q-quantile ranges + of each window :math:`W_i^{H,J}` in :data:`xqqr`. The quantile parameter :data:`q` must be between + :math:`0` and :math:`0.5`. The input :math:`q = 0.25` corresponds to the IQR. + The inputs :data:`x` and :data:`xqqr` must be the same length. + The parameter :data:`endtype` specifies how windows near the ends of the input should be handled. + +Moving :math:`S_n` +------------------ + +The :math:`S_n` statistic proposed by Croux and Rousseeuw is based on pairwise differences between +all samples in the window. It has an efficiency of 58%, significantly higher than the MAD. +See :ref:`here ` for more information. + +.. function:: int gsl_movstat_Sn(const gsl_movstat_end_t endtype, const gsl_vector * x, gsl_vector * xscale, gsl_movstat_workspace * w) + + This function computes the moving :math:`S_n` of the input vector :data:`x` and stores the output + in :data:`xscale`. The inputs :data:`x` and :data:`xscale` must be the same length. + The parameter :data:`endtype` specifies how windows near the ends of the input should be handled. + It is allowed for :data:`x` = :data:`xscale` for an in-place moving window :math:`S_n`. + +Moving :math:`Q_n` +------------------ + +The :math:`Q_n` statistic proposed by Croux and Rousseeuw is loosely based on the Hodges-Lehmann location +estimator. It has a relatively high efficiency of 82%. See :ref:`here ` for more information. + +.. function:: int gsl_movstat_Qn(const gsl_movstat_end_t endtype, const gsl_vector * x, gsl_vector * xscale, gsl_movstat_workspace * w) + + This function computes the moving :math:`Q_n` of the input vector :data:`x` and stores the output + in :data:`xscale`. The inputs :data:`x` and :data:`xscale` must be the same length. + The parameter :data:`endtype` specifies how windows near the ends of the input should be handled. + It is allowed for :data:`x` = :data:`xscale` for an in-place moving window :math:`Q_n`. + +.. index:: + single: moving window accumulators + single: rolling window accumulators + +User-defined Moving Statistics +============================== + +GSL offers an interface for users to define their own moving window statistics +functions, without needing to implement the edge-handling and accumulator +machinery. This can be done by explicitly constructing the windows +:math:`W_i^{H,J}` for a given input signal (:func:`gsl_movstat_fill`), or by calculating a user-defined +function for each window automatically. In order to apply a user-defined +function to each window, users must define a variable of type +:type:`gsl_movstat_function` to pass into :func:`gsl_movstat_apply`. +This structure is defined as follows. + +.. type:: gsl_movstat_function + + Structure specifying user-defined moving window statistical function:: + + typedef struct + { + double (* function) (const size_t n, double x[], void * params); + void * params; + } gsl_movstat_function; + + This structure contains a pointer to the user-defined function as well + as possible parameters to pass to the function. + + .. member:: double (* function) (const size_t n, double x[], void * params) + + This function returns the user-defined statistic of the array :data:`x` + of length :data:`n`. User-specified parameters are passed in via :data:`params`. + It is allowed to modify the array :data:`x`. + + .. member:: void * params + + User-specified parameters to be passed into the function. + +.. function:: int gsl_movstat_apply(const gsl_movstat_end_t endtype, const gsl_movstat_function * F, const gsl_vector * x, gsl_vector * y, gsl_movstat_workspace * w) + + This function applies the user-defined moving window statistic specified in :data:`F` + to the input vector :data:`x`, storing the output in :data:`y`. + The parameter :data:`endtype` specifies how windows near the ends of the input should be handled. + It is allowed for :data:`x` = :data:`y` for an in-place moving window calculation. + +.. function:: size_t gsl_movstat_fill(const gsl_movstat_end_t endtype, const gsl_vector * x, const size_t idx, const size_t H, const size_t J, double * window) + + This function explicitly constructs the sliding window for the input vector :data:`x` which + is centered on the sample :data:`idx`. On output, the array :data:`window` will contain + :math:`W_{idx}^{H,J}`. The number of samples to the left and right + of the sample :data:`idx` are specified by :data:`H` and :data:`J` respectively. + The parameter :data:`endtype` specifies how windows near the ends of the input should be handled. + The function returns the size of the window. + +Accumulators +============ + +Many of the algorithms of this chapter are based on an accumulator design, which +process the input vector one sample at a time, updating calculations of the +desired statistic for the current window. Each accumulator is stored in the +following structure: + +.. type:: gsl_movstat_accum + + Structure specifying accumulator for moving window statistics:: + + typedef struct + { + size_t (* size) (const size_t n); + int (* init) (const size_t n, void * vstate); + int (* insert) (const double x, void * vstate); + int (* delete) (void * vstate); + int (* get) (void * params, double * result, const void * vstate); + } gsl_movstat_accum; + + The structure contains function pointers responsible for performing + different tasks for the accumulator. + + .. member:: size_t (* size) (const size_t n) + + This function returns the size of the workspace (in bytes) needed by the accumulator + for a moving window of length :data:`n`. + + .. member:: int (* init) (const size_t n, void * vstate) + + This function initializes the workspace :data:`vstate` for a moving window of length :data:`n`. + + .. member:: int (* insert) (const double x, void * vstate) + + This function inserts a single sample :data:`x` into the accumulator, updating internal + calculations of the desired statistic. If the accumulator is full (i.e. :math:`n` samples + have already been inserted), then the oldest sample is deleted from the accumulator. + + .. member:: int (* delete) (void * vstate) + + This function deletes the oldest sample from the accumulator, updating internal + calculations of the desired statistic. + + .. member:: int (* get) (void * params, double * result, const void * vstate) + + This function stores the desired statistic for the current window in + :data:`result`. The input :data:`params` specifies optional parameters + for calculating the statistic. + +The following accumulators of type :type:`gsl_movstat_accum` are defined by GSL to perform moving window statistics +calculations. + +.. var:: gsl_movstat_accum_min + gsl_movstat_accum_max + gsl_movstat_accum_minmax + + These accumulators calculate moving window minimum/maximums efficiently, using + the algorithm of D. Lemire. + +.. var:: gsl_movstat_accum_mean + gsl_movstat_accum_sd + gsl_movstat_accum_variance + + These accumulators calculate the moving window mean, standard deviation, and variance, + using the algorithm of B. P. Welford. + +.. var:: gsl_movstat_median + + This accumulator calculates the moving window median using the min/max heap algorithm + of Härdle and Steiger. + +.. var:: gsl_movstat_accum_Sn + gsl_movstat_accum_Qn + + These accumulators calculate the moving window :math:`S_n` and :math:`Q_n` statistics + developed by Croux and Rousseeuw. + +.. var:: gsl_movstat_accum_sum + + This accumulator calculates the moving window sum. + +.. var:: gsl_movstat_accum_qqr + + This accumulator calculates the moving window q-quantile range. + +Examples +======== + +Example 1 +--------- + +The following example program computes the moving mean, minimum and maximum of a noisy +sinusoid signal of length :math:`N = 500` with a symmetric moving window of size :math:`K = 11`. + +.. _fig_movstat1: + +.. figure:: /images/movstat1.png + :scale: 60% + + Original signal time series (gray) with moving mean (green), moving minimum (blue), + and moving maximum (orange). + +The program is given below. + +.. include:: examples/movstat1.c + :code: + +Example 2: Robust Scale +----------------------- + +The following example program analyzes a time series of length :math:`N = 1000` composed +of Gaussian random variates with zero mean whose standard deviation changes in a piecewise constant fashion +as shown in the table below. + +============ ============== +Sample Range :math:`\sigma` +============ ============== +1-200 1.0 +201-450 5.0 +451-600 1.0 +601-850 3.0 +851-1000 5.0 +============ ============== + +Additionally, about 1% of the samples are perturbed to represent outliers by adding +:math:`\pm 15` to the random Gaussian variate. +The program calculates the moving statistics MAD, IQR, :math:`S_n`, :math:`Q_n`, and +the standard deviation using a symmetric moving window of length :math:`K = 41`. The results are shown in +:numref:`fig_movstat2`. + +.. _fig_movstat2: + +.. figure:: /images/movstat2.png + :scale: 60% + + Top: time series of piecewise constant variance. Bottom: scale estimates using a moving + window; the true sigma value is in light blue, MAD in green, IQR in red, :math:`S_n` in yellow, and + :math:`Q_n` in dark blue. The moving standard deviation is shown in gray. + +The robust statistics follow the true standard deviation piecewise changes well, without being +influenced by the outliers. The moving standard deviation (gray curve) is heavily influenced by +the presence of the outliers. The program is given below. + +.. include:: examples/movstat2.c + :code: + +Example 3: User-defined Moving Window +------------------------------------- + +This example program illustrates how a user can define their own moving window function to apply +to an input vector. It constructs a random noisy time series of length :math:`N = 1000` with +some outliers added. Then it applies a moving window trimmed mean to the time series with +trim parameter :math:`\alpha = 0.1`. The length of the moving window is :math:`K = 11`, so +the smallest and largest sample of each window is discarded prior to computing the mean. +The results are shown in :numref:`fig_movstat3`. + +.. _fig_movstat3: + +.. figure:: /images/movstat3.png + :scale: 60% + + Noisy time series data (black) with moving window trimmed mean (red) + +The program is given below. + +.. include:: examples/movstat3.c + :code: + +References and Further Reading +============================== + +The following publications are relevant to the algorithms described +in this chapter, + +* W.Hardle and W. Steiger, *Optimal Median Smoothing*, Appl. Statist., 44 (2), 1995. + +* D. Lemire, *Streaming Maximum-Minimum Filter Using No More than Three Comparisons per Element*, + Nordic Journal of Computing, 13 (4), 2006 (https://arxiv.org/abs/cs/0610046). + +* B. P. Welford, *Note on a method for calculating corrected sums of squares and products*, + Technometrics, 4 (3), 1962. diff --git a/gsl-2.5/doc/multimin.rst b/gsl-2.5/doc/multimin.rst new file mode 100644 index 00000000..d3ae0f25 --- /dev/null +++ b/gsl-2.5/doc/multimin.rst @@ -0,0 +1,567 @@ +.. index:: + single: minimization, multidimensional + +***************************** +Multidimensional Minimization +***************************** + +This chapter describes routines for finding minima of arbitrary +multidimensional functions. The library provides low level components +for a variety of iterative minimizers and convergence tests. These can +be combined by the user to achieve the desired solution, while providing +full access to the intermediate steps of the algorithms. Each class of +methods uses the same framework, so that you can switch between +minimizers at runtime without needing to recompile your program. Each +instance of a minimizer keeps track of its own state, allowing the +minimizers to be used in multi-threaded programs. The minimization +algorithms can be used to maximize a function by inverting its sign. + +The header file :file:`gsl_multimin.h` contains prototypes for the +minimization functions and related declarations. + +Overview +======== + +The problem of multidimensional minimization requires finding a point +:math:`x` such that the scalar function, + +.. math:: f(x_1, \dots, x_n) + +takes a value which is lower than at any neighboring point. For smooth +functions the gradient :math:`g = \nabla f` vanishes at the minimum. In +general there are no bracketing methods available for the +minimization of :math:`n`-dimensional functions. The algorithms +proceed from an initial guess using a search algorithm which attempts +to move in a downhill direction. + +Algorithms making use of the gradient of the function perform a +one-dimensional line minimisation along this direction until the lowest +point is found to a suitable tolerance. The search direction is then +updated with local information from the function and its derivatives, +and the whole process repeated until the true :math:`n`-dimensional +minimum is found. + +Algorithms which do not require the gradient of the function use +different strategies. For example, the Nelder-Mead Simplex algorithm +maintains :math:`n+1` trial parameter vectors as the vertices of a +:math:`n`-dimensional simplex. On each iteration it tries to improve +the worst vertex of the simplex by geometrical transformations. The +iterations are continued until the overall size of the simplex has +decreased sufficiently. + +Both types of algorithms use a standard framework. The user provides a +high-level driver for the algorithms, and the library provides the +individual functions necessary for each of the steps. There are three +main phases of the iteration. The steps are, + +* initialize minimizer state, :data:`s`, for algorithm :data:`T` +* update :data:`s` using the iteration :data:`T` +* test :data:`s` for convergence, and repeat iteration if necessary + +Each iteration step consists either of an improvement to the +line-minimisation in the current direction or an update to the search +direction itself. The state for the minimizers is held in a +:type:`gsl_multimin_fdfminimizer` struct or a +:type:`gsl_multimin_fminimizer` struct. + +.. index:: + single: Multimin, caveats + +Caveats +======= + +Note that the minimization algorithms can only search for one local +minimum at a time. When there are several local minima in the search +area, the first minimum to be found will be returned; however it is +difficult to predict which of the minima this will be. In most cases, +no error will be reported if you try to find a local minimum in an area +where there is more than one. + +It is also important to note that the minimization algorithms find local +minima; there is no way to determine whether a minimum is a global +minimum of the function in question. + +Initializing the Multidimensional Minimizer +=========================================== + +The following function initializes a multidimensional minimizer. The +minimizer itself depends only on the dimension of the problem and the +algorithm and can be reused for different problems. + +.. type:: gsl_multimin_fdfminimizer + + This is a workspace for minimizing functions using derivatives. + +.. type:: gsl_multimin_fminimizer + + This is a workspace for minimizing functions without derivatives. + +.. function:: gsl_multimin_fdfminimizer * gsl_multimin_fdfminimizer_alloc (const gsl_multimin_fdfminimizer_type * T, size_t n) + gsl_multimin_fminimizer * gsl_multimin_fminimizer_alloc (const gsl_multimin_fminimizer_type * T, size_t n) + + This function returns a pointer to a newly allocated instance of a + minimizer of type :data:`T` for an :data:`n`-dimension function. If there + is insufficient memory to create the minimizer then the function returns + a null pointer and the error handler is invoked with an error code of + :macro:`GSL_ENOMEM`. + +.. function:: int gsl_multimin_fdfminimizer_set (gsl_multimin_fdfminimizer * s, gsl_multimin_function_fdf * fdf, const gsl_vector * x, double step_size, double tol) + int gsl_multimin_fminimizer_set (gsl_multimin_fminimizer * s, gsl_multimin_function * f, const gsl_vector * x, const gsl_vector * step_size) + + The function :func:`gsl_multimin_fdfminimizer_set` initializes the minimizer :data:`s` to minimize the function + :data:`fdf` starting from the initial point :data:`x`. The size of the + first trial step is given by :data:`step_size`. The accuracy of the line + minimization is specified by :data:`tol`. The precise meaning of this + parameter depends on the method used. Typically the line minimization + is considered successful if the gradient of the function :math:`g` is + orthogonal to the current search direction :math:`p` to a relative + accuracy of :data:`tol`, where :math:`p \cdot g < tol |p| |g|`. + A :data:`tol` value of 0.1 is + suitable for most purposes, since line minimization only needs to + be carried out approximately. Note that setting :data:`tol` to zero will + force the use of "exact" line-searches, which are extremely expensive. + + The function :func:`gsl_multimin_fminimizer_set` initializes the minimizer :data:`s` to minimize the function + :data:`f`, starting from the initial point + :data:`x`. The size of the initial trial steps is given in vector + :data:`step_size`. The precise meaning of this parameter depends on the + method used. + +.. function:: void gsl_multimin_fdfminimizer_free (gsl_multimin_fdfminimizer * s) + void gsl_multimin_fminimizer_free (gsl_multimin_fminimizer * s) + + This function frees all the memory associated with the minimizer + :data:`s`. + +.. function:: const char * gsl_multimin_fdfminimizer_name (const gsl_multimin_fdfminimizer * s) + const char * gsl_multimin_fminimizer_name (const gsl_multimin_fminimizer * s) + + This function returns a pointer to the name of the minimizer. For example:: + + printf ("s is a '%s' minimizer\n", gsl_multimin_fdfminimizer_name (s)); + + would print something like :code:`s is a 'conjugate_pr' minimizer`. + +Providing a function to minimize +================================ + +You must provide a parametric function of :math:`n` variables for the +minimizers to operate on. You may also need to provide a routine which +calculates the gradient of the function and a third routine which +calculates both the function value and the gradient together. In order +to allow for general parameters the functions are defined by the +following data types: + +.. type:: gsl_multimin_function_fdf + + This data type defines a general function of :math:`n` variables with + parameters and the corresponding gradient vector of derivatives, + + :code:`double (* f) (const gsl_vector * x, void * params)` + + this function should return the result + :math:`f(x,params)` for argument :data:`x` and parameters :data:`params`. + If the function cannot be computed, an error value of :macro:`GSL_NAN` + should be returned. + + :code:`void (* df) (const gsl_vector * x, void * params, gsl_vector * g)` + + this function should store the :data:`n`-dimensional gradient + + .. only:: not texinfo + + .. math:: g_i = \partial f(x,\hbox{\it params}) / \partial x_i + + .. only:: texinfo + + :: + + g_i = d f(x,params) / d x_i + + in the vector :data:`g` for argument :data:`x` + and parameters :data:`params`, returning an appropriate error code if the + function cannot be computed. + + :code:`void (* fdf) (const gsl_vector * x, void * params, double * f, gsl_vector * g)` + + This function should set the values of the :data:`f` and :data:`g` as above, + for arguments :data:`x` and parameters :data:`params`. This function + provides an optimization of the separate functions for :math:`f(x)` and + :math:`g(x)`---it is always faster to compute the function and its + derivative at the same time. + + :code:`size_t n` + + the dimension of the system, i.e. the number of components of the + vectors :data:`x`. + + :code:`void * params` + + a pointer to the parameters of the function. + +.. type:: gsl_multimin_function + + This data type defines a general function of :math:`n` variables with + parameters, + + :code:`double (* f) (const gsl_vector * x, void * params)` + + this function should return the result + :math:`f(x,params)` for argument :data:`x` and parameters :data:`params`. + If the function cannot be computed, an error value of :macro:`GSL_NAN` + should be returned. + + :code:`size_t n` + + the dimension of the system, i.e. the number of components of the + vectors :data:`x`. + + :code:`void * params` + + a pointer to the parameters of the function. + +.. _multimin-paraboloid: + +The following example function defines a simple two-dimensional +paraboloid with five parameters, + +.. include:: examples/multiminfn.c + :code: + +The function can be initialized using the following code:: + + gsl_multimin_function_fdf my_func; + + /* Paraboloid center at (1,2), scale factors (10, 20), + minimum value 30 */ + double p[5] = { 1.0, 2.0, 10.0, 20.0, 30.0 }; + + my_func.n = 2; /* number of function components */ + my_func.f = &my_f; + my_func.df = &my_df; + my_func.fdf = &my_fdf; + my_func.params = (void *)p; + +Iteration +========= + +The following function drives the iteration of each algorithm. The +function performs one iteration to update the state of the minimizer. +The same function works for all minimizers so that different methods can +be substituted at runtime without modifications to the code. + +.. function:: int gsl_multimin_fdfminimizer_iterate (gsl_multimin_fdfminimizer * s) + int gsl_multimin_fminimizer_iterate (gsl_multimin_fminimizer * s) + + These functions perform a single iteration of the minimizer :data:`s`. + If the iteration encounters an unexpected problem then an error code + will be returned. The error code :macro:`GSL_ENOPROG` signifies that + the minimizer is unable to improve on its current estimate, either due + to numerical difficulty or because a genuine local minimum has been + reached. + +The minimizer maintains a current best estimate of the minimum at all +times. This information can be accessed with the following auxiliary +functions, + +.. function:: gsl_vector * gsl_multimin_fdfminimizer_x (const gsl_multimin_fdfminimizer * s) + gsl_vector * gsl_multimin_fminimizer_x (const gsl_multimin_fminimizer * s) + double gsl_multimin_fdfminimizer_minimum (const gsl_multimin_fdfminimizer * s) + double gsl_multimin_fminimizer_minimum (const gsl_multimin_fminimizer * s) + gsl_vector * gsl_multimin_fdfminimizer_gradient (const gsl_multimin_fdfminimizer * s) + gsl_vector * gsl_multimin_fdfminimizer_dx (const gsl_multimin_fdfminimizer * s) + double gsl_multimin_fminimizer_size (const gsl_multimin_fminimizer * s) + + These functions return the current best estimate of the location of the + minimum, the value of the function at that point, its gradient, the last + step increment of the estimate, and minimizer specific characteristic size for the minimizer :data:`s`. + +.. function:: int gsl_multimin_fdfminimizer_restart (gsl_multimin_fdfminimizer * s) + + This function resets the minimizer :data:`s` to use the current point as a + new starting point. + +Stopping Criteria +================= + +A minimization procedure should stop when one of the following +conditions is true: + +* A minimum has been found to within the user-specified precision. +* A user-specified maximum number of iterations has been reached. +* An error has occurred. + +The handling of these conditions is under user control. The functions +below allow the user to test the precision of the current result. + +.. function:: int gsl_multimin_test_gradient (const gsl_vector * g, double epsabs) + + This function tests the norm of the gradient :data:`g` against the + absolute tolerance :data:`epsabs`. The gradient of a multidimensional + function goes to zero at a minimum. The test returns :macro:`GSL_SUCCESS` + if the following condition is achieved, + + .. only:: not texinfo + + .. math:: |g| < \hbox{\it epsabs} + + .. only:: texinfo + + :: + + |g| < epsabs + + and returns :macro:`GSL_CONTINUE` otherwise. A suitable choice of + :data:`epsabs` can be made from the desired accuracy in the function for + small variations in :math:`x`. The relationship between these quantities + is given by :math:`\delta{f} = g\,\delta{x}`. + +.. function:: int gsl_multimin_test_size (const double size, double epsabs) + + This function tests the minimizer specific characteristic + size (if applicable to the used minimizer) against absolute tolerance :data:`epsabs`. + The test returns :macro:`GSL_SUCCESS` if the size is smaller than tolerance, + otherwise :macro:`GSL_CONTINUE` is returned. + +Algorithms with Derivatives +=========================== + +There are several minimization methods available. The best choice of +algorithm depends on the problem. The algorithms described in this +section use the value of the function and its gradient at each +evaluation point. + +.. type:: gsl_multimin_fdfminimizer_type + + This type specifies a minimization algorithm using gradients. + + .. index:: + single: Fletcher-Reeves conjugate gradient algorithm, minimization + single: Conjugate gradient algorithm, minimization + single: minimization, conjugate gradient algorithm + + .. var:: gsl_multimin_fdfminimizer_conjugate_fr + + This is the Fletcher-Reeves conjugate gradient algorithm. The conjugate + gradient algorithm proceeds as a succession of line minimizations. The + sequence of search directions is used to build up an approximation to the + curvature of the function in the neighborhood of the minimum. + + An initial search direction :data:`p` is chosen using the gradient, and line + minimization is carried out in that direction. The accuracy of the line + minimization is specified by the parameter :data:`tol`. The minimum + along this line occurs when the function gradient :data:`g` and the search direction + :data:`p` are orthogonal. The line minimization terminates when + :math:`p\cdot g < tol |p| |g|`. The + search direction is updated using the Fletcher-Reeves formula + :math:`p' = g' - \beta g` where :math:`\beta=-|g'|^2/|g|^2`, and + the line minimization is then repeated for the new search + direction. + + .. index:: + single: Polak-Ribiere algorithm, minimization + single: minimization, Polak-Ribiere algorithm + + .. var:: gsl_multimin_fdfminimizer_conjugate_pr + + This is the Polak-Ribiere conjugate gradient algorithm. It is similar + to the Fletcher-Reeves method, differing only in the choice of the + coefficient :math:`\beta`. Both methods work well when the evaluation + point is close enough to the minimum of the objective function that it + is well approximated by a quadratic hypersurface. + + .. index:: + single: BFGS algorithm, minimization + single: minimization, BFGS algorithm + + .. var:: gsl_multimin_fdfminimizer_vector_bfgs2 + gsl_multimin_fdfminimizer_vector_bfgs + + These methods use the vector Broyden-Fletcher-Goldfarb-Shanno (BFGS) + algorithm. This is a quasi-Newton method which builds up an approximation + to the second derivatives of the function :math:`f` using the difference + between successive gradient vectors. By combining the first and second + derivatives the algorithm is able to take Newton-type steps towards the + function minimum, assuming quadratic behavior in that region. + + The :code:`bfgs2` version of this minimizer is the most efficient + version available, and is a faithful implementation of the line + minimization scheme described in Fletcher's *Practical Methods of + Optimization*, Algorithms 2.6.2 and 2.6.4. It supersedes the original + :code:`bfgs` routine and requires substantially fewer function and + gradient evaluations. The user-supplied tolerance :data:`tol` + corresponds to the parameter :math:`\sigma` used by Fletcher. A value + of 0.1 is recommended for typical use (larger values correspond to + less accurate line searches). + + .. index:: + single: steepest descent algorithm, minimization + single: minimization, steepest descent algorithm + + .. var:: gsl_multimin_fdfminimizer_steepest_descent + + The steepest descent algorithm follows the downhill gradient of the + function at each step. When a downhill step is successful the step-size + is increased by a factor of two. If the downhill step leads to a higher + function value then the algorithm backtracks and the step size is + decreased using the parameter :data:`tol`. A suitable value of :data:`tol` + for most applications is 0.1. The steepest descent method is + inefficient and is included only for demonstration purposes. + +Algorithms without Derivatives +============================== + +The algorithms described in this section use only the value of the function +at each evaluation point. + +.. type:: gsl_multimin_fminimizer_type + + This type specifies minimization algorithms which do not use gradients. + + .. index:: + single: Nelder-Mead simplex algorithm for minimization + single: simplex algorithm, minimization + single: minimization, simplex algorithm + + .. var:: gsl_multimin_fminimizer_nmsimplex2 + gsl_multimin_fminimizer_nmsimplex + + These methods use the Simplex algorithm of Nelder and Mead. + Starting from the initial vector :math:`x = p_0`, the algorithm + constructs an additional :math:`n` vectors :math:`p_i` + using the step size vector :math:`s = step\_size` + as follows: + + .. only:: not texinfo + + .. math:: + + p_0 & = (x_0, x_1, \cdots , x_n) \\ + p_1 & = (x_0 + s_0, x_1, \cdots , x_n) \\ + p_2 & = (x_0, x_1 + s_1, \cdots , x_n) \\ + \dots &= \dots \\ + p_n & = (x_0, x_1, \cdots , x_n + s_n) + + .. only:: texinfo + + :: + + p_0 = (x_0, x_1, ... , x_n) + p_1 = (x_0 + s_0, x_1, ... , x_n) + p_2 = (x_0, x_1 + s_1, ... , x_n) + ... = ... + p_n = (x_0, x_1, ... , x_n + s_n) + + These vectors form the :math:`n+1` vertices of a simplex in :math:`n` + dimensions. On each iteration the algorithm uses simple geometrical + transformations to update the vector corresponding to the highest + function value. The geometric transformations are reflection, + reflection followed by expansion, contraction and multiple + contraction. Using these transformations the simplex moves through + the space towards the minimum, where it contracts itself. + + After each iteration, the best vertex is returned. Note, that due to + the nature of the algorithm not every step improves the current + best parameter vector. Usually several iterations are required. + + The minimizer-specific characteristic size is calculated as the + average distance from the geometrical center of the simplex to all its + vertices. This size can be used as a stopping criteria, as the + simplex contracts itself near the minimum. The size is returned by the + function :func:`gsl_multimin_fminimizer_size`. + + The :type:`gsl_multimin_fminimizer_nmsimplex2` version of this minimiser is + a new :math:`O(N)` operations + implementation of the earlier :math:`O(N^2)` operations + :type:`gsl_multimin_fminimizer_nmsimplex` + minimiser. It uses the same underlying algorithm, but the simplex + updates are computed more efficiently for high-dimensional problems. + In addition, the size of simplex is calculated as the RMS + distance of each vertex from the center rather than the mean distance, + allowing a linear update of this quantity on each step. The memory usage is + :math:`O(N^2)` for both algorithms. + + .. var:: gsl_multimin_fminimizer_nmsimplex2rand + + This method is a variant of :type:`gsl_multimin_fminimizer_nmsimplex2` which initialises the + simplex around the starting point :data:`x` using a randomly-oriented + set of basis vectors instead of the fixed coordinate axes. The + final dimensions of the simplex are scaled along the coordinate axes by the + vector :data:`step_size`. The randomisation uses a simple deterministic + generator so that repeated calls to :func:`gsl_multimin_fminimizer_set` for + a given solver object will vary the orientation in a well-defined way. + +Examples +======== + +This example program finds the minimum of the :ref:`paraboloid function ` +defined earlier. The location of the minimum is offset from the origin +in :math:`x` and :math:`y`, and the function value at the minimum is +non-zero. The main program is given below, it requires the example +function given earlier in this chapter. + +.. include:: examples/multimin.c + :code: + +The initial step-size is chosen as 0.01, a conservative estimate in this +case, and the line minimization parameter is set at 0.0001. The program +terminates when the norm of the gradient has been reduced below +0.001. The output of the program is shown below, + +.. include:: examples/multimin.txt + :code: + +Note that the algorithm gradually increases the step size as it +successfully moves downhill, as can be seen by plotting the successive +points in :numref:`fig-multimin`. + +.. _fig-multimin: + +.. figure:: /images/multimin.png + :scale: 60% + + Function contours with path taken by minimization algorithm + +The conjugate gradient algorithm finds the minimum on its second +direction because the function is purely quadratic. Additional +iterations would be needed for a more complicated function. + +Here is another example using the Nelder-Mead Simplex algorithm to +minimize the same example object function, as above. + +.. include:: examples/nmsimplex.c + :code: + +The minimum search stops when the Simplex size drops to 0.01. The output is +shown below. + +.. include:: examples/nmsimplex.txt + :code: + +The simplex size first increases, while the simplex moves towards the +minimum. After a while the size begins to decrease as the simplex +contracts around the minimum. + +References and Further Reading +============================== + +The conjugate gradient and BFGS methods are described in detail in the +following book, + +* R. Fletcher, + *Practical Methods of Optimization (Second Edition)* Wiley + (1987), ISBN 0471915475. + +A brief description of multidimensional minimization algorithms and +more recent references can be found in, + +* C.W. Ueberhuber, + *Numerical Computation (Volume 2)*, Chapter 14, Section 4.4 + "Minimization Methods", p.: 325--335, Springer (1997), ISBN + 3-540-62057-5. + +The simplex algorithm is described in the following paper, + +* J.A. Nelder and R. Mead, + *A simplex method for function minimization*, Computer Journal + vol.: 7 (1965), 308--313. diff --git a/gsl-2.5/doc/multiroots.rst b/gsl-2.5/doc/multiroots.rst new file mode 100644 index 00000000..fa200d65 --- /dev/null +++ b/gsl-2.5/doc/multiroots.rst @@ -0,0 +1,954 @@ +.. index:: + single: solving nonlinear systems of equations + single: nonlinear systems of equations, solution of + single: systems of equations, nonlinear + +***************************** +Multidimensional Root-Finding +***************************** + +.. include:: include.rst + +This chapter describes functions for multidimensional root-finding +(solving nonlinear systems with :math:`n` equations in :math:`n` +unknowns). The library provides low level components for a variety of +iterative solvers and convergence tests. These can be combined by the +user to achieve the desired solution, with full access to the +intermediate steps of the iteration. Each class of methods uses the +same framework, so that you can switch between solvers at runtime +without needing to recompile your program. Each instance of a solver +keeps track of its own state, allowing the solvers to be used in +multi-threaded programs. The solvers are based on the original Fortran +library |minpack|. + +The header file :file:`gsl_multiroots.h` contains prototypes for the +multidimensional root finding functions and related declarations. + +.. index:: + single: multidimensional root finding, overview + +Overview +======== + +The problem of multidimensional root finding requires the simultaneous +solution of :math:`n` equations, :math:`f_i`, in :math:`n` variables, +:math:`x_i`, + +.. only:: not texinfo + + .. math:: f_i (x_1, \dots, x_n) = 0 \qquad\hbox{for}~i = 1 \dots n. + +.. only:: texinfo + + :: + + f_i (x_1, ..., x_n) = 0 for i = 1 ... n. + +In general there are no bracketing methods available for :math:`n` +dimensional systems, and no way of knowing whether any solutions +exist. All algorithms proceed from an initial guess using a variant of +the Newton iteration, + +.. only:: not texinfo + + .. math:: x \to x' = x - J^{-1} f(x) + +.. only:: texinfo + + :: + + x -> x' = x - J^{-1} f(x) + +where :math:`x`, :math:`f` are vector quantities and :math:`J` is the +Jacobian matrix :math:`J_{ij} = \partial f_i / \partial x_j`. +Additional strategies can be used to enlarge the region of +convergence. These include requiring a decrease in the norm :math:`|f|` on +each step proposed by Newton's method, or taking steepest-descent steps in +the direction of the negative gradient of :math:`|f|`. + +Several root-finding algorithms are available within a single framework. +The user provides a high-level driver for the algorithms, and the +library provides the individual functions necessary for each of the +steps. There are three main phases of the iteration. The steps are, + +* initialize solver state, :data:`s`, for algorithm :data:`T` +* update :data:`s` using the iteration :data:`T` +* test :data:`s` for convergence, and repeat iteration if necessary + +The evaluation of the Jacobian matrix can be problematic, either because +programming the derivatives is intractable or because computation of the +:math:`n^2` terms of the matrix becomes too expensive. For these reasons +the algorithms provided by the library are divided into two classes according +to whether the derivatives are available or not. + +.. index:: + single: Jacobian matrix, root finding + +The state for solvers with an analytic Jacobian matrix is held in a +:type:`gsl_multiroot_fdfsolver` struct. The updating procedure requires +both the function and its derivatives to be supplied by the user. + +The state for solvers which do not use an analytic Jacobian matrix is +held in a :type:`gsl_multiroot_fsolver` struct. The updating procedure +uses only function evaluations (not derivatives). The algorithms +estimate the matrix :math:`J` or :math:`J^{-1}` +by approximate methods. + +Initializing the Solver +======================= + +The following functions initialize a multidimensional solver, either +with or without derivatives. The solver itself depends only on the +dimension of the problem and the algorithm and can be reused for +different problems. + +.. type:: gsl_multiroot_fsolver + + This is a workspace for multidimensional root-finding without derivatives. + +.. type:: gsl_multiroot_fdfsolver + + This is a workspace for multidimensional root-finding with derivatives. + +.. function:: gsl_multiroot_fsolver * gsl_multiroot_fsolver_alloc (const gsl_multiroot_fsolver_type * T, size_t n) + + This function returns a pointer to a newly allocated instance of a + solver of type :data:`T` for a system of :data:`n` dimensions. + For example, the following code creates an instance of a hybrid solver, + to solve a 3-dimensional system of equations:: + + const gsl_multiroot_fsolver_type * T = gsl_multiroot_fsolver_hybrid; + gsl_multiroot_fsolver * s = gsl_multiroot_fsolver_alloc (T, 3); + + If there is insufficient memory to create the solver then the function + returns a null pointer and the error handler is invoked with an error + code of :macro:`GSL_ENOMEM`. + +.. function:: gsl_multiroot_fdfsolver * gsl_multiroot_fdfsolver_alloc (const gsl_multiroot_fdfsolver_type * T, size_t n) + + This function returns a pointer to a newly allocated instance of a + derivative solver of type :data:`T` for a system of :data:`n` dimensions. + For example, the following code creates an instance of a Newton-Raphson solver, + for a 2-dimensional system of equations:: + + const gsl_multiroot_fdfsolver_type * T = gsl_multiroot_fdfsolver_newton; + gsl_multiroot_fdfsolver * s = gsl_multiroot_fdfsolver_alloc (T, 2); + + If there is insufficient memory to create the solver then the function + returns a null pointer and the error handler is invoked with an error + code of :macro:`GSL_ENOMEM`. + +.. function:: int gsl_multiroot_fsolver_set (gsl_multiroot_fsolver * s, gsl_multiroot_function * f, const gsl_vector * x) + int gsl_multiroot_fdfsolver_set (gsl_multiroot_fdfsolver * s, gsl_multiroot_function_fdf * fdf, const gsl_vector * x) + + These functions set, or reset, an existing solver :data:`s` to use the + function :data:`f` or function and derivative :data:`fdf`, and the initial + guess :data:`x`. Note that the initial position is copied from :data:`x`, this + argument is not modified by subsequent iterations. + +.. function:: void gsl_multiroot_fsolver_free (gsl_multiroot_fsolver * s) + void gsl_multiroot_fdfsolver_free (gsl_multiroot_fdfsolver * s) + + These functions free all the memory associated with the solver :data:`s`. + +.. function:: const char * gsl_multiroot_fsolver_name (const gsl_multiroot_fsolver * s) + const char * gsl_multiroot_fdfsolver_name (const gsl_multiroot_fdfsolver * s) + + These functions return a pointer to the name of the solver. For example:: + + printf ("s is a '%s' solver\n", gsl_multiroot_fdfsolver_name (s)); + + would print something like :code:`s is a 'newton' solver`. + +.. index:: + single: multidimensional root finding, providing a function to solve + +Providing the function to solve +=============================== + +You must provide :math:`n` functions of :math:`n` variables for the root +finders to operate on. In order to allow for general parameters the +functions are defined by the following data types: + +.. type:: gsl_multiroot_function + + This data type defines a general system of functions with parameters. + + :code:`int (* f) (const gsl_vector * x, void * params, gsl_vector * f)` + + this function should store the vector result + :math:`f(x,params)` in :data:`f` for argument :data:`x` and parameters :data:`params`, + returning an appropriate error code if the function cannot be computed. + + :code:`size_t n` + + the dimension of the system, i.e. the number of components of the + vectors :data:`x` and :data:`f`. + + :code:`void * params` + + a pointer to the parameters of the function. + +Here is an example using Powell's test function, + +.. only:: not texinfo + + .. math:: + + f_1(x) &= A x_0 x_1 - 1 \\ + f_2(x) &= \exp(-x_0) + \exp(-x_1) - (1 + 1/A) + +.. only:: texinfo + + :: + + f_1(x) = A x_0 x_1 - 1, + f_2(x) = exp(-x_0) + exp(-x_1) - (1 + 1/A) + +with :math:`A = 10^4`. The following code defines a +:type:`gsl_multiroot_function` system :code:`F` which you could pass to a +solver:: + + struct powell_params { double A; }; + + int + powell (gsl_vector * x, void * p, gsl_vector * f) { + struct powell_params * params + = (struct powell_params *)p; + const double A = (params->A); + const double x0 = gsl_vector_get(x,0); + const double x1 = gsl_vector_get(x,1); + + gsl_vector_set (f, 0, A * x0 * x1 - 1); + gsl_vector_set (f, 1, (exp(-x0) + exp(-x1) + - (1.0 + 1.0/A))); + return GSL_SUCCESS + } + + gsl_multiroot_function F; + struct powell_params params = { 10000.0 }; + + F.f = &powell; + F.n = 2; + F.params = ¶ms; + +.. type:: gsl_multiroot_function_fdf + + This data type defines a general system of functions with parameters and + the corresponding Jacobian matrix of derivatives, + + :code:`int (* f) (const gsl_vector * x, void * params, gsl_vector * f)` + + this function should store the vector result + :math:`f(x,params)` in :data:`f` for argument :data:`x` and parameters :data:`params`, + returning an appropriate error code if the function cannot be computed. + + :code:`int (* df) (const gsl_vector * x, void * params, gsl_matrix * J)` + + this function should store the :data:`n`-by-:data:`n` matrix result + + .. only:: not texinfo + + .. math:: J_{ij} = \partial f_i(x,\hbox{\it params}) / \partial x_j + + .. only:: texinfo + + :: + + J_ij = d f_i(x,params) / d x_j + + in :data:`J` for argument :data:`x` + and parameters :data:`params`, returning an appropriate error code if the + function cannot be computed. + + :code:`int (* fdf) (const gsl_vector * x, void * params, gsl_vector * f, gsl_matrix * J)` + + This function should set the values of the :data:`f` and :data:`J` as above, + for arguments :data:`x` and parameters :data:`params`. This function + provides an optimization of the separate functions for :math:`f(x)` and + :math:`J(x)`---it is always faster to compute the function and its + derivative at the same time. + + :code:`size_t n` + + the dimension of the system, i.e. the number of components of the + vectors :data:`x` and :data:`f`. + + :code:`void * params` + + a pointer to the parameters of the function. + +The example of Powell's test function defined above can be extended to +include analytic derivatives using the following code:: + + int + powell_df (gsl_vector * x, void * p, gsl_matrix * J) + { + struct powell_params * params + = (struct powell_params *)p; + const double A = (params->A); + const double x0 = gsl_vector_get(x,0); + const double x1 = gsl_vector_get(x,1); + gsl_matrix_set (J, 0, 0, A * x1); + gsl_matrix_set (J, 0, 1, A * x0); + gsl_matrix_set (J, 1, 0, -exp(-x0)); + gsl_matrix_set (J, 1, 1, -exp(-x1)); + return GSL_SUCCESS + } + + int + powell_fdf (gsl_vector * x, void * p, + gsl_matrix * f, gsl_matrix * J) { + struct powell_params * params + = (struct powell_params *)p; + const double A = (params->A); + const double x0 = gsl_vector_get(x,0); + const double x1 = gsl_vector_get(x,1); + + const double u0 = exp(-x0); + const double u1 = exp(-x1); + + gsl_vector_set (f, 0, A * x0 * x1 - 1); + gsl_vector_set (f, 1, u0 + u1 - (1 + 1/A)); + + gsl_matrix_set (J, 0, 0, A * x1); + gsl_matrix_set (J, 0, 1, A * x0); + gsl_matrix_set (J, 1, 0, -u0); + gsl_matrix_set (J, 1, 1, -u1); + return GSL_SUCCESS + } + + gsl_multiroot_function_fdf FDF; + + FDF.f = &powell_f; + FDF.df = &powell_df; + FDF.fdf = &powell_fdf; + FDF.n = 2; + FDF.params = 0; + +Note that the function :code:`powell_fdf` is able to reuse existing terms +from the function when calculating the Jacobian, thus saving time. + +Iteration +========= + +The following functions drive the iteration of each algorithm. Each +function performs one iteration to update the state of any solver of the +corresponding type. The same functions work for all solvers so that +different methods can be substituted at runtime without modifications to +the code. + +.. function:: int gsl_multiroot_fsolver_iterate (gsl_multiroot_fsolver * s) + int gsl_multiroot_fdfsolver_iterate (gsl_multiroot_fdfsolver * s) + + These functions perform a single iteration of the solver :data:`s`. If the + iteration encounters an unexpected problem then an error code will be + returned, + + :macro:`GSL_EBADFUNC` + + the iteration encountered a singular point where the function or its + derivative evaluated to :code:`Inf` or :code:`NaN`. + + :macro:`GSL_ENOPROG` + + the iteration is not making any progress, preventing the algorithm from + continuing. + +The solver maintains a current best estimate of the root :code:`s->x` +and its function value :code:`s->f` at all times. This information can +be accessed with the following auxiliary functions, + +.. function:: gsl_vector * gsl_multiroot_fsolver_root (const gsl_multiroot_fsolver * s) + gsl_vector * gsl_multiroot_fdfsolver_root (const gsl_multiroot_fdfsolver * s) + + These functions return the current estimate of the root for the solver :data:`s`, given by :code:`s->x`. + +.. function:: gsl_vector * gsl_multiroot_fsolver_f (const gsl_multiroot_fsolver * s) + gsl_vector * gsl_multiroot_fdfsolver_f (const gsl_multiroot_fdfsolver * s) + + These functions return the function value :math:`f(x)` at the current + estimate of the root for the solver :data:`s`, given by :code:`s->f`. + +.. function:: gsl_vector * gsl_multiroot_fsolver_dx (const gsl_multiroot_fsolver * s) + gsl_vector * gsl_multiroot_fdfsolver_dx (const gsl_multiroot_fdfsolver * s) + + These functions return the last step :math:`dx` taken by the solver + :data:`s`, given by :code:`s->dx`. + +.. index:: + single: root finding, stopping parameters + +Search Stopping Parameters +========================== + +A root finding procedure should stop when one of the following conditions is +true: + +* A multidimensional root has been found to within the user-specified precision. +* A user-specified maximum number of iterations has been reached. +* An error has occurred. + +The handling of these conditions is under user control. The functions +below allow the user to test the precision of the current result in +several standard ways. + +.. function:: int gsl_multiroot_test_delta (const gsl_vector * dx, const gsl_vector * x, double epsabs, double epsrel) + + This function tests for the convergence of the sequence by comparing the + last step :data:`dx` with the absolute error :data:`epsabs` and relative + error :data:`epsrel` to the current position :data:`x`. The test returns + :macro:`GSL_SUCCESS` if the following condition is achieved, + + .. only:: not texinfo + + .. math:: |dx_i| < \hbox{\it epsabs} + \hbox{\it epsrel\/}\, |x_i| + + .. only:: texinfo + + :: + + |dx_i| < epsabs + epsrel |x_i| + + for each component of :data:`x` and returns :macro:`GSL_CONTINUE` otherwise. + +.. index:: + single: residual, in nonlinear systems of equations + +.. function:: int gsl_multiroot_test_residual (const gsl_vector * f, double epsabs) + + This function tests the residual value :data:`f` against the absolute + error bound :data:`epsabs`. The test returns :macro:`GSL_SUCCESS` if the + following condition is achieved, + + .. only:: not texinfo + + .. math:: \sum_i |f_i| < \hbox{\it epsabs} + + .. only:: texinfo + + :: + + \sum_i |f_i| < epsabs + + and returns :macro:`GSL_CONTINUE` otherwise. This criterion is suitable + for situations where the precise location of the root, :math:`x`, is + unimportant provided a value can be found where the residual is small + enough. + +Algorithms using Derivatives +============================ + +The root finding algorithms described in this section make use of both +the function and its derivative. They require an initial guess for the +location of the root, but there is no absolute guarantee of +convergence---the function must be suitable for this technique and the +initial guess must be sufficiently close to the root for it to work. +When the conditions are satisfied then convergence is quadratic. + +.. type:: gsl_multiroot_fdfsolver_type + + The following are available algorithms for minimizing functions using + derivatives. + + .. index:: HYBRID algorithms for nonlinear systems + + .. index:: + single: HYBRIDSJ algorithm + single: MINPACK, minimization algorithms + + .. var:: gsl_multiroot_fdfsolver_hybridsj + + This is a modified version of Powell's Hybrid method as implemented in + the HYBRJ algorithm in |minpack|. Minpack was written by Jorge + J. |More|, Burton S. Garbow and Kenneth E. Hillstrom. The Hybrid + algorithm retains the fast convergence of Newton's method but will also + reduce the residual when Newton's method is unreliable. + + The algorithm uses a generalized trust region to keep each step under + control. In order to be accepted a proposed new position :math:`x'` must + satisfy the condition :math:`|D (x' - x)| < \delta`, where :math:`D` is a + diagonal scaling matrix and :math:`\delta` is the size of the trust + region. The components of :math:`D` are computed internally, using the + column norms of the Jacobian to estimate the sensitivity of the residual + to each component of :math:`x`. This improves the behavior of the + algorithm for badly scaled functions. + + On each iteration the algorithm first determines the standard Newton + step by solving the system :math:`J dx = - f`. If this step falls inside + the trust region it is used as a trial step in the next stage. If not, + the algorithm uses the linear combination of the Newton and gradient + directions which is predicted to minimize the norm of the function while + staying inside the trust region, + + .. math:: dx = - \alpha J^{-1} f(x) - \beta \nabla |f(x)|^2 + + This combination of Newton and gradient directions is referred to as a + *dogleg step*. + + The proposed step is now tested by evaluating the function at the + resulting point, :math:`x'`. If the step reduces the norm of the function + sufficiently then it is accepted and size of the trust region is + increased. If the proposed step fails to improve the solution then the + size of the trust region is decreased and another trial step is + computed. + + The speed of the algorithm is increased by computing the changes to the + Jacobian approximately, using a rank-1 update. If two successive + attempts fail to reduce the residual then the full Jacobian is + recomputed. The algorithm also monitors the progress of the solution + and returns an error if several steps fail to make any improvement, + + :macro:`GSL_ENOPROG` + + the iteration is not making any progress, preventing the algorithm from + continuing. + + :macro:`GSL_ENOPROGJ` + + re-evaluations of the Jacobian indicate that the iteration is not + making any progress, preventing the algorithm from continuing. + + .. index:: HYBRIDJ algorithm + + .. var:: gsl_multiroot_fdfsolver_hybridj + + This algorithm is an unscaled version of HYBRIDSJ. The steps are + controlled by a spherical trust region :math:`|x' - x| < \delta`, instead + of a generalized region. This can be useful if the generalized region + estimated by HYBRIDSJ is inappropriate. + + .. index:: Newton's method for systems of nonlinear equations + + .. var:: gsl_multiroot_fdfsolver_newton + + Newton's Method is the standard root-polishing algorithm. The algorithm + begins with an initial guess for the location of the solution. On each + iteration a linear approximation to the function :math:`F` is used to + estimate the step which will zero all the components of the residual. + The iteration is defined by the following sequence, + + .. only:: not texinfo + + .. math:: x \to x' = x - J^{-1} f(x) + + .. only:: texinfo + + :: + + x -> x' = x - J^{-1} f(x) + + where the Jacobian matrix :math:`J` is computed from the derivative + functions provided by :data:`f`. The step :math:`dx` is obtained by solving + the linear system, + + .. math:: J dx = - f(x) + + using LU decomposition. If the Jacobian matrix is singular, an error + code of :macro:`GSL_EDOM` is returned. + + .. index:: + single: Modified Newton's method for nonlinear systems + single: Newton algorithm, globally convergent + + .. var:: gsl_multiroot_fdfsolver_gnewton + + This is a modified version of Newton's method which attempts to improve + global convergence by requiring every step to reduce the Euclidean norm + of the residual, :math:`|f(x)|`. If the Newton step leads to an increase + in the norm then a reduced step of relative size, + + .. math:: t = (\sqrt{1 + 6 r} - 1) / (3 r) + + is proposed, with :math:`r` being the ratio of norms + :math:`|f(x')|^2/|f(x)|^2`. This procedure is repeated until a suitable step + size is found. + +Algorithms without Derivatives +============================== + +The algorithms described in this section do not require any derivative +information to be supplied by the user. Any derivatives needed are +approximated by finite differences. Note that if the +finite-differencing step size chosen by these routines is inappropriate, +an explicit user-supplied numerical derivative can always be used with +the algorithms described in the previous section. + +.. type:: gsl_multiroot_fsolver_type + + The following are available algorithms for minimizing functions without + derivatives. + + .. index:: + single: HYBRIDS algorithm, scaled without derivatives + + .. var:: gsl_multiroot_fsolver_hybrids + + This is a version of the Hybrid algorithm which replaces calls to the + Jacobian function by its finite difference approximation. The finite + difference approximation is computed using :func:`gsl_multiroots_fdjac` + with a relative step size of :macro:`GSL_SQRT_DBL_EPSILON`. Note that + this step size will not be suitable for all problems. + + .. index:: + single: HYBRID algorithm, unscaled without derivatives + + .. var:: gsl_multiroot_fsolver_hybrid + + This is a finite difference version of the Hybrid algorithm without + internal scaling. + + .. index:: + single: Discrete Newton algorithm for multidimensional roots + single: Newton algorithm, discrete + + .. var:: gsl_multiroot_fsolver_dnewton + + The *discrete Newton algorithm* is the simplest method of solving a + multidimensional system. It uses the Newton iteration + + .. only:: not texinfo + + .. math:: x \to x - J^{-1} f(x) + + .. only:: texinfo + + :: + + x -> x - J^{-1} f(x) + + where the Jacobian matrix :math:`J` is approximated by taking finite + differences of the function :data:`f`. The approximation scheme used by + this implementation is, + + .. math:: J_{ij} = (f_i(x + \delta_j) - f_i(x)) / \delta_j + + where :math:`\delta_j` is a step of size :math:`\sqrt\epsilon |x_j|` with + :math:`\epsilon` being the machine precision + (:math:`\epsilon \approx 2.22 \times 10^{-16}`). + The order of convergence of Newton's algorithm is quadratic, but the + finite differences require :math:`n^2` function evaluations on each + iteration. The algorithm may become unstable if the finite differences + are not a good approximation to the true derivatives. + + .. index:: + single: Broyden algorithm for multidimensional roots + single: multidimensional root finding, Broyden algorithm + + .. var:: gsl_multiroot_fsolver_broyden + + The *Broyden algorithm* is a version of the discrete Newton + algorithm which attempts to avoids the expensive update of the Jacobian + matrix on each iteration. The changes to the Jacobian are also + approximated, using a rank-1 update, + + .. math:: J^{-1} \to J^{-1} - (J^{-1} df - dx) dx^T J^{-1} / dx^T J^{-1} df + + where the vectors :math:`dx` and :math:`df` are the changes in :math:`x` + and :math:`f`. On the first iteration the inverse Jacobian is estimated + using finite differences, as in the discrete Newton algorithm. + + This approximation gives a fast update but is unreliable if the changes + are not small, and the estimate of the inverse Jacobian becomes worse as + time passes. The algorithm has a tendency to become unstable unless it + starts close to the root. The Jacobian is refreshed if this instability + is detected (consult the source for details). + + This algorithm is included only for demonstration purposes, and is not + recommended for serious use. + +Examples +======== + +The multidimensional solvers are used in a similar way to the +one-dimensional root finding algorithms. This first example +demonstrates the HYBRIDS scaled-hybrid algorithm, which does not +require derivatives. The program solves the Rosenbrock system of equations, + +.. only:: not texinfo + + .. math:: + + f_1 (x, y) &= a (1 - x) \\ + f_2 (x, y) &= b (y - x^2) + +.. only:: texinfo + + :: + + f_1 (x, y) = a (1 - x) + f_2 (x, y) = b (y - x^2) + +with :math:`a = 1, b = 10`. The solution of this system lies at +:math:`(x,y) = (1,1)` in a narrow valley. + +The first stage of the program is to define the system of equations:: + + #include + #include + #include + #include + + struct rparams + { + double a; + double b; + }; + + int + rosenbrock_f (const gsl_vector * x, void *params, + gsl_vector * f) + { + double a = ((struct rparams *) params)->a; + double b = ((struct rparams *) params)->b; + + const double x0 = gsl_vector_get (x, 0); + const double x1 = gsl_vector_get (x, 1); + + const double y0 = a * (1 - x0); + const double y1 = b * (x1 - x0 * x0); + + gsl_vector_set (f, 0, y0); + gsl_vector_set (f, 1, y1); + + return GSL_SUCCESS; + } + +The main program begins by creating the function object :code:`f`, with +the arguments :code:`(x,y)` and parameters :code:`(a,b)`. The solver +:code:`s` is initialized to use this function, with the :data:`gsl_multiroot_fsolver_hybrids` +method:: + + int + main (void) + { + const gsl_multiroot_fsolver_type *T; + gsl_multiroot_fsolver *s; + + int status; + size_t i, iter = 0; + + const size_t n = 2; + struct rparams p = {1.0, 10.0}; + gsl_multiroot_function f = {&rosenbrock_f, n, &p}; + + double x_init[2] = {-10.0, -5.0}; + gsl_vector *x = gsl_vector_alloc (n); + + gsl_vector_set (x, 0, x_init[0]); + gsl_vector_set (x, 1, x_init[1]); + + T = gsl_multiroot_fsolver_hybrids; + s = gsl_multiroot_fsolver_alloc (T, 2); + gsl_multiroot_fsolver_set (s, &f, x); + + print_state (iter, s); + + do + { + iter++; + status = gsl_multiroot_fsolver_iterate (s); + + print_state (iter, s); + + if (status) /* check if solver is stuck */ + break; + + status = + gsl_multiroot_test_residual (s->f, 1e-7); + } + while (status == GSL_CONTINUE && iter < 1000); + + printf ("status = %s\n", gsl_strerror (status)); + + gsl_multiroot_fsolver_free (s); + gsl_vector_free (x); + return 0; + } + +Note that it is important to check the return status of each solver +step, in case the algorithm becomes stuck. If an error condition is +detected, indicating that the algorithm cannot proceed, then the error +can be reported to the user, a new starting point chosen or a different +algorithm used. + +The intermediate state of the solution is displayed by the following +function. The solver state contains the vector :code:`s->x` which is the +current position, and the vector :code:`s->f` with corresponding function +values:: + + int + print_state (size_t iter, gsl_multiroot_fsolver * s) + { + printf ("iter = %3u x = % .3f % .3f " + "f(x) = % .3e % .3e\n", + iter, + gsl_vector_get (s->x, 0), + gsl_vector_get (s->x, 1), + gsl_vector_get (s->f, 0), + gsl_vector_get (s->f, 1)); + } + +Here are the results of running the program. The algorithm is started at +:math:`(-10,-5)` far from the solution. Since the solution is hidden in +a narrow valley the earliest steps follow the gradient of the function +downhill, in an attempt to reduce the large value of the residual. Once +the root has been approximately located, on iteration 8, the Newton +behavior takes over and convergence is very rapid:: + + iter = 0 x = -10.000 -5.000 f(x) = 1.100e+01 -1.050e+03 + iter = 1 x = -10.000 -5.000 f(x) = 1.100e+01 -1.050e+03 + iter = 2 x = -3.976 24.827 f(x) = 4.976e+00 9.020e+01 + iter = 3 x = -3.976 24.827 f(x) = 4.976e+00 9.020e+01 + iter = 4 x = -3.976 24.827 f(x) = 4.976e+00 9.020e+01 + iter = 5 x = -1.274 -5.680 f(x) = 2.274e+00 -7.302e+01 + iter = 6 x = -1.274 -5.680 f(x) = 2.274e+00 -7.302e+01 + iter = 7 x = 0.249 0.298 f(x) = 7.511e-01 2.359e+00 + iter = 8 x = 0.249 0.298 f(x) = 7.511e-01 2.359e+00 + iter = 9 x = 1.000 0.878 f(x) = 1.268e-10 -1.218e+00 + iter = 10 x = 1.000 0.989 f(x) = 1.124e-11 -1.080e-01 + iter = 11 x = 1.000 1.000 f(x) = 0.000e+00 0.000e+00 + status = success + +Note that the algorithm does not update the location on every +iteration. Some iterations are used to adjust the trust-region +parameter, after trying a step which was found to be divergent, or to +recompute the Jacobian, when poor convergence behavior is detected. + +The next example program adds derivative information, in order to +accelerate the solution. There are two derivative functions +:code:`rosenbrock_df` and :code:`rosenbrock_fdf`. The latter computes both +the function and its derivative simultaneously. This allows the +optimization of any common terms. For simplicity we substitute calls to +the separate :code:`f` and :code:`df` functions at this point in the code +below:: + + int + rosenbrock_df (const gsl_vector * x, void *params, + gsl_matrix * J) + { + const double a = ((struct rparams *) params)->a; + const double b = ((struct rparams *) params)->b; + + const double x0 = gsl_vector_get (x, 0); + + const double df00 = -a; + const double df01 = 0; + const double df10 = -2 * b * x0; + const double df11 = b; + + gsl_matrix_set (J, 0, 0, df00); + gsl_matrix_set (J, 0, 1, df01); + gsl_matrix_set (J, 1, 0, df10); + gsl_matrix_set (J, 1, 1, df11); + + return GSL_SUCCESS; + } + + int + rosenbrock_fdf (const gsl_vector * x, void *params, + gsl_vector * f, gsl_matrix * J) + { + rosenbrock_f (x, params, f); + rosenbrock_df (x, params, J); + + return GSL_SUCCESS; + } + +The main program now makes calls to the corresponding :code:`fdfsolver` +versions of the functions:: + + int + main (void) + { + const gsl_multiroot_fdfsolver_type *T; + gsl_multiroot_fdfsolver *s; + + int status; + size_t i, iter = 0; + + const size_t n = 2; + struct rparams p = {1.0, 10.0}; + gsl_multiroot_function_fdf f = {&rosenbrock_f, + &rosenbrock_df, + &rosenbrock_fdf, + n, &p}; + + double x_init[2] = {-10.0, -5.0}; + gsl_vector *x = gsl_vector_alloc (n); + + gsl_vector_set (x, 0, x_init[0]); + gsl_vector_set (x, 1, x_init[1]); + + T = gsl_multiroot_fdfsolver_gnewton; + s = gsl_multiroot_fdfsolver_alloc (T, n); + gsl_multiroot_fdfsolver_set (s, &f, x); + + print_state (iter, s); + + do + { + iter++; + + status = gsl_multiroot_fdfsolver_iterate (s); + + print_state (iter, s); + + if (status) + break; + + status = gsl_multiroot_test_residual (s->f, 1e-7); + } + while (status == GSL_CONTINUE && iter < 1000); + + printf ("status = %s\n", gsl_strerror (status)); + + gsl_multiroot_fdfsolver_free (s); + gsl_vector_free (x); + return 0; + } + +The addition of derivative information to the :data:`gsl_multiroot_fsolver_hybrids` solver does +not make any significant difference to its behavior, since it able to +approximate the Jacobian numerically with sufficient accuracy. To +illustrate the behavior of a different derivative solver we switch to +:data:`gsl_multiroot_fdfsolver_gnewton`. This is a traditional Newton solver with the constraint +that it scales back its step if the full step would lead "uphill". Here +is the output for the :data:`gsl_multiroot_fdfsolver_gnewton` algorithm:: + + iter = 0 x = -10.000 -5.000 f(x) = 1.100e+01 -1.050e+03 + iter = 1 x = -4.231 -65.317 f(x) = 5.231e+00 -8.321e+02 + iter = 2 x = 1.000 -26.358 f(x) = -8.882e-16 -2.736e+02 + iter = 3 x = 1.000 1.000 f(x) = -2.220e-16 -4.441e-15 + status = success + +The convergence is much more rapid, but takes a wide excursion out to +the point :math:`(-4.23,-65.3)`. This could cause the algorithm to go +astray in a realistic application. The hybrid algorithm follows the +downhill path to the solution more reliably. + +References and Further Reading +============================== + +The original version of the Hybrid method is described in the following +articles by Powell, + +* M.J.D. Powell, "A Hybrid Method for Nonlinear Equations" (Chap 6, p + 87--114) and "A Fortran Subroutine for Solving systems of Nonlinear + Algebraic Equations" (Chap 7, p 115--161), in *Numerical Methods for + Nonlinear Algebraic Equations*, P. Rabinowitz, editor. Gordon and + Breach, 1970. + +The following papers are also relevant to the algorithms described in +this section, + +* J.J. |More|, M.Y. Cosnard, "Numerical Solution of Nonlinear Equations", + *ACM Transactions on Mathematical Software*, Vol 5, No 1, (1979), p 64--85 + +* C.G. Broyden, "A Class of Methods for Solving Nonlinear + Simultaneous Equations", *Mathematics of Computation*, Vol 19 (1965), + p 577--593 + +* J.J. |More|, B.S. Garbow, K.E. Hillstrom, "Testing Unconstrained + Optimization Software", ACM Transactions on Mathematical Software, Vol + 7, No 1 (1981), p 17--41 diff --git a/gsl-2.5/doc/multiset.rst b/gsl-2.5/doc/multiset.rst new file mode 100644 index 00000000..9150241f --- /dev/null +++ b/gsl-2.5/doc/multiset.rst @@ -0,0 +1,194 @@ +.. index:: multisets + +********* +Multisets +********* + +.. include:: include.rst + +This chapter describes functions for creating and manipulating multisets. A +multiset :math:`c` is represented by an array of :math:`k` integers in the range +0 to :math:`n - 1`, where each value :math:`c_i` may occur more than once. The +multiset :math:`c` corresponds to indices of :math:`k` elements chosen from an +:math:`n` element vector with replacement. In mathematical terms, :math:`n` is +the cardinality of the multiset while :math:`k` is the maximum multiplicity of +any value. Multisets are useful, for example, when iterating over the indices +of a :math:`k`-th order symmetric tensor in :math:`n`-space. + +The functions described in this chapter are defined in the header file +:file:`gsl_multiset.h`. + +The Multiset struct +=================== + +.. type:: gsl_multiset + + A multiset is defined by a structure containing three components, the + values of :math:`n` and :math:`k`, and a pointer to the multiset array. + The elements of the multiset array are all of type :code:`size_t`, and + are stored in increasing order. The :type:`gsl_multiset` structure + looks like this:: + + typedef struct + { + size_t n; + size_t k; + size_t *data; + } gsl_multiset; + +Multiset allocation +=================== + +.. function:: gsl_multiset * gsl_multiset_alloc (size_t n, size_t k) + + This function allocates memory for a new multiset with parameters :data:`n`, + :data:`k`. The multiset is not initialized and its elements are undefined. Use + the function :func:`gsl_multiset_calloc` if you want to create a multiset which + is initialized to the lexicographically first multiset element. A null pointer + is returned if insufficient memory is available to create the multiset. + +.. function:: gsl_multiset * gsl_multiset_calloc (size_t n, size_t k) + + This function allocates memory for a new multiset with parameters :data:`n`, + :data:`k` and initializes it to the lexicographically first multiset element. A + null pointer is returned if insufficient memory is available to create the + multiset. + +.. function:: void gsl_multiset_init_first (gsl_multiset * c) + + This function initializes the multiset :data:`c` to the lexicographically first + multiset element, i.e. :math:`0` repeated :math:`k` times. + +.. function:: void gsl_multiset_init_last (gsl_multiset * c) + + This function initializes the multiset :data:`c` to the lexicographically last + multiset element, i.e. :math:`n-1` repeated :math:`k` times. + +.. function:: void gsl_multiset_free (gsl_multiset * c) + + This function frees all the memory used by the multiset :data:`c`. + +.. function:: int gsl_multiset_memcpy (gsl_multiset * dest, const gsl_multiset * src) + + This function copies the elements of the multiset :data:`src` into the + multiset :data:`dest`. The two multisets must have the same size. + +Accessing multiset elements +=========================== + +The following function can be used to access the elements of a multiset. + +.. function:: size_t gsl_multiset_get (const gsl_multiset * c, const size_t i) + + This function returns the value of the :data:`i`-th element of the + multiset :data:`c`. If :data:`i` lies outside the allowed range of 0 to + :math:`k - 1` then the error handler is invoked and 0 is returned. |inlinefn| + +Multiset properties +=================== + +.. function:: size_t gsl_multiset_n (const gsl_multiset * c) + + This function returns the range (:math:`n`) of the multiset :data:`c`. + +.. function:: size_t gsl_multiset_k (const gsl_multiset * c) + + This function returns the number of elements (:math:`k`) in the multiset :data:`c`. + +.. function:: size_t * gsl_multiset_data (const gsl_multiset * c) + + This function returns a pointer to the array of elements in the + multiset :data:`c`. + +.. index:: + single: checking multiset for validity + single: testing multiset for validity + +.. function:: int gsl_multiset_valid (gsl_multiset * c) + + This function checks that the multiset :data:`c` is valid. The :data:`k` + elements should lie in the range 0 to :math:`n - 1`, with each + value occurring in nondecreasing order. + +Multiset functions +================== + +.. index:: iterating through multisets + +.. function:: int gsl_multiset_next (gsl_multiset * c) + + This function advances the multiset :data:`c` to the next multiset element in + lexicographic order and returns :macro:`GSL_SUCCESS`. If no further multisets + elements are available it returns :macro:`GSL_FAILURE` and leaves :data:`c` + unmodified. Starting with the first multiset and repeatedly applying this + function will iterate through all possible multisets of a given order. + +.. function:: int gsl_multiset_prev (gsl_multiset * c) + + This function steps backwards from the multiset :data:`c` to the previous + multiset element in lexicographic order, returning :macro:`GSL_SUCCESS`. If no + previous multiset is available it returns :macro:`GSL_FAILURE` and leaves :data:`c` + unmodified. + +Reading and writing multisets +============================= + +The library provides functions for reading and writing multisets to a +file as binary data or formatted text. + +.. function:: int gsl_multiset_fwrite (FILE * stream, const gsl_multiset * c) + + This function writes the elements of the multiset :data:`c` to the + stream :data:`stream` in binary format. The function returns + :macro:`GSL_EFAILED` if there was a problem writing to the file. Since the + data is written in the native binary format it may not be portable + between different architectures. + +.. function:: int gsl_multiset_fread (FILE * stream, gsl_multiset * c) + + This function reads elements from the open stream :data:`stream` into the + multiset :data:`c` in binary format. The multiset :data:`c` must be + preallocated with correct values of :math:`n` and :math:`k` since the + function uses the size of :data:`c` to determine how many bytes to read. + The function returns :macro:`GSL_EFAILED` if there was a problem reading + from the file. The data is assumed to have been written in the native + binary format on the same architecture. + +.. function:: int gsl_multiset_fprintf (FILE * stream, const gsl_multiset * c, const char * format) + + This function writes the elements of the multiset :data:`c` + line-by-line to the stream :data:`stream` using the format specifier + :data:`format`, which should be suitable for a type of :code:`size_t`. + In ISO C99 the type modifier :code:`z` represents :code:`size_t`, so + :code:`"%zu\n"` is a suitable format [#f1]_. + The function returns :macro:`GSL_EFAILED` if there was a problem writing to the file. + +.. function:: int gsl_multiset_fscanf (FILE * stream, gsl_multiset * c) + + This function reads formatted data from the stream :data:`stream` into the + multiset :data:`c`. The multiset :data:`c` must be preallocated with + correct values of :math:`n` and :math:`k` since the function uses the size of :data:`c` to + determine how many numbers to read. The function returns + :macro:`GSL_EFAILED` if there was a problem reading from the file. + +Examples +======== + +The example program below prints all multisets elements containing the values +:math:`{0,1,2,3}` ordered by size. Multiset elements of the same size are +ordered lexicographically. + +.. include:: examples/multiset.c + :code: + +Here is the output from the program, + +.. include:: examples/multiset.txt + :code: + +All 70 multisets are generated and sorted lexicographically. + +.. rubric:: Footnotes + +.. [#f1] In versions of the GNU C library prior to the ISO C99 standard, + the type modifier :code:`Z` was used instead. diff --git a/gsl-2.5/doc/nls.rst b/gsl-2.5/doc/nls.rst new file mode 100644 index 00000000..011f976e --- /dev/null +++ b/gsl-2.5/doc/nls.rst @@ -0,0 +1,1940 @@ +.. index:: + single: nonlinear least squares + single: least squares, nonlinear + +******************************* +Nonlinear Least-Squares Fitting +******************************* + +.. include:: include.rst + +This chapter describes functions for multidimensional nonlinear +least-squares fitting. There are generally two classes of +algorithms for solving nonlinear least squares problems, which +fall under line search methods and trust region methods. +GSL currently implements only trust region methods and +provides the user with +full access to intermediate steps of the iteration. The user +also has the ability to tune a number of parameters which affect +low-level aspects of the algorithm which can help to accelerate +convergence for the specific problem at hand. GSL provides +two separate interfaces for nonlinear least squares fitting. The +first is designed for small to moderate sized problems, and the +second is designed for very large problems, which may or may not +have significant sparse structure. + +The header file :file:`gsl_multifit_nlinear.h` contains prototypes for the +multidimensional nonlinear fitting functions and related declarations +relating to the small to moderate sized systems. + +The header file :file:`gsl_multilarge_nlinear.h` contains prototypes for the +multidimensional nonlinear fitting functions and related declarations +relating to large systems. + +.. index:: + single: nonlinear least squares, overview + +Overview +======== + +The problem of multidimensional nonlinear least-squares fitting requires +the minimization of the squared residuals of :math:`n` functions, +:math:`f_i`, in :math:`p` parameters, :math:`x_i`, + +.. only:: not texinfo + + .. math:: + + \Phi(x) &= {1 \over 2} || f(x) ||^2 \\ + &= {1 \over 2} \sum_{i=1}^{n} f_i (x_1, \dots, x_p)^2 + +.. only:: texinfo + + :: + + \Phi(x) = (1/2) || f(x) ||^2 + = (1/2) \sum_{i=1}^{n} f_i(x_1, ..., x_p)^2 + +In trust region methods, the objective (or cost) function :math:`\Phi(x)` is approximated +by a model function :math:`m_k(\delta)` in the vicinity of some point :math:`x_k`. The +model function is often simply a second order Taylor series expansion around the +point :math:`x_k`, ie: + +.. only:: not texinfo + + .. math:: \Phi(x_k + \delta) \approx m_k(\delta) = \Phi(x_k) + g_k^T \delta + {1 \over 2} \delta^T B_k \delta + +.. only:: texinfo + + :: + + \Phi(x_k + \delta) ~=~ m_k(\delta) = \Phi(x_k) + g_k^T \delta + 1/2 \delta^T B_k \delta + +where :math:`g_k = \nabla \Phi(x_k) = J^T f` is the gradient vector at the point :math:`x_k`, +:math:`B_k = \nabla^2 \Phi(x_k)` is the Hessian matrix at :math:`x_k`, or some +approximation to it, and :math:`J` is the :math:`n`-by-:math:`p` Jacobian matrix + +.. only:: not texinfo + + .. math:: J_{ij} = \partial f_i / \partial x_j + +.. only:: texinfo + + :: + + J_{ij} = d f_i / d x_j + +In order to find the next step :math:`\delta`, we minimize the model function +:math:`m_k(\delta)`, but search for solutions only within a region where +we trust that :math:`m_k(\delta)` is a good approximation to the objective +function :math:`\Phi(x_k + \delta)`. In other words, +we seek a solution of the trust region subproblem (TRS) + +.. only:: not texinfo + + .. math:: \min_{\delta \in R^p} m_k(\delta) = \Phi(x_k) + g_k^T \delta + {1 \over 2} \delta^T B_k \delta, \qquad\hbox{s.t.}\quad || D_k \delta || \le \Delta_k + +.. only:: texinfo + + :: + + \min_(\delta \in R^p) m_k(\delta), s.t. || D_k \delta || <= \Delta_k + +where :math:`\Delta_k > 0` is the trust region radius and :math:`D_k` is +a scaling matrix. If :math:`D_k = I`, then the trust region is a ball +of radius :math:`\Delta_k` centered at :math:`x_k`. In some applications, +the parameter vector :math:`x` may have widely different scales. For +example, one parameter might be a temperature on the order of +:math:`10^3` K, while another might be a length on the order of +:math:`10^{-6}` m. In such cases, a spherical trust region may not +be the best choice, since if :math:`\Phi` changes rapidly along +directions with one scale, and more slowly along directions with +a different scale, the model function :math:`m_k` may be a poor +approximation to :math:`\Phi` along the rapidly changing directions. +In such problems, it may be best to use an elliptical trust region, +by setting :math:`D_k` to a diagonal matrix whose entries are designed +so that the scaled step :math:`D_k \delta` has entries of approximately the same +order of magnitude. + +The trust region subproblem above normally amounts to solving a +linear least squares system (or multiple systems) for the step +:math:`\delta`. Once :math:`\delta` is computed, it is checked whether +or not it reduces the objective function :math:`\Phi(x)`. A useful +statistic for this is to look at the ratio + +.. only:: not texinfo + + .. math:: \rho_k = { \Phi(x_k) - \Phi(x_k + \delta_k) \over m_k(0) - m_k(\delta_k) } + +.. only:: texinfo + + :: + + \rho_k = ( \Phi(x_k) - \Phi(x_k + \delta_k) / ( m_k(0) - m_k(\delta_k) ) + +where the numerator is the actual reduction of the objective function +due to the step :math:`\delta_k`, and the denominator is the predicted +reduction due to the model :math:`m_k`. If :math:`\rho_k` is negative, +it means that the step :math:`\delta_k` increased the objective function +and so it is rejected. If :math:`\rho_k` is positive, +then we have found a step which reduced the objective function and +it is accepted. Furthermore, if :math:`\rho_k` is close to 1, +then this indicates that the model function is a good approximation +to the objective function in the trust region, and so on the next +iteration the trust region is enlarged in order to take more ambitious +steps. When a step is rejected, the trust region is made smaller and +the TRS is solved again. An outline for the general trust region method +used by GSL can now be given. + +**Trust Region Algorithm** + +1. Initialize: given :math:`x_0`, construct :math:`m_0(\delta)`, :math:`D_0` and :math:`\Delta_0 > 0` + +2. For k = 0, 1, 2, ... + + a. If converged, then stop + b. Solve TRS for trial step :math:`\delta_k` + c. Evaluate trial step by computing :math:`\rho_k` + + 1). if step is accepted, set :math:`x_{k+1} = x_k + \delta_k` and increase radius, + :math:`\Delta_{k+1} = \alpha \Delta_k` + 2). if step is rejected, set :math:`x_{k+1} = x_k` and decrease radius, + :math:`\Delta_{k+1} = {\Delta_k \over \beta}`; goto 2(b) + + d. Construct :math:`m_{k+1}(\delta)` and :math:`D_{k+1}` + +GSL offers the user a number of different algorithms for solving the trust +region subproblem in 2(b), as well as different choices of scaling matrices +:math:`D_k` and different methods of updating the trust region radius +:math:`\Delta_k`. Therefore, while reasonable default methods are provided, +the user has a lot of control to fine-tune the various steps of the +algorithm for their specific problem. + +Solving the Trust Region Subproblem (TRS) +========================================= + +Below we describe the methods available for solving the trust region +subproblem. The methods available provide either exact or approximate +solutions to the trust region subproblem. In all algorithms below, +the Hessian matrix :math:`B_k` is approximated as :math:`B_k \approx J_k^T J_k`, +where :math:`J_k = J(x_k)`. In all methods, the solution of the TRS +involves solving a linear least squares system involving the Jacobian +matrix. For small to moderate sized problems (:code:`gsl_multifit_nlinear` interface), +this is accomplished by factoring the full Jacobian matrix, which is provided +by the user, with the Cholesky, QR, or SVD decompositions. For large systems +(:code:`gsl_multilarge_nlinear` interface), the user has two choices. One +is to solve the system iteratively, without needing to store the full +Jacobian matrix in memory. With this method, the user must provide a routine +to calculate the matrix-vector products :math:`J u` or :math:`J^T u` for a given vector :math:`u`. +This iterative method is particularly useful for systems where the Jacobian has +sparse structure, since forming matrix-vector products can be done cheaply. The +second option for large systems involves forming the normal equations matrix +:math:`J^T J` and then factoring it using a Cholesky decomposition. The normal +equations matrix is :math:`p`-by-:math:`p`, typically much smaller than the full +:math:`n`-by-:math:`p` Jacobian, and can usually be stored in memory even if the full +Jacobian matrix cannot. This option is useful for large, dense systems, or if the +iterative method has difficulty converging. + +.. index:: + single: Levenberg-Marquardt algorithm + single: nonlinear least squares, levenberg-marquardt + +Levenberg-Marquardt +------------------- + +There is a theorem which states that if :math:`\delta_k` is a solution +to the trust region subproblem given above, then there exists +:math:`\mu_k \ge 0` such that + +.. only:: not texinfo + + .. math:: \left( B_k + \mu_k D_k^T D_k \right) \delta_k = -g_k + +.. only:: texinfo + + :: + + ( B_k + \mu_k D_k^T D_k ) \delta_k = -g_k + +with :math:`\mu_k (\Delta_k - ||D_k \delta_k||) = 0`. This +forms the basis of the Levenberg-Marquardt algorithm, which controls +the trust region size by adjusting the parameter :math:`\mu_k` +rather than the radius :math:`\Delta_k` directly. For each radius +:math:`\Delta_k`, there is a unique parameter :math:`\mu_k` which +solves the TRS, and they have an inverse relationship, so that large values of +:math:`\mu_k` correspond to smaller trust regions, while small +values of :math:`\mu_k` correspond to larger trust regions. + +With the approximation :math:`B_k \approx J_k^T J_k`, on each iteration, +in order to calculate the step :math:`\delta_k`, +the following linear least squares problem is solved: + +.. only:: not texinfo + + .. math:: + + \left[ + \begin{array}{c} + J_k \\ + \sqrt{\mu_k} D_k + \end{array} + \right] + \delta_k = + - + \left[ + \begin{array}{c} + f_k \cr + 0 + \end{array} + \right] + +.. only:: texinfo + + :: + + [J_k; sqrt(mu_k) D_k] \delta_k = - [f_k; 0] + +If the step :math:`\delta_k` is accepted, then +:math:`\mu_k` is decreased on the next iteration in order +to take a larger step, otherwise it is increased to take +a smaller step. The Levenberg-Marquardt algorithm provides +an exact solution of the trust region subproblem, but +typically has a higher computational cost per iteration +than the approximate methods discussed below, since it +may need to solve the least squares system above several +times for different values of :math:`\mu_k`. + +.. index:: + single: Levenberg-Marquardt algorithm, geodesic acceleration + single: nonlinear least squares, levenberg-marquardt, geodesic acceleration + +Levenberg-Marquardt with Geodesic Acceleration +---------------------------------------------- + +This method applies a so-called geodesic acceleration correction to +the standard Levenberg-Marquardt step :math:`\delta_k` (Transtrum et al, 2011). +By interpreting :math:`\delta_k` as a first order step along a geodesic in the +model parameter space (ie: a velocity :math:`\delta_k = v_k`), the geodesic +acceleration :math:`a_k` is a second order correction along the +geodesic which is determined by solving the linear least squares system + +.. only:: not texinfo + + .. math:: + + \left[ + \begin{array}{c} + J_k \\ + \sqrt{\mu_k} D_k + \end{array} + \right] + a_k = + - + \left[ + \begin{array}{c} + f_{vv}(x_k) \\ + 0 + \end{array} + \right] + +.. only:: texinfo + + :: + + [J_k; sqrt(mu_k) D_k] a_k = - [f_vv(x_k); 0] + +where :math:`f_{vv}` is the second directional derivative of +the residual vector in the velocity direction :math:`v`, +:math:`f_{vv}(x) = D_v^2 f = \sum_{\alpha\beta} v_{\alpha} v_{\beta} \partial_{\alpha} \partial_{\beta} f(x)`, +where :math:`\alpha` and :math:`\beta` are summed over the :math:`p` +parameters. The new total step is then :math:`\delta_k' = v_k + {1 \over 2}a_k`. +The second order correction :math:`a_k` can be calculated with a modest additional +cost, and has been shown to dramatically reduce the number of iterations +(and expensive Jacobian evaluations) required to reach convergence on a variety +of different problems. In order to utilize the geodesic acceleration, the user must supply a +function which provides the second directional derivative vector +:math:`f_{vv}(x)`, or alternatively the library can use a finite +difference method to estimate this vector with one additional function +evaluation of :math:`f(x + h v)` where :math:`h` is a tunable step size +(see the :code:`h_fvv` parameter description). + +.. index:: + single: Dogleg algorithm + single: nonlinear least squares, dogleg + +Dogleg +------ + +This is Powell's dogleg method, which finds an approximate +solution to the trust region subproblem, by restricting +its search to a piecewise linear "dogleg" path, +composed of the origin, the Cauchy point which represents +the model minimizer along the steepest descent direction, +and the Gauss-Newton point, which is the overall minimizer +of the unconstrained model. The Gauss-Newton step is calculated by +solving + +.. math:: J_k \delta_{gn} = -f_k + +which is the main computational task for each iteration, +but only needs to be performed once per iteration. If +the Gauss-Newton point is inside the trust region, it is +selected as the step. If it is outside, the method then +calculates the Cauchy point, which is located along the +gradient direction. If the Cauchy point is also outside +the trust region, the method assumes that it is still far +from the minimum and so proceeds along the gradient +direction, truncating the step at the trust region +boundary. If the Cauchy point is inside the trust region, +with the Gauss-Newton point outside, the method +uses a dogleg step, which is a linear combination of the +gradient direction and the Gauss-Newton direction, stopping at the trust +region boundary. + +.. index:: + single: double Dogleg algorithm + single: Dogleg algorithm, double + single: nonlinear least squares, double dogleg + +Double Dogleg +------------- + +This method is an improvement over the classical dogleg +algorithm, which attempts to include information about +the Gauss-Newton step while the iteration is still far from +the minimum. When the Cauchy point is inside the trust region +and the Gauss-Newton point is outside, the method computes +a scaled Gauss-Newton point and then takes a dogleg step +between the Cauchy point and the scaled Gauss-Newton point. +The scaling is calculated to ensure that the reduction +in the model :math:`m_k` is about the same as the reduction +provided by the Cauchy point. + +Two Dimensional Subspace +------------------------ + +The dogleg methods restrict the search for the TRS solution +to a 1D curve defined by the Cauchy and Gauss-Newton points. +An improvement to this is to search for a solution using +the full two dimensional subspace spanned by the Cauchy +and Gauss-Newton directions. The dogleg path is of course +inside this subspace, and so this method solves the TRS +at least as accurately as the dogleg methods. Since this +method searches a larger subspace for a solution, it can +converge more quickly than dogleg on some problems. Because +the subspace is only two dimensional, this method is +very efficient and the main computation per iteration is +to determine the Gauss-Newton point. + +Steihaug-Toint Conjugate Gradient +--------------------------------- + +One difficulty of the dogleg methods is calculating the +Gauss-Newton step when the Jacobian matrix is singular. The +Steihaug-Toint method also computes a generalized dogleg +step, but avoids solving for the Gauss-Newton step directly, +instead using an iterative conjugate gradient algorithm. This +method performs well at points where the Jacobian is singular, +and is also suitable for large-scale problems where factoring +the Jacobian matrix could be prohibitively expensive. + +Weighted Nonlinear Least-Squares +================================ + +Weighted nonlinear least-squares fitting minimizes the function + +.. only:: not texinfo + + .. math:: + + \Phi(x) &= {1 \over 2} || f ||_W^2 \\ + &= {1 \over 2} \sum_{i=1}^{n} w_i f_i (x_1, \dots, x_p)^2 + +.. only:: texinfo + + :: + + \Phi(x) = (1/2) || f(x) ||_W^2 + = (1/2) \sum_{i=1}^{n} f_i(x_1, ..., x_p)^2 + +where :math:`W = \diag(w_1,w_2,...,w_n)` is the weighting matrix, +and :math:`||f||_W^2 = f^T W f`. +The weights :math:`w_i` are commonly defined as :math:`w_i = 1/\sigma_i^2`, +where :math:`\sigma_i` is the error in the :math:`i`-th measurement. +A simple change of variables :math:`\tilde{f} = W^{1 \over 2} f` yields +:math:`\Phi(x) = {1 \over 2} ||\tilde{f}||^2`, which is in the +same form as the unweighted case. The user can either perform this +transform directly on their function residuals and Jacobian, or use +the :func:`gsl_multifit_nlinear_winit` interface which automatically +performs the correct scaling. To manually perform this transformation, +the residuals and Jacobian should be modified according to + +.. only:: not texinfo + + .. math:: + + \tilde{f}_i & = \sqrt{w_i} f_i = {f_i \over \sigma_i} \\ + \tilde{J}_{ij} & = \sqrt{w_i} { \partial f_i \over \partial x_j } = { 1 \over \sigma_i} { \partial f_i \over \partial x_j } + +.. only:: texinfo + + :: + + f~_i = f_i / \sigma_i + J~_ij = 1 / \sigma_i df_i/dx_j + +For large systems, the user must perform their own weighting. + +.. _sec_tunable-parameters: + +Tunable Parameters +================== + +The user can tune nearly all aspects of the iteration at allocation +time. For the :code:`gsl_multifit_nlinear` interface, the user may +modify the :type:`gsl_multifit_nlinear_parameters` structure, which is +defined as follows: + +.. type:: gsl_multifit_nlinear_parameters + + :: + + typedef struct + { + const gsl_multifit_nlinear_trs *trs; /* trust region subproblem method */ + const gsl_multifit_nlinear_scale *scale; /* scaling method */ + const gsl_multifit_nlinear_solver *solver; /* solver method */ + gsl_multifit_nlinear_fdtype fdtype; /* finite difference method */ + double factor_up; /* factor for increasing trust radius */ + double factor_down; /* factor for decreasing trust radius */ + double avmax; /* max allowed |a|/|v| */ + double h_df; /* step size for finite difference Jacobian */ + double h_fvv; /* step size for finite difference fvv */ + } gsl_multifit_nlinear_parameters; + +For the :code:`gsl_multilarge_nlinear` interface, the user may +modify the :type:`gsl_multilarge_nlinear_parameters` structure, which is +defined as follows: + +.. type:: gsl_multilarge_nlinear_parameters + + :: + + typedef struct + { + const gsl_multilarge_nlinear_trs *trs; /* trust region subproblem method */ + const gsl_multilarge_nlinear_scale *scale; /* scaling method */ + const gsl_multilarge_nlinear_solver *solver; /* solver method */ + gsl_multilarge_nlinear_fdtype fdtype; /* finite difference method */ + double factor_up; /* factor for increasing trust radius */ + double factor_down; /* factor for decreasing trust radius */ + double avmax; /* max allowed |a|/|v| */ + double h_df; /* step size for finite difference Jacobian */ + double h_fvv; /* step size for finite difference fvv */ + size_t max_iter; /* maximum iterations for trs method */ + double tol; /* tolerance for solving trs */ + } gsl_multilarge_nlinear_parameters; + +Each of these parameters is discussed in further detail below. + +.. type:: gsl_multifit_nlinear_trs + gsl_multilarge_nlinear_trs + + The parameter :data:`trs` determines the method used to solve the trust region + subproblem, and may be selected from the following choices, + + .. var:: gsl_multifit_nlinear_trs_lm + gsl_multilarge_nlinear_trs_lm + + This selects the Levenberg-Marquardt algorithm. + + .. var:: gsl_multifit_nlinear_trs_lmaccel + gsl_multilarge_nlinear_trs_lmaccel + + This selects the Levenberg-Marquardt algorithm with geodesic + acceleration. + + .. var:: gsl_multifit_nlinear_trs_dogleg + gsl_multilarge_nlinear_trs_dogleg + + This selects the dogleg algorithm. + + .. var:: gsl_multifit_nlinear_trs_ddogleg + gsl_multilarge_nlinear_trs_ddogleg + + This selects the double dogleg algorithm. + + .. var:: gsl_multifit_nlinear_trs_subspace2D + gsl_multilarge_nlinear_trs_subspace2D + + This selects the 2D subspace algorithm. + + .. var:: gsl_multilarge_nlinear_trs_cgst + + This selects the Steihaug-Toint conjugate gradient algorithm. This + method is available only for large systems. + +.. type:: gsl_multifit_nlinear_scale + gsl_multilarge_nlinear_scale + + The parameter :data:`scale` determines the diagonal scaling matrix :math:`D` and + may be selected from the following choices, + + .. var:: gsl_multifit_nlinear_scale_more + gsl_multilarge_nlinear_scale_more + + This damping strategy was suggested by |More|, and + corresponds to :math:`D^T D = \max(\diag(J^T J))`, + in other words the maximum elements of + :math:`\diag(J^T J)` encountered thus far in the iteration. + This choice of :math:`D` makes the problem scale-invariant, + so that if the model parameters :math:`x_i` are each scaled + by an arbitrary constant, :math:`\tilde{x}_i = a_i x_i`, then + the sequence of iterates produced by the algorithm would + be unchanged. This method can work very well in cases + where the model parameters have widely different scales + (ie: if some parameters are measured in nanometers, while others + are measured in degrees Kelvin). This strategy has been proven + effective on a large class of problems and so it is the library + default, but it may not be the best choice for all problems. + + .. var:: gsl_multifit_nlinear_scale_levenberg + gsl_multilarge_nlinear_scale_levenberg + + This damping strategy was originally suggested by Levenberg, and + corresponds to :math:`D^T D = I`. This method has also proven + effective on a large class of problems, but is not scale-invariant. + However, some authors (e.g. Transtrum and Sethna 2012) argue + that this choice is better for problems which are susceptible + to parameter evaporation (ie: parameters go to infinity) + + .. var:: gsl_multifit_nlinear_scale_marquardt + gsl_multilarge_nlinear_scale_marquardt + + This damping strategy was suggested by Marquardt, and + corresponds to :math:`D^T D = \diag(J^T J)`. This + method is scale-invariant, but it is generally considered + inferior to both the Levenberg and |More| strategies, though + may work well on certain classes of problems. + +.. type:: gsl_multifit_nlinear_solver + gsl_multilarge_nlinear_solver + + Solving the trust region subproblem on each iteration almost always + requires the solution of the following linear least squares system + + .. only:: not texinfo + + .. math:: + + \left[ + \begin{array}{c} + J \\ + \sqrt{\mu} D + \end{array} + \right] + \delta = + - + \left[ + \begin{array}{c} + f \\ + 0 + \end{array} + \right] + + .. only:: texinfo + + :: + + [J; sqrt(mu) D] \delta = - [f; 0] + + The :data:`solver` parameter determines how the system is + solved and can be selected from the following choices: + + .. var:: gsl_multifit_nlinear_solver_qr + + This method solves the system using a rank revealing QR + decomposition of the Jacobian :math:`J`. This method will + produce reliable solutions in cases where the Jacobian + is rank deficient or near-singular but does require about + twice as many operations as the Cholesky method discussed + below. + + .. var:: gsl_multifit_nlinear_solver_cholesky + gsl_multilarge_nlinear_solver_cholesky + + This method solves the alternate normal equations problem + + .. only:: not texinfo + + .. math:: \left( J^T J + \mu D^T D \right) \delta = -J^T f + + .. only:: texinfo + + :: + + ( J^T J + \mu D^T D ) \delta = -J^T f + + by using a Cholesky decomposition of the matrix + :math:`J^T J + \mu D^T D`. This method is faster than the + QR approach, however it is susceptible to numerical instabilities + if the Jacobian matrix is rank deficient or near-singular. In + these cases, an attempt is made to reduce the condition number + of the matrix using Jacobi preconditioning, but for highly + ill-conditioned problems the QR approach is better. If it is + known that the Jacobian matrix is well conditioned, this method + is accurate and will perform faster than the QR approach. + + .. var:: gsl_multifit_nlinear_solver_svd + + This method solves the system using a singular value + decomposition of the Jacobian :math:`J`. This method will + produce the most reliable solutions for ill-conditioned Jacobians + but is also the slowest solver method. + +.. type:: gsl_multifit_nlinear_fdtype + + The parameter :data:`fdtype` specifies whether to use forward or centered + differences when approximating the Jacobian. This is only + used when an analytic Jacobian is not provided to the solver. + This parameter may be set to one of the following choices. + + .. macro:: GSL_MULTIFIT_NLINEAR_FWDIFF + + This specifies a forward finite difference to approximate + the Jacobian matrix. The Jacobian matrix will be calculated as + + .. only:: not texinfo + + .. math:: J_{ij} = {1 \over \Delta_j} \left( f_i(x + \Delta_j e_j) - f_i(x) \right) + + .. only:: texinfo + + :: + + J_ij = 1 / \Delta_j ( f_i(x + \Delta_j e_j) - f_i(x) ) + + where :math:`\Delta_j = h |x_j|` and :math:`e_j` is the standard + :math:`j`-th Cartesian unit basis vector so that + :math:`x + \Delta_j e_j` represents a small (forward) perturbation of + the :math:`j`-th parameter by an amount :math:`\Delta_j`. The perturbation + :math:`\Delta_j` is proportional to the current value :math:`|x_j|` which + helps to calculate an accurate Jacobian when the various parameters have + different scale sizes. The value of :math:`h` is specified by the :code:`h_df` + parameter. The accuracy of this method is :math:`O(h)`, and evaluating this + matrix requires an additional :math:`p` function evaluations. + + .. macro:: GSL_MULTIFIT_NLINEAR_CTRDIFF + + This specifies a centered finite difference to approximate + the Jacobian matrix. The Jacobian matrix will be calculated as + + .. only:: not texinfo + + .. math:: J_{ij} = {1 \over \Delta_j} \left( f_i(x + {1 \over 2} \Delta_j e_j) - f_i(x - {1 \over 2} \Delta_j e_j) \right) + + .. only:: texinfo + + :: + + J_ij = 1 / \Delta_j ( f_i(x + 1/2 \Delta_j e_j) - f_i(x - 1/2 \Delta_j e_j) ) + + See above for a description of :math:`\Delta_j`. The accuracy of this + method is :math:`O(h^2)`, but evaluating this + matrix requires an additional :math:`2p` function evaluations. + +:code:`double factor_up` + +When a step is accepted, the trust region radius will be increased +by this factor. The default value is :math:`3`. + +:code:`double factor_down` + +When a step is rejected, the trust region radius will be decreased +by this factor. The default value is :math:`2`. + +:code:`double avmax` + +When using geodesic acceleration to solve a nonlinear least squares problem, +an important parameter to monitor is the ratio of the acceleration term +to the velocity term, + +.. only:: not texinfo + + .. math:: { ||a|| \over ||v|| } + +.. only:: texinfo + + :: + + |a| / |v| + +If this ratio is small, it means the acceleration correction +is contributing very little to the step. This could be because +the problem is not "nonlinear" enough to benefit from +the acceleration. If the ratio is large (:math:`> 1`) it +means that the acceleration is larger than the velocity, +which shouldn't happen since the step represents a truncated +series and so the second order term :math:`a` should be smaller than +the first order term :math:`v` to guarantee convergence. +Therefore any steps with a ratio larger than the parameter +:data:`avmax` are rejected. :data:`avmax` is set to 0.75 by default. +For problems which experience difficulty converging, this threshold +could be lowered. + +:code:`double h_df` + +This parameter specifies the step size for approximating the +Jacobian matrix with finite differences. It is set to +:math:`\sqrt{\epsilon}` by default, where :math:`\epsilon` +is :macro:`GSL_DBL_EPSILON`. + +:code:`double h_fvv` + +When using geodesic acceleration, the user must either supply +a function to calculate :math:`f_{vv}(x)` or the library +can estimate this second directional derivative using a finite +difference method. When using finite differences, the library +must calculate :math:`f(x + h v)` where :math:`h` represents +a small step in the velocity direction. The parameter +:data:`h_fvv` defines this step size and is set to 0.02 by +default. + +Initializing the Solver +======================= + +.. type:: gsl_multifit_nlinear_type + + This structure specifies the type of algorithm which will be used + to solve a nonlinear least squares problem. It may be selected from the + following choices, + + .. var:: gsl_multifit_nlinear_trust + + This specifies a trust region method. It is currently the only implemented + nonlinear least squares method. + +.. function:: gsl_multifit_nlinear_workspace * gsl_multifit_nlinear_alloc (const gsl_multifit_nlinear_type * T, const gsl_multifit_nlinear_parameters * params, const size_t n, const size_t p) + gsl_multilarge_nlinear_workspace * gsl_multilarge_nlinear_alloc (const gsl_multilarge_nlinear_type * T, const gsl_multilarge_nlinear_parameters * params, const size_t n, const size_t p) + + These functions return a pointer to a newly allocated instance of a + derivative solver of type :data:`T` for :data:`n` observations and :data:`p` + parameters. The :data:`params` input specifies a tunable set of + parameters which will affect important details in each iteration + of the trust region subproblem algorithm. It is recommended to start + with the suggested default parameters (see + :func:`gsl_multifit_nlinear_default_parameters` and + :func:`gsl_multilarge_nlinear_default_parameters`) and then tune + the parameters once the code is working correctly. See + :ref:`sec_tunable-parameters`. + for descriptions of the various parameters. + For example, the following code creates an instance of a + Levenberg-Marquardt solver for 100 data points and 3 parameters, + using suggested defaults:: + + const gsl_multifit_nlinear_type * T = gsl_multifit_nlinear_trust; + gsl_multifit_nlinear_parameters params = gsl_multifit_nlinear_default_parameters(); + gsl_multifit_nlinear_workspace * w = gsl_multifit_nlinear_alloc (T, ¶ms, 100, 3); + + The number of observations :data:`n` must be greater than or equal to + parameters :data:`p`. + + If there is insufficient memory to create the solver then the function + returns a null pointer and the error handler is invoked with an error + code of :macro:`GSL_ENOMEM`. + +.. function:: gsl_multifit_nlinear_parameters gsl_multifit_nlinear_default_parameters (void) + gsl_multilarge_nlinear_parameters gsl_multilarge_nlinear_default_parameters (void) + + These functions return a set of recommended default parameters + for use in solving nonlinear least squares problems. The user + can tune each parameter to improve the performance on their + particular problem, see :ref:`sec_tunable-parameters`. + +.. function:: int gsl_multifit_nlinear_init (const gsl_vector * x, gsl_multifit_nlinear_fdf * fdf, gsl_multifit_nlinear_workspace * w) + int gsl_multifit_nlinear_winit (const gsl_vector * x, const gsl_vector * wts, gsl_multifit_nlinear_fdf * fdf, gsl_multifit_nlinear_workspace * w) + int gsl_multilarge_nlinear_init (const gsl_vector * x, gsl_multilarge_nlinear_fdf * fdf, gsl_multilarge_nlinear_workspace * w) + + These functions initialize, or reinitialize, an existing workspace :data:`w` + to use the system :data:`fdf` and the initial guess + :data:`x`. See :ref:`sec_providing-function-minimized` + for a description of the :data:`fdf` structure. + + Optionally, a weight vector :data:`wts` can be given to perform + a weighted nonlinear regression. Here, the weighting matrix is + :math:`W = \diag(w_1,w_2,...,w_n)`. + +.. function:: void gsl_multifit_nlinear_free (gsl_multifit_nlinear_workspace * w) + void gsl_multilarge_nlinear_free (gsl_multilarge_nlinear_workspace * w) + + These functions free all the memory associated with the workspace :data:`w`. + +.. function:: const char * gsl_multifit_nlinear_name (const gsl_multifit_nlinear_workspace * w) + const char * gsl_multilarge_nlinear_name (const gsl_multilarge_nlinear_workspace * w) + + These functions return a pointer to the name of the solver. For example:: + + printf ("w is a '%s' solver\n", gsl_multifit_nlinear_name (w)); + + would print something like :code:`w is a 'trust-region' solver`. + +.. function:: const char * gsl_multifit_nlinear_trs_name (const gsl_multifit_nlinear_workspace * w) + const char * gsl_multilarge_nlinear_trs_name (const gsl_multilarge_nlinear_workspace * w) + + These functions return a pointer to the name of the trust region subproblem + method. For example:: + + printf ("w is a '%s' solver\n", gsl_multifit_nlinear_trs_name (w)); + + would print something like :code:`w is a 'levenberg-marquardt' solver`. + +.. _sec_providing-function-minimized: + +Providing the Function to be Minimized +====================================== + +The user must provide :math:`n` functions of :math:`p` variables for the +minimization algorithm to operate on. In order to allow for +arbitrary parameters the functions are defined by the following data +types: + +.. type:: gsl_multifit_nlinear_fdf + + This data type defines a general system of functions with arbitrary parameters, + the corresponding Jacobian matrix of derivatives, and optionally the + second directional derivative of the functions for geodesic acceleration. + + :code:`int (* f) (const gsl_vector * x, void * params, gsl_vector * f)` + + This function should store the :math:`n` components of the vector + :math:`f(x)` in :data:`f` for argument :data:`x` and arbitrary parameters :data:`params`, + returning an appropriate error code if the function cannot be computed. + + :code:`int (* df) (const gsl_vector * x, void * params, gsl_matrix * J)` + + This function should store the :data:`n`-by-:data:`p` matrix result + + .. only:: not texinfo + + .. math:: J_{ij} = \partial f_i(x) / \partial x_j + + .. only:: texinfo + + :: + + J_ij = d f_i(x) / d x_j + + in :data:`J` for argument :data:`x` + and arbitrary parameters :data:`params`, returning an appropriate error code if the + matrix cannot be computed. If an analytic Jacobian is unavailable, or too expensive + to compute, this function pointer may be set to :code:`NULL`, in which + case the Jacobian will be internally computed using finite difference approximations + of the function :data:`f`. + + :code:`int (* fvv) (const gsl_vector * x, const gsl_vector * v, void * params, gsl_vector * fvv)` + + When geodesic acceleration is enabled, this function should store the + :math:`n` components of the vector + :math:`f_{vv}(x) = \sum_{\alpha\beta} v_{\alpha} v_{\beta} {\partial \over \partial x_{\alpha}} {\partial \over \partial x_{\beta}} f(x)`, + representing second directional derivatives of the function to be minimized, + into the output :data:`fvv`. The parameter vector is provided in :data:`x` and + the velocity vector is provided in :data:`v`, both of which have :math:`p` + components. The arbitrary parameters are given in :data:`params`. If + analytic expressions for :math:`f_{vv}(x)` are unavailable or too difficult + to compute, this function pointer may be set to :code:`NULL`, in which case + :math:`f_{vv}(x)` will be computed internally using a finite difference + approximation. + + :code:`size_t n` + + the number of functions, i.e. the number of components of the + vector :data:`f`. + + :code:`size_t p` + + the number of independent variables, i.e. the number of components of + the vector :data:`x`. + + :code:`void * params` + + a pointer to the arbitrary parameters of the function. + + :code:`size_t nevalf` + + This does not need to be set by the user. It counts the number of + function evaluations and is initialized by the :code:`_init` function. + + :code:`size_t nevaldf` + + This does not need to be set by the user. It counts the number of + Jacobian evaluations and is initialized by the :code:`_init` function. + + :code:`size_t nevalfvv` + + This does not need to be set by the user. It counts the number of + :math:`f_{vv}(x)` evaluations and is initialized by the :code:`_init` function. + +.. type:: gsl_multilarge_nlinear_fdf + + This data type defines a general system of functions with arbitrary parameters, + a function to compute :math:`J u` or :math:`J^T u` for a given vector :math:`u`, + the normal equations matrix :math:`J^T J`, + and optionally the second directional derivative of the functions for geodesic acceleration. + + :code:`int (* f) (const gsl_vector * x, void * params, gsl_vector * f)` + + This function should store the :math:`n` components of the vector + :math:`f(x)` in :data:`f` for argument :data:`x` and arbitrary parameters :data:`params`, + returning an appropriate error code if the function cannot be computed. + + :code:`int (* df) (CBLAS_TRANSPOSE_t TransJ, const gsl_vector * x, const gsl_vector * u, void * params, gsl_vector * v, gsl_matrix * JTJ)` + + If :data:`TransJ` is equal to :code:`CblasNoTrans`, then this function should + compute the matrix-vector product :math:`J u` and store the result in :data:`v`. + If :data:`TransJ` is equal to :code:`CblasTrans`, then this function should + compute the matrix-vector product :math:`J^T u` and store the result in :data:`v`. + Additionally, the normal equations matrix :math:`J^T J` should be stored in the + lower half of :data:`JTJ`. The input matrix :data:`JTJ` could be set to :code:`NULL`, + for example by iterative methods which do not require this matrix, so the user + should check for this prior to constructing the matrix. + The input :data:`params` contains the arbitrary parameters. + + :code:`int (* fvv) (const gsl_vector * x, const gsl_vector * v, void * params, gsl_vector * fvv)` + + When geodesic acceleration is enabled, this function should store the + :math:`n` components of the vector + :math:`f_{vv}(x) = \sum_{\alpha\beta} v_{\alpha} v_{\beta} {\partial \over \partial x_{\alpha}} {\partial \over \partial x_{\beta}} f(x)`, + representing second directional derivatives of the function to be minimized, + into the output :data:`fvv`. The parameter vector is provided in :data:`x` and + the velocity vector is provided in :data:`v`, both of which have :math:`p` + components. The arbitrary parameters are given in :data:`params`. If + analytic expressions for :math:`f_{vv}(x)` are unavailable or too difficult + to compute, this function pointer may be set to :code:`NULL`, in which case + :math:`f_{vv}(x)` will be computed internally using a finite difference + approximation. + + :code:`size_t n` + + the number of functions, i.e. the number of components of the + vector :data:`f`. + + :code:`size_t p` + + the number of independent variables, i.e. the number of components of + the vector :data:`x`. + + :code:`void * params` + + a pointer to the arbitrary parameters of the function. + + :code:`size_t nevalf` + + This does not need to be set by the user. It counts the number of + function evaluations and is initialized by the :code:`_init` function. + + :code:`size_t nevaldfu` + + This does not need to be set by the user. It counts the number of + Jacobian matrix-vector evaluations (:math:`J u` or :math:`J^T u`) and + is initialized by the :code:`_init` function. + + :code:`size_t nevaldf2` + + This does not need to be set by the user. It counts the number of + :math:`J^T J` evaluations and is initialized by the :code:`_init` function. + + :code:`size_t nevalfvv` + + This does not need to be set by the user. It counts the number of + :math:`f_{vv}(x)` evaluations and is initialized by the :code:`_init` function. + +Note that when fitting a non-linear model against experimental data, +the data is passed to the functions above using the +:data:`params` argument and the trial best-fit parameters through the +:data:`x` argument. + +Iteration +========= + +The following functions drive the iteration of each algorithm. Each +function performs one iteration of the trust region method and updates +the state of the solver. + +.. function:: int gsl_multifit_nlinear_iterate (gsl_multifit_nlinear_workspace * w) + int gsl_multilarge_nlinear_iterate (gsl_multilarge_nlinear_workspace * w) + + These functions perform a single iteration of the solver :data:`w`. If + the iteration encounters an unexpected problem then an error code will + be returned. The solver workspace maintains a current estimate of the + best-fit parameters at all times. + +The solver workspace :data:`w` contains the following entries, which can +be used to track the progress of the solution: + +:code:`gsl_vector * x` + + The current position, length :math:`p`. + +:code:`gsl_vector * f` + + The function residual vector at the current position :math:`f(x)`, length + :math:`n`. + +:code:`gsl_matrix * J` + + The Jacobian matrix at the current position :math:`J(x)`, size + :math:`n`-by-:math:`p` (only for :code:`gsl_multifit_nlinear` interface). + +:code:`gsl_vector * dx` + + The difference between the current position and the previous position, + i.e. the last step :math:`\delta`, taken as a vector, length :math:`p`. + +These quantities can be accessed with the following functions, + +.. function:: gsl_vector * gsl_multifit_nlinear_position (const gsl_multifit_nlinear_workspace * w) + gsl_vector * gsl_multilarge_nlinear_position (const gsl_multilarge_nlinear_workspace * w) + + These functions return the current position :math:`x` (i.e. best-fit + parameters) of the solver :data:`w`. + +.. function:: gsl_vector * gsl_multifit_nlinear_residual (const gsl_multifit_nlinear_workspace * w) + gsl_vector * gsl_multilarge_nlinear_residual (const gsl_multilarge_nlinear_workspace * w) + + These functions return the current residual vector :math:`f(x)` of the + solver :data:`w`. For weighted systems, the residual vector includes the + weighting factor :math:`\sqrt{W}`. + +.. function:: gsl_matrix * gsl_multifit_nlinear_jac (const gsl_multifit_nlinear_workspace * w) + + This function returns a pointer to the :math:`n`-by-:math:`p` Jacobian matrix for the + current iteration of the solver :data:`w`. This function is available only for the + :code:`gsl_multifit_nlinear` interface. + +.. function:: size_t gsl_multifit_nlinear_niter (const gsl_multifit_nlinear_workspace * w) + size_t gsl_multilarge_nlinear_niter (const gsl_multilarge_nlinear_workspace * w) + + These functions return the number of iterations performed so far. + The iteration counter is updated on each call to the + :code:`_iterate` functions above, and reset to 0 in the + :code:`_init` functions. + +.. function:: int gsl_multifit_nlinear_rcond (double * rcond, const gsl_multifit_nlinear_workspace * w) + int gsl_multilarge_nlinear_rcond (double * rcond, const gsl_multilarge_nlinear_workspace * w) + + This function estimates the reciprocal condition number + of the Jacobian matrix at the current position :math:`x` and + stores it in :data:`rcond`. The computed value is only an estimate + to give the user a guideline as to the conditioning of their particular + problem. Its calculation is based on which factorization + method is used (Cholesky, QR, or SVD). + + * For the Cholesky solver, the matrix :math:`J^T J` is factored at each + iteration. Therefore this function will estimate the 1-norm condition number + :math:`rcond^2 = 1/(||J^T J||_1 \cdot ||(J^T J)^{-1}||_1)` + + * For the QR solver, :math:`J` is factored as :math:`J = Q R` at each + iteration. For simplicity, this function calculates the 1-norm conditioning of + only the :math:`R` factor, :math:`rcond = 1 / (||R||_1 \cdot ||R^{-1}||_1)`. + This can be computed efficiently since :math:`R` is upper triangular. + + * For the SVD solver, in order to efficiently solve the trust region + subproblem, the matrix which is factored is :math:`J D^{-1}`, instead of + :math:`J` itself. The resulting singular values are used to provide + the 2-norm reciprocal condition number, as :math:`rcond = \sigma_{min} / \sigma_{max}`. + Note that when using |More| scaling, :math:`D \ne I` and the resulting + :data:`rcond` estimate may be significantly different from the true + :data:`rcond` of :math:`J` itself. + +.. function:: double gsl_multifit_nlinear_avratio (const gsl_multifit_nlinear_workspace * w) + double gsl_multilarge_nlinear_avratio (const gsl_multilarge_nlinear_workspace * w) + + This function returns the current ratio :math:`|a| / |v|` of the acceleration correction term to + the velocity step term. The acceleration term is computed only by the + :type:`gsl_multifit_nlinear_trs_lmaccel` and :type:`gsl_multilarge_nlinear_trs_lmaccel` methods, so + this ratio will be zero for other TRS methods. + +.. index:: + single: nonlinear fitting, stopping parameters, convergence + +Testing for Convergence +======================= + +A minimization procedure should stop when one of the following conditions is +true: + +* A minimum has been found to within the user-specified precision. +* A user-specified maximum number of iterations has been reached. +* An error has occurred. + +The handling of these conditions is under user control. The functions +below allow the user to test the current estimate of the best-fit +parameters in several standard ways. + +.. function:: int gsl_multifit_nlinear_test (const double xtol, const double gtol, const double ftol, int * info, const gsl_multifit_nlinear_workspace * w) + int gsl_multilarge_nlinear_test (const double xtol, const double gtol, const double ftol, int * info, const gsl_multilarge_nlinear_workspace * w) + + These functions test for convergence of the minimization method + using the following criteria: + + * Testing for a small step size relative to the current parameter vector + + .. math:: |\delta_i| \le xtol (|x_i| + xtol) + + for each :math:`0 <= i < p`. Each element of the step vector :math:`\delta` + is tested individually in case the different parameters have widely + different scales. Adding :data:`xtol` to :math:`|x_i|` helps the test avoid + breaking down in situations where the true solution value :math:`x_i = 0`. + If this test succeeds, :data:`info` is set to 1 and the function + returns :macro:`GSL_SUCCESS`. + + A general guideline for selecting the step tolerance is to choose + :math:`xtol = 10^{-d}` where :math:`d` is the number of accurate + decimal digits desired in the solution :math:`x`. See Dennis and + Schnabel for more information. + + * Testing for a small gradient (:math:`g = \nabla \Phi(x) = J^T f`) + indicating a local function minimum: + + .. only:: not texinfo + + .. math:: \max_i |g_i \times \max(x_i, 1)| \le gtol \times \max(\Phi(x), 1) + + .. only:: texinfo + + :: + + ||g||_inf <= gtol + + This expression tests whether the ratio + :math:`(\nabla \Phi)_i x_i / \Phi` is small. Testing this scaled gradient + is a better than :math:`\nabla \Phi` alone since it is a dimensionless + quantity and so independent of the scale of the problem. The + :code:`max` arguments help ensure the test doesn't break down in + regions where :math:`x_i` or :math:`\Phi(x)` are close to 0. + If this test succeeds, :data:`info` is set to 2 and the function + returns :macro:`GSL_SUCCESS`. + + A general guideline for choosing the gradient tolerance is to set + :code:`gtol = GSL_DBL_EPSILON^(1/3)`. See Dennis and Schnabel for + more information. + + If none of the tests succeed, :data:`info` is set to 0 and the + function returns :macro:`GSL_CONTINUE`, indicating further iterations + are required. + +High Level Driver +================= + +These routines provide a high level wrapper that combines the iteration +and convergence testing for easy use. + +.. function:: int gsl_multifit_nlinear_driver (const size_t maxiter, const double xtol, const double gtol, const double ftol, void (* callback)(const size_t iter, void * params, const gsl_multifit_linear_workspace * w), void * callback_params, int * info, gsl_multifit_nlinear_workspace * w) + int gsl_multilarge_nlinear_driver (const size_t maxiter, const double xtol, const double gtol, const double ftol, void (* callback)(const size_t iter, void * params, const gsl_multilarge_linear_workspace * w), void * callback_params, int * info, gsl_multilarge_nlinear_workspace * w) + + These functions iterate the nonlinear least squares solver :data:`w` for a + maximum of :data:`maxiter` iterations. After each iteration, the system is + tested for convergence with the error tolerances :data:`xtol`, :data:`gtol` and :data:`ftol`. + Additionally, the user may supply a callback function :data:`callback` + which is called after each iteration, so that the user may save or print + relevant quantities for each iteration. The parameter :data:`callback_params` + is passed to the :data:`callback` function. The parameters :data:`callback` + and :data:`callback_params` may be set to :code:`NULL` to disable this feature. + Upon successful convergence, the function returns :macro:`GSL_SUCCESS` + and sets :data:`info` to the reason for convergence (see + :func:`gsl_multifit_nlinear_test`). If the function has not + converged after :data:`maxiter` iterations, :macro:`GSL_EMAXITER` is + returned. In rare cases, during an iteration the algorithm may + be unable to find a new acceptable step :math:`\delta` to take. In + this case, :macro:`GSL_ENOPROG` is returned indicating no further + progress can be made. If your problem is having difficulty converging, + see :ref:`sec_nlinear-troubleshooting` for further guidance. + +.. index:: + single: best-fit parameters, covariance + single: least squares, covariance of best-fit parameters + single: covariance matrix, nonlinear fits + +Covariance matrix of best fit parameters +======================================== + +.. function:: int gsl_multifit_nlinear_covar (const gsl_matrix * J, const double epsrel, gsl_matrix * covar) + int gsl_multilarge_nlinear_covar (gsl_matrix * covar, gsl_multilarge_nlinear_workspace * w) + + This function computes the covariance matrix of best-fit parameters + using the Jacobian matrix :data:`J` and stores it in :data:`covar`. + The parameter :data:`epsrel` is used to remove linear-dependent columns + when :data:`J` is rank deficient. + + The covariance matrix is given by, + + .. math:: C = (J^T J)^{-1} + + or in the weighted case, + + .. math:: C = (J^T W J)^{-1} + + and is computed using the factored form of the Jacobian (Cholesky, QR, or SVD). + Any columns of :math:`R` which satisfy + + .. math:: |R_{kk}| \leq epsrel |R_{11}| + + are considered linearly-dependent and are excluded from the covariance + matrix (the corresponding rows and columns of the covariance matrix are + set to zero). + + If the minimisation uses the weighted least-squares function + :math:`f_i = (Y(x, t_i) - y_i) / \sigma_i` then the covariance + matrix above gives the statistical error on the best-fit parameters + resulting from the Gaussian errors :math:`\sigma_i` on + the underlying data :math:`y_i`. This can be verified from the relation + :math:`\delta f = J \delta c` and the fact that the fluctuations in :math:`f` + from the data :math:`y_i` are normalised by :math:`\sigma_i` and + so satisfy + + .. only:: not texinfo + + .. math:: \langle \delta f \delta f^T \rangle = I + + .. only:: texinfo + + :: + + <\delta f \delta f^T> = I + + For an unweighted least-squares function :math:`f_i = (Y(x, t_i) - y_i)` + the covariance matrix above should be multiplied by the variance + of the residuals about the best-fit :math:`\sigma^2 = \sum (y_i - Y(x,t_i))^2 / (n-p)` + to give the variance-covariance + matrix :math:`\sigma^2 C`. This estimates the statistical error on the + best-fit parameters from the scatter of the underlying data. + + For more information about covariance matrices see + :ref:`Linear Least-Squares Overview `. + +.. _sec_nlinear-troubleshooting: + +Troubleshooting +=============== + +When developing a code to solve a nonlinear least squares problem, +here are a few considerations to keep in mind. + +#. The most common difficulty is the accurate implementation of the Jacobian + matrix. If the analytic Jacobian is not properly provided to the + solver, this can hinder and many times prevent convergence of the method. + When developing a new nonlinear least squares code, it often helps + to compare the program output with the internally computed finite + difference Jacobian and the user supplied analytic Jacobian. If there + is a large difference in coefficients, it is likely the analytic + Jacobian is incorrectly implemented. + +#. If your code is having difficulty converging, the next thing to + check is the starting point provided to the solver. The methods + of this chapter are local methods, meaning if you provide a starting + point far away from the true minimum, the method may converge to + a local minimum or not converge at all. Sometimes it is possible + to solve a linearized approximation to the nonlinear problem, + and use the linear solution as the starting point to the nonlinear + problem. + +#. If the various parameters of the coefficient vector :math:`x` + vary widely in magnitude, then the problem is said to be badly scaled. + The methods of this chapter do attempt to automatically rescale + the elements of :math:`x` to have roughly the same order of magnitude, + but in extreme cases this could still cause problems for convergence. + In these cases it is recommended for the user to scale their + parameter vector :math:`x` so that each parameter spans roughly the + same range, say :math:`[-1,1]`. The solution vector can be backscaled + to recover the original units of the problem. + +Examples +======== + +The following example programs demonstrate the nonlinear least +squares fitting capabilities. + +Exponential Fitting Example +--------------------------- + +The following example program fits a weighted exponential model with +background to experimental data, :math:`Y = A \exp(-\lambda t) + b`. The +first part of the program sets up the functions :func:`expb_f` and +:func:`expb_df` to calculate the model and its Jacobian. The appropriate +fitting function is given by, + +.. math:: f_i = (A \exp(-\lambda t_i) + b) - y_i + +where we have chosen :math:`t_i = i T / (N - 1)`, where :math:`N` is the number +of data points fitted, so that :math:`t_i \in [0, T]`. The Jacobian matrix :math:`J` is +the derivative of these functions with respect to the three parameters +(:math:`A`, :math:`\lambda`, :math:`b`). It is given by, + +.. only:: not texinfo + + .. math:: J_{ij} = {\partial f_i \over \partial x_j} + +.. only:: texinfo + + :: + + J_{ij} = d f_i / d x_j + +where :math:`x_0 = A`, :math:`x_1 = \lambda` and :math:`x_2 = b`. +The :math:`i`-th row of the Jacobian is therefore + +.. only:: not texinfo + + .. math:: + + J_{i\cdot} = + \left( + \begin{array}{ccc} + \exp(-\lambda t_i) & -t_i A \exp(-\lambda t_i) & 1 + \end{array} + \right) + +.. only:: texinfo + + :: + + J(i,:) = [ \exp(-\lambda t_i) ; -t_i A \exp(-\lambda t_i) ; 1 ] + +The main part of the program sets up a Levenberg-Marquardt solver and +some simulated random data. The data uses the known parameters +(5.0,0.1,1.0) combined with Gaussian noise (standard deviation = 0.1) +with a maximum time :math:`T = 40` and :math:`N = 100` timesteps. +The initial guess for the parameters is +chosen as (1.0, 1.0, 0.0). The iteration terminates when the relative +change in x is smaller than :math:`10^{-8}`, or when the magnitude of +the gradient falls below :math:`10^{-8}`. Here are the results of running +the program:: + + iter 0: A = 1.0000, lambda = 1.0000, b = 0.0000, cond(J) = inf, |f(x)| = 100.8779 + iter 1: A = 1.2692, lambda = 0.3924, b = 0.0443, cond(J) = 69.5973, |f(x)| = 97.1734 + iter 2: A = 1.6749, lambda = 0.1685, b = 0.1072, cond(J) = 29.5220, |f(x)| = 88.6636 + iter 3: A = 2.5579, lambda = 0.0544, b = 0.2552, cond(J) = 22.9334, |f(x)| = 42.7765 + iter 4: A = 3.0167, lambda = 0.0472, b = 0.3704, cond(J) = 120.2912, |f(x)| = 23.0102 + iter 5: A = 3.3590, lambda = 0.0455, b = 0.4321, cond(J) = 266.5620, |f(x)| = 16.0680 + iter 6: A = 3.6552, lambda = 0.0479, b = 0.4426, cond(J) = 343.8946, |f(x)| = 14.6421 + iter 7: A = 3.9546, lambda = 0.0532, b = 0.4897, cond(J) = 301.4985, |f(x)| = 13.5266 + iter 8: A = 4.1421, lambda = 0.0633, b = 0.6783, cond(J) = 203.9164, |f(x)| = 12.3149 + iter 9: A = 4.3752, lambda = 0.0800, b = 0.9228, cond(J) = 158.2267, |f(x)| = 11.2475 + iter 10: A = 4.6371, lambda = 0.0891, b = 0.9588, cond(J) = 136.6189, |f(x)| = 10.5457 + iter 11: A = 4.7684, lambda = 0.0937, b = 0.9860, cond(J) = 125.4740, |f(x)| = 10.4753 + iter 12: A = 4.7977, lambda = 0.0948, b = 0.9917, cond(J) = 120.1098, |f(x)| = 10.4723 + iter 13: A = 4.8006, lambda = 0.0949, b = 0.9924, cond(J) = 118.9113, |f(x)| = 10.4723 + iter 14: A = 4.8008, lambda = 0.0949, b = 0.9925, cond(J) = 118.7661, |f(x)| = 10.4723 + iter 15: A = 4.8008, lambda = 0.0949, b = 0.9925, cond(J) = 118.7550, |f(x)| = 10.4723 + iter 16: A = 4.8008, lambda = 0.0949, b = 0.9925, cond(J) = 118.7543, |f(x)| = 10.4723 + iter 17: A = 4.8008, lambda = 0.0949, b = 0.9925, cond(J) = 118.7543, |f(x)| = 10.4723 + iter 18: A = 4.8008, lambda = 0.0949, b = 0.9925, cond(J) = 118.7543, |f(x)| = 10.4723 + summary from method 'trust-region/levenberg-marquardt' + number of iterations: 18 + function evaluations: 25 + Jacobian evaluations: 19 + reason for stopping: small step size + initial |f(x)| = 100.877904 + final |f(x)| = 10.472268 + chisq/dof = 1.1306 + A = 4.80085 +/- 0.17652 + lambda = 0.09488 +/- 0.00527 + b = 0.99249 +/- 0.04419 + status = success + +The approximate values of the parameters are found correctly, and the +chi-squared value indicates a good fit (the chi-squared per degree of +freedom is approximately 1). In this case the errors on the parameters +can be estimated from the square roots of the diagonal elements of the +covariance matrix. If the chi-squared value shows a poor fit (i.e. +:math:`\chi^2/(n-p) \gg 1` +then the error estimates obtained from the +covariance matrix will be too small. In the example program the error estimates +are multiplied by :math:`\sqrt{\chi^2/(n-p)}` +in this case, a common way of increasing the +errors for a poor fit. Note that a poor fit will result from the use +of an inappropriate model, and the scaled error estimates may then +be outside the range of validity for Gaussian errors. + +Additionally, we see that the condition number of :math:`J(x)` stays +reasonably small throughout the iteration. This indicates we could +safely switch to the Cholesky solver for speed improvement, +although this particular system is too small to really benefit. + +:numref:`fig_fit-exp` shows the fitted curve with the original data. + +.. _fig_fit-exp: + +.. figure:: /images/fit-exp.png + :scale: 60% + + Exponential fitted curve with data + +.. include:: examples/nlfit.c + :code: + +Geodesic Acceleration Example 1 +------------------------------- + +The following example program minimizes a modified Rosenbrock function, +which is characterized by a narrow canyon with steep walls. The +starting point is selected high on the canyon wall, so the solver +must first find the canyon bottom and then navigate to the minimum. +The problem is solved both with and without using geodesic acceleration +for comparison. The cost function is given by + +.. only:: not texinfo + + .. math:: + + \Phi(x) &= {1 \over 2} (f_1^2 + f_2^2) \\ + f_1 &= 100 \left( x_2 - x_1^2 \right) \\ + f_2 &= 1 - x_1 + +.. only:: texinfo + + :: + + Phi(x) = 1/2 (f1^2 + f2^2) + f1 = 100 ( x2 - x1^2 ) + f2 = 1 - x1 + +The Jacobian matrix is + +.. only:: not texinfo + + .. math:: + + J = + \left( + \begin{array}{cc} + {\partial f_1 \over \partial x_1} & {\partial f_1 \over \partial x_2} \\ + {\partial f_2 \over \partial x_1} & {\partial f_2 \over \partial x_2} + \end{array} + \right) = + \left( + \begin{array}{cc} + -200 x_1 & 100 \\ + -1 & 0 + \end{array} + \right) + +.. only:: texinfo + + :: + + J = [ -200*x1 100 ] + [ -1 0 ] + +In order to use geodesic acceleration, the user must provide +the second directional derivative of each residual in the +velocity direction, +:math:`D_v^2 f_i = \sum_{\alpha\beta} v_{\alpha} v_{\beta} \partial_{\alpha} \partial_{\beta} f_i`. +The velocity vector :math:`v` is provided by the solver. For this example, +these derivatives are + +.. only:: not texinfo + + .. math:: + + f_{vv} = + D_v^2 + \left( + \begin{array}{c} + f_1 \\ + f_2 + \end{array} + \right) = + \left( + \begin{array}{c} + -200 v_1^2 \\ + 0 + \end{array} + \right) + +.. only:: texinfo + + :: + + fvv = [ -200 v1^2 ] + [ 0 ] + +The solution of this minimization problem is + +.. only:: not texinfo + + .. math:: + + x^{*} &= + \left( + \begin{array}{c} + 1 \\ + 1 + \end{array} + \right) \\ + \Phi(x^{*}) &= 0 + +.. only:: texinfo + + :: + + x* = [ 1 ; 1 ] + Phi(x*) = 0 + +The program output is shown below:: + + === Solving system without acceleration === + NITER = 53 + NFEV = 56 + NJEV = 54 + NAEV = 0 + initial cost = 2.250225000000e+04 + final cost = 6.674986031430e-18 + final x = (9.999999974165e-01, 9.999999948328e-01) + final cond(J) = 6.000096055094e+02 + === Solving system with acceleration === + NITER = 15 + NFEV = 17 + NJEV = 16 + NAEV = 16 + initial cost = 2.250225000000e+04 + final cost = 7.518932873279e-19 + final x = (9.999999991329e-01, 9.999999982657e-01) + final cond(J) = 6.000097233278e+02 + +.. _fig_nlfit2: + +.. figure:: /images/nlfit2.png + + Paths taken by solver for Rosenbrock function + +We can see that enabling geodesic acceleration requires less +than a third of the number of Jacobian evaluations in order to locate +the minimum. The path taken by both methods is shown in :numref:`fig_nlfit2`. +The contours show the cost function +:math:`\Phi(x_1,x_2)`. We see that both methods quickly +find the canyon bottom, but the geodesic acceleration method +navigates along the bottom to the solution with significantly +fewer iterations. + +The program is given below. + +.. include:: examples/nlfit2.c + :code: + +Geodesic Acceleration Example 2 +------------------------------- + +The following example fits a set of data to a Gaussian model +using the Levenberg-Marquardt method with geodesic acceleration. +The cost function is + +.. only:: not texinfo + + .. math:: + + \Phi(x) &= {1 \over 2} \sum_i f_i^2 \\ + f_i &= y_i - Y(a,b,c;t_i) + +.. only:: texinfo + + :: + + Phi(x) = 1/2 \sum_i f_i^2 + f_i = y_i - Y(a,b,c;t_i) + +where :math:`y_i` is the measured data point at time :math:`t_i`, and +the model is specified by + +.. only:: not texinfo + + .. math:: + + Y(a,b,c;t) = a \exp{ + \left[ + -{1 \over 2} + \left( + { t - b \over c } + \right)^2 + \right] + } + +.. only:: texinfo + + :: + + Y(a,b,c;t) = a exp(-1/2 ((t-b)/c)^2) + +The parameters :math:`a,b,c` represent the amplitude, mean, and width of the Gaussian +respectively. The program below generates the :math:`y_i` data on :math:`[0,1]` using +the values :math:`a = 5`, :math:`b = 0.4`, :math:`c = 0.15` and adding random noise. +The :math:`i`-th row of the Jacobian is + +.. only:: not texinfo + + .. math:: + + J_{i,:} = + \left( + \begin{array}{ccc} + {\partial f_i \over \partial a} & {\partial f_i \over \partial b} & {\partial f_i \over \partial c} + \end{array} + \right) = + \left( + \begin{array}{ccc} + -e_i & -{a \over c} z_i e_i & -{a \over c} z_i^2 e_i + \end{array} + \right) + +.. only:: texinfo + + :: + + J(i,:) = ( -e_i -(a/c)*z_i*e_i -(a/c)*z_i^2*e_i ) + +where + +.. only:: not texinfo + + .. math:: + + z_i &= { t_i - b \over c} \\ + e_i &= \exp{\left( -{1 \over 2} z_i^2 \right)} + +.. only:: texinfo + + :: + + z_i = (t_i - b) / c + e_i = \exp(-1/2 z_i^2) + +In order to use geodesic acceleration, we need the second directional derivative +of the residuals in the velocity direction, +:math:`D_v^2 f_i = \sum_{\alpha\beta} v_{\alpha} v_{\beta} \partial_{\alpha} \partial_{\beta} f_i`, +where :math:`v` is provided by the solver. To compute this, it is helpful to make a table of +all second derivatives of the residuals :math:`f_i` with respect to each combination of model parameters. +This table is + +.. only:: not texinfo + + .. math:: + + \begin{array}{cccc} + & {\partial \over \partial a} & {\partial \over \partial b} & {\partial \over \partial c} \cr + {\partial \over \partial a} & 0 & -{z_i \over c} e_i & -{z_i^2 \over c} e_i \cr + {\partial \over \partial b} & & {a \over c^2} \left( 1 - z_i^2 \right) e_i & {a \over c^2} z_i \left( 2 - z_i^2 \right) e_i \cr + {\partial \over \partial c} & & & {a \over c^2} z_i^2 \left( 3 - z_i^2 \right) e_i + \end{array} + +The lower half of the table is omitted since it is symmetric. Then, the second directional derivative +of :math:`f_i` is + +.. only:: not texinfo + + .. math:: D_v^2 f_i = v_a^2 \partial_a^2 f_i + 2 v_a v_b \partial_a \partial_b f_i + 2 v_a v_c \partial_a \partial_c f_i + v_b^2 \partial_b^2 f_i + 2 v_b v_c \partial_b \partial_c f_i + v_c^2 \partial_c^2 f_i + +.. only:: texinfo + + :: + + D_v^2 f_i = v_a^2 (d/da)^2 f_i + 2 v_a v_b (d/da) (d/db) f_i + 2 v_a v_c (d/da) (d/dc) f_i + v_b^2 (d/db)^2 f_i + 2 v_b v_c (d/db) (d/dc) f_i + v_c^2 (d/dc)^2 f_i + +The factors of 2 come from the symmetry of the mixed second partial derivatives. +The iteration is started using the initial guess :math:`a = 1, b = 0, c = 1`. +The program output is shown below:: + + iter 0: a = 1.0000, b = 0.0000, c = 1.0000, |a|/|v| = 0.0000 cond(J) = inf, |f(x)| = 35.4785 + iter 1: a = 1.5708, b = 0.5321, c = 0.5219, |a|/|v| = 0.3093 cond(J) = 29.0443, |f(x)| = 31.1042 + iter 2: a = 1.7387, b = 0.4040, c = 0.4568, |a|/|v| = 0.1199 cond(J) = 3.5256, |f(x)| = 28.7217 + iter 3: a = 2.2340, b = 0.3829, c = 0.3053, |a|/|v| = 0.3308 cond(J) = 4.5121, |f(x)| = 23.8074 + iter 4: a = 3.2275, b = 0.3952, c = 0.2243, |a|/|v| = 0.2784 cond(J) = 8.6499, |f(x)| = 15.6003 + iter 5: a = 4.3347, b = 0.3974, c = 0.1752, |a|/|v| = 0.2029 cond(J) = 15.1732, |f(x)| = 7.5908 + iter 6: a = 4.9352, b = 0.3992, c = 0.1536, |a|/|v| = 0.1001 cond(J) = 26.6621, |f(x)| = 4.8402 + iter 7: a = 5.0716, b = 0.3994, c = 0.1498, |a|/|v| = 0.0166 cond(J) = 34.6922, |f(x)| = 4.7103 + iter 8: a = 5.0828, b = 0.3994, c = 0.1495, |a|/|v| = 0.0012 cond(J) = 36.5422, |f(x)| = 4.7095 + iter 9: a = 5.0831, b = 0.3994, c = 0.1495, |a|/|v| = 0.0000 cond(J) = 36.6929, |f(x)| = 4.7095 + iter 10: a = 5.0831, b = 0.3994, c = 0.1495, |a|/|v| = 0.0000 cond(J) = 36.6975, |f(x)| = 4.7095 + iter 11: a = 5.0831, b = 0.3994, c = 0.1495, |a|/|v| = 0.0000 cond(J) = 36.6976, |f(x)| = 4.7095 + NITER = 11 + NFEV = 18 + NJEV = 12 + NAEV = 17 + initial cost = 1.258724737288e+03 + final cost = 2.217977560180e+01 + final x = (5.083101559156e+00, 3.994484109594e-01, 1.494898e-01) + final cond(J) = 3.669757713403e+01 + +We see the method converges after 11 iterations. For comparison the standard +Levenberg-Marquardt method requires 26 iterations and so the Gaussian fitting +problem benefits substantially from the geodesic acceleration correction. The +column marked :code:`|a|/|v|` above shows the ratio of the acceleration term +to the velocity term as the iteration progresses. Larger values of this +ratio indicate that the geodesic acceleration correction term is contributing +substantial information to the solver relative to the standard LM velocity step. + +The data and fitted model are shown in :numref:`fig_nlfit2b`. + +.. _fig_nlfit2b: + +.. figure:: /images/nlfit2b.png + + Gaussian model fitted to data + +The program is given below. + +.. include:: examples/nlfit2b.c + :code: + +Comparing TRS Methods Example +----------------------------- + +The following program compares all available nonlinear least squares +trust-region subproblem (TRS) methods on the Branin function, a common +optimization test problem. The cost function is + +.. only:: not texinfo + + .. math:: + + \Phi(x) &= {1 \over 2} (f_1^2 + f_2^2) \\ + f_1 &= x_2 + a_1 x_1^2 + a_2 x_1 + a_3 \\ + f_2 &= \sqrt{a_4} \sqrt{1 + (1 - a_5) \cos{x_1}} + +.. only:: texinfo + + :: + + \Phi(x) &= 1/2 (f_1^2 + f_2^2) + f_1 &= x_2 + a_1 x_1^2 + a_2 x_1 + a_3 + f_2 &= sqrt(a_4) sqrt(1 + (1 - a_5) cos(x_1)) + +with :math:`a_1 = -{5.1 \over 4 \pi^2}, a_2 = {5 \over \pi}, a_3 = -6, a_4 = 10, a_5 = {1 \over 8\pi}`. +There are three minima of this function in the range +:math:`(x_1,x_2) \in [-5,15] \times [-5,15]`. The program +below uses the starting point :math:`(x_1,x_2) = (6,14.5)` +and calculates the solution with all available nonlinear +least squares TRS methods. The program output is shown below:: + + Method NITER NFEV NJEV Initial Cost Final cost Final cond(J) Final x + levenberg-marquardt 20 27 21 1.9874e+02 3.9789e-01 6.1399e+07 (-3.14e+00, 1.23e+01) + levenberg-marquardt+accel 27 36 28 1.9874e+02 3.9789e-01 1.4465e+07 (3.14e+00, 2.27e+00) + dogleg 23 64 23 1.9874e+02 3.9789e-01 5.0692e+08 (3.14e+00, 2.28e+00) + double-dogleg 24 69 24 1.9874e+02 3.9789e-01 3.4879e+07 (3.14e+00, 2.27e+00) + 2D-subspace 23 54 24 1.9874e+02 3.9789e-01 2.5142e+07 (3.14e+00, 2.27e+00) + +The first row of output above corresponds to standard Levenberg-Marquardt, while +the second row includes geodesic acceleration. We see that the standard LM method +converges to the minimum at :math:`(-\pi,12.275)` and also uses the least number +of iterations and Jacobian evaluations. All other methods converge to the minimum +:math:`(\pi,2.275)` and perform similarly in terms of number of Jacobian evaluations. +We see that :math:`J` is fairly ill-conditioned +at both minima, indicating that the QR (or SVD) solver is the best choice for this problem. +Since there are only two parameters in this optimization problem, we can easily +visualize the paths taken by each method, which are shown in :numref:`fig_nlfit3`. +The figure shows contours of the cost function :math:`\Phi(x_1,x_2)` which exhibits +three global minima in the range :math:`[-5,15] \times [-5,15]`. The paths taken +by each solver are shown as colored lines. + +.. _fig_nlfit3: + +.. figure:: /images/nlfit3.png + :scale: 60% + + Paths taken for different TRS methods for the Branin function + +The program is given below. + +.. include:: examples/nlfit3.c + :code: + +Large Nonlinear Least Squares Example +------------------------------------- + +The following program illustrates the large nonlinear least +squares solvers on a system with significant sparse structure +in the Jacobian. The cost function is + +.. only:: not texinfo + + .. math:: + + \Phi(x) &= {1 \over 2} \sum_{i=1}^{p+1} f_i^2 \\ + f_i &= \sqrt{\alpha} (x_i - 1), \quad 1 \le i \le p \\ + f_{p+1} &= ||x||^2 - {1 \over 4} + +.. only:: texinfo + + :: + + \Phi(x) &= 1/2 \sum_{i=1}^{p+1} f_i^2 + f_i &= \sqrt{\alpha} (x_i - 1), 1 \le i \le p + f_{p+1} &= ||x||^2 - 1/4 + +with :math:`\alpha = 10^{-5}`. The residual :math:`f_{p+1}` imposes a constraint on the :math:`p` +parameters :math:`x`, to ensure that :math:`||x||^2 \approx {1 \over 4}`. +The :math:`(p+1)`-by-:math:`p` Jacobian for this system is + +.. only:: not texinfo + + .. math:: + + J(x) = + \left( + \begin{array}{c} + \sqrt{\alpha} I_p \\ + 2 x^T + \end{array} + \right) + +.. only:: texinfo + + :: + + J(x) = [ \sqrt{alpha} I_p; 2 x^T ] + +and the normal equations matrix is + +.. math:: J^T J = \alpha I_p + 4 x x^T + +Finally, the second directional derivative of :math:`f` for the +geodesic acceleration method is + +.. only:: not texinfo + + .. math:: + + f_{vv} = D_v^2 f = + \left( + \begin{array}{c} + 0 \\ + 2 ||v||^2 + \end{array} + \right) + +.. only:: texinfo + + :: + + fvv = [ 0 ] + [ 2 ||v||^2 ] + +Since the upper :math:`p`-by-:math:`p` block of :math:`J` is diagonal, +this sparse structure should be exploited in the nonlinear solver. +For comparison, the following program solves the system for :math:`p = 2000` +using the dense direct Cholesky solver based on the normal equations matrix +:math:`J^T J`, as well as the iterative Steihaug-Toint solver, based on +sparse matrix-vector products :math:`J u` and :math:`J^T u`. The +program output is shown below:: + + Method NITER NFEV NJUEV NJTJEV NAEV Init Cost Final cost cond(J) Final |x|^2 Time (s) + levenberg-marquardt 25 31 26 26 0 7.1218e+18 1.9555e-02 447.50 2.5044e-01 46.28 + levenberg-marquardt+accel 22 23 45 23 22 7.1218e+18 1.9555e-02 447.64 2.5044e-01 33.92 + dogleg 37 87 36 36 0 7.1218e+18 1.9555e-02 447.59 2.5044e-01 56.05 + double-dogleg 35 88 34 34 0 7.1218e+18 1.9555e-02 447.62 2.5044e-01 52.65 + 2D-subspace 37 88 36 36 0 7.1218e+18 1.9555e-02 447.71 2.5044e-01 59.75 + steihaug-toint 35 88 345 0 0 7.1218e+18 1.9555e-02 inf 2.5044e-01 0.09 + +The first five rows use methods based on factoring the dense :math:`J^T J` matrix +while the last row uses the iterative Steihaug-Toint method. While the number +of Jacobian matrix-vector products (NJUEV) is less for the dense methods, the added time +to construct and factor the :math:`J^T J` matrix (NJTJEV) results in a much larger runtime than the +iterative method (see last column). + +The program is given below. + +.. include:: examples/nlfit4.c + :code: + +References and Further Reading +============================== + +The following publications are relevant to the algorithms described +in this section, + +* J.J. |More|, *The Levenberg-Marquardt Algorithm: Implementation and + Theory*, Lecture Notes in Mathematics, v630 (1978), ed G. Watson. + +* H. B. Nielsen, "Damping Parameter in Marquardt's Method", + IMM Department of Mathematical Modeling, DTU, Tech. Report IMM-REP-1999-05 + (1999). + +* K. Madsen and H. B. Nielsen, "Introduction to Optimization and Data + Fitting", IMM Department of Mathematical Modeling, DTU, 2010. + +* J. E. Dennis and R. B. Schnabel, Numerical Methods for Unconstrained + Optimization and Nonlinear Equations, SIAM, 1996. + +* M. K. Transtrum, B. B. Machta, and J. P. Sethna, + Geometry of nonlinear least squares with applications to sloppy models and optimization, + Phys. Rev. E 83, 036701, 2011. + +* M. K. Transtrum and J. P. Sethna, Improvements to the Levenberg-Marquardt + algorithm for nonlinear least-squares minimization, arXiv:1201.5885, 2012. + +* J.J. |More|, B.S. Garbow, K.E. Hillstrom, "Testing Unconstrained + Optimization Software", ACM Transactions on Mathematical Software, Vol + 7, No 1 (1981), p 17--41. + +* H. B. Nielsen, "UCTP Test Problems for Unconstrained Optimization", + IMM Department of Mathematical Modeling, DTU, Tech. Report IMM-REP-2000-17 + (2000). diff --git a/gsl-2.5/doc/ntuple.rst b/gsl-2.5/doc/ntuple.rst new file mode 100644 index 00000000..7f4439f2 --- /dev/null +++ b/gsl-2.5/doc/ntuple.rst @@ -0,0 +1,191 @@ +.. index:: ntuples + +******** +N-tuples +******** + +This chapter describes functions for creating and manipulating +*ntuples*, sets of values associated with events. The ntuples +are stored in files. Their values can be extracted in any combination +and *booked* in a histogram using a selection function. + +The values to be stored are held in a user-defined data structure, and +an ntuple is created associating this data structure with a file. The +values are then written to the file (normally inside a loop) using +the ntuple functions described below. + +A histogram can be created from ntuple data by providing a selection +function and a value function. The selection function specifies whether +an event should be included in the subset to be analyzed or not. The value +function computes the entry to be added to the histogram for each +event. + +All the ntuple functions are defined in the header file +:file:`gsl_ntuple.h`. + +The ntuple struct +================= + +.. type:: gsl_ntuple + + Ntuples are manipulated using the :type:`gsl_ntuple` struct. This struct + contains information on the file where the ntuple data is stored, a + pointer to the current ntuple data row and the size of the user-defined + ntuple data struct:: + + typedef struct + { + FILE * file; + void * ntuple_data; + size_t size; + } gsl_ntuple; + +Creating ntuples +================ + +.. function:: gsl_ntuple * gsl_ntuple_create (char * filename, void * ntuple_data, size_t size) + + This function creates a new write-only ntuple file :data:`filename` for + ntuples of size :data:`size` and returns a pointer to the newly created + ntuple struct. Any existing file with the same name is truncated to + zero length and overwritten. A pointer to memory for the current ntuple + row :data:`ntuple_data` must be supplied---this is used to copy ntuples + in and out of the file. + +Opening an existing ntuple file +=============================== + +.. function:: gsl_ntuple * gsl_ntuple_open (char * filename, void * ntuple_data, size_t size) + + This function opens an existing ntuple file :data:`filename` for reading + and returns a pointer to a corresponding ntuple struct. The ntuples in + the file must have size :data:`size`. A pointer to memory for the current + ntuple row :data:`ntuple_data` must be supplied---this is used to copy + ntuples in and out of the file. + +Writing ntuples +=============== + +.. function:: int gsl_ntuple_write (gsl_ntuple * ntuple) + + This function writes the current ntuple :code:`ntuple->ntuple_data` of + size :code:`ntuple->size` to the corresponding file. + +.. function:: int gsl_ntuple_bookdata (gsl_ntuple * ntuple) + + This function is a synonym for :func:`gsl_ntuple_write`. + +Reading ntuples +=============== + +.. function:: int gsl_ntuple_read (gsl_ntuple * ntuple) + + This function reads the current row of the ntuple file for :data:`ntuple` + and stores the values in :code:`ntuple->data`. + +Closing an ntuple file +====================== + +.. function:: int gsl_ntuple_close (gsl_ntuple * ntuple) + + This function closes the ntuple file :data:`ntuple` and frees its + associated allocated memory. + +Histogramming ntuple values +=========================== + +Once an ntuple has been created its contents can be histogrammed in +various ways using the function :func:`gsl_ntuple_project`. Two +user-defined functions must be provided, a function to select events and +a function to compute scalar values. The selection function and the +value function both accept the ntuple row as a first argument and other +parameters as a second argument. + +.. index:: + single: selection function, ntuples + +.. type:: gsl_ntuple_select_fn + + The *selection function* determines which ntuple rows are selected + for histogramming. It is defined by the following struct:: + + typedef struct + { + int (* function) (void * ntuple_data, void * params); + void * params; + } gsl_ntuple_select_fn; + + The struct component :data:`function` should return a non-zero value for + each ntuple row that is to be included in the histogram. + +.. index:: + single: value function, ntuples + +.. type:: gsl_ntuple_value_fn + + The *value function* computes scalar values for those ntuple rows + selected by the selection function:: + + typedef struct + { + double (* function) (void * ntuple_data, void * params); + void * params; + } gsl_ntuple_value_fn; + + In this case the struct component :data:`function` should return the value + to be added to the histogram for the ntuple row. + +.. index:: + single: histogram, from ntuple + single: projection of ntuples + +.. function:: int gsl_ntuple_project (gsl_histogram * h, gsl_ntuple * ntuple, gsl_ntuple_value_fn * value_func, gsl_ntuple_select_fn * select_func) + + This function updates the histogram :data:`h` from the ntuple :data:`ntuple` + using the functions :data:`value_func` and :data:`select_func`. For each + ntuple row where the selection function :data:`select_func` is non-zero the + corresponding value of that row is computed using the function + :data:`value_func` and added to the histogram. Those ntuple rows where + :data:`select_func` returns zero are ignored. New entries are added to + the histogram, so subsequent calls can be used to accumulate further + data in the same histogram. + +Examples +======== + +The following example programs demonstrate the use of ntuples in +managing a large dataset. The first program creates a set of 10,000 +simulated "events", each with 3 associated values :math:`(x,y,z)`. These +are generated from a Gaussian distribution with unit variance, for +demonstration purposes, and written to the ntuple file :file:`test.dat`. + +.. include:: examples/ntuplew.c + :code: + +The next program analyses the ntuple data in the file :file:`test.dat`. +The analysis procedure is to compute the squared-magnitude of each +event, :math:`E^2=x^2+y^2+z^2`, and select only those which exceed a +lower limit of 1.5. The selected events are then histogrammed using +their :math:`E^2` values. + +.. include:: examples/ntupler.c + :code: + +:numref:`fig_ntuples` shows the distribution of the selected events. +Note the cut-off at the lower bound. + +.. _fig_ntuples: + +.. figure:: /images/ntuple.png + :scale: 60% + + Distribution of selected events + +References and Further Reading +============================== + +.. index:: PAW, HBOOK + +Further information on the use of ntuples can be found in the +documentation for the CERN packages PAW and HBOOK +(available online). diff --git a/gsl-2.5/doc/ode-initval.rst b/gsl-2.5/doc/ode-initval.rst new file mode 100644 index 00000000..fbd3c4c6 --- /dev/null +++ b/gsl-2.5/doc/ode-initval.rst @@ -0,0 +1,743 @@ +.. index:: + single: differential equations, initial value problems + single: initial value problems, differential equations + single: ordinary differential equations, initial value problem + single: ODEs, initial value problems + +******************************* +Ordinary Differential Equations +******************************* + +This chapter describes functions for solving ordinary differential +equation (ODE) initial value problems. The library provides a variety +of low-level methods, such as Runge-Kutta and Bulirsch-Stoer routines, +and higher-level components for adaptive step-size control. The +components can be combined by the user to achieve the desired +solution, with full access to any intermediate steps. A driver object +can be used as a high level wrapper for easy use of low level +functions. + +These functions are declared in the header file :file:`gsl_odeiv2.h`. +This is a new interface in version 1.15 and uses the prefix +:code:`gsl_odeiv2` for all functions. It is recommended over the +previous :code:`gsl_odeiv` implementation defined in :file:`gsl_odeiv.h` +The old interface has been retained under the original name for +backwards compatibility. + +Defining the ODE System +======================= + +The routines solve the general :math:`n`-dimensional first-order system, + +.. only:: not texinfo + + .. math:: {dy_i(t) \over dt} = f_i (t, y_1(t), \dots y_n(t)) + +.. only:: texinfo + + :: + + dy_i(t)/dt = f_i(t, y_1(t), ..., y_n(t)) + +for :math:`i = 1, \dots, n`. The stepping functions rely on the vector +of derivatives :math:`f_i` and the Jacobian matrix, + +.. only:: not texinfo + + .. math:: J_{ij} = \partial f_i(t, y(t)) / \partial y_j + +.. only:: texinfo + + :: + + J_{ij} = df_i(t,y(t)) / dy_j + +A system of equations is defined using the :type:`gsl_odeiv2_system` +datatype. + +.. type:: gsl_odeiv2_system + + This data type defines a general ODE system with arbitrary parameters. + + :code:`int (* function) (double t, const double y[], double dydt[], void * params)` + + This function should store the vector elements + :math:`f_i(t,y,params)` in the array :data:`dydt`, + for arguments (:data:`t`, :data:`y`) and parameters :data:`params`. + + The function should return :macro:`GSL_SUCCESS` if the calculation was + completed successfully. Any other return value indicates an error. A + special return value :macro:`GSL_EBADFUNC` causes :code:`gsl_odeiv2` + routines to immediately stop and return. If :code:`function` + is modified (for example contents of :data:`params`), the user must call an + appropriate reset function (:func:`gsl_odeiv2_driver_reset`, + :func:`gsl_odeiv2_evolve_reset` or :func:`gsl_odeiv2_step_reset`) + before continuing. Use return values + distinct from standard GSL error codes to distinguish your function as + the source of the error. + + .. index:: + single: Jacobian matrix, ODEs + + :code:`int (* jacobian) (double t, const double y[], double * dfdy, double dfdt[], void * params)` + + This function should store the vector of derivative elements + + .. only:: not texinfo + + .. math:: \partial f_i(t,y,params) / \partial t + + .. only:: texinfo + + :: + + df_i(t,y,params)/dt + + in the array :data:`dfdt` and the Jacobian matrix :math:`J_{ij}` + in the array :data:`dfdy`, regarded as a row-ordered + matrix :code:`J(i,j) = dfdy[i * dimension + j]` where :code:`dimension` + is the dimension of the system. + + Not all of the stepper algorithms of :code:`gsl_odeiv2` make use of the + Jacobian matrix, so it may not be necessary to provide this function + (the :code:`jacobian` element of the struct can be replaced by a null + pointer for those algorithms). + + The function should return :macro:`GSL_SUCCESS` if the calculation was + completed successfully. Any other return value indicates an error. A + special return value :macro:`GSL_EBADFUNC` causes :code:`gsl_odeiv2` + routines to immediately stop and return. If :code:`jacobian` + is modified (for example contents of :data:`params`), the user must call an + appropriate reset function (:func:`gsl_odeiv2_driver_reset`, + :func:`gsl_odeiv2_evolve_reset` or :func:`gsl_odeiv2_step_reset`) + before continuing. Use return values + distinct from standard GSL error codes to distinguish your function as + the source of the error. + + :code:`size_t dimension` + + This is the dimension of the system of equations. + + :code:`void * params` + + This is a pointer to the arbitrary parameters of the system. + +Stepping Functions +================== + +The lowest level components are the *stepping functions* which +advance a solution from time :math:`t` to :math:`t+h` for a fixed +step-size :math:`h` and estimate the resulting local error. + +.. type:: gsl_odeiv2_step + + This contains internal parameters for a stepping function. + +.. function:: gsl_odeiv2_step * gsl_odeiv2_step_alloc (const gsl_odeiv2_step_type * T, size_t dim) + + This function returns a pointer to a newly allocated instance of a + stepping function of type :data:`T` for a system of :data:`dim` + dimensions. Please note that if you use a stepper method that + requires access to a driver object, it is advisable to use a driver + allocation method, which automatically allocates a stepper, too. + +.. function:: int gsl_odeiv2_step_reset (gsl_odeiv2_step * s) + + This function resets the stepping function :data:`s`. It should be used + whenever the next use of :data:`s` will not be a continuation of a + previous step. + +.. function:: void gsl_odeiv2_step_free (gsl_odeiv2_step * s) + + This function frees all the memory associated with the stepping function + :data:`s`. + +.. function:: const char * gsl_odeiv2_step_name (const gsl_odeiv2_step * s) + + This function returns a pointer to the name of the stepping function. + For example:: + + printf ("step method is '%s'\n", gsl_odeiv2_step_name (s)); + + would print something like :code:`step method is 'rkf45'`. + +.. function:: unsigned int gsl_odeiv2_step_order (const gsl_odeiv2_step * s) + + This function returns the order of the stepping function on the previous + step. The order can vary if the stepping function itself is adaptive. + +.. function:: int gsl_odeiv2_step_set_driver (gsl_odeiv2_step * s, const gsl_odeiv2_driver * d) + + This function sets a pointer of the driver object :data:`d` for stepper + :data:`s`, to allow the stepper to access control (and evolve) object + through the driver object. This is a requirement for some steppers, to + get the desired error level for internal iteration of + stepper. Allocation of a driver object calls this function + automatically. + +.. function:: int gsl_odeiv2_step_apply (gsl_odeiv2_step * s, double t, double h, double y[], double yerr[], const double dydt_in[], double dydt_out[], const gsl_odeiv2_system * sys) + + This function applies the stepping function :data:`s` to the system of + equations defined by :data:`sys`, using the step-size :data:`h` to advance + the system from time :data:`t` and state :data:`y` to time :data:`t` + :data:`h`. + The new state of the system is stored in :data:`y` on output, with an + estimate of the absolute error in each component stored in :data:`yerr`. + If the argument :data:`dydt_in` is not null it should point an array + containing the derivatives for the system at time :data:`t` on input. This + is optional as the derivatives will be computed internally if they are + not provided, but allows the reuse of existing derivative information. + On output the new derivatives of the system at time :data:`t` + :data:`h` will + be stored in :data:`dydt_out` if it is not null. + + The stepping function returns :macro:`GSL_FAILURE` if it is unable to + compute the requested step. Also, if the user-supplied functions + defined in the system :data:`sys` return a status other than + :macro:`GSL_SUCCESS` the step will be aborted. In that case, the + elements of :data:`y` will be restored to their pre-step values and the + error code from the user-supplied function will be returned. Failure + may be due to a singularity in the system or too large step-size + :data:`h`. In that case the step should be attempted again with a + smaller step-size, e.g. :data:`h` / 2. + + If the driver object is not appropriately set via + :func:`gsl_odeiv2_step_set_driver` for those steppers that need it, the + stepping function returns :macro:`GSL_EFAULT`. If the user-supplied + functions defined in the system :data:`sys` returns :macro:`GSL_EBADFUNC`, + the function returns immediately with the same return code. In this + case the user must call :func:`gsl_odeiv2_step_reset` before calling + this function again. + +The following algorithms are available, + +.. type:: gsl_odeiv2_step_type + + .. index:: + single: RK2, Runge-Kutta method + single: Runge-Kutta methods, ordinary differential equations + + .. var:: gsl_odeiv2_step_rk2 + + Explicit embedded Runge-Kutta (2, 3) method. + + .. index:: + single: RK4, Runge-Kutta method + + .. var:: gsl_odeiv2_step_rk4 + + Explicit 4th order (classical) Runge-Kutta. Error estimation is + carried out by the step doubling method. For more efficient estimate + of the error, use the embedded methods described below. + + .. index:: + single: Fehlberg method, differential equations + single: RKF45, Runge-Kutta-Fehlberg method + + .. var:: gsl_odeiv2_step_rkf45 + + Explicit embedded Runge-Kutta-Fehlberg (4, 5) method. This method is + a good general-purpose integrator. + + .. index:: + single: Runge-Kutta Cash-Karp method + single: Cash-Karp, Runge-Kutta method + + .. var:: gsl_odeiv2_step_rkck + + Explicit embedded Runge-Kutta Cash-Karp (4, 5) method. + + .. index:: + single: Runge-Kutta Prince-Dormand method + single: Prince-Dormand, Runge-Kutta method + + .. var:: gsl_odeiv2_step_rk8pd + + Explicit embedded Runge-Kutta Prince-Dormand (8, 9) method. + + .. index:: Implicit Euler method + + .. var:: gsl_odeiv2_step_rk1imp + + Implicit Gaussian first order Runge-Kutta. Also known as implicit + Euler or backward Euler method. Error estimation is carried out by the + step doubling method. This algorithm requires the Jacobian and + access to the driver object via :func:`gsl_odeiv2_step_set_driver`. + + .. index:: Implicit Runge-Kutta method + + .. var:: gsl_odeiv2_step_rk2imp + + Implicit Gaussian second order Runge-Kutta. Also known as implicit + mid-point rule. Error estimation is carried out by the step doubling + method. This stepper requires the Jacobian and access to the driver + object via :func:`gsl_odeiv2_step_set_driver`. + + .. var:: gsl_odeiv2_step_rk4imp + + Implicit Gaussian 4th order Runge-Kutta. Error estimation is carried + out by the step doubling method. This algorithm requires the Jacobian + and access to the driver object via :func:`gsl_odeiv2_step_set_driver`. + + .. index:: + single: Bulirsch-Stoer method + single: Bader and Deuflhard, Bulirsch-Stoer method. + single: Deuflhard and Bader, Bulirsch-Stoer method. + + .. var:: gsl_odeiv2_step_bsimp + + Implicit Bulirsch-Stoer method of Bader and Deuflhard. The method is + generally suitable for stiff problems. This stepper requires the + Jacobian. + + .. index:: + single: Adams method + single: multistep methods, ODEs + single: predictor-corrector method, ODEs + single: Nordsieck form + + .. var:: gsl_odeiv2_step_msadams + + A variable-coefficient linear multistep Adams method in Nordsieck + form. This stepper uses explicit Adams-Bashforth (predictor) and + implicit Adams-Moulton (corrector) methods in :math:`P(EC)^m` + functional iteration mode. Method order varies dynamically between 1 + and 12. This stepper requires the access to the driver object via + :func:`gsl_odeiv2_step_set_driver`. + + .. index:: BDF method + + .. var:: gsl_odeiv2_step_msbdf + + A variable-coefficient linear multistep backward differentiation + formula (BDF) method in Nordsieck form. This stepper uses the explicit + BDF formula as predictor and implicit BDF formula as corrector. A + modified Newton iteration method is used to solve the system of + non-linear equations. Method order varies dynamically between 1 and + 5. The method is generally suitable for stiff problems. This stepper + requires the Jacobian and the access to the driver object via + :func:`gsl_odeiv2_step_set_driver`. + +.. index:: + single: Adaptive step-size control, differential equations + +Adaptive Step-size Control +========================== + +The control function examines the proposed change to the solution +produced by a stepping function and attempts to determine the optimal +step-size for a user-specified level of error. + +.. type:: gsl_odeiv2_control + + This is a workspace for controlling step size. + +.. type:: gsl_odeiv2_control_type + + This specifies the control type. + +.. function:: gsl_odeiv2_control * gsl_odeiv2_control_standard_new (double eps_abs, double eps_rel, double a_y, double a_dydt) + + The standard control object is a four parameter heuristic based on + absolute and relative errors :data:`eps_abs` and :data:`eps_rel`, and + scaling factors :data:`a_y` and :data:`a_dydt` for the system state + :math:`y(t)` and derivatives :math:`y'(t)` respectively. + + The step-size adjustment procedure for this method begins by computing + the desired error level :math:`D_i` for each component, + + .. only:: not texinfo + + .. math:: D_i = \epsilon_{abs} + \epsilon_{rel} * (a_{y} |y_i| + a_{dydt} h |y\prime_i|) + + .. only:: texinfo + + :: + + D_i = eps_abs + eps_rel * (a_y |y_i| + a_dydt h |y\prime_i|) + + and comparing it with the observed error :math:`E_i = |yerr_i|`. If the + observed error :data:`E` exceeds the desired error level :data:`D` by more + than 10% for any component then the method reduces the step-size by an + appropriate factor, + + .. math:: h_{new} = h_{old} * S * (E/D)^{-1/q} + + where :math:`q` is the consistency order of the method (e.g. :math:`q=4` for + 4(5) embedded RK), and :math:`S` is a safety factor of 0.9. The ratio + :math:`E/D` is taken to be the maximum of the ratios + :math:`E_i/D_i`. + + If the observed error :math:`E` is less than 50% of the desired error + level :data:`D` for the maximum ratio :math:`E_i/D_i` then the algorithm + takes the opportunity to increase the step-size to bring the error in + line with the desired level, + + .. math:: h_{new} = h_{old} * S * (E/D)^{-1/(q+1)} + + This encompasses all the standard error scaling methods. To avoid + uncontrolled changes in the stepsize, the overall scaling factor is + limited to the range :math:`1/5` to 5. + +.. function:: gsl_odeiv2_control * gsl_odeiv2_control_y_new (double eps_abs, double eps_rel) + + This function creates a new control object which will keep the local + error on each step within an absolute error of :data:`eps_abs` and + relative error of :data:`eps_rel` with respect to the solution :math:`y_i(t)`. + This is equivalent to the standard control object with :data:`a_y` = 1 and + :data:`a_dydt` = 0. + +.. function:: gsl_odeiv2_control * gsl_odeiv2_control_yp_new (double eps_abs, double eps_rel) + + This function creates a new control object which will keep the local + error on each step within an absolute error of :data:`eps_abs` and + relative error of :data:`eps_rel` with respect to the derivatives of the + solution :math:`y'_i(t)`. This is equivalent to the standard control + object with :data:`a_y` = 0 and :data:`a_dydt` = 1. + +.. function:: gsl_odeiv2_control * gsl_odeiv2_control_scaled_new (double eps_abs, double eps_rel, double a_y, double a_dydt, const double scale_abs[], size_t dim) + + This function creates a new control object which uses the same algorithm + as :func:`gsl_odeiv2_control_standard_new` but with an absolute error + which is scaled for each component by the array :data:`scale_abs`. + The formula for :math:`D_i` for this control object is, + + .. only:: not texinfo + + .. math:: D_i = \epsilon_{abs} s_i + \epsilon_{rel} * (a_{y} |y_i| + a_{dydt} h |y\prime_i|) + + .. only:: texinfo + + :: + + D_i = eps_abs * s_i + eps_rel * (a_y |y_i| + a_dydt h |y\prime_i|) + + where :math:`s_i` is the :math:`i`-th component of the array :data:`scale_abs`. + The same error control heuristic is used by the Matlab ODE suite. + +.. function:: gsl_odeiv2_control * gsl_odeiv2_control_alloc (const gsl_odeiv2_control_type * T) + + This function returns a pointer to a newly allocated instance of a + control function of type :data:`T`. This function is only needed for + defining new types of control functions. For most purposes the standard + control functions described above should be sufficient. + +.. function:: int gsl_odeiv2_control_init (gsl_odeiv2_control * c, double eps_abs, double eps_rel, double a_y, double a_dydt) + + This function initializes the control function :data:`c` with the + parameters :data:`eps_abs` (absolute error), :data:`eps_rel` (relative + error), :data:`a_y` (scaling factor for y) and :data:`a_dydt` (scaling + factor for derivatives). + +.. function:: void gsl_odeiv2_control_free (gsl_odeiv2_control * c) + + This function frees all the memory associated with the control function + :data:`c`. + +.. function:: int gsl_odeiv2_control_hadjust (gsl_odeiv2_control * c, gsl_odeiv2_step * s, const double y[], const double yerr[], const double dydt[], double * h) + + This function adjusts the step-size :data:`h` using the control function + :data:`c`, and the current values of :data:`y`, :data:`yerr` and :data:`dydt`. + The stepping function :data:`step` is also needed to determine the order + of the method. If the error in the y-values :data:`yerr` is found to be + too large then the step-size :data:`h` is reduced and the function returns + :macro:`GSL_ODEIV_HADJ_DEC`. If the error is sufficiently small then + :data:`h` may be increased and :macro:`GSL_ODEIV_HADJ_INC` is returned. The + function returns :macro:`GSL_ODEIV_HADJ_NIL` if the step-size is + unchanged. The goal of the function is to estimate the largest + step-size which satisfies the user-specified accuracy requirements for + the current point. + +.. function:: const char * gsl_odeiv2_control_name (const gsl_odeiv2_control * c) + + This function returns a pointer to the name of the control function. + For example:: + + printf ("control method is '%s'\n", gsl_odeiv2_control_name (c)); + + would print something like :code:`control method is 'standard'` + +.. function:: int gsl_odeiv2_control_errlevel (gsl_odeiv2_control * c, const double y, const double dydt, const double h, const size_t ind, double * errlev) + + This function calculates the desired error level of the :data:`ind`-th component + to :data:`errlev`. It requires the value (:data:`y`) and value of the derivative + (:data:`dydt`) of the component, and the current step size :data:`h`. + +.. function:: int gsl_odeiv2_control_set_driver (gsl_odeiv2_control * c, const gsl_odeiv2_driver * d) + + This function sets a pointer of the driver object :data:`d` for control + object :data:`c`. + +Evolution +========= + +The evolution function combines the results of a stepping function and +control function to reliably advance the solution forward one step +using an acceptable step-size. + +.. type:: gsl_odeiv2_evolve + + This workspace contains parameters for controlling the evolution function + +.. function:: gsl_odeiv2_evolve * gsl_odeiv2_evolve_alloc (size_t dim) + + This function returns a pointer to a newly allocated instance of an + evolution function for a system of :data:`dim` dimensions. + +.. function:: int gsl_odeiv2_evolve_apply (gsl_odeiv2_evolve * e, gsl_odeiv2_control * con, gsl_odeiv2_step * step, const gsl_odeiv2_system * sys, double * t, double t1, double * h, double y[]) + + This function advances the system (:data:`e`, :data:`sys`) from time + :data:`t` and position :data:`y` using the stepping function :data:`step`. + The new time and position are stored in :data:`t` and :data:`y` on output. + + The initial step-size is taken as :data:`h`. The control function + :data:`con` is applied to check whether the local error estimated by the + stepping function :data:`step` using step-size :data:`h` exceeds the + required error tolerance. If the error is too high, the step is + retried by calling :data:`step` with a decreased step-size. This process + is continued until an acceptable step-size is found. An estimate of + the local error for the step can be obtained from the components of + the array :code:`e->yerr[]`. + + If the user-supplied functions defined in the system :data:`sys` returns + :macro:`GSL_EBADFUNC`, the function returns immediately with the same + return code. In this case the user must call + :func:`gsl_odeiv2_step_reset` and + :func:`gsl_odeiv2_evolve_reset` before calling this function again. + + Otherwise, if the user-supplied functions defined in the system + :data:`sys` or the stepping function :data:`step` return a status other + than :macro:`GSL_SUCCESS`, the step is retried with a decreased + step-size. If the step-size decreases below machine precision, a + status of :macro:`GSL_FAILURE` is returned if the user functions + returned :macro:`GSL_SUCCESS`. Otherwise the value returned by user + function is returned. If no acceptable step can be made, :data:`t` and + :data:`y` will be restored to their pre-step values and :data:`h` contains + the final attempted step-size. + + If the step is successful the function returns a suggested step-size + for the next step in :data:`h`. The maximum time :data:`t1` is guaranteed + not to be exceeded by the time-step. On the final time-step the value + of :data:`t` will be set to :data:`t1` exactly. + +.. function:: int gsl_odeiv2_evolve_apply_fixed_step (gsl_odeiv2_evolve * e, gsl_odeiv2_control * con, gsl_odeiv2_step * step, const gsl_odeiv2_system * sys, double * t, const double h, double y[]) + + This function advances the ODE-system (:data:`e`, :data:`sys`, :data:`con`) + from time :data:`t` and position :data:`y` using the stepping function + :data:`step` by a specified step size :data:`h`. If the local error + estimated by the stepping function exceeds the desired error level, + the step is not taken and the function returns + :macro:`GSL_FAILURE`. Otherwise the value returned by user function is + returned. + +.. function:: int gsl_odeiv2_evolve_reset (gsl_odeiv2_evolve * e) + + This function resets the evolution function :data:`e`. It should be used + whenever the next use of :data:`e` will not be a continuation of a + previous step. + +.. function:: void gsl_odeiv2_evolve_free (gsl_odeiv2_evolve * e) + + This function frees all the memory associated with the evolution function + :data:`e`. + +.. function:: int gsl_odeiv2_evolve_set_driver (gsl_odeiv2_evolve * e, const gsl_odeiv2_driver * d) + + This function sets a pointer of the driver object :data:`d` for evolve + object :data:`e`. + +.. index:: + single: discontinuities, in ODE systems + +If a system has discontinuous changes in the derivatives at known +points, it is advisable to evolve the system between each discontinuity +in sequence. For example, if a step-change in an external driving +force occurs at times :math:`t_a, t_b` and :math:`t_c` then evolution +should be carried out over the ranges :math:`(t_0,t_a)`, +:math:`(t_a,t_b)`, :math:`(t_b,t_c)`, and :math:`(t_c,t_1)` separately +and not directly over the range :math:`(t_0,t_1)`. + +Driver +====== + +The driver object is a high level wrapper that combines the evolution, +control and stepper objects for easy use. + +.. function:: gsl_odeiv2_driver * gsl_odeiv2_driver_alloc_y_new (const gsl_odeiv2_system * sys, const gsl_odeiv2_step_type * T, const double hstart, const double epsabs, const double epsrel) + gsl_odeiv2_driver * gsl_odeiv2_driver_alloc_yp_new (const gsl_odeiv2_system * sys, const gsl_odeiv2_step_type * T, const double hstart, const double epsabs, const double epsrel) + gsl_odeiv2_driver * gsl_odeiv2_driver_alloc_standard_new (const gsl_odeiv2_system * sys, const gsl_odeiv2_step_type * T, const double hstart, const double epsabs, const double epsrel, const double a_y, const double a_dydt) + gsl_odeiv2_driver * gsl_odeiv2_driver_alloc_scaled_new (const gsl_odeiv2_system * sys, const gsl_odeiv2_step_type * T, const double hstart, const double epsabs, const double epsrel, const double a_y, const double a_dydt, const double scale_abs[]) + + These functions return a pointer to a newly allocated instance of a + driver object. The functions automatically allocate and initialise the + evolve, control and stepper objects for ODE system :data:`sys` using + stepper type :data:`T`. The initial step size is given in + :data:`hstart`. The rest of the arguments follow the syntax and + semantics of the control functions with same name + (:code:`gsl_odeiv2_control_*_new`). + +.. function:: int gsl_odeiv2_driver_set_hmin (gsl_odeiv2_driver * d, const double hmin) + + The function sets a minimum for allowed step size :data:`hmin` for + driver :data:`d`. Default value is 0. + +.. function:: int gsl_odeiv2_driver_set_hmax (gsl_odeiv2_driver * d, const double hmax) + + The function sets a maximum for allowed step size :data:`hmax` for + driver :data:`d`. Default value is :macro:`GSL_DBL_MAX`. + +.. function:: int gsl_odeiv2_driver_set_nmax (gsl_odeiv2_driver * d, const unsigned long int nmax) + + The function sets a maximum for allowed number of steps :data:`nmax` for + driver :data:`d`. Default value of 0 sets no limit for steps. + +.. function:: int gsl_odeiv2_driver_apply (gsl_odeiv2_driver * d, double * t, const double t1, double y[]) + + This function evolves the driver system :data:`d` from :data:`t` to + :data:`t1`. Initially vector :data:`y` should contain the values of + dependent variables at point :data:`t`. If the function is unable to + complete the calculation, an error code from + :func:`gsl_odeiv2_evolve_apply` is returned, and :data:`t` and :data:`y` + contain the values from last successful step. + + If maximum number of steps is reached, a value of :macro:`GSL_EMAXITER` + is returned. If the step size drops below minimum value, the function + returns with :macro:`GSL_ENOPROG`. If the user-supplied functions + defined in the system :data:`sys` returns :macro:`GSL_EBADFUNC`, the + function returns immediately with the same return code. In this case + the user must call :func:`gsl_odeiv2_driver_reset` before calling this + function again. + +.. function:: int gsl_odeiv2_driver_apply_fixed_step (gsl_odeiv2_driver * d, double * t, const double h, const unsigned long int n, double y[]) + + This function evolves the driver system :data:`d` from :data:`t` with + :data:`n` steps of size :data:`h`. If the function is unable to complete + the calculation, an error code from + :func:`gsl_odeiv2_evolve_apply_fixed_step` is returned, and :data:`t` and + :data:`y` contain the values from last successful step. + +.. function:: int gsl_odeiv2_driver_reset (gsl_odeiv2_driver * d) + + This function resets the evolution and stepper objects. + +.. function:: int gsl_odeiv2_driver_reset_hstart (gsl_odeiv2_driver * d, const double hstart) + + The routine resets the evolution and stepper objects and sets new + initial step size to :data:`hstart`. This function can be used e.g. to + change the direction of integration. + +.. function:: int gsl_odeiv2_driver_free (gsl_odeiv2_driver * d) + + This function frees the driver object, and the related evolution, + stepper and control objects. + +Examples +======== + +.. index:: + single: Van der Pol oscillator, example + +The following program solves the second-order nonlinear Van der Pol +oscillator equation, + +.. math:: u''(t) + \mu u'(t) (u(t)^2 - 1) + u(t) = 0 + +This can be converted into a first order system suitable for use with +the routines described in this chapter by introducing a separate +variable for the velocity, :math:`v = u'(t)`, + +.. only:: not texinfo + + .. math:: + + u' &= v \\ + v' &= -u + \mu v (1-u^2) + +.. only:: texinfo + + :: + + u' = v + v' = -u + \mu v (1-u^2) + +The program begins by defining functions for these derivatives and +their Jacobian. The main function uses driver level functions to solve +the problem. The program evolves the solution from :math:`(u, v) = (1, 0)` +at :math:`t = 0` to :math:`t = 100`. The step-size :math:`h` is +automatically adjusted by the controller to maintain an absolute +accuracy of :math:`10^{-6}` +in the function values :math:`(u, v)`. +The loop in the example prints the solution at the points +:math:`t_i = 1, 2, \dots, 100`. + +.. include:: examples/ode-initval.c + :code: + +The user can work with the lower level functions directly, as in +the following example. In this case an intermediate result is printed +after each successful step instead of equidistant time points. + +.. include:: examples/ode-initval-low-level.c + :code: + +For functions with multiple parameters, the appropriate information +can be passed in through the :data:`params` argument in +:type:`gsl_odeiv2_system` definition (:data:`mu` in this example) by using +a pointer to a struct. + +.. figure:: /images/ode-vdp.png + + Numerical solution of the Van der Pol oscillator equation + using Prince-Dormand 8th order Runge-Kutta. + +It is also possible to work with a non-adaptive integrator, using only +the stepping function itself, +:func:`gsl_odeiv2_driver_apply_fixed_step` or +:func:`gsl_odeiv2_evolve_apply_fixed_step`. The following program uses +the driver level function, with fourth-order +Runge-Kutta stepping function with a fixed stepsize of +0.001. + +.. include:: examples/odefixed.c + :code: + +References and Further Reading +============================== + +* Ascher, U.M., Petzold, L.R., *Computer Methods for Ordinary + Differential and Differential-Algebraic Equations*, SIAM, + Philadelphia, 1998. + +* Hairer, E., Norsett, S. P., Wanner, G., *Solving Ordinary Differential + Equations I: Nonstiff Problems*, Springer, Berlin, 1993. + +* Hairer, E., Wanner, G., *Solving Ordinary Differential + Equations II: Stiff and Differential-Algebraic Problems*, + Springer, Berlin, 1996. + +Many of the basic Runge-Kutta formulas can be found in the Handbook of +Mathematical Functions, + +* Abramowitz & Stegun (eds.), *Handbook of Mathematical Functions*, + Section 25.5. + +The implicit Bulirsch-Stoer algorithm :code:`bsimp` is described in the +following paper, + +* G. Bader and P. Deuflhard, "A Semi-Implicit Mid-Point Rule for Stiff + Systems of Ordinary Differential Equations.", Numer.: Math.: 41, 373--398, + 1983. + +The Adams and BDF multistep methods :code:`msadams` and :code:`msbdf` +are based on the following articles, + +* G. D. Byrne and A. C. Hindmarsh, "A Polyalgorithm for the + Numerical Solution of Ordinary Differential Equations.", + ACM Trans. Math. Software, 1, 71--96, 1975. + +* P. N. Brown, G. D. Byrne and A. C. Hindmarsh, "VODE: A + Variable-coefficient ODE Solver.", SIAM J. Sci. Stat. Comput. 10, + 1038--1051, 1989. + +* A. C. Hindmarsh, P. N. Brown, K. E. Grant, S. L. Lee, R. Serban, + D. E. Shumaker and C. S. Woodward, "SUNDIALS: Suite of + Nonlinear and Differential/Algebraic Equation Solvers.", ACM + Trans. Math. Software 31, 363--396, 2005. diff --git a/gsl-2.5/doc/permutation.rst b/gsl-2.5/doc/permutation.rst new file mode 100644 index 00000000..b0ff202f --- /dev/null +++ b/gsl-2.5/doc/permutation.rst @@ -0,0 +1,368 @@ +.. index:: permutations + +************ +Permutations +************ + +.. include:: include.rst + +This chapter describes functions for creating and manipulating +permutations. A permutation :math:`p` is represented by an array of +:math:`n` integers in the range 0 to :math:`n-1`, where each value +:math:`p_i` occurs once and only once. The application of a permutation +:math:`p` to a vector :math:`v` yields a new vector :math:`v'` where +:math:`v'_i = v_{p_i}`. +For example, the array :math:`(0,1,3,2)` represents a permutation +which exchanges the last two elements of a four element vector. +The corresponding identity permutation is :math:`(0,1,2,3)`. + +Note that the permutations produced by the linear algebra routines +correspond to the exchange of matrix columns, and so should be considered +as applying to row-vectors in the form :math:`v' = v P` rather than +column-vectors, when permuting the elements of a vector. + +The functions described in this chapter are defined in the header file +:file:`gsl_permutation.h`. + +The Permutation struct +====================== + +.. type:: gsl_permutation + + A permutation is defined by a structure containing two components, the size + of the permutation and a pointer to the permutation array. The elements + of the permutation array are all of type :code:`size_t`. The + :type:`gsl_permutation` structure looks like this:: + + typedef struct + { + size_t size; + size_t * data; + } gsl_permutation; + +Permutation allocation +====================== + +.. function:: gsl_permutation * gsl_permutation_alloc (size_t n) + + This function allocates memory for a new permutation of size :data:`n`. + The permutation is not initialized and its elements are undefined. Use + the function :func:`gsl_permutation_calloc` if you want to create a + permutation which is initialized to the identity. A null pointer is + returned if insufficient memory is available to create the permutation. + +.. function:: gsl_permutation * gsl_permutation_calloc (size_t n) + + This function allocates memory for a new permutation of size :data:`n` and + initializes it to the identity. A null pointer is returned if + insufficient memory is available to create the permutation. + +.. index:: identity permutation + +.. function:: void gsl_permutation_init (gsl_permutation * p) + + This function initializes the permutation :data:`p` to the identity, i.e. + :math:`(0, 1, 2, \dots, n - 1)`. + +.. function:: void gsl_permutation_free (gsl_permutation * p) + + This function frees all the memory used by the permutation :data:`p`. + +.. function:: int gsl_permutation_memcpy (gsl_permutation * dest, const gsl_permutation * src) + + This function copies the elements of the permutation :data:`src` into the + permutation :data:`dest`. The two permutations must have the same size. + +Accessing permutation elements +============================== + +The following functions can be used to access and manipulate +permutations. + +.. function:: size_t gsl_permutation_get (const gsl_permutation * p, const size_t i) + + This function returns the value of the :data:`i`-th element of the + permutation :data:`p`. If :data:`i` lies outside the allowed range of 0 to + :math:`n - 1` then the error handler is invoked and 0 is returned. |inlinefn| + +.. index:: + single: exchanging permutation elements + single: swapping permutation elements + +.. function:: int gsl_permutation_swap (gsl_permutation * p, const size_t i, const size_t j) + + This function exchanges the :data:`i`-th and :data:`j`-th elements of the + permutation :data:`p`. + +Permutation properties +====================== + +.. function:: size_t gsl_permutation_size (const gsl_permutation * p) + + This function returns the size of the permutation :data:`p`. + +.. function:: size_t * gsl_permutation_data (const gsl_permutation * p) + + This function returns a pointer to the array of elements in the + permutation :data:`p`. + +.. index:: + single: checking permutation for validity + single: testing permutation for validity + +.. function:: int gsl_permutation_valid (const gsl_permutation * p) + + This function checks that the permutation :data:`p` is valid. The :code:`n` + elements should contain each of the numbers 0 to :code:`n - 1` once and only + once. + +Permutation functions +===================== + +.. index:: reversing a permutation + +.. function:: void gsl_permutation_reverse (gsl_permutation * p) + + This function reverses the elements of the permutation :data:`p`. + +.. index:: inverting a permutation + +.. function:: int gsl_permutation_inverse (gsl_permutation * inv, const gsl_permutation * p) + + This function computes the inverse of the permutation :data:`p`, storing + the result in :data:`inv`. + +.. index:: iterating through permutations + +.. function:: int gsl_permutation_next (gsl_permutation * p) + + This function advances the permutation :data:`p` to the next permutation + in lexicographic order and returns :macro:`GSL_SUCCESS`. If no further + permutations are available it returns :macro:`GSL_FAILURE` and leaves + :data:`p` unmodified. Starting with the identity permutation and + repeatedly applying this function will iterate through all possible + permutations of a given order. + +.. function:: int gsl_permutation_prev (gsl_permutation * p) + + This function steps backwards from the permutation :data:`p` to the + previous permutation in lexicographic order, returning + :macro:`GSL_SUCCESS`. If no previous permutation is available it returns + :macro:`GSL_FAILURE` and leaves :data:`p` unmodified. + +Applying Permutations +===================== + +.. function:: int gsl_permute (const size_t * p, double * data, size_t stride, size_t n) + + This function applies the permutation :data:`p` to the array :data:`data` of + size :data:`n` with stride :data:`stride`. + +.. function:: int gsl_permute_inverse (const size_t * p, double * data, size_t stride, size_t n) + + This function applies the inverse of the permutation :data:`p` to the + array :data:`data` of size :data:`n` with stride :data:`stride`. + +.. function:: int gsl_permute_vector (const gsl_permutation * p, gsl_vector * v) + + This function applies the permutation :data:`p` to the elements of the + vector :data:`v`, considered as a row-vector acted on by a permutation + matrix from the right, :math:`v' = v P`. The :math:`j`-th column of the + permutation matrix :math:`P` is given by the :math:`p_j`-th column of the + identity matrix. The permutation :data:`p` and the vector :data:`v` must + have the same length. + +.. function:: int gsl_permute_vector_inverse (const gsl_permutation * p, gsl_vector * v) + + This function applies the inverse of the permutation :data:`p` to the + elements of the vector :data:`v`, considered as a row-vector acted on by + an inverse permutation matrix from the right, :math:`v' = v P^T`. Note + that for permutation matrices the inverse is the same as the transpose. + The :math:`j`-th column of the permutation matrix :math:`P` is given by + the :math:`:data:`p`_j`-th column of the identity matrix. The permutation :data:`p` + and the vector :data:`v` must have the same length. + +.. function:: int gsl_permute_matrix (const gsl_permutation * p, gsl_matrix * A) + + This function applies the permutation :data:`p` to the matrix :data:`A` from + the right, :math:`A' = A P`. The :math:`j`-th column of the + permutation matrix :math:`P` is given by the :math:`p_j`-th column of the + identity matrix. This effectively permutes the columns of :data:`A` according + to the permutation :data:`p`, and so the number of columns of :data:`A` must + equal the size of the permutation :data:`p`. + +.. function:: int gsl_permutation_mul (gsl_permutation * p, const gsl_permutation * pa, const gsl_permutation * pb) + + This function combines the two permutations :data:`pa` and :data:`pb` into a + single permutation :data:`p`, where :math:`p = pa * pb` + The permutation :data:`p` is equivalent to applying :data:`pb` first and + then :data:`pa`. + +Reading and writing permutations +================================ + +The library provides functions for reading and writing permutations to a +file as binary data or formatted text. + +.. function:: int gsl_permutation_fwrite (FILE * stream, const gsl_permutation * p) + + This function writes the elements of the permutation :data:`p` to the + stream :data:`stream` in binary format. The function returns + :macro:`GSL_EFAILED` if there was a problem writing to the file. Since the + data is written in the native binary format it may not be portable + between different architectures. + +.. function:: int gsl_permutation_fread (FILE * stream, gsl_permutation * p) + + This function reads into the permutation :data:`p` from the open stream + :data:`stream` in binary format. The permutation :data:`p` must be + preallocated with the correct length since the function uses the size of + :data:`p` to determine how many bytes to read. The function returns + :macro:`GSL_EFAILED` if there was a problem reading from the file. The + data is assumed to have been written in the native binary format on the + same architecture. + +.. function:: int gsl_permutation_fprintf (FILE * stream, const gsl_permutation * p, const char * format) + + This function writes the elements of the permutation :data:`p` + line-by-line to the stream :data:`stream` using the format specifier + :data:`format`, which should be suitable for a type of :data:`size_t`. + In ISO C99 the type modifier :code:`z` represents :code:`size_t`, so + :code:`"%zu\n"` is a suitable format [#f1]_. + The function returns :macro:`GSL_EFAILED` if there was a problem writing + to the file. + +.. function:: int gsl_permutation_fscanf (FILE * stream, gsl_permutation * p) + + This function reads formatted data from the stream :data:`stream` into the + permutation :data:`p`. The permutation :data:`p` must be preallocated with + the correct length since the function uses the size of :data:`p` to + determine how many numbers to read. The function returns + :macro:`GSL_EFAILED` if there was a problem reading from the file. + +Permutations in cyclic form +=========================== + +A permutation can be represented in both *linear* and *cyclic* +notations. The functions described in this section convert between the +two forms. The linear notation is an index mapping, and has already +been described above. The cyclic notation expresses a permutation as a +series of circular rearrangements of groups of elements, or +*cycles*. + +For example, under the cycle (1 2 3), 1 is replaced by 2, 2 is replaced +by 3 and 3 is replaced by 1 in a circular fashion. Cycles of different +sets of elements can be combined independently, for example (1 2 3) (4 +5) combines the cycle (1 2 3) with the cycle (4 5), which is an exchange +of elements 4 and 5. A cycle of length one represents an element which +is unchanged by the permutation and is referred to as a *singleton*. + +It can be shown that every permutation can be decomposed into +combinations of cycles. The decomposition is not unique, but can always +be rearranged into a standard *canonical form* by a reordering of +elements. The library uses the canonical form defined in Knuth's +*Art of Computer Programming* (Vol 1, 3rd Ed, 1997) Section 1.3.3, +p.178. + +The procedure for obtaining the canonical form given by Knuth is, + +#. Write all singleton cycles explicitly +#. Within each cycle, put the smallest number first +#. Order the cycles in decreasing order of the first number in the cycle. + +For example, the linear representation (2 4 3 0 1) is represented as (1 +4) (0 2 3) in canonical form. The permutation corresponds to an +exchange of elements 1 and 4, and rotation of elements 0, 2 and 3. + +The important property of the canonical form is that it can be +reconstructed from the contents of each cycle without the brackets. In +addition, by removing the brackets it can be considered as a linear +representation of a different permutation. In the example given above +the permutation (2 4 3 0 1) would become (1 4 0 2 3). This mapping has +many applications in the theory of permutations. + +.. function:: int gsl_permutation_linear_to_canonical (gsl_permutation * q, const gsl_permutation * p) + + This function computes the canonical form of the permutation :data:`p` and + stores it in the output argument :data:`q`. + +.. function:: int gsl_permutation_canonical_to_linear (gsl_permutation * p, const gsl_permutation * q) + + This function converts a permutation :data:`q` in canonical form back into + linear form storing it in the output argument :data:`p`. + +.. function:: size_t gsl_permutation_inversions (const gsl_permutation * p) + + This function counts the number of inversions in the permutation + :data:`p`. An inversion is any pair of elements that are not in order. + For example, the permutation 2031 has three inversions, corresponding to + the pairs (2,0) (2,1) and (3,1). The identity permutation has no + inversions. + +.. function:: size_t gsl_permutation_linear_cycles (const gsl_permutation * p) + + This function counts the number of cycles in the permutation :data:`p`, given in linear form. + +.. function:: size_t gsl_permutation_canonical_cycles (const gsl_permutation * q) + + This function counts the number of cycles in the permutation :data:`q`, given in canonical form. + +Examples +======== + +The example program below creates a random permutation (by shuffling the +elements of the identity) and finds its inverse. + +.. include:: examples/permshuffle.c + :code: + +Here is the output from the program:: + + $ ./a.out + initial permutation: 0 1 2 3 4 5 6 7 8 9 + random permutation: 1 3 5 2 7 6 0 4 9 8 + inverse permutation: 6 0 3 1 7 2 5 4 9 8 + +The random permutation :code:`p[i]` and its inverse :code:`q[i]` are +related through the identity :code:`p[q[i]] = i`, which can be verified +from the output. + +The next example program steps forwards through all possible third order +permutations, starting from the identity, + +.. include:: examples/permseq.c + :code: + +Here is the output from the program:: + + $ ./a.out + 0 1 2 + 0 2 1 + 1 0 2 + 1 2 0 + 2 0 1 + 2 1 0 + +The permutations are generated in lexicographic order. To reverse the +sequence, begin with the final permutation (which is the reverse of the +identity) and replace :func:`gsl_permutation_next` with +:func:`gsl_permutation_prev`. + +References and Further Reading +============================== + +The subject of permutations is covered extensively in the following, + +* Donald E. Knuth, The Art of Computer Programming: Sorting and + Searching (Vol 3, 3rd Ed, 1997), Addison-Wesley, ISBN 0201896850. + +For the definition of the *canonical form* see, + +* Donald E. Knuth, The Art of Computer Programming: Fundamental + Algorithms (Vol 1, 3rd Ed, 1997), Addison-Wesley, ISBN 0201896850. + Section 1.3.3, An Unusual Correspondence, p.178--179. + +.. rubric:: Footnotes + +.. [#f1] In versions of the GNU C library prior to the ISO C99 standard, + the type modifier :code:`Z` was used instead. diff --git a/gsl-2.5/doc/poly.rst b/gsl-2.5/doc/poly.rst new file mode 100644 index 00000000..40e49706 --- /dev/null +++ b/gsl-2.5/doc/poly.rst @@ -0,0 +1,340 @@ +.. index:: + single: polynomials, roots of + +*********** +Polynomials +*********** + +.. include:: include.rst + +This chapter describes functions for evaluating and solving polynomials. +There are routines for finding real and complex roots of quadratic and +cubic equations using analytic methods. An iterative polynomial solver +is also available for finding the roots of general polynomials with real +coefficients (of any order). The functions are declared in the header +file :file:`gsl_poly.h`. + +.. index:: + single: polynomial evaluation + single: evaluation of polynomials + +Polynomial Evaluation +===================== + +The functions described here evaluate the polynomial + +.. only:: not texinfo + + .. math:: + + P(x) = c[0] + c[1] x + c[2] x^2 + \dots + c[len-1] x^{len-1} + +.. only:: texinfo + + P(x) = c[0] + c[1] x + c[2] x^2 + ... + c[len-1] x^{len-1} + +using Horner's method for stability. |inlinefns| + +.. function:: double gsl_poly_eval (const double c[], const int len, const double x) + + This function evaluates a polynomial with real coefficients for the real variable :data:`x`. + +.. function:: gsl_complex gsl_poly_complex_eval (const double c[], const int len, const gsl_complex z) + + This function evaluates a polynomial with real coefficients for the complex variable :data:`z`. + +.. function:: gsl_complex gsl_complex_poly_complex_eval (const gsl_complex c[], const int len, const gsl_complex z) + + This function evaluates a polynomial with complex coefficients for the complex variable :data:`z`. + +.. function:: int gsl_poly_eval_derivs (const double c[], const size_t lenc, const double x, double res[], const size_t lenres) + + This function evaluates a polynomial and its derivatives storing the + results in the array :data:`res` of size :data:`lenres`. The output array + contains the values of :math:`d^k P(x)/d x^k` for the specified value of + :data:`x` starting with :math:`k = 0`. + +.. index:: + single: divided differences, polynomials + single: evaluation of polynomials, in divided difference form + +Divided Difference Representation of Polynomials +================================================ + +The functions described here manipulate polynomials stored in Newton's +divided-difference representation. The use of divided-differences is +described in Abramowitz & Stegun sections 25.1.4 and 25.2.26, and +Burden and Faires, chapter 3, and discussed briefly below. + +Given a function :math:`f(x)`, an :math:`n`\ th degree interpolating polynomial :math:`P_{n}(x)` +can be constructed which agrees with :math:`f` at :math:`n+1` distinct points +:math:`x_0,x_1,...,x_{n}`. This polynomial can be written in a +form known as Newton's divided-difference representation + +.. only:: not texinfo + + .. math:: + + P_{n}(x) = f(x_0) + \sum_{k=1}^n [x_0,x_1,...,x_k] (x-x_0)(x-x_1) \cdots (x-x_{k-1}) + +.. only:: texinfo + + P_{n}(x) = f(x_0) + \sum_{k=1}^n [x_0,x_1,...,x_k] (x-x_0)(x-x_1) ... (x-x_{k-1}) + +where the divided differences :math:`[x_0,x_1,...,x_k]` are defined in section 25.1.4 of +Abramowitz and Stegun. Additionally, it is possible to construct an interpolating +polynomial of degree :math:`2n+1` which also matches the first derivatives of :math:`f` +at the points :math:`x_0,x_1,...,x_n`. This is called the Hermite interpolating +polynomial and is defined as + +.. only:: not texinfo + + .. math:: + + H_{2n+1}(x) = f(z_0) + \sum_{k=1}^{2n+1} [z_0,z_1,...,z_k] (x-z_0)(x-z_1) \cdots (x-z_{k-1}) + +.. only:: texinfo + + H_{2n+1}(x) = f(z_0) + \sum_{k=1}^{2n+1} [z_0,z_1,...,z_k] (x-z_0)(x-z_1) ... (x-z_{k-1}) + +where the elements of :math:`z = \{x_0,x_0,x_1,x_1,...,x_n,x_n\}` are defined by +:math:`z_{2k} = z_{2k+1} = x_k`. The divided-differences :math:`[z_0,z_1,...,z_k]` +are discussed in Burden and Faires, section 3.4. + +.. function:: int gsl_poly_dd_init (double dd[], const double xa[], const double ya[], size_t size) + + This function computes a divided-difference representation of the + interpolating polynomial for the points :math:`(x, y)` stored in + the arrays :data:`xa` and :data:`ya` of length :data:`size`. On output the + divided-differences of (:data:`xa`, :data:`ya`) are stored in the array + :data:`dd`, also of length :data:`size`. Using the notation above, + :math:`dd[k] = [x_0,x_1,...,x_k]`. + +.. function:: double gsl_poly_dd_eval (const double dd[], const double xa[], const size_t size, const double x) + + This function evaluates the polynomial stored in divided-difference form + in the arrays :data:`dd` and :data:`xa` of length :data:`size` at the point + :data:`x`. |inlinefn| + +.. function:: int gsl_poly_dd_taylor (double c[], double xp, const double dd[], const double xa[], size_t size, double w[]) + + This function converts the divided-difference representation of a + polynomial to a Taylor expansion. The divided-difference representation + is supplied in the arrays :data:`dd` and :data:`xa` of length :data:`size`. + On output the Taylor coefficients of the polynomial expanded about the + point :data:`xp` are stored in the array :data:`c` also of length + :data:`size`. A workspace of length :data:`size` must be provided in the + array :data:`w`. + +.. function:: int gsl_poly_dd_hermite_init (double dd[], double za[], const double xa[], const double ya[], const double dya[], const size_t size) + + This function computes a divided-difference representation of the + interpolating Hermite polynomial for the points :math:`(x,y)` stored in + the arrays :data:`xa` and :data:`ya` of length :data:`size`. Hermite interpolation + constructs polynomials which also match first derivatives :math:`dy/dx` which are + provided in the array :data:`dya` also of length :data:`size`. The first derivatives can be + incorported into the usual divided-difference algorithm by forming a new + dataset :math:`z = \{x_0,x_0,x_1,x_1,...\}`, which is stored in the array + :data:`za` of length 2*\ :data:`size` on output. On output the + divided-differences of the Hermite representation are stored in the array + :data:`dd`, also of length 2*\ :data:`size`. Using the notation above, + :math:`dd[k] = [z_0,z_1,...,z_k]`. The resulting Hermite polynomial + can be evaluated by calling :func:`gsl_poly_dd_eval` and using + :data:`za` for the input argument :data:`xa`. + +.. index:: + single: quadratic equation, solving + +Quadratic Equations +=================== + +.. function:: int gsl_poly_solve_quadratic (double a, double b, double c, double * x0, double * x1) + + This function finds the real roots of the quadratic equation, + + .. math:: + + a x^2 + b x + c = 0 + + The number of real roots (either zero, one or two) is returned, and + their locations are stored in :data:`x0` and :data:`x1`. If no real roots + are found then :data:`x0` and :data:`x1` are not modified. If one real root + is found (i.e. if :math:`a=0`) then it is stored in :data:`x0`. When two + real roots are found they are stored in :data:`x0` and :data:`x1` in + ascending order. The case of coincident roots is not considered + special. For example :math:`(x-1)^2=0` will have two roots, which happen + to have exactly equal values. + + The number of roots found depends on the sign of the discriminant + :math:`b^2 - 4 a c`. This will be subject to rounding and cancellation + errors when computed in double precision, and will also be subject to + errors if the coefficients of the polynomial are inexact. These errors + may cause a discrete change in the number of roots. However, for + polynomials with small integer coefficients the discriminant can always + be computed exactly. + +.. function:: int gsl_poly_complex_solve_quadratic (double a, double b, double c, gsl_complex * z0, gsl_complex * z1) + + This function finds the complex roots of the quadratic equation, + + .. math:: + + a z^2 + b z + c = 0 + + The number of complex roots is returned (either one or two) and the + locations of the roots are stored in :data:`z0` and :data:`z1`. The roots + are returned in ascending order, sorted first by their real components + and then by their imaginary components. If only one real root is found + (i.e. if :math:`a=0`) then it is stored in :data:`z0`. + +.. index:: + single: cubic equation, solving + +Cubic Equations +=============== + +.. function:: int gsl_poly_solve_cubic (double a, double b, double c, double * x0, double * x1, double * x2) + + This function finds the real roots of the cubic equation, + + .. math:: + + x^3 + a x^2 + b x + c = 0 + + with a leading coefficient of unity. The number of real roots (either + one or three) is returned, and their locations are stored in :data:`x0`, + :data:`x1` and :data:`x2`. If one real root is found then only :data:`x0` + is modified. When three real roots are found they are stored in + :data:`x0`, :data:`x1` and :data:`x2` in ascending order. The case of + coincident roots is not considered special. For example, the equation + :math:`(x-1)^3=0` will have three roots with exactly equal values. As + in the quadratic case, finite precision may cause equal or + closely-spaced real roots to move off the real axis into the complex + plane, leading to a discrete change in the number of real roots. + +.. function:: int gsl_poly_complex_solve_cubic (double a, double b, double c, gsl_complex * z0, gsl_complex * z1, gsl_complex * z2) + + This function finds the complex roots of the cubic equation, + + .. math:: + + z^3 + a z^2 + b z + c = 0 + + The number of complex roots is returned (always three) and the locations + of the roots are stored in :data:`z0`, :data:`z1` and :data:`z2`. The roots + are returned in ascending order, sorted first by their real components + and then by their imaginary components. + +.. index:: + single: general polynomial equations, solving + +General Polynomial Equations +============================ + +The roots of polynomial equations cannot be found analytically beyond +the special cases of the quadratic, cubic and quartic equation. The +algorithm described in this section uses an iterative method to find the +approximate locations of roots of higher order polynomials. + +.. type:: gsl_poly_complex_workspace + + This workspace contains parameters used for finding roots of general polynomials + +.. function:: gsl_poly_complex_workspace * gsl_poly_complex_workspace_alloc (size_t n) + + This function allocates space for a :type:`gsl_poly_complex_workspace` + struct and a workspace suitable for solving a polynomial with :data:`n` + coefficients using the routine :func:`gsl_poly_complex_solve`. + + The function returns a pointer to the newly allocated + :type:`gsl_poly_complex_workspace` if no errors were detected, and a null + pointer in the case of error. + +.. function:: void gsl_poly_complex_workspace_free (gsl_poly_complex_workspace * w) + + This function frees all the memory associated with the workspace + :data:`w`. + +.. function:: int gsl_poly_complex_solve (const double * a, size_t n, gsl_poly_complex_workspace * w, gsl_complex_packed_ptr z) + + This function computes the roots of the general polynomial + + .. only:: not texinfo + + .. math:: + + P(x) = a_0 + a_1 x + a_2 x^2 + \cdots + a_{n-1} x^{n-1} + + .. only:: texinfo + + P(x) = a_0 + a_1 x + a_2 x^2 + ... + a_{n-1} x^{n-1} + + using balanced-QR reduction of the companion matrix. The parameter :data:`n` + specifies the length of the coefficient array. The coefficient of the + highest order term must be non-zero. The function requires a workspace + :data:`w` of the appropriate size. The :math:`n-1` roots are returned in + the packed complex array :data:`z` of length :math:`2(n-1)`, alternating + real and imaginary parts. + + The function returns :data:`GSL_SUCCESS` if all the roots are found. If + the QR reduction does not converge, the error handler is invoked with + an error code of :data:`GSL_EFAILED`. Note that due to finite precision, + roots of higher multiplicity are returned as a cluster of simple roots + with reduced accuracy. The solution of polynomials with higher-order + roots requires specialized algorithms that take the multiplicity + structure into account (see e.g. Z. Zeng, Algorithm 835, ACM + Transactions on Mathematical Software, Volume 30, Issue 2 (2004), pp + 218--236). + +Examples +======== + +To demonstrate the use of the general polynomial solver we will take the +polynomial :math:`P(x) = x^5 - 1` which has these roots: + +.. only:: not texinfo + + .. math:: + + 1, e^{2\pi i / 5}, e^{4\pi i / 5}, e^{6\pi i / 5}, e^{8\pi i / 5} + +.. only:: texinfo + + 1, e^{2*pi i / 5}, e^{4*pi i / 5}, e^{6*pi i / 5}, e^{8*pi i / 5} + +The following program will find these roots. + +.. include:: examples/polyroots.c + :code: + +The output of the program is + +.. include:: examples/polyroots.txt + :code: + +which agrees with the analytic result, :math:`z_n = \exp(2 \pi n i/5)`. + +References and Further Reading +============================== + +The balanced-QR method and its error analysis are described in the +following papers, + +* R.S. Martin, G. Peters and J.H. Wilkinson, "The QR Algorithm for Real + Hessenberg Matrices", Numerische Mathematik, 14 (1970), 219--231. + +* B.N. Parlett and C. Reinsch, "Balancing a Matrix for Calculation of + Eigenvalues and Eigenvectors", Numerische Mathematik, 13 (1969), + 293--304. + +* A. Edelman and H. Murakami, "Polynomial roots from companion matrix + eigenvalues", Mathematics of Computation, Vol.: 64, No.: 210 + (1995), 763--776. + +The formulas for divided differences are given in the following texts, + +* Abramowitz and Stegun, Handbook of Mathematical Functions, + Sections 25.1.4 and 25.2.26. + +* R. L. Burden and J. D. Faires, Numerical Analysis, 9th edition, + ISBN 0-538-73351-9, 2011. diff --git a/gsl-2.5/doc/qrng.rst b/gsl-2.5/doc/qrng.rst new file mode 100644 index 00000000..08ce0958 --- /dev/null +++ b/gsl-2.5/doc/qrng.rst @@ -0,0 +1,165 @@ +.. index:: + single: quasi-random sequences + single: low discrepancy sequences + single: Sobol sequence + single: Niederreiter sequence + +********************** +Quasi-Random Sequences +********************** + +.. include:: include.rst + +This chapter describes functions for generating quasi-random sequences +in arbitrary dimensions. A quasi-random sequence progressively covers a +:math:`d`-dimensional space with a set of points that are uniformly +distributed. Quasi-random sequences are also known as low-discrepancy +sequences. The quasi-random sequence generators use an interface that +is similar to the interface for random number generators, except that +seeding is not required---each generator produces a single sequence. + +The functions described in this section are declared in the header file +:file:`gsl_qrng.h`. + +Quasi-random number generator initialization +============================================ + +.. type:: gsl_qrng + + This is a workspace for computing quasi-random sequences. + +.. function:: gsl_qrng * gsl_qrng_alloc (const gsl_qrng_type * T, unsigned int d) + + This function returns a pointer to a newly-created instance of a + quasi-random sequence generator of type :data:`T` and dimension :data:`d`. + If there is insufficient memory to create the generator then the + function returns a null pointer and the error handler is invoked with an + error code of :macro:`GSL_ENOMEM`. + +.. function:: void gsl_qrng_free (gsl_qrng * q) + + This function frees all the memory associated with the generator + :data:`q`. + +.. function:: void gsl_qrng_init (gsl_qrng * q) + + This function reinitializes the generator :data:`q` to its starting point. + Note that quasi-random sequences do not use a seed and always produce + the same set of values. + +Sampling from a quasi-random number generator +============================================= + +.. function:: int gsl_qrng_get (const gsl_qrng * q, double x[]) + + This function stores the next point from the sequence generator :data:`q` + in the array :data:`x`. The space available for :data:`x` must match the + dimension of the generator. The point :data:`x` will lie in the range + :math:`0 < x_i < 1` for each :math:`x_i`. |inlinefn| + +Auxiliary quasi-random number generator functions +================================================= + +.. function:: const char * gsl_qrng_name (const gsl_qrng * q) + + This function returns a pointer to the name of the generator. + +.. function:: size_t gsl_qrng_size (const gsl_qrng * q) + void * gsl_qrng_state (const gsl_qrng * q) + + These functions return a pointer to the state of generator :data:`r` and + its size. You can use this information to access the state directly. For + example, the following code will write the state of a generator to a + stream:: + + void * state = gsl_qrng_state (q); + size_t n = gsl_qrng_size (q); + fwrite (state, n, 1, stream); + +Saving and restoring quasi-random number generator state +======================================================== + +.. function:: int gsl_qrng_memcpy (gsl_qrng * dest, const gsl_qrng * src) + + This function copies the quasi-random sequence generator :data:`src` into the + pre-existing generator :data:`dest`, making :data:`dest` into an exact copy + of :data:`src`. The two generators must be of the same type. + +.. function:: gsl_qrng * gsl_qrng_clone (const gsl_qrng * q) + + This function returns a pointer to a newly created generator which is an + exact copy of the generator :data:`q`. + +Quasi-random number generator algorithms +======================================== + +The following quasi-random sequence algorithms are available, + +.. type:: gsl_qrng_type + + .. var:: gsl_qrng_niederreiter_2 + + This generator uses the algorithm described in Bratley, Fox, + Niederreiter, ACM Trans. Model. Comp. Sim. 2, 195 (1992). It is + valid up to 12 dimensions. + + .. var:: gsl_qrng_sobol + + This generator uses the Sobol sequence described in Antonov, Saleev, + USSR Comput. Maths. Math. Phys. 19, 252 (1980). It is valid up to + 40 dimensions. + + .. var:: gsl_qrng_halton + gsl_qrng_reversehalton + + These generators use the Halton and reverse Halton sequences described + in J.H. Halton, Numerische Mathematik, 2, 84-90 (1960) and + B. Vandewoestyne and R. Cools Computational and Applied + Mathematics, 189, 1&2, 341-361 (2006). They are valid up to 1229 + dimensions. + +Examples +======== + +The following program prints the first 1024 points of the 2-dimensional +Sobol sequence. + +.. include:: examples/qrng.c + :code: + +Here is the output from the program:: + + $ ./a.out + 0.50000 0.50000 + 0.75000 0.25000 + 0.25000 0.75000 + 0.37500 0.37500 + 0.87500 0.87500 + 0.62500 0.12500 + 0.12500 0.62500 + .... + +It can be seen that successive points progressively fill-in the spaces +between previous points. + +:numref:`fig_qrng` shows the distribution in the x-y plane of the first +1024 points from the Sobol sequence, + +.. _fig_qrng: + +.. figure:: /images/qrng.png + :scale: 60% + + Distribution of the first 1024 points + from the quasi-random Sobol sequence + +References +========== + +The implementations of the quasi-random sequence routines are based on +the algorithms described in the following paper, + +* P. Bratley and B.L. Fox and H. Niederreiter, "Algorithm 738: Programs + to Generate Niederreiter's Low-discrepancy Sequences", ACM + Transactions on Mathematical Software, Vol.: 20, No.: 4, December, 1994, + p.: 494--495. diff --git a/gsl-2.5/doc/randist.rst b/gsl-2.5/doc/randist.rst new file mode 100644 index 00000000..a1184c57 --- /dev/null +++ b/gsl-2.5/doc/randist.rst @@ -0,0 +1,1876 @@ +.. index:: + single: random number distributions + single: cumulative distribution functions (CDFs) + single: CDFs, cumulative distribution functions + single: inverse cumulative distribution functions + single: quantile functions + +.. _chap_random-number-distributions: + +*************************** +Random Number Distributions +*************************** + +.. include:: include.rst + +This chapter describes functions for generating random variates and +computing their probability distributions. Samples from the +distributions described in this chapter can be obtained using any of the +random number generators in the library as an underlying source of +randomness. + +In the simplest cases a non-uniform distribution can be obtained +analytically from the uniform distribution of a random number generator +by applying an appropriate transformation. This method uses one call to +the random number generator. More complicated distributions are created +by the *acceptance-rejection* method, which compares the desired +distribution against a distribution which is similar and known +analytically. This usually requires several samples from the generator. + +The library also provides cumulative distribution functions and inverse +cumulative distribution functions, sometimes referred to as quantile +functions. The cumulative distribution functions and their inverses are +computed separately for the upper and lower tails of the distribution, +allowing full accuracy to be retained for small results. + +The functions for random variates and probability density functions +described in this section are declared in :file:`gsl_randist.h`. The +corresponding cumulative distribution functions are declared in +:file:`gsl_cdf.h`. + +Note that the discrete random variate functions always +return a value of type :code:`unsigned int`, and on most platforms this +has a maximum value of + +.. only:: not texinfo + + .. math:: 2^{32}-1 \approx 4.29 \times 10^9 + +.. only:: texinfo + + :: + + 2^32-1 ~=~ 4.29e9 + +They should only be called with +a safe range of parameters (where there is a negligible probability of +a variate exceeding this limit) to prevent incorrect results due to +overflow. + +Introduction +============ + +Continuous random number distributions are defined by a probability +density function, :math:`p(x)`, such that the probability of :math:`x` +occurring in the infinitesimal range :math:`x` to :math:`x + dx` is +:math:`p(x) dx`. + +The cumulative distribution function for the lower tail :math:`P(x)` is +defined by the integral, + +.. math:: P(x) = \int_{-\infty}^{x} dx' p(x') + +and gives the probability of a variate taking a value less than :math:`x`. + +The cumulative distribution function for the upper tail :math:`Q(x)` is +defined by the integral, + +.. math:: Q(x) = \int_{x}^{+\infty} dx' p(x') + +and gives the probability of a variate taking a value greater than :math:`x`. + +The upper and lower cumulative distribution functions are related by +:math:`P(x) + Q(x) = 1` and satisfy :math:`0 \le P(x) \le 1`, +:math:`0 \le Q(x) \le 1`. + +The inverse cumulative distributions, :math:`x = P^{-1}(P)` +and :math:`x = Q^{-1}(Q)` +give the values of :math:`x` +which correspond to a specific value of :math:`P` or :math:`Q`. +They can be used to find confidence limits from probability values. + +For discrete distributions the probability of sampling the integer +value :math:`k` is given by :math:`p(k)`, where :math:`\sum_k p(k) = 1`. +The cumulative distribution for the lower tail :math:`P(k)` of a +discrete distribution is defined as, + +.. math:: P(k) = \sum_{i \le k} p(i) + +where the sum is over the allowed range of the distribution less than +or equal to :math:`k`. + +The cumulative distribution for the upper tail of a discrete +distribution :math:`Q(k)` is defined as + +.. math:: Q(k) = \sum_{i > k} p(i) + +giving the sum of probabilities for all values greater than :math:`k`. +These two definitions satisfy the identity :math:`P(k)+Q(k)=1`. + +If the range of the distribution is 1 to :math:`n` inclusive then +:math:`P(n) = 1`, :math:`Q(n) = 0` while :math:`P(1) = p(1)`, +:math:`Q(1) = 1 - p(1)`. + +|newpage| + +The Gaussian Distribution +========================= + +.. index:: Gaussian distribution + +.. function:: double gsl_ran_gaussian (const gsl_rng * r, double sigma) + + This function returns a Gaussian random variate, with mean zero and + standard deviation :data:`sigma`. The probability distribution for + Gaussian random variates is, + + .. math:: p(x) dx = {1 \over \sqrt{2 \pi \sigma^2}} \exp (-x^2 / 2\sigma^2) dx + + for :math:`x` in the range :math:`-\infty` to :math:`+\infty`. Use the + transformation :math:`z = \mu + x` on the numbers returned by + :func:`gsl_ran_gaussian` to obtain a Gaussian distribution with mean + :math:`\mu`. This function uses the Box-Muller algorithm which requires two + calls to the random number generator :data:`r`. + +.. function:: double gsl_ran_gaussian_pdf (double x, double sigma) + + This function computes the probability density :math:`p(x)` at :data:`x` + for a Gaussian distribution with standard deviation :data:`sigma`, using + the formula given above. + + .. image:: /images/rand-gaussian.png + +.. index:: Ziggurat method + +.. function:: double gsl_ran_gaussian_ziggurat (const gsl_rng * r, double sigma) + double gsl_ran_gaussian_ratio_method (const gsl_rng * r, double sigma) + + This function computes a Gaussian random variate using the alternative + Marsaglia-Tsang ziggurat and Kinderman-Monahan-Leva ratio methods. The + Ziggurat algorithm is the fastest available algorithm in most cases. + +.. function:: double gsl_ran_ugaussian (const gsl_rng * r) + double gsl_ran_ugaussian_pdf (double x) + double gsl_ran_ugaussian_ratio_method (const gsl_rng * r) + + These functions compute results for the unit Gaussian distribution. They + are equivalent to the functions above with a standard deviation of one, + :data:`sigma` = 1. + +.. function:: double gsl_cdf_gaussian_P (double x, double sigma) + double gsl_cdf_gaussian_Q (double x, double sigma) + double gsl_cdf_gaussian_Pinv (double P, double sigma) + double gsl_cdf_gaussian_Qinv (double Q, double sigma) + + These functions compute the cumulative distribution functions + :math:`P(x)`, :math:`Q(x)` and their inverses for the Gaussian + distribution with standard deviation :data:`sigma`. + +.. function:: double gsl_cdf_ugaussian_P (double x) + double gsl_cdf_ugaussian_Q (double x) + double gsl_cdf_ugaussian_Pinv (double P) + double gsl_cdf_ugaussian_Qinv (double Q) + + These functions compute the cumulative distribution functions + :math:`P(x)`, :math:`Q(x)` and their inverses for the unit Gaussian + distribution. + +|newpage| + +The Gaussian Tail Distribution +============================== + +.. index:: Gaussian Tail distribution + +.. function:: double gsl_ran_gaussian_tail (const gsl_rng * r, double a, double sigma) + + This function provides random variates from the upper tail of a Gaussian + distribution with standard deviation :data:`sigma`. The values returned + are larger than the lower limit :data:`a`, which must be positive. The + method is based on Marsaglia's famous rectangle-wedge-tail algorithm (Ann. + Math. Stat. 32, 894--899 (1961)), with this aspect explained in Knuth, v2, + 3rd ed, p139,586 (exercise 11). + + The probability distribution for Gaussian tail random variates is, + + .. math:: p(x) dx = {1 \over N(a;\sigma) \sqrt{2 \pi \sigma^2}} \exp (- x^2 / 2\sigma^2) dx + + for :math:`x > a` where :math:`N(a;\sigma)` is the normalization constant, + + .. only:: not texinfo + + .. math:: N(a;\sigma) = {1 \over 2} \hbox{erfc}\left({a \over \sqrt{2 \sigma^2}}\right). + + .. only:: texinfo + + :: + + N(a;\sigma) = (1/2) erfc(a / sqrt(2 sigma^2)). + +.. function:: double gsl_ran_gaussian_tail_pdf (double x, double a, double sigma) + + This function computes the probability density :math:`p(x)` at :data:`x` + for a Gaussian tail distribution with standard deviation :data:`sigma` and + lower limit :data:`a`, using the formula given above. + + .. image:: /images/rand-gaussian-tail.png + +.. function:: double gsl_ran_ugaussian_tail (const gsl_rng * r, double a) + double gsl_ran_ugaussian_tail_pdf (double :data:`x`, double :data:`a`) + + These functions compute results for the tail of a unit Gaussian + distribution. They are equivalent to the functions above with a standard + deviation of one, :data:`sigma` = 1. + +|newpage| + +The Bivariate Gaussian Distribution +=================================== + +.. index:: + single: Bivariate Gaussian distribution + single: two dimensional Gaussian distribution + single: Gaussian distribution, bivariate + +.. function:: void gsl_ran_bivariate_gaussian (const gsl_rng * r, double sigma_x, double sigma_y, double rho, double * x, double * y) + + This function generates a pair of correlated Gaussian variates, with + mean zero, correlation coefficient :data:`rho` and standard deviations + :data:`sigma_x` and :data:`sigma_y` in the :math:`x` and :math:`y` directions. + The probability distribution for bivariate Gaussian random variates is, + + .. only:: not texinfo + + .. math:: p(x,y) dx dy = {1 \over 2 \pi \sigma_x \sigma_y \sqrt{1-\rho^2}} \exp \left(-{(x^2/\sigma_x^2 + y^2/\sigma_y^2 - 2 \rho x y/(\sigma_x\sigma_y)) \over 2(1-\rho^2)}\right) dx dy + + .. only:: texinfo + + :: + + p(x,y) dx dy = {1 \over 2 \pi \sigma_x \sigma_y \sqrt{1-\rho^2}} \exp (-(x^2/\sigma_x^2 + y^2/\sigma_y^2 - 2 \rho x y/(\sigma_x\sigma_y))/2(1-\rho^2)) dx dy + + for :math:`x,y` in the range :math:`-\infty` to :math:`+\infty`. The + correlation coefficient :data:`rho` should lie between :math:`1` and + :math:`-1`. + +.. function:: double gsl_ran_bivariate_gaussian_pdf (double x, double y, double sigma_x, double sigma_y, double rho) + + This function computes the probability density :math:`p(x,y)` at + (:data:`x`, :data:`y`) for a bivariate Gaussian distribution with standard + deviations :data:`sigma_x`, :data:`sigma_y` and correlation coefficient + :data:`rho`, using the formula given above. + + .. image:: /images/rand-bivariate-gaussian.png + +|newpage| + +The Multivariate Gaussian Distribution +====================================== + +.. index:: + single: Bivariate Gaussian distribution + single: two dimensional Gaussian distribution + single: Gaussian distribution, bivariate + +.. function:: int gsl_ran_multivariate_gaussian (const gsl_rng * r, const gsl_vector * mu, const gsl_matrix * L, gsl_vector * result) + + This function generates a random vector satisfying the :math:`k`-dimensional multivariate Gaussian + distribution with mean :math:`\mu` and variance-covariance matrix + :math:`\Sigma`. On input, the :math:`k`-vector :math:`\mu` is given in :data:`mu`, and + the Cholesky factor of the :math:`k`-by-:math:`k` matrix :math:`\Sigma = L L^T` is + given in the lower triangle of :data:`L`, as output from :func:`gsl_linalg_cholesky_decomp`. + The random vector is stored in :data:`result` on output. The probability distribution + for multivariate Gaussian random variates is + + .. only:: not texinfo + + .. math:: p(x_1,\dots,x_k) dx_1 \dots dx_k = {1 \over \sqrt{(2 \pi)^k |\Sigma|}} \exp \left(-{1 \over 2} (x - \mu)^T \Sigma^{-1} (x - \mu)\right) dx_1 \dots dx_k + + .. only:: texinfo + + :: + + p(x_1,...,x_k) dx_1 ... dx_k = 1 / ( \sqrt{(2 \pi)^k |\Sigma| ) \exp (-1/2 (x - \mu)^T \Sigma^{-1} (x - \mu)) dx_1 ... dx_k + +.. function:: int gsl_ran_multivariate_gaussian_pdf (const gsl_vector * x, const gsl_vector * mu, const gsl_matrix * L, double * result, gsl_vector * work) + int gsl_ran_multivariate_gaussian_log_pdf (const gsl_vector * x, const gsl_vector * mu, const gsl_matrix * L, double * result, gsl_vector * work) + + These functions compute :math:`p(x)` or :math:`\log{p(x)}` at the point :data:`x`, using mean vector + :data:`mu` and variance-covariance matrix specified by its Cholesky factor :data:`L` using the formula + above. Additional workspace of length :math:`k` is required in :data:`work`. + +.. function:: int gsl_ran_multivariate_gaussian_mean (const gsl_matrix * X, gsl_vector * mu_hat) + + Given a set of :math:`n` samples :math:`X_j` from a :math:`k`-dimensional multivariate Gaussian distribution, + this function computes the maximum likelihood estimate of the mean of the distribution, given by + + .. math:: \Hat{\mu} = {1 \over n} \sum_{j=1}^n X_j + + The samples :math:`X_1,X_2,\dots,X_n` are given in the :math:`n`-by-:math:`k` matrix :data:`X`, and the maximum + likelihood estimate of the mean is stored in :data:`mu_hat` on output. + +.. function:: int gsl_ran_multivariate_gaussian_vcov (const gsl_matrix * X, gsl_matrix * sigma_hat) + + Given a set of :math:`n` samples :math:`X_j` from a :math:`k`-dimensional multivariate Gaussian distribution, + this function computes the maximum likelihood estimate of the variance-covariance matrix of the distribution, + given by + + .. only:: not texinfo + + .. math:: \Hat{\Sigma} = {1 \over n} \sum_{j=1}^n \left( X_j - \Hat{\mu} \right) \left( X_j - \Hat{\mu} \right)^T + + .. only:: texinfo + + :: + + \Hat{\Sigma} = (1 / n) \sum_{j=1}^n ( X_j - \Hat{\mu} ) ( X_j - \Hat{\mu} )^T + + The samples :math:`X_1,X_2,\dots,X_n` are given in the :math:`n`-by-:math:`k` matrix :data:`X` and the maximum + likelihood estimate of the variance-covariance matrix is stored in :data:`sigma_hat` on output. + +|newpage| + +The Exponential Distribution +============================ + +.. index:: Exponential distribution + +.. function:: double gsl_ran_exponential (const gsl_rng * r, double mu) + + This function returns a random variate from the exponential distribution + with mean :data:`mu`. The distribution is, + + .. math:: p(x) dx = {1 \over \mu} \exp(-x/\mu) dx + + for :math:`x \ge 0`. + +.. function:: double gsl_ran_exponential_pdf (double x, double mu) + + This function computes the probability density :math:`p(x)` at :data:`x` + for an exponential distribution with mean :data:`mu`, using the formula + given above. + + .. image:: /images/rand-exponential.png + +.. function:: double gsl_cdf_exponential_P (double x, double mu) + double gsl_cdf_exponential_Q (double x, double mu) + double gsl_cdf_exponential_Pinv (double P, double mu) + double gsl_cdf_exponential_Qinv (double Q, double mu) + + These functions compute the cumulative distribution functions + :math:`P(x)`, :math:`Q(x)` and their inverses for the exponential + distribution with mean :data:`mu`. + +|newpage| + +The Laplace Distribution +======================== + +.. index:: + single: two-sided exponential distribution + single: Laplace distribution + +.. function:: double gsl_ran_laplace (const gsl_rng * r, double a) + + This function returns a random variate from the Laplace distribution + with width :data:`a`. The distribution is, + + .. math:: p(x) dx = {1 \over 2 a} \exp(-|x/a|) dx + + for :math:`-\infty < x < \infty`. + +.. function:: double gsl_ran_laplace_pdf (double x, double a) + + This function computes the probability density :math:`p(x)` at :data:`x` + for a Laplace distribution with width :data:`a`, using the formula + given above. + + .. image:: /images/rand-laplace.png + +.. function:: double gsl_cdf_laplace_P (double x, double a) + double gsl_cdf_laplace_Q (double x, double a) + double gsl_cdf_laplace_Pinv (double P, double a) + double gsl_cdf_laplace_Qinv (double Q, double a) + + These functions compute the cumulative distribution functions + :math:`P(x)`, :math:`Q(x)` and their inverses for the Laplace + distribution with width :data:`a`. + +|newpage| + +The Exponential Power Distribution +================================== + +.. index:: Exponential power distribution + +.. function:: double gsl_ran_exppow (const gsl_rng * r, double a, double b) + + This function returns a random variate from the exponential power distribution + with scale parameter :data:`a` and exponent :data:`b`. The distribution is, + + .. math:: p(x) dx = {1 \over 2 a \Gamma(1+1/b)} \exp(-|x/a|^b) dx + + for :math:`x \ge 0`. + For :math:`b = 1` this reduces to the Laplace + distribution. For :math:`b = 2` it has the same form as a Gaussian + distribution, but with :math:`a = \sqrt{2} \sigma`. + +.. function:: double gsl_ran_exppow_pdf (double x, double a, double b) + + This function computes the probability density :math:`p(x)` at :data:`x` + for an exponential power distribution with scale parameter :data:`a` + and exponent :data:`b`, using the formula given above. + + .. image:: /images/rand-exppow.png + +.. function:: double gsl_cdf_exppow_P (double x, double a, double b) + double gsl_cdf_exppow_Q (double x, double a, double b) + + These functions compute the cumulative distribution functions + :math:`P(x)`, :math:`Q(x)` for the exponential power distribution with + parameters :data:`a` and :data:`b`. + +|newpage| + +The Cauchy Distribution +======================= + +.. index:: Cauchy distribution + +.. function:: double gsl_ran_cauchy (const gsl_rng * r, double a) + + This function returns a random variate from the Cauchy distribution with + scale parameter :data:`a`. The probability distribution for Cauchy + random variates is, + + .. math:: p(x) dx = {1 \over a\pi (1 + (x/a)^2) } dx + + for :math:`x` in the range :math:`-\infty` to :math:`+\infty`. The Cauchy + distribution is also known as the Lorentz distribution. + +.. function:: double gsl_ran_cauchy_pdf (double x, double a) + + This function computes the probability density :math:`p(x)` at :data:`x` + for a Cauchy distribution with scale parameter :data:`a`, using the formula + given above. + + .. image:: /images/rand-cauchy.png + +.. function:: double gsl_cdf_cauchy_P (double x, double a) + double gsl_cdf_cauchy_Q (double x, double a) + double gsl_cdf_cauchy_Pinv (double P, double a) + double gsl_cdf_cauchy_Qinv (double Q, double a) + + These functions compute the cumulative distribution functions + :math:`P(x)`, :math:`Q(x)` and their inverses for the Cauchy + distribution with scale parameter :data:`a`. + +|newpage| + +The Rayleigh Distribution +========================= + +.. index:: Rayleigh distribution + +.. function:: double gsl_ran_rayleigh (const gsl_rng * r, double sigma) + + This function returns a random variate from the Rayleigh distribution with + scale parameter :data:`sigma`. The distribution is, + + .. math:: p(x) dx = {x \over \sigma^2} \exp(- x^2/(2 \sigma^2)) dx + + for :math:`x > 0`. + +.. function:: double gsl_ran_rayleigh_pdf (double x, double sigma) + + This function computes the probability density :math:`p(x)` at :data:`x` + for a Rayleigh distribution with scale parameter :data:`sigma`, using the + formula given above. + + .. image:: /images/rand-rayleigh.png + +.. function:: double gsl_cdf_rayleigh_P (double x, double sigma) + double gsl_cdf_rayleigh_Q (double x, double sigma) + double gsl_cdf_rayleigh_Pinv (double P, double sigma) + double gsl_cdf_rayleigh_Qinv (double Q, double sigma) + + These functions compute the cumulative distribution functions + :math:`P(x)`, :math:`Q(x)` and their inverses for the Rayleigh + distribution with scale parameter :data:`sigma`. + +|newpage| + +The Rayleigh Tail Distribution +============================== + +.. index:: Rayleigh Tail distribution + +.. function:: double gsl_ran_rayleigh_tail (const gsl_rng * r, double a, double sigma) + + This function returns a random variate from the tail of the Rayleigh + distribution with scale parameter :data:`sigma` and a lower limit of + :data:`a`. The distribution is, + + .. math:: p(x) dx = {x \over \sigma^2} \exp ((a^2 - x^2) /(2 \sigma^2)) dx + + for :math:`x > a`. + +.. function:: double gsl_ran_rayleigh_tail_pdf (double x, double a, double sigma) + + This function computes the probability density :math:`p(x)` at :data:`x` + for a Rayleigh tail distribution with scale parameter :data:`sigma` and + lower limit :data:`a`, using the formula given above. + + .. image:: /images/rand-rayleigh-tail.png + +|newpage| + +The Landau Distribution +======================= + +.. index:: Landau distribution + +.. function:: double gsl_ran_landau (const gsl_rng * r) + + This function returns a random variate from the Landau distribution. The + probability distribution for Landau random variates is defined + analytically by the complex integral, + + .. only:: not texinfo + + .. math:: p(x) = {1 \over {2 \pi i}} \int_{c-i\infty}^{c+i\infty} ds\, \exp(s \log(s) + x s) + + .. only:: texinfo + + :: + + p(x) = (1/(2 \pi i)) \int_{c-i\infty}^{c+i\infty} ds exp(s log(s) + x s) + + For numerical purposes it is more convenient to use the following + equivalent form of the integral, + + .. math:: p(x) = (1/\pi) \int_0^\infty dt \exp(-t \log(t) - x t) \sin(\pi t). + +.. function:: double gsl_ran_landau_pdf (double x) + + This function computes the probability density :math:`p(x)` at :data:`x` + for the Landau distribution using an approximation to the formula given + above. + + .. image:: /images/rand-landau.png + +|newpage| + +The Levy alpha-Stable Distributions +=================================== + +.. index:: Levy distribution + +.. function:: double gsl_ran_levy (const gsl_rng * r, double c, double alpha) + + This function returns a random variate from the Levy symmetric stable + distribution with scale :data:`c` and exponent :data:`alpha`. The symmetric + stable probability distribution is defined by a Fourier transform, + + .. only:: not texinfo + + .. math:: p(x) = {1 \over 2 \pi} \int_{-\infty}^{+\infty} dt \exp(-it x - |c t|^\alpha) + + .. only:: texinfo + + :: + + p(x) = 1 / (2 \pi) \int_{-\infty}^{+\infty} dt \exp(-it x - |c t|^alpha) + + There is no explicit solution for the form of :math:`p(x)` and the + library does not define a corresponding :code:`pdf` function. For + :math:`\alpha = 1` the distribution reduces to the Cauchy distribution. For + :math:`\alpha = 2` it is a Gaussian distribution with :math:`\sigma = \sqrt{2} c`. + For :math:`\alpha < 1` the tails of the distribution become extremely wide. + + The algorithm only works for :math:`0 < \alpha \le 2`. + + .. image:: /images/rand-levy.png + +|newpage| + +The Levy skew alpha-Stable Distribution +======================================= + +.. index:: + single: Levy distribution, skew + single: Skew Levy distribution + +.. function:: double gsl_ran_levy_skew (const gsl_rng * r, double c, double alpha, double beta) + + This function returns a random variate from the Levy skew stable + distribution with scale :data:`c`, exponent :data:`alpha` and skewness + parameter :data:`beta`. The skewness parameter must lie in the range + :math:`[-1,1]`. The Levy skew stable probability distribution is defined + by a Fourier transform, + + .. only:: not texinfo + + .. math:: p(x) = {1 \over 2 \pi} \int_{-\infty}^{+\infty} dt \exp(-it x - |c t|^\alpha (1-i \beta \sgn(t) \tan(\pi\alpha/2))) + + .. only:: texinfo + + :: + + p(x) = 1 / (2 \pi) \int_{-\infty}^{+\infty} dt \exp(-it x - |c t|^alpha (1-i beta sign(t) tan(pi alpha/2))) + + When :math:`\alpha = 1` the term :math:`\tan(\pi \alpha/2)` is replaced by + :math:`-(2/\pi)\log|t|`. There is no explicit solution for the form of + :math:`p(x)` and the library does not define a corresponding :code:`pdf` + function. For :math:`\alpha = 2` the distribution reduces to a Gaussian + distribution with :math:`\sigma = \sqrt{2} c` + and the skewness parameter has no effect. + For :math:`\alpha < 1` the tails of the distribution become extremely + wide. The symmetric distribution corresponds to :math:`\beta = 0`. + + The algorithm only works for :math:`0 < \alpha \le 2`. + +The Levy alpha-stable distributions have the property that if :math:`N` +alpha-stable variates are drawn from the distribution :math:`p(c, \alpha, \beta)` +then the sum :math:`Y = X_1 + X_2 + \dots + X_N` will also be +distributed as an alpha-stable variate, +:math:`p(N^{1/\alpha} c, \alpha, \beta)`. + +.. PDF not available because there is no analytic expression for it +.. +.. @deftypefun double gsl_ran_levy_pdf (double x, double mu) +.. This function computes the probability density :math:`p(x)` at :data:`x` +.. for a symmetric Levy distribution with scale parameter :data:`mu` and +.. exponent :data:`a`, using the formula given above. +.. @end deftypefun + +.. image:: /images/rand-levyskew.png + +|newpage| + +The Gamma Distribution +====================== + +.. index:: + single: Gamma distribution + single: Erlang distribution + +.. function:: double gsl_ran_gamma (const gsl_rng * r, double a, double b) + + This function returns a random variate from the gamma + distribution. The distribution function is, + + .. math:: p(x) dx = {1 \over \Gamma(a) b^a} x^{a-1} e^{-x/b} dx + + for :math:`x > 0`. + + The gamma distribution with an integer parameter :data:`a` is known as the Erlang distribution. + + The variates are computed using the Marsaglia-Tsang fast gamma method. + This function for this method was previously called + :func:`gsl_ran_gamma_mt` and can still be accessed using this name. + +.. If @xmath{X} and @xmath{Y} are independent gamma-distributed random +.. variables of order @xmath{a} and @xmath{b}, then @xmath{X+Y} has a gamma +.. distribution of order @xmath{a+b}. + +.. function:: double gsl_ran_gamma_knuth (const gsl_rng * r, double a, double b) + + This function returns a gamma variate using the algorithms from Knuth (vol 2). + +.. function:: double gsl_ran_gamma_pdf (double x, double a, double b) + + This function computes the probability density :math:`p(x)` at :data:`x` + for a gamma distribution with parameters :data:`a` and :data:`b`, using the + formula given above. + + .. image:: /images/rand-gamma.png + +.. function:: double gsl_cdf_gamma_P (double x, double a, double b) + double gsl_cdf_gamma_Q (double x, double a, double b) + double gsl_cdf_gamma_Pinv (double P, double a, double b) + double gsl_cdf_gamma_Qinv (double Q, double a, double b) + + These functions compute the cumulative distribution functions + :math:`P(x)`, :math:`Q(x)` and their inverses for the gamma + distribution with parameters :data:`a` and :data:`b`. + +|newpage| + +The Flat (Uniform) Distribution +=============================== + +.. index:: + single: flat distribution + single: uniform distribution + +.. function:: double gsl_ran_flat (const gsl_rng * r, double a, double b) + + This function returns a random variate from the flat (uniform) + distribution from :data:`a` to :data:`b`. The distribution is, + + .. math:: p(x) dx = {1 \over (b-a)} dx + + if :math:`a \le x < b` and 0 otherwise. + +.. function:: double gsl_ran_flat_pdf (double x, double a, double b) + + This function computes the probability density :math:`p(x)` at :data:`x` + for a uniform distribution from :data:`a` to :data:`b`, using the formula + given above. + + .. image:: /images/rand-flat.png + +.. function:: double gsl_cdf_flat_P (double x, double a, double b) + double gsl_cdf_flat_Q (double x, double a, double b) + double gsl_cdf_flat_Pinv (double P, double a, double b) + double gsl_cdf_flat_Qinv (double Q, double a, double b) + + These functions compute the cumulative distribution functions + :math:`P(x)`, :math:`Q(x)` and their inverses for a uniform distribution + from :data:`a` to :data:`b`. + +|newpage| + +The Lognormal Distribution +========================== + +.. index:: Lognormal distribution + +.. function:: double gsl_ran_lognormal (const gsl_rng * r, double zeta, double sigma) + + This function returns a random variate from the lognormal + distribution. The distribution function is, + + .. math:: p(x) dx = {1 \over x \sqrt{2 \pi \sigma^2}} \exp(-(\ln(x) - \zeta)^2/2 \sigma^2) dx + + for :math:`x > 0`. + +.. function:: double gsl_ran_lognormal_pdf (double x, double zeta, double sigma) + + This function computes the probability density :math:`p(x)` at :data:`x` + for a lognormal distribution with parameters :data:`zeta` and :data:`sigma`, + using the formula given above. + + .. image:: /images/rand-lognormal.png + +.. function:: double gsl_cdf_lognormal_P (double x, double zeta, double sigma) + double gsl_cdf_lognormal_Q (double x, double zeta, double sigma) + double gsl_cdf_lognormal_Pinv (double P, double zeta, double sigma) + double gsl_cdf_lognormal_Qinv (double Q, double zeta, double sigma) + + These functions compute the cumulative distribution functions + :math:`P(x)`, :math:`Q(x)` and their inverses for the lognormal + distribution with parameters :data:`zeta` and :data:`sigma`. + +|newpage| + +The Chi-squared Distribution +============================ + +The chi-squared distribution arises in statistics. If :math:`Y_i` are +:math:`n` independent Gaussian random variates with unit variance then the +sum-of-squares, + +.. math:: X_i = \sum_i Y_i^2 + +has a chi-squared distribution with :math:`n` degrees of freedom. + +.. index:: Chi-squared distribution + +.. function:: double gsl_ran_chisq (const gsl_rng * r, double nu) + + This function returns a random variate from the chi-squared distribution + with :data:`nu` degrees of freedom. The distribution function is, + + .. math:: p(x) dx = {1 \over 2 \Gamma(\nu/2) } (x/2)^{\nu/2 - 1} \exp(-x/2) dx + + for :math:`x \ge 0`. + +.. function:: double gsl_ran_chisq_pdf (double x, double nu) + + This function computes the probability density :math:`p(x)` at :data:`x` + for a chi-squared distribution with :data:`nu` degrees of freedom, using + the formula given above. + + .. image:: /images/rand-chisq.png + +.. function:: double gsl_cdf_chisq_P (double x, double nu) + double gsl_cdf_chisq_Q (double x, double nu) + double gsl_cdf_chisq_Pinv (double P, double nu) + double gsl_cdf_chisq_Qinv (double Q, double nu) + + These functions compute the cumulative distribution functions + :math:`P(x)`, :math:`Q(x)` and their inverses for the chi-squared + distribution with :data:`nu` degrees of freedom. + +|newpage| + +The F-distribution +================== + +The F-distribution arises in statistics. If :math:`Y_1` and :math:`Y_2` +are chi-squared deviates with :math:`\nu_1` and :math:`\nu_2` degrees of +freedom then the ratio, + +.. math:: X = { (Y_1 / \nu_1) \over (Y_2 / \nu_2) } + +has an F-distribution :math:`F(x;\nu_1,\nu_2)`. + +.. index:: F-distribution + +.. function:: double gsl_ran_fdist (const gsl_rng * r, double nu1, double nu2) + + This function returns a random variate from the F-distribution with degrees of freedom :data:`nu1` and :data:`nu2`. + The distribution function is, + + .. only:: not texinfo + + .. math:: + + p(x) dx = + { \Gamma((\nu_1 + \nu_2)/2) + \over \Gamma(\nu_1/2) \Gamma(\nu_2/2) } + \nu_1^{\nu_1/2} \nu_2^{\nu_2/2} + x^{\nu_1/2 - 1} (\nu_2 + \nu_1 x)^{-\nu_1/2 -\nu_2/2} + + .. only:: texinfo + + :: + + p(x) dx = + { \Gamma((\nu_1 + \nu_2)/2) + \over \Gamma(\nu_1/2) \Gamma(\nu_2/2) } + \nu_1^{\nu_1/2} \nu_2^{\nu_2/2} + x^{\nu_1/2 - 1} (\nu_2 + \nu_1 x)^{-\nu_1/2 -\nu_2/2} + + for :math:`x \ge 0`. + +.. function:: double gsl_ran_fdist_pdf (double x, double nu1, double nu2) + + This function computes the probability density :math:`p(x)` at :data:`x` + for an F-distribution with :data:`nu1` and :data:`nu2` degrees of freedom, + using the formula given above. + + .. image:: /images/rand-fdist.png + +.. function:: double gsl_cdf_fdist_P (double x, double nu1, double nu2) + double gsl_cdf_fdist_Q (double x, double nu1, double nu2) + double gsl_cdf_fdist_Pinv (double P, double nu1, double nu2) + double gsl_cdf_fdist_Qinv (double Q, double nu1, double nu2) + + These functions compute the cumulative distribution functions + :math:`P(x)`, :math:`Q(x)` and their inverses for the F-distribution + with :data:`nu1` and :data:`nu2` degrees of freedom. + +|newpage| + +The t-distribution +================== + +The t-distribution arises in statistics. If :math:`Y_1` has a normal +distribution and :math:`Y_2` has a chi-squared distribution with +:math:`\nu` degrees of freedom then the ratio, + +.. math:: X = { Y_1 \over \sqrt{Y_2 / \nu} } + +has a t-distribution :math:`t(x;\nu)` with :math:`\nu` degrees of freedom. + +.. index:: + single: t-distribution + single: Student t-distribution + +.. function:: double gsl_ran_tdist (const gsl_rng * r, double nu) + + This function returns a random variate from the t-distribution. The + distribution function is, + + .. math:: + + p(x) dx = {\Gamma((\nu + 1)/2) \over \sqrt{\pi \nu} \Gamma(\nu/2)} + (1 + x^2/\nu)^{-(\nu + 1)/2} dx + + for :math:`-\infty < x < +\infty`. + +.. function:: double gsl_ran_tdist_pdf (double x, double nu) + + This function computes the probability density :math:`p(x)` at :data:`x` + for a t-distribution with :data:`nu` degrees of freedom, using the formula + given above. + + .. image:: /images/rand-tdist.png + +.. function:: double gsl_cdf_tdist_P (double x, double nu) + double gsl_cdf_tdist_Q (double x, double nu) + double gsl_cdf_tdist_Pinv (double P, double nu) + double gsl_cdf_tdist_Qinv (double Q, double nu) + + These functions compute the cumulative distribution functions + :math:`P(x)`, :math:`Q(x)` and their inverses for the t-distribution + with :data:`nu` degrees of freedom. + +|newpage| + +The Beta Distribution +===================== + +.. index:: Beta distribution + +.. function:: double gsl_ran_beta (const gsl_rng * r, double a, double b) + + This function returns a random variate from the beta + distribution. The distribution function is, + + .. math:: p(x) dx = {\Gamma(a+b) \over \Gamma(a) \Gamma(b)} x^{a-1} (1-x)^{b-1} dx + + for :math:`0 \le x \le 1`. + +.. function:: double gsl_ran_beta_pdf (double x, double a, double b) + + This function computes the probability density :math:`p(x)` at :data:`x` + for a beta distribution with parameters :data:`a` and :data:`b`, using the + formula given above. + + .. image:: /images/rand-beta.png + +.. function:: double gsl_cdf_beta_P (double x, double a, double b) + double gsl_cdf_beta_Q (double x, double a, double b) + double gsl_cdf_beta_Pinv (double P, double a, double b) + double gsl_cdf_beta_Qinv (double Q, double a, double b) + + These functions compute the cumulative distribution functions + :math:`P(x)`, :math:`Q(x)` and their inverses for the beta + distribution with parameters :data:`a` and :data:`b`. + +|newpage| + +The Logistic Distribution +========================= + +.. index:: Logistic distribution + +.. function:: double gsl_ran_logistic (const gsl_rng * r, double a) + + This function returns a random variate from the logistic + distribution. The distribution function is, + + .. math:: p(x) dx = { \exp(-x/a) \over a (1 + \exp(-x/a))^2 } dx + + for :math:`-\infty < x < +\infty`. + +.. function:: double gsl_ran_logistic_pdf (double x, double a) + + This function computes the probability density :math:`p(x)` at :data:`x` + for a logistic distribution with scale parameter :data:`a`, using the + formula given above. + + .. image:: /images/rand-logistic.png + +.. function:: double gsl_cdf_logistic_P (double x, double a) + double gsl_cdf_logistic_Q (double x, double a) + double gsl_cdf_logistic_Pinv (double P, double a) + double gsl_cdf_logistic_Qinv (double Q, double a) + + These functions compute the cumulative distribution functions + :math:`P(x)`, :math:`Q(x)` and their inverses for the logistic + distribution with scale parameter :data:`a`. + +|newpage| + +The Pareto Distribution +======================= + +.. index:: Pareto distribution + +.. function:: double gsl_ran_pareto (const gsl_rng * r, double a, double b) + + This function returns a random variate from the Pareto distribution of + order :data:`a`. The distribution function is, + + .. math:: p(x) dx = (a/b) / (x/b)^{a+1} dx + + for :math:`x \ge b`. + +.. function:: double gsl_ran_pareto_pdf (double x, double a, double b) + + This function computes the probability density :math:`p(x)` at :data:`x` + for a Pareto distribution with exponent :data:`a` and scale :data:`b`, using + the formula given above. + + .. image:: /images/rand-pareto.png + +.. function:: double gsl_cdf_pareto_P (double x, double a, double b) + double gsl_cdf_pareto_Q (double x, double a, double b) + double gsl_cdf_pareto_Pinv (double P, double a, double b) + double gsl_cdf_pareto_Qinv (double Q, double a, double b) + + These functions compute the cumulative distribution functions + :math:`P(x)`, :math:`Q(x)` and their inverses for the Pareto + distribution with exponent :data:`a` and scale :data:`b`. + +|newpage| + +Spherical Vector Distributions +============================== + +The spherical distributions generate random vectors, located on a +spherical surface. They can be used as random directions, for example in +the steps of a random walk. + +.. index:: + single: 2D random direction vector + single: direction vector, random 2D + single: spherical random variates, 2D + +.. function:: void gsl_ran_dir_2d (const gsl_rng * r, double * x, double * y) + void gsl_ran_dir_2d_trig_method (const gsl_rng * r, double * x, double * y) + + This function returns a random direction vector :math:`v` = + (:data:`x`, :data:`y`) in two dimensions. The vector is normalized such that + :math:`|v|^2 = x^2 + y^2 = 1`. The obvious way to do this is to take a + uniform random number between 0 and :math:`2\pi` and let :data:`x` and + :data:`y` be the sine and cosine respectively. Two trig functions would + have been expensive in the old days, but with modern hardware + implementations, this is sometimes the fastest way to go. This is the + case for the Pentium (but not the case for the Sun Sparcstation). + One can avoid the trig evaluations by choosing :data:`x` and + :data:`y` in the interior of a unit circle (choose them at random from the + interior of the enclosing square, and then reject those that are outside + the unit circle), and then dividing by :math:`\sqrt{x^2 + y^2}`. + A much cleverer approach, attributed to von Neumann (See Knuth, v2, 3rd + ed, p140, exercise 23), requires neither trig nor a square root. In + this approach, :data:`u` and :data:`v` are chosen at random from the + interior of a unit circle, and then :math:`x=(u^2-v^2)/(u^2+v^2)` and + :math:`y=2uv/(u^2+v^2)`. + +.. index:: + single: 3D random direction vector + single: direction vector, random 3D + single: spherical random variates, 3D + +.. function:: void gsl_ran_dir_3d (const gsl_rng * r, double * x, double * y, double * z) + + This function returns a random direction vector :math:`v` = + (:data:`x`, :data:`y`, :data:`z`) in three dimensions. The vector is normalized + such that :math:`|v|^2 = x^2 + y^2 + z^2 = 1`. The method employed is + due to Robert E. Knop (CACM 13, 326 (1970)), and explained in Knuth, v2, + 3rd ed, p136. It uses the surprising fact that the distribution + projected along any axis is actually uniform (this is only true for 3 + dimensions). + +.. index:: + single: N-dimensional random direction vector + single: direction vector, random N-dimensional + single: spherical random variates, N-dimensional + +.. function:: void gsl_ran_dir_nd (const gsl_rng * r, size_t n, double * x) + + This function returns a random direction vector + :math:`v = (x_1,x_2,\ldots,x_n)` + in :data:`n` dimensions. The vector is normalized such that + :math:`|v|^2 = x_1^2 + x_2^2 + \cdots + x_n^2 = 1`. + The method + uses the fact that a multivariate Gaussian distribution is spherically + symmetric. Each component is generated to have a Gaussian distribution, + and then the components are normalized. The method is described by + Knuth, v2, 3rd ed, p135--136, and attributed to G. W. Brown, Modern + Mathematics for the Engineer (1956). + +|newpage| + +The Weibull Distribution +======================== + +.. index:: Weibull distribution + +.. function:: double gsl_ran_weibull (const gsl_rng * r, double a, double b) + + This function returns a random variate from the Weibull distribution. The + distribution function is, + + .. math:: p(x) dx = {b \over a^b} x^{b-1} \exp(-(x/a)^b) dx + + for :math:`x \ge 0`. + +.. function:: double gsl_ran_weibull_pdf (double x, double a, double b) + + This function computes the probability density :math:`p(x)` at :data:`x` + for a Weibull distribution with scale :data:`a` and exponent :data:`b`, + using the formula given above. + + .. image:: /images/rand-weibull.png + +.. function:: double gsl_cdf_weibull_P (double x, double a, double b) + double gsl_cdf_weibull_Q (double x, double a, double b) + double gsl_cdf_weibull_Pinv (double P, double a, double b) + double gsl_cdf_weibull_Qinv (double Q, double a, double b) + + These functions compute the cumulative distribution functions + :math:`P(x)`, :math:`Q(x)` and their inverses for the Weibull + distribution with scale :data:`a` and exponent :data:`b`. + +|newpage| + +The Type-1 Gumbel Distribution +============================== + +.. index:: + single: Gumbel distribution (Type 1) + single: Type 1 Gumbel distribution, random variates + +.. function:: double gsl_ran_gumbel1 (const gsl_rng * r, double a, double b) + + This function returns a random variate from the Type-1 Gumbel + distribution. The Type-1 Gumbel distribution function is, + + .. math:: p(x) dx = a b \exp(-(b \exp(-ax) + ax)) dx + + for :math:`-\infty < x < \infty`. + +.. function:: double gsl_ran_gumbel1_pdf (double x, double a, double b) + + This function computes the probability density :math:`p(x)` at :data:`x` + for a Type-1 Gumbel distribution with parameters :data:`a` and :data:`b`, + using the formula given above. + + .. image:: /images/rand-gumbel1.png + +.. function:: double gsl_cdf_gumbel1_P (double x, double a, double b) + double gsl_cdf_gumbel1_Q (double x, double a, double b) + double gsl_cdf_gumbel1_Pinv (double P, double a, double b) + double gsl_cdf_gumbel1_Qinv (double Q, double a, double b) + + These functions compute the cumulative distribution functions + :math:`P(x)`, :math:`Q(x)` and their inverses for the Type-1 Gumbel + distribution with parameters :data:`a` and :data:`b`. + +|newpage| + +The Type-2 Gumbel Distribution +============================== + +.. index:: + single: Gumbel distribution (Type 2) + single: Type 2 Gumbel distribution + +.. function:: double gsl_ran_gumbel2 (const gsl_rng * r, double a, double b) + + This function returns a random variate from the Type-2 Gumbel + distribution. The Type-2 Gumbel distribution function is, + + .. math:: p(x) dx = a b x^{-a-1} \exp(-b x^{-a}) dx + + for :math:`0 < x < \infty`. + +.. function:: double gsl_ran_gumbel2_pdf (double x, double a, double b) + + This function computes the probability density :math:`p(x)` at :data:`x` + for a Type-2 Gumbel distribution with parameters :data:`a` and :data:`b`, + using the formula given above. + + .. image:: /images/rand-gumbel2.png + +.. function:: double gsl_cdf_gumbel2_P (double x, double a, double b) + double gsl_cdf_gumbel2_Q (double x, double a, double b) + double gsl_cdf_gumbel2_Pinv (double P, double a, double b) + double gsl_cdf_gumbel2_Qinv (double Q, double a, double b) + + These functions compute the cumulative distribution functions + :math:`P(x)`, :math:`Q(x)` and their inverses for the Type-2 Gumbel + distribution with parameters :data:`a` and :data:`b`. + +|newpage| + +The Dirichlet Distribution +========================== + +.. index:: Dirichlet distribution + +.. function:: void gsl_ran_dirichlet (const gsl_rng * r, size_t K, const double alpha[], double theta[]) + + This function returns an array of :data:`K` random variates from a Dirichlet + distribution of order :data:`K`-1. The distribution function is + + .. only:: not texinfo + + .. math:: + + p(\theta_1,\ldots,\theta_K) \, d\theta_1 \cdots d\theta_K = + {1 \over Z} \prod_{i=1}^{K} \theta_i^{\alpha_i - 1} + \; \delta(1 -\sum_{i=1}^K \theta_i) d\theta_1 \cdots d\theta_K + + .. only:: texinfo + + :: + + p(\theta_1, ..., \theta_K) d\theta_1 ... d\theta_K = + (1/Z) \prod_{i=1}^K \theta_i^{\alpha_i - 1} \delta(1 -\sum_{i=1}^K \theta_i) d\theta_1 ... d\theta_K + + for :math:`\theta_i \ge 0` + and :math:`\alpha_i > 0`. + The delta function ensures that :math:`\sum \theta_i = 1`. + The normalization factor :math:`Z` is + + .. math:: Z = {\prod_{i=1}^K \Gamma(\alpha_i) \over \Gamma( \sum_{i=1}^K \alpha_i)} + + The random variates are generated by sampling :data:`K` values + from gamma distributions with parameters + :math:`a=\alpha_i$, $b=1`, + and renormalizing. + See A.M. Law, W.D. Kelton, *Simulation Modeling and Analysis* (1991). + +.. function:: double gsl_ran_dirichlet_pdf (size_t K, const double alpha[], const double theta[]) + + This function computes the probability density + :math:`p(\theta_1, \ldots , \theta_K)` + at :code:`theta[K]` for a Dirichlet distribution with parameters + :code:`alpha[K]`, using the formula given above. + +.. function:: double gsl_ran_dirichlet_lnpdf (size_t K, const double alpha[], const double theta[]) + + This function computes the logarithm of the probability density + :math:`p(\theta_1, \ldots , \theta_K)` + for a Dirichlet distribution with parameters + :code:`alpha[K]`. + +|newpage| + +General Discrete Distributions +============================== + +Given :math:`K` discrete events with different probabilities :math:`P[k]`, +produce a random value :math:`k` consistent with its probability. + +The obvious way to do this is to preprocess the probability list by +generating a cumulative probability array with :math:`K + 1` elements: + +.. only:: not texinfo + + .. math:: + + C[0] & = 0 \\ + C[k+1] &= C[k] + P[k] + +.. only:: texinfo + + :: + + C[0] = 0 + C[k+1] = C[k] + P[k] + +Note that this construction produces :math:`C[K] = 1`. Now choose a +uniform deviate :math:`u` between 0 and 1, and find the value of :math:`k` +such that :math:`C[k] \le u < C[k+1]`. +Although this in principle requires of order :math:`\log K` steps per +random number generation, they are fast steps, and if you use something +like :math:`\lfloor uK \rfloor` as a starting point, you can often do +pretty well. + +But faster methods have been devised. Again, the idea is to preprocess +the probability list, and save the result in some form of lookup table; +then the individual calls for a random discrete event can go rapidly. +An approach invented by G. Marsaglia (Generating discrete random variables +in a computer, Comm ACM 6, 37--38 (1963)) is very clever, and readers +interested in examples of good algorithm design are directed to this +short and well-written paper. Unfortunately, for large :math:`K`, +Marsaglia's lookup table can be quite large. + +A much better approach is due to Alastair J. Walker (An efficient method +for generating discrete random variables with general distributions, ACM +Trans on Mathematical Software 3, 253--256 (1977); see also Knuth, v2, +3rd ed, p120--121,139). This requires two lookup tables, one floating +point and one integer, but both only of size :math:`K`. After +preprocessing, the random numbers are generated in O(1) time, even for +large :math:`K`. The preprocessing suggested by Walker requires +:math:`O(K^2)` effort, but that is not actually necessary, and the +implementation provided here only takes :math:`O(K)` effort. In general, +more preprocessing leads to faster generation of the individual random +numbers, but a diminishing return is reached pretty early. Knuth points +out that the optimal preprocessing is combinatorially difficult for +large :math:`K`. + +This method can be used to speed up some of the discrete random number +generators below, such as the binomial distribution. To use it for +something like the Poisson Distribution, a modification would have to +be made, since it only takes a finite set of :math:`K` outcomes. + +.. index:: + single: Discrete random numbers + single: Discrete random numbers, preprocessing + +.. type:: gsl_ran_discrete_t + + This structure contains the lookup table for the discrete random number generator. + +.. function:: gsl_ran_discrete_t * gsl_ran_discrete_preproc (size_t K, const double * P) + + This function returns a pointer to a structure that contains the lookup + table for the discrete random number generator. The array :data:`P` contains + the probabilities of the discrete events; these array elements must all be + positive, but they needn't add up to one (so you can think of them more + generally as "weights")---the preprocessor will normalize appropriately. + This return value is used + as an argument for the :func:`gsl_ran_discrete` function below. + +.. index:: Discrete random numbers + +.. function:: size_t gsl_ran_discrete (const gsl_rng * r, const gsl_ran_discrete_t * g) + + After the preprocessor, above, has been called, you use this function to + get the discrete random numbers. + +.. index:: Discrete random numbers + +.. function:: double gsl_ran_discrete_pdf (size_t k, const gsl_ran_discrete_t * g) + + Returns the probability :math:`P[k]` of observing the variable :data:`k`. + Since :math:`P[k]` is not stored as part of the lookup table, it must be + recomputed; this computation takes :math:`O(K)`, so if :data:`K` is large + and you care about the original array :math:`P[k]` used to create the + lookup table, then you should just keep this original array :math:`P[k]` + around. + +.. index:: Discrete random numbers + +.. function:: void gsl_ran_discrete_free (gsl_ran_discrete_t * g) + + De-allocates the lookup table pointed to by :data:`g`. + +|newpage| + +The Poisson Distribution +======================== + +.. index:: Poisson random numbers + +.. function:: unsigned int gsl_ran_poisson (const gsl_rng * r, double mu) + + This function returns a random integer from the Poisson distribution + with mean :data:`mu`. The probability distribution for Poisson variates is, + + .. math:: p(k) = {\mu^k \over k!} \exp(-\mu) + + for :math:`k \ge 0`. + +.. function:: double gsl_ran_poisson_pdf (unsigned int k, double mu) + + This function computes the probability :math:`p(k)` of obtaining :data:`k` + from a Poisson distribution with mean :data:`mu`, using the formula + given above. + + .. image:: /images/rand-poisson.png + +.. function:: double gsl_cdf_poisson_P (unsigned int k, double mu) + double gsl_cdf_poisson_Q (unsigned int k, double mu) + + These functions compute the cumulative distribution functions + :math:`P(k)`, :math:`Q(k)` for the Poisson distribution with parameter + :data:`mu`. + +|newpage| + +The Bernoulli Distribution +========================== + +.. index:: + single: Bernoulli trial, random variates + +.. function:: unsigned int gsl_ran_bernoulli (const gsl_rng * r, double p) + + This function returns either 0 or 1, the result of a Bernoulli trial + with probability :data:`p`. The probability distribution for a Bernoulli + trial is, + + .. only:: not texinfo + + .. math:: + + p(0) & = 1 - p \\ + p(1) & = p + + .. only:: texinfo + + :: + + p(0) = 1 - p + p(1) = p + +.. function:: double gsl_ran_bernoulli_pdf (unsigned int k, double p) + + This function computes the probability :math:`p(k)` of obtaining + :data:`k` from a Bernoulli distribution with probability parameter + :data:`p`, using the formula given above. + + .. image:: /images/rand-bernoulli.png + +|newpage| + +The Binomial Distribution +========================= + +.. index:: Binomial random variates + +.. function:: unsigned int gsl_ran_binomial (const gsl_rng * r, double p, unsigned int n) + + This function returns a random integer from the binomial distribution, + the number of successes in :data:`n` independent trials with probability + :data:`p`. The probability distribution for binomial variates is, + + .. math:: p(k) = {n! \over k! (n-k)!} p^k (1-p)^{n-k} + + for :math:`0 \le k \le n`. + +.. function:: double gsl_ran_binomial_pdf (unsigned int k, double p, unsigned int n) + + This function computes the probability :math:`p(k)` of obtaining :data:`k` + from a binomial distribution with parameters :data:`p` and :data:`n`, using + the formula given above. + + .. image:: /images/rand-binomial.png + +.. function:: double gsl_cdf_binomial_P (unsigned int k, double p, unsigned int n) + double gsl_cdf_binomial_Q (unsigned int k, double p, unsigned int n) + + These functions compute the cumulative distribution functions + :math:`P(k)`, :math:`Q(k)` for the binomial + distribution with parameters :data:`p` and :data:`n`. + +|newpage| + +The Multinomial Distribution +============================ + +.. index:: Multinomial distribution + +.. function:: void gsl_ran_multinomial (const gsl_rng * r, size_t K, unsigned int N, const double p[], unsigned int n[]) + + This function computes a random sample :data:`n` from the multinomial + distribution formed by :data:`N` trials from an underlying distribution + :data:`p[K]`. The distribution function for :data:`n` is, + + .. only:: not texinfo + + .. math:: + + P(n_1, n_2,\cdots, n_K) = {{ N!}\over{n_1 ! n_2 ! \cdots n_K !}} \, + p_1^{n_1} p_2^{n_2} \cdots p_K^{n_K} + + .. only:: texinfo + + :: + + P(n_1, n_2, ..., n_K) = + (N!/(n_1! n_2! ... n_K!)) p_1^n_1 p_2^n_2 ... p_K^n_K + + where :math:`(n_1, n_2, \ldots, n_K)` + are nonnegative integers with + :math:`\sum_{k=1}^{K} n_k = N`, + and + :math:`(p_1, p_2, \ldots, p_K)` + is a probability distribution with :math:`\sum p_i = 1`. + If the array :code:`p[K]` is not normalized then its entries will be + treated as weights and normalized appropriately. The arrays :data:`n` + and :data:`p` must both be of length :data:`K`. + + Random variates are generated using the conditional binomial method (see + C.S. Davis, *The computer generation of multinomial random + variates*, Comp. Stat. Data Anal. 16 (1993) 205--217 for details). + +.. function:: double gsl_ran_multinomial_pdf (size_t K, const double p[], const unsigned int n[]) + + This function computes the probability + :math:`P(n_1, n_2, \ldots, n_K)` + of sampling :code:`n[K]` from a multinomial distribution + with parameters :code:`p[K]`, using the formula given above. + +.. function:: double gsl_ran_multinomial_lnpdf (size_t K, const double p[], const unsigned int n[]) + + This function returns the logarithm of the probability for the + multinomial distribution :math:`P(n_1, n_2, \ldots, n_K)` + with parameters :code:`p[K]`. + +|newpage| + +The Negative Binomial Distribution +================================== + +.. index:: + single: Negative Binomial distribution, random variates + +.. function:: unsigned int gsl_ran_negative_binomial (const gsl_rng * r, double p, double n) + + This function returns a random integer from the negative binomial + distribution, the number of failures occurring before :data:`n` successes + in independent trials with probability :data:`p` of success. The + probability distribution for negative binomial variates is, + + .. math:: p(k) = {\Gamma(n + k) \over \Gamma(k+1) \Gamma(n) } p^n (1-p)^k + + Note that :math:`n` is not required to be an integer. + +.. function:: double gsl_ran_negative_binomial_pdf (unsigned int k, double p, double n) + + This function computes the probability :math:`p(k)` of obtaining :data:`k` + from a negative binomial distribution with parameters :data:`p` and + :data:`n`, using the formula given above. + + .. image:: /images/rand-nbinomial.png + +.. function:: double gsl_cdf_negative_binomial_P (unsigned int k, double p, double n) + double gsl_cdf_negative_binomial_Q (unsigned int k, double p, double n) + + These functions compute the cumulative distribution functions + :math:`P(k)`, :math:`Q(k)` for the negative binomial distribution with + parameters :data:`p` and :data:`n`. + +|newpage| + +The Pascal Distribution +======================= + +.. function:: unsigned int gsl_ran_pascal (const gsl_rng * r, double p, unsigned int n) + + This function returns a random integer from the Pascal distribution. The + Pascal distribution is simply a negative binomial distribution with an + integer value of :math:`n`. + + .. math:: p(k) = {(n + k - 1)! \over k! (n - 1)! } p^n (1-p)^k + + for :math:`k \ge 0`. + +.. function:: double gsl_ran_pascal_pdf (unsigned int k, double p, unsigned int n) + + This function computes the probability :math:`p(k)` of obtaining :data:`k` + from a Pascal distribution with parameters :data:`p` and + :data:`n`, using the formula given above. + + .. image:: /images/rand-pascal.png + +.. function:: double gsl_cdf_pascal_P (unsigned int k, double p, unsigned int n) + double gsl_cdf_pascal_Q (unsigned int k, double p, unsigned int n) + + These functions compute the cumulative distribution functions + :math:`P(k)`, :math:`Q(k)` for the Pascal distribution with + parameters :data:`p` and :data:`n`. + +|newpage| + +The Geometric Distribution +========================== + +.. index:: Geometric random variates + +.. function:: unsigned int gsl_ran_geometric (const gsl_rng * r, double p) + + This function returns a random integer from the geometric distribution, + the number of independent trials with probability :data:`p` until the + first success. The probability distribution for geometric variates + is, + + .. math:: p(k) = p (1-p)^{k-1} + + for :math:`k \ge 1`. + Note that the distribution begins with :math:`k = 1` with this + definition. There is another convention in which the exponent :math:`k - 1` + is replaced by :math:`k`. + +.. function:: double gsl_ran_geometric_pdf (unsigned int k, double p) + + This function computes the probability :math:`p(k)` of obtaining :data:`k` + from a geometric distribution with probability parameter :data:`p`, using + the formula given above. + + .. image:: /images/rand-geometric.png + +.. function:: double gsl_cdf_geometric_P (unsigned int k, double p) + double gsl_cdf_geometric_Q (unsigned int k, double p) + + These functions compute the cumulative distribution functions + :math:`P(k)`, :math:`Q(k)` for the geometric distribution with parameter + :data:`p`. + +|newpage| + +The Hypergeometric Distribution +=============================== + +.. index:: + single: hypergeometric random variates + single: Geometric random variates + +.. function:: unsigned int gsl_ran_hypergeometric (const gsl_rng * r, unsigned int n1, unsigned int n2, unsigned int t) + + This function returns a random integer from the hypergeometric + distribution. The probability distribution for hypergeometric + random variates is, + + .. math:: p(k) = C(n_1, k) C(n_2, t - k) / C(n_1 + n_2, t) + + where :math:`C(a,b) = a!/(b!(a-b)!)` and + :math:`t \leq n_1 + n_2`. + The domain of :math:`k` is + :math:`\max(0, t - n_2), \ldots, \min(t, n_1)` + + If a population contains :math:`n_1` elements of "type 1" and + :math:`n_2` elements of "type 2" then the hypergeometric + distribution gives the probability of obtaining :math:`k` elements of + "type 1" in :math:`t` samples from the population without + replacement. + +.. function:: double gsl_ran_hypergeometric_pdf (unsigned int k, unsigned int n1, unsigned int n2, unsigned int t) + + This function computes the probability :math:`p(k)` of obtaining :data:`k` + from a hypergeometric distribution with parameters :data:`n1`, :data:`n2`, + :data:`t`, using the formula given above. + + .. image:: /images/rand-hypergeometric.png + +.. function:: double gsl_cdf_hypergeometric_P (unsigned int k, unsigned int n1, unsigned int n2, unsigned int t) + double gsl_cdf_hypergeometric_Q (unsigned int k, unsigned int n1, unsigned int n2, unsigned int t) + + These functions compute the cumulative distribution functions + :math:`P(k)`, :math:`Q(k)` for the hypergeometric distribution with + parameters :data:`n1`, :data:`n2` and :data:`t`. + +|newpage| + +.. index:: Logarithmic random variates + +The Logarithmic Distribution +============================ + +.. function:: unsigned int gsl_ran_logarithmic (const gsl_rng * r, double p) + + This function returns a random integer from the logarithmic + distribution. The probability distribution for logarithmic random variates + is, + + .. only:: not texinfo + + .. math:: p(k) = {-1 \over \log(1-p)} {\left( p^k \over k \right)} + + .. only:: texinfo + + :: + + p(k) = {-1 \over \log(1-p)} {(p^k \over k)} + + for :math:`k \ge 1`. + +.. function:: double gsl_ran_logarithmic_pdf (unsigned int k, double p) + + This function computes the probability :math:`p(k)` of obtaining :data:`k` + from a logarithmic distribution with probability parameter :data:`p`, + using the formula given above. + + .. image:: /images/rand-logarithmic.png + +|newpage| + +.. index:: Wishart random variates + +The Wishart Distribution +======================== + +.. function:: int gsl_ran_wishart (const gsl_rng * r, const double n, const gsl_matrix * L, gsl_matrix * result, gsl_matrix * work) + + This function computes a random symmetric :math:`p`-by-:math:`p` matrix from the Wishart distribution. + The probability distribution for Wishart random variates is, + + .. only:: not texinfo + + .. math:: p(X) = \frac{|X|^{(n-p-1)/2} e^{-\textrm{tr}\left( V^{-1} X\right)/2}}{2^{\frac{np}{2}} \left| V \right|^{n/2} \Gamma_p(\frac{n}{2})} + + .. only:: texinfo + + .. math:: p(X) = \frac{|X|^{(n-p-1)/2} e^{-tr( V^{-1} X)/2}}{2^{(np)/2} |V|^{n/2} \Gamma_p(n/2)} + + Here, :math:`n > p - 1` is the number of degrees of freedom, :math:`V` is a symmetric positive definite + :math:`p`-by-:math:`p` scale matrix, whose Cholesky factor is specified by :data:`L`, and :data:`work` is + :math:`p`-by-:math:`p` workspace. The :math:`p`-by-:math:`p` Wishart distributed matrix :math:`X` is stored + in :data:`result` on output. + +.. function:: int gsl_ran_wishart_pdf (const gsl_matrix * X, const gsl_matrix * L_X, const double n, const gsl_matrix * L, double * result, gsl_matrix * work) + int gsl_ran_wishart_log_pdf (const gsl_matrix * X, const gsl_matrix * L_X, const double n, const gsl_matrix * L, double * result, gsl_matrix * work) + + These functions compute :math:`p(X)` or :math:`\log{p(X)}` for the :math:`p`-by-:math:`p` matrix + :data:`X`, whose Cholesky factor is specified in :data:`L_X`. The degrees of freedom is + given by :data:`n`, the Cholesky factor of the scale matrix :math:`V` is specified in :data:`L`, + and :data:`work` is :math:`p`-by-:math:`p` workspace. The probably density value is returned + in :data:`result`. + +|newpage| + +Shuffling and Sampling +====================== + +The following functions allow the shuffling and sampling of a set of +objects. The algorithms rely on a random number generator as a source of +randomness and a poor quality generator can lead to correlations in the +output. In particular it is important to avoid generators with a short +period. For more information see Knuth, v2, 3rd ed, Section 3.4.2, +"Random Sampling and Shuffling". + +.. function:: void gsl_ran_shuffle (const gsl_rng * r, void * base, size_t n, size_t size) + + This function randomly shuffles the order of :data:`n` objects, each of + size :data:`size`, stored in the array :code:`base[0..n-1]`. The + output of the random number generator :data:`r` is used to produce the + permutation. The algorithm generates all possible :math:`n!` + permutations with equal probability, assuming a perfect source of random + numbers. + + The following code shows how to shuffle the numbers from 0 to 51:: + + int a[52]; + + for (i = 0; i < 52; i++) + { + a[i] = i; + } + + gsl_ran_shuffle (r, a, 52, sizeof (int)); + +.. function:: int gsl_ran_choose (const gsl_rng * r, void * dest, size_t k, void * src, size_t n, size_t size) + + This function fills the array :code:`dest[k]` with :data:`k` objects taken + randomly from the :data:`n` elements of the array + :code:`src[0..n-1]`. The objects are each of size :data:`size`. The + output of the random number generator :data:`r` is used to make the + selection. The algorithm ensures all possible samples are equally + likely, assuming a perfect source of randomness. + + The objects are sampled **without** replacement, thus each object can + only appear once in :data:`dest`. It is required that :data:`k` be less + than or equal to :data:`n`. The objects in :data:`dest` will be in the + same relative order as those in :data:`src`. You will need to call + :code:`gsl_ran_shuffle(r, dest, n, size)` if you want to randomize the + order. + + The following code shows how to select a random sample of three unique + numbers from the set 0 to 99:: + + double a[3], b[100]; + + for (i = 0; i < 100; i++) + { + b[i] = (double) i; + } + + gsl_ran_choose (r, a, 3, b, 100, sizeof (double)); + +.. function:: void gsl_ran_sample (const gsl_rng * r, void * dest, size_t k, void * src, size_t n, size_t size) + + This function is like :func:`gsl_ran_choose` but samples :data:`k` items + from the original array of :data:`n` items :data:`src` with replacement, so + the same object can appear more than once in the output sequence + :data:`dest`. There is no requirement that :data:`k` be less than :data:`n` + in this case. + +Examples +======== + +The following program demonstrates the use of a random number generator +to produce variates from a distribution. It prints 10 samples from the +Poisson distribution with a mean of 3. + +.. include:: examples/randpoisson.c + :code: + +If the library and header files are installed under :file:`/usr/local` +(the default location) then the program can be compiled with these +options:: + + $ gcc -Wall demo.c -lgsl -lgslcblas -lm + +Here is the output of the program, + +.. include:: examples/randpoisson.txt + :code: + +The variates depend on the seed used by the generator. The seed for the +default generator type :type:`gsl_rng_default` can be changed with the +:macro:`GSL_RNG_SEED` environment variable to produce a different stream +of variates:: + + $ GSL_RNG_SEED=123 ./a.out + +giving output + +.. include:: examples/randpoisson2.txt + :code: + +The following program generates a random walk in two dimensions. + +.. include:: examples/randwalk.c + :code: + +:numref:`fig_rand-walk` shows the output from the program. + +.. _fig_rand-walk: + +.. figure:: /images/random-walk.png + :scale: 60% + + Four 10-step random walks from the origin. + +The following program computes the upper and lower cumulative +distribution functions for the standard normal distribution at +:math:`x = 2`. + +.. include:: examples/cdf.c + :code: + +Here is the output of the program, + +.. include:: examples/cdf.txt + :code: + +References and Further Reading +============================== + +For an encyclopaedic coverage of the subject readers are advised to +consult the book "Non-Uniform Random Variate Generation" by Luc +Devroye. It covers every imaginable distribution and provides hundreds +of algorithms. + +* Luc Devroye, "Non-Uniform Random Variate Generation", + Springer-Verlag, ISBN 0-387-96305-7. Available online at + http://cg.scs.carleton.ca/~luc/rnbookindex.html. + +The subject of random variate generation is also reviewed by Knuth, who +describes algorithms for all the major distributions. + +* Donald E. Knuth, "The Art of Computer Programming: Seminumerical + Algorithms" (Vol 2, 3rd Ed, 1997), Addison-Wesley, ISBN 0201896842. + +The Particle Data Group provides a short review of techniques for +generating distributions of random numbers in the "Monte Carlo" +section of its Annual Review of Particle Physics. + +* Review of Particle Properties, + R.M. Barnett et al., Physical Review D54, 1 (1996) + http://pdg.lbl.gov/. + +The Review of Particle Physics is available online in postscript and pdf +format. + +An overview of methods used to compute cumulative distribution functions +can be found in *Statistical Computing* by W.J. Kennedy and +J.E. Gentle. Another general reference is *Elements of Statistical +Computing* by R.A. Thisted. + +* William E. Kennedy and James E. Gentle, Statistical Computing (1980), + Marcel Dekker, ISBN 0-8247-6898-1. + +* Ronald A. Thisted, Elements of Statistical Computing (1988), + Chapman & Hall, ISBN 0-412-01371-1. + +The cumulative distribution functions for the Gaussian distribution +are based on the following papers, + +* Rational Chebyshev Approximations Using Linear Equations, + W.J. Cody, W. Fraser, J.F. Hart. Numerische Mathematik 12, 242--251 (1968). + +* Rational Chebyshev Approximations for the Error Function, + W.J. Cody. Mathematics of Computation 23, n107, 631--637 (July 1969). diff --git a/gsl-2.5/doc/rng.rst b/gsl-2.5/doc/rng.rst new file mode 100644 index 00000000..5f21b3f7 --- /dev/null +++ b/gsl-2.5/doc/rng.rst @@ -0,0 +1,1183 @@ +.. index:: random number generators + +************************ +Random Number Generation +************************ + +.. include:: include.rst + +The library provides a large collection of random number generators +which can be accessed through a uniform interface. Environment +variables allow you to select different generators and seeds at runtime, +so that you can easily switch between generators without needing to +recompile your program. Each instance of a generator keeps track of its +own state, allowing the generators to be used in multi-threaded +programs. Additional functions are available for transforming uniform +random numbers into samples from continuous or discrete probability +distributions such as the Gaussian, log-normal or Poisson distributions. + +These functions are declared in the header file :file:`gsl_rng.h`. + +.. Need to explain the difference between SERIAL and PARALLEL random +.. number generators here + +General comments on random numbers +================================== + +In 1988, Park and Miller wrote a paper entitled "Random number +generators: good ones are hard to find." [Commun.: ACM, 31, 1192--1201]. +Fortunately, some excellent random number generators are available, +though poor ones are still in common use. You may be happy with the +system-supplied random number generator on your computer, but you should +be aware that as computers get faster, requirements on random number +generators increase. Nowadays, a simulation that calls a random number +generator millions of times can often finish before you can make it down +the hall to the coffee machine and back. + +A very nice review of random number generators was written by Pierre +L'Ecuyer, as Chapter 4 of the book: Handbook on Simulation, Jerry Banks, +ed. (Wiley, 1997). The chapter is available in postscript from +L'Ecuyer's ftp site (see references). Knuth's volume on Seminumerical +Algorithms (originally published in 1968) devotes 170 pages to random +number generators, and has recently been updated in its 3rd edition +(1997). +It is brilliant, a classic. If you don't own it, you should stop reading +right now, run to the nearest bookstore, and buy it. + +A good random number generator will satisfy both theoretical and +statistical properties. Theoretical properties are often hard to obtain +(they require real math!), but one prefers a random number generator +with a long period, low serial correlation, and a tendency **not** to +"fall mainly on the planes." Statistical tests are performed with +numerical simulations. Generally, a random number generator is used to +estimate some quantity for which the theory of probability provides an +exact answer. Comparison to this exact answer provides a measure of +"randomness". + +The Random Number Generator Interface +===================================== + +It is important to remember that a random number generator is not a +"real" function like sine or cosine. Unlike real functions, successive +calls to a random number generator yield different return values. Of +course that is just what you want for a random number generator, but to +achieve this effect, the generator must keep track of some kind of +"state" variable. Sometimes this state is just an integer (sometimes +just the value of the previously generated random number), but often it +is more complicated than that and may involve a whole array of numbers, +possibly with some indices thrown in. To use the random number +generators, you do not need to know the details of what comprises the +state, and besides that varies from algorithm to algorithm. + +.. type:: gsl_rng_type + gsl_rng + + The random number generator library uses two special structs, + :type:`gsl_rng_type` which holds static information about each type of + generator and :type:`gsl_rng` which describes an instance of a generator + created from a given :type:`gsl_rng_type`. + +The functions described in this section are declared in the header file +:file:`gsl_rng.h`. + +Random number generator initialization +====================================== + +.. function:: gsl_rng * gsl_rng_alloc (const gsl_rng_type * T) + + This function returns a pointer to a newly-created + instance of a random number generator of type :data:`T`. + For example, the following code creates an instance of the Tausworthe + generator:: + + gsl_rng * r = gsl_rng_alloc (gsl_rng_taus); + + If there is insufficient memory to create the generator then the + function returns a null pointer and the error handler is invoked with an + error code of :macro:`GSL_ENOMEM`. + + The generator is automatically initialized with the default seed, + :data:`gsl_rng_default_seed`. This is zero by default but can be changed + either directly or by using the environment variable :macro:`GSL_RNG_SEED`. + + The details of the available generator types are + described later in this chapter. + +.. function:: void gsl_rng_set (const gsl_rng * r, unsigned long int s) + + This function initializes (or "seeds") the random number generator. If + the generator is seeded with the same value of :data:`s` on two different + runs, the same stream of random numbers will be generated by successive + calls to the routines below. If different values of :math:`s \geq 1` + are supplied, then the generated streams of random + numbers should be completely different. If the seed :data:`s` is zero + then the standard seed from the original implementation is used + instead. For example, the original Fortran source code for the + :code:`ranlux` generator used a seed of 314159265, and so choosing + :data:`s` equal to zero reproduces this when using + :data:`gsl_rng_ranlux`. + + When using multiple seeds with the same generator, choose seed values + greater than zero to avoid collisions with the default setting. + + Note that the most generators only accept 32-bit seeds, with higher + values being reduced modulo :math:`2^{32}`. + For generators with smaller ranges the maximum seed value will typically be lower. + +.. function:: void gsl_rng_free (gsl_rng * r) + + This function frees all the memory associated with the generator + :data:`r`. + +Sampling from a random number generator +======================================= + +The following functions return uniformly distributed random numbers, +either as integers or double precision floating point numbers. |inlinefns| +To obtain non-uniform distributions, see :ref:`chap_random-number-distributions`. + +.. function:: unsigned long int gsl_rng_get (const gsl_rng * r) + + This function returns a random integer from the generator :data:`r`. The + minimum and maximum values depend on the algorithm used, but all + integers in the range [:data:`min`, :data:`max`] are equally likely. The + values of :data:`min` and :data:`max` can be determined using the auxiliary + functions :func:`gsl_rng_max` and :func:`gsl_rng_min`. + +.. function:: double gsl_rng_uniform (const gsl_rng * r) + + This function returns a double precision floating point number uniformly + distributed in the range [0,1). The range includes 0.0 but excludes 1.0. + The value is typically obtained by dividing the result of + :code:`gsl_rng_get(r)` by :code:`gsl_rng_max(r) + 1.0` in double + precision. Some generators compute this ratio internally so that they + can provide floating point numbers with more than 32 bits of randomness + (the maximum number of bits that can be portably represented in a single + :code:`unsigned long int`). + +.. function:: double gsl_rng_uniform_pos (const gsl_rng * r) + + This function returns a positive double precision floating point number + uniformly distributed in the range (0,1), excluding both 0.0 and 1.0. + The number is obtained by sampling the generator with the algorithm of + :func:`gsl_rng_uniform` until a non-zero value is obtained. You can use + this function if you need to avoid a singularity at 0.0. + +.. function:: unsigned long int gsl_rng_uniform_int (const gsl_rng * r, unsigned long int n) + + This function returns a random integer from 0 to :math:`n-1` inclusive + by scaling down and/or discarding samples from the generator :data:`r`. + All integers in the range :math:`[0,n-1]` are produced with equal + probability. For generators with a non-zero minimum value an offset + is applied so that zero is returned with the correct probability. + + Note that this function is designed for sampling from ranges smaller + than the range of the underlying generator. The parameter :data:`n` + must be less than or equal to the range of the generator :data:`r`. + If :data:`n` is larger than the range of the generator then the function + calls the error handler with an error code of :macro:`GSL_EINVAL` and + returns zero. + + In particular, this function is not intended for generating the full range of + unsigned integer values :math:`[0,2^{32}-1]`. + Instead choose a generator with the maximal integer range and zero minimum + value, such as :data:`gsl_rng_ranlxd1`, :data:`gsl_rng_mt19937` or + :data:`gsl_rng_taus`, and sample it directly using + :func:`gsl_rng_get`. The range of each generator can be found using + the auxiliary functions described in the next section. + +Auxiliary random number generator functions +=========================================== + +The following functions provide information about an existing +generator. You should use them in preference to hard-coding the generator +parameters into your own code. + +.. function:: const char * gsl_rng_name (const gsl_rng * r) + + This function returns a pointer to the name of the generator. + For example:: + + printf ("r is a '%s' generator\n", gsl_rng_name (r)); + + would print something like:: + + r is a 'taus' generator + +.. function:: unsigned long int gsl_rng_max (const gsl_rng * r) + + This function returns the largest value that :func:`gsl_rng_get` + can return. + +.. function:: unsigned long int gsl_rng_min (const gsl_rng * r) + + This function returns the smallest value that :func:`gsl_rng_get` + can return. Usually this value is zero. There are some generators with + algorithms that cannot return zero, and for these generators the minimum + value is 1. + +.. function:: void * gsl_rng_state (const gsl_rng * r) + size_t gsl_rng_size (const gsl_rng * r) + + These functions return a pointer to the state of generator :data:`r` and + its size. You can use this information to access the state directly. For + example, the following code will write the state of a generator to a + stream:: + + void * state = gsl_rng_state (r); + size_t n = gsl_rng_size (r); + fwrite (state, n, 1, stream); + +.. function:: const gsl_rng_type ** gsl_rng_types_setup (void) + + This function returns a pointer to an array of all the available + generator types, terminated by a null pointer. The function should be + called once at the start of the program, if needed. The following code + fragment shows how to iterate over the array of generator types to print + the names of the available algorithms:: + + const gsl_rng_type **t, **t0; + + t0 = gsl_rng_types_setup (); + + printf ("Available generators:\n"); + + for (t = t0; *t != 0; t++) + { + printf ("%s\n", (*t)->name); + } + +Random number environment variables +=================================== + +The library allows you to choose a default generator and seed from the +environment variables :macro:`GSL_RNG_TYPE` and :macro:`GSL_RNG_SEED` and +the function :func:`gsl_rng_env_setup`. This makes it easy try out +different generators and seeds without having to recompile your program. + +.. macro:: GSL_RNG_TYPE + + This environment variable specifies the default random number generator. + It should be the name of a generator, such as :code:`taus` or :code:`mt19937`. + +.. macro:: GSL_RNG_SEED + + This environment variable specifies the default seed for the random + number generator + +.. var:: gsl_rng_default + + This global library variable specifies the default random number generator, + and can be initialized from :macro:`GSL_RNG_TYPE` using :func:`gsl_rng_env_setup`. + It is defined as follows:: + + extern const gsl_rng_type *gsl_rng_default + +.. var:: gsl_rng_default_seed + + This global library variable specifies the seed for the default random number generator, + and can be initialized from :macro:`GSL_RNG_SEED` using :func:`gsl_rng_env_setup`. + It is set to zero by default and is defined as follows:: + + extern unsigned long int gsl_rng_default_seed + +.. function:: const gsl_rng_type * gsl_rng_env_setup (void) + + This function reads the environment variables :macro:`GSL_RNG_TYPE` and + :macro:`GSL_RNG_SEED` and uses their values to set the corresponding + library variables :data:`gsl_rng_default` and + :data:`gsl_rng_default_seed`. + + The value of :macro:`GSL_RNG_SEED` is converted to an :code:`unsigned long int` + using the C library function :func:`strtoul`. + + If you don't specify a generator for :macro:`GSL_RNG_TYPE` then + :data:`gsl_rng_mt19937` is used as the default. The initial value of + :data:`gsl_rng_default_seed` is zero. + +Here is a short program which shows how to create a global +generator using the environment variables :macro:`GSL_RNG_TYPE` and +:macro:`GSL_RNG_SEED`, + +.. include:: examples/rng.c + :code: + +Running the program without any environment variables uses the initial +defaults, an :code:`mt19937` generator with a seed of 0, + +.. include:: examples/rng.txt + :code: + +By setting the two variables on the command line we can +change the default generator and the seed:: + + $ GSL_RNG_TYPE="taus" GSL_RNG_SEED=123 ./a.out + GSL_RNG_TYPE=taus + GSL_RNG_SEED=123 + generator type: taus + seed = 123 + first value = 2720986350 + +Copying random number generator state +===================================== + +The above methods do not expose the random number state which changes +from call to call. It is often useful to be able to save and restore +the state. To permit these practices, a few somewhat more advanced +functions are supplied. These include: + +.. function:: int gsl_rng_memcpy (gsl_rng * dest, const gsl_rng * src) + + This function copies the random number generator :data:`src` into the + pre-existing generator :data:`dest`, making :data:`dest` into an exact copy + of :data:`src`. The two generators must be of the same type. + +.. function:: gsl_rng * gsl_rng_clone (const gsl_rng * r) + + This function returns a pointer to a newly created generator which is an + exact copy of the generator :data:`r`. + +Reading and writing random number generator state +================================================= + +The library provides functions for reading and writing the random +number state to a file as binary data. + +.. function:: int gsl_rng_fwrite (FILE * stream, const gsl_rng * r) + + This function writes the random number state of the random number + generator :data:`r` to the stream :data:`stream` in binary format. The + return value is 0 for success and :macro:`GSL_EFAILED` if there was a + problem writing to the file. Since the data is written in the native + binary format it may not be portable between different architectures. + +.. function:: int gsl_rng_fread (FILE * stream, gsl_rng * r) + + This function reads the random number state into the random number + generator :data:`r` from the open stream :data:`stream` in binary format. + The random number generator :data:`r` must be preinitialized with the + correct random number generator type since type information is not + saved. The return value is 0 for success and :macro:`GSL_EFAILED` if + there was a problem reading from the file. The data is assumed to + have been written in the native binary format on the same + architecture. + +Random number generator algorithms +================================== + +The functions described above make no reference to the actual algorithm +used. This is deliberate so that you can switch algorithms without +having to change any of your application source code. The library +provides a large number of generators of different types, including +simulation quality generators, generators provided for compatibility +with other libraries and historical generators from the past. + +The following generators are recommended for use in simulation. They +have extremely long periods, low correlation and pass most statistical +tests. For the most reliable source of uncorrelated numbers, the +second-generation RANLUX generators have the strongest proof of +randomness. + +.. index:: MT19937 random number generator + +.. var:: gsl_rng_mt19937 + + The MT19937 generator of Makoto Matsumoto and Takuji Nishimura is a + variant of the twisted generalized feedback shift-register algorithm, + and is known as the "Mersenne Twister" generator. It has a Mersenne + prime period of :math:`2^{19937} - 1` + (about :math:`10^{6000}`) and is + equi-distributed in 623 dimensions. It has passed the DIEHARD + statistical tests. It uses 624 words of state per generator and is + comparable in speed to the other generators. The original generator used + a default seed of 4357 and choosing :data:`s` equal to zero in + :func:`gsl_rng_set` reproduces this. Later versions switched to 5489 + as the default seed, you can choose this explicitly via :func:`gsl_rng_set` + instead if you require it. + + For more information see, + + * Makoto Matsumoto and Takuji Nishimura, "Mersenne Twister: A + 623-dimensionally equidistributed uniform pseudorandom number + generator". ACM Transactions on Modeling and Computer + Simulation, Vol.: 8, No.: 1 (Jan. 1998), Pages 3--30 + + The generator :data:`gsl_rng_mt19937` uses the second revision of the + seeding procedure published by the two authors above in 2002. The + original seeding procedures could cause spurious artifacts for some seed + values. They are still available through the alternative generators + :data:`gsl_rng_mt19937_1999` and :data:`gsl_rng_mt19937_1998`. + +.. index:: RANLXS random number generator + +.. var:: gsl_rng_ranlxs0 + gsl_rng_ranlxs1 + gsl_rng_ranlxs2 + + The generator :code:`ranlxs0` is a second-generation version of the + RANLUX algorithm of Luscher, which produces "luxury random + numbers". This generator provides single precision output (24 bits) at + three luxury levels :code:`ranlxs0`, :code:`ranlxs1` and :code:`ranlxs2`, + in increasing order of strength. + It uses double-precision floating point arithmetic internally and can be + significantly faster than the integer version of :code:`ranlux`, + particularly on 64-bit architectures. The period of the generator is + about :math:`10^{171}`. + The algorithm has mathematically proven properties and + can provide truly decorrelated numbers at a known level of randomness. + The higher luxury levels provide increased decorrelation between samples + as an additional safety margin. + + Note that the range of allowed seeds for this generator is :math:`[0,2^{31}-1]`. + Higher seed values are wrapped modulo :math:`2^{31}`. + +.. index:: RANLXD random number generator + +.. var:: gsl_rng_ranlxd1 + gsl_rng_ranlxd2 + + These generators produce double precision output (48 bits) from the + RANLXS generator. The library provides two luxury levels + :code:`ranlxd1` and :code:`ranlxd2`, in increasing order of strength. + +.. index:: RANLUX random number generator + +.. var:: gsl_rng_ranlux + gsl_rng_ranlux389 + + The :code:`ranlux` generator is an implementation of the original + algorithm developed by Luscher. It uses a + lagged-fibonacci-with-skipping algorithm to produce "luxury random + numbers". It is a 24-bit generator, originally designed for + single-precision IEEE floating point numbers. This implementation is + based on integer arithmetic, while the second-generation versions + RANLXS and RANLXD described above provide floating-point + implementations which will be faster on many platforms. + The period of the generator is about :math:`10^{171}`. + The algorithm has mathematically proven properties and + it can provide truly decorrelated numbers at a known level of + randomness. The default level of decorrelation recommended by Luscher + is provided by :data:`gsl_rng_ranlux`, while :data:`gsl_rng_ranlux389` + gives the highest level of randomness, with all 24 bits decorrelated. + Both types of generator use 24 words of state per generator. + + For more information see, + + * M. Luscher, "A portable high-quality random number generator for + lattice field theory calculations", Computer Physics + Communications, 79 (1994) 100--110. + + * F. James, "RANLUX: A Fortran implementation of the high-quality + pseudo-random number generator of Luscher", Computer Physics + Communications, 79 (1994) 111--114 + +.. index:: + single: CMRG, combined multiple recursive random number generator + +.. var:: gsl_rng_cmrg + + This is a combined multiple recursive generator by L'Ecuyer. + Its sequence is, + + .. math:: z_n = (x_n - y_n) \mod m_1 + + where the two underlying generators :math:`x_n` and :math:`y_n` are, + + .. only:: not texinfo + + .. math:: + + x_n & = (a_1 x_{n-1} + a_2 x_{n-2} + a_3 x_{n-3}) \mod m_1 \\ + y_n & = (b_1 y_{n-1} + b_2 y_{n-2} + b_3 y_{n-3}) \mod m_2 + + .. only:: texinfo + + :: + + x_n = (a_1 x_{n-1} + a_2 x_{n-2} + a_3 x_{n-3}) mod m_1 + y_n = (b_1 y_{n-1} + b_2 y_{n-2} + b_3 y_{n-3}) mod m_2 + + with coefficients + :math:`a_1 = 0`, + :math:`a_2 = 63308`, + :math:`a_3 = -183326`, + :math:`b_1 = 86098`, + :math:`b_2 = 0`, + :math:`b_3 = -539608`, + and moduli + :math:`m_1 = 2^{31} - 1 = 2147483647` + and + :math:`m_2 = 2145483479`. + + The period of this generator is + :math:`\hbox{lcm}(m_1^3-1, m_2^3-1)`, + which is approximately + :math:`2^{185}` + (about :math:`10^{56}`). + It uses 6 words of state per generator. For more information see, + + * P. L'Ecuyer, "Combined Multiple Recursive Random Number + Generators", Operations Research, 44, 5 (1996), 816--822. + +.. index:: + single: MRG, multiple recursive random number generator + +.. var:: gsl_rng_mrg + + This is a fifth-order multiple recursive generator by L'Ecuyer, Blouin + and Coutre. Its sequence is, + + .. math:: x_n = (a_1 x_{n-1} + a_5 x_{n-5}) \mod m + + with + :math:`a_1 = 107374182`, + :math:`a_2 = a_3 = a_4 = 0`, + :math:`a_5 = 104480` + and + :math:`m = 2^{31}-1`. + + The period of this generator is about + :math:`10^{46}`. + It uses 5 words + of state per generator. More information can be found in the following + paper, + + * P. L'Ecuyer, F. Blouin, and R. Coutre, "A search for good multiple + recursive random number generators", ACM Transactions on Modeling and + Computer Simulation 3, 87--98 (1993). + +.. index:: Tausworthe random number generator + +.. var:: gsl_rng_taus + gsl_rng_taus2 + + This is a maximally equidistributed combined Tausworthe generator by + L'Ecuyer. The sequence is, + + .. only:: not texinfo + + .. math:: x_n = (s^1_n \oplus s^2_n \oplus s^3_n) + + .. only:: texinfo + + :: + + x_n = (s1_n ^^ s2_n ^^ s3_n) + + where, + + .. only:: not texinfo + + .. math:: + + s^1_{n+1} &= (((s^1_n \& 4294967294)\ll 12) \oplus (((s^1_n\ll 13) \oplus s^1_n)\gg 19)) \\ + s^2_{n+1} &= (((s^2_n \& 4294967288)\ll 4) \oplus (((s^2_n\ll 2) \oplus s^2_n)\gg 25)) \\ + s^3_{n+1} &= (((s^3_n \& 4294967280)\ll 17) \oplus (((s^3_n\ll 3) \oplus s^3_n)\gg 11)) + + .. only:: texinfo + + :: + + s1_{n+1} = (((s1_n&4294967294)<<12)^^(((s1_n<<13)^^s1_n)>>19)) + s2_{n+1} = (((s2_n&4294967288)<< 4)^^(((s2_n<< 2)^^s2_n)>>25)) + s3_{n+1} = (((s3_n&4294967280)<<17)^^(((s3_n<< 3)^^s3_n)>>11)) + + computed modulo + :math:`2^{32}`. + In the formulas above + :math:`\oplus` + denotes *exclusive-or*. Note that the algorithm relies on the properties + of 32-bit unsigned integers and has been implemented using a bitmask + of :code:`0xFFFFFFFF` to make it work on 64 bit machines. + + The period of this generator is :math:`2^{88}` + (about :math:`10^{26}`). + It uses 3 words of state per generator. For more + information see, + + * P. L'Ecuyer, "Maximally Equidistributed Combined Tausworthe + Generators", Mathematics of Computation, 65, 213 (1996), 203--213. + + The generator :data:`gsl_rng_taus2` uses the same algorithm as + :data:`gsl_rng_taus` but with an improved seeding procedure described in + the paper, + + * P. L'Ecuyer, "Tables of Maximally Equidistributed Combined LFSR + Generators", Mathematics of Computation, 68, 225 (1999), 261--269 + + The generator :data:`gsl_rng_taus2` should now be used in preference to + :data:`gsl_rng_taus`. + +.. index:: Four-tap Generalized Feedback Shift Register + +.. var:: gsl_rng_gfsr4 + + The :code:`gfsr4` generator is like a lagged-fibonacci generator, and + produces each number as an :code:`xor`'d sum of four previous values. + + .. only:: not texinfo + + .. math:: r_n = r_{n-A} \oplus r_{n-B} \oplus r_{n-C} \oplus r_{n-D} + + .. only:: texinfo + + :: + + r_n = r_{n-A} ^^ r_{n-B} ^^ r_{n-C} ^^ r_{n-D} + + Ziff (ref below) notes that "it is now widely known" that two-tap + registers (such as R250, which is described below) + have serious flaws, the most obvious one being the three-point + correlation that comes from the definition of the generator. Nice + mathematical properties can be derived for GFSR's, and numerics bears + out the claim that 4-tap GFSR's with appropriately chosen offsets are as + random as can be measured, using the author's test. + + This implementation uses the values suggested the example on p392 of + Ziff's article: :math:`A=471`, :math:`B=1586`, :math:`C=6988`, :math:`D=9689`. + + If the offsets are appropriately chosen (such as the one ones in this + implementation), then the sequence is said to be maximal; that means + that the period is :math:`2^D - 1`, where :math:`D` is the longest lag. + (It is one less than :math:`2^D` because it is not permitted to have all + zeros in the :code:`ra[]` array.) For this implementation with + :math:`D=9689` that works out to about :math:`10^{2917}`. + + Note that the implementation of this generator using a 32-bit + integer amounts to 32 parallel implementations of one-bit + generators. One consequence of this is that the period of this + 32-bit generator is the same as for the one-bit generator. + Moreover, this independence means that all 32-bit patterns are + equally likely, and in particular that 0 is an allowed random + value. (We are grateful to Heiko Bauke for clarifying for us these + properties of GFSR random number generators.) + + For more information see, + + * Robert M. Ziff, "Four-tap shift-register-sequence random-number + generators", Computers in Physics, 12(4), Jul/Aug + 1998, pp 385--392. + +Unix random number generators +============================= + +The standard Unix random number generators :code:`rand`, :code:`random` +and :code:`rand48` are provided as part of GSL. Although these +generators are widely available individually often they aren't all +available on the same platform. This makes it difficult to write +portable code using them and so we have included the complete set of +Unix generators in GSL for convenience. Note that these generators +don't produce high-quality randomness and aren't suitable for work +requiring accurate statistics. However, if you won't be measuring +statistical quantities and just want to introduce some variation into +your program then these generators are quite acceptable. + +.. index:: + single: rand, BSD random number generator + single: Unix random number generators, rand + single: Unix random number generators, rand48 + +.. index:: BSD random number generator + +.. var:: gsl_rng_rand + + This is the BSD :code:`rand` generator. Its sequence is + + .. math:: x_{n+1} = (a x_n + c) \mod m + + with + :math:`a = 1103515245`, + :math:`c = 12345` and + :math:`m = 2^{31}`. + The seed specifies the initial value, + :math:`x_1`. The period of this + generator is + :math:`2^{31}`, + and it uses 1 word of storage per generator. + +.. var:: gsl_rng_random_bsd + gsl_rng_random_libc5 + gsl_rng_random_glibc2 + + These generators implement the :code:`random` family of functions, a + set of linear feedback shift register generators originally used in BSD + Unix. There are several versions of :code:`random` in use today: the + original BSD version (e.g. on SunOS4), a libc5 version (found on + older GNU/Linux systems) and a glibc2 version. Each version uses a + different seeding procedure, and thus produces different sequences. + + The original BSD routines accepted a variable length buffer for the + generator state, with longer buffers providing higher-quality + randomness. The :code:`random` function implemented algorithms for + buffer lengths of 8, 32, 64, 128 and 256 bytes, and the algorithm with + the largest length that would fit into the user-supplied buffer was + used. To support these algorithms additional generators are available + with the following names:: + + gsl_rng_random8_bsd + gsl_rng_random32_bsd + gsl_rng_random64_bsd + gsl_rng_random128_bsd + gsl_rng_random256_bsd + + where the numeric suffix indicates the buffer length. The original BSD + :code:`random` function used a 128-byte default buffer and so + :data:`gsl_rng_random_bsd` has been made equivalent to + :data:`gsl_rng_random128_bsd`. Corresponding versions of the :code:`libc5` + and :code:`glibc2` generators are also available, with the names + :data:`gsl_rng_random8_libc5`, :data:`gsl_rng_random8_glibc2`, etc. + +.. index:: rand48 random number generator + +.. var:: gsl_rng_rand48 + + This is the Unix :code:`rand48` generator. Its sequence is + + .. math:: x_{n+1} = (a x_n + c) \mod m + + defined on 48-bit unsigned integers with + :math:`a = 25214903917`, + :math:`c = 11` and + :math:`m = 2^{48}`. + The seed specifies the upper 32 bits of the initial value, :math:`x_1`, + with the lower 16 bits set to :code:`0x330E`. The function + :func:`gsl_rng_get` returns the upper 32 bits from each term of the + sequence. This does not have a direct parallel in the original + :code:`rand48` functions, but forcing the result to type :code:`long int` + reproduces the output of :code:`mrand48`. The function + :func:`gsl_rng_uniform` uses the full 48 bits of internal state to return + the double precision number :math:`x_n/m`, which is equivalent to the + function :code:`drand48`. Note that some versions of the GNU C Library + contained a bug in :code:`mrand48` function which caused it to produce + different results (only the lower 16-bits of the return value were set). + +Other random number generators +============================== + +The generators in this section are provided for compatibility with +existing libraries. If you are converting an existing program to use GSL +then you can select these generators to check your new implementation +against the original one, using the same random number generator. After +verifying that your new program reproduces the original results you can +then switch to a higher-quality generator. + +Note that most of the generators in this section are based on single +linear congruence relations, which are the least sophisticated type of +generator. In particular, linear congruences have poor properties when +used with a non-prime modulus, as several of these routines do (e.g. +with a power of two modulus, +:math:`2^{31}` or +:math:`2^{32}`). +This leads to periodicity in the least significant bits of each number, +with only the higher bits having any randomness. Thus if you want to +produce a random bitstream it is best to avoid using the least +significant bits. + +.. index:: + single: RANF random number generator + single: CRAY random number generator, RANF + +.. var:: gsl_rng_ranf + + This is the CRAY random number generator :code:`RANF`. Its sequence is + + .. math:: x_{n+1} = (a x_n) \mod m + + defined on 48-bit unsigned integers with :math:`a = 44485709377909` and + :math:`m = 2^{48}`. + The seed specifies the lower 32 bits of the initial value, + :math:`x_1`, with the lowest bit set to + prevent the seed taking an even value. The upper 16 bits of + :math:`x_1` + are set to 0. A consequence of this procedure is that the pairs of seeds + 2 and 3, 4 and 5, etc.: produce the same sequences. + + The generator compatible with the CRAY MATHLIB routine RANF. It + produces double precision floating point numbers which should be + identical to those from the original RANF. + + There is a subtlety in the implementation of the seeding. The initial + state is reversed through one step, by multiplying by the modular + inverse of :math:`a` mod :math:`m`. This is done for compatibility with + the original CRAY implementation. + + Note that you can only seed the generator with integers up to + :math:`2^{32}`, + while the original CRAY implementation uses + non-portable wide integers which can cover all + :math:`2^{48}` + states of the generator. + + The function :func:`gsl_rng_get` returns the upper 32 bits from each term + of the sequence. The function :func:`gsl_rng_uniform` uses the full 48 + bits to return the double precision number :math:`x_n/m`. + + The period of this generator is :math:`2^{46}`. + +.. index:: RANMAR random number generator + +.. var:: gsl_rng_ranmar + + This is the RANMAR lagged-fibonacci generator of Marsaglia, Zaman and + Tsang. It is a 24-bit generator, originally designed for + single-precision IEEE floating point numbers. It was included in the + CERNLIB high-energy physics library. + +.. index:: + single: shift-register random number generator + single: R250 shift-register random number generator + +.. var:: gsl_rng_r250 + + This is the shift-register generator of Kirkpatrick and Stoll. The + sequence is based on the recurrence + + .. only:: not texinfo + + .. math:: x_n = x_{n-103} \oplus x_{n-250} + + .. only:: texinfo + + :: + + x_n = x_{n-103} ^^ x_{n-250} + + where + :math:`\oplus` + denotes *exclusive-or*, defined on + 32-bit words. The period of this generator is about :math:`2^{250}` and it + uses 250 words of state per generator. + + For more information see, + + * S. Kirkpatrick and E. Stoll, "A very fast shift-register sequence random + number generator", Journal of Computational Physics, 40, 517--526 + (1981) + +.. index:: TT800 random number generator + +.. var:: gsl_rng_tt800 + + This is an earlier version of the twisted generalized feedback + shift-register generator, and has been superseded by the development of + MT19937. However, it is still an acceptable generator in its own + right. It has a period of + :math:`2^{800}` + and uses 33 words of storage per generator. + + For more information see, + + * Makoto Matsumoto and Yoshiharu Kurita, "Twisted GFSR Generators + II", ACM Transactions on Modelling and Computer Simulation, + Vol.: 4, No.: 3, 1994, pages 254--266. + +.. The following generators are included only for historical reasons, so +.. that you can reproduce results from old programs which might have used +.. them. These generators should not be used for real simulations since +.. they have poor statistical properties by modern standards. + +.. index:: VAX random number generator + +.. var:: gsl_rng_vax + + This is the VAX generator :code:`MTH$RANDOM`. Its sequence is, + + .. math:: x_{n+1} = (a x_n + c) \mod m + + with + :math:`a = 69069`, :math:`c = 1` and + :math:`m = 2^{32}`. + The seed specifies the initial value, + :math:`x_1`. The + period of this generator is + :math:`2^{32}` + and it uses 1 word of storage per + generator. + +.. var:: gsl_rng_transputer + + This is the random number generator from the INMOS Transputer + Development system. Its sequence is, + + .. math:: x_{n+1} = (a x_n) \mod m + + with :math:`a = 1664525` and + :math:`m = 2^{32}`. + The seed specifies the initial value, + :math:`x_1`. + +.. index:: RANDU random number generator + +.. var:: gsl_rng_randu + + This is the IBM :code:`RANDU` generator. Its sequence is + + .. math:: x_{n+1} = (a x_n) \mod m + + with :math:`a = 65539` and + :math:`m = 2^{31}`. The + seed specifies the initial value, + :math:`x_1`. The period of this + generator was only + :math:`2^{29}`. + It has become a textbook example of a poor generator. + +.. index:: RANMAR random number generator + +.. var:: gsl_rng_minstd + + This is Park and Miller's "minimal standard" MINSTD generator, a + simple linear congruence which takes care to avoid the major pitfalls of + such algorithms. Its sequence is, + + .. math:: x_{n+1} = (a x_n) \mod m + + with :math:`a = 16807` and + :math:`m = 2^{31} - 1 = 2147483647`. + The seed specifies the initial value, + :math:`x_1`. The period of this + generator is about + :math:`2^{31}`. + + This generator was used in the IMSL Library (subroutine RNUN) and in + MATLAB (the RAND function) in the past. It is also sometimes known by + the acronym "GGL" (I'm not sure what that stands for). + + For more information see, + + * Park and Miller, "Random Number Generators: Good ones are hard to find", + Communications of the ACM, October 1988, Volume 31, No 10, pages + 1192--1201. + +.. var:: gsl_rng_uni + gsl_rng_uni32 + + This is a reimplementation of the 16-bit SLATEC random number generator + RUNIF. A generalization of the generator to 32 bits is provided by + :data:`gsl_rng_uni32`. The original source code is available from NETLIB. + +.. var:: gsl_rng_slatec + + This is the SLATEC random number generator RAND. It is ancient. The + original source code is available from NETLIB. + +.. var:: gsl_rng_zuf + + This is the ZUFALL lagged Fibonacci series generator of Peterson. Its + sequence is, + + .. only:: not texinfo + + .. math:: + + t &= u_{n-273} + u_{n-607} \\ + u_n &= t - \hbox{floor}(t) + + .. only:: texinfo + + :: + + t = u_{n-273} + u_{n-607} + u_n = t - floor(t) + + The original source code is available from NETLIB. For more information + see, + + * W. Petersen, "Lagged Fibonacci Random Number Generators for the NEC + SX-3", International Journal of High Speed Computing (1994). + +.. var:: gsl_rng_knuthran2 + + This is a second-order multiple recursive generator described by Knuth + in Seminumerical Algorithms, 3rd Ed., page 108. Its sequence is, + + .. math:: x_n = (a_1 x_{n-1} + a_2 x_{n-2}) \mod m + + with + :math:`a_1 = 271828183`, + :math:`a_2 = 314159269`, + and + :math:`m = 2^{31}-1`. + +.. var:: gsl_rng_knuthran2002 + gsl_rng_knuthran + + This is a second-order multiple recursive generator described by Knuth + in Seminumerical Algorithms, 3rd Ed., Section 3.6. Knuth + provides its C code. The updated routine :data:`gsl_rng_knuthran2002` + is from the revised 9th printing and corrects some weaknesses in the + earlier version, which is implemented as :data:`gsl_rng_knuthran`. + +.. var:: gsl_rng_borosh13 + gsl_rng_fishman18 + gsl_rng_fishman20 + gsl_rng_lecuyer21 + gsl_rng_waterman14 + + These multiplicative generators are taken from Knuth's + Seminumerical Algorithms, 3rd Ed., pages 106--108. Their sequence + is, + + .. math:: x_{n+1} = (a x_n) \mod m + + where the seed specifies the initial value, + :math:`x_1`. + The parameters :math:`a` and :math:`m` are as follows, + Borosh-Niederreiter: + :math:`a = 1812433253`, :math:`m = 2^{32}`, + Fishman18: + :math:`a = 62089911`, + :math:`m = 2^{31}-1`, + Fishman20: + :math:`a = 48271`, + :math:`m = 2^{31}-1`, + L'Ecuyer: + :math:`a = 40692`, + :math:`m = 2^{31}-249`, + Waterman: + :math:`a = 1566083941`, + :math:`m = 2^{32}`. + +.. var:: gsl_rng_fishman2x + + This is the L'Ecuyer--Fishman random number generator. It is taken from + Knuth's Seminumerical Algorithms, 3rd Ed., page 108. Its sequence + is, + + .. math:: z_{n+1} = (x_n - y_n) \mod m + + with :math:`m = 2^{31}-1`. + :math:`x_n` and :math:`y_n` are given by the :code:`fishman20` + and :code:`lecuyer21` algorithms. + The seed specifies the initial value, + :math:`x_1`. + +.. var:: gsl_rng_coveyou + + This is the Coveyou random number generator. It is taken from Knuth's + Seminumerical Algorithms, 3rd Ed., Section 3.2.2. Its sequence + is, + + .. math:: x_{n+1} = (x_n (x_n + 1)) \mod m + + with :math:`m = 2^{32}`. + The seed specifies the initial value, + :math:`x_1`. + +Performance +=========== + +.. I made the original plot like this +.. ./benchmark > tmp; cat tmp | perl -n -e '($n,$s) = split(" ",$_); printf("%17s ",$n); print "-" x ($s/1e5), "\n";' + +.. The large number of generators based on single linear congruences are +.. represented by the :code:`random` generator below. These generators are +.. fast but have the lowest statistical quality. + +The following table shows the relative performance of a selection the +available random number generators. The fastest simulation quality +generators are :code:`taus`, :code:`gfsr4` and :code:`mt19937`. The +generators which offer the best mathematically-proven quality are those +based on the RANLUX algorithm:: + + 1754 k ints/sec, 870 k doubles/sec, taus + 1613 k ints/sec, 855 k doubles/sec, gfsr4 + 1370 k ints/sec, 769 k doubles/sec, mt19937 + 565 k ints/sec, 571 k doubles/sec, ranlxs0 + 400 k ints/sec, 405 k doubles/sec, ranlxs1 + 490 k ints/sec, 389 k doubles/sec, mrg + 407 k ints/sec, 297 k doubles/sec, ranlux + 243 k ints/sec, 254 k doubles/sec, ranlxd1 + 251 k ints/sec, 253 k doubles/sec, ranlxs2 + 238 k ints/sec, 215 k doubles/sec, cmrg + 247 k ints/sec, 198 k doubles/sec, ranlux389 + 141 k ints/sec, 140 k doubles/sec, ranlxd2 + +Examples +======== + +The following program demonstrates the use of a random number generator +to produce uniform random numbers in the range [0.0, 1.0), + +.. include:: examples/rngunif.c + :code: + +Here is the output of the program, + +.. include:: examples/rngunif.txt + :code: + +The numbers depend on the seed used by the generator. The default seed +can be changed with the :macro:`GSL_RNG_SEED` environment variable to +produce a different stream of numbers. The generator itself can be +changed using the environment variable :macro:`GSL_RNG_TYPE`. Here is the +output of the program using a seed value of 123 and the +multiple-recursive generator :code:`mrg`:: + + $ GSL_RNG_SEED=123 GSL_RNG_TYPE=mrg ./a.out + +.. include:: examples/rngunif2.txt + :code: + +References and Further Reading +============================== + +The subject of random number generation and testing is reviewed +extensively in Knuth's *Seminumerical Algorithms*. + +* Donald E. Knuth, The Art of Computer Programming: Seminumerical + Algorithms (Vol 2, 3rd Ed, 1997), Addison-Wesley, ISBN 0201896842. + +Further information is available in the review paper written by Pierre +L'Ecuyer, + +* P. L'Ecuyer, "Random Number Generation", Chapter 4 of the + Handbook on Simulation, Jerry Banks Ed., Wiley, 1998, 93--137. + +* http://www.iro.umontreal.ca/~lecuyer/papers.html in the file :file:`handsim.ps`. + +The source code for the DIEHARD random number generator tests is also +available online, + +* DIEHARD source code, G. Marsaglia, http://stat.fsu.edu/pub/diehard/ + +A comprehensive set of random number generator tests is available from +NIST, + +* NIST Special Publication 800-22, "A Statistical Test Suite for the + Validation of Random Number Generators and Pseudo Random Number + Generators for Cryptographic Applications". + +* http://csrc.nist.gov/rng/ + +Acknowledgements +================ + +Thanks to Makoto Matsumoto, Takuji Nishimura and Yoshiharu Kurita for +making the source code to their generators (MT19937, MM&TN; TT800, +MM&YK) available under the GNU General Public License. Thanks to Martin +Luscher for providing notes and source code for the RANLXS and +RANLXD generators. + +.. lcg +.. [ LCG(n) := n * 69069 mod (2^32) ] +.. First 6: [69069, 475559465, 2801775573, 1790562961, 3104832285, 4238970681] +.. %2^31-1 69069, 475559465, 654291926, 1790562961, 957348638, 2091487034 +.. mrg +.. [q([x1, x2, x3, x4, x5]) := [107374182 mod 2147483647 * x1 + 104480 mod 2147483647 * x5, x1, x2, x3, x4]] +.. +.. cmrg +.. [q1([x1,x2,x3]) := [63308 mod 2147483647 * x2 -183326 mod 2147483647 * x3, x1, x2], +.. q2([x1,x2,x3]) := [86098 mod 2145483479 * x1 -539608 mod 2145483479 * x3, x1, x2] ] +.. initial for q1 is [69069, 475559465, 654291926] +.. initial for q2 is [1790562961, 959348806, 2093487202] + +.. tausworthe +.. [ b1(x) := rsh(xor(lsh(x, 13), x), 19), +.. q1(x) := xor(lsh(and(x, 4294967294), 12), b1(x)), +.. b2(x) := rsh(xor(lsh(x, 2), x), 25), +.. q2(x) := xor(lsh(and(x, 4294967288), 4), b2(x)), +.. b3(x) := rsh(xor(lsh(x, 3), x), 11), +.. q3(x) := xor(lsh(and(x, 4294967280), 17), b3(x)) ] +.. [s1, s2, s3] = [600098857, 1131373026, 1223067536] +.. [2948905028, 441213979, 394017882] diff --git a/gsl-2.5/doc/roots.rst b/gsl-2.5/doc/roots.rst new file mode 100644 index 00000000..2aa56000 --- /dev/null +++ b/gsl-2.5/doc/roots.rst @@ -0,0 +1,805 @@ +.. index:: + single: root finding + single: zero finding + single: finding roots + single: finding zeros + single: roots + single: solving a nonlinear equation + single: nonlinear equation, solutions of + +**************************** +One Dimensional Root-Finding +**************************** + +This chapter describes routines for finding roots of arbitrary +one-dimensional functions. The library provides low level components +for a variety of iterative solvers and convergence tests. These can be +combined by the user to achieve the desired solution, with full access +to the intermediate steps of the iteration. Each class of methods uses +the same framework, so that you can switch between solvers at runtime +without needing to recompile your program. Each instance of a solver +keeps track of its own state, allowing the solvers to be used in +multi-threaded programs. + +The header file :file:`gsl_roots.h` contains prototypes for the root +finding functions and related declarations. + +.. index:: + single: root finding, overview + +Overview +======== + +One-dimensional root finding algorithms can be divided into two classes, +*root bracketing* and *root polishing*. Algorithms which proceed +by bracketing a root are guaranteed to converge. Bracketing algorithms +begin with a bounded region known to contain a root. The size of this +bounded region is reduced, iteratively, until it encloses the root to a +desired tolerance. This provides a rigorous error estimate for the +location of the root. + +The technique of *root polishing* attempts to improve an initial +guess to the root. These algorithms converge only if started "close +enough" to a root, and sacrifice a rigorous error bound for speed. By +approximating the behavior of a function in the vicinity of a root they +attempt to find a higher order improvement of an initial guess. When the +behavior of the function is compatible with the algorithm and a good +initial guess is available a polishing algorithm can provide rapid +convergence. + +In GSL both types of algorithm are available in similar frameworks. The +user provides a high-level driver for the algorithms, and the library +provides the individual functions necessary for each of the steps. +There are three main phases of the iteration. The steps are, + +* initialize solver state, :data:`s`, for algorithm :data:`T` + +* update :data:`s` using the iteration :data:`T` + +* test :data:`s` for convergence, and repeat iteration if necessary + +The state for bracketing solvers is held in a :type:`gsl_root_fsolver` +struct. The updating procedure uses only function evaluations (not +derivatives). The state for root polishing solvers is held in a +:type:`gsl_root_fdfsolver` struct. The updates require both the function +and its derivative (hence the name :code:`fdf`) to be supplied by the +user. + +.. index:: + single: root finding, caveats + +Caveats +======= + +Note that root finding functions can only search for one root at a time. +When there are several roots in the search area, the first root to be +found will be returned; however it is difficult to predict which of the +roots this will be. *In most cases, no error will be reported if +you try to find a root in an area where there is more than one.* + +Care must be taken when a function may have a multiple root (such as +:math:`f(x) = (x-x_0)^2` or +:math:`f(x) = (x-x_0)^3`. +It is not possible to use root-bracketing algorithms on +even-multiplicity roots. For these algorithms the initial interval must +contain a zero-crossing, where the function is negative at one end of +the interval and positive at the other end. Roots with even-multiplicity +do not cross zero, but only touch it instantaneously. Algorithms based +on root bracketing will still work for odd-multiplicity roots +(e.g. cubic, quintic, ...). +Root polishing algorithms generally work with higher multiplicity roots, +but at a reduced rate of convergence. In these cases the *Steffenson +algorithm* can be used to accelerate the convergence of multiple roots. + +While it is not absolutely required that :math:`f` have a root within the +search region, numerical root finding functions should not be used +haphazardly to check for the *existence* of roots. There are better +ways to do this. Because it is easy to create situations where numerical +root finders can fail, it is a bad idea to throw a root finder at a +function you do not know much about. In general it is best to examine +the function visually by plotting before searching for a root. + +Initializing the Solver +======================= + +.. type:: gsl_root_fsolver + + This is a workspace for finding roots using methods which do not require + derivatives. + +.. type:: gsl_root_fdfsolver + + This is a workspace for finding roots using methods which require + derivatives. + +.. function:: gsl_root_fsolver * gsl_root_fsolver_alloc (const gsl_root_fsolver_type * T) + + This function returns a pointer to a newly allocated instance of a + solver of type :data:`T`. For example, the following code creates an + instance of a bisection solver:: + + const gsl_root_fsolver_type * T = gsl_root_fsolver_bisection; + gsl_root_fsolver * s = gsl_root_fsolver_alloc (T); + + If there is insufficient memory to create the solver then the function + returns a null pointer and the error handler is invoked with an error + code of :macro:`GSL_ENOMEM`. + +.. function:: gsl_root_fdfsolver * gsl_root_fdfsolver_alloc (const gsl_root_fdfsolver_type * T) + + This function returns a pointer to a newly allocated instance of a + derivative-based solver of type :data:`T`. For example, the following + code creates an instance of a Newton-Raphson solver:: + + const gsl_root_fdfsolver_type * T = gsl_root_fdfsolver_newton; + gsl_root_fdfsolver * s = gsl_root_fdfsolver_alloc (T); + + If there is insufficient memory to create the solver then the function + returns a null pointer and the error handler is invoked with an error + code of :macro:`GSL_ENOMEM`. + +.. function:: int gsl_root_fsolver_set (gsl_root_fsolver * s, gsl_function * f, double x_lower, double x_upper) + + This function initializes, or reinitializes, an existing solver :data:`s` + to use the function :data:`f` and the initial search interval + [:data:`x_lower`, :data:`x_upper`]. + +.. function:: int gsl_root_fdfsolver_set (gsl_root_fdfsolver * s, gsl_function_fdf * fdf, double root) + + This function initializes, or reinitializes, an existing solver :data:`s` + to use the function and derivative :data:`fdf` and the initial guess + :data:`root`. + +.. function:: void gsl_root_fsolver_free (gsl_root_fsolver * s) + void gsl_root_fdfsolver_free (gsl_root_fdfsolver * s) + + These functions free all the memory associated with the solver :data:`s`. + +.. function:: const char * gsl_root_fsolver_name (const gsl_root_fsolver * s) + const char * gsl_root_fdfsolver_name (const gsl_root_fdfsolver * s) + + These functions return a pointer to the name of the solver. For example:: + + printf ("s is a '%s' solver\n", gsl_root_fsolver_name (s)); + + would print something like :code:`s is a 'bisection' solver`. + +.. index:: + single: root finding, providing a function to solve + +.. _providing-function-to-solve: + +Providing the function to solve +=============================== + +You must provide a continuous function of one variable for the root +finders to operate on, and, sometimes, its first derivative. In order +to allow for general parameters the functions are defined by the +following data types: + +.. type:: gsl_function + + This data type defines a general function with parameters. + + :code:`double (* function) (double x, void * params)` + + this function should return the value + :math:`f(x,params)` for argument :data:`x` and parameters :data:`params` + + :code:`void * params` + + a pointer to the parameters of the function + +Here is an example for the general quadratic function, + +.. math:: f(x) = a x^2 + b x + c + +with :math:`a = 3`, :math:`b = 2`, :math:`c = 1`. The following code +defines a :type:`gsl_function` :code:`F` which you could pass to a root +finder as a function pointer:: + + struct my_f_params { double a; double b; double c; }; + + double + my_f (double x, void * p) + { + struct my_f_params * params = (struct my_f_params *)p; + double a = (params->a); + double b = (params->b); + double c = (params->c); + + return (a * x + b) * x + c; + } + + gsl_function F; + struct my_f_params params = { 3.0, 2.0, 1.0 }; + + F.function = &my_f; + F.params = ¶ms; + +The function :math:`f(x)` can be evaluated using the macro +:code:`GSL_FN_EVAL(&F,x)` defined in :file:`gsl_math.h`. + +.. type:: gsl_function_fdf + + This data type defines a general function with parameters and its first + derivative. + + :code:`double (* f) (double x, void * params)` + + this function should return the value of + :math:`f(x,params)` for argument :data:`x` and parameters :data:`params` + + :code:`double (* df) (double x, void * params)` + + this function should return the value of the derivative of :data:`f` with + respect to :data:`x`, + :math:`f'(x,params)`, for argument :data:`x` and parameters :data:`params` + + :code:`void (* fdf) (double x, void * params, double * f, double * df)` + + this function should set the values of the function :data:`f` to + :math:`f(x,params)` + and its derivative :data:`df` to + :math:`f'(x,params)` + for argument :data:`x` and parameters :data:`params`. This function + provides an optimization of the separate functions for :math:`f(x)` and + :math:`f'(x)`---it is always faster to compute the function and its + derivative at the same time. + + :code:`void * params` + + a pointer to the parameters of the function + +Here is an example where +:math:`f(x) = \exp(2x)`:: + + double + my_f (double x, void * params) + { + return exp (2 * x); + } + + double + my_df (double x, void * params) + { + return 2 * exp (2 * x); + } + + void + my_fdf (double x, void * params, + double * f, double * df) + { + double t = exp (2 * x); + + *f = t; + *df = 2 * t; /* uses existing value */ + } + + gsl_function_fdf FDF; + + FDF.f = &my_f; + FDF.df = &my_df; + FDF.fdf = &my_fdf; + FDF.params = 0; + +The function :math:`f(x)` can be evaluated using the macro +:code:`GSL_FN_FDF_EVAL_F(&FDF,x)` and the derivative :math:`f'(x)` can +be evaluated using the macro :code:`GSL_FN_FDF_EVAL_DF(&FDF,x)`. Both +the function :math:`y = f(x)` and its derivative :math:`dy = f'(x)` can +be evaluated at the same time using the macro +:code:`GSL_FN_FDF_EVAL_F_DF(&FDF,x,y,dy)`. The macro stores +:math:`f(x)` in its :data:`y` argument and :math:`f'(x)` in its :data:`dy` +argument---both of these should be pointers to :code:`double`. + +.. index:: + single: root finding, search bounds + single: root finding, initial guess + +Search Bounds and Guesses +========================= + +You provide either search bounds or an initial guess; this section +explains how search bounds and guesses work and how function arguments +control them. + +A guess is simply an :math:`x` value which is iterated until it is within +the desired precision of a root. It takes the form of a :code:`double`. + +Search bounds are the endpoints of an interval which is iterated until +the length of the interval is smaller than the requested precision. The +interval is defined by two values, the lower limit and the upper limit. +Whether the endpoints are intended to be included in the interval or not +depends on the context in which the interval is used. + +Iteration +========= + +The following functions drive the iteration of each algorithm. Each +function performs one iteration to update the state of any solver of the +corresponding type. The same functions work for all solvers so that +different methods can be substituted at runtime without modifications to +the code. + +.. function:: int gsl_root_fsolver_iterate (gsl_root_fsolver * s) + int gsl_root_fdfsolver_iterate (gsl_root_fdfsolver * s) + + These functions perform a single iteration of the solver :data:`s`. If the + iteration encounters an unexpected problem then an error code will be + returned, + + :code:`GSL_EBADFUNC` + + the iteration encountered a singular point where the function or its + derivative evaluated to :code:`Inf` or :code:`NaN`. + + :code:`GSL_EZERODIV` + + the derivative of the function vanished at the iteration point, + preventing the algorithm from continuing without a division by zero. + +The solver maintains a current best estimate of the root at all +times. The bracketing solvers also keep track of the current best +interval bounding the root. This information can be accessed with the +following auxiliary functions, + +.. function:: double gsl_root_fsolver_root (const gsl_root_fsolver * s) + double gsl_root_fdfsolver_root (const gsl_root_fdfsolver * s) + + These functions return the current estimate of the root for the solver :data:`s`. + +.. function:: double gsl_root_fsolver_x_lower (const gsl_root_fsolver * s) + double gsl_root_fsolver_x_upper (const gsl_root_fsolver * s) + + These functions return the current bracketing interval for the solver :data:`s`. + +.. index:: + single: root finding, stopping parameters + +Search Stopping Parameters +========================== + +A root finding procedure should stop when one of the following conditions is +true: + +* A root has been found to within the user-specified precision. +* A user-specified maximum number of iterations has been reached. +* An error has occurred. + +The handling of these conditions is under user control. The functions +below allow the user to test the precision of the current result in +several standard ways. + +.. function:: int gsl_root_test_interval (double x_lower, double x_upper, double epsabs, double epsrel) + + This function tests for the convergence of the interval [:data:`x_lower`, + :data:`x_upper`] with absolute error :data:`epsabs` and relative error + :data:`epsrel`. The test returns :macro:`GSL_SUCCESS` if the following + condition is achieved, + + .. only:: not texinfo + + .. math:: |a - b| < \hbox{\it epsabs} + \hbox{\it epsrel\/}\, \min(|a|,|b|) + + .. only:: texinfo + + :: + + |a - b| < epsabs + epsrel min(|a|,|b|) + + when the interval :math:`x = [a,b]` does not include the origin. If the + interval includes the origin then :math:`\min(|a|,|b|)` is replaced by + zero (which is the minimum value of :math:`|x|` over the interval). This + ensures that the relative error is accurately estimated for roots close + to the origin. + + This condition on the interval also implies that any estimate of the + root :math:`r` in the interval satisfies the same condition with respect + to the true root :math:`r^*`, + + .. only:: not texinfo + + .. math:: |r - r^*| < \hbox{\it epsabs} + \hbox{\it epsrel\/}\, r^* + + .. only:: texinfo + + :: + + |r - r^*| < epsabs + epsrel r^* + + assuming that the true root :math:`r^*` is contained within the interval. + +.. function:: int gsl_root_test_delta (double x1, double x0, double epsabs, double epsrel) + + This function tests for the convergence of the sequence :data:`x0`, + :data:`x1` with absolute error :data:`epsabs` and relative error + :data:`epsrel`. The test returns :macro:`GSL_SUCCESS` if the following + condition is achieved, + + .. only:: not texinfo + + .. math:: |x_1 - x_0| < \hbox{\it epsabs} + \hbox{\it epsrel\/}\, |x_1| + + .. only:: texinfo + + :: + + |x_1 - x_0| < epsabs + epsrel |x_1| + + and returns :macro:`GSL_CONTINUE` otherwise. + +.. function:: int gsl_root_test_residual (double f, double epsabs) + + This function tests the residual value :data:`f` against the absolute + error bound :data:`epsabs`. The test returns :macro:`GSL_SUCCESS` if the + following condition is achieved, + + .. only:: not texinfo + + .. math:: |f| < \hbox{\it epsabs} + + .. only:: texinfo + + :: + + |f| < epsabs + + and returns :macro:`GSL_CONTINUE` otherwise. This criterion is suitable + for situations where the precise location of the root, :math:`x`, is + unimportant provided a value can be found where the residual, + :math:`|f(x)|`, is small enough. + +Root Bracketing Algorithms +========================== + +The root bracketing algorithms described in this section require an +initial interval which is guaranteed to contain a root---if :math:`a` +and :math:`b` are the endpoints of the interval then :math:`f(a)` must +differ in sign from :math:`f(b)`. This ensures that the function crosses +zero at least once in the interval. If a valid initial interval is used +then these algorithm cannot fail, provided the function is well-behaved. + +Note that a bracketing algorithm cannot find roots of even degree, since +these do not cross the :math:`x`-axis. + +.. type:: gsl_root_fsolver_type + + .. index:: + single: bisection algorithm for finding roots + single: root finding, bisection algorithm + + .. var:: gsl_root_fsolver_bisection + + The *bisection algorithm* is the simplest method of bracketing the + roots of a function. It is the slowest algorithm provided by + the library, with linear convergence. + + On each iteration, the interval is bisected and the value of the + function at the midpoint is calculated. The sign of this value is used + to determine which half of the interval does not contain a root. That + half is discarded to give a new, smaller interval containing the + root. This procedure can be continued indefinitely until the interval is + sufficiently small. + + At any time the current estimate of the root is taken as the midpoint of + the interval. + + .. eps file "roots-bisection.eps" + .. @iftex + .. @sp 1 + .. @center @image{roots-bisection,3.4in} + + .. @quotation + .. Four iterations of bisection, where :math:`a_n` is :math:`n`-th position of + .. the beginning of the interval and :math:`b_n` is the :math:`n`-th position + .. of the end. The midpoint of each interval is also indicated. + .. @end quotation + .. @end iftex + + .. index:: + single: false position algorithm for finding roots + single: root finding, false position algorithm + + .. var:: gsl_root_fsolver_falsepos + + The *false position algorithm* is a method of finding roots based on + linear interpolation. Its convergence is linear, but it is usually + faster than bisection. + + On each iteration a line is drawn between the endpoints :math:`(a,f(a))` + and :math:`(b,f(b))` and the point where this line crosses the + :math:`x`-axis taken as a "midpoint". The value of the function at + this point is calculated and its sign is used to determine which side of + the interval does not contain a root. That side is discarded to give a + new, smaller interval containing the root. This procedure can be + continued indefinitely until the interval is sufficiently small. + + The best estimate of the root is taken from the linear interpolation of + the interval on the current iteration. + + .. eps file "roots-false-position.eps" + .. @iftex + .. @image{roots-false-position,4in} + .. @quotation + .. Several iterations of false position, where :math:`a_n` is :math:`n`-th + .. position of the beginning of the interval and :math:`b_n` is the + .. :math:`n`-th position of the end. + .. @end quotation + .. @end iftex + + .. index:: + single: Brent's method for finding roots + single: root finding, Brent's method + + .. var:: gsl_root_fsolver_brent + + The *Brent-Dekker method* (referred to here as *Brent's method*) + combines an interpolation strategy with the bisection algorithm. This + produces a fast algorithm which is still robust. + + On each iteration Brent's method approximates the function using an + interpolating curve. On the first iteration this is a linear + interpolation of the two endpoints. For subsequent iterations the + algorithm uses an inverse quadratic fit to the last three points, for + higher accuracy. The intercept of the interpolating curve with the + :math:`x`-axis is taken as a guess for the root. If it lies within the + bounds of the current interval then the interpolating point is accepted, + and used to generate a smaller interval. If the interpolating point is + not accepted then the algorithm falls back to an ordinary bisection + step. + + The best estimate of the root is taken from the most recent + interpolation or bisection. + +Root Finding Algorithms using Derivatives +========================================= + +The root polishing algorithms described in this section require an +initial guess for the location of the root. There is no absolute +guarantee of convergence---the function must be suitable for this +technique and the initial guess must be sufficiently close to the root +for it to work. When these conditions are satisfied then convergence is +quadratic. + +These algorithms make use of both the function and its derivative. + +.. type:: gsl_root_fdfsolver_type + + .. index:: + single: Newton's method for finding roots + single: root finding, Newton's method + + .. var:: gsl_root_fdfsolver_newton + + Newton's Method is the standard root-polishing algorithm. The algorithm + begins with an initial guess for the location of the root. On each + iteration, a line tangent to the function :math:`f` is drawn at that + position. The point where this line crosses the :math:`x`-axis becomes + the new guess. The iteration is defined by the following sequence, + + .. only:: not texinfo + + .. math:: x_{i+1} = x_i - {f(x_i) \over f'(x_i)} + + .. only:: texinfo + + :: + + x_{i+1} = x_i - f(x_i)/f'(x_i) + + Newton's method converges quadratically for single roots, and linearly + for multiple roots. + + .. eps file "roots-newtons-method.eps" + .. @iftex + .. @sp 1 + .. @center @image{roots-newtons-method,3.4in} + + .. @quotation + .. Several iterations of Newton's Method, where :math:`g_n` is the + .. :math:`n`-th guess. + .. @end quotation + .. @end iftex + + .. index:: + single: secant method for finding roots + single: root finding, secant method + + .. var:: gsl_root_fdfsolver_secant + + The *secant method* is a simplified version of Newton's method which does + not require the computation of the derivative on every step. + + On its first iteration the algorithm begins with Newton's method, using + the derivative to compute a first step, + + .. only:: not texinfo + + .. math:: x_1 = x_0 - {f(x_0) \over f'(x_0)} + + .. only:: texinfo + + :: + + x_1 = x_0 - f(x_0)/f'(x_0) + + Subsequent iterations avoid the evaluation of the derivative by + replacing it with a numerical estimate, the slope of the line through + the previous two points, + + .. only:: not texinfo + + .. math:: + + x_{i+1} = x_i - {f(x_i) \over f'_{est}} + ~\hbox{where}~ + f'_{est} = {f(x_{i}) - f(x_{i-1}) \over x_i - x_{i-1}} + + .. only:: texinfo + + :: + + x_{i+1} = x_i f(x_i) / f'_{est} where + f'_{est} = (f(x_i) - f(x_{i-1})/(x_i - x_{i-1}) + + When the derivative does not change significantly in the vicinity of the + root the secant method gives a useful saving. Asymptotically the secant + method is faster than Newton's method whenever the cost of evaluating + the derivative is more than 0.44 times the cost of evaluating the + function itself. As with all methods of computing a numerical + derivative the estimate can suffer from cancellation errors if the + separation of the points becomes too small. + + On single roots, the method has a convergence of order :math:`(1 + \sqrt + 5)/2` (approximately :math:`1.62`). It converges linearly for multiple + roots. + + .. eps file "roots-secant-method.eps" + .. @iftex + .. @tex + .. \input epsf + .. \medskip + .. \centerline{\epsfxsize=5in\epsfbox{roots-secant-method.eps}} + .. @end tex + .. @quotation + .. Several iterations of Secant Method, where :math:`g_n` is the :math:`n`-th + .. guess. + .. @end quotation + .. @end iftex + + .. index:: + single: Steffenson's method for finding roots + single: root finding, Steffenson's method + + .. var:: gsl_root_fdfsolver_steffenson + + The *Steffenson Method* [#f1]_ + provides the fastest + convergence of all the routines. It combines the basic Newton + algorithm with an Aitken "delta-squared" acceleration. If the + Newton iterates are :math:`x_i` then the acceleration procedure + generates a new sequence :math:`R_i`, + + .. only:: not texinfo + + .. math:: R_i = x_i - {(x_{i+1} - x_i)^2 \over (x_{i+2} - 2 x_{i+1} + x_i)} + + .. only:: texinfo + + :: + + R_i = x_i - (x_{i+1} - x_i)^2 / (x_{i+2} - 2 x_{i+1} + x_{i}) + + which converges faster than the original sequence under reasonable + conditions. The new sequence requires three terms before it can produce + its first value so the method returns accelerated values on the second + and subsequent iterations. On the first iteration it returns the + ordinary Newton estimate. The Newton iterate is also returned if the + denominator of the acceleration term ever becomes zero. + + As with all acceleration procedures this method can become unstable if + the function is not well-behaved. + +Examples +======== + +For any root finding algorithm we need to prepare the function to be +solved. For this example we will use the general quadratic equation +described earlier. We first need a header file (:file:`demo_fn.h`) to +define the function parameters, + +.. include:: examples/demo_fn.h + :code: + +We place the function definitions in a separate file (:file:`demo_fn.c`), + +.. include:: examples/demo_fn.c + :code: + +The first program uses the function solver :data:`gsl_root_fsolver_brent` +for Brent's method and the general quadratic defined above to solve the +following equation, + +.. math:: x^2 - 5 = 0 + +with solution :math:`x = \sqrt 5 = 2.236068...` + +.. include:: examples/roots.c + :code: + +Here are the results of the iterations:: + + $ ./a.out + using brent method + iter [ lower, upper] root err err(est) + 1 [1.0000000, 5.0000000] 1.0000000 -1.2360680 4.0000000 + 2 [1.0000000, 3.0000000] 3.0000000 +0.7639320 2.0000000 + 3 [2.0000000, 3.0000000] 2.0000000 -0.2360680 1.0000000 + 4 [2.2000000, 3.0000000] 2.2000000 -0.0360680 0.8000000 + 5 [2.2000000, 2.2366300] 2.2366300 +0.0005621 0.0366300 + Converged: + 6 [2.2360634, 2.2366300] 2.2360634 -0.0000046 0.0005666 + +If the program is modified to use the bisection solver instead of +Brent's method, by changing :data:`gsl_root_fsolver_brent` to +:data:`gsl_root_fsolver_bisection` the slower convergence of the +Bisection method can be observed:: + + $ ./a.out + using bisection method + iter [ lower, upper] root err err(est) + 1 [0.0000000, 2.5000000] 1.2500000 -0.9860680 2.5000000 + 2 [1.2500000, 2.5000000] 1.8750000 -0.3610680 1.2500000 + 3 [1.8750000, 2.5000000] 2.1875000 -0.0485680 0.6250000 + 4 [2.1875000, 2.5000000] 2.3437500 +0.1076820 0.3125000 + 5 [2.1875000, 2.3437500] 2.2656250 +0.0295570 0.1562500 + 6 [2.1875000, 2.2656250] 2.2265625 -0.0095055 0.0781250 + 7 [2.2265625, 2.2656250] 2.2460938 +0.0100258 0.0390625 + 8 [2.2265625, 2.2460938] 2.2363281 +0.0002601 0.0195312 + 9 [2.2265625, 2.2363281] 2.2314453 -0.0046227 0.0097656 + 10 [2.2314453, 2.2363281] 2.2338867 -0.0021813 0.0048828 + 11 [2.2338867, 2.2363281] 2.2351074 -0.0009606 0.0024414 + Converged: + 12 [2.2351074, 2.2363281] 2.2357178 -0.0003502 0.0012207 + +The next program solves the same function using a derivative solver +instead. + +.. include:: examples/rootnewt.c + :code: + +Here are the results for Newton's method:: + + $ ./a.out + using newton method + iter root err err(est) + 1 3.0000000 +0.7639320 -2.0000000 + 2 2.3333333 +0.0972654 -0.6666667 + 3 2.2380952 +0.0020273 -0.0952381 + Converged: + 4 2.2360689 +0.0000009 -0.0020263 + +Note that the error can be estimated more accurately by taking the +difference between the current iterate and next iterate rather than the +previous iterate. The other derivative solvers can be investigated by +changing :data:`gsl_root_fdfsolver_newton` to +:data:`gsl_root_fdfsolver_secant` or +:data:`gsl_root_fdfsolver_steffenson`. + +References and Further Reading +============================== + +For information on the Brent-Dekker algorithm see the following two +papers, + +* R. P. Brent, "An algorithm with guaranteed convergence for finding a + zero of a function", *Computer Journal*, 14 (1971) 422--425 + +* J. C. P. Bus and T. J. Dekker, "Two Efficient Algorithms with Guaranteed + Convergence for Finding a Zero of a Function", *ACM Transactions of + Mathematical Software*, Vol.: 1 No.: 4 (1975) 330--345 + +.. rubric:: Footnotes + +.. [#f1] J.F. Steffensen (1873--1961). The spelling used in the name of the + function is slightly incorrect, but has been preserved to avoid incompatibility. diff --git a/gsl-2.5/doc/rstat.rst b/gsl-2.5/doc/rstat.rst new file mode 100644 index 00000000..e23b5fc0 --- /dev/null +++ b/gsl-2.5/doc/rstat.rst @@ -0,0 +1,247 @@ +.. index:: + single: running statistics + single: online statistics + +****************** +Running Statistics +****************** + +This chapter describes routines for computing running statistics, +also known as online statistics, of data. These routines are +suitable for handling large datasets for which it may be +inconvenient or impractical to store in memory all at once. +The data can be processed in a single pass, one point at a time. +Each time a data point is added to the accumulator, internal +parameters are updated in order to compute the current mean, variance, +standard deviation, skewness, and kurtosis. These statistics are +exact, and are updated with numerically stable single-pass algorithms. +The median and arbitrary quantiles are also available, however these +calculations use algorithms which provide approximations, and grow +more accurate as more data is added to the accumulator. + +The functions described in this chapter are declared in the header file +:file:`gsl_rstat.h`. + +Initializing the Accumulator +============================ + +.. type:: gsl_rstat_workspace + + This workspace contains parameters used to calculate various statistics + and are updated after each data point is added to the accumulator. + +.. function:: gsl_rstat_workspace * gsl_rstat_alloc (void) + + This function allocates a workspace for computing running statistics. + The size of the workspace is :math:`O(1)`. + +.. function:: void gsl_rstat_free (gsl_rstat_workspace * w) + + This function frees the memory associated with the workspace :data:`w`. + +.. function:: int gsl_rstat_reset (gsl_rstat_workspace * w) + + This function resets the workspace :data:`w` to its initial state, + so it can begin working on a new set of data. + +Adding Data to the Accumulator +============================== + +.. function:: int gsl_rstat_add (const double x, gsl_rstat_workspace * w) + + This function adds the data point :data:`x` to the statistical + accumulator, updating calculations of the mean, variance, + standard deviation, skewness, kurtosis, and median. + +.. function:: size_t gsl_rstat_n (const gsl_rstat_workspace * w) + + This function returns the number of data so far added to the accumulator. + +Current Statistics +================== + +.. function:: double gsl_rstat_min (const gsl_rstat_workspace * w) + + This function returns the minimum value added to the accumulator. + +.. function:: double gsl_rstat_max (const gsl_rstat_workspace * w) + + This function returns the maximum value added to the accumulator. + +.. function:: double gsl_rstat_mean (const gsl_rstat_workspace * w) + + This function returns the mean of all data added to the accumulator, + defined as + + .. only:: not texinfo + + .. math:: {\Hat\mu} = {1 \over N} \sum x_i + + .. only:: texinfo + + :: + + \Hat\mu = (1/N) \sum x_i + +.. function:: double gsl_rstat_variance (const gsl_rstat_workspace * w) + + This function returns the variance of all data added to the accumulator, + defined as + + .. only:: not texinfo + + .. math:: {\Hat\sigma}^2 = {1 \over (N-1)} \sum (x_i - {\Hat\mu})^2 + + .. only:: texinfo + + :: + + \Hat\sigma^2 = (1/(N-1)) \sum (x_i - \Hat\mu)^2 + +.. function:: double gsl_rstat_sd (const gsl_rstat_workspace * w) + + This function returns the standard deviation of all data added to the + accumulator, defined as the square root of the variance given above. + +.. function:: double gsl_rstat_sd_mean (const gsl_rstat_workspace * w) + + This function returns the standard deviation of the mean, defined as + + .. only:: not texinfo + + .. math:: \Hat\sigma_{\Hat\mu} = {\Hat\sigma \over \sqrt{N}} + + .. only:: texinfo + + :: + + sd_mean = \Hat\sigma / \sqrt{N} + +.. function:: double gsl_rstat_rms (const gsl_rstat_workspace * w) + + This function returns the root mean square of all data added to the + accumulator, defined as + + .. math:: rms = \sqrt{{1 \over N} \sum x_i^2} + +.. function:: double gsl_rstat_skew (const gsl_rstat_workspace * w) + + This function returns the skewness of all data added to the accumulator, + defined as + + .. only:: not texinfo + + .. math:: + + skew = {1 \over N} \sum + {\left( x_i - {\Hat\mu} \over {\Hat\sigma} \right)}^3 + + .. only:: texinfo + + :: + + skew = (1/N) \sum ((x_i - \Hat\mu)/\Hat\sigma)^3 + +.. function:: double gsl_rstat_kurtosis (const gsl_rstat_workspace * w) + + This function returns the kurtosis of all data added to the accumulator, + defined as + + .. only:: not texinfo + + .. math:: + + kurtosis = \left( {1 \over N} \sum + {\left(x_i - {\Hat\mu} \over {\Hat\sigma} \right)}^4 + \right) + - 3 + + .. only:: texinfo + + :: + + kurtosis = ((1/N) \sum ((x_i - \Hat\mu)/\Hat\sigma)^4) - 3 + +.. function:: double gsl_rstat_median (gsl_rstat_workspace * w) + + This function returns an estimate of the median of the data added to + the accumulator. + +Quantiles +========= + +The functions in this section estimate quantiles dynamically without +storing the entire dataset, using the algorithm of Jain and Chlamtec, 1985. +Only five points (markers) are stored which represent the minimum +and maximum of the data, as well as current estimates of the +:math:`p/2`-, :math:`p`-, and :math:`(1+p)/2`-quantiles. Each time +a new data point is added, the marker positions and heights are +updated. + +.. type:: gsl_rstat_quantile_workspace + + This workspace contains parameters for estimating quantiles of the + current dataset + +.. function:: gsl_rstat_quantile_workspace * gsl_rstat_quantile_alloc (const double p) + + This function allocates a workspace for the dynamic estimation of + :data:`p`-quantiles, where :data:`p` is between :math:`0` and :math:`1`. + The median corresponds to :math:`p = 0.5`. The size of the workspace + is :math:`O(1)`. + +.. function:: void gsl_rstat_quantile_free (gsl_rstat_quantile_workspace * w) + + This function frees the memory associated with the workspace :data:`w`. + +.. function:: int gsl_rstat_quantile_reset (gsl_rstat_quantile_workspace * w) + + This function resets the workspace :data:`w` to its initial state, + so it can begin working on a new set of data. + +.. function:: int gsl_rstat_quantile_add (const double x, gsl_rstat_quantile_workspace * w) + + This function updates the estimate of the :math:`p`-quantile with + the new data point :data:`x`. + +.. function:: double gsl_rstat_quantile_get (gsl_rstat_quantile_workspace * w) + + This function returns the current estimate of the :math:`p`-quantile. + +Examples +======== + +Here is a basic example of how to use the statistical functions: + +.. include:: examples/rstat.c + :code: + +The program should produce the following output, + +.. include:: examples/rstat.txt + :code: + +This next program estimates the lower quartile, median and upper +quartile from 10,000 samples of a random Rayleigh distribution, +using the :math:`P^2` algorithm of Jain and Chlamtec. For +comparison, the exact values are also computed from the sorted +dataset. + +.. include:: examples/rquantile.c + :code: + +The program should produce the following output, + +.. include:: examples/rquantile.txt + :code: + +References and Further Reading +============================== + +The algorithm used to dynamically estimate :math:`p`-quantiles is described +in the paper, + +* R. Jain and I. Chlamtac. + *The P^2 algorithm for dynamic calculation of quantiles and histograms without storing observations*, + Communications of the ACM, Volume 28 (October), Number 10, 1985, + p. 1076-1085. diff --git a/gsl-2.5/doc/siman.rst b/gsl-2.5/doc/siman.rst new file mode 100644 index 00000000..2ea71347 --- /dev/null +++ b/gsl-2.5/doc/siman.rst @@ -0,0 +1,320 @@ +.. index:: + single: simulated annealing + single: combinatorial optimization + single: optimization, combinatorial + single: energy function + single: cost function + +******************* +Simulated Annealing +******************* + +Stochastic search techniques are used when the structure of a space is +not well understood or is not smooth, so that techniques like Newton's +method (which requires calculating Jacobian derivative matrices) cannot +be used. In particular, these techniques are frequently used to solve +combinatorial optimization problems, such as the traveling salesman +problem. + +The goal is to find a point in the space at which a real valued +*energy function* (or *cost function*) is minimized. Simulated +annealing is a minimization technique which has given good results in +avoiding local minima; it is based on the idea of taking a random walk +through the space at successively lower temperatures, where the +probability of taking a step is given by a Boltzmann distribution. + +The functions described in this chapter are declared in the header file +:file:`gsl_siman.h`. + +Simulated Annealing algorithm +============================= + +The simulated annealing algorithm takes random walks through the problem +space, looking for points with low energies; in these random walks, the +probability of taking a step is determined by the Boltzmann distribution, + +.. math:: p = e^{-(E_{i+1} - E_i)/(kT)} + +if +:math:`E_{i+1} > E_i`, and +:math:`p = 1` when +:math:`E_{i+1} \le E_i`. + +In other words, a step will occur if the new energy is lower. If +the new energy is higher, the transition can still occur, and its +likelihood is proportional to the temperature :math:`T` and inversely +proportional to the energy difference +:math:`E_{i+1} - E_i`. + +.. index:: + single: cooling schedule + single: schedule, cooling + +The temperature :math:`T` is initially set to a high value, and a random +walk is carried out at that temperature. Then the temperature is +lowered very slightly according to a *cooling schedule*, for +example: :math:`T \rightarrow T/\mu_T` +where :math:`\mu_T` is slightly greater than 1. + +The slight probability of taking a step that gives higher energy is what +allows simulated annealing to frequently get out of local minima. + +Simulated Annealing functions +============================= + +.. function:: void gsl_siman_solve (const gsl_rng * r, void * x0_p, gsl_siman_Efunc_t Ef, gsl_siman_step_t take_step, gsl_siman_metric_t distance, gsl_siman_print_t print_position, gsl_siman_copy_t copyfunc, gsl_siman_copy_construct_t copy_constructor, gsl_siman_destroy_t destructor, size_t element_size, gsl_siman_params_t params) + + This function performs a simulated annealing search through a given + space. The space is specified by providing the functions :data:`Ef` and + :data:`distance`. The simulated annealing steps are generated using the + random number generator :data:`r` and the function :data:`take_step`. + + The starting configuration of the system should be given by :data:`x0_p`. + The routine offers two modes for updating configurations, a fixed-size + mode and a variable-size mode. In the fixed-size mode the configuration + is stored as a single block of memory of size :data:`element_size`. + Copies of this configuration are created, copied and destroyed + internally using the standard library functions :func:`malloc`, + :func:`memcpy` and :func:`free`. The function pointers :data:`copyfunc`, + :data:`copy_constructor` and :data:`destructor` should be null pointers in + fixed-size mode. In the variable-size mode the functions + :data:`copyfunc`, :data:`copy_constructor` and :data:`destructor` are used to + create, copy and destroy configurations internally. The variable + :data:`element_size` should be zero in the variable-size mode. + + The :data:`params` structure (described below) controls the run by + providing the temperature schedule and other tunable parameters to the + algorithm. + + On exit the best result achieved during the search is placed in + :data:`x0_p`. If the annealing process has been successful this + should be a good approximation to the optimal point in the space. + + If the function pointer :data:`print_position` is not null, a debugging + log will be printed to :code:`stdout` with the following columns:: + + #-iter #-evals temperature position energy best_energy + + and the output of the function :data:`print_position` itself. If + :data:`print_position` is null then no information is printed. + +The simulated annealing routines require several user-specified +functions to define the configuration space and energy function. The +prototypes for these functions are given below. + +.. type:: gsl_siman_Efunc_t + + This function type should return the energy of a configuration :data:`xp`:: + + double (*gsl_siman_Efunc_t) (void *xp) + +.. type:: gsl_siman_step_t + + This function type should modify the configuration :data:`xp` using a random step + taken from the generator :data:`r`, up to a maximum distance of + :data:`step_size`:: + + void (*gsl_siman_step_t) (const gsl_rng *r, void *xp, + double step_size) + +.. type:: gsl_siman_metric_t + + This function type should return the distance between two configurations + :data:`xp` and :data:`yp`:: + + double (*gsl_siman_metric_t) (void *xp, void *yp) + +.. type:: gsl_siman_print_t + + This function type should print the contents of the configuration :data:`xp`:: + + void (*gsl_siman_print_t) (void *xp) + +.. type:: gsl_siman_copy_t + + This function type should copy the configuration :data:`source` into :data:`dest`:: + + void (*gsl_siman_copy_t) (void *source, void *dest) + +.. type:: gsl_siman_copy_construct_t + + This function type should create a new copy of the configuration :data:`xp`:: + + void * (*gsl_siman_copy_construct_t) (void *xp) + +.. type:: gsl_siman_destroy_t + + This function type should destroy the configuration :data:`xp`, freeing its + memory:: + + void (*gsl_siman_destroy_t) (void *xp) + +.. type:: gsl_siman_params_t + + These are the parameters that control a run of :func:`gsl_siman_solve`. + This structure contains all the information needed to control the + search, beyond the energy function, the step function and the initial + guess. + + ========================================= ============================================================ + :code:`int n_tries` The number of points to try for each step. + :code:`int iters_fixed_T` The number of iterations at each temperature. + :code:`double step_size` The maximum step size in the random walk. + :code:`double k, t_initial, mu_t, t_min` The parameters of the Boltzmann distribution and cooling + schedule. + ========================================= ============================================================ + +Examples +======== + +The simulated annealing package is clumsy, and it has to be because it +is written in C, for C callers, and tries to be polymorphic at the same +time. But here we provide some examples which can be pasted into your +application with little change and should make things easier. + +Trivial example +--------------- + +The first example, in one dimensional Cartesian space, sets up an energy +function which is a damped sine wave; this has many local minima, but +only one global minimum, somewhere between 1.0 and 1.5. The initial +guess given is 15.5, which is several local minima away from the global +minimum. + +.. include:: examples/siman.c + :code: + +:numref:`fig_siman-test` is generated by running +:code:`siman_test` in the following way:: + + $ ./siman_test | awk '!/^#/ {print $1, $4}' + | graph -y 1.34 1.4 -W0 -X generation -Y position + | plot -Tps > siman-test.eps + +:numref:`fig_siman-energy` is generated by running +:code:`siman_test` in the following way:: + + $ ./siman_test | awk '!/^#/ {print $1, $5}' + | graph -y -0.88 -0.83 -W0 -X generation -Y energy + | plot -Tps > siman-energy.eps + +.. _fig_siman-test: + +.. figure:: /images/siman-test.png + :scale: 60% + + Example of a simulated annealing run: at higher temperatures (early in + the plot) you see that the solution can fluctuate, but at lower + temperatures it converges. + +.. _fig_siman-energy: + +.. figure:: /images/siman-energy.png + :scale: 60% + + Simulated annealing energy vs generation + +.. index:: + single: TSP + single: traveling salesman problem + +Traveling Salesman Problem +-------------------------- + +The TSP (*Traveling Salesman Problem*) is the classic combinatorial +optimization problem. I have provided a very simple version of it, +based on the coordinates of twelve cities in the southwestern United +States. This should maybe be called the *Flying Salesman Problem*, +since I am using the great-circle distance between cities, rather than +the driving distance. Also: I assume the earth is a sphere, so I don't +use geoid distances. + +The :func:`gsl_siman_solve` routine finds a route which is 3490.62 +Kilometers long; this is confirmed by an exhaustive search of all +possible routes with the same initial city. + +The full code is given below. + +.. include:: examples/siman_tsp.c + :code: + +Below are some plots generated in the following way:: + + $ ./siman_tsp > tsp.output + $ grep -v "^#" tsp.output + | awk '{print $1, $NF}' + | graph -y 3300 6500 -W0 -X generation -Y distance + -L "TSP - 12 southwest cities" + | plot -Tps > 12-cities.eps + $ grep initial_city_coord tsp.output + | awk '{print $2, $3}' + | graph -X "longitude (- means west)" -Y "latitude" + -L "TSP - initial-order" -f 0.03 -S 1 0.1 + | plot -Tps > initial-route.eps + $ grep final_city_coord tsp.output + | awk '{print $2, $3}' + | graph -X "longitude (- means west)" -Y "latitude" + -L "TSP - final-order" -f 0.03 -S 1 0.1 + | plot -Tps > final-route.eps + +This is the output showing the initial order of the cities; longitude is +negative, since it is west and I want the plot to look like a map:: + + # initial coordinates of cities (longitude and latitude) + ###initial_city_coord: -105.95 35.68 Santa Fe + ###initial_city_coord: -112.07 33.54 Phoenix + ###initial_city_coord: -106.62 35.12 Albuquerque + ###initial_city_coord: -103.2 34.41 Clovis + ###initial_city_coord: -107.87 37.29 Durango + ###initial_city_coord: -96.77 32.79 Dallas + ###initial_city_coord: -105.92 35.77 Tesuque + ###initial_city_coord: -107.84 35.15 Grants + ###initial_city_coord: -106.28 35.89 Los Alamos + ###initial_city_coord: -106.76 32.34 Las Cruces + ###initial_city_coord: -108.58 37.35 Cortez + ###initial_city_coord: -108.74 35.52 Gallup + ###initial_city_coord: -105.95 35.68 Santa Fe + +The optimal route turns out to be:: + + # final coordinates of cities (longitude and latitude) + ###final_city_coord: -105.95 35.68 Santa Fe + ###final_city_coord: -103.2 34.41 Clovis + ###final_city_coord: -96.77 32.79 Dallas + ###final_city_coord: -106.76 32.34 Las Cruces + ###final_city_coord: -112.07 33.54 Phoenix + ###final_city_coord: -108.74 35.52 Gallup + ###final_city_coord: -108.58 37.35 Cortez + ###final_city_coord: -107.87 37.29 Durango + ###final_city_coord: -107.84 35.15 Grants + ###final_city_coord: -106.62 35.12 Albuquerque + ###final_city_coord: -106.28 35.89 Los Alamos + ###final_city_coord: -105.92 35.77 Tesuque + ###final_city_coord: -105.95 35.68 Santa Fe + +.. figure:: /images/siman-initial-route.png + :scale: 60% + + Initial route for the 12 southwestern cities Flying Salesman Problem. + +.. figure:: /images/siman-final-route.png + :scale: 60% + + Final (optimal) route for the 12 southwestern cities Flying Salesman Problem. + +Here's a plot of the cost function (energy) versus generation (point in +the calculation at which a new temperature is set) for this problem: + +.. figure:: /images/siman-12-cities.png + :scale: 60% + + Example of a simulated annealing run for the 12 southwestern cities + Flying Salesman Problem. + +References and Further Reading +============================== + +Further information is available in the following book, + +* *Modern Heuristic Techniques for Combinatorial Problems*, Colin R. Reeves + (ed.), McGraw-Hill, 1995 (ISBN 0-07-709239-2). diff --git a/gsl-2.5/doc/sort.rst b/gsl-2.5/doc/sort.rst new file mode 100644 index 00000000..b0f1b8cb --- /dev/null +++ b/gsl-2.5/doc/sort.rst @@ -0,0 +1,302 @@ +.. index:: sorting, heapsort + +******* +Sorting +******* + +This chapter describes functions for sorting data, both directly and +indirectly (using an index). All the functions use the *heapsort* +algorithm. Heapsort is an :math:`O(N \log N)` algorithm which operates +in-place and does not require any additional storage. It also provides +consistent performance, the running time for its worst-case (ordered +data) being not significantly longer than the average and best cases. +Note that the heapsort algorithm does not preserve the relative ordering +of equal elements---it is an *unstable* sort. However the resulting +order of equal elements will be consistent across different platforms +when using these functions. + +Sorting objects +=============== + +The following function provides a simple alternative to the standard +library function :func:`qsort`. It is intended for systems lacking +:func:`qsort`, not as a replacement for it. The function :func:`qsort` +should be used whenever possible, as it will be faster and can provide +stable ordering of equal elements. Documentation for :func:`qsort` is +available in the GNU C Library Reference Manual. + +The functions described in this section are defined in the header file +:file:`gsl_heapsort.h`. + +.. index:: + single: comparison functions, definition + +.. function:: void gsl_heapsort (void * array, size_t count, size_t size, gsl_comparison_fn_t compare) + + This function sorts the :data:`count` elements of the array :data:`array`, + each of size :data:`size`, into ascending order using the comparison + function :data:`compare`. The type of the comparison function is defined by + + .. type:: gsl_comparison_fn_t + + :: + + int (*gsl_comparison_fn_t) (const void * a, const void * b) + + A comparison function should return a negative integer if the first + argument is less than the second argument, :code:`0` if the two arguments + are equal and a positive integer if the first argument is greater than + the second argument. + + For example, the following function can be used to sort doubles into + ascending numerical order. + + :: + + int + compare_doubles (const double * a, const double * b) + { + if (*a > *b) + return 1; + else if (*a < *b) + return -1; + else + return 0; + } + + The appropriate function call to perform the sort is:: + + gsl_heapsort (array, count, sizeof(double), compare_doubles); + + Note that unlike :func:`qsort` the heapsort algorithm cannot be made into + a stable sort by pointer arithmetic. The trick of comparing pointers for + equal elements in the comparison function does not work for the heapsort + algorithm. The heapsort algorithm performs an internal rearrangement of + the data which destroys its initial ordering. + +.. index:: indirect sorting + +.. function:: int gsl_heapsort_index (size_t * p, const void * array, size_t count, size_t size, gsl_comparison_fn_t compare) + + This function indirectly sorts the :data:`count` elements of the array + :data:`array`, each of size :data:`size`, into ascending order using the + comparison function :data:`compare`. The resulting permutation is stored + in :data:`p`, an array of length :data:`n`. The elements of :data:`p` give the + index of the array element which would have been stored in that position + if the array had been sorted in place. The first element of :data:`p` + gives the index of the least element in :data:`array`, and the last + element of :data:`p` gives the index of the greatest element in + :data:`array`. The array itself is not changed. + +Sorting vectors +=============== + +The following functions will sort the elements of an array or vector, +either directly or indirectly. They are defined for all real and integer +types using the normal suffix rules. For example, the :code:`float` +versions of the array functions are :func:`gsl_sort_float` and +:func:`gsl_sort_float_index`. The corresponding vector functions are +:func:`gsl_sort_vector_float` and :func:`gsl_sort_vector_float_index`. The +prototypes are available in the header files :file:`gsl_sort_float.h` +:file:`gsl_sort_vector_float.h`. The complete set of prototypes can be +included using the header files :file:`gsl_sort.h` and +:file:`gsl_sort_vector.h`. + +There are no functions for sorting complex arrays or vectors, since the +ordering of complex numbers is not uniquely defined. To sort a complex +vector by magnitude compute a real vector containing the magnitudes +of the complex elements, and sort this vector indirectly. The resulting +index gives the appropriate ordering of the original complex vector. + +.. index:: + single: sorting vector elements + single: vector, sorting elements of + +.. function:: void gsl_sort (double * data, const size_t stride, size_t n) + + This function sorts the :data:`n` elements of the array :data:`data` with + stride :data:`stride` into ascending numerical order. + +.. function:: void gsl_sort2 (double * data1, const size_t stride1, double * data2, const size_t stride2, size_t n) + + This function sorts the :data:`n` elements of the array :data:`data1` with + stride :data:`stride1` into ascending numerical order, while making the + same rearrangement of the array :data:`data2` with stride :data:`stride2`, + also of size :data:`n`. + +.. function:: void gsl_sort_vector (gsl_vector * v) + + This function sorts the elements of the vector :data:`v` into ascending + numerical order. + +.. function:: void gsl_sort_vector2 (gsl_vector * v1, gsl_vector * v2) + + This function sorts the elements of the vector :data:`v1` into ascending + numerical order, while making the same rearrangement of the vector :data:`v2`. + +.. index:: + single: indirect sorting, of vector elements + +.. function:: void gsl_sort_index (size_t * p, const double * data, size_t stride, size_t n) + + This function indirectly sorts the :data:`n` elements of the array + :data:`data` with stride :data:`stride` into ascending order, storing the + resulting permutation in :data:`p`. The array :data:`p` must be allocated with + a sufficient length to store the :data:`n` elements of the permutation. + The elements of :data:`p` give the index of the array element which would + have been stored in that position if the array had been sorted in place. + The array :data:`data` is not changed. + +.. function:: int gsl_sort_vector_index (gsl_permutation * p, const gsl_vector * v) + + This function indirectly sorts the elements of the vector :data:`v` into + ascending order, storing the resulting permutation in :data:`p`. The + elements of :data:`p` give the index of the vector element which would + have been stored in that position if the vector had been sorted in + place. The first element of :data:`p` gives the index of the least element + in :data:`v`, and the last element of :data:`p` gives the index of the + greatest element in :data:`v`. The vector :data:`v` is not changed. + +Selecting the k smallest or largest elements +============================================ + +The functions described in this section select the :math:`k` smallest +or largest elements of a data set of size :math:`N`. The routines use an +:math:`O(kN)` direct insertion algorithm which is suited to subsets that +are small compared with the total size of the dataset. For example, the +routines are useful for selecting the 10 largest values from one million +data points, but not for selecting the largest 100,000 values. If the +subset is a significant part of the total dataset it may be faster +to sort all the elements of the dataset directly with an :math:`O(N \log N)` +algorithm and obtain the smallest or largest values that way. + +.. function:: int gsl_sort_smallest (double * dest, size_t k, const double * src, size_t stride, size_t n) + + This function copies the :data:`k` smallest elements of the array + :data:`src`, of size :data:`n` and stride :data:`stride`, in ascending + numerical order into the array :data:`dest`. The size :data:`k` of the subset must be + less than or equal to :data:`n`. The data :data:`src` is not modified by + this operation. + +.. function:: int gsl_sort_largest (double * dest, size_t k, const double * src, size_t stride, size_t n) + + This function copies the :data:`k` largest elements of the array + :data:`src`, of size :data:`n` and stride :data:`stride`, in descending + numerical order into the array :data:`dest`. :data:`k` must be + less than or equal to :data:`n`. The data :data:`src` is not modified by + this operation. + +.. function:: int gsl_sort_vector_smallest (double * dest, size_t k, const gsl_vector * v) + int gsl_sort_vector_largest (double * dest, size_t k, const gsl_vector * v) + + These functions copy the :data:`k` smallest or largest elements of the + vector :data:`v` into the array :data:`dest`. :data:`k` + must be less than or equal to the length of the vector :data:`v`. + +The following functions find the indices of the :math:`k` smallest or +largest elements of a dataset. + +.. function:: int gsl_sort_smallest_index (size_t * p, size_t k, const double * src, size_t stride, size_t n) + + This function stores the indices of the :data:`k` smallest elements of + the array :data:`src`, of size :data:`n` and stride :data:`stride`, in the + array :data:`p`. The indices are chosen so that the corresponding data is + in ascending numerical order. :data:`k` must be + less than or equal to :data:`n`. The data :data:`src` is not modified by + this operation. + +.. function:: int gsl_sort_largest_index (size_t * p, size_t k, const double * src, size_t stride, size_t n) + + This function stores the indices of the :data:`k` largest elements of + the array :data:`src`, of size :data:`n` and stride :data:`stride`, in the + array :data:`p`. The indices are chosen so that the corresponding data is + in descending numerical order. :data:`k` must be + less than or equal to :data:`n`. The data :data:`src` is not modified by + this operation. + +.. function:: int gsl_sort_vector_smallest_index (size_t * p, size_t k, const gsl_vector * v) + int gsl_sort_vector_largest_index (size_t * p, size_t k, const gsl_vector * v) + + These functions store the indices of the :data:`k` smallest or largest + elements of the vector :data:`v` in the array :data:`p`. :data:`k` must be less than or equal to the length of the vector + :data:`v`. + +Computing the rank +================== + +The *rank* of an element is its order in the sorted data. The rank +is the inverse of the index permutation, :math:`p`. It can be computed +using the following algorithm:: + + for (i = 0; i < p->size; i++) + { + size_t pi = p->data[i]; + rank->data[pi] = i; + } + +This can be computed directly from the function +:code:`gsl_permutation_inverse(rank,p)`. + +The following function will print the rank of each element of the vector +:math:`v`:: + + void + print_rank (gsl_vector * v) + { + size_t i; + size_t n = v->size; + gsl_permutation * perm = gsl_permutation_alloc(n); + gsl_permutation * rank = gsl_permutation_alloc(n); + + gsl_sort_vector_index (perm, v); + gsl_permutation_inverse (rank, perm); + + for (i = 0; i < n; i++) + { + double vi = gsl_vector_get(v, i); + printf ("element = %d, value = %g, rank = %d\n", + i, vi, rank->data[i]); + } + + gsl_permutation_free (perm); + gsl_permutation_free (rank); + } + +Examples +======== + +The following example shows how to use the permutation :math:`p` to print +the elements of the vector :math:`v` in ascending order:: + + gsl_sort_vector_index (p, v); + + for (i = 0; i < v->size; i++) + { + double vpi = gsl_vector_get (v, p->data[i]); + printf ("order = %d, value = %g\n", i, vpi); + } + +The next example uses the function :func:`gsl_sort_smallest` to select +the 5 smallest numbers from 100000 uniform random variates stored in an +array, + +.. include:: examples/sortsmall.c + :code: + +The output lists the 5 smallest values, in ascending order, + +.. include:: examples/sortsmall.txt + :code: + +References and Further Reading +============================== + +The subject of sorting is covered extensively in the following, + +* Donald E. Knuth, The Art of Computer Programming: Sorting and + Searching (Vol 3, 3rd Ed, 1997), Addison-Wesley, ISBN 0201896850. + +The Heapsort algorithm is described in the following book, + +* Robert Sedgewick, Algorithms in C, Addison-Wesley, + ISBN 0201514257. diff --git a/gsl-2.5/doc/spblas.rst b/gsl-2.5/doc/spblas.rst new file mode 100644 index 00000000..6ea3edb2 --- /dev/null +++ b/gsl-2.5/doc/spblas.rst @@ -0,0 +1,50 @@ +.. index:: + single: sparse BLAS + single: BLAS, sparse + +******************* +Sparse BLAS Support +******************* + +.. include:: include.rst + +The Sparse Basic Linear Algebra Subprograms (|blas|) define a set of +fundamental operations on vectors and sparse matrices which can be used +to create optimized higher-level linear algebra functionality. +GSL supports a limited number of BLAS operations for sparse matrices. + +The header file :file:`gsl_spblas.h` contains the prototypes for the +sparse BLAS functions and related declarations. + +.. index:: + single: sparse matrices, BLAS operations + +Sparse BLAS operations +====================== + +.. function:: int gsl_spblas_dgemv (const CBLAS_TRANSPOSE_t TransA, const double alpha, const gsl_spmatrix * A, const gsl_vector * x, const double beta, gsl_vector * y) + + This function computes the matrix-vector product and sum + :math:`y \leftarrow \alpha op(A) x + \beta y`, where + :math:`op(A) = A, A^T` for :data:`TransA` = :code:`CblasNoTrans`, + :code:`CblasTrans`. In-place computations are not supported, so + :data:`x` and :data:`y` must be distinct vectors. + The matrix :data:`A` may be in triplet or compressed format. + +.. function:: int gsl_spblas_dgemm (const double alpha, const gsl_spmatrix * A, const gsl_spmatrix * B, gsl_spmatrix * C) + + This function computes the sparse matrix-matrix product + :math:`C = \alpha A B`. The matrices must be in compressed format. + +.. index:: + single: sparse BLAS, references + +References and Further Reading +============================== + +The algorithms used by these functions are described in the +following sources: + +* Davis, T. A., Direct Methods for Sparse Linear Systems, SIAM, 2006. + +* CSparse software library, https://www.cise.ufl.edu/research/sparse/CSparse diff --git a/gsl-2.5/doc/specfunc-airy.rst b/gsl-2.5/doc/specfunc-airy.rst new file mode 100644 index 00000000..af05e1ef --- /dev/null +++ b/gsl-2.5/doc/specfunc-airy.rst @@ -0,0 +1,113 @@ +.. index:: Airy functions +.. index:: Ai(x) +.. index:: Bi(x) + +The Airy functions :math:`Ai(x)` and :math:`Bi(x)` are defined by the +integral representations, + +.. only:: not texinfo + + .. math:: + + Ai(x) & = {1\over\pi} \int_0^\infty \cos(t^3/3 + xt ) \,dt \\ + Bi(x) & = {1\over\pi} \int_0^\infty (e^{-t^3/3 + xt} + \sin(t^3/3 + xt)) \,dt + +.. only:: texinfo + + | Ai(x) = (1/\pi) \int_0^\infty \cos((1/3) t^3 + xt) dt + | Bi(x) = (1/\pi) \int_0^\infty (e^(-(1/3) t^3 + xt) + \sin((1/3) t^3 + xt)) dt + +For further information see Abramowitz & Stegun, Section 10.4. The Airy +functions are defined in the header file :file:`gsl_sf_airy.h`. + +Airy Functions +-------------- + +.. function:: double gsl_sf_airy_Ai (double x, gsl_mode_t mode) + int gsl_sf_airy_Ai_e (double x, gsl_mode_t mode, gsl_sf_result * result) + + These routines compute the Airy function :math:`Ai(x)` with an accuracy + specified by :data:`mode`. + +.. function:: double gsl_sf_airy_Bi (double x, gsl_mode_t mode) + int gsl_sf_airy_Bi_e (double x, gsl_mode_t mode, gsl_sf_result * result) + + These routines compute the Airy function :math:`Bi(x)` with an accuracy + specified by :data:`mode`. + +.. function:: double gsl_sf_airy_Ai_scaled (double x, gsl_mode_t mode) + int gsl_sf_airy_Ai_scaled_e (double x, gsl_mode_t mode, gsl_sf_result * result) + + These routines compute a scaled version of the Airy function + :math:`S_A(x) Ai(x)`. For :math:`x > 0` the scaling factor :math:`S_A(x)` is + :math:`\exp(+(2/3) x^{3/2})`, + and is 1 for :math:`x < 0`. + +.. function:: double gsl_sf_airy_Bi_scaled (double x, gsl_mode_t mode) + int gsl_sf_airy_Bi_scaled_e (double x, gsl_mode_t mode, gsl_sf_result * result) + + These routines compute a scaled version of the Airy function + :math:`S_B(x) Bi(x)`. For :math:`x > 0` the scaling factor :math:`S_B(x)` is + :math:`exp(-(2/3) x^{3/2})`, and is 1 for :math:`x < 0`. + + +Derivatives of Airy Functions +----------------------------- + +.. function:: double gsl_sf_airy_Ai_deriv (double x, gsl_mode_t mode) + int gsl_sf_airy_Ai_deriv_e (double x, gsl_mode_t mode, gsl_sf_result * result) + + These routines compute the Airy function derivative :math:`Ai'(x)` with + an accuracy specified by :data:`mode`. + +.. function:: double gsl_sf_airy_Bi_deriv (double x, gsl_mode_t mode) + int gsl_sf_airy_Bi_deriv_e (double x, gsl_mode_t mode, gsl_sf_result * result) + + These routines compute the Airy function derivative :math:`Bi'(x)` with + an accuracy specified by :data:`mode`. + +.. function:: double gsl_sf_airy_Ai_deriv_scaled (double x, gsl_mode_t mode) + int gsl_sf_airy_Ai_deriv_scaled_e (double x, gsl_mode_t mode, gsl_sf_result * result) + + These routines compute the scaled Airy function derivative + :math:`S_A(x) Ai'(x)`. + For :math:`x > 0` the scaling factor :math:`S_A(x)` is + :math:`\exp(+(2/3) x^{3/2})`, and is 1 for :math:`x < 0`. + +.. function:: double gsl_sf_airy_Bi_deriv_scaled (double x, gsl_mode_t mode) + int gsl_sf_airy_Bi_deriv_scaled_e (double x, gsl_mode_t mode, gsl_sf_result * result) + + These routines compute the scaled Airy function derivative + :math:`S_B(x) Bi'(x)`. + For :math:`x > 0` the scaling factor :math:`S_B(x)` is + :math:`exp(-(2/3) x^{3/2})`, and is 1 for :math:`x < 0`. + +Zeros of Airy Functions +----------------------- + +.. function:: double gsl_sf_airy_zero_Ai (unsigned int s) + int gsl_sf_airy_zero_Ai_e (unsigned int s, gsl_sf_result * result) + + These routines compute the location of the :data:`s`-th zero of the Airy + function :math:`Ai(x)`. + +.. function:: double gsl_sf_airy_zero_Bi (unsigned int s) + int gsl_sf_airy_zero_Bi_e (unsigned int s, gsl_sf_result * result) + + These routines compute the location of the :data:`s`-th zero of the Airy + function :math:`Bi(x)`. + +Zeros of Derivatives of Airy Functions +-------------------------------------- + +.. function:: double gsl_sf_airy_zero_Ai_deriv (unsigned int s) + int gsl_sf_airy_zero_Ai_deriv_e (unsigned int s, gsl_sf_result * result) + + These routines compute the location of the :data:`s`-th zero of the Airy + function derivative :math:`Ai'(x)`. + +.. function:: double gsl_sf_airy_zero_Bi_deriv (unsigned int s) + int gsl_sf_airy_zero_Bi_deriv_e (unsigned int s, gsl_sf_result * result) + + These routines compute the location of the :data:`s`-th zero of the Airy + function derivative :math:`Bi'(x)`. diff --git a/gsl-2.5/doc/specfunc-bessel.rst b/gsl-2.5/doc/specfunc-bessel.rst new file mode 100644 index 00000000..b1569392 --- /dev/null +++ b/gsl-2.5/doc/specfunc-bessel.rst @@ -0,0 +1,572 @@ +.. index:: Bessel functions + +The routines described in this section compute the Cylindrical Bessel +functions :math:`J_n(x)`, :math:`Y_n(x)`, Modified cylindrical Bessel +functions :math:`I_n(x)`, :math:`K_n(x)`, Spherical Bessel functions +:math:`j_l(x)`, :math:`y_l(x)`, and Modified Spherical Bessel functions +:math:`i_l(x)`, :math:`k_l(x)`. For more information see Abramowitz & Stegun, +Chapters 9 and 10. The Bessel functions are defined in the header file +:file:`gsl_sf_bessel.h`. + +Regular Cylindrical Bessel Functions +------------------------------------ +.. index:: Cylindrical Bessel Functions +.. index:: Regular Cylindrical Bessel Functions +.. index:: + single: J(x), Bessel Functions + +.. function:: double gsl_sf_bessel_J0 (double x) + int gsl_sf_bessel_J0_e (double x, gsl_sf_result * result) + + These routines compute the regular cylindrical Bessel function of zeroth + order, :math:`J_0(x)`. + +.. function:: double gsl_sf_bessel_J1 (double x) + int gsl_sf_bessel_J1_e (double x, gsl_sf_result * result) + + These routines compute the regular cylindrical Bessel function of first + order, :math:`J_1(x)`. + +.. function:: double gsl_sf_bessel_Jn (int n, double x) + int gsl_sf_bessel_Jn_e (int n, double x, gsl_sf_result * result) + + These routines compute the regular cylindrical Bessel function of + order :data:`n`, :math:`J_n(x)`. +.. Exceptional Return Values: GSL_EUNDRFLW + +.. function:: int gsl_sf_bessel_Jn_array (int nmin, int nmax, double x, double result_array[]) + + This routine computes the values of the regular cylindrical Bessel + functions :math:`J_n(x)` for :math:`n` from :data:`nmin` to :data:`nmax` + inclusive, storing the results in the array :data:`result_array`. The + values are computed using recurrence relations for efficiency, and + therefore may differ slightly from the exact values. +.. Exceptional Return Values: GSL_EDOM, GSL_EUNDRFLW + + +Irregular Cylindrical Bessel Functions +-------------------------------------- +.. index:: Irregular Cylindrical Bessel Functions +.. index:: + single: Y(x), Bessel Functions + +.. function:: double gsl_sf_bessel_Y0 (double x) + int gsl_sf_bessel_Y0_e (double x, gsl_sf_result * result) + + These routines compute the irregular cylindrical Bessel function of zeroth + order, :math:`Y_0(x)`, for :math:`x>0`. +.. Exceptional Return Values: GSL_EDOM, GSL_EUNDRFLW + +.. function:: double gsl_sf_bessel_Y1 (double x) + int gsl_sf_bessel_Y1_e (double x, gsl_sf_result * result) + + These routines compute the irregular cylindrical Bessel function of first + order, :math:`Y_1(x)`, for :math:`x>0`. +.. Exceptional Return Values: GSL_EDOM, GSL_EOVRFLW, GSL_EUNDRFLW + +.. function:: double gsl_sf_bessel_Yn (int n, double x) + int gsl_sf_bessel_Yn_e (int n, double x, gsl_sf_result * result) + + These routines compute the irregular cylindrical Bessel function of + order :data:`n`, :math:`Y_n(x)`, for :math:`x>0`. +.. Exceptional Return Values: GSL_EDOM, GSL_EOVRFLW, GSL_EUNDRFLW + +.. function:: int gsl_sf_bessel_Yn_array (int nmin, int nmax, double x, double result_array[]) + + This routine computes the values of the irregular cylindrical Bessel + functions :math:`Y_n(x)` for :math:`n` from :data:`nmin` to :data:`nmax` + inclusive, storing the results in the array :data:`result_array`. The + domain of the function is :math:`x>0`. The values are computed using + recurrence relations for efficiency, and therefore may differ slightly + from the exact values. +.. Exceptional Return Values: GSL_EDOM, GSL_EOVRFLW, GSL_EUNDRFLW + +Regular Modified Cylindrical Bessel Functions +--------------------------------------------- +.. index:: Modified Cylindrical Bessel Functions +.. index:: Regular Modified Cylindrical Bessel Functions +.. index:: + single: I(x), Bessel Functions + +.. function:: double gsl_sf_bessel_I0 (double x) + int gsl_sf_bessel_I0_e (double x, gsl_sf_result * result) + + These routines compute the regular modified cylindrical Bessel function + of zeroth order, :math:`I_0(x)`. +.. Exceptional Return Values: GSL_EOVRFLW + +.. function:: double gsl_sf_bessel_I1 (double x) + int gsl_sf_bessel_I1_e (double x, gsl_sf_result * result) + + These routines compute the regular modified cylindrical Bessel function + of first order, :math:`I_1(x)`. +.. Exceptional Return Values: GSL_EOVRFLW, GSL_EUNDRFLW + +.. function:: double gsl_sf_bessel_In (int n, double x) + int gsl_sf_bessel_In_e (int n, double x, gsl_sf_result * result) + + These routines compute the regular modified cylindrical Bessel function + of order :data:`n`, :math:`I_n(x)`. +.. Exceptional Return Values: GSL_EOVRFLW, GSL_EUNDRFLW + +.. function:: int gsl_sf_bessel_In_array (int nmin, int nmax, double x, double result_array[]) + + This routine computes the values of the regular modified cylindrical + Bessel functions :math:`I_n(x)` for :math:`n` from :data:`nmin` to + :data:`nmax` inclusive, storing the results in the array + :data:`result_array`. The start of the range :data:`nmin` must be positive + or zero. The values are computed using recurrence relations for + efficiency, and therefore may differ slightly from the exact values. +.. Domain: nmin >=0, nmax >= nmin +.. Conditions: n=nmin,...,nmax, nmin >=0, nmax >= nmin +.. Exceptional Return Values: GSL_EDOM, GSL_EOVRFLW, GSL_EUNDRFLW + +.. function:: double gsl_sf_bessel_I0_scaled (double x) + int gsl_sf_bessel_I0_scaled_e (double x, gsl_sf_result * result) + + These routines compute the scaled regular modified cylindrical Bessel + function of zeroth order :math:`\exp(-|x|) I_0(x)`. +.. Exceptional Return Values: none + +.. function:: double gsl_sf_bessel_I1_scaled (double x) + int gsl_sf_bessel_I1_scaled_e (double x, gsl_sf_result * result) + + These routines compute the scaled regular modified cylindrical Bessel + function of first order :math:`\exp(-|x|) I_1(x)`. +.. Exceptional Return Values: GSL_EUNDRFLW + +.. function:: double gsl_sf_bessel_In_scaled (int n, double x) + int gsl_sf_bessel_In_scaled_e (int n, double x, gsl_sf_result * result) + + These routines compute the scaled regular modified cylindrical Bessel + function of order :data:`n`, :math:`\exp(-|x|) I_n(x)` +.. Exceptional Return Values: GSL_EUNDRFLW + +.. function:: int gsl_sf_bessel_In_scaled_array (int nmin, int nmax, double x, double result_array[]) + + This routine computes the values of the scaled regular cylindrical + Bessel functions :math:`\exp(-|x|) I_n(x)` for :math:`n` from + :data:`nmin` to :data:`nmax` inclusive, storing the results in the array + :data:`result_array`. The start of the range :data:`nmin` must be positive + or zero. The values are computed using recurrence relations for + efficiency, and therefore may differ slightly from the exact values. +.. Domain: nmin >=0, nmax >= nmin +.. Conditions: n=nmin,...,nmax +.. Exceptional Return Values: GSL_EUNDRFLW + +Irregular Modified Cylindrical Bessel Functions +----------------------------------------------- +.. index:: Irregular Modified Cylindrical Bessel Functions +.. index:: + single: K(x), Bessel Functions + +.. function:: double gsl_sf_bessel_K0 (double x) + int gsl_sf_bessel_K0_e (double x, gsl_sf_result * result) + + These routines compute the irregular modified cylindrical Bessel + function of zeroth order, :math:`K_0(x)`, for :math:`x > 0`. +.. Domain: x > 0.0 +.. Exceptional Return Values: GSL_EDOM, GSL_EUNDRFLW + +.. function:: double gsl_sf_bessel_K1 (double x) + int gsl_sf_bessel_K1_e (double x, gsl_sf_result * result) + + These routines compute the irregular modified cylindrical Bessel + function of first order, :math:`K_1(x)`, for :math:`x > 0`. +.. Domain: x > 0.0 +.. Exceptional Return Values: GSL_EDOM, GSL_EOVRFLW, GSL_EUNDRFLW + +.. function:: double gsl_sf_bessel_Kn (int n, double x) + int gsl_sf_bessel_Kn_e (int n, double x, gsl_sf_result * result) + + These routines compute the irregular modified cylindrical Bessel + function of order :data:`n`, :math:`K_n(x)`, for :math:`x > 0`. +.. Domain: x > 0.0 +.. Exceptional Return Values: GSL_EDOM, GSL_EOVRFLW, GSL_EUNDRFLW + +.. function:: int gsl_sf_bessel_Kn_array (int nmin, int nmax, double x, double result_array[]) + + This routine computes the values of the irregular modified cylindrical + Bessel functions :math:`K_n(x)` for :math:`n` from :data:`nmin` to + :data:`nmax` inclusive, storing the results in the array + :data:`result_array`. The start of the range :data:`nmin` must be positive + or zero. The domain of the function is :math:`x>0`. The values are + computed using recurrence relations for efficiency, and therefore + may differ slightly from the exact values. +.. Conditions: n=nmin,...,nmax +.. Domain: x > 0.0, nmin>=0, nmax >= nmin +.. Exceptional Return Values: GSL_EDOM, GSL_EOVRFLW, GSL_EUNDRFLW + +.. function:: double gsl_sf_bessel_K0_scaled (double x) + int gsl_sf_bessel_K0_scaled_e (double x, gsl_sf_result * result) + + These routines compute the scaled irregular modified cylindrical Bessel + function of zeroth order :math:`\exp(x) K_0(x)` for :math:`x>0`. +.. Domain: x > 0.0 +.. Exceptional Return Values: GSL_EDOM + +.. function:: double gsl_sf_bessel_K1_scaled (double x) + int gsl_sf_bessel_K1_scaled_e (double x, gsl_sf_result * result) + + These routines compute the scaled irregular modified cylindrical Bessel + function of first order :math:`\exp(x) K_1(x)` for :math:`x>0`. +.. Domain: x > 0.0 +.. Exceptional Return Values: GSL_EDOM, GSL_EUNDRFLW + +.. function:: double gsl_sf_bessel_Kn_scaled (int n, double x) + int gsl_sf_bessel_Kn_scaled_e (int n, double x, gsl_sf_result * result) + + These routines compute the scaled irregular modified cylindrical Bessel + function of order :data:`n`, :math:`\exp(x) K_n(x)`, for :math:`x>0`. +.. Domain: x > 0.0 +.. Exceptional Return Values: GSL_EDOM, GSL_EUNDRFLW + +.. function:: int gsl_sf_bessel_Kn_scaled_array (int nmin, int nmax, double x, double result_array[]) + + This routine computes the values of the scaled irregular cylindrical + Bessel functions :math:`\exp(x) K_n(x)` for :math:`n` from :data:`nmin` to + :data:`nmax` inclusive, storing the results in the array + :data:`result_array`. The start of the range :data:`nmin` must be positive + or zero. The domain of the function is :math:`x>0`. The values are + computed using recurrence relations for efficiency, and therefore + may differ slightly from the exact values. +.. Domain: x > 0.0, nmin >=0, nmax >= nmin +.. Conditions: n=nmin,...,nmax +.. Exceptional Return Values: GSL_EDOM, GSL_EUNDRFLW + +Regular Spherical Bessel Functions +---------------------------------- +.. index:: Spherical Bessel Functions +.. index:: Regular Spherical Bessel Functions +.. index:: + single: j(x), Bessel Functions + +.. function:: double gsl_sf_bessel_j0 (double x) + int gsl_sf_bessel_j0_e (double x, gsl_sf_result * result) + + These routines compute the regular spherical Bessel function of zeroth + order, :math:`j_0(x) = \sin(x)/x`. +.. Exceptional Return Values: none + +.. function:: double gsl_sf_bessel_j1 (double x) + int gsl_sf_bessel_j1_e (double x, gsl_sf_result * result) + + These routines compute the regular spherical Bessel function of first + order, :math:`j_1(x) = (\sin(x)/x - \cos(x))/x`. +.. Exceptional Return Values: GSL_EUNDRFLW + +.. function:: double gsl_sf_bessel_j2 (double x) + int gsl_sf_bessel_j2_e (double x, gsl_sf_result * result) + + These routines compute the regular spherical Bessel function of second + order, :math:`j_2(x) = ((3/x^2 - 1)\sin(x) - 3\cos(x)/x)/x`. +.. Exceptional Return Values: GSL_EUNDRFLW + +.. function:: double gsl_sf_bessel_jl (int l, double x) + int gsl_sf_bessel_jl_e (int l, double x, gsl_sf_result * result) + + These routines compute the regular spherical Bessel function of + order :data:`l`, :math:`j_l(x)`, for + :math:`l \geq 0` and :math:`x \geq 0`. +.. Domain: l >= 0, x >= 0.0 +.. Exceptional Return Values: GSL_EDOM, GSL_EUNDRFLW + +.. function:: int gsl_sf_bessel_jl_array (int lmax, double x, double result_array[]) + + This routine computes the values of the regular spherical Bessel + functions :math:`j_l(x)` for :math:`l` from 0 to :data:`lmax` + inclusive for + :math:`lmax \geq 0` and + :math:`x \geq 0`, storing the results in the array :data:`result_array`. + The values are computed using recurrence relations for + efficiency, and therefore may differ slightly from the exact values. +.. Domain: lmax >= 0 +.. Conditions: l=0,1,...,lmax +.. Exceptional Return Values: GSL_EDOM, GSL_EUNDRFLW + +.. function:: int gsl_sf_bessel_jl_steed_array (int lmax, double x, double * result_array) + + This routine uses Steed's method to compute the values of the regular + spherical Bessel functions :math:`j_l(x)` for :math:`l` from 0 to + :data:`lmax` inclusive for + :math:`lmax \geq 0` and + :math:`x \geq 0`, storing the results in the array + :data:`result_array`. + The Steed/Barnett algorithm is described in Comp. Phys. Comm. 21, + 297 (1981). Steed's method is more stable than the + recurrence used in the other functions but is also slower. +.. Domain: lmax >= 0 +.. Conditions: l=0,1,...,lmax +.. Exceptional Return Values: GSL_EDOM, GSL_EUNDRFLW + +Irregular Spherical Bessel Functions +------------------------------------ +.. index:: Irregular Spherical Bessel Functions +.. index:: + single: y(x), Bessel Functions + +.. function:: double gsl_sf_bessel_y0 (double x) + int gsl_sf_bessel_y0_e (double x, gsl_sf_result * result) + + These routines compute the irregular spherical Bessel function of zeroth + order, :math:`y_0(x) = -\cos(x)/x`. +.. Exceptional Return Values: none + +.. function:: double gsl_sf_bessel_y1 (double x) + int gsl_sf_bessel_y1_e (double x, gsl_sf_result * result) + + These routines compute the irregular spherical Bessel function of first + order, :math:`y_1(x) = -(\cos(x)/x + \sin(x))/x`. +.. Exceptional Return Values: GSL_EUNDRFLW + +.. function:: double gsl_sf_bessel_y2 (double x) + int gsl_sf_bessel_y2_e (double x, gsl_sf_result * result) + + These routines compute the irregular spherical Bessel function of second + order, :math:`y_2(x) = (-3/x^3 + 1/x)\cos(x) - (3/x^2)\sin(x)`. +.. Exceptional Return Values: GSL_EUNDRFLW + +.. function:: double gsl_sf_bessel_yl (int l, double x) + int gsl_sf_bessel_yl_e (int l, double x, gsl_sf_result * result) + + These routines compute the irregular spherical Bessel function of + order :data:`l`, :math:`y_l(x)`, for + :math:`l \geq 0`. +.. Exceptional Return Values: GSL_EUNDRFLW + +.. function:: int gsl_sf_bessel_yl_array (int lmax, double x, double result_array[]) + + This routine computes the values of the irregular spherical Bessel + functions :math:`y_l(x)` for :math:`l` from 0 to :data:`lmax` + inclusive for + :math:`lmax \geq 0`, storing the results in the array :data:`result_array`. + The values are computed using recurrence relations for + efficiency, and therefore may differ slightly from the exact values. +.. Domain: lmax >= 0 +.. Conditions: l=0,1,...,lmax +.. Exceptional Return Values: GSL_EUNDRFLW + +Regular Modified Spherical Bessel Functions +------------------------------------------- +.. index:: Modified Spherical Bessel Functions +.. index:: Regular Modified Spherical Bessel Functions +.. index:: + single: i(x), Bessel Functions + +The regular modified spherical Bessel functions :math:`i_l(x)` +are related to the modified Bessel functions of fractional order, +:math:`i_l(x) = \sqrt{\pi/(2x)} I_{l+1/2}(x)` + +.. function:: double gsl_sf_bessel_i0_scaled (double x) + int gsl_sf_bessel_i0_scaled_e (double x, gsl_sf_result * result) + + These routines compute the scaled regular modified spherical Bessel + function of zeroth order, :math:`\exp(-|x|) i_0(x)`. +.. Exceptional Return Values: none + +.. function:: double gsl_sf_bessel_i1_scaled (double x) + int gsl_sf_bessel_i1_scaled_e (double x, gsl_sf_result * result) + + These routines compute the scaled regular modified spherical Bessel + function of first order, :math:`\exp(-|x|) i_1(x)`. +.. Exceptional Return Values: GSL_EUNDRFLW + +.. function:: double gsl_sf_bessel_i2_scaled (double x) + int gsl_sf_bessel_i2_scaled_e (double x, gsl_sf_result * result) + + These routines compute the scaled regular modified spherical Bessel + function of second order, :math:`\exp(-|x|) i_2(x)` +.. Exceptional Return Values: GSL_EUNDRFLW + +.. function:: double gsl_sf_bessel_il_scaled (int l, double x) + int gsl_sf_bessel_il_scaled_e (int l, double x, gsl_sf_result * result) + + These routines compute the scaled regular modified spherical Bessel + function of order :data:`l`, :math:`\exp(-|x|) i_l(x)` +.. Domain: l >= 0 +.. Exceptional Return Values: GSL_EDOM, GSL_EUNDRFLW + +.. function:: int gsl_sf_bessel_il_scaled_array (int lmax, double x, double result_array[]) + + This routine computes the values of the scaled regular modified + spherical Bessel functions :math:`\exp(-|x|) i_l(x)` for :math:`l` from + 0 to :data:`lmax` inclusive for + :math:`lmax \geq 0`, storing the results in + the array :data:`result_array`. + The values are computed using recurrence relations for + efficiency, and therefore may differ slightly from the exact values. +.. Domain: lmax >= 0 +.. Conditions: l=0,1,...,lmax +.. Exceptional Return Values: GSL_EUNDRFLW + +Irregular Modified Spherical Bessel Functions +--------------------------------------------- +.. index:: Irregular Modified Spherical Bessel Functions +.. index:: + single: k(x), Bessel Functions + +The irregular modified spherical Bessel functions :math:`k_l(x)` +are related to the irregular modified Bessel functions of fractional order, +:math:`k_l(x) = \sqrt{\pi/(2x)} K_{l+1/2}(x)`. + +.. function:: double gsl_sf_bessel_k0_scaled (double x) + int gsl_sf_bessel_k0_scaled_e (double x, gsl_sf_result * result) + + These routines compute the scaled irregular modified spherical Bessel + function of zeroth order, :math:`\exp(x) k_0(x)`, for :math:`x>0`. +.. Domain: x > 0.0 +.. Exceptional Return Values: GSL_EDOM, GSL_EUNDRFLW + +.. function:: double gsl_sf_bessel_k1_scaled (double x) + int gsl_sf_bessel_k1_scaled_e (double x, gsl_sf_result * result) + + These routines compute the scaled irregular modified spherical Bessel + function of first order, :math:`\exp(x) k_1(x)`, for :math:`x>0`. +.. Domain: x > 0.0 +.. Exceptional Return Values: GSL_EDOM, GSL_EUNDRFLW, GSL_EOVRFLW + +.. function:: double gsl_sf_bessel_k2_scaled (double x) + int gsl_sf_bessel_k2_scaled_e (double x, gsl_sf_result * result) + + These routines compute the scaled irregular modified spherical Bessel + function of second order, :math:`\exp(x) k_2(x)`, for :math:`x>0`. +.. Domain: x > 0.0 +.. Exceptional Return Values: GSL_EDOM, GSL_EUNDRFLW, GSL_EOVRFLW + +.. function:: double gsl_sf_bessel_kl_scaled (int l, double x) + int gsl_sf_bessel_kl_scaled_e (int l, double x, gsl_sf_result * result) + + These routines compute the scaled irregular modified spherical Bessel + function of order :data:`l`, :math:`\exp(x) k_l(x)`, for :math:`x>0`. +.. Domain: x > 0.0 +.. Exceptional Return Values: GSL_EDOM, GSL_EUNDRFLW + +.. function:: int gsl_sf_bessel_kl_scaled_array (int lmax, double x, double result_array[]) + + This routine computes the values of the scaled irregular modified + spherical Bessel functions :math:`\exp(x) k_l(x)` for :math:`l` from + 0 to :data:`lmax` inclusive for + :math:`lmax \geq 0` and :math:`x>0`, storing the results in + the array :data:`result_array`. + The values are computed using recurrence relations for + efficiency, and therefore may differ slightly from the exact values. +.. Domain: lmax >= 0 +.. Conditions: l=0,1,...,lmax +.. Exceptional Return Values: GSL_EDOM, GSL_EUNDRFLW + +Regular Bessel Function---Fractional Order +------------------------------------------ +.. index:: + single: Fractional Order Bessel Functions + single: Bessel Functions, Fractional Order + single: Regular Bessel Functions, Fractional Order + +.. function:: double gsl_sf_bessel_Jnu (double nu, double x) + int gsl_sf_bessel_Jnu_e (double nu, double x, gsl_sf_result * result) + + These routines compute the regular cylindrical Bessel function of + fractional order :math:`\nu`, :math:`J_\nu(x)`. +.. Exceptional Return Values: GSL_EDOM, GSL_EUNDRFLW + +.. function:: int gsl_sf_bessel_sequence_Jnu_e (double nu, gsl_mode_t mode, size_t size, double v[]) + + This function computes the regular cylindrical Bessel function of + fractional order :math:`\nu`, :math:`J_\nu(x)`, evaluated at a series of + :math:`x` values. The array :data:`v` of length :data:`size` contains the + :math:`x` values. They are assumed to be strictly ordered and positive. + The array is over-written with the values of :math:`J_\nu(x_i)`. +.. Exceptional Return Values: GSL_EDOM, GSL_EINVAL + +Irregular Bessel Functions---Fractional Order +--------------------------------------------- + +.. function:: double gsl_sf_bessel_Ynu (double nu, double x) + int gsl_sf_bessel_Ynu_e (double nu, double x, gsl_sf_result * result) + + These routines compute the irregular cylindrical Bessel function of + fractional order :math:`\nu`, :math:`Y_\nu(x)`. +.. Exceptional Return Values: + +Regular Modified Bessel Functions---Fractional Order +---------------------------------------------------- +.. index:: + single: Modified Bessel Functions, Fractional Order + single: Regular Modified Bessel Functions, Fractional Order + +.. function:: double gsl_sf_bessel_Inu (double nu, double x) + int gsl_sf_bessel_Inu_e (double nu, double x, gsl_sf_result * result) + + These routines compute the regular modified Bessel function of + fractional order :math:`\nu`, :math:`I_\nu(x)` for :math:`x>0`, + :math:`\nu>0`. +.. Domain: x >= 0, nu >= 0 +.. Exceptional Return Values: GSL_EDOM, GSL_EOVRFLW + +.. function:: double gsl_sf_bessel_Inu_scaled (double nu, double x) + int gsl_sf_bessel_Inu_scaled_e (double nu, double x, gsl_sf_result * result) + + These routines compute the scaled regular modified Bessel function of + fractional order :math:`\nu`, :math:`\exp(-|x|)I_\nu(x)` for :math:`x>0`, + :math:`\nu>0`. +.. Domain: x >= 0, nu >= 0 +.. Exceptional Return Values: GSL_EDOM + +Irregular Modified Bessel Functions---Fractional Order +------------------------------------------------------ +.. index:: + single: Irregular Modified Bessel Functions, Fractional Order + +.. function:: double gsl_sf_bessel_Knu (double nu, double x) + int gsl_sf_bessel_Knu_e (double nu, double x, gsl_sf_result * result) + + These routines compute the irregular modified Bessel function of + fractional order :math:`\nu`, :math:`K_\nu(x)` for :math:`x>0`, + :math:`\nu>0`. +.. Domain: x > 0, nu >= 0 +.. Exceptional Return Values: GSL_EDOM, GSL_EUNDRFLW + +.. function:: double gsl_sf_bessel_lnKnu (double nu, double x) + int gsl_sf_bessel_lnKnu_e (double nu, double x, gsl_sf_result * result) + + These routines compute the logarithm of the irregular modified Bessel + function of fractional order :math:`\nu`, :math:`\ln(K_\nu(x))` for + :math:`x>0`, :math:`\nu>0`. +.. Domain: x > 0, nu >= 0 +.. Exceptional Return Values: GSL_EDOM + +.. function:: double gsl_sf_bessel_Knu_scaled (double nu, double x) + int gsl_sf_bessel_Knu_scaled_e (double nu, double x, gsl_sf_result * result) + + These routines compute the scaled irregular modified Bessel function of + fractional order :math:`\nu`, :math:`\exp(+|x|) K_\nu(x)` for :math:`x>0`, + :math:`\nu>0`. +.. Domain: x > 0, nu >= 0 +.. Exceptional Return Values: GSL_EDOM + +Zeros of Regular Bessel Functions +--------------------------------- +.. index:: + single: Zeros of Regular Bessel Functions + single: Regular Bessel Functions, Zeros of + +.. function:: double gsl_sf_bessel_zero_J0 (unsigned int s) + int gsl_sf_bessel_zero_J0_e (unsigned int s, gsl_sf_result * result) + + These routines compute the location of the :data:`s`-th positive zero of + the Bessel function :math:`J_0(x)`. +.. Exceptional Return Values: + +.. function:: double gsl_sf_bessel_zero_J1 (unsigned int s) + int gsl_sf_bessel_zero_J1_e (unsigned int s, gsl_sf_result * result) + + These routines compute the location of the :data:`s`-th positive zero of + the Bessel function :math:`J_1(x)`. +.. Exceptional Return Values: + +.. function:: double gsl_sf_bessel_zero_Jnu (double nu, unsigned int s) + int gsl_sf_bessel_zero_Jnu_e (double nu, unsigned int s, gsl_sf_result * result) + + These routines compute the location of the :data:`s`-th positive zero of + the Bessel function :math:`J_\nu(x)`. The current implementation does not + support negative values of :data:`nu`. +.. Exceptional Return Values: diff --git a/gsl-2.5/doc/specfunc-clausen.rst b/gsl-2.5/doc/specfunc-clausen.rst new file mode 100644 index 00000000..e790d958 --- /dev/null +++ b/gsl-2.5/doc/specfunc-clausen.rst @@ -0,0 +1,21 @@ +.. index:: Clausen functions + +The Clausen function is defined by the following integral, + +.. only:: not texinfo + + .. math:: Cl_2(x) = - \int_0^x dt \log{\left( 2 \sin{(t/2)} \right)} + +.. only:: texinfo + + Cl_2(x) = - \int_0^x dt log( 2 \sin(t/2) ) + +It is related to the :ref:`dilogarithm ` by +:math:`Cl_2(\theta) = \Im Li_2(\exp(i\theta))`. +The Clausen functions are declared in the header file +:file:`gsl_sf_clausen.h`. + +.. function:: double gsl_sf_clausen (double x) + int gsl_sf_clausen_e (double x, gsl_sf_result * result) + + These routines compute the Clausen integral :math:`Cl_2(x)`. diff --git a/gsl-2.5/doc/specfunc-coulomb.rst b/gsl-2.5/doc/specfunc-coulomb.rst new file mode 100644 index 00000000..3b3e7a5e --- /dev/null +++ b/gsl-2.5/doc/specfunc-coulomb.rst @@ -0,0 +1,127 @@ +.. index:: + single: Coulomb wave functions + single: hydrogen atom + +The prototypes of the Coulomb functions are declared in the header file +:file:`gsl_sf_coulomb.h`. Both bound state and scattering solutions are +available. + +Normalized Hydrogenic Bound States +---------------------------------- + +.. function:: double gsl_sf_hydrogenicR_1 (double Z, double r) + int gsl_sf_hydrogenicR_1_e (double Z, double r, gsl_sf_result * result) + + These routines compute the lowest-order normalized hydrogenic bound + state radial wavefunction + :math:`R_1 := 2Z \sqrt{Z} \exp(-Z r)`. + +.. function:: double gsl_sf_hydrogenicR (int n, int l, double Z, double r) + int gsl_sf_hydrogenicR_e (int n, int l, double Z, double r, gsl_sf_result * result) + + These routines compute the :data:`n`-th normalized hydrogenic bound state + radial wavefunction, + + .. only:: not texinfo + + .. math:: R_n := {2 Z^{3/2} \over n^2} \left({2Z r \over n}\right)^l \sqrt{(n-l-1)! \over (n+l)!} \exp(-Z r/n) L^{2l+1}_{n-l-1}(2Z r / n). + + .. only:: texinfo + + | R_n := 2 (Z^{3/2}/n^2) \sqrt{(n-l-1)!/(n+l)!} \exp(-Z r/n) (2Zr/n)^l + | L^{2l+1}_{n-l-1}(2Zr/n). + + where :math:`L^a_b(x)` is the :ref:`generalized Laguerre polynomial `. + The normalization is chosen such that the wavefunction :math:`\psi` is + given by :math:`\psi(n,l,r) = R_n Y_{lm}`. + +Coulomb Wave Functions +---------------------- + +The Coulomb wave functions :math:`F_L(\eta,x)`, :math:`G_L(\eta,x)` are +described in Abramowitz & Stegun, Chapter 14. Because there can be a +large dynamic range of values for these functions, overflows are handled +gracefully. If an overflow occurs, :code:`GSL_EOVRFLW` is signalled and +exponent(s) are returned through the modifiable parameters :data:`exp_F`, +:data:`exp_G`. The full solution can be reconstructed from the following +relations, + +.. only:: not texinfo + + .. math:: + + F_L(\eta,x) &= fc[k_L] * \exp(exp_F) \\ + G_L(\eta,x) &= gc[k_L] * \exp(exp_G) + + .. math:: + + F_L'(\eta,x) &= fcp[k_L] * \exp(exp_F) \\ + G_L'(\eta,x) &= gcp[k_L] * \exp(exp_G) + +.. only:: texinfo + + | F_L(\eta,x) = fc[k_L] * \exp(exp_F) + | G_L(\eta,x) = gc[k_L] * \exp(exp_G) + | + | F_L'(\eta,x) = fcp[k_L] * \exp(exp_F) + | G_L'(\eta,x) = gcp[k_L] * \exp(exp_G) + +.. function:: int gsl_sf_coulomb_wave_FG_e (double eta, double x, double L_F, int k, gsl_sf_result * F, gsl_sf_result * Fp, gsl_sf_result * G, gsl_sf_result * Gp, double * exp_F, double * exp_G) + + This function computes the Coulomb wave functions :math:`F_L(\eta,x)`, + :math:`G_{L-k}(\eta,x)` and their derivatives + :math:`F'_L(\eta,x)`, + :math:`G'_{L-k}(\eta,x)` + with respect to :math:`x`. The parameters are restricted to :math:`L, L-k > -1/2`, + :math:`x > 0` and integer :math:`k`. Note that :math:`L` + itself is not restricted to being an integer. The results are stored in + the parameters F, G for the function values and :data:`Fp`, + :data:`Gp` for the derivative values. If an overflow occurs, + :code:`GSL_EOVRFLW` is returned and scaling exponents are stored in + the modifiable parameters :data:`exp_F`, :data:`exp_G`. + +.. function:: int gsl_sf_coulomb_wave_F_array (double L_min, int kmax, double eta, double x, double fc_array[], double * F_exponent) + + This function computes the Coulomb wave function :math:`F_L(\eta,x)` for + :math:`L = Lmin \dots Lmin + kmax`, storing the results in :data:`fc_array`. + In the case of overflow the exponent is stored in :data:`F_exponent`. + +.. function:: int gsl_sf_coulomb_wave_FG_array (double L_min, int kmax, double eta, double x, double fc_array[], double gc_array[], double * F_exponent, double * G_exponent) + + This function computes the functions :math:`F_L(\eta,x)`, + :math:`G_L(\eta,x)` for :math:`L = Lmin \dots Lmin + kmax` storing the + results in :data:`fc_array` and :data:`gc_array`. In the case of overflow the + exponents are stored in :data:`F_exponent` and :data:`G_exponent`. + +.. function:: int gsl_sf_coulomb_wave_FGp_array (double L_min, int kmax, double eta, double x, double fc_array[], double fcp_array[], double gc_array[], double gcp_array[], double * F_exponent, double * G_exponent) + + This function computes the functions :math:`F_L(\eta,x)`, + :math:`G_L(\eta,x)` and their derivatives :math:`F'_L(\eta,x)`, + :math:`G'_L(\eta,x)` for :math:`L = Lmin \dots Lmin + kmax` storing the + results in :data:`fc_array`, :data:`gc_array`, :data:`fcp_array` and :data:`gcp_array`. + In the case of overflow the exponents are stored in :data:`F_exponent` + and :data:`G_exponent`. + +.. function:: int gsl_sf_coulomb_wave_sphF_array (double L_min, int kmax, double eta, double x, double fc_array[], double F_exponent[]) + + This function computes the Coulomb wave function divided by the argument + :math:`F_L(\eta, x)/x` for :math:`L = Lmin \dots Lmin + kmax`, storing the + results in :data:`fc_array`. In the case of overflow the exponent is + stored in :data:`F_exponent`. This function reduces to spherical Bessel + functions in the limit :math:`\eta \to 0`. + +Coulomb Wave Function Normalization Constant +-------------------------------------------- + +The Coulomb wave function normalization constant is defined in +Abramowitz 14.1.7. + +.. function:: int gsl_sf_coulomb_CL_e (double L, double eta, gsl_sf_result * result) + + This function computes the Coulomb wave function normalization constant + :math:`C_L(\eta)` for :math:`L > -1`. + +.. function:: int gsl_sf_coulomb_CL_array (double Lmin, int kmax, double eta, double cl[]) + + This function computes the Coulomb wave function normalization constant + :math:`C_L(\eta)` for :math:`L = Lmin \dots Lmin + kmax`, :math:`Lmin > -1`. diff --git a/gsl-2.5/doc/specfunc-coupling.rst b/gsl-2.5/doc/specfunc-coupling.rst new file mode 100644 index 00000000..5f44ce64 --- /dev/null +++ b/gsl-2.5/doc/specfunc-coupling.rst @@ -0,0 +1,101 @@ +.. index:: + single: coupling coefficients + single: 3-j symbols + single: 6-j symbols + single: 9-j symbols + single: Wigner coefficients + single: Racah coefficients + +The Wigner 3-j, 6-j and 9-j symbols give the coupling coefficients for +combined angular momentum vectors. Since the arguments of the standard +coupling coefficient functions are integer or half-integer, the +arguments of the following functions are, by convention, integers equal +to twice the actual spin value. For information on the 3-j coefficients +see Abramowitz & Stegun, Section 27.9. The functions described in this +section are declared in the header file :file:`gsl_sf_coupling.h`. + +3-j Symbols +----------- + +.. function:: double gsl_sf_coupling_3j (int two_ja, int two_jb, int two_jc, int two_ma, int two_mb, int two_mc) + int gsl_sf_coupling_3j_e (int two_ja, int two_jb, int two_jc, int two_ma, int two_mb, int two_mc, gsl_sf_result * result) + + These routines compute the Wigner 3-j coefficient, + + .. only:: not texinfo + + .. math:: + + \left( + \begin{array}{ccc} + ja & jb & jc \\ + ma & mb & mc + \end{array} + \right) + + .. only:: texinfo + + | ( ja jb jc ) + | ( ma mb mc ) + + where the arguments are given in half-integer units, :math:`ja` = + :data:`two_ja`/2, :math:`ma` = :data:`two_ma`/2, etc. +.. Exceptional Return Values: GSL_EDOM, GSL_EOVRFLW + +6-j Symbols +----------- + +.. function:: double gsl_sf_coupling_6j (int two_ja, int two_jb, int two_jc, int two_jd, int two_je, int two_jf) + int gsl_sf_coupling_6j_e (int two_ja, int two_jb, int two_jc, int two_jd, int two_je, int two_jf, gsl_sf_result * result) + + These routines compute the Wigner 6-j coefficient, + + .. only:: not texinfo + + .. math:: + + \left\{ + \begin{array}{ccc} + ja & jb & jc \\ + jd & je & jf + \end{array} + \right\} + + .. only:: texinfo + + | { ja jb jc } + | { jd je jf } + + where the arguments are given in half-integer units, :math:`ja` = + :data:`two_ja`/2, :math:`ma` = :data:`two_ma`/2, etc. +.. Exceptional Return Values: GSL_EDOM, GSL_EOVRFLW + +9-j Symbols +----------- + +.. function:: double gsl_sf_coupling_9j (int two_ja, int two_jb, int two_jc, int two_jd, int two_je, int two_jf, int two_jg, int two_jh, int two_ji) + int gsl_sf_coupling_9j_e (int two_ja, int two_jb, int two_jc, int two_jd, int two_je, int two_jf, int two_jg, int two_jh, int two_ji, gsl_sf_result * result) + + These routines compute the Wigner 9-j coefficient, + + .. only:: not texinfo + + .. math:: + + \left\{ + \begin{array}{ccc} + ja & jb & jc \\ + jd & je & jf \\ + jg & jh & ji + \end{array} + \right\} + + .. only:: texinfo + + | { ja jb jc } + | { jd je jf } + | { jg jh ji } + + where the arguments are given in half-integer units, :math:`ja` = + :data:`two_ja`/2, :math:`ma` = :data:`two_ma`/2, etc. +.. Exceptional Return Values: GSL_EDOM, GSL_EOVRFLW diff --git a/gsl-2.5/doc/specfunc-dawson.rst b/gsl-2.5/doc/specfunc-dawson.rst new file mode 100644 index 00000000..ee143e7c --- /dev/null +++ b/gsl-2.5/doc/specfunc-dawson.rst @@ -0,0 +1,15 @@ +.. index:: Dawson function + +The Dawson integral is defined by + +.. math:: \exp(-x^2) \int_0^x dt \exp(t^2) + +A table of Dawson's integral can be found in Abramowitz & +Stegun, Table 7.5. The Dawson functions are declared in the header file +:file:`gsl_sf_dawson.h`. + +.. function:: double gsl_sf_dawson (double x) + int gsl_sf_dawson_e (double x, gsl_sf_result * result) + + These routines compute the value of Dawson's integral for :data:`x`. +.. Exceptional Return Values: GSL_EUNDRFLW diff --git a/gsl-2.5/doc/specfunc-debye.rst b/gsl-2.5/doc/specfunc-debye.rst new file mode 100644 index 00000000..8e8a03a9 --- /dev/null +++ b/gsl-2.5/doc/specfunc-debye.rst @@ -0,0 +1,51 @@ +.. index:: Debye functions + +The Debye functions :math:`D_n(x)` are defined by the following integral, + +.. only:: not texinfo + + .. math:: D_n(x) = {n \over x^n} \int_0^x dt {t^n \over e^t - 1} + +.. only:: texinfo + + .. math:: D_n(x) = n/x^n \int_0^x dt (t^n/(e^t - 1)) + +For further information see Abramowitz & +Stegun, Section 27.1. The Debye functions are declared in the header +file :file:`gsl_sf_debye.h`. + +.. function:: double gsl_sf_debye_1 (double x) + int gsl_sf_debye_1_e (double x, gsl_sf_result * result) + + These routines compute the first-order Debye function :math:`D_1(x)`. +.. Exceptional Return Values: GSL_EDOM + +.. function:: double gsl_sf_debye_2 (double x) + int gsl_sf_debye_2_e (double x, gsl_sf_result * result) + + These routines compute the second-order Debye function :math:`D_2(x)`. +.. Exceptional Return Values: GSL_EDOM, GSL_EUNDRFLW + +.. function:: double gsl_sf_debye_3 (double x) + int gsl_sf_debye_3_e (double x, gsl_sf_result * result) + + These routines compute the third-order Debye function :math:`D_3(x)`. +.. Exceptional Return Values: GSL_EDOM, GSL_EUNDRFLW + +.. function:: double gsl_sf_debye_4 (double x) + int gsl_sf_debye_4_e (double x, gsl_sf_result * result) + + These routines compute the fourth-order Debye function :math:`D_4(x)`. +.. Exceptional Return Values: GSL_EDOM, GSL_EUNDRFLW + +.. function:: double gsl_sf_debye_5 (double x) + int gsl_sf_debye_5_e (double x, gsl_sf_result * result) + + These routines compute the fifth-order Debye function :math:`D_5(x)`. +.. Exceptional Return Values: GSL_EDOM, GSL_EUNDRFLW + +.. function:: double gsl_sf_debye_6 (double x) + int gsl_sf_debye_6_e (double x, gsl_sf_result * result) + + These routines compute the sixth-order Debye function :math:`D_6(x)`. +.. Exceptional Return Values: GSL_EDOM, GSL_EUNDRFLW diff --git a/gsl-2.5/doc/specfunc-dilog.rst b/gsl-2.5/doc/specfunc-dilog.rst new file mode 100644 index 00000000..aee52f97 --- /dev/null +++ b/gsl-2.5/doc/specfunc-dilog.rst @@ -0,0 +1,41 @@ +.. index:: dilogarithm + +The dilogarithm is defined as + +.. only:: not texinfo + + .. math:: Li_2(z) = - \int_0^z ds {\log{(1-s)} \over s} + +.. only:: texinfo + + .. math:: Li_2(z) = - \int_0^z ds log(1-s) / s + +The functions described in this section are declared in the header file +:file:`gsl_sf_dilog.h`. + +Real Argument +------------- + +.. function:: double gsl_sf_dilog (double x) + int gsl_sf_dilog_e (double x, gsl_sf_result * result) + + These routines compute the dilogarithm for a real argument. In Lewin's + notation this is :math:`Li_2(x)`, the real part of the dilogarithm of a + real :math:`x`. It is defined by the integral representation + + .. math:: Li_2(x) = - \Re \int_0^x ds \log(1-s) / s + + Note that :math:`\Im(Li_2(x)) = 0` for + :math:`x \le 1`, and :math:`-\pi\log(x)` for :math:`x > 1`. + + Note that Abramowitz & Stegun refer to the Spence integral + :math:`S(x) = Li_2(1 - x)` as the dilogarithm rather than :math:`Li_2(x)`. + +Complex Argument +---------------- + +.. function:: int gsl_sf_complex_dilog_e (double r, double theta, gsl_sf_result * result_re, gsl_sf_result * result_im) + + This function computes the full complex-valued dilogarithm for the + complex argument :math:`z = r \exp(i \theta)`. The real and imaginary + parts of the result are returned in :data:`result_re`, :data:`result_im`. diff --git a/gsl-2.5/doc/specfunc-elementary.rst b/gsl-2.5/doc/specfunc-elementary.rst new file mode 100644 index 00000000..7c56f94e --- /dev/null +++ b/gsl-2.5/doc/specfunc-elementary.rst @@ -0,0 +1,21 @@ +.. index:: elementary operations +.. index:: multiplication + +The following functions allow for the propagation of errors when +combining quantities by multiplication. The functions are declared in +the header file :file:`gsl_sf_elementary.h`. + +.. function:: double gsl_sf_multiply (double x, double y) + int gsl_sf_multiply_e (double x, double y, gsl_sf_result * result) + + This function multiplies :data:`x` and :data:`y` storing the product and its + associated error in :data:`result`. +.. Exceptional Return Values: GSL_EOVRFLW, GSL_EUNDRFLW + +.. function:: int gsl_sf_multiply_err_e (double x, double dx, double y, double dy, gsl_sf_result * result) + + This function multiplies :data:`x` and :data:`y` with associated absolute + errors :data:`dx` and :data:`dy`. The product + :math:`xy \pm xy \sqrt{(dx/x)^2 +(dy/y)^2}` + is stored in :data:`result`. +.. Exceptional Return Values: GSL_EOVRFLW, GSL_EUNDRFLW diff --git a/gsl-2.5/doc/specfunc-ellint.rst b/gsl-2.5/doc/specfunc-ellint.rst new file mode 100644 index 00000000..f761461d --- /dev/null +++ b/gsl-2.5/doc/specfunc-ellint.rst @@ -0,0 +1,176 @@ +.. index:: elliptic integrals + +The functions described in this section are declared in the header +file :file:`gsl_sf_ellint.h`. Further information about the elliptic +integrals can be found in Abramowitz & Stegun, Chapter 17. + +Definition of Legendre Forms +---------------------------- +.. index:: Legendre forms of elliptic integrals + +The Legendre forms of elliptic integrals :math:`F(\phi,k)`, +:math:`E(\phi,k)` and :math:`\Pi(\phi,k,n)` are defined by, + +.. only:: not texinfo + + .. math:: + + F(\phi,k) &= \int_0^\phi dt {1 \over \sqrt{(1 - k^2 \sin^2(t))}} \\ + E(\phi,k) &= \int_0^\phi dt \sqrt{(1 - k^2 \sin^2(t))} \\ + \Pi(\phi,k,n) &= \int_0^\phi dt {1 \over (1 + n \sin^2(t)) \sqrt{1 - k^2 \sin^2(t)}} + +.. only:: texinfo + + :: + + F(\phi,k) = \int_0^\phi dt 1/\sqrt((1 - k^2 \sin^2(t))) + E(\phi,k) = \int_0^\phi dt \sqrt((1 - k^2 \sin^2(t))) + Pi(\phi,k,n) = \int_0^\phi dt 1/((1 + n \sin^2(t))\sqrt(1 - k^2 \sin^2(t))) + +The complete Legendre forms are denoted by :math:`K(k) = F(\pi/2, k)` and +:math:`E(k) = E(\pi/2, k)`. + +The notation used here is based on Carlson, "Numerische +Mathematik" 33 (1979) 1 and differs slightly from that used by +Abramowitz & Stegun, where the functions are given in terms of the +parameter :math:`m = k^2` and :math:`n` is replaced by :math:`-n`. + +Definition of Carlson Forms +--------------------------- +.. index:: Carlson forms of Elliptic integrals + +The Carlson symmetric forms of elliptical integrals :math:`RC(x,y)`, +:math:`RD(x,y,z)`, :math:`RF(x,y,z)` and :math:`RJ(x,y,z,p)` are defined +by, + +.. only:: not texinfo + + .. math:: + + RC(x,y) &= 1/2 \int_0^\infty dt (t+x)^{-1/2} (t+y)^{-1} \\ + RD(x,y,z) &= 3/2 \int_0^\infty dt (t+x)^{-1/2} (t+y)^{-1/2} (t+z)^{-3/2} \\ + RF(x,y,z) &= 1/2 \int_0^\infty dt (t+x)^{-1/2} (t+y)^{-1/2} (t+z)^{-1/2} \\ + RJ(x,y,z,p) &= 3/2 \int_0^\infty dt (t+x)^{-1/2} (t+y)^{-1/2} (t+z)^{-1/2} (t+p)^{-1} + +.. only:: texinfo + + :: + + RC(x,y) = 1/2 \int_0^\infty dt (t+x)^(-1/2) (t+y)^(-1) + RD(x,y,z) = 3/2 \int_0^\infty dt (t+x)^(-1/2) (t+y)^(-1/2) (t+z)^(-3/2) + RF(x,y,z) = 1/2 \int_0^\infty dt (t+x)^(-1/2) (t+y)^(-1/2) (t+z)^(-1/2) + RJ(x,y,z,p) = 3/2 \int_0^\infty dt + (t+x)^(-1/2) (t+y)^(-1/2) (t+z)^(-1/2) (t+p)^(-1) + +Legendre Form of Complete Elliptic Integrals +-------------------------------------------- + +.. function:: double gsl_sf_ellint_Kcomp (double k, gsl_mode_t mode) + int gsl_sf_ellint_Kcomp_e (double k, gsl_mode_t mode, gsl_sf_result * result) + + These routines compute the complete elliptic integral :math:`K(k)` to + the accuracy specified by the mode variable :data:`mode`. + Note that Abramowitz & Stegun define this function in terms of the + parameter :math:`m = k^2`. +.. Exceptional Return Values: GSL_EDOM + +.. function:: double gsl_sf_ellint_Ecomp (double k, gsl_mode_t mode) + int gsl_sf_ellint_Ecomp_e (double k, gsl_mode_t mode, gsl_sf_result * result) + + These routines compute the complete elliptic integral :math:`E(k)` to the + accuracy specified by the mode variable :data:`mode`. + Note that Abramowitz & Stegun define this function in terms of the + parameter :math:`m = k^2`. +.. Exceptional Return Values: GSL_EDOM + +.. function:: double gsl_sf_ellint_Pcomp (double k, double n, gsl_mode_t mode) + int gsl_sf_ellint_Pcomp_e (double k, double n, gsl_mode_t mode, gsl_sf_result * result) + + These routines compute the complete elliptic integral :math:`\Pi(k,n)` to the + accuracy specified by the mode variable :data:`mode`. + Note that Abramowitz & Stegun define this function in terms of the + parameters :math:`m = k^2` and :math:`\sin^2(\alpha) = k^2`, with the + change of sign :math:`n \to -n`. +.. Exceptional Return Values: GSL_EDOM + +Legendre Form of Incomplete Elliptic Integrals +---------------------------------------------- + +.. function:: double gsl_sf_ellint_F (double phi, double k, gsl_mode_t mode) + int gsl_sf_ellint_F_e (double phi, double k, gsl_mode_t mode, gsl_sf_result * result) + + These routines compute the incomplete elliptic integral :math:`F(\phi,k)` + to the accuracy specified by the mode variable :data:`mode`. + Note that Abramowitz & Stegun define this function in terms of the + parameter :math:`m = k^2`. +.. Exceptional Return Values: GSL_EDOM + +.. function:: double gsl_sf_ellint_E (double phi, double k, gsl_mode_t mode) + int gsl_sf_ellint_E_e (double phi, double k, gsl_mode_t mode, gsl_sf_result * result) + + These routines compute the incomplete elliptic integral :math:`E(\phi,k)` + to the accuracy specified by the mode variable :data:`mode`. + Note that Abramowitz & Stegun define this function in terms of the + parameter :math:`m = k^2`. +.. Exceptional Return Values: GSL_EDOM + +.. function:: double gsl_sf_ellint_P (double phi, double k, double n, gsl_mode_t mode) + int gsl_sf_ellint_P_e (double phi, double k, double n, gsl_mode_t mode, gsl_sf_result * result) + + These routines compute the incomplete elliptic integral :math:`\Pi(\phi,k,n)` + to the accuracy specified by the mode variable :data:`mode`. + Note that Abramowitz & Stegun define this function in terms of the + parameters :math:`m = k^2` and :math:`\sin^2(\alpha) = k^2`, with the + change of sign :math:`n \to -n`. +.. Exceptional Return Values: GSL_EDOM + +.. function:: double gsl_sf_ellint_D (double phi, double k, gsl_mode_t mode) + int gsl_sf_ellint_D_e (double phi, double k, gsl_mode_t mode, gsl_sf_result * result) + + These functions compute the incomplete elliptic integral + :math:`D(\phi,k)` which is defined through the Carlson form :math:`RD(x,y,z)` + by the following relation, + + .. only:: not texinfo + + .. math:: D(\phi,k) = {1 \over 3} (\sin \phi)^3 RD (1-\sin^2(\phi), 1-k^2 \sin^2(\phi), 1) + + + .. only:: texinfo + + :: + + D(\phi,k) = (1/3)(\sin(\phi))^3 RD (1-\sin^2(\phi), 1-k^2 \sin^2(\phi), 1). + +.. Exceptional Return Values: GSL_EDOM + +Carlson Forms +------------- + +.. function:: double gsl_sf_ellint_RC (double x, double y, gsl_mode_t mode) + int gsl_sf_ellint_RC_e (double x, double y, gsl_mode_t mode, gsl_sf_result * result) + + These routines compute the incomplete elliptic integral :math:`RC(x,y)` + to the accuracy specified by the mode variable :data:`mode`. +.. Exceptional Return Values: GSL_EDOM + +.. function:: double gsl_sf_ellint_RD (double x, double y, double z, gsl_mode_t mode) + int gsl_sf_ellint_RD_e (double x, double y, double z, gsl_mode_t mode, gsl_sf_result * result) + + These routines compute the incomplete elliptic integral :math:`RD(x,y,z)` + to the accuracy specified by the mode variable :data:`mode`. +.. Exceptional Return Values: GSL_EDOM + +.. function:: double gsl_sf_ellint_RF (double x, double y, double z, gsl_mode_t mode) + int gsl_sf_ellint_RF_e (double x, double y, double z, gsl_mode_t mode, gsl_sf_result * result) + + These routines compute the incomplete elliptic integral :math:`RF(x,y,z)` + to the accuracy specified by the mode variable :data:`mode`. +.. Exceptional Return Values: GSL_EDOM + +.. function:: double gsl_sf_ellint_RJ (double x, double y, double z, double p, gsl_mode_t mode) + int gsl_sf_ellint_RJ_e (double x, double y, double z, double p, gsl_mode_t mode, gsl_sf_result * result) + + These routines compute the incomplete elliptic integral :math:`RJ(x,y,z,p)` + to the accuracy specified by the mode variable :data:`mode`. +.. Exceptional Return Values: GSL_EDOM diff --git a/gsl-2.5/doc/specfunc-elljac.rst b/gsl-2.5/doc/specfunc-elljac.rst new file mode 100644 index 00000000..87074550 --- /dev/null +++ b/gsl-2.5/doc/specfunc-elljac.rst @@ -0,0 +1,14 @@ +.. index:: + single: Jacobi elliptic functions + single: elliptic functions (Jacobi) + +The Jacobian Elliptic functions are defined in Abramowitz & Stegun, +Chapter 16. The functions are declared in the header file +:file:`gsl_sf_elljac.h`. + +.. function:: int gsl_sf_elljac_e (double u, double m, double * sn, double * cn, double * dn) + + This function computes the Jacobian elliptic functions :math:`sn(u|m)`, + :math:`cn(u|m)`, :math:`dn(u|m)` by descending Landen + transformations. +.. Exceptional Return Values: GSL_EDOM diff --git a/gsl-2.5/doc/specfunc-erf.rst b/gsl-2.5/doc/specfunc-erf.rst new file mode 100644 index 00000000..393bad0d --- /dev/null +++ b/gsl-2.5/doc/specfunc-erf.rst @@ -0,0 +1,85 @@ +.. index:: + single: error function + single: erf(x) + single: erfc(x) + +The error function is described in Abramowitz & Stegun, Chapter 7. The +functions in this section are declared in the header file +:file:`gsl_sf_erf.h`. + +Error Function +-------------- + +.. function:: double gsl_sf_erf (double x) + int gsl_sf_erf_e (double x, gsl_sf_result * result) + + These routines compute the error function :math:`\erf(x)`, + where + :math:`\erf(x) = (2/\sqrt{\pi}) \int_0^x dt \exp(-t^2)`. +.. Exceptional Return Values: none + +Complementary Error Function +---------------------------- + +.. function:: double gsl_sf_erfc (double x) + int gsl_sf_erfc_e (double x, gsl_sf_result * result) + + These routines compute the complementary error function + :math:`\erfc(x) = 1 - \erf(x) = (2/\sqrt{\pi}) \int_x^\infty \exp(-t^2)` +.. Exceptional Return Values: none + +Log Complementary Error Function +-------------------------------- + +.. function:: double gsl_sf_log_erfc (double x) + int gsl_sf_log_erfc_e (double x, gsl_sf_result * result) + + These routines compute the logarithm of the complementary error function + :math:`\log(\erfc(x))`. +.. Exceptional Return Values: none + +Probability functions +--------------------- + +The probability functions for the Normal or Gaussian distribution are +described in Abramowitz & Stegun, Section 26.2. + +.. function:: double gsl_sf_erf_Z (double x) + int gsl_sf_erf_Z_e (double x, gsl_sf_result * result) + + These routines compute the Gaussian probability density function + :math:`Z(x) = (1/\sqrt{2\pi}) \exp(-x^2/2)` + +.. function:: double gsl_sf_erf_Q (double x) + int gsl_sf_erf_Q_e (double x, gsl_sf_result * result) + + These routines compute the upper tail of the Gaussian probability function + :math:`Q(x) = (1/\sqrt{2\pi}) \int_x^\infty dt \exp(-t^2/2)` + +.. Exceptional Return Values: none + +.. index:: + single: hazard function, normal distribution + single: Mills' ratio, inverse + +The *hazard function* for the normal distribution, +also known as the inverse Mills' ratio, is defined as, + +.. only:: not texinfo + + .. math:: h(x) = {Z(x) \over Q(x)} = \sqrt{2 \over \pi} {\exp(-x^2 / 2) \over \erfc(x/\sqrt 2)} + +.. only:: texinfo + + :: + + h(x) = Z(x)/Q(x) = \sqrt{2/\pi} \exp(-x^2 / 2) / \erfc(x/\sqrt 2) + +It decreases rapidly as :math:`x` approaches :math:`-\infty` and asymptotes +to :math:`h(x) \sim x` as :math:`x` approaches :math:`+\infty`. + +.. function:: double gsl_sf_hazard (double x) + int gsl_sf_hazard_e (double x, gsl_sf_result * result) + + These routines compute the hazard function for the normal distribution. +.. Exceptional Return Values: GSL_EUNDRFLW diff --git a/gsl-2.5/doc/specfunc-exp.rst b/gsl-2.5/doc/specfunc-exp.rst new file mode 100644 index 00000000..395f3d02 --- /dev/null +++ b/gsl-2.5/doc/specfunc-exp.rst @@ -0,0 +1,120 @@ +.. index:: + single: exponential function + single: exp + +The functions described in this section are declared in the header file +:file:`gsl_sf_exp.h`. + +Exponential Function +-------------------- + +.. function:: double gsl_sf_exp (double x) + int gsl_sf_exp_e (double x, gsl_sf_result * result) + + These routines provide an exponential function :math:`\exp(x)` using GSL + semantics and error checking. +.. Exceptional Return Values: GSL_EOVRFLW, GSL_EUNDRFLW + +.. function:: int gsl_sf_exp_e10_e (double x, gsl_sf_result_e10 * result) + + This function computes the exponential :math:`\exp(x)` using the + :type:`gsl_sf_result_e10` type to return a result with extended range. + This function may be useful if the value of :math:`\exp(x)` would + overflow the numeric range of :code:`double`. +.. Exceptional Return Values: GSL_EOVRFLW, GSL_EUNDRFLW + +.. function:: double gsl_sf_exp_mult (double x, double y) + int gsl_sf_exp_mult_e (double x, double y, gsl_sf_result * result) + + These routines exponentiate :data:`x` and multiply by the factor :data:`y` + to return the product :math:`y \exp(x)`. +.. Exceptional Return Values: GSL_EOVRFLW, GSL_EUNDRFLW + +.. function:: int gsl_sf_exp_mult_e10_e (const double x, const double y, gsl_sf_result_e10 * result) + + This function computes the product :math:`y \exp(x)` using the + :type:`gsl_sf_result_e10` type to return a result with extended numeric + range. +.. Exceptional Return Values: GSL_EOVRFLW, GSL_EUNDRFLW + +Relative Exponential Functions +------------------------------ + +.. function:: double gsl_sf_expm1 (double x) + int gsl_sf_expm1_e (double x, gsl_sf_result * result) + + These routines compute the quantity :math:`\exp(x)-1` using an algorithm + that is accurate for small :math:`x`. +.. Exceptional Return Values: GSL_EOVRFLW + +.. function:: double gsl_sf_exprel (double x) + int gsl_sf_exprel_e (double x, gsl_sf_result * result) + + These routines compute the quantity :math:`(\exp(x)-1)/x` using an + algorithm that is accurate for small :data:`x`. For small :data:`x` the + algorithm is based on the expansion + :math:`(\exp(x)-1)/x = 1 + x/2 + x^2/(2*3) + x^3/(2*3*4) + \dots`. +.. Exceptional Return Values: GSL_EOVRFLW + +.. function:: double gsl_sf_exprel_2 (double x) + int gsl_sf_exprel_2_e (double x, gsl_sf_result * result) + + These routines compute the quantity :math:`2(\exp(x)-1-x)/x^2` using an + algorithm that is accurate for small :data:`x`. For small :data:`x` the + algorithm is based on the expansion + :math:`2(\exp(x)-1-x)/x^2 = 1 + x/3 + x^2/(3*4) + x^3/(3*4*5) + \dots`. +.. Exceptional Return Values: GSL_EOVRFLW + +.. function:: double gsl_sf_exprel_n (int n, double x) + int gsl_sf_exprel_n_e (int n, double x, gsl_sf_result * result) + + These routines compute the :math:`N`-relative exponential, which is the + :data:`n`-th generalization of the functions :func:`gsl_sf_exprel` and + :func:`gsl_sf_exprel_2`. The :math:`N`-relative exponential is given by, + + .. only:: not texinfo + + .. math:: + + \hbox{exprel}_N(x) + &= N!/x^N \left(\exp(x) - \sum_{k=0}^{N-1} x^k/k!\right)\cr + &= 1 + x/(N+1) + x^2/((N+1)(N+2)) + \dots\cr + &= {}_1F_1(1,1+N,x)\cr + + .. only:: texinfo + + :: + + exprel_N(x) = N!/x^N (\exp(x) - \sum_{k=0}^{N-1} x^k/k!) + = 1 + x/(N+1) + x^2/((N+1)(N+2)) + ... + = 1F1 (1,1+N,x) +.. Exceptional Return Values: + +Exponentiation With Error Estimate +---------------------------------- + +.. function:: int gsl_sf_exp_err_e (double x, double dx, gsl_sf_result * result) + + This function exponentiates :data:`x` with an associated absolute error + :data:`dx`. +.. Exceptional Return Values: + +.. function:: int gsl_sf_exp_err_e10_e (double x, double dx, gsl_sf_result_e10 * result) + + This function exponentiates a quantity :data:`x` with an associated absolute + error :data:`dx` using the :type:`gsl_sf_result_e10` type to return a result with + extended range. +.. Exceptional Return Values: + +.. function:: int gsl_sf_exp_mult_err_e (double x, double dx, double y, double dy, gsl_sf_result * result) + + This routine computes the product :math:`y \exp(x)` for the quantities + :data:`x`, :data:`y` with associated absolute errors :data:`dx`, :data:`dy`. +.. Exceptional Return Values: GSL_EOVRFLW, GSL_EUNDRFLW + +.. function:: int gsl_sf_exp_mult_err_e10_e (double x, double dx, double y, double dy, gsl_sf_result_e10 * result) + + This routine computes the product :math:`y \exp(x)` for the quantities + :data:`x`, :data:`y` with associated absolute errors :data:`dx`, :data:`dy` using the + :type:`gsl_sf_result_e10` type to return a result with extended range. +.. Exceptional Return Values: GSL_EOVRFLW, GSL_EUNDRFLW diff --git a/gsl-2.5/doc/specfunc-expint.rst b/gsl-2.5/doc/specfunc-expint.rst new file mode 100644 index 00000000..b03068ab --- /dev/null +++ b/gsl-2.5/doc/specfunc-expint.rst @@ -0,0 +1,194 @@ +.. index:: + single: exponential integrals + single: integrals, exponential + +Information on the exponential integrals can be found in Abramowitz & +Stegun, Chapter 5. These functions are declared in the header file +:file:`gsl_sf_expint.h`. + +Exponential Integral +-------------------- +.. index:: E1(x), E2(x), Ei(x) + +.. function:: double gsl_sf_expint_E1 (double x) + int gsl_sf_expint_E1_e (double x, gsl_sf_result * result) + + These routines compute the exponential integral :math:`E_1(x)`, + + .. math:: E_1(x) := \Re \int_1^\infty dt \exp(-xt)/t. + +.. Domain: x != 0.0 +.. Exceptional Return Values: GSL_EDOM, GSL_EOVRFLW, GSL_EUNDRFLW + +.. function:: double gsl_sf_expint_E2 (double x) + int gsl_sf_expint_E2_e (double x, gsl_sf_result * result) + + These routines compute the second-order exponential integral :math:`E_2(x)`, + + .. math:: E_2(x) := \Re \int_1^\infty dt \exp(-xt)/t^2 + +.. Domain: x != 0.0 +.. Exceptional Return Values: GSL_EDOM, GSL_EOVRFLW, GSL_EUNDRFLW + +.. function:: double gsl_sf_expint_En (int n, double x) + int gsl_sf_expint_En_e (int n, double x, gsl_sf_result * result) + + These routines compute the exponential integral :math:`E_n(x)` of order :data:`n`, + + .. math:: E_n(x) := \Re \int_1^\infty dt \exp(-xt)/t^n. + +.. Domain: x != 0.0 +.. Exceptional Return Values: GSL_EDOM, GSL_EOVRFLW, GSL_EUNDRFLW + +Ei(x) +----- + +.. function:: double gsl_sf_expint_Ei (double x) + int gsl_sf_expint_Ei_e (double x, gsl_sf_result * result) + + These routines compute the exponential integral :math:`Ei(x)`, + + .. only:: not texinfo + + .. math:: \hbox{Ei}(x) = - PV \left( \int_{-x}^\infty dt \exp(-t)/t \right) + + .. only:: texinfo + + :: + + Ei(x) = - PV(\int_{-x}^\infty dt \exp(-t)/t) + + where :math:`PV` denotes the principal value of the integral. +.. Domain: x != 0.0 +.. Exceptional Return Values: GSL_EDOM, GSL_EOVRFLW, GSL_EUNDRFLW + +Hyperbolic Integrals +-------------------- +.. index:: + single: hyperbolic integrals + single: Shi(x) + single: Chi(x) + +.. function:: double gsl_sf_Shi (double x) + int gsl_sf_Shi_e (double x, gsl_sf_result * result) + + These routines compute the integral + + .. only:: not texinfo + + .. math:: \hbox{Shi}(x) = \int_0^x dt \sinh(t)/t + + .. only:: texinfo + + :: + + Shi(x) = \int_0^x dt \sinh(t)/t + +.. Exceptional Return Values: GSL_EOVRFLW, GSL_EUNDRFLW + +.. function:: double gsl_sf_Chi (double x) + int gsl_sf_Chi_e (double x, gsl_sf_result * result) + + These routines compute the integral + + .. only:: not texinfo + + .. math:: \hbox{Chi}(x) := \Re \left[ \gamma_E + \log(x) + \int_0^x dt (\cosh(t)-1)/t \right] + + .. only:: texinfo + + :: + + Chi(x) := \Re[ \gamma_E + \log(x) + \int_0^x dt (\cosh(t)-1)/t ] + + where :math:`\gamma_E` is the Euler constant (available as the macro :macro:`M_EULER`). +.. Domain: x != 0.0 +.. Exceptional Return Values: GSL_EDOM, GSL_EOVRFLW, GSL_EUNDRFLW + +Ei_3(x) +------- + +.. function:: double gsl_sf_expint_3 (double x) + int gsl_sf_expint_3_e (double x, gsl_sf_result * result) + + These routines compute the third-order exponential integral + + .. only:: not texinfo + + .. math:: {\rm Ei}_3(x) = \int_0^x dt \exp(-t^3) + + .. only:: texinfo + + :: + + Ei_3(x) = \int_0^x dt \exp(-t^3)` + + for :math:`x \ge 0`. + +.. Exceptional Return Values: GSL_EDOM + +Trigonometric Integrals +----------------------- +.. index:: + single: trigonometric integrals + single: Si(x) + single: Ci(x) + +.. function:: double gsl_sf_Si (const double x) + int gsl_sf_Si_e (double x, gsl_sf_result * result) + + These routines compute the Sine integral + + .. only:: not texinfo + + .. math:: \hbox{Si}(x) = \int_0^x dt \sin(t)/t + + .. only:: texinfo + + :: + + Si(x) = \int_0^x dt \sin(t)/t + +.. Exceptional Return Values: none + +.. function:: double gsl_sf_Ci (const double x) + int gsl_sf_Ci_e (double x, gsl_sf_result * result) + + These routines compute the Cosine integral + + .. only:: not texinfo + + .. math:: \hbox{Ci}(x) = -\int_x^\infty dt \cos(t)/t + + .. only:: texinfo + + :: + + Ci(x) = -\int_x^\infty dt \cos(t)/t} + + for :math:`x > 0` +.. Domain: x > 0.0 +.. Exceptional Return Values: GSL_EDOM + +Arctangent Integral +------------------- +.. index:: + single: arctangent integral + +.. function:: double gsl_sf_atanint (double x) + int gsl_sf_atanint_e (double x, gsl_sf_result * result) + + These routines compute the Arctangent integral, which is defined as + + .. only:: not texinfo + + .. math:: \hbox{AtanInt}(x) = \int_0^x dt \arctan(t)/t + + .. only:: texinfo + + :: + + AtanInt(x) = \int_0^x dt \arctan(t)/t + +.. Domain: +.. Exceptional Return Values: diff --git a/gsl-2.5/doc/specfunc-fermi-dirac.rst b/gsl-2.5/doc/specfunc-fermi-dirac.rst new file mode 100644 index 00000000..c8065ca3 --- /dev/null +++ b/gsl-2.5/doc/specfunc-fermi-dirac.rst @@ -0,0 +1,111 @@ +.. index:: Fermi-Dirac function + +The functions described in this section are declared in the header file +:file:`gsl_sf_fermi_dirac.h`. + +Complete Fermi-Dirac Integrals +------------------------------ +.. index:: + single: complete Fermi-Dirac integrals + single: Fj(x), Fermi-Dirac integral + +The complete Fermi-Dirac integral :math:`F_j(x)` is given by, + +.. only:: not texinfo + + .. math:: F_j(x) := {1\over\Gamma(j+1)} \int_0^\infty dt {t^j \over (\exp(t-x) + 1)} + +.. only:: texinfo + + :: + + F_j(x) := (1/\Gamma(j+1)) \int_0^\infty dt (t^j / (\exp(t-x) + 1)) + +Note that the Fermi-Dirac integral is sometimes defined without the +normalisation factor in other texts. + +.. function:: double gsl_sf_fermi_dirac_m1 (double x) + int gsl_sf_fermi_dirac_m1_e (double x, gsl_sf_result * result) + + These routines compute the complete Fermi-Dirac integral with an index of :math:`-1`. + This integral is given by + :math:`F_{-1}(x) = e^x / (1 + e^x)`. +.. Exceptional Return Values: GSL_EUNDRFLW + +.. function:: double gsl_sf_fermi_dirac_0 (double x) + int gsl_sf_fermi_dirac_0_e (double x, gsl_sf_result * result) + + These routines compute the complete Fermi-Dirac integral with an index of :math:`0`. + This integral is given by :math:`F_0(x) = \ln(1 + e^x)`. +.. Exceptional Return Values: GSL_EUNDRFLW + +.. function:: double gsl_sf_fermi_dirac_1 (double x) + int gsl_sf_fermi_dirac_1_e (double x, gsl_sf_result * result) + + These routines compute the complete Fermi-Dirac integral with an index of :math:`1`, + :math:`F_1(x) = \int_0^\infty dt (t /(\exp(t-x)+1))`. +.. Exceptional Return Values: GSL_EUNDRFLW, GSL_EOVRFLW + +.. function:: double gsl_sf_fermi_dirac_2 (double x) + int gsl_sf_fermi_dirac_2_e (double x, gsl_sf_result * result) + + These routines compute the complete Fermi-Dirac integral with an index + of :math:`2`, + :math:`F_2(x) = (1/2) \int_0^\infty dt (t^2 /(\exp(t-x)+1))`. +.. Exceptional Return Values: GSL_EUNDRFLW, GSL_EOVRFLW + +.. function:: double gsl_sf_fermi_dirac_int (int j, double x) + int gsl_sf_fermi_dirac_int_e (int j, double x, gsl_sf_result * result) + + These routines compute the complete Fermi-Dirac integral with an integer + index of :math:`j`, + :math:`F_j(x) = (1/\Gamma(j+1)) \int_0^\infty dt (t^j /(\exp(t-x)+1))`. +.. Complete integral F_j(x) for integer j +.. Exceptional Return Values: GSL_EUNDRFLW, GSL_EOVRFLW + +.. function:: double gsl_sf_fermi_dirac_mhalf (double x) + int gsl_sf_fermi_dirac_mhalf_e (double x, gsl_sf_result * result) + + These routines compute the complete Fermi-Dirac integral + :math:`F_{-1/2}(x)`. +.. Exceptional Return Values: GSL_EUNDRFLW, GSL_EOVRFLW + +.. function:: double gsl_sf_fermi_dirac_half (double x) + int gsl_sf_fermi_dirac_half_e (double x, gsl_sf_result * result) + + These routines compute the complete Fermi-Dirac integral + :math:`F_{1/2}(x)`. +.. Exceptional Return Values: GSL_EUNDRFLW, GSL_EOVRFLW + +.. function:: double gsl_sf_fermi_dirac_3half (double x) + int gsl_sf_fermi_dirac_3half_e (double x, gsl_sf_result * result) + + These routines compute the complete Fermi-Dirac integral + :math:`F_{3/2}(x)`. +.. Exceptional Return Values: GSL_EUNDRFLW, GSL_EOVRFLW + +Incomplete Fermi-Dirac Integrals +-------------------------------- +.. index:: + single: incomplete Fermi-Dirac integral + single: Fj(x,b), incomplete Fermi-Dirac integral + +The incomplete Fermi-Dirac integral :math:`F_j(x,b)` is given by, + +.. only:: not texinfo + + .. math:: F_j(x,b) := {1\over\Gamma(j+1)} \int_b^\infty dt {t^j \over (\exp(t-x) + 1)} + +.. only:: texinfo + + :: + + F_j(x,b) := (1/\Gamma(j+1)) \int_b^\infty dt (t^j / (\Exp(t-x) + 1)) + +.. function:: double gsl_sf_fermi_dirac_inc_0 (double x, double b) + int gsl_sf_fermi_dirac_inc_0_e (double x, double b, gsl_sf_result * result) + + These routines compute the incomplete Fermi-Dirac integral with an index + of zero, + :math:`F_0(x,b) = \ln(1 + e^{b-x}) - (b-x)` +.. Exceptional Return Values: GSL_EUNDRFLW, GSL_EDOM diff --git a/gsl-2.5/doc/specfunc-gamma.rst b/gsl-2.5/doc/specfunc-gamma.rst new file mode 100644 index 00000000..94a943d3 --- /dev/null +++ b/gsl-2.5/doc/specfunc-gamma.rst @@ -0,0 +1,310 @@ +The following routines compute the gamma and beta functions in their +full and incomplete forms, as well as various kinds of factorials. +The functions described in this section are declared in the header +file :file:`gsl_sf_gamma.h`. + +Gamma Functions +--------------- +.. index:: gamma functions + +The Gamma function is defined by the following integral, + +.. math:: \Gamma(x) = \int_0^{\infty} dt t^{x-1} \exp(-t) + +It is related to the factorial function by :math:`\Gamma(n) = (n-1)!` +for positive integer :math:`n`. Further information on the Gamma function +can be found in Abramowitz & Stegun, Chapter 6. + +.. function:: double gsl_sf_gamma (double x) + int gsl_sf_gamma_e (double x, gsl_sf_result * result) + + These routines compute the Gamma function :math:`\Gamma(x)`, subject to :math:`x` + not being a negative integer or zero. The function is computed using the real + Lanczos method. The maximum value of :math:`x` such that :math:`\Gamma(x)` is not + considered an overflow is given by the macro :macro:`GSL_SF_GAMMA_XMAX` + and is 171.0. +.. exceptions: GSL_EDOM, GSL_EOVRFLW, GSL_EROUND + +.. index:: logarithm of Gamma function + +.. function:: double gsl_sf_lngamma (double x) + int gsl_sf_lngamma_e (double x, gsl_sf_result * result) + + These routines compute the logarithm of the Gamma function, + :math:`\log(\Gamma(x))`, subject to :math:`x` not being a negative + integer or zero. For :math:`x < 0` the real part of :math:`\log(\Gamma(x))` is + returned, which is equivalent to :math:`\log(|\Gamma(x)|)`. The function + is computed using the real Lanczos method. +.. exceptions: GSL_EDOM, GSL_EROUND + +.. function:: int gsl_sf_lngamma_sgn_e (double x, gsl_sf_result * result_lg, double * sgn) + + This routine computes the sign of the gamma function and the logarithm of + its magnitude, subject to :math:`x` not being a negative integer or zero. The + function is computed using the real Lanczos method. The value of the + gamma function and its error can be reconstructed using the relation + :math:`\Gamma(x) = sgn * \exp(result\_lg)`, taking into account the two + components of :data:`result_lg`. +.. exceptions: GSL_EDOM, GSL_EROUND + +.. index:: Regulated Gamma function + +.. function:: double gsl_sf_gammastar (double x) + int gsl_sf_gammastar_e (double x, gsl_sf_result * result) + + These routines compute the regulated Gamma Function :math:`\Gamma^*(x)` + for :math:`x > 0`. The regulated gamma function is given by, + + .. only:: not texinfo + + .. math:: + + \Gamma^*(x) &= \Gamma(x)/(\sqrt{2\pi} x^{(x-1/2)} \exp(-x))\cr + &= \left(1 + {1 \over 12x} + ...\right) \quad\hbox{for~} x\to \infty\cr + + .. only:: texinfo + + :: + + \Gamma^*(x) = \Gamma(x)/(\sqrt{2\pi} x^{(x-1/2)} \exp(-x)) + = (1 + (1/12x) + ...) for x \to \infty + + and is a useful suggestion of Temme. +.. exceptions: GSL_EDOM + +.. index:: Reciprocal Gamma function + +.. function:: double gsl_sf_gammainv (double x) + int gsl_sf_gammainv_e (double x, gsl_sf_result * result) + + These routines compute the reciprocal of the gamma function, + :math:`1/\Gamma(x)` using the real Lanczos method. +.. exceptions: GSL_EUNDRFLW, GSL_EROUND + +.. index:: Complex Gamma function + +.. function:: int gsl_sf_lngamma_complex_e (double zr, double zi, gsl_sf_result * lnr, gsl_sf_result * arg) + + This routine computes :math:`\log(\Gamma(z))` for complex :math:`z = z_r + i z_i` + and :math:`z` not a negative integer or zero, using the complex Lanczos + method. The returned parameters are :math:`lnr = \log|\Gamma(z)|` and + :math:`arg = \arg(\Gamma(z))` in :math:`(-\pi,\pi]`. Note that the phase + part (:data:`arg`) is not well-determined when :math:`|z|` is very large, + due to inevitable roundoff in restricting to :math:`(-\pi,\pi]`. This + will result in a :macro:`GSL_ELOSS` error when it occurs. The absolute + value part (:data:`lnr`), however, never suffers from loss of precision. +.. exceptions: GSL_EDOM, GSL_ELOSS + +Factorials +---------- +.. index:: factorial + +Although factorials can be computed from the Gamma function, using +the relation :math:`n! = \Gamma(n+1)` for non-negative integer :math:`n`, +it is usually more efficient to call the functions in this section, +particularly for small values of :math:`n`, whose factorial values are +maintained in hardcoded tables. + +.. index:: factorial + +.. function:: double gsl_sf_fact (unsigned int n) + int gsl_sf_fact_e (unsigned int n, gsl_sf_result * result) + + These routines compute the factorial :math:`n!`. The factorial is + related to the Gamma function by :math:`n! = \Gamma(n+1)`. + The maximum value of :math:`n` such that :math:`n!` is not + considered an overflow is given by the macro :macro:`GSL_SF_FACT_NMAX` + and is 170. +.. exceptions: GSL_EDOM, GSL_EOVRFLW + +.. index:: double factorial + +.. function:: double gsl_sf_doublefact (unsigned int n) + int gsl_sf_doublefact_e (unsigned int n, gsl_sf_result * result) + + These routines compute the double factorial :math:`n!! = n(n-2)(n-4) \dots`. + The maximum value of :math:`n` such that :math:`n!!` is not + considered an overflow is given by the macro :macro:`GSL_SF_DOUBLEFACT_NMAX` + and is 297. +.. exceptions: GSL_EDOM, GSL_EOVRFLW + +.. index:: logarithm of factorial + +.. function:: double gsl_sf_lnfact (unsigned int n) + int gsl_sf_lnfact_e (unsigned int n, gsl_sf_result * result) + + These routines compute the logarithm of the factorial of :data:`n`, + :math:`\log(n!)`. The algorithm is faster than computing + :math:`\ln(\Gamma(n+1))` via :func:`gsl_sf_lngamma` for :math:`n < 170`, + but defers for larger :data:`n`. +.. exceptions: none + +.. index:: logarithm of double factorial + +.. function:: double gsl_sf_lndoublefact (unsigned int n) + int gsl_sf_lndoublefact_e (unsigned int n, gsl_sf_result * result) + + These routines compute the logarithm of the double factorial of :data:`n`, + :math:`\log(n!!)`. +.. exceptions: none + +.. index:: combinatorial factor C(m,n) + +.. function:: double gsl_sf_choose (unsigned int n, unsigned int m) + int gsl_sf_choose_e (unsigned int n, unsigned int m, gsl_sf_result * result) + + These routines compute the combinatorial factor :code:`n choose m` + :math:`= n!/(m!(n-m)!)` +.. exceptions: GSL_EDOM, GSL_EOVRFLW + +.. index:: logarithm of combinatorial factor C(m,n) + +.. function:: double gsl_sf_lnchoose (unsigned int n, unsigned int m) + int gsl_sf_lnchoose_e (unsigned int n, unsigned int m, gsl_sf_result * result) + + These routines compute the logarithm of :code:`n choose m`. This is + equivalent to the sum :math:`\log(n!) - \log(m!) - \log((n-m)!)`. +.. exceptions: GSL_EDOM + +.. index:: + single: Taylor coefficients, computation of + +.. function:: double gsl_sf_taylorcoeff (int n, double x) + int gsl_sf_taylorcoeff_e (int n, double x, gsl_sf_result * result) + + These routines compute the Taylor coefficient :math:`x^n / n!` for + :math:`x \ge 0`, :math:`n \ge 0` +.. exceptions: GSL_EDOM, GSL_EOVRFLW, GSL_EUNDRFLW + +.. _pochhammer-symbol: + +Pochhammer Symbol +----------------- + +.. index:: + single: Pochhammer symbol + single: Apell symbol, see Pochhammer symbol + +.. function:: double gsl_sf_poch (double a, double x) + int gsl_sf_poch_e (double a, double x, gsl_sf_result * result) + + These routines compute the Pochhammer symbol :math:`(a)_x = \Gamma(a + x)/\Gamma(a)`. + The Pochhammer symbol is also known as the Apell symbol and + sometimes written as :math:`(a,x)`. When :math:`a` and :math:`a + x` + are negative integers or zero, the limiting value of the ratio is returned. +.. exceptions: GSL_EDOM, GSL_EOVRFLW + +.. index:: logarithm of Pochhammer symbol + +.. function:: double gsl_sf_lnpoch (double a, double x) + int gsl_sf_lnpoch_e (double a, double x, gsl_sf_result * result) + + These routines compute the logarithm of the Pochhammer symbol, + :math:`\log((a)_x) = \log(\Gamma(a + x)/\Gamma(a))`. +.. exceptions: GSL_EDOM + +.. function:: int gsl_sf_lnpoch_sgn_e (double a, double x, gsl_sf_result * result, double * sgn) + + These routines compute the sign of the Pochhammer symbol and the + logarithm of its magnitude. The computed parameters are :math:`result = \log(|(a)_x|)` + with a corresponding error term, and :math:`sgn = \sgn((a)_x)` where :math:`(a)_x = \Gamma(a + x)/\Gamma(a)`. +.. exceptions: GSL_EDOM + +.. index:: relative Pochhammer symbol + +.. function:: double gsl_sf_pochrel (double a, double x) + int gsl_sf_pochrel_e (double a, double x, gsl_sf_result * result) + + These routines compute the relative Pochhammer symbol :math:`((a)_x - 1)/x` + where :math:`(a)_x = \Gamma(a + x)/\Gamma(a)`. +.. exceptions: GSL_EDOM + +Incomplete Gamma Functions +-------------------------- + +.. index:: + single: non-normalized incomplete Gamma function + single: unnormalized incomplete Gamma function + +.. function:: double gsl_sf_gamma_inc (double a, double x) + int gsl_sf_gamma_inc_e (double a, double x, gsl_sf_result * result) + + These functions compute the unnormalized incomplete Gamma Function + :math:`\Gamma(a,x) = \int_x^\infty dt t^{(a-1)} \exp(-t)` + for :math:`a` real and :math:`x \ge 0`. +.. exceptions: GSL_EDOM + +.. index:: incomplete Gamma function + +.. function:: double gsl_sf_gamma_inc_Q (double a, double x) + int gsl_sf_gamma_inc_Q_e (double a, double x, gsl_sf_result * result) + + These routines compute the normalized incomplete Gamma Function + :math:`Q(a,x) = 1/\Gamma(a) \int_x^\infty dt t^{(a-1)} \exp(-t)` + for :math:`a > 0`, :math:`x \ge 0`. +.. exceptions: GSL_EDOM + +.. index:: complementary incomplete Gamma function + +.. function:: double gsl_sf_gamma_inc_P (double a, double x) + int gsl_sf_gamma_inc_P_e (double a, double x, gsl_sf_result * result) + + These routines compute the complementary normalized incomplete Gamma Function + :math:`P(a,x) = 1 - Q(a,x) = 1/\Gamma(a) \int_0^x dt t^{(a-1)} \exp(-t)` + for :math:`a > 0`, :math:`x \ge 0`. + + Note that Abramowitz & Stegun call :math:`P(a,x)` the incomplete gamma + function (section 6.5). +.. exceptions: GSL_EDOM + +Beta Functions +-------------- + +.. index:: Beta function + +.. function:: double gsl_sf_beta (double a, double b) + int gsl_sf_beta_e (double a, double b, gsl_sf_result * result) + + These routines compute the Beta Function, :math:`B(a,b) = \Gamma(a)\Gamma(b)/\Gamma(a+b)` + subject to :math:`a` and :math:`b` not being negative integers. +.. exceptions: GSL_EDOM, GSL_EOVRFLW, GSL_EUNDRFLW + +.. index:: logarithm of Beta function + +.. function:: double gsl_sf_lnbeta (double a, double b) + int gsl_sf_lnbeta_e (double a, double b, gsl_sf_result * result) + + These routines compute the logarithm of the Beta Function, :math:`\log(B(a,b))` + subject to :math:`a` and :math:`b` not being negative integers. +.. exceptions: GSL_EDOM + +Incomplete Beta Function +------------------------ + +.. index:: + single: incomplete Beta function, normalized + single: normalized incomplete Beta function + single: Beta function, incomplete normalized + +.. function:: double gsl_sf_beta_inc (double a, double b, double x) + int gsl_sf_beta_inc_e (double a, double b, double x, gsl_sf_result * result) + + These routines compute the normalized incomplete Beta function + :math:`I_x(a,b) = B_x(a,b) / B(a,b)` where + + .. math:: B_x(a,b) = \int_0^x t^{a-1} (1-t)^{b-1} dt + + for :math:`0 \le x \le 1`. + For :math:`a > 0`, :math:`b > 0` the value is computed using + a continued fraction expansion. For all other values it is computed using + the relation + + .. only:: not texinfo + + .. math:: I_x(a,b,x) = (1/a) x^a {}_2F_1(a,1-b,a+1,x)/B(a,b) + + .. only:: texinfo + + :: + + I_x(a,b,x) = (1/a) x^a 2F1(a,1-b,a+1,x) / B(a,b) diff --git a/gsl-2.5/doc/specfunc-gegenbauer.rst b/gsl-2.5/doc/specfunc-gegenbauer.rst new file mode 100644 index 00000000..7b2dafdf --- /dev/null +++ b/gsl-2.5/doc/specfunc-gegenbauer.rst @@ -0,0 +1,37 @@ +.. index:: Gegenbauer functions + +The Gegenbauer polynomials are defined in Abramowitz & Stegun, Chapter +22, where they are known as Ultraspherical polynomials. The functions +described in this section are declared in the header file +:file:`gsl_sf_gegenbauer.h`. + +.. function:: double gsl_sf_gegenpoly_1 (double lambda, double x) + double gsl_sf_gegenpoly_2 (double lambda, double x) + double gsl_sf_gegenpoly_3 (double lambda, double x) + int gsl_sf_gegenpoly_1_e (double lambda, double x, gsl_sf_result * result) + int gsl_sf_gegenpoly_2_e (double lambda, double x, gsl_sf_result * result) + int gsl_sf_gegenpoly_3_e (double lambda, double x, gsl_sf_result * result) + + These functions evaluate the Gegenbauer polynomials + :math:`C^{(\lambda)}_n(x)` using explicit + representations for :math:`n = 1, 2, 3`. +.. Exceptional Return Values: none + +.. function:: double gsl_sf_gegenpoly_n (int n, double lambda, double x) + int gsl_sf_gegenpoly_n_e (int n, double lambda, double x, gsl_sf_result * result) + + These functions evaluate the Gegenbauer polynomial :math:`C^{(\lambda)}_n(x)` + for a specific value of :data:`n`, + :data:`lambda`, :data:`x` subject to :math:`\lambda > -1/2`, :math:`n \ge 0`. +.. Domain: lambda > -1/2, n >= 0 +.. Exceptional Return Values: GSL_EDOM + +.. function:: int gsl_sf_gegenpoly_array (int nmax, double lambda, double x, double result_array[]) + + This function computes an array of Gegenbauer polynomials + :math:`C^{(\lambda)}_n(x)` + for :math:`n = 0, 1, 2, \dots, nmax`, subject + to :math:`\lambda > -1/2`, :math:`nmax \ge 0`. +.. Conditions: n = 0, 1, 2, ... nmax +.. Domain: lambda > -1/2, nmax >= 0 +.. Exceptional Return Values: GSL_EDOM diff --git a/gsl-2.5/doc/specfunc-hermite.rst b/gsl-2.5/doc/specfunc-hermite.rst new file mode 100644 index 00000000..29c12786 --- /dev/null +++ b/gsl-2.5/doc/specfunc-hermite.rst @@ -0,0 +1,214 @@ +.. Version 1: Konrad Griessinger (konradg(at)gmx.net), 12/2013 + +.. index:: + single: Hermite polynomials + single: Hermite functions + +.. :math:`He_n(x)` +.. @math{H_n(x)} +.. how can you get greek characters in the index in Texinfo?!? +.. @cindex @math{psi_n(x)} + +The Hermite polynomials exist in two variants: the probabilists' version :math:`He_n(x)` +and the physicists'version :math:`H_n(x)`. The are defined by the derivatives + +.. only:: not texinfo + + .. math:: + + He_n(x) & = (-1)^n e^{x^2/2} \left({d \over dx}\right)^n e^{-x^2/2} \\ + H_n(x) & = (-1)^n e^{x^2} \left({d \over dx}\right)^n e^{-x^2} + +.. only:: texinfo + + :: + + He_n(x) = (-1)^n e^{x^2/2} (d / dx)^n e^{-x^2/2} + H_n(x) = (-1)^n e^{x^2} (d / dx)^n e^{-x^2} + +They are connected via + +.. only:: not texinfo + + .. math:: + + He_n(x) & = 2^{-n/2} H_n \left( {x \over \sqrt{2}} \right) \\ + H_n(x) & = 2^{n/2} He_n \left( \sqrt{2} x \right) + +.. only:: texinfo + + :: + + He_n(x) = 2^{-n/2} H_n(x / \sqrt{2}) + H_n(x) = 2^{n/2} He_n(\sqrt{2} x) + +and satisfy the ordinary differential equations + +.. only:: not texinfo + + .. math:: + + He_n^{\prime\prime}(x) - x He_n^{\prime}(x) + n He_n(x) & = 0 \\ + H_n^{\prime\prime}(x) - 2x H_n^{\prime}(x) + 2n H_n(x) & = 0 + +.. only:: texinfo + + :: + + He_n^{''}(x) - x He_n^{'}(x) + n He_n(x) = 0 + H_n^{''}(x) - 2x H_n^{'}(x) + 2n H_n(x) = 0 + +The closely related Hermite functions are defined by + +.. only:: not texinfo + + .. math:: \psi_n(x) = \left( n! \sqrt{\pi} \right)^{-1/2} e^{-x^2/2} He_n \left( {\sqrt{2} x} \right) + +.. only:: texinfo + + :: + + psi_n = (n! sqrt(\pi))^{-1/2} e^{-x^2/2} He_n({sqrt(2) x}) + +and satisfy the Schrödinger equation for a quantum mechanical harmonic oscillator + +.. only:: not texinfo + + .. math:: \psi_n^{\prime\prime}(x) + (2n + 1 - x^2) \psi_n(x) = 0 + +.. only:: texinfo + + :: + + psi_n^{''}(x) + (2n + 1 - x^2) psi_n(x) = 0 + +Maybe most importantly, the Hermite functions :math:`\psi_n` are eigenfunctions of the (continuous) Fourier transform. + +For further information see Abramowitz & Stegun, Chapter 22 and Szego, Gabor (1939, 1958, 1967), Orthogonal Polynomials, +American Mathematical Society. The Hermite polynomials and functions are defined in the header file :file:`gsl_sf_hermite.h`. + +Hermite Polynomials +------------------- + +.. function:: double gsl_sf_hermite_prob (const int n, const double x) + int gsl_sf_hermite_prob_e (const int n, const double x, gsl_sf_result * result) + + These routines evaluate the probabilists' Hermite polynomial :math:`He_n(x)` of order :data:`n` at position :data:`x`. + +.. function:: int gsl_sf_hermite_prob_array (const int nmax, const double x, double * result_array) + + This routine evaluates all probabilists' Hermite polynomials :math:`He_n(x)` up to order :data:`nmax` at position :data:`x`. + The results are stored in :data:`result_array`. + +.. function:: double gsl_sf_hermite_prob_series (const int n, const double x, const double * a) + int gsl_sf_hermite_prob_series_e (const int n, const double x, const double * a, gsl_sf_result * result) + + These routines evaluate the series :math:`\sum_{j=0}^n a_j He_j(x)` with :math:`He_j` being the + :math:`j`-th probabilists' Hermite polynomial using the Clenshaw algorithm. + +.. function:: double gsl_sf_hermite_phys (const int n, const double x) + int gsl_sf_hermite_phys_e (const int n, const double x, gsl_sf_result * result) + + These routines evaluate the physicists' Hermite polynomial :math:`H_n(x)` of order :data:`n` at position :data:`x`. + +.. function:: int gsl_sf_hermite_phys_array (const int nmax, const double x, double * result_array) + + This routine evaluates all physicists' Hermite polynomials :math:`H_n` up to order :data:`nmax` at position :data:`x`. + The results are stored in :data:`result_array`. + +.. function:: double gsl_sf_hermite_phys_series (const int n, const double x, const double * a) + int gsl_sf_hermite_phys_series_e (const int n, const double x, const double * a, gsl_sf_result * result) + + These routines evaluate the series :math:`\sum_{j=0}^n a_j H_j(x)` with :math:`H_j` being + the :math:`j`-th physicists' Hermite polynomial using the Clenshaw algorithm. + +Hermite Functions +----------------- + +.. function:: double gsl_sf_hermite_func (const int n, const double x) + int gsl_sf_hermite_func_e (const int n, const double x, gsl_sf_result * result) + + These routines evaluate the Hermite function :math:`\psi_n(x)` of order :data:`n` at position :data:`x`. + +.. function:: int gsl_sf_hermite_func_array (const int nmax, const double x, double * result_array) + + This routine evaluates all Hermite functions :math:`\psi_n(x)` up to order :data:`nmax` at position :data:`x`. + The results are stored in :data:`result_array`. + +.. function:: double gsl_sf_hermite_func_series (const int n, const double x, const double * a) + int gsl_sf_hermite_func_series_e (const int n, const double x, const double * a, gsl_sf_result * result) + + These routines evaluate the series :math:`\sum_{j=0}^n a_j \psi_j(x)` with :math:`\psi_j` being + the :math:`j`-th Hermite function using the Clenshaw algorithm. + +Derivatives of Hermite Polynomials +---------------------------------- +.. index:: + single: Hermite polynomials, derivatives + +.. function:: double gsl_sf_hermite_prob_der (const int m, const int n, const double x) + int gsl_sf_hermite_prob_der_e (const int m, const int n, const double x, gsl_sf_result * result) + + These routines evaluate the :data:`m`-th derivative of the probabilists' Hermite polynomial :math:`He_n(x)` + of order :data:`n` at position :data:`x`. + +.. function:: int gsl_sf_hermite_prob_array_der (const int m, const int nmax, const double x, double * result_array) + + This routine evaluates the :data:`m`-th derivative of all probabilists' Hermite polynomials :math:`He_n(x)` up to + order :data:`nmax` at position :data:`x`. The results are stored in :data:`result_array`. + +.. function:: int gsl_sf_hermite_prob_der_array (const int mmax, const int n, const double x, double * result_array) + + This routine evaluates all derivatives (starting from 0) up to the :data:`mmax`-th derivative of the probabilists' Hermite + polynomial of order :data:`n` :math:`He_n(x)` at position :data:`x`. The results are stored in :data:`result_array`. + +.. function:: double gsl_sf_hermite_phys_der (const int m, const int n, const double x) + int gsl_sf_hermite_phys_der_e (const int m, const int n, const double x, gsl_sf_result * result) + + These routines evaluate the :data:`m`-th derivative of the physicists' Hermite polynomial :math:`H_n(x)` of order :data:`n` at position :data:`x`. + +.. function:: int gsl_sf_hermite_phys_array_der (const int m, const int nmax, const double x, double * result_array) + + This routine evaluates the :data:`m`-th derivative of all physicists' Hermite polynomials :math:`H_n` up to order :data:`nmax` at position :data:`x`. + The results are stored in :data:`result_array`. + +.. function:: int gsl_sf_hermite_phys_der_array (const int mmax, const int n, const double x, double * result_array) + + This routine evaluates all derivatives (starting from 0) up to the :data:`mmax`-th derivative of the + physicists' Hermite polynomial of order :data:`n` :math:`H_n` at position :data:`x`. The results are stored in :data:`result_array`. + +Derivatives of Hermite Functions +-------------------------------- +.. index:: + single: Hermite functions, derivatives + +.. function:: double gsl_sf_hermite_func_der (const int m, const int n, const double x) + int gsl_sf_hermite_func_der_e (const int m, const int n, const double x, gsl_sf_result * result) + + These routines evaluate the :data:`m`-th derivative of the Hermite function :math:`\psi_n(x)` of order :data:`n` at position :data:`x`. + +Zeros of Hermite Polynomials and Hermite Functions +-------------------------------------------------- +.. index:: + single: Hermite polynomials, zeros + single: Hermite functions, zeros + +These routines calculate the :math:`s`-th zero of the Hermite Polynomial/Function of order +:math:`n`. Since the zeros are symmetrical around zero, only positive zeros are calculated, +ordered from smallest to largest, starting from index 1. Only for odd polynomial orders a +zeroth zero exists, its value always being zero. + +.. function:: double gsl_sf_hermite_prob_zero (const int n, const int s) + int gsl_sf_hermite_prob_zero_e (const int n, const int s, gsl_sf_result * result) + + These routines evaluate the :data:`s`-th zero of the probabilists' Hermite polynomial :math:`He_n(x)` of order :data:`n`. + +.. function:: double gsl_sf_hermite_phys_zero (const int n, const int s) + int gsl_sf_hermite_phys_zero_e (const int n, const int s, gsl_sf_result * result) + + These routines evaluate the :data:`s`-th zero of the physicists' Hermite polynomial :math:`H_n(x)` of order :data:`n`. + +.. function:: double gsl_sf_hermite_func_zero (const int n, const int s) + int gsl_sf_hermite_func_zero_e (const int n, const int s, gsl_sf_result * result) + + These routines evaluate the :data:`s`-th zero of the Hermite function :math:`\psi_n(x)` of order :data:`n`. diff --git a/gsl-2.5/doc/specfunc-hyperg.rst b/gsl-2.5/doc/specfunc-hyperg.rst new file mode 100644 index 00000000..9a4c2cbd --- /dev/null +++ b/gsl-2.5/doc/specfunc-hyperg.rst @@ -0,0 +1,176 @@ +.. index:: + single: hypergeometric functions + single: confluent hypergeometric functions + +Hypergeometric functions are described in Abramowitz & Stegun, Chapters +13 and 15. These functions are declared in the header file +:file:`gsl_sf_hyperg.h`. + +.. function:: double gsl_sf_hyperg_0F1 (double c, double x) + int gsl_sf_hyperg_0F1_e (double c, double x, gsl_sf_result * result) + + These routines compute the hypergeometric function + + .. only:: not texinfo + + .. math:: {}_0F_1(c,x) + + .. only:: texinfo + + .. math:: 0F1(c,x) + +.. It is related to Bessel functions +.. 0F1[c,x] = +.. Gamma[c] x^(1/2(1-c)) I_(c-1)(2 Sqrt[x]) +.. Gamma[c] (-x)^(1/2(1-c)) J_(c-1)(2 Sqrt[-x]) +.. exceptions: GSL_EOVRFLW, GSL_EUNDRFLW + +.. function:: double gsl_sf_hyperg_1F1_int (int m, int n, double x) + int gsl_sf_hyperg_1F1_int_e (int m, int n, double x, gsl_sf_result * result) + + These routines compute the confluent hypergeometric function + + .. only:: not texinfo + + .. math:: {}_1F_1(m,n,x) = M(m,n,x) + + .. only:: texinfo + + .. math:: 1F1(m,n,x) = M(m,n,x) + + for integer parameters :data:`m`, :data:`n`. +.. exceptions: + +.. function:: double gsl_sf_hyperg_1F1 (double a, double b, double x) + int gsl_sf_hyperg_1F1_e (double a, double b, double x, gsl_sf_result * result) + + These routines compute the confluent hypergeometric function + + .. only:: not texinfo + + .. math:: {}_1F_1(a,b,x) = M(a,b,x) + + .. only:: texinfo + + .. math:: 1F1(a,b,x) = M(a,b,x) + + for general parameters :data:`a`, :data:`b`. +.. exceptions: + +.. function:: double gsl_sf_hyperg_U_int (int m, int n, double x) + int gsl_sf_hyperg_U_int_e (int m, int n, double x, gsl_sf_result * result) + + These routines compute the confluent hypergeometric function + :math:`U(m,n,x)` for integer parameters :data:`m`, :data:`n`. +.. exceptions: + +.. function:: int gsl_sf_hyperg_U_int_e10_e (int m, int n, double x, gsl_sf_result_e10 * result) + + This routine computes the confluent hypergeometric function + :math:`U(m,n,x)` for integer parameters :data:`m`, :data:`n` using the + :type:`gsl_sf_result_e10` type to return a result with extended range. + +.. function:: double gsl_sf_hyperg_U (double a, double b, double x) + int gsl_sf_hyperg_U_e (double a, double b, double x, gsl_sf_result * result) + + These routines compute the confluent hypergeometric function :math:`U(a,b,x)`. +.. exceptions: + +.. function:: int gsl_sf_hyperg_U_e10_e (double a, double b, double x, gsl_sf_result_e10 * result) + + This routine computes the confluent hypergeometric function + :math:`U(a,b,x)` using the :type:`gsl_sf_result_e10` type to return a + result with extended range. +.. exceptions: + +.. function:: double gsl_sf_hyperg_2F1 (double a, double b, double c, double x) + int gsl_sf_hyperg_2F1_e (double a, double b, double c, double x, gsl_sf_result * result) + + These routines compute the Gauss hypergeometric function + + .. only:: not texinfo + + .. math:: {}_2F_1(a,b,c,x) = F(a,b,c,x) + + .. only:: texinfo + + .. math:: 2F1(a,b,c,x) = F(a,b,c,x) + + for :math:`|x| < 1`. If the arguments :math:`(a,b,c,x)` are too close to a singularity then + the function can return the error code :macro:`GSL_EMAXITER` when the + series approximation converges too slowly. This occurs in the region of + :math:`x = 1`, :math:`c - a - b = m` for integer m. +.. exceptions: + +.. function:: double gsl_sf_hyperg_2F1_conj (double aR, double aI, double c, double x) + int gsl_sf_hyperg_2F1_conj_e (double aR, double aI, double c, double x, gsl_sf_result * result) + + These routines compute the Gauss hypergeometric function + + .. only:: not texinfo + + .. math:: {}_2F_1(a_R + i a_I, aR - i aI, c, x) + + .. only:: texinfo + + .. math:: 2F1(a_R + i a_I, aR - i aI, c, x) + + with complex parameters for :math:`|x| < 1`. + +.. function:: double gsl_sf_hyperg_2F1_renorm (double a, double b, double c, double x) + int gsl_sf_hyperg_2F1_renorm_e (double a, double b, double c, double x, gsl_sf_result * result) + + These routines compute the renormalized Gauss hypergeometric function + + .. only:: not texinfo + + .. math:: {}_2F_1(a,b,c,x) / \Gamma(c) + + .. only:: texinfo + + .. math:: 2F1(a,b,c,x) / \Gamma(c) + + for :math:`|x| < 1`. +.. exceptions: + +.. function:: double gsl_sf_hyperg_2F1_conj_renorm (double aR, double aI, double c, double x) + int gsl_sf_hyperg_2F1_conj_renorm_e (double aR, double aI, double c, double x, gsl_sf_result * result) + + These routines compute the renormalized Gauss hypergeometric function + + .. only:: not texinfo + + .. math:: {}_2F_1(a_R + i a_I, a_R - i a_I, c, x) / \Gamma(c) + + .. only:: texinfo + + .. math:: 2F1(a_R + i a_I, a_R - i a_I, c, x) / \Gamma(c) + + for :math:`|x| < 1`. +.. exceptions: + +.. function:: double gsl_sf_hyperg_2F0 (double a, double b, double x) + int gsl_sf_hyperg_2F0_e (double a, double b, double x, gsl_sf_result * result) + + These routines compute the hypergeometric function + + .. only:: not texinfo + + .. math:: {}_2F_0(a,b,x) + + .. only:: texinfo + + .. math:: 2F0(a,b,x) + + The series representation is a divergent hypergeometric series. + However, for :math:`x < 0` we have + + .. only:: not texinfo + + .. math:: {}_2F_0(a,b,x) = (-1/x)^a U(a,1+a-b,-1/x) + + .. only:: texinfo + + .. math:: 2F0(a,b,x) = (-1/x)^a U(a,1+a-b,-1/x) + +.. exceptions: GSL_EDOM diff --git a/gsl-2.5/doc/specfunc-laguerre.rst b/gsl-2.5/doc/specfunc-laguerre.rst new file mode 100644 index 00000000..53cb01dd --- /dev/null +++ b/gsl-2.5/doc/specfunc-laguerre.rst @@ -0,0 +1,46 @@ +.. index:: + single: Laguerre functions + single: confluent hypergeometric function + +The generalized Laguerre polynomials, sometimes referred to as +associated Laguerre polynomials, are defined in terms of confluent +hypergeometric functions as + +.. only:: not texinfo + + .. math:: L^a_n(x) = {(a+1)_n \over n!} {}_1F_1(-n,a+1,x) + +.. only:: texinfo + + L^a_n(x) = ((a+1)_n / n!) 1F1(-n,a+1,x) + +where :math:`(a)_n` is the :ref:`Pochhammer symbol ` (rising factorial). +They are related to the plain +Laguerre polynomials :math:`L_n(x)` by :math:`L^0_n(x) = L_n(x)` and +:math:`L^k_n(x) = (-1)^k (d^k/dx^k) L_{(n+k)}(x)` +For more information see Abramowitz & Stegun, Chapter 22. + +The functions described in this section are +declared in the header file :file:`gsl_sf_laguerre.h`. + +.. function:: double gsl_sf_laguerre_1 (double a, double x) + double gsl_sf_laguerre_2 (double a, double x) + double gsl_sf_laguerre_3 (double a, double x) + int gsl_sf_laguerre_1_e (double a, double x, gsl_sf_result * result) + int gsl_sf_laguerre_2_e (double a, double x, gsl_sf_result * result) + int gsl_sf_laguerre_3_e (double a, double x, gsl_sf_result * result) + + These routines evaluate the generalized Laguerre polynomials + :math:`L^a_1(x)`, :math:`L^a_2(x)`, :math:`L^a_3(x)` using explicit + representations. +.. Exceptional Return Values: none + +.. function:: double gsl_sf_laguerre_n (const int n, const double a, const double x) + int gsl_sf_laguerre_n_e (int n, double a, double x, gsl_sf_result * result) + + These routines evaluate the generalized Laguerre polynomials + :math:`L^a_n(x)` for :math:`a > -1`, + :math:`n \ge 0`. +.. Domain: a > -1.0, n >= 0 +.. Evaluate generalized Laguerre polynomials. +.. Exceptional Return Values: GSL_EDOM diff --git a/gsl-2.5/doc/specfunc-lambert.rst b/gsl-2.5/doc/specfunc-lambert.rst new file mode 100644 index 00000000..449ce28e --- /dev/null +++ b/gsl-2.5/doc/specfunc-lambert.rst @@ -0,0 +1,26 @@ +.. index:: + single: W function + single: Lambert function + +Lambert's W functions, :math:`W(x)`, are defined to be solutions +of the equation :math:`W(x) \exp(W(x)) = x`. This function has +multiple branches for :math:`x < 0`; however, it has only +two real-valued branches. We define :math:`W_0(x)` to be the +principal branch, where :math:`W > -1` for :math:`x < 0`, and +:math:`W_{-1}(x)` +to be the other real branch, where +:math:`W < -1` for :math:`x < 0`. The Lambert functions are +declared in the header file :file:`gsl_sf_lambert.h`. + +.. function:: double gsl_sf_lambert_W0 (double x) + int gsl_sf_lambert_W0_e (double x, gsl_sf_result * result) + + These compute the principal branch of the Lambert W function, :math:`W_0(x)`. +.. exceptions: GSL_EDOM, GSL_EMAXITER + +.. function:: double gsl_sf_lambert_Wm1 (double x) + int gsl_sf_lambert_Wm1_e (double x, gsl_sf_result * result) + + These compute the secondary real-valued branch of the Lambert W function, + :math:`W_{-1}(x)`. +.. exceptions: GSL_EDOM, GSL_EMAXITER diff --git a/gsl-2.5/doc/specfunc-legendre.rst b/gsl-2.5/doc/specfunc-legendre.rst new file mode 100644 index 00000000..671820a0 --- /dev/null +++ b/gsl-2.5/doc/specfunc-legendre.rst @@ -0,0 +1,407 @@ +.. index:: + single: Legendre polynomials + single: Legendre functions + single: spherical harmonics + single: conical functions + single: hyperbolic space + +The Legendre Functions and Legendre Polynomials are described in +Abramowitz & Stegun, Chapter 8. These functions are declared in +the header file :file:`gsl_sf_legendre.h`. + +Legendre Polynomials +-------------------- + +.. function:: double gsl_sf_legendre_P1 (double x) + double gsl_sf_legendre_P2 (double x) + double gsl_sf_legendre_P3 (double x) + int gsl_sf_legendre_P1_e (double x, gsl_sf_result * result) + int gsl_sf_legendre_P2_e (double x, gsl_sf_result * result) + int gsl_sf_legendre_P3_e (double x, gsl_sf_result * result) + + These functions evaluate the Legendre polynomials + :math:`P_l(x)` using explicit representations for :math:`l = 1, 2, 3`. +.. Exceptional Return Values: none + +.. function:: double gsl_sf_legendre_Pl (int l, double x) + int gsl_sf_legendre_Pl_e (int l, double x, gsl_sf_result * result) + + These functions evaluate the Legendre polynomial :math:`P_l(x)` + for a specific value of :data:`l`, :data:`x` subject to :math:`l \ge 0` and + :math:`|x| \le 1`. +.. Exceptional Return Values: GSL_EDOM + +.. function:: int gsl_sf_legendre_Pl_array (int lmax, double x, double result_array[]) + int gsl_sf_legendre_Pl_deriv_array (int lmax, double x, double result_array[], double result_deriv_array[]) + + These functions compute arrays of Legendre polynomials + :math:`P_l(x)` and derivatives :math:`dP_l(x)/dx` + for :math:`l = 0, \dots, lmax` and :math:`|x| \le 1`. +.. Exceptional Return Values: GSL_EDOM + +.. function:: double gsl_sf_legendre_Q0 (double x) + int gsl_sf_legendre_Q0_e (double x, gsl_sf_result * result) + + These routines compute the Legendre function :math:`Q_0(x)` for + :math:`x > -1` and :math:`x \ne 1`. +.. Exceptional Return Values: GSL_EDOM + +.. function:: double gsl_sf_legendre_Q1 (double x) + int gsl_sf_legendre_Q1_e (double x, gsl_sf_result * result) + + These routines compute the Legendre function :math:`Q_1(x)` for + :math:`x > -1` and :math:`x \ne 1`. +.. Exceptional Return Values: GSL_EDOM + +.. function:: double gsl_sf_legendre_Ql (int l, double x) + int gsl_sf_legendre_Ql_e (int l, double x, gsl_sf_result * result) + + These routines compute the Legendre function :math:`Q_l(x)` for + :math:`x > -1`, :math:`x \ne 1` and :math:`l \ge 0`. +.. Exceptional Return Values: GSL_EDOM + +Associated Legendre Polynomials and Spherical Harmonics +------------------------------------------------------- + +The following functions compute the associated Legendre polynomials +:math:`P_l^m(x)` which are solutions of the differential equation + +.. only:: not texinfo + + .. math:: (1 - x^2) {d^2 \over dx^2} P_l^m(x) - 2x {d \over dx} P_l^m(x) + + \left( l(l+1) - {m^2 \over 1 - x^2} \right) P_l^m(x) = 0 + +.. only:: texinfo + + :: + + (1 - x^2) d^2 P_l^m(x) / dx^2 P_l^m(x) - 2x d/dx P_l^m(x) + + ( l(l+1) - m^2 / (1 - x^2) ) P_l^m(x) = 0 + +where the degree :math:`l` and order :math:`m` satisfy :math:`0 \le l` and +:math:`0 \le m \le l`. +The functions :math:`P_l^m(x)` grow combinatorially with +:math:`l` and can overflow for :math:`l` larger than about 150. +Alternatively, one may calculate normalized associated Legendre +polynomials. There are a number of different normalization conventions, +and these +functions can be stably computed up to degree and order 2700. The +following normalizations are provided: + +* Schmidt semi-normalization + + Schmidt semi-normalized associated Legendre polynomials are often + used in the magnetics community and are defined as + + .. only:: not texinfo + + .. math:: + + S_l^0(x) &= P_l^0(x) \\ + S_l^m(x) &= (-1)^m \sqrt{2 {(l-m)! \over (l+m)!}} P_l^m(x), m > 0 + + .. only:: texinfo + + :: + + S_l^0(x) = P_l^0(x) + S_l^m(x) = (-1)^m \sqrt((2(l-m)! / (l+m)!)) P_l^m(x), m > 0 + + The factor of :math:`(-1)^m` is called the Condon-Shortley phase + factor and can be excluded if desired by setting the parameter + :code:`csphase = 1` in the functions below. + +* Spherical Harmonic Normalization + + The associated Legendre polynomials suitable for calculating spherical + harmonics are defined as + + .. only:: not texinfo + + .. math:: Y_l^m(x) = (-1)^m \sqrt{{2l + 1 \over 4 \pi} {(l-m)! \over (l+m)!}} P_l^m(x) + + .. only:: texinfo + + :: + + Y_l^m(x) = (-1)^m \sqrt((2l + 1) * (l-m)! / (4 \pi) / (l+m)!) P_l^m(x) + + where again the phase factor :math:`(-1)^m` can be included or excluded + if desired. + +* Full Normalization + + The fully normalized associated Legendre polynomials are defined as + + .. only:: not texinfo + + .. math:: N_l^m(x) = (-1)^m \sqrt{(l + {1 \over 2}) {(l-m)! \over (l+m)!}} P_l^m(x) + + .. only:: texinfo + + :: + + N_l^m(x) = (-1)^m \sqrt((l + 1/2) (l-m)! / (l+m)!) P_l^m(x) + + and have the property + + .. math:: \int_{-1}^1 N_l^m(x)^2 dx = 1 + +The normalized associated Legendre routines below use a recurrence +relation which is stable up to a degree and order of about 2700. +Beyond this, the computed functions could suffer from underflow +leading to incorrect results. Routines are provided to compute +first and second derivatives +:math:`dP_l^m(x)/dx` and :math:`d^2 P_l^m(x)/dx^2` as well as their alternate +versions :math:`d P_l^m(\cos{\theta})/d\theta` and +:math:`d^2 P_l^m(\cos{\theta})/d\theta^2`. While there is a simple +scaling relationship between the two forms, the derivatives +involving :math:`\theta` are heavily used in spherical harmonic +expansions and so these routines are also provided. + +In the functions below, a parameter of type :type:`gsl_sf_legendre_t` +specifies the type of normalization to use. The possible values are + +.. type:: gsl_sf_legendre_t + + ================================== =============================================================================== + Value Description + ================================== =============================================================================== + :code:`GSL_SF_LEGENDRE_NONE` The unnormalized associated Legendre polynomials :math:`P_l^m(x)` + :code:`GSL_SF_LEGENDRE_SCHMIDT` The Schmidt semi-normalized associated Legendre polynomials :math:`S_l^m(x)` + :code:`GSL_SF_LEGENDRE_SPHARM` The spherical harmonic associated Legendre polynomials :math:`Y_l^m(x)` + :code:`GSL_SF_LEGENDRE_FULL` The fully normalized associated Legendre polynomials :math:`N_l^m(x)` + ================================== =============================================================================== + +.. function:: int gsl_sf_legendre_array (const gsl_sf_legendre_t norm, const size_t lmax, const double x, double result_array[]) + int gsl_sf_legendre_array_e (const gsl_sf_legendre_t norm, const size_t lmax, const double x, const double csphase, double result_array[]) + + These functions calculate all normalized associated Legendre + polynomials for :math:`0 \le l \le lmax` and + :math:`0 \le m \le l` for :math:`|x| \le 1`. + The :data:`norm` parameter specifies which normalization is used. + The normalized :math:`P_l^m(x)` values are stored in :data:`result_array`, whose + minimum size can be obtained from calling :func:`gsl_sf_legendre_array_n`. + The array index of :math:`P_l^m(x)` is obtained from calling + :code:`gsl_sf_legendre_array_index(l, m)`. To include or exclude + the Condon-Shortley phase factor of :math:`(-1)^m`, set the parameter + :data:`csphase` to either :math:`-1` or :math:`1` respectively in the + :code:`_e` function. This factor is excluded by default. + +.. function:: int gsl_sf_legendre_deriv_array (const gsl_sf_legendre_t norm, const size_t lmax, const double x, double result_array[], double result_deriv_array[]) + int gsl_sf_legendre_deriv_array_e (const gsl_sf_legendre_t norm, const size_t lmax, const double x, const double csphase, double result_array[], double result_deriv_array[]) + + These functions calculate all normalized associated Legendre + functions and their first derivatives up to degree :data:`lmax` for + :math:`|x| < 1`. + The parameter :data:`norm` specifies the normalization used. The + normalized :math:`P_l^m(x)` values and their derivatives + :math:`dP_l^m(x)/dx` are stored in :data:`result_array` and + :data:`result_deriv_array` respectively. + To include or exclude + the Condon-Shortley phase factor of :math:`(-1)^m`, set the parameter + :data:`csphase` to either :math:`-1` or :math:`1` respectively in the + :code:`_e` function. This factor is excluded by default. + +.. function:: int gsl_sf_legendre_deriv_alt_array (const gsl_sf_legendre_t norm, const size_t lmax, const double x, double result_array[], double result_deriv_array[]) + int gsl_sf_legendre_deriv_alt_array_e (const gsl_sf_legendre_t norm, const size_t lmax, const double x, const double csphase, double result_array[], double result_deriv_array[]) + + These functions calculate all normalized associated Legendre + functions and their (alternate) first derivatives up to degree :data:`lmax` for + :math:`|x| < 1`. + The normalized :math:`P_l^m(x)` values and their derivatives + :math:`dP_l^m(\cos{\theta})/d\theta` are stored in :data:`result_array` and + :data:`result_deriv_array` respectively. + To include or exclude + the Condon-Shortley phase factor of :math:`(-1)^m`, set the parameter + :data:`csphase` to either :math:`-1` or :math:`1` respectively in the + :code:`_e` function. This factor is excluded by default. + +.. function:: int gsl_sf_legendre_deriv2_array (const gsl_sf_legendre_t norm, const size_t lmax, const double x, double result_array[], double result_deriv_array[], double result_deriv2_array[]) + int gsl_sf_legendre_deriv2_array_e (const gsl_sf_legendre_t norm, const size_t lmax, const double x, const double csphase, double result_array[], double result_deriv_array[], double result_deriv2_array[]) + + These functions calculate all normalized associated Legendre + functions and their first and second derivatives up to degree :data:`lmax` for + :math:`|x| < 1`. + The parameter :data:`norm` specifies the normalization used. The + normalized :math:`P_l^m(x)`, their first derivatives + :math:`dP_l^m(x)/dx`, and their second derivatives + :math:`d^2 P_l^m(x)/dx^2` are stored in :data:`result_array`, + :data:`result_deriv_array`, and :data:`result_deriv2_array` respectively. + To include or exclude + the Condon-Shortley phase factor of :math:`(-1)^m`, set the parameter + :data:`csphase` to either :math:`-1` or :math:`1` respectively in the + :code:`_e` function. This factor is excluded by default. + +.. function:: int gsl_sf_legendre_deriv2_alt_array (const gsl_sf_legendre_t norm, const size_t lmax, const double x, double result_array[], double result_deriv_array[], double result_deriv2_array[]) + int gsl_sf_legendre_deriv2_alt_array_e (const gsl_sf_legendre_t norm, const size_t lmax, const double x, const double csphase, double result_array[], double result_deriv_array[], double result_deriv2_array[]) + + These functions calculate all normalized associated Legendre + functions and their (alternate) first and second derivatives up to degree + :data:`lmax` for + :math:`|x| < 1`. + The parameter :data:`norm` specifies the normalization used. The + normalized :math:`P_l^m(x)`, their first derivatives + :math:`dP_l^m(\cos{\theta})/d\theta`, and their second derivatives + :math:`d^2 P_l^m(\cos{\theta})/d\theta^2` are stored in :data:`result_array`, + :data:`result_deriv_array`, and :data:`result_deriv2_array` respectively. + To include or exclude + the Condon-Shortley phase factor of :math:`(-1)^m`, set the parameter + :data:`csphase` to either :math:`-1` or :math:`1` respectively in the + :code:`_e` function. This factor is excluded by default. + +.. function:: size_t gsl_sf_legendre_array_n (const size_t lmax) + + This function returns the minimum array size for maximum degree :data:`lmax` + needed for the array versions of the associated Legendre functions. + Size is calculated as the total number of :math:`P_l^m(x)` functions, + plus extra space for precomputing multiplicative factors used in the + recurrence relations. + +.. function:: size_t gsl_sf_legendre_array_index (const size_t l, const size_t m) + + This function returns the index into :data:`result_array`, + :data:`result_deriv_array`, or :data:`result_deriv2_array` corresponding + to :math:`P_l^m(x)`, :math:`P_l^{'m}(x)`, or :math:`P_l^{''m}(x)`. The + index is given by :math:`l(l+1)/2 + m`. + +.. function:: double gsl_sf_legendre_Plm (int l, int m, double x) + int gsl_sf_legendre_Plm_e (int l, int m, double x, gsl_sf_result * result) + + These routines compute the associated Legendre polynomial + :math:`P_l^m(x)` for :math:`m \ge 0`, + :math:`l \ge m`, and :math:`|x| \le 1`. +.. Exceptional Return Values: GSL_EDOM, GSL_EOVRFLW + +.. function:: double gsl_sf_legendre_sphPlm (int l, int m, double x) + int gsl_sf_legendre_sphPlm_e (int l, int m, double x, gsl_sf_result * result) + + These routines compute the normalized associated Legendre polynomial + :math:`\sqrt{(2l+1)/(4\pi)} \sqrt{(l-m)!/(l+m)!} P_l^m(x)` suitable + for use in spherical harmonics. The parameters must satisfy :math:`m \ge 0`, + :math:`l \ge m`, and :math:`|x| \le 1`. + These routines avoid the overflows + that occur for the standard normalization of :math:`P_l^m(x)`. +.. Exceptional Return Values: GSL_EDOM + +.. function:: int gsl_sf_legendre_Plm_array (int lmax, int m, double x, double result_array[]) + int gsl_sf_legendre_Plm_deriv_array (int lmax, int m, double x, double result_array[], double result_deriv_array[]) + + These functions are now deprecated and will be removed in a future + release; see :func:`gsl_sf_legendre_array` and + :func:`gsl_sf_legendre_deriv_array`. + +.. function:: int gsl_sf_legendre_sphPlm_array (int lmax, int m, double x, double result_array[]) + int gsl_sf_legendre_sphPlm_deriv_array (int lmax, int m, double x, double result_array[], double result_deriv_array[]) + + These functions are now deprecated and will be removed in a future + release; see :func:`gsl_sf_legendre_array` and + :func:`gsl_sf_legendre_deriv_array`. + +.. function:: int gsl_sf_legendre_array_size (const int lmax, const int m) + + This function is now deprecated and will be removed in a future + release. + +Conical Functions +----------------- + +The Conical Functions :math:`P^\mu_{-(1/2)+i\lambda}(x)` +and :math:`Q^\mu_{-(1/2)+i\lambda}` +are described in Abramowitz & Stegun, Section 8.12. + +.. function:: double gsl_sf_conicalP_half (double lambda, double x) + int gsl_sf_conicalP_half_e (double lambda, double x, gsl_sf_result * result) + + These routines compute the irregular Spherical Conical Function + :math:`P^{1/2}_{-1/2 + i \lambda}(x)` for :math:`x > -1`. +.. Exceptional Return Values: GSL_EDOM + +.. function:: double gsl_sf_conicalP_mhalf (double lambda, double x) + int gsl_sf_conicalP_mhalf_e (double lambda, double x, gsl_sf_result * result) + + These routines compute the regular Spherical Conical Function + :math:`P^{-1/2}_{-1/2 + i \lambda}(x)` for :math:`x > -1`. +.. Exceptional Return Values: GSL_EDOM + +.. function:: double gsl_sf_conicalP_0 (double lambda, double x) + int gsl_sf_conicalP_0_e (double lambda, double x, gsl_sf_result * result) + + These routines compute the conical function + :math:`P^0_{-1/2 + i \lambda}(x)` for :math:`x > -1`. +.. Exceptional Return Values: GSL_EDOM + +.. function:: double gsl_sf_conicalP_1 (double lambda, double x) + int gsl_sf_conicalP_1_e (double lambda, double x, gsl_sf_result * result) + + These routines compute the conical function + :math:`P^1_{-1/2 + i \lambda}(x)` for :math:`x > -1`. +.. Exceptional Return Values: GSL_EDOM + +.. function:: double gsl_sf_conicalP_sph_reg (int l, double lambda, double x) + int gsl_sf_conicalP_sph_reg_e (int l, double lambda, double x, gsl_sf_result * result) + + These routines compute the Regular Spherical Conical Function + :math:`P^{-1/2-l}_{-1/2 + i \lambda}(x)` + for :math:`x > -1` and :math:`l \ge -1`. +.. Exceptional Return Values: GSL_EDOM + +.. function:: double gsl_sf_conicalP_cyl_reg (int m, double lambda, double x) + int gsl_sf_conicalP_cyl_reg_e (int m, double lambda, double x, gsl_sf_result * result) + + These routines compute the Regular Cylindrical Conical Function + :math:`P^{-m}_{-1/2 + i \lambda}(x)` + for :math:`x > -1` and :math:`m \ge -1`. +.. Exceptional Return Values: GSL_EDOM + +Radial Functions for Hyperbolic Space +------------------------------------- + +The following spherical functions are specializations of Legendre +functions which give the regular eigenfunctions of the Laplacian on a +3-dimensional hyperbolic space :math:`H^3`. Of particular interest is +the flat limit, :math:`\lambda \to \infty`, :math:`\eta \to 0`, +:math:`\lambda\eta` fixed. + +.. function:: double gsl_sf_legendre_H3d_0 (double lambda, double eta) + int gsl_sf_legendre_H3d_0_e (double lambda, double eta, gsl_sf_result * result) + + These routines compute the zeroth radial eigenfunction of the Laplacian on the + 3-dimensional hyperbolic space, + + .. math:: L^{H3d}_0(\lambda,\eta) := {\sin(\lambda\eta) \over \lambda\sinh(\eta)} + + for :math:`\eta \ge 0`. + In the flat limit this takes the form + :math:`L^{H3d}_0(\lambda,\eta) = j_0(\lambda\eta)`. +.. Exceptional Return Values: GSL_EDOM + +.. function:: double gsl_sf_legendre_H3d_1 (double lambda, double eta) + int gsl_sf_legendre_H3d_1_e (double lambda, double eta, gsl_sf_result * result) + + These routines compute the first radial eigenfunction of the Laplacian on + the 3-dimensional hyperbolic space, + + .. math:: L^{H3d}_1(\lambda,\eta) := {1\over\sqrt{\lambda^2 + 1}} {\left(\sin(\lambda \eta)\over \lambda \sinh(\eta)\right)} \left(\coth(\eta) - \lambda \cot(\lambda\eta)\right) + + for :math:`\eta \ge 0` + In the flat limit this takes the form + :math:`L^{H3d}_1(\lambda,\eta) = j_1(\lambda\eta)`. +.. Exceptional Return Values: GSL_EDOM + +.. function:: double gsl_sf_legendre_H3d (int l, double lambda, double eta) + int gsl_sf_legendre_H3d_e (int l, double lambda, double eta, gsl_sf_result * result) + + These routines compute the :data:`l`-th radial eigenfunction of the + Laplacian on the 3-dimensional hyperbolic space :math:`\eta \ge 0` and + :math:`l \ge 0`. + In the flat limit this takes the form + :math:`L^{H3d}_l(\lambda,\eta) = j_l(\lambda\eta)`. +.. Exceptional Return Values: GSL_EDOM + +.. function:: int gsl_sf_legendre_H3d_array (int lmax, double lambda, double eta, double result_array[]) + + This function computes an array of radial eigenfunctions + :math:`L^{H3d}_l( \lambda, \eta)` + for :math:`0 \le l \le lmax`. +.. Exceptional Return Values: diff --git a/gsl-2.5/doc/specfunc-log.rst b/gsl-2.5/doc/specfunc-log.rst new file mode 100644 index 00000000..173364c1 --- /dev/null +++ b/gsl-2.5/doc/specfunc-log.rst @@ -0,0 +1,43 @@ +.. index:: logarithm and related functions + +Information on the properties of the Logarithm function can be found in +Abramowitz & Stegun, Chapter 4. The functions described in this section +are declared in the header file :file:`gsl_sf_log.h`. + +.. function:: double gsl_sf_log (double x) + int gsl_sf_log_e (double x, gsl_sf_result * result) + + These routines compute the logarithm of :data:`x`, :math:`\log(x)`, for + :math:`x > 0`. +.. Exceptional Return Values: GSL_EDOM + +.. function:: double gsl_sf_log_abs (double x) + int gsl_sf_log_abs_e (double x, gsl_sf_result * result) + + These routines compute the logarithm of the magnitude of :data:`x`, + :math:`\log(|x|)`, for :math:`x \ne 0`. +.. Exceptional Return Values: GSL_EDOM + +.. function:: int gsl_sf_complex_log_e (double zr, double zi, gsl_sf_result * lnr, gsl_sf_result * theta) + + This routine computes the complex logarithm of :math:`z = z_r + i z_i`. + The results are returned as :data:`lnr`, :data:`theta` such that + :math:`\exp(lnr + i \theta) = z_r + i z_i`, where :math:`\theta` lies in + the range :math:`[-\pi,\pi]`. +.. Exceptional Return Values: GSL_EDOM + +.. function:: double gsl_sf_log_1plusx (double x) + int gsl_sf_log_1plusx_e (double x, gsl_sf_result * result) + + These routines compute :math:`\log(1 + x)` for :math:`x > -1` using an + algorithm that is accurate for small :data:`x`. +.. Domain: x > -1.0 +.. Exceptional Return Values: GSL_EDOM + +.. function:: double gsl_sf_log_1plusx_mx (double x) + int gsl_sf_log_1plusx_mx_e (double x, gsl_sf_result * result) + + These routines compute :math:`\log(1 + x) - x` for :math:`x > -1` using an + algorithm that is accurate for small :data:`x`. +.. Domain: x > -1.0 +.. Exceptional Return Values: GSL_EDOM diff --git a/gsl-2.5/doc/specfunc-mathieu.rst b/gsl-2.5/doc/specfunc-mathieu.rst new file mode 100644 index 00000000..585f9615 --- /dev/null +++ b/gsl-2.5/doc/specfunc-mathieu.rst @@ -0,0 +1,249 @@ +.. index:: Mathieu functions + +The routines described in this section compute the angular and radial +Mathieu functions, and their characteristic values. Mathieu +functions are the solutions of the following two differential +equations: + +.. only:: not texinfo + + .. math:: + + {{d^2 y}\over{d v^2}}& + (a - 2q\cos 2v)y = 0 \\ + {{d^2 f}\over{d u^2}}& - (a - 2q\cosh 2u)f = 0 + +.. only:: texinfo + + :: + + d^2y/dv^2 + (a - 2q\cos 2v)y = 0 + d^2f/du^2 - (a - 2q\cosh 2u)f = 0 + +The angular Mathieu functions :math:`ce_r(x,q)`, :math:`se_r(x,q)` are +the even and odd periodic solutions of the first equation, which is known as Mathieu's equation. These exist +only for the discrete sequence of characteristic values :math:`a = a_r(q)` +(even-periodic) and :math:`a = b_r(q)` (odd-periodic). + +The radial Mathieu functions :math:`Mc^{(j)}_{r}(z,q)` and +:math:`Ms^{(j)}_{r}(z,q)` +are the solutions of the second equation, +which is referred to as Mathieu's modified equation. The +radial Mathieu functions of the first, second, third and fourth kind +are denoted by the parameter :math:`j`, which takes the value 1, 2, 3 +or 4. + +.. The angular Mathieu functions can be divided into four types as +.. @tex +.. \beforedisplay +.. $$ +.. \eqalign{ +.. x & = \sum_{m=0}^\infty A_{2m+p} \cos(2m+p)\phi, \quad p = 0, 1, \cr +.. x & = \sum_{m=0}^\infty B_{2m+p} \sin(2m+p)\phi, \quad p = 0, 1. +.. } +.. $$ +.. \afterdisplay +.. @end tex +.. @ifinfo + +.. @example +.. x = \sum_(m=0)^\infty A_(2m+p) \cos(2m+p)\phi, p = 0, 1, +.. x = \sum_(m=0)^\infty B_(2m+p) \sin(2m+p)\phi, p = 0, 1. +.. @end example + +.. @end ifinfo +.. @noindent +.. The nomenclature used for the angular Mathieu functions is :math:`ce_n` +.. for the first solution and :math:`se_n` for the second. + +.. Similar solutions exist for the radial Mathieu functions by replacing +.. the trigonometric functions with their corresponding hyperbolic +.. functions as shown below. +.. @tex +.. \beforedisplay +.. $$ +.. \eqalign{ +.. x & = \sum_{m=0}^\infty A_{2m+p} \cosh(2m+p)u, \quad p = 0, 1, \cr +.. x & = \sum_{m=0}^\infty B_{2m+p} \sinh(2m+p)u, \quad p = 0, 1. +.. } +.. $$ +.. \afterdisplay +.. @end tex +.. @ifinfo + +.. @example +.. x = \sum_(m=0)^\infty A_(2m+p) \cosh(2m+p)u, p = 0, 1, +.. x = \sum_(m=0)^\infty B_(2m+p) \sinh(2m+p)u, p = 0, 1. +.. @end example + +.. @end ifinfo +.. @noindent +.. The nomenclature used for the radial Mathieu functions is :math:`Mc_n` +.. for the first solution and :math:`Ms_n` for the second. The hyperbolic +.. series do not always converge at an acceptable rate. Therefore most +.. texts on the subject suggest using the following equivalent equations +.. that are expanded in series of Bessel and Hankel functions. +.. @tex +.. \beforedisplay +.. $$ +.. \eqalign{ +.. Mc_{2n}^{(j)}(x,q) & = \sum_{m=0}^\infty (-1)^{r+k} +.. A_{2m}^{2n}(q)\left[J_m(u_1)Z_m^{(j)}(u_2) + +.. J_m(u_1)Z_m^{(j)}(u_2)\right]/A_2^{2n} \cr +.. Mc_{2n+1}^{(j)}(x,q) & = \sum_{m=0}^\infty (-1)^{r+k} +.. A_{2m+1}^{2n+1}(q)\left[J_m(u_1)Z_{m+1}^{(j)}(u_2) + +.. J_{m+1}(u_1)Z_m^{(j)}(u_2)\right]/A_1^{2n+1} \cr +.. Ms_{2n}^{(j)}(x,q) & = \sum_{m=1}^\infty (-1)^{r+k} +.. B_{2m}^{2n}(q)\left[J_{m-1}(u_1)Z_{m+1}^{(j)}(u_2) + +.. J_{m+1}(u_1)Z_{m-1}^{(j)}(u_2)\right]/B_2^{2n} \cr +.. Ms_{2n+1}^{(j)}(x,q) & = \sum_{m=0}^\infty (-1)^{r+k} +.. B_{2m+1}^{2n+1}(q)\left[J_m(u_1)Z_{m+1}^{(j)}(u_2) + +.. J_{m+1}(u_1)Z_m^{(j)}(u_2)\right]/B_1^{2n+1} +.. } +.. $$ +.. \afterdisplay +.. @end tex +.. @ifinfo + +.. @example +.. Mc_(2n)^(j)(x,q) = \sum_(m=0)^\infty (-1)^(r+k) A_(2m)^(2n)(q) +.. [J_m(u_1)Z_m^(j)(u_2) + J_m(u_1)Z_m^(j)(u_2)]/A_2^(2n) +.. Mc_(2n+1)^(j)(x,q) = \sum_(m=0)^\infty (-1)^(r+k) A_(2m+1)^(2n+1)(q) +.. [J_m(u_1)Z_(m+1)^(j)(u_2) + J_(m+1)(u_1)Z_m^(j)(u_2)]/A_1^(2n+1) +.. Ms_(2n)^(j)(x,q) = \sum_(m=1)^\infty (-1)^(r+k) B_(2m)^(2n)(q) +.. [J_(m-1)(u_1)Z_(m+1)^(j)(u_2) + J_(m+1)(u_1)Z_(m-1)^(j)(u_2)]/B_2^(2n) +.. Ms_(2n+1)^(j)(x,q) = \sum_(m=0)^\infty (-1)^(r+k) B_(2m+1)^(2n+1)(q) +.. [J_m(u_1)Z_(m+1)^(j)(u_2) + J_(m+1)(u_1)Z_m^(j)(u_2)]/B_1^(2n+1) +.. @end example + +.. @end ifinfo +.. @noindent +.. where @c{$u_1 = \sqrt{q} \exp(-x)$} +.. @math{u_1 = \sqrt@{q@} \exp(-x)} and @c{$u_2 = \sqrt@{q@} \exp(x)$} +.. @math{u_2 = \sqrt@{q@} \exp(x)} and +.. @tex +.. \beforedisplay +.. $$ +.. \eqalign{ +.. Z_m^{(1)}(u) & = J_m(u) \cr +.. Z_m^{(2)}(u) & = Y_m(u) \cr +.. Z_m^{(3)}(u) & = H_m^{(1)}(u) \cr +.. Z_m^{(4)}(u) & = H_m^{(2)}(u) +.. } +.. $$ +.. \afterdisplay +.. @end tex +.. @ifinfo + +.. @example +.. Z_m^(1)(u) = J_m(u) +.. Z_m^(2)(u) = Y_m(u) +.. Z_m^(3)(u) = H_m^(1)(u) +.. Z_m^(4)(u) = H_m^(2)(u) +.. @end example + +.. @end ifinfo +.. @noindent +.. where @math{J_m(u)}, @math{Y_m(u)}, @math{H_m^{(1)}(u)}, and +.. :math:`H_m^{(2)}(u)` are the regular and irregular Bessel functions and +.. the Hankel functions, respectively. + +For more information on the Mathieu functions, see Abramowitz and +Stegun, Chapter 20. These functions are defined in the header file +:file:`gsl_sf_mathieu.h`. + +Mathieu Function Workspace +-------------------------- + +The Mathieu functions can be computed for a single order or +for multiple orders, using array-based routines. The array-based +routines require a preallocated workspace. + +.. type:: gsl_sf_mathieu_workspace + + Workspace required for array-based routines + +.. function:: gsl_sf_mathieu_workspace * gsl_sf_mathieu_alloc (size_t n, double qmax) + + This function returns a workspace for the array versions of the + Mathieu routines. The arguments n and :data:`qmax` specify the + maximum order and :math:`q`-value of Mathieu functions which can be + computed with this workspace. + +.. This is required in order to properly +.. terminate the infinite eigenvalue matrix for high precision solutions. +.. The characteristic values for all orders :math:`0 \to n` are stored in +.. the work structure array element @kbd{work->char_value}. + +.. function:: void gsl_sf_mathieu_free (gsl_sf_mathieu_workspace * work) + + This function frees the workspace :data:`work`. + +Mathieu Function Characteristic Values +-------------------------------------- +.. index:: Mathieu Function Characteristic Values + +.. function:: int gsl_sf_mathieu_a (int n, double q) + int gsl_sf_mathieu_a_e (int n, double q, gsl_sf_result * result) + int gsl_sf_mathieu_b (int n, double q) + int gsl_sf_mathieu_b_e (int n, double q, gsl_sf_result * result) + + These routines compute the characteristic values :math:`a_n(q)`, + :math:`b_n(q)` of the Mathieu functions :math:`ce_n(q,x)` and + :math:`se_n(q,x)`, respectively. + +.. function:: int gsl_sf_mathieu_a_array (int order_min, int order_max, double q, gsl_sf_mathieu_workspace * work, double result_array[]) + int gsl_sf_mathieu_b_array (int order_min, int order_max, double q, gsl_sf_mathieu_workspace * work, double result_array[]) + + These routines compute a series of Mathieu characteristic values + :math:`a_n(q)`, :math:`b_n(q)` for :math:`n` from :data:`order_min` to + :data:`order_max` inclusive, storing the results in the array :data:`result_array`. + +Angular Mathieu Functions +------------------------- +.. index:: + single: Angular Mathieu Functions + single: ce(q,x), Mathieu function + single: se(q,x), Mathieu function + +.. function:: int gsl_sf_mathieu_ce (int n, double q, double x) + int gsl_sf_mathieu_ce_e (int n, double q, double x, gsl_sf_result * result) + int gsl_sf_mathieu_se (int n, double q, double x) + int gsl_sf_mathieu_se_e (int n, double q, double x, gsl_sf_result * result) + + These routines compute the angular Mathieu functions :math:`ce_n(q,x)` + and :math:`se_n(q,x)`, respectively. + +.. function:: int gsl_sf_mathieu_ce_array (int nmin, int nmax, double q, double x, gsl_sf_mathieu_workspace * work, double result_array[]) + int gsl_sf_mathieu_se_array (int nmin, int nmax, double q, double x, gsl_sf_mathieu_workspace * work, double result_array[]) + + These routines compute a series of the angular Mathieu functions + :math:`ce_n(q,x)` and :math:`se_n(q,x)` of order :math:`n` from + :data:`nmin` to :data:`nmax` inclusive, storing the results in the array + :data:`result_array`. + +Radial Mathieu Functions +------------------------ +.. index:: Radial Mathieu Functions + +.. function:: int gsl_sf_mathieu_Mc (int j, int n, double q, double x) + int gsl_sf_mathieu_Mc_e (int j, int n, double q, double x, gsl_sf_result * result) + int gsl_sf_mathieu_Ms (int j, int n, double q, double x) + int gsl_sf_mathieu_Ms_e (int j, int n, double q, double x, gsl_sf_result * result) + + These routines compute the radial :data:`j`-th kind Mathieu functions + :math:`Mc_n^{(j)}(q,x)` and :math:`Ms_n^{(j)}(q,x)` of order :data:`n`. + + The allowed values of :data:`j` are 1 and 2. + The functions for :math:`j = 3,4` can be computed as + :math:`M_n^{(3)} = M_n^{(1)} + iM_n^{(2)}` and + :math:`M_n^{(4)} = M_n^{(1)} - iM_n^{(2)}`, + where + :math:`M_n^{(j)} = Mc_n^{(j)}` or + :math:`Ms_n^{(j)}`. + +.. function:: int gsl_sf_mathieu_Mc_array (int j, int nmin, int nmax, double q, double x, gsl_sf_mathieu_workspace * work, double result_array[]) + int gsl_sf_mathieu_Ms_array (int j, int nmin, int nmax, double q, double x, gsl_sf_mathieu_workspace * work, double result_array[]) + + These routines compute a series of the radial Mathieu functions of + kind :data:`j`, with order from :data:`nmin` to :data:`nmax` inclusive, storing the + results in the array :data:`result_array`. diff --git a/gsl-2.5/doc/specfunc-pow-int.rst b/gsl-2.5/doc/specfunc-pow-int.rst new file mode 100644 index 00000000..54aaf4cc --- /dev/null +++ b/gsl-2.5/doc/specfunc-pow-int.rst @@ -0,0 +1,20 @@ +.. index:: + single: power function + single: integer powers + +The following functions are equivalent to the function :func:`gsl_pow_int` +with an error estimate. These functions are +declared in the header file :file:`gsl_sf_pow_int.h`. + +.. function:: double gsl_sf_pow_int (double x, int n) + int gsl_sf_pow_int_e (double x, int n, gsl_sf_result * result) + + These routines compute the power :math:`x^n` for integer :data:`n`. The + power is computed using the minimum number of multiplications. For + example, :math:`x^8` is computed as :math:`((x^2)^2)^2`, requiring only 3 + multiplications. For reasons of efficiency, these functions do not + check for overflow or underflow conditions. The following is a simple example:: + + #include + /* compute 3.0**12 */ + double y = gsl_sf_pow_int(3.0, 12); diff --git a/gsl-2.5/doc/specfunc-psi.rst b/gsl-2.5/doc/specfunc-psi.rst new file mode 100644 index 00000000..68400525 --- /dev/null +++ b/gsl-2.5/doc/specfunc-psi.rst @@ -0,0 +1,76 @@ +.. index:: + single: psi function + single: digamma function + single: polygamma functions + +The polygamma functions of order :math:`n` are defined by + +.. only:: not texinfo + + .. math:: \psi^{(n)}(x) = \left(d \over dx\right)^n \psi(x) = \left(d \over dx\right)^{n+1} \log(\Gamma(x)) + +.. only:: texinfo + + :: + + \psi^{(n)}(x) = (d/dx)^n \psi(x) = (d/dx)^{n+1} \log(\Gamma(x)) + +where :math:`\psi(x) = \Gamma'(x)/\Gamma(x)` is known as the digamma function. +These functions are declared in the header file :file:`gsl_sf_psi.h`. + +Digamma Function +---------------- + +.. function:: double gsl_sf_psi_int (int n) + int gsl_sf_psi_int_e (int n, gsl_sf_result * result) + + These routines compute the digamma function :math:`\psi(n)` for positive + integer :data:`n`. The digamma function is also called the Psi function. +.. Domain: n integer, n > 0 +.. Exceptional Return Values: GSL_EDOM + +.. function:: double gsl_sf_psi (double x) + int gsl_sf_psi_e (double x, gsl_sf_result * result) + + These routines compute the digamma function :math:`\psi(x)` for general + :data:`x`, :math:`x \ne 0`. +.. Domain: x != 0.0, -1.0, -2.0, ... +.. Exceptional Return Values: GSL_EDOM, GSL_ELOSS + +.. function:: double gsl_sf_psi_1piy (double y) + int gsl_sf_psi_1piy_e (double y, gsl_sf_result * result) + + These routines compute the real part of the digamma function on the line + :math:`1 + i y`, :math:`\Re[\psi(1 + i y)]`. +.. exceptions: none +.. Exceptional Return Values: none + +Trigamma Function +----------------- + +.. function:: double gsl_sf_psi_1_int (int n) + int gsl_sf_psi_1_int_e (int n, gsl_sf_result * result) + + These routines compute the Trigamma function :math:`\psi'(n)` for + positive integer :math:`n`. +.. Domain: n integer, n > 0 +.. Exceptional Return Values: GSL_EDOM + +.. function:: double gsl_sf_psi_1 (double x) + int gsl_sf_psi_1_e (double x, gsl_sf_result * result) + + These routines compute the Trigamma function :math:`\psi'(x)` for + general :data:`x`. +.. Domain: x != 0.0, -1.0, -2.0, ... +.. Exceptional Return Values: GSL_EDOM, GSL_ELOSS + +Polygamma Function +------------------ + +.. function:: double gsl_sf_psi_n (int n, double x) + int gsl_sf_psi_n_e (int n, double x, gsl_sf_result * result) + + These routines compute the polygamma function :math:`\psi^{(n)}(x)` for + :math:`n \ge 0`, :math:`x > 0`. +.. Domain: n >= 0, x > 0.0 +.. Exceptional Return Values: GSL_EDOM diff --git a/gsl-2.5/doc/specfunc-synchrotron.rst b/gsl-2.5/doc/specfunc-synchrotron.rst new file mode 100644 index 00000000..3bffdb83 --- /dev/null +++ b/gsl-2.5/doc/specfunc-synchrotron.rst @@ -0,0 +1,21 @@ +.. index:: synchrotron functions + +The functions described in this section are declared in the header file +:file:`gsl_sf_synchrotron.h`. + +.. function:: double gsl_sf_synchrotron_1 (double x) + int gsl_sf_synchrotron_1_e (double x, gsl_sf_result * result) + + These routines compute the first synchrotron function + :math:`x \int_x^\infty dt K_{5/3}(t)` + for :math:`x \ge 0`. +.. Domain: x >= 0.0 +.. Exceptional Return Values: GSL_EDOM, GSL_EUNDRFLW + +.. function:: double gsl_sf_synchrotron_2 (double x) + int gsl_sf_synchrotron_2_e (double x, gsl_sf_result * result) + + These routines compute the second synchrotron function + :math:`x K_{2/3}(x)` for :math:`x \ge 0`. +.. Domain: x >= 0.0 +.. Exceptional Return Values: GSL_EDOM, GSL_EUNDRFLW diff --git a/gsl-2.5/doc/specfunc-transport.rst b/gsl-2.5/doc/specfunc-transport.rst new file mode 100644 index 00000000..bb30df1d --- /dev/null +++ b/gsl-2.5/doc/specfunc-transport.rst @@ -0,0 +1,32 @@ +.. index:: transport functions + +The transport functions :math:`J(n,x)` are defined by the integral +representations + +.. math:: J(n,x) = \int_0^x t^n e^t /(e^t - 1)^2 dt + +They are declared in the header file :file:`gsl_sf_transport.h`. + +.. function:: double gsl_sf_transport_2 (double x) + int gsl_sf_transport_2_e (double x, gsl_sf_result * result) + + These routines compute the transport function :math:`J(2,x)`. +.. Exceptional Return Values: GSL_EDOM + +.. function:: double gsl_sf_transport_3 (double x) + int gsl_sf_transport_3_e (double x, gsl_sf_result * result) + + These routines compute the transport function :math:`J(3,x)`. +.. Exceptional Return Values: GSL_EDOM, GSL_EUNDRFLW + +.. function:: double gsl_sf_transport_4 (double x) + int gsl_sf_transport_4_e (double x, gsl_sf_result * result) + + These routines compute the transport function :math:`J(4,x)`. +.. Exceptional Return Values: GSL_EDOM, GSL_EUNDRFLW + +.. function:: double gsl_sf_transport_5 (double x) + int gsl_sf_transport_5_e (double x, gsl_sf_result * result) + + These routines compute the transport function :math:`J(5,x)`. +.. Exceptional Return Values: GSL_EDOM, GSL_EUNDRFLW diff --git a/gsl-2.5/doc/specfunc-trig.rst b/gsl-2.5/doc/specfunc-trig.rst new file mode 100644 index 00000000..e189e73d --- /dev/null +++ b/gsl-2.5/doc/specfunc-trig.rst @@ -0,0 +1,164 @@ +.. index:: trigonometric functions + +The library includes its own trigonometric functions in order to provide +consistency across platforms and reliable error estimates. These +functions are declared in the header file :file:`gsl_sf_trig.h`. + +Circular Trigonometric Functions +-------------------------------- + +.. index:: + single: sine function, special functions + +.. function:: double gsl_sf_sin (double x) + int gsl_sf_sin_e (double x, gsl_sf_result * result) + + These routines compute the sine function :math:`\sin(x)`. +.. Exceptional Return Values: + +.. index:: + single: cosine function, special functions + +.. function:: double gsl_sf_cos (double x) + int gsl_sf_cos_e (double x, gsl_sf_result * result) + + These routines compute the cosine function :math:`\cos(x)`. +.. Exceptional Return Values: + +.. index:: + single: hypot function, special functions + +.. function:: double gsl_sf_hypot (double x, double y) + int gsl_sf_hypot_e (double x, double y, gsl_sf_result * result) + + These routines compute the hypotenuse function :math:`\sqrt{x^2 + y^2}` + avoiding overflow and underflow. +.. Exceptional Return Values: + +.. index:: + single: complex sinc function, special functions + +.. function:: double gsl_sf_sinc (double x) + int gsl_sf_sinc_e (double x, gsl_sf_result * result) + + These routines compute :math:`\sinc(x) = \sin(\pi x) / (\pi x)` for any + value of :data:`x`. +.. Exceptional Return Values: none + +Trigonometric Functions for Complex Arguments +--------------------------------------------- + +.. index:: + single: complex sine function, special functions + +.. function:: int gsl_sf_complex_sin_e (double zr, double zi, gsl_sf_result * szr, gsl_sf_result * szi) + + This function computes the complex sine, :math:`\sin(z_r + i z_i)` storing + the real and imaginary parts in :data:`szr`, :data:`szi`. +.. Exceptional Return Values: GSL_EOVRFLW + +.. index:: + single: complex cosine function, special functions + +.. function:: int gsl_sf_complex_cos_e (double zr, double zi, gsl_sf_result * czr, gsl_sf_result * czi) + + This function computes the complex cosine, :math:`\cos(z_r + i z_i)` storing + the real and imaginary parts in :data:`czr`, :data:`czi`. +.. Exceptional Return Values: GSL_EOVRFLW + +.. index:: + single: complex log sine function, special functions + +.. function:: int gsl_sf_complex_logsin_e (double zr, double zi, gsl_sf_result * lszr, gsl_sf_result * lszi) + + This function computes the logarithm of the complex sine, + :math:`\log(\sin(z_r + i z_i))` storing the real and imaginary parts in + :data:`lszr`, :data:`lszi`. +.. Exceptional Return Values: GSL_EDOM, GSL_ELOSS + +Hyperbolic Trigonometric Functions +---------------------------------- + +.. index:: logarithm of sinh function, special functions + +.. function:: double gsl_sf_lnsinh (double x) + int gsl_sf_lnsinh_e (double x, gsl_sf_result * result) + + These routines compute :math:`\log(\sinh(x))` for :math:`x > 0`. +.. Domain: x > 0 +.. Exceptional Return Values: GSL_EDOM + +.. index:: + single: logarithm of cosh function, special functions + +.. function:: double gsl_sf_lncosh (double x) + int gsl_sf_lncosh_e (double x, gsl_sf_result * result) + + These routines compute :math:`\log(\cosh(x))` for any :data:`x`. +.. Exceptional Return Values: none + +Conversion Functions +-------------------- +.. index:: + single: polar to rectangular conversion + single: rectangular to polar conversion + +.. function:: int gsl_sf_polar_to_rect (double r, double theta, gsl_sf_result * x, gsl_sf_result * y) + + This function converts the polar coordinates (:data:`r`, :data:`theta`) to + rectilinear coordinates (:data:`x`, :data:`y`), :math:`x = r\cos(\theta)`, + :math:`y = r\sin(\theta)`. +.. Exceptional Return Values: GSL_ELOSS + +.. function:: int gsl_sf_rect_to_polar (double x, double y, gsl_sf_result * r, gsl_sf_result * theta) + + This function converts the rectilinear coordinates (:data:`x`, :data:`y`) to + polar coordinates (:data:`r`, :data:`theta`), such that :math:`x = r\cos(\theta)`, + :math:`y = r\sin(\theta)`. The argument :data:`theta` + lies in the range :math:`[-\pi, \pi]`. +.. Exceptional Return Values: GSL_EDOM + +Restriction Functions +--------------------- +.. index:: + single: angular reduction + single: reduction of angular variables + +.. function:: double gsl_sf_angle_restrict_symm (double theta) + int gsl_sf_angle_restrict_symm_e (double * theta) + + These routines force the angle :data:`theta` to lie in the range + :math:`(-\pi,\pi]`. + + Note that the mathematical value of :math:`\pi` is slightly greater + than :macro:`M_PI`, so the machine numbers :macro:`M_PI` and :macro:`-M_PI` + are included in the range. +.. Exceptional Return Values: GSL_ELOSS + +.. function:: double gsl_sf_angle_restrict_pos (double theta) + int gsl_sf_angle_restrict_pos_e (double * theta) + + These routines force the angle :data:`theta` to lie in the range :math:`[0, 2\pi)`. + + Note that the mathematical value of :math:`2\pi` is slightly greater + than :code:`2*M_PI`, so the machine number :code:`2*M_PI` is included in + the range. + +.. Exceptional Return Values: GSL_ELOSS + +Trigonometric Functions With Error Estimates +-------------------------------------------- + +.. function:: int gsl_sf_sin_err_e (double x, double dx, gsl_sf_result * result) + + This routine computes the sine of an angle :data:`x` with an associated + absolute error :data:`dx`, + :math:`\sin(x \pm dx)`. Note that this function is provided in the error-handling form only since + its purpose is to compute the propagated error. + +.. function:: int gsl_sf_cos_err_e (double x, double dx, gsl_sf_result * result) + + This routine computes the cosine of an angle :data:`x` with an associated + absolute error :data:`dx`, + :math:`\cos(x \pm dx)`. Note that this function is provided in the error-handling form only since + its purpose is to compute the propagated error. diff --git a/gsl-2.5/doc/specfunc-zeta.rst b/gsl-2.5/doc/specfunc-zeta.rst new file mode 100644 index 00000000..f37702c8 --- /dev/null +++ b/gsl-2.5/doc/specfunc-zeta.rst @@ -0,0 +1,90 @@ +.. index:: Zeta functions + +The Riemann zeta function is defined in Abramowitz & Stegun, Section +23.2. The functions described in this section are declared in the +header file :file:`gsl_sf_zeta.h`. + +Riemann Zeta Function +--------------------- +.. index:: Riemann Zeta Function + +The Riemann zeta function is defined by the infinite sum + +.. math:: \zeta(s) = \sum_{k=1}^\infty k^{-s} + +.. function:: double gsl_sf_zeta_int (int n) + int gsl_sf_zeta_int_e (int n, gsl_sf_result * result) + + These routines compute the Riemann zeta function :math:`\zeta(n)` + for integer :data:`n`, + :math:`n \ne 1`. +.. Domain: n integer, n != 1 +.. Exceptional Return Values: GSL_EDOM, GSL_EOVRFLW + +.. function:: double gsl_sf_zeta (double s) + int gsl_sf_zeta_e (double s, gsl_sf_result * result) + + These routines compute the Riemann zeta function :math:`\zeta(s)` + for arbitrary :data:`s`, + :math:`s \ne 1`. +.. Domain: s != 1.0 +.. Exceptional Return Values: GSL_EDOM, GSL_EOVRFLW + +Riemann Zeta Function Minus One +------------------------------- + +For large positive argument, the Riemann zeta function approaches one. +In this region the fractional part is interesting, and therefore we +need a function to evaluate it explicitly. + +.. function:: double gsl_sf_zetam1_int (int n) + int gsl_sf_zetam1_int_e (int n, gsl_sf_result * result) + + These routines compute :math:`\zeta(n) - 1` for integer :data:`n`, + :math:`n \ne 1`. +.. Domain: n integer, n != 1 +.. Exceptional Return Values: GSL_EDOM, GSL_EOVRFLW + +.. function:: double gsl_sf_zetam1 (double s) + int gsl_sf_zetam1_e (double s, gsl_sf_result * result) + + These routines compute :math:`\zeta(s) - 1` for arbitrary :data:`s`, + :math:`s \ne 1`. +.. Domain: s != 1.0 +.. Exceptional Return Values: GSL_EDOM, GSL_EOVRFLW + +Hurwitz Zeta Function +--------------------- +.. index:: Hurwitz Zeta Function + +The Hurwitz zeta function is defined by + +.. math:: \zeta(s,q) = \sum_0^\infty (k+q)^{-s} + +.. function:: double gsl_sf_hzeta (double s, double q) + int gsl_sf_hzeta_e (double s, double q, gsl_sf_result * result) + + These routines compute the Hurwitz zeta function :math:`\zeta(s,q)` for + :math:`s > 1`, :math:`q > 0`. +.. Domain: s > 1.0, q > 0.0 +.. Exceptional Return Values: GSL_EDOM, GSL_EUNDRFLW, GSL_EOVRFLW + +Eta Function +------------ +.. index:: Eta Function + +The eta function is defined by + +.. math:: \eta(s) = (1-2^{1-s}) \zeta(s) + +.. function:: double gsl_sf_eta_int (int n) + int gsl_sf_eta_int_e (int n, gsl_sf_result * result) + + These routines compute the eta function :math:`\eta(n)` for integer :data:`n`. +.. Exceptional Return Values: GSL_EUNDRFLW, GSL_EOVRFLW + +.. function:: double gsl_sf_eta (double s) + int gsl_sf_eta_e (double s, gsl_sf_result * result) + + These routines compute the eta function :math:`\eta(s)` for arbitrary :data:`s`. +.. Exceptional Return Values: GSL_EUNDRFLW, GSL_EOVRFLW diff --git a/gsl-2.5/doc/specfunc.rst b/gsl-2.5/doc/specfunc.rst new file mode 100644 index 00000000..05c6d2c0 --- /dev/null +++ b/gsl-2.5/doc/specfunc.rst @@ -0,0 +1,309 @@ +.. index:: special functions + +***************** +Special Functions +***************** + +This chapter describes the GSL special function library. The library +includes routines for calculating the values of Airy functions, Bessel +functions, Clausen functions, Coulomb wave functions, Coupling +coefficients, the Dawson function, Debye functions, Dilogarithms, +Elliptic integrals, Jacobi elliptic functions, Error functions, +Exponential integrals, Fermi-Dirac functions, Gamma functions, +Gegenbauer functions, Hermite polynomials and functions, Hypergeometric functions, Laguerre functions, +Legendre functions and Spherical Harmonics, the Psi (Digamma) Function, +Synchrotron functions, Transport functions, Trigonometric functions and +Zeta functions. Each routine also computes an estimate of the numerical +error in the calculated value of the function. + +The functions in this chapter are declared in individual header files, +such as :file:`gsl_sf_airy.h`, :file:`gsl_sf_bessel.h`, etc. The complete +set of header files can be included using the file :file:`gsl_sf.h`. + +Usage +===== + +The special functions are available in two calling conventions, a +*natural form* which returns the numerical value of the function and +an *error-handling form* which returns an error code. The two types +of function provide alternative ways of accessing the same underlying +code. + +The *natural form* returns only the value of the function and can be +used directly in mathematical expressions. For example, the following +function call will compute the value of the Bessel function +:math:`J_0(x)`:: + + double y = gsl_sf_bessel_J0 (x); + +There is no way to access an error code or to estimate the error using +this method. To allow access to this information the alternative +error-handling form stores the value and error in a modifiable argument:: + + gsl_sf_result result; + int status = gsl_sf_bessel_J0_e (x, &result); + +The error-handling functions have the suffix :code:`_e`. The returned +status value indicates error conditions such as overflow, underflow or +loss of precision. If there are no errors the error-handling functions +return :code:`GSL_SUCCESS`. + +The gsl_sf_result struct +======================== + +The error handling form of the special functions always calculate an +error estimate along with the value of the result. Therefore, +structures are provided for amalgamating a value and error estimate. +These structures are declared in the header file :file:`gsl_sf_result.h`. + +The following struct contains value and error fields. + +.. type:: gsl_sf_result + + :: + + typedef struct + { + double val; + double err; + } gsl_sf_result; + + The field :data:`val` contains the value and the field :data:`err` contains + an estimate of the absolute error in the value. + +In some cases, an overflow or underflow can be detected and handled by a +function. In this case, it may be possible to return a scaling exponent +as well as an error/value pair in order to save the result from +exceeding the dynamic range of the built-in types. The +following struct contains value and error fields as well +as an exponent field such that the actual result is obtained as +:code:`result * 10^(e10)`. + +.. type:: gsl_sf_result_e10 + + :: + + typedef struct + { + double val; + double err; + int e10; + } gsl_sf_result_e10; + +Modes +===== + +The goal of the library is to achieve double precision accuracy wherever +possible. However the cost of evaluating some special functions to +double precision can be significant, particularly where very high order +terms are required. In these cases a :code:`mode` argument, of type +:type:`gsl_mode_t` allows the +accuracy of the function to be reduced in order to improve performance. +The following precision levels are available for the mode argument, + +.. type:: gsl_mode_t + + .. macro:: GSL_PREC_DOUBLE + + Double-precision, a relative accuracy of approximately :math:`2 * 10^{-16}`. + + .. macro:: GSL_PREC_SINGLE + + Single-precision, a relative accuracy of approximately :math:`10^{-7}`. + + .. macro:: GSL_PREC_APPROX + + Approximate values, a relative accuracy of approximately :math:`5 * 10^{-4}`. + +The approximate mode provides the fastest evaluation at the lowest +accuracy. + +Airy Functions and Derivatives +============================== +.. include:: specfunc-airy.rst + +Bessel Functions +================ +.. include:: specfunc-bessel.rst + +Clausen Functions +================= +.. include:: specfunc-clausen.rst + +Coulomb Functions +================= +.. include:: specfunc-coulomb.rst + +Coupling Coefficients +===================== +.. include:: specfunc-coupling.rst + +Dawson Function +=============== +.. include:: specfunc-dawson.rst + +Debye Functions +=============== +.. include:: specfunc-debye.rst + +.. _dilog-function: + +Dilogarithm +=========== +.. include:: specfunc-dilog.rst + +Elementary Operations +===================== +.. include:: specfunc-elementary.rst + +Elliptic Integrals +================== +.. include:: specfunc-ellint.rst + +Elliptic Functions (Jacobi) +=========================== +.. include:: specfunc-elljac.rst + +Error Functions +=============== +.. include:: specfunc-erf.rst + +Exponential Functions +===================== +.. include:: specfunc-exp.rst + +Exponential Integrals +===================== +.. include:: specfunc-expint.rst + +Fermi-Dirac Function +==================== +.. include:: specfunc-fermi-dirac.rst + +Gamma and Beta Functions +======================== +.. include:: specfunc-gamma.rst + +Gegenbauer Functions +==================== +.. include:: specfunc-gegenbauer.rst + +Hermite Polynomials and Functions +================================= +.. include:: specfunc-hermite.rst + +Hypergeometric Functions +======================== +.. include:: specfunc-hyperg.rst + +.. _laguerre-functions: + +Laguerre Functions +================== +.. include:: specfunc-laguerre.rst + +Lambert W Functions +=================== +.. include:: specfunc-lambert.rst + +Legendre Functions and Spherical Harmonics +========================================== +.. include:: specfunc-legendre.rst + +Logarithm and Related Functions +=============================== +.. include:: specfunc-log.rst + +Mathieu Functions +================= +.. include:: specfunc-mathieu.rst + +Power Function +============== +.. include:: specfunc-pow-int.rst + +Psi (Digamma) Function +====================== +.. include:: specfunc-psi.rst + +Synchrotron Functions +===================== +.. include:: specfunc-synchrotron.rst + +Transport Functions +=================== +.. include:: specfunc-transport.rst + +Trigonometric Functions +======================= +.. include:: specfunc-trig.rst + +Zeta Functions +============== +.. include:: specfunc-zeta.rst + +Examples +======== + +The following example demonstrates the use of the error handling form of +the special functions, in this case to compute the Bessel function +:math:`J_0(5.0)`, + +.. include:: examples/specfun_e.c + :code: + +Here are the results of running the program, + +.. include:: examples/specfun_e.txt + :code: + +The next program computes the same quantity using the natural form of +the function. In this case the error term :data:`result.err` and return +status are not accessible. + +.. include:: examples/specfun.c + :code: + +The results of the function are the same, + +.. include:: examples/specfun.txt + :code: + +References and Further Reading +============================== + +The library follows the conventions of the following book where possible, + +* Handbook of Mathematical Functions, edited by Abramowitz & Stegun, + Dover, ISBN 0486612724. + +The following papers contain information on the algorithms used +to compute the special functions, + +.. index:: MISCFUN + +* Allan J. MacLeod, MISCFUN: A software package to compute uncommon + special functions. ACM Trans. Math. Soft., vol.: 22, + 1996, 288--301 + +* G.N. Watson, A Treatise on the Theory of Bessel Functions, + 2nd Edition (Cambridge University Press, 1944). + +* G. Nemeth, Mathematical Approximations of Special Functions, + Nova Science Publishers, ISBN 1-56072-052-2 + +* B.C. Carlson, Special Functions of Applied Mathematics (1977) + +* N. M. Temme, Special Functions: An Introduction to the Classical + Functions of Mathematical Physics (1996), ISBN 978-0471113133. + +* W.J. Thompson, Atlas for Computing Mathematical Functions, John Wiley & Sons, + New York (1997). + +* Y.Y. Luke, Algorithms for the Computation of Mathematical Functions, Academic + Press, New York (1977). + +* S. A. Holmes and W. E. Featherstone, A unified approach to the Clenshaw + summation and the recursive computation of very high degree and order + normalised associated Legendre functions, Journal of Geodesy, 76, + pg. 279-299, 2002. diff --git a/gsl-2.5/doc/splinalg.rst b/gsl-2.5/doc/splinalg.rst new file mode 100644 index 00000000..8aa38913 --- /dev/null +++ b/gsl-2.5/doc/splinalg.rst @@ -0,0 +1,278 @@ +.. index:: + single: sparse linear algebra + single: linear algebra, sparse + +********************* +Sparse Linear Algebra +********************* + +This chapter describes functions for solving sparse linear systems +of equations. The library provides linear algebra routines which +operate directly on the :type:`gsl_spmatrix` and :type:`gsl_vector` +objects. + +The functions described in this chapter are declared in the header file +:file:`gsl_splinalg.h`. + +.. index:: + single: sparse linear algebra, overview + +Overview +======== + +This chapter is primarily concerned with the solution of the +linear system + +.. math:: A x = b + +where :math:`A` is a general square :math:`n`-by-:math:`n` non-singular +sparse matrix, :math:`x` is an unknown :math:`n`-by-:math:`1` vector, and +:math:`b` is a given :math:`n`-by-1 right hand side vector. There exist +many methods for solving such sparse linear systems, which broadly +fall into either direct or iterative categories. Direct methods include +LU and QR decompositions, while iterative methods start with an +initial guess for the vector :math:`x` and update the guess through +iteration until convergence. GSL does not currently provide any +direct sparse solvers. + +.. index:: + single: sparse matrices, iterative solvers + single: sparse linear algebra, iterative solvers + single: sparse, iterative solvers + +Sparse Iterative Solvers +======================== + +Overview +-------- + +Many practical iterative methods of solving large :math:`n`-by-:math:`n` +sparse linear systems involve projecting an approximate solution for +:data:`x` onto a subspace of :math:`{\bf R}^n`. If we define a :math:`m`-dimensional +subspace :math:`{\cal K}` as the subspace of approximations to the solution +:data:`x`, then :math:`m` constraints must be imposed to determine +the next approximation. These :math:`m` constraints define another +:math:`m`-dimensional subspace denoted by :math:`{\cal L}`. The +subspace dimension :math:`m` is typically chosen to be much smaller than +:math:`n` in order to reduce the computational +effort needed to generate the next approximate solution vector. +The many iterative algorithms which exist differ mainly +in their choice of :math:`{\cal K}` and :math:`{\cal L}`. + +Types of Sparse Iterative Solvers +--------------------------------- + +The sparse linear algebra library provides the following types +of iterative solvers: + +.. type:: gsl_splinalg_itersolve_type + + .. index:: gmres + + .. var:: gsl_splinalg_itersolve_gmres + + This specifies the Generalized Minimum Residual Method (GMRES). + This is a projection method using :math:`{\cal K} = {\cal K}_m` + and :math:`{\cal L} = A {\cal K}_m` where :math:`{\cal K}_m` is + the :math:`m`-th Krylov subspace + + .. only:: not texinfo + + .. math:: {\cal K}_m = span \left\{ r_0, A r_0, ..., A^{m-1} r_0 \right\} + + .. only:: texinfo + + :: + + K_m = span( r_0, A r_0, ..., A^(m-1) r_0) + + and :math:`r_0 = b - A x_0` is the residual vector of the initial guess + :math:`x_0`. If :math:`m` is set equal to :math:`n`, then the Krylov + subspace is :math:`{\bf R}^n` and GMRES will provide the exact solution + :data:`x`. However, the goal is for the method to arrive at a very good + approximation to :data:`x` using a much smaller subspace :math:`{\cal K}_m`. By + default, the GMRES method selects :math:`m = MIN(n,10)` but the user + may specify a different value for :math:`m`. The GMRES storage + requirements grow as :math:`O(n(m+1))` and the number of flops + grow as :math:`O(4 m^2 n - 4 m^3 / 3)`. + + In the below function :func:`gsl_splinalg_itersolve_iterate`, one + GMRES iteration is defined as projecting the approximate solution + vector onto each Krylov subspace :math:`{\cal K}_1, ..., {\cal K}_m`, + and so :math:`m` can be kept smaller by "restarting" the method + and calling :func:`gsl_splinalg_itersolve_iterate` multiple times, + providing the updated approximation :data:`x` to each new call. If + the method is not adequately converging, the user may try increasing + the parameter :math:`m`. + + GMRES is considered a robust general purpose iterative solver, however + there are cases where the method stagnates if the matrix is not + positive-definite and fails to reduce the residual until the very last + projection onto the subspace :math:`{\cal K}_n = {\bf R}^n`. In these + cases, preconditioning the linear system can help, but GSL does not + currently provide any preconditioners. + +Iterating the Sparse Linear System +---------------------------------- + +The following functions are provided to allocate storage for the +sparse linear solvers and iterate the system to a solution. + +.. function:: gsl_splinalg_itersolve * gsl_splinalg_itersolve_alloc (const gsl_splinalg_itersolve_type * T, const size_t n, const size_t m) + + This function allocates a workspace for the iterative solution of + :data:`n`-by-:data:`n` sparse matrix systems. The iterative solver type + is specified by :data:`T`. The argument :data:`m` specifies the size + of the solution candidate subspace :math:`{\cal K}_m`. The dimension + :data:`m` may be set to 0 in which case a reasonable default value is used. + +.. function:: void gsl_splinalg_itersolve_free (gsl_splinalg_itersolve * w) + + This function frees the memory associated with the workspace :data:`w`. + +.. function:: const char * gsl_splinalg_itersolve_name (const gsl_splinalg_itersolve * w) + + This function returns a string pointer to the name of the solver. + +.. function:: int gsl_splinalg_itersolve_iterate (const gsl_spmatrix * A, const gsl_vector * b, const double tol, gsl_vector * x, gsl_splinalg_itersolve * w) + + This function performs one iteration of the iterative method for + the sparse linear system specfied by the matrix :data:`A`, right hand + side vector :data:`b` and solution vector :data:`x`. On input, :data:`x` + must be set to an initial guess for the solution. On output, + :data:`x` is updated to give the current solution estimate. The + parameter :data:`tol` specifies the relative tolerance between the residual + norm and norm of :data:`b` in order to check for convergence. + When the following condition is satisfied: + + .. only:: not texinfo + + .. math:: || A x - b || \le tol \times || b || + + .. only:: texinfo + + :: + + || A x - b || <= tol * || b || + + the method has converged, the function returns :macro:`GSL_SUCCESS` and + the final solution is provided in :data:`x`. Otherwise, the function + returns :macro:`GSL_CONTINUE` to signal that more iterations are + required. Here, :math:`|| \cdot ||` represents the Euclidean norm. + The input matrix :data:`A` may be in triplet or compressed format. + +.. function:: double gsl_splinalg_itersolve_normr (const gsl_splinalg_itersolve * w) + + This function returns the current residual norm + :math:`||r|| = ||A x - b||`, which is updated after each call to + :func:`gsl_splinalg_itersolve_iterate`. + +.. index:: + single: sparse linear algebra, examples + +Examples +======== + +This example program demonstrates the sparse linear algebra routines on +the solution of a simple 1D Poisson equation on :math:`[0,1]`: + +.. only:: not texinfo + + .. math:: {d^2 u(x) \over dx^2} = f(x) = -\pi^2 \sin{(\pi x)} + +.. only:: texinfo + + :: + + u''(x) = f(x) = -\pi^2 \sin(\pi x) + +with boundary conditions :math:`u(0) = u(1) = 0`. The analytic solution of +this simple problem is :math:`u(x) = \sin{\pi x}`. We will solve this +problem by finite differencing the left hand side to give + +.. only:: not texinfo + + .. math:: {1 \over h^2} \left( u_{i+1} - 2 u_i + u_{i-1} \right) = f_i + +.. only:: texinfo + + :: + + 1/h^2 ( u_(i+1) - 2 u_i + u_(i-1) ) = f_i + +Defining a grid of :math:`N` points, :math:`h = 1/(N-1)`. In the finite +difference equation above, :math:`u_0 = u_{N-1} = 0` are known from +the boundary conditions, so we will only put the equations for +:math:`i = 1, ..., N-2` into the matrix system. The resulting +:math:`(N-2) \times (N-2)` matrix equation is + +.. only:: not texinfo + + .. math:: + + {1 \over h^2} + \left( + \begin{array}{cccccc} + -2 & 1 & 0 & 0 & \ldots & 0 \\ + 1 & -2 & 1 & 0 & \ldots & 0 \\ + 0 & 1 & -2 & 1 & \ldots & 0 \\ + \vdots & \vdots & \ddots & \ddots & \ddots & \vdots \\ + 0 & \ldots & \ldots & 1 & -2 & 1 \\ + 0 & \ldots & \ldots & \ldots & 1 & -2 + \end{array} + \right) + \left( + \begin{array}{c} + u_1 \\ + u_2 \\ + u_3 \\ + \vdots \\ + u_{N-3} \\ + u_{N-2} + \end{array} + \right) = + \left( + \begin{array}{c} + f_1 \\ + f_2 \\ + f_3 \\ + \vdots \\ + f_{N-3} \\ + f_{N-2} + \end{array} + \right) + +An example program which constructs and solves this system is given below. +The system is solved using the iterative GMRES solver. Here is +the output of the program:: + + iter 0 residual = 4.297275996844e-11 + Converged + +showing that the method converged in a single iteration. +The calculated solution is shown in :numref:`fig_splinalg-poisson`. + +.. _fig_splinalg-poisson: + +.. figure:: /images/sparse_poisson.png + + Solution of PDE + +.. include:: examples/poisson.c + :code: + +.. index:: + single: sparse linear algebra, references + +References and Further Reading +============================== + +The implementation of the GMRES iterative solver closely follows +the publications + +* H. F. Walker, Implementation of the GMRES method using + Householder transformations, SIAM J. Sci. Stat. Comput. + 9(1), 1988. + +* Y. Saad, Iterative methods for sparse linear systems, 2nd edition, + SIAM, 2003. diff --git a/gsl-2.5/doc/spmatrix.rst b/gsl-2.5/doc/spmatrix.rst new file mode 100644 index 00000000..884c4938 --- /dev/null +++ b/gsl-2.5/doc/spmatrix.rst @@ -0,0 +1,458 @@ +.. index:: + single: sparse matrices + single: matrices, sparse + +*************** +Sparse Matrices +*************** + +This chapter describes functions for the construction and +manipulation of sparse matrices, matrices which are populated +primarily with zeros and contain only a few non-zero elements. +Sparse matrices often appear in the solution of partial +differential equations. It is beneficial to use specialized +data structures and algorithms for storing and working with +sparse matrices, since dense matrix algorithms and structures +can be very slow and use huge amounts of memory when applied +to sparse matrices. + +The header file :file:`gsl_spmatrix.h` contains the prototypes for the +sparse matrix functions and related declarations. + +.. index:: + single: sparse matrices, overview + +Overview +======== + +These routines provide support for constructing and manipulating +sparse matrices in GSL, using an API similar to :type:`gsl_matrix`. +The basic structure is called :type:`gsl_spmatrix`. There are +three supported storage formats for sparse matrices: the triplet, +compressed column storage (CCS) and compressed row storage (CRS) +formats. The triplet format stores triplets :math:`(i,j,x)` for each +non-zero element of the matrix. This notation means that the +:math:`(i,j)` element of the matrix :math:`A` +is :math:`A_{ij} = x`. Compressed column storage stores each column of +non-zero values in the sparse matrix in a continuous memory block, keeping +pointers to the beginning of each column in that memory block, and storing +the row indices of each non-zero element. Compressed row storage stores +each row of non-zero values in a continuous memory block, keeping pointers +to the beginning of each row in the block and storing the column indices +of each non-zero element. The triplet format is ideal +for adding elements to the sparse matrix structure while it is being +constructed, while the compressed storage formats are better suited for +matrix-matrix multiplication or linear solvers. + +.. type:: gsl_spmatrix + + This structure is defined as:: + + typedef struct + { + size_t size1; + size_t size2; + size_t *i; + double *data; + size_t *p; + size_t nzmax; + size_t nz; + gsl_spmatrix_tree *tree_data; + void *work; + size_t sptype; + } gsl_spmatrix; + + This defines a :data:`size1`-by-:data:`size2` sparse matrix. The number of non-zero + elements currently in the matrix is given by :data:`nz`. For the triplet + representation, :data:`i`, :data:`p`, and :data:`data` are arrays of size :data:`nz` + which contain the row indices, column indices, and element value, respectively. + So if :math:`data[k] = A(i,j)`, then :math:`i = i[k]` and :math:`j = p[k]`. + + For compressed column storage, :data:`i` and :data:`data` are arrays of size + :data:`nz` containing the row indices and element values, identical to the triplet + case. :data:`p` is an array of size :data:`size2` + 1 where :code:`p[j]` points + to the index in :data:`data` of the start of column :data:`j`. Thus, if + :math:`data[k] = A(i,j)`, then :math:`i = i[k]` and :math:`p[j] <= k < p[j+1]`. + + For compressed row storage, :data:`i` and :data:`data` are arrays of size + :data:`nz` containing the column indices and element values, identical to the triplet + case. :data:`p` is an array of size :data:`size1` + 1 where :code:`p[i]` points + to the index in :data:`data` of the start of row :data:`i`. Thus, if + :math:`data[k] = A(i,j)`, then :math:`j = i[k]` and :math:`p[i] <= k < p[i+1]`. + + The parameter :data:`tree_data` is a binary tree structure used in the triplet + representation, specifically a balanced AVL tree. This speeds up element + searches and duplicate detection during the matrix assembly process. + The parameter :data:`work` is additional workspace needed for various operations like + converting from triplet to compressed storage. :data:`sptype` indicates + the type of storage format being used (triplet, CCS or CRS). + + The compressed storage format defined above makes it very simple + to interface with sophisticated external linear solver libraries + which accept compressed storage input. The user can simply + pass the arrays :data:`i`, :data:`p`, and :data:`data` as the + inputs to external libraries. + +.. index:: + single: sparse matrices, allocation + +Allocation +========== + +The functions for allocating memory for a sparse matrix follow the style of +:func:`malloc` and :func:`free`. They also perform their own error checking. If +there is insufficient memory available to allocate a matrix then the functions +call the GSL error handler with an error code of :macro:`GSL_ENOMEM` in addition +to returning a null pointer. + +.. function:: gsl_spmatrix * gsl_spmatrix_alloc (const size_t n1, const size_t n2) + + This function allocates a sparse matrix of size :data:`n1`-by-:data:`n2` and + initializes it to all zeros. If the size of the matrix is not known at allocation + time, both :data:`n1` and :data:`n2` may be set to 1, and they will automatically + grow as elements are added to the matrix. This function sets the + matrix to the triplet representation, which is the easiest for adding + and accessing matrix elements. This function tries to make a reasonable guess + for the number of non-zero elements (:data:`nzmax`) which will be added to the matrix by + assuming a sparse density of :math:`10\%`. The function + :func:`gsl_spmatrix_alloc_nzmax` can be used if this number is known more + accurately. The workspace is of size :math:`O(nzmax)`. + +.. function:: gsl_spmatrix * gsl_spmatrix_alloc_nzmax (const size_t n1, const size_t n2, const size_t nzmax, const size_t sptype) + + This function allocates a sparse matrix of size :data:`n1`-by-:data:`n2` and + initializes it to all zeros. If the size of the matrix is not known at allocation + time, both :data:`n1` and :data:`n2` may be set to 1, and they will automatically + grow as elements are added to the matrix. The parameter :data:`nzmax` specifies + the maximum number of non-zero elements which will be added to the matrix. + It does not need to be precisely known in advance, since storage space will + automatically grow using :func:`gsl_spmatrix_realloc` if :data:`nzmax` is not + large enough. Accurate knowledge of this parameter reduces the number of + reallocation calls required. The parameter :data:`sptype` specifies the + storage format of the sparse matrix. Possible values are + + .. macro:: GSL_SPMATRIX_TRIPLET + + This flag specifies triplet storage. + + .. macro:: GSL_SPMATRIX_CCS + + This flag specifies compressed column storage. + + .. macro:: GSL_SPMATRIX_CRS + + This flag specifies compressed row storage. + + The allocated :type:`gsl_spmatrix` structure is of size :math:`O(nzmax)`. + +.. function:: int gsl_spmatrix_realloc (const size_t nzmax, gsl_spmatrix * m) + + This function reallocates the storage space for :data:`m` to accomodate + :data:`nzmax` non-zero elements. It is typically called internally by + :func:`gsl_spmatrix_set` if the user wants to add more elements to the + sparse matrix than the previously specified :data:`nzmax`. + +.. function:: void gsl_spmatrix_free (gsl_spmatrix * m) + + This function frees the memory associated with the sparse matrix :data:`m`. + +.. index:: + single: sparse matrices, accessing elements + +Accessing Matrix Elements +========================= + +.. function:: double gsl_spmatrix_get (const gsl_spmatrix * m, const size_t i, const size_t j) + + This function returns element (:data:`i`, :data:`j`) of the matrix :data:`m`. + The matrix may be in triplet or compressed format. + +.. function:: int gsl_spmatrix_set (gsl_spmatrix * m, const size_t i, const size_t j, const double x) + + This function sets element (:data:`i`, :data:`j`) of the matrix :data:`m` to + the value :data:`x`. The matrix must be in triplet representation. + +.. function:: double * gsl_spmatrix_ptr (gsl_spmatrix * m, const size_t i, const size_t j) + + This function returns a pointer to the (:data:`i`, :data:`j`) element of the matrix :data:`m`. + If the (:data:`i`, :data:`j`) element is not explicitly stored in the matrix, + a null pointer is returned. + +.. index:: + single: sparse matrices, initializing elements + +Initializing Matrix Elements +============================ + +Since the sparse matrix format only stores the non-zero elements, it is automatically +initialized to zero upon allocation. The function :func:`gsl_spmatrix_set_zero` may +be used to re-initialize a matrix to zero after elements have been added to it. + +.. function:: int gsl_spmatrix_set_zero (gsl_spmatrix * m) + + This function sets (or resets) all the elements of the matrix :data:`m` to zero. + +.. index:: + single: sparse matrices, reading + single: sparse matrices, writing + +Reading and Writing Matrices +============================ + +.. function:: int gsl_spmatrix_fwrite (FILE * stream, const gsl_spmatrix * m) + + This function writes the elements of the matrix :data:`m` to the stream + :data:`stream` in binary format. The return value is 0 for success and + :macro:`GSL_EFAILED` if there was a problem writing to the file. Since the + data is written in the native binary format it may not be portable + between different architectures. + +.. function:: int gsl_spmatrix_fread (FILE * stream, gsl_spmatrix * m) + + This function reads into the matrix :data:`m` from the open stream + :data:`stream` in binary format. The matrix :data:`m` must be preallocated + with the correct storage format, dimensions and have a sufficiently large :data:`nzmax` + in order to read in all matrix elements, otherwise :macro:`GSL_EBADLEN` + is returned. The return value is 0 for success and + :macro:`GSL_EFAILED` if there was a problem reading from the file. The + data is assumed to have been written in the native binary format on the + same architecture. + +.. function:: int gsl_spmatrix_fprintf (FILE * stream, const gsl_spmatrix * m, const char * format) + + This function writes the elements of the matrix :data:`m` line-by-line to + the stream :data:`stream` using the format specifier :data:`format`, which + should be one of the :code:`%g`, :code:`%e` or :code:`%f` formats for + floating point numbers. The function returns 0 for success and + :macro:`GSL_EFAILED` if there was a problem writing to the file. The + input matrix :data:`m` may be in any storage format, and the output file + will be written in MatrixMarket format. + +.. function:: gsl_spmatrix * gsl_spmatrix_fscanf (FILE * stream) + + This function reads sparse matrix data in the MatrixMarket format + from the stream :data:`stream` and stores it in a newly allocated matrix + which is returned in triplet format. The function returns 0 for success and + :macro:`GSL_EFAILED` if there was a problem reading from the file. The + user should free the returned matrix when it is no longer needed. + +.. index:: + single: sparse matrices, copying + +Copying Matrices +================ + +.. function:: int gsl_spmatrix_memcpy (gsl_spmatrix * dest, const gsl_spmatrix * src) + + This function copies the elements of the sparse matrix :data:`src` into + :data:`dest`. The two matrices must have the same dimensions and be in the + same storage format. + +.. index:: + single: sparse matrices, exchanging rows and columns + +Exchanging Rows and Columns +=========================== + +.. function:: int gsl_spmatrix_transpose_memcpy (gsl_spmatrix * dest, const gsl_spmatrix * src) + + This function copies the transpose of the sparse matrix :data:`src` into + :data:`dest`. The dimensions of :data:`dest` must match the transpose of the + matrix :data:`src`. Also, both matrices must use the same sparse storage + format. + +.. function:: int gsl_spmatrix_transpose (gsl_spmatrix * m) + + This function replaces the matrix :data:`m` by its transpose, + preserving the storage format of the input matrix. Currently, + only triplet matrix inputs are supported. + +.. function:: int gsl_spmatrix_transpose2 (gsl_spmatrix * m) + + This function replaces the matrix :data:`m` by its transpose, but + changes the storage format for compressed matrix inputs. Since + compressed column storage is the transpose of compressed row storage, + this function simply converts a CCS matrix to CRS and vice versa. + This is the most efficient way to transpose a compressed storage + matrix, but the user should note that the storage format of their + compressed matrix will change on output. For triplet matrices, + the output matrix is also in triplet storage. + +.. index:: + single: sparse matrices, operations + +Matrix Operations +================= + +.. function:: int gsl_spmatrix_add (gsl_spmatrix * c, const gsl_spmatrix * a, const gsl_spmatrix * b) + + This function computes the sum :math:`c = a + b`. The three matrices must + have the same dimensions and be stored in a compressed format. + +.. function:: int gsl_spmatrix_scale (gsl_spmatrix * m, const double x) + + This function scales all elements of the matrix :data:`m` by the constant + factor :data:`x`. The result :math:`m(i,j) \leftarrow x m(i,j)` is stored in :data:`m`. + +.. index:: + single: sparse matrices, properties + +Matrix Properties +================= + +.. function:: size_t gsl_spmatrix_nnz (const gsl_spmatrix * m) + + This function returns the number of non-zero elements in :data:`m`. + +.. function:: int gsl_spmatrix_equal (const gsl_spmatrix * a, const gsl_spmatrix * b) + + This function returns 1 if the matrices :data:`a` and :data:`b` are equal (by comparison of + element values) and 0 otherwise. The matrices :data:`a` and :data:`b` must be in the same + sparse storage format for comparison. + +.. index:: + single: sparse matrices, min/max elements + +Finding Maximum and Minimum Elements +==================================== + +.. function:: int gsl_spmatrix_minmax (const gsl_spmatrix * m, double * min_out, double * max_out) + + This function returns the minimum and maximum elements of the matrix + :data:`m`, storing them in :data:`min_out` and :data:`max_out`, and searching + only the non-zero values. + +.. index:: + single: sparse matrices, compression + +Compressed Format +================= + +GSL supports compressed column storage (CCS) and compressed row storage (CRS) +formats. + +.. function:: gsl_spmatrix * gsl_spmatrix_ccs (const gsl_spmatrix * T) + + This function creates a sparse matrix in compressed column format + from the input sparse matrix :data:`T` which must be in triplet format. + A pointer to a newly allocated matrix is returned. The calling function + should free the newly allocated matrix when it is no longer needed. + +.. function:: gsl_spmatrix * gsl_spmatrix_crs (const gsl_spmatrix * T) + + This function creates a sparse matrix in compressed row format + from the input sparse matrix :data:`T` which must be in triplet format. + A pointer to a newly allocated matrix is returned. The calling function + should free the newly allocated matrix when it is no longer needed. + +.. index:: + single: sparse matrices, conversion + +Conversion Between Sparse and Dense Matrices +============================================ + +The :type:`gsl_spmatrix` structure can be converted into the dense :type:`gsl_matrix` +format and vice versa with the following routines. + +.. function:: int gsl_spmatrix_d2sp (gsl_spmatrix * S, const gsl_matrix * A) + + This function converts the dense matrix :data:`A` into sparse triplet format + and stores the result in :data:`S`. + +.. function:: int gsl_spmatrix_sp2d (gsl_matrix * A, const gsl_spmatrix * S) + + This function converts the sparse matrix :data:`S` into a dense matrix and + stores the result in :data:`A`. :data:`S` must be in triplet format. + +.. index:: + single: sparse matrices, examples + +Examples +======== + +The following example program builds a 5-by-4 sparse matrix +and prints it in triplet, compressed column, and compressed +row format. The matrix which is constructed is + +.. only:: not texinfo + + .. math:: + + \left( + \begin{array}{cccc} + 0 & 0 & 3.1 & 4.6 \\ + 1 & 0 & 7.2 & 0 \\ + 0 & 0 & 0 & 0 \\ + 2.1 & 2.9 & 0 & 8.5 \\ + 4.1 & 0 & 0 & 0 + \end{array} + \right) + +.. only:: texinfo + + :: + + [ 0 0 3.1 4.6 ] + [ 1 0 7.2 0 ] + [ 0 0 0 0 ] + [ 2.1 2.9 0 8.5 ] + [ 4.1 0 0 0 ] + +The output of the program is:: + + printing all matrix elements: + A(0,0) = 0 + A(0,1) = 0 + A(0,2) = 3.1 + A(0,3) = 4.6 + A(1,0) = 1 + . + . + . + A(4,0) = 4.1 + A(4,1) = 0 + A(4,2) = 0 + A(4,3) = 0 + matrix in triplet format (i,j,Aij): + (0, 2, 3.1) + (0, 3, 4.6) + (1, 0, 1.0) + (1, 2, 7.2) + (3, 0, 2.1) + (3, 1, 2.9) + (3, 3, 8.5) + (4, 0, 4.1) + matrix in compressed column format: + i = [ 1, 3, 4, 3, 0, 1, 0, 3, ] + p = [ 0, 3, 4, 6, 8, ] + d = [ 1, 2.1, 4.1, 2.9, 3.1, 7.2, 4.6, 8.5, ] + matrix in compressed row format: + i = [ 2, 3, 0, 2, 0, 1, 3, 0, ] + p = [ 0, 2, 4, 4, 7, 8, ] + d = [ 3.1, 4.6, 1, 7.2, 2.1, 2.9, 8.5, 4.1, ] + +We see in the compressed column output, the data array stores +each column contiguously, the array :math:`i` stores +the row index of the corresponding data element, and the +array :math:`p` stores the index of the start of each column in the +data array. Similarly, for the compressed row output, the +data array stores each row contiguously, the array :math:`i` +stores the column index of the corresponding data element, and +the :math:`p` array stores the index of the start of each row +in the data array. + +.. include:: examples/spmatrix.c + :code: + +.. index:: + single: sparse matrices, references + +References and Further Reading +============================== + +The algorithms used by these functions are described in the +following sources, + +* Davis, T. A., Direct Methods for Sparse Linear Systems, SIAM, 2006. + +* CSparse software library, https://www.cise.ufl.edu/research/sparse/CSparse diff --git a/gsl-2.5/doc/statistics.rst b/gsl-2.5/doc/statistics.rst new file mode 100644 index 00000000..366a4d01 --- /dev/null +++ b/gsl-2.5/doc/statistics.rst @@ -0,0 +1,974 @@ +.. index:: + single: statistics + single: mean + single: standard deviation + single: variance + single: estimated standard deviation + single: estimated variance + single: t-test + single: range + single: min + single: max + +********** +Statistics +********** + +This chapter describes the statistical functions in the library. The +basic statistical functions include routines to compute the mean, +variance and standard deviation. More advanced functions allow you to +calculate absolute deviations, skewness, and kurtosis as well as the +median and arbitrary percentiles. The algorithms use recurrence +relations to compute average quantities in a stable way, without large +intermediate values that might overflow. + +The functions are available in versions for datasets in the standard +floating-point and integer types. The versions for double precision +floating-point data have the prefix :code:`gsl_stats` and are declared in +the header file :file:`gsl_statistics_double.h`. The versions for integer +data have the prefix :code:`gsl_stats_int` and are declared in the header +file :file:`gsl_statistics_int.h`. All the functions operate on C +arrays with a :code:`stride` parameter specifying the spacing between +elements. + +Mean, Standard Deviation and Variance +===================================== + +.. function:: double gsl_stats_mean (const double data[], size_t stride, size_t n) + + This function returns the arithmetic mean of :data:`data`, a dataset of + length :data:`n` with stride :data:`stride`. The arithmetic mean, or + *sample mean*, is denoted by :math:`\Hat\mu` and defined as, + + .. math:: \Hat\mu = {1 \over N} \sum x_i + + where :math:`x_i` are the elements of the dataset :data:`data`. For + samples drawn from a gaussian distribution the variance of + :math:`\Hat\mu` is :math:`\sigma^2 / N`. + +.. function:: double gsl_stats_variance (const double data[], size_t stride, size_t n) + + This function returns the estimated, or *sample*, variance of + :data:`data`, a dataset of length :data:`n` with stride :data:`stride`. The + estimated variance is denoted by :math:`\Hat\sigma^2` and is defined by, + + .. only:: not texinfo + + .. math:: {\Hat\sigma}^2 = {1 \over (N-1)} \sum (x_i - {\Hat\mu})^2 + + .. only:: texinfo + + :: + + \Hat\sigma^2 = (1/(N-1)) \sum (x_i - \Hat\mu)^2 + + where :math:`x_i` are the elements of the dataset :data:`data`. Note that + the normalization factor of :math:`1/(N-1)` results from the derivation + of :math:`\Hat\sigma^2` as an unbiased estimator of the population + variance :math:`\sigma^2`. For samples drawn from a Gaussian distribution + the variance of :math:`\Hat\sigma^2` itself is :math:`2 \sigma^4 / N`. + + This function computes the mean via a call to :func:`gsl_stats_mean`. If + you have already computed the mean then you can pass it directly to + :func:`gsl_stats_variance_m`. + +.. function:: double gsl_stats_variance_m (const double data[], size_t stride, size_t n, double mean) + + This function returns the sample variance of :data:`data` relative to the + given value of :data:`mean`. The function is computed with :math:`\Hat\mu` + replaced by the value of :data:`mean` that you supply, + + .. only:: not texinfo + + .. math:: {\Hat\sigma}^2 = {1 \over (N-1)} \sum (x_i - mean)^2 + + .. only:: texinfo + + :: + + \Hat\sigma^2 = (1/(N-1)) \sum (x_i - mean)^2 + +.. function:: double gsl_stats_sd (const double data[], size_t stride, size_t n) + double gsl_stats_sd_m (const double data[], size_t stride, size_t n, double mean) + + The standard deviation is defined as the square root of the variance. + These functions return the square root of the corresponding variance + functions above. + +.. function:: double gsl_stats_tss (const double data[], size_t stride, size_t n) + double gsl_stats_tss_m (const double data[], size_t stride, size_t n, double mean) + + These functions return the total sum of squares (TSS) of :data:`data` about + the mean. For :func:`gsl_stats_tss_m` the user-supplied value of + :data:`mean` is used, and for :func:`gsl_stats_tss` it is computed using + :func:`gsl_stats_mean`. + + .. only:: not texinfo + + .. math:: {\rm TSS} = \sum (x_i - mean)^2 + + .. only:: texinfo + + :: + + TSS = \sum (x_i - mean)^2 + +.. function:: double gsl_stats_variance_with_fixed_mean (const double data[], size_t stride, size_t n, double mean) + + This function computes an unbiased estimate of the variance of + :data:`data` when the population mean :data:`mean` of the underlying + distribution is known *a priori*. In this case the estimator for + the variance uses the factor :math:`1/N` and the sample mean + :math:`\Hat\mu` is replaced by the known population mean :math:`\mu`, + + .. only:: not texinfo + + .. math:: {\Hat\sigma}^2 = {1 \over N} \sum (x_i - \mu)^2 + + .. only:: texinfo + + :: + + \Hat\sigma^2 = (1/N) \sum (x_i - \mu)^2 + +.. function:: double gsl_stats_sd_with_fixed_mean (const double data[], size_t stride, size_t n, double mean) + + This function calculates the standard deviation of :data:`data` for a + fixed population mean :data:`mean`. The result is the square root of the + corresponding variance function. + +Absolute deviation +================== + +.. function:: double gsl_stats_absdev (const double data[], size_t stride, size_t n) + + This function computes the absolute deviation from the mean of + :data:`data`, a dataset of length :data:`n` with stride :data:`stride`. The + absolute deviation from the mean is defined as, + + .. only:: not texinfo + + .. math:: absdev = {1 \over N} \sum |x_i - {\Hat\mu}| + + .. only:: texinfo + + :: + + absdev = (1/N) \sum |x_i - \Hat\mu| + + where :math:`x_i` are the elements of the dataset :data:`data`. The + absolute deviation from the mean provides a more robust measure of the + width of a distribution than the variance. This function computes the + mean of :data:`data` via a call to :func:`gsl_stats_mean`. + +.. function:: double gsl_stats_absdev_m (const double data[], size_t stride, size_t n, double mean) + + This function computes the absolute deviation of the dataset :data:`data` + relative to the given value of :data:`mean`, + + .. only:: not texinfo + + .. math:: absdev = {1 \over N} \sum |x_i - mean| + + .. only:: texinfo + + :: + + absdev = (1/N) \sum |x_i - mean| + + This function is useful if you have already computed the mean of + :data:`data` (and want to avoid recomputing it), or wish to calculate the + absolute deviation relative to another value (such as zero, or the + median). + +.. index:: skewness, kurtosis + +Higher moments (skewness and kurtosis) +====================================== + +.. function:: double gsl_stats_skew (const double data[], size_t stride, size_t n) + + This function computes the skewness of :data:`data`, a dataset of length + :data:`n` with stride :data:`stride`. The skewness is defined as, + + .. only:: not texinfo + + .. math:: + + skew = {1 \over N} \sum + {\left( x_i - {\Hat\mu} \over {\Hat\sigma} \right)}^3 + + .. only:: texinfo + + :: + + skew = (1/N) \sum ((x_i - \Hat\mu)/\Hat\sigma)^3 + + where :math:`x_i` are the elements of the dataset :data:`data`. The skewness + measures the asymmetry of the tails of a distribution. + + The function computes the mean and estimated standard deviation of + :data:`data` via calls to :func:`gsl_stats_mean` and :func:`gsl_stats_sd`. + +.. function:: double gsl_stats_skew_m_sd (const double data[], size_t stride, size_t n, double mean, double sd) + + This function computes the skewness of the dataset :data:`data` using the + given values of the mean :data:`mean` and standard deviation :data:`sd`, + + .. only:: not texinfo + + .. math:: skew = {1 \over N} \sum {\left( x_i - mean \over sd \right)}^3 + + .. only:: texinfo + + :: + + skew = (1/N) \sum ((x_i - mean)/sd)^3 + + These functions are useful if you have already computed the mean and + standard deviation of :data:`data` and want to avoid recomputing them. + +.. function:: double gsl_stats_kurtosis (const double data[], size_t stride, size_t n) + + This function computes the kurtosis of :data:`data`, a dataset of length + :data:`n` with stride :data:`stride`. The kurtosis is defined as, + + .. only:: not texinfo + + .. math:: + + kurtosis = \left( {1 \over N} \sum + {\left(x_i - {\Hat\mu} \over {\Hat\sigma} \right)}^4 + \right) + - 3 + + .. only:: texinfo + + :: + + kurtosis = ((1/N) \sum ((x_i - \Hat\mu)/\Hat\sigma)^4) - 3 + + The kurtosis measures how sharply peaked a distribution is, relative to + its width. The kurtosis is normalized to zero for a Gaussian + distribution. + +.. function:: double gsl_stats_kurtosis_m_sd (const double data[], size_t stride, size_t n, double mean, double sd) + + This function computes the kurtosis of the dataset :data:`data` using the + given values of the mean :data:`mean` and standard deviation :data:`sd`, + + .. only:: not texinfo + + .. math:: + + kurtosis = {1 \over N} + \left( \sum {\left(x_i - mean \over sd \right)}^4 \right) + - 3 + + .. only:: texinfo + + :: + + kurtosis = ((1/N) \sum ((x_i - mean)/sd)^4) - 3 + + This function is useful if you have already computed the mean and + standard deviation of :data:`data` and want to avoid recomputing them. + +Autocorrelation +=============== + +.. function:: double gsl_stats_lag1_autocorrelation (const double data[], const size_t stride, const size_t n) + + This function computes the lag-1 autocorrelation of the dataset :data:`data`. + + .. only:: not texinfo + + .. math:: + + a_1 = {\sum_{i = 2}^{n} (x_{i} - \Hat\mu) (x_{i-1} - \Hat\mu) + \over + \sum_{i = 1}^{n} (x_{i} - \Hat\mu) (x_{i} - \Hat\mu)} + + .. only:: texinfo + + :: + + a_1 = {\sum_{i = 2}^{n} (x_{i} - \Hat\mu) (x_{i-1} - \Hat\mu) + \over + \sum_{i = 1}^{n} (x_{i} - \Hat\mu) (x_{i} - \Hat\mu)} + +.. function:: double gsl_stats_lag1_autocorrelation_m (const double data[], const size_t stride, const size_t n, const double mean) + + This function computes the lag-1 autocorrelation of the dataset + :data:`data` using the given value of the mean :data:`mean`. + +.. index:: + single: covariance, of two datasets + +Covariance +========== + +.. function:: double gsl_stats_covariance (const double data1[], const size_t stride1, const double data2[], const size_t stride2, const size_t n) + + This function computes the covariance of the datasets :data:`data1` and + :data:`data2` which must both be of the same length :data:`n`. + + .. only:: not texinfo + + .. math:: covar = {1 \over (n - 1)} \sum_{i = 1}^{n} (x_{i} - \Hat x) (y_{i} - \Hat y) + + .. only:: texinfo + + :: + + covar = (1/(n - 1)) \sum_{i = 1}^{n} (x_i - \Hat x) (y_i - \Hat y) + +.. function:: double gsl_stats_covariance_m (const double data1[], const size_t stride1, const double data2[], const size_t stride2, const size_t n, const double mean1, const double mean2) + + This function computes the covariance of the datasets :data:`data1` and + :data:`data2` using the given values of the means, :data:`mean1` and + :data:`mean2`. This is useful if you have already computed the means of + :data:`data1` and :data:`data2` and want to avoid recomputing them. + +.. index:: + single: correlation, of two datasets + +Correlation +=========== + +.. function:: double gsl_stats_correlation (const double data1[], const size_t stride1, const double data2[], const size_t stride2, const size_t n) + + This function efficiently computes the Pearson correlation coefficient + between the datasets :data:`data1` and :data:`data2` which must both be of + the same length :data:`n`. + + .. only:: not texinfo + + .. math:: + + r = {cov(x, y) \over \Hat\sigma_x \Hat\sigma_y} = + {{1 \over n-1} \sum (x_i - \Hat x) (y_i - \Hat y) + \over + \sqrt{{1 \over n-1} \sum (x_i - {\Hat x})^2} + \sqrt{{1 \over n-1} \sum (y_i - {\Hat y})^2} + } + + .. only:: texinfo + + :: + + r = cov(x, y) / (\Hat\sigma_x \Hat\sigma_y) + = {1/(n-1) \sum (x_i - \Hat x) (y_i - \Hat y) + \over + \sqrt{1/(n-1) \sum (x_i - \Hat x)^2} \sqrt{1/(n-1) \sum (y_i - \Hat y)^2} + } + +.. function:: double gsl_stats_spearman (const double data1[], const size_t stride1, const double data2[], const size_t stride2, const size_t n, double work[]) + + This function computes the Spearman rank correlation coefficient between + the datasets :data:`data1` and :data:`data2` which must both be of the same + length :data:`n`. Additional workspace of size 2 * :data:`n` is required in + :data:`work`. The Spearman rank correlation between vectors :math:`x` and + :math:`y` is equivalent to the Pearson correlation between the ranked + vectors :math:`x_R` and :math:`y_R`, where ranks are defined to be the + average of the positions of an element in the ascending order of the values. + +Weighted Samples +================ + +The functions described in this section allow the computation of +statistics for weighted samples. The functions accept an array of +samples, :math:`x_i`, with associated weights, :math:`w_i`. Each sample +:math:`x_i` is considered as having been drawn from a Gaussian +distribution with variance :math:`\sigma_i^2`. The sample weight +:math:`w_i` is defined as the reciprocal of this variance, :math:`w_i = 1/\sigma_i^2`. +Setting a weight to zero corresponds to removing a sample from a dataset. + +.. function:: double gsl_stats_wmean (const double w[], size_t wstride, const double data[], size_t stride, size_t n) + + This function returns the weighted mean of the dataset :data:`data` with + stride :data:`stride` and length :data:`n`, using the set of weights :data:`w` + with stride :data:`wstride` and length :data:`n`. The weighted mean is defined as, + + .. only:: not texinfo + + .. math:: {\Hat\mu} = {{\sum w_i x_i} \over {\sum w_i}} + + .. only:: texinfo + + :: + + \Hat\mu = (\sum w_i x_i) / (\sum w_i) + +.. function:: double gsl_stats_wvariance (const double w[], size_t wstride, const double data[], size_t stride, size_t n) + + This function returns the estimated variance of the dataset :data:`data` + with stride :data:`stride` and length :data:`n`, using the set of weights + :data:`w` with stride :data:`wstride` and length :data:`n`. The estimated + variance of a weighted dataset is calculated as, + + .. only:: not texinfo + + .. math:: + + \Hat\sigma^2 = {{\sum w_i} \over {(\sum w_i)^2 - \sum (w_i^2)}} + \sum w_i (x_i - \Hat\mu)^2 + + .. only:: texinfo + + :: + + \Hat\sigma^2 = ((\sum w_i)/((\sum w_i)^2 - \sum (w_i^2))) + \sum w_i (x_i - \Hat\mu)^2 + + Note that this expression reduces to an unweighted variance with the + familiar :math:`1/(N-1)` factor when there are :math:`N` equal non-zero + weights. + +.. function:: double gsl_stats_wvariance_m (const double w[], size_t wstride, const double data[], size_t stride, size_t n, double wmean) + + This function returns the estimated variance of the weighted dataset + :data:`data` using the given weighted mean :data:`wmean`. + +.. function:: double gsl_stats_wsd (const double w[], size_t wstride, const double data[], size_t stride, size_t n) + + The standard deviation is defined as the square root of the variance. + This function returns the square root of the corresponding variance + function :func:`gsl_stats_wvariance` above. + +.. function:: double gsl_stats_wsd_m (const double w[], size_t wstride, const double data[], size_t stride, size_t n, double wmean) + + This function returns the square root of the corresponding variance + function :func:`gsl_stats_wvariance_m` above. + +.. function:: double gsl_stats_wvariance_with_fixed_mean (const double w[], size_t wstride, const double data[], size_t stride, size_t n, const double mean) + + This function computes an unbiased estimate of the variance of the weighted + dataset :data:`data` when the population mean :data:`mean` of the underlying + distribution is known *a priori*. In this case the estimator for + the variance replaces the sample mean :math:`\Hat\mu` by the known + population mean :math:`\mu`, + + .. only:: not texinfo + + .. math:: \Hat\sigma^2 = {{\sum w_i (x_i - \mu)^2} \over {\sum w_i}} + + .. only:: texinfo + + :: + + \Hat\sigma^2 = (\sum w_i (x_i - \mu)^2) / (\sum w_i) + +.. function:: double gsl_stats_wsd_with_fixed_mean (const double w[], size_t wstride, const double data[], size_t stride, size_t n, const double mean) + + The standard deviation is defined as the square root of the variance. + This function returns the square root of the corresponding variance + function above. + +.. function:: double gsl_stats_wtss (const double w[], const size_t wstride, const double data[], size_t stride, size_t n) + double gsl_stats_wtss_m (const double w[], const size_t wstride, const double data[], size_t stride, size_t n, double wmean) + + These functions return the weighted total sum of squares (TSS) of + :data:`data` about the weighted mean. For :func:`gsl_stats_wtss_m` the + user-supplied value of :data:`wmean` is used, and for :func:`gsl_stats_wtss` + it is computed using :func:`gsl_stats_wmean`. + + .. only:: not texinfo + + .. math:: {\rm TSS} = \sum w_i (x_i - wmean)^2 + + .. only:: texinfo + + :: + + TSS = \sum w_i (x_i - wmean)^2 + +.. function:: double gsl_stats_wabsdev (const double w[], size_t wstride, const double data[], size_t stride, size_t n) + + This function computes the weighted absolute deviation from the weighted + mean of :data:`data`. The absolute deviation from the mean is defined as, + + .. only:: not texinfo + + .. math:: absdev = {{\sum w_i |x_i - \Hat\mu|} \over {\sum w_i}} + + .. only:: texinfo + + :: + + absdev = (\sum w_i |x_i - \Hat\mu|) / (\sum w_i) + +.. function:: double gsl_stats_wabsdev_m (const double w[], size_t wstride, const double data[], size_t stride, size_t n, double wmean) + + This function computes the absolute deviation of the weighted dataset + :data:`data` about the given weighted mean :data:`wmean`. + +.. function:: double gsl_stats_wskew (const double w[], size_t wstride, const double data[], size_t stride, size_t n) + + This function computes the weighted skewness of the dataset :data:`data`. + + .. only:: not texinfo + + .. math:: skew = {{\sum w_i ((x_i - {\Hat x})/{\Hat \sigma})^3} \over {\sum w_i}} + + .. only:: texinfo + + :: + + skew = (\sum w_i ((x_i - \Hat x)/\Hat \sigma)^3) / (\sum w_i) + +.. function:: double gsl_stats_wskew_m_sd (const double w[], size_t wstride, const double data[], size_t stride, size_t n, double wmean, double wsd) + + This function computes the weighted skewness of the dataset :data:`data` + using the given values of the weighted mean and weighted standard + deviation, :data:`wmean` and :data:`wsd`. + +.. function:: double gsl_stats_wkurtosis (const double w[], size_t wstride, const double data[], size_t stride, size_t n) + + This function computes the weighted kurtosis of the dataset :data:`data`. + + .. only:: not texinfo + + .. math:: kurtosis = {{\sum w_i ((x_i - {\Hat x})/{\Hat \sigma})^4} \over {\sum w_i}} - 3 + + .. only:: texinfo + + :: + + kurtosis = ((\sum w_i ((x_i - \Hat x)/\Hat \sigma)^4) / (\sum w_i)) - 3 + +.. function:: double gsl_stats_wkurtosis_m_sd (const double w[], size_t wstride, const double data[], size_t stride, size_t n, double wmean, double wsd) + + This function computes the weighted kurtosis of the dataset :data:`data` + using the given values of the weighted mean and weighted standard + deviation, :data:`wmean` and :data:`wsd`. + +Maximum and Minimum values +========================== + +The following functions find the maximum and minimum values of a +dataset (or their indices). If the data contains :code:`NaN`-s then a +:code:`NaN` will be returned, since the maximum or minimum value is +undefined. For functions which return an index, the location of the +first :code:`NaN` in the array is returned. + +.. function:: double gsl_stats_max (const double data[], size_t stride, size_t n) + + This function returns the maximum value in :data:`data`, a dataset of + length :data:`n` with stride :data:`stride`. The maximum value is defined + as the value of the element :math:`x_i` which satisfies :math:`x_i \ge x_j` + for all :math:`j`. + + If you want instead to find the element with the largest absolute + magnitude you will need to apply :func:`fabs` or :func:`abs` to your data + before calling this function. + +.. function:: double gsl_stats_min (const double data[], size_t stride, size_t n) + + This function returns the minimum value in :data:`data`, a dataset of + length :data:`n` with stride :data:`stride`. The minimum value is defined + as the value of the element :math:`x_i` which satisfies :math:`x_i \le x_j` + for all :math:`j`. + + If you want instead to find the element with the smallest absolute + magnitude you will need to apply :func:`fabs` or :func:`abs` to your data + before calling this function. + +.. function:: void gsl_stats_minmax (double * min, double * max, const double data[], size_t stride, size_t n) + + This function finds both the minimum and maximum values :data:`min`, + :data:`max` in :data:`data` in a single pass. + +.. function:: size_t gsl_stats_max_index (const double data[], size_t stride, size_t n) + + This function returns the index of the maximum value in :data:`data`, a + dataset of length :data:`n` with stride :data:`stride`. The maximum value is + defined as the value of the element :math:`x_i` which satisfies + :math:`x_i \ge x_j` + for all :math:`j`. When there are several equal maximum + elements then the first one is chosen. + +.. function:: size_t gsl_stats_min_index (const double data[], size_t stride, size_t n) + + This function returns the index of the minimum value in :data:`data`, a + dataset of length :data:`n` with stride :data:`stride`. The minimum value + is defined as the value of the element :math:`x_i` which satisfies + :math:`x_i \ge x_j` + for all :math:`j`. When there are several equal + minimum elements then the first one is chosen. + +.. function:: void gsl_stats_minmax_index (size_t * min_index, size_t * max_index, const double data[], size_t stride, size_t n) + + This function returns the indexes :data:`min_index`, :data:`max_index` of + the minimum and maximum values in :data:`data` in a single pass. + +Median and Percentiles +====================== + +The median and percentile functions described in this section operate on +sorted data in :math:`O(1)` time. There is also a routine for computing +the median of an unsorted input array in average :math:`O(n)` time using +the quickselect algorithm. For convenience we use *quantiles*, measured on a scale +of 0 to 1, instead of percentiles (which use a scale of 0 to 100). + +.. function:: double gsl_stats_median_from_sorted_data (const double sorted_data[], const size_t stride, const size_t n) + + This function returns the median value of :data:`sorted_data`, a dataset + of length :data:`n` with stride :data:`stride`. The elements of the array + must be in ascending numerical order. There are no checks to see + whether the data are sorted, so the function :func:`gsl_sort` should + always be used first. + + When the dataset has an odd number of elements the median is the value + of element :math:`(n-1)/2`. When the dataset has an even number of + elements the median is the mean of the two nearest middle values, + elements :math:`(n-1)/2` and :math:`n/2`. Since the algorithm for + computing the median involves interpolation this function always returns + a floating-point number, even for integer data types. + +.. function:: double gsl_stats_median (double data[], const size_t stride, const size_t n) + + This function returns the median value of :data:`data`, a dataset + of length :data:`n` with stride :data:`stride`. The median is found + using the quickselect algorithm. The input array does not need to be + sorted, but note that the algorithm rearranges the array and so the input + is not preserved on output. + +.. function:: double gsl_stats_quantile_from_sorted_data (const double sorted_data[], size_t stride, size_t n, double f) + + This function returns a quantile value of :data:`sorted_data`, a + double-precision array of length :data:`n` with stride :data:`stride`. The + elements of the array must be in ascending numerical order. The + quantile is determined by the :data:`f`, a fraction between 0 and 1. For + example, to compute the value of the 75th percentile :data:`f` should have + the value 0.75. + + There are no checks to see whether the data are sorted, so the function + :func:`gsl_sort` should always be used first. + + The quantile is found by interpolation, using the formula + + .. only:: not texinfo + + .. math:: \hbox{quantile} = (1 - \delta) x_i + \delta x_{i+1} + + .. only:: texinfo + + :: + + quantile = (1 - \delta) x_i + \delta x_{i+1} + + where :math:`i` is :code:`floor((n - 1)f)` and :math:`\delta` is + :math:`(n-1)f - i`. + + Thus the minimum value of the array (:code:`data[0*stride]`) is given by + :data:`f` equal to zero, the maximum value (:code:`data[(n-1)*stride]`) is + given by :data:`f` equal to one and the median value is given by :data:`f` + equal to 0.5. Since the algorithm for computing quantiles involves + interpolation this function always returns a floating-point number, even + for integer data types. + +.. @node Statistical tests +.. @section Statistical tests + +.. FIXME, do more work on the statistical tests + +.. -@deftypefun double gsl_stats_ttest (const double data1[], double data2[], size_t n1, size_t n2) +.. -@deftypefunx Statistics double gsl_stats_int_ttest (const double data1[], double data2[], size_t n1, size_t n2) + +.. The function :func:`gsl_stats_ttest` computes the t-test statistic for +.. the two arrays :data:`data1`[] and :data:`data2`[], of lengths :data:`n1` and +.. -:data:`n2` respectively. + +.. The t-test statistic measures the difference between the means of two +.. datasets. + +Order Statistics +================ + +The :math:`k`-th *order statistic* of a sample is equal to its :math:`k`-th smallest value. +The :math:`k`-th order statistic of a set of :math:`n` values :math:`x = \left\{ x_i \right\}, 1 \le i \le n` is +denoted :math:`x_{(k)}`. The median of the set :math:`x` is equal to :math:`x_{\left( \frac{n}{2} \right)}` if +:math:`n` is odd, or the average of :math:`x_{\left( \frac{n}{2} \right)}` and :math:`x_{\left( \frac{n}{2} + 1 \right)}` +if :math:`n` is even. The :math:`k`-th smallest element of a length :math:`n` vector can be found +in average :math:`O(n)` time using the quickselect algorithm. + +.. function:: gsl_stats_select(double data[], const size_t stride, const size_t n, const size_t k) + + This function finds the :data:`k`-th smallest element of the input array :data:`data` + of length :data:`n` and stride :data:`stride` using the quickselect method. The + algorithm rearranges the elements of :data:`data` and so the input array is not preserved + on output. + +.. index:: + single: robust location estimators + single: location estimation + single: estimation, location + +Robust Location Estimates +========================= + +A *location estimate* refers to a typical or central value which best describes a given +dataset. The mean and median are both examples of location estimators. However, the +mean has a severe sensitivity to data outliers and can give erroneous values when +even a small number of outliers are present. The median on the other hand, has +a strong insensitivity to data outliers, but due to its non-smoothness it can +behave unexpectedly in certain situations. GSL offers the following alternative +location estimators, which are robust to the presence of outliers. + +.. index:: + single: trimmed mean + single: truncated mean + single: mean, trimmed + single: mean, truncated + +Trimmed Mean +------------ + +The trimmed mean, or *truncated mean*, discards a certain number of smallest and largest +samples from the input vector before computing the mean of the remaining samples. The +amount of trimming is specified by a factor :math:`\alpha \in [0,0.5]`. Then the +number of samples discarded from both ends of the input vector is +:math:`\left\lfloor \alpha n \right\rfloor`, where :math:`n` is the length of the input. +So to discard 25% of the samples from each end, one would set :math:`\alpha = 0.25`. + +.. function:: double gsl_stats_trmean_from_sorted_data (const double alpha, const double sorted_data[], const size_t stride, const size_t n) + + This function returns the trimmed mean of :data:`sorted_data`, a dataset + of length :data:`n` with stride :data:`stride`. The elements of the array + must be in ascending numerical order. There are no checks to see + whether the data are sorted, so the function :func:`gsl_sort` should + always be used first. The trimming factor :math:`\alpha` is given in :data:`alpha`. + If :math:`\alpha \ge 0.5`, then the median of the input is returned. + +.. index:: + single: Gastwirth estimator + +Gastwirth Estimator +------------------- + +Gastwirth's location estimator is a weighted sum of three order statistics, + +.. only:: not texinfo + + .. math:: gastwirth = 0.3 \times Q_{\frac{1}{3}} + 0.4 \times Q_{\frac{1}{2}} + 0.3 \times Q_{\frac{2}{3}} + +.. only:: texinfo + + :: + + gastwirth = 0.3 * Q_{1/3} + 0.4 * Q_{1/2} + 0.3 * Q_{2/3} + +where :math:`Q_{\frac{1}{3}}` is the one-third quantile, :math:`Q_{\frac{1}{2}}` is the one-half +quantile (i.e. median), and :math:`Q_{\frac{2}{3}}` is the two-thirds quantile. + +.. function:: double gsl_stats_gastwirth_from_sorted_data (const double sorted_data[], const size_t stride, const size_t n) + + This function returns the Gastwirth location estimator of :data:`sorted_data`, a dataset + of length :data:`n` with stride :data:`stride`. The elements of the array + must be in ascending numerical order. There are no checks to see + whether the data are sorted, so the function :func:`gsl_sort` should + always be used first. + +.. index:: + single: robust scale estimators + single: scale estimation + single: estimation, scale + +Robust Scale Estimates +====================== + +A *robust scale estimate*, also known as a robust measure of scale, attempts to quantify +the statistical dispersion (variability, scatter, spread) in a set of data which may contain outliers. +In such datasets, the usual variance or standard deviation scale estimate can be rendered useless +by even a single outlier. + +.. index:: + single: median absolute deviation + +.. _sec_mad-statistic: + +Median Absolute Deviation (MAD) +------------------------------- + +The median absolute deviation (MAD) is defined as + +.. only:: not texinfo + + .. math:: MAD = 1.4826 \times \textrm{median} \left\{ \left| x_i - \textrm{median} \left( x \right) \right| \right\} + +.. only:: texinfo + + :: + + MAD = 1.4826 median { | x_i - median(x) | } + +In words, first the median of all samples is computed. Then the median +is subtracted from all samples in the input to find the deviation of each sample +from the median. The median of all absolute deviations is then the MAD. +The factor :math:`1.4826` makes the MAD an unbiased estimator of the standard deviation for Gaussian data. +The median absolute deviation has an asymptotic efficiency of 37%. + +.. function:: double gsl_stats_mad0 (const double data[], const size_t stride, const size_t n, double work[]) +.. function:: double gsl_stats_mad (const double data[], const size_t stride, const size_t n, double work[]) + + These functions return the median absolute deviation of :data:`data`, a dataset + of length :data:`n` and stride :data:`stride`. + The :code:`mad0` function calculates + :math:`\textrm{median} \left\{ \left| x_i - \textrm{median} \left( x \right) \right| \right\}` + (i.e. the :math:`MAD` statistic without the bias correction scale factor). + These functions require additional workspace of size :code:`n` provided in :data:`work`. + +.. index:: + single: Sn statistic + +.. _sec_Sn-statistic: + +:math:`S_n` Statistic +--------------------- + +The :math:`S_n` statistic developed by Croux and Rousseeuw is defined as + +.. only:: not texinfo + + .. math:: S_n = 1.1926 \times c_n \times \textrm{median}_i \left\{ \textrm{median}_j \left( \left| x_i - x_j \right| \right) \right\} + +.. only:: texinfo + + :: + + S_n = 1.1926 * c_n * median_i { median_j ( | x_i - x_j | ) } + +For each sample :math:`x_i, 1 \le i \le n`, the median of the values :math:`\left| x_i - x_j \right|` is computed for all +:math:`x_j, 1 \le j \le n`. This yields :math:`n` values, whose median then gives the final :math:`S_n`. +The factor :math:`1.1926` makes :math:`S_n` an unbiased estimate of the standard deviation for Gaussian data. +The factor :math:`c_n` is a correction factor to correct bias in small sample sizes. :math:`S_n` has an asymptotic +efficiency of 58%. + +.. function:: double gsl_stats_Sn0_from_sorted_data (const double sorted_data[], const size_t stride, const size_t n, double work[]) +.. function:: double gsl_stats_Sn_from_sorted_data (const double sorted_data[], const size_t stride, const size_t n, double work[]) + + These functions return the :math:`S_n` statistic of :data:`sorted_data`, a dataset + of length :data:`n` with stride :data:`stride`. The elements of the array + must be in ascending numerical order. There are no checks to see + whether the data are sorted, so the function :func:`gsl_sort` should + always be used first. The :code:`Sn0` function calculates + :math:`\textrm{median}_i \left\{ \textrm{median}_j \left( \left| x_i - x_j \right| \right) \right\}` + (i.e. the :math:`S_n` statistic without the bias correction scale factors). + These functions require additional workspace of size + :code:`n` provided in :data:`work`. + +.. index:: + single: Qn statistic + +.. _sec_Qn-statistic: + +:math:`Q_n` Statistic +--------------------- + +The :math:`Q_n` statistic developed by Croux and Rousseeuw is defined as + +.. only:: not texinfo + + .. math:: Q_n = 2.21914 \times d_n \times \left\{ \left| x_i - x_j \right|, i < j \right\}_{(k)} + +.. only:: texinfo + + :: + + Q_n = 2.21914 * d_n * { | x_i - x_j |, i < j }_{(k)} + +The factor :math:`2.21914` makes :math:`Q_n` an unbiased estimate of the standard deviation for Gaussian data. +The factor :math:`d_n` is a correction factor to correct bias in small sample sizes. The order statistic +is + +.. only:: not texinfo + + .. math:: k = \left( + \begin{array}{c} + \left\lfloor \frac{n}{2} \right\rfloor + 1 \\ + 2 + \end{array} + \right) + +.. only:: texinfo + + :: + + k = ( floor(n/2) + 1 ) + ( 2 ) + +:math:`Q_n` has an asymptotic efficiency of 82%. + +.. function:: double gsl_stats_Qn0_from_sorted_data (const double sorted_data[], const size_t stride, const size_t n, double work[], int work_int[]) + double gsl_stats_Qn_from_sorted_data (const double sorted_data[], const size_t stride, const size_t n, double work[], int work_int[]) + + These functions return the :math:`Q_n` statistic of :data:`sorted_data`, a dataset + of length :data:`n` with stride :data:`stride`. The elements of the array + must be in ascending numerical order. There are no checks to see + whether the data are sorted, so the function :func:`gsl_sort` should + always be used first. The :code:`Qn0` function calculates + :math:`\left\{ \left| x_i - x_j \right|, i < j \right\}_{(k)}` + (i.e. :math:`Q_n` without the bias correction scale factors). + These functions require additional workspace of size + :code:`3n` provided in :data:`work` and integer workspace of size :code:`5n` + provided in :data:`work_int`. + +Examples +======== + +Here is a basic example of how to use the statistical functions: + +.. include:: examples/stat.c + :code: + +The program should produce the following output, + +.. include:: examples/stat.txt + :code: + +Here is an example using sorted data, + +.. include:: examples/statsort.c + :code: + +This program should produce the following output, + +.. include:: examples/statsort.txt + :code: + +References and Further Reading +============================== + +The standard reference for almost any topic in statistics is the +multi-volume *Advanced Theory of Statistics* by Kendall and Stuart. + +* Maurice Kendall, Alan Stuart, and J. Keith Ord. + *The Advanced Theory of Statistics* (multiple volumes) + reprinted as *Kendall's Advanced Theory of Statistics*. + Wiley, ISBN 047023380X. + +Many statistical concepts can be more easily understood by a Bayesian +approach. The following book by Gelman, Carlin, Stern and Rubin gives a +comprehensive coverage of the subject. + +* Andrew Gelman, John B. Carlin, Hal S. Stern, Donald B. Rubin. + *Bayesian Data Analysis*. + Chapman & Hall, ISBN 0412039915. + +For physicists the Particle Data Group provides useful reviews of +Probability and Statistics in the "Mathematical Tools" section of its +Annual Review of Particle Physics. + +* *Review of Particle Properties*, + R.M. Barnett et al., Physical Review D54, 1 (1996) + +The Review of Particle Physics is available online at +the website http://pdg.lbl.gov/. + +The following papers describe robust scale estimation, + +* C. Croux and P. J. Rousseeuw, *Time-Efficient algorithms for two highly robust + estimators of scale*, Comp. Stat., Physica, Heidelberg, 1992. +* P. J. Rousseeuw and C. Croux, *Explicit scale estimators with high breakdown point*, + L1-Statistical Analysis and Related Methods, pp. 77-92, 1992. diff --git a/gsl-2.5/doc/sum.rst b/gsl-2.5/doc/sum.rst new file mode 100644 index 00000000..2c6999a0 --- /dev/null +++ b/gsl-2.5/doc/sum.rst @@ -0,0 +1,163 @@ +.. index:: + single: acceleration of series + single: summation, acceleration + single: series, acceleration + single: u-transform for series + single: Levin u-transform + single: convergence, accelerating a series + +******************* +Series Acceleration +******************* + +The functions described in this chapter accelerate the convergence of a +series using the Levin :math:`u`-transform. This method takes a small number of +terms from the start of a series and uses a systematic approximation to +compute an extrapolated value and an estimate of its error. The +:math:`u`-transform works for both convergent and divergent series, including +asymptotic series. + +These functions are declared in the header file :file:`gsl_sum.h`. + +Acceleration functions +====================== + +The following functions compute the full Levin :math:`u`-transform of a series +with its error estimate. The error estimate is computed by propagating +rounding errors from each term through to the final extrapolation. + +These functions are intended for summing analytic series where each term +is known to high accuracy, and the rounding errors are assumed to +originate from finite precision. They are taken to be relative errors of +order :macro:`GSL_DBL_EPSILON` for each term. + +The calculation of the error in the extrapolated value is an +:math:`O(N^2)` process, which is expensive in time and memory. A faster +but less reliable method which estimates the error from the convergence +of the extrapolated value is described in the next section. For the +method described here a full table of intermediate values and +derivatives through to :math:`O(N)` must be computed and stored, but this +does give a reliable error estimate. + +.. type:: gsl_sum_levin_u_workspace + + Workspace for a Leven :math:`u`-transform. + +.. function:: gsl_sum_levin_u_workspace * gsl_sum_levin_u_alloc (size_t n) + + This function allocates a workspace for a Levin :math:`u`-transform of :data:`n` + terms. The size of the workspace is :math:`O(2n^2 + 3n)`. + +.. function:: void gsl_sum_levin_u_free (gsl_sum_levin_u_workspace * w) + + This function frees the memory associated with the workspace :data:`w`. + +.. function:: int gsl_sum_levin_u_accel (const double * array, size_t array_size, gsl_sum_levin_u_workspace * w, double * sum_accel, double * abserr) + + This function takes the terms of a series in :data:`array` of size + :data:`array_size` and computes the extrapolated limit of the series using + a Levin :math:`u`-transform. Additional working space must be provided in + :data:`w`. The extrapolated sum is stored in :data:`sum_accel`, with an + estimate of the absolute error stored in :data:`abserr`. The actual + term-by-term sum is returned in :code:`w->sum_plain`. The algorithm + calculates the truncation error (the difference between two successive + extrapolations) and round-off error (propagated from the individual + terms) to choose an optimal number of terms for the extrapolation. + All the terms of the series passed in through :data:`array` should be non-zero. + +Acceleration functions without error estimation +=============================================== + +The functions described in this section compute the Levin :math:`u`-transform of +series and attempt to estimate the error from the "truncation error" in +the extrapolation, the difference between the final two approximations. +Using this method avoids the need to compute an intermediate table of +derivatives because the error is estimated from the behavior of the +extrapolated value itself. Consequently this algorithm is an :math:`O(N)` +process and only requires :math:`O(N)` terms of storage. If the series +converges sufficiently fast then this procedure can be acceptable. It +is appropriate to use this method when there is a need to compute many +extrapolations of series with similar convergence properties at high-speed. +For example, when numerically integrating a function defined by a +parameterized series where the parameter varies only slightly. A +reliable error estimate should be computed first using the full +algorithm described above in order to verify the consistency of the +results. + +.. type:: gsl_sum_levin_utrunc_workspace + + Workspace for a Levin :math:`u`-transform without error estimation + +.. function:: gsl_sum_levin_utrunc_workspace * gsl_sum_levin_utrunc_alloc (size_t n) + + This function allocates a workspace for a Levin :math:`u`-transform of :data:`n` + terms, without error estimation. The size of the workspace is + :math:`O(3n)`. + +.. function:: void gsl_sum_levin_utrunc_free (gsl_sum_levin_utrunc_workspace * w) + + This function frees the memory associated with the workspace :data:`w`. + +.. function:: int gsl_sum_levin_utrunc_accel (const double * array, size_t array_size, gsl_sum_levin_utrunc_workspace * w, double * sum_accel, double * abserr_trunc) + + This function takes the terms of a series in :data:`array` of size + :data:`array_size` and computes the extrapolated limit of the series using + a Levin :math:`u`-transform. Additional working space must be provided in + :data:`w`. The extrapolated sum is stored in :data:`sum_accel`. The actual + term-by-term sum is returned in :code:`w->sum_plain`. The algorithm + terminates when the difference between two successive extrapolations + reaches a minimum or is sufficiently small. The difference between these + two values is used as estimate of the error and is stored in + :data:`abserr_trunc`. To improve the reliability of the algorithm the + extrapolated values are replaced by moving averages when calculating the + truncation error, smoothing out any fluctuations. + +Examples +======== + +The following code calculates an estimate of :math:`\zeta(2) = \pi^2 / 6` +using the series, + +.. math:: \zeta(2) = 1 + 1/2^2 + 1/3^2 + 1/4^2 + \dots + +After :data:`N` terms the error in the sum is :math:`O(1/N)`, making direct +summation of the series converge slowly. + +.. include:: examples/sum.c + :code: + +The output below shows that the Levin :math:`u`-transform is able to obtain an +estimate of the sum to 1 part in +:math:`10^{10}` +using the first eleven terms of the series. The +error estimate returned by the function is also accurate, giving +the correct number of significant digits. + +.. include:: examples/sum.txt + :code: + +Note that a direct summation of this series would require +:math:`10^{10}` +terms to achieve the same precision as the accelerated +sum does in 13 terms. + +References and Further Reading +============================== + +The algorithms used by these functions are described in the following papers, + +* T. Fessler, W.F. Ford, D.A. Smith, + HURRY: An acceleration algorithm for scalar sequences and series + *ACM Transactions on Mathematical Software*, 9(3):346--354, 1983. + and Algorithm 602 9(3):355--357, 1983. + +The theory of the :math:`u`-transform was presented by Levin, + +* D. Levin, + Development of Non-Linear Transformations for Improving Convergence of + Sequences, *Intern.: J.: Computer Math.* B3:371--388, 1973. + +A review paper on the Levin Transform is available online, + +* Herbert H. H. Homeier, Scalar Levin-Type Sequence Transformations, + http://arxiv.org/abs/math/0005209 diff --git a/gsl-2.5/doc/texinfo.tex b/gsl-2.5/doc/texinfo.tex new file mode 100644 index 00000000..85f184cc --- /dev/null +++ b/gsl-2.5/doc/texinfo.tex @@ -0,0 +1,10079 @@ +% texinfo.tex -- TeX macros to handle Texinfo files. +% +% Load plain if necessary, i.e., if running under initex. +\expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi +% +\def\texinfoversion{2013-02-01.11} +% +% Copyright 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995, +% 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, +% 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc. +% +% This texinfo.tex file is free software: you can redistribute it and/or +% modify it under the terms of the GNU General Public License as +% published by the Free Software Foundation, either version 3 of the +% License, or (at your option) any later version. +% +% This texinfo.tex file is distributed in the hope that it will be +% useful, but WITHOUT ANY WARRANTY; without even the implied warranty +% of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +% General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with this program. If not, see . +% +% As a special exception, when this file is read by TeX when processing +% a Texinfo source document, you may use the result without +% restriction. This Exception is an additional permission under section 7 +% of the GNU General Public License, version 3 ("GPLv3"). +% +% Please try the latest version of texinfo.tex before submitting bug +% reports; you can get the latest version from: +% http://ftp.gnu.org/gnu/texinfo/ (the Texinfo release area), or +% http://ftpmirror.gnu.org/texinfo/ (same, via a mirror), or +% http://www.gnu.org/software/texinfo/ (the Texinfo home page) +% The texinfo.tex in any given distribution could well be out +% of date, so if that's what you're using, please check. +% +% Send bug reports to bug-texinfo@gnu.org. Please include including a +% complete document in each bug report with which we can reproduce the +% problem. Patches are, of course, greatly appreciated. +% +% To process a Texinfo manual with TeX, it's most reliable to use the +% texi2dvi shell script that comes with the distribution. For a simple +% manual foo.texi, however, you can get away with this: +% tex foo.texi +% texindex foo.?? +% tex foo.texi +% tex foo.texi +% dvips foo.dvi -o # or whatever; this makes foo.ps. +% The extra TeX runs get the cross-reference information correct. +% Sometimes one run after texindex suffices, and sometimes you need more +% than two; texi2dvi does it as many times as necessary. +% +% It is possible to adapt texinfo.tex for other languages, to some +% extent. You can get the existing language-specific files from the +% full Texinfo distribution. +% +% The GNU Texinfo home page is http://www.gnu.org/software/texinfo. + + +\message{Loading texinfo [version \texinfoversion]:} + +% If in a .fmt file, print the version number +% and turn on active characters that we couldn't do earlier because +% they might have appeared in the input file name. +\everyjob{\message{[Texinfo version \texinfoversion]}% + \catcode`+=\active \catcode`\_=\active} + +\chardef\other=12 + +% We never want plain's \outer definition of \+ in Texinfo. +% For @tex, we can use \tabalign. +\let\+ = \relax + +% Save some plain tex macros whose names we will redefine. +\let\ptexb=\b +\let\ptexbullet=\bullet +\let\ptexc=\c +\let\ptexcomma=\, +\let\ptexdot=\. +\let\ptexdots=\dots +\let\ptexend=\end +\let\ptexequiv=\equiv +\let\ptexexclam=\! +\let\ptexfootnote=\footnote +\let\ptexgtr=> +\let\ptexhat=^ +\let\ptexi=\i +\let\ptexindent=\indent +\let\ptexinsert=\insert +\let\ptexlbrace=\{ +\let\ptexless=< +\let\ptexnewwrite\newwrite +\let\ptexnoindent=\noindent +\let\ptexplus=+ +\let\ptexraggedright=\raggedright +\let\ptexrbrace=\} +\let\ptexslash=\/ +\let\ptexstar=\* +\let\ptext=\t +\let\ptextop=\top +{\catcode`\'=\active \global\let\ptexquoteright'}% active in plain's math mode + +% If this character appears in an error message or help string, it +% starts a new line in the output. +\newlinechar = `^^J + +% Use TeX 3.0's \inputlineno to get the line number, for better error +% messages, but if we're using an old version of TeX, don't do anything. +% +\ifx\inputlineno\thisisundefined + \let\linenumber = \empty % Pre-3.0. +\else + \def\linenumber{l.\the\inputlineno:\space} +\fi + +% Set up fixed words for English if not already set. +\ifx\putwordAppendix\undefined \gdef\putwordAppendix{Appendix}\fi +\ifx\putwordChapter\undefined \gdef\putwordChapter{Chapter}\fi +\ifx\putworderror\undefined \gdef\putworderror{error}\fi +\ifx\putwordfile\undefined \gdef\putwordfile{file}\fi +\ifx\putwordin\undefined \gdef\putwordin{in}\fi +\ifx\putwordIndexIsEmpty\undefined \gdef\putwordIndexIsEmpty{(Index is empty)}\fi +\ifx\putwordIndexNonexistent\undefined \gdef\putwordIndexNonexistent{(Index is nonexistent)}\fi +\ifx\putwordInfo\undefined \gdef\putwordInfo{Info}\fi +\ifx\putwordInstanceVariableof\undefined \gdef\putwordInstanceVariableof{Instance Variable of}\fi +\ifx\putwordMethodon\undefined \gdef\putwordMethodon{Method on}\fi +\ifx\putwordNoTitle\undefined \gdef\putwordNoTitle{No Title}\fi +\ifx\putwordof\undefined \gdef\putwordof{of}\fi +\ifx\putwordon\undefined \gdef\putwordon{on}\fi +\ifx\putwordpage\undefined \gdef\putwordpage{page}\fi +\ifx\putwordsection\undefined \gdef\putwordsection{section}\fi +\ifx\putwordSection\undefined \gdef\putwordSection{Section}\fi +\ifx\putwordsee\undefined \gdef\putwordsee{see}\fi +\ifx\putwordSee\undefined \gdef\putwordSee{See}\fi +\ifx\putwordShortTOC\undefined \gdef\putwordShortTOC{Short Contents}\fi +\ifx\putwordTOC\undefined \gdef\putwordTOC{Table of Contents}\fi +% +\ifx\putwordMJan\undefined \gdef\putwordMJan{January}\fi +\ifx\putwordMFeb\undefined \gdef\putwordMFeb{February}\fi +\ifx\putwordMMar\undefined \gdef\putwordMMar{March}\fi +\ifx\putwordMApr\undefined \gdef\putwordMApr{April}\fi +\ifx\putwordMMay\undefined \gdef\putwordMMay{May}\fi +\ifx\putwordMJun\undefined \gdef\putwordMJun{June}\fi +\ifx\putwordMJul\undefined \gdef\putwordMJul{July}\fi +\ifx\putwordMAug\undefined \gdef\putwordMAug{August}\fi +\ifx\putwordMSep\undefined \gdef\putwordMSep{September}\fi +\ifx\putwordMOct\undefined \gdef\putwordMOct{October}\fi +\ifx\putwordMNov\undefined \gdef\putwordMNov{November}\fi +\ifx\putwordMDec\undefined \gdef\putwordMDec{December}\fi +% +\ifx\putwordDefmac\undefined \gdef\putwordDefmac{Macro}\fi +\ifx\putwordDefspec\undefined \gdef\putwordDefspec{Special Form}\fi +\ifx\putwordDefvar\undefined \gdef\putwordDefvar{Variable}\fi +\ifx\putwordDefopt\undefined \gdef\putwordDefopt{User Option}\fi +\ifx\putwordDeffunc\undefined \gdef\putwordDeffunc{Function}\fi + +% Since the category of space is not known, we have to be careful. +\chardef\spacecat = 10 +\def\spaceisspace{\catcode`\ =\spacecat} + +% sometimes characters are active, so we need control sequences. +\chardef\ampChar = `\& +\chardef\colonChar = `\: +\chardef\commaChar = `\, +\chardef\dashChar = `\- +\chardef\dotChar = `\. +\chardef\exclamChar= `\! +\chardef\hashChar = `\# +\chardef\lquoteChar= `\` +\chardef\questChar = `\? +\chardef\rquoteChar= `\' +\chardef\semiChar = `\; +\chardef\slashChar = `\/ +\chardef\underChar = `\_ + +% Ignore a token. +% +\def\gobble#1{} + +% The following is used inside several \edef's. +\def\makecsname#1{\expandafter\noexpand\csname#1\endcsname} + +% Hyphenation fixes. +\hyphenation{ + Flor-i-da Ghost-script Ghost-view Mac-OS Post-Script + ap-pen-dix bit-map bit-maps + data-base data-bases eshell fall-ing half-way long-est man-u-script + man-u-scripts mini-buf-fer mini-buf-fers over-view par-a-digm + par-a-digms rath-er rec-tan-gu-lar ro-bot-ics se-vere-ly set-up spa-ces + spell-ing spell-ings + stand-alone strong-est time-stamp time-stamps which-ever white-space + wide-spread wrap-around +} + +% Margin to add to right of even pages, to left of odd pages. +\newdimen\bindingoffset +\newdimen\normaloffset +\newdimen\pagewidth \newdimen\pageheight + +% For a final copy, take out the rectangles +% that mark overfull boxes (in case you have decided +% that the text looks ok even though it passes the margin). +% +\def\finalout{\overfullrule=0pt } + +% Sometimes it is convenient to have everything in the transcript file +% and nothing on the terminal. We don't just call \tracingall here, +% since that produces some useless output on the terminal. We also make +% some effort to order the tracing commands to reduce output in the log +% file; cf. trace.sty in LaTeX. +% +\def\gloggingall{\begingroup \globaldefs = 1 \loggingall \endgroup}% +\def\loggingall{% + \tracingstats2 + \tracingpages1 + \tracinglostchars2 % 2 gives us more in etex + \tracingparagraphs1 + \tracingoutput1 + \tracingmacros2 + \tracingrestores1 + \showboxbreadth\maxdimen \showboxdepth\maxdimen + \ifx\eTeXversion\thisisundefined\else % etex gives us more logging + \tracingscantokens1 + \tracingifs1 + \tracinggroups1 + \tracingnesting2 + \tracingassigns1 + \fi + \tracingcommands3 % 3 gives us more in etex + \errorcontextlines16 +}% + +% @errormsg{MSG}. Do the index-like expansions on MSG, but if things +% aren't perfect, it's not the end of the world, being an error message, +% after all. +% +\def\errormsg{\begingroup \indexnofonts \doerrormsg} +\def\doerrormsg#1{\errmessage{#1}} + +% add check for \lastpenalty to plain's definitions. If the last thing +% we did was a \nobreak, we don't want to insert more space. +% +\def\smallbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\smallskipamount + \removelastskip\penalty-50\smallskip\fi\fi} +\def\medbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\medskipamount + \removelastskip\penalty-100\medskip\fi\fi} +\def\bigbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\bigskipamount + \removelastskip\penalty-200\bigskip\fi\fi} + +% Do @cropmarks to get crop marks. +% +\newif\ifcropmarks +\let\cropmarks = \cropmarkstrue +% +% Dimensions to add cropmarks at corners. +% Added by P. A. MacKay, 12 Nov. 1986 +% +\newdimen\outerhsize \newdimen\outervsize % set by the paper size routines +\newdimen\cornerlong \cornerlong=1pc +\newdimen\cornerthick \cornerthick=.3pt +\newdimen\topandbottommargin \topandbottommargin=.75in + +% Output a mark which sets \thischapter, \thissection and \thiscolor. +% We dump everything together because we only have one kind of mark. +% This works because we only use \botmark / \topmark, not \firstmark. +% +% A mark contains a subexpression of the \ifcase ... \fi construct. +% \get*marks macros below extract the needed part using \ifcase. +% +% Another complication is to let the user choose whether \thischapter +% (\thissection) refers to the chapter (section) in effect at the top +% of a page, or that at the bottom of a page. The solution is +% described on page 260 of The TeXbook. It involves outputting two +% marks for the sectioning macros, one before the section break, and +% one after. I won't pretend I can describe this better than DEK... +\def\domark{% + \toks0=\expandafter{\lastchapterdefs}% + \toks2=\expandafter{\lastsectiondefs}% + \toks4=\expandafter{\prevchapterdefs}% + \toks6=\expandafter{\prevsectiondefs}% + \toks8=\expandafter{\lastcolordefs}% + \mark{% + \the\toks0 \the\toks2 + \noexpand\or \the\toks4 \the\toks6 + \noexpand\else \the\toks8 + }% +} +% \topmark doesn't work for the very first chapter (after the title +% page or the contents), so we use \firstmark there -- this gets us +% the mark with the chapter defs, unless the user sneaks in, e.g., +% @setcolor (or @url, or @link, etc.) between @contents and the very +% first @chapter. +\def\gettopheadingmarks{% + \ifcase0\topmark\fi + \ifx\thischapter\empty \ifcase0\firstmark\fi \fi +} +\def\getbottomheadingmarks{\ifcase1\botmark\fi} +\def\getcolormarks{\ifcase2\topmark\fi} + +% Avoid "undefined control sequence" errors. +\def\lastchapterdefs{} +\def\lastsectiondefs{} +\def\prevchapterdefs{} +\def\prevsectiondefs{} +\def\lastcolordefs{} + +% Main output routine. +\chardef\PAGE = 255 +\output = {\onepageout{\pagecontents\PAGE}} + +\newbox\headlinebox +\newbox\footlinebox + +% \onepageout takes a vbox as an argument. Note that \pagecontents +% does insertions, but you have to call it yourself. +\def\onepageout#1{% + \ifcropmarks \hoffset=0pt \else \hoffset=\normaloffset \fi + % + \ifodd\pageno \advance\hoffset by \bindingoffset + \else \advance\hoffset by -\bindingoffset\fi + % + % Do this outside of the \shipout so @code etc. will be expanded in + % the headline as they should be, not taken literally (outputting ''code). + \ifodd\pageno \getoddheadingmarks \else \getevenheadingmarks \fi + \setbox\headlinebox = \vbox{\let\hsize=\pagewidth \makeheadline}% + \ifodd\pageno \getoddfootingmarks \else \getevenfootingmarks \fi + \setbox\footlinebox = \vbox{\let\hsize=\pagewidth \makefootline}% + % + {% + % Have to do this stuff outside the \shipout because we want it to + % take effect in \write's, yet the group defined by the \vbox ends + % before the \shipout runs. + % + \indexdummies % don't expand commands in the output. + \normalturnoffactive % \ in index entries must not stay \, e.g., if + % the page break happens to be in the middle of an example. + % We don't want .vr (or whatever) entries like this: + % \entry{{\tt \indexbackslash }acronym}{32}{\code {\acronym}} + % "\acronym" won't work when it's read back in; + % it needs to be + % {\code {{\tt \backslashcurfont }acronym} + \shipout\vbox{% + % Do this early so pdf references go to the beginning of the page. + \ifpdfmakepagedest \pdfdest name{\the\pageno} xyz\fi + % + \ifcropmarks \vbox to \outervsize\bgroup + \hsize = \outerhsize + \vskip-\topandbottommargin + \vtop to0pt{% + \line{\ewtop\hfil\ewtop}% + \nointerlineskip + \line{% + \vbox{\moveleft\cornerthick\nstop}% + \hfill + \vbox{\moveright\cornerthick\nstop}% + }% + \vss}% + \vskip\topandbottommargin + \line\bgroup + \hfil % center the page within the outer (page) hsize. + \ifodd\pageno\hskip\bindingoffset\fi + \vbox\bgroup + \fi + % + \unvbox\headlinebox + \pagebody{#1}% + \ifdim\ht\footlinebox > 0pt + % Only leave this space if the footline is nonempty. + % (We lessened \vsize for it in \oddfootingyyy.) + % The \baselineskip=24pt in plain's \makefootline has no effect. + \vskip 24pt + \unvbox\footlinebox + \fi + % + \ifcropmarks + \egroup % end of \vbox\bgroup + \hfil\egroup % end of (centering) \line\bgroup + \vskip\topandbottommargin plus1fill minus1fill + \boxmaxdepth = \cornerthick + \vbox to0pt{\vss + \line{% + \vbox{\moveleft\cornerthick\nsbot}% + \hfill + \vbox{\moveright\cornerthick\nsbot}% + }% + \nointerlineskip + \line{\ewbot\hfil\ewbot}% + }% + \egroup % \vbox from first cropmarks clause + \fi + }% end of \shipout\vbox + }% end of group with \indexdummies + \advancepageno + \ifnum\outputpenalty>-20000 \else\dosupereject\fi +} + +\newinsert\margin \dimen\margin=\maxdimen + +\def\pagebody#1{\vbox to\pageheight{\boxmaxdepth=\maxdepth #1}} +{\catcode`\@ =11 +\gdef\pagecontents#1{\ifvoid\topins\else\unvbox\topins\fi +% marginal hacks, juha@viisa.uucp (Juha Takala) +\ifvoid\margin\else % marginal info is present + \rlap{\kern\hsize\vbox to\z@{\kern1pt\box\margin \vss}}\fi +\dimen@=\dp#1\relax \unvbox#1\relax +\ifvoid\footins\else\vskip\skip\footins\footnoterule \unvbox\footins\fi +\ifr@ggedbottom \kern-\dimen@ \vfil \fi} +} + +% Here are the rules for the cropmarks. Note that they are +% offset so that the space between them is truly \outerhsize or \outervsize +% (P. A. MacKay, 12 November, 1986) +% +\def\ewtop{\vrule height\cornerthick depth0pt width\cornerlong} +\def\nstop{\vbox + {\hrule height\cornerthick depth\cornerlong width\cornerthick}} +\def\ewbot{\vrule height0pt depth\cornerthick width\cornerlong} +\def\nsbot{\vbox + {\hrule height\cornerlong depth\cornerthick width\cornerthick}} + +% Parse an argument, then pass it to #1. The argument is the rest of +% the input line (except we remove a trailing comment). #1 should be a +% macro which expects an ordinary undelimited TeX argument. +% +\def\parsearg{\parseargusing{}} +\def\parseargusing#1#2{% + \def\argtorun{#2}% + \begingroup + \obeylines + \spaceisspace + #1% + \parseargline\empty% Insert the \empty token, see \finishparsearg below. +} + +{\obeylines % + \gdef\parseargline#1^^M{% + \endgroup % End of the group started in \parsearg. + \argremovecomment #1\comment\ArgTerm% + }% +} + +% First remove any @comment, then any @c comment. +\def\argremovecomment#1\comment#2\ArgTerm{\argremovec #1\c\ArgTerm} +\def\argremovec#1\c#2\ArgTerm{\argcheckspaces#1\^^M\ArgTerm} + +% Each occurrence of `\^^M' or `\^^M' is replaced by a single space. +% +% \argremovec might leave us with trailing space, e.g., +% @end itemize @c foo +% This space token undergoes the same procedure and is eventually removed +% by \finishparsearg. +% +\def\argcheckspaces#1\^^M{\argcheckspacesX#1\^^M \^^M} +\def\argcheckspacesX#1 \^^M{\argcheckspacesY#1\^^M} +\def\argcheckspacesY#1\^^M#2\^^M#3\ArgTerm{% + \def\temp{#3}% + \ifx\temp\empty + % Do not use \next, perhaps the caller of \parsearg uses it; reuse \temp: + \let\temp\finishparsearg + \else + \let\temp\argcheckspaces + \fi + % Put the space token in: + \temp#1 #3\ArgTerm +} + +% If a _delimited_ argument is enclosed in braces, they get stripped; so +% to get _exactly_ the rest of the line, we had to prevent such situation. +% We prepended an \empty token at the very beginning and we expand it now, +% just before passing the control to \argtorun. +% (Similarly, we have to think about #3 of \argcheckspacesY above: it is +% either the null string, or it ends with \^^M---thus there is no danger +% that a pair of braces would be stripped. +% +% But first, we have to remove the trailing space token. +% +\def\finishparsearg#1 \ArgTerm{\expandafter\argtorun\expandafter{#1}} + +% \parseargdef\foo{...} +% is roughly equivalent to +% \def\foo{\parsearg\Xfoo} +% \def\Xfoo#1{...} +% +% Actually, I use \csname\string\foo\endcsname, ie. \\foo, as it is my +% favourite TeX trick. --kasal, 16nov03 + +\def\parseargdef#1{% + \expandafter \doparseargdef \csname\string#1\endcsname #1% +} +\def\doparseargdef#1#2{% + \def#2{\parsearg#1}% + \def#1##1% +} + +% Several utility definitions with active space: +{ + \obeyspaces + \gdef\obeyedspace{ } + + % Make each space character in the input produce a normal interword + % space in the output. Don't allow a line break at this space, as this + % is used only in environments like @example, where each line of input + % should produce a line of output anyway. + % + \gdef\sepspaces{\obeyspaces\let =\tie} + + % If an index command is used in an @example environment, any spaces + % therein should become regular spaces in the raw index file, not the + % expansion of \tie (\leavevmode \penalty \@M \ ). + \gdef\unsepspaces{\let =\space} +} + + +\def\flushcr{\ifx\par\lisppar \def\next##1{}\else \let\next=\relax \fi \next} + +% Define the framework for environments in texinfo.tex. It's used like this: +% +% \envdef\foo{...} +% \def\Efoo{...} +% +% It's the responsibility of \envdef to insert \begingroup before the +% actual body; @end closes the group after calling \Efoo. \envdef also +% defines \thisenv, so the current environment is known; @end checks +% whether the environment name matches. The \checkenv macro can also be +% used to check whether the current environment is the one expected. +% +% Non-false conditionals (@iftex, @ifset) don't fit into this, so they +% are not treated as environments; they don't open a group. (The +% implementation of @end takes care not to call \endgroup in this +% special case.) + + +% At run-time, environments start with this: +\def\startenvironment#1{\begingroup\def\thisenv{#1}} +% initialize +\let\thisenv\empty + +% ... but they get defined via ``\envdef\foo{...}'': +\long\def\envdef#1#2{\def#1{\startenvironment#1#2}} +\def\envparseargdef#1#2{\parseargdef#1{\startenvironment#1#2}} + +% Check whether we're in the right environment: +\def\checkenv#1{% + \def\temp{#1}% + \ifx\thisenv\temp + \else + \badenverr + \fi +} + +% Environment mismatch, #1 expected: +\def\badenverr{% + \errhelp = \EMsimple + \errmessage{This command can appear only \inenvironment\temp, + not \inenvironment\thisenv}% +} +\def\inenvironment#1{% + \ifx#1\empty + outside of any environment% + \else + in environment \expandafter\string#1% + \fi +} + +% @end foo executes the definition of \Efoo. +% But first, it executes a specialized version of \checkenv +% +\parseargdef\end{% + \if 1\csname iscond.#1\endcsname + \else + % The general wording of \badenverr may not be ideal. + \expandafter\checkenv\csname#1\endcsname + \csname E#1\endcsname + \endgroup + \fi +} + +\newhelp\EMsimple{Press RETURN to continue.} + + +% Be sure we're in horizontal mode when doing a tie, since we make space +% equivalent to this in @example-like environments. Otherwise, a space +% at the beginning of a line will start with \penalty -- and +% since \penalty is valid in vertical mode, we'd end up putting the +% penalty on the vertical list instead of in the new paragraph. +{\catcode`@ = 11 + % Avoid using \@M directly, because that causes trouble + % if the definition is written into an index file. + \global\let\tiepenalty = \@M + \gdef\tie{\leavevmode\penalty\tiepenalty\ } +} + +% @: forces normal size whitespace following. +\def\:{\spacefactor=1000 } + +% @* forces a line break. +\def\*{\unskip\hfil\break\hbox{}\ignorespaces} + +% @/ allows a line break. +\let\/=\allowbreak + +% @. is an end-of-sentence period. +\def\.{.\spacefactor=\endofsentencespacefactor\space} + +% @! is an end-of-sentence bang. +\def\!{!\spacefactor=\endofsentencespacefactor\space} + +% @? is an end-of-sentence query. +\def\?{?\spacefactor=\endofsentencespacefactor\space} + +% @frenchspacing on|off says whether to put extra space after punctuation. +% +\def\onword{on} +\def\offword{off} +% +\parseargdef\frenchspacing{% + \def\temp{#1}% + \ifx\temp\onword \plainfrenchspacing + \else\ifx\temp\offword \plainnonfrenchspacing + \else + \errhelp = \EMsimple + \errmessage{Unknown @frenchspacing option `\temp', must be on|off}% + \fi\fi +} + +% @w prevents a word break. Without the \leavevmode, @w at the +% beginning of a paragraph, when TeX is still in vertical mode, would +% produce a whole line of output instead of starting the paragraph. +\def\w#1{\leavevmode\hbox{#1}} + +% @group ... @end group forces ... to be all on one page, by enclosing +% it in a TeX vbox. We use \vtop instead of \vbox to construct the box +% to keep its height that of a normal line. According to the rules for +% \topskip (p.114 of the TeXbook), the glue inserted is +% max (\topskip - \ht (first item), 0). If that height is large, +% therefore, no glue is inserted, and the space between the headline and +% the text is small, which looks bad. +% +% Another complication is that the group might be very large. This can +% cause the glue on the previous page to be unduly stretched, because it +% does not have much material. In this case, it's better to add an +% explicit \vfill so that the extra space is at the bottom. The +% threshold for doing this is if the group is more than \vfilllimit +% percent of a page (\vfilllimit can be changed inside of @tex). +% +\newbox\groupbox +\def\vfilllimit{0.7} +% +\envdef\group{% + \ifnum\catcode`\^^M=\active \else + \errhelp = \groupinvalidhelp + \errmessage{@group invalid in context where filling is enabled}% + \fi + \startsavinginserts + % + \setbox\groupbox = \vtop\bgroup + % Do @comment since we are called inside an environment such as + % @example, where each end-of-line in the input causes an + % end-of-line in the output. We don't want the end-of-line after + % the `@group' to put extra space in the output. Since @group + % should appear on a line by itself (according to the Texinfo + % manual), we don't worry about eating any user text. + \comment +} +% +% The \vtop produces a box with normal height and large depth; thus, TeX puts +% \baselineskip glue before it, and (when the next line of text is done) +% \lineskip glue after it. Thus, space below is not quite equal to space +% above. But it's pretty close. +\def\Egroup{% + % To get correct interline space between the last line of the group + % and the first line afterwards, we have to propagate \prevdepth. + \endgraf % Not \par, as it may have been set to \lisppar. + \global\dimen1 = \prevdepth + \egroup % End the \vtop. + % \dimen0 is the vertical size of the group's box. + \dimen0 = \ht\groupbox \advance\dimen0 by \dp\groupbox + % \dimen2 is how much space is left on the page (more or less). + \dimen2 = \pageheight \advance\dimen2 by -\pagetotal + % if the group doesn't fit on the current page, and it's a big big + % group, force a page break. + \ifdim \dimen0 > \dimen2 + \ifdim \pagetotal < \vfilllimit\pageheight + \page + \fi + \fi + \box\groupbox + \prevdepth = \dimen1 + \checkinserts +} +% +% TeX puts in an \escapechar (i.e., `@') at the beginning of the help +% message, so this ends up printing `@group can only ...'. +% +\newhelp\groupinvalidhelp{% +group can only be used in environments such as @example,^^J% +where each line of input produces a line of output.} + +% @need space-in-mils +% forces a page break if there is not space-in-mils remaining. + +\newdimen\mil \mil=0.001in + +\parseargdef\need{% + % Ensure vertical mode, so we don't make a big box in the middle of a + % paragraph. + \par + % + % If the @need value is less than one line space, it's useless. + \dimen0 = #1\mil + \dimen2 = \ht\strutbox + \advance\dimen2 by \dp\strutbox + \ifdim\dimen0 > \dimen2 + % + % Do a \strut just to make the height of this box be normal, so the + % normal leading is inserted relative to the preceding line. + % And a page break here is fine. + \vtop to #1\mil{\strut\vfil}% + % + % TeX does not even consider page breaks if a penalty added to the + % main vertical list is 10000 or more. But in order to see if the + % empty box we just added fits on the page, we must make it consider + % page breaks. On the other hand, we don't want to actually break the + % page after the empty box. So we use a penalty of 9999. + % + % There is an extremely small chance that TeX will actually break the + % page at this \penalty, if there are no other feasible breakpoints in + % sight. (If the user is using lots of big @group commands, which + % almost-but-not-quite fill up a page, TeX will have a hard time doing + % good page breaking, for example.) However, I could not construct an + % example where a page broke at this \penalty; if it happens in a real + % document, then we can reconsider our strategy. + \penalty9999 + % + % Back up by the size of the box, whether we did a page break or not. + \kern -#1\mil + % + % Do not allow a page break right after this kern. + \nobreak + \fi +} + +% @br forces paragraph break (and is undocumented). + +\let\br = \par + +% @page forces the start of a new page. +% +\def\page{\par\vfill\supereject} + +% @exdent text.... +% outputs text on separate line in roman font, starting at standard page margin + +% This records the amount of indent in the innermost environment. +% That's how much \exdent should take out. +\newskip\exdentamount + +% This defn is used inside fill environments such as @defun. +\parseargdef\exdent{\hfil\break\hbox{\kern -\exdentamount{\rm#1}}\hfil\break} + +% This defn is used inside nofill environments such as @example. +\parseargdef\nofillexdent{{\advance \leftskip by -\exdentamount + \leftline{\hskip\leftskip{\rm#1}}}} + +% @inmargin{WHICH}{TEXT} puts TEXT in the WHICH margin next to the current +% paragraph. For more general purposes, use the \margin insertion +% class. WHICH is `l' or `r'. Not documented, written for gawk manual. +% +\newskip\inmarginspacing \inmarginspacing=1cm +\def\strutdepth{\dp\strutbox} +% +\def\doinmargin#1#2{\strut\vadjust{% + \nobreak + \kern-\strutdepth + \vtop to \strutdepth{% + \baselineskip=\strutdepth + \vss + % if you have multiple lines of stuff to put here, you'll need to + % make the vbox yourself of the appropriate size. + \ifx#1l% + \llap{\ignorespaces #2\hskip\inmarginspacing}% + \else + \rlap{\hskip\hsize \hskip\inmarginspacing \ignorespaces #2}% + \fi + \null + }% +}} +\def\inleftmargin{\doinmargin l} +\def\inrightmargin{\doinmargin r} +% +% @inmargin{TEXT [, RIGHT-TEXT]} +% (if RIGHT-TEXT is given, use TEXT for left page, RIGHT-TEXT for right; +% else use TEXT for both). +% +\def\inmargin#1{\parseinmargin #1,,\finish} +\def\parseinmargin#1,#2,#3\finish{% not perfect, but better than nothing. + \setbox0 = \hbox{\ignorespaces #2}% + \ifdim\wd0 > 0pt + \def\lefttext{#1}% have both texts + \def\righttext{#2}% + \else + \def\lefttext{#1}% have only one text + \def\righttext{#1}% + \fi + % + \ifodd\pageno + \def\temp{\inrightmargin\righttext}% odd page -> outside is right margin + \else + \def\temp{\inleftmargin\lefttext}% + \fi + \temp +} + +% @| inserts a changebar to the left of the current line. It should +% surround any changed text. This approach does *not* work if the +% change spans more than two lines of output. To handle that, we would +% have adopt a much more difficult approach (putting marks into the main +% vertical list for the beginning and end of each change). This command +% is not documented, not supported, and doesn't work. +% +\def\|{% + % \vadjust can only be used in horizontal mode. + \leavevmode + % + % Append this vertical mode material after the current line in the output. + \vadjust{% + % We want to insert a rule with the height and depth of the current + % leading; that is exactly what \strutbox is supposed to record. + \vskip-\baselineskip + % + % \vadjust-items are inserted at the left edge of the type. So + % the \llap here moves out into the left-hand margin. + \llap{% + % + % For a thicker or thinner bar, change the `1pt'. + \vrule height\baselineskip width1pt + % + % This is the space between the bar and the text. + \hskip 12pt + }% + }% +} + +% @include FILE -- \input text of FILE. +% +\def\include{\parseargusing\filenamecatcodes\includezzz} +\def\includezzz#1{% + \pushthisfilestack + \def\thisfile{#1}% + {% + \makevalueexpandable % we want to expand any @value in FILE. + \turnoffactive % and allow special characters in the expansion + \indexnofonts % Allow `@@' and other weird things in file names. + \wlog{texinfo.tex: doing @include of #1^^J}% + \edef\temp{\noexpand\input #1 }% + % + % This trickery is to read FILE outside of a group, in case it makes + % definitions, etc. + \expandafter + }\temp + \popthisfilestack +} +\def\filenamecatcodes{% + \catcode`\\=\other + \catcode`~=\other + \catcode`^=\other + \catcode`_=\other + \catcode`|=\other + \catcode`<=\other + \catcode`>=\other + \catcode`+=\other + \catcode`-=\other + \catcode`\`=\other + \catcode`\'=\other +} + +\def\pushthisfilestack{% + \expandafter\pushthisfilestackX\popthisfilestack\StackTerm +} +\def\pushthisfilestackX{% + \expandafter\pushthisfilestackY\thisfile\StackTerm +} +\def\pushthisfilestackY #1\StackTerm #2\StackTerm {% + \gdef\popthisfilestack{\gdef\thisfile{#1}\gdef\popthisfilestack{#2}}% +} + +\def\popthisfilestack{\errthisfilestackempty} +\def\errthisfilestackempty{\errmessage{Internal error: + the stack of filenames is empty.}} +% +\def\thisfile{} + +% @center line +% outputs that line, centered. +% +\parseargdef\center{% + \ifhmode + \let\centersub\centerH + \else + \let\centersub\centerV + \fi + \centersub{\hfil \ignorespaces#1\unskip \hfil}% + \let\centersub\relax % don't let the definition persist, just in case +} +\def\centerH#1{{% + \hfil\break + \advance\hsize by -\leftskip + \advance\hsize by -\rightskip + \line{#1}% + \break +}} +% +\newcount\centerpenalty +\def\centerV#1{% + % The idea here is the same as in \startdefun, \cartouche, etc.: if + % @center is the first thing after a section heading, we need to wipe + % out the negative parskip inserted by \sectionheading, but still + % prevent a page break here. + \centerpenalty = \lastpenalty + \ifnum\centerpenalty>10000 \vskip\parskip \fi + \ifnum\centerpenalty>9999 \penalty\centerpenalty \fi + \line{\kern\leftskip #1\kern\rightskip}% +} + +% @sp n outputs n lines of vertical space +% +\parseargdef\sp{\vskip #1\baselineskip} + +% @comment ...line which is ignored... +% @c is the same as @comment +% @ignore ... @end ignore is another way to write a comment +% +\def\comment{\begingroup \catcode`\^^M=\other% +\catcode`\@=\other \catcode`\{=\other \catcode`\}=\other% +\commentxxx} +{\catcode`\^^M=\other \gdef\commentxxx#1^^M{\endgroup}} +% +\let\c=\comment + +% @paragraphindent NCHARS +% We'll use ems for NCHARS, close enough. +% NCHARS can also be the word `asis' or `none'. +% We cannot feasibly implement @paragraphindent asis, though. +% +\def\asisword{asis} % no translation, these are keywords +\def\noneword{none} +% +\parseargdef\paragraphindent{% + \def\temp{#1}% + \ifx\temp\asisword + \else + \ifx\temp\noneword + \defaultparindent = 0pt + \else + \defaultparindent = #1em + \fi + \fi + \parindent = \defaultparindent +} + +% @exampleindent NCHARS +% We'll use ems for NCHARS like @paragraphindent. +% It seems @exampleindent asis isn't necessary, but +% I preserve it to make it similar to @paragraphindent. +\parseargdef\exampleindent{% + \def\temp{#1}% + \ifx\temp\asisword + \else + \ifx\temp\noneword + \lispnarrowing = 0pt + \else + \lispnarrowing = #1em + \fi + \fi +} + +% @firstparagraphindent WORD +% If WORD is `none', then suppress indentation of the first paragraph +% after a section heading. If WORD is `insert', then do indent at such +% paragraphs. +% +% The paragraph indentation is suppressed or not by calling +% \suppressfirstparagraphindent, which the sectioning commands do. +% We switch the definition of this back and forth according to WORD. +% By default, we suppress indentation. +% +\def\suppressfirstparagraphindent{\dosuppressfirstparagraphindent} +\def\insertword{insert} +% +\parseargdef\firstparagraphindent{% + \def\temp{#1}% + \ifx\temp\noneword + \let\suppressfirstparagraphindent = \dosuppressfirstparagraphindent + \else\ifx\temp\insertword + \let\suppressfirstparagraphindent = \relax + \else + \errhelp = \EMsimple + \errmessage{Unknown @firstparagraphindent option `\temp'}% + \fi\fi +} + +% Here is how we actually suppress indentation. Redefine \everypar to +% \kern backwards by \parindent, and then reset itself to empty. +% +% We also make \indent itself not actually do anything until the next +% paragraph. +% +\gdef\dosuppressfirstparagraphindent{% + \gdef\indent{% + \restorefirstparagraphindent + \indent + }% + \gdef\noindent{% + \restorefirstparagraphindent + \noindent + }% + \global\everypar = {% + \kern -\parindent + \restorefirstparagraphindent + }% +} + +\gdef\restorefirstparagraphindent{% + \global \let \indent = \ptexindent + \global \let \noindent = \ptexnoindent + \global \everypar = {}% +} + + +% @refill is a no-op. +\let\refill=\relax + +% If working on a large document in chapters, it is convenient to +% be able to disable indexing, cross-referencing, and contents, for test runs. +% This is done with @novalidate (before @setfilename). +% +\newif\iflinks \linkstrue % by default we want the aux files. +\let\novalidate = \linksfalse + +% @setfilename is done at the beginning of every texinfo file. +% So open here the files we need to have open while reading the input. +% This makes it possible to make a .fmt file for texinfo. +\def\setfilename{% + \fixbackslash % Turn off hack to swallow `\input texinfo'. + \iflinks + \tryauxfile + % Open the new aux file. TeX will close it automatically at exit. + \immediate\openout\auxfile=\jobname.aux + \fi % \openindices needs to do some work in any case. + \openindices + \let\setfilename=\comment % Ignore extra @setfilename cmds. + % + % If texinfo.cnf is present on the system, read it. + % Useful for site-wide @afourpaper, etc. + \openin 1 texinfo.cnf + \ifeof 1 \else \input texinfo.cnf \fi + \closein 1 + % + \comment % Ignore the actual filename. +} + +% Called from \setfilename. +% +\def\openindices{% + \newindex{cp}% + \newcodeindex{fn}% + \newcodeindex{vr}% + \newcodeindex{tp}% + \newcodeindex{ky}% + \newcodeindex{pg}% +} + +% @bye. +\outer\def\bye{\pagealignmacro\tracingstats=1\ptexend} + + +\message{pdf,} +% adobe `portable' document format +\newcount\tempnum +\newcount\lnkcount +\newtoks\filename +\newcount\filenamelength +\newcount\pgn +\newtoks\toksA +\newtoks\toksB +\newtoks\toksC +\newtoks\toksD +\newbox\boxA +\newcount\countA +\newif\ifpdf +\newif\ifpdfmakepagedest + +% when pdftex is run in dvi mode, \pdfoutput is defined (so \pdfoutput=1 +% can be set). So we test for \relax and 0 as well as being undefined. +\ifx\pdfoutput\thisisundefined +\else + \ifx\pdfoutput\relax + \else + \ifcase\pdfoutput + \else + \pdftrue + \fi + \fi +\fi + +% PDF uses PostScript string constants for the names of xref targets, +% for display in the outlines, and in other places. Thus, we have to +% double any backslashes. Otherwise, a name like "\node" will be +% interpreted as a newline (\n), followed by o, d, e. Not good. +% +% See http://www.ntg.nl/pipermail/ntg-pdftex/2004-July/000654.html and +% related messages. The final outcome is that it is up to the TeX user +% to double the backslashes and otherwise make the string valid, so +% that's what we do. pdftex 1.30.0 (ca.2005) introduced a primitive to +% do this reliably, so we use it. + +% #1 is a control sequence in which to do the replacements, +% which we \xdef. +\def\txiescapepdf#1{% + \ifx\pdfescapestring\thisisundefined + % No primitive available; should we give a warning or log? + % Many times it won't matter. + \else + % The expandable \pdfescapestring primitive escapes parentheses, + % backslashes, and other special chars. + \xdef#1{\pdfescapestring{#1}}% + \fi +} + +\newhelp\nopdfimagehelp{Texinfo supports .png, .jpg, .jpeg, and .pdf images +with PDF output, and none of those formats could be found. (.eps cannot +be supported due to the design of the PDF format; use regular TeX (DVI +output) for that.)} + +\ifpdf + % + % Color manipulation macros based on pdfcolor.tex, + % except using rgb instead of cmyk; the latter is said to render as a + % very dark gray on-screen and a very dark halftone in print, instead + % of actual black. + \def\rgbDarkRed{0.50 0.09 0.12} + \def\rgbBlack{0 0 0} + % + % k sets the color for filling (usual text, etc.); + % K sets the color for stroking (thin rules, e.g., normal _'s). + \def\pdfsetcolor#1{\pdfliteral{#1 rg #1 RG}} + % + % Set color, and create a mark which defines \thiscolor accordingly, + % so that \makeheadline knows which color to restore. + \def\setcolor#1{% + \xdef\lastcolordefs{\gdef\noexpand\thiscolor{#1}}% + \domark + \pdfsetcolor{#1}% + } + % + \def\maincolor{\rgbBlack} + \pdfsetcolor{\maincolor} + \edef\thiscolor{\maincolor} + \def\lastcolordefs{} + % + \def\makefootline{% + \baselineskip24pt + \line{\pdfsetcolor{\maincolor}\the\footline}% + } + % + \def\makeheadline{% + \vbox to 0pt{% + \vskip-22.5pt + \line{% + \vbox to8.5pt{}% + % Extract \thiscolor definition from the marks. + \getcolormarks + % Typeset the headline with \maincolor, then restore the color. + \pdfsetcolor{\maincolor}\the\headline\pdfsetcolor{\thiscolor}% + }% + \vss + }% + \nointerlineskip + } + % + % + \pdfcatalog{/PageMode /UseOutlines} + % + % #1 is image name, #2 width (might be empty/whitespace), #3 height (ditto). + \def\dopdfimage#1#2#3{% + \def\pdfimagewidth{#2}\setbox0 = \hbox{\ignorespaces #2}% + \def\pdfimageheight{#3}\setbox2 = \hbox{\ignorespaces #3}% + % + % pdftex (and the PDF format) support .pdf, .png, .jpg (among + % others). Let's try in that order, PDF first since if + % someone has a scalable image, presumably better to use that than a + % bitmap. + \let\pdfimgext=\empty + \begingroup + \openin 1 #1.pdf \ifeof 1 + \openin 1 #1.PDF \ifeof 1 + \openin 1 #1.png \ifeof 1 + \openin 1 #1.jpg \ifeof 1 + \openin 1 #1.jpeg \ifeof 1 + \openin 1 #1.JPG \ifeof 1 + \errhelp = \nopdfimagehelp + \errmessage{Could not find image file #1 for pdf}% + \else \gdef\pdfimgext{JPG}% + \fi + \else \gdef\pdfimgext{jpeg}% + \fi + \else \gdef\pdfimgext{jpg}% + \fi + \else \gdef\pdfimgext{png}% + \fi + \else \gdef\pdfimgext{PDF}% + \fi + \else \gdef\pdfimgext{pdf}% + \fi + \closein 1 + \endgroup + % + % without \immediate, ancient pdftex seg faults when the same image is + % included twice. (Version 3.14159-pre-1.0-unofficial-20010704.) + \ifnum\pdftexversion < 14 + \immediate\pdfimage + \else + \immediate\pdfximage + \fi + \ifdim \wd0 >0pt width \pdfimagewidth \fi + \ifdim \wd2 >0pt height \pdfimageheight \fi + \ifnum\pdftexversion<13 + #1.\pdfimgext + \else + {#1.\pdfimgext}% + \fi + \ifnum\pdftexversion < 14 \else + \pdfrefximage \pdflastximage + \fi} + % + \def\pdfmkdest#1{{% + % We have to set dummies so commands such as @code, and characters + % such as \, aren't expanded when present in a section title. + \indexnofonts + \turnoffactive + \makevalueexpandable + \def\pdfdestname{#1}% + \txiescapepdf\pdfdestname + \safewhatsit{\pdfdest name{\pdfdestname} xyz}% + }} + % + % used to mark target names; must be expandable. + \def\pdfmkpgn#1{#1} + % + % by default, use a color that is dark enough to print on paper as + % nearly black, but still distinguishable for online viewing. + \def\urlcolor{\rgbDarkRed} + \def\linkcolor{\rgbDarkRed} + \def\endlink{\setcolor{\maincolor}\pdfendlink} + % + % Adding outlines to PDF; macros for calculating structure of outlines + % come from Petr Olsak + \def\expnumber#1{\expandafter\ifx\csname#1\endcsname\relax 0% + \else \csname#1\endcsname \fi} + \def\advancenumber#1{\tempnum=\expnumber{#1}\relax + \advance\tempnum by 1 + \expandafter\xdef\csname#1\endcsname{\the\tempnum}} + % + % #1 is the section text, which is what will be displayed in the + % outline by the pdf viewer. #2 is the pdf expression for the number + % of subentries (or empty, for subsubsections). #3 is the node text, + % which might be empty if this toc entry had no corresponding node. + % #4 is the page number + % + \def\dopdfoutline#1#2#3#4{% + % Generate a link to the node text if that exists; else, use the + % page number. We could generate a destination for the section + % text in the case where a section has no node, but it doesn't + % seem worth the trouble, since most documents are normally structured. + \edef\pdfoutlinedest{#3}% + \ifx\pdfoutlinedest\empty + \def\pdfoutlinedest{#4}% + \else + \txiescapepdf\pdfoutlinedest + \fi + % + % Also escape PDF chars in the display string. + \edef\pdfoutlinetext{#1}% + \txiescapepdf\pdfoutlinetext + % + \pdfoutline goto name{\pdfmkpgn{\pdfoutlinedest}}#2{\pdfoutlinetext}% + } + % + \def\pdfmakeoutlines{% + \begingroup + % Read toc silently, to get counts of subentries for \pdfoutline. + \def\partentry##1##2##3##4{}% ignore parts in the outlines + \def\numchapentry##1##2##3##4{% + \def\thischapnum{##2}% + \def\thissecnum{0}% + \def\thissubsecnum{0}% + }% + \def\numsecentry##1##2##3##4{% + \advancenumber{chap\thischapnum}% + \def\thissecnum{##2}% + \def\thissubsecnum{0}% + }% + \def\numsubsecentry##1##2##3##4{% + \advancenumber{sec\thissecnum}% + \def\thissubsecnum{##2}% + }% + \def\numsubsubsecentry##1##2##3##4{% + \advancenumber{subsec\thissubsecnum}% + }% + \def\thischapnum{0}% + \def\thissecnum{0}% + \def\thissubsecnum{0}% + % + % use \def rather than \let here because we redefine \chapentry et + % al. a second time, below. + \def\appentry{\numchapentry}% + \def\appsecentry{\numsecentry}% + \def\appsubsecentry{\numsubsecentry}% + \def\appsubsubsecentry{\numsubsubsecentry}% + \def\unnchapentry{\numchapentry}% + \def\unnsecentry{\numsecentry}% + \def\unnsubsecentry{\numsubsecentry}% + \def\unnsubsubsecentry{\numsubsubsecentry}% + \readdatafile{toc}% + % + % Read toc second time, this time actually producing the outlines. + % The `-' means take the \expnumber as the absolute number of + % subentries, which we calculated on our first read of the .toc above. + % + % We use the node names as the destinations. + \def\numchapentry##1##2##3##4{% + \dopdfoutline{##1}{count-\expnumber{chap##2}}{##3}{##4}}% + \def\numsecentry##1##2##3##4{% + \dopdfoutline{##1}{count-\expnumber{sec##2}}{##3}{##4}}% + \def\numsubsecentry##1##2##3##4{% + \dopdfoutline{##1}{count-\expnumber{subsec##2}}{##3}{##4}}% + \def\numsubsubsecentry##1##2##3##4{% count is always zero + \dopdfoutline{##1}{}{##3}{##4}}% + % + % PDF outlines are displayed using system fonts, instead of + % document fonts. Therefore we cannot use special characters, + % since the encoding is unknown. For example, the eogonek from + % Latin 2 (0xea) gets translated to a | character. Info from + % Staszek Wawrykiewicz, 19 Jan 2004 04:09:24 +0100. + % + % TODO this right, we have to translate 8-bit characters to + % their "best" equivalent, based on the @documentencoding. Too + % much work for too little return. Just use the ASCII equivalents + % we use for the index sort strings. + % + \indexnofonts + \setupdatafile + % We can have normal brace characters in the PDF outlines, unlike + % Texinfo index files. So set that up. + \def\{{\lbracecharliteral}% + \def\}{\rbracecharliteral}% + \catcode`\\=\active \otherbackslash + \input \tocreadfilename + \endgroup + } + {\catcode`[=1 \catcode`]=2 + \catcode`{=\other \catcode`}=\other + \gdef\lbracecharliteral[{]% + \gdef\rbracecharliteral[}]% + ] + % + \def\skipspaces#1{\def\PP{#1}\def\D{|}% + \ifx\PP\D\let\nextsp\relax + \else\let\nextsp\skipspaces + \addtokens{\filename}{\PP}% + \advance\filenamelength by 1 + \fi + \nextsp} + \def\getfilename#1{% + \filenamelength=0 + % If we don't expand the argument now, \skipspaces will get + % snagged on things like "@value{foo}". + \edef\temp{#1}% + \expandafter\skipspaces\temp|\relax + } + \ifnum\pdftexversion < 14 + \let \startlink \pdfannotlink + \else + \let \startlink \pdfstartlink + \fi + % make a live url in pdf output. + \def\pdfurl#1{% + \begingroup + % it seems we really need yet another set of dummies; have not + % tried to figure out what each command should do in the context + % of @url. for now, just make @/ a no-op, that's the only one + % people have actually reported a problem with. + % + \normalturnoffactive + \def\@{@}% + \let\/=\empty + \makevalueexpandable + % do we want to go so far as to use \indexnofonts instead of just + % special-casing \var here? + \def\var##1{##1}% + % + \leavevmode\setcolor{\urlcolor}% + \startlink attr{/Border [0 0 0]}% + user{/Subtype /Link /A << /S /URI /URI (#1) >>}% + \endgroup} + \def\pdfgettoks#1.{\setbox\boxA=\hbox{\toksA={#1.}\toksB={}\maketoks}} + \def\addtokens#1#2{\edef\addtoks{\noexpand#1={\the#1#2}}\addtoks} + \def\adn#1{\addtokens{\toksC}{#1}\global\countA=1\let\next=\maketoks} + \def\poptoks#1#2|ENDTOKS|{\let\first=#1\toksD={#1}\toksA={#2}} + \def\maketoks{% + \expandafter\poptoks\the\toksA|ENDTOKS|\relax + \ifx\first0\adn0 + \else\ifx\first1\adn1 \else\ifx\first2\adn2 \else\ifx\first3\adn3 + \else\ifx\first4\adn4 \else\ifx\first5\adn5 \else\ifx\first6\adn6 + \else\ifx\first7\adn7 \else\ifx\first8\adn8 \else\ifx\first9\adn9 + \else + \ifnum0=\countA\else\makelink\fi + \ifx\first.\let\next=\done\else + \let\next=\maketoks + \addtokens{\toksB}{\the\toksD} + \ifx\first,\addtokens{\toksB}{\space}\fi + \fi + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi + \next} + \def\makelink{\addtokens{\toksB}% + {\noexpand\pdflink{\the\toksC}}\toksC={}\global\countA=0} + \def\pdflink#1{% + \startlink attr{/Border [0 0 0]} goto name{\pdfmkpgn{#1}} + \setcolor{\linkcolor}#1\endlink} + \def\done{\edef\st{\global\noexpand\toksA={\the\toksB}}\st} +\else + % non-pdf mode + \let\pdfmkdest = \gobble + \let\pdfurl = \gobble + \let\endlink = \relax + \let\setcolor = \gobble + \let\pdfsetcolor = \gobble + \let\pdfmakeoutlines = \relax +\fi % \ifx\pdfoutput + + +\message{fonts,} + +% Change the current font style to #1, remembering it in \curfontstyle. +% For now, we do not accumulate font styles: @b{@i{foo}} prints foo in +% italics, not bold italics. +% +\def\setfontstyle#1{% + \def\curfontstyle{#1}% not as a control sequence, because we are \edef'd. + \csname ten#1\endcsname % change the current font +} + +% Select #1 fonts with the current style. +% +\def\selectfonts#1{\csname #1fonts\endcsname \csname\curfontstyle\endcsname} + +\def\rm{\fam=0 \setfontstyle{rm}} +\def\it{\fam=\itfam \setfontstyle{it}} +\def\sl{\fam=\slfam \setfontstyle{sl}} +\def\bf{\fam=\bffam \setfontstyle{bf}}\def\bfstylename{bf} +\def\tt{\fam=\ttfam \setfontstyle{tt}} + +% Unfortunately, we have to override this for titles and the like, since +% in those cases "rm" is bold. Sigh. +\def\rmisbold{\rm\def\curfontstyle{bf}} + +% Texinfo sort of supports the sans serif font style, which plain TeX does not. +% So we set up a \sf. +\newfam\sffam +\def\sf{\fam=\sffam \setfontstyle{sf}} +\let\li = \sf % Sometimes we call it \li, not \sf. + +% We don't need math for this font style. +\def\ttsl{\setfontstyle{ttsl}} + + +% Set the baselineskip to #1, and the lineskip and strut size +% correspondingly. There is no deep meaning behind these magic numbers +% used as factors; they just match (closely enough) what Knuth defined. +% +\def\lineskipfactor{.08333} +\def\strutheightpercent{.70833} +\def\strutdepthpercent {.29167} +% +% can get a sort of poor man's double spacing by redefining this. +\def\baselinefactor{1} +% +\newdimen\textleading +\def\setleading#1{% + \dimen0 = #1\relax + \normalbaselineskip = \baselinefactor\dimen0 + \normallineskip = \lineskipfactor\normalbaselineskip + \normalbaselines + \setbox\strutbox =\hbox{% + \vrule width0pt height\strutheightpercent\baselineskip + depth \strutdepthpercent \baselineskip + }% +} + +% PDF CMaps. See also LaTeX's t1.cmap. +% +% do nothing with this by default. +\expandafter\let\csname cmapOT1\endcsname\gobble +\expandafter\let\csname cmapOT1IT\endcsname\gobble +\expandafter\let\csname cmapOT1TT\endcsname\gobble + +% if we are producing pdf, and we have \pdffontattr, then define cmaps. +% (\pdffontattr was introduced many years ago, but people still run +% older pdftex's; it's easy to conditionalize, so we do.) +\ifpdf \ifx\pdffontattr\thisisundefined \else + \begingroup + \catcode`\^^M=\active \def^^M{^^J}% Output line endings as the ^^J char. + \catcode`\%=12 \immediate\pdfobj stream {%!PS-Adobe-3.0 Resource-CMap +%%DocumentNeededResources: ProcSet (CIDInit) +%%IncludeResource: ProcSet (CIDInit) +%%BeginResource: CMap (TeX-OT1-0) +%%Title: (TeX-OT1-0 TeX OT1 0) +%%Version: 1.000 +%%EndComments +/CIDInit /ProcSet findresource begin +12 dict begin +begincmap +/CIDSystemInfo +<< /Registry (TeX) +/Ordering (OT1) +/Supplement 0 +>> def +/CMapName /TeX-OT1-0 def +/CMapType 2 def +1 begincodespacerange +<00> <7F> +endcodespacerange +8 beginbfrange +<00> <01> <0393> +<09> <0A> <03A8> +<23> <26> <0023> +<28> <3B> <0028> +<3F> <5B> <003F> +<5D> <5E> <005D> +<61> <7A> <0061> +<7B> <7C> <2013> +endbfrange +40 beginbfchar +<02> <0398> +<03> <039B> +<04> <039E> +<05> <03A0> +<06> <03A3> +<07> <03D2> +<08> <03A6> +<0B> <00660066> +<0C> <00660069> +<0D> <0066006C> +<0E> <006600660069> +<0F> <00660066006C> +<10> <0131> +<11> <0237> +<12> <0060> +<13> <00B4> +<14> <02C7> +<15> <02D8> +<16> <00AF> +<17> <02DA> +<18> <00B8> +<19> <00DF> +<1A> <00E6> +<1B> <0153> +<1C> <00F8> +<1D> <00C6> +<1E> <0152> +<1F> <00D8> +<21> <0021> +<22> <201D> +<27> <2019> +<3C> <00A1> +<3D> <003D> +<3E> <00BF> +<5C> <201C> +<5F> <02D9> +<60> <2018> +<7D> <02DD> +<7E> <007E> +<7F> <00A8> +endbfchar +endcmap +CMapName currentdict /CMap defineresource pop +end +end +%%EndResource +%%EOF + }\endgroup + \expandafter\edef\csname cmapOT1\endcsname#1{% + \pdffontattr#1{/ToUnicode \the\pdflastobj\space 0 R}% + }% +% +% \cmapOT1IT + \begingroup + \catcode`\^^M=\active \def^^M{^^J}% Output line endings as the ^^J char. + \catcode`\%=12 \immediate\pdfobj stream {%!PS-Adobe-3.0 Resource-CMap +%%DocumentNeededResources: ProcSet (CIDInit) +%%IncludeResource: ProcSet (CIDInit) +%%BeginResource: CMap (TeX-OT1IT-0) +%%Title: (TeX-OT1IT-0 TeX OT1IT 0) +%%Version: 1.000 +%%EndComments +/CIDInit /ProcSet findresource begin +12 dict begin +begincmap +/CIDSystemInfo +<< /Registry (TeX) +/Ordering (OT1IT) +/Supplement 0 +>> def +/CMapName /TeX-OT1IT-0 def +/CMapType 2 def +1 begincodespacerange +<00> <7F> +endcodespacerange +8 beginbfrange +<00> <01> <0393> +<09> <0A> <03A8> +<25> <26> <0025> +<28> <3B> <0028> +<3F> <5B> <003F> +<5D> <5E> <005D> +<61> <7A> <0061> +<7B> <7C> <2013> +endbfrange +42 beginbfchar +<02> <0398> +<03> <039B> +<04> <039E> +<05> <03A0> +<06> <03A3> +<07> <03D2> +<08> <03A6> +<0B> <00660066> +<0C> <00660069> +<0D> <0066006C> +<0E> <006600660069> +<0F> <00660066006C> +<10> <0131> +<11> <0237> +<12> <0060> +<13> <00B4> +<14> <02C7> +<15> <02D8> +<16> <00AF> +<17> <02DA> +<18> <00B8> +<19> <00DF> +<1A> <00E6> +<1B> <0153> +<1C> <00F8> +<1D> <00C6> +<1E> <0152> +<1F> <00D8> +<21> <0021> +<22> <201D> +<23> <0023> +<24> <00A3> +<27> <2019> +<3C> <00A1> +<3D> <003D> +<3E> <00BF> +<5C> <201C> +<5F> <02D9> +<60> <2018> +<7D> <02DD> +<7E> <007E> +<7F> <00A8> +endbfchar +endcmap +CMapName currentdict /CMap defineresource pop +end +end +%%EndResource +%%EOF + }\endgroup + \expandafter\edef\csname cmapOT1IT\endcsname#1{% + \pdffontattr#1{/ToUnicode \the\pdflastobj\space 0 R}% + }% +% +% \cmapOT1TT + \begingroup + \catcode`\^^M=\active \def^^M{^^J}% Output line endings as the ^^J char. + \catcode`\%=12 \immediate\pdfobj stream {%!PS-Adobe-3.0 Resource-CMap +%%DocumentNeededResources: ProcSet (CIDInit) +%%IncludeResource: ProcSet (CIDInit) +%%BeginResource: CMap (TeX-OT1TT-0) +%%Title: (TeX-OT1TT-0 TeX OT1TT 0) +%%Version: 1.000 +%%EndComments +/CIDInit /ProcSet findresource begin +12 dict begin +begincmap +/CIDSystemInfo +<< /Registry (TeX) +/Ordering (OT1TT) +/Supplement 0 +>> def +/CMapName /TeX-OT1TT-0 def +/CMapType 2 def +1 begincodespacerange +<00> <7F> +endcodespacerange +5 beginbfrange +<00> <01> <0393> +<09> <0A> <03A8> +<21> <26> <0021> +<28> <5F> <0028> +<61> <7E> <0061> +endbfrange +32 beginbfchar +<02> <0398> +<03> <039B> +<04> <039E> +<05> <03A0> +<06> <03A3> +<07> <03D2> +<08> <03A6> +<0B> <2191> +<0C> <2193> +<0D> <0027> +<0E> <00A1> +<0F> <00BF> +<10> <0131> +<11> <0237> +<12> <0060> +<13> <00B4> +<14> <02C7> +<15> <02D8> +<16> <00AF> +<17> <02DA> +<18> <00B8> +<19> <00DF> +<1A> <00E6> +<1B> <0153> +<1C> <00F8> +<1D> <00C6> +<1E> <0152> +<1F> <00D8> +<20> <2423> +<27> <2019> +<60> <2018> +<7F> <00A8> +endbfchar +endcmap +CMapName currentdict /CMap defineresource pop +end +end +%%EndResource +%%EOF + }\endgroup + \expandafter\edef\csname cmapOT1TT\endcsname#1{% + \pdffontattr#1{/ToUnicode \the\pdflastobj\space 0 R}% + }% +\fi\fi + + +% Set the font macro #1 to the font named \fontprefix#2. +% #3 is the font's design size, #4 is a scale factor, #5 is the CMap +% encoding (only OT1, OT1IT and OT1TT are allowed, or empty to omit). +% Example: +% #1 = \textrm +% #2 = \rmshape +% #3 = 10 +% #4 = \mainmagstep +% #5 = OT1 +% +\def\setfont#1#2#3#4#5{% + \font#1=\fontprefix#2#3 scaled #4 + \csname cmap#5\endcsname#1% +} +% This is what gets called when #5 of \setfont is empty. +\let\cmap\gobble +% +% (end of cmaps) + +% Use cm as the default font prefix. +% To specify the font prefix, you must define \fontprefix +% before you read in texinfo.tex. +\ifx\fontprefix\thisisundefined +\def\fontprefix{cm} +\fi +% Support font families that don't use the same naming scheme as CM. +\def\rmshape{r} +\def\rmbshape{bx} % where the normal face is bold +\def\bfshape{b} +\def\bxshape{bx} +\def\ttshape{tt} +\def\ttbshape{tt} +\def\ttslshape{sltt} +\def\itshape{ti} +\def\itbshape{bxti} +\def\slshape{sl} +\def\slbshape{bxsl} +\def\sfshape{ss} +\def\sfbshape{ss} +\def\scshape{csc} +\def\scbshape{csc} + +% Definitions for a main text size of 11pt. (The default in Texinfo.) +% +\def\definetextfontsizexi{% +% Text fonts (11.2pt, magstep1). +\def\textnominalsize{11pt} +\edef\mainmagstep{\magstephalf} +\setfont\textrm\rmshape{10}{\mainmagstep}{OT1} +\setfont\texttt\ttshape{10}{\mainmagstep}{OT1TT} +\setfont\textbf\bfshape{10}{\mainmagstep}{OT1} +\setfont\textit\itshape{10}{\mainmagstep}{OT1IT} +\setfont\textsl\slshape{10}{\mainmagstep}{OT1} +\setfont\textsf\sfshape{10}{\mainmagstep}{OT1} +\setfont\textsc\scshape{10}{\mainmagstep}{OT1} +\setfont\textttsl\ttslshape{10}{\mainmagstep}{OT1TT} +\font\texti=cmmi10 scaled \mainmagstep +\font\textsy=cmsy10 scaled \mainmagstep +\def\textecsize{1095} + +% A few fonts for @defun names and args. +\setfont\defbf\bfshape{10}{\magstep1}{OT1} +\setfont\deftt\ttshape{10}{\magstep1}{OT1TT} +\setfont\defttsl\ttslshape{10}{\magstep1}{OT1TT} +\def\df{\let\tentt=\deftt \let\tenbf = \defbf \let\tenttsl=\defttsl \bf} + +% Fonts for indices, footnotes, small examples (9pt). +\def\smallnominalsize{9pt} +\setfont\smallrm\rmshape{9}{1000}{OT1} +\setfont\smalltt\ttshape{9}{1000}{OT1TT} +\setfont\smallbf\bfshape{10}{900}{OT1} +\setfont\smallit\itshape{9}{1000}{OT1IT} +\setfont\smallsl\slshape{9}{1000}{OT1} +\setfont\smallsf\sfshape{9}{1000}{OT1} +\setfont\smallsc\scshape{10}{900}{OT1} +\setfont\smallttsl\ttslshape{10}{900}{OT1TT} +\font\smalli=cmmi9 +\font\smallsy=cmsy9 +\def\smallecsize{0900} + +% Fonts for small examples (8pt). +\def\smallernominalsize{8pt} +\setfont\smallerrm\rmshape{8}{1000}{OT1} +\setfont\smallertt\ttshape{8}{1000}{OT1TT} +\setfont\smallerbf\bfshape{10}{800}{OT1} +\setfont\smallerit\itshape{8}{1000}{OT1IT} +\setfont\smallersl\slshape{8}{1000}{OT1} +\setfont\smallersf\sfshape{8}{1000}{OT1} +\setfont\smallersc\scshape{10}{800}{OT1} +\setfont\smallerttsl\ttslshape{10}{800}{OT1TT} +\font\smalleri=cmmi8 +\font\smallersy=cmsy8 +\def\smallerecsize{0800} + +% Fonts for title page (20.4pt): +\def\titlenominalsize{20pt} +\setfont\titlerm\rmbshape{12}{\magstep3}{OT1} +\setfont\titleit\itbshape{10}{\magstep4}{OT1IT} +\setfont\titlesl\slbshape{10}{\magstep4}{OT1} +\setfont\titlett\ttbshape{12}{\magstep3}{OT1TT} +\setfont\titlettsl\ttslshape{10}{\magstep4}{OT1TT} +\setfont\titlesf\sfbshape{17}{\magstep1}{OT1} +\let\titlebf=\titlerm +\setfont\titlesc\scbshape{10}{\magstep4}{OT1} +\font\titlei=cmmi12 scaled \magstep3 +\font\titlesy=cmsy10 scaled \magstep4 +\def\titleecsize{2074} + +% Chapter (and unnumbered) fonts (17.28pt). +\def\chapnominalsize{17pt} +\setfont\chaprm\rmbshape{12}{\magstep2}{OT1} +\setfont\chapit\itbshape{10}{\magstep3}{OT1IT} +\setfont\chapsl\slbshape{10}{\magstep3}{OT1} +\setfont\chaptt\ttbshape{12}{\magstep2}{OT1TT} +\setfont\chapttsl\ttslshape{10}{\magstep3}{OT1TT} +\setfont\chapsf\sfbshape{17}{1000}{OT1} +\let\chapbf=\chaprm +\setfont\chapsc\scbshape{10}{\magstep3}{OT1} +\font\chapi=cmmi12 scaled \magstep2 +\font\chapsy=cmsy10 scaled \magstep3 +\def\chapecsize{1728} + +% Section fonts (14.4pt). +\def\secnominalsize{14pt} +\setfont\secrm\rmbshape{12}{\magstep1}{OT1} +\setfont\secit\itbshape{10}{\magstep2}{OT1IT} +\setfont\secsl\slbshape{10}{\magstep2}{OT1} +\setfont\sectt\ttbshape{12}{\magstep1}{OT1TT} +\setfont\secttsl\ttslshape{10}{\magstep2}{OT1TT} +\setfont\secsf\sfbshape{12}{\magstep1}{OT1} +\let\secbf\secrm +\setfont\secsc\scbshape{10}{\magstep2}{OT1} +\font\seci=cmmi12 scaled \magstep1 +\font\secsy=cmsy10 scaled \magstep2 +\def\sececsize{1440} + +% Subsection fonts (13.15pt). +\def\ssecnominalsize{13pt} +\setfont\ssecrm\rmbshape{12}{\magstephalf}{OT1} +\setfont\ssecit\itbshape{10}{1315}{OT1IT} +\setfont\ssecsl\slbshape{10}{1315}{OT1} +\setfont\ssectt\ttbshape{12}{\magstephalf}{OT1TT} +\setfont\ssecttsl\ttslshape{10}{1315}{OT1TT} +\setfont\ssecsf\sfbshape{12}{\magstephalf}{OT1} +\let\ssecbf\ssecrm +\setfont\ssecsc\scbshape{10}{1315}{OT1} +\font\sseci=cmmi12 scaled \magstephalf +\font\ssecsy=cmsy10 scaled 1315 +\def\ssececsize{1200} + +% Reduced fonts for @acro in text (10pt). +\def\reducednominalsize{10pt} +\setfont\reducedrm\rmshape{10}{1000}{OT1} +\setfont\reducedtt\ttshape{10}{1000}{OT1TT} +\setfont\reducedbf\bfshape{10}{1000}{OT1} +\setfont\reducedit\itshape{10}{1000}{OT1IT} +\setfont\reducedsl\slshape{10}{1000}{OT1} +\setfont\reducedsf\sfshape{10}{1000}{OT1} +\setfont\reducedsc\scshape{10}{1000}{OT1} +\setfont\reducedttsl\ttslshape{10}{1000}{OT1TT} +\font\reducedi=cmmi10 +\font\reducedsy=cmsy10 +\def\reducedecsize{1000} + +\textleading = 13.2pt % line spacing for 11pt CM +\textfonts % reset the current fonts +\rm +} % end of 11pt text font size definitions, \definetextfontsizexi + + +% Definitions to make the main text be 10pt Computer Modern, with +% section, chapter, etc., sizes following suit. This is for the GNU +% Press printing of the Emacs 22 manual. Maybe other manuals in the +% future. Used with @smallbook, which sets the leading to 12pt. +% +\def\definetextfontsizex{% +% Text fonts (10pt). +\def\textnominalsize{10pt} +\edef\mainmagstep{1000} +\setfont\textrm\rmshape{10}{\mainmagstep}{OT1} +\setfont\texttt\ttshape{10}{\mainmagstep}{OT1TT} +\setfont\textbf\bfshape{10}{\mainmagstep}{OT1} +\setfont\textit\itshape{10}{\mainmagstep}{OT1IT} +\setfont\textsl\slshape{10}{\mainmagstep}{OT1} +\setfont\textsf\sfshape{10}{\mainmagstep}{OT1} +\setfont\textsc\scshape{10}{\mainmagstep}{OT1} +\setfont\textttsl\ttslshape{10}{\mainmagstep}{OT1TT} +\font\texti=cmmi10 scaled \mainmagstep +\font\textsy=cmsy10 scaled \mainmagstep +\def\textecsize{1000} + +% A few fonts for @defun names and args. +\setfont\defbf\bfshape{10}{\magstephalf}{OT1} +\setfont\deftt\ttshape{10}{\magstephalf}{OT1TT} +\setfont\defttsl\ttslshape{10}{\magstephalf}{OT1TT} +\def\df{\let\tentt=\deftt \let\tenbf = \defbf \let\tenttsl=\defttsl \bf} + +% Fonts for indices, footnotes, small examples (9pt). +\def\smallnominalsize{9pt} +\setfont\smallrm\rmshape{9}{1000}{OT1} +\setfont\smalltt\ttshape{9}{1000}{OT1TT} +\setfont\smallbf\bfshape{10}{900}{OT1} +\setfont\smallit\itshape{9}{1000}{OT1IT} +\setfont\smallsl\slshape{9}{1000}{OT1} +\setfont\smallsf\sfshape{9}{1000}{OT1} +\setfont\smallsc\scshape{10}{900}{OT1} +\setfont\smallttsl\ttslshape{10}{900}{OT1TT} +\font\smalli=cmmi9 +\font\smallsy=cmsy9 +\def\smallecsize{0900} + +% Fonts for small examples (8pt). +\def\smallernominalsize{8pt} +\setfont\smallerrm\rmshape{8}{1000}{OT1} +\setfont\smallertt\ttshape{8}{1000}{OT1TT} +\setfont\smallerbf\bfshape{10}{800}{OT1} +\setfont\smallerit\itshape{8}{1000}{OT1IT} +\setfont\smallersl\slshape{8}{1000}{OT1} +\setfont\smallersf\sfshape{8}{1000}{OT1} +\setfont\smallersc\scshape{10}{800}{OT1} +\setfont\smallerttsl\ttslshape{10}{800}{OT1TT} +\font\smalleri=cmmi8 +\font\smallersy=cmsy8 +\def\smallerecsize{0800} + +% Fonts for title page (20.4pt): +\def\titlenominalsize{20pt} +\setfont\titlerm\rmbshape{12}{\magstep3}{OT1} +\setfont\titleit\itbshape{10}{\magstep4}{OT1IT} +\setfont\titlesl\slbshape{10}{\magstep4}{OT1} +\setfont\titlett\ttbshape{12}{\magstep3}{OT1TT} +\setfont\titlettsl\ttslshape{10}{\magstep4}{OT1TT} +\setfont\titlesf\sfbshape{17}{\magstep1}{OT1} +\let\titlebf=\titlerm +\setfont\titlesc\scbshape{10}{\magstep4}{OT1} +\font\titlei=cmmi12 scaled \magstep3 +\font\titlesy=cmsy10 scaled \magstep4 +\def\titleecsize{2074} + +% Chapter fonts (14.4pt). +\def\chapnominalsize{14pt} +\setfont\chaprm\rmbshape{12}{\magstep1}{OT1} +\setfont\chapit\itbshape{10}{\magstep2}{OT1IT} +\setfont\chapsl\slbshape{10}{\magstep2}{OT1} +\setfont\chaptt\ttbshape{12}{\magstep1}{OT1TT} +\setfont\chapttsl\ttslshape{10}{\magstep2}{OT1TT} +\setfont\chapsf\sfbshape{12}{\magstep1}{OT1} +\let\chapbf\chaprm +\setfont\chapsc\scbshape{10}{\magstep2}{OT1} +\font\chapi=cmmi12 scaled \magstep1 +\font\chapsy=cmsy10 scaled \magstep2 +\def\chapecsize{1440} + +% Section fonts (12pt). +\def\secnominalsize{12pt} +\setfont\secrm\rmbshape{12}{1000}{OT1} +\setfont\secit\itbshape{10}{\magstep1}{OT1IT} +\setfont\secsl\slbshape{10}{\magstep1}{OT1} +\setfont\sectt\ttbshape{12}{1000}{OT1TT} +\setfont\secttsl\ttslshape{10}{\magstep1}{OT1TT} +\setfont\secsf\sfbshape{12}{1000}{OT1} +\let\secbf\secrm +\setfont\secsc\scbshape{10}{\magstep1}{OT1} +\font\seci=cmmi12 +\font\secsy=cmsy10 scaled \magstep1 +\def\sececsize{1200} + +% Subsection fonts (10pt). +\def\ssecnominalsize{10pt} +\setfont\ssecrm\rmbshape{10}{1000}{OT1} +\setfont\ssecit\itbshape{10}{1000}{OT1IT} +\setfont\ssecsl\slbshape{10}{1000}{OT1} +\setfont\ssectt\ttbshape{10}{1000}{OT1TT} +\setfont\ssecttsl\ttslshape{10}{1000}{OT1TT} +\setfont\ssecsf\sfbshape{10}{1000}{OT1} +\let\ssecbf\ssecrm +\setfont\ssecsc\scbshape{10}{1000}{OT1} +\font\sseci=cmmi10 +\font\ssecsy=cmsy10 +\def\ssececsize{1000} + +% Reduced fonts for @acro in text (9pt). +\def\reducednominalsize{9pt} +\setfont\reducedrm\rmshape{9}{1000}{OT1} +\setfont\reducedtt\ttshape{9}{1000}{OT1TT} +\setfont\reducedbf\bfshape{10}{900}{OT1} +\setfont\reducedit\itshape{9}{1000}{OT1IT} +\setfont\reducedsl\slshape{9}{1000}{OT1} +\setfont\reducedsf\sfshape{9}{1000}{OT1} +\setfont\reducedsc\scshape{10}{900}{OT1} +\setfont\reducedttsl\ttslshape{10}{900}{OT1TT} +\font\reducedi=cmmi9 +\font\reducedsy=cmsy9 +\def\reducedecsize{0900} + +\divide\parskip by 2 % reduce space between paragraphs +\textleading = 12pt % line spacing for 10pt CM +\textfonts % reset the current fonts +\rm +} % end of 10pt text font size definitions, \definetextfontsizex + + +% We provide the user-level command +% @fonttextsize 10 +% (or 11) to redefine the text font size. pt is assumed. +% +\def\xiword{11} +\def\xword{10} +\def\xwordpt{10pt} +% +\parseargdef\fonttextsize{% + \def\textsizearg{#1}% + %\wlog{doing @fonttextsize \textsizearg}% + % + % Set \globaldefs so that documents can use this inside @tex, since + % makeinfo 4.8 does not support it, but we need it nonetheless. + % + \begingroup \globaldefs=1 + \ifx\textsizearg\xword \definetextfontsizex + \else \ifx\textsizearg\xiword \definetextfontsizexi + \else + \errhelp=\EMsimple + \errmessage{@fonttextsize only supports `10' or `11', not `\textsizearg'} + \fi\fi + \endgroup +} + + +% In order for the font changes to affect most math symbols and letters, +% we have to define the \textfont of the standard families. Since +% texinfo doesn't allow for producing subscripts and superscripts except +% in the main text, we don't bother to reset \scriptfont and +% \scriptscriptfont (which would also require loading a lot more fonts). +% +\def\resetmathfonts{% + \textfont0=\tenrm \textfont1=\teni \textfont2=\tensy + \textfont\itfam=\tenit \textfont\slfam=\tensl \textfont\bffam=\tenbf + \textfont\ttfam=\tentt \textfont\sffam=\tensf +} + +% The font-changing commands redefine the meanings of \tenSTYLE, instead +% of just \STYLE. We do this because \STYLE needs to also set the +% current \fam for math mode. Our \STYLE (e.g., \rm) commands hardwire +% \tenSTYLE to set the current font. +% +% Each font-changing command also sets the names \lsize (one size lower) +% and \lllsize (three sizes lower). These relative commands are used in +% the LaTeX logo and acronyms. +% +% This all needs generalizing, badly. +% +\def\textfonts{% + \let\tenrm=\textrm \let\tenit=\textit \let\tensl=\textsl + \let\tenbf=\textbf \let\tentt=\texttt \let\smallcaps=\textsc + \let\tensf=\textsf \let\teni=\texti \let\tensy=\textsy + \let\tenttsl=\textttsl + \def\curfontsize{text}% + \def\lsize{reduced}\def\lllsize{smaller}% + \resetmathfonts \setleading{\textleading}} +\def\titlefonts{% + \let\tenrm=\titlerm \let\tenit=\titleit \let\tensl=\titlesl + \let\tenbf=\titlebf \let\tentt=\titlett \let\smallcaps=\titlesc + \let\tensf=\titlesf \let\teni=\titlei \let\tensy=\titlesy + \let\tenttsl=\titlettsl + \def\curfontsize{title}% + \def\lsize{chap}\def\lllsize{subsec}% + \resetmathfonts \setleading{27pt}} +\def\titlefont#1{{\titlefonts\rmisbold #1}} +\def\chapfonts{% + \let\tenrm=\chaprm \let\tenit=\chapit \let\tensl=\chapsl + \let\tenbf=\chapbf \let\tentt=\chaptt \let\smallcaps=\chapsc + \let\tensf=\chapsf \let\teni=\chapi \let\tensy=\chapsy + \let\tenttsl=\chapttsl + \def\curfontsize{chap}% + \def\lsize{sec}\def\lllsize{text}% + \resetmathfonts \setleading{19pt}} +\def\secfonts{% + \let\tenrm=\secrm \let\tenit=\secit \let\tensl=\secsl + \let\tenbf=\secbf \let\tentt=\sectt \let\smallcaps=\secsc + \let\tensf=\secsf \let\teni=\seci \let\tensy=\secsy + \let\tenttsl=\secttsl + \def\curfontsize{sec}% + \def\lsize{subsec}\def\lllsize{reduced}% + \resetmathfonts \setleading{16pt}} +\def\subsecfonts{% + \let\tenrm=\ssecrm \let\tenit=\ssecit \let\tensl=\ssecsl + \let\tenbf=\ssecbf \let\tentt=\ssectt \let\smallcaps=\ssecsc + \let\tensf=\ssecsf \let\teni=\sseci \let\tensy=\ssecsy + \let\tenttsl=\ssecttsl + \def\curfontsize{ssec}% + \def\lsize{text}\def\lllsize{small}% + \resetmathfonts \setleading{15pt}} +\let\subsubsecfonts = \subsecfonts +\def\reducedfonts{% + \let\tenrm=\reducedrm \let\tenit=\reducedit \let\tensl=\reducedsl + \let\tenbf=\reducedbf \let\tentt=\reducedtt \let\reducedcaps=\reducedsc + \let\tensf=\reducedsf \let\teni=\reducedi \let\tensy=\reducedsy + \let\tenttsl=\reducedttsl + \def\curfontsize{reduced}% + \def\lsize{small}\def\lllsize{smaller}% + \resetmathfonts \setleading{10.5pt}} +\def\smallfonts{% + \let\tenrm=\smallrm \let\tenit=\smallit \let\tensl=\smallsl + \let\tenbf=\smallbf \let\tentt=\smalltt \let\smallcaps=\smallsc + \let\tensf=\smallsf \let\teni=\smalli \let\tensy=\smallsy + \let\tenttsl=\smallttsl + \def\curfontsize{small}% + \def\lsize{smaller}\def\lllsize{smaller}% + \resetmathfonts \setleading{10.5pt}} +\def\smallerfonts{% + \let\tenrm=\smallerrm \let\tenit=\smallerit \let\tensl=\smallersl + \let\tenbf=\smallerbf \let\tentt=\smallertt \let\smallcaps=\smallersc + \let\tensf=\smallersf \let\teni=\smalleri \let\tensy=\smallersy + \let\tenttsl=\smallerttsl + \def\curfontsize{smaller}% + \def\lsize{smaller}\def\lllsize{smaller}% + \resetmathfonts \setleading{9.5pt}} + +% Fonts for short table of contents. +\setfont\shortcontrm\rmshape{12}{1000}{OT1} +\setfont\shortcontbf\bfshape{10}{\magstep1}{OT1} % no cmb12 +\setfont\shortcontsl\slshape{12}{1000}{OT1} +\setfont\shortconttt\ttshape{12}{1000}{OT1TT} + +% Define these just so they can be easily changed for other fonts. +\def\angleleft{$\langle$} +\def\angleright{$\rangle$} + +% Set the fonts to use with the @small... environments. +\let\smallexamplefonts = \smallfonts + +% About \smallexamplefonts. If we use \smallfonts (9pt), @smallexample +% can fit this many characters: +% 8.5x11=86 smallbook=72 a4=90 a5=69 +% If we use \scriptfonts (8pt), then we can fit this many characters: +% 8.5x11=90+ smallbook=80 a4=90+ a5=77 +% For me, subjectively, the few extra characters that fit aren't worth +% the additional smallness of 8pt. So I'm making the default 9pt. +% +% By the way, for comparison, here's what fits with @example (10pt): +% 8.5x11=71 smallbook=60 a4=75 a5=58 +% --karl, 24jan03. + +% Set up the default fonts, so we can use them for creating boxes. +% +\definetextfontsizexi + + +\message{markup,} + +% Check if we are currently using a typewriter font. Since all the +% Computer Modern typewriter fonts have zero interword stretch (and +% shrink), and it is reasonable to expect all typewriter fonts to have +% this property, we can check that font parameter. +% +\def\ifmonospace{\ifdim\fontdimen3\font=0pt } + +% Markup style infrastructure. \defmarkupstylesetup\INITMACRO will +% define and register \INITMACRO to be called on markup style changes. +% \INITMACRO can check \currentmarkupstyle for the innermost +% style and the set of \ifmarkupSTYLE switches for all styles +% currently in effect. +\newif\ifmarkupvar +\newif\ifmarkupsamp +\newif\ifmarkupkey +%\newif\ifmarkupfile % @file == @samp. +%\newif\ifmarkupoption % @option == @samp. +\newif\ifmarkupcode +\newif\ifmarkupkbd +%\newif\ifmarkupenv % @env == @code. +%\newif\ifmarkupcommand % @command == @code. +\newif\ifmarkuptex % @tex (and part of @math, for now). +\newif\ifmarkupexample +\newif\ifmarkupverb +\newif\ifmarkupverbatim + +\let\currentmarkupstyle\empty + +\def\setupmarkupstyle#1{% + \csname markup#1true\endcsname + \def\currentmarkupstyle{#1}% + \markupstylesetup +} + +\let\markupstylesetup\empty + +\def\defmarkupstylesetup#1{% + \expandafter\def\expandafter\markupstylesetup + \expandafter{\markupstylesetup #1}% + \def#1% +} + +% Markup style setup for left and right quotes. +\defmarkupstylesetup\markupsetuplq{% + \expandafter\let\expandafter \temp + \csname markupsetuplq\currentmarkupstyle\endcsname + \ifx\temp\relax \markupsetuplqdefault \else \temp \fi +} + +\defmarkupstylesetup\markupsetuprq{% + \expandafter\let\expandafter \temp + \csname markupsetuprq\currentmarkupstyle\endcsname + \ifx\temp\relax \markupsetuprqdefault \else \temp \fi +} + +{ +\catcode`\'=\active +\catcode`\`=\active + +\gdef\markupsetuplqdefault{\let`\lq} +\gdef\markupsetuprqdefault{\let'\rq} + +\gdef\markupsetcodequoteleft{\let`\codequoteleft} +\gdef\markupsetcodequoteright{\let'\codequoteright} +} + +\let\markupsetuplqcode \markupsetcodequoteleft +\let\markupsetuprqcode \markupsetcodequoteright +% +\let\markupsetuplqexample \markupsetcodequoteleft +\let\markupsetuprqexample \markupsetcodequoteright +% +\let\markupsetuplqkbd \markupsetcodequoteleft +\let\markupsetuprqkbd \markupsetcodequoteright +% +\let\markupsetuplqsamp \markupsetcodequoteleft +\let\markupsetuprqsamp \markupsetcodequoteright +% +\let\markupsetuplqverb \markupsetcodequoteleft +\let\markupsetuprqverb \markupsetcodequoteright +% +\let\markupsetuplqverbatim \markupsetcodequoteleft +\let\markupsetuprqverbatim \markupsetcodequoteright + +% Allow an option to not use regular directed right quote/apostrophe +% (char 0x27), but instead the undirected quote from cmtt (char 0x0d). +% The undirected quote is ugly, so don't make it the default, but it +% works for pasting with more pdf viewers (at least evince), the +% lilypond developers report. xpdf does work with the regular 0x27. +% +\def\codequoteright{% + \expandafter\ifx\csname SETtxicodequoteundirected\endcsname\relax + \expandafter\ifx\csname SETcodequoteundirected\endcsname\relax + '% + \else \char'15 \fi + \else \char'15 \fi +} +% +% and a similar option for the left quote char vs. a grave accent. +% Modern fonts display ASCII 0x60 as a grave accent, so some people like +% the code environments to do likewise. +% +\def\codequoteleft{% + \expandafter\ifx\csname SETtxicodequotebacktick\endcsname\relax + \expandafter\ifx\csname SETcodequotebacktick\endcsname\relax + % [Knuth] pp. 380,381,391 + % \relax disables Spanish ligatures ?` and !` of \tt font. + \relax`% + \else \char'22 \fi + \else \char'22 \fi +} + +% Commands to set the quote options. +% +\parseargdef\codequoteundirected{% + \def\temp{#1}% + \ifx\temp\onword + \expandafter\let\csname SETtxicodequoteundirected\endcsname + = t% + \else\ifx\temp\offword + \expandafter\let\csname SETtxicodequoteundirected\endcsname + = \relax + \else + \errhelp = \EMsimple + \errmessage{Unknown @codequoteundirected value `\temp', must be on|off}% + \fi\fi +} +% +\parseargdef\codequotebacktick{% + \def\temp{#1}% + \ifx\temp\onword + \expandafter\let\csname SETtxicodequotebacktick\endcsname + = t% + \else\ifx\temp\offword + \expandafter\let\csname SETtxicodequotebacktick\endcsname + = \relax + \else + \errhelp = \EMsimple + \errmessage{Unknown @codequotebacktick value `\temp', must be on|off}% + \fi\fi +} + +% [Knuth] pp. 380,381,391, disable Spanish ligatures ?` and !` of \tt font. +\def\noligaturesquoteleft{\relax\lq} + +% Count depth in font-changes, for error checks +\newcount\fontdepth \fontdepth=0 + +% Font commands. + +% #1 is the font command (\sl or \it), #2 is the text to slant. +% If we are in a monospaced environment, however, 1) always use \ttsl, +% and 2) do not add an italic correction. +\def\dosmartslant#1#2{% + \ifusingtt + {{\ttsl #2}\let\next=\relax}% + {\def\next{{#1#2}\futurelet\next\smartitaliccorrection}}% + \next +} +\def\smartslanted{\dosmartslant\sl} +\def\smartitalic{\dosmartslant\it} + +% Output an italic correction unless \next (presumed to be the following +% character) is such as not to need one. +\def\smartitaliccorrection{% + \ifx\next,% + \else\ifx\next-% + \else\ifx\next.% + \else\ptexslash + \fi\fi\fi + \aftersmartic +} + +% Unconditional use \ttsl, and no ic. @var is set to this for defuns. +\def\ttslanted#1{{\ttsl #1}} + +% @cite is like \smartslanted except unconditionally use \sl. We never want +% ttsl for book titles, do we? +\def\cite#1{{\sl #1}\futurelet\next\smartitaliccorrection} + +\def\aftersmartic{} +\def\var#1{% + \let\saveaftersmartic = \aftersmartic + \def\aftersmartic{\null\let\aftersmartic=\saveaftersmartic}% + \smartslanted{#1}% +} + +\let\i=\smartitalic +\let\slanted=\smartslanted +\let\dfn=\smartslanted +\let\emph=\smartitalic + +% Explicit font changes: @r, @sc, undocumented @ii. +\def\r#1{{\rm #1}} % roman font +\def\sc#1{{\smallcaps#1}} % smallcaps font +\def\ii#1{{\it #1}} % italic font + +% @b, explicit bold. Also @strong. +\def\b#1{{\bf #1}} +\let\strong=\b + +% @sansserif, explicit sans. +\def\sansserif#1{{\sf #1}} + +% We can't just use \exhyphenpenalty, because that only has effect at +% the end of a paragraph. Restore normal hyphenation at the end of the +% group within which \nohyphenation is presumably called. +% +\def\nohyphenation{\hyphenchar\font = -1 \aftergroup\restorehyphenation} +\def\restorehyphenation{\hyphenchar\font = `- } + +% Set sfcode to normal for the chars that usually have another value. +% Can't use plain's \frenchspacing because it uses the `\x notation, and +% sometimes \x has an active definition that messes things up. +% +\catcode`@=11 + \def\plainfrenchspacing{% + \sfcode\dotChar =\@m \sfcode\questChar=\@m \sfcode\exclamChar=\@m + \sfcode\colonChar=\@m \sfcode\semiChar =\@m \sfcode\commaChar =\@m + \def\endofsentencespacefactor{1000}% for @. and friends + } + \def\plainnonfrenchspacing{% + \sfcode`\.3000\sfcode`\?3000\sfcode`\!3000 + \sfcode`\:2000\sfcode`\;1500\sfcode`\,1250 + \def\endofsentencespacefactor{3000}% for @. and friends + } +\catcode`@=\other +\def\endofsentencespacefactor{3000}% default + +% @t, explicit typewriter. +\def\t#1{% + {\tt \rawbackslash \plainfrenchspacing #1}% + \null +} + +% @samp. +\def\samp#1{{\setupmarkupstyle{samp}\lq\tclose{#1}\rq\null}} + +% @indicateurl is \samp, that is, with quotes. +\let\indicateurl=\samp + +% @code (and similar) prints in typewriter, but with spaces the same +% size as normal in the surrounding text, without hyphenation, etc. +% This is a subroutine for that. +\def\tclose#1{% + {% + % Change normal interword space to be same as for the current font. + \spaceskip = \fontdimen2\font + % + % Switch to typewriter. + \tt + % + % But `\ ' produces the large typewriter interword space. + \def\ {{\spaceskip = 0pt{} }}% + % + % Turn off hyphenation. + \nohyphenation + % + \rawbackslash + \plainfrenchspacing + #1% + }% + \null % reset spacefactor to 1000 +} + +% We *must* turn on hyphenation at `-' and `_' in @code. +% Otherwise, it is too hard to avoid overfull hboxes +% in the Emacs manual, the Library manual, etc. +% +% Unfortunately, TeX uses one parameter (\hyphenchar) to control +% both hyphenation at - and hyphenation within words. +% We must therefore turn them both off (\tclose does that) +% and arrange explicitly to hyphenate at a dash. +% -- rms. +{ + \catcode`\-=\active \catcode`\_=\active + \catcode`\'=\active \catcode`\`=\active + \global\let'=\rq \global\let`=\lq % default definitions + % + \global\def\code{\begingroup + \setupmarkupstyle{code}% + % The following should really be moved into \setupmarkupstyle handlers. + \catcode\dashChar=\active \catcode\underChar=\active + \ifallowcodebreaks + \let-\codedash + \let_\codeunder + \else + \let-\normaldash + \let_\realunder + \fi + \codex + } +} + +\def\codex #1{\tclose{#1}\endgroup} + +\def\normaldash{-} +\def\codedash{-\discretionary{}{}{}} +\def\codeunder{% + % this is all so @math{@code{var_name}+1} can work. In math mode, _ + % is "active" (mathcode"8000) and \normalunderscore (or \char95, etc.) + % will therefore expand the active definition of _, which is us + % (inside @code that is), therefore an endless loop. + \ifusingtt{\ifmmode + \mathchar"075F % class 0=ordinary, family 7=ttfam, pos 0x5F=_. + \else\normalunderscore \fi + \discretionary{}{}{}}% + {\_}% +} + +% An additional complication: the above will allow breaks after, e.g., +% each of the four underscores in __typeof__. This is bad. +% @allowcodebreaks provides a document-level way to turn breaking at - +% and _ on and off. +% +\newif\ifallowcodebreaks \allowcodebreakstrue + +\def\keywordtrue{true} +\def\keywordfalse{false} + +\parseargdef\allowcodebreaks{% + \def\txiarg{#1}% + \ifx\txiarg\keywordtrue + \allowcodebreakstrue + \else\ifx\txiarg\keywordfalse + \allowcodebreaksfalse + \else + \errhelp = \EMsimple + \errmessage{Unknown @allowcodebreaks option `\txiarg', must be true|false}% + \fi\fi +} + +% For @command, @env, @file, @option quotes seem unnecessary, +% so use \code rather than \samp. +\let\command=\code +\let\env=\code +\let\file=\code +\let\option=\code + +% @uref (abbreviation for `urlref') takes an optional (comma-separated) +% second argument specifying the text to display and an optional third +% arg as text to display instead of (rather than in addition to) the url +% itself. First (mandatory) arg is the url. +% (This \urefnobreak definition isn't used now, leaving it for a while +% for comparison.) +\def\urefnobreak#1{\dourefnobreak #1,,,\finish} +\def\dourefnobreak#1,#2,#3,#4\finish{\begingroup + \unsepspaces + \pdfurl{#1}% + \setbox0 = \hbox{\ignorespaces #3}% + \ifdim\wd0 > 0pt + \unhbox0 % third arg given, show only that + \else + \setbox0 = \hbox{\ignorespaces #2}% + \ifdim\wd0 > 0pt + \ifpdf + \unhbox0 % PDF: 2nd arg given, show only it + \else + \unhbox0\ (\code{#1})% DVI: 2nd arg given, show both it and url + \fi + \else + \code{#1}% only url given, so show it + \fi + \fi + \endlink +\endgroup} + +% This \urefbreak definition is the active one. +\def\urefbreak{\begingroup \urefcatcodes \dourefbreak} +\let\uref=\urefbreak +\def\dourefbreak#1{\urefbreakfinish #1,,,\finish} +\def\urefbreakfinish#1,#2,#3,#4\finish{% doesn't work in @example + \unsepspaces + \pdfurl{#1}% + \setbox0 = \hbox{\ignorespaces #3}% + \ifdim\wd0 > 0pt + \unhbox0 % third arg given, show only that + \else + \setbox0 = \hbox{\ignorespaces #2}% + \ifdim\wd0 > 0pt + \ifpdf + \unhbox0 % PDF: 2nd arg given, show only it + \else + \unhbox0\ (\urefcode{#1})% DVI: 2nd arg given, show both it and url + \fi + \else + \urefcode{#1}% only url given, so show it + \fi + \fi + \endlink +\endgroup} + +% Allow line breaks around only a few characters (only). +\def\urefcatcodes{% + \catcode\ampChar=\active \catcode\dotChar=\active + \catcode\hashChar=\active \catcode\questChar=\active + \catcode\slashChar=\active +} +{ + \urefcatcodes + % + \global\def\urefcode{\begingroup + \setupmarkupstyle{code}% + \urefcatcodes + \let&\urefcodeamp + \let.\urefcodedot + \let#\urefcodehash + \let?\urefcodequest + \let/\urefcodeslash + \codex + } + % + % By default, they are just regular characters. + \global\def&{\normalamp} + \global\def.{\normaldot} + \global\def#{\normalhash} + \global\def?{\normalquest} + \global\def/{\normalslash} +} + +% we put a little stretch before and after the breakable chars, to help +% line breaking of long url's. The unequal skips make look better in +% cmtt at least, especially for dots. +\def\urefprestretch{\urefprebreak \hskip0pt plus.13em } +\def\urefpoststretch{\urefpostbreak \hskip0pt plus.1em } +% +\def\urefcodeamp{\urefprestretch \&\urefpoststretch} +\def\urefcodedot{\urefprestretch .\urefpoststretch} +\def\urefcodehash{\urefprestretch \#\urefpoststretch} +\def\urefcodequest{\urefprestretch ?\urefpoststretch} +\def\urefcodeslash{\futurelet\next\urefcodeslashfinish} +{ + \catcode`\/=\active + \global\def\urefcodeslashfinish{% + \urefprestretch \slashChar + % Allow line break only after the final / in a sequence of + % slashes, to avoid line break between the slashes in http://. + \ifx\next/\else \urefpoststretch \fi + } +} + +% One more complication: by default we'll break after the special +% characters, but some people like to break before the special chars, so +% allow that. Also allow no breaking at all, for manual control. +% +\parseargdef\urefbreakstyle{% + \def\txiarg{#1}% + \ifx\txiarg\wordnone + \def\urefprebreak{\nobreak}\def\urefpostbreak{\nobreak} + \else\ifx\txiarg\wordbefore + \def\urefprebreak{\allowbreak}\def\urefpostbreak{\nobreak} + \else\ifx\txiarg\wordafter + \def\urefprebreak{\nobreak}\def\urefpostbreak{\allowbreak} + \else + \errhelp = \EMsimple + \errmessage{Unknown @urefbreakstyle setting `\txiarg'}% + \fi\fi\fi +} +\def\wordafter{after} +\def\wordbefore{before} +\def\wordnone{none} + +\urefbreakstyle after + +% @url synonym for @uref, since that's how everyone uses it. +% +\let\url=\uref + +% rms does not like angle brackets --karl, 17may97. +% So now @email is just like @uref, unless we are pdf. +% +%\def\email#1{\angleleft{\tt #1}\angleright} +\ifpdf + \def\email#1{\doemail#1,,\finish} + \def\doemail#1,#2,#3\finish{\begingroup + \unsepspaces + \pdfurl{mailto:#1}% + \setbox0 = \hbox{\ignorespaces #2}% + \ifdim\wd0>0pt\unhbox0\else\code{#1}\fi + \endlink + \endgroup} +\else + \let\email=\uref +\fi + +% @kbdinputstyle -- arg is `distinct' (@kbd uses slanted tty font always), +% `example' (@kbd uses ttsl only inside of @example and friends), +% or `code' (@kbd uses normal tty font always). +\parseargdef\kbdinputstyle{% + \def\txiarg{#1}% + \ifx\txiarg\worddistinct + \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\ttsl}% + \else\ifx\txiarg\wordexample + \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\tt}% + \else\ifx\txiarg\wordcode + \gdef\kbdexamplefont{\tt}\gdef\kbdfont{\tt}% + \else + \errhelp = \EMsimple + \errmessage{Unknown @kbdinputstyle setting `\txiarg'}% + \fi\fi\fi +} +\def\worddistinct{distinct} +\def\wordexample{example} +\def\wordcode{code} + +% Default is `distinct'. +\kbdinputstyle distinct + +% @kbd is like @code, except that if the argument is just one @key command, +% then @kbd has no effect. +\def\kbd#1{{\def\look{#1}\expandafter\kbdsub\look??\par}} + +\def\xkey{\key} +\def\kbdsub#1#2#3\par{% + \def\one{#1}\def\three{#3}\def\threex{??}% + \ifx\one\xkey\ifx\threex\three \key{#2}% + \else{\tclose{\kbdfont\setupmarkupstyle{kbd}\look}}\fi + \else{\tclose{\kbdfont\setupmarkupstyle{kbd}\look}}\fi +} + +% definition of @key that produces a lozenge. Doesn't adjust to text size. +%\setfont\keyrm\rmshape{8}{1000}{OT1} +%\font\keysy=cmsy9 +%\def\key#1{{\keyrm\textfont2=\keysy \leavevmode\hbox{% +% \raise0.4pt\hbox{\angleleft}\kern-.08em\vtop{% +% \vbox{\hrule\kern-0.4pt +% \hbox{\raise0.4pt\hbox{\vphantom{\angleleft}}#1}}% +% \kern-0.4pt\hrule}% +% \kern-.06em\raise0.4pt\hbox{\angleright}}}} + +% definition of @key with no lozenge. If the current font is already +% monospace, don't change it; that way, we respect @kbdinputstyle. But +% if it isn't monospace, then use \tt. +% +\def\key#1{{\setupmarkupstyle{key}% + \nohyphenation + \ifmonospace\else\tt\fi + #1}\null} + +% @clicksequence{File @click{} Open ...} +\def\clicksequence#1{\begingroup #1\endgroup} + +% @clickstyle @arrow (by default) +\parseargdef\clickstyle{\def\click{#1}} +\def\click{\arrow} + +% Typeset a dimension, e.g., `in' or `pt'. The only reason for the +% argument is to make the input look right: @dmn{pt} instead of @dmn{}pt. +% +\def\dmn#1{\thinspace #1} + +% @l was never documented to mean ``switch to the Lisp font'', +% and it is not used as such in any manual I can find. We need it for +% Polish suppressed-l. --karl, 22sep96. +%\def\l#1{{\li #1}\null} + +% @acronym for "FBI", "NATO", and the like. +% We print this one point size smaller, since it's intended for +% all-uppercase. +% +\def\acronym#1{\doacronym #1,,\finish} +\def\doacronym#1,#2,#3\finish{% + {\selectfonts\lsize #1}% + \def\temp{#2}% + \ifx\temp\empty \else + \space ({\unsepspaces \ignorespaces \temp \unskip})% + \fi + \null % reset \spacefactor=1000 +} + +% @abbr for "Comput. J." and the like. +% No font change, but don't do end-of-sentence spacing. +% +\def\abbr#1{\doabbr #1,,\finish} +\def\doabbr#1,#2,#3\finish{% + {\plainfrenchspacing #1}% + \def\temp{#2}% + \ifx\temp\empty \else + \space ({\unsepspaces \ignorespaces \temp \unskip})% + \fi + \null % reset \spacefactor=1000 +} + +% @asis just yields its argument. Used with @table, for example. +% +\def\asis#1{#1} + +% @math outputs its argument in math mode. +% +% One complication: _ usually means subscripts, but it could also mean +% an actual _ character, as in @math{@var{some_variable} + 1}. So make +% _ active, and distinguish by seeing if the current family is \slfam, +% which is what @var uses. +{ + \catcode`\_ = \active + \gdef\mathunderscore{% + \catcode`\_=\active + \def_{\ifnum\fam=\slfam \_\else\sb\fi}% + } +} +% Another complication: we want \\ (and @\) to output a math (or tt) \. +% FYI, plain.tex uses \\ as a temporary control sequence (for no +% particular reason), but this is not advertised and we don't care. +% +% The \mathchar is class=0=ordinary, family=7=ttfam, position=5C=\. +\def\mathbackslash{\ifnum\fam=\ttfam \mathchar"075C \else\backslash \fi} +% +\def\math{% + \tex + \mathunderscore + \let\\ = \mathbackslash + \mathactive + % make the texinfo accent commands work in math mode + \let\"=\ddot + \let\'=\acute + \let\==\bar + \let\^=\hat + \let\`=\grave + \let\u=\breve + \let\v=\check + \let\~=\tilde + \let\dotaccent=\dot + $\finishmath +} +\def\finishmath#1{#1$\endgroup} % Close the group opened by \tex. + +% Some active characters (such as <) are spaced differently in math. +% We have to reset their definitions in case the @math was an argument +% to a command which sets the catcodes (such as @item or @section). +% +{ + \catcode`^ = \active + \catcode`< = \active + \catcode`> = \active + \catcode`+ = \active + \catcode`' = \active + \gdef\mathactive{% + \let^ = \ptexhat + \let< = \ptexless + \let> = \ptexgtr + \let+ = \ptexplus + \let' = \ptexquoteright + } +} + +% ctrl is no longer a Texinfo command, but leave this definition for fun. +\def\ctrl #1{{\tt \rawbackslash \hat}#1} + +% @inlinefmt{FMTNAME,PROCESSED-TEXT} and @inlineraw{FMTNAME,RAW-TEXT}. +% Ignore unless FMTNAME == tex; then it is like @iftex and @tex, +% except specified as a normal braced arg, so no newlines to worry about. +% +\def\outfmtnametex{tex} +% +\long\def\inlinefmt#1{\doinlinefmt #1,\finish} +\long\def\doinlinefmt#1,#2,\finish{% + \def\inlinefmtname{#1}% + \ifx\inlinefmtname\outfmtnametex \ignorespaces #2\fi +} +% For raw, must switch into @tex before parsing the argument, to avoid +% setting catcodes prematurely. Doing it this way means that, for +% example, @inlineraw{html, foo{bar} gets a parse error instead of being +% ignored. But this isn't important because if people want a literal +% *right* brace they would have to use a command anyway, so they may as +% well use a command to get a left brace too. We could re-use the +% delimiter character idea from \verb, but it seems like overkill. +% +\long\def\inlineraw{\tex \doinlineraw} +\long\def\doinlineraw#1{\doinlinerawtwo #1,\finish} +\def\doinlinerawtwo#1,#2,\finish{% + \def\inlinerawname{#1}% + \ifx\inlinerawname\outfmtnametex \ignorespaces #2\fi + \endgroup % close group opened by \tex. +} + + +\message{glyphs,} +% and logos. + +% @@ prints an @, as does @atchar{}. +\def\@{\char64 } +\let\atchar=\@ + +% @{ @} @lbracechar{} @rbracechar{} all generate brace characters. +% Unless we're in typewriter, use \ecfont because the CM text fonts do +% not have braces, and we don't want to switch into math. +\def\mylbrace{{\ifmonospace\else\ecfont\fi \char123}} +\def\myrbrace{{\ifmonospace\else\ecfont\fi \char125}} +\let\{=\mylbrace \let\lbracechar=\{ +\let\}=\myrbrace \let\rbracechar=\} +\begingroup + % Definitions to produce \{ and \} commands for indices, + % and @{ and @} for the aux/toc files. + \catcode`\{ = \other \catcode`\} = \other + \catcode`\[ = 1 \catcode`\] = 2 + \catcode`\! = 0 \catcode`\\ = \other + !gdef!lbracecmd[\{]% + !gdef!rbracecmd[\}]% + !gdef!lbraceatcmd[@{]% + !gdef!rbraceatcmd[@}]% +!endgroup + +% @comma{} to avoid , parsing problems. +\let\comma = , + +% Accents: @, @dotaccent @ringaccent @ubaraccent @udotaccent +% Others are defined by plain TeX: @` @' @" @^ @~ @= @u @v @H. +\let\, = \ptexc +\let\dotaccent = \ptexdot +\def\ringaccent#1{{\accent23 #1}} +\let\tieaccent = \ptext +\let\ubaraccent = \ptexb +\let\udotaccent = \d + +% Other special characters: @questiondown @exclamdown @ordf @ordm +% Plain TeX defines: @AA @AE @O @OE @L (plus lowercase versions) @ss. +\def\questiondown{?`} +\def\exclamdown{!`} +\def\ordf{\leavevmode\raise1ex\hbox{\selectfonts\lllsize \underbar{a}}} +\def\ordm{\leavevmode\raise1ex\hbox{\selectfonts\lllsize \underbar{o}}} + +% Dotless i and dotless j, used for accents. +\def\imacro{i} +\def\jmacro{j} +\def\dotless#1{% + \def\temp{#1}% + \ifx\temp\imacro \ifmmode\imath \else\ptexi \fi + \else\ifx\temp\jmacro \ifmmode\jmath \else\j \fi + \else \errmessage{@dotless can be used only with i or j}% + \fi\fi +} + +% The \TeX{} logo, as in plain, but resetting the spacing so that a +% period following counts as ending a sentence. (Idea found in latex.) +% +\edef\TeX{\TeX \spacefactor=1000 } + +% @LaTeX{} logo. Not quite the same results as the definition in +% latex.ltx, since we use a different font for the raised A; it's most +% convenient for us to use an explicitly smaller font, rather than using +% the \scriptstyle font (since we don't reset \scriptstyle and +% \scriptscriptstyle). +% +\def\LaTeX{% + L\kern-.36em + {\setbox0=\hbox{T}% + \vbox to \ht0{\hbox{% + \ifx\textnominalsize\xwordpt + % for 10pt running text, \lllsize (8pt) is too small for the A in LaTeX. + % Revert to plain's \scriptsize, which is 7pt. + \count255=\the\fam $\fam\count255 \scriptstyle A$% + \else + % For 11pt, we can use our lllsize. + \selectfonts\lllsize A% + \fi + }% + \vss + }}% + \kern-.15em + \TeX +} + +% Some math mode symbols. +\def\bullet{$\ptexbullet$} +\def\geq{\ifmmode \ge\else $\ge$\fi} +\def\leq{\ifmmode \le\else $\le$\fi} +\def\minus{\ifmmode -\else $-$\fi} + +% @dots{} outputs an ellipsis using the current font. +% We do .5em per period so that it has the same spacing in the cm +% typewriter fonts as three actual period characters; on the other hand, +% in other typewriter fonts three periods are wider than 1.5em. So do +% whichever is larger. +% +\def\dots{% + \leavevmode + \setbox0=\hbox{...}% get width of three periods + \ifdim\wd0 > 1.5em + \dimen0 = \wd0 + \else + \dimen0 = 1.5em + \fi + \hbox to \dimen0{% + \hskip 0pt plus.25fil + .\hskip 0pt plus1fil + .\hskip 0pt plus1fil + .\hskip 0pt plus.5fil + }% +} + +% @enddots{} is an end-of-sentence ellipsis. +% +\def\enddots{% + \dots + \spacefactor=\endofsentencespacefactor +} + +% @point{}, @result{}, @expansion{}, @print{}, @equiv{}. +% +% Since these characters are used in examples, they should be an even number of +% \tt widths. Each \tt character is 1en, so two makes it 1em. +% +\def\point{$\star$} +\def\arrow{\leavevmode\raise.05ex\hbox to 1em{\hfil$\rightarrow$\hfil}} +\def\result{\leavevmode\raise.05ex\hbox to 1em{\hfil$\Rightarrow$\hfil}} +\def\expansion{\leavevmode\hbox to 1em{\hfil$\mapsto$\hfil}} +\def\print{\leavevmode\lower.1ex\hbox to 1em{\hfil$\dashv$\hfil}} +\def\equiv{\leavevmode\hbox to 1em{\hfil$\ptexequiv$\hfil}} + +% The @error{} command. +% Adapted from the TeXbook's \boxit. +% +\newbox\errorbox +% +{\tentt \global\dimen0 = 3em}% Width of the box. +\dimen2 = .55pt % Thickness of rules +% The text. (`r' is open on the right, `e' somewhat less so on the left.) +\setbox0 = \hbox{\kern-.75pt \reducedsf \putworderror\kern-1.5pt} +% +\setbox\errorbox=\hbox to \dimen0{\hfil + \hsize = \dimen0 \advance\hsize by -5.8pt % Space to left+right. + \advance\hsize by -2\dimen2 % Rules. + \vbox{% + \hrule height\dimen2 + \hbox{\vrule width\dimen2 \kern3pt % Space to left of text. + \vtop{\kern2.4pt \box0 \kern2.4pt}% Space above/below. + \kern3pt\vrule width\dimen2}% Space to right. + \hrule height\dimen2} + \hfil} +% +\def\error{\leavevmode\lower.7ex\copy\errorbox} + +% @pounds{} is a sterling sign, which Knuth put in the CM italic font. +% +\def\pounds{{\it\$}} + +% @euro{} comes from a separate font, depending on the current style. +% We use the free feym* fonts from the eurosym package by Henrik +% Theiling, which support regular, slanted, bold and bold slanted (and +% "outlined" (blackboard board, sort of) versions, which we don't need). +% It is available from http://www.ctan.org/tex-archive/fonts/eurosym. +% +% Although only regular is the truly official Euro symbol, we ignore +% that. The Euro is designed to be slightly taller than the regular +% font height. +% +% feymr - regular +% feymo - slanted +% feybr - bold +% feybo - bold slanted +% +% There is no good (free) typewriter version, to my knowledge. +% A feymr10 euro is ~7.3pt wide, while a normal cmtt10 char is ~5.25pt wide. +% Hmm. +% +% Also doesn't work in math. Do we need to do math with euro symbols? +% Hope not. +% +% +\def\euro{{\eurofont e}} +\def\eurofont{% + % We set the font at each command, rather than predefining it in + % \textfonts and the other font-switching commands, so that + % installations which never need the symbol don't have to have the + % font installed. + % + % There is only one designed size (nominal 10pt), so we always scale + % that to the current nominal size. + % + % By the way, simply using "at 1em" works for cmr10 and the like, but + % does not work for cmbx10 and other extended/shrunken fonts. + % + \def\eurosize{\csname\curfontsize nominalsize\endcsname}% + % + \ifx\curfontstyle\bfstylename + % bold: + \font\thiseurofont = \ifusingit{feybo10}{feybr10} at \eurosize + \else + % regular: + \font\thiseurofont = \ifusingit{feymo10}{feymr10} at \eurosize + \fi + \thiseurofont +} + +% Glyphs from the EC fonts. We don't use \let for the aliases, because +% sometimes we redefine the original macro, and the alias should reflect +% the redefinition. +% +% Use LaTeX names for the Icelandic letters. +\def\DH{{\ecfont \char"D0}} % Eth +\def\dh{{\ecfont \char"F0}} % eth +\def\TH{{\ecfont \char"DE}} % Thorn +\def\th{{\ecfont \char"FE}} % thorn +% +\def\guillemetleft{{\ecfont \char"13}} +\def\guillemotleft{\guillemetleft} +\def\guillemetright{{\ecfont \char"14}} +\def\guillemotright{\guillemetright} +\def\guilsinglleft{{\ecfont \char"0E}} +\def\guilsinglright{{\ecfont \char"0F}} +\def\quotedblbase{{\ecfont \char"12}} +\def\quotesinglbase{{\ecfont \char"0D}} +% +% This positioning is not perfect (see the ogonek LaTeX package), but +% we have the precomposed glyphs for the most common cases. We put the +% tests to use those glyphs in the single \ogonek macro so we have fewer +% dummy definitions to worry about for index entries, etc. +% +% ogonek is also used with other letters in Lithuanian (IOU), but using +% the precomposed glyphs for those is not so easy since they aren't in +% the same EC font. +\def\ogonek#1{{% + \def\temp{#1}% + \ifx\temp\macrocharA\Aogonek + \else\ifx\temp\macrochara\aogonek + \else\ifx\temp\macrocharE\Eogonek + \else\ifx\temp\macrochare\eogonek + \else + \ecfont \setbox0=\hbox{#1}% + \ifdim\ht0=1ex\accent"0C #1% + \else\ooalign{\unhbox0\crcr\hidewidth\char"0C \hidewidth}% + \fi + \fi\fi\fi\fi + }% +} +\def\Aogonek{{\ecfont \char"81}}\def\macrocharA{A} +\def\aogonek{{\ecfont \char"A1}}\def\macrochara{a} +\def\Eogonek{{\ecfont \char"86}}\def\macrocharE{E} +\def\eogonek{{\ecfont \char"A6}}\def\macrochare{e} +% +% Use the ec* fonts (cm-super in outline format) for non-CM glyphs. +\def\ecfont{% + % We can't distinguish serif/sans and italic/slanted, but this + % is used for crude hacks anyway (like adding French and German + % quotes to documents typeset with CM, where we lose kerning), so + % hopefully nobody will notice/care. + \edef\ecsize{\csname\curfontsize ecsize\endcsname}% + \edef\nominalsize{\csname\curfontsize nominalsize\endcsname}% + \ifmonospace + % typewriter: + \font\thisecfont = ectt\ecsize \space at \nominalsize + \else + \ifx\curfontstyle\bfstylename + % bold: + \font\thisecfont = ecb\ifusingit{i}{x}\ecsize \space at \nominalsize + \else + % regular: + \font\thisecfont = ec\ifusingit{ti}{rm}\ecsize \space at \nominalsize + \fi + \fi + \thisecfont +} + +% @registeredsymbol - R in a circle. The font for the R should really +% be smaller yet, but lllsize is the best we can do for now. +% Adapted from the plain.tex definition of \copyright. +% +\def\registeredsymbol{% + $^{{\ooalign{\hfil\raise.07ex\hbox{\selectfonts\lllsize R}% + \hfil\crcr\Orb}}% + }$% +} + +% @textdegree - the normal degrees sign. +% +\def\textdegree{$^\circ$} + +% Laurent Siebenmann reports \Orb undefined with: +% Textures 1.7.7 (preloaded format=plain 93.10.14) (68K) 16 APR 2004 02:38 +% so we'll define it if necessary. +% +\ifx\Orb\thisisundefined +\def\Orb{\mathhexbox20D} +\fi + +% Quotes. +\chardef\quotedblleft="5C +\chardef\quotedblright=`\" +\chardef\quoteleft=`\` +\chardef\quoteright=`\' + + +\message{page headings,} + +\newskip\titlepagetopglue \titlepagetopglue = 1.5in +\newskip\titlepagebottomglue \titlepagebottomglue = 2pc + +% First the title page. Must do @settitle before @titlepage. +\newif\ifseenauthor +\newif\iffinishedtitlepage + +% Do an implicit @contents or @shortcontents after @end titlepage if the +% user says @setcontentsaftertitlepage or @setshortcontentsaftertitlepage. +% +\newif\ifsetcontentsaftertitlepage + \let\setcontentsaftertitlepage = \setcontentsaftertitlepagetrue +\newif\ifsetshortcontentsaftertitlepage + \let\setshortcontentsaftertitlepage = \setshortcontentsaftertitlepagetrue + +\parseargdef\shorttitlepage{% + \begingroup \hbox{}\vskip 1.5in \chaprm \centerline{#1}% + \endgroup\page\hbox{}\page} + +\envdef\titlepage{% + % Open one extra group, as we want to close it in the middle of \Etitlepage. + \begingroup + \parindent=0pt \textfonts + % Leave some space at the very top of the page. + \vglue\titlepagetopglue + % No rule at page bottom unless we print one at the top with @title. + \finishedtitlepagetrue + % + % Most title ``pages'' are actually two pages long, with space + % at the top of the second. We don't want the ragged left on the second. + \let\oldpage = \page + \def\page{% + \iffinishedtitlepage\else + \finishtitlepage + \fi + \let\page = \oldpage + \page + \null + }% +} + +\def\Etitlepage{% + \iffinishedtitlepage\else + \finishtitlepage + \fi + % It is important to do the page break before ending the group, + % because the headline and footline are only empty inside the group. + % If we use the new definition of \page, we always get a blank page + % after the title page, which we certainly don't want. + \oldpage + \endgroup + % + % Need this before the \...aftertitlepage checks so that if they are + % in effect the toc pages will come out with page numbers. + \HEADINGSon + % + % If they want short, they certainly want long too. + \ifsetshortcontentsaftertitlepage + \shortcontents + \contents + \global\let\shortcontents = \relax + \global\let\contents = \relax + \fi + % + \ifsetcontentsaftertitlepage + \contents + \global\let\contents = \relax + \global\let\shortcontents = \relax + \fi +} + +\def\finishtitlepage{% + \vskip4pt \hrule height 2pt width \hsize + \vskip\titlepagebottomglue + \finishedtitlepagetrue +} + +% Settings used for typesetting titles: no hyphenation, no indentation, +% don't worry much about spacing, ragged right. This should be used +% inside a \vbox, and fonts need to be set appropriately first. Because +% it is always used for titles, nothing else, we call \rmisbold. \par +% should be specified before the end of the \vbox, since a vbox is a group. +% +\def\raggedtitlesettings{% + \rmisbold + \hyphenpenalty=10000 + \parindent=0pt + \tolerance=5000 + \ptexraggedright +} + +% Macros to be used within @titlepage: + +\let\subtitlerm=\tenrm +\def\subtitlefont{\subtitlerm \normalbaselineskip = 13pt \normalbaselines} + +\parseargdef\title{% + \checkenv\titlepage + \vbox{\titlefonts \raggedtitlesettings #1\par}% + % print a rule at the page bottom also. + \finishedtitlepagefalse + \vskip4pt \hrule height 4pt width \hsize \vskip4pt +} + +\parseargdef\subtitle{% + \checkenv\titlepage + {\subtitlefont \rightline{#1}}% +} + +% @author should come last, but may come many times. +% It can also be used inside @quotation. +% +\parseargdef\author{% + \def\temp{\quotation}% + \ifx\thisenv\temp + \def\quotationauthor{#1}% printed in \Equotation. + \else + \checkenv\titlepage + \ifseenauthor\else \vskip 0pt plus 1filll \seenauthortrue \fi + {\secfonts\rmisbold \leftline{#1}}% + \fi +} + + +% Set up page headings and footings. + +\let\thispage=\folio + +\newtoks\evenheadline % headline on even pages +\newtoks\oddheadline % headline on odd pages +\newtoks\evenfootline % footline on even pages +\newtoks\oddfootline % footline on odd pages + +% Now make TeX use those variables +\headline={{\textfonts\rm \ifodd\pageno \the\oddheadline + \else \the\evenheadline \fi}} +\footline={{\textfonts\rm \ifodd\pageno \the\oddfootline + \else \the\evenfootline \fi}\HEADINGShook} +\let\HEADINGShook=\relax + +% Commands to set those variables. +% For example, this is what @headings on does +% @evenheading @thistitle|@thispage|@thischapter +% @oddheading @thischapter|@thispage|@thistitle +% @evenfooting @thisfile|| +% @oddfooting ||@thisfile + + +\def\evenheading{\parsearg\evenheadingxxx} +\def\evenheadingxxx #1{\evenheadingyyy #1\|\|\|\|\finish} +\def\evenheadingyyy #1\|#2\|#3\|#4\finish{% +\global\evenheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}} + +\def\oddheading{\parsearg\oddheadingxxx} +\def\oddheadingxxx #1{\oddheadingyyy #1\|\|\|\|\finish} +\def\oddheadingyyy #1\|#2\|#3\|#4\finish{% +\global\oddheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}} + +\parseargdef\everyheading{\oddheadingxxx{#1}\evenheadingxxx{#1}}% + +\def\evenfooting{\parsearg\evenfootingxxx} +\def\evenfootingxxx #1{\evenfootingyyy #1\|\|\|\|\finish} +\def\evenfootingyyy #1\|#2\|#3\|#4\finish{% +\global\evenfootline={\rlap{\centerline{#2}}\line{#1\hfil#3}}} + +\def\oddfooting{\parsearg\oddfootingxxx} +\def\oddfootingxxx #1{\oddfootingyyy #1\|\|\|\|\finish} +\def\oddfootingyyy #1\|#2\|#3\|#4\finish{% + \global\oddfootline = {\rlap{\centerline{#2}}\line{#1\hfil#3}}% + % + % Leave some space for the footline. Hopefully ok to assume + % @evenfooting will not be used by itself. + \global\advance\pageheight by -12pt + \global\advance\vsize by -12pt +} + +\parseargdef\everyfooting{\oddfootingxxx{#1}\evenfootingxxx{#1}} + +% @evenheadingmarks top \thischapter <- chapter at the top of a page +% @evenheadingmarks bottom \thischapter <- chapter at the bottom of a page +% +% The same set of arguments for: +% +% @oddheadingmarks +% @evenfootingmarks +% @oddfootingmarks +% @everyheadingmarks +% @everyfootingmarks + +\def\evenheadingmarks{\headingmarks{even}{heading}} +\def\oddheadingmarks{\headingmarks{odd}{heading}} +\def\evenfootingmarks{\headingmarks{even}{footing}} +\def\oddfootingmarks{\headingmarks{odd}{footing}} +\def\everyheadingmarks#1 {\headingmarks{even}{heading}{#1} + \headingmarks{odd}{heading}{#1} } +\def\everyfootingmarks#1 {\headingmarks{even}{footing}{#1} + \headingmarks{odd}{footing}{#1} } +% #1 = even/odd, #2 = heading/footing, #3 = top/bottom. +\def\headingmarks#1#2#3 {% + \expandafter\let\expandafter\temp \csname get#3headingmarks\endcsname + \global\expandafter\let\csname get#1#2marks\endcsname \temp +} + +\everyheadingmarks bottom +\everyfootingmarks bottom + +% @headings double turns headings on for double-sided printing. +% @headings single turns headings on for single-sided printing. +% @headings off turns them off. +% @headings on same as @headings double, retained for compatibility. +% @headings after turns on double-sided headings after this page. +% @headings doubleafter turns on double-sided headings after this page. +% @headings singleafter turns on single-sided headings after this page. +% By default, they are off at the start of a document, +% and turned `on' after @end titlepage. + +\def\headings #1 {\csname HEADINGS#1\endcsname} + +\def\headingsoff{% non-global headings elimination + \evenheadline={\hfil}\evenfootline={\hfil}% + \oddheadline={\hfil}\oddfootline={\hfil}% +} + +\def\HEADINGSoff{{\globaldefs=1 \headingsoff}} % global setting +\HEADINGSoff % it's the default + +% When we turn headings on, set the page number to 1. +% For double-sided printing, put current file name in lower left corner, +% chapter name on inside top of right hand pages, document +% title on inside top of left hand pages, and page numbers on outside top +% edge of all pages. +\def\HEADINGSdouble{% +\global\pageno=1 +\global\evenfootline={\hfil} +\global\oddfootline={\hfil} +\global\evenheadline={\line{\folio\hfil\thistitle}} +\global\oddheadline={\line{\thischapter\hfil\folio}} +\global\let\contentsalignmacro = \chapoddpage +} +\let\contentsalignmacro = \chappager + +% For single-sided printing, chapter title goes across top left of page, +% page number on top right. +\def\HEADINGSsingle{% +\global\pageno=1 +\global\evenfootline={\hfil} +\global\oddfootline={\hfil} +\global\evenheadline={\line{\thischapter\hfil\folio}} +\global\oddheadline={\line{\thischapter\hfil\folio}} +\global\let\contentsalignmacro = \chappager +} +\def\HEADINGSon{\HEADINGSdouble} + +\def\HEADINGSafter{\let\HEADINGShook=\HEADINGSdoublex} +\let\HEADINGSdoubleafter=\HEADINGSafter +\def\HEADINGSdoublex{% +\global\evenfootline={\hfil} +\global\oddfootline={\hfil} +\global\evenheadline={\line{\folio\hfil\thistitle}} +\global\oddheadline={\line{\thischapter\hfil\folio}} +\global\let\contentsalignmacro = \chapoddpage +} + +\def\HEADINGSsingleafter{\let\HEADINGShook=\HEADINGSsinglex} +\def\HEADINGSsinglex{% +\global\evenfootline={\hfil} +\global\oddfootline={\hfil} +\global\evenheadline={\line{\thischapter\hfil\folio}} +\global\oddheadline={\line{\thischapter\hfil\folio}} +\global\let\contentsalignmacro = \chappager +} + +% Subroutines used in generating headings +% This produces Day Month Year style of output. +% Only define if not already defined, in case a txi-??.tex file has set +% up a different format (e.g., txi-cs.tex does this). +\ifx\today\thisisundefined +\def\today{% + \number\day\space + \ifcase\month + \or\putwordMJan\or\putwordMFeb\or\putwordMMar\or\putwordMApr + \or\putwordMMay\or\putwordMJun\or\putwordMJul\or\putwordMAug + \or\putwordMSep\or\putwordMOct\or\putwordMNov\or\putwordMDec + \fi + \space\number\year} +\fi + +% @settitle line... specifies the title of the document, for headings. +% It generates no output of its own. +\def\thistitle{\putwordNoTitle} +\def\settitle{\parsearg{\gdef\thistitle}} + + +\message{tables,} +% Tables -- @table, @ftable, @vtable, @item(x). + +% default indentation of table text +\newdimen\tableindent \tableindent=.8in +% default indentation of @itemize and @enumerate text +\newdimen\itemindent \itemindent=.3in +% margin between end of table item and start of table text. +\newdimen\itemmargin \itemmargin=.1in + +% used internally for \itemindent minus \itemmargin +\newdimen\itemmax + +% Note @table, @ftable, and @vtable define @item, @itemx, etc., with +% these defs. +% They also define \itemindex +% to index the item name in whatever manner is desired (perhaps none). + +\newif\ifitemxneedsnegativevskip + +\def\itemxpar{\par\ifitemxneedsnegativevskip\nobreak\vskip-\parskip\nobreak\fi} + +\def\internalBitem{\smallbreak \parsearg\itemzzz} +\def\internalBitemx{\itemxpar \parsearg\itemzzz} + +\def\itemzzz #1{\begingroup % + \advance\hsize by -\rightskip + \advance\hsize by -\tableindent + \setbox0=\hbox{\itemindicate{#1}}% + \itemindex{#1}% + \nobreak % This prevents a break before @itemx. + % + % If the item text does not fit in the space we have, put it on a line + % by itself, and do not allow a page break either before or after that + % line. We do not start a paragraph here because then if the next + % command is, e.g., @kindex, the whatsit would get put into the + % horizontal list on a line by itself, resulting in extra blank space. + \ifdim \wd0>\itemmax + % + % Make this a paragraph so we get the \parskip glue and wrapping, + % but leave it ragged-right. + \begingroup + \advance\leftskip by-\tableindent + \advance\hsize by\tableindent + \advance\rightskip by0pt plus1fil\relax + \leavevmode\unhbox0\par + \endgroup + % + % We're going to be starting a paragraph, but we don't want the + % \parskip glue -- logically it's part of the @item we just started. + \nobreak \vskip-\parskip + % + % Stop a page break at the \parskip glue coming up. However, if + % what follows is an environment such as @example, there will be no + % \parskip glue; then the negative vskip we just inserted would + % cause the example and the item to crash together. So we use this + % bizarre value of 10001 as a signal to \aboveenvbreak to insert + % \parskip glue after all. Section titles are handled this way also. + % + \penalty 10001 + \endgroup + \itemxneedsnegativevskipfalse + \else + % The item text fits into the space. Start a paragraph, so that the + % following text (if any) will end up on the same line. + \noindent + % Do this with kerns and \unhbox so that if there is a footnote in + % the item text, it can migrate to the main vertical list and + % eventually be printed. + \nobreak\kern-\tableindent + \dimen0 = \itemmax \advance\dimen0 by \itemmargin \advance\dimen0 by -\wd0 + \unhbox0 + \nobreak\kern\dimen0 + \endgroup + \itemxneedsnegativevskiptrue + \fi +} + +\def\item{\errmessage{@item while not in a list environment}} +\def\itemx{\errmessage{@itemx while not in a list environment}} + +% @table, @ftable, @vtable. +\envdef\table{% + \let\itemindex\gobble + \tablecheck{table}% +} +\envdef\ftable{% + \def\itemindex ##1{\doind {fn}{\code{##1}}}% + \tablecheck{ftable}% +} +\envdef\vtable{% + \def\itemindex ##1{\doind {vr}{\code{##1}}}% + \tablecheck{vtable}% +} +\def\tablecheck#1{% + \ifnum \the\catcode`\^^M=\active + \endgroup + \errmessage{This command won't work in this context; perhaps the problem is + that we are \inenvironment\thisenv}% + \def\next{\doignore{#1}}% + \else + \let\next\tablex + \fi + \next +} +\def\tablex#1{% + \def\itemindicate{#1}% + \parsearg\tabley +} +\def\tabley#1{% + {% + \makevalueexpandable + \edef\temp{\noexpand\tablez #1\space\space\space}% + \expandafter + }\temp \endtablez +} +\def\tablez #1 #2 #3 #4\endtablez{% + \aboveenvbreak + \ifnum 0#1>0 \advance \leftskip by #1\mil \fi + \ifnum 0#2>0 \tableindent=#2\mil \fi + \ifnum 0#3>0 \advance \rightskip by #3\mil \fi + \itemmax=\tableindent + \advance \itemmax by -\itemmargin + \advance \leftskip by \tableindent + \exdentamount=\tableindent + \parindent = 0pt + \parskip = \smallskipamount + \ifdim \parskip=0pt \parskip=2pt \fi + \let\item = \internalBitem + \let\itemx = \internalBitemx +} +\def\Etable{\endgraf\afterenvbreak} +\let\Eftable\Etable +\let\Evtable\Etable +\let\Eitemize\Etable +\let\Eenumerate\Etable + +% This is the counter used by @enumerate, which is really @itemize + +\newcount \itemno + +\envdef\itemize{\parsearg\doitemize} + +\def\doitemize#1{% + \aboveenvbreak + \itemmax=\itemindent + \advance\itemmax by -\itemmargin + \advance\leftskip by \itemindent + \exdentamount=\itemindent + \parindent=0pt + \parskip=\smallskipamount + \ifdim\parskip=0pt \parskip=2pt \fi + % + % Try typesetting the item mark that if the document erroneously says + % something like @itemize @samp (intending @table), there's an error + % right away at the @itemize. It's not the best error message in the + % world, but it's better than leaving it to the @item. This means if + % the user wants an empty mark, they have to say @w{} not just @w. + \def\itemcontents{#1}% + \setbox0 = \hbox{\itemcontents}% + % + % @itemize with no arg is equivalent to @itemize @bullet. + \ifx\itemcontents\empty\def\itemcontents{\bullet}\fi + % + \let\item=\itemizeitem +} + +% Definition of @item while inside @itemize and @enumerate. +% +\def\itemizeitem{% + \advance\itemno by 1 % for enumerations + {\let\par=\endgraf \smallbreak}% reasonable place to break + {% + % If the document has an @itemize directly after a section title, a + % \nobreak will be last on the list, and \sectionheading will have + % done a \vskip-\parskip. In that case, we don't want to zero + % parskip, or the item text will crash with the heading. On the + % other hand, when there is normal text preceding the item (as there + % usually is), we do want to zero parskip, or there would be too much + % space. In that case, we won't have a \nobreak before. At least + % that's the theory. + \ifnum\lastpenalty<10000 \parskip=0in \fi + \noindent + \hbox to 0pt{\hss \itemcontents \kern\itemmargin}% + % + \vadjust{\penalty 1200}}% not good to break after first line of item. + \flushcr +} + +% \splitoff TOKENS\endmark defines \first to be the first token in +% TOKENS, and \rest to be the remainder. +% +\def\splitoff#1#2\endmark{\def\first{#1}\def\rest{#2}}% + +% Allow an optional argument of an uppercase letter, lowercase letter, +% or number, to specify the first label in the enumerated list. No +% argument is the same as `1'. +% +\envparseargdef\enumerate{\enumeratey #1 \endenumeratey} +\def\enumeratey #1 #2\endenumeratey{% + % If we were given no argument, pretend we were given `1'. + \def\thearg{#1}% + \ifx\thearg\empty \def\thearg{1}\fi + % + % Detect if the argument is a single token. If so, it might be a + % letter. Otherwise, the only valid thing it can be is a number. + % (We will always have one token, because of the test we just made. + % This is a good thing, since \splitoff doesn't work given nothing at + % all -- the first parameter is undelimited.) + \expandafter\splitoff\thearg\endmark + \ifx\rest\empty + % Only one token in the argument. It could still be anything. + % A ``lowercase letter'' is one whose \lccode is nonzero. + % An ``uppercase letter'' is one whose \lccode is both nonzero, and + % not equal to itself. + % Otherwise, we assume it's a number. + % + % We need the \relax at the end of the \ifnum lines to stop TeX from + % continuing to look for a . + % + \ifnum\lccode\expandafter`\thearg=0\relax + \numericenumerate % a number (we hope) + \else + % It's a letter. + \ifnum\lccode\expandafter`\thearg=\expandafter`\thearg\relax + \lowercaseenumerate % lowercase letter + \else + \uppercaseenumerate % uppercase letter + \fi + \fi + \else + % Multiple tokens in the argument. We hope it's a number. + \numericenumerate + \fi +} + +% An @enumerate whose labels are integers. The starting integer is +% given in \thearg. +% +\def\numericenumerate{% + \itemno = \thearg + \startenumeration{\the\itemno}% +} + +% The starting (lowercase) letter is in \thearg. +\def\lowercaseenumerate{% + \itemno = \expandafter`\thearg + \startenumeration{% + % Be sure we're not beyond the end of the alphabet. + \ifnum\itemno=0 + \errmessage{No more lowercase letters in @enumerate; get a bigger + alphabet}% + \fi + \char\lccode\itemno + }% +} + +% The starting (uppercase) letter is in \thearg. +\def\uppercaseenumerate{% + \itemno = \expandafter`\thearg + \startenumeration{% + % Be sure we're not beyond the end of the alphabet. + \ifnum\itemno=0 + \errmessage{No more uppercase letters in @enumerate; get a bigger + alphabet} + \fi + \char\uccode\itemno + }% +} + +% Call \doitemize, adding a period to the first argument and supplying the +% common last two arguments. Also subtract one from the initial value in +% \itemno, since @item increments \itemno. +% +\def\startenumeration#1{% + \advance\itemno by -1 + \doitemize{#1.}\flushcr +} + +% @alphaenumerate and @capsenumerate are abbreviations for giving an arg +% to @enumerate. +% +\def\alphaenumerate{\enumerate{a}} +\def\capsenumerate{\enumerate{A}} +\def\Ealphaenumerate{\Eenumerate} +\def\Ecapsenumerate{\Eenumerate} + + +% @multitable macros +% Amy Hendrickson, 8/18/94, 3/6/96 +% +% @multitable ... @end multitable will make as many columns as desired. +% Contents of each column will wrap at width given in preamble. Width +% can be specified either with sample text given in a template line, +% or in percent of \hsize, the current width of text on page. + +% Table can continue over pages but will only break between lines. + +% To make preamble: +% +% Either define widths of columns in terms of percent of \hsize: +% @multitable @columnfractions .25 .3 .45 +% @item ... +% +% Numbers following @columnfractions are the percent of the total +% current hsize to be used for each column. You may use as many +% columns as desired. + + +% Or use a template: +% @multitable {Column 1 template} {Column 2 template} {Column 3 template} +% @item ... +% using the widest term desired in each column. + +% Each new table line starts with @item, each subsequent new column +% starts with @tab. Empty columns may be produced by supplying @tab's +% with nothing between them for as many times as empty columns are needed, +% ie, @tab@tab@tab will produce two empty columns. + +% @item, @tab do not need to be on their own lines, but it will not hurt +% if they are. + +% Sample multitable: + +% @multitable {Column 1 template} {Column 2 template} {Column 3 template} +% @item first col stuff @tab second col stuff @tab third col +% @item +% first col stuff +% @tab +% second col stuff +% @tab +% third col +% @item first col stuff @tab second col stuff +% @tab Many paragraphs of text may be used in any column. +% +% They will wrap at the width determined by the template. +% @item@tab@tab This will be in third column. +% @end multitable + +% Default dimensions may be reset by user. +% @multitableparskip is vertical space between paragraphs in table. +% @multitableparindent is paragraph indent in table. +% @multitablecolmargin is horizontal space to be left between columns. +% @multitablelinespace is space to leave between table items, baseline +% to baseline. +% 0pt means it depends on current normal line spacing. +% +\newskip\multitableparskip +\newskip\multitableparindent +\newdimen\multitablecolspace +\newskip\multitablelinespace +\multitableparskip=0pt +\multitableparindent=6pt +\multitablecolspace=12pt +\multitablelinespace=0pt + +% Macros used to set up halign preamble: +% +\let\endsetuptable\relax +\def\xendsetuptable{\endsetuptable} +\let\columnfractions\relax +\def\xcolumnfractions{\columnfractions} +\newif\ifsetpercent + +% #1 is the @columnfraction, usually a decimal number like .5, but might +% be just 1. We just use it, whatever it is. +% +\def\pickupwholefraction#1 {% + \global\advance\colcount by 1 + \expandafter\xdef\csname col\the\colcount\endcsname{#1\hsize}% + \setuptable +} + +\newcount\colcount +\def\setuptable#1{% + \def\firstarg{#1}% + \ifx\firstarg\xendsetuptable + \let\go = \relax + \else + \ifx\firstarg\xcolumnfractions + \global\setpercenttrue + \else + \ifsetpercent + \let\go\pickupwholefraction + \else + \global\advance\colcount by 1 + \setbox0=\hbox{#1\unskip\space}% Add a normal word space as a + % separator; typically that is always in the input, anyway. + \expandafter\xdef\csname col\the\colcount\endcsname{\the\wd0}% + \fi + \fi + \ifx\go\pickupwholefraction + % Put the argument back for the \pickupwholefraction call, so + % we'll always have a period there to be parsed. + \def\go{\pickupwholefraction#1}% + \else + \let\go = \setuptable + \fi% + \fi + \go +} + +% multitable-only commands. +% +% @headitem starts a heading row, which we typeset in bold. +% Assignments have to be global since we are inside the implicit group +% of an alignment entry. \everycr resets \everytab so we don't have to +% undo it ourselves. +\def\headitemfont{\b}% for people to use in the template row; not changeable +\def\headitem{% + \checkenv\multitable + \crcr + \global\everytab={\bf}% can't use \headitemfont since the parsing differs + \the\everytab % for the first item +}% +% +% A \tab used to include \hskip1sp. But then the space in a template +% line is not enough. That is bad. So let's go back to just `&' until +% we again encounter the problem the 1sp was intended to solve. +% --karl, nathan@acm.org, 20apr99. +\def\tab{\checkenv\multitable &\the\everytab}% + +% @multitable ... @end multitable definitions: +% +\newtoks\everytab % insert after every tab. +% +\envdef\multitable{% + \vskip\parskip + \startsavinginserts + % + % @item within a multitable starts a normal row. + % We use \def instead of \let so that if one of the multitable entries + % contains an @itemize, we don't choke on the \item (seen as \crcr aka + % \endtemplate) expanding \doitemize. + \def\item{\crcr}% + % + \tolerance=9500 + \hbadness=9500 + \setmultitablespacing + \parskip=\multitableparskip + \parindent=\multitableparindent + \overfullrule=0pt + \global\colcount=0 + % + \everycr = {% + \noalign{% + \global\everytab={}% + \global\colcount=0 % Reset the column counter. + % Check for saved footnotes, etc. + \checkinserts + % Keeps underfull box messages off when table breaks over pages. + %\filbreak + % Maybe so, but it also creates really weird page breaks when the + % table breaks over pages. Wouldn't \vfil be better? Wait until the + % problem manifests itself, so it can be fixed for real --karl. + }% + }% + % + \parsearg\domultitable +} +\def\domultitable#1{% + % To parse everything between @multitable and @item: + \setuptable#1 \endsetuptable + % + % This preamble sets up a generic column definition, which will + % be used as many times as user calls for columns. + % \vtop will set a single line and will also let text wrap and + % continue for many paragraphs if desired. + \halign\bgroup &% + \global\advance\colcount by 1 + \multistrut + \vtop{% + % Use the current \colcount to find the correct column width: + \hsize=\expandafter\csname col\the\colcount\endcsname + % + % In order to keep entries from bumping into each other + % we will add a \leftskip of \multitablecolspace to all columns after + % the first one. + % + % If a template has been used, we will add \multitablecolspace + % to the width of each template entry. + % + % If the user has set preamble in terms of percent of \hsize we will + % use that dimension as the width of the column, and the \leftskip + % will keep entries from bumping into each other. Table will start at + % left margin and final column will justify at right margin. + % + % Make sure we don't inherit \rightskip from the outer environment. + \rightskip=0pt + \ifnum\colcount=1 + % The first column will be indented with the surrounding text. + \advance\hsize by\leftskip + \else + \ifsetpercent \else + % If user has not set preamble in terms of percent of \hsize + % we will advance \hsize by \multitablecolspace. + \advance\hsize by \multitablecolspace + \fi + % In either case we will make \leftskip=\multitablecolspace: + \leftskip=\multitablecolspace + \fi + % Ignoring space at the beginning and end avoids an occasional spurious + % blank line, when TeX decides to break the line at the space before the + % box from the multistrut, so the strut ends up on a line by itself. + % For example: + % @multitable @columnfractions .11 .89 + % @item @code{#} + % @tab Legal holiday which is valid in major parts of the whole country. + % Is automatically provided with highlighting sequences respectively + % marking characters. + \noindent\ignorespaces##\unskip\multistrut + }\cr +} +\def\Emultitable{% + \crcr + \egroup % end the \halign + \global\setpercentfalse +} + +\def\setmultitablespacing{% + \def\multistrut{\strut}% just use the standard line spacing + % + % Compute \multitablelinespace (if not defined by user) for use in + % \multitableparskip calculation. We used define \multistrut based on + % this, but (ironically) that caused the spacing to be off. + % See bug-texinfo report from Werner Lemberg, 31 Oct 2004 12:52:20 +0100. +\ifdim\multitablelinespace=0pt +\setbox0=\vbox{X}\global\multitablelinespace=\the\baselineskip +\global\advance\multitablelinespace by-\ht0 +\fi +% Test to see if parskip is larger than space between lines of +% table. If not, do nothing. +% If so, set to same dimension as multitablelinespace. +\ifdim\multitableparskip>\multitablelinespace +\global\multitableparskip=\multitablelinespace +\global\advance\multitableparskip-7pt % to keep parskip somewhat smaller + % than skip between lines in the table. +\fi% +\ifdim\multitableparskip=0pt +\global\multitableparskip=\multitablelinespace +\global\advance\multitableparskip-7pt % to keep parskip somewhat smaller + % than skip between lines in the table. +\fi} + + +\message{conditionals,} + +% @iftex, @ifnotdocbook, @ifnothtml, @ifnotinfo, @ifnotplaintext, +% @ifnotxml always succeed. They currently do nothing; we don't +% attempt to check whether the conditionals are properly nested. But we +% have to remember that they are conditionals, so that @end doesn't +% attempt to close an environment group. +% +\def\makecond#1{% + \expandafter\let\csname #1\endcsname = \relax + \expandafter\let\csname iscond.#1\endcsname = 1 +} +\makecond{iftex} +\makecond{ifnotdocbook} +\makecond{ifnothtml} +\makecond{ifnotinfo} +\makecond{ifnotplaintext} +\makecond{ifnotxml} + +% Ignore @ignore, @ifhtml, @ifinfo, and the like. +% +\def\direntry{\doignore{direntry}} +\def\documentdescription{\doignore{documentdescription}} +\def\docbook{\doignore{docbook}} +\def\html{\doignore{html}} +\def\ifdocbook{\doignore{ifdocbook}} +\def\ifhtml{\doignore{ifhtml}} +\def\ifinfo{\doignore{ifinfo}} +\def\ifnottex{\doignore{ifnottex}} +\def\ifplaintext{\doignore{ifplaintext}} +\def\ifxml{\doignore{ifxml}} +\def\ignore{\doignore{ignore}} +\def\menu{\doignore{menu}} +\def\xml{\doignore{xml}} + +% Ignore text until a line `@end #1', keeping track of nested conditionals. +% +% A count to remember the depth of nesting. +\newcount\doignorecount + +\def\doignore#1{\begingroup + % Scan in ``verbatim'' mode: + \obeylines + \catcode`\@ = \other + \catcode`\{ = \other + \catcode`\} = \other + % + % Make sure that spaces turn into tokens that match what \doignoretext wants. + \spaceisspace + % + % Count number of #1's that we've seen. + \doignorecount = 0 + % + % Swallow text until we reach the matching `@end #1'. + \dodoignore{#1}% +} + +{ \catcode`_=11 % We want to use \_STOP_ which cannot appear in texinfo source. + \obeylines % + % + \gdef\dodoignore#1{% + % #1 contains the command name as a string, e.g., `ifinfo'. + % + % Define a command to find the next `@end #1'. + \long\def\doignoretext##1^^M@end #1{% + \doignoretextyyy##1^^M@#1\_STOP_}% + % + % And this command to find another #1 command, at the beginning of a + % line. (Otherwise, we would consider a line `@c @ifset', for + % example, to count as an @ifset for nesting.) + \long\def\doignoretextyyy##1^^M@#1##2\_STOP_{\doignoreyyy{##2}\_STOP_}% + % + % And now expand that command. + \doignoretext ^^M% + }% +} + +\def\doignoreyyy#1{% + \def\temp{#1}% + \ifx\temp\empty % Nothing found. + \let\next\doignoretextzzz + \else % Found a nested condition, ... + \advance\doignorecount by 1 + \let\next\doignoretextyyy % ..., look for another. + % If we're here, #1 ends with ^^M\ifinfo (for example). + \fi + \next #1% the token \_STOP_ is present just after this macro. +} + +% We have to swallow the remaining "\_STOP_". +% +\def\doignoretextzzz#1{% + \ifnum\doignorecount = 0 % We have just found the outermost @end. + \let\next\enddoignore + \else % Still inside a nested condition. + \advance\doignorecount by -1 + \let\next\doignoretext % Look for the next @end. + \fi + \next +} + +% Finish off ignored text. +{ \obeylines% + % Ignore anything after the last `@end #1'; this matters in verbatim + % environments, where otherwise the newline after an ignored conditional + % would result in a blank line in the output. + \gdef\enddoignore#1^^M{\endgroup\ignorespaces}% +} + + +% @set VAR sets the variable VAR to an empty value. +% @set VAR REST-OF-LINE sets VAR to the value REST-OF-LINE. +% +% Since we want to separate VAR from REST-OF-LINE (which might be +% empty), we can't just use \parsearg; we have to insert a space of our +% own to delimit the rest of the line, and then take it out again if we +% didn't need it. +% We rely on the fact that \parsearg sets \catcode`\ =10. +% +\parseargdef\set{\setyyy#1 \endsetyyy} +\def\setyyy#1 #2\endsetyyy{% + {% + \makevalueexpandable + \def\temp{#2}% + \edef\next{\gdef\makecsname{SET#1}}% + \ifx\temp\empty + \next{}% + \else + \setzzz#2\endsetzzz + \fi + }% +} +% Remove the trailing space \setxxx inserted. +\def\setzzz#1 \endsetzzz{\next{#1}} + +% @clear VAR clears (i.e., unsets) the variable VAR. +% +\parseargdef\clear{% + {% + \makevalueexpandable + \global\expandafter\let\csname SET#1\endcsname=\relax + }% +} + +% @value{foo} gets the text saved in variable foo. +\def\value{\begingroup\makevalueexpandable\valuexxx} +\def\valuexxx#1{\expandablevalue{#1}\endgroup} +{ + \catcode`\- = \active \catcode`\_ = \active + % + \gdef\makevalueexpandable{% + \let\value = \expandablevalue + % We don't want these characters active, ... + \catcode`\-=\other \catcode`\_=\other + % ..., but we might end up with active ones in the argument if + % we're called from @code, as @code{@value{foo-bar_}}, though. + % So \let them to their normal equivalents. + \let-\normaldash \let_\normalunderscore + } +} + +% We have this subroutine so that we can handle at least some @value's +% properly in indexes (we call \makevalueexpandable in \indexdummies). +% The command has to be fully expandable (if the variable is set), since +% the result winds up in the index file. This means that if the +% variable's value contains other Texinfo commands, it's almost certain +% it will fail (although perhaps we could fix that with sufficient work +% to do a one-level expansion on the result, instead of complete). +% +\def\expandablevalue#1{% + \expandafter\ifx\csname SET#1\endcsname\relax + {[No value for ``#1'']}% + \message{Variable `#1', used in @value, is not set.}% + \else + \csname SET#1\endcsname + \fi +} + +% @ifset VAR ... @end ifset reads the `...' iff VAR has been defined +% with @set. +% +% To get special treatment of `@end ifset,' call \makeond and the redefine. +% +\makecond{ifset} +\def\ifset{\parsearg{\doifset{\let\next=\ifsetfail}}} +\def\doifset#1#2{% + {% + \makevalueexpandable + \let\next=\empty + \expandafter\ifx\csname SET#2\endcsname\relax + #1% If not set, redefine \next. + \fi + \expandafter + }\next +} +\def\ifsetfail{\doignore{ifset}} + +% @ifclear VAR ... @end executes the `...' iff VAR has never been +% defined with @set, or has been undefined with @clear. +% +% The `\else' inside the `\doifset' parameter is a trick to reuse the +% above code: if the variable is not set, do nothing, if it is set, +% then redefine \next to \ifclearfail. +% +\makecond{ifclear} +\def\ifclear{\parsearg{\doifset{\else \let\next=\ifclearfail}}} +\def\ifclearfail{\doignore{ifclear}} + +% @ifcommandisdefined CMD ... @end executes the `...' if CMD (written +% without the @) is in fact defined. We can only feasibly check at the +% TeX level, so something like `mathcode' is going to considered +% defined even though it is not a Texinfo command. +% +\makecond{ifcommanddefined} +\def\ifcommanddefined{\parsearg{\doifcmddefined{\let\next=\ifcmddefinedfail}}} +% +\def\doifcmddefined#1#2{{% + \makevalueexpandable + \let\next=\empty + \expandafter\ifx\csname #2\endcsname\relax + #1% If not defined, \let\next as above. + \fi + \expandafter + }\next +} +\def\ifcmddefinedfail{\doignore{ifcommanddefined}} + +% @ifcommandnotdefined CMD ... handled similar to @ifclear above. +\makecond{ifcommandnotdefined} +\def\ifcommandnotdefined{% + \parsearg{\doifcmddefined{\else \let\next=\ifcmdnotdefinedfail}}} +\def\ifcmdnotdefinedfail{\doignore{ifcommandnotdefined}} + +% Set the `txicommandconditionals' variable, so documents have a way to +% test if the @ifcommand...defined conditionals are available. +\set txicommandconditionals + +% @dircategory CATEGORY -- specify a category of the dir file +% which this file should belong to. Ignore this in TeX. +\let\dircategory=\comment + +% @defininfoenclose. +\let\definfoenclose=\comment + + +\message{indexing,} +% Index generation facilities + +% Define \newwrite to be identical to plain tex's \newwrite +% except not \outer, so it can be used within macros and \if's. +\edef\newwrite{\makecsname{ptexnewwrite}} + +% \newindex {foo} defines an index named foo. +% It automatically defines \fooindex such that +% \fooindex ...rest of line... puts an entry in the index foo. +% It also defines \fooindfile to be the number of the output channel for +% the file that accumulates this index. The file's extension is foo. +% The name of an index should be no more than 2 characters long +% for the sake of vms. +% +\def\newindex#1{% + \iflinks + \expandafter\newwrite \csname#1indfile\endcsname + \openout \csname#1indfile\endcsname \jobname.#1 % Open the file + \fi + \expandafter\xdef\csname#1index\endcsname{% % Define @#1index + \noexpand\doindex{#1}} +} + +% @defindex foo == \newindex{foo} +% +\def\defindex{\parsearg\newindex} + +% Define @defcodeindex, like @defindex except put all entries in @code. +% +\def\defcodeindex{\parsearg\newcodeindex} +% +\def\newcodeindex#1{% + \iflinks + \expandafter\newwrite \csname#1indfile\endcsname + \openout \csname#1indfile\endcsname \jobname.#1 + \fi + \expandafter\xdef\csname#1index\endcsname{% + \noexpand\docodeindex{#1}}% +} + + +% @synindex foo bar makes index foo feed into index bar. +% Do this instead of @defindex foo if you don't want it as a separate index. +% +% @syncodeindex foo bar similar, but put all entries made for index foo +% inside @code. +% +\def\synindex#1 #2 {\dosynindex\doindex{#1}{#2}} +\def\syncodeindex#1 #2 {\dosynindex\docodeindex{#1}{#2}} + +% #1 is \doindex or \docodeindex, #2 the index getting redefined (foo), +% #3 the target index (bar). +\def\dosynindex#1#2#3{% + % Only do \closeout if we haven't already done it, else we'll end up + % closing the target index. + \expandafter \ifx\csname donesynindex#2\endcsname \relax + % The \closeout helps reduce unnecessary open files; the limit on the + % Acorn RISC OS is a mere 16 files. + \expandafter\closeout\csname#2indfile\endcsname + \expandafter\let\csname donesynindex#2\endcsname = 1 + \fi + % redefine \fooindfile: + \expandafter\let\expandafter\temp\expandafter=\csname#3indfile\endcsname + \expandafter\let\csname#2indfile\endcsname=\temp + % redefine \fooindex: + \expandafter\xdef\csname#2index\endcsname{\noexpand#1{#3}}% +} + +% Define \doindex, the driver for all \fooindex macros. +% Argument #1 is generated by the calling \fooindex macro, +% and it is "foo", the name of the index. + +% \doindex just uses \parsearg; it calls \doind for the actual work. +% This is because \doind is more useful to call from other macros. + +% There is also \dosubind {index}{topic}{subtopic} +% which makes an entry in a two-level index such as the operation index. + +\def\doindex#1{\edef\indexname{#1}\parsearg\singleindexer} +\def\singleindexer #1{\doind{\indexname}{#1}} + +% like the previous two, but they put @code around the argument. +\def\docodeindex#1{\edef\indexname{#1}\parsearg\singlecodeindexer} +\def\singlecodeindexer #1{\doind{\indexname}{\code{#1}}} + +% Take care of Texinfo commands that can appear in an index entry. +% Since there are some commands we want to expand, and others we don't, +% we have to laboriously prevent expansion for those that we don't. +% +\def\indexdummies{% + \escapechar = `\\ % use backslash in output files. + \def\@{@}% change to @@ when we switch to @ as escape char in index files. + \def\ {\realbackslash\space }% + % + % Need these unexpandable (because we define \tt as a dummy) + % definitions when @{ or @} appear in index entry text. Also, more + % complicated, when \tex is in effect and \{ is a \delimiter again. + % We can't use \lbracecmd and \rbracecmd because texindex assumes + % braces and backslashes are used only as delimiters. Perhaps we + % should define @lbrace and @rbrace commands a la @comma. + \def\{{{\tt\char123}}% + \def\}{{\tt\char125}}% + % + % I don't entirely understand this, but when an index entry is + % generated from a macro call, the \endinput which \scanmacro inserts + % causes processing to be prematurely terminated. This is, + % apparently, because \indexsorttmp is fully expanded, and \endinput + % is an expandable command. The redefinition below makes \endinput + % disappear altogether for that purpose -- although logging shows that + % processing continues to some further point. On the other hand, it + % seems \endinput does not hurt in the printed index arg, since that + % is still getting written without apparent harm. + % + % Sample source (mac-idx3.tex, reported by Graham Percival to + % help-texinfo, 22may06): + % @macro funindex {WORD} + % @findex xyz + % @end macro + % ... + % @funindex commtest + % + % The above is not enough to reproduce the bug, but it gives the flavor. + % + % Sample whatsit resulting: + % .@write3{\entry{xyz}{@folio }{@code {xyz@endinput }}} + % + % So: + \let\endinput = \empty + % + % Do the redefinitions. + \commondummies +} + +% For the aux and toc files, @ is the escape character. So we want to +% redefine everything using @ as the escape character (instead of +% \realbackslash, still used for index files). When everything uses @, +% this will be simpler. +% +\def\atdummies{% + \def\@{@@}% + \def\ {@ }% + \let\{ = \lbraceatcmd + \let\} = \rbraceatcmd + % + % Do the redefinitions. + \commondummies + \otherbackslash +} + +% Called from \indexdummies and \atdummies. +% +\def\commondummies{% + % + % \definedummyword defines \#1 as \string\#1\space, thus effectively + % preventing its expansion. This is used only for control words, + % not control letters, because the \space would be incorrect for + % control characters, but is needed to separate the control word + % from whatever follows. + % + % For control letters, we have \definedummyletter, which omits the + % space. + % + % These can be used both for control words that take an argument and + % those that do not. If it is followed by {arg} in the input, then + % that will dutifully get written to the index (or wherever). + % + \def\definedummyword ##1{\def##1{\string##1\space}}% + \def\definedummyletter##1{\def##1{\string##1}}% + \let\definedummyaccent\definedummyletter + % + \commondummiesnofonts + % + \definedummyletter\_% + \definedummyletter\-% + % + % Non-English letters. + \definedummyword\AA + \definedummyword\AE + \definedummyword\DH + \definedummyword\L + \definedummyword\O + \definedummyword\OE + \definedummyword\TH + \definedummyword\aa + \definedummyword\ae + \definedummyword\dh + \definedummyword\exclamdown + \definedummyword\l + \definedummyword\o + \definedummyword\oe + \definedummyword\ordf + \definedummyword\ordm + \definedummyword\questiondown + \definedummyword\ss + \definedummyword\th + % + % Although these internal commands shouldn't show up, sometimes they do. + \definedummyword\bf + \definedummyword\gtr + \definedummyword\hat + \definedummyword\less + \definedummyword\sf + \definedummyword\sl + \definedummyword\tclose + \definedummyword\tt + % + \definedummyword\LaTeX + \definedummyword\TeX + % + % Assorted special characters. + \definedummyword\arrow + \definedummyword\bullet + \definedummyword\comma + \definedummyword\copyright + \definedummyword\registeredsymbol + \definedummyword\dots + \definedummyword\enddots + \definedummyword\entrybreak + \definedummyword\equiv + \definedummyword\error + \definedummyword\euro + \definedummyword\expansion + \definedummyword\geq + \definedummyword\guillemetleft + \definedummyword\guillemetright + \definedummyword\guilsinglleft + \definedummyword\guilsinglright + \definedummyword\lbracechar + \definedummyword\leq + \definedummyword\minus + \definedummyword\ogonek + \definedummyword\pounds + \definedummyword\point + \definedummyword\print + \definedummyword\quotedblbase + \definedummyword\quotedblleft + \definedummyword\quotedblright + \definedummyword\quoteleft + \definedummyword\quoteright + \definedummyword\quotesinglbase + \definedummyword\rbracechar + \definedummyword\result + \definedummyword\textdegree + % + % We want to disable all macros so that they are not expanded by \write. + \macrolist + % + \normalturnoffactive + % + % Handle some cases of @value -- where it does not contain any + % (non-fully-expandable) commands. + \makevalueexpandable +} + +% \commondummiesnofonts: common to \commondummies and \indexnofonts. +% +\def\commondummiesnofonts{% + % Control letters and accents. + \definedummyletter\!% + \definedummyaccent\"% + \definedummyaccent\'% + \definedummyletter\*% + \definedummyaccent\,% + \definedummyletter\.% + \definedummyletter\/% + \definedummyletter\:% + \definedummyaccent\=% + \definedummyletter\?% + \definedummyaccent\^% + \definedummyaccent\`% + \definedummyaccent\~% + \definedummyword\u + \definedummyword\v + \definedummyword\H + \definedummyword\dotaccent + \definedummyword\ogonek + \definedummyword\ringaccent + \definedummyword\tieaccent + \definedummyword\ubaraccent + \definedummyword\udotaccent + \definedummyword\dotless + % + % Texinfo font commands. + \definedummyword\b + \definedummyword\i + \definedummyword\r + \definedummyword\sansserif + \definedummyword\sc + \definedummyword\slanted + \definedummyword\t + % + % Commands that take arguments. + \definedummyword\abbr + \definedummyword\acronym + \definedummyword\anchor + \definedummyword\cite + \definedummyword\code + \definedummyword\command + \definedummyword\dfn + \definedummyword\dmn + \definedummyword\email + \definedummyword\emph + \definedummyword\env + \definedummyword\file + \definedummyword\image + \definedummyword\indicateurl + \definedummyword\inforef + \definedummyword\kbd + \definedummyword\key + \definedummyword\math + \definedummyword\option + \definedummyword\pxref + \definedummyword\ref + \definedummyword\samp + \definedummyword\strong + \definedummyword\tie + \definedummyword\uref + \definedummyword\url + \definedummyword\var + \definedummyword\verb + \definedummyword\w + \definedummyword\xref +} + +% \indexnofonts is used when outputting the strings to sort the index +% by, and when constructing control sequence names. It eliminates all +% control sequences and just writes whatever the best ASCII sort string +% would be for a given command (usually its argument). +% +\def\indexnofonts{% + % Accent commands should become @asis. + \def\definedummyaccent##1{\let##1\asis}% + % We can just ignore other control letters. + \def\definedummyletter##1{\let##1\empty}% + % All control words become @asis by default; overrides below. + \let\definedummyword\definedummyaccent + % + \commondummiesnofonts + % + % Don't no-op \tt, since it isn't a user-level command + % and is used in the definitions of the active chars like <, >, |, etc. + % Likewise with the other plain tex font commands. + %\let\tt=\asis + % + \def\ { }% + \def\@{@}% + \def\_{\normalunderscore}% + \def\-{}% @- shouldn't affect sorting + % + % Unfortunately, texindex is not prepared to handle braces in the + % content at all. So for index sorting, we map @{ and @} to strings + % starting with |, since that ASCII character is between ASCII { and }. + \def\{{|a}% + \def\lbracechar{|a}% + % + \def\}{|b}% + \def\rbracechar{|b}% + % + % Non-English letters. + \def\AA{AA}% + \def\AE{AE}% + \def\DH{DZZ}% + \def\L{L}% + \def\OE{OE}% + \def\O{O}% + \def\TH{ZZZ}% + \def\aa{aa}% + \def\ae{ae}% + \def\dh{dzz}% + \def\exclamdown{!}% + \def\l{l}% + \def\oe{oe}% + \def\ordf{a}% + \def\ordm{o}% + \def\o{o}% + \def\questiondown{?}% + \def\ss{ss}% + \def\th{zzz}% + % + \def\LaTeX{LaTeX}% + \def\TeX{TeX}% + % + % Assorted special characters. + % (The following {} will end up in the sort string, but that's ok.) + \def\arrow{->}% + \def\bullet{bullet}% + \def\comma{,}% + \def\copyright{copyright}% + \def\dots{...}% + \def\enddots{...}% + \def\equiv{==}% + \def\error{error}% + \def\euro{euro}% + \def\expansion{==>}% + \def\geq{>=}% + \def\guillemetleft{<<}% + \def\guillemetright{>>}% + \def\guilsinglleft{<}% + \def\guilsinglright{>}% + \def\leq{<=}% + \def\minus{-}% + \def\point{.}% + \def\pounds{pounds}% + \def\print{-|}% + \def\quotedblbase{"}% + \def\quotedblleft{"}% + \def\quotedblright{"}% + \def\quoteleft{`}% + \def\quoteright{'}% + \def\quotesinglbase{,}% + \def\registeredsymbol{R}% + \def\result{=>}% + \def\textdegree{o}% + % + \expandafter\ifx\csname SETtxiindexlquoteignore\endcsname\relax + \else \indexlquoteignore \fi + % + % We need to get rid of all macros, leaving only the arguments (if present). + % Of course this is not nearly correct, but it is the best we can do for now. + % makeinfo does not expand macros in the argument to @deffn, which ends up + % writing an index entry, and texindex isn't prepared for an index sort entry + % that starts with \. + % + % Since macro invocations are followed by braces, we can just redefine them + % to take a single TeX argument. The case of a macro invocation that + % goes to end-of-line is not handled. + % + \macrolist +} + +% Undocumented (for FSFS 2nd ed.): @set txiindexlquoteignore makes us +% ignore left quotes in the sort term. +{\catcode`\`=\active + \gdef\indexlquoteignore{\let`=\empty}} + +\let\indexbackslash=0 %overridden during \printindex. +\let\SETmarginindex=\relax % put index entries in margin (undocumented)? + +% Most index entries go through here, but \dosubind is the general case. +% #1 is the index name, #2 is the entry text. +\def\doind#1#2{\dosubind{#1}{#2}{}} + +% Workhorse for all \fooindexes. +% #1 is name of index, #2 is stuff to put there, #3 is subentry -- +% empty if called from \doind, as we usually are (the main exception +% is with most defuns, which call us directly). +% +\def\dosubind#1#2#3{% + \iflinks + {% + % Store the main index entry text (including the third arg). + \toks0 = {#2}% + % If third arg is present, precede it with a space. + \def\thirdarg{#3}% + \ifx\thirdarg\empty \else + \toks0 = \expandafter{\the\toks0 \space #3}% + \fi + % + \edef\writeto{\csname#1indfile\endcsname}% + % + \safewhatsit\dosubindwrite + }% + \fi +} + +% Write the entry in \toks0 to the index file: +% +\def\dosubindwrite{% + % Put the index entry in the margin if desired. + \ifx\SETmarginindex\relax\else + \insert\margin{\hbox{\vrule height8pt depth3pt width0pt \the\toks0}}% + \fi + % + % Remember, we are within a group. + \indexdummies % Must do this here, since \bf, etc expand at this stage + \def\backslashcurfont{\indexbackslash}% \indexbackslash isn't defined now + % so it will be output as is; and it will print as backslash. + % + % Process the index entry with all font commands turned off, to + % get the string to sort by. + {\indexnofonts + \edef\temp{\the\toks0}% need full expansion + \xdef\indexsorttmp{\temp}% + }% + % + % Set up the complete index entry, with both the sort key and + % the original text, including any font commands. We write + % three arguments to \entry to the .?? file (four in the + % subentry case), texindex reduces to two when writing the .??s + % sorted result. + \edef\temp{% + \write\writeto{% + \string\entry{\indexsorttmp}{\noexpand\folio}{\the\toks0}}% + }% + \temp +} + +% Take care of unwanted page breaks/skips around a whatsit: +% +% If a skip is the last thing on the list now, preserve it +% by backing up by \lastskip, doing the \write, then inserting +% the skip again. Otherwise, the whatsit generated by the +% \write or \pdfdest will make \lastskip zero. The result is that +% sequences like this: +% @end defun +% @tindex whatever +% @defun ... +% will have extra space inserted, because the \medbreak in the +% start of the @defun won't see the skip inserted by the @end of +% the previous defun. +% +% But don't do any of this if we're not in vertical mode. We +% don't want to do a \vskip and prematurely end a paragraph. +% +% Avoid page breaks due to these extra skips, too. +% +% But wait, there is a catch there: +% We'll have to check whether \lastskip is zero skip. \ifdim is not +% sufficient for this purpose, as it ignores stretch and shrink parts +% of the skip. The only way seems to be to check the textual +% representation of the skip. +% +% The following is almost like \def\zeroskipmacro{0.0pt} except that +% the ``p'' and ``t'' characters have catcode \other, not 11 (letter). +% +\edef\zeroskipmacro{\expandafter\the\csname z@skip\endcsname} +% +\newskip\whatsitskip +\newcount\whatsitpenalty +% +% ..., ready, GO: +% +\def\safewhatsit#1{\ifhmode + #1% + \else + % \lastskip and \lastpenalty cannot both be nonzero simultaneously. + \whatsitskip = \lastskip + \edef\lastskipmacro{\the\lastskip}% + \whatsitpenalty = \lastpenalty + % + % If \lastskip is nonzero, that means the last item was a + % skip. And since a skip is discardable, that means this + % -\whatsitskip glue we're inserting is preceded by a + % non-discardable item, therefore it is not a potential + % breakpoint, therefore no \nobreak needed. + \ifx\lastskipmacro\zeroskipmacro + \else + \vskip-\whatsitskip + \fi + % + #1% + % + \ifx\lastskipmacro\zeroskipmacro + % If \lastskip was zero, perhaps the last item was a penalty, and + % perhaps it was >=10000, e.g., a \nobreak. In that case, we want + % to re-insert the same penalty (values >10000 are used for various + % signals); since we just inserted a non-discardable item, any + % following glue (such as a \parskip) would be a breakpoint. For example: + % @deffn deffn-whatever + % @vindex index-whatever + % Description. + % would allow a break between the index-whatever whatsit + % and the "Description." paragraph. + \ifnum\whatsitpenalty>9999 \penalty\whatsitpenalty \fi + \else + % On the other hand, if we had a nonzero \lastskip, + % this make-up glue would be preceded by a non-discardable item + % (the whatsit from the \write), so we must insert a \nobreak. + \nobreak\vskip\whatsitskip + \fi +\fi} + +% The index entry written in the file actually looks like +% \entry {sortstring}{page}{topic} +% or +% \entry {sortstring}{page}{topic}{subtopic} +% The texindex program reads in these files and writes files +% containing these kinds of lines: +% \initial {c} +% before the first topic whose initial is c +% \entry {topic}{pagelist} +% for a topic that is used without subtopics +% \primary {topic} +% for the beginning of a topic that is used with subtopics +% \secondary {subtopic}{pagelist} +% for each subtopic. + +% Define the user-accessible indexing commands +% @findex, @vindex, @kindex, @cindex. + +\def\findex {\fnindex} +\def\kindex {\kyindex} +\def\cindex {\cpindex} +\def\vindex {\vrindex} +\def\tindex {\tpindex} +\def\pindex {\pgindex} + +\def\cindexsub {\begingroup\obeylines\cindexsub} +{\obeylines % +\gdef\cindexsub "#1" #2^^M{\endgroup % +\dosubind{cp}{#2}{#1}}} + +% Define the macros used in formatting output of the sorted index material. + +% @printindex causes a particular index (the ??s file) to get printed. +% It does not print any chapter heading (usually an @unnumbered). +% +\parseargdef\printindex{\begingroup + \dobreak \chapheadingskip{10000}% + % + \smallfonts \rm + \tolerance = 9500 + \plainfrenchspacing + \everypar = {}% don't want the \kern\-parindent from indentation suppression. + % + % See if the index file exists and is nonempty. + % Change catcode of @ here so that if the index file contains + % \initial {@} + % as its first line, TeX doesn't complain about mismatched braces + % (because it thinks @} is a control sequence). + \catcode`\@ = 11 + \openin 1 \jobname.#1s + \ifeof 1 + % \enddoublecolumns gets confused if there is no text in the index, + % and it loses the chapter title and the aux file entries for the + % index. The easiest way to prevent this problem is to make sure + % there is some text. + \putwordIndexNonexistent + \else + % + % If the index file exists but is empty, then \openin leaves \ifeof + % false. We have to make TeX try to read something from the file, so + % it can discover if there is anything in it. + \read 1 to \temp + \ifeof 1 + \putwordIndexIsEmpty + \else + % Index files are almost Texinfo source, but we use \ as the escape + % character. It would be better to use @, but that's too big a change + % to make right now. + \def\indexbackslash{\backslashcurfont}% + \catcode`\\ = 0 + \escapechar = `\\ + \begindoublecolumns + \input \jobname.#1s + \enddoublecolumns + \fi + \fi + \closein 1 +\endgroup} + +% These macros are used by the sorted index file itself. +% Change them to control the appearance of the index. + +\def\initial#1{{% + % Some minor font changes for the special characters. + \let\tentt=\sectt \let\tt=\sectt \let\sf=\sectt + % + % Remove any glue we may have, we'll be inserting our own. + \removelastskip + % + % We like breaks before the index initials, so insert a bonus. + \nobreak + \vskip 0pt plus 3\baselineskip + \penalty 0 + \vskip 0pt plus -3\baselineskip + % + % Typeset the initial. Making this add up to a whole number of + % baselineskips increases the chance of the dots lining up from column + % to column. It still won't often be perfect, because of the stretch + % we need before each entry, but it's better. + % + % No shrink because it confuses \balancecolumns. + \vskip 1.67\baselineskip plus .5\baselineskip + \leftline{\secbf #1}% + % Do our best not to break after the initial. + \nobreak + \vskip .33\baselineskip plus .1\baselineskip +}} + +% \entry typesets a paragraph consisting of the text (#1), dot leaders, and +% then page number (#2) flushed to the right margin. It is used for index +% and table of contents entries. The paragraph is indented by \leftskip. +% +% A straightforward implementation would start like this: +% \def\entry#1#2{... +% But this freezes the catcodes in the argument, and can cause problems to +% @code, which sets - active. This problem was fixed by a kludge--- +% ``-'' was active throughout whole index, but this isn't really right. +% The right solution is to prevent \entry from swallowing the whole text. +% --kasal, 21nov03 +\def\entry{% + \begingroup + % + % Start a new paragraph if necessary, so our assignments below can't + % affect previous text. + \par + % + % Do not fill out the last line with white space. + \parfillskip = 0in + % + % No extra space above this paragraph. + \parskip = 0in + % + % Do not prefer a separate line ending with a hyphen to fewer lines. + \finalhyphendemerits = 0 + % + % \hangindent is only relevant when the entry text and page number + % don't both fit on one line. In that case, bob suggests starting the + % dots pretty far over on the line. Unfortunately, a large + % indentation looks wrong when the entry text itself is broken across + % lines. So we use a small indentation and put up with long leaders. + % + % \hangafter is reset to 1 (which is the value we want) at the start + % of each paragraph, so we need not do anything with that. + \hangindent = 2em + % + % When the entry text needs to be broken, just fill out the first line + % with blank space. + \rightskip = 0pt plus1fil + % + % A bit of stretch before each entry for the benefit of balancing + % columns. + \vskip 0pt plus1pt + % + % When reading the text of entry, convert explicit line breaks + % from @* into spaces. The user might give these in long section + % titles, for instance. + \def\*{\unskip\space\ignorespaces}% + \def\entrybreak{\hfil\break}% + % + % Swallow the left brace of the text (first parameter): + \afterassignment\doentry + \let\temp = +} +\def\entrybreak{\unskip\space\ignorespaces}% +\def\doentry{% + \bgroup % Instead of the swallowed brace. + \noindent + \aftergroup\finishentry + % And now comes the text of the entry. +} +\def\finishentry#1{% + % #1 is the page number. + % + % The following is kludged to not output a line of dots in the index if + % there are no page numbers. The next person who breaks this will be + % cursed by a Unix daemon. + \setbox\boxA = \hbox{#1}% + \ifdim\wd\boxA = 0pt + \ % + \else + % + % If we must, put the page number on a line of its own, and fill out + % this line with blank space. (The \hfil is overwhelmed with the + % fill leaders glue in \indexdotfill if the page number does fit.) + \hfil\penalty50 + \null\nobreak\indexdotfill % Have leaders before the page number. + % + % The `\ ' here is removed by the implicit \unskip that TeX does as + % part of (the primitive) \par. Without it, a spurious underfull + % \hbox ensues. + \ifpdf + \pdfgettoks#1.% + \ \the\toksA + \else + \ #1% + \fi + \fi + \par + \endgroup +} + +% Like plain.tex's \dotfill, except uses up at least 1 em. +\def\indexdotfill{\cleaders + \hbox{$\mathsurround=0pt \mkern1.5mu.\mkern1.5mu$}\hskip 1em plus 1fill} + +\def\primary #1{\line{#1\hfil}} + +\newskip\secondaryindent \secondaryindent=0.5cm +\def\secondary#1#2{{% + \parfillskip=0in + \parskip=0in + \hangindent=1in + \hangafter=1 + \noindent\hskip\secondaryindent\hbox{#1}\indexdotfill + \ifpdf + \pdfgettoks#2.\ \the\toksA % The page number ends the paragraph. + \else + #2 + \fi + \par +}} + +% Define two-column mode, which we use to typeset indexes. +% Adapted from the TeXbook, page 416, which is to say, +% the manmac.tex format used to print the TeXbook itself. +\catcode`\@=11 + +\newbox\partialpage +\newdimen\doublecolumnhsize + +\def\begindoublecolumns{\begingroup % ended by \enddoublecolumns + % Grab any single-column material above us. + \output = {% + % + % Here is a possibility not foreseen in manmac: if we accumulate a + % whole lot of material, we might end up calling this \output + % routine twice in a row (see the doublecol-lose test, which is + % essentially a couple of indexes with @setchapternewpage off). In + % that case we just ship out what is in \partialpage with the normal + % output routine. Generally, \partialpage will be empty when this + % runs and this will be a no-op. See the indexspread.tex test case. + \ifvoid\partialpage \else + \onepageout{\pagecontents\partialpage}% + \fi + % + \global\setbox\partialpage = \vbox{% + % Unvbox the main output page. + \unvbox\PAGE + \kern-\topskip \kern\baselineskip + }% + }% + \eject % run that output routine to set \partialpage + % + % Use the double-column output routine for subsequent pages. + \output = {\doublecolumnout}% + % + % Change the page size parameters. We could do this once outside this + % routine, in each of @smallbook, @afourpaper, and the default 8.5x11 + % format, but then we repeat the same computation. Repeating a couple + % of assignments once per index is clearly meaningless for the + % execution time, so we may as well do it in one place. + % + % First we halve the line length, less a little for the gutter between + % the columns. We compute the gutter based on the line length, so it + % changes automatically with the paper format. The magic constant + % below is chosen so that the gutter has the same value (well, +-<1pt) + % as it did when we hard-coded it. + % + % We put the result in a separate register, \doublecolumhsize, so we + % can restore it in \pagesofar, after \hsize itself has (potentially) + % been clobbered. + % + \doublecolumnhsize = \hsize + \advance\doublecolumnhsize by -.04154\hsize + \divide\doublecolumnhsize by 2 + \hsize = \doublecolumnhsize + % + % Double the \vsize as well. (We don't need a separate register here, + % since nobody clobbers \vsize.) + \vsize = 2\vsize +} + +% The double-column output routine for all double-column pages except +% the last. +% +\def\doublecolumnout{% + \splittopskip=\topskip \splitmaxdepth=\maxdepth + % Get the available space for the double columns -- the normal + % (undoubled) page height minus any material left over from the + % previous page. + \dimen@ = \vsize + \divide\dimen@ by 2 + \advance\dimen@ by -\ht\partialpage + % + % box0 will be the left-hand column, box2 the right. + \setbox0=\vsplit255 to\dimen@ \setbox2=\vsplit255 to\dimen@ + \onepageout\pagesofar + \unvbox255 + \penalty\outputpenalty +} +% +% Re-output the contents of the output page -- any previous material, +% followed by the two boxes we just split, in box0 and box2. +\def\pagesofar{% + \unvbox\partialpage + % + \hsize = \doublecolumnhsize + \wd0=\hsize \wd2=\hsize + \hbox to\pagewidth{\box0\hfil\box2}% +} +% +% All done with double columns. +\def\enddoublecolumns{% + % The following penalty ensures that the page builder is exercised + % _before_ we change the output routine. This is necessary in the + % following situation: + % + % The last section of the index consists only of a single entry. + % Before this section, \pagetotal is less than \pagegoal, so no + % break occurs before the last section starts. However, the last + % section, consisting of \initial and the single \entry, does not + % fit on the page and has to be broken off. Without the following + % penalty the page builder will not be exercised until \eject + % below, and by that time we'll already have changed the output + % routine to the \balancecolumns version, so the next-to-last + % double-column page will be processed with \balancecolumns, which + % is wrong: The two columns will go to the main vertical list, with + % the broken-off section in the recent contributions. As soon as + % the output routine finishes, TeX starts reconsidering the page + % break. The two columns and the broken-off section both fit on the + % page, because the two columns now take up only half of the page + % goal. When TeX sees \eject from below which follows the final + % section, it invokes the new output routine that we've set after + % \balancecolumns below; \onepageout will try to fit the two columns + % and the final section into the vbox of \pageheight (see + % \pagebody), causing an overfull box. + % + % Note that glue won't work here, because glue does not exercise the + % page builder, unlike penalties (see The TeXbook, pp. 280-281). + \penalty0 + % + \output = {% + % Split the last of the double-column material. Leave it on the + % current page, no automatic page break. + \balancecolumns + % + % If we end up splitting too much material for the current page, + % though, there will be another page break right after this \output + % invocation ends. Having called \balancecolumns once, we do not + % want to call it again. Therefore, reset \output to its normal + % definition right away. (We hope \balancecolumns will never be + % called on to balance too much material, but if it is, this makes + % the output somewhat more palatable.) + \global\output = {\onepageout{\pagecontents\PAGE}}% + }% + \eject + \endgroup % started in \begindoublecolumns + % + % \pagegoal was set to the doubled \vsize above, since we restarted + % the current page. We're now back to normal single-column + % typesetting, so reset \pagegoal to the normal \vsize (after the + % \endgroup where \vsize got restored). + \pagegoal = \vsize +} +% +% Called at the end of the double column material. +\def\balancecolumns{% + \setbox0 = \vbox{\unvbox255}% like \box255 but more efficient, see p.120. + \dimen@ = \ht0 + \advance\dimen@ by \topskip + \advance\dimen@ by-\baselineskip + \divide\dimen@ by 2 % target to split to + %debug\message{final 2-column material height=\the\ht0, target=\the\dimen@.}% + \splittopskip = \topskip + % Loop until we get a decent breakpoint. + {% + \vbadness = 10000 + \loop + \global\setbox3 = \copy0 + \global\setbox1 = \vsplit3 to \dimen@ + \ifdim\ht3>\dimen@ + \global\advance\dimen@ by 1pt + \repeat + }% + %debug\message{split to \the\dimen@, column heights: \the\ht1, \the\ht3.}% + \setbox0=\vbox to\dimen@{\unvbox1}% + \setbox2=\vbox to\dimen@{\unvbox3}% + % + \pagesofar +} +\catcode`\@ = \other + + +\message{sectioning,} +% Chapters, sections, etc. + +% Let's start with @part. +\outer\parseargdef\part{\partzzz{#1}} +\def\partzzz#1{% + \chapoddpage + \null + \vskip.3\vsize % move it down on the page a bit + \begingroup + \noindent \titlefonts\rmisbold #1\par % the text + \let\lastnode=\empty % no node to associate with + \writetocentry{part}{#1}{}% but put it in the toc + \headingsoff % no headline or footline on the part page + \chapoddpage + \endgroup +} + +% \unnumberedno is an oxymoron. But we count the unnumbered +% sections so that we can refer to them unambiguously in the pdf +% outlines by their "section number". We avoid collisions with chapter +% numbers by starting them at 10000. (If a document ever has 10000 +% chapters, we're in trouble anyway, I'm sure.) +\newcount\unnumberedno \unnumberedno = 10000 +\newcount\chapno +\newcount\secno \secno=0 +\newcount\subsecno \subsecno=0 +\newcount\subsubsecno \subsubsecno=0 + +% This counter is funny since it counts through charcodes of letters A, B, ... +\newcount\appendixno \appendixno = `\@ +% +% \def\appendixletter{\char\the\appendixno} +% We do the following ugly conditional instead of the above simple +% construct for the sake of pdftex, which needs the actual +% letter in the expansion, not just typeset. +% +\def\appendixletter{% + \ifnum\appendixno=`A A% + \else\ifnum\appendixno=`B B% + \else\ifnum\appendixno=`C C% + \else\ifnum\appendixno=`D D% + \else\ifnum\appendixno=`E E% + \else\ifnum\appendixno=`F F% + \else\ifnum\appendixno=`G G% + \else\ifnum\appendixno=`H H% + \else\ifnum\appendixno=`I I% + \else\ifnum\appendixno=`J J% + \else\ifnum\appendixno=`K K% + \else\ifnum\appendixno=`L L% + \else\ifnum\appendixno=`M M% + \else\ifnum\appendixno=`N N% + \else\ifnum\appendixno=`O O% + \else\ifnum\appendixno=`P P% + \else\ifnum\appendixno=`Q Q% + \else\ifnum\appendixno=`R R% + \else\ifnum\appendixno=`S S% + \else\ifnum\appendixno=`T T% + \else\ifnum\appendixno=`U U% + \else\ifnum\appendixno=`V V% + \else\ifnum\appendixno=`W W% + \else\ifnum\appendixno=`X X% + \else\ifnum\appendixno=`Y Y% + \else\ifnum\appendixno=`Z Z% + % The \the is necessary, despite appearances, because \appendixletter is + % expanded while writing the .toc file. \char\appendixno is not + % expandable, thus it is written literally, thus all appendixes come out + % with the same letter (or @) in the toc without it. + \else\char\the\appendixno + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi} + +% Each @chapter defines these (using marks) as the number+name, number +% and name of the chapter. Page headings and footings can use +% these. @section does likewise. +\def\thischapter{} +\def\thischapternum{} +\def\thischaptername{} +\def\thissection{} +\def\thissectionnum{} +\def\thissectionname{} + +\newcount\absseclevel % used to calculate proper heading level +\newcount\secbase\secbase=0 % @raisesections/@lowersections modify this count + +% @raisesections: treat @section as chapter, @subsection as section, etc. +\def\raisesections{\global\advance\secbase by -1} +\let\up=\raisesections % original BFox name + +% @lowersections: treat @chapter as section, @section as subsection, etc. +\def\lowersections{\global\advance\secbase by 1} +\let\down=\lowersections % original BFox name + +% we only have subsub. +\chardef\maxseclevel = 3 +% +% A numbered section within an unnumbered changes to unnumbered too. +% To achieve this, remember the "biggest" unnum. sec. we are currently in: +\chardef\unnlevel = \maxseclevel +% +% Trace whether the current chapter is an appendix or not: +% \chapheadtype is "N" or "A", unnumbered chapters are ignored. +\def\chapheadtype{N} + +% Choose a heading macro +% #1 is heading type +% #2 is heading level +% #3 is text for heading +\def\genhead#1#2#3{% + % Compute the abs. sec. level: + \absseclevel=#2 + \advance\absseclevel by \secbase + % Make sure \absseclevel doesn't fall outside the range: + \ifnum \absseclevel < 0 + \absseclevel = 0 + \else + \ifnum \absseclevel > 3 + \absseclevel = 3 + \fi + \fi + % The heading type: + \def\headtype{#1}% + \if \headtype U% + \ifnum \absseclevel < \unnlevel + \chardef\unnlevel = \absseclevel + \fi + \else + % Check for appendix sections: + \ifnum \absseclevel = 0 + \edef\chapheadtype{\headtype}% + \else + \if \headtype A\if \chapheadtype N% + \errmessage{@appendix... within a non-appendix chapter}% + \fi\fi + \fi + % Check for numbered within unnumbered: + \ifnum \absseclevel > \unnlevel + \def\headtype{U}% + \else + \chardef\unnlevel = 3 + \fi + \fi + % Now print the heading: + \if \headtype U% + \ifcase\absseclevel + \unnumberedzzz{#3}% + \or \unnumberedseczzz{#3}% + \or \unnumberedsubseczzz{#3}% + \or \unnumberedsubsubseczzz{#3}% + \fi + \else + \if \headtype A% + \ifcase\absseclevel + \appendixzzz{#3}% + \or \appendixsectionzzz{#3}% + \or \appendixsubseczzz{#3}% + \or \appendixsubsubseczzz{#3}% + \fi + \else + \ifcase\absseclevel + \chapterzzz{#3}% + \or \seczzz{#3}% + \or \numberedsubseczzz{#3}% + \or \numberedsubsubseczzz{#3}% + \fi + \fi + \fi + \suppressfirstparagraphindent +} + +% an interface: +\def\numhead{\genhead N} +\def\apphead{\genhead A} +\def\unnmhead{\genhead U} + +% @chapter, @appendix, @unnumbered. Increment top-level counter, reset +% all lower-level sectioning counters to zero. +% +% Also set \chaplevelprefix, which we prepend to @float sequence numbers +% (e.g., figures), q.v. By default (before any chapter), that is empty. +\let\chaplevelprefix = \empty +% +\outer\parseargdef\chapter{\numhead0{#1}} % normally numhead0 calls chapterzzz +\def\chapterzzz#1{% + % section resetting is \global in case the chapter is in a group, such + % as an @include file. + \global\secno=0 \global\subsecno=0 \global\subsubsecno=0 + \global\advance\chapno by 1 + % + % Used for \float. + \gdef\chaplevelprefix{\the\chapno.}% + \resetallfloatnos + % + % \putwordChapter can contain complex things in translations. + \toks0=\expandafter{\putwordChapter}% + \message{\the\toks0 \space \the\chapno}% + % + % Write the actual heading. + \chapmacro{#1}{Ynumbered}{\the\chapno}% + % + % So @section and the like are numbered underneath this chapter. + \global\let\section = \numberedsec + \global\let\subsection = \numberedsubsec + \global\let\subsubsection = \numberedsubsubsec +} + +\outer\parseargdef\appendix{\apphead0{#1}} % normally calls appendixzzz +% +\def\appendixzzz#1{% + \global\secno=0 \global\subsecno=0 \global\subsubsecno=0 + \global\advance\appendixno by 1 + \gdef\chaplevelprefix{\appendixletter.}% + \resetallfloatnos + % + % \putwordAppendix can contain complex things in translations. + \toks0=\expandafter{\putwordAppendix}% + \message{\the\toks0 \space \appendixletter}% + % + \chapmacro{#1}{Yappendix}{\appendixletter}% + % + \global\let\section = \appendixsec + \global\let\subsection = \appendixsubsec + \global\let\subsubsection = \appendixsubsubsec +} + +% normally unnmhead0 calls unnumberedzzz: +\outer\parseargdef\unnumbered{\unnmhead0{#1}} +\def\unnumberedzzz#1{% + \global\secno=0 \global\subsecno=0 \global\subsubsecno=0 + \global\advance\unnumberedno by 1 + % + % Since an unnumbered has no number, no prefix for figures. + \global\let\chaplevelprefix = \empty + \resetallfloatnos + % + % This used to be simply \message{#1}, but TeX fully expands the + % argument to \message. Therefore, if #1 contained @-commands, TeX + % expanded them. For example, in `@unnumbered The @cite{Book}', TeX + % expanded @cite (which turns out to cause errors because \cite is meant + % to be executed, not expanded). + % + % Anyway, we don't want the fully-expanded definition of @cite to appear + % as a result of the \message, we just want `@cite' itself. We use + % \the to achieve this: TeX expands \the only once, + % simply yielding the contents of . (We also do this for + % the toc entries.) + \toks0 = {#1}% + \message{(\the\toks0)}% + % + \chapmacro{#1}{Ynothing}{\the\unnumberedno}% + % + \global\let\section = \unnumberedsec + \global\let\subsection = \unnumberedsubsec + \global\let\subsubsection = \unnumberedsubsubsec +} + +% @centerchap is like @unnumbered, but the heading is centered. +\outer\parseargdef\centerchap{% + % Well, we could do the following in a group, but that would break + % an assumption that \chapmacro is called at the outermost level. + % Thus we are safer this way: --kasal, 24feb04 + \let\centerparametersmaybe = \centerparameters + \unnmhead0{#1}% + \let\centerparametersmaybe = \relax +} + +% @top is like @unnumbered. +\let\top\unnumbered + +% Sections. +% +\outer\parseargdef\numberedsec{\numhead1{#1}} % normally calls seczzz +\def\seczzz#1{% + \global\subsecno=0 \global\subsubsecno=0 \global\advance\secno by 1 + \sectionheading{#1}{sec}{Ynumbered}{\the\chapno.\the\secno}% +} + +% normally calls appendixsectionzzz: +\outer\parseargdef\appendixsection{\apphead1{#1}} +\def\appendixsectionzzz#1{% + \global\subsecno=0 \global\subsubsecno=0 \global\advance\secno by 1 + \sectionheading{#1}{sec}{Yappendix}{\appendixletter.\the\secno}% +} +\let\appendixsec\appendixsection + +% normally calls unnumberedseczzz: +\outer\parseargdef\unnumberedsec{\unnmhead1{#1}} +\def\unnumberedseczzz#1{% + \global\subsecno=0 \global\subsubsecno=0 \global\advance\secno by 1 + \sectionheading{#1}{sec}{Ynothing}{\the\unnumberedno.\the\secno}% +} + +% Subsections. +% +% normally calls numberedsubseczzz: +\outer\parseargdef\numberedsubsec{\numhead2{#1}} +\def\numberedsubseczzz#1{% + \global\subsubsecno=0 \global\advance\subsecno by 1 + \sectionheading{#1}{subsec}{Ynumbered}{\the\chapno.\the\secno.\the\subsecno}% +} + +% normally calls appendixsubseczzz: +\outer\parseargdef\appendixsubsec{\apphead2{#1}} +\def\appendixsubseczzz#1{% + \global\subsubsecno=0 \global\advance\subsecno by 1 + \sectionheading{#1}{subsec}{Yappendix}% + {\appendixletter.\the\secno.\the\subsecno}% +} + +% normally calls unnumberedsubseczzz: +\outer\parseargdef\unnumberedsubsec{\unnmhead2{#1}} +\def\unnumberedsubseczzz#1{% + \global\subsubsecno=0 \global\advance\subsecno by 1 + \sectionheading{#1}{subsec}{Ynothing}% + {\the\unnumberedno.\the\secno.\the\subsecno}% +} + +% Subsubsections. +% +% normally numberedsubsubseczzz: +\outer\parseargdef\numberedsubsubsec{\numhead3{#1}} +\def\numberedsubsubseczzz#1{% + \global\advance\subsubsecno by 1 + \sectionheading{#1}{subsubsec}{Ynumbered}% + {\the\chapno.\the\secno.\the\subsecno.\the\subsubsecno}% +} + +% normally appendixsubsubseczzz: +\outer\parseargdef\appendixsubsubsec{\apphead3{#1}} +\def\appendixsubsubseczzz#1{% + \global\advance\subsubsecno by 1 + \sectionheading{#1}{subsubsec}{Yappendix}% + {\appendixletter.\the\secno.\the\subsecno.\the\subsubsecno}% +} + +% normally unnumberedsubsubseczzz: +\outer\parseargdef\unnumberedsubsubsec{\unnmhead3{#1}} +\def\unnumberedsubsubseczzz#1{% + \global\advance\subsubsecno by 1 + \sectionheading{#1}{subsubsec}{Ynothing}% + {\the\unnumberedno.\the\secno.\the\subsecno.\the\subsubsecno}% +} + +% These macros control what the section commands do, according +% to what kind of chapter we are in (ordinary, appendix, or unnumbered). +% Define them by default for a numbered chapter. +\let\section = \numberedsec +\let\subsection = \numberedsubsec +\let\subsubsection = \numberedsubsubsec + +% Define @majorheading, @heading and @subheading + +\def\majorheading{% + {\advance\chapheadingskip by 10pt \chapbreak }% + \parsearg\chapheadingzzz +} + +\def\chapheading{\chapbreak \parsearg\chapheadingzzz} +\def\chapheadingzzz#1{% + \vbox{\chapfonts \raggedtitlesettings #1\par}% + \nobreak\bigskip \nobreak + \suppressfirstparagraphindent +} + +% @heading, @subheading, @subsubheading. +\parseargdef\heading{\sectionheading{#1}{sec}{Yomitfromtoc}{} + \suppressfirstparagraphindent} +\parseargdef\subheading{\sectionheading{#1}{subsec}{Yomitfromtoc}{} + \suppressfirstparagraphindent} +\parseargdef\subsubheading{\sectionheading{#1}{subsubsec}{Yomitfromtoc}{} + \suppressfirstparagraphindent} + +% These macros generate a chapter, section, etc. heading only +% (including whitespace, linebreaking, etc. around it), +% given all the information in convenient, parsed form. + +% Args are the skip and penalty (usually negative) +\def\dobreak#1#2{\par\ifdim\lastskip<#1\removelastskip\penalty#2\vskip#1\fi} + +% Parameter controlling skip before chapter headings (if needed) +\newskip\chapheadingskip + +% Define plain chapter starts, and page on/off switching for it. +\def\chapbreak{\dobreak \chapheadingskip {-4000}} +\def\chappager{\par\vfill\supereject} +% Because \domark is called before \chapoddpage, the filler page will +% get the headings for the next chapter, which is wrong. But we don't +% care -- we just disable all headings on the filler page. +\def\chapoddpage{% + \chappager + \ifodd\pageno \else + \begingroup + \headingsoff + \null + \chappager + \endgroup + \fi +} + +\def\setchapternewpage #1 {\csname CHAPPAG#1\endcsname} + +\def\CHAPPAGoff{% +\global\let\contentsalignmacro = \chappager +\global\let\pchapsepmacro=\chapbreak +\global\let\pagealignmacro=\chappager} + +\def\CHAPPAGon{% +\global\let\contentsalignmacro = \chappager +\global\let\pchapsepmacro=\chappager +\global\let\pagealignmacro=\chappager +\global\def\HEADINGSon{\HEADINGSsingle}} + +\def\CHAPPAGodd{% +\global\let\contentsalignmacro = \chapoddpage +\global\let\pchapsepmacro=\chapoddpage +\global\let\pagealignmacro=\chapoddpage +\global\def\HEADINGSon{\HEADINGSdouble}} + +\CHAPPAGon + +% Chapter opening. +% +% #1 is the text, #2 is the section type (Ynumbered, Ynothing, +% Yappendix, Yomitfromtoc), #3 the chapter number. +% +% To test against our argument. +\def\Ynothingkeyword{Ynothing} +\def\Yomitfromtockeyword{Yomitfromtoc} +\def\Yappendixkeyword{Yappendix} +% +\def\chapmacro#1#2#3{% + % Insert the first mark before the heading break (see notes for \domark). + \let\prevchapterdefs=\lastchapterdefs + \let\prevsectiondefs=\lastsectiondefs + \gdef\lastsectiondefs{\gdef\thissectionname{}\gdef\thissectionnum{}% + \gdef\thissection{}}% + % + \def\temptype{#2}% + \ifx\temptype\Ynothingkeyword + \gdef\lastchapterdefs{\gdef\thischaptername{#1}\gdef\thischapternum{}% + \gdef\thischapter{\thischaptername}}% + \else\ifx\temptype\Yomitfromtockeyword + \gdef\lastchapterdefs{\gdef\thischaptername{#1}\gdef\thischapternum{}% + \gdef\thischapter{}}% + \else\ifx\temptype\Yappendixkeyword + \toks0={#1}% + \xdef\lastchapterdefs{% + \gdef\noexpand\thischaptername{\the\toks0}% + \gdef\noexpand\thischapternum{\appendixletter}% + % \noexpand\putwordAppendix avoids expanding indigestible + % commands in some of the translations. + \gdef\noexpand\thischapter{\noexpand\putwordAppendix{} + \noexpand\thischapternum: + \noexpand\thischaptername}% + }% + \else + \toks0={#1}% + \xdef\lastchapterdefs{% + \gdef\noexpand\thischaptername{\the\toks0}% + \gdef\noexpand\thischapternum{\the\chapno}% + % \noexpand\putwordChapter avoids expanding indigestible + % commands in some of the translations. + \gdef\noexpand\thischapter{\noexpand\putwordChapter{} + \noexpand\thischapternum: + \noexpand\thischaptername}% + }% + \fi\fi\fi + % + % Output the mark. Pass it through \safewhatsit, to take care of + % the preceding space. + \safewhatsit\domark + % + % Insert the chapter heading break. + \pchapsepmacro + % + % Now the second mark, after the heading break. No break points + % between here and the heading. + \let\prevchapterdefs=\lastchapterdefs + \let\prevsectiondefs=\lastsectiondefs + \domark + % + {% + \chapfonts \rmisbold + % + % Have to define \lastsection before calling \donoderef, because the + % xref code eventually uses it. On the other hand, it has to be called + % after \pchapsepmacro, or the headline will change too soon. + \gdef\lastsection{#1}% + % + % Only insert the separating space if we have a chapter/appendix + % number, and don't print the unnumbered ``number''. + \ifx\temptype\Ynothingkeyword + \setbox0 = \hbox{}% + \def\toctype{unnchap}% + \else\ifx\temptype\Yomitfromtockeyword + \setbox0 = \hbox{}% contents like unnumbered, but no toc entry + \def\toctype{omit}% + \else\ifx\temptype\Yappendixkeyword + \setbox0 = \hbox{\putwordAppendix{} #3\enspace}% + \def\toctype{app}% + \else + \setbox0 = \hbox{#3\enspace}% + \def\toctype{numchap}% + \fi\fi\fi + % + % Write the toc entry for this chapter. Must come before the + % \donoderef, because we include the current node name in the toc + % entry, and \donoderef resets it to empty. + \writetocentry{\toctype}{#1}{#3}% + % + % For pdftex, we have to write out the node definition (aka, make + % the pdfdest) after any page break, but before the actual text has + % been typeset. If the destination for the pdf outline is after the + % text, then jumping from the outline may wind up with the text not + % being visible, for instance under high magnification. + \donoderef{#2}% + % + % Typeset the actual heading. + \nobreak % Avoid page breaks at the interline glue. + \vbox{\raggedtitlesettings \hangindent=\wd0 \centerparametersmaybe + \unhbox0 #1\par}% + }% + \nobreak\bigskip % no page break after a chapter title + \nobreak +} + +% @centerchap -- centered and unnumbered. +\let\centerparametersmaybe = \relax +\def\centerparameters{% + \advance\rightskip by 3\rightskip + \leftskip = \rightskip + \parfillskip = 0pt +} + + +% I don't think this chapter style is supported any more, so I'm not +% updating it with the new noderef stuff. We'll see. --karl, 11aug03. +% +\def\setchapterstyle #1 {\csname CHAPF#1\endcsname} +% +\def\unnchfopen #1{% + \chapoddpage + \vbox{\chapfonts \raggedtitlesettings #1\par}% + \nobreak\bigskip\nobreak +} +\def\chfopen #1#2{\chapoddpage {\chapfonts +\vbox to 3in{\vfil \hbox to\hsize{\hfil #2} \hbox to\hsize{\hfil #1} \vfil}}% +\par\penalty 5000 % +} +\def\centerchfopen #1{% + \chapoddpage + \vbox{\chapfonts \raggedtitlesettings \hfill #1\hfill}% + \nobreak\bigskip \nobreak +} +\def\CHAPFopen{% + \global\let\chapmacro=\chfopen + \global\let\centerchapmacro=\centerchfopen} + + +% Section titles. These macros combine the section number parts and +% call the generic \sectionheading to do the printing. +% +\newskip\secheadingskip +\def\secheadingbreak{\dobreak \secheadingskip{-1000}} + +% Subsection titles. +\newskip\subsecheadingskip +\def\subsecheadingbreak{\dobreak \subsecheadingskip{-500}} + +% Subsubsection titles. +\def\subsubsecheadingskip{\subsecheadingskip} +\def\subsubsecheadingbreak{\subsecheadingbreak} + + +% Print any size, any type, section title. +% +% #1 is the text, #2 is the section level (sec/subsec/subsubsec), #3 is +% the section type for xrefs (Ynumbered, Ynothing, Yappendix), #4 is the +% section number. +% +\def\seckeyword{sec} +% +\def\sectionheading#1#2#3#4{% + {% + \checkenv{}% should not be in an environment. + % + % Switch to the right set of fonts. + \csname #2fonts\endcsname \rmisbold + % + \def\sectionlevel{#2}% + \def\temptype{#3}% + % + % Insert first mark before the heading break (see notes for \domark). + \let\prevsectiondefs=\lastsectiondefs + \ifx\temptype\Ynothingkeyword + \ifx\sectionlevel\seckeyword + \gdef\lastsectiondefs{\gdef\thissectionname{#1}\gdef\thissectionnum{}% + \gdef\thissection{\thissectionname}}% + \fi + \else\ifx\temptype\Yomitfromtockeyword + % Don't redefine \thissection. + \else\ifx\temptype\Yappendixkeyword + \ifx\sectionlevel\seckeyword + \toks0={#1}% + \xdef\lastsectiondefs{% + \gdef\noexpand\thissectionname{\the\toks0}% + \gdef\noexpand\thissectionnum{#4}% + % \noexpand\putwordSection avoids expanding indigestible + % commands in some of the translations. + \gdef\noexpand\thissection{\noexpand\putwordSection{} + \noexpand\thissectionnum: + \noexpand\thissectionname}% + }% + \fi + \else + \ifx\sectionlevel\seckeyword + \toks0={#1}% + \xdef\lastsectiondefs{% + \gdef\noexpand\thissectionname{\the\toks0}% + \gdef\noexpand\thissectionnum{#4}% + % \noexpand\putwordSection avoids expanding indigestible + % commands in some of the translations. + \gdef\noexpand\thissection{\noexpand\putwordSection{} + \noexpand\thissectionnum: + \noexpand\thissectionname}% + }% + \fi + \fi\fi\fi + % + % Go into vertical mode. Usually we'll already be there, but we + % don't want the following whatsit to end up in a preceding paragraph + % if the document didn't happen to have a blank line. + \par + % + % Output the mark. Pass it through \safewhatsit, to take care of + % the preceding space. + \safewhatsit\domark + % + % Insert space above the heading. + \csname #2headingbreak\endcsname + % + % Now the second mark, after the heading break. No break points + % between here and the heading. + \let\prevsectiondefs=\lastsectiondefs + \domark + % + % Only insert the space after the number if we have a section number. + \ifx\temptype\Ynothingkeyword + \setbox0 = \hbox{}% + \def\toctype{unn}% + \gdef\lastsection{#1}% + \else\ifx\temptype\Yomitfromtockeyword + % for @headings -- no section number, don't include in toc, + % and don't redefine \lastsection. + \setbox0 = \hbox{}% + \def\toctype{omit}% + \let\sectionlevel=\empty + \else\ifx\temptype\Yappendixkeyword + \setbox0 = \hbox{#4\enspace}% + \def\toctype{app}% + \gdef\lastsection{#1}% + \else + \setbox0 = \hbox{#4\enspace}% + \def\toctype{num}% + \gdef\lastsection{#1}% + \fi\fi\fi + % + % Write the toc entry (before \donoderef). See comments in \chapmacro. + \writetocentry{\toctype\sectionlevel}{#1}{#4}% + % + % Write the node reference (= pdf destination for pdftex). + % Again, see comments in \chapmacro. + \donoderef{#3}% + % + % Interline glue will be inserted when the vbox is completed. + % That glue will be a valid breakpoint for the page, since it'll be + % preceded by a whatsit (usually from the \donoderef, or from the + % \writetocentry if there was no node). We don't want to allow that + % break, since then the whatsits could end up on page n while the + % section is on page n+1, thus toc/etc. are wrong. Debian bug 276000. + \nobreak + % + % Output the actual section heading. + \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \ptexraggedright + \hangindent=\wd0 % zero if no section number + \unhbox0 #1}% + }% + % Add extra space after the heading -- half of whatever came above it. + % Don't allow stretch, though. + \kern .5 \csname #2headingskip\endcsname + % + % Do not let the kern be a potential breakpoint, as it would be if it + % was followed by glue. + \nobreak + % + % We'll almost certainly start a paragraph next, so don't let that + % glue accumulate. (Not a breakpoint because it's preceded by a + % discardable item.) However, when a paragraph is not started next + % (\startdefun, \cartouche, \center, etc.), this needs to be wiped out + % or the negative glue will cause weirdly wrong output, typically + % obscuring the section heading with something else. + \vskip-\parskip + % + % This is so the last item on the main vertical list is a known + % \penalty > 10000, so \startdefun, etc., can recognize the situation + % and do the needful. + \penalty 10001 +} + + +\message{toc,} +% Table of contents. +\newwrite\tocfile + +% Write an entry to the toc file, opening it if necessary. +% Called from @chapter, etc. +% +% Example usage: \writetocentry{sec}{Section Name}{\the\chapno.\the\secno} +% We append the current node name (if any) and page number as additional +% arguments for the \{chap,sec,...}entry macros which will eventually +% read this. The node name is used in the pdf outlines as the +% destination to jump to. +% +% We open the .toc file for writing here instead of at @setfilename (or +% any other fixed time) so that @contents can be anywhere in the document. +% But if #1 is `omit', then we don't do anything. This is used for the +% table of contents chapter openings themselves. +% +\newif\iftocfileopened +\def\omitkeyword{omit}% +% +\def\writetocentry#1#2#3{% + \edef\writetoctype{#1}% + \ifx\writetoctype\omitkeyword \else + \iftocfileopened\else + \immediate\openout\tocfile = \jobname.toc + \global\tocfileopenedtrue + \fi + % + \iflinks + {\atdummies + \edef\temp{% + \write\tocfile{@#1entry{#2}{#3}{\lastnode}{\noexpand\folio}}}% + \temp + }% + \fi + \fi + % + % Tell \shipout to create a pdf destination on each page, if we're + % writing pdf. These are used in the table of contents. We can't + % just write one on every page because the title pages are numbered + % 1 and 2 (the page numbers aren't printed), and so are the first + % two pages of the document. Thus, we'd have two destinations named + % `1', and two named `2'. + \ifpdf \global\pdfmakepagedesttrue \fi +} + + +% These characters do not print properly in the Computer Modern roman +% fonts, so we must take special care. This is more or less redundant +% with the Texinfo input format setup at the end of this file. +% +\def\activecatcodes{% + \catcode`\"=\active + \catcode`\$=\active + \catcode`\<=\active + \catcode`\>=\active + \catcode`\\=\active + \catcode`\^=\active + \catcode`\_=\active + \catcode`\|=\active + \catcode`\~=\active +} + + +% Read the toc file, which is essentially Texinfo input. +\def\readtocfile{% + \setupdatafile + \activecatcodes + \input \tocreadfilename +} + +\newskip\contentsrightmargin \contentsrightmargin=1in +\newcount\savepageno +\newcount\lastnegativepageno \lastnegativepageno = -1 + +% Prepare to read what we've written to \tocfile. +% +\def\startcontents#1{% + % If @setchapternewpage on, and @headings double, the contents should + % start on an odd page, unlike chapters. Thus, we maintain + % \contentsalignmacro in parallel with \pagealignmacro. + % From: Torbjorn Granlund + \contentsalignmacro + \immediate\closeout\tocfile + % + % Don't need to put `Contents' or `Short Contents' in the headline. + % It is abundantly clear what they are. + \chapmacro{#1}{Yomitfromtoc}{}% + % + \savepageno = \pageno + \begingroup % Set up to handle contents files properly. + \raggedbottom % Worry more about breakpoints than the bottom. + \advance\hsize by -\contentsrightmargin % Don't use the full line length. + % + % Roman numerals for page numbers. + \ifnum \pageno>0 \global\pageno = \lastnegativepageno \fi +} + +% redefined for the two-volume lispref. We always output on +% \jobname.toc even if this is redefined. +% +\def\tocreadfilename{\jobname.toc} + +% Normal (long) toc. +% +\def\contents{% + \startcontents{\putwordTOC}% + \openin 1 \tocreadfilename\space + \ifeof 1 \else + \readtocfile + \fi + \vfill \eject + \contentsalignmacro % in case @setchapternewpage odd is in effect + \ifeof 1 \else + \pdfmakeoutlines + \fi + \closein 1 + \endgroup + \lastnegativepageno = \pageno + \global\pageno = \savepageno +} + +% And just the chapters. +\def\summarycontents{% + \startcontents{\putwordShortTOC}% + % + \let\partentry = \shortpartentry + \let\numchapentry = \shortchapentry + \let\appentry = \shortchapentry + \let\unnchapentry = \shortunnchapentry + % We want a true roman here for the page numbers. + \secfonts + \let\rm=\shortcontrm \let\bf=\shortcontbf + \let\sl=\shortcontsl \let\tt=\shortconttt + \rm + \hyphenpenalty = 10000 + \advance\baselineskip by 1pt % Open it up a little. + \def\numsecentry##1##2##3##4{} + \let\appsecentry = \numsecentry + \let\unnsecentry = \numsecentry + \let\numsubsecentry = \numsecentry + \let\appsubsecentry = \numsecentry + \let\unnsubsecentry = \numsecentry + \let\numsubsubsecentry = \numsecentry + \let\appsubsubsecentry = \numsecentry + \let\unnsubsubsecentry = \numsecentry + \openin 1 \tocreadfilename\space + \ifeof 1 \else + \readtocfile + \fi + \closein 1 + \vfill \eject + \contentsalignmacro % in case @setchapternewpage odd is in effect + \endgroup + \lastnegativepageno = \pageno + \global\pageno = \savepageno +} +\let\shortcontents = \summarycontents + +% Typeset the label for a chapter or appendix for the short contents. +% The arg is, e.g., `A' for an appendix, or `3' for a chapter. +% +\def\shortchaplabel#1{% + % This space should be enough, since a single number is .5em, and the + % widest letter (M) is 1em, at least in the Computer Modern fonts. + % But use \hss just in case. + % (This space doesn't include the extra space that gets added after + % the label; that gets put in by \shortchapentry above.) + % + % We'd like to right-justify chapter numbers, but that looks strange + % with appendix letters. And right-justifying numbers and + % left-justifying letters looks strange when there is less than 10 + % chapters. Have to read the whole toc once to know how many chapters + % there are before deciding ... + \hbox to 1em{#1\hss}% +} + +% These macros generate individual entries in the table of contents. +% The first argument is the chapter or section name. +% The last argument is the page number. +% The arguments in between are the chapter number, section number, ... + +% Parts, in the main contents. Replace the part number, which doesn't +% exist, with an empty box. Let's hope all the numbers have the same width. +% Also ignore the page number, which is conventionally not printed. +\def\numeralbox{\setbox0=\hbox{8}\hbox to \wd0{\hfil}} +\def\partentry#1#2#3#4{\dochapentry{\numeralbox\labelspace#1}{}} +% +% Parts, in the short toc. +\def\shortpartentry#1#2#3#4{% + \penalty-300 + \vskip.5\baselineskip plus.15\baselineskip minus.1\baselineskip + \shortchapentry{{\bf #1}}{\numeralbox}{}{}% +} + +% Chapters, in the main contents. +\def\numchapentry#1#2#3#4{\dochapentry{#2\labelspace#1}{#4}} +% +% Chapters, in the short toc. +% See comments in \dochapentry re vbox and related settings. +\def\shortchapentry#1#2#3#4{% + \tocentry{\shortchaplabel{#2}\labelspace #1}{\doshortpageno\bgroup#4\egroup}% +} + +% Appendices, in the main contents. +% Need the word Appendix, and a fixed-size box. +% +\def\appendixbox#1{% + % We use M since it's probably the widest letter. + \setbox0 = \hbox{\putwordAppendix{} M}% + \hbox to \wd0{\putwordAppendix{} #1\hss}} +% +\def\appentry#1#2#3#4{\dochapentry{\appendixbox{#2}\labelspace#1}{#4}} + +% Unnumbered chapters. +\def\unnchapentry#1#2#3#4{\dochapentry{#1}{#4}} +\def\shortunnchapentry#1#2#3#4{\tocentry{#1}{\doshortpageno\bgroup#4\egroup}} + +% Sections. +\def\numsecentry#1#2#3#4{\dosecentry{#2\labelspace#1}{#4}} +\let\appsecentry=\numsecentry +\def\unnsecentry#1#2#3#4{\dosecentry{#1}{#4}} + +% Subsections. +\def\numsubsecentry#1#2#3#4{\dosubsecentry{#2\labelspace#1}{#4}} +\let\appsubsecentry=\numsubsecentry +\def\unnsubsecentry#1#2#3#4{\dosubsecentry{#1}{#4}} + +% And subsubsections. +\def\numsubsubsecentry#1#2#3#4{\dosubsubsecentry{#2\labelspace#1}{#4}} +\let\appsubsubsecentry=\numsubsubsecentry +\def\unnsubsubsecentry#1#2#3#4{\dosubsubsecentry{#1}{#4}} + +% This parameter controls the indentation of the various levels. +% Same as \defaultparindent. +\newdimen\tocindent \tocindent = 15pt + +% Now for the actual typesetting. In all these, #1 is the text and #2 is the +% page number. +% +% If the toc has to be broken over pages, we want it to be at chapters +% if at all possible; hence the \penalty. +\def\dochapentry#1#2{% + \penalty-300 \vskip1\baselineskip plus.33\baselineskip minus.25\baselineskip + \begingroup + \chapentryfonts + \tocentry{#1}{\dopageno\bgroup#2\egroup}% + \endgroup + \nobreak\vskip .25\baselineskip plus.1\baselineskip +} + +\def\dosecentry#1#2{\begingroup + \secentryfonts \leftskip=\tocindent + \tocentry{#1}{\dopageno\bgroup#2\egroup}% +\endgroup} + +\def\dosubsecentry#1#2{\begingroup + \subsecentryfonts \leftskip=2\tocindent + \tocentry{#1}{\dopageno\bgroup#2\egroup}% +\endgroup} + +\def\dosubsubsecentry#1#2{\begingroup + \subsubsecentryfonts \leftskip=3\tocindent + \tocentry{#1}{\dopageno\bgroup#2\egroup}% +\endgroup} + +% We use the same \entry macro as for the index entries. +\let\tocentry = \entry + +% Space between chapter (or whatever) number and the title. +\def\labelspace{\hskip1em \relax} + +\def\dopageno#1{{\rm #1}} +\def\doshortpageno#1{{\rm #1}} + +\def\chapentryfonts{\secfonts \rm} +\def\secentryfonts{\textfonts} +\def\subsecentryfonts{\textfonts} +\def\subsubsecentryfonts{\textfonts} + + +\message{environments,} +% @foo ... @end foo. + +% @tex ... @end tex escapes into raw TeX temporarily. +% One exception: @ is still an escape character, so that @end tex works. +% But \@ or @@ will get a plain @ character. + +\envdef\tex{% + \setupmarkupstyle{tex}% + \catcode `\\=0 \catcode `\{=1 \catcode `\}=2 + \catcode `\$=3 \catcode `\&=4 \catcode `\#=6 + \catcode `\^=7 \catcode `\_=8 \catcode `\~=\active \let~=\tie + \catcode `\%=14 + \catcode `\+=\other + \catcode `\"=\other + \catcode `\|=\other + \catcode `\<=\other + \catcode `\>=\other + \catcode`\`=\other + \catcode`\'=\other + \escapechar=`\\ + % + % ' is active in math mode (mathcode"8000). So reset it, and all our + % other math active characters (just in case), to plain's definitions. + \mathactive + % + \let\b=\ptexb + \let\bullet=\ptexbullet + \let\c=\ptexc + \let\,=\ptexcomma + \let\.=\ptexdot + \let\dots=\ptexdots + \let\equiv=\ptexequiv + \let\!=\ptexexclam + \let\i=\ptexi + \let\indent=\ptexindent + \let\noindent=\ptexnoindent + \let\{=\ptexlbrace + \let\+=\tabalign + \let\}=\ptexrbrace + \let\/=\ptexslash + \let\*=\ptexstar + \let\t=\ptext + \expandafter \let\csname top\endcsname=\ptextop % outer + \let\frenchspacing=\plainfrenchspacing + % + \def\endldots{\mathinner{\ldots\ldots\ldots\ldots}}% + \def\enddots{\relax\ifmmode\endldots\else$\mathsurround=0pt \endldots\,$\fi}% + \def\@{@}% +} +% There is no need to define \Etex. + +% Define @lisp ... @end lisp. +% @lisp environment forms a group so it can rebind things, +% including the definition of @end lisp (which normally is erroneous). + +% Amount to narrow the margins by for @lisp. +\newskip\lispnarrowing \lispnarrowing=0.4in + +% This is the definition that ^^M gets inside @lisp, @example, and other +% such environments. \null is better than a space, since it doesn't +% have any width. +\def\lisppar{\null\endgraf} + +% This space is always present above and below environments. +\newskip\envskipamount \envskipamount = 0pt + +% Make spacing and below environment symmetrical. We use \parskip here +% to help in doing that, since in @example-like environments \parskip +% is reset to zero; thus the \afterenvbreak inserts no space -- but the +% start of the next paragraph will insert \parskip. +% +\def\aboveenvbreak{{% + % =10000 instead of <10000 because of a special case in \itemzzz and + % \sectionheading, q.v. + \ifnum \lastpenalty=10000 \else + \advance\envskipamount by \parskip + \endgraf + \ifdim\lastskip<\envskipamount + \removelastskip + % it's not a good place to break if the last penalty was \nobreak + % or better ... + \ifnum\lastpenalty<10000 \penalty-50 \fi + \vskip\envskipamount + \fi + \fi +}} + +\let\afterenvbreak = \aboveenvbreak + +% \nonarrowing is a flag. If "set", @lisp etc don't narrow margins; it will +% also clear it, so that its embedded environments do the narrowing again. +\let\nonarrowing=\relax + +% @cartouche ... @end cartouche: draw rectangle w/rounded corners around +% environment contents. +\font\circle=lcircle10 +\newdimen\circthick +\newdimen\cartouter\newdimen\cartinner +\newskip\normbskip\newskip\normpskip\newskip\normlskip +\circthick=\fontdimen8\circle +% +\def\ctl{{\circle\char'013\hskip -6pt}}% 6pt from pl file: 1/2charwidth +\def\ctr{{\hskip 6pt\circle\char'010}} +\def\cbl{{\circle\char'012\hskip -6pt}} +\def\cbr{{\hskip 6pt\circle\char'011}} +\def\carttop{\hbox to \cartouter{\hskip\lskip + \ctl\leaders\hrule height\circthick\hfil\ctr + \hskip\rskip}} +\def\cartbot{\hbox to \cartouter{\hskip\lskip + \cbl\leaders\hrule height\circthick\hfil\cbr + \hskip\rskip}} +% +\newskip\lskip\newskip\rskip + +\envdef\cartouche{% + \ifhmode\par\fi % can't be in the midst of a paragraph. + \startsavinginserts + \lskip=\leftskip \rskip=\rightskip + \leftskip=0pt\rightskip=0pt % we want these *outside*. + \cartinner=\hsize \advance\cartinner by-\lskip + \advance\cartinner by-\rskip + \cartouter=\hsize + \advance\cartouter by 18.4pt % allow for 3pt kerns on either + % side, and for 6pt waste from + % each corner char, and rule thickness + \normbskip=\baselineskip \normpskip=\parskip \normlskip=\lineskip + % Flag to tell @lisp, etc., not to narrow margin. + \let\nonarrowing = t% + % + % If this cartouche directly follows a sectioning command, we need the + % \parskip glue (backspaced over by default) or the cartouche can + % collide with the section heading. + \ifnum\lastpenalty>10000 \vskip\parskip \penalty\lastpenalty \fi + % + \vbox\bgroup + \baselineskip=0pt\parskip=0pt\lineskip=0pt + \carttop + \hbox\bgroup + \hskip\lskip + \vrule\kern3pt + \vbox\bgroup + \kern3pt + \hsize=\cartinner + \baselineskip=\normbskip + \lineskip=\normlskip + \parskip=\normpskip + \vskip -\parskip + \comment % For explanation, see the end of def\group. +} +\def\Ecartouche{% + \ifhmode\par\fi + \kern3pt + \egroup + \kern3pt\vrule + \hskip\rskip + \egroup + \cartbot + \egroup + \checkinserts +} + + +% This macro is called at the beginning of all the @example variants, +% inside a group. +\newdimen\nonfillparindent +\def\nonfillstart{% + \aboveenvbreak + \hfuzz = 12pt % Don't be fussy + \sepspaces % Make spaces be word-separators rather than space tokens. + \let\par = \lisppar % don't ignore blank lines + \obeylines % each line of input is a line of output + \parskip = 0pt + % Turn off paragraph indentation but redefine \indent to emulate + % the normal \indent. + \nonfillparindent=\parindent + \parindent = 0pt + \let\indent\nonfillindent + % + \emergencystretch = 0pt % don't try to avoid overfull boxes + \ifx\nonarrowing\relax + \advance \leftskip by \lispnarrowing + \exdentamount=\lispnarrowing + \else + \let\nonarrowing = \relax + \fi + \let\exdent=\nofillexdent +} + +\begingroup +\obeyspaces +% We want to swallow spaces (but not other tokens) after the fake +% @indent in our nonfill-environments, where spaces are normally +% active and set to @tie, resulting in them not being ignored after +% @indent. +\gdef\nonfillindent{\futurelet\temp\nonfillindentcheck}% +\gdef\nonfillindentcheck{% +\ifx\temp % +\expandafter\nonfillindentgobble% +\else% +\leavevmode\nonfillindentbox% +\fi% +}% +\endgroup +\def\nonfillindentgobble#1{\nonfillindent} +\def\nonfillindentbox{\hbox to \nonfillparindent{\hss}} + +% If you want all examples etc. small: @set dispenvsize small. +% If you want even small examples the full size: @set dispenvsize nosmall. +% This affects the following displayed environments: +% @example, @display, @format, @lisp +% +\def\smallword{small} +\def\nosmallword{nosmall} +\let\SETdispenvsize\relax +\def\setnormaldispenv{% + \ifx\SETdispenvsize\smallword + % end paragraph for sake of leading, in case document has no blank + % line. This is redundant with what happens in \aboveenvbreak, but + % we need to do it before changing the fonts, and it's inconvenient + % to change the fonts afterward. + \ifnum \lastpenalty=10000 \else \endgraf \fi + \smallexamplefonts \rm + \fi +} +\def\setsmalldispenv{% + \ifx\SETdispenvsize\nosmallword + \else + \ifnum \lastpenalty=10000 \else \endgraf \fi + \smallexamplefonts \rm + \fi +} + +% We often define two environments, @foo and @smallfoo. +% Let's do it in one command. #1 is the env name, #2 the definition. +\def\makedispenvdef#1#2{% + \expandafter\envdef\csname#1\endcsname {\setnormaldispenv #2}% + \expandafter\envdef\csname small#1\endcsname {\setsmalldispenv #2}% + \expandafter\let\csname E#1\endcsname \afterenvbreak + \expandafter\let\csname Esmall#1\endcsname \afterenvbreak +} + +% Define two environment synonyms (#1 and #2) for an environment. +\def\maketwodispenvdef#1#2#3{% + \makedispenvdef{#1}{#3}% + \makedispenvdef{#2}{#3}% +} +% +% @lisp: indented, narrowed, typewriter font; +% @example: same as @lisp. +% +% @smallexample and @smalllisp: use smaller fonts. +% Originally contributed by Pavel@xerox. +% +\maketwodispenvdef{lisp}{example}{% + \nonfillstart + \tt\setupmarkupstyle{example}% + \let\kbdfont = \kbdexamplefont % Allow @kbd to do something special. + \gobble % eat return +} +% @display/@smalldisplay: same as @lisp except keep current font. +% +\makedispenvdef{display}{% + \nonfillstart + \gobble +} + +% @format/@smallformat: same as @display except don't narrow margins. +% +\makedispenvdef{format}{% + \let\nonarrowing = t% + \nonfillstart + \gobble +} + +% @flushleft: same as @format, but doesn't obey \SETdispenvsize. +\envdef\flushleft{% + \let\nonarrowing = t% + \nonfillstart + \gobble +} +\let\Eflushleft = \afterenvbreak + +% @flushright. +% +\envdef\flushright{% + \let\nonarrowing = t% + \nonfillstart + \advance\leftskip by 0pt plus 1fill\relax + \gobble +} +\let\Eflushright = \afterenvbreak + + +% @raggedright does more-or-less normal line breaking but no right +% justification. From plain.tex. +\envdef\raggedright{% + \rightskip0pt plus2em \spaceskip.3333em \xspaceskip.5em\relax +} +\let\Eraggedright\par + +\envdef\raggedleft{% + \parindent=0pt \leftskip0pt plus2em + \spaceskip.3333em \xspaceskip.5em \parfillskip=0pt + \hbadness=10000 % Last line will usually be underfull, so turn off + % badness reporting. +} +\let\Eraggedleft\par + +\envdef\raggedcenter{% + \parindent=0pt \rightskip0pt plus1em \leftskip0pt plus1em + \spaceskip.3333em \xspaceskip.5em \parfillskip=0pt + \hbadness=10000 % Last line will usually be underfull, so turn off + % badness reporting. +} +\let\Eraggedcenter\par + + +% @quotation does normal linebreaking (hence we can't use \nonfillstart) +% and narrows the margins. We keep \parskip nonzero in general, since +% we're doing normal filling. So, when using \aboveenvbreak and +% \afterenvbreak, temporarily make \parskip 0. +% +\makedispenvdef{quotation}{\quotationstart} +% +\def\quotationstart{% + \indentedblockstart % same as \indentedblock, but increase right margin too. + \ifx\nonarrowing\relax + \advance\rightskip by \lispnarrowing + \fi + \parsearg\quotationlabel +} + +% We have retained a nonzero parskip for the environment, since we're +% doing normal filling. +% +\def\Equotation{% + \par + \ifx\quotationauthor\thisisundefined\else + % indent a bit. + \leftline{\kern 2\leftskip \sl ---\quotationauthor}% + \fi + {\parskip=0pt \afterenvbreak}% +} +\def\Esmallquotation{\Equotation} + +% If we're given an argument, typeset it in bold with a colon after. +\def\quotationlabel#1{% + \def\temp{#1}% + \ifx\temp\empty \else + {\bf #1: }% + \fi +} + +% @indentedblock is like @quotation, but indents only on the left and +% has no optional argument. +% +\makedispenvdef{indentedblock}{\indentedblockstart} +% +\def\indentedblockstart{% + {\parskip=0pt \aboveenvbreak}% because \aboveenvbreak inserts \parskip + \parindent=0pt + % + % @cartouche defines \nonarrowing to inhibit narrowing at next level down. + \ifx\nonarrowing\relax + \advance\leftskip by \lispnarrowing + \exdentamount = \lispnarrowing + \else + \let\nonarrowing = \relax + \fi +} + +% Keep a nonzero parskip for the environment, since we're doing normal filling. +% +\def\Eindentedblock{% + \par + {\parskip=0pt \afterenvbreak}% +} +\def\Esmallindentedblock{\Eindentedblock} + + +% LaTeX-like @verbatim...@end verbatim and @verb{...} +% If we want to allow any as delimiter, +% we need the curly braces so that makeinfo sees the @verb command, eg: +% `@verbx...x' would look like the '@verbx' command. --janneke@gnu.org +% +% [Knuth]: Donald Ervin Knuth, 1996. The TeXbook. +% +% [Knuth] p.344; only we need to do the other characters Texinfo sets +% active too. Otherwise, they get lost as the first character on a +% verbatim line. +\def\dospecials{% + \do\ \do\\\do\{\do\}\do\$\do\&% + \do\#\do\^\do\^^K\do\_\do\^^A\do\%\do\~% + \do\<\do\>\do\|\do\@\do+\do\"% + % Don't do the quotes -- if we do, @set txicodequoteundirected and + % @set txicodequotebacktick will not have effect on @verb and + % @verbatim, and ?` and !` ligatures won't get disabled. + %\do\`\do\'% +} +% +% [Knuth] p. 380 +\def\uncatcodespecials{% + \def\do##1{\catcode`##1=\other}\dospecials} +% +% Setup for the @verb command. +% +% Eight spaces for a tab +\begingroup + \catcode`\^^I=\active + \gdef\tabeightspaces{\catcode`\^^I=\active\def^^I{\ \ \ \ \ \ \ \ }} +\endgroup +% +\def\setupverb{% + \tt % easiest (and conventionally used) font for verbatim + \def\par{\leavevmode\endgraf}% + \setupmarkupstyle{verb}% + \tabeightspaces + % Respect line breaks, + % print special symbols as themselves, and + % make each space count + % must do in this order: + \obeylines \uncatcodespecials \sepspaces +} + +% Setup for the @verbatim environment +% +% Real tab expansion. +\newdimen\tabw \setbox0=\hbox{\tt\space} \tabw=8\wd0 % tab amount +% +% We typeset each line of the verbatim in an \hbox, so we can handle +% tabs. The \global is in case the verbatim line starts with an accent, +% or some other command that starts with a begin-group. Otherwise, the +% entire \verbbox would disappear at the corresponding end-group, before +% it is typeset. Meanwhile, we can't have nested verbatim commands +% (can we?), so the \global won't be overwriting itself. +\newbox\verbbox +\def\starttabbox{\global\setbox\verbbox=\hbox\bgroup} +% +\begingroup + \catcode`\^^I=\active + \gdef\tabexpand{% + \catcode`\^^I=\active + \def^^I{\leavevmode\egroup + \dimen\verbbox=\wd\verbbox % the width so far, or since the previous tab + \divide\dimen\verbbox by\tabw + \multiply\dimen\verbbox by\tabw % compute previous multiple of \tabw + \advance\dimen\verbbox by\tabw % advance to next multiple of \tabw + \wd\verbbox=\dimen\verbbox \box\verbbox \starttabbox + }% + } +\endgroup + +% start the verbatim environment. +\def\setupverbatim{% + \let\nonarrowing = t% + \nonfillstart + \tt % easiest (and conventionally used) font for verbatim + % The \leavevmode here is for blank lines. Otherwise, we would + % never \starttabox and the \egroup would end verbatim mode. + \def\par{\leavevmode\egroup\box\verbbox\endgraf}% + \tabexpand + \setupmarkupstyle{verbatim}% + % Respect line breaks, + % print special symbols as themselves, and + % make each space count. + % Must do in this order: + \obeylines \uncatcodespecials \sepspaces + \everypar{\starttabbox}% +} + +% Do the @verb magic: verbatim text is quoted by unique +% delimiter characters. Before first delimiter expect a +% right brace, after last delimiter expect closing brace: +% +% \def\doverb'{'#1'}'{#1} +% +% [Knuth] p. 382; only eat outer {} +\begingroup + \catcode`[=1\catcode`]=2\catcode`\{=\other\catcode`\}=\other + \gdef\doverb{#1[\def\next##1#1}[##1\endgroup]\next] +\endgroup +% +\def\verb{\begingroup\setupverb\doverb} +% +% +% Do the @verbatim magic: define the macro \doverbatim so that +% the (first) argument ends when '@end verbatim' is reached, ie: +% +% \def\doverbatim#1@end verbatim{#1} +% +% For Texinfo it's a lot easier than for LaTeX, +% because texinfo's \verbatim doesn't stop at '\end{verbatim}': +% we need not redefine '\', '{' and '}'. +% +% Inspired by LaTeX's verbatim command set [latex.ltx] +% +\begingroup + \catcode`\ =\active + \obeylines % + % ignore everything up to the first ^^M, that's the newline at the end + % of the @verbatim input line itself. Otherwise we get an extra blank + % line in the output. + \xdef\doverbatim#1^^M#2@end verbatim{#2\noexpand\end\gobble verbatim}% + % We really want {...\end verbatim} in the body of the macro, but + % without the active space; thus we have to use \xdef and \gobble. +\endgroup +% +\envdef\verbatim{% + \setupverbatim\doverbatim +} +\let\Everbatim = \afterenvbreak + + +% @verbatiminclude FILE - insert text of file in verbatim environment. +% +\def\verbatiminclude{\parseargusing\filenamecatcodes\doverbatiminclude} +% +\def\doverbatiminclude#1{% + {% + \makevalueexpandable + \setupverbatim + \indexnofonts % Allow `@@' and other weird things in file names. + \wlog{texinfo.tex: doing @verbatiminclude of #1^^J}% + \input #1 + \afterenvbreak + }% +} + +% @copying ... @end copying. +% Save the text away for @insertcopying later. +% +% We save the uninterpreted tokens, rather than creating a box. +% Saving the text in a box would be much easier, but then all the +% typesetting commands (@smallbook, font changes, etc.) have to be done +% beforehand -- and a) we want @copying to be done first in the source +% file; b) letting users define the frontmatter in as flexible order as +% possible is very desirable. +% +\def\copying{\checkenv{}\begingroup\scanargctxt\docopying} +\def\docopying#1@end copying{\endgroup\def\copyingtext{#1}} +% +\def\insertcopying{% + \begingroup + \parindent = 0pt % paragraph indentation looks wrong on title page + \scanexp\copyingtext + \endgroup +} + + +\message{defuns,} +% @defun etc. + +\newskip\defbodyindent \defbodyindent=.4in +\newskip\defargsindent \defargsindent=50pt +\newskip\deflastargmargin \deflastargmargin=18pt +\newcount\defunpenalty + +% Start the processing of @deffn: +\def\startdefun{% + \ifnum\lastpenalty<10000 + \medbreak + \defunpenalty=10003 % Will keep this @deffn together with the + % following @def command, see below. + \else + % If there are two @def commands in a row, we'll have a \nobreak, + % which is there to keep the function description together with its + % header. But if there's nothing but headers, we need to allow a + % break somewhere. Check specifically for penalty 10002, inserted + % by \printdefunline, instead of 10000, since the sectioning + % commands also insert a nobreak penalty, and we don't want to allow + % a break between a section heading and a defun. + % + % As a further refinement, we avoid "club" headers by signalling + % with penalty of 10003 after the very first @deffn in the + % sequence (see above), and penalty of 10002 after any following + % @def command. + \ifnum\lastpenalty=10002 \penalty2000 \else \defunpenalty=10002 \fi + % + % Similarly, after a section heading, do not allow a break. + % But do insert the glue. + \medskip % preceded by discardable penalty, so not a breakpoint + \fi + % + \parindent=0in + \advance\leftskip by \defbodyindent + \exdentamount=\defbodyindent +} + +\def\dodefunx#1{% + % First, check whether we are in the right environment: + \checkenv#1% + % + % As above, allow line break if we have multiple x headers in a row. + % It's not a great place, though. + \ifnum\lastpenalty=10002 \penalty3000 \else \defunpenalty=10002 \fi + % + % And now, it's time to reuse the body of the original defun: + \expandafter\gobbledefun#1% +} +\def\gobbledefun#1\startdefun{} + +% \printdefunline \deffnheader{text} +% +\def\printdefunline#1#2{% + \begingroup + % call \deffnheader: + #1#2 \endheader + % common ending: + \interlinepenalty = 10000 + \advance\rightskip by 0pt plus 1fil\relax + \endgraf + \nobreak\vskip -\parskip + \penalty\defunpenalty % signal to \startdefun and \dodefunx + % Some of the @defun-type tags do not enable magic parentheses, + % rendering the following check redundant. But we don't optimize. + \checkparencounts + \endgroup +} + +\def\Edefun{\endgraf\medbreak} + +% \makedefun{deffn} creates \deffn, \deffnx and \Edeffn; +% the only thing remaining is to define \deffnheader. +% +\def\makedefun#1{% + \expandafter\let\csname E#1\endcsname = \Edefun + \edef\temp{\noexpand\domakedefun + \makecsname{#1}\makecsname{#1x}\makecsname{#1header}}% + \temp +} + +% \domakedefun \deffn \deffnx \deffnheader +% +% Define \deffn and \deffnx, without parameters. +% \deffnheader has to be defined explicitly. +% +\def\domakedefun#1#2#3{% + \envdef#1{% + \startdefun + \doingtypefnfalse % distinguish typed functions from all else + \parseargusing\activeparens{\printdefunline#3}% + }% + \def#2{\dodefunx#1}% + \def#3% +} + +\newif\ifdoingtypefn % doing typed function? +\newif\ifrettypeownline % typeset return type on its own line? + +% @deftypefnnewline on|off says whether the return type of typed functions +% are printed on their own line. This affects @deftypefn, @deftypefun, +% @deftypeop, and @deftypemethod. +% +\parseargdef\deftypefnnewline{% + \def\temp{#1}% + \ifx\temp\onword + \expandafter\let\csname SETtxideftypefnnl\endcsname + = \empty + \else\ifx\temp\offword + \expandafter\let\csname SETtxideftypefnnl\endcsname + = \relax + \else + \errhelp = \EMsimple + \errmessage{Unknown @txideftypefnnl value `\temp', + must be on|off}% + \fi\fi +} + +% Untyped functions: + +% @deffn category name args +\makedefun{deffn}{\deffngeneral{}} + +% @deffn category class name args +\makedefun{defop}#1 {\defopon{#1\ \putwordon}} + +% \defopon {category on}class name args +\def\defopon#1#2 {\deffngeneral{\putwordon\ \code{#2}}{#1\ \code{#2}} } + +% \deffngeneral {subind}category name args +% +\def\deffngeneral#1#2 #3 #4\endheader{% + % Remember that \dosubind{fn}{foo}{} is equivalent to \doind{fn}{foo}. + \dosubind{fn}{\code{#3}}{#1}% + \defname{#2}{}{#3}\magicamp\defunargs{#4\unskip}% +} + +% Typed functions: + +% @deftypefn category type name args +\makedefun{deftypefn}{\deftypefngeneral{}} + +% @deftypeop category class type name args +\makedefun{deftypeop}#1 {\deftypeopon{#1\ \putwordon}} + +% \deftypeopon {category on}class type name args +\def\deftypeopon#1#2 {\deftypefngeneral{\putwordon\ \code{#2}}{#1\ \code{#2}} } + +% \deftypefngeneral {subind}category type name args +% +\def\deftypefngeneral#1#2 #3 #4 #5\endheader{% + \dosubind{fn}{\code{#4}}{#1}% + \doingtypefntrue + \defname{#2}{#3}{#4}\defunargs{#5\unskip}% +} + +% Typed variables: + +% @deftypevr category type var args +\makedefun{deftypevr}{\deftypecvgeneral{}} + +% @deftypecv category class type var args +\makedefun{deftypecv}#1 {\deftypecvof{#1\ \putwordof}} + +% \deftypecvof {category of}class type var args +\def\deftypecvof#1#2 {\deftypecvgeneral{\putwordof\ \code{#2}}{#1\ \code{#2}} } + +% \deftypecvgeneral {subind}category type var args +% +\def\deftypecvgeneral#1#2 #3 #4 #5\endheader{% + \dosubind{vr}{\code{#4}}{#1}% + \defname{#2}{#3}{#4}\defunargs{#5\unskip}% +} + +% Untyped variables: + +% @defvr category var args +\makedefun{defvr}#1 {\deftypevrheader{#1} {} } + +% @defcv category class var args +\makedefun{defcv}#1 {\defcvof{#1\ \putwordof}} + +% \defcvof {category of}class var args +\def\defcvof#1#2 {\deftypecvof{#1}#2 {} } + +% Types: + +% @deftp category name args +\makedefun{deftp}#1 #2 #3\endheader{% + \doind{tp}{\code{#2}}% + \defname{#1}{}{#2}\defunargs{#3\unskip}% +} + +% Remaining @defun-like shortcuts: +\makedefun{defun}{\deffnheader{\putwordDeffunc} } +\makedefun{defmac}{\deffnheader{\putwordDefmac} } +\makedefun{defspec}{\deffnheader{\putwordDefspec} } +\makedefun{deftypefun}{\deftypefnheader{\putwordDeffunc} } +\makedefun{defvar}{\defvrheader{\putwordDefvar} } +\makedefun{defopt}{\defvrheader{\putwordDefopt} } +\makedefun{deftypevar}{\deftypevrheader{\putwordDefvar} } +\makedefun{defmethod}{\defopon\putwordMethodon} +\makedefun{deftypemethod}{\deftypeopon\putwordMethodon} +\makedefun{defivar}{\defcvof\putwordInstanceVariableof} +\makedefun{deftypeivar}{\deftypecvof\putwordInstanceVariableof} + +% \defname, which formats the name of the @def (not the args). +% #1 is the category, such as "Function". +% #2 is the return type, if any. +% #3 is the function name. +% +% We are followed by (but not passed) the arguments, if any. +% +\def\defname#1#2#3{% + \par + % Get the values of \leftskip and \rightskip as they were outside the @def... + \advance\leftskip by -\defbodyindent + % + % Determine if we are typesetting the return type of a typed function + % on a line by itself. + \rettypeownlinefalse + \ifdoingtypefn % doing a typed function specifically? + % then check user option for putting return type on its own line: + \expandafter\ifx\csname SETtxideftypefnnl\endcsname\relax \else + \rettypeownlinetrue + \fi + \fi + % + % How we'll format the category name. Putting it in brackets helps + % distinguish it from the body text that may end up on the next line + % just below it. + \def\temp{#1}% + \setbox0=\hbox{\kern\deflastargmargin \ifx\temp\empty\else [\rm\temp]\fi} + % + % Figure out line sizes for the paragraph shape. We'll always have at + % least two. + \tempnum = 2 + % + % The first line needs space for \box0; but if \rightskip is nonzero, + % we need only space for the part of \box0 which exceeds it: + \dimen0=\hsize \advance\dimen0 by -\wd0 \advance\dimen0 by \rightskip + % + % If doing a return type on its own line, we'll have another line. + \ifrettypeownline + \advance\tempnum by 1 + \def\maybeshapeline{0in \hsize}% + \else + \def\maybeshapeline{}% + \fi + % + % The continuations: + \dimen2=\hsize \advance\dimen2 by -\defargsindent + % + % The final paragraph shape: + \parshape \tempnum 0in \dimen0 \maybeshapeline \defargsindent \dimen2 + % + % Put the category name at the right margin. + \noindent + \hbox to 0pt{% + \hfil\box0 \kern-\hsize + % \hsize has to be shortened this way: + \kern\leftskip + % Intentionally do not respect \rightskip, since we need the space. + }% + % + % Allow all lines to be underfull without complaint: + \tolerance=10000 \hbadness=10000 + \exdentamount=\defbodyindent + {% + % defun fonts. We use typewriter by default (used to be bold) because: + % . we're printing identifiers, they should be in tt in principle. + % . in languages with many accents, such as Czech or French, it's + % common to leave accents off identifiers. The result looks ok in + % tt, but exceedingly strange in rm. + % . we don't want -- and --- to be treated as ligatures. + % . this still does not fix the ?` and !` ligatures, but so far no + % one has made identifiers using them :). + \df \tt + \def\temp{#2}% text of the return type + \ifx\temp\empty\else + \tclose{\temp}% typeset the return type + \ifrettypeownline + % put return type on its own line; prohibit line break following: + \hfil\vadjust{\nobreak}\break + \else + \space % type on same line, so just followed by a space + \fi + \fi % no return type + #3% output function name + }% + {\rm\enskip}% hskip 0.5 em of \tenrm + % + \boldbrax + % arguments will be output next, if any. +} + +% Print arguments in slanted roman (not ttsl), inconsistently with using +% tt for the name. This is because literal text is sometimes needed in +% the argument list (groff manual), and ttsl and tt are not very +% distinguishable. Prevent hyphenation at `-' chars. +% +\def\defunargs#1{% + % use sl by default (not ttsl), + % tt for the names. + \df \sl \hyphenchar\font=0 + % + % On the other hand, if an argument has two dashes (for instance), we + % want a way to get ttsl. We used to recommend @var for that, so + % leave the code in, but it's strange for @var to lead to typewriter. + % Nowadays we recommend @code, since the difference between a ttsl hyphen + % and a tt hyphen is pretty tiny. @code also disables ?` !`. + \def\var##1{{\setupmarkupstyle{var}\ttslanted{##1}}}% + #1% + \sl\hyphenchar\font=45 +} + +% We want ()&[] to print specially on the defun line. +% +\def\activeparens{% + \catcode`\(=\active \catcode`\)=\active + \catcode`\[=\active \catcode`\]=\active + \catcode`\&=\active +} + +% Make control sequences which act like normal parenthesis chars. +\let\lparen = ( \let\rparen = ) + +% Be sure that we always have a definition for `(', etc. For example, +% if the fn name has parens in it, \boldbrax will not be in effect yet, +% so TeX would otherwise complain about undefined control sequence. +{ + \activeparens + \global\let(=\lparen \global\let)=\rparen + \global\let[=\lbrack \global\let]=\rbrack + \global\let& = \& + + \gdef\boldbrax{\let(=\opnr\let)=\clnr\let[=\lbrb\let]=\rbrb} + \gdef\magicamp{\let&=\amprm} +} + +\newcount\parencount + +% If we encounter &foo, then turn on ()-hacking afterwards +\newif\ifampseen +\def\amprm#1 {\ampseentrue{\bf\ }} + +\def\parenfont{% + \ifampseen + % At the first level, print parens in roman, + % otherwise use the default font. + \ifnum \parencount=1 \rm \fi + \else + % The \sf parens (in \boldbrax) actually are a little bolder than + % the contained text. This is especially needed for [ and ] . + \sf + \fi +} +\def\infirstlevel#1{% + \ifampseen + \ifnum\parencount=1 + #1% + \fi + \fi +} +\def\bfafterword#1 {#1 \bf} + +\def\opnr{% + \global\advance\parencount by 1 + {\parenfont(}% + \infirstlevel \bfafterword +} +\def\clnr{% + {\parenfont)}% + \infirstlevel \sl + \global\advance\parencount by -1 +} + +\newcount\brackcount +\def\lbrb{% + \global\advance\brackcount by 1 + {\bf[}% +} +\def\rbrb{% + {\bf]}% + \global\advance\brackcount by -1 +} + +\def\checkparencounts{% + \ifnum\parencount=0 \else \badparencount \fi + \ifnum\brackcount=0 \else \badbrackcount \fi +} +% these should not use \errmessage; the glibc manual, at least, actually +% has such constructs (when documenting function pointers). +\def\badparencount{% + \message{Warning: unbalanced parentheses in @def...}% + \global\parencount=0 +} +\def\badbrackcount{% + \message{Warning: unbalanced square brackets in @def...}% + \global\brackcount=0 +} + + +\message{macros,} +% @macro. + +% To do this right we need a feature of e-TeX, \scantokens, +% which we arrange to emulate with a temporary file in ordinary TeX. +\ifx\eTeXversion\thisisundefined + \newwrite\macscribble + \def\scantokens#1{% + \toks0={#1}% + \immediate\openout\macscribble=\jobname.tmp + \immediate\write\macscribble{\the\toks0}% + \immediate\closeout\macscribble + \input \jobname.tmp + } +\fi + +\def\scanmacro#1{\begingroup + \newlinechar`\^^M + \let\xeatspaces\eatspaces + % + % Undo catcode changes of \startcontents and \doprintindex + % When called from @insertcopying or (short)caption, we need active + % backslash to get it printed correctly. Previously, we had + % \catcode`\\=\other instead. We'll see whether a problem appears + % with macro expansion. --kasal, 19aug04 + \catcode`\@=0 \catcode`\\=\active \escapechar=`\@ + % + % ... and for \example: + \spaceisspace + % + % The \empty here causes a following catcode 5 newline to be eaten as + % part of reading whitespace after a control sequence. It does not + % eat a catcode 13 newline. There's no good way to handle the two + % cases (untried: maybe e-TeX's \everyeof could help, though plain TeX + % would then have different behavior). See the Macro Details node in + % the manual for the workaround we recommend for macros and + % line-oriented commands. + % + \scantokens{#1\empty}% +\endgroup} + +\def\scanexp#1{% + \edef\temp{\noexpand\scanmacro{#1}}% + \temp +} + +\newcount\paramno % Count of parameters +\newtoks\macname % Macro name +\newif\ifrecursive % Is it recursive? + +% List of all defined macros in the form +% \definedummyword\macro1\definedummyword\macro2... +% Currently is also contains all @aliases; the list can be split +% if there is a need. +\def\macrolist{} + +% Add the macro to \macrolist +\def\addtomacrolist#1{\expandafter \addtomacrolistxxx \csname#1\endcsname} +\def\addtomacrolistxxx#1{% + \toks0 = \expandafter{\macrolist\definedummyword#1}% + \xdef\macrolist{\the\toks0}% +} + +% Utility routines. +% This does \let #1 = #2, with \csnames; that is, +% \let \csname#1\endcsname = \csname#2\endcsname +% (except of course we have to play expansion games). +% +\def\cslet#1#2{% + \expandafter\let + \csname#1\expandafter\endcsname + \csname#2\endcsname +} + +% Trim leading and trailing spaces off a string. +% Concepts from aro-bend problem 15 (see CTAN). +{\catcode`\@=11 +\gdef\eatspaces #1{\expandafter\trim@\expandafter{#1 }} +\gdef\trim@ #1{\trim@@ @#1 @ #1 @ @@} +\gdef\trim@@ #1@ #2@ #3@@{\trim@@@\empty #2 @} +\def\unbrace#1{#1} +\unbrace{\gdef\trim@@@ #1 } #2@{#1} +} + +% Trim a single trailing ^^M off a string. +{\catcode`\^^M=\other \catcode`\Q=3% +\gdef\eatcr #1{\eatcra #1Q^^MQ}% +\gdef\eatcra#1^^MQ{\eatcrb#1Q}% +\gdef\eatcrb#1Q#2Q{#1}% +} + +% Macro bodies are absorbed as an argument in a context where +% all characters are catcode 10, 11 or 12, except \ which is active +% (as in normal texinfo). It is necessary to change the definition of \ +% to recognize macro arguments; this is the job of \mbodybackslash. +% +% Non-ASCII encodings make 8-bit characters active, so un-activate +% them to avoid their expansion. Must do this non-globally, to +% confine the change to the current group. +% +% It's necessary to have hard CRs when the macro is executed. This is +% done by making ^^M (\endlinechar) catcode 12 when reading the macro +% body, and then making it the \newlinechar in \scanmacro. +% +\def\scanctxt{% used as subroutine + \catcode`\"=\other + \catcode`\+=\other + \catcode`\<=\other + \catcode`\>=\other + \catcode`\@=\other + \catcode`\^=\other + \catcode`\_=\other + \catcode`\|=\other + \catcode`\~=\other + \ifx\declaredencoding\ascii \else \setnonasciicharscatcodenonglobal\other \fi +} + +\def\scanargctxt{% used for copying and captions, not macros. + \scanctxt + \catcode`\\=\other + \catcode`\^^M=\other +} + +\def\macrobodyctxt{% used for @macro definitions + \scanctxt + \catcode`\{=\other + \catcode`\}=\other + \catcode`\^^M=\other + \usembodybackslash +} + +\def\macroargctxt{% used when scanning invocations + \scanctxt + \catcode`\\=0 +} +% why catcode 0 for \ in the above? To recognize \\ \{ \} as "escapes" +% for the single characters \ { }. Thus, we end up with the "commands" +% that would be written @\ @{ @} in a Texinfo document. +% +% We already have @{ and @}. For @\, we define it here, and only for +% this purpose, to produce a typewriter backslash (so, the @\ that we +% define for @math can't be used with @macro calls): +% +\def\\{\normalbackslash}% +% +% We would like to do this for \, too, since that is what makeinfo does. +% But it is not possible, because Texinfo already has a command @, for a +% cedilla accent. Documents must use @comma{} instead. +% +% \anythingelse will almost certainly be an error of some kind. + + +% \mbodybackslash is the definition of \ in @macro bodies. +% It maps \foo\ => \csname macarg.foo\endcsname => #N +% where N is the macro parameter number. +% We define \csname macarg.\endcsname to be \realbackslash, so +% \\ in macro replacement text gets you a backslash. +% +{\catcode`@=0 @catcode`@\=@active + @gdef@usembodybackslash{@let\=@mbodybackslash} + @gdef@mbodybackslash#1\{@csname macarg.#1@endcsname} +} +\expandafter\def\csname macarg.\endcsname{\realbackslash} + +\def\margbackslash#1{\char`\#1 } + +\def\macro{\recursivefalse\parsearg\macroxxx} +\def\rmacro{\recursivetrue\parsearg\macroxxx} + +\def\macroxxx#1{% + \getargs{#1}% now \macname is the macname and \argl the arglist + \ifx\argl\empty % no arguments + \paramno=0\relax + \else + \expandafter\parsemargdef \argl;% + \if\paramno>256\relax + \ifx\eTeXversion\thisisundefined + \errhelp = \EMsimple + \errmessage{You need eTeX to compile a file with macros with more than 256 arguments} + \fi + \fi + \fi + \if1\csname ismacro.\the\macname\endcsname + \message{Warning: redefining \the\macname}% + \else + \expandafter\ifx\csname \the\macname\endcsname \relax + \else \errmessage{Macro name \the\macname\space already defined}\fi + \global\cslet{macsave.\the\macname}{\the\macname}% + \global\expandafter\let\csname ismacro.\the\macname\endcsname=1% + \addtomacrolist{\the\macname}% + \fi + \begingroup \macrobodyctxt + \ifrecursive \expandafter\parsermacbody + \else \expandafter\parsemacbody + \fi} + +\parseargdef\unmacro{% + \if1\csname ismacro.#1\endcsname + \global\cslet{#1}{macsave.#1}% + \global\expandafter\let \csname ismacro.#1\endcsname=0% + % Remove the macro name from \macrolist: + \begingroup + \expandafter\let\csname#1\endcsname \relax + \let\definedummyword\unmacrodo + \xdef\macrolist{\macrolist}% + \endgroup + \else + \errmessage{Macro #1 not defined}% + \fi +} + +% Called by \do from \dounmacro on each macro. The idea is to omit any +% macro definitions that have been changed to \relax. +% +\def\unmacrodo#1{% + \ifx #1\relax + % remove this + \else + \noexpand\definedummyword \noexpand#1% + \fi +} + +% This makes use of the obscure feature that if the last token of a +% is #, then the preceding argument is delimited by +% an opening brace, and that opening brace is not consumed. +\def\getargs#1{\getargsxxx#1{}} +\def\getargsxxx#1#{\getmacname #1 \relax\getmacargs} +\def\getmacname#1 #2\relax{\macname={#1}} +\def\getmacargs#1{\def\argl{#1}} + +% For macro processing make @ a letter so that we can make Texinfo private macro names. +\edef\texiatcatcode{\the\catcode`\@} +\catcode `@=11\relax + +% Parse the optional {params} list. Set up \paramno and \paramlist +% so \defmacro knows what to do. Define \macarg.BLAH for each BLAH +% in the params list to some hook where the argument si to be expanded. If +% there are less than 10 arguments that hook is to be replaced by ##N where N +% is the position in that list, that is to say the macro arguments are to be +% defined `a la TeX in the macro body. +% +% That gets used by \mbodybackslash (above). +% +% We need to get `macro parameter char #' into several definitions. +% The technique used is stolen from LaTeX: let \hash be something +% unexpandable, insert that wherever you need a #, and then redefine +% it to # just before using the token list produced. +% +% The same technique is used to protect \eatspaces till just before +% the macro is used. +% +% If there are 10 or more arguments, a different technique is used, where the +% hook remains in the body, and when macro is to be expanded the body is +% processed again to replace the arguments. +% +% In that case, the hook is \the\toks N-1, and we simply set \toks N-1 to the +% argument N value and then \edef the body (nothing else will expand because of +% the catcode regime underwhich the body was input). +% +% If you compile with TeX (not eTeX), and you have macros with 10 or more +% arguments, you need that no macro has more than 256 arguments, otherwise an +% error is produced. +\def\parsemargdef#1;{% + \paramno=0\def\paramlist{}% + \let\hash\relax + \let\xeatspaces\relax + \parsemargdefxxx#1,;,% + % In case that there are 10 or more arguments we parse again the arguments + % list to set new definitions for the \macarg.BLAH macros corresponding to + % each BLAH argument. It was anyhow needed to parse already once this list + % in order to count the arguments, and as macros with at most 9 arguments + % are by far more frequent than macro with 10 or more arguments, defining + % twice the \macarg.BLAH macros does not cost too much processing power. + \ifnum\paramno<10\relax\else + \paramno0\relax + \parsemmanyargdef@@#1,;,% 10 or more arguments + \fi +} +\def\parsemargdefxxx#1,{% + \if#1;\let\next=\relax + \else \let\next=\parsemargdefxxx + \advance\paramno by 1 + \expandafter\edef\csname macarg.\eatspaces{#1}\endcsname + {\xeatspaces{\hash\the\paramno}}% + \edef\paramlist{\paramlist\hash\the\paramno,}% + \fi\next} + +\def\parsemmanyargdef@@#1,{% + \if#1;\let\next=\relax + \else + \let\next=\parsemmanyargdef@@ + \edef\tempb{\eatspaces{#1}}% + \expandafter\def\expandafter\tempa + \expandafter{\csname macarg.\tempb\endcsname}% + % Note that we need some extra \noexpand\noexpand, this is because we + % don't want \the to be expanded in the \parsermacbody as it uses an + % \xdef . + \expandafter\edef\tempa + {\noexpand\noexpand\noexpand\the\toks\the\paramno}% + \advance\paramno by 1\relax + \fi\next} + +% These two commands read recursive and nonrecursive macro bodies. +% (They're different since rec and nonrec macros end differently.) +% + +\catcode `\@\texiatcatcode +\long\def\parsemacbody#1@end macro% +{\xdef\temp{\eatcr{#1}}\endgroup\defmacro}% +\long\def\parsermacbody#1@end rmacro% +{\xdef\temp{\eatcr{#1}}\endgroup\defmacro}% +\catcode `\@=11\relax + +\let\endargs@\relax +\let\nil@\relax +\def\nilm@{\nil@}% +\long\def\nillm@{\nil@}% + +% This macro is expanded during the Texinfo macro expansion, not during its +% definition. It gets all the arguments values and assigns them to macros +% macarg.ARGNAME +% +% #1 is the macro name +% #2 is the list of argument names +% #3 is the list of argument values +\def\getargvals@#1#2#3{% + \def\macargdeflist@{}% + \def\saveparamlist@{#2}% Need to keep a copy for parameter expansion. + \def\paramlist{#2,\nil@}% + \def\macroname{#1}% + \begingroup + \macroargctxt + \def\argvaluelist{#3,\nil@}% + \def\@tempa{#3}% + \ifx\@tempa\empty + \setemptyargvalues@ + \else + \getargvals@@ + \fi +} + +% +\def\getargvals@@{% + \ifx\paramlist\nilm@ + % Some sanity check needed here that \argvaluelist is also empty. + \ifx\argvaluelist\nillm@ + \else + \errhelp = \EMsimple + \errmessage{Too many arguments in macro `\macroname'!}% + \fi + \let\next\macargexpandinbody@ + \else + \ifx\argvaluelist\nillm@ + % No more arguments values passed to macro. Set remaining named-arg + % macros to empty. + \let\next\setemptyargvalues@ + \else + % pop current arg name into \@tempb + \def\@tempa##1{\pop@{\@tempb}{\paramlist}##1\endargs@}% + \expandafter\@tempa\expandafter{\paramlist}% + % pop current argument value into \@tempc + \def\@tempa##1{\longpop@{\@tempc}{\argvaluelist}##1\endargs@}% + \expandafter\@tempa\expandafter{\argvaluelist}% + % Here \@tempb is the current arg name and \@tempc is the current arg value. + % First place the new argument macro definition into \@tempd + \expandafter\macname\expandafter{\@tempc}% + \expandafter\let\csname macarg.\@tempb\endcsname\relax + \expandafter\def\expandafter\@tempe\expandafter{% + \csname macarg.\@tempb\endcsname}% + \edef\@tempd{\long\def\@tempe{\the\macname}}% + \push@\@tempd\macargdeflist@ + \let\next\getargvals@@ + \fi + \fi + \next +} + +\def\push@#1#2{% + \expandafter\expandafter\expandafter\def + \expandafter\expandafter\expandafter#2% + \expandafter\expandafter\expandafter{% + \expandafter#1#2}% +} + +% Replace arguments by their values in the macro body, and place the result +% in macro \@tempa +\def\macvalstoargs@{% + % To do this we use the property that token registers that are \the'ed + % within an \edef expand only once. So we are going to place all argument + % values into respective token registers. + % + % First we save the token context, and initialize argument numbering. + \begingroup + \paramno0\relax + % Then, for each argument number #N, we place the corresponding argument + % value into a new token list register \toks#N + \expandafter\putargsintokens@\saveparamlist@,;,% + % Then, we expand the body so that argument are replaced by their + % values. The trick for values not to be expanded themselves is that they + % are within tokens and that tokens expand only once in an \edef . + \edef\@tempc{\csname mac.\macroname .body\endcsname}% + % Now we restore the token stack pointer to free the token list registers + % which we have used, but we make sure that expanded body is saved after + % group. + \expandafter + \endgroup + \expandafter\def\expandafter\@tempa\expandafter{\@tempc}% + } + +\def\macargexpandinbody@{% + %% Define the named-macro outside of this group and then close this group. + \expandafter + \endgroup + \macargdeflist@ + % First the replace in body the macro arguments by their values, the result + % is in \@tempa . + \macvalstoargs@ + % Then we point at the \norecurse or \gobble (for recursive) macro value + % with \@tempb . + \expandafter\let\expandafter\@tempb\csname mac.\macroname .recurse\endcsname + % Depending on whether it is recursive or not, we need some tailing + % \egroup . + \ifx\@tempb\gobble + \let\@tempc\relax + \else + \let\@tempc\egroup + \fi + % And now we do the real job: + \edef\@tempd{\noexpand\@tempb{\macroname}\noexpand\scanmacro{\@tempa}\@tempc}% + \@tempd +} + +\def\putargsintokens@#1,{% + \if#1;\let\next\relax + \else + \let\next\putargsintokens@ + % First we allocate the new token list register, and give it a temporary + % alias \@tempb . + \toksdef\@tempb\the\paramno + % Then we place the argument value into that token list register. + \expandafter\let\expandafter\@tempa\csname macarg.#1\endcsname + \expandafter\@tempb\expandafter{\@tempa}% + \advance\paramno by 1\relax + \fi + \next +} + +% Save the token stack pointer into macro #1 +\def\texisavetoksstackpoint#1{\edef#1{\the\@cclvi}} +% Restore the token stack pointer from number in macro #1 +\def\texirestoretoksstackpoint#1{\expandafter\mathchardef\expandafter\@cclvi#1\relax} +% newtoks that can be used non \outer . +\def\texinonouternewtoks{\alloc@ 5\toks \toksdef \@cclvi} + +% Tailing missing arguments are set to empty +\def\setemptyargvalues@{% + \ifx\paramlist\nilm@ + \let\next\macargexpandinbody@ + \else + \expandafter\setemptyargvaluesparser@\paramlist\endargs@ + \let\next\setemptyargvalues@ + \fi + \next +} + +\def\setemptyargvaluesparser@#1,#2\endargs@{% + \expandafter\def\expandafter\@tempa\expandafter{% + \expandafter\def\csname macarg.#1\endcsname{}}% + \push@\@tempa\macargdeflist@ + \def\paramlist{#2}% +} + +% #1 is the element target macro +% #2 is the list macro +% #3,#4\endargs@ is the list value +\def\pop@#1#2#3,#4\endargs@{% + \def#1{#3}% + \def#2{#4}% +} +\long\def\longpop@#1#2#3,#4\endargs@{% + \long\def#1{#3}% + \long\def#2{#4}% +} + +% This defines a Texinfo @macro. There are eight cases: recursive and +% nonrecursive macros of zero, one, up to nine, and many arguments. +% Much magic with \expandafter here. +% \xdef is used so that macro definitions will survive the file +% they're defined in; @include reads the file inside a group. +% +\def\defmacro{% + \let\hash=##% convert placeholders to macro parameter chars + \ifrecursive + \ifcase\paramno + % 0 + \expandafter\xdef\csname\the\macname\endcsname{% + \noexpand\scanmacro{\temp}}% + \or % 1 + \expandafter\xdef\csname\the\macname\endcsname{% + \bgroup\noexpand\macroargctxt + \noexpand\braceorline + \expandafter\noexpand\csname\the\macname xxx\endcsname}% + \expandafter\xdef\csname\the\macname xxx\endcsname##1{% + \egroup\noexpand\scanmacro{\temp}}% + \else + \ifnum\paramno<10\relax % at most 9 + \expandafter\xdef\csname\the\macname\endcsname{% + \bgroup\noexpand\macroargctxt + \noexpand\csname\the\macname xx\endcsname}% + \expandafter\xdef\csname\the\macname xx\endcsname##1{% + \expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}% + \expandafter\expandafter + \expandafter\xdef + \expandafter\expandafter + \csname\the\macname xxx\endcsname + \paramlist{\egroup\noexpand\scanmacro{\temp}}% + \else % 10 or more + \expandafter\xdef\csname\the\macname\endcsname{% + \noexpand\getargvals@{\the\macname}{\argl}% + }% + \global\expandafter\let\csname mac.\the\macname .body\endcsname\temp + \global\expandafter\let\csname mac.\the\macname .recurse\endcsname\gobble + \fi + \fi + \else + \ifcase\paramno + % 0 + \expandafter\xdef\csname\the\macname\endcsname{% + \noexpand\norecurse{\the\macname}% + \noexpand\scanmacro{\temp}\egroup}% + \or % 1 + \expandafter\xdef\csname\the\macname\endcsname{% + \bgroup\noexpand\macroargctxt + \noexpand\braceorline + \expandafter\noexpand\csname\the\macname xxx\endcsname}% + \expandafter\xdef\csname\the\macname xxx\endcsname##1{% + \egroup + \noexpand\norecurse{\the\macname}% + \noexpand\scanmacro{\temp}\egroup}% + \else % at most 9 + \ifnum\paramno<10\relax + \expandafter\xdef\csname\the\macname\endcsname{% + \bgroup\noexpand\macroargctxt + \expandafter\noexpand\csname\the\macname xx\endcsname}% + \expandafter\xdef\csname\the\macname xx\endcsname##1{% + \expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}% + \expandafter\expandafter + \expandafter\xdef + \expandafter\expandafter + \csname\the\macname xxx\endcsname + \paramlist{% + \egroup + \noexpand\norecurse{\the\macname}% + \noexpand\scanmacro{\temp}\egroup}% + \else % 10 or more: + \expandafter\xdef\csname\the\macname\endcsname{% + \noexpand\getargvals@{\the\macname}{\argl}% + }% + \global\expandafter\let\csname mac.\the\macname .body\endcsname\temp + \global\expandafter\let\csname mac.\the\macname .recurse\endcsname\norecurse + \fi + \fi + \fi} + +\catcode `\@\texiatcatcode\relax + +\def\norecurse#1{\bgroup\cslet{#1}{macsave.#1}} + +% \braceorline decides whether the next nonwhitespace character is a +% {. If so it reads up to the closing }, if not, it reads the whole +% line. Whatever was read is then fed to the next control sequence +% as an argument (by \parsebrace or \parsearg). +% +\def\braceorline#1{\let\macnamexxx=#1\futurelet\nchar\braceorlinexxx} +\def\braceorlinexxx{% + \ifx\nchar\bgroup\else + \expandafter\parsearg + \fi \macnamexxx} + + +% @alias. +% We need some trickery to remove the optional spaces around the equal +% sign. Make them active and then expand them all to nothing. +% +\def\alias{\parseargusing\obeyspaces\aliasxxx} +\def\aliasxxx #1{\aliasyyy#1\relax} +\def\aliasyyy #1=#2\relax{% + {% + \expandafter\let\obeyedspace=\empty + \addtomacrolist{#1}% + \xdef\next{\global\let\makecsname{#1}=\makecsname{#2}}% + }% + \next +} + + +\message{cross references,} + +\newwrite\auxfile +\newif\ifhavexrefs % True if xref values are known. +\newif\ifwarnedxrefs % True if we warned once that they aren't known. + +% @inforef is relatively simple. +\def\inforef #1{\inforefzzz #1,,,,**} +\def\inforefzzz #1,#2,#3,#4**{% + \putwordSee{} \putwordInfo{} \putwordfile{} \file{\ignorespaces #3{}}, + node \samp{\ignorespaces#1{}}} + +% @node's only job in TeX is to define \lastnode, which is used in +% cross-references. The @node line might or might not have commas, and +% might or might not have spaces before the first comma, like: +% @node foo , bar , ... +% We don't want such trailing spaces in the node name. +% +\parseargdef\node{\checkenv{}\donode #1 ,\finishnodeparse} +% +% also remove a trailing comma, in case of something like this: +% @node Help-Cross, , , Cross-refs +\def\donode#1 ,#2\finishnodeparse{\dodonode #1,\finishnodeparse} +\def\dodonode#1,#2\finishnodeparse{\gdef\lastnode{#1}} + +\let\nwnode=\node +\let\lastnode=\empty + +% Write a cross-reference definition for the current node. #1 is the +% type (Ynumbered, Yappendix, Ynothing). +% +\def\donoderef#1{% + \ifx\lastnode\empty\else + \setref{\lastnode}{#1}% + \global\let\lastnode=\empty + \fi +} + +% @anchor{NAME} -- define xref target at arbitrary point. +% +\newcount\savesfregister +% +\def\savesf{\relax \ifhmode \savesfregister=\spacefactor \fi} +\def\restoresf{\relax \ifhmode \spacefactor=\savesfregister \fi} +\def\anchor#1{\savesf \setref{#1}{Ynothing}\restoresf \ignorespaces} + +% \setref{NAME}{SNT} defines a cross-reference point NAME (a node or an +% anchor), which consists of three parts: +% 1) NAME-title - the current sectioning name taken from \lastsection, +% or the anchor name. +% 2) NAME-snt - section number and type, passed as the SNT arg, or +% empty for anchors. +% 3) NAME-pg - the page number. +% +% This is called from \donoderef, \anchor, and \dofloat. In the case of +% floats, there is an additional part, which is not written here: +% 4) NAME-lof - the text as it should appear in a @listoffloats. +% +\def\setref#1#2{% + \pdfmkdest{#1}% + \iflinks + {% + \atdummies % preserve commands, but don't expand them + \edef\writexrdef##1##2{% + \write\auxfile{@xrdef{#1-% #1 of \setref, expanded by the \edef + ##1}{##2}}% these are parameters of \writexrdef + }% + \toks0 = \expandafter{\lastsection}% + \immediate \writexrdef{title}{\the\toks0 }% + \immediate \writexrdef{snt}{\csname #2\endcsname}% \Ynumbered etc. + \safewhatsit{\writexrdef{pg}{\folio}}% will be written later, at \shipout + }% + \fi +} + +% @xrefautosectiontitle on|off says whether @section(ing) names are used +% automatically in xrefs, if the third arg is not explicitly specified. +% This was provided as a "secret" @set xref-automatic-section-title +% variable, now it's official. +% +\parseargdef\xrefautomaticsectiontitle{% + \def\temp{#1}% + \ifx\temp\onword + \expandafter\let\csname SETxref-automatic-section-title\endcsname + = \empty + \else\ifx\temp\offword + \expandafter\let\csname SETxref-automatic-section-title\endcsname + = \relax + \else + \errhelp = \EMsimple + \errmessage{Unknown @xrefautomaticsectiontitle value `\temp', + must be on|off}% + \fi\fi +} + +% +% @xref, @pxref, and @ref generate cross-references. For \xrefX, #1 is +% the node name, #2 the name of the Info cross-reference, #3 the printed +% node name, #4 the name of the Info file, #5 the name of the printed +% manual. All but the node name can be omitted. +% +\def\pxref#1{\putwordsee{} \xrefX[#1,,,,,,,]} +\def\xref#1{\putwordSee{} \xrefX[#1,,,,,,,]} +\def\ref#1{\xrefX[#1,,,,,,,]} +% +\newbox\toprefbox +\newbox\printedrefnamebox +\newbox\infofilenamebox +\newbox\printedmanualbox +% +\def\xrefX[#1,#2,#3,#4,#5,#6]{\begingroup + \unsepspaces + % + % Get args without leading/trailing spaces. + \def\printedrefname{\ignorespaces #3}% + \setbox\printedrefnamebox = \hbox{\printedrefname\unskip}% + % + \def\infofilename{\ignorespaces #4}% + \setbox\infofilenamebox = \hbox{\infofilename\unskip}% + % + \def\printedmanual{\ignorespaces #5}% + \setbox\printedmanualbox = \hbox{\printedmanual\unskip}% + % + % If the printed reference name (arg #3) was not explicitly given in + % the @xref, figure out what we want to use. + \ifdim \wd\printedrefnamebox = 0pt + % No printed node name was explicitly given. + \expandafter\ifx\csname SETxref-automatic-section-title\endcsname \relax + % Not auto section-title: use node name inside the square brackets. + \def\printedrefname{\ignorespaces #1}% + \else + % Auto section-title: use chapter/section title inside + % the square brackets if we have it. + \ifdim \wd\printedmanualbox > 0pt + % It is in another manual, so we don't have it; use node name. + \def\printedrefname{\ignorespaces #1}% + \else + \ifhavexrefs + % We (should) know the real title if we have the xref values. + \def\printedrefname{\refx{#1-title}{}}% + \else + % Otherwise just copy the Info node name. + \def\printedrefname{\ignorespaces #1}% + \fi% + \fi + \fi + \fi + % + % Make link in pdf output. + \ifpdf + {\indexnofonts + \turnoffactive + \makevalueexpandable + % This expands tokens, so do it after making catcode changes, so _ + % etc. don't get their TeX definitions. This ignores all spaces in + % #4, including (wrongly) those in the middle of the filename. + \getfilename{#4}% + % + % This (wrongly) does not take account of leading or trailing + % spaces in #1, which should be ignored. + \edef\pdfxrefdest{#1}% + \ifx\pdfxrefdest\empty + \def\pdfxrefdest{Top}% no empty targets + \else + \txiescapepdf\pdfxrefdest % escape PDF special chars + \fi + % + \leavevmode + \startlink attr{/Border [0 0 0]}% + \ifnum\filenamelength>0 + goto file{\the\filename.pdf} name{\pdfxrefdest}% + \else + goto name{\pdfmkpgn{\pdfxrefdest}}% + \fi + }% + \setcolor{\linkcolor}% + \fi + % + % Float references are printed completely differently: "Figure 1.2" + % instead of "[somenode], p.3". We distinguish them by the + % LABEL-title being set to a magic string. + {% + % Have to otherify everything special to allow the \csname to + % include an _ in the xref name, etc. + \indexnofonts + \turnoffactive + \expandafter\global\expandafter\let\expandafter\Xthisreftitle + \csname XR#1-title\endcsname + }% + \iffloat\Xthisreftitle + % If the user specified the print name (third arg) to the ref, + % print it instead of our usual "Figure 1.2". + \ifdim\wd\printedrefnamebox = 0pt + \refx{#1-snt}{}% + \else + \printedrefname + \fi + % + % If the user also gave the printed manual name (fifth arg), append + % "in MANUALNAME". + \ifdim \wd\printedmanualbox > 0pt + \space \putwordin{} \cite{\printedmanual}% + \fi + \else + % node/anchor (non-float) references. + % + % If we use \unhbox to print the node names, TeX does not insert + % empty discretionaries after hyphens, which means that it will not + % find a line break at a hyphen in a node names. Since some manuals + % are best written with fairly long node names, containing hyphens, + % this is a loss. Therefore, we give the text of the node name + % again, so it is as if TeX is seeing it for the first time. + % + \ifdim \wd\printedmanualbox > 0pt + % Cross-manual reference with a printed manual name. + % + \crossmanualxref{\cite{\printedmanual\unskip}}% + % + \else\ifdim \wd\infofilenamebox > 0pt + % Cross-manual reference with only an info filename (arg 4), no + % printed manual name (arg 5). This is essentially the same as + % the case above; we output the filename, since we have nothing else. + % + \crossmanualxref{\code{\infofilename\unskip}}% + % + \else + % Reference within this manual. + % + % _ (for example) has to be the character _ for the purposes of the + % control sequence corresponding to the node, but it has to expand + % into the usual \leavevmode...\vrule stuff for purposes of + % printing. So we \turnoffactive for the \refx-snt, back on for the + % printing, back off for the \refx-pg. + {\turnoffactive + % Only output a following space if the -snt ref is nonempty; for + % @unnumbered and @anchor, it won't be. + \setbox2 = \hbox{\ignorespaces \refx{#1-snt}{}}% + \ifdim \wd2 > 0pt \refx{#1-snt}\space\fi + }% + % output the `[mynode]' via the macro below so it can be overridden. + \xrefprintnodename\printedrefname + % + % But we always want a comma and a space: + ,\space + % + % output the `page 3'. + \turnoffactive \putwordpage\tie\refx{#1-pg}{}% + \fi\fi + \fi + \endlink +\endgroup} + +% Output a cross-manual xref to #1. Used just above (twice). +% +% Only include the text "Section ``foo'' in" if the foo is neither +% missing or Top. Thus, @xref{,,,foo,The Foo Manual} outputs simply +% "see The Foo Manual", the idea being to refer to the whole manual. +% +% But, this being TeX, we can't easily compare our node name against the +% string "Top" while ignoring the possible spaces before and after in +% the input. By adding the arbitrary 7sp below, we make it much less +% likely that a real node name would have the same width as "Top" (e.g., +% in a monospaced font). Hopefully it will never happen in practice. +% +% For the same basic reason, we retypeset the "Top" at every +% reference, since the current font is indeterminate. +% +\def\crossmanualxref#1{% + \setbox\toprefbox = \hbox{Top\kern7sp}% + \setbox2 = \hbox{\ignorespaces \printedrefname \unskip \kern7sp}% + \ifdim \wd2 > 7sp % nonempty? + \ifdim \wd2 = \wd\toprefbox \else % same as Top? + \putwordSection{} ``\printedrefname'' \putwordin{}\space + \fi + \fi + #1% +} + +% This macro is called from \xrefX for the `[nodename]' part of xref +% output. It's a separate macro only so it can be changed more easily, +% since square brackets don't work well in some documents. Particularly +% one that Bob is working on :). +% +\def\xrefprintnodename#1{[#1]} + +% Things referred to by \setref. +% +\def\Ynothing{} +\def\Yomitfromtoc{} +\def\Ynumbered{% + \ifnum\secno=0 + \putwordChapter@tie \the\chapno + \else \ifnum\subsecno=0 + \putwordSection@tie \the\chapno.\the\secno + \else \ifnum\subsubsecno=0 + \putwordSection@tie \the\chapno.\the\secno.\the\subsecno + \else + \putwordSection@tie \the\chapno.\the\secno.\the\subsecno.\the\subsubsecno + \fi\fi\fi +} +\def\Yappendix{% + \ifnum\secno=0 + \putwordAppendix@tie @char\the\appendixno{}% + \else \ifnum\subsecno=0 + \putwordSection@tie @char\the\appendixno.\the\secno + \else \ifnum\subsubsecno=0 + \putwordSection@tie @char\the\appendixno.\the\secno.\the\subsecno + \else + \putwordSection@tie + @char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno + \fi\fi\fi +} + +% Define \refx{NAME}{SUFFIX} to reference a cross-reference string named NAME. +% If its value is nonempty, SUFFIX is output afterward. +% +\def\refx#1#2{% + {% + \indexnofonts + \otherbackslash + \expandafter\global\expandafter\let\expandafter\thisrefX + \csname XR#1\endcsname + }% + \ifx\thisrefX\relax + % If not defined, say something at least. + \angleleft un\-de\-fined\angleright + \iflinks + \ifhavexrefs + {\toks0 = {#1}% avoid expansion of possibly-complex value + \message{\linenumber Undefined cross reference `\the\toks0'.}}% + \else + \ifwarnedxrefs\else + \global\warnedxrefstrue + \message{Cross reference values unknown; you must run TeX again.}% + \fi + \fi + \fi + \else + % It's defined, so just use it. + \thisrefX + \fi + #2% Output the suffix in any case. +} + +% This is the macro invoked by entries in the aux file. Usually it's +% just a \def (we prepend XR to the control sequence name to avoid +% collisions). But if this is a float type, we have more work to do. +% +\def\xrdef#1#2{% + {% The node name might contain 8-bit characters, which in our current + % implementation are changed to commands like @'e. Don't let these + % mess up the control sequence name. + \indexnofonts + \turnoffactive + \xdef\safexrefname{#1}% + }% + % + \expandafter\gdef\csname XR\safexrefname\endcsname{#2}% remember this xref + % + % Was that xref control sequence that we just defined for a float? + \expandafter\iffloat\csname XR\safexrefname\endcsname + % it was a float, and we have the (safe) float type in \iffloattype. + \expandafter\let\expandafter\floatlist + \csname floatlist\iffloattype\endcsname + % + % Is this the first time we've seen this float type? + \expandafter\ifx\floatlist\relax + \toks0 = {\do}% yes, so just \do + \else + % had it before, so preserve previous elements in list. + \toks0 = \expandafter{\floatlist\do}% + \fi + % + % Remember this xref in the control sequence \floatlistFLOATTYPE, + % for later use in \listoffloats. + \expandafter\xdef\csname floatlist\iffloattype\endcsname{\the\toks0 + {\safexrefname}}% + \fi +} + +% Read the last existing aux file, if any. No error if none exists. +% +\def\tryauxfile{% + \openin 1 \jobname.aux + \ifeof 1 \else + \readdatafile{aux}% + \global\havexrefstrue + \fi + \closein 1 +} + +\def\setupdatafile{% + \catcode`\^^@=\other + \catcode`\^^A=\other + \catcode`\^^B=\other + \catcode`\^^C=\other + \catcode`\^^D=\other + \catcode`\^^E=\other + \catcode`\^^F=\other + \catcode`\^^G=\other + \catcode`\^^H=\other + \catcode`\^^K=\other + \catcode`\^^L=\other + \catcode`\^^N=\other + \catcode`\^^P=\other + \catcode`\^^Q=\other + \catcode`\^^R=\other + \catcode`\^^S=\other + \catcode`\^^T=\other + \catcode`\^^U=\other + \catcode`\^^V=\other + \catcode`\^^W=\other + \catcode`\^^X=\other + \catcode`\^^Z=\other + \catcode`\^^[=\other + \catcode`\^^\=\other + \catcode`\^^]=\other + \catcode`\^^^=\other + \catcode`\^^_=\other + % It was suggested to set the catcode of ^ to 7, which would allow ^^e4 etc. + % in xref tags, i.e., node names. But since ^^e4 notation isn't + % supported in the main text, it doesn't seem desirable. Furthermore, + % that is not enough: for node names that actually contain a ^ + % character, we would end up writing a line like this: 'xrdef {'hat + % b-title}{'hat b} and \xrdef does a \csname...\endcsname on the first + % argument, and \hat is not an expandable control sequence. It could + % all be worked out, but why? Either we support ^^ or we don't. + % + % The other change necessary for this was to define \auxhat: + % \def\auxhat{\def^{'hat }}% extra space so ok if followed by letter + % and then to call \auxhat in \setq. + % + \catcode`\^=\other + % + % Special characters. Should be turned off anyway, but... + \catcode`\~=\other + \catcode`\[=\other + \catcode`\]=\other + \catcode`\"=\other + \catcode`\_=\other + \catcode`\|=\other + \catcode`\<=\other + \catcode`\>=\other + \catcode`\$=\other + \catcode`\#=\other + \catcode`\&=\other + \catcode`\%=\other + \catcode`+=\other % avoid \+ for paranoia even though we've turned it off + % + % This is to support \ in node names and titles, since the \ + % characters end up in a \csname. It's easier than + % leaving it active and making its active definition an actual \ + % character. What I don't understand is why it works in the *value* + % of the xrdef. Seems like it should be a catcode12 \, and that + % should not typeset properly. But it works, so I'm moving on for + % now. --karl, 15jan04. + \catcode`\\=\other + % + % Make the characters 128-255 be printing characters. + {% + \count1=128 + \def\loop{% + \catcode\count1=\other + \advance\count1 by 1 + \ifnum \count1<256 \loop \fi + }% + }% + % + % @ is our escape character in .aux files, and we need braces. + \catcode`\{=1 + \catcode`\}=2 + \catcode`\@=0 +} + +\def\readdatafile#1{% +\begingroup + \setupdatafile + \input\jobname.#1 +\endgroup} + + +\message{insertions,} +% including footnotes. + +\newcount \footnoteno + +% The trailing space in the following definition for supereject is +% vital for proper filling; pages come out unaligned when you do a +% pagealignmacro call if that space before the closing brace is +% removed. (Generally, numeric constants should always be followed by a +% space to prevent strange expansion errors.) +\def\supereject{\par\penalty -20000\footnoteno =0 } + +% @footnotestyle is meaningful for Info output only. +\let\footnotestyle=\comment + +{\catcode `\@=11 +% +% Auto-number footnotes. Otherwise like plain. +\gdef\footnote{% + \let\indent=\ptexindent + \let\noindent=\ptexnoindent + \global\advance\footnoteno by \@ne + \edef\thisfootno{$^{\the\footnoteno}$}% + % + % In case the footnote comes at the end of a sentence, preserve the + % extra spacing after we do the footnote number. + \let\@sf\empty + \ifhmode\edef\@sf{\spacefactor\the\spacefactor}\ptexslash\fi + % + % Remove inadvertent blank space before typesetting the footnote number. + \unskip + \thisfootno\@sf + \dofootnote +}% + +% Don't bother with the trickery in plain.tex to not require the +% footnote text as a parameter. Our footnotes don't need to be so general. +% +% Oh yes, they do; otherwise, @ifset (and anything else that uses +% \parseargline) fails inside footnotes because the tokens are fixed when +% the footnote is read. --karl, 16nov96. +% +\gdef\dofootnote{% + \insert\footins\bgroup + % We want to typeset this text as a normal paragraph, even if the + % footnote reference occurs in (for example) a display environment. + % So reset some parameters. + \hsize=\pagewidth + \interlinepenalty\interfootnotelinepenalty + \splittopskip\ht\strutbox % top baseline for broken footnotes + \splitmaxdepth\dp\strutbox + \floatingpenalty\@MM + \leftskip\z@skip + \rightskip\z@skip + \spaceskip\z@skip + \xspaceskip\z@skip + \parindent\defaultparindent + % + \smallfonts \rm + % + % Because we use hanging indentation in footnotes, a @noindent appears + % to exdent this text, so make it be a no-op. makeinfo does not use + % hanging indentation so @noindent can still be needed within footnote + % text after an @example or the like (not that this is good style). + \let\noindent = \relax + % + % Hang the footnote text off the number. Use \everypar in case the + % footnote extends for more than one paragraph. + \everypar = {\hang}% + \textindent{\thisfootno}% + % + % Don't crash into the line above the footnote text. Since this + % expands into a box, it must come within the paragraph, lest it + % provide a place where TeX can split the footnote. + \footstrut + % + % Invoke rest of plain TeX footnote routine. + \futurelet\next\fo@t +} +}%end \catcode `\@=11 + +% In case a @footnote appears in a vbox, save the footnote text and create +% the real \insert just after the vbox finished. Otherwise, the insertion +% would be lost. +% Similarly, if a @footnote appears inside an alignment, save the footnote +% text to a box and make the \insert when a row of the table is finished. +% And the same can be done for other insert classes. --kasal, 16nov03. + +% Replace the \insert primitive by a cheating macro. +% Deeper inside, just make sure that the saved insertions are not spilled +% out prematurely. +% +\def\startsavinginserts{% + \ifx \insert\ptexinsert + \let\insert\saveinsert + \else + \let\checkinserts\relax + \fi +} + +% This \insert replacement works for both \insert\footins{foo} and +% \insert\footins\bgroup foo\egroup, but it doesn't work for \insert27{foo}. +% +\def\saveinsert#1{% + \edef\next{\noexpand\savetobox \makeSAVEname#1}% + \afterassignment\next + % swallow the left brace + \let\temp = +} +\def\makeSAVEname#1{\makecsname{SAVE\expandafter\gobble\string#1}} +\def\savetobox#1{\global\setbox#1 = \vbox\bgroup \unvbox#1} + +\def\checksaveins#1{\ifvoid#1\else \placesaveins#1\fi} + +\def\placesaveins#1{% + \ptexinsert \csname\expandafter\gobblesave\string#1\endcsname + {\box#1}% +} + +% eat @SAVE -- beware, all of them have catcode \other: +{ + \def\dospecials{\do S\do A\do V\do E} \uncatcodespecials % ;-) + \gdef\gobblesave @SAVE{} +} + +% initialization: +\def\newsaveins #1{% + \edef\next{\noexpand\newsaveinsX \makeSAVEname#1}% + \next +} +\def\newsaveinsX #1{% + \csname newbox\endcsname #1% + \expandafter\def\expandafter\checkinserts\expandafter{\checkinserts + \checksaveins #1}% +} + +% initialize: +\let\checkinserts\empty +\newsaveins\footins +\newsaveins\margin + + +% @image. We use the macros from epsf.tex to support this. +% If epsf.tex is not installed and @image is used, we complain. +% +% Check for and read epsf.tex up front. If we read it only at @image +% time, we might be inside a group, and then its definitions would get +% undone and the next image would fail. +\openin 1 = epsf.tex +\ifeof 1 \else + % Do not bother showing banner with epsf.tex v2.7k (available in + % doc/epsf.tex and on ctan). + \def\epsfannounce{\toks0 = }% + \input epsf.tex +\fi +\closein 1 +% +% We will only complain once about lack of epsf.tex. +\newif\ifwarnednoepsf +\newhelp\noepsfhelp{epsf.tex must be installed for images to + work. It is also included in the Texinfo distribution, or you can get + it from ftp://tug.org/tex/epsf.tex.} +% +\def\image#1{% + \ifx\epsfbox\thisisundefined + \ifwarnednoepsf \else + \errhelp = \noepsfhelp + \errmessage{epsf.tex not found, images will be ignored}% + \global\warnednoepsftrue + \fi + \else + \imagexxx #1,,,,,\finish + \fi +} +% +% Arguments to @image: +% #1 is (mandatory) image filename; we tack on .eps extension. +% #2 is (optional) width, #3 is (optional) height. +% #4 is (ignored optional) html alt text. +% #5 is (ignored optional) extension. +% #6 is just the usual extra ignored arg for parsing stuff. +\newif\ifimagevmode +\def\imagexxx#1,#2,#3,#4,#5,#6\finish{\begingroup + \catcode`\^^M = 5 % in case we're inside an example + \normalturnoffactive % allow _ et al. in names + % If the image is by itself, center it. + \ifvmode + \imagevmodetrue + \else \ifx\centersub\centerV + % for @center @image, we need a vbox so we can have our vertical space + \imagevmodetrue + \vbox\bgroup % vbox has better behavior than vtop herev + \fi\fi + % + \ifimagevmode + \nobreak\medskip + % Usually we'll have text after the image which will insert + % \parskip glue, so insert it here too to equalize the space + % above and below. + \nobreak\vskip\parskip + \nobreak + \fi + % + % Leave vertical mode so that indentation from an enclosing + % environment such as @quotation is respected. + % However, if we're at the top level, we don't want the + % normal paragraph indentation. + % On the other hand, if we are in the case of @center @image, we don't + % want to start a paragraph, which will create a hsize-width box and + % eradicate the centering. + \ifx\centersub\centerV\else \noindent \fi + % + % Output the image. + \ifpdf + \dopdfimage{#1}{#2}{#3}% + \else + % \epsfbox itself resets \epsf?size at each figure. + \setbox0 = \hbox{\ignorespaces #2}\ifdim\wd0 > 0pt \epsfxsize=#2\relax \fi + \setbox0 = \hbox{\ignorespaces #3}\ifdim\wd0 > 0pt \epsfysize=#3\relax \fi + \epsfbox{#1.eps}% + \fi + % + \ifimagevmode + \medskip % space after a standalone image + \fi + \ifx\centersub\centerV \egroup \fi +\endgroup} + + +% @float FLOATTYPE,LABEL,LOC ... @end float for displayed figures, tables, +% etc. We don't actually implement floating yet, we always include the +% float "here". But it seemed the best name for the future. +% +\envparseargdef\float{\eatcommaspace\eatcommaspace\dofloat#1, , ,\finish} + +% There may be a space before second and/or third parameter; delete it. +\def\eatcommaspace#1, {#1,} + +% #1 is the optional FLOATTYPE, the text label for this float, typically +% "Figure", "Table", "Example", etc. Can't contain commas. If omitted, +% this float will not be numbered and cannot be referred to. +% +% #2 is the optional xref label. Also must be present for the float to +% be referable. +% +% #3 is the optional positioning argument; for now, it is ignored. It +% will somehow specify the positions allowed to float to (here, top, bottom). +% +% We keep a separate counter for each FLOATTYPE, which we reset at each +% chapter-level command. +\let\resetallfloatnos=\empty +% +\def\dofloat#1,#2,#3,#4\finish{% + \let\thiscaption=\empty + \let\thisshortcaption=\empty + % + % don't lose footnotes inside @float. + % + % BEWARE: when the floats start float, we have to issue warning whenever an + % insert appears inside a float which could possibly float. --kasal, 26may04 + % + \startsavinginserts + % + % We can't be used inside a paragraph. + \par + % + \vtop\bgroup + \def\floattype{#1}% + \def\floatlabel{#2}% + \def\floatloc{#3}% we do nothing with this yet. + % + \ifx\floattype\empty + \let\safefloattype=\empty + \else + {% + % the floattype might have accents or other special characters, + % but we need to use it in a control sequence name. + \indexnofonts + \turnoffactive + \xdef\safefloattype{\floattype}% + }% + \fi + % + % If label is given but no type, we handle that as the empty type. + \ifx\floatlabel\empty \else + % We want each FLOATTYPE to be numbered separately (Figure 1, + % Table 1, Figure 2, ...). (And if no label, no number.) + % + \expandafter\getfloatno\csname\safefloattype floatno\endcsname + \global\advance\floatno by 1 + % + {% + % This magic value for \lastsection is output by \setref as the + % XREFLABEL-title value. \xrefX uses it to distinguish float + % labels (which have a completely different output format) from + % node and anchor labels. And \xrdef uses it to construct the + % lists of floats. + % + \edef\lastsection{\floatmagic=\safefloattype}% + \setref{\floatlabel}{Yfloat}% + }% + \fi + % + % start with \parskip glue, I guess. + \vskip\parskip + % + % Don't suppress indentation if a float happens to start a section. + \restorefirstparagraphindent +} + +% we have these possibilities: +% @float Foo,lbl & @caption{Cap}: Foo 1.1: Cap +% @float Foo,lbl & no caption: Foo 1.1 +% @float Foo & @caption{Cap}: Foo: Cap +% @float Foo & no caption: Foo +% @float ,lbl & Caption{Cap}: 1.1: Cap +% @float ,lbl & no caption: 1.1 +% @float & @caption{Cap}: Cap +% @float & no caption: +% +\def\Efloat{% + \let\floatident = \empty + % + % In all cases, if we have a float type, it comes first. + \ifx\floattype\empty \else \def\floatident{\floattype}\fi + % + % If we have an xref label, the number comes next. + \ifx\floatlabel\empty \else + \ifx\floattype\empty \else % if also had float type, need tie first. + \appendtomacro\floatident{\tie}% + \fi + % the number. + \appendtomacro\floatident{\chaplevelprefix\the\floatno}% + \fi + % + % Start the printed caption with what we've constructed in + % \floatident, but keep it separate; we need \floatident again. + \let\captionline = \floatident + % + \ifx\thiscaption\empty \else + \ifx\floatident\empty \else + \appendtomacro\captionline{: }% had ident, so need a colon between + \fi + % + % caption text. + \appendtomacro\captionline{\scanexp\thiscaption}% + \fi + % + % If we have anything to print, print it, with space before. + % Eventually this needs to become an \insert. + \ifx\captionline\empty \else + \vskip.5\parskip + \captionline + % + % Space below caption. + \vskip\parskip + \fi + % + % If have an xref label, write the list of floats info. Do this + % after the caption, to avoid chance of it being a breakpoint. + \ifx\floatlabel\empty \else + % Write the text that goes in the lof to the aux file as + % \floatlabel-lof. Besides \floatident, we include the short + % caption if specified, else the full caption if specified, else nothing. + {% + \atdummies + % + % since we read the caption text in the macro world, where ^^M + % is turned into a normal character, we have to scan it back, so + % we don't write the literal three characters "^^M" into the aux file. + \scanexp{% + \xdef\noexpand\gtemp{% + \ifx\thisshortcaption\empty + \thiscaption + \else + \thisshortcaption + \fi + }% + }% + \immediate\write\auxfile{@xrdef{\floatlabel-lof}{\floatident + \ifx\gtemp\empty \else : \gtemp \fi}}% + }% + \fi + \egroup % end of \vtop + % + % place the captured inserts + % + % BEWARE: when the floats start floating, we have to issue warning + % whenever an insert appears inside a float which could possibly + % float. --kasal, 26may04 + % + \checkinserts +} + +% Append the tokens #2 to the definition of macro #1, not expanding either. +% +\def\appendtomacro#1#2{% + \expandafter\def\expandafter#1\expandafter{#1#2}% +} + +% @caption, @shortcaption +% +\def\caption{\docaption\thiscaption} +\def\shortcaption{\docaption\thisshortcaption} +\def\docaption{\checkenv\float \bgroup\scanargctxt\defcaption} +\def\defcaption#1#2{\egroup \def#1{#2}} + +% The parameter is the control sequence identifying the counter we are +% going to use. Create it if it doesn't exist and assign it to \floatno. +\def\getfloatno#1{% + \ifx#1\relax + % Haven't seen this figure type before. + \csname newcount\endcsname #1% + % + % Remember to reset this floatno at the next chap. + \expandafter\gdef\expandafter\resetallfloatnos + \expandafter{\resetallfloatnos #1=0 }% + \fi + \let\floatno#1% +} + +% \setref calls this to get the XREFLABEL-snt value. We want an @xref +% to the FLOATLABEL to expand to "Figure 3.1". We call \setref when we +% first read the @float command. +% +\def\Yfloat{\floattype@tie \chaplevelprefix\the\floatno}% + +% Magic string used for the XREFLABEL-title value, so \xrefX can +% distinguish floats from other xref types. +\def\floatmagic{!!float!!} + +% #1 is the control sequence we are passed; we expand into a conditional +% which is true if #1 represents a float ref. That is, the magic +% \lastsection value which we \setref above. +% +\def\iffloat#1{\expandafter\doiffloat#1==\finish} +% +% #1 is (maybe) the \floatmagic string. If so, #2 will be the +% (safe) float type for this float. We set \iffloattype to #2. +% +\def\doiffloat#1=#2=#3\finish{% + \def\temp{#1}% + \def\iffloattype{#2}% + \ifx\temp\floatmagic +} + +% @listoffloats FLOATTYPE - print a list of floats like a table of contents. +% +\parseargdef\listoffloats{% + \def\floattype{#1}% floattype + {% + % the floattype might have accents or other special characters, + % but we need to use it in a control sequence name. + \indexnofonts + \turnoffactive + \xdef\safefloattype{\floattype}% + }% + % + % \xrdef saves the floats as a \do-list in \floatlistSAFEFLOATTYPE. + \expandafter\ifx\csname floatlist\safefloattype\endcsname \relax + \ifhavexrefs + % if the user said @listoffloats foo but never @float foo. + \message{\linenumber No `\safefloattype' floats to list.}% + \fi + \else + \begingroup + \leftskip=\tocindent % indent these entries like a toc + \let\do=\listoffloatsdo + \csname floatlist\safefloattype\endcsname + \endgroup + \fi +} + +% This is called on each entry in a list of floats. We're passed the +% xref label, in the form LABEL-title, which is how we save it in the +% aux file. We strip off the -title and look up \XRLABEL-lof, which +% has the text we're supposed to typeset here. +% +% Figures without xref labels will not be included in the list (since +% they won't appear in the aux file). +% +\def\listoffloatsdo#1{\listoffloatsdoentry#1\finish} +\def\listoffloatsdoentry#1-title\finish{{% + % Can't fully expand XR#1-lof because it can contain anything. Just + % pass the control sequence. On the other hand, XR#1-pg is just the + % page number, and we want to fully expand that so we can get a link + % in pdf output. + \toksA = \expandafter{\csname XR#1-lof\endcsname}% + % + % use the same \entry macro we use to generate the TOC and index. + \edef\writeentry{\noexpand\entry{\the\toksA}{\csname XR#1-pg\endcsname}}% + \writeentry +}} + + +\message{localization,} + +% For single-language documents, @documentlanguage is usually given very +% early, just after @documentencoding. Single argument is the language +% (de) or locale (de_DE) abbreviation. +% +{ + \catcode`\_ = \active + \globaldefs=1 +\parseargdef\documentlanguage{\begingroup + \let_=\normalunderscore % normal _ character for filenames + \tex % read txi-??.tex file in plain TeX. + % Read the file by the name they passed if it exists. + \openin 1 txi-#1.tex + \ifeof 1 + \documentlanguagetrywithoutunderscore{#1_\finish}% + \else + \globaldefs = 1 % everything in the txi-LL files needs to persist + \input txi-#1.tex + \fi + \closein 1 + \endgroup % end raw TeX +\endgroup} +% +% If they passed de_DE, and txi-de_DE.tex doesn't exist, +% try txi-de.tex. +% +\gdef\documentlanguagetrywithoutunderscore#1_#2\finish{% + \openin 1 txi-#1.tex + \ifeof 1 + \errhelp = \nolanghelp + \errmessage{Cannot read language file txi-#1.tex}% + \else + \globaldefs = 1 % everything in the txi-LL files needs to persist + \input txi-#1.tex + \fi + \closein 1 +} +}% end of special _ catcode +% +\newhelp\nolanghelp{The given language definition file cannot be found or +is empty. Maybe you need to install it? Putting it in the current +directory should work if nowhere else does.} + +% This macro is called from txi-??.tex files; the first argument is the +% \language name to set (without the "\lang@" prefix), the second and +% third args are \{left,right}hyphenmin. +% +% The language names to pass are determined when the format is built. +% See the etex.log file created at that time, e.g., +% /usr/local/texlive/2008/texmf-var/web2c/pdftex/etex.log. +% +% With TeX Live 2008, etex now includes hyphenation patterns for all +% available languages. This means we can support hyphenation in +% Texinfo, at least to some extent. (This still doesn't solve the +% accented characters problem.) +% +\catcode`@=11 +\def\txisetlanguage#1#2#3{% + % do not set the language if the name is undefined in the current TeX. + \expandafter\ifx\csname lang@#1\endcsname \relax + \message{no patterns for #1}% + \else + \global\language = \csname lang@#1\endcsname + \fi + % but there is no harm in adjusting the hyphenmin values regardless. + \global\lefthyphenmin = #2\relax + \global\righthyphenmin = #3\relax +} + +% Helpers for encodings. +% Set the catcode of characters 128 through 255 to the specified number. +% +\def\setnonasciicharscatcode#1{% + \count255=128 + \loop\ifnum\count255<256 + \global\catcode\count255=#1\relax + \advance\count255 by 1 + \repeat +} + +\def\setnonasciicharscatcodenonglobal#1{% + \count255=128 + \loop\ifnum\count255<256 + \catcode\count255=#1\relax + \advance\count255 by 1 + \repeat +} + +% @documentencoding sets the definition of non-ASCII characters +% according to the specified encoding. +% +\parseargdef\documentencoding{% + % Encoding being declared for the document. + \def\declaredencoding{\csname #1.enc\endcsname}% + % + % Supported encodings: names converted to tokens in order to be able + % to compare them with \ifx. + \def\ascii{\csname US-ASCII.enc\endcsname}% + \def\latnine{\csname ISO-8859-15.enc\endcsname}% + \def\latone{\csname ISO-8859-1.enc\endcsname}% + \def\lattwo{\csname ISO-8859-2.enc\endcsname}% + \def\utfeight{\csname UTF-8.enc\endcsname}% + % + \ifx \declaredencoding \ascii + \asciichardefs + % + \else \ifx \declaredencoding \lattwo + \setnonasciicharscatcode\active + \lattwochardefs + % + \else \ifx \declaredencoding \latone + \setnonasciicharscatcode\active + \latonechardefs + % + \else \ifx \declaredencoding \latnine + \setnonasciicharscatcode\active + \latninechardefs + % + \else \ifx \declaredencoding \utfeight + \setnonasciicharscatcode\active + \utfeightchardefs + % + \else + \message{Unknown document encoding #1, ignoring.}% + % + \fi % utfeight + \fi % latnine + \fi % latone + \fi % lattwo + \fi % ascii +} + +% A message to be logged when using a character that isn't available +% the default font encoding (OT1). +% +\def\missingcharmsg#1{\message{Character missing in OT1 encoding: #1.}} + +% Take account of \c (plain) vs. \, (Texinfo) difference. +\def\cedilla#1{\ifx\c\ptexc\c{#1}\else\,{#1}\fi} + +% First, make active non-ASCII characters in order for them to be +% correctly categorized when TeX reads the replacement text of +% macros containing the character definitions. +\setnonasciicharscatcode\active +% +% Latin1 (ISO-8859-1) character definitions. +\def\latonechardefs{% + \gdef^^a0{\tie} + \gdef^^a1{\exclamdown} + \gdef^^a2{\missingcharmsg{CENT SIGN}} + \gdef^^a3{{\pounds}} + \gdef^^a4{\missingcharmsg{CURRENCY SIGN}} + \gdef^^a5{\missingcharmsg{YEN SIGN}} + \gdef^^a6{\missingcharmsg{BROKEN BAR}} + \gdef^^a7{\S} + \gdef^^a8{\"{}} + \gdef^^a9{\copyright} + \gdef^^aa{\ordf} + \gdef^^ab{\guillemetleft} + \gdef^^ac{$\lnot$} + \gdef^^ad{\-} + \gdef^^ae{\registeredsymbol} + \gdef^^af{\={}} + % + \gdef^^b0{\textdegree} + \gdef^^b1{$\pm$} + \gdef^^b2{$^2$} + \gdef^^b3{$^3$} + \gdef^^b4{\'{}} + \gdef^^b5{$\mu$} + \gdef^^b6{\P} + % + \gdef^^b7{$^.$} + \gdef^^b8{\cedilla\ } + \gdef^^b9{$^1$} + \gdef^^ba{\ordm} + % + \gdef^^bb{\guillemetright} + \gdef^^bc{$1\over4$} + \gdef^^bd{$1\over2$} + \gdef^^be{$3\over4$} + \gdef^^bf{\questiondown} + % + \gdef^^c0{\`A} + \gdef^^c1{\'A} + \gdef^^c2{\^A} + \gdef^^c3{\~A} + \gdef^^c4{\"A} + \gdef^^c5{\ringaccent A} + \gdef^^c6{\AE} + \gdef^^c7{\cedilla C} + \gdef^^c8{\`E} + \gdef^^c9{\'E} + \gdef^^ca{\^E} + \gdef^^cb{\"E} + \gdef^^cc{\`I} + \gdef^^cd{\'I} + \gdef^^ce{\^I} + \gdef^^cf{\"I} + % + \gdef^^d0{\DH} + \gdef^^d1{\~N} + \gdef^^d2{\`O} + \gdef^^d3{\'O} + \gdef^^d4{\^O} + \gdef^^d5{\~O} + \gdef^^d6{\"O} + \gdef^^d7{$\times$} + \gdef^^d8{\O} + \gdef^^d9{\`U} + \gdef^^da{\'U} + \gdef^^db{\^U} + \gdef^^dc{\"U} + \gdef^^dd{\'Y} + \gdef^^de{\TH} + \gdef^^df{\ss} + % + \gdef^^e0{\`a} + \gdef^^e1{\'a} + \gdef^^e2{\^a} + \gdef^^e3{\~a} + \gdef^^e4{\"a} + \gdef^^e5{\ringaccent a} + \gdef^^e6{\ae} + \gdef^^e7{\cedilla c} + \gdef^^e8{\`e} + \gdef^^e9{\'e} + \gdef^^ea{\^e} + \gdef^^eb{\"e} + \gdef^^ec{\`{\dotless i}} + \gdef^^ed{\'{\dotless i}} + \gdef^^ee{\^{\dotless i}} + \gdef^^ef{\"{\dotless i}} + % + \gdef^^f0{\dh} + \gdef^^f1{\~n} + \gdef^^f2{\`o} + \gdef^^f3{\'o} + \gdef^^f4{\^o} + \gdef^^f5{\~o} + \gdef^^f6{\"o} + \gdef^^f7{$\div$} + \gdef^^f8{\o} + \gdef^^f9{\`u} + \gdef^^fa{\'u} + \gdef^^fb{\^u} + \gdef^^fc{\"u} + \gdef^^fd{\'y} + \gdef^^fe{\th} + \gdef^^ff{\"y} +} + +% Latin9 (ISO-8859-15) encoding character definitions. +\def\latninechardefs{% + % Encoding is almost identical to Latin1. + \latonechardefs + % + \gdef^^a4{\euro} + \gdef^^a6{\v S} + \gdef^^a8{\v s} + \gdef^^b4{\v Z} + \gdef^^b8{\v z} + \gdef^^bc{\OE} + \gdef^^bd{\oe} + \gdef^^be{\"Y} +} + +% Latin2 (ISO-8859-2) character definitions. +\def\lattwochardefs{% + \gdef^^a0{\tie} + \gdef^^a1{\ogonek{A}} + \gdef^^a2{\u{}} + \gdef^^a3{\L} + \gdef^^a4{\missingcharmsg{CURRENCY SIGN}} + \gdef^^a5{\v L} + \gdef^^a6{\'S} + \gdef^^a7{\S} + \gdef^^a8{\"{}} + \gdef^^a9{\v S} + \gdef^^aa{\cedilla S} + \gdef^^ab{\v T} + \gdef^^ac{\'Z} + \gdef^^ad{\-} + \gdef^^ae{\v Z} + \gdef^^af{\dotaccent Z} + % + \gdef^^b0{\textdegree} + \gdef^^b1{\ogonek{a}} + \gdef^^b2{\ogonek{ }} + \gdef^^b3{\l} + \gdef^^b4{\'{}} + \gdef^^b5{\v l} + \gdef^^b6{\'s} + \gdef^^b7{\v{}} + \gdef^^b8{\cedilla\ } + \gdef^^b9{\v s} + \gdef^^ba{\cedilla s} + \gdef^^bb{\v t} + \gdef^^bc{\'z} + \gdef^^bd{\H{}} + \gdef^^be{\v z} + \gdef^^bf{\dotaccent z} + % + \gdef^^c0{\'R} + \gdef^^c1{\'A} + \gdef^^c2{\^A} + \gdef^^c3{\u A} + \gdef^^c4{\"A} + \gdef^^c5{\'L} + \gdef^^c6{\'C} + \gdef^^c7{\cedilla C} + \gdef^^c8{\v C} + \gdef^^c9{\'E} + \gdef^^ca{\ogonek{E}} + \gdef^^cb{\"E} + \gdef^^cc{\v E} + \gdef^^cd{\'I} + \gdef^^ce{\^I} + \gdef^^cf{\v D} + % + \gdef^^d0{\DH} + \gdef^^d1{\'N} + \gdef^^d2{\v N} + \gdef^^d3{\'O} + \gdef^^d4{\^O} + \gdef^^d5{\H O} + \gdef^^d6{\"O} + \gdef^^d7{$\times$} + \gdef^^d8{\v R} + \gdef^^d9{\ringaccent U} + \gdef^^da{\'U} + \gdef^^db{\H U} + \gdef^^dc{\"U} + \gdef^^dd{\'Y} + \gdef^^de{\cedilla T} + \gdef^^df{\ss} + % + \gdef^^e0{\'r} + \gdef^^e1{\'a} + \gdef^^e2{\^a} + \gdef^^e3{\u a} + \gdef^^e4{\"a} + \gdef^^e5{\'l} + \gdef^^e6{\'c} + \gdef^^e7{\cedilla c} + \gdef^^e8{\v c} + \gdef^^e9{\'e} + \gdef^^ea{\ogonek{e}} + \gdef^^eb{\"e} + \gdef^^ec{\v e} + \gdef^^ed{\'{\dotless{i}}} + \gdef^^ee{\^{\dotless{i}}} + \gdef^^ef{\v d} + % + \gdef^^f0{\dh} + \gdef^^f1{\'n} + \gdef^^f2{\v n} + \gdef^^f3{\'o} + \gdef^^f4{\^o} + \gdef^^f5{\H o} + \gdef^^f6{\"o} + \gdef^^f7{$\div$} + \gdef^^f8{\v r} + \gdef^^f9{\ringaccent u} + \gdef^^fa{\'u} + \gdef^^fb{\H u} + \gdef^^fc{\"u} + \gdef^^fd{\'y} + \gdef^^fe{\cedilla t} + \gdef^^ff{\dotaccent{}} +} + +% UTF-8 character definitions. +% +% This code to support UTF-8 is based on LaTeX's utf8.def, with some +% changes for Texinfo conventions. It is included here under the GPL by +% permission from Frank Mittelbach and the LaTeX team. +% +\newcount\countUTFx +\newcount\countUTFy +\newcount\countUTFz + +\gdef\UTFviiiTwoOctets#1#2{\expandafter + \UTFviiiDefined\csname u8:#1\string #2\endcsname} +% +\gdef\UTFviiiThreeOctets#1#2#3{\expandafter + \UTFviiiDefined\csname u8:#1\string #2\string #3\endcsname} +% +\gdef\UTFviiiFourOctets#1#2#3#4{\expandafter + \UTFviiiDefined\csname u8:#1\string #2\string #3\string #4\endcsname} + +\gdef\UTFviiiDefined#1{% + \ifx #1\relax + \message{\linenumber Unicode char \string #1 not defined for Texinfo}% + \else + \expandafter #1% + \fi +} + +\begingroup + \catcode`\~13 + \catcode`\"12 + + \def\UTFviiiLoop{% + \global\catcode\countUTFx\active + \uccode`\~\countUTFx + \uppercase\expandafter{\UTFviiiTmp}% + \advance\countUTFx by 1 + \ifnum\countUTFx < \countUTFy + \expandafter\UTFviiiLoop + \fi} + + \countUTFx = "C2 + \countUTFy = "E0 + \def\UTFviiiTmp{% + \xdef~{\noexpand\UTFviiiTwoOctets\string~}} + \UTFviiiLoop + + \countUTFx = "E0 + \countUTFy = "F0 + \def\UTFviiiTmp{% + \xdef~{\noexpand\UTFviiiThreeOctets\string~}} + \UTFviiiLoop + + \countUTFx = "F0 + \countUTFy = "F4 + \def\UTFviiiTmp{% + \xdef~{\noexpand\UTFviiiFourOctets\string~}} + \UTFviiiLoop +\endgroup + +\begingroup + \catcode`\"=12 + \catcode`\<=12 + \catcode`\.=12 + \catcode`\,=12 + \catcode`\;=12 + \catcode`\!=12 + \catcode`\~=13 + + \gdef\DeclareUnicodeCharacter#1#2{% + \countUTFz = "#1\relax + %\wlog{\space\space defining Unicode char U+#1 (decimal \the\countUTFz)}% + \begingroup + \parseXMLCharref + \def\UTFviiiTwoOctets##1##2{% + \csname u8:##1\string ##2\endcsname}% + \def\UTFviiiThreeOctets##1##2##3{% + \csname u8:##1\string ##2\string ##3\endcsname}% + \def\UTFviiiFourOctets##1##2##3##4{% + \csname u8:##1\string ##2\string ##3\string ##4\endcsname}% + \expandafter\expandafter\expandafter\expandafter + \expandafter\expandafter\expandafter + \gdef\UTFviiiTmp{#2}% + \endgroup} + + \gdef\parseXMLCharref{% + \ifnum\countUTFz < "A0\relax + \errhelp = \EMsimple + \errmessage{Cannot define Unicode char value < 00A0}% + \else\ifnum\countUTFz < "800\relax + \parseUTFviiiA,% + \parseUTFviiiB C\UTFviiiTwoOctets.,% + \else\ifnum\countUTFz < "10000\relax + \parseUTFviiiA;% + \parseUTFviiiA,% + \parseUTFviiiB E\UTFviiiThreeOctets.{,;}% + \else + \parseUTFviiiA;% + \parseUTFviiiA,% + \parseUTFviiiA!% + \parseUTFviiiB F\UTFviiiFourOctets.{!,;}% + \fi\fi\fi + } + + \gdef\parseUTFviiiA#1{% + \countUTFx = \countUTFz + \divide\countUTFz by 64 + \countUTFy = \countUTFz + \multiply\countUTFz by 64 + \advance\countUTFx by -\countUTFz + \advance\countUTFx by 128 + \uccode `#1\countUTFx + \countUTFz = \countUTFy} + + \gdef\parseUTFviiiB#1#2#3#4{% + \advance\countUTFz by "#10\relax + \uccode `#3\countUTFz + \uppercase{\gdef\UTFviiiTmp{#2#3#4}}} +\endgroup + +\def\utfeightchardefs{% + \DeclareUnicodeCharacter{00A0}{\tie} + \DeclareUnicodeCharacter{00A1}{\exclamdown} + \DeclareUnicodeCharacter{00A3}{\pounds} + \DeclareUnicodeCharacter{00A8}{\"{ }} + \DeclareUnicodeCharacter{00A9}{\copyright} + \DeclareUnicodeCharacter{00AA}{\ordf} + \DeclareUnicodeCharacter{00AB}{\guillemetleft} + \DeclareUnicodeCharacter{00AD}{\-} + \DeclareUnicodeCharacter{00AE}{\registeredsymbol} + \DeclareUnicodeCharacter{00AF}{\={ }} + + \DeclareUnicodeCharacter{00B0}{\ringaccent{ }} + \DeclareUnicodeCharacter{00B4}{\'{ }} + \DeclareUnicodeCharacter{00B8}{\cedilla{ }} + \DeclareUnicodeCharacter{00BA}{\ordm} + \DeclareUnicodeCharacter{00BB}{\guillemetright} + \DeclareUnicodeCharacter{00BF}{\questiondown} + + \DeclareUnicodeCharacter{00C0}{\`A} + \DeclareUnicodeCharacter{00C1}{\'A} + \DeclareUnicodeCharacter{00C2}{\^A} + \DeclareUnicodeCharacter{00C3}{\~A} + \DeclareUnicodeCharacter{00C4}{\"A} + \DeclareUnicodeCharacter{00C5}{\AA} + \DeclareUnicodeCharacter{00C6}{\AE} + \DeclareUnicodeCharacter{00C7}{\cedilla{C}} + \DeclareUnicodeCharacter{00C8}{\`E} + \DeclareUnicodeCharacter{00C9}{\'E} + \DeclareUnicodeCharacter{00CA}{\^E} + \DeclareUnicodeCharacter{00CB}{\"E} + \DeclareUnicodeCharacter{00CC}{\`I} + \DeclareUnicodeCharacter{00CD}{\'I} + \DeclareUnicodeCharacter{00CE}{\^I} + \DeclareUnicodeCharacter{00CF}{\"I} + + \DeclareUnicodeCharacter{00D0}{\DH} + \DeclareUnicodeCharacter{00D1}{\~N} + \DeclareUnicodeCharacter{00D2}{\`O} + \DeclareUnicodeCharacter{00D3}{\'O} + \DeclareUnicodeCharacter{00D4}{\^O} + \DeclareUnicodeCharacter{00D5}{\~O} + \DeclareUnicodeCharacter{00D6}{\"O} + \DeclareUnicodeCharacter{00D8}{\O} + \DeclareUnicodeCharacter{00D9}{\`U} + \DeclareUnicodeCharacter{00DA}{\'U} + \DeclareUnicodeCharacter{00DB}{\^U} + \DeclareUnicodeCharacter{00DC}{\"U} + \DeclareUnicodeCharacter{00DD}{\'Y} + \DeclareUnicodeCharacter{00DE}{\TH} + \DeclareUnicodeCharacter{00DF}{\ss} + + \DeclareUnicodeCharacter{00E0}{\`a} + \DeclareUnicodeCharacter{00E1}{\'a} + \DeclareUnicodeCharacter{00E2}{\^a} + \DeclareUnicodeCharacter{00E3}{\~a} + \DeclareUnicodeCharacter{00E4}{\"a} + \DeclareUnicodeCharacter{00E5}{\aa} + \DeclareUnicodeCharacter{00E6}{\ae} + \DeclareUnicodeCharacter{00E7}{\cedilla{c}} + \DeclareUnicodeCharacter{00E8}{\`e} + \DeclareUnicodeCharacter{00E9}{\'e} + \DeclareUnicodeCharacter{00EA}{\^e} + \DeclareUnicodeCharacter{00EB}{\"e} + \DeclareUnicodeCharacter{00EC}{\`{\dotless{i}}} + \DeclareUnicodeCharacter{00ED}{\'{\dotless{i}}} + \DeclareUnicodeCharacter{00EE}{\^{\dotless{i}}} + \DeclareUnicodeCharacter{00EF}{\"{\dotless{i}}} + + \DeclareUnicodeCharacter{00F0}{\dh} + \DeclareUnicodeCharacter{00F1}{\~n} + \DeclareUnicodeCharacter{00F2}{\`o} + \DeclareUnicodeCharacter{00F3}{\'o} + \DeclareUnicodeCharacter{00F4}{\^o} + \DeclareUnicodeCharacter{00F5}{\~o} + \DeclareUnicodeCharacter{00F6}{\"o} + \DeclareUnicodeCharacter{00F8}{\o} + \DeclareUnicodeCharacter{00F9}{\`u} + \DeclareUnicodeCharacter{00FA}{\'u} + \DeclareUnicodeCharacter{00FB}{\^u} + \DeclareUnicodeCharacter{00FC}{\"u} + \DeclareUnicodeCharacter{00FD}{\'y} + \DeclareUnicodeCharacter{00FE}{\th} + \DeclareUnicodeCharacter{00FF}{\"y} + + \DeclareUnicodeCharacter{0100}{\=A} + \DeclareUnicodeCharacter{0101}{\=a} + \DeclareUnicodeCharacter{0102}{\u{A}} + \DeclareUnicodeCharacter{0103}{\u{a}} + \DeclareUnicodeCharacter{0104}{\ogonek{A}} + \DeclareUnicodeCharacter{0105}{\ogonek{a}} + \DeclareUnicodeCharacter{0106}{\'C} + \DeclareUnicodeCharacter{0107}{\'c} + \DeclareUnicodeCharacter{0108}{\^C} + \DeclareUnicodeCharacter{0109}{\^c} + \DeclareUnicodeCharacter{0118}{\ogonek{E}} + \DeclareUnicodeCharacter{0119}{\ogonek{e}} + \DeclareUnicodeCharacter{010A}{\dotaccent{C}} + \DeclareUnicodeCharacter{010B}{\dotaccent{c}} + \DeclareUnicodeCharacter{010C}{\v{C}} + \DeclareUnicodeCharacter{010D}{\v{c}} + \DeclareUnicodeCharacter{010E}{\v{D}} + + \DeclareUnicodeCharacter{0112}{\=E} + \DeclareUnicodeCharacter{0113}{\=e} + \DeclareUnicodeCharacter{0114}{\u{E}} + \DeclareUnicodeCharacter{0115}{\u{e}} + \DeclareUnicodeCharacter{0116}{\dotaccent{E}} + \DeclareUnicodeCharacter{0117}{\dotaccent{e}} + \DeclareUnicodeCharacter{011A}{\v{E}} + \DeclareUnicodeCharacter{011B}{\v{e}} + \DeclareUnicodeCharacter{011C}{\^G} + \DeclareUnicodeCharacter{011D}{\^g} + \DeclareUnicodeCharacter{011E}{\u{G}} + \DeclareUnicodeCharacter{011F}{\u{g}} + + \DeclareUnicodeCharacter{0120}{\dotaccent{G}} + \DeclareUnicodeCharacter{0121}{\dotaccent{g}} + \DeclareUnicodeCharacter{0124}{\^H} + \DeclareUnicodeCharacter{0125}{\^h} + \DeclareUnicodeCharacter{0128}{\~I} + \DeclareUnicodeCharacter{0129}{\~{\dotless{i}}} + \DeclareUnicodeCharacter{012A}{\=I} + \DeclareUnicodeCharacter{012B}{\={\dotless{i}}} + \DeclareUnicodeCharacter{012C}{\u{I}} + \DeclareUnicodeCharacter{012D}{\u{\dotless{i}}} + + \DeclareUnicodeCharacter{0130}{\dotaccent{I}} + \DeclareUnicodeCharacter{0131}{\dotless{i}} + \DeclareUnicodeCharacter{0132}{IJ} + \DeclareUnicodeCharacter{0133}{ij} + \DeclareUnicodeCharacter{0134}{\^J} + \DeclareUnicodeCharacter{0135}{\^{\dotless{j}}} + \DeclareUnicodeCharacter{0139}{\'L} + \DeclareUnicodeCharacter{013A}{\'l} + + \DeclareUnicodeCharacter{0141}{\L} + \DeclareUnicodeCharacter{0142}{\l} + \DeclareUnicodeCharacter{0143}{\'N} + \DeclareUnicodeCharacter{0144}{\'n} + \DeclareUnicodeCharacter{0147}{\v{N}} + \DeclareUnicodeCharacter{0148}{\v{n}} + \DeclareUnicodeCharacter{014C}{\=O} + \DeclareUnicodeCharacter{014D}{\=o} + \DeclareUnicodeCharacter{014E}{\u{O}} + \DeclareUnicodeCharacter{014F}{\u{o}} + + \DeclareUnicodeCharacter{0150}{\H{O}} + \DeclareUnicodeCharacter{0151}{\H{o}} + \DeclareUnicodeCharacter{0152}{\OE} + \DeclareUnicodeCharacter{0153}{\oe} + \DeclareUnicodeCharacter{0154}{\'R} + \DeclareUnicodeCharacter{0155}{\'r} + \DeclareUnicodeCharacter{0158}{\v{R}} + \DeclareUnicodeCharacter{0159}{\v{r}} + \DeclareUnicodeCharacter{015A}{\'S} + \DeclareUnicodeCharacter{015B}{\'s} + \DeclareUnicodeCharacter{015C}{\^S} + \DeclareUnicodeCharacter{015D}{\^s} + \DeclareUnicodeCharacter{015E}{\cedilla{S}} + \DeclareUnicodeCharacter{015F}{\cedilla{s}} + + \DeclareUnicodeCharacter{0160}{\v{S}} + \DeclareUnicodeCharacter{0161}{\v{s}} + \DeclareUnicodeCharacter{0162}{\cedilla{t}} + \DeclareUnicodeCharacter{0163}{\cedilla{T}} + \DeclareUnicodeCharacter{0164}{\v{T}} + + \DeclareUnicodeCharacter{0168}{\~U} + \DeclareUnicodeCharacter{0169}{\~u} + \DeclareUnicodeCharacter{016A}{\=U} + \DeclareUnicodeCharacter{016B}{\=u} + \DeclareUnicodeCharacter{016C}{\u{U}} + \DeclareUnicodeCharacter{016D}{\u{u}} + \DeclareUnicodeCharacter{016E}{\ringaccent{U}} + \DeclareUnicodeCharacter{016F}{\ringaccent{u}} + + \DeclareUnicodeCharacter{0170}{\H{U}} + \DeclareUnicodeCharacter{0171}{\H{u}} + \DeclareUnicodeCharacter{0174}{\^W} + \DeclareUnicodeCharacter{0175}{\^w} + \DeclareUnicodeCharacter{0176}{\^Y} + \DeclareUnicodeCharacter{0177}{\^y} + \DeclareUnicodeCharacter{0178}{\"Y} + \DeclareUnicodeCharacter{0179}{\'Z} + \DeclareUnicodeCharacter{017A}{\'z} + \DeclareUnicodeCharacter{017B}{\dotaccent{Z}} + \DeclareUnicodeCharacter{017C}{\dotaccent{z}} + \DeclareUnicodeCharacter{017D}{\v{Z}} + \DeclareUnicodeCharacter{017E}{\v{z}} + + \DeclareUnicodeCharacter{01C4}{D\v{Z}} + \DeclareUnicodeCharacter{01C5}{D\v{z}} + \DeclareUnicodeCharacter{01C6}{d\v{z}} + \DeclareUnicodeCharacter{01C7}{LJ} + \DeclareUnicodeCharacter{01C8}{Lj} + \DeclareUnicodeCharacter{01C9}{lj} + \DeclareUnicodeCharacter{01CA}{NJ} + \DeclareUnicodeCharacter{01CB}{Nj} + \DeclareUnicodeCharacter{01CC}{nj} + \DeclareUnicodeCharacter{01CD}{\v{A}} + \DeclareUnicodeCharacter{01CE}{\v{a}} + \DeclareUnicodeCharacter{01CF}{\v{I}} + + \DeclareUnicodeCharacter{01D0}{\v{\dotless{i}}} + \DeclareUnicodeCharacter{01D1}{\v{O}} + \DeclareUnicodeCharacter{01D2}{\v{o}} + \DeclareUnicodeCharacter{01D3}{\v{U}} + \DeclareUnicodeCharacter{01D4}{\v{u}} + + \DeclareUnicodeCharacter{01E2}{\={\AE}} + \DeclareUnicodeCharacter{01E3}{\={\ae}} + \DeclareUnicodeCharacter{01E6}{\v{G}} + \DeclareUnicodeCharacter{01E7}{\v{g}} + \DeclareUnicodeCharacter{01E8}{\v{K}} + \DeclareUnicodeCharacter{01E9}{\v{k}} + + \DeclareUnicodeCharacter{01F0}{\v{\dotless{j}}} + \DeclareUnicodeCharacter{01F1}{DZ} + \DeclareUnicodeCharacter{01F2}{Dz} + \DeclareUnicodeCharacter{01F3}{dz} + \DeclareUnicodeCharacter{01F4}{\'G} + \DeclareUnicodeCharacter{01F5}{\'g} + \DeclareUnicodeCharacter{01F8}{\`N} + \DeclareUnicodeCharacter{01F9}{\`n} + \DeclareUnicodeCharacter{01FC}{\'{\AE}} + \DeclareUnicodeCharacter{01FD}{\'{\ae}} + \DeclareUnicodeCharacter{01FE}{\'{\O}} + \DeclareUnicodeCharacter{01FF}{\'{\o}} + + \DeclareUnicodeCharacter{021E}{\v{H}} + \DeclareUnicodeCharacter{021F}{\v{h}} + + \DeclareUnicodeCharacter{0226}{\dotaccent{A}} + \DeclareUnicodeCharacter{0227}{\dotaccent{a}} + \DeclareUnicodeCharacter{0228}{\cedilla{E}} + \DeclareUnicodeCharacter{0229}{\cedilla{e}} + \DeclareUnicodeCharacter{022E}{\dotaccent{O}} + \DeclareUnicodeCharacter{022F}{\dotaccent{o}} + + \DeclareUnicodeCharacter{0232}{\=Y} + \DeclareUnicodeCharacter{0233}{\=y} + \DeclareUnicodeCharacter{0237}{\dotless{j}} + + \DeclareUnicodeCharacter{02DB}{\ogonek{ }} + + \DeclareUnicodeCharacter{1E02}{\dotaccent{B}} + \DeclareUnicodeCharacter{1E03}{\dotaccent{b}} + \DeclareUnicodeCharacter{1E04}{\udotaccent{B}} + \DeclareUnicodeCharacter{1E05}{\udotaccent{b}} + \DeclareUnicodeCharacter{1E06}{\ubaraccent{B}} + \DeclareUnicodeCharacter{1E07}{\ubaraccent{b}} + \DeclareUnicodeCharacter{1E0A}{\dotaccent{D}} + \DeclareUnicodeCharacter{1E0B}{\dotaccent{d}} + \DeclareUnicodeCharacter{1E0C}{\udotaccent{D}} + \DeclareUnicodeCharacter{1E0D}{\udotaccent{d}} + \DeclareUnicodeCharacter{1E0E}{\ubaraccent{D}} + \DeclareUnicodeCharacter{1E0F}{\ubaraccent{d}} + + \DeclareUnicodeCharacter{1E1E}{\dotaccent{F}} + \DeclareUnicodeCharacter{1E1F}{\dotaccent{f}} + + \DeclareUnicodeCharacter{1E20}{\=G} + \DeclareUnicodeCharacter{1E21}{\=g} + \DeclareUnicodeCharacter{1E22}{\dotaccent{H}} + \DeclareUnicodeCharacter{1E23}{\dotaccent{h}} + \DeclareUnicodeCharacter{1E24}{\udotaccent{H}} + \DeclareUnicodeCharacter{1E25}{\udotaccent{h}} + \DeclareUnicodeCharacter{1E26}{\"H} + \DeclareUnicodeCharacter{1E27}{\"h} + + \DeclareUnicodeCharacter{1E30}{\'K} + \DeclareUnicodeCharacter{1E31}{\'k} + \DeclareUnicodeCharacter{1E32}{\udotaccent{K}} + \DeclareUnicodeCharacter{1E33}{\udotaccent{k}} + \DeclareUnicodeCharacter{1E34}{\ubaraccent{K}} + \DeclareUnicodeCharacter{1E35}{\ubaraccent{k}} + \DeclareUnicodeCharacter{1E36}{\udotaccent{L}} + \DeclareUnicodeCharacter{1E37}{\udotaccent{l}} + \DeclareUnicodeCharacter{1E3A}{\ubaraccent{L}} + \DeclareUnicodeCharacter{1E3B}{\ubaraccent{l}} + \DeclareUnicodeCharacter{1E3E}{\'M} + \DeclareUnicodeCharacter{1E3F}{\'m} + + \DeclareUnicodeCharacter{1E40}{\dotaccent{M}} + \DeclareUnicodeCharacter{1E41}{\dotaccent{m}} + \DeclareUnicodeCharacter{1E42}{\udotaccent{M}} + \DeclareUnicodeCharacter{1E43}{\udotaccent{m}} + \DeclareUnicodeCharacter{1E44}{\dotaccent{N}} + \DeclareUnicodeCharacter{1E45}{\dotaccent{n}} + \DeclareUnicodeCharacter{1E46}{\udotaccent{N}} + \DeclareUnicodeCharacter{1E47}{\udotaccent{n}} + \DeclareUnicodeCharacter{1E48}{\ubaraccent{N}} + \DeclareUnicodeCharacter{1E49}{\ubaraccent{n}} + + \DeclareUnicodeCharacter{1E54}{\'P} + \DeclareUnicodeCharacter{1E55}{\'p} + \DeclareUnicodeCharacter{1E56}{\dotaccent{P}} + \DeclareUnicodeCharacter{1E57}{\dotaccent{p}} + \DeclareUnicodeCharacter{1E58}{\dotaccent{R}} + \DeclareUnicodeCharacter{1E59}{\dotaccent{r}} + \DeclareUnicodeCharacter{1E5A}{\udotaccent{R}} + \DeclareUnicodeCharacter{1E5B}{\udotaccent{r}} + \DeclareUnicodeCharacter{1E5E}{\ubaraccent{R}} + \DeclareUnicodeCharacter{1E5F}{\ubaraccent{r}} + + \DeclareUnicodeCharacter{1E60}{\dotaccent{S}} + \DeclareUnicodeCharacter{1E61}{\dotaccent{s}} + \DeclareUnicodeCharacter{1E62}{\udotaccent{S}} + \DeclareUnicodeCharacter{1E63}{\udotaccent{s}} + \DeclareUnicodeCharacter{1E6A}{\dotaccent{T}} + \DeclareUnicodeCharacter{1E6B}{\dotaccent{t}} + \DeclareUnicodeCharacter{1E6C}{\udotaccent{T}} + \DeclareUnicodeCharacter{1E6D}{\udotaccent{t}} + \DeclareUnicodeCharacter{1E6E}{\ubaraccent{T}} + \DeclareUnicodeCharacter{1E6F}{\ubaraccent{t}} + + \DeclareUnicodeCharacter{1E7C}{\~V} + \DeclareUnicodeCharacter{1E7D}{\~v} + \DeclareUnicodeCharacter{1E7E}{\udotaccent{V}} + \DeclareUnicodeCharacter{1E7F}{\udotaccent{v}} + + \DeclareUnicodeCharacter{1E80}{\`W} + \DeclareUnicodeCharacter{1E81}{\`w} + \DeclareUnicodeCharacter{1E82}{\'W} + \DeclareUnicodeCharacter{1E83}{\'w} + \DeclareUnicodeCharacter{1E84}{\"W} + \DeclareUnicodeCharacter{1E85}{\"w} + \DeclareUnicodeCharacter{1E86}{\dotaccent{W}} + \DeclareUnicodeCharacter{1E87}{\dotaccent{w}} + \DeclareUnicodeCharacter{1E88}{\udotaccent{W}} + \DeclareUnicodeCharacter{1E89}{\udotaccent{w}} + \DeclareUnicodeCharacter{1E8A}{\dotaccent{X}} + \DeclareUnicodeCharacter{1E8B}{\dotaccent{x}} + \DeclareUnicodeCharacter{1E8C}{\"X} + \DeclareUnicodeCharacter{1E8D}{\"x} + \DeclareUnicodeCharacter{1E8E}{\dotaccent{Y}} + \DeclareUnicodeCharacter{1E8F}{\dotaccent{y}} + + \DeclareUnicodeCharacter{1E90}{\^Z} + \DeclareUnicodeCharacter{1E91}{\^z} + \DeclareUnicodeCharacter{1E92}{\udotaccent{Z}} + \DeclareUnicodeCharacter{1E93}{\udotaccent{z}} + \DeclareUnicodeCharacter{1E94}{\ubaraccent{Z}} + \DeclareUnicodeCharacter{1E95}{\ubaraccent{z}} + \DeclareUnicodeCharacter{1E96}{\ubaraccent{h}} + \DeclareUnicodeCharacter{1E97}{\"t} + \DeclareUnicodeCharacter{1E98}{\ringaccent{w}} + \DeclareUnicodeCharacter{1E99}{\ringaccent{y}} + + \DeclareUnicodeCharacter{1EA0}{\udotaccent{A}} + \DeclareUnicodeCharacter{1EA1}{\udotaccent{a}} + + \DeclareUnicodeCharacter{1EB8}{\udotaccent{E}} + \DeclareUnicodeCharacter{1EB9}{\udotaccent{e}} + \DeclareUnicodeCharacter{1EBC}{\~E} + \DeclareUnicodeCharacter{1EBD}{\~e} + + \DeclareUnicodeCharacter{1ECA}{\udotaccent{I}} + \DeclareUnicodeCharacter{1ECB}{\udotaccent{i}} + \DeclareUnicodeCharacter{1ECC}{\udotaccent{O}} + \DeclareUnicodeCharacter{1ECD}{\udotaccent{o}} + + \DeclareUnicodeCharacter{1EE4}{\udotaccent{U}} + \DeclareUnicodeCharacter{1EE5}{\udotaccent{u}} + + \DeclareUnicodeCharacter{1EF2}{\`Y} + \DeclareUnicodeCharacter{1EF3}{\`y} + \DeclareUnicodeCharacter{1EF4}{\udotaccent{Y}} + + \DeclareUnicodeCharacter{1EF8}{\~Y} + \DeclareUnicodeCharacter{1EF9}{\~y} + + \DeclareUnicodeCharacter{2013}{--} + \DeclareUnicodeCharacter{2014}{---} + \DeclareUnicodeCharacter{2018}{\quoteleft} + \DeclareUnicodeCharacter{2019}{\quoteright} + \DeclareUnicodeCharacter{201A}{\quotesinglbase} + \DeclareUnicodeCharacter{201C}{\quotedblleft} + \DeclareUnicodeCharacter{201D}{\quotedblright} + \DeclareUnicodeCharacter{201E}{\quotedblbase} + \DeclareUnicodeCharacter{2022}{\bullet} + \DeclareUnicodeCharacter{2026}{\dots} + \DeclareUnicodeCharacter{2039}{\guilsinglleft} + \DeclareUnicodeCharacter{203A}{\guilsinglright} + \DeclareUnicodeCharacter{20AC}{\euro} + + \DeclareUnicodeCharacter{2192}{\expansion} + \DeclareUnicodeCharacter{21D2}{\result} + + \DeclareUnicodeCharacter{2212}{\minus} + \DeclareUnicodeCharacter{2217}{\point} + \DeclareUnicodeCharacter{2261}{\equiv} +}% end of \utfeightchardefs + + +% US-ASCII character definitions. +\def\asciichardefs{% nothing need be done + \relax +} + +% Make non-ASCII characters printable again for compatibility with +% existing Texinfo documents that may use them, even without declaring a +% document encoding. +% +\setnonasciicharscatcode \other + + +\message{formatting,} + +\newdimen\defaultparindent \defaultparindent = 15pt + +\chapheadingskip = 15pt plus 4pt minus 2pt +\secheadingskip = 12pt plus 3pt minus 2pt +\subsecheadingskip = 9pt plus 2pt minus 2pt + +% Prevent underfull vbox error messages. +\vbadness = 10000 + +% Don't be very finicky about underfull hboxes, either. +\hbadness = 6666 + +% Following George Bush, get rid of widows and orphans. +\widowpenalty=10000 +\clubpenalty=10000 + +% Use TeX 3.0's \emergencystretch to help line breaking, but if we're +% using an old version of TeX, don't do anything. We want the amount of +% stretch added to depend on the line length, hence the dependence on +% \hsize. We call this whenever the paper size is set. +% +\def\setemergencystretch{% + \ifx\emergencystretch\thisisundefined + % Allow us to assign to \emergencystretch anyway. + \def\emergencystretch{\dimen0}% + \else + \emergencystretch = .15\hsize + \fi +} + +% Parameters in order: 1) textheight; 2) textwidth; +% 3) voffset; 4) hoffset; 5) binding offset; 6) topskip; +% 7) physical page height; 8) physical page width. +% +% We also call \setleading{\textleading}, so the caller should define +% \textleading. The caller should also set \parskip. +% +\def\internalpagesizes#1#2#3#4#5#6#7#8{% + \voffset = #3\relax + \topskip = #6\relax + \splittopskip = \topskip + % + \vsize = #1\relax + \advance\vsize by \topskip + \outervsize = \vsize + \advance\outervsize by 2\topandbottommargin + \pageheight = \vsize + % + \hsize = #2\relax + \outerhsize = \hsize + \advance\outerhsize by 0.5in + \pagewidth = \hsize + % + \normaloffset = #4\relax + \bindingoffset = #5\relax + % + \ifpdf + \pdfpageheight #7\relax + \pdfpagewidth #8\relax + % if we don't reset these, they will remain at "1 true in" of + % whatever layout pdftex was dumped with. + \pdfhorigin = 1 true in + \pdfvorigin = 1 true in + \fi + % + \setleading{\textleading} + % + \parindent = \defaultparindent + \setemergencystretch +} + +% @letterpaper (the default). +\def\letterpaper{{\globaldefs = 1 + \parskip = 3pt plus 2pt minus 1pt + \textleading = 13.2pt + % + % If page is nothing but text, make it come out even. + \internalpagesizes{607.2pt}{6in}% that's 46 lines + {\voffset}{.25in}% + {\bindingoffset}{36pt}% + {11in}{8.5in}% +}} + +% Use @smallbook to reset parameters for 7x9.25 trim size. +\def\smallbook{{\globaldefs = 1 + \parskip = 2pt plus 1pt + \textleading = 12pt + % + \internalpagesizes{7.5in}{5in}% + {-.2in}{0in}% + {\bindingoffset}{16pt}% + {9.25in}{7in}% + % + \lispnarrowing = 0.3in + \tolerance = 700 + \hfuzz = 1pt + \contentsrightmargin = 0pt + \defbodyindent = .5cm +}} + +% Use @smallerbook to reset parameters for 6x9 trim size. +% (Just testing, parameters still in flux.) +\def\smallerbook{{\globaldefs = 1 + \parskip = 1.5pt plus 1pt + \textleading = 12pt + % + \internalpagesizes{7.4in}{4.8in}% + {-.2in}{-.4in}% + {0pt}{14pt}% + {9in}{6in}% + % + \lispnarrowing = 0.25in + \tolerance = 700 + \hfuzz = 1pt + \contentsrightmargin = 0pt + \defbodyindent = .4cm +}} + +% Use @afourpaper to print on European A4 paper. +\def\afourpaper{{\globaldefs = 1 + \parskip = 3pt plus 2pt minus 1pt + \textleading = 13.2pt + % + % Double-side printing via postscript on Laserjet 4050 + % prints double-sided nicely when \bindingoffset=10mm and \hoffset=-6mm. + % To change the settings for a different printer or situation, adjust + % \normaloffset until the front-side and back-side texts align. Then + % do the same for \bindingoffset. You can set these for testing in + % your texinfo source file like this: + % @tex + % \global\normaloffset = -6mm + % \global\bindingoffset = 10mm + % @end tex + \internalpagesizes{673.2pt}{160mm}% that's 51 lines + {\voffset}{\hoffset}% + {\bindingoffset}{44pt}% + {297mm}{210mm}% + % + \tolerance = 700 + \hfuzz = 1pt + \contentsrightmargin = 0pt + \defbodyindent = 5mm +}} + +% Use @afivepaper to print on European A5 paper. +% From romildo@urano.iceb.ufop.br, 2 July 2000. +% He also recommends making @example and @lisp be small. +\def\afivepaper{{\globaldefs = 1 + \parskip = 2pt plus 1pt minus 0.1pt + \textleading = 12.5pt + % + \internalpagesizes{160mm}{120mm}% + {\voffset}{\hoffset}% + {\bindingoffset}{8pt}% + {210mm}{148mm}% + % + \lispnarrowing = 0.2in + \tolerance = 800 + \hfuzz = 1.2pt + \contentsrightmargin = 0pt + \defbodyindent = 2mm + \tableindent = 12mm +}} + +% A specific text layout, 24x15cm overall, intended for A4 paper. +\def\afourlatex{{\globaldefs = 1 + \afourpaper + \internalpagesizes{237mm}{150mm}% + {\voffset}{4.6mm}% + {\bindingoffset}{7mm}% + {297mm}{210mm}% + % + % Must explicitly reset to 0 because we call \afourpaper. + \globaldefs = 0 +}} + +% Use @afourwide to print on A4 paper in landscape format. +\def\afourwide{{\globaldefs = 1 + \afourpaper + \internalpagesizes{241mm}{165mm}% + {\voffset}{-2.95mm}% + {\bindingoffset}{7mm}% + {297mm}{210mm}% + \globaldefs = 0 +}} + +% @pagesizes TEXTHEIGHT[,TEXTWIDTH] +% Perhaps we should allow setting the margins, \topskip, \parskip, +% and/or leading, also. Or perhaps we should compute them somehow. +% +\parseargdef\pagesizes{\pagesizesyyy #1,,\finish} +\def\pagesizesyyy#1,#2,#3\finish{{% + \setbox0 = \hbox{\ignorespaces #2}\ifdim\wd0 > 0pt \hsize=#2\relax \fi + \globaldefs = 1 + % + \parskip = 3pt plus 2pt minus 1pt + \setleading{\textleading}% + % + \dimen0 = #1\relax + \advance\dimen0 by \voffset + % + \dimen2 = \hsize + \advance\dimen2 by \normaloffset + % + \internalpagesizes{#1}{\hsize}% + {\voffset}{\normaloffset}% + {\bindingoffset}{44pt}% + {\dimen0}{\dimen2}% +}} + +% Set default to letter. +% +\letterpaper + + +\message{and turning on texinfo input format.} + +\def^^L{\par} % remove \outer, so ^L can appear in an @comment + +% DEL is a comment character, in case @c does not suffice. +\catcode`\^^? = 14 + +% Define macros to output various characters with catcode for normal text. +\catcode`\"=\other \def\normaldoublequote{"} +\catcode`\$=\other \def\normaldollar{$}%$ font-lock fix +\catcode`\+=\other \def\normalplus{+} +\catcode`\<=\other \def\normalless{<} +\catcode`\>=\other \def\normalgreater{>} +\catcode`\^=\other \def\normalcaret{^} +\catcode`\_=\other \def\normalunderscore{_} +\catcode`\|=\other \def\normalverticalbar{|} +\catcode`\~=\other \def\normaltilde{~} + +% This macro is used to make a character print one way in \tt +% (where it can probably be output as-is), and another way in other fonts, +% where something hairier probably needs to be done. +% +% #1 is what to print if we are indeed using \tt; #2 is what to print +% otherwise. Since all the Computer Modern typewriter fonts have zero +% interword stretch (and shrink), and it is reasonable to expect all +% typewriter fonts to have this, we can check that font parameter. +% +\def\ifusingtt#1#2{\ifdim \fontdimen3\font=0pt #1\else #2\fi} + +% Same as above, but check for italic font. Actually this also catches +% non-italic slanted fonts since it is impossible to distinguish them from +% italic fonts. But since this is only used by $ and it uses \sl anyway +% this is not a problem. +\def\ifusingit#1#2{\ifdim \fontdimen1\font>0pt #1\else #2\fi} + +% Turn off all special characters except @ +% (and those which the user can use as if they were ordinary). +% Most of these we simply print from the \tt font, but for some, we can +% use math or other variants that look better in normal text. + +\catcode`\"=\active +\def\activedoublequote{{\tt\char34}} +\let"=\activedoublequote +\catcode`\~=\active +\def~{{\tt\char126}} +\chardef\hat=`\^ +\catcode`\^=\active +\def^{{\tt \hat}} + +\catcode`\_=\active +\def_{\ifusingtt\normalunderscore\_} +\let\realunder=_ +% Subroutine for the previous macro. +\def\_{\leavevmode \kern.07em \vbox{\hrule width.3em height.1ex}\kern .07em } + +\catcode`\|=\active +\def|{{\tt\char124}} +\chardef \less=`\< +\catcode`\<=\active +\def<{{\tt \less}} +\chardef \gtr=`\> +\catcode`\>=\active +\def>{{\tt \gtr}} +\catcode`\+=\active +\def+{{\tt \char 43}} +\catcode`\$=\active +\def${\ifusingit{{\sl\$}}\normaldollar}%$ font-lock fix + +% If a .fmt file is being used, characters that might appear in a file +% name cannot be active until we have parsed the command line. +% So turn them off again, and have \everyjob (or @setfilename) turn them on. +% \otherifyactive is called near the end of this file. +\def\otherifyactive{\catcode`+=\other \catcode`\_=\other} + +% Used sometimes to turn off (effectively) the active characters even after +% parsing them. +\def\turnoffactive{% + \normalturnoffactive + \otherbackslash +} + +\catcode`\@=0 + +% \backslashcurfont outputs one backslash character in current font, +% as in \char`\\. +\global\chardef\backslashcurfont=`\\ +\global\let\rawbackslashxx=\backslashcurfont % let existing .??s files work + +% \realbackslash is an actual character `\' with catcode other, and +% \doublebackslash is two of them (for the pdf outlines). +{\catcode`\\=\other @gdef@realbackslash{\} @gdef@doublebackslash{\\}} + +% In texinfo, backslash is an active character; it prints the backslash +% in fixed width font. +\catcode`\\=\active % @ for escape char from now on. + +% The story here is that in math mode, the \char of \backslashcurfont +% ends up printing the roman \ from the math symbol font (because \char +% in math mode uses the \mathcode, and plain.tex sets +% \mathcode`\\="026E). It seems better for @backslashchar{} to always +% print a typewriter backslash, hence we use an explicit \mathchar, +% which is the decimal equivalent of "715c (class 7, e.g., use \fam; +% ignored family value; char position "5C). We can't use " for the +% usual hex value because it has already been made active. +@def@normalbackslash{{@tt @ifmmode @mathchar29020 @else @backslashcurfont @fi}} +@let@backslashchar = @normalbackslash % @backslashchar{} is for user documents. + +% On startup, @fixbackslash assigns: +% @let \ = @normalbackslash +% \rawbackslash defines an active \ to do \backslashcurfont. +% \otherbackslash defines an active \ to be a literal `\' character with +% catcode other. We switch back and forth between these. +@gdef@rawbackslash{@let\=@backslashcurfont} +@gdef@otherbackslash{@let\=@realbackslash} + +% Same as @turnoffactive except outputs \ as {\tt\char`\\} instead of +% the literal character `\'. Also revert - to its normal character, in +% case the active - from code has slipped in. +% +{@catcode`- = @active + @gdef@normalturnoffactive{% + @let-=@normaldash + @let"=@normaldoublequote + @let$=@normaldollar %$ font-lock fix + @let+=@normalplus + @let<=@normalless + @let>=@normalgreater + @let\=@normalbackslash + @let^=@normalcaret + @let_=@normalunderscore + @let|=@normalverticalbar + @let~=@normaltilde + @markupsetuplqdefault + @markupsetuprqdefault + @unsepspaces + } +} + +% Make _ and + \other characters, temporarily. +% This is canceled by @fixbackslash. +@otherifyactive + +% If a .fmt file is being used, we don't want the `\input texinfo' to show up. +% That is what \eatinput is for; after that, the `\' should revert to printing +% a backslash. +% +@gdef@eatinput input texinfo{@fixbackslash} +@global@let\ = @eatinput + +% On the other hand, perhaps the file did not have a `\input texinfo'. Then +% the first `\' in the file would cause an error. This macro tries to fix +% that, assuming it is called before the first `\' could plausibly occur. +% Also turn back on active characters that might appear in the input +% file name, in case not using a pre-dumped format. +% +@gdef@fixbackslash{% + @ifx\@eatinput @let\ = @normalbackslash @fi + @catcode`+=@active + @catcode`@_=@active +} + +% Say @foo, not \foo, in error messages. +@escapechar = `@@ + +% These (along with & and #) are made active for url-breaking, so need +% active definitions as the normal characters. +@def@normaldot{.} +@def@normalquest{?} +@def@normalslash{/} + +% These look ok in all fonts, so just make them not special. +% @hashchar{} gets its own user-level command, because of #line. +@catcode`@& = @other @def@normalamp{&} +@catcode`@# = @other @def@normalhash{#} +@catcode`@% = @other @def@normalpercent{%} + +@let @hashchar = @normalhash + +@c Finally, make ` and ' active, so that txicodequoteundirected and +@c txicodequotebacktick work right in, e.g., @w{@code{`foo'}}. If we +@c don't make ` and ' active, @code will not get them as active chars. +@c Do this last of all since we use ` in the previous @catcode assignments. +@catcode`@'=@active +@catcode`@`=@active +@markupsetuplqdefault +@markupsetuprqdefault + +@c Local variables: +@c eval: (add-hook 'write-file-hooks 'time-stamp) +@c page-delimiter: "^\\\\message" +@c time-stamp-start: "def\\\\texinfoversion{" +@c time-stamp-format: "%:y-%02m-%02d.%02H" +@c time-stamp-end: "}" +@c End: + +@c vim:sw=2: + +@ignore + arch-tag: e1b36e32-c96e-4135-a41a-0b2efa2ea115 +@end ignore diff --git a/gsl-2.5/doc/usage.rst b/gsl-2.5/doc/usage.rst new file mode 100644 index 00000000..d6956169 --- /dev/null +++ b/gsl-2.5/doc/usage.rst @@ -0,0 +1,482 @@ +.. index:: + single: standards conformance, ANSI C + single: ANSI C, use of + single: C extensions, compatible use of + single: compatibility + +***************** +Using the Library +***************** + +.. include:: include.rst + +This chapter describes how to compile programs that use GSL, and +introduces its conventions. + +An Example Program +================== + +The following short program demonstrates the use of the library by +computing the value of the Bessel function :math:`J_0(x)` for :math:`x=5`: + +.. include:: examples/intro.c + :code: + +The output is shown below, and should be correct to double-precision +accuracy [#f1]_, + +.. include:: examples/intro.txt + :code: + +The steps needed to compile this program are described +in the following sections. + +.. index:: + single: compiling programs, include paths + single: including GSL header files + single: header files, including + +Compiling and Linking +===================== + +The library header files are installed in their own :file:`gsl` +directory. You should write any preprocessor include statements with a +:file:`gsl/` directory prefix thus:: + + #include + +If the directory is not installed on the standard search path of your +compiler you will also need to provide its location to the preprocessor +as a command line flag. The default location of the :file:`gsl` +directory is :file:`/usr/local/include/gsl`. A typical compilation +command for a source file :file:`example.c` with the GNU C compiler +:code:`gcc` is:: + + $ gcc -Wall -I/usr/local/include -c example.c + +This results in an object file :file:`example.o`. The default +include path for :code:`gcc` searches :file:`/usr/local/include` automatically so +the :code:`-I` option can actually be omitted when GSL is installed +in its default location. + +.. index:: + single: compiling programs, library paths + single: linking with GSL libraries + single: libraries, linking with + +Linking programs with the library +--------------------------------- + +The library is installed as a single file, :file:`libgsl.a`. A shared +version of the library :file:`libgsl.so` is also installed on systems +that support shared libraries. The default location of these files is +:file:`/usr/local/lib`. If this directory is not on the standard search +path of your linker you will also need to provide its location as a +command line flag. + +To link against the library you need to specify +both the main library and a supporting |cblas| library, which +provides standard basic linear algebra subroutines. A suitable +|cblas| implementation is provided in the library +:file:`libgslcblas.a` if your system does not provide one. The following +example shows how to link an application with the library:: + + $ gcc -L/usr/local/lib example.o -lgsl -lgslcblas -lm + +The default library path for :code:`gcc` searches :file:`/usr/local/lib` +automatically so the :code:`-L` option can be omitted when GSL is +installed in its default location. + +The option :code:`-lm` links with the system math library. On some +systems it is not needed. [#f2]_ + +For a tutorial introduction to the GNU C Compiler and related programs, +see "An Introduction to GCC" (ISBN 0954161793). [#f3]_ + +Linking with an alternative BLAS library +---------------------------------------- + +The following command line shows how you would link the same application +with an alternative |cblas| library :file:`libcblas.a`:: + + $ gcc example.o -lgsl -lcblas -lm + +For the best performance an optimized platform-specific |cblas| +library should be used for :code:`-lcblas`. The library must conform to +the |cblas| standard. The |atlas| package provides a portable +high-performance |blas| library with a |cblas| interface. It is +free software and should be installed for any work requiring fast vector +and matrix operations. The following command line will link with the +|atlas| library and its |cblas| interface:: + + $ gcc example.o -lgsl -lcblas -latlas -lm + +If the |atlas| library is installed in a non-standard directory use +the :code:`-L` option to add it to the search path, as described above. + +For more information about |blas| functions see :ref:`chap_blas-support`. + +.. index:: + single: shared libraries + single: libraries, shared + single: LD_LIBRARY_PATH + +Shared Libraries +================ + +To run a program linked with the shared version of the library the +operating system must be able to locate the corresponding :file:`.so` +file at runtime. If the library cannot be found, the following error +will occur:: + + $ ./a.out + ./a.out: error while loading shared libraries: + libgsl.so.0: cannot open shared object file: No such file or directory + +To avoid this error, either modify the system dynamic linker +configuration [#f4]_ or +define the shell variable :code:`LD_LIBRARY_PATH` to include the +directory where the library is installed. + +For example, in the Bourne shell (:code:`/bin/sh` or :code:`/bin/bash`), +the library search path can be set with the following commands:: + + $ LD_LIBRARY_PATH=/usr/local/lib + $ export LD_LIBRARY_PATH + $ ./example + +In the C-shell (:code:`/bin/csh` or :code:`/bin/tcsh`) the equivalent +command is:: + + % setenv LD_LIBRARY_PATH /usr/local/lib + +The standard prompt for the C-shell in the example above is the percent +character %, and should not be typed as part of the command. + +To save retyping these commands each session they can be placed in an +individual or system-wide login file. + +To compile a statically linked version of the program, use the +:code:`-static` flag in :code:`gcc`:: + + $ gcc -static example.o -lgsl -lgslcblas -lm + +ANSI C Compliance +================= + +The library is written in ANSI C and is intended to conform to the ANSI +C standard (C89). It should be portable to any system with a working +ANSI C compiler. + +The library does not rely on any non-ANSI extensions in the interface it +exports to the user. Programs you write using GSL can be ANSI +compliant. Extensions which can be used in a way compatible with pure +ANSI C are supported, however, via conditional compilation. This allows +the library to take advantage of compiler extensions on those platforms +which support them. + +When an ANSI C feature is known to be broken on a particular system the +library will exclude any related functions at compile-time. This should +make it impossible to link a program that would use these functions and +give incorrect results. + +To avoid namespace conflicts all exported function names and variables +have the prefix :code:`gsl_`, while exported macros have the prefix +:code:`GSL_`. + +.. index:: + single: inline functions + single: HAVE_INLINE + single: GSL_C99_INLINE + single: C99, inline keyword + single: extern inline + +.. _sec_inline-functions: + +Inline functions +================ + +The :code:`inline` keyword is not part of the original ANSI C standard +(C89) so the library does not export any inline function definitions +by default. Inline functions were introduced officially in the newer +C99 standard but most C89 compilers have also included :code:`inline` as +an extension for a long time. + +To allow the use of inline functions, the library provides optional +inline versions of performance-critical routines by conditional +compilation in the exported header files. The inline versions of these +functions can be included by defining the macro :code:`HAVE_INLINE` +when compiling an application:: + + $ gcc -Wall -c -DHAVE_INLINE example.c + +If you use :code:`autoconf` this macro can be defined automatically. If +you do not define the macro :code:`HAVE_INLINE` then the slower +non-inlined versions of the functions will be used instead. + +By default, the actual form of the inline keyword is :code:`extern +inline`, which is a :code:`gcc` extension that eliminates unnecessary +function definitions. If the form :code:`extern inline` causes +problems with other compilers a stricter autoconf test can be used, +see :ref:`chap_autoconf-macros`. + +When compiling with :code:`gcc` in C99 mode (:code:`gcc -std=c99`) the +header files automatically switch to C99-compatible inline function +declarations instead of :code:`extern inline`. With other C99 +compilers, define the macro :code:`GSL_C99_INLINE` to use these +declarations. + +Long double +=========== +.. index: + long double + +In general, the algorithms in the library are written for double +precision only. The :code:`long double` type is not supported for +actual computation. + +One reason for this choice is that the precision of :code:`long double` +is platform dependent. The IEEE standard only specifies the minimum +precision of extended precision numbers, while the precision of +:code:`double` is the same on all platforms. + +However, it is sometimes necessary to interact with external data in +long-double format, so the vector and matrix datatypes include +long-double versions. + +It should be noted that in some system libraries the :code:`stdio.h` +formatted input/output functions :code:`printf` and :code:`scanf` are +not implemented correctly for :code:`long double`. Undefined or +incorrect results are avoided by testing these functions during the +:code:`configure` stage of library compilation and eliminating certain +GSL functions which depend on them if necessary. The corresponding +line in the :code:`configure` output looks like this:: + + checking whether printf works with long double... no + +Consequently when :code:`long double` formatted input/output does not +work on a given system it should be impossible to link a program which +uses GSL functions dependent on this. + +If it is necessary to work on a system which does not support formatted +:code:`long double` input/output then the options are to use binary +formats or to convert :code:`long double` results into :code:`double` for +reading and writing. + +.. _portability-functions: + +Portability functions +===================== + +To help in writing portable applications GSL provides some +implementations of functions that are found in other libraries, such as +the BSD math library. You can write your application to use the native +versions of these functions, and substitute the GSL versions via a +preprocessor macro if they are unavailable on another platform. + +For example, after determining whether the BSD function :func:`hypot` is +available you can include the following macro definitions in a file +:file:`config.h` with your application:: + + /* Substitute gsl_hypot for missing system hypot */ + + #ifndef HAVE_HYPOT + #define hypot gsl_hypot + #endif + +The application source files can then use the include command +:code:`#include ` to replace each occurrence of :func:`hypot` by +:func:`gsl_hypot` when :func:`hypot` is not available. This substitution +can be made automatically if you use :code:`autoconf`, see :ref:`chap_autoconf-macros`. + +In most circumstances the best strategy is to use the native versions of +these functions when available, and fall back to GSL versions otherwise, +since this allows your application to take advantage of any +platform-specific optimizations in the system library. This is the +strategy used within GSL itself. + +.. index:: + single: alternative optimized functions + single: optimized functions, alternatives + +Alternative optimized functions +=============================== + +The main implementation of some functions in the library will not be +optimal on all architectures. For example, there are several ways to +compute a Gaussian random variate and their relative speeds are +platform-dependent. In cases like this the library provides alternative +implementations of these functions with the same interface. If you +write your application using calls to the standard implementation you +can select an alternative version later via a preprocessor definition. +It is also possible to introduce your own optimized functions this way +while retaining portability. The following lines demonstrate the use of +a platform-dependent choice of methods for sampling from the Gaussian +distribution:: + + #ifdef SPARC + #define gsl_ran_gaussian gsl_ran_gaussian_ratio_method + #endif + #ifdef INTEL + #define gsl_ran_gaussian my_gaussian + #endif + +These lines would be placed in the configuration header file +:file:`config.h` of the application, which should then be included by all +the source files. Note that the alternative implementations will not +produce bit-for-bit identical results, and in the case of random number +distributions will produce an entirely different stream of random +variates. + +Support for different numeric types +=================================== + +Many functions in the library are defined for different numeric types. +This feature is implemented by varying the name of the function with a +type-related modifier---a primitive form of C++ templates. The +modifier is inserted into the function name after the initial module +prefix. The following table shows the function names defined for all +the numeric types of an imaginary module :code:`gsl_foo` with function +:func:`fn`:: + + gsl_foo_fn double + gsl_foo_long_double_fn long double + gsl_foo_float_fn float + gsl_foo_long_fn long + gsl_foo_ulong_fn unsigned long + gsl_foo_int_fn int + gsl_foo_uint_fn unsigned int + gsl_foo_short_fn short + gsl_foo_ushort_fn unsigned short + gsl_foo_char_fn char + gsl_foo_uchar_fn unsigned char + +The normal numeric precision :code:`double` is considered the default and +does not require a suffix. For example, the function +:func:`gsl_stats_mean` computes the mean of double precision numbers, +while the function :func:`gsl_stats_int_mean` computes the mean of +integers. + +A corresponding scheme is used for library defined types, such as +:code:`gsl_vector` and :code:`gsl_matrix`. In this case the modifier is +appended to the type name. For example, if a module defines a new +type-dependent struct or typedef :code:`gsl_foo` it is modified for other +types in the following way:: + + gsl_foo double + gsl_foo_long_double long double + gsl_foo_float float + gsl_foo_long long + gsl_foo_ulong unsigned long + gsl_foo_int int + gsl_foo_uint unsigned int + gsl_foo_short short + gsl_foo_ushort unsigned short + gsl_foo_char char + gsl_foo_uchar unsigned char + +When a module contains type-dependent definitions the library provides +individual header files for each type. The filenames are modified as +shown in the below. For convenience the default header includes the +definitions for all the types. To include only the double precision +header file, or any other specific type, use its individual filename:: + + #include All types + #include double + #include long double + #include float + #include long + #include unsigned long + #include int + #include unsigned int + #include short + #include unsigned short + #include char + #include unsigned char + +.. index:: + single: C++, compatibility + single: exceptions, C++ + +Compatibility with C++ +====================== + +The library header files automatically define functions to have +:code:`extern "C"` linkage when included in C++ programs. This allows +the functions to be called directly from C++. + +To use C++ exception handling within user-defined functions passed to +the library as parameters, the library must be built with the +additional :code:`CFLAGS` compilation option :code:`-fexceptions`. + +.. index:: aliasing of arrays + +.. _aliasing-of-arrays: + +Aliasing of arrays +================== + +The library assumes that arrays, vectors and matrices passed as +modifiable arguments are not aliased and do not overlap with each other. +This removes the need for the library to handle overlapping memory +regions as a special case, and allows additional optimizations to be +used. If overlapping memory regions are passed as modifiable arguments +then the results of such functions will be undefined. If the arguments +will not be modified (for example, if a function prototype declares them +as :code:`const` arguments) then overlapping or aliased memory regions +can be safely used. + +Thread-safety +============= + +The library can be used in multi-threaded programs. All the functions +are thread-safe, in the sense that they do not use static variables. +Memory is always associated with objects and not with functions. For +functions which use *workspace* objects as temporary storage the +workspaces should be allocated on a per-thread basis. For functions +which use *table* objects as read-only memory the tables can be used +by multiple threads simultaneously. Table arguments are always declared +:code:`const` in function prototypes, to indicate that they may be +safely accessed by different threads. + +There are a small number of static global variables which are used to +control the overall behavior of the library (e.g. whether to use +range-checking, the function to call on fatal error, etc). These +variables are set directly by the user, so they should be initialized +once at program startup and not modified by different threads. + +.. index:: deprecated functions + +Deprecated Functions +==================== + +From time to time, it may be necessary for the definitions of some +functions to be altered or removed from the library. In these +circumstances the functions will first be declared *deprecated* and +then removed from subsequent versions of the library. Functions that +are deprecated can be disabled in the current release by setting the +preprocessor definition :code:`GSL_DISABLE_DEPRECATED`. This allows +existing code to be tested for forwards compatibility. + +.. index:: + single: code reuse in applications + single: source code, reuse in applications + +Code Reuse +========== + +Where possible the routines in the library have been written to avoid +dependencies between modules and files. This should make it possible to +extract individual functions for use in your own applications, without +needing to have the whole library installed. You may need to define +certain macros such as :code:`GSL_ERROR` and remove some :code:`#include` +statements in order to compile the files as standalone units. Reuse of +the library code in this way is encouraged, subject to the terms of the +GNU General Public License. + +.. rubric:: Footnotes + +.. [#f1] The last few digits may vary slightly depending on the compiler and platform used---this is normal +.. [#f2] It is not needed on MacOS X +.. [#f3] http://www.network-theory.co.uk/gcc/intro/ +.. [#f4] :file:`/etc/ld.so.conf` on GNU/Linux systems diff --git a/gsl-2.5/doc/vectors.rst b/gsl-2.5/doc/vectors.rst new file mode 100644 index 00000000..1444717e --- /dev/null +++ b/gsl-2.5/doc/vectors.rst @@ -0,0 +1,1592 @@ +******************** +Vectors and Matrices +******************** + +.. include:: include.rst + +The functions described in this chapter provide a simple vector and +matrix interface to ordinary C arrays. The memory management of these +arrays is implemented using a single underlying type, known as a +block. By writing your functions in terms of vectors and matrices you +can pass a single structure containing both data and dimensions as an +argument without needing additional function parameters. The structures +are compatible with the vector and matrix formats used by BLAS +routines. + +Data types +========== + +All the functions are available for each of the standard data-types. +The versions for :code:`double` have the prefix :code:`gsl_block`, +:code:`gsl_vector` and :code:`gsl_matrix`. Similarly the versions for +single-precision :code:`float` arrays have the prefix +:code:`gsl_block_float`, :code:`gsl_vector_float` and +:code:`gsl_matrix_float`. The full list of available types is given +below, + +=============================== ==================== +Prefix Type +=============================== ==================== +gsl_block double +gsl_block_float float +gsl_block_long_double long double +gsl_block_int int +gsl_block_uint unsigned int +gsl_block_long long +gsl_block_ulong unsigned long +gsl_block_short short +gsl_block_ushort unsigned short +gsl_block_char char +gsl_block_uchar unsigned char +gsl_block_complex complex double +gsl_block_complex_float complex float +gsl_block_complex_long_double complex long double +=============================== ==================== + +Corresponding types exist for the :code:`gsl_vector` and +:code:`gsl_matrix` functions. + +.. index:: blocks + +Blocks +====== + +For consistency all memory is allocated through a :code:`gsl_block` +structure. The structure contains two components, the size of an area of +memory and a pointer to the memory. The :code:`gsl_block` structure looks +like this, + +.. type:: gsl_block + + :: + + typedef struct + { + size_t size; + double * data; + } gsl_block; + +Vectors and matrices are made by *slicing* an underlying block. A +slice is a set of elements formed from an initial offset and a +combination of indices and step-sizes. In the case of a matrix the +step-size for the column index represents the row-length. The step-size +for a vector is known as the *stride*. + +The functions for allocating and deallocating blocks are defined in +:file:`gsl_block.h`. + +Block allocation +---------------- + +The functions for allocating memory to a block follow the style of +:code:`malloc` and :code:`free`. In addition they also perform their own +error checking. If there is insufficient memory available to allocate a +block then the functions call the GSL error handler (with an error +number of :macro:`GSL_ENOMEM`) in addition to returning a null +pointer. Thus if you use the library error handler to abort your program +then it isn't necessary to check every :code:`alloc`. + +.. function:: gsl_block * gsl_block_alloc (size_t n) + + This function allocates memory for a block of :data:`n` double-precision + elements, returning a pointer to the block struct. The block is not + initialized and so the values of its elements are undefined. Use the + function :func:`gsl_block_calloc` if you want to ensure that all the + elements are initialized to zero. + + Zero-sized requests are valid and return a non-null result. A null pointer + is returned if insufficient memory is available to create the block. + +.. function:: gsl_block * gsl_block_calloc (size_t n) + + This function allocates memory for a block and initializes all the + elements of the block to zero. + +.. function:: void gsl_block_free (gsl_block * b) + + This function frees the memory used by a block :data:`b` previously + allocated with :func:`gsl_block_alloc` or :func:`gsl_block_calloc`. + +Reading and writing blocks +-------------------------- + +The library provides functions for reading and writing blocks to a file +as binary data or formatted text. + +.. function:: int gsl_block_fwrite (FILE * stream, const gsl_block * b) + + This function writes the elements of the block :data:`b` to the stream + :data:`stream` in binary format. The return value is 0 for success and + :macro:`GSL_EFAILED` if there was a problem writing to the file. Since the + data is written in the native binary format it may not be portable + between different architectures. + +.. function:: int gsl_block_fread (FILE * stream, gsl_block * b) + + This function reads into the block :data:`b` from the open stream + :data:`stream` in binary format. The block :data:`b` must be preallocated + with the correct length since the function uses the size of :data:`b` to + determine how many bytes to read. The return value is 0 for success and + :macro:`GSL_EFAILED` if there was a problem reading from the file. The + data is assumed to have been written in the native binary format on the + same architecture. + +.. function:: int gsl_block_fprintf (FILE * stream, const gsl_block * b, const char * format) + + This function writes the elements of the block :data:`b` line-by-line to + the stream :data:`stream` using the format specifier :data:`format`, which + should be one of the :code:`%g`, :code:`%e` or :code:`%f` formats for + floating point numbers and :code:`%d` for integers. The function returns + 0 for success and :macro:`GSL_EFAILED` if there was a problem writing to + the file. + +.. function:: int gsl_block_fscanf (FILE * stream, gsl_block * b) + + This function reads formatted data from the stream :data:`stream` into the + block :data:`b`. The block :data:`b` must be preallocated with the correct + length since the function uses the size of :data:`b` to determine how many + numbers to read. The function returns 0 for success and + :macro:`GSL_EFAILED` if there was a problem reading from the file. + +Example programs for blocks +--------------------------- + +The following program shows how to allocate a block, + +.. include:: examples/block.c + :code: + +Here is the output from the program, + +.. include:: examples/block.txt + :code: + +.. index:: + single: vectors + single: stride, of vector index + +Vectors +======= + +Vectors are defined by a :type:`gsl_vector` structure which describes a +slice of a block. Different vectors can be created which point to the +same block. A vector slice is a set of equally-spaced elements of an +area of memory. + +The :type:`gsl_vector` structure contains five components, the +*size*, the *stride*, a pointer to the memory where the elements +are stored, :data:`data`, a pointer to the block owned by the vector, +:data:`block`, if any, and an ownership flag, :data:`owner`. The structure +is very simple and looks like this, + +.. type:: gsl_vector + + :: + + typedef struct + { + size_t size; + size_t stride; + double * data; + gsl_block * block; + int owner; + } gsl_vector; + +The :data:`size` is simply the number of vector elements. The range of +valid indices runs from 0 to :code:`size-1`. The :data:`stride` is the +step-size from one element to the next in physical memory, measured in +units of the appropriate datatype. The pointer :data:`data` gives the +location of the first element of the vector in memory. The pointer +:data:`block` stores the location of the memory block in which the vector +elements are located (if any). If the vector owns this block then the +:data:`owner` field is set to one and the block will be deallocated when the +vector is freed. If the vector points to a block owned by another +object then the :data:`owner` field is zero and any underlying block will not be +deallocated with the vector. + +The functions for allocating and accessing vectors are defined in +:file:`gsl_vector.h`. + +Vector allocation +----------------- + +The functions for allocating memory to a vector follow the style of +:code:`malloc` and :code:`free`. In addition they also perform their own +error checking. If there is insufficient memory available to allocate a +vector then the functions call the GSL error handler (with an error +number of :macro:`GSL_ENOMEM`) in addition to returning a null +pointer. Thus if you use the library error handler to abort your program +then it isn't necessary to check every :code:`alloc`. + +.. function:: gsl_vector * gsl_vector_alloc (size_t n) + + This function creates a vector of length n, returning a pointer to + a newly initialized vector struct. A new block is allocated for the + elements of the vector, and stored in the :data:`block` component of the + vector struct. The block is "owned" by the vector, and will be + deallocated when the vector is deallocated. + Zero-sized requests are valid and return a non-null result. + +.. function:: gsl_vector * gsl_vector_calloc (size_t n) + + This function allocates memory for a vector of length :data:`n` and + initializes all the elements of the vector to zero. + +.. function:: void gsl_vector_free (gsl_vector * v) + + This function frees a previously allocated vector :data:`v`. If the + vector was created using :func:`gsl_vector_alloc` then the block + underlying the vector will also be deallocated. If the vector has + been created from another object then the memory is still owned by + that object and will not be deallocated. + +.. index:: + single: vectors, range-checking + single: range-checking for vectors + single: bounds checking, extension to GCC + single: gcc extensions, range-checking + single: Fortran range checking, equivalent in gcc + +Accessing vector elements +------------------------- + +Unlike Fortran compilers, C compilers do not usually provide +support for range checking of vectors and matrices. [#f1]_ +The functions :func:`gsl_vector_get` and +:func:`gsl_vector_set` can perform portable range checking for you and +report an error if you attempt to access elements outside the allowed +range. + +The functions for accessing the elements of a vector or matrix are +defined in :file:`gsl_vector.h` and declared :code:`extern inline` to +eliminate function-call overhead. You must compile your program with +the preprocessor macro :macro:`HAVE_INLINE` defined to use these +functions. + +.. macro:: GSL_RANGE_CHECK_OFF + + If necessary you can turn off range checking completely without + modifying any source files by recompiling your program with the + preprocessor definition :macro:`GSL_RANGE_CHECK_OFF`. Provided your + compiler supports inline functions the effect of turning off range + checking is to replace calls to :code:`gsl_vector_get(v,i)` by + :code:`v->data[i*v->stride]` and calls to :code:`gsl_vector_set(v,i,x)` by + :code:`v->data[i*v->stride]=x`. Thus there should be no performance + penalty for using the range checking functions when range checking is + turned off. + +.. macro:: GSL_C99_INLINE + + If you use a C99 compiler which requires inline functions in header + files to be declared :code:`inline` instead of :code:`extern inline`, + define the macro :macro:`GSL_C99_INLINE` (see :ref:`sec_inline-functions`). + With GCC this is selected automatically when compiling in C99 mode + (:code:`-std=c99`). + +.. var:: gsl_check_range + + If inline functions are not used, calls to the functions + :func:`gsl_vector_get` and :func:`gsl_vector_set` will link to the + compiled versions of these functions in the library itself. The range + checking in these functions is controlled by the global integer + variable :code:`gsl_check_range`. It is enabled by default---to + disable it, set :code:`gsl_check_range` to zero. Due to function-call + overhead, there is less benefit in disabling range checking here than + for inline functions. + +.. function:: double gsl_vector_get (const gsl_vector * v, const size_t i) + + This function returns the :data:`i`-th element of a vector :data:`v`. If + :data:`i` lies outside the allowed range of 0 to :code:`size - 1` then the error + handler is invoked and 0 is returned. |inlinefn| + +.. function:: void gsl_vector_set (gsl_vector * v, const size_t i, double x) + + This function sets the value of the :data:`i`-th element of a vector + :data:`v` to :data:`x`. If :data:`i` lies outside the allowed range of 0 to + :code:`size - 1` then the error handler is invoked. |inlinefn| + +.. function:: double * gsl_vector_ptr (gsl_vector * v, size_t i) + const double * gsl_vector_const_ptr (const gsl_vector * v, size_t i) + + These functions return a pointer to the :data:`i`-th element of a vector + :data:`v`. If :data:`i` lies outside the allowed range of 0 to :code:`size - 1` + then the error handler is invoked and a null pointer is returned. |inlinefns| + +.. index:: + single: vectors, initializing + single: initializing vectors + +Initializing vector elements +---------------------------- + +.. function:: void gsl_vector_set_all (gsl_vector * v, double x) + + This function sets all the elements of the vector :data:`v` to the value + :data:`x`. + +.. function:: void gsl_vector_set_zero (gsl_vector * v) + + This function sets all the elements of the vector :data:`v` to zero. + +.. function:: int gsl_vector_set_basis (gsl_vector * v, size_t i) + + This function makes a basis vector by setting all the elements of the + vector :data:`v` to zero except for the :data:`i`-th element which is set to + one. + +Reading and writing vectors +--------------------------- + +The library provides functions for reading and writing vectors to a file +as binary data or formatted text. + +.. function:: int gsl_vector_fwrite (FILE * stream, const gsl_vector * v) + + This function writes the elements of the vector :data:`v` to the stream + :data:`stream` in binary format. The return value is 0 for success and + :macro:`GSL_EFAILED` if there was a problem writing to the file. Since the + data is written in the native binary format it may not be portable + between different architectures. + +.. function:: int gsl_vector_fread (FILE * stream, gsl_vector * v) + + This function reads into the vector :data:`v` from the open stream + :data:`stream` in binary format. The vector :data:`v` must be preallocated + with the correct length since the function uses the size of :data:`v` to + determine how many bytes to read. The return value is 0 for success and + :macro:`GSL_EFAILED` if there was a problem reading from the file. The + data is assumed to have been written in the native binary format on the + same architecture. + +.. function:: int gsl_vector_fprintf (FILE * stream, const gsl_vector * v, const char * format) + + This function writes the elements of the vector :data:`v` line-by-line to + the stream :data:`stream` using the format specifier :data:`format`, which + should be one of the :code:`%g`, :code:`%e` or :code:`%f` formats for + floating point numbers and :code:`%d` for integers. The function returns + 0 for success and :macro:`GSL_EFAILED` if there was a problem writing to + the file. + +.. function:: int gsl_vector_fscanf (FILE * stream, gsl_vector * v) + + This function reads formatted data from the stream :data:`stream` into the + vector :data:`v`. The vector :data:`v` must be preallocated with the correct + length since the function uses the size of :data:`v` to determine how many + numbers to read. The function returns 0 for success and + :macro:`GSL_EFAILED` if there was a problem reading from the file. + +Vector views +------------ + +In addition to creating vectors from slices of blocks it is also +possible to slice vectors and create vector views. For example, a +subvector of another vector can be described with a view, or two views +can be made which provide access to the even and odd elements of a +vector. + +.. type:: gsl_vector_view + gsl_vector_const_view + + A vector view is a temporary object, stored on the stack, which can be + used to operate on a subset of vector elements. Vector views can be + defined for both constant and non-constant vectors, using separate types + that preserve constness. A vector view has the type + :type:`gsl_vector_view` and a constant vector view has the type + :type:`gsl_vector_const_view`. In both cases the elements of the view + can be accessed as a :type:`gsl_vector` using the :code:`vector` component + of the view object. A pointer to a vector of type :code:`gsl_vector *` + or :code:`const gsl_vector *` can be obtained by taking the address of + this component with the :code:`&` operator. + + When using this pointer it is important to ensure that the view itself + remains in scope---the simplest way to do so is by always writing the + pointer as :code:`&view.vector`, and never storing this value + in another variable. + +.. function:: gsl_vector_view gsl_vector_subvector (gsl_vector * v, size_t offset, size_t n) + gsl_vector_const_view gsl_vector_const_subvector (const gsl_vector * v, size_t offset, size_t n) + + These functions return a vector view of a subvector of another vector + :data:`v`. The start of the new vector is offset by :data:`offset` elements + from the start of the original vector. The new vector has :data:`n` + elements. Mathematically, the :data:`i`-th element of the new vector + :data:`v'` is given by:: + + v'(i) = v->data[(offset + i)*v->stride] + + where the index :data:`i` runs from 0 to :code:`n - 1`. + + The :code:`data` pointer of the returned vector struct is set to null if + the combined parameters (:data:`offset`, :data:`n`) overrun the end of the + original vector. + + The new vector is only a view of the block underlying the original + vector, :data:`v`. The block containing the elements of :data:`v` is not + owned by the new vector. When the view goes out of scope the original + vector :data:`v` and its block will continue to exist. The original + memory can only be deallocated by freeing the original vector. Of + course, the original vector should not be deallocated while the view is + still in use. + + The function :func:`gsl_vector_const_subvector` is equivalent to + :func:`gsl_vector_subvector` but can be used for vectors which are + declared :code:`const`. + +.. function:: gsl_vector_view gsl_vector_subvector_with_stride (gsl_vector * v, size_t offset, size_t stride, size_t n) + gsl_vector_const_view gsl_vector_const_subvector_with_stride (const gsl_vector * v, size_t offset, size_t stride, size_t n) + + These functions return a vector view of a subvector of another vector + :data:`v` with an additional stride argument. The subvector is formed in + the same way as for :func:`gsl_vector_subvector` but the new vector has + :data:`n` elements with a step-size of :data:`stride` from one element to + the next in the original vector. Mathematically, the :data:`i`-th element + of the new vector :data:`v'` is given by:: + + v'(i) = v->data[(offset + i*stride)*v->stride] + + where the index :data:`i` runs from 0 to :code:`n - 1`. + + Note that subvector views give direct access to the underlying elements + of the original vector. For example, the following code will zero the + even elements of the vector :data:`v` of length :code:`n`, while leaving the + odd elements untouched:: + + gsl_vector_view v_even = gsl_vector_subvector_with_stride (v, 0, 2, n/2); + gsl_vector_set_zero (&v_even.vector); + + A vector view can be passed to any subroutine which takes a vector + argument just as a directly allocated vector would be, using + :code:`&view.vector`. For example, the following code + computes the norm of the odd elements of :data:`v` using the BLAS + routine :code:`dnrm2`:: + + gsl_vector_view v_odd = gsl_vector_subvector_with_stride (v, 1, 2, n/2); + double r = gsl_blas_dnrm2 (&v_odd.vector); + + The function :func:`gsl_vector_const_subvector_with_stride` is equivalent + to :func:`gsl_vector_subvector_with_stride` but can be used for vectors + which are declared :code:`const`. + +.. function:: gsl_vector_view gsl_vector_complex_real (gsl_vector_complex * v) + gsl_vector_const_view gsl_vector_complex_const_real (const gsl_vector_complex * v) + + These functions return a vector view of the real parts of the complex + vector :data:`v`. + + The function :func:`gsl_vector_complex_const_real` is equivalent to + :func:`gsl_vector_complex_real` but can be used for vectors which are + declared :code:`const`. + +.. function:: gsl_vector_view gsl_vector_complex_imag (gsl_vector_complex * v) + gsl_vector_const_view gsl_vector_complex_const_imag (const gsl_vector_complex * v) + + These functions return a vector view of the imaginary parts of the + complex vector :data:`v`. + + The function :func:`gsl_vector_complex_const_imag` is equivalent to + :func:`gsl_vector_complex_imag` but can be used for vectors which are + declared :code:`const`. + +.. function:: gsl_vector_view gsl_vector_view_array (double * base, size_t n) + gsl_vector_const_view gsl_vector_const_view_array (const double * base, size_t n) + + These functions return a vector view of an array. The start of the new + vector is given by :data:`base` and has :data:`n` elements. Mathematically, + the :data:`i`-th element of the new vector :data:`v'` is given by:: + + v'(i) = base[i] + + where the index :data:`i` runs from 0 to :code:`n - 1`. + + The array containing the elements of :data:`v` is not owned by the new + vector view. When the view goes out of scope the original array will + continue to exist. The original memory can only be deallocated by + freeing the original pointer :data:`base`. Of course, the original array + should not be deallocated while the view is still in use. + + The function :func:`gsl_vector_const_view_array` is equivalent to + :func:`gsl_vector_view_array` but can be used for arrays which are + declared :code:`const`. + +.. function:: gsl_vector_view gsl_vector_view_array_with_stride (double * base, size_t stride, size_t n) + gsl_vector_const_view gsl_vector_const_view_array_with_stride (const double * base, size_t stride, size_t n) + + These functions return a vector view of an array :data:`base` with an + additional stride argument. The subvector is formed in the same way as + for :func:`gsl_vector_view_array` but the new vector has :data:`n` elements + with a step-size of :data:`stride` from one element to the next in the + original array. Mathematically, the :data:`i`-th element of the new + vector :data:`v'` is given by:: + + v'(i) = base[i*stride] + + where the index :data:`i` runs from 0 to :code:`n - 1`. + + Note that the view gives direct access to the underlying elements of the + original array. A vector view can be passed to any subroutine which + takes a vector argument just as a directly allocated vector would be, + using :code:`&view.vector`. + + The function :func:`gsl_vector_const_view_array_with_stride` is + equivalent to :func:`gsl_vector_view_array_with_stride` but can be used + for arrays which are declared :code:`const`. + +.. @node Modifying subvector views +.. @subsection Modifying subvector views +.. +.. @deftypefun int gsl_vector_view_from_vector (gsl_vector * v, gsl_vector * base, size_t offset, size_t n, size_t stride) +.. This function modifies and existing vector view :data:`v` to form a new +.. view of a vector :data:`base`, starting from element :data:`offset`. The +.. vector has :data:`n` elements separated by stride :data:`stride`. Any +.. existing view in :data:`v` will be lost as a result of this function. +.. @end deftypefun +.. +.. @deftypefun int gsl_vector_view_from_array (gsl_vector * v, double * base, size_t offset, size_t n, size_t stride) +.. This function modifies and existing vector view :data:`v` to form a new +.. view of an array :data:`base`, starting from element :data:`offset`. The +.. vector has :data:`n` elements separated by stride :data:`stride`. Any +.. existing view in :data:`v` will be lost as a result of this function. +.. @end deftypefun + +.. @deftypefun {gsl_vector *} gsl_vector_alloc_from_block (gsl_block * b, size_t offset, size_t n, size_t stride) +.. This function creates a vector as a slice of an existing block :data:`b`, +.. returning a pointer to a newly initialized vector struct. The start of +.. the vector is offset by :data:`offset` elements from the start of the +.. block. The vector has :data:`n` elements, with a step-size of :data:`stride` +.. from one element to the next. Mathematically, the :data:`i`-th element of +.. the vector is given by, +.. +.. @example +.. v(i) = b->data[offset + i*stride] +.. @end example +.. @noindent +.. where the index :data:`i` runs from 0 to :code:`n-1`. +.. +.. A null pointer is returned if the combined parameters +.. (:data:`offset`, :data:`n`, :data:`stride`) overrun the end of the block or if +.. insufficient memory is available to store the vector. +.. +.. The vector is only a view of the block :data:`b`, and the block is not +.. owned by the vector. When the vector is deallocated the block :data:`b` +.. will continue to exist. This memory can only be deallocated by freeing +.. the block itself. Of course, this block should not be deallocated while +.. the vector is still in use. +.. @end deftypefun +.. +.. @deftypefun {gsl_vector *} gsl_vector_alloc_from_vector (gsl_vector * :data:`v`, size_t offset, size_t n, size_t stride) +.. This function creates a vector as a slice of another vector :data:`v`, +.. returning a pointer to a newly initialized vector struct. The start of +.. the new vector is offset by :data:`offset` elements from the start of the +.. original vector. The new vector has :data:`n` elements, with a step-size +.. of :data:`stride` from one element to the next in the original vector. +.. Mathematically, the :data:`i`-th element of the new vector :data:`v'` is +.. given by, +.. +.. @example +.. v'(i) = v->data[(offset + i*stride)*v->stride] +.. @end example +.. @noindent +.. where the index :data:`i` runs from 0 to :code:`n-1`. +.. +.. A null pointer is returned if the combined parameters +.. (:data:`offset`, :data:`n`, :data:`stride`) overrun the end of the original +.. vector or if insufficient memory is available store the new vector. +.. +.. The new vector is only a view of the block underlying the original +.. vector, :data:`v`. The block is not owned by the new vector. When the new +.. vector is deallocated the original vector :data:`v` and its block will +.. continue to exist. The original memory can only be deallocated by +.. freeing the original vector. Of course, the original vector should not +.. be deallocated while the new vector is still in use. +.. @end deftypefun + +Copying vectors +--------------- + +Common operations on vectors such as addition and multiplication are +available in the BLAS part of the library (see :ref:`chap_blas-support`). +However, it is useful to have a small number of utility +functions which do not require the full BLAS code. The following +functions fall into this category. + +.. function:: int gsl_vector_memcpy (gsl_vector * dest, const gsl_vector * src) + + This function copies the elements of the vector :data:`src` into the + vector :data:`dest`. The two vectors must have the same length. + +.. function:: int gsl_vector_swap (gsl_vector * v, gsl_vector * w) + + This function exchanges the elements of the vectors :data:`v` and :data:`w` + by copying. The two vectors must have the same length. + +Exchanging elements +------------------- + +The following functions can be used to exchange, or permute, the elements +of a vector. + +.. function:: int gsl_vector_swap_elements (gsl_vector * v, size_t i, size_t j) + + This function exchanges the :data:`i`-th and :data:`j`-th elements of the + vector :data:`v` in-place. + +.. function:: int gsl_vector_reverse (gsl_vector * v) + + This function reverses the order of the elements of the vector :data:`v`. + +Vector operations +----------------- + +.. function:: int gsl_vector_add (gsl_vector * a, const gsl_vector * b) + + This function adds the elements of vector :data:`b` to the elements of + vector :data:`a`. The result :math:`a_i \leftarrow a_i + b_i` is stored + in :data:`a` and :data:`b` remains unchanged. The two vectors must have + the same length. + +.. function:: int gsl_vector_sub (gsl_vector * a, const gsl_vector * b) + + This function subtracts the elements of vector :data:`b` from the elements of + vector :data:`a`. The result :math:`a_i \leftarrow a_i - b_i` is stored + in :data:`a` and :data:`b` remains unchanged. The two vectors must have the + same length. + +.. function:: int gsl_vector_mul (gsl_vector * a, const gsl_vector * b) + + This function multiplies the elements of vector :data:`a` by the + elements of vector :data:`b`. The result :math:`a_i \leftarrow a_i * b_i` + is stored in :data:`a` and :data:`b` remains unchanged. The two + vectors must have the same length. + +.. function:: int gsl_vector_div (gsl_vector * a, const gsl_vector * b) + + This function divides the elements of vector :data:`a` by the elements + of vector :data:`b`. The result :math:`a_i \leftarrow a_i / b_i` is + stored in :data:`a` and :data:`b` remains unchanged. The two vectors must + have the same length. + +.. function:: int gsl_vector_scale (gsl_vector * a, const double x) + + This function multiplies the elements of vector :data:`a` by the + constant factor :data:`x`. The result :math:`a_i \leftarrow x a_i` is + stored in :data:`a`. + +.. function:: int gsl_vector_add_constant (gsl_vector * a, const double x) + + This function adds the constant value :data:`x` to the elements of the + vector :data:`a`. The result :math:`a_i \leftarrow a_i + x` is stored in + :data:`a`. + +Finding maximum and minimum elements of vectors +----------------------------------------------- + +The following operations are only defined for real vectors. + +.. function:: double gsl_vector_max (const gsl_vector * v) + + This function returns the maximum value in the vector :data:`v`. + +.. function:: double gsl_vector_min (const gsl_vector * v) + + This function returns the minimum value in the vector :data:`v`. + +.. function:: void gsl_vector_minmax (const gsl_vector * v, double * min_out, double * max_out) + + This function returns the minimum and maximum values in the vector + :data:`v`, storing them in :data:`min_out` and :data:`max_out`. + +.. function:: size_t gsl_vector_max_index (const gsl_vector * v) + + This function returns the index of the maximum value in the vector :data:`v`. + When there are several equal maximum elements then the lowest index is + returned. + +.. function:: size_t gsl_vector_min_index (const gsl_vector * v) + + This function returns the index of the minimum value in the vector :data:`v`. + When there are several equal minimum elements then the lowest index is + returned. + +.. function:: void gsl_vector_minmax_index (const gsl_vector * v, size_t * imin, size_t * imax) + + This function returns the indices of the minimum and maximum values in + the vector :data:`v`, storing them in :data:`imin` and :data:`imax`. When + there are several equal minimum or maximum elements then the lowest + indices are returned. + +Vector properties +----------------- + +The following functions are defined for real and complex vectors. For +complex vectors both the real and imaginary parts must satisfy the +conditions. + +.. function:: int gsl_vector_isnull (const gsl_vector * v) + int gsl_vector_ispos (const gsl_vector * v) + int gsl_vector_isneg (const gsl_vector * v) + int gsl_vector_isnonneg (const gsl_vector * v) + + These functions return 1 if all the elements of the vector :data:`v` are + zero, strictly positive, strictly negative, or non-negative + respectively, and 0 otherwise. + +.. function:: int gsl_vector_equal (const gsl_vector * u, const gsl_vector * v) + + This function returns 1 if the vectors :data:`u` and :data:`v` are equal + (by comparison of element values) and 0 otherwise. + +Example programs for vectors +---------------------------- + +This program shows how to allocate, initialize and read from a vector +using the functions :func:`gsl_vector_alloc`, :func:`gsl_vector_set` and +:func:`gsl_vector_get`. + +.. include:: examples/vector.c + :code: + +Here is the output from the program. The final loop attempts to read +outside the range of the vector :code:`v`, and the error is trapped by +the range-checking code in :func:`gsl_vector_get`. + +:: + + $ ./a.out + v_0 = 1.23 + v_1 = 2.23 + v_2 = 3.23 + gsl: vector_source.c:12: ERROR: index out of range + Default GSL error handler invoked. + Aborted (core dumped) + +The next program shows how to write a vector to a file. + +.. include:: examples/vectorw.c + :code: + +After running this program the file :file:`test.dat` should contain the +elements of :code:`v`, written using the format specifier +:code:`%.5g`. The vector could then be read back in using the function +:code:`gsl_vector_fscanf (f, v)` as follows: + +.. include:: examples/vectorr.c + :code: + +.. index:: + single: matrices + single: physical dimension, matrices + single: trailing dimension, matrices + single: leading dimension, matrices + single: ordering, matrix elements + +Matrices +======== + +Matrices are defined by a :type:`gsl_matrix` structure which describes a +generalized slice of a block. Like a vector it represents a set of +elements in an area of memory, but uses two indices instead of one. + +.. type:: gsl_matrix + + The :type:`gsl_matrix` structure contains six components, the two + dimensions of the matrix, a physical dimension, a pointer to the memory + where the elements of the matrix are stored, :data:`data`, a pointer to + the block owned by the matrix :data:`block`, if any, and an ownership + flag, :data:`owner`. The physical dimension determines the memory layout + and can differ from the matrix dimension to allow the use of + submatrices. The :type:`gsl_matrix` structure is very simple and looks + like this:: + + typedef struct + { + size_t size1; + size_t size2; + size_t tda; + double * data; + gsl_block * block; + int owner; + } gsl_matrix; + +Matrices are stored in row-major order, meaning that each row of +elements forms a contiguous block in memory. This is the standard +"C-language ordering" of two-dimensional arrays. Note that Fortran +stores arrays in column-major order. The number of rows is :data:`size1`. +The range of valid row indices runs from 0 to :code:`size1 - 1`. Similarly +:data:`size2` is the number of columns. The range of valid column indices +runs from 0 to :code:`size2 - 1`. The physical row dimension :data:`tda`, or +*trailing dimension*, specifies the size of a row of the matrix as +laid out in memory. + +For example, in the following matrix :data:`size1` is 3, :data:`size2` is 4, +and :data:`tda` is 8. The physical memory layout of the matrix begins in +the top left hand-corner and proceeds from left to right along each row +in turn. + +:: + + 00 01 02 03 XX XX XX XX + 10 11 12 13 XX XX XX XX + 20 21 22 23 XX XX XX XX + +Each unused memory location is represented by ":code:`XX`". The +pointer :data:`data` gives the location of the first element of the matrix +in memory. The pointer :data:`block` stores the location of the memory +block in which the elements of the matrix are located (if any). If the +matrix owns this block then the :data:`owner` field is set to one and the +block will be deallocated when the matrix is freed. If the matrix is +only a slice of a block owned by another object then the :data:`owner` field is +zero and any underlying block will not be freed. + +The functions for allocating and accessing matrices are defined in +:file:`gsl_matrix.h`. + +Matrix allocation +----------------- + +The functions for allocating memory to a matrix follow the style of +:code:`malloc` and :code:`free`. They also perform their own error +checking. If there is insufficient memory available to allocate a matrix +then the functions call the GSL error handler (with an error number of +:macro:`GSL_ENOMEM`) in addition to returning a null pointer. Thus if you +use the library error handler to abort your program then it isn't +necessary to check every :code:`alloc`. + +.. function:: gsl_matrix * gsl_matrix_alloc (size_t n1, size_t n2) + + This function creates a matrix of size :data:`n1` rows by :data:`n2` columns, + returning a pointer to a newly initialized matrix struct. A new block is + allocated for the elements of the matrix, and stored in the :data:`block` + component of the matrix struct. The block is "owned" by the matrix, + and will be deallocated when the matrix is deallocated. Requesting zero + for :data:`n1` or :data:`n2` is valid and returns a non-null result. + +.. function:: gsl_matrix * gsl_matrix_calloc (size_t n1, size_t n2) + + This function allocates memory for a matrix of size :data:`n1` rows by + :data:`n2` columns and initializes all the elements of the matrix to zero. + +.. function:: void gsl_matrix_free (gsl_matrix * m) + + This function frees a previously allocated matrix :data:`m`. If the + matrix was created using :func:`gsl_matrix_alloc` then the block + underlying the matrix will also be deallocated. If the matrix has + been created from another object then the memory is still owned by + that object and will not be deallocated. + +.. index:: + single: matrices, range-checking + single: range-checking for matrices + +Accessing matrix elements +------------------------- + +The functions for accessing the elements of a matrix use the same range +checking system as vectors. You can turn off range checking by recompiling +your program with the preprocessor definition +:macro:`GSL_RANGE_CHECK_OFF`. + +The elements of the matrix are stored in "C-order", where the second +index moves continuously through memory. More precisely, the element +accessed by the function :code:`gsl_matrix_get(m,i,j)` and +:code:`gsl_matrix_set(m,i,j,x)` is:: + + m->data[i * m->tda + j] + +where :data:`tda` is the physical row-length of the matrix. + +.. function:: double gsl_matrix_get (const gsl_matrix * m, const size_t i, const size_t j) + + This function returns the :math:`(i,j)`-th element of a matrix + :data:`m`. If :data:`i` or :data:`j` lie outside the allowed range of 0 to + :code:`n1 - 1` and 0 to :code:`n2 - 1` then the error handler is invoked and 0 + is returned. |inlinefn| + +.. function:: void gsl_matrix_set (gsl_matrix * m, const size_t i, const size_t j, double x) + + This function sets the value of the :math:`(i,j)`-th element of a + matrix :data:`m` to :data:`x`. If :data:`i` or :data:`j` lies outside the + allowed range of 0 to :code:`n1 - 1` and 0 to :code:`n2 - 1` then the error + handler is invoked. |inlinefn| + +.. function:: double * gsl_matrix_ptr (gsl_matrix * m, size_t i, size_t j) + const double * gsl_matrix_const_ptr (const gsl_matrix * m, size_t i, size_t j) + + These functions return a pointer to the :math:`(i,j)`-th element of a + matrix :data:`m`. If :data:`i` or :data:`j` lie outside the allowed range of + 0 to :code:`n1 - 1` and 0 to :code:`n2 - 1` then the error handler is invoked + and a null pointer is returned. |inlinefns| + +.. index:: + single: matrices, initializing + single: initializing matrices + single: identity matrix + single: matrix, identity + single: zero matrix + single: matrix, zero + single: constant matrix + single: matrix, constant + +Initializing matrix elements +---------------------------- + +.. function:: void gsl_matrix_set_all (gsl_matrix * m, double x) + + This function sets all the elements of the matrix :data:`m` to the value + :data:`x`. + +.. function:: void gsl_matrix_set_zero (gsl_matrix * m) + + This function sets all the elements of the matrix :data:`m` to zero. + +.. function:: void gsl_matrix_set_identity (gsl_matrix * m) + + This function sets the elements of the matrix :data:`m` to the + corresponding elements of the identity matrix, :math:`m(i,j) = \delta(i,j)`, + i.e. a unit diagonal with all off-diagonal elements zero. + This applies to both square and rectangular matrices. + +Reading and writing matrices +---------------------------- + +The library provides functions for reading and writing matrices to a file +as binary data or formatted text. + +.. function:: int gsl_matrix_fwrite (FILE * stream, const gsl_matrix * m) + + This function writes the elements of the matrix :data:`m` to the stream + :data:`stream` in binary format. The return value is 0 for success and + :macro:`GSL_EFAILED` if there was a problem writing to the file. Since the + data is written in the native binary format it may not be portable + between different architectures. + +.. function:: int gsl_matrix_fread (FILE * stream, gsl_matrix * m) + + This function reads into the matrix :data:`m` from the open stream + :data:`stream` in binary format. The matrix :data:`m` must be preallocated + with the correct dimensions since the function uses the size of :data:`m` to + determine how many bytes to read. The return value is 0 for success and + :macro:`GSL_EFAILED` if there was a problem reading from the file. The + data is assumed to have been written in the native binary format on the + same architecture. + +.. function:: int gsl_matrix_fprintf (FILE * stream, const gsl_matrix * m, const char * format) + + This function writes the elements of the matrix :data:`m` line-by-line to + the stream :data:`stream` using the format specifier :data:`format`, which + should be one of the :code:`%g`, :code:`%e` or :code:`%f` formats for + floating point numbers and :code:`%d` for integers. The function returns + 0 for success and :macro:`GSL_EFAILED` if there was a problem writing to + the file. + +.. function:: int gsl_matrix_fscanf (FILE * stream, gsl_matrix * m) + + This function reads formatted data from the stream :data:`stream` into the + matrix :data:`m`. The matrix :data:`m` must be preallocated with the correct + dimensions since the function uses the size of :data:`m` to determine how many + numbers to read. The function returns 0 for success and + :macro:`GSL_EFAILED` if there was a problem reading from the file. + +Matrix views +------------ + +.. type:: gsl_matrix_view + gsl_matrix_const_view + + A matrix view is a temporary object, stored on the stack, which can be + used to operate on a subset of matrix elements. Matrix views can be + defined for both constant and non-constant matrices using separate types + that preserve constness. A matrix view has the type + :type:`gsl_matrix_view` and a constant matrix view has the type + :type:`gsl_matrix_const_view`. In both cases the elements of the view + can by accessed using the :code:`matrix` component of the view object. A + pointer :code:`gsl_matrix *` or :code:`const gsl_matrix *` can be obtained + by taking the address of the :code:`matrix` component with the :code:`&` + operator. In addition to matrix views it is also possible to create + vector views of a matrix, such as row or column views. + +.. function:: gsl_matrix_view gsl_matrix_submatrix (gsl_matrix * m, size_t k1, size_t k2, size_t n1, size_t n2) + gsl_matrix_const_view gsl_matrix_const_submatrix (const gsl_matrix * m, size_t k1, size_t k2, size_t n1, size_t n2) + + These functions return a matrix view of a submatrix of the matrix + :data:`m`. The upper-left element of the submatrix is the element + (:data:`k1`, :data:`k2`) of the original matrix. The submatrix has :data:`n1` + rows and :data:`n2` columns. The physical number of columns in memory + given by :data:`tda` is unchanged. Mathematically, the + :math:`(i,j)`-th element of the new matrix is given by:: + + m'(i,j) = m->data[(k1*m->tda + k2) + i*m->tda + j] + + where the index :data:`i` runs from 0 to :code:`n1 - 1` and the index :data:`j` + runs from 0 to :code:`n2 - 1`. + + The :code:`data` pointer of the returned matrix struct is set to null if + the combined parameters (:data:`i`, :data:`j`, :data:`n1`, :data:`n2`, :data:`tda`) + overrun the ends of the original matrix. + + The new matrix view is only a view of the block underlying the existing + matrix, :data:`m`. The block containing the elements of :data:`m` is not + owned by the new matrix view. When the view goes out of scope the + original matrix :data:`m` and its block will continue to exist. The + original memory can only be deallocated by freeing the original matrix. + Of course, the original matrix should not be deallocated while the view + is still in use. + + The function :func:`gsl_matrix_const_submatrix` is equivalent to + :func:`gsl_matrix_submatrix` but can be used for matrices which are + declared :code:`const`. + +.. function:: gsl_matrix_view gsl_matrix_view_array (double * base, size_t n1, size_t n2) + gsl_matrix_const_view gsl_matrix_const_view_array (const double * base, size_t n1, size_t n2) + + These functions return a matrix view of the array :data:`base`. The + matrix has :data:`n1` rows and :data:`n2` columns. The physical number of + columns in memory is also given by :data:`n2`. Mathematically, the + :math:`(i,j)`-th element of the new matrix is given by:: + + m'(i,j) = base[i*n2 + j] + + where the index :data:`i` runs from 0 to :code:`n1 - 1` and the index :data:`j` + runs from 0 to :code:`n2 - 1`. + + The new matrix is only a view of the array :data:`base`. When the view + goes out of scope the original array :data:`base` will continue to exist. + The original memory can only be deallocated by freeing the original + array. Of course, the original array should not be deallocated while + the view is still in use. + + The function :func:`gsl_matrix_const_view_array` is equivalent to + :func:`gsl_matrix_view_array` but can be used for matrices which are + declared :code:`const`. + +.. function:: gsl_matrix_view gsl_matrix_view_array_with_tda (double * base, size_t n1, size_t n2, size_t tda) + gsl_matrix_const_view gsl_matrix_const_view_array_with_tda (const double * base, size_t n1, size_t n2, size_t tda) + + These functions return a matrix view of the array :data:`base` with a + physical number of columns :data:`tda` which may differ from the corresponding + dimension of the matrix. The matrix has :data:`n1` rows and :data:`n2` + columns, and the physical number of columns in memory is given by + :data:`tda`. Mathematically, the :math:`(i,j)`-th element of the new + matrix is given by:: + + m'(i,j) = base[i*tda + j] + + where the index :data:`i` runs from 0 to :code:`n1 - 1` and the index :data:`j` + runs from 0 to :code:`n2 - 1`. + + The new matrix is only a view of the array :data:`base`. When the view + goes out of scope the original array :data:`base` will continue to exist. + The original memory can only be deallocated by freeing the original + array. Of course, the original array should not be deallocated while + the view is still in use. + + The function :func:`gsl_matrix_const_view_array_with_tda` is equivalent + to :func:`gsl_matrix_view_array_with_tda` but can be used for matrices + which are declared :code:`const`. + +.. function:: gsl_matrix_view gsl_matrix_view_vector (gsl_vector * v, size_t n1, size_t n2) + gsl_matrix_const_view gsl_matrix_const_view_vector (const gsl_vector * v, size_t n1, size_t n2) + + These functions return a matrix view of the vector :data:`v`. The matrix + has :data:`n1` rows and :data:`n2` columns. The vector must have unit + stride. The physical number of columns in memory is also given by + :data:`n2`. Mathematically, the :math:`(i,j)`-th element of the new + matrix is given by:: + + m'(i,j) = v->data[i*n2 + j] + + where the index :data:`i` runs from 0 to :code:`n1 - 1` and the index :data:`j` + runs from 0 to :code:`n2 - 1`. + + The new matrix is only a view of the vector :data:`v`. When the view + goes out of scope the original vector :data:`v` will continue to exist. + The original memory can only be deallocated by freeing the original + vector. Of course, the original vector should not be deallocated while + the view is still in use. + + The function :func:`gsl_matrix_const_view_vector` is equivalent to + :func:`gsl_matrix_view_vector` but can be used for matrices which are + declared :code:`const`. + +.. function:: gsl_matrix_view gsl_matrix_view_vector_with_tda (gsl_vector * v, size_t n1, size_t n2, size_t tda) + gsl_matrix_const_view gsl_matrix_const_view_vector_with_tda (const gsl_vector * v, size_t n1, size_t n2, size_t tda) + + These functions return a matrix view of the vector :data:`v` with a + physical number of columns :data:`tda` which may differ from the + corresponding matrix dimension. The vector must have unit stride. The + matrix has :data:`n1` rows and :data:`n2` columns, and the physical number + of columns in memory is given by :data:`tda`. Mathematically, the + :math:`(i,j)`-th element of the new matrix is given by:: + + m'(i,j) = v->data[i*tda + j] + + where the index :data:`i` runs from 0 to :code:`n1 - 1` and the index :data:`j` + runs from 0 to :code:`n2 - 1`. + + The new matrix is only a view of the vector :data:`v`. When the view + goes out of scope the original vector :data:`v` will continue to exist. + The original memory can only be deallocated by freeing the original + vector. Of course, the original vector should not be deallocated while + the view is still in use. + + The function :func:`gsl_matrix_const_view_vector_with_tda` is equivalent + to :func:`gsl_matrix_view_vector_with_tda` but can be used for matrices + which are declared :code:`const`. + +.. @node Modifying matrix views +.. @subsection Modifying matrix views +.. +.. @deftypefun int gsl_matrix_view_from_matrix (gsl_matrix * m, gsl_matrix * mm, const size_t k1, const size_t k2, const size_t n1, const size_t n2) +.. This function modifies and existing matrix view :data:`m` to form a new +.. view of a matrix :data:`mm`, starting from element (:data:`k1`, :data:`k2`). +.. The matrix view has :data:`n1` rows and :data:`n2` columns. Any existing +.. view in :data:`m` will be lost as a result of this function. +.. @end deftypefun +.. +.. @deftypefun int gsl_matrix_view_from_vector (gsl_matrix * m, gsl_vector * v, const size_t offset, const size_t n1, const size_t n2) +.. This function modifies and existing matrix view :data:`m` to form a new +.. view of a vector :data:`v`, starting from element :data:`offset`. The +.. vector has :data:`n1` rows and :data:`n2` columns. Any +.. existing view in :data:`m` will be lost as a result of this function. +.. @end deftypefun +.. +.. @deftypefun int gsl_matrix_view_from_array (gsl_matrix * m, double * base, const size_t offset, const size_t n1, const size_t n2) +.. This function modifies and existing matrix view :data:`m` to form a new +.. view of an array :data:`base`, starting from element :data:`offset`. The +.. matrix has :data:`n1` rows and :data:`n2` columns. Any +.. existing view in :data:`m` will be lost as a result of this function. +.. @end deftypefun +.. +.. @deftypefun {gsl_matrix *} gsl_matrix_alloc_from_block (gsl_block * b, size_t offset, size_t n1, size_t n2, size_t tda) +.. This function creates a matrix as a slice of the block :data:`b`, +.. returning a pointer to a newly initialized matrix struct. The start of +.. the matrix is offset by :data:`offset` elements from the start of the +.. block. The matrix has :data:`n1` rows and :data:`n2` columns, with the +.. physical number of columns in memory given by :data:`tda`. +.. Mathematically, the (:data:`i`, :data:`j`)-th element of the matrix is given by, +.. +.. @example +.. m(i,j) = b->data[offset + i*tda + j] +.. @end example +.. @noindent +.. where the index :data:`i` runs from 0 to :code:`n1-1` and the index :data:`j` +.. runs from 0 to :code:`n2-1`. +.. +.. A null pointer is returned if the combined parameters +.. (:data:`offset`, :data:`n1`, :data:`n2`, :data:`tda`) overrun the end of the block +.. or if insufficient memory is available to store the matrix. +.. +.. The matrix is only a view of the block :data:`b`, and the block is not +.. owned by the matrix. When the matrix is deallocated the block :data:`b` +.. will continue to exist. This memory can only be deallocated by freeing +.. the block itself. Of course, this block should not be deallocated while +.. the matrix is still in use. +.. @end deftypefun +.. +.. @deftypefun {gsl_matrix *} gsl_matrix_alloc_from_matrix (gsl_matrix * m, size_t k1, size_t k2, size_t n1, size_t n2) +.. +.. This function creates a matrix as a submatrix of the matrix :data:`m`, +.. returning a pointer to a newly initialized matrix struct. The upper-left +.. element of the submatrix is the element (:data:`k1`, :data:`k2`) of the +.. original matrix. The submatrix has :data:`n1` rows and :data:`n2` columns. +.. The physical number of columns in memory given by :data:`tda` is +.. unchanged. Mathematically, the (:data:`i`, :data:`j`)-th element of the +.. new matrix is given by, +.. +.. @example +.. m'(i,j) = m->data[(k1*m->tda + k2) + i*m->tda + j] +.. @end example +.. @noindent +.. where the index :data:`i` runs from 0 to :code:`n1-1` and the index :data:`j` +.. runs from 0 to :code:`n2-1`. +.. +.. A null pointer is returned if the combined parameters +.. (:data:`k1`, :data:`k2`, :data:`n1`, :data:`n2`, :data:`tda`) overrun the end of the +.. original matrix or if insufficient memory is available to store the matrix. +.. +.. The new matrix is only a view of the block underlying the existing +.. matrix, :data:`m`. The block is not owned by the new matrix. When the new +.. matrix is deallocated the original matrix :data:`m` and its block will +.. continue to exist. The original memory can only be deallocated by +.. freeing the original matrix. Of course, the original matrix should not +.. be deallocated while the new matrix is still in use. +.. @end deftypefun + +Creating row and column views +----------------------------- + +In general there are two ways to access an object, by reference or by +copying. The functions described in this section create vector views +which allow access to a row or column of a matrix by reference. +Modifying elements of the view is equivalent to modifying the matrix, +since both the vector view and the matrix point to the same memory +block. + +.. function:: gsl_vector_view gsl_matrix_row (gsl_matrix * m, size_t i) + gsl_vector_const_view gsl_matrix_const_row (const gsl_matrix * m, size_t i) + + These functions return a vector view of the :data:`i`-th row of the matrix + :data:`m`. The :code:`data` pointer of the new vector is set to null if + :data:`i` is out of range. + + The function :func:`gsl_matrix_const_row` is equivalent to + :func:`gsl_matrix_row` but can be used for matrices which are declared + :code:`const`. + +.. function:: gsl_vector_view gsl_matrix_column (gsl_matrix * m, size_t j) + gsl_vector_const_view gsl_matrix_const_column (const gsl_matrix * m, size_t j) + + These functions return a vector view of the :data:`j`-th column of the + matrix :data:`m`. The :code:`data` pointer of the new vector is set to + null if :data:`j` is out of range. + + The function :func:`gsl_matrix_const_column` is equivalent to + :func:`gsl_matrix_column` but can be used for matrices which are declared + :code:`const`. + +.. function:: gsl_vector_view gsl_matrix_subrow (gsl_matrix * m, size_t i, size_t offset, size_t n) + gsl_vector_const_view gsl_matrix_const_subrow (const gsl_matrix * m, size_t i, size_t offset, size_t n) + + These functions return a vector view of the :data:`i`-th row of the matrix + :data:`m` beginning at :data:`offset` elements past the first column and + containing :data:`n` elements. The :code:`data` pointer of the new vector + is set to null if :data:`i`, :data:`offset`, or :data:`n` are out of range. + + The function :func:`gsl_matrix_const_subrow` is equivalent to + :func:`gsl_matrix_subrow` but can be used for matrices which are declared + :code:`const`. + +.. function:: gsl_vector_view gsl_matrix_subcolumn (gsl_matrix * m, size_t j, size_t offset, size_t n) + gsl_vector_const_view gsl_matrix_const_subcolumn (const gsl_matrix * m, size_t j, size_t offset, size_t n) + + These functions return a vector view of the :data:`j`-th column of the matrix + :data:`m` beginning at :data:`offset` elements past the first row and + containing :data:`n` elements. The :code:`data` pointer of the new vector + is set to null if :data:`j`, :data:`offset`, or :data:`n` are out of range. + + The function :func:`gsl_matrix_const_subcolumn` is equivalent to + :func:`gsl_matrix_subcolumn` but can be used for matrices which are declared + :code:`const`. + +.. index:: + single: matrix diagonal + single: diagonal, of a matrix + +.. function:: gsl_vector_view gsl_matrix_diagonal (gsl_matrix * m) + gsl_vector_const_view gsl_matrix_const_diagonal (const gsl_matrix * m) + + These functions return a vector view of the diagonal of the matrix + :data:`m`. The matrix :data:`m` is not required to be square. For a + rectangular matrix the length of the diagonal is the same as the smaller + dimension of the matrix. + + The function :func:`gsl_matrix_const_diagonal` is equivalent to + :func:`gsl_matrix_diagonal` but can be used for matrices which are + declared :code:`const`. + +.. index:: + single: matrix subdiagonal + single: subdiagonal, of a matrix + +.. function:: gsl_vector_view gsl_matrix_subdiagonal (gsl_matrix * m, size_t k) + gsl_vector_const_view gsl_matrix_const_subdiagonal (const gsl_matrix * m, size_t k) + + These functions return a vector view of the :data:`k`-th subdiagonal of + the matrix :data:`m`. The matrix :data:`m` is not required to be square. + The diagonal of the matrix corresponds to :math:`k = 0`. + + The function :func:`gsl_matrix_const_subdiagonal` is equivalent to + :func:`gsl_matrix_subdiagonal` but can be used for matrices which are + declared :code:`const`. + +.. index:: + single: matrix superdiagonal + single: superdiagonal, matrix + +.. function:: gsl_vector_view gsl_matrix_superdiagonal (gsl_matrix * m, size_t k) + gsl_vector_const_view gsl_matrix_const_superdiagonal (const gsl_matrix * m, size_t k) + + These functions return a vector view of the :data:`k`-th superdiagonal of + the matrix :data:`m`. The matrix :data:`m` is not required to be square. The + diagonal of the matrix corresponds to :math:`k = 0`. + + The function :func:`gsl_matrix_const_superdiagonal` is equivalent to + :func:`gsl_matrix_superdiagonal` but can be used for matrices which are + declared :code:`const`. + +.. @deftypefun {gsl_vector *} gsl_vector_alloc_row_from_matrix (gsl_matrix * m, size_t i) +.. This function allocates a new :type:`gsl_vector` struct which points to +.. the :data:`i`-th row of the matrix :data:`m`. +.. @end deftypefun +.. +.. @deftypefun {gsl_vector *} gsl_vector_alloc_col_from_matrix (gsl_matrix * m, size_t j) +.. This function allocates a new :type:`gsl_vector` struct which points to +.. the :data:`j`-th column of the matrix :data:`m`. +.. @end deftypefun + +Copying matrices +---------------- + +.. function:: int gsl_matrix_memcpy (gsl_matrix * dest, const gsl_matrix * src) + + This function copies the elements of the matrix :data:`src` into the + matrix :data:`dest`. The two matrices must have the same size. + +.. function:: int gsl_matrix_swap (gsl_matrix * m1, gsl_matrix * m2) + + This function exchanges the elements of the matrices :data:`m1` and + :data:`m2` by copying. The two matrices must have the same size. + +Copying rows and columns +------------------------ + +The functions described in this section copy a row or column of a matrix +into a vector. This allows the elements of the vector and the matrix to +be modified independently. Note that if the matrix and the vector point +to overlapping regions of memory then the result will be undefined. The +same effect can be achieved with more generality using +:func:`gsl_vector_memcpy` with vector views of rows and columns. + +.. function:: int gsl_matrix_get_row (gsl_vector * v, const gsl_matrix * m, size_t i) + + This function copies the elements of the :data:`i`-th row of the matrix + :data:`m` into the vector :data:`v`. The length of the vector must be the + same as the length of the row. + +.. function:: int gsl_matrix_get_col (gsl_vector * v, const gsl_matrix * m, size_t j) + + This function copies the elements of the :data:`j`-th column of the matrix + :data:`m` into the vector :data:`v`. The length of the vector must be the + same as the length of the column. + +.. function:: int gsl_matrix_set_row (gsl_matrix * m, size_t i, const gsl_vector * v) + + This function copies the elements of the vector :data:`v` into the + :data:`i`-th row of the matrix :data:`m`. The length of the vector must be + the same as the length of the row. + +.. function:: int gsl_matrix_set_col (gsl_matrix * m, size_t j, const gsl_vector * v) + + This function copies the elements of the vector :data:`v` into the + :data:`j`-th column of the matrix :data:`m`. The length of the vector must be + the same as the length of the column. + +Exchanging rows and columns +--------------------------- + +The following functions can be used to exchange the rows and columns of +a matrix. + +.. function:: int gsl_matrix_swap_rows (gsl_matrix * m, size_t i, size_t j) + + This function exchanges the :data:`i`-th and :data:`j`-th rows of the matrix + :data:`m` in-place. + +.. function:: int gsl_matrix_swap_columns (gsl_matrix * m, size_t i, size_t j) + + This function exchanges the :data:`i`-th and :data:`j`-th columns of the + matrix :data:`m` in-place. + +.. function:: int gsl_matrix_swap_rowcol (gsl_matrix * m, size_t i, size_t j) + + This function exchanges the :data:`i`-th row and :data:`j`-th column of the + matrix :data:`m` in-place. The matrix must be square for this operation to + be possible. + +.. function:: int gsl_matrix_transpose_memcpy (gsl_matrix * dest, const gsl_matrix * src) + + This function makes the matrix :data:`dest` the transpose of the matrix + :data:`src` by copying the elements of :data:`src` into :data:`dest`. This + function works for all matrices provided that the dimensions of the matrix + :data:`dest` match the transposed dimensions of the matrix :data:`src`. + +.. function:: int gsl_matrix_transpose (gsl_matrix * m) + + This function replaces the matrix :data:`m` by its transpose by copying + the elements of the matrix in-place. The matrix must be square for this + operation to be possible. + +Matrix operations +----------------- + +The following operations are defined for real and complex matrices. + +.. function:: int gsl_matrix_add (gsl_matrix * a, const gsl_matrix * b) + + This function adds the elements of matrix :data:`b` to the elements of + matrix :data:`a`. The result :math:`a(i,j) \leftarrow a(i,j) + b(i,j)` + is stored in :data:`a` and :data:`b` remains unchanged. The two matrices + must have the same dimensions. + +.. function:: int gsl_matrix_sub (gsl_matrix * a, const gsl_matrix * b) + + This function subtracts the elements of matrix :data:`b` from the + elements of matrix :data:`a`. The result :math:`a(i,j) \leftarrow a(i,j) - b(i,j)` + is stored in :data:`a` and :data:`b` remains unchanged. The two + matrices must have the same dimensions. + +.. function:: int gsl_matrix_mul_elements (gsl_matrix * a, const gsl_matrix * b) + + This function multiplies the elements of matrix :data:`a` by the + elements of matrix :data:`b`. The result :math:`a(i,j) \leftarrow a(i,j) * b(i,j)` + is stored in :data:`a` and :data:`b` remains unchanged. The two + matrices must have the same dimensions. + +.. function:: int gsl_matrix_div_elements (gsl_matrix * a, const gsl_matrix * b) + + This function divides the elements of matrix :data:`a` by the elements + of matrix :data:`b`. The result :math:`a(i,j) \leftarrow a(i,j) / b(i,j)` + is stored in :data:`a` and :data:`b` remains unchanged. The two + matrices must have the same dimensions. + +.. function:: int gsl_matrix_scale (gsl_matrix * a, const double x) + + This function multiplies the elements of matrix :data:`a` by the + constant factor :data:`x`. The result :math:`a(i,j) \leftarrow x a(i,j)` + is stored in :data:`a`. + +.. function:: int gsl_matrix_add_constant (gsl_matrix * a, const double x) + + This function adds the constant value :data:`x` to the elements of the + matrix :data:`a`. The result :math:`a(i,j) \leftarrow a(i,j) + x` is + stored in :data:`a`. + +Finding maximum and minimum elements of matrices +------------------------------------------------ + +The following operations are only defined for real matrices. + +.. function:: double gsl_matrix_max (const gsl_matrix * m) + + This function returns the maximum value in the matrix :data:`m`. + +.. function:: double gsl_matrix_min (const gsl_matrix * m) + + This function returns the minimum value in the matrix :data:`m`. + +.. function:: void gsl_matrix_minmax (const gsl_matrix * m, double * min_out, double * max_out) + + This function returns the minimum and maximum values in the matrix + :data:`m`, storing them in :data:`min_out` and :data:`max_out`. + +.. function:: void gsl_matrix_max_index (const gsl_matrix * m, size_t * imax, size_t * jmax) + + This function returns the indices of the maximum value in the matrix + :data:`m`, storing them in :data:`imax` and :data:`jmax`. When there are + several equal maximum elements then the first element found is returned, + searching in row-major order. + +.. function:: void gsl_matrix_min_index (const gsl_matrix * m, size_t * imin, size_t * jmin) + + This function returns the indices of the minimum value in the matrix + :data:`m`, storing them in :data:`imin` and :data:`jmin`. When there are + several equal minimum elements then the first element found is returned, + searching in row-major order. + +.. function:: void gsl_matrix_minmax_index (const gsl_matrix * m, size_t * imin, size_t * jmin, size_t * imax, size_t * jmax) + + This function returns the indices of the minimum and maximum values in + the matrix :data:`m`, storing them in (:data:`imin`, :data:`jmin`) and + (:data:`imax`, :data:`jmax`). When there are several equal minimum or maximum + elements then the first elements found are returned, searching in + row-major order. + +Matrix properties +----------------- + +The following functions are defined for real and complex matrices. +For complex matrices both the real and imaginary parts must satisfy +the conditions. + +.. function:: int gsl_matrix_isnull (const gsl_matrix * m) + int gsl_matrix_ispos (const gsl_matrix * m) + int gsl_matrix_isneg (const gsl_matrix * m) + int gsl_matrix_isnonneg (const gsl_matrix * m) + + These functions return 1 if all the elements of the matrix :data:`m` are + zero, strictly positive, strictly negative, or non-negative + respectively, and 0 otherwise. To test whether a matrix is + positive-definite, use the :ref:`Cholesky decomposition `. + +.. function:: int gsl_matrix_equal (const gsl_matrix * a, const gsl_matrix * b) + + This function returns 1 if the matrices :data:`a` and :data:`b` are equal + (by comparison of element values) and 0 otherwise. + +Example programs for matrices +----------------------------- + +The program below shows how to allocate, initialize and read from a matrix +using the functions :func:`gsl_matrix_alloc`, :func:`gsl_matrix_set` and +:func:`gsl_matrix_get`. + +.. include:: examples/matrix.c + :code: + +Here is the output from the program. The final loop attempts to read +outside the range of the matrix :code:`m`, and the error is trapped by +the range-checking code in :func:`gsl_matrix_get`. + +:: + + $ ./a.out + m(0,0) = 0.23 + m(0,1) = 1.23 + m(0,2) = 2.23 + m(1,0) = 100.23 + m(1,1) = 101.23 + m(1,2) = 102.23 + ... + m(9,2) = 902.23 + gsl: matrix_source.c:13: ERROR: first index out of range + Default GSL error handler invoked. + Aborted (core dumped) + +The next program shows how to write a matrix to a file. + +.. include:: examples/matrixw.c + :code: + +After running this program the file :file:`test.dat` should contain the +elements of :code:`m`, written in binary format. The matrix which is read +back in using the function :func:`gsl_matrix_fread` should be exactly +equal to the original matrix. + +The following program demonstrates the use of vector views. The program +computes the column norms of a matrix. + +.. include:: examples/vectorview.c + :code: + +Here is the output of the program, + +.. include:: examples/vectorview.txt + :code: + +The results can be confirmed using |octave|:: + + $ octave + GNU Octave, version 2.0.16.92 + octave> m = sin(0:9)' * ones(1,10) + + ones(10,1) * cos(0:9); + octave> sqrt(sum(m.^2)) + ans = + 4.3146 3.1205 2.1932 3.2611 2.5342 2.5728 + 4.2047 3.6520 2.0852 3.0731 + +References and Further Reading +------------------------------ + +The block, vector and matrix objects in GSL follow the :code:`valarray` +model of C++. A description of this model can be found in the following +reference, + +* B. Stroustrup, The C++ Programming Language (3rd Ed), + Section 22.4 Vector Arithmetic. Addison-Wesley 1997, ISBN 0-201-88954-4. + +.. rubric:: Footnotes + +.. [#f1] Range checking is available in the GNU C Compiler bounds-checking extension, + but it is not part of the default installation of GCC. Memory accesses + can also be checked with Valgrind or the :code:`gcc -fmudflap` + memory protection option. diff --git a/gsl-2.5/eigen/.deps/francis.Plo b/gsl-2.5/eigen/.deps/francis.Plo new file mode 100644 index 00000000..a807188e --- /dev/null +++ b/gsl-2.5/eigen/.deps/francis.Plo @@ -0,0 +1,308 @@ +francis.lo: francis.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_eigen.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_types.h \ + ../gsl/gsl_errno.h /usr/include/stdio.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_inline.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_vector_complex.h \ + ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_linalg.h ../gsl/gsl_mode.h \ + ../gsl/gsl_permutation.h ../gsl/gsl_math.h ../gsl/gsl_sys.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_nan.h ../gsl/gsl_pow_int.h \ + ../gsl/gsl_minmax.h ../gsl/gsl_blas.h ../gsl/gsl_blas_types.h \ + ../gsl/gsl_cblas.h ../gsl/gsl_complex_math.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_eigen.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_types.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_linalg.h: + +../gsl/gsl_mode.h: + +../gsl/gsl_permutation.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_blas.h: + +../gsl/gsl_blas_types.h: + +../gsl/gsl_cblas.h: + +../gsl/gsl_complex_math.h: diff --git a/gsl-2.5/eigen/.deps/gen.Plo b/gsl-2.5/eigen/.deps/gen.Plo new file mode 100644 index 00000000..0a3e9b61 --- /dev/null +++ b/gsl-2.5/eigen/.deps/gen.Plo @@ -0,0 +1,306 @@ +gen.lo: gen.c /usr/include/stdc-predef.h /usr/include/stdlib.h \ + /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h ../config.h \ + ../gsl/gsl_eigen.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_types.h \ + ../gsl/gsl_errno.h /usr/include/stdio.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_inline.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_vector_complex.h \ + ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_linalg.h ../gsl/gsl_mode.h \ + ../gsl/gsl_permutation.h ../gsl/gsl_math.h ../gsl/gsl_sys.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_nan.h ../gsl/gsl_pow_int.h \ + ../gsl/gsl_minmax.h ../gsl/gsl_blas.h ../gsl/gsl_blas_types.h \ + ../gsl/gsl_cblas.h + +/usr/include/stdc-predef.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../config.h: + +../gsl/gsl_eigen.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_types.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_linalg.h: + +../gsl/gsl_mode.h: + +../gsl/gsl_permutation.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_blas.h: + +../gsl/gsl_blas_types.h: + +../gsl/gsl_cblas.h: diff --git a/gsl-2.5/eigen/.deps/genherm.Plo b/gsl-2.5/eigen/.deps/genherm.Plo new file mode 100644 index 00000000..52dcf531 --- /dev/null +++ b/gsl-2.5/eigen/.deps/genherm.Plo @@ -0,0 +1,307 @@ +genherm.lo: genherm.c /usr/include/stdc-predef.h /usr/include/stdlib.h \ + /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../config.h ../gsl/gsl_eigen.h \ + ../gsl/gsl_vector.h ../gsl/gsl_vector_complex_long_double.h \ + ../gsl/gsl_types.h ../gsl/gsl_errno.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_inline.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_vector_complex.h \ + ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_linalg.h ../gsl/gsl_mode.h \ + ../gsl/gsl_permutation.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_nan.h ../gsl/gsl_pow_int.h \ + ../gsl/gsl_minmax.h ../gsl/gsl_blas.h ../gsl/gsl_blas_types.h \ + ../gsl/gsl_cblas.h ../gsl/gsl_complex_math.h + +/usr/include/stdc-predef.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../config.h: + +../gsl/gsl_eigen.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_types.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_linalg.h: + +../gsl/gsl_mode.h: + +../gsl/gsl_permutation.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_blas.h: + +../gsl/gsl_blas_types.h: + +../gsl/gsl_cblas.h: + +../gsl/gsl_complex_math.h: diff --git a/gsl-2.5/eigen/.deps/genhermv.Plo b/gsl-2.5/eigen/.deps/genhermv.Plo new file mode 100644 index 00000000..9efa5d5d --- /dev/null +++ b/gsl-2.5/eigen/.deps/genhermv.Plo @@ -0,0 +1,307 @@ +genhermv.lo: genhermv.c /usr/include/stdc-predef.h /usr/include/stdlib.h \ + /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../config.h ../gsl/gsl_eigen.h \ + ../gsl/gsl_vector.h ../gsl/gsl_vector_complex_long_double.h \ + ../gsl/gsl_types.h ../gsl/gsl_errno.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_inline.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_vector_complex.h \ + ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_linalg.h ../gsl/gsl_mode.h \ + ../gsl/gsl_permutation.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_nan.h ../gsl/gsl_pow_int.h \ + ../gsl/gsl_minmax.h ../gsl/gsl_blas.h ../gsl/gsl_blas_types.h \ + ../gsl/gsl_cblas.h ../gsl/gsl_complex_math.h + +/usr/include/stdc-predef.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../config.h: + +../gsl/gsl_eigen.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_types.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_linalg.h: + +../gsl/gsl_mode.h: + +../gsl/gsl_permutation.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_blas.h: + +../gsl/gsl_blas_types.h: + +../gsl/gsl_cblas.h: + +../gsl/gsl_complex_math.h: diff --git a/gsl-2.5/eigen/.deps/gensymm.Plo b/gsl-2.5/eigen/.deps/gensymm.Plo new file mode 100644 index 00000000..1cff76da --- /dev/null +++ b/gsl-2.5/eigen/.deps/gensymm.Plo @@ -0,0 +1,305 @@ +gensymm.lo: gensymm.c /usr/include/stdc-predef.h /usr/include/stdlib.h \ + /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../config.h ../gsl/gsl_eigen.h \ + ../gsl/gsl_vector.h ../gsl/gsl_vector_complex_long_double.h \ + ../gsl/gsl_types.h ../gsl/gsl_errno.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_inline.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_vector_complex.h \ + ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_linalg.h ../gsl/gsl_mode.h \ + ../gsl/gsl_permutation.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_nan.h ../gsl/gsl_pow_int.h \ + ../gsl/gsl_minmax.h ../gsl/gsl_blas.h ../gsl/gsl_blas_types.h \ + ../gsl/gsl_cblas.h + +/usr/include/stdc-predef.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../config.h: + +../gsl/gsl_eigen.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_types.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_linalg.h: + +../gsl/gsl_mode.h: + +../gsl/gsl_permutation.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_blas.h: + +../gsl/gsl_blas_types.h: + +../gsl/gsl_cblas.h: diff --git a/gsl-2.5/eigen/.deps/gensymmv.Plo b/gsl-2.5/eigen/.deps/gensymmv.Plo new file mode 100644 index 00000000..229e7d4e --- /dev/null +++ b/gsl-2.5/eigen/.deps/gensymmv.Plo @@ -0,0 +1,305 @@ +gensymmv.lo: gensymmv.c /usr/include/stdc-predef.h /usr/include/stdlib.h \ + /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../config.h ../gsl/gsl_eigen.h \ + ../gsl/gsl_vector.h ../gsl/gsl_vector_complex_long_double.h \ + ../gsl/gsl_types.h ../gsl/gsl_errno.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_inline.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_vector_complex.h \ + ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_linalg.h ../gsl/gsl_mode.h \ + ../gsl/gsl_permutation.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_nan.h ../gsl/gsl_pow_int.h \ + ../gsl/gsl_minmax.h ../gsl/gsl_blas.h ../gsl/gsl_blas_types.h \ + ../gsl/gsl_cblas.h + +/usr/include/stdc-predef.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../config.h: + +../gsl/gsl_eigen.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_types.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_linalg.h: + +../gsl/gsl_mode.h: + +../gsl/gsl_permutation.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_blas.h: + +../gsl/gsl_blas_types.h: + +../gsl/gsl_cblas.h: diff --git a/gsl-2.5/eigen/.deps/genv.Plo b/gsl-2.5/eigen/.deps/genv.Plo new file mode 100644 index 00000000..1ed1315c --- /dev/null +++ b/gsl-2.5/eigen/.deps/genv.Plo @@ -0,0 +1,306 @@ +genv.lo: genv.c /usr/include/stdc-predef.h /usr/include/stdlib.h \ + /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h ../config.h \ + ../gsl/gsl_eigen.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_types.h \ + ../gsl/gsl_errno.h /usr/include/stdio.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_inline.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_vector_complex.h \ + ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_linalg.h ../gsl/gsl_mode.h \ + ../gsl/gsl_permutation.h ../gsl/gsl_math.h ../gsl/gsl_sys.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_nan.h ../gsl/gsl_pow_int.h \ + ../gsl/gsl_minmax.h ../gsl/gsl_blas.h ../gsl/gsl_blas_types.h \ + ../gsl/gsl_cblas.h + +/usr/include/stdc-predef.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../config.h: + +../gsl/gsl_eigen.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_types.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_linalg.h: + +../gsl/gsl_mode.h: + +../gsl/gsl_permutation.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_blas.h: + +../gsl/gsl_blas_types.h: + +../gsl/gsl_cblas.h: diff --git a/gsl-2.5/eigen/.deps/herm.Plo b/gsl-2.5/eigen/.deps/herm.Plo new file mode 100644 index 00000000..1a5da5c4 --- /dev/null +++ b/gsl-2.5/eigen/.deps/herm.Plo @@ -0,0 +1,306 @@ +herm.lo: herm.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_linalg.h ../gsl/gsl_mode.h \ + ../gsl/gsl_permutation.h ../gsl/gsl_blas.h ../gsl/gsl_blas_types.h \ + ../gsl/gsl_cblas.h ../gsl/gsl_eigen.h qrstep.c + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_linalg.h: + +../gsl/gsl_mode.h: + +../gsl/gsl_permutation.h: + +../gsl/gsl_blas.h: + +../gsl/gsl_blas_types.h: + +../gsl/gsl_cblas.h: + +../gsl/gsl_eigen.h: + +qrstep.c: diff --git a/gsl-2.5/eigen/.deps/hermv.Plo b/gsl-2.5/eigen/.deps/hermv.Plo new file mode 100644 index 00000000..47deb21b --- /dev/null +++ b/gsl-2.5/eigen/.deps/hermv.Plo @@ -0,0 +1,308 @@ +hermv.lo: hermv.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_complex_math.h ../gsl/gsl_linalg.h \ + ../gsl/gsl_mode.h ../gsl/gsl_permutation.h ../gsl/gsl_blas.h \ + ../gsl/gsl_blas_types.h ../gsl/gsl_cblas.h ../gsl/gsl_eigen.h qrstep.c + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_complex_math.h: + +../gsl/gsl_linalg.h: + +../gsl/gsl_mode.h: + +../gsl/gsl_permutation.h: + +../gsl/gsl_blas.h: + +../gsl/gsl_blas_types.h: + +../gsl/gsl_cblas.h: + +../gsl/gsl_eigen.h: + +qrstep.c: diff --git a/gsl-2.5/eigen/.deps/jacobi.Plo b/gsl-2.5/eigen/.deps/jacobi.Plo new file mode 100644 index 00000000..151298a9 --- /dev/null +++ b/gsl-2.5/eigen/.deps/jacobi.Plo @@ -0,0 +1,290 @@ +jacobi.lo: jacobi.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_eigen.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_eigen.h: diff --git a/gsl-2.5/eigen/.deps/nonsymm.Plo b/gsl-2.5/eigen/.deps/nonsymm.Plo new file mode 100644 index 00000000..ea9ccf77 --- /dev/null +++ b/gsl-2.5/eigen/.deps/nonsymm.Plo @@ -0,0 +1,306 @@ +nonsymm.lo: nonsymm.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_eigen.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_types.h \ + ../gsl/gsl_errno.h /usr/include/stdio.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_inline.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_vector_complex.h \ + ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_linalg.h ../gsl/gsl_mode.h \ + ../gsl/gsl_permutation.h ../gsl/gsl_math.h ../gsl/gsl_sys.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_nan.h ../gsl/gsl_pow_int.h \ + ../gsl/gsl_minmax.h ../gsl/gsl_blas.h ../gsl/gsl_blas_types.h \ + ../gsl/gsl_cblas.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_eigen.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_types.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_linalg.h: + +../gsl/gsl_mode.h: + +../gsl/gsl_permutation.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_blas.h: + +../gsl/gsl_blas_types.h: + +../gsl/gsl_cblas.h: diff --git a/gsl-2.5/eigen/.deps/nonsymmv.Plo b/gsl-2.5/eigen/.deps/nonsymmv.Plo new file mode 100644 index 00000000..a86fb66b --- /dev/null +++ b/gsl-2.5/eigen/.deps/nonsymmv.Plo @@ -0,0 +1,308 @@ +nonsymmv.lo: nonsymmv.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_complex.h ../gsl/gsl_complex_math.h ../gsl/gsl_inline.h \ + ../gsl/gsl_eigen.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_types.h \ + ../gsl/gsl_errno.h /usr/include/stdio.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_check_range.h ../gsl/gsl_vector_long_double.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_vector_complex.h \ + ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_linalg.h ../gsl/gsl_mode.h \ + ../gsl/gsl_permutation.h ../gsl/gsl_math.h ../gsl/gsl_sys.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_nan.h ../gsl/gsl_pow_int.h \ + ../gsl/gsl_minmax.h ../gsl/gsl_blas.h ../gsl/gsl_blas_types.h \ + ../gsl/gsl_cblas.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_complex_math.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_eigen.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_types.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_linalg.h: + +../gsl/gsl_mode.h: + +../gsl/gsl_permutation.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_blas.h: + +../gsl/gsl_blas_types.h: + +../gsl/gsl_cblas.h: diff --git a/gsl-2.5/eigen/.deps/schur.Plo b/gsl-2.5/eigen/.deps/schur.Plo new file mode 100644 index 00000000..4039e2d7 --- /dev/null +++ b/gsl-2.5/eigen/.deps/schur.Plo @@ -0,0 +1,301 @@ +schur.lo: schur.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_eigen.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h /usr/include/stdlib.h \ + /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_types.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_inline.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_vector_complex.h \ + ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_nan.h ../gsl/gsl_pow_int.h \ + ../gsl/gsl_minmax.h ../gsl/gsl_blas.h ../gsl/gsl_blas_types.h \ + ../gsl/gsl_cblas.h ../gsl/gsl_complex_math.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_eigen.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_types.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_blas.h: + +../gsl/gsl_blas_types.h: + +../gsl/gsl_cblas.h: + +../gsl/gsl_complex_math.h: diff --git a/gsl-2.5/eigen/.deps/sort.Plo b/gsl-2.5/eigen/.deps/sort.Plo new file mode 100644 index 00000000..624adeb1 --- /dev/null +++ b/gsl-2.5/eigen/.deps/sort.Plo @@ -0,0 +1,292 @@ +sort.lo: sort.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_eigen.h \ + ../gsl/gsl_vector.h ../gsl/gsl_vector_complex_long_double.h \ + ../gsl/gsl_errno.h /usr/include/stdio.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_complex_math.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_eigen.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_complex_math.h: diff --git a/gsl-2.5/eigen/.deps/symm.Plo b/gsl-2.5/eigen/.deps/symm.Plo new file mode 100644 index 00000000..155880ad --- /dev/null +++ b/gsl-2.5/eigen/.deps/symm.Plo @@ -0,0 +1,306 @@ +symm.lo: symm.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_linalg.h ../gsl/gsl_mode.h \ + ../gsl/gsl_permutation.h ../gsl/gsl_blas.h ../gsl/gsl_blas_types.h \ + ../gsl/gsl_cblas.h ../gsl/gsl_eigen.h qrstep.c + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_linalg.h: + +../gsl/gsl_mode.h: + +../gsl/gsl_permutation.h: + +../gsl/gsl_blas.h: + +../gsl/gsl_blas_types.h: + +../gsl/gsl_cblas.h: + +../gsl/gsl_eigen.h: + +qrstep.c: diff --git a/gsl-2.5/eigen/.deps/symmv.Plo b/gsl-2.5/eigen/.deps/symmv.Plo new file mode 100644 index 00000000..03935e5a --- /dev/null +++ b/gsl-2.5/eigen/.deps/symmv.Plo @@ -0,0 +1,306 @@ +symmv.lo: symmv.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_linalg.h ../gsl/gsl_mode.h \ + ../gsl/gsl_permutation.h ../gsl/gsl_blas.h ../gsl/gsl_blas_types.h \ + ../gsl/gsl_cblas.h ../gsl/gsl_eigen.h qrstep.c + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_linalg.h: + +../gsl/gsl_mode.h: + +../gsl/gsl_permutation.h: + +../gsl/gsl_blas.h: + +../gsl/gsl_blas_types.h: + +../gsl/gsl_cblas.h: + +../gsl/gsl_eigen.h: + +qrstep.c: diff --git a/gsl-2.5/eigen/.deps/test.Po b/gsl-2.5/eigen/.deps/test.Po new file mode 100644 index 00000000..70d45e11 --- /dev/null +++ b/gsl-2.5/eigen/.deps/test.Po @@ -0,0 +1,374 @@ +test.o: test.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_test.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_blas.h \ + ../gsl/gsl_vector.h ../gsl/gsl_vector_complex_long_double.h \ + ../gsl/gsl_errno.h /usr/include/stdio.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_blas_types.h ../gsl/gsl_cblas.h \ + ../gsl/gsl_ieee_utils.h ../gsl/gsl_complex_math.h ../gsl/gsl_eigen.h \ + ../gsl/gsl_linalg.h ../gsl/gsl_mode.h ../gsl/gsl_permutation.h \ + ../gsl/gsl_rng.h ../gsl/gsl_randist.h ../gsl/gsl_sort.h \ + ../gsl/gsl_sort_long_double.h ../gsl/gsl_sort_double.h \ + ../gsl/gsl_sort_float.h ../gsl/gsl_sort_ulong.h ../gsl/gsl_sort_long.h \ + ../gsl/gsl_sort_uint.h ../gsl/gsl_sort_int.h ../gsl/gsl_sort_ushort.h \ + ../gsl/gsl_sort_short.h ../gsl/gsl_sort_uchar.h ../gsl/gsl_sort_char.h \ + ../gsl/gsl_sort_vector.h ../gsl/gsl_sort_vector_long_double.h \ + ../gsl/gsl_sort_vector_double.h ../gsl/gsl_sort_vector_float.h \ + ../gsl/gsl_sort_vector_ulong.h ../gsl/gsl_sort_vector_long.h \ + ../gsl/gsl_sort_vector_uint.h ../gsl/gsl_sort_vector_int.h \ + ../gsl/gsl_sort_vector_ushort.h ../gsl/gsl_sort_vector_short.h \ + ../gsl/gsl_sort_vector_uchar.h ../gsl/gsl_sort_vector_char.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_test.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_blas.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_blas_types.h: + +../gsl/gsl_cblas.h: + +../gsl/gsl_ieee_utils.h: + +../gsl/gsl_complex_math.h: + +../gsl/gsl_eigen.h: + +../gsl/gsl_linalg.h: + +../gsl/gsl_mode.h: + +../gsl/gsl_permutation.h: + +../gsl/gsl_rng.h: + +../gsl/gsl_randist.h: + +../gsl/gsl_sort.h: + +../gsl/gsl_sort_long_double.h: + +../gsl/gsl_sort_double.h: + +../gsl/gsl_sort_float.h: + +../gsl/gsl_sort_ulong.h: + +../gsl/gsl_sort_long.h: + +../gsl/gsl_sort_uint.h: + +../gsl/gsl_sort_int.h: + +../gsl/gsl_sort_ushort.h: + +../gsl/gsl_sort_short.h: + +../gsl/gsl_sort_uchar.h: + +../gsl/gsl_sort_char.h: + +../gsl/gsl_sort_vector.h: + +../gsl/gsl_sort_vector_long_double.h: + +../gsl/gsl_sort_vector_double.h: + +../gsl/gsl_sort_vector_float.h: + +../gsl/gsl_sort_vector_ulong.h: + +../gsl/gsl_sort_vector_long.h: + +../gsl/gsl_sort_vector_uint.h: + +../gsl/gsl_sort_vector_int.h: + +../gsl/gsl_sort_vector_ushort.h: + +../gsl/gsl_sort_vector_short.h: + +../gsl/gsl_sort_vector_uchar.h: + +../gsl/gsl_sort_vector_char.h: diff --git a/gsl-2.5/eigen/.libs/libgsleigen.la b/gsl-2.5/eigen/.libs/libgsleigen.la new file mode 120000 index 00000000..4452875b --- /dev/null +++ b/gsl-2.5/eigen/.libs/libgsleigen.la @@ -0,0 +1 @@ +../libgsleigen.la \ No newline at end of file diff --git a/gsl-2.5/eigen/.libs/lt-test b/gsl-2.5/eigen/.libs/lt-test new file mode 100755 index 00000000..962ebb95 Binary files /dev/null and b/gsl-2.5/eigen/.libs/lt-test differ diff --git a/gsl-2.5/eigen/.libs/test b/gsl-2.5/eigen/.libs/test new file mode 100755 index 00000000..c1d35d91 Binary files /dev/null and b/gsl-2.5/eigen/.libs/test differ diff --git a/gsl-2.5/eigen/ChangeLog b/gsl-2.5/eigen/ChangeLog new file mode 100644 index 00000000..22b4c06d --- /dev/null +++ b/gsl-2.5/eigen/ChangeLog @@ -0,0 +1,146 @@ +2011-03-27 Brian Gough + + * jacobi.c (norm): compute norm of off-diagonal elements only as + per algorithm 8.4.3 in Golub and van Loan + +2009-11-26 Brian Gough + + * qrstep.c (qrstep): handle the case where |mu| >> |d0| + |sd0| to + prevent infinite loop + +2009-07-09 Brian Gough + + * symmv.c (gsl_eigen_symmv_free): handle NULL argument in free + + * symm.c (gsl_eigen_symm_free): handle NULL argument in free + + * nonsymmv.c (gsl_eigen_nonsymmv_free): handle NULL argument in free + + * nonsymm.c (gsl_eigen_nonsymm_free): handle NULL argument in free + + * hermv.c (gsl_eigen_hermv_free): handle NULL argument in free + + * herm.c (gsl_eigen_herm_free): handle NULL argument in free + + * genv.c (gsl_eigen_genv_free): handle NULL argument in free + + * gensymmv.c (gsl_eigen_gensymmv_free): handle NULL argument in free + + * gensymm.c (gsl_eigen_gensymm_free): handle NULL argument in free + + * genhermv.c (gsl_eigen_genhermv_free): handle NULL argument in free + + * genherm.c (gsl_eigen_genherm_free): handle NULL argument in free + + * gen.c (gsl_eigen_gen_free): handle NULL argument in free + + * francis.c (gsl_eigen_francis_free): handle NULL argument in free + +2008-07-03 Brian Gough + + * Makefile.am (INCLUDES): use top_srcdir instead of top_builddir + +2007-08-30 Brian Gough + + * test.c (test_eigen_symm): added new test case for underflow + + * qrstep.c (trailing_eigenvalue): handle underflow for small tab, + also handle dt==0 directly. + +2007-07-30 Brian Gough + + * testgen.c (main): use gsl_finite instead of finite + +2006-09-14 Brian Gough + + * test.c (test_eigen_symm): fix duplicate VAL_DESC to ABS_DESC + (test_eigen_herm): fix duplicate VAL_DESC to ABS_DESC + +2006-08-14 Brian Gough + + * unsymm.c (gsl_eigen_unsymm): support for unsymmetric matrices + (P.Alken) + +2006-04-18 Brian Gough + + * test.c (test_eigenvalues): increase error bound + +2006-03-26 Brian Gough + + * jacobi.c (gsl_eigen_invert_jacobi): use unsigned int for nrot + consistently + +2005-08-22 Brian Gough + + * test.c (test_eigenvalues): increased test tolerance + +2004-12-03 Brian Gough + + * jacobi.c (gsl_eigen_jacobi): use algorithm from Golub and Van + Loan + (gsl_eigen_invert_jacobi): new code + +2003-01-02 Brian Gough + + * symmv.c (gsl_eigen_symmv): change gsl_isnan to isnan + + * symm.c (gsl_eigen_symm): change gsl_isnan to isnan + + * hermv.c (gsl_eigen_hermv): change gsl_isnan to isnan + + * herm.c (gsl_eigen_herm): change gsl_isnan to isnan + +2002-11-16 Brian Gough + + * symm.c (gsl_eigen_symm): prevent infinite loop for NaNs + + * herm.c (gsl_eigen_herm): prevent infinite loop for NaNs + + * symmv.c (gsl_eigen_symmv): prevent infinite loop for NaNs + + * hermv.c (gsl_eigen_hermv): prevent infinite loop for NaNs + +Fri Oct 18 17:58:35 2002 Brian Gough + + * test.c (main): added test cases to catch division by zero + (beta_r=0) in householdercomplex.c + +Wed Aug 28 19:05:54 2002 Brian Gough + + * Makefile.am (test_LDADD): fix link order to have libgslsys near + end + +Thu Aug 2 18:17:58 2001 Brian Gough + + * hermv.c (gsl_eigen_hermv): fixed index bug in accumulation of evec. + + * symmv.c (gsl_eigen_symmv): fixed index bug in accumulation of evec. + + * test.c (main): added two new test cases + + * qrstep.c (trailing_eigenvalue): chose better value of mu when + dt=0, prevents infinite loop. + +Sun Jul 1 22:43:45 2001 Brian Gough + + * modified to use new-style vector views + +Wed Jun 20 12:30:38 2001 Brian Gough + + * hermv.c (gsl_eigen_hermv): additional workspace argument no + longer required + +Mon Apr 23 10:31:01 2001 Brian Gough + + * unified error handling conventions to _e for error handling + functions and no suffix for plain functions, so _impl functions + are no longer needed. + + * removed tests for EFAULT, since EFAULT should only apply to + invalid non-null pointers. + +Fri Apr 13 20:33:18 2001 Brian Gough + + * eigen/test.c (test_invert_jacobi): removed matmult and replaced + by gsl_blas_dgemm + diff --git a/gsl-2.5/eigen/Makefile b/gsl-2.5/eigen/Makefile new file mode 100644 index 00000000..11a81a14 --- /dev/null +++ b/gsl-2.5/eigen/Makefile @@ -0,0 +1,1048 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# eigen/Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + + + + +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/gsl +pkgincludedir = $(includedir)/gsl +pkglibdir = $(libdir)/gsl +pkglibexecdir = $(libexecdir)/gsl +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = x86_64-unknown-linux-gnu +host_triplet = x86_64-unknown-linux-gnu +check_PROGRAMS = test$(EXEEXT) +subdir = eigen +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp \ + $(noinst_HEADERS) $(pkginclude_HEADERS) \ + $(top_srcdir)/test-driver ChangeLog TODO +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +libgsleigen_la_LIBADD = +am_libgsleigen_la_OBJECTS = jacobi.lo symm.lo symmv.lo nonsymm.lo \ + nonsymmv.lo herm.lo hermv.lo gensymm.lo gensymmv.lo genherm.lo \ + genhermv.lo gen.lo genv.lo sort.lo francis.lo schur.lo +libgsleigen_la_OBJECTS = $(am_libgsleigen_la_OBJECTS) +AM_V_lt = $(am__v_lt_$(V)) +am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) +am__v_lt_0 = --silent +am__v_lt_1 = +am_test_OBJECTS = test.$(OBJEXT) +test_OBJECTS = $(am_test_OBJECTS) +test_DEPENDENCIES = libgsleigen.la ../test/libgsltest.la \ + ../linalg/libgsllinalg.la ../permutation/libgslpermutation.la \ + ../blas/libgslblas.la ../cblas/libgslcblas.la \ + ../matrix/libgslmatrix.la ../vector/libgslvector.la \ + ../block/libgslblock.la ../complex/libgslcomplex.la \ + ../ieee-utils/libgslieeeutils.la ../sys/libgslsys.la \ + ../err/libgslerr.la ../utils/libutils.la ../rng/libgslrng.la \ + ../sort/libgslsort.la +AM_V_P = $(am__v_P_$(V)) +am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY)) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_$(V)) +am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_$(V)) +am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I. -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_$(V)) +am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_$(V)) +am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libgsleigen_la_SOURCES) $(test_SOURCES) +DIST_SOURCES = $(libgsleigen_la_SOURCES) $(test_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(pkgincludedir)" +HEADERS = $(noinst_HEADERS) $(pkginclude_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = .test +LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing aclocal-1.13 +AMTAR = $${TAR-tar} +AM_DEFAULT_VERBOSITY = 1 +AR = ar +AS = as +AUTOCONF = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing autoconf +AUTOHEADER = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing autoheader +AUTOMAKE = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing automake-1.13 +AWK = gawk +CC = gcc +CCDEPMODE = depmode=gcc3 +CFLAGS = -g -O2 +CPP = gcc -E +CPPFLAGS = +CYGPATH_W = echo +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +DLLTOOL = false +DSYMUTIL = +DUMPBIN = +ECHO_C = +ECHO_N = -n +ECHO_T = +EGREP = /usr/bin/grep -E +EXEEXT = +FGREP = /usr/bin/grep -F +GREP = /usr/bin/grep +GSLCBLAS_LDFLAGS = +GSL_CFLAGS = -I${prefix}/include +GSL_LDFLAGS = +GSL_LIBADD = +GSL_LIBM = -lm +GSL_LIBS = -L${exec_prefix}/lib -lgsl +GSL_LT_CBLAS_VERSION = 0:0:0 +GSL_LT_VERSION = 24:0:1 +GSL_MAJOR_VERSION = 2 +GSL_MINOR_VERSION = 5 +HAVE_AIX_IEEE_INTERFACE = +HAVE_DARWIN86_IEEE_INTERFACE = +HAVE_DARWIN_IEEE_INTERFACE = +HAVE_FREEBSD_IEEE_INTERFACE = +HAVE_GNUM68K_IEEE_INTERFACE = +HAVE_GNUPPC_IEEE_INTERFACE = +HAVE_GNUSPARC_IEEE_INTERFACE = +HAVE_GNUX86_IEEE_INTERFACE = +HAVE_HPUX11_IEEE_INTERFACE = +HAVE_HPUX_IEEE_INTERFACE = +HAVE_IRIX_IEEE_INTERFACE = +HAVE_NETBSD_IEEE_INTERFACE = +HAVE_OPENBSD_IEEE_INTERFACE = +HAVE_OS2EMX_IEEE_INTERFACE = +HAVE_SOLARIS_IEEE_INTERFACE = +HAVE_SUNOS4_IEEE_INTERFACE = +HAVE_TRU64_IEEE_INTERFACE = +INSTALL = /usr/bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = $(install_sh) -c -s +LD = /usr/bin/ld -m elf_x86_64 +LDFLAGS = +LIBM = -lm +LIBOBJS = +LIBS = -lm +LIBTOOL = $(SHELL) $(top_builddir)/libtool +LIPO = +LN_S = ln -s +LTLIBOBJS = +MAINT = # +MAKEINFO = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing makeinfo +MANIFEST_TOOL = : +MKDIR_P = /usr/bin/mkdir -p +NM = /usr/bin/nm -B +NMEDIT = +OBJDUMP = objdump +OBJEXT = o +OTOOL = +OTOOL64 = +PACKAGE = gsl +PACKAGE_BUGREPORT = +PACKAGE_NAME = gsl +PACKAGE_STRING = gsl 2.5 +PACKAGE_TARNAME = gsl +PACKAGE_URL = +PACKAGE_VERSION = 2.5 +PATH_SEPARATOR = : +RANLIB = ranlib +SED = /usr/bin/sed +SET_MAKE = +SHELL = /bin/sh +STRIP = strip +VERSION = 2.5 +abs_builddir = /home/groups/kipac/chto/package/gsl/gsl-2.5/eigen +abs_srcdir = /home/groups/kipac/chto/package/gsl/gsl-2.5/eigen +abs_top_builddir = /home/groups/kipac/chto/package/gsl/gsl-2.5 +abs_top_srcdir = /home/groups/kipac/chto/package/gsl/gsl-2.5 +ac_ct_AR = ar +ac_ct_CC = gcc +ac_ct_DUMPBIN = +am__include = include +am__leading_dot = . +am__quote = +am__tar = $${TAR-tar} chof - "$$tardir" +am__untar = $${TAR-tar} xf - +bindir = ${exec_prefix}/bin +build = x86_64-unknown-linux-gnu +build_alias = +build_cpu = x86_64 +build_os = linux-gnu +build_vendor = unknown +builddir = . +datadir = ${datarootdir} +datarootdir = ${prefix}/share +docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} +dvidir = ${docdir} +exec_prefix = ${prefix} +host = x86_64-unknown-linux-gnu +host_alias = +host_cpu = x86_64 +host_os = linux-gnu +host_vendor = unknown +htmldir = ${docdir} +includedir = ${prefix}/include +infodir = ${datarootdir}/info +install_sh = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/install-sh +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +localedir = ${datarootdir}/locale +localstatedir = ${prefix}/var +mandir = ${datarootdir}/man +mkdir_p = $(MKDIR_P) +oldincludedir = /usr/include +pdfdir = ${docdir} +prefix = /home/groups/kipac/chto/package/gsl/gsl_lib +program_transform_name = s,x,x, +psdir = ${docdir} +sbindir = ${exec_prefix}/sbin +sharedstatedir = ${prefix}/com +srcdir = . +sysconfdir = ${prefix}/etc +target_alias = +top_build_prefix = ../ +top_builddir = .. +top_srcdir = .. +noinst_LTLIBRARIES = libgsleigen.la +pkginclude_HEADERS = gsl_eigen.h +libgsleigen_la_SOURCES = jacobi.c symm.c symmv.c nonsymm.c nonsymmv.c herm.c hermv.c gensymm.c gensymmv.c genherm.c genhermv.c gen.c genv.c sort.c francis.c schur.c +AM_CPPFLAGS = -I$(top_srcdir) +noinst_HEADERS = qrstep.c +TESTS = $(check_PROGRAMS) +test_LDADD = libgsleigen.la ../test/libgsltest.la ../linalg/libgsllinalg.la ../permutation/libgslpermutation.la ../blas/libgslblas.la ../cblas/libgslcblas.la ../matrix/libgslmatrix.la ../vector/libgslvector.la ../block/libgslblock.la ../complex/libgslcomplex.la ../ieee-utils/libgslieeeutils.la ../sys/libgslsys.la ../err/libgslerr.la ../utils/libutils.la ../rng/libgslrng.la ../sort/libgslsort.la +test_SOURCES = test.c +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu eigen/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu eigen/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: # $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): # $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libgsleigen.la: $(libgsleigen_la_OBJECTS) $(libgsleigen_la_DEPENDENCIES) $(EXTRA_libgsleigen_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(libgsleigen_la_OBJECTS) $(libgsleigen_la_LIBADD) $(LIBS) + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) $(EXTRA_test_DEPENDENCIES) + @rm -f test$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_OBJECTS) $(test_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +include ./$(DEPDIR)/francis.Plo +include ./$(DEPDIR)/gen.Plo +include ./$(DEPDIR)/genherm.Plo +include ./$(DEPDIR)/genhermv.Plo +include ./$(DEPDIR)/gensymm.Plo +include ./$(DEPDIR)/gensymmv.Plo +include ./$(DEPDIR)/genv.Plo +include ./$(DEPDIR)/herm.Plo +include ./$(DEPDIR)/hermv.Plo +include ./$(DEPDIR)/jacobi.Plo +include ./$(DEPDIR)/nonsymm.Plo +include ./$(DEPDIR)/nonsymmv.Plo +include ./$(DEPDIR)/schur.Plo +include ./$(DEPDIR)/sort.Plo +include ./$(DEPDIR)/symm.Plo +include ./$(DEPDIR)/symmv.Plo +include ./$(DEPDIR)/test.Po + +.c.o: + $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# $(AM_V_CC)source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(COMPILE) -c $< + +.c.obj: + $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# $(AM_V_CC)source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: + $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +# $(AM_V_CC)source='$<' object='$@' libtool=yes \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-pkgincludeHEADERS: $(pkginclude_HEADERS) + @$(NORMAL_INSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \ + done + +uninstall-pkgincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + else \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_PROGRAMS) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +test.log: test$(EXEEXT) + @p='test$(EXEEXT)'; \ + b='test'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +#.test$(EXEEXT).log: +# @p='$<'; \ +# $(am__set_b); \ +# $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +# --log-file $$b.log --trs-file $$b.trs \ +# $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +# "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-am +all-am: Makefile $(LTLIBRARIES) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(pkgincludedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-pkgincludeHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-pkgincludeHEADERS + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES cscopelist-am ctags ctags-am distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-pkgincludeHEADERS \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + recheck tags tags-am uninstall uninstall-am \ + uninstall-pkgincludeHEADERS + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gsl-2.5/eigen/Makefile.am b/gsl-2.5/eigen/Makefile.am new file mode 100644 index 00000000..c28bfdef --- /dev/null +++ b/gsl-2.5/eigen/Makefile.am @@ -0,0 +1,18 @@ +noinst_LTLIBRARIES = libgsleigen.la + +check_PROGRAMS = test + +pkginclude_HEADERS = gsl_eigen.h +libgsleigen_la_SOURCES = jacobi.c symm.c symmv.c nonsymm.c nonsymmv.c herm.c hermv.c gensymm.c gensymmv.c genherm.c genhermv.c gen.c genv.c sort.c francis.c schur.c + +AM_CPPFLAGS = -I$(top_srcdir) + +noinst_HEADERS = qrstep.c + +TESTS = $(check_PROGRAMS) + +test_LDADD = libgsleigen.la ../test/libgsltest.la ../linalg/libgsllinalg.la ../permutation/libgslpermutation.la ../blas/libgslblas.la ../cblas/libgslcblas.la ../matrix/libgslmatrix.la ../vector/libgslvector.la ../block/libgslblock.la ../complex/libgslcomplex.la ../ieee-utils/libgslieeeutils.la ../sys/libgslsys.la ../err/libgslerr.la ../utils/libutils.la ../rng/libgslrng.la ../sort/libgslsort.la + +test_SOURCES = test.c + + diff --git a/gsl-2.5/eigen/Makefile.in b/gsl-2.5/eigen/Makefile.in new file mode 100644 index 00000000..e38f23a0 --- /dev/null +++ b/gsl-2.5/eigen/Makefile.in @@ -0,0 +1,1048 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + + +VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +check_PROGRAMS = test$(EXEEXT) +subdir = eigen +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp \ + $(noinst_HEADERS) $(pkginclude_HEADERS) \ + $(top_srcdir)/test-driver ChangeLog TODO +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +libgsleigen_la_LIBADD = +am_libgsleigen_la_OBJECTS = jacobi.lo symm.lo symmv.lo nonsymm.lo \ + nonsymmv.lo herm.lo hermv.lo gensymm.lo gensymmv.lo genherm.lo \ + genhermv.lo gen.lo genv.lo sort.lo francis.lo schur.lo +libgsleigen_la_OBJECTS = $(am_libgsleigen_la_OBJECTS) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +am_test_OBJECTS = test.$(OBJEXT) +test_OBJECTS = $(am_test_OBJECTS) +test_DEPENDENCIES = libgsleigen.la ../test/libgsltest.la \ + ../linalg/libgsllinalg.la ../permutation/libgslpermutation.la \ + ../blas/libgslblas.la ../cblas/libgslcblas.la \ + ../matrix/libgslmatrix.la ../vector/libgslvector.la \ + ../block/libgslblock.la ../complex/libgslcomplex.la \ + ../ieee-utils/libgslieeeutils.la ../sys/libgslsys.la \ + ../err/libgslerr.la ../utils/libutils.la ../rng/libgslrng.la \ + ../sort/libgslsort.la +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libgsleigen_la_SOURCES) $(test_SOURCES) +DIST_SOURCES = $(libgsleigen_la_SOURCES) $(test_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(pkgincludedir)" +HEADERS = $(noinst_HEADERS) $(pkginclude_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = @EXEEXT@ .test +LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +GSLCBLAS_LDFLAGS = @GSLCBLAS_LDFLAGS@ +GSL_CFLAGS = @GSL_CFLAGS@ +GSL_LDFLAGS = @GSL_LDFLAGS@ +GSL_LIBADD = @GSL_LIBADD@ +GSL_LIBM = @GSL_LIBM@ +GSL_LIBS = @GSL_LIBS@ +GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ +GSL_LT_VERSION = @GSL_LT_VERSION@ +GSL_MAJOR_VERSION = @GSL_MAJOR_VERSION@ +GSL_MINOR_VERSION = @GSL_MINOR_VERSION@ +HAVE_AIX_IEEE_INTERFACE = @HAVE_AIX_IEEE_INTERFACE@ +HAVE_DARWIN86_IEEE_INTERFACE = @HAVE_DARWIN86_IEEE_INTERFACE@ +HAVE_DARWIN_IEEE_INTERFACE = @HAVE_DARWIN_IEEE_INTERFACE@ +HAVE_FREEBSD_IEEE_INTERFACE = @HAVE_FREEBSD_IEEE_INTERFACE@ +HAVE_GNUM68K_IEEE_INTERFACE = @HAVE_GNUM68K_IEEE_INTERFACE@ +HAVE_GNUPPC_IEEE_INTERFACE = @HAVE_GNUPPC_IEEE_INTERFACE@ +HAVE_GNUSPARC_IEEE_INTERFACE = @HAVE_GNUSPARC_IEEE_INTERFACE@ +HAVE_GNUX86_IEEE_INTERFACE = @HAVE_GNUX86_IEEE_INTERFACE@ +HAVE_HPUX11_IEEE_INTERFACE = @HAVE_HPUX11_IEEE_INTERFACE@ +HAVE_HPUX_IEEE_INTERFACE = @HAVE_HPUX_IEEE_INTERFACE@ +HAVE_IRIX_IEEE_INTERFACE = @HAVE_IRIX_IEEE_INTERFACE@ +HAVE_NETBSD_IEEE_INTERFACE = @HAVE_NETBSD_IEEE_INTERFACE@ +HAVE_OPENBSD_IEEE_INTERFACE = @HAVE_OPENBSD_IEEE_INTERFACE@ +HAVE_OS2EMX_IEEE_INTERFACE = @HAVE_OS2EMX_IEEE_INTERFACE@ +HAVE_SOLARIS_IEEE_INTERFACE = @HAVE_SOLARIS_IEEE_INTERFACE@ +HAVE_SUNOS4_IEEE_INTERFACE = @HAVE_SUNOS4_IEEE_INTERFACE@ +HAVE_TRU64_IEEE_INTERFACE = @HAVE_TRU64_IEEE_INTERFACE@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBM = @LIBM@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +noinst_LTLIBRARIES = libgsleigen.la +pkginclude_HEADERS = gsl_eigen.h +libgsleigen_la_SOURCES = jacobi.c symm.c symmv.c nonsymm.c nonsymmv.c herm.c hermv.c gensymm.c gensymmv.c genherm.c genhermv.c gen.c genv.c sort.c francis.c schur.c +AM_CPPFLAGS = -I$(top_srcdir) +noinst_HEADERS = qrstep.c +TESTS = $(check_PROGRAMS) +test_LDADD = libgsleigen.la ../test/libgsltest.la ../linalg/libgsllinalg.la ../permutation/libgslpermutation.la ../blas/libgslblas.la ../cblas/libgslcblas.la ../matrix/libgslmatrix.la ../vector/libgslvector.la ../block/libgslblock.la ../complex/libgslcomplex.la ../ieee-utils/libgslieeeutils.la ../sys/libgslsys.la ../err/libgslerr.la ../utils/libutils.la ../rng/libgslrng.la ../sort/libgslsort.la +test_SOURCES = test.c +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu eigen/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu eigen/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libgsleigen.la: $(libgsleigen_la_OBJECTS) $(libgsleigen_la_DEPENDENCIES) $(EXTRA_libgsleigen_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(libgsleigen_la_OBJECTS) $(libgsleigen_la_LIBADD) $(LIBS) + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) $(EXTRA_test_DEPENDENCIES) + @rm -f test$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_OBJECTS) $(test_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/francis.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gen.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/genherm.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/genhermv.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gensymm.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gensymmv.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/genv.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/herm.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hermv.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/jacobi.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nonsymm.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nonsymmv.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/schur.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sort.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/symm.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/symmv.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test.Po@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-pkgincludeHEADERS: $(pkginclude_HEADERS) + @$(NORMAL_INSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \ + done + +uninstall-pkgincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + else \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_PROGRAMS) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +test.log: test$(EXEEXT) + @p='test$(EXEEXT)'; \ + b='test'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +@am__EXEEXT_TRUE@.test$(EXEEXT).log: +@am__EXEEXT_TRUE@ @p='$<'; \ +@am__EXEEXT_TRUE@ $(am__set_b); \ +@am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +@am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ +@am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +@am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-am +all-am: Makefile $(LTLIBRARIES) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(pkgincludedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-pkgincludeHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-pkgincludeHEADERS + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES cscopelist-am ctags ctags-am distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-pkgincludeHEADERS \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + recheck tags tags-am uninstall uninstall-am \ + uninstall-pkgincludeHEADERS + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gsl-2.5/eigen/TODO b/gsl-2.5/eigen/TODO new file mode 100644 index 00000000..7ceeb4c1 --- /dev/null +++ b/gsl-2.5/eigen/TODO @@ -0,0 +1,22 @@ +# -*- org -*- +#+CATEGORY: eigen + +* Merge improvements from SVD qrstep to eigen - these should be + combined somehow as we only need one version of them. + +* dlae2.f has better handling of 2x2 eigenvalues than our qrstep.c + +* Document Jacobi eigen function, in particular that it only works for +symmetric matrices. + +* add support for nonsymmv left eigenvectors?: + + gsl_eigen_nonsymmv_params(const int lr) + + to specify whether we should compute left/right eigenvectors (or both). + + If they want both, we'll need a new function: + + gsl_eigen_nonsymmv_lr(..., evec_r, evec_l, ...) + and + gsl_eigen_nonsymmv_lr_Z(...) diff --git a/gsl-2.5/eigen/francis.c b/gsl-2.5/eigen/francis.c new file mode 100644 index 00000000..2e4214aa --- /dev/null +++ b/gsl-2.5/eigen/francis.c @@ -0,0 +1,1048 @@ +/* eigen/francis.c + * + * Copyright (C) 2006, 2007 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/* + * This module computes the eigenvalues of a real upper hessenberg + * matrix, using the classical double shift Francis QR algorithm. + * It will also optionally compute the full Schur form and matrix of + * Schur vectors. + * + * See Golub & Van Loan, "Matrix Computations" (3rd ed), + * algorithm 7.5.2 + */ + +/* exceptional shift coefficients - these values are from LAPACK DLAHQR */ +#define GSL_FRANCIS_COEFF1 (0.75) +#define GSL_FRANCIS_COEFF2 (-0.4375) + +static inline void francis_schur_decomp(gsl_matrix * H, + gsl_vector_complex * eval, + gsl_eigen_francis_workspace * w); +static inline size_t francis_search_subdiag_small_elements(gsl_matrix * A); +static inline int francis_qrstep(gsl_matrix * H, + gsl_eigen_francis_workspace * w); +static inline void francis_schur_standardize(gsl_matrix *A, + gsl_complex *eval1, + gsl_complex *eval2, + gsl_eigen_francis_workspace *w); +static inline size_t francis_get_submatrix(gsl_matrix *A, gsl_matrix *B); +static void francis_standard_form(gsl_matrix *A, double *cs, double *sn); + +/* +gsl_eigen_francis_alloc() + +Allocate a workspace for solving the nonsymmetric eigenvalue problem. +The size of this workspace is O(1) + +Inputs: none + +Return: pointer to workspace +*/ + +gsl_eigen_francis_workspace * +gsl_eigen_francis_alloc(void) +{ + gsl_eigen_francis_workspace *w; + + w = (gsl_eigen_francis_workspace *) + calloc (1, sizeof (gsl_eigen_francis_workspace)); + + if (w == 0) + { + GSL_ERROR_NULL ("failed to allocate space for workspace", GSL_ENOMEM); + } + + /* these are filled in later */ + + w->size = 0; + w->max_iterations = 0; + w->n_iter = 0; + w->n_evals = 0; + + w->compute_t = 0; + w->Z = NULL; + w->H = NULL; + + return (w); +} /* gsl_eigen_francis_alloc() */ + +/* +gsl_eigen_francis_free() + Free francis workspace w +*/ + +void +gsl_eigen_francis_free (gsl_eigen_francis_workspace *w) +{ + RETURN_IF_NULL (w); + free(w); +} /* gsl_eigen_francis_free() */ + +/* +gsl_eigen_francis_T() + Called when we want to compute the Schur form T, or no longer +compute the Schur form T + +Inputs: compute_t - 1 to compute T, 0 to not compute T + w - francis workspace +*/ + +void +gsl_eigen_francis_T (const int compute_t, gsl_eigen_francis_workspace *w) +{ + w->compute_t = compute_t; +} + +/* +gsl_eigen_francis() + +Solve the nonsymmetric eigenvalue problem + +H x = \lambda x + +for the eigenvalues \lambda using algorithm 7.5.2 of +Golub & Van Loan, "Matrix Computations" (3rd ed) + +Inputs: H - upper hessenberg matrix + eval - where to store eigenvalues + w - workspace + +Return: success or error - if error code is returned, + then the QR procedure did not converge in the + allowed number of iterations. In the event of non- + convergence, the number of eigenvalues found will + still be stored in the beginning of eval, + +Notes: On output, the diagonal of H contains 1-by-1 or 2-by-2 + blocks containing the eigenvalues. If T is desired, + H will contain the full Schur form on output. +*/ + +int +gsl_eigen_francis (gsl_matrix * H, gsl_vector_complex * eval, + gsl_eigen_francis_workspace * w) +{ + /* check matrix and vector sizes */ + + if (H->size1 != H->size2) + { + GSL_ERROR ("matrix must be square to compute eigenvalues", GSL_ENOTSQR); + } + else if (eval->size != H->size1) + { + GSL_ERROR ("eigenvalue vector must match matrix size", GSL_EBADLEN); + } + else + { + const size_t N = H->size1; + int j; + + /* + * Set internal parameters which depend on matrix size. + * The Francis solver can be called with any size matrix + * since the workspace does not depend on N. + * Furthermore, multishift solvers which call the Francis + * solver may need to call it with different sized matrices + */ + w->size = N; + w->max_iterations = 30 * N; + + /* + * save a pointer to original matrix since francis_schur_decomp + * is recursive + */ + w->H = H; + + w->n_iter = 0; + w->n_evals = 0; + + /* + * zero out the first two subdiagonals (below the main subdiagonal) + * needed as scratch space by the QR sweep routine + */ + for (j = 0; j < (int) N - 3; ++j) + { + gsl_matrix_set(H, (size_t) j + 2, (size_t) j, 0.0); + gsl_matrix_set(H, (size_t) j + 3, (size_t) j, 0.0); + } + + if (N > 2) + gsl_matrix_set(H, N - 1, N - 3, 0.0); + + /* + * compute Schur decomposition of H and store eigenvalues + * into eval + */ + francis_schur_decomp(H, eval, w); + + if (w->n_evals != N) + { + GSL_ERROR ("maximum iterations reached without finding all eigenvalues", GSL_EMAXITER); + } + + return GSL_SUCCESS; + } +} /* gsl_eigen_francis() */ + +/* +gsl_eigen_francis_Z() + +Solve the nonsymmetric eigenvalue problem for a Hessenberg +matrix + +H x = \lambda x + +for the eigenvalues \lambda using the Francis double-shift +method. + +Here we compute the real Schur form + +T = Q^t H Q + +with the diagonal blocks of T giving us the eigenvalues. +Q is the matrix of Schur vectors. + +Originally, H was obtained from a general nonsymmetric matrix +A via a transformation + +H = U^t A U + +so that + +T = (UQ)^t A (UQ) = Z^t A Z + +Z is the matrix of Schur vectors computed by this algorithm + +Inputs: H - upper hessenberg matrix + eval - where to store eigenvalues + Z - where to store Schur vectors + w - workspace + +Notes: 1) If T is computed, it is stored in H on output. Otherwise, + the diagonal of H will contain 1-by-1 and 2-by-2 blocks + containing the eigenvalues. + + 2) The matrix Z must be initialized to the Hessenberg + similarity matrix U. Or if you want the eigenvalues + of H, initialize Z to the identity matrix. +*/ + +int +gsl_eigen_francis_Z (gsl_matrix * H, gsl_vector_complex * eval, + gsl_matrix * Z, gsl_eigen_francis_workspace * w) +{ + int s; + + /* set internal Z pointer so we know to accumulate transformations */ + w->Z = Z; + + s = gsl_eigen_francis(H, eval, w); + + w->Z = NULL; + + return s; +} /* gsl_eigen_francis_Z() */ + +/******************************************** + * INTERNAL ROUTINES * + ********************************************/ + +/* +francis_schur_decomp() + Compute the Schur decomposition of the matrix H + +Inputs: H - hessenberg matrix + eval - where to store eigenvalues + w - workspace + +Return: none +*/ + +static inline void +francis_schur_decomp(gsl_matrix * H, gsl_vector_complex * eval, + gsl_eigen_francis_workspace * w) +{ + gsl_matrix_view m; /* active matrix we are working on */ + size_t N; /* size of matrix */ + size_t q; /* index of small subdiagonal element */ + gsl_complex lambda1, /* eigenvalues */ + lambda2; + + N = H->size1; + m = gsl_matrix_submatrix(H, 0, 0, N, N); + + while ((N > 2) && ((w->n_iter)++ < w->max_iterations)) + { + q = francis_search_subdiag_small_elements(&m.matrix); + + if (q == 0) + { + /* + * no small subdiagonal element found - perform a QR + * sweep on the active reduced hessenberg matrix + */ + francis_qrstep(&m.matrix, w); + continue; + } + + /* + * a small subdiagonal element was found - one or two eigenvalues + * have converged or the matrix has split into two smaller matrices + */ + + if (q == (N - 1)) + { + /* + * the last subdiagonal element of the matrix is 0 - + * m_{NN} is a real eigenvalue + */ + GSL_SET_COMPLEX(&lambda1, + gsl_matrix_get(&m.matrix, q, q), 0.0); + gsl_vector_complex_set(eval, w->n_evals, lambda1); + w->n_evals += 1; + w->n_iter = 0; + + --N; + m = gsl_matrix_submatrix(&m.matrix, 0, 0, N, N); + } + else if (q == (N - 2)) + { + gsl_matrix_view v; + + /* + * The bottom right 2-by-2 block of m is an eigenvalue + * system + */ + + v = gsl_matrix_submatrix(&m.matrix, q, q, 2, 2); + francis_schur_standardize(&v.matrix, &lambda1, &lambda2, w); + + gsl_vector_complex_set(eval, w->n_evals, lambda1); + gsl_vector_complex_set(eval, w->n_evals + 1, lambda2); + w->n_evals += 2; + w->n_iter = 0; + + N -= 2; + m = gsl_matrix_submatrix(&m.matrix, 0, 0, N, N); + } + else if (q == 1) + { + /* the first matrix element is an eigenvalue */ + GSL_SET_COMPLEX(&lambda1, + gsl_matrix_get(&m.matrix, 0, 0), 0.0); + gsl_vector_complex_set(eval, w->n_evals, lambda1); + w->n_evals += 1; + w->n_iter = 0; + + --N; + m = gsl_matrix_submatrix(&m.matrix, 1, 1, N, N); + } + else if (q == 2) + { + gsl_matrix_view v; + + /* the upper left 2-by-2 block is an eigenvalue system */ + + v = gsl_matrix_submatrix(&m.matrix, 0, 0, 2, 2); + francis_schur_standardize(&v.matrix, &lambda1, &lambda2, w); + + gsl_vector_complex_set(eval, w->n_evals, lambda1); + gsl_vector_complex_set(eval, w->n_evals + 1, lambda2); + w->n_evals += 2; + w->n_iter = 0; + + N -= 2; + m = gsl_matrix_submatrix(&m.matrix, 2, 2, N, N); + } + else + { + gsl_matrix_view v; + + /* + * There is a zero element on the subdiagonal somewhere + * in the middle of the matrix - we can now operate + * separately on the two submatrices split by this + * element. q is the row index of the zero element. + */ + + /* operate on lower right (N - q)-by-(N - q) block first */ + v = gsl_matrix_submatrix(&m.matrix, q, q, N - q, N - q); + francis_schur_decomp(&v.matrix, eval, w); + + /* operate on upper left q-by-q block */ + v = gsl_matrix_submatrix(&m.matrix, 0, 0, q, q); + francis_schur_decomp(&v.matrix, eval, w); + + N = 0; + } + } + + /* handle special cases of N = 1 or 2 */ + + if (N == 1) + { + GSL_SET_COMPLEX(&lambda1, gsl_matrix_get(&m.matrix, 0, 0), 0.0); + gsl_vector_complex_set(eval, w->n_evals, lambda1); + w->n_evals += 1; + w->n_iter = 0; + } + else if (N == 2) + { + francis_schur_standardize(&m.matrix, &lambda1, &lambda2, w); + gsl_vector_complex_set(eval, w->n_evals, lambda1); + gsl_vector_complex_set(eval, w->n_evals + 1, lambda2); + w->n_evals += 2; + w->n_iter = 0; + } +} /* francis_schur_decomp() */ + +/* +francis_qrstep() + Perform a Francis QR step. + +See Golub & Van Loan, "Matrix Computations" (3rd ed), +algorithm 7.5.1 + +Inputs: H - upper Hessenberg matrix + w - workspace + +Notes: The matrix H must be "reduced", ie: have no tiny subdiagonal + elements. When computing the first householder reflection, + we divide by H_{21} so it is necessary that this element + is not zero. When a subdiagonal element becomes negligible, + the calling function should call this routine with the + submatrices split by that element, so that we don't divide + by zeros. +*/ + +static inline int +francis_qrstep(gsl_matrix * H, gsl_eigen_francis_workspace * w) +{ + const size_t N = H->size1; + size_t i; /* looping */ + gsl_matrix_view m; + double tau_i; /* householder coefficient */ + double dat[3]; /* householder vector */ + double scale; /* scale factor to avoid overflow */ + gsl_vector_view v2, v3; + size_t q, r; + size_t top = 0; /* location of H in original matrix */ + double s, + disc; + double h_nn, /* H(n,n) */ + h_nm1nm1, /* H(n-1,n-1) */ + h_cross, /* H(n,n-1) * H(n-1,n) */ + h_tmp1, + h_tmp2; + + v2 = gsl_vector_view_array(dat, 2); + v3 = gsl_vector_view_array(dat, 3); + + if ((w->n_iter % 10) == 0) + { + /* + * exceptional shifts: we have gone 10 iterations + * without finding a new eigenvalue, try a new choice of shifts. + * See LAPACK routine DLAHQR + */ + s = fabs(gsl_matrix_get(H, N - 1, N - 2)) + + fabs(gsl_matrix_get(H, N - 2, N - 3)); + h_nn = gsl_matrix_get(H, N - 1, N - 1) + GSL_FRANCIS_COEFF1 * s; + h_nm1nm1 = h_nn; + h_cross = GSL_FRANCIS_COEFF2 * s * s; + } + else + { + /* + * normal shifts - compute Rayleigh quotient and use + * Wilkinson shift if possible + */ + + h_nn = gsl_matrix_get(H, N - 1, N - 1); + h_nm1nm1 = gsl_matrix_get(H, N - 2, N - 2); + h_cross = gsl_matrix_get(H, N - 1, N - 2) * + gsl_matrix_get(H, N - 2, N - 1); + + disc = 0.5 * (h_nm1nm1 - h_nn); + disc = disc * disc + h_cross; + if (disc > 0.0) + { + double ave; + + /* real roots - use Wilkinson's shift twice */ + disc = sqrt(disc); + ave = 0.5 * (h_nm1nm1 + h_nn); + if (fabs(h_nm1nm1) - fabs(h_nn) > 0.0) + { + h_nm1nm1 = h_nm1nm1 * h_nn - h_cross; + h_nn = h_nm1nm1 / (disc * GSL_SIGN(ave) + ave); + } + else + { + h_nn = disc * GSL_SIGN(ave) + ave; + } + + h_nm1nm1 = h_nn; + h_cross = 0.0; + } + } + + h_tmp1 = h_nm1nm1 - gsl_matrix_get(H, 0, 0); + h_tmp2 = h_nn - gsl_matrix_get(H, 0, 0); + + /* + * These formulas are equivalent to those in Golub & Van Loan + * for the normal shift case - the terms have been rearranged + * to reduce possible roundoff error when subdiagonal elements + * are small + */ + + dat[0] = (h_tmp1*h_tmp2 - h_cross) / gsl_matrix_get(H, 1, 0) + + gsl_matrix_get(H, 0, 1); + dat[1] = gsl_matrix_get(H, 1, 1) - gsl_matrix_get(H, 0, 0) - h_tmp1 - + h_tmp2; + dat[2] = gsl_matrix_get(H, 2, 1); + + scale = fabs(dat[0]) + fabs(dat[1]) + fabs(dat[2]); + if (scale != 0.0) + { + /* scale to prevent overflow or underflow */ + dat[0] /= scale; + dat[1] /= scale; + dat[2] /= scale; + } + + if (w->Z || w->compute_t) + { + /* + * get absolute indices of this (sub)matrix relative to the + * original Hessenberg matrix + */ + top = francis_get_submatrix(w->H, H); + } + + for (i = 0; i < N - 2; ++i) + { + tau_i = gsl_linalg_householder_transform(&v3.vector); + + if (tau_i != 0.0) + { + /* q = max(1, i - 1) */ + q = (1 > ((int)i - 1)) ? 0 : (i - 1); + + /* r = min(i + 3, N - 1) */ + r = ((i + 3) < (N - 1)) ? (i + 3) : (N - 1); + + if (w->compute_t) + { + /* + * We are computing the Schur form T, so we + * need to transform the whole matrix H + * + * H -> P_k^t H P_k + * + * where P_k is the current Householder matrix + */ + + /* apply left householder matrix (I - tau_i v v') to H */ + m = gsl_matrix_submatrix(w->H, + top + i, + top + q, + 3, + w->size - top - q); + gsl_linalg_householder_hm(tau_i, &v3.vector, &m.matrix); + + /* apply right householder matrix (I - tau_i v v') to H */ + m = gsl_matrix_submatrix(w->H, + 0, + top + i, + top + r + 1, + 3); + gsl_linalg_householder_mh(tau_i, &v3.vector, &m.matrix); + } + else + { + /* + * We are not computing the Schur form T, so we + * only need to transform the active block + */ + + /* apply left householder matrix (I - tau_i v v') to H */ + m = gsl_matrix_submatrix(H, i, q, 3, N - q); + gsl_linalg_householder_hm(tau_i, &v3.vector, &m.matrix); + + /* apply right householder matrix (I - tau_i v v') to H */ + m = gsl_matrix_submatrix(H, 0, i, r + 1, 3); + gsl_linalg_householder_mh(tau_i, &v3.vector, &m.matrix); + } + + if (w->Z) + { + /* accumulate the similarity transformation into Z */ + m = gsl_matrix_submatrix(w->Z, 0, top + i, w->size, 3); + gsl_linalg_householder_mh(tau_i, &v3.vector, &m.matrix); + } + } /* if (tau_i != 0.0) */ + + dat[0] = gsl_matrix_get(H, i + 1, i); + dat[1] = gsl_matrix_get(H, i + 2, i); + if (i < (N - 3)) + { + dat[2] = gsl_matrix_get(H, i + 3, i); + } + + scale = fabs(dat[0]) + fabs(dat[1]) + fabs(dat[2]); + if (scale != 0.0) + { + /* scale to prevent overflow or underflow */ + dat[0] /= scale; + dat[1] /= scale; + dat[2] /= scale; + } + } /* for (i = 0; i < N - 2; ++i) */ + + scale = fabs(dat[0]) + fabs(dat[1]); + if (scale != 0.0) + { + /* scale to prevent overflow or underflow */ + dat[0] /= scale; + dat[1] /= scale; + } + + tau_i = gsl_linalg_householder_transform(&v2.vector); + + if (w->compute_t) + { + m = gsl_matrix_submatrix(w->H, + top + N - 2, + top + N - 3, + 2, + w->size - top - N + 3); + gsl_linalg_householder_hm(tau_i, &v2.vector, &m.matrix); + + m = gsl_matrix_submatrix(w->H, + 0, + top + N - 2, + top + N, + 2); + gsl_linalg_householder_mh(tau_i, &v2.vector, &m.matrix); + } + else + { + m = gsl_matrix_submatrix(H, N - 2, N - 3, 2, 3); + gsl_linalg_householder_hm(tau_i, &v2.vector, &m.matrix); + + m = gsl_matrix_submatrix(H, 0, N - 2, N, 2); + gsl_linalg_householder_mh(tau_i, &v2.vector, &m.matrix); + } + + if (w->Z) + { + /* accumulate transformation into Z */ + m = gsl_matrix_submatrix(w->Z, 0, top + N - 2, w->size, 2); + gsl_linalg_householder_mh(tau_i, &v2.vector, &m.matrix); + } + + return GSL_SUCCESS; +} /* francis_qrstep() */ + +/* +francis_search_subdiag_small_elements() + Search for a small subdiagonal element starting from the bottom +of a matrix A. A small element is one that satisfies: + +|A_{i,i-1}| <= eps * (|A_{i,i}| + |A_{i-1,i-1}|) + +Inputs: A - matrix (must be at least 3-by-3) + +Return: row index of small subdiagonal element or 0 if not found + +Notes: the first small element that is found (starting from bottom) + is set to zero +*/ + +static inline size_t +francis_search_subdiag_small_elements(gsl_matrix * A) +{ + const size_t N = A->size1; + size_t i; + double dpel = gsl_matrix_get(A, N - 2, N - 2); + + for (i = N - 1; i > 0; --i) + { + double sel = gsl_matrix_get(A, i, i - 1); + double del = gsl_matrix_get(A, i, i); + + if ((sel == 0.0) || + (fabs(sel) < GSL_DBL_EPSILON * (fabs(del) + fabs(dpel)))) + { + gsl_matrix_set(A, i, i - 1, 0.0); + return (i); + } + + dpel = del; + } + + return (0); +} /* francis_search_subdiag_small_elements() */ + +/* +francis_schur_standardize() + Convert a 2-by-2 diagonal block in the Schur form to standard form +and update the rest of T and Z matrices if required. + +Inputs: A - 2-by-2 matrix + eval1 - where to store eigenvalue 1 + eval2 - where to store eigenvalue 2 + w - francis workspace +*/ + +static inline void +francis_schur_standardize(gsl_matrix *A, gsl_complex *eval1, + gsl_complex *eval2, + gsl_eigen_francis_workspace *w) +{ + const size_t N = w->size; + double cs, sn; + size_t top; + + /* + * figure out where the submatrix A resides in the + * original matrix H + */ + top = francis_get_submatrix(w->H, A); + + /* convert 2-by-2 block to standard form */ + francis_standard_form(A, &cs, &sn); + + /* set eigenvalues */ + + GSL_SET_REAL(eval1, gsl_matrix_get(A, 0, 0)); + GSL_SET_REAL(eval2, gsl_matrix_get(A, 1, 1)); + if (gsl_matrix_get(A, 1, 0) == 0.0) + { + GSL_SET_IMAG(eval1, 0.0); + GSL_SET_IMAG(eval2, 0.0); + } + else + { + double tmp = sqrt(fabs(gsl_matrix_get(A, 0, 1)) * + fabs(gsl_matrix_get(A, 1, 0))); + GSL_SET_IMAG(eval1, tmp); + GSL_SET_IMAG(eval2, -tmp); + } + + if (w->compute_t) + { + gsl_vector_view xv, yv; + + /* + * The above call to francis_standard_form transformed a 2-by-2 block + * of T into upper triangular form via the transformation + * + * U = [ CS -SN ] + * [ SN CS ] + * + * The original matrix T was + * + * T = [ T_{11} | T_{12} | T_{13} ] + * [ 0* | A | T_{23} ] + * [ 0 | 0* | T_{33} ] + * + * where 0* indicates all zeros except for possibly + * one subdiagonal element next to A. + * + * After francis_standard_form, T looks like this: + * + * T = [ T_{11} | T_{12} | T_{13} ] + * [ 0* | U^t A U | T_{23} ] + * [ 0 | 0* | T_{33} ] + * + * since only the 2-by-2 block of A was changed. However, + * in order to be able to back transform T at the end, + * we need to apply the U transformation to the rest + * of the matrix T since there is no way to apply a + * similarity transformation to T and change only the + * middle 2-by-2 block. In other words, let + * + * M = [ I 0 0 ] + * [ 0 U 0 ] + * [ 0 0 I ] + * + * and compute + * + * M^t T M = [ T_{11} | T_{12} U | T_{13} ] + * [ U^t 0* | U^t A U | U^t T_{23} ] + * [ 0 | 0* U | T_{33} ] + * + * So basically we need to apply the transformation U + * to the i x 2 matrix T_{12} and the 2 x (n - i + 2) + * matrix T_{23}, where i is the index of the top of A + * in T. + * + * The BLAS routine drot() is suited for this. + */ + + if (top < (N - 2)) + { + /* transform the 2 rows of T_{23} */ + + xv = gsl_matrix_subrow(w->H, top, top + 2, N - top - 2); + yv = gsl_matrix_subrow(w->H, top + 1, top + 2, N - top - 2); + gsl_blas_drot(&xv.vector, &yv.vector, cs, sn); + } + + if (top > 0) + { + /* transform the 2 columns of T_{12} */ + + xv = gsl_matrix_subcolumn(w->H, top, 0, top); + yv = gsl_matrix_subcolumn(w->H, top + 1, 0, top); + gsl_blas_drot(&xv.vector, &yv.vector, cs, sn); + } + } /* if (w->compute_t) */ + + if (w->Z) + { + gsl_vector_view xv, yv; + + /* + * Accumulate the transformation in Z. Here, Z -> Z * M + * + * So: + * + * Z -> [ Z_{11} | Z_{12} U | Z_{13} ] + * [ Z_{21} | Z_{22} U | Z_{23} ] + * [ Z_{31} | Z_{32} U | Z_{33} ] + * + * So we just need to apply drot() to the 2 columns + * starting at index 'top' + */ + + xv = gsl_matrix_column(w->Z, top); + yv = gsl_matrix_column(w->Z, top + 1); + + gsl_blas_drot(&xv.vector, &yv.vector, cs, sn); + } /* if (w->Z) */ +} /* francis_schur_standardize() */ + +/* +francis_get_submatrix() + B is a submatrix of A. The goal of this function is to +compute the indices in A of where the matrix B resides +*/ + +static inline size_t +francis_get_submatrix(gsl_matrix *A, gsl_matrix *B) +{ + size_t diff; + double ratio; + size_t top; + + diff = (size_t) (B->data - A->data); + + ratio = (double)diff / ((double) (A->tda + 1)); + + top = (size_t) floor(ratio); + + return top; +} /* francis_get_submatrix() */ + +/* +francis_standard_form() + Compute the Schur factorization of a real 2-by-2 matrix in +standard form: + +[ A B ] = [ CS -SN ] [ T11 T12 ] [ CS SN ] +[ C D ] [ SN CS ] [ T21 T22 ] [-SN CS ] + +where either: +1) T21 = 0 so that T11 and T22 are real eigenvalues of the matrix, or +2) T11 = T22 and T21*T12 < 0, so that T11 +/- sqrt(|T21*T12|) are + complex conjugate eigenvalues + +Inputs: A - 2-by-2 matrix + cs - where to store cosine parameter of rotation matrix + sn - where to store sine parameter of rotation matrix + +Notes: 1) based on LAPACK routine DLANV2 + 2) On output, A is modified to contain the matrix in standard form +*/ + +static void +francis_standard_form(gsl_matrix *A, double *cs, double *sn) +{ + double a, b, c, d; /* input matrix values */ + double tmp; + double p, z; + double bcmax, bcmis, scale; + double tau, sigma; + double cs1, sn1; + double aa, bb, cc, dd; + double sab, sac; + + a = gsl_matrix_get(A, 0, 0); + b = gsl_matrix_get(A, 0, 1); + c = gsl_matrix_get(A, 1, 0); + d = gsl_matrix_get(A, 1, 1); + + if (c == 0.0) + { + /* + * matrix is already upper triangular - set rotation matrix + * to the identity + */ + *cs = 1.0; + *sn = 0.0; + } + else if (b == 0.0) + { + /* swap rows and columns to make it upper triangular */ + + *cs = 0.0; + *sn = 1.0; + + tmp = d; + d = a; + a = tmp; + b = -c; + c = 0.0; + } + else if (((a - d) == 0.0) && (GSL_SIGN(b) != GSL_SIGN(c))) + { + /* the matrix has complex eigenvalues with a == d */ + *cs = 1.0; + *sn = 0.0; + } + else + { + tmp = a - d; + p = 0.5 * tmp; + bcmax = GSL_MAX(fabs(b), fabs(c)); + bcmis = GSL_MIN(fabs(b), fabs(c)) * GSL_SIGN(b) * GSL_SIGN(c); + scale = GSL_MAX(fabs(p), bcmax); + z = (p / scale) * p + (bcmax / scale) * bcmis; + + if (z >= 4.0 * GSL_DBL_EPSILON) + { + /* real eigenvalues, compute a and d */ + + z = p + GSL_SIGN(p) * fabs(sqrt(scale) * sqrt(z)); + a = d + z; + d -= (bcmax / z) * bcmis; + + /* compute b and the rotation matrix */ + + tau = gsl_hypot(c, z); + *cs = z / tau; + *sn = c / tau; + b -= c; + c = 0.0; + } + else + { + /* + * complex eigenvalues, or real (almost) equal eigenvalues - + * make diagonal elements equal + */ + + sigma = b + c; + tau = gsl_hypot(sigma, tmp); + *cs = sqrt(0.5 * (1.0 + fabs(sigma) / tau)); + *sn = -(p / (tau * (*cs))) * GSL_SIGN(sigma); + + /* + * Compute [ AA BB ] = [ A B ] [ CS -SN ] + * [ CC DD ] [ C D ] [ SN CS ] + */ + aa = a * (*cs) + b * (*sn); + bb = -a * (*sn) + b * (*cs); + cc = c * (*cs) + d * (*sn); + dd = -c * (*sn) + d * (*cs); + + /* + * Compute [ A B ] = [ CS SN ] [ AA BB ] + * [ C D ] [-SN CS ] [ CC DD ] + */ + a = aa * (*cs) + cc * (*sn); + b = bb * (*cs) + dd * (*sn); + c = -aa * (*sn) + cc * (*cs); + d = -bb * (*sn) + dd * (*cs); + + tmp = 0.5 * (a + d); + a = d = tmp; + + if (c != 0.0) + { + if (b != 0.0) + { + if (GSL_SIGN(b) == GSL_SIGN(c)) + { + /* + * real eigenvalues: reduce to upper triangular + * form + */ + sab = sqrt(fabs(b)); + sac = sqrt(fabs(c)); + p = GSL_SIGN(c) * fabs(sab * sac); + tau = 1.0 / sqrt(fabs(b + c)); + a = tmp + p; + d = tmp - p; + b -= c; + c = 0.0; + + cs1 = sab * tau; + sn1 = sac * tau; + tmp = (*cs) * cs1 - (*sn) * sn1; + *sn = (*cs) * sn1 + (*sn) * cs1; + *cs = tmp; + } + } + else + { + b = -c; + c = 0.0; + tmp = *cs; + *cs = -(*sn); + *sn = tmp; + } + } + } + } + + /* set new matrix elements */ + + gsl_matrix_set(A, 0, 0, a); + gsl_matrix_set(A, 0, 1, b); + gsl_matrix_set(A, 1, 0, c); + gsl_matrix_set(A, 1, 1, d); +} /* francis_standard_form() */ diff --git a/gsl-2.5/eigen/francis.lo b/gsl-2.5/eigen/francis.lo new file mode 100644 index 00000000..9053cbef --- /dev/null +++ b/gsl-2.5/eigen/francis.lo @@ -0,0 +1,12 @@ +# francis.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/francis.o' + +# Name of the non-PIC object +non_pic_object='francis.o' + diff --git a/gsl-2.5/eigen/gen.c b/gsl-2.5/eigen/gen.c new file mode 100644 index 00000000..d735ecf9 --- /dev/null +++ b/gsl-2.5/eigen/gen.c @@ -0,0 +1,2087 @@ +/* eigen/gen.c + * + * Copyright (C) 2006, 2007 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +/* + * This module computes the eigenvalues of a real generalized + * eigensystem A x = \lambda B x. Left and right Schur vectors + * are optionally computed as well. + * + * Based on the algorithm from Moler and Stewart + * [1] C. Moler, G. Stewart, "An Algorithm for Generalized Matrix + * Eigenvalue Problems", SIAM J. Numer. Anal., Vol 10, No 2, 1973. + * + * This algorithm is also described in the book + * [2] Golub & Van Loan, "Matrix Computations" (3rd ed), algorithm 7.7.3 + * + * This file contains routines based on original code from LAPACK + * which is distributed under the modified BSD license. + */ + +#define GEN_ESHIFT_COEFF (1.736) + +static void gen_schur_decomp(gsl_matrix *H, gsl_matrix *R, + gsl_vector_complex *alpha, gsl_vector *beta, + gsl_eigen_gen_workspace *w); +static inline int gen_qzstep(gsl_matrix *H, gsl_matrix *R, + gsl_eigen_gen_workspace *w); +static inline void gen_qzstep_d(gsl_matrix *H, gsl_matrix *R, + gsl_eigen_gen_workspace *w); +static void gen_tri_split_top(gsl_matrix *H, gsl_matrix *R, + gsl_eigen_gen_workspace *w); +static inline void gen_tri_chase_zero(gsl_matrix *H, gsl_matrix *R, + size_t q, + gsl_eigen_gen_workspace *w); +static inline void gen_tri_zero_H(gsl_matrix *H, gsl_matrix *R, + gsl_eigen_gen_workspace *w); +static inline size_t gen_search_small_elements(gsl_matrix *H, + gsl_matrix *R, + int *flag, + gsl_eigen_gen_workspace *w); +static int gen_schur_standardize1(gsl_matrix *A, gsl_matrix *B, + double *alphar, double *beta, + gsl_eigen_gen_workspace *w); +static int gen_schur_standardize2(gsl_matrix *A, gsl_matrix *B, + gsl_complex *alpha1, + gsl_complex *alpha2, + double *beta1, double *beta2, + gsl_eigen_gen_workspace *w); +static int gen_compute_eigenvals(gsl_matrix *A, gsl_matrix *B, + gsl_complex *alpha1, + gsl_complex *alpha2, double *beta1, + double *beta2); +static void gen_store_eigval1(const gsl_matrix *H, const double a, + const double b, gsl_vector_complex *alpha, + gsl_vector *beta, + gsl_eigen_gen_workspace *w); +static void gen_store_eigval2(const gsl_matrix *H, + const gsl_complex *alpha1, + const double beta1, + const gsl_complex *alpha2, + const double beta2, + gsl_vector_complex *alpha, + gsl_vector *beta, + gsl_eigen_gen_workspace *w); +static inline size_t gen_get_submatrix(const gsl_matrix *A, + const gsl_matrix *B); + +/*FIX**/ +inline static double normF (gsl_matrix * A); + +/* +gsl_eigen_gen_alloc() + +Allocate a workspace for solving the generalized eigenvalue problem. +The size of this workspace is O(n) + +Inputs: n - size of matrices + +Return: pointer to workspace +*/ + +gsl_eigen_gen_workspace * +gsl_eigen_gen_alloc(const size_t n) +{ + gsl_eigen_gen_workspace *w; + + if (n == 0) + { + GSL_ERROR_NULL ("matrix dimension must be positive integer", + GSL_EINVAL); + } + + w = (gsl_eigen_gen_workspace *) calloc (1, sizeof (gsl_eigen_gen_workspace)); + + if (w == 0) + { + GSL_ERROR_NULL ("failed to allocate space for workspace", GSL_ENOMEM); + } + + w->size = n; + w->max_iterations = 30 * n; + w->n_evals = 0; + w->n_iter = 0; + w->needtop = 0; + w->atol = 0.0; + w->btol = 0.0; + w->ascale = 0.0; + w->bscale = 0.0; + w->eshift = 0.0; + w->H = NULL; + w->R = NULL; + w->compute_s = 0; + w->compute_t = 0; + w->Q = NULL; + w->Z = NULL; + + w->work = gsl_vector_alloc(n); + + if (w->work == 0) + { + gsl_eigen_gen_free(w); + GSL_ERROR_NULL ("failed to allocate space for additional workspace", GSL_ENOMEM); + } + + return (w); +} /* gsl_eigen_gen_alloc() */ + +/* +gsl_eigen_gen_free() + Free workspace w +*/ + +void +gsl_eigen_gen_free (gsl_eigen_gen_workspace * w) +{ + RETURN_IF_NULL (w); + + if (w->work) + gsl_vector_free(w->work); + + free(w); +} /* gsl_eigen_gen_free() */ + +/* +gsl_eigen_gen_params() + Set parameters which define how we solve the eigenvalue problem + +Inputs: compute_s - 1 if we want to compute S, 0 if not + compute_t - 1 if we want to compute T, 0 if not + balance - 1 if we want to balance matrices, 0 if not + w - gen workspace + +Return: none +*/ + +void +gsl_eigen_gen_params (const int compute_s, const int compute_t, + const int balance, gsl_eigen_gen_workspace *w) +{ + w->compute_s = compute_s; + w->compute_t = compute_t; +} /* gsl_eigen_gen_params() */ + +/* +gsl_eigen_gen() + +Solve the generalized eigenvalue problem + +A x = \lambda B x + +for the eigenvalues \lambda. + +Inputs: A - general real matrix + B - general real matrix + alpha - where to store eigenvalue numerators + beta - where to store eigenvalue denominators + w - workspace + +Return: success or error +*/ + +int +gsl_eigen_gen (gsl_matrix * A, gsl_matrix * B, gsl_vector_complex * alpha, + gsl_vector * beta, gsl_eigen_gen_workspace * w) +{ + const size_t N = A->size1; + + /* check matrix and vector sizes */ + + if (N != A->size2) + { + GSL_ERROR ("matrix must be square to compute eigenvalues", GSL_ENOTSQR); + } + else if ((N != B->size1) || (N != B->size2)) + { + GSL_ERROR ("B matrix dimensions must match A", GSL_EBADLEN); + } + else if (alpha->size != N || beta->size != N) + { + GSL_ERROR ("eigenvalue vector must match matrix size", GSL_EBADLEN); + } + else if (w->size != N) + { + GSL_ERROR ("matrix size does not match workspace", GSL_EBADLEN); + } + else + { + double anorm, bnorm; + + /* compute the Hessenberg-Triangular reduction of (A, B) */ + gsl_linalg_hesstri_decomp(A, B, w->Q, w->Z, w->work); + + /* save pointers to original matrices */ + w->H = A; + w->R = B; + + w->n_evals = 0; + w->n_iter = 0; + w->eshift = 0.0; + + /* determine if we need to compute top indices in QZ step */ + w->needtop = w->Q != 0 || w->Z != 0 || w->compute_t || w->compute_s; + + /* compute matrix norms */ + anorm = normF(A); + bnorm = normF(B); + + /* compute tolerances and scaling factors */ + w->atol = GSL_MAX(GSL_DBL_MIN, GSL_DBL_EPSILON * anorm); + w->btol = GSL_MAX(GSL_DBL_MIN, GSL_DBL_EPSILON * bnorm); + w->ascale = 1.0 / GSL_MAX(GSL_DBL_MIN, anorm); + w->bscale = 1.0 / GSL_MAX(GSL_DBL_MIN, bnorm); + + /* compute the generalized Schur decomposition and eigenvalues */ + gen_schur_decomp(A, B, alpha, beta, w); + + if (w->n_evals != N) + return GSL_EMAXITER; + + return GSL_SUCCESS; + } +} /* gsl_eigen_gen() */ + +/* +gsl_eigen_gen_QZ() + +Solve the generalized eigenvalue problem + +A x = \lambda B x + +for the eigenvalues \lambda. Optionally compute left and/or right +Schur vectors Q and Z which satisfy: + +A = Q S Z^t +B = Q T Z^t + +where (S, T) is the generalized Schur form of (A, B) + +Inputs: A - general real matrix + B - general real matrix + alpha - where to store eigenvalue numerators + beta - where to store eigenvalue denominators + Q - if non-null, where to store left Schur vectors + Z - if non-null, where to store right Schur vectors + w - workspace + +Return: success or error +*/ + +int +gsl_eigen_gen_QZ (gsl_matrix * A, gsl_matrix * B, + gsl_vector_complex * alpha, gsl_vector * beta, + gsl_matrix * Q, gsl_matrix * Z, + gsl_eigen_gen_workspace * w) +{ + if (Q && (A->size1 != Q->size1 || A->size1 != Q->size2)) + { + GSL_ERROR("Q matrix has wrong dimensions", GSL_EBADLEN); + } + else if (Z && (A->size1 != Z->size1 || A->size1 != Z->size2)) + { + GSL_ERROR("Z matrix has wrong dimensions", GSL_EBADLEN); + } + else + { + int s; + + w->Q = Q; + w->Z = Z; + + s = gsl_eigen_gen(A, B, alpha, beta, w); + + w->Q = NULL; + w->Z = NULL; + + return s; + } +} /* gsl_eigen_gen_QZ() */ + +/******************************************** + * INTERNAL ROUTINES * + ********************************************/ + +/* +gen_schur_decomp() + Compute the generalized Schur decomposition of the matrix pencil +(H, R) which is in Hessenberg-Triangular form + +Inputs: H - upper hessenberg matrix + R - upper triangular matrix + alpha - (output) where to store eigenvalue numerators + beta - (output) where to store eigenvalue denominators + w - workspace + +Return: none + +Notes: 1) w->n_evals is updated to keep track of how many eigenvalues + are found +*/ + +static void +gen_schur_decomp(gsl_matrix *H, gsl_matrix *R, gsl_vector_complex *alpha, + gsl_vector *beta, gsl_eigen_gen_workspace *w) +{ + size_t N; + gsl_matrix_view h, r; + gsl_matrix_view vh, vr; + size_t q; /* index of small subdiagonal element */ + gsl_complex z1, z2; /* complex values */ + double a, b; + int s; + int flag; + + N = H->size1; + + h = gsl_matrix_submatrix(H, 0, 0, N, N); + r = gsl_matrix_submatrix(R, 0, 0, N, N); + + while ((N > 1) && (w->n_iter)++ < w->max_iterations) + { + q = gen_search_small_elements(&h.matrix, &r.matrix, &flag, w); + + if (flag == 0) + { + /* no small elements found - do a QZ sweep */ + s = gen_qzstep(&h.matrix, &r.matrix, w); + + if (s == GSL_CONTINUE) + { + /* + * (h, r) is a 2-by-2 block with complex eigenvalues - + * standardize and read off eigenvalues + */ + s = gen_schur_standardize2(&h.matrix, + &r.matrix, + &z1, + &z2, + &a, + &b, + w); + if (s != GSL_SUCCESS) + { + /* + * if we get here, then the standardization process + * perturbed the eigenvalues onto the real line - + * continue QZ iteration to break them into 1-by-1 + * blocks + */ + continue; + } + + gen_store_eigval2(&h.matrix, &z1, a, &z2, b, alpha, beta, w); + N = 0; + } /* if (s) */ + + continue; + } /* if (flag == 0) */ + else if (flag == 2) + { + if (q == 0) + { + /* + * the leading element of R is zero, split off a block + * at the top + */ + gen_tri_split_top(&h.matrix, &r.matrix, w); + } + else + { + /* + * we found a small element on the diagonal of R - chase the + * zero to the bottom of the active block and then zero + * H(n, n - 1) to split off a 1-by-1 block + */ + + if (q != N - 1) + gen_tri_chase_zero(&h.matrix, &r.matrix, q, w); + + /* now zero H(n, n - 1) */ + gen_tri_zero_H(&h.matrix, &r.matrix, w); + } + + /* continue so the next iteration detects the zero in H */ + continue; + } + + /* + * a small subdiagonal element of H was found - one or two + * eigenvalues have converged or the matrix has split into + * two smaller matrices + */ + + if (q == (N - 1)) + { + /* + * the last subdiagonal element of the hessenberg matrix is 0 - + * H_{NN} / R_{NN} is a real eigenvalue - standardize so + * R_{NN} > 0 + */ + + vh = gsl_matrix_submatrix(&h.matrix, q, q, 1, 1); + vr = gsl_matrix_submatrix(&r.matrix, q, q, 1, 1); + gen_schur_standardize1(&vh.matrix, &vr.matrix, &a, &b, w); + + gen_store_eigval1(&vh.matrix, a, b, alpha, beta, w); + + --N; + h = gsl_matrix_submatrix(&h.matrix, 0, 0, N, N); + r = gsl_matrix_submatrix(&r.matrix, 0, 0, N, N); + } + else if (q == (N - 2)) + { + /* bottom right 2-by-2 block may have converged */ + + vh = gsl_matrix_submatrix(&h.matrix, q, q, 2, 2); + vr = gsl_matrix_submatrix(&r.matrix, q, q, 2, 2); + s = gen_schur_standardize2(&vh.matrix, + &vr.matrix, + &z1, + &z2, + &a, + &b, + w); + if (s != GSL_SUCCESS) + { + /* + * this 2-by-2 block contains real eigenvalues that + * have not yet separated into 1-by-1 blocks - + * recursively call gen_schur_decomp() to finish off + * this block + */ + gen_schur_decomp(&vh.matrix, &vr.matrix, alpha, beta, w); + } + else + { + /* we got 2 complex eigenvalues */ + + gen_store_eigval2(&vh.matrix, &z1, a, &z2, b, alpha, beta, w); + } + + N -= 2; + h = gsl_matrix_submatrix(&h.matrix, 0, 0, N, N); + r = gsl_matrix_submatrix(&r.matrix, 0, 0, N, N); + } + else if (q == 1) + { + /* H_{11} / R_{11} is an eigenvalue */ + + vh = gsl_matrix_submatrix(&h.matrix, 0, 0, 1, 1); + vr = gsl_matrix_submatrix(&r.matrix, 0, 0, 1, 1); + gen_schur_standardize1(&vh.matrix, &vr.matrix, &a, &b, w); + + gen_store_eigval1(&vh.matrix, a, b, alpha, beta, w); + + --N; + h = gsl_matrix_submatrix(&h.matrix, 1, 1, N, N); + r = gsl_matrix_submatrix(&r.matrix, 1, 1, N, N); + } + else if (q == 2) + { + /* upper left 2-by-2 block may have converged */ + + vh = gsl_matrix_submatrix(&h.matrix, 0, 0, 2, 2); + vr = gsl_matrix_submatrix(&r.matrix, 0, 0, 2, 2); + s = gen_schur_standardize2(&vh.matrix, + &vr.matrix, + &z1, + &z2, + &a, + &b, + w); + if (s != GSL_SUCCESS) + { + /* + * this 2-by-2 block contains real eigenvalues that + * have not yet separated into 1-by-1 blocks - + * recursively call gen_schur_decomp() to finish off + * this block + */ + gen_schur_decomp(&vh.matrix, &vr.matrix, alpha, beta, w); + } + else + { + /* we got 2 complex eigenvalues */ + gen_store_eigval2(&vh.matrix, &z1, a, &z2, b, alpha, beta, w); + } + + N -= 2; + h = gsl_matrix_submatrix(&h.matrix, 2, 2, N, N); + r = gsl_matrix_submatrix(&r.matrix, 2, 2, N, N); + } + else + { + /* + * There is a zero element on the subdiagonal somewhere + * in the middle of the matrix - we can now operate + * separately on the two submatrices split by this + * element. q is the row index of the zero element. + */ + + /* operate on lower right (N - q)-by-(N - q) block first */ + vh = gsl_matrix_submatrix(&h.matrix, q, q, N - q, N - q); + vr = gsl_matrix_submatrix(&r.matrix, q, q, N - q, N - q); + gen_schur_decomp(&vh.matrix, &vr.matrix, alpha, beta, w); + + /* operate on upper left q-by-q block */ + vh = gsl_matrix_submatrix(&h.matrix, 0, 0, q, q); + vr = gsl_matrix_submatrix(&r.matrix, 0, 0, q, q); + gen_schur_decomp(&vh.matrix, &vr.matrix, alpha, beta, w); + + N = 0; + } + } /* while ((N > 1) && (w->n_iter)++ < w->max_iterations) */ + + /* handle special case of N = 1 */ + + if (N == 1) + { + gen_schur_standardize1(&h.matrix, &r.matrix, &a, &b, w); + gen_store_eigval1(&h.matrix, a, b, alpha, beta, w); + } +} /* gen_schur_decomp() */ + +/* +gen_qzstep() + This routine determines what type of QZ step to perform on +the generalized matrix pair (H, R). If the pair is 3-by-3 or bigger, +we look at the bottom right 2-by-2 block. If this block has complex +eigenvalues, we perform a Francis double shift QZ sweep. If it +has real eigenvalues, we perform an implicit single shift QZ sweep. + +If the pair is 2-by-2 with real eigenvalues, we perform a single +shift sweep. If it has complex eigenvalues, we return GSL_CONTINUE +to notify the calling function that a 2-by-2 block with complex +eigenvalues has converged, so that it may then call +gen_schur_standardize2(). In the real eigenvalue case, we want to +continue doing QZ sweeps to break it up into two 1-by-1 blocks. + +See LAPACK routine DHGEQZ and [1] for more information. + +Inputs: H - upper Hessenberg matrix (at least 2-by-2) + R - upper triangular matrix (at least 2-by-2) + w - workspace + +Return: GSL_SUCCESS on normal completion + GSL_CONTINUE if we detect a 2-by-2 block with complex eigenvalues +*/ + +static inline int +gen_qzstep(gsl_matrix *H, gsl_matrix *R, gsl_eigen_gen_workspace *w) +{ + const size_t N = H->size1; + gsl_matrix_view vh, vr; /* views of bottom right 2-by-2 block */ + double wr1, wr2, wi; + double scale1, scale2, scale; + double cs, sn; /* givens rotation */ + double temp, /* temporary variables */ + temp2; + size_t j; /* looping */ + gsl_vector_view xv, yv; /* temporary views */ + size_t top = 0; + size_t rows; + + if (w->n_iter % 10 == 0) + { + /* + * Exceptional shift - we have gone 10 iterations without finding + * a new eigenvalue, do a single shift sweep with an + * exceptional shift + */ + + if ((GSL_DBL_MIN * w->max_iterations) * + fabs(gsl_matrix_get(H, N - 2, N - 1)) < + fabs(gsl_matrix_get(R, N - 2, N - 2))) + { + w->eshift += gsl_matrix_get(H, N - 2, N - 1) / + gsl_matrix_get(R, N - 2, N - 2); + } + else + w->eshift += 1.0 / (GSL_DBL_MIN * w->max_iterations); + + if ((w->eshift < GSL_DBL_EPSILON) && + (GSL_DBL_MIN * w->max_iterations) * + fabs(gsl_matrix_get(H, N - 1, N - 2)) < + fabs(gsl_matrix_get(R, N - 2, N - 2))) + { + w->eshift = GEN_ESHIFT_COEFF * + (w->ascale * gsl_matrix_get(H, N - 1, N - 2)) / + (w->bscale * gsl_matrix_get(R, N - 2, N - 2)); + } + + scale1 = 1.0; + wr1 = w->eshift; + } + else + { + /* + * Compute generalized eigenvalues of bottom right 2-by-2 block + * to be used as shifts - wr1 is the Wilkinson shift + */ + + vh = gsl_matrix_submatrix(H, N - 2, N - 2, 2, 2); + vr = gsl_matrix_submatrix(R, N - 2, N - 2, 2, 2); + gsl_schur_gen_eigvals(&vh.matrix, + &vr.matrix, + &wr1, + &wr2, + &wi, + &scale1, + &scale2); + + if (wi != 0.0) + { + /* complex eigenvalues */ + + if (N == 2) + { + /* + * its a 2-by-2 block with complex eigenvalues - notify + * the calling function to deflate + */ + return (GSL_CONTINUE); + } + else + { + /* do a francis double shift sweep */ + gen_qzstep_d(H, R, w); + } + + return GSL_SUCCESS; + } + } + + /* real eigenvalues - perform single shift QZ step */ + + temp = GSL_MIN(w->ascale, 1.0) * (0.5 / GSL_DBL_MIN); + if (scale1 > temp) + scale = temp / scale1; + else + scale = 1.0; + + temp = GSL_MIN(w->bscale, 1.0) * (0.5 / GSL_DBL_MIN); + if (fabs(wr1) > temp) + scale = GSL_MIN(scale, temp / fabs(wr1)); + + scale1 *= scale; + wr1 *= scale; + + if (w->needtop) + { + /* get absolute index of this matrix relative to original matrix */ + top = gen_get_submatrix(w->H, H); + } + + temp = scale1*gsl_matrix_get(H, 0, 0) - wr1*gsl_matrix_get(R, 0, 0); + temp2 = scale1*gsl_matrix_get(H, 1, 0); + + gsl_linalg_givens(temp, temp2, &cs, &sn); + sn = -sn; + + for (j = 0; j < N - 1; ++j) + { + if (j > 0) + { + temp = gsl_matrix_get(H, j, j - 1); + temp2 = gsl_matrix_get(H, j + 1, j - 1); + gsl_linalg_givens(temp, temp2, &cs, &sn); + sn = -sn; + + /* apply to column (j - 1) */ + temp = cs * gsl_matrix_get(H, j, j - 1) + + sn * gsl_matrix_get(H, j + 1, j - 1); + gsl_matrix_set(H, j, j - 1, temp); + gsl_matrix_set(H, j + 1, j - 1, 0.0); + } + + /* apply G to H(j:j+1,:) and T(j:j+1,:) */ + + if (w->compute_s) + { + xv = gsl_matrix_subrow(w->H, top + j, top + j, w->size - top - j); + yv = gsl_matrix_subrow(w->H, top + j + 1, top + j, w->size - top - j); + } + else + { + xv = gsl_matrix_subrow(H, j, j, N - j); + yv = gsl_matrix_subrow(H, j + 1, j, N - j); + } + + gsl_blas_drot(&xv.vector, &yv.vector, cs, sn); + + if (w->compute_t) + { + xv = gsl_matrix_subrow(w->R, top + j, top + j, w->size - top - j); + yv = gsl_matrix_subrow(w->R, top + j + 1, top + j, w->size - top - j); + } + else + { + xv = gsl_matrix_subrow(R, j, j, N - j); + yv = gsl_matrix_subrow(R, j + 1, j, N - j); + } + + gsl_blas_drot(&xv.vector, &yv.vector, cs, sn); + + if (w->Q) + { + /* accumulate Q: Q -> QG */ + xv = gsl_matrix_column(w->Q, top + j); + yv = gsl_matrix_column(w->Q, top + j + 1); + gsl_blas_drot(&xv.vector, &yv.vector, cs, sn); + } + + temp = gsl_matrix_get(R, j + 1, j + 1); + temp2 = gsl_matrix_get(R, j + 1, j); + gsl_linalg_givens(temp, temp2, &cs, &sn); + + rows = GSL_MIN(j + 3, N); + + if (w->compute_s) + { + xv = gsl_matrix_subcolumn(w->H, top + j, 0, top + rows); + yv = gsl_matrix_subcolumn(w->H, top + j + 1, 0, top + rows); + } + else + { + xv = gsl_matrix_subcolumn(H, j, 0, rows); + yv = gsl_matrix_subcolumn(H, j + 1, 0, rows); + } + + gsl_blas_drot(&xv.vector, &yv.vector, cs, sn); + + rows = GSL_MIN(j + 2, N); + + if (w->compute_t) + { + xv = gsl_matrix_subcolumn(w->R, top + j, 0, top + rows); + yv = gsl_matrix_subcolumn(w->R, top + j + 1, 0, top + rows); + } + else + { + xv = gsl_matrix_subcolumn(R, j, 0, rows); + yv = gsl_matrix_subcolumn(R, j + 1, 0, rows); + } + + gsl_blas_drot(&xv.vector, &yv.vector, cs, sn); + + if (w->Z) + { + /* accumulate Z: Z -> ZG */ + xv = gsl_matrix_column(w->Z, top + j); + yv = gsl_matrix_column(w->Z, top + j + 1); + gsl_blas_drot(&xv.vector, &yv.vector, cs, sn); + } + } /* for (j = 0; j < N - 1; ++j) */ + + return GSL_SUCCESS; +} /* gen_qzstep() */ + +/* +gen_qzstep_d() + Perform an implicit double shift QZ step. + +See Golub & Van Loan, "Matrix Computations" (3rd ed), algorithm 7.7.2 + +Inputs: H - upper Hessenberg matrix (at least 3-by-3) + R - upper triangular matrix (at least 3-by-3) + w - workspace +*/ + +static inline void +gen_qzstep_d(gsl_matrix *H, gsl_matrix *R, gsl_eigen_gen_workspace *w) +{ + const size_t N = H->size1; + size_t j; /* looping */ + double dat[3]; /* householder vector */ + double tau; /* householder coefficient */ + gsl_vector_view v2, v3; /* views into 'dat' */ + gsl_matrix_view m; /* temporary view */ + double tmp; + size_t q, r; + size_t top = 0; /* location of H in original matrix */ + double scale; + double AB11, /* various matrix element ratios */ + AB22, + ABNN, + ABMM, + AMNBNN, + ANMBMM, + A21B11, + A12B22, + A32B22, + B12B22, + BMNBNN; + + v2 = gsl_vector_view_array(dat, 2); + v3 = gsl_vector_view_array(dat, 3); + + if (w->needtop) + { + /* get absolute index of this matrix relative to original matrix */ + top = gen_get_submatrix(w->H, H); + } + + /* + * Similar to the QR method, we take the shifts to be the two + * zeros of the problem + * + * det[H(n-1:n,n-1:n) - s*R(n-1:n,n-1:n)] = 0 + * + * The initial householder vector elements are then given by + * Eq. 4.1 of [1], which are designed to reduce errors when + * off diagonal elements are small. + */ + + ABMM = (w->ascale * gsl_matrix_get(H, N - 2, N - 2)) / + (w->bscale * gsl_matrix_get(R, N - 2, N - 2)); + ABNN = (w->ascale * gsl_matrix_get(H, N - 1, N - 1)) / + (w->bscale * gsl_matrix_get(R, N - 1, N - 1)); + AB11 = (w->ascale * gsl_matrix_get(H, 0, 0)) / + (w->bscale * gsl_matrix_get(R, 0, 0)); + AB22 = (w->ascale * gsl_matrix_get(H, 1, 1)) / + (w->bscale * gsl_matrix_get(R, 1, 1)); + AMNBNN = (w->ascale * gsl_matrix_get(H, N - 2, N - 1)) / + (w->bscale * gsl_matrix_get(R, N - 1, N - 1)); + ANMBMM = (w->ascale * gsl_matrix_get(H, N - 1, N - 2)) / + (w->bscale * gsl_matrix_get(R, N - 2, N - 2)); + BMNBNN = gsl_matrix_get(R, N - 2, N - 1) / + gsl_matrix_get(R, N - 1, N - 1); + A21B11 = (w->ascale * gsl_matrix_get(H, 1, 0)) / + (w->bscale * gsl_matrix_get(R, 0, 0)); + A12B22 = (w->ascale * gsl_matrix_get(H, 0, 1)) / + (w->bscale * gsl_matrix_get(R, 1, 1)); + A32B22 = (w->ascale * gsl_matrix_get(H, 2, 1)) / + (w->bscale * gsl_matrix_get(R, 1, 1)); + B12B22 = gsl_matrix_get(R, 0, 1) / gsl_matrix_get(R, 1, 1); + + /* + * These are the Eqs (4.1) of [1], just multiplied by the factor + * (A_{21} / B_{11}) + */ + dat[0] = (ABMM - AB11) * (ABNN - AB11) - (AMNBNN * ANMBMM) + + (ANMBMM * BMNBNN * AB11) + (A12B22 - (AB11 * B12B22)) * A21B11; + dat[1] = ((AB22 - AB11) - (A21B11 * B12B22) - (ABMM - AB11) - + (ABNN - AB11) + (ANMBMM * BMNBNN)) * A21B11; + dat[2] = A32B22 * A21B11; + + scale = fabs(dat[0]) + fabs(dat[1]) + fabs(dat[2]); + if (scale != 0.0) + { + dat[0] /= scale; + dat[1] /= scale; + dat[2] /= scale; + } + + for (j = 0; j < N - 2; ++j) + { + r = GSL_MIN(j + 4, N); + + /* + * Find householder Q so that + * + * Q [x y z]^t = [ * 0 0 ]^t + */ + + tau = gsl_linalg_householder_transform(&v3.vector); + + if (tau != 0.0) + { + /* + * q is the initial column to start applying the householder + * transformation. The GSL_MAX() simply ensures we don't + * try to apply it to column (-1), since we are zeroing out + * column (j - 1) except for the first iteration which + * introduces the bulge. + */ + q = (size_t) GSL_MAX(0, (int)j - 1); + + /* H -> QH, R -> QR */ + + if (w->compute_s) + { + /* + * We are computing the Schur form S, so we need to + * transform the whole matrix H + */ + m = gsl_matrix_submatrix(w->H, + top + j, + top + q, + 3, + w->size - top - q); + gsl_linalg_householder_hm(tau, &v3.vector, &m.matrix); + } + else + { + /* just transform the active block */ + m = gsl_matrix_submatrix(H, j, q, 3, N - q); + gsl_linalg_householder_hm(tau, &v3.vector, &m.matrix); + } + + if (w->compute_t) + { + /* + * We are computing the Schur form T, so we need to + * transform the whole matrix R + */ + m = gsl_matrix_submatrix(w->R, + top + j, + top + j, + 3, + w->size - top - j); + gsl_linalg_householder_hm(tau, &v3.vector, &m.matrix); + } + else + { + /* just transform the active block */ + m = gsl_matrix_submatrix(R, j, j, 3, N - j); + gsl_linalg_householder_hm(tau, &v3.vector, &m.matrix); + } + + if (w->Q) + { + /* accumulate the transformation into Q */ + m = gsl_matrix_submatrix(w->Q, 0, top + j, w->size, 3); + gsl_linalg_householder_mh(tau, &v3.vector, &m.matrix); + } + } /* if (tau != 0.0) */ + + /* + * Find householder Z so that + * + * [ r_{j+2,j} r_{j+2, j+1}, r_{j+2, j+2} ] Z = [ 0 0 * ] + * + * This isn't exactly what gsl_linalg_householder_transform + * does, so we need to rotate the input vector so it preserves + * the last element, and then rotate it back afterwards. + * + * So instead of transforming [x y z], we transform [z x y], + * and the resulting HH vector [1 v2 v3] -> [v2 v3 1] but + * then needs to be scaled to have the first element = 1, so + * it becomes [1 v3/v2 1/v2] (tau must also be scaled accordingly). + */ + + dat[0] = gsl_matrix_get(R, j + 2, j + 2); + dat[1] = gsl_matrix_get(R, j + 2, j); + dat[2] = gsl_matrix_get(R, j + 2, j + 1); + scale = fabs(dat[0]) + fabs(dat[1]) + fabs(dat[2]); + if (scale != 0.0) + { + dat[0] /= scale; + dat[1] /= scale; + dat[2] /= scale; + } + + tau = gsl_linalg_householder_transform(&v3.vector); + + if (tau != 0.0) + { + /* rotate back */ + tmp = gsl_vector_get(&v3.vector, 1); + gsl_vector_set(&v3.vector, 1, gsl_vector_get(&v3.vector, 2)/tmp); + gsl_vector_set(&v3.vector, 2, 1.0 / tmp); + tau *= tmp * tmp; + + /* H -> HZ, R -> RZ */ + + if (w->compute_s) + { + m = gsl_matrix_submatrix(w->H, 0, top + j, top + r, 3); + gsl_linalg_householder_mh(tau, &v3.vector, &m.matrix); + } + else + { + m = gsl_matrix_submatrix(H, 0, j, r, 3); + gsl_linalg_householder_mh(tau, &v3.vector, &m.matrix); + } + + if (w->compute_t) + { + m = gsl_matrix_submatrix(w->R, 0, top + j, top + j + 3, 3); + gsl_linalg_householder_mh(tau, &v3.vector, &m.matrix); + } + else + { + m = gsl_matrix_submatrix(R, 0, j, j + 3, 3); + gsl_linalg_householder_mh(tau, &v3.vector, &m.matrix); + } + + if (w->Z) + { + /* accumulate transformation into Z */ + m = gsl_matrix_submatrix(w->Z, 0, top + j, w->size, 3); + gsl_linalg_householder_mh(tau, &v3.vector, &m.matrix); + } + } /* if (tau != 0.0) */ + + /* + * Find householder Z so that + * + * [ r_{j+1,j} r_{j+1, j+1} ] Z = [ 0 * ] + */ + + dat[0] = gsl_matrix_get(R, j + 1, j + 1); + dat[1] = gsl_matrix_get(R, j + 1, j); + scale = fabs(dat[0]) + fabs(dat[1]); + if (scale != 0.0) + { + dat[0] /= scale; + dat[1] /= scale; + } + + tau = gsl_linalg_householder_transform(&v2.vector); + + if (tau != 0.0) + { + /* rotate back */ + tmp = gsl_vector_get(&v2.vector, 1); + gsl_vector_set(&v2.vector, 1, 1.0 / tmp); + tau *= tmp * tmp; + + /* H -> HZ, R -> RZ */ + + if (w->compute_s) + { + m = gsl_matrix_submatrix(w->H, 0, top + j, top + r, 2); + gsl_linalg_householder_mh(tau, &v2.vector, &m.matrix); + } + else + { + m = gsl_matrix_submatrix(H, 0, j, r, 2); + gsl_linalg_householder_mh(tau, &v2.vector, &m.matrix); + } + + if (w->compute_t) + { + m = gsl_matrix_submatrix(w->R, 0, top + j, top + j + 3, 2); + gsl_linalg_householder_mh(tau, &v2.vector, &m.matrix); + } + else + { + m = gsl_matrix_submatrix(R, 0, j, j + 3, 2); + gsl_linalg_householder_mh(tau, &v2.vector, &m.matrix); + } + + if (w->Z) + { + /* accumulate transformation into Z */ + m = gsl_matrix_submatrix(w->Z, 0, top + j, w->size, 2); + gsl_linalg_householder_mh(tau, &v2.vector, &m.matrix); + } + } /* if (tau != 0.0) */ + + dat[0] = gsl_matrix_get(H, j + 1, j); + dat[1] = gsl_matrix_get(H, j + 2, j); + if (j < N - 3) + dat[2] = gsl_matrix_get(H, j + 3, j); + + scale = fabs(dat[0]) + fabs(dat[1]) + fabs(dat[2]); + if (scale != 0.0) + { + dat[0] /= scale; + dat[1] /= scale; + dat[2] /= scale; + } + } /* for (j = 0; j < N - 2; ++j) */ + + /* + * Find Householder Q so that + * + * Q [ x y ]^t = [ * 0 ]^t + */ + + scale = fabs(dat[0]) + fabs(dat[1]); + if (scale != 0.0) + { + dat[0] /= scale; + dat[1] /= scale; + } + + tau = gsl_linalg_householder_transform(&v2.vector); + + if (w->compute_s) + { + m = gsl_matrix_submatrix(w->H, + top + N - 2, + top + N - 3, + 2, + w->size - top - N + 3); + gsl_linalg_householder_hm(tau, &v2.vector, &m.matrix); + } + else + { + m = gsl_matrix_submatrix(H, N - 2, N - 3, 2, 3); + gsl_linalg_householder_hm(tau, &v2.vector, &m.matrix); + } + + if (w->compute_t) + { + m = gsl_matrix_submatrix(w->R, + top + N - 2, + top + N - 2, + 2, + w->size - top - N + 2); + gsl_linalg_householder_hm(tau, &v2.vector, &m.matrix); + } + else + { + m = gsl_matrix_submatrix(R, N - 2, N - 2, 2, 2); + gsl_linalg_householder_hm(tau, &v2.vector, &m.matrix); + } + + if (w->Q) + { + /* accumulate the transformation into Q */ + m = gsl_matrix_submatrix(w->Q, 0, top + N - 2, w->size, 2); + gsl_linalg_householder_mh(tau, &v2.vector, &m.matrix); + } + + /* + * Find Householder Z so that + * + * [ b_{n,n-1} b_{nn} ] Z = [ 0 * ] + */ + + dat[0] = gsl_matrix_get(R, N - 1, N - 1); + dat[1] = gsl_matrix_get(R, N - 1, N - 2); + scale = fabs(dat[0]) + fabs(dat[1]); + if (scale != 0.0) + { + dat[0] /= scale; + dat[1] /= scale; + } + + tau = gsl_linalg_householder_transform(&v2.vector); + + /* rotate back */ + tmp = gsl_vector_get(&v2.vector, 1); + gsl_vector_set(&v2.vector, 1, 1.0 / tmp); + tau *= tmp * tmp; + + if (w->compute_s) + { + m = gsl_matrix_submatrix(w->H, 0, top + N - 2, top + N, 2); + gsl_linalg_householder_mh(tau, &v2.vector, &m.matrix); + } + else + { + m = gsl_matrix_submatrix(H, 0, N - 2, N, 2); + gsl_linalg_householder_mh(tau, &v2.vector, &m.matrix); + } + + if (w->compute_t) + { + m = gsl_matrix_submatrix(w->R, 0, top + N - 2, top + N, 2); + gsl_linalg_householder_mh(tau, &v2.vector, &m.matrix); + } + else + { + m = gsl_matrix_submatrix(R, 0, N - 2, N, 2); + gsl_linalg_householder_mh(tau, &v2.vector, &m.matrix); + } + + if (w->Z) + { + /* accumulate the transformation into Z */ + m = gsl_matrix_submatrix(w->Z, 0, top + N - 2, w->size, 2); + gsl_linalg_householder_mh(tau, &v2.vector, &m.matrix); + } +} /* gen_qzstep_d() */ + +/* +gen_tri_split_top() + This routine is called when the leading element on the diagonal of R +has become negligible. Split off a 1-by-1 block at the top. + +Inputs: H - upper hessenberg matrix + R - upper triangular matrix + w - workspace +*/ + +static void +gen_tri_split_top(gsl_matrix *H, gsl_matrix *R, gsl_eigen_gen_workspace *w) +{ + const size_t N = H->size1; + size_t j, top = 0; + double cs, sn; + gsl_vector_view xv, yv; + + if (w->needtop) + top = gen_get_submatrix(w->H, H); + + j = 0; + + gsl_linalg_givens(gsl_matrix_get(H, j, j), + gsl_matrix_get(H, j + 1, j), + &cs, + &sn); + sn = -sn; + + if (w->compute_s) + { + xv = gsl_matrix_subrow(w->H, top + j, top, w->size - top); + yv = gsl_matrix_subrow(w->H, top + j + 1, top, w->size - top); + } + else + { + xv = gsl_matrix_row(H, j); + yv = gsl_matrix_row(H, j + 1); + } + + gsl_blas_drot(&xv.vector, &yv.vector, cs, sn); + gsl_matrix_set(H, j + 1, j, 0.0); + + if (w->compute_t) + { + xv = gsl_matrix_subrow(w->R, top + j, top + 1, w->size - top - 1); + yv = gsl_matrix_subrow(w->R, top + j + 1, top + 1, w->size - top - 1); + } + else + { + xv = gsl_matrix_subrow(R, j, 1, N - 1); + yv = gsl_matrix_subrow(R, j + 1, 1, N - 1); + } + + gsl_blas_drot(&xv.vector, &yv.vector, cs, sn); + + if (w->Q) + { + xv = gsl_matrix_column(w->Q, top + j); + yv = gsl_matrix_column(w->Q, top + j + 1); + gsl_blas_drot(&xv.vector, &yv.vector, cs, sn); + } +} /* gen_tri_split_top() */ + +/* +gen_tri_chase_zero() + This routine is called when an element on the diagonal of R +has become negligible. Chase the zero to the bottom of the active +block so we can split off a 1-by-1 block. + +Inputs: H - upper hessenberg matrix + R - upper triangular matrix + q - index such that R(q,q) = 0 (q must be > 0) + w - workspace +*/ + +static inline void +gen_tri_chase_zero(gsl_matrix *H, gsl_matrix *R, size_t q, + gsl_eigen_gen_workspace *w) +{ + const size_t N = H->size1; + size_t j, top = 0; + double cs, sn; + gsl_vector_view xv, yv; + + if (w->needtop) + top = gen_get_submatrix(w->H, H); + + for (j = q; j < N - 1; ++j) + { + gsl_linalg_givens(gsl_matrix_get(R, j, j + 1), + gsl_matrix_get(R, j + 1, j + 1), + &cs, + &sn); + sn = -sn; + + if (w->compute_t) + { + xv = gsl_matrix_subrow(w->R, top + j, top + j + 1, w->size - top - j - 1); + yv = gsl_matrix_subrow(w->R, top + j + 1, top + j + 1, w->size - top - j - 1); + } + else + { + xv = gsl_matrix_subrow(R, j, j + 1, N - j - 1); + yv = gsl_matrix_subrow(R, j + 1, j + 1, N - j - 1); + } + + gsl_blas_drot(&xv.vector, &yv.vector, cs, sn); + gsl_matrix_set(R, j + 1, j + 1, 0.0); + + if (w->compute_s) + { + xv = gsl_matrix_subrow(w->H, top + j, top + j - 1, w->size - top - j + 1); + yv = gsl_matrix_subrow(w->H, top + j + 1, top + j - 1, w->size - top - j + 1); + } + else + { + xv = gsl_matrix_subrow(H, j, j - 1, N - j + 1); + yv = gsl_matrix_subrow(H, j + 1, j - 1, N - j + 1); + } + + gsl_blas_drot(&xv.vector, &yv.vector, cs, sn); + + if (w->Q) + { + /* accumulate Q */ + xv = gsl_matrix_column(w->Q, top + j); + yv = gsl_matrix_column(w->Q, top + j + 1); + gsl_blas_drot(&xv.vector, &yv.vector, cs, sn); + } + + gsl_linalg_givens(gsl_matrix_get(H, j + 1, j), + gsl_matrix_get(H, j + 1, j - 1), + &cs, + &sn); + sn = -sn; + + if (w->compute_s) + { + xv = gsl_matrix_subcolumn(w->H, top + j, 0, top + j + 2); + yv = gsl_matrix_subcolumn(w->H, top + j - 1, 0, top + j + 2); + } + else + { + xv = gsl_matrix_subcolumn(H, j, 0, j + 2); + yv = gsl_matrix_subcolumn(H, j - 1, 0, j + 2); + } + + gsl_blas_drot(&xv.vector, &yv.vector, cs, sn); + gsl_matrix_set(H, j + 1, j - 1, 0.0); + + if (w->compute_t) + { + xv = gsl_matrix_subcolumn(w->R, top + j, 0, top + j + 1); + yv = gsl_matrix_subcolumn(w->R, top + j - 1, 0, top + j + 1); + } + else + { + xv = gsl_matrix_subcolumn(R, j, 0, j + 1); + yv = gsl_matrix_subcolumn(R, j - 1, 0, j + 1); + } + + gsl_blas_drot(&xv.vector, &yv.vector, cs, sn); + + if (w->Z) + { + /* accumulate Z */ + xv = gsl_matrix_column(w->Z, top + j); + yv = gsl_matrix_column(w->Z, top + j - 1); + gsl_blas_drot(&xv.vector, &yv.vector, cs, sn); + } + } +} /* gen_tri_chase_zero() */ + +/* +gen_tri_zero_H() + Companion function to get_tri_chase_zero(). After the zero on +the diagonal of R has been chased to the bottom, we zero the element +H(n, n - 1) in order to split off a 1-by-1 block. +*/ + +static inline void +gen_tri_zero_H(gsl_matrix *H, gsl_matrix *R, gsl_eigen_gen_workspace *w) +{ + const size_t N = H->size1; + size_t top = 0; + double cs, sn; + gsl_vector_view xv, yv; + + if (w->needtop) + top = gen_get_submatrix(w->H, H); + + gsl_linalg_givens(gsl_matrix_get(H, N - 1, N - 1), + gsl_matrix_get(H, N - 1, N - 2), + &cs, + &sn); + sn = -sn; + + if (w->compute_s) + { + xv = gsl_matrix_subcolumn(w->H, top + N - 1, 0, top + N); + yv = gsl_matrix_subcolumn(w->H, top + N - 2, 0, top + N); + } + else + { + xv = gsl_matrix_column(H, N - 1); + yv = gsl_matrix_column(H, N - 2); + } + + gsl_blas_drot(&xv.vector, &yv.vector, cs, sn); + + gsl_matrix_set(H, N - 1, N - 2, 0.0); + + if (w->compute_t) + { + xv = gsl_matrix_subcolumn(w->R, top + N - 1, 0, top + N - 1); + yv = gsl_matrix_subcolumn(w->R, top + N - 2, 0, top + N - 1); + } + else + { + xv = gsl_matrix_subcolumn(R, N - 1, 0, N - 1); + yv = gsl_matrix_subcolumn(R, N - 2, 0, N - 1); + } + + gsl_blas_drot(&xv.vector, &yv.vector, cs, sn); + + if (w->Z) + { + /* accumulate Z */ + xv = gsl_matrix_column(w->Z, top + N - 1); + yv = gsl_matrix_column(w->Z, top + N - 2); + gsl_blas_drot(&xv.vector, &yv.vector, cs, sn); + } +} /* gen_tri_zero_H() */ + +/* +gen_search_small_elements() + This routine searches for small elements in the matrix pencil +(H, R) to determine if any eigenvalues have converged. + +Tests: + +1. Test if the Hessenberg matrix has a small subdiagonal element: + H(i, i - 1) < tolerance + +2. Test if the Triangular matrix has a small diagonal element: + R(i, i) < tolerance + +Possible outcomes: + +(A) Neither test passed: in this case 'flag' is set to 0 and the + function returns 0 + +(B) Test 1 passes and 2 does not: in this case 'flag' is set to 1 + and we return the row index i such that H(i, i - 1) < tol + +(C) Test 2 passes and 1 does not: in this case 'flag' is set to 2 + and we return the index i such that R(i, i) < tol + +(D) Tests 1 and 2 both pass: in this case 'flag' is set to 3 and + we return the index i such that H(i, i - 1) < tol and R(i, i) < tol + +Inputs: H - upper Hessenberg matrix + R - upper Triangular matrix + flag - (output) flag set on output (see above) + w - workspace + +Return: see above +*/ + +static inline size_t +gen_search_small_elements(gsl_matrix *H, gsl_matrix *R, + int *flag, gsl_eigen_gen_workspace *w) +{ + const size_t N = H->size1; + int k; + size_t i; + int pass1 = 0; + int pass2 = 0; + + for (k = (int) N - 1; k >= 0; --k) + { + i = (size_t) k; + + if (i != 0 && fabs(gsl_matrix_get(H, i, i - 1)) <= w->atol) + { + gsl_matrix_set(H, i, i - 1, 0.0); + pass1 = 1; + } + + if (fabs(gsl_matrix_get(R, i, i)) < w->btol) + { + gsl_matrix_set(R, i, i, 0.0); + pass2 = 1; + } + + if (pass1 && !pass2) /* case B */ + { + *flag = 1; + return (i); + } + else if (!pass1 && pass2) /* case C */ + { + *flag = 2; + return (i); + } + else if (pass1 && pass2) /* case D */ + { + *flag = 3; + return (i); + } + } + + /* neither test passed: case A */ + + *flag = 0; + return (0); +} /* gen_search_subdiag_small_elements() */ + +/* +gen_schur_standardize1() + This function is called when a 1-by-1 block has converged - +convert the block to standard form and update the Schur forms and +vectors if required. Standard form here means that the diagonal +element of B is positive. + +Inputs: A - 1-by-1 matrix in Schur form S + B - 1-by-1 matrix in Schur form T + alphar - where to store real part of eigenvalue numerator + beta - where to store eigenvalue denominator + w - workspace + +Return: success +*/ + +static int +gen_schur_standardize1(gsl_matrix *A, gsl_matrix *B, double *alphar, + double *beta, gsl_eigen_gen_workspace *w) +{ + size_t i; + size_t top = 0; + + /* + * it is a 1-by-1 block - the only requirement is that + * B_{00} is > 0, so if it isn't apply a -I transformation + */ + if (gsl_matrix_get(B, 0, 0) < 0.0) + { + if (w->needtop) + top = gen_get_submatrix(w->H, A); + + if (w->compute_t) + { + for (i = 0; i <= top; ++i) + gsl_matrix_set(w->R, i, top, -gsl_matrix_get(w->R, i, top)); + } + else + gsl_matrix_set(B, 0, 0, -gsl_matrix_get(B, 0, 0)); + + if (w->compute_s) + { + for (i = 0; i <= top; ++i) + gsl_matrix_set(w->H, i, top, -gsl_matrix_get(w->H, i, top)); + } + else + gsl_matrix_set(A, 0, 0, -gsl_matrix_get(A, 0, 0)); + + if (w->Z) + { + for (i = 0; i < w->size; ++i) + gsl_matrix_set(w->Z, i, top, -gsl_matrix_get(w->Z, i, top)); + } + } + + *alphar = gsl_matrix_get(A, 0, 0); + *beta = gsl_matrix_get(B, 0, 0); + + return GSL_SUCCESS; +} /* gen_schur_standardize1() */ + +/* +gen_schur_standardize2() + This function is called when a 2-by-2 generalized block has +converged. Convert the block to standard form, which means B +is rotated so that + +B = [ B11 0 ] with B11, B22 non-negative + [ 0 B22 ] + +If the resulting block (A, B) has complex eigenvalues, they are +computed. Otherwise, the function will return GSL_CONTINUE to +notify caller that we need to do more single shift sweeps to +convert the 2-by-2 block into two 1-by-1 blocks. + +Inputs: A - 2-by-2 submatrix of schur form S + B - 2-by-2 submatrix of schur form T + alpha1 - (output) where to store eigenvalue 1 numerator + alpha2 - (output) where to store eigenvalue 2 numerator + beta1 - (output) where to store eigenvalue 1 denominator + beta2 - (output) where to store eigenvalue 2 denominator + w - workspace + +Return: GSL_SUCCESS if block has complex eigenvalues (they are computed) + GSL_CONTINUE if block has real eigenvalues (they are not computed) +*/ + +static int +gen_schur_standardize2(gsl_matrix *A, gsl_matrix *B, gsl_complex *alpha1, + gsl_complex *alpha2, double *beta1, double *beta2, + gsl_eigen_gen_workspace *w) +{ + double datB[4], + datV[4], + datS[2], + work[2]; + gsl_matrix_view uv = gsl_matrix_view_array(datB, 2, 2); + gsl_matrix_view vv = gsl_matrix_view_array(datV, 2, 2); + gsl_vector_view sv = gsl_vector_view_array(datS, 2); + gsl_vector_view wv = gsl_vector_view_array(work, 2); + double B11, B22; + size_t top = 0; + double det; + double cr, sr, cl, sl; + gsl_vector_view xv, yv; + int s; + + if (w->needtop) + top = gen_get_submatrix(w->H, A); + + /* + * Rotate B so that + * + * B = [ B11 0 ] + * [ 0 B22 ] + * + * with B11 non-negative + */ + + gsl_matrix_memcpy(&uv.matrix, B); + gsl_linalg_SV_decomp(&uv.matrix, &vv.matrix, &sv.vector, &wv.vector); + + /* + * Right now, B = U S V^t, where S = diag(s) + * + * The SVD routine may have computed reflection matrices U and V, + * but it would be much nicer to have rotations since we won't have + * to use BLAS mat-mat multiplications to update our matrices, + * and can instead use drot. So convert them to rotations if + * necessary + */ + + det = gsl_matrix_get(&vv.matrix, 0, 0) * gsl_matrix_get(&vv.matrix, 1, 1) - + gsl_matrix_get(&vv.matrix, 0, 1) * gsl_matrix_get(&vv.matrix, 1, 0); + if (det < 0.0) + { + /* V is a reflection, convert it to a rotation by inserting + * F = [1 0; 0 -1] so that: + * + * B = U S [1 0] [1 0] V^t + * [0 -1] [0 -1] + * + * so S -> S F and V -> V F where F is the reflection matrix + * We just need to invert S22 since the first column of V + * will remain unchanged and we can just read off the CS and SN + * parameters. + */ + datS[1] = -datS[1]; + } + + cr = gsl_matrix_get(&vv.matrix, 0, 0); + sr = gsl_matrix_get(&vv.matrix, 1, 0); + + /* same for U */ + det = gsl_matrix_get(&uv.matrix, 0, 0) * gsl_matrix_get(&uv.matrix, 1, 1) - + gsl_matrix_get(&uv.matrix, 0, 1) * gsl_matrix_get(&uv.matrix, 1, 0); + if (det < 0.0) + datS[1] = -datS[1]; + + cl = gsl_matrix_get(&uv.matrix, 0, 0); + sl = gsl_matrix_get(&uv.matrix, 1, 0); + + B11 = gsl_vector_get(&sv.vector, 0); + B22 = gsl_vector_get(&sv.vector, 1); + + /* make sure B11 is positive */ + if (B11 < 0.0) + { + B11 = -B11; + B22 = -B22; + cr = -cr; + sr = -sr; + } + + /* + * At this point, + * + * [ S11 0 ] = [ CSL SNL ] B [ CSR -SNR ] + * [ 0 S22 ] [-SNL CSL ] [ SNR CSR ] + * + * apply rotations to H and rest of R + */ + + if (w->compute_s) + { + xv = gsl_matrix_subrow(w->H, top, top, w->size - top); + yv = gsl_matrix_subrow(w->H, top + 1, top, w->size - top); + gsl_blas_drot(&xv.vector, &yv.vector, cl, sl); + + xv = gsl_matrix_subcolumn(w->H, top, 0, top + 2); + yv = gsl_matrix_subcolumn(w->H, top + 1, 0, top + 2); + gsl_blas_drot(&xv.vector, &yv.vector, cr, sr); + } + else + { + xv = gsl_matrix_row(A, 0); + yv = gsl_matrix_row(A, 1); + gsl_blas_drot(&xv.vector, &yv.vector, cl, sl); + + xv = gsl_matrix_column(A, 0); + yv = gsl_matrix_column(A, 1); + gsl_blas_drot(&xv.vector, &yv.vector, cr, sr); + } + + if (w->compute_t) + { + if (top != (w->size - 2)) + { + xv = gsl_matrix_subrow(w->R, top, top + 2, w->size - top - 2); + yv = gsl_matrix_subrow(w->R, top + 1, top + 2, w->size - top - 2); + gsl_blas_drot(&xv.vector, &yv.vector, cl, sl); + } + + if (top != 0) + { + xv = gsl_matrix_subcolumn(w->R, top, 0, top); + yv = gsl_matrix_subcolumn(w->R, top + 1, 0, top); + gsl_blas_drot(&xv.vector, &yv.vector, cr, sr); + } + } + + if (w->Q) + { + xv = gsl_matrix_column(w->Q, top); + yv = gsl_matrix_column(w->Q, top + 1); + gsl_blas_drot(&xv.vector, &yv.vector, cl, sl); + } + + if (w->Z) + { + xv = gsl_matrix_column(w->Z, top); + yv = gsl_matrix_column(w->Z, top + 1); + gsl_blas_drot(&xv.vector, &yv.vector, cr, sr); + } + + gsl_matrix_set(B, 0, 0, B11); + gsl_matrix_set(B, 0, 1, 0.0); + gsl_matrix_set(B, 1, 0, 0.0); + gsl_matrix_set(B, 1, 1, B22); + + /* if B22 is < 0, make it positive by negating its column */ + if (B22 < 0.0) + { + size_t i; + + if (w->compute_s) + { + for (i = 0; i < top + 2; ++i) + gsl_matrix_set(w->H, i, top + 1, -gsl_matrix_get(w->H, i, top + 1)); + } + else + { + gsl_matrix_set(A, 0, 1, -gsl_matrix_get(A, 0, 1)); + gsl_matrix_set(A, 1, 1, -gsl_matrix_get(A, 1, 1)); + } + + if (w->compute_t) + { + for (i = 0; i < top + 2; ++i) + gsl_matrix_set(w->R, i, top + 1, -gsl_matrix_get(w->R, i, top + 1)); + } + else + { + gsl_matrix_set(B, 0, 1, -gsl_matrix_get(B, 0, 1)); + gsl_matrix_set(B, 1, 1, -gsl_matrix_get(B, 1, 1)); + } + + if (w->Z) + { + xv = gsl_matrix_column(w->Z, top + 1); + gsl_vector_scale(&xv.vector, -1.0); + } + } + + /* our block is now in standard form - compute eigenvalues */ + + s = gen_compute_eigenvals(A, B, alpha1, alpha2, beta1, beta2); + + return s; +} /* gen_schur_standardize2() */ + +/* +gen_compute_eigenvals() + Compute the complex eigenvalues of a 2-by-2 block + +Return: GSL_CONTINUE if block contains real eigenvalues (they are not + computed) + GSL_SUCCESS on normal completion +*/ + +static int +gen_compute_eigenvals(gsl_matrix *A, gsl_matrix *B, gsl_complex *alpha1, + gsl_complex *alpha2, double *beta1, double *beta2) +{ + double wr1, wr2, wi, scale1, scale2; + double s1inv; + double A11, A12, A21, A22; + double B11, B22; + double c11r, c11i, c12, c21, c22r, c22i; + double cz, cq; + double szr, szi, sqr, sqi; + double a1r, a1i, a2r, a2i, b1r, b1i, b1a, b2r, b2i, b2a; + double alphar, alphai; + double t1, an, bn, tempr, tempi, wabs; + + /* + * This function is called from gen_schur_standardize2() and + * its possible the standardization has perturbed the eigenvalues + * onto the real line - so check for this before computing them + */ + + gsl_schur_gen_eigvals(A, B, &wr1, &wr2, &wi, &scale1, &scale2); + if (wi == 0.0) + return GSL_CONTINUE; /* real eigenvalues - continue QZ iteration */ + + /* complex eigenvalues - compute alpha and beta */ + + s1inv = 1.0 / scale1; + + A11 = gsl_matrix_get(A, 0, 0); + A12 = gsl_matrix_get(A, 0, 1); + A21 = gsl_matrix_get(A, 1, 0); + A22 = gsl_matrix_get(A, 1, 1); + + B11 = gsl_matrix_get(B, 0, 0); + B22 = gsl_matrix_get(B, 1, 1); + + c11r = scale1 * A11 - wr1 * B11; + c11i = -wi * B11; + c12 = scale1 * A12; + c21 = scale1 * A21; + c22r = scale1 * A22 - wr1 * B22; + c22i = -wi * B22; + + if (fabs(c11r) + fabs(c11i) + fabs(c12) > + fabs(c21) + fabs(c22r) + fabs(c22i)) + { + t1 = gsl_hypot3(c12, c11r, c11i); + if (t1 != 0.0) + { + cz = c12 / t1; + szr = -c11r / t1; + szi = -c11i / t1; + } + else + { + cz = 0.0; + szr = 1.0; + szi = 0.0; + } + } + else + { + cz = hypot(c22r, c22i); + if (cz <= GSL_DBL_MIN) + { + cz = 0.0; + szr = 1.0; + szi = 0.0; + } + else + { + tempr = c22r / cz; + tempi = c22i / cz; + t1 = hypot(cz, c21); + cz /= t1; + szr = -c21*tempr / t1; + szi = c21*tempi / t1; + } + } + + an = fabs(A11) + fabs(A12) + fabs(A21) + fabs(A22); + bn = fabs(B11) + fabs(B22); + wabs = fabs(wr1) + fabs(wi); + if (scale1*an > wabs*bn) + { + cq = cz * B11; + if (cq <= GSL_DBL_MIN) + { + cq = 0.0; + sqr = 1.0; + sqi = 0.0; + } + else + { + sqr = szr * B22; + sqi = -szi * B22; + } + } + else + { + a1r = cz * A11 + szr * A12; + a1i = szi * A12; + a2r = cz * A21 + szr * A22; + a2i = szi * A22; + cq = hypot(a1r, a1i); + if (cq <= GSL_DBL_MIN) + { + cq = 0.0; + sqr = 1.0; + sqi = 0.0; + } + else + { + tempr = a1r / cq; + tempi = a1i / cq; + sqr = tempr * a2r + tempi * a2i; + sqi = tempi * a2r - tempr * a2i; + } + } + + t1 = gsl_hypot3(cq, sqr, sqi); + cq /= t1; + sqr /= t1; + sqi /= t1; + + tempr = sqr*szr - sqi*szi; + tempi = sqr*szi + sqi*szr; + b1r = cq*cz*B11 + tempr*B22; + b1i = tempi*B22; + b1a = hypot(b1r, b1i); + b2r = cq*cz*B22 + tempr*B11; + b2i = -tempi*B11; + b2a = hypot(b2r, b2i); + + *beta1 = b1a; + *beta2 = b2a; + + alphar = (wr1 * b1a) * s1inv; + alphai = (wi * b1a) * s1inv; + GSL_SET_COMPLEX(alpha1, alphar, alphai); + + alphar = (wr1 * b2a) * s1inv; + alphai = -(wi * b2a) * s1inv; + GSL_SET_COMPLEX(alpha2, alphar, alphai); + + return GSL_SUCCESS; +} /* gen_compute_eigenvals() */ + +/* +gen_store_eigval1() + Store eigenvalue of a 1-by-1 block into the alpha and beta +output vectors. This routine ensures that eigenvalues are stored +in the same order as they appear in the Schur form and updates +various internal workspace quantities. +*/ + +static void +gen_store_eigval1(const gsl_matrix *H, const double a, const double b, + gsl_vector_complex *alpha, + gsl_vector *beta, gsl_eigen_gen_workspace *w) +{ + size_t top = gen_get_submatrix(w->H, H); + gsl_complex z; + + GSL_SET_COMPLEX(&z, a, 0.0); + + gsl_vector_complex_set(alpha, top, z); + gsl_vector_set(beta, top, b); + + w->n_evals += 1; + w->n_iter = 0; + w->eshift = 0.0; +} /* gen_store_eigval1() */ + +/* +gen_store_eigval2() + Store eigenvalues of a 2-by-2 block into the alpha and beta +output vectors. This routine ensures that eigenvalues are stored +in the same order as they appear in the Schur form and updates +various internal workspace quantities. +*/ + +static void +gen_store_eigval2(const gsl_matrix *H, const gsl_complex *alpha1, + const double beta1, const gsl_complex *alpha2, + const double beta2, gsl_vector_complex *alpha, + gsl_vector *beta, gsl_eigen_gen_workspace *w) +{ + size_t top = gen_get_submatrix(w->H, H); + + gsl_vector_complex_set(alpha, top, *alpha1); + gsl_vector_set(beta, top, beta1); + + gsl_vector_complex_set(alpha, top + 1, *alpha2); + gsl_vector_set(beta, top + 1, beta2); + + w->n_evals += 2; + w->n_iter = 0; + w->eshift = 0.0; +} /* gen_store_eigval2() */ + +/* +gen_get_submatrix() + B is a submatrix of A. The goal of this function is to +compute the indices in A of where the matrix B resides +*/ + +static inline size_t +gen_get_submatrix(const gsl_matrix *A, const gsl_matrix *B) +{ + size_t diff; + double ratio; + size_t top; + + diff = (size_t) (B->data - A->data); + + /* B is on the diagonal of A, so measure distance in units of + tda+1 */ + + ratio = (double)diff / ((double) (A->tda + 1)); + + top = (size_t) floor(ratio); + + return top; +} /* gen_get_submatrix() */ + +/* Frobenius norm */ +inline static double +normF (gsl_matrix * A) +{ + size_t i, j, M = A->size1, N = A->size2; + double sum = 0.0, scale = 0.0, ssq = 1.0; + + for (i = 0; i < M; i++) + { + for (j = 0; j < N; j++) + { + double Aij = gsl_matrix_get (A, i, j); + + if (Aij != 0.0) + { + double ax = fabs (Aij); + + if (scale < ax) + { + ssq = 1.0 + ssq * (scale / ax) * (scale / ax); + scale = ax; + } + else + { + ssq += (ax / scale) * (ax / scale); + } + } + + } + } + + sum = scale * sqrt (ssq); + + return sum; +} diff --git a/gsl-2.5/eigen/gen.lo b/gsl-2.5/eigen/gen.lo new file mode 100644 index 00000000..afcb40a8 --- /dev/null +++ b/gsl-2.5/eigen/gen.lo @@ -0,0 +1,12 @@ +# gen.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/gen.o' + +# Name of the non-PIC object +non_pic_object='gen.o' + diff --git a/gsl-2.5/eigen/genherm.c b/gsl-2.5/eigen/genherm.c new file mode 100644 index 00000000..7a6074a4 --- /dev/null +++ b/gsl-2.5/eigen/genherm.c @@ -0,0 +1,227 @@ +/* eigen/genherm.c + * + * Copyright (C) 2007 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/* + * This module computes the eigenvalues of a complex generalized + * hermitian-definite eigensystem A x = \lambda B x, where A and + * B are hermitian, and B is positive-definite. + */ + +/* +gsl_eigen_genherm_alloc() + +Allocate a workspace for solving the generalized hermitian-definite +eigenvalue problem. The size of this workspace is O(3n). + +Inputs: n - size of matrices + +Return: pointer to workspace +*/ + +gsl_eigen_genherm_workspace * +gsl_eigen_genherm_alloc(const size_t n) +{ + gsl_eigen_genherm_workspace *w; + + if (n == 0) + { + GSL_ERROR_NULL ("matrix dimension must be positive integer", + GSL_EINVAL); + } + + w = (gsl_eigen_genherm_workspace *) calloc (1, sizeof (gsl_eigen_genherm_workspace)); + + if (w == 0) + { + GSL_ERROR_NULL ("failed to allocate space for workspace", GSL_ENOMEM); + } + + w->size = n; + + w->herm_workspace_p = gsl_eigen_herm_alloc(n); + if (!w->herm_workspace_p) + { + gsl_eigen_genherm_free(w); + GSL_ERROR_NULL("failed to allocate space for herm workspace", GSL_ENOMEM); + } + + return (w); +} /* gsl_eigen_genherm_alloc() */ + +/* +gsl_eigen_genherm_free() + Free workspace w +*/ + +void +gsl_eigen_genherm_free (gsl_eigen_genherm_workspace * w) +{ + RETURN_IF_NULL (w); + + if (w->herm_workspace_p) + gsl_eigen_herm_free(w->herm_workspace_p); + + free(w); +} /* gsl_eigen_genherm_free() */ + +/* +gsl_eigen_genherm() + +Solve the generalized hermitian-definite eigenvalue problem + +A x = \lambda B x + +for the eigenvalues \lambda. + +Inputs: A - complex hermitian matrix + B - complex hermitian and positive definite matrix + eval - where to store eigenvalues + w - workspace + +Return: success or error +*/ + +int +gsl_eigen_genherm (gsl_matrix_complex * A, gsl_matrix_complex * B, + gsl_vector * eval, gsl_eigen_genherm_workspace * w) +{ + const size_t N = A->size1; + + /* check matrix and vector sizes */ + + if (N != A->size2) + { + GSL_ERROR ("matrix must be square to compute eigenvalues", GSL_ENOTSQR); + } + else if ((N != B->size1) || (N != B->size2)) + { + GSL_ERROR ("B matrix dimensions must match A", GSL_EBADLEN); + } + else if (eval->size != N) + { + GSL_ERROR ("eigenvalue vector must match matrix size", GSL_EBADLEN); + } + else if (w->size != N) + { + GSL_ERROR ("matrix size does not match workspace", GSL_EBADLEN); + } + else + { + int s; + + /* compute Cholesky factorization of B */ + s = gsl_linalg_complex_cholesky_decomp(B); + if (s != GSL_SUCCESS) + return s; /* B is not positive definite */ + + /* transform to standard hermitian eigenvalue problem */ + gsl_eigen_genherm_standardize(A, B); + + s = gsl_eigen_herm(A, eval, w->herm_workspace_p); + + return s; + } +} /* gsl_eigen_genherm() */ + +/* +gsl_eigen_genherm_standardize() + Reduce the generalized hermitian-definite eigenproblem to +the standard hermitian eigenproblem by computing + +C = L^{-1} A L^{-H} + +where L L^H is the Cholesky decomposition of B + +Inputs: A - (input/output) complex hermitian matrix + B - complex hermitian, positive definite matrix in Cholesky form + +Return: success + +Notes: A is overwritten by L^{-1} A L^{-H} +*/ + +int +gsl_eigen_genherm_standardize(gsl_matrix_complex *A, + const gsl_matrix_complex *B) +{ + const size_t N = A->size1; + size_t i; + double a, b; + gsl_complex y, z; + + GSL_SET_IMAG(&z, 0.0); + + for (i = 0; i < N; ++i) + { + /* update lower triangle of A(i:n, i:n) */ + + y = gsl_matrix_complex_get(A, i, i); + a = GSL_REAL(y); + y = gsl_matrix_complex_get(B, i, i); + b = GSL_REAL(y); + a /= b * b; + GSL_SET_REAL(&z, a); + gsl_matrix_complex_set(A, i, i, z); + + if (i < N - 1) + { + gsl_vector_complex_view ai = + gsl_matrix_complex_subcolumn(A, i, i + 1, N - i - 1); + gsl_matrix_complex_view ma = + gsl_matrix_complex_submatrix(A, i + 1, i + 1, N - i - 1, N - i - 1); + gsl_vector_complex_const_view bi = + gsl_matrix_complex_const_subcolumn(B, i, i + 1, N - i - 1); + gsl_matrix_complex_const_view mb = + gsl_matrix_complex_const_submatrix(B, i + 1, i + 1, N - i - 1, N - i - 1); + + gsl_blas_zdscal(1.0 / b, &ai.vector); + + GSL_SET_REAL(&z, -0.5 * a); + gsl_blas_zaxpy(z, &bi.vector, &ai.vector); + + gsl_blas_zher2(CblasLower, + GSL_COMPLEX_NEGONE, + &ai.vector, + &bi.vector, + &ma.matrix); + + gsl_blas_zaxpy(z, &bi.vector, &ai.vector); + + gsl_blas_ztrsv(CblasLower, + CblasNoTrans, + CblasNonUnit, + &mb.matrix, + &ai.vector); + } + } + + return GSL_SUCCESS; +} /* gsl_eigen_genherm_standardize() */ diff --git a/gsl-2.5/eigen/genherm.lo b/gsl-2.5/eigen/genherm.lo new file mode 100644 index 00000000..ee718ac7 --- /dev/null +++ b/gsl-2.5/eigen/genherm.lo @@ -0,0 +1,12 @@ +# genherm.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/genherm.o' + +# Name of the non-PIC object +non_pic_object='genherm.o' + diff --git a/gsl-2.5/eigen/genhermv.c b/gsl-2.5/eigen/genhermv.c new file mode 100644 index 00000000..1c3cc5be --- /dev/null +++ b/gsl-2.5/eigen/genhermv.c @@ -0,0 +1,205 @@ +/* eigen/genhermv.c + * + * Copyright (C) 2007 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/* + * This module computes the eigenvalues and eigenvectors of a complex + * generalized hermitian-definite eigensystem A x = \lambda B x, where + * A and B are hermitian, and B is positive-definite. + */ + +static void genhermv_normalize_eigenvectors(gsl_matrix_complex *evec); + +/* +gsl_eigen_genhermv_alloc() + +Allocate a workspace for solving the generalized hermitian-definite +eigenvalue problem. The size of this workspace is O(5n). + +Inputs: n - size of matrices + +Return: pointer to workspace +*/ + +gsl_eigen_genhermv_workspace * +gsl_eigen_genhermv_alloc(const size_t n) +{ + gsl_eigen_genhermv_workspace *w; + + if (n == 0) + { + GSL_ERROR_NULL ("matrix dimension must be positive integer", + GSL_EINVAL); + } + + w = (gsl_eigen_genhermv_workspace *) calloc (1, sizeof (gsl_eigen_genhermv_workspace)); + + if (w == 0) + { + GSL_ERROR_NULL ("failed to allocate space for workspace", GSL_ENOMEM); + } + + w->size = n; + + w->hermv_workspace_p = gsl_eigen_hermv_alloc(n); + if (!w->hermv_workspace_p) + { + gsl_eigen_genhermv_free(w); + GSL_ERROR_NULL("failed to allocate space for hermv workspace", GSL_ENOMEM); + } + + return (w); +} /* gsl_eigen_genhermv_alloc() */ + +/* +gsl_eigen_genhermv_free() + Free workspace w +*/ + +void +gsl_eigen_genhermv_free (gsl_eigen_genhermv_workspace * w) +{ + RETURN_IF_NULL (w); + + if (w->hermv_workspace_p) + gsl_eigen_hermv_free(w->hermv_workspace_p); + + free(w); +} /* gsl_eigen_genhermv_free() */ + +/* +gsl_eigen_genhermv() + +Solve the generalized hermitian-definite eigenvalue problem + +A x = \lambda B x + +for the eigenvalues \lambda and eigenvectors x. + +Inputs: A - complex hermitian matrix + B - complex hermitian and positive definite matrix + eval - where to store eigenvalues + evec - where to store eigenvectors + w - workspace + +Return: success or error +*/ + +int +gsl_eigen_genhermv (gsl_matrix_complex * A, gsl_matrix_complex * B, + gsl_vector * eval, gsl_matrix_complex * evec, + gsl_eigen_genhermv_workspace * w) +{ + const size_t N = A->size1; + + /* check matrix and vector sizes */ + + if (N != A->size2) + { + GSL_ERROR ("matrix must be square to compute eigenvalues", GSL_ENOTSQR); + } + else if ((N != B->size1) || (N != B->size2)) + { + GSL_ERROR ("B matrix dimensions must match A", GSL_EBADLEN); + } + else if (eval->size != N) + { + GSL_ERROR ("eigenvalue vector must match matrix size", GSL_EBADLEN); + } + else if (evec->size1 != evec->size2) + { + GSL_ERROR ("eigenvector matrix must be square", GSL_ENOTSQR); + } + else if (evec->size1 != N) + { + GSL_ERROR ("eigenvector matrix has wrong size", GSL_EBADLEN); + } + else if (w->size != N) + { + GSL_ERROR ("matrix size does not match workspace", GSL_EBADLEN); + } + else + { + int s; + + /* compute Cholesky factorization of B */ + s = gsl_linalg_complex_cholesky_decomp(B); + if (s != GSL_SUCCESS) + return s; /* B is not positive definite */ + + /* transform to standard hermitian eigenvalue problem */ + gsl_eigen_genherm_standardize(A, B); + + /* compute eigenvalues and eigenvectors */ + s = gsl_eigen_hermv(A, eval, evec, w->hermv_workspace_p); + if (s != GSL_SUCCESS) + return s; + + /* backtransform eigenvectors: evec -> L^{-H} evec */ + gsl_blas_ztrsm(CblasLeft, + CblasLower, + CblasConjTrans, + CblasNonUnit, + GSL_COMPLEX_ONE, + B, + evec); + + /* the blas call destroyed the normalization - renormalize */ + genhermv_normalize_eigenvectors(evec); + + return GSL_SUCCESS; + } +} /* gsl_eigen_genhermv() */ + +/******************************************** + * INTERNAL ROUTINES * + ********************************************/ + +/* +genhermv_normalize_eigenvectors() + Normalize eigenvectors so that their Euclidean norm is 1 + +Inputs: evec - eigenvectors +*/ + +static void +genhermv_normalize_eigenvectors(gsl_matrix_complex *evec) +{ + const size_t N = evec->size1; + size_t i; /* looping */ + + for (i = 0; i < N; ++i) + { + gsl_vector_complex_view vi = gsl_matrix_complex_column(evec, i); + double scale = 1.0 / gsl_blas_dznrm2(&vi.vector); + + gsl_blas_zdscal(scale, &vi.vector); + } +} /* genhermv_normalize_eigenvectors() */ diff --git a/gsl-2.5/eigen/genhermv.lo b/gsl-2.5/eigen/genhermv.lo new file mode 100644 index 00000000..f264c559 --- /dev/null +++ b/gsl-2.5/eigen/genhermv.lo @@ -0,0 +1,12 @@ +# genhermv.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/genhermv.o' + +# Name of the non-PIC object +non_pic_object='genhermv.o' + diff --git a/gsl-2.5/eigen/gensymm.c b/gsl-2.5/eigen/gensymm.c new file mode 100644 index 00000000..ba6a0f53 --- /dev/null +++ b/gsl-2.5/eigen/gensymm.c @@ -0,0 +1,213 @@ +/* eigen/gensymm.c + * + * Copyright (C) 2007 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include + +#include +#include +#include +#include +#include +#include +#include + +/* + * This module computes the eigenvalues of a real generalized + * symmetric-definite eigensystem A x = \lambda B x, where A and + * B are symmetric, and B is positive-definite. + */ + +/* +gsl_eigen_gensymm_alloc() + +Allocate a workspace for solving the generalized symmetric-definite +eigenvalue problem. The size of this workspace is O(2n). + +Inputs: n - size of matrices + +Return: pointer to workspace +*/ + +gsl_eigen_gensymm_workspace * +gsl_eigen_gensymm_alloc(const size_t n) +{ + gsl_eigen_gensymm_workspace *w; + + if (n == 0) + { + GSL_ERROR_NULL ("matrix dimension must be positive integer", + GSL_EINVAL); + } + + w = (gsl_eigen_gensymm_workspace *) calloc (1, sizeof (gsl_eigen_gensymm_workspace)); + + if (w == 0) + { + GSL_ERROR_NULL ("failed to allocate space for workspace", GSL_ENOMEM); + } + + w->size = n; + + w->symm_workspace_p = gsl_eigen_symm_alloc(n); + if (!w->symm_workspace_p) + { + gsl_eigen_gensymm_free(w); + GSL_ERROR_NULL("failed to allocate space for symm workspace", GSL_ENOMEM); + } + + return (w); +} /* gsl_eigen_gensymm_alloc() */ + +/* +gsl_eigen_gensymm_free() + Free workspace w +*/ + +void +gsl_eigen_gensymm_free (gsl_eigen_gensymm_workspace * w) +{ + RETURN_IF_NULL (w); + + if (w->symm_workspace_p) + gsl_eigen_symm_free(w->symm_workspace_p); + + free(w); +} /* gsl_eigen_gensymm_free() */ + +/* +gsl_eigen_gensymm() + +Solve the generalized symmetric-definite eigenvalue problem + +A x = \lambda B x + +for the eigenvalues \lambda. + +Inputs: A - real symmetric matrix + B - real symmetric and positive definite matrix + eval - where to store eigenvalues + w - workspace + +Return: success or error +*/ + +int +gsl_eigen_gensymm (gsl_matrix * A, gsl_matrix * B, gsl_vector * eval, + gsl_eigen_gensymm_workspace * w) +{ + const size_t N = A->size1; + + /* check matrix and vector sizes */ + + if (N != A->size2) + { + GSL_ERROR ("matrix must be square to compute eigenvalues", GSL_ENOTSQR); + } + else if ((N != B->size1) || (N != B->size2)) + { + GSL_ERROR ("B matrix dimensions must match A", GSL_EBADLEN); + } + else if (eval->size != N) + { + GSL_ERROR ("eigenvalue vector must match matrix size", GSL_EBADLEN); + } + else if (w->size != N) + { + GSL_ERROR ("matrix size does not match workspace", GSL_EBADLEN); + } + else + { + int s; + + /* compute Cholesky factorization of B */ + s = gsl_linalg_cholesky_decomp1(B); + if (s != GSL_SUCCESS) + return s; /* B is not positive definite */ + + /* transform to standard symmetric eigenvalue problem */ + gsl_eigen_gensymm_standardize(A, B); + + s = gsl_eigen_symm(A, eval, w->symm_workspace_p); + + return s; + } +} /* gsl_eigen_gensymm() */ + +/* +gsl_eigen_gensymm_standardize() + Reduce the generalized symmetric-definite eigenproblem to +the standard symmetric eigenproblem by computing + +C = L^{-1} A L^{-t} + +where L L^t is the Cholesky decomposition of B + +Inputs: A - (input/output) real symmetric matrix + B - real symmetric, positive definite matrix in Cholesky form + +Return: success + +Notes: A is overwritten by L^{-1} A L^{-t} +*/ + +int +gsl_eigen_gensymm_standardize(gsl_matrix *A, const gsl_matrix *B) +{ + const size_t N = A->size1; + size_t i; + double a, b, c; + + for (i = 0; i < N; ++i) + { + /* update lower triangle of A(i:n, i:n) */ + + a = gsl_matrix_get(A, i, i); + b = gsl_matrix_get(B, i, i); + a /= b * b; + gsl_matrix_set(A, i, i, a); + + if (i < N - 1) + { + gsl_vector_view ai = gsl_matrix_subcolumn(A, i, i + 1, N - i - 1); + gsl_matrix_view ma = + gsl_matrix_submatrix(A, i + 1, i + 1, N - i - 1, N - i - 1); + gsl_vector_const_view bi = + gsl_matrix_const_subcolumn(B, i, i + 1, N - i - 1); + gsl_matrix_const_view mb = + gsl_matrix_const_submatrix(B, i + 1, i + 1, N - i - 1, N - i - 1); + + gsl_blas_dscal(1.0 / b, &ai.vector); + + c = -0.5 * a; + gsl_blas_daxpy(c, &bi.vector, &ai.vector); + + gsl_blas_dsyr2(CblasLower, -1.0, &ai.vector, &bi.vector, &ma.matrix); + + gsl_blas_daxpy(c, &bi.vector, &ai.vector); + + gsl_blas_dtrsv(CblasLower, + CblasNoTrans, + CblasNonUnit, + &mb.matrix, + &ai.vector); + } + } + + return GSL_SUCCESS; +} /* gsl_eigen_gensymm_standardize() */ diff --git a/gsl-2.5/eigen/gensymm.lo b/gsl-2.5/eigen/gensymm.lo new file mode 100644 index 00000000..1f072f10 --- /dev/null +++ b/gsl-2.5/eigen/gensymm.lo @@ -0,0 +1,12 @@ +# gensymm.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/gensymm.o' + +# Name of the non-PIC object +non_pic_object='gensymm.o' + diff --git a/gsl-2.5/eigen/gensymmv.c b/gsl-2.5/eigen/gensymmv.c new file mode 100644 index 00000000..31f24ef3 --- /dev/null +++ b/gsl-2.5/eigen/gensymmv.c @@ -0,0 +1,202 @@ +/* eigen/gensymmv.c + * + * Copyright (C) 2007 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include + +#include +#include +#include +#include +#include +#include +#include + +/* + * This module computes the eigenvalues and eigenvectors of a real + * generalized symmetric-definite eigensystem A x = \lambda B x, where + * A and B are symmetric, and B is positive-definite. + */ + +static void gensymmv_normalize_eigenvectors(gsl_matrix *evec); + +/* +gsl_eigen_gensymmv_alloc() + +Allocate a workspace for solving the generalized symmetric-definite +eigenvalue problem. The size of this workspace is O(4n). + +Inputs: n - size of matrices + +Return: pointer to workspace +*/ + +gsl_eigen_gensymmv_workspace * +gsl_eigen_gensymmv_alloc(const size_t n) +{ + gsl_eigen_gensymmv_workspace *w; + + if (n == 0) + { + GSL_ERROR_NULL ("matrix dimension must be positive integer", + GSL_EINVAL); + } + + w = (gsl_eigen_gensymmv_workspace *) calloc (1, sizeof (gsl_eigen_gensymmv_workspace)); + + if (w == 0) + { + GSL_ERROR_NULL ("failed to allocate space for workspace", GSL_ENOMEM); + } + + w->size = n; + + w->symmv_workspace_p = gsl_eigen_symmv_alloc(n); + if (!w->symmv_workspace_p) + { + gsl_eigen_gensymmv_free(w); + GSL_ERROR_NULL("failed to allocate space for symmv workspace", GSL_ENOMEM); + } + + return (w); +} /* gsl_eigen_gensymmv_alloc() */ + +/* +gsl_eigen_gensymmv_free() + Free workspace w +*/ + +void +gsl_eigen_gensymmv_free (gsl_eigen_gensymmv_workspace * w) +{ + RETURN_IF_NULL (w); + + if (w->symmv_workspace_p) + gsl_eigen_symmv_free(w->symmv_workspace_p); + + free(w); +} /* gsl_eigen_gensymmv_free() */ + +/* +gsl_eigen_gensymmv() + +Solve the generalized symmetric-definite eigenvalue problem + +A x = \lambda B x + +for the eigenvalues \lambda and eigenvectors x. + +Inputs: A - real symmetric matrix + B - real symmetric and positive definite matrix + eval - where to store eigenvalues + evec - where to store eigenvectors + w - workspace + +Return: success or error +*/ + +int +gsl_eigen_gensymmv (gsl_matrix * A, gsl_matrix * B, gsl_vector * eval, + gsl_matrix * evec, gsl_eigen_gensymmv_workspace * w) +{ + const size_t N = A->size1; + + /* check matrix and vector sizes */ + + if (N != A->size2) + { + GSL_ERROR ("matrix must be square to compute eigenvalues", GSL_ENOTSQR); + } + else if ((N != B->size1) || (N != B->size2)) + { + GSL_ERROR ("B matrix dimensions must match A", GSL_EBADLEN); + } + else if (eval->size != N) + { + GSL_ERROR ("eigenvalue vector must match matrix size", GSL_EBADLEN); + } + else if (evec->size1 != evec->size2) + { + GSL_ERROR ("eigenvector matrix must be square", GSL_ENOTSQR); + } + else if (evec->size1 != N) + { + GSL_ERROR ("eigenvector matrix has wrong size", GSL_EBADLEN); + } + else if (w->size != N) + { + GSL_ERROR ("matrix size does not match workspace", GSL_EBADLEN); + } + else + { + int s; + + /* compute Cholesky factorization of B */ + s = gsl_linalg_cholesky_decomp1(B); + if (s != GSL_SUCCESS) + return s; /* B is not positive definite */ + + /* transform to standard symmetric eigenvalue problem */ + gsl_eigen_gensymm_standardize(A, B); + + /* compute eigenvalues and eigenvectors */ + s = gsl_eigen_symmv(A, eval, evec, w->symmv_workspace_p); + if (s != GSL_SUCCESS) + return s; + + /* backtransform eigenvectors: evec -> L^{-T} evec */ + gsl_blas_dtrsm(CblasLeft, + CblasLower, + CblasTrans, + CblasNonUnit, + 1.0, + B, + evec); + + /* the blas call destroyed the normalization - renormalize */ + gensymmv_normalize_eigenvectors(evec); + + return GSL_SUCCESS; + } +} /* gsl_eigen_gensymmv() */ + +/******************************************** + * INTERNAL ROUTINES * + ********************************************/ + +/* +gensymmv_normalize_eigenvectors() + Normalize eigenvectors so that their Euclidean norm is 1 + +Inputs: evec - eigenvectors +*/ + +static void +gensymmv_normalize_eigenvectors(gsl_matrix *evec) +{ + const size_t N = evec->size1; + size_t i; /* looping */ + + for (i = 0; i < N; ++i) + { + gsl_vector_view vi = gsl_matrix_column(evec, i); + double scale = 1.0 / gsl_blas_dnrm2(&vi.vector); + + gsl_blas_dscal(scale, &vi.vector); + } +} /* gensymmv_normalize_eigenvectors() */ diff --git a/gsl-2.5/eigen/gensymmv.lo b/gsl-2.5/eigen/gensymmv.lo new file mode 100644 index 00000000..5d7cbde2 --- /dev/null +++ b/gsl-2.5/eigen/gensymmv.lo @@ -0,0 +1,12 @@ +# gensymmv.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/gensymmv.o' + +# Name of the non-PIC object +non_pic_object='gensymmv.o' + diff --git a/gsl-2.5/eigen/genv.c b/gsl-2.5/eigen/genv.c new file mode 100644 index 00000000..a309e41e --- /dev/null +++ b/gsl-2.5/eigen/genv.c @@ -0,0 +1,925 @@ +/* eigen/genv.c + * + * Copyright (C) 2007 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/* + * This module computes the eigenvalues and eigenvectors of a + * real generalized eigensystem A x = \lambda B x. Left and right + * Schur vectors are optionally computed as well. + * + * This file contains routines based on original code from LAPACK + * which is distributed under the modified BSD license. + */ + +static int genv_get_right_eigenvectors(const gsl_matrix *S, + const gsl_matrix *T, + gsl_matrix *Z, + gsl_matrix_complex *evec, + gsl_eigen_genv_workspace *w); +static void genv_normalize_eigenvectors(gsl_vector_complex *alpha, + gsl_matrix_complex *evec); + +/* +gsl_eigen_genv_alloc() + Allocate a workspace for solving the generalized eigenvalue problem. +The size of this workspace is O(7n). + +Inputs: n - size of matrices + +Return: pointer to workspace +*/ + +gsl_eigen_genv_workspace * +gsl_eigen_genv_alloc(const size_t n) +{ + gsl_eigen_genv_workspace *w; + + if (n == 0) + { + GSL_ERROR_NULL ("matrix dimension must be positive integer", + GSL_EINVAL); + } + + w = (gsl_eigen_genv_workspace *) calloc (1, sizeof (gsl_eigen_genv_workspace)); + + if (w == 0) + { + GSL_ERROR_NULL ("failed to allocate space for workspace", GSL_ENOMEM); + } + + w->size = n; + w->Q = NULL; + w->Z = NULL; + + w->gen_workspace_p = gsl_eigen_gen_alloc(n); + + if (w->gen_workspace_p == 0) + { + gsl_eigen_genv_free(w); + GSL_ERROR_NULL ("failed to allocate space for gen workspace", GSL_ENOMEM); + } + + /* compute the full Schur forms */ + gsl_eigen_gen_params(1, 1, 1, w->gen_workspace_p); + + w->work1 = gsl_vector_alloc(n); + w->work2 = gsl_vector_alloc(n); + w->work3 = gsl_vector_alloc(n); + w->work4 = gsl_vector_alloc(n); + w->work5 = gsl_vector_alloc(n); + w->work6 = gsl_vector_alloc(n); + + if (w->work1 == 0 || w->work2 == 0 || w->work3 == 0 || + w->work4 == 0 || w->work5 == 0 || w->work6 == 0) + { + gsl_eigen_genv_free(w); + GSL_ERROR_NULL ("failed to allocate space for additional workspace", GSL_ENOMEM); + } + + return (w); +} /* gsl_eigen_genv_alloc() */ + +/* +gsl_eigen_genv_free() + Free workspace w +*/ + +void +gsl_eigen_genv_free(gsl_eigen_genv_workspace *w) +{ + RETURN_IF_NULL (w); + + if (w->gen_workspace_p) + gsl_eigen_gen_free(w->gen_workspace_p); + + if (w->work1) + gsl_vector_free(w->work1); + + if (w->work2) + gsl_vector_free(w->work2); + + if (w->work3) + gsl_vector_free(w->work3); + + if (w->work4) + gsl_vector_free(w->work4); + + if (w->work5) + gsl_vector_free(w->work5); + + if (w->work6) + gsl_vector_free(w->work6); + + free(w); +} /* gsl_eigen_genv_free() */ + +/* +gsl_eigen_genv() + +Solve the generalized eigenvalue problem + +A x = \lambda B x + +for the eigenvalues \lambda and right eigenvectors x. + +Inputs: A - general real matrix + B - general real matrix + alpha - (output) where to store eigenvalue numerators + beta - (output) where to store eigenvalue denominators + evec - (output) where to store eigenvectors + w - workspace + +Return: success or error +*/ + +int +gsl_eigen_genv (gsl_matrix * A, gsl_matrix * B, gsl_vector_complex * alpha, + gsl_vector * beta, gsl_matrix_complex *evec, + gsl_eigen_genv_workspace * w) +{ + const size_t N = A->size1; + + /* check matrix and vector sizes */ + + if (N != A->size2) + { + GSL_ERROR ("matrix must be square to compute eigenvalues", GSL_ENOTSQR); + } + else if ((N != B->size1) || (N != B->size2)) + { + GSL_ERROR ("B matrix dimensions must match A", GSL_EBADLEN); + } + else if (alpha->size != N || beta->size != N) + { + GSL_ERROR ("eigenvalue vector must match matrix size", GSL_EBADLEN); + } + else if (w->size != N) + { + GSL_ERROR ("matrix size does not match workspace", GSL_EBADLEN); + } + else if (evec->size1 != N) + { + GSL_ERROR ("eigenvector matrix has wrong size", GSL_EBADLEN); + } + else + { + int s; + gsl_matrix Z; + + /* + * We need a place to store the right Schur vectors, so we will + * treat evec as a real matrix and store them in the left + * half - the factor of 2 in the tda corresponds to the + * complex multiplicity + */ + Z.size1 = N; + Z.size2 = N; + Z.tda = 2 * N; + Z.data = evec->data; + Z.block = 0; + Z.owner = 0; + + s = gsl_eigen_gen_QZ(A, B, alpha, beta, w->Q, &Z, w->gen_workspace_p); + + if (w->Z) + { + /* save right Schur vectors */ + gsl_matrix_memcpy(w->Z, &Z); + } + + /* only compute eigenvectors if we found all eigenvalues */ + if (s == GSL_SUCCESS) + { + /* compute eigenvectors */ + s = genv_get_right_eigenvectors(A, B, &Z, evec, w); + + if (s == GSL_SUCCESS) + genv_normalize_eigenvectors(alpha, evec); + } + + return s; + } +} /* gsl_eigen_genv() */ + +/* +gsl_eigen_genv_QZ() + +Solve the generalized eigenvalue problem + +A x = \lambda B x + +for the eigenvalues \lambda and right eigenvectors x. Optionally +compute left and/or right Schur vectors Q and Z which satisfy: + +A = Q S Z^t +B = Q T Z^t + +where (S, T) is the generalized Schur form of (A, B) + +Inputs: A - general real matrix + B - general real matrix + alpha - (output) where to store eigenvalue numerators + beta - (output) where to store eigenvalue denominators + evec - (output) where to store eigenvectors + Q - (output) if non-null, where to store left Schur vectors + Z - (output) if non-null, where to store right Schur vectors + w - workspace + +Return: success or error +*/ + +int +gsl_eigen_genv_QZ (gsl_matrix * A, gsl_matrix * B, + gsl_vector_complex * alpha, gsl_vector * beta, + gsl_matrix_complex * evec, + gsl_matrix * Q, gsl_matrix * Z, + gsl_eigen_genv_workspace * w) +{ + if (Q && (A->size1 != Q->size1 || A->size1 != Q->size2)) + { + GSL_ERROR("Q matrix has wrong dimensions", GSL_EBADLEN); + } + else if (Z && (A->size1 != Z->size1 || A->size1 != Z->size2)) + { + GSL_ERROR("Z matrix has wrong dimensions", GSL_EBADLEN); + } + else + { + int s; + + w->Q = Q; + w->Z = Z; + + s = gsl_eigen_genv(A, B, alpha, beta, evec, w); + + w->Q = NULL; + w->Z = NULL; + + return s; + } +} /* gsl_eigen_genv_QZ() */ + +/******************************************** + * INTERNAL ROUTINES * + ********************************************/ + +/* +genv_get_right_eigenvectors() + Compute right eigenvectors of the Schur form (S, T) and then +backtransform them using the right Schur vectors to get right +eigenvectors of the original system. + +Inputs: S - upper quasi-triangular Schur form of A + T - upper triangular Schur form of B + Z - right Schur vectors + evec - (output) where to store eigenvectors + w - workspace + +Return: success or error + +Notes: 1) based on LAPACK routine DTGEVC + 2) eigenvectors are stored in the order that their + eigenvalues appear in the Schur form +*/ + +static int +genv_get_right_eigenvectors(const gsl_matrix *S, const gsl_matrix *T, + gsl_matrix *Z, + gsl_matrix_complex *evec, + gsl_eigen_genv_workspace *w) +{ + const size_t N = w->size; + const double small = GSL_DBL_MIN * N / GSL_DBL_EPSILON; + const double big = 1.0 / small; + const double bignum = 1.0 / (GSL_DBL_MIN * N); + size_t i, j, k, end; + int is; + double anorm, bnorm; + double temp, temp2, temp2r, temp2i; + double ascale, bscale; + double salfar, sbeta; + double acoef, bcoefr, bcoefi, acoefa, bcoefa; + double creala, cimaga, crealb, cimagb, cre2a, cim2a, cre2b, cim2b; + double dmin, xmax; + double scale; + size_t nw, na; + int lsa, lsb; + int complex_pair; + gsl_complex z_zero, z_one; + double bdiag[2] = { 0.0, 0.0 }; + double sum[4]; + int il2by2; + size_t jr, jc, ja; + double xscale; + gsl_vector_complex_view ecol; + gsl_vector_view re, im, re2, im2; + + GSL_SET_COMPLEX(&z_zero, 0.0, 0.0); + GSL_SET_COMPLEX(&z_one, 1.0, 0.0); + + /* + * Compute the 1-norm of each column of (S, T) excluding elements + * belonging to the diagonal blocks to check for possible overflow + * in the triangular solver + */ + + anorm = fabs(gsl_matrix_get(S, 0, 0)); + if (N > 1) + anorm += fabs(gsl_matrix_get(S, 1, 0)); + bnorm = fabs(gsl_matrix_get(T, 0, 0)); + + gsl_vector_set(w->work1, 0, 0.0); + gsl_vector_set(w->work2, 0, 0.0); + + for (j = 1; j < N; ++j) + { + temp = temp2 = 0.0; + if (gsl_matrix_get(S, j, j - 1) == 0.0) + end = j; + else + end = j - 1; + + for (i = 0; i < end; ++i) + { + temp += fabs(gsl_matrix_get(S, i, j)); + temp2 += fabs(gsl_matrix_get(T, i, j)); + } + + gsl_vector_set(w->work1, j, temp); + gsl_vector_set(w->work2, j, temp2); + + for (i = end; i < GSL_MIN(j + 2, N); ++i) + { + temp += fabs(gsl_matrix_get(S, i, j)); + temp2 += fabs(gsl_matrix_get(T, i, j)); + } + + anorm = GSL_MAX(anorm, temp); + bnorm = GSL_MAX(bnorm, temp2); + } + + ascale = 1.0 / GSL_MAX(anorm, GSL_DBL_MIN); + bscale = 1.0 / GSL_MAX(bnorm, GSL_DBL_MIN); + + complex_pair = 0; + for (k = 0; k < N; ++k) + { + size_t je = N - 1 - k; + + if (complex_pair) + { + complex_pair = 0; + continue; + } + + nw = 1; + if (je > 0) + { + if (gsl_matrix_get(S, je, je - 1) != 0.0) + { + complex_pair = 1; + nw = 2; + } + } + + if (!complex_pair) + { + if (fabs(gsl_matrix_get(S, je, je)) <= GSL_DBL_MIN && + fabs(gsl_matrix_get(T, je, je)) <= GSL_DBL_MIN) + { + /* singular matrix pencil - unit eigenvector */ + for (i = 0; i < N; ++i) + gsl_matrix_complex_set(evec, i, je, z_zero); + + gsl_matrix_complex_set(evec, je, je, z_one); + + continue; + } + + /* clear vector */ + for (i = 0; i < N; ++i) + gsl_vector_set(w->work3, i, 0.0); + } + else + { + /* clear vectors */ + for (i = 0; i < N; ++i) + { + gsl_vector_set(w->work3, i, 0.0); + gsl_vector_set(w->work4, i, 0.0); + } + } + + if (!complex_pair) + { + /* real eigenvalue */ + + temp = 1.0 / GSL_MAX(GSL_DBL_MIN, + GSL_MAX(fabs(gsl_matrix_get(S, je, je)) * ascale, + fabs(gsl_matrix_get(T, je, je)) * bscale)); + salfar = (temp * gsl_matrix_get(S, je, je)) * ascale; + sbeta = (temp * gsl_matrix_get(T, je, je)) * bscale; + acoef = sbeta * ascale; + bcoefr = salfar * bscale; + bcoefi = 0.0; + + /* scale to avoid underflow */ + scale = 1.0; + lsa = fabs(sbeta) >= GSL_DBL_MIN && fabs(acoef) < small; + lsb = fabs(salfar) >= GSL_DBL_MIN && fabs(bcoefr) < small; + if (lsa) + scale = (small / fabs(sbeta)) * GSL_MIN(anorm, big); + if (lsb) + scale = GSL_MAX(scale, (small / fabs(salfar)) * GSL_MIN(bnorm, big)); + + if (lsa || lsb) + { + scale = GSL_MIN(scale, + 1.0 / (GSL_DBL_MIN * + GSL_MAX(1.0, + GSL_MAX(fabs(acoef), fabs(bcoefr))))); + if (lsa) + acoef = ascale * (scale * sbeta); + else + acoef *= scale; + + if (lsb) + bcoefr = bscale * (scale * salfar); + else + bcoefr *= scale; + } + + acoefa = fabs(acoef); + bcoefa = fabs(bcoefr); + + /* first component is 1 */ + gsl_vector_set(w->work3, je, 1.0); + xmax = 1.0; + + /* compute contribution from column je of A and B to sum */ + + for (i = 0; i < je; ++i) + { + gsl_vector_set(w->work3, i, + bcoefr*gsl_matrix_get(T, i, je) - + acoef * gsl_matrix_get(S, i, je)); + } + } + else + { + gsl_matrix_const_view vs = + gsl_matrix_const_submatrix(S, je - 1, je - 1, 2, 2); + gsl_matrix_const_view vt = + gsl_matrix_const_submatrix(T, je - 1, je - 1, 2, 2); + + /* complex eigenvalue */ + + gsl_schur_gen_eigvals(&vs.matrix, + &vt.matrix, + &bcoefr, + &temp2, + &bcoefi, + &acoef, + &temp); + if (bcoefi == 0.0) + { + GSL_ERROR("gsl_schur_gen_eigvals failed on complex block", GSL_FAILURE); + } + + /* scale to avoid over/underflow */ + acoefa = fabs(acoef); + bcoefa = fabs(bcoefr) + fabs(bcoefi); + scale = 1.0; + + if (acoefa*GSL_DBL_EPSILON < GSL_DBL_MIN && acoefa >= GSL_DBL_MIN) + scale = (GSL_DBL_MIN / GSL_DBL_EPSILON) / acoefa; + if (bcoefa*GSL_DBL_EPSILON < GSL_DBL_MIN && bcoefa >= GSL_DBL_MIN) + scale = GSL_MAX(scale, (GSL_DBL_MIN/GSL_DBL_EPSILON) / bcoefa); + if (GSL_DBL_MIN*acoefa > ascale) + scale = ascale / (GSL_DBL_MIN * acoefa); + if (GSL_DBL_MIN*bcoefa > bscale) + scale = GSL_MIN(scale, bscale / (GSL_DBL_MIN*bcoefa)); + if (scale != 1.0) + { + acoef *= scale; + acoefa = fabs(acoef); + bcoefr *= scale; + bcoefi *= scale; + bcoefa = fabs(bcoefr) + fabs(bcoefi); + } + + /* compute first two components of eigenvector */ + + temp = acoef * gsl_matrix_get(S, je, je - 1); + temp2r = acoef * gsl_matrix_get(S, je, je) - + bcoefr * gsl_matrix_get(T, je, je); + temp2i = -bcoefi * gsl_matrix_get(T, je, je); + + if (fabs(temp) >= fabs(temp2r) + fabs(temp2i)) + { + gsl_vector_set(w->work3, je, 1.0); + gsl_vector_set(w->work4, je, 0.0); + gsl_vector_set(w->work3, je - 1, -temp2r / temp); + gsl_vector_set(w->work4, je - 1, -temp2i / temp); + } + else + { + gsl_vector_set(w->work3, je - 1, 1.0); + gsl_vector_set(w->work4, je - 1, 0.0); + temp = acoef * gsl_matrix_get(S, je - 1, je); + gsl_vector_set(w->work3, je, + (bcoefr*gsl_matrix_get(T, je - 1, je - 1) - + acoef*gsl_matrix_get(S, je - 1, je - 1)) / temp); + gsl_vector_set(w->work4, je, + bcoefi*gsl_matrix_get(T, je - 1, je - 1) / temp); + } + + xmax = GSL_MAX(fabs(gsl_vector_get(w->work3, je)) + + fabs(gsl_vector_get(w->work4, je)), + fabs(gsl_vector_get(w->work3, je - 1)) + + fabs(gsl_vector_get(w->work4, je - 1))); + + /* compute contribution from column je and je - 1 */ + + creala = acoef * gsl_vector_get(w->work3, je - 1); + cimaga = acoef * gsl_vector_get(w->work4, je - 1); + crealb = bcoefr * gsl_vector_get(w->work3, je - 1) - + bcoefi * gsl_vector_get(w->work4, je - 1); + cimagb = bcoefi * gsl_vector_get(w->work3, je - 1) + + bcoefr * gsl_vector_get(w->work4, je - 1); + cre2a = acoef * gsl_vector_get(w->work3, je); + cim2a = acoef * gsl_vector_get(w->work4, je); + cre2b = bcoefr * gsl_vector_get(w->work3, je) - + bcoefi * gsl_vector_get(w->work4, je); + cim2b = bcoefi * gsl_vector_get(w->work3, je) + + bcoefr * gsl_vector_get(w->work4, je); + + for (i = 0; i < je - 1; ++i) + { + gsl_vector_set(w->work3, i, + -creala * gsl_matrix_get(S, i, je - 1) + + crealb * gsl_matrix_get(T, i, je - 1) - + cre2a * gsl_matrix_get(S, i, je) + + cre2b * gsl_matrix_get(T, i, je)); + gsl_vector_set(w->work4, i, + -cimaga * gsl_matrix_get(S, i, je - 1) + + cimagb * gsl_matrix_get(T, i, je - 1) - + cim2a * gsl_matrix_get(S, i, je) + + cim2b * gsl_matrix_get(T, i, je)); + } + } + + dmin = GSL_MAX(GSL_DBL_MIN, + GSL_MAX(GSL_DBL_EPSILON*acoefa*anorm, + GSL_DBL_EPSILON*bcoefa*bnorm)); + + /* triangular solve of (a A - b B) x = 0 */ + + il2by2 = 0; + for (is = (int) je - (int) nw; is >= 0; --is) + { + j = (size_t) is; + + if (!il2by2 && j > 0) + { + if (gsl_matrix_get(S, j, j - 1) != 0.0) + { + il2by2 = 1; + continue; + } + } + + bdiag[0] = gsl_matrix_get(T, j, j); + if (il2by2) + { + na = 2; + bdiag[1] = gsl_matrix_get(T, j + 1, j + 1); + } + else + na = 1; + + + if (nw == 1) + { + gsl_matrix_const_view sv = + gsl_matrix_const_submatrix(S, j, j, na, na); + gsl_vector_view xv, bv; + + bv = gsl_vector_subvector(w->work3, j, na); + + /* + * the loop below expects the solution in the first column + * of sum, so set stride to 2 + */ + xv = gsl_vector_view_array_with_stride(sum, 2, na); + + gsl_schur_solve_equation(acoef, + &sv.matrix, + bcoefr, + bdiag[0], + bdiag[1], + &bv.vector, + &xv.vector, + &scale, + &temp, + dmin); + } + else + { + double bdat[4]; + gsl_matrix_const_view sv = + gsl_matrix_const_submatrix(S, j, j, na, na); + gsl_vector_complex_view xv = + gsl_vector_complex_view_array(sum, na); + gsl_vector_complex_view bv = + gsl_vector_complex_view_array(bdat, na); + gsl_complex z; + + bdat[0] = gsl_vector_get(w->work3, j); + bdat[1] = gsl_vector_get(w->work4, j); + if (na == 2) + { + bdat[2] = gsl_vector_get(w->work3, j + 1); + bdat[3] = gsl_vector_get(w->work4, j + 1); + } + + GSL_SET_COMPLEX(&z, bcoefr, bcoefi); + + gsl_schur_solve_equation_z(acoef, + &sv.matrix, + &z, + bdiag[0], + bdiag[1], + &bv.vector, + &xv.vector, + &scale, + &temp, + dmin); + } + + if (scale < 1.0) + { + for (jr = 0; jr <= je; ++jr) + { + gsl_vector_set(w->work3, jr, + scale * gsl_vector_get(w->work3, jr)); + if (nw == 2) + { + gsl_vector_set(w->work4, jr, + scale * gsl_vector_get(w->work4, jr)); + } + } + } + + xmax = GSL_MAX(scale * xmax, temp); + + for (jr = 0; jr < na; ++jr) + { + gsl_vector_set(w->work3, j + jr, sum[jr*na]); + if (nw == 2) + gsl_vector_set(w->work4, j + jr, sum[jr*na + 1]); + } + + if (j > 0) + { + xscale = 1.0 / GSL_MAX(1.0, xmax); + temp = acoefa * gsl_vector_get(w->work1, j) + + bcoefa * gsl_vector_get(w->work2, j); + if (il2by2) + { + temp = GSL_MAX(temp, + acoefa * gsl_vector_get(w->work1, j + 1) + + bcoefa * gsl_vector_get(w->work2, j + 1)); + } + + temp = GSL_MAX(temp, GSL_MAX(acoefa, bcoefa)); + if (temp > bignum * xscale) + { + for (jr = 0; jr <= je; ++jr) + { + gsl_vector_set(w->work3, jr, + xscale * gsl_vector_get(w->work3, jr)); + if (nw == 2) + { + gsl_vector_set(w->work4, jr, + xscale * gsl_vector_get(w->work4, jr)); + } + } + xmax *= xscale; + } + + for (ja = 0; ja < na; ++ja) + { + if (complex_pair) + { + creala = acoef * gsl_vector_get(w->work3, j + ja); + cimaga = acoef * gsl_vector_get(w->work4, j + ja); + crealb = bcoefr * gsl_vector_get(w->work3, j + ja) - + bcoefi * gsl_vector_get(w->work4, j + ja); + cimagb = bcoefi * gsl_vector_get(w->work3, j + ja) + + bcoefr * gsl_vector_get(w->work4, j + ja); + for (jr = 0; jr <= j - 1; ++jr) + { + gsl_vector_set(w->work3, jr, + gsl_vector_get(w->work3, jr) - + creala * gsl_matrix_get(S, jr, j + ja) + + crealb * gsl_matrix_get(T, jr, j + ja)); + gsl_vector_set(w->work4, jr, + gsl_vector_get(w->work4, jr) - + cimaga * gsl_matrix_get(S, jr, j + ja) + + cimagb * gsl_matrix_get(T, jr, j + ja)); + } + } + else + { + creala = acoef * gsl_vector_get(w->work3, j + ja); + crealb = bcoefr * gsl_vector_get(w->work3, j + ja); + for (jr = 0; jr <= j - 1; ++jr) + { + gsl_vector_set(w->work3, jr, + gsl_vector_get(w->work3, jr) - + creala * gsl_matrix_get(S, jr, j + ja) + + crealb * gsl_matrix_get(T, jr, j + ja)); + } + } /* if (!complex_pair) */ + } /* for (ja = 0; ja < na; ++ja) */ + } /* if (j > 0) */ + + il2by2 = 0; + } /* for (i = 0; i < je - nw; ++i) */ + + for (jr = 0; jr < N; ++jr) + { + gsl_vector_set(w->work5, jr, + gsl_vector_get(w->work3, 0) * gsl_matrix_get(Z, jr, 0)); + if (nw == 2) + { + gsl_vector_set(w->work6, jr, + gsl_vector_get(w->work4, 0) * gsl_matrix_get(Z, jr, 0)); + } + } + + for (jc = 1; jc <= je; ++jc) + { + for (jr = 0; jr < N; ++jr) + { + gsl_vector_set(w->work5, jr, + gsl_vector_get(w->work5, jr) + + gsl_vector_get(w->work3, jc) * gsl_matrix_get(Z, jr, jc)); + if (nw == 2) + { + gsl_vector_set(w->work6, jr, + gsl_vector_get(w->work6, jr) + + gsl_vector_get(w->work4, jc) * gsl_matrix_get(Z, jr, jc)); + } + } + } + + /* store the eigenvector */ + + if (complex_pair) + { + ecol = gsl_matrix_complex_column(evec, je - 1); + re = gsl_vector_complex_real(&ecol.vector); + im = gsl_vector_complex_imag(&ecol.vector); + + ecol = gsl_matrix_complex_column(evec, je); + re2 = gsl_vector_complex_real(&ecol.vector); + im2 = gsl_vector_complex_imag(&ecol.vector); + } + else + { + ecol = gsl_matrix_complex_column(evec, je); + re = gsl_vector_complex_real(&ecol.vector); + im = gsl_vector_complex_imag(&ecol.vector); + } + + for (jr = 0; jr < N; ++jr) + { + gsl_vector_set(&re.vector, jr, gsl_vector_get(w->work5, jr)); + if (complex_pair) + { + gsl_vector_set(&im.vector, jr, gsl_vector_get(w->work6, jr)); + gsl_vector_set(&re2.vector, jr, gsl_vector_get(w->work5, jr)); + gsl_vector_set(&im2.vector, jr, -gsl_vector_get(w->work6, jr)); + } + else + { + gsl_vector_set(&im.vector, jr, 0.0); + } + } + + /* scale eigenvector */ + xmax = 0.0; + if (complex_pair) + { + for (j = 0; j < N; ++j) + { + xmax = GSL_MAX(xmax, + fabs(gsl_vector_get(&re.vector, j)) + + fabs(gsl_vector_get(&im.vector, j))); + } + } + else + { + for (j = 0; j < N; ++j) + { + xmax = GSL_MAX(xmax, fabs(gsl_vector_get(&re.vector, j))); + } + } + + if (xmax > GSL_DBL_MIN) + { + xscale = 1.0 / xmax; + for (j = 0; j < N; ++j) + { + gsl_vector_set(&re.vector, j, + gsl_vector_get(&re.vector, j) * xscale); + if (complex_pair) + { + gsl_vector_set(&im.vector, j, + gsl_vector_get(&im.vector, j) * xscale); + gsl_vector_set(&re2.vector, j, + gsl_vector_get(&re2.vector, j) * xscale); + gsl_vector_set(&im2.vector, j, + gsl_vector_get(&im2.vector, j) * xscale); + } + } + } + } /* for (k = 0; k < N; ++k) */ + + return GSL_SUCCESS; +} /* genv_get_right_eigenvectors() */ + +/* +genv_normalize_eigenvectors() + Normalize eigenvectors so that their Euclidean norm is 1 + +Inputs: alpha - eigenvalue numerators + evec - eigenvectors +*/ + +static void +genv_normalize_eigenvectors(gsl_vector_complex *alpha, + gsl_matrix_complex *evec) +{ + const size_t N = evec->size1; + size_t i; /* looping */ + gsl_complex ai; + gsl_vector_complex_view vi; + gsl_vector_view re, im; + double scale; /* scaling factor */ + + for (i = 0; i < N; ++i) + { + ai = gsl_vector_complex_get(alpha, i); + vi = gsl_matrix_complex_column(evec, i); + + re = gsl_vector_complex_real(&vi.vector); + + if (GSL_IMAG(ai) == 0.0) + { + scale = 1.0 / gsl_blas_dnrm2(&re.vector); + gsl_blas_dscal(scale, &re.vector); + } + else if (GSL_IMAG(ai) > 0.0) + { + im = gsl_vector_complex_imag(&vi.vector); + + scale = 1.0 / gsl_hypot(gsl_blas_dnrm2(&re.vector), + gsl_blas_dnrm2(&im.vector)); + gsl_blas_zdscal(scale, &vi.vector); + + vi = gsl_matrix_complex_column(evec, i + 1); + gsl_blas_zdscal(scale, &vi.vector); + } + } +} /* genv_normalize_eigenvectors() */ diff --git a/gsl-2.5/eigen/genv.lo b/gsl-2.5/eigen/genv.lo new file mode 100644 index 00000000..d3b94e4b --- /dev/null +++ b/gsl-2.5/eigen/genv.lo @@ -0,0 +1,12 @@ +# genv.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/genv.o' + +# Name of the non-PIC object +non_pic_object='genv.o' + diff --git a/gsl-2.5/eigen/gsl_eigen.h b/gsl-2.5/eigen/gsl_eigen.h new file mode 100644 index 00000000..6de8dba1 --- /dev/null +++ b/gsl-2.5/eigen/gsl_eigen.h @@ -0,0 +1,347 @@ +/* eigen/gsl_eigen.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2006, 2007 Gerard Jungman, Brian Gough, Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_EIGEN_H__ +#define __GSL_EIGEN_H__ + +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +typedef struct { + size_t size; + double * d; + double * sd; +} gsl_eigen_symm_workspace; + +gsl_eigen_symm_workspace * gsl_eigen_symm_alloc (const size_t n); +void gsl_eigen_symm_free (gsl_eigen_symm_workspace * w); +int gsl_eigen_symm (gsl_matrix * A, gsl_vector * eval, gsl_eigen_symm_workspace * w); + +typedef struct { + size_t size; + double * d; + double * sd; + double * gc; + double * gs; +} gsl_eigen_symmv_workspace; + +gsl_eigen_symmv_workspace * gsl_eigen_symmv_alloc (const size_t n); +void gsl_eigen_symmv_free (gsl_eigen_symmv_workspace * w); +int gsl_eigen_symmv (gsl_matrix * A, gsl_vector * eval, gsl_matrix * evec, gsl_eigen_symmv_workspace * w); + +typedef struct { + size_t size; + double * d; + double * sd; + double * tau; +} gsl_eigen_herm_workspace; + +gsl_eigen_herm_workspace * gsl_eigen_herm_alloc (const size_t n); +void gsl_eigen_herm_free (gsl_eigen_herm_workspace * w); +int gsl_eigen_herm (gsl_matrix_complex * A, gsl_vector * eval, + gsl_eigen_herm_workspace * w); + +typedef struct { + size_t size; + double * d; + double * sd; + double * tau; + double * gc; + double * gs; +} gsl_eigen_hermv_workspace; + +gsl_eigen_hermv_workspace * gsl_eigen_hermv_alloc (const size_t n); +void gsl_eigen_hermv_free (gsl_eigen_hermv_workspace * w); +int gsl_eigen_hermv (gsl_matrix_complex * A, gsl_vector * eval, + gsl_matrix_complex * evec, + gsl_eigen_hermv_workspace * w); + +typedef struct { + size_t size; /* matrix size */ + size_t max_iterations; /* max iterations since last eigenvalue found */ + size_t n_iter; /* number of iterations since last eigenvalue found */ + size_t n_evals; /* number of eigenvalues found so far */ + + int compute_t; /* compute Schur form T = Z^t A Z */ + + gsl_matrix *H; /* pointer to Hessenberg matrix */ + gsl_matrix *Z; /* pointer to Schur vector matrix */ +} gsl_eigen_francis_workspace; + +gsl_eigen_francis_workspace * gsl_eigen_francis_alloc (void); +void gsl_eigen_francis_free (gsl_eigen_francis_workspace * w); +void gsl_eigen_francis_T (const int compute_t, + gsl_eigen_francis_workspace * w); +int gsl_eigen_francis (gsl_matrix * H, gsl_vector_complex * eval, + gsl_eigen_francis_workspace * w); +int gsl_eigen_francis_Z (gsl_matrix * H, gsl_vector_complex * eval, + gsl_matrix * Z, + gsl_eigen_francis_workspace * w); + +typedef struct { + size_t size; /* size of matrices */ + gsl_vector *diag; /* diagonal matrix elements from balancing */ + gsl_vector *tau; /* Householder coefficients */ + gsl_matrix *Z; /* pointer to Z matrix */ + int do_balance; /* perform balancing transformation? */ + size_t n_evals; /* number of eigenvalues found */ + + gsl_eigen_francis_workspace *francis_workspace_p; +} gsl_eigen_nonsymm_workspace; + +gsl_eigen_nonsymm_workspace * gsl_eigen_nonsymm_alloc (const size_t n); +void gsl_eigen_nonsymm_free (gsl_eigen_nonsymm_workspace * w); +void gsl_eigen_nonsymm_params (const int compute_t, const int balance, + gsl_eigen_nonsymm_workspace *w); +int gsl_eigen_nonsymm (gsl_matrix * A, gsl_vector_complex * eval, + gsl_eigen_nonsymm_workspace * w); +int gsl_eigen_nonsymm_Z (gsl_matrix * A, gsl_vector_complex * eval, + gsl_matrix * Z, gsl_eigen_nonsymm_workspace * w); + +typedef struct { + size_t size; /* size of matrices */ + gsl_vector *work; /* scratch workspace */ + gsl_vector *work2; /* scratch workspace */ + gsl_vector *work3; /* scratch workspace */ + + gsl_matrix *Z; /* pointer to Schur vectors */ + + gsl_eigen_nonsymm_workspace *nonsymm_workspace_p; +} gsl_eigen_nonsymmv_workspace; + +gsl_eigen_nonsymmv_workspace * gsl_eigen_nonsymmv_alloc (const size_t n); +void gsl_eigen_nonsymmv_free (gsl_eigen_nonsymmv_workspace * w); +void gsl_eigen_nonsymmv_params (const int balance, + gsl_eigen_nonsymmv_workspace *w); +int gsl_eigen_nonsymmv (gsl_matrix * A, gsl_vector_complex * eval, + gsl_matrix_complex * evec, + gsl_eigen_nonsymmv_workspace * w); +int gsl_eigen_nonsymmv_Z (gsl_matrix * A, gsl_vector_complex * eval, + gsl_matrix_complex * evec, gsl_matrix * Z, + gsl_eigen_nonsymmv_workspace * w); + +typedef struct { + size_t size; /* size of matrices */ + gsl_eigen_symm_workspace *symm_workspace_p; +} gsl_eigen_gensymm_workspace; + +gsl_eigen_gensymm_workspace * gsl_eigen_gensymm_alloc (const size_t n); +void gsl_eigen_gensymm_free (gsl_eigen_gensymm_workspace * w); +int gsl_eigen_gensymm (gsl_matrix * A, gsl_matrix * B, + gsl_vector * eval, gsl_eigen_gensymm_workspace * w); +int gsl_eigen_gensymm_standardize (gsl_matrix * A, const gsl_matrix * B); + +typedef struct { + size_t size; /* size of matrices */ + gsl_eigen_symmv_workspace *symmv_workspace_p; +} gsl_eigen_gensymmv_workspace; + +gsl_eigen_gensymmv_workspace * gsl_eigen_gensymmv_alloc (const size_t n); +void gsl_eigen_gensymmv_free (gsl_eigen_gensymmv_workspace * w); +int gsl_eigen_gensymmv (gsl_matrix * A, gsl_matrix * B, + gsl_vector * eval, gsl_matrix * evec, + gsl_eigen_gensymmv_workspace * w); + +typedef struct { + size_t size; /* size of matrices */ + gsl_eigen_herm_workspace *herm_workspace_p; +} gsl_eigen_genherm_workspace; + +gsl_eigen_genherm_workspace * gsl_eigen_genherm_alloc (const size_t n); +void gsl_eigen_genherm_free (gsl_eigen_genherm_workspace * w); +int gsl_eigen_genherm (gsl_matrix_complex * A, gsl_matrix_complex * B, + gsl_vector * eval, gsl_eigen_genherm_workspace * w); +int gsl_eigen_genherm_standardize (gsl_matrix_complex * A, + const gsl_matrix_complex * B); + +typedef struct { + size_t size; /* size of matrices */ + gsl_eigen_hermv_workspace *hermv_workspace_p; +} gsl_eigen_genhermv_workspace; + +gsl_eigen_genhermv_workspace * gsl_eigen_genhermv_alloc (const size_t n); +void gsl_eigen_genhermv_free (gsl_eigen_genhermv_workspace * w); +int gsl_eigen_genhermv (gsl_matrix_complex * A, gsl_matrix_complex * B, + gsl_vector * eval, gsl_matrix_complex * evec, + gsl_eigen_genhermv_workspace * w); + +typedef struct { + size_t size; /* size of matrices */ + gsl_vector *work; /* scratch workspace */ + + size_t n_evals; /* number of eigenvalues found */ + size_t max_iterations; /* maximum QZ iterations allowed */ + size_t n_iter; /* number of iterations since last eigenvalue found */ + double eshift; /* exceptional shift counter */ + + int needtop; /* need to compute top index? */ + + double atol; /* tolerance for splitting A matrix */ + double btol; /* tolerance for splitting B matrix */ + + double ascale; /* scaling factor for shifts */ + double bscale; /* scaling factor for shifts */ + + gsl_matrix *H; /* pointer to hessenberg matrix */ + gsl_matrix *R; /* pointer to upper triangular matrix */ + + int compute_s; /* compute generalized Schur form S */ + int compute_t; /* compute generalized Schur form T */ + + gsl_matrix *Q; /* pointer to left Schur vectors */ + gsl_matrix *Z; /* pointer to right Schur vectors */ +} gsl_eigen_gen_workspace; + +gsl_eigen_gen_workspace * gsl_eigen_gen_alloc (const size_t n); +void gsl_eigen_gen_free (gsl_eigen_gen_workspace * w); +void gsl_eigen_gen_params (const int compute_s, const int compute_t, + const int balance, gsl_eigen_gen_workspace * w); +int gsl_eigen_gen (gsl_matrix * A, gsl_matrix * B, + gsl_vector_complex * alpha, gsl_vector * beta, + gsl_eigen_gen_workspace * w); +int gsl_eigen_gen_QZ (gsl_matrix * A, gsl_matrix * B, + gsl_vector_complex * alpha, gsl_vector * beta, + gsl_matrix * Q, gsl_matrix * Z, + gsl_eigen_gen_workspace * w); + +typedef struct { + size_t size; /* size of matrices */ + + gsl_vector *work1; /* 1-norm of columns of A */ + gsl_vector *work2; /* 1-norm of columns of B */ + gsl_vector *work3; /* real part of eigenvector */ + gsl_vector *work4; /* imag part of eigenvector */ + gsl_vector *work5; /* real part of back-transformed eigenvector */ + gsl_vector *work6; /* imag part of back-transformed eigenvector */ + + gsl_matrix *Q; /* pointer to left Schur vectors */ + gsl_matrix *Z; /* pointer to right Schur vectors */ + + gsl_eigen_gen_workspace *gen_workspace_p; +} gsl_eigen_genv_workspace; + +gsl_eigen_genv_workspace * gsl_eigen_genv_alloc (const size_t n); +void gsl_eigen_genv_free (gsl_eigen_genv_workspace * w); +int gsl_eigen_genv (gsl_matrix * A, gsl_matrix * B, + gsl_vector_complex * alpha, gsl_vector * beta, + gsl_matrix_complex * evec, + gsl_eigen_genv_workspace * w); +int gsl_eigen_genv_QZ (gsl_matrix * A, gsl_matrix * B, + gsl_vector_complex * alpha, gsl_vector * beta, + gsl_matrix_complex * evec, + gsl_matrix * Q, gsl_matrix * Z, + gsl_eigen_genv_workspace * w); + + + +typedef enum { + GSL_EIGEN_SORT_VAL_ASC, + GSL_EIGEN_SORT_VAL_DESC, + GSL_EIGEN_SORT_ABS_ASC, + GSL_EIGEN_SORT_ABS_DESC +} +gsl_eigen_sort_t; + +/* Sort eigensystem results based on eigenvalues. + * Sorts in order of increasing value or increasing + * absolute value. + * + * exceptions: GSL_EBADLEN + */ + +int gsl_eigen_symmv_sort(gsl_vector * eval, gsl_matrix * evec, + gsl_eigen_sort_t sort_type); + +int gsl_eigen_hermv_sort(gsl_vector * eval, gsl_matrix_complex * evec, + gsl_eigen_sort_t sort_type); + +int gsl_eigen_nonsymmv_sort(gsl_vector_complex * eval, + gsl_matrix_complex * evec, + gsl_eigen_sort_t sort_type); + +int gsl_eigen_gensymmv_sort (gsl_vector * eval, gsl_matrix * evec, + gsl_eigen_sort_t sort_type); + +int gsl_eigen_genhermv_sort (gsl_vector * eval, gsl_matrix_complex * evec, + gsl_eigen_sort_t sort_type); + +int gsl_eigen_genv_sort (gsl_vector_complex * alpha, gsl_vector * beta, + gsl_matrix_complex * evec, + gsl_eigen_sort_t sort_type); + +/* Prototypes for the schur module */ + +int gsl_schur_gen_eigvals(const gsl_matrix *A, const gsl_matrix *B, + double *wr1, double *wr2, double *wi, + double *scale1, double *scale2); + +int gsl_schur_solve_equation(double ca, const gsl_matrix *A, double z, + double d1, double d2, const gsl_vector *b, + gsl_vector *x, double *s, double *xnorm, + double smin); + +int gsl_schur_solve_equation_z(double ca, const gsl_matrix *A, + gsl_complex *z, double d1, double d2, + const gsl_vector_complex *b, + gsl_vector_complex *x, double *s, + double *xnorm, double smin); + + +/* The following functions are obsolete: */ + +/* Eigensolve by Jacobi Method + * + * The data in the matrix input is destroyed. + * + * exceptions: + */ +int +gsl_eigen_jacobi(gsl_matrix * matrix, + gsl_vector * eval, + gsl_matrix * evec, + unsigned int max_rot, + unsigned int * nrot); + + +/* Invert by Jacobi Method + * + * exceptions: + */ +int +gsl_eigen_invert_jacobi(const gsl_matrix * matrix, + gsl_matrix * ainv, + unsigned int max_rot); + + + +__END_DECLS + +#endif /* __GSL_EIGEN_H__ */ diff --git a/gsl-2.5/eigen/herm.c b/gsl-2.5/eigen/herm.c new file mode 100644 index 00000000..f8193d5e --- /dev/null +++ b/gsl-2.5/eigen/herm.c @@ -0,0 +1,182 @@ +/* eigen/herm.c + * + * Copyright (C) 2001, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include +#include + +/* Compute eigenvalues of complex hermitian matrix using reduction to + real symmetric tridiagonal form, followed by QR iteration with + implicit shifts. + + See Golub & Van Loan, "Matrix Computations" (3rd ed), Section 8.3 */ + +#include "qrstep.c" + +gsl_eigen_herm_workspace * +gsl_eigen_herm_alloc (const size_t n) +{ + gsl_eigen_herm_workspace * w ; + + if (n == 0) + { + GSL_ERROR_NULL ("matrix dimension must be positive integer", GSL_EINVAL); + } + + w = (gsl_eigen_herm_workspace *) malloc (sizeof(gsl_eigen_herm_workspace)); + + if (w == 0) + { + GSL_ERROR_NULL ("failed to allocate space for workspace", GSL_ENOMEM); + } + + w->d = (double *) malloc (n * sizeof (double)); + + if (w->d == 0) + { + GSL_ERROR_NULL ("failed to allocate space for diagonal", GSL_ENOMEM); + } + + w->sd = (double *) malloc (n * sizeof (double)); + + if (w->sd == 0) + { + GSL_ERROR_NULL ("failed to allocate space for subdiagonal", GSL_ENOMEM); + } + + w->tau = (double *) malloc (2 * n * sizeof (double)); + + if (w->tau == 0) + { + GSL_ERROR_NULL ("failed to allocate space for tau", GSL_ENOMEM); + } + + w->size = n; + + return w; +} + +void +gsl_eigen_herm_free (gsl_eigen_herm_workspace * w) +{ + RETURN_IF_NULL (w); + free (w->tau); + free (w->sd); + free (w->d); + free(w); +} + +int +gsl_eigen_herm (gsl_matrix_complex * A, gsl_vector * eval, + gsl_eigen_herm_workspace * w) +{ + if (A->size1 != A->size2) + { + GSL_ERROR ("matrix must be square to compute eigenvalues", GSL_ENOTSQR); + } + else if (eval->size != A->size1) + { + GSL_ERROR ("eigenvalue vector must match matrix size", GSL_EBADLEN); + } + else + { + const size_t N = A->size1; + double *const d = w->d; + double *const sd = w->sd; + + size_t a, b; + + /* handle special case */ + + if (N == 1) + { + gsl_complex A00 = gsl_matrix_complex_get (A, 0, 0); + gsl_vector_set (eval, 0, GSL_REAL(A00)); + return GSL_SUCCESS; + } + + { + gsl_vector_view d_vec = gsl_vector_view_array (d, N); + gsl_vector_view sd_vec = gsl_vector_view_array (sd, N - 1); + gsl_vector_complex_view tau_vec = gsl_vector_complex_view_array (w->tau, N-1); + gsl_linalg_hermtd_decomp (A, &tau_vec.vector); + gsl_linalg_hermtd_unpack_T (A, &d_vec.vector, &sd_vec.vector); + } + + /* Make an initial pass through the tridiagonal decomposition + to remove off-diagonal elements which are effectively zero */ + + chop_small_elements (N, d, sd); + + /* Progressively reduce the matrix until it is diagonal */ + + b = N - 1; + + while (b > 0) + { + if (sd[b - 1] == 0.0 || isnan(sd[b - 1])) + { + b--; + continue; + } + + /* Find the largest unreduced block (a,b) starting from b + and working backwards */ + + a = b - 1; + + while (a > 0) + { + if (sd[a - 1] == 0.0) + { + break; + } + a--; + } + + { + const size_t n_block = b - a + 1; + double *d_block = d + a; + double *sd_block = sd + a; + + /* apply QR reduction with implicit deflation to the + unreduced block */ + + qrstep (n_block, d_block, sd_block, NULL, NULL); + + /* remove any small off-diagonal elements */ + + chop_small_elements (n_block, d_block, sd_block); + } + } + + { + gsl_vector_view d_vec = gsl_vector_view_array (d, N); + gsl_vector_memcpy (eval, &d_vec.vector); + } + + return GSL_SUCCESS; + } +} + + diff --git a/gsl-2.5/eigen/herm.lo b/gsl-2.5/eigen/herm.lo new file mode 100644 index 00000000..b44aca6c --- /dev/null +++ b/gsl-2.5/eigen/herm.lo @@ -0,0 +1,12 @@ +# herm.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/herm.o' + +# Name of the non-PIC object +non_pic_object='herm.o' + diff --git a/gsl-2.5/eigen/hermv.c b/gsl-2.5/eigen/hermv.c new file mode 100644 index 00000000..99892914 --- /dev/null +++ b/gsl-2.5/eigen/hermv.c @@ -0,0 +1,250 @@ +/* eigen/hermv.c + * + * Copyright (C) 2001, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include +#include +#include + +/* Compute eigenvalues/eigenvectors of complex hermitian matrix using + reduction to real symmetric tridiagonal form, followed by QR + iteration with implicit shifts. + + See Golub & Van Loan, "Matrix Computations" (3rd ed), Section 8.3 */ + +#include "qrstep.c" + +gsl_eigen_hermv_workspace * +gsl_eigen_hermv_alloc (const size_t n) +{ + gsl_eigen_hermv_workspace * w ; + + if (n == 0) + { + GSL_ERROR_NULL ("matrix dimension must be positive integer", GSL_EINVAL); + } + + w = (gsl_eigen_hermv_workspace *) malloc (sizeof(gsl_eigen_hermv_workspace)); + + if (w == 0) + { + GSL_ERROR_NULL ("failed to allocate space for workspace", GSL_ENOMEM); + } + + w->d = (double *) malloc (n * sizeof (double)); + + if (w->d == 0) + { + free (w); + GSL_ERROR_NULL ("failed to allocate space for diagonal", GSL_ENOMEM); + } + + w->sd = (double *) malloc (n * sizeof (double)); + + if (w->sd == 0) + { + free (w->d); + free (w); + GSL_ERROR_NULL ("failed to allocate space for subdiagonal", GSL_ENOMEM); + } + + w->tau = (double *) malloc (2 * n * sizeof (double)); + + if (w->tau == 0) + { + free (w->sd); + free (w->d); + free (w); + GSL_ERROR_NULL ("failed to allocate space for tau", GSL_ENOMEM); + } + + w->gc = (double *) malloc (n * sizeof (double)); + + if (w->gc == 0) + { + free (w->tau); + free (w->sd); + free (w->d); + free (w); + GSL_ERROR_NULL ("failed to allocate space for cosines", GSL_ENOMEM); + } + + w->gs = (double *) malloc (n * sizeof (double)); + + if (w->gs == 0) + { + free (w->gc); + free (w->tau); + free (w->sd); + free (w->d); + free (w); + GSL_ERROR_NULL ("failed to allocate space for sines", GSL_ENOMEM); + } + + w->size = n; + + return w; +} + +void +gsl_eigen_hermv_free (gsl_eigen_hermv_workspace * w) +{ + RETURN_IF_NULL (w); + free (w->gs); + free (w->gc); + free (w->tau); + free (w->sd); + free (w->d); + free (w); +} + +int +gsl_eigen_hermv (gsl_matrix_complex * A, gsl_vector * eval, + gsl_matrix_complex * evec, + gsl_eigen_hermv_workspace * w) +{ + if (A->size1 != A->size2) + { + GSL_ERROR ("matrix must be square to compute eigenvalues", GSL_ENOTSQR); + } + else if (eval->size != A->size1) + { + GSL_ERROR ("eigenvalue vector must match matrix size", GSL_EBADLEN); + } + else if (evec->size1 != A->size1 || evec->size2 != A->size1) + { + GSL_ERROR ("eigenvector matrix must match matrix size", GSL_EBADLEN); + } + else + { + const size_t N = A->size1; + double *const d = w->d; + double *const sd = w->sd; + + size_t a, b; + + /* handle special case */ + + if (N == 1) + { + gsl_complex A00 = gsl_matrix_complex_get (A, 0, 0); + gsl_vector_set (eval, 0, GSL_REAL(A00)); + gsl_matrix_complex_set (evec, 0, 0, GSL_COMPLEX_ONE); + return GSL_SUCCESS; + } + + /* Transform the matrix into a symmetric tridiagonal form */ + + { + gsl_vector_view d_vec = gsl_vector_view_array (d, N); + gsl_vector_view sd_vec = gsl_vector_view_array (sd, N - 1); + gsl_vector_complex_view tau_vec = gsl_vector_complex_view_array (w->tau, N-1); + gsl_linalg_hermtd_decomp (A, &tau_vec.vector); + gsl_linalg_hermtd_unpack (A, &tau_vec.vector, evec, &d_vec.vector, &sd_vec.vector); + } + + /* Make an initial pass through the tridiagonal decomposition + to remove off-diagonal elements which are effectively zero */ + + chop_small_elements (N, d, sd); + + /* Progressively reduce the matrix until it is diagonal */ + + b = N - 1; + + while (b > 0) + { + if (sd[b - 1] == 0.0 || isnan(sd[b - 1])) + { + b--; + continue; + } + + /* Find the largest unreduced block (a,b) starting from b + and working backwards */ + + a = b - 1; + + while (a > 0) + { + if (sd[a - 1] == 0.0) + { + break; + } + a--; + } + + { + size_t i; + const size_t n_block = b - a + 1; + double *d_block = d + a; + double *sd_block = sd + a; + double * const gc = w->gc; + double * const gs = w->gs; + + /* apply QR reduction with implicit deflation to the + unreduced block */ + + qrstep (n_block, d_block, sd_block, gc, gs); + + /* Apply Givens rotation Gij(c,s) to matrix Q, Q <- Q G */ + + for (i = 0; i < n_block - 1; i++) + { + const double c = gc[i], s = gs[i]; + size_t k; + + for (k = 0; k < N; k++) + { + gsl_complex qki = gsl_matrix_complex_get (evec, k, a + i); + gsl_complex qkj = gsl_matrix_complex_get (evec, k, a + i + 1); + /* qki <= qki * c - qkj * s */ + /* qkj <= qki * s + qkj * c */ + gsl_complex x1 = gsl_complex_mul_real(qki, c); + gsl_complex y1 = gsl_complex_mul_real(qkj, -s); + + gsl_complex x2 = gsl_complex_mul_real(qki, s); + gsl_complex y2 = gsl_complex_mul_real(qkj, c); + + gsl_complex qqki = gsl_complex_add(x1, y1); + gsl_complex qqkj = gsl_complex_add(x2, y2); + + gsl_matrix_complex_set (evec, k, a + i, qqki); + gsl_matrix_complex_set (evec, k, a + i + 1, qqkj); + } + } + + /* remove any small off-diagonal elements */ + + chop_small_elements (n_block, d_block, sd_block); + } + } + + { + gsl_vector_view d_vec = gsl_vector_view_array (d, N); + gsl_vector_memcpy (eval, &d_vec.vector); + } + + return GSL_SUCCESS; + } +} diff --git a/gsl-2.5/eigen/hermv.lo b/gsl-2.5/eigen/hermv.lo new file mode 100644 index 00000000..aec979a7 --- /dev/null +++ b/gsl-2.5/eigen/hermv.lo @@ -0,0 +1,12 @@ +# hermv.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/hermv.o' + +# Name of the non-PIC object +non_pic_object='hermv.o' + diff --git a/gsl-2.5/eigen/jacobi.c b/gsl-2.5/eigen/jacobi.c new file mode 100644 index 00000000..aee863f6 --- /dev/null +++ b/gsl-2.5/eigen/jacobi.c @@ -0,0 +1,263 @@ +/* eigen/jacobi.c + * + * Copyright (C) 2004, 2007 Brian Gough, Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include + +/* Algorithm 8.4.3 - Cyclic Jacobi. Golub & Van Loan, Matrix Computations */ + +static inline double +symschur2 (gsl_matrix * A, size_t p, size_t q, double *c, double *s) +{ + double Apq = gsl_matrix_get (A, p, q); + + if (Apq != 0.0) + { + double App = gsl_matrix_get (A, p, p); + double Aqq = gsl_matrix_get (A, q, q); + double tau = (Aqq - App) / (2.0 * Apq); + double t, c1; + + if (tau >= 0.0) + { + t = 1.0 / (tau + hypot (1.0, tau)); + } + else + { + t = -1.0 / (-tau + hypot (1.0, tau)); + } + + c1 = 1.0 / hypot (1.0, t); + + *c = c1; + *s = t * c1; + } + else + { + *c = 1.0; + *s = 0.0; + } + + /* reduction in off(A) is 2*(A_pq)^2 */ + + return fabs (Apq); +} + +inline static void +apply_jacobi_L (gsl_matrix * A, size_t p, size_t q, double c, double s) +{ + size_t j; + const size_t N = A->size2; + + /* Apply rotation to matrix A, A' = J^T A */ + + for (j = 0; j < N; j++) + { + double Apj = gsl_matrix_get (A, p, j); + double Aqj = gsl_matrix_get (A, q, j); + gsl_matrix_set (A, p, j, Apj * c - Aqj * s); + gsl_matrix_set (A, q, j, Apj * s + Aqj * c); + } +} + +inline static void +apply_jacobi_R (gsl_matrix * A, size_t p, size_t q, double c, double s) +{ + size_t i; + const size_t M = A->size1; + + /* Apply rotation to matrix A, A' = A J */ + + for (i = 0; i < M; i++) + { + double Aip = gsl_matrix_get (A, i, p); + double Aiq = gsl_matrix_get (A, i, q); + gsl_matrix_set (A, i, p, Aip * c - Aiq * s); + gsl_matrix_set (A, i, q, Aip * s + Aiq * c); + } +} + +inline static double +norm (gsl_matrix * A) +{ + size_t i, j, M = A->size1, N = A->size2; + double sum = 0.0, scale = 0.0, ssq = 1.0; + + for (i = 0; i < M; i++) + { + for (j = 0; j < N; j++) + { + double Aij = gsl_matrix_get (A, i, j); + + /* compute norm of off-diagonal elements as per algorithm + 8.4.3 and definition at start of section 8.4.1 */ + if (i == j) continue; + + if (Aij != 0.0) + { + double ax = fabs (Aij); + + if (scale < ax) + { + ssq = 1.0 + ssq * (scale / ax) * (scale / ax); + scale = ax; + } + else + { + ssq += (ax / scale) * (ax / scale); + } + } + + } + } + + sum = scale * sqrt (ssq); + + return sum; +} + +int +gsl_eigen_jacobi (gsl_matrix * a, + gsl_vector * eval, + gsl_matrix * evec, unsigned int max_rot, unsigned int *nrot) +{ + size_t i, p, q; + const size_t M = a->size1, N = a->size2; + double red, redsum = 0.0; + + if (M != N) + { + GSL_ERROR ("eigenproblem requires square matrix", GSL_ENOTSQR); + } + else if (M != evec->size1 || M != evec->size2) + { + GSL_ERROR ("eigenvector matrix must match input matrix", GSL_EBADLEN); + } + else if (M != eval->size) + { + GSL_ERROR ("eigenvalue vector must match input matrix", GSL_EBADLEN); + } + + gsl_vector_set_zero (eval); + gsl_matrix_set_identity (evec); + + for (i = 0; i < max_rot; i++) + { + double nrm = norm (a); + + if (nrm == 0.0) + break; + + for (p = 0; p < N; p++) + { + for (q = p + 1; q < N; q++) + { + double c, s; + + red = symschur2 (a, p, q, &c, &s); + redsum += red; + + /* Compute A <- J^T A J */ + apply_jacobi_L (a, p, q, c, s); + apply_jacobi_R (a, p, q, c, s); + + /* Compute V <- V J */ + apply_jacobi_R (evec, p, q, c, s); + } + } + } + + *nrot = i; + + for (p = 0; p < N; p++) + { + double ep = gsl_matrix_get (a, p, p); + gsl_vector_set (eval, p, ep); + } + + if (i == max_rot) + { + return GSL_EMAXITER; + } + + return GSL_SUCCESS; +} + +int +gsl_eigen_invert_jacobi (const gsl_matrix * a, + gsl_matrix * ainv, unsigned int max_rot) +{ + if (a->size1 != a->size2 || ainv->size1 != ainv->size2) + { + GSL_ERROR("jacobi method requires square matrix", GSL_ENOTSQR); + } + else if (a->size1 != ainv->size2) + { + GSL_ERROR ("inverse matrix must match input matrix", GSL_EBADLEN); + } + + { + const size_t n = a->size2; + size_t i,j,k; + unsigned int nrot = 0; + int status; + + gsl_vector * eval = gsl_vector_alloc(n); + gsl_matrix * evec = gsl_matrix_alloc(n, n); + gsl_matrix * tmp = gsl_matrix_alloc(n, n); + + gsl_matrix_memcpy (tmp, a); + + status = gsl_eigen_jacobi(tmp, eval, evec, max_rot, &nrot); + + for(i=0; i +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/* + * This module computes the eigenvalues of a real nonsymmetric + * matrix, using the double shift Francis method. + * + * See the references in francis.c. + * + * This module gets the matrix ready by balancing it and + * reducing it to Hessenberg form before passing it to the + * francis module. + */ + +/* +gsl_eigen_nonsymm_alloc() + +Allocate a workspace for solving the nonsymmetric eigenvalue problem. +The size of this workspace is O(2n) + +Inputs: n - size of matrix + +Return: pointer to workspace +*/ + +gsl_eigen_nonsymm_workspace * +gsl_eigen_nonsymm_alloc(const size_t n) +{ + gsl_eigen_nonsymm_workspace *w; + + if (n == 0) + { + GSL_ERROR_NULL ("matrix dimension must be positive integer", + GSL_EINVAL); + } + + w = (gsl_eigen_nonsymm_workspace *) + calloc (1, sizeof (gsl_eigen_nonsymm_workspace)); + + if (w == 0) + { + GSL_ERROR_NULL ("failed to allocate space for workspace", GSL_ENOMEM); + } + + w->size = n; + w->Z = NULL; + w->do_balance = 0; + + w->diag = gsl_vector_alloc(n); + + if (w->diag == 0) + { + gsl_eigen_nonsymm_free(w); + GSL_ERROR_NULL ("failed to allocate space for balancing vector", GSL_ENOMEM); + } + + w->tau = gsl_vector_alloc(n); + + if (w->tau == 0) + { + gsl_eigen_nonsymm_free(w); + GSL_ERROR_NULL ("failed to allocate space for hessenberg coefficients", GSL_ENOMEM); + } + + w->francis_workspace_p = gsl_eigen_francis_alloc(); + + if (w->francis_workspace_p == 0) + { + gsl_eigen_nonsymm_free(w); + GSL_ERROR_NULL ("failed to allocate space for francis workspace", GSL_ENOMEM); + } + + return (w); +} /* gsl_eigen_nonsymm_alloc() */ + +/* +gsl_eigen_nonsymm_free() + Free workspace w +*/ + +void +gsl_eigen_nonsymm_free (gsl_eigen_nonsymm_workspace * w) +{ + RETURN_IF_NULL (w); + + if (w->tau) + gsl_vector_free(w->tau); + + if (w->diag) + gsl_vector_free(w->diag); + + if (w->francis_workspace_p) + gsl_eigen_francis_free(w->francis_workspace_p); + + free(w); +} /* gsl_eigen_nonsymm_free() */ + +/* +gsl_eigen_nonsymm_params() + Set some parameters which define how we solve the eigenvalue +problem. + +Inputs: compute_t - 1 if we want to compute T, 0 if not + balance - 1 if we want to balance the matrix, 0 if not + w - nonsymm workspace +*/ + +void +gsl_eigen_nonsymm_params (const int compute_t, const int balance, + gsl_eigen_nonsymm_workspace *w) +{ + gsl_eigen_francis_T(compute_t, w->francis_workspace_p); + w->do_balance = balance; +} /* gsl_eigen_nonsymm_params() */ + +/* +gsl_eigen_nonsymm() + +Solve the nonsymmetric eigenvalue problem + +A x = \lambda x + +for the eigenvalues \lambda using the Francis method. + +Here we compute the real Schur form + +T = Z^t A Z + +with the diagonal blocks of T giving us the eigenvalues. +Z is a matrix of Schur vectors which is not computed by +this algorithm. See gsl_eigen_nonsymm_Z(). + +Inputs: A - general real matrix + eval - where to store eigenvalues + w - workspace + +Return: success or error + +Notes: If T is computed, it is stored in A on output. Otherwise + the diagonal of A contains the 1-by-1 and 2-by-2 eigenvalue + blocks. +*/ + +int +gsl_eigen_nonsymm (gsl_matrix * A, gsl_vector_complex * eval, + gsl_eigen_nonsymm_workspace * w) +{ + const size_t N = A->size1; + + /* check matrix and vector sizes */ + + if (N != A->size2) + { + GSL_ERROR ("matrix must be square to compute eigenvalues", GSL_ENOTSQR); + } + else if (eval->size != N) + { + GSL_ERROR ("eigenvalue vector must match matrix size", GSL_EBADLEN); + } + else + { + int s; + + if (w->do_balance) + { + /* balance the matrix */ + gsl_linalg_balance_matrix(A, w->diag); + } + + /* compute the Hessenberg reduction of A */ + gsl_linalg_hessenberg_decomp(A, w->tau); + + if (w->Z) + { + /* + * initialize the matrix Z to U, which is the matrix used + * to construct the Hessenberg reduction. + */ + + /* compute U and store it in Z */ + gsl_linalg_hessenberg_unpack(A, w->tau, w->Z); + + /* find the eigenvalues and Schur vectors */ + s = gsl_eigen_francis_Z(A, eval, w->Z, w->francis_workspace_p); + + if (w->do_balance) + { + /* + * The Schur vectors in Z are the vectors for the balanced + * matrix. We now must undo the balancing to get the + * vectors for the original matrix A. + */ + gsl_linalg_balance_accum(w->Z, w->diag); + } + } + else + { + /* find the eigenvalues only */ + s = gsl_eigen_francis(A, eval, w->francis_workspace_p); + } + + w->n_evals = w->francis_workspace_p->n_evals; + + return s; + } +} /* gsl_eigen_nonsymm() */ + +/* +gsl_eigen_nonsymm_Z() + +Solve the nonsymmetric eigenvalue problem + +A x = \lambda x + +for the eigenvalues \lambda. + +Here we compute the real Schur form + +T = Z^t A Z + +with the diagonal blocks of T giving us the eigenvalues. +Z is the matrix of Schur vectors. + +Inputs: A - general real matrix + eval - where to store eigenvalues + Z - where to store Schur vectors + w - workspace + +Return: success or error + +Notes: If T is computed, it is stored in A on output. Otherwise + the diagonal of A contains the 1-by-1 and 2-by-2 eigenvalue + blocks. +*/ + +int +gsl_eigen_nonsymm_Z (gsl_matrix * A, gsl_vector_complex * eval, + gsl_matrix * Z, gsl_eigen_nonsymm_workspace * w) +{ + /* check matrix and vector sizes */ + + if (A->size1 != A->size2) + { + GSL_ERROR ("matrix must be square to compute eigenvalues", GSL_ENOTSQR); + } + else if (eval->size != A->size1) + { + GSL_ERROR ("eigenvalue vector must match matrix size", GSL_EBADLEN); + } + else if ((Z->size1 != Z->size2) || (Z->size1 != A->size1)) + { + GSL_ERROR ("Z matrix has wrong dimensions", GSL_EBADLEN); + } + else + { + int s; + + w->Z = Z; + + s = gsl_eigen_nonsymm(A, eval, w); + + w->Z = NULL; + + return s; + } +} /* gsl_eigen_nonsymm_Z() */ diff --git a/gsl-2.5/eigen/nonsymm.lo b/gsl-2.5/eigen/nonsymm.lo new file mode 100644 index 00000000..2580630b --- /dev/null +++ b/gsl-2.5/eigen/nonsymm.lo @@ -0,0 +1,12 @@ +# nonsymm.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/nonsymm.o' + +# Name of the non-PIC object +non_pic_object='nonsymm.o' + diff --git a/gsl-2.5/eigen/nonsymmv.c b/gsl-2.5/eigen/nonsymmv.c new file mode 100644 index 00000000..1b782a61 --- /dev/null +++ b/gsl-2.5/eigen/nonsymmv.c @@ -0,0 +1,986 @@ +/* eigen/nonsymmv.c + * + * Copyright (C) 2006 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/* + * This module computes the eigenvalues and eigenvectors of a real + * nonsymmetric matrix. + * + * This file contains routines based on original code from LAPACK + * which is distributed under the modified BSD license. The LAPACK + * routines used are DTREVC and DLALN2. + */ + +#define GSL_NONSYMMV_SMLNUM (2.0 * GSL_DBL_MIN) +#define GSL_NONSYMMV_BIGNUM ((1.0 - GSL_DBL_EPSILON) / GSL_NONSYMMV_SMLNUM) + +static void nonsymmv_get_right_eigenvectors(gsl_matrix *T, gsl_matrix *Z, + gsl_vector_complex *eval, + gsl_matrix_complex *evec, + gsl_eigen_nonsymmv_workspace *w); +static void nonsymmv_normalize_eigenvectors(gsl_vector_complex *eval, + gsl_matrix_complex *evec); + +/* +gsl_eigen_nonsymmv_alloc() + +Allocate a workspace for solving the nonsymmetric eigenvalue problem. +The size of this workspace is O(5n). + +Inputs: n - size of matrices + +Return: pointer to workspace +*/ + +gsl_eigen_nonsymmv_workspace * +gsl_eigen_nonsymmv_alloc(const size_t n) +{ + gsl_eigen_nonsymmv_workspace *w; + + if (n == 0) + { + GSL_ERROR_NULL ("matrix dimension must be positive integer", + GSL_EINVAL); + } + + w = (gsl_eigen_nonsymmv_workspace *) + calloc (1, sizeof (gsl_eigen_nonsymmv_workspace)); + + if (w == 0) + { + GSL_ERROR_NULL ("failed to allocate space for workspace", GSL_ENOMEM); + } + + w->size = n; + w->Z = NULL; + w->nonsymm_workspace_p = gsl_eigen_nonsymm_alloc(n); + + if (w->nonsymm_workspace_p == 0) + { + gsl_eigen_nonsymmv_free(w); + GSL_ERROR_NULL ("failed to allocate space for nonsymm workspace", GSL_ENOMEM); + } + + /* + * set parameters to compute the full Schur form T and balance + * the matrices + */ + gsl_eigen_nonsymm_params(1, 0, w->nonsymm_workspace_p); + + w->work = gsl_vector_alloc(n); + w->work2 = gsl_vector_alloc(n); + w->work3 = gsl_vector_alloc(n); + if (w->work == 0 || w->work2 == 0 || w->work3 == 0) + { + gsl_eigen_nonsymmv_free(w); + GSL_ERROR_NULL ("failed to allocate space for nonsymmv additional workspace", GSL_ENOMEM); + } + + return (w); +} /* gsl_eigen_nonsymmv_alloc() */ + +/* +gsl_eigen_nonsymmv_free() + Free workspace w +*/ + +void +gsl_eigen_nonsymmv_free (gsl_eigen_nonsymmv_workspace * w) +{ + RETURN_IF_NULL (w); + + if (w->nonsymm_workspace_p) + gsl_eigen_nonsymm_free(w->nonsymm_workspace_p); + + if (w->work) + gsl_vector_free(w->work); + + if (w->work2) + gsl_vector_free(w->work2); + + if (w->work3) + gsl_vector_free(w->work3); + + free(w); +} /* gsl_eigen_nonsymmv_free() */ + +/* +gsl_eigen_nonsymmv_params() + Set some parameters which define how we solve the eigenvalue +problem. + +Inputs: balance - 1 if we want to balance the matrix, 0 if not + w - nonsymmv workspace +*/ + +void +gsl_eigen_nonsymmv_params (const int balance, + gsl_eigen_nonsymmv_workspace *w) +{ + gsl_eigen_nonsymm_params(1, balance, w->nonsymm_workspace_p); +} /* gsl_eigen_nonsymm_params() */ + +/* +gsl_eigen_nonsymmv() + +Solve the nonsymmetric eigensystem problem + +A x = \lambda x + +for the eigenvalues \lambda and right eigenvectors x + +Inputs: A - general real matrix + eval - where to store eigenvalues + evec - where to store eigenvectors + w - workspace + +Return: success or error +*/ + +int +gsl_eigen_nonsymmv (gsl_matrix * A, gsl_vector_complex * eval, + gsl_matrix_complex * evec, + gsl_eigen_nonsymmv_workspace * w) +{ + const size_t N = A->size1; + + /* check matrix and vector sizes */ + + if (N != A->size2) + { + GSL_ERROR ("matrix must be square to compute eigenvalues", GSL_ENOTSQR); + } + else if (eval->size != N) + { + GSL_ERROR ("eigenvalue vector must match matrix size", GSL_EBADLEN); + } + else if (evec->size1 != evec->size2) + { + GSL_ERROR ("eigenvector matrix must be square", GSL_ENOTSQR); + } + else if (evec->size1 != N) + { + GSL_ERROR ("eigenvector matrix has wrong size", GSL_EBADLEN); + } + else + { + int s; + gsl_matrix Z; + + /* + * We need a place to store the Schur vectors, so we will + * treat evec as a real matrix and store them in the left + * half - the factor of 2 in the tda corresponds to the + * complex multiplicity + */ + Z.size1 = N; + Z.size2 = N; + Z.tda = 2 * N; + Z.data = evec->data; + Z.block = 0; + Z.owner = 0; + + /* compute eigenvalues, Schur form, and Schur vectors */ + s = gsl_eigen_nonsymm_Z(A, eval, &Z, w->nonsymm_workspace_p); + + if (w->Z) + { + /* + * save the Schur vectors in user supplied matrix, since + * they will be destroyed when computing eigenvectors + */ + gsl_matrix_memcpy(w->Z, &Z); + } + + /* only compute eigenvectors if we found all eigenvalues */ + if (s == GSL_SUCCESS) + { + /* compute eigenvectors */ + nonsymmv_get_right_eigenvectors(A, &Z, eval, evec, w); + + /* normalize so that Euclidean norm is 1 */ + nonsymmv_normalize_eigenvectors(eval, evec); + } + + return s; + } +} /* gsl_eigen_nonsymmv() */ + +/* +gsl_eigen_nonsymmv_Z() + Compute eigenvalues and eigenvectors of a real nonsymmetric matrix +and also save the Schur vectors. See comments in gsl_eigen_nonsymm_Z +for more information. + +Inputs: A - real nonsymmetric matrix + eval - where to store eigenvalues + evec - where to store eigenvectors + Z - where to store Schur vectors + w - nonsymmv workspace + +Return: success or error +*/ + +int +gsl_eigen_nonsymmv_Z (gsl_matrix * A, gsl_vector_complex * eval, + gsl_matrix_complex * evec, gsl_matrix * Z, + gsl_eigen_nonsymmv_workspace * w) +{ + /* check matrix and vector sizes */ + + if (A->size1 != A->size2) + { + GSL_ERROR ("matrix must be square to compute eigenvalues/eigenvectors", GSL_ENOTSQR); + } + else if (eval->size != A->size1) + { + GSL_ERROR ("eigenvalue vector must match matrix size", GSL_EBADLEN); + } + else if (evec->size1 != evec->size2) + { + GSL_ERROR ("eigenvector matrix must be square", GSL_ENOTSQR); + } + else if (evec->size1 != A->size1) + { + GSL_ERROR ("eigenvector matrix has wrong size", GSL_EBADLEN); + } + else if ((Z->size1 != Z->size2) || (Z->size1 != A->size1)) + { + GSL_ERROR ("Z matrix has wrong dimensions", GSL_EBADLEN); + } + else + { + int s; + + w->Z = Z; + + s = gsl_eigen_nonsymmv(A, eval, evec, w); + + w->Z = NULL; + + return s; + } +} /* gsl_eigen_nonsymmv_Z() */ + +/******************************************** + * INTERNAL ROUTINES * + ********************************************/ + +/* +nonsymmv_get_right_eigenvectors() + Compute the right eigenvectors of the Schur form T and then +backtransform them using the Schur vectors to get right eigenvectors of +the original matrix. + +Inputs: T - Schur form + Z - Schur vectors + eval - where to store eigenvalues (to ensure that the + correct eigenvalue is stored in the same position + as the eigenvectors) + evec - where to store eigenvectors + w - nonsymmv workspace + +Return: none + +Notes: 1) based on LAPACK routine DTREVC - the algorithm used is + backsubstitution on the upper quasi triangular system T + followed by backtransformation by Z to get vectors of the + original matrix. + + 2) The Schur vectors in Z are destroyed and replaced with + eigenvectors stored with the same storage scheme as DTREVC. + The eigenvectors are also stored in 'evec' + + 3) The matrix T is unchanged on output + + 4) Each eigenvector is normalized so that the element of + largest magnitude has magnitude 1; here the magnitude of + a complex number (x,y) is taken to be |x| + |y| +*/ + +static void +nonsymmv_get_right_eigenvectors(gsl_matrix *T, gsl_matrix *Z, + gsl_vector_complex *eval, + gsl_matrix_complex *evec, + gsl_eigen_nonsymmv_workspace *w) +{ + const size_t N = T->size1; + const double smlnum = GSL_DBL_MIN * N / GSL_DBL_EPSILON; + const double bignum = (1.0 - GSL_DBL_EPSILON) / smlnum; + int i; /* looping */ + size_t iu, /* looping */ + ju, + ii; + gsl_complex lambda; /* current eigenvalue */ + double lambda_re, /* Re(lambda) */ + lambda_im; /* Im(lambda) */ + gsl_matrix_view Tv, /* temporary views */ + Zv; + gsl_vector_view y, /* temporary views */ + y2, + ev, + ev2; + double dat[4], /* scratch arrays */ + dat_X[4]; + double scale; /* scale factor */ + double xnorm; /* |X| */ + gsl_vector_complex_view ecol, /* column of evec */ + ecol2; + int complex_pair; /* complex eigenvalue pair? */ + double smin; + + /* + * Compute 1-norm of each column of upper triangular part of T + * to control overflow in triangular solver + */ + + gsl_vector_set(w->work3, 0, 0.0); + for (ju = 1; ju < N; ++ju) + { + gsl_vector_set(w->work3, ju, 0.0); + for (iu = 0; iu < ju; ++iu) + { + gsl_vector_set(w->work3, ju, + gsl_vector_get(w->work3, ju) + + fabs(gsl_matrix_get(T, iu, ju))); + } + } + + for (i = (int) N - 1; i >= 0; --i) + { + iu = (size_t) i; + + /* get current eigenvalue and store it in lambda */ + lambda_re = gsl_matrix_get(T, iu, iu); + + if (iu != 0 && gsl_matrix_get(T, iu, iu - 1) != 0.0) + { + lambda_im = sqrt(fabs(gsl_matrix_get(T, iu, iu - 1))) * + sqrt(fabs(gsl_matrix_get(T, iu - 1, iu))); + } + else + { + lambda_im = 0.0; + } + + GSL_SET_COMPLEX(&lambda, lambda_re, lambda_im); + + smin = GSL_MAX(GSL_DBL_EPSILON * (fabs(lambda_re) + fabs(lambda_im)), + smlnum); + smin = GSL_MAX(smin, GSL_NONSYMMV_SMLNUM); + + if (lambda_im == 0.0) + { + int k, l; + gsl_vector_view bv, xv; + + /* real eigenvector */ + + /* + * The ordering of eigenvalues in 'eval' is arbitrary and + * does not necessarily follow the Schur form T, so store + * lambda in the right slot in eval to ensure it corresponds + * to the eigenvector we are about to compute + */ + gsl_vector_complex_set(eval, iu, lambda); + + /* + * We need to solve the system: + * + * (T(1:iu-1, 1:iu-1) - lambda*I)*X = -T(1:iu-1,iu) + */ + + /* construct right hand side */ + for (k = 0; k < i; ++k) + { + gsl_vector_set(w->work, + (size_t) k, + -gsl_matrix_get(T, (size_t) k, iu)); + } + + gsl_vector_set(w->work, iu, 1.0); + + for (l = i - 1; l >= 0; --l) + { + size_t lu = (size_t) l; + + if (lu == 0) + complex_pair = 0; + else + complex_pair = gsl_matrix_get(T, lu, lu - 1) != 0.0; + + if (!complex_pair) + { + double x; + + /* + * 1-by-1 diagonal block - solve the system: + * + * (T_{ll} - lambda)*x = -T_{l(iu)} + */ + + Tv = gsl_matrix_submatrix(T, lu, lu, 1, 1); + bv = gsl_vector_view_array(dat, 1); + gsl_vector_set(&bv.vector, 0, + gsl_vector_get(w->work, lu)); + xv = gsl_vector_view_array(dat_X, 1); + + gsl_schur_solve_equation(1.0, + &Tv.matrix, + lambda_re, + 1.0, + 1.0, + &bv.vector, + &xv.vector, + &scale, + &xnorm, + smin); + + /* scale x to avoid overflow */ + x = gsl_vector_get(&xv.vector, 0); + if (xnorm > 1.0) + { + if (gsl_vector_get(w->work3, lu) > bignum / xnorm) + { + x /= xnorm; + scale /= xnorm; + } + } + + if (scale != 1.0) + { + gsl_vector_view wv; + + wv = gsl_vector_subvector(w->work, 0, iu + 1); + gsl_blas_dscal(scale, &wv.vector); + } + + gsl_vector_set(w->work, lu, x); + + if (lu > 0) + { + gsl_vector_view v1, v2; + + /* update right hand side */ + + v1 = gsl_matrix_subcolumn(T, lu, 0, lu); + v2 = gsl_vector_subvector(w->work, 0, lu); + gsl_blas_daxpy(-x, &v1.vector, &v2.vector); + } /* if (l > 0) */ + } /* if (!complex_pair) */ + else + { + double x11, x21; + + /* + * 2-by-2 diagonal block + */ + + Tv = gsl_matrix_submatrix(T, lu - 1, lu - 1, 2, 2); + bv = gsl_vector_view_array(dat, 2); + gsl_vector_set(&bv.vector, 0, + gsl_vector_get(w->work, lu - 1)); + gsl_vector_set(&bv.vector, 1, + gsl_vector_get(w->work, lu)); + xv = gsl_vector_view_array(dat_X, 2); + + gsl_schur_solve_equation(1.0, + &Tv.matrix, + lambda_re, + 1.0, + 1.0, + &bv.vector, + &xv.vector, + &scale, + &xnorm, + smin); + + /* scale X(1,1) and X(2,1) to avoid overflow */ + x11 = gsl_vector_get(&xv.vector, 0); + x21 = gsl_vector_get(&xv.vector, 1); + + if (xnorm > 1.0) + { + double beta; + + beta = GSL_MAX(gsl_vector_get(w->work3, lu - 1), + gsl_vector_get(w->work3, lu)); + if (beta > bignum / xnorm) + { + x11 /= xnorm; + x21 /= xnorm; + scale /= xnorm; + } + } + + /* scale if necessary */ + if (scale != 1.0) + { + gsl_vector_view wv; + + wv = gsl_vector_subvector(w->work, 0, iu + 1); + gsl_blas_dscal(scale, &wv.vector); + } + + gsl_vector_set(w->work, lu - 1, x11); + gsl_vector_set(w->work, lu, x21); + + /* update right hand side */ + if (lu > 1) + { + gsl_vector_view v1, v2; + + v1 = gsl_matrix_subcolumn(T, lu - 1, 0, lu - 1); + v2 = gsl_vector_subvector(w->work, 0, lu - 1); + gsl_blas_daxpy(-x11, &v1.vector, &v2.vector); + + v1 = gsl_matrix_subcolumn(T, lu, 0, lu - 1); + gsl_blas_daxpy(-x21, &v1.vector, &v2.vector); + } + + --l; + } /* if (complex_pair) */ + } /* for (l = i - 1; l >= 0; --l) */ + + /* + * At this point, w->work is an eigenvector of the + * Schur form T. To get an eigenvector of the original + * matrix, we multiply on the left by Z, the matrix of + * Schur vectors + */ + + ecol = gsl_matrix_complex_column(evec, iu); + y = gsl_matrix_column(Z, iu); + + if (iu > 0) + { + gsl_vector_view x; + + Zv = gsl_matrix_submatrix(Z, 0, 0, N, iu); + + x = gsl_vector_subvector(w->work, 0, iu); + + /* compute Z * w->work and store it in Z(:,iu) */ + gsl_blas_dgemv(CblasNoTrans, + 1.0, + &Zv.matrix, + &x.vector, + gsl_vector_get(w->work, iu), + &y.vector); + } /* if (iu > 0) */ + + /* store eigenvector into evec */ + + ev = gsl_vector_complex_real(&ecol.vector); + ev2 = gsl_vector_complex_imag(&ecol.vector); + + scale = 0.0; + for (ii = 0; ii < N; ++ii) + { + double a = gsl_vector_get(&y.vector, ii); + + /* store real part of eigenvector */ + gsl_vector_set(&ev.vector, ii, a); + + /* set imaginary part to 0 */ + gsl_vector_set(&ev2.vector, ii, 0.0); + + if (fabs(a) > scale) + scale = fabs(a); + } + + if (scale != 0.0) + scale = 1.0 / scale; + + /* scale by magnitude of largest element */ + gsl_blas_dscal(scale, &ev.vector); + } /* if (GSL_IMAG(lambda) == 0.0) */ + else + { + gsl_vector_complex_view bv, xv; + size_t k; + int l; + gsl_complex lambda2; + + /* complex eigenvector */ + + /* + * Store the complex conjugate eigenvalues in the right + * slots in eval + */ + GSL_SET_REAL(&lambda2, GSL_REAL(lambda)); + GSL_SET_IMAG(&lambda2, -GSL_IMAG(lambda)); + gsl_vector_complex_set(eval, iu - 1, lambda); + gsl_vector_complex_set(eval, iu, lambda2); + + /* + * First solve: + * + * [ T(i:i+1,i:i+1) - lambda*I ] * X = 0 + */ + + if (fabs(gsl_matrix_get(T, iu - 1, iu)) >= + fabs(gsl_matrix_get(T, iu, iu - 1))) + { + gsl_vector_set(w->work, iu - 1, 1.0); + gsl_vector_set(w->work2, iu, + lambda_im / gsl_matrix_get(T, iu - 1, iu)); + } + else + { + gsl_vector_set(w->work, iu - 1, + -lambda_im / gsl_matrix_get(T, iu, iu - 1)); + gsl_vector_set(w->work2, iu, 1.0); + } + gsl_vector_set(w->work, iu, 0.0); + gsl_vector_set(w->work2, iu - 1, 0.0); + + /* construct right hand side */ + for (k = 0; k < iu - 1; ++k) + { + gsl_vector_set(w->work, k, + -gsl_vector_get(w->work, iu - 1) * + gsl_matrix_get(T, k, iu - 1)); + gsl_vector_set(w->work2, k, + -gsl_vector_get(w->work2, iu) * + gsl_matrix_get(T, k, iu)); + } + + /* + * We must solve the upper quasi-triangular system: + * + * [ T(1:i-2,1:i-2) - lambda*I ] * X = s*(work + i*work2) + */ + + for (l = i - 2; l >= 0; --l) + { + size_t lu = (size_t) l; + + if (lu == 0) + complex_pair = 0; + else + complex_pair = gsl_matrix_get(T, lu, lu - 1) != 0.0; + + if (!complex_pair) + { + gsl_complex bval; + gsl_complex x; + + /* + * 1-by-1 diagonal block - solve the system: + * + * (T_{ll} - lambda)*x = work + i*work2 + */ + + Tv = gsl_matrix_submatrix(T, lu, lu, 1, 1); + bv = gsl_vector_complex_view_array(dat, 1); + xv = gsl_vector_complex_view_array(dat_X, 1); + + GSL_SET_COMPLEX(&bval, + gsl_vector_get(w->work, lu), + gsl_vector_get(w->work2, lu)); + gsl_vector_complex_set(&bv.vector, 0, bval); + + gsl_schur_solve_equation_z(1.0, + &Tv.matrix, + &lambda, + 1.0, + 1.0, + &bv.vector, + &xv.vector, + &scale, + &xnorm, + smin); + + if (xnorm > 1.0) + { + if (gsl_vector_get(w->work3, lu) > bignum / xnorm) + { + gsl_blas_zdscal(1.0/xnorm, &xv.vector); + scale /= xnorm; + } + } + + /* scale if necessary */ + if (scale != 1.0) + { + gsl_vector_view wv; + + wv = gsl_vector_subvector(w->work, 0, iu + 1); + gsl_blas_dscal(scale, &wv.vector); + wv = gsl_vector_subvector(w->work2, 0, iu + 1); + gsl_blas_dscal(scale, &wv.vector); + } + + x = gsl_vector_complex_get(&xv.vector, 0); + gsl_vector_set(w->work, lu, GSL_REAL(x)); + gsl_vector_set(w->work2, lu, GSL_IMAG(x)); + + /* update the right hand side */ + if (lu > 0) + { + gsl_vector_view v1, v2; + + v1 = gsl_matrix_subcolumn(T, lu, 0, lu); + v2 = gsl_vector_subvector(w->work, 0, lu); + gsl_blas_daxpy(-GSL_REAL(x), &v1.vector, &v2.vector); + + v2 = gsl_vector_subvector(w->work2, 0, lu); + gsl_blas_daxpy(-GSL_IMAG(x), &v1.vector, &v2.vector); + } /* if (lu > 0) */ + } /* if (!complex_pair) */ + else + { + gsl_complex b1, b2, x1, x2; + + /* + * 2-by-2 diagonal block - solve the system + */ + + Tv = gsl_matrix_submatrix(T, lu - 1, lu - 1, 2, 2); + bv = gsl_vector_complex_view_array(dat, 2); + xv = gsl_vector_complex_view_array(dat_X, 2); + + GSL_SET_COMPLEX(&b1, + gsl_vector_get(w->work, lu - 1), + gsl_vector_get(w->work2, lu - 1)); + GSL_SET_COMPLEX(&b2, + gsl_vector_get(w->work, lu), + gsl_vector_get(w->work2, lu)); + gsl_vector_complex_set(&bv.vector, 0, b1); + gsl_vector_complex_set(&bv.vector, 1, b2); + + gsl_schur_solve_equation_z(1.0, + &Tv.matrix, + &lambda, + 1.0, + 1.0, + &bv.vector, + &xv.vector, + &scale, + &xnorm, + smin); + + x1 = gsl_vector_complex_get(&xv.vector, 0); + x2 = gsl_vector_complex_get(&xv.vector, 1); + + if (xnorm > 1.0) + { + double beta; + + beta = GSL_MAX(gsl_vector_get(w->work3, lu - 1), + gsl_vector_get(w->work3, lu)); + if (beta > bignum / xnorm) + { + gsl_blas_zdscal(1.0/xnorm, &xv.vector); + scale /= xnorm; + } + } + + /* scale if necessary */ + if (scale != 1.0) + { + gsl_vector_view wv; + + wv = gsl_vector_subvector(w->work, 0, iu + 1); + gsl_blas_dscal(scale, &wv.vector); + wv = gsl_vector_subvector(w->work2, 0, iu + 1); + gsl_blas_dscal(scale, &wv.vector); + } + gsl_vector_set(w->work, lu - 1, GSL_REAL(x1)); + gsl_vector_set(w->work, lu, GSL_REAL(x2)); + gsl_vector_set(w->work2, lu - 1, GSL_IMAG(x1)); + gsl_vector_set(w->work2, lu, GSL_IMAG(x2)); + + /* update right hand side */ + if (lu > 1) + { + gsl_vector_view v1, v2, v3, v4; + + v1 = gsl_matrix_subcolumn(T, lu - 1, 0, lu - 1); + v4 = gsl_matrix_subcolumn(T, lu, 0, lu - 1); + v2 = gsl_vector_subvector(w->work, 0, lu - 1); + v3 = gsl_vector_subvector(w->work2, 0, lu - 1); + + gsl_blas_daxpy(-GSL_REAL(x1), &v1.vector, &v2.vector); + gsl_blas_daxpy(-GSL_REAL(x2), &v4.vector, &v2.vector); + gsl_blas_daxpy(-GSL_IMAG(x1), &v1.vector, &v3.vector); + gsl_blas_daxpy(-GSL_IMAG(x2), &v4.vector, &v3.vector); + } /* if (lu > 1) */ + + --l; + } /* if (complex_pair) */ + } /* for (l = i - 2; l >= 0; --l) */ + + /* + * At this point, work + i*work2 is an eigenvector + * of T - backtransform to get an eigenvector of the + * original matrix + */ + + y = gsl_matrix_column(Z, iu - 1); + y2 = gsl_matrix_column(Z, iu); + + if (iu > 1) + { + gsl_vector_view x; + + /* compute real part of eigenvectors */ + + Zv = gsl_matrix_submatrix(Z, 0, 0, N, iu - 1); + x = gsl_vector_subvector(w->work, 0, iu - 1); + + gsl_blas_dgemv(CblasNoTrans, + 1.0, + &Zv.matrix, + &x.vector, + gsl_vector_get(w->work, iu - 1), + &y.vector); + + + /* now compute the imaginary part */ + x = gsl_vector_subvector(w->work2, 0, iu - 1); + + gsl_blas_dgemv(CblasNoTrans, + 1.0, + &Zv.matrix, + &x.vector, + gsl_vector_get(w->work2, iu), + &y2.vector); + } + else + { + gsl_blas_dscal(gsl_vector_get(w->work, iu - 1), &y.vector); + gsl_blas_dscal(gsl_vector_get(w->work2, iu), &y2.vector); + } + + /* + * Now store the eigenvectors into evec - the real parts + * are Z(:,iu - 1) and the imaginary parts are + * +/- Z(:,iu) + */ + + /* get views of the two eigenvector slots */ + ecol = gsl_matrix_complex_column(evec, iu - 1); + ecol2 = gsl_matrix_complex_column(evec, iu); + + /* + * save imaginary part first as it may get overwritten + * when copying the real part due to our storage scheme + * in Z/evec + */ + ev = gsl_vector_complex_imag(&ecol.vector); + ev2 = gsl_vector_complex_imag(&ecol2.vector); + scale = 0.0; + for (ii = 0; ii < N; ++ii) + { + double a = gsl_vector_get(&y2.vector, ii); + + scale = GSL_MAX(scale, + fabs(a) + fabs(gsl_vector_get(&y.vector, ii))); + + gsl_vector_set(&ev.vector, ii, a); + gsl_vector_set(&ev2.vector, ii, -a); + } + + /* now save the real part */ + ev = gsl_vector_complex_real(&ecol.vector); + ev2 = gsl_vector_complex_real(&ecol2.vector); + for (ii = 0; ii < N; ++ii) + { + double a = gsl_vector_get(&y.vector, ii); + + gsl_vector_set(&ev.vector, ii, a); + gsl_vector_set(&ev2.vector, ii, a); + } + + if (scale != 0.0) + scale = 1.0 / scale; + + /* scale by largest element magnitude */ + + gsl_blas_zdscal(scale, &ecol.vector); + gsl_blas_zdscal(scale, &ecol2.vector); + + /* + * decrement i since we took care of two eigenvalues at + * the same time + */ + --i; + } /* if (GSL_IMAG(lambda) != 0.0) */ + } /* for (i = (int) N - 1; i >= 0; --i) */ +} /* nonsymmv_get_right_eigenvectors() */ + +/* +nonsymmv_normalize_eigenvectors() + Normalize eigenvectors so that their Euclidean norm is 1 + +Inputs: eval - eigenvalues + evec - eigenvectors +*/ + +static void +nonsymmv_normalize_eigenvectors(gsl_vector_complex *eval, + gsl_matrix_complex *evec) +{ + const size_t N = evec->size1; + size_t i; /* looping */ + gsl_complex ei; + gsl_vector_complex_view vi; + gsl_vector_view re, im; + double scale; /* scaling factor */ + + for (i = 0; i < N; ++i) + { + ei = gsl_vector_complex_get(eval, i); + vi = gsl_matrix_complex_column(evec, i); + + re = gsl_vector_complex_real(&vi.vector); + + if (GSL_IMAG(ei) == 0.0) + { + scale = 1.0 / gsl_blas_dnrm2(&re.vector); + gsl_blas_dscal(scale, &re.vector); + } + else if (GSL_IMAG(ei) > 0.0) + { + im = gsl_vector_complex_imag(&vi.vector); + + scale = 1.0 / gsl_hypot(gsl_blas_dnrm2(&re.vector), + gsl_blas_dnrm2(&im.vector)); + gsl_blas_zdscal(scale, &vi.vector); + + vi = gsl_matrix_complex_column(evec, i + 1); + gsl_blas_zdscal(scale, &vi.vector); + } + } +} /* nonsymmv_normalize_eigenvectors() */ diff --git a/gsl-2.5/eigen/nonsymmv.lo b/gsl-2.5/eigen/nonsymmv.lo new file mode 100644 index 00000000..5631411d --- /dev/null +++ b/gsl-2.5/eigen/nonsymmv.lo @@ -0,0 +1,12 @@ +# nonsymmv.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/nonsymmv.o' + +# Name of the non-PIC object +non_pic_object='nonsymmv.o' + diff --git a/gsl-2.5/eigen/qrstep.c b/gsl-2.5/eigen/qrstep.c new file mode 100644 index 00000000..cab62892 --- /dev/null +++ b/gsl-2.5/eigen/qrstep.c @@ -0,0 +1,211 @@ +/* eigen/qrstep.c + * + * Copyright (C) 2007, 2010 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* remove off-diagonal elements which are neglegible compared with the + neighboring diagonal elements */ + +static void +chop_small_elements (const size_t N, const double d[], double sd[]) +{ + double d_i = d[0]; + + size_t i; + + for (i = 0; i < N - 1; i++) + { + double sd_i = sd[i]; + double d_ip1 = d[i + 1]; + + if (fabs (sd_i) < GSL_DBL_EPSILON * (fabs (d_i) + fabs (d_ip1))) + { + sd[i] = 0.0; + } + d_i = d_ip1; + } +} + +/* Generate a Givens rotation (cos,sin) which takes v=(x,y) to (|v|,0) + + From Golub and Van Loan, "Matrix Computations", Section 5.1.8 */ + +inline static void +create_givens (const double a, const double b, double *c, double *s) +{ + if (b == 0) + { + *c = 1; + *s = 0; + } + else if (fabs (b) > fabs (a)) + { + double t = -a / b; + double s1 = 1.0 / sqrt (1 + t * t); + *s = s1; + *c = s1 * t; + } + else + { + double t = -b / a; + double c1 = 1.0 / sqrt (1 + t * t); + *c = c1; + *s = c1 * t; + } +} + +inline static double +trailing_eigenvalue (const size_t n, const double d[], const double sd[]) +{ + double ta = d[n - 2]; + double tb = d[n - 1]; + double tab = sd[n - 2]; + + double dt = (ta - tb) / 2.0; + + double mu; + + if (dt > 0) + { + mu = tb - tab * (tab / (dt + hypot (dt, tab))); + } + else if (dt == 0) + { + mu = tb - fabs(tab); + } + else + { + mu = tb + tab * (tab / ((-dt) + hypot (dt, tab))); + } + + return mu; +} + +static void +qrstep (const size_t n, double d[], double sd[], double gc[], double gs[]) +{ + double x, z; + double ak, bk, zk, ap, bp, aq, bq; + size_t k; + + double mu = trailing_eigenvalue (n, d, sd); + + /* If mu is large relative to d_0 and sd_0 then the Givens rotation + will have no effect, leading to an infinite loop. + + We set mu to zero in this case, which at least diagonalises the + submatrix [d_0, sd_0 ; sd_0, d_0] and allows further progress. */ + + if (GSL_DBL_EPSILON * fabs(mu) > (fabs(d[0]) + fabs(sd[0]))) { + mu = 0; + } + + x = d[0] - mu; + z = sd[0]; + + ak = 0; + bk = 0; + zk = 0; + + ap = d[0]; + bp = sd[0]; + + aq = d[1]; + + if (n == 2) + { + double c, s; + create_givens (x, z, &c, &s); + + if (gc != NULL) + gc[0] = c; + if (gs != NULL) + gs[0] = s; + + { + double ap1 = c * (c * ap - s * bp) + s * (s * aq - c * bp); + double bp1 = c * (s * ap + c * bp) - s * (s * bp + c * aq); + + double aq1 = s * (s * ap + c * bp) + c * (s * bp + c * aq); + + ak = ap1; + bk = bp1; + + ap = aq1; + } + + d[0] = ak; + sd[0] = bk; + d[1] = ap; + + return; + } + + bq = sd[1]; + + for (k = 0; k < n - 1; k++) + { + double c, s; + create_givens (x, z, &c, &s); + + /* store Givens rotation */ + if (gc != NULL) + gc[k] = c; + if (gs != NULL) + gs[k] = s; + + /* compute G' T G */ + + { + double bk1 = c * bk - s * zk; + + double ap1 = c * (c * ap - s * bp) + s * (s * aq - c * bp); + double bp1 = c * (s * ap + c * bp) - s * (s * bp + c * aq); + double zp1 = -s * bq; + + double aq1 = s * (s * ap + c * bp) + c * (s * bp + c * aq); + double bq1 = c * bq; + + ak = ap1; + bk = bp1; + zk = zp1; + + ap = aq1; + bp = bq1; + + if (k < n - 2) + aq = d[k + 2]; + if (k < n - 3) + bq = sd[k + 2]; + + d[k] = ak; + + if (k > 0) + sd[k - 1] = bk1; + + if (k < n - 2) + sd[k + 1] = bp; + + x = bk; + z = zk; + } + } + + /* k = n - 1 */ + d[k] = ap; + sd[k - 1] = bk; +} diff --git a/gsl-2.5/eigen/schur.c b/gsl-2.5/eigen/schur.c new file mode 100644 index 00000000..977b8a8a --- /dev/null +++ b/gsl-2.5/eigen/schur.c @@ -0,0 +1,798 @@ +/* eigen/schur.c + * + * Copyright (C) 2006, 2007 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/* + * This module contains some routines related to manipulating the + * Schur form of a matrix which are needed by the eigenvalue solvers + * + * This file contains routines based on original code from LAPACK + * which is distributed under the modified BSD license. + */ + +#define GSL_SCHUR_SMLNUM (2.0 * GSL_DBL_MIN) +#define GSL_SCHUR_BIGNUM ((1.0 - GSL_DBL_EPSILON) / GSL_SCHUR_SMLNUM) + +/* +gsl_schur_gen_eigvals() + Compute the eigenvalues of a 2-by-2 generalized block. + +Inputs: A - 2-by-2 matrix + B - 2-by-2 upper triangular matrix + wr1 - (output) see notes + wr2 - (output) see notes + wi - (output) see notes + scale1 - (output) see notes + scale2 - (output) see notes + +Return: success + +Notes: + +1) + +If the block contains real eigenvalues, then wi is set to 0, +and wr1, wr2, scale1, and scale2 are set such that: + +eval1 = wr1 * scale1 +eval2 = wr2 * scale2 + +If the block contains complex eigenvalues, then wr1, wr2, scale1, +scale2, and wi are set such that: + +wr1 = wr2 = scale1 * Re(eval) +wi = scale1 * Im(eval) + +wi is always non-negative + +2) This routine is based on LAPACK DLAG2 +*/ + +int +gsl_schur_gen_eigvals(const gsl_matrix *A, const gsl_matrix *B, double *wr1, + double *wr2, double *wi, double *scale1, + double *scale2) +{ + const double safemin = GSL_DBL_MIN * 1.0e2; + const double safemax = 1.0 / safemin; + const double rtmin = sqrt(safemin); + const double rtmax = 1.0 / rtmin; + double anorm, bnorm; + double ascale, bscale, bsize; + double s1, s2; + double A11, A12, A21, A22; + double B11, B12, B22; + double binv11, binv22; + double bmin; + double as11, as12, as22, abi22; + double pp, qq, shift, ss, discr, r; + + /* scale A */ + anorm = GSL_MAX(GSL_MAX(fabs(gsl_matrix_get(A, 0, 0)) + + fabs(gsl_matrix_get(A, 1, 0)), + fabs(gsl_matrix_get(A, 0, 1)) + + fabs(gsl_matrix_get(A, 1, 1))), + safemin); + ascale = 1.0 / anorm; + A11 = ascale * gsl_matrix_get(A, 0, 0); + A12 = ascale * gsl_matrix_get(A, 0, 1); + A21 = ascale * gsl_matrix_get(A, 1, 0); + A22 = ascale * gsl_matrix_get(A, 1, 1); + + /* perturb B if necessary to ensure non-singularity */ + B11 = gsl_matrix_get(B, 0, 0); + B12 = gsl_matrix_get(B, 0, 1); + B22 = gsl_matrix_get(B, 1, 1); + bmin = rtmin * GSL_MAX(fabs(B11), + GSL_MAX(fabs(B12), GSL_MAX(fabs(B22), rtmin))); + if (fabs(B11) < bmin) + B11 = GSL_SIGN(B11) * bmin; + if (fabs(B22) < bmin) + B22 = GSL_SIGN(B22) * bmin; + + /* scale B */ + bnorm = GSL_MAX(fabs(B11), GSL_MAX(fabs(B12) + fabs(B22), safemin)); + bsize = GSL_MAX(fabs(B11), fabs(B22)); + bscale = 1.0 / bsize; + B11 *= bscale; + B12 *= bscale; + B22 *= bscale; + + /* compute larger eigenvalue */ + + binv11 = 1.0 / B11; + binv22 = 1.0 / B22; + s1 = A11 * binv11; + s2 = A22 * binv22; + if (fabs(s1) <= fabs(s2)) + { + as12 = A12 - s1 * B12; + as22 = A22 - s1 * B22; + ss = A21 * (binv11 * binv22); + abi22 = as22 * binv22 - ss * B12; + pp = 0.5 * abi22; + shift = s1; + } + else + { + as12 = A12 - s2 * B12; + as11 = A11 - s2 * B11; + ss = A21 * (binv11 * binv22); + abi22 = -ss * B12; + pp = 0.5 * (as11 * binv11 + abi22); + shift = s2; + } + + qq = ss * as12; + if (fabs(pp * rtmin) >= 1.0) + { + discr = (rtmin * pp) * (rtmin * pp) + qq * safemin; + r = sqrt(fabs(discr)) * rtmax; + } + else if (pp * pp + fabs(qq) <= safemin) + { + discr = (rtmax * pp) * (rtmax * pp) + qq * safemax; + r = sqrt(fabs(discr)) * rtmin; + } + else + { + discr = pp * pp + qq; + r = sqrt(fabs(discr)); + } + + if (discr >= 0.0 || r == 0.0) + { + double sum = pp + GSL_SIGN(pp) * r; + double diff = pp - GSL_SIGN(pp) * r; + double wbig = shift + sum; + double wsmall = shift + diff; + + /* compute smaller eigenvalue */ + + if (0.5 * fabs(wbig) > GSL_MAX(fabs(wsmall), safemin)) + { + double wdet = (A11*A22 - A12*A21) * (binv11 * binv22); + wsmall = wdet / wbig; + } + + /* choose (real) eigenvalue closest to 2,2 element of AB^{-1} for wr1 */ + if (pp > abi22) + { + *wr1 = GSL_MIN(wbig, wsmall); + *wr2 = GSL_MAX(wbig, wsmall); + } + else + { + *wr1 = GSL_MAX(wbig, wsmall); + *wr2 = GSL_MIN(wbig, wsmall); + } + *wi = 0.0; + } + else + { + /* complex eigenvalues */ + *wr1 = shift + pp; + *wr2 = *wr1; + *wi = r; + } + + /* compute scaling */ + { + const double fuzzy1 = 1.0 + 1.0e-5; + double c1, c2, c3, c4, c5; + double wabs, wsize, wscale; + + c1 = bsize * (safemin * GSL_MAX(1.0, ascale)); + c2 = safemin * GSL_MAX(1.0, bnorm); + c3 = bsize * safemin; + if (ascale <= 1.0 && bsize <= 1.0) + c4 = GSL_MIN(1.0, (ascale / safemin) * bsize); + else + c4 = 1.0; + + if (ascale <= 1.0 || bsize <= 1.0) + c5 = GSL_MIN(1.0, ascale * bsize); + else + c5 = 1.0; + + /* scale first eigenvalue */ + wabs = fabs(*wr1) + fabs(*wi); + wsize = GSL_MAX(safemin, + GSL_MAX(c1, + GSL_MAX(fuzzy1 * (wabs*c2 + c3), + GSL_MIN(c4, 0.5 * GSL_MAX(wabs, c5))))); + if (wsize != 1.0) + { + wscale = 1.0 / wsize; + if (wsize > 1.0) + { + *scale1 = (GSL_MAX(ascale, bsize) * wscale) * + GSL_MIN(ascale, bsize); + } + else + { + *scale1 = (GSL_MIN(ascale, bsize) * wscale) * + GSL_MAX(ascale, bsize); + } + + *wr1 *= wscale; + if (*wi != 0.0) + { + *wi *= wscale; + *wr2 = *wr1; + *scale2 = *scale1; + } + } + else + { + *scale1 = ascale * bsize; + *scale2 = *scale1; + } + + /* scale second eigenvalue if real */ + if (*wi == 0.0) + { + wsize = GSL_MAX(safemin, + GSL_MAX(c1, + GSL_MAX(fuzzy1 * (fabs(*wr2) * c2 + c3), + GSL_MIN(c4, 0.5 * GSL_MAX(fabs(*wr2), c5))))); + if (wsize != 1.0) + { + wscale = 1.0 / wsize; + if (wsize > 1.0) + { + *scale2 = (GSL_MAX(ascale, bsize) * wscale) * + GSL_MIN(ascale, bsize); + } + else + { + *scale2 = (GSL_MIN(ascale, bsize) * wscale) * + GSL_MAX(ascale, bsize); + } + + *wr2 *= wscale; + } + else + { + *scale2 = ascale * bsize; + } + } + } + + return GSL_SUCCESS; +} /* gsl_schur_gen_eigvals() */ + +/* +gsl_schur_solve_equation() + + Solve the equation which comes up in the back substitution +when computing eigenvectors corresponding to real eigenvalues. +The equation that is solved is: + +(ca*A - z*D)*x = s*b + +where + +A is n-by-n with n = 1 or 2 +D is a n-by-n diagonal matrix +b and x are n-by-1 real vectors +s is a scaling factor set by this function to prevent overflow in x + +Inputs: ca - coefficient multiplying A + A - square matrix (n-by-n) + z - real scalar (eigenvalue) + d1 - (1,1) element in diagonal matrix D + d2 - (2,2) element in diagonal matrix D + b - right hand side vector + x - (output) where to store solution + s - (output) scale factor + xnorm - (output) infinity norm of X + smin - lower bound on singular values of A - if ca*A - z*D + is less than this value, we'll use smin*I instead. + This value should be a safe distance above underflow. + +Return: success + +Notes: 1) A and b are not changed on output + 2) Based on lapack routine DLALN2 +*/ + +int +gsl_schur_solve_equation(double ca, const gsl_matrix *A, double z, + double d1, double d2, const gsl_vector *b, + gsl_vector *x, double *s, double *xnorm, + double smin) +{ + size_t N = A->size1; + double bnorm; + double scale = 1.0; + + if (N == 1) + { + double c, /* denominator */ + cnorm; /* |c| */ + + /* we have a 1-by-1 (real) scalar system to solve */ + + c = ca * gsl_matrix_get(A, 0, 0) - z * d1; + cnorm = fabs(c); + + if (cnorm < smin) + { + /* set c = smin*I */ + c = smin; + cnorm = smin; + } + + /* check scaling for x = b / c */ + bnorm = fabs(gsl_vector_get(b, 0)); + if (cnorm < 1.0 && bnorm > 1.0) + { + if (bnorm > GSL_SCHUR_BIGNUM*cnorm) + scale = 1.0 / bnorm; + } + + /* compute x */ + gsl_vector_set(x, 0, gsl_vector_get(b, 0) * scale / c); + *xnorm = fabs(gsl_vector_get(x, 0)); + } /* if (N == 1) */ + else + { + double cr[2][2]; + double *crv; + double cmax; + size_t icmax, j; + double bval1, bval2; + double ur11, ur12, ur22, ur11r; + double cr21, cr22; + double lr21; + double b1, b2, bbnd; + double x1, x2; + double temp; + size_t ipivot[4][4] = { { 0, 1, 2, 3 }, + { 1, 0, 3, 2 }, + { 2, 3, 0, 1 }, + { 3, 2, 1, 0 } }; + int rswap[4] = { 0, 1, 0, 1 }; + int zswap[4] = { 0, 0, 1, 1 }; + + /* + * we have a 2-by-2 real system to solve: + * + * ( ca * [ A11 A12 ] - z * [ D1 0 ] ) [ x1 ] = [ b1 ] + * ( [ A21 A22 ] [ 0 D2 ] ) [ x2 ] [ b2 ] + * + * (z real) + */ + + crv = (double *) cr; + + /* + * compute the real part of C = ca*A - z*D - use column ordering + * here since porting from lapack + */ + cr[0][0] = ca * gsl_matrix_get(A, 0, 0) - z * d1; + cr[1][1] = ca * gsl_matrix_get(A, 1, 1) - z * d2; + cr[0][1] = ca * gsl_matrix_get(A, 1, 0); + cr[1][0] = ca * gsl_matrix_get(A, 0, 1); + + /* find the largest element in C */ + cmax = 0.0; + icmax = 0; + for (j = 0; j < 4; ++j) + { + if (fabs(crv[j]) > cmax) + { + cmax = fabs(crv[j]); + icmax = j; + } + } + + bval1 = gsl_vector_get(b, 0); + bval2 = gsl_vector_get(b, 1); + + /* if norm(C) < smin, use smin*I */ + + if (cmax < smin) + { + bnorm = GSL_MAX(fabs(bval1), fabs(bval2)); + if (smin < 1.0 && bnorm > 1.0) + { + if (bnorm > GSL_SCHUR_BIGNUM*smin) + scale = 1.0 / bnorm; + } + temp = scale / smin; + gsl_vector_set(x, 0, temp * bval1); + gsl_vector_set(x, 1, temp * bval2); + *xnorm = temp * bnorm; + *s = scale; + return GSL_SUCCESS; + } + + /* gaussian elimination with complete pivoting */ + ur11 = crv[icmax]; + cr21 = crv[ipivot[1][icmax]]; + ur12 = crv[ipivot[2][icmax]]; + cr22 = crv[ipivot[3][icmax]]; + ur11r = 1.0 / ur11; + lr21 = ur11r * cr21; + ur22 = cr22 - ur12 * lr21; + + /* if smaller pivot < smin, use smin */ + if (fabs(ur22) < smin) + ur22 = smin; + + if (rswap[icmax]) + { + b1 = bval2; + b2 = bval1; + } + else + { + b1 = bval1; + b2 = bval2; + } + + b2 -= lr21 * b1; + bbnd = GSL_MAX(fabs(b1 * (ur22 * ur11r)), fabs(b2)); + if (bbnd > 1.0 && fabs(ur22) < 1.0) + { + if (bbnd >= GSL_SCHUR_BIGNUM * fabs(ur22)) + scale = 1.0 / bbnd; + } + + x2 = (b2 * scale) / ur22; + x1 = (scale * b1) * ur11r - x2 * (ur11r * ur12); + if (zswap[icmax]) + { + gsl_vector_set(x, 0, x2); + gsl_vector_set(x, 1, x1); + } + else + { + gsl_vector_set(x, 0, x1); + gsl_vector_set(x, 1, x2); + } + + *xnorm = GSL_MAX(fabs(x1), fabs(x2)); + + /* further scaling if norm(A) norm(X) > overflow */ + if (*xnorm > 1.0 && cmax > 1.0) + { + if (*xnorm > GSL_SCHUR_BIGNUM / cmax) + { + temp = cmax / GSL_SCHUR_BIGNUM; + gsl_blas_dscal(temp, x); + *xnorm *= temp; + scale *= temp; + } + } + } /* if (N == 2) */ + + *s = scale; + return GSL_SUCCESS; +} /* gsl_schur_solve_equation() */ + +/* +gsl_schur_solve_equation_z() + + Solve the equation which comes up in the back substitution +when computing eigenvectors corresponding to complex eigenvalues. +The equation that is solved is: + +(ca*A - z*D)*x = s*b + +where + +A is n-by-n with n = 1 or 2 +D is a n-by-n diagonal matrix +b and x are n-by-1 complex vectors +s is a scaling factor set by this function to prevent overflow in x + +Inputs: ca - coefficient multiplying A + A - square matrix (n-by-n) + z - complex scalar (eigenvalue) + d1 - (1,1) element in diagonal matrix D + d2 - (2,2) element in diagonal matrix D + b - right hand side vector + x - (output) where to store solution + s - (output) scale factor + xnorm - (output) infinity norm of X + smin - lower bound on singular values of A - if ca*A - z*D + is less than this value, we'll use smin*I instead. + This value should be a safe distance above underflow. + +Notes: 1) A and b are not changed on output + 2) Based on lapack routine DLALN2 +*/ + +int +gsl_schur_solve_equation_z(double ca, const gsl_matrix *A, gsl_complex *z, + double d1, double d2, + const gsl_vector_complex *b, + gsl_vector_complex *x, double *s, double *xnorm, + double smin) +{ + size_t N = A->size1; + double scale = 1.0; + double bnorm; + + if (N == 1) + { + double cr, /* denominator */ + ci, + cnorm; /* |c| */ + gsl_complex bval, c, xval, tmp; + + /* we have a 1-by-1 (complex) scalar system to solve */ + + /* c = ca*a - z*d1 */ + cr = ca * gsl_matrix_get(A, 0, 0) - GSL_REAL(*z) * d1; + ci = -GSL_IMAG(*z) * d1; + cnorm = fabs(cr) + fabs(ci); + + if (cnorm < smin) + { + /* set c = smin*I */ + cr = smin; + ci = 0.0; + cnorm = smin; + } + + /* check scaling for x = b / c */ + bval = gsl_vector_complex_get(b, 0); + bnorm = fabs(GSL_REAL(bval)) + fabs(GSL_IMAG(bval)); + if (cnorm < 1.0 && bnorm > 1.0) + { + if (bnorm > GSL_SCHUR_BIGNUM*cnorm) + scale = 1.0 / bnorm; + } + + /* compute x */ + GSL_SET_COMPLEX(&tmp, scale*GSL_REAL(bval), scale*GSL_IMAG(bval)); + GSL_SET_COMPLEX(&c, cr, ci); + xval = gsl_complex_div(tmp, c); + + gsl_vector_complex_set(x, 0, xval); + + *xnorm = fabs(GSL_REAL(xval)) + fabs(GSL_IMAG(xval)); + } /* if (N == 1) */ + else + { + double cr[2][2], ci[2][2]; + double *civ, *crv; + double cmax; + gsl_complex bval1, bval2; + gsl_complex xval1, xval2; + double xr1, xi1; + size_t icmax; + size_t j; + double temp; + double ur11, ur12, ur22, ui11, ui12, ui22, ur11r, ui11r; + double ur12s, ui12s; + double u22abs; + double lr21, li21; + double cr21, cr22, ci21, ci22; + double br1, bi1, br2, bi2, bbnd; + gsl_complex b1, b2; + size_t ipivot[4][4] = { { 0, 1, 2, 3 }, + { 1, 0, 3, 2 }, + { 2, 3, 0, 1 }, + { 3, 2, 1, 0 } }; + int rswap[4] = { 0, 1, 0, 1 }; + int zswap[4] = { 0, 0, 1, 1 }; + + /* + * complex 2-by-2 system: + * + * ( ca * [ A11 A12 ] - z * [ D1 0 ] ) [ X1 ] = [ B1 ] + * ( [ A21 A22 ] [ 0 D2] ) [ X2 ] [ B2 ] + * + * (z complex) + * + * where the X and B values are complex. + */ + + civ = (double *) ci; + crv = (double *) cr; + + /* + * compute the real part of C = ca*A - z*D - use column ordering + * here since porting from lapack + */ + cr[0][0] = ca*gsl_matrix_get(A, 0, 0) - GSL_REAL(*z)*d1; + cr[1][1] = ca*gsl_matrix_get(A, 1, 1) - GSL_REAL(*z)*d2; + cr[0][1] = ca*gsl_matrix_get(A, 1, 0); + cr[1][0] = ca*gsl_matrix_get(A, 0, 1); + + /* compute the imaginary part */ + ci[0][0] = -GSL_IMAG(*z) * d1; + ci[0][1] = 0.0; + ci[1][0] = 0.0; + ci[1][1] = -GSL_IMAG(*z) * d2; + + cmax = 0.0; + icmax = 0; + + for (j = 0; j < 4; ++j) + { + if (fabs(crv[j]) + fabs(civ[j]) > cmax) + { + cmax = fabs(crv[j]) + fabs(civ[j]); + icmax = j; + } + } + + bval1 = gsl_vector_complex_get(b, 0); + bval2 = gsl_vector_complex_get(b, 1); + + /* if norm(C) < smin, use smin*I */ + if (cmax < smin) + { + bnorm = GSL_MAX(fabs(GSL_REAL(bval1)) + fabs(GSL_IMAG(bval1)), + fabs(GSL_REAL(bval2)) + fabs(GSL_IMAG(bval2))); + if (smin < 1.0 && bnorm > 1.0) + { + if (bnorm > GSL_SCHUR_BIGNUM*smin) + scale = 1.0 / bnorm; + } + + temp = scale / smin; + xval1 = gsl_complex_mul_real(bval1, temp); + xval2 = gsl_complex_mul_real(bval2, temp); + gsl_vector_complex_set(x, 0, xval1); + gsl_vector_complex_set(x, 1, xval2); + *xnorm = temp * bnorm; + *s = scale; + return GSL_SUCCESS; + } + + /* gaussian elimination with complete pivoting */ + ur11 = crv[icmax]; + ui11 = civ[icmax]; + cr21 = crv[ipivot[1][icmax]]; + ci21 = civ[ipivot[1][icmax]]; + ur12 = crv[ipivot[2][icmax]]; + ui12 = civ[ipivot[2][icmax]]; + cr22 = crv[ipivot[3][icmax]]; + ci22 = civ[ipivot[3][icmax]]; + + if (icmax == 0 || icmax == 3) + { + /* off diagonals of pivoted C are real */ + if (fabs(ur11) > fabs(ui11)) + { + temp = ui11 / ur11; + ur11r = 1.0 / (ur11 * (1.0 + temp*temp)); + ui11r = -temp * ur11r; + } + else + { + temp = ur11 / ui11; + ui11r = -1.0 / (ui11 * (1.0 + temp*temp)); + ur11r = -temp*ui11r; + } + lr21 = cr21 * ur11r; + li21 = cr21 * ui11r; + ur12s = ur12 * ur11r; + ui12s = ur12 * ui11r; + ur22 = cr22 - ur12 * lr21; + ui22 = ci22 - ur12 * li21; + } + else + { + /* diagonals of pivoted C are real */ + ur11r = 1.0 / ur11; + ui11r = 0.0; + lr21 = cr21 * ur11r; + li21 = ci21 * ur11r; + ur12s = ur12 * ur11r; + ui12s = ui12 * ur11r; + ur22 = cr22 - ur12 * lr21 + ui12 * li21; + ui22 = -ur12 * li21 - ui12 * lr21; + } + + u22abs = fabs(ur22) + fabs(ui22); + + /* if smaller pivot < smin, use smin */ + if (u22abs < smin) + { + ur22 = smin; + ui22 = 0.0; + } + + if (rswap[icmax]) + { + br2 = GSL_REAL(bval1); + bi2 = GSL_IMAG(bval1); + br1 = GSL_REAL(bval2); + bi1 = GSL_IMAG(bval2); + } + else + { + br1 = GSL_REAL(bval1); + bi1 = GSL_IMAG(bval1); + br2 = GSL_REAL(bval2); + bi2 = GSL_IMAG(bval2); + } + + br2 += li21*bi1 - lr21*br1; + bi2 -= li21*br1 + lr21*bi1; + bbnd = GSL_MAX((fabs(br1) + fabs(bi1)) * + (u22abs * (fabs(ur11r) + fabs(ui11r))), + fabs(br2) + fabs(bi2)); + if (bbnd > 1.0 && u22abs < 1.0) + { + if (bbnd >= GSL_SCHUR_BIGNUM*u22abs) + { + scale = 1.0 / bbnd; + br1 *= scale; + bi1 *= scale; + br2 *= scale; + bi2 *= scale; + } + } + + GSL_SET_COMPLEX(&b1, br2, bi2); + GSL_SET_COMPLEX(&b2, ur22, ui22); + xval2 = gsl_complex_div(b1, b2); + + xr1 = ur11r*br1 - ui11r*bi1 - ur12s*GSL_REAL(xval2) + ui12s*GSL_IMAG(xval2); + xi1 = ui11r*br1 + ur11r*bi1 - ui12s*GSL_REAL(xval2) - ur12s*GSL_IMAG(xval2); + GSL_SET_COMPLEX(&xval1, xr1, xi1); + + if (zswap[icmax]) + { + gsl_vector_complex_set(x, 0, xval2); + gsl_vector_complex_set(x, 1, xval1); + } + else + { + gsl_vector_complex_set(x, 0, xval1); + gsl_vector_complex_set(x, 1, xval2); + } + + *xnorm = GSL_MAX(fabs(GSL_REAL(xval1)) + fabs(GSL_IMAG(xval1)), + fabs(GSL_REAL(xval2)) + fabs(GSL_IMAG(xval2))); + + /* further scaling if norm(A) norm(X) > overflow */ + if (*xnorm > 1.0 && cmax > 1.0) + { + if (*xnorm > GSL_SCHUR_BIGNUM / cmax) + { + temp = cmax / GSL_SCHUR_BIGNUM; + gsl_blas_zdscal(temp, x); + *xnorm *= temp; + scale *= temp; + } + } + } /* if (N == 2) */ + + *s = scale; + return GSL_SUCCESS; +} /* gsl_schur_solve_equation_z() */ diff --git a/gsl-2.5/eigen/schur.lo b/gsl-2.5/eigen/schur.lo new file mode 100644 index 00000000..9fd76f66 --- /dev/null +++ b/gsl-2.5/eigen/schur.lo @@ -0,0 +1,12 @@ +# schur.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/schur.o' + +# Name of the non-PIC object +non_pic_object='schur.o' + diff --git a/gsl-2.5/eigen/sort.c b/gsl-2.5/eigen/sort.c new file mode 100644 index 00000000..5557f221 --- /dev/null +++ b/gsl-2.5/eigen/sort.c @@ -0,0 +1,359 @@ +/* eigen/sort.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2006, 2007 Gerard Jungman, Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman, Modified: B. Gough. */ + +#include +#include +#include +#include +#include +#include + +/* Compares real parts of a and b and, if they are not approximately equal, + * returns Re(a) < Re(b); otherwise returns Im(a) < Im(b). */ +static int +complex_less(gsl_complex a, gsl_complex b) +{ + return gsl_fcmp(GSL_REAL(a), GSL_REAL(b), GSL_DBL_EPSILON) == 0 ? + GSL_IMAG(a) < GSL_IMAG(b) : GSL_REAL(a) < GSL_REAL(b); +} + +/* The eigen_sort below is not very good, but it is simple and + * self-contained. We can always implement an improved sort later. */ + +int +gsl_eigen_symmv_sort (gsl_vector * eval, gsl_matrix * evec, + gsl_eigen_sort_t sort_type) +{ + if (evec->size1 != evec->size2) + { + GSL_ERROR ("eigenvector matrix must be square", GSL_ENOTSQR); + } + else if (eval->size != evec->size1) + { + GSL_ERROR ("eigenvalues must match eigenvector matrix", GSL_EBADLEN); + } + else + { + const size_t N = eval->size; + size_t i; + + for (i = 0; i < N - 1; i++) + { + size_t j; + size_t k = i; + + double ek = gsl_vector_get (eval, i); + + /* search for something to swap */ + for (j = i + 1; j < N; j++) + { + int test; + const double ej = gsl_vector_get (eval, j); + + switch (sort_type) + { + case GSL_EIGEN_SORT_VAL_ASC: + test = (ej < ek); + break; + case GSL_EIGEN_SORT_VAL_DESC: + test = (ej > ek); + break; + case GSL_EIGEN_SORT_ABS_ASC: + test = (fabs (ej) < fabs (ek)); + break; + case GSL_EIGEN_SORT_ABS_DESC: + test = (fabs (ej) > fabs (ek)); + break; + default: + GSL_ERROR ("unrecognized sort type", GSL_EINVAL); + } + + if (test) + { + k = j; + ek = ej; + } + } + + if (k != i) + { + /* swap eigenvalues */ + gsl_vector_swap_elements (eval, i, k); + + /* swap eigenvectors */ + gsl_matrix_swap_columns (evec, i, k); + } + } + + return GSL_SUCCESS; + } +} + + +int +gsl_eigen_hermv_sort (gsl_vector * eval, gsl_matrix_complex * evec, + gsl_eigen_sort_t sort_type) +{ + if (evec->size1 != evec->size2) + { + GSL_ERROR ("eigenvector matrix must be square", GSL_ENOTSQR); + } + else if (eval->size != evec->size1) + { + GSL_ERROR ("eigenvalues must match eigenvector matrix", GSL_EBADLEN); + } + else + { + const size_t N = eval->size; + size_t i; + + for (i = 0; i < N - 1; i++) + { + size_t j; + size_t k = i; + + double ek = gsl_vector_get (eval, i); + + /* search for something to swap */ + for (j = i + 1; j < N; j++) + { + int test; + const double ej = gsl_vector_get (eval, j); + + switch (sort_type) + { + case GSL_EIGEN_SORT_VAL_ASC: + test = (ej < ek); + break; + case GSL_EIGEN_SORT_VAL_DESC: + test = (ej > ek); + break; + case GSL_EIGEN_SORT_ABS_ASC: + test = (fabs (ej) < fabs (ek)); + break; + case GSL_EIGEN_SORT_ABS_DESC: + test = (fabs (ej) > fabs (ek)); + break; + default: + GSL_ERROR ("unrecognized sort type", GSL_EINVAL); + } + + if (test) + { + k = j; + ek = ej; + } + } + + if (k != i) + { + /* swap eigenvalues */ + gsl_vector_swap_elements (eval, i, k); + + /* swap eigenvectors */ + gsl_matrix_complex_swap_columns (evec, i, k); + } + } + + return GSL_SUCCESS; + } +} + +int +gsl_eigen_nonsymmv_sort (gsl_vector_complex * eval, + gsl_matrix_complex * evec, + gsl_eigen_sort_t sort_type) +{ + if (evec && (evec->size1 != evec->size2)) + { + GSL_ERROR ("eigenvector matrix must be square", GSL_ENOTSQR); + } + else if (evec && (eval->size != evec->size1)) + { + GSL_ERROR ("eigenvalues must match eigenvector matrix", GSL_EBADLEN); + } + else + { + const size_t N = eval->size; + size_t i; + + for (i = 0; i < N - 1; i++) + { + size_t j; + size_t k = i; + + gsl_complex ek = gsl_vector_complex_get (eval, i); + + /* search for something to swap */ + for (j = i + 1; j < N; j++) + { + int test; + const gsl_complex ej = gsl_vector_complex_get (eval, j); + + switch (sort_type) + { + case GSL_EIGEN_SORT_ABS_ASC: + test = (gsl_complex_abs (ej) < gsl_complex_abs (ek)); + break; + case GSL_EIGEN_SORT_ABS_DESC: + test = (gsl_complex_abs (ej) > gsl_complex_abs (ek)); + break; + case GSL_EIGEN_SORT_VAL_ASC: + test = complex_less(ej, ek); + break; + case GSL_EIGEN_SORT_VAL_DESC: + test = complex_less(ek, ej); + break; + default: + GSL_ERROR ("invalid sort type", GSL_EINVAL); + } + + if (test) + { + k = j; + ek = ej; + } + } + + if (k != i) + { + /* swap eigenvalues */ + gsl_vector_complex_swap_elements (eval, i, k); + + /* swap eigenvectors */ + if (evec) + gsl_matrix_complex_swap_columns (evec, i, k); + } + } + + return GSL_SUCCESS; + } +} + +int +gsl_eigen_gensymmv_sort (gsl_vector * eval, gsl_matrix * evec, + gsl_eigen_sort_t sort_type) +{ + int s; + + s = gsl_eigen_symmv_sort(eval, evec, sort_type); + + return s; +} + +int +gsl_eigen_genhermv_sort (gsl_vector * eval, gsl_matrix_complex * evec, + gsl_eigen_sort_t sort_type) +{ + int s; + + s = gsl_eigen_hermv_sort(eval, evec, sort_type); + + return s; +} + +int +gsl_eigen_genv_sort (gsl_vector_complex * alpha, gsl_vector * beta, + gsl_matrix_complex * evec, gsl_eigen_sort_t sort_type) +{ + if (evec->size1 != evec->size2) + { + GSL_ERROR ("eigenvector matrix must be square", GSL_ENOTSQR); + } + else if (alpha->size != evec->size1 || beta->size != evec->size1) + { + GSL_ERROR ("eigenvalues must match eigenvector matrix", GSL_EBADLEN); + } + else + { + const size_t N = alpha->size; + size_t i; + + for (i = 0; i < N - 1; i++) + { + size_t j; + size_t k = i; + + gsl_complex ak = gsl_vector_complex_get (alpha, i); + double bk = gsl_vector_get(beta, i); + gsl_complex ek; + + if (bk < GSL_DBL_EPSILON) + { + GSL_SET_COMPLEX(&ek, + GSL_SIGN(GSL_REAL(ak)) ? GSL_POSINF : GSL_NEGINF, + GSL_SIGN(GSL_IMAG(ak)) ? GSL_POSINF : GSL_NEGINF); + } + else + ek = gsl_complex_div_real(ak, bk); + + /* search for something to swap */ + for (j = i + 1; j < N; j++) + { + int test; + const gsl_complex aj = gsl_vector_complex_get (alpha, j); + double bj = gsl_vector_get(beta, j); + gsl_complex ej; + + if (bj < GSL_DBL_EPSILON) + { + GSL_SET_COMPLEX(&ej, + GSL_SIGN(GSL_REAL(aj)) ? GSL_POSINF : GSL_NEGINF, + GSL_SIGN(GSL_IMAG(aj)) ? GSL_POSINF : GSL_NEGINF); + } + else + ej = gsl_complex_div_real(aj, bj); + + switch (sort_type) + { + case GSL_EIGEN_SORT_ABS_ASC: + test = (gsl_complex_abs (ej) < gsl_complex_abs (ek)); + break; + case GSL_EIGEN_SORT_ABS_DESC: + test = (gsl_complex_abs (ej) > gsl_complex_abs (ek)); + break; + case GSL_EIGEN_SORT_VAL_ASC: + case GSL_EIGEN_SORT_VAL_DESC: + default: + GSL_ERROR ("invalid sort type", GSL_EINVAL); + } + + if (test) + { + k = j; + ek = ej; + } + } + + if (k != i) + { + /* swap eigenvalues */ + gsl_vector_complex_swap_elements (alpha, i, k); + gsl_vector_swap_elements (beta, i, k); + + /* swap eigenvectors */ + gsl_matrix_complex_swap_columns (evec, i, k); + } + } + + return GSL_SUCCESS; + } +} diff --git a/gsl-2.5/eigen/sort.lo b/gsl-2.5/eigen/sort.lo new file mode 100644 index 00000000..b306ad25 --- /dev/null +++ b/gsl-2.5/eigen/sort.lo @@ -0,0 +1,12 @@ +# sort.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/sort.o' + +# Name of the non-PIC object +non_pic_object='sort.o' + diff --git a/gsl-2.5/eigen/symm.c b/gsl-2.5/eigen/symm.c new file mode 100644 index 00000000..2a14e745 --- /dev/null +++ b/gsl-2.5/eigen/symm.c @@ -0,0 +1,184 @@ +/* eigen/symm.c + * + * Copyright (C) 2001, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include +#include + +/* Compute eigenvalues/eigenvectors of real symmetric matrix using + reduction to tridiagonal form, followed by QR iteration with + implicit shifts. + + See Golub & Van Loan, "Matrix Computations" (3rd ed), Section 8.3 + */ + +#include "qrstep.c" + +gsl_eigen_symm_workspace * +gsl_eigen_symm_alloc (const size_t n) +{ + gsl_eigen_symm_workspace *w; + + if (n == 0) + { + GSL_ERROR_NULL ("matrix dimension must be positive integer", + GSL_EINVAL); + } + + w = ((gsl_eigen_symm_workspace *) + malloc (sizeof (gsl_eigen_symm_workspace))); + + if (w == 0) + { + GSL_ERROR_NULL ("failed to allocate space for workspace", GSL_ENOMEM); + } + + w->d = (double *) malloc (n * sizeof (double)); + + if (w->d == 0) + { + GSL_ERROR_NULL ("failed to allocate space for diagonal", GSL_ENOMEM); + } + + w->sd = (double *) malloc (n * sizeof (double)); + + if (w->sd == 0) + { + GSL_ERROR_NULL ("failed to allocate space for subdiagonal", GSL_ENOMEM); + } + + w->size = n; + + return w; +} + +void +gsl_eigen_symm_free (gsl_eigen_symm_workspace * w) +{ + RETURN_IF_NULL (w); + free (w->sd); + free (w->d); + free (w); +} + + +int +gsl_eigen_symm (gsl_matrix * A, gsl_vector * eval, + gsl_eigen_symm_workspace * w) +{ + if (A->size1 != A->size2) + { + GSL_ERROR ("matrix must be square to compute eigenvalues", GSL_ENOTSQR); + } + else if (eval->size != A->size1) + { + GSL_ERROR ("eigenvalue vector must match matrix size", GSL_EBADLEN); + } + else if (A->size1 != w->size) + { + GSL_ERROR ("matrix does not match workspace", GSL_EBADLEN); + } + else + { + const size_t N = A->size1; + double *const d = w->d; + double *const sd = w->sd; + + size_t a, b; + + /* handle special case */ + + if (N == 1) + { + double A00 = gsl_matrix_get (A, 0, 0); + gsl_vector_set (eval, 0, A00); + return GSL_SUCCESS; + } + + /* use sd as the temporary workspace for the decomposition, + since we can discard the tau result immediately if we are not + computing eigenvectors */ + + { + gsl_vector_view d_vec = gsl_vector_view_array (d, N); + gsl_vector_view sd_vec = gsl_vector_view_array (sd, N - 1); + gsl_vector_view tau = gsl_vector_view_array (sd, N - 1); + gsl_linalg_symmtd_decomp (A, &tau.vector); + gsl_linalg_symmtd_unpack_T (A, &d_vec.vector, &sd_vec.vector); + } + + /* Make an initial pass through the tridiagonal decomposition + to remove off-diagonal elements which are effectively zero */ + + chop_small_elements (N, d, sd); + + /* Progressively reduce the matrix until it is diagonal */ + + b = N - 1; + + while (b > 0) + { + if (sd[b - 1] == 0.0 || isnan(sd[b - 1])) + { + b--; + continue; + } + + /* Find the largest unreduced block (a,b) starting from b + and working backwards */ + + a = b - 1; + + while (a > 0) + { + if (sd[a - 1] == 0.0) + { + break; + } + a--; + } + + { + const size_t n_block = b - a + 1; + double *d_block = d + a; + double *sd_block = sd + a; + + /* apply QR reduction with implicit deflation to the + unreduced block */ + + qrstep (n_block, d_block, sd_block, NULL, NULL); + + /* remove any small off-diagonal elements */ + + chop_small_elements (n_block, d_block, sd_block); + } + } + + { + gsl_vector_view d_vec = gsl_vector_view_array (d, N); + gsl_vector_memcpy (eval, &d_vec.vector); + } + + return GSL_SUCCESS; + } +} diff --git a/gsl-2.5/eigen/symm.lo b/gsl-2.5/eigen/symm.lo new file mode 100644 index 00000000..30adc6b8 --- /dev/null +++ b/gsl-2.5/eigen/symm.lo @@ -0,0 +1,12 @@ +# symm.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/symm.o' + +# Name of the non-PIC object +non_pic_object='symm.o' + diff --git a/gsl-2.5/eigen/symmv.c b/gsl-2.5/eigen/symmv.c new file mode 100644 index 00000000..f220a654 --- /dev/null +++ b/gsl-2.5/eigen/symmv.c @@ -0,0 +1,216 @@ +/* eigen/symmv.c + * + * Copyright (C) 2001, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include +#include + +/* Compute eigenvalues/eigenvectors of real symmetric matrix using + reduction to tridiagonal form, followed by QR iteration with + implicit shifts. + + See Golub & Van Loan, "Matrix Computations" (3rd ed), Section 8.3 + */ + +#include "qrstep.c" + +gsl_eigen_symmv_workspace * +gsl_eigen_symmv_alloc (const size_t n) +{ + gsl_eigen_symmv_workspace * w ; + + if (n == 0) + { + GSL_ERROR_NULL ("matrix dimension must be positive integer", GSL_EINVAL); + } + + w= ((gsl_eigen_symmv_workspace *) malloc (sizeof(gsl_eigen_symmv_workspace))); + + if (w == 0) + { + GSL_ERROR_NULL ("failed to allocate space for workspace", GSL_ENOMEM); + } + + w->d = (double *) malloc (n * sizeof (double)); + + if (w->d == 0) + { + GSL_ERROR_NULL ("failed to allocate space for diagonal", GSL_ENOMEM); + } + + w->sd = (double *) malloc (n * sizeof (double)); + + if (w->sd == 0) + { + GSL_ERROR_NULL ("failed to allocate space for subdiagonal", GSL_ENOMEM); + } + + w->gc = (double *) malloc (n * sizeof (double)); + + if (w->gc == 0) + { + GSL_ERROR_NULL ("failed to allocate space for cosines", GSL_ENOMEM); + } + + w->gs = (double *) malloc (n * sizeof (double)); + + if (w->gs == 0) + { + GSL_ERROR_NULL ("failed to allocate space for sines", GSL_ENOMEM); + } + + w->size = n; + + return w; +} + +void +gsl_eigen_symmv_free (gsl_eigen_symmv_workspace * w) +{ + RETURN_IF_NULL (w); + free(w->gs); + free(w->gc); + free(w->sd); + free(w->d); + free(w); +} + + +int +gsl_eigen_symmv (gsl_matrix * A, gsl_vector * eval, gsl_matrix * evec, + gsl_eigen_symmv_workspace * w) +{ + if (A->size1 != A->size2) + { + GSL_ERROR ("matrix must be square to compute eigenvalues", GSL_ENOTSQR); + } + else if (eval->size != A->size1) + { + GSL_ERROR ("eigenvalue vector must match matrix size", GSL_EBADLEN); + } + else if (evec->size1 != A->size1 || evec->size2 != A->size1) + { + GSL_ERROR ("eigenvector matrix must match matrix size", GSL_EBADLEN); + } + else + { + double *const d = w->d; + double *const sd = w->sd; + const size_t N = A->size1; + size_t a, b; + + /* handle special case */ + + if (N == 1) + { + double A00 = gsl_matrix_get (A, 0, 0); + gsl_vector_set (eval, 0, A00); + gsl_matrix_set (evec, 0, 0, 1.0); + return GSL_SUCCESS; + } + + /* use sd as the temporary workspace for the decomposition when + computing eigenvectors */ + + { + gsl_vector_view d_vec = gsl_vector_view_array (d, N); + gsl_vector_view sd_vec = gsl_vector_view_array (sd, N - 1); + gsl_vector_view tau = gsl_vector_view_array (sd, N - 1); + gsl_linalg_symmtd_decomp (A, &tau.vector); + gsl_linalg_symmtd_unpack (A, &tau.vector, evec, &d_vec.vector, &sd_vec.vector); + } + + /* Make an initial pass through the tridiagonal decomposition + to remove off-diagonal elements which are effectively zero */ + + chop_small_elements (N, d, sd); + + /* Progressively reduce the matrix until it is diagonal */ + + b = N - 1; + + while (b > 0) + { + if (sd[b - 1] == 0.0 || isnan(sd[b - 1])) + { + b--; + continue; + } + + /* Find the largest unreduced block (a,b) starting from b + and working backwards */ + + a = b - 1; + + while (a > 0) + { + if (sd[a - 1] == 0.0) + { + break; + } + a--; + } + + { + size_t i; + const size_t n_block = b - a + 1; + double *d_block = d + a; + double *sd_block = sd + a; + double * const gc = w->gc; + double * const gs = w->gs; + + /* apply QR reduction with implicit deflation to the + unreduced block */ + + qrstep (n_block, d_block, sd_block, gc, gs); + + /* Apply Givens rotation Gij(c,s) to matrix Q, Q <- Q G */ + + for (i = 0; i < n_block - 1; i++) + { + const double c = gc[i], s = gs[i]; + size_t k; + + for (k = 0; k < N; k++) + { + double qki = gsl_matrix_get (evec, k, a + i); + double qkj = gsl_matrix_get (evec, k, a + i + 1); + gsl_matrix_set (evec, k, a + i, qki * c - qkj * s); + gsl_matrix_set (evec, k, a + i + 1, qki * s + qkj * c); + } + } + + /* remove any small off-diagonal elements */ + + chop_small_elements (N, d, sd); + } + } + + { + gsl_vector_view d_vec = gsl_vector_view_array (d, N); + gsl_vector_memcpy (eval, &d_vec.vector); + } + + return GSL_SUCCESS; + } +} diff --git a/gsl-2.5/eigen/symmv.lo b/gsl-2.5/eigen/symmv.lo new file mode 100644 index 00000000..87bbdd87 --- /dev/null +++ b/gsl-2.5/eigen/symmv.lo @@ -0,0 +1,12 @@ +# symmv.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/symmv.o' + +# Name of the non-PIC object +non_pic_object='symmv.o' + diff --git a/gsl-2.5/eigen/test b/gsl-2.5/eigen/test new file mode 100755 index 00000000..f0c95866 --- /dev/null +++ b/gsl-2.5/eigen/test @@ -0,0 +1,228 @@ +#! /bin/sh + +# test - temporary wrapper script for .libs/test +# Generated by libtool (GNU libtool) 2.4.2 +# +# The test program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s/\([`"$\\]\)/\\\1/g' + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command="(cd /home/groups/kipac/chto/package/gsl/gsl-2.5/eigen; LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LIBRARY_PATH; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; LD_LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/fftw/include:/home/users/chto/lib/fftw/lib:/home/users/chto/lib/healpix/lib:/home/users/chto/lib/namaster/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/include:/home/users/chto/cpp/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LD_LIBRARY_PATH; PATH=/share/software/user/open/curl/7.54.0/bin:/share/software/user/open/libressl/2.5.3/bin:/home/users/chto/lib/cfitsio:/home/users/chto/lib/cfitsio/include:/home/users/chto/lib:/home/users/chto/bin/bin:/home/users/chto/bin:/home/users/chto/.texlive/bin/x86_64-linux:/home/groups/kipac/chto/anaconda2/envs/newenv3/bin:/home/users/chto/.local/bin/include:/home/users/chto/.local/bin/lib:/home/users/chto/.local/bin:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/bin64:/share/software/user/open/fftw/3.3.6/bin:/home/groups/kipac/chto/anaconda2/condabin:/share/software/user/restricted/ifort/2019/bin:/share/software/user/open/gsl/2.3/bin:/share/software/user/srcc/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/dell/srvadmin/bin:/opt/dell/srvadmin/iSM/bin:/home/users/chto/bin; export PATH; gcc -g -O2 -o \$progdir/\$file test.o ./.libs/libgsleigen.a ../test/.libs/libgsltest.a ../linalg/.libs/libgsllinalg.a ../permutation/.libs/libgslpermutation.a ../blas/.libs/libgslblas.a ../cblas/.libs/libgslcblas.so ../matrix/.libs/libgslmatrix.a ../vector/.libs/libgslvector.a ../block/.libs/libgslblock.a ../complex/.libs/libgslcomplex.a ../ieee-utils/.libs/libgslieeeutils.a ../sys/.libs/libgslsys.a ../err/.libs/libgslerr.a ../utils/.libs/libutils.a ../rng/.libs/libgslrng.a ../sort/.libs/libgslsort.a -lm -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/cblas/.libs -Wl,-rpath -Wl,/usr/local/lib)" + +# This environment variable determines our operation mode. +if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then + # install mode needs the following variables: + generated_by_libtool_version='2.4.2' + notinst_deplibs=' ../cblas/libgslcblas.la' +else + # When we are sourced in execute mode, $file and $ECHO are already set. + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + file="$0" + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + ECHO="printf %s\\n" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ which is used only on +# windows platforms, and (c) all begin with the string --lt- +# (application programs are unlikely to have options which match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's ../libtool value, followed by no. +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=$0 + shift + for lt_opt + do + case "$lt_opt" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%/[^/]*$%%'` + test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=. + lt_dump_F=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%^.*/%%'` + cat "$lt_dump_D/$lt_dump_F" + exit 0 + ;; + --lt-*) + $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n "$lt_option_debug"; then + echo "test:test:${LINENO}: libtool wrapper (GNU libtool) 2.4.2" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + $ECHO "test:test:${LINENO}: newargv[$lt_dump_args_N]: $lt_arg" + lt_dump_args_N=`expr $lt_dump_args_N + 1` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ + + if test -n "$lt_option_debug"; then + $ECHO "test:test:${LINENO}: newargv[0]: $progdir/$program" 1>&2 + func_lt_dump_args ${1+"$@"} 1>&2 + fi + exec "$progdir/$program" ${1+"$@"} + + $ECHO "$0: cannot exec $program $*" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from $@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case " $* " in + *\ --lt-*) + for lt_wr_arg + do + case $lt_wr_arg in + --lt-*) ;; + *) set x "$@" "$lt_wr_arg"; shift;; + esac + shift + done ;; + esac + func_exec_program_core ${1+"$@"} +} + + # Parse options + func_parse_lt_options "$0" ${1+"$@"} + + # Find the directory that this script lives in. + thisdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + test "x$thisdir" = "x$file" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=`ls -ld "$file" | /usr/bin/sed -n 's/.*-> //p'` + while test -n "$file"; do + destdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + + # If there was a directory component, then change thisdir. + if test "x$destdir" != "x$file"; then + case "$destdir" in + [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;; + *) thisdir="$thisdir/$destdir" ;; + esac + fi + + file=`$ECHO "$file" | /usr/bin/sed 's%^.*/%%'` + file=`ls -ld "$thisdir/$file" | /usr/bin/sed -n 's/.*-> //p'` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no + if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then + # special case for '.' + if test "$thisdir" = "."; then + thisdir=`pwd` + fi + # remove .libs from thisdir + case "$thisdir" in + *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /usr/bin/sed 's%[\\/][^\\/]*$%%'` ;; + .libs ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=`cd "$thisdir" && pwd` + test -n "$absdir" && thisdir="$absdir" + + program=lt-'test' + progdir="$thisdir/.libs" + + if test ! -f "$progdir/$program" || + { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /usr/bin/sed 1q`; \ + test "X$file" != "X$progdir/$program"; }; then + + file="$$-$program" + + if test ! -d "$progdir"; then + mkdir "$progdir" + else + rm -f "$progdir/$file" + fi + + # relink executable if necessary + if test -n "$relink_command"; then + if relink_command_output=`eval $relink_command 2>&1`; then : + else + printf %s\n "$relink_command_output" >&2 + rm -f "$progdir/$file" + exit 1 + fi + fi + + mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null || + { rm -f "$progdir/$program"; + mv -f "$progdir/$file" "$progdir/$program"; } + rm -f "$progdir/$file" + fi + + if test -f "$progdir/$program"; then + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + # Run the actual program with our arguments. + func_exec_program ${1+"$@"} + fi + else + # The program doesn't exist. + $ECHO "$0: error: \`$progdir/$program' does not exist" 1>&2 + $ECHO "This script is just a wrapper for $program." 1>&2 + $ECHO "See the libtool documentation for more information." 1>&2 + exit 1 + fi +fi diff --git a/gsl-2.5/eigen/test-suite.log b/gsl-2.5/eigen/test-suite.log new file mode 100644 index 00000000..cc0971f2 --- /dev/null +++ b/gsl-2.5/eigen/test-suite.log @@ -0,0 +1,14 @@ +=================================== + gsl 2.5: eigen/test-suite.log +=================================== + +# TOTAL: 1 +# PASS: 1 +# SKIP: 0 +# XFAIL: 0 +# FAIL: 0 +# XPASS: 0 +# ERROR: 0 + +.. contents:: :depth: 2 + diff --git a/gsl-2.5/eigen/test.c b/gsl-2.5/eigen/test.c new file mode 100644 index 00000000..0cc291a3 --- /dev/null +++ b/gsl-2.5/eigen/test.c @@ -0,0 +1,1342 @@ +/* eigen/test.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2006, 2007 Gerard Jungman, Patrick Alken, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/****************************************** + * common test code * + ******************************************/ + +double +chop_subnormals (double x) +{ + /* Chop any subnormal values */ + return fabs(x) < GSL_DBL_MIN ? 0 : x; +} + +void +create_random_symm_matrix(gsl_matrix *m, gsl_rng *r, int lower, int upper) +{ + size_t i, j; + + for (i = 0; i < m->size1; ++i) + { + for (j = i; j < m->size2; ++j) + { + double x = gsl_rng_uniform(r) * (upper - lower) + lower; + gsl_matrix_set(m, i, j, x); + gsl_matrix_set(m, j, i, x); + } + } +} /* create_random_symm_matrix() */ + +void +create_random_herm_matrix(gsl_matrix_complex *m, gsl_rng *r, int lower, + int upper) +{ + size_t i, j; + + for (i = 0; i < m->size1; ++i) + { + for (j = i; j < m->size2; ++j) + { + gsl_complex z; + + GSL_REAL(z) = gsl_rng_uniform(r) * (upper - lower) + lower; + + if (i == j) + GSL_IMAG(z) = 0.0; + else + GSL_IMAG(z) = gsl_rng_uniform(r) * (upper - lower) + lower; + + gsl_matrix_complex_set(m, i, j, z); + gsl_matrix_complex_set(m, j, i, gsl_complex_conjugate(z)); + } + } +} /* create_random_herm_matrix() */ + +/* with r \in (0,1) if m_{ij} = r^{|i - j|} then m is positive definite */ +void +create_random_posdef_matrix(gsl_matrix *m, gsl_rng *r) +{ + size_t i, j; + double x = gsl_rng_uniform(r); + + for (i = 0; i < m->size1; ++i) + { + for (j = i; j < m->size2; ++j) + { + double a = pow(x, (double) (j - i)); + + gsl_matrix_set(m, i, j, a); + gsl_matrix_set(m, j, i, a); + } + } +} /* create_random_posdef_matrix() */ + +void +create_random_complex_posdef_matrix(gsl_matrix_complex *m, gsl_rng *r, + gsl_vector_complex *work) +{ + const size_t N = m->size1; + size_t i, j; + double x, y; + gsl_complex z; + gsl_complex tau; + + GSL_SET_IMAG(&z, 0.0); + + /* make a positive diagonal matrix */ + gsl_matrix_complex_set_zero(m); + for (i = 0; i < N; ++i) + { + x = gsl_rng_uniform(r); + GSL_SET_REAL(&z, x); + gsl_matrix_complex_set(m, i, i, z); + } + + /* now generate random householder reflections and form P D P^H */ + for (i = 0; i < N; ++i) + { + /* form complex vector */ + for (j = 0; j < N; ++j) + { + x = 2.0 * gsl_rng_uniform(r) - 1.0; + y = 2.0 * gsl_rng_uniform(r) - 1.0; + GSL_SET_COMPLEX(&z, x, y); + gsl_vector_complex_set(work, j, z); + } + + tau = gsl_linalg_complex_householder_transform(work); + gsl_linalg_complex_householder_hm(tau, work, m); + gsl_linalg_complex_householder_mh(gsl_complex_conjugate(tau), work, m); + } +} /* create_random_complex_posdef_matrix() */ + +void +create_random_nonsymm_matrix(gsl_matrix *m, gsl_rng *r, int lower, + int upper) +{ + size_t i, j; + + for (i = 0; i < m->size1; ++i) + { + for (j = 0; j < m->size2; ++j) + { + gsl_matrix_set(m, + i, + j, + gsl_rng_uniform(r) * (upper - lower) + lower); + } + } +} /* create_random_nonsymm_matrix() */ + +/* test if A Z = Q S */ +void +test_eigen_schur(const gsl_matrix * A, const gsl_matrix * S, + const gsl_matrix * Q, const gsl_matrix * Z, + size_t count, const char * desc, + const char * desc2) +{ + const size_t N = A->size1; + size_t i, j; + + gsl_matrix * T1 = gsl_matrix_alloc(N, N); + gsl_matrix * T2 = gsl_matrix_alloc(N, N); + + /* compute T1 = A Z */ + gsl_blas_dgemm(CblasNoTrans, CblasNoTrans, 1.0, A, Z, 0.0, T1); + + /* compute T2 = Q S */ + gsl_blas_dgemm(CblasNoTrans, CblasNoTrans, 1.0, Q, S, 0.0, T2); + + for (i = 0; i < N; ++i) + { + for (j = 0; j < N; ++j) + { + double x = gsl_matrix_get(T1, i, j); + double y = gsl_matrix_get(T2, i, j); + + gsl_test_abs(x, y, 1.0e8 * GSL_DBL_EPSILON, + "%s(N=%u,cnt=%u), %s, schur(%d,%d)", desc, N, count, desc2, i, j); + } + } + + gsl_matrix_free (T1); + gsl_matrix_free (T2); +} /* test_eigen_schur() */ + +/* test if A is orthogonal */ +int +test_eigen_orthog(gsl_matrix *A, size_t count, const char *desc, + const char *desc2) +{ + size_t N = A->size1; + gsl_matrix *M = gsl_matrix_alloc(A->size1, A->size2); + size_t i, j; + + gsl_blas_dgemm(CblasNoTrans, CblasTrans, 1.0, A, A, 0.0, M); + + for (i = 0; i < A->size1; ++i) + { + for (j = 0; j < A->size2; ++j) + { + double val; + double mij = gsl_matrix_get(M, i, j); + + if (i == j) + val = 1.0; + else + val = 0.0; + + gsl_test_abs(mij, val, 1.0e8 * GSL_DBL_EPSILON, + "%s(N=%u,cnt=%u), %s, orthog(%d,%d)", desc, N, count, desc2, i, j); + } + } + + gsl_matrix_free(M); + + return 1; +} /* test_eigen_orthog() */ + +void +test_eigenvalues_real (const gsl_vector *eval, const gsl_vector * eval2, + const char * desc, const char * desc2) +{ + const size_t N = eval->size; + size_t i; + + double emax = 0; + + /* check eigenvalues */ + for (i = 0; i < N; i++) + { + double ei = gsl_vector_get (eval, i); + if (fabs(ei) > emax) emax = fabs(ei); + } + + for (i = 0; i < N; i++) + { + double ei = gsl_vector_get (eval, i); + double e2i = gsl_vector_get (eval2, i); + e2i = chop_subnormals(e2i); + gsl_test_abs(ei, e2i, emax * 1e8 * GSL_DBL_EPSILON, + "%s, direct eigenvalue(%d), %s", + desc, i, desc2); + } +} + +void +test_eigenvalues_complex (const gsl_vector_complex * eval, + const gsl_vector_complex * eval2, + const char * desc, const char * desc2) +{ + const size_t N = eval->size; + size_t i; + + for (i = 0; i < N; i++) + { + gsl_complex ei = gsl_vector_complex_get (eval, i); + gsl_complex e2i = gsl_vector_complex_get (eval2, i); + gsl_test_rel(GSL_REAL(ei), GSL_REAL(e2i), 10*N*GSL_DBL_EPSILON, + "%s, direct eigenvalue(%d) real, %s", + desc, i, desc2); + gsl_test_rel(GSL_IMAG(ei), GSL_IMAG(e2i), 10*N*GSL_DBL_EPSILON, + "%s, direct eigenvalue(%d) imag, %s", + desc, i, desc2); + } +} + +/****************************************** + * symm test code * + ******************************************/ + +void +test_eigen_symm_results (const gsl_matrix * A, + const gsl_vector * eval, + const gsl_matrix * evec, + size_t count, + const char * desc, + const char * desc2) +{ + const size_t N = A->size1; + size_t i, j; + double emax = 0; + + gsl_vector * x = gsl_vector_alloc(N); + gsl_vector * y = gsl_vector_alloc(N); + + /* check eigenvalues */ + for (i = 0; i < N; i++) + { + double ei = gsl_vector_get (eval, i); + if (fabs(ei) > emax) emax = fabs(ei); + } + + for (i = 0; i < N; i++) + { + double ei = gsl_vector_get (eval, i); + gsl_vector_const_view vi = gsl_matrix_const_column(evec, i); + gsl_vector_memcpy(x, &vi.vector); + /* compute y = A x (should = lambda v) */ + gsl_blas_dgemv (CblasNoTrans, 1.0, A, x, 0.0, y); + for (j = 0; j < N; j++) + { + double xj = gsl_vector_get (x, j); + double yj = gsl_vector_get (y, j); + double eixj = chop_subnormals(ei * xj); + gsl_test_abs(yj, eixj, emax * 1e8 * GSL_DBL_EPSILON, + "%s, eigenvalue(%d,%d), %s", desc, i, j, desc2); + } + } + + /* check eigenvectors are orthonormal */ + + for (i = 0; i < N; i++) + { + gsl_vector_const_view vi = gsl_matrix_const_column(evec, i); + double nrm_v = gsl_blas_dnrm2(&vi.vector); + gsl_test_rel (nrm_v, 1.0, N * GSL_DBL_EPSILON, "%s, normalized(%d), %s", + desc, i, desc2); + } + + for (i = 0; i < N; i++) + { + gsl_vector_const_view vi = gsl_matrix_const_column(evec, i); + for (j = i + 1; j < N; j++) + { + gsl_vector_const_view vj = gsl_matrix_const_column(evec, j); + double vivj; + gsl_blas_ddot (&vi.vector, &vj.vector, &vivj); + gsl_test_abs (vivj, 0.0, N * GSL_DBL_EPSILON, + "%s, orthogonal(%d,%d), %s", desc, i, j, desc2); + } + } + + gsl_vector_free(x); + gsl_vector_free(y); +} + +void +test_eigen_symm_matrix(const gsl_matrix * m, size_t count, + const char * desc) +{ + const size_t N = m->size1; + gsl_matrix * A = gsl_matrix_alloc(N, N); + gsl_vector * eval = gsl_vector_alloc(N); + gsl_vector * evalv = gsl_vector_alloc(N); + gsl_vector * x = gsl_vector_alloc(N); + gsl_vector * y = gsl_vector_alloc(N); + gsl_matrix * evec = gsl_matrix_alloc(N, N); + gsl_eigen_symm_workspace * w = gsl_eigen_symm_alloc(N); + gsl_eigen_symmv_workspace * wv = gsl_eigen_symmv_alloc(N); + + gsl_matrix_memcpy(A, m); + + gsl_eigen_symmv(A, evalv, evec, wv); + test_eigen_symm_results(m, evalv, evec, count, desc, "unsorted"); + + gsl_matrix_memcpy(A, m); + + gsl_eigen_symm(A, eval, w); + + /* sort eval and evalv */ + gsl_vector_memcpy(x, eval); + gsl_vector_memcpy(y, evalv); + gsl_sort_vector(x); + gsl_sort_vector(y); + test_eigenvalues_real(y, x, desc, "unsorted"); + + gsl_eigen_symmv_sort(evalv, evec, GSL_EIGEN_SORT_VAL_ASC); + test_eigen_symm_results(m, evalv, evec, count, desc, "val/asc"); + + gsl_eigen_symmv_sort(evalv, evec, GSL_EIGEN_SORT_VAL_DESC); + test_eigen_symm_results(m, evalv, evec, count, desc, "val/desc"); + + gsl_eigen_symmv_sort(evalv, evec, GSL_EIGEN_SORT_ABS_ASC); + test_eigen_symm_results(m, evalv, evec, count, desc, "abs/asc"); + + gsl_eigen_symmv_sort(evalv, evec, GSL_EIGEN_SORT_ABS_DESC); + test_eigen_symm_results(m, evalv, evec, count, desc, "abs/desc"); + + gsl_matrix_free(A); + gsl_vector_free(eval); + gsl_vector_free(evalv); + gsl_vector_free(x); + gsl_vector_free(y); + gsl_matrix_free(evec); + gsl_eigen_symm_free(w); + gsl_eigen_symmv_free(wv); +} /* test_eigen_symm_matrix() */ + +void +test_eigen_symm(void) +{ + size_t N_max = 20; + size_t n, i; + gsl_rng *r = gsl_rng_alloc(gsl_rng_default); + + for (n = 1; n <= N_max; ++n) + { + gsl_matrix * A = gsl_matrix_alloc(n, n); + + for (i = 0; i < 5; ++i) + { + create_random_symm_matrix(A, r, -10, 10); + test_eigen_symm_matrix(A, i, "symm random"); + } + + gsl_matrix_free(A); + } + + gsl_rng_free(r); + + { + double dat1[] = { 0, 0, -1, 0, + 0, 1, 0, 1, + -1, 0, 0, 0, + 0, 1, 0, 0 }; + double dat2[] = { 1, 0, 0, 0, + 0, 2, 0, 0, + 0, 0, 3, 0, + 0, 0, 0, 4 }; + gsl_matrix_view m; + + m = gsl_matrix_view_array (dat1, 4, 4); + test_eigen_symm_matrix(&m.matrix, 0, "symm(4)"); + + m = gsl_matrix_view_array (dat2, 4, 4); + test_eigen_symm_matrix(&m.matrix, 0, "symm(4) diag"); + } + + { + double dat[27*27] = { + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1, + 0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0, + 0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0, + 0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + }; + + gsl_matrix_view m; + m = gsl_matrix_view_array (dat, 27, 27); + test_eigen_symm_matrix(&m.matrix, 0, "symm(27)"); + }; + +} /* test_eigen_symm() */ + +/****************************************** + * herm test code * + ******************************************/ + +void +test_eigen_herm_results (const gsl_matrix_complex * A, + const gsl_vector * eval, + const gsl_matrix_complex * evec, + size_t count, + const char * desc, + const char * desc2) +{ + const size_t N = A->size1; + size_t i, j; + + gsl_vector_complex * x = gsl_vector_complex_alloc(N); + gsl_vector_complex * y = gsl_vector_complex_alloc(N); + + /* check eigenvalues */ + + for (i = 0; i < N; i++) + { + double ei = gsl_vector_get (eval, i); + gsl_vector_complex_const_view vi = + gsl_matrix_complex_const_column(evec, i); + gsl_vector_complex_memcpy(x, &vi.vector); + /* compute y = m x (should = lambda v) */ + gsl_blas_zgemv (CblasNoTrans, GSL_COMPLEX_ONE, A, x, + GSL_COMPLEX_ZERO, y); + for (j = 0; j < N; j++) + { + gsl_complex xj = gsl_vector_complex_get (x, j); + gsl_complex yj = gsl_vector_complex_get (y, j); + gsl_test_rel(GSL_REAL(yj), ei * GSL_REAL(xj), 1e8*GSL_DBL_EPSILON, + "%s, eigenvalue(%d,%d), real, %s", desc, i, j, desc2); + gsl_test_rel(GSL_IMAG(yj), ei * GSL_IMAG(xj), 1e8*GSL_DBL_EPSILON, + "%s, eigenvalue(%d,%d), imag, %s", desc, i, j, desc2); + } + } + + /* check eigenvectors are orthonormal */ + + for (i = 0; i < N; i++) + { + gsl_vector_complex_const_view vi = gsl_matrix_complex_const_column(evec, i); + double nrm_v = gsl_blas_dznrm2(&vi.vector); + gsl_test_rel (nrm_v, 1.0, N * GSL_DBL_EPSILON, "%s, normalized(%d), %s", + desc, i, desc2); + } + + for (i = 0; i < N; i++) + { + gsl_vector_complex_const_view vi = gsl_matrix_complex_const_column(evec, i); + for (j = i + 1; j < N; j++) + { + gsl_vector_complex_const_view vj + = gsl_matrix_complex_const_column(evec, j); + gsl_complex vivj; + gsl_blas_zdotc (&vi.vector, &vj.vector, &vivj); + gsl_test_abs (gsl_complex_abs(vivj), 0.0, 10.0 * N * GSL_DBL_EPSILON, + "%s, orthogonal(%d,%d), %s", desc, i, j, desc2); + } + } + + gsl_vector_complex_free(x); + gsl_vector_complex_free(y); +} /* test_eigen_herm_results() */ + +void +test_eigen_herm_matrix(const gsl_matrix_complex * m, size_t count, + const char * desc) +{ + const size_t N = m->size1; + gsl_matrix_complex * A = gsl_matrix_complex_alloc(N, N); + gsl_vector * eval = gsl_vector_alloc(N); + gsl_vector * evalv = gsl_vector_alloc(N); + gsl_vector * x = gsl_vector_alloc(N); + gsl_vector * y = gsl_vector_alloc(N); + gsl_matrix_complex * evec = gsl_matrix_complex_alloc(N, N); + gsl_eigen_herm_workspace * w = gsl_eigen_herm_alloc(N); + gsl_eigen_hermv_workspace * wv = gsl_eigen_hermv_alloc(N); + + gsl_matrix_complex_memcpy(A, m); + + gsl_eigen_hermv(A, evalv, evec, wv); + test_eigen_herm_results(m, evalv, evec, count, desc, "unsorted"); + + gsl_matrix_complex_memcpy(A, m); + + gsl_eigen_herm(A, eval, w); + + /* sort eval and evalv */ + gsl_vector_memcpy(x, eval); + gsl_vector_memcpy(y, evalv); + gsl_sort_vector(x); + gsl_sort_vector(y); + test_eigenvalues_real(y, x, desc, "unsorted"); + + gsl_eigen_hermv_sort(evalv, evec, GSL_EIGEN_SORT_VAL_ASC); + test_eigen_herm_results(m, evalv, evec, count, desc, "val/asc"); + + gsl_eigen_hermv_sort(evalv, evec, GSL_EIGEN_SORT_VAL_DESC); + test_eigen_herm_results(m, evalv, evec, count, desc, "val/desc"); + + gsl_eigen_hermv_sort(evalv, evec, GSL_EIGEN_SORT_ABS_ASC); + test_eigen_herm_results(m, evalv, evec, count, desc, "abs/asc"); + + gsl_eigen_hermv_sort(evalv, evec, GSL_EIGEN_SORT_ABS_DESC); + test_eigen_herm_results(m, evalv, evec, count, desc, "abs/desc"); + + gsl_matrix_complex_free(A); + gsl_vector_free(eval); + gsl_vector_free(evalv); + gsl_vector_free(x); + gsl_vector_free(y); + gsl_matrix_complex_free(evec); + gsl_eigen_herm_free(w); + gsl_eigen_hermv_free(wv); +} /* test_eigen_herm_matrix() */ + +void +test_eigen_herm(void) +{ + size_t N_max = 20; + size_t n, i; + gsl_rng *r = gsl_rng_alloc(gsl_rng_default); + + for (n = 1; n <= N_max; ++n) + { + gsl_matrix_complex * A = gsl_matrix_complex_alloc(n, n); + + for (i = 0; i < 5; ++i) + { + create_random_herm_matrix(A, r, -10, 10); + test_eigen_herm_matrix(A, i, "herm random"); + } + + gsl_matrix_complex_free(A); + } + + gsl_rng_free(r); + + { + double dat1[] = { 0,0, 0,0, -1,0, 0,0, + 0,0, 1,0, 0,0, 1,0, + -1,0, 0,0, 0,0, 0,0, + 0,0, 1,0, 0,0, 0,0 }; + double dat2[] = { 1,0, 0,0, 0,0, 0,0, + 0,0, 2,0, 0,0, 0,0, + 0,0, 0,0, 3,0, 0,0, + 0,0, 0,0, 0,0, 4,0 }; + gsl_matrix_complex_view m; + + m = gsl_matrix_complex_view_array (dat1, 4, 4); + test_eigen_herm_matrix(&m.matrix, 0, "herm(4)"); + + m = gsl_matrix_complex_view_array (dat2, 4, 4); + test_eigen_herm_matrix(&m.matrix, 1, "herm(4) diag"); + } +} /* test_eigen_herm() */ + +/****************************************** + * nonsymm test code * + ******************************************/ + +void +test_eigen_nonsymm_results (const gsl_matrix * m, + const gsl_vector_complex * eval, + const gsl_matrix_complex * evec, + size_t count, + const char * desc, + const char * desc2) +{ + size_t i,j; + size_t N = m->size1; + + gsl_vector_complex * x = gsl_vector_complex_alloc(N); + gsl_vector_complex * y = gsl_vector_complex_alloc(N); + gsl_matrix_complex * A = gsl_matrix_complex_alloc(N, N); + + /* we need a complex matrix for the blas routines, so copy m into A */ + for (i = 0; i < N; ++i) + { + for (j = 0; j < N; ++j) + { + gsl_complex z; + GSL_SET_COMPLEX(&z, gsl_matrix_get(m, i, j), 0.0); + gsl_matrix_complex_set(A, i, j, z); + } + } + + for (i = 0; i < N; i++) + { + gsl_complex ei = gsl_vector_complex_get (eval, i); + gsl_vector_complex_const_view vi = gsl_matrix_complex_const_column(evec, i); + double norm = gsl_blas_dznrm2(&vi.vector); + + /* check that eigenvector is normalized */ + gsl_test_rel(norm, 1.0, N * GSL_DBL_EPSILON, + "nonsymm(N=%u,cnt=%u), %s, normalized(%d), %s", N, count, desc, i, desc2); + + gsl_vector_complex_memcpy(x, &vi.vector); + + /* compute y = m x (should = lambda v) */ + gsl_blas_zgemv (CblasNoTrans, GSL_COMPLEX_ONE, A, x, + GSL_COMPLEX_ZERO, y); + + /* compute x = lambda v */ + gsl_blas_zscal(ei, x); + + /* now test if y = x */ + for (j = 0; j < N; j++) + { + gsl_complex xj = gsl_vector_complex_get (x, j); + gsl_complex yj = gsl_vector_complex_get (y, j); + + /* use abs here in case the values are close to 0 */ + gsl_test_abs(GSL_REAL(yj), GSL_REAL(xj), 1e8*GSL_DBL_EPSILON, + "nonsymm(N=%u,cnt=%u), %s, eigenvalue(%d,%d), real, %s", N, count, desc, i, j, desc2); + gsl_test_abs(GSL_IMAG(yj), GSL_IMAG(xj), 1e8*GSL_DBL_EPSILON, + "nonsymm(N=%u,cnt=%u), %s, eigenvalue(%d,%d), imag, %s", N, count, desc, i, j, desc2); + } + } + + gsl_matrix_complex_free(A); + gsl_vector_complex_free(x); + gsl_vector_complex_free(y); +} + +void +test_eigen_nonsymm_matrix(const gsl_matrix * m, size_t count, + const char * desc, + gsl_eigen_nonsymmv_workspace *w) +{ + const size_t N = m->size1; + gsl_matrix * A = gsl_matrix_alloc(N, N); + gsl_matrix * Z = gsl_matrix_alloc(N, N); + gsl_matrix_complex * evec = gsl_matrix_complex_alloc(N, N); + gsl_vector_complex * eval = gsl_vector_complex_alloc(N); + + /* + * calculate eigenvalues and eigenvectors - it is sufficient to + * test gsl_eigen_nonsymmv() since that function calls + * gsl_eigen_nonsymm() for the eigenvalues + */ + gsl_matrix_memcpy(A, m); + gsl_eigen_nonsymmv(A, eval, evec, w); + test_eigen_nonsymm_results (m, eval, evec, count, desc, "unsorted"); + + /* test sort routines */ + gsl_eigen_nonsymmv_sort (eval, evec, GSL_EIGEN_SORT_ABS_ASC); + test_eigen_nonsymm_results (m, eval, evec, count, desc, "abs/asc"); + + gsl_eigen_nonsymmv_sort (eval, evec, GSL_EIGEN_SORT_ABS_DESC); + test_eigen_nonsymm_results (m, eval, evec, count, desc, "abs/desc"); + + /* test Schur vectors */ + gsl_matrix_memcpy(A, m); + gsl_eigen_nonsymmv_Z(A, eval, evec, Z, w); + gsl_linalg_hessenberg_set_zero(A); + test_eigen_schur(m, A, Z, Z, count, "nonsymm", desc); + + /* test if Z is an orthogonal matrix */ + if (w->nonsymm_workspace_p->do_balance == 0) + test_eigen_orthog(Z, count, "nonsymm", desc); + + gsl_matrix_free(A); + gsl_matrix_free(Z); + gsl_matrix_complex_free(evec); + gsl_vector_complex_free(eval); +} + +void +test_eigen_nonsymm(void) +{ + size_t N_max = 20; + size_t n, i; + gsl_rng *r = gsl_rng_alloc(gsl_rng_default); + + for (n = 1; n <= N_max; ++n) + { + gsl_matrix * m = gsl_matrix_alloc(n, n); + gsl_eigen_nonsymmv_workspace * w = gsl_eigen_nonsymmv_alloc(n); + + for (i = 0; i < 5; ++i) + { + create_random_nonsymm_matrix(m, r, -10, 10); + + gsl_eigen_nonsymmv_params(0, w); + test_eigen_nonsymm_matrix(m, i, "random, unbalanced", w); + + gsl_eigen_nonsymmv_params(1, w); + test_eigen_nonsymm_matrix(m, i, "random, balanced", w); + } + + gsl_matrix_free(m); + gsl_eigen_nonsymmv_free(w); + } + + gsl_rng_free(r); + + { + double dat1[] = { 0, 1, 1, 1, + 1, 1, 1, 1, + 0, 0, 0, 0, + 0, 0, 0, 0 }; + double dat2[] = { 1, 1, 0, 1, + 1, 1, 1, 1, + 1, 1, 1, 1, + 0, 1, 0, 0 }; + gsl_matrix_view v; + gsl_eigen_nonsymmv_workspace * w = gsl_eigen_nonsymmv_alloc(4); + + v = gsl_matrix_view_array (dat1, 4, 4); + test_eigen_nonsymm_matrix(&v.matrix, 0, "integer", w); + + v = gsl_matrix_view_array (dat2, 4, 4); + test_eigen_nonsymm_matrix(&v.matrix, 1, "integer", w); + + gsl_eigen_nonsymmv_free(w); + } +} /* test_eigen_nonsymm() */ + +/****************************************** + * gensymm test code * + ******************************************/ + +void +test_eigen_gensymm_results (const gsl_matrix * A, + const gsl_matrix * B, + const gsl_vector * eval, + const gsl_matrix * evec, + size_t count, + const char * desc, + const char * desc2) +{ + const size_t N = A->size1; + size_t i, j; + + gsl_vector * x = gsl_vector_alloc(N); + gsl_vector * y = gsl_vector_alloc(N); + gsl_vector * z = gsl_vector_alloc(N); + + /* check A v = lambda B v */ + for (i = 0; i < N; i++) + { + double ei = gsl_vector_get (eval, i); + gsl_vector_const_view vi = gsl_matrix_const_column(evec, i); + double norm = gsl_blas_dnrm2(&vi.vector); + + /* check that eigenvector is normalized */ + gsl_test_rel(norm, 1.0, N * GSL_DBL_EPSILON, + "gensymm(N=%u,cnt=%u), %s, normalized(%d), %s", N, count, + desc, i, desc2); + + gsl_vector_memcpy(z, &vi.vector); + + /* compute y = A z */ + gsl_blas_dgemv (CblasNoTrans, 1.0, A, z, 0.0, y); + + /* compute x = B z */ + gsl_blas_dgemv (CblasNoTrans, 1.0, B, z, 0.0, x); + + /* compute x = lambda B z */ + gsl_blas_dscal(ei, x); + + /* now test if y = x */ + for (j = 0; j < N; j++) + { + double xj = gsl_vector_get (x, j); + double yj = gsl_vector_get (y, j); + + gsl_test_rel(yj, xj, 1e9 * GSL_DBL_EPSILON, + "gensymm(N=%u,cnt=%u), %s, eigenvalue(%d,%d), real, %s", N, count, desc, i, j, desc2); + } + } + + gsl_vector_free(x); + gsl_vector_free(y); + gsl_vector_free(z); +} + +void +test_eigen_gensymm(void) +{ + size_t N_max = 20; + size_t n, i; + gsl_rng *r = gsl_rng_alloc(gsl_rng_default); + + for (n = 1; n <= N_max; ++n) + { + gsl_matrix * A = gsl_matrix_alloc(n, n); + gsl_matrix * B = gsl_matrix_alloc(n, n); + gsl_matrix * ma = gsl_matrix_alloc(n, n); + gsl_matrix * mb = gsl_matrix_alloc(n, n); + gsl_vector * eval = gsl_vector_alloc(n); + gsl_vector * evalv = gsl_vector_alloc(n); + gsl_vector * x = gsl_vector_alloc(n); + gsl_vector * y = gsl_vector_alloc(n); + gsl_matrix * evec = gsl_matrix_alloc(n, n); + gsl_eigen_gensymm_workspace * w = gsl_eigen_gensymm_alloc(n); + gsl_eigen_gensymmv_workspace * wv = gsl_eigen_gensymmv_alloc(n); + + for (i = 0; i < 5; ++i) + { + create_random_symm_matrix(A, r, -10, 10); + create_random_posdef_matrix(B, r); + + gsl_matrix_memcpy(ma, A); + gsl_matrix_memcpy(mb, B); + + gsl_eigen_gensymmv(ma, mb, evalv, evec, wv); + test_eigen_gensymm_results(A, B, evalv, evec, i, "random", "unsorted"); + + gsl_matrix_memcpy(ma, A); + gsl_matrix_memcpy(mb, B); + + gsl_eigen_gensymm(ma, mb, eval, w); + + /* eval and evalv have to be sorted? not sure why */ + gsl_vector_memcpy(x, eval); + gsl_vector_memcpy(y, evalv); + gsl_sort_vector(x); + gsl_sort_vector(y); + test_eigenvalues_real(y, x, "gensymm, random", "unsorted"); + + gsl_eigen_gensymmv_sort(evalv, evec, GSL_EIGEN_SORT_VAL_ASC); + test_eigen_gensymm_results(A, B, evalv, evec, i, "random", "val/asc"); + + gsl_eigen_gensymmv_sort(evalv, evec, GSL_EIGEN_SORT_VAL_DESC); + test_eigen_gensymm_results(A, B, evalv, evec, i, "random", "val/desc"); + + gsl_eigen_gensymmv_sort(evalv, evec, GSL_EIGEN_SORT_ABS_ASC); + test_eigen_gensymm_results(A, B, evalv, evec, i, "random", "abs/asc"); + gsl_eigen_gensymmv_sort(evalv, evec, GSL_EIGEN_SORT_ABS_DESC); + test_eigen_gensymm_results(A, B, evalv, evec, i, "random", "abs/desc"); + } + + gsl_matrix_free(A); + gsl_matrix_free(B); + gsl_matrix_free(ma); + gsl_matrix_free(mb); + gsl_vector_free(eval); + gsl_vector_free(evalv); + gsl_vector_free(x); + gsl_vector_free(y); + gsl_matrix_free(evec); + gsl_eigen_gensymm_free(w); + gsl_eigen_gensymmv_free(wv); + } + + gsl_rng_free(r); +} /* test_eigen_gensymm() */ + +/****************************************** + * genherm test code * + ******************************************/ + +void +test_eigen_genherm_results (const gsl_matrix_complex * A, + const gsl_matrix_complex * B, + const gsl_vector * eval, + const gsl_matrix_complex * evec, + size_t count, + const char * desc, + const char * desc2) +{ + const size_t N = A->size1; + size_t i, j; + + gsl_vector_complex * x = gsl_vector_complex_alloc(N); + gsl_vector_complex * y = gsl_vector_complex_alloc(N); + + /* check A v = lambda B v */ + for (i = 0; i < N; i++) + { + double ei = gsl_vector_get (eval, i); + gsl_vector_complex_const_view vi = + gsl_matrix_complex_const_column(evec, i); + double norm = gsl_blas_dznrm2(&vi.vector); + + /* check that eigenvector is normalized */ + gsl_test_rel(norm, 1.0, N * GSL_DBL_EPSILON, + "genherm(N=%u,cnt=%u), %s, normalized(%d), %s", N, count, + desc, i, desc2); + + /* compute y = A z */ + gsl_blas_zgemv (CblasNoTrans, GSL_COMPLEX_ONE, A, &vi.vector, GSL_COMPLEX_ZERO, y); + + /* compute x = B z */ + gsl_blas_zgemv (CblasNoTrans, GSL_COMPLEX_ONE, B, &vi.vector, GSL_COMPLEX_ZERO, x); + + /* compute x = lambda B z */ + gsl_blas_zdscal(ei, x); + + /* now test if y = x */ + for (j = 0; j < N; j++) + { + gsl_complex xj = gsl_vector_complex_get (x, j); + gsl_complex yj = gsl_vector_complex_get (y, j); + + gsl_test_rel(GSL_REAL(yj), GSL_REAL(xj), 1e9 * GSL_DBL_EPSILON, + "genherm(N=%u,cnt=%u), %s, eigenvalue(%d,%d), real, %s", N, count, desc, i, j, desc2); + gsl_test_abs(GSL_IMAG(yj), GSL_IMAG(xj), 1e9 * GSL_DBL_EPSILON, + "genherm(N=%u,cnt=%u), %s, eigenvalue(%d,%d), imag, %s", N, count, desc, i, j, desc2); + } + } + + gsl_vector_complex_free(x); + gsl_vector_complex_free(y); +} + +void +test_eigen_genherm(void) +{ + size_t N_max = 20; + size_t n, i; + gsl_rng *r = gsl_rng_alloc(gsl_rng_default); + + for (n = 1; n <= N_max; ++n) + { + gsl_matrix_complex * A = gsl_matrix_complex_alloc(n, n); + gsl_matrix_complex * B = gsl_matrix_complex_alloc(n, n); + gsl_matrix_complex * ma = gsl_matrix_complex_alloc(n, n); + gsl_matrix_complex * mb = gsl_matrix_complex_alloc(n, n); + gsl_vector * eval = gsl_vector_alloc(n); + gsl_vector * evalv = gsl_vector_alloc(n); + gsl_vector * x = gsl_vector_alloc(n); + gsl_vector * y = gsl_vector_alloc(n); + gsl_vector_complex * work = gsl_vector_complex_alloc(n); + gsl_matrix_complex * evec = gsl_matrix_complex_alloc(n, n); + gsl_eigen_genherm_workspace * w = gsl_eigen_genherm_alloc(n); + gsl_eigen_genhermv_workspace * wv = gsl_eigen_genhermv_alloc(n); + + for (i = 0; i < 5; ++i) + { + create_random_herm_matrix(A, r, -10, 10); + create_random_complex_posdef_matrix(B, r, work); + + gsl_matrix_complex_memcpy(ma, A); + gsl_matrix_complex_memcpy(mb, B); + + gsl_eigen_genhermv(ma, mb, evalv, evec, wv); + test_eigen_genherm_results(A, B, evalv, evec, i, "random", "unsorted"); + + gsl_matrix_complex_memcpy(ma, A); + gsl_matrix_complex_memcpy(mb, B); + + gsl_eigen_genherm(ma, mb, eval, w); + + /* eval and evalv have to be sorted? not sure why */ + gsl_vector_memcpy(x, eval); + gsl_vector_memcpy(y, evalv); + gsl_sort_vector(x); + gsl_sort_vector(y); + test_eigenvalues_real(y, x, "genherm, random", "unsorted"); + + gsl_eigen_genhermv_sort(evalv, evec, GSL_EIGEN_SORT_VAL_ASC); + test_eigen_genherm_results(A, B, evalv, evec, i, "random", "val/asc"); + + gsl_eigen_genhermv_sort(evalv, evec, GSL_EIGEN_SORT_VAL_DESC); + test_eigen_genherm_results(A, B, evalv, evec, i, "random", "val/desc"); + + gsl_eigen_genhermv_sort(evalv, evec, GSL_EIGEN_SORT_ABS_ASC); + test_eigen_genherm_results(A, B, evalv, evec, i, "random", "abs/asc"); + gsl_eigen_genhermv_sort(evalv, evec, GSL_EIGEN_SORT_ABS_DESC); + test_eigen_genherm_results(A, B, evalv, evec, i, "random", "abs/desc"); + } + + gsl_matrix_complex_free(A); + gsl_matrix_complex_free(B); + gsl_matrix_complex_free(ma); + gsl_matrix_complex_free(mb); + gsl_vector_free(eval); + gsl_vector_free(evalv); + gsl_vector_free(x); + gsl_vector_free(y); + gsl_vector_complex_free(work); + gsl_matrix_complex_free(evec); + gsl_eigen_genherm_free(w); + gsl_eigen_genhermv_free(wv); + } + + gsl_rng_free(r); +} /* test_eigen_genherm() */ + +/****************************************** + * gen test code * + ******************************************/ + +typedef struct +{ + gsl_matrix *A; + gsl_matrix *B; + gsl_vector_complex *alpha; + gsl_vector *beta; + gsl_vector_complex *alphav; + gsl_vector *betav; + gsl_vector_complex *eval; + gsl_vector_complex *evalv; + gsl_vector *x; + gsl_vector *y; + gsl_matrix *Q; + gsl_matrix *Z; + gsl_matrix_complex *evec; + gsl_eigen_gen_workspace *gen_p; + gsl_eigen_genv_workspace *genv_p; +} test_eigen_gen_workspace; + +test_eigen_gen_workspace * +test_eigen_gen_alloc(const size_t n) +{ + test_eigen_gen_workspace *w; + + w = (test_eigen_gen_workspace *) calloc(1, sizeof(test_eigen_gen_workspace)); + + w->A = gsl_matrix_alloc(n, n); + w->B = gsl_matrix_alloc(n, n); + w->alpha = gsl_vector_complex_alloc(n); + w->beta = gsl_vector_alloc(n); + w->alphav = gsl_vector_complex_alloc(n); + w->betav = gsl_vector_alloc(n); + w->eval = gsl_vector_complex_alloc(n); + w->evalv = gsl_vector_complex_alloc(n); + w->x = gsl_vector_alloc(n); + w->y = gsl_vector_alloc(n); + w->Q = gsl_matrix_alloc(n, n); + w->Z = gsl_matrix_alloc(n, n); + w->evec = gsl_matrix_complex_alloc(n, n); + w->gen_p = gsl_eigen_gen_alloc(n); + w->genv_p = gsl_eigen_genv_alloc(n); + + return (w); +} /* test_eigen_gen_alloc() */ + +void +test_eigen_gen_free(test_eigen_gen_workspace *w) +{ + gsl_matrix_free(w->A); + gsl_matrix_free(w->B); + gsl_vector_complex_free(w->alpha); + gsl_vector_free(w->beta); + gsl_vector_complex_free(w->alphav); + gsl_vector_free(w->betav); + gsl_vector_complex_free(w->eval); + gsl_vector_complex_free(w->evalv); + gsl_vector_free(w->x); + gsl_vector_free(w->y); + gsl_matrix_free(w->Q); + gsl_matrix_free(w->Z); + gsl_matrix_complex_free(w->evec); + gsl_eigen_gen_free(w->gen_p); + gsl_eigen_genv_free(w->genv_p); + free(w); +} /* test_eigen_gen_free() */ + +void +test_eigen_gen_results (const gsl_matrix * A, const gsl_matrix * B, + const gsl_vector_complex * alpha, + const gsl_vector * beta, + const gsl_matrix_complex * evec, + size_t count, const char * desc, + const char * desc2) +{ + const size_t N = A->size1; + size_t i, j; + gsl_matrix_complex *ma, *mb; + gsl_vector_complex *x, *y; + gsl_complex z_one, z_zero; + + ma = gsl_matrix_complex_alloc(N, N); + mb = gsl_matrix_complex_alloc(N, N); + y = gsl_vector_complex_alloc(N); + x = gsl_vector_complex_alloc(N); + + /* ma <- A, mb <- B */ + for (i = 0; i < N; ++i) + { + for (j = 0; j < N; ++j) + { + gsl_complex z; + + GSL_SET_COMPLEX(&z, gsl_matrix_get(A, i, j), 0.0); + gsl_matrix_complex_set(ma, i, j, z); + + GSL_SET_COMPLEX(&z, gsl_matrix_get(B, i, j), 0.0); + gsl_matrix_complex_set(mb, i, j, z); + } + } + + GSL_SET_COMPLEX(&z_one, 1.0, 0.0); + GSL_SET_COMPLEX(&z_zero, 0.0, 0.0); + + /* check eigenvalues */ + for (i = 0; i < N; ++i) + { + gsl_vector_complex_const_view vi = + gsl_matrix_complex_const_column(evec, i); + gsl_complex ai = gsl_vector_complex_get(alpha, i); + double bi = gsl_vector_get(beta, i); + + /* compute x = alpha * B * v */ + gsl_blas_zgemv(CblasNoTrans, z_one, mb, &vi.vector, z_zero, x); + gsl_blas_zscal(ai, x); + + /* compute y = beta * A v */ + gsl_blas_zgemv(CblasNoTrans, z_one, ma, &vi.vector, z_zero, y); + gsl_blas_zdscal(bi, y); + + /* now test if y = x */ + for (j = 0; j < N; ++j) + { + gsl_complex xj = gsl_vector_complex_get(x, j); + gsl_complex yj = gsl_vector_complex_get(y, j); + + gsl_test_abs(GSL_REAL(yj), GSL_REAL(xj), 1e8*GSL_DBL_EPSILON, + "gen(N=%u,cnt=%u), %s, eigenvalue(%d,%d), real, %s", + N, count, desc, i, j, desc2); + gsl_test_abs(GSL_IMAG(yj), GSL_IMAG(xj), 1e8*GSL_DBL_EPSILON, + "gen(N=%u,cnt=%u), %s, eigenvalue(%d,%d), real, %s", + N, count, desc, i, j, desc2); + } + } + + gsl_matrix_complex_free(ma); + gsl_matrix_complex_free(mb); + gsl_vector_complex_free(y); + gsl_vector_complex_free(x); +} /* test_eigen_gen_results() */ + +void +test_eigen_gen_pencil(const gsl_matrix * A, const gsl_matrix * B, + size_t count, const char * desc, int test_schur, + test_eigen_gen_workspace *w) +{ + const size_t N = A->size1; + size_t i; + + gsl_matrix_memcpy(w->A, A); + gsl_matrix_memcpy(w->B, B); + + if (test_schur) + { + gsl_eigen_genv_QZ(w->A, w->B, w->alphav, w->betav, w->evec, w->Q, w->Z, w->genv_p); + test_eigen_schur(A, w->A, w->Q, w->Z, count, "genv/A", desc); + test_eigen_schur(B, w->B, w->Q, w->Z, count, "genv/B", desc); + } + else + gsl_eigen_genv(w->A, w->B, w->alphav, w->betav, w->evec, w->genv_p); + + test_eigen_gen_results(A, B, w->alphav, w->betav, w->evec, count, desc, "unsorted"); + + gsl_matrix_memcpy(w->A, A); + gsl_matrix_memcpy(w->B, B); + + if (test_schur) + { + gsl_eigen_gen_params(1, 1, 0, w->gen_p); + gsl_eigen_gen_QZ(w->A, w->B, w->alpha, w->beta, w->Q, w->Z, w->gen_p); + test_eigen_schur(A, w->A, w->Q, w->Z, count, "gen/A", desc); + test_eigen_schur(B, w->B, w->Q, w->Z, count, "gen/B", desc); + } + else + { + gsl_eigen_gen_params(0, 0, 0, w->gen_p); + gsl_eigen_gen(w->A, w->B, w->alpha, w->beta, w->gen_p); + } + + /* compute eval = alpha / beta values */ + for (i = 0; i < N; ++i) + { + gsl_complex z, ai; + double bi; + + ai = gsl_vector_complex_get(w->alpha, i); + bi = gsl_vector_get(w->beta, i); + GSL_SET_COMPLEX(&z, GSL_REAL(ai) / bi, GSL_IMAG(ai) / bi); + gsl_vector_complex_set(w->eval, i, z); + + ai = gsl_vector_complex_get(w->alphav, i); + bi = gsl_vector_get(w->betav, i); + GSL_SET_COMPLEX(&z, GSL_REAL(ai) / bi, GSL_IMAG(ai) / bi); + gsl_vector_complex_set(w->evalv, i, z); + } + + /* sort eval and evalv and test them */ + gsl_eigen_nonsymmv_sort(w->eval, NULL, GSL_EIGEN_SORT_VAL_ASC); + gsl_eigen_nonsymmv_sort(w->evalv, NULL, GSL_EIGEN_SORT_VAL_ASC); + test_eigenvalues_complex(w->evalv, w->eval, "gen", desc); + + gsl_eigen_genv_sort(w->alphav, w->betav, w->evec, GSL_EIGEN_SORT_ABS_ASC); + test_eigen_gen_results(A, B, w->alphav, w->betav, w->evec, count, desc, "abs/asc"); + gsl_eigen_genv_sort(w->alphav, w->betav, w->evec, GSL_EIGEN_SORT_ABS_DESC); + test_eigen_gen_results(A, B, w->alphav, w->betav, w->evec, count, desc, "abs/desc"); +} /* test_eigen_gen_pencil() */ + +void +test_eigen_gen(void) +{ + size_t N_max = 20; + size_t n, i; + gsl_rng *r = gsl_rng_alloc(gsl_rng_default); + + for (n = 1; n <= N_max; ++n) + { + gsl_matrix * A = gsl_matrix_alloc(n, n); + gsl_matrix * B = gsl_matrix_alloc(n, n); + test_eigen_gen_workspace * w = test_eigen_gen_alloc(n); + + for (i = 0; i < 5; ++i) + { + create_random_nonsymm_matrix(A, r, -10, 10); + create_random_nonsymm_matrix(B, r, -10, 10); + + test_eigen_gen_pencil(A, B, i, "random", 0, w); + test_eigen_gen_pencil(A, B, i, "random", 1, w); + } + + gsl_matrix_free(A); + gsl_matrix_free(B); + test_eigen_gen_free(w); + } + + gsl_rng_free(r); + + /* this system will test the exceptional shift code */ + { + double datA[] = { 1, 1, 0, + 0, 0, -1, + 1, 0, 0 }; + double datB[] = { -1, 0, -1, + 0, -1, 0, + 0, 0, -1 }; + gsl_matrix_view va = gsl_matrix_view_array (datA, 3, 3); + gsl_matrix_view vb = gsl_matrix_view_array (datB, 3, 3); + test_eigen_gen_workspace * w = test_eigen_gen_alloc(3); + + test_eigen_gen_pencil(&va.matrix, &vb.matrix, 0, "integer", 0, w); + test_eigen_gen_pencil(&va.matrix, &vb.matrix, 0, "integer", 1, w); + + test_eigen_gen_free(w); + } +} /* test_eigen_gen() */ + +int +main() +{ + gsl_ieee_env_setup (); + gsl_rng_env_setup (); + + test_eigen_symm(); + test_eigen_herm(); + test_eigen_nonsymm(); + test_eigen_gensymm(); + test_eigen_genherm(); + test_eigen_gen(); + + exit (gsl_test_summary()); +} diff --git a/gsl-2.5/eigen/test.log b/gsl-2.5/eigen/test.log new file mode 100644 index 00000000..2faa7b66 --- /dev/null +++ b/gsl-2.5/eigen/test.log @@ -0,0 +1 @@ +Completed [984244/984244] diff --git a/gsl-2.5/eigen/test.trs b/gsl-2.5/eigen/test.trs new file mode 100644 index 00000000..3f0f396c --- /dev/null +++ b/gsl-2.5/eigen/test.trs @@ -0,0 +1,4 @@ +:test-result: PASS +:global-test-result: PASS +:recheck: no +:copy-in-global-log: no diff --git a/gsl-2.5/err/.deps/error.Plo b/gsl-2.5/err/.deps/error.Plo new file mode 100644 index 00000000..5b6b38cb --- /dev/null +++ b/gsl-2.5/err/.deps/error.Plo @@ -0,0 +1,110 @@ +error.lo: error.c /usr/include/stdc-predef.h ../config.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/byteswap.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/bits/byteswap-16.h /usr/include/sys/types.h \ + /usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib-float.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../gsl/gsl_errno.h /usr/include/errno.h \ + /usr/include/bits/errno.h /usr/include/linux/errno.h \ + /usr/include/asm/errno.h /usr/include/asm-generic/errno.h \ + /usr/include/asm-generic/errno-base.h ../gsl/gsl_types.h \ + ../gsl/gsl_message.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_message.h: diff --git a/gsl-2.5/err/.deps/message.Plo b/gsl-2.5/err/.deps/message.Plo new file mode 100644 index 00000000..7a7118e3 --- /dev/null +++ b/gsl-2.5/err/.deps/message.Plo @@ -0,0 +1,110 @@ +message.lo: message.c /usr/include/stdc-predef.h ../config.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/byteswap.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/bits/byteswap-16.h /usr/include/sys/types.h \ + /usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib-float.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../gsl/gsl_errno.h /usr/include/errno.h \ + /usr/include/bits/errno.h /usr/include/linux/errno.h \ + /usr/include/asm/errno.h /usr/include/asm-generic/errno.h \ + /usr/include/asm-generic/errno-base.h ../gsl/gsl_types.h \ + ../gsl/gsl_message.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_message.h: diff --git a/gsl-2.5/err/.deps/stream.Plo b/gsl-2.5/err/.deps/stream.Plo new file mode 100644 index 00000000..6185ecd6 --- /dev/null +++ b/gsl-2.5/err/.deps/stream.Plo @@ -0,0 +1,110 @@ +stream.lo: stream.c /usr/include/stdc-predef.h ../config.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/byteswap.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/bits/byteswap-16.h /usr/include/sys/types.h \ + /usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib-float.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../gsl/gsl_errno.h /usr/include/errno.h \ + /usr/include/bits/errno.h /usr/include/linux/errno.h \ + /usr/include/asm/errno.h /usr/include/asm-generic/errno.h \ + /usr/include/asm-generic/errno-base.h ../gsl/gsl_types.h \ + ../gsl/gsl_message.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_message.h: diff --git a/gsl-2.5/err/.deps/strerror.Plo b/gsl-2.5/err/.deps/strerror.Plo new file mode 100644 index 00000000..e5b25206 --- /dev/null +++ b/gsl-2.5/err/.deps/strerror.Plo @@ -0,0 +1,65 @@ +strerror.lo: strerror.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_errno.h /usr/include/stdio.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_types.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: diff --git a/gsl-2.5/err/.deps/test.Po b/gsl-2.5/err/.deps/test.Po new file mode 100644 index 00000000..e80e94d2 --- /dev/null +++ b/gsl-2.5/err/.deps/test.Po @@ -0,0 +1,110 @@ +test.o: test.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdio.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_errno.h /usr/include/errno.h \ + /usr/include/bits/errno.h /usr/include/linux/errno.h \ + /usr/include/asm/errno.h /usr/include/asm-generic/errno.h \ + /usr/include/asm-generic/errno-base.h ../gsl/gsl_types.h \ + ../gsl/gsl_test.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_test.h: diff --git a/gsl-2.5/err/.libs/libgslerr.la b/gsl-2.5/err/.libs/libgslerr.la new file mode 120000 index 00000000..36886590 --- /dev/null +++ b/gsl-2.5/err/.libs/libgslerr.la @@ -0,0 +1 @@ +../libgslerr.la \ No newline at end of file diff --git a/gsl-2.5/err/ChangeLog b/gsl-2.5/err/ChangeLog new file mode 100644 index 00000000..c5916fd2 --- /dev/null +++ b/gsl-2.5/err/ChangeLog @@ -0,0 +1,161 @@ +2004-07-10 Brian Gough + + * error.c (gsl_error): flush stdout/stderr before aborting (needed + to get a useful error message on some platforms) + +2003-06-17 Brian Gough + + * warn.c: removed, the functions are not used + +Sat Apr 27 21:27:32 2002 Brian Gough + + * error.c (gsl_error): added an explanatory message in the default + error handler before aborting + +Tue Jun 12 11:52:23 2001 Brian Gough + + * gsl_errno.h (GSL_STATUS_UPDATE): added macro for updating + status value multiple times + +Fri Apr 27 18:18:59 2001 Brian Gough + + * gsl_errno.h (GSL_ERROR_NULL): added macro which returns NULL, + for out of memory conditions + +Mon Jan 22 16:01:55 2001 Brian Gough + + * gsl_errno.h: added EOF for end of file + +Sat Aug 26 19:26:59 2000 Brian Gough + + * gsl_errno.h: added error codes ETOLF, ETOLX, ETOLG for + unattainable tolerances in (F,X,G) in multimin MINPACK LM + algorithm. + +Fri May 5 11:20:10 2000 Brian Gough + + * split gsl_test code out into separate test/ directory + +Sun Nov 28 17:17:03 1999 Brian Gough + + * gsl_errno.h: added GSL_ENOPROG and GSL_ENOPROGJ to handle error + conditions from minpack hybrid algorithms (INFO=5,4 in the + original code) + +Thu Oct 28 14:41:31 1999 Brian Gough + + * gsl_test.h: changed variable name in prototype for clarity + +Thu Oct 7 11:46:53 1999 Brian Gough + + * test_results.c (gsl_test_str): changed #if __STDC__ to #ifdef + __STDC__ so the code will compile with compilers that define + __STDC__ to 0 meaning STDC+extensions. + +Sun Jul 11 21:48:25 1999 Brian Gough + + * test_errnos.c (main): added GSL_ECACHE to handle internal cache + structures which grow and can hit a limit + +Sun Mar 7 17:00:08 1999 Brian Gough + + * gsl_errno.h, test_errnos.c, strerror.c: added GSL_EDIVERGE for + divergent integrals and series + +Sat Feb 20 12:14:47 1999 Brian Gough + + * test_errnos.c (main): added the new error codes to the tests + + * gsl_errno.h: moved all the error codes into a single enum + instead of having a separate enum for GSL_SUCCESS and GSL_FAILURE + +Fri Feb 19 15:56:15 1999 Brian Gough + + * gsl_errno.h, strerror.c: added GSL_CONTINUE as an error code + indicating that an iteration process has not converged and should + be continued for more iterations. + +Tue Nov 17 17:11:31 1998 Brian Gough + + * gsl_test.h: removed #include which should not be + present in installed header files + +Tue Nov 10 15:55:56 1998 Brian Gough + + * test_results.c (gsl_test_abs), gsl_test.h: added gsl_test_abs + for absolute errors, like gsl_test_rel for relative errors + +Fri Oct 23 12:51:01 1998 Brian Gough + + * test_results.c (gsl_test_rel): print a shorter "observed vs + expected" message if the description is 45 characters or longer + +Mon Jun 1 11:02:04 1998 Brian Gough + + * gsl_errno.h: added GSL_EUNSUP for errors caused by a hardware + feature which is not supported on a particular platform + + * renamed test.c to test_results.c to avoid confusion when debugging + other test programs called test.c + +Sat May 30 16:11:34 1998 Brian Gough + + * gsl_errno.h: add GSL_ESING for errors caused by singularities + or other bad function behavior + +Fri May 29 14:41:19 1998 Brian Gough + + * gsl_errno.h: added GSL_EBADLEN to signify bad lengths of + matrices or vectors (e.g. non-conformant sizes in a matrix or + vector multiplication) + +Wed May 27 18:15:34 1998 Brian Gough + + * test.c (gsl_test_str): changed things so that the strings aren't + printed unless the string equality test fails (usually they were + too long) + +Mon May 18 17:58:20 1998 Brian Gough + + * test.c (gsl_test_rel): added a test for numerical quantities, + given a result, an expected result and an allowable relative + error. + (gsl_test_int): added a test for comparing integers + +Sun May 10 16:03:12 1998 Brian Gough + + * gsl_errno.h: added GSL_EROUND for roundoff errors + +Fri May 8 18:50:13 1998 Brian Gough + + * gsl_errno.h: changed GSL_ETIMEOUT to GSL_EMAXITER to describe + the error that occurs when a specified number of iterations is + exceeded. + +Sun Apr 19 19:14:05 1998 Brian Gough + + * strerror.c (gsl_strerror): added an strerror function for making + readable descriptions of the error number + +Wed Apr 15 21:59:57 1998 Brian Gough + + * added a stream handler, for the error stream + + * completely reorganized the files, but the functions are + relatively unchanged + +Wed Apr 8 13:55:48 1998 Brian Gough + + * gsl_errno.h (GSL_ERROR_RETURN_NOTHING): added an error macro + suitable for void functions + +Mon Apr 6 14:10:48 1998 Brian Gough + + * gsl_errno.h: use enum instead of #define for symbolic constants, + so that they can be seen in the debugger + +Sun Apr 5 19:49:17 1998 Brian Gough + + * err/errno.c (gsl_error): now takes gsl_errno as an argument + (this is useful for doing conditional breakpoints) + diff --git a/gsl-2.5/err/Makefile b/gsl-2.5/err/Makefile new file mode 100644 index 00000000..58fff8ab --- /dev/null +++ b/gsl-2.5/err/Makefile @@ -0,0 +1,1025 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# err/Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + + + + +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/gsl +pkgincludedir = $(includedir)/gsl +pkglibdir = $(libdir)/gsl +pkglibexecdir = $(libexecdir)/gsl +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = x86_64-unknown-linux-gnu +host_triplet = x86_64-unknown-linux-gnu +check_PROGRAMS = test$(EXEEXT) +subdir = err +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp \ + $(pkginclude_HEADERS) $(top_srcdir)/test-driver ChangeLog TODO +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +libgslerr_la_LIBADD = +am_libgslerr_la_OBJECTS = error.lo stream.lo message.lo strerror.lo +libgslerr_la_OBJECTS = $(am_libgslerr_la_OBJECTS) +AM_V_lt = $(am__v_lt_$(V)) +am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) +am__v_lt_0 = --silent +am__v_lt_1 = +am_test_OBJECTS = test.$(OBJEXT) +test_OBJECTS = $(am_test_OBJECTS) +test_DEPENDENCIES = libgslerr.la ../test/libgsltest.la \ + ../sys/libgslsys.la ../utils/libutils.la +AM_V_P = $(am__v_P_$(V)) +am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY)) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_$(V)) +am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_$(V)) +am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I. -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_$(V)) +am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_$(V)) +am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libgslerr_la_SOURCES) $(test_SOURCES) +DIST_SOURCES = $(libgslerr_la_SOURCES) $(test_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(pkgincludedir)" +HEADERS = $(pkginclude_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = .test +LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing aclocal-1.13 +AMTAR = $${TAR-tar} +AM_DEFAULT_VERBOSITY = 1 +AR = ar +AS = as +AUTOCONF = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing autoconf +AUTOHEADER = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing autoheader +AUTOMAKE = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing automake-1.13 +AWK = gawk +CC = gcc +CCDEPMODE = depmode=gcc3 +CFLAGS = -g -O2 +CPP = gcc -E +CPPFLAGS = +CYGPATH_W = echo +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +DLLTOOL = false +DSYMUTIL = +DUMPBIN = +ECHO_C = +ECHO_N = -n +ECHO_T = +EGREP = /usr/bin/grep -E +EXEEXT = +FGREP = /usr/bin/grep -F +GREP = /usr/bin/grep +GSLCBLAS_LDFLAGS = +GSL_CFLAGS = -I${prefix}/include +GSL_LDFLAGS = +GSL_LIBADD = +GSL_LIBM = -lm +GSL_LIBS = -L${exec_prefix}/lib -lgsl +GSL_LT_CBLAS_VERSION = 0:0:0 +GSL_LT_VERSION = 24:0:1 +GSL_MAJOR_VERSION = 2 +GSL_MINOR_VERSION = 5 +HAVE_AIX_IEEE_INTERFACE = +HAVE_DARWIN86_IEEE_INTERFACE = +HAVE_DARWIN_IEEE_INTERFACE = +HAVE_FREEBSD_IEEE_INTERFACE = +HAVE_GNUM68K_IEEE_INTERFACE = +HAVE_GNUPPC_IEEE_INTERFACE = +HAVE_GNUSPARC_IEEE_INTERFACE = +HAVE_GNUX86_IEEE_INTERFACE = +HAVE_HPUX11_IEEE_INTERFACE = +HAVE_HPUX_IEEE_INTERFACE = +HAVE_IRIX_IEEE_INTERFACE = +HAVE_NETBSD_IEEE_INTERFACE = +HAVE_OPENBSD_IEEE_INTERFACE = +HAVE_OS2EMX_IEEE_INTERFACE = +HAVE_SOLARIS_IEEE_INTERFACE = +HAVE_SUNOS4_IEEE_INTERFACE = +HAVE_TRU64_IEEE_INTERFACE = +INSTALL = /usr/bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = $(install_sh) -c -s +LD = /usr/bin/ld -m elf_x86_64 +LDFLAGS = +LIBM = -lm +LIBOBJS = +LIBS = -lm +LIBTOOL = $(SHELL) $(top_builddir)/libtool +LIPO = +LN_S = ln -s +LTLIBOBJS = +MAINT = # +MAKEINFO = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing makeinfo +MANIFEST_TOOL = : +MKDIR_P = /usr/bin/mkdir -p +NM = /usr/bin/nm -B +NMEDIT = +OBJDUMP = objdump +OBJEXT = o +OTOOL = +OTOOL64 = +PACKAGE = gsl +PACKAGE_BUGREPORT = +PACKAGE_NAME = gsl +PACKAGE_STRING = gsl 2.5 +PACKAGE_TARNAME = gsl +PACKAGE_URL = +PACKAGE_VERSION = 2.5 +PATH_SEPARATOR = : +RANLIB = ranlib +SED = /usr/bin/sed +SET_MAKE = +SHELL = /bin/sh +STRIP = strip +VERSION = 2.5 +abs_builddir = /home/groups/kipac/chto/package/gsl/gsl-2.5/err +abs_srcdir = /home/groups/kipac/chto/package/gsl/gsl-2.5/err +abs_top_builddir = /home/groups/kipac/chto/package/gsl/gsl-2.5 +abs_top_srcdir = /home/groups/kipac/chto/package/gsl/gsl-2.5 +ac_ct_AR = ar +ac_ct_CC = gcc +ac_ct_DUMPBIN = +am__include = include +am__leading_dot = . +am__quote = +am__tar = $${TAR-tar} chof - "$$tardir" +am__untar = $${TAR-tar} xf - +bindir = ${exec_prefix}/bin +build = x86_64-unknown-linux-gnu +build_alias = +build_cpu = x86_64 +build_os = linux-gnu +build_vendor = unknown +builddir = . +datadir = ${datarootdir} +datarootdir = ${prefix}/share +docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} +dvidir = ${docdir} +exec_prefix = ${prefix} +host = x86_64-unknown-linux-gnu +host_alias = +host_cpu = x86_64 +host_os = linux-gnu +host_vendor = unknown +htmldir = ${docdir} +includedir = ${prefix}/include +infodir = ${datarootdir}/info +install_sh = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/install-sh +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +localedir = ${datarootdir}/locale +localstatedir = ${prefix}/var +mandir = ${datarootdir}/man +mkdir_p = $(MKDIR_P) +oldincludedir = /usr/include +pdfdir = ${docdir} +prefix = /home/groups/kipac/chto/package/gsl/gsl_lib +program_transform_name = s,x,x, +psdir = ${docdir} +sbindir = ${exec_prefix}/sbin +sharedstatedir = ${prefix}/com +srcdir = . +sysconfdir = ${prefix}/etc +target_alias = +top_build_prefix = ../ +top_builddir = .. +top_srcdir = .. +noinst_LTLIBRARIES = libgslerr.la +pkginclude_HEADERS = gsl_errno.h gsl_message.h +libgslerr_la_SOURCES = error.c stream.c message.c strerror.c +TESTS = $(check_PROGRAMS) +test_SOURCES = test.c +test_LDADD = libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu err/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu err/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: # $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): # $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libgslerr.la: $(libgslerr_la_OBJECTS) $(libgslerr_la_DEPENDENCIES) $(EXTRA_libgslerr_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(libgslerr_la_OBJECTS) $(libgslerr_la_LIBADD) $(LIBS) + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) $(EXTRA_test_DEPENDENCIES) + @rm -f test$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_OBJECTS) $(test_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +include ./$(DEPDIR)/error.Plo +include ./$(DEPDIR)/message.Plo +include ./$(DEPDIR)/stream.Plo +include ./$(DEPDIR)/strerror.Plo +include ./$(DEPDIR)/test.Po + +.c.o: + $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# $(AM_V_CC)source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(COMPILE) -c $< + +.c.obj: + $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# $(AM_V_CC)source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: + $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +# $(AM_V_CC)source='$<' object='$@' libtool=yes \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-pkgincludeHEADERS: $(pkginclude_HEADERS) + @$(NORMAL_INSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \ + done + +uninstall-pkgincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + else \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_PROGRAMS) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +test.log: test$(EXEEXT) + @p='test$(EXEEXT)'; \ + b='test'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +#.test$(EXEEXT).log: +# @p='$<'; \ +# $(am__set_b); \ +# $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +# --log-file $$b.log --trs-file $$b.trs \ +# $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +# "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-am +all-am: Makefile $(LTLIBRARIES) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(pkgincludedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-pkgincludeHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-pkgincludeHEADERS + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES cscopelist-am ctags ctags-am distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-pkgincludeHEADERS \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + recheck tags tags-am uninstall uninstall-am \ + uninstall-pkgincludeHEADERS + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gsl-2.5/err/Makefile.am b/gsl-2.5/err/Makefile.am new file mode 100644 index 00000000..9f4175f7 --- /dev/null +++ b/gsl-2.5/err/Makefile.am @@ -0,0 +1,12 @@ +noinst_LTLIBRARIES = libgslerr.la + +pkginclude_HEADERS = gsl_errno.h gsl_message.h + +libgslerr_la_SOURCES = error.c stream.c message.c strerror.c + +check_PROGRAMS = test + +TESTS = $(check_PROGRAMS) + +test_SOURCES = test.c +test_LDADD = libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la diff --git a/gsl-2.5/err/Makefile.in b/gsl-2.5/err/Makefile.in new file mode 100644 index 00000000..06b61471 --- /dev/null +++ b/gsl-2.5/err/Makefile.in @@ -0,0 +1,1025 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + + +VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +check_PROGRAMS = test$(EXEEXT) +subdir = err +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp \ + $(pkginclude_HEADERS) $(top_srcdir)/test-driver ChangeLog TODO +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +libgslerr_la_LIBADD = +am_libgslerr_la_OBJECTS = error.lo stream.lo message.lo strerror.lo +libgslerr_la_OBJECTS = $(am_libgslerr_la_OBJECTS) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +am_test_OBJECTS = test.$(OBJEXT) +test_OBJECTS = $(am_test_OBJECTS) +test_DEPENDENCIES = libgslerr.la ../test/libgsltest.la \ + ../sys/libgslsys.la ../utils/libutils.la +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libgslerr_la_SOURCES) $(test_SOURCES) +DIST_SOURCES = $(libgslerr_la_SOURCES) $(test_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(pkgincludedir)" +HEADERS = $(pkginclude_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = @EXEEXT@ .test +LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +GSLCBLAS_LDFLAGS = @GSLCBLAS_LDFLAGS@ +GSL_CFLAGS = @GSL_CFLAGS@ +GSL_LDFLAGS = @GSL_LDFLAGS@ +GSL_LIBADD = @GSL_LIBADD@ +GSL_LIBM = @GSL_LIBM@ +GSL_LIBS = @GSL_LIBS@ +GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ +GSL_LT_VERSION = @GSL_LT_VERSION@ +GSL_MAJOR_VERSION = @GSL_MAJOR_VERSION@ +GSL_MINOR_VERSION = @GSL_MINOR_VERSION@ +HAVE_AIX_IEEE_INTERFACE = @HAVE_AIX_IEEE_INTERFACE@ +HAVE_DARWIN86_IEEE_INTERFACE = @HAVE_DARWIN86_IEEE_INTERFACE@ +HAVE_DARWIN_IEEE_INTERFACE = @HAVE_DARWIN_IEEE_INTERFACE@ +HAVE_FREEBSD_IEEE_INTERFACE = @HAVE_FREEBSD_IEEE_INTERFACE@ +HAVE_GNUM68K_IEEE_INTERFACE = @HAVE_GNUM68K_IEEE_INTERFACE@ +HAVE_GNUPPC_IEEE_INTERFACE = @HAVE_GNUPPC_IEEE_INTERFACE@ +HAVE_GNUSPARC_IEEE_INTERFACE = @HAVE_GNUSPARC_IEEE_INTERFACE@ +HAVE_GNUX86_IEEE_INTERFACE = @HAVE_GNUX86_IEEE_INTERFACE@ +HAVE_HPUX11_IEEE_INTERFACE = @HAVE_HPUX11_IEEE_INTERFACE@ +HAVE_HPUX_IEEE_INTERFACE = @HAVE_HPUX_IEEE_INTERFACE@ +HAVE_IRIX_IEEE_INTERFACE = @HAVE_IRIX_IEEE_INTERFACE@ +HAVE_NETBSD_IEEE_INTERFACE = @HAVE_NETBSD_IEEE_INTERFACE@ +HAVE_OPENBSD_IEEE_INTERFACE = @HAVE_OPENBSD_IEEE_INTERFACE@ +HAVE_OS2EMX_IEEE_INTERFACE = @HAVE_OS2EMX_IEEE_INTERFACE@ +HAVE_SOLARIS_IEEE_INTERFACE = @HAVE_SOLARIS_IEEE_INTERFACE@ +HAVE_SUNOS4_IEEE_INTERFACE = @HAVE_SUNOS4_IEEE_INTERFACE@ +HAVE_TRU64_IEEE_INTERFACE = @HAVE_TRU64_IEEE_INTERFACE@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBM = @LIBM@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +noinst_LTLIBRARIES = libgslerr.la +pkginclude_HEADERS = gsl_errno.h gsl_message.h +libgslerr_la_SOURCES = error.c stream.c message.c strerror.c +TESTS = $(check_PROGRAMS) +test_SOURCES = test.c +test_LDADD = libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu err/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu err/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libgslerr.la: $(libgslerr_la_OBJECTS) $(libgslerr_la_DEPENDENCIES) $(EXTRA_libgslerr_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(libgslerr_la_OBJECTS) $(libgslerr_la_LIBADD) $(LIBS) + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) $(EXTRA_test_DEPENDENCIES) + @rm -f test$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_OBJECTS) $(test_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/error.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/message.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stream.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strerror.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test.Po@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-pkgincludeHEADERS: $(pkginclude_HEADERS) + @$(NORMAL_INSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \ + done + +uninstall-pkgincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + else \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_PROGRAMS) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +test.log: test$(EXEEXT) + @p='test$(EXEEXT)'; \ + b='test'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +@am__EXEEXT_TRUE@.test$(EXEEXT).log: +@am__EXEEXT_TRUE@ @p='$<'; \ +@am__EXEEXT_TRUE@ $(am__set_b); \ +@am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +@am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ +@am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +@am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-am +all-am: Makefile $(LTLIBRARIES) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(pkgincludedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-pkgincludeHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-pkgincludeHEADERS + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES cscopelist-am ctags ctags-am distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-pkgincludeHEADERS \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + recheck tags tags-am uninstall uninstall-am \ + uninstall-pkgincludeHEADERS + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gsl-2.5/err/TODO b/gsl-2.5/err/TODO new file mode 100644 index 00000000..029f5e53 --- /dev/null +++ b/gsl-2.5/err/TODO @@ -0,0 +1,6 @@ +# -*- org -*- +#+CATEGORY: err + +* Add a GSL_ERROR_MODE environment variable for choosing error +behavior at runtime (???). + diff --git a/gsl-2.5/err/error.c b/gsl-2.5/err/error.c new file mode 100644 index 00000000..51556619 --- /dev/null +++ b/gsl-2.5/err/error.c @@ -0,0 +1,78 @@ +/* err/error.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include + +#include +#include + +gsl_error_handler_t * gsl_error_handler = NULL; + +static void no_error_handler (const char *reason, const char *file, int line, int gsl_errno); + +void +gsl_error (const char * reason, const char * file, int line, int gsl_errno) +{ + if (gsl_error_handler) + { + (*gsl_error_handler) (reason, file, line, gsl_errno); + return ; + } + + gsl_stream_printf ("ERROR", file, line, reason); + + fflush (stdout); + fprintf (stderr, "Default GSL error handler invoked.\n"); + fflush (stderr); + + abort (); +} + +gsl_error_handler_t * +gsl_set_error_handler (gsl_error_handler_t * new_handler) +{ + gsl_error_handler_t * previous_handler = gsl_error_handler; + gsl_error_handler = new_handler; + return previous_handler; +} + + +gsl_error_handler_t * +gsl_set_error_handler_off (void) +{ + gsl_error_handler_t * previous_handler = gsl_error_handler; + gsl_error_handler = no_error_handler; + return previous_handler; +} + +static void +no_error_handler (const char *reason, const char *file, int line, int gsl_errno) +{ + /* do nothing */ + reason = 0; + file = 0; + line = 0; + gsl_errno = 0; + return; +} + + diff --git a/gsl-2.5/err/error.lo b/gsl-2.5/err/error.lo new file mode 100644 index 00000000..f404bf41 --- /dev/null +++ b/gsl-2.5/err/error.lo @@ -0,0 +1,12 @@ +# error.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/error.o' + +# Name of the non-PIC object +non_pic_object='error.o' + diff --git a/gsl-2.5/err/gsl_errno.h b/gsl-2.5/err/gsl_errno.h new file mode 100644 index 00000000..b8e99b43 --- /dev/null +++ b/gsl-2.5/err/gsl_errno.h @@ -0,0 +1,154 @@ +/* err/gsl_errno.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_ERRNO_H__ +#define __GSL_ERRNO_H__ + +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +enum { + GSL_SUCCESS = 0, + GSL_FAILURE = -1, + GSL_CONTINUE = -2, /* iteration has not converged */ + GSL_EDOM = 1, /* input domain error, e.g sqrt(-1) */ + GSL_ERANGE = 2, /* output range error, e.g. exp(1e100) */ + GSL_EFAULT = 3, /* invalid pointer */ + GSL_EINVAL = 4, /* invalid argument supplied by user */ + GSL_EFAILED = 5, /* generic failure */ + GSL_EFACTOR = 6, /* factorization failed */ + GSL_ESANITY = 7, /* sanity check failed - shouldn't happen */ + GSL_ENOMEM = 8, /* malloc failed */ + GSL_EBADFUNC = 9, /* problem with user-supplied function */ + GSL_ERUNAWAY = 10, /* iterative process is out of control */ + GSL_EMAXITER = 11, /* exceeded max number of iterations */ + GSL_EZERODIV = 12, /* tried to divide by zero */ + GSL_EBADTOL = 13, /* user specified an invalid tolerance */ + GSL_ETOL = 14, /* failed to reach the specified tolerance */ + GSL_EUNDRFLW = 15, /* underflow */ + GSL_EOVRFLW = 16, /* overflow */ + GSL_ELOSS = 17, /* loss of accuracy */ + GSL_EROUND = 18, /* failed because of roundoff error */ + GSL_EBADLEN = 19, /* matrix, vector lengths are not conformant */ + GSL_ENOTSQR = 20, /* matrix not square */ + GSL_ESING = 21, /* apparent singularity detected */ + GSL_EDIVERGE = 22, /* integral or series is divergent */ + GSL_EUNSUP = 23, /* requested feature is not supported by the hardware */ + GSL_EUNIMPL = 24, /* requested feature not (yet) implemented */ + GSL_ECACHE = 25, /* cache limit exceeded */ + GSL_ETABLE = 26, /* table limit exceeded */ + GSL_ENOPROG = 27, /* iteration is not making progress towards solution */ + GSL_ENOPROGJ = 28, /* jacobian evaluations are not improving the solution */ + GSL_ETOLF = 29, /* cannot reach the specified tolerance in F */ + GSL_ETOLX = 30, /* cannot reach the specified tolerance in X */ + GSL_ETOLG = 31, /* cannot reach the specified tolerance in gradient */ + GSL_EOF = 32 /* end of file */ +} ; + +void gsl_error (const char * reason, const char * file, int line, + int gsl_errno); + +void gsl_stream_printf (const char *label, const char *file, + int line, const char *reason); + +const char * gsl_strerror (const int gsl_errno); + +typedef void gsl_error_handler_t (const char * reason, const char * file, + int line, int gsl_errno); + +typedef void gsl_stream_handler_t (const char * label, const char * file, + int line, const char * reason); + +gsl_error_handler_t * +gsl_set_error_handler (gsl_error_handler_t * new_handler); + +gsl_error_handler_t * +gsl_set_error_handler_off (void); + +gsl_stream_handler_t * +gsl_set_stream_handler (gsl_stream_handler_t * new_handler); + +FILE * gsl_set_stream (FILE * new_stream); + +/* GSL_ERROR: call the error handler, and return the error code */ + +#define GSL_ERROR(reason, gsl_errno) \ + do { \ + gsl_error (reason, __FILE__, __LINE__, gsl_errno) ; \ + return gsl_errno ; \ + } while (0) + +/* GSL_ERROR_VAL: call the error handler, and return the given value */ + +#define GSL_ERROR_VAL(reason, gsl_errno, value) \ + do { \ + gsl_error (reason, __FILE__, __LINE__, gsl_errno) ; \ + return value ; \ + } while (0) + +/* GSL_ERROR_VOID: call the error handler, and then return + (for void functions which still need to generate an error) */ + +#define GSL_ERROR_VOID(reason, gsl_errno) \ + do { \ + gsl_error (reason, __FILE__, __LINE__, gsl_errno) ; \ + return ; \ + } while (0) + +/* GSL_ERROR_NULL suitable for out-of-memory conditions */ + +#define GSL_ERROR_NULL(reason, gsl_errno) GSL_ERROR_VAL(reason, gsl_errno, 0) + +/* Sometimes you have several status results returned from + * function calls and you want to combine them in some sensible + * way. You cannot produce a "total" status condition, but you can + * pick one from a set of conditions based on an implied hierarchy. + * + * In other words: + * you have: status_a, status_b, ... + * you want: status = (status_a if it is bad, or status_b if it is bad,...) + * + * In this example you consider status_a to be more important and + * it is checked first, followed by the others in the order specified. + * + * Here are some dumb macros to do this. + */ +#define GSL_ERROR_SELECT_2(a,b) ((a) != GSL_SUCCESS ? (a) : ((b) != GSL_SUCCESS ? (b) : GSL_SUCCESS)) +#define GSL_ERROR_SELECT_3(a,b,c) ((a) != GSL_SUCCESS ? (a) : GSL_ERROR_SELECT_2(b,c)) +#define GSL_ERROR_SELECT_4(a,b,c,d) ((a) != GSL_SUCCESS ? (a) : GSL_ERROR_SELECT_3(b,c,d)) +#define GSL_ERROR_SELECT_5(a,b,c,d,e) ((a) != GSL_SUCCESS ? (a) : GSL_ERROR_SELECT_4(b,c,d,e)) + +#define GSL_STATUS_UPDATE(sp, s) do { if ((s) != GSL_SUCCESS) *(sp) = (s);} while(0) + +__END_DECLS + +#endif /* __GSL_ERRNO_H__ */ diff --git a/gsl-2.5/err/gsl_message.h b/gsl-2.5/err/gsl_message.h new file mode 100644 index 00000000..166ff9dd --- /dev/null +++ b/gsl-2.5/err/gsl_message.h @@ -0,0 +1,80 @@ +/* err/gsl_message.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_MESSAGE_H__ +#define __GSL_MESSAGE_H__ +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +/* Provide a general messaging service for client use. Messages can + * be selectively turned off at compile time by defining an + * appropriate message mask. Client code which uses the GSL_MESSAGE() + * macro must provide a mask which is or'ed with the GSL_MESSAGE_MASK. + * + * The messaging service can be completely turned off + * by defining GSL_MESSAGING_OFF. */ + +void gsl_message(const char * message, const char * file, int line, + unsigned int mask); + +#ifndef GSL_MESSAGE_MASK +#define GSL_MESSAGE_MASK 0xffffffffu /* default all messages allowed */ +#endif + +GSL_VAR unsigned int gsl_message_mask ; + +/* Provide some symolic masks for client ease of use. */ + +enum { + GSL_MESSAGE_MASK_A = 1, + GSL_MESSAGE_MASK_B = 2, + GSL_MESSAGE_MASK_C = 4, + GSL_MESSAGE_MASK_D = 8, + GSL_MESSAGE_MASK_E = 16, + GSL_MESSAGE_MASK_F = 32, + GSL_MESSAGE_MASK_G = 64, + GSL_MESSAGE_MASK_H = 128 +} ; + +#ifdef GSL_MESSAGING_OFF /* throw away messages */ +#define GSL_MESSAGE(message, mask) do { } while(0) +#else /* output all messages */ +#define GSL_MESSAGE(message, mask) \ + do { \ + if (mask & GSL_MESSAGE_MASK) \ + gsl_message (message, __FILE__, __LINE__, mask) ; \ + } while (0) +#endif + +__END_DECLS + +#endif /* __GSL_MESSAGE_H__ */ + + diff --git a/gsl-2.5/err/libgslerr.la b/gsl-2.5/err/libgslerr.la new file mode 100644 index 00000000..930c5152 --- /dev/null +++ b/gsl-2.5/err/libgslerr.la @@ -0,0 +1,41 @@ +# libgslerr.la - a libtool library file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='' + +# Names of this library. +library_names='' + +# The name of the static archive. +old_library='libgslerr.a' + +# Linker flags that can not go in dependency_libs. +inherited_linker_flags='' + +# Libraries that this one depends upon. +dependency_libs=' -lm' + +# Names of additional weak libraries provided by this library +weak_library_names='' + +# Version information for libgslerr. +current= +age= +revision= + +# Is this an already installed library? +installed=no + +# Should we warn about portability when linking against -modules? +shouldnotlink=no + +# Files to dlopen/dlpreopen +dlopen='' +dlpreopen='' + +# Directory that this library needs to be installed in: +libdir='' diff --git a/gsl-2.5/err/message.c b/gsl-2.5/err/message.c new file mode 100644 index 00000000..9f0f76f3 --- /dev/null +++ b/gsl-2.5/err/message.c @@ -0,0 +1,38 @@ +/* err/message.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include + +#include +#include + +unsigned int gsl_message_mask = GSL_MESSAGE_MASK; + +void +gsl_message (const char * reason, const char * file, int line, + unsigned int mask) +{ + if (mask & gsl_message_mask) + { + gsl_stream_printf ("MESSAGE", file, line, reason); + } +} diff --git a/gsl-2.5/err/message.lo b/gsl-2.5/err/message.lo new file mode 100644 index 00000000..9e54a8c8 --- /dev/null +++ b/gsl-2.5/err/message.lo @@ -0,0 +1,12 @@ +# message.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/message.o' + +# Name of the non-PIC object +non_pic_object='message.o' + diff --git a/gsl-2.5/err/stream.c b/gsl-2.5/err/stream.c new file mode 100644 index 00000000..cbb2ffaa --- /dev/null +++ b/gsl-2.5/err/stream.c @@ -0,0 +1,66 @@ +/* err/stream.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include + +#include +#include + +FILE * gsl_stream = NULL ; +gsl_stream_handler_t * gsl_stream_handler = NULL; + +void +gsl_stream_printf (const char *label, const char *file, int line, + const char *reason) +{ + if (gsl_stream == NULL) + { + gsl_stream = stderr; + } + if (gsl_stream_handler) + { + (*gsl_stream_handler) (label, file, line, reason); + return; + } + fprintf (gsl_stream, "gsl: %s:%d: %s: %s\n", file, line, label, reason); + +} + +gsl_stream_handler_t * +gsl_set_stream_handler (gsl_stream_handler_t * new_handler) +{ + gsl_stream_handler_t * previous_handler = gsl_stream_handler; + gsl_stream_handler = new_handler; + return previous_handler; +} + +FILE * +gsl_set_stream (FILE * new_stream) +{ + FILE * previous_stream; + if (gsl_stream == NULL) { + gsl_stream = stderr; + } + previous_stream = gsl_stream; + gsl_stream = new_stream; + return previous_stream; +} diff --git a/gsl-2.5/err/stream.lo b/gsl-2.5/err/stream.lo new file mode 100644 index 00000000..5412cc0a --- /dev/null +++ b/gsl-2.5/err/stream.lo @@ -0,0 +1,12 @@ +# stream.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/stream.o' + +# Name of the non-PIC object +non_pic_object='stream.o' + diff --git a/gsl-2.5/err/strerror.c b/gsl-2.5/err/strerror.c new file mode 100644 index 00000000..eb913774 --- /dev/null +++ b/gsl-2.5/err/strerror.c @@ -0,0 +1,101 @@ +/* err/strerror.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include + +const char * +gsl_strerror (const int gsl_errno) +{ + switch (gsl_errno) + { + case GSL_SUCCESS: + return "success" ; + case GSL_FAILURE: + return "failure" ; + case GSL_CONTINUE: + return "the iteration has not converged yet"; + case GSL_EDOM: + return "input domain error" ; + case GSL_ERANGE: + return "output range error" ; + case GSL_EFAULT: + return "invalid pointer" ; + case GSL_EINVAL: + return "invalid argument supplied by user" ; + case GSL_EFAILED: + return "generic failure" ; + case GSL_EFACTOR: + return "factorization failed" ; + case GSL_ESANITY: + return "sanity check failed - shouldn't happen" ; + case GSL_ENOMEM: + return "malloc failed" ; + case GSL_EBADFUNC: + return "problem with user-supplied function"; + case GSL_ERUNAWAY: + return "iterative process is out of control"; + case GSL_EMAXITER: + return "exceeded max number of iterations" ; + case GSL_EZERODIV: + return "tried to divide by zero" ; + case GSL_EBADTOL: + return "specified tolerance is invalid or theoretically unattainable" ; + case GSL_ETOL: + return "failed to reach the specified tolerance" ; + case GSL_EUNDRFLW: + return "underflow" ; + case GSL_EOVRFLW: + return "overflow" ; + case GSL_ELOSS: + return "loss of accuracy" ; + case GSL_EROUND: + return "roundoff error" ; + case GSL_EBADLEN: + return "matrix/vector sizes are not conformant" ; + case GSL_ENOTSQR: + return "matrix not square" ; + case GSL_ESING: + return "singularity or extremely bad function behavior detected" ; + case GSL_EDIVERGE: + return "integral or series is divergent" ; + case GSL_EUNSUP: + return "the required feature is not supported by this hardware platform"; + case GSL_EUNIMPL: + return "the requested feature is not (yet) implemented"; + case GSL_ECACHE: + return "cache limit exceeded"; + case GSL_ETABLE: + return "table limit exceeded"; + case GSL_ENOPROG: + return "iteration is not making progress towards solution"; + case GSL_ENOPROGJ: + return "jacobian evaluations are not improving the solution"; + case GSL_ETOLF: + return "cannot reach the specified tolerance in F"; + case GSL_ETOLX: + return "cannot reach the specified tolerance in X"; + case GSL_ETOLG: + return "cannot reach the specified tolerance in gradient"; + case GSL_EOF: + return "end of file"; + default: + return "unknown error code" ; + } +} diff --git a/gsl-2.5/err/strerror.lo b/gsl-2.5/err/strerror.lo new file mode 100644 index 00000000..c3100c21 --- /dev/null +++ b/gsl-2.5/err/strerror.lo @@ -0,0 +1,12 @@ +# strerror.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/strerror.o' + +# Name of the non-PIC object +non_pic_object='strerror.o' + diff --git a/gsl-2.5/err/test b/gsl-2.5/err/test new file mode 100755 index 00000000..634765a7 Binary files /dev/null and b/gsl-2.5/err/test differ diff --git a/gsl-2.5/err/test-suite.log b/gsl-2.5/err/test-suite.log new file mode 100644 index 00000000..ba7203ce --- /dev/null +++ b/gsl-2.5/err/test-suite.log @@ -0,0 +1,14 @@ +================================= + gsl 2.5: err/test-suite.log +================================= + +# TOTAL: 1 +# PASS: 1 +# SKIP: 0 +# XFAIL: 0 +# FAIL: 0 +# XPASS: 0 +# ERROR: 0 + +.. contents:: :depth: 2 + diff --git a/gsl-2.5/err/test.c b/gsl-2.5/err/test.c new file mode 100644 index 00000000..c2fb0812 --- /dev/null +++ b/gsl-2.5/err/test.c @@ -0,0 +1,116 @@ +/* err/test_errnos.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include + +#include +#include + +#include +#include + +#define CHECK(x) errors[n].number = x ; errors[n].name = #x ; n++ ; +#define MAX_ERRS 64 + +int verbose = 0 ; + +int +main (void) +{ + int i, j, n = 0 ; + + struct { + int number; + const char * name; + } errors[MAX_ERRS] ; + + CHECK(GSL_SUCCESS); + CHECK(GSL_FAILURE); + CHECK(GSL_CONTINUE); + CHECK(GSL_EDOM); + CHECK(GSL_ERANGE); + CHECK(GSL_EFAULT); + CHECK(GSL_EINVAL); + CHECK(GSL_EFAILED); + CHECK(GSL_EFACTOR); + CHECK(GSL_ESANITY); + CHECK(GSL_ENOMEM); + CHECK(GSL_EBADFUNC); + CHECK(GSL_ERUNAWAY); + CHECK(GSL_EMAXITER); + CHECK(GSL_EZERODIV); + CHECK(GSL_EBADTOL); + CHECK(GSL_ETOL); + CHECK(GSL_EUNDRFLW); + CHECK(GSL_EOVRFLW); + CHECK(GSL_ELOSS); + CHECK(GSL_EROUND); + CHECK(GSL_EBADLEN); + CHECK(GSL_ENOTSQR); + CHECK(GSL_ESING); + CHECK(GSL_EDIVERGE); + CHECK(GSL_EUNSUP); + CHECK(GSL_EUNIMPL); + CHECK(GSL_ECACHE); + CHECK(GSL_ETABLE); + CHECK(GSL_ENOPROG); + CHECK(GSL_ENOPROGJ); + CHECK(GSL_ETOLF); + CHECK(GSL_ETOLX); + CHECK(GSL_ETOLG); + CHECK(GSL_EOF); + + for (i = 0 ; i < n ; i++) + { + if (verbose) printf ("%s = %d\n", errors[i].name, errors[i].number) ; + } + + for (i = 0; i < n; i++) + { + int status = 0; + for (j = 0; j < n; j++) + { + if (j != i) + status |= (errors[i].number == errors[j].number); + } + + gsl_test (status, "%s is distinct from other error values", + errors[i].name); + } + + for (i = 0; i < n; i++) + { + int status = 0; + int e1 = errors[i].number ; + for (j = 0; j < n; j++) + { + if (j != i) + { + int e2 = errors[j].number; + status |= (gsl_strerror(e1) == gsl_strerror(e2)) ; + } + } + gsl_test (status, "%s has a distinct error message", + errors[i].name); + } + + + exit (gsl_test_summary ()); +} + diff --git a/gsl-2.5/err/test.log b/gsl-2.5/err/test.log new file mode 100644 index 00000000..7b48c901 --- /dev/null +++ b/gsl-2.5/err/test.log @@ -0,0 +1 @@ +Completed [70/70] diff --git a/gsl-2.5/err/test.trs b/gsl-2.5/err/test.trs new file mode 100644 index 00000000..3f0f396c --- /dev/null +++ b/gsl-2.5/err/test.trs @@ -0,0 +1,4 @@ +:test-result: PASS +:global-test-result: PASS +:recheck: no +:copy-in-global-log: no diff --git a/gsl-2.5/fft/.deps/dft.Plo b/gsl-2.5/fft/.deps/dft.Plo new file mode 100644 index 00000000..f22092b3 --- /dev/null +++ b/gsl-2.5/fft/.deps/dft.Plo @@ -0,0 +1,188 @@ +dft.lo: dft.c /usr/include/stdc-predef.h ../config.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/byteswap.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/bits/byteswap-16.h /usr/include/sys/types.h \ + /usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib-float.h \ + /usr/include/math.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_errno.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_types.h ../gsl/gsl_complex.h ../gsl/gsl_dft_complex.h \ + ../gsl/gsl_math.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_nan.h ../gsl/gsl_pow_int.h \ + ../gsl/gsl_minmax.h ../gsl/gsl_fft.h ../gsl/gsl_dft_complex_float.h \ + complex_internal.h ../templates_on.h dft_source.c ../templates_off.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_dft_complex.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_fft.h: + +../gsl/gsl_dft_complex_float.h: + +complex_internal.h: + +../templates_on.h: + +dft_source.c: + +../templates_off.h: diff --git a/gsl-2.5/fft/.deps/fft.Plo b/gsl-2.5/fft/.deps/fft.Plo new file mode 100644 index 00000000..65ee2fb3 --- /dev/null +++ b/gsl-2.5/fft/.deps/fft.Plo @@ -0,0 +1,282 @@ +fft.lo: fft.c /usr/include/stdc-predef.h ../config.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/byteswap.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/bits/byteswap-16.h /usr/include/sys/types.h \ + /usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib-float.h \ + /usr/include/string.h /usr/include/xlocale.h /usr/include/bits/string.h \ + /usr/include/bits/string2.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_errno.h /usr/include/stdio.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_types.h ../gsl/gsl_complex.h ../gsl/gsl_fft_complex.h \ + ../gsl/gsl_math.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_nan.h ../gsl/gsl_pow_int.h \ + ../gsl/gsl_minmax.h ../gsl/gsl_fft.h ../gsl/gsl_fft_complex_float.h \ + ../templates_on.h bitreverse.c complex_internal.h bitreverse.h \ + ../templates_off.h factorize.c factorize.h c_init.c c_main.c c_pass.h \ + c_pass_2.c c_pass_3.c c_pass_4.c c_pass_5.c c_pass_6.c c_pass_7.c \ + c_pass_n.c c_radix2.c ../gsl/gsl_fft_halfcomplex.h ../gsl/gsl_fft_real.h \ + ../gsl/gsl_fft_halfcomplex_float.h ../gsl/gsl_fft_real_float.h hc_init.c \ + hc_main.c hc_pass.h hc_pass_2.c hc_pass_3.c hc_pass_4.c hc_pass_5.c \ + hc_pass_n.c hc_radix2.c hc_unpack.c real_init.c real_main.c real_pass.h \ + real_pass_2.c real_pass_3.c real_pass_4.c real_pass_5.c real_pass_n.c \ + real_radix2.c real_unpack.c + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string.h: + +/usr/include/bits/string2.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_fft_complex.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_fft.h: + +../gsl/gsl_fft_complex_float.h: + +../templates_on.h: + +bitreverse.c: + +complex_internal.h: + +bitreverse.h: + +../templates_off.h: + +factorize.c: + +factorize.h: + +c_init.c: + +c_main.c: + +c_pass.h: + +c_pass_2.c: + +c_pass_3.c: + +c_pass_4.c: + +c_pass_5.c: + +c_pass_6.c: + +c_pass_7.c: + +c_pass_n.c: + +c_radix2.c: + +../gsl/gsl_fft_halfcomplex.h: + +../gsl/gsl_fft_real.h: + +../gsl/gsl_fft_halfcomplex_float.h: + +../gsl/gsl_fft_real_float.h: + +hc_init.c: + +hc_main.c: + +hc_pass.h: + +hc_pass_2.c: + +hc_pass_3.c: + +hc_pass_4.c: + +hc_pass_5.c: + +hc_pass_n.c: + +hc_radix2.c: + +hc_unpack.c: + +real_init.c: + +real_main.c: + +real_pass.h: + +real_pass_2.c: + +real_pass_3.c: + +real_pass_4.c: + +real_pass_5.c: + +real_pass_n.c: + +real_radix2.c: + +real_unpack.c: diff --git a/gsl-2.5/fft/.deps/signals.Po b/gsl-2.5/fft/.deps/signals.Po new file mode 100644 index 00000000..be28a44f --- /dev/null +++ b/gsl-2.5/fft/.deps/signals.Po @@ -0,0 +1,193 @@ +signals.o: signals.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h /usr/include/stdlib.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_math.h ../gsl/gsl_sys.h \ + ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_complex.h \ + ../gsl/gsl_errno.h /usr/include/stdio.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_dft_complex.h ../gsl/gsl_fft.h ../gsl/gsl_dft_complex_float.h \ + complex_internal.h urand.c ../templates_on.h signals_source.c signals.h \ + ../templates_off.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +/usr/include/stdlib.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_dft_complex.h: + +../gsl/gsl_fft.h: + +../gsl/gsl_dft_complex_float.h: + +complex_internal.h: + +urand.c: + +../templates_on.h: + +signals_source.c: + +signals.h: + +../templates_off.h: diff --git a/gsl-2.5/fft/.deps/test.Po b/gsl-2.5/fft/.deps/test.Po new file mode 100644 index 00000000..07eb7660 --- /dev/null +++ b/gsl-2.5/fft/.deps/test.Po @@ -0,0 +1,232 @@ +test.o: test.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/string.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/xlocale.h /usr/include/bits/string.h \ + /usr/include/bits/string2.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/byteswap.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/bits/byteswap-16.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_complex.h ../gsl/gsl_errno.h /usr/include/errno.h \ + /usr/include/bits/errno.h /usr/include/linux/errno.h \ + /usr/include/asm/errno.h /usr/include/asm-generic/errno.h \ + /usr/include/asm-generic/errno-base.h ../gsl/gsl_types.h \ + ../gsl/gsl_dft_complex.h ../gsl/gsl_math.h ../gsl/gsl_sys.h \ + ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h ../gsl/gsl_precision.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_fft.h \ + ../gsl/gsl_fft_complex.h ../gsl/gsl_fft_complex_float.h \ + ../gsl/gsl_fft_real.h ../gsl/gsl_fft_real_float.h \ + ../gsl/gsl_fft_halfcomplex.h ../gsl/gsl_fft_halfcomplex_float.h \ + ../gsl/gsl_ieee_utils.h ../gsl/gsl_test.h complex_internal.h \ + ../templates_on.h compare_source.c compare.h bitreverse.c bitreverse.h \ + test_complex_source.c signals.h test_real_source.c test_trap_source.c \ + ../templates_off.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/string.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string.h: + +/usr/include/bits/string2.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_dft_complex.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_fft.h: + +../gsl/gsl_fft_complex.h: + +../gsl/gsl_fft_complex_float.h: + +../gsl/gsl_fft_real.h: + +../gsl/gsl_fft_real_float.h: + +../gsl/gsl_fft_halfcomplex.h: + +../gsl/gsl_fft_halfcomplex_float.h: + +../gsl/gsl_ieee_utils.h: + +../gsl/gsl_test.h: + +complex_internal.h: + +../templates_on.h: + +compare_source.c: + +compare.h: + +bitreverse.c: + +bitreverse.h: + +test_complex_source.c: + +signals.h: + +test_real_source.c: + +test_trap_source.c: + +../templates_off.h: diff --git a/gsl-2.5/fft/.libs/libgslfft.la b/gsl-2.5/fft/.libs/libgslfft.la new file mode 120000 index 00000000..66a3533f --- /dev/null +++ b/gsl-2.5/fft/.libs/libgslfft.la @@ -0,0 +1 @@ +../libgslfft.la \ No newline at end of file diff --git a/gsl-2.5/fft/ChangeLog b/gsl-2.5/fft/ChangeLog new file mode 100644 index 00000000..fb74e844 --- /dev/null +++ b/gsl-2.5/fft/ChangeLog @@ -0,0 +1,140 @@ +2009-07-09 Brian Gough + + * real_init.c (FUNCTION): handle NULL argument in free + + * hc_init.c (FUNCTION): handle NULL argument in free + + * c_init.c (FUNCTION): handle NULL argument in free + +2008-07-03 Brian Gough + + * Makefile.am (INCLUDES): use top_srcdir instead of top_builddir + +2006-03-16 Brian Gough + + * changed to gsl_fft_forward and gsl_fft_backward enums throughout + internally instead of forward and backward. + +2005-05-19 Brian Gough + + * Makefile.am (noinst_HEADERS): removed unused real.c + +Tue Jul 24 15:16:50 2001 Brian Gough + + * single precision fft now uses float throughout, rather than + mixing float and double. + +Mon Jul 16 12:38:29 2001 Brian Gough + + * reorganized function names and split work + +Tue May 1 14:35:52 2001 Brian Gough + + * Makefile.am (libgslfft_la_SOURCES): removed spurious headers + from SOURCES line + +2000-10-19 Brian Gough + + * hc_init.c (FUNCTION): scratch space changed to n elements + instead of 2*n (apparently the routine previously allocated too + much space) + +Wed Feb 16 14:43:42 2000 Brian Gough + + * Makefile.am (pkginclude_HEADERS): added missing + pkginclude_HEADERS for float functions. + +Mon Feb 14 15:11:55 2000 Brian Gough + + * made all internal functions static (required a slight + reorganization) + +Fri Aug 6 11:20:25 1999 Brian Gough + + * removed dependence on rand() and RAND_MAX + +Sun Feb 14 17:31:21 1999 Brian Gough + + * started converting header files to use gsl_complex_packed_array + more consistently + +Mon Dec 14 22:55:00 1998 Brian Gough + + * real_init.c: fixed a possible malloc(0) bug found by Electric Fence. + +Mon Nov 23 15:47:13 1998 Brian Gough + + * gsl_fft_complex.h, gsl_fft_complex_float.h: removed data[][] + type arguments from prototypes since this seems to be non-ANSI. + Use **data instead. + +1998-11-09 + + * compare_source.c: fix up int/unsigned format types to prevent + warnings + +Wed Oct 28 15:07:22 1998 Brian Gough + + * c.c: added #include for memcpy + + * c_float.c: added #include for memcpy + +Thu Sep 10 12:05:07 1998 Brian Gough + + * removed wavetable from function names to make them shorter and + avoid confusion, e.g. gsl_fft_complex_wavetable_alloc -> + gsl_fft_complex_alloc + +Sat Sep 5 22:32:19 1998 Brian Gough + + * major work done on templatizing everything so that you can do an + fft of a float or a double vector. + +Tue Sep 1 16:44:06 1998 Brian Gough + + * c_main.c: renamed c.c to c_main.c + +Tue Jul 28 11:30:43 1998 Brian Gough + + * renamed gsl_fft_signals.h to fft_signals.h (not exported) + + * fft.h: a place to keep some local macros + + * c.c: renamed complex.c to c.c + +Mon Jul 27 12:46:25 1998 Brian Gough + + * bitreverse.c: removed gsl_ftt_ prefix from non-exported functions + +Wed Jun 10 17:36:01 1998 Brian Gough + + * test.c: Eliminated the need for getopt + + * test_radix2.c: Eliminated the need for getopt + + * test_trap.c: Eliminated the need for getopt + +Mon Apr 27 18:48:58 1998 Brian Gough + + * fft_alloc functions now return a pointer to a newly allocated + wavetable struct (or a null pointer if there isn't enough memory) + +Fri Apr 10 15:12:37 1998 Brian Gough + + * renamed complex_*.c and halfcomplex_*.c to c_*.c and hc_*.c to + avoid linker complaints about long filenames on some platforms + +Sun Mar 29 15:56:34 1998 Brian Gough + + * To be compatible with other architectures use size_t everywhere + instead of unsigned int + +Sat Mar 21 17:28:26 1998 Brian Gough + + * factorize.c (gsl_fft_factorize): Stopped returning the sum of + factors in the status variable. The user can compute it if + necessary. + +1998-01-27 Mark Galassi + + * Makefile.am: fixed a typo: removed trailing \ at the end of this file. diff --git a/gsl-2.5/fft/Makefile b/gsl-2.5/fft/Makefile new file mode 100644 index 00000000..7b7daa75 --- /dev/null +++ b/gsl-2.5/fft/Makefile @@ -0,0 +1,1031 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# fft/Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + + + + +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/gsl +pkgincludedir = $(includedir)/gsl +pkglibdir = $(libdir)/gsl +pkglibexecdir = $(libexecdir)/gsl +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = x86_64-unknown-linux-gnu +host_triplet = x86_64-unknown-linux-gnu +check_PROGRAMS = test$(EXEEXT) +subdir = fft +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp \ + $(noinst_HEADERS) $(pkginclude_HEADERS) \ + $(top_srcdir)/test-driver ChangeLog TODO +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +libgslfft_la_LIBADD = +am_libgslfft_la_OBJECTS = dft.lo fft.lo +libgslfft_la_OBJECTS = $(am_libgslfft_la_OBJECTS) +AM_V_lt = $(am__v_lt_$(V)) +am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) +am__v_lt_0 = --silent +am__v_lt_1 = +am_test_OBJECTS = test.$(OBJEXT) signals.$(OBJEXT) +test_OBJECTS = $(am_test_OBJECTS) +test_DEPENDENCIES = libgslfft.la ../ieee-utils/libgslieeeutils.la \ + ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la \ + ../utils/libutils.la +AM_V_P = $(am__v_P_$(V)) +am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY)) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_$(V)) +am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_$(V)) +am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I. -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_$(V)) +am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_$(V)) +am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libgslfft_la_SOURCES) $(test_SOURCES) +DIST_SOURCES = $(libgslfft_la_SOURCES) $(test_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(pkgincludedir)" +HEADERS = $(noinst_HEADERS) $(pkginclude_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = .test +LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing aclocal-1.13 +AMTAR = $${TAR-tar} +AM_DEFAULT_VERBOSITY = 1 +AR = ar +AS = as +AUTOCONF = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing autoconf +AUTOHEADER = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing autoheader +AUTOMAKE = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing automake-1.13 +AWK = gawk +CC = gcc +CCDEPMODE = depmode=gcc3 +CFLAGS = -g -O2 +CPP = gcc -E +CPPFLAGS = +CYGPATH_W = echo +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +DLLTOOL = false +DSYMUTIL = +DUMPBIN = +ECHO_C = +ECHO_N = -n +ECHO_T = +EGREP = /usr/bin/grep -E +EXEEXT = +FGREP = /usr/bin/grep -F +GREP = /usr/bin/grep +GSLCBLAS_LDFLAGS = +GSL_CFLAGS = -I${prefix}/include +GSL_LDFLAGS = +GSL_LIBADD = +GSL_LIBM = -lm +GSL_LIBS = -L${exec_prefix}/lib -lgsl +GSL_LT_CBLAS_VERSION = 0:0:0 +GSL_LT_VERSION = 24:0:1 +GSL_MAJOR_VERSION = 2 +GSL_MINOR_VERSION = 5 +HAVE_AIX_IEEE_INTERFACE = +HAVE_DARWIN86_IEEE_INTERFACE = +HAVE_DARWIN_IEEE_INTERFACE = +HAVE_FREEBSD_IEEE_INTERFACE = +HAVE_GNUM68K_IEEE_INTERFACE = +HAVE_GNUPPC_IEEE_INTERFACE = +HAVE_GNUSPARC_IEEE_INTERFACE = +HAVE_GNUX86_IEEE_INTERFACE = +HAVE_HPUX11_IEEE_INTERFACE = +HAVE_HPUX_IEEE_INTERFACE = +HAVE_IRIX_IEEE_INTERFACE = +HAVE_NETBSD_IEEE_INTERFACE = +HAVE_OPENBSD_IEEE_INTERFACE = +HAVE_OS2EMX_IEEE_INTERFACE = +HAVE_SOLARIS_IEEE_INTERFACE = +HAVE_SUNOS4_IEEE_INTERFACE = +HAVE_TRU64_IEEE_INTERFACE = +INSTALL = /usr/bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = $(install_sh) -c -s +LD = /usr/bin/ld -m elf_x86_64 +LDFLAGS = +LIBM = -lm +LIBOBJS = +LIBS = -lm +LIBTOOL = $(SHELL) $(top_builddir)/libtool +LIPO = +LN_S = ln -s +LTLIBOBJS = +MAINT = # +MAKEINFO = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing makeinfo +MANIFEST_TOOL = : +MKDIR_P = /usr/bin/mkdir -p +NM = /usr/bin/nm -B +NMEDIT = +OBJDUMP = objdump +OBJEXT = o +OTOOL = +OTOOL64 = +PACKAGE = gsl +PACKAGE_BUGREPORT = +PACKAGE_NAME = gsl +PACKAGE_STRING = gsl 2.5 +PACKAGE_TARNAME = gsl +PACKAGE_URL = +PACKAGE_VERSION = 2.5 +PATH_SEPARATOR = : +RANLIB = ranlib +SED = /usr/bin/sed +SET_MAKE = +SHELL = /bin/sh +STRIP = strip +VERSION = 2.5 +abs_builddir = /home/groups/kipac/chto/package/gsl/gsl-2.5/fft +abs_srcdir = /home/groups/kipac/chto/package/gsl/gsl-2.5/fft +abs_top_builddir = /home/groups/kipac/chto/package/gsl/gsl-2.5 +abs_top_srcdir = /home/groups/kipac/chto/package/gsl/gsl-2.5 +ac_ct_AR = ar +ac_ct_CC = gcc +ac_ct_DUMPBIN = +am__include = include +am__leading_dot = . +am__quote = +am__tar = $${TAR-tar} chof - "$$tardir" +am__untar = $${TAR-tar} xf - +bindir = ${exec_prefix}/bin +build = x86_64-unknown-linux-gnu +build_alias = +build_cpu = x86_64 +build_os = linux-gnu +build_vendor = unknown +builddir = . +datadir = ${datarootdir} +datarootdir = ${prefix}/share +docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} +dvidir = ${docdir} +exec_prefix = ${prefix} +host = x86_64-unknown-linux-gnu +host_alias = +host_cpu = x86_64 +host_os = linux-gnu +host_vendor = unknown +htmldir = ${docdir} +includedir = ${prefix}/include +infodir = ${datarootdir}/info +install_sh = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/install-sh +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +localedir = ${datarootdir}/locale +localstatedir = ${prefix}/var +mandir = ${datarootdir}/man +mkdir_p = $(MKDIR_P) +oldincludedir = /usr/include +pdfdir = ${docdir} +prefix = /home/groups/kipac/chto/package/gsl/gsl_lib +program_transform_name = s,x,x, +psdir = ${docdir} +sbindir = ${exec_prefix}/sbin +sharedstatedir = ${prefix}/com +srcdir = . +sysconfdir = ${prefix}/etc +target_alias = +top_build_prefix = ../ +top_builddir = .. +top_srcdir = .. +noinst_LTLIBRARIES = libgslfft.la +pkginclude_HEADERS = gsl_fft.h gsl_fft_complex.h gsl_fft_halfcomplex.h gsl_fft_real.h gsl_dft_complex.h gsl_dft_complex_float.h gsl_fft_complex_float.h gsl_fft_halfcomplex_float.h gsl_fft_real_float.h +AM_CPPFLAGS = -I$(top_srcdir) +libgslfft_la_SOURCES = dft.c fft.c +noinst_HEADERS = c_pass.h hc_pass.h real_pass.h signals.h signals_source.c c_main.c c_init.c c_pass_2.c c_pass_3.c c_pass_4.c c_pass_5.c c_pass_6.c c_pass_7.c c_pass_n.c c_radix2.c bitreverse.c bitreverse.h factorize.c factorize.h hc_init.c hc_pass_2.c hc_pass_3.c hc_pass_4.c hc_pass_5.c hc_pass_n.c hc_radix2.c hc_unpack.c real_init.c real_pass_2.c real_pass_3.c real_pass_4.c real_pass_5.c real_pass_n.c real_radix2.c real_unpack.c compare.h compare_source.c dft_source.c hc_main.c real_main.c test_complex_source.c test_real_source.c test_trap_source.c urand.c complex_internal.h +TESTS = $(check_PROGRAMS) +test_SOURCES = test.c signals.c +test_LDADD = libgslfft.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu fft/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu fft/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: # $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): # $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libgslfft.la: $(libgslfft_la_OBJECTS) $(libgslfft_la_DEPENDENCIES) $(EXTRA_libgslfft_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(libgslfft_la_OBJECTS) $(libgslfft_la_LIBADD) $(LIBS) + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) $(EXTRA_test_DEPENDENCIES) + @rm -f test$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_OBJECTS) $(test_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +include ./$(DEPDIR)/dft.Plo +include ./$(DEPDIR)/fft.Plo +include ./$(DEPDIR)/signals.Po +include ./$(DEPDIR)/test.Po + +.c.o: + $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# $(AM_V_CC)source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(COMPILE) -c $< + +.c.obj: + $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# $(AM_V_CC)source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: + $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +# $(AM_V_CC)source='$<' object='$@' libtool=yes \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-pkgincludeHEADERS: $(pkginclude_HEADERS) + @$(NORMAL_INSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \ + done + +uninstall-pkgincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + else \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_PROGRAMS) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +test.log: test$(EXEEXT) + @p='test$(EXEEXT)'; \ + b='test'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +#.test$(EXEEXT).log: +# @p='$<'; \ +# $(am__set_b); \ +# $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +# --log-file $$b.log --trs-file $$b.trs \ +# $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +# "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-am +all-am: Makefile $(LTLIBRARIES) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(pkgincludedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-pkgincludeHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-pkgincludeHEADERS + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES cscopelist-am ctags ctags-am distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-pkgincludeHEADERS \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + recheck tags tags-am uninstall uninstall-am \ + uninstall-pkgincludeHEADERS + + +#errs_LDADD = libgslfft.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la +#benchmark_LDADD = libgslfft.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gsl-2.5/fft/Makefile.am b/gsl-2.5/fft/Makefile.am new file mode 100644 index 00000000..1f3ba0b5 --- /dev/null +++ b/gsl-2.5/fft/Makefile.am @@ -0,0 +1,21 @@ +noinst_LTLIBRARIES = libgslfft.la + +pkginclude_HEADERS = gsl_fft.h gsl_fft_complex.h gsl_fft_halfcomplex.h gsl_fft_real.h gsl_dft_complex.h gsl_dft_complex_float.h gsl_fft_complex_float.h gsl_fft_halfcomplex_float.h gsl_fft_real_float.h + +AM_CPPFLAGS = -I$(top_srcdir) + +libgslfft_la_SOURCES = dft.c fft.c + +noinst_HEADERS = c_pass.h hc_pass.h real_pass.h signals.h signals_source.c c_main.c c_init.c c_pass_2.c c_pass_3.c c_pass_4.c c_pass_5.c c_pass_6.c c_pass_7.c c_pass_n.c c_radix2.c bitreverse.c bitreverse.h factorize.c factorize.h hc_init.c hc_pass_2.c hc_pass_3.c hc_pass_4.c hc_pass_5.c hc_pass_n.c hc_radix2.c hc_unpack.c real_init.c real_pass_2.c real_pass_3.c real_pass_4.c real_pass_5.c real_pass_n.c real_radix2.c real_unpack.c compare.h compare_source.c dft_source.c hc_main.c real_main.c test_complex_source.c test_real_source.c test_trap_source.c urand.c complex_internal.h + +TESTS = $(check_PROGRAMS) + +check_PROGRAMS = test + +test_SOURCES = test.c signals.c + +test_LDADD = libgslfft.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la + +#errs_LDADD = libgslfft.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la +#benchmark_LDADD = libgslfft.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la + diff --git a/gsl-2.5/fft/Makefile.in b/gsl-2.5/fft/Makefile.in new file mode 100644 index 00000000..a09353fb --- /dev/null +++ b/gsl-2.5/fft/Makefile.in @@ -0,0 +1,1031 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + + +VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +check_PROGRAMS = test$(EXEEXT) +subdir = fft +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp \ + $(noinst_HEADERS) $(pkginclude_HEADERS) \ + $(top_srcdir)/test-driver ChangeLog TODO +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +libgslfft_la_LIBADD = +am_libgslfft_la_OBJECTS = dft.lo fft.lo +libgslfft_la_OBJECTS = $(am_libgslfft_la_OBJECTS) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +am_test_OBJECTS = test.$(OBJEXT) signals.$(OBJEXT) +test_OBJECTS = $(am_test_OBJECTS) +test_DEPENDENCIES = libgslfft.la ../ieee-utils/libgslieeeutils.la \ + ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la \ + ../utils/libutils.la +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libgslfft_la_SOURCES) $(test_SOURCES) +DIST_SOURCES = $(libgslfft_la_SOURCES) $(test_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(pkgincludedir)" +HEADERS = $(noinst_HEADERS) $(pkginclude_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = @EXEEXT@ .test +LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +GSLCBLAS_LDFLAGS = @GSLCBLAS_LDFLAGS@ +GSL_CFLAGS = @GSL_CFLAGS@ +GSL_LDFLAGS = @GSL_LDFLAGS@ +GSL_LIBADD = @GSL_LIBADD@ +GSL_LIBM = @GSL_LIBM@ +GSL_LIBS = @GSL_LIBS@ +GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ +GSL_LT_VERSION = @GSL_LT_VERSION@ +GSL_MAJOR_VERSION = @GSL_MAJOR_VERSION@ +GSL_MINOR_VERSION = @GSL_MINOR_VERSION@ +HAVE_AIX_IEEE_INTERFACE = @HAVE_AIX_IEEE_INTERFACE@ +HAVE_DARWIN86_IEEE_INTERFACE = @HAVE_DARWIN86_IEEE_INTERFACE@ +HAVE_DARWIN_IEEE_INTERFACE = @HAVE_DARWIN_IEEE_INTERFACE@ +HAVE_FREEBSD_IEEE_INTERFACE = @HAVE_FREEBSD_IEEE_INTERFACE@ +HAVE_GNUM68K_IEEE_INTERFACE = @HAVE_GNUM68K_IEEE_INTERFACE@ +HAVE_GNUPPC_IEEE_INTERFACE = @HAVE_GNUPPC_IEEE_INTERFACE@ +HAVE_GNUSPARC_IEEE_INTERFACE = @HAVE_GNUSPARC_IEEE_INTERFACE@ +HAVE_GNUX86_IEEE_INTERFACE = @HAVE_GNUX86_IEEE_INTERFACE@ +HAVE_HPUX11_IEEE_INTERFACE = @HAVE_HPUX11_IEEE_INTERFACE@ +HAVE_HPUX_IEEE_INTERFACE = @HAVE_HPUX_IEEE_INTERFACE@ +HAVE_IRIX_IEEE_INTERFACE = @HAVE_IRIX_IEEE_INTERFACE@ +HAVE_NETBSD_IEEE_INTERFACE = @HAVE_NETBSD_IEEE_INTERFACE@ +HAVE_OPENBSD_IEEE_INTERFACE = @HAVE_OPENBSD_IEEE_INTERFACE@ +HAVE_OS2EMX_IEEE_INTERFACE = @HAVE_OS2EMX_IEEE_INTERFACE@ +HAVE_SOLARIS_IEEE_INTERFACE = @HAVE_SOLARIS_IEEE_INTERFACE@ +HAVE_SUNOS4_IEEE_INTERFACE = @HAVE_SUNOS4_IEEE_INTERFACE@ +HAVE_TRU64_IEEE_INTERFACE = @HAVE_TRU64_IEEE_INTERFACE@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBM = @LIBM@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +noinst_LTLIBRARIES = libgslfft.la +pkginclude_HEADERS = gsl_fft.h gsl_fft_complex.h gsl_fft_halfcomplex.h gsl_fft_real.h gsl_dft_complex.h gsl_dft_complex_float.h gsl_fft_complex_float.h gsl_fft_halfcomplex_float.h gsl_fft_real_float.h +AM_CPPFLAGS = -I$(top_srcdir) +libgslfft_la_SOURCES = dft.c fft.c +noinst_HEADERS = c_pass.h hc_pass.h real_pass.h signals.h signals_source.c c_main.c c_init.c c_pass_2.c c_pass_3.c c_pass_4.c c_pass_5.c c_pass_6.c c_pass_7.c c_pass_n.c c_radix2.c bitreverse.c bitreverse.h factorize.c factorize.h hc_init.c hc_pass_2.c hc_pass_3.c hc_pass_4.c hc_pass_5.c hc_pass_n.c hc_radix2.c hc_unpack.c real_init.c real_pass_2.c real_pass_3.c real_pass_4.c real_pass_5.c real_pass_n.c real_radix2.c real_unpack.c compare.h compare_source.c dft_source.c hc_main.c real_main.c test_complex_source.c test_real_source.c test_trap_source.c urand.c complex_internal.h +TESTS = $(check_PROGRAMS) +test_SOURCES = test.c signals.c +test_LDADD = libgslfft.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu fft/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu fft/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libgslfft.la: $(libgslfft_la_OBJECTS) $(libgslfft_la_DEPENDENCIES) $(EXTRA_libgslfft_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(libgslfft_la_OBJECTS) $(libgslfft_la_LIBADD) $(LIBS) + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) $(EXTRA_test_DEPENDENCIES) + @rm -f test$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_OBJECTS) $(test_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dft.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fft.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/signals.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test.Po@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-pkgincludeHEADERS: $(pkginclude_HEADERS) + @$(NORMAL_INSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \ + done + +uninstall-pkgincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + else \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_PROGRAMS) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +test.log: test$(EXEEXT) + @p='test$(EXEEXT)'; \ + b='test'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +@am__EXEEXT_TRUE@.test$(EXEEXT).log: +@am__EXEEXT_TRUE@ @p='$<'; \ +@am__EXEEXT_TRUE@ $(am__set_b); \ +@am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +@am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ +@am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +@am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-am +all-am: Makefile $(LTLIBRARIES) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(pkgincludedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-pkgincludeHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-pkgincludeHEADERS + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES cscopelist-am ctags ctags-am distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-pkgincludeHEADERS \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + recheck tags tags-am uninstall uninstall-am \ + uninstall-pkgincludeHEADERS + + +#errs_LDADD = libgslfft.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la +#benchmark_LDADD = libgslfft.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gsl-2.5/fft/TODO b/gsl-2.5/fft/TODO new file mode 100644 index 00000000..3f6f3588 --- /dev/null +++ b/gsl-2.5/fft/TODO @@ -0,0 +1,17 @@ +# -*- org -*- +#+CATEGORY: fft + +* Sine and Cosine Transforms from FFTPACK. + +* A simple multidimensional fft. + +* Convolutions. This will need different interfaces corresponding to +the type of underlying FFT (radix-2, mixed-radix, radix-2 real, +mixed-radix real). The convolution function should be fft'ed before +being passed, so that the function can be used in a loop. The main +point of the function being to do the index manipulation for the +multiplication F*G. Theoretically someone might want to convolve real +and complex data together which could be done but would double the +number of interfaces. It would be reasonable to restrict the +convolutions to real-real and complex-complex. + diff --git a/gsl-2.5/fft/bitreverse.c b/gsl-2.5/fft/bitreverse.c new file mode 100644 index 00000000..f781dfe5 --- /dev/null +++ b/gsl-2.5/fft/bitreverse.c @@ -0,0 +1,101 @@ +/* fft/bitreverse.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include + +#include "complex_internal.h" +#include "bitreverse.h" + +static int +FUNCTION(fft_complex,bitreverse_order) (BASE data[], + const size_t stride, + const size_t n, + size_t logn) +{ + /* This is the Goldrader bit-reversal algorithm */ + + size_t i; + size_t j = 0; + + logn = 0 ; /* not needed for this algorithm */ + + for (i = 0; i < n - 1; i++) + { + size_t k = n / 2 ; + + if (i < j) + { + const BASE tmp_real = REAL(data,stride,i); + const BASE tmp_imag = IMAG(data,stride,i); + REAL(data,stride,i) = REAL(data,stride,j); + IMAG(data,stride,i) = IMAG(data,stride,j); + REAL(data,stride,j) = tmp_real; + IMAG(data,stride,j) = tmp_imag; + } + + while (k <= j) + { + j = j - k ; + k = k / 2 ; + } + + j += k ; + } + + return 0; +} + + +static int +FUNCTION(fft_real,bitreverse_order) (BASE data[], + const size_t stride, + const size_t n, + size_t logn) +{ + /* This is the Goldrader bit-reversal algorithm */ + + size_t i; + size_t j = 0; + + logn = 0 ; /* not needed for this algorithm */ + + for (i = 0; i < n - 1; i++) + { + size_t k = n / 2 ; + + if (i < j) + { + const BASE tmp = VECTOR(data,stride,i); + VECTOR(data,stride,i) = VECTOR(data,stride,j); + VECTOR(data,stride,j) = tmp; + } + + while (k <= j) + { + j = j - k ; + k = k / 2 ; + } + + j += k ; + } + + return 0; +} + diff --git a/gsl-2.5/fft/bitreverse.h b/gsl-2.5/fft/bitreverse.h new file mode 100644 index 00000000..d36e72ac --- /dev/null +++ b/gsl-2.5/fft/bitreverse.h @@ -0,0 +1,33 @@ +/* fft/bitreverse.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + + +static int FUNCTION(fft_complex,bitreverse_order) (BASE data[], + const size_t stride, + const size_t n, + size_t logn) ; + +static int FUNCTION(fft_real,bitreverse_order) (BASE data[], + const size_t stride, + const size_t n, + size_t logn) ; + + + + diff --git a/gsl-2.5/fft/c_init.c b/gsl-2.5/fft/c_init.c new file mode 100644 index 00000000..7d88014a --- /dev/null +++ b/gsl-2.5/fft/c_init.c @@ -0,0 +1,195 @@ +/* fft/c_init.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007, 2009 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +TYPE(gsl_fft_complex_wavetable) * +FUNCTION(gsl_fft_complex_wavetable,alloc) (size_t n) +{ + int status ; + size_t i; + size_t n_factors; + size_t t, product, product_1, q; + double d_theta; + + TYPE(gsl_fft_complex_wavetable) * wavetable ; + + if (n == 0) + { + GSL_ERROR_VAL ("length n must be positive integer", GSL_EDOM, 0); + } + + wavetable = (TYPE(gsl_fft_complex_wavetable) *) + malloc(sizeof(TYPE(gsl_fft_complex_wavetable))); + + if (wavetable == NULL) + { + GSL_ERROR_VAL ("failed to allocate struct", GSL_ENOMEM, 0); + } + + wavetable->trig = (TYPE(gsl_complex) *) malloc (n * sizeof (TYPE(gsl_complex))); + + if (wavetable->trig == NULL) + { + free(wavetable) ; /* error in constructor, prevent memory leak */ + + GSL_ERROR_VAL ("failed to allocate trigonometric lookup table", + GSL_ENOMEM, 0); + } + + wavetable->n = n ; + + status = fft_complex_factorize (n, &n_factors, wavetable->factor); + + if (status) + { + /* exception in constructor, avoid memory leak */ + + free (wavetable->trig); + free (wavetable); + + GSL_ERROR_VAL ("factorization failed", GSL_EFACTOR, 0); + }; + + wavetable->nf = n_factors; + + d_theta = -2.0 * M_PI / ((double) n); + + t = 0; + product = 1; + for (i = 0; i < n_factors; i++) + { + size_t j; + const size_t factor = wavetable->factor[i]; + wavetable->twiddle[i] = wavetable->trig + t; + product_1 = product; /* product_1 = p_(i-1) */ + product *= factor; + q = n / product; + + for (j = 1; j < factor; j++) + { + size_t k; + size_t m = 0; + for (k = 1; k <= q; k++) + { + double theta; + m = m + j * product_1; + m = m % n; + theta = d_theta * m; /* d_theta*j*k*p_(i-1) */ + GSL_REAL(wavetable->trig[t]) = cos (theta); + GSL_IMAG(wavetable->trig[t]) = sin (theta); + + t++; + } + } + } + + if (t > n) + { + /* exception in constructor, avoid memory leak */ + + free (wavetable->trig); + free (wavetable); + + GSL_ERROR_VAL ("overflowed trigonometric lookup table", + GSL_ESANITY, 0); + } + + return wavetable; +} + + +TYPE(gsl_fft_complex_workspace) * +FUNCTION(gsl_fft_complex_workspace,alloc) (size_t n) +{ + TYPE(gsl_fft_complex_workspace) * workspace ; + + if (n == 0) + { + GSL_ERROR_VAL ("length n must be positive integer", GSL_EDOM, 0); + } + + workspace = (TYPE(gsl_fft_complex_workspace) *) + malloc(sizeof(TYPE(gsl_fft_complex_workspace))); + + if (workspace == NULL) + { + GSL_ERROR_VAL ("failed to allocate struct", GSL_ENOMEM, 0); + } + + workspace->n = n ; + + workspace->scratch = (BASE *) malloc (2 * n * sizeof (BASE)); + + if (workspace->scratch == NULL) + { + free(workspace) ; /* error in constructor, prevent memory leak */ + + GSL_ERROR_VAL ("failed to allocate scratch space", GSL_ENOMEM, 0); + } + + return workspace; +} + + +void +FUNCTION(gsl_fft_complex_wavetable,free) (TYPE(gsl_fft_complex_wavetable) * wavetable) +{ + RETURN_IF_NULL (wavetable); + /* release trigonometric lookup tables */ + + free (wavetable->trig); + wavetable->trig = NULL; + + free (wavetable) ; +} + +void +FUNCTION(gsl_fft_complex_workspace,free) (TYPE(gsl_fft_complex_workspace) * workspace) +{ + RETURN_IF_NULL (workspace); + /* release scratch space */ + + free (workspace->scratch); + workspace->scratch = NULL; + free (workspace) ; +} + + +int +FUNCTION(gsl_fft_complex,memcpy) (TYPE(gsl_fft_complex_wavetable) * dest, + TYPE(gsl_fft_complex_wavetable) * src) +{ + int i, n, nf ; + + if (dest->n != src->n) + { + GSL_ERROR ("length of src and dest do not match", GSL_EINVAL); + } + + n = dest->n ; + nf = dest->nf ; + + memcpy(dest->trig, src->trig, n * sizeof (double)) ; + + for (i = 0 ; i < nf ; i++) + { + dest->twiddle[i] = dest->trig + (src->twiddle[i] - src->trig) ; + } + + return 0 ; +} diff --git a/gsl-2.5/fft/c_main.c b/gsl-2.5/fft/c_main.c new file mode 100644 index 00000000..3034be0d --- /dev/null +++ b/gsl-2.5/fft/c_main.c @@ -0,0 +1,223 @@ +/* fft/c_main.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include "c_pass.h" + +int +FUNCTION(gsl_fft_complex,forward) (TYPE(gsl_complex_packed_array) data, + const size_t stride, + const size_t n, + const TYPE(gsl_fft_complex_wavetable) * wavetable, + TYPE(gsl_fft_complex_workspace) * work) +{ + gsl_fft_direction sign = gsl_fft_forward; + int status = FUNCTION(gsl_fft_complex,transform) (data, stride, n, + wavetable, work, sign); + return status; +} + +int +FUNCTION(gsl_fft_complex,backward) (TYPE(gsl_complex_packed_array) data, + const size_t stride, + const size_t n, + const TYPE(gsl_fft_complex_wavetable) * wavetable, + TYPE(gsl_fft_complex_workspace) * work) +{ + gsl_fft_direction sign = gsl_fft_backward; + int status = FUNCTION(gsl_fft_complex,transform) (data, stride, n, + wavetable, work, sign); + return status; +} + +int +FUNCTION(gsl_fft_complex,inverse) (TYPE(gsl_complex_packed_array) data, + const size_t stride, + const size_t n, + const TYPE(gsl_fft_complex_wavetable) * wavetable, + TYPE(gsl_fft_complex_workspace) * work) +{ + gsl_fft_direction sign = gsl_fft_backward; + int status = FUNCTION(gsl_fft_complex,transform) (data, stride, n, + wavetable, work, sign); + + if (status) + { + return status; + } + + /* normalize inverse fft with 1/n */ + + { + const ATOMIC norm = ONE / (ATOMIC)n; + size_t i; + for (i = 0; i < n; i++) + { + REAL(data,stride,i) *= norm; + IMAG(data,stride,i) *= norm; + } + } + return status; +} + +int +FUNCTION(gsl_fft_complex,transform) (TYPE(gsl_complex_packed_array) data, + const size_t stride, + const size_t n, + const TYPE(gsl_fft_complex_wavetable) * wavetable, + TYPE(gsl_fft_complex_workspace) * work, + const gsl_fft_direction sign) +{ + const size_t nf = wavetable->nf; + + size_t i; + + size_t q, product = 1; + + TYPE(gsl_complex) *twiddle1, *twiddle2, *twiddle3, *twiddle4, + *twiddle5, *twiddle6; + + size_t state = 0; + + BASE * const scratch = work->scratch; + + BASE * in = data; + size_t istride = stride; + + BASE * out = scratch; + size_t ostride = 1; + + if (n == 0) + { + GSL_ERROR ("length n must be positive integer", GSL_EDOM); + } + + if (n == 1) + { /* FFT of 1 data point is the identity */ + return 0; + } + + if (n != wavetable->n) + { + GSL_ERROR ("wavetable does not match length of data", GSL_EINVAL); + } + + if (n != work->n) + { + GSL_ERROR ("workspace does not match length of data", GSL_EINVAL); + } + + for (i = 0; i < nf; i++) + { + const size_t factor = wavetable->factor[i]; + product *= factor; + q = n / product; + + if (state == 0) + { + in = data; + istride = stride; + out = scratch; + ostride = 1; + state = 1; + } + else + { + in = scratch; + istride = 1; + out = data; + ostride = stride; + state = 0; + } + + if (factor == 2) + { + twiddle1 = wavetable->twiddle[i]; + FUNCTION(fft_complex,pass_2) (in, istride, out, ostride, sign, + product, n, twiddle1); + } + else if (factor == 3) + { + twiddle1 = wavetable->twiddle[i]; + twiddle2 = twiddle1 + q; + FUNCTION(fft_complex,pass_3) (in, istride, out, ostride, sign, + product, n, twiddle1, twiddle2); + } + else if (factor == 4) + { + twiddle1 = wavetable->twiddle[i]; + twiddle2 = twiddle1 + q; + twiddle3 = twiddle2 + q; + FUNCTION(fft_complex,pass_4) (in, istride, out, ostride, sign, + product, n, twiddle1, twiddle2, + twiddle3); + } + else if (factor == 5) + { + twiddle1 = wavetable->twiddle[i]; + twiddle2 = twiddle1 + q; + twiddle3 = twiddle2 + q; + twiddle4 = twiddle3 + q; + FUNCTION(fft_complex,pass_5) (in, istride, out, ostride, sign, + product, n, twiddle1, twiddle2, + twiddle3, twiddle4); + } + else if (factor == 6) + { + twiddle1 = wavetable->twiddle[i]; + twiddle2 = twiddle1 + q; + twiddle3 = twiddle2 + q; + twiddle4 = twiddle3 + q; + twiddle5 = twiddle4 + q; + FUNCTION(fft_complex,pass_6) (in, istride, out, ostride, sign, + product, n, twiddle1, twiddle2, + twiddle3, twiddle4, twiddle5); + } + else if (factor == 7) + { + twiddle1 = wavetable->twiddle[i]; + twiddle2 = twiddle1 + q; + twiddle3 = twiddle2 + q; + twiddle4 = twiddle3 + q; + twiddle5 = twiddle4 + q; + twiddle6 = twiddle5 + q; + FUNCTION(fft_complex,pass_7) (in, istride, out, ostride, sign, + product, n, twiddle1, twiddle2, + twiddle3, twiddle4, twiddle5, + twiddle6); + } + else + { + twiddle1 = wavetable->twiddle[i]; + FUNCTION(fft_complex,pass_n) (in, istride, out, ostride, sign, + factor, product, n, twiddle1); + } + } + + if (state == 1) /* copy results back from scratch to data */ + { + for (i = 0; i < n; i++) + { + REAL(data,stride,i) = REAL(scratch,1,i) ; + IMAG(data,stride,i) = IMAG(scratch,1,i) ; + } + } + + return 0; + +} diff --git a/gsl-2.5/fft/c_pass.h b/gsl-2.5/fft/c_pass.h new file mode 100644 index 00000000..3ed79439 --- /dev/null +++ b/gsl-2.5/fft/c_pass.h @@ -0,0 +1,106 @@ +/* fft/c_pass.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +static int +FUNCTION(fft_complex,pass_2) (const BASE in[], + const size_t istride, + BASE out[], + const size_t ostride, + const gsl_fft_direction sign, + const size_t product, + const size_t n, + const TYPE(gsl_complex) twiddle[]); + +static int +FUNCTION(fft_complex,pass_3) (const BASE in[], + const size_t istride, + BASE out[], + const size_t ostride, + const gsl_fft_direction sign, + const size_t product, + const size_t n, + const TYPE(gsl_complex) twiddle1[], + const TYPE(gsl_complex) twiddle2[]); + +static int +FUNCTION(fft_complex,pass_4) (const BASE in[], + const size_t istride, + BASE out[], + const size_t ostride, + const gsl_fft_direction sign, + const size_t product, + const size_t n, + const TYPE(gsl_complex) twiddle1[], + const TYPE(gsl_complex) twiddle2[], + const TYPE(gsl_complex) twiddle3[]); + +static int +FUNCTION(fft_complex,pass_5) (const BASE in[], + const size_t istride, + BASE out[], + const size_t ostride, + const gsl_fft_direction sign, + const size_t product, + const size_t n, + const TYPE(gsl_complex) twiddle1[], + const TYPE(gsl_complex) twiddle2[], + const TYPE(gsl_complex) twiddle3[], + const TYPE(gsl_complex) twiddle4[]); + +static int +FUNCTION(fft_complex,pass_6) (const BASE in[], + const size_t istride, + BASE out[], + const size_t ostride, + const gsl_fft_direction sign, + const size_t product, + const size_t n, + const TYPE(gsl_complex) twiddle1[], + const TYPE(gsl_complex) twiddle2[], + const TYPE(gsl_complex) twiddle3[], + const TYPE(gsl_complex) twiddle4[], + const TYPE(gsl_complex) twiddle5[]); + +static int +FUNCTION(fft_complex,pass_7) (const BASE in[], + const size_t istride, + BASE out[], + const size_t ostride, + const gsl_fft_direction sign, + const size_t product, + const size_t n, + const TYPE(gsl_complex) twiddle1[], + const TYPE(gsl_complex) twiddle2[], + const TYPE(gsl_complex) twiddle3[], + const TYPE(gsl_complex) twiddle4[], + const TYPE(gsl_complex) twiddle5[], + const TYPE(gsl_complex) twiddle6[]); + + +static int +FUNCTION(fft_complex,pass_n) (BASE in[], + const size_t istride, + BASE out[], + const size_t ostride, + const gsl_fft_direction sign, + const size_t factor, + const size_t product, + const size_t n, + const TYPE(gsl_complex) twiddle[]); + diff --git a/gsl-2.5/fft/c_pass_2.c b/gsl-2.5/fft/c_pass_2.c new file mode 100644 index 00000000..c5d91d90 --- /dev/null +++ b/gsl-2.5/fft/c_pass_2.c @@ -0,0 +1,98 @@ +/* fft/c_pass_2.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +static int +FUNCTION(fft_complex,pass_2) (const BASE in[], + const size_t istride, + BASE out[], + const size_t ostride, + const gsl_fft_direction sign, + const size_t product, + const size_t n, + const TYPE(gsl_complex) twiddle[]) +{ + size_t i = 0, j = 0; + size_t k, k1; + + const size_t factor = 2; + const size_t m = n / factor; + const size_t q = n / product; + const size_t product_1 = product / factor; + const size_t jump = (factor - 1) * product_1; + + for (k = 0; k < q; k++) + { + ATOMIC w_real, w_imag; + + if (k == 0) + { + w_real = 1.0; + w_imag = 0.0; + } + else + { + if (sign == gsl_fft_forward) + { + /* forward tranform */ + w_real = GSL_REAL(twiddle[k - 1]); + w_imag = GSL_IMAG(twiddle[k - 1]); + } + else + { + /* backward tranform: w -> conjugate(w) */ + w_real = GSL_REAL(twiddle[k - 1]); + w_imag = -GSL_IMAG(twiddle[k - 1]); + } + } + + for (k1 = 0; k1 < product_1; k1++) + { + const ATOMIC z0_real = REAL(in,istride,i); + const ATOMIC z0_imag = IMAG(in,istride,i); + + const ATOMIC z1_real = REAL(in,istride,i+m); + const ATOMIC z1_imag = IMAG(in,istride,i+m); + + /* compute x = W(2) z */ + + /* x0 = z0 + z1 */ + const ATOMIC x0_real = z0_real + z1_real; + const ATOMIC x0_imag = z0_imag + z1_imag; + + /* x1 = z0 - z1 */ + const ATOMIC x1_real = z0_real - z1_real; + const ATOMIC x1_imag = z0_imag - z1_imag; + + /* apply twiddle factors */ + + /* out0 = 1 * x0 */ + REAL(out,ostride,j) = x0_real; + IMAG(out,ostride,j) = x0_imag; + + /* out1 = w * x1 */ + REAL(out,ostride,j+product_1) = w_real * x1_real - w_imag * x1_imag; + IMAG(out,ostride,j+product_1) = w_real * x1_imag + w_imag * x1_real; + + i++; + j++; + } + j += jump; + } + return 0; +} diff --git a/gsl-2.5/fft/c_pass_3.c b/gsl-2.5/fft/c_pass_3.c new file mode 100644 index 00000000..a45a38f8 --- /dev/null +++ b/gsl-2.5/fft/c_pass_3.c @@ -0,0 +1,127 @@ +/* fft/c_pass_3.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +static int +FUNCTION(fft_complex,pass_3) (const BASE in[], + const size_t istride, + BASE out[], + const size_t ostride, + const gsl_fft_direction sign, + const size_t product, + const size_t n, + const TYPE(gsl_complex) * twiddle1, + const TYPE(gsl_complex) * twiddle2) +{ + size_t i = 0, j = 0; + size_t k, k1; + + const size_t factor = 3; + const size_t m = n / factor; + const size_t q = n / product; + const size_t product_1 = product / factor; + const size_t jump = (factor - 1) * product_1; + + const ATOMIC tau = sqrt (3.0) / 2.0; + + for (k = 0; k < q; k++) + { + ATOMIC w1_real, w1_imag, w2_real, w2_imag; + + if (k == 0) + { + w1_real = 1.0; + w1_imag = 0.0; + w2_real = 1.0; + w2_imag = 0.0; + } + else + { + if (sign == gsl_fft_forward) + { + /* forward tranform */ + w1_real = GSL_REAL(twiddle1[k - 1]); + w1_imag = GSL_IMAG(twiddle1[k - 1]); + w2_real = GSL_REAL(twiddle2[k - 1]); + w2_imag = GSL_IMAG(twiddle2[k - 1]); + } + else + { + /* backward tranform: w -> conjugate(w) */ + w1_real = GSL_REAL(twiddle1[k - 1]); + w1_imag = -GSL_IMAG(twiddle1[k - 1]); + w2_real = GSL_REAL(twiddle2[k - 1]); + w2_imag = -GSL_IMAG(twiddle2[k - 1]); + } + } + + for (k1 = 0; k1 < product_1; k1++) + { + const ATOMIC z0_real = REAL(in,istride,i); + const ATOMIC z0_imag = IMAG(in,istride,i); + const ATOMIC z1_real = REAL(in,istride,i+m); + const ATOMIC z1_imag = IMAG(in,istride,i+m); + const ATOMIC z2_real = REAL(in,istride,i+2*m); + const ATOMIC z2_imag = IMAG(in,istride,i+2*m); + + /* compute x = W(3) z */ + + /* t1 = z1 + z2 */ + const ATOMIC t1_real = z1_real + z2_real; + const ATOMIC t1_imag = z1_imag + z2_imag; + + /* t2 = z0 - t1/2 */ + const ATOMIC t2_real = z0_real - t1_real / 2.0; + const ATOMIC t2_imag = z0_imag - t1_imag / 2.0; + + /* t3 = (+/-) sin(pi/3)*(z1 - z2) */ + const ATOMIC t3_real = ((int) sign) * tau * (z1_real - z2_real); + const ATOMIC t3_imag = ((int) sign) * tau * (z1_imag - z2_imag); + + /* x0 = z0 + t1 */ + const ATOMIC x0_real = z0_real + t1_real; + const ATOMIC x0_imag = z0_imag + t1_imag; + + /* x1 = t2 + i t3 */ + const ATOMIC x1_real = t2_real - t3_imag; + const ATOMIC x1_imag = t2_imag + t3_real; + + /* x2 = t2 - i t3 */ + const ATOMIC x2_real = t2_real + t3_imag; + const ATOMIC x2_imag = t2_imag - t3_real; + + /* apply twiddle factors */ + + /* to0 = 1 * x0 */ + REAL(out,ostride,j) = x0_real; + IMAG(out,ostride,j) = x0_imag; + + /* to1 = w1 * x1 */ + REAL(out,ostride,j+product_1) = w1_real * x1_real - w1_imag * x1_imag; + IMAG(out,ostride,j+product_1) = w1_real * x1_imag + w1_imag * x1_real; + + /* to2 = w2 * x2 */ + REAL(out,ostride,j+2*product_1) = w2_real * x2_real - w2_imag * x2_imag; + IMAG(out,ostride,j+2*product_1) = w2_real * x2_imag + w2_imag * x2_real; + + i++; j++; + } + j += jump; + } + return 0; +} diff --git a/gsl-2.5/fft/c_pass_4.c b/gsl-2.5/fft/c_pass_4.c new file mode 100644 index 00000000..34cb1f3c --- /dev/null +++ b/gsl-2.5/fft/c_pass_4.c @@ -0,0 +1,147 @@ +/* fft/c_pass_4.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +static int +FUNCTION(fft_complex,pass_4) (const BASE in[], + const size_t istride, + BASE out[], + const size_t ostride, + const gsl_fft_direction sign, + const size_t product, + const size_t n, + const TYPE(gsl_complex) twiddle1[], + const TYPE(gsl_complex) twiddle2[], + const TYPE(gsl_complex) twiddle3[]) +{ + size_t i = 0, j = 0; + size_t k, k1; + + const size_t factor = 4; + const size_t m = n / factor; + const size_t q = n / product; + const size_t p_1 = product / factor; + const size_t jump = (factor - 1) * p_1; + + for (k = 0; k < q; k++) + { + ATOMIC w1_real, w1_imag, w2_real, w2_imag, w3_real, w3_imag; + + if (k == 0) + { + w1_real = 1.0; + w1_imag = 0.0; + w2_real = 1.0; + w2_imag = 0.0; + w3_real = 1.0; + w3_imag = 0.0; + } + else + { + if (sign == gsl_fft_forward) + { + /* forward tranform */ + w1_real = GSL_REAL(twiddle1[k - 1]); + w1_imag = GSL_IMAG(twiddle1[k - 1]); + w2_real = GSL_REAL(twiddle2[k - 1]); + w2_imag = GSL_IMAG(twiddle2[k - 1]); + w3_real = GSL_REAL(twiddle3[k - 1]); + w3_imag = GSL_IMAG(twiddle3[k - 1]); + } + else + { + /* backward tranform: w -> conjugate(w) */ + w1_real = GSL_REAL(twiddle1[k - 1]); + w1_imag = -GSL_IMAG(twiddle1[k - 1]); + w2_real = GSL_REAL(twiddle2[k - 1]); + w2_imag = -GSL_IMAG(twiddle2[k - 1]); + w3_real = GSL_REAL(twiddle3[k - 1]); + w3_imag = -GSL_IMAG(twiddle3[k - 1]); + } + } + + for (k1 = 0; k1 < p_1; k1++) + { + const ATOMIC z0_real = REAL(in,istride,i); + const ATOMIC z0_imag = IMAG(in,istride,i); + const ATOMIC z1_real = REAL(in,istride,i+m); + const ATOMIC z1_imag = IMAG(in,istride,i+m); + const ATOMIC z2_real = REAL(in,istride,i+2*m); + const ATOMIC z2_imag = IMAG(in,istride,i+2*m); + const ATOMIC z3_real = REAL(in,istride,i+3*m); + const ATOMIC z3_imag = IMAG(in,istride,i+3*m); + + /* compute x = W(4) z */ + + /* t1 = z0 + z2 */ + const ATOMIC t1_real = z0_real + z2_real; + const ATOMIC t1_imag = z0_imag + z2_imag; + + /* t2 = z1 + z3 */ + const ATOMIC t2_real = z1_real + z3_real; + const ATOMIC t2_imag = z1_imag + z3_imag; + + /* t3 = z0 - z2 */ + const ATOMIC t3_real = z0_real - z2_real; + const ATOMIC t3_imag = z0_imag - z2_imag; + + /* t4 = (+/-) (z1 - z3) */ + const ATOMIC t4_real = ((int) sign) * (z1_real - z3_real); + const ATOMIC t4_imag = ((int) sign) * (z1_imag - z3_imag); + + /* x0 = t1 + t2 */ + const ATOMIC x0_real = t1_real + t2_real; + const ATOMIC x0_imag = t1_imag + t2_imag; + + /* x1 = t3 + i t4 */ + const ATOMIC x1_real = t3_real - t4_imag; + const ATOMIC x1_imag = t3_imag + t4_real; + + /* x2 = t1 - t2 */ + const ATOMIC x2_real = t1_real - t2_real; + const ATOMIC x2_imag = t1_imag - t2_imag; + + /* x3 = t3 - i t4 */ + const ATOMIC x3_real = t3_real + t4_imag; + const ATOMIC x3_imag = t3_imag - t4_real; + + /* apply twiddle factors */ + + /* to0 = 1 * x0 */ + REAL(out,ostride,j) = x0_real; + IMAG(out,ostride,j) = x0_imag; + + /* to1 = w1 * x1 */ + REAL(out, ostride, j + p_1) = w1_real * x1_real - w1_imag * x1_imag; + IMAG(out, ostride, j + p_1) = w1_real * x1_imag + w1_imag * x1_real; + + /* to2 = w2 * x2 */ + REAL(out, ostride, j + 2 * p_1) = w2_real * x2_real - w2_imag * x2_imag; + IMAG(out, ostride, j + 2 * p_1) = w2_real * x2_imag + w2_imag * x2_real; + + /* to3 = w3 * x3 */ + REAL(out, ostride, j + 3 * p_1) = w3_real * x3_real - w3_imag * x3_imag; + IMAG(out, ostride, j + 3 * p_1) = w3_real * x3_imag + w3_imag * x3_real; + + i++; + j++; + } + j += jump; + } + return 0; +} diff --git a/gsl-2.5/fft/c_pass_5.c b/gsl-2.5/fft/c_pass_5.c new file mode 100644 index 00000000..7c0f8603 --- /dev/null +++ b/gsl-2.5/fft/c_pass_5.c @@ -0,0 +1,205 @@ +/* fft/c_pass_5.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +static int +FUNCTION(fft_complex,pass_5) (const BASE in[], + const size_t istride, + BASE out[], + const size_t ostride, + const gsl_fft_direction sign, + const size_t product, + const size_t n, + const TYPE(gsl_complex) twiddle1[], + const TYPE(gsl_complex) twiddle2[], + const TYPE(gsl_complex) twiddle3[], + const TYPE(gsl_complex) twiddle4[]) +{ + size_t i = 0, j = 0; + size_t k, k1; + + const size_t factor = 5; + const size_t m = n / factor; + const size_t q = n / product; + const size_t p_1 = product / factor; + const size_t jump = (factor - 1) * p_1; + + const ATOMIC sin_2pi_by_5 = sin (2.0 * M_PI / 5.0); + const ATOMIC sin_2pi_by_10 = sin (2.0 * M_PI / 10.0); + + for (k = 0; k < q; k++) + { + + ATOMIC w1_real, w1_imag, w2_real, w2_imag, w3_real, w3_imag, w4_real, + w4_imag; + + if (k == 0) + { + w1_real = 1.0; + w1_imag = 0.0; + w2_real = 1.0; + w2_imag = 0.0; + w3_real = 1.0; + w3_imag = 0.0; + w4_real = 1.0; + w4_imag = 0.0; + } + else + { + if (sign == gsl_fft_forward) + { + /* forward tranform */ + w1_real = GSL_REAL(twiddle1[k - 1]); + w1_imag = GSL_IMAG(twiddle1[k - 1]); + w2_real = GSL_REAL(twiddle2[k - 1]); + w2_imag = GSL_IMAG(twiddle2[k - 1]); + w3_real = GSL_REAL(twiddle3[k - 1]); + w3_imag = GSL_IMAG(twiddle3[k - 1]); + w4_real = GSL_REAL(twiddle4[k - 1]); + w4_imag = GSL_IMAG(twiddle4[k - 1]); + } + else + { + /* backward tranform: w -> conjugate(w) */ + w1_real = GSL_REAL(twiddle1[k - 1]); + w1_imag = -GSL_IMAG(twiddle1[k - 1]); + w2_real = GSL_REAL(twiddle2[k - 1]); + w2_imag = -GSL_IMAG(twiddle2[k - 1]); + w3_real = GSL_REAL(twiddle3[k - 1]); + w3_imag = -GSL_IMAG(twiddle3[k - 1]); + w4_real = GSL_REAL(twiddle4[k - 1]); + w4_imag = -GSL_IMAG(twiddle4[k - 1]); + } + } + + for (k1 = 0; k1 < p_1; k1++) + { + + ATOMIC x0_real, x0_imag, x1_real, x1_imag, x2_real, x2_imag, + x3_real, x3_imag, x4_real, x4_imag; + + const ATOMIC z0_real = REAL(in,istride,i); + const ATOMIC z0_imag = IMAG(in,istride,i); + const ATOMIC z1_real = REAL(in,istride,i + m); + const ATOMIC z1_imag = IMAG(in,istride,i + m); + const ATOMIC z2_real = REAL(in,istride,i + 2*m); + const ATOMIC z2_imag = IMAG(in,istride,i + 2*m); + const ATOMIC z3_real = REAL(in,istride,i + 3*m); + const ATOMIC z3_imag = IMAG(in,istride,i + 3*m); + const ATOMIC z4_real = REAL(in,istride,i + 4*m); + const ATOMIC z4_imag = IMAG(in,istride,i + 4*m); + + /* compute x = W(5) z */ + + /* t1 = z1 + z4 */ + const ATOMIC t1_real = z1_real + z4_real; + const ATOMIC t1_imag = z1_imag + z4_imag; + + /* t2 = z2 + z3 */ + const ATOMIC t2_real = z2_real + z3_real; + const ATOMIC t2_imag = z2_imag + z3_imag; + + /* t3 = z1 - z4 */ + const ATOMIC t3_real = z1_real - z4_real; + const ATOMIC t3_imag = z1_imag - z4_imag; + + /* t4 = z2 - z3 */ + const ATOMIC t4_real = z2_real - z3_real; + const ATOMIC t4_imag = z2_imag - z3_imag; + + /* t5 = t1 + t2 */ + const ATOMIC t5_real = t1_real + t2_real; + const ATOMIC t5_imag = t1_imag + t2_imag; + + /* t6 = (sqrt(5)/4)(t1 - t2) */ + const ATOMIC t6_real = (sqrt (5.0) / 4.0) * (t1_real - t2_real); + const ATOMIC t6_imag = (sqrt (5.0) / 4.0) * (t1_imag - t2_imag); + + /* t7 = z0 - ((t5)/4) */ + const ATOMIC t7_real = z0_real - t5_real / 4.0; + const ATOMIC t7_imag = z0_imag - t5_imag / 4.0; + + /* t8 = t7 + t6 */ + const ATOMIC t8_real = t7_real + t6_real; + const ATOMIC t8_imag = t7_imag + t6_imag; + + /* t9 = t7 - t6 */ + const ATOMIC t9_real = t7_real - t6_real; + const ATOMIC t9_imag = t7_imag - t6_imag; + + /* t10 = sin(2 pi/5) t3 + sin(2 pi/10) t4 */ + const ATOMIC t10_real = ((int) sign) * (sin_2pi_by_5 * t3_real + + sin_2pi_by_10 * t4_real); + const ATOMIC t10_imag = ((int) sign) * (sin_2pi_by_5 * t3_imag + + sin_2pi_by_10 * t4_imag); + + /* t11 = sin(2 pi/10) t3 - sin(2 pi/5) t4 */ + const ATOMIC t11_real = ((int) sign) * (sin_2pi_by_10 * t3_real - + sin_2pi_by_5 * t4_real); + const ATOMIC t11_imag = ((int) sign) * (sin_2pi_by_10 * t3_imag - + sin_2pi_by_5 * t4_imag); + + /* x0 = z0 + t5 */ + x0_real = z0_real + t5_real; + x0_imag = z0_imag + t5_imag; + + /* x1 = t8 + i t10 */ + x1_real = t8_real - t10_imag; + x1_imag = t8_imag + t10_real; + + /* x2 = t9 + i t11 */ + x2_real = t9_real - t11_imag; + x2_imag = t9_imag + t11_real; + + /* x3 = t9 - i t11 */ + x3_real = t9_real + t11_imag; + x3_imag = t9_imag - t11_real; + + /* x4 = t8 - i t10 */ + x4_real = t8_real + t10_imag; + x4_imag = t8_imag - t10_real; + + /* apply twiddle factors */ + + /* to0 = 1 * x0 */ + REAL(out,ostride,j) = x0_real; + IMAG(out,ostride,j) = x0_imag; + + /* to1 = w1 * x1 */ + REAL(out,ostride,j + p_1) = w1_real * x1_real - w1_imag * x1_imag; + IMAG(out,ostride,j + p_1) = w1_real * x1_imag + w1_imag * x1_real; + + /* to2 = w2 * x2 */ + REAL(out,ostride,j + 2*p_1) = w2_real * x2_real - w2_imag * x2_imag; + IMAG(out,ostride,j+2*p_1) = w2_real * x2_imag + w2_imag * x2_real; + + /* to3 = w3 * x3 */ + REAL(out,ostride,j+3*p_1) = w3_real * x3_real - w3_imag * x3_imag; + IMAG(out,ostride,j+3*p_1) = w3_real * x3_imag + w3_imag * x3_real; + + /* to4 = w4 * x4 */ + REAL(out,ostride,j+4*p_1) = w4_real * x4_real - w4_imag * x4_imag; + IMAG(out,ostride,j+4*p_1) = w4_real * x4_imag + w4_imag * x4_real; + + i++; + j++; + } + j += jump; + } + return 0; +} diff --git a/gsl-2.5/fft/c_pass_6.c b/gsl-2.5/fft/c_pass_6.c new file mode 100644 index 00000000..7d4bbd9f --- /dev/null +++ b/gsl-2.5/fft/c_pass_6.c @@ -0,0 +1,220 @@ +/* fft/c_pass_6.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +static int +FUNCTION(fft_complex,pass_6) (const BASE in[], + const size_t istride, + BASE out[], + const size_t ostride, + const gsl_fft_direction sign, + const size_t product, + const size_t n, + const TYPE(gsl_complex) twiddle1[], + const TYPE(gsl_complex) twiddle2[], + const TYPE(gsl_complex) twiddle3[], + const TYPE(gsl_complex) twiddle4[], + const TYPE(gsl_complex) twiddle5[]) +{ + + size_t i = 0, j = 0; + size_t k, k1; + + const size_t factor = 6; + const size_t m = n / factor; + const size_t q = n / product; + const size_t p_1 = product / factor; + const size_t jump = (factor - 1) * p_1; + + const ATOMIC tau = sqrt (3.0) / 2.0; + + for (k = 0; k < q; k++) + { + ATOMIC w1_real, w1_imag, w2_real, w2_imag, w3_real, w3_imag, w4_real, + w4_imag, w5_real, w5_imag; + + if (k == 0) + { + w1_real = 1.0; + w1_imag = 0.0; + w2_real = 1.0; + w2_imag = 0.0; + w3_real = 1.0; + w3_imag = 0.0; + w4_real = 1.0; + w4_imag = 0.0; + w5_real = 1.0; + w5_imag = 0.0; + } + else + { + if (sign == gsl_fft_forward) + { + /* forward tranform */ + w1_real = GSL_REAL(twiddle1[k - 1]); + w1_imag = GSL_IMAG(twiddle1[k - 1]); + w2_real = GSL_REAL(twiddle2[k - 1]); + w2_imag = GSL_IMAG(twiddle2[k - 1]); + w3_real = GSL_REAL(twiddle3[k - 1]); + w3_imag = GSL_IMAG(twiddle3[k - 1]); + w4_real = GSL_REAL(twiddle4[k - 1]); + w4_imag = GSL_IMAG(twiddle4[k - 1]); + w5_real = GSL_REAL(twiddle5[k - 1]); + w5_imag = GSL_IMAG(twiddle5[k - 1]); + } + else + { + /* backward tranform: w -> conjugate(w) */ + w1_real = GSL_REAL(twiddle1[k - 1]); + w1_imag = -GSL_IMAG(twiddle1[k - 1]); + w2_real = GSL_REAL(twiddle2[k - 1]); + w2_imag = -GSL_IMAG(twiddle2[k - 1]); + w3_real = GSL_REAL(twiddle3[k - 1]); + w3_imag = -GSL_IMAG(twiddle3[k - 1]); + w4_real = GSL_REAL(twiddle4[k - 1]); + w4_imag = -GSL_IMAG(twiddle4[k - 1]); + w5_real = GSL_REAL(twiddle5[k - 1]); + w5_imag = -GSL_IMAG(twiddle5[k - 1]); + } + } + + for (k1 = 0; k1 < p_1; k1++) + { + const ATOMIC z0_real = REAL(in,istride,i); + const ATOMIC z0_imag = IMAG(in,istride,i); + const ATOMIC z1_real = REAL(in,istride,i+m); + const ATOMIC z1_imag = IMAG(in,istride,i+m); + const ATOMIC z2_real = REAL(in,istride,i+2*m); + const ATOMIC z2_imag = IMAG(in,istride,i+2*m); + const ATOMIC z3_real = REAL(in,istride,i+3*m); + const ATOMIC z3_imag = IMAG(in,istride,i+3*m); + const ATOMIC z4_real = REAL(in,istride,i+4*m); + const ATOMIC z4_imag = IMAG(in,istride,i+4*m); + const ATOMIC z5_real = REAL(in,istride,i+5*m); + const ATOMIC z5_imag = IMAG(in,istride,i+5*m); + + /* compute x = W(6) z */ + + /* W(6) is a combination of sums and differences of W(3) acting + on the even and odd elements of z */ + + /* ta1 = z2 + z4 */ + const ATOMIC ta1_real = z2_real + z4_real; + const ATOMIC ta1_imag = z2_imag + z4_imag; + + /* ta2 = z0 - ta1/2 */ + const ATOMIC ta2_real = z0_real - ta1_real / 2; + const ATOMIC ta2_imag = z0_imag - ta1_imag / 2; + + /* ta3 = (+/-) sin(pi/3)*(z2 - z4) */ + const ATOMIC ta3_real = ((int) sign) * tau * (z2_real - z4_real); + const ATOMIC ta3_imag = ((int) sign) * tau * (z2_imag - z4_imag); + + /* a0 = z0 + ta1 */ + const ATOMIC a0_real = z0_real + ta1_real; + const ATOMIC a0_imag = z0_imag + ta1_imag; + + /* a1 = ta2 + i ta3 */ + const ATOMIC a1_real = ta2_real - ta3_imag; + const ATOMIC a1_imag = ta2_imag + ta3_real; + + /* a2 = ta2 - i ta3 */ + const ATOMIC a2_real = ta2_real + ta3_imag; + const ATOMIC a2_imag = ta2_imag - ta3_real; + + /* tb1 = z5 + z1 */ + const ATOMIC tb1_real = z5_real + z1_real; + const ATOMIC tb1_imag = z5_imag + z1_imag; + + /* tb2 = z3 - tb1/2 */ + const ATOMIC tb2_real = z3_real - tb1_real / 2; + const ATOMIC tb2_imag = z3_imag - tb1_imag / 2; + + /* tb3 = (+/-) sin(pi/3)*(z5 - z1) */ + const ATOMIC tb3_real = ((int) sign) * tau * (z5_real - z1_real); + const ATOMIC tb3_imag = ((int) sign) * tau * (z5_imag - z1_imag); + + /* b0 = z3 + tb1 */ + const ATOMIC b0_real = z3_real + tb1_real; + const ATOMIC b0_imag = z3_imag + tb1_imag; + + /* b1 = tb2 + i tb3 */ + const ATOMIC b1_real = tb2_real - tb3_imag; + const ATOMIC b1_imag = tb2_imag + tb3_real; + + /* b2 = tb2 - i tb3 */ + const ATOMIC b2_real = tb2_real + tb3_imag; + const ATOMIC b2_imag = tb2_imag - tb3_real; + + /* x0 = a0 + b0 */ + const ATOMIC x0_real = a0_real + b0_real; + const ATOMIC x0_imag = a0_imag + b0_imag; + + /* x4 = a1 + b1 */ + const ATOMIC x4_real = a1_real + b1_real; + const ATOMIC x4_imag = a1_imag + b1_imag; + + /* x2 = a2 + b2 */ + const ATOMIC x2_real = a2_real + b2_real; + const ATOMIC x2_imag = a2_imag + b2_imag; + + /* x3 = a0 - b0 */ + const ATOMIC x3_real = a0_real - b0_real; + const ATOMIC x3_imag = a0_imag - b0_imag; + + /* x1 = a1 - b1 */ + const ATOMIC x1_real = a1_real - b1_real; + const ATOMIC x1_imag = a1_imag - b1_imag; + + /* x5 = a2 - b2 */ + const ATOMIC x5_real = a2_real - b2_real; + const ATOMIC x5_imag = a2_imag - b2_imag; + + /* apply twiddle factors */ + + /* to0 = 1 * x0 */ + REAL(out,ostride,j) = x0_real; + IMAG(out,ostride,j) = x0_imag; + + /* to1 = w1 * x1 */ + REAL(out,ostride,j+p_1) = w1_real * x1_real - w1_imag * x1_imag; + IMAG(out,ostride,j+p_1) = w1_real * x1_imag + w1_imag * x1_real; + + /* to2 = w2 * x2 */ + REAL(out,ostride,j+2*p_1) = w2_real * x2_real - w2_imag * x2_imag; + IMAG(out,ostride,j+2*p_1) = w2_real * x2_imag + w2_imag * x2_real; + + /* to3 = w3 * x3 */ + REAL(out,ostride,j+3*p_1) = w3_real * x3_real - w3_imag * x3_imag; + IMAG(out,ostride,j+3*p_1) = w3_real * x3_imag + w3_imag * x3_real; + + /* to4 = w4 * x4 */ + REAL(out,ostride,j+4*p_1) = w4_real * x4_real - w4_imag * x4_imag; + IMAG(out,ostride,j+4*p_1) = w4_real * x4_imag + w4_imag * x4_real; + + /* to5 = w5 * x5 */ + REAL(out,ostride,j+5*p_1) = w5_real * x5_real - w5_imag * x5_imag; + IMAG(out,ostride,j+5*p_1) = w5_real * x5_imag + w5_imag * x5_real; + + i++; + j++; + } + j += jump; + } + return 0; +} diff --git a/gsl-2.5/fft/c_pass_7.c b/gsl-2.5/fft/c_pass_7.c new file mode 100644 index 00000000..7d7a39fd --- /dev/null +++ b/gsl-2.5/fft/c_pass_7.c @@ -0,0 +1,312 @@ +/* fft/c_pass_7.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +static int +FUNCTION(fft_complex,pass_7) (const BASE in[], + const size_t istride, + BASE out[], + const size_t ostride, + const gsl_fft_direction sign, + const size_t product, + const size_t n, + const TYPE(gsl_complex) twiddle1[], + const TYPE(gsl_complex) twiddle2[], + const TYPE(gsl_complex) twiddle3[], + const TYPE(gsl_complex) twiddle4[], + const TYPE(gsl_complex) twiddle5[], + const TYPE(gsl_complex) twiddle6[]) +{ + size_t i = 0, j = 0; + size_t k, k1; + + const size_t factor = 7; + const size_t m = n / factor; + const size_t q = n / product; + const size_t p_1 = product / factor; + const size_t jump = (factor - 1) * p_1; + + const ATOMIC c1 = cos(1.0 * 2.0 * M_PI / 7.0) ; + const ATOMIC c2 = cos(2.0 * 2.0 * M_PI / 7.0) ; + const ATOMIC c3 = cos(3.0 * 2.0 * M_PI / 7.0) ; + + const ATOMIC s1 = sin(1.0 * 2.0 * M_PI / 7.0) ; + const ATOMIC s2 = sin(2.0 * 2.0 * M_PI / 7.0) ; + const ATOMIC s3 = sin(3.0 * 2.0 * M_PI / 7.0) ; + + for (k = 0; k < q; k++) + { + ATOMIC w1_real, w1_imag, w2_real, w2_imag, w3_real, w3_imag, w4_real, + w4_imag, w5_real, w5_imag, w6_real, w6_imag; + + if (k == 0) + { + w1_real = 1.0; + w1_imag = 0.0; + w2_real = 1.0; + w2_imag = 0.0; + w3_real = 1.0; + w3_imag = 0.0; + w4_real = 1.0; + w4_imag = 0.0; + w5_real = 1.0; + w5_imag = 0.0; + w6_real = 1.0; + w6_imag = 0.0; + } + else + { + if (sign == gsl_fft_forward) + { + /* forward tranform */ + w1_real = GSL_REAL(twiddle1[k - 1]); + w1_imag = GSL_IMAG(twiddle1[k - 1]); + w2_real = GSL_REAL(twiddle2[k - 1]); + w2_imag = GSL_IMAG(twiddle2[k - 1]); + w3_real = GSL_REAL(twiddle3[k - 1]); + w3_imag = GSL_IMAG(twiddle3[k - 1]); + w4_real = GSL_REAL(twiddle4[k - 1]); + w4_imag = GSL_IMAG(twiddle4[k - 1]); + w5_real = GSL_REAL(twiddle5[k - 1]); + w5_imag = GSL_IMAG(twiddle5[k - 1]); + w6_real = GSL_REAL(twiddle6[k - 1]); + w6_imag = GSL_IMAG(twiddle6[k - 1]); + } + else + { + /* backward tranform: w -> conjugate(w) */ + w1_real = GSL_REAL(twiddle1[k - 1]); + w1_imag = -GSL_IMAG(twiddle1[k - 1]); + w2_real = GSL_REAL(twiddle2[k - 1]); + w2_imag = -GSL_IMAG(twiddle2[k - 1]); + w3_real = GSL_REAL(twiddle3[k - 1]); + w3_imag = -GSL_IMAG(twiddle3[k - 1]); + w4_real = GSL_REAL(twiddle4[k - 1]); + w4_imag = -GSL_IMAG(twiddle4[k - 1]); + w5_real = GSL_REAL(twiddle5[k - 1]); + w5_imag = -GSL_IMAG(twiddle5[k - 1]); + w6_real = GSL_REAL(twiddle6[k - 1]); + w6_imag = -GSL_IMAG(twiddle6[k - 1]); + } + } + + for (k1 = 0; k1 < p_1; k1++) + { + const ATOMIC z0_real = REAL(in,istride,i); + const ATOMIC z0_imag = IMAG(in,istride,i); + const ATOMIC z1_real = REAL(in,istride,i+m); + const ATOMIC z1_imag = IMAG(in,istride,i+m); + const ATOMIC z2_real = REAL(in,istride,i+2*m); + const ATOMIC z2_imag = IMAG(in,istride,i+2*m); + const ATOMIC z3_real = REAL(in,istride,i+3*m); + const ATOMIC z3_imag = IMAG(in,istride,i+3*m); + const ATOMIC z4_real = REAL(in,istride,i+4*m); + const ATOMIC z4_imag = IMAG(in,istride,i+4*m); + const ATOMIC z5_real = REAL(in,istride,i+5*m); + const ATOMIC z5_imag = IMAG(in,istride,i+5*m); + const ATOMIC z6_real = REAL(in,istride,i+6*m); + const ATOMIC z6_imag = IMAG(in,istride,i+6*m); + + /* compute x = W(7) z */ + + /* t0 = z1 + z6 */ + const ATOMIC t0_real = z1_real + z6_real ; + const ATOMIC t0_imag = z1_imag + z6_imag ; + + /* t1 = z1 - z6 */ + const ATOMIC t1_real = z1_real - z6_real ; + const ATOMIC t1_imag = z1_imag - z6_imag ; + + /* t2 = z2 + z5 */ + const ATOMIC t2_real = z2_real + z5_real ; + const ATOMIC t2_imag = z2_imag + z5_imag ; + + /* t3 = z2 - z5 */ + const ATOMIC t3_real = z2_real - z5_real ; + const ATOMIC t3_imag = z2_imag - z5_imag ; + + /* t4 = z4 + z3 */ + const ATOMIC t4_real = z4_real + z3_real ; + const ATOMIC t4_imag = z4_imag + z3_imag ; + + /* t5 = z4 - z3 */ + const ATOMIC t5_real = z4_real - z3_real ; + const ATOMIC t5_imag = z4_imag - z3_imag ; + + /* t6 = t2 + t0 */ + const ATOMIC t6_real = t2_real + t0_real ; + const ATOMIC t6_imag = t2_imag + t0_imag ; + + /* t7 = t5 + t3 */ + const ATOMIC t7_real = t5_real + t3_real ; + const ATOMIC t7_imag = t5_imag + t3_imag ; + + /* b0 = z0 + t6 + t4 */ + const ATOMIC b0_real = z0_real + t6_real + t4_real ; + const ATOMIC b0_imag = z0_imag + t6_imag + t4_imag ; + + /* b1 = ((cos(2pi/7) + cos(4pi/7) + cos(6pi/7))/3-1) (t6 + t4) */ + const ATOMIC b1_real = (((c1 + c2 + c3)/3.0 - 1.0) * (t6_real + t4_real)); + const ATOMIC b1_imag = (((c1 + c2 + c3)/3.0 - 1.0) * (t6_imag + t4_imag)); + + /* b2 = ((2*cos(2pi/7) - cos(4pi/7) - cos(6pi/7))/3) (t0 - t4) */ + const ATOMIC b2_real = (((2.0 * c1 - c2 - c3)/3.0) * (t0_real - t4_real)); + const ATOMIC b2_imag = (((2.0 * c1 - c2 - c3)/3.0) * (t0_imag - t4_imag)); + + /* b3 = ((cos(2pi/7) - 2*cos(4pi/7) + cos(6pi/7))/3) (t4 - t2) */ + const ATOMIC b3_real = (((c1 - 2.0*c2 + c3)/3.0) * (t4_real - t2_real)); + const ATOMIC b3_imag = (((c1 - 2.0*c2 + c3)/3.0) * (t4_imag - t2_imag)); + + /* b4 = ((cos(2pi/7) + cos(4pi/7) - 2*cos(6pi/7))/3) (t2 - t0) */ + const ATOMIC b4_real = (((c1 + c2 - 2.0 * c3)/3.0) * (t2_real - t0_real)); + const ATOMIC b4_imag = (((c1 + c2 - 2.0 * c3)/3.0) * (t2_imag - t0_imag)); + + /* b5 = sign * ((sin(2pi/7) + sin(4pi/7) - sin(6pi/7))/3) (t7 + t1) */ + const ATOMIC b5_real = (-(int)sign) * ((s1 + s2 - s3)/3.0) * (t7_real + t1_real) ; + const ATOMIC b5_imag = (-(int)sign) * ((s1 + s2 - s3)/3.0) * (t7_imag + t1_imag) ; + + /* b6 = sign * ((2sin(2pi/7) - sin(4pi/7) + sin(6pi/7))/3) (t1 - t5) */ + const ATOMIC b6_real = (-(int)sign) * ((2.0 * s1 - s2 + s3)/3.0) * (t1_real - t5_real) ; + const ATOMIC b6_imag = (-(int)sign) * ((2.0 * s1 - s2 + s3)/3.0) * (t1_imag - t5_imag) ; + + /* b7 = sign * ((sin(2pi/7) - 2sin(4pi/7) - sin(6pi/7))/3) (t5 - t3) */ + const ATOMIC b7_real = (-(int)sign) * ((s1 - 2.0 * s2 - s3)/3.0) * (t5_real - t3_real) ; + const ATOMIC b7_imag = (-(int)sign) * ((s1 - 2.0 * s2 - s3)/3.0) * (t5_imag - t3_imag) ; + + /* b8 = sign * ((sin(2pi/7) + sin(4pi/7) + 2sin(6pi/7))/3) (t3 - t1) */ + const ATOMIC b8_real = (-(int)sign) * ((s1 + s2 + 2.0 * s3)/3.0) * (t3_real - t1_real) ; + const ATOMIC b8_imag = (-(int)sign) * ((s1 + s2 + 2.0 * s3)/3.0) * (t3_imag - t1_imag) ; + + + /* T0 = b0 + b1 */ + const ATOMIC T0_real = b0_real + b1_real ; + const ATOMIC T0_imag = b0_imag + b1_imag ; + + /* T1 = b2 + b3 */ + const ATOMIC T1_real = b2_real + b3_real ; + const ATOMIC T1_imag = b2_imag + b3_imag ; + + /* T2 = b4 - b3 */ + const ATOMIC T2_real = b4_real - b3_real ; + const ATOMIC T2_imag = b4_imag - b3_imag ; + + /* T3 = -b2 - b4 */ + const ATOMIC T3_real = -b2_real - b4_real ; + const ATOMIC T3_imag = -b2_imag - b4_imag ; + + /* T4 = b6 + b7 */ + const ATOMIC T4_real = b6_real + b7_real ; + const ATOMIC T4_imag = b6_imag + b7_imag ; + + /* T5 = b8 - b7 */ + const ATOMIC T5_real = b8_real - b7_real ; + const ATOMIC T5_imag = b8_imag - b7_imag ; + + /* T6 = -b8 - b6 */ + const ATOMIC T6_real = -b8_real - b6_real ; + const ATOMIC T6_imag = -b8_imag - b6_imag ; + + /* T7 = T0 + T1 */ + const ATOMIC T7_real = T0_real + T1_real ; + const ATOMIC T7_imag = T0_imag + T1_imag ; + + /* T8 = T0 + T2 */ + const ATOMIC T8_real = T0_real + T2_real ; + const ATOMIC T8_imag = T0_imag + T2_imag ; + + /* T9 = T0 + T3 */ + const ATOMIC T9_real = T0_real + T3_real ; + const ATOMIC T9_imag = T0_imag + T3_imag ; + + /* T10 = T4 + b5 */ + const ATOMIC T10_real = T4_real + b5_real ; + const ATOMIC T10_imag = T4_imag + b5_imag ; + + /* T11 = T5 + b5 */ + const ATOMIC T11_real = T5_real + b5_real ; + const ATOMIC T11_imag = T5_imag + b5_imag ; + + /* T12 = T6 + b5 */ + const ATOMIC T12_real = T6_real + b5_real ; + const ATOMIC T12_imag = T6_imag + b5_imag ; + + + /* x0 = b0 */ + const ATOMIC x0_real = b0_real ; + const ATOMIC x0_imag = b0_imag ; + + /* x1 = T7 - i T10 */ + const ATOMIC x1_real = T7_real + T10_imag ; + const ATOMIC x1_imag = T7_imag - T10_real ; + + /* x2 = T9 - i T12 */ + const ATOMIC x2_real = T9_real + T12_imag ; + const ATOMIC x2_imag = T9_imag - T12_real ; + + /* x3 = T8 + i T11 */ + const ATOMIC x3_real = T8_real - T11_imag ; + const ATOMIC x3_imag = T8_imag + T11_real ; + + /* x4 = T8 - i T11 */ + const ATOMIC x4_real = T8_real + T11_imag ; + const ATOMIC x4_imag = T8_imag - T11_real ; + + /* x5 = T9 + i T12 */ + const ATOMIC x5_real = T9_real - T12_imag ; + const ATOMIC x5_imag = T9_imag + T12_real ; + + /* x6 = T7 + i T10 */ + const ATOMIC x6_real = T7_real - T10_imag ; + const ATOMIC x6_imag = T7_imag + T10_real ; + + /* apply twiddle factors */ + + /* to0 = 1 * x0 */ + REAL(out,ostride,j) = x0_real; + IMAG(out,ostride,j) = x0_imag; + + /* to1 = w1 * x1 */ + REAL(out,ostride,j+p_1) = w1_real * x1_real - w1_imag * x1_imag; + IMAG(out,ostride,j+p_1) = w1_real * x1_imag + w1_imag * x1_real; + + /* to2 = w2 * x2 */ + REAL(out,ostride,j+2*p_1) = w2_real * x2_real - w2_imag * x2_imag; + IMAG(out,ostride,j+2*p_1) = w2_real * x2_imag + w2_imag * x2_real; + + /* to3 = w3 * x3 */ + REAL(out,ostride,j+3*p_1) = w3_real * x3_real - w3_imag * x3_imag; + IMAG(out,ostride,j+3*p_1) = w3_real * x3_imag + w3_imag * x3_real; + + /* to4 = w4 * x4 */ + REAL(out,ostride,j+4*p_1) = w4_real * x4_real - w4_imag * x4_imag; + IMAG(out,ostride,j+4*p_1) = w4_real * x4_imag + w4_imag * x4_real; + + /* to5 = w5 * x5 */ + REAL(out,ostride,j+5*p_1) = w5_real * x5_real - w5_imag * x5_imag; + IMAG(out,ostride,j+5*p_1) = w5_real * x5_imag + w5_imag * x5_real; + + /* to6 = w6 * x6 */ + REAL(out,ostride,j+6*p_1) = w6_real * x6_real - w6_imag * x6_imag; + IMAG(out,ostride,j+6*p_1) = w6_real * x6_imag + w6_imag * x6_real; + + i++; j++; + } + j += jump; + } + return 0; +} diff --git a/gsl-2.5/fft/c_pass_n.c b/gsl-2.5/fft/c_pass_n.c new file mode 100644 index 00000000..65f4b757 --- /dev/null +++ b/gsl-2.5/fft/c_pass_n.c @@ -0,0 +1,204 @@ +/* fft/c_pass_n.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +static int +FUNCTION(fft_complex,pass_n) (BASE in[], + const size_t istride, + BASE out[], + const size_t ostride, + const gsl_fft_direction sign, + const size_t factor, + const size_t product, + const size_t n, + const TYPE(gsl_complex) twiddle[]) +{ + size_t i = 0, j = 0; + size_t k, k1; + + const size_t m = n / factor; + const size_t q = n / product; + const size_t p_1 = product / factor; + const size_t jump = (factor - 1) * p_1; + + size_t e, e1; + + for (i = 0; i < m; i++) + { + REAL(out,ostride,i) = REAL(in,istride,i); + IMAG(out,ostride,i) = IMAG(in,istride,i); + } + + for (e = 1; e < (factor - 1) / 2 + 1; e++) + { + for (i = 0; i < m; i++) + { + const size_t idx = i + e * m; + const size_t idxc = i + (factor - e) * m; + REAL(out,ostride,idx) = REAL(in,istride,idx) + REAL(in,istride,idxc); + IMAG(out,ostride,idx) = IMAG(in,istride,idx) + IMAG(in,istride,idxc); + REAL(out,ostride,idxc) = REAL(in,istride,idx) - REAL(in,istride,idxc); + IMAG(out,ostride,idxc) = IMAG(in,istride,idx) - IMAG(in,istride,idxc); + } + } + + /* e = 0 */ + + for (i=0 ; i exp(i theta) w */ + + { + const ATOMIC tmp_real = w_real - s * w_imag - s2 * w_real; + const ATOMIC tmp_imag = w_imag + s * w_real - s2 * w_imag; + w_real = tmp_real; + w_imag = tmp_imag; + } + + for (b = 0; b < n; b += 2 * dual) + { + const size_t i = b + a; + const size_t j = b + a + dual; + + const ATOMIC z1_real = REAL(data,stride,j) ; + const ATOMIC z1_imag = IMAG(data,stride,j) ; + + const ATOMIC wd_real = w_real * z1_real - w_imag * z1_imag; + const ATOMIC wd_imag = w_real * z1_imag + w_imag * z1_real; + + REAL(data,stride,j) = REAL(data,stride,i) - wd_real; + IMAG(data,stride,j) = IMAG(data,stride,i) - wd_imag; + REAL(data,stride,i) += wd_real; + IMAG(data,stride,i) += wd_imag; + } + } + dual *= 2; + } + + return 0; + +} + + +int +FUNCTION(gsl_fft_complex,radix2_dif_forward) (TYPE(gsl_complex_packed_array) data, + const size_t stride, + const size_t n) +{ + gsl_fft_direction sign = gsl_fft_forward; + int status = FUNCTION(gsl_fft_complex,radix2_dif_transform) (data, stride, n, sign); + return status; +} + +int +FUNCTION(gsl_fft_complex,radix2_dif_backward) (TYPE(gsl_complex_packed_array) data, + const size_t stride, + const size_t n) +{ + gsl_fft_direction sign = gsl_fft_backward; + int status = FUNCTION(gsl_fft_complex,radix2_dif_transform) (data, stride, n, sign); + return status; +} + +int +FUNCTION(gsl_fft_complex,radix2_dif_inverse) (TYPE(gsl_complex_packed_array) data, + const size_t stride, + const size_t n) +{ + gsl_fft_direction sign = gsl_fft_backward; + int status = FUNCTION(gsl_fft_complex,radix2_dif_transform) (data, stride, n, sign); + + if (status) + { + return status; + } + + /* normalize inverse fft with 1/n */ + + { + const ATOMIC norm = 1.0 / n; + size_t i; + for (i = 0; i < n; i++) + { + REAL(data,stride,i) *= norm; + IMAG(data,stride,i) *= norm; + } + } + + return status; +} + +int +FUNCTION(gsl_fft_complex,radix2_dif_transform) (TYPE(gsl_complex_packed_array) data, + const size_t stride, + const size_t n, + const gsl_fft_direction sign) +{ + int result ; + size_t dual; + size_t bit; + size_t logn = 0; + int status; + + if (n == 1) /* identity operation */ + { + return 0 ; + } + + /* make sure that n is a power of 2 */ + + result = fft_binary_logn(n) ; + + if (result == -1) + { + GSL_ERROR ("n is not a power of 2", GSL_EINVAL); + } + else + { + logn = result ; + } + + /* apply fft recursion */ + + dual = n / 2; + + for (bit = 0; bit < logn; bit++) + { + ATOMIC w_real = 1.0; + ATOMIC w_imag = 0.0; + + const double theta = 2.0 * ((int) sign) * M_PI / ((double) (2 * dual)); + + const ATOMIC s = sin (theta); + const ATOMIC t = sin (theta / 2.0); + const ATOMIC s2 = 2.0 * t * t; + + size_t a, b; + + for (b = 0; b < dual; b++) + { + for (a = 0; a < n; a+= 2 * dual) + { + const size_t i = b + a; + const size_t j = b + a + dual; + + const ATOMIC t1_real = REAL(data,stride,i) + REAL(data,stride,j); + const ATOMIC t1_imag = IMAG(data,stride,i) + IMAG(data,stride,j); + const ATOMIC t2_real = REAL(data,stride,i) - REAL(data,stride,j); + const ATOMIC t2_imag = IMAG(data,stride,i) - IMAG(data,stride,j); + + REAL(data,stride,i) = t1_real; + IMAG(data,stride,i) = t1_imag; + REAL(data,stride,j) = w_real*t2_real - w_imag * t2_imag; + IMAG(data,stride,j) = w_real*t2_imag + w_imag * t2_real; + } + + /* trignometric recurrence for w-> exp(i theta) w */ + + { + const ATOMIC tmp_real = w_real - s * w_imag - s2 * w_real; + const ATOMIC tmp_imag = w_imag + s * w_real - s2 * w_imag; + w_real = tmp_real; + w_imag = tmp_imag; + } + } + dual /= 2; + } + + /* bit reverse the ordering of output data for decimation in + frequency algorithm */ + + status = FUNCTION(fft_complex,bitreverse_order)(data, stride, n, logn) ; + + return 0; + +} + + + + + + + + diff --git a/gsl-2.5/fft/compare.h b/gsl-2.5/fft/compare.h new file mode 100644 index 00000000..aab16393 --- /dev/null +++ b/gsl-2.5/fft/compare.h @@ -0,0 +1,30 @@ +/* fft/compare.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +int +FUNCTION(compare_complex,results) (const char *name_a, const BASE a[], + const char *name_b, const BASE b[], + size_t stride, size_t n, + const double allowed_ticks); + +int +FUNCTION(compare_real,results) (const char *name_a, const BASE a[], + const char *name_b, const BASE b[], + size_t stride, size_t n, + const double allowed_ticks); diff --git a/gsl-2.5/fft/compare_source.c b/gsl-2.5/fft/compare_source.c new file mode 100644 index 00000000..d504bbff --- /dev/null +++ b/gsl-2.5/fft/compare_source.c @@ -0,0 +1,125 @@ +/* fft/compare_source.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include "compare.h" + +int +FUNCTION(compare_complex,results) (const char *name_a, const BASE a[], + const char *name_b, const BASE b[], + size_t stride, size_t n, + const double allowed_ticks) +{ + size_t i; + double ticks, max_ticks = 0; + double dr, di; + const char *flag; + + for (i = 0; i < n; i++) + { + dr = b[2*stride*i] - a[2*stride*i]; + di = b[2*stride*i+1] - a[2*stride*i+1]; + ticks = (fabs (dr) + fabs (di)) / BASE_EPSILON; + if (ticks > max_ticks) + { + max_ticks = ticks; + } + } + + if (max_ticks < allowed_ticks) + { + return 0; + } + + printf ("\n%s vs %s : max_ticks = %f\n", name_a, name_b, max_ticks); + + for (i = 0; i < n; i++) + { + dr = b[2*stride*i] - a[2*stride*i]; + di = b[2*stride*i+1] - a[2*stride*i+1]; + ticks = (fabs (dr) + fabs (di)) / BASE_EPSILON; + + if (ticks > 1000) + { + flag = "***"; + } + else + { + flag = ""; + } + + printf ("%15s: %d %.16f %.16f %s\n", name_a, (int)i, + a[2*stride*i], a[2*stride*i+1], flag); + printf ("%15s: %d %.16f %.16f %e %s\n", name_b, (int)i, + b[2*stride*i], b[2*stride*i+1], ticks, flag); + } + + return -1; +} + + +int +FUNCTION(compare_real,results) (const char *name_a, const BASE a[], + const char *name_b, const BASE b[], + size_t stride, size_t n, + const double allowed_ticks) +{ + size_t i; + double ticks, max_ticks = 0; + double dr; + const char *flag; + + for (i = 0; i < n; i++) + { + dr = b[stride*i] - a[stride*i]; + ticks = fabs (dr) / BASE_EPSILON; + if (ticks > max_ticks) + { + max_ticks = ticks; + } + } + + if (max_ticks < allowed_ticks) + { + return 0; + } + + printf ("\n%s vs %s : max_ticks = %f\n", name_a, name_b, max_ticks); + + for (i = 0; i < n; i++) + { + dr = b[stride*i] - a[stride*i]; + ticks = fabs (dr) / BASE_EPSILON; + + if (ticks > 1000) + { + flag = "***"; + } + else + { + flag = ""; + } + + printf ("%15s: %d %.16f %s\n", name_a, (int)i, + a[stride*i], flag); + printf ("%15s: %d %.16f %e %s\n", name_b, (int)i, + b[stride*i], ticks, flag); + } + + return -1; +} diff --git a/gsl-2.5/fft/complex_internal.h b/gsl-2.5/fft/complex_internal.h new file mode 100644 index 00000000..1c9c366a --- /dev/null +++ b/gsl-2.5/fft/complex_internal.h @@ -0,0 +1,14 @@ +/* Handling of packed complex types... not meant for client consumption. + */ +#ifndef COMPLEX_INTERNAL_H_ +#define COMPLEX_INTERNAL_H_ + +#define VECTOR(a,stride,i) ((a)[(stride)*(i)]) +#define REAL(a,stride,i) ((a)[2*(stride)*(i)]) +#define IMAG(a,stride,i) ((a)[2*(stride)*(i)+1]) + +#define REAL0(a) ((a)[0]) +#define IMAG0(a) ((a)[1]) + + +#endif /* !COMPLEX_INTERNAL_H_ */ diff --git a/gsl-2.5/fft/dft.c b/gsl-2.5/fft/dft.c new file mode 100644 index 00000000..26d32a5a --- /dev/null +++ b/gsl-2.5/fft/dft.c @@ -0,0 +1,25 @@ +#include +#include +#include +#include + +#include +#include + +#include +#include + +#include "complex_internal.h" + +#define BASE_DOUBLE +#include "templates_on.h" +#include "dft_source.c" +#include "templates_off.h" +#undef BASE_DOUBLE + +#define BASE_FLOAT +#include "templates_on.h" +#include "dft_source.c" +#include "templates_off.h" +#undef BASE_FLOAT + diff --git a/gsl-2.5/fft/dft.lo b/gsl-2.5/fft/dft.lo new file mode 100644 index 00000000..be66072b --- /dev/null +++ b/gsl-2.5/fft/dft.lo @@ -0,0 +1,12 @@ +# dft.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/dft.o' + +# Name of the non-PIC object +non_pic_object='dft.o' + diff --git a/gsl-2.5/fft/dft_source.c b/gsl-2.5/fft/dft_source.c new file mode 100644 index 00000000..666419ce --- /dev/null +++ b/gsl-2.5/fft/dft_source.c @@ -0,0 +1,104 @@ +/* fft/dft_source.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +int +FUNCTION(gsl_dft_complex,forward) (const BASE data[], + const size_t stride, const size_t n, + BASE result[]) +{ + gsl_fft_direction sign = gsl_fft_forward; + int status = FUNCTION(gsl_dft_complex,transform) (data, stride, n, result, sign); + return status; +} + +int +FUNCTION(gsl_dft_complex,backward) (const BASE data[], + const size_t stride, const size_t n, + BASE result[]) +{ + gsl_fft_direction sign = gsl_fft_backward; + int status = FUNCTION(gsl_dft_complex,transform) (data, stride, n, result, sign); + return status; +} + + +int +FUNCTION(gsl_dft_complex,inverse) (const BASE data[], + const size_t stride, const size_t n, + BASE result[]) +{ + gsl_fft_direction sign = gsl_fft_backward; + int status = FUNCTION(gsl_dft_complex,transform) (data, stride, n, result, sign); + + /* normalize inverse fft with 1/n */ + + { + const ATOMIC norm = ONE / (ATOMIC)n; + size_t i; + for (i = 0; i < n; i++) + { + REAL(result,stride,i) *= norm; + IMAG(result,stride,i) *= norm; + } + } + return status; +} + +int +FUNCTION(gsl_dft_complex,transform) (const BASE data[], + const size_t stride, const size_t n, + BASE result[], + const gsl_fft_direction sign) +{ + + size_t i, j, exponent; + + const double d_theta = 2.0 * ((int) sign) * M_PI / (double) n; + + /* FIXME: check that input length == output length and give error */ + + for (i = 0; i < n; i++) + { + ATOMIC sum_real = 0; + ATOMIC sum_imag = 0; + + exponent = 0; + + for (j = 0; j < n; j++) + { + double theta = d_theta * (double) exponent; + /* sum = exp(i theta) * data[j] */ + + ATOMIC w_real = (ATOMIC) cos (theta); + ATOMIC w_imag = (ATOMIC) sin (theta); + + ATOMIC data_real = REAL(data,stride,j); + ATOMIC data_imag = IMAG(data,stride,j); + + sum_real += w_real * data_real - w_imag * data_imag; + sum_imag += w_real * data_imag + w_imag * data_real; + + exponent = (exponent + i) % n; + } + REAL(result,stride,i) = sum_real; + IMAG(result,stride,i) = sum_imag; + } + + return 0; +} diff --git a/gsl-2.5/fft/factorize.c b/gsl-2.5/fft/factorize.c new file mode 100644 index 00000000..79fd3b96 --- /dev/null +++ b/gsl-2.5/fft/factorize.c @@ -0,0 +1,176 @@ +/* fft/factorize.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include + +#include "factorize.h" + +static int +fft_complex_factorize (const size_t n, + size_t *nf, + size_t factors[]) +{ + const size_t complex_subtransforms[] = + {7, 6, 5, 4, 3, 2, 0}; + + /* other factors can be added here if their transform modules are + implemented. The end of the list is marked by 0. */ + + int status = fft_factorize (n, complex_subtransforms, nf, factors); + return status; +} + +static int +fft_halfcomplex_factorize (const size_t n, + size_t *nf, + size_t factors[]) +{ + const size_t halfcomplex_subtransforms[] = + {5, 4, 3, 2, 0}; + + int status = fft_factorize (n, halfcomplex_subtransforms, nf, factors); + return status; +} + +static int +fft_real_factorize (const size_t n, + size_t *nf, + size_t factors[]) +{ + const size_t real_subtransforms[] = + {5, 4, 3, 2, 0}; + + int status = fft_factorize (n, real_subtransforms, nf, factors); + return status; +} + + +static int +fft_factorize (const size_t n, + const size_t implemented_subtransforms[], + size_t *n_factors, + size_t factors[]) + +{ + size_t nf = 0; + size_t ntest = n; + size_t factor; + size_t i = 0; + + if (n == 0) + { + GSL_ERROR ("length n must be positive integer", GSL_EDOM); + } + + if (n == 1) + { + factors[0] = 1; + *n_factors = 1; + return 0; + } + + /* deal with the implemented factors first */ + + while (implemented_subtransforms[i] && ntest != 1) + { + factor = implemented_subtransforms[i]; + while ((ntest % factor) == 0) + { + ntest = ntest / factor; + factors[nf] = factor; + nf++; + } + i++; + } + + /* deal with any other even prime factors (there is only one) */ + + factor = 2; + + while ((ntest % factor) == 0 && (ntest != 1)) + { + ntest = ntest / factor; + factors[nf] = factor; + nf++; + } + + /* deal with any other odd prime factors */ + + factor = 3; + + while (ntest != 1) + { + while ((ntest % factor) != 0) + { + factor += 2; + } + ntest = ntest / factor; + factors[nf] = factor; + nf++; + } + + /* check that the factorization is correct */ + { + size_t product = 1; + + for (i = 0; i < nf; i++) + { + product *= factors[i]; + } + + if (product != n) + { + GSL_ERROR ("factorization failed", GSL_ESANITY); + } + } + + *n_factors = nf; + + return 0; +} + + +static int +fft_binary_logn (const size_t n) +{ + size_t ntest ; + size_t binary_logn = 0 ; + size_t k = 1; + + while (k < n) + { + k *= 2; + binary_logn++; + } + + ntest = (1 << binary_logn) ; + + if (n != ntest ) + { + return -1 ; /* n is not a power of 2 */ + } + + return binary_logn; +} + + + + diff --git a/gsl-2.5/fft/factorize.h b/gsl-2.5/fft/factorize.h new file mode 100644 index 00000000..86fa350d --- /dev/null +++ b/gsl-2.5/fft/factorize.h @@ -0,0 +1,29 @@ +/* fft/factorize.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +static int fft_complex_factorize (const size_t n, size_t *nf, size_t factors[]); + +static int fft_halfcomplex_factorize (const size_t n, size_t *nf, size_t factors[]); + +static int fft_real_factorize (const size_t n, size_t *nf, size_t factors[]); + +static int fft_factorize (const size_t n, const size_t implemented_subtransforms[], size_t *n_factors, size_t factors[]); + +static int fft_binary_logn (const size_t n) ; + diff --git a/gsl-2.5/fft/fft.c b/gsl-2.5/fft/fft.c new file mode 100644 index 00000000..9aa0da77 --- /dev/null +++ b/gsl-2.5/fft/fft.c @@ -0,0 +1,117 @@ +#include +#include +#include +#include +#include + +#include +#include + +#include +#include + +#define BASE_DOUBLE +#include "templates_on.h" +#include "bitreverse.c" +#include "templates_off.h" +#undef BASE_DOUBLE + +#define BASE_FLOAT +#include "templates_on.h" +#include "bitreverse.c" +#include "templates_off.h" +#undef BASE_FLOAT + +#include "factorize.c" + +#define BASE_DOUBLE +#include "templates_on.h" +#include "c_init.c" +#include "c_main.c" +#include "c_pass_2.c" +#include "c_pass_3.c" +#include "c_pass_4.c" +#include "c_pass_5.c" +#include "c_pass_6.c" +#include "c_pass_7.c" +#include "c_pass_n.c" +#include "c_radix2.c" +#include "templates_off.h" +#undef BASE_DOUBLE + +#define BASE_FLOAT +#include "templates_on.h" +#include "c_init.c" +#include "c_main.c" +#include "c_pass_2.c" +#include "c_pass_3.c" +#include "c_pass_4.c" +#include "c_pass_5.c" +#include "c_pass_6.c" +#include "c_pass_7.c" +#include "c_pass_n.c" +#include "c_radix2.c" +#include "templates_off.h" +#undef BASE_FLOAT + +#include +#include + +#define BASE_DOUBLE +#include "templates_on.h" +#include "hc_init.c" +#include "hc_main.c" +#include "hc_pass_2.c" +#include "hc_pass_3.c" +#include "hc_pass_4.c" +#include "hc_pass_5.c" +#include "hc_pass_n.c" +#include "hc_radix2.c" +#include "hc_unpack.c" +#include "templates_off.h" +#undef BASE_DOUBLE + +#define BASE_FLOAT +#include "templates_on.h" +#include "hc_init.c" +#include "hc_main.c" +#include "hc_pass_2.c" +#include "hc_pass_3.c" +#include "hc_pass_4.c" +#include "hc_pass_5.c" +#include "hc_pass_n.c" +#include "hc_radix2.c" +#include "hc_unpack.c" +#include "templates_off.h" +#undef BASE_FLOAT + +#include +#include + +#define BASE_DOUBLE +#include "templates_on.h" +#include "real_init.c" +#include "real_main.c" +#include "real_pass_2.c" +#include "real_pass_3.c" +#include "real_pass_4.c" +#include "real_pass_5.c" +#include "real_pass_n.c" +#include "real_radix2.c" +#include "real_unpack.c" +#include "templates_off.h" +#undef BASE_DOUBLE + +#define BASE_FLOAT +#include "templates_on.h" +#include "real_init.c" +#include "real_main.c" +#include "real_pass_2.c" +#include "real_pass_3.c" +#include "real_pass_4.c" +#include "real_pass_5.c" +#include "real_pass_n.c" +#include "real_radix2.c" +#include "real_unpack.c" +#include "templates_off.h" +#undef BASE_FLOAT diff --git a/gsl-2.5/fft/fft.lo b/gsl-2.5/fft/fft.lo new file mode 100644 index 00000000..49eef136 --- /dev/null +++ b/gsl-2.5/fft/fft.lo @@ -0,0 +1,12 @@ +# fft.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/fft.o' + +# Name of the non-PIC object +non_pic_object='fft.o' + diff --git a/gsl-2.5/fft/gsl_dft_complex.h b/gsl-2.5/fft/gsl_dft_complex.h new file mode 100644 index 00000000..cb4d0880 --- /dev/null +++ b/gsl-2.5/fft/gsl_dft_complex.h @@ -0,0 +1,55 @@ +/* fft/gsl_dft_complex.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_DFT_COMPLEX_H__ +#define __GSL_DFT_COMPLEX_H__ + +#include + +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +int gsl_dft_complex_forward (const double data[], const size_t stride, const size_t n, + double result[]); + +int gsl_dft_complex_backward (const double data[], const size_t stride, const size_t n, + double result[]); + +int gsl_dft_complex_inverse (const double data[], const size_t stride, const size_t n, + double result[]); + +int gsl_dft_complex_transform (const double data[], const size_t stride, const size_t n, + double result[], const gsl_fft_direction sign); + +__END_DECLS + +#endif /* __GSL_DFT_COMPLEX_H__ */ diff --git a/gsl-2.5/fft/gsl_dft_complex_float.h b/gsl-2.5/fft/gsl_dft_complex_float.h new file mode 100644 index 00000000..c511ac09 --- /dev/null +++ b/gsl-2.5/fft/gsl_dft_complex_float.h @@ -0,0 +1,55 @@ +/* fft/gsl_dft_complex_float.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_DFT_COMPLEX_FLOAT_H__ +#define __GSL_DFT_COMPLEX_FLOAT_H__ + +#include + +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +int gsl_dft_complex_float_forward (const float data[], const size_t stride, const size_t n, + float result[]); + +int gsl_dft_complex_float_backward (const float data[], const size_t stride, const size_t n, + float result[]); + +int gsl_dft_complex_float_inverse (const float data[], const size_t stride, const size_t n, + float result[]); + +int gsl_dft_complex_float_transform (const float data[], const size_t stride, const size_t n, + float result[], const gsl_fft_direction sign); + +__END_DECLS + +#endif /* __GSL_DFT_COMPLEX_FLOAT_H__ */ diff --git a/gsl-2.5/fft/gsl_fft.h b/gsl-2.5/fft/gsl_fft.h new file mode 100644 index 00000000..8870a888 --- /dev/null +++ b/gsl-2.5/fft/gsl_fft.h @@ -0,0 +1,51 @@ +/* fft/gsl_fft.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_FFT_H__ +#define __GSL_FFT_H__ + +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +typedef enum + { + gsl_fft_forward = -1, gsl_fft_backward = +1 + } +gsl_fft_direction; + +/* this gives the sign in the formula + + h(f) = \sum x(t) exp(+/- 2 pi i f t) + + where - is the forward transform direction and + the inverse direction */ + +__END_DECLS + +#endif /* __GSL_FFT_H__ */ diff --git a/gsl-2.5/fft/gsl_fft_complex.h b/gsl-2.5/fft/gsl_fft_complex.h new file mode 100644 index 00000000..c13f7ea5 --- /dev/null +++ b/gsl-2.5/fft/gsl_fft_complex.h @@ -0,0 +1,136 @@ +/* fft/gsl_fft_complex.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_FFT_COMPLEX_H__ +#define __GSL_FFT_COMPLEX_H__ + +#include + +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +/* Power of 2 routines */ + + +int gsl_fft_complex_radix2_forward (gsl_complex_packed_array data, + const size_t stride, + const size_t n); + +int gsl_fft_complex_radix2_backward (gsl_complex_packed_array data, + const size_t stride, + const size_t n); + +int gsl_fft_complex_radix2_inverse (gsl_complex_packed_array data, + const size_t stride, + const size_t n); + +int gsl_fft_complex_radix2_transform (gsl_complex_packed_array data, + const size_t stride, + const size_t n, + const gsl_fft_direction sign); + +int gsl_fft_complex_radix2_dif_forward (gsl_complex_packed_array data, + const size_t stride, + const size_t n); + +int gsl_fft_complex_radix2_dif_backward (gsl_complex_packed_array data, + const size_t stride, + const size_t n); + +int gsl_fft_complex_radix2_dif_inverse (gsl_complex_packed_array data, + const size_t stride, + const size_t n); + +int gsl_fft_complex_radix2_dif_transform (gsl_complex_packed_array data, + const size_t stride, + const size_t n, + const gsl_fft_direction sign); + +/* Mixed Radix general-N routines */ + +typedef struct + { + size_t n; + size_t nf; + size_t factor[64]; + gsl_complex *twiddle[64]; + gsl_complex *trig; + } +gsl_fft_complex_wavetable; + +typedef struct +{ + size_t n; + double *scratch; +} +gsl_fft_complex_workspace; + + +gsl_fft_complex_wavetable *gsl_fft_complex_wavetable_alloc (size_t n); + +void gsl_fft_complex_wavetable_free (gsl_fft_complex_wavetable * wavetable); + +gsl_fft_complex_workspace *gsl_fft_complex_workspace_alloc (size_t n); + +void gsl_fft_complex_workspace_free (gsl_fft_complex_workspace * workspace); + +int gsl_fft_complex_memcpy (gsl_fft_complex_wavetable * dest, + gsl_fft_complex_wavetable * src); + + +int gsl_fft_complex_forward (gsl_complex_packed_array data, + const size_t stride, + const size_t n, + const gsl_fft_complex_wavetable * wavetable, + gsl_fft_complex_workspace * work); + +int gsl_fft_complex_backward (gsl_complex_packed_array data, + const size_t stride, + const size_t n, + const gsl_fft_complex_wavetable * wavetable, + gsl_fft_complex_workspace * work); + +int gsl_fft_complex_inverse (gsl_complex_packed_array data, + const size_t stride, + const size_t n, + const gsl_fft_complex_wavetable * wavetable, + gsl_fft_complex_workspace * work); + +int gsl_fft_complex_transform (gsl_complex_packed_array data, + const size_t stride, const size_t n, + const gsl_fft_complex_wavetable * wavetable, + gsl_fft_complex_workspace * work, + const gsl_fft_direction sign); + +__END_DECLS + +#endif /* __GSL_FFT_COMPLEX_H__ */ diff --git a/gsl-2.5/fft/gsl_fft_complex_float.h b/gsl-2.5/fft/gsl_fft_complex_float.h new file mode 100644 index 00000000..d3ff395f --- /dev/null +++ b/gsl-2.5/fft/gsl_fft_complex_float.h @@ -0,0 +1,139 @@ +/* fft/gsl_fft_complex_float.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_FFT_COMPLEX_FLOAT_H__ +#define __GSL_FFT_COMPLEX_FLOAT_H__ + +#include + +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +/* Power of 2 routines */ + + +int gsl_fft_complex_float_radix2_forward (gsl_complex_packed_array_float data, + const size_t stride, + const size_t n); + +int gsl_fft_complex_float_radix2_backward (gsl_complex_packed_array_float data, + const size_t stride, + const size_t n); + +int gsl_fft_complex_float_radix2_inverse (gsl_complex_packed_array_float data, + const size_t stride, + const size_t n); + +int gsl_fft_complex_float_radix2_transform (gsl_complex_packed_array_float data, + const size_t stride, + const size_t n, + const gsl_fft_direction sign); + +int gsl_fft_complex_float_radix2_dif_forward (gsl_complex_packed_array_float data, + const size_t stride, + const size_t n); + +int gsl_fft_complex_float_radix2_dif_backward (gsl_complex_packed_array_float data, + const size_t stride, + const size_t n); + +int gsl_fft_complex_float_radix2_dif_inverse (gsl_complex_packed_array_float data, + const size_t stride, + const size_t n); + +int gsl_fft_complex_float_radix2_dif_transform (gsl_complex_packed_array_float data, + const size_t stride, + const size_t n, + const gsl_fft_direction sign); + +/* Mixed Radix general-N routines */ + +typedef struct + { + size_t n; + size_t nf; + size_t factor[64]; + gsl_complex_float *twiddle[64]; + gsl_complex_float *trig; + } +gsl_fft_complex_wavetable_float; + +typedef struct +{ + size_t n; + float *scratch; +} +gsl_fft_complex_workspace_float; + + +gsl_fft_complex_wavetable_float *gsl_fft_complex_wavetable_float_alloc (size_t n); + +void gsl_fft_complex_wavetable_float_free (gsl_fft_complex_wavetable_float * wavetable); + +gsl_fft_complex_workspace_float *gsl_fft_complex_workspace_float_alloc (size_t n); + +void gsl_fft_complex_workspace_float_free (gsl_fft_complex_workspace_float * workspace); + + +int gsl_fft_complex_float_memcpy (gsl_fft_complex_wavetable_float * dest, + gsl_fft_complex_wavetable_float * src); + + +int gsl_fft_complex_float_forward (gsl_complex_packed_array_float data, + const size_t stride, + const size_t n, + const gsl_fft_complex_wavetable_float * wavetable, + gsl_fft_complex_workspace_float * work); + +int gsl_fft_complex_float_backward (gsl_complex_packed_array_float data, + const size_t stride, + const size_t n, + const gsl_fft_complex_wavetable_float * wavetable, + gsl_fft_complex_workspace_float * work); + +int gsl_fft_complex_float_inverse (gsl_complex_packed_array_float data, + const size_t stride, + const size_t n, + const gsl_fft_complex_wavetable_float * wavetable, + gsl_fft_complex_workspace_float * work); + +int gsl_fft_complex_float_transform (gsl_complex_packed_array_float data, + const size_t stride, const size_t n, + const gsl_fft_complex_wavetable_float * wavetable, + gsl_fft_complex_workspace_float * work, + const gsl_fft_direction sign); + +__END_DECLS + +#endif /* __GSL_FFT_COMPLEX_FLOAT_H__ */ + + diff --git a/gsl-2.5/fft/gsl_fft_halfcomplex.h b/gsl-2.5/fft/gsl_fft_halfcomplex.h new file mode 100644 index 00000000..6751e476 --- /dev/null +++ b/gsl-2.5/fft/gsl_fft_halfcomplex.h @@ -0,0 +1,86 @@ +/* fft/gsl_fft_halfcomplex.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_FFT_HALFCOMPLEX_H__ +#define __GSL_FFT_HALFCOMPLEX_H__ + +#include + +#include +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +int gsl_fft_halfcomplex_radix2_backward (double data[], const size_t stride, const size_t n); +int gsl_fft_halfcomplex_radix2_inverse (double data[], const size_t stride, const size_t n); +int gsl_fft_halfcomplex_radix2_transform (double data[], const size_t stride, const size_t n); + +typedef struct + { + size_t n; + size_t nf; + size_t factor[64]; + gsl_complex *twiddle[64]; + gsl_complex *trig; + } +gsl_fft_halfcomplex_wavetable; + +gsl_fft_halfcomplex_wavetable * gsl_fft_halfcomplex_wavetable_alloc (size_t n); + +void +gsl_fft_halfcomplex_wavetable_free (gsl_fft_halfcomplex_wavetable * wavetable); + + +int gsl_fft_halfcomplex_backward (double data[], const size_t stride, const size_t n, + const gsl_fft_halfcomplex_wavetable * wavetable, + gsl_fft_real_workspace * work); + +int gsl_fft_halfcomplex_inverse (double data[], const size_t stride, const size_t n, + const gsl_fft_halfcomplex_wavetable * wavetable, + gsl_fft_real_workspace * work); + +int gsl_fft_halfcomplex_transform (double data[], const size_t stride, const size_t n, + const gsl_fft_halfcomplex_wavetable * wavetable, + gsl_fft_real_workspace * work); + +int +gsl_fft_halfcomplex_unpack (const double halfcomplex_coefficient[], + double complex_coefficient[], + const size_t stride, const size_t n); + +int +gsl_fft_halfcomplex_radix2_unpack (const double halfcomplex_coefficient[], + double complex_coefficient[], + const size_t stride, const size_t n); + +__END_DECLS + +#endif /* __GSL_FFT_HALFCOMPLEX_H__ */ diff --git a/gsl-2.5/fft/gsl_fft_halfcomplex_float.h b/gsl-2.5/fft/gsl_fft_halfcomplex_float.h new file mode 100644 index 00000000..e3183675 --- /dev/null +++ b/gsl-2.5/fft/gsl_fft_halfcomplex_float.h @@ -0,0 +1,86 @@ +/* fft/gsl_fft_halfcomplex_float.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_FFT_HALFCOMPLEX_FLOAT_H__ +#define __GSL_FFT_HALFCOMPLEX_FLOAT_H__ + +#include + +#include +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +int gsl_fft_halfcomplex_float_radix2_backward (float data[], const size_t stride, const size_t n); +int gsl_fft_halfcomplex_float_radix2_inverse (float data[], const size_t stride, const size_t n); +int gsl_fft_halfcomplex_float_radix2_transform (float data[], const size_t stride, const size_t n); + +typedef struct + { + size_t n; + size_t nf; + size_t factor[64]; + gsl_complex_float *twiddle[64]; + gsl_complex_float *trig; + } +gsl_fft_halfcomplex_wavetable_float; + + +gsl_fft_halfcomplex_wavetable_float * gsl_fft_halfcomplex_wavetable_float_alloc (size_t n); + +void +gsl_fft_halfcomplex_wavetable_float_free (gsl_fft_halfcomplex_wavetable_float * wavetable); + +int gsl_fft_halfcomplex_float_backward (float data[], const size_t stride, const size_t n, + const gsl_fft_halfcomplex_wavetable_float * wavetable, + gsl_fft_real_workspace_float * work); + +int gsl_fft_halfcomplex_float_inverse (float data[], const size_t stride, const size_t n, + const gsl_fft_halfcomplex_wavetable_float * wavetable, + gsl_fft_real_workspace_float * work); + +int gsl_fft_halfcomplex_float_transform (float data[], const size_t stride, const size_t n, + const gsl_fft_halfcomplex_wavetable_float * wavetable, + gsl_fft_real_workspace_float * work); + +int +gsl_fft_halfcomplex_float_unpack (const float halfcomplex_coefficient[], + float complex_coefficient[], + const size_t stride, const size_t n); + +int +gsl_fft_halfcomplex_float_radix2_unpack (const float halfcomplex_coefficient[], + float complex_coefficient[], + const size_t stride, const size_t n); + +__END_DECLS + +#endif /* __GSL_FFT_HALFCOMPLEX_FLOAT_H__ */ diff --git a/gsl-2.5/fft/gsl_fft_real.h b/gsl-2.5/fft/gsl_fft_real.h new file mode 100644 index 00000000..e07a6042 --- /dev/null +++ b/gsl-2.5/fft/gsl_fft_real.h @@ -0,0 +1,80 @@ +/* fft/gsl_fft_real.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_FFT_REAL_H__ +#define __GSL_FFT_REAL_H__ + +#include + +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +int gsl_fft_real_radix2_transform (double data[], const size_t stride, const size_t n) ; + +typedef struct + { + size_t n; + size_t nf; + size_t factor[64]; + gsl_complex *twiddle[64]; + gsl_complex *trig; + } +gsl_fft_real_wavetable; + +typedef struct + { + size_t n; + double *scratch; + } +gsl_fft_real_workspace; + +gsl_fft_real_wavetable * gsl_fft_real_wavetable_alloc (size_t n); + +void gsl_fft_real_wavetable_free (gsl_fft_real_wavetable * wavetable); + +gsl_fft_real_workspace * gsl_fft_real_workspace_alloc (size_t n); + +void gsl_fft_real_workspace_free (gsl_fft_real_workspace * workspace); + + +int gsl_fft_real_transform (double data[], const size_t stride, const size_t n, + const gsl_fft_real_wavetable * wavetable, + gsl_fft_real_workspace * work); + + +int gsl_fft_real_unpack (const double real_coefficient[], + double complex_coefficient[], + const size_t stride, const size_t n); + +__END_DECLS + +#endif /* __GSL_FFT_REAL_H__ */ diff --git a/gsl-2.5/fft/gsl_fft_real_float.h b/gsl-2.5/fft/gsl_fft_real_float.h new file mode 100644 index 00000000..7a7732f2 --- /dev/null +++ b/gsl-2.5/fft/gsl_fft_real_float.h @@ -0,0 +1,79 @@ +/* fft/gsl_fft_real_float.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_FFT_REAL_FLOAT_H__ +#define __GSL_FFT_REAL_FLOAT_H__ + +#include + +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +int gsl_fft_real_float_radix2_transform (float data[], const size_t stride, const size_t n) ; + +typedef struct + { + size_t n; + size_t nf; + size_t factor[64]; + gsl_complex_float *twiddle[64]; + gsl_complex_float *trig; + } +gsl_fft_real_wavetable_float; + +typedef struct + { + size_t n; + float *scratch; + } +gsl_fft_real_workspace_float; + +gsl_fft_real_wavetable_float * gsl_fft_real_wavetable_float_alloc (size_t n); + +void gsl_fft_real_wavetable_float_free (gsl_fft_real_wavetable_float * wavetable); + +gsl_fft_real_workspace_float * gsl_fft_real_workspace_float_alloc (size_t n); + +void gsl_fft_real_workspace_float_free (gsl_fft_real_workspace_float * workspace); + +int gsl_fft_real_float_transform (float data[], const size_t stride, const size_t n, + const gsl_fft_real_wavetable_float * wavetable, + gsl_fft_real_workspace_float * work); + + +int gsl_fft_real_float_unpack (const float real_float_coefficient[], + float complex_coefficient[], + const size_t stride, const size_t n); + +__END_DECLS + +#endif /* __GSL_FFT_REAL_FLOAT_H__ */ diff --git a/gsl-2.5/fft/hc_init.c b/gsl-2.5/fft/hc_init.c new file mode 100644 index 00000000..59283a15 --- /dev/null +++ b/gsl-2.5/fft/hc_init.c @@ -0,0 +1,128 @@ +/* fft/hc_init.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007, 2009 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +TYPE(gsl_fft_halfcomplex_wavetable) * +FUNCTION(gsl_fft_halfcomplex_wavetable,alloc) (size_t n) +{ + int status; + size_t i; + size_t n_factors; + size_t t, product, product_1, q; + double d_theta; + + TYPE(gsl_fft_halfcomplex_wavetable) * wavetable ; + + if (n == 0) + { + GSL_ERROR_VAL ("length n must be positive integer", GSL_EDOM, 0); + } + + wavetable = (TYPE(gsl_fft_halfcomplex_wavetable) *) + malloc(sizeof(TYPE(gsl_fft_halfcomplex_wavetable))); + + if (wavetable == NULL) + { + GSL_ERROR_VAL ("failed to allocate struct", GSL_ENOMEM, 0); + } + + wavetable->trig = (TYPE(gsl_complex) *) malloc (n * sizeof (TYPE(gsl_complex))); + + if (wavetable->trig == NULL) + { + /* error in constructor, prevent memory leak */ + + free(wavetable) ; + + GSL_ERROR_VAL ("failed to allocate trigonometric lookup table", + GSL_ENOMEM, 0); + } + + wavetable->n = n ; + + status = fft_halfcomplex_factorize (n, &n_factors, wavetable->factor); + + if (status) + { + /* error in constructor, prevent memory leak */ + + free(wavetable->trig) ; + free(wavetable) ; + + GSL_ERROR_VAL ("factorization failed", GSL_EFACTOR, 0); + } + + wavetable->nf = n_factors; + + d_theta = 2.0 * M_PI / ((double) n); + + t = 0; + product = 1; + for (i = 0; i < n_factors; i++) + { + size_t j; + const size_t factor = wavetable->factor[i]; + wavetable->twiddle[i] = wavetable->trig + t; + product_1 = product; /* product_1 = p_(i-1) */ + product *= factor; + q = n / product; + + for (j = 1; j < factor; j++) + { + size_t k; + size_t m = 0; + for (k = 1; k < (q + 1) / 2; k++) + { + double theta; + m = m + j * product_1; + m = m % n; + theta = d_theta * m; /* d_theta*j*k*product_1 */ + GSL_REAL(wavetable->trig[t]) = cos (theta); + GSL_IMAG(wavetable->trig[t]) = sin (theta); + + t++; + } + } + } + + if (t > (n / 2)) + { + /* error in constructor, prevent memory leak */ + + free(wavetable->trig) ; + free(wavetable) ; + + GSL_ERROR_VAL ("overflowed trigonometric lookup table", GSL_ESANITY, 0); + } + + return wavetable; +} + + +void +FUNCTION(gsl_fft_halfcomplex_wavetable,free) (TYPE(gsl_fft_halfcomplex_wavetable) * wavetable) +{ + RETURN_IF_NULL (wavetable); + /* release trigonometric lookup tables */ + + free (wavetable->trig); + wavetable->trig = NULL; + + free (wavetable); +} + diff --git a/gsl-2.5/fft/hc_main.c b/gsl-2.5/fft/hc_main.c new file mode 100644 index 00000000..b34aa2db --- /dev/null +++ b/gsl-2.5/fft/hc_main.c @@ -0,0 +1,188 @@ +/* fft/hc_main.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include + +#include +#include +#include + +#include "hc_pass.h" + +int +FUNCTION(gsl_fft_halfcomplex,backward) (BASE data[], const size_t stride, + const size_t n, + const TYPE(gsl_fft_halfcomplex_wavetable) * wavetable, + TYPE(gsl_fft_real_workspace) * work) +{ + int status = FUNCTION(gsl_fft_halfcomplex,transform) (data, stride, n, wavetable, work) ; + return status ; +} + +int +FUNCTION(gsl_fft_halfcomplex,inverse) (BASE data[], const size_t stride, + const size_t n, + const TYPE(gsl_fft_halfcomplex_wavetable) * wavetable, + TYPE(gsl_fft_real_workspace) * work) +{ + int status = FUNCTION(gsl_fft_halfcomplex,transform) (data, stride, n, wavetable, work); + + if (status) + { + return status; + } + + /* normalize inverse fft with 1/n */ + + { + const double norm = 1.0 / n; + size_t i; + for (i = 0; i < n; i++) + { + data[stride*i] *= norm; + } + } + return status; +} + +int +FUNCTION(gsl_fft_halfcomplex,transform) (BASE data[], const size_t stride, const size_t n, + const TYPE(gsl_fft_halfcomplex_wavetable) * wavetable, + TYPE(gsl_fft_real_workspace) * work) +{ + BASE * const scratch = work->scratch; + + BASE * in; + BASE * out; + size_t istride, ostride ; + + + size_t factor, product, q; + size_t i; + size_t nf; + int state; + int product_1; + int tskip; + TYPE(gsl_complex) *twiddle1, *twiddle2, *twiddle3, *twiddle4; + + if (n == 0) + { + GSL_ERROR ("length n must be positive integer", GSL_EDOM); + } + + if (n == 1) + { /* FFT of one data point is the identity */ + return 0; + } + + if (n != wavetable->n) + { + GSL_ERROR ("wavetable does not match length of data", GSL_EINVAL); + } + + if (n != work->n) + { + GSL_ERROR ("workspace does not match length of data", GSL_EINVAL); + } + + nf = wavetable->nf; + product = 1; + state = 0; + + for (i = 0; i < nf; i++) + { + factor = wavetable->factor[i]; + product_1 = product; + product *= factor; + q = n / product; + + tskip = (q + 1) / 2 - 1; + + if (state == 0) + { + in = data; + istride = stride; + out = scratch; + ostride = 1; + state = 1; + } + else + { + in = scratch; + istride = 1; + out = data; + ostride = stride; + state = 0; + } + + if (factor == 2) + { + twiddle1 = wavetable->twiddle[i]; + FUNCTION(fft_halfcomplex,pass_2) (in, istride, out, ostride, + product, n, twiddle1); + } + else if (factor == 3) + { + twiddle1 = wavetable->twiddle[i]; + twiddle2 = twiddle1 + tskip; + FUNCTION(fft_halfcomplex,pass_3) (in, istride, out, ostride, + product, n, twiddle1, twiddle2); + } + else if (factor == 4) + { + twiddle1 = wavetable->twiddle[i]; + twiddle2 = twiddle1 + tskip; + twiddle3 = twiddle2 + tskip; + FUNCTION(fft_halfcomplex,pass_4) (in, istride, out, ostride, + product, n, twiddle1, twiddle2, + twiddle3); + } + else if (factor == 5) + { + twiddle1 = wavetable->twiddle[i]; + twiddle2 = twiddle1 + tskip; + twiddle3 = twiddle2 + tskip; + twiddle4 = twiddle3 + tskip; + FUNCTION(fft_halfcomplex,pass_5) (in, istride, out, ostride, + product, n, twiddle1, twiddle2, + twiddle3, twiddle4); + } + else + { + twiddle1 = wavetable->twiddle[i]; + FUNCTION(fft_halfcomplex,pass_n) (in, istride, out, ostride, + factor, product, n, twiddle1); + } + } + + if (state == 1) /* copy results back from scratch to data */ + { + for (i = 0; i < n; i++) + { + data[stride*i] = scratch[i] ; + } + } + + return 0; + +} + + diff --git a/gsl-2.5/fft/hc_pass.h b/gsl-2.5/fft/hc_pass.h new file mode 100644 index 00000000..245e6ee4 --- /dev/null +++ b/gsl-2.5/fft/hc_pass.h @@ -0,0 +1,76 @@ +/* fft/hc_pass.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include "complex_internal.h" + +static void +FUNCTION(fft_halfcomplex,pass_2) (const BASE in[], + const size_t istride, + BASE out[], + const size_t ostride, + const size_t product, + const size_t n, + const TYPE(gsl_complex) twiddle[]); + +static void +FUNCTION(fft_halfcomplex,pass_3) (const BASE in[], + const size_t istride, + BASE out[], + const size_t ostride, + const size_t product, + const size_t n, + const TYPE(gsl_complex) twiddle1[], + const TYPE(gsl_complex) twiddle2[]); + +static void +FUNCTION(fft_halfcomplex,pass_4) (const BASE in[], + const size_t istride, + BASE out[], + const size_t ostride, + const size_t product, + const size_t n, + const TYPE(gsl_complex) twiddle1[], + const TYPE(gsl_complex) twiddle2[], + const TYPE(gsl_complex) twiddle3[]); + +static void +FUNCTION(fft_halfcomplex,pass_5) (const BASE in[], + const size_t istride, + BASE out[], + const size_t ostride, + const size_t product, + const size_t n, + const TYPE(gsl_complex) twiddle1[], + const TYPE(gsl_complex) twiddle2[], + const TYPE(gsl_complex) twiddle3[], + const TYPE(gsl_complex) twiddle4[]); + +static void +FUNCTION(fft_halfcomplex,pass_n) (const BASE in[], + const size_t istride, + BASE out[], + const size_t ostride, + const size_t factor, + const size_t product, + const size_t n, + const TYPE(gsl_complex) twiddle[]); + + + + diff --git a/gsl-2.5/fft/hc_pass_2.c b/gsl-2.5/fft/hc_pass_2.c new file mode 100644 index 00000000..a65e7e06 --- /dev/null +++ b/gsl-2.5/fft/hc_pass_2.c @@ -0,0 +1,106 @@ +/* fft/hc_pass_2.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +static void +FUNCTION(fft_halfcomplex,pass_2) (const BASE in[], + const size_t istride, + BASE out[], + const size_t ostride, + const size_t product, + const size_t n, + const TYPE(gsl_complex) twiddle[]) +{ + size_t i, j, k, k1, jump; + size_t factor, q, m, product_1; + i = 0; + j = 0; + + factor = 2; + m = n / factor; + q = n / product; + product_1 = product / factor; + jump = (factor - 1) * q; + + for (k1 = 0; k1 < product_1; k1++) + { + const ATOMIC r0 = VECTOR(in,istride,2 * k1 * q); + const ATOMIC r1 = VECTOR(in,istride,2 * k1 * q + 2 * q - 1); + + const ATOMIC s0 = r0 + r1; + const ATOMIC s1 = r0 - r1; + + VECTOR(out,ostride,q * k1) = s0; + VECTOR(out,ostride,q * k1 + m) = s1; + } + + if (q == 1) + return; + + for (k = 1; k < (q + 1) / 2; k++) + { + const ATOMIC w_real = GSL_REAL(twiddle[k - 1]); + const ATOMIC w_imag = GSL_IMAG(twiddle[k - 1]); + + for (k1 = 0; k1 < product_1; k1++) + { + const size_t from0 = 2 * k1 * q + 2 * k - 1; + const size_t from1 = 2 * k1 * q - 2 * k + 2 * q - 1; + + const ATOMIC z0_real = VECTOR(in,istride,from0); + const ATOMIC z0_imag = VECTOR(in,istride,from0 + 1); + + const ATOMIC z1_real = VECTOR(in,istride,from1); + const ATOMIC z1_imag = VECTOR(in,istride,from1 + 1); + + /* compute x = W(2) z */ + + /* x0 = z0 + z1 */ + const ATOMIC x0_real = z0_real + z1_real; + const ATOMIC x0_imag = z0_imag - z1_imag; + + /* x1 = z0 - z1 */ + const ATOMIC x1_real = z0_real - z1_real; + const ATOMIC x1_imag = z0_imag + z1_imag; + + const size_t to0 = k1 * q + 2 * k - 1; + const size_t to1 = to0 + m; + + VECTOR(out,ostride,to0) = x0_real; + VECTOR(out,ostride,to0 + 1) = x0_imag; + + VECTOR(out,ostride,to1) = w_real * x1_real - w_imag * x1_imag; + VECTOR(out,ostride,to1 + 1) = w_imag * x1_real + w_real * x1_imag; + + } + } + + if (q % 2 == 1) + return; + + for (k1 = 0; k1 < product_1; k1++) + { + const size_t from0 = 2 * k1 * q + q - 1; + const size_t to0 = k1 * q + q - 1; + const size_t to1 = to0 + m; + + VECTOR(out,ostride,to0) = 2 * VECTOR(in,istride,from0); + VECTOR(out,ostride,to1) = -2 * VECTOR(in,istride,from0 + 1); + } + return; +} diff --git a/gsl-2.5/fft/hc_pass_3.c b/gsl-2.5/fft/hc_pass_3.c new file mode 100644 index 00000000..54f238db --- /dev/null +++ b/gsl-2.5/fft/hc_pass_3.c @@ -0,0 +1,162 @@ +/* fft/hc_pass_3.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +static void +FUNCTION(fft_halfcomplex,pass_3) (const BASE in[], + const size_t istride, + BASE out[], + const size_t ostride, + const size_t product, + const size_t n, + const TYPE(gsl_complex) twiddle1[], + const TYPE(gsl_complex) twiddle2[]) +{ + size_t i, j, k, k1, jump; + size_t factor, q, m, product_1; + + ATOMIC tau = sqrt (3.0) / 2.0; + + i = 0; + j = 0; + + factor = 3; + m = n / factor; + q = n / product; + product_1 = product / factor; + jump = (factor - 1) * q; + + for (k1 = 0; k1 < product_1; k1++) + { + const size_t from0 = 3 * k1 * q; + const size_t from1 = from0 + 2 * q - 1; + + const ATOMIC z0_real = VECTOR(in,istride,from0); + const ATOMIC z1_real = VECTOR(in,istride,from1); + const ATOMIC z1_imag = VECTOR(in,istride,from1 + 1); + + const ATOMIC t1_real = 2 * z1_real; + const ATOMIC t2_real = z0_real - z1_real; + const ATOMIC t3_imag = 2 * tau * z1_imag; + + const size_t to0 = q * k1; + const size_t to1 = to0 + m; + const size_t to2 = to1 + m; + + VECTOR(out,ostride,to0) = z0_real + t1_real; + VECTOR(out,ostride,to1) = t2_real - t3_imag; + VECTOR(out,ostride,to2) = t2_real + t3_imag; + + } + + if (q == 1) + return; + + for (k = 1; k < (q + 1) / 2; k++) + { + const ATOMIC w1_real = GSL_REAL(twiddle1[k - 1]); + const ATOMIC w1_imag = GSL_IMAG(twiddle1[k - 1]); + const ATOMIC w2_real = GSL_REAL(twiddle2[k - 1]); + const ATOMIC w2_imag = GSL_IMAG(twiddle2[k - 1]); + + for (k1 = 0; k1 < product_1; k1++) + { + const size_t from0 = 3 * k1 * q + 2 * k - 1; + const size_t from1 = from0 + 2 * q; + const size_t from2 = 3 * k1 * q - 2 * k + 2 * q - 1; + + const ATOMIC z0_real = VECTOR(in,istride,from0); + const ATOMIC z0_imag = VECTOR(in,istride,from0 + 1); + + const ATOMIC z1_real = VECTOR(in,istride,from1); + const ATOMIC z1_imag = VECTOR(in,istride,from1 + 1); + + const ATOMIC z2_real = VECTOR(in,istride,from2); + const ATOMIC z2_imag = -VECTOR(in,istride,from2 + 1); + + /* compute x = W(3) z */ + + /* t1 = z1 + z2 */ + const ATOMIC t1_real = z1_real + z2_real; + const ATOMIC t1_imag = z1_imag + z2_imag; + + /* t2 = z0 - t1/2 */ + const ATOMIC t2_real = z0_real - t1_real / 2.0; + const ATOMIC t2_imag = z0_imag - t1_imag / 2.0; + + /* t3 = sin(pi/3)*(z1 - z2) */ + const ATOMIC t3_real = tau * (z1_real - z2_real); + const ATOMIC t3_imag = tau * (z1_imag - z2_imag); + + /* x0 = z0 + t1 */ + const ATOMIC x0_real = z0_real + t1_real; + const ATOMIC x0_imag = z0_imag + t1_imag; + + /* x1 = t2 + i t3 */ + const ATOMIC x1_real = t2_real - t3_imag; + const ATOMIC x1_imag = t2_imag + t3_real; + + /* x2 = t2 - i t3 */ + const ATOMIC x2_real = t2_real + t3_imag; + const ATOMIC x2_imag = t2_imag - t3_real; + + const size_t to0 = k1 * q + 2 * k - 1; + const size_t to1 = to0 + m; + const size_t to2 = to1 + m; + + VECTOR(out,ostride,to0) = x0_real; + VECTOR(out,ostride,to0 + 1) = x0_imag; + + VECTOR(out,ostride,to1) = w1_real * x1_real - w1_imag * x1_imag; + VECTOR(out,ostride,to1 + 1) = w1_imag * x1_real + w1_real * x1_imag; + + VECTOR(out,ostride,to2) = w2_real * x2_real - w2_imag * x2_imag; + VECTOR(out,ostride,to2 + 1) = w2_imag * x2_real + w2_real * x2_imag; + + } + } + + if (q % 2 == 1) + return; + + for (k1 = 0; k1 < product_1; k1++) + { + const size_t from0 = 3 * k1 * q + q - 1; + const size_t from1 = from0 + 2 * q; + + const ATOMIC z0_real = VECTOR(in,istride,from0); + const ATOMIC z0_imag = VECTOR(in,istride,from0 + 1); + const ATOMIC z1_real = VECTOR(in,istride,from1); + + const ATOMIC t1_real = z0_real - z1_real; + const ATOMIC t2_real = 2 * tau * z0_imag; + + const ATOMIC x0_real = 2 * z0_real + z1_real; + const ATOMIC x1_real = t1_real - t2_real; + const ATOMIC x2_real = -t1_real - t2_real; + + const size_t to0 = k1 * q + q - 1; + const size_t to1 = to0 + m; + const size_t to2 = to1 + m; + + VECTOR(out,ostride,to0) = x0_real; + VECTOR(out,ostride,to1) = x1_real; + VECTOR(out,ostride,to2) = x2_real; + } + return; +} diff --git a/gsl-2.5/fft/hc_pass_4.c b/gsl-2.5/fft/hc_pass_4.c new file mode 100644 index 00000000..5e0da6c6 --- /dev/null +++ b/gsl-2.5/fft/hc_pass_4.c @@ -0,0 +1,189 @@ +/* fft/hc_pass_4.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +static void +FUNCTION(fft_halfcomplex,pass_4) (const BASE in[], + const size_t istride, + BASE out[], + const size_t ostride, + const size_t product, + const size_t n, + const TYPE(gsl_complex) twiddle1[], + const TYPE(gsl_complex) twiddle2[], + const TYPE(gsl_complex) twiddle3[]) +{ + size_t i, j, k, k1, jump; + size_t factor, q, m, product_1; + + i = 0; + j = 0; + + factor = 4; + m = n / factor; + q = n / product; + product_1 = product / factor; + jump = (factor - 1) * q; + + for (k1 = 0; k1 < product_1; k1++) + { + const size_t from0 = 4 * k1 * q; + const size_t from1 = from0 + 2 * q - 1; + const size_t from2 = from1 + 2 * q; + + const ATOMIC z0_real = VECTOR(in,istride,from0); + const ATOMIC z1_real = VECTOR(in,istride,from1); + const ATOMIC z1_imag = VECTOR(in,istride,from1 + 1); + const ATOMIC z2_real = VECTOR(in,istride,from2); + + const ATOMIC t1_real = z0_real + z2_real; + const ATOMIC t2_real = 2 * z1_real; + const ATOMIC t3_real = z0_real - z2_real; + const ATOMIC t4_imag = 2 * z1_imag; + + const size_t to0 = q * k1; + const size_t to1 = to0 + m; + const size_t to2 = to1 + m; + const size_t to3 = to2 + m; + + VECTOR(out,ostride,to0) = t1_real + t2_real; + VECTOR(out,ostride,to1) = t3_real - t4_imag; + VECTOR(out,ostride,to2) = t1_real - t2_real; + VECTOR(out,ostride,to3) = t3_real + t4_imag; + } + + if (q == 1) + return; + + for (k = 1; k < (q + 1) / 2; k++) + { + const ATOMIC w1_real = GSL_REAL(twiddle1[k - 1]); + const ATOMIC w1_imag = GSL_IMAG(twiddle1[k - 1]); + const ATOMIC w2_real = GSL_REAL(twiddle2[k - 1]); + const ATOMIC w2_imag = GSL_IMAG(twiddle2[k - 1]); + const ATOMIC w3_real = GSL_REAL(twiddle3[k - 1]); + const ATOMIC w3_imag = GSL_IMAG(twiddle3[k - 1]); + + for (k1 = 0; k1 < product_1; k1++) + { + const size_t from0 = 4 * k1 * q + 2 * k - 1; + const size_t from1 = from0 + 2 * q; + const size_t from2 = 4 * k1 * q - 2 * k + 2 * q - 1; + const size_t from3 = from2 + 2 * q; + + const ATOMIC z0_real = VECTOR(in,istride,from0); + const ATOMIC z0_imag = VECTOR(in,istride,from0 + 1); + + const ATOMIC z1_real = VECTOR(in,istride,from1); + const ATOMIC z1_imag = VECTOR(in,istride,from1 + 1); + + const ATOMIC z2_real = VECTOR(in,istride,from3); + const ATOMIC z2_imag = -VECTOR(in,istride,from3 + 1); + + const ATOMIC z3_real = VECTOR(in,istride,from2); + const ATOMIC z3_imag = -VECTOR(in,istride,from2 + 1); + + /* compute x = W(4) z */ + + /* t1 = z0 + z2 */ + const ATOMIC t1_real = z0_real + z2_real; + const ATOMIC t1_imag = z0_imag + z2_imag; + + /* t2 = z1 + z3 */ + const ATOMIC t2_real = z1_real + z3_real; + const ATOMIC t2_imag = z1_imag + z3_imag; + + /* t3 = z0 - z2 */ + const ATOMIC t3_real = z0_real - z2_real; + const ATOMIC t3_imag = z0_imag - z2_imag; + + /* t4 = (z1 - z3) */ + const ATOMIC t4_real = (z1_real - z3_real); + const ATOMIC t4_imag = (z1_imag - z3_imag); + + /* x0 = t1 + t2 */ + const ATOMIC x0_real = t1_real + t2_real; + const ATOMIC x0_imag = t1_imag + t2_imag; + + /* x1 = t3 + i t4 */ + const ATOMIC x1_real = t3_real - t4_imag; + const ATOMIC x1_imag = t3_imag + t4_real; + + /* x2 = t1 - t2 */ + const ATOMIC x2_real = t1_real - t2_real; + const ATOMIC x2_imag = t1_imag - t2_imag; + + /* x3 = t3 - i t4 */ + const ATOMIC x3_real = t3_real + t4_imag; + const ATOMIC x3_imag = t3_imag - t4_real; + + const size_t to0 = k1 * q + 2 * k - 1; + const size_t to1 = to0 + m; + const size_t to2 = to1 + m; + const size_t to3 = to2 + m; + + VECTOR(out,ostride,to0) = x0_real; + VECTOR(out,ostride,to0 + 1) = x0_imag; + + VECTOR(out,ostride,to1) = w1_real * x1_real - w1_imag * x1_imag; + VECTOR(out,ostride,to1 + 1) = w1_imag * x1_real + w1_real * x1_imag; + + VECTOR(out,ostride,to2) = w2_real * x2_real - w2_imag * x2_imag; + VECTOR(out,ostride,to2 + 1) = w2_imag * x2_real + w2_real * x2_imag; + + /* to3 = w3 * x3 */ + VECTOR(out,ostride,to3) = w3_real * x3_real - w3_imag * x3_imag; + VECTOR(out,ostride,to3 + 1) = w3_real * x3_imag + w3_imag * x3_real; + + } + } + + if (q % 2 == 1) + return; + + for (k1 = 0; k1 < product_1; k1++) + { + const size_t from0 = 4 * k1 * q + q - 1; + const size_t from1 = from0 + 2 * q; + + const ATOMIC z0_real = VECTOR(in,istride,from0); + const ATOMIC z0_imag = VECTOR(in,istride,from0 + 1); + + const ATOMIC z1_real = VECTOR(in,istride,from1); + const ATOMIC z1_imag = VECTOR(in,istride,from1 + 1); + + const ATOMIC t1_real = sqrt (2.0) * (z0_imag + z1_imag); + const ATOMIC t2_real = sqrt (2.0) * (z0_real - z1_real); + + const ATOMIC x0_real = 2 * (z0_real + z1_real); + const ATOMIC x1_real = t2_real - t1_real; + const ATOMIC x2_real = 2 * (z1_imag - z0_imag); + const ATOMIC x3_real = -(t2_real + t1_real); + + const size_t to0 = k1 * q + q - 1; + const size_t to1 = to0 + m; + const size_t to2 = to1 + m; + const size_t to3 = to2 + m; + + VECTOR(out,ostride,to0) = x0_real; + VECTOR(out,ostride,to1) = x1_real; + VECTOR(out,ostride,to2) = x2_real; + VECTOR(out,ostride,to3) = x3_real; + } + return; +} diff --git a/gsl-2.5/fft/hc_pass_5.c b/gsl-2.5/fft/hc_pass_5.c new file mode 100644 index 00000000..e08eb391 --- /dev/null +++ b/gsl-2.5/fft/hc_pass_5.c @@ -0,0 +1,264 @@ +/* fft/hc_pass_5.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +static void +FUNCTION(fft_halfcomplex,pass_5) (const BASE in[], + const size_t istride, + BASE out[], + const size_t ostride, + const size_t product, + const size_t n, + const TYPE(gsl_complex) twiddle1[], + const TYPE(gsl_complex) twiddle2[], + const TYPE(gsl_complex) twiddle3[], + const TYPE(gsl_complex) twiddle4[]) +{ + + size_t i, j, k, k1, jump; + size_t factor, q, m, product_1; + + const ATOMIC sina = sin (2.0 * M_PI / 5.0); + const ATOMIC sinb = sin (2.0 * M_PI / 10.0); + + i = 0; + j = 0; + + factor = 5; + m = n / factor; + q = n / product; + product_1 = product / factor; + jump = (factor - 1) * q; + + for (k1 = 0; k1 < product_1; k1++) + { + const size_t from0 = 5 * k1 * q; + const size_t from1 = from0 + 2 * q - 1; + const size_t from2 = from1 + 2 * q; + + const ATOMIC z0_real = VECTOR(in,istride,from0); + const ATOMIC z1_real = VECTOR(in,istride,from1); + const ATOMIC z1_imag = VECTOR(in,istride,from1 + 1); + const ATOMIC z2_real = VECTOR(in,istride,from2); + const ATOMIC z2_imag = VECTOR(in,istride,from2 + 1); + + const ATOMIC t1_real = 2 * (z1_real + z2_real); + const ATOMIC t2_real = 2 * (sqrt (5.0) / 4.0) * (z1_real - z2_real); + const ATOMIC t3_real = z0_real - t1_real / 4.0; + const ATOMIC t4_real = t2_real + t3_real; + const ATOMIC t5_real = -t2_real + t3_real; + const ATOMIC t6_imag = 2 * (sina * z1_imag + sinb * z2_imag); + const ATOMIC t7_imag = 2 * (sinb * z1_imag - sina * z2_imag); + + const ATOMIC x0_real = z0_real + t1_real; + const ATOMIC x1_real = t4_real - t6_imag; + const ATOMIC x2_real = t5_real - t7_imag; + const ATOMIC x3_real = t5_real + t7_imag; + const ATOMIC x4_real = t4_real + t6_imag; + + const size_t to0 = q * k1; + const size_t to1 = to0 + m; + const size_t to2 = to1 + m; + const size_t to3 = to2 + m; + const size_t to4 = to3 + m; + + VECTOR(out,ostride,to0) = x0_real; + VECTOR(out,ostride,to1) = x1_real; + VECTOR(out,ostride,to2) = x2_real; + VECTOR(out,ostride,to3) = x3_real; + VECTOR(out,ostride,to4) = x4_real; + } + + if (q == 1) + return; + + for (k = 1; k < (q + 1) / 2; k++) + { + const ATOMIC w1_real = GSL_REAL(twiddle1[k - 1]); + const ATOMIC w1_imag = GSL_IMAG(twiddle1[k - 1]); + const ATOMIC w2_real = GSL_REAL(twiddle2[k - 1]); + const ATOMIC w2_imag = GSL_IMAG(twiddle2[k - 1]); + const ATOMIC w3_real = GSL_REAL(twiddle3[k - 1]); + const ATOMIC w3_imag = GSL_IMAG(twiddle3[k - 1]); + const ATOMIC w4_real = GSL_REAL(twiddle4[k - 1]); + const ATOMIC w4_imag = GSL_IMAG(twiddle4[k - 1]); + + for (k1 = 0; k1 < product_1; k1++) + { + const size_t from0 = 5 * k1 * q + 2 * k - 1; + const size_t from1 = from0 + 2 * q; + const size_t from2 = from1 + 2 * q; + const size_t from3 = 5 * k1 * q - 2 * k + 2 * q - 1; + const size_t from4 = from3 + 2 * q; + + const ATOMIC z0_real = VECTOR(in,istride,from0); + const ATOMIC z0_imag = VECTOR(in,istride,from0 + 1); + + const ATOMIC z1_real = VECTOR(in,istride,from1); + const ATOMIC z1_imag = VECTOR(in,istride,from1 + 1); + + const ATOMIC z2_real = VECTOR(in,istride,from2); + const ATOMIC z2_imag = VECTOR(in,istride,from2 + 1); + + const ATOMIC z3_real = VECTOR(in,istride,from4); + const ATOMIC z3_imag = -VECTOR(in,istride,from4 + 1); + + const ATOMIC z4_real = VECTOR(in,istride,from3); + const ATOMIC z4_imag = -VECTOR(in,istride,from3 + 1); + + /* compute x = W(5) z */ + + /* t1 = z1 + z4 */ + const ATOMIC t1_real = z1_real + z4_real; + const ATOMIC t1_imag = z1_imag + z4_imag; + + /* t2 = z2 + z3 */ + const ATOMIC t2_real = z2_real + z3_real; + const ATOMIC t2_imag = z2_imag + z3_imag; + + /* t3 = z1 - z4 */ + const ATOMIC t3_real = z1_real - z4_real; + const ATOMIC t3_imag = z1_imag - z4_imag; + + /* t4 = z2 - z3 */ + const ATOMIC t4_real = z2_real - z3_real; + const ATOMIC t4_imag = z2_imag - z3_imag; + + /* t5 = t1 + t2 */ + const ATOMIC t5_real = t1_real + t2_real; + const ATOMIC t5_imag = t1_imag + t2_imag; + + /* t6 = (sqrt(5)/4)(t1 - t2) */ + const ATOMIC t6_real = (sqrt (5.0) / 4.0) * (t1_real - t2_real); + const ATOMIC t6_imag = (sqrt (5.0) / 4.0) * (t1_imag - t2_imag); + + /* t7 = z0 - ((t5)/4) */ + const ATOMIC t7_real = z0_real - t5_real / 4.0; + const ATOMIC t7_imag = z0_imag - t5_imag / 4.0; + + /* t8 = t7 + t6 */ + const ATOMIC t8_real = t7_real + t6_real; + const ATOMIC t8_imag = t7_imag + t6_imag; + + /* t9 = t7 - t6 */ + const ATOMIC t9_real = t7_real - t6_real; + const ATOMIC t9_imag = t7_imag - t6_imag; + + /* t10 = sin(2 pi/5) t3 + sin(2 pi/10) t4 */ + const ATOMIC t10_real = sina * t3_real + sinb * t4_real; + const ATOMIC t10_imag = sina * t3_imag + sinb * t4_imag; + + /* t11 = sin(2 pi/10) t3 - sin(2 pi/5) t4 */ + const ATOMIC t11_real = sinb * t3_real - sina * t4_real; + const ATOMIC t11_imag = sinb * t3_imag - sina * t4_imag; + + /* x0 = z0 + t5 */ + const ATOMIC x0_real = z0_real + t5_real; + const ATOMIC x0_imag = z0_imag + t5_imag; + + /* x1 = t8 + i t10 */ + const ATOMIC x1_real = t8_real - t10_imag; + const ATOMIC x1_imag = t8_imag + t10_real; + + /* x2 = t9 + i t11 */ + const ATOMIC x2_real = t9_real - t11_imag; + const ATOMIC x2_imag = t9_imag + t11_real; + + /* x3 = t9 - i t11 */ + const ATOMIC x3_real = t9_real + t11_imag; + const ATOMIC x3_imag = t9_imag - t11_real; + + /* x4 = t8 - i t10 */ + const ATOMIC x4_real = t8_real + t10_imag; + const ATOMIC x4_imag = t8_imag - t10_real; + + const size_t to0 = k1 * q + 2 * k - 1; + const size_t to1 = to0 + m; + const size_t to2 = to1 + m; + const size_t to3 = to2 + m; + const size_t to4 = to3 + m; + + /* apply twiddle factors */ + + /* to0 = 1 * x0 */ + VECTOR(out,ostride,to0) = x0_real; + VECTOR(out,ostride,to0 + 1) = x0_imag; + + /* to1 = w1 * x1 */ + VECTOR(out,ostride,to1) = w1_real * x1_real - w1_imag * x1_imag; + VECTOR(out,ostride,to1 + 1) = w1_real * x1_imag + w1_imag * x1_real; + + /* to2 = w2 * x2 */ + VECTOR(out,ostride,to2) = w2_real * x2_real - w2_imag * x2_imag; + VECTOR(out,ostride,to2 + 1) = w2_real * x2_imag + w2_imag * x2_real; + + /* to3 = w3 * x3 */ + VECTOR(out,ostride,to3) = w3_real * x3_real - w3_imag * x3_imag; + VECTOR(out,ostride,to3 + 1) = w3_real * x3_imag + w3_imag * x3_real; + + /* to4 = w4 * x4 */ + VECTOR(out,ostride,to4) = w4_real * x4_real - w4_imag * x4_imag; + VECTOR(out,ostride,to4 + 1) = w4_real * x4_imag + w4_imag * x4_real; + } + } + + if (q % 2 == 1) + return; + + for (k1 = 0; k1 < product_1; k1++) + { + const size_t from0 = 5 * k1 * q + q - 1; + const size_t from1 = from0 + 2 * q; + const size_t from2 = from1 + 2 * q; + + const ATOMIC z0_real = 2 * VECTOR(in,istride,from0); + const ATOMIC z0_imag = 2 * VECTOR(in,istride,from0 + 1); + + const ATOMIC z1_real = 2 * VECTOR(in,istride,from1); + const ATOMIC z1_imag = 2 * VECTOR(in,istride,from1 + 1); + + const ATOMIC z2_real = VECTOR(in,istride,from2); + + const ATOMIC t1_real = z0_real + z1_real; + const ATOMIC t2_real = (t1_real / 4.0) - z2_real; + const ATOMIC t3_real = (sqrt (5.0) / 4.0) * (z0_real - z1_real); + const ATOMIC t4_real = sinb * z0_imag + sina * z1_imag; + const ATOMIC t5_real = sina * z0_imag - sinb * z1_imag; + const ATOMIC t6_real = t3_real + t2_real; + const ATOMIC t7_real = t3_real - t2_real; + + const ATOMIC x0_real = t1_real + z2_real; + const ATOMIC x1_real = t6_real - t4_real; + const ATOMIC x2_real = t7_real - t5_real; + const ATOMIC x3_real = -t7_real - t5_real; + const ATOMIC x4_real = -t6_real - t4_real; + + const size_t to0 = k1 * q + q - 1; + const size_t to1 = to0 + m; + const size_t to2 = to1 + m; + const size_t to3 = to2 + m; + const size_t to4 = to3 + m; + + VECTOR(out,ostride,to0) = x0_real; + VECTOR(out,ostride,to1) = x1_real; + VECTOR(out,ostride,to2) = x2_real; + VECTOR(out,ostride,to3) = x3_real; + VECTOR(out,ostride,to4) = x4_real; + } + return; +} diff --git a/gsl-2.5/fft/hc_pass_n.c b/gsl-2.5/fft/hc_pass_n.c new file mode 100644 index 00000000..28fad88f --- /dev/null +++ b/gsl-2.5/fft/hc_pass_n.c @@ -0,0 +1,257 @@ +/* fft/hc_pass_n.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +static void +FUNCTION(fft_halfcomplex,pass_n) (const BASE in[], + const size_t istride, + BASE out[], + const size_t ostride, + const size_t factor, + const size_t product, + const size_t n, + const TYPE(gsl_complex) twiddle[]) +{ + + size_t k, k1; + + const size_t m = n / factor; + const size_t q = n / product; + const size_t product_1 = product / factor; + + size_t e1, e2; + + const double d_theta = 2.0 * M_PI / ((double) factor); + const ATOMIC cos_d_theta = cos (d_theta); + const ATOMIC sin_d_theta = sin (d_theta); + + for (k1 = 0; k1 < product_1; k1++) + { + /* compute z = W(factor) x, for x halfcomplex */ + + ATOMIC dw_real = 1.0, dw_imag = 0.0; + + for (e1 = 0; e1 < factor; e1++) + { + ATOMIC sum_real = 0.0; + ATOMIC w_real = 1.0, w_imag = 0.0; + + if (e1 > 0) + { + ATOMIC tmp_real = dw_real * cos_d_theta - dw_imag * sin_d_theta; + ATOMIC tmp_imag = dw_real * sin_d_theta + dw_imag * cos_d_theta; + dw_real = tmp_real; + dw_imag = tmp_imag; + } + + for (e2 = 0; e2 <= factor - e2; e2++) + { + ATOMIC z_real, z_imag; + + if (e2 > 0) + { + ATOMIC tmp_real = dw_real * w_real - dw_imag * w_imag; + ATOMIC tmp_imag = dw_real * w_imag + dw_imag * w_real; + w_real = tmp_real; + w_imag = tmp_imag; + } + + if (e2 == 0) + { + size_t from_idx = factor * k1 * q; + z_real = VECTOR(in,istride,from_idx); + z_imag = 0.0; + sum_real += w_real * z_real - w_imag * z_imag; + } + else if (e2 == factor - e2) + { + size_t from_idx = factor * q * k1 + 2 * e2 * q - 1; + z_real = VECTOR(in,istride,from_idx); + z_imag = 0.0; + sum_real += w_real * z_real; + } + else + { + size_t from_idx = factor * q * k1 + 2 * e2 * q - 1; + z_real = VECTOR(in,istride,from_idx); + z_imag = VECTOR(in,istride,from_idx + 1); + sum_real += 2 * (w_real * z_real - w_imag * z_imag); + } + + } + + { + const size_t to_idx = q * k1 + e1 * m; + VECTOR(out,ostride,to_idx) = sum_real; + } + } + } + + if (q == 1) + return; + + for (k = 1; k < (q + 1) / 2; k++) + { + for (k1 = 0; k1 < product_1; k1++) + { + + ATOMIC dw_real = 1.0, dw_imag = 0.0; + + for (e1 = 0; e1 < factor; e1++) + { + ATOMIC z_real, z_imag; + ATOMIC sum_real = 0.0; + ATOMIC sum_imag = 0.0; + ATOMIC w_real = 1.0, w_imag = 0.0; + + if (e1 > 0) + { + ATOMIC t_real = dw_real * cos_d_theta - dw_imag * sin_d_theta; + ATOMIC t_imag = dw_real * sin_d_theta + dw_imag * cos_d_theta; + dw_real = t_real; + dw_imag = t_imag; + } + + for (e2 = 0; e2 < factor; e2++) + { + + if (e2 > 0) + { + ATOMIC tmp_real = dw_real * w_real - dw_imag * w_imag; + ATOMIC tmp_imag = dw_real * w_imag + dw_imag * w_real; + w_real = tmp_real; + w_imag = tmp_imag; + } + + if (e2 < factor - e2) + { + const size_t from0 = factor * k1 * q + 2 * k + 2 * e2 * q - 1; + z_real = VECTOR(in,istride,from0); + z_imag = VECTOR(in,istride,from0 + 1); + } + else + { + const size_t from0 = factor * k1 * q - 2 * k + 2 * (factor - e2) * q - 1; + z_real = VECTOR(in,istride,from0); + z_imag = -VECTOR(in,istride,from0 + 1); + } + + sum_real += w_real * z_real - w_imag * z_imag; + sum_imag += w_real * z_imag + w_imag * z_real; + } + + if (k == 0 || e1 == 0) + { + w_real = 1.0; + w_imag = 0.0; + } + else + { + size_t tskip = (q + 1) / 2 - 1; + w_real = GSL_REAL(twiddle[k - 1 + tskip * (e1 - 1)]); + w_imag = GSL_IMAG(twiddle[k - 1 + tskip * (e1 - 1)]); + } + + { + const size_t to0 = k1 * q + 2 * k + e1 * m - 1; + VECTOR(out,ostride,to0) = w_real * sum_real - w_imag * sum_imag; + VECTOR(out,ostride,to0 + 1) = w_real * sum_imag + w_imag * sum_real; + } + + } + } + } + + + if (q % 2 == 1) + return; + + { + double tw_arg = M_PI / ((double) factor); + ATOMIC cos_tw_arg = cos (tw_arg); + ATOMIC sin_tw_arg = sin (tw_arg); + + for (k1 = 0; k1 < product_1; k1++) + { + + ATOMIC dw_real = 1.0, dw_imag = 0.0; + ATOMIC tw_real = 1.0, tw_imag = 0.0; + + for (e1 = 0; e1 < factor; e1++) + { + ATOMIC w_real, w_imag, z_real, z_imag; + + ATOMIC sum_real = 0.0; + + if (e1 > 0) + { + ATOMIC tmp_real = tw_real * cos_tw_arg - tw_imag * sin_tw_arg; + ATOMIC tmp_imag = tw_real * sin_tw_arg + tw_imag * cos_tw_arg; + tw_real = tmp_real; + tw_imag = tmp_imag; + } + + w_real = tw_real; + w_imag = tw_imag; + + if (e1 > 0) + { + ATOMIC t_real = dw_real * cos_d_theta - dw_imag * sin_d_theta; + ATOMIC t_imag = dw_real * sin_d_theta + dw_imag * cos_d_theta; + dw_real = t_real; + dw_imag = t_imag; + } + + for (e2 = 0; e2 <= factor - e2 - 1; e2++) + { + + if (e2 > 0) + { + ATOMIC tmp_real = dw_real * w_real - dw_imag * w_imag; + ATOMIC tmp_imag = dw_real * w_imag + dw_imag * w_real; + w_real = tmp_real; + w_imag = tmp_imag; + } + + + if (e2 == factor - e2 - 1) + { + const size_t from0 = factor * k1 * q + q + 2 * e2 * q - 1; + z_real = VECTOR(in,istride,from0); + z_imag = 0.0; + sum_real += w_real * z_real - w_imag * z_imag; + } + else + { + const size_t from0 = factor * k1 * q + q + 2 * e2 * q - 1; + z_real = VECTOR(in,istride,from0); + z_imag = VECTOR(in,istride,from0 + 1); + sum_real += 2 * (w_real * z_real - w_imag * z_imag); + } + + } + + { + const size_t to0 = k1 * q + q + e1 * m - 1; + VECTOR(out,ostride,to0) = sum_real; + } + } + } + } + return; +} diff --git a/gsl-2.5/fft/hc_radix2.c b/gsl-2.5/fft/hc_radix2.c new file mode 100644 index 00000000..692fb546 --- /dev/null +++ b/gsl-2.5/fft/hc_radix2.c @@ -0,0 +1,173 @@ +/* fft/hc_radix2.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +int +FUNCTION(gsl_fft_halfcomplex,radix2_backward) (BASE data[], + const size_t stride, + const size_t n) +{ + int status = FUNCTION(gsl_fft_halfcomplex,radix2_transform) (data, stride, n) ; + return status ; +} + +int +FUNCTION(gsl_fft_halfcomplex,radix2_inverse) (BASE data[], + const size_t stride, + const size_t n) +{ + int status = FUNCTION(gsl_fft_halfcomplex,radix2_transform) (data, stride, n); + + if (status) + { + return status; + } + + /* normalize inverse fft with 1/n */ + + { + const ATOMIC norm = 1.0 / n; + size_t i; + for (i = 0; i < n; i++) + { + data[stride*i] *= norm; + } + } + return status; +} + +int +FUNCTION(gsl_fft_halfcomplex,radix2_transform) (BASE data[], + const size_t stride, + const size_t n) +{ + int result ; + size_t p, p_1, q; + size_t i; + size_t logn = 0; + int status; + + if (n == 1) /* identity operation */ + { + return 0 ; + } + + /* make sure that n is a power of 2 */ + + result = fft_binary_logn(n) ; + + if (result == -1) + { + GSL_ERROR ("n is not a power of 2", GSL_EINVAL); + } + else + { + logn = result ; + } + + /* apply fft recursion */ + + p = n; q = 1 ; p_1 = n/2 ; + + for (i = 1; i <= logn; i++) + { + size_t a, b; + + /* a = 0 */ + + for (b = 0; b < q; b++) + { + const ATOMIC z0 = VECTOR(data,stride,b*p); + const ATOMIC z1 = VECTOR(data,stride,b*p + p_1); + + const ATOMIC t0_real = z0 + z1 ; + const ATOMIC t1_real = z0 - z1 ; + + VECTOR(data,stride,b*p) = t0_real; + VECTOR(data,stride,b*p + p_1) = t1_real ; + } + + /* a = 1 ... p_{i-1}/2 - 1 */ + + { + ATOMIC w_real = 1.0; + ATOMIC w_imag = 0.0; + + const ATOMIC theta = 2.0 * M_PI / p; + + const ATOMIC s = sin (theta); + const ATOMIC t = sin (theta / 2.0); + const ATOMIC s2 = 2.0 * t * t; + + for (a = 1; a < (p_1)/2; a++) + { + /* trignometric recurrence for w-> exp(i theta) w */ + + { + const ATOMIC tmp_real = w_real - s * w_imag - s2 * w_real; + const ATOMIC tmp_imag = w_imag + s * w_real - s2 * w_imag; + w_real = tmp_real; + w_imag = tmp_imag; + } + + for (b = 0; b < q; b++) + { + ATOMIC z0_real = VECTOR(data,stride,b*p + a) ; + ATOMIC z0_imag = VECTOR(data,stride,b*p + p - a) ; + ATOMIC z1_real = VECTOR(data,stride,b*p + p_1 - a) ; + ATOMIC z1_imag = -VECTOR(data,stride,b*p + p_1 + a) ; + + /* t0 = z0 + z1 */ + + ATOMIC t0_real = z0_real + z1_real; + ATOMIC t0_imag = z0_imag + z1_imag; + + /* t1 = (z0 - z1) */ + + ATOMIC t1_real = z0_real - z1_real; + ATOMIC t1_imag = z0_imag - z1_imag; + + VECTOR(data,stride,b*p + a) = t0_real ; + VECTOR(data,stride,b*p + p_1 - a) = t0_imag ; + + VECTOR(data,stride,b*p + p_1 + a) = (w_real * t1_real - w_imag * t1_imag) ; + VECTOR(data,stride,b*p + p - a) = (w_real * t1_imag + w_imag * t1_real) ; + } + } + } + + if (p_1 > 1) { + for (b = 0; b < q; b++) { + VECTOR(data,stride,b*p + p_1/2) *= 2 ; + VECTOR(data,stride,b*p + p_1 + p_1/2) *= -2 ; + } + } + + p_1 = p_1 / 2 ; + p = p / 2 ; + q = q * 2 ; + } + + /* bit reverse the ordering of output data for decimation in + frequency algorithm */ + + status = FUNCTION(fft_real,bitreverse_order)(data, stride, n, logn) ; + + return 0; + +} diff --git a/gsl-2.5/fft/hc_unpack.c b/gsl-2.5/fft/hc_unpack.c new file mode 100644 index 00000000..3f0af601 --- /dev/null +++ b/gsl-2.5/fft/hc_unpack.c @@ -0,0 +1,90 @@ +/* fft/hc_unpack.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +int +FUNCTION(gsl_fft_halfcomplex,unpack) (const BASE halfcomplex_coefficient[], + BASE complex_coefficient[], + const size_t stride, const size_t n) +{ + size_t i; + + if (n == 0) + { + GSL_ERROR ("length n must be positive integer", GSL_EDOM); + } + + REAL(complex_coefficient,stride,0) = halfcomplex_coefficient[0]; + IMAG(complex_coefficient,stride,0) = 0.0; + + for (i = 1; i < n - i; i++) + { + const ATOMIC hc_real = halfcomplex_coefficient[(2 * i - 1) * stride]; + const ATOMIC hc_imag = halfcomplex_coefficient[2 * i * stride]; + + REAL(complex_coefficient,stride,i) = hc_real; + IMAG(complex_coefficient,stride,i) = hc_imag; + REAL(complex_coefficient,stride,n - i) = hc_real; + IMAG(complex_coefficient,stride,n - i) = -hc_imag; + } + + if (i == n - i) + { + REAL(complex_coefficient,stride,i) = halfcomplex_coefficient[(n - 1) * stride]; + IMAG(complex_coefficient,stride,i) = 0.0; + } + + return 0; +} + + +int +FUNCTION(gsl_fft_halfcomplex,radix2_unpack) (const BASE halfcomplex_coefficient[], + BASE complex_coefficient[], + const size_t stride, const size_t n) +{ + size_t i; + + if (n == 0) + { + GSL_ERROR ("length n must be positive integer", GSL_EDOM); + } + + REAL(complex_coefficient,stride,0) = halfcomplex_coefficient[0]; + IMAG(complex_coefficient,stride,0) = 0.0; + + for (i = 1; i < n - i; i++) + { + const ATOMIC hc_real = halfcomplex_coefficient[i * stride]; + const ATOMIC hc_imag = halfcomplex_coefficient[(n - i) * stride]; + + REAL(complex_coefficient,stride,i) = hc_real; + IMAG(complex_coefficient,stride,i) = hc_imag; + REAL(complex_coefficient,stride,n - i) = hc_real; + IMAG(complex_coefficient,stride,n - i) = -hc_imag; + } + + if (i == n - i) + { + REAL(complex_coefficient,stride,i) = halfcomplex_coefficient[i * stride]; + IMAG(complex_coefficient,stride,i) = 0.0; + } + + return 0; +} + diff --git a/gsl-2.5/fft/libgslfft.la b/gsl-2.5/fft/libgslfft.la new file mode 100644 index 00000000..33a9d962 --- /dev/null +++ b/gsl-2.5/fft/libgslfft.la @@ -0,0 +1,41 @@ +# libgslfft.la - a libtool library file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='' + +# Names of this library. +library_names='' + +# The name of the static archive. +old_library='libgslfft.a' + +# Linker flags that can not go in dependency_libs. +inherited_linker_flags='' + +# Libraries that this one depends upon. +dependency_libs=' -lm' + +# Names of additional weak libraries provided by this library +weak_library_names='' + +# Version information for libgslfft. +current= +age= +revision= + +# Is this an already installed library? +installed=no + +# Should we warn about portability when linking against -modules? +shouldnotlink=no + +# Files to dlopen/dlpreopen +dlopen='' +dlpreopen='' + +# Directory that this library needs to be installed in: +libdir='' diff --git a/gsl-2.5/fft/real_init.c b/gsl-2.5/fft/real_init.c new file mode 100644 index 00000000..0900d653 --- /dev/null +++ b/gsl-2.5/fft/real_init.c @@ -0,0 +1,183 @@ +/* fft/real_init.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007, 2009 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +TYPE(gsl_fft_real_wavetable) * +FUNCTION(gsl_fft_real_wavetable,alloc) (size_t n) +{ + int status; + size_t i; + size_t n_factors; + size_t t, product, product_1, q; + double d_theta; + + TYPE(gsl_fft_real_wavetable) * wavetable; + + if (n == 0) + { + GSL_ERROR_VAL ("length n must be positive integer", GSL_EDOM, 0); + } + + wavetable = (TYPE(gsl_fft_real_wavetable) *) + malloc(sizeof(TYPE(gsl_fft_real_wavetable))); + + if (wavetable == NULL) + { + GSL_ERROR_VAL ("failed to allocate struct", GSL_ENOMEM, 0); + } + + if (n == 1) + { + wavetable->trig = 0; + } + else + { + wavetable->trig = (TYPE(gsl_complex) *) + malloc ((n / 2) * sizeof (TYPE(gsl_complex))); + + if (wavetable->trig == NULL) + { + /* error in constructor, prevent memory leak */ + + free(wavetable) ; + + GSL_ERROR_VAL ("failed to allocate trigonometric lookup table", + GSL_ENOMEM, 0); + } + } + + wavetable->n = n; + + status = fft_real_factorize (n, &n_factors, wavetable->factor); + + if (status) + { + /* error in constructor, prevent memory leak */ + + free(wavetable->trig); + free(wavetable) ; + + GSL_ERROR_VAL ("factorization failed", GSL_EFACTOR, 0); + } + + wavetable->nf = n_factors; + + d_theta = 2.0 * M_PI / ((double) n); + + t = 0; + product = 1; + for (i = 0; i < wavetable->nf; i++) + { + size_t j; + const size_t factor = wavetable->factor[i]; + wavetable->twiddle[i] = wavetable->trig + t; + product_1 = product; /* product_1 = p_(i-1) */ + product *= factor; + q = n / product; + + for (j = 1; j < factor; j++) + { + size_t k; + size_t m = 0; + for (k = 1; k < (product_1 + 1) / 2; k++) + { + double theta; + m = m + j * q; + m = m % n; + theta = d_theta * m; /* d_theta*j*k*q */ + GSL_REAL(wavetable->trig[t]) = cos (theta); + GSL_IMAG(wavetable->trig[t]) = sin (theta); + + t++; + } + } + } + + if (t > (n / 2)) + { + /* error in constructor, prevent memory leak */ + + free(wavetable->trig); + free(wavetable) ; + + GSL_ERROR_VAL ("overflowed trigonometric lookup table", + GSL_ESANITY, 0); + } + + return wavetable; +} + +TYPE(gsl_fft_real_workspace) * +FUNCTION(gsl_fft_real_workspace,alloc) (size_t n) +{ + TYPE(gsl_fft_real_workspace) * workspace; + + if (n == 0) + { + GSL_ERROR_VAL ("length n must be positive integer", GSL_EDOM, 0); + } + + workspace = (TYPE(gsl_fft_real_workspace) *) + malloc(sizeof(TYPE(gsl_fft_real_workspace))); + + if (workspace == NULL) + { + GSL_ERROR_VAL ("failed to allocate struct", GSL_ENOMEM, 0); + } + + workspace->n = n; + + workspace->scratch = (BASE *) malloc (n * sizeof (BASE)); + + if (workspace->scratch == NULL) + { + /* error in constructor, prevent memory leak */ + + free(workspace) ; + + GSL_ERROR_VAL ("failed to allocate scratch space", GSL_ENOMEM, 0); + } + + return workspace; +} + + + +void +FUNCTION(gsl_fft_real_wavetable,free) (TYPE(gsl_fft_real_wavetable) * wavetable) +{ + RETURN_IF_NULL (wavetable); + /* release trigonometric lookup tables */ + + free (wavetable->trig); + wavetable->trig = NULL; + + free (wavetable) ; +} + +void +FUNCTION(gsl_fft_real_workspace,free) (TYPE(gsl_fft_real_workspace) * workspace) +{ + RETURN_IF_NULL (workspace); + /* release scratch space */ + + free (workspace->scratch); + workspace->scratch = NULL; + + free (workspace) ; +} diff --git a/gsl-2.5/fft/real_main.c b/gsl-2.5/fft/real_main.c new file mode 100644 index 00000000..e2c2efc0 --- /dev/null +++ b/gsl-2.5/fft/real_main.c @@ -0,0 +1,145 @@ +/* fft/real_main.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include + +#include +#include +#include + +#include "real_pass.h" + +int +FUNCTION(gsl_fft_real,transform) (BASE data[], const size_t stride, const size_t n, + const TYPE(gsl_fft_real_wavetable) * wavetable, + TYPE(gsl_fft_real_workspace) * work) +{ + const size_t nf = wavetable->nf; + + size_t i; + + size_t q, product = 1; + size_t tskip; + size_t product_1; + + BASE *const scratch = work->scratch; + TYPE(gsl_complex) *twiddle1, *twiddle2, *twiddle3, *twiddle4; + + size_t state = 0; + BASE *in = data; + size_t istride = stride ; + BASE *out = scratch; + size_t ostride = 1 ; + + if (n == 0) + { + GSL_ERROR ("length n must be positive integer", GSL_EDOM); + } + + if (n == 1) + { /* FFT of one data point is the identity */ + return 0; + } + + if (n != wavetable->n) + { + GSL_ERROR ("wavetable does not match length of data", GSL_EINVAL); + } + + if (n != work->n) + { + GSL_ERROR ("workspace does not match length of data", GSL_EINVAL); + } + + for (i = 0; i < nf; i++) + { + const size_t factor = wavetable->factor[i]; + product_1 = product; + product *= factor; + q = n / product; + + tskip = (product_1 + 1) / 2 - 1; + + if (state == 0) + { + in = data; + istride = stride; + out = scratch; + ostride = 1; + state = 1; + } + else + { + in = scratch; + istride = 1; + out = data; + ostride = stride; + state = 0; + } + + if (factor == 2) + { + twiddle1 = wavetable->twiddle[i]; + FUNCTION(fft_real,pass_2) (in, istride, out, ostride, product, n, twiddle1); + } + else if (factor == 3) + { + twiddle1 = wavetable->twiddle[i]; + twiddle2 = twiddle1 + tskip; + FUNCTION(fft_real,pass_3) (in, istride, out, ostride, product, n, twiddle1, + twiddle2); + } + else if (factor == 4) + { + twiddle1 = wavetable->twiddle[i]; + twiddle2 = twiddle1 + tskip; + twiddle3 = twiddle2 + tskip; + FUNCTION(fft_real,pass_4) (in, istride, out, ostride, product, n, twiddle1, + twiddle2, twiddle3); + } + else if (factor == 5) + { + twiddle1 = wavetable->twiddle[i]; + twiddle2 = twiddle1 + tskip; + twiddle3 = twiddle2 + tskip; + twiddle4 = twiddle3 + tskip; + FUNCTION(fft_real,pass_5) (in, istride, out, ostride, product, n, twiddle1, + twiddle2, twiddle3, twiddle4); + } + else + { + twiddle1 = wavetable->twiddle[i]; + FUNCTION(fft_real,pass_n) (in, istride, out, ostride, factor, product, n, + twiddle1); + } + } + + if (state == 1) /* copy results back from scratch to data */ + { + for (i = 0; i < n; i++) + { + data[stride*i] = scratch[i] ; + } + } + + return 0; + +} diff --git a/gsl-2.5/fft/real_pass.h b/gsl-2.5/fft/real_pass.h new file mode 100644 index 00000000..ff791f35 --- /dev/null +++ b/gsl-2.5/fft/real_pass.h @@ -0,0 +1,65 @@ +/* fft/real_pass.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +static void FUNCTION(fft_real,pass_2) (const BASE in[], + const size_t istride, + BASE out[], + const size_t ostride, + const size_t product, + const size_t n, + const TYPE(gsl_complex) twiddle[]); + +static void FUNCTION(fft_real,pass_3) (const BASE in[], + const size_t istride, + BASE out[], + const size_t ostride, + const size_t product, + const size_t n, + const TYPE(gsl_complex) twiddle1[], + const TYPE(gsl_complex) twiddle2[]); + +static void FUNCTION(fft_real,pass_4) (const BASE in[], + const size_t istride, + BASE out[], + const size_t ostride, + const size_t product, + const size_t n, + const TYPE(gsl_complex) twiddle1[], + const TYPE(gsl_complex) twiddle2[], + const TYPE(gsl_complex) twiddle3[]); + +static void FUNCTION(fft_real,pass_5) (const BASE in[], + const size_t istride, + BASE out[], + const size_t ostride, + const size_t product, + const size_t n, + const TYPE(gsl_complex) twiddle1[], + const TYPE(gsl_complex) twiddle2[], + const TYPE(gsl_complex) twiddle3[], + const TYPE(gsl_complex) twiddle4[]); + +static void FUNCTION(fft_real,pass_n) (const BASE in[], + const size_t istride, + BASE out[], + const size_t ostride, + const size_t factor, + const size_t product, + const size_t n, + const TYPE(gsl_complex) twiddle[]); diff --git a/gsl-2.5/fft/real_pass_2.c b/gsl-2.5/fft/real_pass_2.c new file mode 100644 index 00000000..50865823 --- /dev/null +++ b/gsl-2.5/fft/real_pass_2.c @@ -0,0 +1,116 @@ +/* fft/real_pass_2.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +static void +FUNCTION(fft_real,pass_2) (const BASE in[], + const size_t istride, + BASE out[], + const size_t ostride, + const size_t product, + const size_t n, + const TYPE(gsl_complex) twiddle[]) +{ + size_t k, k1; + + const size_t factor = 2; + const size_t m = n / factor; + const size_t q = n / product; + const size_t product_1 = product / factor; + + for (k1 = 0; k1 < q; k1++) + { + const size_t from0 = k1 * product_1; + const size_t from1 = from0 + m; + + const ATOMIC r0 = VECTOR(in,istride,from0); + const ATOMIC r1 = VECTOR(in,istride,from1); + + const ATOMIC s0 = r0 + r1; + const ATOMIC s1 = r0 - r1; + + const size_t to0 = product * k1; + const size_t to1 = to0 + product - 1; + + VECTOR(out,ostride,to0) = s0; + VECTOR(out,ostride,to1) = s1; + } + + if (product_1 == 1) + return; + + for (k = 1; k < (product_1 + 1) / 2; k++) + { + + /* forward real transform: w -> conjugate(w) */ + const ATOMIC w_real = GSL_REAL(twiddle[k - 1]); + const ATOMIC w_imag = -GSL_IMAG(twiddle[k - 1]); + + for (k1 = 0; k1 < q; k1++) + { + const size_t from0 = k1 * product_1 + 2 * k - 1; + const size_t from1 = from0 + m; + + const ATOMIC f0_real = VECTOR(in,istride,from0); + const ATOMIC f0_imag = VECTOR(in,istride,from0 + 1); + + const ATOMIC f1_real = VECTOR(in,istride,from1); + const ATOMIC f1_imag = VECTOR(in,istride,from1 + 1); + + const ATOMIC z0_real = f0_real; + const ATOMIC z0_imag = f0_imag; + + const ATOMIC z1_real = w_real * f1_real - w_imag * f1_imag; + const ATOMIC z1_imag = w_real * f1_imag + w_imag * f1_real; + + /* compute x = W(2) z */ + + /* x0 = z0 + z1 */ + const ATOMIC x0_real = z0_real + z1_real; + const ATOMIC x0_imag = z0_imag + z1_imag; + + /* x1 = z0 - z1 */ + const ATOMIC x1_real = z0_real - z1_real; + const ATOMIC x1_imag = z0_imag - z1_imag; + + const size_t to0 = k1 * product + 2 * k - 1; + const size_t to1 = k1 * product + product - 2 * k - 1; + + VECTOR(out,ostride,to0) = x0_real; + VECTOR(out,ostride,to0 + 1) = x0_imag; + + /* stored in conjugate location */ + VECTOR(out,ostride,to1) = x1_real; + VECTOR(out,ostride,to1 + 1) = -x1_imag; + } + } + + if (product_1 % 2 == 1) + return; + + for (k1 = 0; k1 < q; k1++) + { + const size_t from0 = k1 * product_1 + product_1 - 1; + const size_t from1 = from0 + m; + const size_t to0 = k1 * product + product_1 - 1; + + VECTOR(out,ostride,to0) = VECTOR(in,istride,from0); + VECTOR(out,ostride,to0 + 1) = -VECTOR(in,istride,from1); + } + return; +} diff --git a/gsl-2.5/fft/real_pass_3.c b/gsl-2.5/fft/real_pass_3.c new file mode 100644 index 00000000..68e7d92b --- /dev/null +++ b/gsl-2.5/fft/real_pass_3.c @@ -0,0 +1,166 @@ +/* fft/real_pass_3.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +static void +FUNCTION(fft_real,pass_3) (const BASE in[], + const size_t istride, + BASE out[], + const size_t ostride, + const size_t product, + const size_t n, + const TYPE(gsl_complex) twiddle1[], + const TYPE(gsl_complex) twiddle2[]) +{ + size_t k, k1; + + const size_t factor = 3; + const size_t m = n / factor; + const size_t q = n / product; + const size_t product_1 = product / factor; + + const ATOMIC tau = sqrt (3.0) / 2.0; + + for (k1 = 0; k1 < q; k1++) + { + const size_t from0 = k1 * product_1; + const size_t from1 = from0 + m; + const size_t from2 = from1 + m; + + const ATOMIC z0_real = VECTOR(in,istride,from0); + const ATOMIC z1_real = VECTOR(in,istride,from1); + const ATOMIC z2_real = VECTOR(in,istride,from2); + + const ATOMIC t1 = z1_real + z2_real; + + const ATOMIC x0_real = z0_real + t1; + const ATOMIC x1_real = z0_real - t1 / 2.0; + const ATOMIC x1_imag = -tau * (z1_real - z2_real); + + const size_t to0 = product * k1; + const size_t to1 = to0 + 2 * product_1 - 1; + + VECTOR(out,ostride,to0) = x0_real; + VECTOR(out,ostride,to1) = x1_real; + VECTOR(out,ostride,to1 + 1) = x1_imag; + } + + if (product_1 == 1) + return; + + for (k = 1; k < (product_1 + 1) / 2; k++) + { + const ATOMIC w1_real = GSL_REAL(twiddle1[k - 1]); + const ATOMIC w1_imag = -GSL_IMAG(twiddle1[k - 1]); + const ATOMIC w2_real = GSL_REAL(twiddle2[k - 1]); + const ATOMIC w2_imag = -GSL_IMAG(twiddle2[k - 1]); + + for (k1 = 0; k1 < q; k1++) + { + const size_t from0 = k1 * product_1 + 2 * k - 1; + const size_t from1 = from0 + m; + const size_t from2 = from1 + m; + + const ATOMIC f0_real = VECTOR(in,istride,from0); + const ATOMIC f0_imag = VECTOR(in,istride,from0 + 1); + const ATOMIC f1_real = VECTOR(in,istride,from1); + const ATOMIC f1_imag = VECTOR(in,istride,from1 + 1); + const ATOMIC f2_real = VECTOR(in,istride,from2); + const ATOMIC f2_imag = VECTOR(in,istride,from2 + 1); + + const ATOMIC z0_real = f0_real; + const ATOMIC z0_imag = f0_imag; + const ATOMIC z1_real = w1_real * f1_real - w1_imag * f1_imag; + const ATOMIC z1_imag = w1_real * f1_imag + w1_imag * f1_real; + const ATOMIC z2_real = w2_real * f2_real - w2_imag * f2_imag; + const ATOMIC z2_imag = w2_real * f2_imag + w2_imag * f2_real; + + /* compute x = W(3) z */ + + /* t1 = z1 + z2 */ + const ATOMIC t1_real = z1_real + z2_real; + const ATOMIC t1_imag = z1_imag + z2_imag; + + /* t2 = z0 - t1/2 */ + const ATOMIC t2_real = z0_real - t1_real / 2; + const ATOMIC t2_imag = z0_imag - t1_imag / 2; + + /* t3 = (+/-) sin(pi/3)*(z1 - z2) */ + const ATOMIC t3_real = -tau * (z1_real - z2_real); + const ATOMIC t3_imag = -tau * (z1_imag - z2_imag); + + /* x0 = z0 + t1 */ + const ATOMIC x0_real = z0_real + t1_real; + const ATOMIC x0_imag = z0_imag + t1_imag; + + /* x1 = t2 + i t3 */ + const ATOMIC x1_real = t2_real - t3_imag; + const ATOMIC x1_imag = t2_imag + t3_real; + + /* x2 = t2 - i t3 */ + const ATOMIC x2_real = t2_real + t3_imag; + const ATOMIC x2_imag = t2_imag - t3_real; + + /* apply twiddle factors */ + + const size_t to0 = k1 * product + 2 * k - 1; + const size_t to1 = to0 + 2 * product_1; + const size_t to2 = 2 * product_1 - 2 * k + k1 * product - 1; + + /* to0 = 1 * x0 */ + VECTOR(out,ostride,to0) = x0_real; + VECTOR(out,ostride,to0 + 1) = x0_imag; + + /* to1 = 1 * x1 */ + VECTOR(out,ostride,to1) = x1_real; + VECTOR(out,ostride,to1 + 1) = x1_imag; + + /* to2 = 1 * x2 */ + VECTOR(out,ostride,to2) = x2_real; + VECTOR(out,ostride,to2 + 1) = -x2_imag; + } + } + + if (product_1 % 2 == 1) + return; + + for (k1 = 0; k1 < q; k1++) + { + const size_t from0 = k1 * product_1 + product_1 - 1; + const size_t from1 = from0 + m; + const size_t from2 = from1 + m; + + const ATOMIC z0_real = VECTOR(in,istride,from0); + const ATOMIC z1_real = VECTOR(in,istride,from1); + const ATOMIC z2_real = VECTOR(in,istride,from2); + + const ATOMIC t1 = z1_real - z2_real; + const ATOMIC x0_real = z0_real + t1 / 2.0; + const ATOMIC x0_imag = -tau * (z1_real + z2_real); + const ATOMIC x1_real = z0_real - t1; + + const size_t to0 = k1 * product + product_1 - 1; + const size_t to1 = to0 + 2 * product_1; + + VECTOR(out,ostride,to0) = x0_real; + VECTOR(out,ostride,to0 + 1) = x0_imag; + VECTOR(out,ostride,to1) = x1_real; + } + + return; +} diff --git a/gsl-2.5/fft/real_pass_4.c b/gsl-2.5/fft/real_pass_4.c new file mode 100644 index 00000000..7821f50b --- /dev/null +++ b/gsl-2.5/fft/real_pass_4.c @@ -0,0 +1,203 @@ +/* fft/real_pass_4.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +static void +FUNCTION(fft_real,pass_4) (const BASE in[], + const size_t istride, + BASE out[], + const size_t ostride, + const size_t product, + const size_t n, + const TYPE(gsl_complex) twiddle1[], + const TYPE(gsl_complex) twiddle2[], + const TYPE(gsl_complex) twiddle3[]) +{ + size_t k, k1; + + const size_t factor = 4; + const size_t m = n / factor; + const size_t q = n / product; + const size_t product_1 = product / factor; + + for (k1 = 0; k1 < q; k1++) + { + const size_t from0 = k1 * product_1; + const size_t from1 = from0 + m; + const size_t from2 = from1 + m; + const size_t from3 = from2 + m; + + const ATOMIC z0_real = VECTOR(in,istride,from0); + const ATOMIC z1_real = VECTOR(in,istride,from1); + const ATOMIC z2_real = VECTOR(in,istride,from2); + const ATOMIC z3_real = VECTOR(in,istride,from3); + + /* compute x = W(4) z */ + + /* t1 = z0 + z2 */ + const ATOMIC t1_real = z0_real + z2_real; + + /* t2 = z1 + z3 */ + const ATOMIC t2_real = z1_real + z3_real; + + /* t3 = z0 - z2 */ + const ATOMIC t3_real = z0_real - z2_real; + + /* t4 = - (z1 - z3) */ + const ATOMIC t4_real = -(z1_real - z3_real); + + /* x0 = t1 + t2 */ + const ATOMIC x0_real = t1_real + t2_real; + + /* x1 = t3 + i t4 */ + const ATOMIC x1_real = t3_real; + const ATOMIC x1_imag = t4_real; + + /* x2 = t1 - t2 */ + const ATOMIC x2_real = t1_real - t2_real; + + const size_t to0 = product * k1; + const size_t to1 = to0 + 2 * product_1 - 1; + const size_t to2 = to1 + 2 * product_1; + + VECTOR(out,ostride,to0) = x0_real; + VECTOR(out,ostride,to1) = x1_real; + VECTOR(out,ostride,to1 + 1) = x1_imag; + VECTOR(out,ostride,to2) = x2_real; + } + + if (product_1 == 1) + return; + + for (k = 1; k < (product_1 + 1) / 2; k++) + { + ATOMIC w1_real, w1_imag, w2_real, w2_imag, w3_real, w3_imag; + w1_real = GSL_REAL(twiddle1[k - 1]); + w1_imag = -GSL_IMAG(twiddle1[k - 1]); + w2_real = GSL_REAL(twiddle2[k - 1]); + w2_imag = -GSL_IMAG(twiddle2[k - 1]); + w3_real = GSL_REAL(twiddle3[k - 1]); + w3_imag = -GSL_IMAG(twiddle3[k - 1]); + + for (k1 = 0; k1 < q; k1++) + { + const size_t from0 = k1 * product_1 + 2 * k - 1; + const size_t from1 = from0 + m; + const size_t from2 = from1 + m; + const size_t from3 = from2 + m; + + const ATOMIC f0_real = VECTOR(in,istride,from0); + const ATOMIC f0_imag = VECTOR(in,istride,from0 + 1); + const ATOMIC f1_real = VECTOR(in,istride,from1); + const ATOMIC f1_imag = VECTOR(in,istride,from1 + 1); + const ATOMIC f2_real = VECTOR(in,istride,from2); + const ATOMIC f2_imag = VECTOR(in,istride,from2 + 1); + const ATOMIC f3_real = VECTOR(in,istride,from3); + const ATOMIC f3_imag = VECTOR(in,istride,from3 + 1); + + const ATOMIC z0_real = f0_real; + const ATOMIC z0_imag = f0_imag; + const ATOMIC z1_real = w1_real * f1_real - w1_imag * f1_imag; + const ATOMIC z1_imag = w1_real * f1_imag + w1_imag * f1_real; + const ATOMIC z2_real = w2_real * f2_real - w2_imag * f2_imag; + const ATOMIC z2_imag = w2_real * f2_imag + w2_imag * f2_real; + const ATOMIC z3_real = w3_real * f3_real - w3_imag * f3_imag; + const ATOMIC z3_imag = w3_real * f3_imag + w3_imag * f3_real; + + /* compute x = W(4) z */ + + /* t1 = z0 + z2 */ + const ATOMIC t1_real = z0_real + z2_real; + const ATOMIC t1_imag = z0_imag + z2_imag; + + /* t2 = z1 + z3 */ + const ATOMIC t2_real = z1_real + z3_real; + const ATOMIC t2_imag = z1_imag + z3_imag; + + /* t3 = z0 - z2 */ + const ATOMIC t3_real = z0_real - z2_real; + const ATOMIC t3_imag = z0_imag - z2_imag; + + /* t4 = - (z1 - z3) */ + const ATOMIC t4_real = -(z1_real - z3_real); + const ATOMIC t4_imag = -(z1_imag - z3_imag); + + /* x0 = t1 + t2 */ + const ATOMIC x0_real = t1_real + t2_real; + const ATOMIC x0_imag = t1_imag + t2_imag; + + /* x1 = t3 + i t4 */ + const ATOMIC x1_real = t3_real - t4_imag; + const ATOMIC x1_imag = t3_imag + t4_real; + + /* x2 = t1 - t2 */ + const ATOMIC x2_real = t1_real - t2_real; + const ATOMIC x2_imag = t1_imag - t2_imag; + + /* x3 = t3 - i t4 */ + const ATOMIC x3_real = t3_real + t4_imag; + const ATOMIC x3_imag = t3_imag - t4_real; + + const size_t to0 = k1 * product + 2 * k - 1; + const size_t to1 = to0 + 2 * product_1; + const size_t to2 = 2 * product_1 - 2 * k + k1 * product - 1; + const size_t to3 = to2 + 2 * product_1; + + VECTOR(out,ostride,to0) = x0_real; + VECTOR(out,ostride,to0 + 1) = x0_imag; + + VECTOR(out,ostride,to1) = x1_real; + VECTOR(out,ostride,to1 + 1) = x1_imag; + + VECTOR(out,ostride,to3) = x2_real; + VECTOR(out,ostride,to3 + 1) = -x2_imag; + + VECTOR(out,ostride,to2) = x3_real; + VECTOR(out,ostride,to2 + 1) = -x3_imag; + } + } + + if (product_1 % 2 == 1) + return; + + for (k1 = 0; k1 < q; k1++) + { + const size_t from0 = k1 * product_1 + product_1 - 1; + const size_t from1 = from0 + m; + const size_t from2 = from1 + m; + const size_t from3 = from2 + m; + + const ATOMIC x0 = VECTOR(in,istride,from0); + const ATOMIC x1 = VECTOR(in,istride,from1); + const ATOMIC x2 = VECTOR(in,istride,from2); + const ATOMIC x3 = VECTOR(in,istride,from3); + + const ATOMIC t1 = (1.0 / sqrt (2.0)) * (x1 - x3); + const ATOMIC t2 = (1.0 / sqrt (2.0)) * (x1 + x3); + + const size_t to0 = k1 * product + 2 * k - 1; + const size_t to1 = to0 + 2 * product_1; + + VECTOR(out,ostride,to0) = x0 + t1; + VECTOR(out,ostride,to0 + 1) = -x2 - t2; + + VECTOR(out,ostride,to1) = x0 - t1; + VECTOR(out,ostride,to1 + 1) = x2 - t2; + } + return; +} diff --git a/gsl-2.5/fft/real_pass_5.c b/gsl-2.5/fft/real_pass_5.c new file mode 100644 index 00000000..66a7b8ec --- /dev/null +++ b/gsl-2.5/fft/real_pass_5.c @@ -0,0 +1,283 @@ +/* fft/real_pass_5.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +static void +FUNCTION(fft_real,pass_5) (const BASE in[], + const size_t istride, + BASE out[], + const size_t ostride, + const size_t product, + const size_t n, + const TYPE(gsl_complex) twiddle1[], + const TYPE(gsl_complex) twiddle2[], + const TYPE(gsl_complex) twiddle3[], + const TYPE(gsl_complex) twiddle4[]) +{ + size_t k, k1; + + const size_t factor = 5; + const size_t m = n / factor; + const size_t q = n / product; + const size_t product_1 = product / factor; + + const ATOMIC sina = sin (2.0 * M_PI / 5.0); + const ATOMIC sinb = sin (2.0 * M_PI / 10.0); + + for (k1 = 0; k1 < q; k1++) + { + const size_t from0 = k1 * product_1; + const size_t from1 = from0 + m; + const size_t from2 = from1 + m; + const size_t from3 = from2 + m; + const size_t from4 = from3 + m; + + const ATOMIC z0_real = VECTOR(in,istride,from0); + const ATOMIC z1_real = VECTOR(in,istride,from1); + const ATOMIC z2_real = VECTOR(in,istride,from2); + const ATOMIC z3_real = VECTOR(in,istride,from3); + const ATOMIC z4_real = VECTOR(in,istride,from4); + + /* t1 = z1 + z4 */ + const ATOMIC t1_real = z1_real + z4_real; + + /* t2 = z2 + z3 */ + const ATOMIC t2_real = z2_real + z3_real; + + /* t3 = z1 - z4 */ + const ATOMIC t3_real = z1_real - z4_real; + + /* t4 = z2 - z3 */ + const ATOMIC t4_real = z2_real - z3_real; + + /* t5 = t1 + t2 */ + const ATOMIC t5_real = t1_real + t2_real; + + /* t6 = (sqrt(5)/4)(t1 - t2) */ + const ATOMIC t6_real = (sqrt (5.0) / 4.0) * (t1_real - t2_real); + + /* t7 = z0 - ((t5)/4) */ + const ATOMIC t7_real = z0_real - t5_real / 4.0; + + /* t8 = t7 + t6 */ + const ATOMIC t8_real = t7_real + t6_real; + + /* t9 = t7 - t6 */ + const ATOMIC t9_real = t7_real - t6_real; + + /* t10 = -(sin(2 pi/5) t3 + sin(2 pi/10) t4 ) */ + const ATOMIC t10_real = -sina * t3_real - sinb * t4_real; + + /* t11 = -(sin(2 pi/10) t3 - sin(2 pi/5) t4) */ + const ATOMIC t11_real = -sinb * t3_real + sina * t4_real; + + /* x0 = z0 + t5 */ + const ATOMIC x0_real = z0_real + t5_real; + + /* x1 = t8 + i t10 */ + const ATOMIC x1_real = t8_real; + const ATOMIC x1_imag = t10_real; + + /* x2 = t9 + i t11 */ + const ATOMIC x2_real = t9_real; + const ATOMIC x2_imag = t11_real; + + const size_t to0 = product * k1; + const size_t to1 = to0 + 2 * product_1 - 1; + const size_t to2 = to1 + 2 * product_1; + + VECTOR(out,ostride,to0) = x0_real; + VECTOR(out,ostride,to1) = x1_real; + VECTOR(out,ostride,to1 + 1) = x1_imag; + VECTOR(out,ostride,to2) = x2_real; + VECTOR(out,ostride,to2 + 1) = x2_imag; + } + + if (product_1 == 1) + return; + + for (k = 1; k < (product_1 + 1) / 2; k++) + { + const ATOMIC w1_real = GSL_REAL(twiddle1[k - 1]); + const ATOMIC w1_imag = -GSL_IMAG(twiddle1[k - 1]); + const ATOMIC w2_real = GSL_REAL(twiddle2[k - 1]); + const ATOMIC w2_imag = -GSL_IMAG(twiddle2[k - 1]); + const ATOMIC w3_real = GSL_REAL(twiddle3[k - 1]); + const ATOMIC w3_imag = -GSL_IMAG(twiddle3[k - 1]); + const ATOMIC w4_real = GSL_REAL(twiddle4[k - 1]); + const ATOMIC w4_imag = -GSL_IMAG(twiddle4[k - 1]); + + for (k1 = 0; k1 < q; k1++) + { + const size_t from0 = k1 * product_1 + 2 * k - 1; + const size_t from1 = from0 + m; + const size_t from2 = from1 + m; + const size_t from3 = from2 + m; + const size_t from4 = from3 + m; + + const ATOMIC f0_real = VECTOR(in,istride,from0); + const ATOMIC f0_imag = VECTOR(in,istride,from0 + 1); + const ATOMIC f1_real = VECTOR(in,istride,from1); + const ATOMIC f1_imag = VECTOR(in,istride,from1 + 1); + const ATOMIC f2_real = VECTOR(in,istride,from2); + const ATOMIC f2_imag = VECTOR(in,istride,from2 + 1); + const ATOMIC f3_real = VECTOR(in,istride,from3); + const ATOMIC f3_imag = VECTOR(in,istride,from3 + 1); + const ATOMIC f4_real = VECTOR(in,istride,from4); + const ATOMIC f4_imag = VECTOR(in,istride,from4 + 1); + + const ATOMIC z0_real = f0_real; + const ATOMIC z0_imag = f0_imag; + const ATOMIC z1_real = w1_real * f1_real - w1_imag * f1_imag; + const ATOMIC z1_imag = w1_real * f1_imag + w1_imag * f1_real; + const ATOMIC z2_real = w2_real * f2_real - w2_imag * f2_imag; + const ATOMIC z2_imag = w2_real * f2_imag + w2_imag * f2_real; + const ATOMIC z3_real = w3_real * f3_real - w3_imag * f3_imag; + const ATOMIC z3_imag = w3_real * f3_imag + w3_imag * f3_real; + const ATOMIC z4_real = w4_real * f4_real - w4_imag * f4_imag; + const ATOMIC z4_imag = w4_real * f4_imag + w4_imag * f4_real; + + /* compute x = W(5) z */ + + /* t1 = z1 + z4 */ + const ATOMIC t1_real = z1_real + z4_real; + const ATOMIC t1_imag = z1_imag + z4_imag; + + /* t2 = z2 + z3 */ + const ATOMIC t2_real = z2_real + z3_real; + const ATOMIC t2_imag = z2_imag + z3_imag; + + /* t3 = z1 - z4 */ + const ATOMIC t3_real = z1_real - z4_real; + const ATOMIC t3_imag = z1_imag - z4_imag; + + /* t4 = z2 - z3 */ + const ATOMIC t4_real = z2_real - z3_real; + const ATOMIC t4_imag = z2_imag - z3_imag; + + /* t5 = t1 + t2 */ + const ATOMIC t5_real = t1_real + t2_real; + const ATOMIC t5_imag = t1_imag + t2_imag; + + /* t6 = (sqrt(5)/4)(t1 - t2) */ + const ATOMIC t6_real = (sqrt (5.0) / 4.0) * (t1_real - t2_real); + const ATOMIC t6_imag = (sqrt (5.0) / 4.0) * (t1_imag - t2_imag); + + /* t7 = z0 - ((t5)/4) */ + const ATOMIC t7_real = z0_real - t5_real / 4.0; + const ATOMIC t7_imag = z0_imag - t5_imag / 4.0; + + /* t8 = t7 + t6 */ + const ATOMIC t8_real = t7_real + t6_real; + const ATOMIC t8_imag = t7_imag + t6_imag; + + /* t9 = t7 - t6 */ + const ATOMIC t9_real = t7_real - t6_real; + const ATOMIC t9_imag = t7_imag - t6_imag; + + /* t10 = - (sin(2 pi/5) t3 + sin(2 pi/10) t4) */ + const ATOMIC t10_real = -sina * t3_real - sinb * t4_real; + const ATOMIC t10_imag = -sina * t3_imag - sinb * t4_imag; + + /* t11 = -(sin(2 pi/10) t3 - sin(2 pi/5) t4) */ + const ATOMIC t11_real = -sinb * t3_real + sina * t4_real; + const ATOMIC t11_imag = -sinb * t3_imag + sina * t4_imag; + + /* x0 = z0 + t5 */ + const ATOMIC x0_real = z0_real + t5_real; + const ATOMIC x0_imag = z0_imag + t5_imag; + + /* x1 = t8 + i t10 */ + const ATOMIC x1_real = t8_real - t10_imag; + const ATOMIC x1_imag = t8_imag + t10_real; + + /* x2 = t9 + i t11 */ + const ATOMIC x2_real = t9_real - t11_imag; + const ATOMIC x2_imag = t9_imag + t11_real; + + /* x3 = t9 - i t11 */ + const ATOMIC x3_real = t9_real + t11_imag; + const ATOMIC x3_imag = t9_imag - t11_real; + + /* x4 = t8 - i t10 */ + const ATOMIC x4_real = t8_real + t10_imag; + const ATOMIC x4_imag = t8_imag - t10_real; + + const size_t to0 = k1 * product + 2 * k - 1; + const size_t to1 = to0 + 2 * product_1; + const size_t to2 = to1 + 2 * product_1; + const size_t to3 = 2 * product_1 - 2 * k + k1 * product - 1; + const size_t to4 = to3 + 2 * product_1; + + VECTOR(out,ostride,to0) = x0_real; + VECTOR(out,ostride,to0 + 1) = x0_imag; + + VECTOR(out,ostride,to1) = x1_real; + VECTOR(out,ostride,to1 + 1) = x1_imag; + + VECTOR(out,ostride,to2) = x2_real; + VECTOR(out,ostride,to2 + 1) = x2_imag; + + VECTOR(out,ostride,to3) = x4_real; + VECTOR(out,ostride,to3 + 1) = -x4_imag; + + VECTOR(out,ostride,to4) = x3_real; + VECTOR(out,ostride,to4 + 1) = -x3_imag; + } + } + + if (product_1 % 2 == 1) + return; + + for (k1 = 0; k1 < q; k1++) + { + const size_t from0 = k1 * product_1 + product_1 - 1; + const size_t from1 = from0 + m; + const size_t from2 = from1 + m; + const size_t from3 = from2 + m; + const size_t from4 = from3 + m; + + const ATOMIC z0_real = VECTOR(in,istride,from0); + const ATOMIC z1_real = VECTOR(in,istride,from1); + const ATOMIC z2_real = VECTOR(in,istride,from2); + const ATOMIC z3_real = VECTOR(in,istride,from3); + const ATOMIC z4_real = VECTOR(in,istride,from4); + + const ATOMIC t1 = z1_real - z4_real; + const ATOMIC t2 = z1_real + z4_real; + const ATOMIC t3 = z2_real - z3_real; + const ATOMIC t4 = z2_real + z3_real; + const ATOMIC t5 = t1 - t3; + const ATOMIC t6 = z0_real + t5 / 4.0; + const ATOMIC t7 = (sqrt (5.0) / 4.0) * (t1 + t3); + + const size_t to0 = k1 * product + product_1 - 1; + const size_t to1 = to0 + 2 * product_1; + const size_t to2 = to1 + 2 * product_1; + + VECTOR(out,ostride,to0) = t6 + t7; + VECTOR(out,ostride,to0 + 1) = -sinb * t2 - sina * t4; + + VECTOR(out,ostride,to1) = t6 - t7; + VECTOR(out,ostride,to1 + 1) = -sina * t2 + sinb * t4; + + VECTOR(out,ostride,to2) = z0_real - t5; + } + + return; +} diff --git a/gsl-2.5/fft/real_pass_n.c b/gsl-2.5/fft/real_pass_n.c new file mode 100644 index 00000000..2576b00e --- /dev/null +++ b/gsl-2.5/fft/real_pass_n.c @@ -0,0 +1,264 @@ +/* fft/real_pass_n.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +static void +FUNCTION(fft_real,pass_n) (const BASE in[], + const size_t istride, + BASE out[], + const size_t ostride, + const size_t factor, + const size_t product, + const size_t n, + const TYPE(gsl_complex) twiddle[]) +{ + size_t k, k1; + + const size_t m = n / factor; + const size_t q = n / product; + const size_t product_1 = product / factor; + + size_t e1, e2; + + const double d_theta = 2.0 * M_PI / ((double) factor); + const ATOMIC cos_d_theta = cos (d_theta); + const ATOMIC sin_d_theta = sin (d_theta); + + for (k1 = 0; k1 < q; k1++) + { + /* compute x = W(factor) z, for z real */ + + ATOMIC dw_real = 1.0, dw_imag = 0.0; + + for (e1 = 0; e1 <= factor - e1; e1++) + { + ATOMIC sum_real = 0.0; + ATOMIC sum_imag = 0.0; + + ATOMIC w_real = 1.0, w_imag = 0.0; + + if (e1 > 0) + { + ATOMIC tmp_real = dw_real * cos_d_theta + dw_imag * sin_d_theta; + ATOMIC tmp_imag = -dw_real * sin_d_theta + dw_imag * cos_d_theta; + dw_real = tmp_real; + dw_imag = tmp_imag; + } + + for (e2 = 0; e2 < factor; e2++) + { + ATOMIC z_real = VECTOR(in,istride,k1 * product_1 + e2 * m); + + if (e2 > 0) + { + ATOMIC tmp_real = dw_real * w_real - dw_imag * w_imag; + ATOMIC tmp_imag = dw_real * w_imag + dw_imag * w_real; + w_real = tmp_real; + w_imag = tmp_imag; + } + + sum_real += w_real * z_real; + sum_imag += w_imag * z_real; + + } + if (e1 == 0) + { + const size_t to0 = product * k1; + VECTOR(out,ostride,to0) = sum_real; + } + else if (e1 < factor - e1) + { + const size_t to0 = k1 * product + 2 * e1 * product_1 - 1; + VECTOR(out,ostride,to0) = sum_real; + VECTOR(out,ostride,to0 + 1) = sum_imag; + } + else if (e1 == factor - e1) + { + const size_t to0 = k1 * product + 2 * e1 * product_1 - 1; + VECTOR(out,ostride,to0) = sum_real; + } + + } + } + + if (product_1 == 1) + return; + + for (k = 1; k < (product_1 + 1) / 2; k++) + { + for (k1 = 0; k1 < q; k1++) + { + + ATOMIC dw_real = 1.0, dw_imag = 0.0; + + for (e1 = 0; e1 < factor; e1++) + { + ATOMIC sum_real = 0.0, sum_imag = 0.0; + + ATOMIC w_real = 1.0, w_imag = 0.0; + + if (e1 > 0) + { + const ATOMIC tmp_real = dw_real * cos_d_theta + dw_imag * sin_d_theta; + const ATOMIC tmp_imag = -dw_real * sin_d_theta + dw_imag * cos_d_theta; + dw_real = tmp_real; + dw_imag = tmp_imag; + } + + for (e2 = 0; e2 < factor; e2++) + { + + int tskip = (product_1 + 1) / 2 - 1; + const size_t from0 = k1 * product_1 + 2 * k + e2 * m - 1; + ATOMIC tw_real, tw_imag; + ATOMIC z_real, z_imag; + + if (e2 == 0) + { + tw_real = 1.0; + tw_imag = 0.0; + } + else + { + const size_t t_index = (k - 1) + (e2 - 1) * tskip; + tw_real = GSL_REAL(twiddle[t_index]); + tw_imag = -GSL_IMAG(twiddle[t_index]); + } + + { + const ATOMIC f0_real = VECTOR(in,istride,from0); + const ATOMIC f0_imag = VECTOR(in,istride,from0 + 1); + + z_real = tw_real * f0_real - tw_imag * f0_imag; + z_imag = tw_real * f0_imag + tw_imag * f0_real; + } + + if (e2 > 0) + { + const ATOMIC tmp_real = dw_real * w_real - dw_imag * w_imag; + const ATOMIC tmp_imag = dw_real * w_imag + dw_imag * w_real; + w_real = tmp_real; + w_imag = tmp_imag; + } + + sum_real += w_real * z_real - w_imag * z_imag; + sum_imag += w_real * z_imag + w_imag * z_real; + } + + if (e1 < factor - e1) + { + const size_t to0 = k1 * product - 1 + 2 * e1 * product_1 + 2 * k; + VECTOR(out,ostride,to0) = sum_real; + VECTOR(out,ostride,to0 + 1) = sum_imag; + } + else + { + const size_t to0 = k1 * product - 1 + 2 * (factor - e1) * product_1 - 2 * k; + VECTOR(out,ostride,to0) = sum_real; + VECTOR(out,ostride,to0 + 1) = -sum_imag; + } + + } + } + } + + + if (product_1 % 2 == 1) + return; + + { + double tw_arg = M_PI / ((double) factor); + ATOMIC cos_tw_arg = cos (tw_arg); + ATOMIC sin_tw_arg = -sin (tw_arg); + + for (k1 = 0; k1 < q; k1++) + { + ATOMIC dw_real = 1.0, dw_imag = 0.0; + + for (e1 = 0; e1 < factor; e1++) + { + ATOMIC z_real, z_imag; + + ATOMIC sum_real = 0.0; + ATOMIC sum_imag = 0.0; + + ATOMIC w_real = 1.0, w_imag = 0.0; + ATOMIC tw_real = 1.0, tw_imag = 0.0; + + if (e1 > 0) + { + ATOMIC t_real = dw_real * cos_d_theta + dw_imag * sin_d_theta; + ATOMIC t_imag = -dw_real * sin_d_theta + dw_imag * cos_d_theta; + dw_real = t_real; + dw_imag = t_imag; + } + + for (e2 = 0; e2 < factor; e2++) + { + + if (e2 > 0) + { + ATOMIC tmp_real = tw_real * cos_tw_arg - tw_imag * sin_tw_arg; + ATOMIC tmp_imag = tw_real * sin_tw_arg + tw_imag * cos_tw_arg; + tw_real = tmp_real; + tw_imag = tmp_imag; + } + + if (e2 > 0) + { + ATOMIC tmp_real = dw_real * w_real - dw_imag * w_imag; + ATOMIC tmp_imag = dw_real * w_imag + dw_imag * w_real; + w_real = tmp_real; + w_imag = tmp_imag; + } + + + { + const size_t from0 = k1 * product_1 + 2 * k + e2 * m - 1; + const ATOMIC f0_real = VECTOR(in,istride,from0); + z_real = tw_real * f0_real; + z_imag = tw_imag * f0_real; + } + + sum_real += w_real * z_real - w_imag * z_imag; + sum_imag += w_real * z_imag + w_imag * z_real; + } + + if (e1 + 1 < factor - e1) + { + const size_t to0 = k1 * product - 1 + 2 * e1 * product_1 + 2 * k; + VECTOR(out,ostride,to0) = sum_real; + VECTOR(out,ostride,to0 + 1) = sum_imag; + } + else if (e1 + 1 == factor - e1) + { + const size_t to0 = k1 * product - 1 + 2 * e1 * product_1 + 2 * k; + VECTOR(out,ostride,to0) = sum_real; + } + else + { + const size_t to0 = k1 * product - 1 + 2 * (factor - e1) * product_1 - 2 * k; + VECTOR(out,ostride,to0) = sum_real; + VECTOR(out,ostride,to0 + 1) = -sum_imag; + } + + } + } + } + return; +} diff --git a/gsl-2.5/fft/real_radix2.c b/gsl-2.5/fft/real_radix2.c new file mode 100644 index 00000000..f03fc833 --- /dev/null +++ b/gsl-2.5/fft/real_radix2.c @@ -0,0 +1,134 @@ +/* fft/real_radix2.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +int +FUNCTION(gsl_fft_real,radix2_transform) (BASE data[], const size_t stride, const size_t n) +{ + int result ; + size_t p, p_1, q; + size_t i; + size_t logn = 0; + int status; + + if (n == 1) /* identity operation */ + { + return 0 ; + } + + /* make sure that n is a power of 2 */ + + result = fft_binary_logn(n) ; + + if (result == -1) + { + GSL_ERROR ("n is not a power of 2", GSL_EINVAL); + } + else + { + logn = result ; + } + + /* bit reverse the ordering of input data for decimation in time algorithm */ + + status = FUNCTION(fft_real,bitreverse_order)(data, stride, n, logn) ; + + /* apply fft recursion */ + + p = 1; q = n ; + + for (i = 1; i <= logn; i++) + { + size_t a, b; + + p_1 = p ; + p = 2 * p ; + q = q / 2 ; + + /* a = 0 */ + + for (b = 0; b < q; b++) + { + ATOMIC t0_real = VECTOR(data,stride,b*p) + VECTOR(data,stride,b*p + p_1) ; + ATOMIC t1_real = VECTOR(data,stride,b*p) - VECTOR(data,stride,b*p + p_1) ; + + VECTOR(data,stride,b*p) = t0_real ; + VECTOR(data,stride,b*p + p_1) = t1_real ; + } + + /* a = 1 ... p_{i-1}/2 - 1 */ + + { + ATOMIC w_real = 1.0; + ATOMIC w_imag = 0.0; + + const double theta = - 2.0 * M_PI / p; + + const ATOMIC s = sin (theta); + const ATOMIC t = sin (theta / 2.0); + const ATOMIC s2 = 2.0 * t * t; + + for (a = 1; a < (p_1)/2; a++) + { + /* trignometric recurrence for w-> exp(i theta) w */ + + { + const ATOMIC tmp_real = w_real - s * w_imag - s2 * w_real; + const ATOMIC tmp_imag = w_imag + s * w_real - s2 * w_imag; + w_real = tmp_real; + w_imag = tmp_imag; + } + + for (b = 0; b < q; b++) + { + ATOMIC z0_real = VECTOR(data,stride,b*p + a) ; + ATOMIC z0_imag = VECTOR(data,stride,b*p + p_1 - a) ; + ATOMIC z1_real = VECTOR(data,stride,b*p + p_1 + a) ; + ATOMIC z1_imag = VECTOR(data,stride,b*p + p - a) ; + + /* t0 = z0 + w * z1 */ + + ATOMIC t0_real = z0_real + w_real * z1_real - w_imag * z1_imag; + ATOMIC t0_imag = z0_imag + w_real * z1_imag + w_imag * z1_real; + + /* t1 = z0 - w * z1 */ + + ATOMIC t1_real = z0_real - w_real * z1_real + w_imag * z1_imag; + ATOMIC t1_imag = z0_imag - w_real * z1_imag - w_imag * z1_real; + + VECTOR(data,stride,b*p + a) = t0_real ; + VECTOR(data,stride,b*p + p - a) = t0_imag ; + + VECTOR(data,stride,b*p + p_1 - a) = t1_real ; + VECTOR(data,stride,b*p + p_1 + a) = -t1_imag ; + } + } + } + + if (p_1 > 1) + { + for (b = 0; b < q; b++) + { + /* a = p_{i-1}/2 */ + + VECTOR(data,stride,b*p + p - p_1/2) *= -1 ; + } + } + } + return 0; +} diff --git a/gsl-2.5/fft/real_unpack.c b/gsl-2.5/fft/real_unpack.c new file mode 100644 index 00000000..87c0252c --- /dev/null +++ b/gsl-2.5/fft/real_unpack.c @@ -0,0 +1,42 @@ +/* fft/real_unpack.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include "complex_internal.h" + +int +FUNCTION(gsl_fft_real,unpack) (const BASE real_coefficient[], + BASE complex_coefficient[], + const size_t stride, const size_t n) +{ + size_t i; + + if (n == 0) + { + GSL_ERROR ("length n must be positive integer", GSL_EDOM); + } + + for (i = 0; i < n; i++) + { + REAL(complex_coefficient,stride,i) = real_coefficient[i * stride]; + IMAG(complex_coefficient,stride,i) = 0.0; + } + + return 0; + +} diff --git a/gsl-2.5/fft/signals.c b/gsl-2.5/fft/signals.c new file mode 100644 index 00000000..9869abe1 --- /dev/null +++ b/gsl-2.5/fft/signals.c @@ -0,0 +1,26 @@ +#include +#include +#include +#include +#include +#include + +#include +#include + +#include "complex_internal.h" + +#include "urand.c" + +#define BASE_DOUBLE +#include "templates_on.h" +#include "signals_source.c" +#include "templates_off.h" +#undef BASE_DOUBLE + +#define BASE_FLOAT +#include "templates_on.h" +#include "signals_source.c" +#include "templates_off.h" +#undef BASE_FLOAT + diff --git a/gsl-2.5/fft/signals.h b/gsl-2.5/fft/signals.h new file mode 100644 index 00000000..c9bb775f --- /dev/null +++ b/gsl-2.5/fft/signals.h @@ -0,0 +1,64 @@ +/* fft/signals.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +int FUNCTION(fft_signal,complex_pulse) (const size_t k, + const size_t n, + const size_t stride, + const BASE z_real, + const BASE z_imag, + BASE data[], + BASE fft[]); + +int FUNCTION(fft_signal,complex_constant) (const size_t n, + const size_t stride, + const BASE z_real, + const BASE z_imag, + BASE data[], + BASE fft[]); + +int FUNCTION(fft_signal,complex_exp) (const int k, + const size_t n, + const size_t stride, + const BASE z_real, + const BASE z_imag, + BASE data[], + BASE fft[]); + + +int FUNCTION(fft_signal,complex_exppair) (const int k1, + const int k2, + const size_t n, + const size_t stride, + const BASE z1_real, + const BASE z1_imag, + const BASE z2_real, + const BASE z2_imag, + BASE data[], + BASE fft[]); + +int FUNCTION(fft_signal,complex_noise) (const size_t n, + const size_t stride, + BASE data[], + BASE fft[]); + +int FUNCTION(fft_signal,real_noise) (const size_t n, + const size_t stride, + BASE data[], + BASE fft[]); + diff --git a/gsl-2.5/fft/signals_source.c b/gsl-2.5/fft/signals_source.c new file mode 100644 index 00000000..a7f873f1 --- /dev/null +++ b/gsl-2.5/fft/signals_source.c @@ -0,0 +1,288 @@ +/* fft/signals_source.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include "signals.h" + +int +FUNCTION(fft_signal,complex_pulse) (const size_t k, + const size_t n, + const size_t stride, + const BASE z_real, + const BASE z_imag, + BASE data[], + BASE fft[]) +{ + size_t j; + + if (n == 0) + { + GSL_ERROR ("length n must be positive integer", GSL_EDOM); + } + + /* gsl_complex pulse at position k, data[j] = z * delta_{jk} */ + + for (j = 0; j < n; j++) + { + REAL(data,stride,j) = 0.0; + IMAG(data,stride,j) = 0.0; + } + + REAL(data,stride,k % n) = z_real; + IMAG(data,stride,k % n) = z_imag; + + /* fourier transform, fft[j] = z * exp(-2 pi i j k / n) */ + + for (j = 0; j < n; j++) + { + const double arg = -2 * M_PI * ((double) ((j * k) % n)) / ((double) n); + const BASE w_real = (BASE)cos (arg); + const BASE w_imag = (BASE)sin (arg); + REAL(fft,stride,j) = w_real * z_real - w_imag * z_imag; + IMAG(fft,stride,j) = w_real * z_imag + w_imag * z_real; + } + + return 0; + +} + + +int +FUNCTION(fft_signal,complex_constant) (const size_t n, + const size_t stride, + const BASE z_real, + const BASE z_imag, + BASE data[], + BASE fft[]) +{ + size_t j; + + if (n == 0) + { + GSL_ERROR ("length n must be positive integer", GSL_EDOM); + } + + /* constant, data[j] = z */ + + for (j = 0; j < n; j++) + { + REAL(data,stride,j) = z_real; + IMAG(data,stride,j) = z_imag; + } + + /* fourier transform, fft[j] = n z delta_{j0} */ + + for (j = 0; j < n; j++) + { + REAL(fft,stride,j) = 0.0; + IMAG(fft,stride,j) = 0.0; + } + + REAL(fft,stride,0) = ((BASE) n) * z_real; + IMAG(fft,stride,0) = ((BASE) n) * z_imag; + + return 0; + +} + + +int +FUNCTION(fft_signal,complex_exp) (const int k, + const size_t n, + const size_t stride, + const BASE z_real, + const BASE z_imag, + BASE data[], + BASE fft[]) +{ + size_t j; + + if (n == 0) + { + GSL_ERROR ("length n must be positive integer", GSL_EDOM); + } + + /* exponential, data[j] = z * exp(2 pi i j k) */ + + for (j = 0; j < n; j++) + { + const double arg = 2 * M_PI * ((double) ((j * k) % n)) / ((double) n); + const BASE w_real = (BASE)cos (arg); + const BASE w_imag = (BASE)sin (arg); + REAL(data,stride,j) = w_real * z_real - w_imag * z_imag; + IMAG(data,stride,j) = w_real * z_imag + w_imag * z_real; + } + + /* fourier transform, fft[j] = z * delta{(j - k),0} */ + + for (j = 0; j < n; j++) + { + REAL(fft,stride,j) = 0.0; + IMAG(fft,stride,j) = 0.0; + } + + { + int freq; + + if (k <= 0) + { + freq = (n-k) % n ; + } + else + { + freq = (k % n); + }; + + REAL(fft,stride,freq) = ((BASE) n) * z_real; + IMAG(fft,stride,freq) = ((BASE) n) * z_imag; + } + + return 0; + +} + + +int +FUNCTION(fft_signal,complex_exppair) (const int k1, + const int k2, + const size_t n, + const size_t stride, + const BASE z1_real, + const BASE z1_imag, + const BASE z2_real, + const BASE z2_imag, + BASE data[], + BASE fft[]) +{ + size_t j; + + if (n == 0) + { + GSL_ERROR ("length n must be positive integer", GSL_EDOM); + } + + /* exponential, data[j] = z1 * exp(2 pi i j k1) + z2 * exp(2 pi i j k2) */ + + for (j = 0; j < n; j++) + { + const double arg1 = 2 * M_PI * ((double) ((j * k1) % n)) / ((double) n); + const BASE w1_real = (BASE)cos (arg1); + const BASE w1_imag = (BASE)sin (arg1); + const double arg2 = 2 * M_PI * ((double) ((j * k2) % n)) / ((double) n); + const BASE w2_real = (BASE)cos (arg2); + const BASE w2_imag = (BASE)sin (arg2); + REAL(data,stride,j) = w1_real * z1_real - w1_imag * z1_imag; + IMAG(data,stride,j) = w1_real * z1_imag + w1_imag * z1_real; + REAL(data,stride,j) += w2_real * z2_real - w2_imag * z2_imag; + IMAG(data,stride,j) += w2_real * z2_imag + w2_imag * z2_real; + } + + /* fourier transform, fft[j] = z1 * delta{(j - k1),0} + z2 * + delta{(j - k2,0)} */ + + for (j = 0; j < n; j++) + { + REAL(fft,stride,j) = 0.0; + IMAG(fft,stride,j) = 0.0; + } + + { + int freq1, freq2; + + if (k1 <= 0) + { + freq1 = (n - k1) % n; + } + else + { + freq1 = (k1 % n); + }; + + if (k2 <= 0) + { + freq2 = (n - k2) % n; + } + else + { + freq2 = (k2 % n); + }; + + REAL(fft,stride,freq1) += ((BASE) n) * z1_real; + IMAG(fft,stride,freq1) += ((BASE) n) * z1_imag; + REAL(fft,stride,freq2) += ((BASE) n) * z2_real; + IMAG(fft,stride,freq2) += ((BASE) n) * z2_imag; + } + + return 0; + +} + + +int +FUNCTION(fft_signal,complex_noise) (const size_t n, + const size_t stride, + BASE data[], + BASE fft[]) +{ + size_t i; + int status; + + if (n == 0) + { + GSL_ERROR ("length n must be positive integer", GSL_EDOM); + } + + for (i = 0; i < n; i++) + { + REAL(data,stride,i) = (BASE)urand(); + IMAG(data,stride,i) = (BASE)urand(); + } + + /* compute the dft */ + status = FUNCTION(gsl_dft_complex,forward) (data, stride, n, fft); + + return status; +} + + +int +FUNCTION(fft_signal,real_noise) (const size_t n, + const size_t stride, + BASE data[], + BASE fft[]) +{ + size_t i; + int status; + + if (n == 0) + { + GSL_ERROR ("length n must be positive integer", GSL_EDOM); + } + + for (i = 0; i < n; i++) + { + REAL(data,stride,i) = (BASE)urand(); + IMAG(data,stride,i) = 0.0; + } + + /* compute the dft */ + status = FUNCTION(gsl_dft_complex,forward) (data, stride, n, fft); + + return status; +} + diff --git a/gsl-2.5/fft/test b/gsl-2.5/fft/test new file mode 100755 index 00000000..3aa939ee Binary files /dev/null and b/gsl-2.5/fft/test differ diff --git a/gsl-2.5/fft/test-suite.log b/gsl-2.5/fft/test-suite.log new file mode 100644 index 00000000..39e5b2de --- /dev/null +++ b/gsl-2.5/fft/test-suite.log @@ -0,0 +1,14 @@ +================================= + gsl 2.5: fft/test-suite.log +================================= + +# TOTAL: 1 +# PASS: 1 +# SKIP: 0 +# XFAIL: 0 +# FAIL: 0 +# XPASS: 0 +# ERROR: 0 + +.. contents:: :depth: 2 + diff --git a/gsl-2.5/fft/test.c b/gsl-2.5/fft/test.c new file mode 100644 index 00000000..b244db51 --- /dev/null +++ b/gsl-2.5/fft/test.c @@ -0,0 +1,126 @@ +/* fft/test.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +void my_error_handler (const char *reason, const char *file, + int line, int err); + +#include "complex_internal.h" + +/* Usage: test [n] + Exercise the fft routines for length n. By default n runs from 1 to 100. + The exit status indicates success or failure. */ + +#define BASE_DOUBLE +#include "templates_on.h" +#include "compare_source.c" +#include "bitreverse.c" +#include "test_complex_source.c" +#include "test_real_source.c" +#include "test_trap_source.c" +#include "templates_off.h" +#undef BASE_DOUBLE + +#define BASE_FLOAT +#include "templates_on.h" +#include "compare_source.c" +#include "bitreverse.c" +#include "test_complex_source.c" +#include "test_real_source.c" +#include "test_trap_source.c" +#include "templates_off.h" +#undef BASE_FLOAT + +int +main (int argc, char *argv[]) +{ + size_t i; + size_t start = 1, end = 99; + size_t stride ; + size_t n = 0; + + gsl_ieee_env_setup (); + + if (argc == 2) + n = strtol (argv[1], NULL, 0); + + if (n) + { + start = n ; + end = n ; + } + + + for (i = 1 ; i <= end ; i *= 2) + { + if (i >= start) + { + for (stride = 1 ; stride < 4 ; stride++) + { + test_complex_bitreverse_order (stride, i) ; + test_complex_radix2 (stride, i) ; + test_real_bitreverse_order (stride, i) ; + test_real_radix2 (stride, i) ; + } + } + } + + for (i = start ; i <= end ; i++) + { + for (stride = 1 ; stride < 4 ; stride++) + { + test_complex_func (stride, i) ; + test_complex_float_func (stride, i) ; + test_real_func (stride, i) ; + test_real_float_func (stride, i) ; + } + } + + gsl_set_error_handler (&my_error_handler); + test_trap () ; + test_float_trap () ; + + exit (gsl_test_summary ()); +} + + +void +my_error_handler (const char *reason, const char *file, int line, int err) +{ + if (0) printf ("(caught [%s:%d: %s (%d)])\n", file, line, reason, err) ; +} diff --git a/gsl-2.5/fft/test.log b/gsl-2.5/fft/test.log new file mode 100644 index 00000000..3f40b3eb --- /dev/null +++ b/gsl-2.5/fft/test.log @@ -0,0 +1 @@ +Completed [9204/9204] diff --git a/gsl-2.5/fft/test.trs b/gsl-2.5/fft/test.trs new file mode 100644 index 00000000..3f0f396c --- /dev/null +++ b/gsl-2.5/fft/test.trs @@ -0,0 +1,4 @@ +:test-result: PASS +:global-test-result: PASS +:recheck: no +:copy-in-global-log: no diff --git a/gsl-2.5/fft/test_complex_source.c b/gsl-2.5/fft/test_complex_source.c new file mode 100644 index 00000000..7b427885 --- /dev/null +++ b/gsl-2.5/fft/test_complex_source.c @@ -0,0 +1,448 @@ +/* fft/test_complex.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include "bitreverse.h" +#include "signals.h" +#include "compare.h" + +void FUNCTION(test_complex,func) (size_t stride, size_t n); +int FUNCTION(test,offset) (const BASE data[], size_t stride, + size_t n, size_t offset); +void FUNCTION(test_complex,bitreverse_order) (size_t stride, size_t n) ; +void FUNCTION(test_complex,radix2) (size_t stride, size_t n); + +int FUNCTION(test,offset) (const BASE data[], size_t stride, + size_t n, size_t offset) +{ + int status = 0 ; + size_t i, j, k = 0 ; + + for (i = 0; i < n; i++) + { + k += 2 ; + + for (j = 1; j < stride; j++) + { + status |= data[k] != k + offset ; + k++ ; + status |= data[k] != k + offset ; + k++ ; + } + } + return status ; +} + + +void FUNCTION(test_complex,func) (size_t stride, size_t n) +{ + size_t i ; + int status ; + + TYPE(gsl_fft_complex_wavetable) * cw ; + TYPE(gsl_fft_complex_workspace) * cwork ; + + BASE * complex_data = (BASE *) malloc (2 * n * stride * sizeof (BASE)); + BASE * complex_tmp = (BASE *) malloc (2 * n * stride * sizeof (BASE)); + BASE * fft_complex_data = (BASE *) malloc (2 * n * stride * sizeof (BASE)); + BASE * fft_complex_tmp = (BASE *) malloc (2 * n * stride * sizeof (BASE)); + + for (i = 0 ; i < 2 * n * stride ; i++) + { + complex_data[i] = (BASE)i ; + complex_tmp[i] = (BASE)(i + 1000.0) ; + fft_complex_data[i] = (BASE)(i + 2000.0) ; + fft_complex_tmp[i] = (BASE)(i + 3000.0) ; + } + + gsl_set_error_handler (NULL); /* abort on any errors */ + + /* Test allocation */ + + { + cw = FUNCTION(gsl_fft_complex_wavetable,alloc) (n); + gsl_test (cw == 0, NAME(gsl_fft_complex_wavetable) + "_alloc, n = %d, stride = %d", n, stride); + } + + { + cwork = FUNCTION(gsl_fft_complex_workspace,alloc) (n); + gsl_test (cwork == 0, NAME(gsl_fft_complex_workspace) + "_alloc, n = %d", n); + } + + + /* Test mixed radix fft with noise */ + + { + FUNCTION(fft_signal,complex_noise) (n, stride, complex_data, fft_complex_data); + for (i = 0 ; i < n ; i++) + { + REAL(complex_tmp,stride,i) = REAL(complex_data,stride,i) ; + IMAG(complex_tmp,stride,i) = IMAG(complex_data,stride,i) ; + } + + FUNCTION(gsl_fft_complex,forward) (complex_data, stride, n, cw, cwork); + + for (i = 0 ; i < n ; i++) + { + REAL(fft_complex_tmp,stride,i) = REAL(complex_data,stride,i) ; + IMAG(fft_complex_tmp,stride,i) = IMAG(complex_data,stride,i) ; + } + + status = FUNCTION(compare_complex,results) ("dft", fft_complex_data, + "fft of noise", complex_data, + stride, n, 1e6); + gsl_test (status, NAME(gsl_fft_complex) + "_forward with signal_noise, n = %d, stride = %d", n, stride); + + if (stride > 1) + { + status = FUNCTION(test, offset) (complex_data, stride, n, 0) ; + + gsl_test (status, NAME(gsl_fft_complex) + "_forward avoids unstrided data, n = %d, stride = %d", + n, stride); + } + } + + /* Test the inverse fft */ + + { + status = FUNCTION(gsl_fft_complex,inverse) (complex_data, stride, n, cw, cwork); + status = FUNCTION(compare_complex,results) ("orig", complex_tmp, + "fft inverse", complex_data, + stride, n, 1e6); + gsl_test (status, NAME(gsl_fft_complex) + "_inverse with signal_noise, n = %d, stride = %d", n, stride); + + if (stride > 1) + { + status = FUNCTION(test, offset) (complex_data, stride, n, 0) ; + + gsl_test (status, NAME(gsl_fft_complex) + "_inverse other data untouched, n = %d, stride = %d", + n, stride); + } + + } + + /* Test the backward fft */ + + { + status = FUNCTION(gsl_fft_complex,backward) (fft_complex_tmp, stride, n, cw, cwork); + + for (i = 0; i < n; i++) + { + REAL(complex_tmp,stride,i) *= n; + IMAG(complex_tmp,stride,i) *= n; + } + status = FUNCTION(compare_complex,results) ("orig", + complex_tmp, + "fft backward", + fft_complex_tmp, + stride, n, 1e6); + + gsl_test (status, NAME(gsl_fft_complex) + "_backward with signal_noise, n = %d, stride = %d", n, stride); + + if (stride > 1) + { + status = FUNCTION(test, offset) (fft_complex_tmp, stride, n, 3000) ; + + gsl_test (status, NAME(gsl_fft_complex) + "_backward avoids unstrided data, n = %d, stride = %d", + n, stride); + } + + } + + /* Test a pulse signal */ + + { + FUNCTION(fft_signal,complex_pulse) (1, n, stride, 1.0, 0.0, complex_data, + fft_complex_data); + FUNCTION(gsl_fft_complex,forward) (complex_data, stride, n, cw, cwork); + status = FUNCTION(compare_complex,results) ("analytic", fft_complex_data, + "fft of pulse", complex_data, + stride, n, 1e6); + gsl_test (status, NAME(gsl_fft_complex) + "_forward with signal_pulse, n = %d, stride = %d", n, stride); + + } + + + /* Test a constant signal */ + + { + FUNCTION(fft_signal,complex_constant) (n, stride, 1.0, 0.0, complex_data, + fft_complex_data); + FUNCTION(gsl_fft_complex,forward) (complex_data, stride, n, cw, cwork); + status = FUNCTION(compare_complex,results) ("analytic", fft_complex_data, + "fft of constant", + complex_data, + stride, n, 1e6); + gsl_test (status, NAME(gsl_fft_complex) + "_forward with signal_constant, n = %d, stride = %d", n, stride); + } + + /* Test an exponential (cos/sin) signal */ + + { + status = 0; + for (i = 0; i < n; i++) + { + FUNCTION(fft_signal,complex_exp) ((int)i, n, stride, 1.0, 0.0, complex_data, + fft_complex_data); + FUNCTION(gsl_fft_complex,forward) (complex_data, stride, n, cw, cwork); + status |= FUNCTION(compare_complex,results) ("analytic", + fft_complex_data, + "fft of exp", + complex_data, + stride, n, 1e6); + } + gsl_test (status, NAME(gsl_fft_complex) + "_forward with signal_exp, n = %d, stride = %d", n, stride); + } + + FUNCTION(gsl_fft_complex_wavetable,free) (cw); + FUNCTION(gsl_fft_complex_workspace,free) (cwork); + + free (complex_data); + free (complex_tmp); + free (fft_complex_data); + free (fft_complex_tmp); +} + + +void +FUNCTION(test_complex,bitreverse_order) (size_t stride, size_t n) +{ + int status ; + size_t logn, i ; + + BASE * tmp = (BASE *) malloc (2 * n * stride * sizeof (BASE)); + BASE * data = (BASE *) malloc (2 * n * stride * sizeof (BASE)); + BASE * reversed_data = (BASE *) malloc (2 * n * stride * sizeof (BASE)); + + for (i = 0; i < 2 * stride * n; i++) + { + data[i] = (BASE)i ; + } + + memcpy (tmp, data, 2 * n * stride * sizeof(BASE)) ; + + logn = 0 ; while (n > (1U<>= 1; + } + + reversed_data[2*j*stride] = data[2*i*stride] ; + reversed_data[2*j*stride+1] = data[2*i*stride+1] ; + } + + FUNCTION(fft_complex,bitreverse_order) (data, stride, n, logn); + + status = FUNCTION(compare_complex,results) ("naive bit reverse", + reversed_data, + "fft_complex_bitreverse_order", + data, + stride, n, 1e6); + + gsl_test (status, "fft_complex_bitreverse_order, n = %d", n); + + free (reversed_data) ; + free (data) ; + free (tmp) ; +} + +void FUNCTION(test_complex,radix2) (size_t stride, size_t n) +{ + size_t i ; + int status ; + + BASE * complex_data = (BASE *) malloc (2 * n * stride * sizeof (BASE)); + BASE * complex_tmp = (BASE *) malloc (2 * n * stride * sizeof (BASE)); + BASE * fft_complex_data = (BASE *) malloc (2 * n * stride * sizeof (BASE)); + BASE * fft_complex_tmp = (BASE *) malloc (2 * n * stride * sizeof (BASE)); + + for (i = 0 ; i < 2 * n * stride ; i++) + { + complex_data[i] = (BASE)i ; + complex_tmp[i] = (BASE)(i + 1000.0) ; + fft_complex_data[i] = (BASE)(i + 2000.0) ; + fft_complex_tmp[i] = (BASE)(i + 3000.0) ; + } + + gsl_set_error_handler (NULL); /* abort on any errors */ + + /* Test radix-2 fft with noise */ + + { + FUNCTION(fft_signal,complex_noise) (n, stride, complex_data, + fft_complex_data); + for (i = 0 ; i < n ; i++) + { + REAL(complex_tmp,stride,i) = REAL(complex_data,stride,i) ; + IMAG(complex_tmp,stride,i) = IMAG(complex_data,stride,i) ; + } + + FUNCTION(gsl_fft_complex,radix2_forward) (complex_data, stride, n); + + for (i = 0 ; i < n ; i++) + { + REAL(fft_complex_tmp,stride,i) = REAL(complex_data,stride,i) ; + IMAG(fft_complex_tmp,stride,i) = IMAG(complex_data,stride,i) ; + } + + status = FUNCTION(compare_complex,results) ("dft", fft_complex_data, + "fft of noise", complex_data, + stride, n, 1e6); + gsl_test (status, NAME(gsl_fft_complex) + "_radix2_forward with signal_noise, n = %d, stride = %d", + n, stride); + + if (stride > 1) + { + status = FUNCTION(test, offset) (complex_data, stride, n, 0) ; + + gsl_test (status, NAME(gsl_fft_complex) + "_radix2_forward avoids unstrided data, n = %d, stride = %d", + n, stride); + } + } + + /* Test the inverse fft */ + + { + status = FUNCTION(gsl_fft_complex,radix2_inverse) (complex_data, stride, n); + status = FUNCTION(compare_complex,results) ("orig", complex_tmp, + "fft inverse", complex_data, + stride, n, 1e6); + gsl_test (status, NAME(gsl_fft_complex) + "_radix2_inverse with signal_noise, n = %d, stride = %d", n, stride); + + if (stride > 1) + { + status = FUNCTION(test, offset) (complex_data, stride, n, 0) ; + + gsl_test (status, NAME(gsl_fft_complex) + "_radix2_inverse other data untouched, n = %d, stride = %d", + n, stride); + } + + } + + /* Test the backward fft */ + + { + status = FUNCTION(gsl_fft_complex,radix2_backward) (fft_complex_tmp, stride, n); + + for (i = 0; i < n; i++) + { + REAL(complex_tmp,stride,i) *= n; + IMAG(complex_tmp,stride,i) *= n; + } + status = FUNCTION(compare_complex,results) ("orig", + complex_tmp, + "fft backward", + fft_complex_tmp, + stride, n, 1e6); + + gsl_test (status, NAME(gsl_fft_complex) + "_radix2_backward with signal_noise, n = %d, stride = %d", n, stride); + + if (stride > 1) + { + status = FUNCTION(test, offset) (fft_complex_tmp, stride, n, 3000) ; + + gsl_test (status, NAME(gsl_fft_complex) + "_radix2_backward avoids unstrided data, n = %d, stride = %d", + n, stride); + } + + } + + /* Test a pulse signal */ + + { + FUNCTION(fft_signal,complex_pulse) (1, n, stride, 1.0, 0.0, complex_data, + fft_complex_data); + FUNCTION(gsl_fft_complex,radix2_forward) (complex_data, stride, n); + status = FUNCTION(compare_complex,results) ("analytic", fft_complex_data, + "fft of pulse", complex_data, + stride, n, 1e6); + gsl_test (status, NAME(gsl_fft_complex) + "_radix2_forward with signal_pulse, n = %d, stride = %d", n, stride); + + } + + + /* Test a constant signal */ + + { + FUNCTION(fft_signal,complex_constant) (n, stride, 1.0, 0.0, complex_data, + fft_complex_data); + FUNCTION(gsl_fft_complex,radix2_forward) (complex_data, stride, n); + status = FUNCTION(compare_complex,results) ("analytic", fft_complex_data, + "fft of constant", + complex_data, + stride, n, 1e6); + gsl_test (status, NAME(gsl_fft_complex) + "_radix2_forward with signal_constant, n = %d, stride = %d", + n, stride); + } + + /* Test an exponential (cos/sin) signal */ + + { + status = 0; + for (i = 0; i < n; i++) + { + FUNCTION(fft_signal,complex_exp) ((int)i, n, stride, 1.0, 0.0, complex_data, + fft_complex_data); + FUNCTION(gsl_fft_complex,radix2_forward) (complex_data, stride, n); + status |= FUNCTION(compare_complex,results) ("analytic", + fft_complex_data, + "fft of exp", + complex_data, + stride, n, 1e6); + } + gsl_test (status, NAME(gsl_fft_complex) + "_radix2_forward with signal_exp, n = %d, stride = %d", n, stride); + } + + + free (complex_data); + free (complex_tmp); + free (fft_complex_data); + free (fft_complex_tmp); +} + diff --git a/gsl-2.5/fft/test_real_source.c b/gsl-2.5/fft/test_real_source.c new file mode 100644 index 00000000..40b9e871 --- /dev/null +++ b/gsl-2.5/fft/test_real_source.c @@ -0,0 +1,235 @@ +/* fft/test_real.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include "bitreverse.h" +#include "signals.h" +#include "compare.h" + +void FUNCTION(test_real,func) (size_t stride, size_t n); +void FUNCTION(test_real,bitreverse_order) (size_t stride, size_t n); +void FUNCTION(test_real,radix2) (size_t stride, size_t n); + +void FUNCTION(test_real,func) (size_t stride, size_t n) +{ + size_t i ; + int status ; + + TYPE(gsl_fft_real_wavetable) * rw ; + TYPE(gsl_fft_halfcomplex_wavetable) * hcw ; + TYPE(gsl_fft_real_workspace) * rwork ; + + BASE * real_data = (BASE *) malloc (n * stride * sizeof (BASE)); + BASE * complex_data = (BASE *) malloc (2 * n * stride * sizeof (BASE)); + BASE * complex_tmp = (BASE *) malloc (2 * n * stride * sizeof (BASE)); + BASE * fft_complex_data = (BASE *) malloc (2 * n * stride * sizeof (BASE)); + + for (i = 0 ; i < n * stride ; i++) + { + real_data[i] = (BASE)i ; + } + + for (i = 0 ; i < 2 * n * stride ; i++) + { + complex_data[i] = (BASE)(i + 1000.0) ; + complex_tmp[i] = (BASE)(i + 2000.0) ; + fft_complex_data[i] = (BASE)(i + 3000.0) ; + } + + gsl_set_error_handler (NULL); /* abort on any errors */ + + /* mixed radix real fft */ + + rw = FUNCTION(gsl_fft_real_wavetable,alloc) (n); + gsl_test (rw == 0, NAME(gsl_fft_real_wavetable) + "_alloc, n = %d, stride = %d", n, stride); + + rwork = FUNCTION(gsl_fft_real_workspace,alloc) (n); + gsl_test (rwork == 0, NAME(gsl_fft_real_workspace) + "_alloc, n = %d", n); + + FUNCTION(fft_signal,real_noise) (n, stride, complex_data, fft_complex_data); + memcpy (complex_tmp, complex_data, 2 * n * stride * sizeof (BASE)); + + for (i = 0; i < n; i++) + { + real_data[i*stride] = REAL(complex_data,stride,i); + } + + FUNCTION(gsl_fft_real,transform) (real_data, stride, n, rw, rwork); + FUNCTION(gsl_fft_halfcomplex,unpack) (real_data, complex_data, stride, n); + + status = FUNCTION(compare_complex,results) ("dft", fft_complex_data, + "fft of noise", complex_data, + stride, n, 1e6); + gsl_test (status, NAME(gsl_fft_real) + " with signal_real_noise, n = %d, stride = %d", n, stride); + + /* compute the inverse fft */ + + hcw = FUNCTION(gsl_fft_halfcomplex_wavetable,alloc) (n); + gsl_test (hcw == 0, NAME(gsl_fft_halfcomplex_wavetable) + "_alloc, n = %d, stride = %d", n, stride); + + status = FUNCTION(gsl_fft_halfcomplex,transform) (real_data, stride, n, hcw, rwork); + + for (i = 0; i < n; i++) + { + real_data[i*stride] /= n; + } + + FUNCTION(gsl_fft_real,unpack) (real_data, complex_data, stride, n); + + status = FUNCTION(compare_complex,results) ("orig", complex_tmp, + "fft inverse", complex_data, + stride, n, 1e6); + + gsl_test (status, NAME(gsl_fft_halfcomplex) + " with data from signal_noise, n = %d, stride = %d", n, stride); + + FUNCTION(gsl_fft_real_workspace,free) (rwork); + FUNCTION(gsl_fft_real_wavetable,free) (rw); + FUNCTION(gsl_fft_halfcomplex_wavetable,free) (hcw); + + free(real_data) ; + free(complex_data) ; + free(complex_tmp) ; + free(fft_complex_data) ; +} + + +void +FUNCTION(test_real,bitreverse_order) (size_t stride, size_t n) +{ + int status ; + size_t logn, i ; + + BASE * tmp = (BASE *) malloc (n * stride * sizeof (BASE)); + BASE * data = (BASE *) malloc (n * stride * sizeof (BASE)); + BASE * reversed_data = (BASE *) malloc (n * stride * sizeof (BASE)); + + for (i = 0; i < stride * n; i++) + { + data[i] = (BASE)i ; + } + + memcpy (tmp, data, n * stride * sizeof(BASE)) ; + + logn = 0 ; while (n > (1U <>= 1; + } + + reversed_data[j*stride] = data[i*stride] ; + } + + FUNCTION(fft_real,bitreverse_order) (data, stride, n, logn); + + status = FUNCTION(compare_real,results) ("naive bit reverse", + reversed_data, + "fft_complex_bitreverse_order", + data, + stride, n, 1e6); + + gsl_test (status, NAME(fft_real) "_bitreverse_order, n = %d", n); + + free (reversed_data) ; + free (data) ; + free (tmp) ; +} + + +void FUNCTION(test_real,radix2) (size_t stride, size_t n) +{ + size_t i ; + int status ; + + BASE * real_data = (BASE *) malloc (n * stride * sizeof (BASE)); + BASE * complex_data = (BASE *) malloc (2 * n * stride * sizeof (BASE)); + BASE * complex_tmp = (BASE *) malloc (2 * n * stride * sizeof (BASE)); + BASE * fft_complex_data = (BASE *) malloc (2 * n * stride * sizeof (BASE)); + + for (i = 0 ; i < n * stride ; i++) + { + real_data[i] = (BASE)i ; + } + + for (i = 0 ; i < 2 * n * stride ; i++) + { + complex_data[i] = (BASE)(i + 1000.0) ; + complex_tmp[i] = (BASE)(i + 2000.0) ; + fft_complex_data[i] = (BASE)(i + 3000.0) ; + } + + gsl_set_error_handler (NULL); /* abort on any errors */ + + /* radix-2 real fft */ + + FUNCTION(fft_signal,real_noise) (n, stride, complex_data, fft_complex_data); + memcpy (complex_tmp, complex_data, 2 * n * stride * sizeof (BASE)); + + for (i = 0; i < n; i++) + { + real_data[i*stride] = REAL(complex_data,stride,i); + } + + FUNCTION(gsl_fft_real,radix2_transform) (real_data, stride, n); + FUNCTION(gsl_fft_halfcomplex,radix2_unpack) (real_data, complex_data, stride, n); + + status = FUNCTION(compare_complex,results) ("dft", fft_complex_data, + "fft of noise", complex_data, + stride, n, 1e6); + gsl_test (status, NAME(gsl_fft_real) + "_radix2 with signal_real_noise, n = %d, stride = %d", n, stride); + + /* compute the inverse fft */ + + status = FUNCTION(gsl_fft_halfcomplex,radix2_transform) (real_data, stride, n); + + for (i = 0; i < n; i++) + { + real_data[i*stride] /= n; + } + + FUNCTION(gsl_fft_real,unpack) (real_data, complex_data, stride, n); + + status = FUNCTION(compare_complex,results) ("orig", complex_tmp, + "fft inverse", complex_data, + stride, n, 1e6); + + gsl_test (status, NAME(gsl_fft_halfcomplex) + "_radix2 with data from signal_noise, n = %d, stride = %d", n, stride); + + + free(real_data) ; + free(complex_data) ; + free(complex_tmp) ; + free(fft_complex_data) ; +} diff --git a/gsl-2.5/fft/test_trap_source.c b/gsl-2.5/fft/test_trap_source.c new file mode 100644 index 00000000..a581f6fb --- /dev/null +++ b/gsl-2.5/fft/test_trap_source.c @@ -0,0 +1,138 @@ +/* fft/test_trap.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +void FUNCTION(test,trap) (void); + +void +FUNCTION(test,trap) (void) +{ + int status ; + + BASE real_x ; + BASE complex_x ; + + BASE * real_data = &real_x ; + BASE * complex_data = &complex_x ; + + TYPE(gsl_fft_complex_wavetable) * cw; + TYPE(gsl_fft_real_wavetable) * rw; + TYPE(gsl_fft_halfcomplex_wavetable) * hcw; + + TYPE(gsl_fft_complex_workspace) * cwork; + TYPE(gsl_fft_real_workspace) * rwork; + + /* n = 0 in alloc */ + + cw = FUNCTION(gsl_fft_complex_wavetable,alloc) (0); + gsl_test (cw != 0, "trap for n = 0 in " NAME(gsl_fft_complex_wavetable) "_alloc"); + + rw = FUNCTION(gsl_fft_real_wavetable,alloc) (0); + gsl_test (rw != 0, "trap for n = 0 in " NAME(gsl_fft_real_wavetable) "_alloc" ); + + hcw = FUNCTION(gsl_fft_halfcomplex_wavetable,alloc) (0); + gsl_test (hcw != 0, "trap for n = 0 in " NAME(gsl_fft_halfcomplex_wavetable) "_alloc"); + + cwork = FUNCTION(gsl_fft_complex_workspace,alloc) (0); + gsl_test (cw != 0, "trap for n = 0 in " NAME(gsl_fft_complex_workspace) "_alloc"); + + rwork = FUNCTION(gsl_fft_real_workspace,alloc) (0); + gsl_test (rw != 0, "trap for n = 0 in " NAME(gsl_fft_real_workspace) "_alloc" ); + + cw = FUNCTION(gsl_fft_complex_wavetable,alloc) (10); + hcw = FUNCTION(gsl_fft_halfcomplex_wavetable,alloc) (10); + rw = FUNCTION(gsl_fft_real_wavetable,alloc) (10); + + cwork = FUNCTION(gsl_fft_complex_workspace,alloc) (10); + rwork = FUNCTION(gsl_fft_real_workspace,alloc) (10); + + /* n = 0 in fft forward */ + + status = FUNCTION(gsl_fft_complex,forward) (complex_data, 1, 0, cw, cwork); + gsl_test (!status, "trap for n = 0 in " NAME(gsl_fft_complex) "_forward"); + + status = FUNCTION(gsl_fft_real,transform) (real_data, 1, 0, rw, rwork); + gsl_test (!status, "trap for n = 0 in " NAME(gsl_fft_real) "_transform"); + + status = FUNCTION(gsl_fft_halfcomplex,transform) (real_data, 1, 0, hcw, rwork); + gsl_test (!status, "trap for n = 0 in " NAME(gsl_fft_halfcomplex) "_transform"); + + status = FUNCTION(gsl_fft_complex,radix2_forward) (complex_data, 1, 0); + gsl_test (!status, "trap for n = 0 in " NAME(gsl_fft_complex) "_radix2_forward"); + + /* n = 0 in fft backward */ + + status = FUNCTION(gsl_fft_complex,backward) (complex_data, 1, 0, cw, cwork); + gsl_test (!status, "trap for n = 0 in " NAME(gsl_fft_complex) "_backward"); + + status = FUNCTION(gsl_fft_complex,radix2_backward) (complex_data, 1, 0); + gsl_test (!status, "trap for n = 0 in " NAME(gsl_fft_complex) "_radix2_backward"); + + /* n = 0 in fft inverse */ + + status = FUNCTION(gsl_fft_complex,inverse) (complex_data, 1, 0, cw, cwork); + gsl_test (!status, "trap for n = 0 in " NAME(gsl_fft_complex) "_inverse"); + + status = FUNCTION(gsl_fft_complex,radix2_inverse) (complex_data, 1, 0); + gsl_test (!status, "trap for n = 0 in " NAME(gsl_fft_complex) "_radix2_inverse"); + + /* n != 2^k in power of 2 routines */ + + status = FUNCTION(gsl_fft_complex,radix2_forward) (complex_data, 1, 17); + gsl_test (!status, "trap for n != 2^k in " NAME(gsl_fft_complex) "_radix2_forward"); + + status = FUNCTION(gsl_fft_complex,radix2_backward) (complex_data, 1, 17); + gsl_test (!status, "trap for n != 2^k in " NAME(gsl_fft_complex) "_radix2_backward"); + + status = FUNCTION(gsl_fft_complex,radix2_inverse) (complex_data, 1, 17); + gsl_test (!status, "trap for n != 2^k in " NAME(gsl_fft_complex) "_radix2_inverse"); + + /* n != wavetable.n in mixed radix routines */ + + cw->n = 3; + status = FUNCTION(gsl_fft_complex,forward) (complex_data, 1, 4, cw, cwork); + gsl_test (!status, "trap for n != nw in " NAME(gsl_fft_complex) "_forward"); + + cw->n = 3; + status = FUNCTION(gsl_fft_complex,backward) (complex_data, 1, 4, cw, cwork); + gsl_test (!status, "trap for n != nw in " NAME(gsl_fft_complex) "_backward"); + + cw->n = 3; + status = FUNCTION(gsl_fft_complex,inverse) (complex_data, 1, 4, cw, cwork); + gsl_test (!status, "trap for n != nw in " NAME(gsl_fft_complex) "_inverse"); + + rw->n = 3; + status = FUNCTION(gsl_fft_real,transform) (real_data, 1, 4, rw, rwork); + gsl_test (!status, "trap for n != nw in " NAME(gsl_fft_real) "_transform"); + + hcw->n = 3; + status = FUNCTION(gsl_fft_halfcomplex,transform) (real_data, 1, 4, hcw, rwork); + gsl_test (!status, "trap for n != nw in " NAME(gsl_fft_halfcomplex) "_transform"); + + FUNCTION (gsl_fft_halfcomplex_wavetable,free) (hcw) ; + FUNCTION (gsl_fft_real_wavetable,free) (rw) ; + FUNCTION (gsl_fft_complex_wavetable,free) (cw) ; + + FUNCTION (gsl_fft_real_workspace,free) (rwork) ; + FUNCTION (gsl_fft_complex_workspace,free) (cwork) ; + +} + + + + diff --git a/gsl-2.5/fft/urand.c b/gsl-2.5/fft/urand.c new file mode 100644 index 00000000..abde12f3 --- /dev/null +++ b/gsl-2.5/fft/urand.c @@ -0,0 +1,26 @@ +/* fft/urand.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +double urand (void); + +double urand (void) { + static unsigned long int x = 1; + x = (1103515245 * x + 12345) & 0x7fffffffUL ; + return x / 2147483648.0 ; +} diff --git a/gsl-2.5/filter/.deps/gaussian.Plo b/gsl-2.5/filter/.deps/gaussian.Plo new file mode 100644 index 00000000..761fbdfa --- /dev/null +++ b/gsl-2.5/filter/.deps/gaussian.Plo @@ -0,0 +1,260 @@ +gaussian.lo: gaussian.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_math.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_filter.h ../gsl/gsl_movstat.h \ + ../gsl/gsl_poly.h ringbuf.c + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_filter.h: + +../gsl/gsl_movstat.h: + +../gsl/gsl_poly.h: + +ringbuf.c: diff --git a/gsl-2.5/filter/.deps/impulse.Plo b/gsl-2.5/filter/.deps/impulse.Plo new file mode 100644 index 00000000..93e6bbf5 --- /dev/null +++ b/gsl-2.5/filter/.deps/impulse.Plo @@ -0,0 +1,255 @@ +impulse.lo: impulse.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_math.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_filter.h ../gsl/gsl_movstat.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_filter.h: + +../gsl/gsl_movstat.h: diff --git a/gsl-2.5/filter/.deps/median.Plo b/gsl-2.5/filter/.deps/median.Plo new file mode 100644 index 00000000..1d459bc3 --- /dev/null +++ b/gsl-2.5/filter/.deps/median.Plo @@ -0,0 +1,255 @@ +median.lo: median.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_math.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_filter.h ../gsl/gsl_movstat.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_filter.h: + +../gsl/gsl_movstat.h: diff --git a/gsl-2.5/filter/.deps/rmedian.Plo b/gsl-2.5/filter/.deps/rmedian.Plo new file mode 100644 index 00000000..5a670a2b --- /dev/null +++ b/gsl-2.5/filter/.deps/rmedian.Plo @@ -0,0 +1,285 @@ +rmedian.lo: rmedian.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_math.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_filter.h ../gsl/gsl_movstat.h \ + ../gsl/gsl_statistics.h ../gsl/gsl_statistics_long_double.h \ + ../gsl/gsl_statistics_double.h ../gsl/gsl_statistics_float.h \ + ../gsl/gsl_statistics_ulong.h ../gsl/gsl_statistics_long.h \ + ../gsl/gsl_statistics_uint.h ../gsl/gsl_statistics_int.h \ + ../gsl/gsl_statistics_ushort.h ../gsl/gsl_statistics_short.h \ + ../gsl/gsl_statistics_uchar.h ../gsl/gsl_statistics_char.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_filter.h: + +../gsl/gsl_movstat.h: + +../gsl/gsl_statistics.h: + +../gsl/gsl_statistics_long_double.h: + +../gsl/gsl_statistics_double.h: + +../gsl/gsl_statistics_float.h: + +../gsl/gsl_statistics_ulong.h: + +../gsl/gsl_statistics_long.h: + +../gsl/gsl_statistics_uint.h: + +../gsl/gsl_statistics_int.h: + +../gsl/gsl_statistics_ushort.h: + +../gsl/gsl_statistics_short.h: + +../gsl/gsl_statistics_uchar.h: + +../gsl/gsl_statistics_char.h: diff --git a/gsl-2.5/filter/.deps/test.Po b/gsl-2.5/filter/.deps/test.Po new file mode 100644 index 00000000..c7a15fa4 --- /dev/null +++ b/gsl-2.5/filter/.deps/test.Po @@ -0,0 +1,380 @@ +test.o: test.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + /usr/include/string.h /usr/include/xlocale.h /usr/include/bits/string.h \ + /usr/include/bits/string2.h ../gsl/gsl_math.h ../gsl/gsl_sys.h \ + ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_sort.h \ + ../gsl/gsl_sort_long_double.h ../gsl/gsl_errno.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_permutation.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_sort_double.h ../gsl/gsl_sort_float.h ../gsl/gsl_sort_ulong.h \ + ../gsl/gsl_sort_long.h ../gsl/gsl_sort_uint.h ../gsl/gsl_sort_int.h \ + ../gsl/gsl_sort_ushort.h ../gsl/gsl_sort_short.h ../gsl/gsl_sort_uchar.h \ + ../gsl/gsl_sort_char.h ../gsl/gsl_statistics.h \ + ../gsl/gsl_statistics_long_double.h ../gsl/gsl_statistics_double.h \ + ../gsl/gsl_statistics_float.h ../gsl/gsl_statistics_ulong.h \ + ../gsl/gsl_statistics_long.h ../gsl/gsl_statistics_uint.h \ + ../gsl/gsl_statistics_int.h ../gsl/gsl_statistics_ushort.h \ + ../gsl/gsl_statistics_short.h ../gsl/gsl_statistics_uchar.h \ + ../gsl/gsl_statistics_char.h ../gsl/gsl_test.h ../gsl/gsl_rng.h \ + ../gsl/gsl_ieee_utils.h ../gsl/gsl_filter.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_complex.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_movstat.h test_impulse.c \ + ../gsl/gsl_randist.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h test_gaussian.c test_median.c test_rmedian.c + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string.h: + +/usr/include/bits/string2.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_sort.h: + +../gsl/gsl_sort_long_double.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_permutation.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_sort_double.h: + +../gsl/gsl_sort_float.h: + +../gsl/gsl_sort_ulong.h: + +../gsl/gsl_sort_long.h: + +../gsl/gsl_sort_uint.h: + +../gsl/gsl_sort_int.h: + +../gsl/gsl_sort_ushort.h: + +../gsl/gsl_sort_short.h: + +../gsl/gsl_sort_uchar.h: + +../gsl/gsl_sort_char.h: + +../gsl/gsl_statistics.h: + +../gsl/gsl_statistics_long_double.h: + +../gsl/gsl_statistics_double.h: + +../gsl/gsl_statistics_float.h: + +../gsl/gsl_statistics_ulong.h: + +../gsl/gsl_statistics_long.h: + +../gsl/gsl_statistics_uint.h: + +../gsl/gsl_statistics_int.h: + +../gsl/gsl_statistics_ushort.h: + +../gsl/gsl_statistics_short.h: + +../gsl/gsl_statistics_uchar.h: + +../gsl/gsl_statistics_char.h: + +../gsl/gsl_test.h: + +../gsl/gsl_rng.h: + +../gsl/gsl_ieee_utils.h: + +../gsl/gsl_filter.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_movstat.h: + +test_impulse.c: + +../gsl/gsl_randist.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +test_gaussian.c: + +test_median.c: + +test_rmedian.c: diff --git a/gsl-2.5/filter/.libs/libgslfilter.la b/gsl-2.5/filter/.libs/libgslfilter.la new file mode 120000 index 00000000..3e4b81ec --- /dev/null +++ b/gsl-2.5/filter/.libs/libgslfilter.la @@ -0,0 +1 @@ +../libgslfilter.la \ No newline at end of file diff --git a/gsl-2.5/filter/Makefile b/gsl-2.5/filter/Makefile new file mode 100644 index 00000000..f2855f8b --- /dev/null +++ b/gsl-2.5/filter/Makefile @@ -0,0 +1,1035 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# filter/Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + + + + +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/gsl +pkgincludedir = $(includedir)/gsl +pkglibdir = $(libdir)/gsl +pkglibexecdir = $(libexecdir)/gsl +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = x86_64-unknown-linux-gnu +host_triplet = x86_64-unknown-linux-gnu +check_PROGRAMS = test$(EXEEXT) +subdir = filter +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp \ + $(noinst_HEADERS) $(pkginclude_HEADERS) \ + $(top_srcdir)/test-driver TODO +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +libgslfilter_la_LIBADD = +am_libgslfilter_la_OBJECTS = gaussian.lo impulse.lo median.lo \ + rmedian.lo +libgslfilter_la_OBJECTS = $(am_libgslfilter_la_OBJECTS) +AM_V_lt = $(am__v_lt_$(V)) +am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) +am__v_lt_0 = --silent +am__v_lt_1 = +am_test_OBJECTS = test.$(OBJEXT) +test_OBJECTS = $(am_test_OBJECTS) +test_DEPENDENCIES = libgslfilter.la ../movstat/libgslmovstat.la \ + ../statistics/libgslstatistics.la ../sort/libgslsort.la \ + ../ieee-utils/libgslieeeutils.la ../randist/libgslrandist.la \ + ../rng/libgslrng.la ../specfunc/libgslspecfunc.la \ + ../complex/libgslcomplex.la ../err/libgslerr.la \ + ../test/libgsltest.la ../vector/libgslvector.la \ + ../block/libgslblock.la ../poly/libgslpoly.la \ + ../sys/libgslsys.la ../utils/libutils.la +AM_V_P = $(am__v_P_$(V)) +am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY)) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_$(V)) +am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_$(V)) +am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I. -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_$(V)) +am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_$(V)) +am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libgslfilter_la_SOURCES) $(test_SOURCES) +DIST_SOURCES = $(libgslfilter_la_SOURCES) $(test_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(pkgincludedir)" +HEADERS = $(noinst_HEADERS) $(pkginclude_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = .test +LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing aclocal-1.13 +AMTAR = $${TAR-tar} +AM_DEFAULT_VERBOSITY = 1 +AR = ar +AS = as +AUTOCONF = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing autoconf +AUTOHEADER = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing autoheader +AUTOMAKE = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing automake-1.13 +AWK = gawk +CC = gcc +CCDEPMODE = depmode=gcc3 +CFLAGS = -g -O2 +CPP = gcc -E +CPPFLAGS = +CYGPATH_W = echo +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +DLLTOOL = false +DSYMUTIL = +DUMPBIN = +ECHO_C = +ECHO_N = -n +ECHO_T = +EGREP = /usr/bin/grep -E +EXEEXT = +FGREP = /usr/bin/grep -F +GREP = /usr/bin/grep +GSLCBLAS_LDFLAGS = +GSL_CFLAGS = -I${prefix}/include +GSL_LDFLAGS = +GSL_LIBADD = +GSL_LIBM = -lm +GSL_LIBS = -L${exec_prefix}/lib -lgsl +GSL_LT_CBLAS_VERSION = 0:0:0 +GSL_LT_VERSION = 24:0:1 +GSL_MAJOR_VERSION = 2 +GSL_MINOR_VERSION = 5 +HAVE_AIX_IEEE_INTERFACE = +HAVE_DARWIN86_IEEE_INTERFACE = +HAVE_DARWIN_IEEE_INTERFACE = +HAVE_FREEBSD_IEEE_INTERFACE = +HAVE_GNUM68K_IEEE_INTERFACE = +HAVE_GNUPPC_IEEE_INTERFACE = +HAVE_GNUSPARC_IEEE_INTERFACE = +HAVE_GNUX86_IEEE_INTERFACE = +HAVE_HPUX11_IEEE_INTERFACE = +HAVE_HPUX_IEEE_INTERFACE = +HAVE_IRIX_IEEE_INTERFACE = +HAVE_NETBSD_IEEE_INTERFACE = +HAVE_OPENBSD_IEEE_INTERFACE = +HAVE_OS2EMX_IEEE_INTERFACE = +HAVE_SOLARIS_IEEE_INTERFACE = +HAVE_SUNOS4_IEEE_INTERFACE = +HAVE_TRU64_IEEE_INTERFACE = +INSTALL = /usr/bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = $(install_sh) -c -s +LD = /usr/bin/ld -m elf_x86_64 +LDFLAGS = +LIBM = -lm +LIBOBJS = +LIBS = -lm +LIBTOOL = $(SHELL) $(top_builddir)/libtool +LIPO = +LN_S = ln -s +LTLIBOBJS = +MAINT = # +MAKEINFO = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing makeinfo +MANIFEST_TOOL = : +MKDIR_P = /usr/bin/mkdir -p +NM = /usr/bin/nm -B +NMEDIT = +OBJDUMP = objdump +OBJEXT = o +OTOOL = +OTOOL64 = +PACKAGE = gsl +PACKAGE_BUGREPORT = +PACKAGE_NAME = gsl +PACKAGE_STRING = gsl 2.5 +PACKAGE_TARNAME = gsl +PACKAGE_URL = +PACKAGE_VERSION = 2.5 +PATH_SEPARATOR = : +RANLIB = ranlib +SED = /usr/bin/sed +SET_MAKE = +SHELL = /bin/sh +STRIP = strip +VERSION = 2.5 +abs_builddir = /home/groups/kipac/chto/package/gsl/gsl-2.5/filter +abs_srcdir = /home/groups/kipac/chto/package/gsl/gsl-2.5/filter +abs_top_builddir = /home/groups/kipac/chto/package/gsl/gsl-2.5 +abs_top_srcdir = /home/groups/kipac/chto/package/gsl/gsl-2.5 +ac_ct_AR = ar +ac_ct_CC = gcc +ac_ct_DUMPBIN = +am__include = include +am__leading_dot = . +am__quote = +am__tar = $${TAR-tar} chof - "$$tardir" +am__untar = $${TAR-tar} xf - +bindir = ${exec_prefix}/bin +build = x86_64-unknown-linux-gnu +build_alias = +build_cpu = x86_64 +build_os = linux-gnu +build_vendor = unknown +builddir = . +datadir = ${datarootdir} +datarootdir = ${prefix}/share +docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} +dvidir = ${docdir} +exec_prefix = ${prefix} +host = x86_64-unknown-linux-gnu +host_alias = +host_cpu = x86_64 +host_os = linux-gnu +host_vendor = unknown +htmldir = ${docdir} +includedir = ${prefix}/include +infodir = ${datarootdir}/info +install_sh = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/install-sh +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +localedir = ${datarootdir}/locale +localstatedir = ${prefix}/var +mandir = ${datarootdir}/man +mkdir_p = $(MKDIR_P) +oldincludedir = /usr/include +pdfdir = ${docdir} +prefix = /home/groups/kipac/chto/package/gsl/gsl_lib +program_transform_name = s,x,x, +psdir = ${docdir} +sbindir = ${exec_prefix}/sbin +sharedstatedir = ${prefix}/com +srcdir = . +sysconfdir = ${prefix}/etc +target_alias = +top_build_prefix = ../ +top_builddir = .. +top_srcdir = .. +noinst_LTLIBRARIES = libgslfilter.la +pkginclude_HEADERS = gsl_filter.h +AM_CPPFLAGS = -I$(top_srcdir) +libgslfilter_la_SOURCES = gaussian.c impulse.c median.c rmedian.c +noinst_HEADERS = ringbuf.c test_impulse.c test_gaussian.c test_median.c test_rmedian.c +TESTS = $(check_PROGRAMS) +test_SOURCES = test.c +test_LDADD = libgslfilter.la ../movstat/libgslmovstat.la ../statistics/libgslstatistics.la ../sort/libgslsort.la ../ieee-utils/libgslieeeutils.la ../randist/libgslrandist.la ../rng/libgslrng.la ../specfunc/libgslspecfunc.la ../complex/libgslcomplex.la ../err/libgslerr.la ../test/libgsltest.la ../vector/libgslvector.la ../block/libgslblock.la ../poly/libgslpoly.la ../sys/libgslsys.la ../utils/libutils.la +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu filter/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu filter/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: # $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): # $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libgslfilter.la: $(libgslfilter_la_OBJECTS) $(libgslfilter_la_DEPENDENCIES) $(EXTRA_libgslfilter_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(libgslfilter_la_OBJECTS) $(libgslfilter_la_LIBADD) $(LIBS) + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) $(EXTRA_test_DEPENDENCIES) + @rm -f test$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_OBJECTS) $(test_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +include ./$(DEPDIR)/gaussian.Plo +include ./$(DEPDIR)/impulse.Plo +include ./$(DEPDIR)/median.Plo +include ./$(DEPDIR)/rmedian.Plo +include ./$(DEPDIR)/test.Po + +.c.o: + $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# $(AM_V_CC)source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(COMPILE) -c $< + +.c.obj: + $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# $(AM_V_CC)source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: + $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +# $(AM_V_CC)source='$<' object='$@' libtool=yes \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-pkgincludeHEADERS: $(pkginclude_HEADERS) + @$(NORMAL_INSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \ + done + +uninstall-pkgincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + else \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_PROGRAMS) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +test.log: test$(EXEEXT) + @p='test$(EXEEXT)'; \ + b='test'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +#.test$(EXEEXT).log: +# @p='$<'; \ +# $(am__set_b); \ +# $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +# --log-file $$b.log --trs-file $$b.trs \ +# $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +# "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-am +all-am: Makefile $(LTLIBRARIES) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(pkgincludedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-pkgincludeHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-pkgincludeHEADERS + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES cscopelist-am ctags ctags-am distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-pkgincludeHEADERS \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + recheck tags tags-am uninstall uninstall-am \ + uninstall-pkgincludeHEADERS + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gsl-2.5/filter/Makefile.am b/gsl-2.5/filter/Makefile.am new file mode 100644 index 00000000..76349769 --- /dev/null +++ b/gsl-2.5/filter/Makefile.am @@ -0,0 +1,15 @@ +noinst_LTLIBRARIES = libgslfilter.la + +pkginclude_HEADERS = gsl_filter.h + +AM_CPPFLAGS = -I$(top_srcdir) + +libgslfilter_la_SOURCES = gaussian.c impulse.c median.c rmedian.c + +noinst_HEADERS = ringbuf.c test_impulse.c test_gaussian.c test_median.c test_rmedian.c + +check_PROGRAMS = test +TESTS = $(check_PROGRAMS) + +test_SOURCES = test.c +test_LDADD = libgslfilter.la ../movstat/libgslmovstat.la ../statistics/libgslstatistics.la ../sort/libgslsort.la ../ieee-utils/libgslieeeutils.la ../randist/libgslrandist.la ../rng/libgslrng.la ../specfunc/libgslspecfunc.la ../complex/libgslcomplex.la ../err/libgslerr.la ../test/libgsltest.la ../vector/libgslvector.la ../block/libgslblock.la ../poly/libgslpoly.la ../sys/libgslsys.la ../utils/libutils.la diff --git a/gsl-2.5/filter/Makefile.in b/gsl-2.5/filter/Makefile.in new file mode 100644 index 00000000..b26cf8cb --- /dev/null +++ b/gsl-2.5/filter/Makefile.in @@ -0,0 +1,1035 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + + +VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +check_PROGRAMS = test$(EXEEXT) +subdir = filter +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp \ + $(noinst_HEADERS) $(pkginclude_HEADERS) \ + $(top_srcdir)/test-driver TODO +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +libgslfilter_la_LIBADD = +am_libgslfilter_la_OBJECTS = gaussian.lo impulse.lo median.lo \ + rmedian.lo +libgslfilter_la_OBJECTS = $(am_libgslfilter_la_OBJECTS) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +am_test_OBJECTS = test.$(OBJEXT) +test_OBJECTS = $(am_test_OBJECTS) +test_DEPENDENCIES = libgslfilter.la ../movstat/libgslmovstat.la \ + ../statistics/libgslstatistics.la ../sort/libgslsort.la \ + ../ieee-utils/libgslieeeutils.la ../randist/libgslrandist.la \ + ../rng/libgslrng.la ../specfunc/libgslspecfunc.la \ + ../complex/libgslcomplex.la ../err/libgslerr.la \ + ../test/libgsltest.la ../vector/libgslvector.la \ + ../block/libgslblock.la ../poly/libgslpoly.la \ + ../sys/libgslsys.la ../utils/libutils.la +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libgslfilter_la_SOURCES) $(test_SOURCES) +DIST_SOURCES = $(libgslfilter_la_SOURCES) $(test_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(pkgincludedir)" +HEADERS = $(noinst_HEADERS) $(pkginclude_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = @EXEEXT@ .test +LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +GSLCBLAS_LDFLAGS = @GSLCBLAS_LDFLAGS@ +GSL_CFLAGS = @GSL_CFLAGS@ +GSL_LDFLAGS = @GSL_LDFLAGS@ +GSL_LIBADD = @GSL_LIBADD@ +GSL_LIBM = @GSL_LIBM@ +GSL_LIBS = @GSL_LIBS@ +GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ +GSL_LT_VERSION = @GSL_LT_VERSION@ +GSL_MAJOR_VERSION = @GSL_MAJOR_VERSION@ +GSL_MINOR_VERSION = @GSL_MINOR_VERSION@ +HAVE_AIX_IEEE_INTERFACE = @HAVE_AIX_IEEE_INTERFACE@ +HAVE_DARWIN86_IEEE_INTERFACE = @HAVE_DARWIN86_IEEE_INTERFACE@ +HAVE_DARWIN_IEEE_INTERFACE = @HAVE_DARWIN_IEEE_INTERFACE@ +HAVE_FREEBSD_IEEE_INTERFACE = @HAVE_FREEBSD_IEEE_INTERFACE@ +HAVE_GNUM68K_IEEE_INTERFACE = @HAVE_GNUM68K_IEEE_INTERFACE@ +HAVE_GNUPPC_IEEE_INTERFACE = @HAVE_GNUPPC_IEEE_INTERFACE@ +HAVE_GNUSPARC_IEEE_INTERFACE = @HAVE_GNUSPARC_IEEE_INTERFACE@ +HAVE_GNUX86_IEEE_INTERFACE = @HAVE_GNUX86_IEEE_INTERFACE@ +HAVE_HPUX11_IEEE_INTERFACE = @HAVE_HPUX11_IEEE_INTERFACE@ +HAVE_HPUX_IEEE_INTERFACE = @HAVE_HPUX_IEEE_INTERFACE@ +HAVE_IRIX_IEEE_INTERFACE = @HAVE_IRIX_IEEE_INTERFACE@ +HAVE_NETBSD_IEEE_INTERFACE = @HAVE_NETBSD_IEEE_INTERFACE@ +HAVE_OPENBSD_IEEE_INTERFACE = @HAVE_OPENBSD_IEEE_INTERFACE@ +HAVE_OS2EMX_IEEE_INTERFACE = @HAVE_OS2EMX_IEEE_INTERFACE@ +HAVE_SOLARIS_IEEE_INTERFACE = @HAVE_SOLARIS_IEEE_INTERFACE@ +HAVE_SUNOS4_IEEE_INTERFACE = @HAVE_SUNOS4_IEEE_INTERFACE@ +HAVE_TRU64_IEEE_INTERFACE = @HAVE_TRU64_IEEE_INTERFACE@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBM = @LIBM@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +noinst_LTLIBRARIES = libgslfilter.la +pkginclude_HEADERS = gsl_filter.h +AM_CPPFLAGS = -I$(top_srcdir) +libgslfilter_la_SOURCES = gaussian.c impulse.c median.c rmedian.c +noinst_HEADERS = ringbuf.c test_impulse.c test_gaussian.c test_median.c test_rmedian.c +TESTS = $(check_PROGRAMS) +test_SOURCES = test.c +test_LDADD = libgslfilter.la ../movstat/libgslmovstat.la ../statistics/libgslstatistics.la ../sort/libgslsort.la ../ieee-utils/libgslieeeutils.la ../randist/libgslrandist.la ../rng/libgslrng.la ../specfunc/libgslspecfunc.la ../complex/libgslcomplex.la ../err/libgslerr.la ../test/libgsltest.la ../vector/libgslvector.la ../block/libgslblock.la ../poly/libgslpoly.la ../sys/libgslsys.la ../utils/libutils.la +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu filter/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu filter/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libgslfilter.la: $(libgslfilter_la_OBJECTS) $(libgslfilter_la_DEPENDENCIES) $(EXTRA_libgslfilter_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(libgslfilter_la_OBJECTS) $(libgslfilter_la_LIBADD) $(LIBS) + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) $(EXTRA_test_DEPENDENCIES) + @rm -f test$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_OBJECTS) $(test_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gaussian.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/impulse.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/median.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rmedian.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test.Po@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-pkgincludeHEADERS: $(pkginclude_HEADERS) + @$(NORMAL_INSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \ + done + +uninstall-pkgincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + else \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_PROGRAMS) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +test.log: test$(EXEEXT) + @p='test$(EXEEXT)'; \ + b='test'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +@am__EXEEXT_TRUE@.test$(EXEEXT).log: +@am__EXEEXT_TRUE@ @p='$<'; \ +@am__EXEEXT_TRUE@ $(am__set_b); \ +@am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +@am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ +@am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +@am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-am +all-am: Makefile $(LTLIBRARIES) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(pkgincludedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-pkgincludeHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-pkgincludeHEADERS + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES cscopelist-am ctags ctags-am distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-pkgincludeHEADERS \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + recheck tags tags-am uninstall uninstall-am \ + uninstall-pkgincludeHEADERS + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gsl-2.5/filter/TODO b/gsl-2.5/filter/TODO new file mode 100644 index 00000000..a69a6b04 --- /dev/null +++ b/gsl-2.5/filter/TODO @@ -0,0 +1,5 @@ +gaussian +- tests (derivative test) + +docs +- document gsl_filter_end_t diff --git a/gsl-2.5/filter/gaussian.c b/gsl-2.5/filter/gaussian.c new file mode 100644 index 00000000..d83c90e2 --- /dev/null +++ b/gsl-2.5/filter/gaussian.c @@ -0,0 +1,344 @@ +/* filter/gaussian.c + * + * Gaussian smoothing filters + * + * Copyright (C) 2018 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include + +#include +#include +#include +#include + +/* maximum derivative order allowed for Gaussian filter */ +#define GSL_FILTER_GAUSSIAN_MAX_ORDER 10 + +typedef double gaussian_type_t; +typedef double ringbuf_type_t; +#include "ringbuf.c" + +typedef struct +{ + size_t n; /* window size */ + double * window; /* linear array with current window */ + ringbuf * rbuf; /* ring buffer storing current window */ +} gaussian_state_t; + +static size_t gaussian_size(const size_t n); +static int gaussian_init(const size_t n, void * vstate); +static int gaussian_insert(const gaussian_type_t x, void * vstate); +static int gaussian_delete(void * vstate); +static int gaussian_get(void * params, gaussian_type_t * result, const void * vstate); + +static const gsl_movstat_accum gaussian_accum_type; + +/* +gsl_filter_gaussian_alloc() + Allocate a workspace for Gaussian filtering. + +Inputs: K - number of samples in window; if even, it is rounded up to + the next odd, to have a symmetric window + +Return: pointer to workspace +*/ + +gsl_filter_gaussian_workspace * +gsl_filter_gaussian_alloc(const size_t K) +{ + const size_t H = K / 2; + gsl_filter_gaussian_workspace *w; + size_t state_size; + + w = calloc(1, sizeof(gsl_filter_gaussian_workspace)); + if (w == 0) + { + GSL_ERROR_NULL ("failed to allocate space for workspace", GSL_ENOMEM); + } + + w->K = 2 * H + 1; + + w->kernel = malloc(w->K * sizeof(double)); + if (w->kernel == 0) + { + gsl_filter_gaussian_free(w); + GSL_ERROR_NULL ("failed to allocate space for kernel", GSL_ENOMEM); + return NULL; + } + + state_size = gaussian_size(w->K); + + w->movstat_workspace_p = gsl_movstat_alloc_with_size(state_size, H, H); + if (!w->movstat_workspace_p) + { + gsl_filter_gaussian_free(w); + GSL_ERROR_NULL ("failed to allocate space for movstat workspace", GSL_ENOMEM); + } + + return w; +} + +void +gsl_filter_gaussian_free(gsl_filter_gaussian_workspace * w) +{ + if (w->kernel) + free(w->kernel); + + if (w->movstat_workspace_p) + gsl_movstat_free(w->movstat_workspace_p); + + free(w); +} + +/* +gsl_filter_gaussian() + Apply a Gaussian filter to an input vector: + +G_{sigma}(x) = exp [ -x^2 / (2 sigma^2) ] + +Inputs: alpha - number of standard deviations to include in Gaussian kernel + order - derivative order of Gaussian + x - input vector, size n + y - (output) filtered vector, size n + w - workspace + +Notes: +1) If alpha = 3, then the Gaussian kernel will be a Gaussian of +/- 3 standard deviations +*/ + +int +gsl_filter_gaussian(const gsl_filter_end_t endtype, const double alpha, const size_t order, const gsl_vector * x, + gsl_vector * y, gsl_filter_gaussian_workspace * w) +{ + if (x->size != y->size) + { + GSL_ERROR("input and output vectors must have same length", GSL_EBADLEN); + } + else if (alpha <= 0.0) + { + GSL_ERROR("alpha must be positive", GSL_EDOM); + } + else + { + int status; + gsl_vector_view kernel = gsl_vector_view_array(w->kernel, w->K); + + /* construct Gaussian kernel of length K */ + gsl_filter_gaussian_kernel(alpha, order, 1, &kernel.vector); + + status = gsl_movstat_apply_accum(endtype, x, &gaussian_accum_type, (void *) w->kernel, y, + NULL, w->movstat_workspace_p); + + return status; + } +} + +/* +gsl_filter_gaussian_kernel() + Construct Gaussian kernel with given sigma and order + +Inputs: alpha - number of standard deviations to include in window + order - kernel order (0 = gaussian, 1 = first derivative, ...) + normalize - normalize so sum(G) = 1 + kernel - (output) Gaussian kernel + +Return: success/error + +Notes: +1) If alpha = 3, then the output kernel will contain a Gaussian with +/- 3 standard deviations +*/ + +int +gsl_filter_gaussian_kernel(const double alpha, const size_t order, const int normalize, gsl_vector * kernel) +{ + const size_t N = kernel->size; + + if (alpha <= 0.0) + { + GSL_ERROR("alpha must be positive", GSL_EDOM); + } + else if (order > GSL_FILTER_GAUSSIAN_MAX_ORDER) + { + GSL_ERROR("derivative order is too large", GSL_EDOM); + } + else + { + const double half = 0.5 * (N - 1.0); /* (N - 1) / 2 */ + double sum = 0.0; + size_t i; + + /* check for quick return */ + if (N == 1) + { + if (order == 0) + gsl_vector_set(kernel, 0, 1.0); + else + gsl_vector_set(kernel, 0, 0.0); + + return GSL_SUCCESS; + } + + for (i = 0; i < N; ++i) + { + double xi = ((double)i - half) / half; + double yi = alpha * xi; + double gi = exp(-0.5 * yi * yi); + + gsl_vector_set(kernel, i, gi); + sum += gi; + } + + /* normalize so sum(kernel) = 1 */ + if (normalize) + gsl_vector_scale(kernel, 1.0 / sum); + + if (order > 0) + { + const double beta = -0.5 * alpha * alpha; + double q[GSL_FILTER_GAUSSIAN_MAX_ORDER + 1]; + size_t k; + + /* + * Need to calculate derivatives of the Gaussian window; define + * + * w(n) = C * exp [ p(n) ] + * + * p(n) = beta * n^2 + * beta = -1/2 * ( alpha / ((N-1)/2) )^2 + * + * Then: + * + * d^k/dn^k w(n) = q_k(n) * w(n) + * + * where q_k(n) is a degree-k polynomial in n, which satisfies: + * + * q_k(n) = d/dn q_{k-1}(n) + q_{k-1}(n) * dp(n)/dn + * q_0(n) = 1 / half^{order} + */ + + /* initialize q_0(n) = 1 / half^{order} */ + q[0] = 1.0 / gsl_pow_uint(half, order); + for (i = 1; i <= GSL_FILTER_GAUSSIAN_MAX_ORDER; ++i) + q[i] = 0.0; + + /* loop through derivative orders and calculate q_k(n) for k = 1,...,order */ + for (k = 1; k <= order; ++k) + { + double qm1 = q[0]; + + q[0] = q[1]; + for (i = 1; i <= k; ++i) + { + double tmp = q[i]; + q[i] = (i + 1.0) * q[i + 1] + /* d/dn q_{k-1} */ + 2.0 * beta * qm1; /* q_{k-1}(n) p'(n) */ + qm1 = tmp; + } + } + + /* now set w(n) := q(n) * w(n) */ + for (i = 0; i < N; ++i) + { + double xi = ((double)i - half) / half; + double qn = gsl_poly_eval(q, order + 1, xi); + double *wn = gsl_vector_ptr(kernel, i); + + *wn *= qn; + } + } + + return GSL_SUCCESS; + } +} + +static size_t +gaussian_size(const size_t n) +{ + size_t size = 0; + + size += sizeof(gaussian_state_t); + size += n * sizeof(gaussian_type_t); + size += ringbuf_size(n); + + return size; +} + +static int +gaussian_init(const size_t n, void * vstate) +{ + gaussian_state_t * state = (gaussian_state_t *) vstate; + + state->n = n; + + state->window = (gaussian_type_t *) ((unsigned char *) vstate + sizeof(gaussian_state_t)); + state->rbuf = (ringbuf *) ((unsigned char *) state->window + n * sizeof(gaussian_type_t)); + + ringbuf_init(n, state->rbuf); + + return GSL_SUCCESS; +} + +static int +gaussian_insert(const gaussian_type_t x, void * vstate) +{ + gaussian_state_t * state = (gaussian_state_t *) vstate; + + /* add new element to ring buffer */ + ringbuf_insert(x, state->rbuf); + + return GSL_SUCCESS; +} + +static int +gaussian_delete(void * vstate) +{ + gaussian_state_t * state = (gaussian_state_t *) vstate; + + if (!ringbuf_is_empty(state->rbuf)) + ringbuf_pop_back(state->rbuf); + + return GSL_SUCCESS; +} + +static int +gaussian_get(void * params, gaussian_type_t * result, const void * vstate) +{ + const gaussian_state_t * state = (const gaussian_state_t *) vstate; + const double * kernel = (const double *) params; + size_t n = ringbuf_copy(state->window, state->rbuf); + double sum = 0.0; + size_t i; + + for (i = 0; i < n; ++i) + sum += state->window[i] * kernel[n - i - 1]; + + *result = sum; + + return GSL_SUCCESS; +} + +static const gsl_movstat_accum gaussian_accum_type = +{ + gaussian_size, + gaussian_init, + gaussian_insert, + gaussian_delete, + gaussian_get +}; diff --git a/gsl-2.5/filter/gaussian.lo b/gsl-2.5/filter/gaussian.lo new file mode 100644 index 00000000..68f4a1e9 --- /dev/null +++ b/gsl-2.5/filter/gaussian.lo @@ -0,0 +1,12 @@ +# gaussian.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/gaussian.o' + +# Name of the non-PIC object +non_pic_object='gaussian.o' + diff --git a/gsl-2.5/filter/gsl_filter.h b/gsl-2.5/filter/gsl_filter.h new file mode 100644 index 00000000..0339da26 --- /dev/null +++ b/gsl-2.5/filter/gsl_filter.h @@ -0,0 +1,109 @@ +/* filter/gsl_filter.h + * + * Copyright (C) 2018 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_FILTER_H__ +#define __GSL_FILTER_H__ + +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +/* end point handling methods */ +typedef enum +{ + GSL_FILTER_END_PADZERO = GSL_MOVSTAT_END_PADZERO, + GSL_FILTER_END_PADVALUE = GSL_MOVSTAT_END_PADVALUE, + GSL_FILTER_END_TRUNCATE = GSL_MOVSTAT_END_TRUNCATE +} gsl_filter_end_t; + +/* robust scale estimates */ +typedef enum +{ + GSL_FILTER_SCALE_MAD, /* median absolute deviation */ + GSL_FILTER_SCALE_IQR, /* interquartile range */ + GSL_FILTER_SCALE_SN, /* S_n scale statistic */ + GSL_FILTER_SCALE_QN /* Q_n scale statistic */ +} gsl_filter_scale_t; + +/* workspace for Gaussian filter */ +typedef struct +{ + size_t K; /* window size */ + double *kernel; /* Gaussian kernel, size K */ + gsl_movstat_workspace *movstat_workspace_p; +} gsl_filter_gaussian_workspace; + +gsl_filter_gaussian_workspace *gsl_filter_gaussian_alloc(const size_t K); +void gsl_filter_gaussian_free(gsl_filter_gaussian_workspace * w); +int gsl_filter_gaussian(const gsl_filter_end_t endtype, const double alpha, const size_t order, const gsl_vector * x, + gsl_vector * y, gsl_filter_gaussian_workspace * w); +int gsl_filter_gaussian_kernel(const double alpha, const size_t order, const int normalize, gsl_vector * kernel); + +/* workspace for standard median filter */ +typedef struct +{ + gsl_movstat_workspace *movstat_workspace_p; +} gsl_filter_median_workspace; + +gsl_filter_median_workspace *gsl_filter_median_alloc(const size_t K); +void gsl_filter_median_free(gsl_filter_median_workspace * w); +int gsl_filter_median(const gsl_filter_end_t endtype, const gsl_vector * x, gsl_vector * y, gsl_filter_median_workspace * w); + +/* workspace for recursive median filter */ +typedef struct +{ + size_t H; /* window half-length (K / 2) */ + size_t K; /* window size */ + void *state; /* workspace for min/max accumulator */ + double *window; /* array holding first window */ + const gsl_movstat_accum * minmaxacc; /* minimum/maximum accumulator */ + gsl_movstat_workspace *movstat_workspace_p; +} gsl_filter_rmedian_workspace; + +gsl_filter_rmedian_workspace *gsl_filter_rmedian_alloc(const size_t K); +void gsl_filter_rmedian_free(gsl_filter_rmedian_workspace * w); +int gsl_filter_rmedian(const gsl_filter_end_t, const gsl_vector * x, gsl_vector * y, gsl_filter_rmedian_workspace * w); +int gsl_filter_rmedian2(const gsl_vector * x, gsl_vector * y, gsl_filter_rmedian_workspace * w); + +typedef struct +{ + gsl_movstat_workspace *movstat_workspace_p; +} gsl_filter_impulse_workspace; + +gsl_filter_impulse_workspace *gsl_filter_impulse_alloc(const size_t K); +void gsl_filter_impulse_free(gsl_filter_impulse_workspace * w); +int gsl_filter_impulse(const gsl_filter_end_t endtype, const gsl_filter_scale_t scale_type, const double t, + const gsl_vector * x, gsl_vector * y, gsl_vector * xmedian, gsl_vector * xsigma, size_t * noutlier, + gsl_vector_int * ioutlier, gsl_filter_impulse_workspace * w); + +__END_DECLS + +#endif /* __GSL_FILTER_H__ */ diff --git a/gsl-2.5/filter/impulse.c b/gsl-2.5/filter/impulse.c new file mode 100644 index 00000000..f4077165 --- /dev/null +++ b/gsl-2.5/filter/impulse.c @@ -0,0 +1,283 @@ +/* filter/impulse.c + * + * Impulse detecting filters + * + * Copyright (C) 2018 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include + +#include +#include +#include + +static int filter_impulse(const double scale, const double epsilon, const double t, const gsl_vector * x, const gsl_vector * xmedian, + gsl_vector * y, gsl_vector * xsigma, size_t * noutlier, gsl_vector_int * ioutlier); + +/* +gsl_filter_impulse_alloc() + Allocate a workspace for impulse detection filtering. + +Inputs: K - number of samples in window; if even, it is rounded up to + the next odd, to have a symmetric window + +Return: pointer to workspace +*/ + +gsl_filter_impulse_workspace * +gsl_filter_impulse_alloc(const size_t K) +{ + gsl_filter_impulse_workspace *w; + + w = calloc(1, sizeof(gsl_filter_impulse_workspace)); + if (w == 0) + { + GSL_ERROR_NULL ("failed to allocate space for workspace", GSL_ENOMEM); + } + + w->movstat_workspace_p = gsl_movstat_alloc(K); + if (w->movstat_workspace_p == 0) + { + gsl_filter_impulse_free(w); + return NULL; + } + + return w; +} + +void +gsl_filter_impulse_free(gsl_filter_impulse_workspace * w) +{ + if (w->movstat_workspace_p) + gsl_movstat_free(w->movstat_workspace_p); + + free(w); +} + +/* +gsl_filter_impulse() + Apply an impulse detection filter to an input vector. The filter output is + +y_i = { x_i, |x_i - m_i| <= t * S_i + { m_i, |x_i - m_i| > t * S_i + +where m_i is the median of the window W_i^H and S_i is the scale estimate (MAD, IQR, S_n, Q_n) + +Inputs: endtype - how to handle signal end points + scale_type - which statistic to use for scale estimate (MAD, IQR, etc) + t - number of standard deviations required to identity outliers (>= 0) + x - input vector, size n + y - (output) filtered vector, size n + xmedian - (output) vector of median values of x, size n + xmedian_i = median of window centered on x_i + xsigma - (output) vector of estimated local standard deviations of x, size n + xsigma_i = sigma for i-th window: scale*MAD + noutlier - (output) number of outliers detected + ioutlier - (output) boolean array indicating outliers identified, size n; may be NULL + ioutlier_i = 1 if outlier detected, 0 if not + w - workspace + +Notes: +*/ + +int +gsl_filter_impulse(const gsl_filter_end_t endtype, const gsl_filter_scale_t scale_type, const double t, + const gsl_vector * x, gsl_vector * y, gsl_vector * xmedian, gsl_vector * xsigma, size_t * noutlier, + gsl_vector_int * ioutlier, gsl_filter_impulse_workspace * w) +{ + const size_t n = x->size; + + if (n != y->size) + { + GSL_ERROR("input and output vectors must have same length", GSL_EBADLEN); + } + else if (xmedian->size != n) + { + GSL_ERROR("xmedian vector must match input size", GSL_EBADLEN); + } + else if (xsigma->size != n) + { + GSL_ERROR("xsigma vector must match input size", GSL_EBADLEN); + } + else if ((ioutlier != NULL) && (ioutlier->size != n)) + { + GSL_ERROR("ioutlier vector must match input size", GSL_EBADLEN); + } + else if (t < 0.0) + { + GSL_ERROR("t must be non-negative", GSL_EDOM); + } + else + { + int status; + double scale = 1.0; + + switch (scale_type) + { + case GSL_FILTER_SCALE_MAD: + { + /* compute window medians and MADs */ + gsl_movstat_mad(endtype, x, xmedian, xsigma, w->movstat_workspace_p); + + break; + } + + case GSL_FILTER_SCALE_IQR: + { + /* multiplication factor for IQR to estimate stddev for Gaussian signal */ + scale = 0.741301109252801; + + /* calculate the window medians */ + gsl_movstat_median(endtype, x, xmedian, w->movstat_workspace_p); + + /* calculate window IQRs */ + gsl_movstat_qqr(endtype, x, 0.25, xsigma, w->movstat_workspace_p); + + break; + } + + case GSL_FILTER_SCALE_SN: + { + /* calculate the window medians */ + gsl_movstat_median(endtype, x, xmedian, w->movstat_workspace_p); + + /* calculate window S_n values */ + gsl_movstat_Sn(endtype, x, xsigma, w->movstat_workspace_p); + + break; + } + + case GSL_FILTER_SCALE_QN: + { + /* calculate the window medians */ + gsl_movstat_median(endtype, x, xmedian, w->movstat_workspace_p); + + /* calculate window Q_n values */ + gsl_movstat_Qn(endtype, x, xsigma, w->movstat_workspace_p); + + break; + } + + default: + GSL_ERROR("unknown scale type", GSL_EDOM); + break; + } + + /* apply impulse detecting filter using previously computed scale estimate */ + status = filter_impulse(scale, 0.0, t, x, xmedian, y, xsigma, noutlier, ioutlier); + + return status; + } +} + +/* +filter_impulse() + Apply an impulse detection filter to an input vector. The filter output is + +y_i = { x_i, |x_i - m_i| <= t * S_i OR S_i < epsilon + { m_i, |x_i - m_i| > t * S_i + +where m_i is the median of the window W_i^H and S_i is the scale estimate (MAD, IQR, etc) + +Inputs: scale - scale factor to multiply xsigma to get unbiased estimate of stddev for Gaussian data + epsilon - minimum allowed scale estimate for identifying outliers + t - number of standard deviations required to identity outliers (>= 0) + x - input vector, size n + xmedian - vector of median values of x, size n + xmedian_i = median of window centered on x_i + y - (output) filtered vector, size n + xsigma - (output) vector of estimated local standard deviations of x, size n + xsigma_i = S_n for i-th window + noutlier - (output) number of outliers detected + ioutlier - (output) boolean array indicating outliers identified, size n; may be NULL + ioutlier_i = 1 if outlier detected, 0 if not + +Notes: +1) If S_i = 0 or is very small for a particular sample, then the filter may erroneously flag the +sample as an outlier, since it will act as a standard median filter. To avoid this scenario, the +parameter epsilon specifies the minimum value of S_i which can be used in the filter test. Any +samples for which S_i < epsilon are passed through unchanged. +*/ + +static int +filter_impulse(const double scale, const double epsilon, const double t, const gsl_vector * x, const gsl_vector * xmedian, + gsl_vector * y, gsl_vector * xsigma, size_t * noutlier, gsl_vector_int * ioutlier) +{ + const size_t n = x->size; + + if (n != y->size) + { + GSL_ERROR("input and output vectors must have same length", GSL_EBADLEN); + } + else if (xmedian->size != n) + { + GSL_ERROR("xmedian vector must match input size", GSL_EBADLEN); + } + else if (xsigma->size != n) + { + GSL_ERROR("xsigma vector must match input size", GSL_EBADLEN); + } + else if ((ioutlier != NULL) && (ioutlier->size != n)) + { + GSL_ERROR("ioutlier vector must match input size", GSL_EBADLEN); + } + else if (t < 0.0) + { + GSL_ERROR("t must be non-negative", GSL_EDOM); + } + else + { + size_t i; + + *noutlier = 0; + + /* build output vector */ + for (i = 0; i < n; ++i) + { + double xi = gsl_vector_get(x, i); + double xmedi = gsl_vector_get(xmedian, i); + double absdevi = fabs(xi - xmedi); /* absolute deviation for this sample */ + double *xsigmai = gsl_vector_ptr(xsigma, i); + + /* multiply by scale factor to get estimate of standard deviation */ + *xsigmai *= scale; + + /* + * If the absolute deviation for this sample is more than t stddevs + * for this window (and S_i is sufficiently large to avoid scale implosion), + * set the output value to the window median, otherwise use the original sample + */ + if ((*xsigmai >= epsilon) && (absdevi > t * (*xsigmai))) + { + gsl_vector_set(y, i, xmedi); + ++(*noutlier); + if (ioutlier) + gsl_vector_int_set(ioutlier, i, 1); + } + else + { + gsl_vector_set(y, i, xi); + if (ioutlier) + gsl_vector_int_set(ioutlier, i, 0); + } + } + + return GSL_SUCCESS; + } +} diff --git a/gsl-2.5/filter/impulse.lo b/gsl-2.5/filter/impulse.lo new file mode 100644 index 00000000..0b877e2c --- /dev/null +++ b/gsl-2.5/filter/impulse.lo @@ -0,0 +1,12 @@ +# impulse.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/impulse.o' + +# Name of the non-PIC object +non_pic_object='impulse.o' + diff --git a/gsl-2.5/filter/libgslfilter.la b/gsl-2.5/filter/libgslfilter.la new file mode 100644 index 00000000..387fdd12 --- /dev/null +++ b/gsl-2.5/filter/libgslfilter.la @@ -0,0 +1,41 @@ +# libgslfilter.la - a libtool library file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='' + +# Names of this library. +library_names='' + +# The name of the static archive. +old_library='libgslfilter.a' + +# Linker flags that can not go in dependency_libs. +inherited_linker_flags='' + +# Libraries that this one depends upon. +dependency_libs=' -lm' + +# Names of additional weak libraries provided by this library +weak_library_names='' + +# Version information for libgslfilter. +current= +age= +revision= + +# Is this an already installed library? +installed=no + +# Should we warn about portability when linking against -modules? +shouldnotlink=no + +# Files to dlopen/dlpreopen +dlopen='' +dlpreopen='' + +# Directory that this library needs to be installed in: +libdir='' diff --git a/gsl-2.5/filter/median.c b/gsl-2.5/filter/median.c new file mode 100644 index 00000000..85b0c7ce --- /dev/null +++ b/gsl-2.5/filter/median.c @@ -0,0 +1,77 @@ +/* filter/median.c + * + * Contains routines related to the standard median filter + * + * Copyright (C) 2018 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include + +#include +#include +#include +#include + +gsl_filter_median_workspace * +gsl_filter_median_alloc(const size_t K) +{ + gsl_filter_median_workspace *w; + size_t H = K / 2; + + w = calloc(1, sizeof(gsl_filter_median_workspace)); + if (w == 0) + { + GSL_ERROR_NULL ("failed to allocate space for workspace", GSL_ENOMEM); + } + + w->movstat_workspace_p = gsl_movstat_alloc(2*H + 1); + if (w->movstat_workspace_p == NULL) + { + gsl_filter_median_free(w); + GSL_ERROR_NULL ("failed to allocate space for movstat workspace", GSL_ENOMEM); + } + + return w; +} + +void +gsl_filter_median_free(gsl_filter_median_workspace * w) +{ + if (w->movstat_workspace_p) + gsl_movstat_free(w->movstat_workspace_p); + + free(w); +} + +/* +gsl_filter_median() + Standard median filter + +Inputs: endtype - end point handling + x - input vector + y - output vector + w - workspace +*/ + +int +gsl_filter_median(const gsl_filter_end_t endtype, const gsl_vector * x, gsl_vector * y, gsl_filter_median_workspace * w) +{ + int status = gsl_movstat_median(endtype, x, y, w->movstat_workspace_p); + return status; +} diff --git a/gsl-2.5/filter/median.lo b/gsl-2.5/filter/median.lo new file mode 100644 index 00000000..f475946c --- /dev/null +++ b/gsl-2.5/filter/median.lo @@ -0,0 +1,12 @@ +# median.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/median.o' + +# Name of the non-PIC object +non_pic_object='median.o' + diff --git a/gsl-2.5/filter/ringbuf.c b/gsl-2.5/filter/ringbuf.c new file mode 100644 index 00000000..241dae64 --- /dev/null +++ b/gsl-2.5/filter/ringbuf.c @@ -0,0 +1,212 @@ +/* movstat/ringbuf.c + * + * Ring buffer module + * + * Copyright (C) 2018 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_RINGBUF_C__ +#define __GSL_RINGBUF_C__ + +/*typedef int ringbuf_type;*/ + +typedef struct +{ + ringbuf_type_t *array; + int head; + int tail; + int size; /* total elements allocated */ +} ringbuf; + +static size_t ringbuf_size(const size_t n); +static int ringbuf_empty(ringbuf * d); +static int ringbuf_is_empty(const ringbuf * d); +static int ringbuf_is_full(const ringbuf * d); +static int ringbuf_insert(const ringbuf_type_t x, ringbuf * d); +static int ringbuf_pop_back(ringbuf * b); +static ringbuf_type_t ringbuf_peek(const int i, const ringbuf * b); +static ringbuf_type_t ringbuf_peek_front(const ringbuf * d); +static ringbuf_type_t ringbuf_peek_back(const ringbuf * d); +static size_t ringbuf_copy(double * dest, const ringbuf * b); + +static size_t +ringbuf_size(const size_t n) +{ + size_t size = 0; + + size += sizeof(ringbuf); + size += n * sizeof(ringbuf_type_t); /* b->array */ + + return size; +} + +static int +ringbuf_init(const size_t n, ringbuf * b) +{ + b->array = (ringbuf_type_t *) ((char *) b + sizeof(ringbuf)); + b->head = -1; + b->tail = 0; + b->size = (int) n; + return GSL_SUCCESS; +} + +/* empty the buffer */ +static int +ringbuf_empty(ringbuf * b) +{ + b->head = -1; + b->tail = 0; + return GSL_SUCCESS; +} + +/* check if buffer is empty */ +static int +ringbuf_is_empty(const ringbuf * b) +{ + return (b->head == -1); +} + +/* check if buffer is full */ +static int +ringbuf_is_full(const ringbuf * b) +{ + return ((b->head == 0 && b->tail == b->size - 1) || + (b->head == b->tail + 1)); +} + +/* insert element into buffer, overwriting oldest element if necessary */ +static int +ringbuf_insert(const ringbuf_type_t x, ringbuf * b) +{ + if (b->head == -1) /* buffer is empty */ + { + b->head = 0; + b->tail = 0; + } + else if (b->head == 0) /* head is in first position, wrap to end */ + { + b->head = b->size - 1; + + if (b->tail == b->head && b->size > 1) + --(b->tail); /* buffer is full so decrease tail */ + } + else /* decrement head */ + { + --(b->head); + + if (b->tail == b->head) + { + /* buffer is full so update tail */ + if (b->tail == 0) + b->tail = b->size - 1; + else + --(b->tail); + } + } + + /* insert element */ + b->array[b->head] = x; + + return GSL_SUCCESS; +} + +static int +ringbuf_pop_back(ringbuf * b) +{ + if (ringbuf_is_empty(b) || b->tail < 0) + { + GSL_ERROR("buffer is empty", GSL_EBADLEN); + } + else + { + if (b->head == b->tail) /* buffer has only one element */ + { + b->head = -1; + b->tail = -1; + } + else if (b->tail == 0) /* tail is in first position, wrap to end */ + { + b->tail = b->size - 1; + } + else /* decrement tail */ + { + --(b->tail); + } + + return GSL_SUCCESS; + } +} + +static ringbuf_type_t +ringbuf_peek(const int i, const ringbuf * b) +{ + if (ringbuf_is_empty(b)) + { + GSL_ERROR("buffer is empty", GSL_EBADLEN); + } + else + { + return b->array[(b->head + i) % b->size]; + } +} + +static ringbuf_type_t +ringbuf_peek_front(const ringbuf * b) +{ + if (ringbuf_is_empty(b)) + { + GSL_ERROR("buffer is empty", GSL_EBADLEN); + } + else + { + return b->array[b->head]; + } +} + +static ringbuf_type_t +ringbuf_peek_back(const ringbuf * b) +{ + if (ringbuf_is_empty(b) || b->tail < 0) + { + GSL_ERROR("buffer is empty", GSL_EBADLEN); + } + else + { + return b->array[b->tail]; + } +} + +static size_t +ringbuf_copy(double * dest, const ringbuf * b) +{ + if (ringbuf_is_empty(b) || b->tail < 0) + { + return 0; + } + else + { + const int n = (b->head > b->tail) ? (b->size - b->head + b->tail + 1) : (b->tail - b->head + 1); + int i; + + for (i = 0; i < n; ++i) + dest[n - i - 1] = b->array[(b->head + i) % b->size]; + + return (size_t) n; + } +} + +#endif /* __GSL_RINGBUF_C__ */ diff --git a/gsl-2.5/filter/rmedian.c b/gsl-2.5/filter/rmedian.c new file mode 100644 index 00000000..b74c9933 --- /dev/null +++ b/gsl-2.5/filter/rmedian.c @@ -0,0 +1,226 @@ +/* filter/rmedian.c + * + * Copyright (C) 2018 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* + * This module contains routines related to the recursive median filter. The + * algorithm is based on this paper, + * + * [1] S-J Ko, Y. H. Lee, and A. T. Fam, Efficient Implementation of One-Dimensional + * Recursive Median Filters, IEEE Transactions on Circuits and Systems, Vol 37, + * No 11, 1990. + */ + +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +typedef struct +{ + const gsl_movstat_accum * minmax_acc; /* minimum/maximum accumulator */ + void *minmax_state; /* minimum/maximum accumulator workspace */ +} rmedian_state_t; + +static size_t rmedian_size(const size_t n); +static int rmedian_init(const size_t n, void * vstate); +static int rmedian_insert(const double x, void * vstate); +static int rmedian_delete(void * vstate); +static int rmedian_get(void * params, double * result, const void * vstate); + +static const gsl_movstat_accum rmedian_accum_type; + +gsl_filter_rmedian_workspace * +gsl_filter_rmedian_alloc(const size_t K) +{ + gsl_filter_rmedian_workspace *w; + size_t state_size; + + w = calloc(1, sizeof(gsl_filter_rmedian_workspace)); + if (w == 0) + { + GSL_ERROR_NULL ("failed to allocate space for workspace", GSL_ENOMEM); + } + + w->H = K / 2; + w->K = 2*w->H + 1; + w->minmaxacc = gsl_movstat_accum_minmax; + + w->window = malloc(w->K * sizeof(double)); + if (w->window == NULL) + { + gsl_filter_rmedian_free(w); + GSL_ERROR_NULL ("failed to allocate space for window", GSL_ENOMEM); + } + + state_size = rmedian_size(w->H + 1); + + w->state = malloc(state_size); + if (w->state == NULL) + { + gsl_filter_rmedian_free(w); + GSL_ERROR_NULL ("failed to allocate space for min/max state", GSL_ENOMEM); + } + + w->movstat_workspace_p = gsl_movstat_alloc_with_size(state_size, 0, w->H); + if (!w->movstat_workspace_p) + { + gsl_filter_rmedian_free(w); + GSL_ERROR_NULL ("failed to allocate space for movstat workspace", GSL_ENOMEM); + } + + return w; +} + +void +gsl_filter_rmedian_free(gsl_filter_rmedian_workspace * w) +{ + if (w->state) + free(w->state); + + if (w->window) + free(w->window); + + if (w->movstat_workspace_p) + gsl_movstat_free(w->movstat_workspace_p); + + free(w); +} + +/* +gsl_filter_rmedian() + Recursive median filter + +Inputs: endtype - end point handling + x - input vector + y - output vector + w - workspace +*/ + +int +gsl_filter_rmedian(const gsl_filter_end_t endtype, const gsl_vector * x, gsl_vector * y, gsl_filter_rmedian_workspace * w) +{ + if (x->size != y->size) + { + GSL_ERROR("input and output vectors must have same length", GSL_EBADLEN); + } + else + { + int status = GSL_SUCCESS; + const size_t n = x->size; + const int H = (int) w->H; + double yprev; + int wsize; + + /* find median of first window to initialize filter */ + wsize = gsl_movstat_fill(endtype, x, 0, H, H, w->window); + yprev = gsl_stats_median(w->window, 1, wsize); + gsl_vector_set(y, 0, yprev); + + if (x->size > 1) + { + gsl_vector_const_view xv = gsl_vector_const_subvector(x, 1, n - 1); + gsl_vector_view yv = gsl_vector_subvector(y, 1, n - 1); + + /* apply recursive median filter to x[2:end] */ + status = gsl_movstat_apply_accum(endtype, &xv.vector, &rmedian_accum_type, (void *) &yprev, &yv.vector, + NULL, w->movstat_workspace_p); + } + + return status; + } +} + +static size_t +rmedian_size(const size_t n) +{ + size_t size = 0; + const gsl_movstat_accum * acc = gsl_movstat_accum_minmax; + + size += sizeof(rmedian_state_t); + size += (acc->size)(n); + + return size; +} + +static int +rmedian_init(const size_t n, void * vstate) +{ + rmedian_state_t * state = (rmedian_state_t *) vstate; + + state->minmax_acc = gsl_movstat_accum_minmax; + state->minmax_state = (void *) ((unsigned char *) vstate + sizeof(rmedian_state_t)); + + (state->minmax_acc->init)(n, state->minmax_state); + + return GSL_SUCCESS; +} + +static int +rmedian_insert(const double x, void * vstate) +{ + rmedian_state_t * state = (rmedian_state_t *) vstate; + return (state->minmax_acc->insert)(x, state->minmax_state); +} + +static int +rmedian_delete(void * vstate) +{ + rmedian_state_t * state = (rmedian_state_t *) vstate; + return (state->minmax_acc->delete)(state->minmax_state); +} + +static int +rmedian_get(void * params, double * result, const void * vstate) +{ + const rmedian_state_t * state = (const rmedian_state_t *) vstate; + double *yprev = (double *) params; /* previous filter output */ + double y; /* new filter output */ + double xminmax[2]; + + /* get minimum/maximum values of {x_i,...,x_{i+H}} */ + (state->minmax_acc->get)(NULL, xminmax, state->minmax_state); + + /* y = median [ yprev, xmin, xmax ] */ + if (*yprev <= xminmax[0]) + y = xminmax[0]; + else if (*yprev <= xminmax[1]) + y = *yprev; + else + y = xminmax[1]; + + *result = y; + *yprev = y; + + return GSL_SUCCESS; +} + +static const gsl_movstat_accum rmedian_accum_type = +{ + rmedian_size, + rmedian_init, + rmedian_insert, + rmedian_delete, + rmedian_get +}; diff --git a/gsl-2.5/filter/rmedian.lo b/gsl-2.5/filter/rmedian.lo new file mode 100644 index 00000000..6543d620 --- /dev/null +++ b/gsl-2.5/filter/rmedian.lo @@ -0,0 +1,12 @@ +# rmedian.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/rmedian.o' + +# Name of the non-PIC object +non_pic_object='rmedian.o' + diff --git a/gsl-2.5/filter/test b/gsl-2.5/filter/test new file mode 100755 index 00000000..8565647c Binary files /dev/null and b/gsl-2.5/filter/test differ diff --git a/gsl-2.5/filter/test-suite.log b/gsl-2.5/filter/test-suite.log new file mode 100644 index 00000000..55f1c51d --- /dev/null +++ b/gsl-2.5/filter/test-suite.log @@ -0,0 +1,14 @@ +==================================== + gsl 2.5: filter/test-suite.log +==================================== + +# TOTAL: 1 +# PASS: 1 +# SKIP: 0 +# XFAIL: 0 +# FAIL: 0 +# XPASS: 0 +# ERROR: 0 + +.. contents:: :depth: 2 + diff --git a/gsl-2.5/filter/test.c b/gsl-2.5/filter/test.c new file mode 100644 index 00000000..2318e029 --- /dev/null +++ b/gsl-2.5/filter/test.c @@ -0,0 +1,82 @@ +/* filter/test.c + * + * Copyright (C) 2018 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/* compare two vectors */ +static void +compare_vectors(const double tol, const gsl_vector * v, const gsl_vector * expected, + const char * desc) +{ + const size_t n = v->size; + size_t i; + + for (i = 0; i < n; ++i) + { + double vi = gsl_vector_get(v, i); + double ui = gsl_vector_get(expected, i); + + gsl_test_rel(vi, ui, tol, "%s i=%zu", desc, i); + } +} + +/* generate random vector with elements in [-1,1] */ +static void +random_vector(gsl_vector * v, gsl_rng * r) +{ + size_t i; + + for (i = 0; i < v->size; ++i) + { + double vi = 2.0 * gsl_rng_uniform(r) - 1.0; /* in [-1,1] */ + gsl_vector_set(v, i, vi); + } +} + +#include "test_impulse.c" +#include "test_gaussian.c" +#include "test_median.c" +#include "test_rmedian.c" + +int +main() +{ + gsl_rng * r = gsl_rng_alloc(gsl_rng_default); + + test_gaussian(r); + + test_impulse(r); + test_median(r); + test_rmedian(r); + + gsl_rng_free(r); + + exit (gsl_test_summary()); +} diff --git a/gsl-2.5/filter/test.log b/gsl-2.5/filter/test.log new file mode 100644 index 00000000..00cb389a --- /dev/null +++ b/gsl-2.5/filter/test.log @@ -0,0 +1 @@ +Completed [146471/146471] diff --git a/gsl-2.5/filter/test.trs b/gsl-2.5/filter/test.trs new file mode 100644 index 00000000..3f0f396c --- /dev/null +++ b/gsl-2.5/filter/test.trs @@ -0,0 +1,4 @@ +:test-result: PASS +:global-test-result: PASS +:recheck: no +:copy-in-global-log: no diff --git a/gsl-2.5/filter/test_gaussian.c b/gsl-2.5/filter/test_gaussian.c new file mode 100644 index 00000000..eb8ef728 --- /dev/null +++ b/gsl-2.5/filter/test_gaussian.c @@ -0,0 +1,215 @@ +/* filter/test_gaussian.c + * + * Copyright (C) 2018 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include +#include + +/* compute Gaussian filter by explicitely constructing window and computing weighted sum */ +int +slow_gaussian(const gsl_filter_end_t etype, const double alpha, const size_t order, const gsl_vector * x, + gsl_vector * y, const size_t K) +{ + const size_t n = x->size; + const size_t H = K / 2; + double *window = malloc(K * sizeof(double)); + double *kernel = malloc(K * sizeof(double)); + gsl_vector_view k = gsl_vector_view_array(kernel, K); + size_t i; + + gsl_filter_gaussian_kernel(alpha, order, 1, &k.vector); + + for (i = 0; i < n; ++i) + { + size_t wsize = gsl_movstat_fill(etype, x, i, H, H, window); + double sum = 0.0; + size_t j; + + for (j = 0; j < wsize; ++j) + sum += window[j] * kernel[wsize - j - 1]; + + gsl_vector_set(y, i, sum); + } + + free(window); + free(kernel); + + return GSL_SUCCESS; +} + +static void +fdiff(const gsl_vector * x, gsl_vector * dx) +{ + const size_t N = x->size; + size_t i; + + for (i = 1; i < N - 1; ++i) + { + double xm1 = gsl_vector_get(x, i - 1); + double xp1 = gsl_vector_get(x, i + 1); + gsl_vector_set(dx, i, 0.5 * (xp1 - xm1)); + } + + gsl_vector_set(dx, 0, gsl_vector_get(x, 1) - gsl_vector_get(x, 0)); + gsl_vector_set(dx, N - 1, gsl_vector_get(x, N - 1) - gsl_vector_get(x, N - 2)); +} + +static void +test_gaussian_kernel(const double alpha, const size_t K) +{ + const size_t max_order = 3; + gsl_vector * kernel = gsl_vector_alloc(K); + gsl_vector * deriv = gsl_vector_alloc(K); + gsl_vector * deriv_fd = gsl_vector_alloc(K); + char buf[2048]; + size_t order; + + gsl_filter_gaussian_kernel(alpha, 0, 0, kernel); + + for (order = 1; order <= max_order; ++order) + { + gsl_filter_gaussian_kernel(alpha, order, 0, deriv); + fdiff(kernel, deriv_fd); + + sprintf(buf, "gaussian kernel order=%zu alpha=%g K=%zu", order, alpha, K); + compare_vectors(1.0e-2, deriv_fd, deriv, buf); + + gsl_vector_memcpy(kernel, deriv); + } + + gsl_vector_free(kernel); + gsl_vector_free(deriv); + gsl_vector_free(deriv_fd); +} + +static void +test_gaussian_proc(const double tol, const double alpha, const size_t order, const size_t n, const size_t K, + const gsl_filter_end_t etype, gsl_rng * rng_p) +{ + gsl_filter_gaussian_workspace * w = gsl_filter_gaussian_alloc(K); + gsl_vector * x = gsl_vector_alloc(n); + gsl_vector * y = gsl_vector_alloc(n); + gsl_vector * z = gsl_vector_alloc(n); + char buf[2048]; + + random_vector(x, rng_p); + + /* y = filter(x) with slow brute force method */ + slow_gaussian(etype, alpha, order, x, y, K); + + /* y = filter(x) with fast method */ + gsl_filter_gaussian(etype, alpha, order, x, z, w); + + /* test y = z */ + sprintf(buf, "n=%zu K=%zu endtype=%u alpha=%g order=%zu gaussian random", n, K, etype, alpha, order); + compare_vectors(tol, z, y, buf); + + /* z = filter(x) in-place */ + gsl_vector_memcpy(z, x); + gsl_filter_gaussian(etype, alpha, order, z, z, w); + + sprintf(buf, "n=%zu K=%zu endtype=%u alpha=%g order=%zu gaussian random in-place", n, K, etype, alpha, order); + compare_vectors(tol, z, y, buf); + + gsl_filter_gaussian_free(w); + gsl_vector_free(x); + gsl_vector_free(y); + gsl_vector_free(z); +} + +static void +test_gaussian_deriv(const double alpha, const size_t n, const size_t K) +{ +#if 0 + const double f_low = 1.0; + const double f_high = 50.0; + const double gamma = 2.0 * M_PI / (n - 1.0); + const double dt = 1.0 / (n - 1.0); + gsl_vector *x = gsl_vector_alloc(n); + gsl_vector *dx = gsl_vector_alloc(n); + gsl_vector *y1 = gsl_vector_alloc(n); + gsl_vector *y2 = gsl_vector_alloc(n); + gsl_filter_gaussian_workspace *w = gsl_filter_gaussian_alloc(K); + size_t i; + + /* make input signal composed of two sine waves at different frequencies */ + for (i = 0; i < n; ++i) + { + double xi = sin(gamma * f_low * i) + sin(gamma * f_high * i); + double dxi = gamma * f_low * cos(gamma * f_low * i) + + gamma * f_high * cos(gamma * f_high * i); + + gsl_vector_set(x, i, xi); + gsl_vector_set(dx, i, dxi); + } + + /* compute y1 = G * dx(t)/dt */ + gsl_filter_gaussian(alpha, 0, dx, y1, w); + + /* compute y2 = dG/dt * x(t) */ + gsl_filter_gaussian(alpha, 1, x, y2, w); + + for (i = 0; i < n; ++i) + { + printf("%zu %.12e %.12e %.12e %.12e\n", + i, + gsl_vector_get(x, i), + gsl_vector_get(dx, i), + gsl_vector_get(y1, i), + gsl_vector_get(y2, i)); + } + + gsl_vector_free(x); + gsl_vector_free(dx); + gsl_vector_free(y1); + gsl_vector_free(y2); + gsl_filter_gaussian_free(w); +#endif +} + +static void +test_gaussian(gsl_rng * r) +{ + const double tol = 1.0e-10; + size_t order; + + test_gaussian_kernel(3.0, 2001); + + for (order = 0; order <= 3; ++order) + { + test_gaussian_proc(tol, 2.5, order, 1000, 21, GSL_FILTER_END_PADZERO, r); + test_gaussian_proc(tol, 3.0, order, 500, 11, GSL_FILTER_END_PADZERO, r); + test_gaussian_proc(tol, 1.0, order, 50, 101, GSL_FILTER_END_PADZERO, r); + test_gaussian_proc(tol, 2.0, order, 50, 11, GSL_FILTER_END_PADZERO, r); + + test_gaussian_proc(tol, 2.5, order, 1000, 21, GSL_FILTER_END_PADVALUE, r); + test_gaussian_proc(tol, 3.0, order, 500, 11, GSL_FILTER_END_PADVALUE, r); + test_gaussian_proc(tol, 1.0, order, 50, 101, GSL_FILTER_END_PADVALUE, r); + test_gaussian_proc(tol, 2.0, order, 50, 11, GSL_FILTER_END_PADVALUE, r); + + test_gaussian_proc(tol, 2.5, order, 1000, 21, GSL_FILTER_END_TRUNCATE, r); + test_gaussian_proc(tol, 3.0, order, 500, 11, GSL_FILTER_END_TRUNCATE, r); + test_gaussian_proc(tol, 1.0, order, 50, 101, GSL_FILTER_END_TRUNCATE, r); + test_gaussian_proc(tol, 2.0, order, 50, 11, GSL_FILTER_END_TRUNCATE, r); + } +} diff --git a/gsl-2.5/filter/test_impulse.c b/gsl-2.5/filter/test_impulse.c new file mode 100644 index 00000000..c3abfddd --- /dev/null +++ b/gsl-2.5/filter/test_impulse.c @@ -0,0 +1,156 @@ +/* filter/test_impulse.c + * + * Copyright (C) 2018 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include +#include + +static int +vector_sum(const gsl_vector_int * v) +{ + size_t i; + int sum = 0; + + for (i = 0; i < v->size; ++i) + { + int vi = gsl_vector_int_get(v, i); + sum += vi; + } + + return sum; +} + +static void +test_impulse_proc(const double tol, const size_t n, const size_t K, const double nsigma, + const gsl_filter_end_t etype, const gsl_filter_scale_t stype, + const double outlier_percentage, gsl_rng * r) +{ + gsl_vector * x = gsl_vector_alloc(n); + gsl_vector * y = gsl_vector_alloc(n); + gsl_vector * z = gsl_vector_alloc(n); + gsl_vector * y_med = gsl_vector_alloc(n); + gsl_vector * xmedian = gsl_vector_alloc(n); + gsl_vector * xsigma = gsl_vector_alloc(n); + size_t noutlier; + gsl_vector_int * ioutlier = gsl_vector_int_alloc(n); + gsl_vector_int * ioutlier_exact = gsl_vector_int_alloc(n); + size_t i; + gsl_filter_impulse_workspace *impulse_p = gsl_filter_impulse_alloc(K); + gsl_filter_median_workspace *median_p = gsl_filter_median_alloc(K); + size_t noutlier_exact = 0; + char buf[1024]; + + gsl_vector_int_set_zero(ioutlier_exact); + + for (i = 0; i < n; ++i) + { + double xi = gsl_ran_gaussian(r, 1.0); + double vi = gsl_rng_uniform(r); + + if (vi <= outlier_percentage) + { + xi += 15.0 * GSL_SIGN(xi); + ++noutlier_exact; + gsl_vector_int_set(ioutlier_exact, i, 1); + } + + gsl_vector_set(x, i, xi); + } + + /* first test that median filter is equal to impulse filter with nsigma = 0 */ + + gsl_filter_median(etype, x, y_med, median_p); + gsl_filter_impulse(etype, stype, 0.0, x, y, xmedian, xsigma, &noutlier, ioutlier, impulse_p); + + sprintf(buf, "impulse nsigma=0 smf comparison, etype=%u stype=%u", etype, stype); + compare_vectors(tol, y, y_med, buf); + + /* second test: filter y = impulse(x) with given nsigma */ + + gsl_filter_impulse(etype, stype, nsigma, x, y, xmedian, xsigma, &noutlier, ioutlier, impulse_p); + + /* test correct number of outliers detected */ + gsl_test(noutlier != noutlier_exact, "impulse [n=%zu,K=%zu,nsigma=%g,outlier_percentage=%g] noutlier=%zu exact=%zu", + n, K, nsigma, outlier_percentage, noutlier, noutlier_exact); + +#if 0 + { + for (i = 0; i < n; ++i) + { + printf("%.12e %.12e %d %.12e %.12e\n", + gsl_vector_get(x, i), + gsl_vector_get(y, i), + gsl_vector_int_get(ioutlier, i), + gsl_vector_get(xmedian, i) + nsigma * gsl_vector_get(xsigma, i), + gsl_vector_get(xmedian, i) - nsigma * gsl_vector_get(xsigma, i)); + } + } +#endif + + /* test outliers found in correct locations */ + for (i = 0; i < n; ++i) + { + int val = gsl_vector_int_get(ioutlier, i); + int val_exact = gsl_vector_int_get(ioutlier_exact, i); + + gsl_test(val != val_exact, "test_impulse: outlier mismatch [i=%zu,K=%zu,nsigma=%g,outlier_percentage=%g] ioutlier=%d ioutlier_exact=%d", + i, K, nsigma, outlier_percentage, val, val_exact); + } + + /* test noutlier = sum(ioutlier) */ + { + size_t iout_sum = vector_sum(ioutlier); + gsl_test(noutlier != iout_sum, "impulse [K=%zu,nsigma=%g,outlier_percentage=%g] noutlier=%zu sum(ioutlier)=%zu", + K, nsigma, outlier_percentage, noutlier, iout_sum); + } + + /* third test: test in-place filter z = impulse(z) */ + + gsl_vector_memcpy(z, x); + gsl_filter_impulse(etype, stype, nsigma, z, z, xmedian, xsigma, &noutlier, ioutlier, impulse_p); + + sprintf(buf, "impulse in-place nsigma=%g,n=%zu,K=%zu,etype=%u stype=%u", nsigma, n, K, etype, stype); + compare_vectors(GSL_DBL_EPSILON, z, y, buf); + + gsl_vector_free(x); + gsl_vector_free(y); + gsl_vector_free(z); + gsl_vector_free(y_med); + gsl_vector_free(xmedian); + gsl_vector_free(xsigma); + gsl_vector_int_free(ioutlier); + gsl_vector_int_free(ioutlier_exact); + gsl_filter_impulse_free(impulse_p); + gsl_filter_median_free(median_p); +} + +static void +test_impulse(gsl_rng * r) +{ + const double tol = 1.0e-10; + + test_impulse_proc(tol, 1000, 21, 6.0, GSL_FILTER_END_TRUNCATE, GSL_FILTER_SCALE_QN, 0.05, r); + test_impulse_proc(tol, 1000, 21, 6.0, GSL_FILTER_END_TRUNCATE, GSL_FILTER_SCALE_SN, 0.05, r); + test_impulse_proc(tol, 1000, 21, 6.0, GSL_FILTER_END_TRUNCATE, GSL_FILTER_SCALE_MAD, 0.05, r); + test_impulse_proc(tol, 1000, 21, 6.0, GSL_FILTER_END_TRUNCATE, GSL_FILTER_SCALE_IQR, 0.05, r); +} diff --git a/gsl-2.5/filter/test_median.c b/gsl-2.5/filter/test_median.c new file mode 100644 index 00000000..61c20ce1 --- /dev/null +++ b/gsl-2.5/filter/test_median.c @@ -0,0 +1,115 @@ +/* filter/test_median.c + * + * Copyright (C) 2018 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include +#include + +/* compute filtered data by explicitely constructing window, sorting it and finding median */ +int +slow_movmedian(const gsl_filter_end_t etype, const gsl_vector * x, gsl_vector * y, const int K) +{ + const size_t H = K / 2; + const size_t n = x->size; + double *window = malloc(K * sizeof(double)); + size_t i; + + for (i = 0; i < n; ++i) + { + size_t wsize = gsl_movstat_fill(etype, x, i, H, H, window); + double yi = gsl_stats_median(window, 1, wsize); + + gsl_vector_set(y, i, yi); + } + + free(window); + + return GSL_SUCCESS; +} + +static void +test_median_proc(const double tol, const size_t n, const size_t K, + const gsl_filter_end_t etype, gsl_rng *rng_p) +{ + gsl_filter_median_workspace *w = gsl_filter_median_alloc(K); + gsl_vector *x = gsl_vector_alloc(n); + gsl_vector *y = gsl_vector_alloc(n); + gsl_vector *z = gsl_vector_alloc(n); + char buf[2048]; + + /* test moving median with random input */ + random_vector(x, rng_p); + + /* y = median(x) with slow brute force algorithm */ + slow_movmedian(etype, x, y, K); + + /* z = median(x) */ + gsl_filter_median(etype, x, z, w); + + /* test y = z */ + sprintf(buf, "n=%zu K=%zu endtype=%u median random", n, K, etype); + compare_vectors(tol, z, y, buf); + + /* z = median(x) in-place */ + gsl_vector_memcpy(z, x); + gsl_filter_median(etype, z, z, w); + + sprintf(buf, "n=%zu K=%zu endtype=%u median random in-place", n, K, etype); + compare_vectors(tol, z, y, buf); + + gsl_vector_free(x); + gsl_vector_free(y); + gsl_vector_free(z); + gsl_filter_median_free(w); +} + +static void +test_median(gsl_rng * rng_p) +{ + test_median_proc(GSL_DBL_EPSILON, 1000, 1, GSL_MOVSTAT_END_PADZERO, rng_p); + test_median_proc(GSL_DBL_EPSILON, 1000, 3, GSL_MOVSTAT_END_PADZERO, rng_p); + test_median_proc(GSL_DBL_EPSILON, 1000, 5, GSL_MOVSTAT_END_PADZERO, rng_p); + test_median_proc(GSL_DBL_EPSILON, 100, 301, GSL_MOVSTAT_END_PADZERO, rng_p); + test_median_proc(GSL_DBL_EPSILON, 5000, 17, GSL_MOVSTAT_END_PADZERO, rng_p); + test_median_proc(GSL_DBL_EPSILON, 5000, 9, GSL_MOVSTAT_END_PADZERO, rng_p); + test_median_proc(GSL_DBL_EPSILON, 50, 901, GSL_MOVSTAT_END_PADZERO, rng_p); + test_median_proc(GSL_DBL_EPSILON, 50, 201, GSL_MOVSTAT_END_PADZERO, rng_p); + + test_median_proc(GSL_DBL_EPSILON, 1000, 1, GSL_MOVSTAT_END_PADVALUE, rng_p); + test_median_proc(GSL_DBL_EPSILON, 1000, 3, GSL_MOVSTAT_END_PADVALUE, rng_p); + test_median_proc(GSL_DBL_EPSILON, 1000, 5, GSL_MOVSTAT_END_PADVALUE, rng_p); + test_median_proc(GSL_DBL_EPSILON, 100, 301, GSL_MOVSTAT_END_PADVALUE, rng_p); + test_median_proc(GSL_DBL_EPSILON, 5000, 17, GSL_MOVSTAT_END_PADVALUE, rng_p); + test_median_proc(GSL_DBL_EPSILON, 5000, 9, GSL_MOVSTAT_END_PADVALUE, rng_p); + test_median_proc(GSL_DBL_EPSILON, 50, 901, GSL_MOVSTAT_END_PADVALUE, rng_p); + test_median_proc(GSL_DBL_EPSILON, 50, 201, GSL_MOVSTAT_END_PADVALUE, rng_p); + + test_median_proc(GSL_DBL_EPSILON, 1000, 1, GSL_MOVSTAT_END_TRUNCATE, rng_p); + test_median_proc(GSL_DBL_EPSILON, 1000, 3, GSL_MOVSTAT_END_TRUNCATE, rng_p); + test_median_proc(GSL_DBL_EPSILON, 1000, 5, GSL_MOVSTAT_END_TRUNCATE, rng_p); + test_median_proc(GSL_DBL_EPSILON, 100, 301, GSL_MOVSTAT_END_TRUNCATE, rng_p); + test_median_proc(GSL_DBL_EPSILON, 5000, 17, GSL_MOVSTAT_END_TRUNCATE, rng_p); + test_median_proc(GSL_DBL_EPSILON, 5000, 9, GSL_MOVSTAT_END_TRUNCATE, rng_p); + test_median_proc(GSL_DBL_EPSILON, 50, 901, GSL_MOVSTAT_END_TRUNCATE, rng_p); + test_median_proc(GSL_DBL_EPSILON, 50, 201, GSL_MOVSTAT_END_TRUNCATE, rng_p); +} diff --git a/gsl-2.5/filter/test_rmedian.c b/gsl-2.5/filter/test_rmedian.c new file mode 100644 index 00000000..f64d75ae --- /dev/null +++ b/gsl-2.5/filter/test_rmedian.c @@ -0,0 +1,159 @@ +/* filter/test_rmedian.c + * + * Copyright (C) 2018 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include + +/* slow/dumb rmedian which constructs actual window for each sample, sorts + * it and finds median */ +static int +slow_rmedian(const gsl_filter_end_t endtype, const gsl_vector * x, gsl_vector * y, const int K) +{ + const int n = (int) x->size; + const int H = K / 2; + double *window = malloc(K * sizeof(double)); + int i; + + for (i = 0; i < n; ++i) + { + size_t wsize = gsl_movstat_fill(endtype, x, i, H, H, window); + double yi; + int j; + + /* fill first half of window with previous filter output values */ + for (j = i - H; j < i; ++j) + { + if (j < 0) + { + if (endtype == GSL_FILTER_END_PADVALUE) + window[j - i + H] = gsl_vector_get(x, 0); + else if (endtype == GSL_FILTER_END_PADZERO) + window[j - i + H] = 0.0; + } + else + { + window[j - i + H] = gsl_vector_get(y, j); + } + } + + yi = gsl_stats_median(window, 1, wsize); + gsl_vector_set(y, i, yi); + } + + free(window); + + return GSL_SUCCESS; +} + +/* test square wave input (root signal) */ +static void +test_rmedian_root(const gsl_filter_end_t etype, const size_t n, const size_t k) +{ + const double tol = 1.0e-12; + gsl_filter_rmedian_workspace *w = gsl_filter_rmedian_alloc(k); + gsl_vector *x = gsl_vector_alloc(n); + gsl_vector *y = gsl_vector_alloc(n); + char buf[2048]; + size_t i; + + /* test a root sequence (square input): x = [zero one zero] */ + gsl_vector_set_all(x, 0.0); + + for (i = n / 3; i <= n / 2; ++i) + gsl_vector_set(x, i, 1.0); + + /* compute y = rmedian(x) and test y = x */ + gsl_filter_rmedian(etype, x, y, w); + + sprintf(buf, "n=%zu k=%zu RMF square wave root sequence", n, k); + compare_vectors(tol, y, x, buf); + + gsl_vector_free(x); + gsl_vector_free(y); + gsl_filter_rmedian_free(w); +} + +/* test random input and in-place */ +static void +test_rmedian_random(const gsl_filter_end_t etype, const size_t n, const int K, gsl_rng * r) +{ + const double tol = 1.0e-12; + gsl_filter_rmedian_workspace *w = gsl_filter_rmedian_alloc(K); + gsl_vector *x = gsl_vector_alloc(n); + gsl_vector *y = gsl_vector_alloc(n); + gsl_vector *z = gsl_vector_alloc(n); + char buf[2048]; + + /* test filter with random input against slow algorithm */ + random_vector(x, r); + + /* y = rmedian(x) */ + gsl_filter_rmedian(etype, x, y, w); + + /* y = rmedian(x) with slow algorithm */ + slow_rmedian(etype, x, z, K); + + /* test y = z */ + sprintf(buf, "n=%zu K=%d RMF symmetric random slow test", n, K); + compare_vectors(tol, y, z, buf); + + /* test in-place filter */ + + /* z = rmedian(x) in-place */ + gsl_vector_memcpy(z, x); + gsl_filter_rmedian(etype, z, z, w); + + sprintf(buf, "n=%zu K=%d RMF symmetric random in-place", n, K); + compare_vectors(tol, z, y, buf); + + gsl_vector_free(x); + gsl_vector_free(y); + gsl_vector_free(z); + gsl_filter_rmedian_free(w); +} + +void +test_rmedian(gsl_rng * rng_p) +{ + /* test root sequences */ + + test_rmedian_root(GSL_FILTER_END_PADZERO, 1000, 3); + test_rmedian_root(GSL_FILTER_END_PADZERO, 2000, 101); + + test_rmedian_root(GSL_FILTER_END_PADVALUE, 1000, 3); + test_rmedian_root(GSL_FILTER_END_PADVALUE, 2000, 101); + + /* test random input */ + + test_rmedian_random(GSL_FILTER_END_PADZERO, 10, 1, rng_p); + test_rmedian_random(GSL_FILTER_END_PADZERO, 100, 3, rng_p); + test_rmedian_random(GSL_FILTER_END_PADZERO, 1000, 3, rng_p); + test_rmedian_random(GSL_FILTER_END_PADZERO, 100, 1001, rng_p); + test_rmedian_random(GSL_FILTER_END_PADZERO, 5, 7, rng_p); + + test_rmedian_random(GSL_FILTER_END_PADVALUE, 10, 1, rng_p); + test_rmedian_random(GSL_FILTER_END_PADVALUE, 100, 3, rng_p); + test_rmedian_random(GSL_FILTER_END_PADVALUE, 1000, 3, rng_p); + test_rmedian_random(GSL_FILTER_END_PADVALUE, 100, 1001, rng_p); + test_rmedian_random(GSL_FILTER_END_PADVALUE, 5, 7, rng_p); +} diff --git a/gsl-2.5/fit/.deps/linear.Plo b/gsl-2.5/fit/.deps/linear.Plo new file mode 100644 index 00000000..1762a541 --- /dev/null +++ b/gsl-2.5/fit/.deps/linear.Plo @@ -0,0 +1,172 @@ +linear.lo: linear.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_errno.h /usr/include/stdio.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_types.h ../gsl/gsl_fit.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_nan.h ../gsl/gsl_pow_int.h \ + ../gsl/gsl_minmax.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_fit.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: diff --git a/gsl-2.5/fit/.deps/test.Po b/gsl-2.5/fit/.deps/test.Po new file mode 100644 index 00000000..575a05f7 --- /dev/null +++ b/gsl-2.5/fit/.deps/test.Po @@ -0,0 +1,160 @@ +test.o: test.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_test.h \ + ../gsl/gsl_fit.h ../gsl/gsl_ieee_utils.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_test.h: + +../gsl/gsl_fit.h: + +../gsl/gsl_ieee_utils.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: diff --git a/gsl-2.5/fit/.libs/libgslfit.la b/gsl-2.5/fit/.libs/libgslfit.la new file mode 120000 index 00000000..bda19669 --- /dev/null +++ b/gsl-2.5/fit/.libs/libgslfit.la @@ -0,0 +1 @@ +../libgslfit.la \ No newline at end of file diff --git a/gsl-2.5/fit/ChangeLog b/gsl-2.5/fit/ChangeLog new file mode 100644 index 00000000..5e5e2077 --- /dev/null +++ b/gsl-2.5/fit/ChangeLog @@ -0,0 +1,18 @@ +2008-07-03 Brian Gough + + * Makefile.am (INCLUDES): use top_srcdir instead of top_builddir + +2007-05-23 Brian Gough + + * gsl_fit.h linear.c (gsl_fit_mul_est, gsl_fit_linear_est): made + parameters in prototypes for _est functions consistent, + c00->cov00, c01->cov01, c11 -> cov11 + +2004-12-23 Brian Gough + + * gsl_fit.h: remove unused declarations + +Tue Sep 19 19:09:46 2000 Brian Gough + + * fit/test.c (main): removed unused variables + diff --git a/gsl-2.5/fit/Makefile b/gsl-2.5/fit/Makefile new file mode 100644 index 00000000..f3888a66 --- /dev/null +++ b/gsl-2.5/fit/Makefile @@ -0,0 +1,1027 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# fit/Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + + + + +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/gsl +pkgincludedir = $(includedir)/gsl +pkglibdir = $(libdir)/gsl +pkglibexecdir = $(libexecdir)/gsl +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = x86_64-unknown-linux-gnu +host_triplet = x86_64-unknown-linux-gnu +check_PROGRAMS = test$(EXEEXT) +subdir = fit +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp \ + $(pkginclude_HEADERS) $(top_srcdir)/test-driver ChangeLog +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +libgslfit_la_LIBADD = +am_libgslfit_la_OBJECTS = linear.lo +libgslfit_la_OBJECTS = $(am_libgslfit_la_OBJECTS) +AM_V_lt = $(am__v_lt_$(V)) +am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) +am__v_lt_0 = --silent +am__v_lt_1 = +am_test_OBJECTS = test.$(OBJEXT) +test_OBJECTS = $(am_test_OBJECTS) +test_DEPENDENCIES = libgslfit.la ../ieee-utils/libgslieeeutils.la \ + ../err/libgslerr.la ../test/libgsltest.la ../utils/libutils.la \ + ../sys/libgslsys.la +AM_V_P = $(am__v_P_$(V)) +am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY)) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_$(V)) +am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_$(V)) +am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I. -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_$(V)) +am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_$(V)) +am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libgslfit_la_SOURCES) $(test_SOURCES) +DIST_SOURCES = $(libgslfit_la_SOURCES) $(test_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(pkgincludedir)" +HEADERS = $(pkginclude_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = .test +LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing aclocal-1.13 +AMTAR = $${TAR-tar} +AM_DEFAULT_VERBOSITY = 1 +AR = ar +AS = as +AUTOCONF = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing autoconf +AUTOHEADER = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing autoheader +AUTOMAKE = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing automake-1.13 +AWK = gawk +CC = gcc +CCDEPMODE = depmode=gcc3 +CFLAGS = -g -O2 +CPP = gcc -E +CPPFLAGS = +CYGPATH_W = echo +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +DLLTOOL = false +DSYMUTIL = +DUMPBIN = +ECHO_C = +ECHO_N = -n +ECHO_T = +EGREP = /usr/bin/grep -E +EXEEXT = +FGREP = /usr/bin/grep -F +GREP = /usr/bin/grep +GSLCBLAS_LDFLAGS = +GSL_CFLAGS = -I${prefix}/include +GSL_LDFLAGS = +GSL_LIBADD = +GSL_LIBM = -lm +GSL_LIBS = -L${exec_prefix}/lib -lgsl +GSL_LT_CBLAS_VERSION = 0:0:0 +GSL_LT_VERSION = 24:0:1 +GSL_MAJOR_VERSION = 2 +GSL_MINOR_VERSION = 5 +HAVE_AIX_IEEE_INTERFACE = +HAVE_DARWIN86_IEEE_INTERFACE = +HAVE_DARWIN_IEEE_INTERFACE = +HAVE_FREEBSD_IEEE_INTERFACE = +HAVE_GNUM68K_IEEE_INTERFACE = +HAVE_GNUPPC_IEEE_INTERFACE = +HAVE_GNUSPARC_IEEE_INTERFACE = +HAVE_GNUX86_IEEE_INTERFACE = +HAVE_HPUX11_IEEE_INTERFACE = +HAVE_HPUX_IEEE_INTERFACE = +HAVE_IRIX_IEEE_INTERFACE = +HAVE_NETBSD_IEEE_INTERFACE = +HAVE_OPENBSD_IEEE_INTERFACE = +HAVE_OS2EMX_IEEE_INTERFACE = +HAVE_SOLARIS_IEEE_INTERFACE = +HAVE_SUNOS4_IEEE_INTERFACE = +HAVE_TRU64_IEEE_INTERFACE = +INSTALL = /usr/bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = $(install_sh) -c -s +LD = /usr/bin/ld -m elf_x86_64 +LDFLAGS = +LIBM = -lm +LIBOBJS = +LIBS = -lm +LIBTOOL = $(SHELL) $(top_builddir)/libtool +LIPO = +LN_S = ln -s +LTLIBOBJS = +MAINT = # +MAKEINFO = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing makeinfo +MANIFEST_TOOL = : +MKDIR_P = /usr/bin/mkdir -p +NM = /usr/bin/nm -B +NMEDIT = +OBJDUMP = objdump +OBJEXT = o +OTOOL = +OTOOL64 = +PACKAGE = gsl +PACKAGE_BUGREPORT = +PACKAGE_NAME = gsl +PACKAGE_STRING = gsl 2.5 +PACKAGE_TARNAME = gsl +PACKAGE_URL = +PACKAGE_VERSION = 2.5 +PATH_SEPARATOR = : +RANLIB = ranlib +SED = /usr/bin/sed +SET_MAKE = +SHELL = /bin/sh +STRIP = strip +VERSION = 2.5 +abs_builddir = /home/groups/kipac/chto/package/gsl/gsl-2.5/fit +abs_srcdir = /home/groups/kipac/chto/package/gsl/gsl-2.5/fit +abs_top_builddir = /home/groups/kipac/chto/package/gsl/gsl-2.5 +abs_top_srcdir = /home/groups/kipac/chto/package/gsl/gsl-2.5 +ac_ct_AR = ar +ac_ct_CC = gcc +ac_ct_DUMPBIN = +am__include = include +am__leading_dot = . +am__quote = +am__tar = $${TAR-tar} chof - "$$tardir" +am__untar = $${TAR-tar} xf - +bindir = ${exec_prefix}/bin +build = x86_64-unknown-linux-gnu +build_alias = +build_cpu = x86_64 +build_os = linux-gnu +build_vendor = unknown +builddir = . +datadir = ${datarootdir} +datarootdir = ${prefix}/share +docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} +dvidir = ${docdir} +exec_prefix = ${prefix} +host = x86_64-unknown-linux-gnu +host_alias = +host_cpu = x86_64 +host_os = linux-gnu +host_vendor = unknown +htmldir = ${docdir} +includedir = ${prefix}/include +infodir = ${datarootdir}/info +install_sh = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/install-sh +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +localedir = ${datarootdir}/locale +localstatedir = ${prefix}/var +mandir = ${datarootdir}/man +mkdir_p = $(MKDIR_P) +oldincludedir = /usr/include +pdfdir = ${docdir} +prefix = /home/groups/kipac/chto/package/gsl/gsl_lib +program_transform_name = s,x,x, +psdir = ${docdir} +sbindir = ${exec_prefix}/sbin +sharedstatedir = ${prefix}/com +srcdir = . +sysconfdir = ${prefix}/etc +target_alias = +top_build_prefix = ../ +top_builddir = .. +top_srcdir = .. +noinst_LTLIBRARIES = libgslfit.la +pkginclude_HEADERS = gsl_fit.h +AM_CPPFLAGS = -I$(top_srcdir) +libgslfit_la_SOURCES = linear.c +TESTS = $(check_PROGRAMS) +test_SOURCES = test.c +test_LDADD = libgslfit.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../utils/libutils.la ../sys/libgslsys.la +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu fit/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu fit/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: # $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): # $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libgslfit.la: $(libgslfit_la_OBJECTS) $(libgslfit_la_DEPENDENCIES) $(EXTRA_libgslfit_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(libgslfit_la_OBJECTS) $(libgslfit_la_LIBADD) $(LIBS) + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) $(EXTRA_test_DEPENDENCIES) + @rm -f test$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_OBJECTS) $(test_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +include ./$(DEPDIR)/linear.Plo +include ./$(DEPDIR)/test.Po + +.c.o: + $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# $(AM_V_CC)source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(COMPILE) -c $< + +.c.obj: + $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# $(AM_V_CC)source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: + $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +# $(AM_V_CC)source='$<' object='$@' libtool=yes \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-pkgincludeHEADERS: $(pkginclude_HEADERS) + @$(NORMAL_INSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \ + done + +uninstall-pkgincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + else \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_PROGRAMS) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +test.log: test$(EXEEXT) + @p='test$(EXEEXT)'; \ + b='test'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +#.test$(EXEEXT).log: +# @p='$<'; \ +# $(am__set_b); \ +# $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +# --log-file $$b.log --trs-file $$b.trs \ +# $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +# "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-am +all-am: Makefile $(LTLIBRARIES) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(pkgincludedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-pkgincludeHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-pkgincludeHEADERS + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES cscopelist-am ctags ctags-am distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-pkgincludeHEADERS \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + recheck tags tags-am uninstall uninstall-am \ + uninstall-pkgincludeHEADERS + + +#demo_SOURCES = demo.c +#demo_LDADD = libgslfit.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../utils/libutils.la ../sys/libgslsys.la + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gsl-2.5/fit/Makefile.am b/gsl-2.5/fit/Makefile.am new file mode 100644 index 00000000..345276b0 --- /dev/null +++ b/gsl-2.5/fit/Makefile.am @@ -0,0 +1,18 @@ +noinst_LTLIBRARIES = libgslfit.la + +pkginclude_HEADERS = gsl_fit.h + +AM_CPPFLAGS = -I$(top_srcdir) + +libgslfit_la_SOURCES = linear.c + +check_PROGRAMS = test #demo + +TESTS = $(check_PROGRAMS) + +test_SOURCES = test.c +test_LDADD = libgslfit.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../utils/libutils.la ../sys/libgslsys.la + +#demo_SOURCES = demo.c +#demo_LDADD = libgslfit.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../utils/libutils.la ../sys/libgslsys.la + diff --git a/gsl-2.5/fit/Makefile.in b/gsl-2.5/fit/Makefile.in new file mode 100644 index 00000000..4ae39845 --- /dev/null +++ b/gsl-2.5/fit/Makefile.in @@ -0,0 +1,1027 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + + +VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +check_PROGRAMS = test$(EXEEXT) +subdir = fit +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp \ + $(pkginclude_HEADERS) $(top_srcdir)/test-driver ChangeLog +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +libgslfit_la_LIBADD = +am_libgslfit_la_OBJECTS = linear.lo +libgslfit_la_OBJECTS = $(am_libgslfit_la_OBJECTS) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +am_test_OBJECTS = test.$(OBJEXT) +test_OBJECTS = $(am_test_OBJECTS) +test_DEPENDENCIES = libgslfit.la ../ieee-utils/libgslieeeutils.la \ + ../err/libgslerr.la ../test/libgsltest.la ../utils/libutils.la \ + ../sys/libgslsys.la +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libgslfit_la_SOURCES) $(test_SOURCES) +DIST_SOURCES = $(libgslfit_la_SOURCES) $(test_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(pkgincludedir)" +HEADERS = $(pkginclude_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = @EXEEXT@ .test +LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +GSLCBLAS_LDFLAGS = @GSLCBLAS_LDFLAGS@ +GSL_CFLAGS = @GSL_CFLAGS@ +GSL_LDFLAGS = @GSL_LDFLAGS@ +GSL_LIBADD = @GSL_LIBADD@ +GSL_LIBM = @GSL_LIBM@ +GSL_LIBS = @GSL_LIBS@ +GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ +GSL_LT_VERSION = @GSL_LT_VERSION@ +GSL_MAJOR_VERSION = @GSL_MAJOR_VERSION@ +GSL_MINOR_VERSION = @GSL_MINOR_VERSION@ +HAVE_AIX_IEEE_INTERFACE = @HAVE_AIX_IEEE_INTERFACE@ +HAVE_DARWIN86_IEEE_INTERFACE = @HAVE_DARWIN86_IEEE_INTERFACE@ +HAVE_DARWIN_IEEE_INTERFACE = @HAVE_DARWIN_IEEE_INTERFACE@ +HAVE_FREEBSD_IEEE_INTERFACE = @HAVE_FREEBSD_IEEE_INTERFACE@ +HAVE_GNUM68K_IEEE_INTERFACE = @HAVE_GNUM68K_IEEE_INTERFACE@ +HAVE_GNUPPC_IEEE_INTERFACE = @HAVE_GNUPPC_IEEE_INTERFACE@ +HAVE_GNUSPARC_IEEE_INTERFACE = @HAVE_GNUSPARC_IEEE_INTERFACE@ +HAVE_GNUX86_IEEE_INTERFACE = @HAVE_GNUX86_IEEE_INTERFACE@ +HAVE_HPUX11_IEEE_INTERFACE = @HAVE_HPUX11_IEEE_INTERFACE@ +HAVE_HPUX_IEEE_INTERFACE = @HAVE_HPUX_IEEE_INTERFACE@ +HAVE_IRIX_IEEE_INTERFACE = @HAVE_IRIX_IEEE_INTERFACE@ +HAVE_NETBSD_IEEE_INTERFACE = @HAVE_NETBSD_IEEE_INTERFACE@ +HAVE_OPENBSD_IEEE_INTERFACE = @HAVE_OPENBSD_IEEE_INTERFACE@ +HAVE_OS2EMX_IEEE_INTERFACE = @HAVE_OS2EMX_IEEE_INTERFACE@ +HAVE_SOLARIS_IEEE_INTERFACE = @HAVE_SOLARIS_IEEE_INTERFACE@ +HAVE_SUNOS4_IEEE_INTERFACE = @HAVE_SUNOS4_IEEE_INTERFACE@ +HAVE_TRU64_IEEE_INTERFACE = @HAVE_TRU64_IEEE_INTERFACE@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBM = @LIBM@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +noinst_LTLIBRARIES = libgslfit.la +pkginclude_HEADERS = gsl_fit.h +AM_CPPFLAGS = -I$(top_srcdir) +libgslfit_la_SOURCES = linear.c +TESTS = $(check_PROGRAMS) +test_SOURCES = test.c +test_LDADD = libgslfit.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../utils/libutils.la ../sys/libgslsys.la +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu fit/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu fit/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libgslfit.la: $(libgslfit_la_OBJECTS) $(libgslfit_la_DEPENDENCIES) $(EXTRA_libgslfit_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(libgslfit_la_OBJECTS) $(libgslfit_la_LIBADD) $(LIBS) + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) $(EXTRA_test_DEPENDENCIES) + @rm -f test$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_OBJECTS) $(test_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/linear.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test.Po@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-pkgincludeHEADERS: $(pkginclude_HEADERS) + @$(NORMAL_INSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \ + done + +uninstall-pkgincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + else \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_PROGRAMS) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +test.log: test$(EXEEXT) + @p='test$(EXEEXT)'; \ + b='test'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +@am__EXEEXT_TRUE@.test$(EXEEXT).log: +@am__EXEEXT_TRUE@ @p='$<'; \ +@am__EXEEXT_TRUE@ $(am__set_b); \ +@am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +@am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ +@am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +@am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-am +all-am: Makefile $(LTLIBRARIES) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(pkgincludedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-pkgincludeHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-pkgincludeHEADERS + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES cscopelist-am ctags ctags-am distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-pkgincludeHEADERS \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + recheck tags tags-am uninstall uninstall-am \ + uninstall-pkgincludeHEADERS + + +#demo_SOURCES = demo.c +#demo_LDADD = libgslfit.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../utils/libutils.la ../sys/libgslsys.la + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gsl-2.5/fit/gsl_fit.h b/gsl-2.5/fit/gsl_fit.h new file mode 100644 index 00000000..de83a41d --- /dev/null +++ b/gsl-2.5/fit/gsl_fit.h @@ -0,0 +1,85 @@ +/* fit/gsl_fit.h + * + * Copyright (C) 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_FIT_H__ +#define __GSL_FIT_H__ + +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +int gsl_fit_linear (const double * x, const size_t xstride, + const double * y, const size_t ystride, + const size_t n, + double * c0, double * c1, + double * cov00, double * cov01, double * cov11, + double * sumsq); + + +int gsl_fit_wlinear (const double * x, const size_t xstride, + const double * w, const size_t wstride, + const double * y, const size_t ystride, + const size_t n, + double * c0, double * c1, + double * cov00, double * cov01, double * cov11, + double * chisq); + +int +gsl_fit_linear_est (const double x, + const double c0, const double c1, + const double cov00, const double cov01, const double cov11, + double *y, double *y_err); + + +int gsl_fit_mul (const double * x, const size_t xstride, + const double * y, const size_t ystride, + const size_t n, + double * c1, + double * cov11, + double * sumsq); + +int gsl_fit_wmul (const double * x, const size_t xstride, + const double * w, const size_t wstride, + const double * y, const size_t ystride, + const size_t n, + double * c1, + double * cov11, + double * sumsq); + + +int +gsl_fit_mul_est (const double x, + const double c1, + const double cov11, + double *y, double *y_err); + +__END_DECLS + +#endif /* __GSL_FIT_H__ */ diff --git a/gsl-2.5/fit/libgslfit.la b/gsl-2.5/fit/libgslfit.la new file mode 100644 index 00000000..66b29a40 --- /dev/null +++ b/gsl-2.5/fit/libgslfit.la @@ -0,0 +1,41 @@ +# libgslfit.la - a libtool library file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='' + +# Names of this library. +library_names='' + +# The name of the static archive. +old_library='libgslfit.a' + +# Linker flags that can not go in dependency_libs. +inherited_linker_flags='' + +# Libraries that this one depends upon. +dependency_libs=' -lm' + +# Names of additional weak libraries provided by this library +weak_library_names='' + +# Version information for libgslfit. +current= +age= +revision= + +# Is this an already installed library? +installed=no + +# Should we warn about portability when linking against -modules? +shouldnotlink=no + +# Files to dlopen/dlpreopen +dlopen='' +dlpreopen='' + +# Directory that this library needs to be installed in: +libdir='' diff --git a/gsl-2.5/fit/linear.c b/gsl-2.5/fit/linear.c new file mode 100644 index 00000000..7ee17230 --- /dev/null +++ b/gsl-2.5/fit/linear.c @@ -0,0 +1,346 @@ +/* fit/linear.c + * + * Copyright (C) 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include + +/* Fit the data (x_i, y_i) to the linear relationship + + Y = c0 + c1 x + + returning, + + c0, c1 -- coefficients + cov00, cov01, cov11 -- variance-covariance matrix of c0 and c1, + sumsq -- sum of squares of residuals + + This fit can be used in the case where the errors for the data are + uknown, but assumed equal for all points. The resulting + variance-covariance matrix estimates the error in the coefficients + from the observed variance of the points around the best fit line. +*/ + +int +gsl_fit_linear (const double *x, const size_t xstride, + const double *y, const size_t ystride, + const size_t n, + double *c0, double *c1, + double *cov_00, double *cov_01, double *cov_11, double *sumsq) +{ + double m_x = 0, m_y = 0, m_dx2 = 0, m_dxdy = 0; + + size_t i; + + for (i = 0; i < n; i++) + { + m_x += (x[i * xstride] - m_x) / (i + 1.0); + m_y += (y[i * ystride] - m_y) / (i + 1.0); + } + + for (i = 0; i < n; i++) + { + const double dx = x[i * xstride] - m_x; + const double dy = y[i * ystride] - m_y; + + m_dx2 += (dx * dx - m_dx2) / (i + 1.0); + m_dxdy += (dx * dy - m_dxdy) / (i + 1.0); + } + + /* In terms of y = a + b x */ + + { + double s2 = 0, d2 = 0; + double b = m_dxdy / m_dx2; + double a = m_y - m_x * b; + + *c0 = a; + *c1 = b; + + /* Compute chi^2 = \sum (y_i - (a + b * x_i))^2 */ + + for (i = 0; i < n; i++) + { + const double dx = x[i * xstride] - m_x; + const double dy = y[i * ystride] - m_y; + const double d = dy - b * dx; + d2 += d * d; + } + + s2 = d2 / (n - 2.0); /* chisq per degree of freedom */ + + *cov_00 = s2 * (1.0 / n) * (1 + m_x * m_x / m_dx2); + *cov_11 = s2 * 1.0 / (n * m_dx2); + + *cov_01 = s2 * (-m_x) / (n * m_dx2); + + *sumsq = d2; + } + + return GSL_SUCCESS; +} + + +/* Fit the weighted data (x_i, w_i, y_i) to the linear relationship + + Y = c0 + c1 x + + returning, + + c0, c1 -- coefficients + s0, s1 -- the standard deviations of c0 and c1, + r -- the correlation coefficient between c0 and c1, + chisq -- weighted sum of squares of residuals */ + +int +gsl_fit_wlinear (const double *x, const size_t xstride, + const double *w, const size_t wstride, + const double *y, const size_t ystride, + const size_t n, + double *c0, double *c1, + double *cov_00, double *cov_01, double *cov_11, + double *chisq) +{ + + /* compute the weighted means and weighted deviations from the means */ + + /* wm denotes a "weighted mean", wm(f) = (sum_i w_i f_i) / (sum_i w_i) */ + + double W = 0, wm_x = 0, wm_y = 0, wm_dx2 = 0, wm_dxdy = 0; + + size_t i; + + for (i = 0; i < n; i++) + { + const double wi = w[i * wstride]; + + if (wi > 0) + { + W += wi; + wm_x += (x[i * xstride] - wm_x) * (wi / W); + wm_y += (y[i * ystride] - wm_y) * (wi / W); + } + } + + W = 0; /* reset the total weight */ + + for (i = 0; i < n; i++) + { + const double wi = w[i * wstride]; + + if (wi > 0) + { + const double dx = x[i * xstride] - wm_x; + const double dy = y[i * ystride] - wm_y; + + W += wi; + wm_dx2 += (dx * dx - wm_dx2) * (wi / W); + wm_dxdy += (dx * dy - wm_dxdy) * (wi / W); + } + } + + /* In terms of y = a + b x */ + + { + double d2 = 0; + double b = wm_dxdy / wm_dx2; + double a = wm_y - wm_x * b; + + *c0 = a; + *c1 = b; + + *cov_00 = (1 / W) * (1 + wm_x * wm_x / wm_dx2); + *cov_11 = 1 / (W * wm_dx2); + + *cov_01 = -wm_x / (W * wm_dx2); + + /* Compute chi^2 = \sum w_i (y_i - (a + b * x_i))^2 */ + + for (i = 0; i < n; i++) + { + const double wi = w[i * wstride]; + + if (wi > 0) + { + const double dx = x[i * xstride] - wm_x; + const double dy = y[i * ystride] - wm_y; + const double d = dy - b * dx; + d2 += wi * d * d; + } + } + + *chisq = d2; + } + + return GSL_SUCCESS; +} + + + +int +gsl_fit_linear_est (const double x, + const double c0, const double c1, + const double cov00, const double cov01, const double cov11, + double *y, double *y_err) +{ + *y = c0 + c1 * x; + *y_err = sqrt (cov00 + x * (2 * cov01 + cov11 * x)); + return GSL_SUCCESS; +} + + +int +gsl_fit_mul (const double *x, const size_t xstride, + const double *y, const size_t ystride, + const size_t n, + double *c1, double *cov_11, double *sumsq) +{ + double m_x = 0, m_y = 0, m_dx2 = 0, m_dxdy = 0; + + size_t i; + + for (i = 0; i < n; i++) + { + m_x += (x[i * xstride] - m_x) / (i + 1.0); + m_y += (y[i * ystride] - m_y) / (i + 1.0); + } + + for (i = 0; i < n; i++) + { + const double dx = x[i * xstride] - m_x; + const double dy = y[i * ystride] - m_y; + + m_dx2 += (dx * dx - m_dx2) / (i + 1.0); + m_dxdy += (dx * dy - m_dxdy) / (i + 1.0); + } + + /* In terms of y = b x */ + + { + double s2 = 0, d2 = 0; + double b = (m_x * m_y + m_dxdy) / (m_x * m_x + m_dx2); + + *c1 = b; + + /* Compute chi^2 = \sum (y_i - b * x_i)^2 */ + + for (i = 0; i < n; i++) + { + const double dx = x[i * xstride] - m_x; + const double dy = y[i * ystride] - m_y; + const double d = (m_y - b * m_x) + dy - b * dx; + d2 += d * d; + } + + s2 = d2 / (n - 1.0); /* chisq per degree of freedom */ + + *cov_11 = s2 * 1.0 / (n * (m_x * m_x + m_dx2)); + + *sumsq = d2; + } + + return GSL_SUCCESS; +} + + +int +gsl_fit_wmul (const double *x, const size_t xstride, + const double *w, const size_t wstride, + const double *y, const size_t ystride, + const size_t n, + double *c1, double *cov_11, double *chisq) +{ + + /* compute the weighted means and weighted deviations from the means */ + + /* wm denotes a "weighted mean", wm(f) = (sum_i w_i f_i) / (sum_i w_i) */ + + double W = 0, wm_x = 0, wm_y = 0, wm_dx2 = 0, wm_dxdy = 0; + + size_t i; + + for (i = 0; i < n; i++) + { + const double wi = w[i * wstride]; + + if (wi > 0) + { + W += wi; + wm_x += (x[i * xstride] - wm_x) * (wi / W); + wm_y += (y[i * ystride] - wm_y) * (wi / W); + } + } + + W = 0; /* reset the total weight */ + + for (i = 0; i < n; i++) + { + const double wi = w[i * wstride]; + + if (wi > 0) + { + const double dx = x[i * xstride] - wm_x; + const double dy = y[i * ystride] - wm_y; + + W += wi; + wm_dx2 += (dx * dx - wm_dx2) * (wi / W); + wm_dxdy += (dx * dy - wm_dxdy) * (wi / W); + } + } + + /* In terms of y = b x */ + + { + double d2 = 0; + double b = (wm_x * wm_y + wm_dxdy) / (wm_x * wm_x + wm_dx2); + + *c1 = b; + + *cov_11 = 1 / (W * (wm_x * wm_x + wm_dx2)); + + /* Compute chi^2 = \sum w_i (y_i - b * x_i)^2 */ + + for (i = 0; i < n; i++) + { + const double wi = w[i * wstride]; + + if (wi > 0) + { + const double dx = x[i * xstride] - wm_x; + const double dy = y[i * ystride] - wm_y; + const double d = (wm_y - b * wm_x) + (dy - b * dx); + d2 += wi * d * d; + } + } + + *chisq = d2; + } + + return GSL_SUCCESS; +} + +int +gsl_fit_mul_est (const double x, + const double c1, const double cov11, + double *y, double *y_err) +{ + *y = c1 * x; + *y_err = sqrt (cov11) * fabs (x); + return GSL_SUCCESS; +} diff --git a/gsl-2.5/fit/linear.lo b/gsl-2.5/fit/linear.lo new file mode 100644 index 00000000..9b8a4aba --- /dev/null +++ b/gsl-2.5/fit/linear.lo @@ -0,0 +1,12 @@ +# linear.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/linear.o' + +# Name of the non-PIC object +non_pic_object='linear.o' + diff --git a/gsl-2.5/fit/test b/gsl-2.5/fit/test new file mode 100755 index 00000000..bbd69af3 Binary files /dev/null and b/gsl-2.5/fit/test differ diff --git a/gsl-2.5/fit/test-suite.log b/gsl-2.5/fit/test-suite.log new file mode 100644 index 00000000..9d78569c --- /dev/null +++ b/gsl-2.5/fit/test-suite.log @@ -0,0 +1,14 @@ +================================= + gsl 2.5: fit/test-suite.log +================================= + +# TOTAL: 1 +# PASS: 1 +# SKIP: 0 +# XFAIL: 0 +# FAIL: 0 +# XPASS: 0 +# ERROR: 0 + +.. contents:: :depth: 2 + diff --git a/gsl-2.5/fit/test.c b/gsl-2.5/fit/test.c new file mode 100644 index 00000000..25555220 --- /dev/null +++ b/gsl-2.5/fit/test.c @@ -0,0 +1,173 @@ +/* These tests are based on the NIST Statistical Reference Datasets + See http://www.nist.gov/itl/div898/strd/index.html for more + information. */ + +#include +#include +#include +#include +#include + +#include + +size_t norris_n = 36; + +double norris_x[] = { 0.2, 337.4, 118.2, 884.6, 10.1, 226.5, 666.3, 996.3, + 448.6, 777.0, 558.2, 0.4, 0.6, 775.5, 666.9, 338.0, + 447.5, 11.6, 556.0, 228.1, 995.8, 887.6, 120.2, 0.3, + 0.3, 556.8, 339.1, 887.2, 999.0, 779.0, 11.1, 118.3, + 229.2, 669.1, 448.9, 0.5 } ; + +double norris_y[] = { 0.1, 338.8, 118.1, 888.0, 9.2, 228.1, 668.5, 998.5, + 449.1, 778.9, 559.2, 0.3, 0.1, 778.1, 668.8, 339.3, + 448.9, 10.8, 557.7, 228.3, 998.0, 888.8, 119.6, 0.3, + 0.6, 557.6, 339.3, 888.0, 998.5, 778.9, 10.2, 117.6, + 228.9, 668.4, 449.2, 0.2}; + +size_t noint1_n = 11; +double noint1_x[] = { 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70 }; +double noint1_y[] = { 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140}; + +size_t noint2_n = 3; +double noint2_x[] = { 4, 5, 6 } ; +double noint2_y[] = { 3, 4, 4 } ; + +int +main (void) +{ + + + double x[1000], y[1000], w[1000]; + + size_t xstride = 2, wstride = 3, ystride = 5; + size_t i; + + for (i = 0; i < norris_n; i++) + { + x[i*xstride] = norris_x[i]; + w[i*wstride] = 1.0; + y[i*ystride] = norris_y[i]; + } + + gsl_ieee_env_setup(); + + { + double c0, c1, cov00, cov01, cov11, sumsq; + + double expected_c0 = -0.262323073774029; + double expected_c1 = 1.00211681802045; + double expected_cov00 = pow(0.232818234301152, 2.0); + double expected_cov01 = -7.74327536339570e-05; /* computed from octave */ + double expected_cov11 = pow(0.429796848199937E-03, 2.0); + double expected_sumsq = 26.6173985294224; + + gsl_fit_linear (x, xstride, y, ystride, norris_n, + &c0, &c1, &cov00, &cov01, &cov11, &sumsq); + + /* gsl_fit_wlinear (x, xstride, w, wstride, y, ystride, norris_n, + &c0, &c1, &cov00, &cov01, &cov11, &sumsq); */ + + gsl_test_rel (c0, expected_c0, 1e-10, "norris gsl_fit_linear c0") ; + gsl_test_rel (c1, expected_c1, 1e-10, "norris gsl_fit_linear c1") ; + gsl_test_rel (cov00, expected_cov00, 1e-10, "norris gsl_fit_linear cov00") ; + gsl_test_rel (cov01, expected_cov01, 1e-10, "norris gsl_fit_linear cov01") ; + gsl_test_rel (cov11, expected_cov11, 1e-10, "norris gsl_fit_linear cov11") ; + gsl_test_rel (sumsq, expected_sumsq, 1e-10, "norris gsl_fit_linear sumsq") ; + } + + { + double c0, c1, cov00, cov01, cov11, sumsq; + + double expected_c0 = -0.262323073774029; + double expected_c1 = 1.00211681802045; + double expected_cov00 = 6.92384428759429e-02; /* computed from octave */ + double expected_cov01 = -9.89095016390515e-05; /* computed from octave */ + double expected_cov11 = 2.35960747164148e-07; /* computed from octave */ + double expected_sumsq = 26.6173985294224; + + gsl_fit_wlinear (x, xstride, w, wstride, y, ystride, norris_n, + &c0, &c1, &cov00, &cov01, &cov11, &sumsq); + + gsl_test_rel (c0, expected_c0, 1e-10, "norris gsl_fit_wlinear c0") ; + gsl_test_rel (c1, expected_c1, 1e-10, "norris gsl_fit_wlinear c1") ; + gsl_test_rel (cov00, expected_cov00, 1e-10, "norris gsl_fit_wlinear cov00") ; + gsl_test_rel (cov01, expected_cov01, 1e-10, "norris gsl_fit_wlinear cov01") ; + gsl_test_rel (cov11, expected_cov11, 1e-10, "norris gsl_fit_wlinear cov11") ; + gsl_test_rel (sumsq, expected_sumsq, 1e-10, "norris gsl_fit_wlinear sumsq") ; + } + + for (i = 0; i < noint1_n; i++) + { + x[i*xstride] = noint1_x[i]; + w[i*wstride] = 1.0; + y[i*ystride] = noint1_y[i]; + } + + { + double c1, cov11, sumsq; + + double expected_c1 = 2.07438016528926; + double expected_cov11 = pow(0.165289256198347E-01, 2.0); + double expected_sumsq = 127.272727272727; + + gsl_fit_mul (x, xstride, y, ystride, noint1_n, &c1, &cov11, &sumsq); + + gsl_test_rel (c1, expected_c1, 1e-10, "noint1 gsl_fit_mul c1") ; + gsl_test_rel (cov11, expected_cov11, 1e-10, "noint1 gsl_fit_mul cov11") ; + gsl_test_rel (sumsq, expected_sumsq, 1e-10, "noint1 gsl_fit_mul sumsq") ; + } + + { + double c1, cov11, sumsq; + + double expected_c1 = 2.07438016528926; + double expected_cov11 = 2.14661371686165e-05; /* computed from octave */ + double expected_sumsq = 127.272727272727; + + gsl_fit_wmul (x, xstride, w, wstride, y, ystride, noint1_n, &c1, &cov11, &sumsq); + + gsl_test_rel (c1, expected_c1, 1e-10, "noint1 gsl_fit_wmul c1") ; + gsl_test_rel (cov11, expected_cov11, 1e-10, "noint1 gsl_fit_wmul cov11") ; + gsl_test_rel (sumsq, expected_sumsq, 1e-10, "noint1 gsl_fit_wmul sumsq") ; + } + + + for (i = 0; i < noint2_n; i++) + { + x[i*xstride] = noint2_x[i]; + w[i*wstride] = 1.0; + y[i*ystride] = noint2_y[i]; + } + + { + double c1, cov11, sumsq; + + double expected_c1 = 0.727272727272727; + double expected_cov11 = pow(0.420827318078432E-01, 2.0); + double expected_sumsq = 0.272727272727273; + + gsl_fit_mul (x, xstride, y, ystride, noint2_n, &c1, &cov11, &sumsq); + + gsl_test_rel (c1, expected_c1, 1e-10, "noint2 gsl_fit_mul c1") ; + gsl_test_rel (cov11, expected_cov11, 1e-10, "noint2 gsl_fit_mul cov11") ; + gsl_test_rel (sumsq, expected_sumsq, 1e-10, "noint2 gsl_fit_mul sumsq") ; + } + + { + double c1, cov11, sumsq; + + double expected_c1 = 0.727272727272727; + double expected_cov11 = 1.29870129870130e-02 ; /* computed from octave */ + double expected_sumsq = 0.272727272727273; + + gsl_fit_wmul (x, xstride, w, wstride, y, ystride, noint2_n, &c1, &cov11, &sumsq); + + gsl_test_rel (c1, expected_c1, 1e-10, "noint2 gsl_fit_wmul c1") ; + gsl_test_rel (cov11, expected_cov11, 1e-10, "noint2 gsl_fit_wmul cov11") ; + gsl_test_rel (sumsq, expected_sumsq, 1e-10, "noint2 gsl_fit_wmul sumsq") ; + } + + /* now summarize the results */ + + exit (gsl_test_summary ()); +} diff --git a/gsl-2.5/fit/test.log b/gsl-2.5/fit/test.log new file mode 100644 index 00000000..24a654be --- /dev/null +++ b/gsl-2.5/fit/test.log @@ -0,0 +1 @@ +Completed [24/24] diff --git a/gsl-2.5/fit/test.trs b/gsl-2.5/fit/test.trs new file mode 100644 index 00000000..3f0f396c --- /dev/null +++ b/gsl-2.5/fit/test.trs @@ -0,0 +1,4 @@ +:test-result: PASS +:global-test-result: PASS +:recheck: no +:copy-in-global-log: no diff --git a/gsl-2.5/gsl-config b/gsl-2.5/gsl-config new file mode 100644 index 00000000..920229b6 --- /dev/null +++ b/gsl-2.5/gsl-config @@ -0,0 +1,80 @@ +#! /bin/sh + +prefix=/home/groups/kipac/chto/package/gsl/gsl_lib +exec_prefix=/home/groups/kipac/chto/package/gsl/gsl_lib +includedir=/home/groups/kipac/chto/package/gsl/gsl_lib/include + +usage() +{ + cat </dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command="(cd /home/groups/kipac/chto/package/gsl/gsl-2.5; LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LIBRARY_PATH; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; LD_LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/fftw/include:/home/users/chto/lib/fftw/lib:/home/users/chto/lib/healpix/lib:/home/users/chto/lib/namaster/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/include:/home/users/chto/cpp/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LD_LIBRARY_PATH; PATH=/share/software/user/open/curl/7.54.0/bin:/share/software/user/open/libressl/2.5.3/bin:/home/users/chto/lib/cfitsio:/home/users/chto/lib/cfitsio/include:/home/users/chto/lib:/home/users/chto/bin/bin:/home/users/chto/bin:/home/users/chto/.texlive/bin/x86_64-linux:/home/groups/kipac/chto/anaconda2/envs/newenv3/bin:/home/users/chto/.local/bin/include:/home/users/chto/.local/bin/lib:/home/users/chto/.local/bin:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/bin64:/share/software/user/open/fftw/3.3.6/bin:/home/groups/kipac/chto/anaconda2/condabin:/share/software/user/restricted/ifort/2019/bin:/share/software/user/open/gsl/2.3/bin:/share/software/user/srcc/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/dell/srvadmin/bin:/opt/dell/srvadmin/iSM/bin:/home/users/chto/bin; export PATH; gcc -g -O2 -o \$progdir/\$file gsl-histogram.o ./.libs/libgsl.so cblas/.libs/libgslcblas.so -lm -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/.libs -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/cblas/.libs -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl_lib/lib -Wl,-rpath -Wl,/usr/local/lib)" + +# This environment variable determines our operation mode. +if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then + # install mode needs the following variables: + generated_by_libtool_version='2.4.2' + notinst_deplibs=' libgsl.la cblas/libgslcblas.la' +else + # When we are sourced in execute mode, $file and $ECHO are already set. + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + file="$0" + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + ECHO="printf %s\\n" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ which is used only on +# windows platforms, and (c) all begin with the string --lt- +# (application programs are unlikely to have options which match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's ./libtool value, followed by no. +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=$0 + shift + for lt_opt + do + case "$lt_opt" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%/[^/]*$%%'` + test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=. + lt_dump_F=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%^.*/%%'` + cat "$lt_dump_D/$lt_dump_F" + exit 0 + ;; + --lt-*) + $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n "$lt_option_debug"; then + echo "gsl-histogram:gsl-histogram:${LINENO}: libtool wrapper (GNU libtool) 2.4.2" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + $ECHO "gsl-histogram:gsl-histogram:${LINENO}: newargv[$lt_dump_args_N]: $lt_arg" + lt_dump_args_N=`expr $lt_dump_args_N + 1` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ + + if test -n "$lt_option_debug"; then + $ECHO "gsl-histogram:gsl-histogram:${LINENO}: newargv[0]: $progdir/$program" 1>&2 + func_lt_dump_args ${1+"$@"} 1>&2 + fi + exec "$progdir/$program" ${1+"$@"} + + $ECHO "$0: cannot exec $program $*" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from $@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case " $* " in + *\ --lt-*) + for lt_wr_arg + do + case $lt_wr_arg in + --lt-*) ;; + *) set x "$@" "$lt_wr_arg"; shift;; + esac + shift + done ;; + esac + func_exec_program_core ${1+"$@"} +} + + # Parse options + func_parse_lt_options "$0" ${1+"$@"} + + # Find the directory that this script lives in. + thisdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + test "x$thisdir" = "x$file" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=`ls -ld "$file" | /usr/bin/sed -n 's/.*-> //p'` + while test -n "$file"; do + destdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + + # If there was a directory component, then change thisdir. + if test "x$destdir" != "x$file"; then + case "$destdir" in + [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;; + *) thisdir="$thisdir/$destdir" ;; + esac + fi + + file=`$ECHO "$file" | /usr/bin/sed 's%^.*/%%'` + file=`ls -ld "$thisdir/$file" | /usr/bin/sed -n 's/.*-> //p'` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no + if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then + # special case for '.' + if test "$thisdir" = "."; then + thisdir=`pwd` + fi + # remove .libs from thisdir + case "$thisdir" in + *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /usr/bin/sed 's%[\\/][^\\/]*$%%'` ;; + .libs ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=`cd "$thisdir" && pwd` + test -n "$absdir" && thisdir="$absdir" + + program=lt-'gsl-histogram' + progdir="$thisdir/.libs" + + if test ! -f "$progdir/$program" || + { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /usr/bin/sed 1q`; \ + test "X$file" != "X$progdir/$program"; }; then + + file="$$-$program" + + if test ! -d "$progdir"; then + mkdir "$progdir" + else + rm -f "$progdir/$file" + fi + + # relink executable if necessary + if test -n "$relink_command"; then + if relink_command_output=`eval $relink_command 2>&1`; then : + else + printf %s\n "$relink_command_output" >&2 + rm -f "$progdir/$file" + exit 1 + fi + fi + + mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null || + { rm -f "$progdir/$program"; + mv -f "$progdir/$file" "$progdir/$program"; } + rm -f "$progdir/$file" + fi + + if test -f "$progdir/$program"; then + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + # Run the actual program with our arguments. + func_exec_program ${1+"$@"} + fi + else + # The program doesn't exist. + $ECHO "$0: error: \`$progdir/$program' does not exist" 1>&2 + $ECHO "This script is just a wrapper for $program." 1>&2 + $ECHO "See the libtool documentation for more information." 1>&2 + exit 1 + fi +fi diff --git a/gsl-2.5/gsl-histogram.c b/gsl-2.5/gsl-histogram.c new file mode 100644 index 00000000..0897883b --- /dev/null +++ b/gsl-2.5/gsl-histogram.c @@ -0,0 +1,107 @@ +/* histogram/gsl-histogram.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include + +void +print_help(void) +{ + fprintf (stderr, "Usage: gsl-histogram [-u] xmin xmax [n]\n"); + fprintf (stderr, "Computes a histogram of the data on stdin using n bins from xmin to xmax.\n" + "If n is unspecified then bins of integer width are used.\n" + "If -u is given, histogram is normalized so that sum of all bins is unity.\n"); +} + +int +main (int argc, char **argv) +{ + double a = 0.0, b = 1.0; + size_t n = 10; + int unit = 0; + int c; + + while ((c = getopt(argc, argv, "u")) != (-1)) + { + switch (c) + { + case 'u': + unit = 1; + break; + + default: + print_help(); + exit(0); + break; + } + } + + if (argc - optind < 2) + { + print_help(); + exit(0); + } + + a = atof (argv[optind++]); + b = atof (argv[optind++]); + + if (argc - optind > 0) + n = atoi (argv[optind++]); + else + n = (int)(b - a) ; + + { + double x; + gsl_histogram *h = gsl_histogram_alloc (n); + + gsl_histogram_set_ranges_uniform (h, a, b); + + while (fscanf(stdin, "%lg", &x) == 1) + { + gsl_histogram_increment(h, x); + } + +#ifdef DISPLAY_STATS + { + double mean = gsl_histogram_mean (h); + double sigma = gsl_histogram_sigma (h); + fprintf (stdout, "# mean = %g\n", mean); + fprintf (stdout, "# sigma = %g\n", sigma); + } +#endif + + /* normalize histogram if needed */ + if (unit) + { + double sum = gsl_histogram_sum(h); + + if (sum > 0.0) + gsl_histogram_scale(h, 1.0 / sum); + } + + gsl_histogram_fprintf (stdout, h, "%g", "%g"); + + gsl_histogram_free (h); + } + + return 0; +} diff --git a/gsl-2.5/gsl-randist b/gsl-2.5/gsl-randist new file mode 100755 index 00000000..8efa2f74 --- /dev/null +++ b/gsl-2.5/gsl-randist @@ -0,0 +1,228 @@ +#! /bin/sh + +# gsl-randist - temporary wrapper script for .libs/gsl-randist +# Generated by libtool (GNU libtool) 2.4.2 +# +# The gsl-randist program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s/\([`"$\\]\)/\\\1/g' + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command="(cd /home/groups/kipac/chto/package/gsl/gsl-2.5; LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LIBRARY_PATH; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; LD_LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/fftw/include:/home/users/chto/lib/fftw/lib:/home/users/chto/lib/healpix/lib:/home/users/chto/lib/namaster/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/include:/home/users/chto/cpp/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LD_LIBRARY_PATH; PATH=/share/software/user/open/curl/7.54.0/bin:/share/software/user/open/libressl/2.5.3/bin:/home/users/chto/lib/cfitsio:/home/users/chto/lib/cfitsio/include:/home/users/chto/lib:/home/users/chto/bin/bin:/home/users/chto/bin:/home/users/chto/.texlive/bin/x86_64-linux:/home/groups/kipac/chto/anaconda2/envs/newenv3/bin:/home/users/chto/.local/bin/include:/home/users/chto/.local/bin/lib:/home/users/chto/.local/bin:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/bin64:/share/software/user/open/fftw/3.3.6/bin:/home/groups/kipac/chto/anaconda2/condabin:/share/software/user/restricted/ifort/2019/bin:/share/software/user/open/gsl/2.3/bin:/share/software/user/srcc/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/dell/srvadmin/bin:/opt/dell/srvadmin/iSM/bin:/home/users/chto/bin; export PATH; gcc -g -O2 -o \$progdir/\$file gsl-randist.o ./.libs/libgsl.so cblas/.libs/libgslcblas.so -lm -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/.libs -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/cblas/.libs -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl_lib/lib -Wl,-rpath -Wl,/usr/local/lib)" + +# This environment variable determines our operation mode. +if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then + # install mode needs the following variables: + generated_by_libtool_version='2.4.2' + notinst_deplibs=' libgsl.la cblas/libgslcblas.la' +else + # When we are sourced in execute mode, $file and $ECHO are already set. + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + file="$0" + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + ECHO="printf %s\\n" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ which is used only on +# windows platforms, and (c) all begin with the string --lt- +# (application programs are unlikely to have options which match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's ./libtool value, followed by no. +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=$0 + shift + for lt_opt + do + case "$lt_opt" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%/[^/]*$%%'` + test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=. + lt_dump_F=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%^.*/%%'` + cat "$lt_dump_D/$lt_dump_F" + exit 0 + ;; + --lt-*) + $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n "$lt_option_debug"; then + echo "gsl-randist:gsl-randist:${LINENO}: libtool wrapper (GNU libtool) 2.4.2" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + $ECHO "gsl-randist:gsl-randist:${LINENO}: newargv[$lt_dump_args_N]: $lt_arg" + lt_dump_args_N=`expr $lt_dump_args_N + 1` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ + + if test -n "$lt_option_debug"; then + $ECHO "gsl-randist:gsl-randist:${LINENO}: newargv[0]: $progdir/$program" 1>&2 + func_lt_dump_args ${1+"$@"} 1>&2 + fi + exec "$progdir/$program" ${1+"$@"} + + $ECHO "$0: cannot exec $program $*" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from $@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case " $* " in + *\ --lt-*) + for lt_wr_arg + do + case $lt_wr_arg in + --lt-*) ;; + *) set x "$@" "$lt_wr_arg"; shift;; + esac + shift + done ;; + esac + func_exec_program_core ${1+"$@"} +} + + # Parse options + func_parse_lt_options "$0" ${1+"$@"} + + # Find the directory that this script lives in. + thisdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + test "x$thisdir" = "x$file" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=`ls -ld "$file" | /usr/bin/sed -n 's/.*-> //p'` + while test -n "$file"; do + destdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + + # If there was a directory component, then change thisdir. + if test "x$destdir" != "x$file"; then + case "$destdir" in + [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;; + *) thisdir="$thisdir/$destdir" ;; + esac + fi + + file=`$ECHO "$file" | /usr/bin/sed 's%^.*/%%'` + file=`ls -ld "$thisdir/$file" | /usr/bin/sed -n 's/.*-> //p'` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no + if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then + # special case for '.' + if test "$thisdir" = "."; then + thisdir=`pwd` + fi + # remove .libs from thisdir + case "$thisdir" in + *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /usr/bin/sed 's%[\\/][^\\/]*$%%'` ;; + .libs ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=`cd "$thisdir" && pwd` + test -n "$absdir" && thisdir="$absdir" + + program=lt-'gsl-randist' + progdir="$thisdir/.libs" + + if test ! -f "$progdir/$program" || + { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /usr/bin/sed 1q`; \ + test "X$file" != "X$progdir/$program"; }; then + + file="$$-$program" + + if test ! -d "$progdir"; then + mkdir "$progdir" + else + rm -f "$progdir/$file" + fi + + # relink executable if necessary + if test -n "$relink_command"; then + if relink_command_output=`eval $relink_command 2>&1`; then : + else + printf %s\n "$relink_command_output" >&2 + rm -f "$progdir/$file" + exit 1 + fi + fi + + mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null || + { rm -f "$progdir/$program"; + mv -f "$progdir/$file" "$progdir/$program"; } + rm -f "$progdir/$file" + fi + + if test -f "$progdir/$program"; then + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + # Run the actual program with our arguments. + func_exec_program ${1+"$@"} + fi + else + # The program doesn't exist. + $ECHO "$0: error: \`$progdir/$program' does not exist" 1>&2 + $ECHO "This script is just a wrapper for $program." 1>&2 + $ECHO "See the libtool documentation for more information." 1>&2 + exit 1 + fi +fi diff --git a/gsl-2.5/gsl-randist.c b/gsl-2.5/gsl-randist.c new file mode 100644 index 00000000..aec5e7d0 --- /dev/null +++ b/gsl-2.5/gsl-randist.c @@ -0,0 +1,394 @@ +/* randist/gsl-randist.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 James Theiler, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include + +#include +#include +#include + +void error (const char * s); + + +int +main (int argc, char *argv[]) +{ + size_t i,j; + size_t n = 0; + double mu = 0, nu = 0, nu1 = 0, nu2 = 0, sigma = 0, a = 0, b = 0, c = 0; + double zeta = 0, sigmax = 0, sigmay = 0, rho = 0; + double p = 0; + double x = 0, y =0, z=0 ; + unsigned int N = 0, t = 0, n1 = 0, n2 = 0 ; + unsigned long int seed = 0 ; + const char * name ; + gsl_rng * r ; + + if (argc < 4) + { + printf ( +"Usage: gsl-randist seed n DIST param1 param2 ...\n" +"Generates n samples from the distribution DIST with parameters param1,\n" +"param2, etc. Valid distributions are,\n\n"); + + printf( +" beta\n" +" binomial\n" +" bivariate-gaussian\n" +" cauchy\n" +" chisq\n" +" dir-2d\n" +" dir-3d\n" +" dir-nd\n" +" erlang\n" +" exponential\n" +" exppow\n" +" fdist\n" +" flat\n" +" gamma\n" +" gaussian-tail\n" +" gaussian\n" +" geometric\n" +" gumbel1\n" +" gumbel2\n" +" hypergeometric\n" +" laplace\n" +" landau\n" +" levy\n" +" levy-skew\n" +" logarithmic\n" +" logistic\n" +" lognormal\n" +" negative-binomial\n" +" pareto\n" +" pascal\n" +" poisson\n" +" rayleigh-tail\n" +" rayleigh\n" +" tdist\n" +" ugaussian-tail\n" +" ugaussian\n" +" weibull\n") ; + exit (0); + } + + argv++ ; seed = atol (argv[0]); argc-- ; + argv++ ; n = atol (argv[0]); argc-- ; + argv++ ; name = argv[0] ; argc-- ; argc-- ; + + gsl_rng_env_setup() ; + + if (gsl_rng_default_seed != 0) { + fprintf(stderr, + "overriding GSL_RNG_SEED with command line value, seed = %ld\n", + seed) ; + } + + gsl_rng_default_seed = seed ; + + r = gsl_rng_alloc(gsl_rng_default) ; + + +#define NAME(x) !strcmp(name,(x)) +#define OUTPUT(x) for (i = 0; i < n; i++) { printf("%g\n", (x)) ; } +#define OUTPUT1(a,x) for(i = 0; i < n; i++) { a ; printf("%g\n", x) ; } +#define OUTPUT2(a,x,y) for(i = 0; i < n; i++) { a ; printf("%g %g\n", x, y) ; } +#define OUTPUT3(a,x,y,z) for(i = 0; i < n; i++) { a ; printf("%g %g %g\n", x, y, z) ; } +#define INT_OUTPUT(x) for (i = 0; i < n; i++) { printf("%d\n", (x)) ; } +#define ARGS(x,y) if (argc != x) error(y) ; +#define DBL_ARG(x) if (argc) { x=atof((++argv)[0]);argc--;} else {error( #x);}; +#define INT_ARG(x) if (argc) { x=atoi((++argv)[0]);argc--;} else {error( #x);}; + + if (NAME("bernoulli")) + { + ARGS(1, "p = probability of success"); + DBL_ARG(p) + INT_OUTPUT(gsl_ran_bernoulli (r, p)); + } + else if (NAME("beta")) + { + ARGS(2, "a,b = shape parameters"); + DBL_ARG(a) + DBL_ARG(b) + OUTPUT(gsl_ran_beta (r, a, b)); + } + else if (NAME("binomial")) + { + ARGS(2, "p = probability, N = number of trials"); + DBL_ARG(p) + INT_ARG(N) + INT_OUTPUT(gsl_ran_binomial (r, p, N)); + } + else if (NAME("cauchy")) + { + ARGS(1, "a = scale parameter"); + DBL_ARG(a) + OUTPUT(gsl_ran_cauchy (r, a)); + } + else if (NAME("chisq")) + { + ARGS(1, "nu = degrees of freedom"); + DBL_ARG(nu) + OUTPUT(gsl_ran_chisq (r, nu)); + } + else if (NAME("erlang")) + { + ARGS(2, "a = scale parameter, b = order"); + DBL_ARG(a) + DBL_ARG(b) + OUTPUT(gsl_ran_erlang (r, a, b)); + } + else if (NAME("exponential")) + { + ARGS(1, "mu = mean value"); + DBL_ARG(mu) ; + OUTPUT(gsl_ran_exponential (r, mu)); + } + else if (NAME("exppow")) + { + ARGS(2, "a = scale parameter, b = power (1=exponential, 2=gaussian)"); + DBL_ARG(a) ; + DBL_ARG(b) ; + OUTPUT(gsl_ran_exppow (r, a, b)); + } + else if (NAME("fdist")) + { + ARGS(2, "nu1, nu2 = degrees of freedom parameters"); + DBL_ARG(nu1) ; + DBL_ARG(nu2) ; + OUTPUT(gsl_ran_fdist (r, nu1, nu2)); + } + else if (NAME("flat")) + { + ARGS(2, "a = lower limit, b = upper limit"); + DBL_ARG(a) ; + DBL_ARG(b) ; + OUTPUT(gsl_ran_flat (r, a, b)); + } + else if (NAME("gamma")) + { + ARGS(2, "a = order, b = scale"); + DBL_ARG(a) ; + DBL_ARG(b) ; + OUTPUT(gsl_ran_gamma (r, a, b)); + } + else if (NAME("gaussian")) + { + ARGS(1, "sigma = standard deviation"); + DBL_ARG(sigma) ; + OUTPUT(gsl_ran_gaussian (r, sigma)); + } + else if (NAME("gaussian-tail")) + { + ARGS(2, "a = lower limit, sigma = standard deviation"); + DBL_ARG(a) ; + DBL_ARG(sigma) ; + OUTPUT(gsl_ran_gaussian_tail (r, a, sigma)); + } + else if (NAME("ugaussian")) + { + ARGS(0, "unit gaussian, no parameters required"); + OUTPUT(gsl_ran_ugaussian (r)); + } + else if (NAME("ugaussian-tail")) + { + ARGS(1, "a = lower limit"); + DBL_ARG(a) ; + OUTPUT(gsl_ran_ugaussian_tail (r, a)); + } + else if (NAME("bivariate-gaussian")) + { + ARGS(3, "sigmax = x std.dev., sigmay = y std.dev., rho = correlation"); + DBL_ARG(sigmax) ; + DBL_ARG(sigmay) ; + DBL_ARG(rho) ; + OUTPUT2(gsl_ran_bivariate_gaussian (r, sigmax, sigmay, rho, &x, &y), + x, y); + } + else if (NAME("dir-2d")) + { + OUTPUT2(gsl_ran_dir_2d (r, &x, &y), x, y); + } + else if (NAME("dir-3d")) + { + OUTPUT3(gsl_ran_dir_3d (r, &x, &y, &z), x, y, z); + } + else if (NAME("dir-nd")) + { + double *xarr; + ARGS(1, "n1 = number of dimensions of hypersphere"); + INT_ARG(n1) ; + xarr = (double *)malloc(n1*sizeof(double)); + + for(i = 0; i < n; i++) { + gsl_ran_dir_nd (r, n1, xarr) ; + for (j = 0; j < n1; j++) { + if (j) putchar(' '); + printf("%g", xarr[j]) ; + } + putchar('\n'); + } ; + + free(xarr); + } + else if (NAME("geometric")) + { + ARGS(1, "p = bernoulli trial probability of success"); + DBL_ARG(p) ; + INT_OUTPUT(gsl_ran_geometric (r, p)); + } + else if (NAME("gumbel1")) + { + ARGS(2, "a = order, b = scale parameter"); + DBL_ARG(a) ; + DBL_ARG(b) ; + OUTPUT(gsl_ran_gumbel1 (r, a, b)); + } + else if (NAME("gumbel2")) + { + ARGS(2, "a = order, b = scale parameter"); + DBL_ARG(a) ; + DBL_ARG(b) ; + OUTPUT(gsl_ran_gumbel2 (r, a, b)); + } + else if (NAME("hypergeometric")) + { + ARGS(3, "n1 = tagged population, n2 = untagged population, t = number of trials"); + INT_ARG(n1) ; + INT_ARG(n2) ; + INT_ARG(t) ; + INT_OUTPUT(gsl_ran_hypergeometric (r, n1, n2, t)); + } + else if (NAME("laplace")) + { + ARGS(1, "a = scale parameter"); + DBL_ARG(a) ; + OUTPUT(gsl_ran_laplace (r, a)); + } + else if (NAME("landau")) + { + ARGS(0, "no arguments required"); + OUTPUT(gsl_ran_landau (r)); + } + else if (NAME("levy")) + { + ARGS(2, "c = scale, a = power (1=cauchy, 2=gaussian)"); + DBL_ARG(c) ; + DBL_ARG(a) ; + OUTPUT(gsl_ran_levy (r, c, a)); + } + else if (NAME("levy-skew")) + { + ARGS(3, "c = scale, a = power (1=cauchy, 2=gaussian), b = skew"); + DBL_ARG(c) ; + DBL_ARG(a) ; + DBL_ARG(b) ; + OUTPUT(gsl_ran_levy_skew (r, c, a, b)); + } + else if (NAME("logarithmic")) + { + ARGS(1, "p = probability"); + DBL_ARG(p) ; + INT_OUTPUT(gsl_ran_logarithmic (r, p)); + } + else if (NAME("logistic")) + { + ARGS(1, "a = scale parameter"); + DBL_ARG(a) ; + OUTPUT(gsl_ran_logistic (r, a)); + } + else if (NAME("lognormal")) + { + ARGS(2, "zeta = location parameter, sigma = scale parameter"); + DBL_ARG(zeta) ; + DBL_ARG(sigma) ; + OUTPUT(gsl_ran_lognormal (r, zeta, sigma)); + } + else if (NAME("negative-binomial")) + { + ARGS(2, "p = probability, a = order"); + DBL_ARG(p) ; + DBL_ARG(a) ; + INT_OUTPUT(gsl_ran_negative_binomial (r, p, a)); + } + else if (NAME("pareto")) + { + ARGS(2, "a = power, b = scale parameter"); + DBL_ARG(a) ; + DBL_ARG(b) ; + OUTPUT(gsl_ran_pareto (r, a, b)); + } + else if (NAME("pascal")) + { + ARGS(2, "p = probability, n = order (integer)"); + DBL_ARG(p) ; + INT_ARG(N) ; + INT_OUTPUT(gsl_ran_pascal (r, p, N)); + } + else if (NAME("poisson")) + { + ARGS(1, "mu = scale parameter"); + DBL_ARG(mu) ; + INT_OUTPUT(gsl_ran_poisson (r, mu)); + } + else if (NAME("rayleigh")) + { + ARGS(1, "sigma = scale parameter"); + DBL_ARG(sigma) ; + OUTPUT(gsl_ran_rayleigh (r, sigma)); + } + else if (NAME("rayleigh-tail")) + { + ARGS(2, "a = lower limit, sigma = scale parameter"); + DBL_ARG(a) ; + DBL_ARG(sigma) ; + OUTPUT(gsl_ran_rayleigh_tail (r, a, sigma)); + } + else if (NAME("tdist")) + { + ARGS(1, "nu = degrees of freedom"); + DBL_ARG(nu) ; + OUTPUT(gsl_ran_tdist (r, nu)); + } + else if (NAME("weibull")) + { + ARGS(2, "a = scale parameter, b = exponent"); + DBL_ARG(a) ; + DBL_ARG(b) ; + OUTPUT(gsl_ran_weibull (r, a, b)); + } + else + { + fprintf(stderr,"Error: unrecognized distribution: %s\n", name) ; + } + + return 0 ; +} + + +void +error (const char * s) +{ + fprintf(stderr, "Error: arguments should be %s\n",s) ; + exit (EXIT_FAILURE) ; +} diff --git a/gsl-2.5/gsl.m4 b/gsl-2.5/gsl.m4 new file mode 100644 index 00000000..fc7fb442 --- /dev/null +++ b/gsl-2.5/gsl.m4 @@ -0,0 +1,162 @@ +# Configure path for the GNU Scientific Library +# Christopher R. Gabriel , April 2000 + + +AC_DEFUN([AX_PATH_GSL], +[ +AC_ARG_WITH(gsl-prefix,[ --with-gsl-prefix=PFX Prefix where GSL is installed (optional)], + gsl_prefix="$withval", gsl_prefix="") +AC_ARG_WITH(gsl-exec-prefix,[ --with-gsl-exec-prefix=PFX Exec prefix where GSL is installed (optional)], + gsl_exec_prefix="$withval", gsl_exec_prefix="") +AC_ARG_ENABLE(gsltest, [ --disable-gsltest Do not try to compile and run a test GSL program], + , enable_gsltest=yes) + + if test "x${GSL_CONFIG+set}" != xset ; then + if test "x$gsl_prefix" != x ; then + GSL_CONFIG="$gsl_prefix/bin/gsl-config" + fi + if test "x$gsl_exec_prefix" != x ; then + GSL_CONFIG="$gsl_exec_prefix/bin/gsl-config" + fi + fi + + AC_PATH_PROG(GSL_CONFIG, gsl-config, no) + min_gsl_version=ifelse([$1], ,0.2.5,$1) + AC_MSG_CHECKING(for GSL - version >= $min_gsl_version) + no_gsl="" + if test "$GSL_CONFIG" = "no" ; then + no_gsl=yes + else + GSL_CFLAGS=`$GSL_CONFIG --cflags` + GSL_LIBS=`$GSL_CONFIG --libs` + + gsl_major_version=`$GSL_CONFIG --version | \ + sed 's/^\([[0-9]]*\).*/\1/'` + if test "x${gsl_major_version}" = "x" ; then + gsl_major_version=0 + fi + + gsl_minor_version=`$GSL_CONFIG --version | \ + sed 's/^\([[0-9]]*\)\.\{0,1\}\([[0-9]]*\).*/\2/'` + if test "x${gsl_minor_version}" = "x" ; then + gsl_minor_version=0 + fi + + gsl_micro_version=`$GSL_CONFIG --version | \ + sed 's/^\([[0-9]]*\)\.\{0,1\}\([[0-9]]*\)\.\{0,1\}\([[0-9]]*\).*/\3/'` + if test "x${gsl_micro_version}" = "x" ; then + gsl_micro_version=0 + fi + + if test "x$enable_gsltest" = "xyes" ; then + ac_save_CFLAGS="$CFLAGS" + ac_save_LIBS="$LIBS" + CFLAGS="$CFLAGS $GSL_CFLAGS" + LIBS="$LIBS $GSL_LIBS" + + rm -f conf.gsltest + AC_TRY_RUN([ +#include +#include +#include + +char* my_strdup (const char *str); + +char* +my_strdup (const char *str) +{ + char *new_str; + + if (str) + { + new_str = (char *)malloc ((strlen (str) + 1) * sizeof(char)); + strcpy (new_str, str); + } + else + new_str = NULL; + + return new_str; +} + +int main (void) +{ + int major = 0, minor = 0, micro = 0; + int n; + char *tmp_version; + + system ("touch conf.gsltest"); + + /* HP/UX 9 (%@#!) writes to sscanf strings */ + tmp_version = my_strdup("$min_gsl_version"); + + n = sscanf(tmp_version, "%d.%d.%d", &major, &minor, µ) ; + + if (n != 2 && n != 3) { + printf("%s, bad version string\n", "$min_gsl_version"); + exit(1); + } + + if (($gsl_major_version > major) || + (($gsl_major_version == major) && ($gsl_minor_version > minor)) || + (($gsl_major_version == major) && ($gsl_minor_version == minor) && ($gsl_micro_version >= micro))) + { + exit(0); + } + else + { + exit(1); + } +} + +],, no_gsl=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"]) + CFLAGS="$ac_save_CFLAGS" + LIBS="$ac_save_LIBS" + fi + fi + if test "x$no_gsl" = x ; then + AC_MSG_RESULT(yes) + ifelse([$2], , :, [$2]) + else + AC_MSG_RESULT(no) + if test "$GSL_CONFIG" = "no" ; then + echo "*** The gsl-config script installed by GSL could not be found" + echo "*** If GSL was installed in PREFIX, make sure PREFIX/bin is in" + echo "*** your path, or set the GSL_CONFIG environment variable to the" + echo "*** full path to gsl-config." + else + if test -f conf.gsltest ; then + : + else + echo "*** Could not run GSL test program, checking why..." + CFLAGS="$CFLAGS $GSL_CFLAGS" + LIBS="$LIBS $GSL_LIBS" + AC_TRY_LINK([ +#include +], [ return 0; ], + [ echo "*** The test program compiled, but did not run. This usually means" + echo "*** that the run-time linker is not finding GSL or finding the wrong" + echo "*** version of GSL. If it is not finding GSL, you'll need to set your" + echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point" + echo "*** to the installed location Also, make sure you have run ldconfig if that" + echo "*** is required on your system" + echo "***" + echo "*** If you have an old version installed, it is best to remove it, although" + echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH"], + [ echo "*** The test program failed to compile or link. See the file config.log for the" + echo "*** exact error that occured. This usually means GSL was incorrectly installed" + echo "*** or that you have moved GSL since it was installed. In the latter case, you" + echo "*** may want to edit the gsl-config script: $GSL_CONFIG" ]) + CFLAGS="$ac_save_CFLAGS" + LIBS="$ac_save_LIBS" + fi + fi +# GSL_CFLAGS="" +# GSL_LIBS="" + ifelse([$3], , :, [$3]) + fi + AC_SUBST(GSL_CFLAGS) + AC_SUBST(GSL_LIBS) + rm -f conf.gsltest +]) + +AU_ALIAS([AM_PATH_GSL], [AX_PATH_GSL]) diff --git a/gsl-2.5/gsl.pc b/gsl-2.5/gsl.pc new file mode 100644 index 00000000..aeb23fe3 --- /dev/null +++ b/gsl-2.5/gsl.pc @@ -0,0 +1,11 @@ +prefix=/home/groups/kipac/chto/package/gsl/gsl_lib +exec_prefix=/home/groups/kipac/chto/package/gsl/gsl_lib +libdir=/home/groups/kipac/chto/package/gsl/gsl_lib/lib +includedir=/home/groups/kipac/chto/package/gsl/gsl_lib/include +GSL_CBLAS_LIB=-lgslcblas + +Name: GSL +Description: GNU Scientific Library +Version: 2.5 +Libs: -L/home/groups/kipac/chto/package/gsl/gsl_lib/lib -lgsl ${GSL_CBLAS_LIB} -lm -lm +Cflags: -I/home/groups/kipac/chto/package/gsl/gsl_lib/include diff --git a/gsl-2.5/gsl.pc.in b/gsl-2.5/gsl.pc.in new file mode 100644 index 00000000..5e9ef218 --- /dev/null +++ b/gsl-2.5/gsl.pc.in @@ -0,0 +1,11 @@ +prefix=@prefix@ +exec_prefix=@exec_prefix@ +libdir=@libdir@ +includedir=@includedir@ +GSL_CBLAS_LIB=-lgslcblas + +Name: GSL +Description: GNU Scientific Library +Version: @VERSION@ +Libs: @GSL_LIBS@ ${GSL_CBLAS_LIB} @GSL_LIBM@ @LIBS@ +Cflags: @GSL_CFLAGS@ diff --git a/gsl-2.5/gsl.spec b/gsl-2.5/gsl.spec new file mode 100644 index 00000000..7be7d697 --- /dev/null +++ b/gsl-2.5/gsl.spec @@ -0,0 +1,80 @@ +Name: gsl +Summary: GNU Scientific Library (GSL) +Packager: jungman@lanl.gov, rosalia@lanl.gov +%define version 2.5 +%define release 0 +Version: %{version} +Release: %{release} +License: GPL +Vendor: The GSL Team +Distribution: research software +Source: gsl-%{version}.tar.gz +Group: Libraries/Research +%define mybuildroot /var/tmp/%{name}-build +BuildRoot: %{mybuildroot} + +%description + The GNU Scientific Library (GSL) is a numerical library for C and +C++ programmers. It contains over 1000 mathematical routines written +in ANSI C. The library follows modern coding conventions, and lends +itself to being used in very high level languages (VHLLs). + +The library covers the following subject areas: + + Complex Numbers Roots of Polynomials Special Functions + Vectors and Matrices Permutations Sorting + BLAS Support Linear Algebra Eigensystems + Fast Fourier Transforms Quadrature Random Numbers + Quasi-Random Sequences Random Distributions Statistics + Histograms N-Tuples Monte Carlo Integration + Simulated Annealing Differential Equations Interpolation + Numerical Differentiation Chebyshev Approximation Series Acceleration + Discrete Hankel Transforms Root-Finding Minimization + Least-Squares Fitting Physical Constants IEEE Floating-Point + +Further information can be found in the GSL Reference Manual. +Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, +2006, 2007 The GSL Team. + +Install the gsl package if you need a library for high-level +scientific numerical analysis. + +%prep +%setup -q -n gsl-%{version} + +%build +CFLAGS="$RPM_OPT_FLAGS" +./configure --prefix=%{_prefix} \ + --bindir=%{_bindir} --mandir=%{_mandir} \ + --localstatedir=%{_localstatedir} --libdir=%{_libdir} \ + --datadir=%{_datadir} --includedir=%{_includedir} \ + --sysconfdir=%{_sysconfdir} +make + +%install +rm -rf $RPM_BUILD_ROOT + +make prefix=$RPM_BUILD_ROOT%{_prefix} bindir=$RPM_BUILD_ROOT%{_bindir} \ + mandir=$RPM_BUILD_ROOT%{_mandir} libdir=$RPM_BUILD_ROOT%{_libdir} \ + localstatedir=$RPM_BUILD_ROOT%{_localstatedir} \ + datadir=$RPM_BUILD_ROOT%{_datadir} \ + includedir=$RPM_BUILD_ROOT%{_includedir} \ + sysconfdir=$RPM_BUILD_ROOT%{_sysconfdir} install + +%clean +rm -rf $RPM_BUILD_ROOT + +%post -p /sbin/ldconfig + +%postun -p /sbin/ldconfig + +%files +%doc {NEWS,ChangeLog,INSTALL,README,AUTHORS,THANKS,SUPPORT,BUGS} +%doc /usr/info/* +/usr/bin/gsl-config +/usr/bin/gsl-histogram +/usr/bin/gsl-randist +/usr/lib +/usr/include/gsl +/usr/share/aclocal/gsl.m4 +/usr/share/man diff --git a/gsl-2.5/gsl.spec.in b/gsl-2.5/gsl.spec.in new file mode 100644 index 00000000..b89658fe --- /dev/null +++ b/gsl-2.5/gsl.spec.in @@ -0,0 +1,80 @@ +Name: gsl +Summary: GNU Scientific Library (GSL) +Packager: jungman@lanl.gov, rosalia@lanl.gov +%define version @VERSION@ +%define release 0 +Version: %{version} +Release: %{release} +License: GPL +Vendor: The GSL Team +Distribution: research software +Source: gsl-%{version}.tar.gz +Group: Libraries/Research +%define mybuildroot /var/tmp/%{name}-build +BuildRoot: %{mybuildroot} + +%description + The GNU Scientific Library (GSL) is a numerical library for C and +C++ programmers. It contains over 1000 mathematical routines written +in ANSI C. The library follows modern coding conventions, and lends +itself to being used in very high level languages (VHLLs). + +The library covers the following subject areas: + + Complex Numbers Roots of Polynomials Special Functions + Vectors and Matrices Permutations Sorting + BLAS Support Linear Algebra Eigensystems + Fast Fourier Transforms Quadrature Random Numbers + Quasi-Random Sequences Random Distributions Statistics + Histograms N-Tuples Monte Carlo Integration + Simulated Annealing Differential Equations Interpolation + Numerical Differentiation Chebyshev Approximation Series Acceleration + Discrete Hankel Transforms Root-Finding Minimization + Least-Squares Fitting Physical Constants IEEE Floating-Point + +Further information can be found in the GSL Reference Manual. +Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, +2006, 2007 The GSL Team. + +Install the gsl package if you need a library for high-level +scientific numerical analysis. + +%prep +%setup -q -n gsl-%{version} + +%build +CFLAGS="$RPM_OPT_FLAGS" +./configure --prefix=%{_prefix} \ + --bindir=%{_bindir} --mandir=%{_mandir} \ + --localstatedir=%{_localstatedir} --libdir=%{_libdir} \ + --datadir=%{_datadir} --includedir=%{_includedir} \ + --sysconfdir=%{_sysconfdir} +make + +%install +rm -rf $RPM_BUILD_ROOT + +make prefix=$RPM_BUILD_ROOT%{_prefix} bindir=$RPM_BUILD_ROOT%{_bindir} \ + mandir=$RPM_BUILD_ROOT%{_mandir} libdir=$RPM_BUILD_ROOT%{_libdir} \ + localstatedir=$RPM_BUILD_ROOT%{_localstatedir} \ + datadir=$RPM_BUILD_ROOT%{_datadir} \ + includedir=$RPM_BUILD_ROOT%{_includedir} \ + sysconfdir=$RPM_BUILD_ROOT%{_sysconfdir} install + +%clean +rm -rf $RPM_BUILD_ROOT + +%post -p /sbin/ldconfig + +%postun -p /sbin/ldconfig + +%files +%doc {NEWS,ChangeLog,INSTALL,README,AUTHORS,THANKS,SUPPORT,BUGS} +%doc /usr/info/* +/usr/bin/gsl-config +/usr/bin/gsl-histogram +/usr/bin/gsl-randist +/usr/lib +/usr/include/gsl +/usr/share/aclocal/gsl.m4 +/usr/share/man diff --git a/gsl-2.5/gsl/Makefile b/gsl-2.5/gsl/Makefile new file mode 100644 index 00000000..9bac8934 --- /dev/null +++ b/gsl-2.5/gsl/Makefile @@ -0,0 +1,465 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# gsl/Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + + +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/gsl +pkgincludedir = $(includedir)/gsl +pkglibdir = $(libdir)/gsl +pkglibexecdir = $(libexecdir)/gsl +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = x86_64-unknown-linux-gnu +host_triplet = x86_64-unknown-linux-gnu +subdir = gsl +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_$(V)) +am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY)) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_$(V)) +am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_$(V)) +am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) +am__v_at_0 = @ +am__v_at_1 = +SOURCES = +DIST_SOURCES = +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing aclocal-1.13 +AMTAR = $${TAR-tar} +AM_DEFAULT_VERBOSITY = 1 +AR = ar +AS = as +AUTOCONF = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing autoconf +AUTOHEADER = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing autoheader +AUTOMAKE = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing automake-1.13 +AWK = gawk +CC = gcc +CCDEPMODE = depmode=gcc3 +CFLAGS = -g -O2 +CPP = gcc -E +CPPFLAGS = +CYGPATH_W = echo +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +DLLTOOL = false +DSYMUTIL = +DUMPBIN = +ECHO_C = +ECHO_N = -n +ECHO_T = +EGREP = /usr/bin/grep -E +EXEEXT = +FGREP = /usr/bin/grep -F +GREP = /usr/bin/grep +GSLCBLAS_LDFLAGS = +GSL_CFLAGS = -I${prefix}/include +GSL_LDFLAGS = +GSL_LIBADD = +GSL_LIBM = -lm +GSL_LIBS = -L${exec_prefix}/lib -lgsl +GSL_LT_CBLAS_VERSION = 0:0:0 +GSL_LT_VERSION = 24:0:1 +GSL_MAJOR_VERSION = 2 +GSL_MINOR_VERSION = 5 +HAVE_AIX_IEEE_INTERFACE = +HAVE_DARWIN86_IEEE_INTERFACE = +HAVE_DARWIN_IEEE_INTERFACE = +HAVE_FREEBSD_IEEE_INTERFACE = +HAVE_GNUM68K_IEEE_INTERFACE = +HAVE_GNUPPC_IEEE_INTERFACE = +HAVE_GNUSPARC_IEEE_INTERFACE = +HAVE_GNUX86_IEEE_INTERFACE = +HAVE_HPUX11_IEEE_INTERFACE = +HAVE_HPUX_IEEE_INTERFACE = +HAVE_IRIX_IEEE_INTERFACE = +HAVE_NETBSD_IEEE_INTERFACE = +HAVE_OPENBSD_IEEE_INTERFACE = +HAVE_OS2EMX_IEEE_INTERFACE = +HAVE_SOLARIS_IEEE_INTERFACE = +HAVE_SUNOS4_IEEE_INTERFACE = +HAVE_TRU64_IEEE_INTERFACE = +INSTALL = /usr/bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = $(install_sh) -c -s +LD = /usr/bin/ld -m elf_x86_64 +LDFLAGS = +LIBM = -lm +LIBOBJS = +LIBS = -lm +LIBTOOL = $(SHELL) $(top_builddir)/libtool +LIPO = +LN_S = ln -s +LTLIBOBJS = +MAINT = # +MAKEINFO = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing makeinfo +MANIFEST_TOOL = : +MKDIR_P = /usr/bin/mkdir -p +NM = /usr/bin/nm -B +NMEDIT = +OBJDUMP = objdump +OBJEXT = o +OTOOL = +OTOOL64 = +PACKAGE = gsl +PACKAGE_BUGREPORT = +PACKAGE_NAME = gsl +PACKAGE_STRING = gsl 2.5 +PACKAGE_TARNAME = gsl +PACKAGE_URL = +PACKAGE_VERSION = 2.5 +PATH_SEPARATOR = : +RANLIB = ranlib +SED = /usr/bin/sed +SET_MAKE = +SHELL = /bin/sh +STRIP = strip +VERSION = 2.5 +abs_builddir = /home/groups/kipac/chto/package/gsl/gsl-2.5/gsl +abs_srcdir = /home/groups/kipac/chto/package/gsl/gsl-2.5/gsl +abs_top_builddir = /home/groups/kipac/chto/package/gsl/gsl-2.5 +abs_top_srcdir = /home/groups/kipac/chto/package/gsl/gsl-2.5 +ac_ct_AR = ar +ac_ct_CC = gcc +ac_ct_DUMPBIN = +am__include = include +am__leading_dot = . +am__quote = +am__tar = $${TAR-tar} chof - "$$tardir" +am__untar = $${TAR-tar} xf - +bindir = ${exec_prefix}/bin +build = x86_64-unknown-linux-gnu +build_alias = +build_cpu = x86_64 +build_os = linux-gnu +build_vendor = unknown +builddir = . +datadir = ${datarootdir} +datarootdir = ${prefix}/share +docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} +dvidir = ${docdir} +exec_prefix = ${prefix} +host = x86_64-unknown-linux-gnu +host_alias = +host_cpu = x86_64 +host_os = linux-gnu +host_vendor = unknown +htmldir = ${docdir} +includedir = ${prefix}/include +infodir = ${datarootdir}/info +install_sh = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/install-sh +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +localedir = ${datarootdir}/locale +localstatedir = ${prefix}/var +mandir = ${datarootdir}/man +mkdir_p = $(MKDIR_P) +oldincludedir = /usr/include +pdfdir = ${docdir} +prefix = /home/groups/kipac/chto/package/gsl/gsl_lib +program_transform_name = s,x,x, +psdir = ${docdir} +sbindir = ${exec_prefix}/sbin +sharedstatedir = ${prefix}/com +srcdir = . +sysconfdir = ${prefix}/etc +target_alias = +top_build_prefix = ../ +top_builddir = .. +top_srcdir = .. +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu gsl/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu gsl/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: # $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): # $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +tags TAGS: + +ctags CTAGS: + +cscope cscopelist: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool clean-local mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-local + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + clean-local cscopelist-am ctags-am distclean distclean-generic \ + distclean-libtool distclean-local distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am tags-am uninstall \ + uninstall-am + + +header-links: remove-links + HEADERLIST="$(top_srcdir)/gsl*.h $(top_srcdir)/*/gsl*.h"; \ + for h in $$HEADERLIST; do \ + BASENAME=`basename $$h`; \ + test -r $$BASENAME || $(LN_S) $$h $$BASENAME; \ + done + +remove-links: + rm -f gsl*.h + +all: all-am header-links + +clean-local: remove-links +distclean-local: remove-links + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gsl-2.5/gsl/Makefile.am b/gsl-2.5/gsl/Makefile.am new file mode 100644 index 00000000..67907480 --- /dev/null +++ b/gsl-2.5/gsl/Makefile.am @@ -0,0 +1,16 @@ + +header-links: remove-links + HEADERLIST="$(top_srcdir)/gsl*.h $(top_srcdir)/*/gsl*.h"; \ + for h in $$HEADERLIST; do \ + BASENAME=`basename $$h`; \ + test -r $$BASENAME || $(LN_S) $$h $$BASENAME; \ + done + +remove-links: + rm -f gsl*.h + + +all: all-am header-links + +clean-local: remove-links +distclean-local: remove-links diff --git a/gsl-2.5/gsl/Makefile.in b/gsl-2.5/gsl/Makefile.in new file mode 100644 index 00000000..59789770 --- /dev/null +++ b/gsl-2.5/gsl/Makefile.in @@ -0,0 +1,465 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ +VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = gsl +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +SOURCES = +DIST_SOURCES = +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +GSLCBLAS_LDFLAGS = @GSLCBLAS_LDFLAGS@ +GSL_CFLAGS = @GSL_CFLAGS@ +GSL_LDFLAGS = @GSL_LDFLAGS@ +GSL_LIBADD = @GSL_LIBADD@ +GSL_LIBM = @GSL_LIBM@ +GSL_LIBS = @GSL_LIBS@ +GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ +GSL_LT_VERSION = @GSL_LT_VERSION@ +GSL_MAJOR_VERSION = @GSL_MAJOR_VERSION@ +GSL_MINOR_VERSION = @GSL_MINOR_VERSION@ +HAVE_AIX_IEEE_INTERFACE = @HAVE_AIX_IEEE_INTERFACE@ +HAVE_DARWIN86_IEEE_INTERFACE = @HAVE_DARWIN86_IEEE_INTERFACE@ +HAVE_DARWIN_IEEE_INTERFACE = @HAVE_DARWIN_IEEE_INTERFACE@ +HAVE_FREEBSD_IEEE_INTERFACE = @HAVE_FREEBSD_IEEE_INTERFACE@ +HAVE_GNUM68K_IEEE_INTERFACE = @HAVE_GNUM68K_IEEE_INTERFACE@ +HAVE_GNUPPC_IEEE_INTERFACE = @HAVE_GNUPPC_IEEE_INTERFACE@ +HAVE_GNUSPARC_IEEE_INTERFACE = @HAVE_GNUSPARC_IEEE_INTERFACE@ +HAVE_GNUX86_IEEE_INTERFACE = @HAVE_GNUX86_IEEE_INTERFACE@ +HAVE_HPUX11_IEEE_INTERFACE = @HAVE_HPUX11_IEEE_INTERFACE@ +HAVE_HPUX_IEEE_INTERFACE = @HAVE_HPUX_IEEE_INTERFACE@ +HAVE_IRIX_IEEE_INTERFACE = @HAVE_IRIX_IEEE_INTERFACE@ +HAVE_NETBSD_IEEE_INTERFACE = @HAVE_NETBSD_IEEE_INTERFACE@ +HAVE_OPENBSD_IEEE_INTERFACE = @HAVE_OPENBSD_IEEE_INTERFACE@ +HAVE_OS2EMX_IEEE_INTERFACE = @HAVE_OS2EMX_IEEE_INTERFACE@ +HAVE_SOLARIS_IEEE_INTERFACE = @HAVE_SOLARIS_IEEE_INTERFACE@ +HAVE_SUNOS4_IEEE_INTERFACE = @HAVE_SUNOS4_IEEE_INTERFACE@ +HAVE_TRU64_IEEE_INTERFACE = @HAVE_TRU64_IEEE_INTERFACE@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBM = @LIBM@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu gsl/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu gsl/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +tags TAGS: + +ctags CTAGS: + +cscope cscopelist: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool clean-local mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-local + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + clean-local cscopelist-am ctags-am distclean distclean-generic \ + distclean-libtool distclean-local distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am tags-am uninstall \ + uninstall-am + + +header-links: remove-links + HEADERLIST="$(top_srcdir)/gsl*.h $(top_srcdir)/*/gsl*.h"; \ + for h in $$HEADERLIST; do \ + BASENAME=`basename $$h`; \ + test -r $$BASENAME || $(LN_S) $$h $$BASENAME; \ + done + +remove-links: + rm -f gsl*.h + +all: all-am header-links + +clean-local: remove-links +distclean-local: remove-links + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gsl-2.5/gsl/gsl_blas.h b/gsl-2.5/gsl/gsl_blas.h new file mode 120000 index 00000000..d8826ae4 --- /dev/null +++ b/gsl-2.5/gsl/gsl_blas.h @@ -0,0 +1 @@ +../blas/gsl_blas.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_blas_types.h b/gsl-2.5/gsl/gsl_blas_types.h new file mode 120000 index 00000000..ea2107f3 --- /dev/null +++ b/gsl-2.5/gsl/gsl_blas_types.h @@ -0,0 +1 @@ +../blas/gsl_blas_types.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_block.h b/gsl-2.5/gsl/gsl_block.h new file mode 120000 index 00000000..c9cc863a --- /dev/null +++ b/gsl-2.5/gsl/gsl_block.h @@ -0,0 +1 @@ +../block/gsl_block.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_block_char.h b/gsl-2.5/gsl/gsl_block_char.h new file mode 120000 index 00000000..c38e5c79 --- /dev/null +++ b/gsl-2.5/gsl/gsl_block_char.h @@ -0,0 +1 @@ +../block/gsl_block_char.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_block_complex_double.h b/gsl-2.5/gsl/gsl_block_complex_double.h new file mode 120000 index 00000000..5fb29f67 --- /dev/null +++ b/gsl-2.5/gsl/gsl_block_complex_double.h @@ -0,0 +1 @@ +../block/gsl_block_complex_double.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_block_complex_float.h b/gsl-2.5/gsl/gsl_block_complex_float.h new file mode 120000 index 00000000..ff235046 --- /dev/null +++ b/gsl-2.5/gsl/gsl_block_complex_float.h @@ -0,0 +1 @@ +../block/gsl_block_complex_float.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_block_complex_long_double.h b/gsl-2.5/gsl/gsl_block_complex_long_double.h new file mode 120000 index 00000000..06def276 --- /dev/null +++ b/gsl-2.5/gsl/gsl_block_complex_long_double.h @@ -0,0 +1 @@ +../block/gsl_block_complex_long_double.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_block_double.h b/gsl-2.5/gsl/gsl_block_double.h new file mode 120000 index 00000000..40f5d3b9 --- /dev/null +++ b/gsl-2.5/gsl/gsl_block_double.h @@ -0,0 +1 @@ +../block/gsl_block_double.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_block_float.h b/gsl-2.5/gsl/gsl_block_float.h new file mode 120000 index 00000000..5d69a622 --- /dev/null +++ b/gsl-2.5/gsl/gsl_block_float.h @@ -0,0 +1 @@ +../block/gsl_block_float.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_block_int.h b/gsl-2.5/gsl/gsl_block_int.h new file mode 120000 index 00000000..bff53b7e --- /dev/null +++ b/gsl-2.5/gsl/gsl_block_int.h @@ -0,0 +1 @@ +../block/gsl_block_int.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_block_long.h b/gsl-2.5/gsl/gsl_block_long.h new file mode 120000 index 00000000..5c74960e --- /dev/null +++ b/gsl-2.5/gsl/gsl_block_long.h @@ -0,0 +1 @@ +../block/gsl_block_long.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_block_long_double.h b/gsl-2.5/gsl/gsl_block_long_double.h new file mode 120000 index 00000000..474bc810 --- /dev/null +++ b/gsl-2.5/gsl/gsl_block_long_double.h @@ -0,0 +1 @@ +../block/gsl_block_long_double.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_block_short.h b/gsl-2.5/gsl/gsl_block_short.h new file mode 120000 index 00000000..275114f4 --- /dev/null +++ b/gsl-2.5/gsl/gsl_block_short.h @@ -0,0 +1 @@ +../block/gsl_block_short.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_block_uchar.h b/gsl-2.5/gsl/gsl_block_uchar.h new file mode 120000 index 00000000..54513b74 --- /dev/null +++ b/gsl-2.5/gsl/gsl_block_uchar.h @@ -0,0 +1 @@ +../block/gsl_block_uchar.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_block_uint.h b/gsl-2.5/gsl/gsl_block_uint.h new file mode 120000 index 00000000..2151ae5b --- /dev/null +++ b/gsl-2.5/gsl/gsl_block_uint.h @@ -0,0 +1 @@ +../block/gsl_block_uint.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_block_ulong.h b/gsl-2.5/gsl/gsl_block_ulong.h new file mode 120000 index 00000000..ca97bc4a --- /dev/null +++ b/gsl-2.5/gsl/gsl_block_ulong.h @@ -0,0 +1 @@ +../block/gsl_block_ulong.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_block_ushort.h b/gsl-2.5/gsl/gsl_block_ushort.h new file mode 120000 index 00000000..90b5bc49 --- /dev/null +++ b/gsl-2.5/gsl/gsl_block_ushort.h @@ -0,0 +1 @@ +../block/gsl_block_ushort.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_bspline.h b/gsl-2.5/gsl/gsl_bspline.h new file mode 120000 index 00000000..ef62379f --- /dev/null +++ b/gsl-2.5/gsl/gsl_bspline.h @@ -0,0 +1 @@ +../bspline/gsl_bspline.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_cblas.h b/gsl-2.5/gsl/gsl_cblas.h new file mode 120000 index 00000000..3ee970d2 --- /dev/null +++ b/gsl-2.5/gsl/gsl_cblas.h @@ -0,0 +1 @@ +../cblas/gsl_cblas.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_cdf.h b/gsl-2.5/gsl/gsl_cdf.h new file mode 120000 index 00000000..9f72a699 --- /dev/null +++ b/gsl-2.5/gsl/gsl_cdf.h @@ -0,0 +1 @@ +../cdf/gsl_cdf.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_chebyshev.h b/gsl-2.5/gsl/gsl_chebyshev.h new file mode 120000 index 00000000..4841f645 --- /dev/null +++ b/gsl-2.5/gsl/gsl_chebyshev.h @@ -0,0 +1 @@ +../cheb/gsl_chebyshev.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_check_range.h b/gsl-2.5/gsl/gsl_check_range.h new file mode 120000 index 00000000..acff324a --- /dev/null +++ b/gsl-2.5/gsl/gsl_check_range.h @@ -0,0 +1 @@ +../block/gsl_check_range.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_combination.h b/gsl-2.5/gsl/gsl_combination.h new file mode 120000 index 00000000..40a27e64 --- /dev/null +++ b/gsl-2.5/gsl/gsl_combination.h @@ -0,0 +1 @@ +../combination/gsl_combination.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_complex.h b/gsl-2.5/gsl/gsl_complex.h new file mode 120000 index 00000000..a53a9f63 --- /dev/null +++ b/gsl-2.5/gsl/gsl_complex.h @@ -0,0 +1 @@ +../complex/gsl_complex.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_complex_math.h b/gsl-2.5/gsl/gsl_complex_math.h new file mode 120000 index 00000000..2c8cdcec --- /dev/null +++ b/gsl-2.5/gsl/gsl_complex_math.h @@ -0,0 +1 @@ +../complex/gsl_complex_math.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_const.h b/gsl-2.5/gsl/gsl_const.h new file mode 120000 index 00000000..79f8b2b2 --- /dev/null +++ b/gsl-2.5/gsl/gsl_const.h @@ -0,0 +1 @@ +../const/gsl_const.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_const_cgs.h b/gsl-2.5/gsl/gsl_const_cgs.h new file mode 120000 index 00000000..fed1d7e2 --- /dev/null +++ b/gsl-2.5/gsl/gsl_const_cgs.h @@ -0,0 +1 @@ +../const/gsl_const_cgs.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_const_cgsm.h b/gsl-2.5/gsl/gsl_const_cgsm.h new file mode 120000 index 00000000..16d8c87c --- /dev/null +++ b/gsl-2.5/gsl/gsl_const_cgsm.h @@ -0,0 +1 @@ +../const/gsl_const_cgsm.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_const_mks.h b/gsl-2.5/gsl/gsl_const_mks.h new file mode 120000 index 00000000..66634a2c --- /dev/null +++ b/gsl-2.5/gsl/gsl_const_mks.h @@ -0,0 +1 @@ +../const/gsl_const_mks.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_const_mksa.h b/gsl-2.5/gsl/gsl_const_mksa.h new file mode 120000 index 00000000..12751564 --- /dev/null +++ b/gsl-2.5/gsl/gsl_const_mksa.h @@ -0,0 +1 @@ +../const/gsl_const_mksa.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_const_num.h b/gsl-2.5/gsl/gsl_const_num.h new file mode 120000 index 00000000..41a25fcb --- /dev/null +++ b/gsl-2.5/gsl/gsl_const_num.h @@ -0,0 +1 @@ +../const/gsl_const_num.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_deriv.h b/gsl-2.5/gsl/gsl_deriv.h new file mode 120000 index 00000000..06c0fd5c --- /dev/null +++ b/gsl-2.5/gsl/gsl_deriv.h @@ -0,0 +1 @@ +../deriv/gsl_deriv.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_dft_complex.h b/gsl-2.5/gsl/gsl_dft_complex.h new file mode 120000 index 00000000..5ccf1535 --- /dev/null +++ b/gsl-2.5/gsl/gsl_dft_complex.h @@ -0,0 +1 @@ +../fft/gsl_dft_complex.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_dft_complex_float.h b/gsl-2.5/gsl/gsl_dft_complex_float.h new file mode 120000 index 00000000..ad4d16ee --- /dev/null +++ b/gsl-2.5/gsl/gsl_dft_complex_float.h @@ -0,0 +1 @@ +../fft/gsl_dft_complex_float.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_dht.h b/gsl-2.5/gsl/gsl_dht.h new file mode 120000 index 00000000..19455f84 --- /dev/null +++ b/gsl-2.5/gsl/gsl_dht.h @@ -0,0 +1 @@ +../dht/gsl_dht.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_diff.h b/gsl-2.5/gsl/gsl_diff.h new file mode 120000 index 00000000..956e5601 --- /dev/null +++ b/gsl-2.5/gsl/gsl_diff.h @@ -0,0 +1 @@ +../diff/gsl_diff.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_eigen.h b/gsl-2.5/gsl/gsl_eigen.h new file mode 120000 index 00000000..1eecfc75 --- /dev/null +++ b/gsl-2.5/gsl/gsl_eigen.h @@ -0,0 +1 @@ +../eigen/gsl_eigen.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_errno.h b/gsl-2.5/gsl/gsl_errno.h new file mode 120000 index 00000000..95d70ff4 --- /dev/null +++ b/gsl-2.5/gsl/gsl_errno.h @@ -0,0 +1 @@ +../err/gsl_errno.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_fft.h b/gsl-2.5/gsl/gsl_fft.h new file mode 120000 index 00000000..f80aef28 --- /dev/null +++ b/gsl-2.5/gsl/gsl_fft.h @@ -0,0 +1 @@ +../fft/gsl_fft.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_fft_complex.h b/gsl-2.5/gsl/gsl_fft_complex.h new file mode 120000 index 00000000..8f531f32 --- /dev/null +++ b/gsl-2.5/gsl/gsl_fft_complex.h @@ -0,0 +1 @@ +../fft/gsl_fft_complex.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_fft_complex_float.h b/gsl-2.5/gsl/gsl_fft_complex_float.h new file mode 120000 index 00000000..07b0fae4 --- /dev/null +++ b/gsl-2.5/gsl/gsl_fft_complex_float.h @@ -0,0 +1 @@ +../fft/gsl_fft_complex_float.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_fft_halfcomplex.h b/gsl-2.5/gsl/gsl_fft_halfcomplex.h new file mode 120000 index 00000000..27e441b4 --- /dev/null +++ b/gsl-2.5/gsl/gsl_fft_halfcomplex.h @@ -0,0 +1 @@ +../fft/gsl_fft_halfcomplex.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_fft_halfcomplex_float.h b/gsl-2.5/gsl/gsl_fft_halfcomplex_float.h new file mode 120000 index 00000000..71bc300f --- /dev/null +++ b/gsl-2.5/gsl/gsl_fft_halfcomplex_float.h @@ -0,0 +1 @@ +../fft/gsl_fft_halfcomplex_float.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_fft_real.h b/gsl-2.5/gsl/gsl_fft_real.h new file mode 120000 index 00000000..1265e241 --- /dev/null +++ b/gsl-2.5/gsl/gsl_fft_real.h @@ -0,0 +1 @@ +../fft/gsl_fft_real.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_fft_real_float.h b/gsl-2.5/gsl/gsl_fft_real_float.h new file mode 120000 index 00000000..388b3d64 --- /dev/null +++ b/gsl-2.5/gsl/gsl_fft_real_float.h @@ -0,0 +1 @@ +../fft/gsl_fft_real_float.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_filter.h b/gsl-2.5/gsl/gsl_filter.h new file mode 120000 index 00000000..4edfcf97 --- /dev/null +++ b/gsl-2.5/gsl/gsl_filter.h @@ -0,0 +1 @@ +../filter/gsl_filter.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_fit.h b/gsl-2.5/gsl/gsl_fit.h new file mode 120000 index 00000000..4ced2f0d --- /dev/null +++ b/gsl-2.5/gsl/gsl_fit.h @@ -0,0 +1 @@ +../fit/gsl_fit.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_heapsort.h b/gsl-2.5/gsl/gsl_heapsort.h new file mode 120000 index 00000000..408e1e8d --- /dev/null +++ b/gsl-2.5/gsl/gsl_heapsort.h @@ -0,0 +1 @@ +../sort/gsl_heapsort.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_histogram.h b/gsl-2.5/gsl/gsl_histogram.h new file mode 120000 index 00000000..36c2e9ef --- /dev/null +++ b/gsl-2.5/gsl/gsl_histogram.h @@ -0,0 +1 @@ +../histogram/gsl_histogram.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_histogram2d.h b/gsl-2.5/gsl/gsl_histogram2d.h new file mode 120000 index 00000000..b6fe257d --- /dev/null +++ b/gsl-2.5/gsl/gsl_histogram2d.h @@ -0,0 +1 @@ +../histogram/gsl_histogram2d.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_ieee_utils.h b/gsl-2.5/gsl/gsl_ieee_utils.h new file mode 120000 index 00000000..7d280f3b --- /dev/null +++ b/gsl-2.5/gsl/gsl_ieee_utils.h @@ -0,0 +1 @@ +../ieee-utils/gsl_ieee_utils.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_inline.h b/gsl-2.5/gsl/gsl_inline.h new file mode 120000 index 00000000..fde66dd7 --- /dev/null +++ b/gsl-2.5/gsl/gsl_inline.h @@ -0,0 +1 @@ +../gsl_inline.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_integration.h b/gsl-2.5/gsl/gsl_integration.h new file mode 120000 index 00000000..85b2fe8d --- /dev/null +++ b/gsl-2.5/gsl/gsl_integration.h @@ -0,0 +1 @@ +../integration/gsl_integration.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_interp.h b/gsl-2.5/gsl/gsl_interp.h new file mode 120000 index 00000000..b4712e8c --- /dev/null +++ b/gsl-2.5/gsl/gsl_interp.h @@ -0,0 +1 @@ +../interpolation/gsl_interp.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_interp2d.h b/gsl-2.5/gsl/gsl_interp2d.h new file mode 120000 index 00000000..56afe03c --- /dev/null +++ b/gsl-2.5/gsl/gsl_interp2d.h @@ -0,0 +1 @@ +../interpolation/gsl_interp2d.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_linalg.h b/gsl-2.5/gsl/gsl_linalg.h new file mode 120000 index 00000000..8cdc14eb --- /dev/null +++ b/gsl-2.5/gsl/gsl_linalg.h @@ -0,0 +1 @@ +../linalg/gsl_linalg.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_machine.h b/gsl-2.5/gsl/gsl_machine.h new file mode 120000 index 00000000..136e5ff2 --- /dev/null +++ b/gsl-2.5/gsl/gsl_machine.h @@ -0,0 +1 @@ +../gsl_machine.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_math.h b/gsl-2.5/gsl/gsl_math.h new file mode 120000 index 00000000..b6a2f9e4 --- /dev/null +++ b/gsl-2.5/gsl/gsl_math.h @@ -0,0 +1 @@ +../gsl_math.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_matrix.h b/gsl-2.5/gsl/gsl_matrix.h new file mode 120000 index 00000000..43c41169 --- /dev/null +++ b/gsl-2.5/gsl/gsl_matrix.h @@ -0,0 +1 @@ +../matrix/gsl_matrix.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_matrix_char.h b/gsl-2.5/gsl/gsl_matrix_char.h new file mode 120000 index 00000000..d8ba14fa --- /dev/null +++ b/gsl-2.5/gsl/gsl_matrix_char.h @@ -0,0 +1 @@ +../matrix/gsl_matrix_char.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_matrix_complex_double.h b/gsl-2.5/gsl/gsl_matrix_complex_double.h new file mode 120000 index 00000000..4a009ca0 --- /dev/null +++ b/gsl-2.5/gsl/gsl_matrix_complex_double.h @@ -0,0 +1 @@ +../matrix/gsl_matrix_complex_double.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_matrix_complex_float.h b/gsl-2.5/gsl/gsl_matrix_complex_float.h new file mode 120000 index 00000000..09448047 --- /dev/null +++ b/gsl-2.5/gsl/gsl_matrix_complex_float.h @@ -0,0 +1 @@ +../matrix/gsl_matrix_complex_float.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_matrix_complex_long_double.h b/gsl-2.5/gsl/gsl_matrix_complex_long_double.h new file mode 120000 index 00000000..9e2c3dbe --- /dev/null +++ b/gsl-2.5/gsl/gsl_matrix_complex_long_double.h @@ -0,0 +1 @@ +../matrix/gsl_matrix_complex_long_double.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_matrix_double.h b/gsl-2.5/gsl/gsl_matrix_double.h new file mode 120000 index 00000000..ac49dacf --- /dev/null +++ b/gsl-2.5/gsl/gsl_matrix_double.h @@ -0,0 +1 @@ +../matrix/gsl_matrix_double.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_matrix_float.h b/gsl-2.5/gsl/gsl_matrix_float.h new file mode 120000 index 00000000..9af95e02 --- /dev/null +++ b/gsl-2.5/gsl/gsl_matrix_float.h @@ -0,0 +1 @@ +../matrix/gsl_matrix_float.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_matrix_int.h b/gsl-2.5/gsl/gsl_matrix_int.h new file mode 120000 index 00000000..c3d12558 --- /dev/null +++ b/gsl-2.5/gsl/gsl_matrix_int.h @@ -0,0 +1 @@ +../matrix/gsl_matrix_int.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_matrix_long.h b/gsl-2.5/gsl/gsl_matrix_long.h new file mode 120000 index 00000000..53c876ab --- /dev/null +++ b/gsl-2.5/gsl/gsl_matrix_long.h @@ -0,0 +1 @@ +../matrix/gsl_matrix_long.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_matrix_long_double.h b/gsl-2.5/gsl/gsl_matrix_long_double.h new file mode 120000 index 00000000..55d5b5d4 --- /dev/null +++ b/gsl-2.5/gsl/gsl_matrix_long_double.h @@ -0,0 +1 @@ +../matrix/gsl_matrix_long_double.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_matrix_short.h b/gsl-2.5/gsl/gsl_matrix_short.h new file mode 120000 index 00000000..ff6a8168 --- /dev/null +++ b/gsl-2.5/gsl/gsl_matrix_short.h @@ -0,0 +1 @@ +../matrix/gsl_matrix_short.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_matrix_uchar.h b/gsl-2.5/gsl/gsl_matrix_uchar.h new file mode 120000 index 00000000..c2197b2b --- /dev/null +++ b/gsl-2.5/gsl/gsl_matrix_uchar.h @@ -0,0 +1 @@ +../matrix/gsl_matrix_uchar.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_matrix_uint.h b/gsl-2.5/gsl/gsl_matrix_uint.h new file mode 120000 index 00000000..54870d1a --- /dev/null +++ b/gsl-2.5/gsl/gsl_matrix_uint.h @@ -0,0 +1 @@ +../matrix/gsl_matrix_uint.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_matrix_ulong.h b/gsl-2.5/gsl/gsl_matrix_ulong.h new file mode 120000 index 00000000..7e7e34b7 --- /dev/null +++ b/gsl-2.5/gsl/gsl_matrix_ulong.h @@ -0,0 +1 @@ +../matrix/gsl_matrix_ulong.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_matrix_ushort.h b/gsl-2.5/gsl/gsl_matrix_ushort.h new file mode 120000 index 00000000..be6735d1 --- /dev/null +++ b/gsl-2.5/gsl/gsl_matrix_ushort.h @@ -0,0 +1 @@ +../matrix/gsl_matrix_ushort.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_message.h b/gsl-2.5/gsl/gsl_message.h new file mode 120000 index 00000000..ac930653 --- /dev/null +++ b/gsl-2.5/gsl/gsl_message.h @@ -0,0 +1 @@ +../err/gsl_message.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_min.h b/gsl-2.5/gsl/gsl_min.h new file mode 120000 index 00000000..82a53fff --- /dev/null +++ b/gsl-2.5/gsl/gsl_min.h @@ -0,0 +1 @@ +../min/gsl_min.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_minmax.h b/gsl-2.5/gsl/gsl_minmax.h new file mode 120000 index 00000000..b5d19b97 --- /dev/null +++ b/gsl-2.5/gsl/gsl_minmax.h @@ -0,0 +1 @@ +../gsl_minmax.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_mode.h b/gsl-2.5/gsl/gsl_mode.h new file mode 120000 index 00000000..24210296 --- /dev/null +++ b/gsl-2.5/gsl/gsl_mode.h @@ -0,0 +1 @@ +../gsl_mode.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_monte.h b/gsl-2.5/gsl/gsl_monte.h new file mode 120000 index 00000000..39229c79 --- /dev/null +++ b/gsl-2.5/gsl/gsl_monte.h @@ -0,0 +1 @@ +../monte/gsl_monte.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_monte_miser.h b/gsl-2.5/gsl/gsl_monte_miser.h new file mode 120000 index 00000000..e5bbbc3c --- /dev/null +++ b/gsl-2.5/gsl/gsl_monte_miser.h @@ -0,0 +1 @@ +../monte/gsl_monte_miser.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_monte_plain.h b/gsl-2.5/gsl/gsl_monte_plain.h new file mode 120000 index 00000000..3df69069 --- /dev/null +++ b/gsl-2.5/gsl/gsl_monte_plain.h @@ -0,0 +1 @@ +../monte/gsl_monte_plain.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_monte_vegas.h b/gsl-2.5/gsl/gsl_monte_vegas.h new file mode 120000 index 00000000..0576a31d --- /dev/null +++ b/gsl-2.5/gsl/gsl_monte_vegas.h @@ -0,0 +1 @@ +../monte/gsl_monte_vegas.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_movstat.h b/gsl-2.5/gsl/gsl_movstat.h new file mode 120000 index 00000000..c29af28c --- /dev/null +++ b/gsl-2.5/gsl/gsl_movstat.h @@ -0,0 +1 @@ +../movstat/gsl_movstat.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_multifit.h b/gsl-2.5/gsl/gsl_multifit.h new file mode 120000 index 00000000..f5c73f5b --- /dev/null +++ b/gsl-2.5/gsl/gsl_multifit.h @@ -0,0 +1 @@ +../multifit/gsl_multifit.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_multifit_nlin.h b/gsl-2.5/gsl/gsl_multifit_nlin.h new file mode 120000 index 00000000..0a681312 --- /dev/null +++ b/gsl-2.5/gsl/gsl_multifit_nlin.h @@ -0,0 +1 @@ +../multifit/gsl_multifit_nlin.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_multifit_nlinear.h b/gsl-2.5/gsl/gsl_multifit_nlinear.h new file mode 120000 index 00000000..6b9946e8 --- /dev/null +++ b/gsl-2.5/gsl/gsl_multifit_nlinear.h @@ -0,0 +1 @@ +../multifit_nlinear/gsl_multifit_nlinear.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_multilarge.h b/gsl-2.5/gsl/gsl_multilarge.h new file mode 120000 index 00000000..135f9b42 --- /dev/null +++ b/gsl-2.5/gsl/gsl_multilarge.h @@ -0,0 +1 @@ +../multilarge/gsl_multilarge.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_multilarge_nlinear.h b/gsl-2.5/gsl/gsl_multilarge_nlinear.h new file mode 120000 index 00000000..adbd202f --- /dev/null +++ b/gsl-2.5/gsl/gsl_multilarge_nlinear.h @@ -0,0 +1 @@ +../multilarge_nlinear/gsl_multilarge_nlinear.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_multimin.h b/gsl-2.5/gsl/gsl_multimin.h new file mode 120000 index 00000000..b0671942 --- /dev/null +++ b/gsl-2.5/gsl/gsl_multimin.h @@ -0,0 +1 @@ +../multimin/gsl_multimin.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_multiroots.h b/gsl-2.5/gsl/gsl_multiroots.h new file mode 120000 index 00000000..30bef9c3 --- /dev/null +++ b/gsl-2.5/gsl/gsl_multiroots.h @@ -0,0 +1 @@ +../multiroots/gsl_multiroots.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_multiset.h b/gsl-2.5/gsl/gsl_multiset.h new file mode 120000 index 00000000..4ce11720 --- /dev/null +++ b/gsl-2.5/gsl/gsl_multiset.h @@ -0,0 +1 @@ +../multiset/gsl_multiset.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_nan.h b/gsl-2.5/gsl/gsl_nan.h new file mode 120000 index 00000000..b973e719 --- /dev/null +++ b/gsl-2.5/gsl/gsl_nan.h @@ -0,0 +1 @@ +../gsl_nan.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_ntuple.h b/gsl-2.5/gsl/gsl_ntuple.h new file mode 120000 index 00000000..425d9402 --- /dev/null +++ b/gsl-2.5/gsl/gsl_ntuple.h @@ -0,0 +1 @@ +../ntuple/gsl_ntuple.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_odeiv.h b/gsl-2.5/gsl/gsl_odeiv.h new file mode 120000 index 00000000..a4e5e715 --- /dev/null +++ b/gsl-2.5/gsl/gsl_odeiv.h @@ -0,0 +1 @@ +../ode-initval/gsl_odeiv.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_odeiv2.h b/gsl-2.5/gsl/gsl_odeiv2.h new file mode 120000 index 00000000..3134a1ef --- /dev/null +++ b/gsl-2.5/gsl/gsl_odeiv2.h @@ -0,0 +1 @@ +../ode-initval2/gsl_odeiv2.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_permutation.h b/gsl-2.5/gsl/gsl_permutation.h new file mode 120000 index 00000000..b48fd683 --- /dev/null +++ b/gsl-2.5/gsl/gsl_permutation.h @@ -0,0 +1 @@ +../permutation/gsl_permutation.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_permute.h b/gsl-2.5/gsl/gsl_permute.h new file mode 120000 index 00000000..c15f0627 --- /dev/null +++ b/gsl-2.5/gsl/gsl_permute.h @@ -0,0 +1 @@ +../permutation/gsl_permute.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_permute_char.h b/gsl-2.5/gsl/gsl_permute_char.h new file mode 120000 index 00000000..a992d494 --- /dev/null +++ b/gsl-2.5/gsl/gsl_permute_char.h @@ -0,0 +1 @@ +../permutation/gsl_permute_char.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_permute_complex_double.h b/gsl-2.5/gsl/gsl_permute_complex_double.h new file mode 120000 index 00000000..24209bb6 --- /dev/null +++ b/gsl-2.5/gsl/gsl_permute_complex_double.h @@ -0,0 +1 @@ +../permutation/gsl_permute_complex_double.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_permute_complex_float.h b/gsl-2.5/gsl/gsl_permute_complex_float.h new file mode 120000 index 00000000..84ea0a67 --- /dev/null +++ b/gsl-2.5/gsl/gsl_permute_complex_float.h @@ -0,0 +1 @@ +../permutation/gsl_permute_complex_float.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_permute_complex_long_double.h b/gsl-2.5/gsl/gsl_permute_complex_long_double.h new file mode 120000 index 00000000..01bc706d --- /dev/null +++ b/gsl-2.5/gsl/gsl_permute_complex_long_double.h @@ -0,0 +1 @@ +../permutation/gsl_permute_complex_long_double.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_permute_double.h b/gsl-2.5/gsl/gsl_permute_double.h new file mode 120000 index 00000000..2b0f421b --- /dev/null +++ b/gsl-2.5/gsl/gsl_permute_double.h @@ -0,0 +1 @@ +../permutation/gsl_permute_double.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_permute_float.h b/gsl-2.5/gsl/gsl_permute_float.h new file mode 120000 index 00000000..f8d32253 --- /dev/null +++ b/gsl-2.5/gsl/gsl_permute_float.h @@ -0,0 +1 @@ +../permutation/gsl_permute_float.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_permute_int.h b/gsl-2.5/gsl/gsl_permute_int.h new file mode 120000 index 00000000..29d96c6c --- /dev/null +++ b/gsl-2.5/gsl/gsl_permute_int.h @@ -0,0 +1 @@ +../permutation/gsl_permute_int.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_permute_long.h b/gsl-2.5/gsl/gsl_permute_long.h new file mode 120000 index 00000000..662ff9e2 --- /dev/null +++ b/gsl-2.5/gsl/gsl_permute_long.h @@ -0,0 +1 @@ +../permutation/gsl_permute_long.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_permute_long_double.h b/gsl-2.5/gsl/gsl_permute_long_double.h new file mode 120000 index 00000000..466022be --- /dev/null +++ b/gsl-2.5/gsl/gsl_permute_long_double.h @@ -0,0 +1 @@ +../permutation/gsl_permute_long_double.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_permute_matrix.h b/gsl-2.5/gsl/gsl_permute_matrix.h new file mode 120000 index 00000000..6a997589 --- /dev/null +++ b/gsl-2.5/gsl/gsl_permute_matrix.h @@ -0,0 +1 @@ +../permutation/gsl_permute_matrix.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_permute_matrix_char.h b/gsl-2.5/gsl/gsl_permute_matrix_char.h new file mode 120000 index 00000000..0c823a04 --- /dev/null +++ b/gsl-2.5/gsl/gsl_permute_matrix_char.h @@ -0,0 +1 @@ +../permutation/gsl_permute_matrix_char.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_permute_matrix_complex_double.h b/gsl-2.5/gsl/gsl_permute_matrix_complex_double.h new file mode 120000 index 00000000..01d60dbc --- /dev/null +++ b/gsl-2.5/gsl/gsl_permute_matrix_complex_double.h @@ -0,0 +1 @@ +../permutation/gsl_permute_matrix_complex_double.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_permute_matrix_complex_float.h b/gsl-2.5/gsl/gsl_permute_matrix_complex_float.h new file mode 120000 index 00000000..0776feaf --- /dev/null +++ b/gsl-2.5/gsl/gsl_permute_matrix_complex_float.h @@ -0,0 +1 @@ +../permutation/gsl_permute_matrix_complex_float.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_permute_matrix_complex_long_double.h b/gsl-2.5/gsl/gsl_permute_matrix_complex_long_double.h new file mode 120000 index 00000000..937facdd --- /dev/null +++ b/gsl-2.5/gsl/gsl_permute_matrix_complex_long_double.h @@ -0,0 +1 @@ +../permutation/gsl_permute_matrix_complex_long_double.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_permute_matrix_double.h b/gsl-2.5/gsl/gsl_permute_matrix_double.h new file mode 120000 index 00000000..4343df53 --- /dev/null +++ b/gsl-2.5/gsl/gsl_permute_matrix_double.h @@ -0,0 +1 @@ +../permutation/gsl_permute_matrix_double.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_permute_matrix_float.h b/gsl-2.5/gsl/gsl_permute_matrix_float.h new file mode 120000 index 00000000..cdb91f30 --- /dev/null +++ b/gsl-2.5/gsl/gsl_permute_matrix_float.h @@ -0,0 +1 @@ +../permutation/gsl_permute_matrix_float.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_permute_matrix_int.h b/gsl-2.5/gsl/gsl_permute_matrix_int.h new file mode 120000 index 00000000..a4cef89c --- /dev/null +++ b/gsl-2.5/gsl/gsl_permute_matrix_int.h @@ -0,0 +1 @@ +../permutation/gsl_permute_matrix_int.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_permute_matrix_long.h b/gsl-2.5/gsl/gsl_permute_matrix_long.h new file mode 120000 index 00000000..afc0b1eb --- /dev/null +++ b/gsl-2.5/gsl/gsl_permute_matrix_long.h @@ -0,0 +1 @@ +../permutation/gsl_permute_matrix_long.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_permute_matrix_long_double.h b/gsl-2.5/gsl/gsl_permute_matrix_long_double.h new file mode 120000 index 00000000..b8248565 --- /dev/null +++ b/gsl-2.5/gsl/gsl_permute_matrix_long_double.h @@ -0,0 +1 @@ +../permutation/gsl_permute_matrix_long_double.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_permute_matrix_short.h b/gsl-2.5/gsl/gsl_permute_matrix_short.h new file mode 120000 index 00000000..154a0bbe --- /dev/null +++ b/gsl-2.5/gsl/gsl_permute_matrix_short.h @@ -0,0 +1 @@ +../permutation/gsl_permute_matrix_short.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_permute_matrix_uchar.h b/gsl-2.5/gsl/gsl_permute_matrix_uchar.h new file mode 120000 index 00000000..18332f88 --- /dev/null +++ b/gsl-2.5/gsl/gsl_permute_matrix_uchar.h @@ -0,0 +1 @@ +../permutation/gsl_permute_matrix_uchar.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_permute_matrix_uint.h b/gsl-2.5/gsl/gsl_permute_matrix_uint.h new file mode 120000 index 00000000..f3c4da0f --- /dev/null +++ b/gsl-2.5/gsl/gsl_permute_matrix_uint.h @@ -0,0 +1 @@ +../permutation/gsl_permute_matrix_uint.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_permute_matrix_ulong.h b/gsl-2.5/gsl/gsl_permute_matrix_ulong.h new file mode 120000 index 00000000..47ea858d --- /dev/null +++ b/gsl-2.5/gsl/gsl_permute_matrix_ulong.h @@ -0,0 +1 @@ +../permutation/gsl_permute_matrix_ulong.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_permute_matrix_ushort.h b/gsl-2.5/gsl/gsl_permute_matrix_ushort.h new file mode 120000 index 00000000..e79bf10d --- /dev/null +++ b/gsl-2.5/gsl/gsl_permute_matrix_ushort.h @@ -0,0 +1 @@ +../permutation/gsl_permute_matrix_ushort.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_permute_short.h b/gsl-2.5/gsl/gsl_permute_short.h new file mode 120000 index 00000000..b9b42515 --- /dev/null +++ b/gsl-2.5/gsl/gsl_permute_short.h @@ -0,0 +1 @@ +../permutation/gsl_permute_short.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_permute_uchar.h b/gsl-2.5/gsl/gsl_permute_uchar.h new file mode 120000 index 00000000..6aac1c4f --- /dev/null +++ b/gsl-2.5/gsl/gsl_permute_uchar.h @@ -0,0 +1 @@ +../permutation/gsl_permute_uchar.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_permute_uint.h b/gsl-2.5/gsl/gsl_permute_uint.h new file mode 120000 index 00000000..4763ec24 --- /dev/null +++ b/gsl-2.5/gsl/gsl_permute_uint.h @@ -0,0 +1 @@ +../permutation/gsl_permute_uint.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_permute_ulong.h b/gsl-2.5/gsl/gsl_permute_ulong.h new file mode 120000 index 00000000..fba25401 --- /dev/null +++ b/gsl-2.5/gsl/gsl_permute_ulong.h @@ -0,0 +1 @@ +../permutation/gsl_permute_ulong.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_permute_ushort.h b/gsl-2.5/gsl/gsl_permute_ushort.h new file mode 120000 index 00000000..80c0c2b9 --- /dev/null +++ b/gsl-2.5/gsl/gsl_permute_ushort.h @@ -0,0 +1 @@ +../permutation/gsl_permute_ushort.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_permute_vector.h b/gsl-2.5/gsl/gsl_permute_vector.h new file mode 120000 index 00000000..76265078 --- /dev/null +++ b/gsl-2.5/gsl/gsl_permute_vector.h @@ -0,0 +1 @@ +../permutation/gsl_permute_vector.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_permute_vector_char.h b/gsl-2.5/gsl/gsl_permute_vector_char.h new file mode 120000 index 00000000..ea9638c0 --- /dev/null +++ b/gsl-2.5/gsl/gsl_permute_vector_char.h @@ -0,0 +1 @@ +../permutation/gsl_permute_vector_char.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_permute_vector_complex_double.h b/gsl-2.5/gsl/gsl_permute_vector_complex_double.h new file mode 120000 index 00000000..bd7999f6 --- /dev/null +++ b/gsl-2.5/gsl/gsl_permute_vector_complex_double.h @@ -0,0 +1 @@ +../permutation/gsl_permute_vector_complex_double.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_permute_vector_complex_float.h b/gsl-2.5/gsl/gsl_permute_vector_complex_float.h new file mode 120000 index 00000000..1b656d00 --- /dev/null +++ b/gsl-2.5/gsl/gsl_permute_vector_complex_float.h @@ -0,0 +1 @@ +../permutation/gsl_permute_vector_complex_float.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_permute_vector_complex_long_double.h b/gsl-2.5/gsl/gsl_permute_vector_complex_long_double.h new file mode 120000 index 00000000..c8637392 --- /dev/null +++ b/gsl-2.5/gsl/gsl_permute_vector_complex_long_double.h @@ -0,0 +1 @@ +../permutation/gsl_permute_vector_complex_long_double.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_permute_vector_double.h b/gsl-2.5/gsl/gsl_permute_vector_double.h new file mode 120000 index 00000000..4d81832b --- /dev/null +++ b/gsl-2.5/gsl/gsl_permute_vector_double.h @@ -0,0 +1 @@ +../permutation/gsl_permute_vector_double.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_permute_vector_float.h b/gsl-2.5/gsl/gsl_permute_vector_float.h new file mode 120000 index 00000000..1249cf9a --- /dev/null +++ b/gsl-2.5/gsl/gsl_permute_vector_float.h @@ -0,0 +1 @@ +../permutation/gsl_permute_vector_float.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_permute_vector_int.h b/gsl-2.5/gsl/gsl_permute_vector_int.h new file mode 120000 index 00000000..7132e975 --- /dev/null +++ b/gsl-2.5/gsl/gsl_permute_vector_int.h @@ -0,0 +1 @@ +../permutation/gsl_permute_vector_int.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_permute_vector_long.h b/gsl-2.5/gsl/gsl_permute_vector_long.h new file mode 120000 index 00000000..915d582c --- /dev/null +++ b/gsl-2.5/gsl/gsl_permute_vector_long.h @@ -0,0 +1 @@ +../permutation/gsl_permute_vector_long.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_permute_vector_long_double.h b/gsl-2.5/gsl/gsl_permute_vector_long_double.h new file mode 120000 index 00000000..797cdd56 --- /dev/null +++ b/gsl-2.5/gsl/gsl_permute_vector_long_double.h @@ -0,0 +1 @@ +../permutation/gsl_permute_vector_long_double.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_permute_vector_short.h b/gsl-2.5/gsl/gsl_permute_vector_short.h new file mode 120000 index 00000000..a2ee0df7 --- /dev/null +++ b/gsl-2.5/gsl/gsl_permute_vector_short.h @@ -0,0 +1 @@ +../permutation/gsl_permute_vector_short.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_permute_vector_uchar.h b/gsl-2.5/gsl/gsl_permute_vector_uchar.h new file mode 120000 index 00000000..b4c52c8a --- /dev/null +++ b/gsl-2.5/gsl/gsl_permute_vector_uchar.h @@ -0,0 +1 @@ +../permutation/gsl_permute_vector_uchar.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_permute_vector_uint.h b/gsl-2.5/gsl/gsl_permute_vector_uint.h new file mode 120000 index 00000000..444b2476 --- /dev/null +++ b/gsl-2.5/gsl/gsl_permute_vector_uint.h @@ -0,0 +1 @@ +../permutation/gsl_permute_vector_uint.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_permute_vector_ulong.h b/gsl-2.5/gsl/gsl_permute_vector_ulong.h new file mode 120000 index 00000000..fdf2c78c --- /dev/null +++ b/gsl-2.5/gsl/gsl_permute_vector_ulong.h @@ -0,0 +1 @@ +../permutation/gsl_permute_vector_ulong.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_permute_vector_ushort.h b/gsl-2.5/gsl/gsl_permute_vector_ushort.h new file mode 120000 index 00000000..e1167ecf --- /dev/null +++ b/gsl-2.5/gsl/gsl_permute_vector_ushort.h @@ -0,0 +1 @@ +../permutation/gsl_permute_vector_ushort.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_poly.h b/gsl-2.5/gsl/gsl_poly.h new file mode 120000 index 00000000..fa40a694 --- /dev/null +++ b/gsl-2.5/gsl/gsl_poly.h @@ -0,0 +1 @@ +../poly/gsl_poly.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_pow_int.h b/gsl-2.5/gsl/gsl_pow_int.h new file mode 120000 index 00000000..36102df5 --- /dev/null +++ b/gsl-2.5/gsl/gsl_pow_int.h @@ -0,0 +1 @@ +../gsl_pow_int.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_precision.h b/gsl-2.5/gsl/gsl_precision.h new file mode 120000 index 00000000..592a0246 --- /dev/null +++ b/gsl-2.5/gsl/gsl_precision.h @@ -0,0 +1 @@ +../gsl_precision.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_qrng.h b/gsl-2.5/gsl/gsl_qrng.h new file mode 120000 index 00000000..49614884 --- /dev/null +++ b/gsl-2.5/gsl/gsl_qrng.h @@ -0,0 +1 @@ +../qrng/gsl_qrng.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_randist.h b/gsl-2.5/gsl/gsl_randist.h new file mode 120000 index 00000000..1d843656 --- /dev/null +++ b/gsl-2.5/gsl/gsl_randist.h @@ -0,0 +1 @@ +../randist/gsl_randist.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_rng.h b/gsl-2.5/gsl/gsl_rng.h new file mode 120000 index 00000000..d80e7634 --- /dev/null +++ b/gsl-2.5/gsl/gsl_rng.h @@ -0,0 +1 @@ +../rng/gsl_rng.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_roots.h b/gsl-2.5/gsl/gsl_roots.h new file mode 120000 index 00000000..b81f4a39 --- /dev/null +++ b/gsl-2.5/gsl/gsl_roots.h @@ -0,0 +1 @@ +../roots/gsl_roots.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_rstat.h b/gsl-2.5/gsl/gsl_rstat.h new file mode 120000 index 00000000..44584a20 --- /dev/null +++ b/gsl-2.5/gsl/gsl_rstat.h @@ -0,0 +1 @@ +../rstat/gsl_rstat.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_sf.h b/gsl-2.5/gsl/gsl_sf.h new file mode 120000 index 00000000..1d13220e --- /dev/null +++ b/gsl-2.5/gsl/gsl_sf.h @@ -0,0 +1 @@ +../specfunc/gsl_sf.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_sf_airy.h b/gsl-2.5/gsl/gsl_sf_airy.h new file mode 120000 index 00000000..752ee3d9 --- /dev/null +++ b/gsl-2.5/gsl/gsl_sf_airy.h @@ -0,0 +1 @@ +../specfunc/gsl_sf_airy.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_sf_bessel.h b/gsl-2.5/gsl/gsl_sf_bessel.h new file mode 120000 index 00000000..99b857c1 --- /dev/null +++ b/gsl-2.5/gsl/gsl_sf_bessel.h @@ -0,0 +1 @@ +../specfunc/gsl_sf_bessel.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_sf_clausen.h b/gsl-2.5/gsl/gsl_sf_clausen.h new file mode 120000 index 00000000..c9f74349 --- /dev/null +++ b/gsl-2.5/gsl/gsl_sf_clausen.h @@ -0,0 +1 @@ +../specfunc/gsl_sf_clausen.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_sf_coulomb.h b/gsl-2.5/gsl/gsl_sf_coulomb.h new file mode 120000 index 00000000..e440badd --- /dev/null +++ b/gsl-2.5/gsl/gsl_sf_coulomb.h @@ -0,0 +1 @@ +../specfunc/gsl_sf_coulomb.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_sf_coupling.h b/gsl-2.5/gsl/gsl_sf_coupling.h new file mode 120000 index 00000000..760c1f55 --- /dev/null +++ b/gsl-2.5/gsl/gsl_sf_coupling.h @@ -0,0 +1 @@ +../specfunc/gsl_sf_coupling.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_sf_dawson.h b/gsl-2.5/gsl/gsl_sf_dawson.h new file mode 120000 index 00000000..62466e05 --- /dev/null +++ b/gsl-2.5/gsl/gsl_sf_dawson.h @@ -0,0 +1 @@ +../specfunc/gsl_sf_dawson.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_sf_debye.h b/gsl-2.5/gsl/gsl_sf_debye.h new file mode 120000 index 00000000..77eac0d9 --- /dev/null +++ b/gsl-2.5/gsl/gsl_sf_debye.h @@ -0,0 +1 @@ +../specfunc/gsl_sf_debye.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_sf_dilog.h b/gsl-2.5/gsl/gsl_sf_dilog.h new file mode 120000 index 00000000..766fdd5d --- /dev/null +++ b/gsl-2.5/gsl/gsl_sf_dilog.h @@ -0,0 +1 @@ +../specfunc/gsl_sf_dilog.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_sf_elementary.h b/gsl-2.5/gsl/gsl_sf_elementary.h new file mode 120000 index 00000000..86574758 --- /dev/null +++ b/gsl-2.5/gsl/gsl_sf_elementary.h @@ -0,0 +1 @@ +../specfunc/gsl_sf_elementary.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_sf_ellint.h b/gsl-2.5/gsl/gsl_sf_ellint.h new file mode 120000 index 00000000..078ab6d4 --- /dev/null +++ b/gsl-2.5/gsl/gsl_sf_ellint.h @@ -0,0 +1 @@ +../specfunc/gsl_sf_ellint.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_sf_elljac.h b/gsl-2.5/gsl/gsl_sf_elljac.h new file mode 120000 index 00000000..9e4a8039 --- /dev/null +++ b/gsl-2.5/gsl/gsl_sf_elljac.h @@ -0,0 +1 @@ +../specfunc/gsl_sf_elljac.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_sf_erf.h b/gsl-2.5/gsl/gsl_sf_erf.h new file mode 120000 index 00000000..7c5a1fcd --- /dev/null +++ b/gsl-2.5/gsl/gsl_sf_erf.h @@ -0,0 +1 @@ +../specfunc/gsl_sf_erf.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_sf_exp.h b/gsl-2.5/gsl/gsl_sf_exp.h new file mode 120000 index 00000000..c8c1c570 --- /dev/null +++ b/gsl-2.5/gsl/gsl_sf_exp.h @@ -0,0 +1 @@ +../specfunc/gsl_sf_exp.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_sf_expint.h b/gsl-2.5/gsl/gsl_sf_expint.h new file mode 120000 index 00000000..585903c2 --- /dev/null +++ b/gsl-2.5/gsl/gsl_sf_expint.h @@ -0,0 +1 @@ +../specfunc/gsl_sf_expint.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_sf_fermi_dirac.h b/gsl-2.5/gsl/gsl_sf_fermi_dirac.h new file mode 120000 index 00000000..8f56bf7d --- /dev/null +++ b/gsl-2.5/gsl/gsl_sf_fermi_dirac.h @@ -0,0 +1 @@ +../specfunc/gsl_sf_fermi_dirac.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_sf_gamma.h b/gsl-2.5/gsl/gsl_sf_gamma.h new file mode 120000 index 00000000..825753cd --- /dev/null +++ b/gsl-2.5/gsl/gsl_sf_gamma.h @@ -0,0 +1 @@ +../specfunc/gsl_sf_gamma.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_sf_gegenbauer.h b/gsl-2.5/gsl/gsl_sf_gegenbauer.h new file mode 120000 index 00000000..4d7bb0be --- /dev/null +++ b/gsl-2.5/gsl/gsl_sf_gegenbauer.h @@ -0,0 +1 @@ +../specfunc/gsl_sf_gegenbauer.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_sf_hermite.h b/gsl-2.5/gsl/gsl_sf_hermite.h new file mode 120000 index 00000000..1d7088a0 --- /dev/null +++ b/gsl-2.5/gsl/gsl_sf_hermite.h @@ -0,0 +1 @@ +../specfunc/gsl_sf_hermite.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_sf_hyperg.h b/gsl-2.5/gsl/gsl_sf_hyperg.h new file mode 120000 index 00000000..faf69068 --- /dev/null +++ b/gsl-2.5/gsl/gsl_sf_hyperg.h @@ -0,0 +1 @@ +../specfunc/gsl_sf_hyperg.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_sf_laguerre.h b/gsl-2.5/gsl/gsl_sf_laguerre.h new file mode 120000 index 00000000..e65edd56 --- /dev/null +++ b/gsl-2.5/gsl/gsl_sf_laguerre.h @@ -0,0 +1 @@ +../specfunc/gsl_sf_laguerre.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_sf_lambert.h b/gsl-2.5/gsl/gsl_sf_lambert.h new file mode 120000 index 00000000..90a56e36 --- /dev/null +++ b/gsl-2.5/gsl/gsl_sf_lambert.h @@ -0,0 +1 @@ +../specfunc/gsl_sf_lambert.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_sf_legendre.h b/gsl-2.5/gsl/gsl_sf_legendre.h new file mode 120000 index 00000000..5f48a660 --- /dev/null +++ b/gsl-2.5/gsl/gsl_sf_legendre.h @@ -0,0 +1 @@ +../specfunc/gsl_sf_legendre.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_sf_log.h b/gsl-2.5/gsl/gsl_sf_log.h new file mode 120000 index 00000000..0b15d66b --- /dev/null +++ b/gsl-2.5/gsl/gsl_sf_log.h @@ -0,0 +1 @@ +../specfunc/gsl_sf_log.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_sf_mathieu.h b/gsl-2.5/gsl/gsl_sf_mathieu.h new file mode 120000 index 00000000..99217b31 --- /dev/null +++ b/gsl-2.5/gsl/gsl_sf_mathieu.h @@ -0,0 +1 @@ +../specfunc/gsl_sf_mathieu.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_sf_pow_int.h b/gsl-2.5/gsl/gsl_sf_pow_int.h new file mode 120000 index 00000000..2a023926 --- /dev/null +++ b/gsl-2.5/gsl/gsl_sf_pow_int.h @@ -0,0 +1 @@ +../specfunc/gsl_sf_pow_int.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_sf_psi.h b/gsl-2.5/gsl/gsl_sf_psi.h new file mode 120000 index 00000000..73cedd73 --- /dev/null +++ b/gsl-2.5/gsl/gsl_sf_psi.h @@ -0,0 +1 @@ +../specfunc/gsl_sf_psi.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_sf_result.h b/gsl-2.5/gsl/gsl_sf_result.h new file mode 120000 index 00000000..e8ca214c --- /dev/null +++ b/gsl-2.5/gsl/gsl_sf_result.h @@ -0,0 +1 @@ +../specfunc/gsl_sf_result.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_sf_sincos_pi.h b/gsl-2.5/gsl/gsl_sf_sincos_pi.h new file mode 120000 index 00000000..2b8f6fcf --- /dev/null +++ b/gsl-2.5/gsl/gsl_sf_sincos_pi.h @@ -0,0 +1 @@ +../specfunc/gsl_sf_sincos_pi.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_sf_synchrotron.h b/gsl-2.5/gsl/gsl_sf_synchrotron.h new file mode 120000 index 00000000..588ab79a --- /dev/null +++ b/gsl-2.5/gsl/gsl_sf_synchrotron.h @@ -0,0 +1 @@ +../specfunc/gsl_sf_synchrotron.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_sf_transport.h b/gsl-2.5/gsl/gsl_sf_transport.h new file mode 120000 index 00000000..76d536dc --- /dev/null +++ b/gsl-2.5/gsl/gsl_sf_transport.h @@ -0,0 +1 @@ +../specfunc/gsl_sf_transport.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_sf_trig.h b/gsl-2.5/gsl/gsl_sf_trig.h new file mode 120000 index 00000000..d7c9c6ff --- /dev/null +++ b/gsl-2.5/gsl/gsl_sf_trig.h @@ -0,0 +1 @@ +../specfunc/gsl_sf_trig.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_sf_zeta.h b/gsl-2.5/gsl/gsl_sf_zeta.h new file mode 120000 index 00000000..15f7138d --- /dev/null +++ b/gsl-2.5/gsl/gsl_sf_zeta.h @@ -0,0 +1 @@ +../specfunc/gsl_sf_zeta.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_siman.h b/gsl-2.5/gsl/gsl_siman.h new file mode 120000 index 00000000..34ba5905 --- /dev/null +++ b/gsl-2.5/gsl/gsl_siman.h @@ -0,0 +1 @@ +../siman/gsl_siman.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_sort.h b/gsl-2.5/gsl/gsl_sort.h new file mode 120000 index 00000000..7fc287ae --- /dev/null +++ b/gsl-2.5/gsl/gsl_sort.h @@ -0,0 +1 @@ +../sort/gsl_sort.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_sort_char.h b/gsl-2.5/gsl/gsl_sort_char.h new file mode 120000 index 00000000..7b47ade1 --- /dev/null +++ b/gsl-2.5/gsl/gsl_sort_char.h @@ -0,0 +1 @@ +../sort/gsl_sort_char.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_sort_double.h b/gsl-2.5/gsl/gsl_sort_double.h new file mode 120000 index 00000000..fd8ae243 --- /dev/null +++ b/gsl-2.5/gsl/gsl_sort_double.h @@ -0,0 +1 @@ +../sort/gsl_sort_double.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_sort_float.h b/gsl-2.5/gsl/gsl_sort_float.h new file mode 120000 index 00000000..8b8d6443 --- /dev/null +++ b/gsl-2.5/gsl/gsl_sort_float.h @@ -0,0 +1 @@ +../sort/gsl_sort_float.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_sort_int.h b/gsl-2.5/gsl/gsl_sort_int.h new file mode 120000 index 00000000..147f5e23 --- /dev/null +++ b/gsl-2.5/gsl/gsl_sort_int.h @@ -0,0 +1 @@ +../sort/gsl_sort_int.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_sort_long.h b/gsl-2.5/gsl/gsl_sort_long.h new file mode 120000 index 00000000..6f00dee5 --- /dev/null +++ b/gsl-2.5/gsl/gsl_sort_long.h @@ -0,0 +1 @@ +../sort/gsl_sort_long.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_sort_long_double.h b/gsl-2.5/gsl/gsl_sort_long_double.h new file mode 120000 index 00000000..3d97add6 --- /dev/null +++ b/gsl-2.5/gsl/gsl_sort_long_double.h @@ -0,0 +1 @@ +../sort/gsl_sort_long_double.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_sort_short.h b/gsl-2.5/gsl/gsl_sort_short.h new file mode 120000 index 00000000..165905cc --- /dev/null +++ b/gsl-2.5/gsl/gsl_sort_short.h @@ -0,0 +1 @@ +../sort/gsl_sort_short.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_sort_uchar.h b/gsl-2.5/gsl/gsl_sort_uchar.h new file mode 120000 index 00000000..48095fd6 --- /dev/null +++ b/gsl-2.5/gsl/gsl_sort_uchar.h @@ -0,0 +1 @@ +../sort/gsl_sort_uchar.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_sort_uint.h b/gsl-2.5/gsl/gsl_sort_uint.h new file mode 120000 index 00000000..d9160435 --- /dev/null +++ b/gsl-2.5/gsl/gsl_sort_uint.h @@ -0,0 +1 @@ +../sort/gsl_sort_uint.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_sort_ulong.h b/gsl-2.5/gsl/gsl_sort_ulong.h new file mode 120000 index 00000000..6686f9eb --- /dev/null +++ b/gsl-2.5/gsl/gsl_sort_ulong.h @@ -0,0 +1 @@ +../sort/gsl_sort_ulong.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_sort_ushort.h b/gsl-2.5/gsl/gsl_sort_ushort.h new file mode 120000 index 00000000..40b06024 --- /dev/null +++ b/gsl-2.5/gsl/gsl_sort_ushort.h @@ -0,0 +1 @@ +../sort/gsl_sort_ushort.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_sort_vector.h b/gsl-2.5/gsl/gsl_sort_vector.h new file mode 120000 index 00000000..861c84cd --- /dev/null +++ b/gsl-2.5/gsl/gsl_sort_vector.h @@ -0,0 +1 @@ +../sort/gsl_sort_vector.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_sort_vector_char.h b/gsl-2.5/gsl/gsl_sort_vector_char.h new file mode 120000 index 00000000..5472560d --- /dev/null +++ b/gsl-2.5/gsl/gsl_sort_vector_char.h @@ -0,0 +1 @@ +../sort/gsl_sort_vector_char.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_sort_vector_double.h b/gsl-2.5/gsl/gsl_sort_vector_double.h new file mode 120000 index 00000000..cbd6835a --- /dev/null +++ b/gsl-2.5/gsl/gsl_sort_vector_double.h @@ -0,0 +1 @@ +../sort/gsl_sort_vector_double.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_sort_vector_float.h b/gsl-2.5/gsl/gsl_sort_vector_float.h new file mode 120000 index 00000000..11936283 --- /dev/null +++ b/gsl-2.5/gsl/gsl_sort_vector_float.h @@ -0,0 +1 @@ +../sort/gsl_sort_vector_float.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_sort_vector_int.h b/gsl-2.5/gsl/gsl_sort_vector_int.h new file mode 120000 index 00000000..e0be6df9 --- /dev/null +++ b/gsl-2.5/gsl/gsl_sort_vector_int.h @@ -0,0 +1 @@ +../sort/gsl_sort_vector_int.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_sort_vector_long.h b/gsl-2.5/gsl/gsl_sort_vector_long.h new file mode 120000 index 00000000..05987480 --- /dev/null +++ b/gsl-2.5/gsl/gsl_sort_vector_long.h @@ -0,0 +1 @@ +../sort/gsl_sort_vector_long.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_sort_vector_long_double.h b/gsl-2.5/gsl/gsl_sort_vector_long_double.h new file mode 120000 index 00000000..27ff629d --- /dev/null +++ b/gsl-2.5/gsl/gsl_sort_vector_long_double.h @@ -0,0 +1 @@ +../sort/gsl_sort_vector_long_double.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_sort_vector_short.h b/gsl-2.5/gsl/gsl_sort_vector_short.h new file mode 120000 index 00000000..7e2c25d2 --- /dev/null +++ b/gsl-2.5/gsl/gsl_sort_vector_short.h @@ -0,0 +1 @@ +../sort/gsl_sort_vector_short.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_sort_vector_uchar.h b/gsl-2.5/gsl/gsl_sort_vector_uchar.h new file mode 120000 index 00000000..3dfe83e9 --- /dev/null +++ b/gsl-2.5/gsl/gsl_sort_vector_uchar.h @@ -0,0 +1 @@ +../sort/gsl_sort_vector_uchar.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_sort_vector_uint.h b/gsl-2.5/gsl/gsl_sort_vector_uint.h new file mode 120000 index 00000000..cd1608b2 --- /dev/null +++ b/gsl-2.5/gsl/gsl_sort_vector_uint.h @@ -0,0 +1 @@ +../sort/gsl_sort_vector_uint.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_sort_vector_ulong.h b/gsl-2.5/gsl/gsl_sort_vector_ulong.h new file mode 120000 index 00000000..c780d119 --- /dev/null +++ b/gsl-2.5/gsl/gsl_sort_vector_ulong.h @@ -0,0 +1 @@ +../sort/gsl_sort_vector_ulong.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_sort_vector_ushort.h b/gsl-2.5/gsl/gsl_sort_vector_ushort.h new file mode 120000 index 00000000..cc0af81b --- /dev/null +++ b/gsl-2.5/gsl/gsl_sort_vector_ushort.h @@ -0,0 +1 @@ +../sort/gsl_sort_vector_ushort.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_spblas.h b/gsl-2.5/gsl/gsl_spblas.h new file mode 120000 index 00000000..1f60e4be --- /dev/null +++ b/gsl-2.5/gsl/gsl_spblas.h @@ -0,0 +1 @@ +../spblas/gsl_spblas.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_specfunc.h b/gsl-2.5/gsl/gsl_specfunc.h new file mode 120000 index 00000000..6122973f --- /dev/null +++ b/gsl-2.5/gsl/gsl_specfunc.h @@ -0,0 +1 @@ +../specfunc/gsl_specfunc.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_splinalg.h b/gsl-2.5/gsl/gsl_splinalg.h new file mode 120000 index 00000000..f42e803f --- /dev/null +++ b/gsl-2.5/gsl/gsl_splinalg.h @@ -0,0 +1 @@ +../splinalg/gsl_splinalg.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_spline.h b/gsl-2.5/gsl/gsl_spline.h new file mode 120000 index 00000000..c07a2977 --- /dev/null +++ b/gsl-2.5/gsl/gsl_spline.h @@ -0,0 +1 @@ +../interpolation/gsl_spline.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_spline2d.h b/gsl-2.5/gsl/gsl_spline2d.h new file mode 120000 index 00000000..2349813e --- /dev/null +++ b/gsl-2.5/gsl/gsl_spline2d.h @@ -0,0 +1 @@ +../interpolation/gsl_spline2d.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_spmatrix.h b/gsl-2.5/gsl/gsl_spmatrix.h new file mode 120000 index 00000000..0fc422f1 --- /dev/null +++ b/gsl-2.5/gsl/gsl_spmatrix.h @@ -0,0 +1 @@ +../spmatrix/gsl_spmatrix.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_statistics.h b/gsl-2.5/gsl/gsl_statistics.h new file mode 120000 index 00000000..ac175638 --- /dev/null +++ b/gsl-2.5/gsl/gsl_statistics.h @@ -0,0 +1 @@ +../statistics/gsl_statistics.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_statistics_char.h b/gsl-2.5/gsl/gsl_statistics_char.h new file mode 120000 index 00000000..cf91d04e --- /dev/null +++ b/gsl-2.5/gsl/gsl_statistics_char.h @@ -0,0 +1 @@ +../statistics/gsl_statistics_char.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_statistics_double.h b/gsl-2.5/gsl/gsl_statistics_double.h new file mode 120000 index 00000000..bc4e85ca --- /dev/null +++ b/gsl-2.5/gsl/gsl_statistics_double.h @@ -0,0 +1 @@ +../statistics/gsl_statistics_double.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_statistics_float.h b/gsl-2.5/gsl/gsl_statistics_float.h new file mode 120000 index 00000000..71904e68 --- /dev/null +++ b/gsl-2.5/gsl/gsl_statistics_float.h @@ -0,0 +1 @@ +../statistics/gsl_statistics_float.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_statistics_int.h b/gsl-2.5/gsl/gsl_statistics_int.h new file mode 120000 index 00000000..64a8c145 --- /dev/null +++ b/gsl-2.5/gsl/gsl_statistics_int.h @@ -0,0 +1 @@ +../statistics/gsl_statistics_int.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_statistics_long.h b/gsl-2.5/gsl/gsl_statistics_long.h new file mode 120000 index 00000000..7e64857c --- /dev/null +++ b/gsl-2.5/gsl/gsl_statistics_long.h @@ -0,0 +1 @@ +../statistics/gsl_statistics_long.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_statistics_long_double.h b/gsl-2.5/gsl/gsl_statistics_long_double.h new file mode 120000 index 00000000..4f9d1cd3 --- /dev/null +++ b/gsl-2.5/gsl/gsl_statistics_long_double.h @@ -0,0 +1 @@ +../statistics/gsl_statistics_long_double.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_statistics_short.h b/gsl-2.5/gsl/gsl_statistics_short.h new file mode 120000 index 00000000..700df5d2 --- /dev/null +++ b/gsl-2.5/gsl/gsl_statistics_short.h @@ -0,0 +1 @@ +../statistics/gsl_statistics_short.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_statistics_uchar.h b/gsl-2.5/gsl/gsl_statistics_uchar.h new file mode 120000 index 00000000..5e4d75f4 --- /dev/null +++ b/gsl-2.5/gsl/gsl_statistics_uchar.h @@ -0,0 +1 @@ +../statistics/gsl_statistics_uchar.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_statistics_uint.h b/gsl-2.5/gsl/gsl_statistics_uint.h new file mode 120000 index 00000000..16aa0182 --- /dev/null +++ b/gsl-2.5/gsl/gsl_statistics_uint.h @@ -0,0 +1 @@ +../statistics/gsl_statistics_uint.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_statistics_ulong.h b/gsl-2.5/gsl/gsl_statistics_ulong.h new file mode 120000 index 00000000..ed7dfd4b --- /dev/null +++ b/gsl-2.5/gsl/gsl_statistics_ulong.h @@ -0,0 +1 @@ +../statistics/gsl_statistics_ulong.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_statistics_ushort.h b/gsl-2.5/gsl/gsl_statistics_ushort.h new file mode 120000 index 00000000..1b1ab709 --- /dev/null +++ b/gsl-2.5/gsl/gsl_statistics_ushort.h @@ -0,0 +1 @@ +../statistics/gsl_statistics_ushort.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_sum.h b/gsl-2.5/gsl/gsl_sum.h new file mode 120000 index 00000000..d5373733 --- /dev/null +++ b/gsl-2.5/gsl/gsl_sum.h @@ -0,0 +1 @@ +../sum/gsl_sum.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_sys.h b/gsl-2.5/gsl/gsl_sys.h new file mode 120000 index 00000000..4333bd57 --- /dev/null +++ b/gsl-2.5/gsl/gsl_sys.h @@ -0,0 +1 @@ +../sys/gsl_sys.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_test.h b/gsl-2.5/gsl/gsl_test.h new file mode 120000 index 00000000..27fbe4f2 --- /dev/null +++ b/gsl-2.5/gsl/gsl_test.h @@ -0,0 +1 @@ +../test/gsl_test.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_types.h b/gsl-2.5/gsl/gsl_types.h new file mode 120000 index 00000000..81044a92 --- /dev/null +++ b/gsl-2.5/gsl/gsl_types.h @@ -0,0 +1 @@ +../gsl_types.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_vector.h b/gsl-2.5/gsl/gsl_vector.h new file mode 120000 index 00000000..6bfcae76 --- /dev/null +++ b/gsl-2.5/gsl/gsl_vector.h @@ -0,0 +1 @@ +../vector/gsl_vector.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_vector_char.h b/gsl-2.5/gsl/gsl_vector_char.h new file mode 120000 index 00000000..e0ac9c12 --- /dev/null +++ b/gsl-2.5/gsl/gsl_vector_char.h @@ -0,0 +1 @@ +../vector/gsl_vector_char.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_vector_complex.h b/gsl-2.5/gsl/gsl_vector_complex.h new file mode 120000 index 00000000..c2e8225e --- /dev/null +++ b/gsl-2.5/gsl/gsl_vector_complex.h @@ -0,0 +1 @@ +../vector/gsl_vector_complex.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_vector_complex_double.h b/gsl-2.5/gsl/gsl_vector_complex_double.h new file mode 120000 index 00000000..46ad73f2 --- /dev/null +++ b/gsl-2.5/gsl/gsl_vector_complex_double.h @@ -0,0 +1 @@ +../vector/gsl_vector_complex_double.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_vector_complex_float.h b/gsl-2.5/gsl/gsl_vector_complex_float.h new file mode 120000 index 00000000..dc7cbe70 --- /dev/null +++ b/gsl-2.5/gsl/gsl_vector_complex_float.h @@ -0,0 +1 @@ +../vector/gsl_vector_complex_float.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_vector_complex_long_double.h b/gsl-2.5/gsl/gsl_vector_complex_long_double.h new file mode 120000 index 00000000..25d30176 --- /dev/null +++ b/gsl-2.5/gsl/gsl_vector_complex_long_double.h @@ -0,0 +1 @@ +../vector/gsl_vector_complex_long_double.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_vector_double.h b/gsl-2.5/gsl/gsl_vector_double.h new file mode 120000 index 00000000..63892a0b --- /dev/null +++ b/gsl-2.5/gsl/gsl_vector_double.h @@ -0,0 +1 @@ +../vector/gsl_vector_double.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_vector_float.h b/gsl-2.5/gsl/gsl_vector_float.h new file mode 120000 index 00000000..6685a177 --- /dev/null +++ b/gsl-2.5/gsl/gsl_vector_float.h @@ -0,0 +1 @@ +../vector/gsl_vector_float.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_vector_int.h b/gsl-2.5/gsl/gsl_vector_int.h new file mode 120000 index 00000000..f8f9f256 --- /dev/null +++ b/gsl-2.5/gsl/gsl_vector_int.h @@ -0,0 +1 @@ +../vector/gsl_vector_int.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_vector_long.h b/gsl-2.5/gsl/gsl_vector_long.h new file mode 120000 index 00000000..aa530989 --- /dev/null +++ b/gsl-2.5/gsl/gsl_vector_long.h @@ -0,0 +1 @@ +../vector/gsl_vector_long.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_vector_long_double.h b/gsl-2.5/gsl/gsl_vector_long_double.h new file mode 120000 index 00000000..a0b3f86a --- /dev/null +++ b/gsl-2.5/gsl/gsl_vector_long_double.h @@ -0,0 +1 @@ +../vector/gsl_vector_long_double.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_vector_short.h b/gsl-2.5/gsl/gsl_vector_short.h new file mode 120000 index 00000000..6b22efb6 --- /dev/null +++ b/gsl-2.5/gsl/gsl_vector_short.h @@ -0,0 +1 @@ +../vector/gsl_vector_short.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_vector_uchar.h b/gsl-2.5/gsl/gsl_vector_uchar.h new file mode 120000 index 00000000..3a352ca4 --- /dev/null +++ b/gsl-2.5/gsl/gsl_vector_uchar.h @@ -0,0 +1 @@ +../vector/gsl_vector_uchar.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_vector_uint.h b/gsl-2.5/gsl/gsl_vector_uint.h new file mode 120000 index 00000000..6bb8895f --- /dev/null +++ b/gsl-2.5/gsl/gsl_vector_uint.h @@ -0,0 +1 @@ +../vector/gsl_vector_uint.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_vector_ulong.h b/gsl-2.5/gsl/gsl_vector_ulong.h new file mode 120000 index 00000000..e1a5320e --- /dev/null +++ b/gsl-2.5/gsl/gsl_vector_ulong.h @@ -0,0 +1 @@ +../vector/gsl_vector_ulong.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_vector_ushort.h b/gsl-2.5/gsl/gsl_vector_ushort.h new file mode 120000 index 00000000..fc9def50 --- /dev/null +++ b/gsl-2.5/gsl/gsl_vector_ushort.h @@ -0,0 +1 @@ +../vector/gsl_vector_ushort.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_version.h b/gsl-2.5/gsl/gsl_version.h new file mode 120000 index 00000000..ab42ad15 --- /dev/null +++ b/gsl-2.5/gsl/gsl_version.h @@ -0,0 +1 @@ +../gsl_version.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_wavelet.h b/gsl-2.5/gsl/gsl_wavelet.h new file mode 120000 index 00000000..070bc00e --- /dev/null +++ b/gsl-2.5/gsl/gsl_wavelet.h @@ -0,0 +1 @@ +../wavelet/gsl_wavelet.h \ No newline at end of file diff --git a/gsl-2.5/gsl/gsl_wavelet2d.h b/gsl-2.5/gsl/gsl_wavelet2d.h new file mode 120000 index 00000000..d9f3d8f8 --- /dev/null +++ b/gsl-2.5/gsl/gsl_wavelet2d.h @@ -0,0 +1 @@ +../wavelet/gsl_wavelet2d.h \ No newline at end of file diff --git a/gsl-2.5/gsl_inline.h b/gsl-2.5/gsl_inline.h new file mode 100644 index 00000000..2172201a --- /dev/null +++ b/gsl-2.5/gsl_inline.h @@ -0,0 +1,67 @@ +/* gsl_inline.h + * + * Copyright (C) 2008, 2009 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_INLINE_H__ +#define __GSL_INLINE_H__ + +/* In recent versiions of GCC, the inline keyword has two different + forms: GNU and C99. + + In GNU mode we can use 'extern inline' to make inline functions + work like macros. The function is only inlined--it is never output + as a definition in an object file. + + In the new C99 mode 'extern inline' has a different meaning--it + causes the definition of the function to be output in each object + file where it is used. This will result in multiple-definition + errors on linking. The 'inline' keyword on its own (without + extern) has the same behavior as the original GNU 'extern inline'. + + The C99 style is the default with -std=c99 in GCC 4.3. + + This header file allows either form of inline to be used by + redefining the macros INLINE_DECL and INLINE_FUN. These are used + in the public header files as + + INLINE_DECL double gsl_foo (double x); + #ifdef HAVE_INLINE + INLINE_FUN double gsl_foo (double x) { return x+1.0; } ; + #endif + +*/ + +#ifdef HAVE_INLINE +# if defined(__GNUC_STDC_INLINE__) || defined(GSL_C99_INLINE) || defined(HAVE_C99_INLINE) +# define INLINE_DECL inline /* use C99 inline */ +# define INLINE_FUN inline +# else +# define INLINE_DECL /* use GNU extern inline */ +# define INLINE_FUN extern inline +# endif +#else +# define INLINE_DECL /* */ +#endif + +/* Range checking conditions in headers do not require any run-time + tests of the global variable gsl_check_range. They are enabled or + disabled in user code at compile time with GSL_RANGE_CHECK macro. + See also build.h. */ +#define GSL_RANGE_COND(x) (x) + +#endif /* __GSL_INLINE_H__ */ diff --git a/gsl-2.5/gsl_machine.h b/gsl-2.5/gsl_machine.h new file mode 100644 index 00000000..c44ffc2a --- /dev/null +++ b/gsl-2.5/gsl_machine.h @@ -0,0 +1,104 @@ +/* Author: B. Gough and G. Jungman */ +#ifndef __GSL_MACHINE_H__ +#define __GSL_MACHINE_H__ + +#include +#include + +/* magic constants; mostly for the benefit of the implementation */ + +/* -*-MACHINE CONSTANTS-*- + * + * PLATFORM: Whiz-O-Matic 9000 + * FP_PLATFORM: IEEE-Virtual + * HOSTNAME: nnn.lanl.gov + * DATE: Fri Nov 20 17:53:26 MST 1998 + */ +#define GSL_DBL_EPSILON 2.2204460492503131e-16 +#define GSL_SQRT_DBL_EPSILON 1.4901161193847656e-08 +#define GSL_ROOT3_DBL_EPSILON 6.0554544523933429e-06 +#define GSL_ROOT4_DBL_EPSILON 1.2207031250000000e-04 +#define GSL_ROOT5_DBL_EPSILON 7.4009597974140505e-04 +#define GSL_ROOT6_DBL_EPSILON 2.4607833005759251e-03 +#define GSL_LOG_DBL_EPSILON (-3.6043653389117154e+01) + +#define GSL_DBL_MIN 2.2250738585072014e-308 +#define GSL_SQRT_DBL_MIN 1.4916681462400413e-154 +#define GSL_ROOT3_DBL_MIN 2.8126442852362996e-103 +#define GSL_ROOT4_DBL_MIN 1.2213386697554620e-77 +#define GSL_ROOT5_DBL_MIN 2.9476022969691763e-62 +#define GSL_ROOT6_DBL_MIN 5.3034368905798218e-52 +#define GSL_LOG_DBL_MIN (-7.0839641853226408e+02) + +#define GSL_DBL_MAX 1.7976931348623157e+308 +#define GSL_SQRT_DBL_MAX 1.3407807929942596e+154 +#define GSL_ROOT3_DBL_MAX 5.6438030941222897e+102 +#define GSL_ROOT4_DBL_MAX 1.1579208923731620e+77 +#define GSL_ROOT5_DBL_MAX 4.4765466227572707e+61 +#define GSL_ROOT6_DBL_MAX 2.3756689782295612e+51 +#define GSL_LOG_DBL_MAX 7.0978271289338397e+02 + +#define GSL_FLT_EPSILON 1.1920928955078125e-07 +#define GSL_SQRT_FLT_EPSILON 3.4526698300124393e-04 +#define GSL_ROOT3_FLT_EPSILON 4.9215666011518501e-03 +#define GSL_ROOT4_FLT_EPSILON 1.8581361171917516e-02 +#define GSL_ROOT5_FLT_EPSILON 4.1234622211652937e-02 +#define GSL_ROOT6_FLT_EPSILON 7.0153878019335827e-02 +#define GSL_LOG_FLT_EPSILON (-1.5942385152878742e+01) + +#define GSL_FLT_MIN 1.1754943508222875e-38 +#define GSL_SQRT_FLT_MIN 1.0842021724855044e-19 +#define GSL_ROOT3_FLT_MIN 2.2737367544323241e-13 +#define GSL_ROOT4_FLT_MIN 3.2927225399135965e-10 +#define GSL_ROOT5_FLT_MIN 2.5944428542140822e-08 +#define GSL_ROOT6_FLT_MIN 4.7683715820312542e-07 +#define GSL_LOG_FLT_MIN (-8.7336544750553102e+01) + +#define GSL_FLT_MAX 3.4028234663852886e+38 +#define GSL_SQRT_FLT_MAX 1.8446743523953730e+19 +#define GSL_ROOT3_FLT_MAX 6.9814635196223242e+12 +#define GSL_ROOT4_FLT_MAX 4.2949672319999986e+09 +#define GSL_ROOT5_FLT_MAX 5.0859007855960041e+07 +#define GSL_ROOT6_FLT_MAX 2.6422459233807749e+06 +#define GSL_LOG_FLT_MAX 8.8722839052068352e+01 + +#define GSL_SFLT_EPSILON 4.8828125000000000e-04 +#define GSL_SQRT_SFLT_EPSILON 2.2097086912079612e-02 +#define GSL_ROOT3_SFLT_EPSILON 7.8745065618429588e-02 +#define GSL_ROOT4_SFLT_EPSILON 1.4865088937534013e-01 +#define GSL_ROOT5_SFLT_EPSILON 2.1763764082403100e-01 +#define GSL_ROOT6_SFLT_EPSILON 2.8061551207734325e-01 +#define GSL_LOG_SFLT_EPSILON (-7.6246189861593985e+00) + +/* !MACHINE CONSTANTS! */ + + +/* a little internal backwards compatibility */ +#define GSL_MACH_EPS GSL_DBL_EPSILON + + + +/* Here are the constants related to or derived from + * machine constants. These are not to be confused with + * the constants that define various precision levels + * for the precision/error system. + * + * This information is determined at configure time + * and is platform dependent. Edit at your own risk. + * + * PLATFORM: WHIZ-O-MATIC + * CONFIG-DATE: Thu Nov 19 19:27:18 MST 1998 + * CONFIG-HOST: nnn.lanl.gov + */ + +/* machine precision constants */ +/* #define GSL_MACH_EPS 1.0e-15 */ +#define GSL_SQRT_MACH_EPS 3.2e-08 +#define GSL_ROOT3_MACH_EPS 1.0e-05 +#define GSL_ROOT4_MACH_EPS 0.000178 +#define GSL_ROOT5_MACH_EPS 0.00100 +#define GSL_ROOT6_MACH_EPS 0.00316 +#define GSL_LOG_MACH_EPS (-34.54) + + +#endif /* __GSL_MACHINE_H__ */ diff --git a/gsl-2.5/gsl_math.h b/gsl-2.5/gsl_math.h new file mode 100644 index 00000000..2d09df17 --- /dev/null +++ b/gsl-2.5/gsl_math.h @@ -0,0 +1,164 @@ +/* gsl_math.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2004, 2007 Gerard Jungman, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_MATH_H__ +#define __GSL_MATH_H__ +#include +#include +#include +#include +#include +#include +#include +#include + +#ifndef M_E +#define M_E 2.71828182845904523536028747135 /* e */ +#endif + +#ifndef M_LOG2E +#define M_LOG2E 1.44269504088896340735992468100 /* log_2 (e) */ +#endif + +#ifndef M_LOG10E +#define M_LOG10E 0.43429448190325182765112891892 /* log_10 (e) */ +#endif + +#ifndef M_SQRT2 +#define M_SQRT2 1.41421356237309504880168872421 /* sqrt(2) */ +#endif + +#ifndef M_SQRT1_2 +#define M_SQRT1_2 0.70710678118654752440084436210 /* sqrt(1/2) */ +#endif + + +#ifndef M_SQRT3 +#define M_SQRT3 1.73205080756887729352744634151 /* sqrt(3) */ +#endif + +#ifndef M_PI +#define M_PI 3.14159265358979323846264338328 /* pi */ +#endif + +#ifndef M_PI_2 +#define M_PI_2 1.57079632679489661923132169164 /* pi/2 */ +#endif + +#ifndef M_PI_4 +#define M_PI_4 0.78539816339744830961566084582 /* pi/4 */ +#endif + +#ifndef M_SQRTPI +#define M_SQRTPI 1.77245385090551602729816748334 /* sqrt(pi) */ +#endif + +#ifndef M_2_SQRTPI +#define M_2_SQRTPI 1.12837916709551257389615890312 /* 2/sqrt(pi) */ +#endif + +#ifndef M_1_PI +#define M_1_PI 0.31830988618379067153776752675 /* 1/pi */ +#endif + +#ifndef M_2_PI +#define M_2_PI 0.63661977236758134307553505349 /* 2/pi */ +#endif + +#ifndef M_LN10 +#define M_LN10 2.30258509299404568401799145468 /* ln(10) */ +#endif + +#ifndef M_LN2 +#define M_LN2 0.69314718055994530941723212146 /* ln(2) */ +#endif + +#ifndef M_LNPI +#define M_LNPI 1.14472988584940017414342735135 /* ln(pi) */ +#endif + +#ifndef M_EULER +#define M_EULER 0.57721566490153286060651209008 /* Euler constant */ +#endif + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +/* other needlessly compulsive abstractions */ + +#define GSL_IS_ODD(n) ((n) & 1) +#define GSL_IS_EVEN(n) (!(GSL_IS_ODD(n))) +#define GSL_SIGN(x) ((x) >= 0.0 ? 1 : -1) + +/* Return nonzero if x is a real number, i.e. non NaN or infinite. */ +#define GSL_IS_REAL(x) (gsl_finite(x)) + +/* Definition of an arbitrary function with parameters */ + +struct gsl_function_struct +{ + double (* function) (double x, void * params); + void * params; +}; + +typedef struct gsl_function_struct gsl_function ; + +#define GSL_FN_EVAL(F,x) (*((F)->function))(x,(F)->params) + +/* Definition of an arbitrary function returning two values, r1, r2 */ + +struct gsl_function_fdf_struct +{ + double (* f) (double x, void * params); + double (* df) (double x, void * params); + void (* fdf) (double x, void * params, double * f, double * df); + void * params; +}; + +typedef struct gsl_function_fdf_struct gsl_function_fdf ; + +#define GSL_FN_FDF_EVAL_F(FDF,x) (*((FDF)->f))(x,(FDF)->params) +#define GSL_FN_FDF_EVAL_DF(FDF,x) (*((FDF)->df))(x,(FDF)->params) +#define GSL_FN_FDF_EVAL_F_DF(FDF,x,y,dy) (*((FDF)->fdf))(x,(FDF)->params,(y),(dy)) + + +/* Definition of an arbitrary vector-valued function with parameters */ + +struct gsl_function_vec_struct +{ + int (* function) (double x, double y[], void * params); + void * params; +}; + +typedef struct gsl_function_vec_struct gsl_function_vec ; + +#define GSL_FN_VEC_EVAL(F,x,y) (*((F)->function))(x,y,(F)->params) + +__END_DECLS + +#endif /* __GSL_MATH_H__ */ diff --git a/gsl-2.5/gsl_minmax.h b/gsl-2.5/gsl_minmax.h new file mode 100644 index 00000000..0d9a8360 --- /dev/null +++ b/gsl-2.5/gsl_minmax.h @@ -0,0 +1,102 @@ +/* gsl_minmax.h + * + * Copyright (C) 2008 Gerard Jungman, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_MINMAX_H__ +#define __GSL_MINMAX_H__ +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +/* Define MAX and MIN macros/functions if they don't exist. */ + +/* plain old macros for general use */ +#define GSL_MAX(a,b) ((a) > (b) ? (a) : (b)) +#define GSL_MIN(a,b) ((a) < (b) ? (a) : (b)) + +/* function versions of the above, in case they are needed */ +double gsl_max (double a, double b); +double gsl_min (double a, double b); + +/* inline-friendly strongly typed versions */ +#ifdef HAVE_INLINE + +INLINE_FUN int GSL_MAX_INT (int a, int b); +INLINE_FUN int GSL_MIN_INT (int a, int b); +INLINE_FUN double GSL_MAX_DBL (double a, double b); +INLINE_FUN double GSL_MIN_DBL (double a, double b); +INLINE_FUN long double GSL_MAX_LDBL (long double a, long double b); +INLINE_FUN long double GSL_MIN_LDBL (long double a, long double b); + +INLINE_FUN int +GSL_MAX_INT (int a, int b) +{ + return GSL_MAX (a, b); +} + +INLINE_FUN int +GSL_MIN_INT (int a, int b) +{ + return GSL_MIN (a, b); +} + +INLINE_FUN double +GSL_MAX_DBL (double a, double b) +{ + return GSL_MAX (a, b); +} + +INLINE_FUN double +GSL_MIN_DBL (double a, double b) +{ + return GSL_MIN (a, b); +} + +INLINE_FUN long double +GSL_MAX_LDBL (long double a, long double b) +{ + return GSL_MAX (a, b); +} + +INLINE_FUN long double +GSL_MIN_LDBL (long double a, long double b) +{ + return GSL_MIN (a, b); +} +#else +#define GSL_MAX_INT(a,b) GSL_MAX(a,b) +#define GSL_MIN_INT(a,b) GSL_MIN(a,b) +#define GSL_MAX_DBL(a,b) GSL_MAX(a,b) +#define GSL_MIN_DBL(a,b) GSL_MIN(a,b) +#define GSL_MAX_LDBL(a,b) GSL_MAX(a,b) +#define GSL_MIN_LDBL(a,b) GSL_MIN(a,b) +#endif /* HAVE_INLINE */ + +__END_DECLS + +#endif /* __GSL_POW_INT_H__ */ diff --git a/gsl-2.5/gsl_mode.h b/gsl-2.5/gsl_mode.h new file mode 100644 index 00000000..c8e5d55d --- /dev/null +++ b/gsl-2.5/gsl_mode.h @@ -0,0 +1,88 @@ +/* gsl_mode.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2004 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: B. Gough and G. Jungman */ + +#ifndef __GSL_MODE_H__ +#define __GSL_MODE_H__ +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + + +/* Some functions can take a mode argument. This + * is a rough method to do things like control + * the precision of the algorithm. This mainly + * occurs in special functions, but we figured + * it was ok to have a general facility. + * + * The mode type is 32-bit field. Most of + * the fields are currently unused. Users + * '|' various predefined constants to get + * a desired mode. + */ +typedef unsigned int gsl_mode_t; + + +/* Here are the predefined constants. + * Note that the precision constants + * are special because they are used + * to index arrays, so do not change + * them. The precision information is + * in the low order 3 bits of gsl_mode_t + * (the third bit is currently unused). + */ + +/* Note that "0" is double precision, + * so that you get that by default if + * you forget a flag. + */ +#define GSL_PREC_DOUBLE 0 +#define GSL_PREC_SINGLE 1 +#define GSL_PREC_APPROX 2 + +#ifdef HAVE_INLINE +INLINE_FUN unsigned int GSL_MODE_PREC(gsl_mode_t mt); + +INLINE_FUN unsigned int +GSL_MODE_PREC(gsl_mode_t mt) +{ return (mt & (unsigned int)7); } +#else /* HAVE_INLINE */ +#define GSL_MODE_PREC(mt) ((mt) & (unsigned int)7) +#endif /* HAVE_INLINE */ + + +/* Here are some predefined generic modes. + */ +#define GSL_MODE_DEFAULT 0 + + +__END_DECLS + +#endif /* __GSL_MODE_H__ */ diff --git a/gsl-2.5/gsl_nan.h b/gsl-2.5/gsl_nan.h new file mode 100644 index 00000000..5cb52efc --- /dev/null +++ b/gsl-2.5/gsl_nan.h @@ -0,0 +1,45 @@ +/* gsl_nan.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_NAN_H__ +#define __GSL_NAN_H__ + +#ifdef INFINITY +# define GSL_POSINF INFINITY +# define GSL_NEGINF (-INFINITY) +#elif defined(HUGE_VAL) +# define GSL_POSINF HUGE_VAL +# define GSL_NEGINF (-HUGE_VAL) +#else +# define GSL_POSINF (gsl_posinf()) +# define GSL_NEGINF (gsl_neginf()) +#endif + +#ifdef NAN +# define GSL_NAN NAN +#elif defined(INFINITY) +# define GSL_NAN (INFINITY/INFINITY) +#else +# define GSL_NAN (gsl_nan()) +#endif + +#define GSL_POSZERO (+0.0) +#define GSL_NEGZERO (-0.0) + +#endif /* __GSL_NAN_H__ */ diff --git a/gsl-2.5/gsl_pow_int.h b/gsl-2.5/gsl_pow_int.h new file mode 100644 index 00000000..6aa01fbc --- /dev/null +++ b/gsl-2.5/gsl_pow_int.h @@ -0,0 +1,61 @@ +/* gsl_pow_int.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2004, 2007 Gerard Jungman, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_POW_INT_H__ +#define __GSL_POW_INT_H__ +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +INLINE_DECL double gsl_pow_2(const double x); +INLINE_DECL double gsl_pow_3(const double x); +INLINE_DECL double gsl_pow_4(const double x); +INLINE_DECL double gsl_pow_5(const double x); +INLINE_DECL double gsl_pow_6(const double x); +INLINE_DECL double gsl_pow_7(const double x); +INLINE_DECL double gsl_pow_8(const double x); +INLINE_DECL double gsl_pow_9(const double x); + +#ifdef HAVE_INLINE +INLINE_FUN double gsl_pow_2(const double x) { return x*x; } +INLINE_FUN double gsl_pow_3(const double x) { return x*x*x; } +INLINE_FUN double gsl_pow_4(const double x) { double x2 = x*x; return x2*x2; } +INLINE_FUN double gsl_pow_5(const double x) { double x2 = x*x; return x2*x2*x; } +INLINE_FUN double gsl_pow_6(const double x) { double x2 = x*x; return x2*x2*x2; } +INLINE_FUN double gsl_pow_7(const double x) { double x3 = x*x*x; return x3*x3*x; } +INLINE_FUN double gsl_pow_8(const double x) { double x2 = x*x; double x4 = x2*x2; return x4*x4; } +INLINE_FUN double gsl_pow_9(const double x) { double x3 = x*x*x; return x3*x3*x3; } +#endif + +double gsl_pow_int(double x, int n); +double gsl_pow_uint(double x, unsigned int n); + +__END_DECLS + +#endif /* __GSL_POW_INT_H__ */ diff --git a/gsl-2.5/gsl_precision.h b/gsl-2.5/gsl_precision.h new file mode 100644 index 00000000..97a204ea --- /dev/null +++ b/gsl-2.5/gsl_precision.h @@ -0,0 +1,66 @@ +/* gsl_precision.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: B. Gough and G. Jungman */ + +#ifndef __GSL_PRECISION_H__ +#define __GSL_PRECISION_H__ +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + + +/* A type for the precision indicator. + * This is mainly for pedagogy. + */ +typedef unsigned int gsl_prec_t; + + +/* The number of precision types. + * Remember that precision-mode + * can index an array. + */ +#define _GSL_PREC_T_NUM 3 + + +/* Arrays containing derived + * precision constants for the + * different precision levels. + */ +GSL_VAR const double gsl_prec_eps[]; +GSL_VAR const double gsl_prec_sqrt_eps[]; +GSL_VAR const double gsl_prec_root3_eps[]; +GSL_VAR const double gsl_prec_root4_eps[]; +GSL_VAR const double gsl_prec_root5_eps[]; +GSL_VAR const double gsl_prec_root6_eps[]; + + +__END_DECLS + +#endif /* __GSL_PRECISION_H__ */ diff --git a/gsl-2.5/gsl_types.h b/gsl-2.5/gsl_types.h new file mode 100644 index 00000000..0330f551 --- /dev/null +++ b/gsl-2.5/gsl_types.h @@ -0,0 +1,41 @@ +/* gsl_types.h + * + * Copyright (C) 2001, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_TYPES_H__ +#define __GSL_TYPES_H__ + +#ifndef GSL_VAR + +#ifdef WIN32 +# ifdef GSL_DLL +# ifdef DLL_EXPORT +# define GSL_VAR extern __declspec(dllexport) +# else +# define GSL_VAR extern __declspec(dllimport) +# endif +# else +# define GSL_VAR extern +# endif +#else +# define GSL_VAR extern +#endif + +#endif + +#endif /* __GSL_TYPES_H__ */ diff --git a/gsl-2.5/gsl_version.h b/gsl-2.5/gsl_version.h new file mode 100644 index 00000000..00b29b6a --- /dev/null +++ b/gsl-2.5/gsl_version.h @@ -0,0 +1,26 @@ +#ifndef __GSL_VERSION_H__ +#define __GSL_VERSION_H__ + +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif +__BEGIN_DECLS + + +#define GSL_VERSION "2.5" +#define GSL_MAJOR_VERSION 2 +#define GSL_MINOR_VERSION 5 + +GSL_VAR const char * gsl_version; + +__END_DECLS + +#endif /* __GSL_VERSION_H__ */ diff --git a/gsl-2.5/gsl_version.h.in b/gsl-2.5/gsl_version.h.in new file mode 100644 index 00000000..0b488266 --- /dev/null +++ b/gsl-2.5/gsl_version.h.in @@ -0,0 +1,26 @@ +#ifndef __GSL_VERSION_H__ +#define __GSL_VERSION_H__ + +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif +__BEGIN_DECLS + + +#define GSL_VERSION "@VERSION@" +#define GSL_MAJOR_VERSION @GSL_MAJOR_VERSION@ +#define GSL_MINOR_VERSION @GSL_MINOR_VERSION@ + +GSL_VAR const char * gsl_version; + +__END_DECLS + +#endif /* __GSL_VERSION_H__ */ diff --git a/gsl-2.5/histogram/.deps/add.Plo b/gsl-2.5/histogram/.deps/add.Plo new file mode 100644 index 00000000..1a854792 --- /dev/null +++ b/gsl-2.5/histogram/.deps/add.Plo @@ -0,0 +1,111 @@ +add.lo: add.c /usr/include/stdc-predef.h ../config.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_types.h ../gsl/gsl_histogram.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h find.c + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_histogram.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +find.c: diff --git a/gsl-2.5/histogram/.deps/add2d.Plo b/gsl-2.5/histogram/.deps/add2d.Plo new file mode 100644 index 00000000..b3d03485 --- /dev/null +++ b/gsl-2.5/histogram/.deps/add2d.Plo @@ -0,0 +1,116 @@ +add2d.lo: add2d.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_errno.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_types.h ../gsl/gsl_histogram.h ../gsl/gsl_histogram2d.h \ + find2d.c find.c + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_histogram.h: + +../gsl/gsl_histogram2d.h: + +find2d.c: + +find.c: diff --git a/gsl-2.5/histogram/.deps/calloc_range.Plo b/gsl-2.5/histogram/.deps/calloc_range.Plo new file mode 100644 index 00000000..570e1893 --- /dev/null +++ b/gsl-2.5/histogram/.deps/calloc_range.Plo @@ -0,0 +1,109 @@ +calloc_range.lo: calloc_range.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_errno.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_types.h ../gsl/gsl_histogram.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_histogram.h: diff --git a/gsl-2.5/histogram/.deps/calloc_range2d.Plo b/gsl-2.5/histogram/.deps/calloc_range2d.Plo new file mode 100644 index 00000000..95ae2dfa --- /dev/null +++ b/gsl-2.5/histogram/.deps/calloc_range2d.Plo @@ -0,0 +1,109 @@ +calloc_range2d.lo: calloc_range2d.c /usr/include/stdc-predef.h \ + ../config.h /usr/include/stdlib.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_errno.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_types.h ../gsl/gsl_histogram2d.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_histogram2d.h: diff --git a/gsl-2.5/histogram/.deps/copy.Plo b/gsl-2.5/histogram/.deps/copy.Plo new file mode 100644 index 00000000..f5896365 --- /dev/null +++ b/gsl-2.5/histogram/.deps/copy.Plo @@ -0,0 +1,109 @@ +copy.lo: copy.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_errno.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_types.h ../gsl/gsl_histogram.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_histogram.h: diff --git a/gsl-2.5/histogram/.deps/copy2d.Plo b/gsl-2.5/histogram/.deps/copy2d.Plo new file mode 100644 index 00000000..254adad8 --- /dev/null +++ b/gsl-2.5/histogram/.deps/copy2d.Plo @@ -0,0 +1,109 @@ +copy2d.lo: copy2d.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_errno.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_types.h ../gsl/gsl_histogram2d.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_histogram2d.h: diff --git a/gsl-2.5/histogram/.deps/file.Plo b/gsl-2.5/histogram/.deps/file.Plo new file mode 100644 index 00000000..ddbc6cbe --- /dev/null +++ b/gsl-2.5/histogram/.deps/file.Plo @@ -0,0 +1,146 @@ +file.lo: file.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdio.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../gsl/gsl_errno.h /usr/include/errno.h \ + /usr/include/bits/errno.h /usr/include/linux/errno.h \ + /usr/include/asm/errno.h /usr/include/asm-generic/errno.h \ + /usr/include/asm-generic/errno-base.h ../gsl/gsl_types.h \ + ../gsl/gsl_block.h ../gsl/gsl_block_complex_long_double.h \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/byteswap.h \ + /usr/include/bits/byteswap-16.h /usr/include/sys/types.h \ + /usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib-float.h \ + ../gsl/gsl_block_complex_double.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_block_double.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_block_long.h ../gsl/gsl_block_uint.h ../gsl/gsl_block_int.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_block_short.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_block_char.h ../gsl/gsl_histogram.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_block.h: + +../gsl/gsl_block_complex_long_double.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_histogram.h: diff --git a/gsl-2.5/histogram/.deps/file2d.Plo b/gsl-2.5/histogram/.deps/file2d.Plo new file mode 100644 index 00000000..d5a228a9 --- /dev/null +++ b/gsl-2.5/histogram/.deps/file2d.Plo @@ -0,0 +1,147 @@ +file2d.lo: file2d.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdio.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../gsl/gsl_errno.h /usr/include/errno.h \ + /usr/include/bits/errno.h /usr/include/linux/errno.h \ + /usr/include/asm/errno.h /usr/include/asm-generic/errno.h \ + /usr/include/asm-generic/errno-base.h ../gsl/gsl_types.h \ + ../gsl/gsl_block.h ../gsl/gsl_block_complex_long_double.h \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/byteswap.h \ + /usr/include/bits/byteswap-16.h /usr/include/sys/types.h \ + /usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib-float.h \ + ../gsl/gsl_block_complex_double.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_block_double.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_block_long.h ../gsl/gsl_block_uint.h ../gsl/gsl_block_int.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_block_short.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_block_char.h \ + ../gsl/gsl_histogram2d.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_block.h: + +../gsl/gsl_block_complex_long_double.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_histogram2d.h: diff --git a/gsl-2.5/histogram/.deps/get.Plo b/gsl-2.5/histogram/.deps/get.Plo new file mode 100644 index 00000000..ee3a2460 --- /dev/null +++ b/gsl-2.5/histogram/.deps/get.Plo @@ -0,0 +1,111 @@ +get.lo: get.c /usr/include/stdc-predef.h ../config.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_types.h ../gsl/gsl_histogram.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h find.c + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_histogram.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +find.c: diff --git a/gsl-2.5/histogram/.deps/get2d.Plo b/gsl-2.5/histogram/.deps/get2d.Plo new file mode 100644 index 00000000..14b2c63d --- /dev/null +++ b/gsl-2.5/histogram/.deps/get2d.Plo @@ -0,0 +1,111 @@ +get2d.lo: get2d.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_errno.h /usr/include/stdio.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_types.h ../gsl/gsl_histogram2d.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h find.c + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_histogram2d.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +find.c: diff --git a/gsl-2.5/histogram/.deps/init.Plo b/gsl-2.5/histogram/.deps/init.Plo new file mode 100644 index 00000000..8ef460f6 --- /dev/null +++ b/gsl-2.5/histogram/.deps/init.Plo @@ -0,0 +1,109 @@ +init.lo: init.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_errno.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_types.h ../gsl/gsl_histogram.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_histogram.h: diff --git a/gsl-2.5/histogram/.deps/init2d.Plo b/gsl-2.5/histogram/.deps/init2d.Plo new file mode 100644 index 00000000..8dffa3a9 --- /dev/null +++ b/gsl-2.5/histogram/.deps/init2d.Plo @@ -0,0 +1,132 @@ +init2d.lo: init2d.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_errno.h /usr/include/stdio.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_types.h ../gsl/gsl_histogram2d.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_histogram2d.h: diff --git a/gsl-2.5/histogram/.deps/maxval.Plo b/gsl-2.5/histogram/.deps/maxval.Plo new file mode 100644 index 00000000..88eebb5f --- /dev/null +++ b/gsl-2.5/histogram/.deps/maxval.Plo @@ -0,0 +1,109 @@ +maxval.lo: maxval.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_errno.h /usr/include/stdio.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_types.h ../gsl/gsl_histogram.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_histogram.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: diff --git a/gsl-2.5/histogram/.deps/maxval2d.Plo b/gsl-2.5/histogram/.deps/maxval2d.Plo new file mode 100644 index 00000000..25691eef --- /dev/null +++ b/gsl-2.5/histogram/.deps/maxval2d.Plo @@ -0,0 +1,109 @@ +maxval2d.lo: maxval2d.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_errno.h /usr/include/stdio.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_types.h ../gsl/gsl_histogram2d.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_histogram2d.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: diff --git a/gsl-2.5/histogram/.deps/oper.Plo b/gsl-2.5/histogram/.deps/oper.Plo new file mode 100644 index 00000000..47d2f2b7 --- /dev/null +++ b/gsl-2.5/histogram/.deps/oper.Plo @@ -0,0 +1,109 @@ +oper.lo: oper.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_errno.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_types.h ../gsl/gsl_histogram.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_histogram.h: diff --git a/gsl-2.5/histogram/.deps/oper2d.Plo b/gsl-2.5/histogram/.deps/oper2d.Plo new file mode 100644 index 00000000..9f1c3ee6 --- /dev/null +++ b/gsl-2.5/histogram/.deps/oper2d.Plo @@ -0,0 +1,109 @@ +oper2d.lo: oper2d.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_errno.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_types.h ../gsl/gsl_histogram2d.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_histogram2d.h: diff --git a/gsl-2.5/histogram/.deps/params.Plo b/gsl-2.5/histogram/.deps/params.Plo new file mode 100644 index 00000000..8137bca6 --- /dev/null +++ b/gsl-2.5/histogram/.deps/params.Plo @@ -0,0 +1,109 @@ +params.lo: params.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_errno.h /usr/include/stdio.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_types.h ../gsl/gsl_histogram.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_histogram.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: diff --git a/gsl-2.5/histogram/.deps/params2d.Plo b/gsl-2.5/histogram/.deps/params2d.Plo new file mode 100644 index 00000000..c2e6b9b4 --- /dev/null +++ b/gsl-2.5/histogram/.deps/params2d.Plo @@ -0,0 +1,109 @@ +params2d.lo: params2d.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_errno.h /usr/include/stdio.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_types.h ../gsl/gsl_histogram2d.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_histogram2d.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: diff --git a/gsl-2.5/histogram/.deps/pdf.Plo b/gsl-2.5/histogram/.deps/pdf.Plo new file mode 100644 index 00000000..af8c9e7e --- /dev/null +++ b/gsl-2.5/histogram/.deps/pdf.Plo @@ -0,0 +1,111 @@ +pdf.lo: pdf.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_errno.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_types.h ../gsl/gsl_histogram.h find.c + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_histogram.h: + +find.c: diff --git a/gsl-2.5/histogram/.deps/pdf2d.Plo b/gsl-2.5/histogram/.deps/pdf2d.Plo new file mode 100644 index 00000000..6b9c5320 --- /dev/null +++ b/gsl-2.5/histogram/.deps/pdf2d.Plo @@ -0,0 +1,114 @@ +pdf2d.lo: pdf2d.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_errno.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_types.h ../gsl/gsl_histogram.h ../gsl/gsl_histogram2d.h \ + find.c + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_histogram.h: + +../gsl/gsl_histogram2d.h: + +find.c: diff --git a/gsl-2.5/histogram/.deps/reset.Plo b/gsl-2.5/histogram/.deps/reset.Plo new file mode 100644 index 00000000..f785100e --- /dev/null +++ b/gsl-2.5/histogram/.deps/reset.Plo @@ -0,0 +1,109 @@ +reset.lo: reset.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_errno.h /usr/include/stdio.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_types.h ../gsl/gsl_histogram.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_histogram.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: diff --git a/gsl-2.5/histogram/.deps/reset2d.Plo b/gsl-2.5/histogram/.deps/reset2d.Plo new file mode 100644 index 00000000..9dfd4a06 --- /dev/null +++ b/gsl-2.5/histogram/.deps/reset2d.Plo @@ -0,0 +1,109 @@ +reset2d.lo: reset2d.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_errno.h /usr/include/stdio.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_types.h ../gsl/gsl_histogram2d.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_histogram2d.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: diff --git a/gsl-2.5/histogram/.deps/stat.Plo b/gsl-2.5/histogram/.deps/stat.Plo new file mode 100644 index 00000000..7a381ccd --- /dev/null +++ b/gsl-2.5/histogram/.deps/stat.Plo @@ -0,0 +1,132 @@ +stat.lo: stat.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_errno.h /usr/include/stdio.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_types.h ../gsl/gsl_histogram.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_histogram.h: diff --git a/gsl-2.5/histogram/.deps/stat2d.Plo b/gsl-2.5/histogram/.deps/stat2d.Plo new file mode 100644 index 00000000..4ae72d6b --- /dev/null +++ b/gsl-2.5/histogram/.deps/stat2d.Plo @@ -0,0 +1,131 @@ +stat2d.lo: stat2d.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_errno.h /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_types.h ../gsl/gsl_histogram2d.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_histogram2d.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: diff --git a/gsl-2.5/histogram/.deps/test.Po b/gsl-2.5/histogram/.deps/test.Po new file mode 100644 index 00000000..2ae76222 --- /dev/null +++ b/gsl-2.5/histogram/.deps/test.Po @@ -0,0 +1,95 @@ +test.o: test.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../gsl/gsl_histogram.h ../gsl/gsl_test.h \ + ../gsl/gsl_ieee_utils.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../gsl/gsl_histogram.h: + +../gsl/gsl_test.h: + +../gsl/gsl_ieee_utils.h: diff --git a/gsl-2.5/histogram/.deps/test1d.Po b/gsl-2.5/histogram/.deps/test1d.Po new file mode 100644 index 00000000..556fe75c --- /dev/null +++ b/gsl-2.5/histogram/.deps/test1d.Po @@ -0,0 +1,95 @@ +test1d.o: test1d.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../gsl/gsl_histogram.h ../gsl/gsl_test.h \ + ../gsl/gsl_ieee_utils.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../gsl/gsl_histogram.h: + +../gsl/gsl_test.h: + +../gsl/gsl_ieee_utils.h: diff --git a/gsl-2.5/histogram/.deps/test1d_resample.Po b/gsl-2.5/histogram/.deps/test1d_resample.Po new file mode 100644 index 00000000..dd1324c0 --- /dev/null +++ b/gsl-2.5/histogram/.deps/test1d_resample.Po @@ -0,0 +1,120 @@ +test1d_resample.o: test1d_resample.c /usr/include/stdc-predef.h \ + ../config.h /usr/include/stdlib.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_histogram.h /usr/include/stdio.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../gsl/gsl_test.h ../gsl/gsl_ieee_utils.h \ + urand.c + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_histogram.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../gsl/gsl_test.h: + +../gsl/gsl_ieee_utils.h: + +urand.c: diff --git a/gsl-2.5/histogram/.deps/test1d_trap.Po b/gsl-2.5/histogram/.deps/test1d_trap.Po new file mode 100644 index 00000000..cbea8a00 --- /dev/null +++ b/gsl-2.5/histogram/.deps/test1d_trap.Po @@ -0,0 +1,114 @@ +test1d_trap.o: test1d_trap.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../gsl/gsl_histogram.h ../gsl/gsl_test.h \ + ../gsl/gsl_errno.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_types.h ../gsl/gsl_ieee_utils.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../gsl/gsl_histogram.h: + +../gsl/gsl_test.h: + +../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_ieee_utils.h: diff --git a/gsl-2.5/histogram/.deps/test2d.Po b/gsl-2.5/histogram/.deps/test2d.Po new file mode 100644 index 00000000..a6f724de --- /dev/null +++ b/gsl-2.5/histogram/.deps/test2d.Po @@ -0,0 +1,178 @@ +test2d.o: test2d.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../gsl/gsl_errno.h /usr/include/errno.h \ + /usr/include/bits/errno.h /usr/include/linux/errno.h \ + /usr/include/asm/errno.h /usr/include/asm-generic/errno.h \ + /usr/include/asm-generic/errno-base.h ../gsl/gsl_types.h \ + ../gsl/gsl_math.h /usr/include/math.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_nan.h ../gsl/gsl_pow_int.h \ + ../gsl/gsl_minmax.h ../gsl/gsl_histogram2d.h ../gsl/gsl_test.h \ + ../gsl/gsl_ieee_utils.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_histogram2d.h: + +../gsl/gsl_test.h: + +../gsl/gsl_ieee_utils.h: diff --git a/gsl-2.5/histogram/.deps/test2d_resample.Po b/gsl-2.5/histogram/.deps/test2d_resample.Po new file mode 100644 index 00000000..b8ad00b2 --- /dev/null +++ b/gsl-2.5/histogram/.deps/test2d_resample.Po @@ -0,0 +1,120 @@ +test2d_resample.o: test2d_resample.c /usr/include/stdc-predef.h \ + ../config.h /usr/include/stdlib.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_histogram2d.h /usr/include/stdio.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../gsl/gsl_test.h ../gsl/gsl_ieee_utils.h \ + urand.c + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_histogram2d.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../gsl/gsl_test.h: + +../gsl/gsl_ieee_utils.h: + +urand.c: diff --git a/gsl-2.5/histogram/.deps/test2d_trap.Po b/gsl-2.5/histogram/.deps/test2d_trap.Po new file mode 100644 index 00000000..f299124c --- /dev/null +++ b/gsl-2.5/histogram/.deps/test2d_trap.Po @@ -0,0 +1,114 @@ +test2d_trap.o: test2d_trap.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../gsl/gsl_histogram2d.h ../gsl/gsl_test.h \ + ../gsl/gsl_errno.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_types.h ../gsl/gsl_ieee_utils.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../gsl/gsl_histogram2d.h: + +../gsl/gsl_test.h: + +../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_ieee_utils.h: diff --git a/gsl-2.5/histogram/.libs/libgslhistogram.la b/gsl-2.5/histogram/.libs/libgslhistogram.la new file mode 120000 index 00000000..bd4d4018 --- /dev/null +++ b/gsl-2.5/histogram/.libs/libgslhistogram.la @@ -0,0 +1 @@ +../libgslhistogram.la \ No newline at end of file diff --git a/gsl-2.5/histogram/ChangeLog b/gsl-2.5/histogram/ChangeLog new file mode 100644 index 00000000..bb230bc7 --- /dev/null +++ b/gsl-2.5/histogram/ChangeLog @@ -0,0 +1,170 @@ +2009-07-09 Brian Gough + + * pdf2d.c (gsl_histogram2d_pdf_free): handle NULL argument in free + + * pdf.c (gsl_histogram_pdf_free): handle NULL argument in free + + * init2d.c (gsl_histogram2d_free): handle NULL argument in free + + * init.c (gsl_histogram_free): handle NULL argument in free + +2008-07-03 Brian Gough + + * Makefile.am (INCLUDES): use top_srcdir instead of top_builddir + +2004-11-28 Brian Gough + + * init2d.c (make_uniform): compute uniform range without + cancellation error. + + * init.c (make_uniform): compute uniform range without + cancellation error. + +Tue Aug 27 19:36:43 2002 Brian Gough + + * test2d.c (main): changed test output format from %g to %e for + portability + + * test.c (main): changed test output format from %g to %e for + portability + +Wed Mar 6 22:03:35 2002 Brian Gough + + * test2d.c (main): cleaned up the tests a bit + + * stat2d.c: added checks for wi>0 (Achim Gaedke) + +Sat Jan 26 17:09:10 2002 Brian Gough + + * stat2d.c: added include for sqrt + +Fri Jan 18 21:45:35 2002 Brian Gough + + * stat2d.c: functions to compute statistics of 2d histograms + (Achim Gaedke) + +Mon Jan 14 19:34:31 2002 Brian Gough + + * stat.c (gsl_histogram_sum): new function to sum bins (Achim + Gaedke) + + * maxval2d.c (gsl_histogram2d_sum): new function to sum bins + (Achim Gaedke) + +Thu Oct 18 14:48:07 2001 Brian Gough + + * pdf2d.c (gsl_histogram2d_pdf_alloc): changed the definition of + the pdf alloc function to be consistent with the rest of the + library + + * pdf.c (gsl_histogram_pdf_alloc): changed the definition of the + pdf alloc function to be consistent with the rest of the library + + * init2d.c (gsl_histogram2d_alloc): added an alloc function for + consistency + + * init.c (gsl_histogram_alloc): added an alloc function for + consistency + +Wed Sep 12 13:38:40 2001 Brian Gough + + * stat.c (gsl_histogram_mean): fixed calculation of mean/sigma and + made it part of the library + +Sun Aug 19 13:31:35 2001 Brian Gough + + * test_gsl_histogram.sh: moved to top-level directory + +Sat Aug 18 22:21:26 2001 Brian Gough + + * gsl-histogram.c: moved to top-level directory + +Mon Jun 25 17:41:42 2001 Brian Gough + + * init2d.c (gsl_histogram2d_set_ranges_uniform): added range + initialization functions suggested by Achim Gaedke + + * init.c (gsl_histogram_set_ranges_uniform): added range + initialization functions suggested by Achim Gaedke + +Tue Apr 17 22:13:05 2001 Brian Gough + + * get2d.c: include "find.c" + +Mon Apr 16 20:13:45 2001 Brian Gough + + * get2d.c (gsl_histogram2d_get): removed unnecessary reference to + find2d + +Mon Jan 22 13:55:13 2001 Brian Gough + + * find.c (find): optimize for the linear case, include own binary + search for speed + + * add.c (gsl_histogram_accumulate): fix check of array bound for + index + +Sun May 28 12:23:46 2000 Brian Gough + + * test2d.c (main): use binary mode "b" when reading and writing + binary files + + * test.c (main): use binary mode "b" when reading and writing + binary files + +Wed Apr 26 15:09:22 2000 Brian Gough + + * oper2d.c (gsl_histogram2d_shift): added function for shifting + histogram by a constant offset + + * oper.c (gsl_histogram_shift): added function for shifting + histogram by a constant offset + +Wed Apr 19 17:27:44 2000 Brian Gough + + * added numerous extensions from Simone Piccardi + +2000-04-01 Mark Galassi + + * *.c: changed 0 -> GSL_SUCCESS where appropriate; THANKS to Dave + Morrison. + +Fri Nov 19 15:31:51 1999 Brian Gough + + * gsl-histogram.c (main): free memory before exit, eliminates + warning from checkergcc + + * test_gsl_histogram.sh: added a test for the gsl-histogram + program + +Fri Oct 1 15:47:01 1999 Brian Gough + + * file.c file2d.c: converted to use new block i/o functions + +Wed Aug 18 11:41:40 1999 Brian Gough + + * eliminated obvious memory leaks from the tests, so that we can + check that the _free functions work correctly + + * gsl-histogram.c (main): removed unused variable + +Fri Aug 6 11:19:37 1999 Brian Gough + + * removed dependence on rand() and RAND_MAX + +1999-08-05 Mark Galassi + + * gsl-histogram.c (main): fixed a simple logic bug. Thanks to + Barak Pearlmutter (bap@cs.unm.edu) for the patch. + +1998-11-06 + + * used a cast of (int) when attempting to print size_t variables + with %d + +Wed Sep 16 15:08:59 1998 Brian Gough + + * gsl-histogram.c (main): made the number of bins + optional. If you don't specify it then it uses bins of width 1. + + diff --git a/gsl-2.5/histogram/Makefile b/gsl-2.5/histogram/Makefile new file mode 100644 index 00000000..c88fb3a6 --- /dev/null +++ b/gsl-2.5/histogram/Makefile @@ -0,0 +1,1064 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# histogram/Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + + + + +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/gsl +pkgincludedir = $(includedir)/gsl +pkglibdir = $(libdir)/gsl +pkglibexecdir = $(libexecdir)/gsl +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = x86_64-unknown-linux-gnu +host_triplet = x86_64-unknown-linux-gnu +check_PROGRAMS = test$(EXEEXT) +subdir = histogram +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp \ + $(noinst_HEADERS) $(pkginclude_HEADERS) \ + $(top_srcdir)/test-driver ChangeLog TODO +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +libgslhistogram_la_LIBADD = +am_libgslhistogram_la_OBJECTS = add.lo get.lo init.lo params.lo \ + reset.lo file.lo pdf.lo add2d.lo get2d.lo init2d.lo \ + params2d.lo reset2d.lo file2d.lo pdf2d.lo calloc_range.lo \ + calloc_range2d.lo copy.lo copy2d.lo maxval.lo maxval2d.lo \ + oper.lo oper2d.lo stat.lo stat2d.lo +libgslhistogram_la_OBJECTS = $(am_libgslhistogram_la_OBJECTS) +AM_V_lt = $(am__v_lt_$(V)) +am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) +am__v_lt_0 = --silent +am__v_lt_1 = +am_test_OBJECTS = test.$(OBJEXT) test1d.$(OBJEXT) test2d.$(OBJEXT) \ + test1d_resample.$(OBJEXT) test2d_resample.$(OBJEXT) \ + test1d_trap.$(OBJEXT) test2d_trap.$(OBJEXT) +test_OBJECTS = $(am_test_OBJECTS) +test_DEPENDENCIES = libgslhistogram.la ../block/libgslblock.la \ + ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la \ + ../test/libgsltest.la ../sys/libgslsys.la +AM_V_P = $(am__v_P_$(V)) +am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY)) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_$(V)) +am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_$(V)) +am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I. -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_$(V)) +am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_$(V)) +am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libgslhistogram_la_SOURCES) $(test_SOURCES) +DIST_SOURCES = $(libgslhistogram_la_SOURCES) $(test_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(pkgincludedir)" +HEADERS = $(noinst_HEADERS) $(pkginclude_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = .test +LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing aclocal-1.13 +AMTAR = $${TAR-tar} +AM_DEFAULT_VERBOSITY = 1 +AR = ar +AS = as +AUTOCONF = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing autoconf +AUTOHEADER = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing autoheader +AUTOMAKE = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing automake-1.13 +AWK = gawk +CC = gcc +CCDEPMODE = depmode=gcc3 +CFLAGS = -g -O2 +CPP = gcc -E +CPPFLAGS = +CYGPATH_W = echo +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +DLLTOOL = false +DSYMUTIL = +DUMPBIN = +ECHO_C = +ECHO_N = -n +ECHO_T = +EGREP = /usr/bin/grep -E +EXEEXT = +FGREP = /usr/bin/grep -F +GREP = /usr/bin/grep +GSLCBLAS_LDFLAGS = +GSL_CFLAGS = -I${prefix}/include +GSL_LDFLAGS = +GSL_LIBADD = +GSL_LIBM = -lm +GSL_LIBS = -L${exec_prefix}/lib -lgsl +GSL_LT_CBLAS_VERSION = 0:0:0 +GSL_LT_VERSION = 24:0:1 +GSL_MAJOR_VERSION = 2 +GSL_MINOR_VERSION = 5 +HAVE_AIX_IEEE_INTERFACE = +HAVE_DARWIN86_IEEE_INTERFACE = +HAVE_DARWIN_IEEE_INTERFACE = +HAVE_FREEBSD_IEEE_INTERFACE = +HAVE_GNUM68K_IEEE_INTERFACE = +HAVE_GNUPPC_IEEE_INTERFACE = +HAVE_GNUSPARC_IEEE_INTERFACE = +HAVE_GNUX86_IEEE_INTERFACE = +HAVE_HPUX11_IEEE_INTERFACE = +HAVE_HPUX_IEEE_INTERFACE = +HAVE_IRIX_IEEE_INTERFACE = +HAVE_NETBSD_IEEE_INTERFACE = +HAVE_OPENBSD_IEEE_INTERFACE = +HAVE_OS2EMX_IEEE_INTERFACE = +HAVE_SOLARIS_IEEE_INTERFACE = +HAVE_SUNOS4_IEEE_INTERFACE = +HAVE_TRU64_IEEE_INTERFACE = +INSTALL = /usr/bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = $(install_sh) -c -s +LD = /usr/bin/ld -m elf_x86_64 +LDFLAGS = +LIBM = -lm +LIBOBJS = +LIBS = -lm +LIBTOOL = $(SHELL) $(top_builddir)/libtool +LIPO = +LN_S = ln -s +LTLIBOBJS = +MAINT = # +MAKEINFO = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing makeinfo +MANIFEST_TOOL = : +MKDIR_P = /usr/bin/mkdir -p +NM = /usr/bin/nm -B +NMEDIT = +OBJDUMP = objdump +OBJEXT = o +OTOOL = +OTOOL64 = +PACKAGE = gsl +PACKAGE_BUGREPORT = +PACKAGE_NAME = gsl +PACKAGE_STRING = gsl 2.5 +PACKAGE_TARNAME = gsl +PACKAGE_URL = +PACKAGE_VERSION = 2.5 +PATH_SEPARATOR = : +RANLIB = ranlib +SED = /usr/bin/sed +SET_MAKE = +SHELL = /bin/sh +STRIP = strip +VERSION = 2.5 +abs_builddir = /home/groups/kipac/chto/package/gsl/gsl-2.5/histogram +abs_srcdir = /home/groups/kipac/chto/package/gsl/gsl-2.5/histogram +abs_top_builddir = /home/groups/kipac/chto/package/gsl/gsl-2.5 +abs_top_srcdir = /home/groups/kipac/chto/package/gsl/gsl-2.5 +ac_ct_AR = ar +ac_ct_CC = gcc +ac_ct_DUMPBIN = +am__include = include +am__leading_dot = . +am__quote = +am__tar = $${TAR-tar} chof - "$$tardir" +am__untar = $${TAR-tar} xf - +bindir = ${exec_prefix}/bin +build = x86_64-unknown-linux-gnu +build_alias = +build_cpu = x86_64 +build_os = linux-gnu +build_vendor = unknown +builddir = . +datadir = ${datarootdir} +datarootdir = ${prefix}/share +docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} +dvidir = ${docdir} +exec_prefix = ${prefix} +host = x86_64-unknown-linux-gnu +host_alias = +host_cpu = x86_64 +host_os = linux-gnu +host_vendor = unknown +htmldir = ${docdir} +includedir = ${prefix}/include +infodir = ${datarootdir}/info +install_sh = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/install-sh +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +localedir = ${datarootdir}/locale +localstatedir = ${prefix}/var +mandir = ${datarootdir}/man +mkdir_p = $(MKDIR_P) +oldincludedir = /usr/include +pdfdir = ${docdir} +prefix = /home/groups/kipac/chto/package/gsl/gsl_lib +program_transform_name = s,x,x, +psdir = ${docdir} +sbindir = ${exec_prefix}/sbin +sharedstatedir = ${prefix}/com +srcdir = . +sysconfdir = ${prefix}/etc +target_alias = +top_build_prefix = ../ +top_builddir = .. +top_srcdir = .. +noinst_LTLIBRARIES = libgslhistogram.la +pkginclude_HEADERS = gsl_histogram.h gsl_histogram2d.h +AM_CPPFLAGS = -I$(top_srcdir) +libgslhistogram_la_SOURCES = add.c get.c init.c params.c reset.c file.c pdf.c gsl_histogram.h add2d.c get2d.c init2d.c params2d.c reset2d.c file2d.c pdf2d.c gsl_histogram2d.h calloc_range.c calloc_range2d.c copy.c copy2d.c maxval.c maxval2d.c oper.c oper2d.c stat.c stat2d.c +noinst_HEADERS = urand.c find.c find2d.c +TESTS = $(check_PROGRAMS) +EXTRA_DIST = urand.c +test_SOURCES = test.c test1d.c test2d.c test1d_resample.c test2d_resample.c test1d_trap.c test2d_trap.c +test_LDADD = libgslhistogram.la ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la +CLEANFILES = test.txt test.dat +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu histogram/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu histogram/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: # $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): # $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libgslhistogram.la: $(libgslhistogram_la_OBJECTS) $(libgslhistogram_la_DEPENDENCIES) $(EXTRA_libgslhistogram_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(libgslhistogram_la_OBJECTS) $(libgslhistogram_la_LIBADD) $(LIBS) + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) $(EXTRA_test_DEPENDENCIES) + @rm -f test$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_OBJECTS) $(test_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +include ./$(DEPDIR)/add.Plo +include ./$(DEPDIR)/add2d.Plo +include ./$(DEPDIR)/calloc_range.Plo +include ./$(DEPDIR)/calloc_range2d.Plo +include ./$(DEPDIR)/copy.Plo +include ./$(DEPDIR)/copy2d.Plo +include ./$(DEPDIR)/file.Plo +include ./$(DEPDIR)/file2d.Plo +include ./$(DEPDIR)/get.Plo +include ./$(DEPDIR)/get2d.Plo +include ./$(DEPDIR)/init.Plo +include ./$(DEPDIR)/init2d.Plo +include ./$(DEPDIR)/maxval.Plo +include ./$(DEPDIR)/maxval2d.Plo +include ./$(DEPDIR)/oper.Plo +include ./$(DEPDIR)/oper2d.Plo +include ./$(DEPDIR)/params.Plo +include ./$(DEPDIR)/params2d.Plo +include ./$(DEPDIR)/pdf.Plo +include ./$(DEPDIR)/pdf2d.Plo +include ./$(DEPDIR)/reset.Plo +include ./$(DEPDIR)/reset2d.Plo +include ./$(DEPDIR)/stat.Plo +include ./$(DEPDIR)/stat2d.Plo +include ./$(DEPDIR)/test.Po +include ./$(DEPDIR)/test1d.Po +include ./$(DEPDIR)/test1d_resample.Po +include ./$(DEPDIR)/test1d_trap.Po +include ./$(DEPDIR)/test2d.Po +include ./$(DEPDIR)/test2d_resample.Po +include ./$(DEPDIR)/test2d_trap.Po + +.c.o: + $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# $(AM_V_CC)source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(COMPILE) -c $< + +.c.obj: + $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# $(AM_V_CC)source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: + $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +# $(AM_V_CC)source='$<' object='$@' libtool=yes \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-pkgincludeHEADERS: $(pkginclude_HEADERS) + @$(NORMAL_INSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \ + done + +uninstall-pkgincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + else \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_PROGRAMS) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +test.log: test$(EXEEXT) + @p='test$(EXEEXT)'; \ + b='test'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +#.test$(EXEEXT).log: +# @p='$<'; \ +# $(am__set_b); \ +# $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +# --log-file $$b.log --trs-file $$b.trs \ +# $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +# "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-am +all-am: Makefile $(LTLIBRARIES) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(pkgincludedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-pkgincludeHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-pkgincludeHEADERS + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES cscopelist-am ctags ctags-am distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-pkgincludeHEADERS \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + recheck tags tags-am uninstall uninstall-am \ + uninstall-pkgincludeHEADERS + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gsl-2.5/histogram/Makefile.am b/gsl-2.5/histogram/Makefile.am new file mode 100644 index 00000000..e6659677 --- /dev/null +++ b/gsl-2.5/histogram/Makefile.am @@ -0,0 +1,20 @@ +noinst_LTLIBRARIES = libgslhistogram.la + +pkginclude_HEADERS = gsl_histogram.h gsl_histogram2d.h + +AM_CPPFLAGS = -I$(top_srcdir) + +libgslhistogram_la_SOURCES = add.c get.c init.c params.c reset.c file.c pdf.c gsl_histogram.h add2d.c get2d.c init2d.c params2d.c reset2d.c file2d.c pdf2d.c gsl_histogram2d.h calloc_range.c calloc_range2d.c copy.c copy2d.c maxval.c maxval2d.c oper.c oper2d.c stat.c stat2d.c + +noinst_HEADERS = urand.c find.c find2d.c + +check_PROGRAMS = test +TESTS = $(check_PROGRAMS) + +EXTRA_DIST = urand.c + +test_SOURCES = test.c test1d.c test2d.c test1d_resample.c test2d_resample.c test1d_trap.c test2d_trap.c +test_LDADD = libgslhistogram.la ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la + +CLEANFILES = test.txt test.dat + diff --git a/gsl-2.5/histogram/Makefile.in b/gsl-2.5/histogram/Makefile.in new file mode 100644 index 00000000..3a098517 --- /dev/null +++ b/gsl-2.5/histogram/Makefile.in @@ -0,0 +1,1064 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + + +VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +check_PROGRAMS = test$(EXEEXT) +subdir = histogram +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp \ + $(noinst_HEADERS) $(pkginclude_HEADERS) \ + $(top_srcdir)/test-driver ChangeLog TODO +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +libgslhistogram_la_LIBADD = +am_libgslhistogram_la_OBJECTS = add.lo get.lo init.lo params.lo \ + reset.lo file.lo pdf.lo add2d.lo get2d.lo init2d.lo \ + params2d.lo reset2d.lo file2d.lo pdf2d.lo calloc_range.lo \ + calloc_range2d.lo copy.lo copy2d.lo maxval.lo maxval2d.lo \ + oper.lo oper2d.lo stat.lo stat2d.lo +libgslhistogram_la_OBJECTS = $(am_libgslhistogram_la_OBJECTS) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +am_test_OBJECTS = test.$(OBJEXT) test1d.$(OBJEXT) test2d.$(OBJEXT) \ + test1d_resample.$(OBJEXT) test2d_resample.$(OBJEXT) \ + test1d_trap.$(OBJEXT) test2d_trap.$(OBJEXT) +test_OBJECTS = $(am_test_OBJECTS) +test_DEPENDENCIES = libgslhistogram.la ../block/libgslblock.la \ + ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la \ + ../test/libgsltest.la ../sys/libgslsys.la +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libgslhistogram_la_SOURCES) $(test_SOURCES) +DIST_SOURCES = $(libgslhistogram_la_SOURCES) $(test_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(pkgincludedir)" +HEADERS = $(noinst_HEADERS) $(pkginclude_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = @EXEEXT@ .test +LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +GSLCBLAS_LDFLAGS = @GSLCBLAS_LDFLAGS@ +GSL_CFLAGS = @GSL_CFLAGS@ +GSL_LDFLAGS = @GSL_LDFLAGS@ +GSL_LIBADD = @GSL_LIBADD@ +GSL_LIBM = @GSL_LIBM@ +GSL_LIBS = @GSL_LIBS@ +GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ +GSL_LT_VERSION = @GSL_LT_VERSION@ +GSL_MAJOR_VERSION = @GSL_MAJOR_VERSION@ +GSL_MINOR_VERSION = @GSL_MINOR_VERSION@ +HAVE_AIX_IEEE_INTERFACE = @HAVE_AIX_IEEE_INTERFACE@ +HAVE_DARWIN86_IEEE_INTERFACE = @HAVE_DARWIN86_IEEE_INTERFACE@ +HAVE_DARWIN_IEEE_INTERFACE = @HAVE_DARWIN_IEEE_INTERFACE@ +HAVE_FREEBSD_IEEE_INTERFACE = @HAVE_FREEBSD_IEEE_INTERFACE@ +HAVE_GNUM68K_IEEE_INTERFACE = @HAVE_GNUM68K_IEEE_INTERFACE@ +HAVE_GNUPPC_IEEE_INTERFACE = @HAVE_GNUPPC_IEEE_INTERFACE@ +HAVE_GNUSPARC_IEEE_INTERFACE = @HAVE_GNUSPARC_IEEE_INTERFACE@ +HAVE_GNUX86_IEEE_INTERFACE = @HAVE_GNUX86_IEEE_INTERFACE@ +HAVE_HPUX11_IEEE_INTERFACE = @HAVE_HPUX11_IEEE_INTERFACE@ +HAVE_HPUX_IEEE_INTERFACE = @HAVE_HPUX_IEEE_INTERFACE@ +HAVE_IRIX_IEEE_INTERFACE = @HAVE_IRIX_IEEE_INTERFACE@ +HAVE_NETBSD_IEEE_INTERFACE = @HAVE_NETBSD_IEEE_INTERFACE@ +HAVE_OPENBSD_IEEE_INTERFACE = @HAVE_OPENBSD_IEEE_INTERFACE@ +HAVE_OS2EMX_IEEE_INTERFACE = @HAVE_OS2EMX_IEEE_INTERFACE@ +HAVE_SOLARIS_IEEE_INTERFACE = @HAVE_SOLARIS_IEEE_INTERFACE@ +HAVE_SUNOS4_IEEE_INTERFACE = @HAVE_SUNOS4_IEEE_INTERFACE@ +HAVE_TRU64_IEEE_INTERFACE = @HAVE_TRU64_IEEE_INTERFACE@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBM = @LIBM@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +noinst_LTLIBRARIES = libgslhistogram.la +pkginclude_HEADERS = gsl_histogram.h gsl_histogram2d.h +AM_CPPFLAGS = -I$(top_srcdir) +libgslhistogram_la_SOURCES = add.c get.c init.c params.c reset.c file.c pdf.c gsl_histogram.h add2d.c get2d.c init2d.c params2d.c reset2d.c file2d.c pdf2d.c gsl_histogram2d.h calloc_range.c calloc_range2d.c copy.c copy2d.c maxval.c maxval2d.c oper.c oper2d.c stat.c stat2d.c +noinst_HEADERS = urand.c find.c find2d.c +TESTS = $(check_PROGRAMS) +EXTRA_DIST = urand.c +test_SOURCES = test.c test1d.c test2d.c test1d_resample.c test2d_resample.c test1d_trap.c test2d_trap.c +test_LDADD = libgslhistogram.la ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la +CLEANFILES = test.txt test.dat +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu histogram/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu histogram/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libgslhistogram.la: $(libgslhistogram_la_OBJECTS) $(libgslhistogram_la_DEPENDENCIES) $(EXTRA_libgslhistogram_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(libgslhistogram_la_OBJECTS) $(libgslhistogram_la_LIBADD) $(LIBS) + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) $(EXTRA_test_DEPENDENCIES) + @rm -f test$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_OBJECTS) $(test_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/add.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/add2d.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/calloc_range.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/calloc_range2d.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/copy.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/copy2d.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/file.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/file2d.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/get.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/get2d.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/init.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/init2d.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/maxval.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/maxval2d.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/oper.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/oper2d.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/params.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/params2d.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pdf.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pdf2d.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/reset.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/reset2d.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stat.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stat2d.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test1d.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test1d_resample.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test1d_trap.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test2d.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test2d_resample.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test2d_trap.Po@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-pkgincludeHEADERS: $(pkginclude_HEADERS) + @$(NORMAL_INSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \ + done + +uninstall-pkgincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + else \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_PROGRAMS) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +test.log: test$(EXEEXT) + @p='test$(EXEEXT)'; \ + b='test'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +@am__EXEEXT_TRUE@.test$(EXEEXT).log: +@am__EXEEXT_TRUE@ @p='$<'; \ +@am__EXEEXT_TRUE@ $(am__set_b); \ +@am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +@am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ +@am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +@am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-am +all-am: Makefile $(LTLIBRARIES) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(pkgincludedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-pkgincludeHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-pkgincludeHEADERS + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES cscopelist-am ctags ctags-am distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-pkgincludeHEADERS \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + recheck tags tags-am uninstall uninstall-am \ + uninstall-pkgincludeHEADERS + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gsl-2.5/histogram/TODO b/gsl-2.5/histogram/TODO new file mode 100644 index 00000000..0b16e197 --- /dev/null +++ b/gsl-2.5/histogram/TODO @@ -0,0 +1,6 @@ +# -*- org -*- +#+CATEGORY: histogram + +* Implement N-d histograms (Simone Piccardi is +working on something here). + diff --git a/gsl-2.5/histogram/add.c b/gsl-2.5/histogram/add.c new file mode 100644 index 00000000..634c7186 --- /dev/null +++ b/gsl-2.5/histogram/add.c @@ -0,0 +1,55 @@ +/* histogram/add.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include + +#include "find.c" + +int +gsl_histogram_increment (gsl_histogram * h, double x) +{ + int status = gsl_histogram_accumulate (h, x, 1.0); + return status; +} + +int +gsl_histogram_accumulate (gsl_histogram * h, double x, double weight) +{ + const size_t n = h->n; + size_t index = 0; + + int status = find (h->n, h->range, x, &index); + + if (status) + { + return GSL_EDOM; + } + + if (index >= n) + { + GSL_ERROR ("index lies outside valid range of 0 .. n - 1", + GSL_ESANITY); + } + + h->bin[index] += weight; + + return GSL_SUCCESS; +} diff --git a/gsl-2.5/histogram/add.lo b/gsl-2.5/histogram/add.lo new file mode 100644 index 00000000..22571ed5 --- /dev/null +++ b/gsl-2.5/histogram/add.lo @@ -0,0 +1,12 @@ +# add.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/add.o' + +# Name of the non-PIC object +non_pic_object='add.o' + diff --git a/gsl-2.5/histogram/add2d.c b/gsl-2.5/histogram/add2d.c new file mode 100644 index 00000000..3d77c5c4 --- /dev/null +++ b/gsl-2.5/histogram/add2d.c @@ -0,0 +1,66 @@ +/* histogram/add2d.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include + +#include "find2d.c" + +int +gsl_histogram2d_increment (gsl_histogram2d * h, double x, double y) +{ + int status = gsl_histogram2d_accumulate (h, x, y, 1.0); + return status; +} + +int +gsl_histogram2d_accumulate (gsl_histogram2d * h, + double x, double y, double weight) +{ + const size_t nx = h->nx; + const size_t ny = h->ny; + + size_t i = 0, j = 0; + + int status = find2d (h->nx, h->xrange, h->ny, h->yrange, x, y, &i, &j); + + if (status) + { + return GSL_EDOM; + } + + if (i >= nx) + { + GSL_ERROR ("index lies outside valid range of 0 .. nx - 1", + GSL_ESANITY); + } + + if (j >= ny) + { + GSL_ERROR ("index lies outside valid range of 0 .. ny - 1", + GSL_ESANITY); + } + + h->bin[i * ny + j] += weight; + + return GSL_SUCCESS; +} diff --git a/gsl-2.5/histogram/add2d.lo b/gsl-2.5/histogram/add2d.lo new file mode 100644 index 00000000..7d95e188 --- /dev/null +++ b/gsl-2.5/histogram/add2d.lo @@ -0,0 +1,12 @@ +# add2d.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/add2d.o' + +# Name of the non-PIC object +non_pic_object='add2d.o' + diff --git a/gsl-2.5/histogram/calloc_range.c b/gsl-2.5/histogram/calloc_range.c new file mode 100644 index 00000000..6549b73d --- /dev/null +++ b/gsl-2.5/histogram/calloc_range.c @@ -0,0 +1,107 @@ +/* gsl_histogram_calloc_range.c + * Copyright (C) 2000 Simone Piccardi + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this library; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ +/*************************************************************** + * + * File gsl_histogram_calloc_range.c: + * Routine to create a variable binning histogram providing + * an input range vector. Need GSL library and header. + * Do range check and allocate the histogram data. + * + * Author: S. Piccardi + * Jan. 2000 + * + ***************************************************************/ +#include +#include +#include +#include + +gsl_histogram * +gsl_histogram_calloc_range (size_t n, double *range) +{ + size_t i; + gsl_histogram *h; + + /* check arguments */ + + if (n == 0) + { + GSL_ERROR_VAL ("histogram length n must be positive integer", + GSL_EDOM, 0); + } + + /* check ranges */ + + for (i = 0; i < n; i++) + { + if (range[i] >= range[i + 1]) + { + GSL_ERROR_VAL ("histogram bin extremes must be " + "in increasing order", GSL_EDOM, 0); + } + } + + /* Allocate histogram */ + + h = (gsl_histogram *) malloc (sizeof (gsl_histogram)); + + if (h == 0) + { + GSL_ERROR_VAL ("failed to allocate space for histogram struct", + GSL_ENOMEM, 0); + } + + h->range = (double *) malloc ((n + 1) * sizeof (double)); + + if (h->range == 0) + { + /* exception in constructor, avoid memory leak */ + free (h); + GSL_ERROR_VAL ("failed to allocate space for histogram ranges", + GSL_ENOMEM, 0); + } + + h->bin = (double *) malloc (n * sizeof (double)); + + if (h->bin == 0) + { + /* exception in constructor, avoid memory leak */ + free (h->range); + free (h); + GSL_ERROR_VAL ("failed to allocate space for histogram bins", + GSL_ENOMEM, 0); + } + + /* initialize ranges */ + + for (i = 0; i <= n; i++) + { + h->range[i] = range[i]; + } + + /* clear contents */ + + for (i = 0; i < n; i++) + { + h->bin[i] = 0; + } + + h->n = n; + + return h; +} diff --git a/gsl-2.5/histogram/calloc_range.lo b/gsl-2.5/histogram/calloc_range.lo new file mode 100644 index 00000000..82fa39cf --- /dev/null +++ b/gsl-2.5/histogram/calloc_range.lo @@ -0,0 +1,12 @@ +# calloc_range.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/calloc_range.o' + +# Name of the non-PIC object +non_pic_object='calloc_range.o' + diff --git a/gsl-2.5/histogram/calloc_range2d.c b/gsl-2.5/histogram/calloc_range2d.c new file mode 100644 index 00000000..6f14d878 --- /dev/null +++ b/gsl-2.5/histogram/calloc_range2d.c @@ -0,0 +1,152 @@ +/* gsl_histogram2d_calloc_range.c + * Copyright (C) 2000 Simone Piccardi + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this library; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ +/*************************************************************** + * + * File gsl_histogram2d_calloc_range.c: + * Routine to create a variable binning 2D histogram providing + * the input range vectors. Need GSL library and header. + * Do range check and allocate the histogram data. + * + * Author: S. Piccardi + * Jan. 2000 + * + ***************************************************************/ +#include +#include +#include +#include +/* + * Routine that create a 2D histogram using the given + * values for X and Y ranges + */ +gsl_histogram2d * +gsl_histogram2d_calloc_range (size_t nx, size_t ny, + double *xrange, + double *yrange) +{ + size_t i, j; + gsl_histogram2d *h; + + /* check arguments */ + + if (nx == 0) + { + GSL_ERROR_VAL ("histogram length nx must be positive integer", + GSL_EDOM, 0); + } + + if (ny == 0) + { + GSL_ERROR_VAL ("histogram length ny must be positive integer", + GSL_EDOM, 0); + } + + /* init ranges */ + + for (i = 0; i < nx; i++) + { + if (xrange[i] >= xrange[i + 1]) + { + GSL_ERROR_VAL ("histogram xrange not in increasing order", + GSL_EDOM, 0); + } + } + + for (j = 0; j < ny; j++) + { + if (yrange[j] >= yrange[j + 1]) + { + GSL_ERROR_VAL ("histogram yrange not in increasing order" + ,GSL_EDOM, 0); + } + } + + /* Allocate histogram */ + + h = (gsl_histogram2d *) malloc (sizeof (gsl_histogram2d)); + + if (h == 0) + { + GSL_ERROR_VAL ("failed to allocate space for histogram struct", + GSL_ENOMEM, 0); + } + + h->xrange = (double *) malloc ((nx + 1) * sizeof (double)); + + if (h->xrange == 0) + { + /* exception in constructor, avoid memory leak */ + free (h); + + GSL_ERROR_VAL ("failed to allocate space for histogram xrange", + GSL_ENOMEM, 0); + } + + h->yrange = (double *) malloc ((ny + 1) * sizeof (double)); + + if (h->yrange == 0) + { + /* exception in constructor, avoid memory leak */ + free (h); + + GSL_ERROR_VAL ("failed to allocate space for histogram yrange", + GSL_ENOMEM, 0); + } + + h->bin = (double *) malloc (nx * ny * sizeof (double)); + + if (h->bin == 0) + { + /* exception in constructor, avoid memory leak */ + free (h->xrange); + free (h->yrange); + free (h); + + GSL_ERROR_VAL ("failed to allocate space for histogram bins", + GSL_ENOMEM, 0); + } + + /* init histogram */ + + /* init ranges */ + + for (i = 0; i <= nx; i++) + { + h->xrange[i] = xrange[i]; + } + + for (j = 0; j <= ny; j++) + { + h->yrange[j] = yrange[j]; + } + + /* clear contents */ + + for (i = 0; i < nx; i++) + { + for (j = 0; j < ny; j++) + { + h->bin[i * ny + j] = 0; + } + } + + h->nx = nx; + h->ny = ny; + + return h; +} diff --git a/gsl-2.5/histogram/calloc_range2d.lo b/gsl-2.5/histogram/calloc_range2d.lo new file mode 100644 index 00000000..b0ed30c4 --- /dev/null +++ b/gsl-2.5/histogram/calloc_range2d.lo @@ -0,0 +1,12 @@ +# calloc_range2d.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/calloc_range2d.o' + +# Name of the non-PIC object +non_pic_object='calloc_range2d.o' + diff --git a/gsl-2.5/histogram/copy.c b/gsl-2.5/histogram/copy.c new file mode 100644 index 00000000..83002266 --- /dev/null +++ b/gsl-2.5/histogram/copy.c @@ -0,0 +1,90 @@ +/* gsl_histogram_copy.c + * Copyright (C) 2000 Simone Piccardi + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this library; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ +/*************************************************************** + * + * File gsl_histogram_copy.c: + * Routine to copy an histogram. + * Need GSL library and headers. + * + * Author: S. Piccardi + * Jan. 2000 + * + ***************************************************************/ +#include +#include +#include +#include + +/* + * gsl_histogram_copy: + * copy the contents of an histogram into another + */ + +int +gsl_histogram_memcpy (gsl_histogram * dest, const gsl_histogram * src) +{ + size_t n = src->n; + size_t i; + + if (dest->n != src->n) + { + GSL_ERROR ("histograms have different sizes, cannot copy", + GSL_EINVAL); + } + + for (i = 0; i <= n; i++) + { + dest->range[i] = src->range[i]; + } + + for (i = 0; i < n; i++) + { + dest->bin[i] = src->bin[i]; + } + + return GSL_SUCCESS; +} + +/* + * gsl_histogram_duplicate: + * duplicate an histogram creating + * an identical new one + */ + +gsl_histogram * +gsl_histogram_clone (const gsl_histogram * src) +{ + size_t n = src->n; + size_t i; + gsl_histogram *h; + + h = gsl_histogram_calloc_range (n, src->range); + + if (h == 0) + { + GSL_ERROR_VAL ("failed to allocate space for histogram struct", + GSL_ENOMEM, 0); + } + + for (i = 0; i < n; i++) + { + h->bin[i] = src->bin[i]; + } + + return h; +} diff --git a/gsl-2.5/histogram/copy.lo b/gsl-2.5/histogram/copy.lo new file mode 100644 index 00000000..4853e963 --- /dev/null +++ b/gsl-2.5/histogram/copy.lo @@ -0,0 +1,12 @@ +# copy.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/copy.o' + +# Name of the non-PIC object +non_pic_object='copy.o' + diff --git a/gsl-2.5/histogram/copy2d.c b/gsl-2.5/histogram/copy2d.c new file mode 100644 index 00000000..0bcb8bbe --- /dev/null +++ b/gsl-2.5/histogram/copy2d.c @@ -0,0 +1,95 @@ +/* gsl_histogram2d_copy.c + * Copyright (C) 2000 Simone Piccardi + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this library; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ +/*************************************************************** + * + * File gsl_histogram2d_copy.c: + * Routine to copy a 2D histogram. + * Need GSL library and header. + * + * Author: S. Piccardi + * Jan. 2000 + * + ***************************************************************/ +#include +#include +#include +#include + +/* + * gsl_histogram2d_copy: + * copy the contents of an histogram into another + */ +int +gsl_histogram2d_memcpy (gsl_histogram2d * dest, const gsl_histogram2d * src) +{ + size_t nx = src->nx; + size_t ny = src->ny; + size_t i; + if (dest->nx != src->nx || dest->ny != src->ny) + { + GSL_ERROR ("histograms have different sizes, cannot copy", + GSL_EINVAL); + } + + for (i = 0; i <= nx; i++) + { + dest->xrange[i] = src->xrange[i]; + } + + for (i = 0; i <= ny; i++) + { + dest->yrange[i] = src->yrange[i]; + } + + for (i = 0; i < nx * ny; i++) + { + dest->bin[i] = src->bin[i]; + } + + return GSL_SUCCESS; +} + +/* + * gsl_histogram2d_duplicate: + * duplicate an histogram creating + * an identical new one + */ + +gsl_histogram2d * +gsl_histogram2d_clone (const gsl_histogram2d * src) +{ + size_t nx = src->nx; + size_t ny = src->ny; + size_t i; + gsl_histogram2d *h; + + h = gsl_histogram2d_calloc_range (nx, ny, src->xrange, src->yrange); + + if (h == 0) + { + GSL_ERROR_VAL ("failed to allocate space for histogram struct", + GSL_ENOMEM, 0); + } + + for (i = 0; i < nx * ny; i++) + { + h->bin[i] = src->bin[i]; + } + + return h; +} diff --git a/gsl-2.5/histogram/copy2d.lo b/gsl-2.5/histogram/copy2d.lo new file mode 100644 index 00000000..0d0422a0 --- /dev/null +++ b/gsl-2.5/histogram/copy2d.lo @@ -0,0 +1,12 @@ +# copy2d.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/copy2d.o' + +# Name of the non-PIC object +non_pic_object='copy2d.o' + diff --git a/gsl-2.5/histogram/file.c b/gsl-2.5/histogram/file.c new file mode 100644 index 00000000..7caa2380 --- /dev/null +++ b/gsl-2.5/histogram/file.c @@ -0,0 +1,127 @@ +/* histogram/file.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include + +int +gsl_histogram_fread (FILE * stream, gsl_histogram * h) +{ + int status = gsl_block_raw_fread (stream, h->range, h->n + 1, 1); + + if (status) + return status; + + status = gsl_block_raw_fread (stream, h->bin, h->n, 1); + return status; +} + +int +gsl_histogram_fwrite (FILE * stream, const gsl_histogram * h) +{ + int status = gsl_block_raw_fwrite (stream, h->range, h->n + 1, 1); + + if (status) + return status; + + status = gsl_block_raw_fwrite (stream, h->bin, h->n, 1); + return status; +} + +int +gsl_histogram_fprintf (FILE * stream, const gsl_histogram * h, + const char *range_format, const char *bin_format) +{ + size_t i; + const size_t n = h->n; + + for (i = 0; i < n; i++) + { + int status = fprintf (stream, range_format, h->range[i]); + + if (status < 0) + { + GSL_ERROR ("fprintf failed", GSL_EFAILED); + } + + status = putc (' ', stream); + + if (status == EOF) + { + GSL_ERROR ("putc failed", GSL_EFAILED); + } + + status = fprintf (stream, range_format, h->range[i + 1]); + + if (status < 0) + { + GSL_ERROR ("fprintf failed", GSL_EFAILED); + } + + status = putc (' ', stream); + + if (status == EOF) + { + GSL_ERROR ("putc failed", GSL_EFAILED); + } + + status = fprintf (stream, bin_format, h->bin[i]); + + if (status < 0) + { + GSL_ERROR ("fprintf failed", GSL_EFAILED); + } + + status = putc ('\n', stream); + + if (status == EOF) + { + GSL_ERROR ("putc failed", GSL_EFAILED); + } + } + + return GSL_SUCCESS; +} + +int +gsl_histogram_fscanf (FILE * stream, gsl_histogram * h) +{ + size_t i; + const size_t n = h->n; + double upper; + + for (i = 0; i < n; i++) + { + int status = fscanf (stream, + "%lg %lg %lg", h->range + i, &upper, + h->bin + i); + + if (status != 3) + { + GSL_ERROR ("fscanf failed", GSL_EFAILED); + } + } + + h->range[n] = upper; + + return GSL_SUCCESS; +} diff --git a/gsl-2.5/histogram/file.lo b/gsl-2.5/histogram/file.lo new file mode 100644 index 00000000..1443af7c --- /dev/null +++ b/gsl-2.5/histogram/file.lo @@ -0,0 +1,12 @@ +# file.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/file.o' + +# Name of the non-PIC object +non_pic_object='file.o' + diff --git a/gsl-2.5/histogram/file2d.c b/gsl-2.5/histogram/file2d.c new file mode 100644 index 00000000..26877840 --- /dev/null +++ b/gsl-2.5/histogram/file2d.c @@ -0,0 +1,184 @@ +/* histogram/file2d.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include + +int +gsl_histogram2d_fread (FILE * stream, gsl_histogram2d * h) +{ + int status = gsl_block_raw_fread (stream, h->xrange, h->nx + 1, 1); + + if (status) + return status; + + status = gsl_block_raw_fread (stream, h->yrange, h->ny + 1, 1); + + if (status) + return status; + + status = gsl_block_raw_fread (stream, h->bin, h->nx * h->ny, 1); + + return status; +} + +int +gsl_histogram2d_fwrite (FILE * stream, const gsl_histogram2d * h) +{ + int status = gsl_block_raw_fwrite (stream, h->xrange, h->nx + 1, 1); + + if (status) + return status; + + status = gsl_block_raw_fwrite (stream, h->yrange, h->ny + 1, 1); + + if (status) + return status; + + status = gsl_block_raw_fwrite (stream, h->bin, h->nx * h->ny, 1); + return status; +} + +int +gsl_histogram2d_fprintf (FILE * stream, const gsl_histogram2d * h, + const char *range_format, const char *bin_format) +{ + size_t i, j; + const size_t nx = h->nx; + const size_t ny = h->ny; + int status; + + for (i = 0; i < nx; i++) + { + for (j = 0; j < ny; j++) + { + status = fprintf (stream, range_format, h->xrange[i]); + + if (status < 0) + { + GSL_ERROR ("fprintf failed", GSL_EFAILED); + } + + status = putc (' ', stream); + + if (status == EOF) + { + GSL_ERROR ("putc failed", GSL_EFAILED); + } + + status = fprintf (stream, range_format, h->xrange[i + 1]); + + if (status < 0) + { + GSL_ERROR ("fprintf failed", GSL_EFAILED); + } + + status = putc (' ', stream); + + if (status == EOF) + { + GSL_ERROR ("putc failed", GSL_EFAILED); + } + + status = fprintf (stream, range_format, h->yrange[j]); + + if (status < 0) + { + GSL_ERROR ("fprintf failed", GSL_EFAILED); + } + + status = putc (' ', stream); + + if (status == EOF) + { + GSL_ERROR ("putc failed", GSL_EFAILED); + } + + status = fprintf (stream, range_format, h->yrange[j + 1]); + + if (status < 0) + { + GSL_ERROR ("fprintf failed", GSL_EFAILED); + } + + status = putc (' ', stream); + + if (status == EOF) + { + GSL_ERROR ("putc failed", GSL_EFAILED); + } + + status = fprintf (stream, bin_format, h->bin[i * ny + j]); + + if (status < 0) + { + GSL_ERROR ("fprintf failed", GSL_EFAILED); + } + + status = putc ('\n', stream); + + if (status == EOF) + { + GSL_ERROR ("putc failed", GSL_EFAILED); + } + } + status = putc ('\n', stream); + + if (status == EOF) + { + GSL_ERROR ("putc failed", GSL_EFAILED); + } + } + + return GSL_SUCCESS; +} + +int +gsl_histogram2d_fscanf (FILE * stream, gsl_histogram2d * h) +{ + size_t i, j; + const size_t nx = h->nx; + const size_t ny = h->ny; + double xupper, yupper; + + for (i = 0; i < nx; i++) + { + for (j = 0; j < ny; j++) + { + int status = fscanf (stream, + "%lg %lg %lg %lg %lg", + h->xrange + i, &xupper, + h->yrange + j, &yupper, + h->bin + i * ny + j); + + if (status != 5) + { + GSL_ERROR ("fscanf failed", GSL_EFAILED); + } + } + h->yrange[ny] = yupper; + } + + h->xrange[nx] = xupper; + + return GSL_SUCCESS; +} diff --git a/gsl-2.5/histogram/file2d.lo b/gsl-2.5/histogram/file2d.lo new file mode 100644 index 00000000..7019ed97 --- /dev/null +++ b/gsl-2.5/histogram/file2d.lo @@ -0,0 +1,12 @@ +# file2d.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/file2d.o' + +# Name of the non-PIC object +non_pic_object='file2d.o' + diff --git a/gsl-2.5/histogram/find.c b/gsl-2.5/histogram/find.c new file mode 100644 index 00000000..d2de2e73 --- /dev/null +++ b/gsl-2.5/histogram/find.c @@ -0,0 +1,86 @@ +/* histogram/find.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* determines whether to optimize for linear ranges */ +#define LINEAR_OPT 1 + +static int find (const size_t n, const double range[], + const double x, size_t * i); + +static int +find (const size_t n, const double range[], const double x, size_t * i) +{ + size_t i_linear, lower, upper, mid; + + if (x < range[0]) + { + return -1; + } + + if (x >= range[n]) + { + return +1; + } + + /* optimize for linear case */ + +#ifdef LINEAR_OPT + { + double u = (x - range[0]) / (range[n] - range[0]); + i_linear = (size_t) (u * n); + } + + if (x >= range[i_linear] && x < range[i_linear + 1]) + { + *i = i_linear; + return 0; + } +#endif + + /* perform binary search */ + + upper = n ; + lower = 0 ; + + while (upper - lower > 1) + { + mid = (upper + lower) / 2 ; + + if (x >= range[mid]) + { + lower = mid ; + } + else + { + upper = mid ; + } + } + + *i = lower ; + + /* sanity check the result */ + + if (x < range[lower] || x >= range[lower + 1]) + { + GSL_ERROR ("x not found in range", GSL_ESANITY); + } + + return 0; +} + diff --git a/gsl-2.5/histogram/find2d.c b/gsl-2.5/histogram/find2d.c new file mode 100644 index 00000000..c2455790 --- /dev/null +++ b/gsl-2.5/histogram/find2d.c @@ -0,0 +1,50 @@ +/* histogram/find2d.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include "find.c" + +static int +find2d (const size_t nx, const double xrange[], + const size_t ny, const double yrange[], + const double x, const double y, + size_t * i, size_t * j); + + +static int +find2d (const size_t nx, const double xrange[], + const size_t ny, const double yrange[], + const double x, const double y, + size_t * i, size_t * j) +{ + int status = find (nx, xrange, x, i); + + if (status) + { + return status; + } + + status = find (ny, yrange, y, j); + + if (status) + { + return status; + } + + return 0; +} diff --git a/gsl-2.5/histogram/get.c b/gsl-2.5/histogram/get.c new file mode 100644 index 00000000..d5bdea6a --- /dev/null +++ b/gsl-2.5/histogram/get.c @@ -0,0 +1,69 @@ +/* histogram/get.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include + +#include "find.c" + +double +gsl_histogram_get (const gsl_histogram * h, size_t i) +{ + const size_t n = h->n; + + if (i >= n) + { + GSL_ERROR_VAL ("index lies outside valid range of 0 .. n - 1", + GSL_EDOM, 0); + } + + return h->bin[i]; +} + +int +gsl_histogram_get_range (const gsl_histogram * h, size_t i, + double *lower, double *upper) +{ + const size_t n = h->n; + + if (i >= n) + { + GSL_ERROR ("index lies outside valid range of 0 .. n - 1", GSL_EDOM); + } + + *lower = h->range[i]; + *upper = h->range[i + 1]; + + return GSL_SUCCESS; +} + +int +gsl_histogram_find (const gsl_histogram * h, + const double x, size_t * i) +{ + int status = find (h->n, h->range, x, i); + + if (status) + { + GSL_ERROR ("x not found in range of h", GSL_EDOM); + } + + return GSL_SUCCESS; +} diff --git a/gsl-2.5/histogram/get.lo b/gsl-2.5/histogram/get.lo new file mode 100644 index 00000000..473b7617 --- /dev/null +++ b/gsl-2.5/histogram/get.lo @@ -0,0 +1,12 @@ +# get.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/get.o' + +# Name of the non-PIC object +non_pic_object='get.o' + diff --git a/gsl-2.5/histogram/get2d.c b/gsl-2.5/histogram/get2d.c new file mode 100644 index 00000000..24582464 --- /dev/null +++ b/gsl-2.5/histogram/get2d.c @@ -0,0 +1,101 @@ +/* histogram/get2d.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include + +#include "find.c" + +double +gsl_histogram2d_get (const gsl_histogram2d * h, const size_t i, const size_t j) +{ + const size_t nx = h->nx; + const size_t ny = h->ny; + + if (i >= nx) + { + GSL_ERROR_VAL ("index i lies outside valid range of 0 .. nx - 1", + GSL_EDOM, 0); + } + + if (j >= ny) + { + GSL_ERROR_VAL ("index j lies outside valid range of 0 .. ny - 1", + GSL_EDOM, 0); + } + + return h->bin[i * ny + j]; +} + +int +gsl_histogram2d_get_xrange (const gsl_histogram2d * h, const size_t i, + double *xlower, double *xupper) +{ + const size_t nx = h->nx; + + if (i >= nx) + { + GSL_ERROR ("index i lies outside valid range of 0 .. nx - 1", GSL_EDOM); + } + + *xlower = h->xrange[i]; + *xupper = h->xrange[i + 1]; + + return GSL_SUCCESS; +} + +int +gsl_histogram2d_get_yrange (const gsl_histogram2d * h, const size_t j, + double *ylower, double *yupper) +{ + const size_t ny = h->ny; + + if (j >= ny) + { + GSL_ERROR ("index j lies outside valid range of 0 .. ny - 1", GSL_EDOM); + } + + *ylower = h->yrange[j]; + *yupper = h->yrange[j + 1]; + + return GSL_SUCCESS; +} + +int +gsl_histogram2d_find (const gsl_histogram2d * h, + const double x, const double y, + size_t * i, size_t * j) +{ + int status = find (h->nx, h->xrange, x, i); + + if (status) + { + GSL_ERROR ("x not found in range of h", GSL_EDOM); + } + + status = find (h->ny, h->yrange, y, j); + + if (status) + { + GSL_ERROR ("y not found in range of h", GSL_EDOM); + } + + return GSL_SUCCESS; +} diff --git a/gsl-2.5/histogram/get2d.lo b/gsl-2.5/histogram/get2d.lo new file mode 100644 index 00000000..4efde258 --- /dev/null +++ b/gsl-2.5/histogram/get2d.lo @@ -0,0 +1,12 @@ +# get2d.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/get2d.o' + +# Name of the non-PIC object +non_pic_object='get2d.o' + diff --git a/gsl-2.5/histogram/gsl_histogram.h b/gsl-2.5/histogram/gsl_histogram.h new file mode 100644 index 00000000..e8375c64 --- /dev/null +++ b/gsl-2.5/histogram/gsl_histogram.h @@ -0,0 +1,134 @@ +/* histogram/gsl_histogram.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_HISTOGRAM_H__ +#define __GSL_HISTOGRAM_H__ + +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +typedef struct { + size_t n ; + double * range ; + double * bin ; +} gsl_histogram ; + +typedef struct { + size_t n ; + double * range ; + double * sum ; +} gsl_histogram_pdf ; + +gsl_histogram * gsl_histogram_alloc (size_t n); + +gsl_histogram * gsl_histogram_calloc (size_t n); +gsl_histogram * gsl_histogram_calloc_uniform (const size_t n, const double xmin, const double xmax); +void gsl_histogram_free (gsl_histogram * h); +int gsl_histogram_increment (gsl_histogram * h, double x); +int gsl_histogram_accumulate (gsl_histogram * h, double x, double weight); +int gsl_histogram_find (const gsl_histogram * h, + const double x, size_t * i); + +double gsl_histogram_get (const gsl_histogram * h, size_t i); +int gsl_histogram_get_range (const gsl_histogram * h, size_t i, + double * lower, double * upper); + +double gsl_histogram_max (const gsl_histogram * h); +double gsl_histogram_min (const gsl_histogram * h); +size_t gsl_histogram_bins (const gsl_histogram * h); + +void gsl_histogram_reset (gsl_histogram * h); + +gsl_histogram * gsl_histogram_calloc_range(size_t n, double * range); + +int +gsl_histogram_set_ranges (gsl_histogram * h, const double range[], size_t size); +int +gsl_histogram_set_ranges_uniform (gsl_histogram * h, double xmin, double xmax); + + + +int +gsl_histogram_memcpy(gsl_histogram * dest, const gsl_histogram * source); + +gsl_histogram * +gsl_histogram_clone(const gsl_histogram * source); + +double gsl_histogram_max_val (const gsl_histogram * h); + +size_t gsl_histogram_max_bin (const gsl_histogram * h); + +double gsl_histogram_min_val (const gsl_histogram * h); + +size_t gsl_histogram_min_bin (const gsl_histogram * h); + +int +gsl_histogram_equal_bins_p(const gsl_histogram *h1, const gsl_histogram *h2); + +int +gsl_histogram_add(gsl_histogram *h1, const gsl_histogram *h2); + +int +gsl_histogram_sub(gsl_histogram *h1, const gsl_histogram *h2); + +int +gsl_histogram_mul(gsl_histogram *h1, const gsl_histogram *h2); + +int +gsl_histogram_div(gsl_histogram *h1, const gsl_histogram *h2); + +int +gsl_histogram_scale(gsl_histogram *h, double scale); + +int +gsl_histogram_shift (gsl_histogram * h, double shift); + + +double gsl_histogram_sigma (const gsl_histogram * h); + +double gsl_histogram_mean (const gsl_histogram * h); + +double gsl_histogram_sum (const gsl_histogram * h); + +int gsl_histogram_fwrite (FILE * stream, const gsl_histogram * h) ; +int gsl_histogram_fread (FILE * stream, gsl_histogram * h); +int gsl_histogram_fprintf (FILE * stream, const gsl_histogram * h, + const char * range_format, const char * bin_format); +int gsl_histogram_fscanf (FILE * stream, gsl_histogram * h); + +gsl_histogram_pdf * gsl_histogram_pdf_alloc (const size_t n); +int gsl_histogram_pdf_init (gsl_histogram_pdf * p, const gsl_histogram * h); +void gsl_histogram_pdf_free (gsl_histogram_pdf * p); +double gsl_histogram_pdf_sample (const gsl_histogram_pdf * p, double r); + +__END_DECLS + +#endif /* __GSL_HISTOGRAM_H__ */ diff --git a/gsl-2.5/histogram/gsl_histogram2d.h b/gsl-2.5/histogram/gsl_histogram2d.h new file mode 100644 index 00000000..90065ac0 --- /dev/null +++ b/gsl-2.5/histogram/gsl_histogram2d.h @@ -0,0 +1,172 @@ +/* histogram/gsl_histogram2d.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_HISTOGRAM2D_H__ +#define __GSL_HISTOGRAM2D_H__ + +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +typedef struct { + size_t nx, ny ; + double * xrange ; + double * yrange ; + double * bin ; +} gsl_histogram2d ; + +typedef struct { + size_t nx, ny ; + double * xrange ; + double * yrange ; + double * sum ; +} gsl_histogram2d_pdf ; + +gsl_histogram2d * gsl_histogram2d_alloc (const size_t nx, const size_t ny); +gsl_histogram2d * gsl_histogram2d_calloc (const size_t nx, const size_t ny); +gsl_histogram2d * gsl_histogram2d_calloc_uniform (const size_t nx, const size_t ny, + const double xmin, const double xmax, + const double ymin, const double ymax); + +void gsl_histogram2d_free (gsl_histogram2d * h); + +int gsl_histogram2d_increment (gsl_histogram2d * h, double x, double y); +int gsl_histogram2d_accumulate (gsl_histogram2d * h, + double x, double y, double weight); +int gsl_histogram2d_find (const gsl_histogram2d * h, + const double x, const double y, size_t * i, size_t * j); + +double gsl_histogram2d_get (const gsl_histogram2d * h, const size_t i, const size_t j); +int gsl_histogram2d_get_xrange (const gsl_histogram2d * h, const size_t i, + double * xlower, double * xupper); +int gsl_histogram2d_get_yrange (const gsl_histogram2d * h, const size_t j, + double * ylower, double * yupper); + + +double gsl_histogram2d_xmax (const gsl_histogram2d * h); +double gsl_histogram2d_xmin (const gsl_histogram2d * h); +size_t gsl_histogram2d_nx (const gsl_histogram2d * h); + +double gsl_histogram2d_ymax (const gsl_histogram2d * h); +double gsl_histogram2d_ymin (const gsl_histogram2d * h); +size_t gsl_histogram2d_ny (const gsl_histogram2d * h); + +void gsl_histogram2d_reset (gsl_histogram2d * h); + +gsl_histogram2d * +gsl_histogram2d_calloc_range(size_t nx, size_t ny, + double *xrange, double *yrange); + +int +gsl_histogram2d_set_ranges_uniform (gsl_histogram2d * h, + double xmin, double xmax, + double ymin, double ymax); + +int +gsl_histogram2d_set_ranges (gsl_histogram2d * h, + const double xrange[], size_t xsize, + const double yrange[], size_t ysize); + +int +gsl_histogram2d_memcpy(gsl_histogram2d *dest, const gsl_histogram2d *source); + +gsl_histogram2d * +gsl_histogram2d_clone(const gsl_histogram2d * source); + +double +gsl_histogram2d_max_val(const gsl_histogram2d *h); + +void +gsl_histogram2d_max_bin (const gsl_histogram2d *h, size_t *i, size_t *j); + +double +gsl_histogram2d_min_val(const gsl_histogram2d *h); + +void +gsl_histogram2d_min_bin (const gsl_histogram2d *h, size_t *i, size_t *j); + +double +gsl_histogram2d_xmean (const gsl_histogram2d * h); + +double +gsl_histogram2d_ymean (const gsl_histogram2d * h); + +double +gsl_histogram2d_xsigma (const gsl_histogram2d * h); + +double +gsl_histogram2d_ysigma (const gsl_histogram2d * h); + +double +gsl_histogram2d_cov (const gsl_histogram2d * h); + +double +gsl_histogram2d_sum (const gsl_histogram2d *h); + +int +gsl_histogram2d_equal_bins_p(const gsl_histogram2d *h1, + const gsl_histogram2d *h2) ; + +int +gsl_histogram2d_add(gsl_histogram2d *h1, const gsl_histogram2d *h2); + +int +gsl_histogram2d_sub(gsl_histogram2d *h1, const gsl_histogram2d *h2); + +int +gsl_histogram2d_mul(gsl_histogram2d *h1, const gsl_histogram2d *h2); + +int +gsl_histogram2d_div(gsl_histogram2d *h1, const gsl_histogram2d *h2); + +int +gsl_histogram2d_scale(gsl_histogram2d *h, double scale); + +int +gsl_histogram2d_shift(gsl_histogram2d *h, double shift); + +int gsl_histogram2d_fwrite (FILE * stream, const gsl_histogram2d * h) ; +int gsl_histogram2d_fread (FILE * stream, gsl_histogram2d * h); +int gsl_histogram2d_fprintf (FILE * stream, const gsl_histogram2d * h, + const char * range_format, + const char * bin_format); +int gsl_histogram2d_fscanf (FILE * stream, gsl_histogram2d * h); + +gsl_histogram2d_pdf * gsl_histogram2d_pdf_alloc (const size_t nx, const size_t ny); +int gsl_histogram2d_pdf_init (gsl_histogram2d_pdf * p, const gsl_histogram2d * h); +void gsl_histogram2d_pdf_free (gsl_histogram2d_pdf * p); +int gsl_histogram2d_pdf_sample (const gsl_histogram2d_pdf * p, + double r1, double r2, + double * x, double * y); + +__END_DECLS + +#endif /* __GSL_HISTOGRAM2D_H__ */ + diff --git a/gsl-2.5/histogram/init.c b/gsl-2.5/histogram/init.c new file mode 100644 index 00000000..6c2fdf74 --- /dev/null +++ b/gsl-2.5/histogram/init.c @@ -0,0 +1,199 @@ +/* histogram/init.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007, 2009 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include + +gsl_histogram * +gsl_histogram_alloc (size_t n) +{ + gsl_histogram *h; + + if (n == 0) + { + GSL_ERROR_VAL ("histogram length n must be positive integer", + GSL_EDOM, 0); + } + + h = (gsl_histogram *) malloc (sizeof (gsl_histogram)); + + if (h == 0) + { + GSL_ERROR_VAL ("failed to allocate space for histogram struct", + GSL_ENOMEM, 0); + } + + h->range = (double *) malloc ((n + 1) * sizeof (double)); + + if (h->range == 0) + { + free (h); /* exception in constructor, avoid memory leak */ + + GSL_ERROR_VAL ("failed to allocate space for histogram ranges", + GSL_ENOMEM, 0); + } + + h->bin = (double *) malloc (n * sizeof (double)); + + if (h->bin == 0) + { + free (h->range); + free (h); /* exception in constructor, avoid memory leak */ + + GSL_ERROR_VAL ("failed to allocate space for histogram bins", + GSL_ENOMEM, 0); + } + + h->n = n; + + return h; +} + +static void +make_uniform (double range[], size_t n, double xmin, double xmax) +{ + size_t i; + + for (i = 0; i <= n; i++) + { + double f1 = ((double) (n-i) / (double) n); + double f2 = ((double) i / (double) n); + range[i] = f1 * xmin + f2 * xmax; + } +} + +gsl_histogram * +gsl_histogram_calloc_uniform (const size_t n, const double xmin, + const double xmax) +{ + gsl_histogram *h; + + if (xmin >= xmax) + { + GSL_ERROR_VAL ("xmin must be less than xmax", GSL_EINVAL, 0); + } + + h = gsl_histogram_calloc (n); + + if (h == 0) + { + return h; + } + + make_uniform (h->range, n, xmin, xmax); + + return h; +} + +gsl_histogram * +gsl_histogram_calloc (size_t n) +{ + gsl_histogram * h = gsl_histogram_alloc (n); + + if (h == 0) + { + return h; + } + + { + size_t i; + + for (i = 0; i < n + 1; i++) + { + h->range[i] = i; + } + + for (i = 0; i < n; i++) + { + h->bin[i] = 0; + } + } + + h->n = n; + + return h; +} + + +void +gsl_histogram_free (gsl_histogram * h) +{ + RETURN_IF_NULL (h); + free (h->range); + free (h->bin); + free (h); +} + +/* These initialization functions suggested by Achim Gaedke */ + +int +gsl_histogram_set_ranges_uniform (gsl_histogram * h, double xmin, double xmax) +{ + size_t i; + const size_t n = h->n; + + if (xmin >= xmax) + { + GSL_ERROR ("xmin must be less than xmax", GSL_EINVAL); + } + + /* initialize ranges */ + + make_uniform (h->range, n, xmin, xmax); + + /* clear contents */ + + for (i = 0; i < n; i++) + { + h->bin[i] = 0; + } + + return GSL_SUCCESS; +} + +int +gsl_histogram_set_ranges (gsl_histogram * h, const double range[], size_t size) +{ + size_t i; + const size_t n = h->n; + + if (size != (n+1)) + { + GSL_ERROR ("size of range must match size of histogram", GSL_EINVAL); + } + + /* initialize ranges */ + + for (i = 0; i <= n; i++) + { + h->range[i] = range[i]; + } + + /* clear contents */ + + for (i = 0; i < n; i++) + { + h->bin[i] = 0; + } + + return GSL_SUCCESS; +} + diff --git a/gsl-2.5/histogram/init.lo b/gsl-2.5/histogram/init.lo new file mode 100644 index 00000000..c1ea778f --- /dev/null +++ b/gsl-2.5/histogram/init.lo @@ -0,0 +1,12 @@ +# init.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/init.o' + +# Name of the non-PIC object +non_pic_object='init.o' + diff --git a/gsl-2.5/histogram/init2d.c b/gsl-2.5/histogram/init2d.c new file mode 100644 index 00000000..a394c907 --- /dev/null +++ b/gsl-2.5/histogram/init2d.c @@ -0,0 +1,301 @@ +/* histogram/init2d.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include + +gsl_histogram2d * +gsl_histogram2d_alloc (const size_t nx, const size_t ny) +{ + gsl_histogram2d *h; + + if (nx == 0) + { + GSL_ERROR_VAL ("histogram2d length nx must be positive integer", + GSL_EDOM, 0); + } + + if (ny == 0) + { + GSL_ERROR_VAL ("histogram2d length ny must be positive integer", + GSL_EDOM, 0); + } + + h = (gsl_histogram2d *) malloc (sizeof (gsl_histogram2d)); + + if (h == 0) + { + GSL_ERROR_VAL ("failed to allocate space for histogram2d struct", + GSL_ENOMEM, 0); + } + + h->xrange = (double *) malloc ((nx + 1) * sizeof (double)); + + if (h->xrange == 0) + { + free (h); /* exception in constructor, avoid memory leak */ + + GSL_ERROR_VAL ("failed to allocate space for histogram2d x ranges", + GSL_ENOMEM, 0); + } + + h->yrange = (double *) malloc ((ny + 1) * sizeof (double)); + + if (h->yrange == 0) + { + free (h->xrange); + free (h); /* exception in constructor, avoid memory leak */ + + GSL_ERROR_VAL ("failed to allocate space for histogram2d y ranges", + GSL_ENOMEM, 0); + } + + h->bin = (double *) malloc (nx * ny * sizeof (double)); + + if (h->bin == 0) + { + free (h->xrange); + free (h->yrange); + free (h); /* exception in constructor, avoid memory leak */ + + GSL_ERROR_VAL ("failed to allocate space for histogram bins", + GSL_ENOMEM, 0); + } + + h->nx = nx; + h->ny = ny; + + return h; +} + +static void +make_uniform (double range[], size_t n, double xmin, double xmax) +{ + size_t i; + + for (i = 0; i <= n; i++) + { + double f1 = ((double) (n-i) / (double) n); + double f2 = ((double) i / (double) n); + range[i] = f1 * xmin + f2 * xmax; + } +} + +gsl_histogram2d * +gsl_histogram2d_calloc_uniform (const size_t nx, const size_t ny, + const double xmin, const double xmax, + const double ymin, const double ymax) +{ + gsl_histogram2d *h; + + if (xmin >= xmax) + { + GSL_ERROR_VAL ("xmin must be less than xmax", GSL_EINVAL, 0); + } + + if (ymin >= ymax) + { + GSL_ERROR_VAL ("ymin must be less than ymax", GSL_EINVAL, 0); + } + + h = gsl_histogram2d_calloc (nx, ny); + + if (h == 0) + { + return h; + } + + make_uniform (h->xrange, nx, xmin, xmax); + make_uniform (h->yrange, ny, ymin, ymax); + + return h; +} + +gsl_histogram2d * +gsl_histogram2d_calloc (const size_t nx, const size_t ny) +{ + gsl_histogram2d *h; + + if (nx == 0) + { + GSL_ERROR_VAL ("histogram2d length nx must be positive integer", + GSL_EDOM, 0); + } + + if (ny == 0) + { + GSL_ERROR_VAL ("histogram2d length ny must be positive integer", + GSL_EDOM, 0); + } + + h = (gsl_histogram2d *) malloc (sizeof (gsl_histogram2d)); + + if (h == 0) + { + GSL_ERROR_VAL ("failed to allocate space for histogram2d struct", + GSL_ENOMEM, 0); + } + + h->xrange = (double *) malloc ((nx + 1) * sizeof (double)); + + if (h->xrange == 0) + { + free (h); /* exception in constructor, avoid memory leak */ + + GSL_ERROR_VAL ("failed to allocate space for histogram2d x ranges", + GSL_ENOMEM, 0); + } + + h->yrange = (double *) malloc ((ny + 1) * sizeof (double)); + + if (h->yrange == 0) + { + free (h->xrange); + free (h); /* exception in constructor, avoid memory leak */ + + GSL_ERROR_VAL ("failed to allocate space for histogram2d y ranges", + GSL_ENOMEM, 0); + } + + h->bin = (double *) malloc (nx * ny * sizeof (double)); + + if (h->bin == 0) + { + free (h->xrange); + free (h->yrange); + free (h); /* exception in constructor, avoid memory leak */ + + GSL_ERROR_VAL ("failed to allocate space for histogram bins", + GSL_ENOMEM, 0); + } + + { + size_t i; + + for (i = 0; i < nx + 1; i++) + { + h->xrange[i] = i; + } + + for (i = 0; i < ny + 1; i++) + { + h->yrange[i] = i; + } + + for (i = 0; i < nx * ny; i++) + { + h->bin[i] = 0; + } + } + + h->nx = nx; + h->ny = ny; + + return h; +} + + +void +gsl_histogram2d_free (gsl_histogram2d * h) +{ + RETURN_IF_NULL (h); + free (h->xrange); + free (h->yrange); + free (h->bin); + free (h); +} + + +int +gsl_histogram2d_set_ranges_uniform (gsl_histogram2d * h, + double xmin, double xmax, + double ymin, double ymax) +{ + size_t i; + const size_t nx = h->nx, ny = h->ny; + + if (xmin >= xmax) + { + GSL_ERROR_VAL ("xmin must be less than xmax", GSL_EINVAL, 0); + } + + if (ymin >= ymax) + { + GSL_ERROR_VAL ("ymin must be less than ymax", GSL_EINVAL, 0); + } + + /* initialize ranges */ + + make_uniform (h->xrange, nx, xmin, xmax); + make_uniform (h->yrange, ny, ymin, ymax); + + /* clear contents */ + + for (i = 0; i < nx * ny; i++) + { + h->bin[i] = 0; + } + + return GSL_SUCCESS; +} + +int +gsl_histogram2d_set_ranges (gsl_histogram2d * h, + const double xrange[], size_t xsize, + const double yrange[], size_t ysize) +{ + size_t i; + const size_t nx = h->nx, ny = h->ny; + + if (xsize != (nx + 1)) + { + GSL_ERROR_VAL ("size of xrange must match size of histogram", + GSL_EINVAL, 0); + } + + if (ysize != (ny + 1)) + { + GSL_ERROR_VAL ("size of yrange must match size of histogram", + GSL_EINVAL, 0); + } + + /* initialize ranges */ + + for (i = 0; i <= nx; i++) + { + h->xrange[i] = xrange[i]; + } + + for (i = 0; i <= ny; i++) + { + h->yrange[i] = yrange[i]; + } + + /* clear contents */ + + for (i = 0; i < nx * ny; i++) + { + h->bin[i] = 0; + } + + return GSL_SUCCESS; +} diff --git a/gsl-2.5/histogram/init2d.lo b/gsl-2.5/histogram/init2d.lo new file mode 100644 index 00000000..6d1a57d6 --- /dev/null +++ b/gsl-2.5/histogram/init2d.lo @@ -0,0 +1,12 @@ +# init2d.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/init2d.o' + +# Name of the non-PIC object +non_pic_object='init2d.o' + diff --git a/gsl-2.5/histogram/libgslhistogram.la b/gsl-2.5/histogram/libgslhistogram.la new file mode 100644 index 00000000..8f62cd79 --- /dev/null +++ b/gsl-2.5/histogram/libgslhistogram.la @@ -0,0 +1,41 @@ +# libgslhistogram.la - a libtool library file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='' + +# Names of this library. +library_names='' + +# The name of the static archive. +old_library='libgslhistogram.a' + +# Linker flags that can not go in dependency_libs. +inherited_linker_flags='' + +# Libraries that this one depends upon. +dependency_libs=' -lm' + +# Names of additional weak libraries provided by this library +weak_library_names='' + +# Version information for libgslhistogram. +current= +age= +revision= + +# Is this an already installed library? +installed=no + +# Should we warn about portability when linking against -modules? +shouldnotlink=no + +# Files to dlopen/dlpreopen +dlopen='' +dlpreopen='' + +# Directory that this library needs to be installed in: +libdir='' diff --git a/gsl-2.5/histogram/maxval.c b/gsl-2.5/histogram/maxval.c new file mode 100644 index 00000000..a914c1ce --- /dev/null +++ b/gsl-2.5/histogram/maxval.c @@ -0,0 +1,100 @@ +/* gsl_histogram_maxval.c + * Copyright (C) 2000 Simone Piccardi + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this library; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ +/*************************************************************** + * + * File gsl_histogram_maxval.c: + * Routine to find maximum and minumum content of a hisogram. + * Need GSL library and header. + * Contains the routines: + * gsl_histogram_max_val find max content values + * gsl_histogram_min_val find min content values + * gsl_histogram_bin_max find coordinates of max contents bin + * gsl_histogram_bin_min find coordinates of min contents bin + * + * Author: S. Piccardi + * Jan. 2000 + * + ***************************************************************/ +#include +#include +#include + +double +gsl_histogram_max_val (const gsl_histogram * h) +{ + const size_t n = h->n; + size_t i; + double max = h->bin[0]; + for (i = 0; i < n; i++) + { + if (h->bin[i] > max) + { + max = h->bin[i]; + } + } + return max; +} + +size_t +gsl_histogram_max_bin (const gsl_histogram * h) +{ + size_t i; + size_t imax = 0; + double max = h->bin[0]; + for (i = 0; i < h->n; i++) + { + if (h->bin[i] > max) + { + max = h->bin[i]; + imax = i; + } + } + return imax; +} + +double +gsl_histogram_min_val (const gsl_histogram * h) +{ + size_t i; + double min = h->bin[0]; + for (i = 0; i < h->n; i++) + { + if (h->bin[i] < min) + { + min = h->bin[i]; + } + } + return min; +} + +size_t +gsl_histogram_min_bin (const gsl_histogram * h) +{ + size_t i; + size_t imin = 0; + double min = h->bin[0]; + for (i = 0; i < h->n; i++) + { + if (h->bin[i] < min) + { + min = h->bin[i]; + imin = i; + } + } + return imin; +} diff --git a/gsl-2.5/histogram/maxval.lo b/gsl-2.5/histogram/maxval.lo new file mode 100644 index 00000000..a680f2f9 --- /dev/null +++ b/gsl-2.5/histogram/maxval.lo @@ -0,0 +1,12 @@ +# maxval.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/maxval.o' + +# Name of the non-PIC object +non_pic_object='maxval.o' + diff --git a/gsl-2.5/histogram/maxval2d.c b/gsl-2.5/histogram/maxval2d.c new file mode 100644 index 00000000..27fc2a8b --- /dev/null +++ b/gsl-2.5/histogram/maxval2d.c @@ -0,0 +1,139 @@ +/* gsl_histogram2d_maxval.c + * Copyright (C) 2000 Simone Piccardi + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this library; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ +/*************************************************************** + * + * File gsl_histogram2d_maxval.c: + * Routine to find maximum and minumum content of a 2D hisogram. + * Need GSL library and header. + * Contains the routines: + * gsl_histogram2d_max_val find max content values + * gsl_histogram2d_min_val find min content values + * gsl_histogram2d_bin_max find coordinates of max contents bin + * gsl_histogram2d_bin_min find coordinates of min contents bin + * + * Author: S. Piccardi + * Jan. 2000 + * + ***************************************************************/ +#include +#include +#include +/* + * Return the maximum contents value of a 2D histogram + */ +double +gsl_histogram2d_max_val (const gsl_histogram2d * h) +{ + const size_t nx = h->nx; + const size_t ny = h->ny; + size_t i; + double max = h->bin[0 * ny + 0]; + + for (i = 0; i < nx * ny; i++) + { + if (h->bin[i] > max) + { + max = h->bin[i]; + } + } + return max; +} + +/* + * Find the bin index for maximum value of a 2D histogram + */ + +void +gsl_histogram2d_max_bin (const gsl_histogram2d * h, size_t * imax_out, size_t * jmax_out) +{ + const size_t nx = h->nx; + const size_t ny = h->ny; + size_t imax = 0, jmax = 0, i, j; + double max = h->bin[0 * ny + 0]; + + for (i = 0; i < nx; i++) + { + for (j = 0; j < ny; j++) + { + double x = h->bin[i * ny + j]; + + if (x > max) + { + max = x; + imax = i; + jmax = j; + } + } + } + + *imax_out = imax; + *jmax_out = jmax; +} + +/* + * Return the minimum contents value of a 2D histogram + */ + +double +gsl_histogram2d_min_val (const gsl_histogram2d * h) +{ + const size_t nx = h->nx; + const size_t ny = h->ny; + size_t i; + double min = h->bin[0 * ny + 0]; + + for (i = 0; i < nx * ny; i++) + { + if (h->bin[i] < min) + { + min = h->bin[i]; + } + } + + return min; +} +/* + * Find the bin index for minimum value of a 2D histogram + */ +void +gsl_histogram2d_min_bin (const gsl_histogram2d * h, size_t * imin_out, size_t * jmin_out) +{ + const size_t nx = h->nx; + const size_t ny = h->ny; + size_t imin = 0, jmin = 0, i, j; + double min = h->bin[0 * ny + 0]; + + for (i = 0; i < nx; i++) + { + for (j = 0; j < ny; j++) + { + double x = h->bin[i * ny + j]; + + if (x < min) + { + min = x; + imin = i; + jmin = j; + } + } + } + + *imin_out = imin; + *jmin_out = jmin; +} + diff --git a/gsl-2.5/histogram/maxval2d.lo b/gsl-2.5/histogram/maxval2d.lo new file mode 100644 index 00000000..f945ad3c --- /dev/null +++ b/gsl-2.5/histogram/maxval2d.lo @@ -0,0 +1,12 @@ +# maxval2d.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/maxval2d.o' + +# Name of the non-PIC object +non_pic_object='maxval2d.o' + diff --git a/gsl-2.5/histogram/oper.c b/gsl-2.5/histogram/oper.c new file mode 100644 index 00000000..e3080430 --- /dev/null +++ b/gsl-2.5/histogram/oper.c @@ -0,0 +1,194 @@ +/* gsl_histogram_oper.c + * Copyright (C) 2000 Simone Piccardi + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this library; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ +/*************************************************************** + * + * File gsl_histogram_oper.c: + * Routine to make operation on histograms. + * Need GSL library and header. + * Contains the routines: + * gsl_histogram_same_binning check if two histograms have the same binning + * gsl_histogram_add add two histograms + * gsl_histogram_sub subctract two histograms + * gsl_histogram_mult multiply two histograms + * gsl_histogram_div divide two histograms + * gsl_histogram_scale scale histogram contents + * + * Author: S. Piccardi + * Jan. 2000 + * + ***************************************************************/ +#include +#include +#include +#include + +/* + * gsl_histogram_same_binning: + * control if two histograms have the + * same binning + */ + +int +gsl_histogram_equal_bins_p (const gsl_histogram * h1, const gsl_histogram * h2) +{ + if (h1->n != h2->n) + { + return 0; + } + + { + size_t i; + /* init ranges */ + + for (i = 0; i <= h1->n; i++) + { + if (h1->range[i] != h2->range[i]) + { + return 0; + } + } + } + + return 1; +} + +/* + * gsl_histogram_add: + * add two histograms + */ +int +gsl_histogram_add (gsl_histogram * h1, const gsl_histogram * h2) +{ + size_t i; + + if (!gsl_histogram_equal_bins_p (h1, h2)) + { + GSL_ERROR ("histograms have different binning", GSL_EINVAL); + } + + for (i = 0; i < h1->n; i++) + { + h1->bin[i] += h2->bin[i]; + } + + return GSL_SUCCESS; +} + +/* + * gsl_histogram_sub: + * subtract two histograms + */ + +int +gsl_histogram_sub (gsl_histogram * h1, const gsl_histogram * h2) +{ + size_t i; + + if (!gsl_histogram_equal_bins_p (h1, h2)) + { + GSL_ERROR ("histograms have different binning", GSL_EINVAL); + } + + for (i = 0; i < h1->n; i++) + { + h1->bin[i] -= h2->bin[i]; + } + + return GSL_SUCCESS; + +} + +/* + * gsl_histogram_mult: + * multiply two histograms + */ + +int +gsl_histogram_mul (gsl_histogram * h1, const gsl_histogram * h2) +{ + size_t i; + + if (!gsl_histogram_equal_bins_p (h1, h2)) + { + GSL_ERROR ("histograms have different binning", GSL_EINVAL); + } + + for (i = 0; i < h1->n; i++) + { + h1->bin[i] *= h2->bin[i]; + } + + return GSL_SUCCESS; +} +/* + * gsl_histogram_div: + * divide two histograms + */ +int +gsl_histogram_div (gsl_histogram * h1, const gsl_histogram * h2) +{ + size_t i; + + if (!gsl_histogram_equal_bins_p (h1, h2)) + { + GSL_ERROR ("histograms have different binning", GSL_EINVAL); + } + + for (i = 0; i < h1->n; i++) + { + h1->bin[i] /= h2->bin[i]; + } + + return GSL_SUCCESS; +} + +/* + * gsl_histogram_scale: + * scale a histogram by a numeric factor + */ + +int +gsl_histogram_scale (gsl_histogram * h, double scale) +{ + size_t i; + + for (i = 0; i < h->n; i++) + { + h->bin[i] *= scale; + } + + return GSL_SUCCESS; +} + +/* + * gsl_histogram_shift: + * shift a histogram by a numeric offset + */ + +int +gsl_histogram_shift (gsl_histogram * h, double shift) +{ + size_t i; + + for (i = 0; i < h->n; i++) + { + h->bin[i] += shift; + } + + return GSL_SUCCESS; +} diff --git a/gsl-2.5/histogram/oper.lo b/gsl-2.5/histogram/oper.lo new file mode 100644 index 00000000..0bc91450 --- /dev/null +++ b/gsl-2.5/histogram/oper.lo @@ -0,0 +1,12 @@ +# oper.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/oper.o' + +# Name of the non-PIC object +non_pic_object='oper.o' + diff --git a/gsl-2.5/histogram/oper2d.c b/gsl-2.5/histogram/oper2d.c new file mode 100644 index 00000000..147e6601 --- /dev/null +++ b/gsl-2.5/histogram/oper2d.c @@ -0,0 +1,202 @@ +/* gsl_histogram2d_oper.c + * Copyright (C) 2000 Simone Piccardi + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this library; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ +/*************************************************************** + * + * File gsl_histogram2d_oper.c: + * Routine to make operation on 2D histograms. + * Need GSL library and header. + * Contains the routines: + * gsl_histogram2d_same_binning check if two histograms have the same binning + * gsl_histogram2d_add add two histogram + * gsl_histogram2d_sub subctract two histogram + * gsl_histogram2d_mult multiply two histogram + * gsl_histogram2d_div divide two histogram + * gsl_histogram2d_scale scale histogram contents + * + * Author: S. Piccardi + * Jan. 2000 + * + ***************************************************************/ +#include +#include +#include +#include + +/* + * gsl_histogram2d_same_binning: + * control if two histogram have the + * same binning + */ +int +gsl_histogram2d_equal_bins_p (const gsl_histogram2d * h1, + const gsl_histogram2d * h2) +{ + + if ((h1->nx != h2->nx) || (h1->ny != h2->ny)) + { + return 0; + } + { + size_t i; + /* init ranges */ + for (i = 0; i <= (h1->nx); i++) + { + if (h1->xrange[i] != h2->xrange[i]) + { + return 0; + } + } + for (i = 0; i <= (h1->ny); i++) + { + if (h1->yrange[i] != h2->yrange[i]) + { + return 0; + } + } + } + return 1; +} + +/* + * gsl_histogram2d_add: + * add two histogram + */ + +int +gsl_histogram2d_add (gsl_histogram2d * h1, const gsl_histogram2d * h2) +{ + size_t i; + + if (!gsl_histogram2d_equal_bins_p (h1, h2)) + { + GSL_ERROR ("histograms have different binning", GSL_EINVAL); + } + + for (i = 0; i < (h1->nx) * (h1->ny); i++) + { + h1->bin[i] += h2->bin[i]; + } + + return GSL_SUCCESS; +} + +/* + * gsl_histogram2d_sub: + * subtract two histogram + */ + +int +gsl_histogram2d_sub (gsl_histogram2d * h1, const gsl_histogram2d * h2) +{ + size_t i; + + if (!gsl_histogram2d_equal_bins_p (h1, h2)) + { + GSL_ERROR ("histograms have different binning", GSL_EINVAL); + } + + for (i = 0; i < (h1->nx) * (h1->ny); i++) + { + h1->bin[i] -= h2->bin[i]; + } + + return GSL_SUCCESS; +} + +/* + * gsl_histogram2d_mult: + * multiply two histogram + */ + +int +gsl_histogram2d_mul (gsl_histogram2d * h1, const gsl_histogram2d * h2) +{ + size_t i; + + if (!gsl_histogram2d_equal_bins_p (h1, h2)) + { + GSL_ERROR ("histograms have different binning", GSL_EINVAL); + } + + for (i = 0; i < (h1->nx) * (h1->ny); i++) + { + h1->bin[i] *= h2->bin[i]; + } + + return GSL_SUCCESS; +} + +/* + * gsl_histogram2d_div: + * divide two histogram + */ + +int +gsl_histogram2d_div (gsl_histogram2d * h1, const gsl_histogram2d * h2) +{ + size_t i; + + if (!gsl_histogram2d_equal_bins_p (h1, h2)) + { + GSL_ERROR ("histograms have different binning", GSL_EINVAL); + } + + for (i = 0; i < (h1->nx) * (h1->ny); i++) + { + h1->bin[i] /= h2->bin[i]; + } + + return GSL_SUCCESS; +} + +/* + * gsl_histogram2d_scale: + * scale a histogram by a numeric factor + */ + +int +gsl_histogram2d_scale (gsl_histogram2d * h, double scale) +{ + size_t i; + + for (i = 0; i < (h->nx) * (h->ny); i++) + { + h->bin[i] *= scale; + } + + return GSL_SUCCESS; +} + +/* + * gsl_histogram2d_shift: + * shift a histogram by a numeric offset + */ + +int +gsl_histogram2d_shift (gsl_histogram2d * h, double shift) +{ + size_t i; + + for (i = 0; i < (h->nx) * (h->ny); i++) + { + h->bin[i] += shift; + } + + return GSL_SUCCESS; +} + diff --git a/gsl-2.5/histogram/oper2d.lo b/gsl-2.5/histogram/oper2d.lo new file mode 100644 index 00000000..bf60b231 --- /dev/null +++ b/gsl-2.5/histogram/oper2d.lo @@ -0,0 +1,12 @@ +# oper2d.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/oper2d.o' + +# Name of the non-PIC object +non_pic_object='oper2d.o' + diff --git a/gsl-2.5/histogram/params.c b/gsl-2.5/histogram/params.c new file mode 100644 index 00000000..ee162b26 --- /dev/null +++ b/gsl-2.5/histogram/params.c @@ -0,0 +1,42 @@ +/* histogram/params.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include + +double +gsl_histogram_max (const gsl_histogram * h) +{ + const int n = h->n; + + return h->range[n]; +} + +double +gsl_histogram_min (const gsl_histogram * h) +{ + return h->range[0]; +} + +size_t +gsl_histogram_bins (const gsl_histogram * h) +{ + return h->n; +} diff --git a/gsl-2.5/histogram/params.lo b/gsl-2.5/histogram/params.lo new file mode 100644 index 00000000..fbc2e80b --- /dev/null +++ b/gsl-2.5/histogram/params.lo @@ -0,0 +1,12 @@ +# params.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/params.o' + +# Name of the non-PIC object +non_pic_object='params.o' + diff --git a/gsl-2.5/histogram/params2d.c b/gsl-2.5/histogram/params2d.c new file mode 100644 index 00000000..28ff43b3 --- /dev/null +++ b/gsl-2.5/histogram/params2d.c @@ -0,0 +1,60 @@ +/* histogram/params2d.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include + +double +gsl_histogram2d_xmax (const gsl_histogram2d * h) +{ + const int nx = h->nx; + return h->xrange[nx]; +} + +double +gsl_histogram2d_xmin (const gsl_histogram2d * h) +{ + return h->xrange[0]; +} + +double +gsl_histogram2d_ymax (const gsl_histogram2d * h) +{ + const int ny = h->ny; + return h->yrange[ny]; +} + +double +gsl_histogram2d_ymin (const gsl_histogram2d * h) +{ + return h->yrange[0]; +} + +size_t +gsl_histogram2d_nx (const gsl_histogram2d * h) +{ + return h->nx; +} + +size_t +gsl_histogram2d_ny (const gsl_histogram2d * h) +{ + return h->ny; +} diff --git a/gsl-2.5/histogram/params2d.lo b/gsl-2.5/histogram/params2d.lo new file mode 100644 index 00000000..b5efa50e --- /dev/null +++ b/gsl-2.5/histogram/params2d.lo @@ -0,0 +1,12 @@ +# params2d.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/params2d.o' + +# Name of the non-PIC object +non_pic_object='params2d.o' + diff --git a/gsl-2.5/histogram/pdf.c b/gsl-2.5/histogram/pdf.c new file mode 100644 index 00000000..529863bb --- /dev/null +++ b/gsl-2.5/histogram/pdf.c @@ -0,0 +1,154 @@ +/* histogram/pdf.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007, 2009 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include + +#include "find.c" + +double +gsl_histogram_pdf_sample (const gsl_histogram_pdf * p, double r) +{ + size_t i; + int status; + +/* Wrap the exclusive top of the bin down to the inclusive bottom of + the bin. Since this is a single point it should not affect the + distribution. */ + + if (r == 1.0) + { + r = 0.0; + } + + status = find (p->n, p->sum, r, &i); + + if (status) + { + GSL_ERROR_VAL ("cannot find r in cumulative pdf", GSL_EDOM, 0); + } + else + { + double delta = (r - p->sum[i]) / (p->sum[i + 1] - p->sum[i]); + double x = p->range[i] + delta * (p->range[i + 1] - p->range[i]); + return x; + } +} + +gsl_histogram_pdf * +gsl_histogram_pdf_alloc (const size_t n) +{ + gsl_histogram_pdf *p; + + if (n == 0) + { + GSL_ERROR_VAL ("histogram pdf length n must be positive integer", + GSL_EDOM, 0); + } + + p = (gsl_histogram_pdf *) malloc (sizeof (gsl_histogram_pdf)); + + if (p == 0) + { + GSL_ERROR_VAL ("failed to allocate space for histogram pdf struct", + GSL_ENOMEM, 0); + } + + p->range = (double *) malloc ((n + 1) * sizeof (double)); + + if (p->range == 0) + { + free (p); /* exception in constructor, avoid memory leak */ + + GSL_ERROR_VAL ("failed to allocate space for histogram pdf ranges", + GSL_ENOMEM, 0); + } + + p->sum = (double *) malloc ((n + 1) * sizeof (double)); + + if (p->sum == 0) + { + free (p->range); + free (p); /* exception in constructor, avoid memory leak */ + + GSL_ERROR_VAL ("failed to allocate space for histogram pdf sums", + GSL_ENOMEM, 0); + } + + p->n = n; + + return p; +} + +int +gsl_histogram_pdf_init (gsl_histogram_pdf * p, const gsl_histogram * h) +{ + size_t i; + size_t n = p->n; + + if (n != h->n) + { + GSL_ERROR ("histogram length must match pdf length", GSL_EINVAL); + } + + for (i = 0; i < n; i++) + { + if (h->bin[i] < 0) + { + GSL_ERROR ("histogram bins must be non-negative to compute" + "a probability distribution", GSL_EDOM); + } + } + + for (i = 0; i < n + 1; i++) + { + p->range[i] = h->range[i]; + } + + { + double mean = 0, sum = 0; + + for (i = 0; i < n; i++) + { + mean += (h->bin[i] - mean) / ((double) (i + 1)); + } + + p->sum[0] = 0; + + for (i = 0; i < n; i++) + { + sum += (h->bin[i] / mean) / n; + p->sum[i + 1] = sum; + } + } + + return GSL_SUCCESS; +} + + +void +gsl_histogram_pdf_free (gsl_histogram_pdf * p) +{ + RETURN_IF_NULL (p); + free (p->range); + free (p->sum); + free (p); +} diff --git a/gsl-2.5/histogram/pdf.lo b/gsl-2.5/histogram/pdf.lo new file mode 100644 index 00000000..effeb630 --- /dev/null +++ b/gsl-2.5/histogram/pdf.lo @@ -0,0 +1,12 @@ +# pdf.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/pdf.o' + +# Name of the non-PIC object +non_pic_object='pdf.o' + diff --git a/gsl-2.5/histogram/pdf2d.c b/gsl-2.5/histogram/pdf2d.c new file mode 100644 index 00000000..07cc24d6 --- /dev/null +++ b/gsl-2.5/histogram/pdf2d.c @@ -0,0 +1,187 @@ +/* histogram/pdf2d.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007, 2009 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include + +#include "find.c" + +int +gsl_histogram2d_pdf_sample (const gsl_histogram2d_pdf * p, + double r1, double r2, + double *x, double *y) +{ + size_t k; + int status; + +/* Wrap the exclusive top of the bin down to the inclusive bottom of + the bin. Since this is a single point it should not affect the + distribution. */ + + if (r2 == 1.0) + { + r2 = 0.0; + } + if (r1 == 1.0) + { + r1 = 0.0; + } + + status = find (p->nx * p->ny, p->sum, r1, &k); + + if (status) + { + GSL_ERROR ("cannot find r1 in cumulative pdf", GSL_EDOM); + } + else + { + size_t i = k / p->ny; + size_t j = k - (i * p->ny); + double delta = (r1 - p->sum[k]) / (p->sum[k + 1] - p->sum[k]); + *x = p->xrange[i] + delta * (p->xrange[i + 1] - p->xrange[i]); + *y = p->yrange[j] + r2 * (p->yrange[j + 1] - p->yrange[j]); + return GSL_SUCCESS; + } +} + +gsl_histogram2d_pdf * +gsl_histogram2d_pdf_alloc (const size_t nx, const size_t ny) +{ + const size_t n = nx * ny; + + gsl_histogram2d_pdf *p; + + if (n == 0) + { + GSL_ERROR_VAL ("histogram2d pdf length n must be positive integer", + GSL_EDOM, 0); + } + + p = (gsl_histogram2d_pdf *) malloc (sizeof (gsl_histogram2d_pdf)); + + if (p == 0) + { + GSL_ERROR_VAL ("failed to allocate space for histogram2d pdf struct", + GSL_ENOMEM, 0); + } + + p->xrange = (double *) malloc ((nx + 1) * sizeof (double)); + + if (p->xrange == 0) + { + free (p); /* exception in constructor, avoid memory leak */ + + GSL_ERROR_VAL ("failed to allocate space for histogram2d pdf xranges", + GSL_ENOMEM, 0); + } + + p->yrange = (double *) malloc ((ny + 1) * sizeof (double)); + + if (p->yrange == 0) + { + free (p->xrange); + free (p); /* exception in constructor, avoid memory leak */ + + GSL_ERROR_VAL ("failed to allocate space for histogram2d pdf yranges", + GSL_ENOMEM, 0); + } + + p->sum = (double *) malloc ((n + 1) * sizeof (double)); + + if (p->sum == 0) + { + free (p->yrange); + free (p->xrange); + free (p); /* exception in constructor, avoid memory leak */ + + GSL_ERROR_VAL ("failed to allocate space for histogram2d pdf sums", + GSL_ENOMEM, 0); + } + + p->nx = nx; + p->ny = ny; + + return p; +} + +int +gsl_histogram2d_pdf_init (gsl_histogram2d_pdf * p, const gsl_histogram2d * h) +{ + size_t i; + const size_t nx = p->nx; + const size_t ny = p->ny; + const size_t n = nx * ny; + + if (nx != h->nx || ny != h->ny) + { + GSL_ERROR ("histogram2d size must match pdf size", GSL_EDOM); + } + + for (i = 0; i < n; i++) + { + if (h->bin[i] < 0) + { + GSL_ERROR ("histogram bins must be non-negative to compute" + "a probability distribution", GSL_EDOM); + } + } + + for (i = 0; i < nx + 1; i++) + { + p->xrange[i] = h->xrange[i]; + } + + for (i = 0; i < ny + 1; i++) + { + p->yrange[i] = h->yrange[i]; + } + + { + double mean = 0, sum = 0; + + for (i = 0; i < n; i++) + { + mean += (h->bin[i] - mean) / ((double) (i + 1)); + } + + p->sum[0] = 0; + + for (i = 0; i < n; i++) + { + sum += (h->bin[i] / mean) / n; + p->sum[i + 1] = sum; + } + } + + return GSL_SUCCESS; +} + + +void +gsl_histogram2d_pdf_free (gsl_histogram2d_pdf * p) +{ + RETURN_IF_NULL (p); + free (p->xrange); + free (p->yrange); + free (p->sum); + free (p); +} diff --git a/gsl-2.5/histogram/pdf2d.lo b/gsl-2.5/histogram/pdf2d.lo new file mode 100644 index 00000000..8da1b1b3 --- /dev/null +++ b/gsl-2.5/histogram/pdf2d.lo @@ -0,0 +1,12 @@ +# pdf2d.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/pdf2d.o' + +# Name of the non-PIC object +non_pic_object='pdf2d.o' + diff --git a/gsl-2.5/histogram/reset.c b/gsl-2.5/histogram/reset.c new file mode 100644 index 00000000..18c01c03 --- /dev/null +++ b/gsl-2.5/histogram/reset.c @@ -0,0 +1,34 @@ +/* histogram/reset.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include + +void +gsl_histogram_reset (gsl_histogram * h) +{ + size_t i; + const size_t n = h->n; + + for (i = 0; i < n; i++) + { + h->bin[i] = 0; + } +} diff --git a/gsl-2.5/histogram/reset.lo b/gsl-2.5/histogram/reset.lo new file mode 100644 index 00000000..bcb7694e --- /dev/null +++ b/gsl-2.5/histogram/reset.lo @@ -0,0 +1,12 @@ +# reset.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/reset.o' + +# Name of the non-PIC object +non_pic_object='reset.o' + diff --git a/gsl-2.5/histogram/reset2d.c b/gsl-2.5/histogram/reset2d.c new file mode 100644 index 00000000..090ad7ed --- /dev/null +++ b/gsl-2.5/histogram/reset2d.c @@ -0,0 +1,35 @@ +/* histogram/reset2d.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include + +void +gsl_histogram2d_reset (gsl_histogram2d * h) +{ + size_t i; + const size_t nx = h->nx; + const size_t ny = h->ny; + + for (i = 0; i < nx * ny; i++) + { + h->bin[i] = 0; + } +} diff --git a/gsl-2.5/histogram/reset2d.lo b/gsl-2.5/histogram/reset2d.lo new file mode 100644 index 00000000..177cc6fe --- /dev/null +++ b/gsl-2.5/histogram/reset2d.lo @@ -0,0 +1,12 @@ +# reset2d.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/reset2d.o' + +# Name of the non-PIC object +non_pic_object='reset2d.o' + diff --git a/gsl-2.5/histogram/stat.c b/gsl-2.5/histogram/stat.c new file mode 100644 index 00000000..eab0218f --- /dev/null +++ b/gsl-2.5/histogram/stat.c @@ -0,0 +1,140 @@ +/* gsl_histogram_stat.c + * Copyright (C) 2000 Simone Piccardi + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this library; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ +/*************************************************************** + * + * File gsl_histogram_stat.c: + * Routines for statisticalcomputations on histograms. + * Need GSL library and header. + * Contains the routines: + * gsl_histogram_mean compute histogram mean + * gsl_histogram_sigma compute histogram sigma + * + * Author: S. Piccardi + * Jan. 2000 + * + ***************************************************************/ +#include +#include +#include +#include +#include + +/* FIXME: We skip negative values in the histogram h->bin[i] < 0, + since those correspond to negative weights (BJG) */ + +double +gsl_histogram_mean (const gsl_histogram * h) +{ + const size_t n = h->n; + size_t i; + + /* Compute the bin-weighted arithmetic mean M of a histogram using the + recurrence relation + + M(n) = M(n-1) + (x[n] - M(n-1)) (w(n)/(W(n-1) + w(n))) + W(n) = W(n-1) + w(n) + + */ + + long double wmean = 0; + long double W = 0; + + for (i = 0; i < n; i++) + { + double xi = (h->range[i + 1] + h->range[i]) / 2; + double wi = h->bin[i]; + + if (wi > 0) + { + W += wi; + wmean += (xi - wmean) * (wi / W); + } + } + + return wmean; +} + +double +gsl_histogram_sigma (const gsl_histogram * h) +{ + const size_t n = h->n; + size_t i; + + long double wvariance = 0 ; + long double wmean = 0; + long double W = 0; + + /* Use a two-pass algorithm for stability. Could also use a single + pass formula, as given in N.J.Higham 'Accuracy and Stability of + Numerical Methods', p.12 */ + + /* Compute the mean */ + + for (i = 0; i < n; i++) + { + double xi = (h->range[i + 1] + h->range[i]) / 2; + double wi = h->bin[i]; + + if (wi > 0) + { + W += wi; + wmean += (xi - wmean) * (wi / W); + } + } + + /* Compute the variance */ + + W = 0.0; + + for (i = 0; i < n; i++) + { + double xi = ((h->range[i + 1]) + (h->range[i])) / 2; + double wi = h->bin[i]; + + if (wi > 0) { + const long double delta = (xi - wmean); + W += wi ; + wvariance += (delta * delta - wvariance) * (wi / W); + } + } + + { + double sigma = sqrt (wvariance) ; + return sigma; + } +} + + +/* + sum up all bins of histogram + */ + +double +gsl_histogram_sum(const gsl_histogram * h) +{ + double sum=0; + size_t i=0; + size_t n; + n=h->n; + + while(i < n) + sum += h->bin[i++]; + + return sum; +} + diff --git a/gsl-2.5/histogram/stat.lo b/gsl-2.5/histogram/stat.lo new file mode 100644 index 00000000..1e0dd635 --- /dev/null +++ b/gsl-2.5/histogram/stat.lo @@ -0,0 +1,12 @@ +# stat.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/stat.o' + +# Name of the non-PIC object +non_pic_object='stat.o' + diff --git a/gsl-2.5/histogram/stat2d.c b/gsl-2.5/histogram/stat2d.c new file mode 100644 index 00000000..59828178 --- /dev/null +++ b/gsl-2.5/histogram/stat2d.c @@ -0,0 +1,265 @@ +/* histogram/stat2d.c + * Copyright (C) 2002 Achim Gaedke + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this library; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/*************************************************************** + * + * File histogram/stat2d.c: + * Routine to return statistical values of the content of a 2D hisogram. + * + * Contains the routines: + * gsl_histogram2d_sum sum up all bin values + * gsl_histogram2d_xmean determine mean of x values + * gsl_histogram2d_ymean determine mean of y values + * + * Author: Achim Gaedke Achim.Gaedke@zpr.uni-koeln.de + * Jan. 2002 + * + ***************************************************************/ + +#include +#include +#include +#include + +/* + sum up all bins of histogram2d + */ + +double +gsl_histogram2d_sum (const gsl_histogram2d * h) +{ + const size_t n = h->nx * h->ny; + double sum = 0; + size_t i = 0; + + while (i < n) + sum += h->bin[i++]; + + return sum; +} + +double +gsl_histogram2d_xmean (const gsl_histogram2d * h) +{ + const size_t nx = h->nx; + const size_t ny = h->ny; + size_t i; + size_t j; + + /* Compute the bin-weighted arithmetic mean M of a histogram using the + recurrence relation + + M(n) = M(n-1) + (x[n] - M(n-1)) (w(n)/(W(n-1) + w(n))) + W(n) = W(n-1) + w(n) + + */ + + long double wmean = 0; + long double W = 0; + + for (i = 0; i < nx; i++) + { + double xi = (h->xrange[i + 1] + h->xrange[i]) / 2.0; + double wi = 0; + + for (j = 0; j < ny; j++) + { + double wij = h->bin[i * ny + j]; + if (wij > 0) + wi += wij; + } + if (wi > 0) + { + W += wi; + wmean += (xi - wmean) * (wi / W); + } + } + + return wmean; +} + +double +gsl_histogram2d_ymean (const gsl_histogram2d * h) +{ + const size_t nx = h->nx; + const size_t ny = h->ny; + size_t i; + size_t j; + + /* Compute the bin-weighted arithmetic mean M of a histogram using the + recurrence relation + + M(n) = M(n-1) + (x[n] - M(n-1)) (w(n)/(W(n-1) + w(n))) + W(n) = W(n-1) + w(n) + + */ + + long double wmean = 0; + long double W = 0; + + for (j = 0; j < ny; j++) + { + double yj = (h->yrange[j + 1] + h->yrange[j]) / 2.0; + double wj = 0; + + for (i = 0; i < nx; i++) + { + double wij = h->bin[i * ny + j]; + if (wij > 0) + wj += wij; + } + + if (wj > 0) + { + W += wj; + wmean += (yj - wmean) * (wj / W); + } + } + + return wmean; +} + +double +gsl_histogram2d_xsigma (const gsl_histogram2d * h) +{ + const double xmean = gsl_histogram2d_xmean (h); + const size_t nx = h->nx; + const size_t ny = h->ny; + size_t i; + size_t j; + + /* Compute the bin-weighted arithmetic mean M of a histogram using the + recurrence relation + + M(n) = M(n-1) + (x[n] - M(n-1)) (w(n)/(W(n-1) + w(n))) + W(n) = W(n-1) + w(n) + + */ + + long double wvariance = 0; + long double W = 0; + + for (i = 0; i < nx; i++) + { + double xi = (h->xrange[i + 1] + h->xrange[i]) / 2 - xmean; + double wi = 0; + + for (j = 0; j < ny; j++) + { + double wij = h->bin[i * ny + j]; + if (wij > 0) + wi += wij; + } + + if (wi > 0) + { + W += wi; + wvariance += ((xi * xi) - wvariance) * (wi / W); + } + } + + { + double xsigma = sqrt (wvariance); + return xsigma; + } +} + +double +gsl_histogram2d_ysigma (const gsl_histogram2d * h) +{ + const double ymean = gsl_histogram2d_ymean (h); + const size_t nx = h->nx; + const size_t ny = h->ny; + size_t i; + size_t j; + + /* Compute the bin-weighted arithmetic mean M of a histogram using the + recurrence relation + + M(n) = M(n-1) + (x[n] - M(n-1)) (w(n)/(W(n-1) + w(n))) + W(n) = W(n-1) + w(n) + + */ + + long double wvariance = 0; + long double W = 0; + + for (j = 0; j < ny; j++) + { + double yj = (h->yrange[j + 1] + h->yrange[j]) / 2.0 - ymean; + double wj = 0; + + for (i = 0; i < nx; i++) + { + double wij = h->bin[i * ny + j]; + if (wij > 0) + wj += wij; + } + if (wj > 0) + { + W += wj; + wvariance += ((yj * yj) - wvariance) * (wj / W); + } + } + + { + double ysigma = sqrt (wvariance); + return ysigma; + } +} + +double +gsl_histogram2d_cov (const gsl_histogram2d * h) +{ + const double xmean = gsl_histogram2d_xmean (h); + const double ymean = gsl_histogram2d_ymean (h); + const size_t nx = h->nx; + const size_t ny = h->ny; + size_t i; + size_t j; + + /* Compute the bin-weighted arithmetic mean M of a histogram using the + recurrence relation + + M(n) = M(n-1) + (x[n] - M(n-1)) (w(n)/(W(n-1) + w(n))) + W(n) = W(n-1) + w(n) + + */ + + long double wcovariance = 0; + long double W = 0; + + for (j = 0; j < ny; j++) + { + for (i = 0; i < nx; i++) + { + double xi = (h->xrange[i + 1] + h->xrange[i]) / 2.0 - xmean; + double yj = (h->yrange[j + 1] + h->yrange[j]) / 2.0 - ymean; + double wij = h->bin[i * ny + j]; + + if (wij > 0) + { + W += wij; + wcovariance += ((xi * yj) - wcovariance) * (wij / W); + } + } + } + + return wcovariance; + +} diff --git a/gsl-2.5/histogram/stat2d.lo b/gsl-2.5/histogram/stat2d.lo new file mode 100644 index 00000000..c21e2b29 --- /dev/null +++ b/gsl-2.5/histogram/stat2d.lo @@ -0,0 +1,12 @@ +# stat2d.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/stat2d.o' + +# Name of the non-PIC object +non_pic_object='stat2d.o' + diff --git a/gsl-2.5/histogram/test b/gsl-2.5/histogram/test new file mode 100755 index 00000000..fabaa90e Binary files /dev/null and b/gsl-2.5/histogram/test differ diff --git a/gsl-2.5/histogram/test-suite.log b/gsl-2.5/histogram/test-suite.log new file mode 100644 index 00000000..c93d5d22 --- /dev/null +++ b/gsl-2.5/histogram/test-suite.log @@ -0,0 +1,14 @@ +======================================= + gsl 2.5: histogram/test-suite.log +======================================= + +# TOTAL: 1 +# PASS: 1 +# SKIP: 0 +# XFAIL: 0 +# FAIL: 0 +# XPASS: 0 +# ERROR: 0 + +.. contents:: :depth: 2 + diff --git a/gsl-2.5/histogram/test.c b/gsl-2.5/histogram/test.c new file mode 100644 index 00000000..011d7fbc --- /dev/null +++ b/gsl-2.5/histogram/test.c @@ -0,0 +1,45 @@ +/* histogram/test.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include + +void test1d (void); +void test2d (void); +void test1d_resample (void); +void test2d_resample (void); +void test1d_trap (void); +void test2d_trap (void); + +int +main (void) +{ + test1d(); + test2d(); + test1d_resample(); + test2d_resample(); + test1d_trap(); + test2d_trap(); + + exit (gsl_test_summary ()); +} diff --git a/gsl-2.5/histogram/test.dat b/gsl-2.5/histogram/test.dat new file mode 100644 index 00000000..f9090625 Binary files /dev/null and b/gsl-2.5/histogram/test.dat differ diff --git a/gsl-2.5/histogram/test.log b/gsl-2.5/histogram/test.log new file mode 100644 index 00000000..be7766d0 --- /dev/null +++ b/gsl-2.5/histogram/test.log @@ -0,0 +1 @@ +Completed [160/160] diff --git a/gsl-2.5/histogram/test.trs b/gsl-2.5/histogram/test.trs new file mode 100644 index 00000000..3f0f396c --- /dev/null +++ b/gsl-2.5/histogram/test.trs @@ -0,0 +1,4 @@ +:test-result: PASS +:global-test-result: PASS +:recheck: no +:copy-in-global-log: no diff --git a/gsl-2.5/histogram/test.txt b/gsl-2.5/histogram/test.txt new file mode 100644 index 00000000..ad8faad1 --- /dev/null +++ b/gsl-2.5/histogram/test.txt @@ -0,0 +1,408 @@ +0.0000000000000000000e+00 2.9411764705882353921e-01 0.0000000000000000000e+00 2.1739130434782608092e-01 0.0000000000000000000e+00 +0.0000000000000000000e+00 2.9411764705882353921e-01 2.1739130434782608092e-01 4.3478260869565216185e-01 0.0000000000000000000e+00 +0.0000000000000000000e+00 2.9411764705882353921e-01 4.3478260869565216185e-01 6.5217391304347827052e-01 0.0000000000000000000e+00 +0.0000000000000000000e+00 2.9411764705882353921e-01 6.5217391304347827052e-01 8.6956521739130432369e-01 0.0000000000000000000e+00 +0.0000000000000000000e+00 2.9411764705882353921e-01 8.6956521739130432369e-01 1.0869565217391303769e+00 3.0000000000000000000e+00 +0.0000000000000000000e+00 2.9411764705882353921e-01 1.0869565217391303769e+00 1.3043478260869565410e+00 0.0000000000000000000e+00 +0.0000000000000000000e+00 2.9411764705882353921e-01 1.3043478260869565410e+00 1.5217391304347827052e+00 0.0000000000000000000e+00 +0.0000000000000000000e+00 2.9411764705882353921e-01 1.5217391304347827052e+00 1.7391304347826086474e+00 0.0000000000000000000e+00 +0.0000000000000000000e+00 2.9411764705882353921e-01 1.7391304347826086474e+00 1.9565217391304348116e+00 0.0000000000000000000e+00 +0.0000000000000000000e+00 2.9411764705882353921e-01 1.9565217391304348116e+00 2.1739130434782607537e+00 2.0000000000000000000e+00 +0.0000000000000000000e+00 2.9411764705882353921e-01 2.1739130434782607537e+00 2.3913043478260869179e+00 0.0000000000000000000e+00 +0.0000000000000000000e+00 2.9411764705882353921e-01 2.3913043478260869179e+00 2.6086956521739130821e+00 0.0000000000000000000e+00 +0.0000000000000000000e+00 2.9411764705882353921e-01 2.6086956521739130821e+00 2.8260869565217388022e+00 0.0000000000000000000e+00 +0.0000000000000000000e+00 2.9411764705882353921e-01 2.8260869565217388022e+00 3.0434782608695654105e+00 1.0000000000000000000e+00 +0.0000000000000000000e+00 2.9411764705882353921e-01 3.0434782608695654105e+00 3.2608695652173915747e+00 0.0000000000000000000e+00 +0.0000000000000000000e+00 2.9411764705882353921e-01 3.2608695652173915747e+00 3.4782608695652172948e+00 0.0000000000000000000e+00 +0.0000000000000000000e+00 2.9411764705882353921e-01 3.4782608695652172948e+00 3.6956521739130430149e+00 0.0000000000000000000e+00 +0.0000000000000000000e+00 2.9411764705882353921e-01 3.6956521739130430149e+00 3.9130434782608696231e+00 0.0000000000000000000e+00 +0.0000000000000000000e+00 2.9411764705882353921e-01 3.9130434782608696231e+00 4.1304347826086953432e+00 0.0000000000000000000e+00 +0.0000000000000000000e+00 2.9411764705882353921e-01 4.1304347826086953432e+00 4.3478260869565215074e+00 0.0000000000000000000e+00 +0.0000000000000000000e+00 2.9411764705882353921e-01 4.3478260869565215074e+00 4.5652173913043476716e+00 0.0000000000000000000e+00 +0.0000000000000000000e+00 2.9411764705882353921e-01 4.5652173913043476716e+00 4.7826086956521738358e+00 0.0000000000000000000e+00 +0.0000000000000000000e+00 2.9411764705882353921e-01 4.7826086956521738358e+00 5.0000000000000000000e+00 0.0000000000000000000e+00 + +2.9411764705882353921e-01 5.8823529411764707842e-01 0.0000000000000000000e+00 2.1739130434782608092e-01 4.0000000000000000000e+00 +2.9411764705882353921e-01 5.8823529411764707842e-01 2.1739130434782608092e-01 4.3478260869565216185e-01 0.0000000000000000000e+00 +2.9411764705882353921e-01 5.8823529411764707842e-01 4.3478260869565216185e-01 6.5217391304347827052e-01 0.0000000000000000000e+00 +2.9411764705882353921e-01 5.8823529411764707842e-01 6.5217391304347827052e-01 8.6956521739130432369e-01 0.0000000000000000000e+00 +2.9411764705882353921e-01 5.8823529411764707842e-01 8.6956521739130432369e-01 1.0869565217391303769e+00 0.0000000000000000000e+00 +2.9411764705882353921e-01 5.8823529411764707842e-01 1.0869565217391303769e+00 1.3043478260869565410e+00 0.0000000000000000000e+00 +2.9411764705882353921e-01 5.8823529411764707842e-01 1.3043478260869565410e+00 1.5217391304347827052e+00 0.0000000000000000000e+00 +2.9411764705882353921e-01 5.8823529411764707842e-01 1.5217391304347827052e+00 1.7391304347826086474e+00 0.0000000000000000000e+00 +2.9411764705882353921e-01 5.8823529411764707842e-01 1.7391304347826086474e+00 1.9565217391304348116e+00 0.0000000000000000000e+00 +2.9411764705882353921e-01 5.8823529411764707842e-01 1.9565217391304348116e+00 2.1739130434782607537e+00 0.0000000000000000000e+00 +2.9411764705882353921e-01 5.8823529411764707842e-01 2.1739130434782607537e+00 2.3913043478260869179e+00 0.0000000000000000000e+00 +2.9411764705882353921e-01 5.8823529411764707842e-01 2.3913043478260869179e+00 2.6086956521739130821e+00 0.0000000000000000000e+00 +2.9411764705882353921e-01 5.8823529411764707842e-01 2.6086956521739130821e+00 2.8260869565217388022e+00 0.0000000000000000000e+00 +2.9411764705882353921e-01 5.8823529411764707842e-01 2.8260869565217388022e+00 3.0434782608695654105e+00 0.0000000000000000000e+00 +2.9411764705882353921e-01 5.8823529411764707842e-01 3.0434782608695654105e+00 3.2608695652173915747e+00 0.0000000000000000000e+00 +2.9411764705882353921e-01 5.8823529411764707842e-01 3.2608695652173915747e+00 3.4782608695652172948e+00 0.0000000000000000000e+00 +2.9411764705882353921e-01 5.8823529411764707842e-01 3.4782608695652172948e+00 3.6956521739130430149e+00 0.0000000000000000000e+00 +2.9411764705882353921e-01 5.8823529411764707842e-01 3.6956521739130430149e+00 3.9130434782608696231e+00 0.0000000000000000000e+00 +2.9411764705882353921e-01 5.8823529411764707842e-01 3.9130434782608696231e+00 4.1304347826086953432e+00 0.0000000000000000000e+00 +2.9411764705882353921e-01 5.8823529411764707842e-01 4.1304347826086953432e+00 4.3478260869565215074e+00 0.0000000000000000000e+00 +2.9411764705882353921e-01 5.8823529411764707842e-01 4.3478260869565215074e+00 4.5652173913043476716e+00 0.0000000000000000000e+00 +2.9411764705882353921e-01 5.8823529411764707842e-01 4.5652173913043476716e+00 4.7826086956521738358e+00 0.0000000000000000000e+00 +2.9411764705882353921e-01 5.8823529411764707842e-01 4.7826086956521738358e+00 5.0000000000000000000e+00 0.0000000000000000000e+00 + +5.8823529411764707842e-01 8.8235294117647067313e-01 0.0000000000000000000e+00 2.1739130434782608092e-01 0.0000000000000000000e+00 +5.8823529411764707842e-01 8.8235294117647067313e-01 2.1739130434782608092e-01 4.3478260869565216185e-01 0.0000000000000000000e+00 +5.8823529411764707842e-01 8.8235294117647067313e-01 4.3478260869565216185e-01 6.5217391304347827052e-01 0.0000000000000000000e+00 +5.8823529411764707842e-01 8.8235294117647067313e-01 6.5217391304347827052e-01 8.6956521739130432369e-01 0.0000000000000000000e+00 +5.8823529411764707842e-01 8.8235294117647067313e-01 8.6956521739130432369e-01 1.0869565217391303769e+00 0.0000000000000000000e+00 +5.8823529411764707842e-01 8.8235294117647067313e-01 1.0869565217391303769e+00 1.3043478260869565410e+00 0.0000000000000000000e+00 +5.8823529411764707842e-01 8.8235294117647067313e-01 1.3043478260869565410e+00 1.5217391304347827052e+00 0.0000000000000000000e+00 +5.8823529411764707842e-01 8.8235294117647067313e-01 1.5217391304347827052e+00 1.7391304347826086474e+00 0.0000000000000000000e+00 +5.8823529411764707842e-01 8.8235294117647067313e-01 1.7391304347826086474e+00 1.9565217391304348116e+00 0.0000000000000000000e+00 +5.8823529411764707842e-01 8.8235294117647067313e-01 1.9565217391304348116e+00 2.1739130434782607537e+00 0.0000000000000000000e+00 +5.8823529411764707842e-01 8.8235294117647067313e-01 2.1739130434782607537e+00 2.3913043478260869179e+00 0.0000000000000000000e+00 +5.8823529411764707842e-01 8.8235294117647067313e-01 2.3913043478260869179e+00 2.6086956521739130821e+00 0.0000000000000000000e+00 +5.8823529411764707842e-01 8.8235294117647067313e-01 2.6086956521739130821e+00 2.8260869565217388022e+00 0.0000000000000000000e+00 +5.8823529411764707842e-01 8.8235294117647067313e-01 2.8260869565217388022e+00 3.0434782608695654105e+00 0.0000000000000000000e+00 +5.8823529411764707842e-01 8.8235294117647067313e-01 3.0434782608695654105e+00 3.2608695652173915747e+00 0.0000000000000000000e+00 +5.8823529411764707842e-01 8.8235294117647067313e-01 3.2608695652173915747e+00 3.4782608695652172948e+00 0.0000000000000000000e+00 +5.8823529411764707842e-01 8.8235294117647067313e-01 3.4782608695652172948e+00 3.6956521739130430149e+00 0.0000000000000000000e+00 +5.8823529411764707842e-01 8.8235294117647067313e-01 3.6956521739130430149e+00 3.9130434782608696231e+00 0.0000000000000000000e+00 +5.8823529411764707842e-01 8.8235294117647067313e-01 3.9130434782608696231e+00 4.1304347826086953432e+00 0.0000000000000000000e+00 +5.8823529411764707842e-01 8.8235294117647067313e-01 4.1304347826086953432e+00 4.3478260869565215074e+00 0.0000000000000000000e+00 +5.8823529411764707842e-01 8.8235294117647067313e-01 4.3478260869565215074e+00 4.5652173913043476716e+00 0.0000000000000000000e+00 +5.8823529411764707842e-01 8.8235294117647067313e-01 4.5652173913043476716e+00 4.7826086956521738358e+00 0.0000000000000000000e+00 +5.8823529411764707842e-01 8.8235294117647067313e-01 4.7826086956521738358e+00 5.0000000000000000000e+00 0.0000000000000000000e+00 + +8.8235294117647067313e-01 1.1764705882352941568e+00 0.0000000000000000000e+00 2.1739130434782608092e-01 0.0000000000000000000e+00 +8.8235294117647067313e-01 1.1764705882352941568e+00 2.1739130434782608092e-01 4.3478260869565216185e-01 0.0000000000000000000e+00 +8.8235294117647067313e-01 1.1764705882352941568e+00 4.3478260869565216185e-01 6.5217391304347827052e-01 0.0000000000000000000e+00 +8.8235294117647067313e-01 1.1764705882352941568e+00 6.5217391304347827052e-01 8.6956521739130432369e-01 0.0000000000000000000e+00 +8.8235294117647067313e-01 1.1764705882352941568e+00 8.6956521739130432369e-01 1.0869565217391303769e+00 0.0000000000000000000e+00 +8.8235294117647067313e-01 1.1764705882352941568e+00 1.0869565217391303769e+00 1.3043478260869565410e+00 0.0000000000000000000e+00 +8.8235294117647067313e-01 1.1764705882352941568e+00 1.3043478260869565410e+00 1.5217391304347827052e+00 0.0000000000000000000e+00 +8.8235294117647067313e-01 1.1764705882352941568e+00 1.5217391304347827052e+00 1.7391304347826086474e+00 0.0000000000000000000e+00 +8.8235294117647067313e-01 1.1764705882352941568e+00 1.7391304347826086474e+00 1.9565217391304348116e+00 0.0000000000000000000e+00 +8.8235294117647067313e-01 1.1764705882352941568e+00 1.9565217391304348116e+00 2.1739130434782607537e+00 0.0000000000000000000e+00 +8.8235294117647067313e-01 1.1764705882352941568e+00 2.1739130434782607537e+00 2.3913043478260869179e+00 0.0000000000000000000e+00 +8.8235294117647067313e-01 1.1764705882352941568e+00 2.3913043478260869179e+00 2.6086956521739130821e+00 0.0000000000000000000e+00 +8.8235294117647067313e-01 1.1764705882352941568e+00 2.6086956521739130821e+00 2.8260869565217388022e+00 0.0000000000000000000e+00 +8.8235294117647067313e-01 1.1764705882352941568e+00 2.8260869565217388022e+00 3.0434782608695654105e+00 0.0000000000000000000e+00 +8.8235294117647067313e-01 1.1764705882352941568e+00 3.0434782608695654105e+00 3.2608695652173915747e+00 0.0000000000000000000e+00 +8.8235294117647067313e-01 1.1764705882352941568e+00 3.2608695652173915747e+00 3.4782608695652172948e+00 0.0000000000000000000e+00 +8.8235294117647067313e-01 1.1764705882352941568e+00 3.4782608695652172948e+00 3.6956521739130430149e+00 0.0000000000000000000e+00 +8.8235294117647067313e-01 1.1764705882352941568e+00 3.6956521739130430149e+00 3.9130434782608696231e+00 0.0000000000000000000e+00 +8.8235294117647067313e-01 1.1764705882352941568e+00 3.9130434782608696231e+00 4.1304347826086953432e+00 0.0000000000000000000e+00 +8.8235294117647067313e-01 1.1764705882352941568e+00 4.1304347826086953432e+00 4.3478260869565215074e+00 0.0000000000000000000e+00 +8.8235294117647067313e-01 1.1764705882352941568e+00 4.3478260869565215074e+00 4.5652173913043476716e+00 0.0000000000000000000e+00 +8.8235294117647067313e-01 1.1764705882352941568e+00 4.5652173913043476716e+00 4.7826086956521738358e+00 0.0000000000000000000e+00 +8.8235294117647067313e-01 1.1764705882352941568e+00 4.7826086956521738358e+00 5.0000000000000000000e+00 0.0000000000000000000e+00 + +1.1764705882352941568e+00 1.4705882352941177516e+00 0.0000000000000000000e+00 2.1739130434782608092e-01 0.0000000000000000000e+00 +1.1764705882352941568e+00 1.4705882352941177516e+00 2.1739130434782608092e-01 4.3478260869565216185e-01 0.0000000000000000000e+00 +1.1764705882352941568e+00 1.4705882352941177516e+00 4.3478260869565216185e-01 6.5217391304347827052e-01 0.0000000000000000000e+00 +1.1764705882352941568e+00 1.4705882352941177516e+00 6.5217391304347827052e-01 8.6956521739130432369e-01 0.0000000000000000000e+00 +1.1764705882352941568e+00 1.4705882352941177516e+00 8.6956521739130432369e-01 1.0869565217391303769e+00 0.0000000000000000000e+00 +1.1764705882352941568e+00 1.4705882352941177516e+00 1.0869565217391303769e+00 1.3043478260869565410e+00 0.0000000000000000000e+00 +1.1764705882352941568e+00 1.4705882352941177516e+00 1.3043478260869565410e+00 1.5217391304347827052e+00 0.0000000000000000000e+00 +1.1764705882352941568e+00 1.4705882352941177516e+00 1.5217391304347827052e+00 1.7391304347826086474e+00 0.0000000000000000000e+00 +1.1764705882352941568e+00 1.4705882352941177516e+00 1.7391304347826086474e+00 1.9565217391304348116e+00 0.0000000000000000000e+00 +1.1764705882352941568e+00 1.4705882352941177516e+00 1.9565217391304348116e+00 2.1739130434782607537e+00 0.0000000000000000000e+00 +1.1764705882352941568e+00 1.4705882352941177516e+00 2.1739130434782607537e+00 2.3913043478260869179e+00 0.0000000000000000000e+00 +1.1764705882352941568e+00 1.4705882352941177516e+00 2.3913043478260869179e+00 2.6086956521739130821e+00 0.0000000000000000000e+00 +1.1764705882352941568e+00 1.4705882352941177516e+00 2.6086956521739130821e+00 2.8260869565217388022e+00 0.0000000000000000000e+00 +1.1764705882352941568e+00 1.4705882352941177516e+00 2.8260869565217388022e+00 3.0434782608695654105e+00 0.0000000000000000000e+00 +1.1764705882352941568e+00 1.4705882352941177516e+00 3.0434782608695654105e+00 3.2608695652173915747e+00 0.0000000000000000000e+00 +1.1764705882352941568e+00 1.4705882352941177516e+00 3.2608695652173915747e+00 3.4782608695652172948e+00 0.0000000000000000000e+00 +1.1764705882352941568e+00 1.4705882352941177516e+00 3.4782608695652172948e+00 3.6956521739130430149e+00 0.0000000000000000000e+00 +1.1764705882352941568e+00 1.4705882352941177516e+00 3.6956521739130430149e+00 3.9130434782608696231e+00 0.0000000000000000000e+00 +1.1764705882352941568e+00 1.4705882352941177516e+00 3.9130434782608696231e+00 4.1304347826086953432e+00 0.0000000000000000000e+00 +1.1764705882352941568e+00 1.4705882352941177516e+00 4.1304347826086953432e+00 4.3478260869565215074e+00 0.0000000000000000000e+00 +1.1764705882352941568e+00 1.4705882352941177516e+00 4.3478260869565215074e+00 4.5652173913043476716e+00 0.0000000000000000000e+00 +1.1764705882352941568e+00 1.4705882352941177516e+00 4.5652173913043476716e+00 4.7826086956521738358e+00 0.0000000000000000000e+00 +1.1764705882352941568e+00 1.4705882352941177516e+00 4.7826086956521738358e+00 5.0000000000000000000e+00 0.0000000000000000000e+00 + +1.4705882352941177516e+00 1.7647058823529413463e+00 0.0000000000000000000e+00 2.1739130434782608092e-01 0.0000000000000000000e+00 +1.4705882352941177516e+00 1.7647058823529413463e+00 2.1739130434782608092e-01 4.3478260869565216185e-01 0.0000000000000000000e+00 +1.4705882352941177516e+00 1.7647058823529413463e+00 4.3478260869565216185e-01 6.5217391304347827052e-01 0.0000000000000000000e+00 +1.4705882352941177516e+00 1.7647058823529413463e+00 6.5217391304347827052e-01 8.6956521739130432369e-01 0.0000000000000000000e+00 +1.4705882352941177516e+00 1.7647058823529413463e+00 8.6956521739130432369e-01 1.0869565217391303769e+00 0.0000000000000000000e+00 +1.4705882352941177516e+00 1.7647058823529413463e+00 1.0869565217391303769e+00 1.3043478260869565410e+00 0.0000000000000000000e+00 +1.4705882352941177516e+00 1.7647058823529413463e+00 1.3043478260869565410e+00 1.5217391304347827052e+00 0.0000000000000000000e+00 +1.4705882352941177516e+00 1.7647058823529413463e+00 1.5217391304347827052e+00 1.7391304347826086474e+00 0.0000000000000000000e+00 +1.4705882352941177516e+00 1.7647058823529413463e+00 1.7391304347826086474e+00 1.9565217391304348116e+00 0.0000000000000000000e+00 +1.4705882352941177516e+00 1.7647058823529413463e+00 1.9565217391304348116e+00 2.1739130434782607537e+00 0.0000000000000000000e+00 +1.4705882352941177516e+00 1.7647058823529413463e+00 2.1739130434782607537e+00 2.3913043478260869179e+00 0.0000000000000000000e+00 +1.4705882352941177516e+00 1.7647058823529413463e+00 2.3913043478260869179e+00 2.6086956521739130821e+00 0.0000000000000000000e+00 +1.4705882352941177516e+00 1.7647058823529413463e+00 2.6086956521739130821e+00 2.8260869565217388022e+00 0.0000000000000000000e+00 +1.4705882352941177516e+00 1.7647058823529413463e+00 2.8260869565217388022e+00 3.0434782608695654105e+00 0.0000000000000000000e+00 +1.4705882352941177516e+00 1.7647058823529413463e+00 3.0434782608695654105e+00 3.2608695652173915747e+00 0.0000000000000000000e+00 +1.4705882352941177516e+00 1.7647058823529413463e+00 3.2608695652173915747e+00 3.4782608695652172948e+00 0.0000000000000000000e+00 +1.4705882352941177516e+00 1.7647058823529413463e+00 3.4782608695652172948e+00 3.6956521739130430149e+00 0.0000000000000000000e+00 +1.4705882352941177516e+00 1.7647058823529413463e+00 3.6956521739130430149e+00 3.9130434782608696231e+00 0.0000000000000000000e+00 +1.4705882352941177516e+00 1.7647058823529413463e+00 3.9130434782608696231e+00 4.1304347826086953432e+00 0.0000000000000000000e+00 +1.4705882352941177516e+00 1.7647058823529413463e+00 4.1304347826086953432e+00 4.3478260869565215074e+00 0.0000000000000000000e+00 +1.4705882352941177516e+00 1.7647058823529413463e+00 4.3478260869565215074e+00 4.5652173913043476716e+00 0.0000000000000000000e+00 +1.4705882352941177516e+00 1.7647058823529413463e+00 4.5652173913043476716e+00 4.7826086956521738358e+00 0.0000000000000000000e+00 +1.4705882352941177516e+00 1.7647058823529413463e+00 4.7826086956521738358e+00 5.0000000000000000000e+00 0.0000000000000000000e+00 + +1.7647058823529413463e+00 2.0588235294117644969e+00 0.0000000000000000000e+00 2.1739130434782608092e-01 0.0000000000000000000e+00 +1.7647058823529413463e+00 2.0588235294117644969e+00 2.1739130434782608092e-01 4.3478260869565216185e-01 0.0000000000000000000e+00 +1.7647058823529413463e+00 2.0588235294117644969e+00 4.3478260869565216185e-01 6.5217391304347827052e-01 0.0000000000000000000e+00 +1.7647058823529413463e+00 2.0588235294117644969e+00 6.5217391304347827052e-01 8.6956521739130432369e-01 0.0000000000000000000e+00 +1.7647058823529413463e+00 2.0588235294117644969e+00 8.6956521739130432369e-01 1.0869565217391303769e+00 0.0000000000000000000e+00 +1.7647058823529413463e+00 2.0588235294117644969e+00 1.0869565217391303769e+00 1.3043478260869565410e+00 0.0000000000000000000e+00 +1.7647058823529413463e+00 2.0588235294117644969e+00 1.3043478260869565410e+00 1.5217391304347827052e+00 0.0000000000000000000e+00 +1.7647058823529413463e+00 2.0588235294117644969e+00 1.5217391304347827052e+00 1.7391304347826086474e+00 0.0000000000000000000e+00 +1.7647058823529413463e+00 2.0588235294117644969e+00 1.7391304347826086474e+00 1.9565217391304348116e+00 0.0000000000000000000e+00 +1.7647058823529413463e+00 2.0588235294117644969e+00 1.9565217391304348116e+00 2.1739130434782607537e+00 0.0000000000000000000e+00 +1.7647058823529413463e+00 2.0588235294117644969e+00 2.1739130434782607537e+00 2.3913043478260869179e+00 0.0000000000000000000e+00 +1.7647058823529413463e+00 2.0588235294117644969e+00 2.3913043478260869179e+00 2.6086956521739130821e+00 0.0000000000000000000e+00 +1.7647058823529413463e+00 2.0588235294117644969e+00 2.6086956521739130821e+00 2.8260869565217388022e+00 0.0000000000000000000e+00 +1.7647058823529413463e+00 2.0588235294117644969e+00 2.8260869565217388022e+00 3.0434782608695654105e+00 0.0000000000000000000e+00 +1.7647058823529413463e+00 2.0588235294117644969e+00 3.0434782608695654105e+00 3.2608695652173915747e+00 0.0000000000000000000e+00 +1.7647058823529413463e+00 2.0588235294117644969e+00 3.2608695652173915747e+00 3.4782608695652172948e+00 0.0000000000000000000e+00 +1.7647058823529413463e+00 2.0588235294117644969e+00 3.4782608695652172948e+00 3.6956521739130430149e+00 0.0000000000000000000e+00 +1.7647058823529413463e+00 2.0588235294117644969e+00 3.6956521739130430149e+00 3.9130434782608696231e+00 0.0000000000000000000e+00 +1.7647058823529413463e+00 2.0588235294117644969e+00 3.9130434782608696231e+00 4.1304347826086953432e+00 0.0000000000000000000e+00 +1.7647058823529413463e+00 2.0588235294117644969e+00 4.1304347826086953432e+00 4.3478260869565215074e+00 0.0000000000000000000e+00 +1.7647058823529413463e+00 2.0588235294117644969e+00 4.3478260869565215074e+00 4.5652173913043476716e+00 0.0000000000000000000e+00 +1.7647058823529413463e+00 2.0588235294117644969e+00 4.5652173913043476716e+00 4.7826086956521738358e+00 0.0000000000000000000e+00 +1.7647058823529413463e+00 2.0588235294117644969e+00 4.7826086956521738358e+00 5.0000000000000000000e+00 0.0000000000000000000e+00 + +2.0588235294117644969e+00 2.3529411764705883137e+00 0.0000000000000000000e+00 2.1739130434782608092e-01 0.0000000000000000000e+00 +2.0588235294117644969e+00 2.3529411764705883137e+00 2.1739130434782608092e-01 4.3478260869565216185e-01 0.0000000000000000000e+00 +2.0588235294117644969e+00 2.3529411764705883137e+00 4.3478260869565216185e-01 6.5217391304347827052e-01 0.0000000000000000000e+00 +2.0588235294117644969e+00 2.3529411764705883137e+00 6.5217391304347827052e-01 8.6956521739130432369e-01 0.0000000000000000000e+00 +2.0588235294117644969e+00 2.3529411764705883137e+00 8.6956521739130432369e-01 1.0869565217391303769e+00 0.0000000000000000000e+00 +2.0588235294117644969e+00 2.3529411764705883137e+00 1.0869565217391303769e+00 1.3043478260869565410e+00 0.0000000000000000000e+00 +2.0588235294117644969e+00 2.3529411764705883137e+00 1.3043478260869565410e+00 1.5217391304347827052e+00 0.0000000000000000000e+00 +2.0588235294117644969e+00 2.3529411764705883137e+00 1.5217391304347827052e+00 1.7391304347826086474e+00 0.0000000000000000000e+00 +2.0588235294117644969e+00 2.3529411764705883137e+00 1.7391304347826086474e+00 1.9565217391304348116e+00 0.0000000000000000000e+00 +2.0588235294117644969e+00 2.3529411764705883137e+00 1.9565217391304348116e+00 2.1739130434782607537e+00 0.0000000000000000000e+00 +2.0588235294117644969e+00 2.3529411764705883137e+00 2.1739130434782607537e+00 2.3913043478260869179e+00 0.0000000000000000000e+00 +2.0588235294117644969e+00 2.3529411764705883137e+00 2.3913043478260869179e+00 2.6086956521739130821e+00 0.0000000000000000000e+00 +2.0588235294117644969e+00 2.3529411764705883137e+00 2.6086956521739130821e+00 2.8260869565217388022e+00 0.0000000000000000000e+00 +2.0588235294117644969e+00 2.3529411764705883137e+00 2.8260869565217388022e+00 3.0434782608695654105e+00 0.0000000000000000000e+00 +2.0588235294117644969e+00 2.3529411764705883137e+00 3.0434782608695654105e+00 3.2608695652173915747e+00 0.0000000000000000000e+00 +2.0588235294117644969e+00 2.3529411764705883137e+00 3.2608695652173915747e+00 3.4782608695652172948e+00 0.0000000000000000000e+00 +2.0588235294117644969e+00 2.3529411764705883137e+00 3.4782608695652172948e+00 3.6956521739130430149e+00 0.0000000000000000000e+00 +2.0588235294117644969e+00 2.3529411764705883137e+00 3.6956521739130430149e+00 3.9130434782608696231e+00 0.0000000000000000000e+00 +2.0588235294117644969e+00 2.3529411764705883137e+00 3.9130434782608696231e+00 4.1304347826086953432e+00 0.0000000000000000000e+00 +2.0588235294117644969e+00 2.3529411764705883137e+00 4.1304347826086953432e+00 4.3478260869565215074e+00 0.0000000000000000000e+00 +2.0588235294117644969e+00 2.3529411764705883137e+00 4.3478260869565215074e+00 4.5652173913043476716e+00 0.0000000000000000000e+00 +2.0588235294117644969e+00 2.3529411764705883137e+00 4.5652173913043476716e+00 4.7826086956521738358e+00 0.0000000000000000000e+00 +2.0588235294117644969e+00 2.3529411764705883137e+00 4.7826086956521738358e+00 5.0000000000000000000e+00 0.0000000000000000000e+00 + +2.3529411764705883137e+00 2.6470588235294116863e+00 0.0000000000000000000e+00 2.1739130434782608092e-01 0.0000000000000000000e+00 +2.3529411764705883137e+00 2.6470588235294116863e+00 2.1739130434782608092e-01 4.3478260869565216185e-01 0.0000000000000000000e+00 +2.3529411764705883137e+00 2.6470588235294116863e+00 4.3478260869565216185e-01 6.5217391304347827052e-01 0.0000000000000000000e+00 +2.3529411764705883137e+00 2.6470588235294116863e+00 6.5217391304347827052e-01 8.6956521739130432369e-01 0.0000000000000000000e+00 +2.3529411764705883137e+00 2.6470588235294116863e+00 8.6956521739130432369e-01 1.0869565217391303769e+00 0.0000000000000000000e+00 +2.3529411764705883137e+00 2.6470588235294116863e+00 1.0869565217391303769e+00 1.3043478260869565410e+00 0.0000000000000000000e+00 +2.3529411764705883137e+00 2.6470588235294116863e+00 1.3043478260869565410e+00 1.5217391304347827052e+00 0.0000000000000000000e+00 +2.3529411764705883137e+00 2.6470588235294116863e+00 1.5217391304347827052e+00 1.7391304347826086474e+00 0.0000000000000000000e+00 +2.3529411764705883137e+00 2.6470588235294116863e+00 1.7391304347826086474e+00 1.9565217391304348116e+00 0.0000000000000000000e+00 +2.3529411764705883137e+00 2.6470588235294116863e+00 1.9565217391304348116e+00 2.1739130434782607537e+00 0.0000000000000000000e+00 +2.3529411764705883137e+00 2.6470588235294116863e+00 2.1739130434782607537e+00 2.3913043478260869179e+00 0.0000000000000000000e+00 +2.3529411764705883137e+00 2.6470588235294116863e+00 2.3913043478260869179e+00 2.6086956521739130821e+00 0.0000000000000000000e+00 +2.3529411764705883137e+00 2.6470588235294116863e+00 2.6086956521739130821e+00 2.8260869565217388022e+00 0.0000000000000000000e+00 +2.3529411764705883137e+00 2.6470588235294116863e+00 2.8260869565217388022e+00 3.0434782608695654105e+00 0.0000000000000000000e+00 +2.3529411764705883137e+00 2.6470588235294116863e+00 3.0434782608695654105e+00 3.2608695652173915747e+00 0.0000000000000000000e+00 +2.3529411764705883137e+00 2.6470588235294116863e+00 3.2608695652173915747e+00 3.4782608695652172948e+00 0.0000000000000000000e+00 +2.3529411764705883137e+00 2.6470588235294116863e+00 3.4782608695652172948e+00 3.6956521739130430149e+00 0.0000000000000000000e+00 +2.3529411764705883137e+00 2.6470588235294116863e+00 3.6956521739130430149e+00 3.9130434782608696231e+00 0.0000000000000000000e+00 +2.3529411764705883137e+00 2.6470588235294116863e+00 3.9130434782608696231e+00 4.1304347826086953432e+00 0.0000000000000000000e+00 +2.3529411764705883137e+00 2.6470588235294116863e+00 4.1304347826086953432e+00 4.3478260869565215074e+00 0.0000000000000000000e+00 +2.3529411764705883137e+00 2.6470588235294116863e+00 4.3478260869565215074e+00 4.5652173913043476716e+00 0.0000000000000000000e+00 +2.3529411764705883137e+00 2.6470588235294116863e+00 4.5652173913043476716e+00 4.7826086956521738358e+00 0.0000000000000000000e+00 +2.3529411764705883137e+00 2.6470588235294116863e+00 4.7826086956521738358e+00 5.0000000000000000000e+00 0.0000000000000000000e+00 + +2.6470588235294116863e+00 2.9411764705882355031e+00 0.0000000000000000000e+00 2.1739130434782608092e-01 0.0000000000000000000e+00 +2.6470588235294116863e+00 2.9411764705882355031e+00 2.1739130434782608092e-01 4.3478260869565216185e-01 0.0000000000000000000e+00 +2.6470588235294116863e+00 2.9411764705882355031e+00 4.3478260869565216185e-01 6.5217391304347827052e-01 0.0000000000000000000e+00 +2.6470588235294116863e+00 2.9411764705882355031e+00 6.5217391304347827052e-01 8.6956521739130432369e-01 0.0000000000000000000e+00 +2.6470588235294116863e+00 2.9411764705882355031e+00 8.6956521739130432369e-01 1.0869565217391303769e+00 0.0000000000000000000e+00 +2.6470588235294116863e+00 2.9411764705882355031e+00 1.0869565217391303769e+00 1.3043478260869565410e+00 0.0000000000000000000e+00 +2.6470588235294116863e+00 2.9411764705882355031e+00 1.3043478260869565410e+00 1.5217391304347827052e+00 0.0000000000000000000e+00 +2.6470588235294116863e+00 2.9411764705882355031e+00 1.5217391304347827052e+00 1.7391304347826086474e+00 0.0000000000000000000e+00 +2.6470588235294116863e+00 2.9411764705882355031e+00 1.7391304347826086474e+00 1.9565217391304348116e+00 0.0000000000000000000e+00 +2.6470588235294116863e+00 2.9411764705882355031e+00 1.9565217391304348116e+00 2.1739130434782607537e+00 0.0000000000000000000e+00 +2.6470588235294116863e+00 2.9411764705882355031e+00 2.1739130434782607537e+00 2.3913043478260869179e+00 0.0000000000000000000e+00 +2.6470588235294116863e+00 2.9411764705882355031e+00 2.3913043478260869179e+00 2.6086956521739130821e+00 0.0000000000000000000e+00 +2.6470588235294116863e+00 2.9411764705882355031e+00 2.6086956521739130821e+00 2.8260869565217388022e+00 0.0000000000000000000e+00 +2.6470588235294116863e+00 2.9411764705882355031e+00 2.8260869565217388022e+00 3.0434782608695654105e+00 0.0000000000000000000e+00 +2.6470588235294116863e+00 2.9411764705882355031e+00 3.0434782608695654105e+00 3.2608695652173915747e+00 0.0000000000000000000e+00 +2.6470588235294116863e+00 2.9411764705882355031e+00 3.2608695652173915747e+00 3.4782608695652172948e+00 0.0000000000000000000e+00 +2.6470588235294116863e+00 2.9411764705882355031e+00 3.4782608695652172948e+00 3.6956521739130430149e+00 0.0000000000000000000e+00 +2.6470588235294116863e+00 2.9411764705882355031e+00 3.6956521739130430149e+00 3.9130434782608696231e+00 0.0000000000000000000e+00 +2.6470588235294116863e+00 2.9411764705882355031e+00 3.9130434782608696231e+00 4.1304347826086953432e+00 0.0000000000000000000e+00 +2.6470588235294116863e+00 2.9411764705882355031e+00 4.1304347826086953432e+00 4.3478260869565215074e+00 0.0000000000000000000e+00 +2.6470588235294116863e+00 2.9411764705882355031e+00 4.3478260869565215074e+00 4.5652173913043476716e+00 0.0000000000000000000e+00 +2.6470588235294116863e+00 2.9411764705882355031e+00 4.5652173913043476716e+00 4.7826086956521738358e+00 0.0000000000000000000e+00 +2.6470588235294116863e+00 2.9411764705882355031e+00 4.7826086956521738358e+00 5.0000000000000000000e+00 0.0000000000000000000e+00 + +2.9411764705882355031e+00 3.2352941176470588758e+00 0.0000000000000000000e+00 2.1739130434782608092e-01 0.0000000000000000000e+00 +2.9411764705882355031e+00 3.2352941176470588758e+00 2.1739130434782608092e-01 4.3478260869565216185e-01 0.0000000000000000000e+00 +2.9411764705882355031e+00 3.2352941176470588758e+00 4.3478260869565216185e-01 6.5217391304347827052e-01 0.0000000000000000000e+00 +2.9411764705882355031e+00 3.2352941176470588758e+00 6.5217391304347827052e-01 8.6956521739130432369e-01 0.0000000000000000000e+00 +2.9411764705882355031e+00 3.2352941176470588758e+00 8.6956521739130432369e-01 1.0869565217391303769e+00 0.0000000000000000000e+00 +2.9411764705882355031e+00 3.2352941176470588758e+00 1.0869565217391303769e+00 1.3043478260869565410e+00 0.0000000000000000000e+00 +2.9411764705882355031e+00 3.2352941176470588758e+00 1.3043478260869565410e+00 1.5217391304347827052e+00 0.0000000000000000000e+00 +2.9411764705882355031e+00 3.2352941176470588758e+00 1.5217391304347827052e+00 1.7391304347826086474e+00 0.0000000000000000000e+00 +2.9411764705882355031e+00 3.2352941176470588758e+00 1.7391304347826086474e+00 1.9565217391304348116e+00 0.0000000000000000000e+00 +2.9411764705882355031e+00 3.2352941176470588758e+00 1.9565217391304348116e+00 2.1739130434782607537e+00 0.0000000000000000000e+00 +2.9411764705882355031e+00 3.2352941176470588758e+00 2.1739130434782607537e+00 2.3913043478260869179e+00 0.0000000000000000000e+00 +2.9411764705882355031e+00 3.2352941176470588758e+00 2.3913043478260869179e+00 2.6086956521739130821e+00 0.0000000000000000000e+00 +2.9411764705882355031e+00 3.2352941176470588758e+00 2.6086956521739130821e+00 2.8260869565217388022e+00 0.0000000000000000000e+00 +2.9411764705882355031e+00 3.2352941176470588758e+00 2.8260869565217388022e+00 3.0434782608695654105e+00 0.0000000000000000000e+00 +2.9411764705882355031e+00 3.2352941176470588758e+00 3.0434782608695654105e+00 3.2608695652173915747e+00 0.0000000000000000000e+00 +2.9411764705882355031e+00 3.2352941176470588758e+00 3.2608695652173915747e+00 3.4782608695652172948e+00 0.0000000000000000000e+00 +2.9411764705882355031e+00 3.2352941176470588758e+00 3.4782608695652172948e+00 3.6956521739130430149e+00 0.0000000000000000000e+00 +2.9411764705882355031e+00 3.2352941176470588758e+00 3.6956521739130430149e+00 3.9130434782608696231e+00 0.0000000000000000000e+00 +2.9411764705882355031e+00 3.2352941176470588758e+00 3.9130434782608696231e+00 4.1304347826086953432e+00 0.0000000000000000000e+00 +2.9411764705882355031e+00 3.2352941176470588758e+00 4.1304347826086953432e+00 4.3478260869565215074e+00 0.0000000000000000000e+00 +2.9411764705882355031e+00 3.2352941176470588758e+00 4.3478260869565215074e+00 4.5652173913043476716e+00 0.0000000000000000000e+00 +2.9411764705882355031e+00 3.2352941176470588758e+00 4.5652173913043476716e+00 4.7826086956521738358e+00 0.0000000000000000000e+00 +2.9411764705882355031e+00 3.2352941176470588758e+00 4.7826086956521738358e+00 5.0000000000000000000e+00 0.0000000000000000000e+00 + +3.2352941176470588758e+00 3.5294117647058826925e+00 0.0000000000000000000e+00 2.1739130434782608092e-01 0.0000000000000000000e+00 +3.2352941176470588758e+00 3.5294117647058826925e+00 2.1739130434782608092e-01 4.3478260869565216185e-01 0.0000000000000000000e+00 +3.2352941176470588758e+00 3.5294117647058826925e+00 4.3478260869565216185e-01 6.5217391304347827052e-01 0.0000000000000000000e+00 +3.2352941176470588758e+00 3.5294117647058826925e+00 6.5217391304347827052e-01 8.6956521739130432369e-01 0.0000000000000000000e+00 +3.2352941176470588758e+00 3.5294117647058826925e+00 8.6956521739130432369e-01 1.0869565217391303769e+00 0.0000000000000000000e+00 +3.2352941176470588758e+00 3.5294117647058826925e+00 1.0869565217391303769e+00 1.3043478260869565410e+00 0.0000000000000000000e+00 +3.2352941176470588758e+00 3.5294117647058826925e+00 1.3043478260869565410e+00 1.5217391304347827052e+00 0.0000000000000000000e+00 +3.2352941176470588758e+00 3.5294117647058826925e+00 1.5217391304347827052e+00 1.7391304347826086474e+00 0.0000000000000000000e+00 +3.2352941176470588758e+00 3.5294117647058826925e+00 1.7391304347826086474e+00 1.9565217391304348116e+00 0.0000000000000000000e+00 +3.2352941176470588758e+00 3.5294117647058826925e+00 1.9565217391304348116e+00 2.1739130434782607537e+00 0.0000000000000000000e+00 +3.2352941176470588758e+00 3.5294117647058826925e+00 2.1739130434782607537e+00 2.3913043478260869179e+00 0.0000000000000000000e+00 +3.2352941176470588758e+00 3.5294117647058826925e+00 2.3913043478260869179e+00 2.6086956521739130821e+00 0.0000000000000000000e+00 +3.2352941176470588758e+00 3.5294117647058826925e+00 2.6086956521739130821e+00 2.8260869565217388022e+00 0.0000000000000000000e+00 +3.2352941176470588758e+00 3.5294117647058826925e+00 2.8260869565217388022e+00 3.0434782608695654105e+00 0.0000000000000000000e+00 +3.2352941176470588758e+00 3.5294117647058826925e+00 3.0434782608695654105e+00 3.2608695652173915747e+00 0.0000000000000000000e+00 +3.2352941176470588758e+00 3.5294117647058826925e+00 3.2608695652173915747e+00 3.4782608695652172948e+00 0.0000000000000000000e+00 +3.2352941176470588758e+00 3.5294117647058826925e+00 3.4782608695652172948e+00 3.6956521739130430149e+00 0.0000000000000000000e+00 +3.2352941176470588758e+00 3.5294117647058826925e+00 3.6956521739130430149e+00 3.9130434782608696231e+00 0.0000000000000000000e+00 +3.2352941176470588758e+00 3.5294117647058826925e+00 3.9130434782608696231e+00 4.1304347826086953432e+00 0.0000000000000000000e+00 +3.2352941176470588758e+00 3.5294117647058826925e+00 4.1304347826086953432e+00 4.3478260869565215074e+00 0.0000000000000000000e+00 +3.2352941176470588758e+00 3.5294117647058826925e+00 4.3478260869565215074e+00 4.5652173913043476716e+00 0.0000000000000000000e+00 +3.2352941176470588758e+00 3.5294117647058826925e+00 4.5652173913043476716e+00 4.7826086956521738358e+00 0.0000000000000000000e+00 +3.2352941176470588758e+00 3.5294117647058826925e+00 4.7826086956521738358e+00 5.0000000000000000000e+00 0.0000000000000000000e+00 + +3.5294117647058826925e+00 3.8235294117647056211e+00 0.0000000000000000000e+00 2.1739130434782608092e-01 0.0000000000000000000e+00 +3.5294117647058826925e+00 3.8235294117647056211e+00 2.1739130434782608092e-01 4.3478260869565216185e-01 0.0000000000000000000e+00 +3.5294117647058826925e+00 3.8235294117647056211e+00 4.3478260869565216185e-01 6.5217391304347827052e-01 0.0000000000000000000e+00 +3.5294117647058826925e+00 3.8235294117647056211e+00 6.5217391304347827052e-01 8.6956521739130432369e-01 0.0000000000000000000e+00 +3.5294117647058826925e+00 3.8235294117647056211e+00 8.6956521739130432369e-01 1.0869565217391303769e+00 0.0000000000000000000e+00 +3.5294117647058826925e+00 3.8235294117647056211e+00 1.0869565217391303769e+00 1.3043478260869565410e+00 0.0000000000000000000e+00 +3.5294117647058826925e+00 3.8235294117647056211e+00 1.3043478260869565410e+00 1.5217391304347827052e+00 0.0000000000000000000e+00 +3.5294117647058826925e+00 3.8235294117647056211e+00 1.5217391304347827052e+00 1.7391304347826086474e+00 0.0000000000000000000e+00 +3.5294117647058826925e+00 3.8235294117647056211e+00 1.7391304347826086474e+00 1.9565217391304348116e+00 0.0000000000000000000e+00 +3.5294117647058826925e+00 3.8235294117647056211e+00 1.9565217391304348116e+00 2.1739130434782607537e+00 0.0000000000000000000e+00 +3.5294117647058826925e+00 3.8235294117647056211e+00 2.1739130434782607537e+00 2.3913043478260869179e+00 0.0000000000000000000e+00 +3.5294117647058826925e+00 3.8235294117647056211e+00 2.3913043478260869179e+00 2.6086956521739130821e+00 0.0000000000000000000e+00 +3.5294117647058826925e+00 3.8235294117647056211e+00 2.6086956521739130821e+00 2.8260869565217388022e+00 0.0000000000000000000e+00 +3.5294117647058826925e+00 3.8235294117647056211e+00 2.8260869565217388022e+00 3.0434782608695654105e+00 0.0000000000000000000e+00 +3.5294117647058826925e+00 3.8235294117647056211e+00 3.0434782608695654105e+00 3.2608695652173915747e+00 0.0000000000000000000e+00 +3.5294117647058826925e+00 3.8235294117647056211e+00 3.2608695652173915747e+00 3.4782608695652172948e+00 0.0000000000000000000e+00 +3.5294117647058826925e+00 3.8235294117647056211e+00 3.4782608695652172948e+00 3.6956521739130430149e+00 0.0000000000000000000e+00 +3.5294117647058826925e+00 3.8235294117647056211e+00 3.6956521739130430149e+00 3.9130434782608696231e+00 0.0000000000000000000e+00 +3.5294117647058826925e+00 3.8235294117647056211e+00 3.9130434782608696231e+00 4.1304347826086953432e+00 0.0000000000000000000e+00 +3.5294117647058826925e+00 3.8235294117647056211e+00 4.1304347826086953432e+00 4.3478260869565215074e+00 0.0000000000000000000e+00 +3.5294117647058826925e+00 3.8235294117647056211e+00 4.3478260869565215074e+00 4.5652173913043476716e+00 0.0000000000000000000e+00 +3.5294117647058826925e+00 3.8235294117647056211e+00 4.5652173913043476716e+00 4.7826086956521738358e+00 0.0000000000000000000e+00 +3.5294117647058826925e+00 3.8235294117647056211e+00 4.7826086956521738358e+00 5.0000000000000000000e+00 0.0000000000000000000e+00 + +3.8235294117647056211e+00 4.1176470588235289938e+00 0.0000000000000000000e+00 2.1739130434782608092e-01 0.0000000000000000000e+00 +3.8235294117647056211e+00 4.1176470588235289938e+00 2.1739130434782608092e-01 4.3478260869565216185e-01 0.0000000000000000000e+00 +3.8235294117647056211e+00 4.1176470588235289938e+00 4.3478260869565216185e-01 6.5217391304347827052e-01 0.0000000000000000000e+00 +3.8235294117647056211e+00 4.1176470588235289938e+00 6.5217391304347827052e-01 8.6956521739130432369e-01 0.0000000000000000000e+00 +3.8235294117647056211e+00 4.1176470588235289938e+00 8.6956521739130432369e-01 1.0869565217391303769e+00 0.0000000000000000000e+00 +3.8235294117647056211e+00 4.1176470588235289938e+00 1.0869565217391303769e+00 1.3043478260869565410e+00 0.0000000000000000000e+00 +3.8235294117647056211e+00 4.1176470588235289938e+00 1.3043478260869565410e+00 1.5217391304347827052e+00 0.0000000000000000000e+00 +3.8235294117647056211e+00 4.1176470588235289938e+00 1.5217391304347827052e+00 1.7391304347826086474e+00 0.0000000000000000000e+00 +3.8235294117647056211e+00 4.1176470588235289938e+00 1.7391304347826086474e+00 1.9565217391304348116e+00 0.0000000000000000000e+00 +3.8235294117647056211e+00 4.1176470588235289938e+00 1.9565217391304348116e+00 2.1739130434782607537e+00 0.0000000000000000000e+00 +3.8235294117647056211e+00 4.1176470588235289938e+00 2.1739130434782607537e+00 2.3913043478260869179e+00 0.0000000000000000000e+00 +3.8235294117647056211e+00 4.1176470588235289938e+00 2.3913043478260869179e+00 2.6086956521739130821e+00 0.0000000000000000000e+00 +3.8235294117647056211e+00 4.1176470588235289938e+00 2.6086956521739130821e+00 2.8260869565217388022e+00 0.0000000000000000000e+00 +3.8235294117647056211e+00 4.1176470588235289938e+00 2.8260869565217388022e+00 3.0434782608695654105e+00 0.0000000000000000000e+00 +3.8235294117647056211e+00 4.1176470588235289938e+00 3.0434782608695654105e+00 3.2608695652173915747e+00 0.0000000000000000000e+00 +3.8235294117647056211e+00 4.1176470588235289938e+00 3.2608695652173915747e+00 3.4782608695652172948e+00 0.0000000000000000000e+00 +3.8235294117647056211e+00 4.1176470588235289938e+00 3.4782608695652172948e+00 3.6956521739130430149e+00 0.0000000000000000000e+00 +3.8235294117647056211e+00 4.1176470588235289938e+00 3.6956521739130430149e+00 3.9130434782608696231e+00 0.0000000000000000000e+00 +3.8235294117647056211e+00 4.1176470588235289938e+00 3.9130434782608696231e+00 4.1304347826086953432e+00 0.0000000000000000000e+00 +3.8235294117647056211e+00 4.1176470588235289938e+00 4.1304347826086953432e+00 4.3478260869565215074e+00 0.0000000000000000000e+00 +3.8235294117647056211e+00 4.1176470588235289938e+00 4.3478260869565215074e+00 4.5652173913043476716e+00 0.0000000000000000000e+00 +3.8235294117647056211e+00 4.1176470588235289938e+00 4.5652173913043476716e+00 4.7826086956521738358e+00 0.0000000000000000000e+00 +3.8235294117647056211e+00 4.1176470588235289938e+00 4.7826086956521738358e+00 5.0000000000000000000e+00 0.0000000000000000000e+00 + +4.1176470588235289938e+00 4.4117647058823532547e+00 0.0000000000000000000e+00 2.1739130434782608092e-01 0.0000000000000000000e+00 +4.1176470588235289938e+00 4.4117647058823532547e+00 2.1739130434782608092e-01 4.3478260869565216185e-01 0.0000000000000000000e+00 +4.1176470588235289938e+00 4.4117647058823532547e+00 4.3478260869565216185e-01 6.5217391304347827052e-01 0.0000000000000000000e+00 +4.1176470588235289938e+00 4.4117647058823532547e+00 6.5217391304347827052e-01 8.6956521739130432369e-01 0.0000000000000000000e+00 +4.1176470588235289938e+00 4.4117647058823532547e+00 8.6956521739130432369e-01 1.0869565217391303769e+00 0.0000000000000000000e+00 +4.1176470588235289938e+00 4.4117647058823532547e+00 1.0869565217391303769e+00 1.3043478260869565410e+00 0.0000000000000000000e+00 +4.1176470588235289938e+00 4.4117647058823532547e+00 1.3043478260869565410e+00 1.5217391304347827052e+00 0.0000000000000000000e+00 +4.1176470588235289938e+00 4.4117647058823532547e+00 1.5217391304347827052e+00 1.7391304347826086474e+00 0.0000000000000000000e+00 +4.1176470588235289938e+00 4.4117647058823532547e+00 1.7391304347826086474e+00 1.9565217391304348116e+00 0.0000000000000000000e+00 +4.1176470588235289938e+00 4.4117647058823532547e+00 1.9565217391304348116e+00 2.1739130434782607537e+00 0.0000000000000000000e+00 +4.1176470588235289938e+00 4.4117647058823532547e+00 2.1739130434782607537e+00 2.3913043478260869179e+00 0.0000000000000000000e+00 +4.1176470588235289938e+00 4.4117647058823532547e+00 2.3913043478260869179e+00 2.6086956521739130821e+00 0.0000000000000000000e+00 +4.1176470588235289938e+00 4.4117647058823532547e+00 2.6086956521739130821e+00 2.8260869565217388022e+00 0.0000000000000000000e+00 +4.1176470588235289938e+00 4.4117647058823532547e+00 2.8260869565217388022e+00 3.0434782608695654105e+00 0.0000000000000000000e+00 +4.1176470588235289938e+00 4.4117647058823532547e+00 3.0434782608695654105e+00 3.2608695652173915747e+00 0.0000000000000000000e+00 +4.1176470588235289938e+00 4.4117647058823532547e+00 3.2608695652173915747e+00 3.4782608695652172948e+00 0.0000000000000000000e+00 +4.1176470588235289938e+00 4.4117647058823532547e+00 3.4782608695652172948e+00 3.6956521739130430149e+00 0.0000000000000000000e+00 +4.1176470588235289938e+00 4.4117647058823532547e+00 3.6956521739130430149e+00 3.9130434782608696231e+00 0.0000000000000000000e+00 +4.1176470588235289938e+00 4.4117647058823532547e+00 3.9130434782608696231e+00 4.1304347826086953432e+00 0.0000000000000000000e+00 +4.1176470588235289938e+00 4.4117647058823532547e+00 4.1304347826086953432e+00 4.3478260869565215074e+00 0.0000000000000000000e+00 +4.1176470588235289938e+00 4.4117647058823532547e+00 4.3478260869565215074e+00 4.5652173913043476716e+00 0.0000000000000000000e+00 +4.1176470588235289938e+00 4.4117647058823532547e+00 4.5652173913043476716e+00 4.7826086956521738358e+00 0.0000000000000000000e+00 +4.1176470588235289938e+00 4.4117647058823532547e+00 4.7826086956521738358e+00 5.0000000000000000000e+00 0.0000000000000000000e+00 + +4.4117647058823532547e+00 4.7058823529411766273e+00 0.0000000000000000000e+00 2.1739130434782608092e-01 0.0000000000000000000e+00 +4.4117647058823532547e+00 4.7058823529411766273e+00 2.1739130434782608092e-01 4.3478260869565216185e-01 0.0000000000000000000e+00 +4.4117647058823532547e+00 4.7058823529411766273e+00 4.3478260869565216185e-01 6.5217391304347827052e-01 0.0000000000000000000e+00 +4.4117647058823532547e+00 4.7058823529411766273e+00 6.5217391304347827052e-01 8.6956521739130432369e-01 0.0000000000000000000e+00 +4.4117647058823532547e+00 4.7058823529411766273e+00 8.6956521739130432369e-01 1.0869565217391303769e+00 0.0000000000000000000e+00 +4.4117647058823532547e+00 4.7058823529411766273e+00 1.0869565217391303769e+00 1.3043478260869565410e+00 0.0000000000000000000e+00 +4.4117647058823532547e+00 4.7058823529411766273e+00 1.3043478260869565410e+00 1.5217391304347827052e+00 0.0000000000000000000e+00 +4.4117647058823532547e+00 4.7058823529411766273e+00 1.5217391304347827052e+00 1.7391304347826086474e+00 0.0000000000000000000e+00 +4.4117647058823532547e+00 4.7058823529411766273e+00 1.7391304347826086474e+00 1.9565217391304348116e+00 0.0000000000000000000e+00 +4.4117647058823532547e+00 4.7058823529411766273e+00 1.9565217391304348116e+00 2.1739130434782607537e+00 0.0000000000000000000e+00 +4.4117647058823532547e+00 4.7058823529411766273e+00 2.1739130434782607537e+00 2.3913043478260869179e+00 0.0000000000000000000e+00 +4.4117647058823532547e+00 4.7058823529411766273e+00 2.3913043478260869179e+00 2.6086956521739130821e+00 0.0000000000000000000e+00 +4.4117647058823532547e+00 4.7058823529411766273e+00 2.6086956521739130821e+00 2.8260869565217388022e+00 0.0000000000000000000e+00 +4.4117647058823532547e+00 4.7058823529411766273e+00 2.8260869565217388022e+00 3.0434782608695654105e+00 0.0000000000000000000e+00 +4.4117647058823532547e+00 4.7058823529411766273e+00 3.0434782608695654105e+00 3.2608695652173915747e+00 0.0000000000000000000e+00 +4.4117647058823532547e+00 4.7058823529411766273e+00 3.2608695652173915747e+00 3.4782608695652172948e+00 0.0000000000000000000e+00 +4.4117647058823532547e+00 4.7058823529411766273e+00 3.4782608695652172948e+00 3.6956521739130430149e+00 0.0000000000000000000e+00 +4.4117647058823532547e+00 4.7058823529411766273e+00 3.6956521739130430149e+00 3.9130434782608696231e+00 0.0000000000000000000e+00 +4.4117647058823532547e+00 4.7058823529411766273e+00 3.9130434782608696231e+00 4.1304347826086953432e+00 0.0000000000000000000e+00 +4.4117647058823532547e+00 4.7058823529411766273e+00 4.1304347826086953432e+00 4.3478260869565215074e+00 0.0000000000000000000e+00 +4.4117647058823532547e+00 4.7058823529411766273e+00 4.3478260869565215074e+00 4.5652173913043476716e+00 0.0000000000000000000e+00 +4.4117647058823532547e+00 4.7058823529411766273e+00 4.5652173913043476716e+00 4.7826086956521738358e+00 0.0000000000000000000e+00 +4.4117647058823532547e+00 4.7058823529411766273e+00 4.7826086956521738358e+00 5.0000000000000000000e+00 0.0000000000000000000e+00 + +4.7058823529411766273e+00 5.0000000000000000000e+00 0.0000000000000000000e+00 2.1739130434782608092e-01 0.0000000000000000000e+00 +4.7058823529411766273e+00 5.0000000000000000000e+00 2.1739130434782608092e-01 4.3478260869565216185e-01 0.0000000000000000000e+00 +4.7058823529411766273e+00 5.0000000000000000000e+00 4.3478260869565216185e-01 6.5217391304347827052e-01 0.0000000000000000000e+00 +4.7058823529411766273e+00 5.0000000000000000000e+00 6.5217391304347827052e-01 8.6956521739130432369e-01 0.0000000000000000000e+00 +4.7058823529411766273e+00 5.0000000000000000000e+00 8.6956521739130432369e-01 1.0869565217391303769e+00 0.0000000000000000000e+00 +4.7058823529411766273e+00 5.0000000000000000000e+00 1.0869565217391303769e+00 1.3043478260869565410e+00 0.0000000000000000000e+00 +4.7058823529411766273e+00 5.0000000000000000000e+00 1.3043478260869565410e+00 1.5217391304347827052e+00 0.0000000000000000000e+00 +4.7058823529411766273e+00 5.0000000000000000000e+00 1.5217391304347827052e+00 1.7391304347826086474e+00 0.0000000000000000000e+00 +4.7058823529411766273e+00 5.0000000000000000000e+00 1.7391304347826086474e+00 1.9565217391304348116e+00 0.0000000000000000000e+00 +4.7058823529411766273e+00 5.0000000000000000000e+00 1.9565217391304348116e+00 2.1739130434782607537e+00 0.0000000000000000000e+00 +4.7058823529411766273e+00 5.0000000000000000000e+00 2.1739130434782607537e+00 2.3913043478260869179e+00 0.0000000000000000000e+00 +4.7058823529411766273e+00 5.0000000000000000000e+00 2.3913043478260869179e+00 2.6086956521739130821e+00 0.0000000000000000000e+00 +4.7058823529411766273e+00 5.0000000000000000000e+00 2.6086956521739130821e+00 2.8260869565217388022e+00 0.0000000000000000000e+00 +4.7058823529411766273e+00 5.0000000000000000000e+00 2.8260869565217388022e+00 3.0434782608695654105e+00 0.0000000000000000000e+00 +4.7058823529411766273e+00 5.0000000000000000000e+00 3.0434782608695654105e+00 3.2608695652173915747e+00 0.0000000000000000000e+00 +4.7058823529411766273e+00 5.0000000000000000000e+00 3.2608695652173915747e+00 3.4782608695652172948e+00 0.0000000000000000000e+00 +4.7058823529411766273e+00 5.0000000000000000000e+00 3.4782608695652172948e+00 3.6956521739130430149e+00 0.0000000000000000000e+00 +4.7058823529411766273e+00 5.0000000000000000000e+00 3.6956521739130430149e+00 3.9130434782608696231e+00 0.0000000000000000000e+00 +4.7058823529411766273e+00 5.0000000000000000000e+00 3.9130434782608696231e+00 4.1304347826086953432e+00 0.0000000000000000000e+00 +4.7058823529411766273e+00 5.0000000000000000000e+00 4.1304347826086953432e+00 4.3478260869565215074e+00 0.0000000000000000000e+00 +4.7058823529411766273e+00 5.0000000000000000000e+00 4.3478260869565215074e+00 4.5652173913043476716e+00 0.0000000000000000000e+00 +4.7058823529411766273e+00 5.0000000000000000000e+00 4.5652173913043476716e+00 4.7826086956521738358e+00 0.0000000000000000000e+00 +4.7058823529411766273e+00 5.0000000000000000000e+00 4.7826086956521738358e+00 5.0000000000000000000e+00 0.0000000000000000000e+00 + diff --git a/gsl-2.5/histogram/test1d.c b/gsl-2.5/histogram/test1d.c new file mode 100644 index 00000000..b7f3dee8 --- /dev/null +++ b/gsl-2.5/histogram/test1d.c @@ -0,0 +1,483 @@ +/* histogram/test.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include + +#define N 397 +#define NR 10 + +void +test1d (void) +{ + double xr[NR + 1] = + {0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0}; + + gsl_histogram *h, *h1, *hr, *g; + size_t i, j; + + gsl_ieee_env_setup (); + + h = gsl_histogram_calloc (N); + h1 = gsl_histogram_calloc (N); + g = gsl_histogram_calloc (N); + + gsl_test (h->range == 0, "gsl_histogram_alloc returns valid range pointer"); + gsl_test (h->bin == 0, "gsl_histogram_alloc returns valid bin pointer"); + gsl_test (h->n != N, "gsl_histogram_alloc returns valid size"); + + + hr = gsl_histogram_calloc_range (NR, xr); + + gsl_test (hr->range == 0, "gsl_histogram_calloc_range returns valid range pointer"); + gsl_test (hr->bin == 0, "gsl_histogram_calloc_range returns valid bin pointer"); + gsl_test (hr->n != NR, "gsl_histogram_calloc_range returns valid size"); + + { + int status = 0; + for (i = 0; i <= NR; i++) + { + if (hr->range[i] != xr[i]) + { + status = 1; + } + }; + + gsl_test (status, "gsl_histogram_calloc_range creates range"); + } + + for (i = 0; i <= NR; i++) + { + hr->range[i] = 0.0; + } + + { + int status = gsl_histogram_set_ranges (hr, xr, NR+1); + + for (i = 0; i <= NR; i++) + { + if (hr->range[i] != xr[i]) + { + status = 1; + } + }; + + gsl_test (status, "gsl_histogram_set_range sets range"); + } + + + for (i = 0; i < N; i++) + { + gsl_histogram_accumulate (h, (double) i, (double) i); + }; + + { + int status = 0; + + for (i = 0; i < N; i++) + { + if (h->bin[i] != (double) i) + { + status = 1; + } + }; + + gsl_test (status, "gsl_histogram_accumulate writes into array"); + } + + + { + int status = 0; + + for (i = 0; i < N; i++) + { + if (gsl_histogram_get (h, i) != i) + status = 1; + }; + gsl_test (status, "gsl_histogram_get reads from array"); + } + + for (i = 0; i <= N; i++) + { + h1->range[i] = 100.0 + i; + } + + gsl_histogram_memcpy (h1, h); + + { + int status = 0; + for (i = 0; i <= N; i++) + { + if (h1->range[i] != h->range[i]) + status = 1; + }; + gsl_test (status, "gsl_histogram_memcpy copies bin ranges"); + } + + { + int status = 0; + for (i = 0; i < N; i++) + { + if (gsl_histogram_get (h1, i) != gsl_histogram_get (h, i)) + status = 1; + }; + gsl_test (status, "gsl_histogram_memcpy copies bin values"); + } + + gsl_histogram_free (h1); + + h1 = gsl_histogram_clone (h); + + { + int status = 0; + for (i = 0; i <= N; i++) + { + if (h1->range[i] != h->range[i]) + status = 1; + }; + gsl_test (status, "gsl_histogram_clone copies bin ranges"); + } + + { + int status = 0; + for (i = 0; i < N; i++) + { + if (gsl_histogram_get (h1, i) != gsl_histogram_get (h, i)) + status = 1; + }; + gsl_test (status, "gsl_histogram_clone copies bin values"); + } + + gsl_histogram_reset (h); + + { + int status = 0; + + for (i = 0; i < N; i++) + { + if (h->bin[i] != 0) + status = 1; + } + gsl_test (status, "gsl_histogram_reset zeros array"); + } + + + { + int status = 0; + + for (i = 0; i < N; i++) + { + gsl_histogram_increment (h, (double) i); + + for (j = 0; j <= i; j++) + { + if (h->bin[j] != 1) + { + status = 1; + } + } + + for (j = i + 1; j < N; j++) + { + if (h->bin[j] != 0) + { + status = 1; + } + } + } + + gsl_test (status, "gsl_histogram_increment increases bin value"); + } + + { + int status = 0; + for (i = 0; i < N; i++) + { + double x0 = 0, x1 = 0; + + gsl_histogram_get_range (h, i, &x0, &x1); + + if (x0 != i || x1 != i + 1) + { + status = 1; + } + } + gsl_test (status, "gsl_histogram_getbinrange returns bin range"); + } + + { + int status = 0; + if (gsl_histogram_max (h) != N) + status = 1; + gsl_test (status, "gsl_histogram_max returns maximum"); + } + + { + int status = 0; + if (gsl_histogram_min (h) != 0) + status = 1; + gsl_test (status, "gsl_histogram_min returns minimum"); + } + + { + int status = 0; + if (gsl_histogram_bins (h) != N) + status = 1; + gsl_test (status, "gsl_histogram_bins returns number of bins"); + } + + h->bin[2] = 123456.0; + h->bin[4] = -654321; + + { + double max = gsl_histogram_max_val (h); + gsl_test (max != 123456.0, "gsl_histogram_max_val finds maximum value"); + } + + { + double min = gsl_histogram_min_val (h); + gsl_test (min != -654321.0, "gsl_histogram_min_val finds minimum value"); + } + + { + size_t imax = gsl_histogram_max_bin (h); + gsl_test (imax != 2, "gsl_histogram_max_bin finds maximum value bin"); + } + + { + size_t imin = gsl_histogram_min_bin (h); + gsl_test (imin != 4, "gsl_histogram_min_bin find minimum value bin"); + } + + for (i = 0; i < N; i++) + { + h->bin[i] = i + 27; + g->bin[i] = (i + 27) * (i + 1); + } + + { + double sum=gsl_histogram_sum (h); + gsl_test(sum != N*27+((N-1)*N)/2, "gsl_histogram_sum sums all bin values"); + } + + gsl_histogram_memcpy (h1, g); + gsl_histogram_add (h1, h); + + { + int status = 0; + for (i = 0; i < N; i++) + { + if (h1->bin[i] != g->bin[i] + h->bin[i]) + status = 1; + } + gsl_test (status, "gsl_histogram_add histogram addition"); + } + + gsl_histogram_memcpy (h1, g); + gsl_histogram_sub (h1, h); + + { + int status = 0; + for (i = 0; i < N; i++) + { + if (h1->bin[i] != g->bin[i] - h->bin[i]) + status = 1; + } + gsl_test (status, "gsl_histogram_sub histogram subtraction"); + } + + + gsl_histogram_memcpy (h1, g); + gsl_histogram_mul (h1, h); + + { + int status = 0; + for (i = 0; i < N; i++) + { + if (h1->bin[i] != g->bin[i] * h->bin[i]) + status = 1; + } + gsl_test (status, "gsl_histogram_mul histogram multiplication"); + } + + + gsl_histogram_memcpy (h1, g); + gsl_histogram_div (h1, h); + + { + int status = 0; + for (i = 0; i < N; i++) + { + if (h1->bin[i] != g->bin[i] / h->bin[i]) + status = 1; + } + gsl_test (status, "gsl_histogram_div histogram division"); + } + + gsl_histogram_memcpy (h1, g); + gsl_histogram_scale (h1, 0.5); + + { + int status = 0; + for (i = 0; i < N; i++) + { + if (h1->bin[i] != 0.5 * g->bin[i]) + status = 1; + } + gsl_test (status, "gsl_histogram_scale histogram scaling"); + } + + gsl_histogram_memcpy (h1, g); + gsl_histogram_shift (h1, 0.25); + + { + int status = 0; + for (i = 0; i < N; i++) + { + if (h1->bin[i] != 0.25 + g->bin[i]) + status = 1; + } + gsl_test (status, "gsl_histogram_shift histogram shift"); + } + + + gsl_histogram_free (h); /* free whatever is in h */ + + h = gsl_histogram_calloc_uniform (N, 0.0, 1.0); + + gsl_test (h->range == 0, + "gsl_histogram_calloc_uniform returns valid range pointer"); + gsl_test (h->bin == 0, + "gsl_histogram_calloc_uniform returns valid bin pointer"); + gsl_test (h->n != N, + "gsl_histogram_calloc_uniform returns valid size"); + + gsl_histogram_accumulate (h, 0.0, 1.0); + gsl_histogram_accumulate (h, 0.1, 2.0); + gsl_histogram_accumulate (h, 0.2, 3.0); + gsl_histogram_accumulate (h, 0.3, 4.0); + + { + size_t i1, i2, i3, i4; + double expected; + int status = gsl_histogram_find (h, 0.0, &i1); + status = gsl_histogram_find (h, 0.1, &i2); + status = gsl_histogram_find (h, 0.2, &i3); + status = gsl_histogram_find (h, 0.3, &i4); + + for (i = 0; i < N; i++) + { + if (i == i1) + { + expected = 1.0; + } + else if (i == i2) + { + expected = 2.0; + } + else if (i == i3) + { + expected = 3.0; + } + else if (i == i4) + { + expected = 4.0; + } + else + { + expected = 0.0; + } + + if (h->bin[i] != expected) + { + status = 1; + } + + } + gsl_test (status, "gsl_histogram_find returns index"); + } + + + { + FILE *f = fopen ("test.txt", "w"); + gsl_histogram_fprintf (f, h, "%.19e", "%.19e"); + fclose (f); + } + + { + FILE *f = fopen ("test.txt", "r"); + gsl_histogram *hh = gsl_histogram_calloc (N); + int status = 0; + + gsl_histogram_fscanf (f, hh); + + for (i = 0; i < N; i++) + { + if (h->range[i] != hh->range[i]) + status = 1; + if (h->bin[i] != hh->bin[i]) + status = 1; + } + if (h->range[N] != hh->range[N]) + status = 1; + + gsl_test (status, "gsl_histogram_fprintf and fscanf"); + + gsl_histogram_free (hh); + fclose (f); + } + + { + FILE *f = fopen ("test.dat", "wb"); + gsl_histogram_fwrite (f, h); + fclose (f); + } + + { + FILE *f = fopen ("test.dat", "rb"); + gsl_histogram *hh = gsl_histogram_calloc (N); + int status = 0; + + gsl_histogram_fread (f, hh); + + for (i = 0; i < N; i++) + { + if (h->range[i] != hh->range[i]) + status = 1; + if (h->bin[i] != hh->bin[i]) + status = 1; + } + if (h->range[N] != hh->range[N]) + status = 1; + + gsl_test (status, "gsl_histogram_fwrite and fread"); + + gsl_histogram_free (hh); + fclose (f); + } + + gsl_histogram_free (h); + gsl_histogram_free (g); + gsl_histogram_free (h1); + gsl_histogram_free (hr); +} diff --git a/gsl-2.5/histogram/test1d_resample.c b/gsl-2.5/histogram/test1d_resample.c new file mode 100644 index 00000000..cc0ee495 --- /dev/null +++ b/gsl-2.5/histogram/test1d_resample.c @@ -0,0 +1,99 @@ +/* histogram/test1d_resample.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include + +#include "urand.c" + +void +test1d_resample (void) +{ + size_t i; + int status = 0; + + gsl_histogram *h; + + gsl_ieee_env_setup (); + + h = gsl_histogram_calloc_uniform (10, 0.0, 1.0); + + gsl_histogram_increment (h, 0.1); + gsl_histogram_increment (h, 0.2); + gsl_histogram_increment (h, 0.2); + gsl_histogram_increment (h, 0.3); + + { + gsl_histogram_pdf *p = gsl_histogram_pdf_alloc (10); + + gsl_histogram *hh = gsl_histogram_calloc_uniform (100, 0.0, 1.0); + + gsl_histogram_pdf_init (p, h); + + for (i = 0; i < 100000; i++) + { + double u = urand(); + double x = gsl_histogram_pdf_sample (p, u); + gsl_histogram_increment (hh, x); + } + + for (i = 0; i < 100; i++) + { + double y = gsl_histogram_get (hh, i) / 2500; + double x, xmax; + size_t k; + double ya; + + gsl_histogram_get_range (hh, i, &x, &xmax); + + gsl_histogram_find (h, x, &k); + ya = gsl_histogram_get (h, k); + + if (ya == 0) + { + if (y != 0) + { + printf ("%d: %g vs %g\n", (int) i, y, ya); + status = 1; + } + } + else + { + double err = 1 / sqrt (gsl_histogram_get (hh, i)); + double sigma = fabs ((y - ya) / (ya * err)); + if (sigma > 3) + { + status = 1; + printf ("%g vs %g err=%g sigma=%g\n", y, ya, err, sigma); + } + } + } + + gsl_histogram_pdf_free (p) ; + gsl_histogram_free (hh); + + gsl_test (status, "gsl_histogram_pdf_sample within statistical errors"); + } + + gsl_histogram_free (h); +} diff --git a/gsl-2.5/histogram/test1d_trap.c b/gsl-2.5/histogram/test1d_trap.c new file mode 100644 index 00000000..5a6e3a28 --- /dev/null +++ b/gsl-2.5/histogram/test1d_trap.c @@ -0,0 +1,130 @@ +/* histogram/test_trap.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include +#include + +#define N 397 + +static void my_error_handler (const char *reason, const char *file, + int line, int err); +static int status = 0; + +void +test1d_trap (void) +{ + gsl_histogram *h; + double result, lower, upper; + size_t i; + + gsl_set_error_handler (&my_error_handler); + + gsl_ieee_env_setup (); + + status = 0; + h = gsl_histogram_calloc (0); + gsl_test (!status, "gsl_histogram_calloc traps zero-length histogram"); + gsl_test (h != 0, + "gsl_histogram_calloc returns NULL for zero-length histogram"); + + status = 0; + h = gsl_histogram_calloc_uniform (0, 0.0, 1.0); + gsl_test (!status, + "gsl_histogram_calloc_uniform traps zero-length histogram"); + gsl_test (h != 0, + "gsl_histogram_calloc_uniform returns NULL for zero-length histogram"); + + status = 0; + h = gsl_histogram_calloc_uniform (10, 1.0, 1.0); + gsl_test (!status, + "gsl_histogram_calloc_uniform traps equal endpoints"); + gsl_test (h != 0, + "gsl_histogram_calloc_uniform returns NULL for equal endpoints"); + + status = 0; + h = gsl_histogram_calloc_uniform (10, 2.0, 1.0); + gsl_test (!status, + "gsl_histogram_calloc_uniform traps invalid range"); + gsl_test (h != 0, + "gsl_histogram_calloc_uniform returns NULL for invalid range"); + + h = gsl_histogram_calloc_uniform (N, 0.0, 1.0); + + status = gsl_histogram_accumulate (h, 1.0, 10.0); + gsl_test (status != GSL_EDOM, "gsl_histogram_accumulate traps x at xmax"); + + status = gsl_histogram_accumulate (h, 2.0, 100.0); + gsl_test (status != GSL_EDOM, "gsl_histogram_accumulate traps x above xmax"); + + status = gsl_histogram_accumulate (h, -1.0, 1000.0); + gsl_test (status != GSL_EDOM, "gsl_histogram_accumulate traps x below xmin"); + + status = gsl_histogram_increment (h, 1.0); + gsl_test (status != GSL_EDOM, "gsl_histogram_increment traps x at xmax"); + + status = gsl_histogram_increment (h, 2.0); + gsl_test (status != GSL_EDOM, "gsl_histogram_increment traps x above xmax"); + + status = gsl_histogram_increment (h, -1.0); + gsl_test (status != GSL_EDOM, "gsl_histogram_increment traps x below xmin"); + + + result = gsl_histogram_get (h, N); + gsl_test (result != 0, "gsl_histogram_get traps index at n"); + + result = gsl_histogram_get (h, N + 1); + gsl_test (result != 0, "gsl_histogram_get traps index above n"); + + status = gsl_histogram_get_range (h, N, &lower, &upper); + gsl_test (status != GSL_EDOM, + "gsl_histogram_get_range traps index at n"); + + status = gsl_histogram_get_range (h, N + 1, &lower, &upper); + gsl_test (status != GSL_EDOM, + "gsl_histogram_get_range traps index above n"); + + + status = 0; + gsl_histogram_find (h, -0.01, &i); + gsl_test (status != GSL_EDOM, "gsl_histogram_find traps x below xmin"); + + status = 0; + gsl_histogram_find (h, 1.0, &i); + gsl_test (status != GSL_EDOM, "gsl_histogram_find traps x at xmax"); + + status = 0; + gsl_histogram_find (h, 1.1, &i); + gsl_test (status != GSL_EDOM, "gsl_histogram_find traps x above xmax"); + + gsl_histogram_free (h); +} + + +static void +my_error_handler (const char *reason, const char *file, int line, int err) +{ + if (0) + printf ("(caught [%s:%d: %s (%d)])\n", file, line, reason, err); + status = 1; +} diff --git a/gsl-2.5/histogram/test2d.c b/gsl-2.5/histogram/test2d.c new file mode 100644 index 00000000..36daf6a6 --- /dev/null +++ b/gsl-2.5/histogram/test2d.c @@ -0,0 +1,753 @@ +/* histogram/test2d.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define M 107 +#define N 239 +#define M1 17 +#define N1 23 +#define MR 10 +#define NR 5 + +void +test2d (void) +{ + double xr[MR + 1] = + { 0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0 }; + + double yr[NR + 1] = { 90.0, 91.0, 92.0, 93.0, 94.0, 95.0 }; + + gsl_histogram2d *h, *h1, *g, *hr; + size_t i, j, k; + + gsl_ieee_env_setup (); + + h = gsl_histogram2d_calloc (M, N); + h1 = gsl_histogram2d_calloc (M, N); + g = gsl_histogram2d_calloc (M, N); + + gsl_test (h->xrange == 0, + "gsl_histogram2d_calloc returns valid xrange pointer"); + gsl_test (h->yrange == 0, + "gsl_histogram2d_calloc returns valid yrange pointer"); + gsl_test (h->bin == 0, "gsl_histogram2d_calloc returns valid bin pointer"); + + gsl_test (h->nx != M, "gsl_histogram2d_calloc returns valid nx"); + gsl_test (h->ny != N, "gsl_histogram2d_calloc returns valid ny"); + + hr = gsl_histogram2d_calloc_range (MR, NR, xr, yr); + + gsl_test (hr->xrange == 0, + "gsl_histogram2d_calloc_range returns valid xrange pointer"); + gsl_test (hr->yrange == 0, + "gsl_histogram2d_calloc_range returns valid yrange pointer"); + gsl_test (hr->bin == 0, + "gsl_histogram2d_calloc_range returns valid bin pointer"); + + gsl_test (hr->nx != MR, "gsl_histogram2d_calloc_range returns valid nx"); + gsl_test (hr->ny != NR, "gsl_histogram2d_calloc_range returns valid ny"); + + { + int status = 0; + for (i = 0; i <= MR; i++) + { + if (hr->xrange[i] != xr[i]) + { + status = 1; + } + }; + + gsl_test (status, + "gsl_histogram2d_calloc_range creates xrange"); + } + + { + int status = 0; + for (i = 0; i <= NR; i++) + { + if (hr->yrange[i] != yr[i]) + { + status = 1; + } + }; + + gsl_test (status, + "gsl_histogram2d_calloc_range creates yrange"); + } + + for (i = 0; i <= MR; i++) + { + hr->xrange[i] = 0.0; + } + + for (i = 0; i <= NR; i++) + { + hr->yrange[i] = 0.0; + } + + { + int status = gsl_histogram2d_set_ranges (hr, xr, MR + 1, yr, NR + 1); + + for (i = 0; i <= MR; i++) + { + if (hr->xrange[i] != xr[i]) + { + status = 1; + } + }; + + gsl_test (status, "gsl_histogram2d_set_ranges sets xrange"); + } + + { + int status = 0; + for (i = 0; i <= NR; i++) + { + if (hr->yrange[i] != yr[i]) + { + status = 1; + } + }; + + gsl_test (status, "gsl_histogram2d_set_ranges sets yrange"); + } + + + k = 0; + for (i = 0; i < M; i++) + { + for (j = 0; j < N; j++) + { + k++; + gsl_histogram2d_accumulate (h, (double) i, (double) j, (double) k); + }; + } + + { + int status = 0; + k = 0; + for (i = 0; i < M; i++) + { + for (j = 0; j < N; j++) + { + k++; + if (h->bin[i * N + j] != (double) k) + { + status = 1; + } + } + } + gsl_test (status, + "gsl_histogram2d_accumulate writes into array"); + } + + { + int status = 0; + k = 0; + for (i = 0; i < M; i++) + { + for (j = 0; j < N; j++) + { + k++; + if (gsl_histogram2d_get (h, i, j) != (double) k) + status = 1; + }; + } + gsl_test (status, "gsl_histogram2d_get reads from array"); + } + + for (i = 0; i <= M; i++) + { + h1->xrange[i] = 100.0 + i; + } + + for (i = 0; i <= N; i++) + { + h1->yrange[i] = 900.0 + i * i; + } + + gsl_histogram2d_memcpy (h1, h); + + { + int status = 0; + for (i = 0; i <= M; i++) + { + if (h1->xrange[i] != h->xrange[i]) + status = 1; + }; + gsl_test (status, "gsl_histogram2d_memcpy copies bin xranges"); + } + + { + int status = 0; + for (i = 0; i <= N; i++) + { + if (h1->yrange[i] != h->yrange[i]) + status = 1; + }; + gsl_test (status, "gsl_histogram2d_memcpy copies bin yranges"); + } + + { + int status = 0; + for (i = 0; i < M; i++) + { + for (j = 0; j < N; j++) + { + if (gsl_histogram2d_get (h1, i, j) != + gsl_histogram2d_get (h, i, j)) + status = 1; + } + } + gsl_test (status, "gsl_histogram2d_memcpy copies bin values"); + } + + gsl_histogram2d_free (h1); + + h1 = gsl_histogram2d_clone (h); + + { + int status = 0; + for (i = 0; i <= M; i++) + { + if (h1->xrange[i] != h->xrange[i]) + status = 1; + }; + gsl_test (status, "gsl_histogram2d_clone copies bin xranges"); + } + + { + int status = 0; + for (i = 0; i <= N; i++) + { + if (h1->yrange[i] != h->yrange[i]) + status = 1; + }; + gsl_test (status, "gsl_histogram2d_clone copies bin yranges"); + } + + { + int status = 0; + for (i = 0; i < M; i++) + { + for (j = 0; j < N; j++) + { + if (gsl_histogram2d_get (h1, i, j) != + gsl_histogram2d_get (h, i, j)) + status = 1; + } + } + gsl_test (status, "gsl_histogram2d_clone copies bin values"); + } + + + gsl_histogram2d_reset (h); + + { + int status = 0; + + for (i = 0; i < M * N; i++) + { + if (h->bin[i] != 0) + status = 1; + } + gsl_test (status, "gsl_histogram2d_reset zeros array"); + } + + gsl_histogram2d_free (h); + h = gsl_histogram2d_calloc (M1, N1); + + { + + int status = 0; + + for (i = 0; i < M1; i++) + { + for (j = 0; j < N1; j++) + { + gsl_histogram2d_increment (h, (double) i, (double) j); + + for (k = 0; k <= i * N1 + j; k++) + { + if (h->bin[k] != 1) + { + status = 1; + } + } + + for (k = i * N1 + j + 1; k < M1 * N1; k++) + { + if (h->bin[k] != 0) + { + status = 1; + } + } + } + } + gsl_test (status, "gsl_histogram2d_increment increases bin value"); + } + + gsl_histogram2d_free (h); + h = gsl_histogram2d_calloc (M, N); + + { + int status = 0; + for (i = 0; i < M; i++) + { + double x0 = 0, x1 = 0; + gsl_histogram2d_get_xrange (h, i, &x0, &x1); + + if (x0 != i || x1 != i + 1) + { + status = 1; + } + } + gsl_test (status, + "gsl_histogram2d_get_xlowerlimit and xupperlimit"); + } + + + { + int status = 0; + for (i = 0; i < N; i++) + { + double y0 = 0, y1 = 0; + gsl_histogram2d_get_yrange (h, i, &y0, &y1); + + if (y0 != i || y1 != i + 1) + { + status = 1; + } + } + gsl_test (status, + "gsl_histogram2d_get_ylowerlimit and yupperlimit"); + } + + + { + int status = 0; + if (gsl_histogram2d_xmax (h) != M) + status = 1; + gsl_test (status, "gsl_histogram2d_xmax"); + } + + { + int status = 0; + if (gsl_histogram2d_xmin (h) != 0) + status = 1; + gsl_test (status, "gsl_histogram2d_xmin"); + } + + { + int status = 0; + if (gsl_histogram2d_nx (h) != M) + status = 1; + gsl_test (status, "gsl_histogram2d_nx"); + } + + { + int status = 0; + if (gsl_histogram2d_ymax (h) != N) + status = 1; + gsl_test (status, "gsl_histogram2d_ymax"); + } + + { + int status = 0; + if (gsl_histogram2d_ymin (h) != 0) + status = 1; + gsl_test (status, "gsl_histogram2d_ymin"); + } + + { + int status = 0; + if (gsl_histogram2d_ny (h) != N) + status = 1; + gsl_test (status, "gsl_histogram2d_ny"); + } + + h->bin[3 * N + 2] = 123456.0; + h->bin[4 * N + 3] = -654321; + + { + double max = gsl_histogram2d_max_val (h); + gsl_test (max != 123456.0, "gsl_histogram2d_max_val finds maximum value"); + } + + { + double min = gsl_histogram2d_min_val (h); + gsl_test (min != -654321.0, + "gsl_histogram2d_min_val finds minimum value"); + } + + { + size_t imax, jmax; + gsl_histogram2d_max_bin (h, &imax, &jmax); + gsl_test (imax != 3 + || jmax != 2, + "gsl_histogram2d_max_bin finds maximum value bin"); + } + + { + size_t imin, jmin; + gsl_histogram2d_min_bin (h, &imin, &jmin); + gsl_test (imin != 4 + || jmin != 3, "gsl_histogram2d_min_bin find minimum value bin"); + } + + for (i = 0; i < M * N; i++) + { + h->bin[i] = i + 27; + g->bin[i] = (i + 27) * (i + 1); + } + + { + double sum = gsl_histogram2d_sum (h); + gsl_test (sum != N * M * 27 + ((N * M - 1) * N * M) / 2, + "gsl_histogram2d_sum sums all bin values"); + } + + { + /* first test... */ + const double xpos = 0.6; + const double ypos = 0.85; + double xmean; + double ymean; + size_t xbin; + size_t ybin; + gsl_histogram2d *h3 = gsl_histogram2d_alloc (M, N); + gsl_histogram2d_set_ranges_uniform (h3, 0, 1, 0, 1); + gsl_histogram2d_increment (h3, xpos, ypos); + gsl_histogram2d_find (h3, xpos, ypos, &xbin, &ybin); + xmean = gsl_histogram2d_xmean (h3); + ymean = gsl_histogram2d_ymean (h3); + + { + double expected_xmean = (h3->xrange[xbin] + h3->xrange[xbin + 1]) / 2.0; + double expected_ymean = (h3->yrange[ybin] + h3->yrange[ybin + 1]) / 2.0; + gsl_test_abs (xmean, expected_xmean, 100.0 * GSL_DBL_EPSILON, + "gsl_histogram2d_xmean"); + gsl_test_abs (ymean, expected_ymean, 100.0 * GSL_DBL_EPSILON, + "gsl_histogram2d_ymean"); + }; + gsl_histogram2d_free (h3); + } + + { + /* test it with bivariate normal distribution */ + const double xmean = 0.7; + const double ymean = 0.7; + const double xsigma = 0.1; + const double ysigma = 0.1; + const double correl = 0.5; + const double norm = + 10.0 / M_PI / xsigma / ysigma / sqrt (1.0 - correl * correl); + size_t xbin; + size_t ybin; + gsl_histogram2d *h3 = gsl_histogram2d_alloc (M, N); + gsl_histogram2d_set_ranges_uniform (h3, 0, 1, 0, 1); + /* initialize with 2d gauss pdf in two directions */ + for (xbin = 0; xbin < M; xbin++) + { + double xi = + ((h3->xrange[xbin] + h3->xrange[xbin + 1]) / 2.0 - xmean) / xsigma; + for (ybin = 0; ybin < N; ybin++) + { + double yi = + ((h3->yrange[ybin] + h3->yrange[ybin + 1]) / 2.0 - + ymean) / ysigma; + double prob = + norm * exp (-(xi * xi - 2.0 * correl * xi * yi + yi * yi) / + 2.0 / (1 - correl * correl)); + h3->bin[xbin * N + ybin] = prob; + } + } + { + double xs = gsl_histogram2d_xsigma (h3); + double ys = gsl_histogram2d_ysigma (h3); + /* evaluate results and compare with parameters */ + + gsl_test_abs (gsl_histogram2d_xmean (h3), xmean, 2.0/M, + "gsl_histogram2d_xmean histogram mean(x)"); + gsl_test_abs (gsl_histogram2d_ymean (h3), ymean, 2.0/N, + "gsl_histogram2d_ymean histogram mean(y)"); + gsl_test_abs (xs, xsigma, 2.0/M, + "gsl_histogram2d_xsigma histogram stdev(x)"); + gsl_test_abs (ys, ysigma, 2.0/N, + "gsl_histogram2d_ysigma histogram stdev(y)"); + gsl_test_abs (gsl_histogram2d_cov (h3) / xs / ys, correl, + 2.0/((M < N) ? M : N), + "gsl_histogram2d_cov histogram covariance"); + } + gsl_histogram2d_free (h3); + } + + gsl_histogram2d_memcpy (h1, g); + gsl_histogram2d_add (h1, h); + + { + int status = 0; + for (i = 0; i < M * N; i++) + { + if (h1->bin[i] != g->bin[i] + h->bin[i]) + status = 1; + } + gsl_test (status, "gsl_histogram2d_add histogram addition"); + } + + gsl_histogram2d_memcpy (h1, g); + gsl_histogram2d_sub (h1, h); + + { + int status = 0; + for (i = 0; i < M * N; i++) + { + if (h1->bin[i] != g->bin[i] - h->bin[i]) + status = 1; + } + gsl_test (status, "gsl_histogram2d_sub histogram subtraction"); + } + + + gsl_histogram2d_memcpy (h1, g); + gsl_histogram2d_mul (h1, h); + + { + int status = 0; + for (i = 0; i < M * N; i++) + { + if (h1->bin[i] != g->bin[i] * h->bin[i]) + status = 1; + } + gsl_test (status, "gsl_histogram2d_mul histogram multiplication"); + } + + gsl_histogram2d_memcpy (h1, g); + gsl_histogram2d_div (h1, h); + + { + int status = 0; + for (i = 0; i < M * N; i++) + { + if (h1->bin[i] != g->bin[i] / h->bin[i]) + status = 1; + } + gsl_test (status, "gsl_histogram2d_div histogram division"); + } + + gsl_histogram2d_memcpy (h1, g); + gsl_histogram2d_scale (h1, 0.5); + + { + int status = 0; + for (i = 0; i < M * N; i++) + { + if (h1->bin[i] != 0.5 * g->bin[i]) + status = 1; + } + gsl_test (status, "gsl_histogram2d_scale histogram scaling"); + } + + gsl_histogram2d_memcpy (h1, g); + gsl_histogram2d_shift (h1, 0.25); + + { + int status = 0; + for (i = 0; i < M * N; i++) + { + if (h1->bin[i] != 0.25 + g->bin[i]) + status = 1; + } + gsl_test (status, "gsl_histogram2d_shift histogram shift"); + } + + gsl_histogram2d_free (h); /* free whatever is in h */ + + h = gsl_histogram2d_calloc_uniform (M1, N1, 0.0, 5.0, 0.0, 5.0); + + gsl_test (h->xrange == 0, + "gsl_histogram2d_calloc_uniform returns valid range pointer"); + gsl_test (h->yrange == 0, + "gsl_histogram2d_calloc_uniform returns valid range pointer"); + gsl_test (h->bin == 0, + "gsl_histogram2d_calloc_uniform returns valid bin pointer"); + gsl_test (h->nx != M1, "gsl_histogram2d_calloc_uniform returns valid nx"); + gsl_test (h->ny != N1, "gsl_histogram2d_calloc_uniform returns valid ny"); + + gsl_histogram2d_accumulate (h, 0.0, 3.01, 1.0); + gsl_histogram2d_accumulate (h, 0.1, 2.01, 2.0); + gsl_histogram2d_accumulate (h, 0.2, 1.01, 3.0); + gsl_histogram2d_accumulate (h, 0.3, 0.01, 4.0); + + { + size_t i1, i2, i3, i4; + size_t j1, j2, j3, j4; + double expected; + int status; + status = gsl_histogram2d_find (h, 0.0, 3.01, &i1, &j1); + status = gsl_histogram2d_find (h, 0.1, 2.01, &i2, &j2); + status = gsl_histogram2d_find (h, 0.2, 1.01, &i3, &j3); + status = gsl_histogram2d_find (h, 0.3, 0.01, &i4, &j4); + + for (i = 0; i < M1; i++) + { + for (j = 0; j < N1; j++) + { + if (i == i1 && j == j1) + { + expected = 1.0; + } + else if (i == i2 && j == j2) + { + expected = 2.0; + } + else if (i == i3 && j == j3) + { + expected = 3.0; + } + else if (i == i4 && j == j4) + { + expected = 4.0; + } + else + { + expected = 0.0; + } + + if (h->bin[i * N1 + j] != expected) + { + status = 1; + } + } + } + gsl_test (status, "gsl_histogram2d_find returns index"); + } + + { + FILE *f = fopen ("test.txt", "w"); + gsl_histogram2d_fprintf (f, h, "%.19e", "%.19e"); + fclose (f); + } + + { + FILE *f = fopen ("test.txt", "r"); + gsl_histogram2d *hh = gsl_histogram2d_calloc (M1, N1); + int status = 0; + + gsl_histogram2d_fscanf (f, hh); + + for (i = 0; i <= M1; i++) + { + if (h->xrange[i] != hh->xrange[i]) + { + printf ("xrange[%d] : %g orig vs %g\n", + (int) i, h->xrange[i], hh->xrange[i]); + status = 1; + } + } + + for (j = 0; j <= N1; j++) + { + if (h->yrange[j] != hh->yrange[j]) + { + printf ("yrange[%d] : %g orig vs %g\n", + (int) j, h->yrange[j], hh->yrange[j]); + status = 1; + } + } + + for (i = 0; i < M1 * N1; i++) + { + if (h->bin[i] != hh->bin[i]) + { + printf ("bin[%d] : %g orig vs %g\n", + (int) i, h->bin[i], hh->bin[i]); + status = 1; + } + } + + gsl_test (status, "gsl_histogram2d_fprintf and fscanf"); + + gsl_histogram2d_free (hh); + fclose (f); + } + + { + FILE *f = fopen ("test.dat", "wb"); + gsl_histogram2d_fwrite (f, h); + fclose (f); + } + + { + FILE *f = fopen ("test.dat", "rb"); + gsl_histogram2d *hh = gsl_histogram2d_calloc (M1, N1); + int status = 0; + + gsl_histogram2d_fread (f, hh); + + for (i = 0; i <= M1; i++) + { + if (h->xrange[i] != hh->xrange[i]) + { + printf ("xrange[%d] : %g orig vs %g\n", + (int) i, h->xrange[i], hh->xrange[i]); + status = 1; + } + } + + for (j = 0; j <= N1; j++) + { + if (h->yrange[j] != hh->yrange[j]) + { + printf ("yrange[%d] : %g orig vs %g\n", + (int) j, h->yrange[j], hh->yrange[j]); + status = 1; + } + } + + for (i = 0; i < M1 * N1; i++) + { + if (h->bin[i] != hh->bin[i]) + { + printf ("bin[%d] : %g orig vs %g\n", + (int) i, h->bin[i], hh->bin[i]); + status = 1; + } + } + + gsl_test (status, "gsl_histogram2d_fwrite and fread"); + + gsl_histogram2d_free (hh); + fclose (f); + } + + gsl_histogram2d_free (h); + gsl_histogram2d_free (h1); + gsl_histogram2d_free (g); + gsl_histogram2d_free (hr); +} diff --git a/gsl-2.5/histogram/test2d_resample.c b/gsl-2.5/histogram/test2d_resample.c new file mode 100644 index 00000000..095ac656 --- /dev/null +++ b/gsl-2.5/histogram/test2d_resample.c @@ -0,0 +1,115 @@ +/* histogram/test2d_resample.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include + +#include "urand.c" + +void +test2d_resample (void) +{ + size_t i, j; + int status = 0; + double total = 0; + size_t N = 200000; + + gsl_histogram2d *h; + + gsl_ieee_env_setup (); + + h = gsl_histogram2d_calloc_uniform (10, 10, 0.0, 1.0, 0.0, 1.0); + + for (i = 0; i < 10; i++) + { + for (j = 0; j < 10; j++) + { + double w = 10.0 * i + j; + total += w; + gsl_histogram2d_accumulate (h, 0.1 * i, 0.1 * i, w); + } + } + + { + gsl_histogram2d_pdf *p = gsl_histogram2d_pdf_alloc (10,10); + + gsl_histogram2d *hh = gsl_histogram2d_calloc_uniform (20, 20, + 0.0, 1.0, + 0.0, 1.0); + + gsl_histogram2d_pdf_init (p, h); + + for (i = 0; i < N; i++) + { + double u = urand(); + double v = urand(); + double x, y; + status = gsl_histogram2d_pdf_sample (p, u, v, &x, &y); + status = gsl_histogram2d_increment (hh, x, y); + } + + status = 0; + for (i = 0; i < 20; i++) + { + for (j = 0; j < 20; j++) + { + double z = 4 * total * gsl_histogram2d_get (hh, i, j) / (double) N; + size_t k1, k2; + double ya; + double x, xmax, y, ymax; + + gsl_histogram2d_get_xrange (hh, i, &x, &xmax); + gsl_histogram2d_get_yrange (hh, j, &y, &ymax); + + gsl_histogram2d_find (h, x, y, &k1, &k2); + ya = gsl_histogram2d_get (h, k1, k2); + + if (ya == 0) + { + if (z != 0) + { + status = 1; + printf ("(%d,%d): %g vs %g\n", (int)i, (int)j, z, ya); + } + } + else + { + double err = 1 / sqrt (gsl_histogram2d_get (hh, i, j)); + double sigma = fabs ((z - ya) / (ya * err)); + if (sigma > 3) + { + status = 1; + printf ("%g vs %g err=%g sigma=%g\n", z, ya, err, sigma); + } + } + } + } + + gsl_histogram2d_pdf_free (p) ; + gsl_histogram2d_free (hh) ; + + gsl_test (status, "gsl_histogram2d_pdf_sample within statistical errors"); + } + + gsl_histogram2d_free (h) ; +} diff --git a/gsl-2.5/histogram/test2d_trap.c b/gsl-2.5/histogram/test2d_trap.c new file mode 100644 index 00000000..0e2929c1 --- /dev/null +++ b/gsl-2.5/histogram/test2d_trap.c @@ -0,0 +1,203 @@ +/* histogram/test2d_trap.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include +#include + +#define N 107 +#define M 239 + +static void my_error_handler (const char *reason, const char *file, + int line, int err); +static int status = 0; + +void +test2d_trap (void) +{ + gsl_histogram2d *h; + double result, lower, upper; + size_t i, j; + + gsl_set_error_handler (&my_error_handler); + + gsl_ieee_env_setup (); + + status = 0; + h = gsl_histogram2d_calloc (0, 10); + gsl_test (!status, "gsl_histogram_calloc traps zero-width histogram"); + gsl_test (h != 0, + "gsl_histogram2d_calloc returns NULL for zero-width histogram"); + + + status = 0; + h = gsl_histogram2d_calloc (10, 0); + gsl_test (!status, "gsl_histogram_calloc traps zero-length histogram"); + gsl_test (h != 0, + "gsl_histogram2d_calloc returns NULL for zero-length histogram"); + + + status = 0; + h = gsl_histogram2d_calloc_uniform (0, 10, 0.0, 1.0, 0.0, 1.0); + gsl_test (!status, + "gsl_histogram2d_calloc_uniform traps zero-width histogram"); + gsl_test (h != 0, + "gsl_histogram2d_calloc_uniform returns NULL for zero-width histogram"); + + status = 0; + h = gsl_histogram2d_calloc_uniform (10, 0, 0.0, 1.0, 0.0, 1.0); + gsl_test (!status, + "gsl_histogram2d_calloc_uniform traps zero-length histogram"); + gsl_test (h != 0, + "gsl_histogram2d_calloc_uniform returns NULL for zero-length histogram"); + + status = 0; + h = gsl_histogram2d_calloc_uniform (10, 10, 0.0, 1.0, 1.0, 1.0); + gsl_test (!status, + "gsl_histogram2d_calloc_uniform traps equal endpoints"); + gsl_test (h != 0, + "gsl_histogram2d_calloc_uniform returns NULL for equal endpoints"); + + status = 0; + h = gsl_histogram2d_calloc_uniform (10, 10, 1.0, 1.0, 0.0, 1.0); + gsl_test (!status, + "gsl_histogram2d_calloc_uniform traps equal endpoints"); + gsl_test (h != 0, + "gsl_histogram2d_calloc_uniform returns NULL for equal endpoints"); + + status = 0; + h = gsl_histogram2d_calloc_uniform (10, 10, 0.0, 1.0, 2.0, 1.0); + gsl_test (!status, + "gsl_histogram2d_calloc_uniform traps invalid range"); + gsl_test (h != 0, + "gsl_histogram2d_calloc_uniform returns NULL for invalid range"); + + status = 0; + h = gsl_histogram2d_calloc_uniform (10, 10, 2.0, 1.0, 0.0, 1.0); + gsl_test (!status, + "gsl_histogram2d_calloc_uniform traps invalid range"); + gsl_test (h != 0, + "gsl_histogram2d_calloc_uniform returns NULL for invalid range"); + + h = gsl_histogram2d_calloc_uniform (N, M, 0.0, 1.0, 0.0, 1.0); + + status = gsl_histogram2d_accumulate (h, 1.0, 0.0, 10.0); + gsl_test (status != GSL_EDOM, "gsl_histogram2d_accumulate traps x at xmax"); + + status = gsl_histogram2d_accumulate (h, 2.0, 0.0, 100.0); + gsl_test (status != GSL_EDOM, "gsl_histogram2d_accumulate traps x above xmax"); + + status = gsl_histogram2d_accumulate (h, -1.0, 0.0, 1000.0); + gsl_test (status != GSL_EDOM, "gsl_histogram2d_accumulate traps x below xmin"); + + status = gsl_histogram2d_accumulate (h, 0.0, 1.0, 10.0); + gsl_test (status != GSL_EDOM, "gsl_histogram2d_accumulate traps y at ymax"); + + status = gsl_histogram2d_accumulate (h, 0.0, 2.0, 100.0); + gsl_test (status != GSL_EDOM, "gsl_histogram2d_accumulate traps y above ymax"); + + status = gsl_histogram2d_accumulate (h, 0.0, -1.0, 1000.0); + gsl_test (status != GSL_EDOM, "gsl_histogram2d_accumulate traps y below ymin"); + + + status = gsl_histogram2d_increment (h, 1.0, 0.0); + gsl_test (status != GSL_EDOM, "gsl_histogram2d_increment traps x at xmax"); + + status = gsl_histogram2d_increment (h, 2.0, 0.0); + gsl_test (status != GSL_EDOM, "gsl_histogram2d_increment traps x above xmax"); + + status = gsl_histogram2d_increment (h, -1.0, 0.0); + gsl_test (status != GSL_EDOM, "gsl_histogram2d_increment traps x below xmin"); + + + status = gsl_histogram2d_increment (h, 0.0, 1.0); + gsl_test (status != GSL_EDOM, "gsl_histogram2d_increment traps y at ymax"); + + status = gsl_histogram2d_increment (h, 0.0, 2.0); + gsl_test (status != GSL_EDOM, "gsl_histogram2d_increment traps y above ymax"); + + status = gsl_histogram2d_increment (h, 0.0, -1.0); + gsl_test (status != GSL_EDOM, "gsl_histogram2d_increment traps y below ymin"); + + + result = gsl_histogram2d_get (h, N, 0); + gsl_test (result != 0, "gsl_histogram2d_get traps x index at nx"); + + result = gsl_histogram2d_get (h, N + 1, 0); + gsl_test (result != 0, "gsl_histogram2d_get traps x index above nx"); + + result = gsl_histogram2d_get (h, 0, M); + gsl_test (result != 0, "gsl_histogram2d_get traps y index at ny"); + + result = gsl_histogram2d_get (h, 0, M + 1); + gsl_test (result != 0, "gsl_histogram2d_get traps y index above ny"); + + + status = gsl_histogram2d_get_xrange (h, N, &lower, &upper); + gsl_test (status != GSL_EDOM, "gsl_histogram2d_get_xrange traps index at nx"); + + status = gsl_histogram2d_get_xrange (h, N + 1, &lower, &upper); + gsl_test (status != GSL_EDOM, "gsl_histogram2d_get_xrange traps index above nx"); + + status = gsl_histogram2d_get_yrange (h, M, &lower, &upper); + gsl_test (status != GSL_EDOM, "gsl_histogram2d_get_yrange traps index at ny"); + + status = gsl_histogram2d_get_yrange (h, M + 1, &lower, &upper); + gsl_test (status != GSL_EDOM, "gsl_histogram2d_get_yrange traps index above ny"); + + status = 0; + gsl_histogram2d_find (h, -0.01, 0.0, &i, &j); + gsl_test (status != GSL_EDOM, "gsl_histogram2d_find traps x below xmin"); + + status = 0; + gsl_histogram2d_find (h, 1.0, 0.0, &i, &j); + gsl_test (status != GSL_EDOM, "gsl_histogram2d_find traps x at xmax"); + + status = 0; + gsl_histogram2d_find (h, 1.1, 0.0, &i, &j); + gsl_test (status != GSL_EDOM, "gsl_histogram2d_find traps x above xmax"); + + + status = 0; + gsl_histogram2d_find (h, 0.0, -0.01, &i, &j); + gsl_test (status != GSL_EDOM, "gsl_histogram2d_find traps y below ymin"); + + status = 0; + gsl_histogram2d_find (h, 0.0, 1.0, &i, &j); + gsl_test (status != GSL_EDOM, "gsl_histogram2d_find traps y at ymax"); + + status = 0; + gsl_histogram2d_find (h, 0.0, 1.1, &i, &j); + gsl_test (status != GSL_EDOM, "gsl_histogram2d_find traps y above ymax"); + + gsl_histogram2d_free (h); +} + + +static void +my_error_handler (const char *reason, const char *file, int line, int err) +{ + if (0) + printf ("(caught [%s:%d: %s (%d)])\n", file, line, reason, err); + status = 1; +} diff --git a/gsl-2.5/histogram/urand.c b/gsl-2.5/histogram/urand.c new file mode 100644 index 00000000..bd273009 --- /dev/null +++ b/gsl-2.5/histogram/urand.c @@ -0,0 +1,26 @@ +/* histogram/urand.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +static double urand (void); + +static double urand (void) { + static unsigned long int x = 1; + x = (1103515245 * x + 12345) & 0x7fffffffUL ; + return x / 2147483648.0 ; +} diff --git a/gsl-2.5/ieee-utils/.deps/env.Plo b/gsl-2.5/ieee-utils/.deps/env.Plo new file mode 100644 index 00000000..203282c2 --- /dev/null +++ b/gsl-2.5/ieee-utils/.deps/env.Plo @@ -0,0 +1,110 @@ +env.lo: env.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_ieee_utils.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../gsl/gsl_errno.h /usr/include/errno.h \ + /usr/include/bits/errno.h /usr/include/linux/errno.h \ + /usr/include/asm/errno.h /usr/include/asm-generic/errno.h \ + /usr/include/asm-generic/errno-base.h ../gsl/gsl_types.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_ieee_utils.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: diff --git a/gsl-2.5/ieee-utils/.deps/fp.Plo b/gsl-2.5/ieee-utils/.deps/fp.Plo new file mode 100644 index 00000000..f12e96cb --- /dev/null +++ b/gsl-2.5/ieee-utils/.deps/fp.Plo @@ -0,0 +1,72 @@ +fp.lo: fp.c /usr/include/stdc-predef.h ../config.h fp-gnux86.c \ + /usr/include/stdio.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/fpu_control.h ../gsl/gsl_errno.h \ + /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_types.h ../gsl/gsl_ieee_utils.h + +/usr/include/stdc-predef.h: + +../config.h: + +fp-gnux86.c: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/fpu_control.h: + +../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_ieee_utils.h: diff --git a/gsl-2.5/ieee-utils/.deps/make_rep.Plo b/gsl-2.5/ieee-utils/.deps/make_rep.Plo new file mode 100644 index 00000000..a876e078 --- /dev/null +++ b/gsl-2.5/ieee-utils/.deps/make_rep.Plo @@ -0,0 +1,94 @@ +make_rep.lo: make_rep.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_ieee_utils.h /usr/include/stdio.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h endian.c /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h standardize.c + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_ieee_utils.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +endian.c: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +standardize.c: diff --git a/gsl-2.5/ieee-utils/.deps/print.Plo b/gsl-2.5/ieee-utils/.deps/print.Plo new file mode 100644 index 00000000..8edb33d5 --- /dev/null +++ b/gsl-2.5/ieee-utils/.deps/print.Plo @@ -0,0 +1,71 @@ +print.lo: print.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdio.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_ieee_utils.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_ieee_utils.h: diff --git a/gsl-2.5/ieee-utils/.deps/read.Plo b/gsl-2.5/ieee-utils/.deps/read.Plo new file mode 100644 index 00000000..4dfb91ca --- /dev/null +++ b/gsl-2.5/ieee-utils/.deps/read.Plo @@ -0,0 +1,119 @@ +read.lo: read.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/string.h \ + /usr/include/xlocale.h /usr/include/bits/string.h \ + /usr/include/bits/string2.h ../gsl/gsl_errno.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_types.h ../gsl/gsl_ieee_utils.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string.h: + +/usr/include/bits/string2.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_ieee_utils.h: diff --git a/gsl-2.5/ieee-utils/.deps/test.Po b/gsl-2.5/ieee-utils/.deps/test.Po new file mode 100644 index 00000000..9ed52063 --- /dev/null +++ b/gsl-2.5/ieee-utils/.deps/test.Po @@ -0,0 +1,127 @@ +test.o: test.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + /usr/include/string.h /usr/include/xlocale.h /usr/include/bits/string.h \ + /usr/include/bits/string2.h ../gsl/gsl_ieee_utils.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../gsl/gsl_test.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string.h: + +/usr/include/bits/string2.h: + +../gsl/gsl_ieee_utils.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../gsl/gsl_test.h: diff --git a/gsl-2.5/ieee-utils/.libs/libgslieeeutils.la b/gsl-2.5/ieee-utils/.libs/libgslieeeutils.la new file mode 120000 index 00000000..63af95a4 --- /dev/null +++ b/gsl-2.5/ieee-utils/.libs/libgslieeeutils.la @@ -0,0 +1 @@ +../libgslieeeutils.la \ No newline at end of file diff --git a/gsl-2.5/ieee-utils/ChangeLog b/gsl-2.5/ieee-utils/ChangeLog new file mode 100644 index 00000000..5ce2be37 --- /dev/null +++ b/gsl-2.5/ieee-utils/ChangeLog @@ -0,0 +1,229 @@ +2010-11-06 Brian Gough + + * fp-aix.c: added workaround for AIX problems (D. Kirby) + +2008-07-03 Brian Gough + + * Makefile.am (INCLUDES): use top_srcdir instead of top_builddir + +2007-06-21 Brian Gough + + * fp.c: allow universal binaries by checking __ppc__ and __i386__ + preprocessor definitions on Darwin + +2007-04-23 Brian Gough + + * fp-gnux86.c (gsl_ieee_set_mode): added support for MXCSR register + +2005-02-11 Brian Gough + + * fp-gnuc99.c (gsl_ieee_set_mode): added an #ifdef for the default + round to nearest mode + +2003-12-20 Brian Gough + + * fp-gnuc99.c (_GNU_SOURCE): define _GNU_SOURCE when including + fenv.h + +2003-07-21 Brian Gough + + * read.c (gsl_ieee_read_mode_string): added missing + mask-division-by-zero to error message + +2003-06-14 Brian Gough + + * fp-m68klinux.c fp-ppclinux.c fp-sparclinux.c fp-x86linux.c: + renamed to fp-gnum68k.c fp-gnuppc.c fp-gnusparc.c fp-gnux86.c + since they are dependent on the GNU C Library interface rather + than the kernel interface + + * fp-gnuc99.c: added a fallback to the C99 exception functions for + cases where the operating system is not recognized + +Mon Aug 26 20:57:29 2002 Brian Gough + + * test.c: use system values for FLT_MIN, FLT_MAX, DBL_MIN, DBL_MAX + +Sat May 11 22:30:43 2002 Brian Gough + + * test.c (TEST_DENORMAL): test denormals only when available, as + tested in configure script + +Mon Sep 10 14:23:52 2001 Brian Gough + + * fp-netbsd.c fp-openbsd.c (gsl_ieee_set_mode): tried to correct + the logic for the denormalized exception. + +Tue Jul 10 13:10:12 2001 Brian Gough + + * env.c (gsl_ieee_env_setup): send GSL_IEEE_MODE output to stderr + +Tue Jun 26 10:44:13 2001 Brian Gough + + * fp-netbsd.c (gsl_ieee_set_mode): simplified, patch from Jason Beegan + + * fp-openbsd.c (gsl_ieee_set_mode): simplified + +Mon Jun 25 20:47:33 2001 Brian Gough + + * fp-openbsd.c (gsl_ieee_set_mode): added support for openbsd + +Tue May 8 10:49:58 2001 Brian Gough + + * fp-aix.c: changed macros from TRAP_ to TRP_.. + +Fri Apr 13 15:07:10 2001 Brian Gough + + * fp-darwin.c: added darwin support from Rodney Sparapani + +Wed Mar 28 13:12:20 2001 Brian Gough + + * fp-netbsd.c: added netbsd support from Jason Beegan + + +Thu Mar 15 14:11:29 2001 Brian Gough + + * fp-hpux11.c: added support for HPUX11 + +Fri Mar 2 16:58:36 2001 Brian Gough + + * fp-os2emx.c: add ieee support for OS/2 from Henry Sobotka + + +Thu Jul 20 19:41:56 2000 Brian Gough + + * fp-freebsd.c (gsl_ieee_set_mode): added fp-freebsd.c from + Vladimir Kushnir + +Mon Jun 12 19:23:53 2000 Brian Gough + + * Makefile.am (noinst_HEADERS): added aix and irix to makefile + + * fp-x86linux.c (gsl_ieee_set_mode): Handle libc5, where + _FPU_SETCW is not available, by defining the macro. Suggested by + OKUJI Yoshinori + +Wed Jun 7 19:18:15 2000 Brian Gough + + * fp-ppclinux.c: added support for ppc linux + +Tue Jun 6 19:59:50 2000 Brian Gough + + * fp-x86linux.c: renamed from fp-linux.c + +Thu May 18 11:53:13 2000 Brian Gough + + * test.c: turned off tests for denormals on irix, since they are + supported + + * fp.c: added IRIX and AIX to the top-level fp.c file -- somehow + they had been forgotten! + +2000-05-14 Steve Robbins + + * fp-tru64.c: include `/usr/include/float.h', if necessary for + picking up FP_RND_RN and friends. + +Sun Apr 2 14:25:52 2000 Brian Gough + + * fp-m68klinux.c: added file for m68k support (not complete, some + macros need to be checked) + +Thu Mar 16 15:34:08 2000 Brian Gough + + * read.c (gsl_ieee_read_mode_string): changed token separator to , + instead of ; + +Thu Feb 24 19:20:50 2000 Brian Gough + + * fp-tru64.c (gsl_ieee_set_mode): added an #ifdef for + IEEE_TRAP_ENABLE_DNO, which may or may not be defined depending on + the version of Digital Unix. + +Mon Feb 14 14:03:22 2000 Brian Gough + + * made internal functions static and removed redundant functions + +Fri Nov 5 15:01:55 1999 Brian Gough + + * fp-sparclinux.c: added support for sparclinux + +Thu Oct 7 13:03:00 1999 Brian Gough + + * make_rep.c: more careful conversion from unsigned to signed integer + for sign attribute to prevent warnings + +Sat Aug 21 01:05:01 1999 Tim Mooney + + * fp-aix.c: added, based on fp-solaris. + +Fri Aug 20 12:17:53 1999 Brian Gough + + * fp-tru64.c (gsl_ieee_set_mode): note that INEXACT is not easily + supported on Tru64, and give an error if anyone tries to use it + +Wed Aug 18 21:36:01 1999 Tim Mooney + + * fp-irix.c: added, based on fp-solaris. IRIX 6 has a rounding and + exception interface that is identical to Solaris, right down to the enums. + +Tue Aug 17 18:36:01 1999 Tim Mooney + + * fp-tru64.c: added, based on solaris and HP-UX fp-* files. + Rounding mode and trap control requires that the compiler be + passed special options, see the comments in fp-tru64.c. + +Fri Jul 23 19:00:51 1999 Brian Gough + + * print.c: added fprintf versions of the printf functions + +Sat May 8 20:39:28 1999 Brian Gough + + * fp-linux.c (gsl_ieee_set_mode): changed from using the function + __fput_setcw() to the macro _FPU_SETCW() since Khimenko Victor + reports that __setfpucw() is not in the shared + lib version of glibc-2.1.1 + +Fri Apr 2 20:52:59 1999 Brian Gough + + * endian.c (setup_dynamic_endianness): removed useless test, + u.c[i]<0 for unsigned + +Fri Aug 21 15:36:22 1998 Brian Gough + + * fp-unknown.c (gsl_ieee_set_mode): made return type int, as it + should be + +Mon Jun 15 22:02:00 1998 Brian Gough + + * renamed read-mode-string.c to read.c and print-ieee.c to print.c + +Tue Jun 2 19:29:34 1998 Brian Gough + + * gsl_ieee_utils.h: renamed GSL_IEEE_CATCH_INEXACT to + GSL_IEEE_TRAP_INEXACT, which is a better name + +Mon Jun 1 15:27:08 1998 Brian Gough + + * fp-sunos4.c: support for sunos4 IEEE interface + + * fp-solaris.c: support for solaris IEEE interface + + * renamed fp-mode-string.c to fp-env.c, in order to avoid short + filename problems + + * added support for setting the IEEE mode from the environment + variable GSL_IEEE_MODE (only works for the Linux kernel so far) + +Mon May 18 16:20:17 1998 Brian Gough + + * The determination of endianness is now done on each call instead + of at configure time (autoconf complains about what would happen + to the test if it were cross compiling). Ok, so it's a bit slower + but this isn't a performance critical routine. + +Sat May 16 23:10:09 1998 Brian Gough + + * This directory contains some routines for examining IEEE format + numbers at the bit level + diff --git a/gsl-2.5/ieee-utils/Makefile b/gsl-2.5/ieee-utils/Makefile new file mode 100644 index 00000000..e0b12932 --- /dev/null +++ b/gsl-2.5/ieee-utils/Makefile @@ -0,0 +1,1030 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# ieee-utils/Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + + + + +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/gsl +pkgincludedir = $(includedir)/gsl +pkglibdir = $(libdir)/gsl +pkglibexecdir = $(libexecdir)/gsl +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = x86_64-unknown-linux-gnu +host_triplet = x86_64-unknown-linux-gnu +check_PROGRAMS = test$(EXEEXT) +subdir = ieee-utils +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp \ + $(noinst_HEADERS) $(pkginclude_HEADERS) \ + $(top_srcdir)/test-driver ChangeLog TODO +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +libgslieeeutils_la_LIBADD = +am_libgslieeeutils_la_OBJECTS = print.lo make_rep.lo env.lo fp.lo \ + read.lo +libgslieeeutils_la_OBJECTS = $(am_libgslieeeutils_la_OBJECTS) +AM_V_lt = $(am__v_lt_$(V)) +am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) +am__v_lt_0 = --silent +am__v_lt_1 = +am_test_OBJECTS = test.$(OBJEXT) +test_OBJECTS = $(am_test_OBJECTS) +test_DEPENDENCIES = libgslieeeutils.la ../err/libgslerr.la \ + ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la +AM_V_P = $(am__v_P_$(V)) +am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY)) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_$(V)) +am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_$(V)) +am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I. -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_$(V)) +am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_$(V)) +am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libgslieeeutils_la_SOURCES) $(test_SOURCES) +DIST_SOURCES = $(libgslieeeutils_la_SOURCES) $(test_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(pkgincludedir)" +HEADERS = $(noinst_HEADERS) $(pkginclude_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = .test +LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing aclocal-1.13 +AMTAR = $${TAR-tar} +AM_DEFAULT_VERBOSITY = 1 +AR = ar +AS = as +AUTOCONF = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing autoconf +AUTOHEADER = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing autoheader +AUTOMAKE = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing automake-1.13 +AWK = gawk +CC = gcc +CCDEPMODE = depmode=gcc3 +CFLAGS = -g -O2 +CPP = gcc -E +CPPFLAGS = +CYGPATH_W = echo +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +DLLTOOL = false +DSYMUTIL = +DUMPBIN = +ECHO_C = +ECHO_N = -n +ECHO_T = +EGREP = /usr/bin/grep -E +EXEEXT = +FGREP = /usr/bin/grep -F +GREP = /usr/bin/grep +GSLCBLAS_LDFLAGS = +GSL_CFLAGS = -I${prefix}/include +GSL_LDFLAGS = +GSL_LIBADD = +GSL_LIBM = -lm +GSL_LIBS = -L${exec_prefix}/lib -lgsl +GSL_LT_CBLAS_VERSION = 0:0:0 +GSL_LT_VERSION = 24:0:1 +GSL_MAJOR_VERSION = 2 +GSL_MINOR_VERSION = 5 +HAVE_AIX_IEEE_INTERFACE = +HAVE_DARWIN86_IEEE_INTERFACE = +HAVE_DARWIN_IEEE_INTERFACE = +HAVE_FREEBSD_IEEE_INTERFACE = +HAVE_GNUM68K_IEEE_INTERFACE = +HAVE_GNUPPC_IEEE_INTERFACE = +HAVE_GNUSPARC_IEEE_INTERFACE = +HAVE_GNUX86_IEEE_INTERFACE = +HAVE_HPUX11_IEEE_INTERFACE = +HAVE_HPUX_IEEE_INTERFACE = +HAVE_IRIX_IEEE_INTERFACE = +HAVE_NETBSD_IEEE_INTERFACE = +HAVE_OPENBSD_IEEE_INTERFACE = +HAVE_OS2EMX_IEEE_INTERFACE = +HAVE_SOLARIS_IEEE_INTERFACE = +HAVE_SUNOS4_IEEE_INTERFACE = +HAVE_TRU64_IEEE_INTERFACE = +INSTALL = /usr/bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = $(install_sh) -c -s +LD = /usr/bin/ld -m elf_x86_64 +LDFLAGS = +LIBM = -lm +LIBOBJS = +LIBS = -lm +LIBTOOL = $(SHELL) $(top_builddir)/libtool +LIPO = +LN_S = ln -s +LTLIBOBJS = +MAINT = # +MAKEINFO = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing makeinfo +MANIFEST_TOOL = : +MKDIR_P = /usr/bin/mkdir -p +NM = /usr/bin/nm -B +NMEDIT = +OBJDUMP = objdump +OBJEXT = o +OTOOL = +OTOOL64 = +PACKAGE = gsl +PACKAGE_BUGREPORT = +PACKAGE_NAME = gsl +PACKAGE_STRING = gsl 2.5 +PACKAGE_TARNAME = gsl +PACKAGE_URL = +PACKAGE_VERSION = 2.5 +PATH_SEPARATOR = : +RANLIB = ranlib +SED = /usr/bin/sed +SET_MAKE = +SHELL = /bin/sh +STRIP = strip +VERSION = 2.5 +abs_builddir = /home/groups/kipac/chto/package/gsl/gsl-2.5/ieee-utils +abs_srcdir = /home/groups/kipac/chto/package/gsl/gsl-2.5/ieee-utils +abs_top_builddir = /home/groups/kipac/chto/package/gsl/gsl-2.5 +abs_top_srcdir = /home/groups/kipac/chto/package/gsl/gsl-2.5 +ac_ct_AR = ar +ac_ct_CC = gcc +ac_ct_DUMPBIN = +am__include = include +am__leading_dot = . +am__quote = +am__tar = $${TAR-tar} chof - "$$tardir" +am__untar = $${TAR-tar} xf - +bindir = ${exec_prefix}/bin +build = x86_64-unknown-linux-gnu +build_alias = +build_cpu = x86_64 +build_os = linux-gnu +build_vendor = unknown +builddir = . +datadir = ${datarootdir} +datarootdir = ${prefix}/share +docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} +dvidir = ${docdir} +exec_prefix = ${prefix} +host = x86_64-unknown-linux-gnu +host_alias = +host_cpu = x86_64 +host_os = linux-gnu +host_vendor = unknown +htmldir = ${docdir} +includedir = ${prefix}/include +infodir = ${datarootdir}/info +install_sh = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/install-sh +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +localedir = ${datarootdir}/locale +localstatedir = ${prefix}/var +mandir = ${datarootdir}/man +mkdir_p = $(MKDIR_P) +oldincludedir = /usr/include +pdfdir = ${docdir} +prefix = /home/groups/kipac/chto/package/gsl/gsl_lib +program_transform_name = s,x,x, +psdir = ${docdir} +sbindir = ${exec_prefix}/sbin +sharedstatedir = ${prefix}/com +srcdir = . +sysconfdir = ${prefix}/etc +target_alias = +top_build_prefix = ../ +top_builddir = .. +top_srcdir = .. +noinst_LTLIBRARIES = libgslieeeutils.la +pkginclude_HEADERS = gsl_ieee_utils.h +libgslieeeutils_la_SOURCES = print.c make_rep.c gsl_ieee_utils.h env.c fp.c read.c +noinst_HEADERS = fp-aix.c fp-darwin.c fp-darwin86.c fp-hpux.c fp-hpux11.c fp-irix.c fp-gnum68k.c fp-gnuppc.c fp-solaris.c fp-gnusparc.c fp-sunos4.c fp-tru64.c fp-unknown.c fp-gnux86.c fp-freebsd.c fp-os2emx.c fp-netbsd.c fp-openbsd.c fp-gnuc99.c endian.c standardize.c +AM_CPPFLAGS = -I$(top_srcdir) +TESTS = $(check_PROGRAMS) +test_LDADD = libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la +test_SOURCES = test.c +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu ieee-utils/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu ieee-utils/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: # $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): # $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libgslieeeutils.la: $(libgslieeeutils_la_OBJECTS) $(libgslieeeutils_la_DEPENDENCIES) $(EXTRA_libgslieeeutils_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(libgslieeeutils_la_OBJECTS) $(libgslieeeutils_la_LIBADD) $(LIBS) + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) $(EXTRA_test_DEPENDENCIES) + @rm -f test$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_OBJECTS) $(test_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +include ./$(DEPDIR)/env.Plo +include ./$(DEPDIR)/fp.Plo +include ./$(DEPDIR)/make_rep.Plo +include ./$(DEPDIR)/print.Plo +include ./$(DEPDIR)/read.Plo +include ./$(DEPDIR)/test.Po + +.c.o: + $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# $(AM_V_CC)source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(COMPILE) -c $< + +.c.obj: + $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# $(AM_V_CC)source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: + $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +# $(AM_V_CC)source='$<' object='$@' libtool=yes \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-pkgincludeHEADERS: $(pkginclude_HEADERS) + @$(NORMAL_INSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \ + done + +uninstall-pkgincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + else \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_PROGRAMS) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +test.log: test$(EXEEXT) + @p='test$(EXEEXT)'; \ + b='test'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +#.test$(EXEEXT).log: +# @p='$<'; \ +# $(am__set_b); \ +# $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +# --log-file $$b.log --trs-file $$b.trs \ +# $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +# "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-am +all-am: Makefile $(LTLIBRARIES) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(pkgincludedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-pkgincludeHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-pkgincludeHEADERS + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES cscopelist-am ctags ctags-am distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-pkgincludeHEADERS \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + recheck tags tags-am uninstall uninstall-am \ + uninstall-pkgincludeHEADERS + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gsl-2.5/ieee-utils/Makefile.am b/gsl-2.5/ieee-utils/Makefile.am new file mode 100644 index 00000000..561f0c87 --- /dev/null +++ b/gsl-2.5/ieee-utils/Makefile.am @@ -0,0 +1,14 @@ +noinst_LTLIBRARIES = libgslieeeutils.la + +pkginclude_HEADERS = gsl_ieee_utils.h + +libgslieeeutils_la_SOURCES = print.c make_rep.c gsl_ieee_utils.h env.c fp.c read.c + +noinst_HEADERS = fp-aix.c fp-darwin.c fp-darwin86.c fp-hpux.c fp-hpux11.c fp-irix.c fp-gnum68k.c fp-gnuppc.c fp-solaris.c fp-gnusparc.c fp-sunos4.c fp-tru64.c fp-unknown.c fp-gnux86.c fp-freebsd.c fp-os2emx.c fp-netbsd.c fp-openbsd.c fp-gnuc99.c endian.c standardize.c + +AM_CPPFLAGS = -I$(top_srcdir) + +TESTS = $(check_PROGRAMS) +check_PROGRAMS = test +test_LDADD = libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la +test_SOURCES = test.c diff --git a/gsl-2.5/ieee-utils/Makefile.in b/gsl-2.5/ieee-utils/Makefile.in new file mode 100644 index 00000000..d0cfc91b --- /dev/null +++ b/gsl-2.5/ieee-utils/Makefile.in @@ -0,0 +1,1030 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + + +VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +check_PROGRAMS = test$(EXEEXT) +subdir = ieee-utils +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp \ + $(noinst_HEADERS) $(pkginclude_HEADERS) \ + $(top_srcdir)/test-driver ChangeLog TODO +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +libgslieeeutils_la_LIBADD = +am_libgslieeeutils_la_OBJECTS = print.lo make_rep.lo env.lo fp.lo \ + read.lo +libgslieeeutils_la_OBJECTS = $(am_libgslieeeutils_la_OBJECTS) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +am_test_OBJECTS = test.$(OBJEXT) +test_OBJECTS = $(am_test_OBJECTS) +test_DEPENDENCIES = libgslieeeutils.la ../err/libgslerr.la \ + ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libgslieeeutils_la_SOURCES) $(test_SOURCES) +DIST_SOURCES = $(libgslieeeutils_la_SOURCES) $(test_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(pkgincludedir)" +HEADERS = $(noinst_HEADERS) $(pkginclude_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = @EXEEXT@ .test +LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +GSLCBLAS_LDFLAGS = @GSLCBLAS_LDFLAGS@ +GSL_CFLAGS = @GSL_CFLAGS@ +GSL_LDFLAGS = @GSL_LDFLAGS@ +GSL_LIBADD = @GSL_LIBADD@ +GSL_LIBM = @GSL_LIBM@ +GSL_LIBS = @GSL_LIBS@ +GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ +GSL_LT_VERSION = @GSL_LT_VERSION@ +GSL_MAJOR_VERSION = @GSL_MAJOR_VERSION@ +GSL_MINOR_VERSION = @GSL_MINOR_VERSION@ +HAVE_AIX_IEEE_INTERFACE = @HAVE_AIX_IEEE_INTERFACE@ +HAVE_DARWIN86_IEEE_INTERFACE = @HAVE_DARWIN86_IEEE_INTERFACE@ +HAVE_DARWIN_IEEE_INTERFACE = @HAVE_DARWIN_IEEE_INTERFACE@ +HAVE_FREEBSD_IEEE_INTERFACE = @HAVE_FREEBSD_IEEE_INTERFACE@ +HAVE_GNUM68K_IEEE_INTERFACE = @HAVE_GNUM68K_IEEE_INTERFACE@ +HAVE_GNUPPC_IEEE_INTERFACE = @HAVE_GNUPPC_IEEE_INTERFACE@ +HAVE_GNUSPARC_IEEE_INTERFACE = @HAVE_GNUSPARC_IEEE_INTERFACE@ +HAVE_GNUX86_IEEE_INTERFACE = @HAVE_GNUX86_IEEE_INTERFACE@ +HAVE_HPUX11_IEEE_INTERFACE = @HAVE_HPUX11_IEEE_INTERFACE@ +HAVE_HPUX_IEEE_INTERFACE = @HAVE_HPUX_IEEE_INTERFACE@ +HAVE_IRIX_IEEE_INTERFACE = @HAVE_IRIX_IEEE_INTERFACE@ +HAVE_NETBSD_IEEE_INTERFACE = @HAVE_NETBSD_IEEE_INTERFACE@ +HAVE_OPENBSD_IEEE_INTERFACE = @HAVE_OPENBSD_IEEE_INTERFACE@ +HAVE_OS2EMX_IEEE_INTERFACE = @HAVE_OS2EMX_IEEE_INTERFACE@ +HAVE_SOLARIS_IEEE_INTERFACE = @HAVE_SOLARIS_IEEE_INTERFACE@ +HAVE_SUNOS4_IEEE_INTERFACE = @HAVE_SUNOS4_IEEE_INTERFACE@ +HAVE_TRU64_IEEE_INTERFACE = @HAVE_TRU64_IEEE_INTERFACE@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBM = @LIBM@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +noinst_LTLIBRARIES = libgslieeeutils.la +pkginclude_HEADERS = gsl_ieee_utils.h +libgslieeeutils_la_SOURCES = print.c make_rep.c gsl_ieee_utils.h env.c fp.c read.c +noinst_HEADERS = fp-aix.c fp-darwin.c fp-darwin86.c fp-hpux.c fp-hpux11.c fp-irix.c fp-gnum68k.c fp-gnuppc.c fp-solaris.c fp-gnusparc.c fp-sunos4.c fp-tru64.c fp-unknown.c fp-gnux86.c fp-freebsd.c fp-os2emx.c fp-netbsd.c fp-openbsd.c fp-gnuc99.c endian.c standardize.c +AM_CPPFLAGS = -I$(top_srcdir) +TESTS = $(check_PROGRAMS) +test_LDADD = libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la +test_SOURCES = test.c +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu ieee-utils/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu ieee-utils/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libgslieeeutils.la: $(libgslieeeutils_la_OBJECTS) $(libgslieeeutils_la_DEPENDENCIES) $(EXTRA_libgslieeeutils_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(libgslieeeutils_la_OBJECTS) $(libgslieeeutils_la_LIBADD) $(LIBS) + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) $(EXTRA_test_DEPENDENCIES) + @rm -f test$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_OBJECTS) $(test_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/env.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fp.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/make_rep.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/print.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/read.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test.Po@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-pkgincludeHEADERS: $(pkginclude_HEADERS) + @$(NORMAL_INSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \ + done + +uninstall-pkgincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + else \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_PROGRAMS) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +test.log: test$(EXEEXT) + @p='test$(EXEEXT)'; \ + b='test'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +@am__EXEEXT_TRUE@.test$(EXEEXT).log: +@am__EXEEXT_TRUE@ @p='$<'; \ +@am__EXEEXT_TRUE@ $(am__set_b); \ +@am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +@am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ +@am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +@am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-am +all-am: Makefile $(LTLIBRARIES) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(pkgincludedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-pkgincludeHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-pkgincludeHEADERS + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES cscopelist-am ctags ctags-am distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-pkgincludeHEADERS \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + recheck tags tags-am uninstall uninstall-am \ + uninstall-pkgincludeHEADERS + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gsl-2.5/ieee-utils/TODO b/gsl-2.5/ieee-utils/TODO new file mode 100644 index 00000000..3797aaa4 --- /dev/null +++ b/gsl-2.5/ieee-utils/TODO @@ -0,0 +1,5 @@ +# -*- org -*- +#+CATEGORY: ieee-utils + +* Fix up ieee-utils/fp-m68klinux.c for correct behavior and actually +test it. diff --git a/gsl-2.5/ieee-utils/endian.c b/gsl-2.5/ieee-utils/endian.c new file mode 100644 index 00000000..b264a1f5 --- /dev/null +++ b/gsl-2.5/ieee-utils/endian.c @@ -0,0 +1,37 @@ +/* ieee-utils/endian.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include + +static int little_endian_p (void) ; + +static int +little_endian_p (void) { + /* Are we little or big endian? From Harbison & Steele. */ + union + { + long l; + char c[sizeof (long)]; + } u; + u.l = 1; + return (u.c[sizeof (long) - 1] == 1); +} + diff --git a/gsl-2.5/ieee-utils/env.c b/gsl-2.5/ieee-utils/env.c new file mode 100644 index 00000000..03fd8b43 --- /dev/null +++ b/gsl-2.5/ieee-utils/env.c @@ -0,0 +1,124 @@ +/* ieee-utils/env.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include + +void +gsl_ieee_env_setup (void) +{ + const char * p = getenv("GSL_IEEE_MODE") ; + + int precision = 0, rounding = 0, exception_mask = 0 ; + + int comma = 0 ; + +#if defined( _MSC_VER ) + + extern const char *fp_env_string; + if(p == 0 || *p == '\0') + p = fp_env_string; + +#else + + if (p == 0) /* GSL_IEEE_MODE environment variable is not set */ + return ; + + if (*p == '\0') /* GSL_IEEE_MODE environment variable is empty */ + return ; + +#endif + + gsl_ieee_read_mode_string (p, &precision, &rounding, &exception_mask) ; + + gsl_ieee_set_mode (precision, rounding, exception_mask) ; + + fprintf(stderr, "GSL_IEEE_MODE=\"") ; + + /* Print string with a preceeding comma if the list has already begun */ + +#define PRINTC(x) do {if(comma) fprintf(stderr,","); fprintf(stderr,x); comma++ ;} while(0) + + switch (precision) + { + case GSL_IEEE_SINGLE_PRECISION: + PRINTC("single-precision") ; + break ; + case GSL_IEEE_DOUBLE_PRECISION: + PRINTC("double-precision") ; + break ; + case GSL_IEEE_EXTENDED_PRECISION: + PRINTC("extended-precision") ; + break ; + } + + switch (rounding) + { + case GSL_IEEE_ROUND_TO_NEAREST: + PRINTC("round-to-nearest") ; + break ; + case GSL_IEEE_ROUND_DOWN: + PRINTC("round-down") ; + break ; + case GSL_IEEE_ROUND_UP: + PRINTC("round-up") ; + break ; + case GSL_IEEE_ROUND_TO_ZERO: + PRINTC("round-to-zero") ; + break ; + } + + if ((exception_mask & GSL_IEEE_MASK_ALL) == GSL_IEEE_MASK_ALL) + { + PRINTC("mask-all") ; + } + else if ((exception_mask & GSL_IEEE_MASK_ALL) == 0) + { + PRINTC("trap-common") ; + } + else + { + if (exception_mask & GSL_IEEE_MASK_INVALID) + PRINTC("mask-invalid") ; + + if (exception_mask & GSL_IEEE_MASK_DENORMALIZED) + PRINTC("mask-denormalized") ; + + if (exception_mask & GSL_IEEE_MASK_DIVISION_BY_ZERO) + PRINTC("mask-division-by-zero") ; + + if (exception_mask & GSL_IEEE_MASK_OVERFLOW) + PRINTC("mask-overflow") ; + + if (exception_mask & GSL_IEEE_MASK_UNDERFLOW) + PRINTC("mask-underflow") ; + } + + if (exception_mask & GSL_IEEE_TRAP_INEXACT) + PRINTC("trap-inexact") ; + + fprintf(stderr,"\"\n") ; +} + + + + + diff --git a/gsl-2.5/ieee-utils/env.lo b/gsl-2.5/ieee-utils/env.lo new file mode 100644 index 00000000..e6cf83cd --- /dev/null +++ b/gsl-2.5/ieee-utils/env.lo @@ -0,0 +1,12 @@ +# env.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/env.o' + +# Name of the non-PIC object +non_pic_object='env.o' + diff --git a/gsl-2.5/ieee-utils/fp-aix.c b/gsl-2.5/ieee-utils/fp-aix.c new file mode 100644 index 00000000..a40ad19e --- /dev/null +++ b/gsl-2.5/ieee-utils/fp-aix.c @@ -0,0 +1,155 @@ +/* ieee-utils/fp-aix.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Tim Mooney + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include + +/* GCC uses a common float.h for all platforms, and ignores all vendor +specific code in float.h. That causes problems with fprnd_t, +FP_RND_RZ, FP_RND_RN and FP_RND_RP on AIX. + +Personally I consider that a bug, and was advised by a GCC developer +to report this as a bug, which I did. + +http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46155 + +However, there is not universal agreement whether this is a gcc bug, so +the issue needs to be worked around on AIX. + +David Kirkby, 26th October 2010. */ + +#if !HAVE_DECL_FPRND_T +typedef unsigned short fprnd_t; +#endif + +#ifndef FP_RND_RZ +#define FP_RND_RZ 0 +#endif + +#ifndef FP_RND_RN +#define FP_RND_RN 1 +#endif + + +#ifndef FP_RND_RP +#define FP_RND_RP 2 +#endif + +#ifndef FP_RND_RM +#define FP_RND_RM 3 +#endif + +int +gsl_ieee_set_mode (int precision, int rounding, int exception_mask) +{ + fptrap_t mode = 0 ; + fprnd_t rnd = 0 ; + + switch (precision) + { + + /* I'm not positive about AIX only supporting default precision rounding, + * but this is the best assumption until it's proven otherwise. */ + + case GSL_IEEE_SINGLE_PRECISION: + GSL_ERROR ("AIX only supports default precision rounding", + GSL_EUNSUP) ; + break ; + case GSL_IEEE_DOUBLE_PRECISION: + GSL_ERROR ("AIX only supports default precision rounding", + GSL_EUNSUP) ; + break ; + case GSL_IEEE_EXTENDED_PRECISION: + GSL_ERROR ("AIX only supports default precision rounding", + GSL_EUNSUP) ; + break ; + } + + switch (rounding) + { + case GSL_IEEE_ROUND_TO_NEAREST: + rnd = FP_RND_RN ; + fp_swap_rnd (rnd) ; + break ; + case GSL_IEEE_ROUND_DOWN: + rnd = FP_RND_RM ; + fp_swap_rnd (rnd) ; + break ; + case GSL_IEEE_ROUND_UP: + rnd = FP_RND_RP ; + fp_swap_rnd (rnd) ; + break ; + case GSL_IEEE_ROUND_TO_ZERO: + rnd = FP_RND_RZ ; + fp_swap_rnd (rnd) ; + break ; + default: + rnd = FP_RND_RN ; + fp_swap_rnd (rnd) ; + } + + /* Turn on all the exceptions apart from 'inexact' */ + + mode = TRP_INVALID | TRP_DIV_BY_ZERO | TRP_OVERFLOW | TRP_UNDERFLOW ; + + if (exception_mask & GSL_IEEE_MASK_INVALID) + mode &= ~ TRP_INVALID ; + + if (exception_mask & GSL_IEEE_MASK_DENORMALIZED) + { + /* do nothing */ + } + else + { + GSL_ERROR ("AIX does not support the denormalized operand exception. " + "Use 'mask-denormalized' to work around this.", + GSL_EUNSUP) ; + } + + if (exception_mask & GSL_IEEE_MASK_DIVISION_BY_ZERO) + mode &= ~ TRP_DIV_BY_ZERO ; + + if (exception_mask & GSL_IEEE_MASK_OVERFLOW) + mode &= ~ TRP_OVERFLOW ; + + if (exception_mask & GSL_IEEE_MASK_UNDERFLOW) + mode &= ~ TRP_UNDERFLOW ; + + if (exception_mask & GSL_IEEE_TRAP_INEXACT) + { + mode |= TRP_INEXACT ; + } + else + { + mode &= ~ TRP_INEXACT ; + } + + /* AIX appears to require two steps -- first enable floating point traps + * in general... */ + fp_trap(FP_TRAP_SYNC); + + /* next, enable the traps we're interested in */ + fp_enable(mode); + + return GSL_SUCCESS ; + +} diff --git a/gsl-2.5/ieee-utils/fp-darwin.c b/gsl-2.5/ieee-utils/fp-darwin.c new file mode 100644 index 00000000..733ae67b --- /dev/null +++ b/gsl-2.5/ieee-utils/fp-darwin.c @@ -0,0 +1,95 @@ +/* ieee-utils/fp-darwin.c + * + * Copyright (C) 2001 Rodney Sparapani + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include + +int +gsl_ieee_set_mode (int precision, int rounding, int exception_mask) +{ + ppc_fp_scr_t fp_scr = get_fp_scr() ; + + switch (precision) + { + case GSL_IEEE_SINGLE_PRECISION: + GSL_ERROR ("powerpc only supports default precision rounding", GSL_EUNSUP); + break ; + case GSL_IEEE_DOUBLE_PRECISION: + GSL_ERROR ("powerpc only supports default precision rounding", GSL_EUNSUP); + break ; + case GSL_IEEE_EXTENDED_PRECISION: + GSL_ERROR ("powerpc only supports default precision rounding", GSL_EUNSUP); + break ; + } + + switch (rounding) + { + case GSL_IEEE_ROUND_TO_NEAREST: + fp_scr.rn = RN_NEAREST ; + break ; + case GSL_IEEE_ROUND_DOWN: + fp_scr.rn = RN_TOWARD_MINUS ; + break ; + case GSL_IEEE_ROUND_UP: + fp_scr.rn = RN_TOWARD_PLUS ; + break ; + case GSL_IEEE_ROUND_TO_ZERO: + fp_scr.rn = RN_TOWARD_ZERO ; + break ; + default: + fp_scr.rn = RN_NEAREST ; + } + + if (exception_mask & GSL_IEEE_MASK_INVALID) + fp_scr.ve = 0 ; //ve bit: invalid op exception enable + + if (exception_mask & GSL_IEEE_MASK_DENORMALIZED) + { + /* do nothing */ + } + else + { + GSL_ERROR ("powerpc does not support the denormalized operand exception. " + "Use 'mask-denormalized' to work around this.", GSL_EUNSUP) ; + } + + if (exception_mask & GSL_IEEE_MASK_DIVISION_BY_ZERO) + fp_scr.ze = 0 ; //ze bit: zero divide exception enable + + if (exception_mask & GSL_IEEE_MASK_OVERFLOW) + fp_scr.oe = 0 ; //oe bit: overflow exception enable + + if (exception_mask & GSL_IEEE_MASK_UNDERFLOW) + fp_scr.ue = 0 ; //ue bit: underflow exception enable + + if (exception_mask & GSL_IEEE_TRAP_INEXACT) + { + fp_scr.xe = 1 ; //xe bit: inexact exception enable + } + else + { + fp_scr.xe = 01 ; + } + + set_fp_scr(fp_scr); + + return GSL_SUCCESS ; + +} diff --git a/gsl-2.5/ieee-utils/fp-darwin86.c b/gsl-2.5/ieee-utils/fp-darwin86.c new file mode 100644 index 00000000..ddd4dbec --- /dev/null +++ b/gsl-2.5/ieee-utils/fp-darwin86.c @@ -0,0 +1,204 @@ +/* ieee-utils/fp-darwin86.c + * + * Copyright (C) 2006 Erik Schnetter + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include + +/* Here is the dirty part. Set up your 387 through the control word + * (cw) register. + * + * 15-13 12 11-10 9-8 7-6 5 4 3 2 1 0 + * | reserved | IC | RC | PC | reserved | PM | UM | OM | ZM | DM | IM + * + * IM: Invalid operation mask + * DM: Denormalized operand mask + * ZM: Zero-divide mask + * OM: Overflow mask + * UM: Underflow mask + * PM: Precision (inexact result) mask + * + * Mask bit is 1 means no interrupt. + * + * PC: Precision control + * 11 - round to extended precision + * 10 - round to double precision + * 00 - round to single precision + * + * RC: Rounding control + * 00 - rounding to nearest + * 01 - rounding down (toward - infinity) + * 10 - rounding up (toward + infinity) + * 11 - rounding toward zero + * + * IC: Infinity control + * That is for 8087 and 80287 only. + * + * The hardware default is 0x037f which we use. + */ + +/* masking of interrupts */ +#define _FPU_MASK_IM 0x01 +#define _FPU_MASK_DM 0x02 +#define _FPU_MASK_ZM 0x04 +#define _FPU_MASK_OM 0x08 +#define _FPU_MASK_UM 0x10 +#define _FPU_MASK_PM 0x20 + +/* precision control */ +#define _FPU_EXTENDED 0x300 /* libm requires double extended precision. */ +#define _FPU_DOUBLE 0x200 +#define _FPU_SINGLE 0x0 + +/* rounding control */ +#define _FPU_RC_NEAREST 0x0 /* RECOMMENDED */ +#define _FPU_RC_DOWN 0x400 +#define _FPU_RC_UP 0x800 +#define _FPU_RC_ZERO 0xC00 + +#define _FPU_RESERVED 0xF0C0 /* Reserved bits in cw */ + + +/* The fdlibm code requires strict IEEE double precision arithmetic, + and no interrupts for exceptions, rounding to nearest. */ + +#define _FPU_DEFAULT 0x037f + +/* IEEE: same as above. */ +#define _FPU_IEEE 0x037f + +/* Type of the control word. */ +typedef unsigned int fpu_control_t __attribute__ ((__mode__ (__HI__))); + +/* Macros for accessing the hardware control word. + + Note that the use of these macros is no sufficient anymore with + recent hardware. Some floating point operations are executed in + the SSE/SSE2 engines which have their own control and status register. */ +#define _FPU_GETCW(cw) __asm__ __volatile__ ("fnstcw %0" : "=m" (*&cw)) +#define _FPU_SETCW(cw) __asm__ __volatile__ ("fldcw %0" : : "m" (*&cw)) + +/* Default control word set at startup. */ +extern fpu_control_t __fpu_control; + + + +#define _FPU_GETMXCSR(cw_sse) asm volatile ("stmxcsr %0" : "=m" (cw_sse)) +#define _FPU_SETMXCSR(cw_sse) asm volatile ("ldmxcsr %0" : : "m" (cw_sse)) + + + +int +gsl_ieee_set_mode (int precision, int rounding, int exception_mask) +{ + fpu_control_t mode, mode_sse; + + _FPU_GETCW (mode) ; + mode &= _FPU_RESERVED ; + + switch (precision) + { + case GSL_IEEE_SINGLE_PRECISION: + mode |= _FPU_SINGLE ; + break ; + case GSL_IEEE_DOUBLE_PRECISION: + mode |= _FPU_DOUBLE ; + break ; + case GSL_IEEE_EXTENDED_PRECISION: + mode |= _FPU_EXTENDED ; + break ; + default: + mode |= _FPU_EXTENDED ; + } + + switch (rounding) + { + case GSL_IEEE_ROUND_TO_NEAREST: + mode |= _FPU_RC_NEAREST ; + break ; + case GSL_IEEE_ROUND_DOWN: + mode |= _FPU_RC_DOWN ; + break ; + case GSL_IEEE_ROUND_UP: + mode |= _FPU_RC_UP ; + break ; + case GSL_IEEE_ROUND_TO_ZERO: + mode |= _FPU_RC_ZERO ; + break ; + default: + mode |= _FPU_RC_NEAREST ; + } + + if (exception_mask & GSL_IEEE_MASK_INVALID) + mode |= _FPU_MASK_IM ; + + if (exception_mask & GSL_IEEE_MASK_DENORMALIZED) + mode |= _FPU_MASK_DM ; + + if (exception_mask & GSL_IEEE_MASK_DIVISION_BY_ZERO) + mode |= _FPU_MASK_ZM ; + + if (exception_mask & GSL_IEEE_MASK_OVERFLOW) + mode |= _FPU_MASK_OM ; + + if (exception_mask & GSL_IEEE_MASK_UNDERFLOW) + mode |= _FPU_MASK_UM ; + + if (exception_mask & GSL_IEEE_TRAP_INEXACT) + { + mode &= ~ _FPU_MASK_PM ; + } + else + { + mode |= _FPU_MASK_PM ; + } + + _FPU_SETCW (mode) ; + + _FPU_GETMXCSR (mode_sse) ; + mode_sse &= 0xFFFF0000 ; + + if (exception_mask & GSL_IEEE_MASK_INVALID) + mode_sse |= _FPU_MASK_IM << 7 ; + + if (exception_mask & GSL_IEEE_MASK_DENORMALIZED) + mode_sse |= _FPU_MASK_DM << 7 ; + + if (exception_mask & GSL_IEEE_MASK_DIVISION_BY_ZERO) + mode_sse |= _FPU_MASK_ZM << 7 ; + + if (exception_mask & GSL_IEEE_MASK_OVERFLOW) + mode_sse |= _FPU_MASK_OM << 7 ; + + if (exception_mask & GSL_IEEE_MASK_UNDERFLOW) + mode_sse |= _FPU_MASK_UM << 7 ; + + if (exception_mask & GSL_IEEE_TRAP_INEXACT) + { + mode_sse &= ~ _FPU_MASK_PM << 7 ; + } + else + { + mode_sse |= _FPU_MASK_PM << 7 ; + } + + _FPU_SETMXCSR (mode_sse) ; + + return GSL_SUCCESS ; +} diff --git a/gsl-2.5/ieee-utils/fp-freebsd.c b/gsl-2.5/ieee-utils/fp-freebsd.c new file mode 100644 index 00000000..7dd27026 --- /dev/null +++ b/gsl-2.5/ieee-utils/fp-freebsd.c @@ -0,0 +1,102 @@ +/* ieee-utils/fp-freebsd.c + * + * Copyright (C) 2000 Vladimir Kushnir + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include + +int +gsl_ieee_set_mode (int precision, int rounding, int exception_mask) +{ + fp_prec_t prec = 0 ; + fp_except_t mode = 0 ; + fp_rnd_t rnd = 0 ; + + switch (precision) + { + case GSL_IEEE_SINGLE_PRECISION: + prec = FP_PS; + fpsetprec(prec); + break ; + case GSL_IEEE_DOUBLE_PRECISION: + prec = FP_PD; + fpsetprec(prec); + break ; + case GSL_IEEE_EXTENDED_PRECISION: + prec = FP_PE; + fpsetprec(prec); + break ; + } + + switch (rounding) + { + case GSL_IEEE_ROUND_TO_NEAREST: + rnd = FP_RN ; + fpsetround (rnd) ; + break ; + case GSL_IEEE_ROUND_DOWN: + rnd = FP_RM ; + fpsetround (rnd) ; + break ; + case GSL_IEEE_ROUND_UP: + rnd = FP_RP ; + fpsetround (rnd) ; + break ; + case GSL_IEEE_ROUND_TO_ZERO: + rnd = FP_RZ ; + fpsetround (rnd) ; + break ; + default: + rnd = FP_RN ; + fpsetround (rnd) ; + } + + /* Turn on all the exceptions apart from 'inexact' */ + + mode = FP_X_INV | FP_X_DNML | FP_X_DZ | FP_X_OFL | FP_X_UFL ; + + if (exception_mask & GSL_IEEE_MASK_INVALID) + mode &= ~ FP_X_INV ; + + if (exception_mask & GSL_IEEE_MASK_DENORMALIZED) + mode &= ~ FP_X_DNML ; + + if (exception_mask & GSL_IEEE_MASK_DIVISION_BY_ZERO) + mode &= ~ FP_X_DZ ; + + if (exception_mask & GSL_IEEE_MASK_OVERFLOW) + mode &= ~ FP_X_OFL ; + + if (exception_mask & GSL_IEEE_MASK_UNDERFLOW) + mode &= ~ FP_X_UFL ; + + if (exception_mask & GSL_IEEE_TRAP_INEXACT) + { + mode |= FP_X_IMP ; + } + else + { + mode &= ~ FP_X_IMP ; + } + + fpsetmask (mode) ; + + return GSL_SUCCESS ; + +} diff --git a/gsl-2.5/ieee-utils/fp-gnuc99.c b/gsl-2.5/ieee-utils/fp-gnuc99.c new file mode 100644 index 00000000..70dcbefd --- /dev/null +++ b/gsl-2.5/ieee-utils/fp-gnuc99.c @@ -0,0 +1,182 @@ +/* ieee-utils/fp-gnuc99.c + * + * Copyright (C) 2003, 2004, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#define _GNU_SOURCE 1 + +#include +#include +#include +#include +#include + +int +gsl_ieee_set_mode (int precision, int rounding, int exception_mask) +{ + int mode; + + switch (precision) + { + case GSL_IEEE_SINGLE_PRECISION: + GSL_ERROR ("single precision rounding is not supported by ", + GSL_EUNSUP) ; + break ; + case GSL_IEEE_DOUBLE_PRECISION: + GSL_ERROR ("double precision rounding is not supported by ", + GSL_EUNSUP) ; + break ; + case GSL_IEEE_EXTENDED_PRECISION: + GSL_ERROR ("extended precision rounding is not supported by ", + GSL_EUNSUP) ; + break ; + } + + + switch (rounding) + { + case GSL_IEEE_ROUND_TO_NEAREST: +#ifdef FE_TONEAREST + fesetround (FE_TONEAREST) ; +#else + GSL_ERROR ("round-to-nearest is not supported by ", GSL_EUNSUP) ; +#endif + break ; + case GSL_IEEE_ROUND_DOWN: +#ifdef FE_DOWNWARD + fesetround (FE_DOWNWARD) ; +#else + GSL_ERROR ("round-down is not supported by ", GSL_EUNSUP) ; +#endif + break ; + case GSL_IEEE_ROUND_UP: +#ifdef FE_UPWARD + fesetround (FE_UPWARD) ; +#else + GSL_ERROR ("round-up is not supported by ", GSL_EUNSUP) ; +#endif + break ; + case GSL_IEEE_ROUND_TO_ZERO: +#ifdef FE_TOWARDZERO + fesetround (FE_TOWARDZERO) ; +#else + GSL_ERROR ("round-toward-zero is not supported by ", GSL_EUNSUP) ; +#endif + break ; + default: +#ifdef FE_TONEAREST + fesetround (FE_TONEAREST) ; +#else + GSL_ERROR ("default round-to-nearest mode is not supported by ", GSL_EUNSUP) ; +#endif + } + + /* Turn on all the exceptions apart from 'inexact' */ + + mode = 0; + +#ifdef FE_INVALID + mode |= FE_INVALID; +#endif + +#ifdef FE_DIVBYZERO + mode |= FE_DIVBYZERO; +#endif + +#ifdef FE_OVERFLOW + mode |= FE_OVERFLOW ; +#endif + +#ifdef FE_UNDERFLOW + mode |= FE_UNDERFLOW ; +#endif + + if (exception_mask & GSL_IEEE_MASK_INVALID) + { +#ifdef FE_INVALID + mode &= ~ FE_INVALID ; +#else + GSL_ERROR ("invalid operation exception not supported by ", + GSL_EUNSUP); +#endif + } + + if (exception_mask & GSL_IEEE_MASK_DENORMALIZED) + { + /* do nothing */ + } + else + { + GSL_ERROR ("denormalized operand exception not supported by . " + "Use 'mask-denormalized' to work around this.", GSL_EUNSUP) ; + } + + if (exception_mask & GSL_IEEE_MASK_DIVISION_BY_ZERO) + { +#ifdef FE_DIVBYZERO + mode &= ~ FE_DIVBYZERO ; +#else + GSL_ERROR ("division by zero exception not supported by ", + GSL_EUNSUP); +#endif + } + + if (exception_mask & GSL_IEEE_MASK_OVERFLOW) + { +#ifdef FE_OVERFLOW + mode &= ~ FE_OVERFLOW ; +#else + GSL_ERROR ("overflow exception not supported by ", GSL_EUNSUP); +#endif + } + + if (exception_mask & GSL_IEEE_MASK_UNDERFLOW) + { +#ifdef FE_UNDERFLOW + mode &= ~ FE_UNDERFLOW ; +#else + GSL_ERROR ("underflow exception not supported by ", GSL_EUNSUP); +#endif + } + + if (exception_mask & GSL_IEEE_TRAP_INEXACT) + { +#ifdef FE_INEXACT + mode |= FE_INEXACT ; +#else + GSL_ERROR ("inexact exception not supported by ", GSL_EUNSUP); +#endif + } + else + { +#ifdef FE_INEXACT + mode &= ~ FE_INEXACT ; +#else + /* do nothing */ +#endif + } + +#if HAVE_DECL_FEENABLEEXCEPT + feenableexcept (mode) ; +#elif HAVE_DECL_FESETTRAPENABLE + fesettrapenable (mode); +#else + GSL_ERROR ("unknown exception trap method", GSL_EUNSUP) +#endif + + return GSL_SUCCESS ; +} diff --git a/gsl-2.5/ieee-utils/fp-gnum68k.c b/gsl-2.5/ieee-utils/fp-gnum68k.c new file mode 100644 index 00000000..20d50578 --- /dev/null +++ b/gsl-2.5/ieee-utils/fp-gnum68k.c @@ -0,0 +1,101 @@ +/* ieee-utils/fp-gnum68k.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include + +int +gsl_ieee_set_mode (int precision, int rounding, int exception_mask) +{ + unsigned short mode = 0 ; + + switch (precision) + { + case GSL_IEEE_SINGLE_PRECISION: + mode |= _FPU_SINGLE ; + break ; + case GSL_IEEE_DOUBLE_PRECISION: + mode |= _FPU_DOUBLE ; + break ; + case GSL_IEEE_EXTENDED_PRECISION: + mode |= _FPU_EXTENDED ; + break ; + default: + mode |= _FPU_EXTENDED ; + } + + switch (rounding) + { + case GSL_IEEE_ROUND_TO_NEAREST: + mode |= _FPU_RC_NEAREST ; + break ; + case GSL_IEEE_ROUND_DOWN: + mode |= _FPU_RC_DOWN ; + break ; + case GSL_IEEE_ROUND_UP: + mode |= _FPU_RC_UP ; + break ; + case GSL_IEEE_ROUND_TO_ZERO: + mode |= _FPU_RC_ZERO ; + break ; + default: + mode |= _FPU_RC_NEAREST ; + } + + /* FIXME: I don't have documentation for the M68K so I'm not sure + about the mapping of the exceptions below. Maybe someone who does + know could correct this. */ + + if (exception_mask & GSL_IEEE_MASK_INVALID) + mode |= _FPU_MASK_OPERR ; + + if (exception_mask & GSL_IEEE_MASK_DENORMALIZED) + { + /* do nothing */ + } + else + { + GSL_ERROR ("the denormalized operand exception has not been implemented for m68k yet. Use 'mask-denormalized' to work around this.", GSL_EUNSUP) ; + /*mode |= _FPU_MASK_DM ; ???? */ + } + + if (exception_mask & GSL_IEEE_MASK_DIVISION_BY_ZERO) + mode |= _FPU_MASK_DZ ; + + if (exception_mask & GSL_IEEE_MASK_OVERFLOW) + mode |= _FPU_MASK_OVFL ; + + if (exception_mask & GSL_IEEE_MASK_UNDERFLOW) + mode |= _FPU_MASK_UNFL ; + + if (exception_mask & GSL_IEEE_TRAP_INEXACT) + { + mode &= ~ (_FPU_MASK_INEX1 | _FPU_MASK_INEX2) ; + } + else + { + mode |= (_FPU_MASK_INEX1 | _FPU_MASK_INEX2) ; + } + + _FPU_SETCW(mode) ; + + return GSL_SUCCESS ; +} diff --git a/gsl-2.5/ieee-utils/fp-gnuppc.c b/gsl-2.5/ieee-utils/fp-gnuppc.c new file mode 100644 index 00000000..6a4441ab --- /dev/null +++ b/gsl-2.5/ieee-utils/fp-gnuppc.c @@ -0,0 +1,98 @@ +/* ieee-utils/fp-gnuppc.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough, John Fisher + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include + + +/* + * Identical to fp-gnux86.c, except with references to + * _FPU_SINGLE, _FPU_DOUBLE, _FPU_EXTENDED, _FPU_MASK_DM + * and _FPU_MASK_PM converted to errors. + */ + +int +gsl_ieee_set_mode (int precision, int rounding, int exception_mask) +{ + unsigned short mode = 0 ; + + switch (precision) + { + case GSL_IEEE_SINGLE_PRECISION: + GSL_ERROR ("powerpc only supports default precision rounding", GSL_EUNSUP); + break ; + case GSL_IEEE_DOUBLE_PRECISION: + GSL_ERROR ("powerpc only supports default precision rounding", GSL_EUNSUP); + break ; + case GSL_IEEE_EXTENDED_PRECISION: + GSL_ERROR ("powerpc only supports default precision rounding", GSL_EUNSUP); + break ; + } + + switch (rounding) + { + case GSL_IEEE_ROUND_TO_NEAREST: + mode |= _FPU_RC_NEAREST ; + break ; + case GSL_IEEE_ROUND_DOWN: + mode |= _FPU_RC_DOWN ; + break ; + case GSL_IEEE_ROUND_UP: + mode |= _FPU_RC_UP ; + break ; + case GSL_IEEE_ROUND_TO_ZERO: + mode |= _FPU_RC_ZERO ; + break ; + default: + mode |= _FPU_RC_NEAREST ; + } + + if (exception_mask & GSL_IEEE_MASK_INVALID) + mode |= _FPU_MASK_IM ; + + if (exception_mask & GSL_IEEE_MASK_DENORMALIZED) + { + /* do nothing */ + } + else + { + GSL_ERROR ("powerpc does not support the denormalized operand exception. " + "Use 'mask-denormalized' to work around this.", GSL_EUNSUP) ; + } + + if (exception_mask & GSL_IEEE_MASK_DIVISION_BY_ZERO) + mode |= _FPU_MASK_ZM ; + + if (exception_mask & GSL_IEEE_MASK_OVERFLOW) + mode |= _FPU_MASK_OM ; + + if (exception_mask & GSL_IEEE_MASK_UNDERFLOW) + mode |= _FPU_MASK_UM ; + + if (exception_mask & GSL_IEEE_TRAP_INEXACT) + { + GSL_ERROR ("powerpc does not support traps for inexact operations", GSL_EUNSUP) ; + } + + _FPU_SETCW(mode) ; + + return GSL_SUCCESS ; +} diff --git a/gsl-2.5/ieee-utils/fp-gnusparc.c b/gsl-2.5/ieee-utils/fp-gnusparc.c new file mode 100644 index 00000000..ebffdae7 --- /dev/null +++ b/gsl-2.5/ieee-utils/fp-gnusparc.c @@ -0,0 +1,97 @@ +/* ieee-utils/fp-gnusparc.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include + +int +gsl_ieee_set_mode (int precision, int rounding, int exception_mask) +{ + unsigned short mode = 0 ; + + switch (precision) + { + case GSL_IEEE_SINGLE_PRECISION: + mode |= _FPU_SINGLE ; + break ; + case GSL_IEEE_DOUBLE_PRECISION: + mode |= _FPU_DOUBLE ; + break ; + case GSL_IEEE_EXTENDED_PRECISION: + mode |= _FPU_EXTENDED ; + break ; + default: + mode |= _FPU_EXTENDED ; + } + + switch (rounding) + { + case GSL_IEEE_ROUND_TO_NEAREST: + mode |= _FPU_RC_NEAREST ; + break ; + case GSL_IEEE_ROUND_DOWN: + mode |= _FPU_RC_DOWN ; + break ; + case GSL_IEEE_ROUND_UP: + mode |= _FPU_RC_UP ; + break ; + case GSL_IEEE_ROUND_TO_ZERO: + mode |= _FPU_RC_ZERO ; + break ; + default: + mode |= _FPU_RC_NEAREST ; + } + + if (exception_mask & GSL_IEEE_MASK_INVALID) + mode |= _FPU_MASK_IM ; + + if (exception_mask & GSL_IEEE_MASK_DENORMALIZED) + { + /* do nothing */ + } + else + { + GSL_ERROR ("sparc does not support the denormalized operand exception. " + "Use 'mask-denormalized' to work around this.", GSL_EUNSUP) ; + } + + if (exception_mask & GSL_IEEE_MASK_DIVISION_BY_ZERO) + mode |= _FPU_MASK_ZM ; + + if (exception_mask & GSL_IEEE_MASK_OVERFLOW) + mode |= _FPU_MASK_OM ; + + if (exception_mask & GSL_IEEE_MASK_UNDERFLOW) + mode |= _FPU_MASK_UM ; + + if (exception_mask & GSL_IEEE_TRAP_INEXACT) + { + mode &= ~ _FPU_MASK_PM ; + } + else + { + mode |= _FPU_MASK_PM ; + } + + _FPU_SETCW(mode) ; + + return GSL_SUCCESS ; +} diff --git a/gsl-2.5/ieee-utils/fp-gnux86.c b/gsl-2.5/ieee-utils/fp-gnux86.c new file mode 100644 index 00000000..348625b7 --- /dev/null +++ b/gsl-2.5/ieee-utils/fp-gnux86.c @@ -0,0 +1,111 @@ +/* ieee-utils/fp-gnux86.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include + + /* Handle libc5, where _FPU_SETCW is not available, suggested by + OKUJI Yoshinori and Evgeny Stambulchik + */ + +#ifndef _FPU_SETCW +#include +#define _FPU_SETCW(cw) __setfpucw(cw) +#endif + +int +gsl_ieee_set_mode (int precision, int rounding, int exception_mask) +{ + unsigned short mode = 0 ; + + switch (precision) + { + case GSL_IEEE_SINGLE_PRECISION: + mode |= _FPU_SINGLE ; + break ; + case GSL_IEEE_DOUBLE_PRECISION: + mode |= _FPU_DOUBLE ; + break ; + case GSL_IEEE_EXTENDED_PRECISION: + mode |= _FPU_EXTENDED ; + break ; + default: + mode |= _FPU_EXTENDED ; + } + + switch (rounding) + { + case GSL_IEEE_ROUND_TO_NEAREST: + mode |= _FPU_RC_NEAREST ; + break ; + case GSL_IEEE_ROUND_DOWN: + mode |= _FPU_RC_DOWN ; + break ; + case GSL_IEEE_ROUND_UP: + mode |= _FPU_RC_UP ; + break ; + case GSL_IEEE_ROUND_TO_ZERO: + mode |= _FPU_RC_ZERO ; + break ; + default: + mode |= _FPU_RC_NEAREST ; + } + + if (exception_mask & GSL_IEEE_MASK_INVALID) + mode |= _FPU_MASK_IM ; + + if (exception_mask & GSL_IEEE_MASK_DENORMALIZED) + mode |= _FPU_MASK_DM ; + + if (exception_mask & GSL_IEEE_MASK_DIVISION_BY_ZERO) + mode |= _FPU_MASK_ZM ; + + if (exception_mask & GSL_IEEE_MASK_OVERFLOW) + mode |= _FPU_MASK_OM ; + + if (exception_mask & GSL_IEEE_MASK_UNDERFLOW) + mode |= _FPU_MASK_UM ; + + if (exception_mask & GSL_IEEE_TRAP_INEXACT) + { + mode &= ~ _FPU_MASK_PM ; + } + else + { + mode |= _FPU_MASK_PM ; + } + + _FPU_SETCW(mode) ; + +#if HAVE_FPU_X86_SSE +#define _FPU_SETMXCSR(cw_sse) asm volatile ("ldmxcsr %0" : : "m" (*&cw_sse)) + { + unsigned int mode_sse = 0; + + mode_sse |= (mode & 0x3f)<<7; /* exception masks */ + mode_sse |= (mode & 0xc00)<<3; /* rounding control */ + + _FPU_SETMXCSR(mode_sse); + } +#endif + + return GSL_SUCCESS ; +} diff --git a/gsl-2.5/ieee-utils/fp-hpux.c b/gsl-2.5/ieee-utils/fp-hpux.c new file mode 100644 index 00000000..4bd00459 --- /dev/null +++ b/gsl-2.5/ieee-utils/fp-hpux.c @@ -0,0 +1,110 @@ +/* ieee-utils/fp-hpux.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include + +int +gsl_ieee_set_mode (int precision, int rounding, int exception_mask) +{ + fp_except mode = 0 ; + fp_rnd rnd = 0 ; + + switch (precision) + { + case GSL_IEEE_SINGLE_PRECISION: + GSL_ERROR ("HPUX PA-RISC only supports default precision rounding", + GSL_EUNSUP) ; + break ; + case GSL_IEEE_DOUBLE_PRECISION: + GSL_ERROR ("HPUX PA-RISC only supports default precision rounding", + GSL_EUNSUP) ; + break ; + case GSL_IEEE_EXTENDED_PRECISION: + GSL_ERROR ("HPUX PA-RISC only supports default precision rounding", + GSL_EUNSUP) ; + break ; + } + + + switch (rounding) + { + case GSL_IEEE_ROUND_TO_NEAREST: + rnd = FP_RN ; + fpsetround (rnd) ; + break ; + case GSL_IEEE_ROUND_DOWN: + rnd = FP_RM ; + fpsetround (rnd) ; + break ; + case GSL_IEEE_ROUND_UP: + rnd = FP_RP ; + fpsetround (rnd) ; + break ; + case GSL_IEEE_ROUND_TO_ZERO: + rnd = FP_RZ ; + fpsetround (rnd) ; + break ; + default: + rnd = FP_RN ; + fpsetround (rnd) ; + } + + /* Turn on all the exceptions apart from 'inexact' */ + + mode = FP_X_INV | FP_X_DZ | FP_X_OFL | FP_X_UFL ; + + if (exception_mask & GSL_IEEE_MASK_INVALID) + mode &= ~ FP_X_INV ; + + if (exception_mask & GSL_IEEE_MASK_DENORMALIZED) + { + /* do nothing */ + } + else + { + GSL_ERROR ("HP-UX does not support the denormalized operand exception. " + "Use 'mask-denormalized' to work around this.", + GSL_EUNSUP) ; + } + + if (exception_mask & GSL_IEEE_MASK_DIVISION_BY_ZERO) + mode &= ~ FP_X_DZ ; + + if (exception_mask & GSL_IEEE_MASK_OVERFLOW) + mode &= ~ FP_X_OFL ; + + if (exception_mask & GSL_IEEE_MASK_UNDERFLOW) + mode &= ~ FP_X_UFL ; + + if (exception_mask & GSL_IEEE_TRAP_INEXACT) + { + mode |= FP_X_IMP ; + } + else + { + mode &= ~ FP_X_IMP ; + } + + fpsetmask (mode) ; + + return GSL_SUCCESS ; +} diff --git a/gsl-2.5/ieee-utils/fp-hpux11.c b/gsl-2.5/ieee-utils/fp-hpux11.c new file mode 100644 index 00000000..df0c34ac --- /dev/null +++ b/gsl-2.5/ieee-utils/fp-hpux11.c @@ -0,0 +1,105 @@ +/* ieee-utils/fp-hpux11.c + * + * Copyright (C) 2001, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include + +int +gsl_ieee_set_mode (int precision, int rounding, int exception_mask) +{ + int mode; + + switch (precision) + { + case GSL_IEEE_SINGLE_PRECISION: + GSL_ERROR ("HPUX PA-RISC only supports default precision rounding", + GSL_EUNSUP) ; + break ; + case GSL_IEEE_DOUBLE_PRECISION: + GSL_ERROR ("HPUX PA-RISC only supports default precision rounding", + GSL_EUNSUP) ; + break ; + case GSL_IEEE_EXTENDED_PRECISION: + GSL_ERROR ("HPUX PA-RISC only supports default precision rounding", + GSL_EUNSUP) ; + break ; + } + + + switch (rounding) + { + case GSL_IEEE_ROUND_TO_NEAREST: + fesetround (FE_TONEAREST) ; + break ; + case GSL_IEEE_ROUND_DOWN: + fesetround (FE_DOWNWARD) ; + break ; + case GSL_IEEE_ROUND_UP: + fesetround (FE_UPWARD) ; + break ; + case GSL_IEEE_ROUND_TO_ZERO: + fesetround (FE_TOWARDZERO) ; + break ; + default: + fesetround (FE_TONEAREST) ; + } + + /* Turn on all the exceptions apart from 'inexact' */ + + mode = FE_INVALID | FE_DIVBYZERO | FE_OVERFLOW | FE_UNDERFLOW ; + + if (exception_mask & GSL_IEEE_MASK_INVALID) + mode &= ~ FE_INVALID ; + + if (exception_mask & GSL_IEEE_MASK_DENORMALIZED) + { + /* do nothing */ + } + else + { + GSL_ERROR ("HP-UX does not support the denormalized operand exception. " + "Use 'mask-denormalized' to work around this.", + GSL_EUNSUP) ; + } + + if (exception_mask & GSL_IEEE_MASK_DIVISION_BY_ZERO) + mode &= ~ FE_DIVBYZERO ; + + if (exception_mask & GSL_IEEE_MASK_OVERFLOW) + mode &= ~ FE_OVERFLOW ; + + if (exception_mask & GSL_IEEE_MASK_UNDERFLOW) + mode &= ~ FE_UNDERFLOW ; + + if (exception_mask & GSL_IEEE_TRAP_INEXACT) + { + mode |= FE_INEXACT ; + } + else + { + mode &= ~ FE_INEXACT ; + } + + fesettrapenable (mode) ; + + return GSL_SUCCESS ; +} diff --git a/gsl-2.5/ieee-utils/fp-irix.c b/gsl-2.5/ieee-utils/fp-irix.c new file mode 100644 index 00000000..de6c1f7e --- /dev/null +++ b/gsl-2.5/ieee-utils/fp-irix.c @@ -0,0 +1,110 @@ +/* ieee-utils/fp-irix.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Tim Mooney + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include + +int +gsl_ieee_set_mode (int precision, int rounding, int exception_mask) +{ + fp_except mode = 0 ; + fp_rnd rnd = 0 ; + + switch (precision) + { + case GSL_IEEE_SINGLE_PRECISION: + GSL_ERROR ("IRIX only supports default precision rounding", + GSL_EUNSUP) ; + break ; + case GSL_IEEE_DOUBLE_PRECISION: + GSL_ERROR ("IRIX only supports default precision rounding", + GSL_EUNSUP) ; + break ; + case GSL_IEEE_EXTENDED_PRECISION: + GSL_ERROR ("IRIX only supports default precision rounding", + GSL_EUNSUP) ; + break ; + } + + switch (rounding) + { + case GSL_IEEE_ROUND_TO_NEAREST: + rnd = FP_RN ; + fpsetround (rnd) ; + break ; + case GSL_IEEE_ROUND_DOWN: + rnd = FP_RM ; + fpsetround (rnd) ; + break ; + case GSL_IEEE_ROUND_UP: + rnd = FP_RP ; + fpsetround (rnd) ; + break ; + case GSL_IEEE_ROUND_TO_ZERO: + rnd = FP_RZ ; + fpsetround (rnd) ; + break ; + default: + rnd = FP_RN ; + fpsetround (rnd) ; + } + + /* Turn on all the exceptions apart from 'inexact' */ + + mode = FP_X_INV | FP_X_DZ | FP_X_OFL | FP_X_UFL ; + + if (exception_mask & GSL_IEEE_MASK_INVALID) + mode &= ~ FP_X_INV ; + + if (exception_mask & GSL_IEEE_MASK_DENORMALIZED) + { + /* do nothing */ + } + else + { + GSL_ERROR ("IRIX does not support the denormalized operand exception. " + "Use 'mask-denormalized' to work around this.", + GSL_EUNSUP) ; + } + + if (exception_mask & GSL_IEEE_MASK_DIVISION_BY_ZERO) + mode &= ~ FP_X_DZ ; + + if (exception_mask & GSL_IEEE_MASK_OVERFLOW) + mode &= ~ FP_X_OFL ; + + if (exception_mask & GSL_IEEE_MASK_UNDERFLOW) + mode &= ~ FP_X_UFL ; + + if (exception_mask & GSL_IEEE_TRAP_INEXACT) + { + mode |= FP_X_IMP ; + } + else + { + mode &= ~ FP_X_IMP ; + } + + fpsetmask (mode) ; + + return GSL_SUCCESS ; + +} diff --git a/gsl-2.5/ieee-utils/fp-netbsd.c b/gsl-2.5/ieee-utils/fp-netbsd.c new file mode 100644 index 00000000..c195fd20 --- /dev/null +++ b/gsl-2.5/ieee-utils/fp-netbsd.c @@ -0,0 +1,118 @@ +/* fp-netbsd.c + * + * Copyright (C) 2001 Jason Beegan + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include + +int +gsl_ieee_set_mode (int precision, int rounding, int exception_mask) +{ + fp_except mode = 0; + fp_rnd rnd = 0; + + switch (precision) + { + case GSL_IEEE_SINGLE_PRECISION: + GSL_ERROR ("NetBSD only supports default precision rounding", + GSL_EUNSUP); + break; + case GSL_IEEE_DOUBLE_PRECISION: + GSL_ERROR ("NetBSD only supports default precision rounding", + GSL_EUNSUP); + break; + case GSL_IEEE_EXTENDED_PRECISION: + GSL_ERROR ("NetBSD only supports default precision rounding", + GSL_EUNSUP); + break; + } + + switch (rounding) + { + case GSL_IEEE_ROUND_TO_NEAREST: + rnd = FP_RN; + fpsetround (rnd); + break; + case GSL_IEEE_ROUND_DOWN: + rnd = FP_RM; + fpsetround (rnd); + break; + case GSL_IEEE_ROUND_UP: + rnd = FP_RP; + fpsetround (rnd); + break; + case GSL_IEEE_ROUND_TO_ZERO: + rnd = FP_RZ; + fpsetround (rnd); + break; + default: + rnd = FP_RN; + fpsetround (rnd); + } + +/* Turn on all available exceptions apart from 'inexact'. + Denormalized operand exception not available on all platforms. */ + + mode = FP_X_INV | FP_X_DZ | FP_X_OFL | FP_X_UFL; +#ifdef FP_X_DNML + mode = mode | FP_X_DNML; +#endif + + if (exception_mask & GSL_IEEE_MASK_INVALID) + mode &= ~ FP_X_INV; + + if (exception_mask & GSL_IEEE_MASK_DENORMALIZED) + { +#ifdef FP_X_DNML + mode &= ~ FP_X_DNML; +#endif + } + else + { +#ifndef FP_X_DNML + GSL_ERROR ("NetBSD does not support the denormalized operand exception on this platform. " + "Use 'mask-denormalized' to work around this.", + GSL_EUNSUP); +#endif + } + + if (exception_mask & GSL_IEEE_MASK_DIVISION_BY_ZERO) + mode &= ~ FP_X_DZ; + + if (exception_mask & GSL_IEEE_MASK_OVERFLOW) + mode &= ~ FP_X_OFL; + + if (exception_mask & GSL_IEEE_MASK_UNDERFLOW) + mode &= ~ FP_X_UFL; + + if (exception_mask & GSL_IEEE_TRAP_INEXACT) + { + mode |= FP_X_IMP; + } + else + { + mode &= ~ FP_X_IMP; + } + + fpsetmask (mode); + + return GSL_SUCCESS; + +} + diff --git a/gsl-2.5/ieee-utils/fp-openbsd.c b/gsl-2.5/ieee-utils/fp-openbsd.c new file mode 100644 index 00000000..f417e47c --- /dev/null +++ b/gsl-2.5/ieee-utils/fp-openbsd.c @@ -0,0 +1,121 @@ +/* fp-openbsd.c + * + * Copyright (C) 2001 Jason Beegan + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include + +/* This is a copy of fp-netbsd.c, modified for openbsd by Toby White + --- Brian Gough */ + +int +gsl_ieee_set_mode (int precision, int rounding, int exception_mask) +{ + fp_except mode = 0; + fp_rnd rnd = 0; + + switch (precision) + { + case GSL_IEEE_SINGLE_PRECISION: + GSL_ERROR ("OpenBSD only supports default precision rounding", + GSL_EUNSUP); + break; + case GSL_IEEE_DOUBLE_PRECISION: + GSL_ERROR ("OpenBSD only supports default precision rounding", + GSL_EUNSUP); + break; + case GSL_IEEE_EXTENDED_PRECISION: + GSL_ERROR ("OpenBSD only supports default precision rounding", + GSL_EUNSUP); + break; + } + + switch (rounding) + { + case GSL_IEEE_ROUND_TO_NEAREST: + rnd = FP_RN; + fpsetround (rnd); + break; + case GSL_IEEE_ROUND_DOWN: + rnd = FP_RM; + fpsetround (rnd); + break; + case GSL_IEEE_ROUND_UP: + rnd = FP_RP; + fpsetround (rnd); + break; + case GSL_IEEE_ROUND_TO_ZERO: + rnd = FP_RZ; + fpsetround (rnd); + break; + default: + rnd = FP_RN; + fpsetround (rnd); + } + +/* Turn on all available exceptions apart from 'inexact'. + Denormalized operand exception not available on all platforms. */ + + mode = FP_X_INV | FP_X_DZ | FP_X_OFL | FP_X_UFL; +#ifdef FP_X_DNML + mode = mode | FP_X_DNML; +#endif + + if (exception_mask & GSL_IEEE_MASK_INVALID) + mode &= ~ FP_X_INV; + + if (exception_mask & GSL_IEEE_MASK_DENORMALIZED) + { +#ifdef FP_X_DNML + mode &= ~ FP_X_DNML; +#endif + } + else + { +#ifndef FP_X_DNML + GSL_ERROR ("OpenBSD does not support the denormalized operand exception on this platform. " + "Use 'mask-denormalized' to work around this.", + GSL_EUNSUP); +#endif + } + + if (exception_mask & GSL_IEEE_MASK_DIVISION_BY_ZERO) + mode &= ~ FP_X_DZ; + + if (exception_mask & GSL_IEEE_MASK_OVERFLOW) + mode &= ~ FP_X_OFL; + + if (exception_mask & GSL_IEEE_MASK_UNDERFLOW) + mode &= ~ FP_X_UFL; + + if (exception_mask & GSL_IEEE_TRAP_INEXACT) + { + mode |= FP_X_IMP; + } + else + { + mode &= ~ FP_X_IMP; + } + + fpsetmask (mode); + + return GSL_SUCCESS; + +} + diff --git a/gsl-2.5/ieee-utils/fp-os2emx.c b/gsl-2.5/ieee-utils/fp-os2emx.c new file mode 100644 index 00000000..8c41a50a --- /dev/null +++ b/gsl-2.5/ieee-utils/fp-os2emx.c @@ -0,0 +1,91 @@ +/* ieee-utils/fp-os2.c + * + * Copyright (C) 2001 Henry Sobotka + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include + +int +gsl_ieee_set_mode (int precision, int rounding, int exception_mask) +{ + unsigned mode = 0; + + switch (precision) + { + case GSL_IEEE_SINGLE_PRECISION: + _control87(PC_24, MCW_PC); + break ; + case GSL_IEEE_DOUBLE_PRECISION: + _control87(PC_53, MCW_PC); + break ; + case GSL_IEEE_EXTENDED_PRECISION: + _control87(PC_64, MCW_PC); + break ; + } + + switch (rounding) + { + case GSL_IEEE_ROUND_TO_NEAREST: + _control87(RC_NEAR, MCW_RC); + break ; + case GSL_IEEE_ROUND_DOWN: + _control87(RC_DOWN, MCW_RC); + break ; + case GSL_IEEE_ROUND_UP: + _control87(RC_UP, MCW_RC); + break ; + case GSL_IEEE_ROUND_TO_ZERO: + _control87(RC_CHOP, MCW_RC); + break ; + default: + _control87(RC_NEAR, MCW_RC); + } + + /* Turn on all the exceptions apart from 'inexact' */ + + mode = EM_INVALID | EM_DENORMAL | EM_ZERODIVIDE | EM_OVERFLOW | EM_UNDERFLOW; + + if (exception_mask & GSL_IEEE_MASK_INVALID) + mode &= ~ EM_INVALID; + + if (exception_mask & GSL_IEEE_MASK_DENORMALIZED) + mode &= ~ EM_DENORMAL; + + if (exception_mask & GSL_IEEE_MASK_DIVISION_BY_ZERO) + mode &= ~ EM_ZERODIVIDE; + + if (exception_mask & GSL_IEEE_MASK_OVERFLOW) + mode &= ~ EM_OVERFLOW; + + if (exception_mask & GSL_IEEE_MASK_UNDERFLOW) + mode &= ~ EM_UNDERFLOW; + + if (exception_mask & GSL_IEEE_TRAP_INEXACT) + { + mode |= EM_INEXACT; + } + else + { + mode &= ~ EM_INEXACT; + } + + _control87(mode, MCW_EM); + + return GSL_SUCCESS ; +} diff --git a/gsl-2.5/ieee-utils/fp-solaris.c b/gsl-2.5/ieee-utils/fp-solaris.c new file mode 100644 index 00000000..2c3db01e --- /dev/null +++ b/gsl-2.5/ieee-utils/fp-solaris.c @@ -0,0 +1,110 @@ +/* ieee-utils/fp-solaris.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include + +int +gsl_ieee_set_mode (int precision, int rounding, int exception_mask) +{ + fp_except mode = 0 ; + fp_rnd rnd = 0 ; + + switch (precision) + { + case GSL_IEEE_SINGLE_PRECISION: + GSL_ERROR ("solaris only supports default precision rounding", + GSL_EUNSUP) ; + break ; + case GSL_IEEE_DOUBLE_PRECISION: + GSL_ERROR ("solaris only supports default precision rounding", + GSL_EUNSUP) ; + break ; + case GSL_IEEE_EXTENDED_PRECISION: + GSL_ERROR ("solaris only supports default precision rounding", + GSL_EUNSUP) ; + break ; + } + + switch (rounding) + { + case GSL_IEEE_ROUND_TO_NEAREST: + rnd = FP_RN ; + fpsetround (rnd) ; + break ; + case GSL_IEEE_ROUND_DOWN: + rnd = FP_RM ; + fpsetround (rnd) ; + break ; + case GSL_IEEE_ROUND_UP: + rnd = FP_RP ; + fpsetround (rnd) ; + break ; + case GSL_IEEE_ROUND_TO_ZERO: + rnd = FP_RZ ; + fpsetround (rnd) ; + break ; + default: + rnd = FP_RN ; + fpsetround (rnd) ; + } + + /* Turn on all the exceptions apart from 'inexact' */ + + mode = FP_X_INV | FP_X_DZ | FP_X_OFL | FP_X_UFL ; + + if (exception_mask & GSL_IEEE_MASK_INVALID) + mode &= ~ FP_X_INV ; + + if (exception_mask & GSL_IEEE_MASK_DENORMALIZED) + { + /* do nothing */ + } + else + { + GSL_ERROR ("solaris does not support the denormalized operand exception. " + "Use 'mask-denormalized' to work around this.", + GSL_EUNSUP) ; + } + + if (exception_mask & GSL_IEEE_MASK_DIVISION_BY_ZERO) + mode &= ~ FP_X_DZ ; + + if (exception_mask & GSL_IEEE_MASK_OVERFLOW) + mode &= ~ FP_X_OFL ; + + if (exception_mask & GSL_IEEE_MASK_UNDERFLOW) + mode &= ~ FP_X_UFL ; + + if (exception_mask & GSL_IEEE_TRAP_INEXACT) + { + mode |= FP_X_IMP ; + } + else + { + mode &= ~ FP_X_IMP ; + } + + fpsetmask (mode) ; + + return GSL_SUCCESS ; + +} diff --git a/gsl-2.5/ieee-utils/fp-sunos4.c b/gsl-2.5/ieee-utils/fp-sunos4.c new file mode 100644 index 00000000..69dba4fe --- /dev/null +++ b/gsl-2.5/ieee-utils/fp-sunos4.c @@ -0,0 +1,122 @@ +/* ieee-utils/fp-sunos4.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include + +int +gsl_ieee_set_mode (int precision, int rounding, int exception_mask) +{ + char * out ; + + switch (precision) + { + case GSL_IEEE_SINGLE_PRECISION: + ieee_flags ("set", "precision", "single", out) ; + break ; + case GSL_IEEE_DOUBLE_PRECISION: + ieee_flags ("set", "precision", "double", out) ; + break ; + case GSL_IEEE_EXTENDED_PRECISION: + ieee_flags ("set", "precision", "extended", out) ; + break ; + default: + ieee_flags ("set", "precision", "extended", out) ; + } + + switch (rounding) + { + case GSL_IEEE_ROUND_TO_NEAREST: + ieee_flags ("set", "direction", "nearest", out) ; + break ; + case GSL_IEEE_ROUND_DOWN: + ieee_flags ("set", "direction", "negative", out) ; + break ; + case GSL_IEEE_ROUND_UP: + ieee_flags ("set", "direction", "positive", out) ; + break ; + case GSL_IEEE_ROUND_TO_ZERO: + ieee_flags ("set", "direction", "tozero", out) ; + break ; + default: + ieee_flags ("set", "direction", "nearest", out) ; + } + + if (exception_mask & GSL_IEEE_MASK_INVALID) + { + ieee_handler ("set", "invalid", SIGFPE_IGNORE) ; + } + else + { + ieee_handler ("set", "invalid", SIGFPE_ABORT) ; + } + + if (exception_mask & GSL_IEEE_MASK_DENORMALIZED) + { + ieee_handler ("set", "denormalized", SIGFPE_IGNORE) ; + } + else + { + GSL_ERROR ("sunos4 does not support the denormalized operand exception. " + "Use 'mask-denormalized' to work around this.", + GSL_EUNSUP) ; + } + + + if (exception_mask & GSL_IEEE_MASK_DIVISION_BY_ZERO) + { + ieee_handler ("set", "division", SIGFPE_IGNORE) ; + } + else + { + ieee_handler ("set", "division", SIGFPE_ABORT) ; + } + + if (exception_mask & GSL_IEEE_MASK_OVERFLOW) + { + ieee_handler ("set", "overflow", SIGFPE_IGNORE) ; + } + else + { + ieee_handler ("set", "overflow", SIGFPE_ABORT) ; + } + + if (exception_mask & GSL_IEEE_MASK_UNDERFLOW) + { + ieee_handler ("set", "underflow", SIGFPE_IGNORE) ; + } + else + { + ieee_handler ("set", "underflow", SIGFPE_ABORT) ; + } + + if (exception_mask & GSL_IEEE_TRAP_INEXACT) + { + ieee_handler ("set", "inexact", SIGFPE_ABORT) ; + } + else + { + ieee_handler ("set", "inexact", SIGFPE_IGNORE) ; + } + + return GSL_SUCCESS ; +} diff --git a/gsl-2.5/ieee-utils/fp-tru64.c b/gsl-2.5/ieee-utils/fp-tru64.c new file mode 100644 index 00000000..7feccd9a --- /dev/null +++ b/gsl-2.5/ieee-utils/fp-tru64.c @@ -0,0 +1,176 @@ +/* ieee-utils/fp-tru64.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Tim Mooney + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + + +/* + * Under Compaq's Unix with the silly name, read the man pages for read_rnd, + * write_rnd, and ieee(3) for more information on the functions used here. + * + * Note that enabling control of dynamic rounding mode (via write_rnd) requires + * that you pass a special flag to your C compiler. For Compaq's C compiler + * the flag is `-fprm d', for gcc it's `-mfp-rounding-mode=d'. + * + * Enabling the trap control (via ieee_set_fp_control) also requires a + * flag be passed to the C compiler. The flag for Compaq's C compiler + * is `-ieee' and for gcc it's `-mieee'. + + * We have not implemented the `inexact' case, since it is rarely used + * and requires the library being built with an additional compiler + * flag that can degrade performance for everything else. If you need + * to add support for `inexact' the relevant flag for Compaq's + * compiler is `-ieee_with_inexact', and the flag for gcc is + * `-mieee-with-inexact'. + * + * Problem have been reported with the "fixed" float.h installed with + * gcc-2.95 lacking some of the definitions in the system float.h (the + * symptoms are errors like: `FP_RND_RN' undeclared). To work around + * this we can include the system float.h before the gcc version, e.g. + * + * #include "/usr/include/float.h" + * #include + */ + +#include + +#ifndef FP_RND_RN +# undef _FLOAT_H_ +# include "/usr/include/float.h" +# undef _FLOAT_H_ +# include +#endif + +#include +#include +#include +#include + +int +gsl_ieee_set_mode (int precision, int rounding, int exception_mask) +{ + unsigned long int mode = 0 ; + unsigned int rnd = 0 ; + +/* I'm actually not completely sure that the alpha only supports default + * precisions rounding, but I couldn't find any information regarding this, so + * it seems safe to assume this for now until it's proven otherwise. + */ + + switch (precision) + { + case GSL_IEEE_SINGLE_PRECISION: + GSL_ERROR ("Tru64 Unix on the alpha only supports default precision rounding", + GSL_EUNSUP) ; + break ; + case GSL_IEEE_DOUBLE_PRECISION: + GSL_ERROR ("Tru64 Unix on the alpha only supports default precision rounding", + GSL_EUNSUP) ; + break ; + case GSL_IEEE_EXTENDED_PRECISION: + GSL_ERROR ("Tru64 Unix on the alpha only supports default precision rounding", + GSL_EUNSUP) ; + break ; + } + + + switch (rounding) + { + case GSL_IEEE_ROUND_TO_NEAREST: + rnd = FP_RND_RN ; + write_rnd (rnd) ; + break ; + case GSL_IEEE_ROUND_DOWN: + rnd = FP_RND_RM ; + write_rnd (rnd) ; + break ; + case GSL_IEEE_ROUND_UP: + rnd = FP_RND_RP ; + write_rnd (rnd) ; + break ; + case GSL_IEEE_ROUND_TO_ZERO: + rnd = FP_RND_RZ ; + write_rnd (rnd) ; + break ; + default: + rnd = FP_RND_RN ; + write_rnd (rnd) ; + } + + /* Turn on all the exceptions apart from 'inexact' */ + + /* from the ieee(3) man page: + * IEEE_TRAP_ENABLE_INV -> Invalid operation + * IEEE_TRAP_ENABLE_DZE -> Divide by 0 + * IEEE_TRAP_ENABLE_OVF -> Overflow + * IEEE_TRAP_ENABLE_UNF -> Underflow + * IEEE_TRAP_ENABLE_INE -> Inexact (requires special option to C compiler) + * IEEE_TRAP_ENABLE_DNO -> denormal operand + * Note: IEEE_TRAP_ENABLE_DNO is not supported on OSF 3.x or Digital Unix + * 4.0 - 4.0d(?). + * IEEE_TRAP_ENABLE_MASK -> mask of all the trap enables + * IEEE_MAP_DMZ -> map denormal inputs to zero + * IEEE_MAP_UMZ -> map underflow results to zero + */ + + mode = IEEE_TRAP_ENABLE_INV | IEEE_TRAP_ENABLE_DZE | IEEE_TRAP_ENABLE_OVF + | IEEE_TRAP_ENABLE_UNF ; + + if (exception_mask & GSL_IEEE_MASK_INVALID) + mode &= ~ IEEE_TRAP_ENABLE_INV ; + + if (exception_mask & GSL_IEEE_MASK_DENORMALIZED) + { +#ifdef IEEE_TRAP_ENABLE_DNO + mode &= ~ IEEE_TRAP_ENABLE_DNO ; +#else + GSL_ERROR ("Sorry, this version of Digital Unix does not support denormalized operands", GSL_EUNSUP) ; +#endif + } + + if (exception_mask & GSL_IEEE_MASK_DIVISION_BY_ZERO) + mode &= ~ IEEE_TRAP_ENABLE_DZE ; + + if (exception_mask & GSL_IEEE_MASK_OVERFLOW) + mode &= ~ IEEE_TRAP_ENABLE_OVF ; + + if (exception_mask & GSL_IEEE_MASK_UNDERFLOW) + mode &= ~ IEEE_TRAP_ENABLE_UNF ; + + if (exception_mask & GSL_IEEE_TRAP_INEXACT) + { + /* To implement this would require a special flag to the C + compiler which can cause degraded performance */ + + GSL_ERROR ("Sorry, GSL does not implement trap-inexact for Tru64 Unix on the alpha - see fp-tru64.c for details", GSL_EUNSUP) ; + + /* In case you need to add it, the appropriate line would be + * + * mode |= IEEE_TRAP_ENABLE_INE ; + * + */ + + } + else + { + mode &= ~ IEEE_TRAP_ENABLE_INE ; + } + + ieee_set_fp_control (mode) ; + + return GSL_SUCCESS ; +} diff --git a/gsl-2.5/ieee-utils/fp-unknown.c b/gsl-2.5/ieee-utils/fp-unknown.c new file mode 100644 index 00000000..f52e27f7 --- /dev/null +++ b/gsl-2.5/ieee-utils/fp-unknown.c @@ -0,0 +1,30 @@ +/* ieee-utils/fp-unknown.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include + +int +gsl_ieee_set_mode (int precision, int rounding, int exception_mask) +{ + GSL_ERROR ( +"the IEEE interface for this platform is unsupported or could not be " +"determined at configure time\n", GSL_EUNSUP) ; +} diff --git a/gsl-2.5/ieee-utils/fp.c b/gsl-2.5/ieee-utils/fp.c new file mode 100644 index 00000000..445a14f6 --- /dev/null +++ b/gsl-2.5/ieee-utils/fp.c @@ -0,0 +1,50 @@ +#include + +#if HAVE_GNUSPARC_IEEE_INTERFACE +#include "fp-gnusparc.c" +#elif HAVE_GNUM68K_IEEE_INTERFACE +#include "fp-gnum68k.c" +#elif HAVE_GNUPPC_IEEE_INTERFACE +#include "fp-gnuppc.c" +#elif HAVE_GNUX86_IEEE_INTERFACE +#include "fp-gnux86.c" +#elif HAVE_HPUX11_IEEE_INTERFACE +#include "fp-hpux11.c" +#elif HAVE_HPUX_IEEE_INTERFACE +#include "fp-hpux.c" +#elif HAVE_SUNOS4_IEEE_INTERFACE +#include "fp-sunos4.c" +#elif HAVE_SOLARIS_IEEE_INTERFACE +#include "fp-solaris.c" +#elif HAVE_IRIX_IEEE_INTERFACE +#include "fp-irix.c" +#elif HAVE_AIX_IEEE_INTERFACE +#include "fp-aix.c" +#elif HAVE_TRU64_IEEE_INTERFACE +#include "fp-tru64.c" +#elif HAVE_FREEBSD_IEEE_INTERFACE +#include "fp-freebsd.c" +#elif HAVE_OS2EMX_IEEE_INTERFACE +#include "fp-os2emx.c" +#elif HAVE_NETBSD_IEEE_INTERFACE +#include "fp-netbsd.c" +#elif HAVE_OPENBSD_IEEE_INTERFACE +#include "fp-openbsd.c" +/* Try to handle universal binaries */ +#elif HAVE_DARWIN_IEEE_INTERFACE +# if defined(__i386__) +# include "fp-darwin86.c" +#else +# include "fp-darwin.c" +# endif +#elif HAVE_DARWIN86_IEEE_INTERFACE +# if defined(__ppc__) +# include "fp-darwin.c" +# else +# include "fp-darwin86.c" +#endif +#elif HAVE_DECL_FEENABLEEXCEPT || HAVE_DECL_FESETTRAPENABLE +#include "fp-gnuc99.c" +#else +#include "fp-unknown.c" +#endif diff --git a/gsl-2.5/ieee-utils/fp.lo b/gsl-2.5/ieee-utils/fp.lo new file mode 100644 index 00000000..9c901d36 --- /dev/null +++ b/gsl-2.5/ieee-utils/fp.lo @@ -0,0 +1,12 @@ +# fp.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/fp.o' + +# Name of the non-PIC object +non_pic_object='fp.o' + diff --git a/gsl-2.5/ieee-utils/gsl_ieee_utils.h b/gsl-2.5/ieee-utils/gsl_ieee_utils.h new file mode 100644 index 00000000..a9612207 --- /dev/null +++ b/gsl-2.5/ieee-utils/gsl_ieee_utils.h @@ -0,0 +1,99 @@ +/* ieee-utils/gsl_ieee_utils.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_IEEE_UTILS_H__ +#define __GSL_IEEE_UTILS_H__ +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +enum { + GSL_IEEE_TYPE_NAN = 1, + GSL_IEEE_TYPE_INF = 2, + GSL_IEEE_TYPE_NORMAL = 3, + GSL_IEEE_TYPE_DENORMAL = 4, + GSL_IEEE_TYPE_ZERO = 5 +} ; + +typedef struct { + int sign ; + char mantissa[24] ; /* Actual bits are 0..22, element 23 is \0 */ + int exponent ; + int type ; +} gsl_ieee_float_rep ; + +typedef struct { + int sign ; + char mantissa[53] ; /* Actual bits are 0..51, element 52 is \0 */ + int exponent ; + int type ; +} gsl_ieee_double_rep ; + + +void gsl_ieee_printf_float (const float * x) ; +void gsl_ieee_printf_double (const double * x) ; + +void gsl_ieee_fprintf_float (FILE * stream, const float * x) ; +void gsl_ieee_fprintf_double (FILE * stream, const double * x) ; + +void gsl_ieee_float_to_rep (const float * x, gsl_ieee_float_rep * r) ; +void gsl_ieee_double_to_rep (const double * x, gsl_ieee_double_rep * r) ; + +enum { + GSL_IEEE_SINGLE_PRECISION = 1, + GSL_IEEE_DOUBLE_PRECISION = 2, + GSL_IEEE_EXTENDED_PRECISION = 3 +} ; + +enum { + GSL_IEEE_ROUND_TO_NEAREST = 1, + GSL_IEEE_ROUND_DOWN = 2, + GSL_IEEE_ROUND_UP = 3, + GSL_IEEE_ROUND_TO_ZERO = 4 +} ; + +enum { + GSL_IEEE_MASK_INVALID = 1, + GSL_IEEE_MASK_DENORMALIZED = 2, + GSL_IEEE_MASK_DIVISION_BY_ZERO = 4, + GSL_IEEE_MASK_OVERFLOW = 8, + GSL_IEEE_MASK_UNDERFLOW = 16, + GSL_IEEE_MASK_ALL = 31, + GSL_IEEE_TRAP_INEXACT = 32 +} ; + +void gsl_ieee_env_setup (void) ; +int gsl_ieee_read_mode_string (const char * description, int * precision, + int * rounding, int * exception_mask) ; +int gsl_ieee_set_mode (int precision, int rounding, int exception_mask) ; + +__END_DECLS + +#endif /* __GSL_IEEE_UTILS_H__ */ + diff --git a/gsl-2.5/ieee-utils/libgslieeeutils.la b/gsl-2.5/ieee-utils/libgslieeeutils.la new file mode 100644 index 00000000..c3238b49 --- /dev/null +++ b/gsl-2.5/ieee-utils/libgslieeeutils.la @@ -0,0 +1,41 @@ +# libgslieeeutils.la - a libtool library file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='' + +# Names of this library. +library_names='' + +# The name of the static archive. +old_library='libgslieeeutils.a' + +# Linker flags that can not go in dependency_libs. +inherited_linker_flags='' + +# Libraries that this one depends upon. +dependency_libs=' -lm' + +# Names of additional weak libraries provided by this library +weak_library_names='' + +# Version information for libgslieeeutils. +current= +age= +revision= + +# Is this an already installed library? +installed=no + +# Should we warn about portability when linking against -modules? +shouldnotlink=no + +# Files to dlopen/dlpreopen +dlopen='' +dlpreopen='' + +# Directory that this library needs to be installed in: +libdir='' diff --git a/gsl-2.5/ieee-utils/make_rep.c b/gsl-2.5/ieee-utils/make_rep.c new file mode 100644 index 00000000..cc230821 --- /dev/null +++ b/gsl-2.5/ieee-utils/make_rep.c @@ -0,0 +1,197 @@ +/* ieee-utils/make_rep.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include + +#include "endian.c" +#include "standardize.c" + +static void sprint_nybble(int i, char *s) ; +static void sprint_byte(int i, char *s) ; +static int determine_ieee_type (int non_zero, int exponent, int max_exponent); + + +/* For the IEEE float format the bits are found from the following + masks, + + sign = 0x80000000 + exponent = 0x7f800000 + mantisssa = 0x007fffff + + For the IEEE double format the masks are, + + sign = 0x8000000000000000 + exponent = 0x7ff0000000000000 + mantissa = 0x000fffffffffffff + + */ + +void +gsl_ieee_float_to_rep (const float * x, gsl_ieee_float_rep * r) +{ + int e, non_zero; + + union { + float f; + struct { + unsigned char byte[4] ; + } ieee ; + } u; + + u.f = *x ; + + if (little_endian_p()) + make_float_bigendian(&(u.f)) ; + + /* note that r->sign is signed, u.ieee.byte is unsigned */ + + if (u.ieee.byte[3]>>7) + { + r->sign = 1 ; + } + else + { + r->sign = 0 ; + } + + e = (u.ieee.byte[3] & 0x7f) << 1 | (u.ieee.byte[2] & 0x80)>>7 ; + + r->exponent = e - 127 ; + + sprint_byte((u.ieee.byte[2] & 0x7f) << 1,r->mantissa) ; + sprint_byte(u.ieee.byte[1],r->mantissa + 7) ; + sprint_byte(u.ieee.byte[0],r->mantissa + 15) ; + + r->mantissa[23] = '\0' ; + + non_zero = u.ieee.byte[0] || u.ieee.byte[1] || (u.ieee.byte[2] & 0x7f); + + r->type = determine_ieee_type (non_zero, e, 255) ; +} + +void +gsl_ieee_double_to_rep (const double * x, gsl_ieee_double_rep * r) +{ + + int e, non_zero; + + union + { + double d; + struct { + unsigned char byte[8]; + } ieee ; + } u; + + u.d= *x ; + + if (little_endian_p()) + make_double_bigendian(&(u.d)) ; + + /* note that r->sign is signed, u.ieee.byte is unsigned */ + + if (u.ieee.byte[7]>>7) + { + r->sign = 1 ; + } + else + { + r->sign = 0 ; + } + + + e =(u.ieee.byte[7] & 0x7f)<<4 ^ (u.ieee.byte[6] & 0xf0)>>4 ; + + r->exponent = e - 1023 ; + + sprint_nybble(u.ieee.byte[6],r->mantissa) ; + sprint_byte(u.ieee.byte[5],r->mantissa + 4) ; + sprint_byte(u.ieee.byte[4],r->mantissa + 12) ; + sprint_byte(u.ieee.byte[3],r->mantissa + 20) ; + sprint_byte(u.ieee.byte[2],r->mantissa + 28) ; + sprint_byte(u.ieee.byte[1],r->mantissa + 36) ; + sprint_byte(u.ieee.byte[0],r->mantissa + 44) ; + + r->mantissa[52] = '\0' ; + + non_zero = (u.ieee.byte[0] || u.ieee.byte[1] || u.ieee.byte[2] + || u.ieee.byte[3] || u.ieee.byte[4] || u.ieee.byte[5] + || (u.ieee.byte[6] & 0x0f)) ; + + r->type = determine_ieee_type (non_zero, e, 2047) ; +} + +/* A table of character representations of nybbles */ + +static char nybble[16][5]={ /* include space for the \0 */ + "0000", "0001", "0010", "0011", + "0100", "0101", "0110", "0111", + "1000", "1001", "1010", "1011", + "1100", "1101", "1110", "1111" +} ; + +static void +sprint_nybble(int i, char *s) +{ + char *c ; + c=nybble[i & 0x0f ]; + *s=c[0] ; *(s+1)=c[1] ; *(s+2)=c[2] ; *(s+3)=c[3] ; +} + +static void +sprint_byte(int i, char *s) +{ + char *c ; + c=nybble[(i & 0xf0)>>4]; + *s=c[0] ; *(s+1)=c[1] ; *(s+2)=c[2] ; *(s+3)=c[3] ; + c=nybble[i & 0x0f]; + *(s+4)=c[0] ; *(s+5)=c[1] ; *(s+6)=c[2] ; *(s+7)=c[3] ; +} + +static int +determine_ieee_type (int non_zero, int exponent, int max_exponent) +{ + if (exponent == max_exponent) + { + if (non_zero) + { + return GSL_IEEE_TYPE_NAN ; + } + else + { + return GSL_IEEE_TYPE_INF ; + } + } + else if (exponent == 0) + { + if (non_zero) + { + return GSL_IEEE_TYPE_DENORMAL ; + } + else + { + return GSL_IEEE_TYPE_ZERO ; + } + } + else + { + return GSL_IEEE_TYPE_NORMAL ; + } +} diff --git a/gsl-2.5/ieee-utils/make_rep.lo b/gsl-2.5/ieee-utils/make_rep.lo new file mode 100644 index 00000000..5355ccc0 --- /dev/null +++ b/gsl-2.5/ieee-utils/make_rep.lo @@ -0,0 +1,12 @@ +# make_rep.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/make_rep.o' + +# Name of the non-PIC object +non_pic_object='make_rep.o' + diff --git a/gsl-2.5/ieee-utils/print.c b/gsl-2.5/ieee-utils/print.c new file mode 100644 index 00000000..eb788ddd --- /dev/null +++ b/gsl-2.5/ieee-utils/print.c @@ -0,0 +1,99 @@ +/* ieee-utils/print.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include + +/* A table of sign characters, 0=positive, 1=negative. We print a space + instead of a unary + sign for compatibility with bc */ + +static char signs[2]={' ','-'} ; + +void +gsl_ieee_fprintf_float (FILE * stream, const float * x) { + gsl_ieee_float_rep r ; + gsl_ieee_float_to_rep(x, &r) ; + + switch (r.type) + { + case GSL_IEEE_TYPE_NAN: + fprintf(stream, "NaN") ; + break ; + case GSL_IEEE_TYPE_INF: + fprintf(stream, "%cInf", signs[r.sign]) ; + break ; + case GSL_IEEE_TYPE_NORMAL: + fprintf(stream, "%c1.%s*2^%d", signs[r.sign], r.mantissa, r.exponent) ; + break ; + case GSL_IEEE_TYPE_DENORMAL: + fprintf(stream, "%c0.%s*2^%d", signs[r.sign], r.mantissa, r.exponent + 1) ; + break ; + case GSL_IEEE_TYPE_ZERO: + fprintf(stream, "%c0", signs[r.sign]) ; + break ; + default: + fprintf(stream, "[non-standard IEEE float]") ; + } +} + +void +gsl_ieee_printf_float (const float * x) +{ + gsl_ieee_fprintf_float (stdout,x); +} + +void +gsl_ieee_fprintf_double (FILE * stream, const double * x) { + gsl_ieee_double_rep r ; + gsl_ieee_double_to_rep (x, &r) ; + + switch (r.type) + { + case GSL_IEEE_TYPE_NAN: + fprintf(stream, "NaN") ; + break ; + case GSL_IEEE_TYPE_INF: + fprintf(stream, "%cInf", signs[r.sign]) ; + break ; + case GSL_IEEE_TYPE_NORMAL: + fprintf(stream, "%c1.%s*2^%d", signs[r.sign], r.mantissa, r.exponent) ; + break ; + case GSL_IEEE_TYPE_DENORMAL: + fprintf(stream, "%c0.%s*2^%d", signs[r.sign], r.mantissa, r.exponent + 1) ; + break ; + case GSL_IEEE_TYPE_ZERO: + fprintf(stream, "%c0", signs[r.sign]) ; + break ; + default: + fprintf(stream, "[non-standard IEEE double]") ; + } +} + +void +gsl_ieee_printf_double (const double * x) +{ + gsl_ieee_fprintf_double (stdout,x); +} + + + + + diff --git a/gsl-2.5/ieee-utils/print.lo b/gsl-2.5/ieee-utils/print.lo new file mode 100644 index 00000000..a59a8009 --- /dev/null +++ b/gsl-2.5/ieee-utils/print.lo @@ -0,0 +1,12 @@ +# print.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/print.o' + +# Name of the non-PIC object +non_pic_object='print.o' + diff --git a/gsl-2.5/ieee-utils/read.c b/gsl-2.5/ieee-utils/read.c new file mode 100644 index 00000000..480720b3 --- /dev/null +++ b/gsl-2.5/ieee-utils/read.c @@ -0,0 +1,203 @@ +/* ieee-utils/read.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include + +static int +lookup_string (const char * p, int * precision, int * rounding, + int * exception_mask) ; + +int +gsl_ieee_read_mode_string (const char * description, + int * precision, + int * rounding, + int * exception_mask) +{ + char * start ; + char * end; + char * p; + + int precision_count = 0 ; + int rounding_count = 0 ; + int exception_count = 0 ; + + start = (char *) malloc(strlen(description) + 1) ; + + if (start == 0) + { + GSL_ERROR ("no memory to parse mode string", GSL_ENOMEM) ; + } + + strcpy (start, description) ; + + p = start ; + + *precision = 0 ; + *rounding = 0 ; + *exception_mask = 0 ; + + do { + int status ; + int new_precision, new_rounding, new_exception ; + + end = strchr (p,',') ; + + if (end) + { + *end = '\0' ; + do + { + end++ ; /* skip over trailing whitespace */ + } + while (*end == ' ' || *end == ',') ; + } + + new_precision = 0 ; + new_rounding = 0 ; + new_exception = 0 ; + + status = lookup_string (p, &new_precision, &new_rounding, &new_exception) ; + + if (status) + { + free(start); + GSL_ERROR ("unrecognized GSL_IEEE_MODE string.\nValid settings are:\n\n" + " single-precision double-precision extended-precision\n" + " round-to-nearest round-down round-up round-to-zero\n" + " mask-invalid mask-denormalized mask-division-by-zero\n" + " mask-overflow mask-underflow mask-all\n" + " trap-common trap-inexact\n" + "\n" + "separated by commas. " + "(e.g. GSL_IEEE_MODE=\"round-down,mask-underflow\")", + GSL_EINVAL) ; + } + + if (new_precision) + { + *precision = new_precision ; + precision_count ++ ; + if (precision_count > 1) + { + free(start); + GSL_ERROR ("attempted to set IEEE precision twice", GSL_EINVAL) ; + } + } + + if (new_rounding) + { + *rounding = new_rounding ; + rounding_count ++ ; + if (rounding_count > 1) + { + free(start); + GSL_ERROR ("attempted to set IEEE rounding mode twice", GSL_EINVAL) ; + } + } + + if (new_exception) + { + *exception_mask |= new_exception ; + exception_count ++ ; + } + + p = end ; + + } while (end && *p != '\0') ; + + free(start) ; + + return GSL_SUCCESS ; +} + +static int +lookup_string (const char * p, int * precision, int * rounding, + int * exception_mask) +{ + if (strcmp(p,"single-precision") == 0) + { + *precision = GSL_IEEE_SINGLE_PRECISION ; + } + else if (strcmp(p,"double-precision") == 0) + { + *precision = GSL_IEEE_DOUBLE_PRECISION ; + } + else if (strcmp(p,"extended-precision") == 0) + { + *precision = GSL_IEEE_EXTENDED_PRECISION ; + } + else if (strcmp(p,"round-to-nearest") == 0) + { + *rounding = GSL_IEEE_ROUND_TO_NEAREST ; + } + else if (strcmp(p,"round-down") == 0) + { + *rounding = GSL_IEEE_ROUND_DOWN ; + } + else if (strcmp(p,"round-up") == 0) + { + *rounding = GSL_IEEE_ROUND_UP ; + } + else if (strcmp(p,"round-to-zero") == 0) + { + *rounding = GSL_IEEE_ROUND_TO_ZERO ; + } + else if (strcmp(p,"mask-all") == 0) + { + *exception_mask = GSL_IEEE_MASK_ALL ; + } + else if (strcmp(p,"mask-invalid") == 0) + { + *exception_mask = GSL_IEEE_MASK_INVALID ; + } + else if (strcmp(p,"mask-denormalized") == 0) + { + *exception_mask = GSL_IEEE_MASK_DENORMALIZED ; + } + else if (strcmp(p,"mask-division-by-zero") == 0) + { + *exception_mask = GSL_IEEE_MASK_DIVISION_BY_ZERO ; + } + else if (strcmp(p,"mask-overflow") == 0) + { + *exception_mask = GSL_IEEE_MASK_OVERFLOW ; + } + else if (strcmp(p,"mask-underflow") == 0) + { + *exception_mask = GSL_IEEE_MASK_UNDERFLOW ; + } + else if (strcmp(p,"trap-inexact") == 0) + { + *exception_mask = GSL_IEEE_TRAP_INEXACT ; + } + else if (strcmp(p,"trap-common") == 0) + { + return 0 ; + } + else + { + return 1 ; + } + + return 0 ; +} diff --git a/gsl-2.5/ieee-utils/read.lo b/gsl-2.5/ieee-utils/read.lo new file mode 100644 index 00000000..91536632 --- /dev/null +++ b/gsl-2.5/ieee-utils/read.lo @@ -0,0 +1,12 @@ +# read.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/read.o' + +# Name of the non-PIC object +non_pic_object='read.o' + diff --git a/gsl-2.5/ieee-utils/standardize.c b/gsl-2.5/ieee-utils/standardize.c new file mode 100644 index 00000000..543ee1e8 --- /dev/null +++ b/gsl-2.5/ieee-utils/standardize.c @@ -0,0 +1,61 @@ +/* ieee-utils/standardize.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +static void make_float_bigendian (float * x); +static void make_double_bigendian (double * x); + +static void +make_float_bigendian (float * x) +{ + union { + float f; + unsigned char b[4]; + } u,v; + + u.f = *x ; + + v.b[0]=u.b[3] ; + v.b[1]=u.b[2] ; + v.b[2]=u.b[1] ; + v.b[3]=u.b[0] ; + + *x=v.f ; +} + +static void +make_double_bigendian (double * x) +{ + union { + double d; + unsigned char b[8]; + } u,v; + + u.d = *x ; + + v.b[0]=u.b[7] ; + v.b[1]=u.b[6] ; + v.b[2]=u.b[5] ; + v.b[3]=u.b[4] ; + v.b[4]=u.b[3] ; + v.b[5]=u.b[2] ; + v.b[6]=u.b[1] ; + v.b[7]=u.b[0] ; + + *x=v.d ; +} diff --git a/gsl-2.5/ieee-utils/test b/gsl-2.5/ieee-utils/test new file mode 100755 index 00000000..0e7fea51 Binary files /dev/null and b/gsl-2.5/ieee-utils/test differ diff --git a/gsl-2.5/ieee-utils/test-suite.log b/gsl-2.5/ieee-utils/test-suite.log new file mode 100644 index 00000000..e30221a2 --- /dev/null +++ b/gsl-2.5/ieee-utils/test-suite.log @@ -0,0 +1,14 @@ +======================================== + gsl 2.5: ieee-utils/test-suite.log +======================================== + +# TOTAL: 1 +# PASS: 1 +# SKIP: 0 +# XFAIL: 0 +# FAIL: 0 +# XPASS: 0 +# ERROR: 0 + +.. contents:: :depth: 2 + diff --git a/gsl-2.5/ieee-utils/test.c b/gsl-2.5/ieee-utils/test.c new file mode 100644 index 00000000..dd8675b6 --- /dev/null +++ b/gsl-2.5/ieee-utils/test.c @@ -0,0 +1,482 @@ +/* ieee-utils/test.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include +#include + +#if HAVE_IRIX_IEEE_INTERFACE +/* don't test denormals on IRIX */ +#else +#if HAVE_IEEE_DENORMALS +#define TEST_DENORMAL 1 +#endif +#endif + +#ifndef FLT_MIN +#define FLT_MIN 1.17549435e-38f +#endif + +#ifndef FLT_MAX +#define FLT_MAX 3.40282347e+38f +#endif + +#ifndef DBL_MIN +#define DBL_MIN 2.2250738585072014e-308 +#endif + +#ifndef DBL_MAX +#define DBL_MAX 1.7976931348623157e+308 +#endif + +int +main (void) +{ + float zerof = 0.0f, minus_onef = -1.0f ; + double zero = 0.0, minus_one = -1.0 ; + + /* Check for +ZERO (float) */ + + { + float f = 0.0f; + const char mantissa[] = "00000000000000000000000"; + gsl_ieee_float_rep r; + gsl_ieee_float_to_rep (&f, &r); + + gsl_test_int (r.sign, 0, "float x = 0, sign is +"); + gsl_test_int (r.exponent, -127, "float x = 0, exponent is -127"); + gsl_test_str (r.mantissa, mantissa, "float x = 0, mantissa"); + gsl_test_int (r.type, GSL_IEEE_TYPE_ZERO, "float x = 0, type is ZERO"); + } + + /* Check for -ZERO (float) */ + + { + float f = minus_onef; + const char mantissa[] = "00000000000000000000000"; + gsl_ieee_float_rep r; + + while (f < 0) { + f *= 0.1f; + } + + gsl_ieee_float_to_rep (&f, &r); + + gsl_test_int (r.sign, 1, "float x = -1*0, sign is -"); + gsl_test_int (r.exponent, -127, "float x = -1*0, exponent is -127"); + gsl_test_str (r.mantissa, mantissa, "float x = -1*0, mantissa"); + gsl_test_int (r.type, GSL_IEEE_TYPE_ZERO, "float x = -1*0, type is ZERO"); + } + + /* Check for a positive NORMAL number (e.g. 2.1) (float) */ + + { + float f = 2.1f; + const char mantissa[] = "00001100110011001100110"; + + gsl_ieee_float_rep r; + gsl_ieee_float_to_rep (&f, &r); + + gsl_test_int (r.sign, 0, "float x = 2.1, sign is +"); + gsl_test_int (r.exponent, 1, "float x = 2.1, exponent is 1"); + gsl_test_str (r.mantissa, mantissa, "float x = 2.1, mantissa"); + gsl_test_int (r.type, GSL_IEEE_TYPE_NORMAL, "float x = 2.1, type is NORMAL"); + } + + + /* Check for a negative NORMAL number (e.g. -1.3304...) (float) */ + + { + float f = -1.3303577090924210f ; + const char mantissa[] = "01010100100100100101001"; + + gsl_ieee_float_rep r; + gsl_ieee_float_to_rep (&f, &r); + + gsl_test_int (r.sign, 1, "float x = -1.3304..., sign is -"); + gsl_test_int (r.exponent, 0, "float x = -1.3304..., exponent is 0"); + gsl_test_str (r.mantissa, mantissa, "float x = -1.3304..., mantissa"); + gsl_test_int (r.type, GSL_IEEE_TYPE_NORMAL, + "float x = -1.3304..., type is NORMAL"); + } + + /* Check for a large positive NORMAL number (e.g. 3.37e31) (float) */ + + { + float f = 3.37e31f; + const char mantissa[] = "10101001010110101001001"; + gsl_ieee_float_rep r; + gsl_ieee_float_to_rep (&f, &r); + + gsl_test_int (r.sign, 0, "float x = 3.37e31, sign is +"); + gsl_test_int (r.exponent, 104, "float x = 3.37e31, exponent is 104"); + gsl_test_str (r.mantissa, mantissa, "float x = 3.37e31, mantissa"); + gsl_test_int (r.type, GSL_IEEE_TYPE_NORMAL, "float x = 3.37e31, type is NORMAL"); + } + + /* Check for a small positive NORMAL number (e.g. 3.37e-31) (float) */ + + { + float f = 3.37e-31f; + const char mantissa[] = "10110101011100110111011"; + + gsl_ieee_float_rep r; + gsl_ieee_float_to_rep (&f, &r); + + gsl_test_int (r.sign, 0, "float x = 3.37e-31, sign is +"); + gsl_test_int (r.exponent, -102, "float x = 3.37e-31, exponent is -102"); + gsl_test_str (r.mantissa, mantissa, "float x = 3.37e-31, mantissa"); + gsl_test_int (r.type, GSL_IEEE_TYPE_NORMAL, + "float x = 3.37e-31, type is NORMAL"); + } + + /* Check for FLT_MIN (smallest possible number that is not denormal) */ + + { + float f = FLT_MIN; + const char mantissa[] = "00000000000000000000000"; + gsl_ieee_float_rep r; + gsl_ieee_float_to_rep (&f, &r); + + gsl_test_int (r.sign, 0, "float x = FLT_MIN, sign is +"); + gsl_test_int (r.exponent, -126, "float x = FLT_MIN, exponent is -126"); + gsl_test_str (r.mantissa, mantissa, "float x = FLT_MIN, mantissa"); + gsl_test_int (r.type, GSL_IEEE_TYPE_NORMAL, "float x = FLT_MIN, type is NORMAL"); + } + + /* Check for FLT_MAX (largest possible number that is not Inf) */ + + { + float f = FLT_MAX; + const char mantissa[] = "11111111111111111111111"; + + gsl_ieee_float_rep r; + gsl_ieee_float_to_rep (&f, &r); + + gsl_test_int (r.sign, 0, "float x = FLT_MAX, sign is +"); + gsl_test_int (r.exponent, 127, "float x = FLT_MAX, exponent is 127"); + gsl_test_str (r.mantissa, mantissa, "float x = FLT_MAX, mantissa"); + gsl_test_int (r.type, GSL_IEEE_TYPE_NORMAL, "float x = FLT_MAX, type is NORMAL"); + } + + + /* Check for DENORMAL numbers (e.g. FLT_MIN/2^n) */ + +#ifdef TEST_DENORMAL + { + float f = FLT_MIN; + char mantissa[] = "10000000000000000000000"; + + int i; + gsl_ieee_float_rep r; + + for (i = 0; i < 23; i++) + { + float x = f / (float)pow (2.0, 1 + (float) i); + mantissa[i] = '1'; + gsl_ieee_float_to_rep (&x, &r); + + gsl_test_int (r.sign, 0, "float x = FLT_MIN/2^%d, sign is +", i + 1); + gsl_test_int (r.exponent, -127, + "float x = FLT_MIN/2^%d, exponent is -127", i + 1); + gsl_test_str (r.mantissa, mantissa, + "float x = FLT_MIN/2^%d, mantissa", i + 1); + gsl_test_int (r.type, GSL_IEEE_TYPE_DENORMAL, + "float x = FLT_MIN/2^%d, type is DENORMAL", i + 1); + mantissa[i] = '0'; + } + } +#endif + + /* Check for positive INFINITY (e.g. 2*FLT_MAX) */ + + { + float f = FLT_MAX; + const char mantissa[] = "00000000000000000000000"; + + gsl_ieee_float_rep r; + + float x; + x = 2 * f; + gsl_ieee_float_to_rep (&x, &r); + + gsl_test_int (r.sign, 0, "float x = 2*FLT_MAX, sign is +"); + gsl_test_int (r.exponent, 128, "float x = 2*FLT_MAX, exponent is 128"); + gsl_test_str (r.mantissa, mantissa, "float x = 2*FLT_MAX, mantissa"); + gsl_test_int (r.type, GSL_IEEE_TYPE_INF, "float x = -2*FLT_MAX, type is INF"); + } + + /* Check for negative INFINITY (e.g. -2*FLT_MAX) */ + + { + float f = FLT_MAX; + const char mantissa[] = "00000000000000000000000"; + + gsl_ieee_float_rep r; + + float x; + x = -2 * f; + gsl_ieee_float_to_rep (&x, &r); + + gsl_test_int (r.sign, 1, "float x = -2*FLT_MAX, sign is -"); + gsl_test_int (r.exponent, 128, "float x = -2*FLT_MAX, exponent is 128"); + gsl_test_str (r.mantissa, mantissa, "float x = -2*FLT_MAX, mantissa"); + gsl_test_int (r.type, GSL_IEEE_TYPE_INF, "float x = -2*FLT_MAX, type is INF"); + } + + /* Check for NAN (e.g. Inf - Inf) (float) */ + + { + gsl_ieee_float_rep r; + float x = 1.0f, y = 2.0f, z = zerof; + + x = x / z; + y = y / z; + z = y - x; + + gsl_ieee_float_to_rep (&z, &r); + + /* We don't check the sign and we don't check the mantissa because + they could be anything for a NaN */ + + gsl_test_int (r.exponent, 128, "float x = NaN, exponent is 128"); + gsl_test_int (r.type, GSL_IEEE_TYPE_NAN, "float x = NaN, type is NAN"); + } + + + /* Check for +ZERO */ + + { + double d = 0.0; + const char mantissa[] + = "0000000000000000000000000000000000000000000000000000"; + gsl_ieee_double_rep r; + gsl_ieee_double_to_rep (&d, &r); + + gsl_test_int (r.sign, 0, "double x = 0, sign is +"); + gsl_test_int (r.exponent, -1023, "double x = 0, exponent is -1023"); + gsl_test_str (r.mantissa, mantissa, "double x = 0, mantissa"); + gsl_test_int (r.type, GSL_IEEE_TYPE_ZERO, "double x = 0, type is ZERO"); + } + + /* Check for -ZERO */ + + { + double d = minus_one; + const char mantissa[] + = "0000000000000000000000000000000000000000000000000000"; + gsl_ieee_double_rep r; + + while (d < 0) { + d *= 0.1; + } + + gsl_ieee_double_to_rep (&d, &r); + + gsl_test_int (r.sign, 1, "double x = -1*0, sign is -"); + gsl_test_int (r.exponent, -1023, "double x = -1*0, exponent is -1023"); + gsl_test_str (r.mantissa, mantissa, "double x = -1*0, mantissa"); + gsl_test_int (r.type, GSL_IEEE_TYPE_ZERO, "double x = -1*0, type is ZERO"); + } + + /* Check for a positive NORMAL number (e.g. 2.1) */ + + { + double d = 2.1; + const char mantissa[] + = "0000110011001100110011001100110011001100110011001101"; + gsl_ieee_double_rep r; + gsl_ieee_double_to_rep (&d, &r); + + gsl_test_int (r.sign, 0, "double x = 2.1, sign is +"); + gsl_test_int (r.exponent, 1, "double x = 2.1, exponent is 1"); + gsl_test_str (r.mantissa, mantissa, "double x = 2.1, mantissa"); + gsl_test_int (r.type, GSL_IEEE_TYPE_NORMAL, "double x = 2.1, type is NORMAL"); + } + + + /* Check for a negative NORMAL number (e.g. -1.3304...) */ + + { + double d = -1.3303577090924210146738460025517269968986511230468750; + const char mantissa[] + = "0101010010010010010100101010010010001000100011101110"; + gsl_ieee_double_rep r; + gsl_ieee_double_to_rep (&d, &r); + + gsl_test_int (r.sign, 1, "double x = -1.3304..., sign is -"); + gsl_test_int (r.exponent, 0, "double x = -1.3304..., exponent is 0"); + gsl_test_str (r.mantissa, mantissa, "double x = -1.3304..., mantissa"); + gsl_test_int (r.type, GSL_IEEE_TYPE_NORMAL, + "double x = -1.3304..., type is NORMAL"); + } + + /* Check for a large positive NORMAL number (e.g. 3.37e297) */ + + { + double d = 3.37e297; + const char mantissa[] + = "0100100111001001100101111001100000100110011101000100"; + gsl_ieee_double_rep r; + gsl_ieee_double_to_rep (&d, &r); + + gsl_test_int (r.sign, 0, "double x = 3.37e297, sign is +"); + gsl_test_int (r.exponent, 988, "double x = 3.37e297, exponent is 998"); + gsl_test_str (r.mantissa, mantissa, "double x = 3.37e297, mantissa"); + gsl_test_int (r.type, GSL_IEEE_TYPE_NORMAL, + "double x = 3.37e297, type is NORMAL"); + } + + /* Check for a small positive NORMAL number (e.g. 3.37e-297) */ + + { + double d = 3.37e-297; + const char mantissa[] + = "0001101000011011101011100001110010100001001100110111"; + gsl_ieee_double_rep r; + gsl_ieee_double_to_rep (&d, &r); + + gsl_test_int (r.sign, 0, "double x = 3.37e-297, sign is +"); + gsl_test_int (r.exponent, -985, "double x = 3.37e-297, exponent is -985"); + gsl_test_str (r.mantissa, mantissa, "double x = 3.37e-297, mantissa"); + gsl_test_int (r.type, GSL_IEEE_TYPE_NORMAL, + "double x = 3.37e-297, type is NORMAL"); + } + + /* Check for DBL_MIN (smallest possible number that is not denormal) */ + + { + double d = DBL_MIN; + const char mantissa[] + = "0000000000000000000000000000000000000000000000000000"; + gsl_ieee_double_rep r; + gsl_ieee_double_to_rep (&d, &r); + + gsl_test_int (r.sign, 0, "double x = DBL_MIN, sign is +"); + gsl_test_int (r.exponent, -1022, "double x = DBL_MIN, exponent is -1022"); + gsl_test_str (r.mantissa, mantissa, "double x = DBL_MIN, mantissa"); + gsl_test_int (r.type, GSL_IEEE_TYPE_NORMAL, + "double x = DBL_MIN, type is NORMAL"); + } + + /* Check for DBL_MAX (largest possible number that is not Inf) */ + + { + double d = DBL_MAX; + const char mantissa[] + = "1111111111111111111111111111111111111111111111111111"; + gsl_ieee_double_rep r; + gsl_ieee_double_to_rep (&d, &r); + + gsl_test_int (r.sign, 0, "double x = DBL_MAX, sign is +"); + gsl_test_int (r.exponent, 1023, "double x = DBL_MAX, exponent is 1023"); + gsl_test_str (r.mantissa, mantissa, "double x = DBL_MAX, mantissa"); + gsl_test_int (r.type, GSL_IEEE_TYPE_NORMAL, + "double x = DBL_MAX, type is NORMAL"); + } + + /* Check for DENORMAL numbers (e.g. DBL_MIN/2^n) */ + +#ifdef TEST_DENORMAL + { + double d = DBL_MIN; + char mantissa[] + = "1000000000000000000000000000000000000000000000000000"; + int i; + gsl_ieee_double_rep r; + + for (i = 0; i < 52; i++) + { + double x = d / pow (2.0, 1 + (double) i); + mantissa[i] = '1'; + gsl_ieee_double_to_rep (&x, &r); + + gsl_test_int (r.sign, 0, "double x = DBL_MIN/2^%d, sign is +", i + 1); + gsl_test_int (r.exponent, -1023, + "double x = DBL_MIN/2^%d, exponent", i + 1); + gsl_test_str (r.mantissa, mantissa, + "double x = DBL_MIN/2^%d, mantissa", i + 1); + gsl_test_int (r.type, GSL_IEEE_TYPE_DENORMAL, + "double x = DBL_MIN/2^%d, type is DENORMAL", i + 1); + mantissa[i] = '0'; + } + } +#endif + + /* Check for positive INFINITY (e.g. 2*DBL_MAX) */ + + { + double d = DBL_MAX; + const char mantissa[] + = "0000000000000000000000000000000000000000000000000000"; + gsl_ieee_double_rep r; + + double x; + x = 2.0 * d; + gsl_ieee_double_to_rep (&x, &r); + + gsl_test_int (r.sign, 0, "double x = 2*DBL_MAX, sign is +"); + gsl_test_int (r.exponent, 1024, "double x = 2*DBL_MAX, exponent is 1024"); + gsl_test_str (r.mantissa, mantissa, "double x = 2*DBL_MAX, mantissa"); + gsl_test_int (r.type, GSL_IEEE_TYPE_INF, "double x = 2*DBL_MAX, type is INF"); + } + + /* Check for negative INFINITY (e.g. -2*DBL_MAX) */ + + { + double d = DBL_MAX; + const char mantissa[] + = "0000000000000000000000000000000000000000000000000000"; + gsl_ieee_double_rep r; + + double x; + x = -2.0 * d; + gsl_ieee_double_to_rep (&x, &r); + + gsl_test_int (r.sign, 1, "double x = -2*DBL_MAX, sign is -"); + gsl_test_int (r.exponent, 1024, "double x = -2*DBL_MAX, exponent is 1024"); + gsl_test_str (r.mantissa, mantissa, "double x = -2*DBL_MAX, mantissa"); + gsl_test_int (r.type, GSL_IEEE_TYPE_INF,"double x = -2*DBL_MAX, type is INF"); + } + + /* Check for NAN (e.g. Inf - Inf) */ + + { + gsl_ieee_double_rep r; + double x = 1.0, y = 2.0, z = zero; + + x = x / z; + y = y / z; + z = y - x; + + gsl_ieee_double_to_rep (&z, &r); + + /* We don't check the sign and we don't check the mantissa because + they could be anything for a NaN */ + + gsl_test_int (r.exponent, 1024, "double x = NaN, exponent is 1024"); + gsl_test_int (r.type, GSL_IEEE_TYPE_NAN, "double x = NaN, type is NAN"); + } + + exit (gsl_test_summary ()); +} diff --git a/gsl-2.5/ieee-utils/test.log b/gsl-2.5/ieee-utils/test.log new file mode 100644 index 00000000..17e515ca --- /dev/null +++ b/gsl-2.5/ieee-utils/test.log @@ -0,0 +1 @@ +Completed [384/384] diff --git a/gsl-2.5/ieee-utils/test.trs b/gsl-2.5/ieee-utils/test.trs new file mode 100644 index 00000000..3f0f396c --- /dev/null +++ b/gsl-2.5/ieee-utils/test.trs @@ -0,0 +1,4 @@ +:test-result: PASS +:global-test-result: PASS +:recheck: no +:copy-in-global-log: no diff --git a/gsl-2.5/install-sh b/gsl-2.5/install-sh new file mode 100755 index 00000000..377bb868 --- /dev/null +++ b/gsl-2.5/install-sh @@ -0,0 +1,527 @@ +#!/bin/sh +# install - install a program, script, or datafile + +scriptversion=2011-11-20.07; # UTC + +# This originates from X11R5 (mit/util/scripts/install.sh), which was +# later released in X11R6 (xc/config/util/install.sh) with the +# following copyright and license. +# +# Copyright (C) 1994 X Consortium +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to +# deal in the Software without restriction, including without limitation the +# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +# sell copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- +# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +# +# Except as contained in this notice, the name of the X Consortium shall not +# be used in advertising or otherwise to promote the sale, use or other deal- +# ings in this Software without prior written authorization from the X Consor- +# tium. +# +# +# FSF changes to this file are in the public domain. +# +# Calling this script install-sh is preferred over install.sh, to prevent +# 'make' implicit rules from creating a file called install from it +# when there is no Makefile. +# +# This script is compatible with the BSD install script, but was written +# from scratch. + +nl=' +' +IFS=" "" $nl" + +# set DOITPROG to echo to test this script + +# Don't use :- since 4.3BSD and earlier shells don't like it. +doit=${DOITPROG-} +if test -z "$doit"; then + doit_exec=exec +else + doit_exec=$doit +fi + +# Put in absolute file names if you don't have them in your path; +# or use environment vars. + +chgrpprog=${CHGRPPROG-chgrp} +chmodprog=${CHMODPROG-chmod} +chownprog=${CHOWNPROG-chown} +cmpprog=${CMPPROG-cmp} +cpprog=${CPPROG-cp} +mkdirprog=${MKDIRPROG-mkdir} +mvprog=${MVPROG-mv} +rmprog=${RMPROG-rm} +stripprog=${STRIPPROG-strip} + +posix_glob='?' +initialize_posix_glob=' + test "$posix_glob" != "?" || { + if (set -f) 2>/dev/null; then + posix_glob= + else + posix_glob=: + fi + } +' + +posix_mkdir= + +# Desired mode of installed file. +mode=0755 + +chgrpcmd= +chmodcmd=$chmodprog +chowncmd= +mvcmd=$mvprog +rmcmd="$rmprog -f" +stripcmd= + +src= +dst= +dir_arg= +dst_arg= + +copy_on_change=false +no_target_directory= + +usage="\ +Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE + or: $0 [OPTION]... SRCFILES... DIRECTORY + or: $0 [OPTION]... -t DIRECTORY SRCFILES... + or: $0 [OPTION]... -d DIRECTORIES... + +In the 1st form, copy SRCFILE to DSTFILE. +In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. +In the 4th, create DIRECTORIES. + +Options: + --help display this help and exit. + --version display version info and exit. + + -c (ignored) + -C install only if different (preserve the last data modification time) + -d create directories instead of installing files. + -g GROUP $chgrpprog installed files to GROUP. + -m MODE $chmodprog installed files to MODE. + -o USER $chownprog installed files to USER. + -s $stripprog installed files. + -t DIRECTORY install into DIRECTORY. + -T report an error if DSTFILE is a directory. + +Environment variables override the default commands: + CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG + RMPROG STRIPPROG +" + +while test $# -ne 0; do + case $1 in + -c) ;; + + -C) copy_on_change=true;; + + -d) dir_arg=true;; + + -g) chgrpcmd="$chgrpprog $2" + shift;; + + --help) echo "$usage"; exit $?;; + + -m) mode=$2 + case $mode in + *' '* | *' '* | *' +'* | *'*'* | *'?'* | *'['*) + echo "$0: invalid mode: $mode" >&2 + exit 1;; + esac + shift;; + + -o) chowncmd="$chownprog $2" + shift;; + + -s) stripcmd=$stripprog;; + + -t) dst_arg=$2 + # Protect names problematic for 'test' and other utilities. + case $dst_arg in + -* | [=\(\)!]) dst_arg=./$dst_arg;; + esac + shift;; + + -T) no_target_directory=true;; + + --version) echo "$0 $scriptversion"; exit $?;; + + --) shift + break;; + + -*) echo "$0: invalid option: $1" >&2 + exit 1;; + + *) break;; + esac + shift +done + +if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then + # When -d is used, all remaining arguments are directories to create. + # When -t is used, the destination is already specified. + # Otherwise, the last argument is the destination. Remove it from $@. + for arg + do + if test -n "$dst_arg"; then + # $@ is not empty: it contains at least $arg. + set fnord "$@" "$dst_arg" + shift # fnord + fi + shift # arg + dst_arg=$arg + # Protect names problematic for 'test' and other utilities. + case $dst_arg in + -* | [=\(\)!]) dst_arg=./$dst_arg;; + esac + done +fi + +if test $# -eq 0; then + if test -z "$dir_arg"; then + echo "$0: no input file specified." >&2 + exit 1 + fi + # It's OK to call 'install-sh -d' without argument. + # This can happen when creating conditional directories. + exit 0 +fi + +if test -z "$dir_arg"; then + do_exit='(exit $ret); exit $ret' + trap "ret=129; $do_exit" 1 + trap "ret=130; $do_exit" 2 + trap "ret=141; $do_exit" 13 + trap "ret=143; $do_exit" 15 + + # Set umask so as not to create temps with too-generous modes. + # However, 'strip' requires both read and write access to temps. + case $mode in + # Optimize common cases. + *644) cp_umask=133;; + *755) cp_umask=22;; + + *[0-7]) + if test -z "$stripcmd"; then + u_plus_rw= + else + u_plus_rw='% 200' + fi + cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; + *) + if test -z "$stripcmd"; then + u_plus_rw= + else + u_plus_rw=,u+rw + fi + cp_umask=$mode$u_plus_rw;; + esac +fi + +for src +do + # Protect names problematic for 'test' and other utilities. + case $src in + -* | [=\(\)!]) src=./$src;; + esac + + if test -n "$dir_arg"; then + dst=$src + dstdir=$dst + test -d "$dstdir" + dstdir_status=$? + else + + # Waiting for this to be detected by the "$cpprog $src $dsttmp" command + # might cause directories to be created, which would be especially bad + # if $src (and thus $dsttmp) contains '*'. + if test ! -f "$src" && test ! -d "$src"; then + echo "$0: $src does not exist." >&2 + exit 1 + fi + + if test -z "$dst_arg"; then + echo "$0: no destination specified." >&2 + exit 1 + fi + dst=$dst_arg + + # If destination is a directory, append the input filename; won't work + # if double slashes aren't ignored. + if test -d "$dst"; then + if test -n "$no_target_directory"; then + echo "$0: $dst_arg: Is a directory" >&2 + exit 1 + fi + dstdir=$dst + dst=$dstdir/`basename "$src"` + dstdir_status=0 + else + # Prefer dirname, but fall back on a substitute if dirname fails. + dstdir=` + (dirname "$dst") 2>/dev/null || + expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$dst" : 'X\(//\)[^/]' \| \ + X"$dst" : 'X\(//\)$' \| \ + X"$dst" : 'X\(/\)' \| . 2>/dev/null || + echo X"$dst" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q' + ` + + test -d "$dstdir" + dstdir_status=$? + fi + fi + + obsolete_mkdir_used=false + + if test $dstdir_status != 0; then + case $posix_mkdir in + '') + # Create intermediate dirs using mode 755 as modified by the umask. + # This is like FreeBSD 'install' as of 1997-10-28. + umask=`umask` + case $stripcmd.$umask in + # Optimize common cases. + *[2367][2367]) mkdir_umask=$umask;; + .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; + + *[0-7]) + mkdir_umask=`expr $umask + 22 \ + - $umask % 100 % 40 + $umask % 20 \ + - $umask % 10 % 4 + $umask % 2 + `;; + *) mkdir_umask=$umask,go-w;; + esac + + # With -d, create the new directory with the user-specified mode. + # Otherwise, rely on $mkdir_umask. + if test -n "$dir_arg"; then + mkdir_mode=-m$mode + else + mkdir_mode= + fi + + posix_mkdir=false + case $umask in + *[123567][0-7][0-7]) + # POSIX mkdir -p sets u+wx bits regardless of umask, which + # is incompatible with FreeBSD 'install' when (umask & 300) != 0. + ;; + *) + tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ + trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0 + + if (umask $mkdir_umask && + exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1 + then + if test -z "$dir_arg" || { + # Check for POSIX incompatibilities with -m. + # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or + # other-writable bit of parent directory when it shouldn't. + # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. + ls_ld_tmpdir=`ls -ld "$tmpdir"` + case $ls_ld_tmpdir in + d????-?r-*) different_mode=700;; + d????-?--*) different_mode=755;; + *) false;; + esac && + $mkdirprog -m$different_mode -p -- "$tmpdir" && { + ls_ld_tmpdir_1=`ls -ld "$tmpdir"` + test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" + } + } + then posix_mkdir=: + fi + rmdir "$tmpdir/d" "$tmpdir" + else + # Remove any dirs left behind by ancient mkdir implementations. + rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null + fi + trap '' 0;; + esac;; + esac + + if + $posix_mkdir && ( + umask $mkdir_umask && + $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" + ) + then : + else + + # The umask is ridiculous, or mkdir does not conform to POSIX, + # or it failed possibly due to a race condition. Create the + # directory the slow way, step by step, checking for races as we go. + + case $dstdir in + /*) prefix='/';; + [-=\(\)!]*) prefix='./';; + *) prefix='';; + esac + + eval "$initialize_posix_glob" + + oIFS=$IFS + IFS=/ + $posix_glob set -f + set fnord $dstdir + shift + $posix_glob set +f + IFS=$oIFS + + prefixes= + + for d + do + test X"$d" = X && continue + + prefix=$prefix$d + if test -d "$prefix"; then + prefixes= + else + if $posix_mkdir; then + (umask=$mkdir_umask && + $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break + # Don't fail if two instances are running concurrently. + test -d "$prefix" || exit 1 + else + case $prefix in + *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; + *) qprefix=$prefix;; + esac + prefixes="$prefixes '$qprefix'" + fi + fi + prefix=$prefix/ + done + + if test -n "$prefixes"; then + # Don't fail if two instances are running concurrently. + (umask $mkdir_umask && + eval "\$doit_exec \$mkdirprog $prefixes") || + test -d "$dstdir" || exit 1 + obsolete_mkdir_used=true + fi + fi + fi + + if test -n "$dir_arg"; then + { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && + { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && + { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || + test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 + else + + # Make a couple of temp file names in the proper directory. + dsttmp=$dstdir/_inst.$$_ + rmtmp=$dstdir/_rm.$$_ + + # Trap to clean up those temp files at exit. + trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 + + # Copy the file name to the temp name. + (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && + + # and set any options; do chmod last to preserve setuid bits. + # + # If any of these fail, we abort the whole thing. If we want to + # ignore errors from any of these, just make sure not to ignore + # errors from the above "$doit $cpprog $src $dsttmp" command. + # + { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && + { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && + { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && + { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && + + # If -C, don't bother to copy if it wouldn't change the file. + if $copy_on_change && + old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && + new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && + + eval "$initialize_posix_glob" && + $posix_glob set -f && + set X $old && old=:$2:$4:$5:$6 && + set X $new && new=:$2:$4:$5:$6 && + $posix_glob set +f && + + test "$old" = "$new" && + $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 + then + rm -f "$dsttmp" + else + # Rename the file to the real destination. + $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || + + # The rename failed, perhaps because mv can't rename something else + # to itself, or perhaps because mv is so ancient that it does not + # support -f. + { + # Now remove or move aside any old file at destination location. + # We try this two ways since rm can't unlink itself on some + # systems and the destination file might be busy for other + # reasons. In this case, the final cleanup might fail but the new + # file should still install successfully. + { + test ! -f "$dst" || + $doit $rmcmd -f "$dst" 2>/dev/null || + { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && + { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } + } || + { echo "$0: cannot unlink or rename $dst" >&2 + (exit 1); exit 1 + } + } && + + # Now rename the file to the real destination. + $doit $mvcmd "$dsttmp" "$dst" + } + fi || exit 1 + + trap '' 0 + fi +done + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC" +# time-stamp-end: "; # UTC" +# End: diff --git a/gsl-2.5/integration/.deps/chebyshev.Plo b/gsl-2.5/integration/.deps/chebyshev.Plo new file mode 100644 index 00000000..f37b661c --- /dev/null +++ b/gsl-2.5/integration/.deps/chebyshev.Plo @@ -0,0 +1,176 @@ +chebyshev.lo: chebyshev.c /usr/include/stdc-predef.h /usr/include/stdio.h \ + /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../gsl/gsl_errno.h /usr/include/errno.h \ + /usr/include/bits/errno.h /usr/include/linux/errno.h \ + /usr/include/asm/errno.h /usr/include/asm-generic/errno.h \ + /usr/include/asm-generic/errno-base.h ../gsl/gsl_types.h \ + ../gsl/gsl_math.h /usr/include/math.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_nan.h ../gsl/gsl_pow_int.h \ + ../gsl/gsl_minmax.h ../gsl/gsl_integration.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_sf_gamma.h \ + ../gsl/gsl_sf_result.h + +/usr/include/stdc-predef.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_integration.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_sf_gamma.h: + +../gsl/gsl_sf_result.h: diff --git a/gsl-2.5/integration/.deps/chebyshev2.Plo b/gsl-2.5/integration/.deps/chebyshev2.Plo new file mode 100644 index 00000000..7e60d338 --- /dev/null +++ b/gsl-2.5/integration/.deps/chebyshev2.Plo @@ -0,0 +1,176 @@ +chebyshev2.lo: chebyshev2.c /usr/include/stdc-predef.h \ + /usr/include/stdio.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../gsl/gsl_errno.h /usr/include/errno.h \ + /usr/include/bits/errno.h /usr/include/linux/errno.h \ + /usr/include/asm/errno.h /usr/include/asm-generic/errno.h \ + /usr/include/asm-generic/errno-base.h ../gsl/gsl_types.h \ + ../gsl/gsl_math.h /usr/include/math.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_nan.h ../gsl/gsl_pow_int.h \ + ../gsl/gsl_minmax.h ../gsl/gsl_integration.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_sf_gamma.h \ + ../gsl/gsl_sf_result.h + +/usr/include/stdc-predef.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_integration.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_sf_gamma.h: + +../gsl/gsl_sf_result.h: diff --git a/gsl-2.5/integration/.deps/cquad.Plo b/gsl-2.5/integration/.deps/cquad.Plo new file mode 100644 index 00000000..19e68571 --- /dev/null +++ b/gsl-2.5/integration/.deps/cquad.Plo @@ -0,0 +1,175 @@ +cquad.lo: cquad.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_errno.h /usr/include/stdio.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_types.h ../gsl/gsl_math.h ../gsl/gsl_sys.h \ + ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_nan.h ../gsl/gsl_pow_int.h \ + ../gsl/gsl_minmax.h ../gsl/gsl_integration.h cquad_const.c + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_integration.h: + +cquad_const.c: diff --git a/gsl-2.5/integration/.deps/exponential.Plo b/gsl-2.5/integration/.deps/exponential.Plo new file mode 100644 index 00000000..05f4d2e1 --- /dev/null +++ b/gsl-2.5/integration/.deps/exponential.Plo @@ -0,0 +1,176 @@ +exponential.lo: exponential.c /usr/include/stdc-predef.h \ + /usr/include/stdio.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../gsl/gsl_errno.h /usr/include/errno.h \ + /usr/include/bits/errno.h /usr/include/linux/errno.h \ + /usr/include/asm/errno.h /usr/include/asm-generic/errno.h \ + /usr/include/asm-generic/errno-base.h ../gsl/gsl_types.h \ + ../gsl/gsl_math.h /usr/include/math.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_nan.h ../gsl/gsl_pow_int.h \ + ../gsl/gsl_minmax.h ../gsl/gsl_integration.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_sf_gamma.h \ + ../gsl/gsl_sf_result.h + +/usr/include/stdc-predef.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_integration.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_sf_gamma.h: + +../gsl/gsl_sf_result.h: diff --git a/gsl-2.5/integration/.deps/fixed.Plo b/gsl-2.5/integration/.deps/fixed.Plo new file mode 100644 index 00000000..60a61dc3 --- /dev/null +++ b/gsl-2.5/integration/.deps/fixed.Plo @@ -0,0 +1,172 @@ +fixed.lo: fixed.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_errno.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_types.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_nan.h ../gsl/gsl_pow_int.h \ + ../gsl/gsl_minmax.h ../gsl/gsl_integration.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_integration.h: diff --git a/gsl-2.5/integration/.deps/gegenbauer.Plo b/gsl-2.5/integration/.deps/gegenbauer.Plo new file mode 100644 index 00000000..13ed3ff1 --- /dev/null +++ b/gsl-2.5/integration/.deps/gegenbauer.Plo @@ -0,0 +1,176 @@ +gegenbauer.lo: gegenbauer.c /usr/include/stdc-predef.h \ + /usr/include/stdio.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../gsl/gsl_errno.h /usr/include/errno.h \ + /usr/include/bits/errno.h /usr/include/linux/errno.h \ + /usr/include/asm/errno.h /usr/include/asm-generic/errno.h \ + /usr/include/asm-generic/errno-base.h ../gsl/gsl_types.h \ + ../gsl/gsl_math.h /usr/include/math.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_nan.h ../gsl/gsl_pow_int.h \ + ../gsl/gsl_minmax.h ../gsl/gsl_integration.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_sf_gamma.h \ + ../gsl/gsl_sf_result.h + +/usr/include/stdc-predef.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_integration.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_sf_gamma.h: + +../gsl/gsl_sf_result.h: diff --git a/gsl-2.5/integration/.deps/glfixed.Plo b/gsl-2.5/integration/.deps/glfixed.Plo new file mode 100644 index 00000000..abe79eda --- /dev/null +++ b/gsl-2.5/integration/.deps/glfixed.Plo @@ -0,0 +1,172 @@ +glfixed.lo: glfixed.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h ../gsl/gsl_math.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h ../gsl/gsl_precision.h ../gsl/gsl_types.h \ + ../gsl/gsl_nan.h ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h \ + ../gsl/gsl_errno.h /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_integration.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_integration.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: diff --git a/gsl-2.5/integration/.deps/hermite.Plo b/gsl-2.5/integration/.deps/hermite.Plo new file mode 100644 index 00000000..96709d05 --- /dev/null +++ b/gsl-2.5/integration/.deps/hermite.Plo @@ -0,0 +1,176 @@ +hermite.lo: hermite.c /usr/include/stdc-predef.h /usr/include/stdio.h \ + /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../gsl/gsl_errno.h /usr/include/errno.h \ + /usr/include/bits/errno.h /usr/include/linux/errno.h \ + /usr/include/asm/errno.h /usr/include/asm-generic/errno.h \ + /usr/include/asm-generic/errno-base.h ../gsl/gsl_types.h \ + ../gsl/gsl_math.h /usr/include/math.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_nan.h ../gsl/gsl_pow_int.h \ + ../gsl/gsl_minmax.h ../gsl/gsl_integration.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_sf_gamma.h \ + ../gsl/gsl_sf_result.h + +/usr/include/stdc-predef.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_integration.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_sf_gamma.h: + +../gsl/gsl_sf_result.h: diff --git a/gsl-2.5/integration/.deps/jacobi.Plo b/gsl-2.5/integration/.deps/jacobi.Plo new file mode 100644 index 00000000..7ae1f246 --- /dev/null +++ b/gsl-2.5/integration/.deps/jacobi.Plo @@ -0,0 +1,176 @@ +jacobi.lo: jacobi.c /usr/include/stdc-predef.h /usr/include/stdio.h \ + /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../gsl/gsl_errno.h /usr/include/errno.h \ + /usr/include/bits/errno.h /usr/include/linux/errno.h \ + /usr/include/asm/errno.h /usr/include/asm-generic/errno.h \ + /usr/include/asm-generic/errno-base.h ../gsl/gsl_types.h \ + ../gsl/gsl_math.h /usr/include/math.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_nan.h ../gsl/gsl_pow_int.h \ + ../gsl/gsl_minmax.h ../gsl/gsl_integration.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_sf_gamma.h \ + ../gsl/gsl_sf_result.h + +/usr/include/stdc-predef.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_integration.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_sf_gamma.h: + +../gsl/gsl_sf_result.h: diff --git a/gsl-2.5/integration/.deps/laguerre.Plo b/gsl-2.5/integration/.deps/laguerre.Plo new file mode 100644 index 00000000..a2582063 --- /dev/null +++ b/gsl-2.5/integration/.deps/laguerre.Plo @@ -0,0 +1,176 @@ +laguerre.lo: laguerre.c /usr/include/stdc-predef.h /usr/include/stdio.h \ + /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../gsl/gsl_errno.h /usr/include/errno.h \ + /usr/include/bits/errno.h /usr/include/linux/errno.h \ + /usr/include/asm/errno.h /usr/include/asm-generic/errno.h \ + /usr/include/asm-generic/errno-base.h ../gsl/gsl_types.h \ + ../gsl/gsl_math.h /usr/include/math.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_nan.h ../gsl/gsl_pow_int.h \ + ../gsl/gsl_minmax.h ../gsl/gsl_integration.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_sf_gamma.h \ + ../gsl/gsl_sf_result.h + +/usr/include/stdc-predef.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_integration.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_sf_gamma.h: + +../gsl/gsl_sf_result.h: diff --git a/gsl-2.5/integration/.deps/legendre.Plo b/gsl-2.5/integration/.deps/legendre.Plo new file mode 100644 index 00000000..d7248b01 --- /dev/null +++ b/gsl-2.5/integration/.deps/legendre.Plo @@ -0,0 +1,176 @@ +legendre.lo: legendre.c /usr/include/stdc-predef.h /usr/include/stdio.h \ + /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../gsl/gsl_errno.h /usr/include/errno.h \ + /usr/include/bits/errno.h /usr/include/linux/errno.h \ + /usr/include/asm/errno.h /usr/include/asm-generic/errno.h \ + /usr/include/asm-generic/errno-base.h ../gsl/gsl_types.h \ + ../gsl/gsl_math.h /usr/include/math.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_nan.h ../gsl/gsl_pow_int.h \ + ../gsl/gsl_minmax.h ../gsl/gsl_integration.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_sf_gamma.h \ + ../gsl/gsl_sf_result.h + +/usr/include/stdc-predef.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_integration.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_sf_gamma.h: + +../gsl/gsl_sf_result.h: diff --git a/gsl-2.5/integration/.deps/qag.Plo b/gsl-2.5/integration/.deps/qag.Plo new file mode 100644 index 00000000..d1782829 --- /dev/null +++ b/gsl-2.5/integration/.deps/qag.Plo @@ -0,0 +1,181 @@ +qag.lo: qag.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_integration.h initialise.c set_initial.c qpsrt.c util.c + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_integration.h: + +initialise.c: + +set_initial.c: + +qpsrt.c: + +util.c: diff --git a/gsl-2.5/integration/.deps/qagp.Plo b/gsl-2.5/integration/.deps/qagp.Plo new file mode 100644 index 00000000..d66ff9b6 --- /dev/null +++ b/gsl-2.5/integration/.deps/qagp.Plo @@ -0,0 +1,192 @@ +qagp.lo: qagp.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_errno.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_types.h ../gsl/gsl_integration.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_nan.h ../gsl/gsl_pow_int.h \ + ../gsl/gsl_minmax.h initialise.c qpsrt.c util.c append.c reset.c qelg.c \ + qpsrt2.c ptsort.c positivity.c + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_integration.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +initialise.c: + +qpsrt.c: + +util.c: + +append.c: + +reset.c: + +qelg.c: + +qpsrt2.c: + +ptsort.c: + +positivity.c: diff --git a/gsl-2.5/integration/.deps/qags.Plo b/gsl-2.5/integration/.deps/qags.Plo new file mode 100644 index 00000000..c936a1cf --- /dev/null +++ b/gsl-2.5/integration/.deps/qags.Plo @@ -0,0 +1,190 @@ +qags.lo: qags.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_errno.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_types.h ../gsl/gsl_integration.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_nan.h ../gsl/gsl_pow_int.h \ + ../gsl/gsl_minmax.h initialise.c set_initial.c qpsrt.c util.c reset.c \ + qpsrt2.c qelg.c positivity.c + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_integration.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +initialise.c: + +set_initial.c: + +qpsrt.c: + +util.c: + +reset.c: + +qpsrt2.c: + +qelg.c: + +positivity.c: diff --git a/gsl-2.5/integration/.deps/qawc.Plo b/gsl-2.5/integration/.deps/qawc.Plo new file mode 100644 index 00000000..332c42e8 --- /dev/null +++ b/gsl-2.5/integration/.deps/qawc.Plo @@ -0,0 +1,183 @@ +qawc.lo: qawc.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h ../gsl/gsl_math.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h ../gsl/gsl_precision.h ../gsl/gsl_types.h \ + ../gsl/gsl_nan.h ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h \ + ../gsl/gsl_errno.h /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_integration.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h initialise.c set_initial.c qpsrt.c \ + util.c qc25c.c + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_integration.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +initialise.c: + +set_initial.c: + +qpsrt.c: + +util.c: + +qc25c.c: diff --git a/gsl-2.5/integration/.deps/qawf.Plo b/gsl-2.5/integration/.deps/qawf.Plo new file mode 100644 index 00000000..a62edd52 --- /dev/null +++ b/gsl-2.5/integration/.deps/qawf.Plo @@ -0,0 +1,178 @@ +qawf.lo: qawf.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h ../gsl/gsl_math.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h ../gsl/gsl_precision.h ../gsl/gsl_types.h \ + ../gsl/gsl_nan.h ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h \ + ../gsl/gsl_errno.h /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_integration.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h initialise.c append.c qelg.c + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_integration.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +initialise.c: + +append.c: + +qelg.c: diff --git a/gsl-2.5/integration/.deps/qawo.Plo b/gsl-2.5/integration/.deps/qawo.Plo new file mode 100644 index 00000000..15e2b46f --- /dev/null +++ b/gsl-2.5/integration/.deps/qawo.Plo @@ -0,0 +1,191 @@ +qawo.lo: qawo.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h ../gsl/gsl_math.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h ../gsl/gsl_precision.h ../gsl/gsl_types.h \ + ../gsl/gsl_nan.h ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h \ + ../gsl/gsl_errno.h /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_integration.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h initialise.c set_initial.c reset.c \ + qpsrt.c util.c qpsrt2.c qelg.c positivity.c qc25f.c + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_integration.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +initialise.c: + +set_initial.c: + +reset.c: + +qpsrt.c: + +util.c: + +qpsrt2.c: + +qelg.c: + +positivity.c: + +qc25f.c: diff --git a/gsl-2.5/integration/.deps/qaws.Plo b/gsl-2.5/integration/.deps/qaws.Plo new file mode 100644 index 00000000..0c39dbe7 --- /dev/null +++ b/gsl-2.5/integration/.deps/qaws.Plo @@ -0,0 +1,183 @@ +qaws.lo: qaws.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h ../gsl/gsl_math.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h ../gsl/gsl_precision.h ../gsl/gsl_types.h \ + ../gsl/gsl_nan.h ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h \ + ../gsl/gsl_errno.h /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_integration.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h initialise.c append.c qpsrt.c util.c \ + qc25s.c + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_integration.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +initialise.c: + +append.c: + +qpsrt.c: + +util.c: + +qc25s.c: diff --git a/gsl-2.5/integration/.deps/qcheb.Plo b/gsl-2.5/integration/.deps/qcheb.Plo new file mode 100644 index 00000000..36a84d32 --- /dev/null +++ b/gsl-2.5/integration/.deps/qcheb.Plo @@ -0,0 +1,135 @@ +qcheb.lo: qcheb.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_integration.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_integration.h: diff --git a/gsl-2.5/integration/.deps/qk.Plo b/gsl-2.5/integration/.deps/qk.Plo new file mode 100644 index 00000000..fc181a1f --- /dev/null +++ b/gsl-2.5/integration/.deps/qk.Plo @@ -0,0 +1,137 @@ +qk.lo: qk.c /usr/include/stdc-predef.h ../config.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_integration.h \ + /usr/include/stdlib.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_math.h ../gsl/gsl_sys.h \ + ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h ../gsl/gsl_precision.h ../gsl/gsl_types.h \ + ../gsl/gsl_nan.h ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h err.c + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_integration.h: + +/usr/include/stdlib.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +err.c: diff --git a/gsl-2.5/integration/.deps/qk15.Plo b/gsl-2.5/integration/.deps/qk15.Plo new file mode 100644 index 00000000..6800064b --- /dev/null +++ b/gsl-2.5/integration/.deps/qk15.Plo @@ -0,0 +1,135 @@ +qk15.lo: qk15.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_integration.h /usr/include/stdlib.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_integration.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: diff --git a/gsl-2.5/integration/.deps/qk21.Plo b/gsl-2.5/integration/.deps/qk21.Plo new file mode 100644 index 00000000..8b47b4cf --- /dev/null +++ b/gsl-2.5/integration/.deps/qk21.Plo @@ -0,0 +1,135 @@ +qk21.lo: qk21.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_integration.h /usr/include/stdlib.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_integration.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: diff --git a/gsl-2.5/integration/.deps/qk31.Plo b/gsl-2.5/integration/.deps/qk31.Plo new file mode 100644 index 00000000..5d21aef8 --- /dev/null +++ b/gsl-2.5/integration/.deps/qk31.Plo @@ -0,0 +1,135 @@ +qk31.lo: qk31.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_integration.h /usr/include/stdlib.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_integration.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: diff --git a/gsl-2.5/integration/.deps/qk41.Plo b/gsl-2.5/integration/.deps/qk41.Plo new file mode 100644 index 00000000..9824a881 --- /dev/null +++ b/gsl-2.5/integration/.deps/qk41.Plo @@ -0,0 +1,135 @@ +qk41.lo: qk41.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_integration.h /usr/include/stdlib.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_integration.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: diff --git a/gsl-2.5/integration/.deps/qk51.Plo b/gsl-2.5/integration/.deps/qk51.Plo new file mode 100644 index 00000000..04366b9b --- /dev/null +++ b/gsl-2.5/integration/.deps/qk51.Plo @@ -0,0 +1,135 @@ +qk51.lo: qk51.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_integration.h /usr/include/stdlib.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_integration.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: diff --git a/gsl-2.5/integration/.deps/qk61.Plo b/gsl-2.5/integration/.deps/qk61.Plo new file mode 100644 index 00000000..a58ef08b --- /dev/null +++ b/gsl-2.5/integration/.deps/qk61.Plo @@ -0,0 +1,135 @@ +qk61.lo: qk61.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_integration.h /usr/include/stdlib.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_integration.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: diff --git a/gsl-2.5/integration/.deps/qmomo.Plo b/gsl-2.5/integration/.deps/qmomo.Plo new file mode 100644 index 00000000..fa221352 --- /dev/null +++ b/gsl-2.5/integration/.deps/qmomo.Plo @@ -0,0 +1,173 @@ +qmomo.lo: qmomo.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_integration.h \ + ../gsl/gsl_math.h /usr/include/math.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_integration.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: diff --git a/gsl-2.5/integration/.deps/qmomof.Plo b/gsl-2.5/integration/.deps/qmomof.Plo new file mode 100644 index 00000000..32286d33 --- /dev/null +++ b/gsl-2.5/integration/.deps/qmomof.Plo @@ -0,0 +1,173 @@ +qmomof.lo: qmomof.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_integration.h \ + ../gsl/gsl_math.h /usr/include/math.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_integration.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: diff --git a/gsl-2.5/integration/.deps/qng.Plo b/gsl-2.5/integration/.deps/qng.Plo new file mode 100644 index 00000000..953d4cb7 --- /dev/null +++ b/gsl-2.5/integration/.deps/qng.Plo @@ -0,0 +1,176 @@ +qng.lo: qng.c /usr/include/stdc-predef.h ../config.h /usr/include/math.h \ + /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h ../gsl/gsl_math.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h ../gsl/gsl_precision.h ../gsl/gsl_types.h \ + ../gsl/gsl_nan.h ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h \ + ../gsl/gsl_errno.h /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_integration.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h err.c qng.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_integration.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +err.c: + +qng.h: diff --git a/gsl-2.5/integration/.deps/rational.Plo b/gsl-2.5/integration/.deps/rational.Plo new file mode 100644 index 00000000..8604ea52 --- /dev/null +++ b/gsl-2.5/integration/.deps/rational.Plo @@ -0,0 +1,176 @@ +rational.lo: rational.c /usr/include/stdc-predef.h /usr/include/stdio.h \ + /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../gsl/gsl_errno.h /usr/include/errno.h \ + /usr/include/bits/errno.h /usr/include/linux/errno.h \ + /usr/include/asm/errno.h /usr/include/asm-generic/errno.h \ + /usr/include/asm-generic/errno-base.h ../gsl/gsl_types.h \ + ../gsl/gsl_math.h /usr/include/math.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_nan.h ../gsl/gsl_pow_int.h \ + ../gsl/gsl_minmax.h ../gsl/gsl_integration.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_sf_gamma.h \ + ../gsl/gsl_sf_result.h + +/usr/include/stdc-predef.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_integration.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_sf_gamma.h: + +../gsl/gsl_sf_result.h: diff --git a/gsl-2.5/integration/.deps/romberg.Plo b/gsl-2.5/integration/.deps/romberg.Plo new file mode 100644 index 00000000..a443d791 --- /dev/null +++ b/gsl-2.5/integration/.deps/romberg.Plo @@ -0,0 +1,173 @@ +romberg.lo: romberg.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_integration.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_integration.h: diff --git a/gsl-2.5/integration/.deps/test.Po b/gsl-2.5/integration/.deps/test.Po new file mode 100644 index 00000000..d99cfc38 --- /dev/null +++ b/gsl-2.5/integration/.deps/test.Po @@ -0,0 +1,187 @@ +test.o: test.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_math.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_integration.h \ + ../gsl/gsl_errno.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_test.h ../gsl/gsl_ieee_utils.h ../gsl/gsl_sf_hyperg.h \ + ../gsl/gsl_sf_result.h ../gsl/gsl_sf_gamma.h tests.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_integration.h: + +../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_test.h: + +../gsl/gsl_ieee_utils.h: + +../gsl/gsl_sf_hyperg.h: + +../gsl/gsl_sf_result.h: + +../gsl/gsl_sf_gamma.h: + +tests.h: diff --git a/gsl-2.5/integration/.deps/tests.Po b/gsl-2.5/integration/.deps/tests.Po new file mode 100644 index 00000000..08c8dd04 --- /dev/null +++ b/gsl-2.5/integration/.deps/tests.Po @@ -0,0 +1,85 @@ +tests.o: tests.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_math.h ../gsl/gsl_sys.h \ + ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h tests.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +tests.h: diff --git a/gsl-2.5/integration/.deps/workspace.Plo b/gsl-2.5/integration/.deps/workspace.Plo new file mode 100644 index 00000000..ad2cfae3 --- /dev/null +++ b/gsl-2.5/integration/.deps/workspace.Plo @@ -0,0 +1,173 @@ +workspace.lo: workspace.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_integration.h \ + ../gsl/gsl_math.h /usr/include/math.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_integration.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: diff --git a/gsl-2.5/integration/.libs/libgslintegration.la b/gsl-2.5/integration/.libs/libgslintegration.la new file mode 120000 index 00000000..17ec1a31 --- /dev/null +++ b/gsl-2.5/integration/.libs/libgslintegration.la @@ -0,0 +1 @@ +../libgslintegration.la \ No newline at end of file diff --git a/gsl-2.5/integration/ChangeLog b/gsl-2.5/integration/ChangeLog new file mode 100644 index 00000000..7e85e838 --- /dev/null +++ b/gsl-2.5/integration/ChangeLog @@ -0,0 +1,169 @@ +2012-09-23 Rhys Ulerich + + * cquad.c Fix NaN handling using patch from author Pedro Gonnet. + Pedro reports bug found by Mick Pont at NAG. + +2011-05-02 Brian Gough + + * cquad.c (gsl_integration_cquad): use finite instead of isfinite + +2010-04-24 Brian Gough + + * cquad.c (gsl_integration_cquad): added CQUAD algorithm + +2010-03-09 Brian Gough + + * glfixed.c (gauss_legendre_tbl): made this function static + +2009-08-23 Brian Gough + + * test.c (main): increase tolerance for qawc(f459) elist test + +2009-07-09 Brian Gough + + * workspace.c (gsl_integration_workspace_free): handle NULL + argument in free + + * qmomof.c (gsl_integration_qawo_table_free): handle NULL argument + in free + + * qmomo.c (gsl_integration_qaws_table_free): handle NULL argument + in free + +2008-07-03 Brian Gough + + * Makefile.am (INCLUDES): use top_srcdir instead of top_builddir + +2003-01-12 Brian Gough + + * qawc.c (gsl_integration_qawc): fixed bisection condition to + prevent singularity falling on interval boundary + +Mon Apr 29 20:05:56 2002 Brian Gough + + * qcheb.c (gsl_integration_qcheb): avoid loss of precision by + replacing endpoints center+half_length by b and center-half_length + by a + +Mon Jul 30 17:46:42 2001 Brian Gough + + * test.c (main): reduced tolerance on qagiu(f455) smooth elist + test slightly + +Mon Jul 2 15:42:41 2001 Brian Gough + + * util.c: split out some static functions into separate files + +Tue Apr 17 22:11:28 2001 Brian Gough + + * qc25f.c (qc25f): need GSL_ERROR_VOID because function does not + return value + +Mon Apr 16 20:09:09 2001 Brian Gough + + * qc25f.c (qc25f): removed unnecessary variables, replaced use of + abort by GSL_ERROR + + * qmomof.c (gsl_integration_qawo_table_set_length): removed + unnecessary duplicate variable declaration for i + +Mon Jan 22 12:35:05 2001 Brian Gough + + * qmomof.c: moments are now precomputed in a read-only table + instead of being computed on the fly (cached) + +Fri Dec 8 19:45:52 2000 Brian Gough + + * reorganized, made internal functions static + +Thu Nov 16 19:45:19 2000 Brian Gough + + * qag_impl.c (gsl_integration_qag_impl): replace use of volatile + with the macro GSL_COERCE_DBL + +Wed May 31 19:35:57 2000 Brian Gough + + * test.c (main): increased tolerances on some results to allow + tests to pass with other compilers + +Mon May 15 14:21:00 2000 Brian Gough + + * test.c (main): increased one test limit slightly to allow for + rounding errors + +Wed Feb 23 14:35:31 2000 Brian Gough + + * qpsrt.c (qpsrt): changed ordering of while conditions to avoid + segmentation faults due to accessing values before testing end of + loop condition. Thanks to Brett Viren + for pointing this out. + + * qelg.c (qelg): changed update of nres from the original quadpack + so that uninitialized elements of the res3la array are never + accessed. + + * test.c (main): eliminate small memory leak from test + +Mon Feb 14 13:45:04 2000 Brian Gough + + * qk.c: renamed function qk to gsl_integration_qk since it is + exported + + * err.c: made internal function rescale_err static, only used in + qk.c and qng.c + +Mon Jul 12 11:37:55 1999 Brian Gough + + * qawc_impl.c (gsl_integration_qawc_impl): removed, no longer + necessary since everything goes into qawc.c + +Fri Apr 2 20:57:09 1999 Brian Gough + + * qelg.c (qelg): removed debugging code + + * qpsrt.c (qpsrt): removed debugging code + +Thu Mar 11 15:15:46 1999 Brian Gough + + * qags_impl.c (gsl_integration_qags_impl): removed dependency in + quadrature function calls by introducing dummy variables resabs1 + and resabs2 + +Wed Mar 10 19:05:41 1999 Brian Gough + + * added integrators QAGI, QAGIU, QAGIL for infinite and + semi-infinite ranges + +1999-01-01 Mark Galassi + + * integration.c: replaced strings.h with string.h, which is the + ISO library way. + +Sat Nov 21 12:43:03 1998 Brian Gough + + * Makefile.am (libgslintegration_a_SOURCES): eliminated local + max.h in favor of global GSL_MAX + + * added missing gsl_math.h headers for new GSL_DBL_EPSILON macros + +Tue Nov 17 17:16:51 1998 Brian Gough + + * added #include to all top-level source files + +Fri Jun 12 22:30:21 1998 Brian Gough + + * qage_impl.c: started using volatile (selectively) to enforce + strict IEEE behavior for the branches where it matters. I was + going to use gcc's -ffloat-store option but it didn't work for me. + Using volatile is not really a complete solution but is probably + close enough for all practical purposes (also it doesn't degrade + the performance as much as -ffloat-store would). + +Sat May 30 15:40:51 1998 Brian Gough + + * test.c (main): basic tests of qage are now complete + + * qage_impl.c (gsl_integration_qage_impl): fixed serious bug for + index i, which was incremented at the end of the do loop and + give an extra undefined entry in the result list! + diff --git a/gsl-2.5/integration/Makefile b/gsl-2.5/integration/Makefile new file mode 100644 index 00000000..ad1cf60c --- /dev/null +++ b/gsl-2.5/integration/Makefile @@ -0,0 +1,1065 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# integration/Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + + + + +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/gsl +pkgincludedir = $(includedir)/gsl +pkglibdir = $(libdir)/gsl +pkglibexecdir = $(libexecdir)/gsl +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = x86_64-unknown-linux-gnu +host_triplet = x86_64-unknown-linux-gnu +check_PROGRAMS = test$(EXEEXT) +subdir = integration +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp \ + $(noinst_HEADERS) $(pkginclude_HEADERS) \ + $(top_srcdir)/test-driver ChangeLog TODO +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +libgslintegration_la_LIBADD = +am_libgslintegration_la_OBJECTS = qk15.lo qk21.lo qk31.lo qk41.lo \ + qk51.lo qk61.lo qk.lo qng.lo qag.lo qags.lo qagp.lo \ + workspace.lo qcheb.lo qawc.lo qmomo.lo qaws.lo qmomof.lo \ + qawo.lo qawf.lo glfixed.lo cquad.lo fixed.lo chebyshev.lo \ + chebyshev2.lo legendre.lo hermite.lo laguerre.lo gegenbauer.lo \ + jacobi.lo exponential.lo rational.lo romberg.lo +libgslintegration_la_OBJECTS = $(am_libgslintegration_la_OBJECTS) +AM_V_lt = $(am__v_lt_$(V)) +am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) +am__v_lt_0 = --silent +am__v_lt_1 = +am_test_OBJECTS = test.$(OBJEXT) tests.$(OBJEXT) +test_OBJECTS = $(am_test_OBJECTS) +test_DEPENDENCIES = libgslintegration.la \ + ../ieee-utils/libgslieeeutils.la ../specfunc/libgslspecfunc.la \ + ../complex/libgslcomplex.la ../poly/libgslpoly.la \ + ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la \ + ../utils/libutils.la +AM_V_P = $(am__v_P_$(V)) +am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY)) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_$(V)) +am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_$(V)) +am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I. -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_$(V)) +am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_$(V)) +am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libgslintegration_la_SOURCES) $(test_SOURCES) +DIST_SOURCES = $(libgslintegration_la_SOURCES) $(test_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(pkgincludedir)" +HEADERS = $(noinst_HEADERS) $(pkginclude_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = .test +LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing aclocal-1.13 +AMTAR = $${TAR-tar} +AM_DEFAULT_VERBOSITY = 1 +AR = ar +AS = as +AUTOCONF = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing autoconf +AUTOHEADER = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing autoheader +AUTOMAKE = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing automake-1.13 +AWK = gawk +CC = gcc +CCDEPMODE = depmode=gcc3 +CFLAGS = -g -O2 +CPP = gcc -E +CPPFLAGS = +CYGPATH_W = echo +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +DLLTOOL = false +DSYMUTIL = +DUMPBIN = +ECHO_C = +ECHO_N = -n +ECHO_T = +EGREP = /usr/bin/grep -E +EXEEXT = +FGREP = /usr/bin/grep -F +GREP = /usr/bin/grep +GSLCBLAS_LDFLAGS = +GSL_CFLAGS = -I${prefix}/include +GSL_LDFLAGS = +GSL_LIBADD = +GSL_LIBM = -lm +GSL_LIBS = -L${exec_prefix}/lib -lgsl +GSL_LT_CBLAS_VERSION = 0:0:0 +GSL_LT_VERSION = 24:0:1 +GSL_MAJOR_VERSION = 2 +GSL_MINOR_VERSION = 5 +HAVE_AIX_IEEE_INTERFACE = +HAVE_DARWIN86_IEEE_INTERFACE = +HAVE_DARWIN_IEEE_INTERFACE = +HAVE_FREEBSD_IEEE_INTERFACE = +HAVE_GNUM68K_IEEE_INTERFACE = +HAVE_GNUPPC_IEEE_INTERFACE = +HAVE_GNUSPARC_IEEE_INTERFACE = +HAVE_GNUX86_IEEE_INTERFACE = +HAVE_HPUX11_IEEE_INTERFACE = +HAVE_HPUX_IEEE_INTERFACE = +HAVE_IRIX_IEEE_INTERFACE = +HAVE_NETBSD_IEEE_INTERFACE = +HAVE_OPENBSD_IEEE_INTERFACE = +HAVE_OS2EMX_IEEE_INTERFACE = +HAVE_SOLARIS_IEEE_INTERFACE = +HAVE_SUNOS4_IEEE_INTERFACE = +HAVE_TRU64_IEEE_INTERFACE = +INSTALL = /usr/bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = $(install_sh) -c -s +LD = /usr/bin/ld -m elf_x86_64 +LDFLAGS = +LIBM = -lm +LIBOBJS = +LIBS = -lm +LIBTOOL = $(SHELL) $(top_builddir)/libtool +LIPO = +LN_S = ln -s +LTLIBOBJS = +MAINT = # +MAKEINFO = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing makeinfo +MANIFEST_TOOL = : +MKDIR_P = /usr/bin/mkdir -p +NM = /usr/bin/nm -B +NMEDIT = +OBJDUMP = objdump +OBJEXT = o +OTOOL = +OTOOL64 = +PACKAGE = gsl +PACKAGE_BUGREPORT = +PACKAGE_NAME = gsl +PACKAGE_STRING = gsl 2.5 +PACKAGE_TARNAME = gsl +PACKAGE_URL = +PACKAGE_VERSION = 2.5 +PATH_SEPARATOR = : +RANLIB = ranlib +SED = /usr/bin/sed +SET_MAKE = +SHELL = /bin/sh +STRIP = strip +VERSION = 2.5 +abs_builddir = /home/groups/kipac/chto/package/gsl/gsl-2.5/integration +abs_srcdir = /home/groups/kipac/chto/package/gsl/gsl-2.5/integration +abs_top_builddir = /home/groups/kipac/chto/package/gsl/gsl-2.5 +abs_top_srcdir = /home/groups/kipac/chto/package/gsl/gsl-2.5 +ac_ct_AR = ar +ac_ct_CC = gcc +ac_ct_DUMPBIN = +am__include = include +am__leading_dot = . +am__quote = +am__tar = $${TAR-tar} chof - "$$tardir" +am__untar = $${TAR-tar} xf - +bindir = ${exec_prefix}/bin +build = x86_64-unknown-linux-gnu +build_alias = +build_cpu = x86_64 +build_os = linux-gnu +build_vendor = unknown +builddir = . +datadir = ${datarootdir} +datarootdir = ${prefix}/share +docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} +dvidir = ${docdir} +exec_prefix = ${prefix} +host = x86_64-unknown-linux-gnu +host_alias = +host_cpu = x86_64 +host_os = linux-gnu +host_vendor = unknown +htmldir = ${docdir} +includedir = ${prefix}/include +infodir = ${datarootdir}/info +install_sh = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/install-sh +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +localedir = ${datarootdir}/locale +localstatedir = ${prefix}/var +mandir = ${datarootdir}/man +mkdir_p = $(MKDIR_P) +oldincludedir = /usr/include +pdfdir = ${docdir} +prefix = /home/groups/kipac/chto/package/gsl/gsl_lib +program_transform_name = s,x,x, +psdir = ${docdir} +sbindir = ${exec_prefix}/sbin +sharedstatedir = ${prefix}/com +srcdir = . +sysconfdir = ${prefix}/etc +target_alias = +top_build_prefix = ../ +top_builddir = .. +top_srcdir = .. +noinst_LTLIBRARIES = libgslintegration.la +AM_CPPFLAGS = -I$(top_srcdir) +libgslintegration_la_SOURCES = qk15.c qk21.c qk31.c qk41.c qk51.c qk61.c qk.c qng.c qng.h qag.c qags.c qagp.c workspace.c qcheb.c qawc.c qmomo.c qaws.c qmomof.c qawo.c qawf.c glfixed.c cquad.c fixed.c chebyshev.c chebyshev2.c legendre.c hermite.c laguerre.c gegenbauer.c jacobi.c exponential.c rational.c romberg.c +pkginclude_HEADERS = gsl_integration.h +noinst_HEADERS = qpsrt.c qpsrt2.c qelg.c qc25c.c qc25s.c qc25f.c ptsort.c util.c err.c positivity.c append.c initialise.c set_initial.c reset.c cquad_const.c +TESTS = $(check_PROGRAMS) +test_SOURCES = test.c tests.c tests.h +test_LDADD = libgslintegration.la ../ieee-utils/libgslieeeutils.la ../specfunc/libgslspecfunc.la ../complex/libgslcomplex.la ../poly/libgslpoly.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu integration/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu integration/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: # $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): # $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libgslintegration.la: $(libgslintegration_la_OBJECTS) $(libgslintegration_la_DEPENDENCIES) $(EXTRA_libgslintegration_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(libgslintegration_la_OBJECTS) $(libgslintegration_la_LIBADD) $(LIBS) + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) $(EXTRA_test_DEPENDENCIES) + @rm -f test$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_OBJECTS) $(test_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +include ./$(DEPDIR)/chebyshev.Plo +include ./$(DEPDIR)/chebyshev2.Plo +include ./$(DEPDIR)/cquad.Plo +include ./$(DEPDIR)/exponential.Plo +include ./$(DEPDIR)/fixed.Plo +include ./$(DEPDIR)/gegenbauer.Plo +include ./$(DEPDIR)/glfixed.Plo +include ./$(DEPDIR)/hermite.Plo +include ./$(DEPDIR)/jacobi.Plo +include ./$(DEPDIR)/laguerre.Plo +include ./$(DEPDIR)/legendre.Plo +include ./$(DEPDIR)/qag.Plo +include ./$(DEPDIR)/qagp.Plo +include ./$(DEPDIR)/qags.Plo +include ./$(DEPDIR)/qawc.Plo +include ./$(DEPDIR)/qawf.Plo +include ./$(DEPDIR)/qawo.Plo +include ./$(DEPDIR)/qaws.Plo +include ./$(DEPDIR)/qcheb.Plo +include ./$(DEPDIR)/qk.Plo +include ./$(DEPDIR)/qk15.Plo +include ./$(DEPDIR)/qk21.Plo +include ./$(DEPDIR)/qk31.Plo +include ./$(DEPDIR)/qk41.Plo +include ./$(DEPDIR)/qk51.Plo +include ./$(DEPDIR)/qk61.Plo +include ./$(DEPDIR)/qmomo.Plo +include ./$(DEPDIR)/qmomof.Plo +include ./$(DEPDIR)/qng.Plo +include ./$(DEPDIR)/rational.Plo +include ./$(DEPDIR)/romberg.Plo +include ./$(DEPDIR)/test.Po +include ./$(DEPDIR)/tests.Po +include ./$(DEPDIR)/workspace.Plo + +.c.o: + $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# $(AM_V_CC)source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(COMPILE) -c $< + +.c.obj: + $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# $(AM_V_CC)source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: + $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +# $(AM_V_CC)source='$<' object='$@' libtool=yes \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-pkgincludeHEADERS: $(pkginclude_HEADERS) + @$(NORMAL_INSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \ + done + +uninstall-pkgincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + else \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_PROGRAMS) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +test.log: test$(EXEEXT) + @p='test$(EXEEXT)'; \ + b='test'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +#.test$(EXEEXT).log: +# @p='$<'; \ +# $(am__set_b); \ +# $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +# --log-file $$b.log --trs-file $$b.trs \ +# $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +# "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-am +all-am: Makefile $(LTLIBRARIES) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(pkgincludedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-pkgincludeHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-pkgincludeHEADERS + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES cscopelist-am ctags ctags-am distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-pkgincludeHEADERS \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + recheck tags tags-am uninstall uninstall-am \ + uninstall-pkgincludeHEADERS + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gsl-2.5/integration/Makefile.am b/gsl-2.5/integration/Makefile.am new file mode 100644 index 00000000..d91cca8c --- /dev/null +++ b/gsl-2.5/integration/Makefile.am @@ -0,0 +1,14 @@ +noinst_LTLIBRARIES = libgslintegration.la + +AM_CPPFLAGS = -I$(top_srcdir) + +libgslintegration_la_SOURCES = qk15.c qk21.c qk31.c qk41.c qk51.c qk61.c qk.c qng.c qng.h qag.c qags.c qagp.c workspace.c qcheb.c qawc.c qmomo.c qaws.c qmomof.c qawo.c qawf.c glfixed.c cquad.c fixed.c chebyshev.c chebyshev2.c legendre.c hermite.c laguerre.c gegenbauer.c jacobi.c exponential.c rational.c romberg.c + +pkginclude_HEADERS = gsl_integration.h +noinst_HEADERS = qpsrt.c qpsrt2.c qelg.c qc25c.c qc25s.c qc25f.c ptsort.c util.c err.c positivity.c append.c initialise.c set_initial.c reset.c cquad_const.c + +TESTS = $(check_PROGRAMS) +check_PROGRAMS = test + +test_SOURCES = test.c tests.c tests.h +test_LDADD = libgslintegration.la ../ieee-utils/libgslieeeutils.la ../specfunc/libgslspecfunc.la ../complex/libgslcomplex.la ../poly/libgslpoly.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la diff --git a/gsl-2.5/integration/Makefile.in b/gsl-2.5/integration/Makefile.in new file mode 100644 index 00000000..e5d43fe0 --- /dev/null +++ b/gsl-2.5/integration/Makefile.in @@ -0,0 +1,1065 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + + +VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +check_PROGRAMS = test$(EXEEXT) +subdir = integration +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp \ + $(noinst_HEADERS) $(pkginclude_HEADERS) \ + $(top_srcdir)/test-driver ChangeLog TODO +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +libgslintegration_la_LIBADD = +am_libgslintegration_la_OBJECTS = qk15.lo qk21.lo qk31.lo qk41.lo \ + qk51.lo qk61.lo qk.lo qng.lo qag.lo qags.lo qagp.lo \ + workspace.lo qcheb.lo qawc.lo qmomo.lo qaws.lo qmomof.lo \ + qawo.lo qawf.lo glfixed.lo cquad.lo fixed.lo chebyshev.lo \ + chebyshev2.lo legendre.lo hermite.lo laguerre.lo gegenbauer.lo \ + jacobi.lo exponential.lo rational.lo romberg.lo +libgslintegration_la_OBJECTS = $(am_libgslintegration_la_OBJECTS) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +am_test_OBJECTS = test.$(OBJEXT) tests.$(OBJEXT) +test_OBJECTS = $(am_test_OBJECTS) +test_DEPENDENCIES = libgslintegration.la \ + ../ieee-utils/libgslieeeutils.la ../specfunc/libgslspecfunc.la \ + ../complex/libgslcomplex.la ../poly/libgslpoly.la \ + ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la \ + ../utils/libutils.la +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libgslintegration_la_SOURCES) $(test_SOURCES) +DIST_SOURCES = $(libgslintegration_la_SOURCES) $(test_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(pkgincludedir)" +HEADERS = $(noinst_HEADERS) $(pkginclude_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = @EXEEXT@ .test +LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +GSLCBLAS_LDFLAGS = @GSLCBLAS_LDFLAGS@ +GSL_CFLAGS = @GSL_CFLAGS@ +GSL_LDFLAGS = @GSL_LDFLAGS@ +GSL_LIBADD = @GSL_LIBADD@ +GSL_LIBM = @GSL_LIBM@ +GSL_LIBS = @GSL_LIBS@ +GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ +GSL_LT_VERSION = @GSL_LT_VERSION@ +GSL_MAJOR_VERSION = @GSL_MAJOR_VERSION@ +GSL_MINOR_VERSION = @GSL_MINOR_VERSION@ +HAVE_AIX_IEEE_INTERFACE = @HAVE_AIX_IEEE_INTERFACE@ +HAVE_DARWIN86_IEEE_INTERFACE = @HAVE_DARWIN86_IEEE_INTERFACE@ +HAVE_DARWIN_IEEE_INTERFACE = @HAVE_DARWIN_IEEE_INTERFACE@ +HAVE_FREEBSD_IEEE_INTERFACE = @HAVE_FREEBSD_IEEE_INTERFACE@ +HAVE_GNUM68K_IEEE_INTERFACE = @HAVE_GNUM68K_IEEE_INTERFACE@ +HAVE_GNUPPC_IEEE_INTERFACE = @HAVE_GNUPPC_IEEE_INTERFACE@ +HAVE_GNUSPARC_IEEE_INTERFACE = @HAVE_GNUSPARC_IEEE_INTERFACE@ +HAVE_GNUX86_IEEE_INTERFACE = @HAVE_GNUX86_IEEE_INTERFACE@ +HAVE_HPUX11_IEEE_INTERFACE = @HAVE_HPUX11_IEEE_INTERFACE@ +HAVE_HPUX_IEEE_INTERFACE = @HAVE_HPUX_IEEE_INTERFACE@ +HAVE_IRIX_IEEE_INTERFACE = @HAVE_IRIX_IEEE_INTERFACE@ +HAVE_NETBSD_IEEE_INTERFACE = @HAVE_NETBSD_IEEE_INTERFACE@ +HAVE_OPENBSD_IEEE_INTERFACE = @HAVE_OPENBSD_IEEE_INTERFACE@ +HAVE_OS2EMX_IEEE_INTERFACE = @HAVE_OS2EMX_IEEE_INTERFACE@ +HAVE_SOLARIS_IEEE_INTERFACE = @HAVE_SOLARIS_IEEE_INTERFACE@ +HAVE_SUNOS4_IEEE_INTERFACE = @HAVE_SUNOS4_IEEE_INTERFACE@ +HAVE_TRU64_IEEE_INTERFACE = @HAVE_TRU64_IEEE_INTERFACE@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBM = @LIBM@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +noinst_LTLIBRARIES = libgslintegration.la +AM_CPPFLAGS = -I$(top_srcdir) +libgslintegration_la_SOURCES = qk15.c qk21.c qk31.c qk41.c qk51.c qk61.c qk.c qng.c qng.h qag.c qags.c qagp.c workspace.c qcheb.c qawc.c qmomo.c qaws.c qmomof.c qawo.c qawf.c glfixed.c cquad.c fixed.c chebyshev.c chebyshev2.c legendre.c hermite.c laguerre.c gegenbauer.c jacobi.c exponential.c rational.c romberg.c +pkginclude_HEADERS = gsl_integration.h +noinst_HEADERS = qpsrt.c qpsrt2.c qelg.c qc25c.c qc25s.c qc25f.c ptsort.c util.c err.c positivity.c append.c initialise.c set_initial.c reset.c cquad_const.c +TESTS = $(check_PROGRAMS) +test_SOURCES = test.c tests.c tests.h +test_LDADD = libgslintegration.la ../ieee-utils/libgslieeeutils.la ../specfunc/libgslspecfunc.la ../complex/libgslcomplex.la ../poly/libgslpoly.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu integration/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu integration/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libgslintegration.la: $(libgslintegration_la_OBJECTS) $(libgslintegration_la_DEPENDENCIES) $(EXTRA_libgslintegration_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(libgslintegration_la_OBJECTS) $(libgslintegration_la_LIBADD) $(LIBS) + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) $(EXTRA_test_DEPENDENCIES) + @rm -f test$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_OBJECTS) $(test_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chebyshev.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chebyshev2.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cquad.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/exponential.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fixed.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gegenbauer.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/glfixed.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hermite.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/jacobi.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/laguerre.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/legendre.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/qag.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/qagp.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/qags.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/qawc.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/qawf.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/qawo.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/qaws.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/qcheb.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/qk.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/qk15.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/qk21.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/qk31.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/qk41.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/qk51.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/qk61.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/qmomo.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/qmomof.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/qng.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rational.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/romberg.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tests.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/workspace.Plo@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-pkgincludeHEADERS: $(pkginclude_HEADERS) + @$(NORMAL_INSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \ + done + +uninstall-pkgincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + else \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_PROGRAMS) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +test.log: test$(EXEEXT) + @p='test$(EXEEXT)'; \ + b='test'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +@am__EXEEXT_TRUE@.test$(EXEEXT).log: +@am__EXEEXT_TRUE@ @p='$<'; \ +@am__EXEEXT_TRUE@ $(am__set_b); \ +@am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +@am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ +@am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +@am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-am +all-am: Makefile $(LTLIBRARIES) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(pkgincludedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-pkgincludeHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-pkgincludeHEADERS + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES cscopelist-am ctags ctags-am distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-pkgincludeHEADERS \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + recheck tags tags-am uninstall uninstall-am \ + uninstall-pkgincludeHEADERS + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gsl-2.5/integration/TODO b/gsl-2.5/integration/TODO new file mode 100644 index 00000000..641c637e --- /dev/null +++ b/gsl-2.5/integration/TODO @@ -0,0 +1,27 @@ +# -*- org -*- +#+CATEGORY: integration + +* BUG#14 -- qagil + +The extrapolation used in qags gives negative results when integrating +the small tails of probability distributions using qagil, even though +each individual term in the sequence is positive and increasing (!). +This is a feature of the original quadpack and appears to be due to +the extrapolation algorithm, which should probably be tweaked to avoid +this undesirable behavior. + + +* Someone to volunteer to do Cubature, e.g as provided by Cubpack. + +* Someone to volunteer to port IQPACK, the Hermite quadrature has already + been ported + +* ACM Transactions on Mathematical Software (TOMS) archive + Volume 33 , Issue 3 (August 2007) + + Algorithm 867: QUADLOG---a package of routines for generating + gauss-related quadrature for two classes of logarithmic weight functions + Nelson H. F. Beebe, James S. Ball + Article No. 20 + Full text available: pdfPdf (209 KB) + Additional Information: _full citation, abstract, references, index terms diff --git a/gsl-2.5/integration/append.c b/gsl-2.5/integration/append.c new file mode 100644 index 00000000..75ad53fd --- /dev/null +++ b/gsl-2.5/integration/append.c @@ -0,0 +1,35 @@ +/* integration/append.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +static inline +void append_interval (gsl_integration_workspace * workspace, + double a1, double b1, double area1, double error1) +{ + const size_t i_new = workspace->size ; + + workspace->alist[i_new] = a1; + workspace->blist[i_new] = b1; + workspace->rlist[i_new] = area1; + workspace->elist[i_new] = error1; + workspace->order[i_new] = i_new; + workspace->level[i_new] = 0; + + workspace->size++; +} + diff --git a/gsl-2.5/integration/chebyshev.c b/gsl-2.5/integration/chebyshev.c new file mode 100644 index 00000000..37a37d62 --- /dev/null +++ b/gsl-2.5/integration/chebyshev.c @@ -0,0 +1,80 @@ +/* integration/chebyshev.c + * + * Copyright (C) 2017 Konrad Griessinger, Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* + * The code in this module is based on IQPACK, specifically the LGPL + * implementation found in HERMITE_RULE: + * https://people.sc.fsu.edu/~jburkardt/c_src/hermite_rule/hermite_rule.html + */ + +#include +#include +#include +#include +#include + +static int +chebyshev_check(const size_t n, const gsl_integration_fixed_params * params) +{ + (void) n; + + if (fabs(params->b - params->a) <= GSL_DBL_EPSILON) + { + GSL_ERROR("|b - a| too small", GSL_EDOM); + } + else if (params->a >= params->b) + { + GSL_ERROR("lower integration limit must be smaller than upper limit", GSL_EDOM); + } + else + { + return GSL_SUCCESS; + } +} + +static int +chebyshev_init(const size_t n, double * diag, double * subdiag, gsl_integration_fixed_params * params) +{ + size_t i; + + /* construct the diagonal and subdiagonal elements of Jacobi matrix */ + diag[0] = 0.0; + subdiag[0] = M_SQRT1_2; + for (i = 1; i < n; i++) + { + diag[i] = 0.0; + subdiag[i] = 0.5; + } + + params->zemu = M_PI; + params->shft = 0.5*(params->b + params->a); + params->slp = 0.5*(params->b - params->a); + params->al = -0.5; + params->be = -0.5; + + return GSL_SUCCESS; +} + +static const gsl_integration_fixed_type chebyshev_type = +{ + chebyshev_check, + chebyshev_init +}; + +const gsl_integration_fixed_type *gsl_integration_fixed_chebyshev = &chebyshev_type; diff --git a/gsl-2.5/integration/chebyshev.lo b/gsl-2.5/integration/chebyshev.lo new file mode 100644 index 00000000..733a2c04 --- /dev/null +++ b/gsl-2.5/integration/chebyshev.lo @@ -0,0 +1,12 @@ +# chebyshev.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/chebyshev.o' + +# Name of the non-PIC object +non_pic_object='chebyshev.o' + diff --git a/gsl-2.5/integration/chebyshev2.c b/gsl-2.5/integration/chebyshev2.c new file mode 100644 index 00000000..90c0a033 --- /dev/null +++ b/gsl-2.5/integration/chebyshev2.c @@ -0,0 +1,78 @@ +/* integration/chebyshev2.c + * + * Copyright (C) 2017 Konrad Griessinger, Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* + * The code in this module is based on IQPACK, specifically the LGPL + * implementation found in HERMITE_RULE: + * https://people.sc.fsu.edu/~jburkardt/c_src/hermite_rule/hermite_rule.html + */ + +#include +#include +#include +#include +#include + +static int +chebyshev2_check(const size_t n, const gsl_integration_fixed_params * params) +{ + (void) n; + + if (fabs(params->b - params->a) <= GSL_DBL_EPSILON) + { + GSL_ERROR("|b - a| too small", GSL_EDOM); + } + else if (params->a >= params->b) + { + GSL_ERROR("lower integration limit must be smaller than upper limit", GSL_EDOM); + } + else + { + return GSL_SUCCESS; + } +} + +static int +chebyshev2_init(const size_t n, double * diag, double * subdiag, gsl_integration_fixed_params * params) +{ + size_t i; + + /* construct the diagonal and subdiagonal elements of Jacobi matrix */ + for (i = 0; i < n; i++) + { + diag[i] = 0.0; + subdiag[i] = 0.5; + } + + params->zemu = M_PI_2; + params->shft = 0.5*(params->b + params->a); + params->slp = 0.5*(params->b - params->a); + params->al = 0.5; + params->be = 0.5; + + return GSL_SUCCESS; +} + +static const gsl_integration_fixed_type chebyshev2_type = +{ + chebyshev2_check, + chebyshev2_init +}; + +const gsl_integration_fixed_type *gsl_integration_fixed_chebyshev2 = &chebyshev2_type; diff --git a/gsl-2.5/integration/chebyshev2.lo b/gsl-2.5/integration/chebyshev2.lo new file mode 100644 index 00000000..283c9c8b --- /dev/null +++ b/gsl-2.5/integration/chebyshev2.lo @@ -0,0 +1,12 @@ +# chebyshev2.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/chebyshev2.o' + +# Name of the non-PIC object +non_pic_object='chebyshev2.o' + diff --git a/gsl-2.5/integration/cquad.c b/gsl-2.5/integration/cquad.c new file mode 100644 index 00000000..28b70ca0 --- /dev/null +++ b/gsl-2.5/integration/cquad.c @@ -0,0 +1,683 @@ +/* integration/cquad.c + * + * Copyright (C) 2010 Pedro Gonnet + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include + +#include "cquad_const.c" + + +/* Allocates a workspace for the given maximum number of intervals. + Note that if the workspace gets filled, the intervals with the + lowest error estimates are dropped. The maximum number of + intervals is therefore not the maximum number of intervals + that will be computed, but merely the size of the buffer. + */ + +gsl_integration_cquad_workspace * +gsl_integration_cquad_workspace_alloc (const size_t n) +{ + + gsl_integration_cquad_workspace *w; + + /* Check inputs */ + if (n < 3) + GSL_ERROR_VAL ("workspace size n must be at least 3", GSL_EDOM, 0); + + /* Allocate first the workspace struct */ + if ((w = + (gsl_integration_cquad_workspace *) + malloc (sizeof (gsl_integration_cquad_workspace))) == NULL) + GSL_ERROR_VAL ("failed to allocate space for workspace struct", + GSL_ENOMEM, 0); + + /* Allocate the intervals */ + if ((w->ivals = + (gsl_integration_cquad_ival *) + malloc (sizeof (gsl_integration_cquad_ival) * n)) == NULL) + { + free (w); + GSL_ERROR_VAL ("failed to allocate space for the intervals", GSL_ENOMEM, + 0); + } + + /* Allocate the max-heap indices */ + if ((w->heap = (size_t *) malloc (sizeof (size_t) * n)) == NULL) + { + free (w->ivals); + free (w); + GSL_ERROR_VAL ("failed to allocate space for the heap", GSL_ENOMEM, 0); + } + + /* Remember the size of the workspace */ + w->size = n; + + /* Return the result */ + return w; + +} + + +/* Liberates the workspace memory. + */ + +void +gsl_integration_cquad_workspace_free (gsl_integration_cquad_workspace * w) +{ + + /* Nothing to be done? */ + if (w == NULL) + return; + + /* Free the intervals first */ + if (w->ivals != NULL) + free (w->ivals); + + /* Free the heap */ + if (w->heap != NULL) + free (w->heap); + + /* Free the structure */ + free (w); + +} + + +/* Compute the product of the fx with one of the inverse + Vandermonde-like matrices. */ + +static void +Vinvfx (const double *fx, double *c, const int d) +{ + + int i, j; + + switch (d) + { + case 0: + for (i = 0; i <= 4; i++) + { + c[i] = 0.0; + for (j = 0; j <= 4; j++) + c[i] += V1inv[i * 5 + j] * fx[j * 8]; + } + break; + case 1: + for (i = 0; i <= 8; i++) + { + c[i] = 0.0; + for (j = 0; j <= 8; j++) + c[i] += V2inv[i * 9 + j] * fx[j * 4]; + } + break; + case 2: + for (i = 0; i <= 16; i++) + { + c[i] = 0.0; + for (j = 0; j <= 16; j++) + c[i] += V3inv[i * 17 + j] * fx[j * 2]; + } + break; + case 3: + for (i = 0; i <= 32; i++) + { + c[i] = 0.0; + for (j = 0; j <= 32; j++) + c[i] += V4inv[i * 33 + j] * fx[j]; + } + break; + } + +} + + +/* Downdate the interpolation given by the n coefficients c + by removing the nodes with indices in nans. */ + +static void +downdate (double *c, int n, int d, int *nans, int nnans) +{ + + static const int bidx[4] = { 0, 6, 16, 34 }; + double b_new[34], alpha; + int i, j; + + for (i = 0; i <= n + 1; i++) + b_new[i] = bee[bidx[d] + i]; + for (i = 0; i < nnans; i++) + { + b_new[n + 1] = b_new[n + 1] / Lalpha[n]; + b_new[n] = (b_new[n] + xi[nans[i]] * b_new[n + 1]) / Lalpha[n - 1]; + for (j = n - 1; j > 0; j--) + b_new[j] = + (b_new[j] + xi[nans[i]] * b_new[j + 1] - + Lgamma[j + 1] * b_new[j + 2]) / Lalpha[j - 1]; + for (j = 0; j <= n; j++) + b_new[j] = b_new[j + 1]; + alpha = c[n] / b_new[n]; + for (j = 0; j < n; j++) + c[j] -= alpha * b_new[j]; + c[n] = 0; + n--; + } + +} + + +/* The actual integration routine. + */ + +int +gsl_integration_cquad (const gsl_function * f, double a, double b, + double epsabs, double epsrel, + gsl_integration_cquad_workspace * ws, + double *result, double *abserr, size_t * nevals) +{ + + /* Some constants that we will need. */ + static const int n[4] = { 4, 8, 16, 32 }; + static const int skip[4] = { 8, 4, 2, 1 }; + static const int idx[4] = { 0, 5, 14, 31 }; + static const double w = M_SQRT2 / 2; + static const int ndiv_max = 20; + + /* Actual variables (as opposed to constants above). */ + double m, h, temp; + double igral, err, igral_final, err_final, err_excess; + int nivals, neval = 0; + int i, j, d, split, t; + int nnans, nans[32]; + gsl_integration_cquad_ival *iv, *ivl, *ivr; + double nc, ncdiff; + + /* Check the input arguments. */ + if (f == NULL) + GSL_ERROR ("function pointer shouldn't be NULL", GSL_EINVAL); + if (result == NULL) + GSL_ERROR ("result pointer shouldn't be NULL", GSL_EINVAL); + if (ws == NULL) + GSL_ERROR ("workspace pointer shouldn't be NULL", GSL_EINVAL); + + + /* Check for unreasonable accuracy demands */ + if (epsabs < 0.0 || epsrel < 0.0) + GSL_ERROR ("tolerances may not be negative", GSL_EBADTOL); + if (epsabs <= 0 && epsrel < GSL_DBL_EPSILON) + GSL_ERROR ("unreasonable accuracy requirement", GSL_EBADTOL); + + + /* Create the first interval. */ + iv = &(ws->ivals[0]); + m = (a + b) / 2; + h = (b - a) / 2; + nnans = 0; + for (i = 0; i <= n[3]; i++) + { + iv->fx[i] = GSL_FN_EVAL (f, m + xi[i] * h); + neval++; + if (!gsl_finite (iv->fx[i])) + { + nans[nnans++] = i; + iv->fx[i] = 0.0; + } + } + Vinvfx (iv->fx, &(iv->c[idx[0]]), 0); + Vinvfx (iv->fx, &(iv->c[idx[3]]), 3); + Vinvfx (iv->fx, &(iv->c[idx[2]]), 2); + for (i = 0; i < nnans; i++) + iv->fx[nans[i]] = GSL_NAN; + iv->a = a; + iv->b = b; + iv->depth = 3; + iv->rdepth = 1; + iv->ndiv = 0; + iv->igral = 2 * h * iv->c[idx[3]] * w; + nc = 0.0; + for (i = n[2] + 1; i <= n[3]; i++) + { + temp = iv->c[idx[3] + i]; + nc += temp * temp; + } + ncdiff = nc; + for (i = 0; i <= n[2]; i++) + { + temp = iv->c[idx[2] + i] - iv->c[idx[3] + i]; + ncdiff += temp * temp; + nc += iv->c[idx[3] + i] * iv->c[idx[3] + i]; + } + ncdiff = sqrt (ncdiff); + nc = sqrt (nc); + iv->err = ncdiff * 2 * h; + if (ncdiff / nc > 0.1 && iv->err < 2 * h * nc) + iv->err = 2 * h * nc; + + + /* Initialize the heaps. */ + for (i = 0; i < ws->size; i++) + ws->heap[i] = i; + + + /* Initialize some global values. */ + igral = iv->igral; + err = iv->err; + nivals = 1; + igral_final = 0.0; + err_final = 0.0; + err_excess = 0.0; + + + /* Main loop. */ + while (nivals > 0 && err > 0.0 && + !(err <= fabs (igral) * epsrel || err <= epsabs) + && !(err_final > fabs (igral) * epsrel + && err - err_final < fabs (igral) * epsrel) + && !(err_final > epsabs && err - err_final < epsabs)) + { + + /* Put our finger on the interval with the largest error. */ + iv = &(ws->ivals[ws->heap[0]]); + m = (iv->a + iv->b) / 2; + h = (iv->b - iv->a) / 2; + +/* printf + ("cquad: processing ival %i (of %i) with [%e,%e] int=%e, err=%e, depth=%i\n", + ws->heap[0], nivals, iv->a, iv->b, iv->igral, iv->err, iv->depth); +*/ + /* Should we try to increase the degree? */ + if (iv->depth < 3) + { + + /* Keep tabs on some variables. */ + d = ++iv->depth; + + /* Get the new (missing) function values */ + for (i = skip[d]; i <= 32; i += 2 * skip[d]) + { + iv->fx[i] = GSL_FN_EVAL (f, m + xi[i] * h); + neval++; + } + nnans = 0; + for (i = 0; i <= 32; i += skip[d]) + { + if (!gsl_finite (iv->fx[i])) + { + nans[nnans++] = i; + iv->fx[i] = 0.0; + } + } + + /* Compute the new coefficients. */ + Vinvfx (iv->fx, &(iv->c[idx[d]]), d); + + /* Downdate any NaNs. */ + if (nnans > 0) + { + downdate (&(iv->c[idx[d]]), n[d], d, nans, nnans); + for (i = 0; i < nnans; i++) + iv->fx[nans[i]] = GSL_NAN; + } + + /* Compute the error estimate. */ + nc = 0.0; + for (i = n[d - 1] + 1; i <= n[d]; i++) + { + temp = iv->c[idx[d] + i]; + nc += temp * temp; + } + ncdiff = nc; + for (i = 0; i <= n[d - 1]; i++) + { + temp = iv->c[idx[d - 1] + i] - iv->c[idx[d] + i]; + ncdiff += temp * temp; + nc += iv->c[idx[d] + i] * iv->c[idx[d] + i]; + } + ncdiff = sqrt (ncdiff); + nc = sqrt (nc); + iv->err = ncdiff * 2 * h; + + /* Compute the local integral. */ + iv->igral = 2 * h * w * iv->c[idx[d]]; + + /* Split the interval prematurely? */ + split = (nc > 0 && ncdiff / nc > 0.1); + + } + + /* Maximum degree reached, just split. */ + else + { + split = 1; + } + + + /* Should we drop this interval? */ + if ((m + h * xi[0]) >= (m + h * xi[1]) + || (m + h * xi[31]) >= (m + h * xi[32]) + || iv->err < fabs (iv->igral) * GSL_DBL_EPSILON * 10) + { + +/* printf + ("cquad: dumping ival %i (of %i) with [%e,%e] int=%e, err=%e, depth=%i\n", + ws->heap[0], nivals, iv->a, iv->b, iv->igral, iv->err, + iv->depth); +*/ + /* Keep this interval's contribution */ + err_final += iv->err; + igral_final += iv->igral; + + /* Swap with the last element on the heap */ + t = ws->heap[nivals - 1]; + ws->heap[nivals - 1] = ws->heap[0]; + ws->heap[0] = t; + nivals--; + + /* Fix up the heap */ + i = 0; + while (2 * i + 1 < nivals) + { + + /* Get the kids */ + j = 2 * i + 1; + + /* If the j+1st entry exists and is larger than the jth, + use it instead. */ + if (j + 1 < nivals + && ws->ivals[ws->heap[j + 1]].err >= + ws->ivals[ws->heap[j]].err) + j++; + + /* Do we need to move the ith entry up? */ + if (ws->ivals[ws->heap[j]].err <= ws->ivals[ws->heap[i]].err) + break; + else + { + t = ws->heap[j]; + ws->heap[j] = ws->heap[i]; + ws->heap[i] = t; + i = j; + } + } + + } + + /* Do we need to split this interval? */ + else if (split) + { + + /* Some values we will need often... */ + d = iv->depth; + + /* Generate the interval on the left */ + ivl = &(ws->ivals[ws->heap[nivals++]]); + ivl->a = iv->a; + ivl->b = m; + ivl->depth = 0; + ivl->rdepth = iv->rdepth + 1; + ivl->fx[0] = iv->fx[0]; + ivl->fx[32] = iv->fx[16]; + for (i = skip[0]; i < 32; i += skip[0]) + { + ivl->fx[i] = + GSL_FN_EVAL (f, (ivl->a + ivl->b) / 2 + xi[i] * h / 2); + neval++; + } + nnans = 0; + for (i = 0; i <= 32; i += skip[0]) + { + if (!gsl_finite (ivl->fx[i])) + { + nans[nnans++] = i; + ivl->fx[i] = 0.0; + } + } + Vinvfx (ivl->fx, ivl->c, 0); + if (nnans > 0) + { + downdate (ivl->c, n[0], 0, nans, nnans); + for (i = 0; i < nnans; i++) + ivl->fx[nans[i]] = GSL_NAN; + } + for (i = 0; i <= n[d]; i++) + { + ivl->c[idx[d] + i] = 0.0; + for (j = i; j <= n[d]; j++) + ivl->c[idx[d] + i] += Tleft[i * 33 + j] * iv->c[idx[d] + j]; + } + ncdiff = 0.0; + for (i = 0; i <= n[0]; i++) + { + temp = ivl->c[i] - ivl->c[idx[d] + i]; + ncdiff += temp * temp; + } + for (i = n[0] + 1; i <= n[d]; i++) + { + temp = ivl->c[idx[d] + i]; + ncdiff += temp * temp; + } + ncdiff = sqrt (ncdiff); + ivl->err = ncdiff * h; + + /* Check for divergence. */ + ivl->ndiv = iv->ndiv + (fabs (iv->c[0]) > 0 + && ivl->c[0] / iv->c[0] > 2); + if (ivl->ndiv > ndiv_max && 2 * ivl->ndiv > ivl->rdepth) + { + /* need copysign(INFINITY, igral) */ + *result = (igral >= 0) ? GSL_POSINF : GSL_NEGINF; + if (nevals != NULL) + *nevals = neval; + return GSL_EDIVERGE; + } + + /* Compute the local integral. */ + ivl->igral = h * w * ivl->c[0]; + + + /* Generate the interval on the right */ + ivr = &(ws->ivals[ws->heap[nivals++]]); + ivr->a = m; + ivr->b = iv->b; + ivr->depth = 0; + ivr->rdepth = iv->rdepth + 1; + ivr->fx[0] = iv->fx[16]; + ivr->fx[32] = iv->fx[32]; + for (i = skip[0]; i < 32; i += skip[0]) + { + ivr->fx[i] = + GSL_FN_EVAL (f, (ivr->a + ivr->b) / 2 + xi[i] * h / 2); + neval++; + } + nnans = 0; + for (i = 0; i <= 32; i += skip[0]) + { + if (!gsl_finite (ivr->fx[i])) + { + nans[nnans++] = i; + ivr->fx[i] = 0.0; + } + } + Vinvfx (ivr->fx, ivr->c, 0); + if (nnans > 0) + { + downdate (ivr->c, n[0], 0, nans, nnans); + for (i = 0; i < nnans; i++) + ivr->fx[nans[i]] = GSL_NAN; + } + for (i = 0; i <= n[d]; i++) + { + ivr->c[idx[d] + i] = 0.0; + for (j = i; j <= n[d]; j++) + ivr->c[idx[d] + i] += Tright[i * 33 + j] * iv->c[idx[d] + j]; + } + ncdiff = 0.0; + for (i = 0; i <= n[0]; i++) + { + temp = ivr->c[i] - ivr->c[idx[d] + i]; + ncdiff += temp * temp; + } + for (i = n[0] + 1; i <= n[d]; i++) + { + temp = ivr->c[idx[d] + i]; + ncdiff += temp * temp; + } + ncdiff = sqrt (ncdiff); + ivr->err = ncdiff * h; + + /* Check for divergence. */ + ivr->ndiv = iv->ndiv + (fabs (iv->c[0]) > 0 + && ivr->c[0] / iv->c[0] > 2); + if (ivr->ndiv > ndiv_max && 2 * ivr->ndiv > ivr->rdepth) + { + /* need copysign(INFINITY, igral) */ + *result = (igral >= 0) ? GSL_POSINF : GSL_NEGINF; + if (nevals != NULL) + *nevals = neval; + return GSL_EDIVERGE; + } + + /* Compute the local integral. */ + ivr->igral = h * w * ivr->c[0]; + + + /* Fix-up the heap: we now have one interval on top + that we don't need any more and two new, unsorted + ones at the bottom. */ + + /* Flip the last interval to the top of the heap and + sift down. */ + t = ws->heap[nivals - 1]; + ws->heap[nivals - 1] = ws->heap[0]; + ws->heap[0] = t; + nivals--; + + /* Sift this interval back down the heap. */ + i = 0; + while (2 * i + 1 < nivals - 1) + { + j = 2 * i + 1; + if (j + 1 < nivals - 1 + && ws->ivals[ws->heap[j + 1]].err >= + ws->ivals[ws->heap[j]].err) + j++; + if (ws->ivals[ws->heap[j]].err <= ws->ivals[ws->heap[i]].err) + break; + else + { + t = ws->heap[j]; + ws->heap[j] = ws->heap[i]; + ws->heap[i] = t; + i = j; + } + } + + /* Now grab the last interval and sift it up the heap. */ + i = nivals - 1; + while (i > 0) + { + j = (i - 1) / 2; + if (ws->ivals[ws->heap[j]].err < ws->ivals[ws->heap[i]].err) + { + t = ws->heap[j]; + ws->heap[j] = ws->heap[i]; + ws->heap[i] = t; + i = j; + } + else + break; + } + + + } + + /* Otherwise, just fix-up the heap. */ + else + { + i = 0; + while (2 * i + 1 < nivals) + { + j = 2 * i + 1; + if (j + 1 < nivals + && ws->ivals[ws->heap[j + 1]].err >= + ws->ivals[ws->heap[j]].err) + j++; + if (ws->ivals[ws->heap[j]].err <= ws->ivals[ws->heap[i]].err) + break; + else + { + t = ws->heap[j]; + ws->heap[j] = ws->heap[i]; + ws->heap[i] = t; + i = j; + } + } + + } + + /* If the heap is about to overflow, remove the last two + intervals. */ + while (nivals > ws->size - 2) + { + iv = &(ws->ivals[ws->heap[nivals - 1]]); + +/* printf + ("cquad: dumping ival %i (of %i) with [%e,%e] int=%e, err=%e, depth=%i\n", + ws->heap[0], nivals, iv->a, iv->b, iv->igral, iv->err, + iv->depth); +*/ + err_final += iv->err; + igral_final += iv->igral; + nivals--; + } + + /* Collect the value of the integral and error. */ + igral = igral_final; + err = err_final; + for (i = 0; i < nivals; i++) + { + igral += ws->ivals[ws->heap[i]].igral; + err += ws->ivals[ws->heap[i]].err; + } + + } + + /* Dump the contents of the heap. */ +/* for (i = 0; i < nivals; i++) + { + iv = &(ws->ivals[ws->heap[i]]); + printf + ("cquad: ival %i (%i) with [%e,%e], int=%e, err=%e, depth=%i, rdepth=%i\n", + i, ws->heap[i], iv->a, iv->b, iv->igral, iv->err, iv->depth, + iv->rdepth); + } +*/ + /* Clean up and present the results. */ + *result = igral; + if (abserr != NULL) + *abserr = err; + if (nevals != NULL) + *nevals = neval; + + /* All is well that ends well. */ + return GSL_SUCCESS; + +} diff --git a/gsl-2.5/integration/cquad.lo b/gsl-2.5/integration/cquad.lo new file mode 100644 index 00000000..3a8b804f --- /dev/null +++ b/gsl-2.5/integration/cquad.lo @@ -0,0 +1,12 @@ +# cquad.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/cquad.o' + +# Name of the non-PIC object +non_pic_object='cquad.o' + diff --git a/gsl-2.5/integration/cquad_const.c b/gsl-2.5/integration/cquad_const.c new file mode 100644 index 00000000..624204b0 --- /dev/null +++ b/gsl-2.5/integration/cquad_const.c @@ -0,0 +1,1334 @@ +/* Some constants and matrices that we'll need. + */ + +static const double xi[33] = { + -1., -0.99518472667219688624, -0.98078528040323044912, + -0.95694033573220886493, -0.92387953251128675612, + -0.88192126434835502970, -0.83146961230254523708, + -0.77301045336273696082, -0.70710678118654752440, + -0.63439328416364549822, -0.55557023301960222475, + -0.47139673682599764857, -0.38268343236508977173, + -0.29028467725446236764, -0.19509032201612826785, + -0.098017140329560601995, 0., 0.098017140329560601995, + 0.19509032201612826785, 0.29028467725446236764, 0.38268343236508977173, + 0.47139673682599764857, 0.55557023301960222475, 0.63439328416364549822, + 0.70710678118654752440, 0.77301045336273696082, 0.83146961230254523708, + 0.88192126434835502970, 0.92387953251128675612, 0.95694033573220886493, + 0.98078528040323044912, 0.99518472667219688624, 1. +}; + +static const double bee[68] = { + 0.00000000000000e+00, 2.28868854108532e-01, 0.00000000000000e+00, + -8.15740215243451e-01, 0.00000000000000e+00, 5.31212715259731e-01, + 0.00000000000000e+00, 1.38538036812454e-02, 0.00000000000000e+00, + 3.74405228908818e-02, 0.00000000000000e+00, 2.12224115039342e-01, + 0.00000000000000e+00, -8.16362644507898e-01, 0.00000000000000e+00, + 5.35648426691481e-01, 0.00000000000000e+00, 1.52417902753662e-03, + 0.00000000000000e+00, 2.63058840550873e-03, 0.00000000000000e+00, + 4.15292106318904e-03, 0.00000000000000e+00, 6.97106011119775e-03, + 0.00000000000000e+00, 1.35535708431058e-02, 0.00000000000000e+00, + 3.52132898424856e-02, 0.00000000000000e+00, 2.06946714741884e-01, + 0.00000000000000e+00, -8.15674251283876e-01, 0.00000000000000e+00, + 5.38841175520580e-01, 0.00000000000000e+00, 1.84909689577590e-04, + 0.00000000000000e+00, 2.90936325007499e-04, 0.00000000000000e+00, + 3.84877750950089e-04, 0.00000000000000e+00, 4.86436656735046e-04, + 0.00000000000000e+00, 6.08688640346879e-04, 0.00000000000000e+00, + 7.66732830740331e-04, 0.00000000000000e+00, 9.82753336104205e-04, + 0.00000000000000e+00, 1.29359957505615e-03, 0.00000000000000e+00, + 1.76616363801885e-03, 0.00000000000000e+00, 2.53323433039089e-03, + 0.00000000000000e+00, 3.88872172121956e-03, 0.00000000000000e+00, + 6.58635106468291e-03, 0.00000000000000e+00, 1.30326736343254e-02, + 0.00000000000000e+00, 3.44353850696714e-02, 0.00000000000000e+00, + 2.05025409531915e-01, 0.00000000000000e+00, -8.14985893995401e-01, + 0.00000000000000e+00, 5.40679930965238e-01 +}; + +static const double Lalpha[33] = { + 5.77350269189626e-01, 5.16397779494322e-01, 5.07092552837110e-01, + 5.03952630678970e-01, 5.02518907629606e-01, 5.01745206004255e-01, + 5.01280411827603e-01, 5.00979432868120e-01, 5.00773395667191e-01, + 5.00626174321759e-01, 5.00517330712619e-01, 5.00434593736979e-01, + 5.00370233297676e-01, 5.00319182924304e-01, 5.00278009473803e-01, + 5.00244319584578e-01, 5.00216403386025e-01, 5.00193012939056e-01, + 5.00173220168024e-01, 5.00156323280355e-01, 5.00141783641018e-01, + 5.00129182278347e-01, 5.00118189340972e-01, 5.00108542278496e-01, + 5.00100030010004e-01, 5.00092481273333e-01, 5.00085755939229e-01, + 5.00079738458365e-01, 5.00074332862969e-01, 5.00069458915387e-01, + 5.00065049112355e-01, 5.00061046334395e-01, 5.00057401986298e-01 +}; + +static const double Lgamma[33] = { + 0.0, 0.0, 5.16397779494322e-01, 5.07092552837110e-01, 5.03952630678970e-01, + 5.02518907629606e-01, 5.01745206004255e-01, 5.01280411827603e-01, + 5.00979432868120e-01, 5.00773395667191e-01, 5.00626174321759e-01, + 5.00517330712619e-01, 5.00434593736979e-01, 5.00370233297676e-01, + 5.00319182924304e-01, 5.00278009473803e-01, 5.00244319584578e-01, + 5.00216403386025e-01, 5.00193012939056e-01, 5.00173220168024e-01, + 5.00156323280355e-01, 5.00141783641018e-01, 5.00129182278347e-01, + 5.00118189340972e-01, 5.00108542278496e-01, 5.00100030010003e-01, + 5.00092481273333e-01, 5.00085755939229e-01, 5.00079738458365e-01, + 5.00074332862969e-01, 5.00069458915387e-01, 5.00065049112355e-01, + 5.00061046334395e-01 +}; + +static const double V1inv[5 * 5] = { + .47140452079103168293e-1, .37712361663282534635, .56568542494923801952, + .37712361663282534635, .47140452079103168293e-1, + -.81649658092772603273e-1, -.46188021535170061160, 0, + .46188021535170061160, .81649658092772603273e-1, .15058465048420853962, + .12046772038736683169, -.54210474174315074262, .12046772038736683169, + .15058465048420853962, -.21380899352993950775, .30237157840738178177, -0., + -.30237157840738178177, .21380899352993950775, .10774960475223581324, + -.21549920950447162648, .21549920950447162648, -.21549920950447162648, + .10774960475223581324 +}; + +static const double V2inv[9 * 9] = { + .11223917161691230546e-1, .10339219839658349826, .19754094204576565761, + .25577315077753587922, .27835314560994251755, .25577315077753587922, + .19754094204576565761, .10339219839658349826, .11223917161691230546e-1, + -.19440394783993476970e-1, -.16544884625069155470, -.24193725566041460608, + -.16953338808305493604, 0.0, .16953338808305493604, .24193725566041460608, + .16544884625069155470, .19440394783993476970e-1, .26466393115406349388e-1, + .17766815796285469394, .11316664642449611462, -.16306601003711325980, + -.30847037493128779631, -.16306601003711325980, .11316664642449611462, + .17766815796285469394, .26466393115406349388e-1, + -.32395302049990834508e-1, -.15521142532414866547, + .88573492664788602740e-1, .29570405784974857322, 0.0, + -.29570405784974857322, -.88573492664788602740e-1, .15521142532414866547, + .32395302049990834508e-1, .41442155673936851246e-1, + .98186757907405608245e-1, -.23056908429499411784, + -.68047008326360625520e-1, .31797435808002456774, + -.68047008326360625520e-1, -.23056908429499411784, + .98186757907405608245e-1, .41442155673936851246e-1, + -.49981120317798783134e-1, -.24861810572835756217e-1, + .23561326072010832539, -.24472785656448415351, 0.0, .24472785656448415351, + -.23561326072010832539, .24861810572835756217e-1, + .49981120317798783134e-1, .79691635865674781228e-1, + -.95725617891693941833e-1, -.57957553356854386344e-1, + .21164072460540271452, -.27529837844505833514, .21164072460540271452, + -.57957553356854386344e-1, -.95725617891693941833e-1, + .79691635865674781228e-1, + -.10894869830716590913, .20131094491947531782, -.15407672674888869038, + .83385723639789791384e-1, 0.0, -.83385723639789791384e-1, + .15407672674888869038, -.20131094491947531782, .10894869830716590913, + .54581057089643838221e-1, -.10916211417928767644, .10916211417928767644, + -.10916211417928767644, .10916211417928767644, -.10916211417928767644, + .10916211417928767644, -.10916211417928767644, .54581057089643838221e-1 +}; + +static const double V3inv[17 * 17] = { + .27729677693590098996e-2, .26423663180333065153e-1, + .53374068493933898312e-1, .77007854739523195947e-1, + .98257061072911596869e-1, .11538049741786835604, .12832134344120884559, + .13612785914022865001, .13888293186236181317, .13612785914022865001, + .12832134344120884559, .11538049741786835604, .98257061072911596869e-1, + .77007854739523195947e-1, .53374068493933898312e-1, + .26423663180333065153e-1, .27729677693590098996e-2, + -.48029210642807413690e-2, -.44887724635478800254e-1, + -.85409520147301089416e-1, -.11090267822061423050, -.12033983162705862441, + -.11102786862182788886, -.85054870109799336515e-1, + -.45998467987742225160e-1, 0.0, .45998467987742225160e-1, + .85054870109799336515e-1, .11102786862182788886, .12033983162705862441, + .11090267822061423050, .85409520147301089416e-1, .44887724635478800254e-1, + .48029210642807413690e-2, .62758546879582030087e-2, + .55561297093529155869e-1, + .93281491021051539742e-1, .92320151237493695139e-1, + .55077987469605684531e-1, + -.96998141716497488255e-2, -.80285961895427405567e-1, + -.13496839655913850224, + -.15512521776684524331, -.13496839655913850224, -.80285961895427405567e-1, + -.96998141716497488255e-2, .55077987469605684531e-1, + .92320151237493695139e-1, .93281491021051539742e-1, + .55561297093529155869e-1, .62758546879582030087e-2, + -.74850969394858555939e-2, -.61751608943839234096e-1, + -.82974150437304275958e-1, -.38437763431942633378e-1, + .45745502025779701366e-1, .12369235652734542162, .14720439712852868239, + .98768034347019704401e-1, 0.0, + -.98768034347019704401e-1, -.14720439712852868239, -.12369235652734542162, + -.45745502025779701366e-1, .38437763431942633378e-1, + .82974150437304275958e-1, .61751608943839234096e-1, + .74850969394858555939e-2, .86710099994384056338e-2, + .64006230103659573344e-1, .58517426396091675690e-1, + -.29743410528985802680e-1, + -.11934127779157114754, -.12686773515361299409, -.30729137153877447035e-1, + .97307836256600731568e-1, .15635811574451401023, .97307836256600731568e-1, + -.30729137153877447035e-1, -.12686773515361299409, -.11934127779157114754, + -.29743410528985802680e-1, .58517426396091675690e-1, + .64006230103659573344e-1, .86710099994384056338e-2, + -.97486395666294840165e-2, -.62995604908060224672e-1, + -.24373234450275529219e-1, .87760984413626872730e-1, + .12205204576993351394, + .16216004196864002088e-1, -.12422320942156845775, -.13682714580929614678, + 0.0, .13682714580929614678, .12422320942156845775, + -.16216004196864002088e-1, -.12205204576993351394, + -.87760984413626872730e-1, .24373234450275529219e-1, + .62995604908060224672e-1, .97486395666294840165e-2, + .10956271233750488468e-1, .58613204255294358939e-1, + -.13306063940736618859e-1, -.11606666444978454399, + -.52059598001115805639e-1, .10868540217796151849, .12594452879014618005, + -.44678658254872910434e-1, -.15617684362128533405, + -.44678658254872910434e-1, .12594452879014618005, .10868540217796151849, + -.52059598001115805639e-1, -.11606666444978454399, + -.13306063940736618859e-1, .58613204255294358939e-1, + .10956271233750488468e-1, -.12098893000863087230e-1, + -.51626244709126208453e-1, .48919433304746979330e-1, + .10467644465949427090, + -.48729879523084673782e-1, -.13668732103524749234, .28190838706814496438e-1, + .15434223333238741600, 0.0, -.15434223333238741600, + -.28190838706814496438e-1, .13668732103524749234, + .48729879523084673782e-1, -.10467644465949427090, + -.48919433304746979330e-1, .51626244709126208453e-1, + .12098893000863087230e-1, .13542668300437944822e-1, + .41712033418258689308e-1, + -.76190463272803434388e-1, -.58303943170068132010e-1, .12158068748245606853, + .42121099930651007882e-1, -.14684425840766337756, + -.16108203535058647043e-1, .15698075850757976092, + -.16108203535058647043e-1, -.14684425840766337756, + .42121099930651007882e-1, .12158068748245606853, + -.58303943170068132010e-1, -.76190463272803434388e-1, + .41712033418258689308e-1, .13542668300437944822e-1, + -.14939634995117694417e-1, -.30047246373341564039e-1, + .91624635082546425678e-1, -.79133374319110026377e-2, + -.12292558212072233355, .90013382617762643524e-1, + .84013717196539593395e-1, -.14813033309980695856, 0.0, + .14813033309980695856, -.84013717196539593395e-1, + -.90013382617762643524e-1, + .12292558212072233355, .79133374319110026377e-2, -.91624635082546425678e-1, + .30047246373341564039e-1, .14939634995117694417e-1, + .16986031342807474208e-1, + .15760203882617033601e-1, -.91494054040950941996e-1, + .70082459207876130806e-1, + .53390713710144539104e-1, -.14340746778352039430, .84048122493418898508e-1, + .72456667788091316868e-1, -.15564535320096811360, + .72456667788091316868e-1, .84048122493418898508e-1, + -.14340746778352039430, .53390713710144539104e-1, + .70082459207876130806e-1, -.91494054040950941996e-1, + .15760203882617033601e-1, + .16986031342807474208e-1, -.18994065631858742028e-1, + -.82901821370405592927e-3, .77239669773015192888e-1, + -.10850735431039424680, .47524484622086496464e-1, + .69148184871588737021e-1, -.14829314646228194928, .11992057742398672066, + 0.0, -.11992057742398672066, .14829314646228194928, + -.69148184871588737021e-1, -.47524484622086496464e-1, + .10850735431039424680, -.77239669773015192888e-1, + .82901821370405592927e-3, .18994065631858742028e-1, + .22761703826371535132e-1, -.17728848711449643358e-1, + -.47496371572480503788e-1, .10659958402328690063, -.11696013966166296514, + .63073750910894244526e-1, .32928881123602721303e-1, + -.12280950532497593683, .15926189077282729505, -.12280950532497593683, + .32928881123602721303e-1, .63073750910894244526e-1, + -.11696013966166296514, .10659958402328690063, -.47496371572480503788e-1, + -.17728848711449643358e-1, .22761703826371535132e-1, + -.26493215276042203434e-1, .35579780856128386192e-1, + .10447309718398935122e-1, -.68616154085314996709e-1, + .11775363082763954214, -.13918901977011837274, .12312819418827395690, + -.72053565748259077905e-1, 0.0, .72053565748259077905e-1, + -.12312819418827395690, .13918901977011837274, -.11775363082763954214, + .68616154085314996709e-1, -.10447309718398935122e-1, + -.35579780856128386192e-1, + .26493215276042203434e-1, .40742523354399706918e-1, + -.73124912999529117195e-1, .49317266444153837821e-1, + -.13686605413876015320e-1, -.28342624942191100464e-1, + .70371855298258216249e-1, -.10600251632853603875, .12981016288391131812, + -.13817029659318161476, .12981016288391131812, -.10600251632853603875, + .70371855298258216249e-1, -.28342624942191100464e-1, + -.13686605413876015320e-1, + .49317266444153837821e-1, -.73124912999529117195e-1, + .40742523354399706918e-1, -.54944368958699908688e-1, + .10777725663147408190, -.10152395581538265428, .91369146312596428468e-1, + -.77703071757424700773e-1, .61050911730999815031e-1, + -.42052599404498348871e-1, .21438229266251454773e-1, 0.0, + -.21438229266251454773e-1, .42052599404498348871e-1, + -.61050911730999815031e-1, .77703071757424700773e-1, + -.91369146312596428468e-1, + .10152395581538265428, -.10777725663147408190, .54944368958699908688e-1, + .27485608464748840573e-1, -.54971216929497681146e-1, + .54971216929497681146e-1, + -.54971216929497681146e-1, .54971216929497681146e-1, + -.54971216929497681146e-1, .54971216929497681146e-1, + -.54971216929497681146e-1, .54971216929497681146e-1, + -.54971216929497681146e-1, .54971216929497681146e-1, + -.54971216929497681146e-1, .54971216929497681146e-1, + -.54971216929497681146e-1, .54971216929497681146e-1, + -.54971216929497681146e-1, .27485608464748840573e-1 +}; + +static const double V4inv[33 * 33] = { + .69120897476690862600e-3, .66419939766331555194e-2, + .13600665164323186111e-1, .20122785860913684493e-1, + .26583214101668429944e-1, .32712713318999268739e-1, + .38576221976287138036e-1, .44033030938268925133e-1, + .49092709529622799673e-1, .53657949874312515646e-1, + .57724533144734311859e-1, .61219564530655179096e-1, + .64138907503837875026e-1, .66427905189318792009e-1, + .68088956652280022887e-1, .69083051391555695878e-1, + .69422738116739271449e-1, .69083051391555695878e-1, + .68088956652280022887e-1, .66427905189318792009e-1, + .64138907503837875026e-1, .61219564530655179096e-1, + .57724533144734311859e-1, .53657949874312515646e-1, + .49092709529622799673e-1, .44033030938268925133e-1, + .38576221976287138036e-1, .32712713318999268739e-1, + .26583214101668429944e-1, .20122785860913684493e-1, + .13600665164323186111e-1, .66419939766331555194e-2, + .69120897476690862600e-3, -.11972090629438798134e-2, + -.11448874821643225573e-1, -.23104401104002905904e-1, + -.33352899418646530133e-1, -.42538626424075425908e-1, + -.49969730733911825941e-1, -.55555454015360728353e-1, + -.58955533624852604918e-1, -.60126044219122513907e-1, + -.58959430451175833624e-1, -.55546925396227130606e-1, + -.49984739749347973762e-1, -.42513009141170294365e-1, + -.33399140950669746346e-1, -.23007690803851790829e-1, + -.11728275717520066169e-1, 0.0, .11728275717520066169e-1, + .23007690803851790829e-1, .33399140950669746346e-1, + .42513009141170294365e-1, .49984739749347973762e-1, + .55546925396227130606e-1, .58959430451175833624e-1, + .60126044219122513907e-1, .58955533624852604918e-1, + .55555454015360728353e-1, .49969730733911825941e-1, + .42538626424075425908e-1, .33352899418646530133e-1, + .23104401104002905904e-1, .11448874821643225573e-1, + .11972090629438798134e-2, .15501585012936019146e-2, + .14628781502199620482e-1, .28684915921474815271e-1, + .39299396074628048026e-1, .46393418975496284204e-1, + .48756902531094699526e-1, .46331333488337494692e-1, + .39012645376980228775e-1, .27452795421085791153e-1, + .12430953621169863781e-1, -.47682978056024928800e-2, + -.22825828045428973853e-1, + -.40195512090720278312e-1, -.55503004262826221955e-1, + -.67424537752827046308e-1, -.75020199300113606452e-1, + -.77607844312483656131e-1, -.75020199300113606452e-1, + -.67424537752827046308e-1, -.55503004262826221955e-1, + -.40195512090720278312e-1, -.22825828045428973853e-1, + -.47682978056024928800e-2, .12430953621169863781e-1, + .27452795421085791153e-1, .39012645376980228775e-1, + .46331333488337494692e-1, .48756902531094699526e-1, + .46393418975496284204e-1, .39299396074628048026e-1, + .28684915921474815271e-1, .14628781502199620482e-1, + .15501585012936019146e-2, -.18377757558949194214e-2, + -.17050470050949761565e-1, -.31952119564923250836e-1, + -.40197423449026348155e-1, + -.41205649520281371624e-1, -.33909965817492272248e-1, + -.19393664422115332144e-1, .56661049630886784692e-3, + .22948272173686561721e-1, .44489719570904738207e-1, + .61790363672287920596e-1, .72121014727028013894e-1, + .73627151185287858579e-1, .65784665375961398923e-1, + .49369676372333667559e-1, .26444326317059715065e-1, 0.0, + -.26444326317059715065e-1, -.49369676372333667559e-1, + -.65784665375961398923e-1, -.73627151185287858579e-1, + -.72121014727028013894e-1, -.61790363672287920596e-1, + -.44489719570904738207e-1, -.22948272173686561721e-1, + -.56661049630886784692e-3, .19393664422115332144e-1, + .33909965817492272248e-1, .41205649520281371624e-1, + .40197423449026348155e-1, .31952119564923250836e-1, + .17050470050949761565e-1, .18377757558949194214e-2, + .20942714740729767769e-2, .18935902405146518232e-1, + .33335840852491735126e-1, .36770680999102286065e-1, + .28873194534132768509e-1, .10267303017729535513e-1, + -.14607738306201572890e-1, -.40139568545572305818e-1, + -.59808326733858291561e-1, -.68528358823372627506e-1, + -.63306535387619244879e-1, -.44508601817574921056e-1, + -.15449116105605395357e-1, .17941083795006546367e-1, + .48747356011657242123e-1, .70329553984201665523e-1, + .78106117292526169663e-1, .70329553984201665523e-1, + .48747356011657242123e-1, .17941083795006546367e-1, + -.15449116105605395357e-1, -.44508601817574921056e-1, + -.63306535387619244879e-1, -.68528358823372627506e-1, + -.59808326733858291561e-1, + -.40139568545572305818e-1, -.14607738306201572890e-1, + .10267303017729535513e-1, .28873194534132768509e-1, + .36770680999102286065e-1, .33335840852491735126e-1, + .18935902405146518232e-1, .20942714740729767769e-2, + -.23245285491878278419e-2, -.20401404737639389919e-1, + -.33019548231022514097e-1, -.29709828426463720091e-1, + -.11760070922697422156e-1, .15987584743850393793e-1, + .43619012891472813485e-1, .61177322409671487721e-1, + .61144030218486655594e-1, + .41895377620089086167e-1, .80232011820644308033e-2, + -.30574701186675900915e-1, + -.62072243008844865848e-1, -.76336186183574765586e-1, + -.68435466095345537115e-1, -.40237669208466966207e-1, 0.0, + .40237669208466966207e-1, .68435466095345537115e-1, + .76336186183574765586e-1, .62072243008844865848e-1, + .30574701186675900915e-1, -.80232011820644308033e-2, + -.41895377620089086167e-1, -.61144030218486655594e-1, + -.61177322409671487721e-1, -.43619012891472813485e-1, + -.15987584743850393793e-1, .11760070922697422156e-1, + .29709828426463720091e-1, .33019548231022514097e-1, + .20401404737639389919e-1, .23245285491878278419e-2, + .25451717261579269307e-2, .21480418595666878775e-1, + .31177212469293007998e-1, .19816333607013379373e-1, + -.72439496274458793681e-2, -.38404203906598342397e-1, + -.57633632255322221046e-1, -.54070547403585392952e-1, + -.26249823354368866005e-1, .15643058212336881516e-1, + .54539832735118677194e-1, .73283028002473989724e-1, + .62835303524135936213e-1, .26175977027801048141e-1, + -.22193636309998606610e-1, -.62597049956093311234e-1, + -.78206986173170212505e-1, -.62597049956093311234e-1, + -.22193636309998606610e-1, .26175977027801048141e-1, + .62835303524135936213e-1, + .73283028002473989724e-1, .54539832735118677194e-1, + .15643058212336881516e-1, + -.26249823354368866005e-1, -.54070547403585392952e-1, + -.57633632255322221046e-1, -.38404203906598342397e-1, + -.72439496274458793681e-2, .19816333607013379373e-1, + .31177212469293007998e-1, .21480418595666878775e-1, + .25451717261579269307e-2, -.27506573922483820005e-2, + -.22224442095099251870e-1, -.27949927254215773020e-1, + -.80918481053370034987e-2, .25121859354449306916e-1, + .51563535009373061074e-1, .51936965107145960512e-1, + .22146626648171527753e-1, + -.24172689882103382748e-1, -.61731229104853568296e-1, + -.68477262429344201201e-1, -.38311232728303704742e-1, + .14160578713659552679e-1, .61248813427564184033e-1, + .77136328841293031805e-1, .52514801765183697988e-1, 0.0, + -.52514801765183697988e-1, -.77136328841293031805e-1, + -.61248813427564184033e-1, -.14160578713659552679e-1, + .38311232728303704742e-1, + .68477262429344201201e-1, .61731229104853568296e-1, + .24172689882103382748e-1, + -.22146626648171527753e-1, -.51936965107145960512e-1, + -.51563535009373061074e-1, -.25121859354449306916e-1, + .80918481053370034987e-2, .27949927254215773020e-1, + .22224442095099251870e-1, .27506573922483820005e-2, + .29562461131654311467e-2, .22630271480554450613e-1, + .23547399831373800971e-1, -.43964593440902476642e-2, + -.39055315767504970597e-1, -.52369643937940066804e-1, + -.28506131614971613422e-1, .19906048093338832322e-1, + .60408880866392420279e-1, .62493397473656883090e-1, + .21391278377641297859e-1, -.37302864786623254746e-1, + -.73665127933539496872e-1, -.61706142476854010202e-1, + -.78065168882546327888e-2, .52335307373945544428e-1, + .78278746279419264777e-1, .52335307373945544428e-1, + -.78065168882546327888e-2, -.61706142476854010202e-1, + -.73665127933539496872e-1, -.37302864786623254746e-1, + .21391278377641297859e-1, .62493397473656883090e-1, + .60408880866392420279e-1, .19906048093338832322e-1, + -.28506131614971613422e-1, -.52369643937940066804e-1, + -.39055315767504970597e-1, -.43964593440902476642e-2, + .23547399831373800971e-1, .22630271480554450613e-1, + .29562461131654311467e-2, -.31515718415504761303e-2, + -.22739451096655080673e-1, -.18157123602272119779e-1, + .16496480897167303621e-1, .46921166788569301124e-1, + .40644395739978416354e-1, -.46275803430732216900e-2, + -.52883375891308909486e-1, -.61116483226324111734e-1, + -.17411698764545629853e-1, .44773430013166822765e-1, + .73441577962383869198e-1, .42127368371995472815e-1, + -.25504645957196772465e-1, -.74126818045972742488e-1, + -.62780077864719287317e-1, 0.0, .62780077864719287317e-1, + .74126818045972742488e-1, .25504645957196772465e-1, + -.42127368371995472815e-1, -.73441577962383869198e-1, + -.44773430013166822765e-1, .17411698764545629853e-1, + .61116483226324111734e-1, .52883375891308909486e-1, + .46275803430732216900e-2, -.40644395739978416354e-1, + -.46921166788569301124e-1, -.16496480897167303621e-1, + .18157123602272119779e-1, .22739451096655080673e-1, + .31515718415504761303e-2, .33536559294882188208e-2, + .22535348942792006185e-1, + .12048629300953560767e-1, -.27166076791299493403e-1, + -.47492745604230978367e-1, -.19246623430993153174e-1, + .36231297307556299322e-1, .61713617181636122004e-1, + .25928029734266134490e-1, -.40478700752883602818e-1, + -.71053889866326412049e-1, -.31870824482961751482e-1, + .41515251100219081281e-1, .76481960760098381651e-1, + .36726509155999912440e-1, -.40090067032627055969e-1, + -.78270742903374539397e-1, -.40090067032627055969e-1, + .36726509155999912440e-1, .76481960760098381651e-1, + .41515251100219081281e-1, -.31870824482961751482e-1, + -.71053889866326412049e-1, -.40478700752883602818e-1, + .25928029734266134490e-1, .61713617181636122004e-1, + .36231297307556299322e-1, -.19246623430993153174e-1, + -.47492745604230978367e-1, -.27166076791299493403e-1, + .12048629300953560767e-1, .22535348942792006185e-1, + .33536559294882188208e-2, + -.35481220456925318865e-2, -.22062913693073191150e-1, + -.54487362861834144999e-2, .35438821865804087489e-1, + .40733077820527411302e-1, -.67403098138950720914e-2, + -.55559584405239171054e-1, -.42417050790865158745e-1, + .24499901971884704925e-1, .68721232891705409302e-1, + .34086082787461126592e-1, -.43441000373118474002e-1, + -.73878085292669148950e-1, -.18846995664706657127e-1, + .59827776178286834498e-1, .70644634584085901794e-1, 0.0, + -.70644634584085901794e-1, -.59827776178286834498e-1, + .18846995664706657127e-1, .73878085292669148950e-1, + .43441000373118474002e-1, -.34086082787461126592e-1, + -.68721232891705409302e-1, -.24499901971884704925e-1, + .42417050790865158745e-1, .55559584405239171054e-1, + .67403098138950720914e-2, -.40733077820527411302e-1, + -.35438821865804087489e-1, .54487362861834144999e-2, + .22062913693073191150e-1, .35481220456925318865e-2, + .37554176816665075631e-2, .21297045781589919482e-1, + -.13327293083183431816e-2, + -.40635299172764596484e-1, -.27659860508374175359e-1, + .31089232744083445986e-1, .56113781541334176109e-1, + .37577840643257763400e-2, -.60511227350664590865e-1, + -.46670556446129053853e-1, .33263195878575888247e-1, + .72757324720645228775e-1, .15011712351692283635e-1, + -.65601212994924119078e-1, -.60016855838843789772e-1, + .26220858553188665966e-1, .78322776605833552980e-1, + .26220858553188665966e-1, -.60016855838843789772e-1, + -.65601212994924119078e-1, + .15011712351692283635e-1, .72757324720645228775e-1, + .33263195878575888247e-1, + -.46670556446129053853e-1, -.60511227350664590865e-1, + .37577840643257763400e-2, .56113781541334176109e-1, + .31089232744083445986e-1, -.27659860508374175359e-1, + -.40635299172764596484e-1, -.13327293083183431816e-2, + .21297045781589919482e-1, .37554176816665075631e-2, + -.39566995305720591229e-2, -.20291873414438919995e-1, + .80617453830770930551e-2, .42270189157016547906e-1, + .10332624526759093004e-1, -.48054759547616142024e-1, + -.37678032941171643972e-1, + .36617192625732482394e-1, .61009425973424865714e-1, + -.95589113168026591466e-2, + -.71023202645076922361e-1, -.25097788086808784456e-1, + .62406621963267050244e-1, .56907293171100693511e-1, + -.36435383083882206257e-1, -.75790105119208756348e-1, 0.0, + .75790105119208756348e-1, .36435383083882206257e-1, + -.56907293171100693511e-1, -.62406621963267050244e-1, + .25097788086808784456e-1, .71023202645076922361e-1, + .95589113168026591466e-2, + -.61009425973424865714e-1, -.36617192625732482394e-1, + .37678032941171643972e-1, .48054759547616142024e-1, + -.10332624526759093004e-1, -.42270189157016547906e-1, + -.80617453830770930551e-2, .20291873414438919995e-1, + .39566995305720591229e-2, .41776092289182138591e-2, + .19013221163904414395e-1, -.14420609729849899876e-1, + -.40259160586844441220e-1, .86327811113710831649e-2, + .53564430703021034399e-1, .65469185402150431933e-2, + -.60383116311280629856e-1, + -.25657793784058876939e-1, .58745680576829226900e-1, + .45649937869034420296e-1, + -.49167932056844167772e-1, -.62696614328552187977e-1, + .32540234556426699997e-1, .74280410383464269758e-1, + -.11425672633410999870e-1, -.78280649404686404903e-1, + -.11425672633410999870e-1, .74280410383464269758e-1, + .32540234556426699997e-1, -.62696614328552187977e-1, + -.49167932056844167772e-1, .45649937869034420296e-1, + .58745680576829226900e-1, -.25657793784058876939e-1, + -.60383116311280629856e-1, .65469185402150431933e-2, + .53564430703021034399e-1, + .86327811113710831649e-2, -.40259160586844441220e-1, + -.14420609729849899876e-1, .19013221163904414395e-1, + .41776092289182138591e-2, -.43935502082478059199e-2, + -.17528761237509401631e-1, .20208915249153872535e-1, + .34734743119040669109e-1, -.26275910172353637955e-1, + -.46368003346018878786e-1, + .26800056330709381025e-1, .56681476464606609921e-1, + -.24749011438127255898e-1, + -.64934612189056658992e-1, .20333742247679279535e-1, + .71429299070059318651e-1, + -.14452513210428671266e-1, -.75793341281736586582e-1, + .74717094137184935270e-2, .78034921554757317374e-1, 0.0, + -.78034921554757317374e-1, -.74717094137184935270e-2, + .75793341281736586582e-1, .14452513210428671266e-1, + -.71429299070059318651e-1, -.20333742247679279535e-1, + .64934612189056658992e-1, .24749011438127255898e-1, + -.56681476464606609921e-1, + -.26800056330709381025e-1, .46368003346018878786e-1, + .26275910172353637955e-1, + -.34734743119040669109e-1, -.20208915249153872535e-1, + .17528761237509401631e-1, .43935502082478059199e-2, + .46379089482818671473e-2, .15791188144791287229e-1, + -.25134290048737455284e-1, -.26249795071946841205e-1, + .39960457575789924651e-1, .28111892450146525404e-1, + -.51026476400767918226e-1, + -.27266747278681831364e-1, .60708796647861610865e-1, + .23532306960642115854e-1, + -.68169639871532441111e-1, -.18204924701958312032e-1, + .73822890510656128485e-1, .11373392486424717019e-1, + -.77133324017644609416e-1, -.39295877480342619961e-2, + .78351902829418987960e-1, -.39295877480342619961e-2, + -.77133324017644609416e-1, .11373392486424717019e-1, + .73822890510656128485e-1, -.18204924701958312032e-1, + -.68169639871532441111e-1, .23532306960642115854e-1, + .60708796647861610865e-1, -.27266747278681831364e-1, + -.51026476400767918226e-1, .28111892450146525404e-1, + .39960457575789924651e-1, -.26249795071946841205e-1, + -.25134290048737455284e-1, .15791188144791287229e-1, + .46379089482818671473e-2, -.48780095920069827068e-2, + -.13886961667516983541e-1, .29071311049368895844e-1, + .15480559452075811600e-1, -.47527977686242313065e-1, + -.31929089844361042178e-2, .58015667638415922967e-1, + -.14547915466597622925e-1, -.61067668299848923244e-1, + .35093678009090186851e-1, .55378399159800654657e-1, + -.54277226474891610385e-1, -.42023830782434076509e-1, + .69197384645944912066e-1, .22610783557709586445e-1, + -.77269275900637030185e-1, 0.0, .77269275900637030185e-1, + -.22610783557709586445e-1, + -.69197384645944912066e-1, .42023830782434076509e-1, + .54277226474891610385e-1, + -.55378399159800654657e-1, -.35093678009090186851e-1, + .61067668299848923244e-1, .14547915466597622925e-1, + -.58015667638415922967e-1, .31929089844361042178e-2, + .47527977686242313065e-1, -.15480559452075811600e-1, + -.29071311049368895844e-1, .13886961667516983541e-1, + .48780095920069827068e-2, .51591759101720291381e-2, + .11747497650231330965e-1, -.31777863364694653331e-1, + -.34555825499804605557e-2, .47914131921157015198e-1, + -.22573685920142225247e-1, -.45320344390022666738e-1, + .49660630547172186418e-1, .25707858143963615736e-1, + -.68132707341917233933e-1, .67534860185243140399e-2, + .69268150370037450063e-1, -.41585011920451477177e-1, + -.51622397460510041271e-1, .68408139576363036148e-1, + .18981259024768933323e-1, -.78265472429342305554e-1, + .18981259024768933323e-1, .68408139576363036148e-1, + -.51622397460510041271e-1, + -.41585011920451477177e-1, .69268150370037450063e-1, + .67534860185243140399e-2, + -.68132707341917233933e-1, .25707858143963615736e-1, + .49660630547172186418e-1, + -.45320344390022666738e-1, -.22573685920142225247e-1, + .47914131921157015198e-1, -.34555825499804605557e-2, + -.31777863364694653331e-1, .11747497650231330965e-1, + .51591759101720291381e-2, -.54365757412741340377e-2, + -.94862516619529080191e-2, .33240472093448190877e-1, + -.88698898099681552229e-2, + -.40973252097216337576e-1, .42995673349795657065e-1, + .17320914507876958783e-1, + -.62201292691914856803e-1, .24726274174637346693e-1, + .51320859246515407288e-1, + -.62882063373810501763e-1, -.11003569131725622672e-1, + .73842261324108943465e-1, -.39240120294802923208e-1, + -.49293966443941122807e-1, .73552644778818223475e-1, 0.0, + -.73552644778818223475e-1, .49293966443941122807e-1, + .39240120294802923208e-1, -.73842261324108943465e-1, + .11003569131725622672e-1, .62882063373810501763e-1, + -.51320859246515407288e-1, + -.24726274174637346693e-1, .62201292691914856803e-1, + -.17320914507876958783e-1, -.42995673349795657065e-1, + .40973252097216337576e-1, .88698898099681552229e-2, + -.33240472093448190877e-1, .94862516619529080191e-2, + .54365757412741340377e-2, .57750194549356126240e-2, + .69981166020044116791e-2, -.33274982140403110792e-1, + .20297071020698356116e-1, .27898517839646066582e-1, + -.53368678853282030262e-1, .16656482990394548343e-1, + .46342901447260614255e-1, + -.60536796508149003365e-1, .29109107483842596340e-2, + .63224486124385124504e-1, + -.59028872851312033411e-1, -.14783105962696191734e-1, + .74269399241069253865e-1, -.49053677339382384625e-1, + -.33525466624811186739e-1, .78397349622515386647e-1, + -.33525466624811186739e-1, -.49053677339382384625e-1, + .74269399241069253865e-1, -.14783105962696191734e-1, + -.59028872851312033411e-1, + .63224486124385124504e-1, .29109107483842596340e-2, + -.60536796508149003365e-1, + .46342901447260614255e-1, .16656482990394548343e-1, + -.53368678853282030262e-1, + .27898517839646066582e-1, .20297071020698356116e-1, + -.33274982140403110792e-1, + .69981166020044116791e-2, .57750194549356126240e-2, + -.61100308370519200637e-2, -.44383614355738148616e-2, + .32011283412619094811e-1, -.29965011866372897633e-1, + -.10560682331349193348e-1, .51110336443392506342e-1, + -.45012284729681775492e-1, -.94236825555873320102e-2, + .60860695783141264746e-1, + -.55014628647083368926e-1, -.73474782382499482121e-2, + .66640148475243034781e-1, -.62533116045749887988e-1, + -.38650525912400102585e-2, .68429769005837003777e-1, + -.66984505412544901945e-1, 0.0, .66984505412544901945e-1, + -.68429769005837003777e-1, .38650525912400102585e-2, + .62533116045749887988e-1, -.66640148475243034781e-1, + .73474782382499482121e-2, + .55014628647083368926e-1, -.60860695783141264746e-1, + .94236825555873320102e-2, + .45012284729681775492e-1, -.51110336443392506342e-1, + .10560682331349193348e-1, + .29965011866372897633e-1, -.32011283412619094811e-1, + .44383614355738148616e-2, + .61100308370519200637e-2, .65409373892036191538e-2, + .16350101107071157065e-2, -.29301957285983144319e-1, + .36838667173388832579e-1, -.81922703976491586393e-2, + -.36955670021050133434e-1, .58374851095540469865e-1, + -.31977016246946181856e-1, -.25311073698658094646e-1, + .66674413950106952577e-1, + -.54865713324521039571e-1, -.39797027891537985440e-2, + .62830285264808449064e-1, -.72226313251296100676e-1, + .22560232697133353980e-1, .46455784709904033738e-1, + -.78200930751070349956e-1, .46455784709904033738e-1, + .22560232697133353980e-1, -.72226313251296100676e-1, + .62830285264808449064e-1, -.39797027891537985440e-2, + -.54865713324521039571e-1, .66674413950106952577e-1, + -.25311073698658094646e-1, -.31977016246946181856e-1, + .58374851095540469865e-1, -.36955670021050133434e-1, + -.81922703976491586393e-2, .36838667173388832579e-1, + -.29301957285983144319e-1, .16350101107071157065e-2, + .65409373892036191538e-2, -.69686180931868703196e-2, + .11849538727632789870e-2, .25452286414610537766e-1, + -.40522480651713943230e-1, .25694679053362813183e-1, + .14057118113748390637e-1, -.52037614725803488893e-1, + .58849342223684035589e-1, + -.25075229077361409271e-1, -.29559771094034181083e-1, + .68296746944165720199e-1, -.62890462146423984955e-1, + .14457636466274596445e-1, .45787612031322361496e-1, + -.77231759014655809742e-1, .57881203613910543657e-1, 0.0, + -.57881203613910543657e-1, .77231759014655809742e-1, + -.45787612031322361496e-1, -.14457636466274596445e-1, + .62890462146423984955e-1, + -.68296746944165720199e-1, .29559771094034181083e-1, + .25075229077361409271e-1, + -.58849342223684035589e-1, .52037614725803488893e-1, + -.14057118113748390637e-1, -.25694679053362813183e-1, + .40522480651713943230e-1, -.25452286414610537766e-1, + -.11849538727632789870e-2, .69686180931868703196e-2, + .75611653617520254845e-2, -.43290610418608409141e-2, + -.20277062025115566914e-1, + .40362947027704828926e-1, -.38938808024132120254e-1, + .11831186195916702262e-1, + .28476667401744525357e-1, -.59320969056617684621e-1, + .61101629747436200186e-1, + -.29514834848355389223e-1, -.20668001885001084821e-1, + .62923592802445122793e-1, -.73558456263588833115e-1, + .45314556330160999776e-1, .79031645918426015574e-2, + -.58136953576334689357e-1, .78538474524006405758e-1, + -.58136953576334689357e-1, .79031645918426015574e-2, + .45314556330160999776e-1, -.73558456263588833115e-1, + .62923592802445122793e-1, -.20668001885001084821e-1, + -.29514834848355389223e-1, .61101629747436200186e-1, + -.59320969056617684621e-1, .28476667401744525357e-1, + .11831186195916702262e-1, -.38938808024132120254e-1, + .40362947027704828926e-1, -.20277062025115566914e-1, + -.43290610418608409141e-2, .75611653617520254845e-2, + -.81505692478987769484e-2, .74297333588288568430e-2, + .14314212513540223314e-1, -.36711242251332751607e-1, + .46240027755503814626e-1, -.34921532671769023773e-1, + .46930051972353714773e-2, + .32842770336385381562e-1, -.61317813706529588466e-1, + .67000809902468893103e-1, + -.45337449655535622885e-1, .35794459576271920867e-2, + .41830061526027213385e-1, + -.72091371931944711708e-1, .74150028530317793195e-1, + -.46487632538609942002e-1, 0.0, .46487632538609942002e-1, + -.74150028530317793195e-1, .72091371931944711708e-1, + -.41830061526027213385e-1, -.35794459576271920867e-2, + .45337449655535622885e-1, -.67000809902468893103e-1, + .61317813706529588466e-1, -.32842770336385381562e-1, + -.46930051972353714773e-2, .34921532671769023773e-1, + -.46240027755503814626e-1, .36711242251332751607e-1, + -.14314212513540223314e-1, -.74297333588288568430e-2, + .81505692478987769484e-2, .90693182942442189743e-2, + -.11121000903959576737e-1, -.71308296141317458546e-2, + .29219439765986671645e-1, -.45820286629778129593e-1, + .49088381175879124421e-1, -.35614888785023038938e-1, + .78906970900092777895e-2, + .26262843038404929480e-1, -.56143674270125757857e-1, + .71700220472378350694e-1, + -.66963544500697307945e-1, .42215091779892228883e-1, + -.41338867413966866997e-2, -.36164891772995367321e-1, + .66584367783847858225e-1, -.77874712365070098328e-1, + .66584367783847858225e-1, -.36164891772995367321e-1, + -.41338867413966866997e-2, .42215091779892228883e-1, + -.66963544500697307945e-1, + .71700220472378350694e-1, -.56143674270125757857e-1, + .26262843038404929480e-1, + .78906970900092777895e-2, -.35614888785023038938e-1, + .49088381175879124421e-1, + -.45820286629778129593e-1, .29219439765986671645e-1, + -.71308296141317458546e-2, -.11121000903959576737e-1, + .90693182942442189743e-2, -.99848472706332791043e-2, + .14701271465939718856e-1, -.32917820356048383366e-3, + -.19201195309873585230e-1, .38409681836626963278e-1, + -.51647324405878909521e-1, .54522171113149311354e-1, + -.45040302741689006270e-1, .24183738595685990149e-1, + .42204134165479735097e-2, -.34317295181348742251e-1, + .59542472465494579941e-1, -.74135115907618101263e-1, + .74491937840566532596e-1, -.60042604725161994304e-1, + .33437677409000083169e-1, 0.0, + -.33437677409000083169e-1, .60042604725161994304e-1, + -.74491937840566532596e-1, .74135115907618101263e-1, + -.59542472465494579941e-1, .34317295181348742251e-1, + -.42204134165479735097e-2, -.24183738595685990149e-1, + .45040302741689006270e-1, -.54522171113149311354e-1, + .51647324405878909521e-1, -.38409681836626963278e-1, + .19201195309873585230e-1, .32917820356048383366e-3, + -.14701271465939718856e-1, .99848472706332791043e-2, + .11775579274769383373e-1, -.19892153937316935880e-1, + .95335114477449041055e-2, .57661528440359081617e-2, + -.23382690532380910781e-1, .40237257037170725321e-1, + -.53280289903551636474e-1, .59974361806023689068e-1, + -.58701684061992853224e-1, .49033407111597129616e-1, + -.31818835267847249219e-1, .90800541261162098886e-2, + .16272906819312603838e-1, -.40863896581186229487e-1, + .61346046297517367703e-1, + -.74896047554167268919e-1, .79632642148310325817e-1, + -.74896047554167268919e-1, .61346046297517367703e-1, + -.40863896581186229487e-1, .16272906819312603838e-1, + .90800541261162098886e-2, -.31818835267847249219e-1, + .49033407111597129616e-1, -.58701684061992853224e-1, + .59974361806023689068e-1, -.53280289903551636474e-1, + .40237257037170725321e-1, -.23382690532380910781e-1, + .57661528440359081617e-2, .95335114477449041055e-2, + -.19892153937316935880e-1, + .11775579274769383373e-1, -.13562702617218467450e-1, + .24885419969649845849e-1, -.18368693901908875583e-1, + .81673147806084084638e-2, .47890591326129587131e-2, + -.19313752945227974024e-1, .34065953398362954708e-1, + -.47667045133463415672e-1, .58820377816690514309e-1, + -.66424139824618415970e-1, + .69667606260856092515e-1, -.68102459384364543253e-1, + .61683024923302547971e-1, + -.50771943476441639136e-1, .36110771847327189215e-1, + -.18758028464284563358e-1, 0.0, .18758028464284563358e-1, + -.36110771847327189215e-1, .50771943476441639136e-1, + -.61683024923302547971e-1, .68102459384364543253e-1, + -.69667606260856092515e-1, .66424139824618415970e-1, + -.58820377816690514309e-1, .47667045133463415672e-1, + -.34065953398362954708e-1, .19313752945227974024e-1, + -.47890591326129587131e-2, -.81673147806084084638e-2, + .18368693901908875583e-1, -.24885419969649845849e-1, + .13562702617218467450e-1, .20576545037980523979e-1, + -.40093155172981004337e-1, .36954083167944054826e-1, + -.31856506837591907746e-1, .24996323181546255126e-1, + -.16637165210473614136e-1, .71002706773325085237e-2, + .32478629093205201133e-2, + -.14009562579050569518e-1, .24771262248780618922e-1, + -.35119395835433647559e-1, .44656290368574753171e-1, + -.53015448339647394161e-1, .59875631995693046782e-1, + -.64973208326045193862e-1, .68112280331082143373e-1, + -.69172215234062186994e-1, .68112280331082143373e-1, + -.64973208326045193862e-1, .59875631995693046782e-1, + -.53015448339647394161e-1, .44656290368574753171e-1, + -.35119395835433647559e-1, .24771262248780618922e-1, + -.14009562579050569518e-1, .32478629093205201133e-2, + .71002706773325085237e-2, -.16637165210473614136e-1, + .24996323181546255126e-1, -.31856506837591907746e-1, + .36954083167944054826e-1, -.40093155172981004337e-1, + .20576545037980523979e-1, -.27584914609096156163e-1, + .54904171411058497973e-1, -.54109756419563083153e-1, + .52794234894345577483e-1, -.50970276026831042415e-1, + .48655445537990983379e-1, + -.45872036510847994332e-1, .42646854695899611372e-1, + -.39010960357087507670e-1, .34999369144476467749e-1, + -.30650714874402762189e-1, .26006877464703437057e-1, + -.21112579608213651273e-1, .16014956068786763273e-1, + -.10763099747751940252e-1, .54075888924374485533e-2, 0.0, + -.54075888924374485533e-2, .10763099747751940252e-1, + -.16014956068786763273e-1, + .21112579608213651273e-1, -.26006877464703437057e-1, + .30650714874402762189e-1, + -.34999369144476467749e-1, .39010960357087507670e-1, + -.42646854695899611372e-1, .45872036510847994332e-1, + -.48655445537990983379e-1, .50970276026831042415e-1, + -.52794234894345577483e-1, .54109756419563083153e-1, + -.54904171411058497973e-1, .27584914609096156163e-1, + .13794141262469565740e-1, -.27588282524939131481e-1, + .27588282524939131481e-1, -.27588282524939131481e-1, + .27588282524939131481e-1, -.27588282524939131481e-1, + .27588282524939131481e-1, + -.27588282524939131481e-1, .27588282524939131481e-1, + -.27588282524939131481e-1, .27588282524939131481e-1, + -.27588282524939131481e-1, .27588282524939131481e-1, + -.27588282524939131481e-1, .27588282524939131481e-1, + -.27588282524939131481e-1, .27588282524939131481e-1, + -.27588282524939131481e-1, .27588282524939131481e-1, + -.27588282524939131481e-1, .27588282524939131481e-1, + -.27588282524939131481e-1, .27588282524939131481e-1, + -.27588282524939131481e-1, .27588282524939131481e-1, + -.27588282524939131481e-1, .27588282524939131481e-1, + -.27588282524939131481e-1, .27588282524939131481e-1, + -.27588282524939131481e-1, .27588282524939131481e-1, + -.27588282524939131481e-1, .13794141262469565740e-1 +}; + +static const double Tleft[33 * 33] = { + 1., -.86602540378443864678, 0., .33071891388307382381, 0., + -.20728904939721249057, 0., .15128841196122722208, 0., + -.11918864298744029244, 0., .98352013661686631224e-1, 0., + -.83727065404940845733e-1, 0., .72893399403505841203e-1, 0., + -.64544632643375022436e-1, 0., .57913170372415565639e-1, 0., + -.52518242575729562263e-1, 0., .48043311993977520457e-1, 0., + -.44271433659733990243e-1, 0., .41048928022856771981e-1, 0., + -.38263878662008271459e-1, 0., .35832844026365304501e-1, 0., 0., + .50000000000000000000, -.96824583655185422130, .57282196186948000082, + .21650635094610966169, -.35903516540862679125, -.97578093724974971969e-1, + .26203921611325660506, .55792409597991015609e-1, -.20644078533943456204, + -.36172381205961199479e-1, .17035068468874958194, + .25371838001497225980e-1, -.14501953125000000000, + -.18786835250972344757e-1, .12625507130328301066, + .14473795929590520582e-1, -.11179458309419422675, + -.11494434254897626155e-1, .10030855351241635862, + .93498556820544479096e-2, -.90964264465390582629e-1, + -.77546391824364392762e-2, .83213457337452292745e-1, + .65358085945588638605e-2, -.76680372422574234569e-1, + -.55835321940047427169e-2, .71098828931825789428e-1, + .48253327982967591019e-2, -.66274981937248958553e-1, + -.42118078245337801387e-2, .62064306433355646267e-1, + .37083386598903548973e-2, 0., 0., .25000000000000000000, + -.73950997288745200531, .83852549156242113615, -.23175620272173946716, + -.37791833195149451496, .25710129174850522325, .21608307321780204633, + -.22844049245646009157, -.14009503000335388415, .19897685605518413847, + .98264706042471226893e-1, -.17445445004279014046, + -.72761100054958328401e-1, .15463589893742108388, + .56056770591708784481e-1, -.13855313872640495158, + -.44517752443294564781e-1, .12534277657695128850, + .36211835346039665762e-1, -.11434398255136139683, + -.30033588409423828125e-1, .10506705408753910481, + .25313077840725783008e-1, -.97149327637744872155e-1, + -.21624927200393328444e-1, .90319582367202122625e-1, + .18688433567711780666e-1, -.84372291635345108584e-1, + -.16312261561845420752e-1, .79149526894804751586e-1, + .14362333871852474757e-1, 0., 0., 0., .12500000000000000000, + -.49607837082461073572, .82265291131801144317, -.59621200088559103072, + -.80054302859059362371e-1, .42612156697795759420, + -.90098145270865592887e-1, -.29769623255090078484, .13630307904779758221, + .21638835185708931831, -.14600247270306082052, -.16348801804014290453, + .14340708728599057249, .12755243353979286190, -.13661523715071346961, + -.10215585947881057394, .12864248070157166547, .83592528025348693602e-1, + -.12066728689302565222, -.69633728678718053052e-1, .11314245177331919532, + .58882939251410088028e-1, -.10621835858758221487, + -.50432266865187597572e-1, .99916834723527771581e-1, + .43672094283057258509e-1, -.94206380251950852413e-1, + -.38181356812697746418e-1, .89035739656537771225e-1, + .33661934598216332678e-1, 0., 0., 0., 0., .62500000000000000000e-1, + -.31093357409581873586, .67604086414949799246, -.75644205980613611039, + .28990586430124175741, .30648508196770360914, -.35801372616842500052, + -.91326869828709014708e-1, .31127929687500000000, + -.90915752838698393094e-2, -.25637381283965534330, + .57601077850322797594e-1, .21019685709225757945, + -.81244992138514014256e-1, -.17375078516720988858, + .92289437277967051125e-1, .14527351914265391374, + -.96675340792832019889e-1, -.12289485697108543415, + .97448175340011084006e-1, .10511755943298339844, + -.96242247086378239657e-1, -.90822942272780513537e-1, + .93966350452322132384e-1, .79189411876493712558e-1, + -.91139307067989309325e-1, -.69613039934383197265e-1, + .88062491671135767870e-1, .61646331729340817494e-1, 0., 0., 0., 0., 0., + .31250000000000000000e-1, -.18684782411095934408, .50176689760410660236, + -.74784031498626095398, .56472001151566251186, .14842464993721351203e-1, + -.41162920273003120936, .20243071230196532282, .23772054897172750436, + -.24963810923972235950, -.12116179938394678936, .24330535483519110663, + .47903849781124471359e-1, -.22133299683101224293, + -.20542915138527200983e-2, .19653465717678146728, + -.26818172626509178444e-1, -.17319122357631210944, + .45065391411065545445e-1, .15253391395444065941, + -.56543897711725408302e-1, -.13469154928743585367, + .63632471400208840155e-1, .11941684923913523817, + -.67828850207933293098e-1, -.10636309084510652670, + .70095786922999181504e-1, .95187373095150709082e-1, 0., 0., 0., 0., 0., + 0., .15625000000000000000e-1, -.10909562534194485289, + .34842348626527747318, -.64461114561628111443, .69382480527334683659, + -.29551102358528827763, -.25527584713978439819, .38878771718544715394, + -.82956185835347407489e-2, -.31183177761966943912, .12831420840372374767, + .22067618205599434368, -.17569196937129496961, -.14598057000132284135, + .18864406621763419484, .89921002550386645767e-1, -.18571835020187122114, + -.48967672227195481777e-1, .17584685670380332798, + .19267984545067426324e-1, -.16335437520503462738, + .22598055455032407594e-2, .15032800884170631129, + -.17883358353754640871e-1, -.13774837869432209951, + .29227555960587143675e-1, .12604194747513151053, 0., 0., 0., 0., 0., 0., + 0., .78125000000000000000e-2, -.62377810244809812496e-1, + .23080781467370883845, -.50841310636012325368, .69834547012574056043, + -.52572723156526459672, .11464215704954976471e-1, .38698869011491210342, + -.26125646622255207507, -.16951698812361607510, .29773875898928782269, + .20130501202570367491e-1, -.26332493149159310198, + .67734613690401207009e-1, .21207315477103762715, -.11541543390889415193, + -.16249634759782417533, .13885887405041735068, .11996491328010275427, + -.14810432001630926895, -.85177658352556243411e-1, .14918860659904380587, + .57317789510444151564e-1, -.14569827645586660151, + -.35213090145965327390e-1, .13975998126844578198, 0., 0., 0., 0., 0., 0., + 0., 0., .39062500000000000000e-2, -.35101954600803571207e-1, + .14761284084133737720, -.37655033076080192966, .62410290231517322776, + -.64335622317683389875, .28188168266139524244, .22488495672137010675, + -.39393811089283576186, .75184777995770096714e-1, .28472023119398293003, + -.20410910833705899572, -.15590046962908511750, .23814567544617953125, + .54442805556829031204e-1, -.22855930338589720954, + .16303223615756629897e-1, .20172722433875559213, + -.62723406421217419404e-1, -.17012230831020922010, + .91754642766136561612e-1, .13927644821381121197, -.10886600968068418181, + -.11139075654373395292, .11797455976331702879, 0., 0., 0., 0., 0., 0., 0., + 0., 0., .19531250000000000000e-2, -.19506820659607596598e-1, + .91865676095362231937e-1, -.26604607809696493849, .51425874205091288223, + -.66047561132505329292, .48660109511591303851, -.17575661168678285615e-1, + -.36594333408055703366, .29088854695378694533, .11318677346656537927, + -.31110645235730182168, .60733219161008787341e-1, .24333848233620420826, + -.15254312332655419708, -.15995968483455388613, .19010344455215289289, + .86040636766440260000e-1, -.19652589954665259945, + -.27633388517205837713e-1, .18660848552712880387, + -.15942583868416775867e-1, -.16902042462382064786, + .47278526495327740646e-1, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + .97656250000000000000e-3, -.10731084460857378207e-1, + .55939644713816406331e-1, -.18118487371914493668, .39914857299829864263, + -.60812322949933902435, .60011887183061967583, -.26002695805835928795, + -.20883922404786010096, .38988130966114638081, -.11797833550782589082, + -.25231824756239520077, .24817859972953934712, .90516417677868996417e-1, + -.26079073291293066798, .30259468817169480161e-1, .22178195264114178432, + -.10569877864302048175, -.16679648389266977455, .14637718550245050850, + .11219272032739559870, -.16359363640525750353, -.64358194509092101393e-1, + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .48828125000000000000e-3, + -.58542865274813470967e-2, .33461741635290096452e-1, + -.11979993155896201271, .29580223766987206958, -.51874761979436016742, + .62861483498014306968, -.44868895761051453296, .12567502628371529386e-1, + .35040366183235474275, -.30466868455569500886, -.70903913601490112666e-1, + .30822791893032512740, -.11969443264190207736, -.20764760317621313946, + .20629838355452128532, .95269702915334718507e-1, -.22432624768705133300, + -.33103381593477797101e-2, .20570036048155716333, + -.62208282720094518964e-1, -.17095309330441436348, 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., .24414062500000000000e-3, + -.31714797501871532475e-2, .19721062526127334100e-1, + -.77311181185536498246e-1, .21124871792841566575, -.41777980401893650886, + .59401977834943551650, -.56132417807488349048, .23433675061367565951, + .20222775295220942126, -.38280372496506190127, .14443804214023095767, + .22268950939178466797, -.27211314150777981984, -.34184876506180717313e-1, + .26006498895669734842, -.97650425186005090107e-1, -.19024527660129101293, + .16789164198044635671, .10875811641651905252, -.19276785058805921298, 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .12207031250000000000e-3, + -.17078941137247586143e-2, .11477733754843910060e-1, + -.48887017020924625462e-1, .14634927241421789683, -.32156282683019547854, + .52165811920227223937, -.60001958466396926460, .41208501541480733755, + -.11366945503190350975e-2, -.33968093962672089159, .30955190935923386766, + .40657421856578262210e-1, -.29873400409871531764, .16094481791768257440, + .16876122436206497694, -.23650217045022161255, -.33070260090574765012e-1, + .22985258456375907796, -.68645651043827097771e-1, 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., .61035156250000000000e-4, + -.91501857608428649078e-3, .66085179496951987952e-2, + -.30383171695850355404e-1, .98840838845366876117e-1, + -.23855447246420318989, .43322017468145613917, -.58049033744876107191, + .52533893203742699346, -.20681056202371946180, -.20180000924562504384, + .37503922291962681797, -.15988102869837429062, -.19823558102762374094, + .28393023878803799622, -.11188133439357510403e-1, -.24730368377168229255, + .14731529061377942839, .14878558042884266021, 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., .30517578125000000000e-4, + -.48804277318479845551e-3, .37696080990601968396e-2, + -.18603912108994738255e-1, .65325006755649582964e-1, + -.17162960707938819795, .34411527956476971322, -.52289350347082497959, + .57319653625674910592, -.37662253421045430413, -.14099055105384663902e-1, + .33265570610216904208, -.30921265572647566661, -.19911390594166455281e-1, + .28738590811031797718, -.18912130469738472647, -.13235936203215819193, + .25076406142356675279, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., .15258789062500000000e-4, -.25928719280954633249e-3, + .21327398937568540428e-2, -.11244626133630732010e-1, + .42375605740664331966e-1, -.12031130345907846211, .26352562258934426830, + -.44590628258512682078, .56682835613700749379, -.49116715128261660395, + .17845943097110339078, .20541650677432497477, -.36739803642257458221, + .16776034069210108273, .17920950989905112908, -.28867732805385066532, + .46473465543376206337e-1, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., .76293945312500000000e-5, -.13727610943181290891e-3, + .11979683091449349286e-2, -.67195313034570709806e-2, + .27044920779931968175e-1, -.82472196498517457862e-1, + .19570475044896150093, -.36391620788543817693, .52241392782736588032, + -.54727504974907879912, .34211551468813581183, .31580472732719957762e-1, + -.32830006549176759667, .30563797665254420769, .64905014620683140120e-2, + -.27642986248995073032, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., .38146972656250000000e-5, + -.72454147007837596854e-4, .66859847582761390285e-3, + -.39751311980366118437e-2, .17015198650201528366e-1, + -.55443621868993855715e-1, .14157060481641692131, -.28641242619559616836, + .45610665490966615415, -.55262786406029265394, .45818352706035500108, + -.14984403004611673047, -.21163807462970713245, .36007252928843413718, + -.17030961385712954159, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., .19073486328125000000e-5, + -.38135049864067468562e-4, .37101393638555730015e-3, + -.23305339886279723213e-2, .10569913448297127219e-1, + -.36640175162216897547e-1, .10010476414320235508, -.21860074212675559892, + .38124757096345313719, -.52020999209879669177, .52172632730659212045, + -.30841620620308814614, -.50322546186721500184e-1, .32577618885114899053, + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., .95367431640625000000e-6, -.20021483206955925244e-4, + .20481807322420625431e-3, -.13553476938058909882e-2, + .64919676350791905019e-2, -.23848725425069251903e-1, + .69384632678886421292e-1, -.16249711393618776934, .30736618106830314788, + -.46399909601971539157, .53765031034002467225, -.42598991476520183929, + .12130445348350215652, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., .47683715820312500000e-6, + -.10487707828484902486e-4, .11254146162337528943e-3, + -.78248929534271987118e-3, .39468337145306794566e-2, + -.15313546659475671763e-1, .47249070825218564146e-1, + -.11804374107101480543, .24031796927792491122, -.39629215049166341285, + .51629108968402548545, -.49622372075429782915, 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + .23841857910156250000e-6, -.54823314130625337326e-5, + .61575377321535518154e-4, -.44877834366497538134e-3, + .23774612048621955857e-2, -.97136347645161687796e-2, + .31671599547606636717e-1, -.84028665767000747480e-1, + .18298487576742964949, -.32647878537696945218, .46970971486488895077, 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., .11920928955078125000e-6, -.28604020001177375838e-5, + .33559227978295551013e-4, -.25583821662860610560e-3, + .14201552747787302339e-2, -.60938046986874414969e-2, + .20930869247951926793e-1, -.58745021125678072911e-1, + .13613725780285953720, -.26083988356030237586, 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + .59604644775390625000e-7, -.14898180663526043291e-5, + .18224991282807693921e-4, -.14504433444608833821e-3, + .84184722720281809548e-3, -.37846965430000478789e-2, + .13656355548211376864e-1, -.40409541997718853934e-1, + .99226988101858325902e-1, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + .29802322387695312500e-7, -.77471708843445529468e-6, + .98649879372606876995e-5, -.81814934772838523887e-4, + .49554483992403011328e-3, -.23290922072351413938e-2, + .88068134250844034186e-2, -.27393666952485719070e-1, 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., .14901161193847656250e-7, -.40226235946098233685e-6, + .53236418690561306700e-5, -.45933829691164002269e-4, + .28982005232838857913e-3, -.14212974043211018374e-2, + .56192363087488842264e-2, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + .74505805969238281250e-8, -.20858299254133430408e-6, + .28648457300134381744e-5, -.25677535898258910850e-4, + .16849420429491355445e-3, -.86062824010315834002e-3, 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., .37252902984619140625e-8, -.10801736017613096861e-6, + .15376606719887104015e-5, -.14296523739727437959e-4, + .97419023656050887203e-4, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + .18626451492309570312e-8, -.55871592916438890146e-7, + .82331193828137454068e-6, -.79302250528382787666e-5, 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., .93132257461547851562e-9, + -.28867244235852488244e-7, .43982811713864556957e-6, 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., .46566128730773925781e-9, + -.14899342093408253335e-7, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., .23283064365386962891e-9 +}; + +static const double Tright[33 * 33] = { + 1., .86602540378443864678, 0., -.33071891388307382381, 0., + .20728904939721249057, 0., -.15128841196122722208, 0., + .11918864298744029244, 0., -.98352013661686631224e-1, 0., + .83727065404940845733e-1, 0., -.72893399403505841203e-1, 0., + .64544632643375022436e-1, 0., -.57913170372415565639e-1, 0., + .52518242575729562263e-1, 0., -.48043311993977520457e-1, 0., + .44271433659733990243e-1, 0., -.41048928022856771981e-1, 0., + .38263878662008271459e-1, 0., -.35832844026365304501e-1, 0., 0., + .50000000000000000000, .96824583655185422130, .57282196186948000082, + -.21650635094610966169, -.35903516540862679125, .97578093724974971969e-1, + .26203921611325660506, -.55792409597991015609e-1, -.20644078533943456204, + .36172381205961199479e-1, .17035068468874958194, + -.25371838001497225980e-1, -.14501953125000000000, + .18786835250972344757e-1, .12625507130328301066, + -.14473795929590520582e-1, -.11179458309419422675, + .11494434254897626155e-1, .10030855351241635862, + -.93498556820544479096e-2, -.90964264465390582629e-1, + .77546391824364392762e-2, .83213457337452292745e-1, + -.65358085945588638605e-2, -.76680372422574234569e-1, + .55835321940047427169e-2, .71098828931825789428e-1, + -.48253327982967591019e-2, -.66274981937248958553e-1, + .42118078245337801387e-2, .62064306433355646267e-1, + -.37083386598903548973e-2, 0., 0., .25000000000000000000, + .73950997288745200531, .83852549156242113615, .23175620272173946716, + -.37791833195149451496, -.25710129174850522325, .21608307321780204633, + .22844049245646009157, -.14009503000335388415, -.19897685605518413847, + .98264706042471226893e-1, .17445445004279014046, + -.72761100054958328401e-1, -.15463589893742108388, + .56056770591708784481e-1, .13855313872640495158, + -.44517752443294564781e-1, -.12534277657695128850, + .36211835346039665762e-1, .11434398255136139683, + -.30033588409423828125e-1, -.10506705408753910481, + .25313077840725783008e-1, .97149327637744872155e-1, + -.21624927200393328444e-1, -.90319582367202122625e-1, + .18688433567711780666e-1, .84372291635345108584e-1, + -.16312261561845420752e-1, -.79149526894804751586e-1, + .14362333871852474757e-1, 0., 0., 0., .12500000000000000000, + .49607837082461073572, .82265291131801144317, .59621200088559103072, + -.80054302859059362371e-1, -.42612156697795759420, + -.90098145270865592887e-1, .29769623255090078484, .13630307904779758221, + -.21638835185708931831, -.14600247270306082052, .16348801804014290453, + .14340708728599057249, -.12755243353979286190, -.13661523715071346961, + .10215585947881057394, .12864248070157166547, -.83592528025348693602e-1, + -.12066728689302565222, .69633728678718053052e-1, .11314245177331919532, + -.58882939251410088028e-1, -.10621835858758221487, + .50432266865187597572e-1, .99916834723527771581e-1, + -.43672094283057258509e-1, -.94206380251950852413e-1, + .38181356812697746418e-1, .89035739656537771225e-1, + -.33661934598216332678e-1, 0., 0., 0., 0., .62500000000000000000e-1, + .31093357409581873586, .67604086414949799246, .75644205980613611039, + .28990586430124175741, -.30648508196770360914, -.35801372616842500052, + .91326869828709014708e-1, .31127929687500000000, .90915752838698393094e-2, + -.25637381283965534330, -.57601077850322797594e-1, .21019685709225757945, + .81244992138514014256e-1, -.17375078516720988858, + -.92289437277967051125e-1, .14527351914265391374, + .96675340792832019889e-1, -.12289485697108543415, + -.97448175340011084006e-1, .10511755943298339844, + .96242247086378239657e-1, -.90822942272780513537e-1, + -.93966350452322132384e-1, .79189411876493712558e-1, + .91139307067989309325e-1, -.69613039934383197265e-1, + -.88062491671135767870e-1, .61646331729340817494e-1, 0., 0., 0., 0., 0., + .31250000000000000000e-1, .18684782411095934408, .50176689760410660236, + .74784031498626095398, .56472001151566251186, -.14842464993721351203e-1, + -.41162920273003120936, -.20243071230196532282, .23772054897172750436, + .24963810923972235950, -.12116179938394678936, -.24330535483519110663, + .47903849781124471359e-1, .22133299683101224293, + -.20542915138527200983e-2, -.19653465717678146728, + -.26818172626509178444e-1, .17319122357631210944, + .45065391411065545445e-1, -.15253391395444065941, + -.56543897711725408302e-1, .13469154928743585367, + .63632471400208840155e-1, -.11941684923913523817, + -.67828850207933293098e-1, .10636309084510652670, + .70095786922999181504e-1, -.95187373095150709082e-1, 0., 0., 0., 0., 0., + 0., .15625000000000000000e-1, .10909562534194485289, + .34842348626527747318, .64461114561628111443, .69382480527334683659, + .29551102358528827763, -.25527584713978439819, -.38878771718544715394, + -.82956185835347407489e-2, .31183177761966943912, .12831420840372374767, + -.22067618205599434368, -.17569196937129496961, .14598057000132284135, + .18864406621763419484, -.89921002550386645767e-1, -.18571835020187122114, + .48967672227195481777e-1, .17584685670380332798, + -.19267984545067426324e-1, -.16335437520503462738, + -.22598055455032407594e-2, .15032800884170631129, + .17883358353754640871e-1, -.13774837869432209951, + -.29227555960587143675e-1, .12604194747513151053, 0., 0., 0., 0., 0., 0., + 0., .78125000000000000000e-2, .62377810244809812496e-1, + .23080781467370883845, .50841310636012325368, .69834547012574056043, + .52572723156526459672, .11464215704954976471e-1, -.38698869011491210342, + -.26125646622255207507, .16951698812361607510, .29773875898928782269, + -.20130501202570367491e-1, -.26332493149159310198, + -.67734613690401207009e-1, .21207315477103762715, .11541543390889415193, + -.16249634759782417533, -.13885887405041735068, .11996491328010275427, + .14810432001630926895, -.85177658352556243411e-1, -.14918860659904380587, + .57317789510444151564e-1, .14569827645586660151, + -.35213090145965327390e-1, -.13975998126844578198, 0., 0., 0., 0., 0., 0., + 0., 0., .39062500000000000000e-2, .35101954600803571207e-1, + .14761284084133737720, .37655033076080192966, .62410290231517322776, + .64335622317683389875, .28188168266139524244, -.22488495672137010675, + -.39393811089283576186, -.75184777995770096714e-1, .28472023119398293003, + .20410910833705899572, -.15590046962908511750, -.23814567544617953125, + .54442805556829031204e-1, .22855930338589720954, .16303223615756629897e-1, + -.20172722433875559213, -.62723406421217419404e-1, .17012230831020922010, + .91754642766136561612e-1, -.13927644821381121197, -.10886600968068418181, + .11139075654373395292, .11797455976331702879, 0., 0., 0., 0., 0., 0., 0., + 0., 0., .19531250000000000000e-2, .19506820659607596598e-1, + .91865676095362231937e-1, .26604607809696493849, .51425874205091288223, + .66047561132505329292, .48660109511591303851, .17575661168678285615e-1, + -.36594333408055703366, -.29088854695378694533, .11318677346656537927, + .31110645235730182168, .60733219161008787341e-1, -.24333848233620420826, + -.15254312332655419708, .15995968483455388613, .19010344455215289289, + -.86040636766440260000e-1, -.19652589954665259945, + .27633388517205837713e-1, .18660848552712880387, .15942583868416775867e-1, + -.16902042462382064786, -.47278526495327740646e-1, 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., .97656250000000000000e-3, .10731084460857378207e-1, + .55939644713816406331e-1, .18118487371914493668, .39914857299829864263, + .60812322949933902435, .60011887183061967583, .26002695805835928795, + -.20883922404786010096, -.38988130966114638081, -.11797833550782589082, + .25231824756239520077, .24817859972953934712, -.90516417677868996417e-1, + -.26079073291293066798, -.30259468817169480161e-1, .22178195264114178432, + .10569877864302048175, -.16679648389266977455, -.14637718550245050850, + .11219272032739559870, .16359363640525750353, -.64358194509092101393e-1, + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .48828125000000000000e-3, + .58542865274813470967e-2, .33461741635290096452e-1, .11979993155896201271, + .29580223766987206958, .51874761979436016742, .62861483498014306968, + .44868895761051453296, .12567502628371529386e-1, -.35040366183235474275, + -.30466868455569500886, .70903913601490112666e-1, .30822791893032512740, + .11969443264190207736, -.20764760317621313946, -.20629838355452128532, + .95269702915334718507e-1, .22432624768705133300, + -.33103381593477797101e-2, -.20570036048155716333, + -.62208282720094518964e-1, .17095309330441436348, 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., .24414062500000000000e-3, + .31714797501871532475e-2, .19721062526127334100e-1, + .77311181185536498246e-1, .21124871792841566575, .41777980401893650886, + .59401977834943551650, .56132417807488349048, .23433675061367565951, + -.20222775295220942126, -.38280372496506190127, -.14443804214023095767, + .22268950939178466797, .27211314150777981984, -.34184876506180717313e-1, + -.26006498895669734842, -.97650425186005090107e-1, .19024527660129101293, + .16789164198044635671, -.10875811641651905252, -.19276785058805921298, 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .12207031250000000000e-3, + .17078941137247586143e-2, .11477733754843910060e-1, + .48887017020924625462e-1, .14634927241421789683, .32156282683019547854, + .52165811920227223937, .60001958466396926460, .41208501541480733755, + .11366945503190350975e-2, -.33968093962672089159, -.30955190935923386766, + .40657421856578262210e-1, .29873400409871531764, .16094481791768257440, + -.16876122436206497694, -.23650217045022161255, .33070260090574765012e-1, + .22985258456375907796, .68645651043827097771e-1, 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., .61035156250000000000e-4, + .91501857608428649078e-3, .66085179496951987952e-2, + .30383171695850355404e-1, .98840838845366876117e-1, .23855447246420318989, + .43322017468145613917, .58049033744876107191, .52533893203742699346, + .20681056202371946180, -.20180000924562504384, -.37503922291962681797, + -.15988102869837429062, .19823558102762374094, .28393023878803799622, + .11188133439357510403e-1, -.24730368377168229255, -.14731529061377942839, + .14878558042884266021, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., .30517578125000000000e-4, .48804277318479845551e-3, + .37696080990601968396e-2, .18603912108994738255e-1, + .65325006755649582964e-1, .17162960707938819795, .34411527956476971322, + .52289350347082497959, .57319653625674910592, .37662253421045430413, + -.14099055105384663902e-1, -.33265570610216904208, -.30921265572647566661, + .19911390594166455281e-1, .28738590811031797718, .18912130469738472647, + -.13235936203215819193, -.25076406142356675279, 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .15258789062500000000e-4, + .25928719280954633249e-3, .21327398937568540428e-2, + .11244626133630732010e-1, .42375605740664331966e-1, .12031130345907846211, + .26352562258934426830, .44590628258512682078, .56682835613700749379, + .49116715128261660395, .17845943097110339078, -.20541650677432497477, + -.36739803642257458221, -.16776034069210108273, .17920950989905112908, + .28867732805385066532, .46473465543376206337e-1, 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .76293945312500000000e-5, + .13727610943181290891e-3, .11979683091449349286e-2, + .67195313034570709806e-2, .27044920779931968175e-1, + .82472196498517457862e-1, .19570475044896150093, .36391620788543817693, + .52241392782736588032, .54727504974907879912, .34211551468813581183, + -.31580472732719957762e-1, -.32830006549176759667, -.30563797665254420769, + .64905014620683140120e-2, .27642986248995073032, 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .38146972656250000000e-5, + .72454147007837596854e-4, .66859847582761390285e-3, + .39751311980366118437e-2, .17015198650201528366e-1, + .55443621868993855715e-1, .14157060481641692131, .28641242619559616836, + .45610665490966615415, .55262786406029265394, .45818352706035500108, + .14984403004611673047, -.21163807462970713245, -.36007252928843413718, + -.17030961385712954159, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., .19073486328125000000e-5, + .38135049864067468562e-4, .37101393638555730015e-3, + .23305339886279723213e-2, .10569913448297127219e-1, + .36640175162216897547e-1, .10010476414320235508, .21860074212675559892, + .38124757096345313719, .52020999209879669177, .52172632730659212045, + .30841620620308814614, -.50322546186721500184e-1, -.32577618885114899053, + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., .95367431640625000000e-6, .20021483206955925244e-4, + .20481807322420625431e-3, .13553476938058909882e-2, + .64919676350791905019e-2, .23848725425069251903e-1, + .69384632678886421292e-1, .16249711393618776934, .30736618106830314788, + .46399909601971539157, .53765031034002467225, .42598991476520183929, + .12130445348350215652, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., .47683715820312500000e-6, + .10487707828484902486e-4, .11254146162337528943e-3, + .78248929534271987118e-3, .39468337145306794566e-2, + .15313546659475671763e-1, .47249070825218564146e-1, .11804374107101480543, + .24031796927792491122, .39629215049166341285, .51629108968402548545, + .49622372075429782915, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., .23841857910156250000e-6, + .54823314130625337326e-5, .61575377321535518154e-4, + .44877834366497538134e-3, .23774612048621955857e-2, + .97136347645161687796e-2, .31671599547606636717e-1, + .84028665767000747480e-1, .18298487576742964949, .32647878537696945218, + .46970971486488895077, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .11920928955078125000e-6, + .28604020001177375838e-5, .33559227978295551013e-4, + .25583821662860610560e-3, .14201552747787302339e-2, + .60938046986874414969e-2, .20930869247951926793e-1, + .58745021125678072911e-1, .13613725780285953720, .26083988356030237586, + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., .59604644775390625000e-7, + .14898180663526043291e-5, .18224991282807693921e-4, + .14504433444608833821e-3, .84184722720281809548e-3, + .37846965430000478789e-2, .13656355548211376864e-1, + .40409541997718853934e-1, .99226988101858325902e-1, 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., .29802322387695312500e-7, .77471708843445529468e-6, + .98649879372606876995e-5, .81814934772838523887e-4, + .49554483992403011328e-3, .23290922072351413938e-2, + .88068134250844034186e-2, .27393666952485719070e-1, 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., .14901161193847656250e-7, .40226235946098233685e-6, + .53236418690561306700e-5, .45933829691164002269e-4, + .28982005232838857913e-3, .14212974043211018374e-2, + .56192363087488842264e-2, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + .74505805969238281250e-8, .20858299254133430408e-6, + .28648457300134381744e-5, .25677535898258910850e-4, + .16849420429491355445e-3, .86062824010315834002e-3, 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., .37252902984619140625e-8, .10801736017613096861e-6, + .15376606719887104015e-5, .14296523739727437959e-4, + .97419023656050887203e-4, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + .18626451492309570312e-8, .55871592916438890146e-7, + .82331193828137454068e-6, .79302250528382787666e-5, 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., .93132257461547851562e-9, + .28867244235852488244e-7, .43982811713864556957e-6, 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., .46566128730773925781e-9, + .14899342093408253335e-7, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., .23283064365386962891e-9 +}; diff --git a/gsl-2.5/integration/err.c b/gsl-2.5/integration/err.c new file mode 100644 index 00000000..d897eb7f --- /dev/null +++ b/gsl-2.5/integration/err.c @@ -0,0 +1,58 @@ +/* integration/err.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include + +static double rescale_error (double err, const double result_abs, const double result_asc) ; + +static double +rescale_error (double err, const double result_abs, const double result_asc) +{ + err = fabs(err) ; + + if (result_asc != 0 && err != 0) + { + double scale = pow((200 * err / result_asc), 1.5) ; + + if (scale < 1) + { + err = result_asc * scale ; + } + else + { + err = result_asc ; + } + } + if (result_abs > GSL_DBL_MIN / (50 * GSL_DBL_EPSILON)) + { + double min_err = 50 * GSL_DBL_EPSILON * result_abs ; + + if (min_err > err) + { + err = min_err ; + } + } + + return err ; +} + diff --git a/gsl-2.5/integration/exponential.c b/gsl-2.5/integration/exponential.c new file mode 100644 index 00000000..26079cf3 --- /dev/null +++ b/gsl-2.5/integration/exponential.c @@ -0,0 +1,84 @@ +/* integration/exponential.c + * + * Copyright (C) 2017 Konrad Griessinger, Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* + * The code in this module is based on IQPACK, specifically the LGPL + * implementation found in HERMITE_RULE: + * https://people.sc.fsu.edu/~jburkardt/c_src/hermite_rule/hermite_rule.html + */ + +#include +#include +#include +#include +#include + +static int +exponential_check(const size_t n, const gsl_integration_fixed_params * params) +{ + (void) n; + + if (fabs(params->b - params->a) <= GSL_DBL_EPSILON) + { + GSL_ERROR("|b - a| too small", GSL_EDOM); + } + else if (params->a >= params->b) + { + GSL_ERROR("lower integration limit must be smaller than upper limit", GSL_EDOM); + } + else if (params->alpha <= -1.0) + { + GSL_ERROR("alpha must be > -1", GSL_EDOM); + } + else + { + return GSL_SUCCESS; + } +} + +static int +exponential_init(const size_t n, double * diag, double * subdiag, gsl_integration_fixed_params * params) +{ + size_t i; + double a2i = params->alpha; + + /* construct the diagonal and subdiagonal elements of Jacobi matrix */ + for (i = 1; i <= n; i++) + { + diag[i-1] = 0.0; + a2i += 2.0; + subdiag[i-1] = (i + params->alpha*(i%2))/sqrt( a2i*a2i - 1.0 ); + } + + params->zemu = 2.0/(params->alpha + 1.0); + params->shft = 0.5*(params->b + params->a); + params->slp = 0.5*(params->b - params->a); + params->al = params->alpha; + params->be = 0.0; + + return GSL_SUCCESS; +} + +static const gsl_integration_fixed_type exponential_type = +{ + exponential_check, + exponential_init +}; + +const gsl_integration_fixed_type *gsl_integration_fixed_exponential = &exponential_type; diff --git a/gsl-2.5/integration/exponential.lo b/gsl-2.5/integration/exponential.lo new file mode 100644 index 00000000..0d80ec78 --- /dev/null +++ b/gsl-2.5/integration/exponential.lo @@ -0,0 +1,12 @@ +# exponential.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/exponential.o' + +# Name of the non-PIC object +non_pic_object='exponential.o' + diff --git a/gsl-2.5/integration/fixed.c b/gsl-2.5/integration/fixed.c new file mode 100644 index 00000000..44505bb3 --- /dev/null +++ b/gsl-2.5/integration/fixed.c @@ -0,0 +1,410 @@ +/* integration/fixed.c + * + * Copyright (C) 2017 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* the code in this module performs fixed-point quadrature calculations for + * integrands and is based on IQPACK */ + +#include +#include +#include +#include +#include + +static int fixed_compute(const double a, const double b, const double alpha, const double beta, + gsl_integration_fixed_workspace * w); +static int imtqlx ( const int n, double d[], double e[], double z[] ); + +gsl_integration_fixed_workspace * +gsl_integration_fixed_alloc(const gsl_integration_fixed_type * type, const size_t n, + const double a, const double b, const double alpha, const double beta) +{ + int status; + gsl_integration_fixed_workspace *w; + + /* check inputs */ + if (n < 1) + { + GSL_ERROR_VAL ("workspace size n must be at least 1", GSL_EDOM, 0); + } + + w = calloc(1, sizeof(gsl_integration_fixed_workspace)); + if (w == NULL) + { + GSL_ERROR_VAL ("unable to allocate workspace", GSL_ENOMEM, 0); + } + + w->weights = malloc(n * sizeof(double)); + if (w->weights == NULL) + { + gsl_integration_fixed_free(w); + GSL_ERROR_VAL ("unable to allocate weights", GSL_ENOMEM, 0); + } + + w->x = malloc(n * sizeof(double)); + if (w->x == NULL) + { + gsl_integration_fixed_free(w); + GSL_ERROR_VAL ("unable to allocate x", GSL_ENOMEM, 0); + } + + w->diag = malloc(n * sizeof(double)); + if (w->diag == NULL) + { + gsl_integration_fixed_free(w); + GSL_ERROR_VAL ("unable to allocate diag", GSL_ENOMEM, 0); + } + + w->subdiag = malloc(n * sizeof(double)); + if (w->subdiag == NULL) + { + gsl_integration_fixed_free(w); + GSL_ERROR_VAL ("unable to allocate subdiag", GSL_ENOMEM, 0); + } + + w->n = n; + w->type = type; + + /* compute quadrature weights and nodes */ + status = fixed_compute(a, b, alpha, beta, w); + if (status) + { + gsl_integration_fixed_free(w); + GSL_ERROR_VAL ("error in integration parameters", GSL_EDOM, 0); + } + + return w; +} + +void +gsl_integration_fixed_free(gsl_integration_fixed_workspace * w) +{ + if (w->weights) + free(w->weights); + + if (w->x) + free(w->x); + + if (w->diag) + free(w->diag); + + if (w->subdiag) + free(w->subdiag); + + free(w); +} + +size_t +gsl_integration_fixed_n(const gsl_integration_fixed_workspace * w) +{ + return w->n; +} + +double * +gsl_integration_fixed_nodes(const gsl_integration_fixed_workspace * w) +{ + return w->x; +} + +double * +gsl_integration_fixed_weights(const gsl_integration_fixed_workspace * w) +{ + return w->weights; +} + +int +gsl_integration_fixed(const gsl_function * func, double * result, + const gsl_integration_fixed_workspace * w) +{ + const size_t n = w->n; + size_t i; + double sum = 0.0; + + for (i = 0; i < n; ++i) + { + double fi = GSL_FN_EVAL(func, w->x[i]); + sum += w->weights[i] * fi; + } + + *result = sum; + + return GSL_SUCCESS; +} + +/* +fixed_compute() + Compute quadrature weights and nodes +*/ + +static int +fixed_compute(const double a, const double b, const double alpha, const double beta, + gsl_integration_fixed_workspace * w) +{ + int s; + const size_t n = w->n; + gsl_integration_fixed_params params; + size_t i; + + params.a = a; + params.b = b; + params.alpha = alpha; + params.beta = beta; + + /* check input parameters */ + s = (w->type->check)(n, ¶ms); + if (s) + return s; + + /* initialize Jacobi matrix */ + s = (w->type->init)(n, w->diag, w->subdiag, ¶ms); + if (s) + return s; + + if (params.zemu <= 0.0) + { + GSL_ERROR("zeroth moment must be positive", GSL_EINVAL); + } + + for ( i = 0; i < n; i++ ) + { + w->x[i] = w->diag[i]; + } + + w->weights[0] = sqrt (params.zemu); + + for ( i = 1; i < n; i++ ) + { + w->weights[i] = 0.0; + } + + /* diagonalize the Jacobi matrix */ + s = imtqlx (n, w->x, w->subdiag, w->weights); + if (s) + return s; + + for (i = 0; i < n; i++) + { + w->weights[i] = w->weights[i] * w->weights[i]; + } + + /* + * The current weights and nodes are valid for a = 0, b = 1. + * Now scale them for arbitrary a,b + */ + { + double p = pow ( params.slp, params.al + params.be + 1.0 ); + size_t k; + + for ( k = 0; k < n; k++ ) + { + w->x[k] = params.shft + params.slp * w->x[k]; + w->weights[k] = w->weights[k] * p; + } + } + + return GSL_SUCCESS; +} + +/******************************************************************************/ +/* + Purpose: + + IMTQLX diagonalizes a symmetric tridiagonal matrix. + + Discussion: + + This routine is a slightly modified version of the EISPACK routine to + perform the implicit QL algorithm on a symmetric tridiagonal matrix. + + The authors thank the authors of EISPACK for permission to use this + routine. + + It has been modified to produce the product Q' * Z, where Z is an input + vector and Q is the orthogonal matrix diagonalizing the input matrix. + The changes consist (essentially) of applying the orthogonal transformations + directly to Z as they are generated. + + Licensing: + + This code is distributed under the GNU LGPL license. + + Modified: + + 11 January 2010 + + Author: + + Original FORTRAN77 version by Sylvan Elhay, Jaroslav Kautsky. + C version by John Burkardt. + + Reference: + + Sylvan Elhay, Jaroslav Kautsky, + Algorithm 655: IQPACK, FORTRAN Subroutines for the Weights of + Interpolatory Quadrature, + ACM Transactions on Mathematical Software, + Volume 13, Number 4, December 1987, pages 399-415. + + Roger Martin, James Wilkinson, + The Implicit QL Algorithm, + Numerische Mathematik, + Volume 12, Number 5, December 1968, pages 377-383. + + Parameters: + + Input, int N, the order of the matrix. + + Input/output, double D(N), the diagonal entries of the matrix. + On output, the information in D has been overwritten. + + Input/output, double E(N), the subdiagonal entries of the + matrix, in entries E(1) through E(N-1). On output, the information in + E has been overwritten. + + Input/output, double Z(N). On input, a vector. On output, + the value of Q' * Z, where Q is the matrix that diagonalizes the + input symmetric tridiagonal matrix. +*/ + +static int +imtqlx ( const int n, double d[], double e[], double z[] ) +{ + double b; + double c; + double f; + double g; + int i; + int ii; + int itn = 30; + int j; + int k; + int l; + int m; + int mml; + double p; + double r; + double s; + + if ( n == 1 ) + { + return GSL_SUCCESS; + } + + e[n-1] = 0.0; + + for ( l = 1; l <= n; l++ ) + { + j = 0; + for ( ; ; ) + { + for ( m = l; m <= n; m++ ) + { + if ( m == n ) + { + break; + } + + if ( fabs ( e[m-1] ) <= GSL_DBL_EPSILON * ( fabs ( d[m-1] ) + fabs ( d[m] ) ) ) + { + break; + } + } + p = d[l-1]; + if ( m == l ) + { + break; + } + if ( itn <= j ) + { + return GSL_EMAXITER; + } + j = j + 1; + g = ( d[l] - p ) / ( 2.0 * e[l-1] ); + r = sqrt ( g * g + 1.0 ); + g = d[m-1] - p + e[l-1] / ( g + fabs ( r ) * GSL_SIGN ( g ) ); + s = 1.0; + c = 1.0; + p = 0.0; + mml = m - l; + + for ( ii = 1; ii <= mml; ii++ ) + { + i = m - ii; + f = s * e[i-1]; + b = c * e[i-1]; + + if ( fabs ( g ) <= fabs ( f ) ) + { + c = g / f; + r = sqrt ( c * c + 1.0 ); + e[i] = f * r; + s = 1.0 / r; + c = c * s; + } + else + { + s = f / g; + r = sqrt ( s * s + 1.0 ); + e[i] = g * r; + c = 1.0 / r; + s = s * c; + } + g = d[i] - p; + r = ( d[i-1] - g ) * s + 2.0 * c * b; + p = s * r; + d[i] = g + p; + g = c * r - b; + f = z[i]; + z[i] = s * z[i-1] + c * f; + z[i-1] = c * z[i-1] - s * f; + } + d[l-1] = d[l-1] - p; + e[l-1] = g; + e[m-1] = 0.0; + } + } +/* + Sorting. +*/ + for ( ii = 2; ii <= m; ii++ ) + { + i = ii - 1; + k = i; + p = d[i-1]; + + for ( j = ii; j <= n; j++ ) + { + if ( d[j-1] < p ) + { + k = j; + p = d[j-1]; + } + } + + if ( k != i ) + { + d[k-1] = d[i-1]; + d[i-1] = p; + p = z[i-1]; + z[i-1] = z[k-1]; + z[k-1] = p; + } + } + + return GSL_SUCCESS; +} diff --git a/gsl-2.5/integration/fixed.lo b/gsl-2.5/integration/fixed.lo new file mode 100644 index 00000000..115eb7c0 --- /dev/null +++ b/gsl-2.5/integration/fixed.lo @@ -0,0 +1,12 @@ +# fixed.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/fixed.o' + +# Name of the non-PIC object +non_pic_object='fixed.o' + diff --git a/gsl-2.5/integration/gegenbauer.c b/gsl-2.5/integration/gegenbauer.c new file mode 100644 index 00000000..6b6d8f33 --- /dev/null +++ b/gsl-2.5/integration/gegenbauer.c @@ -0,0 +1,84 @@ +/* integration/gegenbauer.c + * + * Copyright (C) 2017 Konrad Griessinger, Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* + * The code in this module is based on IQPACK, specifically the LGPL + * implementation found in HERMITE_RULE: + * https://people.sc.fsu.edu/~jburkardt/c_src/hermite_rule/hermite_rule.html + */ + +#include +#include +#include +#include +#include + +static int +gegenbauer_check(const size_t n, const gsl_integration_fixed_params * params) +{ + (void) n; + + if (fabs(params->b - params->a) <= GSL_DBL_EPSILON) + { + GSL_ERROR("|b - a| too small", GSL_EDOM); + } + else if (params->a >= params->b) + { + GSL_ERROR("lower integration limit must be smaller than upper limit", GSL_EDOM); + } + else if (params->alpha <= -1.0) + { + GSL_ERROR("alpha must be > -1", GSL_EDOM); + } + else + { + return GSL_SUCCESS; + } +} + +static int +gegenbauer_init(const size_t n, double * diag, double * subdiag, gsl_integration_fixed_params * params) +{ + size_t i; + + /* construct the diagonal and subdiagonal elements of Jacobi matrix */ + diag[0] = 0.0; + subdiag[0] = sqrt ( 1.0 / (2.0*params->alpha + 3.0) ); + for (i = 1; i < n; i++) + { + diag[i] = 0.0; + subdiag[i] = sqrt ( (i + 1.0) * (2.0*params->alpha + i + 1.0) / ( 4.0*(params->alpha + i + 1.0)*(params->alpha + i + 1.0) - 1.0 ) ); + } + + params->zemu = M_SQRTPI * gsl_sf_gamma(params->alpha + 1.0) / gsl_sf_gamma(params->alpha + 1.5); + params->shft = 0.5*(params->b + params->a); + params->slp = 0.5*(params->b - params->a); + params->al = params->alpha; + params->be = params->alpha; + + return GSL_SUCCESS; +} + +static const gsl_integration_fixed_type gegenbauer_type = +{ + gegenbauer_check, + gegenbauer_init +}; + +const gsl_integration_fixed_type *gsl_integration_fixed_gegenbauer = &gegenbauer_type; diff --git a/gsl-2.5/integration/gegenbauer.lo b/gsl-2.5/integration/gegenbauer.lo new file mode 100644 index 00000000..a7ed3517 --- /dev/null +++ b/gsl-2.5/integration/gegenbauer.lo @@ -0,0 +1,12 @@ +# gegenbauer.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/gegenbauer.o' + +# Name of the non-PIC object +non_pic_object='gegenbauer.o' + diff --git a/gsl-2.5/integration/glfixed.c b/gsl-2.5/integration/glfixed.c new file mode 100644 index 00000000..ee500f43 --- /dev/null +++ b/gsl-2.5/integration/glfixed.c @@ -0,0 +1,484 @@ +/* + * Numerical Integration by Gauss-Legendre Quadrature Formulas of high orders. + * High-precision abscissas and weights are used. + * + * Original project homepage: http://www.holoborodko.com/pavel/?page_id=679 + * Original contact e-mail: pavel@holoborodko.com + * + * Copyright (c)2007-2008 Pavel Holoborodko + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser 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. + * + * Contributors: + * Konstantin Holoborodko - Optimization of Legendre polynomial computing. + * Rhys Ulerich - Inclusion within GNU Scientific Library. + * + */ + +#include +#include +#include +#include +#include +#include + +static void gauss_legendre_tbl(int n, double* x, double* w, double eps); + +/* n = 2 */ +static double x2[1] = {0.5773502691896257645091488}; +static double w2[1] = {1.0000000000000000000000000}; + +/* n = 4 */ +static double x4[2] = {0.3399810435848562648026658, 0.8611363115940525752239465}; +static double w4[2] = {0.6521451548625461426269361, 0.3478548451374538573730639}; + +/* n = 6 */ +static double x6[3] = {0.2386191860831969086305017, 0.6612093864662645136613996, 0.9324695142031520278123016}; +static double w6[3] = {0.4679139345726910473898703, 0.3607615730481386075698335, 0.1713244923791703450402961}; + +/* n = 8 */ +static double x8[4] = {0.1834346424956498049394761, 0.5255324099163289858177390, 0.7966664774136267395915539, 0.9602898564975362316835609}; +static double w8[4] = {0.3626837833783619829651504, 0.3137066458778872873379622, 0.2223810344533744705443560, 0.1012285362903762591525314}; + +/* n = 10 */ +static double x10[5] = {0.1488743389816312108848260, 0.4333953941292471907992659, 0.6794095682990244062343274, 0.8650633666889845107320967, 0.9739065285171717200779640}; +static double w10[5] = {0.2955242247147528701738930, 0.2692667193099963550912269, 0.2190863625159820439955349, 0.1494513491505805931457763, 0.0666713443086881375935688}; + +/* n = 12 */ +static double x12[6] = {0.1252334085114689154724414, 0.3678314989981801937526915, 0.5873179542866174472967024, 0.7699026741943046870368938, 0.9041172563704748566784659, 0.9815606342467192506905491}; +static double w12[6] = {0.2491470458134027850005624, 0.2334925365383548087608499, 0.2031674267230659217490645, 0.1600783285433462263346525, 0.1069393259953184309602547, 0.0471753363865118271946160}; + +/* n = 14 */ +static double x14[7] = {0.1080549487073436620662447, 0.3191123689278897604356718, 0.5152486363581540919652907, 0.6872929048116854701480198, 0.8272013150697649931897947, 0.9284348836635735173363911, 0.9862838086968123388415973}; +static double w14[7] = {0.2152638534631577901958764, 0.2051984637212956039659241, 0.1855383974779378137417166, 0.1572031671581935345696019, 0.1215185706879031846894148, 0.0801580871597602098056333, 0.0351194603317518630318329}; + +/* n = 16 */ +static double x16[8] = {0.0950125098376374401853193, 0.2816035507792589132304605, 0.4580167776572273863424194, 0.6178762444026437484466718, 0.7554044083550030338951012, 0.8656312023878317438804679, 0.9445750230732325760779884, 0.9894009349916499325961542}; +static double w16[8] = {0.1894506104550684962853967, 0.1826034150449235888667637, 0.1691565193950025381893121, 0.1495959888165767320815017, 0.1246289712555338720524763, 0.0951585116824927848099251, 0.0622535239386478928628438, 0.0271524594117540948517806}; + +/* n = 18 */ +static double x18[9] = {0.0847750130417353012422619, 0.2518862256915055095889729, 0.4117511614628426460359318, 0.5597708310739475346078715, 0.6916870430603532078748911, 0.8037049589725231156824175, 0.8926024664975557392060606, 0.9558239495713977551811959, 0.9915651684209309467300160}; +static double w18[9] = {0.1691423829631435918406565, 0.1642764837458327229860538, 0.1546846751262652449254180, 0.1406429146706506512047313, 0.1225552067114784601845191, 0.1009420441062871655628140, 0.0764257302548890565291297, 0.0497145488949697964533349, 0.0216160135264833103133427}; + +/* n = 20 */ +static double x20[10] = {0.0765265211334973337546404, 0.2277858511416450780804962, 0.3737060887154195606725482, 0.5108670019508270980043641, 0.6360536807265150254528367, 0.7463319064601507926143051, 0.8391169718222188233945291, 0.9122344282513259058677524, 0.9639719272779137912676661, 0.9931285991850949247861224}; +static double w20[10] = {0.1527533871307258506980843, 0.1491729864726037467878287, 0.1420961093183820513292983, 0.1316886384491766268984945, 0.1181945319615184173123774, 0.1019301198172404350367501, 0.0832767415767047487247581, 0.0626720483341090635695065, 0.0406014298003869413310400, 0.0176140071391521183118620}; + +/* n = 32 */ +static double x32[16] = {0.0483076656877383162348126, 0.1444719615827964934851864, 0.2392873622521370745446032, 0.3318686022821276497799168, 0.4213512761306353453641194, 0.5068999089322293900237475, 0.5877157572407623290407455, 0.6630442669302152009751152, 0.7321821187402896803874267, 0.7944837959679424069630973, 0.8493676137325699701336930, 0.8963211557660521239653072, 0.9349060759377396891709191, 0.9647622555875064307738119, 0.9856115115452683354001750, 0.9972638618494815635449811}; +static double w32[16] = {0.0965400885147278005667648, 0.0956387200792748594190820, 0.0938443990808045656391802, 0.0911738786957638847128686, 0.0876520930044038111427715, 0.0833119242269467552221991, 0.0781938957870703064717409, 0.0723457941088485062253994, 0.0658222227763618468376501, 0.0586840934785355471452836, 0.0509980592623761761961632, 0.0428358980222266806568786, 0.0342738629130214331026877, 0.0253920653092620594557526, 0.0162743947309056706051706, 0.0070186100094700966004071}; + +/* n = 64 */ +static double x64[32] = {0.0243502926634244325089558, 0.0729931217877990394495429, 0.1214628192961205544703765, 0.1696444204239928180373136, 0.2174236437400070841496487, 0.2646871622087674163739642, 0.3113228719902109561575127, 0.3572201583376681159504426, 0.4022701579639916036957668, 0.4463660172534640879849477, 0.4894031457070529574785263, 0.5312794640198945456580139, 0.5718956462026340342838781, 0.6111553551723932502488530, 0.6489654712546573398577612, 0.6852363130542332425635584, 0.7198818501716108268489402, 0.7528199072605318966118638, 0.7839723589433414076102205, 0.8132653151227975597419233, 0.8406292962525803627516915, 0.8659993981540928197607834, 0.8893154459951141058534040, 0.9105221370785028057563807, 0.9295691721319395758214902, 0.9464113748584028160624815, 0.9610087996520537189186141, 0.9733268277899109637418535, 0.9833362538846259569312993, 0.9910133714767443207393824, 0.9963401167719552793469245, 0.9993050417357721394569056}; +static double w64[32] = {0.0486909570091397203833654, 0.0485754674415034269347991, 0.0483447622348029571697695, 0.0479993885964583077281262, 0.0475401657148303086622822, 0.0469681828162100173253263, 0.0462847965813144172959532, 0.0454916279274181444797710, 0.0445905581637565630601347, 0.0435837245293234533768279, 0.0424735151236535890073398, 0.0412625632426235286101563, 0.0399537411327203413866569, 0.0385501531786156291289625, 0.0370551285402400460404151, 0.0354722132568823838106931, 0.0338051618371416093915655, 0.0320579283548515535854675, 0.0302346570724024788679741, 0.0283396726142594832275113, 0.0263774697150546586716918, 0.0243527025687108733381776, 0.0222701738083832541592983, 0.0201348231535302093723403, 0.0179517157756973430850453, 0.0157260304760247193219660, 0.0134630478967186425980608, 0.0111681394601311288185905, 0.0088467598263639477230309, 0.0065044579689783628561174, 0.0041470332605624676352875, 0.0017832807216964329472961}; + +/* n = 96 */ +static double x96[48] = {0.0162767448496029695791346, 0.0488129851360497311119582, 0.0812974954644255589944713, 0.1136958501106659209112081, 0.1459737146548969419891073, 0.1780968823676186027594026, 0.2100313104605672036028472, 0.2417431561638400123279319, 0.2731988125910491414872722, 0.3043649443544963530239298, 0.3352085228926254226163256, 0.3656968614723136350308956, 0.3957976498289086032850002, 0.4254789884073005453648192, 0.4547094221677430086356761, 0.4834579739205963597684056, 0.5116941771546676735855097, 0.5393881083243574362268026, 0.5665104185613971684042502, 0.5930323647775720806835558, 0.6189258401254685703863693, 0.6441634037849671067984124, 0.6687183100439161539525572, 0.6925645366421715613442458, 0.7156768123489676262251441, 0.7380306437444001328511657, 0.7596023411766474987029704, 0.7803690438674332176036045, 0.8003087441391408172287961, 0.8194003107379316755389996, 0.8376235112281871214943028, 0.8549590334346014554627870, 0.8713885059092965028737748, 0.8868945174024204160568774, 0.9014606353158523413192327, 0.9150714231208980742058845, 0.9277124567223086909646905, 0.9393703397527552169318574, 0.9500327177844376357560989, 0.9596882914487425393000680, 0.9683268284632642121736594, 0.9759391745851364664526010, 0.9825172635630146774470458, 0.9880541263296237994807628, 0.9925439003237626245718923, 0.9959818429872092906503991, 0.9983643758631816777241494, 0.9996895038832307668276901}; +static double w96[48] = {0.0325506144923631662419614, 0.0325161187138688359872055, 0.0324471637140642693640128, 0.0323438225685759284287748, 0.0322062047940302506686671, 0.0320344562319926632181390, 0.0318287588944110065347537, 0.0315893307707271685580207, 0.0313164255968613558127843, 0.0310103325863138374232498, 0.0306713761236691490142288, 0.0302999154208275937940888, 0.0298963441363283859843881, 0.0294610899581679059704363, 0.0289946141505552365426788, 0.0284974110650853856455995, 0.0279700076168483344398186, 0.0274129627260292428234211, 0.0268268667255917621980567, 0.0262123407356724139134580, 0.0255700360053493614987972, 0.0249006332224836102883822, 0.0242048417923646912822673, 0.0234833990859262198422359, 0.0227370696583293740013478, 0.0219666444387443491947564, 0.0211729398921912989876739, 0.0203567971543333245952452, 0.0195190811401450224100852, 0.0186606796274114673851568, 0.0177825023160452608376142, 0.0168854798642451724504775, 0.0159705629025622913806165, 0.0150387210269949380058763, 0.0140909417723148609158616, 0.0131282295669615726370637, 0.0121516046710883196351814, 0.0111621020998384985912133, 0.0101607705350084157575876, 0.0091486712307833866325846, 0.0081268769256987592173824, 0.0070964707911538652691442, 0.0060585455042359616833167, 0.0050142027429275176924702, 0.0039645543384446866737334, 0.0029107318179349464084106, 0.0018539607889469217323359, 0.0007967920655520124294381}; + +/* n = 100 */ +static double x100[50] = {0.0156289844215430828722167, 0.0468716824215916316149239, 0.0780685828134366366948174, 0.1091892035800611150034260, 0.1402031372361139732075146, 0.1710800805386032748875324, 0.2017898640957359972360489, 0.2323024818449739696495100, 0.2625881203715034791689293, 0.2926171880384719647375559, 0.3223603439005291517224766, 0.3517885263724217209723438, 0.3808729816246299567633625, 0.4095852916783015425288684, 0.4378974021720315131089780, 0.4657816497733580422492166, 0.4932107892081909335693088, 0.5201580198817630566468157, 0.5465970120650941674679943, 0.5725019326213811913168704, 0.5978474702471787212648065, 0.6226088602037077716041908, 0.6467619085141292798326303, 0.6702830156031410158025870, 0.6931491993558019659486479, 0.7153381175730564464599671, 0.7368280898020207055124277, 0.7575981185197071760356680, 0.7776279096494954756275514, 0.7968978923903144763895729, 0.8153892383391762543939888, 0.8330838798884008235429158, 0.8499645278795912842933626, 0.8660146884971646234107400, 0.8812186793850184155733168, 0.8955616449707269866985210, 0.9090295709825296904671263, 0.9216092981453339526669513, 0.9332885350430795459243337, 0.9440558701362559779627747, 0.9539007829254917428493369, 0.9628136542558155272936593, 0.9707857757637063319308979, 0.9778093584869182885537811, 0.9838775407060570154961002, 0.9889843952429917480044187, 0.9931249370374434596520099, 0.9962951347331251491861317, 0.9984919506395958184001634, 0.9997137267734412336782285}; +static double w100[50] = {0.0312554234538633569476425, 0.0312248842548493577323765, 0.0311638356962099067838183, 0.0310723374275665165878102, 0.0309504788504909882340635, 0.0307983790311525904277139, 0.0306161865839804484964594, 0.0304040795264548200165079, 0.0301622651051691449190687, 0.0298909795933328309168368, 0.0295904880599126425117545, 0.0292610841106382766201190, 0.0289030896011252031348762, 0.0285168543223950979909368, 0.0281027556591011733176483, 0.0276611982207923882942042, 0.0271926134465768801364916, 0.0266974591835709626603847, 0.0261762192395456763423087, 0.0256294029102081160756420, 0.0250575444815795897037642, 0.0244612027079570527199750, 0.0238409602659682059625604, 0.0231974231852541216224889, 0.0225312202563362727017970, 0.0218430024162473863139537, 0.0211334421125276415426723, 0.0204032326462094327668389, 0.0196530874944353058653815, 0.0188837396133749045529412, 0.0180959407221281166643908, 0.0172904605683235824393442, 0.0164680861761452126431050, 0.0156296210775460027239369, 0.0147758845274413017688800, 0.0139077107037187726879541, 0.0130259478929715422855586, 0.0121314576629794974077448, 0.0112251140231859771172216, 0.0103078025748689695857821, 0.0093804196536944579514182, 0.0084438714696689714026208, 0.0074990732554647115788287, 0.0065469484508453227641521, 0.0055884280038655151572119, 0.0046244500634221193510958, 0.0036559612013263751823425, 0.0026839253715534824194396, 0.0017093926535181052395294, 0.0007346344905056717304063}; + +/* n = 128 */ +static double x128[64] = {0.0122236989606157641980521, 0.0366637909687334933302153, 0.0610819696041395681037870, 0.0854636405045154986364980, 0.1097942311276437466729747, 0.1340591994611877851175753, 0.1582440427142249339974755, 0.1823343059853371824103826, 0.2063155909020792171540580, 0.2301735642266599864109866, 0.2538939664226943208556180, 0.2774626201779044028062316, 0.3008654388776772026671541, 0.3240884350244133751832523, 0.3471177285976355084261628, 0.3699395553498590266165917, 0.3925402750332674427356482, 0.4149063795522750154922739, 0.4370245010371041629370429, 0.4588814198335521954490891, 0.4804640724041720258582757, 0.5017595591361444642896063, 0.5227551520511754784539479, 0.5434383024128103634441936, 0.5637966482266180839144308, 0.5838180216287630895500389, 0.6034904561585486242035732, 0.6228021939105849107615396, 0.6417416925623075571535249, 0.6602976322726460521059468, 0.6784589224477192593677557, 0.6962147083695143323850866, 0.7135543776835874133438599, 0.7304675667419088064717369, 0.7469441667970619811698824, 0.7629743300440947227797691, 0.7785484755064119668504941, 0.7936572947621932902433329, 0.8082917575079136601196422, 0.8224431169556438424645942, 0.8361029150609068471168753, 0.8492629875779689691636001, 0.8619154689395484605906323, 0.8740527969580317986954180, 0.8856677173453972174082924, 0.8967532880491581843864474, 0.9073028834017568139214859, 0.9173101980809605370364836, 0.9267692508789478433346245, 0.9356743882779163757831268, 0.9440202878302201821211114, 0.9518019613412643862177963, 0.9590147578536999280989185, 0.9656543664319652686458290, 0.9717168187471365809043384, 0.9771984914639073871653744, 0.9820961084357185360247656, 0.9864067427245862088712355, 0.9901278184917343833379303, 0.9932571129002129353034372, 0.9957927585349811868641612, 0.9977332486255140198821574, 0.9990774599773758950119878, 0.9998248879471319144736081}; +static double w128[64] = {0.0244461801962625182113259, 0.0244315690978500450548486, 0.0244023556338495820932980, 0.0243585572646906258532685, 0.0243002001679718653234426, 0.0242273192228152481200933, 0.0241399579890192849977167, 0.0240381686810240526375873, 0.0239220121367034556724504, 0.0237915577810034006387807, 0.0236468835844476151436514, 0.0234880760165359131530253, 0.0233152299940627601224157, 0.0231284488243870278792979, 0.0229278441436868469204110, 0.0227135358502364613097126, 0.0224856520327449668718246, 0.0222443288937997651046291, 0.0219897106684604914341221, 0.0217219495380520753752610, 0.0214412055392084601371119, 0.0211476464682213485370195, 0.0208414477807511491135839, 0.0205227924869600694322850, 0.0201918710421300411806732, 0.0198488812328308622199444, 0.0194940280587066028230219, 0.0191275236099509454865185, 0.0187495869405447086509195, 0.0183604439373313432212893, 0.0179603271850086859401969, 0.0175494758271177046487069, 0.0171281354231113768306810, 0.0166965578015892045890915, 0.0162550009097851870516575, 0.0158037286593993468589656, 0.0153430107688651440859909, 0.0148731226021473142523855, 0.0143943450041668461768239, 0.0139069641329519852442880, 0.0134112712886163323144890, 0.0129075627392673472204428, 0.0123961395439509229688217, 0.0118773073727402795758911, 0.0113513763240804166932817, 0.0108186607395030762476596, 0.0102794790158321571332153, 0.0097341534150068058635483, 0.0091830098716608743344787, 0.0086263777986167497049788, 0.0080645898904860579729286, 0.0074979819256347286876720, 0.0069268925668988135634267, 0.0063516631617071887872143, 0.0057726375428656985893346, 0.0051901618326763302050708, 0.0046045842567029551182905, 0.0040162549837386423131943, 0.0034255260409102157743378, 0.0028327514714579910952857, 0.0022382884309626187436221, 0.0016425030186690295387909, 0.0010458126793403487793129, 0.0004493809602920903763943}; + +/* n = 256 */ +static double x256[128] = {0.0061239123751895295011702, 0.0183708184788136651179263, 0.0306149687799790293662786, 0.0428545265363790983812423, 0.0550876556946339841045614, 0.0673125211657164002422903, 0.0795272891002329659032271, 0.0917301271635195520311456, 0.1039192048105094036391969, 0.1160926935603328049407349, 0.1282487672706070947420496, 0.1403856024113758859130249, 0.1525013783386563953746068, 0.1645942775675538498292845, 0.1766624860449019974037218, 0.1887041934213888264615036, 0.2007175933231266700680007, 0.2127008836226259579370402, 0.2246522667091319671478783, 0.2365699497582840184775084, 0.2484521450010566668332427, 0.2602970699919425419785609, 0.2721029478763366095052447, 0.2838680076570817417997658, 0.2955904844601356145637868, 0.3072686197993190762586103, 0.3189006618401062756316834, 0.3304848656624169762291870, 0.3420194935223716364807297, 0.3535028151129699895377902, 0.3649331078236540185334649, 0.3763086569987163902830557, 0.3876277561945155836379846, 0.3988887074354591277134632, 0.4100898214687165500064336, 0.4212294180176238249768124, 0.4323058260337413099534411, 0.4433173839475273572169258, 0.4542624399175899987744552, 0.4651393520784793136455705, 0.4759464887869833063907375, 0.4866822288668903501036214, 0.4973449618521814771195124, 0.5079330882286160362319249, 0.5184450196736744762216617, 0.5288791792948222619514764, 0.5392340018660591811279362, 0.5495079340627185570424269, 0.5596994346944811451369074, 0.5698069749365687590576675, 0.5798290385590829449218317, 0.5897641221544543007857861, 0.5996107353629683217303882, 0.6093674010963339395223108, 0.6190326557592612194309676, 0.6286050494690149754322099, 0.6380831462729113686686886, 0.6474655243637248626170162, 0.6567507762929732218875002, 0.6659375091820485599064084, 0.6750243449311627638559187, 0.6840099204260759531248771, 0.6928928877425769601053416, 0.7016719143486851594060835, 0.7103456833045433133945663, 0.7189128934599714483726399, 0.7273722596496521265868944, 0.7357225128859178346203729, 0.7439624005491115684556831, 0.7520906865754920595875297, 0.7601061516426554549419068, 0.7680075933524456359758906, 0.7757938264113257391320526, 0.7834636828081838207506702, 0.7910160119895459945467075, 0.7984496810321707587825429, 0.8057635748129986232573891, 0.8129565961764315431364104, 0.8200276660989170674034781, 0.8269757238508125142890929, 0.8337997271555048943484439, 0.8404986523457627138950680, 0.8470714945172962071870724, 0.8535172676795029650730355, 0.8598350049033763506961731, 0.8660237584665545192975154, 0.8720825999954882891300459, 0.8780106206047065439864349, 0.8838069310331582848598262, 0.8894706617776108888286766, 0.8950009632230845774412228, 0.9003970057703035447716200, 0.9056579799601446470826819, 0.9107830965950650118909072, 0.9157715868574903845266696, 0.9206227024251464955050471, 0.9253357155833162028727303, 0.9299099193340056411802456, 0.9343446275020030942924765, 0.9386391748378148049819261, 0.9427929171174624431830761, 0.9468052312391274813720517, 0.9506755153166282763638521, 0.9544031887697162417644479, 0.9579876924111781293657904, 0.9614284885307321440064075, 0.9647250609757064309326123, 0.9678769152284894549090038, 0.9708835784807430293209233, 0.9737445997043704052660786, 0.9764595497192341556210107, 0.9790280212576220388242380, 0.9814496290254644057693031, 0.9837240097603154961666861, 0.9858508222861259564792451, 0.9878297475648606089164877, 0.9896604887450652183192437, 0.9913427712075830869221885, 0.9928763426088221171435338, 0.9942609729224096649628775, 0.9954964544810963565926471, 0.9965826020233815404305044, 0.9975192527567208275634088, 0.9983062664730064440555005, 0.9989435258434088565550263, 0.9994309374662614082408542, 0.9997684374092631861048786, 0.9999560500189922307348012}; +static double w256[128] = {0.0122476716402897559040703, 0.0122458343697479201424639, 0.0122421601042728007697281, 0.0122366493950401581092426, 0.0122293030687102789041463, 0.0122201222273039691917087, 0.0122091082480372404075141, 0.0121962627831147135181810, 0.0121815877594817721740476, 0.0121650853785355020613073, 0.0121467581157944598155598, 0.0121266087205273210347185, 0.0121046402153404630977578, 0.0120808558957245446559752, 0.0120552593295601498143471, 0.0120278543565825711612675, 0.0119986450878058119345367, 0.0119676359049058937290073, 0.0119348314595635622558732, 0.0119002366727664897542872, 0.0118638567340710787319046, 0.0118256971008239777711607, 0.0117857634973434261816901, 0.0117440619140605503053767, 0.0117005986066207402881898, 0.0116553800949452421212989, 0.0116084131622531057220847, 0.0115597048540436357726687, 0.0115092624770394979585864, 0.0114570935980906391523344, 0.0114032060430391859648471, 0.0113476078955454919416257, 0.0112903074958755095083676, 0.0112313134396496685726568, 0.0111706345765534494627109, 0.0111082800090098436304608, 0.0110442590908139012635176, 0.0109785814257295706379882, 0.0109112568660490397007968, 0.0108422955111147959952935, 0.0107717077058046266366536, 0.0106995040389797856030482, 0.0106256953418965611339617, 0.0105502926865814815175336, 0.0104733073841704030035696, 0.0103947509832117289971017, 0.0103146352679340150682607, 0.0102329722564782196569549, 0.0101497741990948656546341, 0.0100650535763063833094610, 0.0099788230970349101247339, 0.0098910956966958286026307, 0.0098018845352573278254988, 0.0097112029952662799642497, 0.0096190646798407278571622, 0.0095254834106292848118297, 0.0094304732257377527473528, 0.0093340483776232697124660, 0.0092362233309563026873787, 0.0091370127604508064020005, 0.0090364315486628736802278, 0.0089344947837582075484084, 0.0088312177572487500253183, 0.0087266159616988071403366, 0.0086207050884010143053688, 0.0085135010250224906938384, 0.0084050198532215357561803, 0.0082952778462352254251714, 0.0081842914664382699356198, 0.0080720773628734995009470, 0.0079586523687543483536132, 0.0078440334989397118668103, 0.0077282379473815556311102, 0.0076112830845456594616187, 0.0074931864548058833585998, 0.0073739657738123464375724, 0.0072536389258339137838291, 0.0071322239610753900716724, 0.0070097390929698226212344, 0.0068862026954463203467133, 0.0067616333001737987809279, 0.0066360495937810650445900, 0.0065094704150536602678099, 0.0063819147521078805703752, 0.0062534017395424012720636, 0.0061239506555679325423891, 0.0059935809191153382211277, 0.0058623120869226530606616, 0.0057301638506014371773844, 0.0055971560336829100775514, 0.0054633085886443102775705, 0.0053286415939159303170811, 0.0051931752508692809303288, 0.0050569298807868423875578, 0.0049199259218138656695588, 0.0047821839258926913729317, 0.0046437245556800603139791, 0.0045045685814478970686418, 0.0043647368779680566815684, 0.0042242504213815362723565, 0.0040831302860526684085998, 0.0039413976414088336277290, 0.0037990737487662579981170, 0.0036561799581425021693892, 0.0035127377050563073309711, 0.0033687685073155510120191, 0.0032242939617941981570107, 0.0030793357411993375832054, 0.0029339155908297166460123, 0.0027880553253277068805748, 0.0026417768254274905641208, 0.0024951020347037068508395, 0.0023480529563273120170065, 0.0022006516498399104996849, 0.0020529202279661431745488, 0.0019048808534997184044191, 0.0017565557363307299936069, 0.0016079671307493272424499, 0.0014591373333107332010884, 0.0013100886819025044578317, 0.0011608435575677247239706, 0.0010114243932084404526058, 0.0008618537014200890378141, 0.0007121541634733206669090, 0.0005623489540314098028152, 0.0004124632544261763284322, 0.0002625349442964459062875, 0.0001127890178222721755125}; + +/* n = 512 */ +static double x512[256] = {0.0030649621851593961529232, 0.0091947713864329108047442, 0.0153242350848981855249677, 0.0214531229597748745137841, 0.0275812047119197840615246, 0.0337082500724805951232271, 0.0398340288115484476830396, 0.0459583107468090617788760, 0.0520808657521920701127271, 0.0582014637665182372392330, 0.0643198748021442404045319, 0.0704358689536046871990309, 0.0765492164062510452915674, 0.0826596874448871596284651, 0.0887670524624010326092165, 0.0948710819683925428909483, 0.1009715465977967786264323, 0.1070682171195026611052004, 0.1131608644449665349442888, 0.1192492596368204011642726, 0.1253331739174744696875513, 0.1314123786777137080093018, 0.1374866454852880630171099, 0.1435557460934960331730353, 0.1496194524497612685217272, 0.1556775367042018762501969, 0.1617297712181921097989489, 0.1677759285729161198103670, 0.1738157815779134454985394, 0.1798491032796159253350647, 0.1858756669698757062678115, 0.1918952461944840310240859, 0.1979076147616804833961808, 0.2039125467506523717658375, 0.2099098165200239314947094, 0.2158991987163350271904893, 0.2218804682825090362529109, 0.2278534004663095955103621, 0.2338177708287858931763260, 0.2397733552527061887852891, 0.2457199299509792442100997, 0.2516572714750633493170137, 0.2575851567233626262808095, 0.2635033629496102970603704, 0.2694116677712385990250046, 0.2753098491777350342234845, 0.2811976855389846383013106, 0.2870749556135979555970354, 0.2929414385572244074855835, 0.2987969139308507415853707, 0.3046411617090842500066247, 0.3104739622884204453906292, 0.3162950964954948840736281, 0.3221043455953188263048133, 0.3279014912994984240551598, 0.3336863157744371275728377, 0.3394586016495210024715049, 0.3452181320252866497799379, 0.3509646904815714220351686, 0.3566980610856456291665404, 0.3624180284003264285948478, 0.3681243774920730946589582, 0.3738168939390633631820054, 0.3794953638392505477003659, 0.3851595738184011246011504, 0.3908093110381124851478484, 0.3964443632038105531190080, 0.4020645185727269675414064, 0.4076695659618555307670286, 0.4132592947558876229222955, 0.4188334949151262845483445, 0.4243919569833786700527309, 0.4299344720958265754056529, 0.4354608319868747443376920, 0.4409708289979766581310498, 0.4464642560854375149423431, 0.4519409068281941054521446, 0.4574005754355712925046003, 0.4628430567550148032795831, 0.4682681462798000434299255, 0.4736756401567166435172692, 0.4790653351937284489919577, 0.4844370288676086658851277, 0.4897905193315498753147078, 0.4951256054227486308513615, 0.5004420866699643537454866, 0.5057397633010522419821678, 0.5110184362504699101074361, 0.5162779071667574777562819, 0.5215179784199908258105606, 0.5267384531092077401231844, 0.5319391350698066637637706, 0.5371198288809177797701793, 0.5422803398727461474300859, 0.5474204741338866161668468, 0.5525400385186102421644070, 0.5576388406541219339368088, 0.5627166889477890541289656, 0.5677733925943407059267120, 0.5728087615830374335557009, 0.5778226067048110674604360, 0.5828147395593744458765762, 0.5877849725623007456415722, 0.5927331189520721562306608, 0.5976589927970976321572046, 0.6025624090026994600382737, 0.6074431833180683777981926, 0.6123011323431869846644595, 0.6171360735357211818019505, 0.6219478252178793846326095, 0.6267362065832392490988318, 0.6315010377035416553494506, 0.6362421395354516935575740, 0.6409593339272863978194482, 0.6456524436257089753330001, 0.6503212922823892793136899, 0.6549657044606302753737317, 0.6595855056419602523685720, 0.6641805222326905300017078, 0.6687505815704384167754210, 0.6732955119306151731807642, 0.6778151425328787363350998, 0.6823093035475509635996236, 0.6867778261019991540425409, 0.6912205422869816079558685, 0.6956372851629569859851427, 0.7000278887663572307915895, 0.7043921881158238155354902, 0.7087300192184070848475163, 0.7130412190757284553416507, 0.7173256256901052441189100, 0.7215830780706378951153816, 0.7258134162392593745610389, 0.7300164812367465082373380, 0.7341921151286930346516885, 0.7383401610114441496854630, 0.7424604630179923197192207, 0.7465528663238341416942072, 0.7506172171527880300329109, 0.7546533627827725118134392, 0.7586611515515449130726824, 0.7626404328624002206015913, 0.7665910571898299050923647, 0.7705128760851404930018538, 0.7744057421820316760079998, 0.7782695092021337484565606, 0.7821040319605041647237048, 0.7859091663710830099561901, 0.7896847694521071791947507, 0.7934306993314830614379285, 0.7971468152521175267628422, 0.8008329775772070161862372, 0.8044890477954845355235412, 0.8081148885264243560855026, 0.8117103635254042266412553, 0.8152753376888249026732770, 0.8188096770591868005536242, 0.8223132488301235858819787, 0.8257859213513925068443721, 0.8292275641338212850768968, 0.8326380478542113781512150, 0.8360172443601974294381733, 0.8393650266750627227522641, 0.8426812690025104608329811, 0.8459658467313906883792422, 0.8492186364403826820199251, 0.8524395159026326312771384, 0.8556283640903464362590494, 0.8587850611793374495058711, 0.8619094885535289911058997, 0.8650015288094114678982387, 0.8680610657604539292849800, 0.8710879844414698938880857, 0.8740821711129372830049576, 0.8770435132652722985416439, 0.8799718996230570848337538, 0.8828672201492210155023745, 0.8857293660491754482355527, 0.8885582297749017921351663, 0.8913537050289927340242104, 0.8941156867686464718706125, 0.8968440712096138052506156, 0.8995387558300979345474886, 0.9021996393746068223597927, 0.9048266218577579723776075, 0.9074196045680354827749729, 0.9099784900714992329623006, 0.9125031822154460643436214, 0.9149935861320228175302595, 0.9174496082417910902748409, 0.9198711562572435822074657, 0.9222581391862718942794141, 0.9246104673355856526489486, 0.9269280523140828285786768, 0.9292108070361711277546193, 0.9314586457250403242837002, 0.9336714839158854164789745, 0.9358492384590804834007204, 0.9379918275233031229867813, 0.9400991705986093544775539, 0.9421711884994588697201555, 0.9442078033676905198230562, 0.9462089386754479255274304, 0.9481745192280551015654245, 0.9501044711668419871894147, 0.9519987219719197769813274, 0.9538572004649059479887372, 0.9556798368115988811866200, 0.9574665625246019772327448, 0.9592173104658971684737507, 0.9609320148493677311718534, 0.9626106112432703039637754, 0.9642530365726560206402068, 0.9658592291217406674540047, 0.9674291285362237773389233, 0.9689626758255565756615864, 0.9704598133651586944555050, 0.9719204848985835745206522, 0.9733446355396324773464471, 0.9747322117744170315712560, 0.9760831614633702416830300, 0.9773974338432058899681861, 0.9786749795288262664309572, 0.9799157505151781656726285, 0.9811197001790570947322311, 0.9822867832808596419166429, 0.9834169559662839640681455, 0.9845101757679783590716126, 0.9855664016071379024692622, 0.9865855937950491429603684, 0.9875677140345828729848910, 0.9885127254216350200148487, 0.9894205924465157453777048, 0.9902912809952868962106899, 0.9911247583510480415528399, 0.9919209931951714500244370, 0.9926799556084865573546763, 0.9934016170724147657859271, 0.9940859504700558793702825, 0.9947329300872282225027936, 0.9953425316134657151476031, 0.9959147321429772566997088, 0.9964495101755774022837600, 0.9969468456176038804367370, 0.9974067197828498321611183, 0.9978291153935628466036470, 0.9982140165816127953876923, 0.9985614088900397275573677, 0.9988712792754494246541769, 0.9991436161123782382453400, 0.9993784092025992514480161, 0.9995756497983108555936109, 0.9997353306710426625827368, 0.9998574463699794385446275, 0.9999419946068456536361287, 0.9999889909843818679872841}; +static double w512[256] = {0.0061299051754057857591564, 0.0061296748380364986664278, 0.0061292141719530834395471, 0.0061285231944655327693402, 0.0061276019315380226384508, 0.0061264504177879366912426, 0.0061250686964845654506976, 0.0061234568195474804311878, 0.0061216148475445832082156, 0.0061195428496898295184288, 0.0061172409038406284754329, 0.0061147090964949169991245, 0.0061119475227879095684795, 0.0061089562864885234199252, 0.0061057354999954793256260, 0.0061022852843330780981965, 0.0060986057691466529805468, 0.0060946970926976980917399, 0.0060905594018586731119147, 0.0060861928521074844014940, 0.0060815976075216427620556, 0.0060767738407720980583934, 0.0060717217331167509334394, 0.0060664414743936418598512, 0.0060609332630138177841916, 0.0060551973059538766317450, 0.0060492338187481899521175, 0.0060430430254808039978627, 0.0060366251587770195404584, 0.0060299804597946507400317, 0.0060231091782149633972884, 0.0060160115722332929281516, 0.0060086879085493424136484, 0.0060011384623571610896056, 0.0059933635173348036527221, 0.0059853633656336707715812, 0.0059771383078675312031423, 0.0059686886531012259272183, 0.0059600147188390547233923, 0.0059511168310128456267588, 0.0059419953239697077107922, 0.0059326505404594676575446, 0.0059230828316217905872556, 0.0059132925569729856313229, 0.0059032800843924967444267, 0.0058930457901090792634301, 0.0058825900586866627324847, 0.0058719132830099005255609, 0.0058610158642694068093892, 0.0058498982119466814015496, 0.0058385607437987230901727, 0.0058270038858423319934219, 0.0058152280723381015486124, 0.0058032337457741007324836, 0.0057910213568492471257818, 0.0057785913644563714469284, 0.0057659442356649741911390, 0.0057530804457036750229319, 0.0057400004779423555815070, 0.0057267048238739963699973, 0.0057131939830962084110906, 0.0056994684632924603629882, 0.0056855287802130018011102, 0.0056713754576554833823756, 0.0056570090274452746202723, 0.0056424300294154800102991, 0.0056276390113866542566918, 0.0056126365291462173626557, 0.0055974231464275703576030, 0.0055819994348889124461425, 0.0055663659740917603747899, 0.0055505233514791708235538, 0.0055344721623536666407146, 0.0055182130098548677502395, 0.0055017465049368275723757, 0.0054850732663450758090285, 0.0054681939205933684565648, 0.0054511091019401459196852, 0.0054338194523647001109732, 0.0054163256215430514316688, 0.0053986282668235365401123, 0.0053807280532021078251738, 0.0053626256532973455128155, 0.0053443217473251833447318, 0.0053258170230733487787774, 0.0053071121758755186716175, 0.0052882079085851914147269, 0.0052691049315492765055207, 0.0052498039625814025460136, 0.0052303057269349446719890, 0.0052106109572757724261988, 0.0051907203936547190996206, 0.0051706347834797735752665, 0.0051503548814879957194620, 0.0051298814497171563759039, 0.0051092152574771030281542, 0.0050883570813208522065339, 0.0050673077050154097256505, 0.0050460679195123198490183, 0.0050246385229179444874178, 0.0050030203204634735477834, 0.0049812141244746675595135, 0.0049592207543413337151533, 0.0049370410364865364724225, 0.0049146758043355438745290, 0.0048921258982845107556462, 0.0048693921656689000083132, 0.0048464754607316430993636, 0.0048233766445910410307843, 0.0048000965852084069516609, 0.0047766361573554516370718, 0.0047529962425814130594576, 0.0047291777291799312876071, 0.0047051815121556699579709, 0.0046810084931906855725376, 0.0046566595806105458869828, 0.0046321356893501986622283, 0.0046074377409195920619320, 0.0045825666633690479877601, 0.0045575233912543896535753, 0.0045323088656018247089130, 0.0045069240338725852313010, 0.0044813698499273259161146, 0.0044556472739902818017469, 0.0044297572726131868769073, 0.0044037008186389549258496, 0.0043774788911651239762643, 0.0043510924755070657234522, 0.0043245425631609613132305, 0.0042978301517665448748000, 0.0042709562450696162035304, 0.0042439218528843240022977, 0.0042167279910552210986262, 0.0041893756814190930634598, 0.0041618659517665616659011, 0.0041341998358034646067195, 0.0041063783731120129818357, 0.0040784026091117279353449, 0.0040502735950201579699371, 0.0040219923878133783908191, 0.0039935600501862743674273, 0.0039649776505126091053562, 0.0039362462628048786290012, 0.0039073669666739546834366, 0.0038783408472885172720108, 0.0038491689953342783540510, 0.0038198525069729982349166, 0.0037903924838012961884344, 0.0037607900328092568594835, 0.0037310462663388340021755, 0.0037011623020420531166926, 0.0036711392628390145554094, 0.0036409782768756986764252, 0.0036106804774815746300758, 0.0035802470031270143713799, 0.0035496789973805134987000, 0.0035189776088657205261605, 0.0034881439912182762045767, 0.0034571793030424645127888, 0.0034260847078676769483860, 0.0033948613741046917538288, 0.0033635104750017697209450, 0.0033320331886005682236783, 0.0033004306976918751358177, 0.0032687041897711642972145, 0.0032368548569939741987234, 0.0032048838961311115627642, 0.0031727925085236815030060, 0.0031405819000379459532169, 0.0031082532810200120618074, 0.0030758078662503522550163, 0.0030432468748981576780527, 0.0030105715304755267298129, 0.0029777830607914904130339, 0.0029448826979058762279357, 0.0029118716780830123435331, 0.0028787512417452737868732, 0.0028455226334264723964728, 0.0028121871017250922921949, 0.0027787458992573726197173, 0.0027452002826102393336092, 0.0027115515122940877888456, 0.0026778008526954179163600, 0.0026439495720293237639656, 0.0026099989422918391896635, 0.0025759502392121415000167, 0.0025418047422046148318992, 0.0025075637343207750815413, 0.0024732285022010581903898, 0.0024388003360264736029032, 0.0024042805294701247170072, 0.0023696703796485981535706, 0.0023349711870732236769383, 0.0023001842556012066042973, 0.0022653108923866345474810, 0.0022303524078313603367724, 0.0021953101155357629823745, 0.0021601853322493885355395, 0.0021249793778214727179358, 0.0020896935751513471947536, 0.0020543292501387313744068, 0.0020188877316339116255770, 0.0019833703513878098109153, 0.0019477784440019430461334, 0.0019121133468782766036998, 0.0018763764001689718921795, 0.0018405689467260314557679, 0.0018046923320508429542037, 0.0017687479042436241015783, 0.0017327370139527705642995, 0.0016966610143241088445575, 0.0016605212609500562072903, 0.0016243191118186897474239, 0.0015880559272627267421479, 0.0015517330699084184928942, 0.0015153519046243599371387, 0.0014789137984702174059640, 0.0014424201206453770259886, 0.0014058722424375164225552, 0.0013692715371711025869345, 0.0013326193801558190401403, 0.0012959171486349257824991, 0.0012591662217335559930561, 0.0012223679804069540808915, 0.0011855238073886605549070, 0.0011486350871386503607080, 0.0011117032057914329649653, 0.0010747295511041247428251, 0.0010377155124045074300544, 0.0010006624805390909706032, 0.0009635718478212056798501, 0.0009264450079791582697455, 0.0008892833561045005372012, 0.0008520882886004809402792, 0.0008148612031307819965602, 0.0007776034985686972438014, 0.0007403165749469818962867, 0.0007030018334087411433900, 0.0006656606761599343409382, 0.0006282945064244358390880, 0.0005909047284032230162400, 0.0005534927472403894647847, 0.0005160599690007674370993, 0.0004786078006679509066920, 0.0004411376501795405636493, 0.0004036509265333198797447, 0.0003661490400356268530141, 0.0003286334028523334162522, 0.0002911054302514885125319, 0.0002535665435705865135866, 0.0002160181779769908583388, 0.0001784618055459532946077, 0.0001408990173881984930124, 0.0001033319034969132362968, 0.0000657657316592401958310, 0.0000282526373739346920387}; + +/* n = 1024 */ +static double x1024[512] = {0.0015332313560626384065387, 0.0045996796509132604743248, 0.0076660846940754867627839, 0.0107324176515422803327458, 0.0137986496899844401539048, 0.0168647519770217265449962, 0.0199306956814939776907024, 0.0229964519737322146859283, 0.0260619920258297325581921, 0.0291272870119131747190088, 0.0321923081084135882953009, 0.0352570264943374577920498, 0.0383214133515377145376052, 0.0413854398649847193632977, 0.0444490772230372159692514, 0.0475122966177132524285687, 0.0505750692449610682823599, 0.0536373663049299446784129, 0.0566991590022410150066456, 0.0597604185462580334848567, 0.0628211161513580991486838, 0.0658812230372023327000985, 0.0689407104290065036692117, 0.0719995495578116053446277, 0.0750577116607543749280791, 0.0781151679813377563695878, 0.0811718897697013033399379, 0.0842278482828915197978074, 0.0872830147851321356094940, 0.0903373605480943146797811, 0.0933908568511667930531222, 0.0964434749817259444449839, 0.0994951862354057706638682, 0.1025459619163678143852404, 0.1055957733375709917393206, 0.1086445918210413421754502, 0.1116923886981416930665228, 0.1147391353098412365177689, 0.1177848030069850158450139, 0.1208293631505633191883714, 0.1238727871119809777282145, 0.1269150462733265659711591, 0.1299561120276415015747167, 0.1329959557791890421802183, 0.1360345489437231767245806, 0.1390718629487574087024745, 0.1421078692338334288514767, 0.1451425392507896747338214, 0.1481758444640297746894331, 0.1512077563507908736360111, 0.1542382464014118381930443, 0.1572672861196013386077717, 0.1602948470227058049622614, 0.1633209006419772551419632, 0.1663454185228409920472972, 0.1693683722251631675310675, 0.1723897333235182105457458, 0.1754094734074561169859457, 0.1784275640817695987127083, 0.1814439769667610892475458, 0.1844586836985096036255346, 0.1874716559291374498981239, 0.1904828653270767897777182, 0.1934922835773360459175133, 0.1964998823817661533215037, 0.1995056334593266523810493, 0.2025095085463516210358758, 0.2055114793968154435588961, 0.2085115177825984134657778, 0.2115095954937521680517391, 0.2145056843387649520596422, 0.2174997561448267079850562, 0.2204917827580939905255947, 0.2234817360439547026834844, 0.2264695878872926510320010, 0.2294553101927519176581055, 0.2324388748850010462953415, 0.2354202539089970401627982, 0.2383994192302491690277166, 0.2413763428350825830111093, 0.2443509967309017306575811, 0.2473233529464535787923793, 0.2502933835320906316905658, 0.2532610605600337470850902, 0.2562263561246347465424530, 0.2591892423426388177365829, 0.2621496913534467061535080, 0.2651076753193766937613805, 0.2680631664259263621824189, 0.2710161368820341379053566, 0.2739665589203406170790369, 0.2769144047974496674298651, 0.2798596467941893048479266, 0.2828022572158723421886958, 0.2857422083925568078394062, 0.2886794726793061316013119, 0.2916140224564490954412652, 0.2945458301298395466682397, 0.2974748681311158710926665, 0.3004011089179602237287060, 0.3033245249743575146018584, 0.3062450888108541472266190, 0.3091627729648165073212094, 0.3120775500006891993287636, 0.3149893925102530283167230, 0.3178982731128827248285835, 0.3208041644558044102645582, 0.3237070392143528003701590, 0.3266068700922281444141618, 0.3295036298217528976399056, 0.3323972911641281245763845, 0.3352878269096896307981228, 0.3381752098781638207253743, 0.3410594129189232790587667, 0.3439404089112420734451077, 0.3468181707645507759736923, 0.3496926714186912011050938, 0.3525638838441708576370887, 0.3554317810424171123150528, 0.3582963360460310626968790, 0.3611575219190411168852009, 0.3640153117571562777424605, 0.3668696786880191292071420, 0.3697205958714585223322883, 0.3725680364997419586702471, 0.3754119737978276686304337, 0.3782523810236163824397703, 0.3810892314682027913383487, 0.3839224984561266966457784, 0.3867521553456238443366159, 0.3895781755288764427662286, 0.3924005324322633611914264, 0.3952191995166100067331951, 0.3980341502774378774318886, 0.4008453582452137890482864, 0.4036527969855987732669841, 0.4064564400996966449616823, 0.4092562612243022361850445, 0.4120522340321492945489319, 0.4148443322321580436639788, 0.4176325295696824033106488, 0.4204167998267568670171117, 0.4231971168223430347225035, 0.4259734544125757982073747, 0.4287457864910091769763965, 0.4315140869888618022816824, 0.4342783298752620469783905, 0.4370384891574927989076034, 0.4397945388812358755048319, 0.4425464531308160773358662, 0.4452942060294448782650898, 0.4480377717394637499647905, 0.4507771244625871184774399, 0.4535122384401449505463744, 0.4562430879533249674337895, 0.4589696473234144839484647, 0.4616918909120418704091584, 0.4644097931214176352731591, 0.4671233283945751261630457, 0.4698324712156108470282980, 0.4725371961099243891820077, 0.4752374776444579739565725, 0.4779332904279356047259052, 0.4806246091111018260453658, 0.4833114083869600876643171, 0.4859936629910107111699206, 0.4886713477014884570245255, 0.4913444373395996897627612, 0.4940129067697591391182235, 0.4966767308998262548534419, 0.4993358846813411530706387, 0.5019903431097601517846292, 0.5046400812246908935430768, 0.5072850741101270528831987, 0.5099252968946826264179220, 0.5125607247518258033484145, 0.5151913329001124142038603, 0.5178170966034189556133159, 0.5204379911711751889184691, 0.5230539919585963104401304, 0.5256650743669146912153147, 0.5282712138436111840258187, 0.5308723858826459955432696, 0.5334685660246891214197081, 0.5360597298573503421568799, 0.5386458530154087775915395, 0.5412269111810419978382210, 0.5438028800840546885350993, 0.5463737355021068682427603, 0.5489394532609416558499039, 0.5515000092346125858442412, 0.5540553793457104693110943, 0.5566055395655897985264809, 0.5591504659145946930157566, 0.5616901344622843849532002, 0.5642245213276582417822586, 0.5667536026793803239405196, 0.5692773547360034755778519, 0.5717957537661929461605442, 0.5743087760889495408586850, 0.5768163980738322976184566, 0.5793185961411806888254667, 0.5818153467623363454697137, 0.5843066264598643017272666, 0.5867924118077737578782574, 0.5892726794317383594853053, 0.5917474060093159907610475, 0.5942165682701680800580147, 0.5966801429962784154186793, 0.5991381070221714681281111, 0.6015904372351302222163013, 0.6040371105754135078618616, 0.6064781040364728366534687, 0.6089133946651687366701116, 0.6113429595619865853458987, 0.6137667758812519380899084, 0.6161848208313453506363029, 0.6185970716749166931046915, 0.6210035057290989537555048, 0.6234041003657215304299416, 0.6257988330115230076688675, 0.6281876811483634175098794, 0.6305706223134359819666081, 0.6329476340994783351992008, 0.6353186941549832233898213, 0.6376837801844086803419153, 0.6400428699483876768269192, 0.6423959412639372417070377, 0.6447429720046670528676835, 0.6470839401009874959981582, 0.6494188235403171892641570, 0.6517476003672899719207013, 0.6540702486839613549191454, 0.6563867466500144315669620, 0.6586970724829652463040876, 0.6610012044583676196647058, 0.6632991209100174274984589, 0.6655908002301563325302097, 0.6678762208696749663426270, 0.6701553613383155598710345, 0.6724282002048740205051479, 0.6746947160974014538975312, 0.6769548877034051285838219, 0.6792086937700488815250166, 0.6814561131043529626873631, 0.6836971245733933167806834, 0.6859317071045003002812397, 0.6881598396854568318705713, 0.6903815013646959744270519, 0.6925966712514979467122689, 0.6948053285161865628996815, 0.6970074523903250980984011, 0.6992030221669115780303307, 0.7013920172005734910243170, 0.7035744169077619204963997, 0.7057502007669450960906928, 0.7079193483188013616608982, 0.7100818391664115582779368, 0.7122376529754508204546805, 0.7143867694743797837842896, 0.7165291684546352021941915, 0.7186648297708199730232898, 0.7207937333408925681355609, 0.7229158591463558692887801, 0.7250311872324454059827217, 0.7271396977083169940167956, 0.7292413707472337729927181, 0.7313361865867526410034676, 0.7334241255289100847554419, 0.7355051679404074033764222, 0.7375792942527953241676460, 0.7396464849626580085640129, 0.7417067206317964465721772, 0.7437599818874112379620360, 0.7458062494222847584928838, 0.7478455039949627094612890, 0.7498777264299350488635483, 0.7519028976178163024713854, 0.7539209985155252531253957, 0.7559320101464640065565832, 0.7579359136006964320521972, 0.7599326900351259762879594, 0.7619223206736728486546595, 0.7639047868074505764130149, 0.7658800697949419280166093, 0.7678481510621742029486694, 0.7698090121028938864243967, 0.7717626344787406673165402, 0.7737089998194208176678866, 0.7756480898228799321603470, 0.7775798862554750259163361, 0.7795043709521459890141759, 0.7814215258165863961053031, 0.7833313328214136695271245, 0.7852337740083385943114429, 0.7871288314883341834944720, 0.7890164874418038921405657, 0.7908967241187491784979139, 0.7927695238389364107105941, 0.7946348689920631175175217, 0.7964927420379235813750136, 0.7983431255065737724458586, 0.8001860019984956219039900, 0.8020213541847606330100649, 0.8038491648071928284194859, 0.8056694166785310321906380, 0.8074820926825904849673728, 0.8092871757744237908160400, 0.8110846489804811942036542, 0.8128744953987701856100790, 0.8146566981990144342734272, 0.8164312406228120465742028, 0.8181981059837931485700490, 0.8199572776677767911993239, 0.8217087391329271766780945, 0.8234524739099092046215225, 0.8251884656020433364270094, 0.8269166978854597764628854, 0.8286371545092519686128428, 0.8303498192956294067327593, 0.8320546761400697575830038, 0.8337517090114702948057846, 0.8354409019522986425235764, 0.8371222390787428271411563, 0.8387957045808606359402829, 0.8404612827227282810625704, 0.8421189578425883674826439, 0.8437687143529971635802028, 0.8454105367409711729261812, 0.8470444095681330059047621, 0.8486703174708565497995875, 0.8502882451604114359791023, 0.8518981774231068028225812, 0.8535000991204343530350070, 0.8550939951892107040056078, 0.8566798506417190298715048, 0.8582576505658499939545848, 0.8598273801252419702463831, 0.8613890245594205526224495, 0.8629425691839373504743648, 0.8644879993905080694542896, 0.8660253006471498760336444, 0.8675544584983180445842596, 0.8690754585650418856970762, 0.8705882865450599544602407, 0.8720929282129545374252050, 0.8735893694202854169962281, 0.8750775960957229119854680, 0.8765575942451801930826613, 0.8780293499519448719952049, 0.8794928493768098630212838, 0.8809480787582035158255322, 0.8823950244123190181935674, 0.8838336727332430675485994, 0.8852640101930838100201983, 0.8866860233420980458621863, 0.8880996988088177000235219, 0.8895050233001755566829532, 0.8909019836016302565651375, 0.8922905665772905558628607, 0.8936707591700388455969280, 0.8950425484016539302522575, 0.8964059213729330645356690, 0.8977608652638132471078410, 0.8991073673334917701488930, 0.9004454149205460236240486, 0.9017749954430525531228459, 0.9030960963987053701523781, 0.9044087053649335137720782, 0.9057128099990178624646022, 0.9070083980382071951444166, 0.9082954572998335002127549, 0.9095739756814265315746820, 0.9108439411608276105410847, 0.9121053417963026725455006, 0.9133581657266545576127977, 0.9146024011713345435238301, 0.9158380364305531206273175, 0.9170650598853900072573273, 0.9182834599979034047218800, 0.9194932253112384908353520, 0.9206943444497351509745089, 0.9218868061190349456451742, 0.9230705991061873135537215, 0.9242457122797550091847637, 0.9254121345899187738936182, 0.9265698550685812395293315, 0.9277188628294700636112689, 0.9288591470682402950895005, 0.9299906970625759697264543, 0.9311135021722909341445515, 0.9322275518394288975917975, 0.9333328355883627104845635, 0.9344293430258928687940732, 0.9355170638413452433503852, 0.9365959878066680331449597, 0.9376661047765279417201973, 0.9387274046884055757416456, 0.9397798775626900648558921, 0.9408235135027729019444869, 0.9418583026951410028915762, 0.9428842354094689849902736, 0.9439013019987106631201510, 0.9449094928991897628355911, 0.9459087986306898495121205, 0.9468992097965434727052183, 0.9478807170837205248834878, 0.9488533112629158137054760, 0.9498169831886358470168335, 0.9507717237992848297519245, 0.9517175241172498719314184, 0.9526543752489854069548347, 0.9535822683850968193944507, 0.9545011948004232815044368, 0.9554111458541197976665483, 0.9563121129897384560011695, 0.9572040877353088863799924, 0.9580870617034179240840996, 0.9589610265912884783587268, 0.9598259741808576051234879, 0.9606818963388537831043733, 0.9615287850168733926613630, 0.9623666322514563965930439, 0.9631954301641612222071790, 0.9640151709616388439537466, 0.9648258469357060659245549, 0.9656274504634180035311332, 0.9664199740071397636802195, 0.9672034101146173227737943, 0.9679777514190476018682591, 0.9687429906391477383350273, 0.9694991205792235533724866, 0.9702461341292372147270016, 0.9709840242648740939883669, 0.9717127840476088178328839, 0.9724324066247705125950353, 0.9731428852296072415565604, 0.9738442131813496343496072, 0.9745363838852737078785517, 0.9752193908327628781730396, 0.9758932276013691625928266, 0.9765578878548735718130775, 0.9772133653433456910269459, 0.9778596539032024498104955, 0.9784967474572660801033674, 0.9791246400148212617670490, 0.9797433256716714551911835, 0.9803527986101944204270933, 0.9809530530993969223366037, 0.9815440834949686212533729, 0.9821258842393351486632952, 0.9826984498617103674201996, 0.9832617749781478160230522, 0.9838158542915913364912672, 0.9843606825919248853856025, 0.9848962547560215275335618, 0.9854225657477916120303537, 0.9859396106182301300994116, 0.9864473845054632544104222, 0.9869458826347940594679517, 0.9874351003187474227003598, 0.9879150329571141058970610, 0.9883856760369940166627304, 0.9888470251328386495802522, 0.9892990759064927068006818, 0.9897418241072348978090276, 0.9901752655718179181502248, 0.9905993962245076069415402, 0.9910142120771212830473891, 0.9914197092290652598522332, 0.9918158838673715386394944, 0.9922027322667336806727008, 0.9925802507895418581838653, 0.9929484358859170846092543, 0.9933072840937446245820355, 0.9936567920387065844051246, 0.9939969564343136839997662, 0.9943277740819362116746914, 0.9946492418708341635125525, 0.9949613567781865697596566, 0.9952641158691200113800912, 0.9955575162967363309635588, 0.9958415553021395435525955, 0.9961162302144619548145649, 0.9963815384508894965215124, 0.9966374775166862927999356, 0.9968840450052184754903082, 0.9971212385979772738362093, 0.9973490560646014135491635, 0.9975674952628988745188845, 0.9977765541388680773265018, 0.9979762307267185998745420, 0.9981665231488915727109186, 0.9983474296160799746514418, 0.9985189484272491654281575, 0.9986810779696581776171579, 0.9988338167188825964389443, 0.9989771632388403756649803, 0.9991111161818228462260355, 0.9992356742885348165163858, 0.9993508363881507486653971, 0.9994566013984000492749057, 0.9995529683257070064969677, 0.9996399362654382464576482, 0.9997175044023747284307007, 0.9997856720116889628341744, 0.9998444384611711916084367, 0.9998938032169419878731474, 0.9999337658606177711221103, 0.9999643261538894550943330, 0.9999854843850284447675914, 0.9999972450545584403516182}; +static double w1024[512] = {0.0030664603092439082115513, 0.0030664314747171934849726, 0.0030663738059349007324470, 0.0030662873034393008056861, 0.0030661719680437936084028, 0.0030660278008329004477528, 0.0030658548031622538363679, 0.0030656529766585847450783, 0.0030654223232197073064431, 0.0030651628450145009692318, 0.0030648745444828901040266, 0.0030645574243358210601357, 0.0030642114875552366740338, 0.0030638367373940482295700, 0.0030634331773761048702058, 0.0030630008112961604635720, 0.0030625396432198379186545, 0.0030620496774835909559465, 0.0030615309186946633309249, 0.0030609833717310455112352, 0.0030604070417414288079918, 0.0030598019341451569616257, 0.0030591680546321751827342, 0.0030585054091629766484119, 0.0030578140039685464545661, 0.0030570938455503030247440, 0.0030563449406800369760227, 0.0030555672963998474425352, 0.0030547609200220758572342, 0.0030539258191292371925135, 0.0030530620015739486603347, 0.0030521694754788558725307, 0.0030512482492365564619779, 0.0030502983315095211653578, 0.0030493197312300123682482, 0.0030483124576000001133114, 0.0030472765200910755723677, 0.0030462119284443619831693, 0.0030451186926704230517109, 0.0030439968230491688209395, 0.0030428463301297590067471, 0.0030416672247305038021562, 0.0030404595179387621506312, 0.0030392232211108374894710, 0.0030379583458718709642643, 0.0030366649041157321154111, 0.0030353429080049070377385, 0.0030339923699703840142628, 0.0030326133027115366251721, 0.0030312057191960043331307, 0.0030297696326595705460252, 0.0030283050566060381583022, 0.0030268120048071025720655, 0.0030252904913022221991274, 0.0030237405303984864452325, 0.0030221621366704811776946, 0.0030205553249601516777118, 0.0030189201103766630786495, 0.0030172565082962582916016, 0.0030155645343621134195681, 0.0030138442044841906616068, 0.0030120955348390887083441, 0.0030103185418698906302495, 0.0030085132422860092601062, 0.0030066796530630300711306, 0.0030048177914425515522176, 0.0030029276749320230818149, 0.0030010093213045803019478, 0.0029990627485988779939449, 0.0029970879751189204574353, 0.0029950850194338893942123, 0.0029930539003779692985814, 0.0029909946370501703558363, 0.0029889072488141488505262, 0.0029867917552980250862041, 0.0029846481763941988183689, 0.0029824765322591622023349, 0.0029802768433133102577897, 0.0029780491302407488518214, 0.0029757934139891002022209, 0.0029735097157693059028890, 0.0029711980570554274731990, 0.0029688584595844444331918, 0.0029664909453560499065010, 0.0029640955366324437529314, 0.0029616722559381232326340, 0.0029592211260596712038487, 0.0029567421700455418562030, 0.0029542354112058439815854, 0.0029517008731121217846274, 0.0029491385795971332348581, 0.0029465485547546259626151, 0.0029439308229391107008170, 0.0029412854087656322747309, 0.0029386123371095381418860, 0.0029359116331062444843108, 0.0029331833221509998552933, 0.0029304274298986463828860, 0.0029276439822633785324025, 0.0029248330054184994301727, 0.0029219945257961747508486, 0.0029191285700871841705750, 0.0029162351652406703883623, 0.0029133143384638857180205, 0.0029103661172219362530391, 0.0029073905292375236068160, 0.0029043876024906842306667, 0.0029013573652185263120627, 0.0028982998459149642555740, 0.0028952150733304507490135, 0.0028921030764717064173001, 0.0028889638846014470665859, 0.0028857975272381085212091, 0.0028826040341555690560623, 0.0028793834353828694269858, 0.0028761357612039305018167, 0.0028728610421572684947521, 0.0028695593090357078067012, 0.0028662305928860914743281, 0.0028628749250089892305081, 0.0028594923369584031789413, 0.0028560828605414710856927, 0.0028526465278181672904478, 0.0028491833711010012402964, 0.0028456934229547136488796, 0.0028421767161959702837564, 0.0028386332838930533848701, 0.0028350631593655507170153, 0.0028314663761840422592303, 0.0028278429681697845340603, 0.0028241929693943925796601, 0.0028205164141795195677262, 0.0028168133370965340702726, 0.0028130837729661949782821, 0.0028093277568583240752928, 0.0028055453240914762689974, 0.0028017365102326074839556, 0.0027979013510967402185435, 0.0027940398827466267692845, 0.0027901521414924101257281, 0.0027862381638912825390663, 0.0027822979867471417676962, 0.0027783316471102450029635, 0.0027743391822768604783394, 0.0027703206297889167653083, 0.0027662760274336497592617, 0.0027622054132432473587211, 0.0027581088254944918412282, 0.0027539863027083999392661, 0.0027498378836498606195970, 0.0027456636073272705694208, 0.0027414635129921673927833, 0.0027372376401388605206822, 0.0027329860285040598383428, 0.0027287087180665020331547, 0.0027244057490465746667821, 0.0027200771619059379749851, 0.0027157229973471443987056, 0.0027113432963132558499974, 0.0027069380999874587163979, 0.0027025074497926766073634, 0.0026980513873911808464073, 0.0026935699546841987126055, 0.0026890631938115194351518, 0.0026845311471510979446691, 0.0026799738573186563850015, 0.0026753913671672833892344, 0.0026707837197870311237119, 0.0026661509585045101038391, 0.0026614931268824817854798, 0.0026568102687194489357814, 0.0026521024280492437872770, 0.0026473696491406139791397, 0.0026426119764968062894804, 0.0026378294548551481626046, 0.0026330221291866270351630, 0.0026281900446954674651512, 0.0026233332468187060677353, 0.0026184517812257642618999, 0.0026135456938180188319369, 0.0026086150307283703078113, 0.0026036598383208091684657, 0.0025986801631899798721388, 0.0025936760521607427178014, 0.0025886475522877335418257, 0.0025835947108549212540321, 0.0025785175753751632172710, 0.0025734161935897584747222, 0.0025682906134679988291122, 0.0025631408832067177780710, 0.0025579670512298373098703, 0.0025527691661879125638030, 0.0025475472769576743594882, 0.0025423014326415695994010, 0.0025370316825672995489502, 0.0025317380762873559984451, 0.0025264206635785553113127, 0.0025210794944415703629476, 0.0025157146191004603745948, 0.0025103260880021986466869, 0.0025049139518161981960773, 0.0024994782614338353016280, 0.0024940190679679709626349, 0.0024885364227524702745874, 0.0024830303773417197267843, 0.0024775009835101424263432, 0.0024719482932517112531633, 0.0024663723587794599504176, 0.0024607732325249921551741, 0.0024551509671379883737605, 0.0024495056154857109065099, 0.0024438372306525067265426, 0.0024381458659393083172574, 0.0024324315748631324732279, 0.0024266944111565770692147, 0.0024209344287673158020275, 0.0024151516818575909099866, 0.0024093462248037038747545, 0.0024035181121955041103265, 0.0023976673988358756439882, 0.0023917941397402217940673, 0.0023858983901359478493246, 0.0023799802054619417548485, 0.0023740396413680528093376, 0.0023680767537145683786720, 0.0023620915985716886306938, 0.0023560842322189992961374, 0.0023500547111449424606655, 0.0023440030920462853929883, 0.0023379294318275874140606, 0.0023318337876006648123684, 0.0023257162166840538103394, 0.0023195767766024715869239, 0.0023134155250862753614165, 0.0023072325200709195436049, 0.0023010278196964109553481, 0.0022948014823067621287099, 0.0022885535664494426857857, 0.0022822841308748288053830, 0.0022759932345356507817318, 0.0022696809365864386804193, 0.0022633472963829660967620, 0.0022569923734816920218464, 0.0022506162276392008214839, 0.0022442189188116403333494, 0.0022378005071541580875846, 0.0022313610530203356561684, 0.0022249006169616211363732, 0.0022184192597267597736437, 0.0022119170422612227292520, 0.0022053940257066339981005, 0.0021988502714001954820607, 0.0021922858408741102242558, 0.0021857007958550038097087, 0.0021790951982633439377969, 0.0021724691102128581719720, 0.0021658225940099498722195, 0.0021591557121531123157498, 0.0021524685273323410114303, 0.0021457611024285442134846, 0.0021390335005129516400021, 0.0021322857848465214018174, 0.0021255180188793451473363, 0.0021187302662500514289029, 0.0021119225907852072963166, 0.0021050950564987181231273, 0.0020982477275912256713511, 0.0020913806684495044002679, 0.0020844939436458560249764, 0.0020775876179375023304007, 0.0020706617562659762464561, 0.0020637164237565111901030, 0.0020567516857174286800274, 0.0020497676076395242297101, 0.0020427642551954515246552, 0.0020357416942391048895728, 0.0020286999908050000513193, 0.0020216392111076532034194, 0.0020145594215409583780096, 0.0020074606886775631310555, 0.0020003430792682425467160, 0.0019932066602412715667394, 0.0019860514987017956507927, 0.0019788776619311997736447, 0.0019716852173864757651327, 0.0019644742326995879988655, 0.0019572447756768374356240, 0.0019499969142982240274419, 0.0019427307167168074883601, 0.0019354462512580664378677, 0.0019281435864192559230531, 0.0019208227908687633255086, 0.0019134839334454626590447, 0.0019061270831580672642844, 0.0018987523091844809062265, 0.0018913596808711472808775, 0.0018839492677323979370705, 0.0018765211394497986196010, 0.0018690753658714940398285, 0.0018616120170115510799024, 0.0018541311630493004367905, 0.0018466328743286767122991, 0.0018391172213575569552912, 0.0018315842748070976623218, 0.0018240341055110702429247, 0.0018164667844651949558009, 0.0018088823828264733221690, 0.0018012809719125190225581, 0.0017936626232008872833327, 0.0017860274083284027592567, 0.0017783753990904859184165, 0.0017707066674404779358362, 0.0017630212854889641021349, 0.0017553193255030957535871, 0.0017476008599059107299616, 0.0017398659612756523665312, 0.0017321147023450870266539, 0.0017243471560008201813452, 0.0017165633952826110422716, 0.0017087634933826857546100, 0.0017009475236450491562317, 0.0016931155595647951096823, 0.0016852676747874154134422, 0.0016774039431081072989678, 0.0016695244384710795200224, 0.0016616292349688570408253, 0.0016537184068415843295541, 0.0016457920284763272637533, 0.0016378501744063736542136, 0.0016298929193105323938983, 0.0016219203380124312385075, 0.0016139325054798132252838, 0.0016059294968238317366751, 0.0015979113872983442154825, 0.0015898782522992045381361, 0.0015818301673635540527516, 0.0015737672081691112886347, 0.0015656894505334603439125, 0.0015575969704133379579831, 0.0015494898439039192754876, 0.0015413681472381023085203, 0.0015332319567857911038062, 0.0015250813490531776215856, 0.0015169164006820223329593, 0.0015087371884489335424584, 0.0015005437892646454426166, 0.0014923362801732949073323, 0.0014841147383516970308228, 0.0014758792411086194189814, 0.0014676298658840552399621, 0.0014593666902484950408286, 0.0014510897919021973371136, 0.0014427992486744579821480, 0.0014344951385228783230315, 0.0014261775395326321501237, 0.0014178465299157314469528, 0.0014095021880102909474427, 0.0014011445922797915073771, 0.0013927738213123422970256, 0.0013843899538199418218713, 0.0013759930686377377783877, 0.0013675832447232857518263, 0.0013591605611558067629844, 0.0013507250971354436709363, 0.0013422769319825164387192, 0.0013338161451367762689788, 0.0013253428161566586165863, 0.0013168570247185350852537, 0.0013083588506159642151809, 0.0012998483737589411687807, 0.0012913256741731463215379, 0.0012827908319991927650686, 0.0012742439274918727294554, 0.0012656850410194029319476, 0.0012571142530626688591208, 0.0012485316442144679896043, 0.0012399372951787519644928, 0.0012313312867698677125706, 0.0012227136999117975374834, 0.0012140846156373981740056, 0.0012054441150876388205601, 0.0011967922795108381551550, 0.0011881291902619003419159, 0.0011794549288015500353964, 0.0011707695766955663898644, 0.0011620732156140160807669, 0.0011533659273304853455891, 0.0011446477937213110513287, 0.0011359188967648107958214, 0.0011271793185405120501566, 0.0011184291412283803494364, 0.0011096684471080465391373, 0.0011008973185580330843445, 0.0010921158380549794491381, 0.0010833240881728665534171, 0.0010745221515822403144596, 0.0010657101110494342805238, 0.0010568880494357913638046, 0.0010480560496968846800697, 0.0010392141948817375023057, 0.0010303625681320423357186, 0.0010215012526813791214350, 0.0010126303318544325762649, 0.0010037498890662086758941, 0.0009948600078212502888805, 0.0009859607717128519688418, 0.0009770522644222739122264, 0.0009681345697179550890732, 0.0009592077714547255541688, 0.0009502719535730179460261, 0.0009413272000980781811114, 0.0009323735951391753507612, 0.0009234112228888108282347, 0.0009144401676219265933610, 0.0009054605136951127822476, 0.0008964723455458144695262, 0.0008874757476915376906225, 0.0008784708047290547115472, 0.0008694576013336085537138, 0.0008604362222581167813022, 0.0008514067523323745586954, 0.0008423692764622569855308, 0.0008333238796289207169173, 0.0008242706468880048763834, 0.0008152096633688312691343, 0.0008061410142736039032099, 0.0007970647848766078261514, 0.0007879810605234072847989, 0.0007788899266300432158601, 0.0007697914686822300749096, 0.0007606857722345520114971, 0.0007515729229096583980656, 0.0007424530063974587204051, 0.0007333261084543168373926, 0.0007241923149022446178008, 0.0007150517116280949619884, 0.0007059043845827542163241, 0.0006967504197803339882351, 0.0006875899032973623698204, 0.0006784229212719745780188, 0.0006692495599031030193850, 0.0006600699054496667875923, 0.0006508840442297606018626, 0.0006416920626198431946113, 0.0006324940470539251567018, 0.0006232900840227562488244, 0.0006140802600730121876541, 0.0006048646618064809156059, 0.0005956433758792483631993, 0.0005864164890008837132649, 0.0005771840879336241764943, 0.0005679462594915592881427, 0.0005587030905398147360662, 0.0005494546679937357307118, 0.0005402010788180699282026, 0.0005309424100261499182844, 0.0005216787486790752896494, 0.0005124101818848942860548, 0.0005031367967977850677401, 0.0004938586806172365939677, 0.0004845759205872291441124, 0.0004752886039954144966810, 0.0004659968181722957880391, 0.0004567006504904070755681, 0.0004474001883634926336095, 0.0004380955192456860150653, 0.0004287867306306889171352, 0.0004194739100509498966958, 0.0004101571450768429896514, 0.0004008365233158462997325, 0.0003915121324117206363681, 0.0003821840600436882993131, 0.0003728523939256121308821, 0.0003635172218051749865499, 0.0003541786314630598135175, 0.0003448367107121305776064, 0.0003354915473966143456333, 0.0003261432293912849189248, 0.0003167918446006485317858, 0.0003074374809581322877037, 0.0002980802264252762217455, 0.0002887201689909301727620, 0.0002793573966704570567274, 0.0002699919975049447012834, 0.0002606240595604292032823, 0.0002512536709271339139118, 0.0002418809197187298044384, 0.0002325058940716253739001, 0.0002231286821442978268308, 0.0002137493721166826096154, 0.0002043680521896465790359, 0.0001949848105845827899210, 0.0001855997355431850062940, 0.0001762129153274925249194, 0.0001668244382203495280013, 0.0001574343925265138930609, 0.0001480428665748079976500, 0.0001386499487219861751244, 0.0001292557273595155266326, 0.0001198602909254695827354, 0.0001104637279257437565603, 0.0001010661269730276014588, 0.0000916675768613669107254, 0.0000822681667164572752810, 0.0000728679863190274661367, 0.0000634671268598044229933, 0.0000540656828939400071988, 0.0000446637581285753393838, 0.0000352614859871986975067, 0.0000258591246764618586716, 0.0000164577275798968681068, 0.0000070700764101825898713}; + +/* n = 3 */ +static double x3[2] = {0.0000000000000000000000000, 0.7745966692414833770358531}; +static double w3[2] = {0.8888888888888888888888889, 0.5555555555555555555555556}; + +/* n = 5 */ +static double x5[3] = {0.0000000000000000000000000, 0.5384693101056830910363144, 0.9061798459386639927976269}; +static double w5[3] = {0.5688888888888888888888889, 0.4786286704993664680412915, 0.2369268850561890875142640}; + +/* n = 7 */ +static double x7[4] = {0.0000000000000000000000000, 0.4058451513773971669066064, 0.7415311855993944398638648, 0.9491079123427585245261897}; +static double w7[4] = {0.4179591836734693877551020, 0.3818300505051189449503698, 0.2797053914892766679014678, 0.1294849661688696932706114}; + +/* n = 9 */ +static double x9[5] = {0.0000000000000000000000000, 0.3242534234038089290385380, 0.6133714327005903973087020, 0.8360311073266357942994298, 0.9681602395076260898355762}; +static double w9[5] = {0.3302393550012597631645251, 0.3123470770400028400686304, 0.2606106964029354623187429, 0.1806481606948574040584720, 0.0812743883615744119718922}; + +/* n = 11 */ +static double x11[6] = {0.0000000000000000000000000, 0.2695431559523449723315320, 0.5190961292068118159257257, 0.7301520055740493240934163, 0.8870625997680952990751578, 0.9782286581460569928039380}; +static double w11[6] = {0.2729250867779006307144835, 0.2628045445102466621806889, 0.2331937645919904799185237, 0.1862902109277342514260976, 0.1255803694649046246346943, 0.0556685671161736664827537}; + +/* n = 13 */ +static double x13[7] = {0.0000000000000000000000000, 0.2304583159551347940655281, 0.4484927510364468528779129, 0.6423493394403402206439846, 0.8015780907333099127942065, 0.9175983992229779652065478, 0.9841830547185881494728294}; +static double w13[7] = {0.2325515532308739101945895, 0.2262831802628972384120902, 0.2078160475368885023125232, 0.1781459807619457382800467, 0.1388735102197872384636018, 0.0921214998377284479144218, 0.0404840047653158795200216}; + +/* n = 15 */ +static double x15[8] = {0.0000000000000000000000000, 0.2011940939974345223006283, 0.3941513470775633698972074, 0.5709721726085388475372267, 0.7244177313601700474161861, 0.8482065834104272162006483, 0.9372733924007059043077589, 0.9879925180204854284895657}; +static double w15[8] = {0.2025782419255612728806202, 0.1984314853271115764561183, 0.1861610000155622110268006, 0.1662692058169939335532009, 0.1395706779261543144478048, 0.1071592204671719350118695, 0.0703660474881081247092674, 0.0307532419961172683546284}; + +/* n = 17 */ +static double x17[9] = {0.0000000000000000000000000, 0.1784841814958478558506775, 0.3512317634538763152971855, 0.5126905370864769678862466, 0.6576711592166907658503022, 0.7815140038968014069252301, 0.8802391537269859021229557, 0.9506755217687677612227170, 0.9905754753144173356754340}; +static double w17[9] = {0.1794464703562065254582656, 0.1765627053669926463252710, 0.1680041021564500445099707, 0.1540457610768102880814316, 0.1351363684685254732863200, 0.1118838471934039710947884, 0.0850361483171791808835354, 0.0554595293739872011294402, 0.0241483028685479319601100}; + +/* n = 19 */ +static double x19[10] = {0.0000000000000000000000000, 0.1603586456402253758680961, 0.3165640999636298319901173, 0.4645707413759609457172671, 0.6005453046616810234696382, 0.7209661773352293786170959, 0.8227146565371428249789225, 0.9031559036148179016426609, 0.9602081521348300308527788, 0.9924068438435844031890177}; +static double w19[10] = {0.1610544498487836959791636, 0.1589688433939543476499564, 0.1527660420658596667788554, 0.1426067021736066117757461, 0.1287539625393362276755158, 0.1115666455473339947160239, 0.0914900216224499994644621, 0.0690445427376412265807083, 0.0448142267656996003328382, 0.0194617882297264770363120}; + +/* Merge all together */ +static gsl_integration_glfixed_table glaw[] = +{ + { 2, x2, w2, 1 /* precomputed */ }, + { 3, x3, w3, 1 }, + { 4, x4, w4, 1 }, + { 5, x5, w5, 1 }, + { 6, x6, w6, 1 }, + { 7, x7, w7, 1 }, + { 8, x8, w8, 1 }, + { 9, x9, w9, 1 }, + { 10, x10, w10, 1 }, + { 11, x11, w11, 1 }, + { 12, x12, w12, 1 }, + { 13, x13, w13, 1 }, + { 14, x14, w14, 1 }, + { 15, x15, w15, 1 }, + { 16, x16, w16, 1 }, + { 17, x17, w17, 1 }, + { 18, x18, w18, 1 }, + { 19, x19, w19, 1 }, + { 20, x20, w20, 1 }, + { 32, x32, w32, 1 }, + { 64, x64, w64, 1 }, + { 96, x96, w96, 1 }, + { 100, x100, w100, 1 }, + { 128, x128, w128, 1 }, + { 256, x256, w256, 1 }, + { 512, x512, w512, 1 }, + { 1024, x1024, w1024, 1 } +}; +static const size_t GLAWSIZE = sizeof(glaw)/sizeof(glaw[0]); + + +gsl_integration_glfixed_table * +gsl_integration_glfixed_table_alloc (size_t n) +{ + int i; + double *x = 0; + double *w = 0; + gsl_integration_glfixed_table * retval = 0; + + /* Kludgy error check: indices in the original algorithm use ints but GSL + * conventions are to take a size_t parameter for n */ + if (n > INT_MAX) + { + GSL_ERROR_NULL ("Requested n is too large", GSL_EINVAL); + } + + /* Use a predefined table of size n if possible */ + for (i = 0; i < (int) GLAWSIZE;i++) + { + if (n == glaw[i].n) + { + retval = &glaw[i]; + break; + } + } + + /* No predefined table is available. Generate one on the fly. */ + if (retval == 0) + { + const int m = (n + 1) >> 1; + + x = (double *) malloc(m * sizeof(double)); + if (x == 0) + { + GSL_ERROR_NULL ("failed to allocate space for abscissae", + GSL_ENOMEM); + } + + w = (double *) malloc(m * sizeof(double)); + if (w == 0) + { + free(x); + GSL_ERROR_NULL ("failed to allocate space for weights", + GSL_ENOMEM); + } + + retval = (gsl_integration_glfixed_table *) + malloc(sizeof(gsl_integration_glfixed_table)); + if (retval == 0) + { + free(x); + free(w); + GSL_ERROR_NULL ("failed to allocate space for table struct", + GSL_ENOMEM); + } + + gauss_legendre_tbl(n, x, w, 1e-10 /* precision magic number */); + + retval->n = n; + retval->x = x; + retval->w = w; + retval->precomputed = 0; + } + + return retval; +} + +void +gsl_integration_glfixed_table_free (gsl_integration_glfixed_table * t) +{ + /* We only free the table memory if we allocated it */ + /* Leave precomputed, static tables alone */ + if (! t->precomputed) + { + free(t->x); + free(t->w); + free(t); + } +} + +/* +Gauss-Legendre n-points quadrature, exact for polynomial of degree <=2n-1 + +1. n - even: + +int(f(t),t=a..b) = A*sum(w[i]*f(A*x[i]+B),i=0..n-1) + = A*sum(w[k]*[f(B+A*x[k])+f(B-A*x[k])],k=0..n/2-1) + A = (b-a)/2, + B = (a+b)/2 + + +2. n - odd: + +int(f(t),t=a..b) = A*sum(w[i]*f(A*x[i]+B),i=0..n-1) + = A*w[0]*f(B)+A*sum(w[k]*[f(B+A*x[k])+f(B-A*x[k])],k=1..(n-1)/2) + A = (b-a)/2, + B = (a+b)/2 +*/ + +double +gsl_integration_glfixed (const gsl_function *f, + double a, + double b, + const gsl_integration_glfixed_table * t) +{ + const double * const x = t->x; + const double * const w = t->w; + const int n = t->n; + double A, B, Ax, s; + int i, m; + + m = (n + 1) >> 1; + A = 0.5 * (b - a); + B = 0.5 * (b + a); + + if (n&1) /* n - odd */ + { + s = w[0] * GSL_FN_EVAL(f,B); + + for (i = 1;i < m;i++) + { + Ax = A * x[i]; + s += w[i] * (GSL_FN_EVAL(f,B+Ax) + GSL_FN_EVAL(f,B-Ax)); + } + + } + else /* n - even */ + { + + s = 0.0; + + for (i = 0;i < m;i++) + { + Ax = A * x[i]; + s += w[i] * (GSL_FN_EVAL(f,B+Ax) + GSL_FN_EVAL(f,B-Ax)); + } + } + + return A*s; +} + +/* Routine to retrieve the i-th Gauss-Legendre point and weight from t. + Useful when the caller wishes to access the information stored in + the high-precision gsl_integration_glfixed_table struct. Points + are indexed and presented in increasing order to the caller. +*/ +int +gsl_integration_glfixed_point (double a, + double b, + size_t i, + double *xi, + double *wi, + const gsl_integration_glfixed_table * t) +{ + const double A = (b - a) / 2; /* Length of [a,b] */ + const double B = (a + b) / 2; /* Midpoint of [a,b] */ + + if (i >= t->n) + { + GSL_ERROR ("i must be less than t->n", GSL_EINVAL); + } + + /* See comments above gsl_integration_glfixed for struct's x, w layout. */ + /* Simply unpack that layout into a sorted set of points, weights. */ + if (GSL_IS_ODD(t->n)) + { + const int k = ((int) i) - ((int) t->n) / 2; + const int s = k < 0 ? -1 : 1; + + *xi = B + s*A*t->x[s*k]; + *wi = A*t->w[s*k]; + } + else if (/* GSL_IS_EVEN(t->n) && */ i < t->n / 2) + { + i = (t->n / 2) - 1 - i; + *xi = B - A*t->x[i]; + *wi = A*t->w[i]; + } + else /* GSL_IS_EVEN(t->n) && i >= n / 2 */ + { + i -= t->n / 2; + *xi = B + A*t->x[i]; + *wi = A*t->w[i]; + } + + return GSL_SUCCESS; +} + +/* Computing of abscissas and weights for Gauss-Legendre quadrature for any(reasonable) order n + [in] n - order of quadrature + [in] eps - required precision (must be eps>=macheps(double), usually eps = 1e-10 is ok) + [out]x - abscisass, size = (n+1)>>1 + [out]w - weights, size = (n+1)>>1 +*/ + +/* Look up table for fast calculation of Legendre polynomial for n<1024 */ +/* ltbl[k] = 1.0 - 1.0/(double)k; */ +static double ltbl[1024] = {0.00000000000000000000, 0.00000000000000000000, 0.50000000000000000000, 0.66666666666666674000, 0.75000000000000000000, 0.80000000000000004000, 0.83333333333333337000, 0.85714285714285721000, 0.87500000000000000000, 0.88888888888888884000, 0.90000000000000002000, 0.90909090909090906000, 0.91666666666666663000, 0.92307692307692313000, 0.92857142857142860000, 0.93333333333333335000, 0.93750000000000000000, 0.94117647058823528000, 0.94444444444444442000, 0.94736842105263164000, 0.94999999999999996000, 0.95238095238095233000, 0.95454545454545459000, 0.95652173913043481000, 0.95833333333333337000, 0.95999999999999996000, 0.96153846153846156000, 0.96296296296296302000, 0.96428571428571430000, 0.96551724137931039000, 0.96666666666666667000, 0.96774193548387100000, 0.96875000000000000000, 0.96969696969696972000, 0.97058823529411764000, 0.97142857142857142000, 0.97222222222222221000, 0.97297297297297303000, 0.97368421052631582000, 0.97435897435897434000, 0.97499999999999998000, 0.97560975609756095000, 0.97619047619047616000, 0.97674418604651159000, 0.97727272727272729000, 0.97777777777777775000, 0.97826086956521741000, 0.97872340425531912000, 0.97916666666666663000, 0.97959183673469385000, 0.97999999999999998000, 0.98039215686274506000, 0.98076923076923073000, 0.98113207547169812000, 0.98148148148148151000, 0.98181818181818181000, 0.98214285714285710000, 0.98245614035087714000, 0.98275862068965514000, 0.98305084745762716000, 0.98333333333333328000, 0.98360655737704916000, 0.98387096774193550000, 0.98412698412698418000, 0.98437500000000000000, 0.98461538461538467000, 0.98484848484848486000, 0.98507462686567160000, 0.98529411764705888000, 0.98550724637681164000, 0.98571428571428577000, 0.98591549295774650000, 0.98611111111111116000, 0.98630136986301364000, 0.98648648648648651000, 0.98666666666666669000, 0.98684210526315785000, 0.98701298701298701000, 0.98717948717948723000, 0.98734177215189878000, 0.98750000000000004000, 0.98765432098765427000, 0.98780487804878048000, 0.98795180722891562000, 0.98809523809523814000, 0.98823529411764710000, 0.98837209302325579000, 0.98850574712643680000, 0.98863636363636365000, 0.98876404494382020000, 0.98888888888888893000, 0.98901098901098905000, 0.98913043478260865000, 0.98924731182795700000, 0.98936170212765961000, 0.98947368421052628000, 0.98958333333333337000, 0.98969072164948457000, 0.98979591836734693000, 0.98989898989898994000, 0.98999999999999999000, 0.99009900990099009000, 0.99019607843137258000, 0.99029126213592233000, 0.99038461538461542000, 0.99047619047619051000, 0.99056603773584906000, 0.99065420560747663000, 0.99074074074074070000, 0.99082568807339455000, 0.99090909090909096000, 0.99099099099099097000, 0.99107142857142860000, 0.99115044247787609000, 0.99122807017543857000, 0.99130434782608701000, 0.99137931034482762000, 0.99145299145299148000, 0.99152542372881358000, 0.99159663865546221000, 0.99166666666666670000, 0.99173553719008267000, 0.99180327868852458000, 0.99186991869918695000, 0.99193548387096775000, 0.99199999999999999000, 0.99206349206349209000, 0.99212598425196852000, 0.99218750000000000000, 0.99224806201550386000, 0.99230769230769234000, 0.99236641221374045000, 0.99242424242424243000, 0.99248120300751874000, 0.99253731343283580000, 0.99259259259259258000, 0.99264705882352944000, 0.99270072992700731000, 0.99275362318840576000, 0.99280575539568350000, 0.99285714285714288000, 0.99290780141843971000, 0.99295774647887325000, 0.99300699300699302000, 0.99305555555555558000, 0.99310344827586206000, 0.99315068493150682000, 0.99319727891156462000, 0.99324324324324320000, 0.99328859060402686000, 0.99333333333333329000, 0.99337748344370858000, 0.99342105263157898000, 0.99346405228758172000, 0.99350649350649356000, 0.99354838709677418000, 0.99358974358974361000, 0.99363057324840764000, 0.99367088607594933000, 0.99371069182389937000, 0.99375000000000002000, 0.99378881987577639000, 0.99382716049382713000, 0.99386503067484666000, 0.99390243902439024000, 0.99393939393939390000, 0.99397590361445787000, 0.99401197604790414000, 0.99404761904761907000, 0.99408284023668636000, 0.99411764705882355000, 0.99415204678362579000, 0.99418604651162790000, 0.99421965317919070000, 0.99425287356321834000, 0.99428571428571433000, 0.99431818181818177000, 0.99435028248587576000, 0.99438202247191010000, 0.99441340782122900000, 0.99444444444444446000, 0.99447513812154698000, 0.99450549450549453000, 0.99453551912568305000, 0.99456521739130432000, 0.99459459459459465000, 0.99462365591397850000, 0.99465240641711228000, 0.99468085106382975000, 0.99470899470899465000, 0.99473684210526314000, 0.99476439790575921000, 0.99479166666666663000, 0.99481865284974091000, 0.99484536082474229000, 0.99487179487179489000, 0.99489795918367352000, 0.99492385786802029000, 0.99494949494949492000, 0.99497487437185927000, 0.99500000000000000000, 0.99502487562189057000, 0.99504950495049505000, 0.99507389162561577000, 0.99509803921568629000, 0.99512195121951219000, 0.99514563106796117000, 0.99516908212560384000, 0.99519230769230771000, 0.99521531100478466000, 0.99523809523809526000, 0.99526066350710896000, 0.99528301886792447000, 0.99530516431924887000, 0.99532710280373837000, 0.99534883720930234000, 0.99537037037037035000, 0.99539170506912444000, 0.99541284403669728000, 0.99543378995433796000, 0.99545454545454548000, 0.99547511312217196000, 0.99549549549549554000, 0.99551569506726456000, 0.99553571428571430000, 0.99555555555555553000, 0.99557522123893805000, 0.99559471365638763000, 0.99561403508771928000, 0.99563318777292575000, 0.99565217391304350000, 0.99567099567099571000, 0.99568965517241381000, 0.99570815450643779000, 0.99572649572649574000, 0.99574468085106382000, 0.99576271186440679000, 0.99578059071729963000, 0.99579831932773111000, 0.99581589958159000000, 0.99583333333333335000, 0.99585062240663902000, 0.99586776859504134000, 0.99588477366255146000, 0.99590163934426235000, 0.99591836734693873000, 0.99593495934959353000, 0.99595141700404854000, 0.99596774193548387000, 0.99598393574297184000, 0.99600000000000000000, 0.99601593625498008000, 0.99603174603174605000, 0.99604743083003955000, 0.99606299212598426000, 0.99607843137254903000, 0.99609375000000000000, 0.99610894941634243000, 0.99612403100775193000, 0.99613899613899615000, 0.99615384615384617000, 0.99616858237547889000, 0.99618320610687028000, 0.99619771863117867000, 0.99621212121212122000, 0.99622641509433962000, 0.99624060150375937000, 0.99625468164794007000, 0.99626865671641796000, 0.99628252788104088000, 0.99629629629629635000, 0.99630996309963105000, 0.99632352941176472000, 0.99633699633699635000, 0.99635036496350360000, 0.99636363636363634000, 0.99637681159420288000, 0.99638989169675085000, 0.99640287769784175000, 0.99641577060931896000, 0.99642857142857144000, 0.99644128113879005000, 0.99645390070921991000, 0.99646643109540634000, 0.99647887323943662000, 0.99649122807017543000, 0.99650349650349646000, 0.99651567944250874000, 0.99652777777777779000, 0.99653979238754320000, 0.99655172413793103000, 0.99656357388316152000, 0.99657534246575341000, 0.99658703071672350000, 0.99659863945578231000, 0.99661016949152548000, 0.99662162162162160000, 0.99663299663299665000, 0.99664429530201337000, 0.99665551839464883000, 0.99666666666666670000, 0.99667774086378735000, 0.99668874172185429000, 0.99669966996699666000, 0.99671052631578949000, 0.99672131147540988000, 0.99673202614379086000, 0.99674267100977199000, 0.99675324675324672000, 0.99676375404530748000, 0.99677419354838714000, 0.99678456591639875000, 0.99679487179487181000, 0.99680511182108622000, 0.99681528662420382000, 0.99682539682539684000, 0.99683544303797467000, 0.99684542586750791000, 0.99685534591194969000, 0.99686520376175547000, 0.99687499999999996000, 0.99688473520249221000, 0.99689440993788825000, 0.99690402476780182000, 0.99691358024691357000, 0.99692307692307691000, 0.99693251533742333000, 0.99694189602446481000, 0.99695121951219512000, 0.99696048632218848000, 0.99696969696969695000, 0.99697885196374625000, 0.99698795180722888000, 0.99699699699699695000, 0.99700598802395213000, 0.99701492537313430000, 0.99702380952380953000, 0.99703264094955490000, 0.99704142011834318000, 0.99705014749262533000, 0.99705882352941178000, 0.99706744868035191000, 0.99707602339181289000, 0.99708454810495628000, 0.99709302325581395000, 0.99710144927536237000, 0.99710982658959535000, 0.99711815561959649000, 0.99712643678160917000, 0.99713467048710602000, 0.99714285714285711000, 0.99715099715099720000, 0.99715909090909094000, 0.99716713881019825000, 0.99717514124293782000, 0.99718309859154930000, 0.99719101123595510000, 0.99719887955182074000, 0.99720670391061450000, 0.99721448467966578000, 0.99722222222222223000, 0.99722991689750695000, 0.99723756906077343000, 0.99724517906336085000, 0.99725274725274726000, 0.99726027397260275000, 0.99726775956284153000, 0.99727520435967298000, 0.99728260869565222000, 0.99728997289972898000, 0.99729729729729732000, 0.99730458221024254000, 0.99731182795698925000, 0.99731903485254692000, 0.99732620320855614000, 0.99733333333333329000, 0.99734042553191493000, 0.99734748010610075000, 0.99735449735449733000, 0.99736147757255933000, 0.99736842105263157000, 0.99737532808398954000, 0.99738219895287961000, 0.99738903394255873000, 0.99739583333333337000, 0.99740259740259740000, 0.99740932642487046000, 0.99741602067183466000, 0.99742268041237114000, 0.99742930591259638000, 0.99743589743589745000, 0.99744245524296671000, 0.99744897959183676000, 0.99745547073791352000, 0.99746192893401020000, 0.99746835443037973000, 0.99747474747474751000, 0.99748110831234260000, 0.99748743718592969000, 0.99749373433583965000, 0.99750000000000005000, 0.99750623441396513000, 0.99751243781094523000, 0.99751861042183620000, 0.99752475247524752000, 0.99753086419753090000, 0.99753694581280783000, 0.99754299754299758000, 0.99754901960784315000, 0.99755501222493892000, 0.99756097560975610000, 0.99756690997566910000, 0.99757281553398058000, 0.99757869249394671000, 0.99758454106280192000, 0.99759036144578317000, 0.99759615384615385000, 0.99760191846522783000, 0.99760765550239239000, 0.99761336515513122000, 0.99761904761904763000, 0.99762470308788598000, 0.99763033175355453000, 0.99763593380614657000, 0.99764150943396224000, 0.99764705882352944000, 0.99765258215962438000, 0.99765807962529274000, 0.99766355140186913000, 0.99766899766899764000, 0.99767441860465111000, 0.99767981438515085000, 0.99768518518518523000, 0.99769053117782913000, 0.99769585253456217000, 0.99770114942528731000, 0.99770642201834858000, 0.99771167048054921000, 0.99771689497716898000, 0.99772209567198178000, 0.99772727272727268000, 0.99773242630385484000, 0.99773755656108598000, 0.99774266365688491000, 0.99774774774774777000, 0.99775280898876406000, 0.99775784753363228000, 0.99776286353467558000, 0.99776785714285710000, 0.99777282850779514000, 0.99777777777777776000, 0.99778270509977829000, 0.99778761061946908000, 0.99779249448123619000, 0.99779735682819382000, 0.99780219780219781000, 0.99780701754385970000, 0.99781181619256021000, 0.99781659388646293000, 0.99782135076252720000, 0.99782608695652175000, 0.99783080260303691000, 0.99783549783549785000, 0.99784017278617709000, 0.99784482758620685000, 0.99784946236559136000, 0.99785407725321884000, 0.99785867237687365000, 0.99786324786324787000, 0.99786780383795304000, 0.99787234042553197000, 0.99787685774946921000, 0.99788135593220340000, 0.99788583509513740000, 0.99789029535864981000, 0.99789473684210528000, 0.99789915966386555000, 0.99790356394129975000, 0.99790794979079500000, 0.99791231732776620000, 0.99791666666666667000, 0.99792099792099798000, 0.99792531120331951000, 0.99792960662525876000, 0.99793388429752061000, 0.99793814432989691000, 0.99794238683127567000, 0.99794661190965095000, 0.99795081967213117000, 0.99795501022494892000, 0.99795918367346936000, 0.99796334012219956000, 0.99796747967479671000, 0.99797160243407712000, 0.99797570850202433000, 0.99797979797979797000, 0.99798387096774188000, 0.99798792756539234000, 0.99799196787148592000, 0.99799599198396793000, 0.99800000000000000000, 0.99800399201596801000, 0.99800796812749004000, 0.99801192842942343000, 0.99801587301587302000, 0.99801980198019802000, 0.99802371541501977000, 0.99802761341222879000, 0.99803149606299213000, 0.99803536345776034000, 0.99803921568627452000, 0.99804305283757344000, 0.99804687500000000000, 0.99805068226120852000, 0.99805447470817121000, 0.99805825242718449000, 0.99806201550387597000, 0.99806576402321079000, 0.99806949806949807000, 0.99807321772639690000, 0.99807692307692308000, 0.99808061420345484000, 0.99808429118773945000, 0.99808795411089868000, 0.99809160305343514000, 0.99809523809523815000, 0.99809885931558939000, 0.99810246679316883000, 0.99810606060606055000, 0.99810964083175802000, 0.99811320754716981000, 0.99811676082862522000, 0.99812030075187974000, 0.99812382739212002000, 0.99812734082397003000, 0.99813084112149530000, 0.99813432835820892000, 0.99813780260707630000, 0.99814126394052050000, 0.99814471243042668000, 0.99814814814814812000, 0.99815157116451014000, 0.99815498154981552000, 0.99815837937384899000, 0.99816176470588236000, 0.99816513761467895000, 0.99816849816849818000, 0.99817184643510060000, 0.99817518248175185000, 0.99817850637522765000, 0.99818181818181817000, 0.99818511796733211000, 0.99818840579710144000, 0.99819168173598549000, 0.99819494584837543000, 0.99819819819819822000, 0.99820143884892087000, 0.99820466786355477000, 0.99820788530465954000, 0.99821109123434704000, 0.99821428571428572000, 0.99821746880570406000, 0.99822064056939497000, 0.99822380106571940000, 0.99822695035460995000, 0.99823008849557526000, 0.99823321554770317000, 0.99823633156966496000, 0.99823943661971826000, 0.99824253075571179000, 0.99824561403508771000, 0.99824868651488619000, 0.99825174825174823000, 0.99825479930191974000, 0.99825783972125437000, 0.99826086956521742000, 0.99826388888888884000, 0.99826689774696709000, 0.99826989619377160000, 0.99827288428324701000, 0.99827586206896557000, 0.99827882960413084000, 0.99828178694158076000, 0.99828473413379071000, 0.99828767123287676000, 0.99829059829059830000, 0.99829351535836175000, 0.99829642248722317000, 0.99829931972789121000, 0.99830220713073003000, 0.99830508474576274000, 0.99830795262267347000, 0.99831081081081086000, 0.99831365935919059000, 0.99831649831649827000, 0.99831932773109244000, 0.99832214765100669000, 0.99832495812395305000, 0.99832775919732442000, 0.99833055091819700000, 0.99833333333333329000, 0.99833610648918469000, 0.99833887043189373000, 0.99834162520729686000, 0.99834437086092720000, 0.99834710743801658000, 0.99834983498349839000, 0.99835255354200991000, 0.99835526315789469000, 0.99835796387520526000, 0.99836065573770494000, 0.99836333878887074000, 0.99836601307189543000, 0.99836867862969003000, 0.99837133550488599000, 0.99837398373983743000, 0.99837662337662336000, 0.99837925445705022000, 0.99838187702265369000, 0.99838449111470118000, 0.99838709677419357000, 0.99838969404186795000, 0.99839228295819937000, 0.99839486356340290000, 0.99839743589743590000, 0.99839999999999995000, 0.99840255591054317000, 0.99840510366826152000, 0.99840764331210186000, 0.99841017488076311000, 0.99841269841269842000, 0.99841521394611732000, 0.99841772151898733000, 0.99842022116903628000, 0.99842271293375395000, 0.99842519685039366000, 0.99842767295597479000, 0.99843014128728413000, 0.99843260188087779000, 0.99843505477308292000, 0.99843749999999998000, 0.99843993759750393000, 0.99844236760124616000, 0.99844479004665632000, 0.99844720496894412000, 0.99844961240310082000, 0.99845201238390091000, 0.99845440494590421000, 0.99845679012345678000, 0.99845916795069334000, 0.99846153846153851000, 0.99846390168970811000, 0.99846625766871167000, 0.99846860643185298000, 0.99847094801223246000, 0.99847328244274813000, 0.99847560975609762000, 0.99847792998477924000, 0.99848024316109418000, 0.99848254931714719000, 0.99848484848484853000, 0.99848714069591527000, 0.99848942598187307000, 0.99849170437405732000, 0.99849397590361444000, 0.99849624060150377000, 0.99849849849849848000, 0.99850074962518742000, 0.99850299401197606000, 0.99850523168908822000, 0.99850746268656720000, 0.99850968703427723000, 0.99851190476190477000, 0.99851411589895989000, 0.99851632047477745000, 0.99851851851851847000, 0.99852071005917165000, 0.99852289512555392000, 0.99852507374631272000, 0.99852724594992637000, 0.99852941176470589000, 0.99853157121879588000, 0.99853372434017595000, 0.99853587115666176000, 0.99853801169590639000, 0.99854014598540142000, 0.99854227405247808000, 0.99854439592430855000, 0.99854651162790697000, 0.99854862119013066000, 0.99855072463768113000, 0.99855282199710560000, 0.99855491329479773000, 0.99855699855699853000, 0.99855907780979825000, 0.99856115107913668000, 0.99856321839080464000, 0.99856527977044474000, 0.99856733524355301000, 0.99856938483547930000, 0.99857142857142855000, 0.99857346647646217000, 0.99857549857549854000, 0.99857752489331442000, 0.99857954545454541000, 0.99858156028368794000, 0.99858356940509918000, 0.99858557284299854000, 0.99858757062146897000, 0.99858956276445698000, 0.99859154929577465000, 0.99859353023909991000, 0.99859550561797750000, 0.99859747545582045000, 0.99859943977591037000, 0.99860139860139863000, 0.99860335195530725000, 0.99860529986053004000, 0.99860724233983289000, 0.99860917941585536000, 0.99861111111111112000, 0.99861303744798890000, 0.99861495844875348000, 0.99861687413554634000, 0.99861878453038677000, 0.99862068965517237000, 0.99862258953168048000, 0.99862448418156813000, 0.99862637362637363000, 0.99862825788751719000, 0.99863013698630132000, 0.99863201094391241000, 0.99863387978142082000, 0.99863574351978168000, 0.99863760217983655000, 0.99863945578231295000, 0.99864130434782605000, 0.99864314789687925000, 0.99864498644986455000, 0.99864682002706362000, 0.99864864864864866000, 0.99865047233468285000, 0.99865229110512133000, 0.99865410497981155000, 0.99865591397849462000, 0.99865771812080539000, 0.99865951742627346000, 0.99866131191432395000, 0.99866310160427807000, 0.99866488651535379000, 0.99866666666666670000, 0.99866844207723038000, 0.99867021276595747000, 0.99867197875166003000, 0.99867374005305043000, 0.99867549668874167000, 0.99867724867724872000, 0.99867899603698806000, 0.99868073878627972000, 0.99868247694334655000, 0.99868421052631584000, 0.99868593955321949000, 0.99868766404199472000, 0.99868938401048490000, 0.99869109947643975000, 0.99869281045751634000, 0.99869451697127942000, 0.99869621903520212000, 0.99869791666666663000, 0.99869960988296491000, 0.99870129870129876000, 0.99870298313878081000, 0.99870466321243523000, 0.99870633893919791000, 0.99870801033591727000, 0.99870967741935479000, 0.99871134020618557000, 0.99871299871299868000, 0.99871465295629824000, 0.99871630295250324000, 0.99871794871794872000, 0.99871959026888601000, 0.99872122762148341000, 0.99872286079182626000, 0.99872448979591832000, 0.99872611464968153000, 0.99872773536895676000, 0.99872935196950441000, 0.99873096446700504000, 0.99873257287705952000, 0.99873417721518987000, 0.99873577749683939000, 0.99873737373737370000, 0.99873896595208067000, 0.99874055415617125000, 0.99874213836477987000, 0.99874371859296485000, 0.99874529485570895000, 0.99874686716791983000, 0.99874843554443049000, 0.99875000000000003000, 0.99875156054931336000, 0.99875311720698257000, 0.99875466998754669000, 0.99875621890547261000, 0.99875776397515525000, 0.99875930521091816000, 0.99876084262701359000, 0.99876237623762376000, 0.99876390605686027000, 0.99876543209876545000, 0.99876695437731200000, 0.99876847290640391000, 0.99876998769987702000, 0.99877149877149873000, 0.99877300613496933000, 0.99877450980392157000, 0.99877600979192172000, 0.99877750611246940000, 0.99877899877899878000, 0.99878048780487805000, 0.99878197320341044000, 0.99878345498783450000, 0.99878493317132444000, 0.99878640776699024000, 0.99878787878787878000, 0.99878934624697335000, 0.99879081015719473000, 0.99879227053140096000, 0.99879372738238847000, 0.99879518072289153000, 0.99879663056558365000, 0.99879807692307687000, 0.99879951980792314000, 0.99880095923261392000, 0.99880239520958081000, 0.99880382775119614000, 0.99880525686977295000, 0.99880668257756566000, 0.99880810488676997000, 0.99880952380952381000, 0.99881093935790721000, 0.99881235154394299000, 0.99881376037959668000, 0.99881516587677721000, 0.99881656804733732000, 0.99881796690307334000, 0.99881936245572611000, 0.99882075471698117000, 0.99882214369846878000, 0.99882352941176467000, 0.99882491186839018000, 0.99882629107981225000, 0.99882766705744430000, 0.99882903981264637000, 0.99883040935672518000, 0.99883177570093462000, 0.99883313885647607000, 0.99883449883449882000, 0.99883585564610011000, 0.99883720930232556000, 0.99883855981416958000, 0.99883990719257543000, 0.99884125144843572000, 0.99884259259259256000, 0.99884393063583810000, 0.99884526558891451000, 0.99884659746251436000, 0.99884792626728114000, 0.99884925201380903000, 0.99885057471264371000, 0.99885189437428246000, 0.99885321100917435000, 0.99885452462772051000, 0.99885583524027455000, 0.99885714285714289000, 0.99885844748858443000, 0.99885974914481190000, 0.99886104783599083000, 0.99886234357224113000, 0.99886363636363640000, 0.99886492622020429000, 0.99886621315192747000, 0.99886749716874290000, 0.99886877828054299000, 0.99887005649717520000, 0.99887133182844245000, 0.99887260428410374000, 0.99887387387387383000, 0.99887514060742411000, 0.99887640449438198000, 0.99887766554433222000, 0.99887892376681620000, 0.99888017917133254000, 0.99888143176733779000, 0.99888268156424576000, 0.99888392857142860000, 0.99888517279821631000, 0.99888641425389757000, 0.99888765294771964000, 0.99888888888888894000, 0.99889012208657046000, 0.99889135254988914000, 0.99889258028792915000, 0.99889380530973448000, 0.99889502762430937000, 0.99889624724061810000, 0.99889746416758540000, 0.99889867841409696000, 0.99889988998899892000, 0.99890109890109891000, 0.99890230515916578000, 0.99890350877192979000, 0.99890470974808321000, 0.99890590809628010000, 0.99890710382513659000, 0.99890829694323147000, 0.99890948745910579000, 0.99891067538126366000, 0.99891186071817195000, 0.99891304347826082000, 0.99891422366992400000, 0.99891540130151846000, 0.99891657638136511000, 0.99891774891774887000, 0.99891891891891893000, 0.99892008639308860000, 0.99892125134843579000, 0.99892241379310343000, 0.99892357373519913000, 0.99892473118279568000, 0.99892588614393130000, 0.99892703862660948000, 0.99892818863879962000, 0.99892933618843682000, 0.99893048128342243000, 0.99893162393162394000, 0.99893276414087517000, 0.99893390191897657000, 0.99893503727369537000, 0.99893617021276593000, 0.99893730074388953000, 0.99893842887473461000, 0.99893955461293749000, 0.99894067796610164000, 0.99894179894179891000, 0.99894291754756870000, 0.99894403379091867000, 0.99894514767932485000, 0.99894625922023184000, 0.99894736842105258000, 0.99894847528916930000, 0.99894957983193278000, 0.99895068205666315000, 0.99895178197064993000, 0.99895287958115186000, 0.99895397489539750000, 0.99895506792058519000, 0.99895615866388310000, 0.99895724713242962000, 0.99895833333333328000, 0.99895941727367321000, 0.99896049896049899000, 0.99896157840083077000, 0.99896265560165975000, 0.99896373056994814000, 0.99896480331262938000, 0.99896587383660806000, 0.99896694214876036000, 0.99896800825593390000, 0.99896907216494846000, 0.99897013388259526000, 0.99897119341563789000, 0.99897225077081198000, 0.99897330595482547000, 0.99897435897435893000, 0.99897540983606559000, 0.99897645854657113000, 0.99897750511247441000, 0.99897854954034726000, 0.99897959183673468000, 0.99898063200815490000, 0.99898167006109984000, 0.99898270600203454000, 0.99898373983739841000, 0.99898477157360410000, 0.99898580121703850000, 0.99898682877406286000, 0.99898785425101211000, 0.99898887765419619000, 0.99898989898989898000, 0.99899091826437947000, 0.99899193548387100000, 0.99899295065458205000, 0.99899396378269623000, 0.99899497487437183000, 0.99899598393574296000, 0.99899699097291872000, 0.99899799599198402000, 0.99899899899899902000, 0.99900000000000000000, 0.99900099900099903000, 0.99900199600798401000, 0.99900299102691925000, 0.99900398406374502000, 0.99900497512437814000, 0.99900596421471177000, 0.99900695134061568000, 0.99900793650793651000, 0.99900891972249750000, 0.99900990099009901000, 0.99901088031651830000, 0.99901185770750989000, 0.99901283316880551000, 0.99901380670611439000, 0.99901477832512320000, 0.99901574803149606000, 0.99901671583087515000, 0.99901768172888017000, 0.99901864573110888000, 0.99901960784313726000, 0.99902056807051909000, 0.99902152641878672000, 0.99902248289345064000}; + +static void +gauss_legendre_tbl(int n, double* x, double* w, double eps) +{ + double x0, x1, dx; /* Abscissas */ + double w0, w1, dw; /* Weights */ + double P0, P_1, P_2; /* Legendre polynomial values */ + double dpdx; /* Legendre polynomial derivative */ + int i, j, k, m; /* Iterators */ + double t0, t1, t2, t3; + + m = (n + 1) >> 1; + + t0 = (1.0 - (1.0 - 1.0 / (double)n) / (8.0 * (double)n * (double)n)); + t1 = 1.0 / (4.0 * (double)n + 2.0); + + for (i = 1; i <= m; i++) + { + /* Find i-th root of Legendre polynomial */ + + /* Initial guess */ + const double pi_to_many_places + = 3.1415926535897932384626433832795028841971693993751; + x0 = cos(pi_to_many_places * (double)((i << 2) - 1) * t1) * t0; + + /* Newton iterations, at least one */ + j = 0; + dx = dw = DBL_MAX; + + do + { + /* Compute Legendre polynomial value at x0 */ + P_1 = 1.0; + P0 = x0; + + /* Optimized version using lookup tables */ + + if (n < 1024) + { + /* Use fast algorithm for small n*/ + for (k = 2; k <= n; k++) + { + P_2 = P_1; + P_1 = P0; + t2 = x0 * P_1; + + P0 = t2 + ltbl[k] * (t2 - P_2); + + } + + } + else + { + + /* Use general algorithm for other n */ + for (k = 2; k < 1024; k++) + { + P_2 = P_1; + P_1 = P0; + t2 = x0 * P_1; + + P0 = t2 + ltbl[k] * (t2 - P_2); + } + + for (k = 1024; k <= n; k++) + { + P_2 = P_1; + P_1 = P0; + t2 = x0 * P_1; + t3 = (double)(k - 1) / (double)k; + + P0 = t2 + t3 * (t2 - P_2); + } + } + + /* Compute Legendre polynomial derivative at x0 */ + dpdx = ((x0 * P0 - P_1) * (double)n) / (x0 * x0 - 1.0); + + /* Newton step */ + x1 = x0 - P0 / dpdx; + + /* Weight computing */ + w1 = 2.0 / ((1.0 - x1 * x1) * dpdx * dpdx); + + /* Compute weight w0 on first iteration, needed for dw */ + if (j == 0) w0 = 2.0 / ((1.0 - x0 * x0) * dpdx * dpdx); + + dx = x0 - x1; + + dw = w0 - w1; + + x0 = x1; + + w0 = w1; + + j++; + } + while ((fabs(dx) > eps || fabs(dw) > eps) && j < 100); + + x[(m-1)-(i-1)] = x1; + + w[(m-1)-(i-1)] = w1; + } + + return; +} + diff --git a/gsl-2.5/integration/glfixed.lo b/gsl-2.5/integration/glfixed.lo new file mode 100644 index 00000000..d0cd6579 --- /dev/null +++ b/gsl-2.5/integration/glfixed.lo @@ -0,0 +1,12 @@ +# glfixed.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/glfixed.o' + +# Name of the non-PIC object +non_pic_object='glfixed.o' + diff --git a/gsl-2.5/integration/gsl_integration.h b/gsl-2.5/integration/gsl_integration.h new file mode 100644 index 00000000..b0c1b028 --- /dev/null +++ b/gsl-2.5/integration/gsl_integration.h @@ -0,0 +1,390 @@ +/* integration/gsl_integration.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_INTEGRATION_H__ +#define __GSL_INTEGRATION_H__ +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +/* Workspace for adaptive integrators */ + +typedef struct + { + size_t limit; + size_t size; + size_t nrmax; + size_t i; + size_t maximum_level; + double *alist; + double *blist; + double *rlist; + double *elist; + size_t *order; + size_t *level; + } +gsl_integration_workspace; + +gsl_integration_workspace * + gsl_integration_workspace_alloc (const size_t n); + +void + gsl_integration_workspace_free (gsl_integration_workspace * w); + + +/* Workspace for QAWS integrator */ + +typedef struct +{ + double alpha; + double beta; + int mu; + int nu; + double ri[25]; + double rj[25]; + double rg[25]; + double rh[25]; +} +gsl_integration_qaws_table; + +gsl_integration_qaws_table * +gsl_integration_qaws_table_alloc (double alpha, double beta, int mu, int nu); + +int +gsl_integration_qaws_table_set (gsl_integration_qaws_table * t, + double alpha, double beta, int mu, int nu); + +void +gsl_integration_qaws_table_free (gsl_integration_qaws_table * t); + +/* Workspace for QAWO integrator */ + +enum gsl_integration_qawo_enum { GSL_INTEG_COSINE, GSL_INTEG_SINE }; + +typedef struct +{ + size_t n; + double omega; + double L; + double par; + enum gsl_integration_qawo_enum sine; + double *chebmo; +} +gsl_integration_qawo_table; + +gsl_integration_qawo_table * +gsl_integration_qawo_table_alloc (double omega, double L, + enum gsl_integration_qawo_enum sine, + size_t n); + +int +gsl_integration_qawo_table_set (gsl_integration_qawo_table * t, + double omega, double L, + enum gsl_integration_qawo_enum sine); + +int +gsl_integration_qawo_table_set_length (gsl_integration_qawo_table * t, + double L); + +void +gsl_integration_qawo_table_free (gsl_integration_qawo_table * t); + + +/* Definition of an integration rule */ + +typedef void gsl_integration_rule (const gsl_function * f, + double a, double b, + double *result, double *abserr, + double *defabs, double *resabs); + +void gsl_integration_qk15 (const gsl_function * f, double a, double b, + double *result, double *abserr, + double *resabs, double *resasc); + +void gsl_integration_qk21 (const gsl_function * f, double a, double b, + double *result, double *abserr, + double *resabs, double *resasc); + +void gsl_integration_qk31 (const gsl_function * f, double a, double b, + double *result, double *abserr, + double *resabs, double *resasc); + +void gsl_integration_qk41 (const gsl_function * f, double a, double b, + double *result, double *abserr, + double *resabs, double *resasc); + +void gsl_integration_qk51 (const gsl_function * f, double a, double b, + double *result, double *abserr, + double *resabs, double *resasc); + +void gsl_integration_qk61 (const gsl_function * f, double a, double b, + double *result, double *abserr, + double *resabs, double *resasc); + +void gsl_integration_qcheb (gsl_function * f, double a, double b, + double *cheb12, double *cheb24); + +/* The low-level integration rules in QUADPACK are identified by small + integers (1-6). We'll use symbolic constants to refer to them. */ + +enum + { + GSL_INTEG_GAUSS15 = 1, /* 15 point Gauss-Kronrod rule */ + GSL_INTEG_GAUSS21 = 2, /* 21 point Gauss-Kronrod rule */ + GSL_INTEG_GAUSS31 = 3, /* 31 point Gauss-Kronrod rule */ + GSL_INTEG_GAUSS41 = 4, /* 41 point Gauss-Kronrod rule */ + GSL_INTEG_GAUSS51 = 5, /* 51 point Gauss-Kronrod rule */ + GSL_INTEG_GAUSS61 = 6 /* 61 point Gauss-Kronrod rule */ + }; + +void +gsl_integration_qk (const int n, const double xgk[], + const double wg[], const double wgk[], + double fv1[], double fv2[], + const gsl_function *f, double a, double b, + double * result, double * abserr, + double * resabs, double * resasc); + + +int gsl_integration_qng (const gsl_function * f, + double a, double b, + double epsabs, double epsrel, + double *result, double *abserr, + size_t * neval); + +int gsl_integration_qag (const gsl_function * f, + double a, double b, + double epsabs, double epsrel, size_t limit, + int key, + gsl_integration_workspace * workspace, + double *result, double *abserr); + +int gsl_integration_qagi (gsl_function * f, + double epsabs, double epsrel, size_t limit, + gsl_integration_workspace * workspace, + double *result, double *abserr); + +int gsl_integration_qagiu (gsl_function * f, + double a, + double epsabs, double epsrel, size_t limit, + gsl_integration_workspace * workspace, + double *result, double *abserr); + +int gsl_integration_qagil (gsl_function * f, + double b, + double epsabs, double epsrel, size_t limit, + gsl_integration_workspace * workspace, + double *result, double *abserr); + + +int gsl_integration_qags (const gsl_function * f, + double a, double b, + double epsabs, double epsrel, size_t limit, + gsl_integration_workspace * workspace, + double *result, double *abserr); + +int gsl_integration_qagp (const gsl_function * f, + double *pts, size_t npts, + double epsabs, double epsrel, size_t limit, + gsl_integration_workspace * workspace, + double *result, double *abserr); + +int gsl_integration_qawc (gsl_function *f, + const double a, const double b, const double c, + const double epsabs, const double epsrel, const size_t limit, + gsl_integration_workspace * workspace, + double * result, double * abserr); + +int gsl_integration_qaws (gsl_function * f, + const double a, const double b, + gsl_integration_qaws_table * t, + const double epsabs, const double epsrel, + const size_t limit, + gsl_integration_workspace * workspace, + double *result, double *abserr); + +int gsl_integration_qawo (gsl_function * f, + const double a, + const double epsabs, const double epsrel, + const size_t limit, + gsl_integration_workspace * workspace, + gsl_integration_qawo_table * wf, + double *result, double *abserr); + +int gsl_integration_qawf (gsl_function * f, + const double a, + const double epsabs, + const size_t limit, + gsl_integration_workspace * workspace, + gsl_integration_workspace * cycle_workspace, + gsl_integration_qawo_table * wf, + double *result, double *abserr); + +/* Workspace for fixed-order Gauss-Legendre integration */ + +typedef struct + { + size_t n; /* number of points */ + double *x; /* Gauss abscissae/points */ + double *w; /* Gauss weights for each abscissae */ + int precomputed; /* high precision abscissae/weights precomputed? */ + } +gsl_integration_glfixed_table; + + +gsl_integration_glfixed_table * gsl_integration_glfixed_table_alloc (size_t n); + +void gsl_integration_glfixed_table_free (gsl_integration_glfixed_table * t); + +/* Routine for fixed-order Gauss-Legendre integration */ + +double gsl_integration_glfixed (const gsl_function *f, + double a, + double b, + const gsl_integration_glfixed_table * t); + +/* Routine to retrieve the i-th Gauss-Legendre point and weight from t */ + +int gsl_integration_glfixed_point (double a, + double b, + size_t i, + double *xi, + double *wi, + const gsl_integration_glfixed_table * t); + + +/* Cquad integration - Pedro Gonnet */ + +/* Data of a single interval */ +typedef struct +{ + double a, b; + double c[64]; + double fx[33]; + double igral, err; + int depth, rdepth, ndiv; +} gsl_integration_cquad_ival; + + +/* The workspace is just a collection of intervals */ +typedef struct +{ + size_t size; + gsl_integration_cquad_ival *ivals; + size_t *heap; +} gsl_integration_cquad_workspace; + +gsl_integration_cquad_workspace * +gsl_integration_cquad_workspace_alloc (const size_t n); + +void +gsl_integration_cquad_workspace_free (gsl_integration_cquad_workspace * w); + +int +gsl_integration_cquad (const gsl_function * f, double a, double b, + double epsabs, double epsrel, + gsl_integration_cquad_workspace * ws, + double *result, double *abserr, size_t * nevals); + +/* Romberg integration workspace and routines */ + +typedef struct +{ + size_t n; /* maximum number of steps */ + double *work1; /* workspace for a row of R matrix, size n */ + double *work2; /* workspace for a row of R matrix, size n */ +} gsl_integration_romberg_workspace; + +gsl_integration_romberg_workspace *gsl_integration_romberg_alloc(const size_t n); +void gsl_integration_romberg_free(gsl_integration_romberg_workspace * w); +int gsl_integration_romberg(const gsl_function * f, const double a, const double b, + const double epsabs, const double epsrel, double * result, + size_t * neval, gsl_integration_romberg_workspace * w); + +/* IQPACK related structures and routines */ + +typedef struct +{ + double alpha; + double beta; + double a; + double b; + double zemu; + double shft; + double slp; + double al; + double be; +} gsl_integration_fixed_params; + +typedef struct +{ + int (*check)(const size_t n, const gsl_integration_fixed_params * params); + int (*init)(const size_t n, double * diag, double * subdiag, gsl_integration_fixed_params * params); +} gsl_integration_fixed_type; + +typedef struct +{ + size_t n; /* number of nodes/weights */ + double *weights; /* quadrature weights */ + double *x; /* quadrature nodes */ + double *diag; /* diagonal of Jacobi matrix */ + double *subdiag; /* subdiagonal of Jacobi matrix */ + const gsl_integration_fixed_type * type; +} gsl_integration_fixed_workspace; + +/* IQPACK integral types */ +GSL_VAR const gsl_integration_fixed_type * gsl_integration_fixed_legendre; +GSL_VAR const gsl_integration_fixed_type * gsl_integration_fixed_chebyshev; +GSL_VAR const gsl_integration_fixed_type * gsl_integration_fixed_gegenbauer; +GSL_VAR const gsl_integration_fixed_type * gsl_integration_fixed_jacobi; +GSL_VAR const gsl_integration_fixed_type * gsl_integration_fixed_laguerre; +GSL_VAR const gsl_integration_fixed_type * gsl_integration_fixed_hermite; +GSL_VAR const gsl_integration_fixed_type * gsl_integration_fixed_exponential; +GSL_VAR const gsl_integration_fixed_type * gsl_integration_fixed_rational; +GSL_VAR const gsl_integration_fixed_type * gsl_integration_fixed_chebyshev2; + +gsl_integration_fixed_workspace * +gsl_integration_fixed_alloc(const gsl_integration_fixed_type * type, const size_t n, + const double a, const double b, const double alpha, const double beta); + +void gsl_integration_fixed_free(gsl_integration_fixed_workspace * w); + +size_t gsl_integration_fixed_n(const gsl_integration_fixed_workspace * w); + +double *gsl_integration_fixed_nodes(const gsl_integration_fixed_workspace * w); + +double *gsl_integration_fixed_weights(const gsl_integration_fixed_workspace * w); + +int gsl_integration_fixed(const gsl_function * func, double * result, + const gsl_integration_fixed_workspace * w); + +__END_DECLS + +#endif /* __GSL_INTEGRATION_H__ */ diff --git a/gsl-2.5/integration/hermite.c b/gsl-2.5/integration/hermite.c new file mode 100644 index 00000000..2441087a --- /dev/null +++ b/gsl-2.5/integration/hermite.c @@ -0,0 +1,78 @@ +/* integration/hermite.c + * + * Copyright (C) 2017 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* + * The code in this module is based on IQPACK, specifically the LGPL + * implementation found in HERMITE_RULE: + * https://people.sc.fsu.edu/~jburkardt/c_src/hermite_rule/hermite_rule.html + */ + +#include +#include +#include +#include +#include + +static int +hermite_check(const size_t n, const gsl_integration_fixed_params * params) +{ + (void) n; + + if (params->b <= 0.0) + { + GSL_ERROR("b must be positive", GSL_EDOM); + } + else if (params->alpha <= -1.0) + { + GSL_ERROR("alpha must be > -1", GSL_EDOM); + } + else + { + return GSL_SUCCESS; + } +} + +static int +hermite_init(const size_t n, double * diag, double * subdiag, gsl_integration_fixed_params * params) +{ + size_t i; + + /* construct the diagonal and subdiagonal elements of Jacobi matrix */ + for (i = 1; i <= n; i++) + { + diag[i - 1] = 0.0; + subdiag[i - 1] = sqrt (0.5 * (i + params->alpha * (i % 2))); + } + + params->zemu = gsl_sf_gamma(0.5 * (params->alpha + 1.0)); + params->shft = params->a; + params->slp = 1.0 / sqrt(params->b); + params->al = params->alpha; + params->be = 0.0; + + return GSL_SUCCESS; +} + +static const gsl_integration_fixed_type hermite_type = +{ + hermite_check, + hermite_init +}; + +const gsl_integration_fixed_type *gsl_integration_fixed_hermite = &hermite_type; diff --git a/gsl-2.5/integration/hermite.lo b/gsl-2.5/integration/hermite.lo new file mode 100644 index 00000000..f1f3f9e0 --- /dev/null +++ b/gsl-2.5/integration/hermite.lo @@ -0,0 +1,12 @@ +# hermite.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/hermite.o' + +# Name of the non-PIC object +non_pic_object='hermite.o' + diff --git a/gsl-2.5/integration/initialise.c b/gsl-2.5/integration/initialise.c new file mode 100644 index 00000000..45e25190 --- /dev/null +++ b/gsl-2.5/integration/initialise.c @@ -0,0 +1,37 @@ +/* integration/initialise.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +static inline +void initialise (gsl_integration_workspace * workspace, double a, double b); + +static inline +void initialise (gsl_integration_workspace * workspace, double a, double b) +{ + workspace->size = 0; + workspace->nrmax = 0; + workspace->i = 0; + workspace->alist[0] = a; + workspace->blist[0] = b; + workspace->rlist[0] = 0.0; + workspace->elist[0] = 0.0; + workspace->order[0] = 0; + workspace->level[0] = 0; + + workspace->maximum_level = 0; +} diff --git a/gsl-2.5/integration/jacobi.c b/gsl-2.5/integration/jacobi.c new file mode 100644 index 00000000..0c0637b0 --- /dev/null +++ b/gsl-2.5/integration/jacobi.c @@ -0,0 +1,87 @@ +/* integration/jacobi.c + * + * Copyright (C) 2017 Konrad Griessinger, Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* + * The code in this module is based on IQPACK, specifically the LGPL + * implementation found in HERMITE_RULE: + * https://people.sc.fsu.edu/~jburkardt/c_src/hermite_rule/hermite_rule.html + */ + +#include +#include +#include +#include +#include + +static int +jacobi_check(const size_t n, const gsl_integration_fixed_params * params) +{ + (void) n; + + if (fabs(params->b - params->a) <= GSL_DBL_EPSILON) + { + GSL_ERROR("|b - a| too small", GSL_EDOM); + } + else if (params->a >= params->b) + { + GSL_ERROR("lower integration limit must be smaller than upper limit", GSL_EDOM); + } + else if (params->alpha <= -1.0 || params->beta <= -1.0) + { + GSL_ERROR("alpha and beta must be > -1", GSL_EDOM); + } + else + { + return GSL_SUCCESS; + } +} + +static int +jacobi_init(const size_t n, double * diag, double * subdiag, gsl_integration_fixed_params * params) +{ + const double absum = params->beta + params->alpha; + const double abdiff = params->beta - params->alpha; + const double a2b2 = absum * abdiff; /* beta^2 - alpha^2 */ + size_t i; + + /* construct the diagonal and subdiagonal elements of Jacobi matrix */ + diag[0] = abdiff/(absum + 2.0); + subdiag[0] = 2.0*sqrt((params->alpha + 1.0)*(params->beta + 1.0)/(absum + 3.0))/(absum + 2.0); + for (i = 1; i < n; i++) + { + diag[i] = a2b2 / ( (absum + 2.0*i) * (absum + 2.0*i + 2.0) ); + subdiag[i] = sqrt ( 4.0*(i + 1.0) * (params->alpha + i + 1.0) * (params->beta + i + 1.0) * (absum + i + 1.0) / ( pow((absum + 2.0*i + 2.0), 2.0) - 1.0 ) ) / ( absum + 2.0*i + 2.0 ); + } + + params->zemu = pow(2.0, absum + 1.0) * gsl_sf_gamma(params->alpha + 1.0) * gsl_sf_gamma(params->beta + 1.0) / gsl_sf_gamma(absum + 2.0); + params->shft = 0.5*(params->b + params->a); + params->slp = 0.5*(params->b - params->a); + params->al = params->alpha; + params->be = params->beta; + + return GSL_SUCCESS; +} + +static const gsl_integration_fixed_type jacobi_type = +{ + jacobi_check, + jacobi_init +}; + +const gsl_integration_fixed_type *gsl_integration_fixed_jacobi = &jacobi_type; diff --git a/gsl-2.5/integration/jacobi.lo b/gsl-2.5/integration/jacobi.lo new file mode 100644 index 00000000..0c4f0931 --- /dev/null +++ b/gsl-2.5/integration/jacobi.lo @@ -0,0 +1,12 @@ +# jacobi.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/jacobi.o' + +# Name of the non-PIC object +non_pic_object='jacobi.o' + diff --git a/gsl-2.5/integration/laguerre.c b/gsl-2.5/integration/laguerre.c new file mode 100644 index 00000000..07b57ac1 --- /dev/null +++ b/gsl-2.5/integration/laguerre.c @@ -0,0 +1,78 @@ +/* integration/laguerre.c + * + * Copyright (C) 2017 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* + * The code in this module is based on IQPACK, specifically the LGPL + * implementation found in HERMITE_RULE: + * https://people.sc.fsu.edu/~jburkardt/c_src/hermite_rule/hermite_rule.html + */ + +#include +#include +#include +#include +#include + +static int +laguerre_check(const size_t n, const gsl_integration_fixed_params * params) +{ + (void) n; + + if (params->b <= 0.0) + { + GSL_ERROR("b must be positive", GSL_EDOM); + } + else if (params->alpha <= -1.0) + { + GSL_ERROR("alpha must be > -1", GSL_EDOM); + } + else + { + return GSL_SUCCESS; + } +} + +static int +laguerre_init(const size_t n, double * diag, double * subdiag, gsl_integration_fixed_params * params) +{ + size_t i; + + /* construct the diagonal and subdiagonal elements of Jacobi matrix */ + for (i = 0; i < n; i++) + { + diag[i] = 2.0 * i + 1.0 + params->alpha; + subdiag[i] = sqrt ((i + 1.0) * (params->alpha + i + 1.0)); + } + + params->zemu = gsl_sf_gamma(params->alpha + 1.0); + params->shft = params->a; + params->slp = 1.0 / params->b; + params->al = params->alpha; + params->be = 0.0; + + return GSL_SUCCESS; +} + +static const gsl_integration_fixed_type laguerre_type = +{ + laguerre_check, + laguerre_init +}; + +const gsl_integration_fixed_type *gsl_integration_fixed_laguerre = &laguerre_type; diff --git a/gsl-2.5/integration/laguerre.lo b/gsl-2.5/integration/laguerre.lo new file mode 100644 index 00000000..ae5fe82c --- /dev/null +++ b/gsl-2.5/integration/laguerre.lo @@ -0,0 +1,12 @@ +# laguerre.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/laguerre.o' + +# Name of the non-PIC object +non_pic_object='laguerre.o' + diff --git a/gsl-2.5/integration/legendre.c b/gsl-2.5/integration/legendre.c new file mode 100644 index 00000000..398f9943 --- /dev/null +++ b/gsl-2.5/integration/legendre.c @@ -0,0 +1,74 @@ +/* integration/legendre.c + * + * Copyright (C) 2017 Konrad Griessinger, Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* + * The code in this module is based on IQPACK, specifically the LGPL + * implementation found in HERMITE_RULE: + * https://people.sc.fsu.edu/~jburkardt/c_src/hermite_rule/hermite_rule.html + */ + +#include +#include +#include +#include +#include + +static int +legendre_check(const size_t n, const gsl_integration_fixed_params * params) +{ + (void) n; + + if (fabs(params->b - params->a) <= GSL_DBL_EPSILON) + { + GSL_ERROR("|b - a| too small", GSL_EDOM); + } + else + { + return GSL_SUCCESS; + } +} + +static int +legendre_init(const size_t n, double * diag, double * subdiag, gsl_integration_fixed_params * params) +{ + size_t i; + + /* construct the diagonal and subdiagonal elements of Jacobi matrix */ + for (i = 1; i <= n; i++) + { + diag[i-1] = 0.0; + subdiag[i-1] = (double) i / sqrt(4.0*i*i-1.0); + } + + params->zemu = 2.0; + params->shft = 0.5*(params->b + params->a); + params->slp = 0.5*(params->b - params->a); + params->al = 0.0; + params->be = 0.0; + + return GSL_SUCCESS; +} + +static const gsl_integration_fixed_type legendre_type = +{ + legendre_check, + legendre_init +}; + +const gsl_integration_fixed_type *gsl_integration_fixed_legendre = &legendre_type; diff --git a/gsl-2.5/integration/legendre.lo b/gsl-2.5/integration/legendre.lo new file mode 100644 index 00000000..cdef2ca9 --- /dev/null +++ b/gsl-2.5/integration/legendre.lo @@ -0,0 +1,12 @@ +# legendre.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/legendre.o' + +# Name of the non-PIC object +non_pic_object='legendre.o' + diff --git a/gsl-2.5/integration/libgslintegration.la b/gsl-2.5/integration/libgslintegration.la new file mode 100644 index 00000000..7d665a52 --- /dev/null +++ b/gsl-2.5/integration/libgslintegration.la @@ -0,0 +1,41 @@ +# libgslintegration.la - a libtool library file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='' + +# Names of this library. +library_names='' + +# The name of the static archive. +old_library='libgslintegration.a' + +# Linker flags that can not go in dependency_libs. +inherited_linker_flags='' + +# Libraries that this one depends upon. +dependency_libs=' -lm' + +# Names of additional weak libraries provided by this library +weak_library_names='' + +# Version information for libgslintegration. +current= +age= +revision= + +# Is this an already installed library? +installed=no + +# Should we warn about portability when linking against -modules? +shouldnotlink=no + +# Files to dlopen/dlpreopen +dlopen='' +dlpreopen='' + +# Directory that this library needs to be installed in: +libdir='' diff --git a/gsl-2.5/integration/positivity.c b/gsl-2.5/integration/positivity.c new file mode 100644 index 00000000..cfa89f15 --- /dev/null +++ b/gsl-2.5/integration/positivity.c @@ -0,0 +1,13 @@ +/* Compare the integral of f(x) with the integral of |f(x)| + to determine if f(x) covers both positive and negative values */ + +static inline int +test_positivity (double result, double resabs); + +static inline int +test_positivity (double result, double resabs) +{ + int status = (fabs (result) >= (1 - 50 * GSL_DBL_EPSILON) * resabs); + + return status; +} diff --git a/gsl-2.5/integration/ptsort.c b/gsl-2.5/integration/ptsort.c new file mode 100644 index 00000000..a52d521f --- /dev/null +++ b/gsl-2.5/integration/ptsort.c @@ -0,0 +1,62 @@ +/* integration/ptsort.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +static void +sort_results (gsl_integration_workspace * workspace); + +static void +sort_results (gsl_integration_workspace * workspace) +{ + size_t i; + + double * elist = workspace->elist ; + size_t * order = workspace->order ; + + size_t nint = workspace->size; + + for (i = 0; i < nint; i++) + { + size_t i1 = order[i]; + double e1 = elist[i1]; + size_t i_max = i1; + size_t j; + + for (j = i + 1; j < nint; j++) + { + size_t i2 = order[j]; + double e2 = elist[i2]; + + if (e2 >= e1) + { + i_max = i2; + e1 = e2; + } + } + + if (i_max != i1) + { + order[i] = order[i_max]; + order[i_max] = i1; + } + } + + workspace->i = order[0] ; +} + + diff --git a/gsl-2.5/integration/qag.c b/gsl-2.5/integration/qag.c new file mode 100644 index 00000000..b57e2827 --- /dev/null +++ b/gsl-2.5/integration/qag.c @@ -0,0 +1,265 @@ +/* integration/qag.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include + +#include "initialise.c" +#include "set_initial.c" +#include "qpsrt.c" +#include "util.c" + +static int +qag (const gsl_function *f, + const double a, const double b, + const double epsabs, const double epsrel, + const size_t limit, + gsl_integration_workspace * workspace, + double * result, double * abserr, + gsl_integration_rule * q) ; + +int +gsl_integration_qag (const gsl_function *f, + double a, double b, + double epsabs, double epsrel, size_t limit, + int key, + gsl_integration_workspace * workspace, + double * result, double * abserr) +{ + int status ; + gsl_integration_rule * integration_rule = gsl_integration_qk15 ; + + if (key < GSL_INTEG_GAUSS15) + { + key = GSL_INTEG_GAUSS15 ; + } + else if (key > GSL_INTEG_GAUSS61) + { + key = GSL_INTEG_GAUSS61 ; + } + + switch (key) + { + case GSL_INTEG_GAUSS15: + integration_rule = gsl_integration_qk15 ; + break ; + case GSL_INTEG_GAUSS21: + integration_rule = gsl_integration_qk21 ; + break ; + case GSL_INTEG_GAUSS31: + integration_rule = gsl_integration_qk31 ; + break ; + case GSL_INTEG_GAUSS41: + integration_rule = gsl_integration_qk41 ; + break ; + case GSL_INTEG_GAUSS51: + integration_rule = gsl_integration_qk51 ; + break ; + case GSL_INTEG_GAUSS61: + integration_rule = gsl_integration_qk61 ; + break ; + default: + GSL_ERROR("value of key does specify a known integration rule", + GSL_EINVAL) ; + } + + status = qag (f, a, b, epsabs, epsrel, limit, + workspace, + result, abserr, + integration_rule) ; + + return status ; +} + +static int +qag (const gsl_function * f, + const double a, const double b, + const double epsabs, const double epsrel, + const size_t limit, + gsl_integration_workspace * workspace, + double *result, double *abserr, + gsl_integration_rule * q) +{ + double area, errsum; + double result0, abserr0, resabs0, resasc0; + double tolerance; + size_t iteration = 0; + int roundoff_type1 = 0, roundoff_type2 = 0, error_type = 0; + + double round_off; + + /* Initialize results */ + + initialise (workspace, a, b); + + *result = 0; + *abserr = 0; + + if (limit > workspace->limit) + { + GSL_ERROR ("iteration limit exceeds available workspace", GSL_EINVAL) ; + } + + if (epsabs <= 0 && (epsrel < 50 * GSL_DBL_EPSILON || epsrel < 0.5e-28)) + { + GSL_ERROR ("tolerance cannot be achieved with given epsabs and epsrel", + GSL_EBADTOL); + } + + /* perform the first integration */ + + q (f, a, b, &result0, &abserr0, &resabs0, &resasc0); + + set_initial_result (workspace, result0, abserr0); + + /* Test on accuracy */ + + tolerance = GSL_MAX_DBL (epsabs, epsrel * fabs (result0)); + + /* need IEEE rounding here to match original quadpack behavior */ + + round_off = GSL_COERCE_DBL (50 * GSL_DBL_EPSILON * resabs0); + + if (abserr0 <= round_off && abserr0 > tolerance) + { + *result = result0; + *abserr = abserr0; + + GSL_ERROR ("cannot reach tolerance because of roundoff error " + "on first attempt", GSL_EROUND); + } + else if ((abserr0 <= tolerance && abserr0 != resasc0) || abserr0 == 0.0) + { + *result = result0; + *abserr = abserr0; + + return GSL_SUCCESS; + } + else if (limit == 1) + { + *result = result0; + *abserr = abserr0; + + GSL_ERROR ("a maximum of one iteration was insufficient", GSL_EMAXITER); + } + + area = result0; + errsum = abserr0; + + iteration = 1; + + do + { + double a1, b1, a2, b2; + double a_i, b_i, r_i, e_i; + double area1 = 0, area2 = 0, area12 = 0; + double error1 = 0, error2 = 0, error12 = 0; + double resasc1, resasc2; + double resabs1, resabs2; + + /* Bisect the subinterval with the largest error estimate */ + + retrieve (workspace, &a_i, &b_i, &r_i, &e_i); + + a1 = a_i; + b1 = 0.5 * (a_i + b_i); + a2 = b1; + b2 = b_i; + + q (f, a1, b1, &area1, &error1, &resabs1, &resasc1); + q (f, a2, b2, &area2, &error2, &resabs2, &resasc2); + + area12 = area1 + area2; + error12 = error1 + error2; + + errsum += (error12 - e_i); + area += area12 - r_i; + + if (resasc1 != error1 && resasc2 != error2) + { + double delta = r_i - area12; + + if (fabs (delta) <= 1.0e-5 * fabs (area12) && error12 >= 0.99 * e_i) + { + roundoff_type1++; + } + if (iteration >= 10 && error12 > e_i) + { + roundoff_type2++; + } + } + + tolerance = GSL_MAX_DBL (epsabs, epsrel * fabs (area)); + + if (errsum > tolerance) + { + if (roundoff_type1 >= 6 || roundoff_type2 >= 20) + { + error_type = 2; /* round off error */ + } + + /* set error flag in the case of bad integrand behaviour at + a point of the integration range */ + + if (subinterval_too_small (a1, a2, b2)) + { + error_type = 3; + } + } + + update (workspace, a1, b1, area1, error1, a2, b2, area2, error2); + + retrieve (workspace, &a_i, &b_i, &r_i, &e_i); + + iteration++; + + } + while (iteration < limit && !error_type && errsum > tolerance); + + *result = sum_results (workspace); + *abserr = errsum; + + if (errsum <= tolerance) + { + return GSL_SUCCESS; + } + else if (error_type == 2) + { + GSL_ERROR ("roundoff error prevents tolerance from being achieved", + GSL_EROUND); + } + else if (error_type == 3) + { + GSL_ERROR ("bad integrand behavior found in the integration interval", + GSL_ESING); + } + else if (iteration == limit) + { + GSL_ERROR ("maximum number of subdivisions reached", GSL_EMAXITER); + } + else + { + GSL_ERROR ("could not integrate function", GSL_EFAILED); + } +} + + diff --git a/gsl-2.5/integration/qag.lo b/gsl-2.5/integration/qag.lo new file mode 100644 index 00000000..9c277314 --- /dev/null +++ b/gsl-2.5/integration/qag.lo @@ -0,0 +1,12 @@ +# qag.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/qag.o' + +# Name of the non-PIC object +non_pic_object='qag.o' + diff --git a/gsl-2.5/integration/qagp.c b/gsl-2.5/integration/qagp.c new file mode 100644 index 00000000..4ec606ad --- /dev/null +++ b/gsl-2.5/integration/qagp.c @@ -0,0 +1,510 @@ +/* integration/qagp.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include + +static int +qagp (const gsl_function *f, + const double *pts, const size_t npts, + const double epsabs, const double epsrel, const size_t limit, + gsl_integration_workspace * workspace, + double *result, double *abserr, + gsl_integration_rule * q); + +#include "initialise.c" +#include "qpsrt.c" +#include "util.c" +#include "append.c" +#include "reset.c" +#include "qelg.c" +#include "qpsrt2.c" +#include "ptsort.c" +#include "positivity.c" + +int +gsl_integration_qagp (const gsl_function *f, + double * pts, size_t npts, + double epsabs, double epsrel, size_t limit, + gsl_integration_workspace * workspace, + double * result, double * abserr) +{ + int status = qagp (f, pts, npts, + epsabs, epsrel, limit, + workspace, + result, abserr, + &gsl_integration_qk21) ; + + return status ; +} + + +static int +qagp (const gsl_function * f, + const double *pts, const size_t npts, + const double epsabs, const double epsrel, + const size_t limit, + gsl_integration_workspace * workspace, + double *result, double *abserr, + gsl_integration_rule * q) +{ + double area, errsum; + double res_ext, err_ext; + double result0, abserr0, resabs0; + double tolerance; + + double ertest = 0; + double error_over_large_intervals = 0; + double reseps = 0, abseps = 0, correc = 0; + size_t ktmin = 0; + int roundoff_type1 = 0, roundoff_type2 = 0, roundoff_type3 = 0; + int error_type = 0, error_type2 = 0; + + size_t iteration = 0; + + int positive_integrand = 0; + int extrapolate = 0; + int disallow_extrapolation = 0; + + struct extrapolation_table table; + + const size_t nint = npts - 1; /* number of intervals */ + + size_t *ndin = workspace->level; /* temporarily alias ndin to level */ + + size_t i; + + /* Initialize results */ + + *result = 0; + *abserr = 0; + + /* Test on validity of parameters */ + + if (limit > workspace->limit) + { + GSL_ERROR ("iteration limit exceeds available workspace", GSL_EINVAL) ; + } + + if (npts > workspace->limit) + { + GSL_ERROR ("npts exceeds size of workspace", GSL_EINVAL); + } + + if (epsabs <= 0 && (epsrel < 50 * GSL_DBL_EPSILON || epsrel < 0.5e-28)) + { + GSL_ERROR ("tolerance cannot be achieved with given epsabs and epsrel", + GSL_EBADTOL); + } + + /* Check that the integration range and break points are an + ascending sequence */ + + for (i = 0; i < nint; i++) + { + if (pts[i + 1] < pts[i]) + { + GSL_ERROR ("points are not in an ascending sequence", GSL_EINVAL); + } + } + + /* Perform the first integration */ + + result0 = 0; + abserr0 = 0; + resabs0 = 0; + + initialise (workspace, 0.0, 0.0) ; + + for (i = 0; i < nint; i++) + { + double area1, error1, resabs1, resasc1; + const double a1 = pts[i]; + const double b1 = pts[i + 1]; + + q (f, a1, b1, &area1, &error1, &resabs1, &resasc1); + + result0 = result0 + area1; + abserr0 = abserr0 + error1; + resabs0 = resabs0 + resabs1; + + append_interval (workspace, a1, b1, area1, error1); + + if (error1 == resasc1 && error1 != 0.0) + { + ndin[i] = 1; + } + else + { + ndin[i] = 0; + } + } + + /* Compute the initial error estimate */ + + errsum = 0.0; + + for (i = 0; i < nint; i++) + { + if (ndin[i]) + { + workspace->elist[i] = abserr0; + } + + errsum = errsum + workspace->elist[i]; + + } + + for (i = 0; i < nint; i++) + { + workspace->level[i] = 0; + } + + /* Sort results into order of decreasing error via the indirection + array order[] */ + + sort_results (workspace); + + /* Test on accuracy */ + + tolerance = GSL_MAX_DBL (epsabs, epsrel * fabs (result0)); + + if (abserr0 <= 100 * GSL_DBL_EPSILON * resabs0 && abserr0 > tolerance) + { + *result = result0; + *abserr = abserr0; + + GSL_ERROR ("cannot reach tolerance because of roundoff error" + "on first attempt", GSL_EROUND); + } + else if (abserr0 <= tolerance) + { + *result = result0; + *abserr = abserr0; + + return GSL_SUCCESS; + } + else if (limit == 1) + { + *result = result0; + *abserr = abserr0; + + GSL_ERROR ("a maximum of one iteration was insufficient", GSL_EMAXITER); + } + + /* Initialization */ + + initialise_table (&table); + append_table (&table, result0); + + area = result0; + + res_ext = result0; + err_ext = GSL_DBL_MAX; + + error_over_large_intervals = errsum; + ertest = tolerance; + + positive_integrand = test_positivity (result0, resabs0); + + iteration = nint - 1; + + do + { + size_t current_level; + double a1, b1, a2, b2; + double a_i, b_i, r_i, e_i; + double area1 = 0, area2 = 0, area12 = 0; + double error1 = 0, error2 = 0, error12 = 0; + double resasc1, resasc2; + double resabs1, resabs2; + double last_e_i; + + /* Bisect the subinterval with the largest error estimate */ + + retrieve (workspace, &a_i, &b_i, &r_i, &e_i); + + current_level = workspace->level[workspace->i] + 1; + + a1 = a_i; + b1 = 0.5 * (a_i + b_i); + a2 = b1; + b2 = b_i; + + iteration++; + + q (f, a1, b1, &area1, &error1, &resabs1, &resasc1); + q (f, a2, b2, &area2, &error2, &resabs2, &resasc2); + + area12 = area1 + area2; + error12 = error1 + error2; + last_e_i = e_i; + + /* Improve previous approximations to the integral and test for + accuracy. + + We write these expressions in the same way as the original + QUADPACK code so that the rounding errors are the same, which + makes testing easier. */ + + errsum = errsum + error12 - e_i; + area = area + area12 - r_i; + + tolerance = GSL_MAX_DBL (epsabs, epsrel * fabs (area)); + + if (resasc1 != error1 && resasc2 != error2) + { + double delta = r_i - area12; + + if (fabs (delta) <= 1.0e-5 * fabs (area12) && error12 >= 0.99 * e_i) + { + if (!extrapolate) + { + roundoff_type1++; + } + else + { + roundoff_type2++; + } + } + + if (i > 10 && error12 > e_i) + { + roundoff_type3++; + } + } + + /* Test for roundoff and eventually set error flag */ + + if (roundoff_type1 + roundoff_type2 >= 10 || roundoff_type3 >= 20) + { + error_type = 2; /* round off error */ + } + + if (roundoff_type2 >= 5) + { + error_type2 = 1; + } + + /* set error flag in the case of bad integrand behaviour at + a point of the integration range */ + + if (subinterval_too_small (a1, a2, b2)) + { + error_type = 4; + } + + /* append the newly-created intervals to the list */ + + update (workspace, a1, b1, area1, error1, a2, b2, area2, error2); + + if (errsum <= tolerance) + { + goto compute_result; + } + + if (error_type) + { + break; + } + + if (iteration >= limit - 1) + { + error_type = 1; + break; + } + + if (disallow_extrapolation) + { + continue; + } + + error_over_large_intervals += -last_e_i; + + if (current_level < workspace->maximum_level) + { + error_over_large_intervals += error12; + } + + if (!extrapolate) + { + /* test whether the interval to be bisected next is the + smallest interval. */ + if (large_interval (workspace)) + continue; + + extrapolate = 1; + workspace->nrmax = 1; + } + + /* The smallest interval has the largest error. Before + bisecting decrease the sum of the errors over the larger + intervals (error_over_large_intervals) and perform + extrapolation. */ + + if (!error_type2 && error_over_large_intervals > ertest) + { + if (increase_nrmax (workspace)) + continue; + } + + /* Perform extrapolation */ + + append_table (&table, area); + + if (table.n < 3) + { + goto skip_extrapolation; + } + + qelg (&table, &reseps, &abseps); + + ktmin++; + + if (ktmin > 5 && err_ext < 0.001 * errsum) + { + error_type = 5; + } + + if (abseps < err_ext) + { + ktmin = 0; + err_ext = abseps; + res_ext = reseps; + correc = error_over_large_intervals; + ertest = GSL_MAX_DBL (epsabs, epsrel * fabs (reseps)); + if (err_ext <= ertest) + break; + } + + /* Prepare bisection of the smallest interval. */ + + if (table.n == 1) + { + disallow_extrapolation = 1; + } + + if (error_type == 5) + { + break; + } + + skip_extrapolation: + + reset_nrmax (workspace); + extrapolate = 0; + error_over_large_intervals = errsum; + + } + while (iteration < limit); + + *result = res_ext; + *abserr = err_ext; + + if (err_ext == GSL_DBL_MAX) + goto compute_result; + + if (error_type || error_type2) + { + if (error_type2) + { + err_ext += correc; + } + + if (error_type == 0) + error_type = 3; + + if (result != 0 && area != 0) + { + if (err_ext / fabs (res_ext) > errsum / fabs (area)) + goto compute_result; + } + else if (err_ext > errsum) + { + goto compute_result; + } + else if (area == 0.0) + { + goto return_error; + } + } + + /* Test on divergence. */ + + { + double max_area = GSL_MAX_DBL (fabs (res_ext), fabs (area)); + + if (!positive_integrand && max_area < 0.01 * resabs0) + goto return_error; + } + + { + double ratio = res_ext / area; + + if (ratio < 0.01 || ratio > 100 || errsum > fabs (area)) + error_type = 6; + } + + goto return_error; + +compute_result: + + *result = sum_results (workspace); + *abserr = errsum; + +return_error: + + if (error_type > 2) + error_type--; + + if (error_type == 0) + { + return GSL_SUCCESS; + } + else if (error_type == 1) + { + GSL_ERROR ("number of iterations was insufficient", GSL_EMAXITER); + } + else if (error_type == 2) + { + GSL_ERROR ("cannot reach tolerance because of roundoff error", + GSL_EROUND); + } + else if (error_type == 3) + { + GSL_ERROR ("bad integrand behavior found in the integration interval", + GSL_ESING); + } + else if (error_type == 4) + { + GSL_ERROR ("roundoff error detected in the extrapolation table", + GSL_EROUND); + } + else if (error_type == 5) + { + GSL_ERROR ("integral is divergent, or slowly convergent", + GSL_EDIVERGE); + } + else + { + GSL_ERROR ("could not integrate function", GSL_EFAILED); + } +} diff --git a/gsl-2.5/integration/qagp.lo b/gsl-2.5/integration/qagp.lo new file mode 100644 index 00000000..269ee147 --- /dev/null +++ b/gsl-2.5/integration/qagp.lo @@ -0,0 +1,12 @@ +# qagp.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/qagp.o' + +# Name of the non-PIC object +non_pic_object='qagp.o' + diff --git a/gsl-2.5/integration/qags.c b/gsl-2.5/integration/qags.c new file mode 100644 index 00000000..d44e3337 --- /dev/null +++ b/gsl-2.5/integration/qags.c @@ -0,0 +1,570 @@ +/* integration/qags.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include + +#include "initialise.c" +#include "set_initial.c" +#include "qpsrt.c" +#include "util.c" +#include "reset.c" +#include "qpsrt2.c" +#include "qelg.c" +#include "positivity.c" + +static int qags (const gsl_function * f, const double a, const double + b, const double epsabs, const double epsrel, const size_t limit, + gsl_integration_workspace * workspace, double *result, double *abserr, + gsl_integration_rule * q); + +int +gsl_integration_qags (const gsl_function *f, + double a, double b, + double epsabs, double epsrel, size_t limit, + gsl_integration_workspace * workspace, + double * result, double * abserr) +{ + int status = qags (f, a, b, epsabs, epsrel, limit, + workspace, + result, abserr, + &gsl_integration_qk21) ; + return status ; +} + +/* QAGI: evaluate an integral over an infinite range using the + transformation + + integrate(f(x),-Inf,Inf) = integrate((f((1-t)/t) + f(-(1-t)/t))/t^2,0,1) + + */ + +static double i_transform (double t, void *params); + +int +gsl_integration_qagi (gsl_function * f, + double epsabs, double epsrel, size_t limit, + gsl_integration_workspace * workspace, + double *result, double *abserr) +{ + int status; + + gsl_function f_transform; + + f_transform.function = &i_transform; + f_transform.params = f; + + status = qags (&f_transform, 0.0, 1.0, + epsabs, epsrel, limit, + workspace, + result, abserr, + &gsl_integration_qk15); + + return status; +} + +static double +i_transform (double t, void *params) +{ + gsl_function *f = (gsl_function *) params; + double x = (1 - t) / t; + double y = GSL_FN_EVAL (f, x) + GSL_FN_EVAL (f, -x); + return (y / t) / t; +} + + +/* QAGIL: Evaluate an integral over an infinite range using the + transformation, + + integrate(f(x),-Inf,b) = integrate(f(b-(1-t)/t)/t^2,0,1) + + */ + +struct il_params { double b ; gsl_function * f ; } ; + +static double il_transform (double t, void *params); + +int +gsl_integration_qagil (gsl_function * f, + double b, + double epsabs, double epsrel, size_t limit, + gsl_integration_workspace * workspace, + double *result, double *abserr) +{ + int status; + + gsl_function f_transform; + struct il_params transform_params ; + + transform_params.b = b ; + transform_params.f = f ; + + f_transform.function = &il_transform; + f_transform.params = &transform_params; + + status = qags (&f_transform, 0.0, 1.0, + epsabs, epsrel, limit, + workspace, + result, abserr, + &gsl_integration_qk15); + + return status; +} + +static double +il_transform (double t, void *params) +{ + struct il_params *p = (struct il_params *) params; + double b = p->b; + gsl_function * f = p->f; + double x = b - (1 - t) / t; + double y = GSL_FN_EVAL (f, x); + return (y / t) / t; +} + +/* QAGIU: Evaluate an integral over an infinite range using the + transformation + + integrate(f(x),a,Inf) = integrate(f(a+(1-t)/t)/t^2,0,1) + + */ + +struct iu_params { double a ; gsl_function * f ; } ; + +static double iu_transform (double t, void *params); + +int +gsl_integration_qagiu (gsl_function * f, + double a, + double epsabs, double epsrel, size_t limit, + gsl_integration_workspace * workspace, + double *result, double *abserr) +{ + int status; + + gsl_function f_transform; + struct iu_params transform_params ; + + transform_params.a = a ; + transform_params.f = f ; + + f_transform.function = &iu_transform; + f_transform.params = &transform_params; + + status = qags (&f_transform, 0.0, 1.0, + epsabs, epsrel, limit, + workspace, + result, abserr, + &gsl_integration_qk15); + + return status; +} + +static double +iu_transform (double t, void *params) +{ + struct iu_params *p = (struct iu_params *) params; + double a = p->a; + gsl_function * f = p->f; + double x = a + (1 - t) / t; + double y = GSL_FN_EVAL (f, x); + return (y / t) / t; +} + +/* Main integration function */ + +static int +qags (const gsl_function * f, + const double a, const double b, + const double epsabs, const double epsrel, + const size_t limit, + gsl_integration_workspace * workspace, + double *result, double *abserr, + gsl_integration_rule * q) +{ + double area, errsum; + double res_ext, err_ext; + double result0, abserr0, resabs0, resasc0; + double tolerance; + + double ertest = 0; + double error_over_large_intervals = 0; + double reseps = 0, abseps = 0, correc = 0; + size_t ktmin = 0; + int roundoff_type1 = 0, roundoff_type2 = 0, roundoff_type3 = 0; + int error_type = 0, error_type2 = 0; + + size_t iteration = 0; + + int positive_integrand = 0; + int extrapolate = 0; + int disallow_extrapolation = 0; + + struct extrapolation_table table; + + /* Initialize results */ + + initialise (workspace, a, b); + + *result = 0; + *abserr = 0; + + if (limit > workspace->limit) + { + GSL_ERROR ("iteration limit exceeds available workspace", GSL_EINVAL) ; + } + + /* Test on accuracy */ + + if (epsabs <= 0 && (epsrel < 50 * GSL_DBL_EPSILON || epsrel < 0.5e-28)) + { + GSL_ERROR ("tolerance cannot be achieved with given epsabs and epsrel", + GSL_EBADTOL); + } + + /* Perform the first integration */ + + q (f, a, b, &result0, &abserr0, &resabs0, &resasc0); + + set_initial_result (workspace, result0, abserr0); + + tolerance = GSL_MAX_DBL (epsabs, epsrel * fabs (result0)); + + if (abserr0 <= 100 * GSL_DBL_EPSILON * resabs0 && abserr0 > tolerance) + { + *result = result0; + *abserr = abserr0; + + GSL_ERROR ("cannot reach tolerance because of roundoff error" + "on first attempt", GSL_EROUND); + } + else if ((abserr0 <= tolerance && abserr0 != resasc0) || abserr0 == 0.0) + { + *result = result0; + *abserr = abserr0; + + return GSL_SUCCESS; + } + else if (limit == 1) + { + *result = result0; + *abserr = abserr0; + + GSL_ERROR ("a maximum of one iteration was insufficient", GSL_EMAXITER); + } + + /* Initialization */ + + initialise_table (&table); + append_table (&table, result0); + + area = result0; + errsum = abserr0; + + res_ext = result0; + err_ext = GSL_DBL_MAX; + + positive_integrand = test_positivity (result0, resabs0); + + iteration = 1; + + do + { + size_t current_level; + double a1, b1, a2, b2; + double a_i, b_i, r_i, e_i; + double area1 = 0, area2 = 0, area12 = 0; + double error1 = 0, error2 = 0, error12 = 0; + double resasc1, resasc2; + double resabs1, resabs2; + double last_e_i; + + /* Bisect the subinterval with the largest error estimate */ + + retrieve (workspace, &a_i, &b_i, &r_i, &e_i); + + current_level = workspace->level[workspace->i] + 1; + + a1 = a_i; + b1 = 0.5 * (a_i + b_i); + a2 = b1; + b2 = b_i; + + iteration++; + + q (f, a1, b1, &area1, &error1, &resabs1, &resasc1); + q (f, a2, b2, &area2, &error2, &resabs2, &resasc2); + + area12 = area1 + area2; + error12 = error1 + error2; + last_e_i = e_i; + + /* Improve previous approximations to the integral and test for + accuracy. + + We write these expressions in the same way as the original + QUADPACK code so that the rounding errors are the same, which + makes testing easier. */ + + errsum = errsum + error12 - e_i; + area = area + area12 - r_i; + + tolerance = GSL_MAX_DBL (epsabs, epsrel * fabs (area)); + + if (resasc1 != error1 && resasc2 != error2) + { + double delta = r_i - area12; + + if (fabs (delta) <= 1.0e-5 * fabs (area12) && error12 >= 0.99 * e_i) + { + if (!extrapolate) + { + roundoff_type1++; + } + else + { + roundoff_type2++; + } + } + if (iteration > 10 && error12 > e_i) + { + roundoff_type3++; + } + } + + /* Test for roundoff and eventually set error flag */ + + if (roundoff_type1 + roundoff_type2 >= 10 || roundoff_type3 >= 20) + { + error_type = 2; /* round off error */ + } + + if (roundoff_type2 >= 5) + { + error_type2 = 1; + } + + /* set error flag in the case of bad integrand behaviour at + a point of the integration range */ + + if (subinterval_too_small (a1, a2, b2)) + { + error_type = 4; + } + + /* append the newly-created intervals to the list */ + + update (workspace, a1, b1, area1, error1, a2, b2, area2, error2); + + if (errsum <= tolerance) + { + goto compute_result; + } + + if (error_type) + { + break; + } + + if (iteration >= limit - 1) + { + error_type = 1; + break; + } + + if (iteration == 2) /* set up variables on first iteration */ + { + error_over_large_intervals = errsum; + ertest = tolerance; + append_table (&table, area); + continue; + } + + if (disallow_extrapolation) + { + continue; + } + + error_over_large_intervals += -last_e_i; + + if (current_level < workspace->maximum_level) + { + error_over_large_intervals += error12; + } + + if (!extrapolate) + { + /* test whether the interval to be bisected next is the + smallest interval. */ + + if (large_interval (workspace)) + continue; + + extrapolate = 1; + workspace->nrmax = 1; + } + + if (!error_type2 && error_over_large_intervals > ertest) + { + if (increase_nrmax (workspace)) + continue; + } + + /* Perform extrapolation */ + + append_table (&table, area); + + qelg (&table, &reseps, &abseps); + + ktmin++; + + if (ktmin > 5 && err_ext < 0.001 * errsum) + { + error_type = 5; + } + + if (abseps < err_ext) + { + ktmin = 0; + err_ext = abseps; + res_ext = reseps; + correc = error_over_large_intervals; + ertest = GSL_MAX_DBL (epsabs, epsrel * fabs (reseps)); + if (err_ext <= ertest) + break; + } + + /* Prepare bisection of the smallest interval. */ + + if (table.n == 1) + { + disallow_extrapolation = 1; + } + + if (error_type == 5) + { + break; + } + + /* work on interval with largest error */ + + reset_nrmax (workspace); + extrapolate = 0; + error_over_large_intervals = errsum; + + } + while (iteration < limit); + + *result = res_ext; + *abserr = err_ext; + + if (err_ext == GSL_DBL_MAX) + goto compute_result; + + if (error_type || error_type2) + { + if (error_type2) + { + err_ext += correc; + } + + if (error_type == 0) + error_type = 3; + + if (res_ext != 0.0 && area != 0.0) + { + if (err_ext / fabs (res_ext) > errsum / fabs (area)) + goto compute_result; + } + else if (err_ext > errsum) + { + goto compute_result; + } + else if (area == 0.0) + { + goto return_error; + } + } + + /* Test on divergence. */ + + { + double max_area = GSL_MAX_DBL (fabs (res_ext), fabs (area)); + + if (!positive_integrand && max_area < 0.01 * resabs0) + goto return_error; + } + + { + double ratio = res_ext / area; + + if (ratio < 0.01 || ratio > 100.0 || errsum > fabs (area)) + error_type = 6; + } + + goto return_error; + +compute_result: + + *result = sum_results (workspace); + *abserr = errsum; + +return_error: + + if (error_type > 2) + error_type--; + + + + if (error_type == 0) + { + return GSL_SUCCESS; + } + else if (error_type == 1) + { + GSL_ERROR ("number of iterations was insufficient", GSL_EMAXITER); + } + else if (error_type == 2) + { + GSL_ERROR ("cannot reach tolerance because of roundoff error", + GSL_EROUND); + } + else if (error_type == 3) + { + GSL_ERROR ("bad integrand behavior found in the integration interval", + GSL_ESING); + } + else if (error_type == 4) + { + GSL_ERROR ("roundoff error detected in the extrapolation table", + GSL_EROUND); + } + else if (error_type == 5) + { + GSL_ERROR ("integral is divergent, or slowly convergent", + GSL_EDIVERGE); + } + else + { + GSL_ERROR ("could not integrate function", GSL_EFAILED); + } + +} diff --git a/gsl-2.5/integration/qags.lo b/gsl-2.5/integration/qags.lo new file mode 100644 index 00000000..7eac245a --- /dev/null +++ b/gsl-2.5/integration/qags.lo @@ -0,0 +1,12 @@ +# qags.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/qags.o' + +# Name of the non-PIC object +non_pic_object='qags.o' + diff --git a/gsl-2.5/integration/qawc.c b/gsl-2.5/integration/qawc.c new file mode 100644 index 00000000..59a84e1d --- /dev/null +++ b/gsl-2.5/integration/qawc.c @@ -0,0 +1,220 @@ +/* integration/qawc.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include + +#include "initialise.c" +#include "set_initial.c" +#include "qpsrt.c" +#include "util.c" +#include "qc25c.c" + +int +gsl_integration_qawc (gsl_function * f, + const double a, const double b, const double c, + const double epsabs, const double epsrel, + const size_t limit, + gsl_integration_workspace * workspace, + double *result, double *abserr) +{ + double area, errsum; + double result0, abserr0; + double tolerance; + size_t iteration = 0; + int roundoff_type1 = 0, roundoff_type2 = 0, error_type = 0; + int err_reliable; + int sign = 1; + double lower, higher; + + /* Initialize results */ + + *result = 0; + *abserr = 0; + + if (limit > workspace->limit) + { + GSL_ERROR ("iteration limit exceeds available workspace", GSL_EINVAL) ; + } + + if (b < a) + { + lower = b ; + higher = a ; + sign = -1 ; + } + else + { + lower = a; + higher = b; + } + + initialise (workspace, lower, higher); + + if (epsabs <= 0 && (epsrel < 50 * GSL_DBL_EPSILON || epsrel < 0.5e-28)) + { + GSL_ERROR ("tolerance cannot be achieved with given epsabs and epsrel", + GSL_EBADTOL); + } + + if (c == a || c == b) + { + GSL_ERROR ("cannot integrate with singularity on endpoint", GSL_EINVAL); + } + + /* perform the first integration */ + + qc25c (f, lower, higher, c, &result0, &abserr0, &err_reliable); + + set_initial_result (workspace, result0, abserr0); + + /* Test on accuracy, use 0.01 relative error as an extra safety + margin on the first iteration (ignored for subsequent iterations) */ + + tolerance = GSL_MAX_DBL (epsabs, epsrel * fabs (result0)); + + if (abserr0 < tolerance && abserr0 < 0.01 * fabs(result0)) + { + *result = sign * result0; + *abserr = abserr0; + + return GSL_SUCCESS; + } + else if (limit == 1) + { + *result = sign * result0; + *abserr = abserr0; + + GSL_ERROR ("a maximum of one iteration was insufficient", GSL_EMAXITER); + } + + area = result0; + errsum = abserr0; + + iteration = 1; + + do + { + double a1, b1, a2, b2; + double a_i, b_i, r_i, e_i; + double area1 = 0, area2 = 0, area12 = 0; + double error1 = 0, error2 = 0, error12 = 0; + int err_reliable1, err_reliable2; + + /* Bisect the subinterval with the largest error estimate */ + + retrieve (workspace, &a_i, &b_i, &r_i, &e_i); + + a1 = a_i; + b1 = 0.5 * (a_i + b_i); + a2 = b1; + b2 = b_i; + + if (c > a1 && c <= b1) + { + b1 = 0.5 * (c + b2) ; + a2 = b1; + } + else if (c > b1 && c < b2) + { + b1 = 0.5 * (a1 + c) ; + a2 = b1; + } + + qc25c (f, a1, b1, c, &area1, &error1, &err_reliable1); + qc25c (f, a2, b2, c, &area2, &error2, &err_reliable2); + + area12 = area1 + area2; + error12 = error1 + error2; + + errsum += (error12 - e_i); + area += area12 - r_i; + + if (err_reliable1 && err_reliable2) + { + double delta = r_i - area12; + + if (fabs (delta) <= 1.0e-5 * fabs (area12) && error12 >= 0.99 * e_i) + { + roundoff_type1++; + } + if (iteration >= 10 && error12 > e_i) + { + roundoff_type2++; + } + } + + tolerance = GSL_MAX_DBL (epsabs, epsrel * fabs (area)); + + if (errsum > tolerance) + { + if (roundoff_type1 >= 6 || roundoff_type2 >= 20) + { + error_type = 2; /* round off error */ + } + + /* set error flag in the case of bad integrand behaviour at + a point of the integration range */ + + if (subinterval_too_small (a1, a2, b2)) + { + error_type = 3; + } + } + + update (workspace, a1, b1, area1, error1, a2, b2, area2, error2); + + retrieve (workspace, &a_i, &b_i, &r_i, &e_i); + + iteration++; + + } + while (iteration < limit && !error_type && errsum > tolerance); + + *result = sign * sum_results (workspace); + *abserr = errsum; + + if (errsum <= tolerance) + { + return GSL_SUCCESS; + } + else if (error_type == 2) + { + GSL_ERROR ("roundoff error prevents tolerance from being achieved", + GSL_EROUND); + } + else if (error_type == 3) + { + GSL_ERROR ("bad integrand behavior found in the integration interval", + GSL_ESING); + } + else if (iteration == limit) + { + GSL_ERROR ("maximum number of subdivisions reached", GSL_EMAXITER); + } + else + { + GSL_ERROR ("could not integrate function", GSL_EFAILED); + } + +} diff --git a/gsl-2.5/integration/qawc.lo b/gsl-2.5/integration/qawc.lo new file mode 100644 index 00000000..1b992db2 --- /dev/null +++ b/gsl-2.5/integration/qawc.lo @@ -0,0 +1,12 @@ +# qawc.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/qawc.o' + +# Name of the non-PIC object +non_pic_object='qawc.o' + diff --git a/gsl-2.5/integration/qawf.c b/gsl-2.5/integration/qawf.c new file mode 100644 index 00000000..2f44c2f6 --- /dev/null +++ b/gsl-2.5/integration/qawf.c @@ -0,0 +1,281 @@ +/* integration/qawf.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include + +#include "initialise.c" +#include "append.c" +#include "qelg.c" + +int +gsl_integration_qawf (gsl_function * f, + const double a, + const double epsabs, + const size_t limit, + gsl_integration_workspace * workspace, + gsl_integration_workspace * cycle_workspace, + gsl_integration_qawo_table * wf, + double *result, double *abserr) +{ + double area, errsum; + double res_ext, err_ext; + double correc, total_error = 0.0, truncation_error; + + size_t ktmin = 0; + size_t iteration = 0; + + struct extrapolation_table table; + + double cycle; + double omega = wf->omega; + + const double p = 0.9; + double factor = 1; + double initial_eps, eps; + int error_type = 0; + + /* Initialize results */ + + initialise (workspace, a, a); + + *result = 0; + *abserr = 0; + + if (limit > workspace->limit) + { + GSL_ERROR ("iteration limit exceeds available workspace", GSL_EINVAL) ; + } + + /* Test on accuracy */ + + if (epsabs <= 0) + { + GSL_ERROR ("absolute tolerance epsabs must be positive", GSL_EBADTOL) ; + } + + if (omega == 0.0) + { + if (wf->sine == GSL_INTEG_SINE) + { + /* The function sin(w x) f(x) is always zero for w = 0 */ + + *result = 0; + *abserr = 0; + + return GSL_SUCCESS; + } + else + { + /* The function cos(w x) f(x) is always f(x) for w = 0 */ + + int status = gsl_integration_qagiu (f, a, epsabs, 0.0, + cycle_workspace->limit, + cycle_workspace, + result, abserr); + return status; + } + } + + if (epsabs > GSL_DBL_MIN / (1 - p)) + { + eps = epsabs * (1 - p); + } + else + { + eps = epsabs; + } + + initial_eps = eps; + + area = 0; + errsum = 0; + + res_ext = 0; + err_ext = GSL_DBL_MAX; + correc = 0; + + cycle = (2 * floor (fabs (omega)) + 1) * M_PI / fabs (omega); + + gsl_integration_qawo_table_set_length (wf, cycle); + + initialise_table (&table); + + for (iteration = 0; iteration < limit; iteration++) + { + double area1, error1, reseps, erreps; + + double a1 = a + iteration * cycle; + double b1 = a1 + cycle; + + double epsabs1 = eps * factor; + + int status = gsl_integration_qawo (f, a1, epsabs1, 0.0, limit, + cycle_workspace, wf, + &area1, &error1); + + append_interval (workspace, a1, b1, area1, error1); + + factor *= p; + + area = area + area1; + errsum = errsum + error1; + + /* estimate the truncation error as 50 times the final term */ + + truncation_error = 50 * fabs (area1); + + total_error = errsum + truncation_error; + + if (total_error < epsabs && iteration > 4) + { + goto compute_result; + } + + if (error1 > correc) + { + correc = error1; + } + + if (status) + { + eps = GSL_MAX_DBL (initial_eps, correc * (1.0 - p)); + } + + if (status && total_error < 10 * correc && iteration > 3) + { + goto compute_result; + } + + append_table (&table, area); + + if (table.n < 2) + { + continue; + } + + qelg (&table, &reseps, &erreps); + + ktmin++; + + if (ktmin >= 15 && err_ext < 0.001 * total_error) + { + error_type = 4; + } + + if (erreps < err_ext) + { + ktmin = 0; + err_ext = erreps; + res_ext = reseps; + + if (err_ext + 10 * correc <= epsabs) + break; + if (err_ext <= epsabs && 10 * correc >= epsabs) + break; + } + + } + + if (iteration == limit) + error_type = 1; + + if (err_ext == GSL_DBL_MAX) + goto compute_result; + + err_ext = err_ext + 10 * correc; + + *result = res_ext; + *abserr = err_ext; + + if (error_type == 0) + { + return GSL_SUCCESS ; + } + + if (res_ext != 0.0 && area != 0.0) + { + if (err_ext / fabs (res_ext) > errsum / fabs (area)) + goto compute_result; + } + else if (err_ext > errsum) + { + goto compute_result; + } + else if (area == 0.0) + { + goto return_error; + } + + if (error_type == 4) + { + err_ext = err_ext + truncation_error; + } + + goto return_error; + +compute_result: + + *result = area; + *abserr = total_error; + +return_error: + + if (error_type > 2) + error_type--; + + if (error_type == 0) + { + return GSL_SUCCESS; + } + else if (error_type == 1) + { + GSL_ERROR ("number of iterations was insufficient", GSL_EMAXITER); + } + else if (error_type == 2) + { + GSL_ERROR ("cannot reach tolerance because of roundoff error", + GSL_EROUND); + } + else if (error_type == 3) + { + GSL_ERROR ("bad integrand behavior found in the integration interval", + GSL_ESING); + } + else if (error_type == 4) + { + GSL_ERROR ("roundoff error detected in the extrapolation table", + GSL_EROUND); + } + else if (error_type == 5) + { + GSL_ERROR ("integral is divergent, or slowly convergent", + GSL_EDIVERGE); + } + else + { + GSL_ERROR ("could not integrate function", GSL_EFAILED); + } + +} + diff --git a/gsl-2.5/integration/qawf.lo b/gsl-2.5/integration/qawf.lo new file mode 100644 index 00000000..4d10153b --- /dev/null +++ b/gsl-2.5/integration/qawf.lo @@ -0,0 +1,12 @@ +# qawf.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/qawf.o' + +# Name of the non-PIC object +non_pic_object='qawf.o' + diff --git a/gsl-2.5/integration/qawo.c b/gsl-2.5/integration/qawo.c new file mode 100644 index 00000000..03b9dce7 --- /dev/null +++ b/gsl-2.5/integration/qawo.c @@ -0,0 +1,460 @@ +/* integration/qawo.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include + +#include "initialise.c" +#include "set_initial.c" +#include "reset.c" +#include "qpsrt.c" +#include "util.c" +#include "qpsrt2.c" +#include "qelg.c" +#include "positivity.c" + +#include "qc25f.c" + +int +gsl_integration_qawo (gsl_function * f, + const double a, + const double epsabs, const double epsrel, + const size_t limit, + gsl_integration_workspace * workspace, + gsl_integration_qawo_table * wf, + double *result, double *abserr) +{ + double area, errsum; + double res_ext, err_ext; + double result0, abserr0, resabs0, resasc0; + double tolerance; + + double ertest = 0; + double error_over_large_intervals = 0; + double reseps = 0, abseps = 0, correc = 0; + size_t ktmin = 0; + int roundoff_type1 = 0, roundoff_type2 = 0, roundoff_type3 = 0; + int error_type = 0, error_type2 = 0; + + size_t iteration = 0; + + int positive_integrand = 0; + int extrapolate = 0; + int extall = 0; + int disallow_extrapolation = 0; + + struct extrapolation_table table; + + double b = a + wf->L ; + double abs_omega = fabs (wf->omega) ; + + /* Initialize results */ + + initialise (workspace, a, b); + + *result = 0; + *abserr = 0; + + if (limit > workspace->limit) + { + GSL_ERROR ("iteration limit exceeds available workspace", GSL_EINVAL) ; + } + + /* Test on accuracy */ + + if (epsabs <= 0 && (epsrel < 50 * GSL_DBL_EPSILON || epsrel < 0.5e-28)) + { + GSL_ERROR ("tolerance cannot be achieved with given epsabs and epsrel", + GSL_EBADTOL); + } + + /* Perform the first integration */ + + qc25f (f, a, b, wf, 0, &result0, &abserr0, &resabs0, &resasc0); + + set_initial_result (workspace, result0, abserr0); + + tolerance = GSL_MAX_DBL (epsabs, epsrel * fabs (result0)); + + if (abserr0 <= 100 * GSL_DBL_EPSILON * resabs0 && abserr0 > tolerance) + { + *result = result0; + *abserr = abserr0; + + GSL_ERROR ("cannot reach tolerance because of roundoff error " + "on first attempt", GSL_EROUND); + } + else if ((abserr0 <= tolerance && abserr0 != resasc0) || abserr0 == 0.0) + { + *result = result0; + *abserr = abserr0; + + return GSL_SUCCESS; + } + else if (limit == 1) + { + *result = result0; + *abserr = abserr0; + + GSL_ERROR ("a maximum of one iteration was insufficient", GSL_EMAXITER); + } + + /* Initialization */ + + initialise_table (&table); + + if (0.5 * abs_omega * fabs(b - a) <= 2) + { + append_table (&table, result0); + extall = 1; + } + + area = result0; + errsum = abserr0; + + res_ext = result0; + err_ext = GSL_DBL_MAX; + + positive_integrand = test_positivity (result0, resabs0); + + iteration = 1; + + do + { + size_t current_level; + double a1, b1, a2, b2; + double a_i, b_i, r_i, e_i; + double area1 = 0, area2 = 0, area12 = 0; + double error1 = 0, error2 = 0, error12 = 0; + double resasc1, resasc2; + double resabs1, resabs2; + double last_e_i; + + /* Bisect the subinterval with the largest error estimate */ + + retrieve (workspace, &a_i, &b_i, &r_i, &e_i); + + current_level = workspace->level[workspace->i] + 1; + + if (current_level >= wf->n) + { + error_type = -1 ; /* exceeded limit of table */ + break ; + } + + a1 = a_i; + b1 = 0.5 * (a_i + b_i); + a2 = b1; + b2 = b_i; + + iteration++; + + qc25f (f, a1, b1, wf, current_level, &area1, &error1, &resabs1, &resasc1); + qc25f (f, a2, b2, wf, current_level, &area2, &error2, &resabs2, &resasc2); + + area12 = area1 + area2; + error12 = error1 + error2; + last_e_i = e_i; + + /* Improve previous approximations to the integral and test for + accuracy. + + We write these expressions in the same way as the original + QUADPACK code so that the rounding errors are the same, which + makes testing easier. */ + + errsum = errsum + error12 - e_i; + area = area + area12 - r_i; + + tolerance = GSL_MAX_DBL (epsabs, epsrel * fabs (area)); + + if (resasc1 != error1 && resasc2 != error2) + { + double delta = r_i - area12; + + if (fabs (delta) <= 1.0e-5 * fabs (area12) && error12 >= 0.99 * e_i) + { + if (!extrapolate) + { + roundoff_type1++; + } + else + { + roundoff_type2++; + } + } + if (iteration > 10 && error12 > e_i) + { + roundoff_type3++; + } + } + + /* Test for roundoff and eventually set error flag */ + + if (roundoff_type1 + roundoff_type2 >= 10 || roundoff_type3 >= 20) + { + error_type = 2; /* round off error */ + } + + if (roundoff_type2 >= 5) + { + error_type2 = 1; + } + + /* set error flag in the case of bad integrand behaviour at + a point of the integration range */ + + if (subinterval_too_small (a1, a2, b2)) + { + error_type = 4; + } + + /* append the newly-created intervals to the list */ + + update (workspace, a1, b1, area1, error1, a2, b2, area2, error2); + + if (errsum <= tolerance) + { + goto compute_result; + } + + if (error_type) + { + break; + } + + if (iteration >= limit - 1) + { + error_type = 1; + break; + } + + /* set up variables on first iteration */ + + if (iteration == 2 && extall) + { + error_over_large_intervals = errsum; + ertest = tolerance; + append_table (&table, area); + continue; + } + + if (disallow_extrapolation) + { + continue; + } + + if (extall) + { + error_over_large_intervals += -last_e_i; + + if (current_level < workspace->maximum_level) + { + error_over_large_intervals += error12; + } + + if (extrapolate) + goto label70; + } + + if (large_interval(workspace)) + { + continue; + } + + if (extall) + { + extrapolate = 1; + workspace->nrmax = 1; + } + else + { + /* test whether the interval to be bisected next is the + smallest interval. */ + size_t i = workspace->i; + double width = workspace->blist[i] - workspace->alist[i]; + + if (0.25 * fabs(width) * abs_omega > 2) + continue; + + extall = 1; + error_over_large_intervals = errsum; + ertest = tolerance; + continue; + } + + label70: + if (!error_type2 && error_over_large_intervals > ertest) + { + if (increase_nrmax (workspace)) + continue; + } + + /* Perform extrapolation */ + + append_table (&table, area); + + if (table.n < 3) + { + reset_nrmax(workspace); + extrapolate = 0; + error_over_large_intervals = errsum; + continue; + } + + qelg (&table, &reseps, &abseps); + + ktmin++; + + if (ktmin > 5 && err_ext < 0.001 * errsum) + { + error_type = 5; + } + + if (abseps < err_ext) + { + ktmin = 0; + err_ext = abseps; + res_ext = reseps; + correc = error_over_large_intervals; + ertest = GSL_MAX_DBL (epsabs, epsrel * fabs (reseps)); + if (err_ext <= ertest) + break; + } + + /* Prepare bisection of the smallest interval. */ + + if (table.n == 1) + { + disallow_extrapolation = 1; + } + + if (error_type == 5) + { + break; + } + + /* work on interval with largest error */ + + reset_nrmax (workspace); + extrapolate = 0; + error_over_large_intervals = errsum; + + } + while (iteration < limit); + + *result = res_ext; + *abserr = err_ext; + + if (err_ext == GSL_DBL_MAX) + goto compute_result; + + if (error_type || error_type2) + { + if (error_type2) + { + err_ext += correc; + } + + if (error_type == 0) + error_type = 3; + + if (result != 0 && area != 0) + { + if (err_ext / fabs (res_ext) > errsum / fabs (area)) + goto compute_result; + } + else if (err_ext > errsum) + { + goto compute_result; + } + else if (area == 0.0) + { + goto return_error; + } + } + + /* Test on divergence. */ + + { + double max_area = GSL_MAX_DBL (fabs (res_ext), fabs (area)); + + if (!positive_integrand && max_area < 0.01 * resabs0) + goto return_error; + } + + { + double ratio = res_ext / area; + + if (ratio < 0.01 || ratio > 100 || errsum > fabs (area)) + error_type = 6; + } + + goto return_error; + +compute_result: + + *result = sum_results (workspace); + *abserr = errsum; + +return_error: + + if (error_type > 2) + error_type--; + + if (error_type == 0) + { + return GSL_SUCCESS; + } + else if (error_type == 1) + { + GSL_ERROR ("number of iterations was insufficient", GSL_EMAXITER); + } + else if (error_type == 2) + { + GSL_ERROR ("cannot reach tolerance because of roundoff error", + GSL_EROUND); + } + else if (error_type == 3) + { + GSL_ERROR ("bad integrand behavior found in the integration interval", + GSL_ESING); + } + else if (error_type == 4) + { + GSL_ERROR ("roundoff error detected in extrapolation table", GSL_EROUND); + } + else if (error_type == 5) + { + GSL_ERROR ("integral is divergent, or slowly convergent", GSL_EDIVERGE); + } + else if (error_type == -1) + { + GSL_ERROR ("exceeded limit of trigonometric table", GSL_ETABLE); + } + else + { + GSL_ERROR ("could not integrate function", GSL_EFAILED); + } + +} diff --git a/gsl-2.5/integration/qawo.lo b/gsl-2.5/integration/qawo.lo new file mode 100644 index 00000000..039b64de --- /dev/null +++ b/gsl-2.5/integration/qawo.lo @@ -0,0 +1,12 @@ +# qawo.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/qawo.o' + +# Name of the non-PIC object +non_pic_object='qawo.o' + diff --git a/gsl-2.5/integration/qaws.c b/gsl-2.5/integration/qaws.c new file mode 100644 index 00000000..c394a737 --- /dev/null +++ b/gsl-2.5/integration/qaws.c @@ -0,0 +1,220 @@ +/* integration/qaws.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include + +#include "initialise.c" +#include "append.c" +#include "qpsrt.c" +#include "util.c" +#include "qc25s.c" + +int +gsl_integration_qaws (gsl_function * f, + const double a, const double b, + gsl_integration_qaws_table * t, + const double epsabs, const double epsrel, + const size_t limit, + gsl_integration_workspace * workspace, + double *result, double *abserr) +{ + double area, errsum; + double result0, abserr0; + double tolerance; + size_t iteration = 0; + int roundoff_type1 = 0, roundoff_type2 = 0, error_type = 0; + + /* Initialize results */ + + initialise (workspace, a, b); + + *result = 0; + *abserr = 0; + + if (limit > workspace->limit) + { + GSL_ERROR ("iteration limit exceeds available workspace", GSL_EINVAL) ; + } + + if (b <= a) + { + GSL_ERROR ("limits must form an ascending sequence, a < b", GSL_EINVAL) ; + } + + if (epsabs <= 0 && (epsrel < 50 * GSL_DBL_EPSILON || epsrel < 0.5e-28)) + { + GSL_ERROR ("tolerance cannot be achieved with given epsabs and epsrel", + GSL_EBADTOL); + } + + /* perform the first integration */ + + { + double area1, area2; + double error1, error2; + int err_reliable1, err_reliable2; + double a1 = a; + double b1 = 0.5 * (a + b); + double a2 = b1; + double b2 = b; + + qc25s (f, a, b, a1, b1, t, &area1, &error1, &err_reliable1); + qc25s (f, a, b, a2, b2, t, &area2, &error2, &err_reliable2); + + if (error1 > error2) + { + append_interval (workspace, a1, b1, area1, error1); + append_interval (workspace, a2, b2, area2, error2); + } + else + { + append_interval (workspace, a2, b2, area2, error2); + append_interval (workspace, a1, b1, area1, error1); + } + + result0 = area1 + area2; + abserr0 = error1 + error2; + } + + /* Test on accuracy */ + + tolerance = GSL_MAX_DBL (epsabs, epsrel * fabs (result0)); + + /* Test on accuracy, use 0.01 relative error as an extra safety + margin on the first iteration (ignored for subsequent iterations) */ + + if (abserr0 < tolerance && abserr0 < 0.01 * fabs(result0)) + { + *result = result0; + *abserr = abserr0; + + return GSL_SUCCESS; + } + else if (limit == 1) + { + *result = result0; + *abserr = abserr0; + + GSL_ERROR ("a maximum of one iteration was insufficient", GSL_EMAXITER); + } + + area = result0; + errsum = abserr0; + + iteration = 2; + + do + { + double a1, b1, a2, b2; + double a_i, b_i, r_i, e_i; + double area1 = 0, area2 = 0, area12 = 0; + double error1 = 0, error2 = 0, error12 = 0; + int err_reliable1, err_reliable2; + + /* Bisect the subinterval with the largest error estimate */ + + retrieve (workspace, &a_i, &b_i, &r_i, &e_i); + + a1 = a_i; + b1 = 0.5 * (a_i + b_i); + a2 = b1; + b2 = b_i; + + qc25s (f, a, b, a1, b1, t, &area1, &error1, &err_reliable1); + qc25s (f, a, b, a2, b2, t, &area2, &error2, &err_reliable2); + + area12 = area1 + area2; + error12 = error1 + error2; + + errsum += (error12 - e_i); + area += area12 - r_i; + + if (err_reliable1 && err_reliable2) + { + double delta = r_i - area12; + + if (fabs (delta) <= 1.0e-5 * fabs (area12) && error12 >= 0.99 * e_i) + { + roundoff_type1++; + } + if (iteration >= 10 && error12 > e_i) + { + roundoff_type2++; + } + } + + tolerance = GSL_MAX_DBL (epsabs, epsrel * fabs (area)); + + if (errsum > tolerance) + { + if (roundoff_type1 >= 6 || roundoff_type2 >= 20) + { + error_type = 2; /* round off error */ + } + + /* set error flag in the case of bad integrand behaviour at + a point of the integration range */ + + if (subinterval_too_small (a1, a2, b2)) + { + error_type = 3; + } + } + + update (workspace, a1, b1, area1, error1, a2, b2, area2, error2); + + retrieve (workspace, &a_i, &b_i, &r_i, &e_i); + + iteration++; + + } + while (iteration < limit && !error_type && errsum > tolerance); + + *result = sum_results (workspace); + *abserr = errsum; + + if (errsum <= tolerance) + { + return GSL_SUCCESS; + } + else if (error_type == 2) + { + GSL_ERROR ("roundoff error prevents tolerance from being achieved", + GSL_EROUND); + } + else if (error_type == 3) + { + GSL_ERROR ("bad integrand behavior found in the integration interval", + GSL_ESING); + } + else if (iteration == limit) + { + GSL_ERROR ("maximum number of subdivisions reached", GSL_EMAXITER); + } + else + { + GSL_ERROR ("could not integrate function", GSL_EFAILED); + } + +} diff --git a/gsl-2.5/integration/qaws.lo b/gsl-2.5/integration/qaws.lo new file mode 100644 index 00000000..e4c283b4 --- /dev/null +++ b/gsl-2.5/integration/qaws.lo @@ -0,0 +1,12 @@ +# qaws.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/qaws.o' + +# Name of the non-PIC object +non_pic_object='qaws.o' + diff --git a/gsl-2.5/integration/qc25c.c b/gsl-2.5/integration/qc25c.c new file mode 100644 index 00000000..77823671 --- /dev/null +++ b/gsl-2.5/integration/qc25c.c @@ -0,0 +1,132 @@ +/* integration/qc25c.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +struct fn_cauchy_params +{ + gsl_function *function; + double singularity; +}; + +static double fn_cauchy (double t, void *params); + +static void compute_moments (double cc, double *moment); + +static void +qc25c (gsl_function * f, double a, double b, double c, + double *result, double *abserr, int *err_reliable); + +static void +qc25c (gsl_function * f, double a, double b, double c, + double *result, double *abserr, int *err_reliable) +{ + double cc = (2 * c - b - a) / (b - a); + + if (fabs (cc) > 1.1) + { + double resabs, resasc; + + gsl_function weighted_function; + struct fn_cauchy_params fn_params; + + fn_params.function = f; + fn_params.singularity = c; + + weighted_function.function = &fn_cauchy; + weighted_function.params = &fn_params; + + gsl_integration_qk15 (&weighted_function, a, b, result, abserr, + &resabs, &resasc); + + if (*abserr == resasc) + { + *err_reliable = 0; + } + else + { + *err_reliable = 1; + } + + return; + } + else + { + double cheb12[13], cheb24[25], moment[25]; + double res12 = 0, res24 = 0; + size_t i; + gsl_integration_qcheb (f, a, b, cheb12, cheb24); + compute_moments (cc, moment); + + for (i = 0; i < 13; i++) + { + res12 += cheb12[i] * moment[i]; + } + + for (i = 0; i < 25; i++) + { + res24 += cheb24[i] * moment[i]; + } + + *result = res24; + *abserr = fabs(res24 - res12) ; + *err_reliable = 0; + + return; + } +} + +static double +fn_cauchy (double x, void *params) +{ + struct fn_cauchy_params *p = (struct fn_cauchy_params *) params; + gsl_function *f = p->function; + double c = p->singularity; + return GSL_FN_EVAL (f, x) / (x - c); +} + +static void +compute_moments (double cc, double *moment) +{ + size_t k; + + double a0 = log (fabs ((1.0 - cc) / (1.0 + cc))); + double a1 = 2 + a0 * cc; + + moment[0] = a0; + moment[1] = a1; + + for (k = 2; k < 25; k++) + { + double a2; + + if ((k % 2) == 0) + { + a2 = 2.0 * cc * a1 - a0; + } + else + { + const double km1 = k - 1.0; + a2 = 2.0 * cc * a1 - a0 - 4.0 / (km1 * km1 - 1.0); + } + + moment[k] = a2; + + a0 = a1; + a1 = a2; + } +} diff --git a/gsl-2.5/integration/qc25f.c b/gsl-2.5/integration/qc25f.c new file mode 100644 index 00000000..ffb47327 --- /dev/null +++ b/gsl-2.5/integration/qc25f.c @@ -0,0 +1,158 @@ +/* integration/qc25f.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +struct fn_fourier_params +{ + gsl_function *function; + double omega; +}; + +static double fn_sin (double t, void *params); +static double fn_cos (double t, void *params); + +static void +qc25f (gsl_function * f, double a, double b, + gsl_integration_qawo_table * wf, size_t level, + double *result, double *abserr, double *resabs, double *resasc); + +static void +qc25f (gsl_function * f, double a, double b, + gsl_integration_qawo_table * wf, size_t level, + double *result, double *abserr, double *resabs, double *resasc) +{ + const double center = 0.5 * (a + b); + const double half_length = 0.5 * (b - a); + const double omega = wf->omega ; + + const double par = omega * half_length; + + if (fabs (par) < 2) + { + gsl_function weighted_function; + struct fn_fourier_params fn_params; + + fn_params.function = f; + fn_params.omega = omega; + + if (wf->sine == GSL_INTEG_SINE) + { + weighted_function.function = &fn_sin; + } + else + { + weighted_function.function = &fn_cos; + } + + weighted_function.params = &fn_params; + + gsl_integration_qk15 (&weighted_function, a, b, result, abserr, + resabs, resasc); + + return; + } + else + { + double *moment; + double cheb12[13], cheb24[25]; + double result_abs, res12_cos, res12_sin, res24_cos, res24_sin; + double est_cos, est_sin; + double c, s; + size_t i; + + gsl_integration_qcheb (f, a, b, cheb12, cheb24); + + if (level >= wf->n) + { + /* table overflow should not happen, check before calling */ + GSL_ERROR_VOID("table overflow in internal function", GSL_ESANITY); + } + + /* obtain moments from the table */ + + moment = wf->chebmo + 25 * level; + + res12_cos = cheb12[12] * moment[12]; + res12_sin = 0 ; + + for (i = 0; i < 6; i++) + { + size_t k = 10 - 2 * i; + res12_cos += cheb12[k] * moment[k]; + res12_sin += cheb12[k + 1] * moment[k + 1]; + } + + res24_cos = cheb24[24] * moment[24]; + res24_sin = 0 ; + + result_abs = fabs(cheb24[24]) ; + + for (i = 0; i < 12; i++) + { + size_t k = 22 - 2 * i; + res24_cos += cheb24[k] * moment[k]; + res24_sin += cheb24[k + 1] * moment[k + 1]; + result_abs += fabs(cheb24[k]) + fabs(cheb24[k+1]); + } + + est_cos = fabs(res24_cos - res12_cos); + est_sin = fabs(res24_sin - res12_sin); + + c = half_length * cos(center * omega); + s = half_length * sin(center * omega); + + if (wf->sine == GSL_INTEG_SINE) + { + *result = c * res24_sin + s * res24_cos; + *abserr = fabs(c * est_sin) + fabs(s * est_cos); + } + else + { + *result = c * res24_cos - s * res24_sin; + *abserr = fabs(c * est_cos) + fabs(s * est_sin); + } + + *resabs = result_abs * half_length; + *resasc = GSL_DBL_MAX; + + return; + } +} + +static double +fn_sin (double x, void *params) +{ + struct fn_fourier_params *p = (struct fn_fourier_params *) params; + gsl_function *f = p->function; + double w = p->omega; + double wx = w * x; + double sinwx = sin(wx) ; + return GSL_FN_EVAL (f, x) * sinwx; +} + +static double +fn_cos (double x, void *params) +{ + struct fn_fourier_params *p = (struct fn_fourier_params *) params; + gsl_function *f = p->function; + double w = p->omega; + double wx = w * x; + double coswx = cos(wx) ; + return GSL_FN_EVAL (f, x) * coswx ; +} + diff --git a/gsl-2.5/integration/qc25s.c b/gsl-2.5/integration/qc25s.c new file mode 100644 index 00000000..075088cc --- /dev/null +++ b/gsl-2.5/integration/qc25s.c @@ -0,0 +1,238 @@ +/* integration/qc25s.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +struct fn_qaws_params +{ + gsl_function *function; + double a; + double b; + gsl_integration_qaws_table *table; +}; + +static double fn_qaws (double t, void *params); +static double fn_qaws_L (double x, void *params); +static double fn_qaws_R (double x, void *params); + +static void +compute_result (const double * r, const double * cheb12, const double * cheb24, + double * result12, double * result24); + + +static void +qc25s (gsl_function * f, double a, double b, double a1, double b1, + gsl_integration_qaws_table * t, + double *result, double *abserr, int *err_reliable); + +static void +qc25s (gsl_function * f, double a, double b, double a1, double b1, + gsl_integration_qaws_table * t, + double *result, double *abserr, int *err_reliable) +{ + gsl_function weighted_function; + struct fn_qaws_params fn_params; + + fn_params.function = f; + fn_params.a = a; + fn_params.b = b; + fn_params.table = t; + + weighted_function.params = &fn_params; + + if (a1 == a && (t->alpha != 0.0 || t->mu != 0)) + { + double cheb12[13], cheb24[25]; + + double factor = pow(0.5 * (b1 - a1), t->alpha + 1.0); + + weighted_function.function = &fn_qaws_R; + + gsl_integration_qcheb (&weighted_function, a1, b1, cheb12, cheb24); + + if (t->mu == 0) + { + double res12 = 0, res24 = 0; + double u = factor; + + compute_result (t->ri, cheb12, cheb24, &res12, &res24); + + *result = u * res24; + *abserr = fabs(u * (res24 - res12)); + } + else + { + double res12a = 0, res24a = 0; + double res12b = 0, res24b = 0; + + double u = factor * log(b1 - a1); + double v = factor; + + compute_result (t->ri, cheb12, cheb24, &res12a, &res24a); + compute_result (t->rg, cheb12, cheb24, &res12b, &res24b); + + *result = u * res24a + v * res24b; + *abserr = fabs(u * (res24a - res12a)) + fabs(v * (res24b - res12b)); + } + + *err_reliable = 0; + + return; + } + else if (b1 == b && (t->beta != 0.0 || t->nu != 0)) + { + double cheb12[13], cheb24[25]; + double factor = pow(0.5 * (b1 - a1), t->beta + 1.0); + + weighted_function.function = &fn_qaws_L; + + gsl_integration_qcheb (&weighted_function, a1, b1, cheb12, cheb24); + + if (t->nu == 0) + { + double res12 = 0, res24 = 0; + double u = factor; + + compute_result (t->rj, cheb12, cheb24, &res12, &res24); + + *result = u * res24; + *abserr = fabs(u * (res24 - res12)); + } + else + { + double res12a = 0, res24a = 0; + double res12b = 0, res24b = 0; + + double u = factor * log(b1 - a1); + double v = factor; + + compute_result (t->rj, cheb12, cheb24, &res12a, &res24a); + compute_result (t->rh, cheb12, cheb24, &res12b, &res24b); + + *result = u * res24a + v * res24b; + *abserr = fabs(u * (res24a - res12a)) + fabs(v * (res24b - res12b)); + } + + *err_reliable = 0; + + return; + } + else + { + double resabs, resasc; + + weighted_function.function = &fn_qaws; + + gsl_integration_qk15 (&weighted_function, a1, b1, result, abserr, + &resabs, &resasc); + + if (*abserr == resasc) + { + *err_reliable = 0; + } + else + { + *err_reliable = 1; + } + + return; + } + +} + +static double +fn_qaws (double x, void *params) +{ + struct fn_qaws_params *p = (struct fn_qaws_params *) params; + gsl_function *f = p->function; + gsl_integration_qaws_table *t = p->table; + + double factor = 1.0; + + if (t->alpha != 0.0) + factor *= pow(x - p->a, t->alpha); + + if (t->beta != 0.0) + factor *= pow(p->b - x, t->beta); + + if (t->mu == 1) + factor *= log(x - p->a); + + if (t->nu == 1) + factor *= log(p->b - x); + + return factor * GSL_FN_EVAL (f, x); +} + +static double +fn_qaws_L (double x, void *params) +{ + struct fn_qaws_params *p = (struct fn_qaws_params *) params; + gsl_function *f = p->function; + gsl_integration_qaws_table *t = p->table; + + double factor = 1.0; + + if (t->alpha != 0.0) + factor *= pow(x - p->a, t->alpha); + + if (t->mu == 1) + factor *= log(x - p->a); + + return factor * GSL_FN_EVAL (f, x); +} + +static double +fn_qaws_R (double x, void *params) +{ + struct fn_qaws_params *p = (struct fn_qaws_params *) params; + gsl_function *f = p->function; + gsl_integration_qaws_table *t = p->table; + + double factor = 1.0; + + if (t->beta != 0.0) + factor *= pow(p->b - x, t->beta); + + if (t->nu == 1) + factor *= log(p->b - x); + + return factor * GSL_FN_EVAL (f, x); +} + + +static void +compute_result (const double * r, const double * cheb12, const double * cheb24, + double * result12, double * result24) +{ + size_t i; + double res12 = 0; + double res24 = 0; + + for (i = 0; i < 13; i++) + { + res12 += r[i] * cheb12[i]; + } + + for (i = 0; i < 25; i++) + { + res24 += r[i] * cheb24[i]; + } + + *result12 = res12; + *result24 = res24; +} diff --git a/gsl-2.5/integration/qcheb.c b/gsl-2.5/integration/qcheb.c new file mode 100644 index 00000000..f0ede144 --- /dev/null +++ b/gsl-2.5/integration/qcheb.c @@ -0,0 +1,229 @@ +/* integration/qcheb.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include + + +/* This function computes the 12-th order and 24-th order Chebyshev + approximations to f(x) on [a,b] */ + +void +gsl_integration_qcheb (gsl_function * f, double a, double b, double *cheb12, double *cheb24) +{ + size_t i; + double fval[25], v[12]; + + /* These are the values of cos(pi*k/24) for k=1..11 needed for the + Chebyshev expansion of f(x) */ + + const double x[11] = { 0.9914448613738104, + 0.9659258262890683, + 0.9238795325112868, + 0.8660254037844386, + 0.7933533402912352, + 0.7071067811865475, + 0.6087614290087206, + 0.5000000000000000, + 0.3826834323650898, + 0.2588190451025208, + 0.1305261922200516 }; + + const double center = 0.5 * (b + a); + const double half_length = 0.5 * (b - a); + + fval[0] = 0.5 * GSL_FN_EVAL (f, b); + fval[12] = GSL_FN_EVAL (f, center); + fval[24] = 0.5 * GSL_FN_EVAL (f, a); + + for (i = 1; i < 12; i++) + { + const size_t j = 24 - i; + const double u = half_length * x[i-1]; + fval[i] = GSL_FN_EVAL(f, center + u); + fval[j] = GSL_FN_EVAL(f, center - u); + } + + for (i = 0; i < 12; i++) + { + const size_t j = 24 - i; + v[i] = fval[i] - fval[j]; + fval[i] = fval[i] + fval[j]; + } + + { + const double alam1 = v[0] - v[8]; + const double alam2 = x[5] * (v[2] - v[6] - v[10]); + + cheb12[3] = alam1 + alam2; + cheb12[9] = alam1 - alam2; + } + + { + const double alam1 = v[1] - v[7] - v[9]; + const double alam2 = v[3] - v[5] - v[11]; + { + const double alam = x[2] * alam1 + x[8] * alam2; + + cheb24[3] = cheb12[3] + alam; + cheb24[21] = cheb12[3] - alam; + } + + { + const double alam = x[8] * alam1 - x[2] * alam2; + cheb24[9] = cheb12[9] + alam; + cheb24[15] = cheb12[9] - alam; + } + } + + { + const double part1 = x[3] * v[4]; + const double part2 = x[7] * v[8]; + const double part3 = x[5] * v[6]; + + { + const double alam1 = v[0] + part1 + part2; + const double alam2 = x[1] * v[2] + part3 + x[9] * v[10]; + + cheb12[1] = alam1 + alam2; + cheb12[11] = alam1 - alam2; + } + + { + const double alam1 = v[0] - part1 + part2; + const double alam2 = x[9] * v[2] - part3 + x[1] * v[10]; + cheb12[5] = alam1 + alam2; + cheb12[7] = alam1 - alam2; + } + } + + { + const double alam = (x[0] * v[1] + x[2] * v[3] + x[4] * v[5] + + x[6] * v[7] + x[8] * v[9] + x[10] * v[11]); + cheb24[1] = cheb12[1] + alam; + cheb24[23] = cheb12[1] - alam; + } + + { + const double alam = (x[10] * v[1] - x[8] * v[3] + x[6] * v[5] + - x[4] * v[7] + x[2] * v[9] - x[0] * v[11]); + cheb24[11] = cheb12[11] + alam; + cheb24[13] = cheb12[11] - alam; + } + + { + const double alam = (x[4] * v[1] - x[8] * v[3] - x[0] * v[5] + - x[10] * v[7] + x[2] * v[9] + x[6] * v[11]); + cheb24[5] = cheb12[5] + alam; + cheb24[19] = cheb12[5] - alam; + } + + { + const double alam = (x[6] * v[1] - x[2] * v[3] - x[10] * v[5] + + x[0] * v[7] - x[8] * v[9] - x[4] * v[11]); + cheb24[7] = cheb12[7] + alam; + cheb24[17] = cheb12[7] - alam; + } + + for (i = 0; i < 6; i++) + { + const size_t j = 12 - i; + v[i] = fval[i] - fval[j]; + fval[i] = fval[i] + fval[j]; + } + + { + const double alam1 = v[0] + x[7] * v[4]; + const double alam2 = x[3] * v[2]; + + cheb12[2] = alam1 + alam2; + cheb12[10] = alam1 - alam2; + } + + cheb12[6] = v[0] - v[4]; + + { + const double alam = x[1] * v[1] + x[5] * v[3] + x[9] * v[5]; + cheb24[2] = cheb12[2] + alam; + cheb24[22] = cheb12[2] - alam; + } + + { + const double alam = x[5] * (v[1] - v[3] - v[5]); + cheb24[6] = cheb12[6] + alam; + cheb24[18] = cheb12[6] - alam; + } + + { + const double alam = x[9] * v[1] - x[5] * v[3] + x[1] * v[5]; + cheb24[10] = cheb12[10] + alam; + cheb24[14] = cheb12[10] - alam; + } + + for (i = 0; i < 3; i++) + { + const size_t j = 6 - i; + v[i] = fval[i] - fval[j]; + fval[i] = fval[i] + fval[j]; + } + + cheb12[4] = v[0] + x[7] * v[2]; + cheb12[8] = fval[0] - x[7] * fval[2]; + + { + const double alam = x[3] * v[1]; + cheb24[4] = cheb12[4] + alam; + cheb24[20] = cheb12[4] - alam; + } + + { + const double alam = x[7] * fval[1] - fval[3]; + cheb24[8] = cheb12[8] + alam; + cheb24[16] = cheb12[8] - alam; + } + + cheb12[0] = fval[0] + fval[2]; + + { + const double alam = fval[1] + fval[3]; + cheb24[0] = cheb12[0] + alam; + cheb24[24] = cheb12[0] - alam; + } + + cheb12[12] = v[0] - v[2]; + cheb24[12] = cheb12[12]; + + for (i = 1; i < 12; i++) + { + cheb12[i] *= 1.0 / 6.0; + } + + cheb12[0] *= 1.0 / 12.0; + cheb12[12] *= 1.0 / 12.0; + + for (i = 1; i < 24; i++) + { + cheb24[i] *= 1.0 / 12.0; + } + + cheb24[0] *= 1.0 / 24.0; + cheb24[24] *= 1.0 / 24.0; +} diff --git a/gsl-2.5/integration/qcheb.lo b/gsl-2.5/integration/qcheb.lo new file mode 100644 index 00000000..de3e3bab --- /dev/null +++ b/gsl-2.5/integration/qcheb.lo @@ -0,0 +1,12 @@ +# qcheb.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/qcheb.o' + +# Name of the non-PIC object +non_pic_object='qcheb.o' + diff --git a/gsl-2.5/integration/qelg.c b/gsl-2.5/integration/qelg.c new file mode 100644 index 00000000..d9e21697 --- /dev/null +++ b/gsl-2.5/integration/qelg.c @@ -0,0 +1,233 @@ +/* integration/qelg.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +struct extrapolation_table + { + size_t n; + double rlist2[52]; + size_t nres; + double res3la[3]; + }; + +static void + initialise_table (struct extrapolation_table *table); + +static void + append_table (struct extrapolation_table *table, double y); + +static void +initialise_table (struct extrapolation_table *table) +{ + table->n = 0; + table->nres = 0; +} +#ifdef JUNK +static void +initialise_table (struct extrapolation_table *table, double y) +{ + table->n = 0; + table->rlist2[0] = y; + table->nres = 0; +} +#endif +static void +append_table (struct extrapolation_table *table, double y) +{ + size_t n; + n = table->n; + table->rlist2[n] = y; + table->n++; +} + +/* static inline void + qelg (size_t * n, double epstab[], + double * result, double * abserr, + double res3la[], size_t * nres); */ + +static inline void + qelg (struct extrapolation_table *table, double *result, double *abserr); + +static inline void +qelg (struct extrapolation_table *table, double *result, double *abserr) +{ + double *epstab = table->rlist2; + double *res3la = table->res3la; + const size_t n = table->n - 1; + + const double current = epstab[n]; + + double absolute = GSL_DBL_MAX; + double relative = 5 * GSL_DBL_EPSILON * fabs (current); + + const size_t newelm = n / 2; + const size_t n_orig = n; + size_t n_final = n; + size_t i; + + const size_t nres_orig = table->nres; + + *result = current; + *abserr = GSL_DBL_MAX; + + if (n < 2) + { + *result = current; + *abserr = GSL_MAX_DBL (absolute, relative); + return; + } + + epstab[n + 2] = epstab[n]; + epstab[n] = GSL_DBL_MAX; + + for (i = 0; i < newelm; i++) + { + double res = epstab[n - 2 * i + 2]; + double e0 = epstab[n - 2 * i - 2]; + double e1 = epstab[n - 2 * i - 1]; + double e2 = res; + + double e1abs = fabs (e1); + double delta2 = e2 - e1; + double err2 = fabs (delta2); + double tol2 = GSL_MAX_DBL (fabs (e2), e1abs) * GSL_DBL_EPSILON; + double delta3 = e1 - e0; + double err3 = fabs (delta3); + double tol3 = GSL_MAX_DBL (e1abs, fabs (e0)) * GSL_DBL_EPSILON; + + double e3, delta1, err1, tol1, ss; + + if (err2 <= tol2 && err3 <= tol3) + { + /* If e0, e1 and e2 are equal to within machine accuracy, + convergence is assumed. */ + + *result = res; + absolute = err2 + err3; + relative = 5 * GSL_DBL_EPSILON * fabs (res); + *abserr = GSL_MAX_DBL (absolute, relative); + return; + } + + e3 = epstab[n - 2 * i]; + epstab[n - 2 * i] = e1; + delta1 = e1 - e3; + err1 = fabs (delta1); + tol1 = GSL_MAX_DBL (e1abs, fabs (e3)) * GSL_DBL_EPSILON; + + /* If two elements are very close to each other, omit a part of + the table by adjusting the value of n */ + + if (err1 <= tol1 || err2 <= tol2 || err3 <= tol3) + { + n_final = 2 * i; + break; + } + + ss = (1 / delta1 + 1 / delta2) - 1 / delta3; + + /* Test to detect irregular behaviour in the table, and + eventually omit a part of the table by adjusting the value of + n. */ + + if (fabs (ss * e1) <= 0.0001) + { + n_final = 2 * i; + break; + } + + /* Compute a new element and eventually adjust the value of + result. */ + + res = e1 + 1 / ss; + epstab[n - 2 * i] = res; + + { + const double error = err2 + fabs (res - e2) + err3; + + if (error <= *abserr) + { + *abserr = error; + *result = res; + } + } + } + + /* Shift the table */ + + { + const size_t limexp = 50 - 1; + + if (n_final == limexp) + { + n_final = 2 * (limexp / 2); + } + } + + if (n_orig % 2 == 1) + { + for (i = 0; i <= newelm; i++) + { + epstab[1 + i * 2] = epstab[i * 2 + 3]; + } + } + else + { + for (i = 0; i <= newelm; i++) + { + epstab[i * 2] = epstab[i * 2 + 2]; + } + } + + if (n_orig != n_final) + { + for (i = 0; i <= n_final; i++) + { + epstab[i] = epstab[n_orig - n_final + i]; + } + } + + table->n = n_final + 1; + + if (nres_orig < 3) + { + res3la[nres_orig] = *result; + *abserr = GSL_DBL_MAX; + } + else + { /* Compute error estimate */ + *abserr = (fabs (*result - res3la[2]) + fabs (*result - res3la[1]) + + fabs (*result - res3la[0])); + + res3la[0] = res3la[1]; + res3la[1] = res3la[2]; + res3la[2] = *result; + } + + /* In QUADPACK the variable table->nres is incremented at the top of + qelg, so it increases on every call. This leads to the array + res3la being accessed when its elements are still undefined, so I + have moved the update to this point so that its value more + useful. */ + + table->nres = nres_orig + 1; + + *abserr = GSL_MAX_DBL (*abserr, 5 * GSL_DBL_EPSILON * fabs (*result)); + + return; +} diff --git a/gsl-2.5/integration/qk.c b/gsl-2.5/integration/qk.c new file mode 100644 index 00000000..2bbda814 --- /dev/null +++ b/gsl-2.5/integration/qk.c @@ -0,0 +1,102 @@ +/* integration/qk.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include "err.c" + +void +gsl_integration_qk (const int n, + const double xgk[], const double wg[], const double wgk[], + double fv1[], double fv2[], + const gsl_function * f, double a, double b, + double *result, double *abserr, + double *resabs, double *resasc) +{ + + const double center = 0.5 * (a + b); + const double half_length = 0.5 * (b - a); + const double abs_half_length = fabs (half_length); + const double f_center = GSL_FN_EVAL (f, center); + + double result_gauss = 0; + double result_kronrod = f_center * wgk[n - 1]; + + double result_abs = fabs (result_kronrod); + double result_asc = 0; + double mean = 0, err = 0; + + int j; + + if (n % 2 == 0) + { + result_gauss = f_center * wg[n / 2 - 1]; + } + + for (j = 0; j < (n - 1) / 2; j++) + { + const int jtw = j * 2 + 1; /* in original fortran j=1,2,3 jtw=2,4,6 */ + const double abscissa = half_length * xgk[jtw]; + const double fval1 = GSL_FN_EVAL (f, center - abscissa); + const double fval2 = GSL_FN_EVAL (f, center + abscissa); + const double fsum = fval1 + fval2; + fv1[jtw] = fval1; + fv2[jtw] = fval2; + result_gauss += wg[j] * fsum; + result_kronrod += wgk[jtw] * fsum; + result_abs += wgk[jtw] * (fabs (fval1) + fabs (fval2)); + } + + for (j = 0; j < n / 2; j++) + { + int jtwm1 = j * 2; + const double abscissa = half_length * xgk[jtwm1]; + const double fval1 = GSL_FN_EVAL (f, center - abscissa); + const double fval2 = GSL_FN_EVAL (f, center + abscissa); + fv1[jtwm1] = fval1; + fv2[jtwm1] = fval2; + result_kronrod += wgk[jtwm1] * (fval1 + fval2); + result_abs += wgk[jtwm1] * (fabs (fval1) + fabs (fval2)); + }; + + mean = result_kronrod * 0.5; + + result_asc = wgk[n - 1] * fabs (f_center - mean); + + for (j = 0; j < n - 1; j++) + { + result_asc += wgk[j] * (fabs (fv1[j] - mean) + fabs (fv2[j] - mean)); + } + + /* scale by the width of the integration region */ + + err = (result_kronrod - result_gauss) * half_length; + + result_kronrod *= half_length; + result_abs *= abs_half_length; + result_asc *= abs_half_length; + + *result = result_kronrod; + *resabs = result_abs; + *resasc = result_asc; + *abserr = rescale_error (err, result_abs, result_asc); + +} diff --git a/gsl-2.5/integration/qk.lo b/gsl-2.5/integration/qk.lo new file mode 100644 index 00000000..986ac4b0 --- /dev/null +++ b/gsl-2.5/integration/qk.lo @@ -0,0 +1,12 @@ +# qk.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/qk.o' + +# Name of the non-PIC object +non_pic_object='qk.o' + diff --git a/gsl-2.5/integration/qk15.c b/gsl-2.5/integration/qk15.c new file mode 100644 index 00000000..bfba5176 --- /dev/null +++ b/gsl-2.5/integration/qk15.c @@ -0,0 +1,70 @@ +/* integration/qk15.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include + +/* Gauss quadrature weights and kronrod quadrature abscissae and + weights as evaluated with 80 decimal digit arithmetic by + L. W. Fullerton, Bell Labs, Nov. 1981. */ + +static const double xgk[8] = /* abscissae of the 15-point kronrod rule */ +{ + 0.991455371120812639206854697526329, + 0.949107912342758524526189684047851, + 0.864864423359769072789712788640926, + 0.741531185599394439863864773280788, + 0.586087235467691130294144838258730, + 0.405845151377397166906606412076961, + 0.207784955007898467600689403773245, + 0.000000000000000000000000000000000 +}; + +/* xgk[1], xgk[3], ... abscissae of the 7-point gauss rule. + xgk[0], xgk[2], ... abscissae to optimally extend the 7-point gauss rule */ + +static const double wg[4] = /* weights of the 7-point gauss rule */ +{ + 0.129484966168869693270611432679082, + 0.279705391489276667901467771423780, + 0.381830050505118944950369775488975, + 0.417959183673469387755102040816327 +}; + +static const double wgk[8] = /* weights of the 15-point kronrod rule */ +{ + 0.022935322010529224963732008058970, + 0.063092092629978553290700663189204, + 0.104790010322250183839876322541518, + 0.140653259715525918745189590510238, + 0.169004726639267902826583426598550, + 0.190350578064785409913256402421014, + 0.204432940075298892414161999234649, + 0.209482141084727828012999174891714 +}; + +void +gsl_integration_qk15 (const gsl_function * f, double a, double b, + double *result, double *abserr, + double *resabs, double *resasc) +{ + double fv1[8], fv2[8]; + gsl_integration_qk (8, xgk, wg, wgk, fv1, fv2, f, a, b, result, abserr, resabs, resasc); +} + diff --git a/gsl-2.5/integration/qk15.lo b/gsl-2.5/integration/qk15.lo new file mode 100644 index 00000000..41603c25 --- /dev/null +++ b/gsl-2.5/integration/qk15.lo @@ -0,0 +1,12 @@ +# qk15.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/qk15.o' + +# Name of the non-PIC object +non_pic_object='qk15.o' + diff --git a/gsl-2.5/integration/qk21.c b/gsl-2.5/integration/qk21.c new file mode 100644 index 00000000..1e263ed7 --- /dev/null +++ b/gsl-2.5/integration/qk21.c @@ -0,0 +1,77 @@ +/* integration/qk21.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include + +/* Gauss quadrature weights and kronrod quadrature abscissae and + weights as evaluated with 80 decimal digit arithmetic by + L. W. Fullerton, Bell Labs, Nov. 1981. */ + +static const double xgk[11] = /* abscissae of the 21-point kronrod rule */ +{ + 0.995657163025808080735527280689003, + 0.973906528517171720077964012084452, + 0.930157491355708226001207180059508, + 0.865063366688984510732096688423493, + 0.780817726586416897063717578345042, + 0.679409568299024406234327365114874, + 0.562757134668604683339000099272694, + 0.433395394129247190799265943165784, + 0.294392862701460198131126603103866, + 0.148874338981631210884826001129720, + 0.000000000000000000000000000000000 +}; + +/* xgk[1], xgk[3], ... abscissae of the 10-point gauss rule. + xgk[0], xgk[2], ... abscissae to optimally extend the 10-point gauss rule */ + +static const double wg[5] = /* weights of the 10-point gauss rule */ +{ + 0.066671344308688137593568809893332, + 0.149451349150580593145776339657697, + 0.219086362515982043995534934228163, + 0.269266719309996355091226921569469, + 0.295524224714752870173892994651338 +}; + +static const double wgk[11] = /* weights of the 21-point kronrod rule */ +{ + 0.011694638867371874278064396062192, + 0.032558162307964727478818972459390, + 0.054755896574351996031381300244580, + 0.075039674810919952767043140916190, + 0.093125454583697605535065465083366, + 0.109387158802297641899210590325805, + 0.123491976262065851077958109831074, + 0.134709217311473325928054001771707, + 0.142775938577060080797094273138717, + 0.147739104901338491374841515972068, + 0.149445554002916905664936468389821 +}; + + +void +gsl_integration_qk21 (const gsl_function * f, double a, double b, + double *result, double *abserr, + double *resabs, double *resasc) +{ + double fv1[11], fv2[11]; + gsl_integration_qk (11, xgk, wg, wgk, fv1, fv2, f, a, b, result, abserr, resabs, resasc); +} diff --git a/gsl-2.5/integration/qk21.lo b/gsl-2.5/integration/qk21.lo new file mode 100644 index 00000000..8b8db250 --- /dev/null +++ b/gsl-2.5/integration/qk21.lo @@ -0,0 +1,12 @@ +# qk21.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/qk21.o' + +# Name of the non-PIC object +non_pic_object='qk21.o' + diff --git a/gsl-2.5/integration/qk31.c b/gsl-2.5/integration/qk31.c new file mode 100644 index 00000000..3f695d13 --- /dev/null +++ b/gsl-2.5/integration/qk31.c @@ -0,0 +1,89 @@ +/* integration/qk31.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include + +/* Gauss quadrature weights and kronrod quadrature abscissae and + weights as evaluated with 80 decimal digit arithmetic by + L. W. Fullerton, Bell Labs, Nov. 1981. */ + +static const double xgk[16] = /* abscissae of the 31-point kronrod rule */ +{ + 0.998002298693397060285172840152271, + 0.987992518020485428489565718586613, + 0.967739075679139134257347978784337, + 0.937273392400705904307758947710209, + 0.897264532344081900882509656454496, + 0.848206583410427216200648320774217, + 0.790418501442465932967649294817947, + 0.724417731360170047416186054613938, + 0.650996741297416970533735895313275, + 0.570972172608538847537226737253911, + 0.485081863640239680693655740232351, + 0.394151347077563369897207370981045, + 0.299180007153168812166780024266389, + 0.201194093997434522300628303394596, + 0.101142066918717499027074231447392, + 0.000000000000000000000000000000000 +}; + +/* xgk[1], xgk[3], ... abscissae of the 15-point gauss rule. + xgk[0], xgk[2], ... abscissae to optimally extend the 15-point gauss rule */ + +static const double wg[8] = /* weights of the 15-point gauss rule */ +{ + 0.030753241996117268354628393577204, + 0.070366047488108124709267416450667, + 0.107159220467171935011869546685869, + 0.139570677926154314447804794511028, + 0.166269205816993933553200860481209, + 0.186161000015562211026800561866423, + 0.198431485327111576456118326443839, + 0.202578241925561272880620199967519 +}; + +static const double wgk[16] = /* weights of the 31-point kronrod rule */ +{ + 0.005377479872923348987792051430128, + 0.015007947329316122538374763075807, + 0.025460847326715320186874001019653, + 0.035346360791375846222037948478360, + 0.044589751324764876608227299373280, + 0.053481524690928087265343147239430, + 0.062009567800670640285139230960803, + 0.069854121318728258709520077099147, + 0.076849680757720378894432777482659, + 0.083080502823133021038289247286104, + 0.088564443056211770647275443693774, + 0.093126598170825321225486872747346, + 0.096642726983623678505179907627589, + 0.099173598721791959332393173484603, + 0.100769845523875595044946662617570, + 0.101330007014791549017374792767493 +}; + +void +gsl_integration_qk31 (const gsl_function * f, double a, double b, + double *result, double *abserr, + double *resabs, double *resasc) +{ + double fv1[16], fv2[16]; + gsl_integration_qk (16, xgk, wg, wgk, fv1, fv2, f, a, b, result, abserr, resabs, resasc); +} diff --git a/gsl-2.5/integration/qk31.lo b/gsl-2.5/integration/qk31.lo new file mode 100644 index 00000000..dda8af86 --- /dev/null +++ b/gsl-2.5/integration/qk31.lo @@ -0,0 +1,12 @@ +# qk31.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/qk31.o' + +# Name of the non-PIC object +non_pic_object='qk31.o' + diff --git a/gsl-2.5/integration/qk41.c b/gsl-2.5/integration/qk41.c new file mode 100644 index 00000000..fc02ba25 --- /dev/null +++ b/gsl-2.5/integration/qk41.c @@ -0,0 +1,102 @@ +/* integration/qk41.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include + +/* Gauss quadrature weights and kronrod quadrature abscissae and + weights as evaluated with 80 decimal digit arithmetic by + L. W. Fullerton, Bell Labs, Nov. 1981. */ + +static const double xgk[21] = /* abscissae of the 41-point kronrod rule */ +{ + 0.998859031588277663838315576545863, + 0.993128599185094924786122388471320, + 0.981507877450250259193342994720217, + 0.963971927277913791267666131197277, + 0.940822633831754753519982722212443, + 0.912234428251325905867752441203298, + 0.878276811252281976077442995113078, + 0.839116971822218823394529061701521, + 0.795041428837551198350638833272788, + 0.746331906460150792614305070355642, + 0.693237656334751384805490711845932, + 0.636053680726515025452836696226286, + 0.575140446819710315342946036586425, + 0.510867001950827098004364050955251, + 0.443593175238725103199992213492640, + 0.373706088715419560672548177024927, + 0.301627868114913004320555356858592, + 0.227785851141645078080496195368575, + 0.152605465240922675505220241022678, + 0.076526521133497333754640409398838, + 0.000000000000000000000000000000000 +}; + +/* xgk[1], xgk[3], ... abscissae of the 20-point gauss rule. + xgk[0], xgk[2], ... abscissae to optimally extend the 20-point gauss rule */ + +static const double wg[10] = /* weights of the 20-point gauss rule */ +{ + 0.017614007139152118311861962351853, + 0.040601429800386941331039952274932, + 0.062672048334109063569506535187042, + 0.083276741576704748724758143222046, + 0.101930119817240435036750135480350, + 0.118194531961518417312377377711382, + 0.131688638449176626898494499748163, + 0.142096109318382051329298325067165, + 0.149172986472603746787828737001969, + 0.152753387130725850698084331955098 +}; + +static const double wgk[21] = /* weights of the 41-point kronrod rule */ +{ + 0.003073583718520531501218293246031, + 0.008600269855642942198661787950102, + 0.014626169256971252983787960308868, + 0.020388373461266523598010231432755, + 0.025882133604951158834505067096153, + 0.031287306777032798958543119323801, + 0.036600169758200798030557240707211, + 0.041668873327973686263788305936895, + 0.046434821867497674720231880926108, + 0.050944573923728691932707670050345, + 0.055195105348285994744832372419777, + 0.059111400880639572374967220648594, + 0.062653237554781168025870122174255, + 0.065834597133618422111563556969398, + 0.068648672928521619345623411885368, + 0.071054423553444068305790361723210, + 0.073030690332786667495189417658913, + 0.074582875400499188986581418362488, + 0.075704497684556674659542775376617, + 0.076377867672080736705502835038061, + 0.076600711917999656445049901530102 +}; + +void +gsl_integration_qk41 (const gsl_function * f, double a, double b, + double *result, double *abserr, + double *resabs, double *resasc) +{ + double fv1[21], fv2[21]; + gsl_integration_qk (21, xgk, wg, wgk, fv1, fv2, f, a, b, result, abserr, resabs, resasc); +} + diff --git a/gsl-2.5/integration/qk41.lo b/gsl-2.5/integration/qk41.lo new file mode 100644 index 00000000..103b972d --- /dev/null +++ b/gsl-2.5/integration/qk41.lo @@ -0,0 +1,12 @@ +# qk41.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/qk41.o' + +# Name of the non-PIC object +non_pic_object='qk41.o' + diff --git a/gsl-2.5/integration/qk51.c b/gsl-2.5/integration/qk51.c new file mode 100644 index 00000000..b49abafa --- /dev/null +++ b/gsl-2.5/integration/qk51.c @@ -0,0 +1,117 @@ +/* integration/qk51.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include + +/* Gauss quadrature weights and kronrod quadrature abscissae and + weights as evaluated with 80 decimal digit arithmetic by + L. W. Fullerton, Bell Labs, Nov. 1981. */ + +static const double xgk[26] = /* abscissae of the 51-point kronrod rule */ +{ + 0.999262104992609834193457486540341, + 0.995556969790498097908784946893902, + 0.988035794534077247637331014577406, + 0.976663921459517511498315386479594, + 0.961614986425842512418130033660167, + 0.942974571228974339414011169658471, + 0.920747115281701561746346084546331, + 0.894991997878275368851042006782805, + 0.865847065293275595448996969588340, + 0.833442628760834001421021108693570, + 0.797873797998500059410410904994307, + 0.759259263037357630577282865204361, + 0.717766406813084388186654079773298, + 0.673566368473468364485120633247622, + 0.626810099010317412788122681624518, + 0.577662930241222967723689841612654, + 0.526325284334719182599623778158010, + 0.473002731445714960522182115009192, + 0.417885382193037748851814394594572, + 0.361172305809387837735821730127641, + 0.303089538931107830167478909980339, + 0.243866883720988432045190362797452, + 0.183718939421048892015969888759528, + 0.122864692610710396387359818808037, + 0.061544483005685078886546392366797, + 0.000000000000000000000000000000000 +}; + +/* xgk[1], xgk[3], ... abscissae of the 25-point gauss rule. + xgk[0], xgk[2], ... abscissae to optimally extend the 25-point gauss rule */ + +static const double wg[13] = /* weights of the 25-point gauss rule */ +{ + 0.011393798501026287947902964113235, + 0.026354986615032137261901815295299, + 0.040939156701306312655623487711646, + 0.054904695975835191925936891540473, + 0.068038333812356917207187185656708, + 0.080140700335001018013234959669111, + 0.091028261982963649811497220702892, + 0.100535949067050644202206890392686, + 0.108519624474263653116093957050117, + 0.114858259145711648339325545869556, + 0.119455763535784772228178126512901, + 0.122242442990310041688959518945852, + 0.123176053726715451203902873079050 +}; + +static const double wgk[26] = /* weights of the 51-point kronrod rule */ +{ + 0.001987383892330315926507851882843, + 0.005561932135356713758040236901066, + 0.009473973386174151607207710523655, + 0.013236229195571674813656405846976, + 0.016847817709128298231516667536336, + 0.020435371145882835456568292235939, + 0.024009945606953216220092489164881, + 0.027475317587851737802948455517811, + 0.030792300167387488891109020215229, + 0.034002130274329337836748795229551, + 0.037116271483415543560330625367620, + 0.040083825504032382074839284467076, + 0.042872845020170049476895792439495, + 0.045502913049921788909870584752660, + 0.047982537138836713906392255756915, + 0.050277679080715671963325259433440, + 0.052362885806407475864366712137873, + 0.054251129888545490144543370459876, + 0.055950811220412317308240686382747, + 0.057437116361567832853582693939506, + 0.058689680022394207961974175856788, + 0.059720340324174059979099291932562, + 0.060539455376045862945360267517565, + 0.061128509717053048305859030416293, + 0.061471189871425316661544131965264, + 0.061580818067832935078759824240066 +}; + +/* wgk[25] was calculated from the values of wgk[0..24] */ + +void +gsl_integration_qk51 (const gsl_function * f, double a, double b, + double *result, double *abserr, + double *resabs, double *resasc) +{ + double fv1[26], fv2[26]; + gsl_integration_qk (26, xgk, wg, wgk, fv1, fv2, f, a, b, result, abserr, resabs, resasc); +} + diff --git a/gsl-2.5/integration/qk51.lo b/gsl-2.5/integration/qk51.lo new file mode 100644 index 00000000..73de967f --- /dev/null +++ b/gsl-2.5/integration/qk51.lo @@ -0,0 +1,12 @@ +# qk51.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/qk51.o' + +# Name of the non-PIC object +non_pic_object='qk51.o' + diff --git a/gsl-2.5/integration/qk61.c b/gsl-2.5/integration/qk61.c new file mode 100644 index 00000000..b7001fc3 --- /dev/null +++ b/gsl-2.5/integration/qk61.c @@ -0,0 +1,126 @@ +/* integration/qk61.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include + +/* Gauss quadrature weights and kronrod quadrature abscissae and + weights as evaluated with 80 decimal digit arithmetic by + L. W. Fullerton, Bell Labs, Nov. 1981. */ + +static const double xgk[31] = /* abscissae of the 61-point kronrod rule */ +{ + 0.999484410050490637571325895705811, + 0.996893484074649540271630050918695, + 0.991630996870404594858628366109486, + 0.983668123279747209970032581605663, + 0.973116322501126268374693868423707, + 0.960021864968307512216871025581798, + 0.944374444748559979415831324037439, + 0.926200047429274325879324277080474, + 0.905573307699907798546522558925958, + 0.882560535792052681543116462530226, + 0.857205233546061098958658510658944, + 0.829565762382768397442898119732502, + 0.799727835821839083013668942322683, + 0.767777432104826194917977340974503, + 0.733790062453226804726171131369528, + 0.697850494793315796932292388026640, + 0.660061064126626961370053668149271, + 0.620526182989242861140477556431189, + 0.579345235826361691756024932172540, + 0.536624148142019899264169793311073, + 0.492480467861778574993693061207709, + 0.447033769538089176780609900322854, + 0.400401254830394392535476211542661, + 0.352704725530878113471037207089374, + 0.304073202273625077372677107199257, + 0.254636926167889846439805129817805, + 0.204525116682309891438957671002025, + 0.153869913608583546963794672743256, + 0.102806937966737030147096751318001, + 0.051471842555317695833025213166723, + 0.000000000000000000000000000000000 +}; + +/* xgk[1], xgk[3], ... abscissae of the 30-point gauss rule. + xgk[0], xgk[2], ... abscissae to optimally extend the 30-point gauss rule */ + +static const double wg[15] = /* weights of the 30-point gauss rule */ +{ + 0.007968192496166605615465883474674, + 0.018466468311090959142302131912047, + 0.028784707883323369349719179611292, + 0.038799192569627049596801936446348, + 0.048402672830594052902938140422808, + 0.057493156217619066481721689402056, + 0.065974229882180495128128515115962, + 0.073755974737705206268243850022191, + 0.080755895229420215354694938460530, + 0.086899787201082979802387530715126, + 0.092122522237786128717632707087619, + 0.096368737174644259639468626351810, + 0.099593420586795267062780282103569, + 0.101762389748405504596428952168554, + 0.102852652893558840341285636705415 +}; + +static const double wgk[31] = /* weights of the 61-point kronrod rule */ +{ + 0.001389013698677007624551591226760, + 0.003890461127099884051267201844516, + 0.006630703915931292173319826369750, + 0.009273279659517763428441146892024, + 0.011823015253496341742232898853251, + 0.014369729507045804812451432443580, + 0.016920889189053272627572289420322, + 0.019414141193942381173408951050128, + 0.021828035821609192297167485738339, + 0.024191162078080601365686370725232, + 0.026509954882333101610601709335075, + 0.028754048765041292843978785354334, + 0.030907257562387762472884252943092, + 0.032981447057483726031814191016854, + 0.034979338028060024137499670731468, + 0.036882364651821229223911065617136, + 0.038678945624727592950348651532281, + 0.040374538951535959111995279752468, + 0.041969810215164246147147541285970, + 0.043452539701356069316831728117073, + 0.044814800133162663192355551616723, + 0.046059238271006988116271735559374, + 0.047185546569299153945261478181099, + 0.048185861757087129140779492298305, + 0.049055434555029778887528165367238, + 0.049795683427074206357811569379942, + 0.050405921402782346840893085653585, + 0.050881795898749606492297473049805, + 0.051221547849258772170656282604944, + 0.051426128537459025933862879215781, + 0.051494729429451567558340433647099 +}; + +void +gsl_integration_qk61 (const gsl_function * f, double a, double b, + double *result, double *abserr, + double *resabs, double *resasc) +{ + double fv1[31], fv2[31]; + gsl_integration_qk (31, xgk, wg, wgk, fv1, fv2, f, a, b, result, abserr, resabs, resasc); +} diff --git a/gsl-2.5/integration/qk61.lo b/gsl-2.5/integration/qk61.lo new file mode 100644 index 00000000..732ae661 --- /dev/null +++ b/gsl-2.5/integration/qk61.lo @@ -0,0 +1,12 @@ +# qk61.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/qk61.o' + +# Name of the non-PIC object +non_pic_object='qk61.o' + diff --git a/gsl-2.5/integration/qmomo.c b/gsl-2.5/integration/qmomo.c new file mode 100644 index 00000000..f2573cdb --- /dev/null +++ b/gsl-2.5/integration/qmomo.c @@ -0,0 +1,194 @@ +/* integration/qmomo.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007, 2009 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include + +static void +initialise (double * ri, double * rj, double * rg, double * rh, + double alpha, double beta); + +gsl_integration_qaws_table * +gsl_integration_qaws_table_alloc (double alpha, double beta, int mu, int nu) +{ + gsl_integration_qaws_table * t; + + if (alpha < -1.0) + { + GSL_ERROR_VAL ("alpha must be greater than -1.0", GSL_EINVAL, 0); + } + + if (beta < -1.0) + { + GSL_ERROR_VAL ("beta must be greater than -1.0", GSL_EINVAL, 0); + } + + if (mu != 0 && mu != 1) + { + GSL_ERROR_VAL ("mu must be 0 or 1", GSL_EINVAL, 0); + } + + if (nu != 0 && nu != 1) + { + GSL_ERROR_VAL ("nu must be 0 or 1", GSL_EINVAL, 0); + } + + t = (gsl_integration_qaws_table *) + malloc(sizeof(gsl_integration_qaws_table)); + + if (t == 0) + { + GSL_ERROR_VAL ("failed to allocate space for qaws_table struct", + GSL_ENOMEM, 0); + } + + t->alpha = alpha; + t->beta = beta; + t->mu = mu; + t->nu = nu; + + initialise (t->ri, t->rj, t->rg, t->rh, alpha, beta); + + return t; +} + + +int +gsl_integration_qaws_table_set (gsl_integration_qaws_table * t, + double alpha, double beta, int mu, int nu) +{ + if (alpha < -1.0) + { + GSL_ERROR ("alpha must be greater than -1.0", GSL_EINVAL); + } + + if (beta < -1.0) + { + GSL_ERROR ("beta must be greater than -1.0", GSL_EINVAL); + } + + if (mu != 0 && mu != 1) + { + GSL_ERROR ("mu must be 0 or 1", GSL_EINVAL); + } + + if (nu != 0 && nu != 1) + { + GSL_ERROR ("nu must be 0 or 1", GSL_EINVAL); + } + + t->alpha = alpha; + t->beta = beta; + t->mu = mu; + t->nu = nu; + + initialise (t->ri, t->rj, t->rg, t->rh, alpha, beta); + + return GSL_SUCCESS; +} + + +void +gsl_integration_qaws_table_free (gsl_integration_qaws_table * t) +{ + RETURN_IF_NULL (t); + free (t); +} + +static void +initialise (double * ri, double * rj, double * rg, double * rh, + double alpha, double beta) +{ + const double alpha_p1 = alpha + 1.0; + const double beta_p1 = beta + 1.0; + + const double alpha_p2 = alpha + 2.0; + const double beta_p2 = beta + 2.0; + + const double r_alpha = pow (2.0, alpha_p1); + const double r_beta = pow (2.0, beta_p1); + + size_t i; + + double an, anm1; + + ri[0] = r_alpha / alpha_p1; + ri[1] = ri[0] * alpha / alpha_p2; + + an = 2.0; + anm1 = 1.0; + + for (i = 2; i < 25; i++) + { + ri[i] = -(r_alpha + an * (an - alpha_p2) * ri[i - 1]) + / (anm1 * (an + alpha_p1)); + anm1 = an; + an = an + 1.0; + } + + rj[0] = r_beta / beta_p1; + rj[1] = rj[0] * beta / beta_p2; + + an = 2.0; + anm1 = 1.0; + + for (i = 2; i < 25; i++) + { + rj[i] = -(r_beta + an * (an - beta_p2) * rj[i - 1]) + / (anm1 * (an + beta_p1)); + anm1 = an; + an = an + 1.0; + } + + rg[0] = -ri[0] / alpha_p1; + rg[1] = -rg[0] - 2.0 * r_alpha / (alpha_p2 * alpha_p2); + + an = 2.0; + anm1 = 1.0; + + for (i = 2; i < 25; i++) + { + rg[i] = -(an * (an - alpha_p2) * rg[i - 1] - an * ri[i - 1] + + anm1 * ri[i]) / (anm1 * (an + alpha_p1)); + anm1 = an; + an = an + 1.0; + } + + rh[0] = -rj[0] / beta_p1; + rh[1] = -rh[0] - 2.0 * r_beta / (beta_p2 * beta_p2); + + an = 2.0; + anm1 = 1.0; + + for (i = 2; i < 25; i++) + { + rh[i] = -(an * (an - beta_p2) * rh[i - 1] - an * rj[i - 1] + + anm1 * rj[i]) / (anm1 * (an + beta_p1)); + anm1 = an; + an = an + 1.0; + } + + for (i = 1; i < 25; i += 2) + { + rj[i] *= -1; + rh[i] *= -1; + } +} diff --git a/gsl-2.5/integration/qmomo.lo b/gsl-2.5/integration/qmomo.lo new file mode 100644 index 00000000..ab80af3c --- /dev/null +++ b/gsl-2.5/integration/qmomo.lo @@ -0,0 +1,12 @@ +# qmomo.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/qmomo.o' + +# Name of the non-PIC object +non_pic_object='qmomo.o' + diff --git a/gsl-2.5/integration/qmomof.c b/gsl-2.5/integration/qmomof.c new file mode 100644 index 00000000..802eaddf --- /dev/null +++ b/gsl-2.5/integration/qmomof.c @@ -0,0 +1,390 @@ +/* integration/qmomof.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include + +static void +compute_moments (double par, double * cheb); + +static int +dgtsl (size_t n, double *c, double *d, double *e, double *b); + +gsl_integration_qawo_table * +gsl_integration_qawo_table_alloc (double omega, double L, + enum gsl_integration_qawo_enum sine, + size_t n) +{ + gsl_integration_qawo_table *t; + double * chebmo; + + if (n == 0) + { + GSL_ERROR_VAL ("table length n must be positive integer", + GSL_EDOM, 0); + } + + t = (gsl_integration_qawo_table *) + malloc (sizeof (gsl_integration_qawo_table)); + + if (t == 0) + { + GSL_ERROR_VAL ("failed to allocate space for qawo_table struct", + GSL_ENOMEM, 0); + } + + chebmo = (double *) malloc (25 * n * sizeof (double)); + + if (chebmo == 0) + { + free (t); + GSL_ERROR_VAL ("failed to allocate space for chebmo block", + GSL_ENOMEM, 0); + } + + t->n = n; + t->sine = sine; + t->omega = omega; + t->L = L; + t->par = 0.5 * omega * L; + t->chebmo = chebmo; + + /* precompute the moments */ + + { + size_t i; + double scale = 1.0; + + for (i = 0 ; i < t->n; i++) + { + compute_moments (t->par * scale, t->chebmo + 25*i); + scale *= 0.5; + } + } + + return t; +} + +int +gsl_integration_qawo_table_set (gsl_integration_qawo_table * t, + double omega, double L, + enum gsl_integration_qawo_enum sine) +{ + t->omega = omega; + t->sine = sine; + t->L = L; + t->par = 0.5 * omega * L; + + /* recompute the moments */ + + { + size_t i; + double scale = 1.0; + + for (i = 0 ; i < t->n; i++) + { + compute_moments (t->par * scale, t->chebmo + 25*i); + scale *= 0.5; + } + } + + return GSL_SUCCESS; +} + + +int +gsl_integration_qawo_table_set_length (gsl_integration_qawo_table * t, + double L) +{ + /* return immediately if the length is the same as the old length */ + + if (L == t->L) + return GSL_SUCCESS; + + /* otherwise reset the table and compute the new parameters */ + + t->L = L; + t->par = 0.5 * t->omega * L; + + /* recompute the moments */ + + { + size_t i; + double scale = 1.0; + + for (i = 0 ; i < t->n; i++) + { + compute_moments (t->par * scale, t->chebmo + 25*i); + scale *= 0.5; + } + } + + return GSL_SUCCESS; +} + + +void +gsl_integration_qawo_table_free (gsl_integration_qawo_table * t) +{ + RETURN_IF_NULL (t); + free (t->chebmo); + free (t); +} + +static void +compute_moments (double par, double *chebmo) +{ + double v[28], d[25], d1[25], d2[25]; + + const size_t noeq = 25; + + const double par2 = par * par; + const double par4 = par2 * par2; + const double par22 = par2 + 2.0; + + const double sinpar = sin (par); + const double cospar = cos (par); + + size_t i; + + /* compute the chebyschev moments with respect to cosine */ + + double ac = 8 * cospar; + double as = 24 * par * sinpar; + + v[0] = 2 * sinpar / par; + v[1] = (8 * cospar + (2 * par2 - 8) * sinpar / par) / par2; + v[2] = (32 * (par2 - 12) * cospar + + (2 * ((par2 - 80) * par2 + 192) * sinpar) / par) / par4; + + if (fabs (par) <= 24) + { + /* compute the moments as the solution of a boundary value + problem using the asyptotic expansion as an endpoint */ + + double an2, ass, asap; + double an = 6; + size_t k; + + for (k = 0; k < noeq - 1; k++) + { + an2 = an * an; + d[k] = -2 * (an2 - 4) * (par22 - 2 * an2); + d2[k] = (an - 1) * (an - 2) * par2; + d1[k + 1] = (an + 3) * (an + 4) * par2; + v[k + 3] = as - (an2 - 4) * ac; + an = an + 2.0; + } + + an2 = an * an; + + d[noeq - 1] = -2 * (an2 - 4) * (par22 - 2 * an2); + v[noeq + 2] = as - (an2 - 4) * ac; + v[3] = v[3] - 56 * par2 * v[2]; + + ass = par * sinpar; + asap = (((((210 * par2 - 1) * cospar - (105 * par2 - 63) * ass) / an2 + - (1 - 15 * par2) * cospar + 15 * ass) / an2 + - cospar + 3 * ass) / an2 + - cospar) / an2; + v[noeq + 2] = v[noeq + 2] - 2 * asap * par2 * (an - 1) * (an - 2); + + dgtsl (noeq, d1, d, d2, v + 3); + + } + else + { + /* compute the moments by forward recursion */ + size_t k; + double an = 4; + + for (k = 3; k < 13; k++) + { + double an2 = an * an; + v[k] = ((an2 - 4) * (2 * (par22 - 2 * an2) * v[k - 1] - ac) + + as - par2 * (an + 1) * (an + 2) * v[k - 2]) + / (par2 * (an - 1) * (an - 2)); + an = an + 2.0; + } + } + + + for (i = 0; i < 13; i++) + { + chebmo[2 * i] = v[i]; + } + + /* compute the chebyschev moments with respect to sine */ + + v[0] = 2 * (sinpar - par * cospar) / par2; + v[1] = (18 - 48 / par2) * sinpar / par2 + (-2 + 48 / par2) * cospar / par; + + ac = -24 * par * cospar; + as = -8 * sinpar; + + if (fabs (par) <= 24) + { + /* compute the moments as the solution of a boundary value + problem using the asyptotic expansion as an endpoint */ + + size_t k; + double an2, ass, asap; + double an = 5; + + for (k = 0; k < noeq - 1; k++) + { + an2 = an * an; + d[k] = -2 * (an2 - 4) * (par22 - 2 * an2); + d2[k] = (an - 1) * (an - 2) * par2; + d1[k + 1] = (an + 3) * (an + 4) * par2; + v[k + 2] = ac + (an2 - 4) * as; + an = an + 2.0; + } + + an2 = an * an; + + d[noeq - 1] = -2 * (an2 - 4) * (par22 - 2 * an2); + v[noeq + 1] = ac + (an2 - 4) * as; + v[2] = v[2] - 42 * par2 * v[1]; + + ass = par * cospar; + asap = (((((105 * par2 - 63) * ass - (210 * par2 - 1) * sinpar) / an2 + + (15 * par2 - 1) * sinpar + - 15 * ass) / an2 - sinpar - 3 * ass) / an2 - sinpar) / an2; + v[noeq + 1] = v[noeq + 1] - 2 * asap * par2 * (an - 1) * (an - 2); + + dgtsl (noeq, d1, d, d2, v + 2); + + } + else + { + /* compute the moments by forward recursion */ + size_t k; + double an = 3; + for (k = 2; k < 12; k++) + { + double an2 = an * an; + v[k] = ((an2 - 4) * (2 * (par22 - 2 * an2) * v[k - 1] + as) + + ac - par2 * (an + 1) * (an + 2) * v[k - 2]) + / (par2 * (an - 1) * (an - 2)); + an = an + 2.0; + } + } + + for (i = 0; i < 12; i++) + { + chebmo[2 * i + 1] = v[i]; + } + +} + +static int +dgtsl (size_t n, double *c, double *d, double *e, double *b) +{ + /* solves a tridiagonal matrix A x = b + + c[1 .. n - 1] subdiagonal of the matrix A + d[0 .. n - 1] diagonal of the matrix A + e[0 .. n - 2] superdiagonal of the matrix A + + b[0 .. n - 1] right hand side, replaced by the solution vector x */ + + size_t k; + + c[0] = d[0]; + + if (n == 0) + { + return GSL_SUCCESS; + } + + if (n == 1) + { + b[0] = b[0] / d[0] ; + return GSL_SUCCESS; + } + + d[0] = e[0]; + e[0] = 0; + e[n - 1] = 0; + + for (k = 0; k < n - 1; k++) + { + size_t k1 = k + 1; + + if (fabs (c[k1]) >= fabs (c[k])) + { + { + double t = c[k1]; + c[k1] = c[k]; + c[k] = t; + }; + { + double t = d[k1]; + d[k1] = d[k]; + d[k] = t; + }; + { + double t = e[k1]; + e[k1] = e[k]; + e[k] = t; + }; + { + double t = b[k1]; + b[k1] = b[k]; + b[k] = t; + }; + } + + if (c[k] == 0) + { + return GSL_FAILURE ; + } + + { + double t = -c[k1] / c[k]; + + c[k1] = d[k1] + t * d[k]; + d[k1] = e[k1] + t * e[k]; + e[k1] = 0; + b[k1] = b[k1] + t * b[k]; + } + + } + + if (c[n - 1] == 0) + { + return GSL_FAILURE; + } + + + b[n - 1] = b[n - 1] / c[n - 1]; + + b[n - 2] = (b[n - 2] - d[n - 2] * b[n - 1]) / c[n - 2]; + + for (k = n ; k > 2; k--) + { + size_t kb = k - 3; + b[kb] = (b[kb] - d[kb] * b[kb + 1] - e[kb] * b[kb + 2]) / c[kb]; + } + + return GSL_SUCCESS; +} diff --git a/gsl-2.5/integration/qmomof.lo b/gsl-2.5/integration/qmomof.lo new file mode 100644 index 00000000..60241073 --- /dev/null +++ b/gsl-2.5/integration/qmomof.lo @@ -0,0 +1,12 @@ +# qmomof.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/qmomof.o' + +# Name of the non-PIC object +non_pic_object='qmomof.o' + diff --git a/gsl-2.5/integration/qng.c b/gsl-2.5/integration/qng.c new file mode 100644 index 00000000..e4b22ce7 --- /dev/null +++ b/gsl-2.5/integration/qng.c @@ -0,0 +1,190 @@ +/* integration/qng.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include + +#include "err.c" +#include "qng.h" + +int +gsl_integration_qng (const gsl_function *f, + double a, double b, + double epsabs, double epsrel, + double * result, double * abserr, size_t * neval) +{ + double fv1[5], fv2[5], fv3[5], fv4[5]; + double savfun[21]; /* array of function values which have been computed */ + double res10, res21, res43, res87; /* 10, 21, 43 and 87 point results */ + double result_kronrod, err ; + double resabs; /* approximation to the integral of abs(f) */ + double resasc; /* approximation to the integral of abs(f-i/(b-a)) */ + + const double half_length = 0.5 * (b - a); + const double abs_half_length = fabs (half_length); + const double center = 0.5 * (b + a); + const double f_center = GSL_FN_EVAL(f, center); + + int k ; + + if (epsabs <= 0 && (epsrel < 50 * GSL_DBL_EPSILON || epsrel < 0.5e-28)) + { + * result = 0; + * abserr = 0; + * neval = 0; + GSL_ERROR ("tolerance cannot be achieved with given epsabs and epsrel", + GSL_EBADTOL); + }; + + /* Compute the integral using the 10- and 21-point formula. */ + + res10 = 0; + res21 = w21b[5] * f_center; + resabs = w21b[5] * fabs (f_center); + + for (k = 0; k < 5; k++) + { + const double abscissa = half_length * x1[k]; + const double fval1 = GSL_FN_EVAL(f, center + abscissa); + const double fval2 = GSL_FN_EVAL(f, center - abscissa); + const double fval = fval1 + fval2; + res10 += w10[k] * fval; + res21 += w21a[k] * fval; + resabs += w21a[k] * (fabs (fval1) + fabs (fval2)); + savfun[k] = fval; + fv1[k] = fval1; + fv2[k] = fval2; + } + + for (k = 0; k < 5; k++) + { + const double abscissa = half_length * x2[k]; + const double fval1 = GSL_FN_EVAL(f, center + abscissa); + const double fval2 = GSL_FN_EVAL(f, center - abscissa); + const double fval = fval1 + fval2; + res21 += w21b[k] * fval; + resabs += w21b[k] * (fabs (fval1) + fabs (fval2)); + savfun[k + 5] = fval; + fv3[k] = fval1; + fv4[k] = fval2; + } + + resabs *= abs_half_length ; + + { + const double mean = 0.5 * res21; + + resasc = w21b[5] * fabs (f_center - mean); + + for (k = 0; k < 5; k++) + { + resasc += + (w21a[k] * (fabs (fv1[k] - mean) + fabs (fv2[k] - mean)) + + w21b[k] * (fabs (fv3[k] - mean) + fabs (fv4[k] - mean))); + } + resasc *= abs_half_length ; + } + + result_kronrod = res21 * half_length; + + err = rescale_error ((res21 - res10) * half_length, resabs, resasc) ; + + /* test for convergence. */ + + if (err < epsabs || err < epsrel * fabs (result_kronrod)) + { + * result = result_kronrod ; + * abserr = err ; + * neval = 21; + return GSL_SUCCESS; + } + + /* compute the integral using the 43-point formula. */ + + res43 = w43b[11] * f_center; + + for (k = 0; k < 10; k++) + { + res43 += savfun[k] * w43a[k]; + } + + for (k = 0; k < 11; k++) + { + const double abscissa = half_length * x3[k]; + const double fval = (GSL_FN_EVAL(f, center + abscissa) + + GSL_FN_EVAL(f, center - abscissa)); + res43 += fval * w43b[k]; + savfun[k + 10] = fval; + } + + /* test for convergence */ + + result_kronrod = res43 * half_length; + err = rescale_error ((res43 - res21) * half_length, resabs, resasc); + + if (err < epsabs || err < epsrel * fabs (result_kronrod)) + { + * result = result_kronrod ; + * abserr = err ; + * neval = 43; + return GSL_SUCCESS; + } + + /* compute the integral using the 87-point formula. */ + + res87 = w87b[22] * f_center; + + for (k = 0; k < 21; k++) + { + res87 += savfun[k] * w87a[k]; + } + + for (k = 0; k < 22; k++) + { + const double abscissa = half_length * x4[k]; + res87 += w87b[k] * (GSL_FN_EVAL(f, center + abscissa) + + GSL_FN_EVAL(f, center - abscissa)); + } + + /* test for convergence */ + + result_kronrod = res87 * half_length ; + + err = rescale_error ((res87 - res43) * half_length, resabs, resasc); + + if (err < epsabs || err < epsrel * fabs (result_kronrod)) + { + * result = result_kronrod ; + * abserr = err ; + * neval = 87; + return GSL_SUCCESS; + } + + /* failed to converge */ + + * result = result_kronrod ; + * abserr = err ; + * neval = 87; + + GSL_ERROR("failed to reach tolerance with highest-order rule", GSL_ETOL) ; +} diff --git a/gsl-2.5/integration/qng.h b/gsl-2.5/integration/qng.h new file mode 100644 index 00000000..cfa7ef53 --- /dev/null +++ b/gsl-2.5/integration/qng.h @@ -0,0 +1,193 @@ +/* integration/qng.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Gauss-Kronrod-Patterson quadrature coefficients for use in + quadpack routine qng. These coefficients were calculated with + 101 decimal digit arithmetic by L. W. Fullerton, Bell Labs, Nov + 1981. */ + +/* x1, abscissae common to the 10-, 21-, 43- and 87-point rule */ +static const double x1[5] = { + 0.973906528517171720077964012084452, + 0.865063366688984510732096688423493, + 0.679409568299024406234327365114874, + 0.433395394129247190799265943165784, + 0.148874338981631210884826001129720 +} ; + +/* w10, weights of the 10-point formula */ +static const double w10[5] = { + 0.066671344308688137593568809893332, + 0.149451349150580593145776339657697, + 0.219086362515982043995534934228163, + 0.269266719309996355091226921569469, + 0.295524224714752870173892994651338 +} ; + +/* x2, abscissae common to the 21-, 43- and 87-point rule */ +static const double x2[5] = { + 0.995657163025808080735527280689003, + 0.930157491355708226001207180059508, + 0.780817726586416897063717578345042, + 0.562757134668604683339000099272694, + 0.294392862701460198131126603103866 +} ; + +/* w21a, weights of the 21-point formula for abscissae x1 */ +static const double w21a[5] = { + 0.032558162307964727478818972459390, + 0.075039674810919952767043140916190, + 0.109387158802297641899210590325805, + 0.134709217311473325928054001771707, + 0.147739104901338491374841515972068 +} ; + +/* w21b, weights of the 21-point formula for abscissae x2 */ +static const double w21b[6] = { + 0.011694638867371874278064396062192, + 0.054755896574351996031381300244580, + 0.093125454583697605535065465083366, + 0.123491976262065851077958109831074, + 0.142775938577060080797094273138717, + 0.149445554002916905664936468389821 +} ; + +/* x3, abscissae common to the 43- and 87-point rule */ +static const double x3[11] = { + 0.999333360901932081394099323919911, + 0.987433402908088869795961478381209, + 0.954807934814266299257919200290473, + 0.900148695748328293625099494069092, + 0.825198314983114150847066732588520, + 0.732148388989304982612354848755461, + 0.622847970537725238641159120344323, + 0.499479574071056499952214885499755, + 0.364901661346580768043989548502644, + 0.222254919776601296498260928066212, + 0.074650617461383322043914435796506 +} ; + +/* w43a, weights of the 43-point formula for abscissae x1, x3 */ +static const double w43a[10] = { + 0.016296734289666564924281974617663, + 0.037522876120869501461613795898115, + 0.054694902058255442147212685465005, + 0.067355414609478086075553166302174, + 0.073870199632393953432140695251367, + 0.005768556059769796184184327908655, + 0.027371890593248842081276069289151, + 0.046560826910428830743339154433824, + 0.061744995201442564496240336030883, + 0.071387267268693397768559114425516 +} ; + +/* w43b, weights of the 43-point formula for abscissae x3 */ +static const double w43b[12] = { + 0.001844477640212414100389106552965, + 0.010798689585891651740465406741293, + 0.021895363867795428102523123075149, + 0.032597463975345689443882222526137, + 0.042163137935191811847627924327955, + 0.050741939600184577780189020092084, + 0.058379395542619248375475369330206, + 0.064746404951445885544689259517511, + 0.069566197912356484528633315038405, + 0.072824441471833208150939535192842, + 0.074507751014175118273571813842889, + 0.074722147517403005594425168280423 +} ; + +/* x4, abscissae of the 87-point rule */ +static const double x4[22] = { + 0.999902977262729234490529830591582, + 0.997989895986678745427496322365960, + 0.992175497860687222808523352251425, + 0.981358163572712773571916941623894, + 0.965057623858384619128284110607926, + 0.943167613133670596816416634507426, + 0.915806414685507209591826430720050, + 0.883221657771316501372117548744163, + 0.845710748462415666605902011504855, + 0.803557658035230982788739474980964, + 0.757005730685495558328942793432020, + 0.706273209787321819824094274740840, + 0.651589466501177922534422205016736, + 0.593223374057961088875273770349144, + 0.531493605970831932285268948562671, + 0.466763623042022844871966781659270, + 0.399424847859218804732101665817923, + 0.329874877106188288265053371824597, + 0.258503559202161551802280975429025, + 0.185695396568346652015917141167606, + 0.111842213179907468172398359241362, + 0.037352123394619870814998165437704 +} ; + +/* w87a, weights of the 87-point formula for abscissae x1, x2, x3 */ +static const double w87a[21] = { + 0.008148377384149172900002878448190, + 0.018761438201562822243935059003794, + 0.027347451050052286161582829741283, + 0.033677707311637930046581056957588, + 0.036935099820427907614589586742499, + 0.002884872430211530501334156248695, + 0.013685946022712701888950035273128, + 0.023280413502888311123409291030404, + 0.030872497611713358675466394126442, + 0.035693633639418770719351355457044, + 0.000915283345202241360843392549948, + 0.005399280219300471367738743391053, + 0.010947679601118931134327826856808, + 0.016298731696787335262665703223280, + 0.021081568889203835112433060188190, + 0.025370969769253827243467999831710, + 0.029189697756475752501446154084920, + 0.032373202467202789685788194889595, + 0.034783098950365142750781997949596, + 0.036412220731351787562801163687577, + 0.037253875503047708539592001191226 +} ; + +/* w87b, weights of the 87-point formula for abscissae x4 */ +static const double w87b[23] = { + 0.000274145563762072350016527092881, + 0.001807124155057942948341311753254, + 0.004096869282759164864458070683480, + 0.006758290051847378699816577897424, + 0.009549957672201646536053581325377, + 0.012329447652244853694626639963780, + 0.015010447346388952376697286041943, + 0.017548967986243191099665352925900, + 0.019938037786440888202278192730714, + 0.022194935961012286796332102959499, + 0.024339147126000805470360647041454, + 0.026374505414839207241503786552615, + 0.028286910788771200659968002987960, + 0.030052581128092695322521110347341, + 0.031646751371439929404586051078883, + 0.033050413419978503290785944862689, + 0.034255099704226061787082821046821, + 0.035262412660156681033782717998428, + 0.036076989622888701185500318003895, + 0.036698604498456094498018047441094, + 0.037120549269832576114119958413599, + 0.037334228751935040321235449094698, + 0.037361073762679023410321241766599 +} ; + diff --git a/gsl-2.5/integration/qng.lo b/gsl-2.5/integration/qng.lo new file mode 100644 index 00000000..b54b575d --- /dev/null +++ b/gsl-2.5/integration/qng.lo @@ -0,0 +1,12 @@ +# qng.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/qng.o' + +# Name of the non-PIC object +non_pic_object='qng.o' + diff --git a/gsl-2.5/integration/qpsrt.c b/gsl-2.5/integration/qpsrt.c new file mode 100644 index 00000000..13718267 --- /dev/null +++ b/gsl-2.5/integration/qpsrt.c @@ -0,0 +1,113 @@ +/* integration/qpsrt.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +static inline void +qpsrt (gsl_integration_workspace * workspace); + +static inline +void qpsrt (gsl_integration_workspace * workspace) +{ + const size_t last = workspace->size - 1; + const size_t limit = workspace->limit; + + double * elist = workspace->elist; + size_t * order = workspace->order; + + double errmax ; + double errmin ; + int i, k, top; + + size_t i_nrmax = workspace->nrmax; + size_t i_maxerr = order[i_nrmax] ; + + /* Check whether the list contains more than two error estimates */ + + if (last < 2) + { + order[0] = 0 ; + order[1] = 1 ; + workspace->i = i_maxerr ; + return ; + } + + errmax = elist[i_maxerr] ; + + /* This part of the routine is only executed if, due to a difficult + integrand, subdivision increased the error estimate. In the normal + case the insert procedure should start after the nrmax-th largest + error estimate. */ + + while (i_nrmax > 0 && errmax > elist[order[i_nrmax - 1]]) + { + order[i_nrmax] = order[i_nrmax - 1] ; + i_nrmax-- ; + } + + /* Compute the number of elements in the list to be maintained in + descending order. This number depends on the number of + subdivisions still allowed. */ + + if(last < (limit/2 + 2)) + { + top = last ; + } + else + { + top = limit - last + 1; + } + + /* Insert errmax by traversing the list top-down, starting + comparison from the element elist(order(i_nrmax+1)). */ + + i = i_nrmax + 1 ; + + /* The order of the tests in the following line is important to + prevent a segmentation fault */ + + while (i < top && errmax < elist[order[i]]) + { + order[i-1] = order[i] ; + i++ ; + } + + order[i-1] = i_maxerr ; + + /* Insert errmin by traversing the list bottom-up */ + + errmin = elist[last] ; + + k = top - 1 ; + + while (k > i - 2 && errmin >= elist[order[k]]) + { + order[k+1] = order[k] ; + k-- ; + } + + order[k+1] = last ; + + /* Set i_max and e_max */ + + i_maxerr = order[i_nrmax] ; + + workspace->i = i_maxerr ; + workspace->nrmax = i_nrmax ; +} + + diff --git a/gsl-2.5/integration/qpsrt2.c b/gsl-2.5/integration/qpsrt2.c new file mode 100644 index 00000000..d8335f84 --- /dev/null +++ b/gsl-2.5/integration/qpsrt2.c @@ -0,0 +1,81 @@ +/* integration/qpsrt2.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* The smallest interval has the largest error. Before bisecting + decrease the sum of the errors over the larger intervals + (error_over_large_intervals) and perform extrapolation. */ + +static int +increase_nrmax (gsl_integration_workspace * workspace); + +static int +increase_nrmax (gsl_integration_workspace * workspace) +{ + int k; + int id = workspace->nrmax; + int jupbnd; + + const size_t * level = workspace->level; + const size_t * order = workspace->order; + + size_t limit = workspace->limit ; + size_t last = workspace->size - 1 ; + + if (last > (1 + limit / 2)) + { + jupbnd = limit + 1 - last; + } + else + { + jupbnd = last; + } + + for (k = id; k <= jupbnd; k++) + { + size_t i_max = order[workspace->nrmax]; + + workspace->i = i_max ; + + if (level[i_max] < workspace->maximum_level) + { + return 1; + } + + workspace->nrmax++; + + } + return 0; +} + +static int +large_interval (gsl_integration_workspace * workspace) +{ + size_t i = workspace->i ; + const size_t * level = workspace->level; + + if (level[i] < workspace->maximum_level) + { + return 1 ; + } + else + { + return 0 ; + } +} + diff --git a/gsl-2.5/integration/rational.c b/gsl-2.5/integration/rational.c new file mode 100644 index 00000000..b6f1960f --- /dev/null +++ b/gsl-2.5/integration/rational.c @@ -0,0 +1,96 @@ +/* integration/rational.c + * + * Copyright (C) 2017 Konrad Griessinger, Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* + * The code in this module is based on IQPACK, specifically the LGPL + * implementation found in HERMITE_RULE: + * https://people.sc.fsu.edu/~jburkardt/c_src/hermite_rule/hermite_rule.html + */ + +#include +#include +#include +#include +#include + +static int +rational_check(const size_t n, const gsl_integration_fixed_params * params) +{ + if (fabs(params->b - params->a) <= GSL_DBL_EPSILON) + { + GSL_ERROR("|b - a| too small", GSL_EDOM); + } + else if (params->alpha <= -1.0) + { + GSL_ERROR("alpha must be > -1", GSL_EDOM); + } + else if (params->beta >= 0.0 || params->alpha+params->beta+2*n >= 0.0 || 0.0 >= params->alpha+2*n) + { + GSL_ERROR("beta < alpha + beta + 2n < 0 is required", GSL_EDOM); + } + else if (params->a + params->b <= 0.0) + { + GSL_ERROR("a + b <= 0 is not allowed", GSL_EDOM); + } + else + { + return GSL_SUCCESS; + } +} + +static int +rational_init(const size_t n, double * diag, double * subdiag, gsl_integration_fixed_params * params) +{ + const double absum = params->beta + params->alpha; + const double a1 = params->alpha + 1.0; + const double aba1 = absum*a1; + double ab2i = absum + 2.0; + size_t i; + + /* construct the diagonal and subdiagonal elements of Jacobi matrix */ + + diag[0] = -a1/(absum + 2.0); + subdiag[0] = sqrt( -diag[0] * ( params->beta + 1.0 ) / ( (absum + 2.0)*(absum + 3.0) ) ); + + for (i = 1; i < n-1; i++) + { + ab2i += 2.0; + diag[i] = ( -aba1 - 2.0 * i * ( absum + i + 1.0 ) ) / ( ab2i * ( ab2i - 2.0 ) ); + subdiag[i] = sqrt( (i+1.0) * ( params->alpha + i + 1.0 ) / ( ab2i - 1.0 ) * ( params->beta + i + 1.0 ) / ( ab2i * ab2i ) * ( absum + i + 1.0 ) / ( ab2i + 1.0 ) ); + } + + diag[n-1] = ( -aba1 - 2.0 * (n-1.0) * ( absum + n ) ) / ( (absum + 2.0*n) * ( absum + 2.0*n - 2.0 ) ); + subdiag[n-1] = 0.0; + + params->zemu = gsl_sf_gamma(params->alpha + 1.0) * gsl_sf_gamma(-absum - 1.0) / gsl_sf_gamma(-params->beta); + params->shft = params->a; + params->slp = params->b + params->a; + params->al = params->alpha; + params->be = params->beta; + + return GSL_SUCCESS; +} + +static const gsl_integration_fixed_type rational_type = +{ + rational_check, + rational_init +}; + +const gsl_integration_fixed_type *gsl_integration_fixed_rational = &rational_type; diff --git a/gsl-2.5/integration/rational.lo b/gsl-2.5/integration/rational.lo new file mode 100644 index 00000000..ec1b0b94 --- /dev/null +++ b/gsl-2.5/integration/rational.lo @@ -0,0 +1,12 @@ +# rational.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/rational.o' + +# Name of the non-PIC object +non_pic_object='rational.o' + diff --git a/gsl-2.5/integration/reset.c b/gsl-2.5/integration/reset.c new file mode 100644 index 00000000..424b8373 --- /dev/null +++ b/gsl-2.5/integration/reset.c @@ -0,0 +1,9 @@ +static inline void +reset_nrmax (gsl_integration_workspace * workspace); + +static inline void +reset_nrmax (gsl_integration_workspace * workspace) +{ + workspace->nrmax = 0; + workspace->i = workspace->order[0] ; +} diff --git a/gsl-2.5/integration/romberg.c b/gsl-2.5/integration/romberg.c new file mode 100644 index 00000000..581d087e --- /dev/null +++ b/gsl-2.5/integration/romberg.c @@ -0,0 +1,164 @@ +/* integration/romberg.c + * + * Copyright (C) 2018 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* the code in this module performs Romberg integration */ + +#include +#include +#include +#include +#include + +#define ROMBERG_PRINT_ROW(i, r) \ + do { \ + size_t jj; \ + fprintf(stderr, "R[%zu] = ", i); \ + for (jj = 0; jj <= i; ++jj) \ + fprintf(stderr, "%.8e ", r[jj]); \ + fprintf(stderr, "\n"); \ + } while (0) + +gsl_integration_romberg_workspace * +gsl_integration_romberg_alloc(const size_t n) +{ + gsl_integration_romberg_workspace *w; + + /* check inputs */ + if (n < 1) + { + GSL_ERROR_VAL ("workspace size n must be at least 1", GSL_EDOM, 0); + } + + w = calloc(1, sizeof(gsl_integration_romberg_workspace)); + if (w == NULL) + { + GSL_ERROR_VAL ("unable to allocate workspace", GSL_ENOMEM, 0); + } + + /* ceiling on n, since the number of points is 2^n + 1 */ + w->n = GSL_MIN(n, 30); + + w->work1 = malloc(w->n * sizeof(double)); + if (w->work1 == NULL) + { + gsl_integration_romberg_free(w); + GSL_ERROR_VAL ("unable to allocate previous row", GSL_ENOMEM, 0); + } + + w->work2 = malloc(w->n * sizeof(double)); + if (w->work2 == NULL) + { + gsl_integration_romberg_free(w); + GSL_ERROR_VAL ("unable to allocate current row", GSL_ENOMEM, 0); + } + + return w; +} + +void +gsl_integration_romberg_free(gsl_integration_romberg_workspace * w) +{ + if (w->work1) + free(w->work1); + + if (w->work2) + free(w->work2); + + free(w); +} + +int +gsl_integration_romberg(const gsl_function * f, const double a, const double b, + const double epsabs, const double epsrel, double * result, + size_t * neval, gsl_integration_romberg_workspace * w) +{ + if (epsabs < 0.0) + { + GSL_ERROR("epsabs must be non-negative", GSL_EDOM); + } + else if (epsrel < 0.0) + { + GSL_ERROR("epsrel must be non-negative", GSL_EDOM); + } + else + { + const size_t n = w->n; + double *Rp = &(w->work1[0]); /* previous row */ + double *Rc = &(w->work2[0]); /* current row */ + double *Rtmp; + double h = 0.5 * (b - a); /* step size */ + size_t i; + + /* R(0,0) */ + Rp[0] = h * (GSL_FN_EVAL(f, a) + GSL_FN_EVAL(f, b)); + *neval = 2; + + /*ROMBERG_PRINT_ROW((size_t) 0, Rp);*/ + + for (i = 1; i < n; ++i) + { + size_t j; + double sum = 0.0; + double err; + double four_j; /* 4^j */ + size_t two_i = 1 << i; /* 2^i */ + + for (j = 1; j < two_i; j += 2) + { + sum += GSL_FN_EVAL(f, a + j * h); + ++(*neval); + } + + /* R(i,0) */ + Rc[0] = sum * h + 0.5 * Rp[0]; + + four_j = 4.0; + for (j = 1; j <= i; ++j) + { + Rc[j] = (four_j * Rc[j - 1] - Rp[j - 1]) / (four_j - 1.0); + four_j *= 4.0; + } + + /*ROMBERG_PRINT_ROW(i, Rc);*/ + + /* + * compute difference between current and previous result and + * check for convergence + */ + err = fabs(Rc[i] - Rp[i - 1]); + if ((err < epsabs) || (err < epsrel * fabs(Rc[i]))) + { + *result = Rc[i]; + return GSL_SUCCESS; + } + + /* swap Rp and Rc */ + Rtmp = Rp; + Rp = Rc; + Rc = Rtmp; + + h *= 0.5; + } + + /* did not converge - return best guess */ + *result = Rp[n - 1]; + + return GSL_EMAXITER; + } +} diff --git a/gsl-2.5/integration/romberg.lo b/gsl-2.5/integration/romberg.lo new file mode 100644 index 00000000..e6da45f7 --- /dev/null +++ b/gsl-2.5/integration/romberg.lo @@ -0,0 +1,12 @@ +# romberg.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/romberg.o' + +# Name of the non-PIC object +non_pic_object='romberg.o' + diff --git a/gsl-2.5/integration/set_initial.c b/gsl-2.5/integration/set_initial.c new file mode 100644 index 00000000..410a2135 --- /dev/null +++ b/gsl-2.5/integration/set_initial.c @@ -0,0 +1,12 @@ +static inline +void set_initial_result (gsl_integration_workspace * workspace, + double result, double error); + +static inline +void set_initial_result (gsl_integration_workspace * workspace, + double result, double error) +{ + workspace->size = 1; + workspace->rlist[0] = result; + workspace->elist[0] = error; +} diff --git a/gsl-2.5/integration/test b/gsl-2.5/integration/test new file mode 100755 index 00000000..35aa3991 Binary files /dev/null and b/gsl-2.5/integration/test differ diff --git a/gsl-2.5/integration/test-suite.log b/gsl-2.5/integration/test-suite.log new file mode 100644 index 00000000..18e3eb18 --- /dev/null +++ b/gsl-2.5/integration/test-suite.log @@ -0,0 +1,14 @@ +========================================= + gsl 2.5: integration/test-suite.log +========================================= + +# TOTAL: 1 +# PASS: 1 +# SKIP: 0 +# XFAIL: 0 +# FAIL: 0 +# XPASS: 0 +# ERROR: 0 + +.. contents:: :depth: 2 + diff --git a/gsl-2.5/integration/test.c b/gsl-2.5/integration/test.c new file mode 100644 index 00000000..06474ad1 --- /dev/null +++ b/gsl-2.5/integration/test.c @@ -0,0 +1,2640 @@ +/* integration/test.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * Copyright (C) 2017, 2018 Patrick Alken + * Copyright (C) 2017 Konrad Griessinger + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "tests.h" + +#define SQRT15 3.8729833462074168852 +#define SQRT30 5.4772255750516611346 +#define SQRT70 8.3666002653407554798 +#define CONST1 0.86113631159405257522 /* sqrt((3+2*sqrt(6./5))/7) */ +#define CONST2 0.33998104358485626480 /* sqrt((3-2*sqrt(6./5))/7) */ +#define CONST3 0.90617984593866399280 /* sqrt((5+2*sqrt(10./7)))/3 */ +#define CONST4 0.53846931010568309104 /* sqrt((5-2*sqrt(10./7)))/3 */ + +gsl_function make_function (double (* f) (double, void *), double * p); + +gsl_function make_function (double (* f) (double, void *), double * p) +{ + gsl_function f_new; + + f_new.function = f ; + f_new.params = p ; + + return f_new; +} + +struct counter_params { + gsl_function * f; + int neval; +} ; + +double counter (double x, void * params); +gsl_function make_counter (gsl_function * f, struct counter_params * p); + +double +counter (double x, void * params) +{ + struct counter_params * p = (struct counter_params *) params; + p->neval++ ; /* increment counter */ + return GSL_FN_EVAL(p->f, x); +} + +gsl_function make_counter (gsl_function * f, struct counter_params * p) +{ + gsl_function f_new; + + p->f = f; + p->neval = 0 ; + + f_new.function = &counter ; + f_new.params = p ; + + return f_new; +} + +void my_error_handler (const char *reason, const char *file, + int line, int err); + +static int +test_fixed_quadrature(const gsl_integration_fixed_type * T, const size_t n, + const double a, const double b, const double alpha, const double beta, + const double tol, const double exact, const gsl_function * f, const char * desc) +{ + int status = GSL_SUCCESS; + gsl_integration_fixed_workspace * w = gsl_integration_fixed_alloc(T, n, a, b, alpha, beta); + char buf[2048]; + double result; + + sprintf(buf, "%s a=%g b=%g alpha=%g beta=%g", desc, a, b, alpha, beta); + + gsl_integration_fixed(f, &result, w); + gsl_test_rel (result, exact, tol, "%s", buf); + + gsl_integration_fixed_free(w); + + return status; +} + + +int +main (void) +{ + gsl_ieee_env_setup (); + gsl_set_error_handler (&my_error_handler); + + /* Test the basic Gauss-Kronrod rules with a smooth positive function. */ + + { + double result = 0, abserr = 0, resabs = 0, resasc = 0 ; + double exp_result = 7.716049357767090777E-02; + double exp_abserr = 2.990224871000550874E-06; + double exp_resabs = 7.716049357767090777E-02; + double exp_resasc = 4.434273814139995384E-02; + + double alpha = 2.6 ; + gsl_function f = make_function(&f1, &alpha) ; + + gsl_integration_qk15 (&f, 0.0, 1.0, + &result, &abserr, &resabs, &resasc) ; + gsl_test_rel(result,exp_result,1e-15,"qk15(f1) smooth result") ; + gsl_test_rel(abserr,exp_abserr,1e-7,"qk15(f1) smooth abserr") ; + gsl_test_rel(resabs,exp_resabs,1e-15,"qk15(f1) smooth resabs") ; + gsl_test_rel(resasc,exp_resasc,1e-15,"qk15(f1) smooth resasc") ; + + gsl_integration_qk15 (&f, 1.0, 0.0, + &result, &abserr, &resabs, &resasc) ; + + gsl_test_rel(result,-exp_result,1e-15,"qk15(f1) reverse result") ; + gsl_test_rel(abserr,exp_abserr,1e-7,"qk15(f1) reverse abserr") ; + gsl_test_rel(resabs,exp_resabs,1e-15,"qk15(f1) reverse resabs") ; + gsl_test_rel(resasc,exp_resasc,1e-15,"qk15(f1) reverse resasc") ; + } + + { + double result = 0, abserr = 0, resabs = 0, resasc = 0 ; + double exp_result = 7.716049379303084599E-02; + double exp_abserr = 9.424302194248481445E-08; + double exp_resabs = 7.716049379303084599E-02; + double exp_resasc = 4.434311425038358484E-02; + + double alpha = 2.6 ; + gsl_function f = make_function(&f1, &alpha); + + gsl_integration_qk21 (&f, 0.0, 1.0, + &result, &abserr, &resabs, &resasc) ; + gsl_test_rel(result,exp_result,1e-15,"qk21(f1) smooth result") ; + gsl_test_rel(abserr,exp_abserr,1e-7,"qk21(f1) smooth abserr") ; + gsl_test_rel(resabs,exp_resabs,1e-15,"qk21(f1) smooth resabs") ; + gsl_test_rel(resasc,exp_resasc,1e-15,"qk21(f1) smooth resasc") ; + + gsl_integration_qk21 (&f, 1.0, 0.0, + &result, &abserr, &resabs, &resasc) ; + gsl_test_rel(result,-exp_result,1e-15,"qk21(f1) reverse result") ; + gsl_test_rel(abserr,exp_abserr,1e-7,"qk21(f1) reverse abserr") ; + gsl_test_rel(resabs,exp_resabs,1e-15,"qk21(f1) reverse resabs") ; + gsl_test_rel(resasc,exp_resasc,1e-15,"qk21(f1) reverse resasc") ; + } + + { + double result = 0, abserr = 0, resabs = 0, resasc = 0 ; + double exp_result = 7.716049382494900855E-02; + double exp_abserr = 1.713503193600029893E-09; + double exp_resabs = 7.716049382494900855E-02; + double exp_resasc = 4.427995051868838933E-02; + + double alpha = 2.6 ; + gsl_function f = make_function(&f1, &alpha); + + gsl_integration_qk31 (&f, 0.0, 1.0, + &result, &abserr, &resabs, &resasc) ; + gsl_test_rel(result,exp_result,1e-15,"qk31(f1) smooth result") ; + gsl_test_rel(abserr,exp_abserr,1e-7,"qk31(f1) smooth abserr") ; + gsl_test_rel(resabs,exp_resabs,1e-15,"qk31(f1) smooth resabs") ; + gsl_test_rel(resasc,exp_resasc,1e-15,"qk31(f1) smooth resasc") ; + + gsl_integration_qk31 (&f, 1.0, 0.0, + &result, &abserr, &resabs, &resasc) ; + gsl_test_rel(result,-exp_result,1e-15,"qk31(f1) reverse result") ; + gsl_test_rel(abserr,exp_abserr,1e-7,"qk31(f1) reverse abserr") ; + gsl_test_rel(resabs,exp_resabs,1e-15,"qk31(f1) reverse resabs") ; + gsl_test_rel(resasc,exp_resasc,1e-15,"qk31(f1) reverse resasc") ; + } + + { + double result = 0, abserr = 0, resabs = 0, resasc = 0 ; + double exp_result = 7.716049382681375302E-02; + double exp_abserr = 9.576386660975511224E-11; + double exp_resabs = 7.716049382681375302E-02; + double exp_resasc = 4.421521169637691873E-02; + + double alpha = 2.6 ; + gsl_function f = make_function(&f1, &alpha); + + gsl_integration_qk41 (&f, 0.0, 1.0, + &result, &abserr, &resabs, &resasc) ; + gsl_test_rel(result,exp_result,1e-15,"qk41(f1) smooth result") ; + gsl_test_rel(abserr,exp_abserr,1e-7,"qk41(f1) smooth abserr") ; + gsl_test_rel(resabs,exp_resabs,1e-15,"qk41(f1) smooth resabs") ; + gsl_test_rel(resasc,exp_resasc,1e-15,"qk41(f1) smooth resasc") ; + + gsl_integration_qk41 (&f, 1.0, 0.0, + &result, &abserr, &resabs, &resasc) ; + gsl_test_rel(result,-exp_result,1e-15,"qk41(f1) reverse result") ; + gsl_test_rel(abserr,exp_abserr,1e-7,"qk41(f1) reverse abserr") ; + gsl_test_rel(resabs,exp_resabs,1e-15,"qk41(f1) reverse resabs") ; + gsl_test_rel(resasc,exp_resasc,1e-15,"qk41(f1) reverse resasc") ; + } + + { + double result = 0, abserr = 0, resabs = 0, resasc = 0 ; + double exp_result = 7.716049382708510540E-02; + double exp_abserr = 1.002079980317363772E-11; + double exp_resabs = 7.716049382708510540E-02; + double exp_resasc = 4.416474291216854892E-02; + + double alpha = 2.6 ; + gsl_function f = make_function(&f1, &alpha); + + gsl_integration_qk51 (&f, 0.0, 1.0, + &result, &abserr, &resabs, &resasc) ; + gsl_test_rel(result,exp_result,1e-15,"qk51(f1) smooth result") ; + gsl_test_rel(abserr,exp_abserr,1e-5,"qk51(f1) smooth abserr") ; + gsl_test_rel(resabs,exp_resabs,1e-15,"qk51(f1) smooth resabs") ; + gsl_test_rel(resasc,exp_resasc,1e-15,"qk51(f1) smooth resasc") ; + + gsl_integration_qk51 (&f, 1.0, 0.0, + &result, &abserr, &resabs, &resasc) ; + gsl_test_rel(result,-exp_result,1e-15,"qk51(f1) reverse result") ; + gsl_test_rel(abserr,exp_abserr,1e-5,"qk51(f1) reverse abserr") ; + gsl_test_rel(resabs,exp_resabs,1e-15,"qk51(f1) reverse resabs") ; + gsl_test_rel(resasc,exp_resasc,1e-15,"qk51(f1) reverse resasc") ; + } + + { + double result = 0, abserr = 0, resabs = 0, resasc = 0 ; + double exp_result = 7.716049382713800753E-02; + double exp_abserr = 1.566060362296155616E-12; + double exp_resabs = 7.716049382713800753E-02; + double exp_resasc = 4.419287685934316506E-02; + + double alpha = 2.6 ; + gsl_function f = make_function(&f1, &alpha); + + gsl_integration_qk61 (&f, 0.0, 1.0, + &result, &abserr, &resabs, &resasc) ; + gsl_test_rel(result,exp_result,1e-15,"qk61(f1) smooth result") ; + gsl_test_rel(abserr,exp_abserr,1e-5,"qk61(f1) smooth abserr") ; + gsl_test_rel(resabs,exp_resabs,1e-15,"qk61(f1) smooth resabs") ; + gsl_test_rel(resasc,exp_resasc,1e-15,"qk61(f1) smooth resasc") ; + + gsl_integration_qk61 (&f, 1.0, 0.0, + &result, &abserr, &resabs, &resasc) ; + gsl_test_rel(result,-exp_result,1e-15,"qk61(f1) reverse result") ; + gsl_test_rel(abserr,exp_abserr,1e-5,"qk61(f1) reverse abserr") ; + gsl_test_rel(resabs,exp_resabs,1e-15,"qk61(f1) reverse resabs") ; + gsl_test_rel(resasc,exp_resasc,1e-15,"qk61(f1) reverse resasc") ; + } + + /* Now test the basic rules with a positive function that has a + singularity. This should give large values of abserr which would + find discrepancies in the abserr calculation. */ + + { + double result = 0, abserr = 0, resabs = 0, resasc = 0 ; + double exp_result = 1.555688196612745777E+01; + double exp_abserr = 2.350164577239293706E+01; + double exp_resabs = 1.555688196612745777E+01; + double exp_resasc = 2.350164577239293706E+01; + + double alpha = -0.9 ; + gsl_function f = make_function(&f1, &alpha); + + gsl_integration_qk15 (&f, 0.0, 1.0, + &result, &abserr, &resabs, &resasc) ; + gsl_test_rel(result,exp_result,1e-15,"qk15(f1) singular result") ; + gsl_test_rel(abserr,exp_abserr,1e-7,"qk15(f1) singular abserr") ; + gsl_test_rel(resabs,exp_resabs,1e-15,"qk15(f1) singular resabs") ; + gsl_test_rel(resasc,exp_resasc,1e-15,"qk15(f1) singular resasc") ; + + gsl_integration_qk15 (&f, 1.0, 0.0, + &result, &abserr, &resabs, &resasc) ; + gsl_test_rel(result,-exp_result,1e-15,"qk15(f1) reverse result") ; + gsl_test_rel(abserr,exp_abserr,1e-7,"qk15(f1) reverse abserr") ; + gsl_test_rel(resabs,exp_resabs,1e-15,"qk15(f1) reverse resabs") ; + gsl_test_rel(resasc,exp_resasc,1e-15,"qk15(f1) reverse resasc") ; + } + + { + double result = 0, abserr = 0, resabs = 0, resasc = 0 ; + double exp_result = 1.799045317938126232E+01; + double exp_abserr = 2.782360287710622515E+01; + double exp_resabs = 1.799045317938126232E+01; + double exp_resasc = 2.782360287710622515E+01; + + double alpha = -0.9 ; + gsl_function f = make_function(&f1, &alpha); + + gsl_integration_qk21 (&f, 0.0, 1.0, + &result, &abserr, &resabs, &resasc) ; + gsl_test_rel(result,exp_result,1e-15,"qk21(f1) singular result") ; + gsl_test_rel(abserr,exp_abserr,1e-7,"qk21(f1) singular abserr") ; + gsl_test_rel(resabs,exp_resabs,1e-15,"qk21(f1) singular resabs") ; + gsl_test_rel(resasc,exp_resasc,1e-15,"qk21(f1) singular resasc") ; + + gsl_integration_qk21 (&f, 1.0, 0.0, + &result, &abserr, &resabs, &resasc) ; + gsl_test_rel(result,-exp_result,1e-15,"qk21(f1) reverse result") ; + gsl_test_rel(abserr,exp_abserr,1e-7,"qk21(f1) reverse abserr") ; + gsl_test_rel(resabs,exp_resabs,1e-15,"qk21(f1) reverse resabs") ; + gsl_test_rel(resasc,exp_resasc,1e-15,"qk21(f1) reverse resasc") ; + } + + { + double result = 0, abserr = 0, resabs = 0, resasc = 0 ; + double exp_result = 2.081873305159121657E+01; + double exp_abserr = 3.296500137482590276E+01; + double exp_resabs = 2.081873305159121301E+01; + double exp_resasc = 3.296500137482590276E+01; + + double alpha = -0.9 ; + gsl_function f = make_function(&f1, &alpha); + + gsl_integration_qk31 (&f, 0.0, 1.0, + &result, &abserr, &resabs, &resasc) ; + gsl_test_rel(result,exp_result,1e-15,"qk31(f1) singular result") ; + gsl_test_rel(abserr,exp_abserr,1e-7,"qk31(f1) singular abserr") ; + gsl_test_rel(resabs,exp_resabs,1e-15,"qk31(f1) singular resabs") ; + gsl_test_rel(resasc,exp_resasc,1e-15,"qk31(f1) singular resasc") ; + + gsl_integration_qk31 (&f, 1.0, 0.0, + &result, &abserr, &resabs, &resasc) ; + gsl_test_rel(result,-exp_result,1e-15,"qk31(f1) reverse result") ; + gsl_test_rel(abserr,exp_abserr,1e-7,"qk31(f1) reverse abserr") ; + gsl_test_rel(resabs,exp_resabs,1e-15,"qk31(f1) reverse resabs") ; + gsl_test_rel(resasc,exp_resasc,1e-15,"qk31(f1) reverse resasc") ; + } + + { + double result = 0, abserr = 0, resabs = 0, resasc = 0 ; + double exp_result = 2.288677623903126701E+01; + double exp_abserr = 3.671538820274916048E+01; + double exp_resabs = 2.288677623903126701E+01; + double exp_resasc = 3.671538820274916048E+01; + + double alpha = -0.9 ; + gsl_function f = make_function(&f1, &alpha); + + gsl_integration_qk41 (&f, 0.0, 1.0, + &result, &abserr, &resabs, &resasc) ; + gsl_test_rel(result,exp_result,1e-15,"qk41(f1) singular result") ; + gsl_test_rel(abserr,exp_abserr,1e-7,"qk41(f1) singular abserr") ; + gsl_test_rel(resabs,exp_resabs,1e-15,"qk41(f1) singular resabs") ; + gsl_test_rel(resasc,exp_resasc,1e-15,"qk41(f1) singular resasc") ; + + gsl_integration_qk41 (&f, 1.0, 0.0, + &result, &abserr, &resabs, &resasc) ; + gsl_test_rel(result,-exp_result,1e-15,"qk41(f1) reverse result") ; + gsl_test_rel(abserr,exp_abserr,1e-7,"qk41(f1) reverse abserr") ; + gsl_test_rel(resabs,exp_resabs,1e-15,"qk41(f1) reverse resabs") ; + gsl_test_rel(resasc,exp_resasc,1e-15,"qk41(f1) reverse resasc") ; + } + + { + double result = 0, abserr = 0, resabs = 0, resasc = 0 ; + double exp_result = 2.449953612016972215E+01; + double exp_abserr = 3.967771249391228849E+01; + double exp_resabs = 2.449953612016972215E+01; + double exp_resasc = 3.967771249391228849E+01; + + double alpha = -0.9 ; + gsl_function f = make_function(&f1, &alpha); + + gsl_integration_qk51 (&f, 0.0, 1.0, + &result, &abserr, &resabs, &resasc) ; + gsl_test_rel(result,exp_result,1e-15,"qk51(f1) singular result") ; + gsl_test_rel(abserr,exp_abserr,1e-7,"qk51(f1) singular abserr") ; + gsl_test_rel(resabs,exp_resabs,1e-15,"qk51(f1) singular resabs") ; + gsl_test_rel(resasc,exp_resasc,1e-15,"qk51(f1) singular resasc") ; + + gsl_integration_qk51 (&f, 1.0, 0.0, + &result, &abserr, &resabs, &resasc) ; + gsl_test_rel(result,-exp_result,1e-15,"qk51(f1) reverse result") ; + gsl_test_rel(abserr,exp_abserr,1e-7,"qk51(f1) reverse abserr") ; + gsl_test_rel(resabs,exp_resabs,1e-15,"qk51(f1) reverse resabs") ; + gsl_test_rel(resasc,exp_resasc,1e-15,"qk51(f1) reverse resasc") ; + } + + { + double result = 0, abserr = 0, resabs = 0, resasc = 0 ; + double exp_result = 2.583030240976628988E+01; + double exp_abserr = 4.213750493076978643E+01; + double exp_resabs = 2.583030240976628988E+01; + double exp_resasc = 4.213750493076978643E+01; + + double alpha = -0.9 ; + gsl_function f = make_function(&f1, &alpha); + + gsl_integration_qk61 (&f, 0.0, 1.0, + &result, &abserr, &resabs, &resasc) ; + gsl_test_rel(result,exp_result,1e-15,"qk61(f1) singular result") ; + gsl_test_rel(abserr,exp_abserr,1e-7,"qk61(f1) singular abserr") ; + gsl_test_rel(resabs,exp_resabs,1e-15,"qk61(f1) singular resabs") ; + gsl_test_rel(resasc,exp_resasc,1e-15,"qk61(f1) singular resasc") ; + + gsl_integration_qk61 (&f, 1.0, 0.0, + &result, &abserr, &resabs, &resasc) ; + gsl_test_rel(result,-exp_result,1e-15,"qk61(f1) reverse result") ; + gsl_test_rel(abserr,exp_abserr,1e-7,"qk61(f1) reverse abserr") ; + gsl_test_rel(resabs,exp_resabs,1e-15,"qk61(f1) reverse resabs") ; + gsl_test_rel(resasc,exp_resasc,1e-15,"qk61(f1) reverse resasc") ; + } + + /* Test the basic Gauss-Kronrod rules with a smooth oscillating + function, over an unsymmetric range. This should find any + discrepancies in the abscissae. */ + + { + double result = 0, abserr = 0, resabs = 0, resasc = 0 ; + double exp_result =-7.238969575483799046E-01; + double exp_abserr = 8.760080200939757174E-06; + double exp_resabs = 1.165564172429140788E+00; + double exp_resasc = 9.334560307787327371E-01; + + double alpha = 1.3 ; + gsl_function f = make_function(&f3, &alpha); + + gsl_integration_qk15 (&f, 0.3, 2.71, + &result, &abserr, &resabs, &resasc) ; + gsl_test_rel(result,exp_result,1e-15,"qk15(f3) oscill result") ; + gsl_test_rel(abserr,exp_abserr,1e-7,"qk15(f3) oscill abserr") ; + gsl_test_rel(resabs,exp_resabs,1e-15,"qk15(f3) oscill resabs") ; + gsl_test_rel(resasc,exp_resasc,1e-15,"qk15(f3) oscill resasc") ; + + gsl_integration_qk15 (&f, 2.71, 0.3, + &result, &abserr, &resabs, &resasc) ; + gsl_test_rel(result,-exp_result,1e-15,"qk15(f3) reverse result") ; + gsl_test_rel(abserr,exp_abserr,1e-7,"qk15(f3) reverse abserr") ; + gsl_test_rel(resabs,exp_resabs,1e-15,"qk15(f3) reverse resabs") ; + gsl_test_rel(resasc,exp_resasc,1e-15,"qk15(f3) reverse resasc") ; + } + + { + double result = 0, abserr = 0, resabs = 0, resasc = 0 ; + double exp_result =-7.238969575482959717E-01; + double exp_abserr = 7.999213141433641888E-11; + double exp_resabs = 1.150829032708484023E+00; + double exp_resasc = 9.297591249133687619E-01; + + double alpha = 1.3 ; + gsl_function f = make_function(&f3, &alpha); + + gsl_integration_qk21 (&f, 0.3, 2.71, + &result, &abserr, &resabs, &resasc) ; + gsl_test_rel(result,exp_result,1e-15,"qk21(f3) oscill result") ; + gsl_test_rel(abserr,exp_abserr,1e-5,"qk21(f3) oscill abserr") ; + gsl_test_rel(resabs,exp_resabs,1e-15,"qk21(f3) oscill resabs") ; + gsl_test_rel(resasc,exp_resasc,1e-15,"qk21(f3) oscill resasc") ; + + gsl_integration_qk21 (&f, 2.71, 0.3, + &result, &abserr, &resabs, &resasc) ; + gsl_test_rel(result,-exp_result,1e-15,"qk21(f3) reverse result") ; + gsl_test_rel(abserr,exp_abserr,1e-5,"qk21(f3) reverse abserr") ; + gsl_test_rel(resabs,exp_resabs,1e-15,"qk21(f3) reverse resabs") ; + gsl_test_rel(resasc,exp_resasc,1e-15,"qk21(f3) reverse resasc") ; + } + + { + double result = 0, abserr = 0, resabs = 0, resasc = 0 ; + double exp_result =-7.238969575482959717E-01; + double exp_abserr = 1.285805464427459261E-14; + double exp_resabs = 1.158150602093290571E+00; + double exp_resasc = 9.277828092501518853E-01; + + double alpha = 1.3 ; + gsl_function f = make_function(&f3, &alpha); + + gsl_integration_qk31 (&f, 0.3, 2.71, + &result, &abserr, &resabs, &resasc) ; + gsl_test_rel(result,exp_result,1e-15,"qk31(f3) oscill result") ; + gsl_test_rel(abserr,exp_abserr,1e-7,"qk31(f3) oscill abserr") ; + gsl_test_rel(resabs,exp_resabs,1e-15,"qk31(f3) oscill resabs") ; + gsl_test_rel(resasc,exp_resasc,1e-15,"qk31(f3) oscill resasc") ; + + gsl_integration_qk31 (&f, 2.71, 0.3, + &result, &abserr, &resabs, &resasc) ; + gsl_test_rel(result,-exp_result,1e-15,"qk31(f3) reverse result") ; + gsl_test_rel(abserr,exp_abserr,1e-7,"qk31(f3) reverse abserr") ; + gsl_test_rel(resabs,exp_resabs,1e-15,"qk31(f3) reverse resabs") ; + gsl_test_rel(resasc,exp_resasc,1e-15,"qk31(f3) reverse resasc") ; + } + + { + double result = 0, abserr = 0, resabs = 0, resasc = 0 ; + double exp_result =-7.238969575482959717E-01; + double exp_abserr = 1.286535726271015626E-14; + double exp_resabs = 1.158808363486595328E+00; + double exp_resasc = 9.264382258645686985E-01; + + double alpha = 1.3 ; + gsl_function f = make_function(&f3, &alpha); + + gsl_integration_qk41 (&f, 0.3, 2.71, + &result, &abserr, &resabs, &resasc) ; + gsl_test_rel(result,exp_result,1e-15,"qk41(f3) oscill result") ; + gsl_test_rel(abserr,exp_abserr,1e-7,"qk41(f3) oscill abserr") ; + gsl_test_rel(resabs,exp_resabs,1e-15,"qk41(f3) oscill resabs") ; + gsl_test_rel(resasc,exp_resasc,1e-15,"qk41(f3) oscill resasc") ; + + gsl_integration_qk41 (&f, 2.71, 0.3, + &result, &abserr, &resabs, &resasc) ; + gsl_test_rel(result,-exp_result,1e-15,"qk41(f3) reverse result") ; + gsl_test_rel(abserr,exp_abserr,1e-7,"qk41(f3) reverse abserr") ; + gsl_test_rel(resabs,exp_resabs,1e-15,"qk41(f3) reverse resabs") ; + gsl_test_rel(resasc,exp_resasc,1e-15,"qk41(f3) reverse resasc") ; + } + + { + double result = 0, abserr = 0, resabs = 0, resasc = 0 ; + double exp_result =-7.238969575482961938E-01; + double exp_abserr = 1.285290995039385778E-14; + double exp_resabs = 1.157687209264406381E+00; + double exp_resasc = 9.264666884071264263E-01; + + double alpha = 1.3 ; + gsl_function f = make_function(&f3, &alpha); + + gsl_integration_qk51 (&f, 0.3, 2.71, + &result, &abserr, &resabs, &resasc) ; + gsl_test_rel(result,exp_result,1e-15,"qk51(f3) oscill result") ; + gsl_test_rel(abserr,exp_abserr,1e-7,"qk51(f3) oscill abserr") ; + gsl_test_rel(resabs,exp_resabs,1e-15,"qk51(f3) oscill resabs") ; + gsl_test_rel(resasc,exp_resasc,1e-15,"qk51(f3) oscill resasc") ; + + gsl_integration_qk51 (&f, 2.71, 0.3, + &result, &abserr, &resabs, &resasc) ; + gsl_test_rel(result,-exp_result,1e-15,"qk51(f3) reverse result") ; + gsl_test_rel(abserr,exp_abserr,1e-7,"qk51(f3) reverse abserr") ; + gsl_test_rel(resabs,exp_resabs,1e-15,"qk51(f3) reverse resabs") ; + gsl_test_rel(resasc,exp_resasc,1e-15,"qk51(f3) reverse resasc") ; + } + + { + double result = 0, abserr = 0, resabs = 0, resasc = 0 ; + double exp_result =-7.238969575482959717E-01; + double exp_abserr = 1.286438572027470736E-14; + double exp_resabs = 1.158720854723590099E+00; + double exp_resasc = 9.270469641771273972E-01; + + double alpha = 1.3 ; + gsl_function f = make_function(&f3, &alpha); + + gsl_integration_qk61 (&f, 0.3, 2.71, + &result, &abserr, &resabs, &resasc) ; + gsl_test_rel(result,exp_result,1e-15,"qk61(f3) oscill result") ; + gsl_test_rel(abserr,exp_abserr,1e-7,"qk61(f3) oscill abserr") ; + gsl_test_rel(resabs,exp_resabs,1e-15,"qk61(f3) oscill resabs") ; + gsl_test_rel(resasc,exp_resasc,1e-15,"qk61(f3) oscill resasc") ; + + gsl_integration_qk61 (&f, 2.71, 0.3, + &result, &abserr, &resabs, &resasc) ; + gsl_test_rel(result,-exp_result,1e-15,"qk61(f3) reverse result") ; + gsl_test_rel(abserr,exp_abserr,1e-7,"qk61(f3) reverse abserr") ; + gsl_test_rel(resabs,exp_resabs,1e-15,"qk61(f3) reverse resabs") ; + gsl_test_rel(resasc,exp_resasc,1e-15,"qk61(f3) reverse resasc") ; + } + + /* Test the non-adaptive gaussian integrator QNG */ + + { + int status = 0; size_t neval = 0 ; + double result = 0, abserr = 0 ; + double exp_result = 7.716049379303083211E-02; + double exp_abserr = 9.424302199601294244E-08; + int exp_neval = 21; + int exp_ier = 0; + + double alpha = 2.6 ; + gsl_function f = make_function(&f1, &alpha); + + status = gsl_integration_qng (&f, 0.0, 1.0, 1e-1, 0.0, + &result, &abserr, &neval) ; + gsl_test_rel(result,exp_result,1e-15,"qng(f1) smooth result") ; + gsl_test_rel(abserr,exp_abserr,1e-7,"qng(f1) smooth abserr") ; + gsl_test_int((int)neval,exp_neval,"qng(f1) smooth neval") ; + gsl_test_int(status,exp_ier,"qng(f1) smooth status") ; + + status = gsl_integration_qng (&f, 1.0, 0.0, 1e-1, 0.0, + &result, &abserr, &neval) ; + gsl_test_rel(result,-exp_result,1e-15,"qng(f1) reverse result") ; + gsl_test_rel(abserr,exp_abserr,1e-7,"qng(f1) reverse abserr") ; + gsl_test_int((int)neval,exp_neval,"qng(f1) reverse neval") ; + gsl_test_int(status,exp_ier,"qng(f1) reverse status") ; + } + + { + int status = 0; size_t neval = 0 ; + double result = 0, abserr = 0 ; + + double exp_result = 7.716049382706505200E-02; + double exp_abserr = 2.666893044866214501E-12; + int exp_neval = 43; + int exp_ier = 0; + + double alpha = 2.6 ; + gsl_function f = make_function(&f1, &alpha); + + status = gsl_integration_qng (&f, 0.0, 1.0, 0.0, 1e-9, + &result, &abserr, &neval) ; + gsl_test_rel(result,exp_result,1e-15,"qng(f1) smooth 43pt result") ; + gsl_test_rel(abserr,exp_abserr,1e-5,"qng(f1) smooth 43pt abserr") ; + gsl_test_int((int)neval,exp_neval,"qng(f1) smooth 43pt neval") ; + gsl_test_int(status,exp_ier,"qng(f1) smooth 43pt status") ; + + status = gsl_integration_qng (&f, 1.0, 0.0, 0.0, 1e-9, + &result, &abserr, &neval) ; + gsl_test_rel(result,-exp_result,1e-15,"qng(f1) reverse 43pt result") ; + gsl_test_rel(abserr,exp_abserr,1e-5,"qng(f1) reverse 43pt abserr") ; + gsl_test_int((int)neval,exp_neval,"qng(f1) reverse 43pt neval") ; + gsl_test_int(status,exp_ier,"qng(f1) reverse 43pt status") ; + } + + { + int status; size_t neval = 0 ; + double result = 0, abserr = 0 ; + double exp_result =-7.238969575482961938E-01; + double exp_abserr = 1.277676889520056369E-14; + int exp_neval = 43; + int exp_ier = 0; + + double alpha = 1.3 ; + gsl_function f = make_function(&f3, &alpha); + + status = gsl_integration_qng (&f, 0.3, 2.71, 0.0, 1e-12, + &result, &abserr, &neval) ; + gsl_test_rel(result,exp_result,1e-15,"qnq(f3) oscill result") ; + gsl_test_rel(abserr,exp_abserr,1e-7,"qng(f3) oscill abserr") ; + gsl_test_int((int)neval,exp_neval,"qng(f3) oscill neval") ; + gsl_test_int(status,exp_ier,"qng(f3) oscill status") ; + + status = gsl_integration_qng (&f, 2.71, 0.3, 0.0, 1e-12, + &result, &abserr, &neval) ; + gsl_test_rel(result,-exp_result,1e-15,"qnq(f3) reverse result") ; + gsl_test_rel(abserr,exp_abserr,1e-7,"qng(f3) reverse abserr") ; + gsl_test_int((int)neval,exp_neval,"qng(f3) reverse neval") ; + gsl_test_int(status,exp_ier,"qng(f3) reverse status") ; + } + + { + int status = 0; size_t neval = 0 ; + double result = 0, abserr = 0 ; + + double exp_result = 7.716049382716029525E-02; + double exp_abserr = 8.566535680046930668E-16; + int exp_neval = 87; + int exp_ier = 0; + + double alpha = 2.6 ; + gsl_function f = make_function(&f1, &alpha); + + status = gsl_integration_qng (&f, 0.0, 1.0, 0.0, 1e-13, + &result, &abserr, &neval) ; + gsl_test_rel(result,exp_result,1e-15,"qng(f1) 87pt smooth result") ; + gsl_test_rel(abserr,exp_abserr,1e-7,"qng(f1) 87pt smooth abserr") ; + gsl_test_int((int)neval,exp_neval,"qng(f1) 87pt smooth neval") ; + gsl_test_int(status,exp_ier,"qng(f1) 87pt smooth status") ; + + status = gsl_integration_qng (&f, 1.0, 0.0, 0.0, 1e-13, + &result, &abserr, &neval) ; + gsl_test_rel(result,-exp_result,1e-15,"qng(f1) 87pt reverse result") ; + gsl_test_rel(abserr,exp_abserr,1e-7,"qng(f1) 87pt reverse abserr") ; + gsl_test_int((int)neval,exp_neval,"qng(f1) 87pt reverse neval") ; + gsl_test_int(status,exp_ier,"qng(f1) 87pt reverse status") ; + } + + { + int status = 0; size_t neval = 0 ; + double result = 0, abserr = 0 ; + + double exp_result = 3.222948711817264211E+01; + double exp_abserr = 2.782360287710622870E+01; + int exp_neval = 87; + int exp_ier = GSL_ETOL; + + double alpha = -0.9 ; + gsl_function f = make_function(&f1, &alpha); + + status = gsl_integration_qng (&f, 0.0, 1.0, 0.0, 1e-3, + &result, &abserr, &neval) ; + gsl_test_rel(result,exp_result,1e-15,"qng(f1) sing beyond 87pt result"); + gsl_test_rel(abserr,exp_abserr,1e-7,"qng(f1) sing beyond 87pt abserr"); + gsl_test_int((int)neval,exp_neval,"qng(f1) sing beyond 87pt neval") ; + gsl_test_int(status,exp_ier,"qng(f1) sing beyond 87pt status") ; + + status = gsl_integration_qng (&f, 1.0, 0.0, 0.0, 1e-3, + &result, &abserr, &neval) ; + gsl_test_rel(result,-exp_result,1e-15,"qng(f1) reverse beyond 87pt result"); + gsl_test_rel(abserr,exp_abserr,1e-7,"qng(f1) rev beyond 87pt abserr"); + gsl_test_int((int)neval,exp_neval,"qng(f1) rev beyond 87pt neval") ; + gsl_test_int(status,exp_ier,"qng(f1) rev beyond 87pt status") ; + } + + /* Test the adaptive integrator QAG */ + + { + int status = 0, i; struct counter_params p; + double result = 0, abserr=0; + + gsl_integration_workspace * w = gsl_integration_workspace_alloc (1000) ; + + double exp_result = 7.716049382715854665E-02 ; + double exp_abserr = 6.679384885865053037E-12 ; + int exp_neval = 165; + int exp_ier = 0; + int exp_last = 6; + + double a[6] = { 0, 0.5, 0.25, 0.125, 0.0625, 0.03125 } ; + double b[6] = { 0.03125, 1, 0.5, 0.25, 0.125, 0.0625 } ; + double r[6] = { 3.966769831709074375E-06, 5.491842501998222409E-02, + 1.909827770934243926E-02, 2.776531175604360531E-03, + 3.280661030752063693E-04, 3.522704932261797744E-05 } ; + double e[6] = { 6.678528276336181873E-12, 6.097169993333454062E-16, + 2.120334764359736934E-16, 3.082568839745514608E-17, + 3.642265412331439511E-18, 3.910988124757650942E-19 } ; + int order[6] = { 1, 2, 3, 4, 5, 6 } ; + + double alpha = 2.6 ; + gsl_function f = make_function(&f1, &alpha) ; + + gsl_function fc = make_counter(&f, &p) ; + + status = gsl_integration_qag (&fc, 0.0, 1.0, 0.0, 1e-10, w->limit, + GSL_INTEG_GAUSS15, w, + &result, &abserr) ; + + gsl_test_rel(result,exp_result,1e-15,"qag(f1) smooth result") ; + gsl_test_rel(abserr,exp_abserr,1e-6,"qag(f1) smooth abserr") ; + gsl_test_int((int)(p.neval),exp_neval,"qag(f1) smooth neval") ; + gsl_test_int((int)(w->size),exp_last,"qag(f1) smooth last") ; + gsl_test_int(status,exp_ier,"qag(f1) smooth status") ; + + for (i = 0; i < 6 ; i++) + gsl_test_rel(w->alist[i],a[i],1e-15,"qag(f1) smooth alist") ; + + for (i = 0; i < 6 ; i++) + gsl_test_rel(w->blist[i],b[i],1e-15,"qag(f1) smooth blist") ; + + for (i = 0; i < 6 ; i++) + gsl_test_rel(w->rlist[i],r[i],1e-15,"qag(f1) smooth rlist") ; + + for (i = 0; i < 6 ; i++) + gsl_test_rel(w->elist[i],e[i],1e-6,"qag(f1) smooth elist") ; + + for (i = 0; i < 6 ; i++) + gsl_test_int((int)w->order[i],order[i]-1,"qag(f1) smooth order") ; + + p.neval = 0; + + status = gsl_integration_qag (&fc, 1.0, 0.0, 0.0, 1e-10, w->limit, + GSL_INTEG_GAUSS15, w, + &result, &abserr) ; + + gsl_test_rel(result,-exp_result,1e-15,"qag(f1) reverse result") ; + gsl_test_rel(abserr,exp_abserr,1e-6,"qag(f1) reverse abserr") ; + gsl_test_int((int)(p.neval),exp_neval,"qag(f1) reverse neval") ; + gsl_test_int((int)(w->size),exp_last,"qag(f1) reverse last") ; + gsl_test_int(status,exp_ier,"qag(f1) reverse status") ; + + gsl_integration_workspace_free (w) ; + + } + + /* Test the same function using an absolute error bound and the + 21-point rule */ + + { + int status = 0, i; struct counter_params p; + double result = 0, abserr=0; + + gsl_integration_workspace * w = gsl_integration_workspace_alloc (1000) ; + + double exp_result = 7.716049382716050342E-02 ; + double exp_abserr = 2.227969521869139532E-15 ; + int exp_neval = 315; + int exp_ier = 0; + int exp_last = 8; + + double a[8] = { 0, 0.5, 0.25, 0.125, 0.0625, 0.03125, 0.015625, + 0.0078125 } ; + double b[8] = { 0.0078125, 1, 0.5, 0.25, 0.125, 0.0625, 0.03125, + 0.015625 } ; + double r[8] = { 3.696942726831556522E-08, 5.491842501998223103E-02, + 1.909827770934243579E-02, 2.776531175604360097E-03, + 3.280661030752062609E-04, 3.522704932261797744E-05, + 3.579060884684503576E-06, 3.507395216921808047E-07 } ; + double e[8] = { 1.371316364034059572E-15, 6.097169993333454062E-16, + 2.120334764359736441E-16, 3.082568839745514608E-17, + 3.642265412331439511E-18, 3.910988124757650460E-19, + 3.973555800712018091E-20, 3.893990926286736620E-21 } ; + int order[8] = { 1, 2, 3, 4, 5, 6, 7, 8 } ; + + double alpha = 2.6 ; + gsl_function f = make_function(&f1, &alpha); + + gsl_function fc = make_counter(&f, &p) ; + + status = gsl_integration_qag (&fc, 0.0, 1.0, 1e-14, 0.0, w->limit, + GSL_INTEG_GAUSS21, w, + &result, &abserr) ; + + gsl_test_rel(result,exp_result,1e-15,"qag(f1,21pt) smooth result") ; + gsl_test_rel(abserr,exp_abserr,1e-6,"qag(f1,21pt) smooth abserr") ; + gsl_test_int((int)(p.neval),exp_neval,"qag(f1,21pt) smooth neval") ; + gsl_test_int((int)(w->size),exp_last,"qag(f1,21pt) smooth last") ; + gsl_test_int(status,exp_ier,"qag(f1,21pt) smooth status") ; + + for (i = 0; i < 8 ; i++) + gsl_test_rel(w->alist[i],a[i],1e-15,"qag(f1,21pt) smooth alist") ; + + for (i = 0; i < 8 ; i++) + gsl_test_rel(w->blist[i],b[i],1e-15,"qag(f1,21pt) smooth blist") ; + + for (i = 0; i < 8 ; i++) + gsl_test_rel(w->rlist[i],r[i],1e-15,"qag(f1,21pt) smooth rlist") ; + + for (i = 0; i < 8 ; i++) + gsl_test_rel(w->elist[i],e[i],1e-6,"qag(f1,21pt) smooth elist") ; + + for (i = 0; i < 8 ; i++) + gsl_test_int((int)w->order[i],order[i]-1,"qag(f1,21pt) smooth order"); + + + p.neval = 0; + status = gsl_integration_qag (&fc, 1.0, 0.0, 1e-14, 0.0, w->limit, + GSL_INTEG_GAUSS21, w, + &result, &abserr) ; + + gsl_test_rel(result,-exp_result,1e-15,"qag(f1,21pt) reverse result") ; + gsl_test_rel(abserr,exp_abserr,1e-6,"qag(f1,21pt) reverse abserr") ; + gsl_test_int((int)(p.neval),exp_neval,"qag(f1,21pt) reverse neval") ; + gsl_test_int((int)(w->size),exp_last,"qag(f1,21pt) reverse last") ; + gsl_test_int(status,exp_ier,"qag(f1,21pt) reverse status") ; + + gsl_integration_workspace_free (w) ; + + } + + /* Adaptive integration of an oscillatory function which terminates because + of roundoff error, uses the 31-pt rule */ + + { + int status = 0; struct counter_params p; + double result = 0, abserr=0; + + gsl_integration_workspace * w = gsl_integration_workspace_alloc (1000) ; + + double exp_result = -7.238969575482959717E-01; + double exp_abserr = 1.285805464427459261E-14; + int exp_neval = 31; + int exp_ier = GSL_EROUND; + int exp_last = 1; + + double alpha = 1.3 ; + gsl_function f = make_function(&f3, &alpha); + + gsl_function fc = make_counter(&f, &p) ; + + status = gsl_integration_qag (&fc, 0.3, 2.71, 1e-14, 0.0, w->limit, + GSL_INTEG_GAUSS31, w, + &result, &abserr) ; + + gsl_test_rel(result,exp_result,1e-15,"qag(f3,31pt) oscill result"); + gsl_test_rel(abserr,exp_abserr,1e-6,"qag(f3,31pt) oscill abserr"); + gsl_test_int((int)(p.neval),exp_neval,"qag(f3,31pt) oscill neval") ; + gsl_test_int((int)(w->size),exp_last,"qag(f3,31pt) oscill last") ; + gsl_test_int(status,exp_ier,"qag(f3,31pt) oscill status") ; + + p.neval = 0; + status = gsl_integration_qag (&fc, 2.71, 0.3, 1e-14, 0.0, w->limit, + GSL_INTEG_GAUSS31, w, + &result, &abserr) ; + + gsl_test_rel(result,-exp_result,1e-15,"qag(f3,31pt) reverse result"); + gsl_test_rel(abserr,exp_abserr,1e-6,"qag(f3,31pt) reverse abserr"); + gsl_test_int((int)(p.neval),exp_neval,"qag(f3,31pt) reverse neval") ; + gsl_test_int((int)(w->size),exp_last,"qag(f3,31pt) reverse last") ; + gsl_test_int(status,exp_ier,"qag(f3,31pt) reverse status") ; + + gsl_integration_workspace_free (w) ; + + } + + /* Check the singularity detection (singularity at x=-0.1 in this example) */ + + { + int status = 0; struct counter_params p; + double result = 0, abserr=0; + + gsl_integration_workspace * w = gsl_integration_workspace_alloc (1000) ; + + int exp_neval = 5151; + int exp_ier = GSL_ESING; + int exp_last = 51; + + double alpha = 2.0 ; + gsl_function f = make_function(&f16, &alpha); + + gsl_function fc = make_counter(&f, &p) ; + + status = gsl_integration_qag (&fc, -1.0, 1.0, 1e-14, 0.0, w->limit, + GSL_INTEG_GAUSS51, w, + &result, &abserr) ; + + gsl_test_int((int)(p.neval),exp_neval,"qag(f16,51pt) sing neval") ; + gsl_test_int((int)(w->size),exp_last,"qag(f16,51pt) sing last") ; + gsl_test_int(status,exp_ier,"qag(f16,51pt) sing status") ; + + p.neval = 0; + status = gsl_integration_qag (&fc, 1.0, -1.0, 1e-14, 0.0, w->limit, + GSL_INTEG_GAUSS51, w, + &result, &abserr) ; + + gsl_test_int((int)(p.neval),exp_neval,"qag(f16,51pt) rev neval") ; + gsl_test_int((int)(w->size),exp_last,"qag(f16,51pt) rev last") ; + gsl_test_int(status,exp_ier,"qag(f16,51pt) rev status") ; + + gsl_integration_workspace_free (w) ; + + } + + /* Check for hitting the iteration limit */ + + { + int status = 0, i; struct counter_params p; + double result = 0, abserr=0; + + gsl_integration_workspace * w = gsl_integration_workspace_alloc (3) ; + + double exp_result = 9.565151449233894709 ; + double exp_abserr = 1.570369823891028460E+01; + int exp_neval = 305; + int exp_ier = GSL_EMAXITER; + int exp_last = 3; + + double a[3] = { -5.000000000000000000E-01, + 0.000000000000000000, + -1.000000000000000000 } ; + + double b[3] = { 0.000000000000000000, + 1.000000000000000000, + -5.000000000000000000E-01 } ; + + double r[3] = { 9.460353469435913709, + 9.090909090909091161E-02, + 1.388888888888888812E-02 } ; + + double e[3] = { 1.570369823891028460E+01, + 1.009293658750142399E-15, + 1.541976423090495140E-16 } ; + + int order[3] = { 1, 2, 3 } ; + + double alpha = 1.0 ; + gsl_function f = make_function(&f16, &alpha); + gsl_function fc = make_counter(&f, &p) ; + + status = gsl_integration_qag (&fc, -1.0, 1.0, 1e-14, 0.0, w->limit, + GSL_INTEG_GAUSS61, w, + &result, &abserr) ; + + gsl_test_rel(result,exp_result,1e-15,"qag(f16,61pt) limit result") ; + gsl_test_rel(abserr,exp_abserr,1e-6,"qag(f16,61pt) limit abserr") ; + gsl_test_int((int)(p.neval),exp_neval,"qag(f16,61pt) limit neval") ; + gsl_test_int((int)(w->size),exp_last,"qag(f16,61pt) limit last") ; + gsl_test_int(status,exp_ier,"qag(f16,61pt) limit status") ; + + for (i = 0; i < 3 ; i++) + gsl_test_rel(w->alist[i],a[i],1e-15,"qag(f16,61pt) limit alist") ; + + for (i = 0; i < 3 ; i++) + gsl_test_rel(w->blist[i],b[i],1e-15,"qag(f16,61pt) limit blist") ; + + for (i = 0; i < 3 ; i++) + gsl_test_rel(w->rlist[i],r[i],1e-15,"qag(f16,61pt) limit rlist") ; + + for (i = 0; i < 3 ; i++) + gsl_test_rel(w->elist[i],e[i],1e-6,"qag(f16,61pt) limit elist") ; + + for (i = 0; i < 3 ; i++) + gsl_test_int((int)w->order[i],order[i]-1,"qag(f16,61pt) limit order"); + + p.neval = 0; + status = gsl_integration_qag (&fc, 1.0, -1.0, 1e-14, 0.0, w->limit, + GSL_INTEG_GAUSS61, w, + &result, &abserr) ; + + gsl_test_rel(result,-exp_result,1e-15,"qag(f16,61pt) reverse result") ; + gsl_test_rel(abserr,exp_abserr,1e-6,"qag(f16,61pt) reverse abserr") ; + gsl_test_int((int)(p.neval),exp_neval,"qag(f16,61pt) reverse neval") ; + gsl_test_int((int)(w->size),exp_last,"qag(f16,61pt) reverse last") ; + gsl_test_int(status,exp_ier,"qag(f16,61pt) reverse status") ; + + gsl_integration_workspace_free (w) ; + + } + + /* Test the adaptive integrator with extrapolation QAGS */ + + { + int status = 0, i; struct counter_params p; + double result = 0, abserr=0; + + gsl_integration_workspace * w = gsl_integration_workspace_alloc (1000) ; + + double exp_result = 7.716049382715789440E-02 ; + double exp_abserr = 2.216394961010438404E-12 ; + int exp_neval = 189; + int exp_ier = 0; + int exp_last = 5; + + double a[5] = { 0, 0.5, 0.25, 0.125, 0.0625 } ; + double b[5] = { 0.0625, 1, 0.5, 0.25, 0.125 } ; + double r[5] = { 3.919381915366914693E-05, + 5.491842501998223103E-02, + 1.909827770934243579E-02, + 2.776531175604360097E-03, + 3.280661030752062609E-04 } ; + double e[5] = { 2.215538742580964735E-12, + 6.097169993333454062E-16, + 2.120334764359736441E-16, + 3.082568839745514608E-17, + 3.642265412331439511E-18 } ; + int order[5] = { 1, 2, 3, 4, 5 } ; + + double alpha = 2.6 ; + gsl_function f = make_function(&f1, &alpha); + gsl_function fc = make_counter(&f, &p) ; + + status = gsl_integration_qags (&fc, 0.0, 1.0, 0.0, 1e-10, w->limit, + w, + &result, &abserr) ; + + gsl_test_rel(result,exp_result,1e-15,"qags(f1) smooth result") ; + gsl_test_rel(abserr,exp_abserr,1e-6,"qags(f1) smooth abserr") ; + gsl_test_int((int)(p.neval),exp_neval,"qags(f1) smooth neval") ; + gsl_test_int((int)(w->size),exp_last,"qags(f1) smooth last") ; + gsl_test_int(status,exp_ier,"qags(f1) smooth status") ; + + for (i = 0; i < 5 ; i++) + gsl_test_rel(w->alist[i],a[i],1e-15,"qags(f1) smooth alist") ; + + for (i = 0; i < 5 ; i++) + gsl_test_rel(w->blist[i],b[i],1e-15,"qags(f1) smooth blist") ; + + for (i = 0; i < 5 ; i++) + gsl_test_rel(w->rlist[i],r[i],1e-15,"qags(f1) smooth rlist") ; + + for (i = 0; i < 5 ; i++) + gsl_test_rel(w->elist[i],e[i],1e-6,"qags(f1) smooth elist") ; + + for (i = 0; i < 5 ; i++) + gsl_test_int((int)w->order[i],order[i]-1,"qags(f1) smooth order") ; + + p.neval = 0; + status = gsl_integration_qags (&fc, 1.0, 0.0, 0.0, 1e-10, w->limit, + w, + &result, &abserr) ; + + gsl_test_rel(result,-exp_result,1e-15,"qags(f1) reverse result") ; + gsl_test_rel(abserr,exp_abserr,1e-6,"qags(f1) reverse abserr") ; + gsl_test_int((int)(p.neval),exp_neval,"qags(f1) reverse neval") ; + gsl_test_int((int)(w->size),exp_last,"qags(f1) reverse last") ; + gsl_test_int(status,exp_ier,"qags(f1) reverse status") ; + + gsl_integration_workspace_free (w) ; + + } + + /* Test f11 using an absolute error bound */ + + { + int status = 0, i; struct counter_params p; + double result = 0, abserr=0; + + gsl_integration_workspace * w = gsl_integration_workspace_alloc (1000) ; + + /* All results are for GSL_IEEE_MODE=double-precision */ + + double exp_result = -5.908755278982136588E+03 ; + double exp_abserr = 1.299646281053874554E-10 ; + int exp_neval = 357; + int exp_ier = 0; + int exp_last = 9; + + double a[9] = { 1.000000000000000000E+00, + 5.005000000000000000E+02, + 2.507500000000000000E+02, + 1.258750000000000000E+02, + 6.343750000000000000E+01, + 3.221875000000000000E+01, + 1.660937500000000000E+01, + 8.804687500000000000E+00, + 4.902343750000000000E+00 } ; + double b[9] = { 4.902343750000000000E+00, + 1.000000000000000000E+03, + 5.005000000000000000E+02, + 2.507500000000000000E+02, + 1.258750000000000000E+02, + 6.343750000000000000E+01, + 3.221875000000000000E+01, + 1.660937500000000000E+01, + 8.804687500000000000E+00 } ; + double r[9] = { -3.890977835520834649E+00, + -3.297343675805121620E+03, + -1.475904154146372775E+03, + -6.517404019686431411E+02, + -2.829354222635842007E+02, + -1.201692001973227519E+02, + -4.959999906099650246E+01, + -1.971441499411640308E+01, + -7.457032710459004399E+00 } ; + double e[9] = { 6.448276035006137169E-11, + 3.660786868980994028E-11, + 1.638582774073219226E-11, + 7.235772003440423011E-12, + 3.141214202790722909E-12, + 1.334146129098576244E-12, + 5.506706097890446534E-13, + 2.188739744348345039E-13, + 8.278969410534525339E-14 } ; + int order[9] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 } ; + + double alpha = 2.0 ; + gsl_function f = make_function(&f11, &alpha); + gsl_function fc = make_counter(&f, &p) ; + + status = gsl_integration_qags (&fc, 1.0, 1000.0, 1e-7, 0.0, w->limit, + w, + &result, &abserr) ; + + gsl_test_rel(result,exp_result,1e-15,"qags(f11) smooth result") ; + gsl_test_rel(abserr,exp_abserr,1e-3,"qags(f11) smooth abserr") ; + gsl_test_int((int)(p.neval),exp_neval,"qags(f11) smooth neval") ; + gsl_test_int((int)(w->size),exp_last,"qags(f11) smooth last") ; + gsl_test_int(status,exp_ier,"qags(f11) smooth status") ; + + for (i = 0; i < 9 ; i++) + gsl_test_rel(w->alist[i],a[i],1e-15,"qags(f11) smooth alist") ; + + for (i = 0; i < 9 ; i++) + gsl_test_rel(w->blist[i],b[i],1e-15,"qags(f11) smooth blist") ; + + for (i = 0; i < 9 ; i++) + gsl_test_rel(w->rlist[i],r[i],1e-15,"qags(f11) smooth rlist") ; + + for (i = 0; i < 9 ; i++) + gsl_test_rel(w->elist[i],e[i],1e-5,"qags(f11) smooth elist") ; + + for (i = 0; i < 9 ; i++) + gsl_test_int((int)w->order[i],order[i]-1,"qags(f11) smooth order"); + + p.neval = 0; + status = gsl_integration_qags (&fc, 1000.0, 1.0, 1e-7, 0.0, w->limit, + w, + &result, &abserr) ; + + gsl_test_rel(result,-exp_result,1e-15,"qags(f11) reverse result") ; + gsl_test_rel(abserr,exp_abserr,1e-3,"qags(f11) reverse abserr") ; + gsl_test_int((int)(p.neval),exp_neval,"qags(f11) reverse neval") ; + gsl_test_int((int)(w->size),exp_last,"qags(f11) reverse last") ; + gsl_test_int(status,exp_ier,"qags(f11) reverse status") ; + + gsl_integration_workspace_free (w) ; + + } + + /* Test infinite range integral f455 using a relative error bound */ + + { + int status = 0, i; struct counter_params p; + double result = 0, abserr=0; + + gsl_integration_workspace * w = gsl_integration_workspace_alloc (1000) ; + + /* All results are for GSL_IEEE_MODE=double-precision */ + + double exp_result = -3.616892186127022568E-01 ; + double exp_abserr = 3.016716913328831851E-06; + int exp_neval = 285; + int exp_ier = 0; + int exp_last = 10; + + double a[10] = { 9.687500000000000000E-01, + 0.000000000000000000E+00, + 5.000000000000000000E-01, + 2.500000000000000000E-01, + 7.500000000000000000E-01, + 1.250000000000000000E-01, + 8.750000000000000000E-01, + 6.250000000000000000E-02, + 9.375000000000000000E-01, + 3.125000000000000000E-02 } ; + double b[10] = { 1.000000000000000000E+00, + 3.125000000000000000E-02, + 7.500000000000000000E-01, + 5.000000000000000000E-01, + 8.750000000000000000E-01, + 2.500000000000000000E-01, + 9.375000000000000000E-01, + 1.250000000000000000E-01, + 9.687500000000000000E-01, + 6.250000000000000000E-02 } ; + double r[10] = { -1.390003415539725340E-01, + 1.429785306003466313E-03, + -1.229943369113085765E-02, + 2.995321156568048898E-03, + -4.980050133751051655E-02, + 2.785385934678596704E-03, + -8.653752279614615461E-02, + 1.736218164975512294E-03, + -8.398745675010892142E-02, + 1.041689192004495576E-03 } ; + double e[10] = { 2.395037249893453013E-02, + 2.161214992172538524E-04, + 5.720644840858777846E-14, + 3.325474514168701167E-17, + 3.147380432198176412E-14, + 3.092399597147240624E-17, + 9.607595030230581153E-16, + 1.927589382528252344E-17, + 9.324480826368044019E-16, + 1.156507325466566521E-17 } ; + int order[10] = { 1, 2, 3, 5, 7, 9, 4, 6, 8, 10 } ; + + gsl_function f = make_function(&f455, 0); + gsl_function fc = make_counter(&f, &p) ; + + status = gsl_integration_qagiu (&fc, 0.0, 0.0, 1.0e-3, w->limit, + w, + &result, &abserr) ; + + gsl_test_rel(result,exp_result,1e-14,"qagiu(f455) smooth result") ; + gsl_test_rel(abserr,exp_abserr,1e-5,"qagiu(f455) smooth abserr") ; + gsl_test_int((int)(p.neval),exp_neval,"qagiu(f455) smooth neval") ; + gsl_test_int((int)(w->size),exp_last,"qagiu(f455) smooth last") ; + gsl_test_int(status,exp_ier,"qagiu(f455) smooth status") ; + + for (i = 0; i < 10 ; i++) + gsl_test_rel(w->alist[i],a[i],1e-15,"qagiu(f455) smooth alist") ; + + for (i = 0; i < 10 ; i++) + gsl_test_rel(w->blist[i],b[i],1e-15,"qagiu(f455) smooth blist") ; + + for (i = 0; i < 10 ; i++) + gsl_test_rel(w->rlist[i],r[i],1e-15,"qagiu(f455) smooth rlist") ; + + for (i = 0; i < 10 ; i++) + gsl_test_rel(w->elist[i],e[i],1e-4,"qagiu(f455) smooth elist") ; + + for (i = 0; i < 10 ; i++) + gsl_test_int((int)w->order[i],order[i]-1,"qagiu(f455) smooth order"); + + gsl_integration_workspace_free (w) ; + + } + + /* Test infinite range integral f15 using a relative error bound */ + + { + int status = 0, i; struct counter_params p; + double result = 0, abserr=0; + + gsl_integration_workspace * w = gsl_integration_workspace_alloc (1000) ; + + /* All results are for GSL_IEEE_MODE=double-precision */ + + double exp_result = 6.553600000000024738E+04; + double exp_abserr = 7.121667111456009280E-04; + int exp_neval = 285; + int exp_ier = 0; + int exp_last = 10; + + double a[10] = { 0.000000000000000000E+00, + 5.000000000000000000E-01, + 2.500000000000000000E-01, + 1.250000000000000000E-01, + 6.250000000000000000E-02, + 3.125000000000000000E-02, + 1.562500000000000000E-02, + 7.812500000000000000E-03, + 3.906250000000000000E-03, + 1.953125000000000000E-03 } ; + double b[10] = { 1.953125000000000000E-03, + 1.000000000000000000E+00, + 5.000000000000000000E-01, + 2.500000000000000000E-01, + 1.250000000000000000E-01, + 6.250000000000000000E-02, + 3.125000000000000000E-02, + 1.562500000000000000E-02, + 7.812500000000000000E-03, + 3.906250000000000000E-03 } ; + double r[10] = { 1.099297665754340292E+00, + 3.256176475185617591E-01, + 8.064694554185326325E+00, + 8.873128656118993263E+01, + 6.977679035845269482E+02, + 4.096981198511257389E+03, + 1.574317583220441520E+04, + 2.899418134793237914E+04, + 1.498314766425578091E+04, + 9.225251570832365360E+02 } ; + double e[10] = { 7.101865971621337814E-04, + 1.912660677170175771E-08, + 9.167763417119923333E-08, + 3.769501719163865578E-07, + 6.973493131275552509E-07, + 1.205653952340679711E-07, + 1.380003928453846583E-07, + 1.934652413547325474E-07, + 3.408933028357320364E-07, + 2.132473175465897029E-09 } ; + int order[10] = { 1, 5, 4, 9, 8, 7, 6, 3, 2, 10 } ; + + double alpha = 5.0; + + gsl_function f = make_function(&f15, &alpha); + gsl_function fc = make_counter(&f, &p) ; + + status = gsl_integration_qagiu (&fc, 0.0, 0.0, 1.0e-7, w->limit, + w, + &result, &abserr) ; + + gsl_test_rel(result,exp_result,1e-14,"qagiu(f15) smooth result") ; + gsl_test_rel(abserr,exp_abserr,1e-5,"qagiu(f15) smooth abserr") ; + gsl_test_int((int)(p.neval),exp_neval,"qagiu(f15) smooth neval") ; + gsl_test_int((int)(w->size),exp_last,"qagiu(f15) smooth last") ; + gsl_test_int(status,exp_ier,"qagiu(f15) smooth status") ; + + for (i = 0; i < 10 ; i++) + gsl_test_rel(w->alist[i],a[i],1e-15,"qagiu(f15) smooth alist") ; + + for (i = 0; i < 10 ; i++) + gsl_test_rel(w->blist[i],b[i],1e-15,"qagiu(f15) smooth blist") ; + + for (i = 0; i < 10 ; i++) + gsl_test_rel(w->rlist[i],r[i],1e-15,"qagiu(f15) smooth rlist") ; + + for (i = 0; i < 10 ; i++) + gsl_test_rel(w->elist[i],e[i],1e-4,"qagiu(f15) smooth elist") ; + + for (i = 0; i < 10 ; i++) + gsl_test_int((int)w->order[i],order[i]-1,"qagiu(f15) smooth order"); + + gsl_integration_workspace_free (w) ; + + } + + /* Test infinite range integral f16 using an absolute error bound */ + + { + int status = 0, i; struct counter_params p; + double result = 0, abserr=0; + + gsl_integration_workspace * w = gsl_integration_workspace_alloc (1000) ; + + /* All results are for GSL_IEEE_MODE=double-precision */ + + double exp_result = 1.000000000006713292E-04; + double exp_abserr = 3.084062020905636316E-09; + int exp_neval = 165; + int exp_ier = 0; + int exp_last = 6; + + double a[6] = { 0.000000000000000000E+00, + 5.000000000000000000E-01, + 2.500000000000000000E-01, + 1.250000000000000000E-01, + 6.250000000000000000E-02, + 3.125000000000000000E-02 } ; + double b[6] = { 3.125000000000000000E-02, + 1.000000000000000000E+00, + 5.000000000000000000E-01, + 2.500000000000000000E-01, + 1.250000000000000000E-01, + 6.250000000000000000E-02 } ; + double r[6] = { 7.633587786326674618E-05, + 9.900990099009899620E-07, + 1.922522349322310737E-06, + 3.629434715543053753E-06, + 6.501422186103209199E-06, + 1.062064387653501389E-05 } ; + double e[6] = { 3.084061858351569051E-09, + 3.112064814755089674E-17, + 4.543453652226561245E-17, + 4.908618166361344548E-17, + 3.014338672269481784E-17, + 6.795996738013555461E-18 } ; + int order[6] = { 1, 4, 3, 2, 5, 6 } ; + + double alpha = 1.0; + + gsl_function f = make_function(&f16, &alpha); + gsl_function fc = make_counter(&f, &p) ; + + status = gsl_integration_qagiu (&fc, 99.9, 1.0e-7, 0.0, w->limit, + w, + &result, &abserr) ; + + gsl_test_rel(result,exp_result,1e-14,"qagiu(f16) smooth result") ; + gsl_test_rel(abserr,exp_abserr,1e-5,"qagiu(f16) smooth abserr") ; + gsl_test_int((int)(p.neval),exp_neval,"qagiu(f16) smooth neval") ; + gsl_test_int((int)(w->size),exp_last,"qagiu(f16) smooth last") ; + gsl_test_int(status,exp_ier,"qagiu(f16) smooth status") ; + + for (i = 0; i < 6 ; i++) + gsl_test_rel(w->alist[i],a[i],1e-15,"qagiu(f16) smooth alist") ; + + for (i = 0; i < 6 ; i++) + gsl_test_rel(w->blist[i],b[i],1e-15,"qagiu(f16) smooth blist") ; + + for (i = 0; i < 6 ; i++) + gsl_test_rel(w->rlist[i],r[i],1e-15,"qagiu(f16) smooth rlist") ; + + for (i = 0; i < 6 ; i++) + gsl_test_rel(w->elist[i],e[i],1e-4,"qagiu(f16) smooth elist") ; + + for (i = 0; i < 6 ; i++) + gsl_test_int((int)w->order[i],order[i]-1,"qagiu(f16) smooth order"); + + gsl_integration_workspace_free (w) ; + + } + + /* Test infinite range integral myfn1 using an absolute error bound */ + + { + int status = 0, i; struct counter_params p; + double result = 0, abserr=0; + + gsl_integration_workspace * w = gsl_integration_workspace_alloc (1000) ; + + /* All results are for GSL_IEEE_MODE=double-precision */ + + double exp_result = 2.275875794468747770E+00; + double exp_abserr = 7.436490118267390744E-09; + int exp_neval = 270; + int exp_ier = 0; + int exp_last = 5; + + double a[5] = { 1.250000000000000000E-01, + 5.000000000000000000E-01, + 2.500000000000000000E-01, + 0.000000000000000000E+00, + 3.750000000000000000E-01 } ; + double b[5] = { 2.500000000000000000E-01, + 1.000000000000000000E+00, + 3.750000000000000000E-01, + 1.250000000000000000E-01, + 5.000000000000000000E-01 } ; + double r[5] = { 4.639317228058405717E-04, + 1.691664195356748834E+00, + 1.146307471900291086E-01, + 4.379392477350953574E-20, + 4.691169201991640669E-01 } ; + double e[5] = { 3.169263960393051137E-09, + 4.265988974874425043E-09, + 1.231954072964969637E-12, + 8.360902986775307673E-20, + 5.208244060463541433E-15 } ; + int order[5] = { 2, 1, 3, 5, 4 } ; + + gsl_function f = make_function(&myfn1, 0); + gsl_function fc = make_counter(&f, &p) ; + + status = gsl_integration_qagi (&fc, 1.0e-7, 0.0, w->limit, + w, + &result, &abserr) ; + + gsl_test_rel(result,exp_result,1e-14,"qagiu(myfn1) smooth result") ; + gsl_test_rel(abserr,exp_abserr,1e-5,"qagiu(myfn1) smooth abserr") ; + gsl_test_int((int)(p.neval),exp_neval,"qagiu(myfn1) smooth neval") ; + gsl_test_int((int)(w->size),exp_last,"qagiu(myfn1) smooth last") ; + gsl_test_int(status,exp_ier,"qagiu(myfn1) smooth status") ; + + for (i = 0; i < 5 ; i++) + gsl_test_rel(w->alist[i],a[i],1e-15,"qagiu(myfn1) smooth alist") ; + + for (i = 0; i < 5 ; i++) + gsl_test_rel(w->blist[i],b[i],1e-15,"qagiu(myfn1) smooth blist") ; + + for (i = 0; i < 5 ; i++) + gsl_test_rel(w->rlist[i],r[i],1e-14,"qagiu(myfn1) smooth rlist") ; + + for (i = 0; i < 5 ; i++) + gsl_test_rel(w->elist[i],e[i],1e-4,"qagiu(myfn1) smooth elist") ; + + for (i = 0; i < 5 ; i++) + gsl_test_int((int)w->order[i],order[i]-1,"qagiu(myfn1) smooth order"); + + gsl_integration_workspace_free (w) ; + + } + + /* Test infinite range integral myfn1 using an absolute error bound */ + + { + int status = 0, i; struct counter_params p; + double result = 0, abserr=0; + + gsl_integration_workspace * w = gsl_integration_workspace_alloc (1000) ; + + /* All results are for GSL_IEEE_MODE=double-precision */ + + double exp_result = 2.718281828459044647E+00; + double exp_abserr = 1.588185109253204805E-10; + int exp_neval = 135; + int exp_ier = 0; + int exp_last = 5; + + double a[5] = { 0.000000000000000000E+00, + 5.000000000000000000E-01, + 2.500000000000000000E-01, + 1.250000000000000000E-01, + 6.250000000000000000E-02 } ; + double b[5] = { 6.250000000000000000E-02, + 1.000000000000000000E+00, + 5.000000000000000000E-01, + 2.500000000000000000E-01, + 1.250000000000000000E-01 } ; + double r[5] = { 8.315287189746029816E-07, + 1.718281828459045091E+00, + 8.646647167633871867E-01, + 1.328565310599463256E-01, + 2.477920647947255521E-03 } ; + double e[5] = { 1.533437090413525935E-10, + 4.117868247943567505E-12, + 7.802455785301941044E-13, + 5.395586026138397182E-13, + 3.713312434866150125E-14 } ; + int order[5] = { 1, 2, 3, 4, 5 } ; + + double alpha = 1.0 ; + gsl_function f = make_function(&myfn2, &alpha); + gsl_function fc = make_counter(&f, &p) ; + + status = gsl_integration_qagil (&fc, 1.0, 1.0e-7, 0.0, w->limit, + w, + &result, &abserr) ; + + gsl_test_rel(result,exp_result,1e-14,"qagiu(myfn2) smooth result") ; + gsl_test_rel(abserr,exp_abserr,1e-5,"qagiu(myfn2) smooth abserr") ; + gsl_test_int((int)(p.neval),exp_neval,"qagiu(myfn2) smooth neval") ; + gsl_test_int((int)(w->size),exp_last,"qagiu(myfn2) smooth last") ; + gsl_test_int(status,exp_ier,"qagiu(myfn2) smooth status") ; + + for (i = 0; i < 5 ; i++) + gsl_test_rel(w->alist[i],a[i],1e-15,"qagiu(myfn2) smooth alist") ; + + for (i = 0; i < 5 ; i++) + gsl_test_rel(w->blist[i],b[i],1e-15,"qagiu(myfn2) smooth blist") ; + + for (i = 0; i < 5 ; i++) + gsl_test_rel(w->rlist[i],r[i],1e-14,"qagiu(myfn2) smooth rlist") ; + + for (i = 0; i < 5 ; i++) + gsl_test_rel(w->elist[i],e[i],1e-4,"qagiu(myfn2) smooth elist") ; + + for (i = 0; i < 5 ; i++) + gsl_test_int((int)w->order[i],order[i]-1,"qagiu(myfn2) smooth order"); + + gsl_integration_workspace_free (w) ; + + } + + /* Test integral f454 with integrable singular points */ + + { + int status = 0, i; struct counter_params p; + double result = 0, abserr=0; + + gsl_integration_workspace * w = gsl_integration_workspace_alloc (1000) ; + + /* All results are for GSL_IEEE_MODE=double-precision */ + + double exp_result = 5.274080611672716401E+01; + double exp_abserr = 1.755703848687062418E-04; + int exp_neval = 777; + int exp_ier = 0; + int exp_last = 20; + + double a[20] = { 9.687500000000000000E-01, + 1.401269388548935790E+00, + 1.414213562373095145E+00, + 1.000000000000000000E+00, + 0.000000000000000000E+00, + 2.207106781186547462E+00, + 1.810660171779821415E+00, + 1.207106781186547462E+00, + 5.000000000000000000E-01, + 1.103553390593273731E+00, + 1.612436867076458391E+00, + 1.310660171779821415E+00, + 7.500000000000000000E-01, + 1.051776695296636976E+00, + 1.513325214724776657E+00, + 1.362436867076458391E+00, + 8.750000000000000000E-01, + 1.463769388548935790E+00, + 1.388325214724776657E+00, + 9.375000000000000000E-01} ; + double b[20] = { 1.000000000000000000E+00, + 1.414213562373095145E+00, + 1.463769388548935790E+00, + 1.051776695296636976E+00, + 5.000000000000000000E-01, + 3.000000000000000000E+00, + 2.207106781186547462E+00, + 1.310660171779821415E+00, + 7.500000000000000000E-01, + 1.207106781186547462E+00, + 1.810660171779821415E+00, + 1.362436867076458391E+00, + 8.750000000000000000E-01, + 1.103553390593273731E+00, + 1.612436867076458391E+00, + 1.388325214724776657E+00, + 9.375000000000000000E-01, + 1.513325214724776657E+00, + 1.401269388548935790E+00, + 9.687500000000000000E-01} ; + double r[20] = { -1.125078814079027711E-01, + -1.565132123531515207E-01, + -4.225328513207429193E-01, + -1.830392049835374568E-01, + 6.575875041899758092E-03, + 4.873920540843067783E+01, + 6.032891565603589079E+00, + -2.991531901645863023E-01, + -7.326282608704996063E-03, + -2.431894410706912923E-01, + 5.911661670635662835E-01, + -2.236786562536174916E-01, + -5.647871991778510847E-02, + -1.305470403178642658E-01, + -1.721363984401322045E-01, + -1.589345454585119055E-01, + -7.406626263352669715E-02, + -2.208730668000830344E-01, + -1.048692749517999567E-01, + -6.302287584527696551E-02} ; + double e[20] = { 2.506431410088378817E-02, + 2.730454695485963826E-02, + 1.017446081816190118E-01, + 3.252808038935910834E-02, + 7.300687878575027348E-17, + 5.411138804637469780E-13, + 6.697855121200013106E-14, + 3.321267596107916554E-15, + 1.417509685426979386E-16, + 2.699945168224041491E-15, + 6.573952690524728748E-15, + 2.483331942899818875E-15, + 6.270397525408045936E-16, + 1.449363299575615261E-15, + 1.911097929242846383E-15, + 1.764527917763735212E-15, + 8.223007012367522077E-16, + 2.452183642810224359E-15, + 1.164282836272345215E-15, + 6.996944784151910810E-16} ; + int order[20] = { 3, 4, 2, 1, 6, 7, 11, 8, 10, 12, 18, + 15, 16, 14, 19, 17, 20, 13, 9, 5 } ; + + gsl_function f = make_function(&f454, 0); + gsl_function fc = make_counter(&f, &p) ; + + double pts[4] ; + + pts[0] = 0.0; + pts[1] = 1.0; + pts[2] = sqrt(2.0); + pts[3] = 3.0; + + status = gsl_integration_qagp (&fc, pts, 4, + 0.0, 1.0e-3, w->limit, + w, + &result, &abserr) ; + + gsl_test_rel(result,exp_result,1e-14,"qagp(f454) singular result") ; + gsl_test_rel(abserr,exp_abserr,1e-5,"qagp(f454) singular abserr") ; + gsl_test_int((int)(p.neval),exp_neval,"qagp(f454) singular neval") ; + gsl_test_int((int)(w->size),exp_last,"qagp(f454) singular last") ; + gsl_test_int(status,exp_ier,"qagp(f454) singular status") ; + + for (i = 0; i < 20 ; i++) + gsl_test_rel(w->alist[i],a[i],1e-15,"qagp(f454) singular alist") ; + + for (i = 0; i < 20 ; i++) + gsl_test_rel(w->blist[i],b[i],1e-15,"qagp(f454) singular blist") ; + + for (i = 0; i < 20 ; i++) + gsl_test_rel(w->rlist[i],r[i],1e-14,"qagp(f454) singular rlist") ; + + for (i = 0; i < 20 ; i++) + gsl_test_rel(w->elist[i],e[i],1e-4,"qagp(f454) singular elist") ; + + for (i = 0; i < 20 ; i++) + gsl_test_int((int)w->order[i],order[i]-1,"qagp(f454) singular order"); + + gsl_integration_workspace_free (w) ; + + } + + + /* Test cauchy integration using a relative error bound */ + + { + int status = 0, i; struct counter_params p; + double result = 0, abserr=0; + + gsl_integration_workspace * w = gsl_integration_workspace_alloc (1000) ; + + /* All results are for GSL_IEEE_MODE=double-precision */ + + double exp_result = -8.994400695837000137E-02; + double exp_abserr = 1.185290176227023727E-06; + int exp_neval = 215; + int exp_ier = 0; + int exp_last = 6; + + double a[6] = { -1.000000000000000000E+00, + 2.500000000000000000E+00, + 1.250000000000000000E+00, + 6.250000000000000000E-01, + -5.000000000000000000E-01, + -7.500000000000000000E-01} ; + double b[6] = { -7.500000000000000000E-01, + 5.000000000000000000E+00, + 2.500000000000000000E+00, + 1.250000000000000000E+00, + 6.250000000000000000E-01, + -5.000000000000000000E-01} ; + double r[6] = { -1.234231128040012976E-01, + 3.579970394639702888E-03, + 2.249831615049339983E-02, + 7.214232992127905808E-02, + 2.079093855884046535E-02, + -8.553244917962132821E-02} ; + double e[6] = { 1.172832717970022565E-06, + 9.018232896137375412E-13, + 1.815172652101790755E-12, + 1.006998195150956048E-13, + 1.245463873006391609E-08, + 1.833082948207153514E-15 } ; + int order[6] = { 1, 5, 3, 2, 4, 6 } ; + + double alpha = 1.0 ; + gsl_function f = make_function(&f459, &alpha); + gsl_function fc = make_counter(&f, &p) ; + + status = gsl_integration_qawc (&fc, -1.0, 5.0, 0.0, 0.0, 1.0e-3, w->limit, + w, + &result, &abserr) ; + + gsl_test_rel(result,exp_result,1e-14,"qawc(f459) result") ; + gsl_test_rel(abserr,exp_abserr,1e-6,"qawc(f459) abserr") ; + gsl_test_int((int)(p.neval),exp_neval,"qawc(f459) neval") ; + gsl_test_int((int)(w->size),exp_last,"qawc(f459) last") ; + gsl_test_int(status,exp_ier,"qawc(f459) status") ; + + for (i = 0; i < 6 ; i++) + gsl_test_rel(w->alist[i],a[i],1e-15,"qawc(f459) alist") ; + + for (i = 0; i < 6 ; i++) + gsl_test_rel(w->blist[i],b[i],1e-15,"qawc(f459) blist") ; + + for (i = 0; i < 6 ; i++) + gsl_test_rel(w->rlist[i],r[i],1e-14,"qawc(f459) rlist") ; + + for (i = 0; i < 6 ; i++) + gsl_test_rel(w->elist[i],e[i],1e-4,"qawc(f459) elist") ; + + for (i = 0; i < 6 ; i++) + gsl_test_int((int)w->order[i],order[i]-1,"qawc(f459) order"); + + p.neval = 0; + status = gsl_integration_qawc (&fc, 5.0, -1.0, 0.0, 0.0, 1.0e-3, w->limit, + w, + &result, &abserr) ; + + gsl_test_rel(result,-exp_result,1e-14,"qawc(f459) rev result") ; + gsl_test_rel(abserr,exp_abserr,1e-6,"qawc(f459) rev abserr") ; + gsl_test_int((int)(p.neval),exp_neval,"qawc(f459) rev neval") ; + gsl_test_int((int)(w->size),exp_last,"qawc(f459) rev last") ; + gsl_test_int(status,exp_ier,"qawc(f459) rev status") ; + + gsl_integration_workspace_free (w) ; + + } + + /* Test QAWS singular integration using a relative error bound */ + + { + int status = 0, i; struct counter_params p; + double result = 0, abserr=0; + + gsl_integration_qaws_table * t + = gsl_integration_qaws_table_alloc (0.0, 0.0, 1, 0); + + gsl_integration_workspace * w = gsl_integration_workspace_alloc (1000) ; + + /* All results are for GSL_IEEE_MODE=double-precision */ + + double exp_result = -1.892751853489401670E-01; + double exp_abserr = 1.129133712015747658E-08; + int exp_neval = 280; + int exp_ier = 0; + int exp_last = 8; + + double a[8] = { 0.000000000000000000E+00, + 5.000000000000000000E-01, + 2.500000000000000000E-01, + 1.250000000000000000E-01, + 6.250000000000000000E-02, + 3.125000000000000000E-02, + 1.562500000000000000E-02, + 7.812500000000000000E-03} ; + double b[8] = { 7.812500000000000000E-03, + 1.000000000000000000E+00, + 5.000000000000000000E-01, + 2.500000000000000000E-01, + 1.250000000000000000E-01, + 6.250000000000000000E-02, + 3.125000000000000000E-02, + 1.562500000000000000E-02} ; + double r[8] = { -4.126317299834445824E-05, + -1.076283950172247789E-01, + -6.240573216173390947E-02, + -1.456169844189576269E-02, + -3.408925115926728436E-03, + -8.914083918175634211E-04, + -2.574191402137795482E-04, + -8.034390712936630608E-05} ; + double e[8] = { 1.129099387465713953E-08, + 3.423394967694403596E-13, + 6.928428071454762659E-16, + 1.616673288784094320E-16, + 3.784667152924835070E-17, + 9.896621209399419425E-18, + 2.857926564445496100E-18, + 8.919965558336773736E-19} ; + int order[8] = { 1, 2, 3, 4, 5, 6, 7, 8 } ; + + double alpha = 1.0 ; + gsl_function f = make_function(&f458, &alpha); + gsl_function fc = make_counter(&f, &p) ; + + status = gsl_integration_qaws (&fc, 0.0, 1.0, t, 0.0, 1.0e-7, w->limit, + w, + &result, &abserr) ; + + gsl_test_rel(result,exp_result,1e-14,"qaws(f458) ln(x-a) result") ; + gsl_test_rel(abserr,exp_abserr,1e-6,"qaws(f458) ln(x-a) abserr") ; + gsl_test_int((int)(p.neval),exp_neval,"qaws(f458) ln(x-a) neval") ; + gsl_test_int((int)(w->size),exp_last,"qaws(f458) ln(x-a) last") ; + gsl_test_int(status,exp_ier,"qaws(f458) ln(x-a) status") ; + + for (i = 0; i < 6 ; i++) + gsl_test_rel(w->alist[i],a[i],1e-15,"qaws(f458) ln(x-a) alist") ; + + for (i = 0; i < 6 ; i++) + gsl_test_rel(w->blist[i],b[i],1e-15,"qaws(f458) ln(x-a) blist") ; + + for (i = 0; i < 6 ; i++) + gsl_test_rel(w->rlist[i],r[i],1e-14,"qaws(f458) ln(x-a) rlist") ; + + for (i = 0; i < 6 ; i++) + gsl_test_rel(w->elist[i],e[i],1e-4,"qaws(f458) ln(x-a) elist") ; + + for (i = 0; i < 6 ; i++) + gsl_test_int((int)w->order[i],order[i]-1,"qaws(f458) ln(x-a) order"); + + /* Test without logs */ + + gsl_integration_qaws_table_set (t, -0.5, -0.3, 0, 0); + + status = gsl_integration_qaws (&fc, 0.0, 1.0, t, 0.0, 1.0e-7, w->limit, + w, &result, &abserr) ; + + exp_result = 9.896686656601706433E-01; + exp_abserr = 5.888032513201251628E-08; + + gsl_test_rel(result,exp_result,1e-14,"qaws(f458) AB result") ; + gsl_test_rel(abserr,exp_abserr,1e-6,"qaws(f458) AB abserr") ; + + /* Test with ln(x - a) */ + + gsl_integration_qaws_table_set (t, -0.5, -0.3, 1, 0); + + status = gsl_integration_qaws (&fc, 0.0, 1.0, t, 0.0, 1.0e-7, w->limit, + w, &result, &abserr) ; + + exp_result = -3.636679470586539620E-01; + exp_abserr = 2.851348775257054093E-08; + + gsl_test_rel(result,exp_result,1e-14,"qaws(f458) AB ln(x-a) result") ; + gsl_test_rel(abserr,exp_abserr,1e-6,"qaws(f458) AB ln(x-a) abserr") ; + + /* Test with ln(b - x) */ + + gsl_integration_qaws_table_set (t, -0.5, -0.3, 0, 1); + + status = gsl_integration_qaws (&fc, 0.0, 1.0, t, 0.0, 1.0e-7, w->limit, + w, &result, &abserr) ; + + exp_result = -1.911489253363409802E+00; + exp_abserr = 9.854016753016499034E-09; + + gsl_test_rel(result,exp_result,1e-14,"qaws(f458) AB ln(b-x) result") ; + gsl_test_rel(abserr,exp_abserr,1e-6,"qaws(f458) AB ln(b-x) abserr") ; + + /* Test with ln(x - a) ln(b - x) */ + + gsl_integration_qaws_table_set (t, -0.5, -0.3, 1, 1); + + status = gsl_integration_qaws (&fc, 0.0, 1.0, t, 0.0, 1.0e-7, w->limit, + w, &result, &abserr) ; + + exp_result = 3.159922862811048172E-01; + exp_abserr = 2.336183482198144595E-08; + + gsl_test_rel(result,exp_result,1e-14,"qaws(f458) AB ln(x-a)ln(b-x) result") ; + gsl_test_rel(abserr,exp_abserr,1e-6,"qaws(f458) AB ln(x-a)ln(b-x) abserr") ; + + gsl_integration_workspace_free (w) ; + gsl_integration_qaws_table_free (t) ; + + } + + + /* Test oscillatory integration using a relative error bound */ + + { + int status = 0, i; struct counter_params p; + double result = 0, abserr=0; + + gsl_integration_workspace * w = gsl_integration_workspace_alloc (1000) ; + gsl_integration_qawo_table * wo + = gsl_integration_qawo_table_alloc (10.0 * M_PI, 1.0, + GSL_INTEG_SINE, 1000) ; + + /* All results are for GSL_IEEE_MODE=double-precision */ + + double exp_result = -1.281368483991674190E-01; + double exp_abserr = 6.875028324415666248E-12; + int exp_neval = 305; + int exp_ier = 0; + int exp_last = 9; + + double a[9] = { 0.000000000000000000E+00, + 5.000000000000000000E-01, + 2.500000000000000000E-01, + 1.250000000000000000E-01, + 6.250000000000000000E-02, + 3.125000000000000000E-02, + 1.562500000000000000E-02, + 7.812500000000000000E-03, + 3.906250000000000000E-03 } ; + double b[9] = { 3.906250000000000000E-03, + 1.000000000000000000E+00, + 5.000000000000000000E-01, + 2.500000000000000000E-01, + 1.250000000000000000E-01, + 6.250000000000000000E-02, + 3.125000000000000000E-02, + 1.562500000000000000E-02, + 7.812500000000000000E-03 } ; + double r[9] = { -1.447193692377651136E-03, + 2.190541162282139478E-02, + -2.587726479625663753E-02, + 5.483209176363500886E-02, + -3.081695575172510582E-02, + -9.178321994387816929E-02, + -3.886716016498160953E-02, + -1.242306301902117854E-02, + -3.659495117871544145E-03} ; + double e[9] = { 8.326506625798146465E-07, + 1.302638552580516100E-13, + 7.259224351945759794E-15, + 1.249770395036711102E-14, + 7.832180081562836579E-16, + 1.018998440559284116E-15, + 4.315121611695628020E-16, + 1.379237060008662177E-16, + 4.062855738364339357E-17 } ; + int order[9] = { 1, 2, 4, 3, 6, 5, 7, 8, 9 } ; + + double alpha = 1.0 ; + gsl_function f = make_function(&f456, &alpha); + gsl_function fc = make_counter(&f, &p) ; + + status = gsl_integration_qawo (&fc, 0.0, 0.0, 1e-7, w->limit, + w, wo, &result, &abserr) ; + + gsl_test_rel(result,exp_result,1e-14,"qawo(f456) result") ; + gsl_test_rel(abserr,exp_abserr,1e-3,"qawo(f456) abserr") ; + gsl_test_int((int)(p.neval),exp_neval,"qawo(f456) neval") ; + gsl_test_int((int)(w->size),exp_last,"qawo(f456) last") ; + gsl_test_int(status,exp_ier,"qawo(f456) status") ; + + for (i = 0; i < 9 ; i++) + gsl_test_rel(w->alist[i],a[i],1e-15,"qawo(f456) alist") ; + + for (i = 0; i < 9 ; i++) + gsl_test_rel(w->blist[i],b[i],1e-15,"qawo(f456) blist") ; + + for (i = 0; i < 9 ; i++) + gsl_test_rel(w->rlist[i],r[i],1e-14,"qawo(f456) rlist") ; + + for (i = 0; i < 9 ; i++) + gsl_test_rel(w->elist[i],e[i],1e-2,"qawo(f456) elist") ; + + for (i = 0; i < 9 ; i++) + gsl_test_int((int)w->order[i],order[i]-1,"qawo(f456) order"); + + + /* In reverse, flip limit and sign of length */ + + gsl_integration_qawo_table_set_length (wo, -1.0); + + p.neval = 0; + status = gsl_integration_qawo (&fc, 1.0, 0.0, 1e-7, w->limit, + w, wo, &result, &abserr) ; + + gsl_test_rel(result,-exp_result,1e-14,"qawo(f456) rev result") ; + gsl_test_rel(abserr,exp_abserr,1e-3,"qawo(f456) rev abserr") ; + gsl_test_int((int)(p.neval),exp_neval,"qawo(f456) rev neval") ; + gsl_test_int((int)(w->size),exp_last,"qawo(f456) rev last") ; + gsl_test_int(status,exp_ier,"qawo(f456) rev status") ; + + + gsl_integration_qawo_table_free (wo) ; + gsl_integration_workspace_free (w) ; + + } + + /* Test fourier integration using an absolute error bound */ + + { + int status = 0, i; struct counter_params p; + double result = 0, abserr=0; + + gsl_integration_workspace * w = gsl_integration_workspace_alloc (1000) ; + gsl_integration_workspace * wc = gsl_integration_workspace_alloc (1000) ; + gsl_integration_qawo_table * wo + = gsl_integration_qawo_table_alloc (M_PI / 2.0, 1.0, + GSL_INTEG_COSINE, 1000) ; + + /* All results are for GSL_IEEE_MODE=double-precision */ + + double exp_result = 9.999999999279802765E-01; + double exp_abserr = 1.556289974669056164E-08; + int exp_neval = 590; + int exp_ier = 0; + int exp_last = 12; + + double r[12] = { 1.013283128125232802E+00, + -1.810857954748607349E-02, + 7.466754034900931897E-03, + -4.360312526786496237E-03, + 2.950184068216192904E-03, + -2.168238443073697373E-03, + 1.680910783140869081E-03, + -1.352797860944863345E-03, + 1.119354921991485901E-03, + -9.462367583691360827E-04, + 8.136341270731781887E-04, + -7.093931338504278145E-04 } ; + double e[12] = { 1.224798040766472695E-12, + 1.396565155187268456E-13, + 1.053844511655910310E-16, + 6.505213034913026604E-19, + 7.155734338404329264E-18, + 1.105886215935214523E-17, + 9.757819552369539906E-18, + 5.854691731421723944E-18, + 4.553649124439220312E-18, + 7.643625316022806260E-18, + 2.439454888092388058E-17, + 2.130457268934021451E-17 } ; + + double alpha = 1.0 ; + gsl_function f = make_function(&f457, &alpha); + gsl_function fc = make_counter(&f, &p) ; + + status = gsl_integration_qawf (&fc, 0.0, 1e-7, w->limit, + w, wc, wo, &result, &abserr) ; + + gsl_test_rel(result,exp_result,1e-14,"qawf(f457) result") ; + gsl_test_rel(abserr,exp_abserr,1e-3,"qawf(f457) abserr") ; + gsl_test_int((int)(p.neval),exp_neval,"qawf(f457) neval") ; + gsl_test_int((int)(w->size),exp_last,"qawf(f457) last") ; + gsl_test_int(status,exp_ier,"qawf(f457) status") ; + + for (i = 0; i < 9 ; i++) + gsl_test_rel(w->rlist[i],r[i],1e-12,"qawf(f457) rlist") ; + + /* We can only get within two orders of magnitude on the error + here, which is very sensitive to the floating point precision */ + + for (i = 0; i < 9 ; i++) + gsl_test_rel(w->elist[i],e[i],50.0,"qawf(f457) elist") ; + + + gsl_integration_qawo_table_free (wo) ; + gsl_integration_workspace_free (wc) ; + gsl_integration_workspace_free (w) ; + + } + + /* test Romberg integration */ + { + int status = 0, i; + double result; + size_t neval; + double exp_result; + int exp_ier = 0; + + gsl_function f; + gsl_integration_romberg_workspace * w = gsl_integration_romberg_alloc (20); + + f = make_function(&f_sin, NULL); + exp_result = 1.0; + + status = gsl_integration_romberg(&f, 0.0, M_PI_2, 0.0, 1e-10, &result, &neval, w); + gsl_test_int(status, exp_ier, "romberg(f_sin) status") ; + gsl_test_rel(result, exp_result, 1e-15, "romberg(f_sin) result") ; + + status = gsl_integration_romberg(&f, M_PI_2, 0.0, 0.0, 1e-10, &result, &neval, w); + gsl_test_int(status, exp_ier, "romberg(f_sin) reverse status") ; + gsl_test_rel(result, -exp_result, 1e-15, "romberg(f_sin) reverse result") ; + + f = make_function(&cqf11, NULL); + exp_result = 5.0; + + status = gsl_integration_romberg(&f, -5.0, 5.0, 0.0, 1e-10, &result, &neval, w); + gsl_test_int(status, exp_ier, "romberg(cqf11) status") ; + gsl_test_rel(result, exp_result, 1e-15, "romberg(cqf11) result") ; + + status = gsl_integration_romberg(&f, 5.0, -5.0, 0.0, 1e-10, &result, &neval, w); + gsl_test_int(status, exp_ier, "romberg(cqf11) reverse status") ; + gsl_test_rel(result, -exp_result, 1e-15, "romberg(cqf11) reverse result") ; + + gsl_integration_romberg_free(w); + } + + /* Sanity check monomial test function for fixed Gauss-Legendre rules */ + { + struct monomial_params params; + gsl_function f; + + f.function = &f_monomial; + f.params = ¶ms; + + params.degree = 2; + params.constant = 1.0; + gsl_test_abs(GSL_FN_EVAL(&f, 2.0), 4.0, 8*GSL_DBL_EPSILON, + "f_monomial sanity check 1"); + + params.degree = 1; + params.constant = 2.0; + gsl_test_abs(GSL_FN_EVAL(&f, 2.0), 4.0, 8*GSL_DBL_EPSILON, + "f_monomial sanity check 2"); + + params.degree = 2; + params.constant = 2.0; + gsl_test_abs(integ_f_monomial(1.0, 2.0, ¶ms), + (2.0/3.0)*(2.0*2.0*2.0 - 1.0*1.0*1.0), 8*GSL_DBL_EPSILON, + "integ_f_monomial sanity check"); + } + + /* Test the fixed-order Gauss-Legendre rules with a monomial. */ + { + int n; + struct monomial_params params; + gsl_function f; + const double a = 0.0, b = 1.2; + + f.function = &f_monomial; + f.params = ¶ms; + + params.constant = 1.0; + + for (n = 1; n < 1025; ++n) + { + double expected, result; + + gsl_integration_glfixed_table * tbl = + gsl_integration_glfixed_table_alloc(n); + + params.degree = 2*n-1; /* n point rule exact for 2n-1 degree poly */ + expected = integ_f_monomial(a, b, ¶ms); + result = gsl_integration_glfixed(&f, a, b, tbl); + + if (tbl->precomputed) + { + gsl_test_rel(result, expected, 1.0e-12, + "glfixed %d-point: Integrating (%g*x^%d) over [%g,%g]", + n, params.constant, params.degree, a, b); + } + else + { + gsl_test_rel(result, expected, 1.0e-7, + "glfixed %d-point: Integrating (%g*x^%d) over [%g,%g]", + n, params.constant, params.degree, a, b); + } + + gsl_integration_glfixed_table_free(tbl); + } + } + + /* Sanity check sin(x) test function for fixed Gauss-Legendre rules */ + { + gsl_function f = { f_sin, NULL }; + + gsl_test_abs(GSL_FN_EVAL(&f, 2.0), sin(2.0), 0.0, "f_sin sanity check 1"); + gsl_test_abs(GSL_FN_EVAL(&f, 7.0), sin(7.0), 0.0, "f_sin sanity check 2"); + gsl_test_abs(integ_f_sin(0.0, M_PI), 2.0, GSL_DBL_EPSILON, + "integ_f_sin sanity check"); + } + + /* Test the fixed-order Gauss-Legendre rules against sin(x) on [0, pi] */ + { + const int n_max = 1024; + const gsl_function f = { f_sin, NULL }; + const double a = 0.0, b = M_PI; + const double expected = integ_f_sin(a, b); + double result, abserr, prev_abserr = 0.0; + int n; + + for (n = 1; n <= n_max; ++n) + { + gsl_integration_glfixed_table * const tbl = + gsl_integration_glfixed_table_alloc(n); + + result = gsl_integration_glfixed(&f, a, b, tbl); + abserr = fabs(expected - result); + + if (n == 1) + { + gsl_test_abs(result, GSL_FN_EVAL(&f,(b+a)/2)*(b-a), 0.0, + "glfixed %d-point: behavior for n == 1", n); + } + else if (n < 9) + { + gsl_test(! (abserr < prev_abserr), + "glfixed %d-point: observed drop in absolute error versus %d-points", + n, n-1); + } + else if (tbl->precomputed) + { + gsl_test_abs(result, expected, 2.0 * n * GSL_DBL_EPSILON, + "glfixed %d-point: very low absolute error for high precision coefficients", + n); + } + else + { + gsl_test_abs(result, expected, 1.0e6 * GSL_DBL_EPSILON, + "glfixed %d-point: acceptable absolute error for on-the-fly coefficients", + n); + } + + prev_abserr = abserr; + gsl_integration_glfixed_table_free(tbl); + } + } + + /* Test some fixed-order Gauss-Legendre rule points and weights on [-1, 1] */ + /* This verifies the (point, weight) retrieval API behaves sanely */ + { + const double eps = GSL_DBL_EPSILON; + gsl_integration_glfixed_table *tbl; + int n, i; + double xi, wi; + + /* Analytical results for points and weights on [-1, 1] + Pulled from http://en.wikipedia.org/wiki/Gaussian_quadrature + Sorted in increasing order of Gauss points */ + const double e1[1][2] = { + {0, 2 } + }; + const double e2[2][2] = { + {-1.0/M_SQRT3, 1}, + { 1.0/M_SQRT3, 1} + }; + const double e3[3][2] = { + {-SQRT15/5, 5./9}, + { 0, 8./9}, + { SQRT15/5, 5./9} + }; + const double e4[4][2] = { + {-CONST1, (18-SQRT30)/36}, + {-CONST2, (18+SQRT30)/36}, + { CONST2, (18+SQRT30)/36}, + { CONST1, (18-SQRT30)/36} + }; + const double e5[5][2] = { + {-CONST3, (322-13*SQRT70)/900}, + {-CONST4, (322+13*SQRT70)/900}, + { 0, 128./225 }, + { CONST4, (322+13*SQRT70)/900}, + { CONST3, (322-13*SQRT70)/900} + }; + + n = 1; + tbl = gsl_integration_glfixed_table_alloc(n); + for (i = 0; i < n; ++i) + { + gsl_integration_glfixed_point(-1, 1, i, &xi, &wi, tbl); + gsl_test_abs(xi, e1[i][0], eps, "glfixed %d-point lookup: x(%d)", n, i); + gsl_test_abs(wi, e1[i][1], eps, "glfixed %d-point lookup: w(%d)", n, i); + } + gsl_integration_glfixed_table_free(tbl); + + n = 2; + tbl = gsl_integration_glfixed_table_alloc(n); + for (i = 0; i < n; ++i) + { + gsl_integration_glfixed_point(-1, 1, i, &xi, &wi, tbl); + gsl_test_abs(xi, e2[i][0], eps, "glfixed %d-point lookup: x(%d)", n, i); + gsl_test_abs(wi, e2[i][1], eps, "glfixed %d-point lookup: w(%d)", n, i); + } + gsl_integration_glfixed_table_free(tbl); + + n = 3; + tbl = gsl_integration_glfixed_table_alloc(n); + for (i = 0; i < n; ++i) + { + gsl_integration_glfixed_point(-1, 1, i, &xi, &wi, tbl); + gsl_test_abs(xi, e3[i][0], eps, "glfixed %d-point lookup: x(%d)", n, i); + gsl_test_abs(wi, e3[i][1], eps, "glfixed %d-point lookup: w(%d)", n, i); + } + gsl_integration_glfixed_table_free(tbl); + + n = 4; + tbl = gsl_integration_glfixed_table_alloc(n); + for (i = 0; i < n; ++i) + { + gsl_integration_glfixed_point(-1, 1, i, &xi, &wi, tbl); + gsl_test_abs(xi, e4[i][0], eps, "glfixed %d-point lookup: x(%d)", n, i); + gsl_test_abs(wi, e4[i][1], eps, "glfixed %d-point lookup: w(%d)", n, i); + } + gsl_integration_glfixed_table_free(tbl); + + n = 5; + tbl = gsl_integration_glfixed_table_alloc(n); + for (i = 0; i < n; ++i) + { + gsl_integration_glfixed_point(-1, 1, i, &xi, &wi, tbl); + gsl_test_abs(xi, e5[i][0], eps, "glfixed %d-point lookup: x(%d)", n, i); + gsl_test_abs(wi, e5[i][1], eps, "glfixed %d-point lookup: w(%d)", n, i); + } + gsl_integration_glfixed_table_free(tbl); + } + + /* Test some fixed-order Gauss-Legendre rule points and weights on [-2, 3] */ + /* This verifies the (point, weight) retrieval API is okay on non-[-1,1] */ + { + gsl_integration_glfixed_table *tbl; + double result, x, w; + int i; + + /* Odd n = 3, f(x) = x**5 + x**4 + x**3 + x**2 + x**1 + 1 */ + result = 0; + tbl = gsl_integration_glfixed_table_alloc(3); + for (i = 0; i < 3; ++i) + { + gsl_integration_glfixed_point(-2, 3, i, &x, &w, tbl); + result += w * (1 + x*(1 + x*(1 + x*(1 + x*(1 + x))))); + } + gsl_test_rel(result, 805./4, 1e-8, + "glfixed %d-point xi,wi eval", 3); + gsl_integration_glfixed_table_free(tbl); + + /* Even n = 4, f(x) = x**7 + x**6 + x**5 + x**4 + x**3 + x**2 + x**1 + 1 */ + result = 0; + tbl = gsl_integration_glfixed_table_alloc(4); + for (i = 0; i < 4; ++i) + { + gsl_integration_glfixed_point(-2, 3, i, &x, &w, tbl); + result += w * (1 + x*(1 + x*(1 + x*(1 + x*(1 + x*(1 + x*(1 + x))))))); + } + gsl_test_rel(result, 73925./56, 1e-8, + "glfixed %d-point xi,wi eval", 4); + gsl_integration_glfixed_table_free(tbl); + } + + { + typedef double (*fptr) ( double , void * ); + + const fptr funs[25] = { &cqf1 , &cqf2 , &cqf3 , &cqf4 , &cqf5 , &cqf6 , &cqf7 , + &cqf8 , &cqf9 , &cqf10 , &cqf11 , &cqf12 , &cqf13 , &cqf14 , &cqf15 , &cqf16 , &cqf17 , + &cqf18 , &cqf19 , &cqf20 , &cqf21 , &cqf22 , &cqf23 , &cqf24 , &cqf25 }; + + const double ranges[50] = { 0, 1 , 0, 1 , 0, 1 , -1, 1 , -1, 1 , 0, 1 , 0, 1 , 0, 1 , 0, 1 , + 0, 1 , 0, 1 , 0, 1 , 0, 1 , 0, 10 , 0, 10 , 0, 10 , 0, 1 , 0, M_PI , + 0, 1 , -1, 1 , 0, 1 , 0, 1 , 0, 1 , 0, 3 , 0, 5 }; + const double f_exact[25] = { 1.7182818284590452354 , 0.7 , 2.0/3 , 0.4794282266888016674 , + 1.5822329637296729331 , 0.4 , 2 , 0.86697298733991103757 , + 1.1547005383792515290 , 0.69314718055994530942 , 0.3798854930417224753 , + 0.77750463411224827640 , 0.49898680869304550249 , + 0.5 , 1 , 0.13263071079267703209e+08 , 0.49898680869304550249 , + 0.83867634269442961454 , -1 , 1.5643964440690497731 , + 0.16349494301863722618 , -0.63466518254339257343 , + 0.013492485649467772692 , 17.664383539246514971 , 7.5 }; + + double result, abserr; + size_t neval; + int fid; + + /* Loop over the functions... */ + for ( fid = 0 ; fid < 25 ; fid++ ) { + gsl_integration_cquad_workspace *ws = gsl_integration_cquad_workspace_alloc ( 200 ); + gsl_function f = make_function(funs[fid], NULL); + double exact = f_exact[fid]; + + /* Call our quadrature routine. */ + int status = gsl_integration_cquad (&f, ranges[2*fid] , ranges[2*fid+1] , 0.0 , 1.0e-12 , ws , &result , &abserr , &neval); + + gsl_test_rel (result, exact, 1e-12, "cquad f%d", fid); + gsl_test (fabs(result - exact) > 5.0 * abserr, "cquad f%d error (%g actual vs %g estimated)", fid, fabs(result-exact), abserr); + gsl_test_int (status, GSL_SUCCESS, "cquad return code"); + + gsl_integration_cquad_workspace_free(ws); + } + } + + /* test fixed quadrature */ + { + size_t n; + struct monomial_params params; + gsl_function f; + double exact; + double a, b; + int deg = 5; /* monomial degree */ + double dterm = (deg % 2) == 0 ? 1.0 : -1.0; + + f.function = &f_monomial; + f.params = ¶ms; + + params.degree = deg; + params.constant = 1.0; + + n = 15; + for (b = 1.1; b <= 4.0; b += 0.1) + { + /* test with a < b */ + a = b - 1.0; + + /* Legendre quadrature */ + exact = (pow(b,params.degree+1.0) - pow(a,params.degree+1.0))/(params.degree+1.0); + test_fixed_quadrature(gsl_integration_fixed_legendre, n, a, b, 0.0, 0.0, 1.0e-12, exact, &f, "legendre monomial"); + + /* Chebyshev type 1 quadrature */ + exact = GSL_SIGN(b-a)*M_PI*pow(0.5*(a+b),params.degree)*gsl_sf_hyperg_2F1(0.5*(1-params.degree),-0.5*params.degree,1.0,(b-a)*(b-a)/((b+a)*(b+a))); + test_fixed_quadrature(gsl_integration_fixed_chebyshev, n, a, b, 0.0, 0.0, 1.0e-12, exact, &f, "chebyshev monomial"); + + /* Laguerre quadrature */ + exact = pow(b, -1.0 - deg) * exp(a * b) * gsl_sf_gamma_inc(1.0 + deg, a * b); + test_fixed_quadrature(gsl_integration_fixed_laguerre, n, a, b, 0.0, 0.0, 1.0e-12, exact, &f, "laguerre monomial"); + + /* Hermite quadrature */ + exact = 0.5 * pow(b, -0.5*deg) * (-(-1.0 + dterm) * a * deg * gsl_sf_gamma(0.5*deg) * gsl_sf_hyperg_1F1(0.5 - 0.5*deg, 1.5, -a*a*b) + + (1.0 + dterm) * gsl_sf_gamma(0.5*(1.0+deg)) * gsl_sf_hyperg_1F1(-0.5*deg, 0.5, -a*a*b) / sqrt(b)); + test_fixed_quadrature(gsl_integration_fixed_hermite, n, a, b, 0.0, 0.0, 1.0e-12, exact, &f, "hermite monomial"); + + /* Chebyshev type 2 quadrature */ + exact = GSL_SIGN(b-a)*M_PI_2*pow(0.5*(a+b),params.degree)*gsl_sf_hyperg_2F1(0.5*(1-params.degree),-0.5*params.degree,2.0,(b-a)*(b-a)/((b+a)*(b+a)))*0.25*(b-a)*(b-a); + test_fixed_quadrature(gsl_integration_fixed_chebyshev2, n, a, b, 0.0, 0.0, 1.0e-12, exact, &f, "chebyshev2 monomial"); + + /* now test with a > b */ + a = b + 1.0; + + /* Legendre quadrature */ + exact = (pow(b,params.degree+1.0) - pow(a,params.degree+1.0))/(params.degree+1.0); + test_fixed_quadrature(gsl_integration_fixed_legendre, n, a, b, 0.0, 0.0, 1.0e-12, exact, &f, "legendre monomial"); + + /* Laguerre quadrature */ + exact = pow(b, -1.0 - deg) * exp(a * b) * gsl_sf_gamma_inc(1.0 + deg, a * b); + test_fixed_quadrature(gsl_integration_fixed_laguerre, n, a, b, 0.0, 0.0, 1.0e-12, exact, &f, "laguerre monomial"); + + /* Hermite quadrature */ + exact = 0.5 * pow(b, -0.5*deg) * (-(-1.0 + dterm) * a * deg * gsl_sf_gamma(0.5*deg) * gsl_sf_hyperg_1F1(0.5 - 0.5*deg, 1.5, -a*a*b) + + (1.0 + dterm) * gsl_sf_gamma(0.5*(1.0+deg)) * gsl_sf_hyperg_1F1(-0.5*deg, 0.5, -a*a*b) / sqrt(b)); + test_fixed_quadrature(gsl_integration_fixed_hermite, n, a, b, 0.0, 0.0, 1.0e-12, exact, &f, "hermite monomial"); + +#if 0 /* FIXME: Chebyshev doesn't work when a > b */ + /* Chebyshev type 1 quadrature */ + exact = -M_PI / 8.0 * (3.0*a*a + 2.0*a*b + 3.0*b*b); + test_fixed_quadrature(gsl_integration_fixed_chebyshev, n, a, b, 0.0, 0.0, 1.0e-12, exact, &f, "chebyshev monomial"); + + /* Chebyshev type 2 quadrature */ + exact = -M_PI / 128.0 * (a - b) * (a - b) *(5.0*a*a + 6.0*a*b + 5.0*b*b); + test_fixed_quadrature(gsl_integration_fixed_chebyshev2, n, a, b, 0.0, 0.0, 1.0e-12, exact, &f, "chebyshev2 monomial"); +#endif + } + + /* now test on myfn1 */ + f = make_function(&myfn1, 0); + n = 200; + + test_fixed_quadrature(gsl_integration_fixed_legendre, n, 1.2, 1.6, 0.0, 0.0, 1.0e-12, 0.01505500344456001, &f, "legendre myfn1"); + test_fixed_quadrature(gsl_integration_fixed_chebyshev, n, 1.2, 2.6, 0.0, 0.0, 1.0e-12, 0.0582346516219999, &f, "chebyshev myfn1"); + test_fixed_quadrature(gsl_integration_fixed_gegenbauer, n, 1.2, 1.6, 2.0, 0.0, 1.0e-12, 1.2279468957162412661311711271e-5, &f, "gegenbauer myfn1"); + test_fixed_quadrature(gsl_integration_fixed_gegenbauer, n, 1.2, 1.6, -0.5, 0.0, 1.0e-12, 1.228256086101808986e-1, &f, "gegenbauer myfn1"); + test_fixed_quadrature(gsl_integration_fixed_jacobi, n, 1.2, 1.6, 2.0, 1.5, 1.0e-12, 3.173064776410033e-5, &f, "jacobi myfn1"); + test_fixed_quadrature(gsl_integration_fixed_jacobi, n, 1.2, 1.6, -0.5, -0.5, 1.0e-12, 1.228256086101808986e-1, &f, "jacobi myfn1"); + test_fixed_quadrature(gsl_integration_fixed_laguerre, n, 1.2, 0.6, 0.5, 0.0, 1.0e-12, 0.006604180366378123, &f, "laguerre myfn1"); + test_fixed_quadrature(gsl_integration_fixed_hermite, n, 1.2, 0.6, 1.0, 0.0, 1.0e-12, 0.6542819629825344, &f, "hermite myfn1"); + test_fixed_quadrature(gsl_integration_fixed_exponential, n, 1.2, 1.6, 2.0, 0.0, 1.0e-12, 2.1315535492168832898083633e-4, &f, "exponential myfn1"); + test_fixed_quadrature(gsl_integration_fixed_rational, 15, 1.2, 1.6, 2.0, -33.4, 1.0e-9, 4.8457468060064844e-20, &f, "rational myfn1"); + test_fixed_quadrature(gsl_integration_fixed_chebyshev2, n, 1.2, 2.6, 0.0, 0.0, 1.0e-12, 0.0081704088896491, &f, "chebyshev2 myfn1"); + } + + /* test Gegenbauer quadrature */ + { + size_t n, k; + struct monomial_params params; + gsl_function f; + const double exactarray[5] = {4.15933612154155020161400717857e-7, 744697.808572324010134504819452, 55.2024994284578980512106835228, 7.95574829722734114107142857143, 0.00179653588816666666666666666667}; + const double aarray[5] = {0.123,7.747,1.47,-1.47,0.0}; + const double barray[5] = {0.456,12.0,2.0,2.0,0.47}; + const double alphaarray[5] = {2.0,0.5,-0.5,1.0,0.0}; + + f.function = &f_monomial; + f.params = ¶ms; + + params.degree = 5; + params.constant = 1.0; + + n = 50; + for ( k = 0; k < 5; k++) + { + test_fixed_quadrature(gsl_integration_fixed_gegenbauer, n, aarray[k], barray[k], alphaarray[k], 0.0, + 1.0e-12, exactarray[k], &f, "gegenbauer monomial"); + } + } + + /* test Jacobi quadrature */ + { + size_t n, k; + struct monomial_params params; + gsl_function f; + const double exactarray[5] = {9.052430592016123480501898e-7,3.131716150347619771233591755e6,0.04435866422797298224404592896,5.287059602300844442782407,2.5337038518475893688512749675e-6}; + const double aarray[5] = {0.123,7.747,1.47,-1.47,0.0}; + const double barray[5] = {0.456,12.0,2.0,2.0,0.47}; + double alpha, beta; + + f.function = &f_monomial; + f.params = ¶ms; + + params.degree = 5; + params.constant = 1.0; + + alpha = 2.0; + beta = 1.5; + n = 50; + for ( k = 0; k < 5; k++) + { + test_fixed_quadrature(gsl_integration_fixed_jacobi, n, aarray[k], barray[k], alpha, beta, + 1.0e-12, exactarray[k], &f, "jacobi monomial"); + } + } + + /* test Exponential quadrature */ + { + size_t n, k; + struct monomial_params params; + gsl_function f; + const double exactarray[5] = {1.598864206823942764921875e-4, 624615.81848571833291063083819, 0.222578063871903188095238095238, 28.8968950008739567709168294271, 4.62725113500425479890950520833e-7}; + const double aarray[5] = {0.123,7.747,1.47,-1.47,0.0}; + const double barray[5] = {0.456,12.0,2.0,2.0,0.47}; + const double alphaarray[5] = {1.0,1.5,2.0,3.0,5.0}; + + f.function = &f_monomial; + f.params = ¶ms; + + params.degree = 5; + params.constant = 1.0; + + n = 50; + for ( k = 0; k < 5; k++) + { + test_fixed_quadrature(gsl_integration_fixed_exponential, n, aarray[k], barray[k], alphaarray[k], 0.0, + 1.0e-12, exactarray[k], &f, "exponential monomial"); + } + } + + /* test Rational quadrature */ + { + size_t n, k; + struct monomial_params params; + gsl_function f; + const double exactarray[6] = {1.312245361412108703130374957e-10,0.0170362044485924082779613124672, 8.93065131938394658578136414201e-11, 7.17990217357447544326794457270e-13, -11.0760676986664098133970869634, 0.00290392485414197833688178206557}; + const double aarray[6] = {0.0,0.123,7.747,1.47,-1.47,0.0}; + const double barray[6] = {2.0,0.456,12.0,2.0,2.0,0.47}; + const double alphaarray[6] = {0.0,1.0,1.5,2.0,3.0,5.0}; + const double betaarray[6] = {-21.0,-12.0,-13.0,-22.0,-21.0,-16.0}; + + f.function = &f_monomial; + f.params = ¶ms; + + params.degree = 5; + params.constant = 1.0; + + n = 5; + for ( k = 0; k < 5; k++) + { + test_fixed_quadrature(gsl_integration_fixed_rational, n, aarray[k], barray[k], alphaarray[k], betaarray[k], + 1.0e-12, exactarray[k], &f, "rational monomial"); + } + } + + exit (gsl_test_summary()); +} + +void +my_error_handler (const char *reason, const char *file, int line, int err) +{ + if (0) printf ("(caught [%s:%d: %s (%d)])\n", file, line, reason, err) ; +} diff --git a/gsl-2.5/integration/test.log b/gsl-2.5/integration/test.log new file mode 100644 index 00000000..9bf0e2cd --- /dev/null +++ b/gsl-2.5/integration/test.log @@ -0,0 +1 @@ +Completed [3308/3308] diff --git a/gsl-2.5/integration/test.trs b/gsl-2.5/integration/test.trs new file mode 100644 index 00000000..3f0f396c --- /dev/null +++ b/gsl-2.5/integration/test.trs @@ -0,0 +1,4 @@ +:test-result: PASS +:global-test-result: PASS +:recheck: no +:copy-in-global-log: no diff --git a/gsl-2.5/integration/tests.c b/gsl-2.5/integration/tests.c new file mode 100644 index 00000000..3cbb30b8 --- /dev/null +++ b/gsl-2.5/integration/tests.c @@ -0,0 +1,362 @@ +/* integration/tests.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include + +#include "tests.h" + +/* These are the test functions from table 4.1 of the QUADPACK book */ + +/* f1(x) = x^alpha * log(1/x) */ +/* integ(f1,x,0,1) = 1/(alpha + 1)^2 */ + +double f1 (double x, void * params) { + double alpha = *(double *) params ; + return pow(x,alpha) * log(1/x) ; +} + +/* f2(x) = 4^-alpha / ((x-pi/4)^2 + 16^-alpha) */ +/* integ(f2,x,0,1) = arctan((4-pi)4^(alpha-1)) + arctan(pi 4^(alpha-1)) */ + +double f2 (double x, void * params) { + double alpha = *(double *) params ; + return pow(4.0,-alpha) / (pow((x-M_PI/4.0),2.0) + pow(16.0,-alpha)) ; +} + +/* f3(x) = cos(2^alpha * sin(x)) */ +/* integ(f3,x,0,pi) = pi J_0(2^alpha) */ + +double f3 (double x, void * params) { + double alpha = *(double *) params ; + return cos(pow(2.0,alpha) * sin(x)) ; +} + +/* Functions 4, 5 and 6 are duplicates of functions 1, 2 and 3 */ +/* .... */ + +/* f7(x) = |x - 1/3|^alpha */ +/* integ(f7,x,0,1) = ((2/3)^(alpha+1) + (1/3)^(alpha+1))/(alpha + 1) */ + +double f7 (double x, void * params) { + double alpha = *(double *) params ; + return pow(fabs(x - (1.0/3.0)),alpha) ; +} + +/* f8(x) = |x - pi/4|^alpha */ +/* integ(f8,x,0,1) = + ((1 - pi/4)^(alpha+1) + (pi/4)^(alpha+1))/(alpha + 1) */ + +double f8 (double x, void * params) { + double alpha = *(double *) params ; + return pow(fabs(x - (M_PI/4.0)),alpha) ; +} + +/* f9(x) = sqrt(1 - x^2) / (x + 1 + 2^-alpha) */ +/* integ(f9,x,-1,1) = pi/sqrt((1+2^-alpha)^2-1) */ + +double f9 (double x, void * params) { + double alpha = *(double *) params ; + return 1 / ((x + 1 + pow(2.0,-alpha)) * sqrt(1-x*x)) ; +} + +/* f10(x) = sin(x)^(alpha - 1) */ +/* integ(f10,x,0,pi/2) = 2^(alpha-2) ((Gamma(alpha/2))^2)/Gamma(alpha) */ + +double f10 (double x, void * params) { + double alpha = *(double *) params ; + return pow(sin(x), alpha-1) ; +} + +/* f11(x) = log(1/x)^(alpha - 1) */ +/* integ(f11,x,0,1) = Gamma(alpha) */ + +double f11 (double x, void * params) { + double alpha = *(double *) params ; + return pow(log(1/x), alpha-1) ; +} + +/* f12(x) = exp(20*(x-1)) * sin(2^alpha * x) */ +/* integ(f12,x,0,1) = + (20 sin(2^alpha) - 2^alpha cos(2^alpha) + 2^alpha exp(-20)) + /(400 + 4^alpha) */ + +double f12 (double x, void * params) { + double alpha = *(double *) params ; + return exp(20*(x-1)) * sin(pow(2.0,alpha) * x) ; +} + +/* f13(x) = cos(2^alpha * x)/sqrt(x(1 - x)) */ +/* integ(f13,x,0,1) = pi cos(2^(alpha-1)) J_0(2^(alpha-1)) */ + +double f13 (double x, void * params) { + double alpha = *(double *) params ; + return cos(pow(2.0,alpha)*x)/sqrt(x*(1-x)) ; +} + +double f14 (double x, void * params) { + double alpha = *(double *) params ; + return exp(-pow(2.0,-alpha)*x)*cos(x)/sqrt(x) ; +} + +double f15 (double x, void * params) { + double alpha = *(double *) params ; + return x*x * exp(-pow(2.0,-alpha)*x) ; +} + +double f16 (double x, void * params) { + double alpha = *(double *) params ; + if (x==0 && alpha == 1) return 1 ; /* make the function continuous in x */ + if (x==0 && alpha > 1) return 0 ; /* avoid problems with pow(0,1) */ + return pow(x,alpha-1)/pow((1+10*x),2.0) ; +} + +double f17 (double x, void * params) { + double alpha = *(double *) params ; + return pow(2.0,-alpha)/(((x-1)*(x-1)+pow(4.0,-alpha))*(x-2)) ; +} + +/* f454(x) = x^3 log|(x^2-1)(x^2-2)| */ +/* integ(f454,x,0,inf) = 61 log(2) + (77/4) log(7) - 27 */ + +double f454 (double x, void * params) { + double x2 = x * x; + double x3 = x * x2; + params = 0 ; + return x3 * log(fabs((x2 - 1.0) * (x2 - 2.0))) ; +} + +/* f455(x) = log(x)/(1+100*x^2) */ +/* integ(f455,x,0,inf) = -log(10)/20 */ + +double f455 (double x, void * params) { + params = 0 ; + return log(x) / (1.0 + 100.0 * x * x) ; +} + +/* f456(x) = log(x) */ +/* integ(f456*sin(10 pi x),x,0,1) = -(gamma + log(10pi) - Ci(10pi))/(10pi) */ + +double f456 (double x, void * params) { + params = 0 ; + if (x == 0.0) + { + return 0; + } + return log(x) ; +} + +/* f457(x) = 1/sqrt(x) */ +/* integ(f457*cos(pi x / 2),x,0,+inf) = 1 */ + +double f457 (double x, void * params) { + params = 0 ; + if (x == 0.0) + { + return 0; + } + return 1/sqrt(x) ; +} + +/* f458(x) = 1/(1 + log(x)^2)^2 */ +/* integ(log(x) f458(x),x,0,1) = (Ci(1) sin(1) + (pi/2 - Si(1)) cos(1))/pi + = -0.1892752 */ + +double f458 (double x, void * params) { + params = 0 ; + + if (x == 0.0) + { + return 0; + } + else + { + double u = log(x); + double v = 1 + u * u; + + return 1.0 / (v * v) ; + } +} + +/* f459(x) = 1/(5 x^3 + 6) */ +/* integ(f459/(x-0),x,-1,5) = log(125/631)/18 */ + +double f459 (double x, void * params) { + params = 0 ; + return 1.0 / (5.0 * x * x * x + 6.0) ; +} + +/* myfn1(x) = exp(-x - x^2) */ +/* integ(myfn1,x,-inf,inf) = sqrt(pi) exp(-1/4) */ + +double myfn1 (double x, void * params) { + params = 0; + return exp(-x - x*x) ; +} + +/* myfn2(x) = exp(alpha*x) */ +/* integ(myfn2,x,-inf,b) = exp(alpha*b)/alpha */ + +double myfn2 (double x, void * params) { + double alpha = *(double *) params ; + return exp(alpha*x) ; +} + + +/* f_monomial = constant * x^degree */ +double f_monomial(double x, void * params) +{ + struct monomial_params * p = (struct monomial_params *) params; + + return p->constant * gsl_pow_int(x, p->degree); +} + +/* integ(f_monomial,x,a b)=constant*(b^(degree+1)-a^(degree+1))/(degree+1) */ +double integ_f_monomial(double a, double b, struct monomial_params * p) +{ + const int degreep1 = p->degree + 1; + const double bnp1 = gsl_pow_int(b, degreep1); + const double anp1 = gsl_pow_int(a, degreep1); + return (p->constant / degreep1)*(bnp1 - anp1); +} + +/* f(x) = sin(x) */ +double f_sin(double x, void * params) +{ + return sin(x); +} + +/* integ(f_sin,x,a,b) */ +double integ_f_sin(double a, double b) +{ + return -cos(b) + cos(a); +} + + +/* The test functions. */ +double cqf1 ( double x , void *params ) { + return exp(x); +} + +double cqf2 ( double x , void *params ) { + return x >= 0.3; +} + +double cqf3 ( double x , void *params ) { + return sqrt(x); +} + + +double cqf4 ( double x , void *params ) { + return (23.0/25) * cosh(x) - cos(x); +} + +double cqf5 ( double x , void *params ) { + double x2 = x*x; + return 1.0 / ( x2 * (x2 + 1) + 0.9); +} + +double cqf6 ( double x , void *params ) { + return x * sqrt( x ); +} + +double cqf7 ( double x , void *params ) { + return 1.0 / sqrt(x); +} + +double cqf8 ( double x , void *params ) { + double x2 = x*x; + return 1.0 / (1 + x2*x2); +} + +double cqf9 ( double x , void *params ) { + return 2.0 / (2 + sin(10*M_PI*x)); +} + +double cqf10 ( double x , void *params ) { + return 1.0 / (1 + x); +} + +double cqf11 ( double x , void *params ) { + return 1.0 / (1 + exp(x)); +} + +double cqf12 ( double x , void *params ) { + return x / (exp(x) - 1.0); +} + +double cqf13 ( double x , void *params ) { + return sin(100 * M_PI * x) / (M_PI * x); +} + +double cqf14 ( double x , void *params ) { + return sqrt(50.0) * exp(-50*M_PI*x*x); +} + +double cqf15 ( double x , void *params ) { + return 25.0 * exp(-25*x); +} + +double cqf16 ( double x , void *params ) { + return 50 / M_PI * (2500 * x*x + 1); +} + +double cqf17 ( double x , void *params ) { + double t1 = 50 * M_PI * x ,t2; + t2 = sin(t1) / t1; + return 50 * t2 * t2; +} + +double cqf18 ( double x , void *params ) { + return cos( cos(x) + 3*sin(x) + 2*cos(2*x) + 3*sin(2*x) + 3*cos(3*x) ); +} + +double cqf19 ( double x , void *params ) { + return log(x); +} + +double cqf20 ( double x , void *params ) { + return 1 / (x*x + 1.005); +} + +double cqf21 ( double x , void *params ) { + return 1 / cosh( 10 * (x - 0.2) * 2 ) + + 1 / cosh( 100 * (x - 0.4) * 4 ) + + 1 / cosh( 1000 * (x - 0.6) * 8 ); +} + +double cqf22 ( double x , void *params ) { + return 4 * M_PI*M_PI * x * sin(20*M_PI*x) * cos(2*M_PI*x); +} + +double cqf23 ( double x , void *params ) { + double t = 230*x - 30; + return 1 / (1 + t*t); +} + +double cqf24 ( double x , void *params ) { + return floor(exp(x)); +} + +double cqf25 ( double x , void *params ) { + return (x < 1) * (x + 1) + + (1 <= x && x <= 3) * (3 - x) + + (x > 3) * 2; +} diff --git a/gsl-2.5/integration/tests.h b/gsl-2.5/integration/tests.h new file mode 100644 index 00000000..a303678d --- /dev/null +++ b/gsl-2.5/integration/tests.h @@ -0,0 +1,85 @@ +/* integration/tests.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +double f1 (double x, void * params); +double f2 (double x, void * params); +double f3 (double x, void * params); +double f4 (double x, void * params); +double f5 (double x, void * params); + +double f6 (double x, void * params); +double f7 (double x, void * params); +double f8 (double x, void * params); +double f9 (double x, void * params); +double f10 (double x, void * params); + +double f11 (double x, void * params); +double f12 (double x, void * params); +double f13 (double x, void * params); +double f14 (double x, void * params); +double f15 (double x, void * params); + +double f16 (double x, void * params); +double f17 (double x, void * params); + +double f454 (double x, void * params); +double f455 (double x, void * params); +double f456 (double x, void * params); +double f457 (double x, void * params); +double f458 (double x, void * params); +double f459 (double x, void * params); + +double myfn1 (double x, void * params); +double myfn2 (double x, void * params); + +struct monomial_params { + int degree; + double constant; +} ; +double f_monomial(double x, void * params); +double integ_f_monomial(double a, double b, struct monomial_params * p); + +double f_sin(double x, void * params); +double integ_f_sin(double a, double b); + +double cqf1 ( double x , void *params ); +double cqf2 ( double x , void *params ); +double cqf3 ( double x , void *params ); +double cqf4 ( double x , void *params ); +double cqf5 ( double x , void *params ); +double cqf6 ( double x , void *params ); +double cqf7 ( double x , void *params ); +double cqf8 ( double x , void *params ); +double cqf9 ( double x , void *params ); +double cqf10 ( double x , void *params ); +double cqf11 ( double x , void *params ); +double cqf12 ( double x , void *params ); +double cqf13 ( double x , void *params ); +double cqf14 ( double x , void *params ); +double cqf15 ( double x , void *params ); +double cqf16 ( double x , void *params ); +double cqf17 ( double x , void *params ); +double cqf18 ( double x , void *params ); +double cqf19 ( double x , void *params ); +double cqf20 ( double x , void *params ); +double cqf21 ( double x , void *params ); +double cqf22 ( double x , void *params ); +double cqf23 ( double x , void *params ); +double cqf24 ( double x , void *params ); +double cqf25 ( double x , void *params ); diff --git a/gsl-2.5/integration/util.c b/gsl-2.5/integration/util.c new file mode 100644 index 00000000..43cae1eb --- /dev/null +++ b/gsl-2.5/integration/util.c @@ -0,0 +1,137 @@ +/* integration/util.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +static inline +void update (gsl_integration_workspace * workspace, + double a1, double b1, double area1, double error1, + double a2, double b2, double area2, double error2); + +static inline void +retrieve (const gsl_integration_workspace * workspace, + double * a, double * b, double * r, double * e); + + + +static inline +void update (gsl_integration_workspace * workspace, + double a1, double b1, double area1, double error1, + double a2, double b2, double area2, double error2) +{ + double * alist = workspace->alist ; + double * blist = workspace->blist ; + double * rlist = workspace->rlist ; + double * elist = workspace->elist ; + size_t * level = workspace->level ; + + const size_t i_max = workspace->i ; + const size_t i_new = workspace->size ; + + const size_t new_level = workspace->level[i_max] + 1; + + /* append the newly-created intervals to the list */ + + if (error2 > error1) + { + alist[i_max] = a2; /* blist[maxerr] is already == b2 */ + rlist[i_max] = area2; + elist[i_max] = error2; + level[i_max] = new_level; + + alist[i_new] = a1; + blist[i_new] = b1; + rlist[i_new] = area1; + elist[i_new] = error1; + level[i_new] = new_level; + } + else + { + blist[i_max] = b1; /* alist[maxerr] is already == a1 */ + rlist[i_max] = area1; + elist[i_max] = error1; + level[i_max] = new_level; + + alist[i_new] = a2; + blist[i_new] = b2; + rlist[i_new] = area2; + elist[i_new] = error2; + level[i_new] = new_level; + } + + workspace->size++; + + if (new_level > workspace->maximum_level) + { + workspace->maximum_level = new_level; + } + + qpsrt (workspace) ; +} + +static inline void +retrieve (const gsl_integration_workspace * workspace, + double * a, double * b, double * r, double * e) +{ + const size_t i = workspace->i; + double * alist = workspace->alist; + double * blist = workspace->blist; + double * rlist = workspace->rlist; + double * elist = workspace->elist; + + *a = alist[i] ; + *b = blist[i] ; + *r = rlist[i] ; + *e = elist[i] ; +} + +static inline double +sum_results (const gsl_integration_workspace * workspace); + +static inline double +sum_results (const gsl_integration_workspace * workspace) +{ + const double * const rlist = workspace->rlist ; + const size_t n = workspace->size; + + size_t k; + double result_sum = 0; + + for (k = 0; k < n; k++) + { + result_sum += rlist[k]; + } + + return result_sum; +} + +static inline int +subinterval_too_small (double a1, double a2, double b2); + +static inline int +subinterval_too_small (double a1, double a2, double b2) +{ + const double e = GSL_DBL_EPSILON; + const double u = GSL_DBL_MIN; + + double tmp = (1 + 100 * e) * (fabs (a2) + 1000 * u); + + int status = fabs (a1) <= tmp && fabs (b2) <= tmp; + + return status; +} + diff --git a/gsl-2.5/integration/workspace.c b/gsl-2.5/integration/workspace.c new file mode 100644 index 00000000..4cb62af4 --- /dev/null +++ b/gsl-2.5/integration/workspace.c @@ -0,0 +1,154 @@ +/* integration/workspace.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007, 2009 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include + +gsl_integration_workspace * +gsl_integration_workspace_alloc (const size_t n) +{ + gsl_integration_workspace * w ; + + if (n == 0) + { + GSL_ERROR_VAL ("workspace length n must be positive integer", + GSL_EDOM, 0); + } + + w = (gsl_integration_workspace *) + malloc (sizeof (gsl_integration_workspace)); + + if (w == 0) + { + GSL_ERROR_VAL ("failed to allocate space for workspace struct", + GSL_ENOMEM, 0); + } + + w->alist = (double *) malloc (n * sizeof (double)); + + if (w->alist == 0) + { + free (w); /* exception in constructor, avoid memory leak */ + + GSL_ERROR_VAL ("failed to allocate space for alist ranges", + GSL_ENOMEM, 0); + } + + w->blist = (double *) malloc (n * sizeof (double)); + + if (w->blist == 0) + { + free (w->alist); + free (w); /* exception in constructor, avoid memory leak */ + + GSL_ERROR_VAL ("failed to allocate space for blist ranges", + GSL_ENOMEM, 0); + } + + w->rlist = (double *) malloc (n * sizeof (double)); + + if (w->rlist == 0) + { + free (w->blist); + free (w->alist); + free (w); /* exception in constructor, avoid memory leak */ + + GSL_ERROR_VAL ("failed to allocate space for rlist ranges", + GSL_ENOMEM, 0); + } + + + w->elist = (double *) malloc (n * sizeof (double)); + + if (w->elist == 0) + { + free (w->rlist); + free (w->blist); + free (w->alist); + free (w); /* exception in constructor, avoid memory leak */ + + GSL_ERROR_VAL ("failed to allocate space for elist ranges", + GSL_ENOMEM, 0); + } + + w->order = (size_t *) malloc (n * sizeof (size_t)); + + if (w->order == 0) + { + free (w->elist); + free (w->rlist); + free (w->blist); + free (w->alist); + free (w); /* exception in constructor, avoid memory leak */ + + GSL_ERROR_VAL ("failed to allocate space for order ranges", + GSL_ENOMEM, 0); + } + + w->level = (size_t *) malloc (n * sizeof (size_t)); + + if (w->level == 0) + { + free (w->order); + free (w->elist); + free (w->rlist); + free (w->blist); + free (w->alist); + free (w); /* exception in constructor, avoid memory leak */ + + GSL_ERROR_VAL ("failed to allocate space for order ranges", + GSL_ENOMEM, 0); + } + + w->size = 0 ; + w->limit = n ; + w->maximum_level = 0 ; + + return w ; +} + +void +gsl_integration_workspace_free (gsl_integration_workspace * w) +{ + RETURN_IF_NULL (w); + free (w->level) ; + free (w->order) ; + free (w->elist) ; + free (w->rlist) ; + free (w->blist) ; + free (w->alist) ; + free (w) ; +} + +/* +size_t +gsl_integration_workspace_limit (gsl_integration_workspace * w) +{ + return w->limit ; +} + + +size_t +gsl_integration_workspace_size (gsl_integration_workspace * w) +{ + return w->size ; +} +*/ diff --git a/gsl-2.5/integration/workspace.lo b/gsl-2.5/integration/workspace.lo new file mode 100644 index 00000000..7da6f6cb --- /dev/null +++ b/gsl-2.5/integration/workspace.lo @@ -0,0 +1,12 @@ +# workspace.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/workspace.o' + +# Name of the non-PIC object +non_pic_object='workspace.o' + diff --git a/gsl-2.5/interpolation/.deps/accel.Plo b/gsl-2.5/interpolation/.deps/accel.Plo new file mode 100644 index 00000000..8567822c --- /dev/null +++ b/gsl-2.5/interpolation/.deps/accel.Plo @@ -0,0 +1,111 @@ +accel.lo: accel.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_errno.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_types.h ../gsl/gsl_interp.h ../gsl/gsl_inline.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_interp.h: + +../gsl/gsl_inline.h: diff --git a/gsl-2.5/interpolation/.deps/akima.Plo b/gsl-2.5/interpolation/.deps/akima.Plo new file mode 100644 index 00000000..03efb3c4 --- /dev/null +++ b/gsl-2.5/interpolation/.deps/akima.Plo @@ -0,0 +1,136 @@ +akima.lo: akima.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_errno.h /usr/include/stdio.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_types.h integ_eval.h ../gsl/gsl_interp.h ../gsl/gsl_inline.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +integ_eval.h: + +../gsl/gsl_interp.h: + +../gsl/gsl_inline.h: diff --git a/gsl-2.5/interpolation/.deps/bicubic.Plo b/gsl-2.5/interpolation/.deps/bicubic.Plo new file mode 100644 index 00000000..fd427c9b --- /dev/null +++ b/gsl-2.5/interpolation/.deps/bicubic.Plo @@ -0,0 +1,195 @@ +bicubic.lo: bicubic.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_errno.h /usr/include/stdio.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_types.h ../gsl/gsl_spline.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_interp.h ../gsl/gsl_inline.h \ + ../gsl/gsl_vector.h ../gsl/gsl_vector_complex_long_double.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_interp2d.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_spline.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_interp.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_interp2d.h: diff --git a/gsl-2.5/interpolation/.deps/bilinear.Plo b/gsl-2.5/interpolation/.deps/bilinear.Plo new file mode 100644 index 00000000..72585878 --- /dev/null +++ b/gsl-2.5/interpolation/.deps/bilinear.Plo @@ -0,0 +1,114 @@ +bilinear.lo: bilinear.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_errno.h /usr/include/stdio.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_types.h ../gsl/gsl_interp.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_inline.h \ + ../gsl/gsl_interp2d.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_interp.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_interp2d.h: diff --git a/gsl-2.5/interpolation/.deps/cspline.Plo b/gsl-2.5/interpolation/.deps/cspline.Plo new file mode 100644 index 00000000..d0516153 --- /dev/null +++ b/gsl-2.5/interpolation/.deps/cspline.Plo @@ -0,0 +1,306 @@ +cspline.lo: cspline.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_errno.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_types.h ../gsl/gsl_linalg.h ../gsl/gsl_mode.h \ + ../gsl/gsl_inline.h ../gsl/gsl_permutation.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector.h ../gsl/gsl_vector_complex_long_double.h \ + ../gsl/gsl_complex.h ../gsl/gsl_vector_long_double.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_vector_complex.h \ + ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_nan.h ../gsl/gsl_pow_int.h \ + ../gsl/gsl_minmax.h ../gsl/gsl_blas.h ../gsl/gsl_blas_types.h \ + ../gsl/gsl_cblas.h integ_eval.h ../gsl/gsl_interp.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_linalg.h: + +../gsl/gsl_mode.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_permutation.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_blas.h: + +../gsl/gsl_blas_types.h: + +../gsl/gsl_cblas.h: + +integ_eval.h: + +../gsl/gsl_interp.h: diff --git a/gsl-2.5/interpolation/.deps/inline.Plo b/gsl-2.5/interpolation/.deps/inline.Plo new file mode 100644 index 00000000..a0e3089f --- /dev/null +++ b/gsl-2.5/interpolation/.deps/inline.Plo @@ -0,0 +1,77 @@ +inline.lo: inline.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../build.h ../gsl/gsl_interp.h \ + ../gsl/gsl_inline.h ../gsl/gsl_types.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../build.h: + +../gsl/gsl_interp.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_types.h: diff --git a/gsl-2.5/interpolation/.deps/interp.Plo b/gsl-2.5/interpolation/.deps/interp.Plo new file mode 100644 index 00000000..3c4f8ebc --- /dev/null +++ b/gsl-2.5/interpolation/.deps/interp.Plo @@ -0,0 +1,172 @@ +interp.lo: interp.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_errno.h /usr/include/stdio.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_types.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_nan.h ../gsl/gsl_pow_int.h \ + ../gsl/gsl_minmax.h ../gsl/gsl_interp.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_interp.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: diff --git a/gsl-2.5/interpolation/.deps/interp2d.Plo b/gsl-2.5/interpolation/.deps/interp2d.Plo new file mode 100644 index 00000000..8a700870 --- /dev/null +++ b/gsl-2.5/interpolation/.deps/interp2d.Plo @@ -0,0 +1,174 @@ +interp2d.lo: interp2d.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_errno.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_types.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_nan.h ../gsl/gsl_pow_int.h \ + ../gsl/gsl_minmax.h ../gsl/gsl_interp.h ../gsl/gsl_interp2d.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_interp.h: + +../gsl/gsl_interp2d.h: diff --git a/gsl-2.5/interpolation/.deps/linear.Plo b/gsl-2.5/interpolation/.deps/linear.Plo new file mode 100644 index 00000000..7ab41738 --- /dev/null +++ b/gsl-2.5/interpolation/.deps/linear.Plo @@ -0,0 +1,111 @@ +linear.lo: linear.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_errno.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_types.h ../gsl/gsl_interp.h ../gsl/gsl_inline.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_interp.h: + +../gsl/gsl_inline.h: diff --git a/gsl-2.5/interpolation/.deps/poly.Plo b/gsl-2.5/interpolation/.deps/poly.Plo new file mode 100644 index 00000000..0a0ce589 --- /dev/null +++ b/gsl-2.5/interpolation/.deps/poly.Plo @@ -0,0 +1,138 @@ +poly.lo: poly.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_errno.h /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_types.h ../gsl/gsl_poly.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_inline.h \ + ../gsl/gsl_complex.h ../gsl/gsl_interp.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_poly.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_interp.h: diff --git a/gsl-2.5/interpolation/.deps/spline.Plo b/gsl-2.5/interpolation/.deps/spline.Plo new file mode 100644 index 00000000..e13c0809 --- /dev/null +++ b/gsl-2.5/interpolation/.deps/spline.Plo @@ -0,0 +1,124 @@ +spline.lo: spline.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/string.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/xlocale.h /usr/include/bits/string.h \ + /usr/include/bits/string2.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/byteswap.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/bits/byteswap-16.h /usr/include/stdlib.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_types.h ../gsl/gsl_interp.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/sys/types.h \ + /usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib-float.h \ + ../gsl/gsl_inline.h ../gsl/gsl_spline.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/string.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string.h: + +/usr/include/bits/string2.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/stdlib.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_interp.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_spline.h: diff --git a/gsl-2.5/interpolation/.deps/spline2d.Plo b/gsl-2.5/interpolation/.deps/spline2d.Plo new file mode 100644 index 00000000..8c6508db --- /dev/null +++ b/gsl-2.5/interpolation/.deps/spline2d.Plo @@ -0,0 +1,187 @@ +spline2d.lo: spline2d.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/string.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/xlocale.h /usr/include/bits/string.h \ + /usr/include/bits/string2.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/byteswap.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/bits/byteswap-16.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_errno.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_types.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_nan.h ../gsl/gsl_pow_int.h \ + ../gsl/gsl_minmax.h ../gsl/gsl_interp.h ../gsl/gsl_interp2d.h \ + ../gsl/gsl_spline2d.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/string.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string.h: + +/usr/include/bits/string2.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_interp.h: + +../gsl/gsl_interp2d.h: + +../gsl/gsl_spline2d.h: diff --git a/gsl-2.5/interpolation/.deps/steffen.Plo b/gsl-2.5/interpolation/.deps/steffen.Plo new file mode 100644 index 00000000..0d83097d --- /dev/null +++ b/gsl-2.5/interpolation/.deps/steffen.Plo @@ -0,0 +1,176 @@ +steffen.lo: steffen.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_math.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + integ_eval.h ../gsl/gsl_interp.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +integ_eval.h: + +../gsl/gsl_interp.h: diff --git a/gsl-2.5/interpolation/.deps/test.Po b/gsl-2.5/interpolation/.deps/test.Po new file mode 100644 index 00000000..79410c98 --- /dev/null +++ b/gsl-2.5/interpolation/.deps/test.Po @@ -0,0 +1,146 @@ +test.o: test.c /usr/include/stdc-predef.h ../config.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/byteswap.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/bits/byteswap-16.h /usr/include/sys/types.h \ + /usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib-float.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_test.h ../gsl/gsl_errno.h /usr/include/errno.h \ + /usr/include/bits/errno.h /usr/include/linux/errno.h \ + /usr/include/asm/errno.h /usr/include/asm-generic/errno.h \ + /usr/include/asm-generic/errno-base.h ../gsl/gsl_types.h \ + ../gsl/gsl_interp.h ../gsl/gsl_inline.h ../gsl/gsl_ieee_utils.h test2d.c \ + ../gsl/gsl_interp2d.h ../gsl/gsl_spline2d.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_test.h: + +../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_interp.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_ieee_utils.h: + +test2d.c: + +../gsl/gsl_interp2d.h: + +../gsl/gsl_spline2d.h: diff --git a/gsl-2.5/interpolation/.libs/libgslinterpolation.la b/gsl-2.5/interpolation/.libs/libgslinterpolation.la new file mode 120000 index 00000000..cf73b89e --- /dev/null +++ b/gsl-2.5/interpolation/.libs/libgslinterpolation.la @@ -0,0 +1 @@ +../libgslinterpolation.la \ No newline at end of file diff --git a/gsl-2.5/interpolation/.libs/lt-test b/gsl-2.5/interpolation/.libs/lt-test new file mode 100755 index 00000000..e36a3de4 Binary files /dev/null and b/gsl-2.5/interpolation/.libs/lt-test differ diff --git a/gsl-2.5/interpolation/.libs/test b/gsl-2.5/interpolation/.libs/test new file mode 100755 index 00000000..9799702e Binary files /dev/null and b/gsl-2.5/interpolation/.libs/test differ diff --git a/gsl-2.5/interpolation/ChangeLog b/gsl-2.5/interpolation/ChangeLog new file mode 100644 index 00000000..01ae9aa2 --- /dev/null +++ b/gsl-2.5/interpolation/ChangeLog @@ -0,0 +1,146 @@ +2011-01-15 Brian Gough + + * interp.c (gsl_interp_type_min_size): added function to get + min_size from type instead of interp object + +2010-12-09 Brian Gough + + * cspline.c (cspline_eval, cspline_eval_deriv) + (cspline_eval_deriv2, cspline_eval_integ): return GSL_EINVAL for + out of range values instead of GSL_FAILURE + + * akima.c (akima_eval_integ): return GSL_EINVAL for out of range + values instead of GSL_FAILURE + + * interp.c (gsl_interp_eval_e, gsl_interp_eval) + (gsl_interp_eval_deriv_e, gsl_interp_eval_deriv) + (gsl_interp_eval_deriv2_e, gsl_interp_eval_deriv2) + (gsl_interp_eval_integ_e, gsl_interp_eval_integ): return NaN and + an error code of GSL_EDOM when x is out of range + +2009-07-09 Brian Gough + + * spline.c (gsl_spline_free): handle NULL argument in free + + * interp.c (gsl_interp_free): handle NULL argument in free + + * accel.c (gsl_interp_accel_free): handle NULL argument in free + +2008-09-05 Brian Gough + + * gsl_interp.h (gsl_interp_accel_find): corrected condition for + x>=xa. + +2008-07-03 Brian Gough + + * gsl_interp.h: added inline declarations + + * accel.c: moved gsl_interp_accel_find to inline.c + + * bsearch.h bsearch.c: removed, moved to inline.c + + * Makefile.am (INCLUDES): use top_srcdir instead of top_builddir + +2007-03-14 Brian Gough + + * interp.c (gsl_interp_init): added check for monotonically + increasing x + +2005-12-24 Brian Gough + + * cspline.c (cspline_init_periodic): fix invalid memory access of + xa[3] for sys_size=2 + +2005-12-22 Brian Gough + + * test.c (test_cspline2): added extra test of cspline + (test_cspline3): added extra test of cspline + +2004-11-28 Brian Gough + + * cspline.c (cspline_init): support case of degenerate x[i] values + (cspline_init_periodic): support case of degenerate x[i] values + + * integ_eval.h (integ_eval): improve numerical stability of + integration formula + +2004-03-15 Brian Gough + + * cspline.c (cspline_init): handle the case N=1 specially + +2003-07-24 Brian Gough + + * gsl_interp.h: removed duplicate declaration of + gsl_interp_accel_find + +Sat Apr 27 20:57:22 2002 Brian Gough + + * cspline.c (cspline_init_periodic): handle boundary effects + correctly + +Sun Dec 2 22:48:23 2001 Brian Gough + + * poly.c: added polynomial interpolation based on divided + differences from Dan, Ho-Jin. + +Tue Jul 3 12:10:53 2001 Brian Gough + + * interp.c (DISCARD_STATUS): discard error status values using a + macro for configurability + +Sun Jul 1 21:41:27 2001 Brian Gough + + * cspline.c: added const to state in appropriate places + +Tue Jun 26 11:57:55 2001 Brian Gough + + * spline.c: added missing #include for memcpy + +Mon Jun 25 19:58:45 2001 Brian Gough + + * standardized to gsl conventions, added high-level 'spline' + interface + +Mon Apr 30 13:29:34 2001 Brian Gough + + * renamed gsl_interp_obj to gsl_interp + +Mon Apr 23 10:29:51 2001 Brian Gough + + * unified error handling conventions to _e for error handling + functions and no suffix for plain functions, so _impl functions + are no longer needed. + + * removed tests for EFAULT, since EFAULT should only apply to + invalid non-null pointers. + + +Tue Apr 11 19:56:25 2000 Brian Gough + + * cspline.c (cspline_calc_periodic): changed occurrence of gsl_la + name to new gsl_linalg prefix, gsl_linalg_solve_symm_cyc_tridiag + (cspline_calc_natural): ditto + +Mon Aug 30 11:31:00 1999 Brian Gough + + * bsearch.c: made gsl_interp_bsearch (formerly interp_bsearch) an + exported function, since it is needed by the inline version of + gsl_interp_accel_find in gsl_interp.h + +Tue Nov 17 16:52:00 1998 Brian Gough + + * added #include to all top-level source files + + * renamed test_interp.c to test.c + + * test_interp.c: got rid of unused function alloc_xy_table + +Fri Nov 13 16:50:05 1998 Brian Gough + + * clean up for make strict, use size_t instead of unsigned int + +1998-11-06 + + * added const to several declarations where needed. + + diff --git a/gsl-2.5/interpolation/Makefile b/gsl-2.5/interpolation/Makefile new file mode 100644 index 00000000..eb57648c --- /dev/null +++ b/gsl-2.5/interpolation/Makefile @@ -0,0 +1,1044 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# interpolation/Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + + + + +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/gsl +pkgincludedir = $(includedir)/gsl +pkglibdir = $(libdir)/gsl +pkglibexecdir = $(libexecdir)/gsl +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = x86_64-unknown-linux-gnu +host_triplet = x86_64-unknown-linux-gnu +check_PROGRAMS = test$(EXEEXT) +subdir = interpolation +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp \ + $(noinst_HEADERS) $(pkginclude_HEADERS) \ + $(top_srcdir)/test-driver ChangeLog TODO +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +libgslinterpolation_la_LIBADD = +am_libgslinterpolation_la_OBJECTS = accel.lo akima.lo cspline.lo \ + interp.lo linear.lo spline.lo poly.lo steffen.lo inline.lo \ + interp2d.lo bilinear.lo bicubic.lo spline2d.lo +libgslinterpolation_la_OBJECTS = $(am_libgslinterpolation_la_OBJECTS) +AM_V_lt = $(am__v_lt_$(V)) +am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) +am__v_lt_0 = --silent +am__v_lt_1 = +am_test_OBJECTS = test.$(OBJEXT) +test_OBJECTS = $(am_test_OBJECTS) +test_DEPENDENCIES = libgslinterpolation.la ../poly/libgslpoly.la \ + ../linalg/libgsllinalg.la ../permutation/libgslpermutation.la \ + ../blas/libgslblas.la ../matrix/libgslmatrix.la \ + ../vector/libgslvector.la ../block/libgslblock.la \ + ../complex/libgslcomplex.la ../cblas/libgslcblas.la \ + ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la \ + ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la +AM_V_P = $(am__v_P_$(V)) +am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY)) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_$(V)) +am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_$(V)) +am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I. -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_$(V)) +am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_$(V)) +am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libgslinterpolation_la_SOURCES) $(test_SOURCES) +DIST_SOURCES = $(libgslinterpolation_la_SOURCES) $(test_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(pkgincludedir)" +HEADERS = $(noinst_HEADERS) $(pkginclude_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = .test +LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing aclocal-1.13 +AMTAR = $${TAR-tar} +AM_DEFAULT_VERBOSITY = 1 +AR = ar +AS = as +AUTOCONF = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing autoconf +AUTOHEADER = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing autoheader +AUTOMAKE = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing automake-1.13 +AWK = gawk +CC = gcc +CCDEPMODE = depmode=gcc3 +CFLAGS = -g -O2 +CPP = gcc -E +CPPFLAGS = +CYGPATH_W = echo +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +DLLTOOL = false +DSYMUTIL = +DUMPBIN = +ECHO_C = +ECHO_N = -n +ECHO_T = +EGREP = /usr/bin/grep -E +EXEEXT = +FGREP = /usr/bin/grep -F +GREP = /usr/bin/grep +GSLCBLAS_LDFLAGS = +GSL_CFLAGS = -I${prefix}/include +GSL_LDFLAGS = +GSL_LIBADD = +GSL_LIBM = -lm +GSL_LIBS = -L${exec_prefix}/lib -lgsl +GSL_LT_CBLAS_VERSION = 0:0:0 +GSL_LT_VERSION = 24:0:1 +GSL_MAJOR_VERSION = 2 +GSL_MINOR_VERSION = 5 +HAVE_AIX_IEEE_INTERFACE = +HAVE_DARWIN86_IEEE_INTERFACE = +HAVE_DARWIN_IEEE_INTERFACE = +HAVE_FREEBSD_IEEE_INTERFACE = +HAVE_GNUM68K_IEEE_INTERFACE = +HAVE_GNUPPC_IEEE_INTERFACE = +HAVE_GNUSPARC_IEEE_INTERFACE = +HAVE_GNUX86_IEEE_INTERFACE = +HAVE_HPUX11_IEEE_INTERFACE = +HAVE_HPUX_IEEE_INTERFACE = +HAVE_IRIX_IEEE_INTERFACE = +HAVE_NETBSD_IEEE_INTERFACE = +HAVE_OPENBSD_IEEE_INTERFACE = +HAVE_OS2EMX_IEEE_INTERFACE = +HAVE_SOLARIS_IEEE_INTERFACE = +HAVE_SUNOS4_IEEE_INTERFACE = +HAVE_TRU64_IEEE_INTERFACE = +INSTALL = /usr/bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = $(install_sh) -c -s +LD = /usr/bin/ld -m elf_x86_64 +LDFLAGS = +LIBM = -lm +LIBOBJS = +LIBS = -lm +LIBTOOL = $(SHELL) $(top_builddir)/libtool +LIPO = +LN_S = ln -s +LTLIBOBJS = +MAINT = # +MAKEINFO = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing makeinfo +MANIFEST_TOOL = : +MKDIR_P = /usr/bin/mkdir -p +NM = /usr/bin/nm -B +NMEDIT = +OBJDUMP = objdump +OBJEXT = o +OTOOL = +OTOOL64 = +PACKAGE = gsl +PACKAGE_BUGREPORT = +PACKAGE_NAME = gsl +PACKAGE_STRING = gsl 2.5 +PACKAGE_TARNAME = gsl +PACKAGE_URL = +PACKAGE_VERSION = 2.5 +PATH_SEPARATOR = : +RANLIB = ranlib +SED = /usr/bin/sed +SET_MAKE = +SHELL = /bin/sh +STRIP = strip +VERSION = 2.5 +abs_builddir = /home/groups/kipac/chto/package/gsl/gsl-2.5/interpolation +abs_srcdir = /home/groups/kipac/chto/package/gsl/gsl-2.5/interpolation +abs_top_builddir = /home/groups/kipac/chto/package/gsl/gsl-2.5 +abs_top_srcdir = /home/groups/kipac/chto/package/gsl/gsl-2.5 +ac_ct_AR = ar +ac_ct_CC = gcc +ac_ct_DUMPBIN = +am__include = include +am__leading_dot = . +am__quote = +am__tar = $${TAR-tar} chof - "$$tardir" +am__untar = $${TAR-tar} xf - +bindir = ${exec_prefix}/bin +build = x86_64-unknown-linux-gnu +build_alias = +build_cpu = x86_64 +build_os = linux-gnu +build_vendor = unknown +builddir = . +datadir = ${datarootdir} +datarootdir = ${prefix}/share +docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} +dvidir = ${docdir} +exec_prefix = ${prefix} +host = x86_64-unknown-linux-gnu +host_alias = +host_cpu = x86_64 +host_os = linux-gnu +host_vendor = unknown +htmldir = ${docdir} +includedir = ${prefix}/include +infodir = ${datarootdir}/info +install_sh = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/install-sh +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +localedir = ${datarootdir}/locale +localstatedir = ${prefix}/var +mandir = ${datarootdir}/man +mkdir_p = $(MKDIR_P) +oldincludedir = /usr/include +pdfdir = ${docdir} +prefix = /home/groups/kipac/chto/package/gsl/gsl_lib +program_transform_name = s,x,x, +psdir = ${docdir} +sbindir = ${exec_prefix}/sbin +sharedstatedir = ${prefix}/com +srcdir = . +sysconfdir = ${prefix}/etc +target_alias = +top_build_prefix = ../ +top_builddir = .. +top_srcdir = .. +noinst_LTLIBRARIES = libgslinterpolation.la +pkginclude_HEADERS = gsl_interp.h gsl_spline.h gsl_interp2d.h gsl_spline2d.h +libgslinterpolation_la_SOURCES = accel.c akima.c cspline.c interp.c linear.c integ_eval.h spline.c poly.c steffen.c inline.c interp2d.c bilinear.c bicubic.c spline2d.c +noinst_HEADERS = test2d.c +AM_CPPFLAGS = -I$(top_srcdir) +TESTS = $(check_PROGRAMS) +test_LDADD = libgslinterpolation.la ../poly/libgslpoly.la ../linalg/libgsllinalg.la ../permutation/libgslpermutation.la ../blas/libgslblas.la ../matrix/libgslmatrix.la ../vector/libgslvector.la ../block/libgslblock.la ../complex/libgslcomplex.la ../cblas/libgslcblas.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la +test_SOURCES = test.c +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu interpolation/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu interpolation/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: # $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): # $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libgslinterpolation.la: $(libgslinterpolation_la_OBJECTS) $(libgslinterpolation_la_DEPENDENCIES) $(EXTRA_libgslinterpolation_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(libgslinterpolation_la_OBJECTS) $(libgslinterpolation_la_LIBADD) $(LIBS) + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) $(EXTRA_test_DEPENDENCIES) + @rm -f test$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_OBJECTS) $(test_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +include ./$(DEPDIR)/accel.Plo +include ./$(DEPDIR)/akima.Plo +include ./$(DEPDIR)/bicubic.Plo +include ./$(DEPDIR)/bilinear.Plo +include ./$(DEPDIR)/cspline.Plo +include ./$(DEPDIR)/inline.Plo +include ./$(DEPDIR)/interp.Plo +include ./$(DEPDIR)/interp2d.Plo +include ./$(DEPDIR)/linear.Plo +include ./$(DEPDIR)/poly.Plo +include ./$(DEPDIR)/spline.Plo +include ./$(DEPDIR)/spline2d.Plo +include ./$(DEPDIR)/steffen.Plo +include ./$(DEPDIR)/test.Po + +.c.o: + $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# $(AM_V_CC)source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(COMPILE) -c $< + +.c.obj: + $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# $(AM_V_CC)source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: + $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +# $(AM_V_CC)source='$<' object='$@' libtool=yes \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-pkgincludeHEADERS: $(pkginclude_HEADERS) + @$(NORMAL_INSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \ + done + +uninstall-pkgincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + else \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_PROGRAMS) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +test.log: test$(EXEEXT) + @p='test$(EXEEXT)'; \ + b='test'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +#.test$(EXEEXT).log: +# @p='$<'; \ +# $(am__set_b); \ +# $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +# --log-file $$b.log --trs-file $$b.trs \ +# $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +# "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-am +all-am: Makefile $(LTLIBRARIES) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(pkgincludedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-pkgincludeHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-pkgincludeHEADERS + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES cscopelist-am ctags ctags-am distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-pkgincludeHEADERS \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + recheck tags tags-am uninstall uninstall-am \ + uninstall-pkgincludeHEADERS + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gsl-2.5/interpolation/Makefile.am b/gsl-2.5/interpolation/Makefile.am new file mode 100644 index 00000000..1d807555 --- /dev/null +++ b/gsl-2.5/interpolation/Makefile.am @@ -0,0 +1,18 @@ +noinst_LTLIBRARIES = libgslinterpolation.la + +check_PROGRAMS = test + +pkginclude_HEADERS = gsl_interp.h gsl_spline.h gsl_interp2d.h gsl_spline2d.h + +libgslinterpolation_la_SOURCES = accel.c akima.c cspline.c interp.c linear.c integ_eval.h spline.c poly.c steffen.c inline.c interp2d.c bilinear.c bicubic.c spline2d.c + +noinst_HEADERS = test2d.c + +AM_CPPFLAGS = -I$(top_srcdir) + +TESTS = $(check_PROGRAMS) + +test_LDADD = libgslinterpolation.la ../poly/libgslpoly.la ../linalg/libgsllinalg.la ../permutation/libgslpermutation.la ../blas/libgslblas.la ../matrix/libgslmatrix.la ../vector/libgslvector.la ../block/libgslblock.la ../complex/libgslcomplex.la ../cblas/libgslcblas.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la + +test_SOURCES = test.c + diff --git a/gsl-2.5/interpolation/Makefile.in b/gsl-2.5/interpolation/Makefile.in new file mode 100644 index 00000000..0e4f5132 --- /dev/null +++ b/gsl-2.5/interpolation/Makefile.in @@ -0,0 +1,1044 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + + +VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +check_PROGRAMS = test$(EXEEXT) +subdir = interpolation +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp \ + $(noinst_HEADERS) $(pkginclude_HEADERS) \ + $(top_srcdir)/test-driver ChangeLog TODO +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +libgslinterpolation_la_LIBADD = +am_libgslinterpolation_la_OBJECTS = accel.lo akima.lo cspline.lo \ + interp.lo linear.lo spline.lo poly.lo steffen.lo inline.lo \ + interp2d.lo bilinear.lo bicubic.lo spline2d.lo +libgslinterpolation_la_OBJECTS = $(am_libgslinterpolation_la_OBJECTS) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +am_test_OBJECTS = test.$(OBJEXT) +test_OBJECTS = $(am_test_OBJECTS) +test_DEPENDENCIES = libgslinterpolation.la ../poly/libgslpoly.la \ + ../linalg/libgsllinalg.la ../permutation/libgslpermutation.la \ + ../blas/libgslblas.la ../matrix/libgslmatrix.la \ + ../vector/libgslvector.la ../block/libgslblock.la \ + ../complex/libgslcomplex.la ../cblas/libgslcblas.la \ + ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la \ + ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libgslinterpolation_la_SOURCES) $(test_SOURCES) +DIST_SOURCES = $(libgslinterpolation_la_SOURCES) $(test_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(pkgincludedir)" +HEADERS = $(noinst_HEADERS) $(pkginclude_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = @EXEEXT@ .test +LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +GSLCBLAS_LDFLAGS = @GSLCBLAS_LDFLAGS@ +GSL_CFLAGS = @GSL_CFLAGS@ +GSL_LDFLAGS = @GSL_LDFLAGS@ +GSL_LIBADD = @GSL_LIBADD@ +GSL_LIBM = @GSL_LIBM@ +GSL_LIBS = @GSL_LIBS@ +GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ +GSL_LT_VERSION = @GSL_LT_VERSION@ +GSL_MAJOR_VERSION = @GSL_MAJOR_VERSION@ +GSL_MINOR_VERSION = @GSL_MINOR_VERSION@ +HAVE_AIX_IEEE_INTERFACE = @HAVE_AIX_IEEE_INTERFACE@ +HAVE_DARWIN86_IEEE_INTERFACE = @HAVE_DARWIN86_IEEE_INTERFACE@ +HAVE_DARWIN_IEEE_INTERFACE = @HAVE_DARWIN_IEEE_INTERFACE@ +HAVE_FREEBSD_IEEE_INTERFACE = @HAVE_FREEBSD_IEEE_INTERFACE@ +HAVE_GNUM68K_IEEE_INTERFACE = @HAVE_GNUM68K_IEEE_INTERFACE@ +HAVE_GNUPPC_IEEE_INTERFACE = @HAVE_GNUPPC_IEEE_INTERFACE@ +HAVE_GNUSPARC_IEEE_INTERFACE = @HAVE_GNUSPARC_IEEE_INTERFACE@ +HAVE_GNUX86_IEEE_INTERFACE = @HAVE_GNUX86_IEEE_INTERFACE@ +HAVE_HPUX11_IEEE_INTERFACE = @HAVE_HPUX11_IEEE_INTERFACE@ +HAVE_HPUX_IEEE_INTERFACE = @HAVE_HPUX_IEEE_INTERFACE@ +HAVE_IRIX_IEEE_INTERFACE = @HAVE_IRIX_IEEE_INTERFACE@ +HAVE_NETBSD_IEEE_INTERFACE = @HAVE_NETBSD_IEEE_INTERFACE@ +HAVE_OPENBSD_IEEE_INTERFACE = @HAVE_OPENBSD_IEEE_INTERFACE@ +HAVE_OS2EMX_IEEE_INTERFACE = @HAVE_OS2EMX_IEEE_INTERFACE@ +HAVE_SOLARIS_IEEE_INTERFACE = @HAVE_SOLARIS_IEEE_INTERFACE@ +HAVE_SUNOS4_IEEE_INTERFACE = @HAVE_SUNOS4_IEEE_INTERFACE@ +HAVE_TRU64_IEEE_INTERFACE = @HAVE_TRU64_IEEE_INTERFACE@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBM = @LIBM@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +noinst_LTLIBRARIES = libgslinterpolation.la +pkginclude_HEADERS = gsl_interp.h gsl_spline.h gsl_interp2d.h gsl_spline2d.h +libgslinterpolation_la_SOURCES = accel.c akima.c cspline.c interp.c linear.c integ_eval.h spline.c poly.c steffen.c inline.c interp2d.c bilinear.c bicubic.c spline2d.c +noinst_HEADERS = test2d.c +AM_CPPFLAGS = -I$(top_srcdir) +TESTS = $(check_PROGRAMS) +test_LDADD = libgslinterpolation.la ../poly/libgslpoly.la ../linalg/libgsllinalg.la ../permutation/libgslpermutation.la ../blas/libgslblas.la ../matrix/libgslmatrix.la ../vector/libgslvector.la ../block/libgslblock.la ../complex/libgslcomplex.la ../cblas/libgslcblas.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la +test_SOURCES = test.c +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu interpolation/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu interpolation/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libgslinterpolation.la: $(libgslinterpolation_la_OBJECTS) $(libgslinterpolation_la_DEPENDENCIES) $(EXTRA_libgslinterpolation_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(libgslinterpolation_la_OBJECTS) $(libgslinterpolation_la_LIBADD) $(LIBS) + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) $(EXTRA_test_DEPENDENCIES) + @rm -f test$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_OBJECTS) $(test_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/accel.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/akima.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bicubic.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bilinear.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cspline.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/inline.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/interp.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/interp2d.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/linear.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/poly.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/spline.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/spline2d.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/steffen.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test.Po@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-pkgincludeHEADERS: $(pkginclude_HEADERS) + @$(NORMAL_INSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \ + done + +uninstall-pkgincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + else \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_PROGRAMS) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +test.log: test$(EXEEXT) + @p='test$(EXEEXT)'; \ + b='test'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +@am__EXEEXT_TRUE@.test$(EXEEXT).log: +@am__EXEEXT_TRUE@ @p='$<'; \ +@am__EXEEXT_TRUE@ $(am__set_b); \ +@am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +@am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ +@am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +@am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-am +all-am: Makefile $(LTLIBRARIES) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(pkgincludedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-pkgincludeHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-pkgincludeHEADERS + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES cscopelist-am ctags ctags-am distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-pkgincludeHEADERS \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + recheck tags tags-am uninstall uninstall-am \ + uninstall-pkgincludeHEADERS + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gsl-2.5/interpolation/TODO b/gsl-2.5/interpolation/TODO new file mode 100644 index 00000000..fd0c1d0e --- /dev/null +++ b/gsl-2.5/interpolation/TODO @@ -0,0 +1,13 @@ +# -*- org -*- +#+CATEGORY: interpolation + +1. need to add a test for the akima splines + +2. [DOCUMENTATION] From: Conrad Curry + + I would suggest adding more about cspline and Akima similiar to what + is given for 'polynomial', particularly under what conditions one + would be prefered over the other. + +3. add akima splines without the Wodicka modification, so that the spline +is a smooth curve without corners. diff --git a/gsl-2.5/interpolation/accel.c b/gsl-2.5/interpolation/accel.c new file mode 100644 index 00000000..00063fd8 --- /dev/null +++ b/gsl-2.5/interpolation/accel.c @@ -0,0 +1,58 @@ +/* interpolation/accel.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman + */ +#include +#include +#include +#include + +gsl_interp_accel * +gsl_interp_accel_alloc (void) +{ + gsl_interp_accel *a = (gsl_interp_accel *) malloc (sizeof (gsl_interp_accel)); + if (a == 0) + { + GSL_ERROR_NULL("could not allocate space for gsl_interp_accel", GSL_ENOMEM); + } + + a->cache = 0; + a->hit_count = 0; + a->miss_count = 0; + + return a; +} + +int +gsl_interp_accel_reset (gsl_interp_accel * a) +{ + a->cache = 0; + a->hit_count = 0; + a->miss_count = 0; + + return GSL_SUCCESS; +} + +void +gsl_interp_accel_free (gsl_interp_accel * a) +{ + RETURN_IF_NULL (a); + free (a); +} diff --git a/gsl-2.5/interpolation/accel.lo b/gsl-2.5/interpolation/accel.lo new file mode 100644 index 00000000..a984c94c --- /dev/null +++ b/gsl-2.5/interpolation/accel.lo @@ -0,0 +1,12 @@ +# accel.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/accel.o' + +# Name of the non-PIC object +non_pic_object='accel.o' + diff --git a/gsl-2.5/interpolation/akima.c b/gsl-2.5/interpolation/akima.c new file mode 100644 index 00000000..4244e0f1 --- /dev/null +++ b/gsl-2.5/interpolation/akima.c @@ -0,0 +1,389 @@ +/* interpolation/akima.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman + */ +#include +#include +#include +#include +#include "integ_eval.h" +#include + +typedef struct +{ + double * b; + double * c; + double * d; + double * _m; +} akima_state_t; + + +/* common creation */ +static void * +akima_alloc (size_t size) +{ + akima_state_t *state = (akima_state_t *) malloc (sizeof (akima_state_t)); + + if (state == NULL) + { + GSL_ERROR_NULL("failed to allocate space for state", GSL_ENOMEM); + } + + state->b = (double *) malloc (size * sizeof (double)); + + if (state->b == NULL) + { + free (state); + GSL_ERROR_NULL("failed to allocate space for b", GSL_ENOMEM); + } + + state->c = (double *) malloc (size * sizeof (double)); + + if (state->c == NULL) + { + free (state->b); + free (state); + GSL_ERROR_NULL("failed to allocate space for c", GSL_ENOMEM); + } + + state->d = (double *) malloc (size * sizeof (double)); + + if (state->d == NULL) + { + free (state->c); + free (state->b); + free (state); + GSL_ERROR_NULL("failed to allocate space for d", GSL_ENOMEM); + } + + state->_m = (double *) malloc ((size + 4) * sizeof (double)); + + if (state->_m == NULL) + { + free (state->d); + free (state->c); + free (state->b); + free (state); + GSL_ERROR_NULL("failed to allocate space for _m", GSL_ENOMEM); + } + + return state; +} + + +/* common calculation */ +static void +akima_calc (const double x_array[], double b[], double c[], double d[], size_t size, double m[]) +{ + size_t i; + + for (i = 0; i < (size - 1); i++) + { + const double NE = fabs (m[i + 1] - m[i]) + fabs (m[i - 1] - m[i - 2]); + if (NE == 0.0) + { + b[i] = m[i]; + c[i] = 0.0; + d[i] = 0.0; + } + else + { + const double h_i = x_array[i + 1] - x_array[i]; + const double NE_next = fabs (m[i + 2] - m[i + 1]) + fabs (m[i] - m[i - 1]); + const double alpha_i = fabs (m[i - 1] - m[i - 2]) / NE; + double alpha_ip1; + double tL_ip1; + if (NE_next == 0.0) + { + tL_ip1 = m[i]; + } + else + { + alpha_ip1 = fabs (m[i] - m[i - 1]) / NE_next; + tL_ip1 = (1.0 - alpha_ip1) * m[i] + alpha_ip1 * m[i + 1]; + } + b[i] = (1.0 - alpha_i) * m[i - 1] + alpha_i * m[i]; + c[i] = (3.0 * m[i] - 2.0 * b[i] - tL_ip1) / h_i; + d[i] = (b[i] + tL_ip1 - 2.0 * m[i]) / (h_i * h_i); + } + } +} + + +static int +akima_init (void * vstate, const double x_array[], const double y_array[], + size_t size) +{ + akima_state_t *state = (akima_state_t *) vstate; + + double * m = state->_m + 2; /* offset so we can address the -1,-2 + components */ + + size_t i; + for (i = 0; i <= size - 2; i++) + { + m[i] = (y_array[i + 1] - y_array[i]) / (x_array[i + 1] - x_array[i]); + } + + /* non-periodic boundary conditions */ + m[-2] = 3.0 * m[0] - 2.0 * m[1]; + m[-1] = 2.0 * m[0] - m[1]; + m[size - 1] = 2.0 * m[size - 2] - m[size - 3]; + m[size] = 3.0 * m[size - 2] - 2.0 * m[size - 3]; + + akima_calc (x_array, state->b, state->c, state->d, size, m); + + return GSL_SUCCESS; +} + + +static int +akima_init_periodic (void * vstate, + const double x_array[], + const double y_array[], + size_t size) +{ + akima_state_t *state = (akima_state_t *) vstate; + + double * m = state->_m + 2; /* offset so we can address the -1,-2 + components */ + + size_t i; + for (i = 0; i <= size - 2; i++) + { + m[i] = (y_array[i + 1] - y_array[i]) / (x_array[i + 1] - x_array[i]); + } + + /* periodic boundary conditions */ + m[-2] = m[size - 1 - 2]; + m[-1] = m[size - 1 - 1]; + m[size - 1] = m[0]; + m[size] = m[1]; + + akima_calc (x_array, state->b, state->c, state->d, size, m); + + return GSL_SUCCESS; +} + +static void +akima_free (void * vstate) +{ + akima_state_t *state = (akima_state_t *) vstate; + + free (state->b); + free (state->c); + free (state->d); + free (state->_m); + free (state); +} + + +static +int +akima_eval (const void * vstate, + const double x_array[], const double y_array[], size_t size, + double x, + gsl_interp_accel * a, + double *y) +{ + const akima_state_t *state = (const akima_state_t *) vstate; + + size_t index; + + if (a != 0) + { + index = gsl_interp_accel_find (a, x_array, size, x); + } + else + { + index = gsl_interp_bsearch (x_array, x, 0, size - 1); + } + + /* evaluate */ + { + const double x_lo = x_array[index]; + const double delx = x - x_lo; + const double b = state->b[index]; + const double c = state->c[index]; + const double d = state->d[index]; + *y = y_array[index] + delx * (b + delx * (c + d * delx)); + return GSL_SUCCESS; + } +} + + +static int +akima_eval_deriv (const void * vstate, + const double x_array[], const double y_array[], size_t size, + double x, + gsl_interp_accel * a, + double *dydx) +{ + const akima_state_t *state = (const akima_state_t *) vstate; + + size_t index; + + DISCARD_POINTER(y_array); /* prevent warning about unused parameter */ + + if (a != 0) + { + index = gsl_interp_accel_find (a, x_array, size, x); + } + else + { + index = gsl_interp_bsearch (x_array, x, 0, size - 1); + } + + /* evaluate */ + { + double x_lo = x_array[index]; + double delx = x - x_lo; + double b = state->b[index]; + double c = state->c[index]; + double d = state->d[index]; + *dydx = b + delx * (2.0 * c + 3.0 * d * delx); + return GSL_SUCCESS; + } +} + + +static +int +akima_eval_deriv2 (const void * vstate, + const double x_array[], const double y_array[], size_t size, + double x, + gsl_interp_accel * a, + double *y_pp) +{ + const akima_state_t *state = (const akima_state_t *) vstate; + + size_t index; + + DISCARD_POINTER(y_array); /* prevent warning about unused parameter */ + + if (a != 0) + { + index = gsl_interp_accel_find (a, x_array, size, x); + } + else + { + index = gsl_interp_bsearch (x_array, x, 0, size - 1); + } + + /* evaluate */ + { + const double x_lo = x_array[index]; + const double delx = x - x_lo; + const double c = state->c[index]; + const double d = state->d[index]; + *y_pp = 2.0 * c + 6.0 * d * delx; + return GSL_SUCCESS; + } +} + + +static +int +akima_eval_integ (const void * vstate, + const double x_array[], const double y_array[], size_t size, + gsl_interp_accel * acc, + double a, double b, + double * result) +{ + const akima_state_t *state = (const akima_state_t *) vstate; + + size_t i, index_a, index_b; + + if (acc != 0) + { + index_a = gsl_interp_accel_find (acc, x_array, size, a); + index_b = gsl_interp_accel_find (acc, x_array, size, b); + } + else + { + index_a = gsl_interp_bsearch (x_array, a, 0, size - 1); + index_b = gsl_interp_bsearch (x_array, b, 0, size - 1); + } + + *result = 0.0; + + /* interior intervals */ + + for(i=index_a; i<=index_b; i++) { + const double x_hi = x_array[i + 1]; + const double x_lo = x_array[i]; + const double y_lo = y_array[i]; + const double dx = x_hi - x_lo; + if(dx != 0.0) { + + if (i == index_a || i == index_b) + { + double x1 = (i == index_a) ? a : x_lo; + double x2 = (i == index_b) ? b : x_hi; + *result += integ_eval (y_lo, state->b[i], state->c[i], state->d[i], + x_lo, x1, x2); + } + else + { + *result += dx * (y_lo + + dx*(0.5*state->b[i] + + dx*(state->c[i]/3.0 + + 0.25*state->d[i]*dx))); + } + } + else { + *result = 0.0; + return GSL_EINVAL; + } + } + + return GSL_SUCCESS; +} + + +static const gsl_interp_type akima_type = +{ + "akima", + 5, + &akima_alloc, + &akima_init, + &akima_eval, + &akima_eval_deriv, + &akima_eval_deriv2, + &akima_eval_integ, + &akima_free +}; + +const gsl_interp_type * gsl_interp_akima = &akima_type; + +static const gsl_interp_type akima_periodic_type = +{ + "akima-periodic", + 5, + &akima_alloc, + &akima_init_periodic, + &akima_eval, + &akima_eval_deriv, + &akima_eval_deriv2, + &akima_eval_integ, + &akima_free +}; + +const gsl_interp_type * gsl_interp_akima_periodic = &akima_periodic_type; diff --git a/gsl-2.5/interpolation/akima.lo b/gsl-2.5/interpolation/akima.lo new file mode 100644 index 00000000..12429664 --- /dev/null +++ b/gsl-2.5/interpolation/akima.lo @@ -0,0 +1,12 @@ +# akima.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/akima.o' + +# Name of the non-PIC object +non_pic_object='akima.o' + diff --git a/gsl-2.5/interpolation/bicubic.c b/gsl-2.5/interpolation/bicubic.c new file mode 100644 index 00000000..7db14fee --- /dev/null +++ b/gsl-2.5/interpolation/bicubic.c @@ -0,0 +1,805 @@ +/* interpolation/bicubic.c + * + * Copyright 2012 David Zaslavsky + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include + +#define IDX2D(i, j, w) ((j) * ((w)->xsize) + (i)) + +typedef struct +{ + double * zx; + double * zy; + double * zxy; + size_t xsize; + size_t ysize; +} bicubic_state_t; + +static void bicubic_free (void * vstate); + +static void * +bicubic_alloc(size_t xsize, size_t ysize) +{ + bicubic_state_t *state; + + state = calloc(1, sizeof (bicubic_state_t)); + + if (state == NULL) + { + GSL_ERROR_NULL("failed to allocate space for state", GSL_ENOMEM); + } + + state->zx = (double *) malloc (xsize * ysize * sizeof (double)); + if (state->zx == NULL) + { + bicubic_free(state); + GSL_ERROR_NULL("failed to allocate space for zx", GSL_ENOMEM); + } + + state->zy = (double *) malloc (xsize * ysize * sizeof (double)); + if (state->zy == NULL) + { + bicubic_free(state); + GSL_ERROR_NULL("failed to allocate space for zy", GSL_ENOMEM); + } + + state->zxy = (double *) malloc (xsize * ysize * sizeof (double)); + if (state->zxy == NULL) + { + bicubic_free(state); + GSL_ERROR_NULL("failed to allocate space for zxy", GSL_ENOMEM); + } + + state->xsize = xsize; + state->ysize = ysize; + + return state; +} /* bicubic_alloc() */ + +static void +bicubic_free (void * vstate) +{ + bicubic_state_t *state = (bicubic_state_t *) vstate; + + RETURN_IF_NULL(state); + + if (state->zx) + free (state->zx); + + if (state->zy) + free (state->zy); + + if (state->zxy) + free (state->zxy); + + free (state); +} /* bicubic_free() */ + +static int +bicubic_init(void * vstate, const double xa[], const double ya[], + const double za[], size_t xsize, size_t ysize) +{ + bicubic_state_t *state = (bicubic_state_t *) vstate; + + gsl_interp_accel *acc = gsl_interp_accel_alloc(); + gsl_spline *spline; + gsl_vector *x; + gsl_vector *y; + size_t i, j; + + x = gsl_vector_alloc(xsize); + y = gsl_vector_alloc(xsize); + spline = gsl_spline_alloc(gsl_interp_cspline, xsize); + for (j = 0; j <= ysize - 1; j++) + { + for (i = 0; i <= xsize - 1; i++) + { + gsl_vector_set(x, i, xa[i]); + gsl_vector_set(y, i, za[IDX2D(i, j, state)]); + } + gsl_spline_init(spline, x->data, y->data, xsize); + for (i = 0; i <= xsize - 1; i++) + { + state->zx[IDX2D(i, j, state)] = gsl_spline_eval_deriv(spline, xa[i], acc); + } + } + gsl_vector_free(x); + gsl_vector_free(y); + gsl_spline_free(spline); + gsl_interp_accel_reset(acc); + + x = gsl_vector_alloc(ysize); + y = gsl_vector_alloc(ysize); + spline = gsl_spline_alloc(gsl_interp_cspline, ysize); + for (i = 0; i <= xsize - 1; i++) + { + for (j = 0; j <= ysize - 1; j++) + { + gsl_vector_set(x, j, ya[j]); + gsl_vector_set(y, j, za[IDX2D(i, j, state)]); + } + gsl_spline_init(spline, x->data, y->data, ysize); + for (j = 0; j <= ysize - 1; j++) + { + state->zy[IDX2D(i, j, state)] = gsl_spline_eval_deriv(spline, ya[j], acc); + } + } + gsl_vector_free(x); + gsl_vector_free(y); + gsl_spline_free(spline); + gsl_interp_accel_reset(acc); + + x = gsl_vector_alloc(xsize); + y = gsl_vector_alloc(xsize); + spline = gsl_spline_alloc(gsl_interp_cspline, xsize); + for (j = 0; j <= ysize - 1; j++) + { + for (i = 0; i <= xsize - 1; i++) + { + gsl_vector_set(x, i, xa[i]); + gsl_vector_set(y, i, state->zy[IDX2D(i, j, state)]); + } + gsl_spline_init(spline, x->data, y->data, xsize); + for (i = 0; i <= xsize - 1; i++) + { + state->zxy[IDX2D(i, j, state)] = gsl_spline_eval_deriv(spline, xa[i], acc); + } + } + gsl_vector_free(x); + gsl_vector_free(y); + gsl_spline_free(spline); + gsl_interp_accel_free(acc); + + return GSL_SUCCESS; +} /* bicubic_init() */ + + +static int +bicubic_eval(const void * vstate, const double xarr[], const double yarr[], + const double zarr[], size_t xsize, size_t ysize, + double x, double y, gsl_interp_accel * xa, + gsl_interp_accel * ya, double * z) +{ + bicubic_state_t *state = (bicubic_state_t *) vstate; + + double xmin, xmax, ymin, ymax; + double zminmin, zminmax, zmaxmin, zmaxmax; + double zxminmin, zxminmax, zxmaxmin, zxmaxmax; + double zyminmin, zyminmax, zymaxmin, zymaxmax; + double zxyminmin, zxyminmax, zxymaxmin, zxymaxmax; + + double dx, dy; /* size of the grid cell */ + double dt, du; + + /* + * t and u are the positions within the grid cell at which we are computing + * the interpolation, in units of grid cell size + */ + double t, u; + double t0, t1, t2, t3, u0, u1, u2, u3; + double v; + size_t xi, yi; + + /* first compute the indices into the data arrays where we are interpolating */ + if (xa != NULL) + xi = gsl_interp_accel_find(xa, xarr, xsize, x); + else + xi = gsl_interp_bsearch(xarr, x, 0, xsize - 1); + + if (ya != NULL) + yi = gsl_interp_accel_find(ya, yarr, ysize, y); + else + yi = gsl_interp_bsearch(yarr, y, 0, ysize - 1); + + /* find the minimum and maximum values on the grid cell in each dimension */ + xmin = xarr[xi]; + xmax = xarr[xi + 1]; + ymin = yarr[yi]; + ymax = yarr[yi + 1]; + zminmin = zarr[IDX2D(xi, yi, state)]; + zminmax = zarr[IDX2D(xi, yi + 1, state)]; + zmaxmin = zarr[IDX2D(xi + 1, yi, state)]; + zmaxmax = zarr[IDX2D(xi + 1, yi + 1, state)]; + /* Get the width and height of the grid cell */ + dx = xmax - xmin; + dy = ymax - ymin; + t = (x - xmin)/dx; + u = (y - ymin)/dy; + dt = 1./dx; /* partial t / partial x */ + du = 1./dy; /* partial u / partial y */ + zxminmin = state->zx[IDX2D(xi, yi, state)]/dt; + zxminmax = state->zx[IDX2D(xi, yi + 1, state)]/dt; + zxmaxmin = state->zx[IDX2D(xi + 1, yi, state)]/dt; + zxmaxmax = state->zx[IDX2D(xi + 1, yi + 1, state)]/dt; + zyminmin = state->zy[IDX2D(xi, yi, state)]/du; + zyminmax = state->zy[IDX2D(xi, yi + 1, state)]/du; + zymaxmin = state->zy[IDX2D(xi + 1, yi, state)]/du; + zymaxmax = state->zy[IDX2D(xi + 1, yi + 1, state)]/du; + zxyminmin = state->zxy[IDX2D(xi, yi, state)]/(dt*du); + zxyminmax = state->zxy[IDX2D(xi, yi + 1, state)]/(dt*du); + zxymaxmin = state->zxy[IDX2D(xi + 1, yi, state)]/(dt*du); + zxymaxmax = state->zxy[IDX2D(xi + 1, yi + 1, state)]/(dt*du); + t0 = 1; + t1 = t; + t2 = t*t; + t3 = t*t2; + u0 = 1; + u1 = u; + u2 = u*u; + u3 = u*u2; + + *z = 0; + v = zminmin; + *z += v*t0*u0; + v = zyminmin; + *z += v*t0*u1; + v = -3*zminmin + 3*zminmax - 2*zyminmin - zyminmax; + *z += v*t0*u2; + v = 2*zminmin - 2*zminmax + zyminmin + zyminmax; + *z += v*t0*u3; + v = zxminmin; + *z += v*t1*u0; + v = zxyminmin; + *z += v*t1*u1; + v = -3*zxminmin + 3*zxminmax - 2*zxyminmin - zxyminmax; + *z += v*t1*u2; + v = 2*zxminmin - 2*zxminmax + zxyminmin + zxyminmax; + *z += v*t1*u3; + v = -3*zminmin + 3*zmaxmin - 2*zxminmin - zxmaxmin; + *z += v*t2*u0; + v = -3*zyminmin + 3*zymaxmin - 2*zxyminmin - zxymaxmin; + *z += v*t2*u1; + v = 9*zminmin - 9*zmaxmin + 9*zmaxmax - 9*zminmax + 6*zxminmin + 3*zxmaxmin - 3*zxmaxmax - 6*zxminmax + 6*zyminmin - 6*zymaxmin - 3*zymaxmax + 3*zyminmax + 4*zxyminmin + 2*zxymaxmin + zxymaxmax + 2*zxyminmax; + *z += v*t2*u2; + v = -6*zminmin + 6*zmaxmin - 6*zmaxmax + 6*zminmax - 4*zxminmin - 2*zxmaxmin + 2*zxmaxmax + 4*zxminmax - 3*zyminmin + 3*zymaxmin + 3*zymaxmax - 3*zyminmax - 2*zxyminmin - zxymaxmin - zxymaxmax - 2*zxyminmax; + *z += v*t2*u3; + v = 2*zminmin - 2*zmaxmin + zxminmin + zxmaxmin; + *z += v*t3*u0; + v = 2*zyminmin - 2*zymaxmin + zxyminmin + zxymaxmin; + *z += v*t3*u1; + v = -6*zminmin + 6*zmaxmin - 6*zmaxmax + 6*zminmax - 3*zxminmin - 3*zxmaxmin + 3*zxmaxmax + 3*zxminmax - 4*zyminmin + 4*zymaxmin + 2*zymaxmax - 2*zyminmax - 2*zxyminmin - 2*zxymaxmin - zxymaxmax - zxyminmax; + *z += v*t3*u2; + v = 4*zminmin - 4*zmaxmin + 4*zmaxmax - 4*zminmax + 2*zxminmin + 2*zxmaxmin - 2*zxmaxmax - 2*zxminmax + 2*zyminmin - 2*zymaxmin - 2*zymaxmax + 2*zyminmax + zxyminmin + zxymaxmin + zxymaxmax + zxyminmax; + *z += v*t3*u3; + + return GSL_SUCCESS; +} /* bicubic_eval() */ + +static int +bicubic_deriv_x(const void * vstate, const double xarr[], const double yarr[], + const double zarr[], size_t xsize, size_t ysize, + double x, double y, + gsl_interp_accel * xa, gsl_interp_accel * ya, double * z_p) +{ + bicubic_state_t *state = (bicubic_state_t *) vstate; + + double xmin, xmax, ymin, ymax; + double zminmin, zminmax, zmaxmin, zmaxmax; + double zxminmin, zxminmax, zxmaxmin, zxmaxmax; + double zyminmin, zyminmax, zymaxmin, zymaxmax; + double zxyminmin, zxyminmax, zxymaxmin, zxymaxmax; + double dx, dy; /* size of the grid cell */ + double dt, du; + + /* + * t and u are the positions within the grid cell at which we are computing + * the interpolation, in units of grid cell size + */ + double t, u; + double t0, t1, t2, u0, u1, u2, u3; + double v; + size_t xi, yi; + + /* first compute the indices into the data arrays where we are interpolating */ + if (xa != NULL) + xi = gsl_interp_accel_find(xa, xarr, xsize, x); + else + xi = gsl_interp_bsearch(xarr, x, 0, xsize - 1); + + if (ya != NULL) + yi = gsl_interp_accel_find(ya, yarr, ysize, y); + else + yi = gsl_interp_bsearch(yarr, y, 0, ysize - 1); + + /* find the minimum and maximum values on the grid cell in each dimension */ + xmin = xarr[xi]; + xmax = xarr[xi + 1]; + ymin = yarr[yi]; + ymax = yarr[yi + 1]; + zminmin = zarr[IDX2D(xi, yi, state)]; + zminmax = zarr[IDX2D(xi, yi + 1, state)]; + zmaxmin = zarr[IDX2D(xi + 1, yi, state)]; + zmaxmax = zarr[IDX2D(xi + 1, yi + 1, state)]; + + /* get the width and height of the grid cell */ + dx = xmax - xmin; + dy = ymax - ymin; + t = (x - xmin)/dx; + u = (y - ymin)/dy; + dt = 1./dx; /* partial t / partial x */ + du = 1./dy; /* partial u / partial y */ + + zxminmin = state->zx[IDX2D(xi, yi, state)]/dt; + zxminmax = state->zx[IDX2D(xi, yi + 1, state)]/dt; + zxmaxmin = state->zx[IDX2D(xi + 1, yi, state)]/dt; + zxmaxmax = state->zx[IDX2D(xi + 1, yi + 1, state)]/dt; + zyminmin = state->zy[IDX2D(xi, yi, state)]/du; + zyminmax = state->zy[IDX2D(xi, yi + 1, state)]/du; + zymaxmin = state->zy[IDX2D(xi + 1, yi, state)]/du; + zymaxmax = state->zy[IDX2D(xi + 1, yi + 1, state)]/du; + zxyminmin = state->zxy[IDX2D(xi, yi, state)]/(dt*du); + zxyminmax = state->zxy[IDX2D(xi, yi + 1, state)]/(dt*du); + zxymaxmin = state->zxy[IDX2D(xi + 1, yi, state)]/(dt*du); + zxymaxmax = state->zxy[IDX2D(xi + 1, yi + 1, state)]/(dt*du); + + t0 = 1; + t1 = t; + t2 = t*t; + u0 = 1; + u1 = u; + u2 = u*u; + u3 = u*u2; + + *z_p = 0; + v = zxminmin; + *z_p += v*t0*u0; + v = zxyminmin; + *z_p += v*t0*u1; + v = -3*zxminmin + 3*zxminmax - 2*zxyminmin - zxyminmax; + *z_p += v*t0*u2; + v = 2*zxminmin - 2*zxminmax + zxyminmin + zxyminmax; + *z_p += v*t0*u3; + v = -3*zminmin + 3*zmaxmin - 2*zxminmin - zxmaxmin; + *z_p += 2*v*t1*u0; + v = -3*zyminmin + 3*zymaxmin - 2*zxyminmin - zxymaxmin; + *z_p += 2*v*t1*u1; + v = 9*zminmin - 9*zmaxmin + 9*zmaxmax - 9*zminmax + 6*zxminmin + 3*zxmaxmin - 3*zxmaxmax - 6*zxminmax + 6*zyminmin - 6*zymaxmin - 3*zymaxmax + 3*zyminmax + 4*zxyminmin + 2*zxymaxmin + zxymaxmax + 2*zxyminmax; + *z_p += 2*v*t1*u2; + v = -6*zminmin + 6*zmaxmin - 6*zmaxmax + 6*zminmax - 4*zxminmin - 2*zxmaxmin + 2*zxmaxmax + 4*zxminmax - 3*zyminmin + 3*zymaxmin + 3*zymaxmax - 3*zyminmax - 2*zxyminmin - zxymaxmin - zxymaxmax - 2*zxyminmax; + *z_p += 2*v*t1*u3; + v = 2*zminmin - 2*zmaxmin + zxminmin + zxmaxmin; + *z_p += 3*v*t2*u0; + v = 2*zyminmin - 2*zymaxmin + zxyminmin + zxymaxmin; + *z_p += 3*v*t2*u1; + v = -6*zminmin + 6*zmaxmin - 6*zmaxmax + 6*zminmax - 3*zxminmin - 3*zxmaxmin + 3*zxmaxmax + 3*zxminmax - 4*zyminmin + 4*zymaxmin + 2*zymaxmax - 2*zyminmax - 2*zxyminmin - 2*zxymaxmin - zxymaxmax - zxyminmax; + *z_p += 3*v*t2*u2; + v = 4*zminmin - 4*zmaxmin + 4*zmaxmax - 4*zminmax + 2*zxminmin + 2*zxmaxmin - 2*zxmaxmax - 2*zxminmax + 2*zyminmin - 2*zymaxmin - 2*zymaxmax + 2*zyminmax + zxyminmin + zxymaxmin + zxymaxmax + zxyminmax; + *z_p += 3*v*t2*u3; + *z_p *= dt; + + return GSL_SUCCESS; +} /* bicubic_deriv_x() */ + +static int +bicubic_deriv_y(const void * vstate, const double xarr[], const double yarr[], + const double zarr[], size_t xsize, size_t ysize, + double x, double y, + gsl_interp_accel * xa, gsl_interp_accel * ya, double * z_p) +{ + bicubic_state_t *state = (bicubic_state_t *) vstate; + + double xmin, xmax, ymin, ymax; + double zminmin, zminmax, zmaxmin, zmaxmax; + double zxminmin, zxminmax, zxmaxmin, zxmaxmax; + double zyminmin, zyminmax, zymaxmin, zymaxmax; + double zxyminmin, zxyminmax, zxymaxmin, zxymaxmax; + /* dx and dy are the size of the grid cell */ + double dx, dy; + double dt, du; + /* t and u are the positions within the grid cell at which we are + * computing the interpolation, in units of grid cell size */ + double t, u; + double t0, t1, t2, t3, u0, u1, u2; + double v; + size_t xi, yi; + + /* first compute the indices into the data arrays where we are interpolating */ + if (xa != NULL) + xi = gsl_interp_accel_find(xa, xarr, xsize, x); + else + xi = gsl_interp_bsearch(xarr, x, 0, xsize - 1); + + if (ya != NULL) + yi = gsl_interp_accel_find(ya, yarr, ysize, y); + else + yi = gsl_interp_bsearch(yarr, y, 0, ysize - 1); + + /* find the minimum and maximum values on the grid cell in each dimension */ + xmin = xarr[xi]; + xmax = xarr[xi + 1]; + ymin = yarr[yi]; + ymax = yarr[yi + 1]; + zminmin = zarr[IDX2D(xi, yi, state)]; + zminmax = zarr[IDX2D(xi, yi + 1, state)]; + zmaxmin = zarr[IDX2D(xi + 1, yi, state)]; + zmaxmax = zarr[IDX2D(xi + 1, yi + 1, state)]; + + /* get the width and height of the grid cell */ + dx = xmax - xmin; + dy = ymax - ymin; + t = (x - xmin)/dx; + u = (y - ymin)/dy; + dt = 1./dx; /* partial t / partial x */ + du = 1./dy; /* partial u / partial y */ + + zxminmin = state->zx[IDX2D(xi, yi, state)]/dt; + zxminmax = state->zx[IDX2D(xi, yi + 1, state)]/dt; + zxmaxmin = state->zx[IDX2D(xi + 1, yi, state)]/dt; + zxmaxmax = state->zx[IDX2D(xi + 1, yi + 1, state)]/dt; + zyminmin = state->zy[IDX2D(xi, yi, state)]/du; + zyminmax = state->zy[IDX2D(xi, yi + 1, state)]/du; + zymaxmin = state->zy[IDX2D(xi + 1, yi, state)]/du; + zymaxmax = state->zy[IDX2D(xi + 1, yi + 1, state)]/du; + zxyminmin = state->zxy[IDX2D(xi, yi, state)]/(dt*du); + zxyminmax = state->zxy[IDX2D(xi, yi + 1, state)]/(dt*du); + zxymaxmin = state->zxy[IDX2D(xi + 1, yi, state)]/(dt*du); + zxymaxmax = state->zxy[IDX2D(xi + 1, yi + 1, state)]/(dt*du); + + t0 = 1; + t1 = t; + t2 = t*t; + t3 = t*t2; + u0 = 1; + u1 = u; + u2 = u*u; + + *z_p = 0; + v = zyminmin; + *z_p += v*t0*u0; + v = -3*zminmin + 3*zminmax - 2*zyminmin - zyminmax; + *z_p += 2*v*t0*u1; + v = 2*zminmin-2*zminmax + zyminmin + zyminmax; + *z_p += 3*v*t0*u2; + v = zxyminmin; + *z_p += v*t1*u0; + v = -3*zxminmin + 3*zxminmax - 2*zxyminmin - zxyminmax; + *z_p += 2*v*t1*u1; + v = 2*zxminmin - 2*zxminmax + zxyminmin + zxyminmax; + *z_p += 3*v*t1*u2; + v = -3*zyminmin + 3*zymaxmin - 2*zxyminmin - zxymaxmin; + *z_p += v*t2*u0; + v = 9*zminmin - 9*zmaxmin + 9*zmaxmax - 9*zminmax + 6*zxminmin + 3*zxmaxmin - 3*zxmaxmax - 6*zxminmax + 6*zyminmin - 6*zymaxmin - 3*zymaxmax + 3*zyminmax + 4*zxyminmin + 2*zxymaxmin + zxymaxmax + 2*zxyminmax; + *z_p += 2*v*t2*u1; + v = -6*zminmin + 6*zmaxmin - 6*zmaxmax + 6*zminmax - 4*zxminmin - 2*zxmaxmin + 2*zxmaxmax + 4*zxminmax - 3*zyminmin + 3*zymaxmin + 3*zymaxmax - 3*zyminmax - 2*zxyminmin - zxymaxmin - zxymaxmax - 2*zxyminmax; + *z_p += 3*v*t2*u2; + v = 2*zyminmin - 2*zymaxmin + zxyminmin + zxymaxmin; + *z_p += v*t3*u0; + v = -6*zminmin + 6*zmaxmin - 6*zmaxmax + 6*zminmax - 3*zxminmin - 3*zxmaxmin + 3*zxmaxmax + 3*zxminmax - 4*zyminmin + 4*zymaxmin + 2*zymaxmax - 2*zyminmax - 2*zxyminmin - 2*zxymaxmin - zxymaxmax - zxyminmax; + *z_p += 2*v*t3*u1; + v = 4*zminmin - 4*zmaxmin + 4*zmaxmax - 4*zminmax + 2*zxminmin + 2*zxmaxmin - 2*zxmaxmax - 2*zxminmax + 2*zyminmin - 2*zymaxmin - 2*zymaxmax + 2*zyminmax + zxyminmin + zxymaxmin + zxymaxmax + zxyminmax; + *z_p += 3*v*t3*u2; + *z_p *= du; + + return GSL_SUCCESS; +} + +static int +bicubic_deriv_xx(const void * vstate, const double xarr[], const double yarr[], + const double zarr[], size_t xsize, size_t ysize, + double x, double y, + gsl_interp_accel * xa, gsl_interp_accel * ya, double * z_pp) +{ + bicubic_state_t *state = (bicubic_state_t *) vstate; + + double xmin, xmax, ymin, ymax; + double zminmin, zminmax, zmaxmin, zmaxmax; + double zxminmin, zxminmax, zxmaxmin, zxmaxmax; + double zyminmin, zyminmax, zymaxmin, zymaxmax; + double zxyminmin, zxyminmax, zxymaxmin, zxymaxmax; + + double dx, dy; /* size of the grid cell */ + double dt, du; + + /* + * t and u are the positions within the grid cell at which we are computing + * the interpolation, in units of grid cell size + */ + double t, u; + double t0, t1, u0, u1, u2, u3; + double v; + size_t xi, yi; + + /* first compute the indices into the data arrays where we are interpolating */ + if (xa != NULL) + xi = gsl_interp_accel_find(xa, xarr, xsize, x); + else + xi = gsl_interp_bsearch(xarr, x, 0, xsize - 1); + + if (ya != NULL) + yi = gsl_interp_accel_find(ya, yarr, ysize, y); + else + yi = gsl_interp_bsearch(yarr, y, 0, ysize - 1); + + /* find the minimum and maximum values on the grid cell in each dimension */ + xmin = xarr[xi]; + xmax = xarr[xi + 1]; + ymin = yarr[yi]; + ymax = yarr[yi + 1]; + zminmin = zarr[IDX2D(xi, yi, state)]; + zminmax = zarr[IDX2D(xi, yi + 1, state)]; + zmaxmin = zarr[IDX2D(xi + 1, yi, state)]; + zmaxmax = zarr[IDX2D(xi + 1, yi + 1, state)]; + + /* get the width and height of the grid cell */ + dx = xmax - xmin; + dy = ymax - ymin; + t = (x - xmin)/dx; + u = (y - ymin)/dy; + dt = 1./dx; /* partial t / partial x */ + du = 1./dy; /* partial u / partial y */ + + zxminmin = state->zx[IDX2D(xi, yi, state)]/dt; + zxminmax = state->zx[IDX2D(xi, yi + 1, state)]/dt; + zxmaxmin = state->zx[IDX2D(xi + 1, yi, state)]/dt; + zxmaxmax = state->zx[IDX2D(xi + 1, yi + 1, state)]/dt; + zyminmin = state->zy[IDX2D(xi, yi, state)]/du; + zyminmax = state->zy[IDX2D(xi, yi + 1, state)]/du; + zymaxmin = state->zy[IDX2D(xi + 1, yi, state)]/du; + zymaxmax = state->zy[IDX2D(xi + 1, yi + 1, state)]/du; + zxyminmin = state->zxy[IDX2D(xi, yi, state)]/(dt*du); + zxyminmax = state->zxy[IDX2D(xi, yi + 1, state)]/(dt*du); + zxymaxmin = state->zxy[IDX2D(xi + 1, yi, state)]/(dt*du); + zxymaxmax = state->zxy[IDX2D(xi + 1, yi + 1, state)]/(dt*du); + + t0 = 1; + t1 = t; + u0 = 1; + u1 = u; + u2 = u*u; + u3 = u*u2; + + *z_pp = 0; + v = -3*zminmin + 3*zmaxmin - 2*zxminmin - zxmaxmin; + *z_pp += 2*v*t0*u0; + v = -3*zyminmin + 3*zymaxmin - 2*zxyminmin - zxymaxmin; + *z_pp += 2*v*t0*u1; + v = 9*zminmin - 9*zmaxmin + 9*zmaxmax - 9*zminmax + 6*zxminmin + 3*zxmaxmin - 3*zxmaxmax - 6*zxminmax + 6*zyminmin - 6*zymaxmin - 3*zymaxmax + 3*zyminmax + 4*zxyminmin + 2*zxymaxmin + zxymaxmax + 2*zxyminmax; + *z_pp += 2*v*t0*u2; + v = -6*zminmin + 6*zmaxmin - 6*zmaxmax + 6*zminmax - 4*zxminmin - 2*zxmaxmin + 2*zxmaxmax + 4*zxminmax - 3*zyminmin + 3*zymaxmin + 3*zymaxmax - 3*zyminmax - 2*zxyminmin - zxymaxmin - zxymaxmax - 2*zxyminmax; + *z_pp += 2*v*t0*u3; + v = 2*zminmin - 2*zmaxmin + zxminmin + zxmaxmin; + *z_pp += 6*v*t1*u0; + v = 2*zyminmin - 2*zymaxmin + zxyminmin + zxymaxmin; + *z_pp += 6*v*t1*u1; + v = -6*zminmin + 6*zmaxmin - 6*zmaxmax + 6*zminmax - 3*zxminmin - 3*zxmaxmin + 3*zxmaxmax + 3*zxminmax - 4*zyminmin + 4*zymaxmin + 2*zymaxmax - 2*zyminmax - 2*zxyminmin - 2*zxymaxmin - zxymaxmax - zxyminmax; + *z_pp += 6*v*t1*u2; + v = 4*zminmin - 4*zmaxmin + 4*zmaxmax - 4*zminmax + 2*zxminmin + 2*zxmaxmin - 2*zxmaxmax - 2*zxminmax + 2*zyminmin - 2*zymaxmin - 2*zymaxmax + 2*zyminmax + zxyminmin + zxymaxmin + zxymaxmax + zxyminmax; + *z_pp += 6*v*t1*u3; + *z_pp *= dt*dt; + + return GSL_SUCCESS; +} + +static int +bicubic_deriv_xy(const void * vstate, const double xarr[], const double yarr[], + const double zarr[], size_t xsize, size_t ysize, + double x, double y, + gsl_interp_accel * xa, gsl_interp_accel * ya, double * z_pp) +{ + bicubic_state_t *state = (bicubic_state_t *) vstate; + + double xmin, xmax, ymin, ymax; + double zminmin, zminmax, zmaxmin, zmaxmax; + double zxminmin, zxminmax, zxmaxmin, zxmaxmax; + double zyminmin, zyminmax, zymaxmin, zymaxmax; + double zxyminmin, zxyminmax, zxymaxmin, zxymaxmax; + + double dx, dy; /* size of the grid cell */ + double dt, du; + + /* + * t and u are the positions within the grid cell at which we are computing + * the interpolation, in units of grid cell size + */ + double t, u; + double t0, t1, t2, u0, u1, u2; + double v; + size_t xi, yi; + + /* first compute the indices into the data arrays where we are interpolating */ + if (xa != NULL) + xi = gsl_interp_accel_find(xa, xarr, xsize, x); + else + xi = gsl_interp_bsearch(xarr, x, 0, xsize - 1); + + if (ya != NULL) + yi = gsl_interp_accel_find(ya, yarr, ysize, y); + else + yi = gsl_interp_bsearch(yarr, y, 0, ysize - 1); + + /* find the minimum and maximum values on the grid cell in each dimension */ + xmin = xarr[xi]; + xmax = xarr[xi + 1]; + ymin = yarr[yi]; + ymax = yarr[yi + 1]; + zminmin = zarr[IDX2D(xi, yi, state)]; + zminmax = zarr[IDX2D(xi, yi + 1, state)]; + zmaxmin = zarr[IDX2D(xi + 1, yi, state)]; + zmaxmax = zarr[IDX2D(xi + 1, yi + 1, state)]; + + /* get the width and height of the grid cell */ + dx = xmax - xmin; + dy = ymax - ymin; + t = (x - xmin)/dx; + u = (y - ymin)/dy; + dt = 1./dx; /* partial t / partial x */ + du = 1./dy; /* partial u / partial y */ + + zxminmin = state->zx[IDX2D(xi, yi, state)]/dt; + zxminmax = state->zx[IDX2D(xi, yi + 1, state)]/dt; + zxmaxmin = state->zx[IDX2D(xi + 1, yi, state)]/dt; + zxmaxmax = state->zx[IDX2D(xi + 1, yi + 1, state)]/dt; + zyminmin = state->zy[IDX2D(xi, yi, state)]/du; + zyminmax = state->zy[IDX2D(xi, yi + 1, state)]/du; + zymaxmin = state->zy[IDX2D(xi + 1, yi, state)]/du; + zymaxmax = state->zy[IDX2D(xi + 1, yi + 1, state)]/du; + zxyminmin = state->zxy[IDX2D(xi, yi, state)]/(dt*du); + zxyminmax = state->zxy[IDX2D(xi, yi + 1, state)]/(dt*du); + zxymaxmin = state->zxy[IDX2D(xi + 1, yi, state)]/(dt*du); + zxymaxmax = state->zxy[IDX2D(xi + 1, yi + 1, state)]/(dt*du); + + t0 = 1; + t1 = t; + t2 = t*t; + u0 = 1; + u1 = u; + u2 = u*u; + + *z_pp = 0; + v = zxyminmin; + *z_pp += v*t0*u0; + v = -3*zxminmin + 3*zxminmax - 2*zxyminmin - zxyminmax; + *z_pp += 2*v*t0*u1; + v = 2*zxminmin - 2*zxminmax + zxyminmin + zxyminmax; + *z_pp += 3*v*t0*u2; + v = -3*zyminmin + 3*zymaxmin - 2*zxyminmin - zxymaxmin; + *z_pp += 2*v*t1*u0; + v = 9*zminmin - 9*zmaxmin + 9*zmaxmax - 9*zminmax + 6*zxminmin + 3*zxmaxmin - 3*zxmaxmax - 6*zxminmax + 6*zyminmin - 6*zymaxmin - 3*zymaxmax + 3*zyminmax + 4*zxyminmin + 2*zxymaxmin + zxymaxmax + 2*zxyminmax; + *z_pp += 4*v*t1*u1; + v = -6*zminmin + 6*zmaxmin - 6*zmaxmax + 6*zminmax - 4*zxminmin - 2*zxmaxmin + 2*zxmaxmax + 4*zxminmax - 3*zyminmin + 3*zymaxmin + 3*zymaxmax - 3*zyminmax - 2*zxyminmin - zxymaxmin - zxymaxmax - 2*zxyminmax; + *z_pp += 6*v*t1*u2; + v = 2*zyminmin - 2*zymaxmin + zxyminmin + zxymaxmin; + *z_pp += 3*v*t2*u0; + v = -6*zminmin + 6*zmaxmin - 6*zmaxmax + 6*zminmax - 3*zxminmin - 3*zxmaxmin + 3*zxmaxmax + 3*zxminmax - 4*zyminmin + 4*zymaxmin + 2*zymaxmax - 2*zyminmax - 2*zxyminmin - 2*zxymaxmin - zxymaxmax - zxyminmax; + *z_pp += 6*v*t2*u1; + v = 4*zminmin - 4*zmaxmin + 4*zmaxmax - 4*zminmax + 2*zxminmin + 2*zxmaxmin - 2*zxmaxmax - 2*zxminmax + 2*zyminmin - 2*zymaxmin - 2*zymaxmax + 2*zyminmax + zxyminmin + zxymaxmin + zxymaxmax + zxyminmax; + *z_pp += 9*v*t2*u2; + *z_pp *= dt*du; + + return GSL_SUCCESS; +} + +static int +bicubic_deriv_yy(const void * vstate, const double xarr[], const double yarr[], + const double zarr[], size_t xsize, size_t ysize, + double x, double y, + gsl_interp_accel * xa, gsl_interp_accel * ya, double * z_pp) +{ + bicubic_state_t *state = (bicubic_state_t *) vstate; + + double xmin, xmax, ymin, ymax; + double zminmin, zminmax, zmaxmin, zmaxmax; + double zxminmin, zxminmax, zxmaxmin, zxmaxmax; + double zyminmin, zyminmax, zymaxmin, zymaxmax; + double zxyminmin, zxyminmax, zxymaxmin, zxymaxmax; + + double dx, dy; /* size of the grid cell */ + double dt, du; + + /* + * t and u are the positions within the grid cell at which we are computing + * the interpolation, in units of grid cell size + */ + double t, u; + double t0, t1, t2, t3, u0, u1; + double v; + size_t xi, yi; + + /* first compute the indices into the data arrays where we are interpolating */ + if (xa != NULL) + xi = gsl_interp_accel_find(xa, xarr, xsize, x); + else + xi = gsl_interp_bsearch(xarr, x, 0, xsize - 1); + + if (ya != NULL) + yi = gsl_interp_accel_find(ya, yarr, ysize, y); + else + yi = gsl_interp_bsearch(yarr, y, 0, ysize - 1); + + /* find the minimum and maximum values on the grid cell in each dimension */ + xmin = xarr[xi]; + xmax = xarr[xi + 1]; + ymin = yarr[yi]; + ymax = yarr[yi + 1]; + zminmin = zarr[IDX2D(xi, yi, state)]; + zminmax = zarr[IDX2D(xi, yi + 1, state)]; + zmaxmin = zarr[IDX2D(xi + 1, yi, state)]; + zmaxmax = zarr[IDX2D(xi + 1, yi + 1, state)]; + + /* get the width and height of the grid cell */ + dx = xmax - xmin; + dy = ymax - ymin; + t = (x - xmin)/dx; + u = (y - ymin)/dy; + dt = 1./dx; /* partial t / partial x */ + du = 1./dy; /* partial u / partial y */ + + zxminmin = state->zx[IDX2D(xi, yi, state)]/dt; + zxminmax = state->zx[IDX2D(xi, yi + 1, state)]/dt; + zxmaxmin = state->zx[IDX2D(xi + 1, yi, state)]/dt; + zxmaxmax = state->zx[IDX2D(xi + 1, yi + 1, state)]/dt; + zyminmin = state->zy[IDX2D(xi, yi, state)]/du; + zyminmax = state->zy[IDX2D(xi, yi + 1, state)]/du; + zymaxmin = state->zy[IDX2D(xi + 1, yi, state)]/du; + zymaxmax = state->zy[IDX2D(xi + 1, yi + 1, state)]/du; + zxyminmin = state->zxy[IDX2D(xi, yi, state)]/(dt*du); + zxyminmax = state->zxy[IDX2D(xi, yi + 1, state)]/(dt*du); + zxymaxmin = state->zxy[IDX2D(xi + 1, yi, state)]/(dt*du); + zxymaxmax = state->zxy[IDX2D(xi + 1, yi + 1, state)]/(dt*du); + + t0 = 1; + t1 = t; + t2 = t*t; + t3 = t*t2; + u0 = 1; + u1 = u; + + *z_pp = 0; + v = -3*zminmin + 3*zminmax - 2*zyminmin - zyminmax; + *z_pp += 2*v*t0*u0; + v = 2*zminmin-2*zminmax + zyminmin + zyminmax; + *z_pp += 6*v*t0*u1; + v = -3*zxminmin + 3*zxminmax - 2*zxyminmin - zxyminmax; + *z_pp += 2*v*t1*u0; + v = 2*zxminmin - 2*zxminmax + zxyminmin + zxyminmax; + *z_pp += 6*v*t1*u1; + v = 9*zminmin - 9*zmaxmin + 9*zmaxmax - 9*zminmax + 6*zxminmin + 3*zxmaxmin - 3*zxmaxmax - 6*zxminmax + 6*zyminmin - 6*zymaxmin - 3*zymaxmax + 3*zyminmax + 4*zxyminmin + 2*zxymaxmin + zxymaxmax + 2*zxyminmax; + *z_pp += 2*v*t2*u0; + v = -6*zminmin + 6*zmaxmin - 6*zmaxmax + 6*zminmax - 4*zxminmin - 2*zxmaxmin + 2*zxmaxmax + 4*zxminmax - 3*zyminmin + 3*zymaxmin + 3*zymaxmax - 3*zyminmax - 2*zxyminmin - zxymaxmin - zxymaxmax - 2*zxyminmax; + *z_pp += 6*v*t2*u1; + v = -6*zminmin + 6*zmaxmin - 6*zmaxmax + 6*zminmax - 3*zxminmin - 3*zxmaxmin + 3*zxmaxmax + 3*zxminmax - 4*zyminmin + 4*zymaxmin + 2*zymaxmax - 2*zyminmax - 2*zxyminmin - 2*zxymaxmin - zxymaxmax - zxyminmax; + *z_pp += 2*v*t3*u0; + v = 4*zminmin - 4*zmaxmin + 4*zmaxmax - 4*zminmax + 2*zxminmin + 2*zxmaxmin - 2*zxmaxmax - 2*zxminmax + 2*zyminmin - 2*zymaxmin - 2*zymaxmax + 2*zyminmax + zxyminmin + zxymaxmin + zxymaxmax + zxyminmax; + *z_pp += 6*v*t3*u1; + *z_pp *= du*du; + + return GSL_SUCCESS; +} + +static const gsl_interp2d_type bicubic_type = { + "bicubic", + 4, + &bicubic_alloc, + &bicubic_init, + &bicubic_eval, + &bicubic_deriv_x, + &bicubic_deriv_y, + &bicubic_deriv_xx, + &bicubic_deriv_xy, + &bicubic_deriv_yy, + &bicubic_free +}; + +const gsl_interp2d_type * gsl_interp2d_bicubic = &bicubic_type; + +#undef IDX2D diff --git a/gsl-2.5/interpolation/bicubic.lo b/gsl-2.5/interpolation/bicubic.lo new file mode 100644 index 00000000..52f081bc --- /dev/null +++ b/gsl-2.5/interpolation/bicubic.lo @@ -0,0 +1,12 @@ +# bicubic.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/bicubic.o' + +# Name of the non-PIC object +non_pic_object='bicubic.o' + diff --git a/gsl-2.5/interpolation/bilinear.c b/gsl-2.5/interpolation/bilinear.c new file mode 100644 index 00000000..d6206cd8 --- /dev/null +++ b/gsl-2.5/interpolation/bilinear.c @@ -0,0 +1,212 @@ +/* interpolation/bilinear.c + * + * Copyright 2012 David Zaslavsky + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include + +#define IDX2D(i, j, xsize, ysize) ((j) * (xsize) + (i)) + +static int +bilinear_init(void * state, const double xa[], const double ya[], + const double za[], size_t xsize, size_t ysize) +{ + return GSL_SUCCESS; +} + +static int +bilinear_eval(const void * state, const double xarr[], const double yarr[], + const double zarr[], size_t xsize, size_t ysize, + double x, double y, gsl_interp_accel * xa, + gsl_interp_accel * ya, double * z) +{ + double xmin, xmax, ymin, ymax, zminmin, zminmax, zmaxmin, zmaxmax; + double dx, dy; + double t, u; + size_t xi, yi; + + if (xa != NULL) + xi = gsl_interp_accel_find(xa, xarr, xsize, x); + else + xi = gsl_interp_bsearch(xarr, x, 0, xsize - 1); + + if (ya != NULL) + yi = gsl_interp_accel_find(ya, yarr, ysize, y); + else + yi = gsl_interp_bsearch(yarr, y, 0, ysize - 1); + + xmin = xarr[xi]; + xmax = xarr[xi + 1]; + ymin = yarr[yi]; + ymax = yarr[yi + 1]; + zminmin = zarr[IDX2D(xi, yi, xsize, ysize)]; + zminmax = zarr[IDX2D(xi, yi + 1, xsize, ysize)]; + zmaxmin = zarr[IDX2D(xi + 1, yi, xsize, ysize)]; + zmaxmax = zarr[IDX2D(xi + 1, yi + 1, xsize, ysize)]; + dx = xmax - xmin; + dy = ymax - ymin; + t = (x - xmin)/dx; + u = (y - ymin)/dy; + *z = (1.-t)*(1.-u)*zminmin + t*(1.-u)*zmaxmin + (1.-t)*u*zminmax + t*u*zmaxmax; + + return GSL_SUCCESS; +} + +static int +bilinear_deriv_x(const void * state, const double xarr[], + const double yarr[], const double zarr[], + size_t xsize, size_t ysize, double x, double y, + gsl_interp_accel * xa, gsl_interp_accel * ya, double * z_p) +{ + double xmin, xmax, ymin, ymax, zminmin, zminmax, zmaxmin, zmaxmax; + double dx, dy; + double dt, u; + size_t xi, yi; + + if (xa != NULL) + xi = gsl_interp_accel_find(xa, xarr, xsize, x); + else + xi = gsl_interp_bsearch(xarr, x, 0, xsize - 1); + + if (ya != NULL) + yi = gsl_interp_accel_find(ya, yarr, ysize, y); + else + yi = gsl_interp_bsearch(yarr, y, 0, ysize - 1); + + xmin = xarr[xi]; + xmax = xarr[xi + 1]; + ymin = yarr[yi]; + ymax = yarr[yi + 1]; + zminmin = zarr[IDX2D(xi, yi, xsize, ysize)]; + zminmax = zarr[IDX2D(xi, yi + 1, xsize, ysize)]; + zmaxmin = zarr[IDX2D(xi + 1, yi, xsize, ysize)]; + zmaxmax = zarr[IDX2D(xi + 1, yi + 1, xsize, ysize)]; + dx = xmax - xmin; + dy = ymax - ymin; + dt = 1./dx; /* partial t / partial x */ + u = (y - ymin)/dy; + *z_p = dt*(-(1.-u)*zminmin + (1.-u)*zmaxmin - u*zminmax + u*zmaxmax); + + return GSL_SUCCESS; +} + +static int +bilinear_deriv_y(const void * state, const double xarr[], + const double yarr[], const double zarr[], + size_t xsize, size_t ysize, double x, double y, + gsl_interp_accel * xa, gsl_interp_accel * ya, double * z_p) +{ + double xmin, xmax, ymin, ymax, zminmin, zminmax, zmaxmin, zmaxmax; + double dx, dy; + double t, du; + size_t xi, yi; + + if (xa != NULL) + xi = gsl_interp_accel_find(xa, xarr, xsize, x); + else + xi = gsl_interp_bsearch(xarr, x, 0, xsize - 1); + + if (ya != NULL) + yi = gsl_interp_accel_find(ya, yarr, ysize, y); + else + yi = gsl_interp_bsearch(yarr, y, 0, ysize - 1); + + xmin = xarr[xi]; + xmax = xarr[xi + 1]; + ymin = yarr[yi]; + ymax = yarr[yi + 1]; + zminmin = zarr[IDX2D(xi, yi, xsize, ysize)]; + zminmax = zarr[IDX2D(xi, yi + 1, xsize, ysize)]; + zmaxmin = zarr[IDX2D(xi + 1, yi, xsize, ysize)]; + zmaxmax = zarr[IDX2D(xi + 1, yi + 1, xsize, ysize)]; + dx = xmax - xmin; + dy = ymax - ymin; + t = (x - xmin)/dx; + du = 1./dy; /* partial u / partial y */ + *z_p = du*(-(1.-t)*zminmin - t*zmaxmin + (1.-t)*zminmax + t*zmaxmax); + + return GSL_SUCCESS; +} + +static int +bilinear_deriv2(const void * state, const double xarr[], + const double yarr[], const double zarr[], + size_t xsize, size_t ysize, double x, double y, + gsl_interp_accel * xa, gsl_interp_accel * ya, double * z_pp) +{ + *z_pp = 0.0; + return GSL_SUCCESS; +} + +static int +bilinear_derivxy(const void * state, const double xarr[], + const double yarr[], const double zarr[], + size_t xsize, size_t ysize, double x, double y, + gsl_interp_accel * xa, gsl_interp_accel * ya, double * z_pp) +{ + double xmin, xmax, ymin, ymax, zminmin, zminmax, zmaxmin, zmaxmax; + double dx, dy; + double dt, du; + size_t xi, yi; + + if (xa != NULL) + xi = gsl_interp_accel_find(xa, xarr, xsize, x); + else + xi = gsl_interp_bsearch(xarr, x, 0, xsize - 1); + + if (ya != NULL) + yi = gsl_interp_accel_find(ya, yarr, ysize, y); + else + yi = gsl_interp_bsearch(yarr, y, 0, ysize - 1); + + xmin = xarr[xi]; + xmax = xarr[xi + 1]; + ymin = yarr[yi]; + ymax = yarr[yi + 1]; + zminmin = zarr[IDX2D(xi, yi, xsize, ysize)]; + zminmax = zarr[IDX2D(xi, yi + 1, xsize, ysize)]; + zmaxmin = zarr[IDX2D(xi + 1, yi, xsize, ysize)]; + zmaxmax = zarr[IDX2D(xi + 1, yi + 1, xsize, ysize)]; + dx = xmax - xmin; + dy = ymax - ymin; + dt = 1./dx; /* partial t / partial x */ + du = 1./dy; /* partial u / partial y */ + *z_pp = dt*du*(zminmin-zmaxmin-zminmax+zmaxmax); + + return GSL_SUCCESS; +} + +static const gsl_interp2d_type bilinear_type = { + "bilinear", + 2, + NULL, + &bilinear_init, + &bilinear_eval, + &bilinear_deriv_x, + &bilinear_deriv_y, + &bilinear_deriv2, + &bilinear_derivxy, + &bilinear_deriv2, + NULL +}; + +const gsl_interp2d_type * gsl_interp2d_bilinear = &bilinear_type; + +#undef IDX2D diff --git a/gsl-2.5/interpolation/bilinear.lo b/gsl-2.5/interpolation/bilinear.lo new file mode 100644 index 00000000..0b08e5b7 --- /dev/null +++ b/gsl-2.5/interpolation/bilinear.lo @@ -0,0 +1,12 @@ +# bilinear.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/bilinear.o' + +# Name of the non-PIC object +non_pic_object='bilinear.o' + diff --git a/gsl-2.5/interpolation/cspline.c b/gsl-2.5/interpolation/cspline.c new file mode 100644 index 00000000..37c73d4a --- /dev/null +++ b/gsl-2.5/interpolation/cspline.c @@ -0,0 +1,475 @@ +/* interpolation/cspline.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2004 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman + */ +#include +#include +#include +#include +#include +#include "integ_eval.h" +#include + +typedef struct +{ + double * c; + double * g; + double * diag; + double * offdiag; +} cspline_state_t; + + +/* common initialization */ +static void * +cspline_alloc (size_t size) +{ + cspline_state_t * state = (cspline_state_t *) malloc (sizeof (cspline_state_t)); + + if (state == NULL) + { + GSL_ERROR_NULL("failed to allocate space for state", GSL_ENOMEM); + } + + state->c = (double *) malloc (size * sizeof (double)); + + if (state->c == NULL) + { + free (state); + GSL_ERROR_NULL("failed to allocate space for c", GSL_ENOMEM); + } + + state->g = (double *) malloc (size * sizeof (double)); + + if (state->g == NULL) + { + free (state->c); + free (state); + GSL_ERROR_NULL("failed to allocate space for g", GSL_ENOMEM); + } + + state->diag = (double *) malloc (size * sizeof (double)); + + if (state->diag == NULL) + { + free (state->g); + free (state->c); + free (state); + GSL_ERROR_NULL("failed to allocate space for diag", GSL_ENOMEM); + } + + state->offdiag = (double *) malloc (size * sizeof (double)); + + if (state->offdiag == NULL) + { + free (state->diag); + free (state->g); + free (state->c); + free (state); + GSL_ERROR_NULL("failed to allocate space for offdiag", GSL_ENOMEM); + } + + return state; +} + + +/* natural spline calculation + * see [Engeln-Mullges + Uhlig, p. 254] + */ +static int +cspline_init (void * vstate, const double xa[], const double ya[], + size_t size) +{ + cspline_state_t *state = (cspline_state_t *) vstate; + + size_t i; + size_t num_points = size; + size_t max_index = num_points - 1; /* Engeln-Mullges + Uhlig "n" */ + size_t sys_size = max_index - 1; /* linear system is sys_size x sys_size */ + + state->c[0] = 0.0; + state->c[max_index] = 0.0; + + for (i = 0; i < sys_size; i++) + { + const double h_i = xa[i + 1] - xa[i]; + const double h_ip1 = xa[i + 2] - xa[i + 1]; + const double ydiff_i = ya[i + 1] - ya[i]; + const double ydiff_ip1 = ya[i + 2] - ya[i + 1]; + const double g_i = (h_i != 0.0) ? 1.0 / h_i : 0.0; + const double g_ip1 = (h_ip1 != 0.0) ? 1.0 / h_ip1 : 0.0; + state->offdiag[i] = h_ip1; + state->diag[i] = 2.0 * (h_ip1 + h_i); + state->g[i] = 3.0 * (ydiff_ip1 * g_ip1 - ydiff_i * g_i); + } + + if (sys_size == 1) + { + state->c[1] = state->g[0] / state->diag[0]; + return GSL_SUCCESS; + } + else + { + gsl_vector_view g_vec = gsl_vector_view_array(state->g, sys_size); + gsl_vector_view diag_vec = gsl_vector_view_array(state->diag, sys_size); + gsl_vector_view offdiag_vec = gsl_vector_view_array(state->offdiag, sys_size - 1); + gsl_vector_view solution_vec = gsl_vector_view_array ((state->c) + 1, sys_size); + + int status = gsl_linalg_solve_symm_tridiag(&diag_vec.vector, + &offdiag_vec.vector, + &g_vec.vector, + &solution_vec.vector); + return status; + } +} + + +/* periodic spline calculation + * see [Engeln-Mullges + Uhlig, p. 256] + */ +static int +cspline_init_periodic (void * vstate, const double xa[], const double ya[], + size_t size) +{ + cspline_state_t *state = (cspline_state_t *) vstate; + + size_t i; + size_t num_points = size; + size_t max_index = num_points - 1; /* Engeln-Mullges + Uhlig "n" */ + size_t sys_size = max_index; /* linear system is sys_size x sys_size */ + + if (sys_size == 2) { + /* solve 2x2 system */ + + const double h0 = xa[1] - xa[0]; + const double h1 = xa[2] - xa[1]; + + const double A = 2.0*(h0 + h1); + const double B = h0 + h1; + double g[2]; + double det; + + g[0] = 3.0 * ((ya[2] - ya[1]) / h1 - (ya[1] - ya[0]) / h0); + g[1] = 3.0 * ((ya[1] - ya[2]) / h0 - (ya[2] - ya[1]) / h1); + + det = 3.0 * (h0 + h1) * (h0 + h1); + state->c[1] = ( A * g[0] - B * g[1])/det; + state->c[2] = (-B * g[0] + A * g[1])/det; + state->c[0] = state->c[2]; + + return GSL_SUCCESS; + } else { + + for (i = 0; i < sys_size-1; i++) { + const double h_i = xa[i + 1] - xa[i]; + const double h_ip1 = xa[i + 2] - xa[i + 1]; + const double ydiff_i = ya[i + 1] - ya[i]; + const double ydiff_ip1 = ya[i + 2] - ya[i + 1]; + const double g_i = (h_i != 0.0) ? 1.0 / h_i : 0.0; + const double g_ip1 = (h_ip1 != 0.0) ? 1.0 / h_ip1 : 0.0; + state->offdiag[i] = h_ip1; + state->diag[i] = 2.0 * (h_ip1 + h_i); + state->g[i] = 3.0 * (ydiff_ip1 * g_ip1 - ydiff_i * g_i); + } + + i = sys_size - 1; + + { + const double h_i = xa[i + 1] - xa[i]; + const double h_ip1 = xa[1] - xa[0]; + const double ydiff_i = ya[i + 1] - ya[i]; + const double ydiff_ip1 = ya[1] - ya[0]; + const double g_i = (h_i != 0.0) ? 1.0 / h_i : 0.0; + const double g_ip1 = (h_ip1 != 0.0) ? 1.0 / h_ip1 : 0.0; + state->offdiag[i] = h_ip1; + state->diag[i] = 2.0 * (h_ip1 + h_i); + state->g[i] = 3.0 * (ydiff_ip1 * g_ip1 - ydiff_i * g_i); + } + + { + gsl_vector_view g_vec = gsl_vector_view_array(state->g, sys_size); + gsl_vector_view diag_vec = gsl_vector_view_array(state->diag, sys_size); + gsl_vector_view offdiag_vec = gsl_vector_view_array(state->offdiag, sys_size); + gsl_vector_view solution_vec = gsl_vector_view_array ((state->c) + 1, sys_size); + + int status = gsl_linalg_solve_symm_cyc_tridiag(&diag_vec.vector, + &offdiag_vec.vector, + &g_vec.vector, + &solution_vec.vector); + state->c[0] = state->c[max_index]; + + return status; + } + } +} + + +static +void +cspline_free (void * vstate) +{ + cspline_state_t *state = (cspline_state_t *) vstate; + + free (state->c); + free (state->g); + free (state->diag); + free (state->offdiag); + free (state); +} + +/* function for common coefficient determination + */ +static inline void +coeff_calc (const double c_array[], double dy, double dx, size_t index, + double * b, double * c, double * d) +{ + const double c_i = c_array[index]; + const double c_ip1 = c_array[index + 1]; + *b = (dy / dx) - dx * (c_ip1 + 2.0 * c_i) / 3.0; + *c = c_i; + *d = (c_ip1 - c_i) / (3.0 * dx); +} + + +static +int +cspline_eval (const void * vstate, + const double x_array[], const double y_array[], size_t size, + double x, + gsl_interp_accel * a, + double *y) +{ + const cspline_state_t *state = (const cspline_state_t *) vstate; + + double x_lo, x_hi; + double dx; + size_t index; + + if (a != 0) + { + index = gsl_interp_accel_find (a, x_array, size, x); + } + else + { + index = gsl_interp_bsearch (x_array, x, 0, size - 1); + } + + /* evaluate */ + x_hi = x_array[index + 1]; + x_lo = x_array[index]; + dx = x_hi - x_lo; + if (dx > 0.0) + { + const double y_lo = y_array[index]; + const double y_hi = y_array[index + 1]; + const double dy = y_hi - y_lo; + double delx = x - x_lo; + double b_i, c_i, d_i; + coeff_calc(state->c, dy, dx, index, &b_i, &c_i, &d_i); + *y = y_lo + delx * (b_i + delx * (c_i + delx * d_i)); + return GSL_SUCCESS; + } + else + { + *y = 0.0; + return GSL_EINVAL; + } +} + + +static +int +cspline_eval_deriv (const void * vstate, + const double x_array[], const double y_array[], size_t size, + double x, + gsl_interp_accel * a, + double *dydx) +{ + const cspline_state_t *state = (const cspline_state_t *) vstate; + + double x_lo, x_hi; + double dx; + size_t index; + + if (a != 0) + { + index = gsl_interp_accel_find (a, x_array, size, x); + } + else + { + index = gsl_interp_bsearch (x_array, x, 0, size - 1); + } + + /* evaluate */ + x_hi = x_array[index + 1]; + x_lo = x_array[index]; + dx = x_hi - x_lo; + if (dx > 0.0) + { + const double y_lo = y_array[index]; + const double y_hi = y_array[index + 1]; + const double dy = y_hi - y_lo; + double delx = x - x_lo; + double b_i, c_i, d_i; + coeff_calc(state->c, dy, dx, index, &b_i, &c_i, &d_i); + *dydx = b_i + delx * (2.0 * c_i + 3.0 * d_i * delx); + return GSL_SUCCESS; + } + else + { + *dydx = 0.0; + return GSL_EINVAL; + } +} + + +static +int +cspline_eval_deriv2 (const void * vstate, + const double x_array[], const double y_array[], size_t size, + double x, + gsl_interp_accel * a, + double * y_pp) +{ + const cspline_state_t *state = (const cspline_state_t *) vstate; + + double x_lo, x_hi; + double dx; + size_t index; + + if (a != 0) + { + index = gsl_interp_accel_find (a, x_array, size, x); + } + else + { + index = gsl_interp_bsearch (x_array, x, 0, size - 1); + } + + /* evaluate */ + x_hi = x_array[index + 1]; + x_lo = x_array[index]; + dx = x_hi - x_lo; + if (dx > 0.0) + { + const double y_lo = y_array[index]; + const double y_hi = y_array[index + 1]; + const double dy = y_hi - y_lo; + double delx = x - x_lo; + double b_i, c_i, d_i; + coeff_calc(state->c, dy, dx, index, &b_i, &c_i, &d_i); + *y_pp = 2.0 * c_i + 6.0 * d_i * delx; + return GSL_SUCCESS; + } + else + { + *y_pp = 0.0; + return GSL_EINVAL; + } +} + + +static +int +cspline_eval_integ (const void * vstate, + const double x_array[], const double y_array[], size_t size, + gsl_interp_accel * acc, + double a, double b, + double * result) +{ + const cspline_state_t *state = (const cspline_state_t *) vstate; + + size_t i, index_a, index_b; + + if (acc != 0) + { + index_a = gsl_interp_accel_find (acc, x_array, size, a); + index_b = gsl_interp_accel_find (acc, x_array, size, b); + } + else + { + index_a = gsl_interp_bsearch (x_array, a, 0, size - 1); + index_b = gsl_interp_bsearch (x_array, b, 0, size - 1); + } + + *result = 0.0; + + /* interior intervals */ + for(i=index_a; i<=index_b; i++) { + const double x_hi = x_array[i + 1]; + const double x_lo = x_array[i]; + const double y_lo = y_array[i]; + const double y_hi = y_array[i + 1]; + const double dx = x_hi - x_lo; + const double dy = y_hi - y_lo; + if(dx != 0.0) { + double b_i, c_i, d_i; + coeff_calc(state->c, dy, dx, i, &b_i, &c_i, &d_i); + + if (i == index_a || i == index_b) + { + double x1 = (i == index_a) ? a : x_lo; + double x2 = (i == index_b) ? b : x_hi; + *result += integ_eval(y_lo, b_i, c_i, d_i, x_lo, x1, x2); + } + else + { + *result += dx * (y_lo + dx*(0.5*b_i + dx*(c_i/3.0 + 0.25*d_i*dx))); + } + } + else { + *result = 0.0; + return GSL_EINVAL; + } + } + + return GSL_SUCCESS; +} + +static const gsl_interp_type cspline_type = +{ + "cspline", + 3, + &cspline_alloc, + &cspline_init, + &cspline_eval, + &cspline_eval_deriv, + &cspline_eval_deriv2, + &cspline_eval_integ, + &cspline_free +}; + +const gsl_interp_type * gsl_interp_cspline = &cspline_type; + +static const gsl_interp_type cspline_periodic_type = +{ + "cspline-periodic", + 2, + &cspline_alloc, + &cspline_init_periodic, + &cspline_eval, + &cspline_eval_deriv, + &cspline_eval_deriv2, + &cspline_eval_integ, + &cspline_free +}; + +const gsl_interp_type * gsl_interp_cspline_periodic = &cspline_periodic_type; + + diff --git a/gsl-2.5/interpolation/cspline.lo b/gsl-2.5/interpolation/cspline.lo new file mode 100644 index 00000000..3ef4e2a0 --- /dev/null +++ b/gsl-2.5/interpolation/cspline.lo @@ -0,0 +1,12 @@ +# cspline.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/cspline.o' + +# Name of the non-PIC object +non_pic_object='cspline.o' + diff --git a/gsl-2.5/interpolation/gsl_interp.h b/gsl-2.5/interpolation/gsl_interp.h new file mode 100644 index 00000000..8321224a --- /dev/null +++ b/gsl-2.5/interpolation/gsl_interp.h @@ -0,0 +1,225 @@ +/* interpolation/gsl_interp.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2004 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman + */ +#ifndef __GSL_INTERP_H__ +#define __GSL_INTERP_H__ +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +/* evaluation accelerator */ +typedef struct { + size_t cache; /* cache of index */ + size_t miss_count; /* keep statistics */ + size_t hit_count; +} +gsl_interp_accel; + + +/* interpolation object type */ +typedef struct { + const char * name; + unsigned int min_size; + void * (*alloc) (size_t size); + int (*init) (void *, const double xa[], const double ya[], size_t size); + int (*eval) (const void *, const double xa[], const double ya[], size_t size, double x, gsl_interp_accel *, double * y); + int (*eval_deriv) (const void *, const double xa[], const double ya[], size_t size, double x, gsl_interp_accel *, double * y_p); + int (*eval_deriv2) (const void *, const double xa[], const double ya[], size_t size, double x, gsl_interp_accel *, double * y_pp); + int (*eval_integ) (const void *, const double xa[], const double ya[], size_t size, gsl_interp_accel *, double a, double b, double * result); + void (*free) (void *); + +} gsl_interp_type; + + +/* general interpolation object */ +typedef struct { + const gsl_interp_type * type; + double xmin; + double xmax; + size_t size; + void * state; +} gsl_interp; + + +/* available types */ +GSL_VAR const gsl_interp_type * gsl_interp_linear; +GSL_VAR const gsl_interp_type * gsl_interp_polynomial; +GSL_VAR const gsl_interp_type * gsl_interp_cspline; +GSL_VAR const gsl_interp_type * gsl_interp_cspline_periodic; +GSL_VAR const gsl_interp_type * gsl_interp_akima; +GSL_VAR const gsl_interp_type * gsl_interp_akima_periodic; +GSL_VAR const gsl_interp_type * gsl_interp_steffen; + +gsl_interp_accel * +gsl_interp_accel_alloc(void); + +int +gsl_interp_accel_reset (gsl_interp_accel * a); + +void +gsl_interp_accel_free(gsl_interp_accel * a); + +gsl_interp * +gsl_interp_alloc(const gsl_interp_type * T, size_t n); + +int +gsl_interp_init(gsl_interp * obj, const double xa[], const double ya[], size_t size); + +const char * gsl_interp_name(const gsl_interp * interp); +unsigned int gsl_interp_min_size(const gsl_interp * interp); +unsigned int gsl_interp_type_min_size(const gsl_interp_type * T); + + +int +gsl_interp_eval_e(const gsl_interp * obj, + const double xa[], const double ya[], double x, + gsl_interp_accel * a, double * y); + +double +gsl_interp_eval(const gsl_interp * obj, + const double xa[], const double ya[], double x, + gsl_interp_accel * a); + +int +gsl_interp_eval_deriv_e(const gsl_interp * obj, + const double xa[], const double ya[], double x, + gsl_interp_accel * a, + double * d); + +double +gsl_interp_eval_deriv(const gsl_interp * obj, + const double xa[], const double ya[], double x, + gsl_interp_accel * a); + +int +gsl_interp_eval_deriv2_e(const gsl_interp * obj, + const double xa[], const double ya[], double x, + gsl_interp_accel * a, + double * d2); + +double +gsl_interp_eval_deriv2(const gsl_interp * obj, + const double xa[], const double ya[], double x, + gsl_interp_accel * a); + +int +gsl_interp_eval_integ_e(const gsl_interp * obj, + const double xa[], const double ya[], + double a, double b, + gsl_interp_accel * acc, + double * result); + +double +gsl_interp_eval_integ(const gsl_interp * obj, + const double xa[], const double ya[], + double a, double b, + gsl_interp_accel * acc); + +void +gsl_interp_free(gsl_interp * interp); + +INLINE_DECL size_t +gsl_interp_bsearch(const double x_array[], double x, + size_t index_lo, size_t index_hi); + +#ifdef HAVE_INLINE + +/* Perform a binary search of an array of values. + * + * The parameters index_lo and index_hi provide an initial bracket, + * and it is assumed that index_lo < index_hi. The resulting index + * is guaranteed to be strictly less than index_hi and greater than + * or equal to index_lo, so that the implicit bracket [index, index+1] + * always corresponds to a region within the implicit value range of + * the value array. + * + * Note that this means the relationship of 'x' to x_array[index] + * and x_array[index+1] depends on the result region, i.e. the + * behaviour at the boundaries may not correspond to what you + * expect. We have the following complete specification of the + * behaviour. + * Suppose the input is x_array[] = { x0, x1, ..., xN } + * if ( x == x0 ) then index == 0 + * if ( x > x0 && x <= x1 ) then index == 0, and sim. for other interior pts + * if ( x == xN ) then index == N-1 + * if ( x > xN ) then index == N-1 + * if ( x < x0 ) then index == 0 + */ + +INLINE_FUN size_t +gsl_interp_bsearch(const double x_array[], double x, + size_t index_lo, size_t index_hi) +{ + size_t ilo = index_lo; + size_t ihi = index_hi; + while(ihi > ilo + 1) { + size_t i = (ihi + ilo)/2; + if(x_array[i] > x) + ihi = i; + else + ilo = i; + } + + return ilo; +} +#endif + +INLINE_DECL size_t +gsl_interp_accel_find(gsl_interp_accel * a, const double x_array[], size_t size, double x); + +#ifdef HAVE_INLINE +INLINE_FUN size_t +gsl_interp_accel_find(gsl_interp_accel * a, const double xa[], size_t len, double x) +{ + size_t x_index = a->cache; + + if(x < xa[x_index]) { + a->miss_count++; + a->cache = gsl_interp_bsearch(xa, x, 0, x_index); + } + else if(x >= xa[x_index + 1]) { + a->miss_count++; + a->cache = gsl_interp_bsearch(xa, x, x_index, len-1); + } + else { + a->hit_count++; + } + + return a->cache; +} +#endif /* HAVE_INLINE */ + + +__END_DECLS + +#endif /* __GSL_INTERP_H__ */ diff --git a/gsl-2.5/interpolation/gsl_interp2d.h b/gsl-2.5/interpolation/gsl_interp2d.h new file mode 100644 index 00000000..e105fa31 --- /dev/null +++ b/gsl-2.5/interpolation/gsl_interp2d.h @@ -0,0 +1,160 @@ +/* interpolation/gsl_interp2d.h + * + * Copyright 2012 David Zaslavsky + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_INTERP2D_H__ +#define __GSL_INTERP2D_H__ + +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +typedef struct { + const char* name; + unsigned int min_size; + void * (*alloc)(size_t xsize, size_t ysize); + int (*init)(void *, const double xa[], const double ya[], const double za[], size_t xsize, size_t ysize); + int (*eval)(const void *, const double xa[], const double ya[], const double za[], size_t xsize, size_t ysize, double x, double y, gsl_interp_accel*, gsl_interp_accel*, double* z); + int (*eval_deriv_x) (const void *, const double xa[], const double ya[], const double za[], size_t xsize, size_t ysize, double x, double y, gsl_interp_accel*, gsl_interp_accel*, double* z_p); + int (*eval_deriv_y) (const void *, const double xa[], const double ya[], const double za[], size_t xsize, size_t ysize, double x, double y, gsl_interp_accel*, gsl_interp_accel*, double* z_p); + int (*eval_deriv_xx) (const void *, const double xa[], const double ya[], const double za[], size_t xsize, size_t ysize, double x, double y, gsl_interp_accel*, gsl_interp_accel*, double* z_pp); + int (*eval_deriv_xy) (const void *, const double xa[], const double ya[], const double za[], size_t xsize, size_t ysize, double x, double y, gsl_interp_accel*, gsl_interp_accel*, double* z_pp); + int (*eval_deriv_yy) (const void *, const double xa[], const double ya[], const double za[], size_t xsize, size_t ysize, double x, double y, gsl_interp_accel*, gsl_interp_accel*, double* z_pp); + void (*free)(void *); +} gsl_interp2d_type; + +typedef struct { + const gsl_interp2d_type * type; /* interpolation type */ + double xmin; /* minimum value of x for which data have been provided */ + double xmax; /* maximum value of x for which data have been provided */ + double ymin; /* minimum value of y for which data have been provided */ + double ymax; /* maximum value of y for which data have been provided */ + size_t xsize; /* number of x values provided */ + size_t ysize; /* number of y values provided */ + void * state; /* internal state object specific to the interpolation type */ +} gsl_interp2d; + +/* available types */ +GSL_VAR const gsl_interp2d_type * gsl_interp2d_bilinear; +GSL_VAR const gsl_interp2d_type * gsl_interp2d_bicubic; + +gsl_interp2d * gsl_interp2d_alloc(const gsl_interp2d_type * T, const size_t xsize, + const size_t ysize); + +const char * gsl_interp2d_name(const gsl_interp2d * interp); +size_t gsl_interp2d_min_size(const gsl_interp2d * interp); +size_t gsl_interp2d_type_min_size(const gsl_interp2d_type * T); +int gsl_interp2d_set(const gsl_interp2d * interp, double zarr[], + const size_t i, const size_t j, const double z); +double gsl_interp2d_get(const gsl_interp2d * interp, const double zarr[], + const size_t i, const size_t j); +size_t gsl_interp2d_idx(const gsl_interp2d * interp, + const size_t i, const size_t j); +int gsl_interp2d_init(gsl_interp2d * interp, const double xa[], const double ya[], + const double za[], const size_t xsize, const size_t ysize); +void gsl_interp2d_free(gsl_interp2d * interp); + +double gsl_interp2d_eval(const gsl_interp2d * interp, const double xarr[], + const double yarr[], const double zarr[], const double x, + const double y, gsl_interp_accel * xa, gsl_interp_accel * ya); + +double gsl_interp2d_eval_extrap(const gsl_interp2d * interp, + const double xarr[], const double yarr[], + const double zarr[], const double x, + const double y, gsl_interp_accel * xa, + gsl_interp_accel * ya); + +int gsl_interp2d_eval_e(const gsl_interp2d * interp, const double xarr[], + const double yarr[], const double zarr[], + const double x, const double y, gsl_interp_accel* xa, + gsl_interp_accel* ya, double * z); + +int gsl_interp2d_eval_e_extrap(const gsl_interp2d * interp, + const double xarr[], + const double yarr[], + const double zarr[], + const double x, + const double y, + gsl_interp_accel * xa, + gsl_interp_accel * ya, + double * z); + +double gsl_interp2d_eval_deriv_x(const gsl_interp2d * interp, const double xarr[], + const double yarr[], const double zarr[], + const double x, const double y, gsl_interp_accel * xa, + gsl_interp_accel * ya); + +int gsl_interp2d_eval_deriv_x_e(const gsl_interp2d * interp, const double xarr[], + const double yarr[], const double zarr[], + const double x, const double y, + gsl_interp_accel * xa, gsl_interp_accel * ya, double * z); + +double gsl_interp2d_eval_deriv_y(const gsl_interp2d * interp, const double xarr[], + const double yarr[], const double zarr[], + const double x, const double y, + gsl_interp_accel* xa, gsl_interp_accel* ya); + +int gsl_interp2d_eval_deriv_y_e(const gsl_interp2d * interp, const double xarr[], + const double yarr[], const double zarr[], + const double x, const double y, + gsl_interp_accel * xa, gsl_interp_accel * ya, double * z); + +double gsl_interp2d_eval_deriv_xx(const gsl_interp2d * interp, const double xarr[], + const double yarr[], const double zarr[], + const double x, const double y, + gsl_interp_accel * xa, gsl_interp_accel * ya); + +int gsl_interp2d_eval_deriv_xx_e(const gsl_interp2d * interp, const double xarr[], + const double yarr[], const double zarr[], + const double x, const double y, + gsl_interp_accel * xa, gsl_interp_accel * ya, double * z); + +double gsl_interp2d_eval_deriv_yy(const gsl_interp2d * interp, const double xarr[], + const double yarr[], const double zarr[], + const double x, const double y, + gsl_interp_accel * xa, gsl_interp_accel * ya); + +int gsl_interp2d_eval_deriv_yy_e(const gsl_interp2d * interp, const double xarr[], + const double yarr[], const double zarr[], + const double x, const double y, + gsl_interp_accel * xa, gsl_interp_accel * ya, double * z); + +double gsl_interp2d_eval_deriv_xy(const gsl_interp2d * interp, const double xarr[], + const double yarr[], const double zarr[], + const double x, const double y, + gsl_interp_accel * xa, gsl_interp_accel * ya); + +int gsl_interp2d_eval_deriv_xy_e(const gsl_interp2d * interp, const double xarr[], + const double yarr[], const double zarr[], + const double x, const double y, + gsl_interp_accel * xa, gsl_interp_accel * ya, double * z); + + +__END_DECLS + +#endif /* __GSL_INTERP2D_H__ */ diff --git a/gsl-2.5/interpolation/gsl_spline.h b/gsl-2.5/interpolation/gsl_spline.h new file mode 100644 index 00000000..08255ca8 --- /dev/null +++ b/gsl-2.5/interpolation/gsl_spline.h @@ -0,0 +1,101 @@ +/* interpolation/gsl_spline.h + * + * Copyright (C) 2001, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_SPLINE_H__ +#define __GSL_SPLINE_H__ +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + + +/* general interpolation object */ +typedef struct { + gsl_interp * interp; + double * x; + double * y; + size_t size; +} gsl_spline; + +gsl_spline * +gsl_spline_alloc(const gsl_interp_type * T, size_t size); + +int +gsl_spline_init(gsl_spline * spline, const double xa[], const double ya[], size_t size); + +const char * gsl_spline_name(const gsl_spline * spline); +unsigned int gsl_spline_min_size(const gsl_spline * spline); + + +int +gsl_spline_eval_e(const gsl_spline * spline, double x, + gsl_interp_accel * a, double * y); + +double +gsl_spline_eval(const gsl_spline * spline, double x, gsl_interp_accel * a); + +int +gsl_spline_eval_deriv_e(const gsl_spline * spline, + double x, + gsl_interp_accel * a, + double * y); + +double +gsl_spline_eval_deriv(const gsl_spline * spline, + double x, + gsl_interp_accel * a); + +int +gsl_spline_eval_deriv2_e(const gsl_spline * spline, + double x, + gsl_interp_accel * a, + double * y); + +double +gsl_spline_eval_deriv2(const gsl_spline * spline, + double x, + gsl_interp_accel * a); + +int +gsl_spline_eval_integ_e(const gsl_spline * spline, + double a, double b, + gsl_interp_accel * acc, + double * y); + +double +gsl_spline_eval_integ(const gsl_spline * spline, + double a, double b, + gsl_interp_accel * acc); + +void +gsl_spline_free(gsl_spline * spline); + +__END_DECLS + +#endif /* __GSL_INTERP_H__ */ diff --git a/gsl-2.5/interpolation/gsl_spline2d.h b/gsl-2.5/interpolation/gsl_spline2d.h new file mode 100644 index 00000000..a3048000 --- /dev/null +++ b/gsl-2.5/interpolation/gsl_spline2d.h @@ -0,0 +1,113 @@ +/* interpolation/gsl_spline2d.h + * + * Copyright 2012 David Zaslavsky + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_SPLINE2D_H__ +#define __GSL_SPLINE2D_H__ + +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + + +/* + * A 2D interpolation object which stores the arrays defining the function. + * In all other respects, this is just like a gsl_interp2d object. + */ +typedef struct +{ + gsl_interp2d interp_object; /* low-level interpolation object */ + double * xarr; /* x data array */ + double * yarr; /* y data array */ + double * zarr; /* z data array */ +} gsl_spline2d; + +gsl_spline2d * gsl_spline2d_alloc(const gsl_interp2d_type * T, size_t xsize, size_t ysize); + +int gsl_spline2d_init(gsl_spline2d * interp, const double xa[], + const double ya[], const double za[], + size_t xsize, size_t ysize); + +void gsl_spline2d_free(gsl_spline2d * interp); + +double gsl_spline2d_eval(const gsl_spline2d * interp, const double x, + const double y, gsl_interp_accel* xa, gsl_interp_accel* ya); + +int gsl_spline2d_eval_e(const gsl_spline2d * interp, const double x, + const double y, gsl_interp_accel* xa, gsl_interp_accel* ya, + double * z); + +double gsl_spline2d_eval_deriv_x(const gsl_spline2d * interp, const double x, + const double y, gsl_interp_accel* xa, gsl_interp_accel* ya); + +int gsl_spline2d_eval_deriv_x_e(const gsl_spline2d * interp, const double x, + const double y, gsl_interp_accel* xa, + gsl_interp_accel* ya, double * z); + +double gsl_spline2d_eval_deriv_y(const gsl_spline2d * interp, const double x, + const double y, gsl_interp_accel* xa, + gsl_interp_accel* ya); + +int gsl_spline2d_eval_deriv_y_e(const gsl_spline2d * interp, const double x, + const double y, gsl_interp_accel* xa, + gsl_interp_accel* ya, double * z); + +double gsl_spline2d_eval_deriv_xx(const gsl_spline2d * interp, const double x, + const double y, gsl_interp_accel* xa, gsl_interp_accel* ya); + +int gsl_spline2d_eval_deriv_xx_e(const gsl_spline2d * interp, const double x, + const double y, gsl_interp_accel* xa, + gsl_interp_accel* ya, double * z); + +double gsl_spline2d_eval_deriv_yy(const gsl_spline2d * interp, const double x, + const double y, gsl_interp_accel* xa, gsl_interp_accel* ya); + +int gsl_spline2d_eval_deriv_yy_e(const gsl_spline2d * interp, const double x, + const double y, gsl_interp_accel* xa, + gsl_interp_accel* ya, double * z); + +double gsl_spline2d_eval_deriv_xy(const gsl_spline2d * interp, const double x, + const double y, gsl_interp_accel* xa, gsl_interp_accel* ya); + +int gsl_spline2d_eval_deriv_xy_e(const gsl_spline2d * interp, const double x, + const double y, gsl_interp_accel* xa, + gsl_interp_accel* ya, double * z); + +size_t gsl_spline2d_min_size(const gsl_spline2d * interp); + +const char * gsl_spline2d_name(const gsl_spline2d * interp); + +int gsl_spline2d_set(const gsl_spline2d * interp, double zarr[], + const size_t i, const size_t j, const double z); +double gsl_spline2d_get(const gsl_spline2d * interp, const double zarr[], + const size_t i, const size_t j); + +__END_DECLS + +#endif /* __GSL_SPLINE2D_H__ */ diff --git a/gsl-2.5/interpolation/inline.c b/gsl-2.5/interpolation/inline.c new file mode 100644 index 00000000..31110cfa --- /dev/null +++ b/gsl-2.5/interpolation/inline.c @@ -0,0 +1,30 @@ +/* interpolation/bsearch.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman + */ +#include +#include + +/* Compile all the inline functions */ + +#define COMPILE_INLINE_STATIC +#include "build.h" +#include + diff --git a/gsl-2.5/interpolation/inline.lo b/gsl-2.5/interpolation/inline.lo new file mode 100644 index 00000000..c5763370 --- /dev/null +++ b/gsl-2.5/interpolation/inline.lo @@ -0,0 +1,12 @@ +# inline.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/inline.o' + +# Name of the non-PIC object +non_pic_object='inline.o' + diff --git a/gsl-2.5/interpolation/integ_eval.h b/gsl-2.5/interpolation/integ_eval.h new file mode 100644 index 00000000..c3260e93 --- /dev/null +++ b/gsl-2.5/interpolation/integ_eval.h @@ -0,0 +1,36 @@ +/* interpolation/integ_eval_macro.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* function for doing the spline integral evaluation + which is common to both the cspline and akima methods + */ + +static inline double +integ_eval (double ai, double bi, double ci, double di, double xi, double a, + double b) +{ + const double r1 = a - xi; + const double r2 = b - xi; + const double r12 = r1 + r2; + const double bterm = 0.5 * bi * r12; + const double cterm = (1.0 / 3.0) * ci * (r1 * r1 + r2 * r2 + r1 * r2); + const double dterm = 0.25 * di * r12 * (r1 * r1 + r2 * r2); + + return (b - a) * (ai + bterm + cterm + dterm); +} diff --git a/gsl-2.5/interpolation/interp.c b/gsl-2.5/interpolation/interp.c new file mode 100644 index 00000000..4fb56e71 --- /dev/null +++ b/gsl-2.5/interpolation/interp.c @@ -0,0 +1,280 @@ +/* interpolation/interp.c + * + * Copyright (C) 2007 Brian Gough + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman + */ +#include +#include +#include +#include + +#define DISCARD_STATUS(s) if ((s) != GSL_SUCCESS) { GSL_ERROR_VAL("interpolation error", (s), GSL_NAN); } + +gsl_interp * +gsl_interp_alloc (const gsl_interp_type * T, size_t size) +{ + gsl_interp * interp; + + if (size < T->min_size) + { + GSL_ERROR_NULL ("insufficient number of points for interpolation type", + GSL_EINVAL); + } + + interp = (gsl_interp *) malloc (sizeof(gsl_interp)); + + if (interp == NULL) + { + GSL_ERROR_NULL ("failed to allocate space for interp struct", + GSL_ENOMEM); + } + + interp->type = T; + interp->size = size; + + if (interp->type->alloc == NULL) + { + interp->state = NULL; + return interp; + } + + interp->state = interp->type->alloc(size); + + if (interp->state == NULL) + { + free (interp); + GSL_ERROR_NULL ("failed to allocate space for interp state", GSL_ENOMEM); + }; + + return interp; +} + +int +gsl_interp_init (gsl_interp * interp, const double x_array[], const double y_array[], size_t size) +{ + size_t i; + + if (size != interp->size) + { + GSL_ERROR ("data must match size of interpolation object", GSL_EINVAL); + } + + for (i = 1; i < size; i++) + { + if (!(x_array[i-1] < x_array[i])) + { + GSL_ERROR ("x values must be strictly increasing", GSL_EINVAL); + } + } + + interp->xmin = x_array[0]; + interp->xmax = x_array[size - 1]; + + { + int status = interp->type->init(interp->state, x_array, y_array, size); + return status; + } +} + +const char * +gsl_interp_name(const gsl_interp * interp) +{ + return interp->type->name; +} + +unsigned int +gsl_interp_min_size(const gsl_interp * interp) +{ + return interp->type->min_size; +} + +unsigned int +gsl_interp_type_min_size(const gsl_interp_type * T) +{ + return T->min_size; +} + +void +gsl_interp_free (gsl_interp * interp) +{ + RETURN_IF_NULL (interp); + + if (interp->type->free) + interp->type->free (interp->state); + free (interp); +} + + + +int +gsl_interp_eval_e (const gsl_interp * interp, + const double xa[], const double ya[], double x, + gsl_interp_accel * a, double *y) +{ + if (x < interp->xmin || x > interp->xmax) + { + *y = GSL_NAN; + return GSL_EDOM; + } + + return interp->type->eval (interp->state, xa, ya, interp->size, x, a, y); +} + +double +gsl_interp_eval (const gsl_interp * interp, + const double xa[], const double ya[], double x, + gsl_interp_accel * a) +{ + double y; + int status; + + if (x < interp->xmin || x > interp->xmax) + { + GSL_ERROR_VAL("interpolation error", GSL_EDOM, GSL_NAN); + } + + status = interp->type->eval (interp->state, xa, ya, interp->size, x, a, &y); + + DISCARD_STATUS(status); + + return y; +} + + +int +gsl_interp_eval_deriv_e (const gsl_interp * interp, + const double xa[], const double ya[], double x, + gsl_interp_accel * a, + double *dydx) +{ + if (x < interp->xmin || x > interp->xmax) + { + *dydx = GSL_NAN; + return GSL_EDOM; + } + + return interp->type->eval_deriv (interp->state, xa, ya, interp->size, x, a, dydx); +} + +double +gsl_interp_eval_deriv (const gsl_interp * interp, + const double xa[], const double ya[], double x, + gsl_interp_accel * a) +{ + double dydx; + int status; + + if (x < interp->xmin || x > interp->xmax) + { + GSL_ERROR_VAL("interpolation error", GSL_EDOM, GSL_NAN); + } + + status = interp->type->eval_deriv (interp->state, xa, ya, interp->size, x, a, &dydx); + + DISCARD_STATUS(status); + + return dydx; +} + + +int +gsl_interp_eval_deriv2_e (const gsl_interp * interp, + const double xa[], const double ya[], double x, + gsl_interp_accel * a, + double * d2) +{ + if (x < interp->xmin || x > interp->xmax) + { + *d2 = GSL_NAN; + return GSL_EDOM; + } + + return interp->type->eval_deriv2 (interp->state, xa, ya, interp->size, x, a, d2); +} + +double +gsl_interp_eval_deriv2 (const gsl_interp * interp, + const double xa[], const double ya[], double x, + gsl_interp_accel * a) +{ + double d2; + int status; + + if (x < interp->xmin || x > interp->xmax) + { + GSL_ERROR_VAL("interpolation error", GSL_EDOM, GSL_NAN); + } + + status = interp->type->eval_deriv2 (interp->state, xa, ya, interp->size, x, a, &d2); + + DISCARD_STATUS(status); + + return d2; +} + + +int +gsl_interp_eval_integ_e (const gsl_interp * interp, + const double xa[], const double ya[], + double a, double b, + gsl_interp_accel * acc, + double * result) +{ + if (a > b || a < interp->xmin || b > interp->xmax) + { + *result = GSL_NAN; + return GSL_EDOM; + } + else if(a == b) + { + *result = 0.0; + return GSL_SUCCESS; + } + + return interp->type->eval_integ (interp->state, xa, ya, interp->size, acc, a, b, result); +} + + +double +gsl_interp_eval_integ (const gsl_interp * interp, + const double xa[], const double ya[], + double a, double b, + gsl_interp_accel * acc) +{ + double result; + int status; + + if (a > b || a < interp->xmin || b > interp->xmax) + { + GSL_ERROR_VAL("interpolation error", GSL_EDOM, GSL_NAN); + } + else if(a == b) + { + return 0.0; + } + + status = interp->type->eval_integ (interp->state, xa, ya, interp->size, acc, a, b, &result); + + DISCARD_STATUS(status); + + return result; +} + + diff --git a/gsl-2.5/interpolation/interp.lo b/gsl-2.5/interpolation/interp.lo new file mode 100644 index 00000000..71e08b28 --- /dev/null +++ b/gsl-2.5/interpolation/interp.lo @@ -0,0 +1,12 @@ +# interp.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/interp.o' + +# Name of the non-PIC object +non_pic_object='interp.o' + diff --git a/gsl-2.5/interpolation/interp2d.c b/gsl-2.5/interpolation/interp2d.c new file mode 100644 index 00000000..6389ebf0 --- /dev/null +++ b/gsl-2.5/interpolation/interp2d.c @@ -0,0 +1,411 @@ +/* interpolation/interp2d.c + * + * Copyright 2012 David Zaslavsky + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include + +/** + * Triggers a GSL error if the argument is not equal to GSL_SUCCESS. + * If the argument is GSL_SUCCESS, this does nothing. + */ +#define DISCARD_STATUS(s) if ((s) != GSL_SUCCESS) { GSL_ERROR_VAL("interpolation error", (s), GSL_NAN); } + +#define IDX2D(i, j, w) ((j) * ((w)->xsize) + (i)) + +gsl_interp2d * +gsl_interp2d_alloc(const gsl_interp2d_type * T, const size_t xsize, + const size_t ysize) +{ + gsl_interp2d * interp; + + if (xsize < T->min_size || ysize < T->min_size) + { + GSL_ERROR_NULL ("insufficient number of points for interpolation type", + GSL_EINVAL); + } + + interp = (gsl_interp2d *) calloc(1, sizeof(gsl_interp2d)); + if (interp == NULL) + { + GSL_ERROR_NULL ("failed to allocate space for gsl_interp2d struct", + GSL_ENOMEM); + } + + interp->type = T; + interp->xsize = xsize; + interp->ysize = ysize; + + if (interp->type->alloc == NULL) + { + interp->state = NULL; + return interp; + } + + interp->state = interp->type->alloc(xsize, ysize); + if (interp->state == NULL) + { + free(interp); + GSL_ERROR_NULL ("failed to allocate space for gsl_interp2d state", + GSL_ENOMEM); + } + + return interp; +} /* gsl_interp2d_alloc() */ + +void +gsl_interp2d_free (gsl_interp2d * interp) +{ + RETURN_IF_NULL(interp); + + if (interp->type->free) + interp->type->free(interp->state); + + free(interp); +} /* gsl_interp2d_free() */ + +int +gsl_interp2d_init (gsl_interp2d * interp, const double xarr[], const double yarr[], + const double zarr[], const size_t xsize, const size_t ysize) +{ + size_t i; + + if (xsize != interp->xsize || ysize != interp->ysize) + { + GSL_ERROR("data must match size of interpolation object", GSL_EINVAL); + } + + for (i = 1; i < xsize; i++) + { + if (xarr[i-1] >= xarr[i]) + { + GSL_ERROR("x values must be strictly increasing", GSL_EINVAL); + } + } + + for (i = 1; i < ysize; i++) + { + if (yarr[i-1] >= yarr[i]) + { + GSL_ERROR("y values must be strictly increasing", GSL_EINVAL); + } + } + + interp->xmin = xarr[0]; + interp->xmax = xarr[xsize - 1]; + interp->ymin = yarr[0]; + interp->ymax = yarr[ysize - 1]; + + { + int status = interp->type->init(interp->state, xarr, yarr, zarr, + xsize, ysize); + return status; + } +} /* gsl_interp2d_init() */ + +/* + * A wrapper function that checks boundary conditions, calls an evaluator + * which implements the actual calculation of the function value or + * derivative etc., and checks the return status. + */ +static int +interp2d_eval(int (*evaluator)(const void *, const double xa[], const double ya[], + const double za[], size_t xsize, size_t ysize, + double x, double y, gsl_interp_accel *, + gsl_interp_accel *, double * z), + const gsl_interp2d * interp, const double xarr[], + const double yarr[], const double zarr[], + const double x, const double y, + gsl_interp_accel * xa, gsl_interp_accel * ya, + double * result) +{ + if (x < interp->xmin || x > interp->xmax) + { + GSL_ERROR ("interpolation x value out of range", GSL_EDOM); + } + else if (y < interp->ymin || y > interp->ymax) + { + GSL_ERROR ("interpolation y value out of range", GSL_EDOM); + } + + return evaluator(interp->state, xarr, yarr, zarr, + interp->xsize, interp->ysize, + x, y, xa, ya, result); +} + +/* + * Another wrapper function that serves as a drop-in replacement for + * interp2d_eval but does not check the bounds. This can be used + * for extrapolation. + */ +static int +interp2d_eval_extrap(int (*evaluator)(const void *, const double xa[], + const double ya[], const double za[], + size_t xsize, size_t ysize, + double x, double y, + gsl_interp_accel *, + gsl_interp_accel *, double * z), + const gsl_interp2d * interp, const double xarr[], + const double yarr[], const double zarr[], + const double x, const double y, + gsl_interp_accel * xa, gsl_interp_accel * ya, + double * result) +{ + return evaluator(interp->state, xarr, yarr, zarr, + interp->xsize, interp->ysize, x, y, xa, ya, result); +} + +double +gsl_interp2d_eval (const gsl_interp2d * interp, const double xarr[], + const double yarr[], const double zarr[], + const double x, const double y, + gsl_interp_accel * xa, gsl_interp_accel * ya) +{ + double z; + int status = gsl_interp2d_eval_e(interp, xarr, yarr, zarr, x, y, xa, ya, &z); + DISCARD_STATUS(status) + return z; +} /* gsl_interp2d_eval() */ + +double +gsl_interp2d_eval_extrap (const gsl_interp2d * interp, + const double xarr[], + const double yarr[], + const double zarr[], + const double x, + const double y, + gsl_interp_accel * xa, + gsl_interp_accel * ya) +{ + double z; + int status = + interp2d_eval_extrap(interp->type->eval, interp, + xarr, yarr, zarr, x, y, xa, ya, &z); + DISCARD_STATUS(status) + return z; +} + +int +gsl_interp2d_eval_e (const gsl_interp2d * interp, const double xarr[], + const double yarr[], const double zarr[], + const double x, const double y, + gsl_interp_accel * xa, gsl_interp_accel * ya, double * z) +{ + return interp2d_eval(interp->type->eval, interp, + xarr, yarr, zarr, x, y, xa, ya, z); +} /* gsl_interp2d_eval_e() */ + +int +gsl_interp2d_eval_e_extrap (const gsl_interp2d * interp, + const double xarr[], const double yarr[], + const double zarr[], const double x, + const double y, gsl_interp_accel * xa, + gsl_interp_accel * ya, double * z) +{ + return interp2d_eval_extrap(interp->type->eval, interp, + xarr, yarr, zarr, x, y, xa, ya, z); +} + +double +gsl_interp2d_eval_deriv_x (const gsl_interp2d * interp, const double xarr[], + const double yarr[], const double zarr[], + const double x, const double y, + gsl_interp_accel * xa, gsl_interp_accel * ya) +{ + double z; + int status = gsl_interp2d_eval_deriv_x_e(interp, xarr, yarr, zarr, x, y, xa, ya, &z); + DISCARD_STATUS(status) + return z; +} + +int +gsl_interp2d_eval_deriv_x_e (const gsl_interp2d * interp, const double xarr[], + const double yarr[], const double zarr[], + const double x, const double y, + gsl_interp_accel * xa, gsl_interp_accel * ya, double * z) +{ + return interp2d_eval(interp->type->eval_deriv_x, interp, + xarr, yarr, zarr, x, y, xa, ya, z); +} + +double +gsl_interp2d_eval_deriv_y (const gsl_interp2d * interp, const double xarr[], + const double yarr[], const double zarr[], + const double x, const double y, + gsl_interp_accel * xa, gsl_interp_accel * ya) +{ + double z; + int status = gsl_interp2d_eval_deriv_y_e(interp, xarr, yarr, zarr, x, y, xa, ya, &z); + DISCARD_STATUS(status) + return z; +} + +int +gsl_interp2d_eval_deriv_y_e (const gsl_interp2d * interp, const double xarr[], + const double yarr[], const double zarr[], + const double x, const double y, + gsl_interp_accel * xa, gsl_interp_accel * ya, double * z) +{ + return interp2d_eval(interp->type->eval_deriv_y, interp, + xarr, yarr, zarr, x, y, xa, ya, z); +} + +double +gsl_interp2d_eval_deriv_xx (const gsl_interp2d * interp, const double xarr[], + const double yarr[], const double zarr[], + const double x, const double y, + gsl_interp_accel * xa, gsl_interp_accel * ya) +{ + double z; + int status = gsl_interp2d_eval_deriv_xx_e(interp, xarr, yarr, zarr, x, y, xa, ya, &z); + DISCARD_STATUS(status) + return z; +} + +int +gsl_interp2d_eval_deriv_xx_e (const gsl_interp2d * interp, const double xarr[], + const double yarr[], const double zarr[], + const double x, const double y, + gsl_interp_accel * xa, gsl_interp_accel * ya, double * z) +{ + return interp2d_eval(interp->type->eval_deriv_xx, interp, + xarr, yarr, zarr, x, y, xa, ya, z); +} + +double +gsl_interp2d_eval_deriv_yy (const gsl_interp2d * interp, const double xarr[], + const double yarr[], const double zarr[], + const double x, const double y, + gsl_interp_accel * xa, gsl_interp_accel * ya) +{ + double z; + int status = gsl_interp2d_eval_deriv_yy_e(interp, xarr, yarr, zarr, x, y, xa, ya, &z); + DISCARD_STATUS(status) + return z; +} + +int +gsl_interp2d_eval_deriv_yy_e (const gsl_interp2d * interp, const double xarr[], + const double yarr[], const double zarr[], + const double x, const double y, + gsl_interp_accel * xa, gsl_interp_accel * ya, double * z) +{ + return interp2d_eval(interp->type->eval_deriv_yy, interp, + xarr, yarr, zarr, x, y, xa, ya, z); +} + +double +gsl_interp2d_eval_deriv_xy (const gsl_interp2d * interp, const double xarr[], + const double yarr[], const double zarr[], + const double x, const double y, + gsl_interp_accel * xa, gsl_interp_accel * ya) +{ + double z; + int status = gsl_interp2d_eval_deriv_xy_e(interp, xarr, yarr, zarr, x, y, xa, ya, &z); + DISCARD_STATUS(status) + return z; +} + +int +gsl_interp2d_eval_deriv_xy_e (const gsl_interp2d * interp, const double xarr[], + const double yarr[], const double zarr[], + const double x, const double y, + gsl_interp_accel * xa, gsl_interp_accel * ya, double * z) +{ + return interp2d_eval(interp->type->eval_deriv_xy, interp, + xarr, yarr, zarr, x, y, xa, ya, z); +} + +size_t +gsl_interp2d_type_min_size(const gsl_interp2d_type * T) +{ + return T->min_size; +} + +size_t +gsl_interp2d_min_size(const gsl_interp2d * interp) +{ + return interp->type->min_size; +} + +const char * +gsl_interp2d_name(const gsl_interp2d * interp) +{ + return interp->type->name; +} + +size_t +gsl_interp2d_idx(const gsl_interp2d * interp, + const size_t i, const size_t j) +{ + if (i >= interp->xsize) + { + GSL_ERROR_VAL ("x index out of range", GSL_ERANGE, 0); + } + else if (j >= interp->ysize) + { + GSL_ERROR_VAL ("y index out of range", GSL_ERANGE, 0); + } + else + { + return IDX2D(i, j, interp); + } +} /* gsl_interp2d_idx() */ + +int +gsl_interp2d_set(const gsl_interp2d * interp, double zarr[], + const size_t i, const size_t j, const double z) +{ + if (i >= interp->xsize) + { + GSL_ERROR ("x index out of range", GSL_ERANGE); + } + else if (j >= interp->ysize) + { + GSL_ERROR ("y index out of range", GSL_ERANGE); + } + else + { + zarr[IDX2D(i, j, interp)] = z; + return GSL_SUCCESS; + } +} /* gsl_interp2d_set() */ + +double +gsl_interp2d_get(const gsl_interp2d * interp, const double zarr[], + const size_t i, const size_t j) +{ + if (i >= interp->xsize) + { + GSL_ERROR_VAL ("x index out of range", GSL_ERANGE, 0); + } + else if (j >= interp->ysize) + { + GSL_ERROR_VAL ("y index out of range", GSL_ERANGE, 0); + } + else + { + return zarr[IDX2D(i, j, interp)]; + } +} /* gsl_interp2d_get() */ + +#undef IDX2D diff --git a/gsl-2.5/interpolation/interp2d.lo b/gsl-2.5/interpolation/interp2d.lo new file mode 100644 index 00000000..085142ea --- /dev/null +++ b/gsl-2.5/interpolation/interp2d.lo @@ -0,0 +1,12 @@ +# interp2d.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/interp2d.o' + +# Name of the non-PIC object +non_pic_object='interp2d.o' + diff --git a/gsl-2.5/interpolation/libgslinterpolation.la b/gsl-2.5/interpolation/libgslinterpolation.la new file mode 100644 index 00000000..94fbf950 --- /dev/null +++ b/gsl-2.5/interpolation/libgslinterpolation.la @@ -0,0 +1,41 @@ +# libgslinterpolation.la - a libtool library file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='' + +# Names of this library. +library_names='' + +# The name of the static archive. +old_library='libgslinterpolation.a' + +# Linker flags that can not go in dependency_libs. +inherited_linker_flags='' + +# Libraries that this one depends upon. +dependency_libs=' -lm' + +# Names of additional weak libraries provided by this library +weak_library_names='' + +# Version information for libgslinterpolation. +current= +age= +revision= + +# Is this an already installed library? +installed=no + +# Should we warn about portability when linking against -modules? +shouldnotlink=no + +# Files to dlopen/dlpreopen +dlopen='' +dlpreopen='' + +# Directory that this library needs to be installed in: +libdir='' diff --git a/gsl-2.5/interpolation/linear.c b/gsl-2.5/interpolation/linear.c new file mode 100644 index 00000000..65ca83ea --- /dev/null +++ b/gsl-2.5/interpolation/linear.c @@ -0,0 +1,198 @@ +/* interpolation/linear.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman + */ +#include +#include +#include +#include + +static int +linear_init (void * vstate, + const double x_array[], + const double y_array[], + size_t size) +{ + return GSL_SUCCESS; +} + +static +int +linear_eval (const void * vstate, + const double x_array[], const double y_array[], size_t size, + double x, + gsl_interp_accel * a, + double *y) +{ + double x_lo, x_hi; + double y_lo, y_hi; + double dx; + size_t index; + + if (a != 0) + { + index = gsl_interp_accel_find (a, x_array, size, x); + } + else + { + index = gsl_interp_bsearch (x_array, x, 0, size - 1); + } + + /* evaluate */ + x_lo = x_array[index]; + x_hi = x_array[index + 1]; + y_lo = y_array[index]; + y_hi = y_array[index + 1]; + dx = x_hi - x_lo; + if (dx > 0.0) + { + *y = y_lo + (x - x_lo) / dx * (y_hi - y_lo); + return GSL_SUCCESS; + } + else + { + *y = 0.0; + return GSL_EINVAL; + } +} + + +static +int +linear_eval_deriv (const void * vstate, + const double x_array[], const double y_array[], size_t size, + double x, + gsl_interp_accel * a, + double *dydx) +{ + double x_lo, x_hi; + double y_lo, y_hi; + double dx; + double dy; + size_t index; + + if (a != 0) + { + index = gsl_interp_accel_find (a, x_array, size, x); + } + else + { + index = gsl_interp_bsearch (x_array, x, 0, size - 1); + } + + /* evaluate */ + x_lo = x_array[index]; + x_hi = x_array[index + 1]; + y_lo = y_array[index]; + y_hi = y_array[index + 1]; + dx = x_hi - x_lo; + dy = y_hi - y_lo; + if (dx > 0.0) + { + *dydx = dy / dx;; + return GSL_SUCCESS; + } + else + { + *dydx = 0.0; + return GSL_EINVAL; + } +} + + +static +int +linear_eval_deriv2 (const void * vstate, + const double x_array[], const double y_array[], size_t size, + double x, + gsl_interp_accel * a, + double *y_pp) +{ + *y_pp = 0.0; + + return GSL_SUCCESS; +} + + +static +int +linear_eval_integ (const void * vstate, + const double x_array[], const double y_array[], size_t size, + gsl_interp_accel * acc, + double a, double b, + double * result) +{ + size_t i, index_a, index_b; + + if (acc != 0) + { + index_a = gsl_interp_accel_find (acc, x_array, size, a); + index_b = gsl_interp_accel_find (acc, x_array, size, b); + } + else + { + index_a = gsl_interp_bsearch (x_array, a, 0, size - 1); + index_b = gsl_interp_bsearch (x_array, b, 0, size - 1); + } + + /* endpoints span more than one interval */ + + *result = 0.0; + + /* interior intervals */ + for(i=index_a; i<=index_b; i++) { + const double x_hi = x_array[i + 1]; + const double x_lo = x_array[i]; + const double y_lo = y_array[i]; + const double y_hi = y_array[i + 1]; + const double dx = x_hi - x_lo; + + if(dx != 0.0) { + if (i == index_a || i == index_b) + { + double x1 = (i == index_a) ? a : x_lo; + double x2 = (i == index_b) ? b : x_hi; + const double D = (y_hi-y_lo)/dx; + *result += (x2-x1) * (y_lo + 0.5*D*((x2-x_lo)+(x1-x_lo))); + } + else + { + *result += 0.5 * dx * (y_lo + y_hi); + } + } + } + + return GSL_SUCCESS; +} + +static const gsl_interp_type linear_type = +{ + "linear", + 2, + NULL, /* alloc, not applicable */ + &linear_init, + &linear_eval, + &linear_eval_deriv, + &linear_eval_deriv2, + &linear_eval_integ, + NULL, /* free, not applicable */ +}; + +const gsl_interp_type * gsl_interp_linear = &linear_type; diff --git a/gsl-2.5/interpolation/linear.lo b/gsl-2.5/interpolation/linear.lo new file mode 100644 index 00000000..9b8a4aba --- /dev/null +++ b/gsl-2.5/interpolation/linear.lo @@ -0,0 +1,12 @@ +# linear.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/linear.o' + +# Name of the non-PIC object +non_pic_object='linear.o' + diff --git a/gsl-2.5/interpolation/poly.c b/gsl-2.5/interpolation/poly.c new file mode 100644 index 00000000..6d7853f3 --- /dev/null +++ b/gsl-2.5/interpolation/poly.c @@ -0,0 +1,173 @@ +/* interpolation/interp_poly.c + * + * Copyright (C) 2001 DAN, HO-JIN + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include + +typedef struct +{ + double *d; + double *coeff; + double *work; +} +polynomial_state_t; + +static void * +polynomial_alloc (size_t size) +{ + polynomial_state_t *state = + (polynomial_state_t *) malloc (sizeof (polynomial_state_t)); + + if (state == 0) + { + GSL_ERROR_NULL ("failed to allocate space for polynomial state", + GSL_ENOMEM); + } + + state->d = (double *) malloc (sizeof (double) * size); + + if (state->d == 0) + { + free (state); + GSL_ERROR_NULL ("failed to allocate space for d", GSL_ENOMEM); + } + + state->coeff = (double *) malloc (sizeof (double) * size); + + if (state->coeff == 0) + { + free (state->d); + free (state); + GSL_ERROR_NULL ("failed to allocate space for d", GSL_ENOMEM); + } + + state->work = (double *) malloc (sizeof (double) * size); + + if (state->work == 0) + { + free (state->coeff); + free (state->d); + free (state); + GSL_ERROR_NULL ("failed to allocate space for d", GSL_ENOMEM); + } + + return state; +} + +static int +polynomial_init (void *vstate, + const double xa[], const double ya[], size_t size) +{ + polynomial_state_t *state = (polynomial_state_t *) vstate; + + int status = gsl_poly_dd_init (state->d, xa, ya, size); + + return status; +} + +static int +polynomial_eval (const void *vstate, + const double xa[], const double ya[], size_t size, double x, + gsl_interp_accel * acc, double *y) +{ + const polynomial_state_t *state = (const polynomial_state_t *) vstate; + + *y = gsl_poly_dd_eval (state->d, xa, size, x); + + return GSL_SUCCESS; +} + + +static int +polynomial_deriv (const void *vstate, + const double xa[], const double ya[], size_t size, double x, + gsl_interp_accel * acc, double *y) +{ + const polynomial_state_t *state = (const polynomial_state_t *) vstate; + + gsl_poly_dd_taylor (state->coeff, x, state->d, xa, size, state->work); + + *y = state->coeff[1]; + + return GSL_SUCCESS; +} + +static int +polynomial_deriv2 (const void *vstate, + const double xa[], const double ya[], size_t size, + double x, gsl_interp_accel * acc, double *y) +{ + const polynomial_state_t *state = (const polynomial_state_t *) vstate; + + gsl_poly_dd_taylor (state->coeff, x, state->d, xa, size, state->work); + + *y = 2.0 * state->coeff[2]; + + return GSL_SUCCESS; +} + +static int +polynomial_integ (const void *vstate, const double xa[], const double ya[], + size_t size, gsl_interp_accel * acc, double a, double b, + double *result) +{ + const polynomial_state_t *state = (const polynomial_state_t *) vstate; + size_t i; + double sum; + + gsl_poly_dd_taylor (state->coeff, 0.0, state->d, xa, size, state->work); + + sum = state->coeff[0] * (b - a); + + for (i = 1; i < size; i++) + { + sum += state->coeff[i] * (pow (b, i + 1) - pow (a, i + 1)) / (i + 1.0); + } + + *result = sum; + + return GSL_SUCCESS; +} + +static void +polynomial_free (void *vstate) +{ + polynomial_state_t *state = (polynomial_state_t *) vstate; + free (state->d); + free (state->coeff); + free (state->work); + free (state); +} + +static const gsl_interp_type polynomial_type = { + "polynomial", + 3, + &polynomial_alloc, + &polynomial_init, + &polynomial_eval, + &polynomial_deriv, + &polynomial_deriv2, + &polynomial_integ, + &polynomial_free, +}; + +const gsl_interp_type *gsl_interp_polynomial = &polynomial_type; diff --git a/gsl-2.5/interpolation/poly.lo b/gsl-2.5/interpolation/poly.lo new file mode 100644 index 00000000..86fc1a85 --- /dev/null +++ b/gsl-2.5/interpolation/poly.lo @@ -0,0 +1,12 @@ +# poly.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/poly.o' + +# Name of the non-PIC object +non_pic_object='poly.o' + diff --git a/gsl-2.5/interpolation/spline.c b/gsl-2.5/interpolation/spline.c new file mode 100644 index 00000000..3d8605d8 --- /dev/null +++ b/gsl-2.5/interpolation/spline.c @@ -0,0 +1,194 @@ +/* interpolation/spline.c + * + * Copyright (C) 2001, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include + +gsl_spline * +gsl_spline_alloc (const gsl_interp_type * T, size_t size) +{ + gsl_spline * spline = (gsl_spline *) malloc (sizeof(gsl_spline)); + + if (spline == NULL) + { + GSL_ERROR_NULL ("failed to allocate space for spline struct", + GSL_ENOMEM); + } + + spline->interp = gsl_interp_alloc (T, size); + + if (spline->interp == NULL) + { + free (spline); + GSL_ERROR_NULL ("failed to allocate space for interp", GSL_ENOMEM); + }; + + spline->x = (double *) malloc (size * sizeof(double)); + + if (spline->x == NULL) + { + gsl_interp_free(spline->interp); + free(spline); + GSL_ERROR_NULL ("failed to allocate space for x", GSL_ENOMEM); + } + + spline->y = (double *) malloc (size * sizeof(double)); + + if (spline->y == NULL) + { + free(spline->x); + gsl_interp_free(spline->interp); + free(spline); + GSL_ERROR_NULL ("failed to allocate space for y", GSL_ENOMEM); + } + + spline->size = size; + + return spline; +} + +int +gsl_spline_init (gsl_spline * spline, const double x_array[], const double y_array[], size_t size) +{ + if (size != spline->size) + { + GSL_ERROR ("data must match size of spline object", GSL_EINVAL); + } + + memcpy (spline->x, x_array, size * sizeof(double)); + memcpy (spline->y, y_array, size * sizeof(double)); + + { + int status = gsl_interp_init (spline->interp, x_array, y_array, size); + return status; + } +} + +const char * +gsl_spline_name(const gsl_spline * spline) +{ + return gsl_interp_name(spline->interp); +} + +unsigned int +gsl_spline_min_size(const gsl_spline * spline) +{ + return gsl_interp_min_size(spline->interp); +} + +void +gsl_spline_free (gsl_spline * spline) +{ + RETURN_IF_NULL (spline); + gsl_interp_free (spline->interp); + free (spline->x); + free (spline->y); + free (spline); +} + +int +gsl_spline_eval_e (const gsl_spline * spline, + double x, + gsl_interp_accel * a, double *y) +{ + return gsl_interp_eval_e (spline->interp, + spline->x, spline->y, + x, a, y); +} + +double +gsl_spline_eval (const gsl_spline * spline, + double x, + gsl_interp_accel * a) +{ + return gsl_interp_eval (spline->interp, + spline->x, spline->y, + x, a); +} + + +int +gsl_spline_eval_deriv_e (const gsl_spline * spline, + double x, + gsl_interp_accel * a, + double *dydx) +{ + return gsl_interp_eval_deriv_e (spline->interp, + spline->x, spline->y, + x, a, dydx); +} + +double +gsl_spline_eval_deriv (const gsl_spline * spline, + double x, + gsl_interp_accel * a) +{ + return gsl_interp_eval_deriv (spline->interp, + spline->x, spline->y, + x, a); +} + + +int +gsl_spline_eval_deriv2_e (const gsl_spline * spline, + double x, + gsl_interp_accel * a, + double * d2) +{ + return gsl_interp_eval_deriv2_e (spline->interp, + spline->x, spline->y, + x, a, d2); +} + +double +gsl_spline_eval_deriv2 (const gsl_spline * spline, + double x, + gsl_interp_accel * a) +{ + return gsl_interp_eval_deriv2 (spline->interp, + spline->x, spline->y, + x, a); +} + + +int +gsl_spline_eval_integ_e (const gsl_spline * spline, + double a, double b, + gsl_interp_accel * acc, + double * result) +{ + return gsl_interp_eval_integ_e (spline->interp, + spline->x, spline->y, + a, b, acc, result); +} + + +double +gsl_spline_eval_integ (const gsl_spline * spline, + double a, double b, + gsl_interp_accel * acc) +{ + return gsl_interp_eval_integ (spline->interp, + spline->x, spline->y, + a, b, acc); +} + diff --git a/gsl-2.5/interpolation/spline.lo b/gsl-2.5/interpolation/spline.lo new file mode 100644 index 00000000..28e47ec1 --- /dev/null +++ b/gsl-2.5/interpolation/spline.lo @@ -0,0 +1,12 @@ +# spline.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/spline.o' + +# Name of the non-PIC object +non_pic_object='spline.o' + diff --git a/gsl-2.5/interpolation/spline2d.c b/gsl-2.5/interpolation/spline2d.c new file mode 100644 index 00000000..5f4c9d04 --- /dev/null +++ b/gsl-2.5/interpolation/spline2d.c @@ -0,0 +1,241 @@ +/* interpolation/spline2d.c + * + * Copyright 2012 David Zaslavsky + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include +#include +#include + +gsl_spline2d * +gsl_spline2d_alloc(const gsl_interp2d_type * T, size_t xsize, size_t ysize) +{ + double * array_mem; + gsl_spline2d * interp; + + if (xsize < T->min_size || ysize < T->min_size) + { + GSL_ERROR_NULL("insufficient number of points for interpolation type", GSL_EINVAL); + } + + interp = calloc(1, sizeof(gsl_spline2d)); + if (interp == NULL) + { + GSL_ERROR_NULL("failed to allocate space for gsl_spline2d struct", GSL_ENOMEM); + } + + interp->interp_object.type = T; + interp->interp_object.xsize = xsize; + interp->interp_object.ysize = ysize; + if (interp->interp_object.type->alloc == NULL) + { + interp->interp_object.state = NULL; + } + else + { + interp->interp_object.state = interp->interp_object.type->alloc(xsize, ysize); + if (interp->interp_object.state == NULL) + { + gsl_spline2d_free(interp); + GSL_ERROR_NULL("failed to allocate space for gsl_spline2d state", GSL_ENOMEM); + } + } + + /* + * Use one contiguous block of memory for all three data arrays. + * That way the code fails immediately if there isn't sufficient space for everything, + * rather than allocating one or two and then having to free them. + */ + array_mem = (double *)calloc(xsize + ysize + xsize * ysize, sizeof(double)); + if (array_mem == NULL) + { + gsl_spline2d_free(interp); + GSL_ERROR_NULL("failed to allocate space for data arrays", GSL_ENOMEM); + } + + interp->xarr = array_mem; + interp->yarr = array_mem + xsize; + interp->zarr = array_mem + xsize + ysize; + + return interp; +} /* gsl_spline2d_alloc() */ + +int +gsl_spline2d_init(gsl_spline2d * interp, const double xarr[], + const double yarr[], const double zarr[], + size_t xsize, size_t ysize) +{ + int status = gsl_interp2d_init(&(interp->interp_object), xarr, yarr, zarr, xsize, ysize); + + memcpy(interp->xarr, xarr, xsize * sizeof(double)); + memcpy(interp->yarr, yarr, ysize * sizeof(double)); + memcpy(interp->zarr, zarr, xsize * ysize * sizeof(double)); + + return status; +} /* gsl_spline2d_init() */ + +void +gsl_spline2d_free(gsl_spline2d * interp) +{ + RETURN_IF_NULL(interp); + + if (interp->interp_object.type->free) + interp->interp_object.type->free(interp->interp_object.state); + + /* + * interp->xarr points to the beginning of one contiguous block of memory + * that holds interp->xarr, interp->yarr, and interp->zarr. So it all gets + * freed with one call. cf. gsl_spline2d_alloc() implementation + */ + if (interp->xarr) + free(interp->xarr); + + free(interp); +} /* gsl_spline2d_free() */ + +double +gsl_spline2d_eval(const gsl_spline2d * interp, const double x, + const double y, gsl_interp_accel * xa, gsl_interp_accel * ya) +{ + return gsl_interp2d_eval(&(interp->interp_object), interp->xarr, interp->yarr, + interp->zarr, x, y, xa, ya); +} + +int +gsl_spline2d_eval_e(const gsl_spline2d * interp, const double x, + const double y, gsl_interp_accel * xa, gsl_interp_accel * ya, + double * z) +{ + return gsl_interp2d_eval_e(&(interp->interp_object), interp->xarr, interp->yarr, + interp->zarr, x, y, xa, ya, z); +} + +double +gsl_spline2d_eval_deriv_x(const gsl_spline2d * interp, const double x, + const double y, gsl_interp_accel * xa, gsl_interp_accel * ya) +{ + return gsl_interp2d_eval_deriv_x(&(interp->interp_object), interp->xarr, interp->yarr, + interp->zarr, x, y, xa, ya); +} + +int +gsl_spline2d_eval_deriv_x_e(const gsl_spline2d * interp, const double x, + const double y, gsl_interp_accel * xa, gsl_interp_accel * ya, + double * z) +{ + return gsl_interp2d_eval_deriv_x_e(&(interp->interp_object), interp->xarr, interp->yarr, + interp->zarr, x, y, xa, ya, z); +} + +double +gsl_spline2d_eval_deriv_y(const gsl_spline2d * interp, const double x, + const double y, gsl_interp_accel * xa, gsl_interp_accel * ya) +{ + return gsl_interp2d_eval_deriv_y(&(interp->interp_object), interp->xarr, interp->yarr, + interp->zarr, x, y, xa, ya); +} + +int +gsl_spline2d_eval_deriv_y_e(const gsl_spline2d * interp, const double x, + const double y, gsl_interp_accel * xa, gsl_interp_accel * ya, + double * z) +{ + return gsl_interp2d_eval_deriv_y_e(&(interp->interp_object), interp->xarr, interp->yarr, + interp->zarr, x, y, xa, ya, z); +} + +double +gsl_spline2d_eval_deriv_xx(const gsl_spline2d * interp, const double x, + const double y, gsl_interp_accel * xa, gsl_interp_accel * ya) +{ + return gsl_interp2d_eval_deriv_xx(&(interp->interp_object), interp->xarr, interp->yarr, + interp->zarr, x, y, xa, ya); +} + +int +gsl_spline2d_eval_deriv_xx_e(const gsl_spline2d * interp, const double x, + const double y, gsl_interp_accel * xa, gsl_interp_accel * ya, + double * z) +{ + return gsl_interp2d_eval_deriv_xx_e(&(interp->interp_object), interp->xarr, interp->yarr, + interp->zarr, x, y, xa, ya, z); +} + +double +gsl_spline2d_eval_deriv_yy(const gsl_spline2d * interp, const double x, + const double y, gsl_interp_accel * xa, gsl_interp_accel * ya) +{ + return gsl_interp2d_eval_deriv_yy(&(interp->interp_object), interp->xarr, interp->yarr, + interp->zarr, x, y, xa, ya); +} + +int +gsl_spline2d_eval_deriv_yy_e(const gsl_spline2d * interp, const double x, + const double y, gsl_interp_accel * xa, gsl_interp_accel * ya, + double * z) +{ + return gsl_interp2d_eval_deriv_yy_e(&(interp->interp_object), interp->xarr, interp->yarr, + interp->zarr, x, y, xa, ya, z); +} + +double +gsl_spline2d_eval_deriv_xy(const gsl_spline2d * interp, const double x, + const double y, gsl_interp_accel * xa, gsl_interp_accel * ya) +{ + return gsl_interp2d_eval_deriv_xy(&(interp->interp_object), interp->xarr, interp->yarr, + interp->zarr, x, y, xa, ya); +} + +int +gsl_spline2d_eval_deriv_xy_e(const gsl_spline2d * interp, const double x, + const double y, gsl_interp_accel * xa, gsl_interp_accel * ya, + double * z) +{ + return gsl_interp2d_eval_deriv_xy_e(&(interp->interp_object), interp->xarr, interp->yarr, + interp->zarr, x, y, xa, ya, z); +} + +size_t +gsl_spline2d_min_size(const gsl_spline2d * interp) +{ + return gsl_interp2d_min_size(&(interp->interp_object)); +} + +const char * +gsl_spline2d_name(const gsl_spline2d * interp) +{ + return gsl_interp2d_name(&(interp->interp_object)); +} + +int +gsl_spline2d_set(const gsl_spline2d * interp, double zarr[], + const size_t i, const size_t j, const double z) +{ + return gsl_interp2d_set(&(interp->interp_object), zarr, i, j, z); +} /* gsl_spline2d_set() */ + +double +gsl_spline2d_get(const gsl_spline2d * interp, const double zarr[], + const size_t i, const size_t j) +{ + return gsl_interp2d_get(&(interp->interp_object), zarr, i, j); +} /* gsl_spline2d_get() */ diff --git a/gsl-2.5/interpolation/spline2d.lo b/gsl-2.5/interpolation/spline2d.lo new file mode 100644 index 00000000..a72a5b5b --- /dev/null +++ b/gsl-2.5/interpolation/spline2d.lo @@ -0,0 +1,12 @@ +# spline2d.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/spline2d.o' + +# Name of the non-PIC object +non_pic_object='spline2d.o' + diff --git a/gsl-2.5/interpolation/steffen.c b/gsl-2.5/interpolation/steffen.c new file mode 100644 index 00000000..1c9ce104 --- /dev/null +++ b/gsl-2.5/interpolation/steffen.c @@ -0,0 +1,386 @@ +/* interpolation/steffen.c + * + * Copyright (C) 2014 Jean-François Caron + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: J.-F. Caron + * + * This interpolation method is taken from + * M.Steffen, "A simple method for monotonic interpolation in one dimension", + * Astron. Astrophys. 239, 443-450 (1990). + * + * This interpolation method guarantees monotonic interpolation functions between + * the given data points. A consequence of this is that extremal values can only + * occur at the data points. The interpolating function and its first derivative + * are guaranteed to be continuous, but the second derivative is not. + * + * The implementation is modelled on the existing Akima interpolation method + * previously included in GSL by Gerard Jungman. + */ + +#include +#include +#include +#include +#include +#include "integ_eval.h" +#include + +typedef struct +{ + double * a; /* eqs 2-5 of paper */ + double * b; + double * c; + double * d; + + double * y_prime; /* eq 11 of paper */ +} steffen_state_t; + +static void steffen_free (void * vstate); +static double steffen_copysign(const double x, const double y); + +static void * +steffen_alloc (size_t size) +{ + steffen_state_t *state; + + state = (steffen_state_t *) calloc (1, sizeof (steffen_state_t)); + + if (state == NULL) + { + GSL_ERROR_NULL("failed to allocate space for state", GSL_ENOMEM); + } + + state->a = (double *) malloc (size * sizeof (double)); + + if (state->a == NULL) + { + steffen_free(state); + GSL_ERROR_NULL("failed to allocate space for a", GSL_ENOMEM); + } + + state->b = (double *) malloc (size * sizeof (double)); + + if (state->b == NULL) + { + steffen_free(state); + GSL_ERROR_NULL("failed to allocate space for b", GSL_ENOMEM); + } + + state->c = (double *) malloc (size * sizeof (double)); + + if (state->c == NULL) + { + steffen_free(state); + GSL_ERROR_NULL("failed to allocate space for c", GSL_ENOMEM); + } + + state->d = (double *) malloc (size * sizeof (double)); + + if (state->d == NULL) + { + steffen_free(state); + GSL_ERROR_NULL("failed to allocate space for d", GSL_ENOMEM); + } + + state->y_prime = (double *) malloc (size * sizeof (double)); + if (state->y_prime == NULL) + { + steffen_free(state); + GSL_ERROR_NULL("failed to allocate space for y_prime", GSL_ENOMEM); + } + + return state; +} + +static int +steffen_init (void * vstate, const double x_array[], + const double y_array[], size_t size) +{ + steffen_state_t *state = (steffen_state_t *) vstate; + size_t i; + double *a = state->a; + double *b = state->b; + double *c = state->c; + double *d = state->d; + double *y_prime = state->y_prime; + + /* + * first assign the interval and slopes for the left boundary. + * We use the "simplest possibility" method described in the paper + * in section 2.2 + */ + double h0 = (x_array[1] - x_array[0]); + double s0 = (y_array[1] - y_array[0]) / h0; + + y_prime[0] = s0; + + /* Now we calculate all the necessary s, h, p, and y' variables + from 1 to N-2 (0 to size - 2 inclusive) */ + for (i = 1; i < (size - 1); i++) + { + double pi; + + /* equation 6 in the paper */ + double hi = (x_array[i+1] - x_array[i]); + double him1 = (x_array[i] - x_array[i - 1]); + + /* equation 7 in the paper */ + double si = (y_array[i+1] - y_array[i]) / hi; + double sim1 = (y_array[i] - y_array[i - 1]) / him1; + + /* equation 8 in the paper */ + pi = (sim1*hi + si*him1) / (him1 + hi); + + /* This is a C equivalent of the FORTRAN statement below eqn 11 */ + y_prime[i] = (steffen_copysign(1.0,sim1) + steffen_copysign(1.0,si)) * + GSL_MIN(fabs(sim1), + GSL_MIN(fabs(si), 0.5*fabs(pi))); + } + + /* + * we also need y' for the rightmost boundary; we use the + * "simplest possibility" method described in the paper in + * section 2.2 + * + * y' = s_{n-1} + */ + y_prime[size-1] = (y_array[size - 1] - y_array[size - 2]) / + (x_array[size - 1] - x_array[size - 2]); + + /* Now we can calculate all the coefficients for the whole range. */ + for (i = 0; i < (size - 1); i++) + { + double hi = (x_array[i+1] - x_array[i]); + double si = (y_array[i+1] - y_array[i]) / hi; + + /* These are from equations 2-5 in the paper. */ + a[i] = (y_prime[i] + y_prime[i+1] - 2*si) / hi / hi; + b[i] = (3*si - 2*y_prime[i] - y_prime[i+1]) / hi; + c[i] = y_prime[i]; + d[i] = y_array[i]; + } + + return GSL_SUCCESS; +} + +static void +steffen_free (void * vstate) +{ + steffen_state_t *state = (steffen_state_t *) vstate; + + RETURN_IF_NULL(state); + + if (state->a) + free (state->a); + + if (state->b) + free (state->b); + + if (state->c) + free (state->c); + + if (state->d) + free (state->d); + + if (state->y_prime) + free (state->y_prime); + + free (state); +} + +static int +steffen_eval (const void * vstate, + const double x_array[], const double y_array[], size_t size, + double x, gsl_interp_accel * a, double *y) +{ + const steffen_state_t *state = (const steffen_state_t *) vstate; + + size_t index; + + if (a != 0) + { + index = gsl_interp_accel_find (a, x_array, size, x); + } + else + { + index = gsl_interp_bsearch (x_array, x, 0, size - 1); + } + + /* evaluate */ + { + const double x_lo = x_array[index]; + const double delx = x - x_lo; + const double a = state->a[index]; + const double b = state->b[index]; + const double c = state->c[index]; + const double d = state->d[index]; + /* Use Horner's scheme for efficient evaluation of polynomials. */ + /* *y = a*delx*delx*delx + b*delx*delx + c*delx + d; */ + *y = d + delx*(c + delx*(b + delx*a)); + + return GSL_SUCCESS; + } +} + +static int +steffen_eval_deriv (const void * vstate, + const double x_array[], const double y_array[], size_t size, + double x, gsl_interp_accel * a, double *dydx) +{ + const steffen_state_t *state = (const steffen_state_t *) vstate; + + size_t index; + + /* DISCARD_POINTER(y_array); /\* prevent warning about unused parameter *\/ */ + + if (a != 0) + { + index = gsl_interp_accel_find (a, x_array, size, x); + } + else + { + index = gsl_interp_bsearch (x_array, x, 0, size - 1); + } + + /* evaluate */ + { + double x_lo = x_array[index]; + double delx = x - x_lo; + double a = state->a[index]; + double b = state->b[index]; + double c = state->c[index]; + /*double d = state->d[index];*/ + /* *dydx = 3*a*delx*delx*delx + 2*b*delx + c; */ + *dydx = c + delx*(2*b + delx*3*a); + return GSL_SUCCESS; + } +} + +static int +steffen_eval_deriv2 (const void * vstate, + const double x_array[], const double y_array[], size_t size, + double x, gsl_interp_accel * a, double *y_pp) +{ + const steffen_state_t *state = (const steffen_state_t *) vstate; + + size_t index; + + /* DISCARD_POINTER(y_array); /\* prevent warning about unused parameter *\/ */ + + if (a != 0) + { + index = gsl_interp_accel_find (a, x_array, size, x); + } + else + { + index = gsl_interp_bsearch (x_array, x, 0, size - 1); + } + + /* evaluate */ + { + const double x_lo = x_array[index]; + const double delx = x - x_lo; + const double a = state->a[index]; + const double b = state->b[index]; + *y_pp = 6*a*delx + 2*b; + return GSL_SUCCESS; + } +} + +static int +steffen_eval_integ (const void * vstate, + const double x_array[], const double y_array[], size_t size, + gsl_interp_accel * acc, double a, double b, + double * result) +{ + /* a and b are the boundaries of the integration. */ + + const steffen_state_t *state = (const steffen_state_t *) vstate; + + size_t i, index_a, index_b; + + /* Find the data points in the x_array that are nearest to the desired */ + /* a and b integration boundaries. */ + + if (acc != 0) + { + index_a = gsl_interp_accel_find (acc, x_array, size, a); + index_b = gsl_interp_accel_find (acc, x_array, size, b); + } + else + { + index_a = gsl_interp_bsearch (x_array, a, 0, size - 1); + index_b = gsl_interp_bsearch (x_array, b, 0, size - 1); + } + + *result = 0.0; + + /* Iterate over all the segments between data points and sum the */ + /* contributions into result. */ + for(i=index_a; i<=index_b; i++) + { + const double x_hi = x_array[i + 1]; + const double x_lo = x_array[i]; + const double dx = x_hi - x_lo; + if(dx != 0.0) + { + /* + * check if we are at a boundary point, so take the + * a and b parameters instead of the data points. + */ + double x1 = (i == index_a) ? a-x_lo : 0.0; + double x2 = (i == index_b) ? b-x_lo : x_hi-x_lo; + + *result += (1.0/4.0)*state->a[i]*(x2*x2*x2*x2 - x1*x1*x1*x1) + +(1.0/3.0)*state->b[i]*(x2*x2*x2 - x1*x1*x1) + +(1.0/2.0)*state->c[i]*(x2*x2 - x1*x1) + +state->d[i]*(x2-x1); + } + else /* if the interval was zero, i.e. consecutive x values in data. */ + { + *result = 0.0; + return GSL_EINVAL; + } + } + + return GSL_SUCCESS; +} + +static double +steffen_copysign(const double x, const double y) +{ + if ((x < 0 && y > 0) || (x > 0 && y < 0)) + return -x; + + return x; +} + +static const gsl_interp_type steffen_type = +{ + "steffen", + 3, + &steffen_alloc, + &steffen_init, + &steffen_eval, + &steffen_eval_deriv, + &steffen_eval_deriv2, + &steffen_eval_integ, + &steffen_free +}; + +const gsl_interp_type * gsl_interp_steffen = &steffen_type; diff --git a/gsl-2.5/interpolation/steffen.lo b/gsl-2.5/interpolation/steffen.lo new file mode 100644 index 00000000..aafcf49b --- /dev/null +++ b/gsl-2.5/interpolation/steffen.lo @@ -0,0 +1,12 @@ +# steffen.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/steffen.o' + +# Name of the non-PIC object +non_pic_object='steffen.o' + diff --git a/gsl-2.5/interpolation/test b/gsl-2.5/interpolation/test new file mode 100755 index 00000000..fbcc677d --- /dev/null +++ b/gsl-2.5/interpolation/test @@ -0,0 +1,228 @@ +#! /bin/sh + +# test - temporary wrapper script for .libs/test +# Generated by libtool (GNU libtool) 2.4.2 +# +# The test program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s/\([`"$\\]\)/\\\1/g' + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command="(cd /home/groups/kipac/chto/package/gsl/gsl-2.5/interpolation; LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LIBRARY_PATH; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; LD_LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/fftw/include:/home/users/chto/lib/fftw/lib:/home/users/chto/lib/healpix/lib:/home/users/chto/lib/namaster/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/include:/home/users/chto/cpp/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LD_LIBRARY_PATH; PATH=/share/software/user/open/curl/7.54.0/bin:/share/software/user/open/libressl/2.5.3/bin:/home/users/chto/lib/cfitsio:/home/users/chto/lib/cfitsio/include:/home/users/chto/lib:/home/users/chto/bin/bin:/home/users/chto/bin:/home/users/chto/.texlive/bin/x86_64-linux:/home/groups/kipac/chto/anaconda2/envs/newenv3/bin:/home/users/chto/.local/bin/include:/home/users/chto/.local/bin/lib:/home/users/chto/.local/bin:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/bin64:/share/software/user/open/fftw/3.3.6/bin:/home/groups/kipac/chto/anaconda2/condabin:/share/software/user/restricted/ifort/2019/bin:/share/software/user/open/gsl/2.3/bin:/share/software/user/srcc/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/dell/srvadmin/bin:/opt/dell/srvadmin/iSM/bin:/home/users/chto/bin; export PATH; gcc -g -O2 -o \$progdir/\$file test.o ./.libs/libgslinterpolation.a ../poly/.libs/libgslpoly.a ../linalg/.libs/libgsllinalg.a ../permutation/.libs/libgslpermutation.a ../blas/.libs/libgslblas.a ../matrix/.libs/libgslmatrix.a ../vector/.libs/libgslvector.a ../block/.libs/libgslblock.a ../complex/.libs/libgslcomplex.a ../cblas/.libs/libgslcblas.so ../ieee-utils/.libs/libgslieeeutils.a ../err/.libs/libgslerr.a ../test/.libs/libgsltest.a ../sys/.libs/libgslsys.a ../utils/.libs/libutils.a -lm -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/cblas/.libs -Wl,-rpath -Wl,/usr/local/lib)" + +# This environment variable determines our operation mode. +if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then + # install mode needs the following variables: + generated_by_libtool_version='2.4.2' + notinst_deplibs=' ../cblas/libgslcblas.la' +else + # When we are sourced in execute mode, $file and $ECHO are already set. + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + file="$0" + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + ECHO="printf %s\\n" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ which is used only on +# windows platforms, and (c) all begin with the string --lt- +# (application programs are unlikely to have options which match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's ../libtool value, followed by no. +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=$0 + shift + for lt_opt + do + case "$lt_opt" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%/[^/]*$%%'` + test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=. + lt_dump_F=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%^.*/%%'` + cat "$lt_dump_D/$lt_dump_F" + exit 0 + ;; + --lt-*) + $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n "$lt_option_debug"; then + echo "test:test:${LINENO}: libtool wrapper (GNU libtool) 2.4.2" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + $ECHO "test:test:${LINENO}: newargv[$lt_dump_args_N]: $lt_arg" + lt_dump_args_N=`expr $lt_dump_args_N + 1` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ + + if test -n "$lt_option_debug"; then + $ECHO "test:test:${LINENO}: newargv[0]: $progdir/$program" 1>&2 + func_lt_dump_args ${1+"$@"} 1>&2 + fi + exec "$progdir/$program" ${1+"$@"} + + $ECHO "$0: cannot exec $program $*" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from $@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case " $* " in + *\ --lt-*) + for lt_wr_arg + do + case $lt_wr_arg in + --lt-*) ;; + *) set x "$@" "$lt_wr_arg"; shift;; + esac + shift + done ;; + esac + func_exec_program_core ${1+"$@"} +} + + # Parse options + func_parse_lt_options "$0" ${1+"$@"} + + # Find the directory that this script lives in. + thisdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + test "x$thisdir" = "x$file" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=`ls -ld "$file" | /usr/bin/sed -n 's/.*-> //p'` + while test -n "$file"; do + destdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + + # If there was a directory component, then change thisdir. + if test "x$destdir" != "x$file"; then + case "$destdir" in + [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;; + *) thisdir="$thisdir/$destdir" ;; + esac + fi + + file=`$ECHO "$file" | /usr/bin/sed 's%^.*/%%'` + file=`ls -ld "$thisdir/$file" | /usr/bin/sed -n 's/.*-> //p'` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no + if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then + # special case for '.' + if test "$thisdir" = "."; then + thisdir=`pwd` + fi + # remove .libs from thisdir + case "$thisdir" in + *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /usr/bin/sed 's%[\\/][^\\/]*$%%'` ;; + .libs ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=`cd "$thisdir" && pwd` + test -n "$absdir" && thisdir="$absdir" + + program=lt-'test' + progdir="$thisdir/.libs" + + if test ! -f "$progdir/$program" || + { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /usr/bin/sed 1q`; \ + test "X$file" != "X$progdir/$program"; }; then + + file="$$-$program" + + if test ! -d "$progdir"; then + mkdir "$progdir" + else + rm -f "$progdir/$file" + fi + + # relink executable if necessary + if test -n "$relink_command"; then + if relink_command_output=`eval $relink_command 2>&1`; then : + else + printf %s\n "$relink_command_output" >&2 + rm -f "$progdir/$file" + exit 1 + fi + fi + + mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null || + { rm -f "$progdir/$program"; + mv -f "$progdir/$file" "$progdir/$program"; } + rm -f "$progdir/$file" + fi + + if test -f "$progdir/$program"; then + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + # Run the actual program with our arguments. + func_exec_program ${1+"$@"} + fi + else + # The program doesn't exist. + $ECHO "$0: error: \`$progdir/$program' does not exist" 1>&2 + $ECHO "This script is just a wrapper for $program." 1>&2 + $ECHO "See the libtool documentation for more information." 1>&2 + exit 1 + fi +fi diff --git a/gsl-2.5/interpolation/test-suite.log b/gsl-2.5/interpolation/test-suite.log new file mode 100644 index 00000000..05ab1786 --- /dev/null +++ b/gsl-2.5/interpolation/test-suite.log @@ -0,0 +1,14 @@ +=========================================== + gsl 2.5: interpolation/test-suite.log +=========================================== + +# TOTAL: 1 +# PASS: 1 +# SKIP: 0 +# XFAIL: 0 +# FAIL: 0 +# XPASS: 0 +# ERROR: 0 + +.. contents:: :depth: 2 + diff --git a/gsl-2.5/interpolation/test.c b/gsl-2.5/interpolation/test.c new file mode 100644 index 00000000..53e37839 --- /dev/null +++ b/gsl-2.5/interpolation/test.c @@ -0,0 +1,1233 @@ +/* interpolation/test.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2014 Gerard Jungman + * Copyright (C) 2014 Jean-François Caron + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + + +/* Author: G. Jungman + */ +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "test2d.c" + +int +test_bsearch(void) +{ + double x_array[5] = { 0.0, 1.0, 2.0, 3.0, 4.0 }; + size_t index_result; + int status = 0; + int s; + + /* check an interior point */ + index_result = gsl_interp_bsearch(x_array, 1.5, 0, 4); + s = (index_result != 1); + status += s; + gsl_test (s, "simple bsearch"); + + /* check that we get the last interval if x == last value */ + index_result = gsl_interp_bsearch(x_array, 4.0, 0, 4); + s = (index_result != 3); + status += s; + gsl_test (s, "upper endpoint bsearch"); + + /* check that we get the first interval if x == first value */ + index_result = gsl_interp_bsearch(x_array, 0.0, 0, 4); + s = (index_result != 0); + status += s; + gsl_test (s, "lower endpoint bsearch"); + + /* check that we get correct interior boundary behaviour */ + index_result = gsl_interp_bsearch(x_array, 2.0, 0, 4); + s = (index_result != 2); + status += s; + gsl_test (s, "degenerate bsearch"); + + /* check out of bounds above */ + index_result = gsl_interp_bsearch(x_array, 10.0, 0, 4); + s = (index_result != 3); + status += s; + gsl_test (s, "out of bounds bsearch +"); + + /* check out of bounds below */ + index_result = gsl_interp_bsearch(x_array, -10.0, 0, 4); + s = (index_result != 0); + status += s; + gsl_test (s, "out of bounds bsearch -"); + + /* Test the accelerator */ + + { + size_t i, j, k1 = 0, k2 = 0; + int t = 0; + double x = 0; + double r[16] = { -0.2, 0.0, 0.1, 0.7, + 1.0, 1.3, 1.9, + 2.0, 2.2, 2.7, + 3.0, 3.1, 3.6, + 4.0, 4.1, 4.9 }; + + gsl_interp_accel *a = gsl_interp_accel_alloc (); + + /* Run through all the pairs of points */ + + while (k1 < 16 && k2 < 16) { + + x = r[t ? k1 : k2]; + t = !t; + + if (t == 0) { + k1 = (k1 + 1) % 16; + if (k1 == 0) k2++; + }; + + i = gsl_interp_accel_find(a, x_array, 5, x); + j = gsl_interp_bsearch(x_array, x, 0, 4); + gsl_test(i != j, "(%u,%u) accelerated lookup vs bsearch (x = %g)", i, j, x); + } + + gsl_interp_accel_free(a); + } + + return status; +} + + + +typedef double TEST_FUNC (double); +typedef struct _xy_table xy_table; + +struct _xy_table + { + double * x; + double * y; + size_t n; + }; + +xy_table make_xy_table (double x[], double y[], size_t n); + +xy_table +make_xy_table (double x[], double y[], size_t n) +{ + xy_table t; + t.x = x; + t.y = y; + t.n = n; + return t; +} + +static int +test_interp ( + const xy_table * data_table, + const gsl_interp_type * T, + xy_table * test_table, + xy_table * test_d_table, + xy_table * test_i_table + ) +{ + int status = 0, s1, s2, s3; + size_t i; + + gsl_interp_accel *a = gsl_interp_accel_alloc (); + gsl_interp *interp = gsl_interp_alloc (T, data_table->n); + + unsigned int min_size = gsl_interp_type_min_size(T); + + gsl_test_int (min_size, T->min_size, "gsl_interp_type_min_size on %s", gsl_interp_name(interp)); + + gsl_interp_init (interp, data_table->x, data_table->y, data_table->n); + + for (i = 0; i < test_table->n; i++) + { + double x = test_table->x[i]; + double y; + double deriv; + double integ; + double diff_y, diff_deriv, diff_integ; + s1 = gsl_interp_eval_e (interp, data_table->x, data_table->y, x, a, &y); + s2 = gsl_interp_eval_deriv_e (interp, data_table->x, data_table->y, x, a, &deriv); + s3 = gsl_interp_eval_integ_e (interp, data_table->x, data_table->y, test_table->x[0], x, a, &integ); + + gsl_test (s1, "gsl_interp_eval_e %s", gsl_interp_name(interp)); + gsl_test (s2, "gsl_interp_eval_deriv_e %s", gsl_interp_name(interp)); + gsl_test (s3, "gsl_interp_eval_integ_e %s", gsl_interp_name(interp)); + + gsl_test_abs (y, test_table->y[i], 1e-10, "%s %d", gsl_interp_name(interp), i); + gsl_test_abs (deriv, test_d_table->y[i], 1e-10, "%s deriv %d", gsl_interp_name(interp), i); + gsl_test_abs (integ, test_i_table->y[i], 1e-10, "%s integ %d", gsl_interp_name(interp), i); + + diff_y = y - test_table->y[i]; + diff_deriv = deriv - test_d_table->y[i]; + diff_integ = integ - test_i_table->y[i]; + if (fabs (diff_y) > 1.e-10 || fabs(diff_deriv) > 1.0e-10 || fabs(diff_integ) > 1.0e-10) { + status++; + } + } + + gsl_interp_accel_free (a); + gsl_interp_free (interp); + + return status; +} + +static int +test_linear (void) +{ + int s; + + double data_x[4] = { 0.0, 1.0, 2.0, 3.0 }; + double data_y[4] = { 0.0, 1.0, 2.0, 3.0 }; + double test_x[6] = { 0.0, 0.5, 1.0, 1.5, 2.5, 3.0 }; + double test_y[6] = { 0.0, 0.5, 1.0, 1.5, 2.5, 3.0 }; + double test_dy[6] = { 1.0, 1.0, 1.0, 1.0, 1.0, 1.0 }; + double test_iy[6] = { 0.0, 0.125, 0.5, 9.0/8.0, 25.0/8.0, 9.0/2.0 }; + + xy_table data_table = make_xy_table(data_x, data_y, 4); + xy_table test_table = make_xy_table(test_x, test_y, 6); + xy_table test_d_table = make_xy_table(test_x, test_dy, 6); + xy_table test_i_table = make_xy_table(test_x, test_iy, 6); + + s = test_interp (&data_table, gsl_interp_linear, &test_table, &test_d_table, &test_i_table); + gsl_test (s, "linear interpolation"); + return s; +} + +static int +test_polynomial (void) +{ + int s; + + double data_x[4] = { 0.0, 1.0, 2.0, 3.0 }; + double data_y[4] = { 0.0, 1.0, 2.0, 3.0 }; + double test_x[6] = { 0.0, 0.5, 1.0, 1.5, 2.5, 3.0 }; + double test_y[6] = { 0.0, 0.5, 1.0, 1.5, 2.5, 3.0 }; + double test_dy[6] = { 1.0, 1.0, 1.0, 1.0, 1.0, 1.0 }; + double test_iy[6] = { 0.0, 0.125, 0.5, 9.0/8.0, 25.0/8.0, 9.0/2.0 }; + + xy_table data_table = make_xy_table(data_x, data_y, 4); + xy_table test_table = make_xy_table(test_x, test_y, 6); + xy_table test_d_table = make_xy_table(test_x, test_dy, 6); + xy_table test_i_table = make_xy_table(test_x, test_iy, 6); + + s = test_interp (&data_table, gsl_interp_polynomial, &test_table, &test_d_table, &test_i_table); + gsl_test (s, "polynomial interpolation"); + return s; +} + + +static int +test_cspline (void) +{ + int s; + + double data_x[3] = { 0.0, 1.0, 2.0 }; + double data_y[3] = { 0.0, 1.0, 2.0 }; + double test_x[4] = { 0.0, 0.5, 1.0, 2.0 }; + double test_y[4] = { 0.0, 0.5, 1.0, 2.0 }; + double test_dy[4] = { 1.0, 1.0, 1.0, 1.0 }; + double test_iy[4] = { 0.0, 0.125, 0.5, 2.0 }; + + xy_table data_table = make_xy_table(data_x, data_y, 3); + xy_table test_table = make_xy_table(test_x, test_y, 4); + xy_table test_d_table = make_xy_table(test_x, test_dy, 4); + xy_table test_i_table = make_xy_table(test_x, test_iy, 4); + + s = test_interp (&data_table, gsl_interp_cspline, &test_table, &test_d_table, &test_i_table); + gsl_test (s, "cspline interpolation"); + return s; +} + +static int +test_cspline2 (void) +{ + /* Test taken from Young & Gregory, A Survey of Numerical + Mathematics, Vol 1 Chapter 6.8 */ + + int s; + + double data_x[6] = { 0.0, 0.2, 0.4, 0.6, 0.8, 1.0 }; + + double data_y[6] = { 1.0, + 0.961538461538461, 0.862068965517241, + 0.735294117647059, 0.609756097560976, + 0.500000000000000 } ; + + double test_x[50] = { + 0.00, 0.02, 0.04, 0.06, 0.08, 0.10, 0.12, 0.14, 0.16, 0.18, + 0.20, 0.22, 0.24, 0.26, 0.28, 0.30, 0.32, 0.34, 0.36, 0.38, + 0.40, 0.42, 0.44, 0.46, 0.48, 0.50, 0.52, 0.54, 0.56, 0.58, + 0.60, 0.62, 0.64, 0.66, 0.68, 0.70, 0.72, 0.74, 0.76, 0.78, + 0.80, 0.82, 0.84, 0.86, 0.88, 0.90, 0.92, 0.94, 0.96, 0.98 }; + + double test_y[50] = { + 1.000000000000000, 0.997583282975581, 0.995079933416512, + 0.992403318788142, 0.989466806555819, 0.986183764184894, + 0.982467559140716, 0.978231558888635, 0.973389130893999, + 0.967853642622158, 0.961538461538461, 0.954382579685350, + 0.946427487413627, 0.937740299651188, 0.928388131325928, + 0.918438097365742, 0.907957312698524, 0.897012892252170, + 0.885671950954575, 0.874001603733634, 0.862068965517241, + 0.849933363488199, 0.837622973848936, 0.825158185056786, + 0.812559385569085, 0.799846963843167, 0.787041308336369, + 0.774162807506023, 0.761231849809467, 0.748268823704033, + 0.735294117647059, 0.722328486073082, 0.709394147325463, + 0.696513685724764, 0.683709685591549, 0.671004731246381, + 0.658421407009825, 0.645982297202442, 0.633709986144797, + 0.621627058157454, 0.609756097560976, 0.598112015427308, + 0.586679029833925, 0.575433685609685, 0.564352527583445, + 0.553412100584061, 0.542588949440392, 0.531859618981294, + 0.521200654035625, 0.510588599432241}; + + double test_dy[50] = { + -0.120113913432180, -0.122279726798445, -0.128777166897241, + -0.139606233728568, -0.154766927292426, -0.174259247588814, + -0.198083194617734, -0.226238768379184, -0.258725968873165, + -0.295544796099676, -0.336695250058719, -0.378333644186652, + -0.416616291919835, -0.451543193258270, -0.483114348201955, + -0.511329756750890, -0.536189418905076, -0.557693334664512, + -0.575841504029200, -0.590633926999137, -0.602070603574326, + -0.611319695518765, -0.619549364596455, -0.626759610807396, + -0.632950434151589, -0.638121834629033, -0.642273812239728, + -0.645406366983674, -0.647519498860871, -0.648613207871319, + -0.648687494015019, -0.647687460711257, -0.645558211379322, + -0.642299746019212, -0.637912064630930, -0.632395167214473, + -0.625749053769843, -0.617973724297039, -0.609069178796061, + -0.599035417266910, -0.587872439709585, -0.576731233416743, + -0.566762785681043, -0.557967096502484, -0.550344165881066, + -0.543893993816790, -0.538616580309654, -0.534511925359660, + -0.531580028966807, -0.529820891131095}; + + double test_iy[50] = { + 0.000000000000000, 0.019975905023535, 0.039902753768792, + 0.059777947259733, 0.079597153869625, 0.099354309321042, + 0.119041616685866, 0.138649546385285, 0.158166836189794, + 0.177580491219196, 0.196875783942601, 0.216036382301310, + 0.235045759060558, 0.253888601161251, 0.272550937842853, + 0.291020140643388, 0.309284923399436, 0.327335342246135, + 0.345162795617181, 0.362760024244829, 0.380121111159890, + 0.397241442753010, 0.414117280448683, 0.430745332379281, + 0.447122714446318, 0.463246950320456, 0.479115971441505, + 0.494728117018421, 0.510082134029305, 0.525177177221407, + 0.540012809111123, 0.554589001813881, 0.568906157172889, + 0.582965126887879, 0.596767214344995, 0.610314174616794, + 0.623608214462242, 0.636651992326715, 0.649448618342004, + 0.662001654326309, 0.674315113784241, 0.686393423540581, + 0.698241001711602, 0.709861835676399, 0.721259443710643, + 0.732436874986582, 0.743396709573044, 0.754141058435429, + 0.764671563435718, 0.774989397332469 }; + + xy_table data_table = make_xy_table(data_x, data_y, 6); + xy_table test_table = make_xy_table(test_x, test_y, 50); + xy_table test_d_table = make_xy_table(test_x, test_dy, 50); + xy_table test_i_table = make_xy_table(test_x, test_iy, 50); + + s = test_interp (&data_table, gsl_interp_cspline, &test_table, &test_d_table, &test_i_table); + gsl_test (s, "cspline 1/(1+x^2) interpolation"); + return s; +} + +static int +test_cspline3 (void) +{ + /* This data has been chosen to be random (uneven spacing in x and y) + and the exact cubic spine solution computed using Octave */ + + int s; + + double data_x[7] = { + -1.2139767065644265, + -0.792590494453907, + -0.250954683125019, + 0.665867809951305, + 0.735655088722706, + 0.827622053027153, + 1.426592227816582 + }; + + double data_y[7] = { + -0.00453877449035645, + 0.49763182550668716, + 0.17805472016334534, + 0.40514493733644485, + -0.21595209836959839, + 0.47405586764216423, + 0.46561462432146072 + } ; + + double test_x[19] = { + -1.2139767065644265, + -1.0735146358609200, + -0.9330525651574135, + -0.7925904944539071, + -0.6120452240109444, + -0.4314999535679818, + -0.2509546831250191, + 0.0546528145670890, + 0.3602603122591972, + 0.6658678099513053, + 0.6891302362084388, + 0.7123926624655723, + 0.7356550887227058, + 0.7663107434908548, + 0.7969663982590039, + 0.8276220530271530, + 1.0272787779569625, + 1.2269355028867721, + 1.4265922278165817, + }; + + double test_y[19] = { + -0.00453877449035645, + 0.25816917628390590, + 0.44938881397673230, + 0.49763182550668716, + 0.31389980410075147, + 0.09948951681196887, + 0.17805472016334534, + 1.27633142487980233, + 2.04936553432792001, + 0.40514493733644485, + 0.13322324792901385, + -0.09656315924697809, + -0.21595209836959839, + -0.13551147728045118, + 0.13466779030061801, + 0.47405586764216423, + 1.68064089899304370, + 1.43594739539458649, + 0.46561462432146072 + }; + + double test_dy[19] = { + 1.955137555965937, + 1.700662049790549, + 0.937235531264386, + -0.335141999612553, + -1.401385073563169, + -0.674982149482761, + 1.844066772628670, + 4.202528085784793, + -0.284432022227558, + -11.616813551408383, + -11.272731243226174, + -7.994209291156876, + -1.781247695200491, + 6.373970868827501, + 10.597456848997197, + 10.889210245308570, + 1.803124267866902, + -3.648527318598099, + -5.465744514086432, + }; + + double test_iy[19] = { + 0.000000000000000, + 0.018231117234914, + 0.069178822023139, + 0.137781019634897, + 0.213936442847744, + 0.249280997744777, + 0.267492946016120, + 0.471372708120518, + 1.014473660088477, + 1.477731933018837, + 1.483978291717981, + 1.484256847945450, + 1.480341742628893, + 1.474315901028282, + 1.473972210647307, + 1.483279773396950, + 1.728562698140330, + 2.057796448999396, + 2.253662886537457, + }; + + xy_table data_table = make_xy_table(data_x, data_y, 7); + xy_table test_table = make_xy_table(test_x, test_y, 19); + xy_table test_d_table = make_xy_table(test_x, test_dy, 19); + xy_table test_i_table = make_xy_table(test_x, test_iy, 19); + + s = test_interp (&data_table, gsl_interp_cspline, &test_table, &test_d_table, &test_i_table); + gsl_test (s, "cspline arbitrary data interpolation"); + return s; +} + +static int +test_csplinep (void) +{ + /* This data has been chosen to be random (uneven spacing in x and y) + and the exact cubic spine solution computed using Octave */ + + int s; + + double data_x[11] = { + 0.000000000000000, + 0.130153674349869, + 0.164545962312740, + 0.227375461261537, + 0.256465324353657, + 0.372545206874658, + 0.520820016781720, + 0.647654717733075, + 0.753429306654340, + 0.900873984827658, + 1.000000000000000, + }; + + double data_y[11] = { + 0.000000000000000, + 0.729629261832041, + 0.859286331568207, + 0.989913099419008, + 0.999175006262120, + 0.717928599519215, + -0.130443237213363, + -0.800267961158980, + -0.999767873040527, + -0.583333769240853, + -0.000000000000000, + } ; + + double test_x[31] = { + 0.000000000000000, + 0.043384558116623, + 0.086769116233246, + 0.130153674349869, + 0.141617770337492, + 0.153081866325116, + 0.164545962312740, + 0.185489128629005, + 0.206432294945271, + 0.227375461261537, + 0.237072082292243, + 0.246768703322951, + 0.256465324353657, + 0.295158618527324, + 0.333851912700991, + 0.372545206874658, + 0.421970143510346, + 0.471395080146033, + 0.520820016781720, + 0.563098250432172, + 0.605376484082623, + 0.647654717733075, + 0.682912914040164, + 0.718171110347252, + 0.753429306654340, + 0.802577532712113, + 0.851725758769885, + 0.900873984827658, + 0.933915989885105, + 0.966957994942553, + 1.000000000000000 + }; + + double test_y[31] = { + 0.000000000000000, + 0.268657574670719, + 0.517940878523929, + 0.729629261832041, + 0.777012551497867, + 0.820298314554859, + 0.859286331568207, + 0.918833991960315, + 0.962624749226346, + 0.989913099419008, + 0.996756196601349, + 0.999858105635752, + 0.999175006262120, + 0.959248551766306, + 0.863713527741856, + 0.717928599519215, + 0.470065187871106, + 0.177694938589523, + -0.130443237213363, + -0.385093922365765, + -0.613840011545983, + -0.800267961158980, + -0.912498361131651, + -0.980219217412290, + -0.999767873040528, + -0.943635958253643, + -0.800314354800596, + -0.583333769240853, + -0.403689914131666, + -0.206151346799382, + -0.000000000000000 + }; + + double test_dy[31] = { + 6.275761975917336, + 6.039181349093287, + 5.382620652895025, + 4.306079887322550, + 3.957389777282752, + 3.591234754612763, + 3.207614819312586, + 2.473048186927024, + 1.702885029353488, + 0.897125346591982, + 0.513561009477969, + 0.125477545550710, + -0.267125045189792, + -1.773533414873785, + -3.141450982859891, + -4.370877749148106, + -5.562104227060234, + -6.171864888961167, + -6.200159734850907, + -5.781556055213110, + -4.974725570010514, + -3.779668279243120, + -2.569220222282655, + -1.254891157670244, + 0.163318914594122, + 2.074985916277011, + 3.711348850147548, + 5.072407716205733, + 5.754438923510391, + 6.155557010080926, + 6.275761975917336 + }; + + double test_iy[31] = { + 0.000000000000000, + 0.005864903144198, + 0.023030998930796, + 0.050262495763030, + 0.058902457844100, + 0.068062330564832, + 0.077693991819461, + 0.096340576055474, + 0.116070578226521, + 0.136546192283223, + 0.146181187290769, + 0.155864434185569, + 0.165559443629720, + 0.203636318965633, + 0.239075190181586, + 0.269828050745236, + 0.299428805999600, + 0.315560685785616, + 0.316734151903742, + 0.305773798930857, + 0.284537037103156, + 0.254466034797342, + 0.224146112780097, + 0.190643050847000, + 0.155590744566140, + 0.107448508851745, + 0.064263083957312, + 0.029987183298960, + 0.013618510529526, + 0.003506827320794, + 0.000090064010007, + }; + + xy_table data_table = make_xy_table(data_x, data_y, 11); + xy_table test_table = make_xy_table(test_x, test_y, 31); + xy_table test_d_table = make_xy_table(test_x, test_dy, 31); + xy_table test_i_table = make_xy_table(test_x, test_iy, 31); + + s = test_interp (&data_table, gsl_interp_cspline_periodic, &test_table, &test_d_table, &test_i_table); + gsl_test (s, "cspline periodic sine interpolation"); + return s; +} + +static int +test_csplinep2 (void) +{ + /* This data tests the periodic case n=3 */ + + int s; + + double data_x[3] = { + 0.123, + 0.423, + 1.123 + }; + + double data_y[3] = { + 0.456000000000000, + 1.407056516295154, + 0.456000000000000 + } ; + + double test_x[61] = { + 0.123000000000000, + 0.133000000000000, + 0.143000000000000, + 0.153000000000000, + 0.163000000000000, + 0.173000000000000, + 0.183000000000000, + 0.193000000000000, + 0.203000000000000, + 0.213000000000000, + 0.223000000000000, + 0.233000000000000, + 0.243000000000000, + 0.253000000000000, + 0.263000000000000, + 0.273000000000000, + 0.283000000000000, + 0.293000000000000, + 0.303000000000000, + 0.313000000000000, + 0.323000000000000, + 0.333000000000000, + 0.343000000000000, + 0.353000000000000, + 0.363000000000000, + 0.373000000000000, + 0.383000000000000, + 0.393000000000000, + 0.403000000000000, + 0.413000000000000, + 0.423000000000000, + 0.446333333333333, + 0.469666666666667, + 0.493000000000000, + 0.516333333333333, + 0.539666666666667, + 0.563000000000000, + 0.586333333333333, + 0.609666666666667, + 0.633000000000000, + 0.656333333333333, + 0.679666666666667, + 0.703000000000000, + 0.726333333333333, + 0.749666666666667, + 0.773000000000000, + 0.796333333333333, + 0.819666666666667, + 0.843000000000000, + 0.866333333333333, + 0.889666666666667, + 0.913000000000000, + 0.936333333333333, + 0.959666666666667, + 0.983000000000000, + 1.006333333333333, + 1.029666666666667, + 1.053000000000000, + 1.076333333333333, + 1.099666666666667, + 1.123000000000000 + }; + + double test_y[61] = { + 0.456000000000000, + 0.475443822110923, + 0.497423794931967, + 0.521758764840979, + 0.548267578215809, + 0.576769081434305, + 0.607082120874316, + 0.639025542913690, + 0.672418193930275, + 0.707078920301921, + 0.742826568406475, + 0.779479984621787, + 0.816858015325704, + 0.854779506896076, + 0.893063305710751, + 0.931528258147577, + 0.969993210584403, + 1.008277009399078, + 1.046198500969450, + 1.083576531673367, + 1.120229947888679, + 1.155977595993233, + 1.190638322364879, + 1.224030973381464, + 1.255974395420838, + 1.286287434860848, + 1.314788938079344, + 1.341297751454174, + 1.365632721363187, + 1.387612694184230, + 1.407056516295154, + 1.442092968697928, + 1.463321489456714, + 1.471728359403224, + 1.468299859369172, + 1.454022270186272, + 1.429881872686237, + 1.396864947700781, + 1.355957776061616, + 1.308146638600458, + 1.254417816149018, + 1.195757589539010, + 1.133152239602149, + 1.067588047170148, + 1.000051293074719, + 0.931528258147577, + 0.863005223220435, + 0.795468469125006, + 0.729904276693004, + 0.667298926756143, + 0.608638700146136, + 0.554909877694696, + 0.507098740233537, + 0.466191568594372, + 0.433174643608916, + 0.409034246108881, + 0.394756656925981, + 0.391328156891929, + 0.399735026838439, + 0.420963547597225, + 0.456000000000000 + }; + + double test_dy[61] = { + 1.8115362215145774, + 2.0742089736341924, + 2.3187663635386602, + 2.5452083912279826, + 2.7535350567021584, + 2.9437463599611897, + 3.1158423010050744, + 3.2698228798338147, + 3.4056880964474079, + 3.5234379508458549, + 3.6230724430291570, + 3.7045915729973125, + 3.7679953407503231, + 3.8132837462881874, + 3.8404567896109061, + 3.8495144707184790, + 3.8404567896109061, + 3.8132837462881874, + 3.7679953407503231, + 3.7045915729973125, + 3.6230724430291565, + 3.5234379508458549, + 3.4056880964474074, + 3.2698228798338147, + 3.1158423010050749, + 2.9437463599611897, + 2.7535350567021584, + 2.5452083912279830, + 2.3187663635386597, + 2.0742089736341924, + 1.8115362215145772, + 1.1986331332354823, + 0.6279992234583869, + 0.0996344921833026, + -0.3864610605897765, + -0.8302874348608467, + -1.2318446306299125, + -1.5911326478969707, + -1.9081514866620208, + -2.1829011469250670, + -2.4153816286861041, + -2.6055929319451341, + -2.7535350567021584, + -2.8592080029571765, + -2.9226117707101862, + -2.9437463599611893, + -2.9226117707101862, + -2.8592080029571760, + -2.7535350567021593, + -2.6055929319451354, + -2.4153816286861045, + -2.1829011469250656, + -1.9081514866620242, + -1.5911326478969716, + -1.2318446306299160, + -0.8302874348608498, + -0.3864610605897769, + 0.0996344921832995, + 0.6279992234583824, + 1.1986331332354769, + 1.8115362215145772 + }; + + double test_iy[61] = { + 0.000000000000000, + 0.004655030170954, + 0.009517330277919, + 0.014611356059886, + 0.019959751719625, + 0.025583349923681, + 0.031501171802382, + 0.037730426949832, + 0.044286513423914, + 0.051183017746288, + 0.058431714902395, + 0.066042568341453, + 0.074023729976459, + 0.082381540184189, + 0.091120527805195, + 0.100243410143811, + 0.109751092968147, + 0.119642670510092, + 0.129915425465314, + 0.140564828993259, + 0.151584540717153, + 0.162966408723997, + 0.174700469564574, + 0.186774948253444, + 0.199176258268946, + 0.211889001553197, + 0.224895968512091, + 0.238178138015305, + 0.251714677396289, + 0.265482942452275, + 0.279458477444273, + 0.312726362409309, + 0.346648754292945, + 0.380914974633193, + 0.415237358187469, + 0.449351252932597, + 0.483015020064806, + 0.516010033999735, + 0.548140682372425, + 0.579234366037328, + 0.609141499068300, + 0.637735508758604, + 0.664912835620912, + 0.690592933387298, + 0.714718269009247, + 0.737254322657649, + 0.758189587722801, + 0.777535570814405, + 0.795326791761572, + 0.811620783612819, + 0.826498092636068, + 0.840062278318649, + 0.852439913367300, + 0.863780583708163, + 0.874256888486789, + 0.884064440068133, + 0.893421864036559, + 0.902570799195836, + 0.911775897569142, + 0.921324824399059, + 0.931528258147577 + }; + + xy_table data_table = make_xy_table(data_x, data_y, 3); + xy_table test_table = make_xy_table(test_x, test_y, 61); + xy_table test_d_table = make_xy_table(test_x, test_dy, 61); + xy_table test_i_table = make_xy_table(test_x, test_iy, 61); + + s = test_interp (&data_table, gsl_interp_cspline_periodic, &test_table, &test_d_table, &test_i_table); + gsl_test (s, "cspline periodic 3pt interpolation"); + return s; +} + +static int +test_akima (void) +{ + int s; + + double data_x[5] = { 0.0, 1.0, 2.0, 3.0, 4.0 }; + double data_y[5] = { 0.0, 1.0, 2.0, 3.0, 4.0 }; + double test_x[4] = { 0.0, 0.5, 1.0, 2.0 }; + double test_y[4] = { 0.0, 0.5, 1.0, 2.0 }; + double test_dy[4] = { 1.0, 1.0, 1.0, 1.0 }; + double test_iy[4] = { 0.0, 0.125, 0.5, 2.0 }; + + xy_table data_table = make_xy_table(data_x, data_y, 5); + xy_table test_table = make_xy_table(test_x, test_y, 4); + xy_table test_d_table = make_xy_table(test_x, test_dy, 4); + xy_table test_i_table = make_xy_table(test_x, test_iy, 4); + + s = test_interp (&data_table, gsl_interp_akima, &test_table, &test_d_table, &test_i_table); + gsl_test (s, "akima interpolation"); + return s; +} + +static int +test_steffen1 (void) +{ + int s; + + double data_x[5] = { 0.0, 1.0, 2.0, 3.0, 4.0 }; + double data_y[5] = { 0.0, 1.0, 2.0, 3.0, 4.0 }; + + double test_x[6] = { 0.0, 0.5, 1.0, 2.0, 2.5, 3.95 }; + double test_y[6] = { 0.0, 0.5, 1.0, 2.0, 2.5, 3.95 }; + double test_dy[6] = { 1.0, 1.0, 1.0, 1.0, 1.0, 1.0 }; + double test_iy[6] = { 0.0, 0.125, 0.5, 2.0, 3.125, 7.80125 }; + + xy_table data_table = make_xy_table(data_x, data_y, 5); + xy_table test_table = make_xy_table(test_x, test_y, 4); + xy_table test_d_table = make_xy_table(test_x, test_dy, 4); + xy_table test_i_table = make_xy_table(test_x, test_iy, 4); + + s = test_interp (&data_table, gsl_interp_steffen, &test_table, &test_d_table, &test_i_table); + gsl_test (s, "steffen interpolation test 1"); + return s; +} + +static int +test_steffen2 (void) +{ + int s; + + double data_x[30] = { + 4.673405471947611, 4.851675778029557, 6.185473620119991, + 7.066003430727031, 7.236222118389267, 7.82067161881444, + 8.054504031621493, 8.615033792800752, 9.16666529764867, + 9.442092828126395, 10.719577968900381, 11.741967577609238, + 12.564881194673035, 12.938424721515084, 12.985892202096888, + 13.995771653255744, 14.459157783380315, 15.834857667614848, + 15.887779086499942, 18.64645279534696, 19.256361741244287, + 19.85100457105047, 19.943627313550987, 20.5033910115468, + 20.895380493234843, 21.759942483053962, 21.948984866760803, + 22.2504057728461, 22.741860290952104, 23.088720630939164 }; + + double data_y[30] = { + -6.131584089652438, 4.997132870704837, 9.50359639889188, + -3.788474042493764, 1.98825324341826, -6.553460294945401, + 8.44565760012345, -3.643687601520438, -4.720262269613782, + -5.31956608504474, 4.7484698519996655, 1.8191111043001218, + 2.7234424260251124, -7.282776099988966, -6.966038807035955, + 2.6047260012112545, -3.6363485275348033, -4.124714595822157, + -4.820986899771757, -2.8550035950284602, 6.017204757558943, + 6.7275899382734075, -9.423359755713639, -0.3645325139870703, + 6.925739188986089, -0.07843256857855074, 1.6744315603866244, + -8.332083151442944, 6.059246349756446, -7.360159198725659 }; + + double test_x[129] = { + 4.6734054719476106,4.8516757780295574,4.8575586235375265, + 5.0417117751274407,5.2258649267173567,5.4100180783072727, + 5.5941712298971886,5.7783243814871028,5.9624775330770188, + 6.1466306846669347,6.1854736201199909,6.3307838362568507, + 6.5149369878467667,6.6990901394366809,6.8832432910265968, + 7.0660034307270312,7.0673964426165128,7.236222118389267, + 7.2515495942064288,7.4357027457963438,7.6198558973862589, + 7.8040090489761749,7.8206716188144396,7.9881622005660908, + 8.0545040316214926,8.172315352156005,8.356468503745921, + 8.5406216553358369,8.6150337928007517,8.7247748069257529, + 8.9089279585156689,9.0930811101055831,9.1666652976486702, + 9.277234261695499,9.4420928281263947,9.461387413285415, + 9.645540564875331,9.8296937164652469,10.013846868055161, + 10.198000019645077,10.382153171234993,10.566306322824907, + 10.719577968900381,10.750459474414823,10.934612626004739, + 11.118765777594655,11.302918929184571,11.487072080774485, + 11.671225232364399,11.741967577609238,11.855378383954315, + 12.039531535544231,12.223684687134147,12.407837838724063, + 12.564881194673035,12.591990990313979,12.776144141903895, + 12.938424721515084,12.960297293493811,12.985892202096888, + 13.144450445083727,13.328603596673641,13.512756748263556, + 13.696909899853472,13.881063051443387,13.995771653255744, + 14.065216203033303,14.249369354623219,14.433522506213134, + 14.459157783380315,14.617675657803051,14.801828809392966, + 14.985981960982881,15.170135112572796,15.354288264162712, + 15.538441415752628,15.722594567342544,15.834857667614848, + 15.90674771893246,15.887779086499942,16.090900870522375, + 16.27505402211229,16.459207173702204,16.643360325292122, + 16.827513476882036,17.01166662847195,17.195819780061868, + 17.379972931651782,17.5641260832417,17.748279234831614, + 17.932432386421532,18.116585538011446,18.300738689601364, + 18.484891841191278,18.64645279534696,18.669044992781188, + 18.853198144371106,19.03735129596102,19.221504447550938, + 19.256361741244287,19.405657599140852,19.58981075073077, + 19.773963902320684,19.851004571050471,19.958117053910598, + 19.943627313550987,20.142270205500516,20.32642335709043, + 20.5033910115468,20.510576508680348,20.694729660270262, + 20.87888281186018,20.895380493234843,21.063035963450094, + 21.247189115040012,21.431342266629926,21.61549541821984, + 21.759942483053962,21.799648569809754,21.948984866760803, + 21.983801721399669,22.167954872989586,22.250405772846101, + 22.352108024579501,22.536261176169418,22.720414327759332, + 22.741860290952104,22.90456747934925,23.088720630939164 }; + + double test_y[129] = { + -6.1315840896524376, 4.9971328707048368, 5.0367975988827167, + 6.1897906340782765, 7.170975366812117, 7.9803517970842286, + 8.6179199248946077, 9.083679750243256, 9.3776312731301772, + 9.4997744935553676, 9.5035963988918795, 8.5371013292095554, + 5.3135045284256019, 1.2120062346303317, -2.3083133782071208, + -3.788474042493764, -3.7873197326712797, 1.98825324341826, + 1.9709370138809248, -0.31768851396215103, -4.2211558425051745, + -6.5330277558649303, -6.5534602949454008, 5.5087083141507147, + 8.4456576001234502, 7.1443430435268214, 1.9932653799771245, + -2.8426372908118083, -3.6436876015204378, -3.9926784426485034, + -4.3315242293057175, -4.5849882013553547, -4.7202622696137819, + -5.0157009305506106, -5.3195660850447402, -5.3127453670702938, + -4.6348437675141847, -3.1014810884327102, -1.0745634258401102, + 1.0840031242494419, 3.0123124658217071, 4.3484585028624627, + 4.7484698519996655, 4.740613456600772, 4.4142234654988952, + 3.7574719541934956, 2.9757785771330334, 2.274562988765974, + 1.8592448435407634, 1.8191111043001218, 1.8659054809992697, + 2.0883298868527498, 2.3859686670095699, 2.6372078307738107, + 2.7234424260251124, 2.5729816013335247, -3.258105131647655, + -7.2827760999889657, -7.179945071809863, -6.9660388070359547, + -5.5662805880783406, -3.3905902235190721, -1.0497645733987406, + 1.0095869363327665, 2.3408548797255095, 2.6047260012112545, + 2.2325150500282476, -0.91241316251151927, -3.5649171021138555, + -3.6363485275348033, -3.7309363021244821, -3.8038342533632736, + -3.8503835649797429, -3.8846412514674595, -3.920664327319995, + -3.9725098070309213, -4.0542347050938083, -4.1247145958221569, + -4.8208939493861829, -4.8209868997717571, -4.8103284962540727, + -4.7822416973267625, -4.7366335526042516, -4.6735040620865389, + -4.5928532257736272, -4.4946810436655156, -4.3789875157622005, + -4.2457726420636881, -4.0950364225699714, -3.9267788572810582, + -3.7409999461969403, -3.537699689317626, -3.3168780866431069, + -3.0785351381733914, -2.8550035950284602, -2.7914506045621672, + -0.46968123806956008, 3.263658433044764, 5.8622198554846658, + 6.0172047575589431, 6.3291356295622618, 6.5905310151592165, + 6.7156659481449141, 6.7275899382734075, -9.4118959280855066, + -9.4233597557136388, -7.6111870705157543, -3.9651685725226056, + -0.36453251398707032, -0.23537781181431175, 4.0332797539781309, + 6.899794364641159, 6.9257391889860891, 6.2377210430025594, + 4.3902665602806792, 2.1878722453596344, 0.44278317319805183, + -0.078432568578550743, 0.12107113682074738, 1.6744315603866244, + 1.3047436323966959, -6.4955024539509765, -8.3320831514429443, + -6.7382472104931805, 0.61052993339902706, 5.9794239504090552, + 6.0592463497564459, 1.5387265272596853, -7.3601591987256612 }; + + double test_dy[129] = { + 62.426083204466224, 6.757341159173202, 6.727537246743899, + 5.7945730211610407, 4.8616087955781726, 3.9286445699953054, + 2.9956803444124378, 2.0627161188295791, 1.1297518932467119, + 0.1967876676638447, 0, -12.480296842307126, + -21.209126982426163, -22.014768399615317, -14.897221093874615, + 0, 1.65274069980919, 0, + -2.2393981239975669, -19.714311699236049, -19.77742868994725, + -2.4287490961310456, 0, 78.213312807624717, + 0, -20.358420305108574, -31.350476855816961, + -16.93545425712459, -3.9032385156832157, -2.5401833171916435, + -1.3740294011308083, -1.6128919418291603, -2.1012124848241789, + -2.8800570317456784, 0, 0.70341285683675259, + 6.3314138906742139, 9.9941697310971538, 11.69168037810557, + 11.42394583169949, 9.1909660918788916, 4.992741158643824, + 0, -0.50358091648162351, -2.8552721239834269, + -4.0914806331173992, -4.2122064438835425, -3.2174495562818706, + -1.1072099703123885, 0, 0.78347408424733667, + 1.5221058615312819, 1.6003417148468082, 1.018181644193916, + 0, -10.817925943273289, -39.490030870551372, + 0, 8.0126635338650072, 6.7986203849007927, + 10.557804177353285, 12.667135433334296, 12.351260158262027, + 9.6101783521364421, 4.44389001495753, 0, + -10.1306309231183, -19.882866043398995, -4.7826445467139278, + -0.70998925548225966, -0.49283947499262398, -0.31159279753453034, + -0.20667940230488324, -0.17809928930368468, -0.22585245853093405, + -0.3499389099866323, -0.55035864367077902, -0.70998925548225966, + 0.0098004308855327432, 0, 0.10494594234665755, + 0.20009145380778143, 0.2952369652689053, 0.39038247673003107, + 0.48552798819115495, 0.58067349965227877, 0.67581901111340459, + 0.77096452257452841, 0.86611003403565412, 0.96125554549677805, + 1.0564010569579039, 1.1515465684190276, 1.2466920798801533, + 1.3418375913412772, 1.4253105022449177, 4.1661049863071913, + 18.74497348837053, 19.496500284294363, 6.4206853740787171, + 2.3892836005304425, 1.7894106566060179, 1.0494805960296585, + 0.30955053545331346, 0, 1.5724451183167569, + 0, 16.386389851530527, 21.613477536080744, + 17.603560096681914, 18.338573561497682, 23.697110333020628, + 3.1105642331329868, 0, -7.5982202651552164, + -11.73098890423519, -11.453053366134201, -6.7644136508523696, + 0, 9.2309078320594402, 0, + -20.350273706124355, -39.581660196515507, 0, + 28.835095151183879, 42.753317235684989, 7.3325239511975031, + 0, -47.053315974301256, -38.688209637869583 }; + + double test_iy[129] = { + 0, 0.046311303303274043, 0.07582542065258166, + 1.1121678097008914, 2.345017979757877, 3.7427368904558875, + 5.2736855014272832, 6.9062247723044061, 8.6087156627196464, + 10.349519132305348, 10.718617229125304, 12.051326255780914, + 13.351310568583624, 13.954434023333466, 13.833375399536308, + 13.23478503216295, 13.229508179502936, 13.081569421202504, + 13.111955459764134, 13.313565584429645, 12.895822708651364, + 11.856586384851303, 11.747502930901248, 11.477166081331394, + 11.968731461589641, 12.910617813249443, 13.783041410703255, + 13.664096839344904, 13.416752727534579, 12.996373500853053, + 12.226613834386363, 11.406286934906419, 11.064147626707395, + 10.526693424249395, 9.6682418398824055, 9.5656469982362644, + 8.633802142647145, 7.911116775692733, 7.5218036771498298, + 7.5234294786346014, 7.9069146636026106, 8.5965335673487839, + 9.3034583640488648, 9.4500169740341917, 10.299608964240058, + 11.055524261651918, 11.675840089542856, 12.156462347951148, + 12.53112561368027, 12.660771626086403, 12.868892222896084, + 13.230897278463143, 13.642654271367054, 14.106816365848598, + 14.529836204259333, 14.602291235557717, 14.620235691106975, + 13.678281413948246, 13.51979351456291, 13.338827208895861, + 12.337400222501822, 11.506721190837634, 11.098761199438101, + 11.102808164918775, 11.425905470576772, 11.714428553431798, + 11.886459852625201, 12.035570442032403, 11.580639494361572, + 11.488113239473538, 10.903735363611753, 10.209447282562856, + 9.5043766268555689, 8.7920812597559994, 8.0735304010092825, + 7.347104626839644, 6.6085958699503662, 6.1496664193039994, + 5.821344166329677, 5.9127911070795323, 4.9342652985615576, + 4.050745397809842, 3.1740110751228041, 2.3072889415487108, + 1.4538056081358768, 0.61678768593257072, -0.20053821401294236, + -0.99494548065234767, -1.7632075029373926, -2.5020976698197641, + -3.2083893702512087, -3.8788559931834152, -4.5102709275681283, + -5.0994075623570394, -5.5789032190742072, -5.6428026999265457, + -5.9842769011998804, -5.729140886963938, -4.8519085924998322, + -4.6444581063590329, -3.7217151397093993, -2.5300254086689806, + -1.3027452894525609, -0.78475347239267057, -1.0460847630211827, + -0.90959826921338605, -2.6553766359304607, -3.7360597404585745, + -4.1087031972797643, -4.1108616867222691, -3.776307276733156, + -2.7114490122334045, -2.5973338374383879, -1.4760729895576692, + -0.48580494729501034, 0.11910209432525942, 0.34807359178739627, + 0.36262668088219696, 0.3622604193055981, 0.51348240778475363, + 0.56740090208414018, 0.14380211642697149, -0.48989527970345625, + -1.2810928311228711, -1.8846453955503084, -1.1777647142370817, + -1.0483932372566702, -0.32646483194908105, -0.88612247621927298 }; + + xy_table data_table = make_xy_table(data_x, data_y, 30); + xy_table test_table = make_xy_table(test_x, test_y, 129); + xy_table test_d_table = make_xy_table(test_x, test_dy, 129); + xy_table test_i_table = make_xy_table(test_x, test_iy, 129); + + s = test_interp (&data_table, gsl_interp_steffen, &test_table, &test_d_table, &test_i_table); + gsl_test (s, "steffen interpolation test 2"); + return s; +} + +int +main (int argc, char **argv) +{ + int status = 0; + + gsl_ieee_env_setup (); + + argc = 0; /* prevent warnings about unused parameters */ + argv = 0; + + status += test_bsearch(); + status += test_linear(); + status += test_polynomial(); + status += test_cspline(); + status += test_cspline2(); + status += test_cspline3(); + status += test_csplinep(); + status += test_csplinep2(); + status += test_akima(); + status += test_steffen1(); + status += test_steffen2(); + + status += test_interp2d_main(); + + exit (gsl_test_summary()); +} diff --git a/gsl-2.5/interpolation/test.log b/gsl-2.5/interpolation/test.log new file mode 100644 index 00000000..c2e63bf1 --- /dev/null +++ b/gsl-2.5/interpolation/test.log @@ -0,0 +1 @@ +Completed [3794/3794] diff --git a/gsl-2.5/interpolation/test.trs b/gsl-2.5/interpolation/test.trs new file mode 100644 index 00000000..3f0f396c --- /dev/null +++ b/gsl-2.5/interpolation/test.trs @@ -0,0 +1,4 @@ +:test-result: PASS +:global-test-result: PASS +:recheck: no +:copy-in-global-log: no diff --git a/gsl-2.5/interpolation/test2d.c b/gsl-2.5/interpolation/test2d.c new file mode 100644 index 00000000..b6696f11 --- /dev/null +++ b/gsl-2.5/interpolation/test2d.c @@ -0,0 +1,344 @@ +/* interpolation/test2d.c + * + * Copyright 2012 David Zaslavsky + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include +#include +#include + +/* tests a single evaluator function from the low-level interface */ +static int +test_single_low_level( + double (*evaluator)(const gsl_interp2d *, const double[], const double[], + const double[], const double, const double, + gsl_interp_accel *, gsl_interp_accel *), + int (*evaluator_e)(const gsl_interp2d *, const double[], const double[], + const double[], const double, const double, + gsl_interp_accel *, gsl_interp_accel *, double *), + const gsl_interp2d * interp, const double xarr[], const double yarr[], + const double zarr[], const double x, const double y, + gsl_interp_accel * xa, gsl_interp_accel * ya, + const double expected_results[], size_t i) +{ + if (expected_results != NULL) + { + int status; + double result = evaluator(interp, xarr, yarr, zarr, x, y, xa, ya); + gsl_test_rel(result, expected_results[i], 1e-10, + "low level %s %d", gsl_interp2d_name(interp), i); + + status = evaluator_e(interp, xarr, yarr, zarr, x, y, xa, ya, &result); + if (status == GSL_SUCCESS) + { + gsl_test_rel(result, expected_results[i], 1e-10, + "low level _e %s %d", gsl_interp2d_name(interp), i); + } + } + + return 0; +} + +/* tests a single evaluator function from the high-level interface */ +static int +test_single_high_level( + double (*evaluator)(const gsl_spline2d *, const double, const double, + gsl_interp_accel *, gsl_interp_accel *), + int (*evaluator_e)(const gsl_spline2d *, const double, const double, + gsl_interp_accel *, gsl_interp_accel *, double *), + const gsl_spline2d * interp, const double x, const double y, + gsl_interp_accel * xa, gsl_interp_accel * ya, + const double expected_results[], size_t i) +{ + if (expected_results != NULL) + { + int status; + double result = evaluator(interp, x, y, xa, ya); + + gsl_test_rel(result, expected_results[i], 1e-10, + "high level %s %d", gsl_spline2d_name(interp), i); + + status = evaluator_e(interp, x, y, xa, ya, &result); + if (status == GSL_SUCCESS) + { + gsl_test_rel(result, expected_results[i], 1e-10, + "high level _e %s %d", gsl_spline2d_name(interp), i); + } + } + + return 0; +} + +/* + * Tests that a given interpolation type reproduces the data points + * it is given, and then tests that it correctly reproduces additional + * values. + */ +static int +test_interp2d( +const double xarr[], const double yarr[], const double zarr[], /* data */ + size_t xsize, size_t ysize, /* array sizes */ + const double xval[], const double yval[], /* test points */ + const double zval[], /* expected results */ + const double zxval[], const double zyval[], + const double zxxval[], const double zyyval[], const double zxyval[], + size_t test_size, /* number of test points */ + const gsl_interp2d_type * T) +{ + gsl_interp_accel *xa = gsl_interp_accel_alloc(); + gsl_interp_accel *ya = gsl_interp_accel_alloc(); + int status = 0; + size_t xi, yi, zi, i; + gsl_interp2d * interp = gsl_interp2d_alloc(T, xsize, ysize); + gsl_spline2d * interp_s = gsl_spline2d_alloc(T, xsize, ysize); + unsigned int min_size = gsl_interp2d_type_min_size(T); + + gsl_test_int(min_size, T->min_size, "gsl_interp2d_type_min_size on %s", gsl_interp2d_name(interp)); + + gsl_interp2d_init(interp, xarr, yarr, zarr, xsize, ysize); + gsl_spline2d_init(interp_s, xarr, yarr, zarr, xsize, ysize); + + /* First check that the interpolation reproduces the given points */ + for (xi = 0; xi < xsize; xi++) + { + double x = xarr[xi]; + for (yi = 0; yi < ysize; yi++) + { + double y = yarr[yi]; + + zi = gsl_interp2d_idx(interp, xi, yi); + test_single_low_level(&gsl_interp2d_eval, &gsl_interp2d_eval_e, + interp, xarr, yarr, zarr, x, y, + xa, ya, zarr, zi); + test_single_low_level(&gsl_interp2d_eval_extrap, + &gsl_interp2d_eval_e_extrap, interp, + xarr, yarr, zarr, x, y, xa, ya, zarr, zi); + test_single_high_level(&gsl_spline2d_eval, &gsl_spline2d_eval_e, + interp_s, x, y, xa, ya, zarr, zi); + } + } + + /* Then check additional points provided */ + for (i = 0; i < test_size; i++) + { + double x = xval[i]; + double y = yval[i]; + + test_single_low_level(&gsl_interp2d_eval, &gsl_interp2d_eval_e, interp, xarr, yarr, zarr, x, y, xa, ya, zval, i); + test_single_low_level(&gsl_interp2d_eval_deriv_x, &gsl_interp2d_eval_deriv_x_e, interp, xarr, yarr, zarr, x, y, xa, ya, zxval, i); + test_single_low_level(&gsl_interp2d_eval_deriv_y, &gsl_interp2d_eval_deriv_y_e, interp, xarr, yarr, zarr, x, y, xa, ya, zyval, i); + test_single_low_level(&gsl_interp2d_eval_deriv_xx,&gsl_interp2d_eval_deriv_xx_e, interp, xarr, yarr, zarr, x, y, xa, ya, zxxval, i); + test_single_low_level(&gsl_interp2d_eval_deriv_yy,&gsl_interp2d_eval_deriv_yy_e, interp, xarr, yarr, zarr, x, y, xa, ya, zyyval, i); + test_single_low_level(&gsl_interp2d_eval_deriv_xy,&gsl_interp2d_eval_deriv_xy_e, interp, xarr, yarr, zarr, x, y, xa, ya, zxyval, i); + + test_single_high_level(&gsl_spline2d_eval, &gsl_spline2d_eval_e, interp_s, x, y, xa, ya, zval, i); + test_single_high_level(&gsl_spline2d_eval_deriv_x, &gsl_spline2d_eval_deriv_x_e, interp_s, x, y, xa, ya, zxval, i); + test_single_high_level(&gsl_spline2d_eval_deriv_y, &gsl_spline2d_eval_deriv_y_e, interp_s, x, y, xa, ya, zyval, i); + test_single_high_level(&gsl_spline2d_eval_deriv_xx,&gsl_spline2d_eval_deriv_xx_e, interp_s, x, y, xa, ya, zxxval, i); + test_single_high_level(&gsl_spline2d_eval_deriv_yy,&gsl_spline2d_eval_deriv_yy_e, interp_s, x, y, xa, ya, zyyval, i); + test_single_high_level(&gsl_spline2d_eval_deriv_xy,&gsl_spline2d_eval_deriv_xy_e, interp_s, x, y, xa, ya, zxyval, i); + + test_single_low_level(&gsl_interp2d_eval_extrap, &gsl_interp2d_eval_e_extrap, interp, xarr, yarr, zarr, x, y, xa, ya, zval, i); + } + + gsl_interp_accel_free(xa); + gsl_interp_accel_free(ya); + gsl_interp2d_free(interp); + gsl_spline2d_free(interp_s); + + return status; +} + +/* + * Tests bilinear interpolation using a symmetric function, f(x,y)==f(y,x), + * and diagonal interpolation points (x,y) where x==y. If these tests don't + * pass, something is seriously broken. + */ +static int +test_bilinear_symmetric() +{ + int status; + double xarr[] = {0.0, 1.0, 2.0, 3.0}; + double yarr[] = {0.0, 1.0, 2.0, 3.0}; + double zarr[] = {1.0, 1.1, 1.2, 1.3, + 1.1, 1.2, 1.3, 1.4, + 1.2, 1.3, 1.4, 1.5, + 1.3, 1.4, 1.5, 1.6}; + double xval[] = {0.0, 0.5, 1.0, 1.5, 2.5, 3.0}; + double yval[] = {0.0, 0.5, 1.0, 1.5, 2.5, 3.0}; + double zval[] = {1.0, 1.1, 1.2, 1.3, 1.5, 1.6}; + size_t xsize = sizeof(xarr) / sizeof(xarr[0]); + size_t ysize = sizeof(yarr) / sizeof(yarr[0]); + size_t test_size = sizeof(xval) / sizeof(xval[0]); + + status = test_interp2d(xarr, yarr, zarr, xsize, ysize, xval, yval, zval, + NULL, NULL, NULL, NULL, NULL, test_size, + gsl_interp2d_bilinear); + gsl_test(status, "bilinear interpolation with symmetric values"); + + return status; +} + +/* + * Tests bilinear interpolation with an asymmetric function, f(x,y)!=f(y,x), + * and off-diagonal interpolation points (x,y) where x and y may or may not + * be equal. + */ +static int +test_bilinear_asymmetric_z() +{ + int status; + double xarr[] = {0.0, 1.0, 2.0, 3.0}; + double yarr[] = {0.0, 1.0, 2.0, 3.0}; + double zarr[] = {1.0, 1.1, 1.2, 1.4, + 1.3, 1.4, 1.5, 1.7, + 1.5, 1.6, 1.7, 1.9, + 1.6, 1.9, 2.2, 2.3}; + double xval[] = { 0.0, 0.5, 1.0, 1.5, 2.5, 3.0, + 1.3954, 1.6476, 0.824957, + 2.41108, 2.98619, 1.36485 }; + double yval[] = {0.0, 0.5, 1.0, 1.5, 2.5, 3.0, + 0.265371, 2.13849, 1.62114, + 1.22198, 0.724681, 0.0596087 }; + + /* results computed using Mathematica 9.0.1.0 */ + double zval[] = {1.0, 1.2, 1.4, 1.55, 2.025, 2.3, + 1.2191513, 1.7242442248, 1.5067237, + 1.626612, 1.6146423, 1.15436761}; + size_t xsize = sizeof(xarr) / sizeof(xarr[0]); + size_t ysize = sizeof(yarr) / sizeof(yarr[0]); + size_t test_size = sizeof(xval) / sizeof(xval[0]); + + status = test_interp2d(xarr, yarr, zarr, xsize, ysize, xval, yval, zval, + NULL, NULL, NULL, NULL, NULL, test_size, + gsl_interp2d_bilinear); + gsl_test(status, "bilinear interpolation with asymmetric z values"); + + return status; +} + +static int +test_bicubic() +{ + int status; + double xarr[] = {0.0, 1.0, 2.0, 3.0}; + double yarr[] = {0.0, 1.0, 2.0, 3.0}; + double zarr[] = {1.0, 1.1, 1.2, 1.3, + 1.1, 1.2, 1.3, 1.4, + 1.2, 1.3, 1.4, 1.5, + 1.3, 1.4, 1.5, 1.6}; + double xval[] = {1.0, 1.5, 2.0}; + double yval[] = {1.0, 1.5, 2.0}; + double zval[] = {1.2, 1.3, 1.4}; + size_t xsize = sizeof(xarr) / sizeof(xarr[0]); + size_t ysize = sizeof(yarr) / sizeof(yarr[0]); + size_t test_size = sizeof(xval) / sizeof(xval[0]); + + status = test_interp2d(xarr, yarr, zarr, xsize, ysize, xval, yval, zval, + NULL, NULL, NULL, NULL, NULL, test_size, + gsl_interp2d_bicubic); + gsl_test(status, "bicubic interpolation on linear function"); + + return status; +} + +static int +test_bicubic_nonlinear() +{ + int status; + double xarr[] = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0}; + double yarr[] = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0}; + /* least common multiple of x and y */ + double zarr[] = { 1, 2, 3, 4, 5, 6, 7, 8, + 2, 2, 6, 4, 10, 6, 14, 8, + 3, 6, 3, 12, 15, 6, 21, 24, + 4, 4, 12, 4, 20, 12, 28, 8, + 5, 10, 15, 20, 5, 30, 35, 40, + 6, 6, 6, 12, 30, 6, 42, 24, + 7, 14, 21, 28, 35, 42, 7, 56, + 8, 8, 24, 8, 40, 24, 56, 8}; + double xval[] = {1.4, 2.3, 4.7, 3.3, 7.5, 6.6, 5.1}; + double yval[] = {1.0, 1.8, 1.9, 2.5, 2.7, 4.1, 3.3}; + + /* results computed using GSL 1D cubic interpolation twice */ + double zval[] = { 1.4, 3.11183531264736, 8.27114315792559, 5.03218982537718, + 22.13230634702637, 23.63206834997871, 17.28553080971182 }; + size_t xsize = sizeof(xarr) / sizeof(xarr[0]); + size_t ysize = sizeof(yarr) / sizeof(yarr[0]); + size_t test_size = sizeof(xval) / sizeof(xval[0]); + + status = test_interp2d(xarr, yarr, zarr, xsize, ysize, xval, yval, zval, + NULL, NULL, NULL, NULL, NULL, test_size, + gsl_interp2d_bicubic); + gsl_test(status, "bicubic interpolation on nonlinear symmetric function"); + + return status; +} + +/* This function contributed by Andrew W. Steiner */ +static int +test_bicubic_nonlinear_nonsq() +{ + int status; + double xarr[] = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0}; + double yarr[] = {1.0, 4.0, 6.0, 8.0, 10.0, 12.0, 14.0, 16.0}; + double zarr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, + 2, 2, 6, 4, 10, 6, 14, 8, 11, 12, + 3, 6, 3, 12, 15, 6, 21, 24, 13, 14, + 4, 4, 12, 4, 20, 12, 28, 8, 15, 16, + 5, 10, 15, 20, 5, 30, 35, 40, 17, 18, + 6, 6, 6, 12, 30, 6, 42, 24, 19, 20, + 7, 14, 21, 28, 35, 42, 7, 56, 21, 22, + 8, 8, 24, 8, 40, 24, 56, 8, 23, 24}; + double xval[] = {1.4, 2.3, 9.7, 3.3, 9.5, 6.6, 5.1}; + double yval[] = {1.0, 1.8, 1.9, 2.5, 2.7, 4.1, 3.3}; + + /* results computed using GSL 1D cubic interpolation twice */ + double zval[] = { 1.4, 2.46782030941187003, 10.7717721621846465, + 4.80725067958096375, 11.6747032398627297, + 11.2619968682970111, 9.00168877916872567}; + size_t xsize = sizeof(xarr) / sizeof(xarr[0]); + size_t ysize = sizeof(yarr) / sizeof(yarr[0]); + size_t test_size = sizeof(xval) / sizeof(xval[0]); + + status = test_interp2d(xarr, yarr, zarr, xsize, ysize, xval, yval, zval, + NULL, NULL, NULL, NULL, NULL, test_size, + gsl_interp2d_bicubic); + gsl_test(status, "bicubic interpolation on nonlinear symmetric function"); + + return status; +} + +/* runs all the tests */ +int +test_interp2d_main(void) +{ + int status = 0; + + status += test_bilinear_symmetric(); + status += test_bilinear_asymmetric_z(); + status += test_bicubic(); + status += test_bicubic_nonlinear(); + status += test_bicubic_nonlinear_nonsq(); + + return status; +} diff --git a/gsl-2.5/libgsl.la b/gsl-2.5/libgsl.la new file mode 100644 index 00000000..582ad619 --- /dev/null +++ b/gsl-2.5/libgsl.la @@ -0,0 +1,41 @@ +# libgsl.la - a libtool library file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='libgsl.so.23' + +# Names of this library. +library_names='libgsl.so.23.1.0 libgsl.so.23 libgsl.so' + +# The name of the static archive. +old_library='libgsl.a' + +# Linker flags that can not go in dependency_libs. +inherited_linker_flags='' + +# Libraries that this one depends upon. +dependency_libs=' -lm' + +# Names of additional weak libraries provided by this library +weak_library_names='' + +# Version information for libgsl. +current=24 +age=1 +revision=0 + +# Is this an already installed library? +installed=no + +# Should we warn about portability when linking against -modules? +shouldnotlink=no + +# Files to dlopen/dlpreopen +dlopen='' +dlpreopen='' + +# Directory that this library needs to be installed in: +libdir='/home/groups/kipac/chto/package/gsl/gsl_lib/lib' diff --git a/gsl-2.5/libtool b/gsl-2.5/libtool new file mode 100755 index 00000000..b17bd114 --- /dev/null +++ b/gsl-2.5/libtool @@ -0,0 +1,10080 @@ +#! /bin/sh + +# libtool - Provide generalized library-building support services. +# Generated automatically by config.status (gsl) 2.5 +# Libtool was configured on host sh-ln03.stanford.edu: +# NOTE: Changes made to this file will be lost: look at ltmain.sh. +# +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, +# 2006, 2007, 2008, 2009, 2010, 2011 Free Software +# Foundation, Inc. +# Written by Gordon Matzigkeit, 1996 +# +# This file is part of GNU Libtool. +# +# GNU Libtool 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. +# +# As a special exception to the GNU General Public License, +# if you distribute this file as part of a program or library that +# is built using GNU Libtool, you may include this file under the +# same distribution terms that you use for the rest of that program. +# +# GNU Libtool 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 GNU Libtool; see the file COPYING. If not, a copy +# can be downloaded from http://www.gnu.org/licenses/gpl.html, or +# obtained by writing to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + + +# The names of the tagged configurations supported by this script. +available_tags="" + +# ### BEGIN LIBTOOL CONFIG + +# Which release of libtool.m4 was used? +macro_version=2.4.2 +macro_revision=1.3337 + +# Assembler program. +AS="as" + +# DLL creation program. +DLLTOOL="false" + +# Object dumper program. +OBJDUMP="objdump" + +# Whether or not to build shared libraries. +build_libtool_libs=yes + +# Whether or not to build static libraries. +build_old_libs=yes + +# What type of objects to build. +pic_mode=default + +# Whether or not to optimize for fast installation. +fast_install=yes + +# Shell to use when invoking shell scripts. +SHELL="/bin/sh" + +# An echo program that protects backslashes. +ECHO="printf %s\\n" + +# The PATH separator for the build system. +PATH_SEPARATOR=":" + +# The host system. +host_alias= +host=x86_64-unknown-linux-gnu +host_os=linux-gnu + +# The build system. +build_alias= +build=x86_64-unknown-linux-gnu +build_os=linux-gnu + +# A sed program that does not truncate output. +SED="/usr/bin/sed" + +# Sed that helps us avoid accidentally triggering echo(1) options like -n. +Xsed="$SED -e 1s/^X//" + +# A grep program that handles long lines. +GREP="/usr/bin/grep" + +# An ERE matcher. +EGREP="/usr/bin/grep -E" + +# A literal string matcher. +FGREP="/usr/bin/grep -F" + +# A BSD- or MS-compatible name lister. +NM="/usr/bin/nm -B" + +# Whether we need soft or hard links. +LN_S="ln -s" + +# What is the maximum length of a command? +max_cmd_len=1572864 + +# Object file suffix (normally "o"). +objext=o + +# Executable file suffix (normally ""). +exeext= + +# whether the shell understands "unset". +lt_unset=unset + +# turn spaces into newlines. +SP2NL="tr \\040 \\012" + +# turn newlines into spaces. +NL2SP="tr \\015\\012 \\040\\040" + +# convert $build file names to $host format. +to_host_file_cmd=func_convert_file_noop + +# convert $build files to toolchain format. +to_tool_file_cmd=func_convert_file_noop + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method="pass_all" + +# Command to use when deplibs_check_method = "file_magic". +file_magic_cmd="\$MAGIC_CMD" + +# How to find potential files when deplibs_check_method = "file_magic". +file_magic_glob="" + +# Find potential files using nocaseglob when deplibs_check_method = "file_magic". +want_nocaseglob="no" + +# Command to associate shared and link libraries. +sharedlib_from_linklib_cmd="printf %s\\n" + +# The archiver. +AR="ar" + +# Flags to create an archive. +AR_FLAGS="cru" + +# How to feed a file listing to the archiver. +archiver_list_spec="@" + +# A symbol stripping program. +STRIP="strip" + +# Commands used to install an old-style archive. +RANLIB="ranlib" +old_postinstall_cmds="chmod 644 \$oldlib~\$RANLIB \$tool_oldlib" +old_postuninstall_cmds="" + +# Whether to use a lock for old archive extraction. +lock_old_archive_extraction=no + +# A C compiler. +LTCC="gcc" + +# LTCC compiler flags. +LTCFLAGS="-g -O2" + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe="sed -n -e 's/^.*[ ]\\([ABCDGIRSTW][ABCDGIRSTW]*\\)[ ][ ]*\\([_A-Za-z][_A-Za-z0-9]*\\)\$/\\1 \\2 \\2/p' | sed '/ __gnu_lto/d'" + +# Transform the output of nm in a proper C declaration. +global_symbol_to_cdecl="sed -n -e 's/^T .* \\(.*\\)\$/extern int \\1();/p' -e 's/^[ABCDGIRSTW]* .* \\(.*\\)\$/extern char \\1;/p'" + +# Transform the output of nm in a C name address pair. +global_symbol_to_c_name_address="sed -n -e 's/^: \\([^ ]*\\)[ ]*\$/ {\\\"\\1\\\", (void *) 0},/p' -e 's/^[ABCDGIRSTW]* \\([^ ]*\\) \\([^ ]*\\)\$/ {\"\\2\", (void *) \\&\\2},/p'" + +# Transform the output of nm in a C name address pair when lib prefix is needed. +global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \\([^ ]*\\)[ ]*\$/ {\\\"\\1\\\", (void *) 0},/p' -e 's/^[ABCDGIRSTW]* \\([^ ]*\\) \\(lib[^ ]*\\)\$/ {\"\\2\", (void *) \\&\\2},/p' -e 's/^[ABCDGIRSTW]* \\([^ ]*\\) \\([^ ]*\\)\$/ {\"lib\\2\", (void *) \\&\\2},/p'" + +# Specify filename containing input files for $NM. +nm_file_list_spec="@" + +# The root where to search for dependent libraries,and in which our libraries should be installed. +lt_sysroot= + +# The name of the directory that contains temporary libtool files. +objdir=.libs + +# Used to examine libraries when file_magic_cmd begins with "file". +MAGIC_CMD=file + +# Must we lock files when doing compilation? +need_locks="no" + +# Manifest tool. +MANIFEST_TOOL=":" + +# Tool to manipulate archived DWARF debug symbol files on Mac OS X. +DSYMUTIL="" + +# Tool to change global to local symbols on Mac OS X. +NMEDIT="" + +# Tool to manipulate fat objects and archives on Mac OS X. +LIPO="" + +# ldd/readelf like tool for Mach-O binaries on Mac OS X. +OTOOL="" + +# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. +OTOOL64="" + +# Old archive suffix (normally "a"). +libext=a + +# Shared library suffix (normally ".so"). +shrext_cmds=".so" + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds="" + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at link time. +variables_saved_for_relink="PATH LD_LIBRARY_PATH LD_RUN_PATH GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" + +# Do we need the "lib" prefix for modules? +need_lib_prefix=no + +# Do we need a version for libraries? +need_version=no + +# Library versioning type. +version_type=linux + +# Shared library runtime path variable. +runpath_var=LD_RUN_PATH + +# Shared library path variable. +shlibpath_var=LD_LIBRARY_PATH + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=no + +# Format of library name prefix. +libname_spec="lib\$name" + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME +library_names_spec="\${libname}\${release}\${shared_ext}\$versuffix \${libname}\${release}\${shared_ext}\$major \$libname\${shared_ext}" + +# The coded name of the library, if different from the real name. +soname_spec="\${libname}\${release}\${shared_ext}\$major" + +# Permission mode override for installation of shared libraries. +install_override_mode="" + +# Command to use after installation of a shared archive. +postinstall_cmds="" + +# Command to use after uninstallation of a shared archive. +postuninstall_cmds="" + +# Commands used to finish a libtool library installation in a directory. +finish_cmds="PATH=\\\"\\\$PATH:/sbin\\\" ldconfig -n \$libdir" + +# As "finish_cmds", except a single script fragment to be evaled but +# not shown. +finish_eval="" + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=yes + +# Compile-time system search path for libraries. +sys_lib_search_path_spec="/usr/lib/gcc/x86_64-redhat-linux/4.8.5 /usr/lib64 /lib64 /share/software/user/open/curl/7.54.0/lib /share/software/user/open/libressl/2.5.3/lib /home/users/chto/lib/cfitsio/lib /home/users/chto/lib /share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64 /share/software/user/open/fftw/3.3.6/lib /share/software/user/restricted/ifort/2019/lib/intel64 /share/software/user/open/gsl/2.3/lib " + +# Run-time system search path for libraries. +sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /lib /usr/lib /opt/dell/srvadmin/lib64 /opt/dell/srvadmin/lib64 /opt/dell/srvadmin/lib64/srvadmin-idrac7 " + +# Whether dlopen is supported. +dlopen_support=unknown + +# Whether dlopen of programs is supported. +dlopen_self=unknown + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=unknown + +# Commands to strip libraries. +old_striplib="strip --strip-debug" +striplib="strip --strip-unneeded" + + +# The linker used to build libraries. +LD="/usr/bin/ld -m elf_x86_64" + +# How to create reloadable object files. +reload_flag=" -r" +reload_cmds="\$LD\$reload_flag -o \$output\$reload_objs" + +# Commands used to build an old-style archive. +old_archive_cmds="\$AR \$AR_FLAGS \$oldlib\$oldobjs~\$RANLIB \$tool_oldlib" + +# A language specific compiler. +CC="gcc" + +# Is the compiler the GNU compiler? +with_gcc=yes + +# Compiler flag to turn off builtin functions. +no_builtin_flag=" -fno-builtin" + +# Additional compiler flags for building library objects. +pic_flag=" -fPIC -DPIC" + +# How to pass a linker flag through the compiler. +wl="-Wl," + +# Compiler flag to prevent dynamic linking. +link_static_flag="" + +# Does compiler simultaneously support -c and -o options? +compiler_c_o="yes" + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=no + +# Whether or not to disallow shared libs when runtime libs are static. +allow_libtool_libs_with_static_runtimes=no + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec="\${wl}--export-dynamic" + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec="\${wl}--whole-archive\$convenience \${wl}--no-whole-archive" + +# Whether the compiler copes with passing no objects directly. +compiler_needs_object="no" + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds="" + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds="" + +# Commands used to build a shared archive. +archive_cmds="\$CC -shared \$pic_flag \$libobjs \$deplibs \$compiler_flags \${wl}-soname \$wl\$soname -o \$lib" +archive_expsym_cmds="echo \\\"{ global:\\\" > \$output_objdir/\$libname.ver~ + cat \$export_symbols | sed -e \\\"s/\\\\(.*\\\\)/\\\\1;/\\\" >> \$output_objdir/\$libname.ver~ + echo \\\"local: *; };\\\" >> \$output_objdir/\$libname.ver~ + \$CC -shared \$pic_flag \$libobjs \$deplibs \$compiler_flags \${wl}-soname \$wl\$soname \${wl}-version-script \${wl}\$output_objdir/\$libname.ver -o \$lib" + +# Commands used to build a loadable module if different from building +# a shared archive. +module_cmds="" +module_expsym_cmds="" + +# Whether we are building with GNU ld or not. +with_gnu_ld="yes" + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag="" + +# Flag that enforces no undefined symbols. +no_undefined_flag="" + +# Flag to hardcode $libdir into a binary during linking. +# This must work even if $libdir does not exist +hardcode_libdir_flag_spec="\${wl}-rpath \${wl}\$libdir" + +# Whether we need a single "-rpath" flag with a separated argument. +hardcode_libdir_separator="" + +# Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes +# DIR into the resulting binary. +hardcode_direct=no + +# Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes +# DIR into the resulting binary and the resulting library dependency is +# "absolute",i.e impossible to change by setting ${shlibpath_var} if the +# library is relocated. +hardcode_direct_absolute=no + +# Set to "yes" if using the -LDIR flag during linking hardcodes DIR +# into the resulting binary. +hardcode_minus_L=no + +# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR +# into the resulting binary. +hardcode_shlibpath_var=unsupported + +# Set to "yes" if building a shared library automatically hardcodes DIR +# into the library and all subsequent libraries and executables linked +# against it. +hardcode_automatic=no + +# Set to yes if linker adds runtime paths of dependent libraries +# to runtime path list. +inherit_rpath=no + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=unknown + +# Set to "yes" if exported symbols are required. +always_export_symbols=no + +# The commands to list exported symbols. +export_symbols_cmds="\$NM \$libobjs \$convenience | \$global_symbol_pipe | \$SED 's/.* //' | sort | uniq > \$export_symbols" + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms="_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*" + +# Symbols that must always be exported. +include_expsyms="" + +# Commands necessary for linking programs (against libraries) with templates. +prelink_cmds="" + +# Commands necessary for finishing linking programs. +postlink_cmds="" + +# Specify filename containing input files. +file_list_spec="" + +# How to hardcode a shared library path into an executable. +hardcode_action=immediate + +# ### END LIBTOOL CONFIG + + +# libtool (GNU libtool) 2.4.2 +# Written by Gordon Matzigkeit , 1996 + +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, +# 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. +# This is free software; see the source for copying conditions. There is NO +# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +# GNU Libtool 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. +# +# As a special exception to the GNU General Public License, +# if you distribute this file as part of a program or library that +# is built using GNU Libtool, you may include this file under the +# same distribution terms that you use for the rest of that program. +# +# GNU Libtool 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 GNU Libtool; see the file COPYING. If not, a copy +# can be downloaded from http://www.gnu.org/licenses/gpl.html, +# or obtained by writing to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +# Usage: $progname [OPTION]... [MODE-ARG]... +# +# Provide generalized library-building support services. +# +# --config show all configuration variables +# --debug enable verbose shell tracing +# -n, --dry-run display commands without modifying any files +# --features display basic configuration information and exit +# --mode=MODE use operation mode MODE +# --preserve-dup-deps don't remove duplicate dependency libraries +# --quiet, --silent don't print informational messages +# --no-quiet, --no-silent +# print informational messages (default) +# --no-warn don't display warning messages +# --tag=TAG use configuration variables from tag TAG +# -v, --verbose print more informational messages than default +# --no-verbose don't print the extra informational messages +# --version print version information +# -h, --help, --help-all print short, long, or detailed help message +# +# MODE must be one of the following: +# +# clean remove files from the build directory +# compile compile a source file into a libtool object +# execute automatically set library path, then run a program +# finish complete the installation of libtool libraries +# install install libraries or executables +# link create a library or an executable +# uninstall remove libraries from an installed directory +# +# MODE-ARGS vary depending on the MODE. When passed as first option, +# `--mode=MODE' may be abbreviated as `MODE' or a unique abbreviation of that. +# Try `$progname --help --mode=MODE' for a more detailed description of MODE. +# +# When reporting a bug, please describe a test case to reproduce it and +# include the following information: +# +# host-triplet: $host +# shell: $SHELL +# compiler: $LTCC +# compiler flags: $LTCFLAGS +# linker: $LD (gnu? $with_gnu_ld) +# $progname: (GNU libtool) 2.4.2 +# automake: $automake_version +# autoconf: $autoconf_version +# +# Report bugs to . +# GNU libtool home page: . +# General help using GNU software: . + +PROGRAM=libtool +PACKAGE=libtool +VERSION=2.4.2 +TIMESTAMP="" +package_revision=1.3337 + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + +# NLS nuisances: We save the old values to restore during execute mode. +lt_user_locale= +lt_safe_locale= +for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES +do + eval "if test \"\${$lt_var+set}\" = set; then + save_$lt_var=\$$lt_var + $lt_var=C + export $lt_var + lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\" + lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\" + fi" +done +LC_ALL=C +LANGUAGE=C +export LANGUAGE LC_ALL + +$lt_unset CDPATH + + +# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh +# is ksh but when the shell is invoked as "sh" and the current value of +# the _XPG environment variable is not equal to 1 (one), the special +# positional parameter $0, within a function call, is the name of the +# function. +progpath="$0" + + + +: ${CP="cp -f"} +test "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'} +: ${MAKE="make"} +: ${MKDIR="mkdir"} +: ${MV="mv -f"} +: ${RM="rm -f"} +: ${SHELL="${CONFIG_SHELL-/bin/sh}"} +: ${Xsed="$SED -e 1s/^X//"} + +# Global variables: +EXIT_SUCCESS=0 +EXIT_FAILURE=1 +EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. +EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. + +exit_status=$EXIT_SUCCESS + +# Make sure IFS has a sensible default +lt_nl=' +' +IFS=" $lt_nl" + +dirname="s,/[^/]*$,," +basename="s,^.*/,," + +# func_dirname file append nondir_replacement +# Compute the dirname of FILE. If nonempty, add APPEND to the result, +# otherwise set result to NONDIR_REPLACEMENT. +func_dirname () +{ + case ${1} in + */*) func_dirname_result="${1%/*}${2}" ;; + * ) func_dirname_result="${3}" ;; + esac +} # Extended-shell func_dirname implementation + + +# func_basename file +func_basename () +{ + func_basename_result="${1##*/}" +} # Extended-shell func_basename implementation + + +# func_dirname_and_basename file append nondir_replacement +# perform func_basename and func_dirname in a single function +# call: +# dirname: Compute the dirname of FILE. If nonempty, +# add APPEND to the result, otherwise set result +# to NONDIR_REPLACEMENT. +# value returned in "$func_dirname_result" +# basename: Compute filename of FILE. +# value retuned in "$func_basename_result" +# Implementation must be kept synchronized with func_dirname +# and func_basename. For efficiency, we do not delegate to +# those functions but instead duplicate the functionality here. +func_dirname_and_basename () +{ + case ${1} in + */*) func_dirname_result="${1%/*}${2}" ;; + * ) func_dirname_result="${3}" ;; + esac + func_basename_result="${1##*/}" +} # Extended-shell func_dirname_and_basename implementation + + +# func_stripname prefix suffix name +# strip PREFIX and SUFFIX off of NAME. +# PREFIX and SUFFIX must not contain globbing or regex special +# characters, hashes, percent signs, but SUFFIX may contain a leading +# dot (in which case that matches only a dot). +# func_strip_suffix prefix name +func_stripname () +{ + # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are + # positional parameters, so assign one to ordinary parameter first. + func_stripname_result=${3} + func_stripname_result=${func_stripname_result#"${1}"} + func_stripname_result=${func_stripname_result%"${2}"} +} # Extended-shell func_stripname implementation + + +# These SED scripts presuppose an absolute path with a trailing slash. +pathcar='s,^/\([^/]*\).*$,\1,' +pathcdr='s,^/[^/]*,,' +removedotparts=':dotsl + s@/\./@/@g + t dotsl + s,/\.$,/,' +collapseslashes='s@/\{1,\}@/@g' +finalslash='s,/*$,/,' + +# func_normal_abspath PATH +# Remove doubled-up and trailing slashes, "." path components, +# and cancel out any ".." path components in PATH after making +# it an absolute path. +# value returned in "$func_normal_abspath_result" +func_normal_abspath () +{ + # Start from root dir and reassemble the path. + func_normal_abspath_result= + func_normal_abspath_tpath=$1 + func_normal_abspath_altnamespace= + case $func_normal_abspath_tpath in + "") + # Empty path, that just means $cwd. + func_stripname '' '/' "`pwd`" + func_normal_abspath_result=$func_stripname_result + return + ;; + # The next three entries are used to spot a run of precisely + # two leading slashes without using negated character classes; + # we take advantage of case's first-match behaviour. + ///*) + # Unusual form of absolute path, do nothing. + ;; + //*) + # Not necessarily an ordinary path; POSIX reserves leading '//' + # and for example Cygwin uses it to access remote file shares + # over CIFS/SMB, so we conserve a leading double slash if found. + func_normal_abspath_altnamespace=/ + ;; + /*) + # Absolute path, do nothing. + ;; + *) + # Relative path, prepend $cwd. + func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath + ;; + esac + # Cancel out all the simple stuff to save iterations. We also want + # the path to end with a slash for ease of parsing, so make sure + # there is one (and only one) here. + func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ + -e "$removedotparts" -e "$collapseslashes" -e "$finalslash"` + while :; do + # Processed it all yet? + if test "$func_normal_abspath_tpath" = / ; then + # If we ascended to the root using ".." the result may be empty now. + if test -z "$func_normal_abspath_result" ; then + func_normal_abspath_result=/ + fi + break + fi + func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \ + -e "$pathcar"` + func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ + -e "$pathcdr"` + # Figure out what to do with it + case $func_normal_abspath_tcomponent in + "") + # Trailing empty path component, ignore it. + ;; + ..) + # Parent dir; strip last assembled component from result. + func_dirname "$func_normal_abspath_result" + func_normal_abspath_result=$func_dirname_result + ;; + *) + # Actual path component, append it. + func_normal_abspath_result=$func_normal_abspath_result/$func_normal_abspath_tcomponent + ;; + esac + done + # Restore leading double-slash if one was found on entry. + func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result +} + +# func_relative_path SRCDIR DSTDIR +# generates a relative path from SRCDIR to DSTDIR, with a trailing +# slash if non-empty, suitable for immediately appending a filename +# without needing to append a separator. +# value returned in "$func_relative_path_result" +func_relative_path () +{ + func_relative_path_result= + func_normal_abspath "$1" + func_relative_path_tlibdir=$func_normal_abspath_result + func_normal_abspath "$2" + func_relative_path_tbindir=$func_normal_abspath_result + + # Ascend the tree starting from libdir + while :; do + # check if we have found a prefix of bindir + case $func_relative_path_tbindir in + $func_relative_path_tlibdir) + # found an exact match + func_relative_path_tcancelled= + break + ;; + $func_relative_path_tlibdir*) + # found a matching prefix + func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir" + func_relative_path_tcancelled=$func_stripname_result + if test -z "$func_relative_path_result"; then + func_relative_path_result=. + fi + break + ;; + *) + func_dirname $func_relative_path_tlibdir + func_relative_path_tlibdir=${func_dirname_result} + if test "x$func_relative_path_tlibdir" = x ; then + # Have to descend all the way to the root! + func_relative_path_result=../$func_relative_path_result + func_relative_path_tcancelled=$func_relative_path_tbindir + break + fi + func_relative_path_result=../$func_relative_path_result + ;; + esac + done + + # Now calculate path; take care to avoid doubling-up slashes. + func_stripname '' '/' "$func_relative_path_result" + func_relative_path_result=$func_stripname_result + func_stripname '/' '/' "$func_relative_path_tcancelled" + if test "x$func_stripname_result" != x ; then + func_relative_path_result=${func_relative_path_result}/${func_stripname_result} + fi + + # Normalisation. If bindir is libdir, return empty string, + # else relative path ending with a slash; either way, target + # file name can be directly appended. + if test ! -z "$func_relative_path_result"; then + func_stripname './' '' "$func_relative_path_result/" + func_relative_path_result=$func_stripname_result + fi +} + +# The name of this program: +func_dirname_and_basename "$progpath" +progname=$func_basename_result + +# Make sure we have an absolute path for reexecution: +case $progpath in + [\\/]*|[A-Za-z]:\\*) ;; + *[\\/]*) + progdir=$func_dirname_result + progdir=`cd "$progdir" && pwd` + progpath="$progdir/$progname" + ;; + *) + save_IFS="$IFS" + IFS=${PATH_SEPARATOR-:} + for progdir in $PATH; do + IFS="$save_IFS" + test -x "$progdir/$progname" && break + done + IFS="$save_IFS" + test -n "$progdir" || progdir=`pwd` + progpath="$progdir/$progname" + ;; +esac + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +Xsed="${SED}"' -e 1s/^X//' +sed_quote_subst='s/\([`"$\\]\)/\\\1/g' + +# Same as above, but do not quote variable references. +double_quote_subst='s/\(["`\\]\)/\\\1/g' + +# Sed substitution that turns a string into a regex matching for the +# string literally. +sed_make_literal_regex='s,[].[^$\\*\/],\\&,g' + +# Sed substitution that converts a w32 file name or path +# which contains forward slashes, into one that contains +# (escaped) backslashes. A very naive implementation. +lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' + +# Re-`\' parameter expansions in output of double_quote_subst that were +# `\'-ed in input to the same. If an odd number of `\' preceded a '$' +# in input to double_quote_subst, that '$' was protected from expansion. +# Since each input `\' is now two `\'s, look for any number of runs of +# four `\'s followed by two `\'s and then a '$'. `\' that '$'. +bs='\\' +bs2='\\\\' +bs4='\\\\\\\\' +dollar='\$' +sed_double_backslash="\ + s/$bs4/&\\ +/g + s/^$bs2$dollar/$bs&/ + s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g + s/\n//g" + +# Standard options: +opt_dry_run=false +opt_help=false +opt_quiet=false +opt_verbose=false +opt_warning=: + +# func_echo arg... +# Echo program name prefixed message, along with the current mode +# name if it has been set yet. +func_echo () +{ + $ECHO "$progname: ${opt_mode+$opt_mode: }$*" +} + +# func_verbose arg... +# Echo program name prefixed message in verbose mode only. +func_verbose () +{ + $opt_verbose && func_echo ${1+"$@"} + + # A bug in bash halts the script if the last line of a function + # fails when set -e is in force, so we need another command to + # work around that: + : +} + +# func_echo_all arg... +# Invoke $ECHO with all args, space-separated. +func_echo_all () +{ + $ECHO "$*" +} + +# func_error arg... +# Echo program name prefixed message to standard error. +func_error () +{ + $ECHO "$progname: ${opt_mode+$opt_mode: }"${1+"$@"} 1>&2 +} + +# func_warning arg... +# Echo program name prefixed warning message to standard error. +func_warning () +{ + $opt_warning && $ECHO "$progname: ${opt_mode+$opt_mode: }warning: "${1+"$@"} 1>&2 + + # bash bug again: + : +} + +# func_fatal_error arg... +# Echo program name prefixed message to standard error, and exit. +func_fatal_error () +{ + func_error ${1+"$@"} + exit $EXIT_FAILURE +} + +# func_fatal_help arg... +# Echo program name prefixed message to standard error, followed by +# a help hint, and exit. +func_fatal_help () +{ + func_error ${1+"$@"} + func_fatal_error "$help" +} +help="Try \`$progname --help' for more information." ## default + + +# func_grep expression filename +# Check whether EXPRESSION matches any line of FILENAME, without output. +func_grep () +{ + $GREP "$1" "$2" >/dev/null 2>&1 +} + + +# func_mkdir_p directory-path +# Make sure the entire path to DIRECTORY-PATH is available. +func_mkdir_p () +{ + my_directory_path="$1" + my_dir_list= + + if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then + + # Protect directory names starting with `-' + case $my_directory_path in + -*) my_directory_path="./$my_directory_path" ;; + esac + + # While some portion of DIR does not yet exist... + while test ! -d "$my_directory_path"; do + # ...make a list in topmost first order. Use a colon delimited + # list incase some portion of path contains whitespace. + my_dir_list="$my_directory_path:$my_dir_list" + + # If the last portion added has no slash in it, the list is done + case $my_directory_path in */*) ;; *) break ;; esac + + # ...otherwise throw away the child directory and loop + my_directory_path=`$ECHO "$my_directory_path" | $SED -e "$dirname"` + done + my_dir_list=`$ECHO "$my_dir_list" | $SED 's,:*$,,'` + + save_mkdir_p_IFS="$IFS"; IFS=':' + for my_dir in $my_dir_list; do + IFS="$save_mkdir_p_IFS" + # mkdir can fail with a `File exist' error if two processes + # try to create one of the directories concurrently. Don't + # stop in that case! + $MKDIR "$my_dir" 2>/dev/null || : + done + IFS="$save_mkdir_p_IFS" + + # Bail out if we (or some other process) failed to create a directory. + test -d "$my_directory_path" || \ + func_fatal_error "Failed to create \`$1'" + fi +} + + +# func_mktempdir [string] +# Make a temporary directory that won't clash with other running +# libtool processes, and avoids race conditions if possible. If +# given, STRING is the basename for that directory. +func_mktempdir () +{ + my_template="${TMPDIR-/tmp}/${1-$progname}" + + if test "$opt_dry_run" = ":"; then + # Return a directory name, but don't create it in dry-run mode + my_tmpdir="${my_template}-$$" + else + + # If mktemp works, use that first and foremost + my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null` + + if test ! -d "$my_tmpdir"; then + # Failing that, at least try and use $RANDOM to avoid a race + my_tmpdir="${my_template}-${RANDOM-0}$$" + + save_mktempdir_umask=`umask` + umask 0077 + $MKDIR "$my_tmpdir" + umask $save_mktempdir_umask + fi + + # If we're not in dry-run mode, bomb out on failure + test -d "$my_tmpdir" || \ + func_fatal_error "cannot create temporary directory \`$my_tmpdir'" + fi + + $ECHO "$my_tmpdir" +} + + +# func_quote_for_eval arg +# Aesthetically quote ARG to be evaled later. +# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT +# is double-quoted, suitable for a subsequent eval, whereas +# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters +# which are still active within double quotes backslashified. +func_quote_for_eval () +{ + case $1 in + *[\\\`\"\$]*) + func_quote_for_eval_unquoted_result=`$ECHO "$1" | $SED "$sed_quote_subst"` ;; + *) + func_quote_for_eval_unquoted_result="$1" ;; + esac + + case $func_quote_for_eval_unquoted_result in + # Double-quote args containing shell metacharacters to delay + # word splitting, command substitution and and variable + # expansion for a subsequent eval. + # Many Bourne shells cannot handle close brackets correctly + # in scan sets, so we specify it separately. + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\"" + ;; + *) + func_quote_for_eval_result="$func_quote_for_eval_unquoted_result" + esac +} + + +# func_quote_for_expand arg +# Aesthetically quote ARG to be evaled later; same as above, +# but do not quote variable references. +func_quote_for_expand () +{ + case $1 in + *[\\\`\"]*) + my_arg=`$ECHO "$1" | $SED \ + -e "$double_quote_subst" -e "$sed_double_backslash"` ;; + *) + my_arg="$1" ;; + esac + + case $my_arg in + # Double-quote args containing shell metacharacters to delay + # word splitting and command substitution for a subsequent eval. + # Many Bourne shells cannot handle close brackets correctly + # in scan sets, so we specify it separately. + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + my_arg="\"$my_arg\"" + ;; + esac + + func_quote_for_expand_result="$my_arg" +} + + +# func_show_eval cmd [fail_exp] +# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is +# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP +# is given, then evaluate it. +func_show_eval () +{ + my_cmd="$1" + my_fail_exp="${2-:}" + + ${opt_silent-false} || { + func_quote_for_expand "$my_cmd" + eval "func_echo $func_quote_for_expand_result" + } + + if ${opt_dry_run-false}; then :; else + eval "$my_cmd" + my_status=$? + if test "$my_status" -eq 0; then :; else + eval "(exit $my_status); $my_fail_exp" + fi + fi +} + + +# func_show_eval_locale cmd [fail_exp] +# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is +# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP +# is given, then evaluate it. Use the saved locale for evaluation. +func_show_eval_locale () +{ + my_cmd="$1" + my_fail_exp="${2-:}" + + ${opt_silent-false} || { + func_quote_for_expand "$my_cmd" + eval "func_echo $func_quote_for_expand_result" + } + + if ${opt_dry_run-false}; then :; else + eval "$lt_user_locale + $my_cmd" + my_status=$? + eval "$lt_safe_locale" + if test "$my_status" -eq 0; then :; else + eval "(exit $my_status); $my_fail_exp" + fi + fi +} + +# func_tr_sh +# Turn $1 into a string suitable for a shell variable name. +# Result is stored in $func_tr_sh_result. All characters +# not in the set a-zA-Z0-9_ are replaced with '_'. Further, +# if $1 begins with a digit, a '_' is prepended as well. +func_tr_sh () +{ + case $1 in + [0-9]* | *[!a-zA-Z0-9_]*) + func_tr_sh_result=`$ECHO "$1" | $SED 's/^\([0-9]\)/_\1/; s/[^a-zA-Z0-9_]/_/g'` + ;; + * ) + func_tr_sh_result=$1 + ;; + esac +} + + +# func_version +# Echo version message to standard output and exit. +func_version () +{ + $opt_debug + + $SED -n '/(C)/!b go + :more + /\./!{ + N + s/\n# / / + b more + } + :go + /^# '$PROGRAM' (GNU /,/# warranty; / { + s/^# // + s/^# *$// + s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/ + p + }' < "$progpath" + exit $? +} + +# func_usage +# Echo short help message to standard output and exit. +func_usage () +{ + $opt_debug + + $SED -n '/^# Usage:/,/^# *.*--help/ { + s/^# // + s/^# *$// + s/\$progname/'$progname'/ + p + }' < "$progpath" + echo + $ECHO "run \`$progname --help | more' for full usage" + exit $? +} + +# func_help [NOEXIT] +# Echo long help message to standard output and exit, +# unless 'noexit' is passed as argument. +func_help () +{ + $opt_debug + + $SED -n '/^# Usage:/,/# Report bugs to/ { + :print + s/^# // + s/^# *$// + s*\$progname*'$progname'* + s*\$host*'"$host"'* + s*\$SHELL*'"$SHELL"'* + s*\$LTCC*'"$LTCC"'* + s*\$LTCFLAGS*'"$LTCFLAGS"'* + s*\$LD*'"$LD"'* + s/\$with_gnu_ld/'"$with_gnu_ld"'/ + s/\$automake_version/'"`(${AUTOMAKE-automake} --version) 2>/dev/null |$SED 1q`"'/ + s/\$autoconf_version/'"`(${AUTOCONF-autoconf} --version) 2>/dev/null |$SED 1q`"'/ + p + d + } + /^# .* home page:/b print + /^# General help using/b print + ' < "$progpath" + ret=$? + if test -z "$1"; then + exit $ret + fi +} + +# func_missing_arg argname +# Echo program name prefixed message to standard error and set global +# exit_cmd. +func_missing_arg () +{ + $opt_debug + + func_error "missing argument for $1." + exit_cmd=exit +} + + +# func_split_short_opt shortopt +# Set func_split_short_opt_name and func_split_short_opt_arg shell +# variables after splitting SHORTOPT after the 2nd character. +func_split_short_opt () +{ + func_split_short_opt_arg=${1#??} + func_split_short_opt_name=${1%"$func_split_short_opt_arg"} +} # Extended-shell func_split_short_opt implementation + + +# func_split_long_opt longopt +# Set func_split_long_opt_name and func_split_long_opt_arg shell +# variables after splitting LONGOPT at the `=' sign. +func_split_long_opt () +{ + func_split_long_opt_name=${1%%=*} + func_split_long_opt_arg=${1#*=} +} # Extended-shell func_split_long_opt implementation + +exit_cmd=: + + + + + +magic="%%%MAGIC variable%%%" +magic_exe="%%%MAGIC EXE variable%%%" + +# Global variables. +nonopt= +preserve_args= +lo2o="s/\\.lo\$/.${objext}/" +o2lo="s/\\.${objext}\$/.lo/" +extracted_archives= +extracted_serial=0 + +# If this variable is set in any of the actions, the command in it +# will be execed at the end. This prevents here-documents from being +# left over by shells. +exec_cmd= + +# func_append var value +# Append VALUE to the end of shell variable VAR. +func_append () +{ + eval "${1}+=\${2}" +} # Extended-shell func_append implementation + +# func_append_quoted var value +# Quote VALUE and append to the end of shell variable VAR, separated +# by a space. +func_append_quoted () +{ + func_quote_for_eval "${2}" + eval "${1}+=\\ \$func_quote_for_eval_result" +} # Extended-shell func_append_quoted implementation + + +# func_arith arithmetic-term... +func_arith () +{ + func_arith_result=$(( $* )) +} # Extended-shell func_arith implementation + + +# func_len string +# STRING may not start with a hyphen. +func_len () +{ + func_len_result=${#1} +} # Extended-shell func_len implementation + + +# func_lo2o object +func_lo2o () +{ + case ${1} in + *.lo) func_lo2o_result=${1%.lo}.${objext} ;; + *) func_lo2o_result=${1} ;; + esac +} # Extended-shell func_lo2o implementation + + +# func_xform libobj-or-source +func_xform () +{ + func_xform_result=${1%.*}.lo +} # Extended-shell func_xform implementation + + +# func_fatal_configuration arg... +# Echo program name prefixed message to standard error, followed by +# a configuration failure hint, and exit. +func_fatal_configuration () +{ + func_error ${1+"$@"} + func_error "See the $PACKAGE documentation for more information." + func_fatal_error "Fatal configuration error." +} + + +# func_config +# Display the configuration for all the tags in this script. +func_config () +{ + re_begincf='^# ### BEGIN LIBTOOL' + re_endcf='^# ### END LIBTOOL' + + # Default configuration. + $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath" + + # Now print the configurations for the tags. + for tagname in $taglist; do + $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath" + done + + exit $? +} + +# func_features +# Display the features supported by this script. +func_features () +{ + echo "host: $host" + if test "$build_libtool_libs" = yes; then + echo "enable shared libraries" + else + echo "disable shared libraries" + fi + if test "$build_old_libs" = yes; then + echo "enable static libraries" + else + echo "disable static libraries" + fi + + exit $? +} + +# func_enable_tag tagname +# Verify that TAGNAME is valid, and either flag an error and exit, or +# enable the TAGNAME tag. We also add TAGNAME to the global $taglist +# variable here. +func_enable_tag () +{ + # Global variable: + tagname="$1" + + re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$" + re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$" + sed_extractcf="/$re_begincf/,/$re_endcf/p" + + # Validate tagname. + case $tagname in + *[!-_A-Za-z0-9,/]*) + func_fatal_error "invalid tag name: $tagname" + ;; + esac + + # Don't test for the "default" C tag, as we know it's + # there but not specially marked. + case $tagname in + CC) ;; + *) + if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then + taglist="$taglist $tagname" + + # Evaluate the configuration. Be careful to quote the path + # and the sed script, to avoid splitting on whitespace, but + # also don't use non-portable quotes within backquotes within + # quotes we have to do it in 2 steps: + extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` + eval "$extractedcf" + else + func_error "ignoring unknown tag $tagname" + fi + ;; + esac +} + +# func_check_version_match +# Ensure that we are using m4 macros, and libtool script from the same +# release of libtool. +func_check_version_match () +{ + if test "$package_revision" != "$macro_revision"; then + if test "$VERSION" != "$macro_version"; then + if test -z "$macro_version"; then + cat >&2 <<_LT_EOF +$progname: Version mismatch error. This is $PACKAGE $VERSION, but the +$progname: definition of this LT_INIT comes from an older release. +$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION +$progname: and run autoconf again. +_LT_EOF + else + cat >&2 <<_LT_EOF +$progname: Version mismatch error. This is $PACKAGE $VERSION, but the +$progname: definition of this LT_INIT comes from $PACKAGE $macro_version. +$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION +$progname: and run autoconf again. +_LT_EOF + fi + else + cat >&2 <<_LT_EOF +$progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision, +$progname: but the definition of this LT_INIT comes from revision $macro_revision. +$progname: You should recreate aclocal.m4 with macros from revision $package_revision +$progname: of $PACKAGE $VERSION and run autoconf again. +_LT_EOF + fi + + exit $EXIT_MISMATCH + fi +} + + +# Shorthand for --mode=foo, only valid as the first argument +case $1 in +clean|clea|cle|cl) + shift; set dummy --mode clean ${1+"$@"}; shift + ;; +compile|compil|compi|comp|com|co|c) + shift; set dummy --mode compile ${1+"$@"}; shift + ;; +execute|execut|execu|exec|exe|ex|e) + shift; set dummy --mode execute ${1+"$@"}; shift + ;; +finish|finis|fini|fin|fi|f) + shift; set dummy --mode finish ${1+"$@"}; shift + ;; +install|instal|insta|inst|ins|in|i) + shift; set dummy --mode install ${1+"$@"}; shift + ;; +link|lin|li|l) + shift; set dummy --mode link ${1+"$@"}; shift + ;; +uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) + shift; set dummy --mode uninstall ${1+"$@"}; shift + ;; +esac + + + +# Option defaults: +opt_debug=: +opt_dry_run=false +opt_config=false +opt_preserve_dup_deps=false +opt_features=false +opt_finish=false +opt_help=false +opt_help_all=false +opt_silent=: +opt_warning=: +opt_verbose=: +opt_silent=false +opt_verbose=false + + +# Parse options once, thoroughly. This comes as soon as possible in the +# script to make things like `--version' happen as quickly as we can. +{ + # this just eases exit handling + while test $# -gt 0; do + opt="$1" + shift + case $opt in + --debug|-x) opt_debug='set -x' + func_echo "enabling shell trace mode" + $opt_debug + ;; + --dry-run|--dryrun|-n) + opt_dry_run=: + ;; + --config) + opt_config=: +func_config + ;; + --dlopen|-dlopen) + optarg="$1" + opt_dlopen="${opt_dlopen+$opt_dlopen +}$optarg" + shift + ;; + --preserve-dup-deps) + opt_preserve_dup_deps=: + ;; + --features) + opt_features=: +func_features + ;; + --finish) + opt_finish=: +set dummy --mode finish ${1+"$@"}; shift + ;; + --help) + opt_help=: + ;; + --help-all) + opt_help_all=: +opt_help=': help-all' + ;; + --mode) + test $# = 0 && func_missing_arg $opt && break + optarg="$1" + opt_mode="$optarg" +case $optarg in + # Valid mode arguments: + clean|compile|execute|finish|install|link|relink|uninstall) ;; + + # Catch anything else as an error + *) func_error "invalid argument for $opt" + exit_cmd=exit + break + ;; +esac + shift + ;; + --no-silent|--no-quiet) + opt_silent=false +preserve_args+=" $opt" + ;; + --no-warning|--no-warn) + opt_warning=false +preserve_args+=" $opt" + ;; + --no-verbose) + opt_verbose=false +preserve_args+=" $opt" + ;; + --silent|--quiet) + opt_silent=: +preserve_args+=" $opt" + opt_verbose=false + ;; + --verbose|-v) + opt_verbose=: +preserve_args+=" $opt" +opt_silent=false + ;; + --tag) + test $# = 0 && func_missing_arg $opt && break + optarg="$1" + opt_tag="$optarg" +preserve_args+=" $opt $optarg" +func_enable_tag "$optarg" + shift + ;; + + -\?|-h) func_usage ;; + --help) func_help ;; + --version) func_version ;; + + # Separate optargs to long options: + --*=*) + func_split_long_opt "$opt" + set dummy "$func_split_long_opt_name" "$func_split_long_opt_arg" ${1+"$@"} + shift + ;; + + # Separate non-argument short options: + -\?*|-h*|-n*|-v*) + func_split_short_opt "$opt" + set dummy "$func_split_short_opt_name" "-$func_split_short_opt_arg" ${1+"$@"} + shift + ;; + + --) break ;; + -*) func_fatal_help "unrecognized option \`$opt'" ;; + *) set dummy "$opt" ${1+"$@"}; shift; break ;; + esac + done + + # Validate options: + + # save first non-option argument + if test "$#" -gt 0; then + nonopt="$opt" + shift + fi + + # preserve --debug + test "$opt_debug" = : || preserve_args+=" --debug" + + case $host in + *cygwin* | *mingw* | *pw32* | *cegcc*) + # don't eliminate duplications in $postdeps and $predeps + opt_duplicate_compiler_generated_deps=: + ;; + *) + opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps + ;; + esac + + $opt_help || { + # Sanity checks first: + func_check_version_match + + if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then + func_fatal_configuration "not configured to build any kind of library" + fi + + # Darwin sucks + eval std_shrext=\"$shrext_cmds\" + + # Only execute mode is allowed to have -dlopen flags. + if test -n "$opt_dlopen" && test "$opt_mode" != execute; then + func_error "unrecognized option \`-dlopen'" + $ECHO "$help" 1>&2 + exit $EXIT_FAILURE + fi + + # Change the help message to a mode-specific one. + generic_help="$help" + help="Try \`$progname --help --mode=$opt_mode' for more information." + } + + + # Bail if the options were screwed + $exit_cmd $EXIT_FAILURE +} + + + + +## ----------- ## +## Main. ## +## ----------- ## + +# func_lalib_p file +# True iff FILE is a libtool `.la' library or `.lo' object file. +# This function is only a basic sanity check; it will hardly flush out +# determined imposters. +func_lalib_p () +{ + test -f "$1" && + $SED -e 4q "$1" 2>/dev/null \ + | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 +} + +# func_lalib_unsafe_p file +# True iff FILE is a libtool `.la' library or `.lo' object file. +# This function implements the same check as func_lalib_p without +# resorting to external programs. To this end, it redirects stdin and +# closes it afterwards, without saving the original file descriptor. +# As a safety measure, use it only where a negative result would be +# fatal anyway. Works if `file' does not exist. +func_lalib_unsafe_p () +{ + lalib_p=no + if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then + for lalib_p_l in 1 2 3 4 + do + read lalib_p_line + case "$lalib_p_line" in + \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;; + esac + done + exec 0<&5 5<&- + fi + test "$lalib_p" = yes +} + +# func_ltwrapper_script_p file +# True iff FILE is a libtool wrapper script +# This function is only a basic sanity check; it will hardly flush out +# determined imposters. +func_ltwrapper_script_p () +{ + func_lalib_p "$1" +} + +# func_ltwrapper_executable_p file +# True iff FILE is a libtool wrapper executable +# This function is only a basic sanity check; it will hardly flush out +# determined imposters. +func_ltwrapper_executable_p () +{ + func_ltwrapper_exec_suffix= + case $1 in + *.exe) ;; + *) func_ltwrapper_exec_suffix=.exe ;; + esac + $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1 +} + +# func_ltwrapper_scriptname file +# Assumes file is an ltwrapper_executable +# uses $file to determine the appropriate filename for a +# temporary ltwrapper_script. +func_ltwrapper_scriptname () +{ + func_dirname_and_basename "$1" "" "." + func_stripname '' '.exe' "$func_basename_result" + func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper" +} + +# func_ltwrapper_p file +# True iff FILE is a libtool wrapper script or wrapper executable +# This function is only a basic sanity check; it will hardly flush out +# determined imposters. +func_ltwrapper_p () +{ + func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1" +} + + +# func_execute_cmds commands fail_cmd +# Execute tilde-delimited COMMANDS. +# If FAIL_CMD is given, eval that upon failure. +# FAIL_CMD may read-access the current command in variable CMD! +func_execute_cmds () +{ + $opt_debug + save_ifs=$IFS; IFS='~' + for cmd in $1; do + IFS=$save_ifs + eval cmd=\"$cmd\" + func_show_eval "$cmd" "${2-:}" + done + IFS=$save_ifs +} + + +# func_source file +# Source FILE, adding directory component if necessary. +# Note that it is not necessary on cygwin/mingw to append a dot to +# FILE even if both FILE and FILE.exe exist: automatic-append-.exe +# behavior happens only for exec(3), not for open(2)! Also, sourcing +# `FILE.' does not work on cygwin managed mounts. +func_source () +{ + $opt_debug + case $1 in + */* | *\\*) . "$1" ;; + *) . "./$1" ;; + esac +} + + +# func_resolve_sysroot PATH +# Replace a leading = in PATH with a sysroot. Store the result into +# func_resolve_sysroot_result +func_resolve_sysroot () +{ + func_resolve_sysroot_result=$1 + case $func_resolve_sysroot_result in + =*) + func_stripname '=' '' "$func_resolve_sysroot_result" + func_resolve_sysroot_result=$lt_sysroot$func_stripname_result + ;; + esac +} + +# func_replace_sysroot PATH +# If PATH begins with the sysroot, replace it with = and +# store the result into func_replace_sysroot_result. +func_replace_sysroot () +{ + case "$lt_sysroot:$1" in + ?*:"$lt_sysroot"*) + func_stripname "$lt_sysroot" '' "$1" + func_replace_sysroot_result="=$func_stripname_result" + ;; + *) + # Including no sysroot. + func_replace_sysroot_result=$1 + ;; + esac +} + +# func_infer_tag arg +# Infer tagged configuration to use if any are available and +# if one wasn't chosen via the "--tag" command line option. +# Only attempt this if the compiler in the base compile +# command doesn't match the default compiler. +# arg is usually of the form 'gcc ...' +func_infer_tag () +{ + $opt_debug + if test -n "$available_tags" && test -z "$tagname"; then + CC_quoted= + for arg in $CC; do + func_append_quoted CC_quoted "$arg" + done + CC_expanded=`func_echo_all $CC` + CC_quoted_expanded=`func_echo_all $CC_quoted` + case $@ in + # Blanks in the command may have been stripped by the calling shell, + # but not from the CC environment variable when configure was run. + " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ + " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;; + # Blanks at the start of $base_compile will cause this to fail + # if we don't check for them as well. + *) + for z in $available_tags; do + if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then + # Evaluate the configuration. + eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" + CC_quoted= + for arg in $CC; do + # Double-quote args containing other shell metacharacters. + func_append_quoted CC_quoted "$arg" + done + CC_expanded=`func_echo_all $CC` + CC_quoted_expanded=`func_echo_all $CC_quoted` + case "$@ " in + " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ + " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) + # The compiler in the base compile command matches + # the one in the tagged configuration. + # Assume this is the tagged configuration we want. + tagname=$z + break + ;; + esac + fi + done + # If $tagname still isn't set, then no tagged configuration + # was found and let the user know that the "--tag" command + # line option must be used. + if test -z "$tagname"; then + func_echo "unable to infer tagged configuration" + func_fatal_error "specify a tag with \`--tag'" +# else +# func_verbose "using $tagname tagged configuration" + fi + ;; + esac + fi +} + + + +# func_write_libtool_object output_name pic_name nonpic_name +# Create a libtool object file (analogous to a ".la" file), +# but don't create it if we're doing a dry run. +func_write_libtool_object () +{ + write_libobj=${1} + if test "$build_libtool_libs" = yes; then + write_lobj=\'${2}\' + else + write_lobj=none + fi + + if test "$build_old_libs" = yes; then + write_oldobj=\'${3}\' + else + write_oldobj=none + fi + + $opt_dry_run || { + cat >${write_libobj}T </dev/null` + if test "$?" -eq 0 && test -n "${func_convert_core_file_wine_to_w32_tmp}"; then + func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" | + $SED -e "$lt_sed_naive_backslashify"` + else + func_convert_core_file_wine_to_w32_result= + fi + fi +} +# end: func_convert_core_file_wine_to_w32 + + +# func_convert_core_path_wine_to_w32 ARG +# Helper function used by path conversion functions when $build is *nix, and +# $host is mingw, cygwin, or some other w32 environment. Relies on a correctly +# configured wine environment available, with the winepath program in $build's +# $PATH. Assumes ARG has no leading or trailing path separator characters. +# +# ARG is path to be converted from $build format to win32. +# Result is available in $func_convert_core_path_wine_to_w32_result. +# Unconvertible file (directory) names in ARG are skipped; if no directory names +# are convertible, then the result may be empty. +func_convert_core_path_wine_to_w32 () +{ + $opt_debug + # unfortunately, winepath doesn't convert paths, only file names + func_convert_core_path_wine_to_w32_result="" + if test -n "$1"; then + oldIFS=$IFS + IFS=: + for func_convert_core_path_wine_to_w32_f in $1; do + IFS=$oldIFS + func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f" + if test -n "$func_convert_core_file_wine_to_w32_result" ; then + if test -z "$func_convert_core_path_wine_to_w32_result"; then + func_convert_core_path_wine_to_w32_result="$func_convert_core_file_wine_to_w32_result" + else + func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result" + fi + fi + done + IFS=$oldIFS + fi +} +# end: func_convert_core_path_wine_to_w32 + + +# func_cygpath ARGS... +# Wrapper around calling the cygpath program via LT_CYGPATH. This is used when +# when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2) +# $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or +# (2), returns the Cygwin file name or path in func_cygpath_result (input +# file name or path is assumed to be in w32 format, as previously converted +# from $build's *nix or MSYS format). In case (3), returns the w32 file name +# or path in func_cygpath_result (input file name or path is assumed to be in +# Cygwin format). Returns an empty string on error. +# +# ARGS are passed to cygpath, with the last one being the file name or path to +# be converted. +# +# Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH +# environment variable; do not put it in $PATH. +func_cygpath () +{ + $opt_debug + if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then + func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null` + if test "$?" -ne 0; then + # on failure, ensure result is empty + func_cygpath_result= + fi + else + func_cygpath_result= + func_error "LT_CYGPATH is empty or specifies non-existent file: \`$LT_CYGPATH'" + fi +} +#end: func_cygpath + + +# func_convert_core_msys_to_w32 ARG +# Convert file name or path ARG from MSYS format to w32 format. Return +# result in func_convert_core_msys_to_w32_result. +func_convert_core_msys_to_w32 () +{ + $opt_debug + # awkward: cmd appends spaces to result + func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null | + $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"` +} +#end: func_convert_core_msys_to_w32 + + +# func_convert_file_check ARG1 ARG2 +# Verify that ARG1 (a file name in $build format) was converted to $host +# format in ARG2. Otherwise, emit an error message, but continue (resetting +# func_to_host_file_result to ARG1). +func_convert_file_check () +{ + $opt_debug + if test -z "$2" && test -n "$1" ; then + func_error "Could not determine host file name corresponding to" + func_error " \`$1'" + func_error "Continuing, but uninstalled executables may not work." + # Fallback: + func_to_host_file_result="$1" + fi +} +# end func_convert_file_check + + +# func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH +# Verify that FROM_PATH (a path in $build format) was converted to $host +# format in TO_PATH. Otherwise, emit an error message, but continue, resetting +# func_to_host_file_result to a simplistic fallback value (see below). +func_convert_path_check () +{ + $opt_debug + if test -z "$4" && test -n "$3"; then + func_error "Could not determine the host path corresponding to" + func_error " \`$3'" + func_error "Continuing, but uninstalled executables may not work." + # Fallback. This is a deliberately simplistic "conversion" and + # should not be "improved". See libtool.info. + if test "x$1" != "x$2"; then + lt_replace_pathsep_chars="s|$1|$2|g" + func_to_host_path_result=`echo "$3" | + $SED -e "$lt_replace_pathsep_chars"` + else + func_to_host_path_result="$3" + fi + fi +} +# end func_convert_path_check + + +# func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG +# Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT +# and appending REPL if ORIG matches BACKPAT. +func_convert_path_front_back_pathsep () +{ + $opt_debug + case $4 in + $1 ) func_to_host_path_result="$3$func_to_host_path_result" + ;; + esac + case $4 in + $2 ) func_to_host_path_result+="$3" + ;; + esac +} +# end func_convert_path_front_back_pathsep + + +################################################## +# $build to $host FILE NAME CONVERSION FUNCTIONS # +################################################## +# invoked via `$to_host_file_cmd ARG' +# +# In each case, ARG is the path to be converted from $build to $host format. +# Result will be available in $func_to_host_file_result. + + +# func_to_host_file ARG +# Converts the file name ARG from $build format to $host format. Return result +# in func_to_host_file_result. +func_to_host_file () +{ + $opt_debug + $to_host_file_cmd "$1" +} +# end func_to_host_file + + +# func_to_tool_file ARG LAZY +# converts the file name ARG from $build format to toolchain format. Return +# result in func_to_tool_file_result. If the conversion in use is listed +# in (the comma separated) LAZY, no conversion takes place. +func_to_tool_file () +{ + $opt_debug + case ,$2, in + *,"$to_tool_file_cmd",*) + func_to_tool_file_result=$1 + ;; + *) + $to_tool_file_cmd "$1" + func_to_tool_file_result=$func_to_host_file_result + ;; + esac +} +# end func_to_tool_file + + +# func_convert_file_noop ARG +# Copy ARG to func_to_host_file_result. +func_convert_file_noop () +{ + func_to_host_file_result="$1" +} +# end func_convert_file_noop + + +# func_convert_file_msys_to_w32 ARG +# Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic +# conversion to w32 is not available inside the cwrapper. Returns result in +# func_to_host_file_result. +func_convert_file_msys_to_w32 () +{ + $opt_debug + func_to_host_file_result="$1" + if test -n "$1"; then + func_convert_core_msys_to_w32 "$1" + func_to_host_file_result="$func_convert_core_msys_to_w32_result" + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_msys_to_w32 + + +# func_convert_file_cygwin_to_w32 ARG +# Convert file name ARG from Cygwin to w32 format. Returns result in +# func_to_host_file_result. +func_convert_file_cygwin_to_w32 () +{ + $opt_debug + func_to_host_file_result="$1" + if test -n "$1"; then + # because $build is cygwin, we call "the" cygpath in $PATH; no need to use + # LT_CYGPATH in this case. + func_to_host_file_result=`cygpath -m "$1"` + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_cygwin_to_w32 + + +# func_convert_file_nix_to_w32 ARG +# Convert file name ARG from *nix to w32 format. Requires a wine environment +# and a working winepath. Returns result in func_to_host_file_result. +func_convert_file_nix_to_w32 () +{ + $opt_debug + func_to_host_file_result="$1" + if test -n "$1"; then + func_convert_core_file_wine_to_w32 "$1" + func_to_host_file_result="$func_convert_core_file_wine_to_w32_result" + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_nix_to_w32 + + +# func_convert_file_msys_to_cygwin ARG +# Convert file name ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. +# Returns result in func_to_host_file_result. +func_convert_file_msys_to_cygwin () +{ + $opt_debug + func_to_host_file_result="$1" + if test -n "$1"; then + func_convert_core_msys_to_w32 "$1" + func_cygpath -u "$func_convert_core_msys_to_w32_result" + func_to_host_file_result="$func_cygpath_result" + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_msys_to_cygwin + + +# func_convert_file_nix_to_cygwin ARG +# Convert file name ARG from *nix to Cygwin format. Requires Cygwin installed +# in a wine environment, working winepath, and LT_CYGPATH set. Returns result +# in func_to_host_file_result. +func_convert_file_nix_to_cygwin () +{ + $opt_debug + func_to_host_file_result="$1" + if test -n "$1"; then + # convert from *nix to w32, then use cygpath to convert from w32 to cygwin. + func_convert_core_file_wine_to_w32 "$1" + func_cygpath -u "$func_convert_core_file_wine_to_w32_result" + func_to_host_file_result="$func_cygpath_result" + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_nix_to_cygwin + + +############################################# +# $build to $host PATH CONVERSION FUNCTIONS # +############################################# +# invoked via `$to_host_path_cmd ARG' +# +# In each case, ARG is the path to be converted from $build to $host format. +# The result will be available in $func_to_host_path_result. +# +# Path separators are also converted from $build format to $host format. If +# ARG begins or ends with a path separator character, it is preserved (but +# converted to $host format) on output. +# +# All path conversion functions are named using the following convention: +# file name conversion function : func_convert_file_X_to_Y () +# path conversion function : func_convert_path_X_to_Y () +# where, for any given $build/$host combination the 'X_to_Y' value is the +# same. If conversion functions are added for new $build/$host combinations, +# the two new functions must follow this pattern, or func_init_to_host_path_cmd +# will break. + + +# func_init_to_host_path_cmd +# Ensures that function "pointer" variable $to_host_path_cmd is set to the +# appropriate value, based on the value of $to_host_file_cmd. +to_host_path_cmd= +func_init_to_host_path_cmd () +{ + $opt_debug + if test -z "$to_host_path_cmd"; then + func_stripname 'func_convert_file_' '' "$to_host_file_cmd" + to_host_path_cmd="func_convert_path_${func_stripname_result}" + fi +} + + +# func_to_host_path ARG +# Converts the path ARG from $build format to $host format. Return result +# in func_to_host_path_result. +func_to_host_path () +{ + $opt_debug + func_init_to_host_path_cmd + $to_host_path_cmd "$1" +} +# end func_to_host_path + + +# func_convert_path_noop ARG +# Copy ARG to func_to_host_path_result. +func_convert_path_noop () +{ + func_to_host_path_result="$1" +} +# end func_convert_path_noop + + +# func_convert_path_msys_to_w32 ARG +# Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic +# conversion to w32 is not available inside the cwrapper. Returns result in +# func_to_host_path_result. +func_convert_path_msys_to_w32 () +{ + $opt_debug + func_to_host_path_result="$1" + if test -n "$1"; then + # Remove leading and trailing path separator characters from ARG. MSYS + # behavior is inconsistent here; cygpath turns them into '.;' and ';.'; + # and winepath ignores them completely. + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" + func_to_host_path_result="$func_convert_core_msys_to_w32_result" + func_convert_path_check : ";" \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" + fi +} +# end func_convert_path_msys_to_w32 + + +# func_convert_path_cygwin_to_w32 ARG +# Convert path ARG from Cygwin to w32 format. Returns result in +# func_to_host_file_result. +func_convert_path_cygwin_to_w32 () +{ + $opt_debug + func_to_host_path_result="$1" + if test -n "$1"; then + # See func_convert_path_msys_to_w32: + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"` + func_convert_path_check : ";" \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" + fi +} +# end func_convert_path_cygwin_to_w32 + + +# func_convert_path_nix_to_w32 ARG +# Convert path ARG from *nix to w32 format. Requires a wine environment and +# a working winepath. Returns result in func_to_host_file_result. +func_convert_path_nix_to_w32 () +{ + $opt_debug + func_to_host_path_result="$1" + if test -n "$1"; then + # See func_convert_path_msys_to_w32: + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" + func_to_host_path_result="$func_convert_core_path_wine_to_w32_result" + func_convert_path_check : ";" \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" + fi +} +# end func_convert_path_nix_to_w32 + + +# func_convert_path_msys_to_cygwin ARG +# Convert path ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. +# Returns result in func_to_host_file_result. +func_convert_path_msys_to_cygwin () +{ + $opt_debug + func_to_host_path_result="$1" + if test -n "$1"; then + # See func_convert_path_msys_to_w32: + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" + func_cygpath -u -p "$func_convert_core_msys_to_w32_result" + func_to_host_path_result="$func_cygpath_result" + func_convert_path_check : : \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" : "$1" + fi +} +# end func_convert_path_msys_to_cygwin + + +# func_convert_path_nix_to_cygwin ARG +# Convert path ARG from *nix to Cygwin format. Requires Cygwin installed in a +# a wine environment, working winepath, and LT_CYGPATH set. Returns result in +# func_to_host_file_result. +func_convert_path_nix_to_cygwin () +{ + $opt_debug + func_to_host_path_result="$1" + if test -n "$1"; then + # Remove leading and trailing path separator characters from + # ARG. msys behavior is inconsistent here, cygpath turns them + # into '.;' and ';.', and winepath ignores them completely. + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" + func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result" + func_to_host_path_result="$func_cygpath_result" + func_convert_path_check : : \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" : "$1" + fi +} +# end func_convert_path_nix_to_cygwin + + +# func_mode_compile arg... +func_mode_compile () +{ + $opt_debug + # Get the compilation command and the source file. + base_compile= + srcfile="$nonopt" # always keep a non-empty value in "srcfile" + suppress_opt=yes + suppress_output= + arg_mode=normal + libobj= + later= + pie_flag= + + for arg + do + case $arg_mode in + arg ) + # do not "continue". Instead, add this to base_compile + lastarg="$arg" + arg_mode=normal + ;; + + target ) + libobj="$arg" + arg_mode=normal + continue + ;; + + normal ) + # Accept any command-line options. + case $arg in + -o) + test -n "$libobj" && \ + func_fatal_error "you cannot specify \`-o' more than once" + arg_mode=target + continue + ;; + + -pie | -fpie | -fPIE) + pie_flag+=" $arg" + continue + ;; + + -shared | -static | -prefer-pic | -prefer-non-pic) + later+=" $arg" + continue + ;; + + -no-suppress) + suppress_opt=no + continue + ;; + + -Xcompiler) + arg_mode=arg # the next one goes into the "base_compile" arg list + continue # The current "srcfile" will either be retained or + ;; # replaced later. I would guess that would be a bug. + + -Wc,*) + func_stripname '-Wc,' '' "$arg" + args=$func_stripname_result + lastarg= + save_ifs="$IFS"; IFS=',' + for arg in $args; do + IFS="$save_ifs" + func_append_quoted lastarg "$arg" + done + IFS="$save_ifs" + func_stripname ' ' '' "$lastarg" + lastarg=$func_stripname_result + + # Add the arguments to base_compile. + base_compile+=" $lastarg" + continue + ;; + + *) + # Accept the current argument as the source file. + # The previous "srcfile" becomes the current argument. + # + lastarg="$srcfile" + srcfile="$arg" + ;; + esac # case $arg + ;; + esac # case $arg_mode + + # Aesthetically quote the previous argument. + func_append_quoted base_compile "$lastarg" + done # for arg + + case $arg_mode in + arg) + func_fatal_error "you must specify an argument for -Xcompile" + ;; + target) + func_fatal_error "you must specify a target with \`-o'" + ;; + *) + # Get the name of the library object. + test -z "$libobj" && { + func_basename "$srcfile" + libobj="$func_basename_result" + } + ;; + esac + + # Recognize several different file suffixes. + # If the user specifies -o file.o, it is replaced with file.lo + case $libobj in + *.[cCFSifmso] | \ + *.ada | *.adb | *.ads | *.asm | \ + *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \ + *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup) + func_xform "$libobj" + libobj=$func_xform_result + ;; + esac + + case $libobj in + *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;; + *) + func_fatal_error "cannot determine name of library object from \`$libobj'" + ;; + esac + + func_infer_tag $base_compile + + for arg in $later; do + case $arg in + -shared) + test "$build_libtool_libs" != yes && \ + func_fatal_configuration "can not build a shared library" + build_old_libs=no + continue + ;; + + -static) + build_libtool_libs=no + build_old_libs=yes + continue + ;; + + -prefer-pic) + pic_mode=yes + continue + ;; + + -prefer-non-pic) + pic_mode=no + continue + ;; + esac + done + + func_quote_for_eval "$libobj" + test "X$libobj" != "X$func_quote_for_eval_result" \ + && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \ + && func_warning "libobj name \`$libobj' may not contain shell special characters." + func_dirname_and_basename "$obj" "/" "" + objname="$func_basename_result" + xdir="$func_dirname_result" + lobj=${xdir}$objdir/$objname + + test -z "$base_compile" && \ + func_fatal_help "you must specify a compilation command" + + # Delete any leftover library objects. + if test "$build_old_libs" = yes; then + removelist="$obj $lobj $libobj ${libobj}T" + else + removelist="$lobj $libobj ${libobj}T" + fi + + # On Cygwin there's no "real" PIC flag so we must build both object types + case $host_os in + cygwin* | mingw* | pw32* | os2* | cegcc*) + pic_mode=default + ;; + esac + if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then + # non-PIC code in shared libraries is not supported + pic_mode=default + fi + + # Calculate the filename of the output object if compiler does + # not support -o with -c + if test "$compiler_c_o" = no; then + output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.${objext} + lockfile="$output_obj.lock" + else + output_obj= + need_locks=no + lockfile= + fi + + # Lock this critical section if it is needed + # We use this script file to make the link, it avoids creating a new file + if test "$need_locks" = yes; then + until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do + func_echo "Waiting for $lockfile to be removed" + sleep 2 + done + elif test "$need_locks" = warn; then + if test -f "$lockfile"; then + $ECHO "\ +*** ERROR, $lockfile exists and contains: +`cat $lockfile 2>/dev/null` + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support \`-c' and \`-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $opt_dry_run || $RM $removelist + exit $EXIT_FAILURE + fi + removelist+=" $output_obj" + $ECHO "$srcfile" > "$lockfile" + fi + + $opt_dry_run || $RM $removelist + removelist+=" $lockfile" + trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 + + func_to_tool_file "$srcfile" func_convert_file_msys_to_w32 + srcfile=$func_to_tool_file_result + func_quote_for_eval "$srcfile" + qsrcfile=$func_quote_for_eval_result + + # Only build a PIC object if we are building libtool libraries. + if test "$build_libtool_libs" = yes; then + # Without this assignment, base_compile gets emptied. + fbsd_hideous_sh_bug=$base_compile + + if test "$pic_mode" != no; then + command="$base_compile $qsrcfile $pic_flag" + else + # Don't build PIC code + command="$base_compile $qsrcfile" + fi + + func_mkdir_p "$xdir$objdir" + + if test -z "$output_obj"; then + # Place PIC objects in $objdir + command+=" -o $lobj" + fi + + func_show_eval_locale "$command" \ + 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' + + if test "$need_locks" = warn && + test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then + $ECHO "\ +*** ERROR, $lockfile contains: +`cat $lockfile 2>/dev/null` + +but it should contain: +$srcfile + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support \`-c' and \`-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $opt_dry_run || $RM $removelist + exit $EXIT_FAILURE + fi + + # Just move the object if needed, then go on to compile the next one + if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then + func_show_eval '$MV "$output_obj" "$lobj"' \ + 'error=$?; $opt_dry_run || $RM $removelist; exit $error' + fi + + # Allow error messages only from the first compilation. + if test "$suppress_opt" = yes; then + suppress_output=' >/dev/null 2>&1' + fi + fi + + # Only build a position-dependent object if we build old libraries. + if test "$build_old_libs" = yes; then + if test "$pic_mode" != yes; then + # Don't build PIC code + command="$base_compile $qsrcfile$pie_flag" + else + command="$base_compile $qsrcfile $pic_flag" + fi + if test "$compiler_c_o" = yes; then + command+=" -o $obj" + fi + + # Suppress compiler output if we already did a PIC compilation. + command+="$suppress_output" + func_show_eval_locale "$command" \ + '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' + + if test "$need_locks" = warn && + test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then + $ECHO "\ +*** ERROR, $lockfile contains: +`cat $lockfile 2>/dev/null` + +but it should contain: +$srcfile + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support \`-c' and \`-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $opt_dry_run || $RM $removelist + exit $EXIT_FAILURE + fi + + # Just move the object if needed + if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then + func_show_eval '$MV "$output_obj" "$obj"' \ + 'error=$?; $opt_dry_run || $RM $removelist; exit $error' + fi + fi + + $opt_dry_run || { + func_write_libtool_object "$libobj" "$objdir/$objname" "$objname" + + # Unlock the critical section if it was locked + if test "$need_locks" != no; then + removelist=$lockfile + $RM "$lockfile" + fi + } + + exit $EXIT_SUCCESS +} + +$opt_help || { + test "$opt_mode" = compile && func_mode_compile ${1+"$@"} +} + +func_mode_help () +{ + # We need to display help for each of the modes. + case $opt_mode in + "") + # Generic help is extracted from the usage comments + # at the start of this file. + func_help + ;; + + clean) + $ECHO \ +"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE... + +Remove files from the build directory. + +RM is the name of the program to use to delete files associated with each FILE +(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed +to RM. + +If FILE is a libtool library, object or program, all the files associated +with it are deleted. Otherwise, only FILE itself is deleted using RM." + ;; + + compile) + $ECHO \ +"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE + +Compile a source file into a libtool library object. + +This mode accepts the following additional options: + + -o OUTPUT-FILE set the output file name to OUTPUT-FILE + -no-suppress do not suppress compiler output for multiple passes + -prefer-pic try to build PIC objects only + -prefer-non-pic try to build non-PIC objects only + -shared do not build a \`.o' file suitable for static linking + -static only build a \`.o' file suitable for static linking + -Wc,FLAG pass FLAG directly to the compiler + +COMPILE-COMMAND is a command to be used in creating a \`standard' object file +from the given SOURCEFILE. + +The output file name is determined by removing the directory component from +SOURCEFILE, then substituting the C source code suffix \`.c' with the +library object suffix, \`.lo'." + ;; + + execute) + $ECHO \ +"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]... + +Automatically set library path, then run a program. + +This mode accepts the following additional options: + + -dlopen FILE add the directory containing FILE to the library path + +This mode sets the library path environment variable according to \`-dlopen' +flags. + +If any of the ARGS are libtool executable wrappers, then they are translated +into their corresponding uninstalled binary, and any of their required library +directories are added to the library path. + +Then, COMMAND is executed, with ARGS as arguments." + ;; + + finish) + $ECHO \ +"Usage: $progname [OPTION]... --mode=finish [LIBDIR]... + +Complete the installation of libtool libraries. + +Each LIBDIR is a directory that contains libtool libraries. + +The commands that this mode executes may require superuser privileges. Use +the \`--dry-run' option if you just want to see what would be executed." + ;; + + install) + $ECHO \ +"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND... + +Install executables or libraries. + +INSTALL-COMMAND is the installation command. The first component should be +either the \`install' or \`cp' program. + +The following components of INSTALL-COMMAND are treated specially: + + -inst-prefix-dir PREFIX-DIR Use PREFIX-DIR as a staging area for installation + +The rest of the components are interpreted as arguments to that command (only +BSD-compatible install options are recognized)." + ;; + + link) + $ECHO \ +"Usage: $progname [OPTION]... --mode=link LINK-COMMAND... + +Link object files or libraries together to form another library, or to +create an executable program. + +LINK-COMMAND is a command using the C compiler that you would use to create +a program from several object files. + +The following components of LINK-COMMAND are treated specially: + + -all-static do not do any dynamic linking at all + -avoid-version do not add a version suffix if possible + -bindir BINDIR specify path to binaries directory (for systems where + libraries must be found in the PATH setting at runtime) + -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime + -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols + -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) + -export-symbols SYMFILE + try to export only the symbols listed in SYMFILE + -export-symbols-regex REGEX + try to export only the symbols matching REGEX + -LLIBDIR search LIBDIR for required installed libraries + -lNAME OUTPUT-FILE requires the installed library libNAME + -module build a library that can dlopened + -no-fast-install disable the fast-install mode + -no-install link a not-installable executable + -no-undefined declare that a library does not refer to external symbols + -o OUTPUT-FILE create OUTPUT-FILE from the specified objects + -objectlist FILE Use a list of object files found in FILE to specify objects + -precious-files-regex REGEX + don't remove output files matching REGEX + -release RELEASE specify package release information + -rpath LIBDIR the created library will eventually be installed in LIBDIR + -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries + -shared only do dynamic linking of libtool libraries + -shrext SUFFIX override the standard shared library file extension + -static do not do any dynamic linking of uninstalled libtool libraries + -static-libtool-libs + do not do any dynamic linking of libtool libraries + -version-info CURRENT[:REVISION[:AGE]] + specify library version info [each variable defaults to 0] + -weak LIBNAME declare that the target provides the LIBNAME interface + -Wc,FLAG + -Xcompiler FLAG pass linker-specific FLAG directly to the compiler + -Wl,FLAG + -Xlinker FLAG pass linker-specific FLAG directly to the linker + -XCClinker FLAG pass link-specific FLAG to the compiler driver (CC) + +All other options (arguments beginning with \`-') are ignored. + +Every other argument is treated as a filename. Files ending in \`.la' are +treated as uninstalled libtool libraries, other files are standard or library +object files. + +If the OUTPUT-FILE ends in \`.la', then a libtool library is created, +only library objects (\`.lo' files) may be specified, and \`-rpath' is +required, except when creating a convenience library. + +If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created +using \`ar' and \`ranlib', or on Windows using \`lib'. + +If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file +is created, otherwise an executable program is created." + ;; + + uninstall) + $ECHO \ +"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... + +Remove libraries from an installation directory. + +RM is the name of the program to use to delete files associated with each FILE +(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed +to RM. + +If FILE is a libtool library, all the files associated with it are deleted. +Otherwise, only FILE itself is deleted using RM." + ;; + + *) + func_fatal_help "invalid operation mode \`$opt_mode'" + ;; + esac + + echo + $ECHO "Try \`$progname --help' for more information about other modes." +} + +# Now that we've collected a possible --mode arg, show help if necessary +if $opt_help; then + if test "$opt_help" = :; then + func_mode_help + else + { + func_help noexit + for opt_mode in compile link execute install finish uninstall clean; do + func_mode_help + done + } | sed -n '1p; 2,$s/^Usage:/ or: /p' + { + func_help noexit + for opt_mode in compile link execute install finish uninstall clean; do + echo + func_mode_help + done + } | + sed '1d + /^When reporting/,/^Report/{ + H + d + } + $x + /information about other modes/d + /more detailed .*MODE/d + s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/' + fi + exit $? +fi + + +# func_mode_execute arg... +func_mode_execute () +{ + $opt_debug + # The first argument is the command name. + cmd="$nonopt" + test -z "$cmd" && \ + func_fatal_help "you must specify a COMMAND" + + # Handle -dlopen flags immediately. + for file in $opt_dlopen; do + test -f "$file" \ + || func_fatal_help "\`$file' is not a file" + + dir= + case $file in + *.la) + func_resolve_sysroot "$file" + file=$func_resolve_sysroot_result + + # Check to see that this really is a libtool archive. + func_lalib_unsafe_p "$file" \ + || func_fatal_help "\`$lib' is not a valid libtool archive" + + # Read the libtool library. + dlname= + library_names= + func_source "$file" + + # Skip this library if it cannot be dlopened. + if test -z "$dlname"; then + # Warn if it was a shared library. + test -n "$library_names" && \ + func_warning "\`$file' was not linked with \`-export-dynamic'" + continue + fi + + func_dirname "$file" "" "." + dir="$func_dirname_result" + + if test -f "$dir/$objdir/$dlname"; then + dir+="/$objdir" + else + if test ! -f "$dir/$dlname"; then + func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" + fi + fi + ;; + + *.lo) + # Just add the directory containing the .lo file. + func_dirname "$file" "" "." + dir="$func_dirname_result" + ;; + + *) + func_warning "\`-dlopen' is ignored for non-libtool libraries and objects" + continue + ;; + esac + + # Get the absolute pathname. + absdir=`cd "$dir" && pwd` + test -n "$absdir" && dir="$absdir" + + # Now add the directory to shlibpath_var. + if eval "test -z \"\$$shlibpath_var\""; then + eval "$shlibpath_var=\"\$dir\"" + else + eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" + fi + done + + # This variable tells wrapper scripts just to set shlibpath_var + # rather than running their programs. + libtool_execute_magic="$magic" + + # Check if any of the arguments is a wrapper script. + args= + for file + do + case $file in + -* | *.la | *.lo ) ;; + *) + # Do a test to see if this is really a libtool program. + if func_ltwrapper_script_p "$file"; then + func_source "$file" + # Transform arg to wrapped name. + file="$progdir/$program" + elif func_ltwrapper_executable_p "$file"; then + func_ltwrapper_scriptname "$file" + func_source "$func_ltwrapper_scriptname_result" + # Transform arg to wrapped name. + file="$progdir/$program" + fi + ;; + esac + # Quote arguments (to preserve shell metacharacters). + func_append_quoted args "$file" + done + + if test "X$opt_dry_run" = Xfalse; then + if test -n "$shlibpath_var"; then + # Export the shlibpath_var. + eval "export $shlibpath_var" + fi + + # Restore saved environment variables + for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES + do + eval "if test \"\${save_$lt_var+set}\" = set; then + $lt_var=\$save_$lt_var; export $lt_var + else + $lt_unset $lt_var + fi" + done + + # Now prepare to actually exec the command. + exec_cmd="\$cmd$args" + else + # Display what would be done. + if test -n "$shlibpath_var"; then + eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" + echo "export $shlibpath_var" + fi + $ECHO "$cmd$args" + exit $EXIT_SUCCESS + fi +} + +test "$opt_mode" = execute && func_mode_execute ${1+"$@"} + + +# func_mode_finish arg... +func_mode_finish () +{ + $opt_debug + libs= + libdirs= + admincmds= + + for opt in "$nonopt" ${1+"$@"} + do + if test -d "$opt"; then + libdirs+=" $opt" + + elif test -f "$opt"; then + if func_lalib_unsafe_p "$opt"; then + libs+=" $opt" + else + func_warning "\`$opt' is not a valid libtool archive" + fi + + else + func_fatal_error "invalid argument \`$opt'" + fi + done + + if test -n "$libs"; then + if test -n "$lt_sysroot"; then + sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"` + sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;" + else + sysroot_cmd= + fi + + # Remove sysroot references + if $opt_dry_run; then + for lib in $libs; do + echo "removing references to $lt_sysroot and \`=' prefixes from $lib" + done + else + tmpdir=`func_mktempdir` + for lib in $libs; do + sed -e "${sysroot_cmd} s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \ + > $tmpdir/tmp-la + mv -f $tmpdir/tmp-la $lib + done + ${RM}r "$tmpdir" + fi + fi + + if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then + for libdir in $libdirs; do + if test -n "$finish_cmds"; then + # Do each command in the finish commands. + func_execute_cmds "$finish_cmds" 'admincmds="$admincmds +'"$cmd"'"' + fi + if test -n "$finish_eval"; then + # Do the single finish_eval. + eval cmds=\"$finish_eval\" + $opt_dry_run || eval "$cmds" || admincmds+=" + $cmds" + fi + done + fi + + # Exit here if they wanted silent mode. + $opt_silent && exit $EXIT_SUCCESS + + if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then + echo "----------------------------------------------------------------------" + echo "Libraries have been installed in:" + for libdir in $libdirs; do + $ECHO " $libdir" + done + echo + echo "If you ever happen to want to link against installed libraries" + echo "in a given directory, LIBDIR, you must either use libtool, and" + echo "specify the full pathname of the library, or use the \`-LLIBDIR'" + echo "flag during linking and do at least one of the following:" + if test -n "$shlibpath_var"; then + echo " - add LIBDIR to the \`$shlibpath_var' environment variable" + echo " during execution" + fi + if test -n "$runpath_var"; then + echo " - add LIBDIR to the \`$runpath_var' environment variable" + echo " during linking" + fi + if test -n "$hardcode_libdir_flag_spec"; then + libdir=LIBDIR + eval flag=\"$hardcode_libdir_flag_spec\" + + $ECHO " - use the \`$flag' linker flag" + fi + if test -n "$admincmds"; then + $ECHO " - have your system administrator run these commands:$admincmds" + fi + if test -f /etc/ld.so.conf; then + echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" + fi + echo + + echo "See any operating system documentation about shared libraries for" + case $host in + solaris2.[6789]|solaris2.1[0-9]) + echo "more information, such as the ld(1), crle(1) and ld.so(8) manual" + echo "pages." + ;; + *) + echo "more information, such as the ld(1) and ld.so(8) manual pages." + ;; + esac + echo "----------------------------------------------------------------------" + fi + exit $EXIT_SUCCESS +} + +test "$opt_mode" = finish && func_mode_finish ${1+"$@"} + + +# func_mode_install arg... +func_mode_install () +{ + $opt_debug + # There may be an optional sh(1) argument at the beginning of + # install_prog (especially on Windows NT). + if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || + # Allow the use of GNU shtool's install command. + case $nonopt in *shtool*) :;; *) false;; esac; then + # Aesthetically quote it. + func_quote_for_eval "$nonopt" + install_prog="$func_quote_for_eval_result " + arg=$1 + shift + else + install_prog= + arg=$nonopt + fi + + # The real first argument should be the name of the installation program. + # Aesthetically quote it. + func_quote_for_eval "$arg" + install_prog+="$func_quote_for_eval_result" + install_shared_prog=$install_prog + case " $install_prog " in + *[\\\ /]cp\ *) install_cp=: ;; + *) install_cp=false ;; + esac + + # We need to accept at least all the BSD install flags. + dest= + files= + opts= + prev= + install_type= + isdir=no + stripme= + no_mode=: + for arg + do + arg2= + if test -n "$dest"; then + files+=" $dest" + dest=$arg + continue + fi + + case $arg in + -d) isdir=yes ;; + -f) + if $install_cp; then :; else + prev=$arg + fi + ;; + -g | -m | -o) + prev=$arg + ;; + -s) + stripme=" -s" + continue + ;; + -*) + ;; + *) + # If the previous option needed an argument, then skip it. + if test -n "$prev"; then + if test "x$prev" = x-m && test -n "$install_override_mode"; then + arg2=$install_override_mode + no_mode=false + fi + prev= + else + dest=$arg + continue + fi + ;; + esac + + # Aesthetically quote the argument. + func_quote_for_eval "$arg" + install_prog+=" $func_quote_for_eval_result" + if test -n "$arg2"; then + func_quote_for_eval "$arg2" + fi + install_shared_prog+=" $func_quote_for_eval_result" + done + + test -z "$install_prog" && \ + func_fatal_help "you must specify an install program" + + test -n "$prev" && \ + func_fatal_help "the \`$prev' option requires an argument" + + if test -n "$install_override_mode" && $no_mode; then + if $install_cp; then :; else + func_quote_for_eval "$install_override_mode" + install_shared_prog+=" -m $func_quote_for_eval_result" + fi + fi + + if test -z "$files"; then + if test -z "$dest"; then + func_fatal_help "no file or destination specified" + else + func_fatal_help "you must specify a destination" + fi + fi + + # Strip any trailing slash from the destination. + func_stripname '' '/' "$dest" + dest=$func_stripname_result + + # Check to see that the destination is a directory. + test -d "$dest" && isdir=yes + if test "$isdir" = yes; then + destdir="$dest" + destname= + else + func_dirname_and_basename "$dest" "" "." + destdir="$func_dirname_result" + destname="$func_basename_result" + + # Not a directory, so check to see that there is only one file specified. + set dummy $files; shift + test "$#" -gt 1 && \ + func_fatal_help "\`$dest' is not a directory" + fi + case $destdir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + for file in $files; do + case $file in + *.lo) ;; + *) + func_fatal_help "\`$destdir' must be an absolute directory name" + ;; + esac + done + ;; + esac + + # This variable tells wrapper scripts just to set variables rather + # than running their programs. + libtool_install_magic="$magic" + + staticlibs= + future_libdirs= + current_libdirs= + for file in $files; do + + # Do each installation. + case $file in + *.$libext) + # Do the static libraries later. + staticlibs+=" $file" + ;; + + *.la) + func_resolve_sysroot "$file" + file=$func_resolve_sysroot_result + + # Check to see that this really is a libtool archive. + func_lalib_unsafe_p "$file" \ + || func_fatal_help "\`$file' is not a valid libtool archive" + + library_names= + old_library= + relink_command= + func_source "$file" + + # Add the libdir to current_libdirs if it is the destination. + if test "X$destdir" = "X$libdir"; then + case "$current_libdirs " in + *" $libdir "*) ;; + *) current_libdirs+=" $libdir" ;; + esac + else + # Note the libdir as a future libdir. + case "$future_libdirs " in + *" $libdir "*) ;; + *) future_libdirs+=" $libdir" ;; + esac + fi + + func_dirname "$file" "/" "" + dir="$func_dirname_result" + dir+="$objdir" + + if test -n "$relink_command"; then + # Determine the prefix the user has applied to our future dir. + inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"` + + # Don't allow the user to place us outside of our expected + # location b/c this prevents finding dependent libraries that + # are installed to the same prefix. + # At present, this check doesn't affect windows .dll's that + # are installed into $libdir/../bin (currently, that works fine) + # but it's something to keep an eye on. + test "$inst_prefix_dir" = "$destdir" && \ + func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir" + + if test -n "$inst_prefix_dir"; then + # Stick the inst_prefix_dir data into the link command. + relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` + else + relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"` + fi + + func_warning "relinking \`$file'" + func_show_eval "$relink_command" \ + 'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"' + fi + + # See the names of the shared library. + set dummy $library_names; shift + if test -n "$1"; then + realname="$1" + shift + + srcname="$realname" + test -n "$relink_command" && srcname="$realname"T + + # Install the shared library and build the symlinks. + func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \ + 'exit $?' + tstripme="$stripme" + case $host_os in + cygwin* | mingw* | pw32* | cegcc*) + case $realname in + *.dll.a) + tstripme="" + ;; + esac + ;; + esac + if test -n "$tstripme" && test -n "$striplib"; then + func_show_eval "$striplib $destdir/$realname" 'exit $?' + fi + + if test "$#" -gt 0; then + # Delete the old symlinks, and create new ones. + # Try `ln -sf' first, because the `ln' binary might depend on + # the symlink we replace! Solaris /bin/ln does not understand -f, + # so we also need to try rm && ln -s. + for linkname + do + test "$linkname" != "$realname" \ + && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })" + done + fi + + # Do each command in the postinstall commands. + lib="$destdir/$realname" + func_execute_cmds "$postinstall_cmds" 'exit $?' + fi + + # Install the pseudo-library for information purposes. + func_basename "$file" + name="$func_basename_result" + instname="$dir/$name"i + func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' + + # Maybe install the static library, too. + test -n "$old_library" && staticlibs+=" $dir/$old_library" + ;; + + *.lo) + # Install (i.e. copy) a libtool object. + + # Figure out destination file name, if it wasn't already specified. + if test -n "$destname"; then + destfile="$destdir/$destname" + else + func_basename "$file" + destfile="$func_basename_result" + destfile="$destdir/$destfile" + fi + + # Deduce the name of the destination old-style object file. + case $destfile in + *.lo) + func_lo2o "$destfile" + staticdest=$func_lo2o_result + ;; + *.$objext) + staticdest="$destfile" + destfile= + ;; + *) + func_fatal_help "cannot copy a libtool object to \`$destfile'" + ;; + esac + + # Install the libtool object if requested. + test -n "$destfile" && \ + func_show_eval "$install_prog $file $destfile" 'exit $?' + + # Install the old object if enabled. + if test "$build_old_libs" = yes; then + # Deduce the name of the old-style object file. + func_lo2o "$file" + staticobj=$func_lo2o_result + func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?' + fi + exit $EXIT_SUCCESS + ;; + + *) + # Figure out destination file name, if it wasn't already specified. + if test -n "$destname"; then + destfile="$destdir/$destname" + else + func_basename "$file" + destfile="$func_basename_result" + destfile="$destdir/$destfile" + fi + + # If the file is missing, and there is a .exe on the end, strip it + # because it is most likely a libtool script we actually want to + # install + stripped_ext="" + case $file in + *.exe) + if test ! -f "$file"; then + func_stripname '' '.exe' "$file" + file=$func_stripname_result + stripped_ext=".exe" + fi + ;; + esac + + # Do a test to see if this is really a libtool program. + case $host in + *cygwin* | *mingw*) + if func_ltwrapper_executable_p "$file"; then + func_ltwrapper_scriptname "$file" + wrapper=$func_ltwrapper_scriptname_result + else + func_stripname '' '.exe' "$file" + wrapper=$func_stripname_result + fi + ;; + *) + wrapper=$file + ;; + esac + if func_ltwrapper_script_p "$wrapper"; then + notinst_deplibs= + relink_command= + + func_source "$wrapper" + + # Check the variables that should have been set. + test -z "$generated_by_libtool_version" && \ + func_fatal_error "invalid libtool wrapper script \`$wrapper'" + + finalize=yes + for lib in $notinst_deplibs; do + # Check to see that each library is installed. + libdir= + if test -f "$lib"; then + func_source "$lib" + fi + libfile="$libdir/"`$ECHO "$lib" | $SED 's%^.*/%%g'` ### testsuite: skip nested quoting test + if test -n "$libdir" && test ! -f "$libfile"; then + func_warning "\`$lib' has not been installed in \`$libdir'" + finalize=no + fi + done + + relink_command= + func_source "$wrapper" + + outputname= + if test "$fast_install" = no && test -n "$relink_command"; then + $opt_dry_run || { + if test "$finalize" = yes; then + tmpdir=`func_mktempdir` + func_basename "$file$stripped_ext" + file="$func_basename_result" + outputname="$tmpdir/$file" + # Replace the output file specification. + relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'` + + $opt_silent || { + func_quote_for_expand "$relink_command" + eval "func_echo $func_quote_for_expand_result" + } + if eval "$relink_command"; then : + else + func_error "error: relink \`$file' with the above command before installing it" + $opt_dry_run || ${RM}r "$tmpdir" + continue + fi + file="$outputname" + else + func_warning "cannot relink \`$file'" + fi + } + else + # Install the binary that we compiled earlier. + file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"` + fi + fi + + # remove .exe since cygwin /usr/bin/install will append another + # one anyway + case $install_prog,$host in + */usr/bin/install*,*cygwin*) + case $file:$destfile in + *.exe:*.exe) + # this is ok + ;; + *.exe:*) + destfile=$destfile.exe + ;; + *:*.exe) + func_stripname '' '.exe' "$destfile" + destfile=$func_stripname_result + ;; + esac + ;; + esac + func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?' + $opt_dry_run || if test -n "$outputname"; then + ${RM}r "$tmpdir" + fi + ;; + esac + done + + for file in $staticlibs; do + func_basename "$file" + name="$func_basename_result" + + # Set up the ranlib parameters. + oldlib="$destdir/$name" + func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 + tool_oldlib=$func_to_tool_file_result + + func_show_eval "$install_prog \$file \$oldlib" 'exit $?' + + if test -n "$stripme" && test -n "$old_striplib"; then + func_show_eval "$old_striplib $tool_oldlib" 'exit $?' + fi + + # Do each command in the postinstall commands. + func_execute_cmds "$old_postinstall_cmds" 'exit $?' + done + + test -n "$future_libdirs" && \ + func_warning "remember to run \`$progname --finish$future_libdirs'" + + if test -n "$current_libdirs"; then + # Maybe just do a dry run. + $opt_dry_run && current_libdirs=" -n$current_libdirs" + exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' + else + exit $EXIT_SUCCESS + fi +} + +test "$opt_mode" = install && func_mode_install ${1+"$@"} + + +# func_generate_dlsyms outputname originator pic_p +# Extract symbols from dlprefiles and create ${outputname}S.o with +# a dlpreopen symbol table. +func_generate_dlsyms () +{ + $opt_debug + my_outputname="$1" + my_originator="$2" + my_pic_p="${3-no}" + my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'` + my_dlsyms= + + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + if test -n "$NM" && test -n "$global_symbol_pipe"; then + my_dlsyms="${my_outputname}S.c" + else + func_error "not configured to extract global symbols from dlpreopened files" + fi + fi + + if test -n "$my_dlsyms"; then + case $my_dlsyms in + "") ;; + *.c) + # Discover the nlist of each of the dlfiles. + nlist="$output_objdir/${my_outputname}.nm" + + func_show_eval "$RM $nlist ${nlist}S ${nlist}T" + + # Parse the name list into a source file. + func_verbose "creating $output_objdir/$my_dlsyms" + + $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ +/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */ +/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */ + +#ifdef __cplusplus +extern \"C\" { +#endif + +#if defined(__GNUC__) && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4)) +#pragma GCC diagnostic ignored \"-Wstrict-prototypes\" +#endif + +/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ +#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) +/* DATA imports from DLLs on WIN32 con't be const, because runtime + relocations are performed -- see ld's documentation on pseudo-relocs. */ +# define LT_DLSYM_CONST +#elif defined(__osf__) +/* This system does not cope well with relocations in const data. */ +# define LT_DLSYM_CONST +#else +# define LT_DLSYM_CONST const +#endif + +/* External symbol declarations for the compiler. */\ +" + + if test "$dlself" = yes; then + func_verbose "generating symbol list for \`$output'" + + $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" + + # Add our own program objects to the symbol list. + progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP` + for progfile in $progfiles; do + func_to_tool_file "$progfile" func_convert_file_msys_to_w32 + func_verbose "extracting global C symbols from \`$func_to_tool_file_result'" + $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'" + done + + if test -n "$exclude_expsyms"; then + $opt_dry_run || { + eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' + eval '$MV "$nlist"T "$nlist"' + } + fi + + if test -n "$export_symbols_regex"; then + $opt_dry_run || { + eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' + eval '$MV "$nlist"T "$nlist"' + } + fi + + # Prepare the list of exported symbols + if test -z "$export_symbols"; then + export_symbols="$output_objdir/$outputname.exp" + $opt_dry_run || { + $RM $export_symbols + eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' + case $host in + *cygwin* | *mingw* | *cegcc* ) + eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' + eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' + ;; + esac + } + else + $opt_dry_run || { + eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' + eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' + eval '$MV "$nlist"T "$nlist"' + case $host in + *cygwin* | *mingw* | *cegcc* ) + eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' + eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' + ;; + esac + } + fi + fi + + for dlprefile in $dlprefiles; do + func_verbose "extracting global C symbols from \`$dlprefile'" + func_basename "$dlprefile" + name="$func_basename_result" + case $host in + *cygwin* | *mingw* | *cegcc* ) + # if an import library, we need to obtain dlname + if func_win32_import_lib_p "$dlprefile"; then + func_tr_sh "$dlprefile" + eval "curr_lafile=\$libfile_$func_tr_sh_result" + dlprefile_dlbasename="" + if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then + # Use subshell, to avoid clobbering current variable values + dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"` + if test -n "$dlprefile_dlname" ; then + func_basename "$dlprefile_dlname" + dlprefile_dlbasename="$func_basename_result" + else + # no lafile. user explicitly requested -dlpreopen . + $sharedlib_from_linklib_cmd "$dlprefile" + dlprefile_dlbasename=$sharedlib_from_linklib_result + fi + fi + $opt_dry_run || { + if test -n "$dlprefile_dlbasename" ; then + eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"' + else + func_warning "Could not compute DLL name from $name" + eval '$ECHO ": $name " >> "$nlist"' + fi + func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 + eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe | + $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'" + } + else # not an import lib + $opt_dry_run || { + eval '$ECHO ": $name " >> "$nlist"' + func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 + eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" + } + fi + ;; + *) + $opt_dry_run || { + eval '$ECHO ": $name " >> "$nlist"' + func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 + eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" + } + ;; + esac + done + + $opt_dry_run || { + # Make sure we have at least an empty file. + test -f "$nlist" || : > "$nlist" + + if test -n "$exclude_expsyms"; then + $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T + $MV "$nlist"T "$nlist" + fi + + # Try sorting and uniquifying the output. + if $GREP -v "^: " < "$nlist" | + if sort -k 3 /dev/null 2>&1; then + sort -k 3 + else + sort +2 + fi | + uniq > "$nlist"S; then + : + else + $GREP -v "^: " < "$nlist" > "$nlist"S + fi + + if test -f "$nlist"S; then + eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' + else + echo '/* NONE */' >> "$output_objdir/$my_dlsyms" + fi + + echo >> "$output_objdir/$my_dlsyms" "\ + +/* The mapping between symbol names and symbols. */ +typedef struct { + const char *name; + void *address; +} lt_dlsymlist; +extern LT_DLSYM_CONST lt_dlsymlist +lt_${my_prefix}_LTX_preloaded_symbols[]; +LT_DLSYM_CONST lt_dlsymlist +lt_${my_prefix}_LTX_preloaded_symbols[] = +{\ + { \"$my_originator\", (void *) 0 }," + + case $need_lib_prefix in + no) + eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms" + ;; + *) + eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" + ;; + esac + echo >> "$output_objdir/$my_dlsyms" "\ + {0, (void *) 0} +}; + +/* This works around a problem in FreeBSD linker */ +#ifdef FREEBSD_WORKAROUND +static const void *lt_preloaded_setup() { + return lt_${my_prefix}_LTX_preloaded_symbols; +} +#endif + +#ifdef __cplusplus +} +#endif\ +" + } # !$opt_dry_run + + pic_flag_for_symtable= + case "$compile_command " in + *" -static "*) ;; + *) + case $host in + # compiling the symbol table file with pic_flag works around + # a FreeBSD bug that causes programs to crash when -lm is + # linked before any other PIC object. But we must not use + # pic_flag when linking with -static. The problem exists in + # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. + *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) + pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; + *-*-hpux*) + pic_flag_for_symtable=" $pic_flag" ;; + *) + if test "X$my_pic_p" != Xno; then + pic_flag_for_symtable=" $pic_flag" + fi + ;; + esac + ;; + esac + symtab_cflags= + for arg in $LTCFLAGS; do + case $arg in + -pie | -fpie | -fPIE) ;; + *) symtab_cflags+=" $arg" ;; + esac + done + + # Now compile the dynamic symbol file. + func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' + + # Clean up the generated files. + func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"' + + # Transform the symbol file into the correct name. + symfileobj="$output_objdir/${my_outputname}S.$objext" + case $host in + *cygwin* | *mingw* | *cegcc* ) + if test -f "$output_objdir/$my_outputname.def"; then + compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` + finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` + else + compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` + finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` + fi + ;; + *) + compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` + finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` + ;; + esac + ;; + *) + func_fatal_error "unknown suffix for \`$my_dlsyms'" + ;; + esac + else + # We keep going just in case the user didn't refer to + # lt_preloaded_symbols. The linker will fail if global_symbol_pipe + # really was required. + + # Nullify the symbol file. + compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"` + finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"` + fi +} + +# func_win32_libid arg +# return the library type of file 'arg' +# +# Need a lot of goo to handle *both* DLLs and import libs +# Has to be a shell function in order to 'eat' the argument +# that is supplied when $file_magic_command is called. +# Despite the name, also deal with 64 bit binaries. +func_win32_libid () +{ + $opt_debug + win32_libid_type="unknown" + win32_fileres=`file -L $1 2>/dev/null` + case $win32_fileres in + *ar\ archive\ import\ library*) # definitely import + win32_libid_type="x86 archive import" + ;; + *ar\ archive*) # could be an import, or static + # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD. + if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | + $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then + func_to_tool_file "$1" func_convert_file_msys_to_w32 + win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" | + $SED -n -e ' + 1,100{ + / I /{ + s,.*,import, + p + q + } + }'` + case $win32_nmres in + import*) win32_libid_type="x86 archive import";; + *) win32_libid_type="x86 archive static";; + esac + fi + ;; + *DLL*) + win32_libid_type="x86 DLL" + ;; + *executable*) # but shell scripts are "executable" too... + case $win32_fileres in + *MS\ Windows\ PE\ Intel*) + win32_libid_type="x86 DLL" + ;; + esac + ;; + esac + $ECHO "$win32_libid_type" +} + +# func_cygming_dll_for_implib ARG +# +# Platform-specific function to extract the +# name of the DLL associated with the specified +# import library ARG. +# Invoked by eval'ing the libtool variable +# $sharedlib_from_linklib_cmd +# Result is available in the variable +# $sharedlib_from_linklib_result +func_cygming_dll_for_implib () +{ + $opt_debug + sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"` +} + +# func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs +# +# The is the core of a fallback implementation of a +# platform-specific function to extract the name of the +# DLL associated with the specified import library LIBNAME. +# +# SECTION_NAME is either .idata$6 or .idata$7, depending +# on the platform and compiler that created the implib. +# +# Echos the name of the DLL associated with the +# specified import library. +func_cygming_dll_for_implib_fallback_core () +{ + $opt_debug + match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"` + $OBJDUMP -s --section "$1" "$2" 2>/dev/null | + $SED '/^Contents of section '"$match_literal"':/{ + # Place marker at beginning of archive member dllname section + s/.*/====MARK====/ + p + d + } + # These lines can sometimes be longer than 43 characters, but + # are always uninteresting + /:[ ]*file format pe[i]\{,1\}-/d + /^In archive [^:]*:/d + # Ensure marker is printed + /^====MARK====/p + # Remove all lines with less than 43 characters + /^.\{43\}/!d + # From remaining lines, remove first 43 characters + s/^.\{43\}//' | + $SED -n ' + # Join marker and all lines until next marker into a single line + /^====MARK====/ b para + H + $ b para + b + :para + x + s/\n//g + # Remove the marker + s/^====MARK====// + # Remove trailing dots and whitespace + s/[\. \t]*$// + # Print + /./p' | + # we now have a list, one entry per line, of the stringified + # contents of the appropriate section of all members of the + # archive which possess that section. Heuristic: eliminate + # all those which have a first or second character that is + # a '.' (that is, objdump's representation of an unprintable + # character.) This should work for all archives with less than + # 0x302f exports -- but will fail for DLLs whose name actually + # begins with a literal '.' or a single character followed by + # a '.'. + # + # Of those that remain, print the first one. + $SED -e '/^\./d;/^.\./d;q' +} + +# func_cygming_gnu_implib_p ARG +# This predicate returns with zero status (TRUE) if +# ARG is a GNU/binutils-style import library. Returns +# with nonzero status (FALSE) otherwise. +func_cygming_gnu_implib_p () +{ + $opt_debug + func_to_tool_file "$1" func_convert_file_msys_to_w32 + func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'` + test -n "$func_cygming_gnu_implib_tmp" +} + +# func_cygming_ms_implib_p ARG +# This predicate returns with zero status (TRUE) if +# ARG is an MS-style import library. Returns +# with nonzero status (FALSE) otherwise. +func_cygming_ms_implib_p () +{ + $opt_debug + func_to_tool_file "$1" func_convert_file_msys_to_w32 + func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'` + test -n "$func_cygming_ms_implib_tmp" +} + +# func_cygming_dll_for_implib_fallback ARG +# Platform-specific function to extract the +# name of the DLL associated with the specified +# import library ARG. +# +# This fallback implementation is for use when $DLLTOOL +# does not support the --identify-strict option. +# Invoked by eval'ing the libtool variable +# $sharedlib_from_linklib_cmd +# Result is available in the variable +# $sharedlib_from_linklib_result +func_cygming_dll_for_implib_fallback () +{ + $opt_debug + if func_cygming_gnu_implib_p "$1" ; then + # binutils import library + sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"` + elif func_cygming_ms_implib_p "$1" ; then + # ms-generated import library + sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"` + else + # unknown + sharedlib_from_linklib_result="" + fi +} + + +# func_extract_an_archive dir oldlib +func_extract_an_archive () +{ + $opt_debug + f_ex_an_ar_dir="$1"; shift + f_ex_an_ar_oldlib="$1" + if test "$lock_old_archive_extraction" = yes; then + lockfile=$f_ex_an_ar_oldlib.lock + until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do + func_echo "Waiting for $lockfile to be removed" + sleep 2 + done + fi + func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \ + 'stat=$?; rm -f "$lockfile"; exit $stat' + if test "$lock_old_archive_extraction" = yes; then + $opt_dry_run || rm -f "$lockfile" + fi + if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then + : + else + func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" + fi +} + + +# func_extract_archives gentop oldlib ... +func_extract_archives () +{ + $opt_debug + my_gentop="$1"; shift + my_oldlibs=${1+"$@"} + my_oldobjs="" + my_xlib="" + my_xabs="" + my_xdir="" + + for my_xlib in $my_oldlibs; do + # Extract the objects. + case $my_xlib in + [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; + *) my_xabs=`pwd`"/$my_xlib" ;; + esac + func_basename "$my_xlib" + my_xlib="$func_basename_result" + my_xlib_u=$my_xlib + while :; do + case " $extracted_archives " in + *" $my_xlib_u "*) + func_arith $extracted_serial + 1 + extracted_serial=$func_arith_result + my_xlib_u=lt$extracted_serial-$my_xlib ;; + *) break ;; + esac + done + extracted_archives="$extracted_archives $my_xlib_u" + my_xdir="$my_gentop/$my_xlib_u" + + func_mkdir_p "$my_xdir" + + case $host in + *-darwin*) + func_verbose "Extracting $my_xabs" + # Do not bother doing anything if just a dry run + $opt_dry_run || { + darwin_orig_dir=`pwd` + cd $my_xdir || exit $? + darwin_archive=$my_xabs + darwin_curdir=`pwd` + darwin_base_archive=`basename "$darwin_archive"` + darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true` + if test -n "$darwin_arches"; then + darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'` + darwin_arch= + func_verbose "$darwin_base_archive has multiple architectures $darwin_arches" + for darwin_arch in $darwin_arches ; do + func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}" + $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" + cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" + func_extract_an_archive "`pwd`" "${darwin_base_archive}" + cd "$darwin_curdir" + $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" + done # $darwin_arches + ## Okay now we've a bunch of thin objects, gotta fatten them up :) + darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u` + darwin_file= + darwin_files= + for darwin_file in $darwin_filelist; do + darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP` + $LIPO -create -output "$darwin_file" $darwin_files + done # $darwin_filelist + $RM -rf unfat-$$ + cd "$darwin_orig_dir" + else + cd $darwin_orig_dir + func_extract_an_archive "$my_xdir" "$my_xabs" + fi # $darwin_arches + } # !$opt_dry_run + ;; + *) + func_extract_an_archive "$my_xdir" "$my_xabs" + ;; + esac + my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP` + done + + func_extract_archives_result="$my_oldobjs" +} + + +# func_emit_wrapper [arg=no] +# +# Emit a libtool wrapper script on stdout. +# Don't directly open a file because we may want to +# incorporate the script contents within a cygwin/mingw +# wrapper executable. Must ONLY be called from within +# func_mode_link because it depends on a number of variables +# set therein. +# +# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR +# variable will take. If 'yes', then the emitted script +# will assume that the directory in which it is stored is +# the $objdir directory. This is a cygwin/mingw-specific +# behavior. +func_emit_wrapper () +{ + func_emit_wrapper_arg1=${1-no} + + $ECHO "\ +#! $SHELL + +# $output - temporary wrapper script for $objdir/$outputname +# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION +# +# The $output program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='$sed_quote_subst' + +# Be Bourne compatible +if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which + # is contrary to our usage. Disable this feature. + alias -g '\${1+\"\$@\"}'='\"\$@\"' + setopt NO_GLOB_SUBST +else + case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command=\"$relink_command\" + +# This environment variable determines our operation mode. +if test \"\$libtool_install_magic\" = \"$magic\"; then + # install mode needs the following variables: + generated_by_libtool_version='$macro_version' + notinst_deplibs='$notinst_deplibs' +else + # When we are sourced in execute mode, \$file and \$ECHO are already set. + if test \"\$libtool_execute_magic\" != \"$magic\"; then + file=\"\$0\"" + + qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"` + $ECHO "\ + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +\$1 +_LTECHO_EOF' +} + ECHO=\"$qECHO\" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ which is used only on +# windows platforms, and (c) all begin with the string "--lt-" +# (application programs are unlikely to have options which match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's $0 value, followed by "$@". +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=\$0 + shift + for lt_opt + do + case \"\$lt_opt\" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\` + test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=. + lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\` + cat \"\$lt_dump_D/\$lt_dump_F\" + exit 0 + ;; + --lt-*) + \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n \"\$lt_option_debug\"; then + echo \"${outputname}:${output}:\${LINENO}: libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[\$lt_dump_args_N]: \$lt_arg\" + lt_dump_args_N=\`expr \$lt_dump_args_N + 1\` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ +" + case $host in + # Backslashes separate directories on plain windows + *-*-mingw | *-*-os2* | *-cegcc*) + $ECHO "\ + if test -n \"\$lt_option_debug\"; then + \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir\\\\\$program\" 1>&2 + func_lt_dump_args \${1+\"\$@\"} 1>&2 + fi + exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} +" + ;; + + *) + $ECHO "\ + if test -n \"\$lt_option_debug\"; then + \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir/\$program\" 1>&2 + func_lt_dump_args \${1+\"\$@\"} 1>&2 + fi + exec \"\$progdir/\$program\" \${1+\"\$@\"} +" + ;; + esac + $ECHO "\ + \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from \$@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case \" \$* \" in + *\\ --lt-*) + for lt_wr_arg + do + case \$lt_wr_arg in + --lt-*) ;; + *) set x \"\$@\" \"\$lt_wr_arg\"; shift;; + esac + shift + done ;; + esac + func_exec_program_core \${1+\"\$@\"} +} + + # Parse options + func_parse_lt_options \"\$0\" \${1+\"\$@\"} + + # Find the directory that this script lives in. + thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\` + test \"x\$thisdir\" = \"x\$file\" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\` + while test -n \"\$file\"; do + destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\` + + # If there was a directory component, then change thisdir. + if test \"x\$destdir\" != \"x\$file\"; then + case \"\$destdir\" in + [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; + *) thisdir=\"\$thisdir/\$destdir\" ;; + esac + fi + + file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\` + file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1 + if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then + # special case for '.' + if test \"\$thisdir\" = \".\"; then + thisdir=\`pwd\` + fi + # remove .libs from thisdir + case \"\$thisdir\" in + *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;; + $objdir ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=\`cd \"\$thisdir\" && pwd\` + test -n \"\$absdir\" && thisdir=\"\$absdir\" +" + + if test "$fast_install" = yes; then + $ECHO "\ + program=lt-'$outputname'$exeext + progdir=\"\$thisdir/$objdir\" + + if test ! -f \"\$progdir/\$program\" || + { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ + test \"X\$file\" != \"X\$progdir/\$program\"; }; then + + file=\"\$\$-\$program\" + + if test ! -d \"\$progdir\"; then + $MKDIR \"\$progdir\" + else + $RM \"\$progdir/\$file\" + fi" + + $ECHO "\ + + # relink executable if necessary + if test -n \"\$relink_command\"; then + if relink_command_output=\`eval \$relink_command 2>&1\`; then : + else + $ECHO \"\$relink_command_output\" >&2 + $RM \"\$progdir/\$file\" + exit 1 + fi + fi + + $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || + { $RM \"\$progdir/\$program\"; + $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; } + $RM \"\$progdir/\$file\" + fi" + else + $ECHO "\ + program='$outputname' + progdir=\"\$thisdir/$objdir\" +" + fi + + $ECHO "\ + + if test -f \"\$progdir/\$program\"; then" + + # fixup the dll searchpath if we need to. + # + # Fix the DLL searchpath if we need to. Do this before prepending + # to shlibpath, because on Windows, both are PATH and uninstalled + # libraries must come first. + if test -n "$dllsearchpath"; then + $ECHO "\ + # Add the dll search path components to the executable PATH + PATH=$dllsearchpath:\$PATH +" + fi + + # Export our shlibpath_var if we have one. + if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then + $ECHO "\ + # Add our own library path to $shlibpath_var + $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" + + # Some systems cannot cope with colon-terminated $shlibpath_var + # The second colon is a workaround for a bug in BeOS R4 sed + $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\` + + export $shlibpath_var +" + fi + + $ECHO "\ + if test \"\$libtool_execute_magic\" != \"$magic\"; then + # Run the actual program with our arguments. + func_exec_program \${1+\"\$@\"} + fi + else + # The program doesn't exist. + \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 + \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 + \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 + exit 1 + fi +fi\ +" +} + + +# func_emit_cwrapperexe_src +# emit the source code for a wrapper executable on stdout +# Must ONLY be called from within func_mode_link because +# it depends on a number of variable set therein. +func_emit_cwrapperexe_src () +{ + cat < +#include +#ifdef _MSC_VER +# include +# include +# include +#else +# include +# include +# ifdef __CYGWIN__ +# include +# endif +#endif +#include +#include +#include +#include +#include +#include +#include +#include + +/* declarations of non-ANSI functions */ +#if defined(__MINGW32__) +# ifdef __STRICT_ANSI__ +int _putenv (const char *); +# endif +#elif defined(__CYGWIN__) +# ifdef __STRICT_ANSI__ +char *realpath (const char *, char *); +int putenv (char *); +int setenv (const char *, const char *, int); +# endif +/* #elif defined (other platforms) ... */ +#endif + +/* portability defines, excluding path handling macros */ +#if defined(_MSC_VER) +# define setmode _setmode +# define stat _stat +# define chmod _chmod +# define getcwd _getcwd +# define putenv _putenv +# define S_IXUSR _S_IEXEC +# ifndef _INTPTR_T_DEFINED +# define _INTPTR_T_DEFINED +# define intptr_t int +# endif +#elif defined(__MINGW32__) +# define setmode _setmode +# define stat _stat +# define chmod _chmod +# define getcwd _getcwd +# define putenv _putenv +#elif defined(__CYGWIN__) +# define HAVE_SETENV +# define FOPEN_WB "wb" +/* #elif defined (other platforms) ... */ +#endif + +#if defined(PATH_MAX) +# define LT_PATHMAX PATH_MAX +#elif defined(MAXPATHLEN) +# define LT_PATHMAX MAXPATHLEN +#else +# define LT_PATHMAX 1024 +#endif + +#ifndef S_IXOTH +# define S_IXOTH 0 +#endif +#ifndef S_IXGRP +# define S_IXGRP 0 +#endif + +/* path handling portability macros */ +#ifndef DIR_SEPARATOR +# define DIR_SEPARATOR '/' +# define PATH_SEPARATOR ':' +#endif + +#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ + defined (__OS2__) +# define HAVE_DOS_BASED_FILE_SYSTEM +# define FOPEN_WB "wb" +# ifndef DIR_SEPARATOR_2 +# define DIR_SEPARATOR_2 '\\' +# endif +# ifndef PATH_SEPARATOR_2 +# define PATH_SEPARATOR_2 ';' +# endif +#endif + +#ifndef DIR_SEPARATOR_2 +# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) +#else /* DIR_SEPARATOR_2 */ +# define IS_DIR_SEPARATOR(ch) \ + (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) +#endif /* DIR_SEPARATOR_2 */ + +#ifndef PATH_SEPARATOR_2 +# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) +#else /* PATH_SEPARATOR_2 */ +# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) +#endif /* PATH_SEPARATOR_2 */ + +#ifndef FOPEN_WB +# define FOPEN_WB "w" +#endif +#ifndef _O_BINARY +# define _O_BINARY 0 +#endif + +#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) +#define XFREE(stale) do { \ + if (stale) { free ((void *) stale); stale = 0; } \ +} while (0) + +#if defined(LT_DEBUGWRAPPER) +static int lt_debug = 1; +#else +static int lt_debug = 0; +#endif + +const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */ + +void *xmalloc (size_t num); +char *xstrdup (const char *string); +const char *base_name (const char *name); +char *find_executable (const char *wrapper); +char *chase_symlinks (const char *pathspec); +int make_executable (const char *path); +int check_executable (const char *path); +char *strendzap (char *str, const char *pat); +void lt_debugprintf (const char *file, int line, const char *fmt, ...); +void lt_fatal (const char *file, int line, const char *message, ...); +static const char *nonnull (const char *s); +static const char *nonempty (const char *s); +void lt_setenv (const char *name, const char *value); +char *lt_extend_str (const char *orig_value, const char *add, int to_end); +void lt_update_exe_path (const char *name, const char *value); +void lt_update_lib_path (const char *name, const char *value); +char **prepare_spawn (char **argv); +void lt_dump_script (FILE *f); +EOF + + cat <= 0) + && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) + return 1; + else + return 0; +} + +int +make_executable (const char *path) +{ + int rval = 0; + struct stat st; + + lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n", + nonempty (path)); + if ((!path) || (!*path)) + return 0; + + if (stat (path, &st) >= 0) + { + rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); + } + return rval; +} + +/* Searches for the full path of the wrapper. Returns + newly allocated full path name if found, NULL otherwise + Does not chase symlinks, even on platforms that support them. +*/ +char * +find_executable (const char *wrapper) +{ + int has_slash = 0; + const char *p; + const char *p_next; + /* static buffer for getcwd */ + char tmp[LT_PATHMAX + 1]; + int tmp_len; + char *concat_name; + + lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n", + nonempty (wrapper)); + + if ((wrapper == NULL) || (*wrapper == '\0')) + return NULL; + + /* Absolute path? */ +#if defined (HAVE_DOS_BASED_FILE_SYSTEM) + if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') + { + concat_name = xstrdup (wrapper); + if (check_executable (concat_name)) + return concat_name; + XFREE (concat_name); + } + else + { +#endif + if (IS_DIR_SEPARATOR (wrapper[0])) + { + concat_name = xstrdup (wrapper); + if (check_executable (concat_name)) + return concat_name; + XFREE (concat_name); + } +#if defined (HAVE_DOS_BASED_FILE_SYSTEM) + } +#endif + + for (p = wrapper; *p; p++) + if (*p == '/') + { + has_slash = 1; + break; + } + if (!has_slash) + { + /* no slashes; search PATH */ + const char *path = getenv ("PATH"); + if (path != NULL) + { + for (p = path; *p; p = p_next) + { + const char *q; + size_t p_len; + for (q = p; *q; q++) + if (IS_PATH_SEPARATOR (*q)) + break; + p_len = q - p; + p_next = (*q == '\0' ? q : q + 1); + if (p_len == 0) + { + /* empty path: current directory */ + if (getcwd (tmp, LT_PATHMAX) == NULL) + lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", + nonnull (strerror (errno))); + tmp_len = strlen (tmp); + concat_name = + XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); + memcpy (concat_name, tmp, tmp_len); + concat_name[tmp_len] = '/'; + strcpy (concat_name + tmp_len + 1, wrapper); + } + else + { + concat_name = + XMALLOC (char, p_len + 1 + strlen (wrapper) + 1); + memcpy (concat_name, p, p_len); + concat_name[p_len] = '/'; + strcpy (concat_name + p_len + 1, wrapper); + } + if (check_executable (concat_name)) + return concat_name; + XFREE (concat_name); + } + } + /* not found in PATH; assume curdir */ + } + /* Relative path | not found in path: prepend cwd */ + if (getcwd (tmp, LT_PATHMAX) == NULL) + lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", + nonnull (strerror (errno))); + tmp_len = strlen (tmp); + concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); + memcpy (concat_name, tmp, tmp_len); + concat_name[tmp_len] = '/'; + strcpy (concat_name + tmp_len + 1, wrapper); + + if (check_executable (concat_name)) + return concat_name; + XFREE (concat_name); + return NULL; +} + +char * +chase_symlinks (const char *pathspec) +{ +#ifndef S_ISLNK + return xstrdup (pathspec); +#else + char buf[LT_PATHMAX]; + struct stat s; + char *tmp_pathspec = xstrdup (pathspec); + char *p; + int has_symlinks = 0; + while (strlen (tmp_pathspec) && !has_symlinks) + { + lt_debugprintf (__FILE__, __LINE__, + "checking path component for symlinks: %s\n", + tmp_pathspec); + if (lstat (tmp_pathspec, &s) == 0) + { + if (S_ISLNK (s.st_mode) != 0) + { + has_symlinks = 1; + break; + } + + /* search backwards for last DIR_SEPARATOR */ + p = tmp_pathspec + strlen (tmp_pathspec) - 1; + while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) + p--; + if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) + { + /* no more DIR_SEPARATORS left */ + break; + } + *p = '\0'; + } + else + { + lt_fatal (__FILE__, __LINE__, + "error accessing file \"%s\": %s", + tmp_pathspec, nonnull (strerror (errno))); + } + } + XFREE (tmp_pathspec); + + if (!has_symlinks) + { + return xstrdup (pathspec); + } + + tmp_pathspec = realpath (pathspec, buf); + if (tmp_pathspec == 0) + { + lt_fatal (__FILE__, __LINE__, + "could not follow symlinks for %s", pathspec); + } + return xstrdup (tmp_pathspec); +#endif +} + +char * +strendzap (char *str, const char *pat) +{ + size_t len, patlen; + + assert (str != NULL); + assert (pat != NULL); + + len = strlen (str); + patlen = strlen (pat); + + if (patlen <= len) + { + str += len - patlen; + if (strcmp (str, pat) == 0) + *str = '\0'; + } + return str; +} + +void +lt_debugprintf (const char *file, int line, const char *fmt, ...) +{ + va_list args; + if (lt_debug) + { + (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line); + va_start (args, fmt); + (void) vfprintf (stderr, fmt, args); + va_end (args); + } +} + +static void +lt_error_core (int exit_status, const char *file, + int line, const char *mode, + const char *message, va_list ap) +{ + fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode); + vfprintf (stderr, message, ap); + fprintf (stderr, ".\n"); + + if (exit_status >= 0) + exit (exit_status); +} + +void +lt_fatal (const char *file, int line, const char *message, ...) +{ + va_list ap; + va_start (ap, message); + lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap); + va_end (ap); +} + +static const char * +nonnull (const char *s) +{ + return s ? s : "(null)"; +} + +static const char * +nonempty (const char *s) +{ + return (s && !*s) ? "(empty)" : nonnull (s); +} + +void +lt_setenv (const char *name, const char *value) +{ + lt_debugprintf (__FILE__, __LINE__, + "(lt_setenv) setting '%s' to '%s'\n", + nonnull (name), nonnull (value)); + { +#ifdef HAVE_SETENV + /* always make a copy, for consistency with !HAVE_SETENV */ + char *str = xstrdup (value); + setenv (name, str, 1); +#else + int len = strlen (name) + 1 + strlen (value) + 1; + char *str = XMALLOC (char, len); + sprintf (str, "%s=%s", name, value); + if (putenv (str) != EXIT_SUCCESS) + { + XFREE (str); + } +#endif + } +} + +char * +lt_extend_str (const char *orig_value, const char *add, int to_end) +{ + char *new_value; + if (orig_value && *orig_value) + { + int orig_value_len = strlen (orig_value); + int add_len = strlen (add); + new_value = XMALLOC (char, add_len + orig_value_len + 1); + if (to_end) + { + strcpy (new_value, orig_value); + strcpy (new_value + orig_value_len, add); + } + else + { + strcpy (new_value, add); + strcpy (new_value + add_len, orig_value); + } + } + else + { + new_value = xstrdup (add); + } + return new_value; +} + +void +lt_update_exe_path (const char *name, const char *value) +{ + lt_debugprintf (__FILE__, __LINE__, + "(lt_update_exe_path) modifying '%s' by prepending '%s'\n", + nonnull (name), nonnull (value)); + + if (name && *name && value && *value) + { + char *new_value = lt_extend_str (getenv (name), value, 0); + /* some systems can't cope with a ':'-terminated path #' */ + int len = strlen (new_value); + while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1])) + { + new_value[len-1] = '\0'; + } + lt_setenv (name, new_value); + XFREE (new_value); + } +} + +void +lt_update_lib_path (const char *name, const char *value) +{ + lt_debugprintf (__FILE__, __LINE__, + "(lt_update_lib_path) modifying '%s' by prepending '%s'\n", + nonnull (name), nonnull (value)); + + if (name && *name && value && *value) + { + char *new_value = lt_extend_str (getenv (name), value, 0); + lt_setenv (name, new_value); + XFREE (new_value); + } +} + +EOF + case $host_os in + mingw*) + cat <<"EOF" + +/* Prepares an argument vector before calling spawn(). + Note that spawn() does not by itself call the command interpreter + (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") : + ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); + GetVersionEx(&v); + v.dwPlatformId == VER_PLATFORM_WIN32_NT; + }) ? "cmd.exe" : "command.com"). + Instead it simply concatenates the arguments, separated by ' ', and calls + CreateProcess(). We must quote the arguments since Win32 CreateProcess() + interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a + special way: + - Space and tab are interpreted as delimiters. They are not treated as + delimiters if they are surrounded by double quotes: "...". + - Unescaped double quotes are removed from the input. Their only effect is + that within double quotes, space and tab are treated like normal + characters. + - Backslashes not followed by double quotes are not special. + - But 2*n+1 backslashes followed by a double quote become + n backslashes followed by a double quote (n >= 0): + \" -> " + \\\" -> \" + \\\\\" -> \\" + */ +#define SHELL_SPECIAL_CHARS "\"\\ \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" +#define SHELL_SPACE_CHARS " \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" +char ** +prepare_spawn (char **argv) +{ + size_t argc; + char **new_argv; + size_t i; + + /* Count number of arguments. */ + for (argc = 0; argv[argc] != NULL; argc++) + ; + + /* Allocate new argument vector. */ + new_argv = XMALLOC (char *, argc + 1); + + /* Put quoted arguments into the new argument vector. */ + for (i = 0; i < argc; i++) + { + const char *string = argv[i]; + + if (string[0] == '\0') + new_argv[i] = xstrdup ("\"\""); + else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL) + { + int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL); + size_t length; + unsigned int backslashes; + const char *s; + char *quoted_string; + char *p; + + length = 0; + backslashes = 0; + if (quote_around) + length++; + for (s = string; *s != '\0'; s++) + { + char c = *s; + if (c == '"') + length += backslashes + 1; + length++; + if (c == '\\') + backslashes++; + else + backslashes = 0; + } + if (quote_around) + length += backslashes + 1; + + quoted_string = XMALLOC (char, length + 1); + + p = quoted_string; + backslashes = 0; + if (quote_around) + *p++ = '"'; + for (s = string; *s != '\0'; s++) + { + char c = *s; + if (c == '"') + { + unsigned int j; + for (j = backslashes + 1; j > 0; j--) + *p++ = '\\'; + } + *p++ = c; + if (c == '\\') + backslashes++; + else + backslashes = 0; + } + if (quote_around) + { + unsigned int j; + for (j = backslashes; j > 0; j--) + *p++ = '\\'; + *p++ = '"'; + } + *p = '\0'; + + new_argv[i] = quoted_string; + } + else + new_argv[i] = (char *) string; + } + new_argv[argc] = NULL; + + return new_argv; +} +EOF + ;; + esac + + cat <<"EOF" +void lt_dump_script (FILE* f) +{ +EOF + func_emit_wrapper yes | + $SED -n -e ' +s/^\(.\{79\}\)\(..*\)/\1\ +\2/ +h +s/\([\\"]\)/\\\1/g +s/$/\\n/ +s/\([^\n]*\).*/ fputs ("\1", f);/p +g +D' + cat <<"EOF" +} +EOF +} +# end: func_emit_cwrapperexe_src + +# func_win32_import_lib_p ARG +# True if ARG is an import lib, as indicated by $file_magic_cmd +func_win32_import_lib_p () +{ + $opt_debug + case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in + *import*) : ;; + *) false ;; + esac +} + +# func_mode_link arg... +func_mode_link () +{ + $opt_debug + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) + # It is impossible to link a dll without this setting, and + # we shouldn't force the makefile maintainer to figure out + # which system we are compiling for in order to pass an extra + # flag for every libtool invocation. + # allow_undefined=no + + # FIXME: Unfortunately, there are problems with the above when trying + # to make a dll which has undefined symbols, in which case not + # even a static library is built. For now, we need to specify + # -no-undefined on the libtool link line when we can be certain + # that all symbols are satisfied, otherwise we get a static library. + allow_undefined=yes + ;; + *) + allow_undefined=yes + ;; + esac + libtool_args=$nonopt + base_compile="$nonopt $@" + compile_command=$nonopt + finalize_command=$nonopt + + compile_rpath= + finalize_rpath= + compile_shlibpath= + finalize_shlibpath= + convenience= + old_convenience= + deplibs= + old_deplibs= + compiler_flags= + linker_flags= + dllsearchpath= + lib_search_path=`pwd` + inst_prefix_dir= + new_inherited_linker_flags= + + avoid_version=no + bindir= + dlfiles= + dlprefiles= + dlself=no + export_dynamic=no + export_symbols= + export_symbols_regex= + generated= + libobjs= + ltlibs= + module=no + no_install=no + objs= + non_pic_objects= + precious_files_regex= + prefer_static_libs=no + preload=no + prev= + prevarg= + release= + rpath= + xrpath= + perm_rpath= + temp_rpath= + thread_safe=no + vinfo= + vinfo_number=no + weak_libs= + single_module="${wl}-single_module" + func_infer_tag $base_compile + + # We need to know -static, to get the right output filenames. + for arg + do + case $arg in + -shared) + test "$build_libtool_libs" != yes && \ + func_fatal_configuration "can not build a shared library" + build_old_libs=no + break + ;; + -all-static | -static | -static-libtool-libs) + case $arg in + -all-static) + if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then + func_warning "complete static linking is impossible in this configuration" + fi + if test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + prefer_static_libs=yes + ;; + -static) + if test -z "$pic_flag" && test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + prefer_static_libs=built + ;; + -static-libtool-libs) + if test -z "$pic_flag" && test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + prefer_static_libs=yes + ;; + esac + build_libtool_libs=no + build_old_libs=yes + break + ;; + esac + done + + # See if our shared archives depend on static archives. + test -n "$old_archive_from_new_cmds" && build_old_libs=yes + + # Go through the arguments, transforming them on the way. + while test "$#" -gt 0; do + arg="$1" + shift + func_quote_for_eval "$arg" + qarg=$func_quote_for_eval_unquoted_result + libtool_args+=" $func_quote_for_eval_result" + + # If the previous option needs an argument, assign it. + if test -n "$prev"; then + case $prev in + output) + compile_command+=" @OUTPUT@" + finalize_command+=" @OUTPUT@" + ;; + esac + + case $prev in + bindir) + bindir="$arg" + prev= + continue + ;; + dlfiles|dlprefiles) + if test "$preload" = no; then + # Add the symbol object into the linking commands. + compile_command+=" @SYMFILE@" + finalize_command+=" @SYMFILE@" + preload=yes + fi + case $arg in + *.la | *.lo) ;; # We handle these cases below. + force) + if test "$dlself" = no; then + dlself=needless + export_dynamic=yes + fi + prev= + continue + ;; + self) + if test "$prev" = dlprefiles; then + dlself=yes + elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then + dlself=yes + else + dlself=needless + export_dynamic=yes + fi + prev= + continue + ;; + *) + if test "$prev" = dlfiles; then + dlfiles+=" $arg" + else + dlprefiles+=" $arg" + fi + prev= + continue + ;; + esac + ;; + expsyms) + export_symbols="$arg" + test -f "$arg" \ + || func_fatal_error "symbol file \`$arg' does not exist" + prev= + continue + ;; + expsyms_regex) + export_symbols_regex="$arg" + prev= + continue + ;; + framework) + case $host in + *-*-darwin*) + case "$deplibs " in + *" $qarg.ltframework "*) ;; + *) deplibs+=" $qarg.ltframework" # this is fixed later + ;; + esac + ;; + esac + prev= + continue + ;; + inst_prefix) + inst_prefix_dir="$arg" + prev= + continue + ;; + objectlist) + if test -f "$arg"; then + save_arg=$arg + moreargs= + for fil in `cat "$save_arg"` + do +# moreargs+=" $fil" + arg=$fil + # A libtool-controlled object. + + # Check to see that this really is a libtool object. + if func_lalib_unsafe_p "$arg"; then + pic_object= + non_pic_object= + + # Read the .lo file + func_source "$arg" + + if test -z "$pic_object" || + test -z "$non_pic_object" || + test "$pic_object" = none && + test "$non_pic_object" = none; then + func_fatal_error "cannot find name of object for \`$arg'" + fi + + # Extract subdirectory from the argument. + func_dirname "$arg" "/" "" + xdir="$func_dirname_result" + + if test "$pic_object" != none; then + # Prepend the subdirectory the object is found in. + pic_object="$xdir$pic_object" + + if test "$prev" = dlfiles; then + if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then + dlfiles+=" $pic_object" + prev= + continue + else + # If libtool objects are unsupported, then we need to preload. + prev=dlprefiles + fi + fi + + # CHECK ME: I think I busted this. -Ossama + if test "$prev" = dlprefiles; then + # Preload the old-style object. + dlprefiles+=" $pic_object" + prev= + fi + + # A PIC object. + libobjs+=" $pic_object" + arg="$pic_object" + fi + + # Non-PIC object. + if test "$non_pic_object" != none; then + # Prepend the subdirectory the object is found in. + non_pic_object="$xdir$non_pic_object" + + # A standard non-PIC object + non_pic_objects+=" $non_pic_object" + if test -z "$pic_object" || test "$pic_object" = none ; then + arg="$non_pic_object" + fi + else + # If the PIC object exists, use it instead. + # $xdir was prepended to $pic_object above. + non_pic_object="$pic_object" + non_pic_objects+=" $non_pic_object" + fi + else + # Only an error if not doing a dry-run. + if $opt_dry_run; then + # Extract subdirectory from the argument. + func_dirname "$arg" "/" "" + xdir="$func_dirname_result" + + func_lo2o "$arg" + pic_object=$xdir$objdir/$func_lo2o_result + non_pic_object=$xdir$func_lo2o_result + libobjs+=" $pic_object" + non_pic_objects+=" $non_pic_object" + else + func_fatal_error "\`$arg' is not a valid libtool object" + fi + fi + done + else + func_fatal_error "link input file \`$arg' does not exist" + fi + arg=$save_arg + prev= + continue + ;; + precious_regex) + precious_files_regex="$arg" + prev= + continue + ;; + release) + release="-$arg" + prev= + continue + ;; + rpath | xrpath) + # We need an absolute path. + case $arg in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + func_fatal_error "only absolute run-paths are allowed" + ;; + esac + if test "$prev" = rpath; then + case "$rpath " in + *" $arg "*) ;; + *) rpath+=" $arg" ;; + esac + else + case "$xrpath " in + *" $arg "*) ;; + *) xrpath+=" $arg" ;; + esac + fi + prev= + continue + ;; + shrext) + shrext_cmds="$arg" + prev= + continue + ;; + weak) + weak_libs+=" $arg" + prev= + continue + ;; + xcclinker) + linker_flags+=" $qarg" + compiler_flags+=" $qarg" + prev= + compile_command+=" $qarg" + finalize_command+=" $qarg" + continue + ;; + xcompiler) + compiler_flags+=" $qarg" + prev= + compile_command+=" $qarg" + finalize_command+=" $qarg" + continue + ;; + xlinker) + linker_flags+=" $qarg" + compiler_flags+=" $wl$qarg" + prev= + compile_command+=" $wl$qarg" + finalize_command+=" $wl$qarg" + continue + ;; + *) + eval "$prev=\"\$arg\"" + prev= + continue + ;; + esac + fi # test -n "$prev" + + prevarg="$arg" + + case $arg in + -all-static) + if test -n "$link_static_flag"; then + # See comment for -static flag below, for more details. + compile_command+=" $link_static_flag" + finalize_command+=" $link_static_flag" + fi + continue + ;; + + -allow-undefined) + # FIXME: remove this flag sometime in the future. + func_fatal_error "\`-allow-undefined' must not be used because it is the default" + ;; + + -avoid-version) + avoid_version=yes + continue + ;; + + -bindir) + prev=bindir + continue + ;; + + -dlopen) + prev=dlfiles + continue + ;; + + -dlpreopen) + prev=dlprefiles + continue + ;; + + -export-dynamic) + export_dynamic=yes + continue + ;; + + -export-symbols | -export-symbols-regex) + if test -n "$export_symbols" || test -n "$export_symbols_regex"; then + func_fatal_error "more than one -exported-symbols argument is not allowed" + fi + if test "X$arg" = "X-export-symbols"; then + prev=expsyms + else + prev=expsyms_regex + fi + continue + ;; + + -framework) + prev=framework + continue + ;; + + -inst-prefix-dir) + prev=inst_prefix + continue + ;; + + # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* + # so, if we see these flags be careful not to treat them like -L + -L[A-Z][A-Z]*:*) + case $with_gcc/$host in + no/*-*-irix* | /*-*-irix*) + compile_command+=" $arg" + finalize_command+=" $arg" + ;; + esac + continue + ;; + + -L*) + func_stripname "-L" '' "$arg" + if test -z "$func_stripname_result"; then + if test "$#" -gt 0; then + func_fatal_error "require no space between \`-L' and \`$1'" + else + func_fatal_error "need path for \`-L' option" + fi + fi + func_resolve_sysroot "$func_stripname_result" + dir=$func_resolve_sysroot_result + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + absdir=`cd "$dir" && pwd` + test -z "$absdir" && \ + func_fatal_error "cannot determine absolute directory name of \`$dir'" + dir="$absdir" + ;; + esac + case "$deplibs " in + *" -L$dir "* | *" $arg "*) + # Will only happen for absolute or sysroot arguments + ;; + *) + # Preserve sysroot, but never include relative directories + case $dir in + [\\/]* | [A-Za-z]:[\\/]* | =*) deplibs+=" $arg" ;; + *) deplibs+=" -L$dir" ;; + esac + lib_search_path+=" $dir" + ;; + esac + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) + testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'` + case :$dllsearchpath: in + *":$dir:"*) ;; + ::) dllsearchpath=$dir;; + *) dllsearchpath+=":$dir";; + esac + case :$dllsearchpath: in + *":$testbindir:"*) ;; + ::) dllsearchpath=$testbindir;; + *) dllsearchpath+=":$testbindir";; + esac + ;; + esac + continue + ;; + + -l*) + if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*) + # These systems don't actually have a C or math library (as such) + continue + ;; + *-*-os2*) + # These systems don't actually have a C library (as such) + test "X$arg" = "X-lc" && continue + ;; + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) + # Do not include libc due to us having libc/libc_r. + test "X$arg" = "X-lc" && continue + ;; + *-*-rhapsody* | *-*-darwin1.[012]) + # Rhapsody C and math libraries are in the System framework + deplibs+=" System.ltframework" + continue + ;; + *-*-sco3.2v5* | *-*-sco5v6*) + # Causes problems with __ctype + test "X$arg" = "X-lc" && continue + ;; + *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) + # Compiler inserts libc in the correct place for threads to work + test "X$arg" = "X-lc" && continue + ;; + esac + elif test "X$arg" = "X-lc_r"; then + case $host in + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) + # Do not include libc_r directly, use -pthread flag. + continue + ;; + esac + fi + deplibs+=" $arg" + continue + ;; + + -module) + module=yes + continue + ;; + + # Tru64 UNIX uses -model [arg] to determine the layout of C++ + # classes, name mangling, and exception handling. + # Darwin uses the -arch flag to determine output architecture. + -model|-arch|-isysroot|--sysroot) + compiler_flags+=" $arg" + compile_command+=" $arg" + finalize_command+=" $arg" + prev=xcompiler + continue + ;; + + -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ + |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) + compiler_flags+=" $arg" + compile_command+=" $arg" + finalize_command+=" $arg" + case "$new_inherited_linker_flags " in + *" $arg "*) ;; + * ) new_inherited_linker_flags+=" $arg" ;; + esac + continue + ;; + + -multi_module) + single_module="${wl}-multi_module" + continue + ;; + + -no-fast-install) + fast_install=no + continue + ;; + + -no-install) + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*) + # The PATH hackery in wrapper scripts is required on Windows + # and Darwin in order for the loader to find any dlls it needs. + func_warning "\`-no-install' is ignored for $host" + func_warning "assuming \`-no-fast-install' instead" + fast_install=no + ;; + *) no_install=yes ;; + esac + continue + ;; + + -no-undefined) + allow_undefined=no + continue + ;; + + -objectlist) + prev=objectlist + continue + ;; + + -o) prev=output ;; + + -precious-files-regex) + prev=precious_regex + continue + ;; + + -release) + prev=release + continue + ;; + + -rpath) + prev=rpath + continue + ;; + + -R) + prev=xrpath + continue + ;; + + -R*) + func_stripname '-R' '' "$arg" + dir=$func_stripname_result + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + =*) + func_stripname '=' '' "$dir" + dir=$lt_sysroot$func_stripname_result + ;; + *) + func_fatal_error "only absolute run-paths are allowed" + ;; + esac + case "$xrpath " in + *" $dir "*) ;; + *) xrpath+=" $dir" ;; + esac + continue + ;; + + -shared) + # The effects of -shared are defined in a previous loop. + continue + ;; + + -shrext) + prev=shrext + continue + ;; + + -static | -static-libtool-libs) + # The effects of -static are defined in a previous loop. + # We used to do the same as -all-static on platforms that + # didn't have a PIC flag, but the assumption that the effects + # would be equivalent was wrong. It would break on at least + # Digital Unix and AIX. + continue + ;; + + -thread-safe) + thread_safe=yes + continue + ;; + + -version-info) + prev=vinfo + continue + ;; + + -version-number) + prev=vinfo + vinfo_number=yes + continue + ;; + + -weak) + prev=weak + continue + ;; + + -Wc,*) + func_stripname '-Wc,' '' "$arg" + args=$func_stripname_result + arg= + save_ifs="$IFS"; IFS=',' + for flag in $args; do + IFS="$save_ifs" + func_quote_for_eval "$flag" + arg+=" $func_quote_for_eval_result" + compiler_flags+=" $func_quote_for_eval_result" + done + IFS="$save_ifs" + func_stripname ' ' '' "$arg" + arg=$func_stripname_result + ;; + + -Wl,*) + func_stripname '-Wl,' '' "$arg" + args=$func_stripname_result + arg= + save_ifs="$IFS"; IFS=',' + for flag in $args; do + IFS="$save_ifs" + func_quote_for_eval "$flag" + arg+=" $wl$func_quote_for_eval_result" + compiler_flags+=" $wl$func_quote_for_eval_result" + linker_flags+=" $func_quote_for_eval_result" + done + IFS="$save_ifs" + func_stripname ' ' '' "$arg" + arg=$func_stripname_result + ;; + + -Xcompiler) + prev=xcompiler + continue + ;; + + -Xlinker) + prev=xlinker + continue + ;; + + -XCClinker) + prev=xcclinker + continue + ;; + + # -msg_* for osf cc + -msg_*) + func_quote_for_eval "$arg" + arg="$func_quote_for_eval_result" + ;; + + # Flags to be passed through unchanged, with rationale: + # -64, -mips[0-9] enable 64-bit mode for the SGI compiler + # -r[0-9][0-9]* specify processor for the SGI compiler + # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler + # +DA*, +DD* enable 64-bit mode for the HP compiler + # -q* compiler args for the IBM compiler + # -m*, -t[45]*, -txscale* architecture-specific flags for GCC + # -F/path path to uninstalled frameworks, gcc on darwin + # -p, -pg, --coverage, -fprofile-* profiling flags for GCC + # @file GCC response files + # -tp=* Portland pgcc target processor selection + # --sysroot=* for sysroot support + # -O*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization + -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ + -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \ + -O*|-flto*|-fwhopr*|-fuse-linker-plugin) + func_quote_for_eval "$arg" + arg="$func_quote_for_eval_result" + compile_command+=" $arg" + finalize_command+=" $arg" + compiler_flags+=" $arg" + continue + ;; + + # Some other compiler flag. + -* | +*) + func_quote_for_eval "$arg" + arg="$func_quote_for_eval_result" + ;; + + *.$objext) + # A standard object. + objs+=" $arg" + ;; + + *.lo) + # A libtool-controlled object. + + # Check to see that this really is a libtool object. + if func_lalib_unsafe_p "$arg"; then + pic_object= + non_pic_object= + + # Read the .lo file + func_source "$arg" + + if test -z "$pic_object" || + test -z "$non_pic_object" || + test "$pic_object" = none && + test "$non_pic_object" = none; then + func_fatal_error "cannot find name of object for \`$arg'" + fi + + # Extract subdirectory from the argument. + func_dirname "$arg" "/" "" + xdir="$func_dirname_result" + + if test "$pic_object" != none; then + # Prepend the subdirectory the object is found in. + pic_object="$xdir$pic_object" + + if test "$prev" = dlfiles; then + if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then + dlfiles+=" $pic_object" + prev= + continue + else + # If libtool objects are unsupported, then we need to preload. + prev=dlprefiles + fi + fi + + # CHECK ME: I think I busted this. -Ossama + if test "$prev" = dlprefiles; then + # Preload the old-style object. + dlprefiles+=" $pic_object" + prev= + fi + + # A PIC object. + libobjs+=" $pic_object" + arg="$pic_object" + fi + + # Non-PIC object. + if test "$non_pic_object" != none; then + # Prepend the subdirectory the object is found in. + non_pic_object="$xdir$non_pic_object" + + # A standard non-PIC object + non_pic_objects+=" $non_pic_object" + if test -z "$pic_object" || test "$pic_object" = none ; then + arg="$non_pic_object" + fi + else + # If the PIC object exists, use it instead. + # $xdir was prepended to $pic_object above. + non_pic_object="$pic_object" + non_pic_objects+=" $non_pic_object" + fi + else + # Only an error if not doing a dry-run. + if $opt_dry_run; then + # Extract subdirectory from the argument. + func_dirname "$arg" "/" "" + xdir="$func_dirname_result" + + func_lo2o "$arg" + pic_object=$xdir$objdir/$func_lo2o_result + non_pic_object=$xdir$func_lo2o_result + libobjs+=" $pic_object" + non_pic_objects+=" $non_pic_object" + else + func_fatal_error "\`$arg' is not a valid libtool object" + fi + fi + ;; + + *.$libext) + # An archive. + deplibs+=" $arg" + old_deplibs+=" $arg" + continue + ;; + + *.la) + # A libtool-controlled library. + + func_resolve_sysroot "$arg" + if test "$prev" = dlfiles; then + # This library was specified with -dlopen. + dlfiles+=" $func_resolve_sysroot_result" + prev= + elif test "$prev" = dlprefiles; then + # The library was specified with -dlpreopen. + dlprefiles+=" $func_resolve_sysroot_result" + prev= + else + deplibs+=" $func_resolve_sysroot_result" + fi + continue + ;; + + # Some other compiler argument. + *) + # Unknown arguments in both finalize_command and compile_command need + # to be aesthetically quoted because they are evaled later. + func_quote_for_eval "$arg" + arg="$func_quote_for_eval_result" + ;; + esac # arg + + # Now actually substitute the argument into the commands. + if test -n "$arg"; then + compile_command+=" $arg" + finalize_command+=" $arg" + fi + done # argument parsing loop + + test -n "$prev" && \ + func_fatal_help "the \`$prevarg' option requires an argument" + + if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then + eval arg=\"$export_dynamic_flag_spec\" + compile_command+=" $arg" + finalize_command+=" $arg" + fi + + oldlibs= + # calculate the name of the file, without its directory + func_basename "$output" + outputname="$func_basename_result" + libobjs_save="$libobjs" + + if test -n "$shlibpath_var"; then + # get the directories listed in $shlibpath_var + eval shlib_search_path=\`\$ECHO \"\${$shlibpath_var}\" \| \$SED \'s/:/ /g\'\` + else + shlib_search_path= + fi + eval sys_lib_search_path=\"$sys_lib_search_path_spec\" + eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" + + func_dirname "$output" "/" "" + output_objdir="$func_dirname_result$objdir" + func_to_tool_file "$output_objdir/" + tool_output_objdir=$func_to_tool_file_result + # Create the object directory. + func_mkdir_p "$output_objdir" + + # Determine the type of output + case $output in + "") + func_fatal_help "you must specify an output file" + ;; + *.$libext) linkmode=oldlib ;; + *.lo | *.$objext) linkmode=obj ;; + *.la) linkmode=lib ;; + *) linkmode=prog ;; # Anything else should be a program. + esac + + specialdeplibs= + + libs= + # Find all interdependent deplibs by searching for libraries + # that are linked more than once (e.g. -la -lb -la) + for deplib in $deplibs; do + if $opt_preserve_dup_deps ; then + case "$libs " in + *" $deplib "*) specialdeplibs+=" $deplib" ;; + esac + fi + libs+=" $deplib" + done + + if test "$linkmode" = lib; then + libs="$predeps $libs $compiler_lib_search_path $postdeps" + + # Compute libraries that are listed more than once in $predeps + # $postdeps and mark them as special (i.e., whose duplicates are + # not to be eliminated). + pre_post_deps= + if $opt_duplicate_compiler_generated_deps; then + for pre_post_dep in $predeps $postdeps; do + case "$pre_post_deps " in + *" $pre_post_dep "*) specialdeplibs+=" $pre_post_deps" ;; + esac + pre_post_deps+=" $pre_post_dep" + done + fi + pre_post_deps= + fi + + deplibs= + newdependency_libs= + newlib_search_path= + need_relink=no # whether we're linking any uninstalled libtool libraries + notinst_deplibs= # not-installed libtool libraries + notinst_path= # paths that contain not-installed libtool libraries + + case $linkmode in + lib) + passes="conv dlpreopen link" + for file in $dlfiles $dlprefiles; do + case $file in + *.la) ;; + *) + func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file" + ;; + esac + done + ;; + prog) + compile_deplibs= + finalize_deplibs= + alldeplibs=no + newdlfiles= + newdlprefiles= + passes="conv scan dlopen dlpreopen link" + ;; + *) passes="conv" + ;; + esac + + for pass in $passes; do + # The preopen pass in lib mode reverses $deplibs; put it back here + # so that -L comes before libs that need it for instance... + if test "$linkmode,$pass" = "lib,link"; then + ## FIXME: Find the place where the list is rebuilt in the wrong + ## order, and fix it there properly + tmp_deplibs= + for deplib in $deplibs; do + tmp_deplibs="$deplib $tmp_deplibs" + done + deplibs="$tmp_deplibs" + fi + + if test "$linkmode,$pass" = "lib,link" || + test "$linkmode,$pass" = "prog,scan"; then + libs="$deplibs" + deplibs= + fi + if test "$linkmode" = prog; then + case $pass in + dlopen) libs="$dlfiles" ;; + dlpreopen) libs="$dlprefiles" ;; + link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; + esac + fi + if test "$linkmode,$pass" = "lib,dlpreopen"; then + # Collect and forward deplibs of preopened libtool libs + for lib in $dlprefiles; do + # Ignore non-libtool-libs + dependency_libs= + func_resolve_sysroot "$lib" + case $lib in + *.la) func_source "$func_resolve_sysroot_result" ;; + esac + + # Collect preopened libtool deplibs, except any this library + # has declared as weak libs + for deplib in $dependency_libs; do + func_basename "$deplib" + deplib_base=$func_basename_result + case " $weak_libs " in + *" $deplib_base "*) ;; + *) deplibs+=" $deplib" ;; + esac + done + done + libs="$dlprefiles" + fi + if test "$pass" = dlopen; then + # Collect dlpreopened libraries + save_deplibs="$deplibs" + deplibs= + fi + + for deplib in $libs; do + lib= + found=no + case $deplib in + -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ + |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) + if test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + compiler_flags+=" $deplib" + if test "$linkmode" = lib ; then + case "$new_inherited_linker_flags " in + *" $deplib "*) ;; + * ) new_inherited_linker_flags+=" $deplib" ;; + esac + fi + fi + continue + ;; + -l*) + if test "$linkmode" != lib && test "$linkmode" != prog; then + func_warning "\`-l' is ignored for archives/objects" + continue + fi + func_stripname '-l' '' "$deplib" + name=$func_stripname_result + if test "$linkmode" = lib; then + searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" + else + searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" + fi + for searchdir in $searchdirs; do + for search_ext in .la $std_shrext .so .a; do + # Search the libtool library + lib="$searchdir/lib${name}${search_ext}" + if test -f "$lib"; then + if test "$search_ext" = ".la"; then + found=yes + else + found=no + fi + break 2 + fi + done + done + if test "$found" != yes; then + # deplib doesn't seem to be a libtool library + if test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" + test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" + fi + continue + else # deplib is a libtool library + # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, + # We need to do some special things here, and not later. + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + case " $predeps $postdeps " in + *" $deplib "*) + if func_lalib_p "$lib"; then + library_names= + old_library= + func_source "$lib" + for l in $old_library $library_names; do + ll="$l" + done + if test "X$ll" = "X$old_library" ; then # only static version available + found=no + func_dirname "$lib" "" "." + ladir="$func_dirname_result" + lib=$ladir/$old_library + if test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" + test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" + fi + continue + fi + fi + ;; + *) ;; + esac + fi + fi + ;; # -l + *.ltframework) + if test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" + if test "$linkmode" = lib ; then + case "$new_inherited_linker_flags " in + *" $deplib "*) ;; + * ) new_inherited_linker_flags+=" $deplib" ;; + esac + fi + fi + continue + ;; + -L*) + case $linkmode in + lib) + deplibs="$deplib $deplibs" + test "$pass" = conv && continue + newdependency_libs="$deplib $newdependency_libs" + func_stripname '-L' '' "$deplib" + func_resolve_sysroot "$func_stripname_result" + newlib_search_path+=" $func_resolve_sysroot_result" + ;; + prog) + if test "$pass" = conv; then + deplibs="$deplib $deplibs" + continue + fi + if test "$pass" = scan; then + deplibs="$deplib $deplibs" + else + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + fi + func_stripname '-L' '' "$deplib" + func_resolve_sysroot "$func_stripname_result" + newlib_search_path+=" $func_resolve_sysroot_result" + ;; + *) + func_warning "\`-L' is ignored for archives/objects" + ;; + esac # linkmode + continue + ;; # -L + -R*) + if test "$pass" = link; then + func_stripname '-R' '' "$deplib" + func_resolve_sysroot "$func_stripname_result" + dir=$func_resolve_sysroot_result + # Make sure the xrpath contains only unique directories. + case "$xrpath " in + *" $dir "*) ;; + *) xrpath+=" $dir" ;; + esac + fi + deplibs="$deplib $deplibs" + continue + ;; + *.la) + func_resolve_sysroot "$deplib" + lib=$func_resolve_sysroot_result + ;; + *.$libext) + if test "$pass" = conv; then + deplibs="$deplib $deplibs" + continue + fi + case $linkmode in + lib) + # Linking convenience modules into shared libraries is allowed, + # but linking other static libraries is non-portable. + case " $dlpreconveniencelibs " in + *" $deplib "*) ;; + *) + valid_a_lib=no + case $deplibs_check_method in + match_pattern*) + set dummy $deplibs_check_method; shift + match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` + if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \ + | $EGREP "$match_pattern_regex" > /dev/null; then + valid_a_lib=yes + fi + ;; + pass_all) + valid_a_lib=yes + ;; + esac + if test "$valid_a_lib" != yes; then + echo + $ECHO "*** Warning: Trying to link with static lib archive $deplib." + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which you do not appear to have" + echo "*** because the file extensions .$libext of this argument makes me believe" + echo "*** that it is just a static archive that I should not use here." + else + echo + $ECHO "*** Warning: Linking the shared library $output against the" + $ECHO "*** static library $deplib is not portable!" + deplibs="$deplib $deplibs" + fi + ;; + esac + continue + ;; + prog) + if test "$pass" != link; then + deplibs="$deplib $deplibs" + else + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + fi + continue + ;; + esac # linkmode + ;; # *.$libext + *.lo | *.$objext) + if test "$pass" = conv; then + deplibs="$deplib $deplibs" + elif test "$linkmode" = prog; then + if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then + # If there is no dlopen support or we're linking statically, + # we need to preload. + newdlprefiles+=" $deplib" + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + newdlfiles+=" $deplib" + fi + fi + continue + ;; + %DEPLIBS%) + alldeplibs=yes + continue + ;; + esac # case $deplib + + if test "$found" = yes || test -f "$lib"; then : + else + func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'" + fi + + # Check to see that this really is a libtool archive. + func_lalib_unsafe_p "$lib" \ + || func_fatal_error "\`$lib' is not a valid libtool archive" + + func_dirname "$lib" "" "." + ladir="$func_dirname_result" + + dlname= + dlopen= + dlpreopen= + libdir= + library_names= + old_library= + inherited_linker_flags= + # If the library was installed with an old release of libtool, + # it will not redefine variables installed, or shouldnotlink + installed=yes + shouldnotlink=no + avoidtemprpath= + + + # Read the .la file + func_source "$lib" + + # Convert "-framework foo" to "foo.ltframework" + if test -n "$inherited_linker_flags"; then + tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'` + for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do + case " $new_inherited_linker_flags " in + *" $tmp_inherited_linker_flag "*) ;; + *) new_inherited_linker_flags+=" $tmp_inherited_linker_flag";; + esac + done + fi + dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + if test "$linkmode,$pass" = "lib,link" || + test "$linkmode,$pass" = "prog,scan" || + { test "$linkmode" != prog && test "$linkmode" != lib; }; then + test -n "$dlopen" && dlfiles+=" $dlopen" + test -n "$dlpreopen" && dlprefiles+=" $dlpreopen" + fi + + if test "$pass" = conv; then + # Only check for convenience libraries + deplibs="$lib $deplibs" + if test -z "$libdir"; then + if test -z "$old_library"; then + func_fatal_error "cannot find name of link library for \`$lib'" + fi + # It is a libtool convenience library, so add in its objects. + convenience+=" $ladir/$objdir/$old_library" + old_convenience+=" $ladir/$objdir/$old_library" + elif test "$linkmode" != prog && test "$linkmode" != lib; then + func_fatal_error "\`$lib' is not a convenience library" + fi + tmp_libs= + for deplib in $dependency_libs; do + deplibs="$deplib $deplibs" + if $opt_preserve_dup_deps ; then + case "$tmp_libs " in + *" $deplib "*) specialdeplibs+=" $deplib" ;; + esac + fi + tmp_libs+=" $deplib" + done + continue + fi # $pass = conv + + + # Get the name of the library we link against. + linklib= + if test -n "$old_library" && + { test "$prefer_static_libs" = yes || + test "$prefer_static_libs,$installed" = "built,no"; }; then + linklib=$old_library + else + for l in $old_library $library_names; do + linklib="$l" + done + fi + if test -z "$linklib"; then + func_fatal_error "cannot find name of link library for \`$lib'" + fi + + # This library was specified with -dlopen. + if test "$pass" = dlopen; then + if test -z "$libdir"; then + func_fatal_error "cannot -dlopen a convenience library: \`$lib'" + fi + if test -z "$dlname" || + test "$dlopen_support" != yes || + test "$build_libtool_libs" = no; then + # If there is no dlname, no dlopen support or we're linking + # statically, we need to preload. We also need to preload any + # dependent libraries so libltdl's deplib preloader doesn't + # bomb out in the load deplibs phase. + dlprefiles+=" $lib $dependency_libs" + else + newdlfiles+=" $lib" + fi + continue + fi # $pass = dlopen + + # We need an absolute path. + case $ladir in + [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; + *) + abs_ladir=`cd "$ladir" && pwd` + if test -z "$abs_ladir"; then + func_warning "cannot determine absolute directory name of \`$ladir'" + func_warning "passing it literally to the linker, although it might fail" + abs_ladir="$ladir" + fi + ;; + esac + func_basename "$lib" + laname="$func_basename_result" + + # Find the relevant object directory and library name. + if test "X$installed" = Xyes; then + if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then + func_warning "library \`$lib' was moved." + dir="$ladir" + absdir="$abs_ladir" + libdir="$abs_ladir" + else + dir="$lt_sysroot$libdir" + absdir="$lt_sysroot$libdir" + fi + test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes + else + if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then + dir="$ladir" + absdir="$abs_ladir" + # Remove this search path later + notinst_path+=" $abs_ladir" + else + dir="$ladir/$objdir" + absdir="$abs_ladir/$objdir" + # Remove this search path later + notinst_path+=" $abs_ladir" + fi + fi # $installed = yes + func_stripname 'lib' '.la' "$laname" + name=$func_stripname_result + + # This library was specified with -dlpreopen. + if test "$pass" = dlpreopen; then + if test -z "$libdir" && test "$linkmode" = prog; then + func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'" + fi + case "$host" in + # special handling for platforms with PE-DLLs. + *cygwin* | *mingw* | *cegcc* ) + # Linker will automatically link against shared library if both + # static and shared are present. Therefore, ensure we extract + # symbols from the import library if a shared library is present + # (otherwise, the dlopen module name will be incorrect). We do + # this by putting the import library name into $newdlprefiles. + # We recover the dlopen module name by 'saving' the la file + # name in a special purpose variable, and (later) extracting the + # dlname from the la file. + if test -n "$dlname"; then + func_tr_sh "$dir/$linklib" + eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname" + newdlprefiles+=" $dir/$linklib" + else + newdlprefiles+=" $dir/$old_library" + # Keep a list of preopened convenience libraries to check + # that they are being used correctly in the link pass. + test -z "$libdir" && \ + dlpreconveniencelibs+=" $dir/$old_library" + fi + ;; + * ) + # Prefer using a static library (so that no silly _DYNAMIC symbols + # are required to link). + if test -n "$old_library"; then + newdlprefiles+=" $dir/$old_library" + # Keep a list of preopened convenience libraries to check + # that they are being used correctly in the link pass. + test -z "$libdir" && \ + dlpreconveniencelibs+=" $dir/$old_library" + # Otherwise, use the dlname, so that lt_dlopen finds it. + elif test -n "$dlname"; then + newdlprefiles+=" $dir/$dlname" + else + newdlprefiles+=" $dir/$linklib" + fi + ;; + esac + fi # $pass = dlpreopen + + if test -z "$libdir"; then + # Link the convenience library + if test "$linkmode" = lib; then + deplibs="$dir/$old_library $deplibs" + elif test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$dir/$old_library $compile_deplibs" + finalize_deplibs="$dir/$old_library $finalize_deplibs" + else + deplibs="$lib $deplibs" # used for prog,scan pass + fi + continue + fi + + + if test "$linkmode" = prog && test "$pass" != link; then + newlib_search_path+=" $ladir" + deplibs="$lib $deplibs" + + linkalldeplibs=no + if test "$link_all_deplibs" != no || test -z "$library_names" || + test "$build_libtool_libs" = no; then + linkalldeplibs=yes + fi + + tmp_libs= + for deplib in $dependency_libs; do + case $deplib in + -L*) func_stripname '-L' '' "$deplib" + func_resolve_sysroot "$func_stripname_result" + newlib_search_path+=" $func_resolve_sysroot_result" + ;; + esac + # Need to link against all dependency_libs? + if test "$linkalldeplibs" = yes; then + deplibs="$deplib $deplibs" + else + # Need to hardcode shared library paths + # or/and link against static libraries + newdependency_libs="$deplib $newdependency_libs" + fi + if $opt_preserve_dup_deps ; then + case "$tmp_libs " in + *" $deplib "*) specialdeplibs+=" $deplib" ;; + esac + fi + tmp_libs+=" $deplib" + done # for deplib + continue + fi # $linkmode = prog... + + if test "$linkmode,$pass" = "prog,link"; then + if test -n "$library_names" && + { { test "$prefer_static_libs" = no || + test "$prefer_static_libs,$installed" = "built,yes"; } || + test -z "$old_library"; }; then + # We need to hardcode the library path + if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then + # Make sure the rpath contains only unique directories. + case "$temp_rpath:" in + *"$absdir:"*) ;; + *) temp_rpath+="$absdir:" ;; + esac + fi + + # Hardcode the library path. + # Skip directories that are in the system default run-time + # search path. + case " $sys_lib_dlsearch_path " in + *" $absdir "*) ;; + *) + case "$compile_rpath " in + *" $absdir "*) ;; + *) compile_rpath+=" $absdir" ;; + esac + ;; + esac + case " $sys_lib_dlsearch_path " in + *" $libdir "*) ;; + *) + case "$finalize_rpath " in + *" $libdir "*) ;; + *) finalize_rpath+=" $libdir" ;; + esac + ;; + esac + fi # $linkmode,$pass = prog,link... + + if test "$alldeplibs" = yes && + { test "$deplibs_check_method" = pass_all || + { test "$build_libtool_libs" = yes && + test -n "$library_names"; }; }; then + # We only need to search for static libraries + continue + fi + fi + + link_static=no # Whether the deplib will be linked statically + use_static_libs=$prefer_static_libs + if test "$use_static_libs" = built && test "$installed" = yes; then + use_static_libs=no + fi + if test -n "$library_names" && + { test "$use_static_libs" = no || test -z "$old_library"; }; then + case $host in + *cygwin* | *mingw* | *cegcc*) + # No point in relinking DLLs because paths are not encoded + notinst_deplibs+=" $lib" + need_relink=no + ;; + *) + if test "$installed" = no; then + notinst_deplibs+=" $lib" + need_relink=yes + fi + ;; + esac + # This is a shared library + + # Warn about portability, can't link against -module's on some + # systems (darwin). Don't bleat about dlopened modules though! + dlopenmodule="" + for dlpremoduletest in $dlprefiles; do + if test "X$dlpremoduletest" = "X$lib"; then + dlopenmodule="$dlpremoduletest" + break + fi + done + if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then + echo + if test "$linkmode" = prog; then + $ECHO "*** Warning: Linking the executable $output against the loadable module" + else + $ECHO "*** Warning: Linking the shared library $output against the loadable module" + fi + $ECHO "*** $linklib is not portable!" + fi + if test "$linkmode" = lib && + test "$hardcode_into_libs" = yes; then + # Hardcode the library path. + # Skip directories that are in the system default run-time + # search path. + case " $sys_lib_dlsearch_path " in + *" $absdir "*) ;; + *) + case "$compile_rpath " in + *" $absdir "*) ;; + *) compile_rpath+=" $absdir" ;; + esac + ;; + esac + case " $sys_lib_dlsearch_path " in + *" $libdir "*) ;; + *) + case "$finalize_rpath " in + *" $libdir "*) ;; + *) finalize_rpath+=" $libdir" ;; + esac + ;; + esac + fi + + if test -n "$old_archive_from_expsyms_cmds"; then + # figure out the soname + set dummy $library_names + shift + realname="$1" + shift + libname=`eval "\\$ECHO \"$libname_spec\""` + # use dlname if we got it. it's perfectly good, no? + if test -n "$dlname"; then + soname="$dlname" + elif test -n "$soname_spec"; then + # bleh windows + case $host in + *cygwin* | mingw* | *cegcc*) + func_arith $current - $age + major=$func_arith_result + versuffix="-$major" + ;; + esac + eval soname=\"$soname_spec\" + else + soname="$realname" + fi + + # Make a new name for the extract_expsyms_cmds to use + soroot="$soname" + func_basename "$soroot" + soname="$func_basename_result" + func_stripname 'lib' '.dll' "$soname" + newlib=libimp-$func_stripname_result.a + + # If the library has no export list, then create one now + if test -f "$output_objdir/$soname-def"; then : + else + func_verbose "extracting exported symbol list from \`$soname'" + func_execute_cmds "$extract_expsyms_cmds" 'exit $?' + fi + + # Create $newlib + if test -f "$output_objdir/$newlib"; then :; else + func_verbose "generating import library for \`$soname'" + func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?' + fi + # make sure the library variables are pointing to the new library + dir=$output_objdir + linklib=$newlib + fi # test -n "$old_archive_from_expsyms_cmds" + + if test "$linkmode" = prog || test "$opt_mode" != relink; then + add_shlibpath= + add_dir= + add= + lib_linked=yes + case $hardcode_action in + immediate | unsupported) + if test "$hardcode_direct" = no; then + add="$dir/$linklib" + case $host in + *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;; + *-*-sysv4*uw2*) add_dir="-L$dir" ;; + *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ + *-*-unixware7*) add_dir="-L$dir" ;; + *-*-darwin* ) + # if the lib is a (non-dlopened) module then we can not + # link against it, someone is ignoring the earlier warnings + if /usr/bin/file -L $add 2> /dev/null | + $GREP ": [^:]* bundle" >/dev/null ; then + if test "X$dlopenmodule" != "X$lib"; then + $ECHO "*** Warning: lib $linklib is a module, not a shared library" + if test -z "$old_library" ; then + echo + echo "*** And there doesn't seem to be a static archive available" + echo "*** The link will probably fail, sorry" + else + add="$dir/$old_library" + fi + elif test -n "$old_library"; then + add="$dir/$old_library" + fi + fi + esac + elif test "$hardcode_minus_L" = no; then + case $host in + *-*-sunos*) add_shlibpath="$dir" ;; + esac + add_dir="-L$dir" + add="-l$name" + elif test "$hardcode_shlibpath_var" = no; then + add_shlibpath="$dir" + add="-l$name" + else + lib_linked=no + fi + ;; + relink) + if test "$hardcode_direct" = yes && + test "$hardcode_direct_absolute" = no; then + add="$dir/$linklib" + elif test "$hardcode_minus_L" = yes; then + add_dir="-L$absdir" + # Try looking first in the location we're being installed to. + if test -n "$inst_prefix_dir"; then + case $libdir in + [\\/]*) + add_dir+=" -L$inst_prefix_dir$libdir" + ;; + esac + fi + add="-l$name" + elif test "$hardcode_shlibpath_var" = yes; then + add_shlibpath="$dir" + add="-l$name" + else + lib_linked=no + fi + ;; + *) lib_linked=no ;; + esac + + if test "$lib_linked" != yes; then + func_fatal_configuration "unsupported hardcode properties" + fi + + if test -n "$add_shlibpath"; then + case :$compile_shlibpath: in + *":$add_shlibpath:"*) ;; + *) compile_shlibpath+="$add_shlibpath:" ;; + esac + fi + if test "$linkmode" = prog; then + test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" + test -n "$add" && compile_deplibs="$add $compile_deplibs" + else + test -n "$add_dir" && deplibs="$add_dir $deplibs" + test -n "$add" && deplibs="$add $deplibs" + if test "$hardcode_direct" != yes && + test "$hardcode_minus_L" != yes && + test "$hardcode_shlibpath_var" = yes; then + case :$finalize_shlibpath: in + *":$libdir:"*) ;; + *) finalize_shlibpath+="$libdir:" ;; + esac + fi + fi + fi + + if test "$linkmode" = prog || test "$opt_mode" = relink; then + add_shlibpath= + add_dir= + add= + # Finalize command for both is simple: just hardcode it. + if test "$hardcode_direct" = yes && + test "$hardcode_direct_absolute" = no; then + add="$libdir/$linklib" + elif test "$hardcode_minus_L" = yes; then + add_dir="-L$libdir" + add="-l$name" + elif test "$hardcode_shlibpath_var" = yes; then + case :$finalize_shlibpath: in + *":$libdir:"*) ;; + *) finalize_shlibpath+="$libdir:" ;; + esac + add="-l$name" + elif test "$hardcode_automatic" = yes; then + if test -n "$inst_prefix_dir" && + test -f "$inst_prefix_dir$libdir/$linklib" ; then + add="$inst_prefix_dir$libdir/$linklib" + else + add="$libdir/$linklib" + fi + else + # We cannot seem to hardcode it, guess we'll fake it. + add_dir="-L$libdir" + # Try looking first in the location we're being installed to. + if test -n "$inst_prefix_dir"; then + case $libdir in + [\\/]*) + add_dir+=" -L$inst_prefix_dir$libdir" + ;; + esac + fi + add="-l$name" + fi + + if test "$linkmode" = prog; then + test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" + test -n "$add" && finalize_deplibs="$add $finalize_deplibs" + else + test -n "$add_dir" && deplibs="$add_dir $deplibs" + test -n "$add" && deplibs="$add $deplibs" + fi + fi + elif test "$linkmode" = prog; then + # Here we assume that one of hardcode_direct or hardcode_minus_L + # is not unsupported. This is valid on all known static and + # shared platforms. + if test "$hardcode_direct" != unsupported; then + test -n "$old_library" && linklib="$old_library" + compile_deplibs="$dir/$linklib $compile_deplibs" + finalize_deplibs="$dir/$linklib $finalize_deplibs" + else + compile_deplibs="-l$name -L$dir $compile_deplibs" + finalize_deplibs="-l$name -L$dir $finalize_deplibs" + fi + elif test "$build_libtool_libs" = yes; then + # Not a shared library + if test "$deplibs_check_method" != pass_all; then + # We're trying link a shared library against a static one + # but the system doesn't support it. + + # Just print a warning and add the library to dependency_libs so + # that the program can be linked against the static library. + echo + $ECHO "*** Warning: This system can not link to static lib archive $lib." + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which you do not appear to have." + if test "$module" = yes; then + echo "*** But as you try to build a module library, libtool will still create " + echo "*** a static module, that should work as long as the dlopening application" + echo "*** is linked with the -dlopen flag to resolve symbols at runtime." + if test -z "$global_symbol_pipe"; then + echo + echo "*** However, this would only work if libtool was able to extract symbol" + echo "*** lists from a program, using \`nm' or equivalent, but libtool could" + echo "*** not find such a program. So, this module is probably useless." + echo "*** \`nm' from GNU binutils and a full rebuild may help." + fi + if test "$build_old_libs" = no; then + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + fi + else + deplibs="$dir/$old_library $deplibs" + link_static=yes + fi + fi # link shared/static library? + + if test "$linkmode" = lib; then + if test -n "$dependency_libs" && + { test "$hardcode_into_libs" != yes || + test "$build_old_libs" = yes || + test "$link_static" = yes; }; then + # Extract -R from dependency_libs + temp_deplibs= + for libdir in $dependency_libs; do + case $libdir in + -R*) func_stripname '-R' '' "$libdir" + temp_xrpath=$func_stripname_result + case " $xrpath " in + *" $temp_xrpath "*) ;; + *) xrpath+=" $temp_xrpath";; + esac;; + *) temp_deplibs+=" $libdir";; + esac + done + dependency_libs="$temp_deplibs" + fi + + newlib_search_path+=" $absdir" + # Link against this library + test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" + # ... and its dependency_libs + tmp_libs= + for deplib in $dependency_libs; do + newdependency_libs="$deplib $newdependency_libs" + case $deplib in + -L*) func_stripname '-L' '' "$deplib" + func_resolve_sysroot "$func_stripname_result";; + *) func_resolve_sysroot "$deplib" ;; + esac + if $opt_preserve_dup_deps ; then + case "$tmp_libs " in + *" $func_resolve_sysroot_result "*) + specialdeplibs+=" $func_resolve_sysroot_result" ;; + esac + fi + tmp_libs+=" $func_resolve_sysroot_result" + done + + if test "$link_all_deplibs" != no; then + # Add the search paths of all dependency libraries + for deplib in $dependency_libs; do + path= + case $deplib in + -L*) path="$deplib" ;; + *.la) + func_resolve_sysroot "$deplib" + deplib=$func_resolve_sysroot_result + func_dirname "$deplib" "" "." + dir=$func_dirname_result + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; + *) + absdir=`cd "$dir" && pwd` + if test -z "$absdir"; then + func_warning "cannot determine absolute directory name of \`$dir'" + absdir="$dir" + fi + ;; + esac + if $GREP "^installed=no" $deplib > /dev/null; then + case $host in + *-*-darwin*) + depdepl= + eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` + if test -n "$deplibrary_names" ; then + for tmp in $deplibrary_names ; do + depdepl=$tmp + done + if test -f "$absdir/$objdir/$depdepl" ; then + depdepl="$absdir/$objdir/$depdepl" + darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` + if test -z "$darwin_install_name"; then + darwin_install_name=`${OTOOL64} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` + fi + compiler_flags+=" ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}" + linker_flags+=" -dylib_file ${darwin_install_name}:${depdepl}" + path= + fi + fi + ;; + *) + path="-L$absdir/$objdir" + ;; + esac + else + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` + test -z "$libdir" && \ + func_fatal_error "\`$deplib' is not a valid libtool archive" + test "$absdir" != "$libdir" && \ + func_warning "\`$deplib' seems to be moved" + + path="-L$absdir" + fi + ;; + esac + case " $deplibs " in + *" $path "*) ;; + *) deplibs="$path $deplibs" ;; + esac + done + fi # link_all_deplibs != no + fi # linkmode = lib + done # for deplib in $libs + if test "$pass" = link; then + if test "$linkmode" = "prog"; then + compile_deplibs="$new_inherited_linker_flags $compile_deplibs" + finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" + else + compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + fi + fi + dependency_libs="$newdependency_libs" + if test "$pass" = dlpreopen; then + # Link the dlpreopened libraries before other libraries + for deplib in $save_deplibs; do + deplibs="$deplib $deplibs" + done + fi + if test "$pass" != dlopen; then + if test "$pass" != conv; then + # Make sure lib_search_path contains only unique directories. + lib_search_path= + for dir in $newlib_search_path; do + case "$lib_search_path " in + *" $dir "*) ;; + *) lib_search_path+=" $dir" ;; + esac + done + newlib_search_path= + fi + + if test "$linkmode,$pass" != "prog,link"; then + vars="deplibs" + else + vars="compile_deplibs finalize_deplibs" + fi + for var in $vars dependency_libs; do + # Add libraries to $var in reverse order + eval tmp_libs=\"\$$var\" + new_libs= + for deplib in $tmp_libs; do + # FIXME: Pedantically, this is the right thing to do, so + # that some nasty dependency loop isn't accidentally + # broken: + #new_libs="$deplib $new_libs" + # Pragmatically, this seems to cause very few problems in + # practice: + case $deplib in + -L*) new_libs="$deplib $new_libs" ;; + -R*) ;; + *) + # And here is the reason: when a library appears more + # than once as an explicit dependence of a library, or + # is implicitly linked in more than once by the + # compiler, it is considered special, and multiple + # occurrences thereof are not removed. Compare this + # with having the same library being listed as a + # dependency of multiple other libraries: in this case, + # we know (pedantically, we assume) the library does not + # need to be listed more than once, so we keep only the + # last copy. This is not always right, but it is rare + # enough that we require users that really mean to play + # such unportable linking tricks to link the library + # using -Wl,-lname, so that libtool does not consider it + # for duplicate removal. + case " $specialdeplibs " in + *" $deplib "*) new_libs="$deplib $new_libs" ;; + *) + case " $new_libs " in + *" $deplib "*) ;; + *) new_libs="$deplib $new_libs" ;; + esac + ;; + esac + ;; + esac + done + tmp_libs= + for deplib in $new_libs; do + case $deplib in + -L*) + case " $tmp_libs " in + *" $deplib "*) ;; + *) tmp_libs+=" $deplib" ;; + esac + ;; + *) tmp_libs+=" $deplib" ;; + esac + done + eval $var=\"$tmp_libs\" + done # for var + fi + # Last step: remove runtime libs from dependency_libs + # (they stay in deplibs) + tmp_libs= + for i in $dependency_libs ; do + case " $predeps $postdeps $compiler_lib_search_path " in + *" $i "*) + i="" + ;; + esac + if test -n "$i" ; then + tmp_libs+=" $i" + fi + done + dependency_libs=$tmp_libs + done # for pass + if test "$linkmode" = prog; then + dlfiles="$newdlfiles" + fi + if test "$linkmode" = prog || test "$linkmode" = lib; then + dlprefiles="$newdlprefiles" + fi + + case $linkmode in + oldlib) + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + func_warning "\`-dlopen' is ignored for archives" + fi + + case " $deplibs" in + *\ -l* | *\ -L*) + func_warning "\`-l' and \`-L' are ignored for archives" ;; + esac + + test -n "$rpath" && \ + func_warning "\`-rpath' is ignored for archives" + + test -n "$xrpath" && \ + func_warning "\`-R' is ignored for archives" + + test -n "$vinfo" && \ + func_warning "\`-version-info/-version-number' is ignored for archives" + + test -n "$release" && \ + func_warning "\`-release' is ignored for archives" + + test -n "$export_symbols$export_symbols_regex" && \ + func_warning "\`-export-symbols' is ignored for archives" + + # Now set the variables for building old libraries. + build_libtool_libs=no + oldlibs="$output" + objs+="$old_deplibs" + ;; + + lib) + # Make sure we only generate libraries of the form `libNAME.la'. + case $outputname in + lib*) + func_stripname 'lib' '.la' "$outputname" + name=$func_stripname_result + eval shared_ext=\"$shrext_cmds\" + eval libname=\"$libname_spec\" + ;; + *) + test "$module" = no && \ + func_fatal_help "libtool library \`$output' must begin with \`lib'" + + if test "$need_lib_prefix" != no; then + # Add the "lib" prefix for modules if required + func_stripname '' '.la' "$outputname" + name=$func_stripname_result + eval shared_ext=\"$shrext_cmds\" + eval libname=\"$libname_spec\" + else + func_stripname '' '.la' "$outputname" + libname=$func_stripname_result + fi + ;; + esac + + if test -n "$objs"; then + if test "$deplibs_check_method" != pass_all; then + func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs" + else + echo + $ECHO "*** Warning: Linking the shared library $output against the non-libtool" + $ECHO "*** objects $objs is not portable!" + libobjs+=" $objs" + fi + fi + + test "$dlself" != no && \ + func_warning "\`-dlopen self' is ignored for libtool libraries" + + set dummy $rpath + shift + test "$#" -gt 1 && \ + func_warning "ignoring multiple \`-rpath's for a libtool library" + + install_libdir="$1" + + oldlibs= + if test -z "$rpath"; then + if test "$build_libtool_libs" = yes; then + # Building a libtool convenience library. + # Some compilers have problems with a `.al' extension so + # convenience libraries should have the same extension an + # archive normally would. + oldlibs="$output_objdir/$libname.$libext $oldlibs" + build_libtool_libs=convenience + build_old_libs=yes + fi + + test -n "$vinfo" && \ + func_warning "\`-version-info/-version-number' is ignored for convenience libraries" + + test -n "$release" && \ + func_warning "\`-release' is ignored for convenience libraries" + else + + # Parse the version information argument. + save_ifs="$IFS"; IFS=':' + set dummy $vinfo 0 0 0 + shift + IFS="$save_ifs" + + test -n "$7" && \ + func_fatal_help "too many parameters to \`-version-info'" + + # convert absolute version numbers to libtool ages + # this retains compatibility with .la files and attempts + # to make the code below a bit more comprehensible + + case $vinfo_number in + yes) + number_major="$1" + number_minor="$2" + number_revision="$3" + # + # There are really only two kinds -- those that + # use the current revision as the major version + # and those that subtract age and use age as + # a minor version. But, then there is irix + # which has an extra 1 added just for fun + # + case $version_type in + # correct linux to gnu/linux during the next big refactor + darwin|linux|osf|windows|none) + func_arith $number_major + $number_minor + current=$func_arith_result + age="$number_minor" + revision="$number_revision" + ;; + freebsd-aout|freebsd-elf|qnx|sunos) + current="$number_major" + revision="$number_minor" + age="0" + ;; + irix|nonstopux) + func_arith $number_major + $number_minor + current=$func_arith_result + age="$number_minor" + revision="$number_minor" + lt_irix_increment=no + ;; + esac + ;; + no) + current="$1" + revision="$2" + age="$3" + ;; + esac + + # Check that each of the things are valid numbers. + case $current in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + func_error "CURRENT \`$current' must be a nonnegative integer" + func_fatal_error "\`$vinfo' is not valid version information" + ;; + esac + + case $revision in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + func_error "REVISION \`$revision' must be a nonnegative integer" + func_fatal_error "\`$vinfo' is not valid version information" + ;; + esac + + case $age in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + func_error "AGE \`$age' must be a nonnegative integer" + func_fatal_error "\`$vinfo' is not valid version information" + ;; + esac + + if test "$age" -gt "$current"; then + func_error "AGE \`$age' is greater than the current interface number \`$current'" + func_fatal_error "\`$vinfo' is not valid version information" + fi + + # Calculate the version variables. + major= + versuffix= + verstring= + case $version_type in + none) ;; + + darwin) + # Like Linux, but with the current version available in + # verstring for coding it into the library header + func_arith $current - $age + major=.$func_arith_result + versuffix="$major.$age.$revision" + # Darwin ld doesn't like 0 for these options... + func_arith $current + 1 + minor_current=$func_arith_result + xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" + verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" + ;; + + freebsd-aout) + major=".$current" + versuffix=".$current.$revision"; + ;; + + freebsd-elf) + major=".$current" + versuffix=".$current" + ;; + + irix | nonstopux) + if test "X$lt_irix_increment" = "Xno"; then + func_arith $current - $age + else + func_arith $current - $age + 1 + fi + major=$func_arith_result + + case $version_type in + nonstopux) verstring_prefix=nonstopux ;; + *) verstring_prefix=sgi ;; + esac + verstring="$verstring_prefix$major.$revision" + + # Add in all the interfaces that we are compatible with. + loop=$revision + while test "$loop" -ne 0; do + func_arith $revision - $loop + iface=$func_arith_result + func_arith $loop - 1 + loop=$func_arith_result + verstring="$verstring_prefix$major.$iface:$verstring" + done + + # Before this point, $major must not contain `.'. + major=.$major + versuffix="$major.$revision" + ;; + + linux) # correct to gnu/linux during the next big refactor + func_arith $current - $age + major=.$func_arith_result + versuffix="$major.$age.$revision" + ;; + + osf) + func_arith $current - $age + major=.$func_arith_result + versuffix=".$current.$age.$revision" + verstring="$current.$age.$revision" + + # Add in all the interfaces that we are compatible with. + loop=$age + while test "$loop" -ne 0; do + func_arith $current - $loop + iface=$func_arith_result + func_arith $loop - 1 + loop=$func_arith_result + verstring="$verstring:${iface}.0" + done + + # Make executables depend on our current version. + verstring+=":${current}.0" + ;; + + qnx) + major=".$current" + versuffix=".$current" + ;; + + sunos) + major=".$current" + versuffix=".$current.$revision" + ;; + + windows) + # Use '-' rather than '.', since we only want one + # extension on DOS 8.3 filesystems. + func_arith $current - $age + major=$func_arith_result + versuffix="-$major" + ;; + + *) + func_fatal_configuration "unknown library version type \`$version_type'" + ;; + esac + + # Clear the version info if we defaulted, and they specified a release. + if test -z "$vinfo" && test -n "$release"; then + major= + case $version_type in + darwin) + # we can't check for "0.0" in archive_cmds due to quoting + # problems, so we reset it completely + verstring= + ;; + *) + verstring="0.0" + ;; + esac + if test "$need_version" = no; then + versuffix= + else + versuffix=".0.0" + fi + fi + + # Remove version info from name if versioning should be avoided + if test "$avoid_version" = yes && test "$need_version" = no; then + major= + versuffix= + verstring="" + fi + + # Check to see if the archive will have undefined symbols. + if test "$allow_undefined" = yes; then + if test "$allow_undefined_flag" = unsupported; then + func_warning "undefined symbols not allowed in $host shared libraries" + build_libtool_libs=no + build_old_libs=yes + fi + else + # Don't allow undefined symbols. + allow_undefined_flag="$no_undefined_flag" + fi + + fi + + func_generate_dlsyms "$libname" "$libname" "yes" + libobjs+=" $symfileobj" + test "X$libobjs" = "X " && libobjs= + + if test "$opt_mode" != relink; then + # Remove our outputs, but don't remove object files since they + # may have been created when compiling PIC objects. + removelist= + tempremovelist=`$ECHO "$output_objdir/*"` + for p in $tempremovelist; do + case $p in + *.$objext | *.gcno) + ;; + $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) + if test "X$precious_files_regex" != "X"; then + if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 + then + continue + fi + fi + removelist+=" $p" + ;; + *) ;; + esac + done + test -n "$removelist" && \ + func_show_eval "${RM}r \$removelist" + fi + + # Now set the variables for building old libraries. + if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then + oldlibs+=" $output_objdir/$libname.$libext" + + # Transform .lo files to .o files. + oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; $lo2o" | $NL2SP` + fi + + # Eliminate all temporary directories. + #for path in $notinst_path; do + # lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"` + # deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"` + # dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"` + #done + + if test -n "$xrpath"; then + # If the user specified any rpath flags, then add them. + temp_xrpath= + for libdir in $xrpath; do + func_replace_sysroot "$libdir" + temp_xrpath+=" -R$func_replace_sysroot_result" + case "$finalize_rpath " in + *" $libdir "*) ;; + *) finalize_rpath+=" $libdir" ;; + esac + done + if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then + dependency_libs="$temp_xrpath $dependency_libs" + fi + fi + + # Make sure dlfiles contains only unique files that won't be dlpreopened + old_dlfiles="$dlfiles" + dlfiles= + for lib in $old_dlfiles; do + case " $dlprefiles $dlfiles " in + *" $lib "*) ;; + *) dlfiles+=" $lib" ;; + esac + done + + # Make sure dlprefiles contains only unique files + old_dlprefiles="$dlprefiles" + dlprefiles= + for lib in $old_dlprefiles; do + case "$dlprefiles " in + *" $lib "*) ;; + *) dlprefiles+=" $lib" ;; + esac + done + + if test "$build_libtool_libs" = yes; then + if test -n "$rpath"; then + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*) + # these systems don't actually have a c library (as such)! + ;; + *-*-rhapsody* | *-*-darwin1.[012]) + # Rhapsody C library is in the System framework + deplibs+=" System.ltframework" + ;; + *-*-netbsd*) + # Don't link with libc until the a.out ld.so is fixed. + ;; + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) + # Do not include libc due to us having libc/libc_r. + ;; + *-*-sco3.2v5* | *-*-sco5v6*) + # Causes problems with __ctype + ;; + *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) + # Compiler inserts libc in the correct place for threads to work + ;; + *) + # Add libc to deplibs on all other systems if necessary. + if test "$build_libtool_need_lc" = "yes"; then + deplibs+=" -lc" + fi + ;; + esac + fi + + # Transform deplibs into only deplibs that can be linked in shared. + name_save=$name + libname_save=$libname + release_save=$release + versuffix_save=$versuffix + major_save=$major + # I'm not sure if I'm treating the release correctly. I think + # release should show up in the -l (ie -lgmp5) so we don't want to + # add it in twice. Is that correct? + release="" + versuffix="" + major="" + newdeplibs= + droppeddeps=no + case $deplibs_check_method in + pass_all) + # Don't check for shared/static. Everything works. + # This might be a little naive. We might want to check + # whether the library exists or not. But this is on + # osf3 & osf4 and I'm not really sure... Just + # implementing what was already the behavior. + newdeplibs=$deplibs + ;; + test_compile) + # This code stresses the "libraries are programs" paradigm to its + # limits. Maybe even breaks it. We compile a program, linking it + # against the deplibs as a proxy for the library. Then we can check + # whether they linked in statically or dynamically with ldd. + $opt_dry_run || $RM conftest.c + cat > conftest.c </dev/null` + $nocaseglob + else + potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null` + fi + for potent_lib in $potential_libs; do + # Follow soft links. + if ls -lLd "$potent_lib" 2>/dev/null | + $GREP " -> " >/dev/null; then + continue + fi + # The statement above tries to avoid entering an + # endless loop below, in case of cyclic links. + # We might still enter an endless loop, since a link + # loop can be closed while we follow links, + # but so what? + potlib="$potent_lib" + while test -h "$potlib" 2>/dev/null; do + potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` + case $potliblink in + [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; + *) potlib=`$ECHO "$potlib" | $SED 's,[^/]*$,,'`"$potliblink";; + esac + done + if eval $file_magic_cmd \"\$potlib\" 2>/dev/null | + $SED -e 10q | + $EGREP "$file_magic_regex" > /dev/null; then + newdeplibs+=" $a_deplib" + a_deplib="" + break 2 + fi + done + done + fi + if test -n "$a_deplib" ; then + droppeddeps=yes + echo + $ECHO "*** Warning: linker path does not have real file for library $a_deplib." + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which you do not appear to have" + echo "*** because I did check the linker path looking for a file starting" + if test -z "$potlib" ; then + $ECHO "*** with $libname but no candidates were found. (...for file magic test)" + else + $ECHO "*** with $libname and none of the candidates passed a file format test" + $ECHO "*** using a file magic. Last file checked: $potlib" + fi + fi + ;; + *) + # Add a -L argument. + newdeplibs+=" $a_deplib" + ;; + esac + done # Gone through all deplibs. + ;; + match_pattern*) + set dummy $deplibs_check_method; shift + match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` + for a_deplib in $deplibs; do + case $a_deplib in + -l*) + func_stripname -l '' "$a_deplib" + name=$func_stripname_result + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + case " $predeps $postdeps " in + *" $a_deplib "*) + newdeplibs+=" $a_deplib" + a_deplib="" + ;; + esac + fi + if test -n "$a_deplib" ; then + libname=`eval "\\$ECHO \"$libname_spec\""` + for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do + potential_libs=`ls $i/$libname[.-]* 2>/dev/null` + for potent_lib in $potential_libs; do + potlib="$potent_lib" # see symlink-check above in file_magic test + if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \ + $EGREP "$match_pattern_regex" > /dev/null; then + newdeplibs+=" $a_deplib" + a_deplib="" + break 2 + fi + done + done + fi + if test -n "$a_deplib" ; then + droppeddeps=yes + echo + $ECHO "*** Warning: linker path does not have real file for library $a_deplib." + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which you do not appear to have" + echo "*** because I did check the linker path looking for a file starting" + if test -z "$potlib" ; then + $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)" + else + $ECHO "*** with $libname and none of the candidates passed a file format test" + $ECHO "*** using a regex pattern. Last file checked: $potlib" + fi + fi + ;; + *) + # Add a -L argument. + newdeplibs+=" $a_deplib" + ;; + esac + done # Gone through all deplibs. + ;; + none | unknown | *) + newdeplibs="" + tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'` + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + for i in $predeps $postdeps ; do + # can't use Xsed below, because $i might contain '/' + tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s,$i,,"` + done + fi + case $tmp_deplibs in + *[!\ \ ]*) + echo + if test "X$deplibs_check_method" = "Xnone"; then + echo "*** Warning: inter-library dependencies are not supported in this platform." + else + echo "*** Warning: inter-library dependencies are not known to be supported." + fi + echo "*** All declared inter-library dependencies are being dropped." + droppeddeps=yes + ;; + esac + ;; + esac + versuffix=$versuffix_save + major=$major_save + release=$release_save + libname=$libname_save + name=$name_save + + case $host in + *-*-rhapsody* | *-*-darwin1.[012]) + # On Rhapsody replace the C library with the System framework + newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'` + ;; + esac + + if test "$droppeddeps" = yes; then + if test "$module" = yes; then + echo + echo "*** Warning: libtool could not satisfy all declared inter-library" + $ECHO "*** dependencies of module $libname. Therefore, libtool will create" + echo "*** a static module, that should work as long as the dlopening" + echo "*** application is linked with the -dlopen flag." + if test -z "$global_symbol_pipe"; then + echo + echo "*** However, this would only work if libtool was able to extract symbol" + echo "*** lists from a program, using \`nm' or equivalent, but libtool could" + echo "*** not find such a program. So, this module is probably useless." + echo "*** \`nm' from GNU binutils and a full rebuild may help." + fi + if test "$build_old_libs" = no; then + oldlibs="$output_objdir/$libname.$libext" + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + else + echo "*** The inter-library dependencies that have been dropped here will be" + echo "*** automatically added whenever a program is linked with this library" + echo "*** or is declared to -dlopen it." + + if test "$allow_undefined" = no; then + echo + echo "*** Since this library must not contain undefined symbols," + echo "*** because either the platform does not support them or" + echo "*** it was explicitly requested with -no-undefined," + echo "*** libtool will only create a static version of it." + if test "$build_old_libs" = no; then + oldlibs="$output_objdir/$libname.$libext" + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + fi + fi + fi + # Done checking deplibs! + deplibs=$newdeplibs + fi + # Time to change all our "foo.ltframework" stuff back to "-framework foo" + case $host in + *-*-darwin*) + newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + ;; + esac + + # move library search paths that coincide with paths to not yet + # installed libraries to the beginning of the library search list + new_libs= + for path in $notinst_path; do + case " $new_libs " in + *" -L$path/$objdir "*) ;; + *) + case " $deplibs " in + *" -L$path/$objdir "*) + new_libs+=" -L$path/$objdir" ;; + esac + ;; + esac + done + for deplib in $deplibs; do + case $deplib in + -L*) + case " $new_libs " in + *" $deplib "*) ;; + *) new_libs+=" $deplib" ;; + esac + ;; + *) new_libs+=" $deplib" ;; + esac + done + deplibs="$new_libs" + + # All the library-specific variables (install_libdir is set above). + library_names= + old_library= + dlname= + + # Test again, we may have decided not to build it any more + if test "$build_libtool_libs" = yes; then + # Remove ${wl} instances when linking with ld. + # FIXME: should test the right _cmds variable. + case $archive_cmds in + *\$LD\ *) wl= ;; + esac + if test "$hardcode_into_libs" = yes; then + # Hardcode the library paths + hardcode_libdirs= + dep_rpath= + rpath="$finalize_rpath" + test "$opt_mode" != relink && rpath="$compile_rpath$rpath" + for libdir in $rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + func_replace_sysroot "$libdir" + libdir=$func_replace_sysroot_result + if test -z "$hardcode_libdirs"; then + hardcode_libdirs="$libdir" + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + hardcode_libdirs+="$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + dep_rpath+=" $flag" + fi + elif test -n "$runpath_var"; then + case "$perm_rpath " in + *" $libdir "*) ;; + *) perm_rpath+=" $libdir" ;; + esac + fi + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir="$hardcode_libdirs" + eval "dep_rpath=\"$hardcode_libdir_flag_spec\"" + fi + if test -n "$runpath_var" && test -n "$perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $perm_rpath; do + rpath+="$dir:" + done + eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" + fi + test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" + fi + + shlibpath="$finalize_shlibpath" + test "$opt_mode" != relink && shlibpath="$compile_shlibpath$shlibpath" + if test -n "$shlibpath"; then + eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" + fi + + # Get the real and link names of the library. + eval shared_ext=\"$shrext_cmds\" + eval library_names=\"$library_names_spec\" + set dummy $library_names + shift + realname="$1" + shift + + if test -n "$soname_spec"; then + eval soname=\"$soname_spec\" + else + soname="$realname" + fi + if test -z "$dlname"; then + dlname=$soname + fi + + lib="$output_objdir/$realname" + linknames= + for link + do + linknames+=" $link" + done + + # Use standard objects if they are pic + test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP` + test "X$libobjs" = "X " && libobjs= + + delfiles= + if test -n "$export_symbols" && test -n "$include_expsyms"; then + $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp" + export_symbols="$output_objdir/$libname.uexp" + delfiles+=" $export_symbols" + fi + + orig_export_symbols= + case $host_os in + cygwin* | mingw* | cegcc*) + if test -n "$export_symbols" && test -z "$export_symbols_regex"; then + # exporting using user supplied symfile + if test "x`$SED 1q $export_symbols`" != xEXPORTS; then + # and it's NOT already a .def file. Must figure out + # which of the given symbols are data symbols and tag + # them as such. So, trigger use of export_symbols_cmds. + # export_symbols gets reassigned inside the "prepare + # the list of exported symbols" if statement, so the + # include_expsyms logic still works. + orig_export_symbols="$export_symbols" + export_symbols= + always_export_symbols=yes + fi + fi + ;; + esac + + # Prepare the list of exported symbols + if test -z "$export_symbols"; then + if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then + func_verbose "generating symbol list for \`$libname.la'" + export_symbols="$output_objdir/$libname.exp" + $opt_dry_run || $RM $export_symbols + cmds=$export_symbols_cmds + save_ifs="$IFS"; IFS='~' + for cmd1 in $cmds; do + IFS="$save_ifs" + # Take the normal branch if the nm_file_list_spec branch + # doesn't work or if tool conversion is not needed. + case $nm_file_list_spec~$to_tool_file_cmd in + *~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*) + try_normal_branch=yes + eval cmd=\"$cmd1\" + func_len " $cmd" + len=$func_len_result + ;; + *) + try_normal_branch=no + ;; + esac + if test "$try_normal_branch" = yes \ + && { test "$len" -lt "$max_cmd_len" \ + || test "$max_cmd_len" -le -1; } + then + func_show_eval "$cmd" 'exit $?' + skipped_export=false + elif test -n "$nm_file_list_spec"; then + func_basename "$output" + output_la=$func_basename_result + save_libobjs=$libobjs + save_output=$output + output=${output_objdir}/${output_la}.nm + func_to_tool_file "$output" + libobjs=$nm_file_list_spec$func_to_tool_file_result + delfiles+=" $output" + func_verbose "creating $NM input file list: $output" + for obj in $save_libobjs; do + func_to_tool_file "$obj" + $ECHO "$func_to_tool_file_result" + done > "$output" + eval cmd=\"$cmd1\" + func_show_eval "$cmd" 'exit $?' + output=$save_output + libobjs=$save_libobjs + skipped_export=false + else + # The command line is too long to execute in one step. + func_verbose "using reloadable object file for export list..." + skipped_export=: + # Break out early, otherwise skipped_export may be + # set to false by a later but shorter cmd. + break + fi + done + IFS="$save_ifs" + if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then + func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' + func_show_eval '$MV "${export_symbols}T" "$export_symbols"' + fi + fi + fi + + if test -n "$export_symbols" && test -n "$include_expsyms"; then + tmp_export_symbols="$export_symbols" + test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" + $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' + fi + + if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then + # The given exports_symbols file has to be filtered, so filter it. + func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" + # FIXME: $output_objdir/$libname.filter potentially contains lots of + # 's' commands which not all seds can handle. GNU sed should be fine + # though. Also, the filter scales superlinearly with the number of + # global variables. join(1) would be nice here, but unfortunately + # isn't a blessed tool. + $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter + delfiles+=" $export_symbols $output_objdir/$libname.filter" + export_symbols=$output_objdir/$libname.def + $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols + fi + + tmp_deplibs= + for test_deplib in $deplibs; do + case " $convenience " in + *" $test_deplib "*) ;; + *) + tmp_deplibs+=" $test_deplib" + ;; + esac + done + deplibs="$tmp_deplibs" + + if test -n "$convenience"; then + if test -n "$whole_archive_flag_spec" && + test "$compiler_needs_object" = yes && + test -z "$libobjs"; then + # extract the archives, so we have objects to list. + # TODO: could optimize this to just extract one archive. + whole_archive_flag_spec= + fi + if test -n "$whole_archive_flag_spec"; then + save_libobjs=$libobjs + eval libobjs=\"\$libobjs $whole_archive_flag_spec\" + test "X$libobjs" = "X " && libobjs= + else + gentop="$output_objdir/${outputname}x" + generated+=" $gentop" + + func_extract_archives $gentop $convenience + libobjs+=" $func_extract_archives_result" + test "X$libobjs" = "X " && libobjs= + fi + fi + + if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then + eval flag=\"$thread_safe_flag_spec\" + linker_flags+=" $flag" + fi + + # Make a backup of the uninstalled library when relinking + if test "$opt_mode" = relink; then + $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $? + fi + + # Do each of the archive commands. + if test "$module" = yes && test -n "$module_cmds" ; then + if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then + eval test_cmds=\"$module_expsym_cmds\" + cmds=$module_expsym_cmds + else + eval test_cmds=\"$module_cmds\" + cmds=$module_cmds + fi + else + if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then + eval test_cmds=\"$archive_expsym_cmds\" + cmds=$archive_expsym_cmds + else + eval test_cmds=\"$archive_cmds\" + cmds=$archive_cmds + fi + fi + + if test "X$skipped_export" != "X:" && + func_len " $test_cmds" && + len=$func_len_result && + test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then + : + else + # The command line is too long to link in one step, link piecewise + # or, if using GNU ld and skipped_export is not :, use a linker + # script. + + # Save the value of $output and $libobjs because we want to + # use them later. If we have whole_archive_flag_spec, we + # want to use save_libobjs as it was before + # whole_archive_flag_spec was expanded, because we can't + # assume the linker understands whole_archive_flag_spec. + # This may have to be revisited, in case too many + # convenience libraries get linked in and end up exceeding + # the spec. + if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then + save_libobjs=$libobjs + fi + save_output=$output + func_basename "$output" + output_la=$func_basename_result + + # Clear the reloadable object creation command queue and + # initialize k to one. + test_cmds= + concat_cmds= + objlist= + last_robj= + k=1 + + if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then + output=${output_objdir}/${output_la}.lnkscript + func_verbose "creating GNU ld script: $output" + echo 'INPUT (' > $output + for obj in $save_libobjs + do + func_to_tool_file "$obj" + $ECHO "$func_to_tool_file_result" >> $output + done + echo ')' >> $output + delfiles+=" $output" + func_to_tool_file "$output" + output=$func_to_tool_file_result + elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then + output=${output_objdir}/${output_la}.lnk + func_verbose "creating linker input file list: $output" + : > $output + set x $save_libobjs + shift + firstobj= + if test "$compiler_needs_object" = yes; then + firstobj="$1 " + shift + fi + for obj + do + func_to_tool_file "$obj" + $ECHO "$func_to_tool_file_result" >> $output + done + delfiles+=" $output" + func_to_tool_file "$output" + output=$firstobj\"$file_list_spec$func_to_tool_file_result\" + else + if test -n "$save_libobjs"; then + func_verbose "creating reloadable object files..." + output=$output_objdir/$output_la-${k}.$objext + eval test_cmds=\"$reload_cmds\" + func_len " $test_cmds" + len0=$func_len_result + len=$len0 + + # Loop over the list of objects to be linked. + for obj in $save_libobjs + do + func_len " $obj" + func_arith $len + $func_len_result + len=$func_arith_result + if test "X$objlist" = X || + test "$len" -lt "$max_cmd_len"; then + objlist+=" $obj" + else + # The command $test_cmds is almost too long, add a + # command to the queue. + if test "$k" -eq 1 ; then + # The first file doesn't have a previous command to add. + reload_objs=$objlist + eval concat_cmds=\"$reload_cmds\" + else + # All subsequent reloadable object files will link in + # the last one created. + reload_objs="$objlist $last_robj" + eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\" + fi + last_robj=$output_objdir/$output_la-${k}.$objext + func_arith $k + 1 + k=$func_arith_result + output=$output_objdir/$output_la-${k}.$objext + objlist=" $obj" + func_len " $last_robj" + func_arith $len0 + $func_len_result + len=$func_arith_result + fi + done + # Handle the remaining objects by creating one last + # reloadable object file. All subsequent reloadable object + # files will link in the last one created. + test -z "$concat_cmds" || concat_cmds=$concat_cmds~ + reload_objs="$objlist $last_robj" + eval concat_cmds=\"\${concat_cmds}$reload_cmds\" + if test -n "$last_robj"; then + eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\" + fi + delfiles+=" $output" + + else + output= + fi + + if ${skipped_export-false}; then + func_verbose "generating symbol list for \`$libname.la'" + export_symbols="$output_objdir/$libname.exp" + $opt_dry_run || $RM $export_symbols + libobjs=$output + # Append the command to create the export file. + test -z "$concat_cmds" || concat_cmds=$concat_cmds~ + eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\" + if test -n "$last_robj"; then + eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" + fi + fi + + test -n "$save_libobjs" && + func_verbose "creating a temporary reloadable object file: $output" + + # Loop through the commands generated above and execute them. + save_ifs="$IFS"; IFS='~' + for cmd in $concat_cmds; do + IFS="$save_ifs" + $opt_silent || { + func_quote_for_expand "$cmd" + eval "func_echo $func_quote_for_expand_result" + } + $opt_dry_run || eval "$cmd" || { + lt_exit=$? + + # Restore the uninstalled library and exit + if test "$opt_mode" = relink; then + ( cd "$output_objdir" && \ + $RM "${realname}T" && \ + $MV "${realname}U" "$realname" ) + fi + + exit $lt_exit + } + done + IFS="$save_ifs" + + if test -n "$export_symbols_regex" && ${skipped_export-false}; then + func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' + func_show_eval '$MV "${export_symbols}T" "$export_symbols"' + fi + fi + + if ${skipped_export-false}; then + if test -n "$export_symbols" && test -n "$include_expsyms"; then + tmp_export_symbols="$export_symbols" + test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" + $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' + fi + + if test -n "$orig_export_symbols"; then + # The given exports_symbols file has to be filtered, so filter it. + func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" + # FIXME: $output_objdir/$libname.filter potentially contains lots of + # 's' commands which not all seds can handle. GNU sed should be fine + # though. Also, the filter scales superlinearly with the number of + # global variables. join(1) would be nice here, but unfortunately + # isn't a blessed tool. + $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter + delfiles+=" $export_symbols $output_objdir/$libname.filter" + export_symbols=$output_objdir/$libname.def + $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols + fi + fi + + libobjs=$output + # Restore the value of output. + output=$save_output + + if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then + eval libobjs=\"\$libobjs $whole_archive_flag_spec\" + test "X$libobjs" = "X " && libobjs= + fi + # Expand the library linking commands again to reset the + # value of $libobjs for piecewise linking. + + # Do each of the archive commands. + if test "$module" = yes && test -n "$module_cmds" ; then + if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then + cmds=$module_expsym_cmds + else + cmds=$module_cmds + fi + else + if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then + cmds=$archive_expsym_cmds + else + cmds=$archive_cmds + fi + fi + fi + + if test -n "$delfiles"; then + # Append the command to remove temporary files to $cmds. + eval cmds=\"\$cmds~\$RM $delfiles\" + fi + + # Add any objects from preloaded convenience libraries + if test -n "$dlprefiles"; then + gentop="$output_objdir/${outputname}x" + generated+=" $gentop" + + func_extract_archives $gentop $dlprefiles + libobjs+=" $func_extract_archives_result" + test "X$libobjs" = "X " && libobjs= + fi + + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $opt_silent || { + func_quote_for_expand "$cmd" + eval "func_echo $func_quote_for_expand_result" + } + $opt_dry_run || eval "$cmd" || { + lt_exit=$? + + # Restore the uninstalled library and exit + if test "$opt_mode" = relink; then + ( cd "$output_objdir" && \ + $RM "${realname}T" && \ + $MV "${realname}U" "$realname" ) + fi + + exit $lt_exit + } + done + IFS="$save_ifs" + + # Restore the uninstalled library and exit + if test "$opt_mode" = relink; then + $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $? + + if test -n "$convenience"; then + if test -z "$whole_archive_flag_spec"; then + func_show_eval '${RM}r "$gentop"' + fi + fi + + exit $EXIT_SUCCESS + fi + + # Create links to the real library. + for linkname in $linknames; do + if test "$realname" != "$linkname"; then + func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?' + fi + done + + # If -module or -export-dynamic was specified, set the dlname. + if test "$module" = yes || test "$export_dynamic" = yes; then + # On all known operating systems, these are identical. + dlname="$soname" + fi + fi + ;; + + obj) + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + func_warning "\`-dlopen' is ignored for objects" + fi + + case " $deplibs" in + *\ -l* | *\ -L*) + func_warning "\`-l' and \`-L' are ignored for objects" ;; + esac + + test -n "$rpath" && \ + func_warning "\`-rpath' is ignored for objects" + + test -n "$xrpath" && \ + func_warning "\`-R' is ignored for objects" + + test -n "$vinfo" && \ + func_warning "\`-version-info' is ignored for objects" + + test -n "$release" && \ + func_warning "\`-release' is ignored for objects" + + case $output in + *.lo) + test -n "$objs$old_deplibs" && \ + func_fatal_error "cannot build library object \`$output' from non-libtool objects" + + libobj=$output + func_lo2o "$libobj" + obj=$func_lo2o_result + ;; + *) + libobj= + obj="$output" + ;; + esac + + # Delete the old objects. + $opt_dry_run || $RM $obj $libobj + + # Objects from convenience libraries. This assumes + # single-version convenience libraries. Whenever we create + # different ones for PIC/non-PIC, this we'll have to duplicate + # the extraction. + reload_conv_objs= + gentop= + # reload_cmds runs $LD directly, so let us get rid of + # -Wl from whole_archive_flag_spec and hope we can get by with + # turning comma into space.. + wl= + + if test -n "$convenience"; then + if test -n "$whole_archive_flag_spec"; then + eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" + reload_conv_objs=$reload_objs\ `$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'` + else + gentop="$output_objdir/${obj}x" + generated+=" $gentop" + + func_extract_archives $gentop $convenience + reload_conv_objs="$reload_objs $func_extract_archives_result" + fi + fi + + # If we're not building shared, we need to use non_pic_objs + test "$build_libtool_libs" != yes && libobjs="$non_pic_objects" + + # Create the old-style object. + reload_objs="$objs$old_deplibs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; /\.lib$/d; $lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test + + output="$obj" + func_execute_cmds "$reload_cmds" 'exit $?' + + # Exit if we aren't doing a library object file. + if test -z "$libobj"; then + if test -n "$gentop"; then + func_show_eval '${RM}r "$gentop"' + fi + + exit $EXIT_SUCCESS + fi + + if test "$build_libtool_libs" != yes; then + if test -n "$gentop"; then + func_show_eval '${RM}r "$gentop"' + fi + + # Create an invalid libtool object if no PIC, so that we don't + # accidentally link it into a program. + # $show "echo timestamp > $libobj" + # $opt_dry_run || eval "echo timestamp > $libobj" || exit $? + exit $EXIT_SUCCESS + fi + + if test -n "$pic_flag" || test "$pic_mode" != default; then + # Only do commands if we really have different PIC objects. + reload_objs="$libobjs $reload_conv_objs" + output="$libobj" + func_execute_cmds "$reload_cmds" 'exit $?' + fi + + if test -n "$gentop"; then + func_show_eval '${RM}r "$gentop"' + fi + + exit $EXIT_SUCCESS + ;; + + prog) + case $host in + *cygwin*) func_stripname '' '.exe' "$output" + output=$func_stripname_result.exe;; + esac + test -n "$vinfo" && \ + func_warning "\`-version-info' is ignored for programs" + + test -n "$release" && \ + func_warning "\`-release' is ignored for programs" + + test "$preload" = yes \ + && test "$dlopen_support" = unknown \ + && test "$dlopen_self" = unknown \ + && test "$dlopen_self_static" = unknown && \ + func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support." + + case $host in + *-*-rhapsody* | *-*-darwin1.[012]) + # On Rhapsody replace the C library is the System framework + compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'` + finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'` + ;; + esac + + case $host in + *-*-darwin*) + # Don't allow lazy linking, it breaks C++ global constructors + # But is supposedly fixed on 10.4 or later (yay!). + if test "$tagname" = CXX ; then + case ${MACOSX_DEPLOYMENT_TARGET-10.0} in + 10.[0123]) + compile_command+=" ${wl}-bind_at_load" + finalize_command+=" ${wl}-bind_at_load" + ;; + esac + fi + # Time to change all our "foo.ltframework" stuff back to "-framework foo" + compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + ;; + esac + + + # move library search paths that coincide with paths to not yet + # installed libraries to the beginning of the library search list + new_libs= + for path in $notinst_path; do + case " $new_libs " in + *" -L$path/$objdir "*) ;; + *) + case " $compile_deplibs " in + *" -L$path/$objdir "*) + new_libs+=" -L$path/$objdir" ;; + esac + ;; + esac + done + for deplib in $compile_deplibs; do + case $deplib in + -L*) + case " $new_libs " in + *" $deplib "*) ;; + *) new_libs+=" $deplib" ;; + esac + ;; + *) new_libs+=" $deplib" ;; + esac + done + compile_deplibs="$new_libs" + + + compile_command+=" $compile_deplibs" + finalize_command+=" $finalize_deplibs" + + if test -n "$rpath$xrpath"; then + # If the user specified any rpath flags, then add them. + for libdir in $rpath $xrpath; do + # This is the magic to use -rpath. + case "$finalize_rpath " in + *" $libdir "*) ;; + *) finalize_rpath+=" $libdir" ;; + esac + done + fi + + # Now hardcode the library paths + rpath= + hardcode_libdirs= + for libdir in $compile_rpath $finalize_rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + hardcode_libdirs="$libdir" + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + hardcode_libdirs+="$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + rpath+=" $flag" + fi + elif test -n "$runpath_var"; then + case "$perm_rpath " in + *" $libdir "*) ;; + *) perm_rpath+=" $libdir" ;; + esac + fi + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) + testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'` + case :$dllsearchpath: in + *":$libdir:"*) ;; + ::) dllsearchpath=$libdir;; + *) dllsearchpath+=":$libdir";; + esac + case :$dllsearchpath: in + *":$testbindir:"*) ;; + ::) dllsearchpath=$testbindir;; + *) dllsearchpath+=":$testbindir";; + esac + ;; + esac + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir="$hardcode_libdirs" + eval rpath=\" $hardcode_libdir_flag_spec\" + fi + compile_rpath="$rpath" + + rpath= + hardcode_libdirs= + for libdir in $finalize_rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + hardcode_libdirs="$libdir" + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + hardcode_libdirs+="$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + rpath+=" $flag" + fi + elif test -n "$runpath_var"; then + case "$finalize_perm_rpath " in + *" $libdir "*) ;; + *) finalize_perm_rpath+=" $libdir" ;; + esac + fi + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir="$hardcode_libdirs" + eval rpath=\" $hardcode_libdir_flag_spec\" + fi + finalize_rpath="$rpath" + + if test -n "$libobjs" && test "$build_old_libs" = yes; then + # Transform all the library objects into standard objects. + compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP` + finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP` + fi + + func_generate_dlsyms "$outputname" "@PROGRAM@" "no" + + # template prelinking step + if test -n "$prelink_cmds"; then + func_execute_cmds "$prelink_cmds" 'exit $?' + fi + + wrappers_required=yes + case $host in + *cegcc* | *mingw32ce*) + # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway. + wrappers_required=no + ;; + *cygwin* | *mingw* ) + if test "$build_libtool_libs" != yes; then + wrappers_required=no + fi + ;; + *) + if test "$need_relink" = no || test "$build_libtool_libs" != yes; then + wrappers_required=no + fi + ;; + esac + if test "$wrappers_required" = no; then + # Replace the output file specification. + compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'` + link_command="$compile_command$compile_rpath" + + # We have no uninstalled library dependencies, so finalize right now. + exit_status=0 + func_show_eval "$link_command" 'exit_status=$?' + + if test -n "$postlink_cmds"; then + func_to_tool_file "$output" + postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` + func_execute_cmds "$postlink_cmds" 'exit $?' + fi + + # Delete the generated files. + if test -f "$output_objdir/${outputname}S.${objext}"; then + func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"' + fi + + exit $exit_status + fi + + if test -n "$compile_shlibpath$finalize_shlibpath"; then + compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" + fi + if test -n "$finalize_shlibpath"; then + finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" + fi + + compile_var= + finalize_var= + if test -n "$runpath_var"; then + if test -n "$perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $perm_rpath; do + rpath+="$dir:" + done + compile_var="$runpath_var=\"$rpath\$$runpath_var\" " + fi + if test -n "$finalize_perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $finalize_perm_rpath; do + rpath+="$dir:" + done + finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " + fi + fi + + if test "$no_install" = yes; then + # We don't need to create a wrapper script. + link_command="$compile_var$compile_command$compile_rpath" + # Replace the output file specification. + link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'` + # Delete the old output file. + $opt_dry_run || $RM $output + # Link the executable and exit + func_show_eval "$link_command" 'exit $?' + + if test -n "$postlink_cmds"; then + func_to_tool_file "$output" + postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` + func_execute_cmds "$postlink_cmds" 'exit $?' + fi + + exit $EXIT_SUCCESS + fi + + if test "$hardcode_action" = relink; then + # Fast installation is not supported + link_command="$compile_var$compile_command$compile_rpath" + relink_command="$finalize_var$finalize_command$finalize_rpath" + + func_warning "this platform does not like uninstalled shared libraries" + func_warning "\`$output' will be relinked during installation" + else + if test "$fast_install" != no; then + link_command="$finalize_var$compile_command$finalize_rpath" + if test "$fast_install" = yes; then + relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'` + else + # fast_install is set to needless + relink_command= + fi + else + link_command="$compile_var$compile_command$compile_rpath" + relink_command="$finalize_var$finalize_command$finalize_rpath" + fi + fi + + # Replace the output file specification. + link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` + + # Delete the old output files. + $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname + + func_show_eval "$link_command" 'exit $?' + + if test -n "$postlink_cmds"; then + func_to_tool_file "$output_objdir/$outputname" + postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` + func_execute_cmds "$postlink_cmds" 'exit $?' + fi + + # Now create the wrapper script. + func_verbose "creating $output" + + # Quote the relink command for shipping. + if test -n "$relink_command"; then + # Preserve any variables that may affect compiler behavior + for var in $variables_saved_for_relink; do + if eval test -z \"\${$var+set}\"; then + relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" + elif eval var_value=\$$var; test -z "$var_value"; then + relink_command="$var=; export $var; $relink_command" + else + func_quote_for_eval "$var_value" + relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" + fi + done + relink_command="(cd `pwd`; $relink_command)" + relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` + fi + + # Only actually do things if not in dry run mode. + $opt_dry_run || { + # win32 will think the script is a binary if it has + # a .exe suffix, so we strip it off here. + case $output in + *.exe) func_stripname '' '.exe' "$output" + output=$func_stripname_result ;; + esac + # test for cygwin because mv fails w/o .exe extensions + case $host in + *cygwin*) + exeext=.exe + func_stripname '' '.exe' "$outputname" + outputname=$func_stripname_result ;; + *) exeext= ;; + esac + case $host in + *cygwin* | *mingw* ) + func_dirname_and_basename "$output" "" "." + output_name=$func_basename_result + output_path=$func_dirname_result + cwrappersource="$output_path/$objdir/lt-$output_name.c" + cwrapper="$output_path/$output_name.exe" + $RM $cwrappersource $cwrapper + trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 + + func_emit_cwrapperexe_src > $cwrappersource + + # The wrapper executable is built using the $host compiler, + # because it contains $host paths and files. If cross- + # compiling, it, like the target executable, must be + # executed on the $host or under an emulation environment. + $opt_dry_run || { + $LTCC $LTCFLAGS -o $cwrapper $cwrappersource + $STRIP $cwrapper + } + + # Now, create the wrapper script for func_source use: + func_ltwrapper_scriptname $cwrapper + $RM $func_ltwrapper_scriptname_result + trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15 + $opt_dry_run || { + # note: this script will not be executed, so do not chmod. + if test "x$build" = "x$host" ; then + $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result + else + func_emit_wrapper no > $func_ltwrapper_scriptname_result + fi + } + ;; + * ) + $RM $output + trap "$RM $output; exit $EXIT_FAILURE" 1 2 15 + + func_emit_wrapper no > $output + chmod +x $output + ;; + esac + } + exit $EXIT_SUCCESS + ;; + esac + + # See if we need to build an old-fashioned archive. + for oldlib in $oldlibs; do + + if test "$build_libtool_libs" = convenience; then + oldobjs="$libobjs_save $symfileobj" + addlibs="$convenience" + build_libtool_libs=no + else + if test "$build_libtool_libs" = module; then + oldobjs="$libobjs_save" + build_libtool_libs=no + else + oldobjs="$old_deplibs $non_pic_objects" + if test "$preload" = yes && test -f "$symfileobj"; then + oldobjs+=" $symfileobj" + fi + fi + addlibs="$old_convenience" + fi + + if test -n "$addlibs"; then + gentop="$output_objdir/${outputname}x" + generated+=" $gentop" + + func_extract_archives $gentop $addlibs + oldobjs+=" $func_extract_archives_result" + fi + + # Do each command in the archive commands. + if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then + cmds=$old_archive_from_new_cmds + else + + # Add any objects from preloaded convenience libraries + if test -n "$dlprefiles"; then + gentop="$output_objdir/${outputname}x" + generated+=" $gentop" + + func_extract_archives $gentop $dlprefiles + oldobjs+=" $func_extract_archives_result" + fi + + # POSIX demands no paths to be encoded in archives. We have + # to avoid creating archives with duplicate basenames if we + # might have to extract them afterwards, e.g., when creating a + # static archive out of a convenience library, or when linking + # the entirety of a libtool archive into another (currently + # not supported by libtool). + if (for obj in $oldobjs + do + func_basename "$obj" + $ECHO "$func_basename_result" + done | sort | sort -uc >/dev/null 2>&1); then + : + else + echo "copying selected object files to avoid basename conflicts..." + gentop="$output_objdir/${outputname}x" + generated+=" $gentop" + func_mkdir_p "$gentop" + save_oldobjs=$oldobjs + oldobjs= + counter=1 + for obj in $save_oldobjs + do + func_basename "$obj" + objbase="$func_basename_result" + case " $oldobjs " in + " ") oldobjs=$obj ;; + *[\ /]"$objbase "*) + while :; do + # Make sure we don't pick an alternate name that also + # overlaps. + newobj=lt$counter-$objbase + func_arith $counter + 1 + counter=$func_arith_result + case " $oldobjs " in + *[\ /]"$newobj "*) ;; + *) if test ! -f "$gentop/$newobj"; then break; fi ;; + esac + done + func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" + oldobjs+=" $gentop/$newobj" + ;; + *) oldobjs+=" $obj" ;; + esac + done + fi + func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 + tool_oldlib=$func_to_tool_file_result + eval cmds=\"$old_archive_cmds\" + + func_len " $cmds" + len=$func_len_result + if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then + cmds=$old_archive_cmds + elif test -n "$archiver_list_spec"; then + func_verbose "using command file archive linking..." + for obj in $oldobjs + do + func_to_tool_file "$obj" + $ECHO "$func_to_tool_file_result" + done > $output_objdir/$libname.libcmd + func_to_tool_file "$output_objdir/$libname.libcmd" + oldobjs=" $archiver_list_spec$func_to_tool_file_result" + cmds=$old_archive_cmds + else + # the command line is too long to link in one step, link in parts + func_verbose "using piecewise archive linking..." + save_RANLIB=$RANLIB + RANLIB=: + objlist= + concat_cmds= + save_oldobjs=$oldobjs + oldobjs= + # Is there a better way of finding the last object in the list? + for obj in $save_oldobjs + do + last_oldobj=$obj + done + eval test_cmds=\"$old_archive_cmds\" + func_len " $test_cmds" + len0=$func_len_result + len=$len0 + for obj in $save_oldobjs + do + func_len " $obj" + func_arith $len + $func_len_result + len=$func_arith_result + objlist+=" $obj" + if test "$len" -lt "$max_cmd_len"; then + : + else + # the above command should be used before it gets too long + oldobjs=$objlist + if test "$obj" = "$last_oldobj" ; then + RANLIB=$save_RANLIB + fi + test -z "$concat_cmds" || concat_cmds=$concat_cmds~ + eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" + objlist= + len=$len0 + fi + done + RANLIB=$save_RANLIB + oldobjs=$objlist + if test "X$oldobjs" = "X" ; then + eval cmds=\"\$concat_cmds\" + else + eval cmds=\"\$concat_cmds~\$old_archive_cmds\" + fi + fi + fi + func_execute_cmds "$cmds" 'exit $?' + done + + test -n "$generated" && \ + func_show_eval "${RM}r$generated" + + # Now create the libtool archive. + case $output in + *.la) + old_library= + test "$build_old_libs" = yes && old_library="$libname.$libext" + func_verbose "creating $output" + + # Preserve any variables that may affect compiler behavior + for var in $variables_saved_for_relink; do + if eval test -z \"\${$var+set}\"; then + relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" + elif eval var_value=\$$var; test -z "$var_value"; then + relink_command="$var=; export $var; $relink_command" + else + func_quote_for_eval "$var_value" + relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" + fi + done + # Quote the link command for shipping. + relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" + relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` + if test "$hardcode_automatic" = yes ; then + relink_command= + fi + + # Only create the output if not a dry run. + $opt_dry_run || { + for installed in no yes; do + if test "$installed" = yes; then + if test -z "$install_libdir"; then + break + fi + output="$output_objdir/$outputname"i + # Replace all uninstalled libtool libraries with the installed ones + newdependency_libs= + for deplib in $dependency_libs; do + case $deplib in + *.la) + func_basename "$deplib" + name="$func_basename_result" + func_resolve_sysroot "$deplib" + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result` + test -z "$libdir" && \ + func_fatal_error "\`$deplib' is not a valid libtool archive" + newdependency_libs+=" ${lt_sysroot:+=}$libdir/$name" + ;; + -L*) + func_stripname -L '' "$deplib" + func_replace_sysroot "$func_stripname_result" + newdependency_libs+=" -L$func_replace_sysroot_result" + ;; + -R*) + func_stripname -R '' "$deplib" + func_replace_sysroot "$func_stripname_result" + newdependency_libs+=" -R$func_replace_sysroot_result" + ;; + *) newdependency_libs+=" $deplib" ;; + esac + done + dependency_libs="$newdependency_libs" + newdlfiles= + + for lib in $dlfiles; do + case $lib in + *.la) + func_basename "$lib" + name="$func_basename_result" + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` + test -z "$libdir" && \ + func_fatal_error "\`$lib' is not a valid libtool archive" + newdlfiles+=" ${lt_sysroot:+=}$libdir/$name" + ;; + *) newdlfiles+=" $lib" ;; + esac + done + dlfiles="$newdlfiles" + newdlprefiles= + for lib in $dlprefiles; do + case $lib in + *.la) + # Only pass preopened files to the pseudo-archive (for + # eventual linking with the app. that links it) if we + # didn't already link the preopened objects directly into + # the library: + func_basename "$lib" + name="$func_basename_result" + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` + test -z "$libdir" && \ + func_fatal_error "\`$lib' is not a valid libtool archive" + newdlprefiles+=" ${lt_sysroot:+=}$libdir/$name" + ;; + esac + done + dlprefiles="$newdlprefiles" + else + newdlfiles= + for lib in $dlfiles; do + case $lib in + [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; + *) abs=`pwd`"/$lib" ;; + esac + newdlfiles+=" $abs" + done + dlfiles="$newdlfiles" + newdlprefiles= + for lib in $dlprefiles; do + case $lib in + [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; + *) abs=`pwd`"/$lib" ;; + esac + newdlprefiles+=" $abs" + done + dlprefiles="$newdlprefiles" + fi + $RM $output + # place dlname in correct position for cygwin + # In fact, it would be nice if we could use this code for all target + # systems that can't hard-code library paths into their executables + # and that have no shared library path variable independent of PATH, + # but it turns out we can't easily determine that from inspecting + # libtool variables, so we have to hard-code the OSs to which it + # applies here; at the moment, that means platforms that use the PE + # object format with DLL files. See the long comment at the top of + # tests/bindir.at for full details. + tdlname=$dlname + case $host,$output,$installed,$module,$dlname in + *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) + # If a -bindir argument was supplied, place the dll there. + if test "x$bindir" != x ; + then + func_relative_path "$install_libdir" "$bindir" + tdlname=$func_relative_path_result$dlname + else + # Otherwise fall back on heuristic. + tdlname=../bin/$dlname + fi + ;; + esac + $ECHO > $output "\ +# $outputname - a libtool library file +# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='$tdlname' + +# Names of this library. +library_names='$library_names' + +# The name of the static archive. +old_library='$old_library' + +# Linker flags that can not go in dependency_libs. +inherited_linker_flags='$new_inherited_linker_flags' + +# Libraries that this one depends upon. +dependency_libs='$dependency_libs' + +# Names of additional weak libraries provided by this library +weak_library_names='$weak_libs' + +# Version information for $libname. +current=$current +age=$age +revision=$revision + +# Is this an already installed library? +installed=$installed + +# Should we warn about portability when linking against -modules? +shouldnotlink=$module + +# Files to dlopen/dlpreopen +dlopen='$dlfiles' +dlpreopen='$dlprefiles' + +# Directory that this library needs to be installed in: +libdir='$install_libdir'" + if test "$installed" = no && test "$need_relink" = yes; then + $ECHO >> $output "\ +relink_command=\"$relink_command\"" + fi + done + } + + # Do a symbolic link so that the libtool archive can be found in + # LD_LIBRARY_PATH before the program is installed. + func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?' + ;; + esac + exit $EXIT_SUCCESS +} + +{ test "$opt_mode" = link || test "$opt_mode" = relink; } && + func_mode_link ${1+"$@"} + + +# func_mode_uninstall arg... +func_mode_uninstall () +{ + $opt_debug + RM="$nonopt" + files= + rmforce= + exit_status=0 + + # This variable tells wrapper scripts just to set variables rather + # than running their programs. + libtool_install_magic="$magic" + + for arg + do + case $arg in + -f) RM+=" $arg"; rmforce=yes ;; + -*) RM+=" $arg" ;; + *) files+=" $arg" ;; + esac + done + + test -z "$RM" && \ + func_fatal_help "you must specify an RM program" + + rmdirs= + + for file in $files; do + func_dirname "$file" "" "." + dir="$func_dirname_result" + if test "X$dir" = X.; then + odir="$objdir" + else + odir="$dir/$objdir" + fi + func_basename "$file" + name="$func_basename_result" + test "$opt_mode" = uninstall && odir="$dir" + + # Remember odir for removal later, being careful to avoid duplicates + if test "$opt_mode" = clean; then + case " $rmdirs " in + *" $odir "*) ;; + *) rmdirs+=" $odir" ;; + esac + fi + + # Don't error if the file doesn't exist and rm -f was used. + if { test -L "$file"; } >/dev/null 2>&1 || + { test -h "$file"; } >/dev/null 2>&1 || + test -f "$file"; then + : + elif test -d "$file"; then + exit_status=1 + continue + elif test "$rmforce" = yes; then + continue + fi + + rmfiles="$file" + + case $name in + *.la) + # Possibly a libtool archive, so verify it. + if func_lalib_p "$file"; then + func_source $dir/$name + + # Delete the libtool libraries and symlinks. + for n in $library_names; do + rmfiles+=" $odir/$n" + done + test -n "$old_library" && rmfiles+=" $odir/$old_library" + + case "$opt_mode" in + clean) + case " $library_names " in + *" $dlname "*) ;; + *) test -n "$dlname" && rmfiles+=" $odir/$dlname" ;; + esac + test -n "$libdir" && rmfiles+=" $odir/$name $odir/${name}i" + ;; + uninstall) + if test -n "$library_names"; then + # Do each command in the postuninstall commands. + func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' + fi + + if test -n "$old_library"; then + # Do each command in the old_postuninstall commands. + func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' + fi + # FIXME: should reinstall the best remaining shared library. + ;; + esac + fi + ;; + + *.lo) + # Possibly a libtool object, so verify it. + if func_lalib_p "$file"; then + + # Read the .lo file + func_source $dir/$name + + # Add PIC object to the list of files to remove. + if test -n "$pic_object" && + test "$pic_object" != none; then + rmfiles+=" $dir/$pic_object" + fi + + # Add non-PIC object to the list of files to remove. + if test -n "$non_pic_object" && + test "$non_pic_object" != none; then + rmfiles+=" $dir/$non_pic_object" + fi + fi + ;; + + *) + if test "$opt_mode" = clean ; then + noexename=$name + case $file in + *.exe) + func_stripname '' '.exe' "$file" + file=$func_stripname_result + func_stripname '' '.exe' "$name" + noexename=$func_stripname_result + # $file with .exe has already been added to rmfiles, + # add $file without .exe + rmfiles+=" $file" + ;; + esac + # Do a test to see if this is a libtool program. + if func_ltwrapper_p "$file"; then + if func_ltwrapper_executable_p "$file"; then + func_ltwrapper_scriptname "$file" + relink_command= + func_source $func_ltwrapper_scriptname_result + rmfiles+=" $func_ltwrapper_scriptname_result" + else + relink_command= + func_source $dir/$noexename + fi + + # note $name still contains .exe if it was in $file originally + # as does the version of $file that was added into $rmfiles + rmfiles+=" $odir/$name $odir/${name}S.${objext}" + if test "$fast_install" = yes && test -n "$relink_command"; then + rmfiles+=" $odir/lt-$name" + fi + if test "X$noexename" != "X$name" ; then + rmfiles+=" $odir/lt-${noexename}.c" + fi + fi + fi + ;; + esac + func_show_eval "$RM $rmfiles" 'exit_status=1' + done + + # Try to remove the ${objdir}s in the directories where we deleted files + for dir in $rmdirs; do + if test -d "$dir"; then + func_show_eval "rmdir $dir >/dev/null 2>&1" + fi + done + + exit $exit_status +} + +{ test "$opt_mode" = uninstall || test "$opt_mode" = clean; } && + func_mode_uninstall ${1+"$@"} + +test -z "$opt_mode" && { + help="$generic_help" + func_fatal_help "you must specify a MODE" +} + +test -z "$exec_cmd" && \ + func_fatal_help "invalid operation mode \`$opt_mode'" + +if test -n "$exec_cmd"; then + eval exec "$exec_cmd" + exit $EXIT_FAILURE +fi + +exit $exit_status + + +# The TAGs below are defined such that we never get into a situation +# in which we disable both kinds of libraries. Given conflicting +# choices, we go for a static library, that is the most portable, +# since we can't tell whether shared libraries were disabled because +# the user asked for that or because the platform doesn't support +# them. This is particularly important on AIX, because we don't +# support having both static and shared libraries enabled at the same +# time on that platform, so we default to a shared-only configuration. +# If a disable-shared tag is given, we'll fallback to a static-only +# configuration. But we'll never go from static-only to shared-only. + +# ### BEGIN LIBTOOL TAG CONFIG: disable-shared +build_libtool_libs=no +build_old_libs=yes +# ### END LIBTOOL TAG CONFIG: disable-shared + +# ### BEGIN LIBTOOL TAG CONFIG: disable-static +build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` +# ### END LIBTOOL TAG CONFIG: disable-static + +# Local Variables: +# mode:shell-script +# sh-indentation:2 +# End: +# vi:sw=2 + diff --git a/gsl-2.5/linalg/.deps/balance.Plo b/gsl-2.5/linalg/.deps/balance.Plo new file mode 100644 index 00000000..d29cd0e1 --- /dev/null +++ b/gsl-2.5/linalg/.deps/balance.Plo @@ -0,0 +1,302 @@ +balance.lo: balance.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_blas.h ../gsl/gsl_blas_types.h \ + ../gsl/gsl_cblas.h ../gsl/gsl_linalg.h ../gsl/gsl_mode.h \ + ../gsl/gsl_permutation.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_blas.h: + +../gsl/gsl_blas_types.h: + +../gsl/gsl_cblas.h: + +../gsl/gsl_linalg.h: + +../gsl/gsl_mode.h: + +../gsl/gsl_permutation.h: diff --git a/gsl-2.5/linalg/.deps/balancemat.Plo b/gsl-2.5/linalg/.deps/balancemat.Plo new file mode 100644 index 00000000..92c4e4ed --- /dev/null +++ b/gsl-2.5/linalg/.deps/balancemat.Plo @@ -0,0 +1,302 @@ +balancemat.lo: balancemat.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_blas.h ../gsl/gsl_blas_types.h \ + ../gsl/gsl_cblas.h ../gsl/gsl_linalg.h ../gsl/gsl_mode.h \ + ../gsl/gsl_permutation.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_blas.h: + +../gsl/gsl_blas_types.h: + +../gsl/gsl_cblas.h: + +../gsl/gsl_linalg.h: + +../gsl/gsl_mode.h: + +../gsl/gsl_permutation.h: diff --git a/gsl-2.5/linalg/.deps/bidiag.Plo b/gsl-2.5/linalg/.deps/bidiag.Plo new file mode 100644 index 00000000..93694ac3 --- /dev/null +++ b/gsl-2.5/linalg/.deps/bidiag.Plo @@ -0,0 +1,302 @@ +bidiag.lo: bidiag.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_blas.h ../gsl/gsl_blas_types.h \ + ../gsl/gsl_cblas.h ../gsl/gsl_linalg.h ../gsl/gsl_mode.h \ + ../gsl/gsl_permutation.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_blas.h: + +../gsl/gsl_blas_types.h: + +../gsl/gsl_cblas.h: + +../gsl/gsl_linalg.h: + +../gsl/gsl_mode.h: + +../gsl/gsl_permutation.h: diff --git a/gsl-2.5/linalg/.deps/cholesky.Plo b/gsl-2.5/linalg/.deps/cholesky.Plo new file mode 100644 index 00000000..d210bb54 --- /dev/null +++ b/gsl-2.5/linalg/.deps/cholesky.Plo @@ -0,0 +1,302 @@ +cholesky.lo: cholesky.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_math.h /usr/include/math.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_vector.h ../gsl/gsl_vector_complex_long_double.h \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/byteswap.h \ + /usr/include/bits/byteswap-16.h /usr/include/sys/types.h \ + /usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib-float.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_blas.h ../gsl/gsl_blas_types.h \ + ../gsl/gsl_cblas.h ../gsl/gsl_linalg.h ../gsl/gsl_mode.h \ + ../gsl/gsl_permutation.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_blas.h: + +../gsl/gsl_blas_types.h: + +../gsl/gsl_cblas.h: + +../gsl/gsl_linalg.h: + +../gsl/gsl_mode.h: + +../gsl/gsl_permutation.h: diff --git a/gsl-2.5/linalg/.deps/choleskyc.Plo b/gsl-2.5/linalg/.deps/choleskyc.Plo new file mode 100644 index 00000000..48d8dd47 --- /dev/null +++ b/gsl-2.5/linalg/.deps/choleskyc.Plo @@ -0,0 +1,303 @@ +choleskyc.lo: choleskyc.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_matrix.h ../gsl/gsl_matrix_complex_long_double.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_types.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_vector_long_double.h \ + ../gsl/gsl_inline.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_vector_complex_double.h \ + ../gsl/gsl_vector_double.h ../gsl/gsl_block_double.h \ + ../gsl/gsl_block_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_vector_long.h \ + ../gsl/gsl_block_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_matrix_int.h \ + ../gsl/gsl_vector_int.h ../gsl/gsl_block_int.h \ + ../gsl/gsl_matrix_ushort.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_matrix_short.h \ + ../gsl/gsl_vector_short.h ../gsl/gsl_block_short.h \ + ../gsl/gsl_matrix_uchar.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_matrix_char.h \ + ../gsl/gsl_vector_char.h ../gsl/gsl_block_char.h ../gsl/gsl_vector.h \ + ../gsl/gsl_linalg.h ../gsl/gsl_mode.h ../gsl/gsl_permutation.h \ + ../gsl/gsl_math.h /usr/include/math.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_nan.h ../gsl/gsl_pow_int.h \ + ../gsl/gsl_minmax.h ../gsl/gsl_blas.h ../gsl/gsl_blas_types.h \ + ../gsl/gsl_cblas.h ../gsl/gsl_complex_math.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_types.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_linalg.h: + +../gsl/gsl_mode.h: + +../gsl/gsl_permutation.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_blas.h: + +../gsl/gsl_blas_types.h: + +../gsl/gsl_cblas.h: + +../gsl/gsl_complex_math.h: diff --git a/gsl-2.5/linalg/.deps/cod.Plo b/gsl-2.5/linalg/.deps/cod.Plo new file mode 100644 index 00000000..1907feb4 --- /dev/null +++ b/gsl-2.5/linalg/.deps/cod.Plo @@ -0,0 +1,351 @@ +cod.lo: cod.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/string.h \ + /usr/include/xlocale.h /usr/include/bits/string.h \ + /usr/include/bits/string2.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_permute_vector.h \ + ../gsl/gsl_permute_vector_complex_long_double.h ../gsl/gsl_permutation.h \ + ../gsl/gsl_permute_vector_complex_double.h \ + ../gsl/gsl_permute_vector_complex_float.h \ + ../gsl/gsl_permute_vector_long_double.h \ + ../gsl/gsl_permute_vector_double.h ../gsl/gsl_permute_vector_float.h \ + ../gsl/gsl_permute_vector_ulong.h ../gsl/gsl_permute_vector_long.h \ + ../gsl/gsl_permute_vector_uint.h ../gsl/gsl_permute_vector_int.h \ + ../gsl/gsl_permute_vector_ushort.h ../gsl/gsl_permute_vector_short.h \ + ../gsl/gsl_permute_vector_uchar.h ../gsl/gsl_permute_vector_char.h \ + ../gsl/gsl_blas.h ../gsl/gsl_blas_types.h ../gsl/gsl_cblas.h \ + ../gsl/gsl_linalg.h ../gsl/gsl_mode.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string.h: + +/usr/include/bits/string2.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_permute_vector.h: + +../gsl/gsl_permute_vector_complex_long_double.h: + +../gsl/gsl_permutation.h: + +../gsl/gsl_permute_vector_complex_double.h: + +../gsl/gsl_permute_vector_complex_float.h: + +../gsl/gsl_permute_vector_long_double.h: + +../gsl/gsl_permute_vector_double.h: + +../gsl/gsl_permute_vector_float.h: + +../gsl/gsl_permute_vector_ulong.h: + +../gsl/gsl_permute_vector_long.h: + +../gsl/gsl_permute_vector_uint.h: + +../gsl/gsl_permute_vector_int.h: + +../gsl/gsl_permute_vector_ushort.h: + +../gsl/gsl_permute_vector_short.h: + +../gsl/gsl_permute_vector_uchar.h: + +../gsl/gsl_permute_vector_char.h: + +../gsl/gsl_blas.h: + +../gsl/gsl_blas_types.h: + +../gsl/gsl_cblas.h: + +../gsl/gsl_linalg.h: + +../gsl/gsl_mode.h: diff --git a/gsl-2.5/linalg/.deps/condest.Plo b/gsl-2.5/linalg/.deps/condest.Plo new file mode 100644 index 00000000..375ebbd6 --- /dev/null +++ b/gsl-2.5/linalg/.deps/condest.Plo @@ -0,0 +1,312 @@ +condest.lo: condest.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/string.h \ + /usr/include/xlocale.h /usr/include/bits/string.h \ + /usr/include/bits/string2.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_blas.h ../gsl/gsl_blas_types.h \ + ../gsl/gsl_cblas.h ../gsl/gsl_linalg.h ../gsl/gsl_mode.h \ + ../gsl/gsl_permutation.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string.h: + +/usr/include/bits/string2.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_blas.h: + +../gsl/gsl_blas_types.h: + +../gsl/gsl_cblas.h: + +../gsl/gsl_linalg.h: + +../gsl/gsl_mode.h: + +../gsl/gsl_permutation.h: diff --git a/gsl-2.5/linalg/.deps/exponential.Plo b/gsl-2.5/linalg/.deps/exponential.Plo new file mode 100644 index 00000000..501d8988 --- /dev/null +++ b/gsl-2.5/linalg/.deps/exponential.Plo @@ -0,0 +1,302 @@ +exponential.lo: exponential.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_mode.h \ + ../gsl/gsl_errno.h /usr/include/stdio.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_blas.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_complex.h \ + ../gsl/gsl_check_range.h ../gsl/gsl_vector_long_double.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_vector_complex.h \ + ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_blas_types.h ../gsl/gsl_cblas.h \ + gsl_linalg.h ../gsl/gsl_permutation.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_mode.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_blas.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_blas_types.h: + +../gsl/gsl_cblas.h: + +gsl_linalg.h: + +../gsl/gsl_permutation.h: diff --git a/gsl-2.5/linalg/.deps/hermtd.Plo b/gsl-2.5/linalg/.deps/hermtd.Plo new file mode 100644 index 00000000..2edddfed --- /dev/null +++ b/gsl-2.5/linalg/.deps/hermtd.Plo @@ -0,0 +1,304 @@ +hermtd.lo: hermtd.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_blas.h ../gsl/gsl_blas_types.h \ + ../gsl/gsl_cblas.h ../gsl/gsl_complex_math.h ../gsl/gsl_linalg.h \ + ../gsl/gsl_mode.h ../gsl/gsl_permutation.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_blas.h: + +../gsl/gsl_blas_types.h: + +../gsl/gsl_cblas.h: + +../gsl/gsl_complex_math.h: + +../gsl/gsl_linalg.h: + +../gsl/gsl_mode.h: + +../gsl/gsl_permutation.h: diff --git a/gsl-2.5/linalg/.deps/hessenberg.Plo b/gsl-2.5/linalg/.deps/hessenberg.Plo new file mode 100644 index 00000000..84e80dbb --- /dev/null +++ b/gsl-2.5/linalg/.deps/hessenberg.Plo @@ -0,0 +1,302 @@ +hessenberg.lo: hessenberg.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_linalg.h /usr/include/stdlib.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_mode.h ../gsl/gsl_inline.h \ + ../gsl/gsl_permutation.h ../gsl/gsl_types.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_check_range.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_complex.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_nan.h ../gsl/gsl_pow_int.h \ + ../gsl/gsl_minmax.h ../gsl/gsl_blas.h ../gsl/gsl_blas_types.h \ + ../gsl/gsl_cblas.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_linalg.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_mode.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_permutation.h: + +../gsl/gsl_types.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_blas.h: + +../gsl/gsl_blas_types.h: + +../gsl/gsl_cblas.h: diff --git a/gsl-2.5/linalg/.deps/hesstri.Plo b/gsl-2.5/linalg/.deps/hesstri.Plo new file mode 100644 index 00000000..3f28d0c5 --- /dev/null +++ b/gsl-2.5/linalg/.deps/hesstri.Plo @@ -0,0 +1,303 @@ +hesstri.lo: hesstri.c /usr/include/stdc-predef.h /usr/include/stdlib.h \ + /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h ../config.h \ + ../gsl/gsl_linalg.h ../gsl/gsl_mode.h ../gsl/gsl_inline.h \ + ../gsl/gsl_permutation.h ../gsl/gsl_types.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_check_range.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_complex.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_math.h ../gsl/gsl_sys.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_nan.h ../gsl/gsl_pow_int.h \ + ../gsl/gsl_minmax.h ../gsl/gsl_blas.h ../gsl/gsl_blas_types.h \ + ../gsl/gsl_cblas.h + +/usr/include/stdc-predef.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../config.h: + +../gsl/gsl_linalg.h: + +../gsl/gsl_mode.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_permutation.h: + +../gsl/gsl_types.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_blas.h: + +../gsl/gsl_blas_types.h: + +../gsl/gsl_cblas.h: diff --git a/gsl-2.5/linalg/.deps/hh.Plo b/gsl-2.5/linalg/.deps/hh.Plo new file mode 100644 index 00000000..d991bf73 --- /dev/null +++ b/gsl-2.5/linalg/.deps/hh.Plo @@ -0,0 +1,302 @@ +hh.lo: hh.c /usr/include/stdc-predef.h ../config.h /usr/include/stdlib.h \ + /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_linalg.h ../gsl/gsl_mode.h \ + ../gsl/gsl_permutation.h ../gsl/gsl_blas.h ../gsl/gsl_blas_types.h \ + ../gsl/gsl_cblas.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_linalg.h: + +../gsl/gsl_mode.h: + +../gsl/gsl_permutation.h: + +../gsl/gsl_blas.h: + +../gsl/gsl_blas_types.h: + +../gsl/gsl_cblas.h: diff --git a/gsl-2.5/linalg/.deps/householder.Plo b/gsl-2.5/linalg/.deps/householder.Plo new file mode 100644 index 00000000..ff7b9fdd --- /dev/null +++ b/gsl-2.5/linalg/.deps/householder.Plo @@ -0,0 +1,302 @@ +householder.lo: householder.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_blas.h ../gsl/gsl_blas_types.h \ + ../gsl/gsl_cblas.h ../gsl/gsl_linalg.h ../gsl/gsl_mode.h \ + ../gsl/gsl_permutation.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_blas.h: + +../gsl/gsl_blas_types.h: + +../gsl/gsl_cblas.h: + +../gsl/gsl_linalg.h: + +../gsl/gsl_mode.h: + +../gsl/gsl_permutation.h: diff --git a/gsl-2.5/linalg/.deps/householdercomplex.Plo b/gsl-2.5/linalg/.deps/householdercomplex.Plo new file mode 100644 index 00000000..890c4371 --- /dev/null +++ b/gsl-2.5/linalg/.deps/householdercomplex.Plo @@ -0,0 +1,304 @@ +householdercomplex.lo: householdercomplex.c /usr/include/stdc-predef.h \ + ../config.h /usr/include/stdlib.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_blas.h ../gsl/gsl_blas_types.h \ + ../gsl/gsl_cblas.h ../gsl/gsl_complex_math.h ../gsl/gsl_linalg.h \ + ../gsl/gsl_mode.h ../gsl/gsl_permutation.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_blas.h: + +../gsl/gsl_blas_types.h: + +../gsl/gsl_cblas.h: + +../gsl/gsl_complex_math.h: + +../gsl/gsl_linalg.h: + +../gsl/gsl_mode.h: + +../gsl/gsl_permutation.h: diff --git a/gsl-2.5/linalg/.deps/inline.Plo b/gsl-2.5/linalg/.deps/inline.Plo new file mode 100644 index 00000000..8df99168 --- /dev/null +++ b/gsl-2.5/linalg/.deps/inline.Plo @@ -0,0 +1,304 @@ +inline.lo: inline.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_math.h /usr/include/math.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_mode.h \ + ../gsl/gsl_vector.h ../gsl/gsl_vector_complex_long_double.h \ + /usr/include/stdlib.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_errno.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_permutation.h ../build.h \ + ../gsl/gsl_linalg.h ../gsl/gsl_blas.h ../gsl/gsl_blas_types.h \ + ../gsl/gsl_cblas.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_mode.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +/usr/include/stdlib.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_permutation.h: + +../build.h: + +../gsl/gsl_linalg.h: + +../gsl/gsl_blas.h: + +../gsl/gsl_blas_types.h: + +../gsl/gsl_cblas.h: diff --git a/gsl-2.5/linalg/.deps/invtri.Plo b/gsl-2.5/linalg/.deps/invtri.Plo new file mode 100644 index 00000000..10d46383 --- /dev/null +++ b/gsl-2.5/linalg/.deps/invtri.Plo @@ -0,0 +1,302 @@ +invtri.lo: invtri.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_math.h /usr/include/math.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_vector.h ../gsl/gsl_vector_complex_long_double.h \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/byteswap.h \ + /usr/include/bits/byteswap-16.h /usr/include/sys/types.h \ + /usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib-float.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_blas.h ../gsl/gsl_blas_types.h \ + ../gsl/gsl_cblas.h ../gsl/gsl_linalg.h ../gsl/gsl_mode.h \ + ../gsl/gsl_permutation.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_blas.h: + +../gsl/gsl_blas_types.h: + +../gsl/gsl_cblas.h: + +../gsl/gsl_linalg.h: + +../gsl/gsl_mode.h: + +../gsl/gsl_permutation.h: diff --git a/gsl-2.5/linalg/.deps/lq.Plo b/gsl-2.5/linalg/.deps/lq.Plo new file mode 100644 index 00000000..3cbf255b --- /dev/null +++ b/gsl-2.5/linalg/.deps/lq.Plo @@ -0,0 +1,314 @@ +lq.lo: lq.c /usr/include/stdc-predef.h ../config.h /usr/include/stdlib.h \ + /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/string.h \ + /usr/include/xlocale.h /usr/include/bits/string.h \ + /usr/include/bits/string2.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_blas.h ../gsl/gsl_blas_types.h \ + ../gsl/gsl_cblas.h ../gsl/gsl_linalg.h ../gsl/gsl_mode.h \ + ../gsl/gsl_permutation.h apply_givens.c + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string.h: + +/usr/include/bits/string2.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_blas.h: + +../gsl/gsl_blas_types.h: + +../gsl/gsl_cblas.h: + +../gsl/gsl_linalg.h: + +../gsl/gsl_mode.h: + +../gsl/gsl_permutation.h: + +apply_givens.c: diff --git a/gsl-2.5/linalg/.deps/lu.Plo b/gsl-2.5/linalg/.deps/lu.Plo new file mode 100644 index 00000000..12711b0f --- /dev/null +++ b/gsl-2.5/linalg/.deps/lu.Plo @@ -0,0 +1,351 @@ +lu.lo: lu.c /usr/include/stdc-predef.h ../config.h /usr/include/stdlib.h \ + /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/string.h \ + /usr/include/xlocale.h /usr/include/bits/string.h \ + /usr/include/bits/string2.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_permute_vector.h \ + ../gsl/gsl_permute_vector_complex_long_double.h ../gsl/gsl_permutation.h \ + ../gsl/gsl_permute_vector_complex_double.h \ + ../gsl/gsl_permute_vector_complex_float.h \ + ../gsl/gsl_permute_vector_long_double.h \ + ../gsl/gsl_permute_vector_double.h ../gsl/gsl_permute_vector_float.h \ + ../gsl/gsl_permute_vector_ulong.h ../gsl/gsl_permute_vector_long.h \ + ../gsl/gsl_permute_vector_uint.h ../gsl/gsl_permute_vector_int.h \ + ../gsl/gsl_permute_vector_ushort.h ../gsl/gsl_permute_vector_short.h \ + ../gsl/gsl_permute_vector_uchar.h ../gsl/gsl_permute_vector_char.h \ + ../gsl/gsl_blas.h ../gsl/gsl_blas_types.h ../gsl/gsl_cblas.h \ + ../gsl/gsl_linalg.h ../gsl/gsl_mode.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string.h: + +/usr/include/bits/string2.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_permute_vector.h: + +../gsl/gsl_permute_vector_complex_long_double.h: + +../gsl/gsl_permutation.h: + +../gsl/gsl_permute_vector_complex_double.h: + +../gsl/gsl_permute_vector_complex_float.h: + +../gsl/gsl_permute_vector_long_double.h: + +../gsl/gsl_permute_vector_double.h: + +../gsl/gsl_permute_vector_float.h: + +../gsl/gsl_permute_vector_ulong.h: + +../gsl/gsl_permute_vector_long.h: + +../gsl/gsl_permute_vector_uint.h: + +../gsl/gsl_permute_vector_int.h: + +../gsl/gsl_permute_vector_ushort.h: + +../gsl/gsl_permute_vector_short.h: + +../gsl/gsl_permute_vector_uchar.h: + +../gsl/gsl_permute_vector_char.h: + +../gsl/gsl_blas.h: + +../gsl/gsl_blas_types.h: + +../gsl/gsl_cblas.h: + +../gsl/gsl_linalg.h: + +../gsl/gsl_mode.h: diff --git a/gsl-2.5/linalg/.deps/luc.Plo b/gsl-2.5/linalg/.deps/luc.Plo new file mode 100644 index 00000000..274cb90c --- /dev/null +++ b/gsl-2.5/linalg/.deps/luc.Plo @@ -0,0 +1,354 @@ +luc.lo: luc.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/string.h \ + /usr/include/xlocale.h /usr/include/bits/string.h \ + /usr/include/bits/string2.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_complex_math.h \ + ../gsl/gsl_permute_vector.h \ + ../gsl/gsl_permute_vector_complex_long_double.h ../gsl/gsl_permutation.h \ + ../gsl/gsl_permute_vector_complex_double.h \ + ../gsl/gsl_permute_vector_complex_float.h \ + ../gsl/gsl_permute_vector_long_double.h \ + ../gsl/gsl_permute_vector_double.h ../gsl/gsl_permute_vector_float.h \ + ../gsl/gsl_permute_vector_ulong.h ../gsl/gsl_permute_vector_long.h \ + ../gsl/gsl_permute_vector_uint.h ../gsl/gsl_permute_vector_int.h \ + ../gsl/gsl_permute_vector_ushort.h ../gsl/gsl_permute_vector_short.h \ + ../gsl/gsl_permute_vector_uchar.h ../gsl/gsl_permute_vector_char.h \ + ../gsl/gsl_blas.h ../gsl/gsl_blas_types.h ../gsl/gsl_cblas.h \ + ../gsl/gsl_linalg.h ../gsl/gsl_mode.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string.h: + +/usr/include/bits/string2.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_complex_math.h: + +../gsl/gsl_permute_vector.h: + +../gsl/gsl_permute_vector_complex_long_double.h: + +../gsl/gsl_permutation.h: + +../gsl/gsl_permute_vector_complex_double.h: + +../gsl/gsl_permute_vector_complex_float.h: + +../gsl/gsl_permute_vector_long_double.h: + +../gsl/gsl_permute_vector_double.h: + +../gsl/gsl_permute_vector_float.h: + +../gsl/gsl_permute_vector_ulong.h: + +../gsl/gsl_permute_vector_long.h: + +../gsl/gsl_permute_vector_uint.h: + +../gsl/gsl_permute_vector_int.h: + +../gsl/gsl_permute_vector_ushort.h: + +../gsl/gsl_permute_vector_short.h: + +../gsl/gsl_permute_vector_uchar.h: + +../gsl/gsl_permute_vector_char.h: + +../gsl/gsl_blas.h: + +../gsl/gsl_blas_types.h: + +../gsl/gsl_cblas.h: + +../gsl/gsl_linalg.h: + +../gsl/gsl_mode.h: diff --git a/gsl-2.5/linalg/.deps/mcholesky.Plo b/gsl-2.5/linalg/.deps/mcholesky.Plo new file mode 100644 index 00000000..f813ff0b --- /dev/null +++ b/gsl-2.5/linalg/.deps/mcholesky.Plo @@ -0,0 +1,344 @@ +mcholesky.lo: mcholesky.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_math.h /usr/include/math.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_vector.h ../gsl/gsl_vector_complex_long_double.h \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/byteswap.h \ + /usr/include/bits/byteswap-16.h /usr/include/sys/types.h \ + /usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib-float.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_blas.h ../gsl/gsl_blas_types.h \ + ../gsl/gsl_cblas.h ../gsl/gsl_linalg.h ../gsl/gsl_mode.h \ + ../gsl/gsl_permutation.h ../gsl/gsl_permute_vector.h \ + ../gsl/gsl_permute_vector_complex_long_double.h \ + ../gsl/gsl_permute_vector_complex_double.h \ + ../gsl/gsl_permute_vector_complex_float.h \ + ../gsl/gsl_permute_vector_long_double.h \ + ../gsl/gsl_permute_vector_double.h ../gsl/gsl_permute_vector_float.h \ + ../gsl/gsl_permute_vector_ulong.h ../gsl/gsl_permute_vector_long.h \ + ../gsl/gsl_permute_vector_uint.h ../gsl/gsl_permute_vector_int.h \ + ../gsl/gsl_permute_vector_ushort.h ../gsl/gsl_permute_vector_short.h \ + ../gsl/gsl_permute_vector_uchar.h ../gsl/gsl_permute_vector_char.h \ + cholesky_common.c + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_blas.h: + +../gsl/gsl_blas_types.h: + +../gsl/gsl_cblas.h: + +../gsl/gsl_linalg.h: + +../gsl/gsl_mode.h: + +../gsl/gsl_permutation.h: + +../gsl/gsl_permute_vector.h: + +../gsl/gsl_permute_vector_complex_long_double.h: + +../gsl/gsl_permute_vector_complex_double.h: + +../gsl/gsl_permute_vector_complex_float.h: + +../gsl/gsl_permute_vector_long_double.h: + +../gsl/gsl_permute_vector_double.h: + +../gsl/gsl_permute_vector_float.h: + +../gsl/gsl_permute_vector_ulong.h: + +../gsl/gsl_permute_vector_long.h: + +../gsl/gsl_permute_vector_uint.h: + +../gsl/gsl_permute_vector_int.h: + +../gsl/gsl_permute_vector_ushort.h: + +../gsl/gsl_permute_vector_short.h: + +../gsl/gsl_permute_vector_uchar.h: + +../gsl/gsl_permute_vector_char.h: + +cholesky_common.c: diff --git a/gsl-2.5/linalg/.deps/multiply.Plo b/gsl-2.5/linalg/.deps/multiply.Plo new file mode 100644 index 00000000..011e5757 --- /dev/null +++ b/gsl-2.5/linalg/.deps/multiply.Plo @@ -0,0 +1,302 @@ +multiply.lo: multiply.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_linalg.h \ + ../gsl/gsl_mode.h ../gsl/gsl_permutation.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_check_range.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_complex.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_blas.h ../gsl/gsl_blas_types.h \ + ../gsl/gsl_cblas.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_linalg.h: + +../gsl/gsl_mode.h: + +../gsl/gsl_permutation.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_blas.h: + +../gsl/gsl_blas_types.h: + +../gsl/gsl_cblas.h: diff --git a/gsl-2.5/linalg/.deps/pcholesky.Plo b/gsl-2.5/linalg/.deps/pcholesky.Plo new file mode 100644 index 00000000..7fd7914c --- /dev/null +++ b/gsl-2.5/linalg/.deps/pcholesky.Plo @@ -0,0 +1,344 @@ +pcholesky.lo: pcholesky.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_math.h /usr/include/math.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_vector.h ../gsl/gsl_vector_complex_long_double.h \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/byteswap.h \ + /usr/include/bits/byteswap-16.h /usr/include/sys/types.h \ + /usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib-float.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_blas.h ../gsl/gsl_blas_types.h \ + ../gsl/gsl_cblas.h ../gsl/gsl_linalg.h ../gsl/gsl_mode.h \ + ../gsl/gsl_permutation.h ../gsl/gsl_permute_vector.h \ + ../gsl/gsl_permute_vector_complex_long_double.h \ + ../gsl/gsl_permute_vector_complex_double.h \ + ../gsl/gsl_permute_vector_complex_float.h \ + ../gsl/gsl_permute_vector_long_double.h \ + ../gsl/gsl_permute_vector_double.h ../gsl/gsl_permute_vector_float.h \ + ../gsl/gsl_permute_vector_ulong.h ../gsl/gsl_permute_vector_long.h \ + ../gsl/gsl_permute_vector_uint.h ../gsl/gsl_permute_vector_int.h \ + ../gsl/gsl_permute_vector_ushort.h ../gsl/gsl_permute_vector_short.h \ + ../gsl/gsl_permute_vector_uchar.h ../gsl/gsl_permute_vector_char.h \ + cholesky_common.c + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_blas.h: + +../gsl/gsl_blas_types.h: + +../gsl/gsl_cblas.h: + +../gsl/gsl_linalg.h: + +../gsl/gsl_mode.h: + +../gsl/gsl_permutation.h: + +../gsl/gsl_permute_vector.h: + +../gsl/gsl_permute_vector_complex_long_double.h: + +../gsl/gsl_permute_vector_complex_double.h: + +../gsl/gsl_permute_vector_complex_float.h: + +../gsl/gsl_permute_vector_long_double.h: + +../gsl/gsl_permute_vector_double.h: + +../gsl/gsl_permute_vector_float.h: + +../gsl/gsl_permute_vector_ulong.h: + +../gsl/gsl_permute_vector_long.h: + +../gsl/gsl_permute_vector_uint.h: + +../gsl/gsl_permute_vector_int.h: + +../gsl/gsl_permute_vector_ushort.h: + +../gsl/gsl_permute_vector_short.h: + +../gsl/gsl_permute_vector_uchar.h: + +../gsl/gsl_permute_vector_char.h: + +cholesky_common.c: diff --git a/gsl-2.5/linalg/.deps/ptlq.Plo b/gsl-2.5/linalg/.deps/ptlq.Plo new file mode 100644 index 00000000..38a4c530 --- /dev/null +++ b/gsl-2.5/linalg/.deps/ptlq.Plo @@ -0,0 +1,353 @@ +ptlq.lo: ptlq.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/string.h \ + /usr/include/xlocale.h /usr/include/bits/string.h \ + /usr/include/bits/string2.h ../gsl/gsl_blas.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_types.h \ + ../gsl/gsl_errno.h /usr/include/stdio.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_inline.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_vector_complex.h \ + ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_blas_types.h ../gsl/gsl_cblas.h \ + ../gsl/gsl_math.h /usr/include/math.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_nan.h ../gsl/gsl_pow_int.h \ + ../gsl/gsl_minmax.h ../gsl/gsl_permute_vector.h \ + ../gsl/gsl_permute_vector_complex_long_double.h ../gsl/gsl_permutation.h \ + ../gsl/gsl_permute_vector_complex_double.h \ + ../gsl/gsl_permute_vector_complex_float.h \ + ../gsl/gsl_permute_vector_long_double.h \ + ../gsl/gsl_permute_vector_double.h ../gsl/gsl_permute_vector_float.h \ + ../gsl/gsl_permute_vector_ulong.h ../gsl/gsl_permute_vector_long.h \ + ../gsl/gsl_permute_vector_uint.h ../gsl/gsl_permute_vector_int.h \ + ../gsl/gsl_permute_vector_ushort.h ../gsl/gsl_permute_vector_short.h \ + ../gsl/gsl_permute_vector_uchar.h ../gsl/gsl_permute_vector_char.h \ + ../gsl/gsl_linalg.h ../gsl/gsl_mode.h apply_givens.c + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string.h: + +/usr/include/bits/string2.h: + +../gsl/gsl_blas.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_types.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_blas_types.h: + +../gsl/gsl_cblas.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_permute_vector.h: + +../gsl/gsl_permute_vector_complex_long_double.h: + +../gsl/gsl_permutation.h: + +../gsl/gsl_permute_vector_complex_double.h: + +../gsl/gsl_permute_vector_complex_float.h: + +../gsl/gsl_permute_vector_long_double.h: + +../gsl/gsl_permute_vector_double.h: + +../gsl/gsl_permute_vector_float.h: + +../gsl/gsl_permute_vector_ulong.h: + +../gsl/gsl_permute_vector_long.h: + +../gsl/gsl_permute_vector_uint.h: + +../gsl/gsl_permute_vector_int.h: + +../gsl/gsl_permute_vector_ushort.h: + +../gsl/gsl_permute_vector_short.h: + +../gsl/gsl_permute_vector_uchar.h: + +../gsl/gsl_permute_vector_char.h: + +../gsl/gsl_linalg.h: + +../gsl/gsl_mode.h: + +apply_givens.c: diff --git a/gsl-2.5/linalg/.deps/qr.Plo b/gsl-2.5/linalg/.deps/qr.Plo new file mode 100644 index 00000000..7f5aace3 --- /dev/null +++ b/gsl-2.5/linalg/.deps/qr.Plo @@ -0,0 +1,314 @@ +qr.lo: qr.c /usr/include/stdc-predef.h ../config.h /usr/include/stdlib.h \ + /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/string.h \ + /usr/include/xlocale.h /usr/include/bits/string.h \ + /usr/include/bits/string2.h ../gsl/gsl_linalg.h ../gsl/gsl_mode.h \ + ../gsl/gsl_inline.h ../gsl/gsl_permutation.h ../gsl/gsl_types.h \ + ../gsl/gsl_errno.h /usr/include/stdio.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_check_range.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_complex.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_nan.h ../gsl/gsl_pow_int.h \ + ../gsl/gsl_minmax.h ../gsl/gsl_blas.h ../gsl/gsl_blas_types.h \ + ../gsl/gsl_cblas.h apply_givens.c + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string.h: + +/usr/include/bits/string2.h: + +../gsl/gsl_linalg.h: + +../gsl/gsl_mode.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_permutation.h: + +../gsl/gsl_types.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_blas.h: + +../gsl/gsl_blas_types.h: + +../gsl/gsl_cblas.h: + +apply_givens.c: diff --git a/gsl-2.5/linalg/.deps/qrpt.Plo b/gsl-2.5/linalg/.deps/qrpt.Plo new file mode 100644 index 00000000..f39d3015 --- /dev/null +++ b/gsl-2.5/linalg/.deps/qrpt.Plo @@ -0,0 +1,353 @@ +qrpt.lo: qrpt.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/string.h \ + /usr/include/xlocale.h /usr/include/bits/string.h \ + /usr/include/bits/string2.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_permute_vector.h \ + ../gsl/gsl_permute_vector_complex_long_double.h ../gsl/gsl_permutation.h \ + ../gsl/gsl_permute_vector_complex_double.h \ + ../gsl/gsl_permute_vector_complex_float.h \ + ../gsl/gsl_permute_vector_long_double.h \ + ../gsl/gsl_permute_vector_double.h ../gsl/gsl_permute_vector_float.h \ + ../gsl/gsl_permute_vector_ulong.h ../gsl/gsl_permute_vector_long.h \ + ../gsl/gsl_permute_vector_uint.h ../gsl/gsl_permute_vector_int.h \ + ../gsl/gsl_permute_vector_ushort.h ../gsl/gsl_permute_vector_short.h \ + ../gsl/gsl_permute_vector_uchar.h ../gsl/gsl_permute_vector_char.h \ + ../gsl/gsl_blas.h ../gsl/gsl_blas_types.h ../gsl/gsl_cblas.h \ + ../gsl/gsl_linalg.h ../gsl/gsl_mode.h apply_givens.c + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string.h: + +/usr/include/bits/string2.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_permute_vector.h: + +../gsl/gsl_permute_vector_complex_long_double.h: + +../gsl/gsl_permutation.h: + +../gsl/gsl_permute_vector_complex_double.h: + +../gsl/gsl_permute_vector_complex_float.h: + +../gsl/gsl_permute_vector_long_double.h: + +../gsl/gsl_permute_vector_double.h: + +../gsl/gsl_permute_vector_float.h: + +../gsl/gsl_permute_vector_ulong.h: + +../gsl/gsl_permute_vector_long.h: + +../gsl/gsl_permute_vector_uint.h: + +../gsl/gsl_permute_vector_int.h: + +../gsl/gsl_permute_vector_ushort.h: + +../gsl/gsl_permute_vector_short.h: + +../gsl/gsl_permute_vector_uchar.h: + +../gsl/gsl_permute_vector_char.h: + +../gsl/gsl_blas.h: + +../gsl/gsl_blas_types.h: + +../gsl/gsl_cblas.h: + +../gsl/gsl_linalg.h: + +../gsl/gsl_mode.h: + +apply_givens.c: diff --git a/gsl-2.5/linalg/.deps/svd.Plo b/gsl-2.5/linalg/.deps/svd.Plo new file mode 100644 index 00000000..ade769c6 --- /dev/null +++ b/gsl-2.5/linalg/.deps/svd.Plo @@ -0,0 +1,314 @@ +svd.lo: svd.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/string.h \ + /usr/include/xlocale.h /usr/include/bits/string.h \ + /usr/include/bits/string2.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_blas.h ../gsl/gsl_blas_types.h \ + ../gsl/gsl_cblas.h ../gsl/gsl_linalg.h ../gsl/gsl_mode.h \ + ../gsl/gsl_permutation.h svdstep.c + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string.h: + +/usr/include/bits/string2.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_blas.h: + +../gsl/gsl_blas_types.h: + +../gsl/gsl_cblas.h: + +../gsl/gsl_linalg.h: + +../gsl/gsl_mode.h: + +../gsl/gsl_permutation.h: + +svdstep.c: diff --git a/gsl-2.5/linalg/.deps/symmtd.Plo b/gsl-2.5/linalg/.deps/symmtd.Plo new file mode 100644 index 00000000..d4c5fdbb --- /dev/null +++ b/gsl-2.5/linalg/.deps/symmtd.Plo @@ -0,0 +1,302 @@ +symmtd.lo: symmtd.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_blas.h ../gsl/gsl_blas_types.h \ + ../gsl/gsl_cblas.h ../gsl/gsl_linalg.h ../gsl/gsl_mode.h \ + ../gsl/gsl_permutation.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_blas.h: + +../gsl/gsl_blas_types.h: + +../gsl/gsl_cblas.h: + +../gsl/gsl_linalg.h: + +../gsl/gsl_mode.h: + +../gsl/gsl_permutation.h: diff --git a/gsl-2.5/linalg/.deps/test.Po b/gsl-2.5/linalg/.deps/test.Po new file mode 100644 index 00000000..7ead4b53 --- /dev/null +++ b/gsl-2.5/linalg/.deps/test.Po @@ -0,0 +1,399 @@ +test.o: test.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_test.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_ieee_utils.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../gsl/gsl_permute_vector.h \ + ../gsl/gsl_permute_vector_complex_long_double.h ../gsl/gsl_errno.h \ + /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_permutation.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_complex.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_permute_vector_complex_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_permute_vector_complex_float.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_permute_vector_long_double.h \ + ../gsl/gsl_permute_vector_double.h ../gsl/gsl_permute_vector_float.h \ + ../gsl/gsl_permute_vector_ulong.h ../gsl/gsl_vector_ulong.h \ + ../gsl/gsl_block_ulong.h ../gsl/gsl_permute_vector_long.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_permute_vector_uint.h ../gsl/gsl_vector_uint.h \ + ../gsl/gsl_block_uint.h ../gsl/gsl_permute_vector_int.h \ + ../gsl/gsl_vector_int.h ../gsl/gsl_block_int.h \ + ../gsl/gsl_permute_vector_ushort.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_permute_vector_short.h \ + ../gsl/gsl_vector_short.h ../gsl/gsl_block_short.h \ + ../gsl/gsl_permute_vector_uchar.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_permute_vector_char.h \ + ../gsl/gsl_vector_char.h ../gsl/gsl_block_char.h \ + ../gsl/gsl_permute_matrix.h \ + ../gsl/gsl_permute_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_permute_matrix_complex_double.h \ + ../gsl/gsl_matrix_complex_double.h \ + ../gsl/gsl_permute_matrix_complex_float.h \ + ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_permute_matrix_long_double.h ../gsl/gsl_matrix_long_double.h \ + ../gsl/gsl_permute_matrix_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_permute_matrix_float.h ../gsl/gsl_matrix_float.h \ + ../gsl/gsl_permute_matrix_ulong.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_permute_matrix_long.h ../gsl/gsl_matrix_long.h \ + ../gsl/gsl_permute_matrix_uint.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_permute_matrix_int.h ../gsl/gsl_matrix_int.h \ + ../gsl/gsl_permute_matrix_ushort.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_permute_matrix_short.h ../gsl/gsl_matrix_short.h \ + ../gsl/gsl_permute_matrix_uchar.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_permute_matrix_char.h ../gsl/gsl_matrix_char.h \ + ../gsl/gsl_blas.h ../gsl/gsl_vector.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_blas_types.h ../gsl/gsl_cblas.h ../gsl/gsl_complex_math.h \ + ../gsl/gsl_linalg.h ../gsl/gsl_mode.h ../gsl/gsl_rng.h test_cholesky.c \ + test_common.c test_cod.c + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_test.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_ieee_utils.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../gsl/gsl_permute_vector.h: + +../gsl/gsl_permute_vector_complex_long_double.h: + +../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_permutation.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_permute_vector_complex_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_permute_vector_complex_float.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_permute_vector_long_double.h: + +../gsl/gsl_permute_vector_double.h: + +../gsl/gsl_permute_vector_float.h: + +../gsl/gsl_permute_vector_ulong.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_permute_vector_long.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_permute_vector_uint.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_permute_vector_int.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_permute_vector_ushort.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_permute_vector_short.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_permute_vector_uchar.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_permute_vector_char.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_permute_matrix.h: + +../gsl/gsl_permute_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_permute_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_permute_matrix_complex_float.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_permute_matrix_long_double.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_permute_matrix_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_permute_matrix_float.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_permute_matrix_ulong.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_permute_matrix_long.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_permute_matrix_uint.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_permute_matrix_int.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_permute_matrix_ushort.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_permute_matrix_short.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_permute_matrix_uchar.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_permute_matrix_char.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_blas.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_blas_types.h: + +../gsl/gsl_cblas.h: + +../gsl/gsl_complex_math.h: + +../gsl/gsl_linalg.h: + +../gsl/gsl_mode.h: + +../gsl/gsl_rng.h: + +test_cholesky.c: + +test_common.c: + +test_cod.c: diff --git a/gsl-2.5/linalg/.deps/tridiag.Plo b/gsl-2.5/linalg/.deps/tridiag.Plo new file mode 100644 index 00000000..2886a8ec --- /dev/null +++ b/gsl-2.5/linalg/.deps/tridiag.Plo @@ -0,0 +1,305 @@ +tridiag.lo: tridiag.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_errno.h /usr/include/stdio.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_types.h tridiag.h ../gsl/gsl_linalg.h ../gsl/gsl_mode.h \ + ../gsl/gsl_inline.h ../gsl/gsl_permutation.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector.h ../gsl/gsl_vector_complex_long_double.h \ + ../gsl/gsl_complex.h ../gsl/gsl_vector_long_double.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_vector_complex.h \ + ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_math.h ../gsl/gsl_sys.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_nan.h ../gsl/gsl_pow_int.h \ + ../gsl/gsl_minmax.h ../gsl/gsl_blas.h ../gsl/gsl_blas_types.h \ + ../gsl/gsl_cblas.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +tridiag.h: + +../gsl/gsl_linalg.h: + +../gsl/gsl_mode.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_permutation.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_blas.h: + +../gsl/gsl_blas_types.h: + +../gsl/gsl_cblas.h: diff --git a/gsl-2.5/linalg/.libs/libgsllinalg.la b/gsl-2.5/linalg/.libs/libgsllinalg.la new file mode 120000 index 00000000..793abe7f --- /dev/null +++ b/gsl-2.5/linalg/.libs/libgsllinalg.la @@ -0,0 +1 @@ +../libgsllinalg.la \ No newline at end of file diff --git a/gsl-2.5/linalg/.libs/lt-test b/gsl-2.5/linalg/.libs/lt-test new file mode 100755 index 00000000..29cc0bac Binary files /dev/null and b/gsl-2.5/linalg/.libs/lt-test differ diff --git a/gsl-2.5/linalg/.libs/test b/gsl-2.5/linalg/.libs/test new file mode 100755 index 00000000..985f4440 Binary files /dev/null and b/gsl-2.5/linalg/.libs/test differ diff --git a/gsl-2.5/linalg/ChangeLog b/gsl-2.5/linalg/ChangeLog new file mode 100644 index 00000000..e3ee7424 --- /dev/null +++ b/gsl-2.5/linalg/ChangeLog @@ -0,0 +1,453 @@ +2011-04-15 Brian Gough + + * choleskyc.c (gsl_linalg_complex_cholesky_invert): avoid mixing + declarations and code (C9X) + +2010-06-13 Brian Gough + + * choleskyc.c (gsl_linalg_complex_cholesky_invert): added new + routine for inversion (Huan Wu) + +2010-02-24 Brian Gough + + * svdstep.c (trailing_eigenvalue): compute the implicit shift + value mu robustly + + * svd.c (gsl_linalg_SV_decomp): scale the bidiagonal matrix before + the implicit QR step + + * householder.c (gsl_linalg_householder_transform): handle the + case where the scaling factor is subnormal + +2009-07-04 Brian Gough + + * luc.c (gsl_linalg_complex_LU_solve, gsl_linalg_complex_LU_svx, + gsl_linalg_complex_LU_refine, singular): added check + for singular matrix + +2009-06-28 Brian Gough + + * lu.c (gsl_linalg_LU_solve, gsl_linalg_LU_svx, + gsl_linalg_LU_refine, gsl_linalg_LU_invert, singular): added check + for singular matrix + +2009-06-04 Brian Gough + + * hermtd.c (gsl_linalg_hermtd_unpack): use U as matrix name + instead of Q + +2008-10-20 Brian Gough + + * svd.c (gsl_linalg_SV_decomp_jacobi): change use of + gsl_coerce_double to macro so it is not called unnecessarily + +2008-08-30 Brian Gough + + * tridiag.c (solve_cyc_tridiag_nonsym): use x_stride when storing + in x[] (fixes bug #24162) + +2008-08-26 Brian Gough + + * test.c (test_QRPT_update_dim): added tests for + gsl_linalg_QRPT_update + + * qrpt.c (gsl_linalg_QRPT_update): handle rectangular matrices + +2008-07-03 Brian Gough + + * Makefile.am (INCLUDES): use top_srcdir instead of top_builddir + +2008-04-28 Brian Gough + + * bidiag.c (gsl_linalg_bidiag_unpack, gsl_linalg_bidiag_unpack2): + use new descending loop convention + + * hermtd.c (gsl_linalg_hermtd_unpack): use new descending loop + convention + + * hh.c (gsl_linalg_HH_svx): use new descending loop convention + + * lq.c (gsl_linalg_LQ_vecQ, gsl_linalg_LQ_unpack): use new + descending loop convention + + * qr.c (gsl_linalg_QR_Qvec, gsl_linalg_QR_unpack): use new + descending loop convention + + * svd.c (gsl_linalg_SV_decomp_mod): use new descending loop + convention + + * svdstep.c (chase_out_trailing_zero): use new descending loop + convention + + * symmtd.c (gsl_linalg_symmtd_unpack): use new descending loop + convention + +2008-04-03 Brian Gough + + * qr.c lq.c: removed unused definition of REAL + +2007-08-27 Brian Gough + + * tridiag.c: use GSL_ERROR for failed allocation, signal + GSL_EZERODIV if matrix is not positive definite + +2007-08-17 Brian Gough + + * svd.c (gsl_linalg_SV_decomp): bail out if number of iterations + exceeds 100*N + +2007-08-16 Brian Gough + + * test.c (main): add some svd tests with small values that will + cause underflow in intermediate steps of SVD iteration + +2006-08-14 Brian Gough + + * balancemat.c: balance a general matrix D^-1 A D for rows and + columns + +2006-04-24 Brian Gough + + * svdstep.c apply_givens.c householder.c: perform linear + operations with level-1 blas when compiled with USE_BLAS. + +2006-02-10 Brian Gough + + * cholesky.c (quiet_sqrt): added a quiet_sqrt to allow checking + for positive definiteness without a runtime error + +2005-08-22 Brian Gough + + * svd.c (gsl_linalg_SV_decomp_jacobi): reorganised convergence + tests to increase robustness in the presence of extended precision + registers. + +2005-06-22 Brian Gough + + * svd.c (gsl_linalg_SV_decomp_jacobi): increased number of sweeps + to MAX(5*N,12) and track numerical errors for better termination + +2005-02-02 Brian Gough + + * svd.c (gsl_linalg_SV_decomp_jacobi): changed M + + * qr.c (gsl_linalg_R_svx): added missing function + +2004-09-13 Brian Gough + + * test.c: added tests for LQ, P^TLQ solvers + + * ptlq.c: added support for PA = LQ decompositions + + * lq.c: added support for A = LQ decompositions + +2004-05-30 Brian Gough + + * test.c (test_LU_solve): increase test tolerance to accommodate + gcc-3.3.3 w/ bounds checking + +2004-05-26 Brian Gough + + * householder.c (gsl_linalg_householder_hm): + (gsl_linalg_householder_mh): + (gsl_linalg_householder_hm1): added blas code (but ifdef'd out) + + * test.c (test_SV_decomp_dim): skip NaNs in test + (test_SV_decomp_mod_dim): skip NaNs in test + +2004-04-26 Brian Gough + + * test.c (test_TDN_solve): increased tolerance for tests + (test_TDN_cyc_solve): increased tolerance for tests + +2004-03-15 Brian Gough + + * tridiag.c: (gsl_linalg_solve_symm_tridiag): + (gsl_linalg_solve_tridiag): + (gsl_linalg_solve_symm_cyc_tridiag): + (gsl_linalg_solve_cyc_tridiag): use GSL_ERROR macro to report + errors, make size restrictions tighter (no unused elements allowed + to be passed in). + +2004-03-06 Brian Gough + + * test.c (test_SV_decomp_mod_dim): added tests for SV_decomp_mod + + * svd.c (gsl_linalg_SV_decomp): handle the case N=1 (SVD of a + column vector) + (gsl_linalg_SV_decomp_mod): handle the case N=1 (SVD of a column + vector) + +2004-03-05 Brian Gough + + * test.c (test_SV_decomp): add tests with inf/nan + + * svd.c (gsl_linalg_SV_decomp): handle nans in block reduction + + * balance.c: handle infinity/nan when scaling input matrix + +2003-07-24 Brian Gough + + * tridiag.c (solve_cyc_tridiag_nonsym): fixed declarations of i so + they do not shadow each other + +2003-05-30 Brian Gough + + * householder.c (gsl_linalg_householder_hv): converted to use blas + routines + +2003-05-08 Brian Gough + + * test.c: added tests for QR_QRsolve and QRPT_QRsolve + + * qrpt.c (gsl_linalg_QRPT_QRsolve): fixed dgemv to use CblasTrans + when computing Q^T b + + * qr.c (gsl_linalg_QR_QRsolve): fixed dgemv to use CblasTrans when + computing Q^T b + +Fri Oct 18 17:46:30 2002 Brian Gough + + * householdercomplex.c (gsl_linalg_complex_householder_transform): + return tau = 0 to prevent division by zero for beta_r = 0 + +Mon Aug 12 20:12:55 2002 Brian Gough + + * bidiag.c (gsl_linalg_bidiag_unpack_B): fixed to copy + superdiagonal and not subdiagonal, as was incorrectly done + previously. + +Sun Jun 16 11:57:00 2002 Brian Gough + + * svd.c (gsl_linalg_SV_decomp): keep track of maximum value + correctly when sorting singular values + + * test.c (test_SV_decomp): add 3x3 of SVD + + * svdstep.c (chase_out_intermediate_zero): handle case of dk=0 + (chase_out_trailing_zero): handle case of dn=0 + +Wed Apr 17 20:04:11 2002 Brian Gough + + * tridiag.c (gsl_linalg_solve_tridiag): + (gsl_linalg_solve_cyc_tridiag): added tridiagonal solvers for + non-symmetric case (David Necas ) + +Mon Apr 15 19:55:40 2002 Brian Gough + + * tridiag.c (solve_cyc_tridiag): corrected typographical error in + Engeln-Mullges Algorithm 4.35, step 1.7 (f_(n-1) should be + alpha_(n-1)) + +Thu Sep 13 12:26:17 2001 Brian Gough + + * test.c (test_SV_decomp): added brute force testing of 2x2 svd + + * svdstep.c (svd2): fixed bug where singular values in 2x2 svd + were not ordered correctly. + +Mon Sep 10 22:35:24 2001 Brian Gough + + * test.c (test_LUc_solve): added a test for complex LU + +Tue Sep 4 17:22:58 2001 Brian Gough + + * luc.c: added LU decomposition for complex matrices + +Wed Aug 29 16:34:50 2001 Brian Gough + + * svd.c (gsl_linalg_SV_decomp_jacobi): make sure all singular + vectors are zero, not just first. + + * svdstep.c (svd2): added explicit calculation of 2x2 svd, fixes + bug that prevents convergence. + +Thu Aug 2 18:19:08 2001 Brian Gough + + * svdstep.c (trailing_eigenvalue): chose better value of mu when + dt=0. + +Sun Jul 8 18:03:05 2001 Brian Gough + + * qrpt.c (gsl_linalg_QRPT_decomp): fix bug where null column + caused division by zero in norm-update calculation + +Sun Jul 1 22:43:22 2001 Brian Gough + + * modified to use new-style vector views, affects most + functions + +Wed Jun 20 13:38:24 2001 Brian Gough + + * svd.c (gsl_linalg_SV_decomp): added error checking + +Tue Jun 19 23:19:49 2001 Brian Gough + + * svd.c (gsl_linalg_SV_decomp): Golub-Reinsch svd, has more + deterministic convergence + (gsl_linalg_SV_decomp_mod): Golub-Reinsch with + Preconditioning, much more efficient for M>>N + + * balance.c (gsl_linalg_balance_columns): balances (or + "equilibrates") the columns of a matrix + +Sun Jun 17 21:49:03 2001 Brian Gough + + * givens.c: split out apply_givens functions into separate file + apply_givens.c + +Wed Jun 13 23:41:34 2001 Brian Gough + + * qr.c (gsl_linalg_QR_decomp): simplified reverse loop + + * bidiag.c: bidiagonalisation of a matrix (needed for + Golub-Reinsch SVD) + +Wed Jun 6 12:36:58 2001 Brian Gough + + * householdercomplex.c: split out complex functions into a + separate file to reduce linking dependencies + + * qrpt.c (gsl_linalg_QRPT_decomp): provide workspace as an + argument, to avoid allocating it on each call + (gsl_linalg_QRPT_decomp2): provide workspace as an argument, to + avoid allocating it on each call + + * qr.c (gsl_linalg_QR_decomp): provide workspace as an argument, + to avoid allocating it on each call + +Thu May 17 17:01:45 2001 Brian Gough + + * qr.c (gsl_linalg_QR_lssolve): added least squares solver + +Sat Apr 28 00:39:53 2001 Brian Gough + + * qr.c (gsl_linalg_QR_update): fixed QR update to work correctly + with rectangular matrices where M > N + +Mon Apr 23 10:29:01 2001 Brian Gough + + * tridiag.c: removed EFAULT test since this should only apply to + non-null invalid pointers + +Fri Apr 13 20:43:38 2001 Brian Gough + + * test.c: replaced uses of matmult by dgemm + +Sun Oct 22 13:56:30 2000 Brian Gough + + * householder.c (gsl_linalg_householder_transform): changed calls + to gsl_hypot() to hypot() so that the system function is used in + preference (the configure script will define hypot to gsl_hypot if + hypot is unavailable) + + * svd.c (gsl_linalg_SV_decomp): changed calls to gsl_hypot() to + hypot() + +Sat Oct 21 15:54:56 2000 Brian Gough + + * tridiag.c (solve_tridiag): prevent out-of-bounds array access + for small N (attempt to access element[N-2] when N is 1). + +Tue Sep 19 21:42:13 2000 Brian Gough + + * qrpt.c (gsl_linalg_QRPT_decomp2): added convenience function to + compute q,r unpacked decomposition directly + +Wed Aug 16 19:50:35 2000 Brian Gough + + * svd.c (gsl_linalg_SV_decomp): take more care with singular + values, set the associated vectors to zero + +Sun Aug 13 16:39:40 2000 Brian Gough + + * qrpt.c (gsl_linalg_QRPT_decomp): fixed obvious bug in selection + of column with max norm + +Wed May 31 19:42:59 2000 Brian Gough + + * test.c (test_QR_update): increased tolerances on results to + allow tests to pass with other compilers + +Wed May 3 21:19:45 2000 Brian Gough + + * cholesky.c: added cholesky decomposition/solve from Thomas + Walter. Modified for GSL. + +Fri Apr 28 17:13:00 2000 Brian Gough + + * renamed all matrices to use upper case variable names, e.g. A + +Thu Apr 27 20:31:46 2000 Brian Gough + + * test.c: tightened up accuracy of the decomp test + + * test_la.c: renamed to test.c for consistency + (test_QR_decomp): added the "moler" matrix as a test for SVD + + * svd.c (gsl_linalg_SV_decomp): improved the convergence criterion + for rank deficient case. + +Wed Apr 26 19:37:46 2000 Brian Gough + + * renamed rhs -> b, and solution -> x throughout for consistency + +Mon Apr 24 17:04:52 2000 Brian Gough + + * test_la.c (main): added tests for MxN matrices + + * test_la.c (main): added tests for SV decomposition and solve. + + * svd.c (gsl_linalg_SV_decomp): made use of vector row/column + functions, tidied up the algorithm a bit. Use a standard tolerance + of 10*GSL_DBL_EPSILON. + (gsl_linalg_SV_solve): added a least squares solver + +Sun Apr 23 21:18:04 2000 Brian Gough + + * gsl_linalg.h, svd.c (gsl_linalg_SV_decomp): changed function + name to new naming convention + + * qr.c (gsl_linalg_QR_unpack): fixed index ranges for rectangular + case when unpacking R + +Sat Apr 22 15:05:21 2000 Brian Gough + + * matrix.c: removed, equivalent functions now in matrix directory + +Sat Mar 11 17:36:33 2000 Brian Gough + + * multiply.c: removed _impl from these functions since all the + errors they can return are fatal. + +Wed Feb 16 12:03:00 2000 Brian Gough + + * multiply.c (gsl_la_matmult_mod_impl): fixed error in transposed + matrix memory access, expressions should always be of the form + M->data[i*M->size2 + j] even when i,j are transposed. + + Safer to replace matrix access by gsl_matrix_set and + gsl_matrix_get, which is what I have done now. Shouldn't be any + cost in the production version of the library where we have + inlines and range checking off. + +Tue Feb 15 17:46:19 2000 Brian Gough + + * tridiag.h (solve_cyc_tridiag): fixed typo in header, was + solve_cyctridiag, missing _. + + * converted all functions to use gsl_permutation instead of + gsl_vector_int + +Fri Oct 1 15:51:02 1999 Brian Gough + + * temporary changes resulting from changes to block/vector/matrix + organization + +Fri Aug 6 14:42:23 1999 Brian Gough + + * linalg_simple.c: include to declare memcpy + diff --git a/gsl-2.5/linalg/Makefile b/gsl-2.5/linalg/Makefile new file mode 100644 index 00000000..88fe5b18 --- /dev/null +++ b/gsl-2.5/linalg/Makefile @@ -0,0 +1,1062 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# linalg/Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + + + + +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/gsl +pkgincludedir = $(includedir)/gsl +pkglibdir = $(libdir)/gsl +pkglibexecdir = $(libexecdir)/gsl +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = x86_64-unknown-linux-gnu +host_triplet = x86_64-unknown-linux-gnu +check_PROGRAMS = test$(EXEEXT) +subdir = linalg +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp \ + $(noinst_HEADERS) $(pkginclude_HEADERS) \ + $(top_srcdir)/test-driver ChangeLog TODO +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +libgsllinalg_la_LIBADD = +am_libgsllinalg_la_OBJECTS = cod.lo condest.lo invtri.lo multiply.lo \ + exponential.lo tridiag.lo lu.lo luc.lo hh.lo qr.lo qrpt.lo \ + lq.lo ptlq.lo svd.lo householder.lo householdercomplex.lo \ + hessenberg.lo hesstri.lo cholesky.lo choleskyc.lo mcholesky.lo \ + pcholesky.lo symmtd.lo hermtd.lo bidiag.lo balance.lo \ + balancemat.lo inline.lo +libgsllinalg_la_OBJECTS = $(am_libgsllinalg_la_OBJECTS) +AM_V_lt = $(am__v_lt_$(V)) +am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) +am__v_lt_0 = --silent +am__v_lt_1 = +am_test_OBJECTS = test.$(OBJEXT) +test_OBJECTS = $(am_test_OBJECTS) +test_DEPENDENCIES = libgsllinalg.la ../blas/libgslblas.la \ + ../cblas/libgslcblas.la ../permutation/libgslpermutation.la \ + ../matrix/libgslmatrix.la ../vector/libgslvector.la \ + ../block/libgslblock.la ../complex/libgslcomplex.la \ + ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la \ + ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la \ + ../rng/libgslrng.la +AM_V_P = $(am__v_P_$(V)) +am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY)) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_$(V)) +am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_$(V)) +am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I. -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_$(V)) +am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_$(V)) +am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libgsllinalg_la_SOURCES) $(test_SOURCES) +DIST_SOURCES = $(libgsllinalg_la_SOURCES) $(test_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(pkgincludedir)" +HEADERS = $(noinst_HEADERS) $(pkginclude_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = .test +LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing aclocal-1.13 +AMTAR = $${TAR-tar} +AM_DEFAULT_VERBOSITY = 1 +AR = ar +AS = as +AUTOCONF = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing autoconf +AUTOHEADER = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing autoheader +AUTOMAKE = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing automake-1.13 +AWK = gawk +CC = gcc +CCDEPMODE = depmode=gcc3 +CFLAGS = -g -O2 +CPP = gcc -E +CPPFLAGS = +CYGPATH_W = echo +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +DLLTOOL = false +DSYMUTIL = +DUMPBIN = +ECHO_C = +ECHO_N = -n +ECHO_T = +EGREP = /usr/bin/grep -E +EXEEXT = +FGREP = /usr/bin/grep -F +GREP = /usr/bin/grep +GSLCBLAS_LDFLAGS = +GSL_CFLAGS = -I${prefix}/include +GSL_LDFLAGS = +GSL_LIBADD = +GSL_LIBM = -lm +GSL_LIBS = -L${exec_prefix}/lib -lgsl +GSL_LT_CBLAS_VERSION = 0:0:0 +GSL_LT_VERSION = 24:0:1 +GSL_MAJOR_VERSION = 2 +GSL_MINOR_VERSION = 5 +HAVE_AIX_IEEE_INTERFACE = +HAVE_DARWIN86_IEEE_INTERFACE = +HAVE_DARWIN_IEEE_INTERFACE = +HAVE_FREEBSD_IEEE_INTERFACE = +HAVE_GNUM68K_IEEE_INTERFACE = +HAVE_GNUPPC_IEEE_INTERFACE = +HAVE_GNUSPARC_IEEE_INTERFACE = +HAVE_GNUX86_IEEE_INTERFACE = +HAVE_HPUX11_IEEE_INTERFACE = +HAVE_HPUX_IEEE_INTERFACE = +HAVE_IRIX_IEEE_INTERFACE = +HAVE_NETBSD_IEEE_INTERFACE = +HAVE_OPENBSD_IEEE_INTERFACE = +HAVE_OS2EMX_IEEE_INTERFACE = +HAVE_SOLARIS_IEEE_INTERFACE = +HAVE_SUNOS4_IEEE_INTERFACE = +HAVE_TRU64_IEEE_INTERFACE = +INSTALL = /usr/bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = $(install_sh) -c -s +LD = /usr/bin/ld -m elf_x86_64 +LDFLAGS = +LIBM = -lm +LIBOBJS = +LIBS = -lm +LIBTOOL = $(SHELL) $(top_builddir)/libtool +LIPO = +LN_S = ln -s +LTLIBOBJS = +MAINT = # +MAKEINFO = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing makeinfo +MANIFEST_TOOL = : +MKDIR_P = /usr/bin/mkdir -p +NM = /usr/bin/nm -B +NMEDIT = +OBJDUMP = objdump +OBJEXT = o +OTOOL = +OTOOL64 = +PACKAGE = gsl +PACKAGE_BUGREPORT = +PACKAGE_NAME = gsl +PACKAGE_STRING = gsl 2.5 +PACKAGE_TARNAME = gsl +PACKAGE_URL = +PACKAGE_VERSION = 2.5 +PATH_SEPARATOR = : +RANLIB = ranlib +SED = /usr/bin/sed +SET_MAKE = +SHELL = /bin/sh +STRIP = strip +VERSION = 2.5 +abs_builddir = /home/groups/kipac/chto/package/gsl/gsl-2.5/linalg +abs_srcdir = /home/groups/kipac/chto/package/gsl/gsl-2.5/linalg +abs_top_builddir = /home/groups/kipac/chto/package/gsl/gsl-2.5 +abs_top_srcdir = /home/groups/kipac/chto/package/gsl/gsl-2.5 +ac_ct_AR = ar +ac_ct_CC = gcc +ac_ct_DUMPBIN = +am__include = include +am__leading_dot = . +am__quote = +am__tar = $${TAR-tar} chof - "$$tardir" +am__untar = $${TAR-tar} xf - +bindir = ${exec_prefix}/bin +build = x86_64-unknown-linux-gnu +build_alias = +build_cpu = x86_64 +build_os = linux-gnu +build_vendor = unknown +builddir = . +datadir = ${datarootdir} +datarootdir = ${prefix}/share +docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} +dvidir = ${docdir} +exec_prefix = ${prefix} +host = x86_64-unknown-linux-gnu +host_alias = +host_cpu = x86_64 +host_os = linux-gnu +host_vendor = unknown +htmldir = ${docdir} +includedir = ${prefix}/include +infodir = ${datarootdir}/info +install_sh = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/install-sh +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +localedir = ${datarootdir}/locale +localstatedir = ${prefix}/var +mandir = ${datarootdir}/man +mkdir_p = $(MKDIR_P) +oldincludedir = /usr/include +pdfdir = ${docdir} +prefix = /home/groups/kipac/chto/package/gsl/gsl_lib +program_transform_name = s,x,x, +psdir = ${docdir} +sbindir = ${exec_prefix}/sbin +sharedstatedir = ${prefix}/com +srcdir = . +sysconfdir = ${prefix}/etc +target_alias = +top_build_prefix = ../ +top_builddir = .. +top_srcdir = .. +noinst_LTLIBRARIES = libgsllinalg.la +pkginclude_HEADERS = gsl_linalg.h +AM_CPPFLAGS = -I$(top_srcdir) +libgsllinalg_la_SOURCES = cod.c condest.c invtri.c multiply.c exponential.c tridiag.c tridiag.h lu.c luc.c hh.c qr.c qrpt.c lq.c ptlq.c svd.c householder.c householdercomplex.c hessenberg.c hesstri.c cholesky.c choleskyc.c mcholesky.c pcholesky.c symmtd.c hermtd.c bidiag.c balance.c balancemat.c inline.c +noinst_HEADERS = apply_givens.c cholesky_common.c svdstep.c tridiag.h test_cholesky.c test_cod.c test_common.c +TESTS = $(check_PROGRAMS) +test_SOURCES = test.c +test_LDADD = libgsllinalg.la ../blas/libgslblas.la ../cblas/libgslcblas.la ../permutation/libgslpermutation.la ../matrix/libgslmatrix.la ../vector/libgslvector.la ../block/libgslblock.la ../complex/libgslcomplex.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la ../rng/libgslrng.la +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu linalg/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu linalg/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: # $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): # $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libgsllinalg.la: $(libgsllinalg_la_OBJECTS) $(libgsllinalg_la_DEPENDENCIES) $(EXTRA_libgsllinalg_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(libgsllinalg_la_OBJECTS) $(libgsllinalg_la_LIBADD) $(LIBS) + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) $(EXTRA_test_DEPENDENCIES) + @rm -f test$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_OBJECTS) $(test_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +include ./$(DEPDIR)/balance.Plo +include ./$(DEPDIR)/balancemat.Plo +include ./$(DEPDIR)/bidiag.Plo +include ./$(DEPDIR)/cholesky.Plo +include ./$(DEPDIR)/choleskyc.Plo +include ./$(DEPDIR)/cod.Plo +include ./$(DEPDIR)/condest.Plo +include ./$(DEPDIR)/exponential.Plo +include ./$(DEPDIR)/hermtd.Plo +include ./$(DEPDIR)/hessenberg.Plo +include ./$(DEPDIR)/hesstri.Plo +include ./$(DEPDIR)/hh.Plo +include ./$(DEPDIR)/householder.Plo +include ./$(DEPDIR)/householdercomplex.Plo +include ./$(DEPDIR)/inline.Plo +include ./$(DEPDIR)/invtri.Plo +include ./$(DEPDIR)/lq.Plo +include ./$(DEPDIR)/lu.Plo +include ./$(DEPDIR)/luc.Plo +include ./$(DEPDIR)/mcholesky.Plo +include ./$(DEPDIR)/multiply.Plo +include ./$(DEPDIR)/pcholesky.Plo +include ./$(DEPDIR)/ptlq.Plo +include ./$(DEPDIR)/qr.Plo +include ./$(DEPDIR)/qrpt.Plo +include ./$(DEPDIR)/svd.Plo +include ./$(DEPDIR)/symmtd.Plo +include ./$(DEPDIR)/test.Po +include ./$(DEPDIR)/tridiag.Plo + +.c.o: + $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# $(AM_V_CC)source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(COMPILE) -c $< + +.c.obj: + $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# $(AM_V_CC)source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: + $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +# $(AM_V_CC)source='$<' object='$@' libtool=yes \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-pkgincludeHEADERS: $(pkginclude_HEADERS) + @$(NORMAL_INSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \ + done + +uninstall-pkgincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + else \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_PROGRAMS) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +test.log: test$(EXEEXT) + @p='test$(EXEEXT)'; \ + b='test'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +#.test$(EXEEXT).log: +# @p='$<'; \ +# $(am__set_b); \ +# $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +# --log-file $$b.log --trs-file $$b.trs \ +# $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +# "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-am +all-am: Makefile $(LTLIBRARIES) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(pkgincludedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-pkgincludeHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-pkgincludeHEADERS + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES cscopelist-am ctags ctags-am distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-pkgincludeHEADERS \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + recheck tags tags-am uninstall uninstall-am \ + uninstall-pkgincludeHEADERS + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gsl-2.5/linalg/Makefile.am b/gsl-2.5/linalg/Makefile.am new file mode 100644 index 00000000..be5c9eed --- /dev/null +++ b/gsl-2.5/linalg/Makefile.am @@ -0,0 +1,16 @@ +noinst_LTLIBRARIES = libgsllinalg.la + +pkginclude_HEADERS = gsl_linalg.h + +AM_CPPFLAGS = -I$(top_srcdir) + +libgsllinalg_la_SOURCES = cod.c condest.c invtri.c multiply.c exponential.c tridiag.c tridiag.h lu.c luc.c hh.c qr.c qrpt.c lq.c ptlq.c svd.c householder.c householdercomplex.c hessenberg.c hesstri.c cholesky.c choleskyc.c mcholesky.c pcholesky.c symmtd.c hermtd.c bidiag.c balance.c balancemat.c inline.c + +noinst_HEADERS = apply_givens.c cholesky_common.c svdstep.c tridiag.h test_cholesky.c test_cod.c test_common.c + +TESTS = $(check_PROGRAMS) + +check_PROGRAMS = test + +test_SOURCES = test.c +test_LDADD = libgsllinalg.la ../blas/libgslblas.la ../cblas/libgslcblas.la ../permutation/libgslpermutation.la ../matrix/libgslmatrix.la ../vector/libgslvector.la ../block/libgslblock.la ../complex/libgslcomplex.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la ../rng/libgslrng.la diff --git a/gsl-2.5/linalg/Makefile.in b/gsl-2.5/linalg/Makefile.in new file mode 100644 index 00000000..fbf6e876 --- /dev/null +++ b/gsl-2.5/linalg/Makefile.in @@ -0,0 +1,1062 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + + +VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +check_PROGRAMS = test$(EXEEXT) +subdir = linalg +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp \ + $(noinst_HEADERS) $(pkginclude_HEADERS) \ + $(top_srcdir)/test-driver ChangeLog TODO +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +libgsllinalg_la_LIBADD = +am_libgsllinalg_la_OBJECTS = cod.lo condest.lo invtri.lo multiply.lo \ + exponential.lo tridiag.lo lu.lo luc.lo hh.lo qr.lo qrpt.lo \ + lq.lo ptlq.lo svd.lo householder.lo householdercomplex.lo \ + hessenberg.lo hesstri.lo cholesky.lo choleskyc.lo mcholesky.lo \ + pcholesky.lo symmtd.lo hermtd.lo bidiag.lo balance.lo \ + balancemat.lo inline.lo +libgsllinalg_la_OBJECTS = $(am_libgsllinalg_la_OBJECTS) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +am_test_OBJECTS = test.$(OBJEXT) +test_OBJECTS = $(am_test_OBJECTS) +test_DEPENDENCIES = libgsllinalg.la ../blas/libgslblas.la \ + ../cblas/libgslcblas.la ../permutation/libgslpermutation.la \ + ../matrix/libgslmatrix.la ../vector/libgslvector.la \ + ../block/libgslblock.la ../complex/libgslcomplex.la \ + ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la \ + ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la \ + ../rng/libgslrng.la +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libgsllinalg_la_SOURCES) $(test_SOURCES) +DIST_SOURCES = $(libgsllinalg_la_SOURCES) $(test_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(pkgincludedir)" +HEADERS = $(noinst_HEADERS) $(pkginclude_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = @EXEEXT@ .test +LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +GSLCBLAS_LDFLAGS = @GSLCBLAS_LDFLAGS@ +GSL_CFLAGS = @GSL_CFLAGS@ +GSL_LDFLAGS = @GSL_LDFLAGS@ +GSL_LIBADD = @GSL_LIBADD@ +GSL_LIBM = @GSL_LIBM@ +GSL_LIBS = @GSL_LIBS@ +GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ +GSL_LT_VERSION = @GSL_LT_VERSION@ +GSL_MAJOR_VERSION = @GSL_MAJOR_VERSION@ +GSL_MINOR_VERSION = @GSL_MINOR_VERSION@ +HAVE_AIX_IEEE_INTERFACE = @HAVE_AIX_IEEE_INTERFACE@ +HAVE_DARWIN86_IEEE_INTERFACE = @HAVE_DARWIN86_IEEE_INTERFACE@ +HAVE_DARWIN_IEEE_INTERFACE = @HAVE_DARWIN_IEEE_INTERFACE@ +HAVE_FREEBSD_IEEE_INTERFACE = @HAVE_FREEBSD_IEEE_INTERFACE@ +HAVE_GNUM68K_IEEE_INTERFACE = @HAVE_GNUM68K_IEEE_INTERFACE@ +HAVE_GNUPPC_IEEE_INTERFACE = @HAVE_GNUPPC_IEEE_INTERFACE@ +HAVE_GNUSPARC_IEEE_INTERFACE = @HAVE_GNUSPARC_IEEE_INTERFACE@ +HAVE_GNUX86_IEEE_INTERFACE = @HAVE_GNUX86_IEEE_INTERFACE@ +HAVE_HPUX11_IEEE_INTERFACE = @HAVE_HPUX11_IEEE_INTERFACE@ +HAVE_HPUX_IEEE_INTERFACE = @HAVE_HPUX_IEEE_INTERFACE@ +HAVE_IRIX_IEEE_INTERFACE = @HAVE_IRIX_IEEE_INTERFACE@ +HAVE_NETBSD_IEEE_INTERFACE = @HAVE_NETBSD_IEEE_INTERFACE@ +HAVE_OPENBSD_IEEE_INTERFACE = @HAVE_OPENBSD_IEEE_INTERFACE@ +HAVE_OS2EMX_IEEE_INTERFACE = @HAVE_OS2EMX_IEEE_INTERFACE@ +HAVE_SOLARIS_IEEE_INTERFACE = @HAVE_SOLARIS_IEEE_INTERFACE@ +HAVE_SUNOS4_IEEE_INTERFACE = @HAVE_SUNOS4_IEEE_INTERFACE@ +HAVE_TRU64_IEEE_INTERFACE = @HAVE_TRU64_IEEE_INTERFACE@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBM = @LIBM@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +noinst_LTLIBRARIES = libgsllinalg.la +pkginclude_HEADERS = gsl_linalg.h +AM_CPPFLAGS = -I$(top_srcdir) +libgsllinalg_la_SOURCES = cod.c condest.c invtri.c multiply.c exponential.c tridiag.c tridiag.h lu.c luc.c hh.c qr.c qrpt.c lq.c ptlq.c svd.c householder.c householdercomplex.c hessenberg.c hesstri.c cholesky.c choleskyc.c mcholesky.c pcholesky.c symmtd.c hermtd.c bidiag.c balance.c balancemat.c inline.c +noinst_HEADERS = apply_givens.c cholesky_common.c svdstep.c tridiag.h test_cholesky.c test_cod.c test_common.c +TESTS = $(check_PROGRAMS) +test_SOURCES = test.c +test_LDADD = libgsllinalg.la ../blas/libgslblas.la ../cblas/libgslcblas.la ../permutation/libgslpermutation.la ../matrix/libgslmatrix.la ../vector/libgslvector.la ../block/libgslblock.la ../complex/libgslcomplex.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la ../rng/libgslrng.la +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu linalg/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu linalg/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libgsllinalg.la: $(libgsllinalg_la_OBJECTS) $(libgsllinalg_la_DEPENDENCIES) $(EXTRA_libgsllinalg_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(libgsllinalg_la_OBJECTS) $(libgsllinalg_la_LIBADD) $(LIBS) + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) $(EXTRA_test_DEPENDENCIES) + @rm -f test$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_OBJECTS) $(test_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/balance.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/balancemat.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bidiag.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cholesky.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/choleskyc.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cod.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/condest.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/exponential.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hermtd.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hessenberg.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hesstri.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hh.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/householder.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/householdercomplex.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/inline.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/invtri.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lq.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lu.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/luc.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mcholesky.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/multiply.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pcholesky.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ptlq.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/qr.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/qrpt.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/svd.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/symmtd.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tridiag.Plo@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-pkgincludeHEADERS: $(pkginclude_HEADERS) + @$(NORMAL_INSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \ + done + +uninstall-pkgincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + else \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_PROGRAMS) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +test.log: test$(EXEEXT) + @p='test$(EXEEXT)'; \ + b='test'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +@am__EXEEXT_TRUE@.test$(EXEEXT).log: +@am__EXEEXT_TRUE@ @p='$<'; \ +@am__EXEEXT_TRUE@ $(am__set_b); \ +@am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +@am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ +@am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +@am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-am +all-am: Makefile $(LTLIBRARIES) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(pkgincludedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-pkgincludeHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-pkgincludeHEADERS + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES cscopelist-am ctags ctags-am distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-pkgincludeHEADERS \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + recheck tags tags-am uninstall uninstall-am \ + uninstall-pkgincludeHEADERS + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gsl-2.5/linalg/TODO b/gsl-2.5/linalg/TODO new file mode 100644 index 00000000..fe088064 --- /dev/null +++ b/gsl-2.5/linalg/TODO @@ -0,0 +1,13 @@ +# -*- org -*- +#+CATEGORY: linalg + +* Support M row) */ + +#if USE_BLAS + { + k = GSL_MIN(i,j); + gsl_matrix_view L0 = gsl_matrix_submatrix(L, k, 0, N-k, j+1); + gsl_vector_view Li = gsl_matrix_column(&L0.matrix,i); + gsl_vector_view Lj = gsl_matrix_column(&L0.matrix,j); + gsl_blas_drot(&Li.vector, &Lj.vector, c, -s); + } +#else + for (k = GSL_MIN (i, j); k < N; k++) + { + double lki = gsl_matrix_get (L, k, i); + double lkj = gsl_matrix_get (L, k, j); + gsl_matrix_set (L, k, i, c * lki - s * lkj); + gsl_matrix_set (L, k, j, s * lki + c * lkj); + } +#endif +} diff --git a/gsl-2.5/linalg/balance.c b/gsl-2.5/linalg/balance.c new file mode 100644 index 00000000..fd379108 --- /dev/null +++ b/gsl-2.5/linalg/balance.c @@ -0,0 +1,86 @@ +/* linalg/balance.c + * + * Copyright (C) 2001, 2004, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Balance a general matrix by scaling the columns + * + * A_new = A D^{-1} + * + * where D is a diagonal matrix + */ + +#include +#include +#include +#include +#include +#include + +#include + +int +gsl_linalg_balance_columns (gsl_matrix * A, gsl_vector * D) +{ + const size_t N = A->size2; + size_t j; + + if (D->size != A->size2) + { + GSL_ERROR("length of D must match second dimension of A", GSL_EINVAL); + } + + gsl_vector_set_all (D, 1.0); + + for (j = 0; j < N; j++) + { + gsl_vector_view A_j = gsl_matrix_column (A, j); + + double s = gsl_blas_dasum(&A_j.vector); + + double f = 1.0; + + if (s == 0.0 || !gsl_finite(s)) + { + gsl_vector_set (D, j, f); + continue; + } + + /* FIXME: we could use frexp() here */ + + while (s > 1.0) + { + s /= 2.0; + f *= 2.0; + } + + while (s < 0.5) + { + s *= 2.0; + f /= 2.0; + } + + gsl_vector_set (D, j, f); + + if (f != 1.0) + { + gsl_blas_dscal(1.0/f, &A_j.vector); + } + } + + return GSL_SUCCESS; +} diff --git a/gsl-2.5/linalg/balance.lo b/gsl-2.5/linalg/balance.lo new file mode 100644 index 00000000..17336787 --- /dev/null +++ b/gsl-2.5/linalg/balance.lo @@ -0,0 +1,12 @@ +# balance.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/balance.o' + +# Name of the non-PIC object +non_pic_object='balance.o' + diff --git a/gsl-2.5/linalg/balancemat.c b/gsl-2.5/linalg/balancemat.c new file mode 100644 index 00000000..f07b1df3 --- /dev/null +++ b/gsl-2.5/linalg/balancemat.c @@ -0,0 +1,186 @@ +/* linalg/balance.c + * + * Copyright (C) 2006 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Balance a general matrix by scaling the rows and columns, so the + * new row and column norms are the same order of magnitude. + * + * B = D^-1 A D + * + * where D is a diagonal matrix + * + * This is necessary for the unsymmetric eigenvalue problem since the + * calculation can become numerically unstable for unbalanced + * matrices. + * + * See Golub & Van Loan, "Matrix Computations" (3rd ed), Section 7.5.7 + * and Wilkinson & Reinsch, "Handbook for Automatic Computation", II/11 p320. + */ + +#include +#include +#include +#include +#include +#include + +#include + +#define FLOAT_RADIX 2.0 +#define FLOAT_RADIX_SQ (FLOAT_RADIX * FLOAT_RADIX) + +int +gsl_linalg_balance_matrix(gsl_matrix * A, gsl_vector * D) +{ + const size_t N = A->size1; + + if (N != D->size) + { + GSL_ERROR ("vector must match matrix size", GSL_EBADLEN); + } + else + { + double row_norm, + col_norm; + int not_converged; + gsl_vector_view v; + + /* initialize D to the identity matrix */ + gsl_vector_set_all(D, 1.0); + + not_converged = 1; + + while (not_converged) + { + size_t i, j; + double g, f, s; + + not_converged = 0; + + for (i = 0; i < N; ++i) + { + row_norm = 0.0; + col_norm = 0.0; + + for (j = 0; j < N; ++j) + { + if (j != i) + { + col_norm += fabs(gsl_matrix_get(A, j, i)); + row_norm += fabs(gsl_matrix_get(A, i, j)); + } + } + + if ((col_norm == 0.0) || (row_norm == 0.0)) + { + continue; + } + + g = row_norm / FLOAT_RADIX; + f = 1.0; + s = col_norm + row_norm; + + /* + * find the integer power of the machine radix which + * comes closest to balancing the matrix + */ + while (col_norm < g) + { + f *= FLOAT_RADIX; + col_norm *= FLOAT_RADIX_SQ; + } + + g = row_norm * FLOAT_RADIX; + + while (col_norm > g) + { + f /= FLOAT_RADIX; + col_norm /= FLOAT_RADIX_SQ; + } + + if ((row_norm + col_norm) < 0.95 * s * f) + { + not_converged = 1; + + g = 1.0 / f; + + /* + * apply similarity transformation D, where + * D_{ij} = f_i * delta_{ij} + */ + + /* multiply by D^{-1} on the left */ + v = gsl_matrix_row(A, i); + gsl_blas_dscal(g, &v.vector); + + /* multiply by D on the right */ + v = gsl_matrix_column(A, i); + gsl_blas_dscal(f, &v.vector); + + /* keep track of transformation */ + gsl_vector_set(D, i, gsl_vector_get(D, i) * f); + } + } + } + + return GSL_SUCCESS; + } +} /* gsl_linalg_balance_matrix() */ + +/* +gsl_linalg_balance_accum() + Accumulate a balancing transformation into a matrix. +This is used during the computation of Schur vectors since the +Schur vectors computed are the vectors for the balanced matrix. +We must at some point accumulate the balancing transformation into +the Schur vector matrix to get the vectors for the original matrix. + +A -> D A + +where D is the diagonal matrix + +Inputs: A - matrix to transform + D - vector containing diagonal elements of D +*/ + +int +gsl_linalg_balance_accum(gsl_matrix *A, gsl_vector *D) +{ + const size_t N = A->size1; + + if (N != D->size) + { + GSL_ERROR ("vector must match matrix size", GSL_EBADLEN); + } + else + { + size_t i; + double s; + gsl_vector_view r; + + for (i = 0; i < N; ++i) + { + s = gsl_vector_get(D, i); + r = gsl_matrix_row(A, i); + + gsl_blas_dscal(s, &r.vector); + } + + return GSL_SUCCESS; + } +} /* gsl_linalg_balance_accum() */ diff --git a/gsl-2.5/linalg/balancemat.lo b/gsl-2.5/linalg/balancemat.lo new file mode 100644 index 00000000..cfd43727 --- /dev/null +++ b/gsl-2.5/linalg/balancemat.lo @@ -0,0 +1,12 @@ +# balancemat.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/balancemat.o' + +# Name of the non-PIC object +non_pic_object='balancemat.o' + diff --git a/gsl-2.5/linalg/bidiag.c b/gsl-2.5/linalg/bidiag.c new file mode 100644 index 00000000..0884fb91 --- /dev/null +++ b/gsl-2.5/linalg/bidiag.c @@ -0,0 +1,364 @@ +/* linalg/bidiag.c + * + * Copyright (C) 2001, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Factorise a matrix A into + * + * A = U B V^T + * + * where U and V are orthogonal and B is upper bidiagonal. + * + * On exit, B is stored in the diagonal and first superdiagonal of A. + * + * U is stored as a packed set of Householder transformations in the + * lower triangular part of the input matrix below the diagonal. + * + * V is stored as a packed set of Householder transformations in the + * upper triangular part of the input matrix above the first + * superdiagonal. + * + * The full matrix for U can be obtained as the product + * + * U = U_1 U_2 .. U_N + * + * where + * + * U_i = (I - tau_i * u_i * u_i') + * + * and where u_i is a Householder vector + * + * u_i = [0, .. , 0, 1, A(i+1,i), A(i+3,i), .. , A(M,i)] + * + * The full matrix for V can be obtained as the product + * + * V = V_1 V_2 .. V_(N-2) + * + * where + * + * V_i = (I - tau_i * v_i * v_i') + * + * and where v_i is a Householder vector + * + * v_i = [0, .. , 0, 1, A(i,i+2), A(i,i+3), .. , A(i,N)] + * + * See Golub & Van Loan, "Matrix Computations" (3rd ed), Algorithm 5.4.2 + * + * Note: this description uses 1-based indices. The code below uses + * 0-based indices + */ + +#include +#include +#include +#include +#include +#include + +#include + +int +gsl_linalg_bidiag_decomp (gsl_matrix * A, gsl_vector * tau_U, gsl_vector * tau_V) +{ + if (A->size1 < A->size2) + { + GSL_ERROR ("bidiagonal decomposition requires M>=N", GSL_EBADLEN); + } + else if (tau_U->size != A->size2) + { + GSL_ERROR ("size of tau_U must be N", GSL_EBADLEN); + } + else if (tau_V->size + 1 != A->size2) + { + GSL_ERROR ("size of tau_V must be (N - 1)", GSL_EBADLEN); + } + else + { + const size_t M = A->size1; + const size_t N = A->size2; + size_t i; + + for (i = 0 ; i < N; i++) + { + /* Apply Householder transformation to current column */ + + { + gsl_vector_view c = gsl_matrix_column (A, i); + gsl_vector_view v = gsl_vector_subvector (&c.vector, i, M - i); + double tau_i = gsl_linalg_householder_transform (&v.vector); + + /* Apply the transformation to the remaining columns */ + + if (i + 1 < N) + { + gsl_matrix_view m = + gsl_matrix_submatrix (A, i, i + 1, M - i, N - (i + 1)); + gsl_linalg_householder_hm (tau_i, &v.vector, &m.matrix); + } + + gsl_vector_set (tau_U, i, tau_i); + + } + + /* Apply Householder transformation to current row */ + + if (i + 1 < N) + { + gsl_vector_view r = gsl_matrix_row (A, i); + gsl_vector_view v = gsl_vector_subvector (&r.vector, i + 1, N - (i + 1)); + double tau_i = gsl_linalg_householder_transform (&v.vector); + + /* Apply the transformation to the remaining rows */ + + if (i + 1 < M) + { + gsl_matrix_view m = + gsl_matrix_submatrix (A, i+1, i+1, M - (i+1), N - (i+1)); + gsl_linalg_householder_mh (tau_i, &v.vector, &m.matrix); + } + + gsl_vector_set (tau_V, i, tau_i); + } + } + } + + return GSL_SUCCESS; +} + +/* Form the orthogonal matrices U, V, diagonal d and superdiagonal sd + from the packed bidiagonal matrix A */ + +int +gsl_linalg_bidiag_unpack (const gsl_matrix * A, + const gsl_vector * tau_U, + gsl_matrix * U, + const gsl_vector * tau_V, + gsl_matrix * V, + gsl_vector * diag, + gsl_vector * superdiag) +{ + const size_t M = A->size1; + const size_t N = A->size2; + + const size_t K = GSL_MIN(M, N); + + if (M < N) + { + GSL_ERROR ("matrix A must have M >= N", GSL_EBADLEN); + } + else if (tau_U->size != K) + { + GSL_ERROR ("size of tau must be MIN(M,N)", GSL_EBADLEN); + } + else if (tau_V->size + 1 != K) + { + GSL_ERROR ("size of tau must be MIN(M,N) - 1", GSL_EBADLEN); + } + else if (U->size1 != M || U->size2 != N) + { + GSL_ERROR ("size of U must be M x N", GSL_EBADLEN); + } + else if (V->size1 != N || V->size2 != N) + { + GSL_ERROR ("size of V must be N x N", GSL_EBADLEN); + } + else if (diag->size != K) + { + GSL_ERROR ("size of diagonal must match size of A", GSL_EBADLEN); + } + else if (superdiag->size + 1 != K) + { + GSL_ERROR ("size of subdiagonal must be (diagonal size - 1)", GSL_EBADLEN); + } + else + { + size_t i, j; + + /* Copy diagonal into diag */ + + for (i = 0; i < N; i++) + { + double Aii = gsl_matrix_get (A, i, i); + gsl_vector_set (diag, i, Aii); + } + + /* Copy superdiagonal into superdiag */ + + for (i = 0; i < N - 1; i++) + { + double Aij = gsl_matrix_get (A, i, i+1); + gsl_vector_set (superdiag, i, Aij); + } + + /* Initialize V to the identity */ + + gsl_matrix_set_identity (V); + + for (i = N - 1; i-- > 0;) + { + /* Householder row transformation to accumulate V */ + gsl_vector_const_view r = gsl_matrix_const_row (A, i); + gsl_vector_const_view h = + gsl_vector_const_subvector (&r.vector, i + 1, N - (i+1)); + + double ti = gsl_vector_get (tau_V, i); + + gsl_matrix_view m = + gsl_matrix_submatrix (V, i + 1, i + 1, N-(i+1), N-(i+1)); + + gsl_linalg_householder_hm (ti, &h.vector, &m.matrix); + } + + /* Initialize U to the identity */ + + gsl_matrix_set_identity (U); + + for (j = N; j-- > 0;) + { + /* Householder column transformation to accumulate U */ + gsl_vector_const_view c = gsl_matrix_const_column (A, j); + gsl_vector_const_view h = gsl_vector_const_subvector (&c.vector, j, M - j); + double tj = gsl_vector_get (tau_U, j); + + gsl_matrix_view m = + gsl_matrix_submatrix (U, j, j, M-j, N-j); + + gsl_linalg_householder_hm (tj, &h.vector, &m.matrix); + } + + return GSL_SUCCESS; + } +} + +int +gsl_linalg_bidiag_unpack2 (gsl_matrix * A, + gsl_vector * tau_U, + gsl_vector * tau_V, + gsl_matrix * V) +{ + const size_t M = A->size1; + const size_t N = A->size2; + + const size_t K = GSL_MIN(M, N); + + if (M < N) + { + GSL_ERROR ("matrix A must have M >= N", GSL_EBADLEN); + } + else if (tau_U->size != K) + { + GSL_ERROR ("size of tau must be MIN(M,N)", GSL_EBADLEN); + } + else if (tau_V->size + 1 != K) + { + GSL_ERROR ("size of tau must be MIN(M,N) - 1", GSL_EBADLEN); + } + else if (V->size1 != N || V->size2 != N) + { + GSL_ERROR ("size of V must be N x N", GSL_EBADLEN); + } + else + { + size_t i, j; + + /* Initialize V to the identity */ + + gsl_matrix_set_identity (V); + + for (i = N - 1; i-- > 0;) + { + /* Householder row transformation to accumulate V */ + gsl_vector_const_view r = gsl_matrix_const_row (A, i); + gsl_vector_const_view h = + gsl_vector_const_subvector (&r.vector, i + 1, N - (i+1)); + + double ti = gsl_vector_get (tau_V, i); + + gsl_matrix_view m = + gsl_matrix_submatrix (V, i + 1, i + 1, N-(i+1), N-(i+1)); + + gsl_linalg_householder_hm (ti, &h.vector, &m.matrix); + } + + /* Copy superdiagonal into tau_v */ + + for (i = 0; i < N - 1; i++) + { + double Aij = gsl_matrix_get (A, i, i+1); + gsl_vector_set (tau_V, i, Aij); + } + + /* Allow U to be unpacked into the same memory as A, copy + diagonal into tau_U */ + + for (j = N; j-- > 0;) + { + /* Householder column transformation to accumulate U */ + double tj = gsl_vector_get (tau_U, j); + double Ajj = gsl_matrix_get (A, j, j); + gsl_matrix_view m = gsl_matrix_submatrix (A, j, j, M-j, N-j); + + gsl_vector_set (tau_U, j, Ajj); + gsl_linalg_householder_hm1 (tj, &m.matrix); + } + + return GSL_SUCCESS; + } +} + + +int +gsl_linalg_bidiag_unpack_B (const gsl_matrix * A, + gsl_vector * diag, + gsl_vector * superdiag) +{ + const size_t M = A->size1; + const size_t N = A->size2; + + const size_t K = GSL_MIN(M, N); + + if (diag->size != K) + { + GSL_ERROR ("size of diagonal must match size of A", GSL_EBADLEN); + } + else if (superdiag->size + 1 != K) + { + GSL_ERROR ("size of subdiagonal must be (matrix size - 1)", GSL_EBADLEN); + } + else + { + size_t i; + + /* Copy diagonal into diag */ + + for (i = 0; i < K; i++) + { + double Aii = gsl_matrix_get (A, i, i); + gsl_vector_set (diag, i, Aii); + } + + /* Copy superdiagonal into superdiag */ + + for (i = 0; i < K - 1; i++) + { + double Aij = gsl_matrix_get (A, i, i+1); + gsl_vector_set (superdiag, i, Aij); + } + + return GSL_SUCCESS; + } +} diff --git a/gsl-2.5/linalg/bidiag.lo b/gsl-2.5/linalg/bidiag.lo new file mode 100644 index 00000000..6956b270 --- /dev/null +++ b/gsl-2.5/linalg/bidiag.lo @@ -0,0 +1,12 @@ +# bidiag.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/bidiag.o' + +# Name of the non-PIC object +non_pic_object='bidiag.o' + diff --git a/gsl-2.5/linalg/cholesky.c b/gsl-2.5/linalg/cholesky.c new file mode 100644 index 00000000..6a0c73e6 --- /dev/null +++ b/gsl-2.5/linalg/cholesky.c @@ -0,0 +1,655 @@ +/* Cholesky Decomposition + * + * Copyright (C) 2000 Thomas Walter + * Copyright (C) 2000, 2001, 2002, 2003, 2005, 2007 Brian Gough, Gerard Jungman + * Copyright (C) 2016 Patrick Alken + * + * This is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 3, or (at your option) any + * later version. + * + * This source 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. + * + * 03 May 2000: Modified for GSL by Brian Gough + * 29 Jul 2005: Additions by Gerard Jungman + * 04 Mar 2016: Change Cholesky algorithm to gaxpy version by Patrick Alken + */ + +/* + * Cholesky decomposition of a symmetrix positive definite matrix. + * This is useful to solve the matrix arising in + * periodic cubic splines + * approximating splines + * + * This algorithm does: + * A = L * L' + * with + * L := lower left triangle matrix + * L' := the transposed form of L. + * + */ + +#include + +#include +#include +#include +#include +#include +#include + +static double cholesky_norm1(const gsl_matrix * LLT, gsl_vector * work); +static int cholesky_Ainv(CBLAS_TRANSPOSE_t TransA, gsl_vector * x, void * params); + +/* +In GSL 2.2, we decided to modify the behavior of the Cholesky decomposition +to store the Cholesky factor in the lower triangle, and store the original +matrix in the upper triangle. Previous versions stored the Cholesky factor in +both places. The routine gsl_linalg_cholesky_decomp1 was added for the new +behavior, and gsl_linalg_cholesky_decomp is maintained for backward compatibility. +It will be removed in a future release. +*/ + +int +gsl_linalg_cholesky_decomp (gsl_matrix * A) +{ + int status; + + status = gsl_linalg_cholesky_decomp1(A); + if (status == GSL_SUCCESS) + { + gsl_matrix_transpose_tricpy('L', 0, A, A); + } + + return status; +} + +/* +gsl_linalg_cholesky_decomp1() + Perform Cholesky decomposition of a symmetric positive +definite matrix using lower triangle + +Inputs: A - (input) symmetric, positive definite matrix + (output) lower triangle contains Cholesky factor + +Return: success/error + +Notes: +1) Based on algorithm 4.2.1 (Gaxpy Cholesky) of Golub and +Van Loan, Matrix Computations (4th ed). + +2) original matrix is saved in upper triangle on output +*/ + +int +gsl_linalg_cholesky_decomp1 (gsl_matrix * A) +{ + const size_t M = A->size1; + const size_t N = A->size2; + + if (M != N) + { + GSL_ERROR("cholesky decomposition requires square matrix", GSL_ENOTSQR); + } + else + { + size_t j; + + /* save original matrix in upper triangle for later rcond calculation */ + gsl_matrix_transpose_tricpy('L', 0, A, A); + + for (j = 0; j < N; ++j) + { + double ajj; + gsl_vector_view v = gsl_matrix_subcolumn(A, j, j, N - j); /* A(j:n,j) */ + + if (j > 0) + { + gsl_vector_view w = gsl_matrix_subrow(A, j, 0, j); /* A(j,1:j-1)^T */ + gsl_matrix_view m = gsl_matrix_submatrix(A, j, 0, N - j, j); /* A(j:n,1:j-1) */ + + gsl_blas_dgemv(CblasNoTrans, -1.0, &m.matrix, &w.vector, 1.0, &v.vector); + } + + ajj = gsl_matrix_get(A, j, j); + + if (ajj <= 0.0) + { + GSL_ERROR("matrix is not positive definite", GSL_EDOM); + } + + ajj = sqrt(ajj); + gsl_vector_scale(&v.vector, 1.0 / ajj); + } + + return GSL_SUCCESS; + } +} + +int +gsl_linalg_cholesky_solve (const gsl_matrix * LLT, + const gsl_vector * b, + gsl_vector * x) +{ + if (LLT->size1 != LLT->size2) + { + GSL_ERROR ("cholesky matrix must be square", GSL_ENOTSQR); + } + else if (LLT->size1 != b->size) + { + GSL_ERROR ("matrix size must match b size", GSL_EBADLEN); + } + else if (LLT->size2 != x->size) + { + GSL_ERROR ("matrix size must match solution size", GSL_EBADLEN); + } + else + { + int status; + + /* copy x <- b */ + gsl_vector_memcpy (x, b); + + status = gsl_linalg_cholesky_svx(LLT, x); + + return status; + } +} + +int +gsl_linalg_cholesky_svx (const gsl_matrix * LLT, + gsl_vector * x) +{ + if (LLT->size1 != LLT->size2) + { + GSL_ERROR ("cholesky matrix must be square", GSL_ENOTSQR); + } + else if (LLT->size2 != x->size) + { + GSL_ERROR ("matrix size must match solution size", GSL_EBADLEN); + } + else + { + /* solve for c using forward-substitution, L c = b */ + gsl_blas_dtrsv (CblasLower, CblasNoTrans, CblasNonUnit, LLT, x); + + /* perform back-substitution, L^T x = c */ + gsl_blas_dtrsv (CblasLower, CblasTrans, CblasNonUnit, LLT, x); + + return GSL_SUCCESS; + } +} + +int +gsl_linalg_cholesky_solve_mat (const gsl_matrix * LLT, + const gsl_matrix * B, + gsl_matrix * X) +{ + if (LLT->size1 != LLT->size2) + { + GSL_ERROR ("cholesky matrix must be square", GSL_ENOTSQR); + } + else if (LLT->size1 != B->size1) + { + GSL_ERROR ("matrix size must match B size", GSL_EBADLEN); + } + else if (LLT->size2 != X->size1) + { + GSL_ERROR ("matrix size must match solution size", GSL_EBADLEN); + } + else + { + int status; + + /* copy X <- B */ + gsl_matrix_memcpy (X, B); + + status = gsl_linalg_cholesky_svx_mat(LLT, X); + + return status; + } +} + +int +gsl_linalg_cholesky_svx_mat (const gsl_matrix * LLT, + gsl_matrix * X) +{ + if (LLT->size1 != LLT->size2) + { + GSL_ERROR ("cholesky matrix must be square", GSL_ENOTSQR); + } + else if (LLT->size2 != X->size1) + { + GSL_ERROR ("matrix size must match solution size", GSL_EBADLEN); + } + else + { + /* solve for C using forward-substitution, L C = B */ + gsl_blas_dtrsm (CblasLeft, CblasLower, CblasNoTrans, CblasNonUnit, 1.0, + LLT, X); + + /* perform back-substitution, L^T X = C */ + gsl_blas_dtrsm (CblasLeft, CblasLower, CblasTrans, CblasNonUnit, 1.0, + LLT, X); + + return GSL_SUCCESS; + } +} + +/* +gsl_linalg_cholesky_invert() + Compute the inverse of a symmetric positive definite matrix in +Cholesky form. + +Inputs: LLT - matrix in cholesky form on input + A^{-1} = L^{-t} L^{-1} on output + +Return: success or error +*/ + +int +gsl_linalg_cholesky_invert(gsl_matrix * LLT) +{ + if (LLT->size1 != LLT->size2) + { + GSL_ERROR ("cholesky matrix must be square", GSL_ENOTSQR); + } + else + { + const size_t N = LLT->size1; + size_t i; + gsl_vector_view v1, v2; + + /* invert the lower triangle of LLT */ + gsl_linalg_tri_lower_invert(LLT); + + /* + * The lower triangle of LLT now contains L^{-1}. Now compute + * A^{-1} = L^{-T} L^{-1} + */ + + for (i = 0; i < N; ++i) + { + double aii = gsl_matrix_get(LLT, i, i); + + if (i < N - 1) + { + double tmp; + + v1 = gsl_matrix_subcolumn(LLT, i, i, N - i); + gsl_blas_ddot(&v1.vector, &v1.vector, &tmp); + gsl_matrix_set(LLT, i, i, tmp); + + if (i > 0) + { + gsl_matrix_view m = gsl_matrix_submatrix(LLT, i + 1, 0, N - i - 1, i); + + v1 = gsl_matrix_subcolumn(LLT, i, i + 1, N - i - 1); + v2 = gsl_matrix_subrow(LLT, i, 0, i); + + gsl_blas_dgemv(CblasTrans, 1.0, &m.matrix, &v1.vector, aii, &v2.vector); + } + } + else + { + v1 = gsl_matrix_row(LLT, N - 1); + gsl_blas_dscal(aii, &v1.vector); + } + } + + /* copy lower triangle to upper */ + gsl_matrix_transpose_tricpy('L', 0, LLT, LLT); + + return GSL_SUCCESS; + } +} /* gsl_linalg_cholesky_invert() */ + +int +gsl_linalg_cholesky_decomp_unit(gsl_matrix * A, gsl_vector * D) +{ + const size_t N = A->size1; + size_t i, j; + + /* initial Cholesky */ + int stat_chol = gsl_linalg_cholesky_decomp1(A); + + if(stat_chol == GSL_SUCCESS) + { + /* calculate D from diagonal part of initial Cholesky */ + for(i = 0; i < N; ++i) + { + const double C_ii = gsl_matrix_get(A, i, i); + gsl_vector_set(D, i, C_ii*C_ii); + } + + /* multiply initial Cholesky by 1/sqrt(D) on the right */ + for(i = 0; i < N; ++i) + { + for(j = 0; j < N; ++j) + { + gsl_matrix_set(A, i, j, gsl_matrix_get(A, i, j) / sqrt(gsl_vector_get(D, j))); + } + } + + /* Because the initial Cholesky contained both L and transpose(L), + the result of the multiplication is not symmetric anymore; + but the lower triangle _is_ correct. Therefore we reflect + it to the upper triangle and declare victory. + */ + for(i = 0; i < N; ++i) + for(j = i + 1; j < N; ++j) + gsl_matrix_set(A, i, j, gsl_matrix_get(A, j, i)); + } + + return stat_chol; +} + +/* +gsl_linalg_cholesky_scale() + This function computes scale factors diag(S), such that + +diag(S) A diag(S) + +has a condition number within a factor N of the matrix +with the smallest condition number over all possible +diagonal scalings. See Corollary 7.6 of: + +N. J. Higham, Accuracy and Stability of Numerical Algorithms (2nd Edition), +SIAM, 2002. + +Inputs: A - symmetric positive definite matrix + S - (output) scale factors, S_i = 1 / sqrt(A_ii) +*/ + +int +gsl_linalg_cholesky_scale(const gsl_matrix * A, gsl_vector * S) +{ + const size_t M = A->size1; + const size_t N = A->size2; + + if (M != N) + { + GSL_ERROR("A is not a square matrix", GSL_ENOTSQR); + } + else if (N != S->size) + { + GSL_ERROR("S must have length N", GSL_EBADLEN); + } + else + { + size_t i; + + /* compute S_i = 1/sqrt(A_{ii}) */ + for (i = 0; i < N; ++i) + { + double Aii = gsl_matrix_get(A, i, i); + + if (Aii <= 0.0) + gsl_vector_set(S, i, 1.0); /* matrix not positive definite */ + else + gsl_vector_set(S, i, 1.0 / sqrt(Aii)); + } + + return GSL_SUCCESS; + } +} + +/* +gsl_linalg_cholesky_scale_apply() + This function applies scale transformation to A: + +A <- diag(S) A diag(S) + +Inputs: A - (input/output) + on input, symmetric positive definite matrix + on output, diag(S) * A * diag(S) in lower triangle + S - (input) scale factors +*/ + +int +gsl_linalg_cholesky_scale_apply(gsl_matrix * A, const gsl_vector * S) +{ + const size_t M = A->size1; + const size_t N = A->size2; + + if (M != N) + { + GSL_ERROR("A is not a square matrix", GSL_ENOTSQR); + } + else if (N != S->size) + { + GSL_ERROR("S must have length N", GSL_EBADLEN); + } + else + { + size_t i, j; + + /* compute: A <- diag(S) A diag(S) using lower triangle */ + for (j = 0; j < N; ++j) + { + double sj = gsl_vector_get(S, j); + + for (i = j; i < N; ++i) + { + double si = gsl_vector_get(S, i); + double *Aij = gsl_matrix_ptr(A, i, j); + *Aij *= si * sj; + } + } + + return GSL_SUCCESS; + } +} + +int +gsl_linalg_cholesky_decomp2(gsl_matrix * A, gsl_vector * S) +{ + const size_t M = A->size1; + const size_t N = A->size2; + + if (M != N) + { + GSL_ERROR("cholesky decomposition requires square matrix", GSL_ENOTSQR); + } + else if (N != S->size) + { + GSL_ERROR("S must have length N", GSL_EBADLEN); + } + else + { + int status; + + /* compute scaling factors to reduce cond(A) */ + status = gsl_linalg_cholesky_scale(A, S); + if (status) + return status; + + /* apply scaling factors */ + status = gsl_linalg_cholesky_scale_apply(A, S); + if (status) + return status; + + /* compute Cholesky decomposition of diag(S) A diag(S) */ + status = gsl_linalg_cholesky_decomp1(A); + if (status) + return status; + + return GSL_SUCCESS; + } +} + +int +gsl_linalg_cholesky_svx2 (const gsl_matrix * LLT, + const gsl_vector * S, + gsl_vector * x) +{ + if (LLT->size1 != LLT->size2) + { + GSL_ERROR ("cholesky matrix must be square", GSL_ENOTSQR); + } + else if (LLT->size2 != S->size) + { + GSL_ERROR ("matrix size must match S", GSL_EBADLEN); + } + else if (LLT->size2 != x->size) + { + GSL_ERROR ("matrix size must match solution size", GSL_EBADLEN); + } + else + { + /* b~ = diag(S) b */ + gsl_vector_mul(x, S); + + /* Solve for c using forward-substitution, L c = b~ */ + gsl_blas_dtrsv (CblasLower, CblasNoTrans, CblasNonUnit, LLT, x); + + /* Perform back-substitution, L^T x~ = c */ + gsl_blas_dtrsv (CblasLower, CblasTrans, CblasNonUnit, LLT, x); + + /* compute original solution vector x = S x~ */ + gsl_vector_mul(x, S); + + return GSL_SUCCESS; + } +} + +int +gsl_linalg_cholesky_solve2 (const gsl_matrix * LLT, + const gsl_vector * S, + const gsl_vector * b, + gsl_vector * x) +{ + if (LLT->size1 != LLT->size2) + { + GSL_ERROR ("cholesky matrix must be square", GSL_ENOTSQR); + } + else if (LLT->size1 != S->size) + { + GSL_ERROR ("matrix size must match S size", GSL_EBADLEN); + } + else if (LLT->size1 != b->size) + { + GSL_ERROR ("matrix size must match b size", GSL_EBADLEN); + } + else if (LLT->size2 != x->size) + { + GSL_ERROR ("matrix size must match solution size", GSL_EBADLEN); + } + else + { + int status; + + /* Copy x <- b */ + gsl_vector_memcpy (x, b); + + status = gsl_linalg_cholesky_svx2(LLT, S, x); + + return status; + } +} + +int +gsl_linalg_cholesky_rcond (const gsl_matrix * LLT, double * rcond, + gsl_vector * work) +{ + const size_t M = LLT->size1; + const size_t N = LLT->size2; + + if (M != N) + { + GSL_ERROR ("cholesky matrix must be square", GSL_ENOTSQR); + } + else if (work->size != 3 * N) + { + GSL_ERROR ("work vector must have length 3*N", GSL_EBADLEN); + } + else + { + int status; + double Anorm = cholesky_norm1(LLT, work); /* ||A||_1 */ + double Ainvnorm; /* ||A^{-1}||_1 */ + + *rcond = 0.0; + + /* don't continue if matrix is singular */ + if (Anorm == 0.0) + return GSL_SUCCESS; + + /* estimate ||A^{-1}||_1 */ + status = gsl_linalg_invnorm1(N, cholesky_Ainv, (void *) LLT, &Ainvnorm, work); + + if (status) + return status; + + if (Ainvnorm != 0.0) + *rcond = (1.0 / Anorm) / Ainvnorm; + + return GSL_SUCCESS; + } +} + +/* compute 1-norm of original matrix, stored in upper triangle of LLT; + * diagonal entries have to be reconstructed */ +static double +cholesky_norm1(const gsl_matrix * LLT, gsl_vector * work) +{ + const size_t N = LLT->size1; + double max = 0.0; + size_t i, j; + + for (j = 0; j < N; ++j) + { + double sum = 0.0; + gsl_vector_const_view lj = gsl_matrix_const_subrow(LLT, j, 0, j + 1); + double Ajj; + + /* compute diagonal (j,j) entry of A */ + gsl_blas_ddot(&lj.vector, &lj.vector, &Ajj); + + for (i = 0; i < j; ++i) + { + double *wi = gsl_vector_ptr(work, i); + double Aij = gsl_matrix_get(LLT, i, j); + double absAij = fabs(Aij); + + sum += absAij; + *wi += absAij; + } + + gsl_vector_set(work, j, sum + fabs(Ajj)); + } + + for (i = 0; i < N; ++i) + { + double wi = gsl_vector_get(work, i); + max = GSL_MAX(max, wi); + } + + return max; +} + +/* x := A^{-1} x = A^{-t} x, A = L L^T */ +static int +cholesky_Ainv(CBLAS_TRANSPOSE_t TransA, gsl_vector * x, void * params) +{ + int status; + gsl_matrix * A = (gsl_matrix * ) params; + + (void) TransA; /* unused parameter warning */ + + /* compute L^{-1} x */ + status = gsl_blas_dtrsv(CblasLower, CblasNoTrans, CblasNonUnit, A, x); + if (status) + return status; + + /* compute L^{-t} x */ + status = gsl_blas_dtrsv(CblasLower, CblasTrans, CblasNonUnit, A, x); + if (status) + return status; + + return GSL_SUCCESS; +} diff --git a/gsl-2.5/linalg/cholesky.lo b/gsl-2.5/linalg/cholesky.lo new file mode 100644 index 00000000..a534867e --- /dev/null +++ b/gsl-2.5/linalg/cholesky.lo @@ -0,0 +1,12 @@ +# cholesky.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/cholesky.o' + +# Name of the non-PIC object +non_pic_object='cholesky.o' + diff --git a/gsl-2.5/linalg/cholesky_common.c b/gsl-2.5/linalg/cholesky_common.c new file mode 100644 index 00000000..15718254 --- /dev/null +++ b/gsl-2.5/linalg/cholesky_common.c @@ -0,0 +1,86 @@ +/* linalg/cholesky_common.c + * + * Copyright (C) 2016 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#define SWAP(a,b) do { double tmp = b ; b = a ; a = tmp ; } while(0) + +/* +cholesky_swap_rowcol() + Swap rows and columns i and j of symmetric matrix A, updating only the +lower triangle + +Inputs: A - symmetric matrix A, stored in lower triangle + i - index i + j - index j + +Return: success/error +*/ + +static int +cholesky_swap_rowcol(gsl_matrix * A, const size_t i, const size_t j) +{ + if (i != j) + { + const size_t N = A->size1; + double *Aii, *Ajj; + size_t ii, jj, k; + + /* organize so that ii < jj */ + if (i < j) + { + ii = i; + jj = j; + } + else + { + ii = j; + jj = i; + } + + /* swap subrows A(i,1:i-1) with A(j,1:i-1) */ + for (k = 0; k < ii; ++k) + { + double *Aik = gsl_matrix_ptr(A, ii, k); + double *Ajk = gsl_matrix_ptr(A, jj, k); + SWAP(*Aik, *Ajk); + } + + /* swap subrow A(j,i+1:j-1) with subcolumn A(i+1:j-1,i) */ + for (k = ii + 1; k < jj; ++k) + { + double *Ajk = gsl_matrix_ptr(A, jj, k); + double *Aki = gsl_matrix_ptr(A, k, ii); + SWAP(*Ajk, *Aki); + } + + /* swap subcolumns A(j+1:N,i) with A(j+1:N,j) */ + for (k = jj + 1; k < N; ++k) + { + double *Aki = gsl_matrix_ptr(A, k, ii); + double *Akj = gsl_matrix_ptr(A, k, jj); + SWAP(*Aki, *Akj); + } + + /* now swap diagonal elements A(i,i) and A(j,j) */ + Aii = gsl_matrix_ptr(A, ii, ii); + Ajj = gsl_matrix_ptr(A, jj, jj); + SWAP(*Aii, *Ajj); + } + + return GSL_SUCCESS; +} diff --git a/gsl-2.5/linalg/choleskyc.c b/gsl-2.5/linalg/choleskyc.c new file mode 100644 index 00000000..9cff18f5 --- /dev/null +++ b/gsl-2.5/linalg/choleskyc.c @@ -0,0 +1,322 @@ +/* linalg/choleskyc.c + * + * Copyright (C) 2007 Patrick Alken + * Copyright (C) 2010 Huan Wu (gsl_linalg_complex_cholesky_invert) + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/* + * This module contains routines related to the Cholesky decomposition + * of a complex Hermitian positive definite matrix. + */ + +static void cholesky_complex_conj_vector(gsl_vector_complex *v); + +/* +gsl_linalg_complex_cholesky_decomp() + Perform the Cholesky decomposition on a Hermitian positive definite +matrix. See Golub & Van Loan, "Matrix Computations" (3rd ed), +algorithm 4.2.2. + +Inputs: A - (input/output) complex postive definite matrix + +Return: success or error + +The lower triangle of A is overwritten with the Cholesky decomposition +*/ + +int +gsl_linalg_complex_cholesky_decomp(gsl_matrix_complex *A) +{ + const size_t N = A->size1; + + if (N != A->size2) + { + GSL_ERROR("cholesky decomposition requires square matrix", GSL_ENOTSQR); + } + else + { + size_t i, j; + gsl_complex z; + double ajj; + + for (j = 0; j < N; ++j) + { + z = gsl_matrix_complex_get(A, j, j); + ajj = GSL_REAL(z); + + if (j > 0) + { + gsl_vector_complex_const_view aj = + gsl_matrix_complex_const_subrow(A, j, 0, j); + + gsl_blas_zdotc(&aj.vector, &aj.vector, &z); + ajj -= GSL_REAL(z); + } + + if (ajj <= 0.0) + { + GSL_ERROR("matrix is not positive definite", GSL_EDOM); + } + + ajj = sqrt(ajj); + GSL_SET_COMPLEX(&z, ajj, 0.0); + gsl_matrix_complex_set(A, j, j, z); + + if (j < N - 1) + { + gsl_vector_complex_view av = + gsl_matrix_complex_subcolumn(A, j, j + 1, N - j - 1); + + if (j > 0) + { + gsl_vector_complex_view aj = + gsl_matrix_complex_subrow(A, j, 0, j); + gsl_matrix_complex_view am = + gsl_matrix_complex_submatrix(A, j + 1, 0, N - j - 1, j); + + cholesky_complex_conj_vector(&aj.vector); + + gsl_blas_zgemv(CblasNoTrans, + GSL_COMPLEX_NEGONE, + &am.matrix, + &aj.vector, + GSL_COMPLEX_ONE, + &av.vector); + + cholesky_complex_conj_vector(&aj.vector); + } + + gsl_blas_zdscal(1.0 / ajj, &av.vector); + } + } + + /* Now store L^H in upper triangle */ + for (i = 1; i < N; ++i) + { + for (j = 0; j < i; ++j) + { + z = gsl_matrix_complex_get(A, i, j); + gsl_matrix_complex_set(A, j, i, gsl_complex_conjugate(z)); + } + } + + return GSL_SUCCESS; + } +} /* gsl_linalg_complex_cholesky_decomp() */ + +/* +gsl_linalg_complex_cholesky_solve() + Solve A x = b where A is in cholesky form +*/ + +int +gsl_linalg_complex_cholesky_solve (const gsl_matrix_complex * cholesky, + const gsl_vector_complex * b, + gsl_vector_complex * x) +{ + if (cholesky->size1 != cholesky->size2) + { + GSL_ERROR ("cholesky matrix must be square", GSL_ENOTSQR); + } + else if (cholesky->size1 != b->size) + { + GSL_ERROR ("matrix size must match b size", GSL_EBADLEN); + } + else if (cholesky->size2 != x->size) + { + GSL_ERROR ("matrix size must match solution size", GSL_EBADLEN); + } + else + { + gsl_vector_complex_memcpy (x, b); + + /* solve for y using forward-substitution, L y = b */ + + gsl_blas_ztrsv (CblasLower, CblasNoTrans, CblasNonUnit, cholesky, x); + + /* perform back-substitution, L^H x = y */ + + gsl_blas_ztrsv (CblasLower, CblasConjTrans, CblasNonUnit, cholesky, x); + + return GSL_SUCCESS; + } +} /* gsl_linalg_complex_cholesky_solve() */ + +/* +gsl_linalg_complex_cholesky_svx() + Solve A x = b in place where A is in cholesky form +*/ + +int +gsl_linalg_complex_cholesky_svx (const gsl_matrix_complex * cholesky, + gsl_vector_complex * x) +{ + if (cholesky->size1 != cholesky->size2) + { + GSL_ERROR ("cholesky matrix must be square", GSL_ENOTSQR); + } + else if (cholesky->size2 != x->size) + { + GSL_ERROR ("matrix size must match solution size", GSL_EBADLEN); + } + else + { + /* solve for y using forward-substitution, L y = b */ + + gsl_blas_ztrsv (CblasLower, CblasNoTrans, CblasNonUnit, cholesky, x); + + /* perform back-substitution, L^H x = y */ + + gsl_blas_ztrsv (CblasLower, CblasConjTrans, CblasNonUnit, cholesky, x); + + return GSL_SUCCESS; + } +} /* gsl_linalg_complex_cholesky_svx() */ + + +/****************************************************************************** + +gsl_linalg_complex_cholesky_invert() + Compute the inverse of an Hermitian positive definite matrix in + Cholesky form. + +Inputs: LLT - matrix in cholesky form on input + A^{-1} = L^{-H} L^{-1} on output + +Return: success or error +******************************************************************************/ + +int +gsl_linalg_complex_cholesky_invert(gsl_matrix_complex * LLT) +{ + if (LLT->size1 != LLT->size2) + { + GSL_ERROR ("cholesky matrix must be square", GSL_ENOTSQR); + } + else + { + size_t N = LLT->size1; + size_t i, j; + gsl_vector_complex_view v1; + + /* invert the lower triangle of LLT */ + for (i = 0; i < N; ++i) + { + double ajj; + gsl_complex z; + + j = N - i - 1; + + { + gsl_complex z0 = gsl_matrix_complex_get(LLT, j, j); + ajj = 1.0 / GSL_REAL(z0); + } + + GSL_SET_COMPLEX(&z, ajj, 0.0); + gsl_matrix_complex_set(LLT, j, j, z); + + { + gsl_complex z1 = gsl_matrix_complex_get(LLT, j, j); + ajj = -GSL_REAL(z1); + } + + if (j < N - 1) + { + gsl_matrix_complex_view m; + + m = gsl_matrix_complex_submatrix(LLT, j + 1, j + 1, + N - j - 1, N - j - 1); + v1 = gsl_matrix_complex_subcolumn(LLT, j, j + 1, N - j - 1); + + gsl_blas_ztrmv(CblasLower, CblasNoTrans, CblasNonUnit, + &m.matrix, &v1.vector); + + gsl_blas_zdscal(ajj, &v1.vector); + } + } /* for (i = 0; i < N; ++i) */ + + /* + * The lower triangle of LLT now contains L^{-1}. Now compute + * A^{-1} = L^{-H} L^{-1} + * + * The (ij) element of A^{-1} is column i of conj(L^{-1}) dotted into + * column j of L^{-1} + */ + + for (i = 0; i < N; ++i) + { + gsl_complex sum; + for (j = i + 1; j < N; ++j) + { + gsl_vector_complex_view v2; + v1 = gsl_matrix_complex_subcolumn(LLT, i, j, N - j); + v2 = gsl_matrix_complex_subcolumn(LLT, j, j, N - j); + + /* compute Ainv[i,j] = sum_k{conj(Linv[k,i]) * Linv[k,j]} */ + gsl_blas_zdotc(&v1.vector, &v2.vector, &sum); + + /* store in upper triangle */ + gsl_matrix_complex_set(LLT, i, j, sum); + } + + /* now compute the diagonal element */ + v1 = gsl_matrix_complex_subcolumn(LLT, i, i, N - i); + gsl_blas_zdotc(&v1.vector, &v1.vector, &sum); + gsl_matrix_complex_set(LLT, i, i, sum); + } + + /* copy the Hermitian upper triangle to the lower triangle */ + + for (j = 1; j < N; j++) + { + for (i = 0; i < j; i++) + { + gsl_complex z = gsl_matrix_complex_get(LLT, i, j); + gsl_matrix_complex_set(LLT, j, i, gsl_complex_conjugate(z)); + } + } + + return GSL_SUCCESS; + } +} /* gsl_linalg_complex_cholesky_invert() */ + + +/******************************************** + * INTERNAL ROUTINES * + ********************************************/ + +static void +cholesky_complex_conj_vector(gsl_vector_complex *v) +{ + size_t i; + + for (i = 0; i < v->size; ++i) + { + gsl_complex z = gsl_vector_complex_get(v, i); + gsl_vector_complex_set(v, i, gsl_complex_conjugate(z)); + } +} /* cholesky_complex_conj_vector() */ diff --git a/gsl-2.5/linalg/choleskyc.lo b/gsl-2.5/linalg/choleskyc.lo new file mode 100644 index 00000000..691236c2 --- /dev/null +++ b/gsl-2.5/linalg/choleskyc.lo @@ -0,0 +1,12 @@ +# choleskyc.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/choleskyc.o' + +# Name of the non-PIC object +non_pic_object='choleskyc.o' + diff --git a/gsl-2.5/linalg/cod.c b/gsl-2.5/linalg/cod.c new file mode 100644 index 00000000..53d12e81 --- /dev/null +++ b/gsl-2.5/linalg/cod.c @@ -0,0 +1,794 @@ +/* linalg/cod.c + * + * Copyright (C) 2016, 2017 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/* + * This module contains routines for factoring an M-by-N matrix A as: + * + * A P = Q R Z^T + * + * known as the Complete Orthogonal Decomposition, where: + * + * P is a N-by-N permutation matrix + * Q is M-by-M orthogonal + * R has an r-by-r upper triangular block + * Z is N-by-N orthogonal + * + * When A is full rank, Z = I and this becomes the QR decomposition + * with column pivoting. When A is rank deficient, then + * + * R = [ R11 0 ] where R11 is r-by-r and r = rank(A) + * [ 0 0 ] + */ + +static int cod_RZ(gsl_matrix * A, gsl_vector * tau); +static double cod_householder_transform(double *alpha, gsl_vector * v); +static int cod_householder_mh(const double tau, const gsl_vector * v, + gsl_matrix * A, gsl_vector * work); +static int cod_householder_hv(const double tau, const gsl_vector * v, gsl_vector * w); +static int cod_householder_Zvec(const gsl_matrix * QRZT, const gsl_vector * tau_Z, const size_t rank, + gsl_vector * v); +static int cod_trireg_solve(const gsl_matrix * R, const double lambda, const gsl_vector * b, + gsl_matrix * S, gsl_vector * x, gsl_vector * work); + +int +gsl_linalg_COD_decomp_e(gsl_matrix * A, gsl_vector * tau_Q, gsl_vector * tau_Z, + gsl_permutation * p, double tol, size_t * rank, gsl_vector * work) +{ + const size_t M = A->size1; + const size_t N = A->size2; + + if (tau_Q->size != GSL_MIN (M, N)) + { + GSL_ERROR ("size of tau_Q must be MIN(M,N)", GSL_EBADLEN); + } + else if (tau_Z->size != GSL_MIN (M, N)) + { + GSL_ERROR ("size of tau_Z must be MIN(M,N)", GSL_EBADLEN); + } + else if (p->size != N) + { + GSL_ERROR ("permutation size must be N", GSL_EBADLEN); + } + else if (work->size != N) + { + GSL_ERROR ("work size must be N", GSL_EBADLEN); + } + else + { + int status, signum; + size_t r; + + /* decompose: A P = Q R */ + status = gsl_linalg_QRPT_decomp(A, tau_Q, p, &signum, work); + if (status) + return status; + + /* estimate rank of A */ + r = gsl_linalg_QRPT_rank(A, tol); + + if (r < N) + { + /* + * matrix is rank-deficient, so that the R factor is + * + * R = [ R11 R12 ] =~ [ R11 R12 ] + * [ 0 R22 ] [ 0 0 ] + * + * compute RZ decomposition of upper trapezoidal matrix + * [ R11 R12 ] = [ R11~ 0 ] Z + */ + gsl_matrix_view R_upper = gsl_matrix_submatrix(A, 0, 0, r, N); + gsl_vector_view t = gsl_vector_subvector(tau_Z, 0, r); + + cod_RZ(&R_upper.matrix, &t.vector); + } + + *rank = r; + + return GSL_SUCCESS; + } +} + +int +gsl_linalg_COD_decomp(gsl_matrix * A, gsl_vector * tau_Q, gsl_vector * tau_Z, + gsl_permutation * p, size_t * rank, gsl_vector * work) +{ + return gsl_linalg_COD_decomp_e(A, tau_Q, tau_Z, p, -1.0, rank, work); +} + +/* +gsl_linalg_COD_lssolve() + Find the least squares solution to the overdetermined system + +min ||b - A x||^2 + +for M >= N using the COD factorization A P = Q R Z + +Inputs: QRZT - matrix A, in COD compressed format, M-by-N + tau_Q - Householder scalars for Q, length min(M,N) + tau_Z - Householder scalars for Z, length min(M,N) + perm - permutation matrix + rank - rank of A + b - rhs vector, length M + x - (output) solution vector, length N + residual - (output) residual vector, b - A x, length M +*/ + +int +gsl_linalg_COD_lssolve (const gsl_matrix * QRZT, const gsl_vector * tau_Q, const gsl_vector * tau_Z, + const gsl_permutation * perm, const size_t rank, const gsl_vector * b, + gsl_vector * x, gsl_vector * residual) +{ + const size_t M = QRZT->size1; + const size_t N = QRZT->size2; + + if (M < N) + { + GSL_ERROR ("QRZT matrix must have M>=N", GSL_EBADLEN); + } + else if (M != b->size) + { + GSL_ERROR ("matrix size must match b size", GSL_EBADLEN); + } + else if (rank > GSL_MIN (M, N)) + { + GSL_ERROR ("rank must be <= MIN(M,N)", GSL_EBADLEN); + } + else if (N != x->size) + { + GSL_ERROR ("matrix size must match solution size", GSL_EBADLEN); + } + else if (M != residual->size) + { + GSL_ERROR ("matrix size must match residual size", GSL_EBADLEN); + } + else + { + gsl_matrix_const_view R11 = gsl_matrix_const_submatrix (QRZT, 0, 0, rank, rank); + gsl_vector_view QTb1 = gsl_vector_subvector(residual, 0, rank); + gsl_vector_view x1 = gsl_vector_subvector(x, 0, rank); + + gsl_vector_set_zero(x); + + /* compute residual = Q^T b = [ c1 ; c2 ] */ + gsl_vector_memcpy(residual, b); + gsl_linalg_QR_QTvec (QRZT, tau_Q, residual); + + /* solve x1 := R11^{-1} (Q^T b)(1:r) */ + gsl_vector_memcpy(&(x1.vector), &(QTb1.vector)); + gsl_blas_dtrsv(CblasUpper, CblasNoTrans, CblasNonUnit, &(R11.matrix), &(x1.vector)); + + /* compute Z ( R11^{-1} x1; 0 ) */ + cod_householder_Zvec(QRZT, tau_Z, rank, x); + + /* compute x = P Z^T ( R11^{-1} x1; 0 ) */ + gsl_permute_vector_inverse(perm, x); + + /* compute residual = b - A x = Q (Q^T b - R [ R11^{-1} x1; 0 ]) = Q [ 0 ; c2 ] */ + gsl_vector_set_zero(&(QTb1.vector)); + gsl_linalg_QR_Qvec(QRZT, tau_Q, residual); + + return GSL_SUCCESS; + } +} + +/* +gsl_linalg_COD_lssolve2() + Find the least squares solution to the Tikhonov regularized +system in standard form: + +min ||b - A x||^2 + lambda^2 ||x||^2 + +for M >= N using the COD factorization A P = Q R Z + +Inputs: lambda - parameter + QRZT - matrix A, in COD compressed format, M-by-N + tau_Q - Householder scalars for Q, length min(M,N) + tau_Z - Householder scalars for Z, length min(M,N) + perm - permutation matrix + rank - rank of A + b - rhs vector, length M + x - (output) solution vector, length N + residual - (output) residual vector, b - A x, length M + S - workspace, rank-by-rank + work - workspace, length rank +*/ + +int +gsl_linalg_COD_lssolve2 (const double lambda, const gsl_matrix * QRZT, const gsl_vector * tau_Q, const gsl_vector * tau_Z, + const gsl_permutation * perm, const size_t rank, const gsl_vector * b, + gsl_vector * x, gsl_vector * residual, gsl_matrix * S, gsl_vector * work) +{ + const size_t M = QRZT->size1; + const size_t N = QRZT->size2; + + if (M < N) + { + GSL_ERROR ("QRZT matrix must have M>=N", GSL_EBADLEN); + } + else if (M != b->size) + { + GSL_ERROR ("matrix size must match b size", GSL_EBADLEN); + } + else if (rank > GSL_MIN (M, N)) + { + GSL_ERROR ("rank must be <= MIN(M,N)", GSL_EBADLEN); + } + else if (N != x->size) + { + GSL_ERROR ("matrix size must match solution size", GSL_EBADLEN); + } + else if (M != residual->size) + { + GSL_ERROR ("matrix size must match residual size", GSL_EBADLEN); + } + else if (S->size1 != rank || S->size2 != rank) + { + GSL_ERROR ("S must be rank-by-rank", GSL_EBADLEN); + } + else if (work->size != rank) + { + GSL_ERROR ("work must be length rank", GSL_EBADLEN); + } + else + { + gsl_matrix_const_view R11 = gsl_matrix_const_submatrix (QRZT, 0, 0, rank, rank); + gsl_vector_view c1 = gsl_vector_subvector(residual, 0, rank); + gsl_vector_view y1 = gsl_vector_subvector(x, 0, rank); + + gsl_vector_set_zero(x); + + /* compute residual = Q^T b = [ c1 ; c2 ]*/ + gsl_vector_memcpy(residual, b); + gsl_linalg_QR_QTvec (QRZT, tau_Q, residual); + + /* solve [ R11 ; lambda*I ] y1 = [ (Q^T b)(1:r) ; 0 ] */ + cod_trireg_solve(&(R11.matrix), lambda, &(c1.vector), S, &(y1.vector), work); + + /* save y1 for later residual calculation */ + gsl_vector_memcpy(work, &(y1.vector)); + + /* compute Z [ y1; 0 ] */ + cod_householder_Zvec(QRZT, tau_Z, rank, x); + + /* compute x = P Z^T ( y1; 0 ) */ + gsl_permute_vector_inverse(perm, x); + + /* compute residual = b - A x = Q (Q^T b - [ R11 y1; 0 ]) = Q [ c1 - R11*y1 ; c2 ] */ + + /* work = R11*y1 */ + gsl_blas_dtrmv(CblasUpper, CblasNoTrans, CblasNonUnit, &(R11.matrix), work); + + gsl_vector_sub(&(c1.vector), work); + gsl_linalg_QR_Qvec(QRZT, tau_Q, residual); + + return GSL_SUCCESS; + } +} + +/* +gsl_linalg_COD_unpack() + Unpack encoded COD decomposition into the matrices Q,R,Z,P + +Inputs: QRZT - encoded COD decomposition + tau_Q - Householder scalars for Q + tau_Z - Householder scalars for Z + rank - rank of matrix (as determined from gsl_linalg_COD_decomp) + Q - (output) M-by-M matrix Q + R - (output) M-by-N matrix R + Z - (output) N-by-N matrix Z +*/ + +int +gsl_linalg_COD_unpack(const gsl_matrix * QRZT, const gsl_vector * tau_Q, + const gsl_vector * tau_Z, const size_t rank, gsl_matrix * Q, + gsl_matrix * R, gsl_matrix * Z) +{ + const size_t M = QRZT->size1; + const size_t N = QRZT->size2; + + if (tau_Q->size != GSL_MIN (M, N)) + { + GSL_ERROR ("size of tau_Q must be MIN(M,N)", GSL_EBADLEN); + } + else if (tau_Z->size != GSL_MIN (M, N)) + { + GSL_ERROR ("size of tau_Z must be MIN(M,N)", GSL_EBADLEN); + } + else if (rank > GSL_MIN (M, N)) + { + GSL_ERROR ("rank must be <= MIN(M,N)", GSL_EBADLEN); + } + else if (Q->size1 != M || Q->size2 != M) + { + GSL_ERROR ("Q must by M-by-M", GSL_EBADLEN); + } + else if (R->size1 != M || R->size2 != N) + { + GSL_ERROR ("R must by M-by-N", GSL_EBADLEN); + } + else if (Z->size1 != N || Z->size2 != N) + { + GSL_ERROR ("Z must by N-by-N", GSL_EBADLEN); + } + else + { + size_t i; + gsl_matrix_view R11 = gsl_matrix_submatrix(R, 0, 0, rank, rank); + gsl_matrix_const_view QRZT11 = gsl_matrix_const_submatrix(QRZT, 0, 0, rank, rank); + + /* form Q matrix */ + + gsl_matrix_set_identity(Q); + + for (i = GSL_MIN (M, N); i-- > 0;) + { + gsl_vector_const_view h = gsl_matrix_const_subcolumn (QRZT, i, i, M - i); + gsl_matrix_view m = gsl_matrix_submatrix (Q, i, i, M - i, M - i); + double ti = gsl_vector_get (tau_Q, i); + gsl_linalg_householder_hm (ti, &h.vector, &m.matrix); + } + + /* form Z matrix */ + gsl_matrix_set_identity(Z); + + if (rank < N) + { + gsl_vector_view work = gsl_matrix_row(R, 0); /* temporary workspace, size N */ + + /* multiply I by Z from the right */ + gsl_linalg_COD_matZ(QRZT, tau_Z, rank, Z, &work.vector); + } + + /* copy rank-by-rank upper triangle of QRZT into R and zero the rest */ + gsl_matrix_set_zero(R); + gsl_matrix_tricpy('U', 1, &R11.matrix, &QRZT11.matrix); + + return GSL_SUCCESS; + } +} + +/* +gsl_linalg_COD_matZ + Multiply an M-by-N matrix A on the right by Z (N-by-N) + +Inputs: QRZT - encoded COD matrix + tau_Z - Householder scalars for Z + rank - matrix rank + A - on input, M-by-N matrix + on output, A * Z + work - workspace of length M +*/ + +int +gsl_linalg_COD_matZ(const gsl_matrix * QRZT, const gsl_vector * tau_Z, const size_t rank, + gsl_matrix * A, gsl_vector * work) +{ + const size_t M = A->size1; + const size_t N = A->size2; + + if (tau_Z->size != GSL_MIN (QRZT->size1, QRZT->size2)) + { + GSL_ERROR("tau_Z must be GSL_MIN(M,N)", GSL_EBADLEN); + } + else if (QRZT->size2 != N) + { + GSL_ERROR("QRZT must have N columns", GSL_EBADLEN); + } + else if (work->size != M) + { + GSL_ERROR("workspace must be length M", GSL_EBADLEN); + } + else + { + /* if rank == N, then Z = I and there is nothing to do */ + if (rank < N) + { + size_t i; + + for (i = rank; i > 0 && i--; ) + { + gsl_vector_const_view h = gsl_matrix_const_subrow (QRZT, i, rank, N - rank); + gsl_matrix_view m = gsl_matrix_submatrix (A, 0, i, M, N - i); + double ti = gsl_vector_get (tau_Z, i); + cod_householder_mh (ti, &h.vector, &m.matrix, work); + } + } + + return GSL_SUCCESS; + } +} + + +/********************************************* + * INTERNAL ROUTINES * + *********************************************/ + +/* +cod_RZ() + Perform RZ decomposition of an upper trapezoidal matrix, + +A = [ A11 A12 ] = [ R 0 ] Z + +where A is M-by-N with N >= M, A11 is M-by-M upper triangular, +and A12 is M-by-(N-M). On output, Z is stored as Householder +reflectors in the A12 portion of A, + +Z = Z(1) Z(2) ... Z(M) + +Inputs: A - M-by-N matrix with N >= M + On input, upper trapezoidal matrix [ A11 A12 ] + On output, A11 is overwritten by R (subdiagonal elements + are not touched), and A12 is overwritten by Z in packed storage + tau - (output) Householder scalars, size M +*/ + +static int +cod_RZ(gsl_matrix * A, gsl_vector * tau) +{ + const size_t M = A->size1; + const size_t N = A->size2; + + if (tau->size != M) + { + GSL_ERROR("tau has wrong size", GSL_EBADLEN); + } + else if (N < M) + { + GSL_ERROR("N must be >= M", GSL_EINVAL); + } + else if (M == N) + { + /* quick return */ + gsl_vector_set_all(tau, 0.0); + return GSL_SUCCESS; + } + else + { + size_t k; + + for (k = M; k > 0 && k--; ) + { + double *alpha = gsl_matrix_ptr(A, k, k); + gsl_vector_view z = gsl_matrix_subrow(A, k, M, N - M); + double tauk; + + /* compute Householder reflection to zero [ A(k,k) A(k,M+1:N) ] */ + tauk = cod_householder_transform(alpha, &z.vector); + gsl_vector_set(tau, k, tauk); + + if ((tauk != 0) && (k > 0)) + { + gsl_vector_view w = gsl_vector_subvector(tau, 0, k); + gsl_matrix_view B = gsl_matrix_submatrix(A, 0, k, k, N - k); + + cod_householder_mh(tauk, &z.vector, &B.matrix, &w.vector); + } + } + + return GSL_SUCCESS; + } +} + +static double +cod_householder_transform(double *alpha, gsl_vector * v) +{ + double beta, tau; + double xnorm = gsl_blas_dnrm2(v); + + if (xnorm == 0) + { + return 0.0; /* tau = 0 */ + } + + beta = - (*alpha >= 0.0 ? +1.0 : -1.0) * gsl_hypot(*alpha, xnorm); + tau = (beta - *alpha) / beta; + + { + double s = (*alpha - beta); + + if (fabs(s) > GSL_DBL_MIN) + { + gsl_blas_dscal (1.0 / s, v); + } + else + { + gsl_blas_dscal (GSL_DBL_EPSILON / s, v); + gsl_blas_dscal (1.0 / GSL_DBL_EPSILON, v); + } + + *alpha = beta; + } + + return tau; +} + +/* +cod_householder_hv + Apply Householder reflection H = (I - tau*v*v') to vector v from the left, + +w' = H * w + +Inputs: tau - Householder scalar + v - Householder vector, size M + w - on input, w vector, size M + on output, H * w + +Notes: +1) Based on LAPACK routine DLARZ +*/ + +static int +cod_householder_hv(const double tau, const gsl_vector * v, gsl_vector * w) +{ + if (tau == 0) + { + return GSL_SUCCESS; /* H = I */ + } + else + { + const size_t M = w->size; + const size_t L = v->size; + double w0 = gsl_vector_get(w, 0); + gsl_vector_view w1 = gsl_vector_subvector(w, M - L, L); + double d1, d; + + /* d1 := v . w(M-L:M) */ + gsl_blas_ddot(v, &w1.vector, &d1); + + /* d := w(1) + v . w(M-L:M) */ + d = w0 + d1; + + /* w(1) = w(1) - tau * d */ + gsl_vector_set(w, 0, w0 - tau * d); + + /* w(M-L:M) = w(M-L:M) - tau * d * v */ + gsl_blas_daxpy(-tau * d, v, &w1.vector); + + return GSL_SUCCESS; + } +} + +/* +cod_householder_mh + Apply Householder reflection H = (I - tau*v*v') to matrix A from the right + +Inputs: tau - Householder scalar + v - Householder vector, size N-M + A - matrix, size M-by-N + work - workspace, size M + +Notes: +1) Based on LAPACK routine DLARZ +*/ + +static int +cod_householder_mh(const double tau, const gsl_vector * v, gsl_matrix * A, + gsl_vector * work) +{ + if (tau == 0) + { + return GSL_SUCCESS; /* H = I */ + } + else + { + const size_t M = A->size1; + const size_t N = A->size2; + const size_t L = v->size; + gsl_vector_view A1 = gsl_matrix_subcolumn(A, 0, 0, M); + gsl_matrix_view C = gsl_matrix_submatrix(A, 0, N - L, M, L); + + /* work(1:M) = A(1:M,1) */ + gsl_vector_memcpy(work, &A1.vector); + + /* work(1:M) = work(1:M) + A(1:M,M+1:N) * v(1:N-M) */ + gsl_blas_dgemv(CblasNoTrans, 1.0, &C.matrix, v, 1.0, work); + + /* A(1:M,1) = A(1:M,1) - tau * work(1:M) */ + gsl_blas_daxpy(-tau, work, &A1.vector); + + /* A(1:M,M+1:N) = A(1:M,M+1:N) - tau * work(1:M) * v(1:N-M)' */ + gsl_blas_dger(-tau, work, v, &C.matrix); + + return GSL_SUCCESS; + } +} + +/* +cod_householder_Zvec + Multiply a vector by Z + +Inputs: QRZT - encoded COD matrix + tau_Z - Householder scalars for Z + rank - matrix rank + v - on input, vector of length N + on output, Z^T * v +*/ + +static int +cod_householder_Zvec(const gsl_matrix * QRZT, const gsl_vector * tau_Z, const size_t rank, + gsl_vector * v) +{ + const size_t M = QRZT->size1; + const size_t N = QRZT->size2; + + if (tau_Z->size != GSL_MIN (M, N)) + { + GSL_ERROR("tau_Z must be GSL_MIN(M,N)", GSL_EBADLEN); + } + else if (v->size != N) + { + GSL_ERROR("v must be length N", GSL_EBADLEN); + } + else + { + if (rank < N) + { + size_t i; + + for (i = 0; i < rank; ++i) + { + gsl_vector_const_view h = gsl_matrix_const_subrow (QRZT, i, rank, N - rank); + gsl_vector_view w = gsl_vector_subvector (v, i, N - i); + double ti = gsl_vector_get (tau_Z, i); + cod_householder_hv(ti, &h.vector, &w.vector); + } + } + + return GSL_SUCCESS; + } +} + +/* +cod_trireg_solve() + + This function computes the solution to the least squares system + + [ R ] x = [ b ] + [ lambda*I ] [ 0 ] + +where R is an N-by-N upper triangular matrix, lambda is a scalar parameter, +and b is a vector of length N. This is done by computing the QR factorization + +[ R ] = W S^T +[ lambda*I ] + +where S^T is upper triangular, and solving + +S^T x = W^T [ b ] + [ 0 ] + +Inputs: R - full rank upper triangular matrix; the diagonal + elements are modified but restored on output + lambda - scalar parameter lambda + b - right hand side vector b + S - workspace, N-by-N + x - (output) least squares solution of the system + work - workspace of length N +*/ + +static int +cod_trireg_solve (const gsl_matrix * R, const double lambda, const gsl_vector * b, + gsl_matrix * S, gsl_vector * x, gsl_vector * work) +{ + const size_t N = R->size2; + gsl_vector_const_view diag = gsl_matrix_const_diagonal(R); + size_t i, j, k; + + if (lambda <= 0.0) + { + GSL_ERROR("lambda must be positive", GSL_EINVAL); + } + + /* copy R and b to preserve input and initialise S; store diag(R) in work */ + gsl_matrix_transpose_tricpy('U', 0, S, R); + gsl_vector_memcpy(work, &diag.vector); + gsl_vector_memcpy(x, b); + + /* eliminate the diagonal matrix lambda*I using Givens rotations */ + + for (j = 0; j < N; j++) + { + double bj = 0.0; + + gsl_matrix_set (S, j, j, lambda); + + for (k = j + 1; k < N; k++) + { + gsl_matrix_set (S, k, k, 0.0); + } + + /* the transformations to eliminate the row of lambda*I modify only a + single element of b beyond the first n, which is initially + zero */ + + for (k = j; k < N; k++) + { + /* determine a Givens rotation which eliminates the + appropriate element in the current row of lambda*I */ + + double sine, cosine; + + double xk = gsl_vector_get (x, k); + double rkk = gsl_vector_get (work, k); + double skk = gsl_matrix_get (S, k, k); + + if (skk == 0) + { + continue; + } + + if (fabs (rkk) < fabs (skk)) + { + double cotangent = rkk / skk; + sine = 0.5 / sqrt (0.25 + 0.25 * cotangent * cotangent); + cosine = sine * cotangent; + } + else + { + double tangent = skk / rkk; + cosine = 0.5 / sqrt (0.25 + 0.25 * tangent * tangent); + sine = cosine * tangent; + } + + /* Compute the modified diagonal element of r and the + modified element of [b,0] */ + + { + double new_rkk = cosine * rkk + sine * skk; + double new_xk = cosine * xk + sine * bj; + + bj = -sine * xk + cosine * bj; + + gsl_vector_set(work, k, new_rkk); + gsl_matrix_set(S, k, k, new_rkk); + gsl_vector_set(x, k, new_xk); + } + + /* Accumulate the transformation in the row of s */ + + for (i = k + 1; i < N; i++) + { + double sik = gsl_matrix_get (S, i, k); + double sii = gsl_matrix_get (S, i, i); + + double new_sik = cosine * sik + sine * sii; + double new_sii = -sine * sik + cosine * sii; + + gsl_matrix_set(S, i, k, new_sik); + gsl_matrix_set(S, i, i, new_sii); + } + } + } + + /* solve: S^T x = rhs in place */ + gsl_blas_dtrsv(CblasLower, CblasTrans, CblasNonUnit, S, x); + + return GSL_SUCCESS; +} diff --git a/gsl-2.5/linalg/cod.lo b/gsl-2.5/linalg/cod.lo new file mode 100644 index 00000000..441ffac0 --- /dev/null +++ b/gsl-2.5/linalg/cod.lo @@ -0,0 +1,12 @@ +# cod.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/cod.o' + +# Name of the non-PIC object +non_pic_object='cod.o' + diff --git a/gsl-2.5/linalg/condest.c b/gsl-2.5/linalg/condest.c new file mode 100644 index 00000000..eb50a30f --- /dev/null +++ b/gsl-2.5/linalg/condest.c @@ -0,0 +1,299 @@ +/* linalg/condest.c + * + * Copyright (C) 2016 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include +#include +#include + +/* + * This module contains routines for estimating the condition number + * of matrices in the 1-norm. The algorithm is based on the paper, + * + * [1] N. J. Higham, "FORTRAN codes for estimating the one-norm of + * a real or complex matrix, with applications to condition estimation", + * ACM Trans. Math. Soft., vol. 14, no. 4, pp. 381-396, December 1988. + */ + +static double condest_tri_norm1(CBLAS_UPLO_t Uplo, const gsl_matrix * A); +static int condest_tri_rcond(CBLAS_UPLO_t Uplo, const gsl_matrix * A, + double * rcond, gsl_vector * work); +static int condest_same_sign(const gsl_vector * x, const gsl_vector * y); +static int condest_invtriu(CBLAS_TRANSPOSE_t TransA, gsl_vector * x, void * params); +static int condest_invtril(CBLAS_TRANSPOSE_t TransA, gsl_vector * x, void * params); + +/* +gsl_linalg_tri_upper_rcond() + Estimate reciprocal condition number of upper triangular matrix + +Inputs: A - upper triangular matrix, N-by-N + rcond - (output) reciprocal condition number estimate + work - workspace, length 3*N + +Return: success/error +*/ + +int +gsl_linalg_tri_upper_rcond(const gsl_matrix * A, double * rcond, gsl_vector * work) +{ + int status = condest_tri_rcond(CblasUpper, A, rcond, work); + return status; +} + +/* +gsl_linalg_tri_lower_rcond() + Estimate reciprocal condition number of lower triangular matrix + +Inputs: A - lower triangular matrix, N-by-N + rcond - (output) reciprocal condition number estimate + work - workspace, length 3*N + +Return: success/error +*/ + +int +gsl_linalg_tri_lower_rcond(const gsl_matrix * A, double * rcond, gsl_vector * work) +{ + int status = condest_tri_rcond(CblasLower, A, rcond, work); + return status; +} + +/* +gsl_linalg_invnorm1() + Estimate the 1-norm of ||A^{-1}||, where A is a square +N-by-N matrix + +Inputs: N - size of matrix + Ainvx - pointer to function which calculates: + x := A^{-1} x or x := A^{-t} x + params - parameters to pass to Ainvx + Ainvnorm - (output) estimate of ||A^{-1}||_1 + work - workspace, length 3*N +*/ + +int +gsl_linalg_invnorm1(const size_t N, + int (* Ainvx)(CBLAS_TRANSPOSE_t TransA, gsl_vector * x, void * params), + void * params, double * Ainvnorm, gsl_vector * work) +{ + if (work->size != 3 * N) + { + GSL_ERROR ("work vector must have length 3*N", GSL_EBADLEN); + } + else + { + const size_t maxit = 5; + gsl_vector_view x = gsl_vector_subvector(work, 0, N); + gsl_vector_view v = gsl_vector_subvector(work, N, N); + gsl_vector_view xi = gsl_vector_subvector(work, 2*N, N); + double gamma, gamma_old, temp; + size_t i, k; + + for (i = 0; i < N; ++i) + gsl_vector_set(&x.vector, i, 1.0 / (double) N); + + /* compute v = A^{-1} x */ + gsl_vector_memcpy(&v.vector, &x.vector); + (*Ainvx)(CblasNoTrans, &v.vector, params); + + /* gamma = ||v||_1 */ + gamma = gsl_blas_dasum(&v.vector); + + /* xi = sign(v) */ + for (i = 0; i < N; ++i) + { + double vi = gsl_vector_get(&v.vector, i); + gsl_vector_set(&xi.vector, i, GSL_SIGN(vi)); + } + + /* x = A^{-t} xi */ + gsl_vector_memcpy(&x.vector, &xi.vector); + (*Ainvx)(CblasTrans, &x.vector, params); + + for (k = 0; k < maxit; ++k) + { + size_t j = (size_t) gsl_blas_idamax(&x.vector); + + /* v := A^{-1} e_j */ + gsl_vector_set_zero(&v.vector); + gsl_vector_set(&v.vector, j, 1.0); + (*Ainvx)(CblasNoTrans, &v.vector, params); + + gamma_old = gamma; + gamma = gsl_blas_dasum(&v.vector); + + /* check for repeated sign vector (algorithm has converged) */ + if (condest_same_sign(&v.vector, &xi.vector) || (gamma < gamma_old)) + break; + + /* xi = sign(v) */ + for (i = 0; i < N; ++i) + { + double vi = gsl_vector_get(&v.vector, i); + gsl_vector_set(&xi.vector, i, GSL_SIGN(vi)); + } + + /* x = A^{-t} sign(v) */ + gsl_vector_memcpy(&x.vector, &xi.vector); + (*Ainvx)(CblasTrans, &x.vector, params); + } + + temp = 1.0; /* (-1)^i */ + for (i = 0; i < N; ++i) + { + double term = 1.0 + (double) i / (N - 1.0); + gsl_vector_set(&x.vector, i, temp * term); + temp = -temp; + } + + /* x := A^{-1} x */ + (*Ainvx)(CblasNoTrans, &x.vector, params); + + temp = 2.0 * gsl_blas_dasum(&x.vector) / (3.0 * N); + if (temp > gamma) + { + gsl_vector_memcpy(&v.vector, &x.vector); + gamma = temp; + } + + *Ainvnorm = gamma; + + return GSL_SUCCESS; + } +} + +static int +condest_tri_rcond(CBLAS_UPLO_t Uplo, const gsl_matrix * A, double * rcond, gsl_vector * work) +{ + const size_t M = A->size1; + const size_t N = A->size2; + + if (M != N) + { + GSL_ERROR ("matrix must be square", GSL_ENOTSQR); + } + else if (work->size != 3 * N) + { + GSL_ERROR ("work vector must have length 3*N", GSL_EBADLEN); + } + else + { + int status; + double Anorm = condest_tri_norm1(Uplo, A); /* ||A||_1 */ + double Ainvnorm; /* ||A^{-1}||_1 */ + + *rcond = 0.0; + + /* don't continue if matrix is singular */ + if (Anorm == 0.0) + return GSL_SUCCESS; + + /* estimate ||A^{-1}||_1 */ + if (Uplo == CblasUpper) + status = gsl_linalg_invnorm1(N, condest_invtriu, (void *) A, &Ainvnorm, work); + else + status = gsl_linalg_invnorm1(N, condest_invtril, (void *) A, &Ainvnorm, work); + + if (status) + return status; + + if (Ainvnorm != 0.0) + *rcond = (1.0 / Anorm) / Ainvnorm; + + return GSL_SUCCESS; + } +} + +/* calculate 1 norm of triangular matrix */ +static double +condest_tri_norm1(CBLAS_UPLO_t Uplo, const gsl_matrix * A) +{ + const size_t N = A->size2; + double max = 0.0; + size_t i, j; + + if (Uplo == CblasUpper) + { + for (j = 0; j < N; ++j) + { + double sum = 0.0; + for (i = 0; i <= j; ++i) + { + double Aij = gsl_matrix_get(A, i, j); + sum += fabs(Aij); + } + + max = GSL_MAX(max, sum); + } + } + else + { + for (j = 0; j < N; ++j) + { + double sum = 0.0; + for (i = j; i < N; ++i) + { + double Aij = gsl_matrix_get(A, i, j); + sum += fabs(Aij); + } + + max = GSL_MAX(max, sum); + } + } + + return max; +} + +/* return 1 if sign(x) = sign(y), 0 otherwise */ +static int +condest_same_sign(const gsl_vector * x, const gsl_vector * y) +{ + const size_t n = x->size; + size_t i; + + for (i = 0; i < n; ++i) + { + double xi = gsl_vector_get(x, i); + double yi = gsl_vector_get(y, i); + if (GSL_SIGN(xi) != GSL_SIGN(yi)) + return 0; + } + + return 1; +} + +/* x := A^{-1} x, A upper triangular */ +static int +condest_invtriu(CBLAS_TRANSPOSE_t TransA, gsl_vector * x, void * params) +{ + gsl_matrix * A = (gsl_matrix *) params; + return gsl_blas_dtrsv(CblasUpper, TransA, CblasNonUnit, A, x); +} + +/* x := A^{-1} x, A lower triangular */ +static int +condest_invtril(CBLAS_TRANSPOSE_t TransA, gsl_vector * x, void * params) +{ + gsl_matrix * A = (gsl_matrix *) params; + return gsl_blas_dtrsv(CblasLower, TransA, CblasNonUnit, A, x); +} diff --git a/gsl-2.5/linalg/condest.lo b/gsl-2.5/linalg/condest.lo new file mode 100644 index 00000000..888dc974 --- /dev/null +++ b/gsl-2.5/linalg/condest.lo @@ -0,0 +1,12 @@ +# condest.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/condest.o' + +# Name of the non-PIC object +non_pic_object='condest.o' + diff --git a/gsl-2.5/linalg/exponential.c b/gsl-2.5/linalg/exponential.c new file mode 100644 index 00000000..8df89415 --- /dev/null +++ b/gsl-2.5/linalg/exponential.c @@ -0,0 +1,187 @@ +/* linalg/exponential.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2007 Gerard Jungman, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ + +/* Calculate the matrix exponential, following + * Moler + Van Loan, SIAM Rev. 20, 801 (1978). + */ + +#include +#include +#include +#include +#include +#include + +#include "gsl_linalg.h" + + +/* store one of the suggested choices for the + * Taylor series / square method from Moler + VanLoan + */ +struct moler_vanloan_optimal_suggestion +{ + int k; + int j; +}; +typedef struct moler_vanloan_optimal_suggestion mvl_suggestion_t; + + +/* table from Moler and Van Loan + * mvl_tab[gsl_mode_t][matrix_norm_group] + */ +static mvl_suggestion_t mvl_tab[3][6] = +{ + /* double precision */ + { + { 5, 1 }, { 5, 4 }, { 7, 5 }, { 9, 7 }, { 10, 10 }, { 8, 14 } + }, + + /* single precision */ + { + { 2, 1 }, { 4, 0 }, { 7, 1 }, { 6, 5 }, { 5, 9 }, { 7, 11 } + }, + + /* approx precision */ + { + { 1, 0 }, { 3, 0 }, { 5, 1 }, { 4, 5 }, { 4, 8 }, { 2, 11 } + } +}; + + +inline +static double +sup_norm(const gsl_matrix * A) +{ + double min, max; + gsl_matrix_minmax(A, &min, &max); + return GSL_MAX_DBL(fabs(min), fabs(max)); +} + + +static +mvl_suggestion_t +obtain_suggestion(const gsl_matrix * A, gsl_mode_t mode) +{ + const unsigned int mode_prec = GSL_MODE_PREC(mode); + const double norm_A = sup_norm(A); + if(norm_A < 0.01) return mvl_tab[mode_prec][0]; + else if(norm_A < 0.1) return mvl_tab[mode_prec][1]; + else if(norm_A < 1.0) return mvl_tab[mode_prec][2]; + else if(norm_A < 10.0) return mvl_tab[mode_prec][3]; + else if(norm_A < 100.0) return mvl_tab[mode_prec][4]; + else if(norm_A < 1000.0) return mvl_tab[mode_prec][5]; + else + { + /* outside the table we simply increase the number + * of squarings, bringing the reduced matrix into + * the range of the table; this is obviously suboptimal, + * but that is the price paid for not having those extra + * table entries + */ + const double extra = log(1.01*norm_A/1000.0) / M_LN2; + const int extra_i = (unsigned int) ceil(extra); + mvl_suggestion_t s = mvl_tab[mode][5]; + s.j += extra_i; + return s; + } +} + + +/* use series representation to calculate matrix exponential; + * this is used for small matrices; we use the sup_norm + * to measure the size of the terms in the expansion + */ +static void +matrix_exp_series( + const gsl_matrix * B, + gsl_matrix * eB, + int number_of_terms + ) +{ + int count; + gsl_matrix * temp = gsl_matrix_calloc(B->size1, B->size2); + + /* init the Horner polynomial evaluation, + * eB = 1 + B/number_of_terms; we use + * eB to collect the partial results + */ + gsl_matrix_memcpy(eB, B); + gsl_matrix_scale(eB, 1.0/number_of_terms); + gsl_matrix_add_diagonal(eB, 1.0); + for(count = number_of_terms-1; count >= 1; --count) + { + /* mult_temp = 1 + B eB / count */ + gsl_blas_dgemm(CblasNoTrans, CblasNoTrans, 1.0, B, eB, 0.0, temp); + gsl_matrix_scale(temp, 1.0/count); + gsl_matrix_add_diagonal(temp, 1.0); + + /* transfer partial result out of temp */ + gsl_matrix_memcpy(eB, temp); + } + + /* now eB holds the full result; we're done */ + gsl_matrix_free(temp); +} + + +int +gsl_linalg_exponential_ss( + const gsl_matrix * A, + gsl_matrix * eA, + gsl_mode_t mode + ) +{ + if(A->size1 != A->size2) + { + GSL_ERROR("cannot exponentiate a non-square matrix", GSL_ENOTSQR); + } + else if(A->size1 != eA->size1 || A->size2 != eA->size2) + { + GSL_ERROR("exponential of matrix must have same dimension as matrix", GSL_EBADLEN); + } + else + { + int i; + const mvl_suggestion_t sugg = obtain_suggestion(A, mode); + const double divisor = exp(M_LN2 * sugg.j); + + gsl_matrix * reduced_A = gsl_matrix_alloc(A->size1, A->size2); + + /* decrease A by the calculated divisor */ + gsl_matrix_memcpy(reduced_A, A); + gsl_matrix_scale(reduced_A, 1.0/divisor); + + /* calculate exp of reduced matrix; store in eA as temp */ + matrix_exp_series(reduced_A, eA, sugg.k); + + /* square repeatedly; use reduced_A for scratch */ + for(i = 0; i < sugg.j; ++i) + { + gsl_blas_dgemm(CblasNoTrans, CblasNoTrans, 1.0, eA, eA, 0.0, reduced_A); + gsl_matrix_memcpy(eA, reduced_A); + } + + gsl_matrix_free(reduced_A); + + return GSL_SUCCESS; + } +} + diff --git a/gsl-2.5/linalg/exponential.lo b/gsl-2.5/linalg/exponential.lo new file mode 100644 index 00000000..0d80ec78 --- /dev/null +++ b/gsl-2.5/linalg/exponential.lo @@ -0,0 +1,12 @@ +# exponential.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/exponential.o' + +# Name of the non-PIC object +non_pic_object='exponential.o' + diff --git a/gsl-2.5/linalg/gsl_linalg.h b/gsl-2.5/linalg/gsl_linalg.h new file mode 100644 index 00000000..8112f217 --- /dev/null +++ b/gsl-2.5/linalg/gsl_linalg.h @@ -0,0 +1,780 @@ +/* linalg/gsl_linalg.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2006, 2007 Gerard Jungman, Brian Gough, Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_LINALG_H__ +#define __GSL_LINALG_H__ + +#include +#include +#include +#include +#include +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +#define __BEGIN_DECLS extern "C" { +#define __END_DECLS } +#else +#define __BEGIN_DECLS /* empty */ +#define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +typedef enum + { + GSL_LINALG_MOD_NONE = 0, + GSL_LINALG_MOD_TRANSPOSE = 1, + GSL_LINALG_MOD_CONJUGATE = 2 + } +gsl_linalg_matrix_mod_t; + + +/* Note: You can now use the gsl_blas_dgemm function instead of matmult */ + +/* Simple implementation of matrix multiply. + * Calculates C = A.B + * + * exceptions: GSL_EBADLEN + */ +int gsl_linalg_matmult (const gsl_matrix * A, + const gsl_matrix * B, + gsl_matrix * C); + + +/* Simple implementation of matrix multiply. + * Allows transposition of either matrix, so it + * can compute A.B or Trans(A).B or A.Trans(B) or Trans(A).Trans(B) + * + * exceptions: GSL_EBADLEN + */ +int gsl_linalg_matmult_mod (const gsl_matrix * A, + gsl_linalg_matrix_mod_t modA, + const gsl_matrix * B, + gsl_linalg_matrix_mod_t modB, + gsl_matrix * C); + +/* Calculate the matrix exponential by the scaling and + * squaring method described in Moler + Van Loan, + * SIAM Rev 20, 801 (1978). The mode argument allows + * choosing an optimal strategy, from the table + * given in the paper, for a given precision. + * + * exceptions: GSL_ENOTSQR, GSL_EBADLEN + */ +int gsl_linalg_exponential_ss( + const gsl_matrix * A, + gsl_matrix * eA, + gsl_mode_t mode + ); + + +/* Householder Transformations */ + +double gsl_linalg_householder_transform (gsl_vector * v); +gsl_complex gsl_linalg_complex_householder_transform (gsl_vector_complex * v); + +int gsl_linalg_householder_hm (double tau, + const gsl_vector * v, + gsl_matrix * A); + +int gsl_linalg_householder_mh (double tau, + const gsl_vector * v, + gsl_matrix * A); + +int gsl_linalg_householder_hv (double tau, + const gsl_vector * v, + gsl_vector * w); + +int gsl_linalg_householder_hm1 (double tau, + gsl_matrix * A); + +int gsl_linalg_complex_householder_hm (gsl_complex tau, + const gsl_vector_complex * v, + gsl_matrix_complex * A); + +int gsl_linalg_complex_householder_mh (gsl_complex tau, + const gsl_vector_complex * v, + gsl_matrix_complex * A); + +int gsl_linalg_complex_householder_hv (gsl_complex tau, + const gsl_vector_complex * v, + gsl_vector_complex * w); + +/* Hessenberg reduction */ + +int gsl_linalg_hessenberg_decomp(gsl_matrix *A, gsl_vector *tau); +int gsl_linalg_hessenberg_unpack(gsl_matrix * H, gsl_vector * tau, + gsl_matrix * U); +int gsl_linalg_hessenberg_unpack_accum(gsl_matrix * H, gsl_vector * tau, + gsl_matrix * U); +int gsl_linalg_hessenberg_set_zero(gsl_matrix * H); +int gsl_linalg_hessenberg_submatrix(gsl_matrix *M, gsl_matrix *A, + size_t top, gsl_vector *tau); + +/* Hessenberg-Triangular reduction */ + +int gsl_linalg_hesstri_decomp(gsl_matrix * A, gsl_matrix * B, + gsl_matrix * U, gsl_matrix * V, + gsl_vector * work); + +/* Singular Value Decomposition + + * exceptions: + */ + +int +gsl_linalg_SV_decomp (gsl_matrix * A, + gsl_matrix * V, + gsl_vector * S, + gsl_vector * work); + +int +gsl_linalg_SV_decomp_mod (gsl_matrix * A, + gsl_matrix * X, + gsl_matrix * V, + gsl_vector * S, + gsl_vector * work); + +int gsl_linalg_SV_decomp_jacobi (gsl_matrix * A, + gsl_matrix * Q, + gsl_vector * S); + +int +gsl_linalg_SV_solve (const gsl_matrix * U, + const gsl_matrix * Q, + const gsl_vector * S, + const gsl_vector * b, + gsl_vector * x); + +int gsl_linalg_SV_leverage(const gsl_matrix *U, gsl_vector *h); + + +/* LU Decomposition, Gaussian elimination with partial pivoting + */ + +int gsl_linalg_LU_decomp (gsl_matrix * A, gsl_permutation * p, int *signum); + +int gsl_linalg_LU_solve (const gsl_matrix * LU, + const gsl_permutation * p, + const gsl_vector * b, + gsl_vector * x); + +int gsl_linalg_LU_svx (const gsl_matrix * LU, + const gsl_permutation * p, + gsl_vector * x); + +int gsl_linalg_LU_refine (const gsl_matrix * A, + const gsl_matrix * LU, + const gsl_permutation * p, + const gsl_vector * b, + gsl_vector * x, + gsl_vector * work); + +int gsl_linalg_LU_invert (const gsl_matrix * LU, + const gsl_permutation * p, + gsl_matrix * inverse); + +double gsl_linalg_LU_det (gsl_matrix * LU, int signum); +double gsl_linalg_LU_lndet (gsl_matrix * LU); +int gsl_linalg_LU_sgndet (gsl_matrix * lu, int signum); + +/* Complex LU Decomposition */ + +int gsl_linalg_complex_LU_decomp (gsl_matrix_complex * A, + gsl_permutation * p, + int *signum); + +int gsl_linalg_complex_LU_solve (const gsl_matrix_complex * LU, + const gsl_permutation * p, + const gsl_vector_complex * b, + gsl_vector_complex * x); + +int gsl_linalg_complex_LU_svx (const gsl_matrix_complex * LU, + const gsl_permutation * p, + gsl_vector_complex * x); + +int gsl_linalg_complex_LU_refine (const gsl_matrix_complex * A, + const gsl_matrix_complex * LU, + const gsl_permutation * p, + const gsl_vector_complex * b, + gsl_vector_complex * x, + gsl_vector_complex * work); + +int gsl_linalg_complex_LU_invert (const gsl_matrix_complex * LU, + const gsl_permutation * p, + gsl_matrix_complex * inverse); + +gsl_complex gsl_linalg_complex_LU_det (gsl_matrix_complex * LU, + int signum); + +double gsl_linalg_complex_LU_lndet (gsl_matrix_complex * LU); + +gsl_complex gsl_linalg_complex_LU_sgndet (gsl_matrix_complex * LU, + int signum); + +/* QR decomposition */ + +int gsl_linalg_QR_decomp (gsl_matrix * A, + gsl_vector * tau); + +int gsl_linalg_QR_solve (const gsl_matrix * QR, + const gsl_vector * tau, + const gsl_vector * b, + gsl_vector * x); + +int gsl_linalg_QR_svx (const gsl_matrix * QR, + const gsl_vector * tau, + gsl_vector * x); + +int gsl_linalg_QR_lssolve (const gsl_matrix * QR, + const gsl_vector * tau, + const gsl_vector * b, + gsl_vector * x, + gsl_vector * residual); + + +int gsl_linalg_QR_QRsolve (gsl_matrix * Q, + gsl_matrix * R, + const gsl_vector * b, + gsl_vector * x); + +int gsl_linalg_QR_Rsolve (const gsl_matrix * QR, + const gsl_vector * b, + gsl_vector * x); + +int gsl_linalg_QR_Rsvx (const gsl_matrix * QR, + gsl_vector * x); + +int gsl_linalg_QR_update (gsl_matrix * Q, + gsl_matrix * R, + gsl_vector * w, + const gsl_vector * v); + +int gsl_linalg_QR_QTvec (const gsl_matrix * QR, + const gsl_vector * tau, + gsl_vector * v); + +int gsl_linalg_QR_Qvec (const gsl_matrix * QR, + const gsl_vector * tau, + gsl_vector * v); + +int gsl_linalg_QR_QTmat (const gsl_matrix * QR, + const gsl_vector * tau, + gsl_matrix * A); + +int gsl_linalg_QR_matQ (const gsl_matrix * QR, + const gsl_vector * tau, + gsl_matrix * A); + +int gsl_linalg_QR_unpack (const gsl_matrix * QR, + const gsl_vector * tau, + gsl_matrix * Q, + gsl_matrix * R); + +int gsl_linalg_R_solve (const gsl_matrix * R, + const gsl_vector * b, + gsl_vector * x); + +int gsl_linalg_R_svx (const gsl_matrix * R, + gsl_vector * x); + + +/* Q R P^T decomposition */ + +int gsl_linalg_QRPT_decomp (gsl_matrix * A, + gsl_vector * tau, + gsl_permutation * p, + int *signum, + gsl_vector * norm); + +int gsl_linalg_QRPT_decomp2 (const gsl_matrix * A, + gsl_matrix * q, gsl_matrix * r, + gsl_vector * tau, + gsl_permutation * p, + int *signum, + gsl_vector * norm); + +int gsl_linalg_QRPT_solve (const gsl_matrix * QR, + const gsl_vector * tau, + const gsl_permutation * p, + const gsl_vector * b, + gsl_vector * x); + +int gsl_linalg_QRPT_lssolve (const gsl_matrix * QR, + const gsl_vector * tau, + const gsl_permutation * p, + const gsl_vector * b, + gsl_vector * x, + gsl_vector * residual); + +int gsl_linalg_QRPT_lssolve2 (const gsl_matrix * QR, + const gsl_vector * tau, + const gsl_permutation * p, + const gsl_vector * b, + const size_t rank, + gsl_vector * x, + gsl_vector * residual); + +int gsl_linalg_QRPT_svx (const gsl_matrix * QR, + const gsl_vector * tau, + const gsl_permutation * p, + gsl_vector * x); + +int gsl_linalg_QRPT_QRsolve (const gsl_matrix * Q, + const gsl_matrix * R, + const gsl_permutation * p, + const gsl_vector * b, + gsl_vector * x); + +int gsl_linalg_QRPT_Rsolve (const gsl_matrix * QR, + const gsl_permutation * p, + const gsl_vector * b, + gsl_vector * x); + +int gsl_linalg_QRPT_Rsvx (const gsl_matrix * QR, + const gsl_permutation * p, + gsl_vector * x); + +int gsl_linalg_QRPT_update (gsl_matrix * Q, + gsl_matrix * R, + const gsl_permutation * p, + gsl_vector * u, + const gsl_vector * v); + +size_t gsl_linalg_QRPT_rank (const gsl_matrix * QR, const double tol); + +int gsl_linalg_QRPT_rcond(const gsl_matrix * QR, double * rcond, gsl_vector * work); + +/* COD decomposition */ + +int gsl_linalg_COD_decomp(gsl_matrix * A, gsl_vector * tau_Q, gsl_vector * tau_Z, + gsl_permutation * p, size_t * rank, gsl_vector * work); + +int gsl_linalg_COD_decomp_e(gsl_matrix * A, gsl_vector * tau_Q, gsl_vector * tau_Z, + gsl_permutation * p, double tol, size_t * rank, gsl_vector * work); + +int gsl_linalg_COD_lssolve (const gsl_matrix * QRZT, const gsl_vector * tau_Q, const gsl_vector * tau_Z, + const gsl_permutation * perm, const size_t rank, const gsl_vector * b, + gsl_vector * x, gsl_vector * residual); + +int +gsl_linalg_COD_lssolve2 (const double lambda, const gsl_matrix * QRZT, const gsl_vector * tau_Q, const gsl_vector * tau_Z, + const gsl_permutation * perm, const size_t rank, const gsl_vector * b, + gsl_vector * x, gsl_vector * residual, gsl_matrix * S, gsl_vector * work); + +int gsl_linalg_COD_unpack(const gsl_matrix * QRZT, const gsl_vector * tau_Q, + const gsl_vector * tau_Z, const size_t rank, gsl_matrix * Q, + gsl_matrix * R, gsl_matrix * Z); + +int gsl_linalg_COD_matZ(const gsl_matrix * QRZT, const gsl_vector * tau_Z, const size_t rank, + gsl_matrix * A, gsl_vector * work); + +/* LQ decomposition */ + +int gsl_linalg_LQ_decomp (gsl_matrix * A, gsl_vector * tau); + +int gsl_linalg_LQ_solve_T (const gsl_matrix * LQ, const gsl_vector * tau, + const gsl_vector * b, gsl_vector * x); + +int gsl_linalg_LQ_svx_T (const gsl_matrix * LQ, const gsl_vector * tau, + gsl_vector * x); + +int gsl_linalg_LQ_lssolve_T (const gsl_matrix * LQ, const gsl_vector * tau, + const gsl_vector * b, gsl_vector * x, + gsl_vector * residual); + +int gsl_linalg_LQ_Lsolve_T (const gsl_matrix * LQ, const gsl_vector * b, + gsl_vector * x); + +int gsl_linalg_LQ_Lsvx_T (const gsl_matrix * LQ, gsl_vector * x); + +int gsl_linalg_L_solve_T (const gsl_matrix * L, const gsl_vector * b, + gsl_vector * x); + +int gsl_linalg_LQ_vecQ (const gsl_matrix * LQ, const gsl_vector * tau, + gsl_vector * v); + +int gsl_linalg_LQ_vecQT (const gsl_matrix * LQ, const gsl_vector * tau, + gsl_vector * v); + +int gsl_linalg_LQ_unpack (const gsl_matrix * LQ, const gsl_vector * tau, + gsl_matrix * Q, gsl_matrix * L); + +int gsl_linalg_LQ_update (gsl_matrix * Q, gsl_matrix * R, + const gsl_vector * v, gsl_vector * w); +int gsl_linalg_LQ_LQsolve (gsl_matrix * Q, gsl_matrix * L, + const gsl_vector * b, gsl_vector * x); + +/* P^T L Q decomposition */ + +int gsl_linalg_PTLQ_decomp (gsl_matrix * A, gsl_vector * tau, + gsl_permutation * p, int *signum, + gsl_vector * norm); + +int gsl_linalg_PTLQ_decomp2 (const gsl_matrix * A, gsl_matrix * q, + gsl_matrix * r, gsl_vector * tau, + gsl_permutation * p, int *signum, + gsl_vector * norm); + +int gsl_linalg_PTLQ_solve_T (const gsl_matrix * QR, + const gsl_vector * tau, + const gsl_permutation * p, + const gsl_vector * b, + gsl_vector * x); + +int gsl_linalg_PTLQ_svx_T (const gsl_matrix * LQ, + const gsl_vector * tau, + const gsl_permutation * p, + gsl_vector * x); + +int gsl_linalg_PTLQ_LQsolve_T (const gsl_matrix * Q, const gsl_matrix * L, + const gsl_permutation * p, + const gsl_vector * b, + gsl_vector * x); + +int gsl_linalg_PTLQ_Lsolve_T (const gsl_matrix * LQ, + const gsl_permutation * p, + const gsl_vector * b, + gsl_vector * x); + +int gsl_linalg_PTLQ_Lsvx_T (const gsl_matrix * LQ, + const gsl_permutation * p, + gsl_vector * x); + +int gsl_linalg_PTLQ_update (gsl_matrix * Q, gsl_matrix * L, + const gsl_permutation * p, + const gsl_vector * v, gsl_vector * w); + +/* Cholesky Decomposition */ + +int gsl_linalg_cholesky_decomp (gsl_matrix * A); +int gsl_linalg_cholesky_decomp1 (gsl_matrix * A); + +int gsl_linalg_cholesky_solve (const gsl_matrix * cholesky, + const gsl_vector * b, + gsl_vector * x); +int gsl_linalg_cholesky_solve_mat (const gsl_matrix * cholesky, + const gsl_matrix * B, + gsl_matrix * X); + +int gsl_linalg_cholesky_svx (const gsl_matrix * cholesky, + gsl_vector * x); +int gsl_linalg_cholesky_svx_mat (const gsl_matrix * cholesky, + gsl_matrix * X); + +int gsl_linalg_cholesky_invert(gsl_matrix * cholesky); + +/* Cholesky decomposition with unit-diagonal triangular parts. + * A = L D L^T, where diag(L) = (1,1,...,1). + * Upon exit, A contains L and L^T as for Cholesky, and + * the diagonal of A is (1,1,...,1). The vector Dis set + * to the diagonal elements of the diagonal matrix D. + */ +int gsl_linalg_cholesky_decomp_unit(gsl_matrix * A, gsl_vector * D); + +int gsl_linalg_cholesky_scale(const gsl_matrix * A, gsl_vector * S); + +int gsl_linalg_cholesky_scale_apply(gsl_matrix * A, const gsl_vector * S); + +int gsl_linalg_cholesky_decomp2(gsl_matrix * A, gsl_vector * S); + +int gsl_linalg_cholesky_svx2 (const gsl_matrix * LLT, + const gsl_vector * S, + gsl_vector * x); + +int gsl_linalg_cholesky_solve2 (const gsl_matrix * LLT, + const gsl_vector * S, + const gsl_vector * b, + gsl_vector * x); + +int gsl_linalg_cholesky_rcond (const gsl_matrix * LLT, double * rcond, + gsl_vector * work); + +/* Complex Cholesky Decomposition */ + +int gsl_linalg_complex_cholesky_decomp (gsl_matrix_complex * A); + +int gsl_linalg_complex_cholesky_solve (const gsl_matrix_complex * cholesky, + const gsl_vector_complex * b, + gsl_vector_complex * x); + +int gsl_linalg_complex_cholesky_svx (const gsl_matrix_complex * cholesky, + gsl_vector_complex * x); + +int gsl_linalg_complex_cholesky_invert(gsl_matrix_complex * cholesky); + +/* Pivoted Cholesky LDLT decomposition */ + +int gsl_linalg_pcholesky_decomp (gsl_matrix * A, gsl_permutation * p); + +int gsl_linalg_pcholesky_solve(const gsl_matrix * LDLT, + const gsl_permutation * p, + const gsl_vector * b, + gsl_vector * x); + +int gsl_linalg_pcholesky_svx(const gsl_matrix * LDLT, + const gsl_permutation * p, + gsl_vector * x); + +int gsl_linalg_pcholesky_decomp2(gsl_matrix * A, gsl_permutation * p, + gsl_vector * S); + +int gsl_linalg_pcholesky_solve2(const gsl_matrix * LDLT, + const gsl_permutation * p, + const gsl_vector * S, + const gsl_vector * b, + gsl_vector * x); + +int gsl_linalg_pcholesky_svx2(const gsl_matrix * LDLT, + const gsl_permutation * p, + const gsl_vector * S, + gsl_vector * x); + +int gsl_linalg_pcholesky_invert(const gsl_matrix * LDLT, const gsl_permutation * p, + gsl_matrix * Ainv); + +int gsl_linalg_pcholesky_rcond (const gsl_matrix * LDLT, const gsl_permutation * p, + double * rcond, gsl_vector * work); + +/* Modified Cholesky decomposition */ + +int gsl_linalg_mcholesky_decomp (gsl_matrix * A, gsl_permutation * p, + gsl_vector * E); + +int gsl_linalg_mcholesky_solve(const gsl_matrix * LDLT, + const gsl_permutation * p, + const gsl_vector * b, + gsl_vector * x); + +int gsl_linalg_mcholesky_svx(const gsl_matrix * LDLT, + const gsl_permutation * p, + gsl_vector * x); + +int gsl_linalg_mcholesky_rcond (const gsl_matrix * LDLT, const gsl_permutation * p, + double * rcond, gsl_vector * work); + +int gsl_linalg_mcholesky_invert(const gsl_matrix * LDLT, const gsl_permutation * p, + gsl_matrix * Ainv); + +/* Symmetric to symmetric tridiagonal decomposition */ + +int gsl_linalg_symmtd_decomp (gsl_matrix * A, + gsl_vector * tau); + +int gsl_linalg_symmtd_unpack (const gsl_matrix * A, + const gsl_vector * tau, + gsl_matrix * Q, + gsl_vector * diag, + gsl_vector * subdiag); + +int gsl_linalg_symmtd_unpack_T (const gsl_matrix * A, + gsl_vector * diag, + gsl_vector * subdiag); + +/* Hermitian to symmetric tridiagonal decomposition */ + +int gsl_linalg_hermtd_decomp (gsl_matrix_complex * A, + gsl_vector_complex * tau); + +int gsl_linalg_hermtd_unpack (const gsl_matrix_complex * A, + const gsl_vector_complex * tau, + gsl_matrix_complex * U, + gsl_vector * diag, + gsl_vector * sudiag); + +int gsl_linalg_hermtd_unpack_T (const gsl_matrix_complex * A, + gsl_vector * diag, + gsl_vector * subdiag); + +/* Linear Solve Using Householder Transformations + + * exceptions: + */ + +int gsl_linalg_HH_solve (gsl_matrix * A, const gsl_vector * b, gsl_vector * x); +int gsl_linalg_HH_svx (gsl_matrix * A, gsl_vector * x); + +/* Linear solve for a symmetric tridiagonal system. + + * The input vectors represent the NxN matrix as follows: + * + * diag[0] offdiag[0] 0 ... + * offdiag[0] diag[1] offdiag[1] ... + * 0 offdiag[1] diag[2] ... + * 0 0 offdiag[2] ... + * ... ... ... ... + */ +int gsl_linalg_solve_symm_tridiag (const gsl_vector * diag, + const gsl_vector * offdiag, + const gsl_vector * b, + gsl_vector * x); + +/* Linear solve for a nonsymmetric tridiagonal system. + + * The input vectors represent the NxN matrix as follows: + * + * diag[0] abovediag[0] 0 ... + * belowdiag[0] diag[1] abovediag[1] ... + * 0 belowdiag[1] diag[2] ... + * 0 0 belowdiag[2] ... + * ... ... ... ... + */ +int gsl_linalg_solve_tridiag (const gsl_vector * diag, + const gsl_vector * abovediag, + const gsl_vector * belowdiag, + const gsl_vector * b, + gsl_vector * x); + + +/* Linear solve for a symmetric cyclic tridiagonal system. + + * The input vectors represent the NxN matrix as follows: + * + * diag[0] offdiag[0] 0 ..... offdiag[N-1] + * offdiag[0] diag[1] offdiag[1] ..... + * 0 offdiag[1] diag[2] ..... + * 0 0 offdiag[2] ..... + * ... ... + * offdiag[N-1] ... + */ +int gsl_linalg_solve_symm_cyc_tridiag (const gsl_vector * diag, + const gsl_vector * offdiag, + const gsl_vector * b, + gsl_vector * x); + +/* Linear solve for a nonsymmetric cyclic tridiagonal system. + + * The input vectors represent the NxN matrix as follows: + * + * diag[0] abovediag[0] 0 ..... belowdiag[N-1] + * belowdiag[0] diag[1] abovediag[1] ..... + * 0 belowdiag[1] diag[2] + * 0 0 belowdiag[2] ..... + * ... ... + * abovediag[N-1] ... + */ +int gsl_linalg_solve_cyc_tridiag (const gsl_vector * diag, + const gsl_vector * abovediag, + const gsl_vector * belowdiag, + const gsl_vector * b, + gsl_vector * x); + + +/* Bidiagonal decomposition */ + +int gsl_linalg_bidiag_decomp (gsl_matrix * A, + gsl_vector * tau_U, + gsl_vector * tau_V); + +int gsl_linalg_bidiag_unpack (const gsl_matrix * A, + const gsl_vector * tau_U, + gsl_matrix * U, + const gsl_vector * tau_V, + gsl_matrix * V, + gsl_vector * diag, + gsl_vector * superdiag); + +int gsl_linalg_bidiag_unpack2 (gsl_matrix * A, + gsl_vector * tau_U, + gsl_vector * tau_V, + gsl_matrix * V); + +int gsl_linalg_bidiag_unpack_B (const gsl_matrix * A, + gsl_vector * diag, + gsl_vector * superdiag); + +/* Balancing */ + +int gsl_linalg_balance_matrix (gsl_matrix * A, gsl_vector * D); +int gsl_linalg_balance_accum (gsl_matrix * A, gsl_vector * D); +int gsl_linalg_balance_columns (gsl_matrix * A, gsl_vector * D); + +/* condition estimation */ + +int gsl_linalg_tri_upper_rcond(const gsl_matrix * A, double * rcond, gsl_vector * work); +int gsl_linalg_tri_lower_rcond(const gsl_matrix * A, double * rcond, gsl_vector * work); +int gsl_linalg_invnorm1(const size_t N, + int (* Ainvx)(CBLAS_TRANSPOSE_t TransA, gsl_vector * x, void * params), + void * params, double * Ainvnorm, gsl_vector * work); + +/* triangular matrices */ + +int gsl_linalg_tri_upper_invert(gsl_matrix * T); +int gsl_linalg_tri_lower_invert(gsl_matrix * T); +int gsl_linalg_tri_upper_unit_invert(gsl_matrix * T); +int gsl_linalg_tri_lower_unit_invert(gsl_matrix * T); + +INLINE_DECL void gsl_linalg_givens (const double a, const double b, + double *c, double *s); +INLINE_DECL void gsl_linalg_givens_gv (gsl_vector * v, const size_t i, + const size_t j, const double c, + const double s); + +#ifdef HAVE_INLINE + +/* Generate a Givens rotation (cos,sin) which takes v=(x,y) to (|v|,0) + From Golub and Van Loan, "Matrix Computations", Section 5.1.8 */ +INLINE_FUN +void +gsl_linalg_givens (const double a, const double b, double *c, double *s) +{ + if (b == 0) + { + *c = 1; + *s = 0; + } + else if (fabs (b) > fabs (a)) + { + double t = -a / b; + double s1 = 1.0 / sqrt (1 + t * t); + *s = s1; + *c = s1 * t; + } + else + { + double t = -b / a; + double c1 = 1.0 / sqrt (1 + t * t); + *c = c1; + *s = c1 * t; + } +} /* gsl_linalg_givens() */ + +INLINE_FUN +void +gsl_linalg_givens_gv (gsl_vector * v, const size_t i, const size_t j, + const double c, const double s) +{ + /* Apply rotation to vector v' = G^T v */ + + double vi = gsl_vector_get (v, i); + double vj = gsl_vector_get (v, j); + gsl_vector_set (v, i, c * vi - s * vj); + gsl_vector_set (v, j, s * vi + c * vj); +} + +#endif /* HAVE_INLINE */ + +__END_DECLS + +#endif /* __GSL_LINALG_H__ */ diff --git a/gsl-2.5/linalg/hermtd.c b/gsl-2.5/linalg/hermtd.c new file mode 100644 index 00000000..3660e96a --- /dev/null +++ b/gsl-2.5/linalg/hermtd.c @@ -0,0 +1,240 @@ +/* linalg/hermtd.c + * + * Copyright (C) 2001, 2007, 2009 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Factorise a hermitian matrix A into + * + * A = U T U' + * + * where U is unitary and T is real symmetric tridiagonal. Only the + * diagonal and lower triangular part of A is referenced and modified. + * + * On exit, T is stored in the diagonal and first subdiagonal of + * A. Since T is symmetric the upper diagonal is not stored. + * + * U is stored as a packed set of Householder transformations in the + * lower triangular part of the input matrix below the first subdiagonal. + * + * The full matrix for U can be obtained as the product + * + * U = U_N ... U_2 U_1 + * + * where + * + * U_i = (I - tau_i * v_i * v_i') + * + * and where v_i is a Householder vector + * + * v_i = [0, ..., 0, 1, A(i+2,i), A(i+3,i), ... , A(N,i)] + * + * This storage scheme is the same as in LAPACK. See LAPACK's + * chetd2.f for details. + * + * See Golub & Van Loan, "Matrix Computations" (3rd ed), Section 8.3 */ + +#include +#include +#include +#include +#include +#include +#include + +#include + +int +gsl_linalg_hermtd_decomp (gsl_matrix_complex * A, gsl_vector_complex * tau) +{ + if (A->size1 != A->size2) + { + GSL_ERROR ("hermitian tridiagonal decomposition requires square matrix", + GSL_ENOTSQR); + } + else if (tau->size + 1 != A->size1) + { + GSL_ERROR ("size of tau must be (matrix size - 1)", GSL_EBADLEN); + } + else + { + const size_t N = A->size1; + size_t i; + + const gsl_complex zero = gsl_complex_rect (0.0, 0.0); + const gsl_complex one = gsl_complex_rect (1.0, 0.0); + const gsl_complex neg_one = gsl_complex_rect (-1.0, 0.0); + + for (i = 0 ; i < N - 1; i++) + { + gsl_vector_complex_view c = gsl_matrix_complex_column (A, i); + gsl_vector_complex_view v = gsl_vector_complex_subvector (&c.vector, i + 1, N - (i + 1)); + gsl_complex tau_i = gsl_linalg_complex_householder_transform (&v.vector); + + /* Apply the transformation H^T A H to the remaining columns */ + + if ((i + 1) < (N - 1) + && !(GSL_REAL(tau_i) == 0.0 && GSL_IMAG(tau_i) == 0.0)) + { + gsl_matrix_complex_view m = + gsl_matrix_complex_submatrix (A, i + 1, i + 1, + N - (i+1), N - (i+1)); + gsl_complex ei = gsl_vector_complex_get(&v.vector, 0); + gsl_vector_complex_view x = gsl_vector_complex_subvector (tau, i, N-(i+1)); + gsl_vector_complex_set (&v.vector, 0, one); + + /* x = tau * A * v */ + gsl_blas_zhemv (CblasLower, tau_i, &m.matrix, &v.vector, zero, &x.vector); + + /* w = x - (1/2) tau * (x' * v) * v */ + { + gsl_complex xv, txv, alpha; + gsl_blas_zdotc(&x.vector, &v.vector, &xv); + txv = gsl_complex_mul(tau_i, xv); + alpha = gsl_complex_mul_real(txv, -0.5); + gsl_blas_zaxpy(alpha, &v.vector, &x.vector); + } + + /* apply the transformation A = A - v w' - w v' */ + gsl_blas_zher2(CblasLower, neg_one, &v.vector, &x.vector, &m.matrix); + + gsl_vector_complex_set (&v.vector, 0, ei); + } + + gsl_vector_complex_set (tau, i, tau_i); + } + + return GSL_SUCCESS; + } +} + + +/* Form the orthogonal matrix U from the packed QR matrix */ + +int +gsl_linalg_hermtd_unpack (const gsl_matrix_complex * A, + const gsl_vector_complex * tau, + gsl_matrix_complex * U, + gsl_vector * diag, + gsl_vector * sdiag) +{ + if (A->size1 != A->size2) + { + GSL_ERROR ("matrix A must be sqaure", GSL_ENOTSQR); + } + else if (tau->size + 1 != A->size1) + { + GSL_ERROR ("size of tau must be (matrix size - 1)", GSL_EBADLEN); + } + else if (U->size1 != A->size1 || U->size2 != A->size1) + { + GSL_ERROR ("size of U must match size of A", GSL_EBADLEN); + } + else if (diag->size != A->size1) + { + GSL_ERROR ("size of diagonal must match size of A", GSL_EBADLEN); + } + else if (sdiag->size + 1 != A->size1) + { + GSL_ERROR ("size of subdiagonal must be (matrix size - 1)", GSL_EBADLEN); + } + else + { + const size_t N = A->size1; + + size_t i; + + /* Initialize U to the identity */ + + gsl_matrix_complex_set_identity (U); + + for (i = N - 1; i-- > 0;) + { + gsl_complex ti = gsl_vector_complex_get (tau, i); + + gsl_vector_complex_const_view c = gsl_matrix_complex_const_column (A, i); + + gsl_vector_complex_const_view h = + gsl_vector_complex_const_subvector (&c.vector, i + 1, N - (i+1)); + + gsl_matrix_complex_view m = + gsl_matrix_complex_submatrix (U, i + 1, i + 1, N-(i+1), N-(i+1)); + + gsl_linalg_complex_householder_hm (ti, &h.vector, &m.matrix); + } + + /* Copy diagonal into diag */ + + for (i = 0; i < N; i++) + { + gsl_complex Aii = gsl_matrix_complex_get (A, i, i); + gsl_vector_set (diag, i, GSL_REAL(Aii)); + } + + /* Copy subdiagonal into sdiag */ + + for (i = 0; i < N - 1; i++) + { + gsl_complex Aji = gsl_matrix_complex_get (A, i+1, i); + gsl_vector_set (sdiag, i, GSL_REAL(Aji)); + } + + return GSL_SUCCESS; + } +} + +int +gsl_linalg_hermtd_unpack_T (const gsl_matrix_complex * A, + gsl_vector * diag, + gsl_vector * sdiag) +{ + if (A->size1 != A->size2) + { + GSL_ERROR ("matrix A must be sqaure", GSL_ENOTSQR); + } + else if (diag->size != A->size1) + { + GSL_ERROR ("size of diagonal must match size of A", GSL_EBADLEN); + } + else if (sdiag->size + 1 != A->size1) + { + GSL_ERROR ("size of subdiagonal must be (matrix size - 1)", GSL_EBADLEN); + } + else + { + const size_t N = A->size1; + + size_t i; + + /* Copy diagonal into diag */ + + for (i = 0; i < N; i++) + { + gsl_complex Aii = gsl_matrix_complex_get (A, i, i); + gsl_vector_set (diag, i, GSL_REAL(Aii)); + } + + /* Copy subdiagonal into sd */ + + for (i = 0; i < N - 1; i++) + { + gsl_complex Aji = gsl_matrix_complex_get (A, i+1, i); + gsl_vector_set (sdiag, i, GSL_REAL(Aji)); + } + + return GSL_SUCCESS; + } +} diff --git a/gsl-2.5/linalg/hermtd.lo b/gsl-2.5/linalg/hermtd.lo new file mode 100644 index 00000000..a163713d --- /dev/null +++ b/gsl-2.5/linalg/hermtd.lo @@ -0,0 +1,12 @@ +# hermtd.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/hermtd.o' + +# Name of the non-PIC object +non_pic_object='hermtd.o' + diff --git a/gsl-2.5/linalg/hessenberg.c b/gsl-2.5/linalg/hessenberg.c new file mode 100644 index 00000000..3375323c --- /dev/null +++ b/gsl-2.5/linalg/hessenberg.c @@ -0,0 +1,444 @@ +/* linalg/hessenberg.c + * + * Copyright (C) 2006 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include + +/* +gsl_linalg_hessenberg_decomp() + Compute the Householder reduction to Hessenberg form of a +square N-by-N matrix A. + +H = U^t A U + +See Golub & Van Loan, "Matrix Computations" (3rd ed), algorithm +7.4.2 + +Inputs: A - matrix to reduce + tau - where to store scalar factors in Householder + matrices; this vector must be of length N, + where N is the order of A + +Return: GSL_SUCCESS unless error occurs + +Notes: on output, the upper triangular portion of A (including +the diagaonal and subdiagonal) contains the Hessenberg matrix. +The lower triangular portion (below the subdiagonal) contains +the Householder vectors which can be used to construct +the similarity transform matrix U. + +The matrix U is + +U = U(1) U(2) ... U(n - 2) + +where + +U(i) = I - tau(i) * v(i) * v(i)^t + +and the vector v(i) is stored in column i of the matrix A +underneath the subdiagonal. So the first element of v(i) +is stored in row i + 2, column i, the second element at +row i + 3, column i, and so on. + +Also note that for the purposes of computing U(i), +v(1:i) = 0, v(i + 1) = 1, and v(i+2:n) is what is stored in +column i of A beneath the subdiagonal. +*/ + +int +gsl_linalg_hessenberg_decomp(gsl_matrix *A, gsl_vector *tau) +{ + const size_t N = A->size1; + + if (N != A->size2) + { + GSL_ERROR ("Hessenberg reduction requires square matrix", + GSL_ENOTSQR); + } + else if (N != tau->size) + { + GSL_ERROR ("tau vector must match matrix size", GSL_EBADLEN); + } + else if (N < 3) + { + /* nothing to do */ + return GSL_SUCCESS; + } + else + { + size_t i; /* looping */ + gsl_vector_view c, /* matrix column */ + hv; /* householder vector */ + gsl_matrix_view m; + double tau_i; /* beta in algorithm 7.4.2 */ + + for (i = 0; i < N - 2; ++i) + { + /* + * make a copy of A(i + 1:n, i) and store it in the section + * of 'tau' that we haven't stored coefficients in yet + */ + + c = gsl_matrix_subcolumn(A, i, i + 1, N - i - 1); + + hv = gsl_vector_subvector(tau, i + 1, N - (i + 1)); + gsl_vector_memcpy(&hv.vector, &c.vector); + + /* compute householder transformation of A(i+1:n,i) */ + tau_i = gsl_linalg_householder_transform(&hv.vector); + + /* apply left householder matrix (I - tau_i v v') to A */ + m = gsl_matrix_submatrix(A, i + 1, i, N - (i + 1), N - i); + gsl_linalg_householder_hm(tau_i, &hv.vector, &m.matrix); + + /* apply right householder matrix (I - tau_i v v') to A */ + m = gsl_matrix_submatrix(A, 0, i + 1, N, N - (i + 1)); + gsl_linalg_householder_mh(tau_i, &hv.vector, &m.matrix); + + /* save Householder coefficient */ + gsl_vector_set(tau, i, tau_i); + + /* + * store Householder vector below the subdiagonal in column + * i of the matrix. hv(1) does not need to be stored since + * it is always 1. + */ + c = gsl_vector_subvector(&c.vector, 1, c.vector.size - 1); + hv = gsl_vector_subvector(&hv.vector, 1, hv.vector.size - 1); + gsl_vector_memcpy(&c.vector, &hv.vector); + } + + return GSL_SUCCESS; + } +} /* gsl_linalg_hessenberg_decomp() */ + +/* +gsl_linalg_hessenberg_unpack() + Construct the matrix U which transforms a matrix A into +its upper Hessenberg form: + +H = U^t A U + +by unpacking the information stored in H from gsl_linalg_hessenberg(). + +U is a product of Householder matrices: + +U = U(1) U(2) ... U(n - 2) + +where + +U(i) = I - tau(i) * v(i) * v(i)^t + +The v(i) are stored in the lower triangular part of H by +gsl_linalg_hessenberg(). The tau(i) are stored in the vector tau. + +Inputs: H - Hessenberg matrix computed from + gsl_linalg_hessenberg() + tau - tau vector computed from gsl_linalg_hessenberg() + U - (output) where to store similarity matrix + +Return: success or error +*/ + +int +gsl_linalg_hessenberg_unpack(gsl_matrix * H, gsl_vector * tau, + gsl_matrix * U) +{ + int s; + + gsl_matrix_set_identity(U); + + s = gsl_linalg_hessenberg_unpack_accum(H, tau, U); + + return s; +} /* gsl_linalg_hessenberg_unpack() */ + +/* +gsl_linalg_hessenberg_unpack_accum() + This routine is the same as gsl_linalg_hessenberg_unpack(), except +instead of storing the similarity matrix in U, it accumulates it, +so that + +U -> U * [ U(1) U(2) ... U(n - 2) ] + +instead of: + +U -> U(1) U(2) ... U(n - 2) + +Inputs: H - Hessenberg matrix computed from + gsl_linalg_hessenberg() + tau - tau vector computed from gsl_linalg_hessenberg() + V - (input/output) where to accumulate similarity matrix + +Return: success or error + +Notes: 1) On input, V needs to be initialized. The Householder matrices + are accumulated into V, so on output, + + V_out = V_in * U(1) * U(2) * ... * U(n - 2) + + so if you just want the product of the Householder matrices, + initialize V to the identity matrix before calling this + function. + + 2) V does not have to be square, but must have the same + number of columns as the order of H +*/ + +int +gsl_linalg_hessenberg_unpack_accum(gsl_matrix * H, gsl_vector * tau, + gsl_matrix * V) +{ + const size_t N = H->size1; + + if (N != H->size2) + { + GSL_ERROR ("Hessenberg reduction requires square matrix", + GSL_ENOTSQR); + } + else if (N != tau->size) + { + GSL_ERROR ("tau vector must match matrix size", GSL_EBADLEN); + } + else if (N != V->size2) + { + GSL_ERROR ("V matrix has wrong dimension", GSL_EBADLEN); + } + else + { + size_t j; /* looping */ + double tau_j; /* householder coefficient */ + gsl_vector_view c, /* matrix column */ + hv; /* householder vector */ + gsl_matrix_view m; + + if (N < 3) + { + /* nothing to do */ + return GSL_SUCCESS; + } + + for (j = 0; j < (N - 2); ++j) + { + c = gsl_matrix_column(H, j); + + tau_j = gsl_vector_get(tau, j); + + /* + * get a view to the householder vector in column j, but + * make sure hv(2) starts at the element below the + * subdiagonal, since hv(1) was never stored and is always + * 1 + */ + hv = gsl_vector_subvector(&c.vector, j + 1, N - (j + 1)); + + /* + * Only operate on part of the matrix since the first + * j + 1 entries of the real householder vector are 0 + * + * V -> V * U(j) + * + * Note here that V->size1 is not necessarily equal to N + */ + m = gsl_matrix_submatrix(V, 0, j + 1, V->size1, N - (j + 1)); + + /* apply right Householder matrix to V */ + gsl_linalg_householder_mh(tau_j, &hv.vector, &m.matrix); + } + + return GSL_SUCCESS; + } +} /* gsl_linalg_hessenberg_unpack_accum() */ + +/* +gsl_linalg_hessenberg_set_zero() + Zero out the lower triangular portion of the Hessenberg matrix H. +This is useful when Householder vectors may be stored in the lower +part of H, but eigenvalue solvers need some scratch space with zeros. +*/ + +int +gsl_linalg_hessenberg_set_zero(gsl_matrix * H) +{ + const size_t N = H->size1; + size_t i, j; + + if (N < 3) + return GSL_SUCCESS; + + for (j = 0; j < N - 2; ++j) + { + for (i = j + 2; i < N; ++i) + { + gsl_matrix_set(H, i, j, 0.0); + } + } + + return GSL_SUCCESS; +} /* gsl_linalg_hessenberg_set_zero() */ + +/* +gsl_linalg_hessenberg_submatrix() + + This routine does the same thing as gsl_linalg_hessenberg(), +except that it operates on a submatrix of a larger matrix, but +updates the larger matrix with the Householder transformations. + +For example, suppose + +M = [ M_{11} | M_{12} | M_{13} ] + [ 0 | A | M_{23} ] + [ 0 | 0 | M_{33} ] + +where M_{11} and M_{33} are already in Hessenberg form, and we +just want to reduce A to Hessenberg form. Applying the transformations +to A alone will cause the larger matrix M to lose its similarity +information. So this routine updates M_{12} and M_{23} as A gets +reduced. + +Inputs: M - total matrix + A - (sub)matrix to reduce + top - row index of top of A in M + tau - where to store scalar factors in Householder + matrices; this vector must be of length N, + where N is the order of A + +Return: GSL_SUCCESS unless error occurs + +Notes: on output, the upper triangular portion of A (including +the diagaonal and subdiagonal) contains the Hessenberg matrix. +The lower triangular portion (below the subdiagonal) contains +the Householder vectors which can be used to construct +the similarity transform matrix U. + +The matrix U is + +U = U(1) U(2) ... U(n - 2) + +where + +U(i) = I - tau(i) * v(i) * v(i)^t + +and the vector v(i) is stored in column i of the matrix A +underneath the subdiagonal. So the first element of v(i) +is stored in row i + 2, column i, the second element at +row i + 3, column i, and so on. + +Also note that for the purposes of computing U(i), +v(1:i) = 0, v(i + 1) = 1, and v(i+2:n) is what is stored in +column i of A beneath the subdiagonal. +*/ + +int +gsl_linalg_hessenberg_submatrix(gsl_matrix *M, gsl_matrix *A, size_t top, + gsl_vector *tau) +{ + const size_t N = A->size1; + const size_t N_M = M->size1; + + if (N != A->size2) + { + GSL_ERROR ("Hessenberg reduction requires square matrix", + GSL_ENOTSQR); + } + else if (N != tau->size) + { + GSL_ERROR ("tau vector must match matrix size", GSL_EBADLEN); + } + else if (N < 3) + { + /* nothing to do */ + return GSL_SUCCESS; + } + else + { + size_t i; /* looping */ + gsl_vector_view c, /* matrix column */ + hv; /* householder vector */ + gsl_matrix_view m; + double tau_i; /* beta in algorithm 7.4.2 */ + + for (i = 0; i < N - 2; ++i) + { + /* + * make a copy of A(i + 1:n, i) and store it in the section + * of 'tau' that we haven't stored coefficients in yet + */ + + c = gsl_matrix_subcolumn(A, i, i + 1, N - i - 1); + + hv = gsl_vector_subvector(tau, i + 1, N - (i + 1)); + gsl_vector_memcpy(&hv.vector, &c.vector); + + /* compute householder transformation of A(i+1:n,i) */ + tau_i = gsl_linalg_householder_transform(&hv.vector); + + /* + * apply left householder matrix (I - tau_i v v') to + * [ A | M_{23} ] + */ + m = gsl_matrix_submatrix(M, + top + i + 1, + top + i, + N - (i + 1), + N_M - top - i); + gsl_linalg_householder_hm(tau_i, &hv.vector, &m.matrix); + + /* + * apply right householder matrix (I - tau_i v v') to + * + * [ M_{12} ] + * [ A ] + */ + m = gsl_matrix_submatrix(M, + 0, + top + i + 1, + top + N, + N - (i + 1)); + gsl_linalg_householder_mh(tau_i, &hv.vector, &m.matrix); + + /* save Householder coefficient */ + gsl_vector_set(tau, i, tau_i); + + /* + * store Householder vector below the subdiagonal in column + * i of the matrix. hv(1) does not need to be stored since + * it is always 1. + */ + c = gsl_vector_subvector(&c.vector, 1, c.vector.size - 1); + hv = gsl_vector_subvector(&hv.vector, 1, hv.vector.size - 1); + gsl_vector_memcpy(&c.vector, &hv.vector); + } + + return GSL_SUCCESS; + } +} /* gsl_linalg_hessenberg_submatrix() */ + +#ifndef GSL_DISABLE_DEPRECATED + +/* To support gsl-1.9 interface: DEPRECATED */ +int +gsl_linalg_hessenberg(gsl_matrix *A, gsl_vector *tau) +{ + return gsl_linalg_hessenberg_decomp(A, tau); +} + +#endif diff --git a/gsl-2.5/linalg/hessenberg.lo b/gsl-2.5/linalg/hessenberg.lo new file mode 100644 index 00000000..c7088772 --- /dev/null +++ b/gsl-2.5/linalg/hessenberg.lo @@ -0,0 +1,12 @@ +# hessenberg.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/hessenberg.o' + +# Name of the non-PIC object +non_pic_object='hessenberg.o' + diff --git a/gsl-2.5/linalg/hesstri.c b/gsl-2.5/linalg/hesstri.c new file mode 100644 index 00000000..06e6f836 --- /dev/null +++ b/gsl-2.5/linalg/hesstri.c @@ -0,0 +1,171 @@ +/* linalg/hesstri.c + * + * Copyright (C) 2006, 2007 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include + +#include +#include +#include +#include +#include + +/* + * This module contains routines related to the Hessenberg-Triangular + * reduction of two general real matrices + * + * See Golub & Van Loan, "Matrix Computations", 3rd ed, sec 7.7.4 + */ + +/* +gsl_linalg_hesstri_decomp() + Perform a reduction to generalized upper Hessenberg form. +Given A and B, this function overwrites A with an upper Hessenberg +matrix H = U^T A V and B with an upper triangular matrix R = U^T B V +with U and V orthogonal. + +See Golub & Van Loan, "Matrix Computations" (3rd ed) algorithm 7.7.1 + +Inputs: A - real square matrix + B - real square matrix + U - (output) if non-null, U is stored here on output + V - (output) if non-null, V is stored here on output + work - workspace (length n) + +Return: success or error +*/ + +int +gsl_linalg_hesstri_decomp(gsl_matrix * A, gsl_matrix * B, gsl_matrix * U, + gsl_matrix * V, gsl_vector * work) +{ + const size_t N = A->size1; + + if ((N != A->size2) || (N != B->size1) || (N != B->size2)) + { + GSL_ERROR ("Hessenberg-triangular reduction requires square matrices", + GSL_ENOTSQR); + } + else if (N != work->size) + { + GSL_ERROR ("length of workspace must match matrix dimension", + GSL_EBADLEN); + } + else + { + double cs, sn; /* rotation parameters */ + size_t i, j; /* looping */ + gsl_vector_view xv, yv; /* temporary views */ + + /* B -> Q^T B = R (upper triangular) */ + gsl_linalg_QR_decomp(B, work); + + /* A -> Q^T A */ + gsl_linalg_QR_QTmat(B, work, A); + + /* initialize U and V if desired */ + + if (U) + { + gsl_linalg_QR_unpack(B, work, U, B); + } + else + { + /* zero out lower triangle of B */ + for (j = 0; j < N - 1; ++j) + { + for (i = j + 1; i < N; ++i) + gsl_matrix_set(B, i, j, 0.0); + } + } + + if (V) + gsl_matrix_set_identity(V); + + if (N < 3) + return GSL_SUCCESS; /* nothing more to do */ + + /* reduce A and B */ + for (j = 0; j < N - 2; ++j) + { + for (i = N - 1; i >= (j + 2); --i) + { + /* step 1: rotate rows i - 1, i to kill A(i,j) */ + + /* + * compute G = [ CS SN ] so that G^t [ A(i-1,j) ] = [ * ] + * [-SN CS ] [ A(i, j) ] [ 0 ] + */ + gsl_linalg_givens(gsl_matrix_get(A, i - 1, j), + gsl_matrix_get(A, i, j), + &cs, + &sn); + /* invert so drot() works correctly (G -> G^t) */ + sn = -sn; + + /* compute G^t A(i-1:i, j:n) */ + xv = gsl_matrix_subrow(A, i - 1, j, N - j); + yv = gsl_matrix_subrow(A, i, j, N - j); + gsl_blas_drot(&xv.vector, &yv.vector, cs, sn); + + /* compute G^t B(i-1:i, i-1:n) */ + xv = gsl_matrix_subrow(B, i - 1, i - 1, N - i + 1); + yv = gsl_matrix_subrow(B, i, i - 1, N - i + 1); + gsl_blas_drot(&xv.vector, &yv.vector, cs, sn); + + if (U) + { + /* accumulate U: U -> U G */ + xv = gsl_matrix_column(U, i - 1); + yv = gsl_matrix_column(U, i); + gsl_blas_drot(&xv.vector, &yv.vector, cs, sn); + } + + /* step 2: rotate columns i, i - 1 to kill B(i, i - 1) */ + + gsl_linalg_givens(-gsl_matrix_get(B, i, i), + gsl_matrix_get(B, i, i - 1), + &cs, + &sn); + /* invert so drot() works correctly (G -> G^t) */ + sn = -sn; + + /* compute B(1:i, i-1:i) G */ + xv = gsl_matrix_subcolumn(B, i - 1, 0, i + 1); + yv = gsl_matrix_subcolumn(B, i, 0, i + 1); + gsl_blas_drot(&xv.vector, &yv.vector, cs, sn); + + /* apply to A(1:n, i-1:i) */ + xv = gsl_matrix_column(A, i - 1); + yv = gsl_matrix_column(A, i); + gsl_blas_drot(&xv.vector, &yv.vector, cs, sn); + + if (V) + { + /* accumulate V: V -> V G */ + xv = gsl_matrix_column(V, i - 1); + yv = gsl_matrix_column(V, i); + gsl_blas_drot(&xv.vector, &yv.vector, cs, sn); + } + } + } + + return GSL_SUCCESS; + } +} /* gsl_linalg_hesstri_decomp() */ diff --git a/gsl-2.5/linalg/hesstri.lo b/gsl-2.5/linalg/hesstri.lo new file mode 100644 index 00000000..13bb13a2 --- /dev/null +++ b/gsl-2.5/linalg/hesstri.lo @@ -0,0 +1,12 @@ +# hesstri.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/hesstri.o' + +# Name of the non-PIC object +non_pic_object='hesstri.o' + diff --git a/gsl-2.5/linalg/hh.c b/gsl-2.5/linalg/hh.c new file mode 100644 index 00000000..3cee7ad7 --- /dev/null +++ b/gsl-2.5/linalg/hh.c @@ -0,0 +1,179 @@ +/* linalg/hh.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ + +#include +#include +#include +#include +#include +#include + +#define REAL double + +/* [Engeln-Mullges + Uhlig, Alg. 4.42] + */ + +int +gsl_linalg_HH_solve (gsl_matrix * A, const gsl_vector * b, gsl_vector * x) +{ + if (A->size1 > A->size2) + { + /* System is underdetermined. */ + + GSL_ERROR ("System is underdetermined", GSL_EINVAL); + } + else if (A->size2 != x->size) + { + GSL_ERROR ("matrix and vector sizes must be equal", GSL_EBADLEN); + } + else + { + int status ; + + gsl_vector_memcpy (x, b); + + status = gsl_linalg_HH_svx (A, x); + + return status ; + } +} + +int +gsl_linalg_HH_svx (gsl_matrix * A, gsl_vector * x) +{ + if (A->size1 > A->size2) + { + /* System is underdetermined. */ + + GSL_ERROR ("System is underdetermined", GSL_EINVAL); + } + else if (A->size2 != x->size) + { + GSL_ERROR ("matrix and vector sizes must be equal", GSL_EBADLEN); + } + else + { + const size_t N = A->size1; + const size_t M = A->size2; + size_t i, j, k; + REAL *d = (REAL *) malloc (N * sizeof (REAL)); + + if (d == 0) + { + GSL_ERROR ("could not allocate memory for workspace", GSL_ENOMEM); + } + + /* Perform Householder transformation. */ + + for (i = 0; i < N; i++) + { + const REAL aii = gsl_matrix_get (A, i, i); + REAL alpha; + REAL f; + REAL ak; + REAL max_norm = 0.0; + REAL r = 0.0; + + for (k = i; k < M; k++) + { + REAL aki = gsl_matrix_get (A, k, i); + r += aki * aki; + } + + if (r == 0.0) + { + /* Rank of matrix is less than size1. */ + free (d); + GSL_ERROR ("matrix is rank deficient", GSL_ESING); + } + + alpha = sqrt (r) * GSL_SIGN (aii); + + ak = 1.0 / (r + alpha * aii); + gsl_matrix_set (A, i, i, aii + alpha); + + d[i] = -alpha; + + for (k = i + 1; k < N; k++) + { + REAL norm = 0.0; + f = 0.0; + for (j = i; j < M; j++) + { + REAL ajk = gsl_matrix_get (A, j, k); + REAL aji = gsl_matrix_get (A, j, i); + norm += ajk * ajk; + f += ajk * aji; + } + max_norm = GSL_MAX (max_norm, norm); + + f *= ak; + + for (j = i; j < M; j++) + { + REAL ajk = gsl_matrix_get (A, j, k); + REAL aji = gsl_matrix_get (A, j, i); + gsl_matrix_set (A, j, k, ajk - f * aji); + } + } + + if (fabs (alpha) < 2.0 * GSL_DBL_EPSILON * sqrt (max_norm)) + { + /* Apparent singularity. */ + free (d); + GSL_ERROR("apparent singularity detected", GSL_ESING); + } + + /* Perform update of RHS. */ + + f = 0.0; + for (j = i; j < M; j++) + { + f += gsl_vector_get (x, j) * gsl_matrix_get (A, j, i); + } + f *= ak; + for (j = i; j < M; j++) + { + REAL xj = gsl_vector_get (x, j); + REAL aji = gsl_matrix_get (A, j, i); + gsl_vector_set (x, j, xj - f * aji); + } + } + + /* Perform back-substitution. */ + + for (i = N; i-- > 0;) + { + REAL xi = gsl_vector_get (x, i); + REAL sum = 0.0; + for (k = i + 1; k < N; k++) + { + sum += gsl_matrix_get (A, i, k) * gsl_vector_get (x, k); + } + + gsl_vector_set (x, i, (xi - sum) / d[i]); + } + + free (d); + return GSL_SUCCESS; + } +} + diff --git a/gsl-2.5/linalg/hh.lo b/gsl-2.5/linalg/hh.lo new file mode 100644 index 00000000..8b7385b1 --- /dev/null +++ b/gsl-2.5/linalg/hh.lo @@ -0,0 +1,12 @@ +# hh.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/hh.o' + +# Name of the non-PIC object +non_pic_object='hh.o' + diff --git a/gsl-2.5/linalg/householder.c b/gsl-2.5/linalg/householder.c new file mode 100644 index 00000000..9f9ca007 --- /dev/null +++ b/gsl-2.5/linalg/householder.c @@ -0,0 +1,357 @@ +/* linalg/householder.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2004, 2007, 2010 Gerard Jungman, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include + +#include + +/* +gsl_linalg_householder_transform() + Compute a householder transformation (tau,v) of a vector +x so that P x = [ I - tau*v*v' ] x annihilates x(1:n-1) + +Inputs: v - on input, x vector + on output, householder vector v + +Notes: +1) on output, v is normalized so that v[0] = 1. The 1 is +not actually stored; instead v[0] = -sign(x[0])*||x|| so +that: + +P x = v[0] * e_1 + +Therefore external routines should take care when applying +the projection matrix P to vectors, taking into account +that v[0] should be 1 when doing so. +*/ + +double +gsl_linalg_householder_transform (gsl_vector * v) +{ + /* replace v[0:n-1] with a householder vector (v[0:n-1]) and + coefficient tau that annihilate v[1:n-1] */ + + const size_t n = v->size ; + + if (n == 1) + { + return 0.0; /* tau = 0 */ + } + else + { + double alpha, beta, tau ; + + gsl_vector_view x = gsl_vector_subvector (v, 1, n - 1) ; + + double xnorm = gsl_blas_dnrm2 (&x.vector); + + if (xnorm == 0) + { + return 0.0; /* tau = 0 */ + } + + alpha = gsl_vector_get (v, 0) ; + beta = - (alpha >= 0.0 ? +1.0 : -1.0) * hypot(alpha, xnorm) ; + tau = (beta - alpha) / beta ; + + { + double s = (alpha - beta); + + if (fabs(s) > GSL_DBL_MIN) + { + gsl_blas_dscal (1.0 / s, &x.vector); + gsl_vector_set (v, 0, beta) ; + } + else + { + gsl_blas_dscal (GSL_DBL_EPSILON / s, &x.vector); + gsl_blas_dscal (1.0 / GSL_DBL_EPSILON, &x.vector); + gsl_vector_set (v, 0, beta) ; + } + } + + return tau; + } +} + +int +gsl_linalg_householder_hm (double tau, const gsl_vector * v, gsl_matrix * A) +{ + /* applies a householder transformation v,tau to matrix m */ + + if (tau == 0.0) + { + return GSL_SUCCESS; + } + +#ifdef USE_BLAS + { + gsl_vector_const_view v1 = gsl_vector_const_subvector (v, 1, v->size - 1); + gsl_matrix_view A1 = gsl_matrix_submatrix (A, 1, 0, A->size1 - 1, A->size2); + size_t j; + + for (j = 0; j < A->size2; j++) + { + double wj = 0.0; + gsl_vector_view A1j = gsl_matrix_column(&A1.matrix, j); + gsl_blas_ddot (&A1j.vector, &v1.vector, &wj); + wj += gsl_matrix_get(A,0,j); + + { + double A0j = gsl_matrix_get (A, 0, j); + gsl_matrix_set (A, 0, j, A0j - tau * wj); + } + + gsl_blas_daxpy (-tau * wj, &v1.vector, &A1j.vector); + } + } +#else + { + size_t i, j; + + for (j = 0; j < A->size2; j++) + { + /* Compute wj = Akj vk */ + + double wj = gsl_matrix_get(A,0,j); + + for (i = 1; i < A->size1; i++) /* note, computed for v(0) = 1 above */ + { + wj += gsl_matrix_get(A,i,j) * gsl_vector_get(v,i); + } + + /* Aij = Aij - tau vi wj */ + + /* i = 0 */ + { + double A0j = gsl_matrix_get (A, 0, j); + gsl_matrix_set (A, 0, j, A0j - tau * wj); + } + + /* i = 1 .. M-1 */ + + for (i = 1; i < A->size1; i++) + { + double Aij = gsl_matrix_get (A, i, j); + double vi = gsl_vector_get (v, i); + gsl_matrix_set (A, i, j, Aij - tau * vi * wj); + } + } + } +#endif + + return GSL_SUCCESS; +} + +int +gsl_linalg_householder_mh (double tau, const gsl_vector * v, gsl_matrix * A) +{ + /* applies a householder transformation v,tau to matrix m from the + right hand side in order to zero out rows */ + + if (tau == 0) + return GSL_SUCCESS; + + /* A = A - tau w v' */ + +#ifdef USE_BLAS + { + gsl_vector_const_view v1 = gsl_vector_const_subvector (v, 1, v->size - 1); + gsl_matrix_view A1 = gsl_matrix_submatrix (A, 0, 1, A->size1, A->size2-1); + size_t i; + + for (i = 0; i < A->size1; i++) + { + double wi = 0.0; + gsl_vector_view A1i = gsl_matrix_row(&A1.matrix, i); + gsl_blas_ddot (&A1i.vector, &v1.vector, &wi); + wi += gsl_matrix_get(A,i,0); + + { + double Ai0 = gsl_matrix_get (A, i, 0); + gsl_matrix_set (A, i, 0, Ai0 - tau * wi); + } + + gsl_blas_daxpy(-tau * wi, &v1.vector, &A1i.vector); + } + } +#else + { + size_t i, j; + + for (i = 0; i < A->size1; i++) + { + double wi = gsl_matrix_get(A,i,0); + + for (j = 1; j < A->size2; j++) /* note, computed for v(0) = 1 above */ + { + wi += gsl_matrix_get(A,i,j) * gsl_vector_get(v,j); + } + + /* j = 0 */ + + { + double Ai0 = gsl_matrix_get (A, i, 0); + gsl_matrix_set (A, i, 0, Ai0 - tau * wi); + } + + /* j = 1 .. N-1 */ + + for (j = 1; j < A->size2; j++) + { + double vj = gsl_vector_get (v, j); + double Aij = gsl_matrix_get (A, i, j); + gsl_matrix_set (A, i, j, Aij - tau * wi * vj); + } + } + } +#endif + + return GSL_SUCCESS; +} + +int +gsl_linalg_householder_hv (double tau, const gsl_vector * v, gsl_vector * w) +{ + /* applies a householder transformation v to vector w */ + const size_t N = v->size; + + if (tau == 0) + return GSL_SUCCESS ; + + { + /* compute d = v'w */ + + double w0 = gsl_vector_get(w,0); + double d1, d; + + gsl_vector_const_view v1 = gsl_vector_const_subvector(v, 1, N-1); + gsl_vector_view w1 = gsl_vector_subvector(w, 1, N-1); + + /* compute d1 = v(2:n)'w(2:n) */ + gsl_blas_ddot (&v1.vector, &w1.vector, &d1); + + /* compute d = v'w = w(1) + d1 since v(1) = 1 */ + d = w0 + d1; + + /* compute w = w - tau (v) (v'w) */ + + gsl_vector_set (w, 0, w0 - tau * d); + gsl_blas_daxpy (-tau * d, &v1.vector, &w1.vector); + } + + return GSL_SUCCESS; +} + + +int +gsl_linalg_householder_hm1 (double tau, gsl_matrix * A) +{ + /* applies a householder transformation v,tau to a matrix being + build up from the identity matrix, using the first column of A as + a householder vector */ + + if (tau == 0) + { + size_t i,j; + + gsl_matrix_set (A, 0, 0, 1.0); + + for (j = 1; j < A->size2; j++) + { + gsl_matrix_set (A, 0, j, 0.0); + } + + for (i = 1; i < A->size1; i++) + { + gsl_matrix_set (A, i, 0, 0.0); + } + + return GSL_SUCCESS; + } + + /* w = A' v */ + +#ifdef USE_BLAS + { + gsl_matrix_view A1 = gsl_matrix_submatrix (A, 1, 0, A->size1 - 1, A->size2); + gsl_vector_view v1 = gsl_matrix_column (&A1.matrix, 0); + size_t j; + + for (j = 1; j < A->size2; j++) + { + double wj = 0.0; /* A0j * v0 */ + + gsl_vector_view A1j = gsl_matrix_column(&A1.matrix, j); + gsl_blas_ddot (&A1j.vector, &v1.vector, &wj); + + /* A = A - tau v w' */ + + gsl_matrix_set (A, 0, j, - tau * wj); + + gsl_blas_daxpy(-tau*wj, &v1.vector, &A1j.vector); + } + + gsl_blas_dscal(-tau, &v1.vector); + + gsl_matrix_set (A, 0, 0, 1.0 - tau); + } +#else + { + size_t i, j; + + for (j = 1; j < A->size2; j++) + { + double wj = 0.0; /* A0j * v0 */ + + for (i = 1; i < A->size1; i++) + { + double vi = gsl_matrix_get(A, i, 0); + wj += gsl_matrix_get(A,i,j) * vi; + } + + /* A = A - tau v w' */ + + gsl_matrix_set (A, 0, j, - tau * wj); + + for (i = 1; i < A->size1; i++) + { + double vi = gsl_matrix_get (A, i, 0); + double Aij = gsl_matrix_get (A, i, j); + gsl_matrix_set (A, i, j, Aij - tau * vi * wj); + } + } + + for (i = 1; i < A->size1; i++) + { + double vi = gsl_matrix_get(A, i, 0); + gsl_matrix_set(A, i, 0, -tau * vi); + } + + gsl_matrix_set (A, 0, 0, 1.0 - tau); + } +#endif + + return GSL_SUCCESS; +} diff --git a/gsl-2.5/linalg/householder.lo b/gsl-2.5/linalg/householder.lo new file mode 100644 index 00000000..10562188 --- /dev/null +++ b/gsl-2.5/linalg/householder.lo @@ -0,0 +1,12 @@ +# householder.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/householder.o' + +# Name of the non-PIC object +non_pic_object='householder.o' + diff --git a/gsl-2.5/linalg/householdercomplex.c b/gsl-2.5/linalg/householdercomplex.c new file mode 100644 index 00000000..f82f2cc0 --- /dev/null +++ b/gsl-2.5/linalg/householdercomplex.c @@ -0,0 +1,260 @@ +/* linalg/householdercomplex.c + * + * Copyright (C) 2001, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Computes a householder transformation matrix H such that + * + * H' v = -/+ |v| e_1 + * + * where e_1 is the first unit vector. On exit the matrix H can be + * computed from the return values (tau, v) + * + * H = I - tau * w * w' + * + * where w = (1, v(2), ..., v(N)). The nonzero element of the result + * vector -/+|v| e_1 is stored in v(1). + * + * Note that the matrix H' in the householder transformation is the + * hermitian conjugate of H. To compute H'v, pass the conjugate of + * tau as the first argument to gsl_linalg_householder_hm() rather + * than tau itself. See the LAPACK function CLARFG for details of this + * convention. */ + +#include +#include +#include +#include +#include +#include +#include + +#include + +gsl_complex +gsl_linalg_complex_householder_transform (gsl_vector_complex * v) +{ + /* replace v[0:n-1] with a householder vector (v[0:n-1]) and + coefficient tau that annihilate v[1:n-1] */ + + const size_t n = v->size ; + + if (n == 1) + { + gsl_complex alpha = gsl_vector_complex_get (v, 0) ; + double absa = gsl_complex_abs (alpha); + double beta_r = - (GSL_REAL(alpha) >= 0 ? +1 : -1) * absa ; + + gsl_complex tau; + + if (beta_r == 0.0) + { + GSL_REAL(tau) = 0.0; + GSL_IMAG(tau) = 0.0; + } + else + { + GSL_REAL(tau) = (beta_r - GSL_REAL(alpha)) / beta_r ; + GSL_IMAG(tau) = - GSL_IMAG(alpha) / beta_r ; + + { + gsl_complex beta = gsl_complex_rect (beta_r, 0.0); + gsl_vector_complex_set (v, 0, beta) ; + } + } + + return tau; + } + else + { + gsl_complex tau ; + double beta_r; + + gsl_vector_complex_view x = gsl_vector_complex_subvector (v, 1, n - 1) ; + gsl_complex alpha = gsl_vector_complex_get (v, 0) ; + double absa = gsl_complex_abs (alpha); + double xnorm = gsl_blas_dznrm2 (&x.vector); + + if (xnorm == 0 && GSL_IMAG(alpha) == 0) + { + gsl_complex zero = gsl_complex_rect(0.0, 0.0); + return zero; /* tau = 0 */ + } + + beta_r = - (GSL_REAL(alpha) >= 0 ? +1 : -1) * hypot(absa, xnorm) ; + + GSL_REAL(tau) = (beta_r - GSL_REAL(alpha)) / beta_r ; + GSL_IMAG(tau) = - GSL_IMAG(alpha) / beta_r ; + + { + gsl_complex amb = gsl_complex_sub_real(alpha, beta_r); + gsl_complex s = gsl_complex_inverse(amb); + gsl_blas_zscal (s, &x.vector); + } + + { + gsl_complex beta = gsl_complex_rect (beta_r, 0.0); + gsl_vector_complex_set (v, 0, beta) ; + } + + return tau; + } +} + +int +gsl_linalg_complex_householder_hm (gsl_complex tau, const gsl_vector_complex * v, gsl_matrix_complex * A) +{ + /* applies a householder transformation v,tau to matrix m */ + + size_t i, j; + + if (GSL_REAL(tau) == 0.0 && GSL_IMAG(tau) == 0.0) + { + return GSL_SUCCESS; + } + + /* w = (v' A)^T */ + + for (j = 0; j < A->size2; j++) + { + gsl_complex tauwj; + gsl_complex wj = gsl_matrix_complex_get(A,0,j); + + for (i = 1; i < A->size1; i++) /* note, computed for v(0) = 1 above */ + { + gsl_complex Aij = gsl_matrix_complex_get(A,i,j); + gsl_complex vi = gsl_vector_complex_get(v,i); + gsl_complex Av = gsl_complex_mul (Aij, gsl_complex_conjugate(vi)); + wj = gsl_complex_add (wj, Av); + } + + tauwj = gsl_complex_mul (tau, wj); + + /* A = A - v w^T */ + + { + gsl_complex A0j = gsl_matrix_complex_get (A, 0, j); + gsl_complex Atw = gsl_complex_sub (A0j, tauwj); + /* store A0j - tau * wj */ + gsl_matrix_complex_set (A, 0, j, Atw); + } + + for (i = 1; i < A->size1; i++) + { + gsl_complex vi = gsl_vector_complex_get (v, i); + gsl_complex tauvw = gsl_complex_mul(vi, tauwj); + gsl_complex Aij = gsl_matrix_complex_get (A, i, j); + gsl_complex Atwv = gsl_complex_sub (Aij, tauvw); + /* store Aij - tau * vi * wj */ + gsl_matrix_complex_set (A, i, j, Atwv); + } + } + + return GSL_SUCCESS; +} + +int +gsl_linalg_complex_householder_mh (gsl_complex tau, const gsl_vector_complex * v, gsl_matrix_complex * A) +{ + /* applies a householder transformation v,tau to matrix m on the right */ + + size_t i, j; + + if (GSL_REAL(tau) == 0.0 && GSL_IMAG(tau) == 0.0) + { + return GSL_SUCCESS; + } + + /* A -> A - A*tau*v*v^h */ + + for (i = 0; i < A->size1; i++) + { + gsl_complex tauwi; + gsl_complex Ai0 = gsl_matrix_complex_get (A, i, 0); + gsl_complex wi = Ai0; + + /* compute w = A v */ + for (j = 1; j < A->size2; j++) /* note, computed for v(0) = 1 above */ + { + gsl_complex Aij = gsl_matrix_complex_get(A, i, j); + gsl_complex vj = gsl_vector_complex_get(v, j); + gsl_complex Av = gsl_complex_mul (Aij, vj); + wi = gsl_complex_add (wi, Av); + } + + tauwi = gsl_complex_mul (tau, wi); + + /* A = A - w v^H */ + + { + gsl_complex Atw = gsl_complex_sub (Ai0, tauwi); + /* store Ai0 - tau * wi */ + gsl_matrix_complex_set (A, i, 0, Atw); + } + + for (j = 1; j < A->size2; j++) + { + gsl_complex vj = gsl_vector_complex_get (v, j); + gsl_complex tauwv = gsl_complex_mul(gsl_complex_conjugate(vj), tauwi); + gsl_complex Aij = gsl_matrix_complex_get (A, i, j); + gsl_complex Atwv = gsl_complex_sub (Aij, tauwv); + /* store Aij - tau * wi * conj(vj) */ + gsl_matrix_complex_set (A, i, j, Atwv); + } + } + + return GSL_SUCCESS; +} + +int +gsl_linalg_complex_householder_hv (gsl_complex tau, const gsl_vector_complex * v, gsl_vector_complex * w) +{ + const size_t N = v->size; + + if (GSL_REAL(tau) == 0.0 && GSL_IMAG(tau) == 0.0) + return GSL_SUCCESS; + + { + /* compute z = v'w */ + + gsl_complex z0 = gsl_vector_complex_get(w,0); + gsl_complex z1, z; + gsl_complex tz, ntz; + + gsl_vector_complex_const_view v1 = gsl_vector_complex_const_subvector(v, 1, N-1); + gsl_vector_complex_view w1 = gsl_vector_complex_subvector(w, 1, N-1); + + gsl_blas_zdotc(&v1.vector, &w1.vector, &z1); + + z = gsl_complex_add (z0, z1); + + tz = gsl_complex_mul(tau, z); + ntz = gsl_complex_negative (tz); + + /* compute w = w - tau * (v'w) * v */ + + { + gsl_complex w0 = gsl_vector_complex_get(w, 0); + gsl_complex w0ntz = gsl_complex_add (w0, ntz); + gsl_vector_complex_set (w, 0, w0ntz); + } + + gsl_blas_zaxpy(ntz, &v1.vector, &w1.vector); + } + + return GSL_SUCCESS; +} diff --git a/gsl-2.5/linalg/householdercomplex.lo b/gsl-2.5/linalg/householdercomplex.lo new file mode 100644 index 00000000..fb40a4e7 --- /dev/null +++ b/gsl-2.5/linalg/householdercomplex.lo @@ -0,0 +1,12 @@ +# householdercomplex.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/householdercomplex.o' + +# Name of the non-PIC object +non_pic_object='householdercomplex.o' + diff --git a/gsl-2.5/linalg/inline.c b/gsl-2.5/linalg/inline.c new file mode 100644 index 00000000..a67bf562 --- /dev/null +++ b/gsl-2.5/linalg/inline.c @@ -0,0 +1,32 @@ +/* linalg/inline.c + * + * Copyright (C) 2014 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include + +/* Compile all the inline functions */ + +#define COMPILE_INLINE_STATIC +#include "build.h" +#include + diff --git a/gsl-2.5/linalg/inline.lo b/gsl-2.5/linalg/inline.lo new file mode 100644 index 00000000..c5763370 --- /dev/null +++ b/gsl-2.5/linalg/inline.lo @@ -0,0 +1,12 @@ +# inline.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/inline.o' + +# Name of the non-PIC object +non_pic_object='inline.o' + diff --git a/gsl-2.5/linalg/invtri.c b/gsl-2.5/linalg/invtri.c new file mode 100644 index 00000000..a7af7aca --- /dev/null +++ b/gsl-2.5/linalg/invtri.c @@ -0,0 +1,151 @@ +/* linalg/invtri.c + * + * Copyright (C) 2016 Patrick Alken + * + * This is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 3, or (at your option) any + * later version. + * + * This source 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. + * + * This module contains code to invert triangular matrices + */ + +#include + +#include +#include +#include +#include +#include +#include + +static int triangular_inverse(CBLAS_UPLO_t Uplo, CBLAS_DIAG_t Diag, gsl_matrix * T); + +int +gsl_linalg_tri_upper_invert(gsl_matrix * T) +{ + int status = triangular_inverse(CblasUpper, CblasNonUnit, T); + return status; +} + +int +gsl_linalg_tri_lower_invert(gsl_matrix * T) +{ + int status = triangular_inverse(CblasLower, CblasNonUnit, T); + return status; +} + +int +gsl_linalg_tri_upper_unit_invert(gsl_matrix * T) +{ + int status = triangular_inverse(CblasUpper, CblasUnit, T); + return status; +} + +int +gsl_linalg_tri_lower_unit_invert(gsl_matrix * T) +{ + int status = triangular_inverse(CblasLower, CblasUnit, T); + return status; +} + +/* +triangular_inverse() + Invert a triangular matrix T + +Inputs: Uplo - CblasUpper or CblasLower + Diag - unit triangular? + T - on output the upper (or lower) part of T + is replaced by its inverse + +Return: success/error +*/ + +static int +triangular_inverse(CBLAS_UPLO_t Uplo, CBLAS_DIAG_t Diag, gsl_matrix * T) +{ + const size_t N = T->size1; + + if (N != T->size2) + { + GSL_ERROR ("matrix must be square", GSL_ENOTSQR); + } + else + { + gsl_matrix_view m; + gsl_vector_view v; + size_t i; + + if (Uplo == CblasUpper) + { + for (i = 0; i < N; ++i) + { + double aii; + + if (Diag == CblasNonUnit) + { + double *Tii = gsl_matrix_ptr(T, i, i); + *Tii = 1.0 / *Tii; + aii = -(*Tii); + } + else + { + aii = -1.0; + } + + if (i > 0) + { + m = gsl_matrix_submatrix(T, 0, 0, i, i); + v = gsl_matrix_subcolumn(T, i, 0, i); + + gsl_blas_dtrmv(CblasUpper, CblasNoTrans, Diag, + &m.matrix, &v.vector); + + gsl_blas_dscal(aii, &v.vector); + } + } /* for (i = 0; i < N; ++i) */ + } + else + { + for (i = 0; i < N; ++i) + { + double ajj; + size_t j = N - i - 1; + + if (Diag == CblasNonUnit) + { + double *Tjj = gsl_matrix_ptr(T, j, j); + *Tjj = 1.0 / *Tjj; + ajj = -(*Tjj); + } + else + { + ajj = -1.0; + } + + if (j < N - 1) + { + m = gsl_matrix_submatrix(T, j + 1, j + 1, + N - j - 1, N - j - 1); + v = gsl_matrix_subcolumn(T, j, j + 1, N - j - 1); + + gsl_blas_dtrmv(CblasLower, CblasNoTrans, Diag, + &m.matrix, &v.vector); + + gsl_blas_dscal(ajj, &v.vector); + } + } /* for (i = 0; i < N; ++i) */ + } + + return GSL_SUCCESS; + } +} diff --git a/gsl-2.5/linalg/invtri.lo b/gsl-2.5/linalg/invtri.lo new file mode 100644 index 00000000..809ae1f2 --- /dev/null +++ b/gsl-2.5/linalg/invtri.lo @@ -0,0 +1,12 @@ +# invtri.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/invtri.o' + +# Name of the non-PIC object +non_pic_object='invtri.o' + diff --git a/gsl-2.5/linalg/libgsllinalg.la b/gsl-2.5/linalg/libgsllinalg.la new file mode 100644 index 00000000..b3907253 --- /dev/null +++ b/gsl-2.5/linalg/libgsllinalg.la @@ -0,0 +1,41 @@ +# libgsllinalg.la - a libtool library file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='' + +# Names of this library. +library_names='' + +# The name of the static archive. +old_library='libgsllinalg.a' + +# Linker flags that can not go in dependency_libs. +inherited_linker_flags='' + +# Libraries that this one depends upon. +dependency_libs=' -lm' + +# Names of additional weak libraries provided by this library +weak_library_names='' + +# Version information for libgsllinalg. +current= +age= +revision= + +# Is this an already installed library? +installed=no + +# Should we warn about portability when linking against -modules? +shouldnotlink=no + +# Files to dlopen/dlpreopen +dlopen='' +dlpreopen='' + +# Directory that this library needs to be installed in: +libdir='' diff --git a/gsl-2.5/linalg/lq.c b/gsl-2.5/linalg/lq.c new file mode 100644 index 00000000..253b35d5 --- /dev/null +++ b/gsl-2.5/linalg/lq.c @@ -0,0 +1,564 @@ +/* linalg/lq.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough + * Copyright (C) 2004 Joerg Wensch, modifications for LQ. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include +#include + +#include + +#include "apply_givens.c" + +/* Note: The standard in numerical linear algebra is to solve A x = b + * resp. ||A x - b||_2 -> min by QR-decompositions where x, b are + * column vectors. + * + * When the matrix A has a large number of rows it is much more + * efficient to work with the transposed matrix A^T and to solve the + * system x^T A = b^T resp. ||x^T A - b^T||_2 -> min. This is caused + * by the row-oriented format in which GSL stores matrices. Therefore + * the QR-decomposition of A has to be replaced by a LQ decomposition + * of A^T + * + * The purpose of this package is to provide the algorithms to compute + * the LQ-decomposition and to solve the linear equations resp. least + * squares problems. The dimensions N, M of the matrix are switched + * because here A will probably be a transposed matrix. We write x^T, + * b^T,... for vectors the comments to emphasize that they are row + * vectors. + * + * It may even be useful to transpose your matrix explicitly (assumed + * that there are no memory restrictions) because this takes O(M x N) + * computing time where the decompostion takes O(M x N^2) computing + * time. */ + +/* Factorise a general N x M matrix A into + * + * A = L Q + * + * where Q is orthogonal (M x M) and L is lower triangular (N x M). + * + * Q is stored as a packed set of Householder transformations in the + * strict upper triangular part of the input matrix. + * + * R is stored in the diagonal and lower triangle of the input matrix. + * + * The full matrix for Q can be obtained as the product + * + * Q = Q_k .. Q_2 Q_1 + * + * where k = MIN(M,N) and + * + * Q_i = (I - tau_i * v_i * v_i') + * + * and where v_i is a Householder vector + * + * v_i = [1, m(i+1,i), m(i+2,i), ... , m(M,i)] + * + * This storage scheme is the same as in LAPACK. */ + +int +gsl_linalg_LQ_decomp (gsl_matrix * A, gsl_vector * tau) +{ + const size_t N = A->size1; + const size_t M = A->size2; + + if (tau->size != GSL_MIN (M, N)) + { + GSL_ERROR ("size of tau must be MIN(M,N)", GSL_EBADLEN); + } + else + { + size_t i; + + for (i = 0; i < GSL_MIN (M, N); i++) + { + /* Compute the Householder transformation to reduce the j-th + column of the matrix to a multiple of the j-th unit vector */ + + gsl_vector_view c_full = gsl_matrix_row (A, i); + gsl_vector_view c = gsl_vector_subvector (&(c_full.vector), i, M-i); + + double tau_i = gsl_linalg_householder_transform (&(c.vector)); + + gsl_vector_set (tau, i, tau_i); + + /* Apply the transformation to the remaining columns and + update the norms */ + + if (i + 1 < N) + { + gsl_matrix_view m = gsl_matrix_submatrix (A, i + 1, i, N - (i + 1), M - i ); + gsl_linalg_householder_mh (tau_i, &(c.vector), &(m.matrix)); + } + } + + return GSL_SUCCESS; + } +} + +/* Solves the system x^T A = b^T using the LQ factorisation, + + * x^T L = b^T Q^T + * + * to obtain x. Based on SLATEC code. + */ + + +int +gsl_linalg_LQ_solve_T (const gsl_matrix * LQ, const gsl_vector * tau, const gsl_vector * b, gsl_vector * x) +{ + if (LQ->size1 != LQ->size2) + { + GSL_ERROR ("LQ matrix must be square", GSL_ENOTSQR); + } + else if (LQ->size2 != b->size) + { + GSL_ERROR ("matrix size must match b size", GSL_EBADLEN); + } + else if (LQ->size1 != x->size) + { + GSL_ERROR ("matrix size must match solution size", GSL_EBADLEN); + } + else + { + /* Copy x <- b */ + + gsl_vector_memcpy (x, b); + + /* Solve for x */ + + gsl_linalg_LQ_svx_T (LQ, tau, x); + + return GSL_SUCCESS; + } +} + +/* Solves the system x^T A = b^T in place using the LQ factorisation, + * + * x^T L = b^T Q^T + * + * to obtain x. Based on SLATEC code. + */ + +int +gsl_linalg_LQ_svx_T (const gsl_matrix * LQ, const gsl_vector * tau, gsl_vector * x) +{ + + if (LQ->size1 != LQ->size2) + { + GSL_ERROR ("LQ matrix must be square", GSL_ENOTSQR); + } + else if (LQ->size1 != x->size) + { + GSL_ERROR ("matrix size must match x/rhs size", GSL_EBADLEN); + } + else + { + /* compute rhs = Q^T b */ + + gsl_linalg_LQ_vecQT (LQ, tau, x); + + /* Solve R x = rhs, storing x in-place */ + + gsl_blas_dtrsv (CblasLower, CblasTrans, CblasNonUnit, LQ, x); + + return GSL_SUCCESS; + } +} + + +/* Find the least squares solution to the overdetermined system + * + * x^T A = b^T + * + * for M >= N using the LQ factorization A = L Q. + */ + +int +gsl_linalg_LQ_lssolve_T (const gsl_matrix * LQ, const gsl_vector * tau, const gsl_vector * b, gsl_vector * x, gsl_vector * residual) +{ + const size_t N = LQ->size1; + const size_t M = LQ->size2; + + if (M < N) + { + GSL_ERROR ("LQ matrix must have M>=N", GSL_EBADLEN); + } + else if (M != b->size) + { + GSL_ERROR ("matrix size must match b size", GSL_EBADLEN); + } + else if (N != x->size) + { + GSL_ERROR ("matrix size must match solution size", GSL_EBADLEN); + } + else if (M != residual->size) + { + GSL_ERROR ("matrix size must match residual size", GSL_EBADLEN); + } + else + { + gsl_matrix_const_view L = gsl_matrix_const_submatrix (LQ, 0, 0, N, N); + gsl_vector_view c = gsl_vector_subvector(residual, 0, N); + + gsl_vector_memcpy(residual, b); + + /* compute rhs = b^T Q^T */ + + gsl_linalg_LQ_vecQT (LQ, tau, residual); + + /* Solve x^T L = rhs */ + + gsl_vector_memcpy(x, &(c.vector)); + + gsl_blas_dtrsv (CblasLower, CblasTrans, CblasNonUnit, &(L.matrix), x); + + /* Compute residual = b^T - x^T A = (b^T Q^T - x^T L) Q */ + + gsl_vector_set_zero(&(c.vector)); + + gsl_linalg_LQ_vecQ(LQ, tau, residual); + + return GSL_SUCCESS; + } +} + + +int +gsl_linalg_LQ_Lsolve_T (const gsl_matrix * LQ, const gsl_vector * b, gsl_vector * x) +{ + if (LQ->size1 != LQ->size2) + { + GSL_ERROR ("LQ matrix must be square", GSL_ENOTSQR); + } + else if (LQ->size1 != b->size) + { + GSL_ERROR ("matrix size must match b size", GSL_EBADLEN); + } + else if (LQ->size1 != x->size) + { + GSL_ERROR ("matrix size must match x size", GSL_EBADLEN); + } + else + { + /* Copy x <- b */ + + gsl_vector_memcpy (x, b); + + /* Solve R x = b, storing x in-place */ + + gsl_blas_dtrsv (CblasLower, CblasTrans, CblasNonUnit, LQ, x); + + return GSL_SUCCESS; + } +} + + +int +gsl_linalg_LQ_Lsvx_T (const gsl_matrix * LQ, gsl_vector * x) +{ + if (LQ->size1 != LQ->size2) + { + GSL_ERROR ("LQ matrix must be square", GSL_ENOTSQR); + } + else if (LQ->size2 != x->size) + { + GSL_ERROR ("matrix size must match rhs size", GSL_EBADLEN); + } + else + { + /* Solve x^T L = b^T, storing x in-place */ + + gsl_blas_dtrsv (CblasLower, CblasTrans, CblasNonUnit, LQ, x); + + return GSL_SUCCESS; + } +} + +int +gsl_linalg_L_solve_T (const gsl_matrix * L, const gsl_vector * b, gsl_vector * x) +{ + if (L->size1 != L->size2) + { + GSL_ERROR ("R matrix must be square", GSL_ENOTSQR); + } + else if (L->size2 != b->size) + { + GSL_ERROR ("matrix size must match b size", GSL_EBADLEN); + } + else if (L->size1 != x->size) + { + GSL_ERROR ("matrix size must match solution size", GSL_EBADLEN); + } + else + { + /* Copy x <- b */ + + gsl_vector_memcpy (x, b); + + /* Solve R x = b, storing x inplace in b */ + + gsl_blas_dtrsv (CblasLower, CblasTrans, CblasNonUnit, L, x); + + return GSL_SUCCESS; + } +} + + + + +int +gsl_linalg_LQ_vecQT (const gsl_matrix * LQ, const gsl_vector * tau, gsl_vector * v) +{ + const size_t N = LQ->size1; + const size_t M = LQ->size2; + + if (tau->size != GSL_MIN (M, N)) + { + GSL_ERROR ("size of tau must be MIN(M,N)", GSL_EBADLEN); + } + else if (v->size != M) + { + GSL_ERROR ("vector size must be M", GSL_EBADLEN); + } + else + { + size_t i; + + /* compute v Q^T */ + + for (i = 0; i < GSL_MIN (M, N); i++) + { + gsl_vector_const_view c = gsl_matrix_const_row (LQ, i); + gsl_vector_const_view h = gsl_vector_const_subvector (&(c.vector), + i, M - i); + gsl_vector_view w = gsl_vector_subvector (v, i, M - i); + double ti = gsl_vector_get (tau, i); + gsl_linalg_householder_hv (ti, &(h.vector), &(w.vector)); + } + return GSL_SUCCESS; + } +} + +int +gsl_linalg_LQ_vecQ (const gsl_matrix * LQ, const gsl_vector * tau, gsl_vector * v) +{ + const size_t N = LQ->size1; + const size_t M = LQ->size2; + + if (tau->size != GSL_MIN (M, N)) + { + GSL_ERROR ("size of tau must be MIN(M,N)", GSL_EBADLEN); + } + else if (v->size != M) + { + GSL_ERROR ("vector size must be M", GSL_EBADLEN); + } + else + { + size_t i; + + /* compute v Q^T */ + + for (i = GSL_MIN (M, N); i-- > 0;) + { + gsl_vector_const_view c = gsl_matrix_const_row (LQ, i); + gsl_vector_const_view h = gsl_vector_const_subvector (&(c.vector), + i, M - i); + gsl_vector_view w = gsl_vector_subvector (v, i, M - i); + double ti = gsl_vector_get (tau, i); + gsl_linalg_householder_hv (ti, &(h.vector), &(w.vector)); + } + return GSL_SUCCESS; + } +} + + +/* Form the orthogonal matrix Q from the packed LQ matrix */ + +int +gsl_linalg_LQ_unpack (const gsl_matrix * LQ, const gsl_vector * tau, gsl_matrix * Q, gsl_matrix * L) +{ + const size_t N = LQ->size1; + const size_t M = LQ->size2; + + if (Q->size1 != M || Q->size2 != M) + { + GSL_ERROR ("Q matrix must be M x M", GSL_ENOTSQR); + } + else if (L->size1 != N || L->size2 != M) + { + GSL_ERROR ("R matrix must be N x M", GSL_ENOTSQR); + } + else if (tau->size != GSL_MIN (M, N)) + { + GSL_ERROR ("size of tau must be MIN(M,N)", GSL_EBADLEN); + } + else + { + size_t i, j, l_border; + + /* Initialize Q to the identity */ + + gsl_matrix_set_identity (Q); + + for (i = GSL_MIN (M, N); i-- > 0;) + { + gsl_vector_const_view c = gsl_matrix_const_row (LQ, i); + gsl_vector_const_view h = gsl_vector_const_subvector (&c.vector, + i, M - i); + gsl_matrix_view m = gsl_matrix_submatrix (Q, i, i, M - i, M - i); + double ti = gsl_vector_get (tau, i); + gsl_linalg_householder_mh (ti, &h.vector, &m.matrix); + } + + /* Form the lower triangular matrix L from a packed LQ matrix */ + + for (i = 0; i < N; i++) + { + l_border=GSL_MIN(i,M-1); + for (j = 0; j <= l_border ; j++) + gsl_matrix_set (L, i, j, gsl_matrix_get (LQ, i, j)); + + for (j = l_border+1; j < M; j++) + gsl_matrix_set (L, i, j, 0.0); + } + + return GSL_SUCCESS; + } +} + + +/* Update a LQ factorisation for A= L Q , A' = A + v u^T, + + * L' Q' = LQ + v u^T + * = (L + v u^T Q^T) Q + * = (L + v w^T) Q + * + * where w = Q u. + * + * Algorithm from Golub and Van Loan, "Matrix Computations", Section + * 12.5 (Updating Matrix Factorizations, Rank-One Changes) + */ + +int +gsl_linalg_LQ_update (gsl_matrix * Q, gsl_matrix * L, + const gsl_vector * v, gsl_vector * w) +{ + const size_t N = L->size1; + const size_t M = L->size2; + + if (Q->size1 != M || Q->size2 != M) + { + GSL_ERROR ("Q matrix must be N x N if L is M x N", GSL_ENOTSQR); + } + else if (w->size != M) + { + GSL_ERROR ("w must be length N if L is M x N", GSL_EBADLEN); + } + else if (v->size != N) + { + GSL_ERROR ("v must be length M if L is M x N", GSL_EBADLEN); + } + else + { + size_t j, k; + double w0; + + /* Apply Given's rotations to reduce w to (|w|, 0, 0, ... , 0) + + J_1^T .... J_(n-1)^T w = +/- |w| e_1 + + simultaneously applied to L, H = J_1^T ... J^T_(n-1) L + so that H is upper Hessenberg. (12.5.2) */ + + for (k = M - 1; k > 0; k--) /* loop from k = M-1 to 1 */ + { + double c, s; + double wk = gsl_vector_get (w, k); + double wkm1 = gsl_vector_get (w, k - 1); + + gsl_linalg_givens (wkm1, wk, &c, &s); + gsl_linalg_givens_gv (w, k - 1, k, c, s); + apply_givens_lq (M, N, Q, L, k - 1, k, c, s); + } + + w0 = gsl_vector_get (w, 0); + + /* Add in v w^T (Equation 12.5.3) */ + + for (j = 0; j < N; j++) + { + double lj0 = gsl_matrix_get (L, j, 0); + double vj = gsl_vector_get (v, j); + gsl_matrix_set (L, j, 0, lj0 + w0 * vj); + } + + /* Apply Givens transformations L' = G_(n-1)^T ... G_1^T H + Equation 12.5.4 */ + + for (k = 1; k < GSL_MIN(M,N+1); k++) + { + double c, s; + double diag = gsl_matrix_get (L, k - 1, k - 1); + double offdiag = gsl_matrix_get (L, k - 1 , k); + + gsl_linalg_givens (diag, offdiag, &c, &s); + apply_givens_lq (M, N, Q, L, k - 1, k, c, s); + + gsl_matrix_set (L, k - 1, k, 0.0); /* exact zero of G^T */ + } + + return GSL_SUCCESS; + } +} + +int +gsl_linalg_LQ_LQsolve (gsl_matrix * Q, gsl_matrix * L, const gsl_vector * b, gsl_vector * x) +{ + const size_t N = L->size1; + const size_t M = L->size2; + + if (M != N) + { + return GSL_ENOTSQR; + } + else if (Q->size1 != M || b->size != M || x->size != M) + { + return GSL_EBADLEN; + } + else + { + /* compute sol = b^T Q^T */ + + gsl_blas_dgemv (CblasNoTrans, 1.0, Q, b, 0.0, x); + + /* Solve x^T L = sol, storing x in-place */ + + gsl_blas_dtrsv (CblasLower, CblasTrans, CblasNonUnit, L, x); + + return GSL_SUCCESS; + } +} diff --git a/gsl-2.5/linalg/lq.lo b/gsl-2.5/linalg/lq.lo new file mode 100644 index 00000000..36471064 --- /dev/null +++ b/gsl-2.5/linalg/lq.lo @@ -0,0 +1,12 @@ +# lq.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/lq.o' + +# Name of the non-PIC object +non_pic_object='lq.o' + diff --git a/gsl-2.5/linalg/lu.c b/gsl-2.5/linalg/lu.c new file mode 100644 index 00000000..eea16e4e --- /dev/null +++ b/gsl-2.5/linalg/lu.c @@ -0,0 +1,352 @@ +/* linalg/lu.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007, 2009 Gerard Jungman, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ + +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#define REAL double +static int singular (const gsl_matrix * LU); + +/* Factorise a general N x N matrix A into, + * + * P A = L U + * + * where P is a permutation matrix, L is unit lower triangular and U + * is upper triangular. + * + * L is stored in the strict lower triangular part of the input + * matrix. The diagonal elements of L are unity and are not stored. + * + * U is stored in the diagonal and upper triangular part of the + * input matrix. + * + * P is stored in the permutation p. Column j of P is column k of the + * identity matrix, where k = permutation->data[j] + * + * signum gives the sign of the permutation, (-1)^n, where n is the + * number of interchanges in the permutation. + * + * See Golub & Van Loan, Matrix Computations, Algorithm 3.4.1 (Gauss + * Elimination with Partial Pivoting). + */ + +int +gsl_linalg_LU_decomp (gsl_matrix * A, gsl_permutation * p, int *signum) +{ + if (A->size1 != A->size2) + { + GSL_ERROR ("LU decomposition requires square matrix", GSL_ENOTSQR); + } + else if (p->size != A->size1) + { + GSL_ERROR ("permutation length must match matrix size", GSL_EBADLEN); + } + else + { + const size_t N = A->size1; + size_t i, j, k; + + *signum = 1; + gsl_permutation_init (p); + + for (j = 0; j < N - 1; j++) + { + /* Find maximum in the j-th column */ + + REAL ajj, max = fabs (gsl_matrix_get (A, j, j)); + size_t i_pivot = j; + + for (i = j + 1; i < N; i++) + { + REAL aij = fabs (gsl_matrix_get (A, i, j)); + + if (aij > max) + { + max = aij; + i_pivot = i; + } + } + + if (i_pivot != j) + { + gsl_matrix_swap_rows (A, j, i_pivot); + gsl_permutation_swap (p, j, i_pivot); + *signum = -(*signum); + } + + ajj = gsl_matrix_get (A, j, j); + + if (ajj != 0.0) + { + for (i = j + 1; i < N; i++) + { + REAL aij = gsl_matrix_get (A, i, j) / ajj; + gsl_matrix_set (A, i, j, aij); + + for (k = j + 1; k < N; k++) + { + REAL aik = gsl_matrix_get (A, i, k); + REAL ajk = gsl_matrix_get (A, j, k); + gsl_matrix_set (A, i, k, aik - aij * ajk); + } + } + } + } + + return GSL_SUCCESS; + } +} + +int +gsl_linalg_LU_solve (const gsl_matrix * LU, const gsl_permutation * p, const gsl_vector * b, gsl_vector * x) +{ + if (LU->size1 != LU->size2) + { + GSL_ERROR ("LU matrix must be square", GSL_ENOTSQR); + } + else if (LU->size1 != p->size) + { + GSL_ERROR ("permutation length must match matrix size", GSL_EBADLEN); + } + else if (LU->size1 != b->size) + { + GSL_ERROR ("matrix size must match b size", GSL_EBADLEN); + } + else if (LU->size2 != x->size) + { + GSL_ERROR ("matrix size must match solution size", GSL_EBADLEN); + } + else if (singular (LU)) + { + GSL_ERROR ("matrix is singular", GSL_EDOM); + } + else + { + int status; + + /* Copy x <- b */ + + gsl_vector_memcpy (x, b); + + /* Solve for x */ + + status = gsl_linalg_LU_svx (LU, p, x); + + return status; + } +} + + +int +gsl_linalg_LU_svx (const gsl_matrix * LU, const gsl_permutation * p, gsl_vector * x) +{ + if (LU->size1 != LU->size2) + { + GSL_ERROR ("LU matrix must be square", GSL_ENOTSQR); + } + else if (LU->size1 != p->size) + { + GSL_ERROR ("permutation length must match matrix size", GSL_EBADLEN); + } + else if (LU->size1 != x->size) + { + GSL_ERROR ("matrix size must match solution/rhs size", GSL_EBADLEN); + } + else if (singular (LU)) + { + GSL_ERROR ("matrix is singular", GSL_EDOM); + } + else + { + /* Apply permutation to RHS */ + + gsl_permute_vector (p, x); + + /* Solve for c using forward-substitution, L c = P b */ + + gsl_blas_dtrsv (CblasLower, CblasNoTrans, CblasUnit, LU, x); + + /* Perform back-substitution, U x = c */ + + gsl_blas_dtrsv (CblasUpper, CblasNoTrans, CblasNonUnit, LU, x); + + return GSL_SUCCESS; + } +} + + +int +gsl_linalg_LU_refine (const gsl_matrix * A, const gsl_matrix * LU, const gsl_permutation * p, const gsl_vector * b, gsl_vector * x, gsl_vector * work) +{ + if (A->size1 != A->size2) + { + GSL_ERROR ("matrix a must be square", GSL_ENOTSQR); + } + if (LU->size1 != LU->size2) + { + GSL_ERROR ("LU matrix must be square", GSL_ENOTSQR); + } + else if (A->size1 != LU->size2) + { + GSL_ERROR ("LU matrix must be decomposition of a", GSL_ENOTSQR); + } + else if (LU->size1 != p->size) + { + GSL_ERROR ("permutation length must match matrix size", GSL_EBADLEN); + } + else if (LU->size1 != b->size) + { + GSL_ERROR ("matrix size must match b size", GSL_EBADLEN); + } + else if (LU->size1 != x->size) + { + GSL_ERROR ("matrix size must match solution size", GSL_EBADLEN); + } + else if (LU->size1 != work->size) + { + GSL_ERROR ("matrix size must match workspace size", GSL_EBADLEN); + } + else if (singular (LU)) + { + GSL_ERROR ("matrix is singular", GSL_EDOM); + } + else + { + int status; + + /* Compute residual = (A * x - b) */ + + gsl_vector_memcpy (work, b); + gsl_blas_dgemv (CblasNoTrans, 1.0, A, x, -1.0, work); + + /* Find correction, delta = - (A^-1) * residual, and apply it */ + + status = gsl_linalg_LU_svx (LU, p, work); + gsl_blas_daxpy (-1.0, work, x); + + return status; + } +} + +int +gsl_linalg_LU_invert (const gsl_matrix * LU, const gsl_permutation * p, gsl_matrix * inverse) +{ + size_t i, n = LU->size1; + + int status = GSL_SUCCESS; + + if (singular (LU)) + { + GSL_ERROR ("matrix is singular", GSL_EDOM); + } + + gsl_matrix_set_identity (inverse); + + for (i = 0; i < n; i++) + { + gsl_vector_view c = gsl_matrix_column (inverse, i); + int status_i = gsl_linalg_LU_svx (LU, p, &(c.vector)); + + if (status_i) + status = status_i; + } + + return status; +} + +double +gsl_linalg_LU_det (gsl_matrix * LU, int signum) +{ + size_t i, n = LU->size1; + + double det = (double) signum; + + for (i = 0; i < n; i++) + { + det *= gsl_matrix_get (LU, i, i); + } + + return det; +} + + +double +gsl_linalg_LU_lndet (gsl_matrix * LU) +{ + size_t i, n = LU->size1; + + double lndet = 0.0; + + for (i = 0; i < n; i++) + { + lndet += log (fabs (gsl_matrix_get (LU, i, i))); + } + + return lndet; +} + +int +gsl_linalg_LU_sgndet (gsl_matrix * LU, int signum) +{ + size_t i, n = LU->size1; + + int s = signum; + + for (i = 0; i < n; i++) + { + double u = gsl_matrix_get (LU, i, i); + + if (u < 0) + { + s *= -1; + } + else if (u == 0) + { + s = 0; + break; + } + } + + return s; +} + +static int +singular (const gsl_matrix * LU) +{ + size_t i, n = LU->size1; + + for (i = 0; i < n; i++) + { + double u = gsl_matrix_get (LU, i, i); + if (u == 0) return 1; + } + + return 0; +} + diff --git a/gsl-2.5/linalg/lu.lo b/gsl-2.5/linalg/lu.lo new file mode 100644 index 00000000..f8b68d6b --- /dev/null +++ b/gsl-2.5/linalg/lu.lo @@ -0,0 +1,12 @@ +# lu.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/lu.o' + +# Name of the non-PIC object +non_pic_object='lu.o' + diff --git a/gsl-2.5/linalg/luc.c b/gsl-2.5/linalg/luc.c new file mode 100644 index 00000000..ff9f8305 --- /dev/null +++ b/gsl-2.5/linalg/luc.c @@ -0,0 +1,370 @@ +/* linalg/luc.c + * + * Copyright (C) 2001, 2007, 2009 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +static int singular (const gsl_matrix_complex * LU); + +/* Factorise a general N x N complex matrix A into, + * + * P A = L U + * + * where P is a permutation matrix, L is unit lower triangular and U + * is upper triangular. + * + * L is stored in the strict lower triangular part of the input + * matrix. The diagonal elements of L are unity and are not stored. + * + * U is stored in the diagonal and upper triangular part of the + * input matrix. + * + * P is stored in the permutation p. Column j of P is column k of the + * identity matrix, where k = permutation->data[j] + * + * signum gives the sign of the permutation, (-1)^n, where n is the + * number of interchanges in the permutation. + * + * See Golub & Van Loan, Matrix Computations, Algorithm 3.4.1 (Gauss + * Elimination with Partial Pivoting). + */ + +int +gsl_linalg_complex_LU_decomp (gsl_matrix_complex * A, gsl_permutation * p, int *signum) +{ + if (A->size1 != A->size2) + { + GSL_ERROR ("LU decomposition requires square matrix", GSL_ENOTSQR); + } + else if (p->size != A->size1) + { + GSL_ERROR ("permutation length must match matrix size", GSL_EBADLEN); + } + else + { + const size_t N = A->size1; + size_t i, j, k; + + *signum = 1; + gsl_permutation_init (p); + + for (j = 0; j < N - 1; j++) + { + /* Find maximum in the j-th column */ + + gsl_complex ajj = gsl_matrix_complex_get (A, j, j); + double max = gsl_complex_abs (ajj); + size_t i_pivot = j; + + for (i = j + 1; i < N; i++) + { + gsl_complex aij = gsl_matrix_complex_get (A, i, j); + double ai = gsl_complex_abs (aij); + + if (ai > max) + { + max = ai; + i_pivot = i; + } + } + + if (i_pivot != j) + { + gsl_matrix_complex_swap_rows (A, j, i_pivot); + gsl_permutation_swap (p, j, i_pivot); + *signum = -(*signum); + } + + ajj = gsl_matrix_complex_get (A, j, j); + + if (!(GSL_REAL(ajj) == 0.0 && GSL_IMAG(ajj) == 0.0)) + { + for (i = j + 1; i < N; i++) + { + gsl_complex aij_orig = gsl_matrix_complex_get (A, i, j); + gsl_complex aij = gsl_complex_div (aij_orig, ajj); + gsl_matrix_complex_set (A, i, j, aij); + + for (k = j + 1; k < N; k++) + { + gsl_complex aik = gsl_matrix_complex_get (A, i, k); + gsl_complex ajk = gsl_matrix_complex_get (A, j, k); + + /* aik = aik - aij * ajk */ + + gsl_complex aijajk = gsl_complex_mul (aij, ajk); + gsl_complex aik_new = gsl_complex_sub (aik, aijajk); + + gsl_matrix_complex_set (A, i, k, aik_new); + } + } + } + } + + return GSL_SUCCESS; + } +} + +int +gsl_linalg_complex_LU_solve (const gsl_matrix_complex * LU, const gsl_permutation * p, const gsl_vector_complex * b, gsl_vector_complex * x) +{ + if (LU->size1 != LU->size2) + { + GSL_ERROR ("LU matrix must be square", GSL_ENOTSQR); + } + else if (LU->size1 != p->size) + { + GSL_ERROR ("permutation length must match matrix size", GSL_EBADLEN); + } + else if (LU->size1 != b->size) + { + GSL_ERROR ("matrix size must match b size", GSL_EBADLEN); + } + else if (LU->size2 != x->size) + { + GSL_ERROR ("matrix size must match solution size", GSL_EBADLEN); + } + else if (singular (LU)) + { + GSL_ERROR ("matrix is singular", GSL_EDOM); + } + else + { + int status; + + /* Copy x <- b */ + + gsl_vector_complex_memcpy (x, b); + + /* Solve for x */ + + status = gsl_linalg_complex_LU_svx (LU, p, x); + + return status; + } +} + + +int +gsl_linalg_complex_LU_svx (const gsl_matrix_complex * LU, const gsl_permutation * p, gsl_vector_complex * x) +{ + if (LU->size1 != LU->size2) + { + GSL_ERROR ("LU matrix must be square", GSL_ENOTSQR); + } + else if (LU->size1 != p->size) + { + GSL_ERROR ("permutation length must match matrix size", GSL_EBADLEN); + } + else if (LU->size1 != x->size) + { + GSL_ERROR ("matrix size must match solution/rhs size", GSL_EBADLEN); + } + else if (singular (LU)) + { + GSL_ERROR ("matrix is singular", GSL_EDOM); + } + else + { + /* Apply permutation to RHS */ + + gsl_permute_vector_complex (p, x); + + /* Solve for c using forward-substitution, L c = P b */ + + gsl_blas_ztrsv (CblasLower, CblasNoTrans, CblasUnit, LU, x); + + /* Perform back-substitution, U x = c */ + + gsl_blas_ztrsv (CblasUpper, CblasNoTrans, CblasNonUnit, LU, x); + + return GSL_SUCCESS; + } +} + + +int +gsl_linalg_complex_LU_refine (const gsl_matrix_complex * A, const gsl_matrix_complex * LU, const gsl_permutation * p, const gsl_vector_complex * b, gsl_vector_complex * x, gsl_vector_complex * work) +{ + if (A->size1 != A->size2) + { + GSL_ERROR ("matrix a must be square", GSL_ENOTSQR); + } + if (LU->size1 != LU->size2) + { + GSL_ERROR ("LU matrix must be square", GSL_ENOTSQR); + } + else if (A->size1 != LU->size2) + { + GSL_ERROR ("LU matrix must be decomposition of a", GSL_ENOTSQR); + } + else if (LU->size1 != p->size) + { + GSL_ERROR ("permutation length must match matrix size", GSL_EBADLEN); + } + else if (LU->size1 != b->size) + { + GSL_ERROR ("matrix size must match b size", GSL_EBADLEN); + } + else if (LU->size1 != x->size) + { + GSL_ERROR ("matrix size must match solution size", GSL_EBADLEN); + } + else if (LU->size1 != work->size) + { + GSL_ERROR ("matrix size must match workspace size", GSL_EBADLEN); + } + else if (singular (LU)) + { + GSL_ERROR ("matrix is singular", GSL_EDOM); + } + else + { + int status; + + /* Compute residual = (A * x - b) */ + + gsl_vector_complex_memcpy (work, b); + + { + gsl_complex one = GSL_COMPLEX_ONE; + gsl_complex negone = GSL_COMPLEX_NEGONE; + gsl_blas_zgemv (CblasNoTrans, one, A, x, negone, work); + } + + /* Find correction, delta = - (A^-1) * residual, and apply it */ + + status = gsl_linalg_complex_LU_svx (LU, p, work); + + { + gsl_complex negone= GSL_COMPLEX_NEGONE; + gsl_blas_zaxpy (negone, work, x); + } + + return status; + } +} + +int +gsl_linalg_complex_LU_invert (const gsl_matrix_complex * LU, const gsl_permutation * p, gsl_matrix_complex * inverse) +{ + size_t i, n = LU->size1; + + int status = GSL_SUCCESS; + + gsl_matrix_complex_set_identity (inverse); + + for (i = 0; i < n; i++) + { + gsl_vector_complex_view c = gsl_matrix_complex_column (inverse, i); + int status_i = gsl_linalg_complex_LU_svx (LU, p, &(c.vector)); + + if (status_i) + status = status_i; + } + + return status; +} + +gsl_complex +gsl_linalg_complex_LU_det (gsl_matrix_complex * LU, int signum) +{ + size_t i, n = LU->size1; + + gsl_complex det = gsl_complex_rect((double) signum, 0.0); + + for (i = 0; i < n; i++) + { + gsl_complex zi = gsl_matrix_complex_get (LU, i, i); + det = gsl_complex_mul (det, zi); + } + + return det; +} + + +double +gsl_linalg_complex_LU_lndet (gsl_matrix_complex * LU) +{ + size_t i, n = LU->size1; + + double lndet = 0.0; + + for (i = 0; i < n; i++) + { + gsl_complex z = gsl_matrix_complex_get (LU, i, i); + lndet += log (gsl_complex_abs (z)); + } + + return lndet; +} + + +gsl_complex +gsl_linalg_complex_LU_sgndet (gsl_matrix_complex * LU, int signum) +{ + size_t i, n = LU->size1; + + gsl_complex phase = gsl_complex_rect((double) signum, 0.0); + + for (i = 0; i < n; i++) + { + gsl_complex z = gsl_matrix_complex_get (LU, i, i); + + double r = gsl_complex_abs(z); + + if (r == 0) + { + phase = gsl_complex_rect(0.0, 0.0); + break; + } + else + { + z = gsl_complex_div_real(z, r); + phase = gsl_complex_mul(phase, z); + } + } + + return phase; +} + +static int +singular (const gsl_matrix_complex * LU) +{ + size_t i, n = LU->size1; + + for (i = 0; i < n; i++) + { + gsl_complex u = gsl_matrix_complex_get (LU, i, i); + if (GSL_REAL(u) == 0 && GSL_IMAG(u) == 0) return 1; + } + + return 0; +} diff --git a/gsl-2.5/linalg/luc.lo b/gsl-2.5/linalg/luc.lo new file mode 100644 index 00000000..09da3fce --- /dev/null +++ b/gsl-2.5/linalg/luc.lo @@ -0,0 +1,12 @@ +# luc.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/luc.o' + +# Name of the non-PIC object +non_pic_object='luc.o' + diff --git a/gsl-2.5/linalg/mcholesky.c b/gsl-2.5/linalg/mcholesky.c new file mode 100644 index 00000000..e02b5ace --- /dev/null +++ b/gsl-2.5/linalg/mcholesky.c @@ -0,0 +1,271 @@ +/* Modified Cholesky Decomposition + * + * Copyright (C) 2016 Patrick Alken + * + * This is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 3, or (at your option) any + * later version. + * + * This source 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. + */ + +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +#include "cholesky_common.c" + +/* + * This module contains routines related to the Modified Cholesky + * Decomposition, which factors a symmetric indefinite matrix A as + * + * P (A + E) P^T = L D L^T + * + * where: + * P: permutation matrix + * E: small, non-negative diagonal matrix + * L: unit lower triangular matrix + * D: strictly positive diagonal matrix + * + * These routines follow these works closely: + * + * [1] P. E. Gill, W. Murray, M. H. Wright, Practical Optimization, + * Academic Press, 1981. + * + * [2] Dennis and Schnabel, Numerical Methods for Unconstrained Optimization + * and Nonlinear Equations, SIAM, 1996 + */ + +static size_t mcholesky_maxabs(const gsl_vector * v, double *maxabs); + +/* +gsl_linalg_mcholesky_decomp() + Perform Pivoted Modified Cholesky LDLT decomposition of a symmetric positive +indefinite matrix: + +P (A + E) P^T = L D L^T + +Inputs: A - (input) symmetric, positive indefinite matrix, + stored in lower triangle + (output) lower triangle contains L; diagonal contains D + p - (output) permutation matrix P + E - (output) perturbation matrix E + +Return: success/error + +Notes: +1) Based on algorithm 4.2.2 (Outer Product LDLT with Pivoting) of +Golub and Van Loan, Matrix Computations (4th ed), with modifications +described in [1] and [2] + +2) E can be set to NULL if not required +*/ + +int +gsl_linalg_mcholesky_decomp (gsl_matrix * A, gsl_permutation * p, + gsl_vector * E) +{ + const size_t N = A->size1; + + if (N != A->size2) + { + GSL_ERROR("LDLT decomposition requires square matrix", GSL_ENOTSQR); + } + else if (p->size != N) + { + GSL_ERROR ("permutation length must match matrix size", GSL_EBADLEN); + } + else + { + const double delta = GSL_DBL_EPSILON; + double beta; + double gamma = 0.0; + double xi = 0.0; + gsl_vector_view diag = gsl_matrix_diagonal(A); + size_t i, j; + + /* save a copy of A in upper triangle (for later rcond calculation) */ + gsl_matrix_transpose_tricpy('L', 0, A, A); + + gsl_permutation_init(p); + + /* compute: + * gamma = max | A_{ii} | + * xi = max_{i \ne j} | A_{ij} | + */ + for (i = 0; i < N; ++i) + { + double aii = gsl_matrix_get(A, i, i); + + gamma = GSL_MAX(gamma, fabs(aii)); + + for (j = 0; j < i; ++j) + { + double aij = gsl_matrix_get(A, i, j); + xi = GSL_MAX(xi, fabs(aij)); + } + } + + /* compute: + * beta = sqrt[ max { gamma, xi/nu, eps } ] + * with: nu = max{ sqrt(N^2 - 1), 1 } + */ + if (N == 1) + { + beta = GSL_MAX(GSL_MAX(gamma, xi), GSL_DBL_EPSILON); + } + else + { + double nu = sqrt(N*N - 1.0); + beta = GSL_MAX(GSL_MAX(gamma, xi / nu), GSL_DBL_EPSILON); + } + + beta = sqrt(beta); + + for (j = 0; j < N; ++j) + { + double ajj, thetaj, u, alpha, alphainv; + gsl_vector_view w; + size_t q; + + /* compute q = max_idx { A_jj, ..., A_nn } */ + w = gsl_vector_subvector(&diag.vector, j, N - j); + q = mcholesky_maxabs(&w.vector, NULL) + j; + + gsl_permutation_swap(p, q, j); + cholesky_swap_rowcol(A, q, j); + + /* theta_j = max_{j+1 <= i <= n} |A_{ij}| */ + if (j < N - 1) + { + w = gsl_matrix_subcolumn(A, j, j + 1, N - j - 1); + mcholesky_maxabs(&w.vector, &thetaj); + } + else + { + thetaj = 0.0; + } + + u = thetaj / beta; + + /* compute alpha = d_j */ + ajj = gsl_matrix_get(A, j, j); + alpha = GSL_MAX(GSL_MAX(delta, fabs(ajj)), u * u); + alphainv = 1.0 / alpha; + + if (j < N - 1) + { + /* v = A(j+1:n, j) */ + gsl_vector_view v = gsl_matrix_subcolumn(A, j, j + 1, N - j - 1); + + /* m = A(j+1:n, j+1:n) */ + gsl_matrix_view m = gsl_matrix_submatrix(A, j + 1, j + 1, N - j - 1, N - j - 1); + + /* m = m - v v^T / alpha */ + gsl_blas_dsyr(CblasLower, -alphainv, &v.vector, &m.matrix); + + /* v = v / alpha */ + gsl_vector_scale(&v.vector, alphainv); + + } + + if (E) + gsl_vector_set(E, j, alpha - ajj); + + gsl_matrix_set(A, j, j, alpha); + } + + if (E) + { + /* we currently have: P A P^T + E = L D L^T, permute E + * so that we have: P (A + E) P^T = L D L^T */ + gsl_permute_vector_inverse(p, E); + } + + return GSL_SUCCESS; + } +} + +int +gsl_linalg_mcholesky_solve(const gsl_matrix * LDLT, + const gsl_permutation * p, + const gsl_vector * b, + gsl_vector * x) +{ + int status = gsl_linalg_pcholesky_solve(LDLT, p, b, x); + return status; +} + +int +gsl_linalg_mcholesky_svx(const gsl_matrix * LDLT, + const gsl_permutation * p, + gsl_vector * x) +{ + int status = gsl_linalg_pcholesky_svx(LDLT, p, x); + return status; +} + +int +gsl_linalg_mcholesky_rcond (const gsl_matrix * LDLT, const gsl_permutation * p, + double * rcond, gsl_vector * work) +{ + int status = gsl_linalg_pcholesky_rcond(LDLT, p, rcond, work); + return status; +} + +int +gsl_linalg_mcholesky_invert(const gsl_matrix * LDLT, const gsl_permutation * p, + gsl_matrix * Ainv) +{ + int status = gsl_linalg_pcholesky_invert(LDLT, p, Ainv); + return status; +} + +/* +mcholesky_maxabs() + Compute: + +val = max_i |v_i| + +Inputs: v - vector + maxabs - (output) max abs value + +Return: index corresponding to max_i |v_i| +*/ + +static size_t +mcholesky_maxabs(const gsl_vector * v, double *maxabs) +{ + const size_t n = v->size; + size_t i; + size_t idx = 0; + double max = gsl_vector_get(v, idx); + + for (i = 1; i < n; ++i) + { + double vi = gsl_vector_get(v, i); + double absvi = fabs(vi); + + if (absvi > max) + { + max = absvi; + idx = i; + } + } + + if (maxabs) + *maxabs = max; + + return idx; +} diff --git a/gsl-2.5/linalg/mcholesky.lo b/gsl-2.5/linalg/mcholesky.lo new file mode 100644 index 00000000..b3ae4f0a --- /dev/null +++ b/gsl-2.5/linalg/mcholesky.lo @@ -0,0 +1,12 @@ +# mcholesky.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/mcholesky.o' + +# Name of the non-PIC object +non_pic_object='mcholesky.o' + diff --git a/gsl-2.5/linalg/multiply.c b/gsl-2.5/linalg/multiply.c new file mode 100644 index 00000000..f172312d --- /dev/null +++ b/gsl-2.5/linalg/multiply.c @@ -0,0 +1,137 @@ +/* linalg/multiply.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ + +#include +#include +#include +#include + +#define SWAP_SIZE_T(a, b) do { size_t swap_tmp = a; a = b; b = swap_tmp; } while(0) + +int +gsl_linalg_matmult (const gsl_matrix * A, const gsl_matrix * B, gsl_matrix * C) +{ + if (A->size2 != B->size1 || A->size1 != C->size1 || B->size2 != C->size2) + { + GSL_ERROR ("matrix sizes are not conformant", GSL_EBADLEN); + } + else + { + double a, b; + double temp; + size_t i, j, k; + + for (i = 0; i < C->size1; i++) + { + for (j = 0; j < C->size2; j++) + { + a = gsl_matrix_get (A, i, 0); + b = gsl_matrix_get (B, 0, j); + temp = a * b; + for (k = 1; k < A->size2; k++) + { + a = gsl_matrix_get (A, i, k); + b = gsl_matrix_get (B, k, j); + temp += a * b; + } + gsl_matrix_set (C, i, j, temp); + } + } + + return GSL_SUCCESS; + } +} + + +int +gsl_linalg_matmult_mod (const gsl_matrix * A, gsl_linalg_matrix_mod_t modA, + const gsl_matrix * B, gsl_linalg_matrix_mod_t modB, + gsl_matrix * C) +{ + if (modA == GSL_LINALG_MOD_NONE && modB == GSL_LINALG_MOD_NONE) + { + return gsl_linalg_matmult (A, B, C); + } + else + { + size_t dim1_A = A->size1; + size_t dim2_A = A->size2; + size_t dim1_B = B->size1; + size_t dim2_B = B->size2; + size_t dim1_C = C->size1; + size_t dim2_C = C->size2; + + if (modA & GSL_LINALG_MOD_TRANSPOSE) + SWAP_SIZE_T (dim1_A, dim2_A); + if (modB & GSL_LINALG_MOD_TRANSPOSE) + SWAP_SIZE_T (dim1_B, dim2_B); + + if (dim2_A != dim1_B || dim1_A != dim1_C || dim2_B != dim2_C) + { + GSL_ERROR ("matrix sizes are not conformant", GSL_EBADLEN); + } + else + { + double a, b; + double temp; + size_t i, j, k; + size_t a1, a2, b1, b2; + + for (i = 0; i < dim1_C; i++) + { + for (j = 0; j < dim2_C; j++) + { + a1 = i; + a2 = 0; + b1 = 0; + b2 = j; + if (modA & GSL_LINALG_MOD_TRANSPOSE) + SWAP_SIZE_T (a1, a2); + if (modB & GSL_LINALG_MOD_TRANSPOSE) + SWAP_SIZE_T (b1, b2); + + a = gsl_matrix_get (A, a1, a2); + b = gsl_matrix_get (B, b1, b2); + temp = a * b; + + for (k = 1; k < dim2_A; k++) + { + a1 = i; + a2 = k; + b1 = k; + b2 = j; + if (modA & GSL_LINALG_MOD_TRANSPOSE) + SWAP_SIZE_T (a1, a2); + if (modB & GSL_LINALG_MOD_TRANSPOSE) + SWAP_SIZE_T (b1, b2); + a = gsl_matrix_get (A, a1, a2); + b = gsl_matrix_get (B, b1, b2); + temp += a * b; + } + + gsl_matrix_set (C, i, j, temp); + } + } + + return GSL_SUCCESS; + } + } +} diff --git a/gsl-2.5/linalg/multiply.lo b/gsl-2.5/linalg/multiply.lo new file mode 100644 index 00000000..6122bdcb --- /dev/null +++ b/gsl-2.5/linalg/multiply.lo @@ -0,0 +1,12 @@ +# multiply.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/multiply.o' + +# Name of the non-PIC object +non_pic_object='multiply.o' + diff --git a/gsl-2.5/linalg/pcholesky.c b/gsl-2.5/linalg/pcholesky.c new file mode 100644 index 00000000..1982092b --- /dev/null +++ b/gsl-2.5/linalg/pcholesky.c @@ -0,0 +1,594 @@ +/* L D L^T Decomposition + * + * Copyright (C) 2016 Patrick Alken + * + * This is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 3, or (at your option) any + * later version. + * + * This source 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. + */ + +/* + * L D L^T decomposition of a symmetrix positive definite matrix. + * + * This algorithm does: + * P A P' = L D L' + * with + * L := unit lower left triangle matrix + * D := diagonal matrix + * L' := the transposed form of L. + * P := permutation matrix + * + */ + +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +#include "cholesky_common.c" + +static double cholesky_LDLT_norm1(const gsl_matrix * LDLT, const gsl_permutation * p, + gsl_vector * work); +static int cholesky_LDLT_Ainv(CBLAS_TRANSPOSE_t TransA, gsl_vector * x, void * params); + +typedef struct +{ + const gsl_matrix * LDLT; + const gsl_permutation * perm; +} pcholesky_params; + +/* +pcholesky_decomp() + Perform Pivoted Cholesky LDLT decomposition of a symmetric positive +semidefinite matrix + +Inputs: copy_uplo - copy lower triangle to upper to save original matrix + for rcond calculation later + A - (input) symmetric, positive semidefinite matrix, + stored in lower triangle + (output) lower triangle contains L; diagonal contains D + p - permutation vector + +Return: success/error + +Notes: +1) Based on algorithm 4.2.2 (Outer Product LDLT with Pivoting) of +Golub and Van Loan, Matrix Computations (4th ed). +*/ + +static int +pcholesky_decomp (const int copy_uplo, gsl_matrix * A, gsl_permutation * p) +{ + const size_t N = A->size1; + + if (N != A->size2) + { + GSL_ERROR("LDLT decomposition requires square matrix", GSL_ENOTSQR); + } + else if (p->size != N) + { + GSL_ERROR ("permutation length must match matrix size", GSL_EBADLEN); + } + else + { + gsl_vector_view diag = gsl_matrix_diagonal(A); + size_t k; + + if (copy_uplo) + { + /* save a copy of A in upper triangle (for later rcond calculation) */ + gsl_matrix_transpose_tricpy('L', 0, A, A); + } + + gsl_permutation_init(p); + + for (k = 0; k < N; ++k) + { + gsl_vector_view w; + size_t j; + + /* compute j = max_idx { A_kk, ..., A_nn } */ + w = gsl_vector_subvector(&diag.vector, k, N - k); + j = gsl_vector_max_index(&w.vector) + k; + gsl_permutation_swap(p, k, j); + + cholesky_swap_rowcol(A, k, j); + + if (k < N - 1) + { + double alpha = gsl_matrix_get(A, k, k); + double alphainv = 1.0 / alpha; + + /* v = A(k+1:n, k) */ + gsl_vector_view v = gsl_matrix_subcolumn(A, k, k + 1, N - k - 1); + + /* m = A(k+1:n, k+1:n) */ + gsl_matrix_view m = gsl_matrix_submatrix(A, k + 1, k + 1, N - k - 1, N - k - 1); + + /* m = m - v v^T / alpha */ + gsl_blas_dsyr(CblasLower, -alphainv, &v.vector, &m.matrix); + + /* v = v / alpha */ + gsl_vector_scale(&v.vector, alphainv); + } + } + + return GSL_SUCCESS; + } +} + +/* +gsl_linalg_pcholesky_decomp() + Perform Pivoted Cholesky LDLT decomposition of a symmetric positive +semidefinite matrix + +Inputs: A - (input) symmetric, positive semidefinite matrix, + stored in lower triangle + (output) lower triangle contains L; diagonal contains D + p - permutation vector + +Return: success/error + +Notes: +1) Based on algorithm 4.2.2 (Outer Product LDLT with Pivoting) of +Golub and Van Loan, Matrix Computations (4th ed). +*/ + +int +gsl_linalg_pcholesky_decomp (gsl_matrix * A, gsl_permutation * p) +{ + int status = pcholesky_decomp(1, A, p); + return status; +} + +int +gsl_linalg_pcholesky_solve(const gsl_matrix * LDLT, + const gsl_permutation * p, + const gsl_vector * b, + gsl_vector * x) +{ + if (LDLT->size1 != LDLT->size2) + { + GSL_ERROR ("LDLT matrix must be square", GSL_ENOTSQR); + } + else if (LDLT->size1 != p->size) + { + GSL_ERROR ("matrix size must match permutation size", GSL_EBADLEN); + } + else if (LDLT->size1 != b->size) + { + GSL_ERROR ("matrix size must match b size", GSL_EBADLEN); + } + else if (LDLT->size2 != x->size) + { + GSL_ERROR ("matrix size must match solution size", GSL_EBADLEN); + } + else + { + int status; + + gsl_vector_memcpy (x, b); + + status = gsl_linalg_pcholesky_svx (LDLT, p, x); + + return status; + } +} + +int +gsl_linalg_pcholesky_svx(const gsl_matrix * LDLT, + const gsl_permutation * p, + gsl_vector * x) +{ + if (LDLT->size1 != LDLT->size2) + { + GSL_ERROR ("LDLT matrix must be square", GSL_ENOTSQR); + } + else if (LDLT->size1 != p->size) + { + GSL_ERROR ("matrix size must match permutation size", GSL_EBADLEN); + } + else if (LDLT->size2 != x->size) + { + GSL_ERROR ("matrix size must match solution size", GSL_EBADLEN); + } + else + { + gsl_vector_const_view D = gsl_matrix_const_diagonal(LDLT); + + /* x := P b */ + gsl_permute_vector(p, x); + + /* solve: L w = P b */ + gsl_blas_dtrsv(CblasLower, CblasNoTrans, CblasUnit, LDLT, x); + + /* solve: D y = w */ + gsl_vector_div(x, &D.vector); + + /* solve: L^T z = y */ + gsl_blas_dtrsv(CblasLower, CblasTrans, CblasUnit, LDLT, x); + + /* compute: x = P^T z */ + gsl_permute_vector_inverse(p, x); + + return GSL_SUCCESS; + } +} + +int +gsl_linalg_pcholesky_decomp2(gsl_matrix * A, gsl_permutation * p, + gsl_vector * S) +{ + const size_t M = A->size1; + const size_t N = A->size2; + + if (M != N) + { + GSL_ERROR("cholesky decomposition requires square matrix", GSL_ENOTSQR); + } + else if (N != p->size) + { + GSL_ERROR ("matrix size must match permutation size", GSL_EBADLEN); + } + else if (N != S->size) + { + GSL_ERROR("S must have length N", GSL_EBADLEN); + } + else + { + int status; + + /* save a copy of A in upper triangle (for later rcond calculation) */ + gsl_matrix_transpose_tricpy('L', 0, A, A); + + /* compute scaling factors to reduce cond(A) */ + status = gsl_linalg_cholesky_scale(A, S); + if (status) + return status; + + /* apply scaling factors */ + status = gsl_linalg_cholesky_scale_apply(A, S); + if (status) + return status; + + /* compute Cholesky decomposition of diag(S) A diag(S) */ + status = pcholesky_decomp(0, A, p); + if (status) + return status; + + return GSL_SUCCESS; + } +} + +int +gsl_linalg_pcholesky_solve2(const gsl_matrix * LDLT, + const gsl_permutation * p, + const gsl_vector * S, + const gsl_vector * b, + gsl_vector * x) +{ + if (LDLT->size1 != LDLT->size2) + { + GSL_ERROR ("LDLT matrix must be square", GSL_ENOTSQR); + } + else if (LDLT->size1 != p->size) + { + GSL_ERROR ("matrix size must match permutation size", GSL_EBADLEN); + } + else if (LDLT->size1 != S->size) + { + GSL_ERROR ("matrix size must match S", GSL_EBADLEN); + } + else if (LDLT->size1 != b->size) + { + GSL_ERROR ("matrix size must match b size", GSL_EBADLEN); + } + else if (LDLT->size2 != x->size) + { + GSL_ERROR ("matrix size must match solution size", GSL_EBADLEN); + } + else + { + int status; + + gsl_vector_memcpy (x, b); + + status = gsl_linalg_pcholesky_svx2 (LDLT, p, S, x); + + return status; + } +} + +int +gsl_linalg_pcholesky_svx2(const gsl_matrix * LDLT, + const gsl_permutation * p, + const gsl_vector * S, + gsl_vector * x) +{ + if (LDLT->size1 != LDLT->size2) + { + GSL_ERROR ("LDLT matrix must be square", GSL_ENOTSQR); + } + else if (LDLT->size1 != p->size) + { + GSL_ERROR ("matrix size must match permutation size", GSL_EBADLEN); + } + else if (LDLT->size1 != S->size) + { + GSL_ERROR ("matrix size must match S", GSL_EBADLEN); + } + else if (LDLT->size2 != x->size) + { + GSL_ERROR ("matrix size must match solution size", GSL_EBADLEN); + } + else + { + int status; + + /* x := S b */ + gsl_vector_mul(x, S); + + /* solve: A~ x~ = b~, with A~ = S A S, b~ = S b */ + status = gsl_linalg_pcholesky_svx(LDLT, p, x); + if (status) + return status; + + /* compute: x = S x~ */ + gsl_vector_mul(x, S); + + return GSL_SUCCESS; + } +} + +/* +gsl_linalg_pcholesky_invert() + Compute the inverse of a symmetric positive definite matrix in +Cholesky form. + +Inputs: LDLT - matrix in cholesky form + p - permutation + Ainv - (output) A^{-1} + +Return: success or error +*/ + +int +gsl_linalg_pcholesky_invert(const gsl_matrix * LDLT, const gsl_permutation * p, + gsl_matrix * Ainv) +{ + const size_t M = LDLT->size1; + const size_t N = LDLT->size2; + + if (M != N) + { + GSL_ERROR ("LDLT matrix must be square", GSL_ENOTSQR); + } + else if (LDLT->size1 != p->size) + { + GSL_ERROR ("matrix size must match permutation size", GSL_EBADLEN); + } + else if (Ainv->size1 != Ainv->size2) + { + GSL_ERROR ("Ainv matrix must be square", GSL_ENOTSQR); + } + else if (Ainv->size1 != M) + { + GSL_ERROR ("Ainv matrix has wrong dimensions", GSL_EBADLEN); + } + else + { + size_t i, j; + gsl_vector_view v1, v2; + + /* invert the lower triangle of LDLT */ + gsl_matrix_memcpy(Ainv, LDLT); + gsl_linalg_tri_lower_unit_invert(Ainv); + + /* compute sqrt(D^{-1}) L^{-1} in the lower triangle of Ainv */ + for (i = 0; i < N; ++i) + { + double di = gsl_matrix_get(LDLT, i, i); + double sqrt_di = sqrt(di); + + for (j = 0; j < i; ++j) + { + double *Lij = gsl_matrix_ptr(Ainv, i, j); + *Lij /= sqrt_di; + } + + gsl_matrix_set(Ainv, i, i, 1.0 / sqrt_di); + } + + /* + * The lower triangle of Ainv now contains D^{-1/2} L^{-1}. Now compute + * A^{-1} = L^{-T} D^{-1} L^{-1} + */ + + for (i = 0; i < N; ++i) + { + double aii = gsl_matrix_get(Ainv, i, i); + + if (i < N - 1) + { + double tmp; + + v1 = gsl_matrix_subcolumn(Ainv, i, i, N - i); + gsl_blas_ddot(&v1.vector, &v1.vector, &tmp); + gsl_matrix_set(Ainv, i, i, tmp); + + if (i > 0) + { + gsl_matrix_view m = gsl_matrix_submatrix(Ainv, i + 1, 0, N - i - 1, i); + + v1 = gsl_matrix_subcolumn(Ainv, i, i + 1, N - i - 1); + v2 = gsl_matrix_subrow(Ainv, i, 0, i); + + gsl_blas_dgemv(CblasTrans, 1.0, &m.matrix, &v1.vector, aii, &v2.vector); + } + } + else + { + v1 = gsl_matrix_row(Ainv, N - 1); + gsl_blas_dscal(aii, &v1.vector); + } + } + + /* copy lower triangle to upper */ + gsl_matrix_transpose_tricpy('L', 0, Ainv, Ainv); + + /* now apply permutation p to the matrix */ + + /* compute L^{-T} D^{-1} L^{-1} P^T */ + for (i = 0; i < N; ++i) + { + v1 = gsl_matrix_row(Ainv, i); + gsl_permute_vector_inverse(p, &v1.vector); + } + + /* compute P L^{-T} D^{-1} L^{-1} P^T */ + for (i = 0; i < N; ++i) + { + v1 = gsl_matrix_column(Ainv, i); + gsl_permute_vector_inverse(p, &v1.vector); + } + + return GSL_SUCCESS; + } +} + +int +gsl_linalg_pcholesky_rcond (const gsl_matrix * LDLT, const gsl_permutation * p, + double * rcond, gsl_vector * work) +{ + const size_t M = LDLT->size1; + const size_t N = LDLT->size2; + + if (M != N) + { + GSL_ERROR ("cholesky matrix must be square", GSL_ENOTSQR); + } + else if (work->size != 3 * N) + { + GSL_ERROR ("work vector must have length 3*N", GSL_EBADLEN); + } + else + { + int status; + double Anorm = cholesky_LDLT_norm1(LDLT, p, work); /* ||A||_1 */ + double Ainvnorm; /* ||A^{-1}||_1 */ + pcholesky_params params; + + *rcond = 0.0; + + /* don't continue if matrix is singular */ + if (Anorm == 0.0) + return GSL_SUCCESS; + + params.LDLT = LDLT; + params.perm = p; + + /* estimate ||A^{-1}||_1 */ + status = gsl_linalg_invnorm1(N, cholesky_LDLT_Ainv, ¶ms, &Ainvnorm, work); + + if (status) + return status; + + if (Ainvnorm != 0.0) + *rcond = (1.0 / Anorm) / Ainvnorm; + + return GSL_SUCCESS; + } +} + +/* +cholesky_LDLT_norm1 + Compute 1-norm of original matrix A, stored in upper triangle of LDLT; +diagonal entries have to be reconstructed + +Inputs: LDLT - Cholesky L D L^T decomposition (lower triangle) with + original matrix in upper triangle + p - permutation vector + work - workspace, length 2*N +*/ + +static double +cholesky_LDLT_norm1(const gsl_matrix * LDLT, const gsl_permutation * p, gsl_vector * work) +{ + const size_t N = LDLT->size1; + gsl_vector_const_view D = gsl_matrix_const_diagonal(LDLT); + gsl_vector_view diagA = gsl_vector_subvector(work, N, N); + double max = 0.0; + size_t i, j; + + /* reconstruct diagonal entries of original matrix A */ + for (j = 0; j < N; ++j) + { + double Ajj; + + /* compute diagonal (j,j) entry of A */ + Ajj = gsl_vector_get(&D.vector, j); + for (i = 0; i < j; ++i) + { + double Di = gsl_vector_get(&D.vector, i); + double Lji = gsl_matrix_get(LDLT, j, i); + + Ajj += Di * Lji * Lji; + } + + gsl_vector_set(&diagA.vector, j, Ajj); + } + + gsl_permute_vector_inverse(p, &diagA.vector); + + for (j = 0; j < N; ++j) + { + double sum = 0.0; + double Ajj = gsl_vector_get(&diagA.vector, j); + + for (i = 0; i < j; ++i) + { + double *wi = gsl_vector_ptr(work, i); + double Aij = gsl_matrix_get(LDLT, i, j); + double absAij = fabs(Aij); + + sum += absAij; + *wi += absAij; + } + + gsl_vector_set(work, j, sum + fabs(Ajj)); + } + + for (i = 0; i < N; ++i) + { + double wi = gsl_vector_get(work, i); + max = GSL_MAX(max, wi); + } + + return max; +} + +/* x := A^{-1} x = A^{-t} x, A = L D L^T */ +static int +cholesky_LDLT_Ainv(CBLAS_TRANSPOSE_t TransA, gsl_vector * x, void * params) +{ + int status; + pcholesky_params *par = (pcholesky_params *) params; + + (void) TransA; /* unused parameter warning */ + + status = gsl_linalg_pcholesky_svx(par->LDLT, par->perm, x); + + return status; +} diff --git a/gsl-2.5/linalg/pcholesky.lo b/gsl-2.5/linalg/pcholesky.lo new file mode 100644 index 00000000..f12b7dca --- /dev/null +++ b/gsl-2.5/linalg/pcholesky.lo @@ -0,0 +1,12 @@ +# pcholesky.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/pcholesky.o' + +# Name of the non-PIC object +non_pic_object='pcholesky.o' + diff --git a/gsl-2.5/linalg/ptlq.c b/gsl-2.5/linalg/ptlq.c new file mode 100644 index 00000000..898788ed --- /dev/null +++ b/gsl-2.5/linalg/ptlq.c @@ -0,0 +1,492 @@ +/* linalg/ptlq.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough + * Copyright (C) 2004 Joerg Wensch, modifications for LQ. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "apply_givens.c" + +/* The purpose of this package is to speed up QR-decomposition for + large matrices. Because QR-decomposition is column oriented, but + GSL uses a row-oriented matrix format, there can considerable + speedup obtained by computing the LQ-decomposition of the + transposed matrix instead. This package provides LQ-decomposition + and related algorithms. */ + +/* Factorise a general N x M matrix A into + * + * P A = L Q + * + * where Q is orthogonal (M x M) and L is lower triangular (N x M). + * When A is rank deficient, r = rank(A) < n, then the permutation is + * used to ensure that the lower n - r columns of L are zero and the first + * l rows of Q form an orthonormal basis for the rows of A. + * + * Q is stored as a packed set of Householder transformations in the + * strict upper triangular part of the input matrix. + * + * L is stored in the diagonal and lower triangle of the input matrix. + * + * P: column j of P is column k of the identity matrix, where k = + * permutation->data[j] + * + * The full matrix for Q can be obtained as the product + * + * Q = Q_k .. Q_2 Q_1 + * + * where k = MIN(M,N) and + * + * Q_i = (I - tau_i * v_i * v_i') + * + * and where v_i is a Householder vector + * + * v_i = [1, m(i,i+1), m(i,i+2), ... , m(i,M)] + * + * This storage scheme is the same as in LAPACK. See LAPACK's + * dgeqpf.f for details. + * + */ + +int +gsl_linalg_PTLQ_decomp (gsl_matrix * A, gsl_vector * tau, gsl_permutation * p, int *signum, gsl_vector * norm) +{ + const size_t N = A->size1; + const size_t M = A->size2; + + if (tau->size != GSL_MIN (M, N)) + { + GSL_ERROR ("size of tau must be MIN(M,N)", GSL_EBADLEN); + } + else if (p->size != N) + { + GSL_ERROR ("permutation size must be N", GSL_EBADLEN); + } + else if (norm->size != N) + { + GSL_ERROR ("norm size must be N", GSL_EBADLEN); + } + else + { + size_t i; + + *signum = 1; + + gsl_permutation_init (p); /* set to identity */ + + /* Compute column norms and store in workspace */ + + for (i = 0; i < N; i++) + { + gsl_vector_view c = gsl_matrix_row (A, i); + double x = gsl_blas_dnrm2 (&c.vector); + gsl_vector_set (norm, i, x); + } + + for (i = 0; i < GSL_MIN (M, N); i++) + { + /* Bring the column of largest norm into the pivot position */ + + double max_norm = gsl_vector_get(norm, i); + size_t j, kmax = i; + + for (j = i + 1; j < N; j++) + { + double x = gsl_vector_get (norm, j); + + if (x > max_norm) + { + max_norm = x; + kmax = j; + } + } + + if (kmax != i) + { + gsl_matrix_swap_rows (A, i, kmax); + gsl_permutation_swap (p, i, kmax); + gsl_vector_swap_elements(norm,i,kmax); + + (*signum) = -(*signum); + } + + /* Compute the Householder transformation to reduce the j-th + column of the matrix to a multiple of the j-th unit vector */ + + { + gsl_vector_view c_full = gsl_matrix_row (A, i); + gsl_vector_view c = gsl_vector_subvector (&c_full.vector, + i, M - i); + double tau_i = gsl_linalg_householder_transform (&c.vector); + + gsl_vector_set (tau, i, tau_i); + + /* Apply the transformation to the remaining columns */ + + if (i + 1 < N) + { + gsl_matrix_view m = gsl_matrix_submatrix (A, i +1, i, N - (i+1), M - i); + + gsl_linalg_householder_mh (tau_i, &c.vector, &m.matrix); + } + } + + /* Update the norms of the remaining columns too */ + + if (i + 1 < M) + { + for (j = i + 1; j < N; j++) + { + double x = gsl_vector_get (norm, j); + + if (x > 0.0) + { + double y = 0; + double temp= gsl_matrix_get (A, j, i) / x; + + if (fabs (temp) >= 1) + y = 0.0; + else + y = x * sqrt (1 - temp * temp); + + /* recompute norm to prevent loss of accuracy */ + + if (fabs (y / x) < sqrt (20.0) * GSL_SQRT_DBL_EPSILON) + { + gsl_vector_view c_full = gsl_matrix_row (A, j); + gsl_vector_view c = + gsl_vector_subvector(&c_full.vector, + i+1, M - (i+1)); + y = gsl_blas_dnrm2 (&c.vector); + } + + gsl_vector_set (norm, j, y); + } + } + } + } + + return GSL_SUCCESS; + } +} + +int +gsl_linalg_PTLQ_decomp2 (const gsl_matrix * A, gsl_matrix * q, gsl_matrix * r, gsl_vector * tau, gsl_permutation * p, int *signum, gsl_vector * norm) +{ + const size_t N = A->size1; + const size_t M = A->size2; + + if (q->size1 != M || q->size2 !=M) + { + GSL_ERROR ("q must be M x M", GSL_EBADLEN); + } + else if (r->size1 != N || r->size2 !=M) + { + GSL_ERROR ("r must be N x M", GSL_EBADLEN); + } + else if (tau->size != GSL_MIN (M, N)) + { + GSL_ERROR ("size of tau must be MIN(M,N)", GSL_EBADLEN); + } + else if (p->size != N) + { + GSL_ERROR ("permutation size must be N", GSL_EBADLEN); + } + else if (norm->size != N) + { + GSL_ERROR ("norm size must be N", GSL_EBADLEN); + } + + gsl_matrix_memcpy (r, A); + + gsl_linalg_PTLQ_decomp (r, tau, p, signum, norm); + + /* FIXME: aliased arguments depends on behavior of unpack routine! */ + + gsl_linalg_LQ_unpack (r, tau, q, r); + + return GSL_SUCCESS; +} + + +/* Solves the system x^T A = b^T using the P^T L Q factorisation, + + z^T L = b^T Q^T + + x = P z; + + to obtain x. Based on SLATEC code. */ + +int +gsl_linalg_PTLQ_solve_T (const gsl_matrix * QR, + const gsl_vector * tau, + const gsl_permutation * p, + const gsl_vector * b, + gsl_vector * x) +{ + if (QR->size1 != QR->size2) + { + GSL_ERROR ("QR matrix must be square", GSL_ENOTSQR); + } + else if (QR->size2 != p->size) + { + GSL_ERROR ("matrix size must match permutation size", GSL_EBADLEN); + } + else if (QR->size2 != b->size) + { + GSL_ERROR ("matrix size must match b size", GSL_EBADLEN); + } + else if (QR->size1 != x->size) + { + GSL_ERROR ("matrix size must match solution size", GSL_EBADLEN); + } + else + { + gsl_vector_memcpy (x, b); + + gsl_linalg_PTLQ_svx_T (QR, tau, p, x); + + return GSL_SUCCESS; + } +} + +int +gsl_linalg_PTLQ_svx_T (const gsl_matrix * LQ, + const gsl_vector * tau, + const gsl_permutation * p, + gsl_vector * x) +{ + if (LQ->size1 != LQ->size2) + { + GSL_ERROR ("LQ matrix must be square", GSL_ENOTSQR); + } + else if (LQ->size2 != p->size) + { + GSL_ERROR ("matrix size must match permutation size", GSL_EBADLEN); + } + else if (LQ->size1 != x->size) + { + GSL_ERROR ("matrix size must match solution size", GSL_EBADLEN); + } + else + { + /* compute sol = b^T Q^T */ + + gsl_linalg_LQ_vecQT (LQ, tau, x); + + /* Solve L^T x = sol, storing x inplace in sol */ + + gsl_blas_dtrsv (CblasLower, CblasTrans, CblasNonUnit, LQ, x); + + gsl_permute_vector_inverse (p, x); + + return GSL_SUCCESS; + } +} + + +int +gsl_linalg_PTLQ_LQsolve_T (const gsl_matrix * Q, const gsl_matrix * L, + const gsl_permutation * p, + const gsl_vector * b, + gsl_vector * x) +{ + if (Q->size1 != Q->size2 || L->size1 != L->size2) + { + return GSL_ENOTSQR; + } + else if (Q->size1 != p->size || Q->size1 != L->size1 + || Q->size1 != b->size) + { + return GSL_EBADLEN; + } + else + { + /* compute b' = Q b */ + + gsl_blas_dgemv (CblasNoTrans, 1.0, Q, b, 0.0, x); + + /* Solve L^T x = b', storing x inplace */ + + gsl_blas_dtrsv (CblasLower, CblasTrans, CblasNonUnit, L, x); + + /* Apply permutation to solution in place */ + + gsl_permute_vector_inverse (p, x); + + return GSL_SUCCESS; + } +} + +int +gsl_linalg_PTLQ_Lsolve_T (const gsl_matrix * LQ, + const gsl_permutation * p, + const gsl_vector * b, + gsl_vector * x) +{ + if (LQ->size1 != LQ->size2) + { + GSL_ERROR ("LQ matrix must be square", GSL_ENOTSQR); + } + else if (LQ->size1 != b->size) + { + GSL_ERROR ("matrix size must match b size", GSL_EBADLEN); + } + else if (LQ->size2 != x->size) + { + GSL_ERROR ("matrix size must match x size", GSL_EBADLEN); + } + else if (p->size != x->size) + { + GSL_ERROR ("permutation size must match x size", GSL_EBADLEN); + } + else + { + /* Copy x <- b */ + + gsl_vector_memcpy (x, b); + + /* Solve L^T x = b, storing x inplace */ + + gsl_blas_dtrsv (CblasLower, CblasTrans, CblasNonUnit, LQ, x); + + gsl_permute_vector_inverse (p, x); + + return GSL_SUCCESS; + } +} + + +int +gsl_linalg_PTLQ_Lsvx_T (const gsl_matrix * LQ, + const gsl_permutation * p, + gsl_vector * x) +{ + if (LQ->size1 != LQ->size2) + { + GSL_ERROR ("LQ matrix must be square", GSL_ENOTSQR); + } + else if (LQ->size2 != x->size) + { + GSL_ERROR ("matrix size must match x size", GSL_EBADLEN); + } + else if (p->size != x->size) + { + GSL_ERROR ("permutation size must match x size", GSL_EBADLEN); + } + else + { + /* Solve L^T x = b, storing x inplace */ + + gsl_blas_dtrsv (CblasLower, CblasTrans, CblasNonUnit, LQ, x); + + gsl_permute_vector_inverse (p, x); + + return GSL_SUCCESS; + } +} + + + +/* Update a P^T L Q factorisation for P A= L Q , A' = A + v u^T, + PA' = PA + Pv u^T + + * P^T L' Q' = P^T LQ + v u^T + * = P^T (L + (P v) u^T Q^T) Q + * = P^T (L + (P v) w^T) Q + * + * where w = Q^T u. + * + * Algorithm from Golub and Van Loan, "Matrix Computations", Section + * 12.5 (Updating Matrix Factorizations, Rank-One Changes) + */ + +int +gsl_linalg_PTLQ_update (gsl_matrix * Q, gsl_matrix * L, + const gsl_permutation * p, + const gsl_vector * v, gsl_vector * w) +{ + if (Q->size1 != Q->size2 || L->size1 != L->size2) + { + return GSL_ENOTSQR; + } + else if (L->size1 != Q->size2 || v->size != Q->size2 || w->size != Q->size2) + { + return GSL_EBADLEN; + } + else + { + size_t j, k; + const size_t N = Q->size1; + const size_t M = Q->size2; + double w0; + + /* Apply Given's rotations to reduce w to (|w|, 0, 0, ... , 0) + + J_1^T .... J_(n-1)^T w = +/- |w| e_1 + + simultaneously applied to L, H = J_1^T ... J^T_(n-1) L + so that H is upper Hessenberg. (12.5.2) */ + + for (k = M - 1; k > 0; k--) + { + double c, s; + double wk = gsl_vector_get (w, k); + double wkm1 = gsl_vector_get (w, k - 1); + + gsl_linalg_givens (wkm1, wk, &c, &s); + gsl_linalg_givens_gv (w, k - 1, k, c, s); + apply_givens_lq (M, N, Q, L, k - 1, k, c, s); + } + + w0 = gsl_vector_get (w, 0); + + /* Add in v w^T (Equation 12.5.3) */ + + for (j = 0; j < N; j++) + { + double lj0 = gsl_matrix_get (L, j, 0); + size_t p_j = gsl_permutation_get (p, j); + double vj = gsl_vector_get (v, p_j); + gsl_matrix_set (L, j, 0, lj0 + w0 * vj); + } + + /* Apply Givens transformations L' = G_(n-1)^T ... G_1^T H + Equation 12.5.4 */ + + for (k = 1; k < N; k++) + { + double c, s; + double diag = gsl_matrix_get (L, k - 1, k - 1); + double offdiag = gsl_matrix_get (L, k - 1, k ); + + gsl_linalg_givens (diag, offdiag, &c, &s); + apply_givens_lq (M, N, Q, L, k - 1, k, c, s); + } + + return GSL_SUCCESS; + } +} diff --git a/gsl-2.5/linalg/ptlq.lo b/gsl-2.5/linalg/ptlq.lo new file mode 100644 index 00000000..475505d8 --- /dev/null +++ b/gsl-2.5/linalg/ptlq.lo @@ -0,0 +1,12 @@ +# ptlq.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/ptlq.o' + +# Name of the non-PIC object +non_pic_object='ptlq.o' + diff --git a/gsl-2.5/linalg/qr.c b/gsl-2.5/linalg/qr.c new file mode 100644 index 00000000..d1c45e0b --- /dev/null +++ b/gsl-2.5/linalg/qr.c @@ -0,0 +1,628 @@ +/* linalg/qr.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ + +#include +#include +#include +#include +#include +#include +#include +#include + +#include "apply_givens.c" + +/* Factorise a general M x N matrix A into + * + * A = Q R + * + * where Q is orthogonal (M x M) and R is upper triangular (M x N). + * + * Q is stored as a packed set of Householder transformations in the + * strict lower triangular part of the input matrix. + * + * R is stored in the diagonal and upper triangle of the input matrix. + * + * The full matrix for Q can be obtained as the product + * + * Q = Q_k .. Q_2 Q_1 + * + * where k = MIN(M,N) and + * + * Q_i = (I - tau_i * v_i * v_i') + * + * and where v_i is a Householder vector + * + * v_i = [1, m(i+1,i), m(i+2,i), ... , m(M,i)] + * + * This storage scheme is the same as in LAPACK. */ + +int +gsl_linalg_QR_decomp (gsl_matrix * A, gsl_vector * tau) +{ + const size_t M = A->size1; + const size_t N = A->size2; + + if (tau->size != GSL_MIN (M, N)) + { + GSL_ERROR ("size of tau must be MIN(M,N)", GSL_EBADLEN); + } + else + { + size_t i; + + for (i = 0; i < GSL_MIN (M, N); i++) + { + /* Compute the Householder transformation to reduce the j-th + column of the matrix to a multiple of the j-th unit vector */ + + gsl_vector_view c_full = gsl_matrix_column (A, i); + gsl_vector_view c = gsl_vector_subvector (&(c_full.vector), i, M-i); + + double tau_i = gsl_linalg_householder_transform (&(c.vector)); + + gsl_vector_set (tau, i, tau_i); + + /* Apply the transformation to the remaining columns and + update the norms */ + + if (i + 1 < N) + { + gsl_matrix_view m = gsl_matrix_submatrix (A, i, i + 1, M - i, N - (i + 1)); + gsl_linalg_householder_hm (tau_i, &(c.vector), &(m.matrix)); + } + } + + return GSL_SUCCESS; + } +} + +/* Solves the system A x = b using the QR factorisation, + + * R x = Q^T b + * + * to obtain x. Based on SLATEC code. + */ + +int +gsl_linalg_QR_solve (const gsl_matrix * QR, const gsl_vector * tau, const gsl_vector * b, gsl_vector * x) +{ + if (QR->size1 != QR->size2) + { + GSL_ERROR ("QR matrix must be square", GSL_ENOTSQR); + } + else if (QR->size1 != b->size) + { + GSL_ERROR ("matrix size must match b size", GSL_EBADLEN); + } + else if (QR->size2 != x->size) + { + GSL_ERROR ("matrix size must match solution size", GSL_EBADLEN); + } + else + { + /* Copy x <- b */ + + gsl_vector_memcpy (x, b); + + /* Solve for x */ + + gsl_linalg_QR_svx (QR, tau, x); + + return GSL_SUCCESS; + } +} + +/* Solves the system A x = b in place using the QR factorisation, + + * R x = Q^T b + * + * to obtain x. Based on SLATEC code. + */ + +int +gsl_linalg_QR_svx (const gsl_matrix * QR, const gsl_vector * tau, gsl_vector * x) +{ + + if (QR->size1 != QR->size2) + { + GSL_ERROR ("QR matrix must be square", GSL_ENOTSQR); + } + else if (QR->size1 != x->size) + { + GSL_ERROR ("matrix size must match x/rhs size", GSL_EBADLEN); + } + else + { + /* compute rhs = Q^T b */ + + gsl_linalg_QR_QTvec (QR, tau, x); + + /* Solve R x = rhs, storing x in-place */ + + gsl_blas_dtrsv (CblasUpper, CblasNoTrans, CblasNonUnit, QR, x); + + return GSL_SUCCESS; + } +} + + +/* Find the least squares solution to the overdetermined system + * + * A x = b + * + * for M >= N using the QR factorization A = Q R. + */ + +int +gsl_linalg_QR_lssolve (const gsl_matrix * QR, const gsl_vector * tau, const gsl_vector * b, gsl_vector * x, gsl_vector * residual) +{ + const size_t M = QR->size1; + const size_t N = QR->size2; + + if (M < N) + { + GSL_ERROR ("QR matrix must have M>=N", GSL_EBADLEN); + } + else if (M != b->size) + { + GSL_ERROR ("matrix size must match b size", GSL_EBADLEN); + } + else if (N != x->size) + { + GSL_ERROR ("matrix size must match solution size", GSL_EBADLEN); + } + else if (M != residual->size) + { + GSL_ERROR ("matrix size must match residual size", GSL_EBADLEN); + } + else + { + gsl_matrix_const_view R = gsl_matrix_const_submatrix (QR, 0, 0, N, N); + gsl_vector_view c = gsl_vector_subvector(residual, 0, N); + + gsl_vector_memcpy(residual, b); + + /* compute rhs = Q^T b */ + + gsl_linalg_QR_QTvec (QR, tau, residual); + + /* Solve R x = rhs */ + + gsl_vector_memcpy(x, &(c.vector)); + + gsl_blas_dtrsv (CblasUpper, CblasNoTrans, CblasNonUnit, &(R.matrix), x); + + /* Compute residual = b - A x = Q (Q^T b - R x) */ + + gsl_vector_set_zero(&(c.vector)); + + gsl_linalg_QR_Qvec(QR, tau, residual); + + return GSL_SUCCESS; + } +} + + +int +gsl_linalg_QR_Rsolve (const gsl_matrix * QR, const gsl_vector * b, gsl_vector * x) +{ + if (QR->size1 != QR->size2) + { + GSL_ERROR ("QR matrix must be square", GSL_ENOTSQR); + } + else if (QR->size1 != b->size) + { + GSL_ERROR ("matrix size must match b size", GSL_EBADLEN); + } + else if (QR->size2 != x->size) + { + GSL_ERROR ("matrix size must match x size", GSL_EBADLEN); + } + else + { + /* Copy x <- b */ + + gsl_vector_memcpy (x, b); + + /* Solve R x = b, storing x in-place */ + + gsl_blas_dtrsv (CblasUpper, CblasNoTrans, CblasNonUnit, QR, x); + + return GSL_SUCCESS; + } +} + + +int +gsl_linalg_QR_Rsvx (const gsl_matrix * QR, gsl_vector * x) +{ + if (QR->size1 != QR->size2) + { + GSL_ERROR ("QR matrix must be square", GSL_ENOTSQR); + } + else if (QR->size1 != x->size) + { + GSL_ERROR ("matrix size must match rhs size", GSL_EBADLEN); + } + else + { + /* Solve R x = b, storing x in-place */ + + gsl_blas_dtrsv (CblasUpper, CblasNoTrans, CblasNonUnit, QR, x); + + return GSL_SUCCESS; + } +} + +int +gsl_linalg_R_solve (const gsl_matrix * R, const gsl_vector * b, gsl_vector * x) +{ + if (R->size1 != R->size2) + { + GSL_ERROR ("R matrix must be square", GSL_ENOTSQR); + } + else if (R->size1 != b->size) + { + GSL_ERROR ("matrix size must match b size", GSL_EBADLEN); + } + else if (R->size2 != x->size) + { + GSL_ERROR ("matrix size must match solution size", GSL_EBADLEN); + } + else + { + /* Copy x <- b */ + + gsl_vector_memcpy (x, b); + + /* Solve R x = b, storing x inplace in b */ + + gsl_blas_dtrsv (CblasUpper, CblasNoTrans, CblasNonUnit, R, x); + + return GSL_SUCCESS; + } +} + +int +gsl_linalg_R_svx (const gsl_matrix * R, gsl_vector * x) +{ + if (R->size1 != R->size2) + { + GSL_ERROR ("R matrix must be square", GSL_ENOTSQR); + } + else if (R->size2 != x->size) + { + GSL_ERROR ("matrix size must match solution size", GSL_EBADLEN); + } + else + { + /* Solve R x = b, storing x inplace in b */ + + gsl_blas_dtrsv (CblasUpper, CblasNoTrans, CblasNonUnit, R, x); + + return GSL_SUCCESS; + } +} + + + +/* Form the product Q^T v from a QR factorized matrix + */ + +int +gsl_linalg_QR_QTvec (const gsl_matrix * QR, const gsl_vector * tau, gsl_vector * v) +{ + const size_t M = QR->size1; + const size_t N = QR->size2; + + if (tau->size != GSL_MIN (M, N)) + { + GSL_ERROR ("size of tau must be MIN(M,N)", GSL_EBADLEN); + } + else if (v->size != M) + { + GSL_ERROR ("vector size must be M", GSL_EBADLEN); + } + else + { + size_t i; + + /* compute Q^T v */ + + for (i = 0; i < GSL_MIN (M, N); i++) + { + gsl_vector_const_view c = gsl_matrix_const_column (QR, i); + gsl_vector_const_view h = gsl_vector_const_subvector (&(c.vector), i, M - i); + gsl_vector_view w = gsl_vector_subvector (v, i, M - i); + double ti = gsl_vector_get (tau, i); + gsl_linalg_householder_hv (ti, &(h.vector), &(w.vector)); + } + return GSL_SUCCESS; + } +} + + +int +gsl_linalg_QR_Qvec (const gsl_matrix * QR, const gsl_vector * tau, gsl_vector * v) +{ + const size_t M = QR->size1; + const size_t N = QR->size2; + + if (tau->size != GSL_MIN (M, N)) + { + GSL_ERROR ("size of tau must be MIN(M,N)", GSL_EBADLEN); + } + else if (v->size != M) + { + GSL_ERROR ("vector size must be M", GSL_EBADLEN); + } + else + { + size_t i; + + /* compute Q v */ + + for (i = GSL_MIN (M, N); i-- > 0;) + { + gsl_vector_const_view c = gsl_matrix_const_column (QR, i); + gsl_vector_const_view h = gsl_vector_const_subvector (&(c.vector), + i, M - i); + gsl_vector_view w = gsl_vector_subvector (v, i, M - i); + double ti = gsl_vector_get (tau, i); + gsl_linalg_householder_hv (ti, &h.vector, &w.vector); + } + return GSL_SUCCESS; + } +} + +/* Form the product Q^T A from a QR factorized matrix */ + +int +gsl_linalg_QR_QTmat (const gsl_matrix * QR, const gsl_vector * tau, gsl_matrix * A) +{ + const size_t M = QR->size1; + const size_t N = QR->size2; + + if (tau->size != GSL_MIN (M, N)) + { + GSL_ERROR ("size of tau must be MIN(M,N)", GSL_EBADLEN); + } + else if (A->size1 != M) + { + GSL_ERROR ("matrix must have M rows", GSL_EBADLEN); + } + else + { + size_t i; + + /* compute Q^T A */ + + for (i = 0; i < GSL_MIN (M, N); i++) + { + gsl_vector_const_view c = gsl_matrix_const_column (QR, i); + gsl_vector_const_view h = gsl_vector_const_subvector (&(c.vector), i, M - i); + gsl_matrix_view m = gsl_matrix_submatrix(A, i, 0, M - i, A->size2); + double ti = gsl_vector_get (tau, i); + gsl_linalg_householder_hm (ti, &(h.vector), &(m.matrix)); + } + return GSL_SUCCESS; + } +} + +/* Form the product A Q from a QR factorized matrix */ +int +gsl_linalg_QR_matQ (const gsl_matrix * QR, const gsl_vector * tau, gsl_matrix * A) +{ + const size_t M = QR->size1; + const size_t N = QR->size2; + + if (tau->size != GSL_MIN (M, N)) + { + GSL_ERROR ("size of tau must be MIN(M,N)", GSL_EBADLEN); + } + else if (A->size2 != M) + { + GSL_ERROR ("matrix must have M columns", GSL_EBADLEN); + } + else + { + size_t i; + + /* compute A Q */ + + for (i = 0; i < GSL_MIN (M, N); i++) + { + gsl_vector_const_view c = gsl_matrix_const_column (QR, i); + gsl_vector_const_view h = gsl_vector_const_subvector (&(c.vector), i, M - i); + gsl_matrix_view m = gsl_matrix_submatrix(A, 0, i, A->size1, M - i); + double ti = gsl_vector_get (tau, i); + gsl_linalg_householder_mh (ti, &(h.vector), &(m.matrix)); + } + return GSL_SUCCESS; + } +} + +/* Form the orthogonal matrix Q from the packed QR matrix */ + +int +gsl_linalg_QR_unpack (const gsl_matrix * QR, const gsl_vector * tau, gsl_matrix * Q, gsl_matrix * R) +{ + const size_t M = QR->size1; + const size_t N = QR->size2; + + if (Q->size1 != M || Q->size2 != M) + { + GSL_ERROR ("Q matrix must be M x M", GSL_ENOTSQR); + } + else if (R->size1 != M || R->size2 != N) + { + GSL_ERROR ("R matrix must be M x N", GSL_ENOTSQR); + } + else if (tau->size != GSL_MIN (M, N)) + { + GSL_ERROR ("size of tau must be MIN(M,N)", GSL_EBADLEN); + } + else + { + size_t i, j; + + /* Initialize Q to the identity */ + + gsl_matrix_set_identity (Q); + + for (i = GSL_MIN (M, N); i-- > 0;) + { + gsl_vector_const_view c = gsl_matrix_const_column (QR, i); + gsl_vector_const_view h = gsl_vector_const_subvector (&c.vector, + i, M - i); + gsl_matrix_view m = gsl_matrix_submatrix (Q, i, i, M - i, M - i); + double ti = gsl_vector_get (tau, i); + gsl_linalg_householder_hm (ti, &h.vector, &m.matrix); + } + + /* Form the right triangular matrix R from a packed QR matrix */ + + for (i = 0; i < M; i++) + { + for (j = 0; j < i && j < N; j++) + gsl_matrix_set (R, i, j, 0.0); + + for (j = i; j < N; j++) + gsl_matrix_set (R, i, j, gsl_matrix_get (QR, i, j)); + } + + return GSL_SUCCESS; + } +} + + +/* Update a QR factorisation for A= Q R , A' = A + u v^T, + + * Q' R' = QR + u v^T + * = Q (R + Q^T u v^T) + * = Q (R + w v^T) + * + * where w = Q^T u. + * + * Algorithm from Golub and Van Loan, "Matrix Computations", Section + * 12.5 (Updating Matrix Factorizations, Rank-One Changes) + */ + +int +gsl_linalg_QR_update (gsl_matrix * Q, gsl_matrix * R, + gsl_vector * w, const gsl_vector * v) +{ + const size_t M = R->size1; + const size_t N = R->size2; + + if (Q->size1 != M || Q->size2 != M) + { + GSL_ERROR ("Q matrix must be M x M if R is M x N", GSL_ENOTSQR); + } + else if (w->size != M) + { + GSL_ERROR ("w must be length M if R is M x N", GSL_EBADLEN); + } + else if (v->size != N) + { + GSL_ERROR ("v must be length N if R is M x N", GSL_EBADLEN); + } + else + { + size_t j, k; + double w0; + + /* Apply Given's rotations to reduce w to (|w|, 0, 0, ... , 0) + + J_1^T .... J_(n-1)^T w = +/- |w| e_1 + + simultaneously applied to R, H = J_1^T ... J^T_(n-1) R + so that H is upper Hessenberg. (12.5.2) */ + + for (k = M - 1; k > 0; k--) /* loop from k = M-1 to 1 */ + { + double c, s; + double wk = gsl_vector_get (w, k); + double wkm1 = gsl_vector_get (w, k - 1); + + gsl_linalg_givens (wkm1, wk, &c, &s); + gsl_linalg_givens_gv (w, k - 1, k, c, s); + apply_givens_qr (M, N, Q, R, k - 1, k, c, s); + } + + w0 = gsl_vector_get (w, 0); + + /* Add in w v^T (Equation 12.5.3) */ + + for (j = 0; j < N; j++) + { + double r0j = gsl_matrix_get (R, 0, j); + double vj = gsl_vector_get (v, j); + gsl_matrix_set (R, 0, j, r0j + w0 * vj); + } + + /* Apply Givens transformations R' = G_(n-1)^T ... G_1^T H + Equation 12.5.4 */ + + for (k = 1; k < GSL_MIN(M,N+1); k++) + { + double c, s; + double diag = gsl_matrix_get (R, k - 1, k - 1); + double offdiag = gsl_matrix_get (R, k, k - 1); + + gsl_linalg_givens (diag, offdiag, &c, &s); + apply_givens_qr (M, N, Q, R, k - 1, k, c, s); + + gsl_matrix_set (R, k, k - 1, 0.0); /* exact zero of G^T */ + } + + return GSL_SUCCESS; + } +} + +int +gsl_linalg_QR_QRsolve (gsl_matrix * Q, gsl_matrix * R, const gsl_vector * b, gsl_vector * x) +{ + const size_t M = R->size1; + const size_t N = R->size2; + + if (M != N) + { + return GSL_ENOTSQR; + } + else if (Q->size1 != M || b->size != M || x->size != M) + { + return GSL_EBADLEN; + } + else + { + /* compute sol = Q^T b */ + + gsl_blas_dgemv (CblasTrans, 1.0, Q, b, 0.0, x); + + /* Solve R x = sol, storing x in-place */ + + gsl_blas_dtrsv (CblasUpper, CblasNoTrans, CblasNonUnit, R, x); + + return GSL_SUCCESS; + } +} diff --git a/gsl-2.5/linalg/qr.lo b/gsl-2.5/linalg/qr.lo new file mode 100644 index 00000000..36e02dcc --- /dev/null +++ b/gsl-2.5/linalg/qr.lo @@ -0,0 +1,12 @@ +# qr.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/qr.o' + +# Name of the non-PIC object +non_pic_object='qr.o' + diff --git a/gsl-2.5/linalg/qrpt.c b/gsl-2.5/linalg/qrpt.c new file mode 100644 index 00000000..df8b062a --- /dev/null +++ b/gsl-2.5/linalg/qrpt.c @@ -0,0 +1,643 @@ +/* linalg/qrpt.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#include "apply_givens.c" + +/* Factorise a general M x N matrix A into + * + * A P = Q R + * + * where Q is orthogonal (M x M) and R is upper triangular (M x N). + * When A is rank deficient, r = rank(A) < n, then the permutation is + * used to ensure that the lower n - r rows of R are zero and the first + * r columns of Q form an orthonormal basis for A. + * + * Q is stored as a packed set of Householder transformations in the + * strict lower triangular part of the input matrix. + * + * R is stored in the diagonal and upper triangle of the input matrix. + * + * P: column j of P is column k of the identity matrix, where k = + * permutation->data[j] + * + * The full matrix for Q can be obtained as the product + * + * Q = Q_k .. Q_2 Q_1 + * + * where k = MIN(M,N) and + * + * Q_i = (I - tau_i * v_i * v_i') + * + * and where v_i is a Householder vector + * + * v_i = [1, m(i+1,i), m(i+2,i), ... , m(M,i)] + * + * This storage scheme is the same as in LAPACK. See LAPACK's + * dgeqpf.f for details. + * + */ + +int +gsl_linalg_QRPT_decomp (gsl_matrix * A, gsl_vector * tau, gsl_permutation * p, int *signum, gsl_vector * norm) +{ + const size_t M = A->size1; + const size_t N = A->size2; + + if (tau->size != GSL_MIN (M, N)) + { + GSL_ERROR ("size of tau must be MIN(M,N)", GSL_EBADLEN); + } + else if (p->size != N) + { + GSL_ERROR ("permutation size must be N", GSL_EBADLEN); + } + else if (norm->size != N) + { + GSL_ERROR ("norm size must be N", GSL_EBADLEN); + } + else + { + size_t i; + + *signum = 1; + + gsl_permutation_init (p); /* set to identity */ + + /* Compute column norms and store in workspace */ + + for (i = 0; i < N; i++) + { + gsl_vector_view c = gsl_matrix_column (A, i); + double x = gsl_blas_dnrm2 (&c.vector); + gsl_vector_set (norm, i, x); + } + + for (i = 0; i < GSL_MIN (M, N); i++) + { + /* Bring the column of largest norm into the pivot position */ + + double max_norm = gsl_vector_get(norm, i); + size_t j, kmax = i; + + for (j = i + 1; j < N; j++) + { + double x = gsl_vector_get (norm, j); + + if (x > max_norm) + { + max_norm = x; + kmax = j; + } + } + + if (kmax != i) + { + gsl_matrix_swap_columns (A, i, kmax); + gsl_permutation_swap (p, i, kmax); + gsl_vector_swap_elements(norm,i,kmax); + + (*signum) = -(*signum); + } + + /* Compute the Householder transformation to reduce the j-th + column of the matrix to a multiple of the j-th unit vector */ + + { + gsl_vector_view c_full = gsl_matrix_column (A, i); + gsl_vector_view c = gsl_vector_subvector (&c_full.vector, + i, M - i); + double tau_i = gsl_linalg_householder_transform (&c.vector); + + gsl_vector_set (tau, i, tau_i); + + /* Apply the transformation to the remaining columns */ + + if (i + 1 < N) + { + gsl_matrix_view m = gsl_matrix_submatrix (A, i, i + 1, M - i, N - (i+1)); + + gsl_linalg_householder_hm (tau_i, &c.vector, &m.matrix); + } + } + + /* Update the norms of the remaining columns too */ + + if (i + 1 < M) + { + for (j = i + 1; j < N; j++) + { + double x = gsl_vector_get (norm, j); + + if (x > 0.0) + { + double y = 0; + double temp= gsl_matrix_get (A, i, j) / x; + + if (fabs (temp) >= 1) + y = 0.0; + else + y = x * sqrt (1 - temp * temp); + + /* recompute norm to prevent loss of accuracy */ + + if (fabs (y / x) < sqrt (20.0) * GSL_SQRT_DBL_EPSILON) + { + gsl_vector_view c_full = gsl_matrix_column (A, j); + gsl_vector_view c = + gsl_vector_subvector(&c_full.vector, + i+1, M - (i+1)); + y = gsl_blas_dnrm2 (&c.vector); + } + + gsl_vector_set (norm, j, y); + } + } + } + } + + return GSL_SUCCESS; + } +} + +int +gsl_linalg_QRPT_decomp2 (const gsl_matrix * A, gsl_matrix * q, gsl_matrix * r, gsl_vector * tau, gsl_permutation * p, int *signum, gsl_vector * norm) +{ + const size_t M = A->size1; + const size_t N = A->size2; + + if (q->size1 != M || q->size2 !=M) + { + GSL_ERROR ("q must be M x M", GSL_EBADLEN); + } + else if (r->size1 != M || r->size2 !=N) + { + GSL_ERROR ("r must be M x N", GSL_EBADLEN); + } + else if (tau->size != GSL_MIN (M, N)) + { + GSL_ERROR ("size of tau must be MIN(M,N)", GSL_EBADLEN); + } + else if (p->size != N) + { + GSL_ERROR ("permutation size must be N", GSL_EBADLEN); + } + else if (norm->size != N) + { + GSL_ERROR ("norm size must be N", GSL_EBADLEN); + } + + gsl_matrix_memcpy (r, A); + + gsl_linalg_QRPT_decomp (r, tau, p, signum, norm); + + /* FIXME: aliased arguments depends on behavior of unpack routine! */ + + gsl_linalg_QR_unpack (r, tau, q, r); + + return GSL_SUCCESS; +} + + +/* Solves the system A x = b using the Q R P^T factorisation, + + R z = Q^T b + + x = P z; + + to obtain x. Based on SLATEC code. */ + +int +gsl_linalg_QRPT_solve (const gsl_matrix * QR, + const gsl_vector * tau, + const gsl_permutation * p, + const gsl_vector * b, + gsl_vector * x) +{ + if (QR->size1 != QR->size2) + { + GSL_ERROR ("QR matrix must be square", GSL_ENOTSQR); + } + else if (QR->size1 != p->size) + { + GSL_ERROR ("matrix size must match permutation size", GSL_EBADLEN); + } + else if (QR->size1 != b->size) + { + GSL_ERROR ("matrix size must match b size", GSL_EBADLEN); + } + else if (QR->size2 != x->size) + { + GSL_ERROR ("matrix size must match solution size", GSL_EBADLEN); + } + else + { + gsl_vector_memcpy (x, b); + + gsl_linalg_QRPT_svx (QR, tau, p, x); + + return GSL_SUCCESS; + } +} + +int +gsl_linalg_QRPT_svx (const gsl_matrix * QR, + const gsl_vector * tau, + const gsl_permutation * p, + gsl_vector * x) +{ + if (QR->size1 != QR->size2) + { + GSL_ERROR ("QR matrix must be square", GSL_ENOTSQR); + } + else if (QR->size1 != p->size) + { + GSL_ERROR ("matrix size must match permutation size", GSL_EBADLEN); + } + else if (QR->size2 != x->size) + { + GSL_ERROR ("matrix size must match solution size", GSL_EBADLEN); + } + else + { + /* compute sol = Q^T b */ + + gsl_linalg_QR_QTvec (QR, tau, x); + + /* Solve R x = sol, storing x inplace in sol */ + + gsl_blas_dtrsv (CblasUpper, CblasNoTrans, CblasNonUnit, QR, x); + + gsl_permute_vector_inverse (p, x); + + return GSL_SUCCESS; + } +} + +/* Find the least squares solution to the overdetermined system + * + * A x = b + * + * for M >= N using the QRPT factorization A P = Q R. Assumes + * A has full column rank. + */ + +int +gsl_linalg_QRPT_lssolve (const gsl_matrix * QR, const gsl_vector * tau, const gsl_permutation * p, + const gsl_vector * b, gsl_vector * x, gsl_vector * residual) +{ + const size_t N = QR->size2; + int status = gsl_linalg_QRPT_lssolve2(QR, tau, p, b, N, x, residual); + return status; +} + +/* Find the least squares solution to the overdetermined system + * + * A x = b + * + * for M >= N using the QRPT factorization A P = Q R, where A + * is assumed rank deficient with a given rank. + */ + +int +gsl_linalg_QRPT_lssolve2 (const gsl_matrix * QR, const gsl_vector * tau, const gsl_permutation * p, + const gsl_vector * b, const size_t rank, gsl_vector * x, gsl_vector * residual) +{ + const size_t M = QR->size1; + const size_t N = QR->size2; + + if (M < N) + { + GSL_ERROR ("QR matrix must have M>=N", GSL_EBADLEN); + } + else if (M != b->size) + { + GSL_ERROR ("matrix size must match b size", GSL_EBADLEN); + } + else if (rank == 0 || rank > N) + { + GSL_ERROR ("rank must have 0 < rank <= N", GSL_EBADLEN); + } + else if (N != x->size) + { + GSL_ERROR ("matrix size must match solution size", GSL_EBADLEN); + } + else if (M != residual->size) + { + GSL_ERROR ("matrix size must match residual size", GSL_EBADLEN); + } + else + { + gsl_matrix_const_view R11 = gsl_matrix_const_submatrix (QR, 0, 0, rank, rank); + gsl_vector_view QTb1 = gsl_vector_subvector(residual, 0, rank); + gsl_vector_view x1 = gsl_vector_subvector(x, 0, rank); + size_t i; + + /* compute work = Q^T b */ + gsl_vector_memcpy(residual, b); + gsl_linalg_QR_QTvec (QR, tau, residual); + + /* solve R_{11} x(1:r) = [Q^T b](1:r) */ + gsl_vector_memcpy(&(x1.vector), &(QTb1.vector)); + gsl_blas_dtrsv (CblasUpper, CblasNoTrans, CblasNonUnit, &(R11.matrix), &(x1.vector)); + + /* x(r+1:N) = 0 */ + for (i = rank; i < N; ++i) + gsl_vector_set(x, i, 0.0); + + /* compute x = P y */ + gsl_permute_vector_inverse (p, x); + + /* compute residual = b - A x = Q (Q^T b - R x) */ + gsl_vector_set_zero(&(QTb1.vector)); + gsl_linalg_QR_Qvec(QR, tau, residual); + + return GSL_SUCCESS; + } +} + +int +gsl_linalg_QRPT_QRsolve (const gsl_matrix * Q, const gsl_matrix * R, + const gsl_permutation * p, + const gsl_vector * b, + gsl_vector * x) +{ + if (Q->size1 != Q->size2 || R->size1 != R->size2) + { + return GSL_ENOTSQR; + } + else if (Q->size1 != p->size || Q->size1 != R->size1 + || Q->size1 != b->size) + { + return GSL_EBADLEN; + } + else + { + /* compute b' = Q^T b */ + + gsl_blas_dgemv (CblasTrans, 1.0, Q, b, 0.0, x); + + /* Solve R x = b', storing x inplace */ + + gsl_blas_dtrsv (CblasUpper, CblasNoTrans, CblasNonUnit, R, x); + + /* Apply permutation to solution in place */ + + gsl_permute_vector_inverse (p, x); + + return GSL_SUCCESS; + } +} + +int +gsl_linalg_QRPT_Rsolve (const gsl_matrix * QR, + const gsl_permutation * p, + const gsl_vector * b, + gsl_vector * x) +{ + if (QR->size1 != QR->size2) + { + GSL_ERROR ("QR matrix must be square", GSL_ENOTSQR); + } + else if (QR->size1 != b->size) + { + GSL_ERROR ("matrix size must match b size", GSL_EBADLEN); + } + else if (QR->size2 != x->size) + { + GSL_ERROR ("matrix size must match x size", GSL_EBADLEN); + } + else if (p->size != x->size) + { + GSL_ERROR ("permutation size must match x size", GSL_EBADLEN); + } + else + { + /* Copy x <- b */ + + gsl_vector_memcpy (x, b); + + /* Solve R x = b, storing x inplace */ + + gsl_blas_dtrsv (CblasUpper, CblasNoTrans, CblasNonUnit, QR, x); + + gsl_permute_vector_inverse (p, x); + + return GSL_SUCCESS; + } +} + + +int +gsl_linalg_QRPT_Rsvx (const gsl_matrix * QR, + const gsl_permutation * p, + gsl_vector * x) +{ + if (QR->size1 != QR->size2) + { + GSL_ERROR ("QR matrix must be square", GSL_ENOTSQR); + } + else if (QR->size2 != x->size) + { + GSL_ERROR ("matrix size must match x size", GSL_EBADLEN); + } + else if (p->size != x->size) + { + GSL_ERROR ("permutation size must match x size", GSL_EBADLEN); + } + else + { + /* Solve R x = b, storing x inplace */ + + gsl_blas_dtrsv (CblasUpper, CblasNoTrans, CblasNonUnit, QR, x); + + gsl_permute_vector_inverse (p, x); + + return GSL_SUCCESS; + } +} + + + +/* Update a Q R P^T factorisation for A P= Q R , A' = A + u v^T, + + Q' R' P^-1 = QR P^-1 + u v^T + = Q (R + Q^T u v^T P ) P^-1 + = Q (R + w v^T P) P^-1 + + where w = Q^T u. + + Algorithm from Golub and Van Loan, "Matrix Computations", Section + 12.5 (Updating Matrix Factorizations, Rank-One Changes) */ + +int +gsl_linalg_QRPT_update (gsl_matrix * Q, gsl_matrix * R, + const gsl_permutation * p, + gsl_vector * w, const gsl_vector * v) +{ + const size_t M = R->size1; + const size_t N = R->size2; + + if (Q->size1 != M || Q->size2 != M) + { + GSL_ERROR ("Q matrix must be M x M if R is M x N", GSL_ENOTSQR); + } + else if (w->size != M) + { + GSL_ERROR ("w must be length M if R is M x N", GSL_EBADLEN); + } + else if (v->size != N) + { + GSL_ERROR ("v must be length N if R is M x N", GSL_EBADLEN); + } + else + { + size_t j, k; + double w0; + + /* Apply Given's rotations to reduce w to (|w|, 0, 0, ... , 0) + + J_1^T .... J_(n-1)^T w = +/- |w| e_1 + + simultaneously applied to R, H = J_1^T ... J^T_(n-1) R + so that H is upper Hessenberg. (12.5.2) */ + + for (k = M - 1; k > 0; k--) + { + double c, s; + double wk = gsl_vector_get (w, k); + double wkm1 = gsl_vector_get (w, k - 1); + + gsl_linalg_givens (wkm1, wk, &c, &s); + gsl_linalg_givens_gv (w, k - 1, k, c, s); + apply_givens_qr (M, N, Q, R, k - 1, k, c, s); + } + + w0 = gsl_vector_get (w, 0); + + /* Add in w v^T (Equation 12.5.3) */ + + for (j = 0; j < N; j++) + { + double r0j = gsl_matrix_get (R, 0, j); + size_t p_j = gsl_permutation_get (p, j); + double vj = gsl_vector_get (v, p_j); + gsl_matrix_set (R, 0, j, r0j + w0 * vj); + } + + /* Apply Givens transformations R' = G_(n-1)^T ... G_1^T H + Equation 12.5.4 */ + + for (k = 1; k < GSL_MIN(M,N+1); k++) + { + double c, s; + double diag = gsl_matrix_get (R, k - 1, k - 1); + double offdiag = gsl_matrix_get (R, k, k - 1); + + gsl_linalg_givens (diag, offdiag, &c, &s); + apply_givens_qr (M, N, Q, R, k - 1, k, c, s); + + gsl_matrix_set (R, k, k - 1, 0.0); /* exact zero of G^T */ + } + + return GSL_SUCCESS; + } +} + +/* +gsl_linalg_QRPT_rank() + Estimate rank of triangular matrix from QRPT decomposition + +Inputs: QR - QRPT decomposed matrix + tol - tolerance for rank determination; if < 0, + a default value is used: + 20 * (M + N) * eps(max(|diag(R)|)) + +Return: rank estimate +*/ + +size_t +gsl_linalg_QRPT_rank (const gsl_matrix * QR, const double tol) +{ + const size_t M = QR->size1; + const size_t N = QR->size2; + gsl_vector_const_view diag = gsl_matrix_const_diagonal(QR); + double eps; + size_t i; + size_t r = 0; + + if (tol < 0.0) + { + double min, max, absmax; + int ee; + + gsl_vector_minmax(&diag.vector, &min, &max); + absmax = GSL_MAX(fabs(min), fabs(max)); + ee = (int) (log(absmax) / M_LN2); /* can't use log2 since its not ANSI */ + + eps = 20.0 * (M + N) * pow(2.0, (double) ee) * GSL_DBL_EPSILON; + } + else + eps = tol; + + /* count number of diagonal elements with |di| > eps */ + for (i = 0; i < GSL_MIN(M, N); ++i) + { + double di = gsl_vector_get(&diag.vector, i); + if (fabs(di) > eps) + ++r; + } + + return r; +} + +int +gsl_linalg_QRPT_rcond(const gsl_matrix * QR, double * rcond, gsl_vector * work) +{ + const size_t M = QR->size1; + const size_t N = QR->size2; + + if (M < N) + { + GSL_ERROR ("M must be >= N", GSL_EBADLEN); + } + else if (work->size != 3 * N) + { + GSL_ERROR ("work vector must have length 3*N", GSL_EBADLEN); + } + else + { + gsl_matrix_const_view R = gsl_matrix_const_submatrix (QR, 0, 0, N, N); + int status; + + status = gsl_linalg_tri_upper_rcond(&R.matrix, rcond, work); + + return status; + } +} diff --git a/gsl-2.5/linalg/qrpt.lo b/gsl-2.5/linalg/qrpt.lo new file mode 100644 index 00000000..6daf18af --- /dev/null +++ b/gsl-2.5/linalg/qrpt.lo @@ -0,0 +1,12 @@ +# qrpt.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/qrpt.o' + +# Name of the non-PIC object +non_pic_object='qrpt.o' + diff --git a/gsl-2.5/linalg/svd.c b/gsl-2.5/linalg/svd.c new file mode 100644 index 00000000..78acb2f5 --- /dev/null +++ b/gsl-2.5/linalg/svd.c @@ -0,0 +1,717 @@ +/* linalg/svd.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2004, 2007, 2010 Gerard Jungman, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include +#include + +#include + +#include "svdstep.c" + +/* Factorise a general M x N matrix A into, + * + * A = U D V^T + * + * where U is a column-orthogonal M x N matrix (U^T U = I), + * D is a diagonal N x N matrix, + * and V is an N x N orthogonal matrix (V^T V = V V^T = I) + * + * U is stored in the original matrix A, which has the same size + * + * V is stored as a separate matrix (not V^T). You must take the + * transpose to form the product above. + * + * The diagonal matrix D is stored in the vector S, D_ii = S_i + */ + +int +gsl_linalg_SV_decomp (gsl_matrix * A, gsl_matrix * V, gsl_vector * S, + gsl_vector * work) +{ + size_t a, b, i, j, iter; + + const size_t M = A->size1; + const size_t N = A->size2; + const size_t K = GSL_MIN (M, N); + + if (M < N) + { + GSL_ERROR ("svd of MxN matrix, Msize1 != N) + { + GSL_ERROR ("square matrix V must match second dimension of matrix A", + GSL_EBADLEN); + } + else if (V->size1 != V->size2) + { + GSL_ERROR ("matrix V must be square", GSL_ENOTSQR); + } + else if (S->size != N) + { + GSL_ERROR ("length of vector S must match second dimension of matrix A", + GSL_EBADLEN); + } + else if (work->size != N) + { + GSL_ERROR ("length of workspace must match second dimension of matrix A", + GSL_EBADLEN); + } + + /* Handle the case of N = 1 (SVD of a column vector) */ + + if (N == 1) + { + gsl_vector_view column = gsl_matrix_column (A, 0); + double norm = gsl_blas_dnrm2 (&column.vector); + + gsl_vector_set (S, 0, norm); + gsl_matrix_set (V, 0, 0, 1.0); + + if (norm != 0.0) + { + gsl_blas_dscal (1.0/norm, &column.vector); + } + + return GSL_SUCCESS; + } + + { + gsl_vector_view f = gsl_vector_subvector (work, 0, K - 1); + + /* bidiagonalize matrix A, unpack A into U S V */ + + gsl_linalg_bidiag_decomp (A, S, &f.vector); + gsl_linalg_bidiag_unpack2 (A, S, &f.vector, V); + + /* apply reduction steps to B=(S,Sd) */ + + chop_small_elements (S, &f.vector); + + /* Progressively reduce the matrix until it is diagonal */ + + b = N - 1; + iter = 0; + + while (b > 0) + { + double fbm1 = gsl_vector_get (&f.vector, b - 1); + + if (fbm1 == 0.0 || gsl_isnan (fbm1)) + { + b--; + continue; + } + + /* Find the largest unreduced block (a,b) starting from b + and working backwards */ + + a = b - 1; + + while (a > 0) + { + double fam1 = gsl_vector_get (&f.vector, a - 1); + + if (fam1 == 0.0 || gsl_isnan (fam1)) + { + break; + } + + a--; + } + + iter++; + + if (iter > 100 * N) + { + GSL_ERROR("SVD decomposition failed to converge", GSL_EMAXITER); + } + + + { + const size_t n_block = b - a + 1; + gsl_vector_view S_block = gsl_vector_subvector (S, a, n_block); + gsl_vector_view f_block = gsl_vector_subvector (&f.vector, a, n_block - 1); + + gsl_matrix_view U_block = + gsl_matrix_submatrix (A, 0, a, A->size1, n_block); + gsl_matrix_view V_block = + gsl_matrix_submatrix (V, 0, a, V->size1, n_block); + + int rescale = 0; + double scale = 1; + double norm = 0; + + /* Find the maximum absolute values of the diagonal and subdiagonal */ + + for (i = 0; i < n_block; i++) + { + double s_i = gsl_vector_get (&S_block.vector, i); + double a = fabs(s_i); + if (a > norm) norm = a; + } + + for (i = 0; i < n_block - 1; i++) + { + double f_i = gsl_vector_get (&f_block.vector, i); + double a = fabs(f_i); + if (a > norm) norm = a; + } + + /* Temporarily scale the submatrix if necessary */ + + if (norm > GSL_SQRT_DBL_MAX) + { + scale = (norm / GSL_SQRT_DBL_MAX); + rescale = 1; + } + else if (norm < GSL_SQRT_DBL_MIN && norm > 0) + { + scale = (norm / GSL_SQRT_DBL_MIN); + rescale = 1; + } + + if (rescale) + { + gsl_blas_dscal(1.0 / scale, &S_block.vector); + gsl_blas_dscal(1.0 / scale, &f_block.vector); + } + + /* Perform the implicit QR step */ + + qrstep (&S_block.vector, &f_block.vector, &U_block.matrix, &V_block.matrix); + /* remove any small off-diagonal elements */ + + chop_small_elements (&S_block.vector, &f_block.vector); + + /* Undo the scaling if needed */ + + if (rescale) + { + gsl_blas_dscal(scale, &S_block.vector); + gsl_blas_dscal(scale, &f_block.vector); + } + } + + } + } + + /* Make singular values positive by reflections if necessary */ + + for (j = 0; j < K; j++) + { + double Sj = gsl_vector_get (S, j); + + if (Sj < 0.0) + { + for (i = 0; i < N; i++) + { + double Vij = gsl_matrix_get (V, i, j); + gsl_matrix_set (V, i, j, -Vij); + } + + gsl_vector_set (S, j, -Sj); + } + } + + /* Sort singular values into decreasing order */ + + for (i = 0; i < K; i++) + { + double S_max = gsl_vector_get (S, i); + size_t i_max = i; + + for (j = i + 1; j < K; j++) + { + double Sj = gsl_vector_get (S, j); + + if (Sj > S_max) + { + S_max = Sj; + i_max = j; + } + } + + if (i_max != i) + { + /* swap eigenvalues */ + gsl_vector_swap_elements (S, i, i_max); + + /* swap eigenvectors */ + gsl_matrix_swap_columns (A, i, i_max); + gsl_matrix_swap_columns (V, i, i_max); + } + } + + return GSL_SUCCESS; +} + + +/* Modified algorithm which is better for M>>N */ + +int +gsl_linalg_SV_decomp_mod (gsl_matrix * A, + gsl_matrix * X, + gsl_matrix * V, gsl_vector * S, gsl_vector * work) +{ + size_t i, j; + + const size_t M = A->size1; + const size_t N = A->size2; + + if (M < N) + { + GSL_ERROR ("svd of MxN matrix, Msize1 != N) + { + GSL_ERROR ("square matrix V must match second dimension of matrix A", + GSL_EBADLEN); + } + else if (V->size1 != V->size2) + { + GSL_ERROR ("matrix V must be square", GSL_ENOTSQR); + } + else if (X->size1 != N) + { + GSL_ERROR ("square matrix X must match second dimension of matrix A", + GSL_EBADLEN); + } + else if (X->size1 != X->size2) + { + GSL_ERROR ("matrix X must be square", GSL_ENOTSQR); + } + else if (S->size != N) + { + GSL_ERROR ("length of vector S must match second dimension of matrix A", + GSL_EBADLEN); + } + else if (work->size != N) + { + GSL_ERROR ("length of workspace must match second dimension of matrix A", + GSL_EBADLEN); + } + + if (N == 1) + { + gsl_vector_view column = gsl_matrix_column (A, 0); + double norm = gsl_blas_dnrm2 (&column.vector); + + gsl_vector_set (S, 0, norm); + gsl_matrix_set (V, 0, 0, 1.0); + + if (norm != 0.0) + { + gsl_blas_dscal (1.0/norm, &column.vector); + } + + return GSL_SUCCESS; + } + + /* Convert A into an upper triangular matrix R */ + + for (i = 0; i < N; i++) + { + gsl_vector_view c = gsl_matrix_column (A, i); + gsl_vector_view v = gsl_vector_subvector (&c.vector, i, M - i); + double tau_i = gsl_linalg_householder_transform (&v.vector); + + /* Apply the transformation to the remaining columns */ + + if (i + 1 < N) + { + gsl_matrix_view m = + gsl_matrix_submatrix (A, i, i + 1, M - i, N - (i + 1)); + gsl_linalg_householder_hm (tau_i, &v.vector, &m.matrix); + } + + gsl_vector_set (S, i, tau_i); + } + + /* Copy the upper triangular part of A into X */ + + for (i = 0; i < N; i++) + { + for (j = 0; j < i; j++) + { + gsl_matrix_set (X, i, j, 0.0); + } + + { + double Aii = gsl_matrix_get (A, i, i); + gsl_matrix_set (X, i, i, Aii); + } + + for (j = i + 1; j < N; j++) + { + double Aij = gsl_matrix_get (A, i, j); + gsl_matrix_set (X, i, j, Aij); + } + } + + /* Convert A into an orthogonal matrix L */ + + for (j = N; j-- > 0;) + { + /* Householder column transformation to accumulate L */ + double tj = gsl_vector_get (S, j); + gsl_matrix_view m = gsl_matrix_submatrix (A, j, j, M - j, N - j); + gsl_linalg_householder_hm1 (tj, &m.matrix); + } + + /* unpack R into X V S */ + + gsl_linalg_SV_decomp (X, V, S, work); + + /* Multiply L by X, to obtain U = L X, stored in U */ + + { + gsl_vector_view sum = gsl_vector_subvector (work, 0, N); + + for (i = 0; i < M; i++) + { + gsl_vector_view L_i = gsl_matrix_row (A, i); + gsl_vector_set_zero (&sum.vector); + + for (j = 0; j < N; j++) + { + double Lij = gsl_vector_get (&L_i.vector, j); + gsl_vector_view X_j = gsl_matrix_row (X, j); + gsl_blas_daxpy (Lij, &X_j.vector, &sum.vector); + } + + gsl_vector_memcpy (&L_i.vector, &sum.vector); + } + } + + return GSL_SUCCESS; +} + + +/* Solves the system A x = b using the SVD factorization + * + * A = U S V^T + * + * to obtain x. For M x N systems it finds the solution in the least + * squares sense. + */ + +int +gsl_linalg_SV_solve (const gsl_matrix * U, + const gsl_matrix * V, + const gsl_vector * S, + const gsl_vector * b, gsl_vector * x) +{ + if (U->size1 != b->size) + { + GSL_ERROR ("first dimension of matrix U must size of vector b", + GSL_EBADLEN); + } + else if (U->size2 != S->size) + { + GSL_ERROR ("length of vector S must match second dimension of matrix U", + GSL_EBADLEN); + } + else if (V->size1 != V->size2) + { + GSL_ERROR ("matrix V must be square", GSL_ENOTSQR); + } + else if (S->size != V->size1) + { + GSL_ERROR ("length of vector S must match size of matrix V", + GSL_EBADLEN); + } + else if (V->size2 != x->size) + { + GSL_ERROR ("size of matrix V must match size of vector x", GSL_EBADLEN); + } + else + { + const size_t N = U->size2; + size_t i; + + gsl_vector *w = gsl_vector_calloc (N); + + gsl_blas_dgemv (CblasTrans, 1.0, U, b, 0.0, w); + + for (i = 0; i < N; i++) + { + double wi = gsl_vector_get (w, i); + double alpha = gsl_vector_get (S, i); + if (alpha != 0) + alpha = 1.0 / alpha; + gsl_vector_set (w, i, alpha * wi); + } + + gsl_blas_dgemv (CblasNoTrans, 1.0, V, w, 0.0, x); + + gsl_vector_free (w); + + return GSL_SUCCESS; + } +} + +/* +gsl_linalg_SV_leverage() + Compute statistical leverage values of a matrix: + +h = diag(A (A^T A)^{-1} A^T) + +Inputs: U - U matrix in SVD decomposition + h - (output) vector of leverages + +Return: success or error +*/ + +int +gsl_linalg_SV_leverage(const gsl_matrix *U, gsl_vector *h) +{ + const size_t M = U->size1; + + if (M != h->size) + { + GSL_ERROR ("first dimension of matrix U must match size of vector h", + GSL_EBADLEN); + } + else + { + size_t i; + + for (i = 0; i < M; ++i) + { + gsl_vector_const_view v = gsl_matrix_const_row(U, i); + double hi; + + gsl_blas_ddot(&v.vector, &v.vector, &hi); + gsl_vector_set(h, i, hi); + } + + return GSL_SUCCESS; + } +} /* gsl_linalg_SV_leverage() */ + +/* This is a the jacobi version */ +/* Author: G. Jungman */ + +/* + * Algorithm due to J.C. Nash, Compact Numerical Methods for + * Computers (New York: Wiley and Sons, 1979), chapter 3. + * See also Algorithm 4.1 in + * James Demmel, Kresimir Veselic, "Jacobi's Method is more + * accurate than QR", Lapack Working Note 15 (LAWN15), October 1989. + * Available from netlib. + * + * Based on code by Arthur Kosowsky, Rutgers University + * kosowsky@physics.rutgers.edu + * + * Another relevant paper is, P.P.M. De Rijk, "A One-Sided Jacobi + * Algorithm for computing the singular value decomposition on a + * vector computer", SIAM Journal of Scientific and Statistical + * Computing, Vol 10, No 2, pp 359-371, March 1989. + * + */ + +int +gsl_linalg_SV_decomp_jacobi (gsl_matrix * A, gsl_matrix * Q, gsl_vector * S) +{ + if (A->size1 < A->size2) + { + /* FIXME: only implemented M>=N case so far */ + + GSL_ERROR ("svd of MxN matrix, Msize1 != A->size2) + { + GSL_ERROR ("square matrix Q must match second dimension of matrix A", + GSL_EBADLEN); + } + else if (Q->size1 != Q->size2) + { + GSL_ERROR ("matrix Q must be square", GSL_ENOTSQR); + } + else if (S->size != A->size2) + { + GSL_ERROR ("length of vector S must match second dimension of matrix A", + GSL_EBADLEN); + } + else + { + const size_t M = A->size1; + const size_t N = A->size2; + size_t i, j, k; + + /* Initialize the rotation counter and the sweep counter. */ + int count = 1; + int sweep = 0; + int sweepmax = 5*N; + + double tolerance = 10 * M * GSL_DBL_EPSILON; + + /* Always do at least 12 sweeps. */ + sweepmax = GSL_MAX (sweepmax, 12); + + /* Set Q to the identity matrix. */ + gsl_matrix_set_identity (Q); + + /* Store the column error estimates in S, for use during the + orthogonalization */ + + for (j = 0; j < N; j++) + { + gsl_vector_view cj = gsl_matrix_column (A, j); + double sj = gsl_blas_dnrm2 (&cj.vector); + gsl_vector_set(S, j, GSL_DBL_EPSILON * sj); + } + + /* Orthogonalize A by plane rotations. */ + + while (count > 0 && sweep <= sweepmax) + { + /* Initialize rotation counter. */ + count = N * (N - 1) / 2; + + for (j = 0; j < N - 1; j++) + { + for (k = j + 1; k < N; k++) + { + double a = 0.0; + double b = 0.0; + double p = 0.0; + double q = 0.0; + double cosine, sine; + double v; + double abserr_a, abserr_b; + int sorted, orthog, noisya, noisyb; + + gsl_vector_view cj = gsl_matrix_column (A, j); + gsl_vector_view ck = gsl_matrix_column (A, k); + + gsl_blas_ddot (&cj.vector, &ck.vector, &p); + p *= 2.0 ; /* equation 9a: p = 2 x.y */ + + a = gsl_blas_dnrm2 (&cj.vector); + b = gsl_blas_dnrm2 (&ck.vector); + + q = a * a - b * b; + v = hypot(p, q); + + /* test for columns j,k orthogonal, or dominant errors */ + + abserr_a = gsl_vector_get(S,j); + abserr_b = gsl_vector_get(S,k); + + sorted = (GSL_COERCE_DBL(a) >= GSL_COERCE_DBL(b)); + orthog = (fabs (p) <= tolerance * GSL_COERCE_DBL(a * b)); + noisya = (a < abserr_a); + noisyb = (b < abserr_b); + + if (sorted && (orthog || noisya || noisyb)) + { + count--; + continue; + } + + /* calculate rotation angles */ + if (v == 0 || !sorted) + { + cosine = 0.0; + sine = 1.0; + } + else + { + cosine = sqrt((v + q) / (2.0 * v)); + sine = p / (2.0 * v * cosine); + } + + /* apply rotation to A */ + for (i = 0; i < M; i++) + { + const double Aik = gsl_matrix_get (A, i, k); + const double Aij = gsl_matrix_get (A, i, j); + gsl_matrix_set (A, i, j, Aij * cosine + Aik * sine); + gsl_matrix_set (A, i, k, -Aij * sine + Aik * cosine); + } + + gsl_vector_set(S, j, fabs(cosine) * abserr_a + fabs(sine) * abserr_b); + gsl_vector_set(S, k, fabs(sine) * abserr_a + fabs(cosine) * abserr_b); + + /* apply rotation to Q */ + for (i = 0; i < N; i++) + { + const double Qij = gsl_matrix_get (Q, i, j); + const double Qik = gsl_matrix_get (Q, i, k); + gsl_matrix_set (Q, i, j, Qij * cosine + Qik * sine); + gsl_matrix_set (Q, i, k, -Qij * sine + Qik * cosine); + } + } + } + + /* Sweep completed. */ + sweep++; + } + + /* + * Orthogonalization complete. Compute singular values. + */ + + { + double prev_norm = -1.0; + + for (j = 0; j < N; j++) + { + gsl_vector_view column = gsl_matrix_column (A, j); + double norm = gsl_blas_dnrm2 (&column.vector); + + /* Determine if singular value is zero, according to the + criteria used in the main loop above (i.e. comparison + with norm of previous column). */ + + if (norm == 0.0 || prev_norm == 0.0 + || (j > 0 && norm <= tolerance * prev_norm)) + { + gsl_vector_set (S, j, 0.0); /* singular */ + gsl_vector_set_zero (&column.vector); /* annihilate column */ + + prev_norm = 0.0; + } + else + { + gsl_vector_set (S, j, norm); /* non-singular */ + gsl_vector_scale (&column.vector, 1.0 / norm); /* normalize column */ + + prev_norm = norm; + } + } + } + + if (count > 0) + { + /* reached sweep limit */ + GSL_ERROR ("Jacobi iterations did not reach desired tolerance", + GSL_ETOL); + } + + return GSL_SUCCESS; + } +} diff --git a/gsl-2.5/linalg/svd.lo b/gsl-2.5/linalg/svd.lo new file mode 100644 index 00000000..92ac6ba5 --- /dev/null +++ b/gsl-2.5/linalg/svd.lo @@ -0,0 +1,12 @@ +# svd.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/svd.o' + +# Name of the non-PIC object +non_pic_object='svd.o' + diff --git a/gsl-2.5/linalg/svdstep.c b/gsl-2.5/linalg/svdstep.c new file mode 100644 index 00000000..62e2dba6 --- /dev/null +++ b/gsl-2.5/linalg/svdstep.c @@ -0,0 +1,605 @@ +/* linalg/svdstep.c + * + * Copyright (C) 2007, 2010 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +static void +chop_small_elements (gsl_vector * d, gsl_vector * f) +{ + const size_t N = d->size; + double d_i = gsl_vector_get (d, 0); + + size_t i; + + for (i = 0; i < N - 1; i++) + { + double f_i = gsl_vector_get (f, i); + double d_ip1 = gsl_vector_get (d, i + 1); + + if (fabs (f_i) < GSL_DBL_EPSILON * (fabs (d_i) + fabs (d_ip1))) + { + gsl_vector_set (f, i, 0.0); + } + + d_i = d_ip1; + } + +} + +static double +trailing_eigenvalue (const gsl_vector * d, const gsl_vector * f) +{ + const size_t n = d->size; + + double da = gsl_vector_get (d, n - 2); + double db = gsl_vector_get (d, n - 1); + double fa = (n > 2) ? gsl_vector_get (f, n - 3) : 0.0; + double fb = gsl_vector_get (f, n - 2); + + double mu; + +#if GOLUB_VAN_LOAN_8_3_2 + + /* Golub and van Loan, Algorithm 8.3.2 + The full SVD algorithm is described in section 8.6.2 */ + + double ta = da * da + fa * fa; + double tb = db * db + fb * fb; + double tab = da * fb; + + double dt = (ta - tb) / 2.0; + + + if (dt >= 0) + { + mu = tb - (tab * tab) / (dt + hypot (dt, tab)); + } + else + { + mu = tb + (tab * tab) / ((-dt) + hypot (dt, tab)); + } + +#else + { + /* We can compute mu more accurately than using the formula above + since we know the roots cannot be negative. This also avoids + the possibility of NaNs in the formula above. + + The matrix is [ da^2 + fa^2, da fb ; + da fb , db^2 + fb^2 ] + and mu is the eigenvalue closest to the bottom right element. + */ + + double ta = da * da + fa * fa; + double tb = db * db + fb * fb; + double tab = da * fb; + + double dt = (ta - tb) / 2.0; + + double S = ta + tb; + double da2 = da * da, db2 = db * db; + double fa2 = fa * fa, fb2 = fb * fb; + double P = (da2 * db2) + (fa2 * db2) + (fa2 * fb2); + double D = hypot(dt, tab); + double r1 = S/2 + D; + + if (dt >= 0) + { + /* tb < ta, choose smaller root */ + mu = (r1 > 0) ? P / r1 : 0.0; + } + else + { + /* tb > ta, choose larger root */ + mu = r1; + } + } + +#endif + + return mu; +} + +static void +create_schur (double d0, double f0, double d1, double * c, double * s) +{ + double apq = 2.0 * d0 * f0; + + if (d0 == 0 || f0 == 0) + { + *c = 1.0; + *s = 0.0; + return; + } + + /* Check if we need to rescale to avoid underflow/overflow */ + if (fabs(d0) < GSL_SQRT_DBL_MIN || fabs(d0) > GSL_SQRT_DBL_MAX + || fabs(f0) < GSL_SQRT_DBL_MIN || fabs(f0) > GSL_SQRT_DBL_MAX + || fabs(d1) < GSL_SQRT_DBL_MIN || fabs(d1) > GSL_SQRT_DBL_MAX) + { + double scale; + int d0_exp, f0_exp; + frexp(d0, &d0_exp); + frexp(f0, &f0_exp); + /* Bring |d0*f0| into the range GSL_DBL_MIN to GSL_DBL_MAX */ + scale = ldexp(1.0, -(d0_exp + f0_exp)/4); + d0 *= scale; + f0 *= scale; + d1 *= scale; + apq = 2.0 * d0 * f0; + } + + if (apq != 0.0) + { + double t; + double tau = (f0*f0 + (d1 + d0)*(d1 - d0)) / apq; + + if (tau >= 0.0) + { + t = 1.0/(tau + hypot(1.0, tau)); + } + else + { + t = -1.0/(-tau + hypot(1.0, tau)); + } + + *c = 1.0 / hypot(1.0, t); + *s = t * (*c); + } + else + { + *c = 1.0; + *s = 0.0; + } +} + +static void +svd2 (gsl_vector * d, gsl_vector * f, gsl_matrix * U, gsl_matrix * V) +{ + size_t i; + double c, s, a11, a12, a21, a22; + + const size_t M = U->size1; + const size_t N = V->size1; + + double d0 = gsl_vector_get (d, 0); + double f0 = gsl_vector_get (f, 0); + + double d1 = gsl_vector_get (d, 1); + + if (d0 == 0.0) + { + /* Eliminate off-diagonal element in [0,f0;0,d1] to make [d,0;0,0] */ + + gsl_linalg_givens (f0, d1, &c, &s); + + /* compute B <= G^T B X, where X = [0,1;1,0] */ + + gsl_vector_set (d, 0, c * f0 - s * d1); + gsl_vector_set (f, 0, s * f0 + c * d1); + gsl_vector_set (d, 1, 0.0); + + /* Compute U <= U G */ + + for (i = 0; i < M; i++) + { + double Uip = gsl_matrix_get (U, i, 0); + double Uiq = gsl_matrix_get (U, i, 1); + gsl_matrix_set (U, i, 0, c * Uip - s * Uiq); + gsl_matrix_set (U, i, 1, s * Uip + c * Uiq); + } + + /* Compute V <= V X */ + + gsl_matrix_swap_columns (V, 0, 1); + + return; + } + else if (d1 == 0.0) + { + /* Eliminate off-diagonal element in [d0,f0;0,0] */ + + gsl_linalg_givens (d0, f0, &c, &s); + + /* compute B <= B G */ + + gsl_vector_set (d, 0, d0 * c - f0 * s); + gsl_vector_set (f, 0, 0.0); + + /* Compute V <= V G */ + + for (i = 0; i < N; i++) + { + double Vip = gsl_matrix_get (V, i, 0); + double Viq = gsl_matrix_get (V, i, 1); + gsl_matrix_set (V, i, 0, c * Vip - s * Viq); + gsl_matrix_set (V, i, 1, s * Vip + c * Viq); + } + + return; + } + else + { + /* Make columns orthogonal, A = [d0, f0; 0, d1] * G */ + + create_schur (d0, f0, d1, &c, &s); + + /* compute B <= B G */ + + a11 = c * d0 - s * f0; + a21 = - s * d1; + + a12 = s * d0 + c * f0; + a22 = c * d1; + + /* Compute V <= V G */ + + for (i = 0; i < N; i++) + { + double Vip = gsl_matrix_get (V, i, 0); + double Viq = gsl_matrix_get (V, i, 1); + gsl_matrix_set (V, i, 0, c * Vip - s * Viq); + gsl_matrix_set (V, i, 1, s * Vip + c * Viq); + } + + /* Eliminate off-diagonal elements, bring column with largest + norm to first column */ + + if (hypot(a11, a21) < hypot(a12,a22)) + { + double t1, t2; + + /* B <= B X */ + + t1 = a11; a11 = a12; a12 = t1; + t2 = a21; a21 = a22; a22 = t2; + + /* V <= V X */ + + gsl_matrix_swap_columns(V, 0, 1); + } + + gsl_linalg_givens (a11, a21, &c, &s); + + /* compute B <= G^T B */ + + gsl_vector_set (d, 0, c * a11 - s * a21); + gsl_vector_set (f, 0, c * a12 - s * a22); + gsl_vector_set (d, 1, s * a12 + c * a22); + + /* Compute U <= U G */ + + for (i = 0; i < M; i++) + { + double Uip = gsl_matrix_get (U, i, 0); + double Uiq = gsl_matrix_get (U, i, 1); + gsl_matrix_set (U, i, 0, c * Uip - s * Uiq); + gsl_matrix_set (U, i, 1, s * Uip + c * Uiq); + } + + return; + } +} + + +static void +chase_out_intermediate_zero (gsl_vector * d, gsl_vector * f, gsl_matrix * U, size_t k0) +{ +#if !USE_BLAS + const size_t M = U->size1; +#endif + const size_t n = d->size; + double c, s; + double x, y; + size_t k; + + x = gsl_vector_get (f, k0); + y = gsl_vector_get (d, k0+1); + + for (k = k0; k < n - 1; k++) + { + gsl_linalg_givens (y, -x, &c, &s); + + /* Compute U <= U G */ + +#ifdef USE_BLAS + { + gsl_vector_view Uk0 = gsl_matrix_column(U,k0); + gsl_vector_view Ukp1 = gsl_matrix_column(U,k+1); + gsl_blas_drot(&Uk0.vector, &Ukp1.vector, c, -s); + } +#else + { + size_t i; + + for (i = 0; i < M; i++) + { + double Uip = gsl_matrix_get (U, i, k0); + double Uiq = gsl_matrix_get (U, i, k + 1); + gsl_matrix_set (U, i, k0, c * Uip - s * Uiq); + gsl_matrix_set (U, i, k + 1, s * Uip + c * Uiq); + } + } +#endif + + /* compute B <= G^T B */ + + gsl_vector_set (d, k + 1, s * x + c * y); + + if (k == k0) + gsl_vector_set (f, k, c * x - s * y ); + + if (k < n - 2) + { + double z = gsl_vector_get (f, k + 1); + gsl_vector_set (f, k + 1, c * z); + + x = -s * z ; + y = gsl_vector_get (d, k + 2); + } + } +} + +static void +chase_out_trailing_zero (gsl_vector * d, gsl_vector * f, gsl_matrix * V) +{ +#if !USE_BLAS + const size_t N = V->size1; +#endif + const size_t n = d->size; + double c, s; + double x, y; + size_t k; + + x = gsl_vector_get (d, n - 2); + y = gsl_vector_get (f, n - 2); + + for (k = n - 1; k-- > 0;) + { + gsl_linalg_givens (x, y, &c, &s); + + /* Compute V <= V G where G = [c, s ; -s, c] */ + +#ifdef USE_BLAS + { + gsl_vector_view Vp = gsl_matrix_column(V,k); + gsl_vector_view Vq = gsl_matrix_column(V,n-1); + gsl_blas_drot(&Vp.vector, &Vq.vector, c, -s); + } +#else + { + size_t i; + + for (i = 0; i < N; i++) + { + double Vip = gsl_matrix_get (V, i, k); + double Viq = gsl_matrix_get (V, i, n - 1); + gsl_matrix_set (V, i, k, c * Vip - s * Viq); + gsl_matrix_set (V, i, n - 1, s * Vip + c * Viq); + } + } +#endif + + /* compute B <= B G */ + + gsl_vector_set (d, k, c * x - s * y); + + if (k == n - 2) + gsl_vector_set (f, k, s * x + c * y ); + + if (k > 0) + { + double z = gsl_vector_get (f, k - 1); + gsl_vector_set (f, k - 1, c * z); + + x = gsl_vector_get (d, k - 1); + y = s * z ; + } + } +} + +static void +qrstep (gsl_vector * d, gsl_vector * f, gsl_matrix * U, gsl_matrix * V) +{ +#if !USE_BLAS + const size_t M = U->size1; + const size_t N = V->size1; +#endif + const size_t n = d->size; + double y, z; + double ak, bk, zk, ap, bp, aq; + size_t i, k; + + if (n == 1) + return; /* shouldn't happen */ + + /* Compute 2x2 svd directly */ + + if (n == 2) + { + svd2 (d, f, U, V); + return; + } + + /* Chase out any zeroes on the diagonal */ + + for (i = 0; i < n - 1; i++) + { + double d_i = gsl_vector_get (d, i); + + if (d_i == 0.0) + { + chase_out_intermediate_zero (d, f, U, i); + return; + } + } + + /* Chase out any zero at the end of the diagonal */ + + { + double d_nm1 = gsl_vector_get (d, n - 1); + + if (d_nm1 == 0.0) + { + chase_out_trailing_zero (d, f, V); + return; + } + } + + + /* Apply QR reduction steps to the diagonal and offdiagonal */ + + { + double d0 = gsl_vector_get (d, 0); + double f0 = gsl_vector_get (f, 0); + + double d1 = gsl_vector_get (d, 1); + + { + double mu = trailing_eigenvalue (d, f); + + y = d0 * d0 - mu; + z = d0 * f0; + } + + /* Set up the recurrence for Givens rotations on a bidiagonal matrix */ + + ak = 0; + bk = 0; + + ap = d0; + bp = f0; + + aq = d1; + } + + for (k = 0; k < n - 1; k++) + { + double c, s; + gsl_linalg_givens (y, z, &c, &s); + + /* Compute V <= V G */ + +#ifdef USE_BLAS + { + gsl_vector_view Vk = gsl_matrix_column(V,k); + gsl_vector_view Vkp1 = gsl_matrix_column(V,k+1); + gsl_blas_drot(&Vk.vector, &Vkp1.vector, c, -s); + } +#else + for (i = 0; i < N; i++) + { + double Vip = gsl_matrix_get (V, i, k); + double Viq = gsl_matrix_get (V, i, k + 1); + gsl_matrix_set (V, i, k, c * Vip - s * Viq); + gsl_matrix_set (V, i, k + 1, s * Vip + c * Viq); + } +#endif + + /* compute B <= B G */ + + { + double bk1 = c * bk - s * z; + + double ap1 = c * ap - s * bp; + double bp1 = s * ap + c * bp; + double zp1 = -s * aq; + + double aq1 = c * aq; + + if (k > 0) + { + gsl_vector_set (f, k - 1, bk1); + } + + ak = ap1; + bk = bp1; + zk = zp1; + + ap = aq1; + + if (k < n - 2) + { + bp = gsl_vector_get (f, k + 1); + } + else + { + bp = 0.0; + } + + y = ak; + z = zk; + } + + gsl_linalg_givens (y, z, &c, &s); + + /* Compute U <= U G */ + +#ifdef USE_BLAS + { + gsl_vector_view Uk = gsl_matrix_column(U,k); + gsl_vector_view Ukp1 = gsl_matrix_column(U,k+1); + gsl_blas_drot(&Uk.vector, &Ukp1.vector, c, -s); + } +#else + for (i = 0; i < M; i++) + { + double Uip = gsl_matrix_get (U, i, k); + double Uiq = gsl_matrix_get (U, i, k + 1); + gsl_matrix_set (U, i, k, c * Uip - s * Uiq); + gsl_matrix_set (U, i, k + 1, s * Uip + c * Uiq); + } +#endif + + /* compute B <= G^T B */ + + { + double ak1 = c * ak - s * zk; + double bk1 = c * bk - s * ap; + double zk1 = -s * bp; + + double ap1 = s * bk + c * ap; + double bp1 = c * bp; + + gsl_vector_set (d, k, ak1); + + ak = ak1; + bk = bk1; + zk = zk1; + + ap = ap1; + bp = bp1; + + if (k < n - 2) + { + aq = gsl_vector_get (d, k + 2); + } + else + { + aq = 0.0; + } + + y = bk; + z = zk; + } + } + + gsl_vector_set (f, n - 2, bk); + gsl_vector_set (d, n - 1, ap); +} + + diff --git a/gsl-2.5/linalg/symmtd.c b/gsl-2.5/linalg/symmtd.c new file mode 100644 index 00000000..dd3d6160 --- /dev/null +++ b/gsl-2.5/linalg/symmtd.c @@ -0,0 +1,232 @@ +/* linalg/sytd.c + * + * Copyright (C) 2001, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Factorise a symmetric matrix A into + * + * A = Q T Q' + * + * where Q is orthogonal and T is symmetric tridiagonal. Only the + * diagonal and lower triangular part of A is referenced and modified. + * + * On exit, T is stored in the diagonal and first subdiagonal of + * A. Since T is symmetric the upper diagonal is not stored. + * + * Q is stored as a packed set of Householder transformations in the + * lower triangular part of the input matrix below the first subdiagonal. + * + * The full matrix for Q can be obtained as the product + * + * Q = Q_1 Q_2 ... Q_(N-2) + * + * where + * + * Q_i = (I - tau_i * v_i * v_i') + * + * and where v_i is a Householder vector + * + * v_i = [0, ... , 0, 1, A(i+1,i), A(i+2,i), ... , A(N,i)] + * + * This storage scheme is the same as in LAPACK. See LAPACK's + * ssytd2.f for details. + * + * See Golub & Van Loan, "Matrix Computations" (3rd ed), Section 8.3 + * + * Note: this description uses 1-based indices. The code below uses + * 0-based indices + */ + +#include +#include +#include +#include +#include +#include + +#include + +int +gsl_linalg_symmtd_decomp (gsl_matrix * A, gsl_vector * tau) +{ + if (A->size1 != A->size2) + { + GSL_ERROR ("symmetric tridiagonal decomposition requires square matrix", + GSL_ENOTSQR); + } + else if (tau->size + 1 != A->size1) + { + GSL_ERROR ("size of tau must be (matrix size - 1)", GSL_EBADLEN); + } + else + { + const size_t N = A->size1; + size_t i; + + for (i = 0 ; i < N - 2; i++) + { + gsl_vector_view c = gsl_matrix_column (A, i); + gsl_vector_view v = gsl_vector_subvector (&c.vector, i + 1, N - (i + 1)); + double tau_i = gsl_linalg_householder_transform (&v.vector); + + /* Apply the transformation H^T A H to the remaining columns */ + + if (tau_i != 0.0) + { + gsl_matrix_view m = gsl_matrix_submatrix (A, i + 1, i + 1, + N - (i+1), N - (i+1)); + double ei = gsl_vector_get(&v.vector, 0); + gsl_vector_view x = gsl_vector_subvector (tau, i, N-(i+1)); + gsl_vector_set (&v.vector, 0, 1.0); + + /* x = tau * A * v */ + gsl_blas_dsymv (CblasLower, tau_i, &m.matrix, &v.vector, 0.0, &x.vector); + + /* w = x - (1/2) tau * (x' * v) * v */ + { + double xv, alpha; + gsl_blas_ddot(&x.vector, &v.vector, &xv); + alpha = - (tau_i / 2.0) * xv; + gsl_blas_daxpy(alpha, &v.vector, &x.vector); + } + + /* apply the transformation A = A - v w' - w v' */ + gsl_blas_dsyr2(CblasLower, -1.0, &v.vector, &x.vector, &m.matrix); + + gsl_vector_set (&v.vector, 0, ei); + } + + gsl_vector_set (tau, i, tau_i); + } + + return GSL_SUCCESS; + } +} + + +/* Form the orthogonal matrix Q from the packed QR matrix */ + +int +gsl_linalg_symmtd_unpack (const gsl_matrix * A, + const gsl_vector * tau, + gsl_matrix * Q, + gsl_vector * diag, + gsl_vector * sdiag) +{ + if (A->size1 != A->size2) + { + GSL_ERROR ("matrix A must be square", GSL_ENOTSQR); + } + else if (tau->size + 1 != A->size1) + { + GSL_ERROR ("size of tau must be (matrix size - 1)", GSL_EBADLEN); + } + else if (Q->size1 != A->size1 || Q->size2 != A->size1) + { + GSL_ERROR ("size of Q must match size of A", GSL_EBADLEN); + } + else if (diag->size != A->size1) + { + GSL_ERROR ("size of diagonal must match size of A", GSL_EBADLEN); + } + else if (sdiag->size + 1 != A->size1) + { + GSL_ERROR ("size of subdiagonal must be (matrix size - 1)", GSL_EBADLEN); + } + else + { + const size_t N = A->size1; + + size_t i; + + /* Initialize Q to the identity */ + + gsl_matrix_set_identity (Q); + + for (i = N - 2; i-- > 0;) + { + gsl_vector_const_view c = gsl_matrix_const_column (A, i); + gsl_vector_const_view h = gsl_vector_const_subvector (&c.vector, i + 1, N - (i+1)); + double ti = gsl_vector_get (tau, i); + + gsl_matrix_view m = gsl_matrix_submatrix (Q, i + 1, i + 1, N-(i+1), N-(i+1)); + + gsl_linalg_householder_hm (ti, &h.vector, &m.matrix); + } + + /* Copy diagonal into diag */ + + for (i = 0; i < N; i++) + { + double Aii = gsl_matrix_get (A, i, i); + gsl_vector_set (diag, i, Aii); + } + + /* Copy subdiagonal into sd */ + + for (i = 0; i < N - 1; i++) + { + double Aji = gsl_matrix_get (A, i+1, i); + gsl_vector_set (sdiag, i, Aji); + } + + return GSL_SUCCESS; + } +} + +int +gsl_linalg_symmtd_unpack_T (const gsl_matrix * A, + gsl_vector * diag, + gsl_vector * sdiag) +{ + if (A->size1 != A->size2) + { + GSL_ERROR ("matrix A must be square", GSL_ENOTSQR); + } + else if (diag->size != A->size1) + { + GSL_ERROR ("size of diagonal must match size of A", GSL_EBADLEN); + } + else if (sdiag->size + 1 != A->size1) + { + GSL_ERROR ("size of subdiagonal must be (matrix size - 1)", GSL_EBADLEN); + } + else + { + const size_t N = A->size1; + + size_t i; + + /* Copy diagonal into diag */ + + for (i = 0; i < N; i++) + { + double Aii = gsl_matrix_get (A, i, i); + gsl_vector_set (diag, i, Aii); + } + + /* Copy subdiagonal into sdiag */ + + for (i = 0; i < N - 1; i++) + { + double Aij = gsl_matrix_get (A, i+1, i); + gsl_vector_set (sdiag, i, Aij); + } + + return GSL_SUCCESS; + } +} diff --git a/gsl-2.5/linalg/symmtd.lo b/gsl-2.5/linalg/symmtd.lo new file mode 100644 index 00000000..eceeba5d --- /dev/null +++ b/gsl-2.5/linalg/symmtd.lo @@ -0,0 +1,12 @@ +# symmtd.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/symmtd.o' + +# Name of the non-PIC object +non_pic_object='symmtd.o' + diff --git a/gsl-2.5/linalg/test b/gsl-2.5/linalg/test new file mode 100755 index 00000000..966506b8 --- /dev/null +++ b/gsl-2.5/linalg/test @@ -0,0 +1,228 @@ +#! /bin/sh + +# test - temporary wrapper script for .libs/test +# Generated by libtool (GNU libtool) 2.4.2 +# +# The test program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s/\([`"$\\]\)/\\\1/g' + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command="(cd /home/groups/kipac/chto/package/gsl/gsl-2.5/linalg; LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LIBRARY_PATH; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; LD_LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/fftw/include:/home/users/chto/lib/fftw/lib:/home/users/chto/lib/healpix/lib:/home/users/chto/lib/namaster/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/include:/home/users/chto/cpp/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LD_LIBRARY_PATH; PATH=/share/software/user/open/curl/7.54.0/bin:/share/software/user/open/libressl/2.5.3/bin:/home/users/chto/lib/cfitsio:/home/users/chto/lib/cfitsio/include:/home/users/chto/lib:/home/users/chto/bin/bin:/home/users/chto/bin:/home/users/chto/.texlive/bin/x86_64-linux:/home/groups/kipac/chto/anaconda2/envs/newenv3/bin:/home/users/chto/.local/bin/include:/home/users/chto/.local/bin/lib:/home/users/chto/.local/bin:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/bin64:/share/software/user/open/fftw/3.3.6/bin:/home/groups/kipac/chto/anaconda2/condabin:/share/software/user/restricted/ifort/2019/bin:/share/software/user/open/gsl/2.3/bin:/share/software/user/srcc/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/dell/srvadmin/bin:/opt/dell/srvadmin/iSM/bin:/home/users/chto/bin; export PATH; gcc -g -O2 -o \$progdir/\$file test.o ./.libs/libgsllinalg.a ../blas/.libs/libgslblas.a ../cblas/.libs/libgslcblas.so ../permutation/.libs/libgslpermutation.a ../matrix/.libs/libgslmatrix.a ../vector/.libs/libgslvector.a ../block/.libs/libgslblock.a ../complex/.libs/libgslcomplex.a ../ieee-utils/.libs/libgslieeeutils.a ../err/.libs/libgslerr.a ../test/.libs/libgsltest.a ../sys/.libs/libgslsys.a ../utils/.libs/libutils.a ../rng/.libs/libgslrng.a -lm -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/cblas/.libs -Wl,-rpath -Wl,/usr/local/lib)" + +# This environment variable determines our operation mode. +if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then + # install mode needs the following variables: + generated_by_libtool_version='2.4.2' + notinst_deplibs=' ../cblas/libgslcblas.la' +else + # When we are sourced in execute mode, $file and $ECHO are already set. + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + file="$0" + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + ECHO="printf %s\\n" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ which is used only on +# windows platforms, and (c) all begin with the string --lt- +# (application programs are unlikely to have options which match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's ../libtool value, followed by no. +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=$0 + shift + for lt_opt + do + case "$lt_opt" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%/[^/]*$%%'` + test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=. + lt_dump_F=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%^.*/%%'` + cat "$lt_dump_D/$lt_dump_F" + exit 0 + ;; + --lt-*) + $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n "$lt_option_debug"; then + echo "test:test:${LINENO}: libtool wrapper (GNU libtool) 2.4.2" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + $ECHO "test:test:${LINENO}: newargv[$lt_dump_args_N]: $lt_arg" + lt_dump_args_N=`expr $lt_dump_args_N + 1` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ + + if test -n "$lt_option_debug"; then + $ECHO "test:test:${LINENO}: newargv[0]: $progdir/$program" 1>&2 + func_lt_dump_args ${1+"$@"} 1>&2 + fi + exec "$progdir/$program" ${1+"$@"} + + $ECHO "$0: cannot exec $program $*" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from $@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case " $* " in + *\ --lt-*) + for lt_wr_arg + do + case $lt_wr_arg in + --lt-*) ;; + *) set x "$@" "$lt_wr_arg"; shift;; + esac + shift + done ;; + esac + func_exec_program_core ${1+"$@"} +} + + # Parse options + func_parse_lt_options "$0" ${1+"$@"} + + # Find the directory that this script lives in. + thisdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + test "x$thisdir" = "x$file" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=`ls -ld "$file" | /usr/bin/sed -n 's/.*-> //p'` + while test -n "$file"; do + destdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + + # If there was a directory component, then change thisdir. + if test "x$destdir" != "x$file"; then + case "$destdir" in + [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;; + *) thisdir="$thisdir/$destdir" ;; + esac + fi + + file=`$ECHO "$file" | /usr/bin/sed 's%^.*/%%'` + file=`ls -ld "$thisdir/$file" | /usr/bin/sed -n 's/.*-> //p'` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no + if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then + # special case for '.' + if test "$thisdir" = "."; then + thisdir=`pwd` + fi + # remove .libs from thisdir + case "$thisdir" in + *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /usr/bin/sed 's%[\\/][^\\/]*$%%'` ;; + .libs ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=`cd "$thisdir" && pwd` + test -n "$absdir" && thisdir="$absdir" + + program=lt-'test' + progdir="$thisdir/.libs" + + if test ! -f "$progdir/$program" || + { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /usr/bin/sed 1q`; \ + test "X$file" != "X$progdir/$program"; }; then + + file="$$-$program" + + if test ! -d "$progdir"; then + mkdir "$progdir" + else + rm -f "$progdir/$file" + fi + + # relink executable if necessary + if test -n "$relink_command"; then + if relink_command_output=`eval $relink_command 2>&1`; then : + else + printf %s\n "$relink_command_output" >&2 + rm -f "$progdir/$file" + exit 1 + fi + fi + + mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null || + { rm -f "$progdir/$program"; + mv -f "$progdir/$file" "$progdir/$program"; } + rm -f "$progdir/$file" + fi + + if test -f "$progdir/$program"; then + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + # Run the actual program with our arguments. + func_exec_program ${1+"$@"} + fi + else + # The program doesn't exist. + $ECHO "$0: error: \`$progdir/$program' does not exist" 1>&2 + $ECHO "This script is just a wrapper for $program." 1>&2 + $ECHO "See the libtool documentation for more information." 1>&2 + exit 1 + fi +fi diff --git a/gsl-2.5/linalg/test-suite.log b/gsl-2.5/linalg/test-suite.log new file mode 100644 index 00000000..76ea1e64 --- /dev/null +++ b/gsl-2.5/linalg/test-suite.log @@ -0,0 +1,14 @@ +==================================== + gsl 2.5: linalg/test-suite.log +==================================== + +# TOTAL: 1 +# PASS: 1 +# SKIP: 0 +# XFAIL: 0 +# FAIL: 0 +# XPASS: 0 +# ERROR: 0 + +.. contents:: :depth: 2 + diff --git a/gsl-2.5/linalg/test.c b/gsl-2.5/linalg/test.c new file mode 100644 index 00000000..7164857b --- /dev/null +++ b/gsl-2.5/linalg/test.c @@ -0,0 +1,4507 @@ +/* linalg/test.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2004, 2005, 2006, 2007, 2010 Gerard Jungman, Brian Gough + * Copyright (C) Huan Wu (test_choleskyc_invert and test_choleskyc_invert_dim) + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman + */ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define TEST_SVD_4X4 1 + +int check (double x, double actual, double eps); +gsl_matrix * create_hilbert_matrix(unsigned long size); +gsl_matrix * create_general_matrix(unsigned long size1, unsigned long size2); +gsl_matrix * create_vandermonde_matrix(unsigned long size); +gsl_matrix * create_moler_matrix(unsigned long size); +gsl_matrix * create_row_matrix(unsigned long size1, unsigned long size2); +gsl_matrix * create_2x2_matrix(double a11, double a12, double a21, double a22); +gsl_matrix * create_diagonal_matrix(double a[], unsigned long size); +gsl_matrix * create_sparse_matrix(unsigned long m, unsigned long n); + +int test_matmult(void); +int test_matmult_mod(void); +int test_LU_solve_dim(const gsl_matrix * m, const double * actual, double eps); +int test_LU_solve(void); +int test_LUc_solve_dim(const gsl_matrix_complex * m, const double * actual, double eps); +int test_LUc_solve(void); +int test_QR_solve_dim(const gsl_matrix * m, const double * actual, double eps); +int test_QR_solve(void); +int test_QR_QRsolve_dim(const gsl_matrix * m, const double * actual, double eps); +int test_QR_QRsolve(void); +int test_QR_lssolve_dim(const gsl_matrix * m, const double * actual, double eps); +int test_QR_lssolve(void); +int test_QR_decomp_dim(const gsl_matrix * m, double eps); +int test_QR_decomp(void); +int test_QRPT_solve_dim(const gsl_matrix * m, const double * actual, double eps); +int test_QRPT_solve(void); +int test_QRPT_QRsolve_dim(const gsl_matrix * m, const double * actual, double eps); +int test_QRPT_QRsolve(void); +int test_QRPT_decomp_dim(const gsl_matrix * m, const double expected_rcond, double eps); +int test_QRPT_decomp(void); +int test_QRPT_lssolve_dim(const gsl_matrix * m, const double * actual, double eps); +int test_QRPT_lssolve(void); +int test_QRPT_lssolve2_dim(const gsl_matrix * m, const double * actual, double eps); +int test_QRPT_lssolve2(void); +int test_QR_update_dim(const gsl_matrix * m, double eps); +int test_QR_update(void); +int test_QRPT_update_dim(const gsl_matrix * m, double eps); +int test_QRPT_update(void); + +int test_LQ_solve_dim(const gsl_matrix * m, const double * actual, double eps); +int test_LQ_solve(void); +int test_LQ_LQsolve_dim(const gsl_matrix * m, const double * actual, double eps); +int test_LQ_LQsolve(void); +int test_LQ_lssolve_dim(const gsl_matrix * m, const double * actual, double eps); +int test_LQ_lssolve(void); +int test_LQ_decomp_dim(const gsl_matrix * m, double eps); +int test_LQ_decomp(void); +int test_PTLQ_solve_dim(const gsl_matrix * m, const double * actual, double eps); +int test_PTLQ_solve(void); +int test_PTLQ_LQsolve_dim(const gsl_matrix * m, const double * actual, double eps); +int test_PTLQ_LQsolve(void); +int test_PTLQ_decomp_dim(const gsl_matrix * m, double eps); +int test_PTLQ_decomp(void); +int test_LQ_update_dim(const gsl_matrix * m, double eps); +int test_LQ_update(void); + +int test_SV_solve_dim(const gsl_matrix * m, const double * actual, double eps); +int test_SV_solve(void); +int test_SV_decomp_dim(const gsl_matrix * m, double eps); +int test_SV_decomp(void); +int test_SV_decomp_mod_dim(const gsl_matrix * m, double eps); +int test_SV_decomp_mod(void); +int test_SV_decomp_jacobi_dim(const gsl_matrix * m, double eps); +int test_SV_decomp_jacobi(void); +int test_cholesky_solve_dim(const gsl_matrix * m, const double * actual, double eps); +int test_cholesky_solve(void); +int test_HH_solve_dim(const gsl_matrix * m, const double * actual, double eps); +int test_HH_solve(void); +int test_TDS_solve_dim(unsigned long dim, double d, double od, const double * actual, double eps); +int test_TDS_solve(void); +int test_TDN_solve_dim(unsigned long dim, double d, double a, double b, const double * actual, double eps); +int test_TDN_solve(void); +int test_TDS_cyc_solve_one(const unsigned long dim, const double * d, const double * od, const double * r, + const double * actual, double eps); +int test_TDS_cyc_solve(void); +int test_TDN_cyc_solve_dim(unsigned long dim, double d, double a, double b, const double * actual, double eps); +int test_TDN_cyc_solve(void); +int test_bidiag_decomp_dim(const gsl_matrix * m, double eps); +int test_bidiag_decomp(void); + +int +check (double x, double actual, double eps) +{ + if (x == actual) + { + return 0; + } + else if (actual == 0) + { + return fabs(x) > eps; + } + else + { + return (fabs(x - actual)/fabs(actual)) > eps; + } +} + + +gsl_vector * +vector_alloc (size_t n) +{ + size_t p[5] = {3, 5, 7, 11, 13}; + static size_t k = 0; + + size_t stride = p[k]; + k = (k + 1) % 5; + + { + gsl_block * b = gsl_block_alloc (n * stride); + gsl_vector * v = gsl_vector_alloc_from_block (b, 0, n, stride); + v->owner = 1; + return v; + } +} + +void +vector_free (gsl_vector * v) +{ + gsl_vector_free (v); +} + +gsl_matrix * +create_hilbert_matrix(unsigned long size) +{ + unsigned long i, j; + gsl_matrix * m = gsl_matrix_alloc(size, size); + for(i=0; isize1; + size_t i, j; + + gsl_matrix_set_zero(m); + + for (i = 0; i < N; ++i) + { + for (j = 0; j <= i; ++j) + { + double mij = gsl_rng_uniform(r); + + /* put lower bound on diagonal entries to ensure invertibility */ + if (i == j) + mij = GSL_MAX(mij, 0.3); + + if (Uplo == CblasLower) + gsl_matrix_set(m, i, j, mij); + else + gsl_matrix_set(m, j, i, mij); + + if (Diag == CblasUnit && i == j) + gsl_matrix_set(m, i, j, 1.0); + } + } + + return GSL_SUCCESS; +} + + +gsl_matrix * m11; +gsl_matrix * m51; + +gsl_matrix * m35; +gsl_matrix * m53; +gsl_matrix * m97; + +gsl_matrix * s35; +gsl_matrix * s53; + +gsl_matrix * hilb2; +gsl_matrix * hilb3; +gsl_matrix * hilb4; +gsl_matrix * hilb12; + +gsl_matrix * row3; +gsl_matrix * row5; +gsl_matrix * row12; + +gsl_matrix * A22; +gsl_matrix * A33; +gsl_matrix * A44; +gsl_matrix * A55; + +gsl_matrix_complex * c7; + +gsl_matrix * inf5; double inf5_data[] = {1.0, 0.0, -3.0, 0.0, -5.0}; +gsl_matrix * nan5; +gsl_matrix * dblmin3, * dblmin5, * dblsubnorm5; +gsl_matrix * bigsparse; + +double m53_lssolution[] = {52.5992295702070, -337.7263113752073, + 351.8823436427604}; +double hilb2_solution[] = {-8.0, 18.0} ; +double hilb3_solution[] = {27.0, -192.0, 210.0}; +double hilb4_solution[] = {-64.0, 900.0, -2520.0, 1820.0}; +double hilb12_solution[] = {-1728.0, 245388.0, -8528520.0, + 127026900.0, -1009008000.0, 4768571808.0, + -14202796608.0, 27336497760.0, -33921201600.0, + 26189163000.0, -11437874448.0, 2157916488.0 }; + +double c7_solution[] = { 2.40717272023734e+01, -9.84612797621247e+00, + -2.69338853034031e+02, 8.75455232472528e+01, + 2.96661356736296e+03, -1.02624473923993e+03, + -1.82073812124749e+04, 5.67384473042410e+03, + 5.57693879019068e+04, -1.61540963210502e+04, + -7.88941207561151e+04, 1.95053812987858e+04, + 3.95548551241728e+04, -7.76593696255317e+03 }; + +gsl_matrix * vander2; +gsl_matrix * vander3; +gsl_matrix * vander4; +gsl_matrix * vander12; + +double vander2_solution[] = {1.0, 0.0}; +double vander3_solution[] = {0.0, 1.0, 0.0}; +double vander4_solution[] = {0.0, 0.0, 1.0, 0.0}; +double vander12_solution[] = {0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 1.0, 0.0}; + +gsl_matrix * moler10; + +#include "test_cholesky.c" +#include "test_cod.c" + +int +test_LU_solve_dim(const gsl_matrix * m, const double * actual, double eps) +{ + int s = 0; + int signum; + unsigned long i, dim = m->size1; + + gsl_permutation * perm = gsl_permutation_alloc(dim); + gsl_vector * rhs = gsl_vector_alloc(dim); + gsl_matrix * lu = gsl_matrix_alloc(dim,dim); + gsl_vector * x = gsl_vector_alloc(dim); + gsl_vector * residual = gsl_vector_alloc(dim); + gsl_matrix_memcpy(lu,m); + for(i=0; isize1; + + gsl_permutation * perm = gsl_permutation_alloc(dim); + gsl_vector_complex * rhs = gsl_vector_complex_alloc(dim); + gsl_matrix_complex * lu = gsl_matrix_complex_alloc(dim,dim); + gsl_vector_complex * x = gsl_vector_complex_alloc(dim); + gsl_vector_complex * residual = gsl_vector_complex_alloc(dim); + gsl_matrix_complex_memcpy(lu,m); + for(i=0; isize1; + + gsl_vector * rhs = gsl_vector_alloc(dim); + gsl_matrix * qr = gsl_matrix_alloc(dim,dim); + gsl_vector * d = gsl_vector_alloc(dim); + gsl_vector * x = gsl_vector_alloc(dim); + + gsl_matrix_memcpy(qr,m); + for(i=0; isize1; + + gsl_vector * rhs = gsl_vector_alloc(dim); + gsl_matrix * qr = gsl_matrix_alloc(dim,dim); + gsl_matrix * q = gsl_matrix_alloc(dim,dim); + gsl_matrix * r = gsl_matrix_alloc(dim,dim); + gsl_vector * d = gsl_vector_alloc(dim); + gsl_vector * x = gsl_vector_alloc(dim); + + gsl_matrix_memcpy(qr,m); + for(i=0; isize1, N = m->size2; + + gsl_vector * rhs = gsl_vector_alloc(M); + gsl_matrix * qr = gsl_matrix_alloc(M,N); + gsl_vector * d = gsl_vector_alloc(N); + gsl_vector * x = gsl_vector_alloc(N); + gsl_vector * r = gsl_vector_alloc(M); + gsl_vector * res = gsl_vector_alloc(M); + + gsl_matrix_memcpy(qr,m); + for(i=0; isize1, N = m->size2; + + gsl_matrix * qr = gsl_matrix_alloc(M,N); + gsl_matrix * a = gsl_matrix_alloc(M,N); + gsl_matrix * q = gsl_matrix_alloc(M,M); + gsl_matrix * r = gsl_matrix_alloc(M,N); + gsl_vector * d = gsl_vector_alloc(GSL_MIN(M,N)); + + gsl_matrix_memcpy(qr,m); + + s += gsl_linalg_QR_decomp(qr, d); + s += gsl_linalg_QR_unpack(qr, d, q, r); + + /* compute a = q r */ + gsl_blas_dgemm (CblasNoTrans, CblasNoTrans, 1.0, q, r, 0.0, a); + + for(i=0; isize1, N = m->size2; + + gsl_vector * rhs = gsl_vector_alloc(M); + gsl_matrix * QRPT = gsl_matrix_alloc(M,N); + gsl_vector * tau = gsl_vector_alloc(N); + gsl_vector * x = gsl_vector_alloc(N); + gsl_vector * r = gsl_vector_alloc(M); + gsl_vector * res = gsl_vector_alloc(M); + gsl_permutation * perm = gsl_permutation_alloc(N); + gsl_vector * work = gsl_vector_alloc(N); + int signum; + + gsl_matrix_memcpy(QRPT, m); + + for(i = 0; i < M; i++) + gsl_vector_set(rhs, i, i + 1.0); + + s += gsl_linalg_QRPT_decomp(QRPT, tau, perm, &signum, work); + s += gsl_linalg_QRPT_lssolve(QRPT, tau, perm, rhs, x, res); + + for (i = 0; i < N; i++) + { + int foo = check(gsl_vector_get(x, i), actual[i], eps); + if(foo) + { + printf("(%3lu,%3lu)[%lu]: %22.18g %22.18g\n", M, N, i, gsl_vector_get(x, i), actual[i]); + } + s += foo; + } + + /* compute residual r = b - m x */ + if (M == N) + { + gsl_vector_set_zero(r); + } + else + { + gsl_vector_memcpy(r, rhs); + gsl_blas_dgemv(CblasNoTrans, -1.0, m, x, 1.0, r); + } + + for (i = 0; i < N; i++) + { + int foo = check(gsl_vector_get(res, i), gsl_vector_get(r,i), sqrt(eps)); + if(foo) + { + printf("(%3lu,%3lu)[%lu]: %22.18g %22.18g\n", M, N, i, gsl_vector_get(res, i), gsl_vector_get(r,i)); + } + s += foo; + } + + gsl_vector_free(r); + gsl_vector_free(res); + gsl_vector_free(x); + gsl_vector_free(tau); + gsl_matrix_free(QRPT); + gsl_vector_free(rhs); + gsl_permutation_free(perm); + gsl_vector_free(work); + + return s; +} + +int +test_QRPT_lssolve(void) +{ + int f; + int s = 0; + + f = test_QRPT_lssolve_dim(m53, m53_lssolution, 2 * 64.0 * GSL_DBL_EPSILON); + gsl_test(f, " QRPT_lssolve m(5,3)"); + s += f; + + f = test_QRPT_lssolve_dim(hilb2, hilb2_solution, 2 * 8.0 * GSL_DBL_EPSILON); + gsl_test(f, " QRPT_lssolve hilbert(2)"); + s += f; + + f = test_QRPT_lssolve_dim(hilb3, hilb3_solution, 2 * 64.0 * GSL_DBL_EPSILON); + gsl_test(f, " QRPT_lssolve hilbert(3)"); + s += f; + + f = test_QRPT_lssolve_dim(hilb4, hilb4_solution, 2 * 2048.0 * GSL_DBL_EPSILON); + gsl_test(f, " QRPT_lssolve hilbert(4)"); + s += f; + + f = test_QRPT_lssolve_dim(hilb12, hilb12_solution, 0.5); + gsl_test(f, " QRPT_lssolve hilbert(12)"); + s += f; + + f = test_QRPT_lssolve_dim(vander2, vander2_solution, 8.0 * GSL_DBL_EPSILON); + gsl_test(f, " QRPT_lssolve vander(2)"); + s += f; + + f = test_QRPT_lssolve_dim(vander3, vander3_solution, 64.0 * GSL_DBL_EPSILON); + gsl_test(f, " QRPT_lssolve vander(3)"); + s += f; + + f = test_QRPT_lssolve_dim(vander4, vander4_solution, 1024.0 * GSL_DBL_EPSILON); + gsl_test(f, " QRPT_lssolve vander(4)"); + s += f; + + f = test_QRPT_lssolve_dim(vander12, vander12_solution, 0.05); + gsl_test(f, " QRPT_lssolve vander(12)"); + s += f; + + return s; +} + +int +test_QRPT_lssolve2_dim(const gsl_matrix * m, const double * actual, double eps) +{ + int s = 0; + size_t i, M = m->size1, N = m->size2; + + gsl_vector * rhs = gsl_vector_alloc(M); + gsl_matrix * QRPT = gsl_matrix_alloc(M,N); + gsl_vector * tau = gsl_vector_alloc(N); + gsl_vector * x = gsl_vector_alloc(N); + gsl_vector * r = gsl_vector_alloc(M); + gsl_vector * res = gsl_vector_alloc(M); + gsl_permutation * perm = gsl_permutation_alloc(N); + gsl_vector * work = gsl_vector_alloc(N); + int signum; + size_t rank; + + gsl_matrix_memcpy(QRPT, m); + + for(i = 0; i < M; i++) + gsl_vector_set(rhs, i, i + 1.0); + + s += gsl_linalg_QRPT_decomp(QRPT, tau, perm, &signum, work); + + rank = gsl_linalg_QRPT_rank(QRPT, -1.0); + + s += gsl_linalg_QRPT_lssolve2(QRPT, tau, perm, rhs, rank, x, res); + + if (M > N) + { + for (i = 0; i < N; i++) + { + int foo = check(gsl_vector_get(x, i), actual[i], eps); + if(foo) + { + printf("(%3lu,%3lu)[%lu]: %22.18g %22.18g\n", M, N, i, gsl_vector_get(x, i), actual[i]); + } + s += foo; + } + } + + /* compute residual r = b - m x */ + if (M == N) + { + gsl_vector_set_zero(r); + } + else + { + gsl_vector_memcpy(r, rhs); + gsl_blas_dgemv(CblasNoTrans, -1.0, m, x, 1.0, r); + } + + for (i = 0; i < N; i++) + { + int foo = check(gsl_vector_get(res, i), gsl_vector_get(r,i), sqrt(eps)); + if(foo) + { + printf("(%3lu,%3lu)[%lu]: %22.18g %22.18g\n", M, N, i, gsl_vector_get(res, i), gsl_vector_get(r,i)); + } + s += foo; + } + + gsl_vector_free(r); + gsl_vector_free(res); + gsl_vector_free(x); + gsl_vector_free(tau); + gsl_matrix_free(QRPT); + gsl_vector_free(rhs); + gsl_permutation_free(perm); + gsl_vector_free(work); + + return s; +} + +int +test_QRPT_lssolve2(void) +{ + int f; + int s = 0; + + f = test_QRPT_lssolve2_dim(m53, m53_lssolution, 2 * 64.0 * GSL_DBL_EPSILON); + gsl_test(f, " QRPT_lssolve2 m(5,3)"); + s += f; + + f = test_QRPT_lssolve2_dim(hilb2, hilb2_solution, 2 * 8.0 * GSL_DBL_EPSILON); + gsl_test(f, " QRPT_lssolve2 hilbert(2)"); + s += f; + + f = test_QRPT_lssolve2_dim(hilb3, hilb3_solution, 2 * 64.0 * GSL_DBL_EPSILON); + gsl_test(f, " QRPT_lssolve2 hilbert(3)"); + s += f; + + f = test_QRPT_lssolve2_dim(hilb4, hilb4_solution, 2 * 2048.0 * GSL_DBL_EPSILON); + gsl_test(f, " QRPT_lssolve2 hilbert(4)"); + s += f; + + f = test_QRPT_lssolve2_dim(hilb12, hilb12_solution, 0.5); + gsl_test(f, " QRPT_lssolve2 hilbert(12)"); + s += f; + + f = test_QRPT_lssolve2_dim(vander2, vander2_solution, 8.0 * GSL_DBL_EPSILON); + gsl_test(f, " QRPT_lssolve2 vander(2)"); + s += f; + + f = test_QRPT_lssolve2_dim(vander3, vander3_solution, 64.0 * GSL_DBL_EPSILON); + gsl_test(f, " QRPT_lssolve2 vander(3)"); + s += f; + + f = test_QRPT_lssolve2_dim(vander4, vander4_solution, 1024.0 * GSL_DBL_EPSILON); + gsl_test(f, " QRPT_lssolve2 vander(4)"); + s += f; + + f = test_QRPT_lssolve2_dim(vander12, vander12_solution, 0.05); + gsl_test(f, " QRPT_lssolve2 vander(12)"); + s += f; + + return s; +} + +int +test_QRPT_solve_dim(const gsl_matrix * m, const double * actual, double eps) +{ + int s = 0; + int signum; + unsigned long i, dim = m->size1; + + gsl_permutation * perm = gsl_permutation_alloc(dim); + gsl_vector * rhs = gsl_vector_alloc(dim); + gsl_matrix * qr = gsl_matrix_alloc(dim,dim); + gsl_vector * d = gsl_vector_alloc(dim); + gsl_vector * x = gsl_vector_alloc(dim); + gsl_vector * norm = gsl_vector_alloc(dim); + + gsl_matrix_memcpy(qr,m); + for(i=0; isize1; + + gsl_permutation * perm = gsl_permutation_alloc(dim); + gsl_vector * rhs = gsl_vector_alloc(dim); + gsl_matrix * qr = gsl_matrix_alloc(dim,dim); + gsl_matrix * q = gsl_matrix_alloc(dim,dim); + gsl_matrix * r = gsl_matrix_alloc(dim,dim); + gsl_vector * d = gsl_vector_alloc(dim); + gsl_vector * x = gsl_vector_alloc(dim); + gsl_vector * norm = gsl_vector_alloc(dim); + + gsl_matrix_memcpy(qr,m); + for(i=0; isize1, N = m->size2; + + gsl_matrix * QR = gsl_matrix_alloc(M, N); + gsl_matrix * A = gsl_matrix_alloc(M, N); + gsl_matrix * Q = gsl_matrix_alloc(M, M); + gsl_matrix * R = gsl_matrix_alloc(M, N); + gsl_vector * tau = gsl_vector_alloc(GSL_MIN(M, N)); + gsl_vector * norm = gsl_vector_alloc(N); + + gsl_permutation * perm = gsl_permutation_alloc(N); + + gsl_matrix_memcpy(QR, m); + s += gsl_linalg_QRPT_decomp(QR, tau, perm, &signum, norm); + s += gsl_linalg_QR_unpack(QR, tau, Q, R); + + /* compute A = Q R */ + gsl_blas_dgemm (CblasNoTrans, CblasNoTrans, 1.0, Q, R, 0.0, A); + + /* Compute QR P^T by permuting the elements of the rows of QR */ + + for (i = 0; i < M; i++) + { + gsl_vector_view row = gsl_matrix_row (A, i); + gsl_permute_vector_inverse (perm, &row.vector); + } + + for (i = 0; i < M; i++) + { + for (j = 0; j < N; j++) + { + double aij = gsl_matrix_get(A, i, j); + double mij = gsl_matrix_get(m, i, j); + int foo = check(aij, mij, eps); + if(foo) + printf("(%3lu,%3lu)[%lu,%lu]: %22.18g %22.18g\n", M, N, i,j, aij, mij); + s += foo; + } + } + + if (expected_rcond > 0.0) + { + double rcond; + int foo; + gsl_vector * work = gsl_vector_alloc(3 * N); + + gsl_linalg_QRPT_rcond(QR, &rcond, work); + foo = check(rcond, expected_rcond, 1.0e-10); + if (foo) + printf("QRPT_rcond (%3lu,%3lu): %22.18g %22.18g\n", M, N, rcond, expected_rcond); + + s += foo; + + gsl_vector_free(work); + } + + gsl_permutation_free (perm); + gsl_vector_free(norm); + gsl_vector_free(tau); + gsl_matrix_free(QR); + gsl_matrix_free(A); + gsl_matrix_free(Q); + gsl_matrix_free(R); + + return s; +} + +int test_QRPT_decomp(void) +{ + int f; + int s = 0; + + f = test_QRPT_decomp_dim(m35, -1.0, 2 * 8.0 * GSL_DBL_EPSILON); + gsl_test(f, " QRPT_decomp m(3,5)"); + s += f; + + /* rcond value from LAPACK DTRCON */ + f = test_QRPT_decomp_dim(m53, 2.915362697820e-03, 2 * 8.0 * GSL_DBL_EPSILON); + gsl_test(f, " QRPT_decomp m(5,3)"); + s += f; + + f = test_QRPT_decomp_dim(s35, -1.0, 2 * 8.0 * GSL_DBL_EPSILON); + gsl_test(f, " QRPT_decomp s(3,5)"); + s += f; + + f = test_QRPT_decomp_dim(s53, 1.002045825443827e-03, 2 * 8.0 * GSL_DBL_EPSILON); + gsl_test(f, " QRPT_decomp s(5,3)"); + s += f; + + f = test_QRPT_decomp_dim(hilb2, 4.347826086956522e-02, 2 * 8.0 * GSL_DBL_EPSILON); + gsl_test(f, " QRPT_decomp hilbert(2)"); + s += f; + + f = test_QRPT_decomp_dim(hilb3, 1.505488055305100e-03, 2 * 64.0 * GSL_DBL_EPSILON); + gsl_test(f, " QRPT_decomp hilbert(3)"); + s += f; + + f = test_QRPT_decomp_dim(hilb4, 4.872100915910022e-05, 2 * 1024.0 * GSL_DBL_EPSILON); + gsl_test(f, " QRPT_decomp hilbert(4)"); + s += f; + + f = test_QRPT_decomp_dim(hilb12, -1.0, 2 * 1024.0 * GSL_DBL_EPSILON); + gsl_test(f, " QRPT_decomp hilbert(12)"); + s += f; + + f = test_QRPT_decomp_dim(vander2, 1.249999999999999e-01, 8.0 * GSL_DBL_EPSILON); + gsl_test(f, " QRPT_decomp vander(2)"); + s += f; + + f = test_QRPT_decomp_dim(vander3, 9.708737864077667e-03, 64.0 * GSL_DBL_EPSILON); + gsl_test(f, " QRPT_decomp vander(3)"); + s += f; + + f = test_QRPT_decomp_dim(vander4, 5.255631229339451e-04, 1024.0 * GSL_DBL_EPSILON); + gsl_test(f, " QRPT_decomp vander(4)"); + s += f; + + f = test_QRPT_decomp_dim(vander12, -1.0, 0.0005); /* FIXME: bad accuracy */ + gsl_test(f, " QRPT_decomp vander(12)"); + s += f; + + return s; +} + + +int +test_QR_update_dim(const gsl_matrix * m, double eps) +{ + int s = 0; + unsigned long i,j,k, M = m->size1, N = m->size2; + + gsl_matrix * qr1 = gsl_matrix_alloc(M,N); + gsl_matrix * qr2 = gsl_matrix_alloc(M,N); + gsl_matrix * q1 = gsl_matrix_alloc(M,M); + gsl_matrix * r1 = gsl_matrix_alloc(M,N); + gsl_matrix * q2 = gsl_matrix_alloc(M,M); + gsl_matrix * r2 = gsl_matrix_alloc(M,N); + gsl_vector * d = gsl_vector_alloc(GSL_MIN(M,N)); + gsl_vector * solution1 = gsl_vector_alloc(N); + gsl_vector * solution2 = gsl_vector_alloc(N); + gsl_vector * u = gsl_vector_alloc(M); + gsl_vector * v = gsl_vector_alloc(N); + gsl_vector * w = gsl_vector_alloc(M); + + gsl_matrix_memcpy(qr1,m); + gsl_matrix_memcpy(qr2,m); + + for(i=0; isize1, N = m->size2; + + gsl_matrix * qr1 = gsl_matrix_alloc(M,N); + gsl_matrix * qr2 = gsl_matrix_alloc(M,N); + gsl_matrix * q1 = gsl_matrix_alloc(M,M); + gsl_matrix * r1 = gsl_matrix_alloc(M,N); + gsl_matrix * q2 = gsl_matrix_alloc(M,M); + gsl_matrix * r2 = gsl_matrix_alloc(M,N); + gsl_vector * d = gsl_vector_alloc(GSL_MIN(M,N)); + gsl_vector * u = gsl_vector_alloc(M); + gsl_vector * v = gsl_vector_alloc(N); + gsl_vector * w = gsl_vector_alloc(M); + + gsl_vector * norm = gsl_vector_alloc(N); + gsl_permutation * perm = gsl_permutation_alloc(N); + + gsl_matrix_memcpy(qr1,m); + gsl_matrix_memcpy(qr2,m); + for(i=0; isize1; + + gsl_vector * rhs = gsl_vector_alloc(dim); + gsl_matrix * lq = gsl_matrix_alloc(dim,dim); + gsl_vector * d = gsl_vector_alloc(dim); + gsl_vector * x = gsl_vector_alloc(dim); + + gsl_matrix_transpose_memcpy(lq,m); + for(i=0; isize1; + + gsl_vector * rhs = gsl_vector_alloc(dim); + gsl_matrix * lq = gsl_matrix_alloc(dim,dim); + gsl_matrix * q = gsl_matrix_alloc(dim,dim); + gsl_matrix * l = gsl_matrix_alloc(dim,dim); + gsl_vector * d = gsl_vector_alloc(dim); + gsl_vector * x = gsl_vector_alloc(dim); + + gsl_matrix_transpose_memcpy(lq,m); + for(i=0; isize1, N = m->size2; + + gsl_vector * rhs = gsl_vector_alloc(M); + gsl_matrix * lq = gsl_matrix_alloc(N,M); + gsl_vector * d = gsl_vector_alloc(N); + gsl_vector * x = gsl_vector_alloc(N); + gsl_vector * r = gsl_vector_alloc(M); + gsl_vector * res = gsl_vector_alloc(M); + + gsl_matrix_transpose_memcpy(lq,m); + for(i=0; isize1, N = m->size2; + + gsl_matrix * lq = gsl_matrix_alloc(M,N); + gsl_matrix * a = gsl_matrix_alloc(M,N); + gsl_matrix * q = gsl_matrix_alloc(N,N); + gsl_matrix * l = gsl_matrix_alloc(M,N); + gsl_vector * d = gsl_vector_alloc(GSL_MIN(M,N)); + + gsl_matrix_memcpy(lq,m); + + s += gsl_linalg_LQ_decomp(lq, d); + s += gsl_linalg_LQ_unpack(lq, d, q, l); + + /* compute a = q r */ + gsl_blas_dgemm (CblasNoTrans, CblasNoTrans, 1.0, l, q, 0.0, a); + + for(i=0; isize1; + + gsl_permutation * perm = gsl_permutation_alloc(dim); + gsl_vector * rhs = gsl_vector_alloc(dim); + gsl_matrix * lq = gsl_matrix_alloc(dim,dim); + gsl_vector * d = gsl_vector_alloc(dim); + gsl_vector * x = gsl_vector_alloc(dim); + gsl_vector * norm = gsl_vector_alloc(dim); + + gsl_matrix_transpose_memcpy(lq,m); + for(i=0; isize1; + + gsl_permutation * perm = gsl_permutation_alloc(dim); + gsl_vector * rhs = gsl_vector_alloc(dim); + gsl_matrix * lq = gsl_matrix_alloc(dim,dim); + gsl_matrix * q = gsl_matrix_alloc(dim,dim); + gsl_matrix * l = gsl_matrix_alloc(dim,dim); + gsl_vector * d = gsl_vector_alloc(dim); + gsl_vector * x = gsl_vector_alloc(dim); + gsl_vector * norm = gsl_vector_alloc(dim); + + gsl_matrix_transpose_memcpy(lq,m); + for(i=0; isize1, N = m->size2; + + gsl_matrix * lq = gsl_matrix_alloc(N,M); + gsl_matrix * a = gsl_matrix_alloc(N,M); + gsl_matrix * q = gsl_matrix_alloc(M,M); + gsl_matrix * l = gsl_matrix_alloc(N,M); + gsl_vector * d = gsl_vector_alloc(GSL_MIN(M,N)); + gsl_vector * norm = gsl_vector_alloc(N); + + gsl_permutation * perm = gsl_permutation_alloc(N); + + gsl_matrix_transpose_memcpy(lq,m); + + s += gsl_linalg_PTLQ_decomp(lq, d, perm, &signum, norm); + s += gsl_linalg_LQ_unpack(lq, d, q, l); + + /* compute a = l q */ + gsl_blas_dgemm (CblasNoTrans, CblasNoTrans, 1.0, l, q, 0.0, a); + + + /* Compute P LQ by permuting the rows of LQ */ + + for (i = 0; i < M; i++) { + gsl_vector_view col = gsl_matrix_column (a, i); + gsl_permute_vector_inverse (perm, &col.vector); + } + + for(i=0; isize1, N = m->size2; + + gsl_matrix * lq1 = gsl_matrix_alloc(N,M); + gsl_matrix * lq2 = gsl_matrix_alloc(N,M); + gsl_matrix * q1 = gsl_matrix_alloc(M,M); + gsl_matrix * l1 = gsl_matrix_alloc(N,M); + gsl_matrix * q2 = gsl_matrix_alloc(M,M); + gsl_matrix * l2 = gsl_matrix_alloc(N,M); + gsl_vector * d2 = gsl_vector_alloc(GSL_MIN(M,N)); + gsl_vector * u = gsl_vector_alloc(M); + gsl_vector * v = gsl_vector_alloc(N); + gsl_vector * w = gsl_vector_alloc(M); + + gsl_matrix_transpose_memcpy(lq1,m); + gsl_matrix_transpose_memcpy(lq2,m); + for(i=0; isize1; + + gsl_vector * rhs = gsl_vector_alloc(dim); + gsl_matrix * u = gsl_matrix_alloc(dim,dim); + gsl_matrix * q = gsl_matrix_alloc(dim,dim); + gsl_vector * d = gsl_vector_alloc(dim); + gsl_vector * x = gsl_vector_calloc(dim); + gsl_matrix_memcpy(u,m); + for(i=0; isize1, N = m->size2; + unsigned long input_nans = 0; + + gsl_matrix * v = gsl_matrix_alloc(M,N); + gsl_matrix * a = gsl_matrix_alloc(M,N); + gsl_matrix * q = gsl_matrix_alloc(N,N); + gsl_matrix * dqt = gsl_matrix_alloc(N,N); + gsl_vector * d = gsl_vector_alloc(N); + gsl_vector * w = gsl_vector_alloc(N); + + gsl_matrix_memcpy(v,m); + + /* Check for nans in the input */ + for (i = 0; i 0) + continue; /* skip NaNs if present in input */ + else + { + s++; + printf("bad singular value %lu = %22.18g\n", i, di); + } + } + + if (di < 0) { + s++; + printf("singular value %lu = %22.18g < 0\n", i, di); + } + + if(i > 0 && di > di1) { + s++; + printf("singular value %lu = %22.18g vs previous %22.18g\n", i, di, di1); + } + + di1 = di; + } + + /* Scale dqt = D Q^T */ + + for (i = 0; i < N ; i++) + { + double di = gsl_vector_get (d, i); + + for (j = 0; j < N; j++) + { + double qji = gsl_matrix_get(q, j, i); + gsl_matrix_set (dqt, i, j, qji * di); + } + } + + /* compute a = v dqt */ + gsl_blas_dgemm (CblasNoTrans, CblasNoTrans, 1.0, v, dqt, 0.0, a); + + for(i=0; idata; + + for (i=0; i<9; i++) { + a[i] = lower; + } + + while (carry == 0.0) { + f = test_SV_decomp_dim(A33, 64 * GSL_DBL_EPSILON); + gsl_test(f, " SV_decomp (3x3) A=[ %g, %g, %g; %g, %g, %g; %g, %g, %g]", + a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8]); + + /* increment */ + carry=1.0; + for (i=9; carry > 0.0 && i>0 && i--;) + { + double v=a[i]+carry; + carry = (v>upper) ? 1.0 : 0.0; + a[i] = (v>upper) ? lower : v; + } + } + } + +#ifdef TEST_SVD_4X4 + { + int i; + double carry = 0, lower = 0, upper = 1; + double *a = A44->data; + + for (i=0; i<16; i++) { + a[i] = lower; + } + + while (carry == 0.0) { + f = test_SV_decomp_dim(A44, 64 * GSL_DBL_EPSILON); + gsl_test(f, " SV_decomp (4x4) A=[ %g, %g, %g, %g; %g, %g, %g, %g; %g, %g, %g, %g; %g, %g, %g, %g]", + a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], + a[10], a[11], a[12], a[13], a[14], a[15]); + + /* increment */ + carry=1.0; + for (i=16; carry > 0.0 && i>0 && i--;) + { + double v=a[i]+carry; + carry = (v>upper) ? 1.0 : 0.0; + a[i] = (v>upper) ? lower : v; + } + } + } +#endif + + return s; +} + + +int +test_SV_decomp_mod_dim(const gsl_matrix * m, double eps) +{ + int s = 0; + double di1; + unsigned long i,j, M = m->size1, N = m->size2; + + gsl_matrix * v = gsl_matrix_alloc(M,N); + gsl_matrix * a = gsl_matrix_alloc(M,N); + gsl_matrix * q = gsl_matrix_alloc(N,N); + gsl_matrix * x = gsl_matrix_alloc(N,N); + gsl_matrix * dqt = gsl_matrix_alloc(N,N); + gsl_vector * d = gsl_vector_alloc(N); + gsl_vector * w = gsl_vector_alloc(N); + + gsl_matrix_memcpy(v,m); + + s += gsl_linalg_SV_decomp_mod(v, x, q, d, w); + + /* Check that singular values are non-negative and in non-decreasing + order */ + + di1 = 0.0; + + for (i = 0; i < N; i++) + { + double di = gsl_vector_get (d, i); + + if (gsl_isnan (di)) + { + continue; /* skip NaNs */ + } + + if (di < 0) { + s++; + printf("singular value %lu = %22.18g < 0\n", i, di); + } + + if(i > 0 && di > di1) { + s++; + printf("singular value %lu = %22.18g vs previous %22.18g\n", i, di, di1); + } + + di1 = di; + } + + /* Scale dqt = D Q^T */ + + for (i = 0; i < N ; i++) + { + double di = gsl_vector_get (d, i); + + for (j = 0; j < N; j++) + { + double qji = gsl_matrix_get(q, j, i); + gsl_matrix_set (dqt, i, j, qji * di); + } + } + + /* compute a = v dqt */ + gsl_blas_dgemm (CblasNoTrans, CblasNoTrans, 1.0, v, dqt, 0.0, a); + + for(i=0; idata; + + for (i=0; i<9; i++) { + a[i] = lower; + } + + while (carry == 0.0) { + f = test_SV_decomp_mod_dim(A33, 64 * GSL_DBL_EPSILON); + gsl_test(f, " SV_decomp_mod (3x3) A=[ %g, %g, %g; %g, %g, %g; %g, %g, %g]", + a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8]); + + /* increment */ + carry=1.0; + for (i=9; carry > 0.0 && i>0 && i--;) + { + double v=a[i]+carry; + carry = (v>upper) ? 1.0 : 0.0; + a[i] = (v>upper) ? lower : v; + } + } + } + +#ifdef TEST_SVD_4X4 + { + int i; + double carry = 0, lower = 0, upper = 1; + double *a = A44->data; + + for (i=0; i<16; i++) { + a[i] = lower; + } + + while (carry == 0.0) { + f = test_SV_decomp_mod_dim(A44, 64 * GSL_DBL_EPSILON); + gsl_test(f, " SV_decomp_mod (4x4) A=[ %g, %g, %g, %g; %g, %g, %g, %g; %g, %g, %g, %g; %g, %g, %g, %g]", + a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], + a[10], a[11], a[12], a[13], a[14], a[15]); + + /* increment */ + carry=1.0; + for (i=16; carry>0.0 && i>0 && i--;) + { + double v=a[i]+carry; + carry = (v>upper) ? 1.0 : 0.0; + a[i] = (v>upper) ? lower : v; + } + } + } +#endif + + return s; +} + + +int +test_SV_decomp_jacobi_dim(const gsl_matrix * m, double eps) +{ + int s = 0; + double di1; + unsigned long i,j, M = m->size1, N = m->size2; + + gsl_matrix * v = gsl_matrix_alloc(M,N); + gsl_matrix * a = gsl_matrix_alloc(M,N); + gsl_matrix * q = gsl_matrix_alloc(N,N); + gsl_matrix * dqt = gsl_matrix_alloc(N,N); + gsl_vector * d = gsl_vector_alloc(N); + + gsl_matrix_memcpy(v,m); + + s += gsl_linalg_SV_decomp_jacobi(v, q, d); + if (s) + printf("call returned status = %d\n", s); + + /* Check that singular values are non-negative and in non-decreasing + order */ + + di1 = 0.0; + + for (i = 0; i < N; i++) + { + double di = gsl_vector_get (d, i); + + if (gsl_isnan (di)) + { + continue; /* skip NaNs */ + } + + if (di < 0) { + s++; + printf("singular value %lu = %22.18g < 0\n", i, di); + } + + if(i > 0 && di > di1) { + s++; + printf("singular value %lu = %22.18g vs previous %22.18g\n", i, di, di1); + } + + di1 = di; + } + + /* Scale dqt = D Q^T */ + + for (i = 0; i < N ; i++) + { + double di = gsl_vector_get (d, i); + + for (j = 0; j < N; j++) + { + double qji = gsl_matrix_get(q, j, i); + gsl_matrix_set (dqt, i, j, qji * di); + } + } + + /* compute a = v dqt */ + gsl_blas_dgemm (CblasNoTrans, CblasNoTrans, 1.0, v, dqt, 0.0, a); + + for(i=0; idata; + + for (i=0; i<9; i++) { + a[i] = lower; + } + + while (carry == 0.0) { + f = test_SV_decomp_jacobi_dim(A33, 64 * GSL_DBL_EPSILON); + gsl_test(f, " SV_decomp_jacobi (3x3) A=[ %g, %g, %g; %g, %g, %g; %g, %g, %g]", + a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8]); + + /* increment */ + carry=1.0; + for (i=9; carry > 0.0 && i>0 && i--;) + { + double v=a[i]+carry; + carry = (v>upper) ? 1.0 : 0.0; + a[i] = (v>upper) ? lower : v; + } + } + } + +#ifdef TEST_SVD_4X4 + { + int i; + unsigned long k = 0; + double carry = 0, lower = 0, upper = 1; + double *a = A44->data; + + for (i=0; i<16; i++) { + a[i] = lower; + } + + while (carry == 0.0) { + k++; + f = test_SV_decomp_jacobi_dim(A44, 64 * GSL_DBL_EPSILON); + gsl_test(f, " SV_decomp_jacobi (4x4) A=[ %g, %g, %g, %g; %g, %g, %g, %g; %g, %g, %g, %g; %g, %g, %g, %g] %lu", + a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], + a[10], a[11], a[12], a[13], a[14], a[15], k); + /* increment */ + carry=1.0; + for (i=16; carry > 0.0 && i>0 && i--;) + { + double v=a[i]+carry; + carry = (v>upper) ? 1.0 : 0.0; + a[i] = (v>upper) ? lower : v; + } + } + } +#endif + + { + int i; + unsigned long k = 0; + double carry = 0, lower = 0, upper = 1; + double *a = A55->data; + + for (i=0; i<25; i++) { + a[i] = lower; + } + + while (carry == 0.0) { + k++; + + if (k % 1001 == 0) + { + f = test_SV_decomp_jacobi_dim(A55, 64 * GSL_DBL_EPSILON); + gsl_test(f, " SV_decomp_jacobi (5x5) case=%lu",k); + } + + /* increment */ + carry=1.0; + for (i=25; carry >0.0 && i>0 && i--;) + { + double v=a[i]+carry; + carry = (v>upper) ? 1.0 : 0.0; + a[i] = (v>upper) ? lower : v; + } + } + } + + + return s; +} + + +int +test_cholesky_solve_dim(const gsl_matrix * m, const double * actual, double eps) +{ + int s = 0; + unsigned long i, dim = m->size1; + + gsl_vector * rhs = gsl_vector_alloc(dim); + gsl_matrix * u = gsl_matrix_alloc(dim,dim); + gsl_vector * x = gsl_vector_calloc(dim); + gsl_matrix_memcpy(u,m); + for(i=0; isize1; + + gsl_vector * rhs = gsl_vector_alloc(dim); + gsl_matrix * u = gsl_matrix_alloc(dim,dim); + gsl_vector * x = gsl_vector_calloc(dim); + gsl_vector * D = gsl_vector_calloc(dim); + gsl_matrix_memcpy(u,m); + for(i=0; isize1; + const unsigned long N = m->size2; + unsigned long i,j; + + gsl_matrix * v = gsl_matrix_alloc(M,N); + gsl_matrix * a = gsl_matrix_alloc(M,N); + gsl_matrix * l = gsl_matrix_alloc(M,N); + gsl_matrix * lt = gsl_matrix_alloc(N,N); + gsl_matrix * dm = gsl_matrix_alloc(M,N); + gsl_vector * dv = gsl_vector_alloc(M); + + gsl_matrix_memcpy(v,m); + + s += gsl_linalg_cholesky_decomp_unit(v, dv); + + /* + for(i = 0; i < M; i++) + { + for(j = 0; j < N; j++) + { + printf("v[%lu,%lu]: %22.18e\n", i,j, gsl_matrix_get(v, i, j)); + } + } + + + for(i = 0; i < M; i++) + { + printf("d[%lu]: %22.18e\n", i, gsl_vector_get(dv, i)); + } + */ + + /* put L and transpose(L) into separate matrices */ + + for(i = 0; i < N ; i++) + { + for(j = 0; j < N; j++) + { + const double vij = gsl_matrix_get(v, i, j); + gsl_matrix_set (l, i, j, i>=j ? vij : 0); + gsl_matrix_set (lt, i, j, i<=j ? vij : 0); + } + } + + /* put D into its own matrix */ + + gsl_matrix_set_zero(dm); + for(i = 0; i < M; ++i) gsl_matrix_set(dm, i, i, gsl_vector_get(dv, i)); + + /* compute a = L * D * transpose(L); uses v for temp space */ + + gsl_blas_dgemm (CblasNoTrans, CblasNoTrans, 1.0, dm, lt, 0.0, v); + gsl_blas_dgemm (CblasNoTrans, CblasNoTrans, 1.0, l, v, 0.0, a); + + for(i = 0; i < M; i++) + { + for(j = 0; j < N; j++) + { + const double aij = gsl_matrix_get(a, i, j); + const double mij = gsl_matrix_get(m, i, j); + int foo = check(aij, mij, eps); + if(foo) + { + printf("(%3lu,%3lu)[%lu,%lu]: %22.18g %22.18g\n", M, N, i,j, aij, mij); + } + s += foo; + } + } + + gsl_vector_free(dv); + gsl_matrix_free(dm); + gsl_matrix_free(lt); + gsl_matrix_free(l); + gsl_matrix_free(v); + gsl_matrix_free(a); + + return s; +} + +int test_cholesky_decomp_unit(void) +{ + int f; + int s = 0; + + f = test_cholesky_decomp_unit_dim(hilb2, 2 * 8.0 * GSL_DBL_EPSILON); + gsl_test(f, " cholesky_decomp_unit hilbert(2)"); + s += f; + + f = test_cholesky_decomp_unit_dim(hilb3, 2 * 64.0 * GSL_DBL_EPSILON); + gsl_test(f, " cholesky_decomp_unit hilbert(3)"); + s += f; + + f = test_cholesky_decomp_unit_dim(hilb4, 2 * 1024.0 * GSL_DBL_EPSILON); + gsl_test(f, " cholesky_decomp_unit hilbert(4)"); + s += f; + + f = test_cholesky_decomp_unit_dim(hilb12, 2 * 1024.0 * GSL_DBL_EPSILON); + gsl_test(f, " cholesky_decomp_unit hilbert(12)"); + s += f; + + return s; +} + +int +test_choleskyc_solve_dim(const gsl_matrix_complex * m, const gsl_vector_complex * actual, double eps) +{ + int s = 0; + unsigned long i, dim = m->size1; + gsl_complex z; + gsl_vector_complex * rhs = gsl_vector_complex_alloc(dim); + gsl_matrix_complex * u = gsl_matrix_complex_alloc(dim,dim); + gsl_vector_complex * x = gsl_vector_complex_calloc(dim); + GSL_SET_IMAG(&z, 0.0); + gsl_matrix_complex_memcpy(u,m); + for(i=0; isize1, N = m->size2; + + gsl_matrix_complex * v = gsl_matrix_complex_alloc(M,N); + gsl_matrix_complex * a = gsl_matrix_complex_alloc(M,N); + gsl_matrix_complex * l = gsl_matrix_complex_alloc(M,N); + gsl_matrix_complex * lh = gsl_matrix_complex_alloc(N,N); + + gsl_matrix_complex_memcpy(v, m); + gsl_matrix_complex_set_zero(l); + gsl_matrix_complex_set_zero(lh); + + s += gsl_linalg_complex_cholesky_decomp(v); + + /* Compute L L^H */ + + for (i = 0; i < N ; i++) + { + for (j = 0; j <= i; j++) + { + gsl_complex vij = gsl_matrix_complex_get(v, i, j); + gsl_matrix_complex_set (l, i, j, vij); + gsl_matrix_complex_set (lh, j, i, gsl_complex_conjugate(vij)); + } + } + + /* compute a = l lh */ + gsl_blas_zgemm (CblasNoTrans, + CblasNoTrans, + GSL_COMPLEX_ONE, + l, + lh, + GSL_COMPLEX_ZERO, + a); + + for(i=0; isize1; + gsl_complex af, bt; + gsl_matrix_complex * v = gsl_matrix_complex_alloc(N, N); + gsl_matrix_complex * c = gsl_matrix_complex_alloc(N, N); + + gsl_matrix_complex_memcpy(v, m); + + s += gsl_linalg_complex_cholesky_decomp(v); + s += gsl_linalg_complex_cholesky_invert(v); + + GSL_SET_COMPLEX(&af, 1.0, 0.0); + GSL_SET_COMPLEX(&bt, 0.0, 0.0); + gsl_blas_zhemm(CblasLeft, CblasUpper, af, m, v, bt, c); + + /* c should be the identity matrix */ + + for (i = 0; i < N; ++i) + { + for (j = 0; j < N; ++j) + { + int foo; + gsl_complex cij = gsl_matrix_complex_get(c, i, j); + double expected, actual; + + /* check real part */ + if (i == j) + expected = 1.0; + else + expected = 0.0; + actual = GSL_REAL(cij); + foo = check(actual, expected, eps); + if (foo) + printf("REAL(%3lu,%3lu)[%lu,%lu]: %22.18g %22.18g\n", + N, N, i,j, actual, expected); + s += foo; + + /* check imaginary part */ + expected = 0.0; + actual = GSL_IMAG(cij); + foo = check(actual, expected, eps); + if (foo) + printf("IMAG(%3lu,%3lu)[%lu,%lu]: %22.18g %22.18g\n", + N, N, i,j, actual, expected); + s += foo; + + } + } + + gsl_matrix_complex_free(v); + gsl_matrix_complex_free(c); + + return s; +} + +int +test_choleskyc_invert(void) +{ + int f; + int s = 0; + + double dat2[] = { + 92.303, 0.000, 10.858, 1.798, + 10.858, -1.798, 89.027, 0.000 + }; + + double dat3[] = { + 59.75,0, 49.25,172.25, 66.75,-162.75, + 49.25,-172.25, 555.5,0, -429,-333.5, + 66.75,162.75, -429,333.5, 536.5,0 + }; + + double dat4[] = { + 102.108, 0.000, 14.721, 1.343, -17.480, 15.591, 3.308, -2.936, + 14.721, -1.343, 101.970, 0.000, 11.671, -6.776, -5.009, -2.665, + -17.480, -15.591, 11.671, 6.776, 105.071, 0.000, 3.396, 6.276, + 3.308, 2.936, -5.009, 2.665, 3.396, -6.276, 107.128, 0.000 + }; + + { + gsl_matrix_complex_view rv2 = gsl_matrix_complex_view_array(dat2, 2, 2); + f = test_choleskyc_invert_dim(&rv2.matrix, 2 * 8.0 * GSL_DBL_EPSILON); + gsl_test(f, " choleskyc_invert 2x2 Hermitian"); + s += f; + } + + { + gsl_matrix_complex_view rv3 = gsl_matrix_complex_view_array(dat3, 3, 3); + f = test_choleskyc_invert_dim(&rv3.matrix, 2 * 1024.0 * GSL_DBL_EPSILON); + gsl_test(f, " choleskyc_invert 3x3 Hermitian"); + s += f; + } + + { + gsl_matrix_complex_view rv4 = gsl_matrix_complex_view_array(dat4, 4, 4); + f = test_choleskyc_invert_dim(&rv4.matrix, 2 * 64.0 * GSL_DBL_EPSILON); + gsl_test(f, " choleskyc_invert 4x4 Hermitian"); + s += f; + } + + return s; +} + +int +test_HH_solve_dim(const gsl_matrix * m, const double * actual, double eps) +{ + int s = 0; + unsigned long i, dim = m->size1; + + gsl_permutation * perm = gsl_permutation_alloc(dim); + gsl_matrix * hh = gsl_matrix_alloc(dim,dim); + gsl_vector * d = gsl_vector_alloc(dim); + gsl_vector * x = gsl_vector_alloc(dim); + gsl_matrix_memcpy(hh,m); + for(i=0; isize1, N = m->size2; + + gsl_matrix * A = gsl_matrix_alloc(M,N); + gsl_matrix * a = gsl_matrix_alloc(M,N); + gsl_matrix * b = gsl_matrix_alloc(N,N); + + gsl_matrix * u = gsl_matrix_alloc(M,N); + gsl_matrix * v = gsl_matrix_alloc(N,N); + + gsl_vector * tau1 = gsl_vector_alloc(N); + gsl_vector * tau2 = gsl_vector_alloc(N-1); + gsl_vector * d = gsl_vector_alloc(N); + gsl_vector * sd = gsl_vector_alloc(N-1); + + gsl_matrix_memcpy(A,m); + + s += gsl_linalg_bidiag_decomp(A, tau1, tau2); + s += gsl_linalg_bidiag_unpack(A, tau1, u, tau2, v, d, sd); + + gsl_matrix_set_zero(b); + for (i = 0; i < N; i++) gsl_matrix_set(b, i,i, gsl_vector_get(d,i)); + for (i = 0; i < N-1; i++) gsl_matrix_set(b, i,i+1, gsl_vector_get(sd,i)); + + /* Compute A = U B V^T */ + + for (i = 0; i < M ; i++) + { + for (j = 0; j < N; j++) + { + double sum = 0; + + for (k = 0; k < N; k++) + { + for (r = 0; r < N; r++) + { + sum += gsl_matrix_get(u, i, k) * gsl_matrix_get (b, k, r) + * gsl_matrix_get(v, j, r); + } + } + gsl_matrix_set (a, i, j, sum); + } + } + + for(i=0; i +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "test_common.c" + +static int test_cholesky_decomp_eps(const int scale, const gsl_matrix * m, + const double expected_rcond, const double eps, + const char * desc); +static int test_cholesky_decomp(gsl_rng * r); +int test_cholesky_invert_eps(const gsl_matrix * m, const double eps, const char *desc); +int test_cholesky_invert(gsl_rng * r); +static int test_pcholesky_decomp_eps(const int scale, const gsl_matrix * m, + const double expected_rcond, const double eps, + const char * desc); +static int test_pcholesky_decomp(gsl_rng * r); +int test_pcholesky_solve_eps(const int scale, const gsl_matrix * m, const gsl_vector * rhs, + const gsl_vector * sol, const double eps, + const char * desc); +static int test_pcholesky_solve(gsl_rng * r); +int test_pcholesky_invert_eps(const gsl_matrix * m, const double eps, const char *desc); +int test_pcholesky_invert(gsl_rng * r); + +static int test_mcholesky_decomp_eps(const int posdef, const int scale, const gsl_matrix * m, + const double expected_rcond, const double eps, const char * desc); + +/* Hilbert matrix condition numbers, as calculated by LAPACK DPOSVX */ +double hilb_rcond[] = { 1.000000000000e+00, 3.703703703704e-02, 1.336898395722e-03, + 3.524229074890e-05, 1.059708198754e-06, 3.439939465186e-08, + 1.015027593823e-09, 2.952221630602e-11, 9.093751565191e-13, + 2.828277420229e-14, 8.110242564869e-16, 2.409320075800e-17 }; + +static int +test_cholesky_decomp_eps(const int scale, const gsl_matrix * m, + const double expected_rcond, const double eps, + const char * desc) +{ + int s = 0; + size_t i, j, N = m->size2; + + gsl_matrix * V = gsl_matrix_alloc(N, N); + gsl_matrix * A = gsl_matrix_alloc(N, N); + gsl_matrix * L = gsl_matrix_calloc(N, N); + gsl_matrix * LT = gsl_matrix_calloc(N, N); + gsl_vector * S = gsl_vector_alloc(N); + + gsl_matrix_memcpy(V, m); + + if (scale) + s += gsl_linalg_cholesky_decomp2(V, S); + else + s += gsl_linalg_cholesky_decomp1(V); + + /* compute L and LT */ + gsl_matrix_tricpy('L', 1, L, V); + gsl_matrix_transpose_tricpy('L', 1, LT, L); + + if (scale) + { + /* L <- S^{-1} L, LT <- LT S^{-1} */ + for (i = 0; i < N; ++i) + { + double Si = gsl_vector_get(S, i); + gsl_vector_view v = gsl_matrix_row(L, i); + gsl_vector_view w = gsl_matrix_column(LT, i); + + gsl_vector_scale(&v.vector, 1.0 / Si); + gsl_vector_scale(&w.vector, 1.0 / Si); + } + } + + /* compute A = L LT */ + gsl_blas_dgemm (CblasNoTrans, CblasNoTrans, 1.0, L, LT, 0.0, A); + + for (i = 0; i < N; i++) + { + for (j = 0; j < N; j++) + { + double Aij = gsl_matrix_get(A, i, j); + double mij = gsl_matrix_get(m, i, j); + + gsl_test_rel(Aij, mij, eps, + "%s: (%3lu,%3lu)[%lu,%lu]: %22.18g %22.18g\n", + desc, N, N, i, j, Aij, mij); + } + } + + if (expected_rcond > 0 && !scale) + { + gsl_vector *work = gsl_vector_alloc(3 * N); + double rcond; + + gsl_linalg_cholesky_rcond(V, &rcond, work); + + gsl_test_rel(rcond, expected_rcond, 1.0e-6, + "%s rcond: (%3lu,%3lu): %22.18g %22.18g\n", + desc, N, N, rcond, expected_rcond); + + gsl_vector_free(work); + } + + gsl_matrix_free(V); + gsl_matrix_free(A); + gsl_matrix_free(L); + gsl_matrix_free(LT); + gsl_vector_free(S); + + return s; +} + +static int +test_cholesky_decomp(gsl_rng * r) +{ + int s = 0; + const size_t N_max = 50; + size_t N; + + for (N = 1; N <= N_max; ++N) + { + gsl_matrix * m = gsl_matrix_alloc(N, N); + + create_posdef_matrix(m, r); + test_cholesky_decomp_eps(0, m, -1.0, 1.0e2 * N * GSL_DBL_EPSILON, "cholesky_decomp unscaled random"); + test_cholesky_decomp_eps(1, m, -1.0, 1.0e2 * N * GSL_DBL_EPSILON, "cholesky_decomp scaled random"); + + if (N <= 12) + { + double expected_rcond = -1.0; + + if (hilb_rcond[N - 1] > 1.0e-12) + expected_rcond = hilb_rcond[N - 1]; + + create_hilbert_matrix2(m); + + test_cholesky_decomp_eps(0, m, expected_rcond, N * GSL_DBL_EPSILON, "cholesky_decomp unscaled hilbert"); + test_cholesky_decomp_eps(1, m, expected_rcond, N * GSL_DBL_EPSILON, "cholesky_decomp scaled hilbert"); + } + + gsl_matrix_free(m); + } + + return s; +} + +int +test_cholesky_invert_eps(const gsl_matrix * m, const double eps, const char *desc) +{ + int s = 0; + size_t i, j, N = m->size1; + + gsl_matrix * v = gsl_matrix_alloc(N, N); + gsl_matrix * c = gsl_matrix_alloc(N, N); + + gsl_matrix_memcpy(v, m); + + s += gsl_linalg_cholesky_decomp1(v); + s += gsl_linalg_cholesky_invert(v); + + /* c = m m^{-1} */ + gsl_blas_dsymm(CblasLeft, CblasUpper, 1.0, m, v, 0.0, c); + + /* c should be the identity matrix */ + + for (i = 0; i < N; ++i) + { + for (j = 0; j < N; ++j) + { + double cij = gsl_matrix_get(c, i, j); + double expected = (i == j) ? 1.0 : 0.0; + + gsl_test_rel(cij, expected, eps, "%s (%3lu,%3lu)[%lu,%lu]: %22.18g %22.18g\n", + desc, N, N, i, j, cij, expected); + } + } + + gsl_matrix_free(v); + gsl_matrix_free(c); + + return s; +} + +int +test_cholesky_invert(gsl_rng * r) +{ + int s = 0; + const size_t N_max = 50; + size_t N; + + for (N = 1; N <= N_max; ++N) + { + gsl_matrix * m = gsl_matrix_alloc(N, N); + + create_posdef_matrix(m, r); + + test_cholesky_invert_eps(m, N * GSL_DBL_EPSILON, "cholesky_invert unscaled random"); + + if (N <= 4) + { + create_hilbert_matrix2(m); + test_cholesky_invert_eps(m, N * 256.0 * GSL_DBL_EPSILON, "cholesky_invert unscaled hilbert"); + } + + gsl_matrix_free(m); + } + + return s; +} + +static int +test_mcholesky_decomp_eps(const int posdef, const int scale, const gsl_matrix * m, + const double expected_rcond, const double eps, const char * desc) +{ + int s = 0; + size_t i, j, N = m->size2; + + gsl_matrix * LDLT = gsl_matrix_alloc(N, N); + gsl_matrix * V = gsl_matrix_alloc(N, N); + gsl_matrix * A = gsl_matrix_alloc(N, N); + gsl_matrix * L = gsl_matrix_alloc(N, N); + gsl_matrix * LT = gsl_matrix_alloc(N, N); + gsl_vector * S = gsl_vector_alloc(N); + gsl_vector * E = gsl_vector_alloc(N); + gsl_permutation * perm = gsl_permutation_alloc(N); + + gsl_vector_view D = gsl_matrix_diagonal(LDLT); + + gsl_matrix_memcpy(LDLT, m); + s += gsl_linalg_mcholesky_decomp(LDLT, perm, E); + + /* check that the upper triangle of LDLT equals original matrix */ + for (i = 0; i < N; ++i) + { + for (j = i + 1; j < N; ++j) + { + double mij = gsl_matrix_get(m, i, j); + double aij = gsl_matrix_get(LDLT, i, j); + + gsl_test_rel(aij, mij, 1.0e-12, + "%s upper triangle: (%3lu,%3lu)[%lu,%lu]: %22.18g %22.18g\n", + desc, N, N, i, j, aij, mij); + } + } + + if (posdef) + { + /* ||E|| should be 0 */ + double norm = gsl_blas_dnrm2(E); + s = norm != 0.0; + gsl_test(s, "%s: (%zu,%zu): ||E|| = %.12e", + desc, N, N, norm); + + /* check that D is decreasing */ + s = 0; + for (i = 1; i < N; ++i) + { + double dprev = gsl_vector_get(&D.vector, i - 1); + double di = gsl_vector_get(&D.vector, i); + + if (di > dprev) + s = 1; + } + + gsl_test(s, "%s: (%zu,%zu): D is not decreasing", + desc, N, N); + } + + /* compute L and LT */ + gsl_matrix_set_identity(L); + gsl_matrix_set_identity(LT); + + gsl_matrix_tricpy('L', 0, L, LDLT); + gsl_matrix_transpose_tricpy('L', 0, LT, L); + + /* compute (L sqrt(D)) and (sqrt(D) LT) */ + for (i = 0; i < N; ++i) + { + gsl_vector_view v = gsl_matrix_column(L, i); + gsl_vector_view w = gsl_matrix_row(LT, i); + double di = gsl_vector_get(&D.vector, i); + + gsl_vector_scale(&v.vector, sqrt(di)); + gsl_vector_scale(&w.vector, sqrt(di)); + } + + /* compute A = L D LT */ + gsl_blas_dgemm (CblasNoTrans, CblasNoTrans, 1.0, L, LT, 0.0, A); + + /* compute V = P (S M S + E) P^T */ + + gsl_matrix_memcpy(V, m); + D = gsl_matrix_diagonal(V); + + /* compute S M S */ + if (scale) + { + gsl_linalg_cholesky_scale_apply(V, S); + gsl_matrix_transpose_tricpy('L', 0, V, V); + } + + /* compute S M S + E */ + gsl_vector_add(&D.vector, E); + + /* compute M P^T */ + for (i = 0; i < N; ++i) + { + gsl_vector_view v = gsl_matrix_row(V, i); + gsl_permute_vector(perm, &v.vector); + } + + /* compute P M P^T */ + for (i = 0; i < N; ++i) + { + gsl_vector_view v = gsl_matrix_column(V, i); + gsl_permute_vector(perm, &v.vector); + } + + for (i = 0; i < N; i++) + { + double Ei = gsl_vector_get(E, i); + + for (j = 0; j < N; j++) + { + double Aij = gsl_matrix_get(A, i, j); /* L D L^T */ + double Bij = gsl_matrix_get(V, i, j); /* P M P^T */ + double Cij; /* P M P^T + E */ + + if (i == j) + Cij = Bij + Ei*0; + else + Cij = Bij; + + gsl_test_rel(Aij, Cij, eps, + "%s: (%3lu,%3lu)[%lu,%lu]: %22.18g %22.18g\n", + desc, N, N, i, j, Aij, Cij); + } + } + + if (expected_rcond > 0 && !scale) + { + gsl_vector *work = gsl_vector_alloc(3 * N); + double rcond; + + gsl_linalg_mcholesky_rcond(LDLT, perm, &rcond, work); + + gsl_test_rel(rcond, expected_rcond, 1.0e-6, + "%s rcond: (%3lu,%3lu): %22.18g %22.18g\n", + desc, N, N, rcond, expected_rcond); + + gsl_vector_free(work); + } + + gsl_matrix_free(LDLT); + gsl_matrix_free(V); + gsl_matrix_free(A); + gsl_matrix_free(L); + gsl_matrix_free(LT); + gsl_vector_free(S); + gsl_vector_free(E); + gsl_permutation_free(perm); + + return s; +} + +static int +test_mcholesky_decomp(gsl_rng * r) +{ + int s = 0; + const size_t N_max = 50; + size_t N; + + for (N = 1; N <= N_max; ++N) + { + gsl_matrix * m = gsl_matrix_alloc(N, N); + + create_posdef_matrix(m, r); + test_mcholesky_decomp_eps(1, 0, m, -1.0, 128.0 * N * GSL_DBL_EPSILON, "mcholesky_decomp unscaled random posdef"); + + create_symm_matrix(m, r); + test_mcholesky_decomp_eps(0, 0, m, -1.0, 8192.0 * N * GSL_DBL_EPSILON, "mcholesky_decomp unscaled random symm"); + + if (N <= 8) + { + double expected_rcond = -1.0; + + if (hilb_rcond[N - 1] > 1.0e-12) + expected_rcond = hilb_rcond[N - 1]; + + create_hilbert_matrix2(m); + + test_mcholesky_decomp_eps(1, 0, m, expected_rcond, 128.0 * N * GSL_DBL_EPSILON, "mcholesky_decomp unscaled hilbert"); + } + + gsl_matrix_free(m); + } + + return s; +} + +int +test_mcholesky_solve_eps(const gsl_matrix * m, const gsl_vector * rhs, + const gsl_vector * sol, const double eps, + const char * desc) +{ + int s = 0; + size_t i, N = m->size1; + gsl_matrix * u = gsl_matrix_alloc(N, N); + gsl_vector * x = gsl_vector_calloc(N); + gsl_vector * S = gsl_vector_alloc(N); + gsl_permutation * perm = gsl_permutation_alloc(N); + + gsl_matrix_memcpy(u, m); + + s += gsl_linalg_mcholesky_decomp(u, perm, NULL); + s += gsl_linalg_mcholesky_solve(u, perm, rhs, x); + + for (i = 0; i < N; i++) + { + double xi = gsl_vector_get(x, i); + double yi = gsl_vector_get(sol, i); + + gsl_test_rel(xi, yi, eps, + "%s: %3lu[%lu]: %22.18g %22.18g\n", + desc, N, i, xi, yi); + } + + gsl_vector_free(x); + gsl_vector_free(S); + gsl_matrix_free(u); + gsl_permutation_free(perm); + + return s; +} + +static int +test_mcholesky_solve(gsl_rng * r) +{ + int s = 0; + const size_t N_max = 50; + size_t N; + + for (N = 1; N <= N_max; ++N) + { + gsl_matrix * m = gsl_matrix_alloc(N, N); + gsl_vector * rhs = gsl_vector_alloc(N); + gsl_vector * sol = gsl_vector_alloc(N); + + create_posdef_matrix(m, r); + create_random_vector(sol, r); + gsl_blas_dsymv(CblasLower, 1.0, m, sol, 0.0, rhs); + + test_mcholesky_solve_eps(m, rhs, sol, 64.0 * N * GSL_DBL_EPSILON, "mcholesky_solve random"); + + if (N <= 3) + { + create_hilbert_matrix2(m); + gsl_blas_dsymv(CblasLower, 1.0, m, sol, 0.0, rhs); + test_mcholesky_solve_eps(m, rhs, sol, 1.0e3 * N * GSL_DBL_EPSILON, "mcholesky_solve hilbert"); + } + + gsl_matrix_free(m); + gsl_vector_free(rhs); + gsl_vector_free(sol); + } + + return s; +} + +int +test_mcholesky_invert_eps(const gsl_matrix * m, const double eps, const char *desc) +{ + int s = 0; + size_t i, j, N = m->size1; + + gsl_matrix * v = gsl_matrix_alloc(N, N); + gsl_matrix * c = gsl_matrix_alloc(N, N); + gsl_matrix * minv = gsl_matrix_alloc(N, N); + gsl_vector * E = gsl_vector_alloc(N); + gsl_permutation * p = gsl_permutation_alloc(N); + + gsl_matrix_memcpy(v, m); + + s += gsl_linalg_mcholesky_decomp(v, p, E); + s += gsl_linalg_mcholesky_invert(v, p, minv); + + /* c = m m^{-1} */ + gsl_blas_dsymm(CblasLeft, CblasUpper, 1.0, m, minv, 0.0, c); + + /* c should be the identity matrix */ + + for (i = 0; i < N; ++i) + { + for (j = 0; j < N; ++j) + { + double cij = gsl_matrix_get(c, i, j); + double expected = (i == j) ? 1.0 : 0.0; + + gsl_test_rel(cij, expected, eps, "%s (%3lu,%3lu)[%lu,%lu]: %22.18g %22.18g\n", + desc, N, N, i, j, cij, expected); + } + } + + gsl_matrix_free(v); + gsl_matrix_free(c); + gsl_matrix_free(minv); + gsl_vector_free(E); + gsl_permutation_free(p); + + return s; +} + +int +test_mcholesky_invert(gsl_rng * r) +{ + int s = 0; + const size_t N_max = 30; + size_t N; + + for (N = 1; N <= N_max; ++N) + { + gsl_matrix * m = gsl_matrix_alloc(N, N); + + create_posdef_matrix(m, r); + test_mcholesky_invert_eps(m, N * GSL_DBL_EPSILON, "mcholesky_invert unscaled random"); + + if (N <= 4) + { + create_hilbert_matrix2(m); + test_mcholesky_invert_eps(m, 256.0 * N * GSL_DBL_EPSILON, "mcholesky_invert unscaled hilbert"); + } + + gsl_matrix_free(m); + } + + return s; +} + +static int +test_pcholesky_decomp_eps(const int scale, const gsl_matrix * m, + const double expected_rcond, const double eps, + const char * desc) +{ + int s = 0; + size_t i, j, N = m->size2; + + gsl_matrix * LDLT = gsl_matrix_alloc(N, N); + gsl_matrix * V = gsl_matrix_alloc(N, N); + gsl_matrix * A = gsl_matrix_alloc(N, N); + gsl_matrix * L = gsl_matrix_alloc(N, N); + gsl_matrix * LT = gsl_matrix_alloc(N, N); + gsl_vector * S = gsl_vector_alloc(N); + gsl_permutation * perm = gsl_permutation_alloc(N); + + gsl_vector_view D = gsl_matrix_diagonal(LDLT); + + gsl_matrix_memcpy(LDLT, m); + + if (scale) + s += gsl_linalg_pcholesky_decomp2(LDLT, perm, S); + else + s += gsl_linalg_pcholesky_decomp(LDLT, perm); + + /* check that the upper triangle of LDLT equals original matrix */ + for (i = 0; i < N; ++i) + { + for (j = i + 1; j < N; ++j) + { + double mij = gsl_matrix_get(m, i, j); + double aij = gsl_matrix_get(LDLT, i, j); + + gsl_test_rel(aij, mij, 1.0e-12, + "%s upper triangle: (%3lu,%3lu)[%lu,%lu]: %22.18g %22.18g\n", + desc, N, N, i, j, aij, mij); + } + } + + /* check that D is decreasing */ + s = 0; + for (i = 1; i < N; ++i) + { + double dprev = gsl_vector_get(&D.vector, i - 1); + double di = gsl_vector_get(&D.vector, i); + + if (di > dprev) + s = 1; + } + + gsl_test(s, "%s: (%zu,%zu): D is not decreasing", + desc, N, N); + + /* compute L and LT */ + gsl_matrix_set_identity(L); + gsl_matrix_set_identity(LT); + + gsl_matrix_tricpy('L', 0, L, LDLT); + gsl_matrix_transpose_tricpy('L', 0, LT, L); + + /* compute (L sqrt(D)) and (sqrt(D) LT) */ + for (i = 0; i < N; ++i) + { + gsl_vector_view v = gsl_matrix_column(L, i); + gsl_vector_view w = gsl_matrix_row(LT, i); + double di = gsl_vector_get(&D.vector, i); + + gsl_vector_scale(&v.vector, sqrt(di)); + gsl_vector_scale(&w.vector, sqrt(di)); + } + + /* compute A = L D LT */ + gsl_blas_dgemm (CblasNoTrans, CblasNoTrans, 1.0, L, LT, 0.0, A); + + /* compute V = P S M S P^T */ + + gsl_matrix_memcpy(V, m); + + /* compute S M S */ + if (scale) + { + gsl_linalg_cholesky_scale_apply(V, S); + gsl_matrix_transpose_tricpy('L', 0, V, V); + } + + /* compute M P^T */ + for (i = 0; i < N; ++i) + { + gsl_vector_view v = gsl_matrix_row(V, i); + gsl_permute_vector(perm, &v.vector); + } + + /* compute P M P^T */ + for (i = 0; i < N; ++i) + { + gsl_vector_view v = gsl_matrix_column(V, i); + gsl_permute_vector(perm, &v.vector); + } + + for (i = 0; i < N; i++) + { + for (j = 0; j < N; j++) + { + double Aij = gsl_matrix_get(A, i, j); /* L D L^T */ + double Bij = gsl_matrix_get(V, i, j); /* P M P^T */ + + gsl_test_rel(Aij, Bij, eps, + "%s: (%3lu,%3lu)[%lu,%lu]: %22.18g %22.18g\n", + desc, N, N, i, j, Aij, Bij); + } + } + + if (expected_rcond > 0 && !scale) + { + gsl_vector *work = gsl_vector_alloc(3 * N); + double rcond; + + gsl_linalg_pcholesky_rcond(LDLT, perm, &rcond, work); + + gsl_test_rel(rcond, expected_rcond, 1.0e-6, + "%s rcond: (%3lu,%3lu): %22.18g %22.18g\n", + desc, N, N, rcond, expected_rcond); + + gsl_vector_free(work); + } + + gsl_matrix_free(LDLT); + gsl_matrix_free(V); + gsl_matrix_free(A); + gsl_matrix_free(L); + gsl_matrix_free(LT); + gsl_vector_free(S); + gsl_permutation_free(perm); + + return s; +} + +static int +test_pcholesky_decomp(gsl_rng * r) +{ + int s = 0; + const size_t N_max = 50; + size_t N; + + for (N = 1; N <= N_max; ++N) + { + gsl_matrix * m = gsl_matrix_alloc(N, N); + + create_posdef_matrix(m, r); + test_pcholesky_decomp_eps(0, m, -1.0, 1024.0 * N * GSL_DBL_EPSILON, "pcholesky_decomp unscaled random"); + test_pcholesky_decomp_eps(1, m, -1.0, 1024.0 * N * GSL_DBL_EPSILON, "pcholesky_decomp scaled random"); + + if (N <= 12) + { + double expected_rcond = -1.0; + + if (hilb_rcond[N - 1] > 1.0e-12) + expected_rcond = hilb_rcond[N - 1]; + + create_hilbert_matrix2(m); + + test_pcholesky_decomp_eps(0, m, expected_rcond, 1024.0 * N * GSL_DBL_EPSILON, "pcholesky_decomp unscaled hilbert"); + test_pcholesky_decomp_eps(1, m, expected_rcond, 1024.0 * N * GSL_DBL_EPSILON, "pcholesky_decomp scaled hilbert"); + } + + gsl_matrix_free(m); + } + + return s; +} + +int +test_pcholesky_solve_eps(const int scale, const gsl_matrix * m, const gsl_vector * rhs, + const gsl_vector * sol, const double eps, + const char * desc) +{ + int s = 0; + size_t i, N = m->size1; + gsl_matrix * u = gsl_matrix_alloc(N, N); + gsl_vector * x = gsl_vector_calloc(N); + gsl_vector * S = gsl_vector_alloc(N); + gsl_permutation * perm = gsl_permutation_alloc(N); + + gsl_matrix_memcpy(u, m); + + if (scale) + { + s += gsl_linalg_pcholesky_decomp2(u, perm, S); + s += gsl_linalg_pcholesky_solve2(u, perm, S, rhs, x); + } + else + { + s += gsl_linalg_pcholesky_decomp(u, perm); + s += gsl_linalg_pcholesky_solve(u, perm, rhs, x); + } + + for (i = 0; i < N; i++) + { + double xi = gsl_vector_get(x, i); + double yi = gsl_vector_get(sol, i); + + gsl_test_rel(xi, yi, eps, + "%s: %3lu[%lu]: %22.18g %22.18g\n", + desc, N, i, xi, yi); + } + + gsl_vector_free(x); + gsl_vector_free(S); + gsl_matrix_free(u); + gsl_permutation_free(perm); + + return s; +} + +static int +test_pcholesky_solve(gsl_rng * r) +{ + int s = 0; + const size_t N_max = 50; + size_t N; + + for (N = 1; N <= N_max; ++N) + { + gsl_matrix * m = gsl_matrix_alloc(N, N); + gsl_vector * rhs = gsl_vector_alloc(N); + gsl_vector * sol = gsl_vector_alloc(N); + + create_posdef_matrix(m, r); + create_random_vector(sol, r); + gsl_blas_dsymv(CblasLower, 1.0, m, sol, 0.0, rhs); + + test_pcholesky_solve_eps(0, m, rhs, sol, 64.0 * N * GSL_DBL_EPSILON, "pcholesky_solve unscaled random"); + test_pcholesky_solve_eps(1, m, rhs, sol, 64.0 * N * GSL_DBL_EPSILON, "pcholesky_solve scaled random"); + + if (N <= 3) + { + create_hilbert_matrix2(m); + gsl_blas_dsymv(CblasLower, 1.0, m, sol, 0.0, rhs); + test_pcholesky_solve_eps(0, m, rhs, sol, 1024.0 * N * GSL_DBL_EPSILON, "pcholesky_solve unscaled hilbert"); + test_pcholesky_solve_eps(1, m, rhs, sol, 2048.0 * N * GSL_DBL_EPSILON, "pcholesky_solve scaled hilbert"); + } + + gsl_matrix_free(m); + gsl_vector_free(rhs); + gsl_vector_free(sol); + } + + return s; +} + +int +test_pcholesky_invert_eps(const gsl_matrix * m, const double eps, const char *desc) +{ + int s = 0; + size_t i, j, N = m->size1; + + gsl_matrix * v = gsl_matrix_alloc(N, N); + gsl_matrix * c = gsl_matrix_alloc(N, N); + gsl_matrix * minv = gsl_matrix_alloc(N, N); + gsl_permutation * p = gsl_permutation_alloc(N); + + gsl_matrix_memcpy(v, m); + + s += gsl_linalg_pcholesky_decomp(v, p); + s += gsl_linalg_pcholesky_invert(v, p, minv); + + /* c = m m^{-1} */ + gsl_blas_dsymm(CblasLeft, CblasUpper, 1.0, m, minv, 0.0, c); + + /* c should be the identity matrix */ + + for (i = 0; i < N; ++i) + { + for (j = 0; j < N; ++j) + { + double cij = gsl_matrix_get(c, i, j); + double expected = (i == j) ? 1.0 : 0.0; + + gsl_test_rel(cij, expected, eps, "%s (%3lu,%3lu)[%lu,%lu]: %22.18g %22.18g\n", + desc, N, N, i, j, cij, expected); + } + } + + gsl_matrix_free(v); + gsl_matrix_free(c); + gsl_matrix_free(minv); + gsl_permutation_free(p); + + return s; +} + +int +test_pcholesky_invert(gsl_rng * r) +{ + int s = 0; + const size_t N_max = 30; + size_t N; + + for (N = 1; N <= N_max; ++N) + { + gsl_matrix * m = gsl_matrix_alloc(N, N); + + create_posdef_matrix(m, r); + test_pcholesky_invert_eps(m, N * GSL_DBL_EPSILON, "pcholesky_invert unscaled random"); + + if (N <= 4) + { + create_hilbert_matrix2(m); + test_pcholesky_invert_eps(m, 1024.0 * N * GSL_DBL_EPSILON, "pcholesky_invert unscaled hilbert"); + } + + gsl_matrix_free(m); + } + + return s; +} diff --git a/gsl-2.5/linalg/test_cod.c b/gsl-2.5/linalg/test_cod.c new file mode 100644 index 00000000..91ca7551 --- /dev/null +++ b/gsl-2.5/linalg/test_cod.c @@ -0,0 +1,428 @@ +/* linalg/test_cod.c + * + * Copyright (C) 2017 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +static int test_COD_decomp_eps(const gsl_matrix * m, const double eps, const char *desc); +static int test_COD_decomp(gsl_rng *r); +static int test_COD_lssolve_eps(const gsl_matrix * m, const double * actual, const double eps, const char *desc); +static int test_COD_lssolve(void); +static int test_COD_lssolve2_eps(const double lambda, const gsl_matrix * A, const gsl_vector * b, const double eps, const char *desc); +static int test_COD_lssolve2(gsl_rng * r); + +/* create a matrix of a given rank */ +static int +create_rank_matrix(const size_t rank, gsl_matrix * m, gsl_rng * r) +{ + const size_t M = m->size1; + const size_t N = m->size2; + size_t i; + gsl_vector *u = gsl_vector_alloc(M); + gsl_vector *v = gsl_vector_alloc(N); + + gsl_matrix_set_zero(m); + + /* add several rank-1 matrices together */ + for (i = 0; i < rank; ++i) + { + create_random_vector(u, r); + create_random_vector(v, r); + gsl_blas_dger(1.0, u, v, m); + } + + gsl_vector_free(u); + gsl_vector_free(v); + + return GSL_SUCCESS; +} + +static int +test_COD_decomp_eps(const gsl_matrix * m, const double eps, const char *desc) +{ + int s = 0; + size_t i, j, M = m->size1, N = m->size2; + size_t rank; + + gsl_matrix * QRZT = gsl_matrix_alloc(M, N); + gsl_matrix * Q = gsl_matrix_alloc(M, M); + gsl_matrix * R = gsl_matrix_alloc(M, N); + gsl_matrix * QR = gsl_matrix_alloc(M, N); + gsl_matrix * Z = gsl_matrix_alloc(N, N); + gsl_vector * tau_Q = gsl_vector_alloc(GSL_MIN(M, N)); + gsl_vector * tau_Z = gsl_vector_alloc(GSL_MIN(M, N)); + gsl_vector * work = gsl_vector_alloc(N); + gsl_matrix * lhs = gsl_matrix_alloc(M, N); + gsl_matrix * rhs = gsl_matrix_alloc(M, N); + + gsl_permutation * perm = gsl_permutation_alloc(N); + + gsl_matrix_memcpy(QRZT, m); + + s += gsl_linalg_COD_decomp(QRZT, tau_Q, tau_Z, perm, &rank, work); + s += gsl_linalg_COD_unpack(QRZT, tau_Q, tau_Z, rank, Q, R, Z); + + /* compute lhs = m P */ + gsl_matrix_memcpy(lhs, m); + gsl_permute_matrix(perm, lhs); + + /* compute rhs = Q R Z^T */ + gsl_blas_dgemm (CblasNoTrans, CblasNoTrans, 1.0, Q, R, 0.0, QR); + gsl_blas_dgemm (CblasNoTrans, CblasTrans, 1.0, QR, Z, 0.0, rhs); + + for (i = 0; i < M; i++) + { + for (j = 0; j < N; j++) + { + double aij = gsl_matrix_get(rhs, i, j); + double bij = gsl_matrix_get(lhs, i, j); + + gsl_test_rel(aij, bij, eps, "%s (%3lu,%3lu)[%lu,%lu]: %22.18g %22.18g\n", + desc, M, N, i, j, aij, bij); + } + } + + gsl_permutation_free (perm); + gsl_vector_free(work); + gsl_vector_free(tau_Q); + gsl_vector_free(tau_Z); + gsl_matrix_free(QRZT); + gsl_matrix_free(lhs); + gsl_matrix_free(rhs); + gsl_matrix_free(QR); + gsl_matrix_free(Q); + gsl_matrix_free(R); + gsl_matrix_free(Z); + + return s; +} + +static int +test_COD_decomp(gsl_rng *r) +{ + int s = 0; + size_t N; + gsl_matrix *m; + + /* test COD decomposition on Hilbert matrices */ + for (N = 1; N <= 12; ++N) + { + m = gsl_matrix_alloc(N, N); + create_hilbert_matrix2(m); + + test_COD_decomp_eps(m, 256.0 * N * GSL_DBL_EPSILON, "COD_decomp hilbert"); + + gsl_matrix_free(m); + } + + /* build some matrices of a given rank and test */ + + m = gsl_matrix_alloc(100, 50); + create_rank_matrix(26, m, r); + test_COD_decomp_eps(m, 1.0e2 * GSL_DBL_EPSILON, "COD_decomp rank 26"); + gsl_matrix_free(m); + + m = gsl_matrix_alloc(550, 200); + create_rank_matrix(176, m, r); + test_COD_decomp_eps(m, 1.0e3 * GSL_DBL_EPSILON, "COD_decomp rank 176"); + gsl_matrix_free(m); + + test_COD_decomp_eps(m35, 1.0e1 * GSL_DBL_EPSILON, "COD_decomp m(3,5)"); + test_COD_decomp_eps(m53, 1.0e1 * GSL_DBL_EPSILON, "COD_decomp m(5,3)"); + + test_COD_decomp_eps(s35, 1.0e1 * GSL_DBL_EPSILON, "COD_decomp s(3,5)"); + test_COD_decomp_eps(s53, 1.0e1 * GSL_DBL_EPSILON, "COD_decomp s(5,3)"); + + test_COD_decomp_eps(vander2, 1.0e1 * GSL_DBL_EPSILON, "COD_decomp vander(2)"); + test_COD_decomp_eps(vander3, 1.0e1 * GSL_DBL_EPSILON, "COD_decomp vander(3)"); + test_COD_decomp_eps(vander4, 1.0e1 * GSL_DBL_EPSILON, "COD_decomp vander(4)"); + test_COD_decomp_eps(vander12, 1e-3, "COD_decomp vander(12)"); /* FIXME: large tolerance needed */ + + return s; +} + +static int +test_COD_lssolve_eps(const gsl_matrix * m, const double * actual, const double eps, const char *desc) +{ + int s = 0; + size_t i, M = m->size1, N = m->size2; + + gsl_vector * lhs = gsl_vector_alloc(M); + gsl_vector * rhs = gsl_vector_alloc(M); + gsl_matrix * QRZT = gsl_matrix_alloc(M, N); + gsl_vector * tau_Q = gsl_vector_alloc(GSL_MIN(M, N)); + gsl_vector * tau_Z = gsl_vector_alloc(GSL_MIN(M, N)); + gsl_vector * work = gsl_vector_alloc(N); + gsl_vector * x = gsl_vector_alloc(N); + gsl_vector * r = gsl_vector_alloc(M); + gsl_vector * res = gsl_vector_alloc(M); + gsl_permutation * perm = gsl_permutation_alloc(N); + size_t rank; + + gsl_matrix_memcpy(QRZT, m); + + for (i = 0; i < M; i++) + gsl_vector_set(rhs, i, i + 1.0); + + s += gsl_linalg_COD_decomp(QRZT, tau_Q, tau_Z, perm, &rank, work); + s += gsl_linalg_COD_lssolve(QRZT, tau_Q, tau_Z, perm, rank, rhs, x, res); + + for (i = 0; i < N; i++) + { + double xi = gsl_vector_get(x, i); + gsl_test_rel(xi, actual[i], eps, + "%s (%3lu,%3lu)[%lu]: %22.18g %22.18g\n", + desc, M, N, i, xi, actual[i]); + } + + /* compute residual r = b - m x */ + if (M == N) + { + gsl_vector_set_zero(r); + } + else + { + gsl_vector_memcpy(r, rhs); + gsl_blas_dgemv(CblasNoTrans, -1.0, m, x, 1.0, r); + } + + for (i = 0; i < N; i++) + { + double r1 = gsl_vector_get(res, i); + double r2 = gsl_vector_get(r, i); + + if (fabs(r2) < 1.0e3 * GSL_DBL_EPSILON) + { + gsl_test_abs(r1, r2, 10.0 * eps, + "%s res (%3lu,%3lu)[%lu]: %22.18g %22.18g\n", + desc, M, N, i, r1, r2); + } + else + { + gsl_test_rel(r1, r2, eps, + "%s res (%3lu,%3lu)[%lu]: %22.18g %22.18g\n", + desc, M, N, i, r1, r2); + } + } + + gsl_vector_free(r); + gsl_vector_free(res); + gsl_vector_free(x); + gsl_vector_free(tau_Q); + gsl_vector_free(tau_Z); + gsl_matrix_free(QRZT); + gsl_vector_free(rhs); + gsl_vector_free(lhs); + gsl_vector_free(work); + gsl_permutation_free(perm); + + return s; +} + +static int +test_COD_lssolve(void) +{ + int s = 0; + + test_COD_lssolve_eps(m53, m53_lssolution, 1.0e4 * GSL_DBL_EPSILON, "COD_lssolve m(5,3)"); + + test_COD_lssolve_eps(hilb2, hilb2_solution, 1.0e2 * GSL_DBL_EPSILON, "COD_lssolve hilbert(2)"); + test_COD_lssolve_eps(hilb3, hilb3_solution, 1.0e2 * GSL_DBL_EPSILON, "COD_lssolve hilbert(3)"); + test_COD_lssolve_eps(hilb4, hilb4_solution, 1.0e4 * GSL_DBL_EPSILON, "COD_lssolve hilbert(4)"); + + test_COD_lssolve_eps(vander2, vander2_solution, 1.0e1 * GSL_DBL_EPSILON, "COD_lssolve vander(2)"); + test_COD_lssolve_eps(vander3, vander3_solution, 1.0e1 * GSL_DBL_EPSILON, "COD_lssolve vander(3)"); + test_COD_lssolve_eps(vander4, vander4_solution, 1.0e2 * GSL_DBL_EPSILON, "COD_lssolve vander(4)"); + + /* rank-1 least squares problem from the 'lin2' test dataset for multifit_nlinear */ + { + const size_t M = 20; + const size_t N = 5; + + /* unique minimum norm solution from "Factorize" matlab package */ + const double x_ls[] = { 1.818181818181817e-02, 3.636363636363636e-02, 5.454545454545454e-02, + 7.272727272727272e-02, 9.090909090909088e-02 }; + + gsl_matrix *m = gsl_matrix_alloc(M, N); + size_t i, j; + + for (i = 0; i < M; ++i) + { + for (j = 0; j < N; ++j) + { + gsl_matrix_set(m, i, j, (i + 1.0) * (j + 1.0)); + } + } + + test_COD_lssolve_eps(m, x_ls, 1.0e2 * GSL_DBL_EPSILON, "COD_lssolve lin2"); + + gsl_matrix_free(m); + } + + return s; +} + +/* solve: min ||b - A x||^2 + lambda^2 ||x||^2 */ +static int +test_COD_lssolve2_eps(const double lambda, const gsl_matrix * A, const gsl_vector * b, const double eps, const char *desc) +{ + int s = 0; + size_t i, M = A->size1, N = A->size2; + + gsl_vector * lhs = gsl_vector_alloc(M); + gsl_matrix * QRZT = gsl_matrix_alloc(M, N); + gsl_vector * tau_Q = gsl_vector_alloc(GSL_MIN(M, N)); + gsl_vector * tau_Z = gsl_vector_alloc(GSL_MIN(M, N)); + gsl_vector * work = gsl_vector_alloc(N); + gsl_vector * x = gsl_vector_alloc(N); + gsl_vector * x_aug = gsl_vector_alloc(N); + gsl_vector * r = gsl_vector_alloc(M); + gsl_vector * res = gsl_vector_alloc(M); + gsl_permutation * perm = gsl_permutation_alloc(N); + size_t rank; + + /* form full rank augmented system B = [ A ; lambda*I_N ], f = [ rhs ; 0 ] and solve with QRPT */ + { + gsl_vector_view v; + gsl_matrix_view m; + gsl_permutation *p = gsl_permutation_alloc(N); + gsl_matrix * B = gsl_matrix_calloc(M + N, N); + gsl_vector * f = gsl_vector_calloc(M + N); + gsl_vector * tau = gsl_vector_alloc(N); + gsl_vector * residual = gsl_vector_alloc(M + N); + int signum; + + m = gsl_matrix_submatrix(B, 0, 0, M, N); + gsl_matrix_memcpy(&m.matrix, A); + + m = gsl_matrix_submatrix(B, M, 0, N, N); + v = gsl_matrix_diagonal(&m.matrix); + gsl_vector_set_all(&v.vector, lambda); + + v = gsl_vector_subvector(f, 0, M); + gsl_vector_memcpy(&v.vector, b); + + /* solve: [ A ; lambda*I ] x_aug = [ b ; 0 ] */ + gsl_linalg_QRPT_decomp(B, tau, p, &signum, work); + gsl_linalg_QRPT_lssolve(B, tau, p, f, x_aug, residual); + + gsl_permutation_free(p); + gsl_matrix_free(B); + gsl_vector_free(f); + gsl_vector_free(tau); + gsl_vector_free(residual); + } + + gsl_matrix_memcpy(QRZT, A); + + s += gsl_linalg_COD_decomp(QRZT, tau_Q, tau_Z, perm, &rank, work); + + { + gsl_matrix *S = gsl_matrix_alloc(rank, rank); + gsl_vector *workr = gsl_vector_alloc(rank); + + s += gsl_linalg_COD_lssolve2(lambda, QRZT, tau_Q, tau_Z, perm, rank, b, x, res, S, workr); + + gsl_matrix_free(S); + gsl_vector_free(workr); + } + + for (i = 0; i < N; i++) + { + double xi = gsl_vector_get(x, i); + double yi = gsl_vector_get(x_aug, i); + gsl_test_rel(xi, yi, eps, + "%s (%3lu,%3lu)[%lu]: %22.18g %22.18g\n", + desc, M, N, i, xi, yi); + } + + /* compute residual r = b - A x */ + if (M == N) + { + gsl_vector_set_zero(r); + } + else + { + gsl_vector_memcpy(r, b); + gsl_blas_dgemv(CblasNoTrans, -1.0, A, x, 1.0, r); + } + + for (i = 0; i < N; i++) + { + double xi = gsl_vector_get(res, i); + double yi = gsl_vector_get(r, i); + + gsl_test_rel(xi, yi, sqrt(eps), + "%s res (%3lu,%3lu)[%lu]: %22.18g %22.18g\n", + desc, M, N, i, xi, yi); + } + + gsl_vector_free(r); + gsl_vector_free(res); + gsl_vector_free(x); + gsl_vector_free(x_aug); + gsl_vector_free(tau_Q); + gsl_vector_free(tau_Z); + gsl_matrix_free(QRZT); + gsl_vector_free(lhs); + gsl_vector_free(work); + gsl_permutation_free(perm); + + return s; +} + +static int +test_COD_lssolve2(gsl_rng * r) +{ + int s = 0; + gsl_matrix *m; + gsl_vector *b; + size_t M, N; + const double lambda = 2.3; + + M = 100; + N = 50; + m = gsl_matrix_alloc(M, N); + b = gsl_vector_alloc(M); + create_rank_matrix(26, m, r); + create_random_vector(b, r); + test_COD_lssolve2_eps(lambda, m, b, 1.0e2 * M * GSL_DBL_EPSILON, "COD_lssolve2 rank 26"); + gsl_matrix_free(m); + gsl_vector_free(b); + + M = 500; + N = 450; + m = gsl_matrix_alloc(M, N); + b = gsl_vector_alloc(M); + create_rank_matrix(278, m, r); + create_random_vector(b, r); + test_COD_lssolve2_eps(lambda, m, b, 1.0e4 * M * GSL_DBL_EPSILON, "COD_lssolve2 rank 278"); + gsl_matrix_free(m); + gsl_vector_free(b); + + return s; +} diff --git a/gsl-2.5/linalg/test_common.c b/gsl-2.5/linalg/test_common.c new file mode 100644 index 00000000..360cc4aa --- /dev/null +++ b/gsl-2.5/linalg/test_common.c @@ -0,0 +1,105 @@ +/* linalg/test_common.c + * + * Copyright (C) 2017 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include +#include + +static int create_random_vector(gsl_vector * v, gsl_rng * r); +static int create_posdef_matrix(gsl_matrix * m, gsl_rng * r); +static int create_hilbert_matrix2(gsl_matrix * m); + +static int +create_random_vector(gsl_vector * v, gsl_rng * r) +{ + const size_t N = v->size; + size_t i; + + for (i = 0; i < N; ++i) + { + double vi = gsl_rng_uniform(r); + gsl_vector_set(v, i, vi); + } + + return GSL_SUCCESS; +} + +static int +create_symm_matrix(gsl_matrix * m, gsl_rng * r) +{ + const size_t N = m->size1; + size_t i, j; + + for (i = 0; i < N; ++i) + { + for (j = 0; j <= i; ++j) + { + double mij = gsl_rng_uniform(r); + gsl_matrix_set(m, i, j, mij); + } + } + + /* copy lower triangle to upper */ + gsl_matrix_transpose_tricpy('L', 0, m, m); + + return GSL_SUCCESS; +} + +static int +create_posdef_matrix(gsl_matrix * m, gsl_rng * r) +{ + const size_t N = m->size1; + const double alpha = 10.0 * N; + size_t i; + + /* The idea is to make a symmetric diagonally dominant + * matrix. Make a symmetric matrix and add alpha*I to + * its diagonal */ + + create_symm_matrix(m, r); + + for (i = 0; i < N; ++i) + { + double mii = gsl_matrix_get(m, i, i); + gsl_matrix_set(m, i, i, mii + alpha); + } + + return GSL_SUCCESS; +} + +static int +create_hilbert_matrix2(gsl_matrix * m) +{ + const size_t N = m->size1; + size_t i, j; + + for (i = 0; i < N; i++) + { + for (j = 0; j < N; j++) + { + gsl_matrix_set(m, i, j, 1.0/(i+j+1.0)); + } + } + + return GSL_SUCCESS; +} diff --git a/gsl-2.5/linalg/tridiag.c b/gsl-2.5/linalg/tridiag.c new file mode 100644 index 00000000..42ab71b4 --- /dev/null +++ b/gsl-2.5/linalg/tridiag.c @@ -0,0 +1,585 @@ +/* linalg/tridiag.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2002, 2004, 2007 Gerard Jungman, Brian Gough, David Necas + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ + +#include +#include +#include +#include +#include "tridiag.h" +#include + +/* for description of method see [Engeln-Mullges + Uhlig, p. 92] + * + * diag[0] offdiag[0] 0 ..... + * offdiag[0] diag[1] offdiag[1] ..... + * 0 offdiag[1] diag[2] + * 0 0 offdiag[2] ..... + */ +static +int +solve_tridiag( + const double diag[], size_t d_stride, + const double offdiag[], size_t o_stride, + const double b[], size_t b_stride, + double x[], size_t x_stride, + size_t N) +{ + int status = GSL_SUCCESS; + double *gamma = (double *) malloc (N * sizeof (double)); + double *alpha = (double *) malloc (N * sizeof (double)); + double *c = (double *) malloc (N * sizeof (double)); + double *z = (double *) malloc (N * sizeof (double)); + + if (gamma == 0 || alpha == 0 || c == 0 || z == 0) + { + GSL_ERROR("failed to allocate working space", GSL_ENOMEM); + } + else + { + size_t i, j; + + /* Cholesky decomposition + A = L.D.L^t + lower_diag(L) = gamma + diag(D) = alpha + */ + alpha[0] = diag[0]; + gamma[0] = offdiag[0] / alpha[0]; + + if (alpha[0] == 0) { + status = GSL_EZERODIV; + } + + for (i = 1; i < N - 1; i++) + { + alpha[i] = diag[d_stride * i] - offdiag[o_stride*(i - 1)] * gamma[i - 1]; + gamma[i] = offdiag[o_stride * i] / alpha[i]; + if (alpha[i] == 0) { + status = GSL_EZERODIV; + } + } + + if (N > 1) + { + alpha[N - 1] = diag[d_stride * (N - 1)] - offdiag[o_stride*(N - 2)] * gamma[N - 2]; + } + + /* update RHS */ + z[0] = b[0]; + for (i = 1; i < N; i++) + { + z[i] = b[b_stride * i] - gamma[i - 1] * z[i - 1]; + } + for (i = 0; i < N; i++) + { + c[i] = z[i] / alpha[i]; + } + + /* backsubstitution */ + x[x_stride * (N - 1)] = c[N - 1]; + if (N >= 2) + { + for (i = N - 2, j = 0; j <= N - 2; j++, i--) + { + x[x_stride * i] = c[i] - gamma[i] * x[x_stride * (i + 1)]; + } + } + } + + if (z != 0) + free (z); + if (c != 0) + free (c); + if (alpha != 0) + free (alpha); + if (gamma != 0) + free (gamma); + + if (status == GSL_EZERODIV) { + GSL_ERROR ("matrix must be positive definite", status); + } + + return status; +} + +/* plain gauss elimination, only not bothering with the zeroes + * + * diag[0] abovediag[0] 0 ..... + * belowdiag[0] diag[1] abovediag[1] ..... + * 0 belowdiag[1] diag[2] + * 0 0 belowdiag[2] ..... + */ +static +int +solve_tridiag_nonsym( + const double diag[], size_t d_stride, + const double abovediag[], size_t a_stride, + const double belowdiag[], size_t b_stride, + const double rhs[], size_t r_stride, + double x[], size_t x_stride, + size_t N) +{ + int status = GSL_SUCCESS; + double *alpha = (double *) malloc (N * sizeof (double)); + double *z = (double *) malloc (N * sizeof (double)); + + if (alpha == 0 || z == 0) + { + GSL_ERROR("failed to allocate working space", GSL_ENOMEM); + } + else + { + size_t i, j; + + /* Bidiagonalization (eliminating belowdiag) + & rhs update + diag' = alpha + rhs' = z + */ + alpha[0] = diag[0]; + z[0] = rhs[0]; + + if (alpha[0] == 0) { + status = GSL_EZERODIV; + } + + for (i = 1; i < N; i++) + { + const double t = belowdiag[b_stride*(i - 1)]/alpha[i-1]; + alpha[i] = diag[d_stride*i] - t*abovediag[a_stride*(i - 1)]; + z[i] = rhs[r_stride*i] - t*z[i-1]; + if (alpha[i] == 0) { + status = GSL_EZERODIV; + } + } + + /* backsubstitution */ + x[x_stride * (N - 1)] = z[N - 1]/alpha[N - 1]; + if (N >= 2) + { + for (i = N - 2, j = 0; j <= N - 2; j++, i--) + { + x[x_stride * i] = (z[i] - abovediag[a_stride*i] * x[x_stride * (i + 1)])/alpha[i]; + } + } + } + + if (z != 0) + free (z); + if (alpha != 0) + free (alpha); + + if (status == GSL_EZERODIV) { + GSL_ERROR ("matrix must be positive definite", status); + } + + return status; +} + +/* for description of method see [Engeln-Mullges + Uhlig, p. 96] + * + * diag[0] offdiag[0] 0 ..... offdiag[N-1] + * offdiag[0] diag[1] offdiag[1] ..... + * 0 offdiag[1] diag[2] + * 0 0 offdiag[2] ..... + * ... ... + * offdiag[N-1] ... + * + */ +static +int +solve_cyc_tridiag( + const double diag[], size_t d_stride, + const double offdiag[], size_t o_stride, + const double b[], size_t b_stride, + double x[], size_t x_stride, + size_t N) +{ + int status = GSL_SUCCESS; + double * delta = (double *) malloc (N * sizeof (double)); + double * gamma = (double *) malloc (N * sizeof (double)); + double * alpha = (double *) malloc (N * sizeof (double)); + double * c = (double *) malloc (N * sizeof (double)); + double * z = (double *) malloc (N * sizeof (double)); + + if (delta == 0 || gamma == 0 || alpha == 0 || c == 0 || z == 0) + { + GSL_ERROR("failed to allocate working space", GSL_ENOMEM); + } + else + { + size_t i, j; + double sum = 0.0; + + /* factor */ + + if (N == 1) + { + x[0] = b[0] / diag[0]; + free(delta); + free(gamma); + free(alpha); + free(c); + free(z); + return GSL_SUCCESS; + } + + alpha[0] = diag[0]; + gamma[0] = offdiag[0] / alpha[0]; + delta[0] = offdiag[o_stride * (N-1)] / alpha[0]; + + if (alpha[0] == 0) { + status = GSL_EZERODIV; + } + + for (i = 1; i < N - 2; i++) + { + alpha[i] = diag[d_stride * i] - offdiag[o_stride * (i-1)] * gamma[i - 1]; + gamma[i] = offdiag[o_stride * i] / alpha[i]; + delta[i] = -delta[i - 1] * offdiag[o_stride * (i-1)] / alpha[i]; + if (alpha[i] == 0) { + status = GSL_EZERODIV; + } + } + + for (i = 0; i < N - 2; i++) + { + sum += alpha[i] * delta[i] * delta[i]; + } + + alpha[N - 2] = diag[d_stride * (N - 2)] - offdiag[o_stride * (N - 3)] * gamma[N - 3]; + + gamma[N - 2] = (offdiag[o_stride * (N - 2)] - offdiag[o_stride * (N - 3)] * delta[N - 3]) / alpha[N - 2]; + + alpha[N - 1] = diag[d_stride * (N - 1)] - sum - alpha[(N - 2)] * gamma[N - 2] * gamma[N - 2]; + + /* update */ + z[0] = b[0]; + for (i = 1; i < N - 1; i++) + { + z[i] = b[b_stride * i] - z[i - 1] * gamma[i - 1]; + } + sum = 0.0; + for (i = 0; i < N - 2; i++) + { + sum += delta[i] * z[i]; + } + z[N - 1] = b[b_stride * (N - 1)] - sum - gamma[N - 2] * z[N - 2]; + for (i = 0; i < N; i++) + { + c[i] = z[i] / alpha[i]; + } + + /* backsubstitution */ + x[x_stride * (N - 1)] = c[N - 1]; + x[x_stride * (N - 2)] = c[N - 2] - gamma[N - 2] * x[x_stride * (N - 1)]; + if (N >= 3) + { + for (i = N - 3, j = 0; j <= N - 3; j++, i--) + { + x[x_stride * i] = c[i] - gamma[i] * x[x_stride * (i + 1)] - delta[i] * x[x_stride * (N - 1)]; + } + } + } + + if (z != 0) + free (z); + if (c != 0) + free (c); + if (alpha != 0) + free (alpha); + if (gamma != 0) + free (gamma); + if (delta != 0) + free (delta); + + if (status == GSL_EZERODIV) { + GSL_ERROR ("matrix must be positive definite", status); + } + + return status; +} + +/* solve following system w/o the corner elements and then use + * Sherman-Morrison formula to compensate for them + * + * diag[0] abovediag[0] 0 ..... belowdiag[N-1] + * belowdiag[0] diag[1] abovediag[1] ..... + * 0 belowdiag[1] diag[2] + * 0 0 belowdiag[2] ..... + * ... ... + * abovediag[N-1] ... + */ +static +int solve_cyc_tridiag_nonsym( + const double diag[], size_t d_stride, + const double abovediag[], size_t a_stride, + const double belowdiag[], size_t b_stride, + const double rhs[], size_t r_stride, + double x[], size_t x_stride, + size_t N) +{ + int status = GSL_SUCCESS; + double *alpha = (double *) malloc (N * sizeof (double)); + double *zb = (double *) malloc (N * sizeof (double)); + double *zu = (double *) malloc (N * sizeof (double)); + double *w = (double *) malloc (N * sizeof (double)); + + if (alpha == 0 || zb == 0 || zu == 0 || w == 0) + { + GSL_ERROR("failed to allocate working space", GSL_ENOMEM); + } + else + { + double beta; + + /* Bidiagonalization (eliminating belowdiag) + & rhs update + diag' = alpha + rhs' = zb + rhs' for Aq=u is zu + */ + zb[0] = rhs[0]; + if (diag[0] != 0) beta = -diag[0]; else beta = 1; + { + const double q = 1 - abovediag[0]*belowdiag[0]/(diag[0]*diag[d_stride]); + if (fabs(q/beta) > 0.5 && fabs(q/beta) < 2) { + beta *= (fabs(q/beta) < 1) ? 0.5 : 2; + } + } + zu[0] = beta; + alpha[0] = diag[0] - beta; + + if (alpha[0] == 0) { + status = GSL_EZERODIV; + } + + { + size_t i; + for (i = 1; i+1 < N; i++) + { + const double t = belowdiag[b_stride*(i - 1)]/alpha[i-1]; + alpha[i] = diag[d_stride*i] - t*abovediag[a_stride*(i - 1)]; + zb[i] = rhs[r_stride*i] - t*zb[i-1]; + zu[i] = -t*zu[i-1]; + /* FIXME!!! */ + if (alpha[i] == 0) { + status = GSL_EZERODIV; + } + } + } + + { + const size_t i = N-1; + const double t = belowdiag[b_stride*(i - 1)]/alpha[i-1]; + alpha[i] = diag[d_stride*i] + - abovediag[a_stride*i]*belowdiag[b_stride*i]/beta + - t*abovediag[a_stride*(i - 1)]; + zb[i] = rhs[r_stride*i] - t*zb[i-1]; + zu[i] = abovediag[a_stride*i] - t*zu[i-1]; + /* FIXME!!! */ + if (alpha[i] == 0) { + status = GSL_EZERODIV; + } + } + + /* backsubstitution */ + { + size_t i, j; + w[N-1] = zu[N-1]/alpha[N-1]; + x[x_stride*(N-1)] = zb[N-1]/alpha[N-1]; + for (i = N - 2, j = 0; j <= N - 2; j++, i--) + { + w[i] = (zu[i] - abovediag[a_stride*i] * w[i+1])/alpha[i]; + x[i*x_stride] = (zb[i] - abovediag[a_stride*i] * x[x_stride*(i + 1)])/alpha[i]; + } + } + + /* Sherman-Morrison */ + { + const double vw = w[0] + belowdiag[b_stride*(N - 1)]/beta * w[N-1]; + const double vx = x[0] + belowdiag[b_stride*(N - 1)]/beta * x[x_stride*(N - 1)]; + /* FIXME!!! */ + if (vw + 1 == 0) { + status = GSL_EZERODIV; + } + + { + size_t i; + for (i = 0; i < N; i++) + x[i*x_stride] -= vx/(1 + vw)*w[i]; + } + } + } + + if (zb != 0) + free (zb); + if (zu != 0) + free (zu); + if (w != 0) + free (w); + if (alpha != 0) + free (alpha); + + if (status == GSL_EZERODIV) { + GSL_ERROR ("matrix must be positive definite", status); + } + + return status; +} + +int +gsl_linalg_solve_symm_tridiag( + const gsl_vector * diag, + const gsl_vector * offdiag, + const gsl_vector * rhs, + gsl_vector * solution) +{ + if(diag->size != rhs->size) + { + GSL_ERROR ("size of diag must match rhs", GSL_EBADLEN); + } + else if (offdiag->size != rhs->size-1) + { + GSL_ERROR ("size of offdiag must match rhs-1", GSL_EBADLEN); + } + else if (solution->size != rhs->size) + { + GSL_ERROR ("size of solution must match rhs", GSL_EBADLEN); + } + else + { + return solve_tridiag(diag->data, diag->stride, + offdiag->data, offdiag->stride, + rhs->data, rhs->stride, + solution->data, solution->stride, + diag->size); + + } +} + +int +gsl_linalg_solve_tridiag( + const gsl_vector * diag, + const gsl_vector * abovediag, + const gsl_vector * belowdiag, + const gsl_vector * rhs, + gsl_vector * solution) +{ + if(diag->size != rhs->size) + { + GSL_ERROR ("size of diag must match rhs", GSL_EBADLEN); + } + else if (abovediag->size != rhs->size-1) + { + GSL_ERROR ("size of abovediag must match rhs-1", GSL_EBADLEN); + } + else if (belowdiag->size != rhs->size-1) + { + GSL_ERROR ("size of belowdiag must match rhs-1", GSL_EBADLEN); + } + else if (solution->size != rhs->size) + { + GSL_ERROR ("size of solution must match rhs", GSL_EBADLEN); + } + else + { + return solve_tridiag_nonsym(diag->data, diag->stride, + abovediag->data, abovediag->stride, + belowdiag->data, belowdiag->stride, + rhs->data, rhs->stride, + solution->data, solution->stride, + diag->size); + } +} + + +int +gsl_linalg_solve_symm_cyc_tridiag( + const gsl_vector * diag, + const gsl_vector * offdiag, + const gsl_vector * rhs, + gsl_vector * solution) +{ + if(diag->size != rhs->size) + { + GSL_ERROR ("size of diag must match rhs", GSL_EBADLEN); + } + else if (offdiag->size != rhs->size) + { + GSL_ERROR ("size of offdiag must match rhs", GSL_EBADLEN); + } + else if (solution->size != rhs->size) + { + GSL_ERROR ("size of solution must match rhs", GSL_EBADLEN); + } + else if (diag->size < 3) + { + GSL_ERROR ("size of cyclic system must be 3 or more", GSL_EBADLEN); + } + else + { + return solve_cyc_tridiag(diag->data, diag->stride, + offdiag->data, offdiag->stride, + rhs->data, rhs->stride, + solution->data, solution->stride, + diag->size); + } +} + +int +gsl_linalg_solve_cyc_tridiag( + const gsl_vector * diag, + const gsl_vector * abovediag, + const gsl_vector * belowdiag, + const gsl_vector * rhs, + gsl_vector * solution) +{ + if(diag->size != rhs->size) + { + GSL_ERROR ("size of diag must match rhs", GSL_EBADLEN); + } + else if (abovediag->size != rhs->size) + { + GSL_ERROR ("size of abovediag must match rhs", GSL_EBADLEN); + } + else if (belowdiag->size != rhs->size) + { + GSL_ERROR ("size of belowdiag must match rhs", GSL_EBADLEN); + } + else if (solution->size != rhs->size) + { + GSL_ERROR ("size of solution must match rhs", GSL_EBADLEN); + } + else if (diag->size < 3) + { + GSL_ERROR ("size of cyclic system must be 3 or more", GSL_EBADLEN); + } + else + { + return solve_cyc_tridiag_nonsym(diag->data, diag->stride, + abovediag->data, abovediag->stride, + belowdiag->data, belowdiag->stride, + rhs->data, rhs->stride, + solution->data, solution->stride, + diag->size); + } +} diff --git a/gsl-2.5/linalg/tridiag.h b/gsl-2.5/linalg/tridiag.h new file mode 100644 index 00000000..306011c6 --- /dev/null +++ b/gsl-2.5/linalg/tridiag.h @@ -0,0 +1,67 @@ +/* linalg/tridiag.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2002 Gerard Jungman, + * Brian Gough, David Necas + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman + */ +/* Low level tridiagonal solvers. + * Used internally in other areas of GSL. + */ +#ifndef __GSL_TRIDIAG_H__ +#define __GSL_TRIDIAG_H__ + +#include + +static +int solve_tridiag_nonsym( + const double diag[], size_t d_stride, + const double abovediag[], size_t a_stride, + const double belowdiag[], size_t b_stride, + const double rhs[], size_t r_stride, + double x[], size_t x_stride, + size_t N + ); + +static +int solve_tridiag( + const double diag[], size_t d_stride, + const double offdiag[], size_t o_stride, + const double b[], size_t b_stride, + double x[], size_t x_stride, + size_t N); + +static +int solve_cyc_tridiag( + const double diag[], size_t d_stride, + const double offdiag[], size_t o_stride, + const double b[], size_t b_stride, + double x[], size_t x_stride, + size_t N + ); + +static +int solve_cyc_tridiag_nonsym( + const double diag[], size_t d_stride, + const double abovediag[], size_t a_stride, + const double belowdiag[], size_t b_stride, + const double rhs[], size_t r_stride, + double x[], size_t x_stride, + size_t N); + +#endif /* __GSL_TRIDIAG_H__ */ diff --git a/gsl-2.5/linalg/tridiag.lo b/gsl-2.5/linalg/tridiag.lo new file mode 100644 index 00000000..c0b3f335 --- /dev/null +++ b/gsl-2.5/linalg/tridiag.lo @@ -0,0 +1,12 @@ +# tridiag.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/tridiag.o' + +# Name of the non-PIC object +non_pic_object='tridiag.o' + diff --git a/gsl-2.5/ltmain.sh b/gsl-2.5/ltmain.sh new file mode 100644 index 00000000..63ae69dc --- /dev/null +++ b/gsl-2.5/ltmain.sh @@ -0,0 +1,9655 @@ + +# libtool (GNU libtool) 2.4.2 +# Written by Gordon Matzigkeit , 1996 + +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, +# 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. +# This is free software; see the source for copying conditions. There is NO +# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +# GNU Libtool 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. +# +# As a special exception to the GNU General Public License, +# if you distribute this file as part of a program or library that +# is built using GNU Libtool, you may include this file under the +# same distribution terms that you use for the rest of that program. +# +# GNU Libtool 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 GNU Libtool; see the file COPYING. If not, a copy +# can be downloaded from http://www.gnu.org/licenses/gpl.html, +# or obtained by writing to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +# Usage: $progname [OPTION]... [MODE-ARG]... +# +# Provide generalized library-building support services. +# +# --config show all configuration variables +# --debug enable verbose shell tracing +# -n, --dry-run display commands without modifying any files +# --features display basic configuration information and exit +# --mode=MODE use operation mode MODE +# --preserve-dup-deps don't remove duplicate dependency libraries +# --quiet, --silent don't print informational messages +# --no-quiet, --no-silent +# print informational messages (default) +# --no-warn don't display warning messages +# --tag=TAG use configuration variables from tag TAG +# -v, --verbose print more informational messages than default +# --no-verbose don't print the extra informational messages +# --version print version information +# -h, --help, --help-all print short, long, or detailed help message +# +# MODE must be one of the following: +# +# clean remove files from the build directory +# compile compile a source file into a libtool object +# execute automatically set library path, then run a program +# finish complete the installation of libtool libraries +# install install libraries or executables +# link create a library or an executable +# uninstall remove libraries from an installed directory +# +# MODE-ARGS vary depending on the MODE. When passed as first option, +# `--mode=MODE' may be abbreviated as `MODE' or a unique abbreviation of that. +# Try `$progname --help --mode=MODE' for a more detailed description of MODE. +# +# When reporting a bug, please describe a test case to reproduce it and +# include the following information: +# +# host-triplet: $host +# shell: $SHELL +# compiler: $LTCC +# compiler flags: $LTCFLAGS +# linker: $LD (gnu? $with_gnu_ld) +# $progname: (GNU libtool) 2.4.2 +# automake: $automake_version +# autoconf: $autoconf_version +# +# Report bugs to . +# GNU libtool home page: . +# General help using GNU software: . + +PROGRAM=libtool +PACKAGE=libtool +VERSION=2.4.2 +TIMESTAMP="" +package_revision=1.3337 + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + +# NLS nuisances: We save the old values to restore during execute mode. +lt_user_locale= +lt_safe_locale= +for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES +do + eval "if test \"\${$lt_var+set}\" = set; then + save_$lt_var=\$$lt_var + $lt_var=C + export $lt_var + lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\" + lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\" + fi" +done +LC_ALL=C +LANGUAGE=C +export LANGUAGE LC_ALL + +$lt_unset CDPATH + + +# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh +# is ksh but when the shell is invoked as "sh" and the current value of +# the _XPG environment variable is not equal to 1 (one), the special +# positional parameter $0, within a function call, is the name of the +# function. +progpath="$0" + + + +: ${CP="cp -f"} +test "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'} +: ${MAKE="make"} +: ${MKDIR="mkdir"} +: ${MV="mv -f"} +: ${RM="rm -f"} +: ${SHELL="${CONFIG_SHELL-/bin/sh}"} +: ${Xsed="$SED -e 1s/^X//"} + +# Global variables: +EXIT_SUCCESS=0 +EXIT_FAILURE=1 +EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. +EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. + +exit_status=$EXIT_SUCCESS + +# Make sure IFS has a sensible default +lt_nl=' +' +IFS=" $lt_nl" + +dirname="s,/[^/]*$,," +basename="s,^.*/,," + +# func_dirname file append nondir_replacement +# Compute the dirname of FILE. If nonempty, add APPEND to the result, +# otherwise set result to NONDIR_REPLACEMENT. +func_dirname () +{ + func_dirname_result=`$ECHO "${1}" | $SED "$dirname"` + if test "X$func_dirname_result" = "X${1}"; then + func_dirname_result="${3}" + else + func_dirname_result="$func_dirname_result${2}" + fi +} # func_dirname may be replaced by extended shell implementation + + +# func_basename file +func_basename () +{ + func_basename_result=`$ECHO "${1}" | $SED "$basename"` +} # func_basename may be replaced by extended shell implementation + + +# func_dirname_and_basename file append nondir_replacement +# perform func_basename and func_dirname in a single function +# call: +# dirname: Compute the dirname of FILE. If nonempty, +# add APPEND to the result, otherwise set result +# to NONDIR_REPLACEMENT. +# value returned in "$func_dirname_result" +# basename: Compute filename of FILE. +# value retuned in "$func_basename_result" +# Implementation must be kept synchronized with func_dirname +# and func_basename. For efficiency, we do not delegate to +# those functions but instead duplicate the functionality here. +func_dirname_and_basename () +{ + # Extract subdirectory from the argument. + func_dirname_result=`$ECHO "${1}" | $SED -e "$dirname"` + if test "X$func_dirname_result" = "X${1}"; then + func_dirname_result="${3}" + else + func_dirname_result="$func_dirname_result${2}" + fi + func_basename_result=`$ECHO "${1}" | $SED -e "$basename"` +} # func_dirname_and_basename may be replaced by extended shell implementation + + +# func_stripname prefix suffix name +# strip PREFIX and SUFFIX off of NAME. +# PREFIX and SUFFIX must not contain globbing or regex special +# characters, hashes, percent signs, but SUFFIX may contain a leading +# dot (in which case that matches only a dot). +# func_strip_suffix prefix name +func_stripname () +{ + case ${2} in + .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; + *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; + esac +} # func_stripname may be replaced by extended shell implementation + + +# These SED scripts presuppose an absolute path with a trailing slash. +pathcar='s,^/\([^/]*\).*$,\1,' +pathcdr='s,^/[^/]*,,' +removedotparts=':dotsl + s@/\./@/@g + t dotsl + s,/\.$,/,' +collapseslashes='s@/\{1,\}@/@g' +finalslash='s,/*$,/,' + +# func_normal_abspath PATH +# Remove doubled-up and trailing slashes, "." path components, +# and cancel out any ".." path components in PATH after making +# it an absolute path. +# value returned in "$func_normal_abspath_result" +func_normal_abspath () +{ + # Start from root dir and reassemble the path. + func_normal_abspath_result= + func_normal_abspath_tpath=$1 + func_normal_abspath_altnamespace= + case $func_normal_abspath_tpath in + "") + # Empty path, that just means $cwd. + func_stripname '' '/' "`pwd`" + func_normal_abspath_result=$func_stripname_result + return + ;; + # The next three entries are used to spot a run of precisely + # two leading slashes without using negated character classes; + # we take advantage of case's first-match behaviour. + ///*) + # Unusual form of absolute path, do nothing. + ;; + //*) + # Not necessarily an ordinary path; POSIX reserves leading '//' + # and for example Cygwin uses it to access remote file shares + # over CIFS/SMB, so we conserve a leading double slash if found. + func_normal_abspath_altnamespace=/ + ;; + /*) + # Absolute path, do nothing. + ;; + *) + # Relative path, prepend $cwd. + func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath + ;; + esac + # Cancel out all the simple stuff to save iterations. We also want + # the path to end with a slash for ease of parsing, so make sure + # there is one (and only one) here. + func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ + -e "$removedotparts" -e "$collapseslashes" -e "$finalslash"` + while :; do + # Processed it all yet? + if test "$func_normal_abspath_tpath" = / ; then + # If we ascended to the root using ".." the result may be empty now. + if test -z "$func_normal_abspath_result" ; then + func_normal_abspath_result=/ + fi + break + fi + func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \ + -e "$pathcar"` + func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ + -e "$pathcdr"` + # Figure out what to do with it + case $func_normal_abspath_tcomponent in + "") + # Trailing empty path component, ignore it. + ;; + ..) + # Parent dir; strip last assembled component from result. + func_dirname "$func_normal_abspath_result" + func_normal_abspath_result=$func_dirname_result + ;; + *) + # Actual path component, append it. + func_normal_abspath_result=$func_normal_abspath_result/$func_normal_abspath_tcomponent + ;; + esac + done + # Restore leading double-slash if one was found on entry. + func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result +} + +# func_relative_path SRCDIR DSTDIR +# generates a relative path from SRCDIR to DSTDIR, with a trailing +# slash if non-empty, suitable for immediately appending a filename +# without needing to append a separator. +# value returned in "$func_relative_path_result" +func_relative_path () +{ + func_relative_path_result= + func_normal_abspath "$1" + func_relative_path_tlibdir=$func_normal_abspath_result + func_normal_abspath "$2" + func_relative_path_tbindir=$func_normal_abspath_result + + # Ascend the tree starting from libdir + while :; do + # check if we have found a prefix of bindir + case $func_relative_path_tbindir in + $func_relative_path_tlibdir) + # found an exact match + func_relative_path_tcancelled= + break + ;; + $func_relative_path_tlibdir*) + # found a matching prefix + func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir" + func_relative_path_tcancelled=$func_stripname_result + if test -z "$func_relative_path_result"; then + func_relative_path_result=. + fi + break + ;; + *) + func_dirname $func_relative_path_tlibdir + func_relative_path_tlibdir=${func_dirname_result} + if test "x$func_relative_path_tlibdir" = x ; then + # Have to descend all the way to the root! + func_relative_path_result=../$func_relative_path_result + func_relative_path_tcancelled=$func_relative_path_tbindir + break + fi + func_relative_path_result=../$func_relative_path_result + ;; + esac + done + + # Now calculate path; take care to avoid doubling-up slashes. + func_stripname '' '/' "$func_relative_path_result" + func_relative_path_result=$func_stripname_result + func_stripname '/' '/' "$func_relative_path_tcancelled" + if test "x$func_stripname_result" != x ; then + func_relative_path_result=${func_relative_path_result}/${func_stripname_result} + fi + + # Normalisation. If bindir is libdir, return empty string, + # else relative path ending with a slash; either way, target + # file name can be directly appended. + if test ! -z "$func_relative_path_result"; then + func_stripname './' '' "$func_relative_path_result/" + func_relative_path_result=$func_stripname_result + fi +} + +# The name of this program: +func_dirname_and_basename "$progpath" +progname=$func_basename_result + +# Make sure we have an absolute path for reexecution: +case $progpath in + [\\/]*|[A-Za-z]:\\*) ;; + *[\\/]*) + progdir=$func_dirname_result + progdir=`cd "$progdir" && pwd` + progpath="$progdir/$progname" + ;; + *) + save_IFS="$IFS" + IFS=${PATH_SEPARATOR-:} + for progdir in $PATH; do + IFS="$save_IFS" + test -x "$progdir/$progname" && break + done + IFS="$save_IFS" + test -n "$progdir" || progdir=`pwd` + progpath="$progdir/$progname" + ;; +esac + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +Xsed="${SED}"' -e 1s/^X//' +sed_quote_subst='s/\([`"$\\]\)/\\\1/g' + +# Same as above, but do not quote variable references. +double_quote_subst='s/\(["`\\]\)/\\\1/g' + +# Sed substitution that turns a string into a regex matching for the +# string literally. +sed_make_literal_regex='s,[].[^$\\*\/],\\&,g' + +# Sed substitution that converts a w32 file name or path +# which contains forward slashes, into one that contains +# (escaped) backslashes. A very naive implementation. +lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' + +# Re-`\' parameter expansions in output of double_quote_subst that were +# `\'-ed in input to the same. If an odd number of `\' preceded a '$' +# in input to double_quote_subst, that '$' was protected from expansion. +# Since each input `\' is now two `\'s, look for any number of runs of +# four `\'s followed by two `\'s and then a '$'. `\' that '$'. +bs='\\' +bs2='\\\\' +bs4='\\\\\\\\' +dollar='\$' +sed_double_backslash="\ + s/$bs4/&\\ +/g + s/^$bs2$dollar/$bs&/ + s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g + s/\n//g" + +# Standard options: +opt_dry_run=false +opt_help=false +opt_quiet=false +opt_verbose=false +opt_warning=: + +# func_echo arg... +# Echo program name prefixed message, along with the current mode +# name if it has been set yet. +func_echo () +{ + $ECHO "$progname: ${opt_mode+$opt_mode: }$*" +} + +# func_verbose arg... +# Echo program name prefixed message in verbose mode only. +func_verbose () +{ + $opt_verbose && func_echo ${1+"$@"} + + # A bug in bash halts the script if the last line of a function + # fails when set -e is in force, so we need another command to + # work around that: + : +} + +# func_echo_all arg... +# Invoke $ECHO with all args, space-separated. +func_echo_all () +{ + $ECHO "$*" +} + +# func_error arg... +# Echo program name prefixed message to standard error. +func_error () +{ + $ECHO "$progname: ${opt_mode+$opt_mode: }"${1+"$@"} 1>&2 +} + +# func_warning arg... +# Echo program name prefixed warning message to standard error. +func_warning () +{ + $opt_warning && $ECHO "$progname: ${opt_mode+$opt_mode: }warning: "${1+"$@"} 1>&2 + + # bash bug again: + : +} + +# func_fatal_error arg... +# Echo program name prefixed message to standard error, and exit. +func_fatal_error () +{ + func_error ${1+"$@"} + exit $EXIT_FAILURE +} + +# func_fatal_help arg... +# Echo program name prefixed message to standard error, followed by +# a help hint, and exit. +func_fatal_help () +{ + func_error ${1+"$@"} + func_fatal_error "$help" +} +help="Try \`$progname --help' for more information." ## default + + +# func_grep expression filename +# Check whether EXPRESSION matches any line of FILENAME, without output. +func_grep () +{ + $GREP "$1" "$2" >/dev/null 2>&1 +} + + +# func_mkdir_p directory-path +# Make sure the entire path to DIRECTORY-PATH is available. +func_mkdir_p () +{ + my_directory_path="$1" + my_dir_list= + + if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then + + # Protect directory names starting with `-' + case $my_directory_path in + -*) my_directory_path="./$my_directory_path" ;; + esac + + # While some portion of DIR does not yet exist... + while test ! -d "$my_directory_path"; do + # ...make a list in topmost first order. Use a colon delimited + # list incase some portion of path contains whitespace. + my_dir_list="$my_directory_path:$my_dir_list" + + # If the last portion added has no slash in it, the list is done + case $my_directory_path in */*) ;; *) break ;; esac + + # ...otherwise throw away the child directory and loop + my_directory_path=`$ECHO "$my_directory_path" | $SED -e "$dirname"` + done + my_dir_list=`$ECHO "$my_dir_list" | $SED 's,:*$,,'` + + save_mkdir_p_IFS="$IFS"; IFS=':' + for my_dir in $my_dir_list; do + IFS="$save_mkdir_p_IFS" + # mkdir can fail with a `File exist' error if two processes + # try to create one of the directories concurrently. Don't + # stop in that case! + $MKDIR "$my_dir" 2>/dev/null || : + done + IFS="$save_mkdir_p_IFS" + + # Bail out if we (or some other process) failed to create a directory. + test -d "$my_directory_path" || \ + func_fatal_error "Failed to create \`$1'" + fi +} + + +# func_mktempdir [string] +# Make a temporary directory that won't clash with other running +# libtool processes, and avoids race conditions if possible. If +# given, STRING is the basename for that directory. +func_mktempdir () +{ + my_template="${TMPDIR-/tmp}/${1-$progname}" + + if test "$opt_dry_run" = ":"; then + # Return a directory name, but don't create it in dry-run mode + my_tmpdir="${my_template}-$$" + else + + # If mktemp works, use that first and foremost + my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null` + + if test ! -d "$my_tmpdir"; then + # Failing that, at least try and use $RANDOM to avoid a race + my_tmpdir="${my_template}-${RANDOM-0}$$" + + save_mktempdir_umask=`umask` + umask 0077 + $MKDIR "$my_tmpdir" + umask $save_mktempdir_umask + fi + + # If we're not in dry-run mode, bomb out on failure + test -d "$my_tmpdir" || \ + func_fatal_error "cannot create temporary directory \`$my_tmpdir'" + fi + + $ECHO "$my_tmpdir" +} + + +# func_quote_for_eval arg +# Aesthetically quote ARG to be evaled later. +# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT +# is double-quoted, suitable for a subsequent eval, whereas +# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters +# which are still active within double quotes backslashified. +func_quote_for_eval () +{ + case $1 in + *[\\\`\"\$]*) + func_quote_for_eval_unquoted_result=`$ECHO "$1" | $SED "$sed_quote_subst"` ;; + *) + func_quote_for_eval_unquoted_result="$1" ;; + esac + + case $func_quote_for_eval_unquoted_result in + # Double-quote args containing shell metacharacters to delay + # word splitting, command substitution and and variable + # expansion for a subsequent eval. + # Many Bourne shells cannot handle close brackets correctly + # in scan sets, so we specify it separately. + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\"" + ;; + *) + func_quote_for_eval_result="$func_quote_for_eval_unquoted_result" + esac +} + + +# func_quote_for_expand arg +# Aesthetically quote ARG to be evaled later; same as above, +# but do not quote variable references. +func_quote_for_expand () +{ + case $1 in + *[\\\`\"]*) + my_arg=`$ECHO "$1" | $SED \ + -e "$double_quote_subst" -e "$sed_double_backslash"` ;; + *) + my_arg="$1" ;; + esac + + case $my_arg in + # Double-quote args containing shell metacharacters to delay + # word splitting and command substitution for a subsequent eval. + # Many Bourne shells cannot handle close brackets correctly + # in scan sets, so we specify it separately. + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + my_arg="\"$my_arg\"" + ;; + esac + + func_quote_for_expand_result="$my_arg" +} + + +# func_show_eval cmd [fail_exp] +# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is +# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP +# is given, then evaluate it. +func_show_eval () +{ + my_cmd="$1" + my_fail_exp="${2-:}" + + ${opt_silent-false} || { + func_quote_for_expand "$my_cmd" + eval "func_echo $func_quote_for_expand_result" + } + + if ${opt_dry_run-false}; then :; else + eval "$my_cmd" + my_status=$? + if test "$my_status" -eq 0; then :; else + eval "(exit $my_status); $my_fail_exp" + fi + fi +} + + +# func_show_eval_locale cmd [fail_exp] +# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is +# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP +# is given, then evaluate it. Use the saved locale for evaluation. +func_show_eval_locale () +{ + my_cmd="$1" + my_fail_exp="${2-:}" + + ${opt_silent-false} || { + func_quote_for_expand "$my_cmd" + eval "func_echo $func_quote_for_expand_result" + } + + if ${opt_dry_run-false}; then :; else + eval "$lt_user_locale + $my_cmd" + my_status=$? + eval "$lt_safe_locale" + if test "$my_status" -eq 0; then :; else + eval "(exit $my_status); $my_fail_exp" + fi + fi +} + +# func_tr_sh +# Turn $1 into a string suitable for a shell variable name. +# Result is stored in $func_tr_sh_result. All characters +# not in the set a-zA-Z0-9_ are replaced with '_'. Further, +# if $1 begins with a digit, a '_' is prepended as well. +func_tr_sh () +{ + case $1 in + [0-9]* | *[!a-zA-Z0-9_]*) + func_tr_sh_result=`$ECHO "$1" | $SED 's/^\([0-9]\)/_\1/; s/[^a-zA-Z0-9_]/_/g'` + ;; + * ) + func_tr_sh_result=$1 + ;; + esac +} + + +# func_version +# Echo version message to standard output and exit. +func_version () +{ + $opt_debug + + $SED -n '/(C)/!b go + :more + /\./!{ + N + s/\n# / / + b more + } + :go + /^# '$PROGRAM' (GNU /,/# warranty; / { + s/^# // + s/^# *$// + s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/ + p + }' < "$progpath" + exit $? +} + +# func_usage +# Echo short help message to standard output and exit. +func_usage () +{ + $opt_debug + + $SED -n '/^# Usage:/,/^# *.*--help/ { + s/^# // + s/^# *$// + s/\$progname/'$progname'/ + p + }' < "$progpath" + echo + $ECHO "run \`$progname --help | more' for full usage" + exit $? +} + +# func_help [NOEXIT] +# Echo long help message to standard output and exit, +# unless 'noexit' is passed as argument. +func_help () +{ + $opt_debug + + $SED -n '/^# Usage:/,/# Report bugs to/ { + :print + s/^# // + s/^# *$// + s*\$progname*'$progname'* + s*\$host*'"$host"'* + s*\$SHELL*'"$SHELL"'* + s*\$LTCC*'"$LTCC"'* + s*\$LTCFLAGS*'"$LTCFLAGS"'* + s*\$LD*'"$LD"'* + s/\$with_gnu_ld/'"$with_gnu_ld"'/ + s/\$automake_version/'"`(${AUTOMAKE-automake} --version) 2>/dev/null |$SED 1q`"'/ + s/\$autoconf_version/'"`(${AUTOCONF-autoconf} --version) 2>/dev/null |$SED 1q`"'/ + p + d + } + /^# .* home page:/b print + /^# General help using/b print + ' < "$progpath" + ret=$? + if test -z "$1"; then + exit $ret + fi +} + +# func_missing_arg argname +# Echo program name prefixed message to standard error and set global +# exit_cmd. +func_missing_arg () +{ + $opt_debug + + func_error "missing argument for $1." + exit_cmd=exit +} + + +# func_split_short_opt shortopt +# Set func_split_short_opt_name and func_split_short_opt_arg shell +# variables after splitting SHORTOPT after the 2nd character. +func_split_short_opt () +{ + my_sed_short_opt='1s/^\(..\).*$/\1/;q' + my_sed_short_rest='1s/^..\(.*\)$/\1/;q' + + func_split_short_opt_name=`$ECHO "$1" | $SED "$my_sed_short_opt"` + func_split_short_opt_arg=`$ECHO "$1" | $SED "$my_sed_short_rest"` +} # func_split_short_opt may be replaced by extended shell implementation + + +# func_split_long_opt longopt +# Set func_split_long_opt_name and func_split_long_opt_arg shell +# variables after splitting LONGOPT at the `=' sign. +func_split_long_opt () +{ + my_sed_long_opt='1s/^\(--[^=]*\)=.*/\1/;q' + my_sed_long_arg='1s/^--[^=]*=//' + + func_split_long_opt_name=`$ECHO "$1" | $SED "$my_sed_long_opt"` + func_split_long_opt_arg=`$ECHO "$1" | $SED "$my_sed_long_arg"` +} # func_split_long_opt may be replaced by extended shell implementation + +exit_cmd=: + + + + + +magic="%%%MAGIC variable%%%" +magic_exe="%%%MAGIC EXE variable%%%" + +# Global variables. +nonopt= +preserve_args= +lo2o="s/\\.lo\$/.${objext}/" +o2lo="s/\\.${objext}\$/.lo/" +extracted_archives= +extracted_serial=0 + +# If this variable is set in any of the actions, the command in it +# will be execed at the end. This prevents here-documents from being +# left over by shells. +exec_cmd= + +# func_append var value +# Append VALUE to the end of shell variable VAR. +func_append () +{ + eval "${1}=\$${1}\${2}" +} # func_append may be replaced by extended shell implementation + +# func_append_quoted var value +# Quote VALUE and append to the end of shell variable VAR, separated +# by a space. +func_append_quoted () +{ + func_quote_for_eval "${2}" + eval "${1}=\$${1}\\ \$func_quote_for_eval_result" +} # func_append_quoted may be replaced by extended shell implementation + + +# func_arith arithmetic-term... +func_arith () +{ + func_arith_result=`expr "${@}"` +} # func_arith may be replaced by extended shell implementation + + +# func_len string +# STRING may not start with a hyphen. +func_len () +{ + func_len_result=`expr "${1}" : ".*" 2>/dev/null || echo $max_cmd_len` +} # func_len may be replaced by extended shell implementation + + +# func_lo2o object +func_lo2o () +{ + func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"` +} # func_lo2o may be replaced by extended shell implementation + + +# func_xform libobj-or-source +func_xform () +{ + func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'` +} # func_xform may be replaced by extended shell implementation + + +# func_fatal_configuration arg... +# Echo program name prefixed message to standard error, followed by +# a configuration failure hint, and exit. +func_fatal_configuration () +{ + func_error ${1+"$@"} + func_error "See the $PACKAGE documentation for more information." + func_fatal_error "Fatal configuration error." +} + + +# func_config +# Display the configuration for all the tags in this script. +func_config () +{ + re_begincf='^# ### BEGIN LIBTOOL' + re_endcf='^# ### END LIBTOOL' + + # Default configuration. + $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath" + + # Now print the configurations for the tags. + for tagname in $taglist; do + $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath" + done + + exit $? +} + +# func_features +# Display the features supported by this script. +func_features () +{ + echo "host: $host" + if test "$build_libtool_libs" = yes; then + echo "enable shared libraries" + else + echo "disable shared libraries" + fi + if test "$build_old_libs" = yes; then + echo "enable static libraries" + else + echo "disable static libraries" + fi + + exit $? +} + +# func_enable_tag tagname +# Verify that TAGNAME is valid, and either flag an error and exit, or +# enable the TAGNAME tag. We also add TAGNAME to the global $taglist +# variable here. +func_enable_tag () +{ + # Global variable: + tagname="$1" + + re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$" + re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$" + sed_extractcf="/$re_begincf/,/$re_endcf/p" + + # Validate tagname. + case $tagname in + *[!-_A-Za-z0-9,/]*) + func_fatal_error "invalid tag name: $tagname" + ;; + esac + + # Don't test for the "default" C tag, as we know it's + # there but not specially marked. + case $tagname in + CC) ;; + *) + if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then + taglist="$taglist $tagname" + + # Evaluate the configuration. Be careful to quote the path + # and the sed script, to avoid splitting on whitespace, but + # also don't use non-portable quotes within backquotes within + # quotes we have to do it in 2 steps: + extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` + eval "$extractedcf" + else + func_error "ignoring unknown tag $tagname" + fi + ;; + esac +} + +# func_check_version_match +# Ensure that we are using m4 macros, and libtool script from the same +# release of libtool. +func_check_version_match () +{ + if test "$package_revision" != "$macro_revision"; then + if test "$VERSION" != "$macro_version"; then + if test -z "$macro_version"; then + cat >&2 <<_LT_EOF +$progname: Version mismatch error. This is $PACKAGE $VERSION, but the +$progname: definition of this LT_INIT comes from an older release. +$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION +$progname: and run autoconf again. +_LT_EOF + else + cat >&2 <<_LT_EOF +$progname: Version mismatch error. This is $PACKAGE $VERSION, but the +$progname: definition of this LT_INIT comes from $PACKAGE $macro_version. +$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION +$progname: and run autoconf again. +_LT_EOF + fi + else + cat >&2 <<_LT_EOF +$progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision, +$progname: but the definition of this LT_INIT comes from revision $macro_revision. +$progname: You should recreate aclocal.m4 with macros from revision $package_revision +$progname: of $PACKAGE $VERSION and run autoconf again. +_LT_EOF + fi + + exit $EXIT_MISMATCH + fi +} + + +# Shorthand for --mode=foo, only valid as the first argument +case $1 in +clean|clea|cle|cl) + shift; set dummy --mode clean ${1+"$@"}; shift + ;; +compile|compil|compi|comp|com|co|c) + shift; set dummy --mode compile ${1+"$@"}; shift + ;; +execute|execut|execu|exec|exe|ex|e) + shift; set dummy --mode execute ${1+"$@"}; shift + ;; +finish|finis|fini|fin|fi|f) + shift; set dummy --mode finish ${1+"$@"}; shift + ;; +install|instal|insta|inst|ins|in|i) + shift; set dummy --mode install ${1+"$@"}; shift + ;; +link|lin|li|l) + shift; set dummy --mode link ${1+"$@"}; shift + ;; +uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) + shift; set dummy --mode uninstall ${1+"$@"}; shift + ;; +esac + + + +# Option defaults: +opt_debug=: +opt_dry_run=false +opt_config=false +opt_preserve_dup_deps=false +opt_features=false +opt_finish=false +opt_help=false +opt_help_all=false +opt_silent=: +opt_warning=: +opt_verbose=: +opt_silent=false +opt_verbose=false + + +# Parse options once, thoroughly. This comes as soon as possible in the +# script to make things like `--version' happen as quickly as we can. +{ + # this just eases exit handling + while test $# -gt 0; do + opt="$1" + shift + case $opt in + --debug|-x) opt_debug='set -x' + func_echo "enabling shell trace mode" + $opt_debug + ;; + --dry-run|--dryrun|-n) + opt_dry_run=: + ;; + --config) + opt_config=: +func_config + ;; + --dlopen|-dlopen) + optarg="$1" + opt_dlopen="${opt_dlopen+$opt_dlopen +}$optarg" + shift + ;; + --preserve-dup-deps) + opt_preserve_dup_deps=: + ;; + --features) + opt_features=: +func_features + ;; + --finish) + opt_finish=: +set dummy --mode finish ${1+"$@"}; shift + ;; + --help) + opt_help=: + ;; + --help-all) + opt_help_all=: +opt_help=': help-all' + ;; + --mode) + test $# = 0 && func_missing_arg $opt && break + optarg="$1" + opt_mode="$optarg" +case $optarg in + # Valid mode arguments: + clean|compile|execute|finish|install|link|relink|uninstall) ;; + + # Catch anything else as an error + *) func_error "invalid argument for $opt" + exit_cmd=exit + break + ;; +esac + shift + ;; + --no-silent|--no-quiet) + opt_silent=false +func_append preserve_args " $opt" + ;; + --no-warning|--no-warn) + opt_warning=false +func_append preserve_args " $opt" + ;; + --no-verbose) + opt_verbose=false +func_append preserve_args " $opt" + ;; + --silent|--quiet) + opt_silent=: +func_append preserve_args " $opt" + opt_verbose=false + ;; + --verbose|-v) + opt_verbose=: +func_append preserve_args " $opt" +opt_silent=false + ;; + --tag) + test $# = 0 && func_missing_arg $opt && break + optarg="$1" + opt_tag="$optarg" +func_append preserve_args " $opt $optarg" +func_enable_tag "$optarg" + shift + ;; + + -\?|-h) func_usage ;; + --help) func_help ;; + --version) func_version ;; + + # Separate optargs to long options: + --*=*) + func_split_long_opt "$opt" + set dummy "$func_split_long_opt_name" "$func_split_long_opt_arg" ${1+"$@"} + shift + ;; + + # Separate non-argument short options: + -\?*|-h*|-n*|-v*) + func_split_short_opt "$opt" + set dummy "$func_split_short_opt_name" "-$func_split_short_opt_arg" ${1+"$@"} + shift + ;; + + --) break ;; + -*) func_fatal_help "unrecognized option \`$opt'" ;; + *) set dummy "$opt" ${1+"$@"}; shift; break ;; + esac + done + + # Validate options: + + # save first non-option argument + if test "$#" -gt 0; then + nonopt="$opt" + shift + fi + + # preserve --debug + test "$opt_debug" = : || func_append preserve_args " --debug" + + case $host in + *cygwin* | *mingw* | *pw32* | *cegcc*) + # don't eliminate duplications in $postdeps and $predeps + opt_duplicate_compiler_generated_deps=: + ;; + *) + opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps + ;; + esac + + $opt_help || { + # Sanity checks first: + func_check_version_match + + if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then + func_fatal_configuration "not configured to build any kind of library" + fi + + # Darwin sucks + eval std_shrext=\"$shrext_cmds\" + + # Only execute mode is allowed to have -dlopen flags. + if test -n "$opt_dlopen" && test "$opt_mode" != execute; then + func_error "unrecognized option \`-dlopen'" + $ECHO "$help" 1>&2 + exit $EXIT_FAILURE + fi + + # Change the help message to a mode-specific one. + generic_help="$help" + help="Try \`$progname --help --mode=$opt_mode' for more information." + } + + + # Bail if the options were screwed + $exit_cmd $EXIT_FAILURE +} + + + + +## ----------- ## +## Main. ## +## ----------- ## + +# func_lalib_p file +# True iff FILE is a libtool `.la' library or `.lo' object file. +# This function is only a basic sanity check; it will hardly flush out +# determined imposters. +func_lalib_p () +{ + test -f "$1" && + $SED -e 4q "$1" 2>/dev/null \ + | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 +} + +# func_lalib_unsafe_p file +# True iff FILE is a libtool `.la' library or `.lo' object file. +# This function implements the same check as func_lalib_p without +# resorting to external programs. To this end, it redirects stdin and +# closes it afterwards, without saving the original file descriptor. +# As a safety measure, use it only where a negative result would be +# fatal anyway. Works if `file' does not exist. +func_lalib_unsafe_p () +{ + lalib_p=no + if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then + for lalib_p_l in 1 2 3 4 + do + read lalib_p_line + case "$lalib_p_line" in + \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;; + esac + done + exec 0<&5 5<&- + fi + test "$lalib_p" = yes +} + +# func_ltwrapper_script_p file +# True iff FILE is a libtool wrapper script +# This function is only a basic sanity check; it will hardly flush out +# determined imposters. +func_ltwrapper_script_p () +{ + func_lalib_p "$1" +} + +# func_ltwrapper_executable_p file +# True iff FILE is a libtool wrapper executable +# This function is only a basic sanity check; it will hardly flush out +# determined imposters. +func_ltwrapper_executable_p () +{ + func_ltwrapper_exec_suffix= + case $1 in + *.exe) ;; + *) func_ltwrapper_exec_suffix=.exe ;; + esac + $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1 +} + +# func_ltwrapper_scriptname file +# Assumes file is an ltwrapper_executable +# uses $file to determine the appropriate filename for a +# temporary ltwrapper_script. +func_ltwrapper_scriptname () +{ + func_dirname_and_basename "$1" "" "." + func_stripname '' '.exe' "$func_basename_result" + func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper" +} + +# func_ltwrapper_p file +# True iff FILE is a libtool wrapper script or wrapper executable +# This function is only a basic sanity check; it will hardly flush out +# determined imposters. +func_ltwrapper_p () +{ + func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1" +} + + +# func_execute_cmds commands fail_cmd +# Execute tilde-delimited COMMANDS. +# If FAIL_CMD is given, eval that upon failure. +# FAIL_CMD may read-access the current command in variable CMD! +func_execute_cmds () +{ + $opt_debug + save_ifs=$IFS; IFS='~' + for cmd in $1; do + IFS=$save_ifs + eval cmd=\"$cmd\" + func_show_eval "$cmd" "${2-:}" + done + IFS=$save_ifs +} + + +# func_source file +# Source FILE, adding directory component if necessary. +# Note that it is not necessary on cygwin/mingw to append a dot to +# FILE even if both FILE and FILE.exe exist: automatic-append-.exe +# behavior happens only for exec(3), not for open(2)! Also, sourcing +# `FILE.' does not work on cygwin managed mounts. +func_source () +{ + $opt_debug + case $1 in + */* | *\\*) . "$1" ;; + *) . "./$1" ;; + esac +} + + +# func_resolve_sysroot PATH +# Replace a leading = in PATH with a sysroot. Store the result into +# func_resolve_sysroot_result +func_resolve_sysroot () +{ + func_resolve_sysroot_result=$1 + case $func_resolve_sysroot_result in + =*) + func_stripname '=' '' "$func_resolve_sysroot_result" + func_resolve_sysroot_result=$lt_sysroot$func_stripname_result + ;; + esac +} + +# func_replace_sysroot PATH +# If PATH begins with the sysroot, replace it with = and +# store the result into func_replace_sysroot_result. +func_replace_sysroot () +{ + case "$lt_sysroot:$1" in + ?*:"$lt_sysroot"*) + func_stripname "$lt_sysroot" '' "$1" + func_replace_sysroot_result="=$func_stripname_result" + ;; + *) + # Including no sysroot. + func_replace_sysroot_result=$1 + ;; + esac +} + +# func_infer_tag arg +# Infer tagged configuration to use if any are available and +# if one wasn't chosen via the "--tag" command line option. +# Only attempt this if the compiler in the base compile +# command doesn't match the default compiler. +# arg is usually of the form 'gcc ...' +func_infer_tag () +{ + $opt_debug + if test -n "$available_tags" && test -z "$tagname"; then + CC_quoted= + for arg in $CC; do + func_append_quoted CC_quoted "$arg" + done + CC_expanded=`func_echo_all $CC` + CC_quoted_expanded=`func_echo_all $CC_quoted` + case $@ in + # Blanks in the command may have been stripped by the calling shell, + # but not from the CC environment variable when configure was run. + " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ + " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;; + # Blanks at the start of $base_compile will cause this to fail + # if we don't check for them as well. + *) + for z in $available_tags; do + if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then + # Evaluate the configuration. + eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" + CC_quoted= + for arg in $CC; do + # Double-quote args containing other shell metacharacters. + func_append_quoted CC_quoted "$arg" + done + CC_expanded=`func_echo_all $CC` + CC_quoted_expanded=`func_echo_all $CC_quoted` + case "$@ " in + " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ + " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) + # The compiler in the base compile command matches + # the one in the tagged configuration. + # Assume this is the tagged configuration we want. + tagname=$z + break + ;; + esac + fi + done + # If $tagname still isn't set, then no tagged configuration + # was found and let the user know that the "--tag" command + # line option must be used. + if test -z "$tagname"; then + func_echo "unable to infer tagged configuration" + func_fatal_error "specify a tag with \`--tag'" +# else +# func_verbose "using $tagname tagged configuration" + fi + ;; + esac + fi +} + + + +# func_write_libtool_object output_name pic_name nonpic_name +# Create a libtool object file (analogous to a ".la" file), +# but don't create it if we're doing a dry run. +func_write_libtool_object () +{ + write_libobj=${1} + if test "$build_libtool_libs" = yes; then + write_lobj=\'${2}\' + else + write_lobj=none + fi + + if test "$build_old_libs" = yes; then + write_oldobj=\'${3}\' + else + write_oldobj=none + fi + + $opt_dry_run || { + cat >${write_libobj}T </dev/null` + if test "$?" -eq 0 && test -n "${func_convert_core_file_wine_to_w32_tmp}"; then + func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" | + $SED -e "$lt_sed_naive_backslashify"` + else + func_convert_core_file_wine_to_w32_result= + fi + fi +} +# end: func_convert_core_file_wine_to_w32 + + +# func_convert_core_path_wine_to_w32 ARG +# Helper function used by path conversion functions when $build is *nix, and +# $host is mingw, cygwin, or some other w32 environment. Relies on a correctly +# configured wine environment available, with the winepath program in $build's +# $PATH. Assumes ARG has no leading or trailing path separator characters. +# +# ARG is path to be converted from $build format to win32. +# Result is available in $func_convert_core_path_wine_to_w32_result. +# Unconvertible file (directory) names in ARG are skipped; if no directory names +# are convertible, then the result may be empty. +func_convert_core_path_wine_to_w32 () +{ + $opt_debug + # unfortunately, winepath doesn't convert paths, only file names + func_convert_core_path_wine_to_w32_result="" + if test -n "$1"; then + oldIFS=$IFS + IFS=: + for func_convert_core_path_wine_to_w32_f in $1; do + IFS=$oldIFS + func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f" + if test -n "$func_convert_core_file_wine_to_w32_result" ; then + if test -z "$func_convert_core_path_wine_to_w32_result"; then + func_convert_core_path_wine_to_w32_result="$func_convert_core_file_wine_to_w32_result" + else + func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result" + fi + fi + done + IFS=$oldIFS + fi +} +# end: func_convert_core_path_wine_to_w32 + + +# func_cygpath ARGS... +# Wrapper around calling the cygpath program via LT_CYGPATH. This is used when +# when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2) +# $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or +# (2), returns the Cygwin file name or path in func_cygpath_result (input +# file name or path is assumed to be in w32 format, as previously converted +# from $build's *nix or MSYS format). In case (3), returns the w32 file name +# or path in func_cygpath_result (input file name or path is assumed to be in +# Cygwin format). Returns an empty string on error. +# +# ARGS are passed to cygpath, with the last one being the file name or path to +# be converted. +# +# Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH +# environment variable; do not put it in $PATH. +func_cygpath () +{ + $opt_debug + if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then + func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null` + if test "$?" -ne 0; then + # on failure, ensure result is empty + func_cygpath_result= + fi + else + func_cygpath_result= + func_error "LT_CYGPATH is empty or specifies non-existent file: \`$LT_CYGPATH'" + fi +} +#end: func_cygpath + + +# func_convert_core_msys_to_w32 ARG +# Convert file name or path ARG from MSYS format to w32 format. Return +# result in func_convert_core_msys_to_w32_result. +func_convert_core_msys_to_w32 () +{ + $opt_debug + # awkward: cmd appends spaces to result + func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null | + $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"` +} +#end: func_convert_core_msys_to_w32 + + +# func_convert_file_check ARG1 ARG2 +# Verify that ARG1 (a file name in $build format) was converted to $host +# format in ARG2. Otherwise, emit an error message, but continue (resetting +# func_to_host_file_result to ARG1). +func_convert_file_check () +{ + $opt_debug + if test -z "$2" && test -n "$1" ; then + func_error "Could not determine host file name corresponding to" + func_error " \`$1'" + func_error "Continuing, but uninstalled executables may not work." + # Fallback: + func_to_host_file_result="$1" + fi +} +# end func_convert_file_check + + +# func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH +# Verify that FROM_PATH (a path in $build format) was converted to $host +# format in TO_PATH. Otherwise, emit an error message, but continue, resetting +# func_to_host_file_result to a simplistic fallback value (see below). +func_convert_path_check () +{ + $opt_debug + if test -z "$4" && test -n "$3"; then + func_error "Could not determine the host path corresponding to" + func_error " \`$3'" + func_error "Continuing, but uninstalled executables may not work." + # Fallback. This is a deliberately simplistic "conversion" and + # should not be "improved". See libtool.info. + if test "x$1" != "x$2"; then + lt_replace_pathsep_chars="s|$1|$2|g" + func_to_host_path_result=`echo "$3" | + $SED -e "$lt_replace_pathsep_chars"` + else + func_to_host_path_result="$3" + fi + fi +} +# end func_convert_path_check + + +# func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG +# Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT +# and appending REPL if ORIG matches BACKPAT. +func_convert_path_front_back_pathsep () +{ + $opt_debug + case $4 in + $1 ) func_to_host_path_result="$3$func_to_host_path_result" + ;; + esac + case $4 in + $2 ) func_append func_to_host_path_result "$3" + ;; + esac +} +# end func_convert_path_front_back_pathsep + + +################################################## +# $build to $host FILE NAME CONVERSION FUNCTIONS # +################################################## +# invoked via `$to_host_file_cmd ARG' +# +# In each case, ARG is the path to be converted from $build to $host format. +# Result will be available in $func_to_host_file_result. + + +# func_to_host_file ARG +# Converts the file name ARG from $build format to $host format. Return result +# in func_to_host_file_result. +func_to_host_file () +{ + $opt_debug + $to_host_file_cmd "$1" +} +# end func_to_host_file + + +# func_to_tool_file ARG LAZY +# converts the file name ARG from $build format to toolchain format. Return +# result in func_to_tool_file_result. If the conversion in use is listed +# in (the comma separated) LAZY, no conversion takes place. +func_to_tool_file () +{ + $opt_debug + case ,$2, in + *,"$to_tool_file_cmd",*) + func_to_tool_file_result=$1 + ;; + *) + $to_tool_file_cmd "$1" + func_to_tool_file_result=$func_to_host_file_result + ;; + esac +} +# end func_to_tool_file + + +# func_convert_file_noop ARG +# Copy ARG to func_to_host_file_result. +func_convert_file_noop () +{ + func_to_host_file_result="$1" +} +# end func_convert_file_noop + + +# func_convert_file_msys_to_w32 ARG +# Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic +# conversion to w32 is not available inside the cwrapper. Returns result in +# func_to_host_file_result. +func_convert_file_msys_to_w32 () +{ + $opt_debug + func_to_host_file_result="$1" + if test -n "$1"; then + func_convert_core_msys_to_w32 "$1" + func_to_host_file_result="$func_convert_core_msys_to_w32_result" + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_msys_to_w32 + + +# func_convert_file_cygwin_to_w32 ARG +# Convert file name ARG from Cygwin to w32 format. Returns result in +# func_to_host_file_result. +func_convert_file_cygwin_to_w32 () +{ + $opt_debug + func_to_host_file_result="$1" + if test -n "$1"; then + # because $build is cygwin, we call "the" cygpath in $PATH; no need to use + # LT_CYGPATH in this case. + func_to_host_file_result=`cygpath -m "$1"` + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_cygwin_to_w32 + + +# func_convert_file_nix_to_w32 ARG +# Convert file name ARG from *nix to w32 format. Requires a wine environment +# and a working winepath. Returns result in func_to_host_file_result. +func_convert_file_nix_to_w32 () +{ + $opt_debug + func_to_host_file_result="$1" + if test -n "$1"; then + func_convert_core_file_wine_to_w32 "$1" + func_to_host_file_result="$func_convert_core_file_wine_to_w32_result" + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_nix_to_w32 + + +# func_convert_file_msys_to_cygwin ARG +# Convert file name ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. +# Returns result in func_to_host_file_result. +func_convert_file_msys_to_cygwin () +{ + $opt_debug + func_to_host_file_result="$1" + if test -n "$1"; then + func_convert_core_msys_to_w32 "$1" + func_cygpath -u "$func_convert_core_msys_to_w32_result" + func_to_host_file_result="$func_cygpath_result" + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_msys_to_cygwin + + +# func_convert_file_nix_to_cygwin ARG +# Convert file name ARG from *nix to Cygwin format. Requires Cygwin installed +# in a wine environment, working winepath, and LT_CYGPATH set. Returns result +# in func_to_host_file_result. +func_convert_file_nix_to_cygwin () +{ + $opt_debug + func_to_host_file_result="$1" + if test -n "$1"; then + # convert from *nix to w32, then use cygpath to convert from w32 to cygwin. + func_convert_core_file_wine_to_w32 "$1" + func_cygpath -u "$func_convert_core_file_wine_to_w32_result" + func_to_host_file_result="$func_cygpath_result" + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_nix_to_cygwin + + +############################################# +# $build to $host PATH CONVERSION FUNCTIONS # +############################################# +# invoked via `$to_host_path_cmd ARG' +# +# In each case, ARG is the path to be converted from $build to $host format. +# The result will be available in $func_to_host_path_result. +# +# Path separators are also converted from $build format to $host format. If +# ARG begins or ends with a path separator character, it is preserved (but +# converted to $host format) on output. +# +# All path conversion functions are named using the following convention: +# file name conversion function : func_convert_file_X_to_Y () +# path conversion function : func_convert_path_X_to_Y () +# where, for any given $build/$host combination the 'X_to_Y' value is the +# same. If conversion functions are added for new $build/$host combinations, +# the two new functions must follow this pattern, or func_init_to_host_path_cmd +# will break. + + +# func_init_to_host_path_cmd +# Ensures that function "pointer" variable $to_host_path_cmd is set to the +# appropriate value, based on the value of $to_host_file_cmd. +to_host_path_cmd= +func_init_to_host_path_cmd () +{ + $opt_debug + if test -z "$to_host_path_cmd"; then + func_stripname 'func_convert_file_' '' "$to_host_file_cmd" + to_host_path_cmd="func_convert_path_${func_stripname_result}" + fi +} + + +# func_to_host_path ARG +# Converts the path ARG from $build format to $host format. Return result +# in func_to_host_path_result. +func_to_host_path () +{ + $opt_debug + func_init_to_host_path_cmd + $to_host_path_cmd "$1" +} +# end func_to_host_path + + +# func_convert_path_noop ARG +# Copy ARG to func_to_host_path_result. +func_convert_path_noop () +{ + func_to_host_path_result="$1" +} +# end func_convert_path_noop + + +# func_convert_path_msys_to_w32 ARG +# Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic +# conversion to w32 is not available inside the cwrapper. Returns result in +# func_to_host_path_result. +func_convert_path_msys_to_w32 () +{ + $opt_debug + func_to_host_path_result="$1" + if test -n "$1"; then + # Remove leading and trailing path separator characters from ARG. MSYS + # behavior is inconsistent here; cygpath turns them into '.;' and ';.'; + # and winepath ignores them completely. + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" + func_to_host_path_result="$func_convert_core_msys_to_w32_result" + func_convert_path_check : ";" \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" + fi +} +# end func_convert_path_msys_to_w32 + + +# func_convert_path_cygwin_to_w32 ARG +# Convert path ARG from Cygwin to w32 format. Returns result in +# func_to_host_file_result. +func_convert_path_cygwin_to_w32 () +{ + $opt_debug + func_to_host_path_result="$1" + if test -n "$1"; then + # See func_convert_path_msys_to_w32: + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"` + func_convert_path_check : ";" \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" + fi +} +# end func_convert_path_cygwin_to_w32 + + +# func_convert_path_nix_to_w32 ARG +# Convert path ARG from *nix to w32 format. Requires a wine environment and +# a working winepath. Returns result in func_to_host_file_result. +func_convert_path_nix_to_w32 () +{ + $opt_debug + func_to_host_path_result="$1" + if test -n "$1"; then + # See func_convert_path_msys_to_w32: + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" + func_to_host_path_result="$func_convert_core_path_wine_to_w32_result" + func_convert_path_check : ";" \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" + fi +} +# end func_convert_path_nix_to_w32 + + +# func_convert_path_msys_to_cygwin ARG +# Convert path ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. +# Returns result in func_to_host_file_result. +func_convert_path_msys_to_cygwin () +{ + $opt_debug + func_to_host_path_result="$1" + if test -n "$1"; then + # See func_convert_path_msys_to_w32: + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" + func_cygpath -u -p "$func_convert_core_msys_to_w32_result" + func_to_host_path_result="$func_cygpath_result" + func_convert_path_check : : \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" : "$1" + fi +} +# end func_convert_path_msys_to_cygwin + + +# func_convert_path_nix_to_cygwin ARG +# Convert path ARG from *nix to Cygwin format. Requires Cygwin installed in a +# a wine environment, working winepath, and LT_CYGPATH set. Returns result in +# func_to_host_file_result. +func_convert_path_nix_to_cygwin () +{ + $opt_debug + func_to_host_path_result="$1" + if test -n "$1"; then + # Remove leading and trailing path separator characters from + # ARG. msys behavior is inconsistent here, cygpath turns them + # into '.;' and ';.', and winepath ignores them completely. + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" + func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result" + func_to_host_path_result="$func_cygpath_result" + func_convert_path_check : : \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" : "$1" + fi +} +# end func_convert_path_nix_to_cygwin + + +# func_mode_compile arg... +func_mode_compile () +{ + $opt_debug + # Get the compilation command and the source file. + base_compile= + srcfile="$nonopt" # always keep a non-empty value in "srcfile" + suppress_opt=yes + suppress_output= + arg_mode=normal + libobj= + later= + pie_flag= + + for arg + do + case $arg_mode in + arg ) + # do not "continue". Instead, add this to base_compile + lastarg="$arg" + arg_mode=normal + ;; + + target ) + libobj="$arg" + arg_mode=normal + continue + ;; + + normal ) + # Accept any command-line options. + case $arg in + -o) + test -n "$libobj" && \ + func_fatal_error "you cannot specify \`-o' more than once" + arg_mode=target + continue + ;; + + -pie | -fpie | -fPIE) + func_append pie_flag " $arg" + continue + ;; + + -shared | -static | -prefer-pic | -prefer-non-pic) + func_append later " $arg" + continue + ;; + + -no-suppress) + suppress_opt=no + continue + ;; + + -Xcompiler) + arg_mode=arg # the next one goes into the "base_compile" arg list + continue # The current "srcfile" will either be retained or + ;; # replaced later. I would guess that would be a bug. + + -Wc,*) + func_stripname '-Wc,' '' "$arg" + args=$func_stripname_result + lastarg= + save_ifs="$IFS"; IFS=',' + for arg in $args; do + IFS="$save_ifs" + func_append_quoted lastarg "$arg" + done + IFS="$save_ifs" + func_stripname ' ' '' "$lastarg" + lastarg=$func_stripname_result + + # Add the arguments to base_compile. + func_append base_compile " $lastarg" + continue + ;; + + *) + # Accept the current argument as the source file. + # The previous "srcfile" becomes the current argument. + # + lastarg="$srcfile" + srcfile="$arg" + ;; + esac # case $arg + ;; + esac # case $arg_mode + + # Aesthetically quote the previous argument. + func_append_quoted base_compile "$lastarg" + done # for arg + + case $arg_mode in + arg) + func_fatal_error "you must specify an argument for -Xcompile" + ;; + target) + func_fatal_error "you must specify a target with \`-o'" + ;; + *) + # Get the name of the library object. + test -z "$libobj" && { + func_basename "$srcfile" + libobj="$func_basename_result" + } + ;; + esac + + # Recognize several different file suffixes. + # If the user specifies -o file.o, it is replaced with file.lo + case $libobj in + *.[cCFSifmso] | \ + *.ada | *.adb | *.ads | *.asm | \ + *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \ + *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup) + func_xform "$libobj" + libobj=$func_xform_result + ;; + esac + + case $libobj in + *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;; + *) + func_fatal_error "cannot determine name of library object from \`$libobj'" + ;; + esac + + func_infer_tag $base_compile + + for arg in $later; do + case $arg in + -shared) + test "$build_libtool_libs" != yes && \ + func_fatal_configuration "can not build a shared library" + build_old_libs=no + continue + ;; + + -static) + build_libtool_libs=no + build_old_libs=yes + continue + ;; + + -prefer-pic) + pic_mode=yes + continue + ;; + + -prefer-non-pic) + pic_mode=no + continue + ;; + esac + done + + func_quote_for_eval "$libobj" + test "X$libobj" != "X$func_quote_for_eval_result" \ + && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \ + && func_warning "libobj name \`$libobj' may not contain shell special characters." + func_dirname_and_basename "$obj" "/" "" + objname="$func_basename_result" + xdir="$func_dirname_result" + lobj=${xdir}$objdir/$objname + + test -z "$base_compile" && \ + func_fatal_help "you must specify a compilation command" + + # Delete any leftover library objects. + if test "$build_old_libs" = yes; then + removelist="$obj $lobj $libobj ${libobj}T" + else + removelist="$lobj $libobj ${libobj}T" + fi + + # On Cygwin there's no "real" PIC flag so we must build both object types + case $host_os in + cygwin* | mingw* | pw32* | os2* | cegcc*) + pic_mode=default + ;; + esac + if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then + # non-PIC code in shared libraries is not supported + pic_mode=default + fi + + # Calculate the filename of the output object if compiler does + # not support -o with -c + if test "$compiler_c_o" = no; then + output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.${objext} + lockfile="$output_obj.lock" + else + output_obj= + need_locks=no + lockfile= + fi + + # Lock this critical section if it is needed + # We use this script file to make the link, it avoids creating a new file + if test "$need_locks" = yes; then + until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do + func_echo "Waiting for $lockfile to be removed" + sleep 2 + done + elif test "$need_locks" = warn; then + if test -f "$lockfile"; then + $ECHO "\ +*** ERROR, $lockfile exists and contains: +`cat $lockfile 2>/dev/null` + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support \`-c' and \`-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $opt_dry_run || $RM $removelist + exit $EXIT_FAILURE + fi + func_append removelist " $output_obj" + $ECHO "$srcfile" > "$lockfile" + fi + + $opt_dry_run || $RM $removelist + func_append removelist " $lockfile" + trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 + + func_to_tool_file "$srcfile" func_convert_file_msys_to_w32 + srcfile=$func_to_tool_file_result + func_quote_for_eval "$srcfile" + qsrcfile=$func_quote_for_eval_result + + # Only build a PIC object if we are building libtool libraries. + if test "$build_libtool_libs" = yes; then + # Without this assignment, base_compile gets emptied. + fbsd_hideous_sh_bug=$base_compile + + if test "$pic_mode" != no; then + command="$base_compile $qsrcfile $pic_flag" + else + # Don't build PIC code + command="$base_compile $qsrcfile" + fi + + func_mkdir_p "$xdir$objdir" + + if test -z "$output_obj"; then + # Place PIC objects in $objdir + func_append command " -o $lobj" + fi + + func_show_eval_locale "$command" \ + 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' + + if test "$need_locks" = warn && + test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then + $ECHO "\ +*** ERROR, $lockfile contains: +`cat $lockfile 2>/dev/null` + +but it should contain: +$srcfile + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support \`-c' and \`-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $opt_dry_run || $RM $removelist + exit $EXIT_FAILURE + fi + + # Just move the object if needed, then go on to compile the next one + if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then + func_show_eval '$MV "$output_obj" "$lobj"' \ + 'error=$?; $opt_dry_run || $RM $removelist; exit $error' + fi + + # Allow error messages only from the first compilation. + if test "$suppress_opt" = yes; then + suppress_output=' >/dev/null 2>&1' + fi + fi + + # Only build a position-dependent object if we build old libraries. + if test "$build_old_libs" = yes; then + if test "$pic_mode" != yes; then + # Don't build PIC code + command="$base_compile $qsrcfile$pie_flag" + else + command="$base_compile $qsrcfile $pic_flag" + fi + if test "$compiler_c_o" = yes; then + func_append command " -o $obj" + fi + + # Suppress compiler output if we already did a PIC compilation. + func_append command "$suppress_output" + func_show_eval_locale "$command" \ + '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' + + if test "$need_locks" = warn && + test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then + $ECHO "\ +*** ERROR, $lockfile contains: +`cat $lockfile 2>/dev/null` + +but it should contain: +$srcfile + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support \`-c' and \`-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $opt_dry_run || $RM $removelist + exit $EXIT_FAILURE + fi + + # Just move the object if needed + if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then + func_show_eval '$MV "$output_obj" "$obj"' \ + 'error=$?; $opt_dry_run || $RM $removelist; exit $error' + fi + fi + + $opt_dry_run || { + func_write_libtool_object "$libobj" "$objdir/$objname" "$objname" + + # Unlock the critical section if it was locked + if test "$need_locks" != no; then + removelist=$lockfile + $RM "$lockfile" + fi + } + + exit $EXIT_SUCCESS +} + +$opt_help || { + test "$opt_mode" = compile && func_mode_compile ${1+"$@"} +} + +func_mode_help () +{ + # We need to display help for each of the modes. + case $opt_mode in + "") + # Generic help is extracted from the usage comments + # at the start of this file. + func_help + ;; + + clean) + $ECHO \ +"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE... + +Remove files from the build directory. + +RM is the name of the program to use to delete files associated with each FILE +(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed +to RM. + +If FILE is a libtool library, object or program, all the files associated +with it are deleted. Otherwise, only FILE itself is deleted using RM." + ;; + + compile) + $ECHO \ +"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE + +Compile a source file into a libtool library object. + +This mode accepts the following additional options: + + -o OUTPUT-FILE set the output file name to OUTPUT-FILE + -no-suppress do not suppress compiler output for multiple passes + -prefer-pic try to build PIC objects only + -prefer-non-pic try to build non-PIC objects only + -shared do not build a \`.o' file suitable for static linking + -static only build a \`.o' file suitable for static linking + -Wc,FLAG pass FLAG directly to the compiler + +COMPILE-COMMAND is a command to be used in creating a \`standard' object file +from the given SOURCEFILE. + +The output file name is determined by removing the directory component from +SOURCEFILE, then substituting the C source code suffix \`.c' with the +library object suffix, \`.lo'." + ;; + + execute) + $ECHO \ +"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]... + +Automatically set library path, then run a program. + +This mode accepts the following additional options: + + -dlopen FILE add the directory containing FILE to the library path + +This mode sets the library path environment variable according to \`-dlopen' +flags. + +If any of the ARGS are libtool executable wrappers, then they are translated +into their corresponding uninstalled binary, and any of their required library +directories are added to the library path. + +Then, COMMAND is executed, with ARGS as arguments." + ;; + + finish) + $ECHO \ +"Usage: $progname [OPTION]... --mode=finish [LIBDIR]... + +Complete the installation of libtool libraries. + +Each LIBDIR is a directory that contains libtool libraries. + +The commands that this mode executes may require superuser privileges. Use +the \`--dry-run' option if you just want to see what would be executed." + ;; + + install) + $ECHO \ +"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND... + +Install executables or libraries. + +INSTALL-COMMAND is the installation command. The first component should be +either the \`install' or \`cp' program. + +The following components of INSTALL-COMMAND are treated specially: + + -inst-prefix-dir PREFIX-DIR Use PREFIX-DIR as a staging area for installation + +The rest of the components are interpreted as arguments to that command (only +BSD-compatible install options are recognized)." + ;; + + link) + $ECHO \ +"Usage: $progname [OPTION]... --mode=link LINK-COMMAND... + +Link object files or libraries together to form another library, or to +create an executable program. + +LINK-COMMAND is a command using the C compiler that you would use to create +a program from several object files. + +The following components of LINK-COMMAND are treated specially: + + -all-static do not do any dynamic linking at all + -avoid-version do not add a version suffix if possible + -bindir BINDIR specify path to binaries directory (for systems where + libraries must be found in the PATH setting at runtime) + -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime + -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols + -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) + -export-symbols SYMFILE + try to export only the symbols listed in SYMFILE + -export-symbols-regex REGEX + try to export only the symbols matching REGEX + -LLIBDIR search LIBDIR for required installed libraries + -lNAME OUTPUT-FILE requires the installed library libNAME + -module build a library that can dlopened + -no-fast-install disable the fast-install mode + -no-install link a not-installable executable + -no-undefined declare that a library does not refer to external symbols + -o OUTPUT-FILE create OUTPUT-FILE from the specified objects + -objectlist FILE Use a list of object files found in FILE to specify objects + -precious-files-regex REGEX + don't remove output files matching REGEX + -release RELEASE specify package release information + -rpath LIBDIR the created library will eventually be installed in LIBDIR + -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries + -shared only do dynamic linking of libtool libraries + -shrext SUFFIX override the standard shared library file extension + -static do not do any dynamic linking of uninstalled libtool libraries + -static-libtool-libs + do not do any dynamic linking of libtool libraries + -version-info CURRENT[:REVISION[:AGE]] + specify library version info [each variable defaults to 0] + -weak LIBNAME declare that the target provides the LIBNAME interface + -Wc,FLAG + -Xcompiler FLAG pass linker-specific FLAG directly to the compiler + -Wl,FLAG + -Xlinker FLAG pass linker-specific FLAG directly to the linker + -XCClinker FLAG pass link-specific FLAG to the compiler driver (CC) + +All other options (arguments beginning with \`-') are ignored. + +Every other argument is treated as a filename. Files ending in \`.la' are +treated as uninstalled libtool libraries, other files are standard or library +object files. + +If the OUTPUT-FILE ends in \`.la', then a libtool library is created, +only library objects (\`.lo' files) may be specified, and \`-rpath' is +required, except when creating a convenience library. + +If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created +using \`ar' and \`ranlib', or on Windows using \`lib'. + +If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file +is created, otherwise an executable program is created." + ;; + + uninstall) + $ECHO \ +"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... + +Remove libraries from an installation directory. + +RM is the name of the program to use to delete files associated with each FILE +(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed +to RM. + +If FILE is a libtool library, all the files associated with it are deleted. +Otherwise, only FILE itself is deleted using RM." + ;; + + *) + func_fatal_help "invalid operation mode \`$opt_mode'" + ;; + esac + + echo + $ECHO "Try \`$progname --help' for more information about other modes." +} + +# Now that we've collected a possible --mode arg, show help if necessary +if $opt_help; then + if test "$opt_help" = :; then + func_mode_help + else + { + func_help noexit + for opt_mode in compile link execute install finish uninstall clean; do + func_mode_help + done + } | sed -n '1p; 2,$s/^Usage:/ or: /p' + { + func_help noexit + for opt_mode in compile link execute install finish uninstall clean; do + echo + func_mode_help + done + } | + sed '1d + /^When reporting/,/^Report/{ + H + d + } + $x + /information about other modes/d + /more detailed .*MODE/d + s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/' + fi + exit $? +fi + + +# func_mode_execute arg... +func_mode_execute () +{ + $opt_debug + # The first argument is the command name. + cmd="$nonopt" + test -z "$cmd" && \ + func_fatal_help "you must specify a COMMAND" + + # Handle -dlopen flags immediately. + for file in $opt_dlopen; do + test -f "$file" \ + || func_fatal_help "\`$file' is not a file" + + dir= + case $file in + *.la) + func_resolve_sysroot "$file" + file=$func_resolve_sysroot_result + + # Check to see that this really is a libtool archive. + func_lalib_unsafe_p "$file" \ + || func_fatal_help "\`$lib' is not a valid libtool archive" + + # Read the libtool library. + dlname= + library_names= + func_source "$file" + + # Skip this library if it cannot be dlopened. + if test -z "$dlname"; then + # Warn if it was a shared library. + test -n "$library_names" && \ + func_warning "\`$file' was not linked with \`-export-dynamic'" + continue + fi + + func_dirname "$file" "" "." + dir="$func_dirname_result" + + if test -f "$dir/$objdir/$dlname"; then + func_append dir "/$objdir" + else + if test ! -f "$dir/$dlname"; then + func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" + fi + fi + ;; + + *.lo) + # Just add the directory containing the .lo file. + func_dirname "$file" "" "." + dir="$func_dirname_result" + ;; + + *) + func_warning "\`-dlopen' is ignored for non-libtool libraries and objects" + continue + ;; + esac + + # Get the absolute pathname. + absdir=`cd "$dir" && pwd` + test -n "$absdir" && dir="$absdir" + + # Now add the directory to shlibpath_var. + if eval "test -z \"\$$shlibpath_var\""; then + eval "$shlibpath_var=\"\$dir\"" + else + eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" + fi + done + + # This variable tells wrapper scripts just to set shlibpath_var + # rather than running their programs. + libtool_execute_magic="$magic" + + # Check if any of the arguments is a wrapper script. + args= + for file + do + case $file in + -* | *.la | *.lo ) ;; + *) + # Do a test to see if this is really a libtool program. + if func_ltwrapper_script_p "$file"; then + func_source "$file" + # Transform arg to wrapped name. + file="$progdir/$program" + elif func_ltwrapper_executable_p "$file"; then + func_ltwrapper_scriptname "$file" + func_source "$func_ltwrapper_scriptname_result" + # Transform arg to wrapped name. + file="$progdir/$program" + fi + ;; + esac + # Quote arguments (to preserve shell metacharacters). + func_append_quoted args "$file" + done + + if test "X$opt_dry_run" = Xfalse; then + if test -n "$shlibpath_var"; then + # Export the shlibpath_var. + eval "export $shlibpath_var" + fi + + # Restore saved environment variables + for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES + do + eval "if test \"\${save_$lt_var+set}\" = set; then + $lt_var=\$save_$lt_var; export $lt_var + else + $lt_unset $lt_var + fi" + done + + # Now prepare to actually exec the command. + exec_cmd="\$cmd$args" + else + # Display what would be done. + if test -n "$shlibpath_var"; then + eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" + echo "export $shlibpath_var" + fi + $ECHO "$cmd$args" + exit $EXIT_SUCCESS + fi +} + +test "$opt_mode" = execute && func_mode_execute ${1+"$@"} + + +# func_mode_finish arg... +func_mode_finish () +{ + $opt_debug + libs= + libdirs= + admincmds= + + for opt in "$nonopt" ${1+"$@"} + do + if test -d "$opt"; then + func_append libdirs " $opt" + + elif test -f "$opt"; then + if func_lalib_unsafe_p "$opt"; then + func_append libs " $opt" + else + func_warning "\`$opt' is not a valid libtool archive" + fi + + else + func_fatal_error "invalid argument \`$opt'" + fi + done + + if test -n "$libs"; then + if test -n "$lt_sysroot"; then + sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"` + sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;" + else + sysroot_cmd= + fi + + # Remove sysroot references + if $opt_dry_run; then + for lib in $libs; do + echo "removing references to $lt_sysroot and \`=' prefixes from $lib" + done + else + tmpdir=`func_mktempdir` + for lib in $libs; do + sed -e "${sysroot_cmd} s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \ + > $tmpdir/tmp-la + mv -f $tmpdir/tmp-la $lib + done + ${RM}r "$tmpdir" + fi + fi + + if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then + for libdir in $libdirs; do + if test -n "$finish_cmds"; then + # Do each command in the finish commands. + func_execute_cmds "$finish_cmds" 'admincmds="$admincmds +'"$cmd"'"' + fi + if test -n "$finish_eval"; then + # Do the single finish_eval. + eval cmds=\"$finish_eval\" + $opt_dry_run || eval "$cmds" || func_append admincmds " + $cmds" + fi + done + fi + + # Exit here if they wanted silent mode. + $opt_silent && exit $EXIT_SUCCESS + + if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then + echo "----------------------------------------------------------------------" + echo "Libraries have been installed in:" + for libdir in $libdirs; do + $ECHO " $libdir" + done + echo + echo "If you ever happen to want to link against installed libraries" + echo "in a given directory, LIBDIR, you must either use libtool, and" + echo "specify the full pathname of the library, or use the \`-LLIBDIR'" + echo "flag during linking and do at least one of the following:" + if test -n "$shlibpath_var"; then + echo " - add LIBDIR to the \`$shlibpath_var' environment variable" + echo " during execution" + fi + if test -n "$runpath_var"; then + echo " - add LIBDIR to the \`$runpath_var' environment variable" + echo " during linking" + fi + if test -n "$hardcode_libdir_flag_spec"; then + libdir=LIBDIR + eval flag=\"$hardcode_libdir_flag_spec\" + + $ECHO " - use the \`$flag' linker flag" + fi + if test -n "$admincmds"; then + $ECHO " - have your system administrator run these commands:$admincmds" + fi + if test -f /etc/ld.so.conf; then + echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" + fi + echo + + echo "See any operating system documentation about shared libraries for" + case $host in + solaris2.[6789]|solaris2.1[0-9]) + echo "more information, such as the ld(1), crle(1) and ld.so(8) manual" + echo "pages." + ;; + *) + echo "more information, such as the ld(1) and ld.so(8) manual pages." + ;; + esac + echo "----------------------------------------------------------------------" + fi + exit $EXIT_SUCCESS +} + +test "$opt_mode" = finish && func_mode_finish ${1+"$@"} + + +# func_mode_install arg... +func_mode_install () +{ + $opt_debug + # There may be an optional sh(1) argument at the beginning of + # install_prog (especially on Windows NT). + if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || + # Allow the use of GNU shtool's install command. + case $nonopt in *shtool*) :;; *) false;; esac; then + # Aesthetically quote it. + func_quote_for_eval "$nonopt" + install_prog="$func_quote_for_eval_result " + arg=$1 + shift + else + install_prog= + arg=$nonopt + fi + + # The real first argument should be the name of the installation program. + # Aesthetically quote it. + func_quote_for_eval "$arg" + func_append install_prog "$func_quote_for_eval_result" + install_shared_prog=$install_prog + case " $install_prog " in + *[\\\ /]cp\ *) install_cp=: ;; + *) install_cp=false ;; + esac + + # We need to accept at least all the BSD install flags. + dest= + files= + opts= + prev= + install_type= + isdir=no + stripme= + no_mode=: + for arg + do + arg2= + if test -n "$dest"; then + func_append files " $dest" + dest=$arg + continue + fi + + case $arg in + -d) isdir=yes ;; + -f) + if $install_cp; then :; else + prev=$arg + fi + ;; + -g | -m | -o) + prev=$arg + ;; + -s) + stripme=" -s" + continue + ;; + -*) + ;; + *) + # If the previous option needed an argument, then skip it. + if test -n "$prev"; then + if test "x$prev" = x-m && test -n "$install_override_mode"; then + arg2=$install_override_mode + no_mode=false + fi + prev= + else + dest=$arg + continue + fi + ;; + esac + + # Aesthetically quote the argument. + func_quote_for_eval "$arg" + func_append install_prog " $func_quote_for_eval_result" + if test -n "$arg2"; then + func_quote_for_eval "$arg2" + fi + func_append install_shared_prog " $func_quote_for_eval_result" + done + + test -z "$install_prog" && \ + func_fatal_help "you must specify an install program" + + test -n "$prev" && \ + func_fatal_help "the \`$prev' option requires an argument" + + if test -n "$install_override_mode" && $no_mode; then + if $install_cp; then :; else + func_quote_for_eval "$install_override_mode" + func_append install_shared_prog " -m $func_quote_for_eval_result" + fi + fi + + if test -z "$files"; then + if test -z "$dest"; then + func_fatal_help "no file or destination specified" + else + func_fatal_help "you must specify a destination" + fi + fi + + # Strip any trailing slash from the destination. + func_stripname '' '/' "$dest" + dest=$func_stripname_result + + # Check to see that the destination is a directory. + test -d "$dest" && isdir=yes + if test "$isdir" = yes; then + destdir="$dest" + destname= + else + func_dirname_and_basename "$dest" "" "." + destdir="$func_dirname_result" + destname="$func_basename_result" + + # Not a directory, so check to see that there is only one file specified. + set dummy $files; shift + test "$#" -gt 1 && \ + func_fatal_help "\`$dest' is not a directory" + fi + case $destdir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + for file in $files; do + case $file in + *.lo) ;; + *) + func_fatal_help "\`$destdir' must be an absolute directory name" + ;; + esac + done + ;; + esac + + # This variable tells wrapper scripts just to set variables rather + # than running their programs. + libtool_install_magic="$magic" + + staticlibs= + future_libdirs= + current_libdirs= + for file in $files; do + + # Do each installation. + case $file in + *.$libext) + # Do the static libraries later. + func_append staticlibs " $file" + ;; + + *.la) + func_resolve_sysroot "$file" + file=$func_resolve_sysroot_result + + # Check to see that this really is a libtool archive. + func_lalib_unsafe_p "$file" \ + || func_fatal_help "\`$file' is not a valid libtool archive" + + library_names= + old_library= + relink_command= + func_source "$file" + + # Add the libdir to current_libdirs if it is the destination. + if test "X$destdir" = "X$libdir"; then + case "$current_libdirs " in + *" $libdir "*) ;; + *) func_append current_libdirs " $libdir" ;; + esac + else + # Note the libdir as a future libdir. + case "$future_libdirs " in + *" $libdir "*) ;; + *) func_append future_libdirs " $libdir" ;; + esac + fi + + func_dirname "$file" "/" "" + dir="$func_dirname_result" + func_append dir "$objdir" + + if test -n "$relink_command"; then + # Determine the prefix the user has applied to our future dir. + inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"` + + # Don't allow the user to place us outside of our expected + # location b/c this prevents finding dependent libraries that + # are installed to the same prefix. + # At present, this check doesn't affect windows .dll's that + # are installed into $libdir/../bin (currently, that works fine) + # but it's something to keep an eye on. + test "$inst_prefix_dir" = "$destdir" && \ + func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir" + + if test -n "$inst_prefix_dir"; then + # Stick the inst_prefix_dir data into the link command. + relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` + else + relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"` + fi + + func_warning "relinking \`$file'" + func_show_eval "$relink_command" \ + 'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"' + fi + + # See the names of the shared library. + set dummy $library_names; shift + if test -n "$1"; then + realname="$1" + shift + + srcname="$realname" + test -n "$relink_command" && srcname="$realname"T + + # Install the shared library and build the symlinks. + func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \ + 'exit $?' + tstripme="$stripme" + case $host_os in + cygwin* | mingw* | pw32* | cegcc*) + case $realname in + *.dll.a) + tstripme="" + ;; + esac + ;; + esac + if test -n "$tstripme" && test -n "$striplib"; then + func_show_eval "$striplib $destdir/$realname" 'exit $?' + fi + + if test "$#" -gt 0; then + # Delete the old symlinks, and create new ones. + # Try `ln -sf' first, because the `ln' binary might depend on + # the symlink we replace! Solaris /bin/ln does not understand -f, + # so we also need to try rm && ln -s. + for linkname + do + test "$linkname" != "$realname" \ + && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })" + done + fi + + # Do each command in the postinstall commands. + lib="$destdir/$realname" + func_execute_cmds "$postinstall_cmds" 'exit $?' + fi + + # Install the pseudo-library for information purposes. + func_basename "$file" + name="$func_basename_result" + instname="$dir/$name"i + func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' + + # Maybe install the static library, too. + test -n "$old_library" && func_append staticlibs " $dir/$old_library" + ;; + + *.lo) + # Install (i.e. copy) a libtool object. + + # Figure out destination file name, if it wasn't already specified. + if test -n "$destname"; then + destfile="$destdir/$destname" + else + func_basename "$file" + destfile="$func_basename_result" + destfile="$destdir/$destfile" + fi + + # Deduce the name of the destination old-style object file. + case $destfile in + *.lo) + func_lo2o "$destfile" + staticdest=$func_lo2o_result + ;; + *.$objext) + staticdest="$destfile" + destfile= + ;; + *) + func_fatal_help "cannot copy a libtool object to \`$destfile'" + ;; + esac + + # Install the libtool object if requested. + test -n "$destfile" && \ + func_show_eval "$install_prog $file $destfile" 'exit $?' + + # Install the old object if enabled. + if test "$build_old_libs" = yes; then + # Deduce the name of the old-style object file. + func_lo2o "$file" + staticobj=$func_lo2o_result + func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?' + fi + exit $EXIT_SUCCESS + ;; + + *) + # Figure out destination file name, if it wasn't already specified. + if test -n "$destname"; then + destfile="$destdir/$destname" + else + func_basename "$file" + destfile="$func_basename_result" + destfile="$destdir/$destfile" + fi + + # If the file is missing, and there is a .exe on the end, strip it + # because it is most likely a libtool script we actually want to + # install + stripped_ext="" + case $file in + *.exe) + if test ! -f "$file"; then + func_stripname '' '.exe' "$file" + file=$func_stripname_result + stripped_ext=".exe" + fi + ;; + esac + + # Do a test to see if this is really a libtool program. + case $host in + *cygwin* | *mingw*) + if func_ltwrapper_executable_p "$file"; then + func_ltwrapper_scriptname "$file" + wrapper=$func_ltwrapper_scriptname_result + else + func_stripname '' '.exe' "$file" + wrapper=$func_stripname_result + fi + ;; + *) + wrapper=$file + ;; + esac + if func_ltwrapper_script_p "$wrapper"; then + notinst_deplibs= + relink_command= + + func_source "$wrapper" + + # Check the variables that should have been set. + test -z "$generated_by_libtool_version" && \ + func_fatal_error "invalid libtool wrapper script \`$wrapper'" + + finalize=yes + for lib in $notinst_deplibs; do + # Check to see that each library is installed. + libdir= + if test -f "$lib"; then + func_source "$lib" + fi + libfile="$libdir/"`$ECHO "$lib" | $SED 's%^.*/%%g'` ### testsuite: skip nested quoting test + if test -n "$libdir" && test ! -f "$libfile"; then + func_warning "\`$lib' has not been installed in \`$libdir'" + finalize=no + fi + done + + relink_command= + func_source "$wrapper" + + outputname= + if test "$fast_install" = no && test -n "$relink_command"; then + $opt_dry_run || { + if test "$finalize" = yes; then + tmpdir=`func_mktempdir` + func_basename "$file$stripped_ext" + file="$func_basename_result" + outputname="$tmpdir/$file" + # Replace the output file specification. + relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'` + + $opt_silent || { + func_quote_for_expand "$relink_command" + eval "func_echo $func_quote_for_expand_result" + } + if eval "$relink_command"; then : + else + func_error "error: relink \`$file' with the above command before installing it" + $opt_dry_run || ${RM}r "$tmpdir" + continue + fi + file="$outputname" + else + func_warning "cannot relink \`$file'" + fi + } + else + # Install the binary that we compiled earlier. + file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"` + fi + fi + + # remove .exe since cygwin /usr/bin/install will append another + # one anyway + case $install_prog,$host in + */usr/bin/install*,*cygwin*) + case $file:$destfile in + *.exe:*.exe) + # this is ok + ;; + *.exe:*) + destfile=$destfile.exe + ;; + *:*.exe) + func_stripname '' '.exe' "$destfile" + destfile=$func_stripname_result + ;; + esac + ;; + esac + func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?' + $opt_dry_run || if test -n "$outputname"; then + ${RM}r "$tmpdir" + fi + ;; + esac + done + + for file in $staticlibs; do + func_basename "$file" + name="$func_basename_result" + + # Set up the ranlib parameters. + oldlib="$destdir/$name" + func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 + tool_oldlib=$func_to_tool_file_result + + func_show_eval "$install_prog \$file \$oldlib" 'exit $?' + + if test -n "$stripme" && test -n "$old_striplib"; then + func_show_eval "$old_striplib $tool_oldlib" 'exit $?' + fi + + # Do each command in the postinstall commands. + func_execute_cmds "$old_postinstall_cmds" 'exit $?' + done + + test -n "$future_libdirs" && \ + func_warning "remember to run \`$progname --finish$future_libdirs'" + + if test -n "$current_libdirs"; then + # Maybe just do a dry run. + $opt_dry_run && current_libdirs=" -n$current_libdirs" + exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' + else + exit $EXIT_SUCCESS + fi +} + +test "$opt_mode" = install && func_mode_install ${1+"$@"} + + +# func_generate_dlsyms outputname originator pic_p +# Extract symbols from dlprefiles and create ${outputname}S.o with +# a dlpreopen symbol table. +func_generate_dlsyms () +{ + $opt_debug + my_outputname="$1" + my_originator="$2" + my_pic_p="${3-no}" + my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'` + my_dlsyms= + + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + if test -n "$NM" && test -n "$global_symbol_pipe"; then + my_dlsyms="${my_outputname}S.c" + else + func_error "not configured to extract global symbols from dlpreopened files" + fi + fi + + if test -n "$my_dlsyms"; then + case $my_dlsyms in + "") ;; + *.c) + # Discover the nlist of each of the dlfiles. + nlist="$output_objdir/${my_outputname}.nm" + + func_show_eval "$RM $nlist ${nlist}S ${nlist}T" + + # Parse the name list into a source file. + func_verbose "creating $output_objdir/$my_dlsyms" + + $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ +/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */ +/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */ + +#ifdef __cplusplus +extern \"C\" { +#endif + +#if defined(__GNUC__) && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4)) +#pragma GCC diagnostic ignored \"-Wstrict-prototypes\" +#endif + +/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ +#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) +/* DATA imports from DLLs on WIN32 con't be const, because runtime + relocations are performed -- see ld's documentation on pseudo-relocs. */ +# define LT_DLSYM_CONST +#elif defined(__osf__) +/* This system does not cope well with relocations in const data. */ +# define LT_DLSYM_CONST +#else +# define LT_DLSYM_CONST const +#endif + +/* External symbol declarations for the compiler. */\ +" + + if test "$dlself" = yes; then + func_verbose "generating symbol list for \`$output'" + + $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" + + # Add our own program objects to the symbol list. + progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP` + for progfile in $progfiles; do + func_to_tool_file "$progfile" func_convert_file_msys_to_w32 + func_verbose "extracting global C symbols from \`$func_to_tool_file_result'" + $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'" + done + + if test -n "$exclude_expsyms"; then + $opt_dry_run || { + eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' + eval '$MV "$nlist"T "$nlist"' + } + fi + + if test -n "$export_symbols_regex"; then + $opt_dry_run || { + eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' + eval '$MV "$nlist"T "$nlist"' + } + fi + + # Prepare the list of exported symbols + if test -z "$export_symbols"; then + export_symbols="$output_objdir/$outputname.exp" + $opt_dry_run || { + $RM $export_symbols + eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' + case $host in + *cygwin* | *mingw* | *cegcc* ) + eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' + eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' + ;; + esac + } + else + $opt_dry_run || { + eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' + eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' + eval '$MV "$nlist"T "$nlist"' + case $host in + *cygwin* | *mingw* | *cegcc* ) + eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' + eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' + ;; + esac + } + fi + fi + + for dlprefile in $dlprefiles; do + func_verbose "extracting global C symbols from \`$dlprefile'" + func_basename "$dlprefile" + name="$func_basename_result" + case $host in + *cygwin* | *mingw* | *cegcc* ) + # if an import library, we need to obtain dlname + if func_win32_import_lib_p "$dlprefile"; then + func_tr_sh "$dlprefile" + eval "curr_lafile=\$libfile_$func_tr_sh_result" + dlprefile_dlbasename="" + if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then + # Use subshell, to avoid clobbering current variable values + dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"` + if test -n "$dlprefile_dlname" ; then + func_basename "$dlprefile_dlname" + dlprefile_dlbasename="$func_basename_result" + else + # no lafile. user explicitly requested -dlpreopen . + $sharedlib_from_linklib_cmd "$dlprefile" + dlprefile_dlbasename=$sharedlib_from_linklib_result + fi + fi + $opt_dry_run || { + if test -n "$dlprefile_dlbasename" ; then + eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"' + else + func_warning "Could not compute DLL name from $name" + eval '$ECHO ": $name " >> "$nlist"' + fi + func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 + eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe | + $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'" + } + else # not an import lib + $opt_dry_run || { + eval '$ECHO ": $name " >> "$nlist"' + func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 + eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" + } + fi + ;; + *) + $opt_dry_run || { + eval '$ECHO ": $name " >> "$nlist"' + func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 + eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" + } + ;; + esac + done + + $opt_dry_run || { + # Make sure we have at least an empty file. + test -f "$nlist" || : > "$nlist" + + if test -n "$exclude_expsyms"; then + $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T + $MV "$nlist"T "$nlist" + fi + + # Try sorting and uniquifying the output. + if $GREP -v "^: " < "$nlist" | + if sort -k 3 /dev/null 2>&1; then + sort -k 3 + else + sort +2 + fi | + uniq > "$nlist"S; then + : + else + $GREP -v "^: " < "$nlist" > "$nlist"S + fi + + if test -f "$nlist"S; then + eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' + else + echo '/* NONE */' >> "$output_objdir/$my_dlsyms" + fi + + echo >> "$output_objdir/$my_dlsyms" "\ + +/* The mapping between symbol names and symbols. */ +typedef struct { + const char *name; + void *address; +} lt_dlsymlist; +extern LT_DLSYM_CONST lt_dlsymlist +lt_${my_prefix}_LTX_preloaded_symbols[]; +LT_DLSYM_CONST lt_dlsymlist +lt_${my_prefix}_LTX_preloaded_symbols[] = +{\ + { \"$my_originator\", (void *) 0 }," + + case $need_lib_prefix in + no) + eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms" + ;; + *) + eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" + ;; + esac + echo >> "$output_objdir/$my_dlsyms" "\ + {0, (void *) 0} +}; + +/* This works around a problem in FreeBSD linker */ +#ifdef FREEBSD_WORKAROUND +static const void *lt_preloaded_setup() { + return lt_${my_prefix}_LTX_preloaded_symbols; +} +#endif + +#ifdef __cplusplus +} +#endif\ +" + } # !$opt_dry_run + + pic_flag_for_symtable= + case "$compile_command " in + *" -static "*) ;; + *) + case $host in + # compiling the symbol table file with pic_flag works around + # a FreeBSD bug that causes programs to crash when -lm is + # linked before any other PIC object. But we must not use + # pic_flag when linking with -static. The problem exists in + # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. + *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) + pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; + *-*-hpux*) + pic_flag_for_symtable=" $pic_flag" ;; + *) + if test "X$my_pic_p" != Xno; then + pic_flag_for_symtable=" $pic_flag" + fi + ;; + esac + ;; + esac + symtab_cflags= + for arg in $LTCFLAGS; do + case $arg in + -pie | -fpie | -fPIE) ;; + *) func_append symtab_cflags " $arg" ;; + esac + done + + # Now compile the dynamic symbol file. + func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' + + # Clean up the generated files. + func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"' + + # Transform the symbol file into the correct name. + symfileobj="$output_objdir/${my_outputname}S.$objext" + case $host in + *cygwin* | *mingw* | *cegcc* ) + if test -f "$output_objdir/$my_outputname.def"; then + compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` + finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` + else + compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` + finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` + fi + ;; + *) + compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` + finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` + ;; + esac + ;; + *) + func_fatal_error "unknown suffix for \`$my_dlsyms'" + ;; + esac + else + # We keep going just in case the user didn't refer to + # lt_preloaded_symbols. The linker will fail if global_symbol_pipe + # really was required. + + # Nullify the symbol file. + compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"` + finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"` + fi +} + +# func_win32_libid arg +# return the library type of file 'arg' +# +# Need a lot of goo to handle *both* DLLs and import libs +# Has to be a shell function in order to 'eat' the argument +# that is supplied when $file_magic_command is called. +# Despite the name, also deal with 64 bit binaries. +func_win32_libid () +{ + $opt_debug + win32_libid_type="unknown" + win32_fileres=`file -L $1 2>/dev/null` + case $win32_fileres in + *ar\ archive\ import\ library*) # definitely import + win32_libid_type="x86 archive import" + ;; + *ar\ archive*) # could be an import, or static + # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD. + if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | + $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then + func_to_tool_file "$1" func_convert_file_msys_to_w32 + win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" | + $SED -n -e ' + 1,100{ + / I /{ + s,.*,import, + p + q + } + }'` + case $win32_nmres in + import*) win32_libid_type="x86 archive import";; + *) win32_libid_type="x86 archive static";; + esac + fi + ;; + *DLL*) + win32_libid_type="x86 DLL" + ;; + *executable*) # but shell scripts are "executable" too... + case $win32_fileres in + *MS\ Windows\ PE\ Intel*) + win32_libid_type="x86 DLL" + ;; + esac + ;; + esac + $ECHO "$win32_libid_type" +} + +# func_cygming_dll_for_implib ARG +# +# Platform-specific function to extract the +# name of the DLL associated with the specified +# import library ARG. +# Invoked by eval'ing the libtool variable +# $sharedlib_from_linklib_cmd +# Result is available in the variable +# $sharedlib_from_linklib_result +func_cygming_dll_for_implib () +{ + $opt_debug + sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"` +} + +# func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs +# +# The is the core of a fallback implementation of a +# platform-specific function to extract the name of the +# DLL associated with the specified import library LIBNAME. +# +# SECTION_NAME is either .idata$6 or .idata$7, depending +# on the platform and compiler that created the implib. +# +# Echos the name of the DLL associated with the +# specified import library. +func_cygming_dll_for_implib_fallback_core () +{ + $opt_debug + match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"` + $OBJDUMP -s --section "$1" "$2" 2>/dev/null | + $SED '/^Contents of section '"$match_literal"':/{ + # Place marker at beginning of archive member dllname section + s/.*/====MARK====/ + p + d + } + # These lines can sometimes be longer than 43 characters, but + # are always uninteresting + /:[ ]*file format pe[i]\{,1\}-/d + /^In archive [^:]*:/d + # Ensure marker is printed + /^====MARK====/p + # Remove all lines with less than 43 characters + /^.\{43\}/!d + # From remaining lines, remove first 43 characters + s/^.\{43\}//' | + $SED -n ' + # Join marker and all lines until next marker into a single line + /^====MARK====/ b para + H + $ b para + b + :para + x + s/\n//g + # Remove the marker + s/^====MARK====// + # Remove trailing dots and whitespace + s/[\. \t]*$// + # Print + /./p' | + # we now have a list, one entry per line, of the stringified + # contents of the appropriate section of all members of the + # archive which possess that section. Heuristic: eliminate + # all those which have a first or second character that is + # a '.' (that is, objdump's representation of an unprintable + # character.) This should work for all archives with less than + # 0x302f exports -- but will fail for DLLs whose name actually + # begins with a literal '.' or a single character followed by + # a '.'. + # + # Of those that remain, print the first one. + $SED -e '/^\./d;/^.\./d;q' +} + +# func_cygming_gnu_implib_p ARG +# This predicate returns with zero status (TRUE) if +# ARG is a GNU/binutils-style import library. Returns +# with nonzero status (FALSE) otherwise. +func_cygming_gnu_implib_p () +{ + $opt_debug + func_to_tool_file "$1" func_convert_file_msys_to_w32 + func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'` + test -n "$func_cygming_gnu_implib_tmp" +} + +# func_cygming_ms_implib_p ARG +# This predicate returns with zero status (TRUE) if +# ARG is an MS-style import library. Returns +# with nonzero status (FALSE) otherwise. +func_cygming_ms_implib_p () +{ + $opt_debug + func_to_tool_file "$1" func_convert_file_msys_to_w32 + func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'` + test -n "$func_cygming_ms_implib_tmp" +} + +# func_cygming_dll_for_implib_fallback ARG +# Platform-specific function to extract the +# name of the DLL associated with the specified +# import library ARG. +# +# This fallback implementation is for use when $DLLTOOL +# does not support the --identify-strict option. +# Invoked by eval'ing the libtool variable +# $sharedlib_from_linklib_cmd +# Result is available in the variable +# $sharedlib_from_linklib_result +func_cygming_dll_for_implib_fallback () +{ + $opt_debug + if func_cygming_gnu_implib_p "$1" ; then + # binutils import library + sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"` + elif func_cygming_ms_implib_p "$1" ; then + # ms-generated import library + sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"` + else + # unknown + sharedlib_from_linklib_result="" + fi +} + + +# func_extract_an_archive dir oldlib +func_extract_an_archive () +{ + $opt_debug + f_ex_an_ar_dir="$1"; shift + f_ex_an_ar_oldlib="$1" + if test "$lock_old_archive_extraction" = yes; then + lockfile=$f_ex_an_ar_oldlib.lock + until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do + func_echo "Waiting for $lockfile to be removed" + sleep 2 + done + fi + func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \ + 'stat=$?; rm -f "$lockfile"; exit $stat' + if test "$lock_old_archive_extraction" = yes; then + $opt_dry_run || rm -f "$lockfile" + fi + if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then + : + else + func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" + fi +} + + +# func_extract_archives gentop oldlib ... +func_extract_archives () +{ + $opt_debug + my_gentop="$1"; shift + my_oldlibs=${1+"$@"} + my_oldobjs="" + my_xlib="" + my_xabs="" + my_xdir="" + + for my_xlib in $my_oldlibs; do + # Extract the objects. + case $my_xlib in + [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; + *) my_xabs=`pwd`"/$my_xlib" ;; + esac + func_basename "$my_xlib" + my_xlib="$func_basename_result" + my_xlib_u=$my_xlib + while :; do + case " $extracted_archives " in + *" $my_xlib_u "*) + func_arith $extracted_serial + 1 + extracted_serial=$func_arith_result + my_xlib_u=lt$extracted_serial-$my_xlib ;; + *) break ;; + esac + done + extracted_archives="$extracted_archives $my_xlib_u" + my_xdir="$my_gentop/$my_xlib_u" + + func_mkdir_p "$my_xdir" + + case $host in + *-darwin*) + func_verbose "Extracting $my_xabs" + # Do not bother doing anything if just a dry run + $opt_dry_run || { + darwin_orig_dir=`pwd` + cd $my_xdir || exit $? + darwin_archive=$my_xabs + darwin_curdir=`pwd` + darwin_base_archive=`basename "$darwin_archive"` + darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true` + if test -n "$darwin_arches"; then + darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'` + darwin_arch= + func_verbose "$darwin_base_archive has multiple architectures $darwin_arches" + for darwin_arch in $darwin_arches ; do + func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}" + $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" + cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" + func_extract_an_archive "`pwd`" "${darwin_base_archive}" + cd "$darwin_curdir" + $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" + done # $darwin_arches + ## Okay now we've a bunch of thin objects, gotta fatten them up :) + darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u` + darwin_file= + darwin_files= + for darwin_file in $darwin_filelist; do + darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP` + $LIPO -create -output "$darwin_file" $darwin_files + done # $darwin_filelist + $RM -rf unfat-$$ + cd "$darwin_orig_dir" + else + cd $darwin_orig_dir + func_extract_an_archive "$my_xdir" "$my_xabs" + fi # $darwin_arches + } # !$opt_dry_run + ;; + *) + func_extract_an_archive "$my_xdir" "$my_xabs" + ;; + esac + my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP` + done + + func_extract_archives_result="$my_oldobjs" +} + + +# func_emit_wrapper [arg=no] +# +# Emit a libtool wrapper script on stdout. +# Don't directly open a file because we may want to +# incorporate the script contents within a cygwin/mingw +# wrapper executable. Must ONLY be called from within +# func_mode_link because it depends on a number of variables +# set therein. +# +# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR +# variable will take. If 'yes', then the emitted script +# will assume that the directory in which it is stored is +# the $objdir directory. This is a cygwin/mingw-specific +# behavior. +func_emit_wrapper () +{ + func_emit_wrapper_arg1=${1-no} + + $ECHO "\ +#! $SHELL + +# $output - temporary wrapper script for $objdir/$outputname +# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION +# +# The $output program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='$sed_quote_subst' + +# Be Bourne compatible +if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which + # is contrary to our usage. Disable this feature. + alias -g '\${1+\"\$@\"}'='\"\$@\"' + setopt NO_GLOB_SUBST +else + case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command=\"$relink_command\" + +# This environment variable determines our operation mode. +if test \"\$libtool_install_magic\" = \"$magic\"; then + # install mode needs the following variables: + generated_by_libtool_version='$macro_version' + notinst_deplibs='$notinst_deplibs' +else + # When we are sourced in execute mode, \$file and \$ECHO are already set. + if test \"\$libtool_execute_magic\" != \"$magic\"; then + file=\"\$0\"" + + qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"` + $ECHO "\ + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +\$1 +_LTECHO_EOF' +} + ECHO=\"$qECHO\" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ which is used only on +# windows platforms, and (c) all begin with the string "--lt-" +# (application programs are unlikely to have options which match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's $0 value, followed by "$@". +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=\$0 + shift + for lt_opt + do + case \"\$lt_opt\" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\` + test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=. + lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\` + cat \"\$lt_dump_D/\$lt_dump_F\" + exit 0 + ;; + --lt-*) + \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n \"\$lt_option_debug\"; then + echo \"${outputname}:${output}:\${LINENO}: libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[\$lt_dump_args_N]: \$lt_arg\" + lt_dump_args_N=\`expr \$lt_dump_args_N + 1\` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ +" + case $host in + # Backslashes separate directories on plain windows + *-*-mingw | *-*-os2* | *-cegcc*) + $ECHO "\ + if test -n \"\$lt_option_debug\"; then + \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir\\\\\$program\" 1>&2 + func_lt_dump_args \${1+\"\$@\"} 1>&2 + fi + exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} +" + ;; + + *) + $ECHO "\ + if test -n \"\$lt_option_debug\"; then + \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir/\$program\" 1>&2 + func_lt_dump_args \${1+\"\$@\"} 1>&2 + fi + exec \"\$progdir/\$program\" \${1+\"\$@\"} +" + ;; + esac + $ECHO "\ + \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from \$@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case \" \$* \" in + *\\ --lt-*) + for lt_wr_arg + do + case \$lt_wr_arg in + --lt-*) ;; + *) set x \"\$@\" \"\$lt_wr_arg\"; shift;; + esac + shift + done ;; + esac + func_exec_program_core \${1+\"\$@\"} +} + + # Parse options + func_parse_lt_options \"\$0\" \${1+\"\$@\"} + + # Find the directory that this script lives in. + thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\` + test \"x\$thisdir\" = \"x\$file\" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\` + while test -n \"\$file\"; do + destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\` + + # If there was a directory component, then change thisdir. + if test \"x\$destdir\" != \"x\$file\"; then + case \"\$destdir\" in + [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; + *) thisdir=\"\$thisdir/\$destdir\" ;; + esac + fi + + file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\` + file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1 + if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then + # special case for '.' + if test \"\$thisdir\" = \".\"; then + thisdir=\`pwd\` + fi + # remove .libs from thisdir + case \"\$thisdir\" in + *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;; + $objdir ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=\`cd \"\$thisdir\" && pwd\` + test -n \"\$absdir\" && thisdir=\"\$absdir\" +" + + if test "$fast_install" = yes; then + $ECHO "\ + program=lt-'$outputname'$exeext + progdir=\"\$thisdir/$objdir\" + + if test ! -f \"\$progdir/\$program\" || + { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ + test \"X\$file\" != \"X\$progdir/\$program\"; }; then + + file=\"\$\$-\$program\" + + if test ! -d \"\$progdir\"; then + $MKDIR \"\$progdir\" + else + $RM \"\$progdir/\$file\" + fi" + + $ECHO "\ + + # relink executable if necessary + if test -n \"\$relink_command\"; then + if relink_command_output=\`eval \$relink_command 2>&1\`; then : + else + $ECHO \"\$relink_command_output\" >&2 + $RM \"\$progdir/\$file\" + exit 1 + fi + fi + + $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || + { $RM \"\$progdir/\$program\"; + $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; } + $RM \"\$progdir/\$file\" + fi" + else + $ECHO "\ + program='$outputname' + progdir=\"\$thisdir/$objdir\" +" + fi + + $ECHO "\ + + if test -f \"\$progdir/\$program\"; then" + + # fixup the dll searchpath if we need to. + # + # Fix the DLL searchpath if we need to. Do this before prepending + # to shlibpath, because on Windows, both are PATH and uninstalled + # libraries must come first. + if test -n "$dllsearchpath"; then + $ECHO "\ + # Add the dll search path components to the executable PATH + PATH=$dllsearchpath:\$PATH +" + fi + + # Export our shlibpath_var if we have one. + if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then + $ECHO "\ + # Add our own library path to $shlibpath_var + $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" + + # Some systems cannot cope with colon-terminated $shlibpath_var + # The second colon is a workaround for a bug in BeOS R4 sed + $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\` + + export $shlibpath_var +" + fi + + $ECHO "\ + if test \"\$libtool_execute_magic\" != \"$magic\"; then + # Run the actual program with our arguments. + func_exec_program \${1+\"\$@\"} + fi + else + # The program doesn't exist. + \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 + \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 + \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 + exit 1 + fi +fi\ +" +} + + +# func_emit_cwrapperexe_src +# emit the source code for a wrapper executable on stdout +# Must ONLY be called from within func_mode_link because +# it depends on a number of variable set therein. +func_emit_cwrapperexe_src () +{ + cat < +#include +#ifdef _MSC_VER +# include +# include +# include +#else +# include +# include +# ifdef __CYGWIN__ +# include +# endif +#endif +#include +#include +#include +#include +#include +#include +#include +#include + +/* declarations of non-ANSI functions */ +#if defined(__MINGW32__) +# ifdef __STRICT_ANSI__ +int _putenv (const char *); +# endif +#elif defined(__CYGWIN__) +# ifdef __STRICT_ANSI__ +char *realpath (const char *, char *); +int putenv (char *); +int setenv (const char *, const char *, int); +# endif +/* #elif defined (other platforms) ... */ +#endif + +/* portability defines, excluding path handling macros */ +#if defined(_MSC_VER) +# define setmode _setmode +# define stat _stat +# define chmod _chmod +# define getcwd _getcwd +# define putenv _putenv +# define S_IXUSR _S_IEXEC +# ifndef _INTPTR_T_DEFINED +# define _INTPTR_T_DEFINED +# define intptr_t int +# endif +#elif defined(__MINGW32__) +# define setmode _setmode +# define stat _stat +# define chmod _chmod +# define getcwd _getcwd +# define putenv _putenv +#elif defined(__CYGWIN__) +# define HAVE_SETENV +# define FOPEN_WB "wb" +/* #elif defined (other platforms) ... */ +#endif + +#if defined(PATH_MAX) +# define LT_PATHMAX PATH_MAX +#elif defined(MAXPATHLEN) +# define LT_PATHMAX MAXPATHLEN +#else +# define LT_PATHMAX 1024 +#endif + +#ifndef S_IXOTH +# define S_IXOTH 0 +#endif +#ifndef S_IXGRP +# define S_IXGRP 0 +#endif + +/* path handling portability macros */ +#ifndef DIR_SEPARATOR +# define DIR_SEPARATOR '/' +# define PATH_SEPARATOR ':' +#endif + +#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ + defined (__OS2__) +# define HAVE_DOS_BASED_FILE_SYSTEM +# define FOPEN_WB "wb" +# ifndef DIR_SEPARATOR_2 +# define DIR_SEPARATOR_2 '\\' +# endif +# ifndef PATH_SEPARATOR_2 +# define PATH_SEPARATOR_2 ';' +# endif +#endif + +#ifndef DIR_SEPARATOR_2 +# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) +#else /* DIR_SEPARATOR_2 */ +# define IS_DIR_SEPARATOR(ch) \ + (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) +#endif /* DIR_SEPARATOR_2 */ + +#ifndef PATH_SEPARATOR_2 +# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) +#else /* PATH_SEPARATOR_2 */ +# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) +#endif /* PATH_SEPARATOR_2 */ + +#ifndef FOPEN_WB +# define FOPEN_WB "w" +#endif +#ifndef _O_BINARY +# define _O_BINARY 0 +#endif + +#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) +#define XFREE(stale) do { \ + if (stale) { free ((void *) stale); stale = 0; } \ +} while (0) + +#if defined(LT_DEBUGWRAPPER) +static int lt_debug = 1; +#else +static int lt_debug = 0; +#endif + +const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */ + +void *xmalloc (size_t num); +char *xstrdup (const char *string); +const char *base_name (const char *name); +char *find_executable (const char *wrapper); +char *chase_symlinks (const char *pathspec); +int make_executable (const char *path); +int check_executable (const char *path); +char *strendzap (char *str, const char *pat); +void lt_debugprintf (const char *file, int line, const char *fmt, ...); +void lt_fatal (const char *file, int line, const char *message, ...); +static const char *nonnull (const char *s); +static const char *nonempty (const char *s); +void lt_setenv (const char *name, const char *value); +char *lt_extend_str (const char *orig_value, const char *add, int to_end); +void lt_update_exe_path (const char *name, const char *value); +void lt_update_lib_path (const char *name, const char *value); +char **prepare_spawn (char **argv); +void lt_dump_script (FILE *f); +EOF + + cat <= 0) + && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) + return 1; + else + return 0; +} + +int +make_executable (const char *path) +{ + int rval = 0; + struct stat st; + + lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n", + nonempty (path)); + if ((!path) || (!*path)) + return 0; + + if (stat (path, &st) >= 0) + { + rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); + } + return rval; +} + +/* Searches for the full path of the wrapper. Returns + newly allocated full path name if found, NULL otherwise + Does not chase symlinks, even on platforms that support them. +*/ +char * +find_executable (const char *wrapper) +{ + int has_slash = 0; + const char *p; + const char *p_next; + /* static buffer for getcwd */ + char tmp[LT_PATHMAX + 1]; + int tmp_len; + char *concat_name; + + lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n", + nonempty (wrapper)); + + if ((wrapper == NULL) || (*wrapper == '\0')) + return NULL; + + /* Absolute path? */ +#if defined (HAVE_DOS_BASED_FILE_SYSTEM) + if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') + { + concat_name = xstrdup (wrapper); + if (check_executable (concat_name)) + return concat_name; + XFREE (concat_name); + } + else + { +#endif + if (IS_DIR_SEPARATOR (wrapper[0])) + { + concat_name = xstrdup (wrapper); + if (check_executable (concat_name)) + return concat_name; + XFREE (concat_name); + } +#if defined (HAVE_DOS_BASED_FILE_SYSTEM) + } +#endif + + for (p = wrapper; *p; p++) + if (*p == '/') + { + has_slash = 1; + break; + } + if (!has_slash) + { + /* no slashes; search PATH */ + const char *path = getenv ("PATH"); + if (path != NULL) + { + for (p = path; *p; p = p_next) + { + const char *q; + size_t p_len; + for (q = p; *q; q++) + if (IS_PATH_SEPARATOR (*q)) + break; + p_len = q - p; + p_next = (*q == '\0' ? q : q + 1); + if (p_len == 0) + { + /* empty path: current directory */ + if (getcwd (tmp, LT_PATHMAX) == NULL) + lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", + nonnull (strerror (errno))); + tmp_len = strlen (tmp); + concat_name = + XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); + memcpy (concat_name, tmp, tmp_len); + concat_name[tmp_len] = '/'; + strcpy (concat_name + tmp_len + 1, wrapper); + } + else + { + concat_name = + XMALLOC (char, p_len + 1 + strlen (wrapper) + 1); + memcpy (concat_name, p, p_len); + concat_name[p_len] = '/'; + strcpy (concat_name + p_len + 1, wrapper); + } + if (check_executable (concat_name)) + return concat_name; + XFREE (concat_name); + } + } + /* not found in PATH; assume curdir */ + } + /* Relative path | not found in path: prepend cwd */ + if (getcwd (tmp, LT_PATHMAX) == NULL) + lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", + nonnull (strerror (errno))); + tmp_len = strlen (tmp); + concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); + memcpy (concat_name, tmp, tmp_len); + concat_name[tmp_len] = '/'; + strcpy (concat_name + tmp_len + 1, wrapper); + + if (check_executable (concat_name)) + return concat_name; + XFREE (concat_name); + return NULL; +} + +char * +chase_symlinks (const char *pathspec) +{ +#ifndef S_ISLNK + return xstrdup (pathspec); +#else + char buf[LT_PATHMAX]; + struct stat s; + char *tmp_pathspec = xstrdup (pathspec); + char *p; + int has_symlinks = 0; + while (strlen (tmp_pathspec) && !has_symlinks) + { + lt_debugprintf (__FILE__, __LINE__, + "checking path component for symlinks: %s\n", + tmp_pathspec); + if (lstat (tmp_pathspec, &s) == 0) + { + if (S_ISLNK (s.st_mode) != 0) + { + has_symlinks = 1; + break; + } + + /* search backwards for last DIR_SEPARATOR */ + p = tmp_pathspec + strlen (tmp_pathspec) - 1; + while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) + p--; + if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) + { + /* no more DIR_SEPARATORS left */ + break; + } + *p = '\0'; + } + else + { + lt_fatal (__FILE__, __LINE__, + "error accessing file \"%s\": %s", + tmp_pathspec, nonnull (strerror (errno))); + } + } + XFREE (tmp_pathspec); + + if (!has_symlinks) + { + return xstrdup (pathspec); + } + + tmp_pathspec = realpath (pathspec, buf); + if (tmp_pathspec == 0) + { + lt_fatal (__FILE__, __LINE__, + "could not follow symlinks for %s", pathspec); + } + return xstrdup (tmp_pathspec); +#endif +} + +char * +strendzap (char *str, const char *pat) +{ + size_t len, patlen; + + assert (str != NULL); + assert (pat != NULL); + + len = strlen (str); + patlen = strlen (pat); + + if (patlen <= len) + { + str += len - patlen; + if (strcmp (str, pat) == 0) + *str = '\0'; + } + return str; +} + +void +lt_debugprintf (const char *file, int line, const char *fmt, ...) +{ + va_list args; + if (lt_debug) + { + (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line); + va_start (args, fmt); + (void) vfprintf (stderr, fmt, args); + va_end (args); + } +} + +static void +lt_error_core (int exit_status, const char *file, + int line, const char *mode, + const char *message, va_list ap) +{ + fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode); + vfprintf (stderr, message, ap); + fprintf (stderr, ".\n"); + + if (exit_status >= 0) + exit (exit_status); +} + +void +lt_fatal (const char *file, int line, const char *message, ...) +{ + va_list ap; + va_start (ap, message); + lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap); + va_end (ap); +} + +static const char * +nonnull (const char *s) +{ + return s ? s : "(null)"; +} + +static const char * +nonempty (const char *s) +{ + return (s && !*s) ? "(empty)" : nonnull (s); +} + +void +lt_setenv (const char *name, const char *value) +{ + lt_debugprintf (__FILE__, __LINE__, + "(lt_setenv) setting '%s' to '%s'\n", + nonnull (name), nonnull (value)); + { +#ifdef HAVE_SETENV + /* always make a copy, for consistency with !HAVE_SETENV */ + char *str = xstrdup (value); + setenv (name, str, 1); +#else + int len = strlen (name) + 1 + strlen (value) + 1; + char *str = XMALLOC (char, len); + sprintf (str, "%s=%s", name, value); + if (putenv (str) != EXIT_SUCCESS) + { + XFREE (str); + } +#endif + } +} + +char * +lt_extend_str (const char *orig_value, const char *add, int to_end) +{ + char *new_value; + if (orig_value && *orig_value) + { + int orig_value_len = strlen (orig_value); + int add_len = strlen (add); + new_value = XMALLOC (char, add_len + orig_value_len + 1); + if (to_end) + { + strcpy (new_value, orig_value); + strcpy (new_value + orig_value_len, add); + } + else + { + strcpy (new_value, add); + strcpy (new_value + add_len, orig_value); + } + } + else + { + new_value = xstrdup (add); + } + return new_value; +} + +void +lt_update_exe_path (const char *name, const char *value) +{ + lt_debugprintf (__FILE__, __LINE__, + "(lt_update_exe_path) modifying '%s' by prepending '%s'\n", + nonnull (name), nonnull (value)); + + if (name && *name && value && *value) + { + char *new_value = lt_extend_str (getenv (name), value, 0); + /* some systems can't cope with a ':'-terminated path #' */ + int len = strlen (new_value); + while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1])) + { + new_value[len-1] = '\0'; + } + lt_setenv (name, new_value); + XFREE (new_value); + } +} + +void +lt_update_lib_path (const char *name, const char *value) +{ + lt_debugprintf (__FILE__, __LINE__, + "(lt_update_lib_path) modifying '%s' by prepending '%s'\n", + nonnull (name), nonnull (value)); + + if (name && *name && value && *value) + { + char *new_value = lt_extend_str (getenv (name), value, 0); + lt_setenv (name, new_value); + XFREE (new_value); + } +} + +EOF + case $host_os in + mingw*) + cat <<"EOF" + +/* Prepares an argument vector before calling spawn(). + Note that spawn() does not by itself call the command interpreter + (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") : + ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); + GetVersionEx(&v); + v.dwPlatformId == VER_PLATFORM_WIN32_NT; + }) ? "cmd.exe" : "command.com"). + Instead it simply concatenates the arguments, separated by ' ', and calls + CreateProcess(). We must quote the arguments since Win32 CreateProcess() + interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a + special way: + - Space and tab are interpreted as delimiters. They are not treated as + delimiters if they are surrounded by double quotes: "...". + - Unescaped double quotes are removed from the input. Their only effect is + that within double quotes, space and tab are treated like normal + characters. + - Backslashes not followed by double quotes are not special. + - But 2*n+1 backslashes followed by a double quote become + n backslashes followed by a double quote (n >= 0): + \" -> " + \\\" -> \" + \\\\\" -> \\" + */ +#define SHELL_SPECIAL_CHARS "\"\\ \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" +#define SHELL_SPACE_CHARS " \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" +char ** +prepare_spawn (char **argv) +{ + size_t argc; + char **new_argv; + size_t i; + + /* Count number of arguments. */ + for (argc = 0; argv[argc] != NULL; argc++) + ; + + /* Allocate new argument vector. */ + new_argv = XMALLOC (char *, argc + 1); + + /* Put quoted arguments into the new argument vector. */ + for (i = 0; i < argc; i++) + { + const char *string = argv[i]; + + if (string[0] == '\0') + new_argv[i] = xstrdup ("\"\""); + else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL) + { + int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL); + size_t length; + unsigned int backslashes; + const char *s; + char *quoted_string; + char *p; + + length = 0; + backslashes = 0; + if (quote_around) + length++; + for (s = string; *s != '\0'; s++) + { + char c = *s; + if (c == '"') + length += backslashes + 1; + length++; + if (c == '\\') + backslashes++; + else + backslashes = 0; + } + if (quote_around) + length += backslashes + 1; + + quoted_string = XMALLOC (char, length + 1); + + p = quoted_string; + backslashes = 0; + if (quote_around) + *p++ = '"'; + for (s = string; *s != '\0'; s++) + { + char c = *s; + if (c == '"') + { + unsigned int j; + for (j = backslashes + 1; j > 0; j--) + *p++ = '\\'; + } + *p++ = c; + if (c == '\\') + backslashes++; + else + backslashes = 0; + } + if (quote_around) + { + unsigned int j; + for (j = backslashes; j > 0; j--) + *p++ = '\\'; + *p++ = '"'; + } + *p = '\0'; + + new_argv[i] = quoted_string; + } + else + new_argv[i] = (char *) string; + } + new_argv[argc] = NULL; + + return new_argv; +} +EOF + ;; + esac + + cat <<"EOF" +void lt_dump_script (FILE* f) +{ +EOF + func_emit_wrapper yes | + $SED -n -e ' +s/^\(.\{79\}\)\(..*\)/\1\ +\2/ +h +s/\([\\"]\)/\\\1/g +s/$/\\n/ +s/\([^\n]*\).*/ fputs ("\1", f);/p +g +D' + cat <<"EOF" +} +EOF +} +# end: func_emit_cwrapperexe_src + +# func_win32_import_lib_p ARG +# True if ARG is an import lib, as indicated by $file_magic_cmd +func_win32_import_lib_p () +{ + $opt_debug + case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in + *import*) : ;; + *) false ;; + esac +} + +# func_mode_link arg... +func_mode_link () +{ + $opt_debug + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) + # It is impossible to link a dll without this setting, and + # we shouldn't force the makefile maintainer to figure out + # which system we are compiling for in order to pass an extra + # flag for every libtool invocation. + # allow_undefined=no + + # FIXME: Unfortunately, there are problems with the above when trying + # to make a dll which has undefined symbols, in which case not + # even a static library is built. For now, we need to specify + # -no-undefined on the libtool link line when we can be certain + # that all symbols are satisfied, otherwise we get a static library. + allow_undefined=yes + ;; + *) + allow_undefined=yes + ;; + esac + libtool_args=$nonopt + base_compile="$nonopt $@" + compile_command=$nonopt + finalize_command=$nonopt + + compile_rpath= + finalize_rpath= + compile_shlibpath= + finalize_shlibpath= + convenience= + old_convenience= + deplibs= + old_deplibs= + compiler_flags= + linker_flags= + dllsearchpath= + lib_search_path=`pwd` + inst_prefix_dir= + new_inherited_linker_flags= + + avoid_version=no + bindir= + dlfiles= + dlprefiles= + dlself=no + export_dynamic=no + export_symbols= + export_symbols_regex= + generated= + libobjs= + ltlibs= + module=no + no_install=no + objs= + non_pic_objects= + precious_files_regex= + prefer_static_libs=no + preload=no + prev= + prevarg= + release= + rpath= + xrpath= + perm_rpath= + temp_rpath= + thread_safe=no + vinfo= + vinfo_number=no + weak_libs= + single_module="${wl}-single_module" + func_infer_tag $base_compile + + # We need to know -static, to get the right output filenames. + for arg + do + case $arg in + -shared) + test "$build_libtool_libs" != yes && \ + func_fatal_configuration "can not build a shared library" + build_old_libs=no + break + ;; + -all-static | -static | -static-libtool-libs) + case $arg in + -all-static) + if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then + func_warning "complete static linking is impossible in this configuration" + fi + if test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + prefer_static_libs=yes + ;; + -static) + if test -z "$pic_flag" && test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + prefer_static_libs=built + ;; + -static-libtool-libs) + if test -z "$pic_flag" && test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + prefer_static_libs=yes + ;; + esac + build_libtool_libs=no + build_old_libs=yes + break + ;; + esac + done + + # See if our shared archives depend on static archives. + test -n "$old_archive_from_new_cmds" && build_old_libs=yes + + # Go through the arguments, transforming them on the way. + while test "$#" -gt 0; do + arg="$1" + shift + func_quote_for_eval "$arg" + qarg=$func_quote_for_eval_unquoted_result + func_append libtool_args " $func_quote_for_eval_result" + + # If the previous option needs an argument, assign it. + if test -n "$prev"; then + case $prev in + output) + func_append compile_command " @OUTPUT@" + func_append finalize_command " @OUTPUT@" + ;; + esac + + case $prev in + bindir) + bindir="$arg" + prev= + continue + ;; + dlfiles|dlprefiles) + if test "$preload" = no; then + # Add the symbol object into the linking commands. + func_append compile_command " @SYMFILE@" + func_append finalize_command " @SYMFILE@" + preload=yes + fi + case $arg in + *.la | *.lo) ;; # We handle these cases below. + force) + if test "$dlself" = no; then + dlself=needless + export_dynamic=yes + fi + prev= + continue + ;; + self) + if test "$prev" = dlprefiles; then + dlself=yes + elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then + dlself=yes + else + dlself=needless + export_dynamic=yes + fi + prev= + continue + ;; + *) + if test "$prev" = dlfiles; then + func_append dlfiles " $arg" + else + func_append dlprefiles " $arg" + fi + prev= + continue + ;; + esac + ;; + expsyms) + export_symbols="$arg" + test -f "$arg" \ + || func_fatal_error "symbol file \`$arg' does not exist" + prev= + continue + ;; + expsyms_regex) + export_symbols_regex="$arg" + prev= + continue + ;; + framework) + case $host in + *-*-darwin*) + case "$deplibs " in + *" $qarg.ltframework "*) ;; + *) func_append deplibs " $qarg.ltframework" # this is fixed later + ;; + esac + ;; + esac + prev= + continue + ;; + inst_prefix) + inst_prefix_dir="$arg" + prev= + continue + ;; + objectlist) + if test -f "$arg"; then + save_arg=$arg + moreargs= + for fil in `cat "$save_arg"` + do +# func_append moreargs " $fil" + arg=$fil + # A libtool-controlled object. + + # Check to see that this really is a libtool object. + if func_lalib_unsafe_p "$arg"; then + pic_object= + non_pic_object= + + # Read the .lo file + func_source "$arg" + + if test -z "$pic_object" || + test -z "$non_pic_object" || + test "$pic_object" = none && + test "$non_pic_object" = none; then + func_fatal_error "cannot find name of object for \`$arg'" + fi + + # Extract subdirectory from the argument. + func_dirname "$arg" "/" "" + xdir="$func_dirname_result" + + if test "$pic_object" != none; then + # Prepend the subdirectory the object is found in. + pic_object="$xdir$pic_object" + + if test "$prev" = dlfiles; then + if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then + func_append dlfiles " $pic_object" + prev= + continue + else + # If libtool objects are unsupported, then we need to preload. + prev=dlprefiles + fi + fi + + # CHECK ME: I think I busted this. -Ossama + if test "$prev" = dlprefiles; then + # Preload the old-style object. + func_append dlprefiles " $pic_object" + prev= + fi + + # A PIC object. + func_append libobjs " $pic_object" + arg="$pic_object" + fi + + # Non-PIC object. + if test "$non_pic_object" != none; then + # Prepend the subdirectory the object is found in. + non_pic_object="$xdir$non_pic_object" + + # A standard non-PIC object + func_append non_pic_objects " $non_pic_object" + if test -z "$pic_object" || test "$pic_object" = none ; then + arg="$non_pic_object" + fi + else + # If the PIC object exists, use it instead. + # $xdir was prepended to $pic_object above. + non_pic_object="$pic_object" + func_append non_pic_objects " $non_pic_object" + fi + else + # Only an error if not doing a dry-run. + if $opt_dry_run; then + # Extract subdirectory from the argument. + func_dirname "$arg" "/" "" + xdir="$func_dirname_result" + + func_lo2o "$arg" + pic_object=$xdir$objdir/$func_lo2o_result + non_pic_object=$xdir$func_lo2o_result + func_append libobjs " $pic_object" + func_append non_pic_objects " $non_pic_object" + else + func_fatal_error "\`$arg' is not a valid libtool object" + fi + fi + done + else + func_fatal_error "link input file \`$arg' does not exist" + fi + arg=$save_arg + prev= + continue + ;; + precious_regex) + precious_files_regex="$arg" + prev= + continue + ;; + release) + release="-$arg" + prev= + continue + ;; + rpath | xrpath) + # We need an absolute path. + case $arg in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + func_fatal_error "only absolute run-paths are allowed" + ;; + esac + if test "$prev" = rpath; then + case "$rpath " in + *" $arg "*) ;; + *) func_append rpath " $arg" ;; + esac + else + case "$xrpath " in + *" $arg "*) ;; + *) func_append xrpath " $arg" ;; + esac + fi + prev= + continue + ;; + shrext) + shrext_cmds="$arg" + prev= + continue + ;; + weak) + func_append weak_libs " $arg" + prev= + continue + ;; + xcclinker) + func_append linker_flags " $qarg" + func_append compiler_flags " $qarg" + prev= + func_append compile_command " $qarg" + func_append finalize_command " $qarg" + continue + ;; + xcompiler) + func_append compiler_flags " $qarg" + prev= + func_append compile_command " $qarg" + func_append finalize_command " $qarg" + continue + ;; + xlinker) + func_append linker_flags " $qarg" + func_append compiler_flags " $wl$qarg" + prev= + func_append compile_command " $wl$qarg" + func_append finalize_command " $wl$qarg" + continue + ;; + *) + eval "$prev=\"\$arg\"" + prev= + continue + ;; + esac + fi # test -n "$prev" + + prevarg="$arg" + + case $arg in + -all-static) + if test -n "$link_static_flag"; then + # See comment for -static flag below, for more details. + func_append compile_command " $link_static_flag" + func_append finalize_command " $link_static_flag" + fi + continue + ;; + + -allow-undefined) + # FIXME: remove this flag sometime in the future. + func_fatal_error "\`-allow-undefined' must not be used because it is the default" + ;; + + -avoid-version) + avoid_version=yes + continue + ;; + + -bindir) + prev=bindir + continue + ;; + + -dlopen) + prev=dlfiles + continue + ;; + + -dlpreopen) + prev=dlprefiles + continue + ;; + + -export-dynamic) + export_dynamic=yes + continue + ;; + + -export-symbols | -export-symbols-regex) + if test -n "$export_symbols" || test -n "$export_symbols_regex"; then + func_fatal_error "more than one -exported-symbols argument is not allowed" + fi + if test "X$arg" = "X-export-symbols"; then + prev=expsyms + else + prev=expsyms_regex + fi + continue + ;; + + -framework) + prev=framework + continue + ;; + + -inst-prefix-dir) + prev=inst_prefix + continue + ;; + + # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* + # so, if we see these flags be careful not to treat them like -L + -L[A-Z][A-Z]*:*) + case $with_gcc/$host in + no/*-*-irix* | /*-*-irix*) + func_append compile_command " $arg" + func_append finalize_command " $arg" + ;; + esac + continue + ;; + + -L*) + func_stripname "-L" '' "$arg" + if test -z "$func_stripname_result"; then + if test "$#" -gt 0; then + func_fatal_error "require no space between \`-L' and \`$1'" + else + func_fatal_error "need path for \`-L' option" + fi + fi + func_resolve_sysroot "$func_stripname_result" + dir=$func_resolve_sysroot_result + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + absdir=`cd "$dir" && pwd` + test -z "$absdir" && \ + func_fatal_error "cannot determine absolute directory name of \`$dir'" + dir="$absdir" + ;; + esac + case "$deplibs " in + *" -L$dir "* | *" $arg "*) + # Will only happen for absolute or sysroot arguments + ;; + *) + # Preserve sysroot, but never include relative directories + case $dir in + [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;; + *) func_append deplibs " -L$dir" ;; + esac + func_append lib_search_path " $dir" + ;; + esac + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) + testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'` + case :$dllsearchpath: in + *":$dir:"*) ;; + ::) dllsearchpath=$dir;; + *) func_append dllsearchpath ":$dir";; + esac + case :$dllsearchpath: in + *":$testbindir:"*) ;; + ::) dllsearchpath=$testbindir;; + *) func_append dllsearchpath ":$testbindir";; + esac + ;; + esac + continue + ;; + + -l*) + if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*) + # These systems don't actually have a C or math library (as such) + continue + ;; + *-*-os2*) + # These systems don't actually have a C library (as such) + test "X$arg" = "X-lc" && continue + ;; + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) + # Do not include libc due to us having libc/libc_r. + test "X$arg" = "X-lc" && continue + ;; + *-*-rhapsody* | *-*-darwin1.[012]) + # Rhapsody C and math libraries are in the System framework + func_append deplibs " System.ltframework" + continue + ;; + *-*-sco3.2v5* | *-*-sco5v6*) + # Causes problems with __ctype + test "X$arg" = "X-lc" && continue + ;; + *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) + # Compiler inserts libc in the correct place for threads to work + test "X$arg" = "X-lc" && continue + ;; + esac + elif test "X$arg" = "X-lc_r"; then + case $host in + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) + # Do not include libc_r directly, use -pthread flag. + continue + ;; + esac + fi + func_append deplibs " $arg" + continue + ;; + + -module) + module=yes + continue + ;; + + # Tru64 UNIX uses -model [arg] to determine the layout of C++ + # classes, name mangling, and exception handling. + # Darwin uses the -arch flag to determine output architecture. + -model|-arch|-isysroot|--sysroot) + func_append compiler_flags " $arg" + func_append compile_command " $arg" + func_append finalize_command " $arg" + prev=xcompiler + continue + ;; + + -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ + |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) + func_append compiler_flags " $arg" + func_append compile_command " $arg" + func_append finalize_command " $arg" + case "$new_inherited_linker_flags " in + *" $arg "*) ;; + * ) func_append new_inherited_linker_flags " $arg" ;; + esac + continue + ;; + + -multi_module) + single_module="${wl}-multi_module" + continue + ;; + + -no-fast-install) + fast_install=no + continue + ;; + + -no-install) + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*) + # The PATH hackery in wrapper scripts is required on Windows + # and Darwin in order for the loader to find any dlls it needs. + func_warning "\`-no-install' is ignored for $host" + func_warning "assuming \`-no-fast-install' instead" + fast_install=no + ;; + *) no_install=yes ;; + esac + continue + ;; + + -no-undefined) + allow_undefined=no + continue + ;; + + -objectlist) + prev=objectlist + continue + ;; + + -o) prev=output ;; + + -precious-files-regex) + prev=precious_regex + continue + ;; + + -release) + prev=release + continue + ;; + + -rpath) + prev=rpath + continue + ;; + + -R) + prev=xrpath + continue + ;; + + -R*) + func_stripname '-R' '' "$arg" + dir=$func_stripname_result + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + =*) + func_stripname '=' '' "$dir" + dir=$lt_sysroot$func_stripname_result + ;; + *) + func_fatal_error "only absolute run-paths are allowed" + ;; + esac + case "$xrpath " in + *" $dir "*) ;; + *) func_append xrpath " $dir" ;; + esac + continue + ;; + + -shared) + # The effects of -shared are defined in a previous loop. + continue + ;; + + -shrext) + prev=shrext + continue + ;; + + -static | -static-libtool-libs) + # The effects of -static are defined in a previous loop. + # We used to do the same as -all-static on platforms that + # didn't have a PIC flag, but the assumption that the effects + # would be equivalent was wrong. It would break on at least + # Digital Unix and AIX. + continue + ;; + + -thread-safe) + thread_safe=yes + continue + ;; + + -version-info) + prev=vinfo + continue + ;; + + -version-number) + prev=vinfo + vinfo_number=yes + continue + ;; + + -weak) + prev=weak + continue + ;; + + -Wc,*) + func_stripname '-Wc,' '' "$arg" + args=$func_stripname_result + arg= + save_ifs="$IFS"; IFS=',' + for flag in $args; do + IFS="$save_ifs" + func_quote_for_eval "$flag" + func_append arg " $func_quote_for_eval_result" + func_append compiler_flags " $func_quote_for_eval_result" + done + IFS="$save_ifs" + func_stripname ' ' '' "$arg" + arg=$func_stripname_result + ;; + + -Wl,*) + func_stripname '-Wl,' '' "$arg" + args=$func_stripname_result + arg= + save_ifs="$IFS"; IFS=',' + for flag in $args; do + IFS="$save_ifs" + func_quote_for_eval "$flag" + func_append arg " $wl$func_quote_for_eval_result" + func_append compiler_flags " $wl$func_quote_for_eval_result" + func_append linker_flags " $func_quote_for_eval_result" + done + IFS="$save_ifs" + func_stripname ' ' '' "$arg" + arg=$func_stripname_result + ;; + + -Xcompiler) + prev=xcompiler + continue + ;; + + -Xlinker) + prev=xlinker + continue + ;; + + -XCClinker) + prev=xcclinker + continue + ;; + + # -msg_* for osf cc + -msg_*) + func_quote_for_eval "$arg" + arg="$func_quote_for_eval_result" + ;; + + # Flags to be passed through unchanged, with rationale: + # -64, -mips[0-9] enable 64-bit mode for the SGI compiler + # -r[0-9][0-9]* specify processor for the SGI compiler + # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler + # +DA*, +DD* enable 64-bit mode for the HP compiler + # -q* compiler args for the IBM compiler + # -m*, -t[45]*, -txscale* architecture-specific flags for GCC + # -F/path path to uninstalled frameworks, gcc on darwin + # -p, -pg, --coverage, -fprofile-* profiling flags for GCC + # @file GCC response files + # -tp=* Portland pgcc target processor selection + # --sysroot=* for sysroot support + # -O*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization + -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ + -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \ + -O*|-flto*|-fwhopr*|-fuse-linker-plugin) + func_quote_for_eval "$arg" + arg="$func_quote_for_eval_result" + func_append compile_command " $arg" + func_append finalize_command " $arg" + func_append compiler_flags " $arg" + continue + ;; + + # Some other compiler flag. + -* | +*) + func_quote_for_eval "$arg" + arg="$func_quote_for_eval_result" + ;; + + *.$objext) + # A standard object. + func_append objs " $arg" + ;; + + *.lo) + # A libtool-controlled object. + + # Check to see that this really is a libtool object. + if func_lalib_unsafe_p "$arg"; then + pic_object= + non_pic_object= + + # Read the .lo file + func_source "$arg" + + if test -z "$pic_object" || + test -z "$non_pic_object" || + test "$pic_object" = none && + test "$non_pic_object" = none; then + func_fatal_error "cannot find name of object for \`$arg'" + fi + + # Extract subdirectory from the argument. + func_dirname "$arg" "/" "" + xdir="$func_dirname_result" + + if test "$pic_object" != none; then + # Prepend the subdirectory the object is found in. + pic_object="$xdir$pic_object" + + if test "$prev" = dlfiles; then + if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then + func_append dlfiles " $pic_object" + prev= + continue + else + # If libtool objects are unsupported, then we need to preload. + prev=dlprefiles + fi + fi + + # CHECK ME: I think I busted this. -Ossama + if test "$prev" = dlprefiles; then + # Preload the old-style object. + func_append dlprefiles " $pic_object" + prev= + fi + + # A PIC object. + func_append libobjs " $pic_object" + arg="$pic_object" + fi + + # Non-PIC object. + if test "$non_pic_object" != none; then + # Prepend the subdirectory the object is found in. + non_pic_object="$xdir$non_pic_object" + + # A standard non-PIC object + func_append non_pic_objects " $non_pic_object" + if test -z "$pic_object" || test "$pic_object" = none ; then + arg="$non_pic_object" + fi + else + # If the PIC object exists, use it instead. + # $xdir was prepended to $pic_object above. + non_pic_object="$pic_object" + func_append non_pic_objects " $non_pic_object" + fi + else + # Only an error if not doing a dry-run. + if $opt_dry_run; then + # Extract subdirectory from the argument. + func_dirname "$arg" "/" "" + xdir="$func_dirname_result" + + func_lo2o "$arg" + pic_object=$xdir$objdir/$func_lo2o_result + non_pic_object=$xdir$func_lo2o_result + func_append libobjs " $pic_object" + func_append non_pic_objects " $non_pic_object" + else + func_fatal_error "\`$arg' is not a valid libtool object" + fi + fi + ;; + + *.$libext) + # An archive. + func_append deplibs " $arg" + func_append old_deplibs " $arg" + continue + ;; + + *.la) + # A libtool-controlled library. + + func_resolve_sysroot "$arg" + if test "$prev" = dlfiles; then + # This library was specified with -dlopen. + func_append dlfiles " $func_resolve_sysroot_result" + prev= + elif test "$prev" = dlprefiles; then + # The library was specified with -dlpreopen. + func_append dlprefiles " $func_resolve_sysroot_result" + prev= + else + func_append deplibs " $func_resolve_sysroot_result" + fi + continue + ;; + + # Some other compiler argument. + *) + # Unknown arguments in both finalize_command and compile_command need + # to be aesthetically quoted because they are evaled later. + func_quote_for_eval "$arg" + arg="$func_quote_for_eval_result" + ;; + esac # arg + + # Now actually substitute the argument into the commands. + if test -n "$arg"; then + func_append compile_command " $arg" + func_append finalize_command " $arg" + fi + done # argument parsing loop + + test -n "$prev" && \ + func_fatal_help "the \`$prevarg' option requires an argument" + + if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then + eval arg=\"$export_dynamic_flag_spec\" + func_append compile_command " $arg" + func_append finalize_command " $arg" + fi + + oldlibs= + # calculate the name of the file, without its directory + func_basename "$output" + outputname="$func_basename_result" + libobjs_save="$libobjs" + + if test -n "$shlibpath_var"; then + # get the directories listed in $shlibpath_var + eval shlib_search_path=\`\$ECHO \"\${$shlibpath_var}\" \| \$SED \'s/:/ /g\'\` + else + shlib_search_path= + fi + eval sys_lib_search_path=\"$sys_lib_search_path_spec\" + eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" + + func_dirname "$output" "/" "" + output_objdir="$func_dirname_result$objdir" + func_to_tool_file "$output_objdir/" + tool_output_objdir=$func_to_tool_file_result + # Create the object directory. + func_mkdir_p "$output_objdir" + + # Determine the type of output + case $output in + "") + func_fatal_help "you must specify an output file" + ;; + *.$libext) linkmode=oldlib ;; + *.lo | *.$objext) linkmode=obj ;; + *.la) linkmode=lib ;; + *) linkmode=prog ;; # Anything else should be a program. + esac + + specialdeplibs= + + libs= + # Find all interdependent deplibs by searching for libraries + # that are linked more than once (e.g. -la -lb -la) + for deplib in $deplibs; do + if $opt_preserve_dup_deps ; then + case "$libs " in + *" $deplib "*) func_append specialdeplibs " $deplib" ;; + esac + fi + func_append libs " $deplib" + done + + if test "$linkmode" = lib; then + libs="$predeps $libs $compiler_lib_search_path $postdeps" + + # Compute libraries that are listed more than once in $predeps + # $postdeps and mark them as special (i.e., whose duplicates are + # not to be eliminated). + pre_post_deps= + if $opt_duplicate_compiler_generated_deps; then + for pre_post_dep in $predeps $postdeps; do + case "$pre_post_deps " in + *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;; + esac + func_append pre_post_deps " $pre_post_dep" + done + fi + pre_post_deps= + fi + + deplibs= + newdependency_libs= + newlib_search_path= + need_relink=no # whether we're linking any uninstalled libtool libraries + notinst_deplibs= # not-installed libtool libraries + notinst_path= # paths that contain not-installed libtool libraries + + case $linkmode in + lib) + passes="conv dlpreopen link" + for file in $dlfiles $dlprefiles; do + case $file in + *.la) ;; + *) + func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file" + ;; + esac + done + ;; + prog) + compile_deplibs= + finalize_deplibs= + alldeplibs=no + newdlfiles= + newdlprefiles= + passes="conv scan dlopen dlpreopen link" + ;; + *) passes="conv" + ;; + esac + + for pass in $passes; do + # The preopen pass in lib mode reverses $deplibs; put it back here + # so that -L comes before libs that need it for instance... + if test "$linkmode,$pass" = "lib,link"; then + ## FIXME: Find the place where the list is rebuilt in the wrong + ## order, and fix it there properly + tmp_deplibs= + for deplib in $deplibs; do + tmp_deplibs="$deplib $tmp_deplibs" + done + deplibs="$tmp_deplibs" + fi + + if test "$linkmode,$pass" = "lib,link" || + test "$linkmode,$pass" = "prog,scan"; then + libs="$deplibs" + deplibs= + fi + if test "$linkmode" = prog; then + case $pass in + dlopen) libs="$dlfiles" ;; + dlpreopen) libs="$dlprefiles" ;; + link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; + esac + fi + if test "$linkmode,$pass" = "lib,dlpreopen"; then + # Collect and forward deplibs of preopened libtool libs + for lib in $dlprefiles; do + # Ignore non-libtool-libs + dependency_libs= + func_resolve_sysroot "$lib" + case $lib in + *.la) func_source "$func_resolve_sysroot_result" ;; + esac + + # Collect preopened libtool deplibs, except any this library + # has declared as weak libs + for deplib in $dependency_libs; do + func_basename "$deplib" + deplib_base=$func_basename_result + case " $weak_libs " in + *" $deplib_base "*) ;; + *) func_append deplibs " $deplib" ;; + esac + done + done + libs="$dlprefiles" + fi + if test "$pass" = dlopen; then + # Collect dlpreopened libraries + save_deplibs="$deplibs" + deplibs= + fi + + for deplib in $libs; do + lib= + found=no + case $deplib in + -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ + |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) + if test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + func_append compiler_flags " $deplib" + if test "$linkmode" = lib ; then + case "$new_inherited_linker_flags " in + *" $deplib "*) ;; + * ) func_append new_inherited_linker_flags " $deplib" ;; + esac + fi + fi + continue + ;; + -l*) + if test "$linkmode" != lib && test "$linkmode" != prog; then + func_warning "\`-l' is ignored for archives/objects" + continue + fi + func_stripname '-l' '' "$deplib" + name=$func_stripname_result + if test "$linkmode" = lib; then + searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" + else + searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" + fi + for searchdir in $searchdirs; do + for search_ext in .la $std_shrext .so .a; do + # Search the libtool library + lib="$searchdir/lib${name}${search_ext}" + if test -f "$lib"; then + if test "$search_ext" = ".la"; then + found=yes + else + found=no + fi + break 2 + fi + done + done + if test "$found" != yes; then + # deplib doesn't seem to be a libtool library + if test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" + test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" + fi + continue + else # deplib is a libtool library + # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, + # We need to do some special things here, and not later. + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + case " $predeps $postdeps " in + *" $deplib "*) + if func_lalib_p "$lib"; then + library_names= + old_library= + func_source "$lib" + for l in $old_library $library_names; do + ll="$l" + done + if test "X$ll" = "X$old_library" ; then # only static version available + found=no + func_dirname "$lib" "" "." + ladir="$func_dirname_result" + lib=$ladir/$old_library + if test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" + test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" + fi + continue + fi + fi + ;; + *) ;; + esac + fi + fi + ;; # -l + *.ltframework) + if test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" + if test "$linkmode" = lib ; then + case "$new_inherited_linker_flags " in + *" $deplib "*) ;; + * ) func_append new_inherited_linker_flags " $deplib" ;; + esac + fi + fi + continue + ;; + -L*) + case $linkmode in + lib) + deplibs="$deplib $deplibs" + test "$pass" = conv && continue + newdependency_libs="$deplib $newdependency_libs" + func_stripname '-L' '' "$deplib" + func_resolve_sysroot "$func_stripname_result" + func_append newlib_search_path " $func_resolve_sysroot_result" + ;; + prog) + if test "$pass" = conv; then + deplibs="$deplib $deplibs" + continue + fi + if test "$pass" = scan; then + deplibs="$deplib $deplibs" + else + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + fi + func_stripname '-L' '' "$deplib" + func_resolve_sysroot "$func_stripname_result" + func_append newlib_search_path " $func_resolve_sysroot_result" + ;; + *) + func_warning "\`-L' is ignored for archives/objects" + ;; + esac # linkmode + continue + ;; # -L + -R*) + if test "$pass" = link; then + func_stripname '-R' '' "$deplib" + func_resolve_sysroot "$func_stripname_result" + dir=$func_resolve_sysroot_result + # Make sure the xrpath contains only unique directories. + case "$xrpath " in + *" $dir "*) ;; + *) func_append xrpath " $dir" ;; + esac + fi + deplibs="$deplib $deplibs" + continue + ;; + *.la) + func_resolve_sysroot "$deplib" + lib=$func_resolve_sysroot_result + ;; + *.$libext) + if test "$pass" = conv; then + deplibs="$deplib $deplibs" + continue + fi + case $linkmode in + lib) + # Linking convenience modules into shared libraries is allowed, + # but linking other static libraries is non-portable. + case " $dlpreconveniencelibs " in + *" $deplib "*) ;; + *) + valid_a_lib=no + case $deplibs_check_method in + match_pattern*) + set dummy $deplibs_check_method; shift + match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` + if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \ + | $EGREP "$match_pattern_regex" > /dev/null; then + valid_a_lib=yes + fi + ;; + pass_all) + valid_a_lib=yes + ;; + esac + if test "$valid_a_lib" != yes; then + echo + $ECHO "*** Warning: Trying to link with static lib archive $deplib." + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which you do not appear to have" + echo "*** because the file extensions .$libext of this argument makes me believe" + echo "*** that it is just a static archive that I should not use here." + else + echo + $ECHO "*** Warning: Linking the shared library $output against the" + $ECHO "*** static library $deplib is not portable!" + deplibs="$deplib $deplibs" + fi + ;; + esac + continue + ;; + prog) + if test "$pass" != link; then + deplibs="$deplib $deplibs" + else + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + fi + continue + ;; + esac # linkmode + ;; # *.$libext + *.lo | *.$objext) + if test "$pass" = conv; then + deplibs="$deplib $deplibs" + elif test "$linkmode" = prog; then + if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then + # If there is no dlopen support or we're linking statically, + # we need to preload. + func_append newdlprefiles " $deplib" + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + func_append newdlfiles " $deplib" + fi + fi + continue + ;; + %DEPLIBS%) + alldeplibs=yes + continue + ;; + esac # case $deplib + + if test "$found" = yes || test -f "$lib"; then : + else + func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'" + fi + + # Check to see that this really is a libtool archive. + func_lalib_unsafe_p "$lib" \ + || func_fatal_error "\`$lib' is not a valid libtool archive" + + func_dirname "$lib" "" "." + ladir="$func_dirname_result" + + dlname= + dlopen= + dlpreopen= + libdir= + library_names= + old_library= + inherited_linker_flags= + # If the library was installed with an old release of libtool, + # it will not redefine variables installed, or shouldnotlink + installed=yes + shouldnotlink=no + avoidtemprpath= + + + # Read the .la file + func_source "$lib" + + # Convert "-framework foo" to "foo.ltframework" + if test -n "$inherited_linker_flags"; then + tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'` + for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do + case " $new_inherited_linker_flags " in + *" $tmp_inherited_linker_flag "*) ;; + *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";; + esac + done + fi + dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + if test "$linkmode,$pass" = "lib,link" || + test "$linkmode,$pass" = "prog,scan" || + { test "$linkmode" != prog && test "$linkmode" != lib; }; then + test -n "$dlopen" && func_append dlfiles " $dlopen" + test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen" + fi + + if test "$pass" = conv; then + # Only check for convenience libraries + deplibs="$lib $deplibs" + if test -z "$libdir"; then + if test -z "$old_library"; then + func_fatal_error "cannot find name of link library for \`$lib'" + fi + # It is a libtool convenience library, so add in its objects. + func_append convenience " $ladir/$objdir/$old_library" + func_append old_convenience " $ladir/$objdir/$old_library" + elif test "$linkmode" != prog && test "$linkmode" != lib; then + func_fatal_error "\`$lib' is not a convenience library" + fi + tmp_libs= + for deplib in $dependency_libs; do + deplibs="$deplib $deplibs" + if $opt_preserve_dup_deps ; then + case "$tmp_libs " in + *" $deplib "*) func_append specialdeplibs " $deplib" ;; + esac + fi + func_append tmp_libs " $deplib" + done + continue + fi # $pass = conv + + + # Get the name of the library we link against. + linklib= + if test -n "$old_library" && + { test "$prefer_static_libs" = yes || + test "$prefer_static_libs,$installed" = "built,no"; }; then + linklib=$old_library + else + for l in $old_library $library_names; do + linklib="$l" + done + fi + if test -z "$linklib"; then + func_fatal_error "cannot find name of link library for \`$lib'" + fi + + # This library was specified with -dlopen. + if test "$pass" = dlopen; then + if test -z "$libdir"; then + func_fatal_error "cannot -dlopen a convenience library: \`$lib'" + fi + if test -z "$dlname" || + test "$dlopen_support" != yes || + test "$build_libtool_libs" = no; then + # If there is no dlname, no dlopen support or we're linking + # statically, we need to preload. We also need to preload any + # dependent libraries so libltdl's deplib preloader doesn't + # bomb out in the load deplibs phase. + func_append dlprefiles " $lib $dependency_libs" + else + func_append newdlfiles " $lib" + fi + continue + fi # $pass = dlopen + + # We need an absolute path. + case $ladir in + [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; + *) + abs_ladir=`cd "$ladir" && pwd` + if test -z "$abs_ladir"; then + func_warning "cannot determine absolute directory name of \`$ladir'" + func_warning "passing it literally to the linker, although it might fail" + abs_ladir="$ladir" + fi + ;; + esac + func_basename "$lib" + laname="$func_basename_result" + + # Find the relevant object directory and library name. + if test "X$installed" = Xyes; then + if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then + func_warning "library \`$lib' was moved." + dir="$ladir" + absdir="$abs_ladir" + libdir="$abs_ladir" + else + dir="$lt_sysroot$libdir" + absdir="$lt_sysroot$libdir" + fi + test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes + else + if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then + dir="$ladir" + absdir="$abs_ladir" + # Remove this search path later + func_append notinst_path " $abs_ladir" + else + dir="$ladir/$objdir" + absdir="$abs_ladir/$objdir" + # Remove this search path later + func_append notinst_path " $abs_ladir" + fi + fi # $installed = yes + func_stripname 'lib' '.la' "$laname" + name=$func_stripname_result + + # This library was specified with -dlpreopen. + if test "$pass" = dlpreopen; then + if test -z "$libdir" && test "$linkmode" = prog; then + func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'" + fi + case "$host" in + # special handling for platforms with PE-DLLs. + *cygwin* | *mingw* | *cegcc* ) + # Linker will automatically link against shared library if both + # static and shared are present. Therefore, ensure we extract + # symbols from the import library if a shared library is present + # (otherwise, the dlopen module name will be incorrect). We do + # this by putting the import library name into $newdlprefiles. + # We recover the dlopen module name by 'saving' the la file + # name in a special purpose variable, and (later) extracting the + # dlname from the la file. + if test -n "$dlname"; then + func_tr_sh "$dir/$linklib" + eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname" + func_append newdlprefiles " $dir/$linklib" + else + func_append newdlprefiles " $dir/$old_library" + # Keep a list of preopened convenience libraries to check + # that they are being used correctly in the link pass. + test -z "$libdir" && \ + func_append dlpreconveniencelibs " $dir/$old_library" + fi + ;; + * ) + # Prefer using a static library (so that no silly _DYNAMIC symbols + # are required to link). + if test -n "$old_library"; then + func_append newdlprefiles " $dir/$old_library" + # Keep a list of preopened convenience libraries to check + # that they are being used correctly in the link pass. + test -z "$libdir" && \ + func_append dlpreconveniencelibs " $dir/$old_library" + # Otherwise, use the dlname, so that lt_dlopen finds it. + elif test -n "$dlname"; then + func_append newdlprefiles " $dir/$dlname" + else + func_append newdlprefiles " $dir/$linklib" + fi + ;; + esac + fi # $pass = dlpreopen + + if test -z "$libdir"; then + # Link the convenience library + if test "$linkmode" = lib; then + deplibs="$dir/$old_library $deplibs" + elif test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$dir/$old_library $compile_deplibs" + finalize_deplibs="$dir/$old_library $finalize_deplibs" + else + deplibs="$lib $deplibs" # used for prog,scan pass + fi + continue + fi + + + if test "$linkmode" = prog && test "$pass" != link; then + func_append newlib_search_path " $ladir" + deplibs="$lib $deplibs" + + linkalldeplibs=no + if test "$link_all_deplibs" != no || test -z "$library_names" || + test "$build_libtool_libs" = no; then + linkalldeplibs=yes + fi + + tmp_libs= + for deplib in $dependency_libs; do + case $deplib in + -L*) func_stripname '-L' '' "$deplib" + func_resolve_sysroot "$func_stripname_result" + func_append newlib_search_path " $func_resolve_sysroot_result" + ;; + esac + # Need to link against all dependency_libs? + if test "$linkalldeplibs" = yes; then + deplibs="$deplib $deplibs" + else + # Need to hardcode shared library paths + # or/and link against static libraries + newdependency_libs="$deplib $newdependency_libs" + fi + if $opt_preserve_dup_deps ; then + case "$tmp_libs " in + *" $deplib "*) func_append specialdeplibs " $deplib" ;; + esac + fi + func_append tmp_libs " $deplib" + done # for deplib + continue + fi # $linkmode = prog... + + if test "$linkmode,$pass" = "prog,link"; then + if test -n "$library_names" && + { { test "$prefer_static_libs" = no || + test "$prefer_static_libs,$installed" = "built,yes"; } || + test -z "$old_library"; }; then + # We need to hardcode the library path + if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then + # Make sure the rpath contains only unique directories. + case "$temp_rpath:" in + *"$absdir:"*) ;; + *) func_append temp_rpath "$absdir:" ;; + esac + fi + + # Hardcode the library path. + # Skip directories that are in the system default run-time + # search path. + case " $sys_lib_dlsearch_path " in + *" $absdir "*) ;; + *) + case "$compile_rpath " in + *" $absdir "*) ;; + *) func_append compile_rpath " $absdir" ;; + esac + ;; + esac + case " $sys_lib_dlsearch_path " in + *" $libdir "*) ;; + *) + case "$finalize_rpath " in + *" $libdir "*) ;; + *) func_append finalize_rpath " $libdir" ;; + esac + ;; + esac + fi # $linkmode,$pass = prog,link... + + if test "$alldeplibs" = yes && + { test "$deplibs_check_method" = pass_all || + { test "$build_libtool_libs" = yes && + test -n "$library_names"; }; }; then + # We only need to search for static libraries + continue + fi + fi + + link_static=no # Whether the deplib will be linked statically + use_static_libs=$prefer_static_libs + if test "$use_static_libs" = built && test "$installed" = yes; then + use_static_libs=no + fi + if test -n "$library_names" && + { test "$use_static_libs" = no || test -z "$old_library"; }; then + case $host in + *cygwin* | *mingw* | *cegcc*) + # No point in relinking DLLs because paths are not encoded + func_append notinst_deplibs " $lib" + need_relink=no + ;; + *) + if test "$installed" = no; then + func_append notinst_deplibs " $lib" + need_relink=yes + fi + ;; + esac + # This is a shared library + + # Warn about portability, can't link against -module's on some + # systems (darwin). Don't bleat about dlopened modules though! + dlopenmodule="" + for dlpremoduletest in $dlprefiles; do + if test "X$dlpremoduletest" = "X$lib"; then + dlopenmodule="$dlpremoduletest" + break + fi + done + if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then + echo + if test "$linkmode" = prog; then + $ECHO "*** Warning: Linking the executable $output against the loadable module" + else + $ECHO "*** Warning: Linking the shared library $output against the loadable module" + fi + $ECHO "*** $linklib is not portable!" + fi + if test "$linkmode" = lib && + test "$hardcode_into_libs" = yes; then + # Hardcode the library path. + # Skip directories that are in the system default run-time + # search path. + case " $sys_lib_dlsearch_path " in + *" $absdir "*) ;; + *) + case "$compile_rpath " in + *" $absdir "*) ;; + *) func_append compile_rpath " $absdir" ;; + esac + ;; + esac + case " $sys_lib_dlsearch_path " in + *" $libdir "*) ;; + *) + case "$finalize_rpath " in + *" $libdir "*) ;; + *) func_append finalize_rpath " $libdir" ;; + esac + ;; + esac + fi + + if test -n "$old_archive_from_expsyms_cmds"; then + # figure out the soname + set dummy $library_names + shift + realname="$1" + shift + libname=`eval "\\$ECHO \"$libname_spec\""` + # use dlname if we got it. it's perfectly good, no? + if test -n "$dlname"; then + soname="$dlname" + elif test -n "$soname_spec"; then + # bleh windows + case $host in + *cygwin* | mingw* | *cegcc*) + func_arith $current - $age + major=$func_arith_result + versuffix="-$major" + ;; + esac + eval soname=\"$soname_spec\" + else + soname="$realname" + fi + + # Make a new name for the extract_expsyms_cmds to use + soroot="$soname" + func_basename "$soroot" + soname="$func_basename_result" + func_stripname 'lib' '.dll' "$soname" + newlib=libimp-$func_stripname_result.a + + # If the library has no export list, then create one now + if test -f "$output_objdir/$soname-def"; then : + else + func_verbose "extracting exported symbol list from \`$soname'" + func_execute_cmds "$extract_expsyms_cmds" 'exit $?' + fi + + # Create $newlib + if test -f "$output_objdir/$newlib"; then :; else + func_verbose "generating import library for \`$soname'" + func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?' + fi + # make sure the library variables are pointing to the new library + dir=$output_objdir + linklib=$newlib + fi # test -n "$old_archive_from_expsyms_cmds" + + if test "$linkmode" = prog || test "$opt_mode" != relink; then + add_shlibpath= + add_dir= + add= + lib_linked=yes + case $hardcode_action in + immediate | unsupported) + if test "$hardcode_direct" = no; then + add="$dir/$linklib" + case $host in + *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;; + *-*-sysv4*uw2*) add_dir="-L$dir" ;; + *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ + *-*-unixware7*) add_dir="-L$dir" ;; + *-*-darwin* ) + # if the lib is a (non-dlopened) module then we can not + # link against it, someone is ignoring the earlier warnings + if /usr/bin/file -L $add 2> /dev/null | + $GREP ": [^:]* bundle" >/dev/null ; then + if test "X$dlopenmodule" != "X$lib"; then + $ECHO "*** Warning: lib $linklib is a module, not a shared library" + if test -z "$old_library" ; then + echo + echo "*** And there doesn't seem to be a static archive available" + echo "*** The link will probably fail, sorry" + else + add="$dir/$old_library" + fi + elif test -n "$old_library"; then + add="$dir/$old_library" + fi + fi + esac + elif test "$hardcode_minus_L" = no; then + case $host in + *-*-sunos*) add_shlibpath="$dir" ;; + esac + add_dir="-L$dir" + add="-l$name" + elif test "$hardcode_shlibpath_var" = no; then + add_shlibpath="$dir" + add="-l$name" + else + lib_linked=no + fi + ;; + relink) + if test "$hardcode_direct" = yes && + test "$hardcode_direct_absolute" = no; then + add="$dir/$linklib" + elif test "$hardcode_minus_L" = yes; then + add_dir="-L$absdir" + # Try looking first in the location we're being installed to. + if test -n "$inst_prefix_dir"; then + case $libdir in + [\\/]*) + func_append add_dir " -L$inst_prefix_dir$libdir" + ;; + esac + fi + add="-l$name" + elif test "$hardcode_shlibpath_var" = yes; then + add_shlibpath="$dir" + add="-l$name" + else + lib_linked=no + fi + ;; + *) lib_linked=no ;; + esac + + if test "$lib_linked" != yes; then + func_fatal_configuration "unsupported hardcode properties" + fi + + if test -n "$add_shlibpath"; then + case :$compile_shlibpath: in + *":$add_shlibpath:"*) ;; + *) func_append compile_shlibpath "$add_shlibpath:" ;; + esac + fi + if test "$linkmode" = prog; then + test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" + test -n "$add" && compile_deplibs="$add $compile_deplibs" + else + test -n "$add_dir" && deplibs="$add_dir $deplibs" + test -n "$add" && deplibs="$add $deplibs" + if test "$hardcode_direct" != yes && + test "$hardcode_minus_L" != yes && + test "$hardcode_shlibpath_var" = yes; then + case :$finalize_shlibpath: in + *":$libdir:"*) ;; + *) func_append finalize_shlibpath "$libdir:" ;; + esac + fi + fi + fi + + if test "$linkmode" = prog || test "$opt_mode" = relink; then + add_shlibpath= + add_dir= + add= + # Finalize command for both is simple: just hardcode it. + if test "$hardcode_direct" = yes && + test "$hardcode_direct_absolute" = no; then + add="$libdir/$linklib" + elif test "$hardcode_minus_L" = yes; then + add_dir="-L$libdir" + add="-l$name" + elif test "$hardcode_shlibpath_var" = yes; then + case :$finalize_shlibpath: in + *":$libdir:"*) ;; + *) func_append finalize_shlibpath "$libdir:" ;; + esac + add="-l$name" + elif test "$hardcode_automatic" = yes; then + if test -n "$inst_prefix_dir" && + test -f "$inst_prefix_dir$libdir/$linklib" ; then + add="$inst_prefix_dir$libdir/$linklib" + else + add="$libdir/$linklib" + fi + else + # We cannot seem to hardcode it, guess we'll fake it. + add_dir="-L$libdir" + # Try looking first in the location we're being installed to. + if test -n "$inst_prefix_dir"; then + case $libdir in + [\\/]*) + func_append add_dir " -L$inst_prefix_dir$libdir" + ;; + esac + fi + add="-l$name" + fi + + if test "$linkmode" = prog; then + test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" + test -n "$add" && finalize_deplibs="$add $finalize_deplibs" + else + test -n "$add_dir" && deplibs="$add_dir $deplibs" + test -n "$add" && deplibs="$add $deplibs" + fi + fi + elif test "$linkmode" = prog; then + # Here we assume that one of hardcode_direct or hardcode_minus_L + # is not unsupported. This is valid on all known static and + # shared platforms. + if test "$hardcode_direct" != unsupported; then + test -n "$old_library" && linklib="$old_library" + compile_deplibs="$dir/$linklib $compile_deplibs" + finalize_deplibs="$dir/$linklib $finalize_deplibs" + else + compile_deplibs="-l$name -L$dir $compile_deplibs" + finalize_deplibs="-l$name -L$dir $finalize_deplibs" + fi + elif test "$build_libtool_libs" = yes; then + # Not a shared library + if test "$deplibs_check_method" != pass_all; then + # We're trying link a shared library against a static one + # but the system doesn't support it. + + # Just print a warning and add the library to dependency_libs so + # that the program can be linked against the static library. + echo + $ECHO "*** Warning: This system can not link to static lib archive $lib." + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which you do not appear to have." + if test "$module" = yes; then + echo "*** But as you try to build a module library, libtool will still create " + echo "*** a static module, that should work as long as the dlopening application" + echo "*** is linked with the -dlopen flag to resolve symbols at runtime." + if test -z "$global_symbol_pipe"; then + echo + echo "*** However, this would only work if libtool was able to extract symbol" + echo "*** lists from a program, using \`nm' or equivalent, but libtool could" + echo "*** not find such a program. So, this module is probably useless." + echo "*** \`nm' from GNU binutils and a full rebuild may help." + fi + if test "$build_old_libs" = no; then + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + fi + else + deplibs="$dir/$old_library $deplibs" + link_static=yes + fi + fi # link shared/static library? + + if test "$linkmode" = lib; then + if test -n "$dependency_libs" && + { test "$hardcode_into_libs" != yes || + test "$build_old_libs" = yes || + test "$link_static" = yes; }; then + # Extract -R from dependency_libs + temp_deplibs= + for libdir in $dependency_libs; do + case $libdir in + -R*) func_stripname '-R' '' "$libdir" + temp_xrpath=$func_stripname_result + case " $xrpath " in + *" $temp_xrpath "*) ;; + *) func_append xrpath " $temp_xrpath";; + esac;; + *) func_append temp_deplibs " $libdir";; + esac + done + dependency_libs="$temp_deplibs" + fi + + func_append newlib_search_path " $absdir" + # Link against this library + test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" + # ... and its dependency_libs + tmp_libs= + for deplib in $dependency_libs; do + newdependency_libs="$deplib $newdependency_libs" + case $deplib in + -L*) func_stripname '-L' '' "$deplib" + func_resolve_sysroot "$func_stripname_result";; + *) func_resolve_sysroot "$deplib" ;; + esac + if $opt_preserve_dup_deps ; then + case "$tmp_libs " in + *" $func_resolve_sysroot_result "*) + func_append specialdeplibs " $func_resolve_sysroot_result" ;; + esac + fi + func_append tmp_libs " $func_resolve_sysroot_result" + done + + if test "$link_all_deplibs" != no; then + # Add the search paths of all dependency libraries + for deplib in $dependency_libs; do + path= + case $deplib in + -L*) path="$deplib" ;; + *.la) + func_resolve_sysroot "$deplib" + deplib=$func_resolve_sysroot_result + func_dirname "$deplib" "" "." + dir=$func_dirname_result + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; + *) + absdir=`cd "$dir" && pwd` + if test -z "$absdir"; then + func_warning "cannot determine absolute directory name of \`$dir'" + absdir="$dir" + fi + ;; + esac + if $GREP "^installed=no" $deplib > /dev/null; then + case $host in + *-*-darwin*) + depdepl= + eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` + if test -n "$deplibrary_names" ; then + for tmp in $deplibrary_names ; do + depdepl=$tmp + done + if test -f "$absdir/$objdir/$depdepl" ; then + depdepl="$absdir/$objdir/$depdepl" + darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` + if test -z "$darwin_install_name"; then + darwin_install_name=`${OTOOL64} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` + fi + func_append compiler_flags " ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}" + func_append linker_flags " -dylib_file ${darwin_install_name}:${depdepl}" + path= + fi + fi + ;; + *) + path="-L$absdir/$objdir" + ;; + esac + else + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` + test -z "$libdir" && \ + func_fatal_error "\`$deplib' is not a valid libtool archive" + test "$absdir" != "$libdir" && \ + func_warning "\`$deplib' seems to be moved" + + path="-L$absdir" + fi + ;; + esac + case " $deplibs " in + *" $path "*) ;; + *) deplibs="$path $deplibs" ;; + esac + done + fi # link_all_deplibs != no + fi # linkmode = lib + done # for deplib in $libs + if test "$pass" = link; then + if test "$linkmode" = "prog"; then + compile_deplibs="$new_inherited_linker_flags $compile_deplibs" + finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" + else + compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + fi + fi + dependency_libs="$newdependency_libs" + if test "$pass" = dlpreopen; then + # Link the dlpreopened libraries before other libraries + for deplib in $save_deplibs; do + deplibs="$deplib $deplibs" + done + fi + if test "$pass" != dlopen; then + if test "$pass" != conv; then + # Make sure lib_search_path contains only unique directories. + lib_search_path= + for dir in $newlib_search_path; do + case "$lib_search_path " in + *" $dir "*) ;; + *) func_append lib_search_path " $dir" ;; + esac + done + newlib_search_path= + fi + + if test "$linkmode,$pass" != "prog,link"; then + vars="deplibs" + else + vars="compile_deplibs finalize_deplibs" + fi + for var in $vars dependency_libs; do + # Add libraries to $var in reverse order + eval tmp_libs=\"\$$var\" + new_libs= + for deplib in $tmp_libs; do + # FIXME: Pedantically, this is the right thing to do, so + # that some nasty dependency loop isn't accidentally + # broken: + #new_libs="$deplib $new_libs" + # Pragmatically, this seems to cause very few problems in + # practice: + case $deplib in + -L*) new_libs="$deplib $new_libs" ;; + -R*) ;; + *) + # And here is the reason: when a library appears more + # than once as an explicit dependence of a library, or + # is implicitly linked in more than once by the + # compiler, it is considered special, and multiple + # occurrences thereof are not removed. Compare this + # with having the same library being listed as a + # dependency of multiple other libraries: in this case, + # we know (pedantically, we assume) the library does not + # need to be listed more than once, so we keep only the + # last copy. This is not always right, but it is rare + # enough that we require users that really mean to play + # such unportable linking tricks to link the library + # using -Wl,-lname, so that libtool does not consider it + # for duplicate removal. + case " $specialdeplibs " in + *" $deplib "*) new_libs="$deplib $new_libs" ;; + *) + case " $new_libs " in + *" $deplib "*) ;; + *) new_libs="$deplib $new_libs" ;; + esac + ;; + esac + ;; + esac + done + tmp_libs= + for deplib in $new_libs; do + case $deplib in + -L*) + case " $tmp_libs " in + *" $deplib "*) ;; + *) func_append tmp_libs " $deplib" ;; + esac + ;; + *) func_append tmp_libs " $deplib" ;; + esac + done + eval $var=\"$tmp_libs\" + done # for var + fi + # Last step: remove runtime libs from dependency_libs + # (they stay in deplibs) + tmp_libs= + for i in $dependency_libs ; do + case " $predeps $postdeps $compiler_lib_search_path " in + *" $i "*) + i="" + ;; + esac + if test -n "$i" ; then + func_append tmp_libs " $i" + fi + done + dependency_libs=$tmp_libs + done # for pass + if test "$linkmode" = prog; then + dlfiles="$newdlfiles" + fi + if test "$linkmode" = prog || test "$linkmode" = lib; then + dlprefiles="$newdlprefiles" + fi + + case $linkmode in + oldlib) + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + func_warning "\`-dlopen' is ignored for archives" + fi + + case " $deplibs" in + *\ -l* | *\ -L*) + func_warning "\`-l' and \`-L' are ignored for archives" ;; + esac + + test -n "$rpath" && \ + func_warning "\`-rpath' is ignored for archives" + + test -n "$xrpath" && \ + func_warning "\`-R' is ignored for archives" + + test -n "$vinfo" && \ + func_warning "\`-version-info/-version-number' is ignored for archives" + + test -n "$release" && \ + func_warning "\`-release' is ignored for archives" + + test -n "$export_symbols$export_symbols_regex" && \ + func_warning "\`-export-symbols' is ignored for archives" + + # Now set the variables for building old libraries. + build_libtool_libs=no + oldlibs="$output" + func_append objs "$old_deplibs" + ;; + + lib) + # Make sure we only generate libraries of the form `libNAME.la'. + case $outputname in + lib*) + func_stripname 'lib' '.la' "$outputname" + name=$func_stripname_result + eval shared_ext=\"$shrext_cmds\" + eval libname=\"$libname_spec\" + ;; + *) + test "$module" = no && \ + func_fatal_help "libtool library \`$output' must begin with \`lib'" + + if test "$need_lib_prefix" != no; then + # Add the "lib" prefix for modules if required + func_stripname '' '.la' "$outputname" + name=$func_stripname_result + eval shared_ext=\"$shrext_cmds\" + eval libname=\"$libname_spec\" + else + func_stripname '' '.la' "$outputname" + libname=$func_stripname_result + fi + ;; + esac + + if test -n "$objs"; then + if test "$deplibs_check_method" != pass_all; then + func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs" + else + echo + $ECHO "*** Warning: Linking the shared library $output against the non-libtool" + $ECHO "*** objects $objs is not portable!" + func_append libobjs " $objs" + fi + fi + + test "$dlself" != no && \ + func_warning "\`-dlopen self' is ignored for libtool libraries" + + set dummy $rpath + shift + test "$#" -gt 1 && \ + func_warning "ignoring multiple \`-rpath's for a libtool library" + + install_libdir="$1" + + oldlibs= + if test -z "$rpath"; then + if test "$build_libtool_libs" = yes; then + # Building a libtool convenience library. + # Some compilers have problems with a `.al' extension so + # convenience libraries should have the same extension an + # archive normally would. + oldlibs="$output_objdir/$libname.$libext $oldlibs" + build_libtool_libs=convenience + build_old_libs=yes + fi + + test -n "$vinfo" && \ + func_warning "\`-version-info/-version-number' is ignored for convenience libraries" + + test -n "$release" && \ + func_warning "\`-release' is ignored for convenience libraries" + else + + # Parse the version information argument. + save_ifs="$IFS"; IFS=':' + set dummy $vinfo 0 0 0 + shift + IFS="$save_ifs" + + test -n "$7" && \ + func_fatal_help "too many parameters to \`-version-info'" + + # convert absolute version numbers to libtool ages + # this retains compatibility with .la files and attempts + # to make the code below a bit more comprehensible + + case $vinfo_number in + yes) + number_major="$1" + number_minor="$2" + number_revision="$3" + # + # There are really only two kinds -- those that + # use the current revision as the major version + # and those that subtract age and use age as + # a minor version. But, then there is irix + # which has an extra 1 added just for fun + # + case $version_type in + # correct linux to gnu/linux during the next big refactor + darwin|linux|osf|windows|none) + func_arith $number_major + $number_minor + current=$func_arith_result + age="$number_minor" + revision="$number_revision" + ;; + freebsd-aout|freebsd-elf|qnx|sunos) + current="$number_major" + revision="$number_minor" + age="0" + ;; + irix|nonstopux) + func_arith $number_major + $number_minor + current=$func_arith_result + age="$number_minor" + revision="$number_minor" + lt_irix_increment=no + ;; + esac + ;; + no) + current="$1" + revision="$2" + age="$3" + ;; + esac + + # Check that each of the things are valid numbers. + case $current in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + func_error "CURRENT \`$current' must be a nonnegative integer" + func_fatal_error "\`$vinfo' is not valid version information" + ;; + esac + + case $revision in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + func_error "REVISION \`$revision' must be a nonnegative integer" + func_fatal_error "\`$vinfo' is not valid version information" + ;; + esac + + case $age in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + func_error "AGE \`$age' must be a nonnegative integer" + func_fatal_error "\`$vinfo' is not valid version information" + ;; + esac + + if test "$age" -gt "$current"; then + func_error "AGE \`$age' is greater than the current interface number \`$current'" + func_fatal_error "\`$vinfo' is not valid version information" + fi + + # Calculate the version variables. + major= + versuffix= + verstring= + case $version_type in + none) ;; + + darwin) + # Like Linux, but with the current version available in + # verstring for coding it into the library header + func_arith $current - $age + major=.$func_arith_result + versuffix="$major.$age.$revision" + # Darwin ld doesn't like 0 for these options... + func_arith $current + 1 + minor_current=$func_arith_result + xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" + verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" + ;; + + freebsd-aout) + major=".$current" + versuffix=".$current.$revision"; + ;; + + freebsd-elf) + major=".$current" + versuffix=".$current" + ;; + + irix | nonstopux) + if test "X$lt_irix_increment" = "Xno"; then + func_arith $current - $age + else + func_arith $current - $age + 1 + fi + major=$func_arith_result + + case $version_type in + nonstopux) verstring_prefix=nonstopux ;; + *) verstring_prefix=sgi ;; + esac + verstring="$verstring_prefix$major.$revision" + + # Add in all the interfaces that we are compatible with. + loop=$revision + while test "$loop" -ne 0; do + func_arith $revision - $loop + iface=$func_arith_result + func_arith $loop - 1 + loop=$func_arith_result + verstring="$verstring_prefix$major.$iface:$verstring" + done + + # Before this point, $major must not contain `.'. + major=.$major + versuffix="$major.$revision" + ;; + + linux) # correct to gnu/linux during the next big refactor + func_arith $current - $age + major=.$func_arith_result + versuffix="$major.$age.$revision" + ;; + + osf) + func_arith $current - $age + major=.$func_arith_result + versuffix=".$current.$age.$revision" + verstring="$current.$age.$revision" + + # Add in all the interfaces that we are compatible with. + loop=$age + while test "$loop" -ne 0; do + func_arith $current - $loop + iface=$func_arith_result + func_arith $loop - 1 + loop=$func_arith_result + verstring="$verstring:${iface}.0" + done + + # Make executables depend on our current version. + func_append verstring ":${current}.0" + ;; + + qnx) + major=".$current" + versuffix=".$current" + ;; + + sunos) + major=".$current" + versuffix=".$current.$revision" + ;; + + windows) + # Use '-' rather than '.', since we only want one + # extension on DOS 8.3 filesystems. + func_arith $current - $age + major=$func_arith_result + versuffix="-$major" + ;; + + *) + func_fatal_configuration "unknown library version type \`$version_type'" + ;; + esac + + # Clear the version info if we defaulted, and they specified a release. + if test -z "$vinfo" && test -n "$release"; then + major= + case $version_type in + darwin) + # we can't check for "0.0" in archive_cmds due to quoting + # problems, so we reset it completely + verstring= + ;; + *) + verstring="0.0" + ;; + esac + if test "$need_version" = no; then + versuffix= + else + versuffix=".0.0" + fi + fi + + # Remove version info from name if versioning should be avoided + if test "$avoid_version" = yes && test "$need_version" = no; then + major= + versuffix= + verstring="" + fi + + # Check to see if the archive will have undefined symbols. + if test "$allow_undefined" = yes; then + if test "$allow_undefined_flag" = unsupported; then + func_warning "undefined symbols not allowed in $host shared libraries" + build_libtool_libs=no + build_old_libs=yes + fi + else + # Don't allow undefined symbols. + allow_undefined_flag="$no_undefined_flag" + fi + + fi + + func_generate_dlsyms "$libname" "$libname" "yes" + func_append libobjs " $symfileobj" + test "X$libobjs" = "X " && libobjs= + + if test "$opt_mode" != relink; then + # Remove our outputs, but don't remove object files since they + # may have been created when compiling PIC objects. + removelist= + tempremovelist=`$ECHO "$output_objdir/*"` + for p in $tempremovelist; do + case $p in + *.$objext | *.gcno) + ;; + $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) + if test "X$precious_files_regex" != "X"; then + if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 + then + continue + fi + fi + func_append removelist " $p" + ;; + *) ;; + esac + done + test -n "$removelist" && \ + func_show_eval "${RM}r \$removelist" + fi + + # Now set the variables for building old libraries. + if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then + func_append oldlibs " $output_objdir/$libname.$libext" + + # Transform .lo files to .o files. + oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; $lo2o" | $NL2SP` + fi + + # Eliminate all temporary directories. + #for path in $notinst_path; do + # lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"` + # deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"` + # dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"` + #done + + if test -n "$xrpath"; then + # If the user specified any rpath flags, then add them. + temp_xrpath= + for libdir in $xrpath; do + func_replace_sysroot "$libdir" + func_append temp_xrpath " -R$func_replace_sysroot_result" + case "$finalize_rpath " in + *" $libdir "*) ;; + *) func_append finalize_rpath " $libdir" ;; + esac + done + if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then + dependency_libs="$temp_xrpath $dependency_libs" + fi + fi + + # Make sure dlfiles contains only unique files that won't be dlpreopened + old_dlfiles="$dlfiles" + dlfiles= + for lib in $old_dlfiles; do + case " $dlprefiles $dlfiles " in + *" $lib "*) ;; + *) func_append dlfiles " $lib" ;; + esac + done + + # Make sure dlprefiles contains only unique files + old_dlprefiles="$dlprefiles" + dlprefiles= + for lib in $old_dlprefiles; do + case "$dlprefiles " in + *" $lib "*) ;; + *) func_append dlprefiles " $lib" ;; + esac + done + + if test "$build_libtool_libs" = yes; then + if test -n "$rpath"; then + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*) + # these systems don't actually have a c library (as such)! + ;; + *-*-rhapsody* | *-*-darwin1.[012]) + # Rhapsody C library is in the System framework + func_append deplibs " System.ltframework" + ;; + *-*-netbsd*) + # Don't link with libc until the a.out ld.so is fixed. + ;; + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) + # Do not include libc due to us having libc/libc_r. + ;; + *-*-sco3.2v5* | *-*-sco5v6*) + # Causes problems with __ctype + ;; + *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) + # Compiler inserts libc in the correct place for threads to work + ;; + *) + # Add libc to deplibs on all other systems if necessary. + if test "$build_libtool_need_lc" = "yes"; then + func_append deplibs " -lc" + fi + ;; + esac + fi + + # Transform deplibs into only deplibs that can be linked in shared. + name_save=$name + libname_save=$libname + release_save=$release + versuffix_save=$versuffix + major_save=$major + # I'm not sure if I'm treating the release correctly. I think + # release should show up in the -l (ie -lgmp5) so we don't want to + # add it in twice. Is that correct? + release="" + versuffix="" + major="" + newdeplibs= + droppeddeps=no + case $deplibs_check_method in + pass_all) + # Don't check for shared/static. Everything works. + # This might be a little naive. We might want to check + # whether the library exists or not. But this is on + # osf3 & osf4 and I'm not really sure... Just + # implementing what was already the behavior. + newdeplibs=$deplibs + ;; + test_compile) + # This code stresses the "libraries are programs" paradigm to its + # limits. Maybe even breaks it. We compile a program, linking it + # against the deplibs as a proxy for the library. Then we can check + # whether they linked in statically or dynamically with ldd. + $opt_dry_run || $RM conftest.c + cat > conftest.c </dev/null` + $nocaseglob + else + potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null` + fi + for potent_lib in $potential_libs; do + # Follow soft links. + if ls -lLd "$potent_lib" 2>/dev/null | + $GREP " -> " >/dev/null; then + continue + fi + # The statement above tries to avoid entering an + # endless loop below, in case of cyclic links. + # We might still enter an endless loop, since a link + # loop can be closed while we follow links, + # but so what? + potlib="$potent_lib" + while test -h "$potlib" 2>/dev/null; do + potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` + case $potliblink in + [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; + *) potlib=`$ECHO "$potlib" | $SED 's,[^/]*$,,'`"$potliblink";; + esac + done + if eval $file_magic_cmd \"\$potlib\" 2>/dev/null | + $SED -e 10q | + $EGREP "$file_magic_regex" > /dev/null; then + func_append newdeplibs " $a_deplib" + a_deplib="" + break 2 + fi + done + done + fi + if test -n "$a_deplib" ; then + droppeddeps=yes + echo + $ECHO "*** Warning: linker path does not have real file for library $a_deplib." + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which you do not appear to have" + echo "*** because I did check the linker path looking for a file starting" + if test -z "$potlib" ; then + $ECHO "*** with $libname but no candidates were found. (...for file magic test)" + else + $ECHO "*** with $libname and none of the candidates passed a file format test" + $ECHO "*** using a file magic. Last file checked: $potlib" + fi + fi + ;; + *) + # Add a -L argument. + func_append newdeplibs " $a_deplib" + ;; + esac + done # Gone through all deplibs. + ;; + match_pattern*) + set dummy $deplibs_check_method; shift + match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` + for a_deplib in $deplibs; do + case $a_deplib in + -l*) + func_stripname -l '' "$a_deplib" + name=$func_stripname_result + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + case " $predeps $postdeps " in + *" $a_deplib "*) + func_append newdeplibs " $a_deplib" + a_deplib="" + ;; + esac + fi + if test -n "$a_deplib" ; then + libname=`eval "\\$ECHO \"$libname_spec\""` + for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do + potential_libs=`ls $i/$libname[.-]* 2>/dev/null` + for potent_lib in $potential_libs; do + potlib="$potent_lib" # see symlink-check above in file_magic test + if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \ + $EGREP "$match_pattern_regex" > /dev/null; then + func_append newdeplibs " $a_deplib" + a_deplib="" + break 2 + fi + done + done + fi + if test -n "$a_deplib" ; then + droppeddeps=yes + echo + $ECHO "*** Warning: linker path does not have real file for library $a_deplib." + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which you do not appear to have" + echo "*** because I did check the linker path looking for a file starting" + if test -z "$potlib" ; then + $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)" + else + $ECHO "*** with $libname and none of the candidates passed a file format test" + $ECHO "*** using a regex pattern. Last file checked: $potlib" + fi + fi + ;; + *) + # Add a -L argument. + func_append newdeplibs " $a_deplib" + ;; + esac + done # Gone through all deplibs. + ;; + none | unknown | *) + newdeplibs="" + tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'` + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + for i in $predeps $postdeps ; do + # can't use Xsed below, because $i might contain '/' + tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s,$i,,"` + done + fi + case $tmp_deplibs in + *[!\ \ ]*) + echo + if test "X$deplibs_check_method" = "Xnone"; then + echo "*** Warning: inter-library dependencies are not supported in this platform." + else + echo "*** Warning: inter-library dependencies are not known to be supported." + fi + echo "*** All declared inter-library dependencies are being dropped." + droppeddeps=yes + ;; + esac + ;; + esac + versuffix=$versuffix_save + major=$major_save + release=$release_save + libname=$libname_save + name=$name_save + + case $host in + *-*-rhapsody* | *-*-darwin1.[012]) + # On Rhapsody replace the C library with the System framework + newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'` + ;; + esac + + if test "$droppeddeps" = yes; then + if test "$module" = yes; then + echo + echo "*** Warning: libtool could not satisfy all declared inter-library" + $ECHO "*** dependencies of module $libname. Therefore, libtool will create" + echo "*** a static module, that should work as long as the dlopening" + echo "*** application is linked with the -dlopen flag." + if test -z "$global_symbol_pipe"; then + echo + echo "*** However, this would only work if libtool was able to extract symbol" + echo "*** lists from a program, using \`nm' or equivalent, but libtool could" + echo "*** not find such a program. So, this module is probably useless." + echo "*** \`nm' from GNU binutils and a full rebuild may help." + fi + if test "$build_old_libs" = no; then + oldlibs="$output_objdir/$libname.$libext" + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + else + echo "*** The inter-library dependencies that have been dropped here will be" + echo "*** automatically added whenever a program is linked with this library" + echo "*** or is declared to -dlopen it." + + if test "$allow_undefined" = no; then + echo + echo "*** Since this library must not contain undefined symbols," + echo "*** because either the platform does not support them or" + echo "*** it was explicitly requested with -no-undefined," + echo "*** libtool will only create a static version of it." + if test "$build_old_libs" = no; then + oldlibs="$output_objdir/$libname.$libext" + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + fi + fi + fi + # Done checking deplibs! + deplibs=$newdeplibs + fi + # Time to change all our "foo.ltframework" stuff back to "-framework foo" + case $host in + *-*-darwin*) + newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + ;; + esac + + # move library search paths that coincide with paths to not yet + # installed libraries to the beginning of the library search list + new_libs= + for path in $notinst_path; do + case " $new_libs " in + *" -L$path/$objdir "*) ;; + *) + case " $deplibs " in + *" -L$path/$objdir "*) + func_append new_libs " -L$path/$objdir" ;; + esac + ;; + esac + done + for deplib in $deplibs; do + case $deplib in + -L*) + case " $new_libs " in + *" $deplib "*) ;; + *) func_append new_libs " $deplib" ;; + esac + ;; + *) func_append new_libs " $deplib" ;; + esac + done + deplibs="$new_libs" + + # All the library-specific variables (install_libdir is set above). + library_names= + old_library= + dlname= + + # Test again, we may have decided not to build it any more + if test "$build_libtool_libs" = yes; then + # Remove ${wl} instances when linking with ld. + # FIXME: should test the right _cmds variable. + case $archive_cmds in + *\$LD\ *) wl= ;; + esac + if test "$hardcode_into_libs" = yes; then + # Hardcode the library paths + hardcode_libdirs= + dep_rpath= + rpath="$finalize_rpath" + test "$opt_mode" != relink && rpath="$compile_rpath$rpath" + for libdir in $rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + func_replace_sysroot "$libdir" + libdir=$func_replace_sysroot_result + if test -z "$hardcode_libdirs"; then + hardcode_libdirs="$libdir" + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + func_append dep_rpath " $flag" + fi + elif test -n "$runpath_var"; then + case "$perm_rpath " in + *" $libdir "*) ;; + *) func_append perm_rpath " $libdir" ;; + esac + fi + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir="$hardcode_libdirs" + eval "dep_rpath=\"$hardcode_libdir_flag_spec\"" + fi + if test -n "$runpath_var" && test -n "$perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $perm_rpath; do + func_append rpath "$dir:" + done + eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" + fi + test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" + fi + + shlibpath="$finalize_shlibpath" + test "$opt_mode" != relink && shlibpath="$compile_shlibpath$shlibpath" + if test -n "$shlibpath"; then + eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" + fi + + # Get the real and link names of the library. + eval shared_ext=\"$shrext_cmds\" + eval library_names=\"$library_names_spec\" + set dummy $library_names + shift + realname="$1" + shift + + if test -n "$soname_spec"; then + eval soname=\"$soname_spec\" + else + soname="$realname" + fi + if test -z "$dlname"; then + dlname=$soname + fi + + lib="$output_objdir/$realname" + linknames= + for link + do + func_append linknames " $link" + done + + # Use standard objects if they are pic + test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP` + test "X$libobjs" = "X " && libobjs= + + delfiles= + if test -n "$export_symbols" && test -n "$include_expsyms"; then + $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp" + export_symbols="$output_objdir/$libname.uexp" + func_append delfiles " $export_symbols" + fi + + orig_export_symbols= + case $host_os in + cygwin* | mingw* | cegcc*) + if test -n "$export_symbols" && test -z "$export_symbols_regex"; then + # exporting using user supplied symfile + if test "x`$SED 1q $export_symbols`" != xEXPORTS; then + # and it's NOT already a .def file. Must figure out + # which of the given symbols are data symbols and tag + # them as such. So, trigger use of export_symbols_cmds. + # export_symbols gets reassigned inside the "prepare + # the list of exported symbols" if statement, so the + # include_expsyms logic still works. + orig_export_symbols="$export_symbols" + export_symbols= + always_export_symbols=yes + fi + fi + ;; + esac + + # Prepare the list of exported symbols + if test -z "$export_symbols"; then + if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then + func_verbose "generating symbol list for \`$libname.la'" + export_symbols="$output_objdir/$libname.exp" + $opt_dry_run || $RM $export_symbols + cmds=$export_symbols_cmds + save_ifs="$IFS"; IFS='~' + for cmd1 in $cmds; do + IFS="$save_ifs" + # Take the normal branch if the nm_file_list_spec branch + # doesn't work or if tool conversion is not needed. + case $nm_file_list_spec~$to_tool_file_cmd in + *~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*) + try_normal_branch=yes + eval cmd=\"$cmd1\" + func_len " $cmd" + len=$func_len_result + ;; + *) + try_normal_branch=no + ;; + esac + if test "$try_normal_branch" = yes \ + && { test "$len" -lt "$max_cmd_len" \ + || test "$max_cmd_len" -le -1; } + then + func_show_eval "$cmd" 'exit $?' + skipped_export=false + elif test -n "$nm_file_list_spec"; then + func_basename "$output" + output_la=$func_basename_result + save_libobjs=$libobjs + save_output=$output + output=${output_objdir}/${output_la}.nm + func_to_tool_file "$output" + libobjs=$nm_file_list_spec$func_to_tool_file_result + func_append delfiles " $output" + func_verbose "creating $NM input file list: $output" + for obj in $save_libobjs; do + func_to_tool_file "$obj" + $ECHO "$func_to_tool_file_result" + done > "$output" + eval cmd=\"$cmd1\" + func_show_eval "$cmd" 'exit $?' + output=$save_output + libobjs=$save_libobjs + skipped_export=false + else + # The command line is too long to execute in one step. + func_verbose "using reloadable object file for export list..." + skipped_export=: + # Break out early, otherwise skipped_export may be + # set to false by a later but shorter cmd. + break + fi + done + IFS="$save_ifs" + if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then + func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' + func_show_eval '$MV "${export_symbols}T" "$export_symbols"' + fi + fi + fi + + if test -n "$export_symbols" && test -n "$include_expsyms"; then + tmp_export_symbols="$export_symbols" + test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" + $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' + fi + + if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then + # The given exports_symbols file has to be filtered, so filter it. + func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" + # FIXME: $output_objdir/$libname.filter potentially contains lots of + # 's' commands which not all seds can handle. GNU sed should be fine + # though. Also, the filter scales superlinearly with the number of + # global variables. join(1) would be nice here, but unfortunately + # isn't a blessed tool. + $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter + func_append delfiles " $export_symbols $output_objdir/$libname.filter" + export_symbols=$output_objdir/$libname.def + $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols + fi + + tmp_deplibs= + for test_deplib in $deplibs; do + case " $convenience " in + *" $test_deplib "*) ;; + *) + func_append tmp_deplibs " $test_deplib" + ;; + esac + done + deplibs="$tmp_deplibs" + + if test -n "$convenience"; then + if test -n "$whole_archive_flag_spec" && + test "$compiler_needs_object" = yes && + test -z "$libobjs"; then + # extract the archives, so we have objects to list. + # TODO: could optimize this to just extract one archive. + whole_archive_flag_spec= + fi + if test -n "$whole_archive_flag_spec"; then + save_libobjs=$libobjs + eval libobjs=\"\$libobjs $whole_archive_flag_spec\" + test "X$libobjs" = "X " && libobjs= + else + gentop="$output_objdir/${outputname}x" + func_append generated " $gentop" + + func_extract_archives $gentop $convenience + func_append libobjs " $func_extract_archives_result" + test "X$libobjs" = "X " && libobjs= + fi + fi + + if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then + eval flag=\"$thread_safe_flag_spec\" + func_append linker_flags " $flag" + fi + + # Make a backup of the uninstalled library when relinking + if test "$opt_mode" = relink; then + $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $? + fi + + # Do each of the archive commands. + if test "$module" = yes && test -n "$module_cmds" ; then + if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then + eval test_cmds=\"$module_expsym_cmds\" + cmds=$module_expsym_cmds + else + eval test_cmds=\"$module_cmds\" + cmds=$module_cmds + fi + else + if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then + eval test_cmds=\"$archive_expsym_cmds\" + cmds=$archive_expsym_cmds + else + eval test_cmds=\"$archive_cmds\" + cmds=$archive_cmds + fi + fi + + if test "X$skipped_export" != "X:" && + func_len " $test_cmds" && + len=$func_len_result && + test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then + : + else + # The command line is too long to link in one step, link piecewise + # or, if using GNU ld and skipped_export is not :, use a linker + # script. + + # Save the value of $output and $libobjs because we want to + # use them later. If we have whole_archive_flag_spec, we + # want to use save_libobjs as it was before + # whole_archive_flag_spec was expanded, because we can't + # assume the linker understands whole_archive_flag_spec. + # This may have to be revisited, in case too many + # convenience libraries get linked in and end up exceeding + # the spec. + if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then + save_libobjs=$libobjs + fi + save_output=$output + func_basename "$output" + output_la=$func_basename_result + + # Clear the reloadable object creation command queue and + # initialize k to one. + test_cmds= + concat_cmds= + objlist= + last_robj= + k=1 + + if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then + output=${output_objdir}/${output_la}.lnkscript + func_verbose "creating GNU ld script: $output" + echo 'INPUT (' > $output + for obj in $save_libobjs + do + func_to_tool_file "$obj" + $ECHO "$func_to_tool_file_result" >> $output + done + echo ')' >> $output + func_append delfiles " $output" + func_to_tool_file "$output" + output=$func_to_tool_file_result + elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then + output=${output_objdir}/${output_la}.lnk + func_verbose "creating linker input file list: $output" + : > $output + set x $save_libobjs + shift + firstobj= + if test "$compiler_needs_object" = yes; then + firstobj="$1 " + shift + fi + for obj + do + func_to_tool_file "$obj" + $ECHO "$func_to_tool_file_result" >> $output + done + func_append delfiles " $output" + func_to_tool_file "$output" + output=$firstobj\"$file_list_spec$func_to_tool_file_result\" + else + if test -n "$save_libobjs"; then + func_verbose "creating reloadable object files..." + output=$output_objdir/$output_la-${k}.$objext + eval test_cmds=\"$reload_cmds\" + func_len " $test_cmds" + len0=$func_len_result + len=$len0 + + # Loop over the list of objects to be linked. + for obj in $save_libobjs + do + func_len " $obj" + func_arith $len + $func_len_result + len=$func_arith_result + if test "X$objlist" = X || + test "$len" -lt "$max_cmd_len"; then + func_append objlist " $obj" + else + # The command $test_cmds is almost too long, add a + # command to the queue. + if test "$k" -eq 1 ; then + # The first file doesn't have a previous command to add. + reload_objs=$objlist + eval concat_cmds=\"$reload_cmds\" + else + # All subsequent reloadable object files will link in + # the last one created. + reload_objs="$objlist $last_robj" + eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\" + fi + last_robj=$output_objdir/$output_la-${k}.$objext + func_arith $k + 1 + k=$func_arith_result + output=$output_objdir/$output_la-${k}.$objext + objlist=" $obj" + func_len " $last_robj" + func_arith $len0 + $func_len_result + len=$func_arith_result + fi + done + # Handle the remaining objects by creating one last + # reloadable object file. All subsequent reloadable object + # files will link in the last one created. + test -z "$concat_cmds" || concat_cmds=$concat_cmds~ + reload_objs="$objlist $last_robj" + eval concat_cmds=\"\${concat_cmds}$reload_cmds\" + if test -n "$last_robj"; then + eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\" + fi + func_append delfiles " $output" + + else + output= + fi + + if ${skipped_export-false}; then + func_verbose "generating symbol list for \`$libname.la'" + export_symbols="$output_objdir/$libname.exp" + $opt_dry_run || $RM $export_symbols + libobjs=$output + # Append the command to create the export file. + test -z "$concat_cmds" || concat_cmds=$concat_cmds~ + eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\" + if test -n "$last_robj"; then + eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" + fi + fi + + test -n "$save_libobjs" && + func_verbose "creating a temporary reloadable object file: $output" + + # Loop through the commands generated above and execute them. + save_ifs="$IFS"; IFS='~' + for cmd in $concat_cmds; do + IFS="$save_ifs" + $opt_silent || { + func_quote_for_expand "$cmd" + eval "func_echo $func_quote_for_expand_result" + } + $opt_dry_run || eval "$cmd" || { + lt_exit=$? + + # Restore the uninstalled library and exit + if test "$opt_mode" = relink; then + ( cd "$output_objdir" && \ + $RM "${realname}T" && \ + $MV "${realname}U" "$realname" ) + fi + + exit $lt_exit + } + done + IFS="$save_ifs" + + if test -n "$export_symbols_regex" && ${skipped_export-false}; then + func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' + func_show_eval '$MV "${export_symbols}T" "$export_symbols"' + fi + fi + + if ${skipped_export-false}; then + if test -n "$export_symbols" && test -n "$include_expsyms"; then + tmp_export_symbols="$export_symbols" + test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" + $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' + fi + + if test -n "$orig_export_symbols"; then + # The given exports_symbols file has to be filtered, so filter it. + func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" + # FIXME: $output_objdir/$libname.filter potentially contains lots of + # 's' commands which not all seds can handle. GNU sed should be fine + # though. Also, the filter scales superlinearly with the number of + # global variables. join(1) would be nice here, but unfortunately + # isn't a blessed tool. + $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter + func_append delfiles " $export_symbols $output_objdir/$libname.filter" + export_symbols=$output_objdir/$libname.def + $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols + fi + fi + + libobjs=$output + # Restore the value of output. + output=$save_output + + if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then + eval libobjs=\"\$libobjs $whole_archive_flag_spec\" + test "X$libobjs" = "X " && libobjs= + fi + # Expand the library linking commands again to reset the + # value of $libobjs for piecewise linking. + + # Do each of the archive commands. + if test "$module" = yes && test -n "$module_cmds" ; then + if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then + cmds=$module_expsym_cmds + else + cmds=$module_cmds + fi + else + if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then + cmds=$archive_expsym_cmds + else + cmds=$archive_cmds + fi + fi + fi + + if test -n "$delfiles"; then + # Append the command to remove temporary files to $cmds. + eval cmds=\"\$cmds~\$RM $delfiles\" + fi + + # Add any objects from preloaded convenience libraries + if test -n "$dlprefiles"; then + gentop="$output_objdir/${outputname}x" + func_append generated " $gentop" + + func_extract_archives $gentop $dlprefiles + func_append libobjs " $func_extract_archives_result" + test "X$libobjs" = "X " && libobjs= + fi + + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $opt_silent || { + func_quote_for_expand "$cmd" + eval "func_echo $func_quote_for_expand_result" + } + $opt_dry_run || eval "$cmd" || { + lt_exit=$? + + # Restore the uninstalled library and exit + if test "$opt_mode" = relink; then + ( cd "$output_objdir" && \ + $RM "${realname}T" && \ + $MV "${realname}U" "$realname" ) + fi + + exit $lt_exit + } + done + IFS="$save_ifs" + + # Restore the uninstalled library and exit + if test "$opt_mode" = relink; then + $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $? + + if test -n "$convenience"; then + if test -z "$whole_archive_flag_spec"; then + func_show_eval '${RM}r "$gentop"' + fi + fi + + exit $EXIT_SUCCESS + fi + + # Create links to the real library. + for linkname in $linknames; do + if test "$realname" != "$linkname"; then + func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?' + fi + done + + # If -module or -export-dynamic was specified, set the dlname. + if test "$module" = yes || test "$export_dynamic" = yes; then + # On all known operating systems, these are identical. + dlname="$soname" + fi + fi + ;; + + obj) + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + func_warning "\`-dlopen' is ignored for objects" + fi + + case " $deplibs" in + *\ -l* | *\ -L*) + func_warning "\`-l' and \`-L' are ignored for objects" ;; + esac + + test -n "$rpath" && \ + func_warning "\`-rpath' is ignored for objects" + + test -n "$xrpath" && \ + func_warning "\`-R' is ignored for objects" + + test -n "$vinfo" && \ + func_warning "\`-version-info' is ignored for objects" + + test -n "$release" && \ + func_warning "\`-release' is ignored for objects" + + case $output in + *.lo) + test -n "$objs$old_deplibs" && \ + func_fatal_error "cannot build library object \`$output' from non-libtool objects" + + libobj=$output + func_lo2o "$libobj" + obj=$func_lo2o_result + ;; + *) + libobj= + obj="$output" + ;; + esac + + # Delete the old objects. + $opt_dry_run || $RM $obj $libobj + + # Objects from convenience libraries. This assumes + # single-version convenience libraries. Whenever we create + # different ones for PIC/non-PIC, this we'll have to duplicate + # the extraction. + reload_conv_objs= + gentop= + # reload_cmds runs $LD directly, so let us get rid of + # -Wl from whole_archive_flag_spec and hope we can get by with + # turning comma into space.. + wl= + + if test -n "$convenience"; then + if test -n "$whole_archive_flag_spec"; then + eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" + reload_conv_objs=$reload_objs\ `$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'` + else + gentop="$output_objdir/${obj}x" + func_append generated " $gentop" + + func_extract_archives $gentop $convenience + reload_conv_objs="$reload_objs $func_extract_archives_result" + fi + fi + + # If we're not building shared, we need to use non_pic_objs + test "$build_libtool_libs" != yes && libobjs="$non_pic_objects" + + # Create the old-style object. + reload_objs="$objs$old_deplibs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; /\.lib$/d; $lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test + + output="$obj" + func_execute_cmds "$reload_cmds" 'exit $?' + + # Exit if we aren't doing a library object file. + if test -z "$libobj"; then + if test -n "$gentop"; then + func_show_eval '${RM}r "$gentop"' + fi + + exit $EXIT_SUCCESS + fi + + if test "$build_libtool_libs" != yes; then + if test -n "$gentop"; then + func_show_eval '${RM}r "$gentop"' + fi + + # Create an invalid libtool object if no PIC, so that we don't + # accidentally link it into a program. + # $show "echo timestamp > $libobj" + # $opt_dry_run || eval "echo timestamp > $libobj" || exit $? + exit $EXIT_SUCCESS + fi + + if test -n "$pic_flag" || test "$pic_mode" != default; then + # Only do commands if we really have different PIC objects. + reload_objs="$libobjs $reload_conv_objs" + output="$libobj" + func_execute_cmds "$reload_cmds" 'exit $?' + fi + + if test -n "$gentop"; then + func_show_eval '${RM}r "$gentop"' + fi + + exit $EXIT_SUCCESS + ;; + + prog) + case $host in + *cygwin*) func_stripname '' '.exe' "$output" + output=$func_stripname_result.exe;; + esac + test -n "$vinfo" && \ + func_warning "\`-version-info' is ignored for programs" + + test -n "$release" && \ + func_warning "\`-release' is ignored for programs" + + test "$preload" = yes \ + && test "$dlopen_support" = unknown \ + && test "$dlopen_self" = unknown \ + && test "$dlopen_self_static" = unknown && \ + func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support." + + case $host in + *-*-rhapsody* | *-*-darwin1.[012]) + # On Rhapsody replace the C library is the System framework + compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'` + finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'` + ;; + esac + + case $host in + *-*-darwin*) + # Don't allow lazy linking, it breaks C++ global constructors + # But is supposedly fixed on 10.4 or later (yay!). + if test "$tagname" = CXX ; then + case ${MACOSX_DEPLOYMENT_TARGET-10.0} in + 10.[0123]) + func_append compile_command " ${wl}-bind_at_load" + func_append finalize_command " ${wl}-bind_at_load" + ;; + esac + fi + # Time to change all our "foo.ltframework" stuff back to "-framework foo" + compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + ;; + esac + + + # move library search paths that coincide with paths to not yet + # installed libraries to the beginning of the library search list + new_libs= + for path in $notinst_path; do + case " $new_libs " in + *" -L$path/$objdir "*) ;; + *) + case " $compile_deplibs " in + *" -L$path/$objdir "*) + func_append new_libs " -L$path/$objdir" ;; + esac + ;; + esac + done + for deplib in $compile_deplibs; do + case $deplib in + -L*) + case " $new_libs " in + *" $deplib "*) ;; + *) func_append new_libs " $deplib" ;; + esac + ;; + *) func_append new_libs " $deplib" ;; + esac + done + compile_deplibs="$new_libs" + + + func_append compile_command " $compile_deplibs" + func_append finalize_command " $finalize_deplibs" + + if test -n "$rpath$xrpath"; then + # If the user specified any rpath flags, then add them. + for libdir in $rpath $xrpath; do + # This is the magic to use -rpath. + case "$finalize_rpath " in + *" $libdir "*) ;; + *) func_append finalize_rpath " $libdir" ;; + esac + done + fi + + # Now hardcode the library paths + rpath= + hardcode_libdirs= + for libdir in $compile_rpath $finalize_rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + hardcode_libdirs="$libdir" + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + func_append rpath " $flag" + fi + elif test -n "$runpath_var"; then + case "$perm_rpath " in + *" $libdir "*) ;; + *) func_append perm_rpath " $libdir" ;; + esac + fi + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) + testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'` + case :$dllsearchpath: in + *":$libdir:"*) ;; + ::) dllsearchpath=$libdir;; + *) func_append dllsearchpath ":$libdir";; + esac + case :$dllsearchpath: in + *":$testbindir:"*) ;; + ::) dllsearchpath=$testbindir;; + *) func_append dllsearchpath ":$testbindir";; + esac + ;; + esac + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir="$hardcode_libdirs" + eval rpath=\" $hardcode_libdir_flag_spec\" + fi + compile_rpath="$rpath" + + rpath= + hardcode_libdirs= + for libdir in $finalize_rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + hardcode_libdirs="$libdir" + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + func_append rpath " $flag" + fi + elif test -n "$runpath_var"; then + case "$finalize_perm_rpath " in + *" $libdir "*) ;; + *) func_append finalize_perm_rpath " $libdir" ;; + esac + fi + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir="$hardcode_libdirs" + eval rpath=\" $hardcode_libdir_flag_spec\" + fi + finalize_rpath="$rpath" + + if test -n "$libobjs" && test "$build_old_libs" = yes; then + # Transform all the library objects into standard objects. + compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP` + finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP` + fi + + func_generate_dlsyms "$outputname" "@PROGRAM@" "no" + + # template prelinking step + if test -n "$prelink_cmds"; then + func_execute_cmds "$prelink_cmds" 'exit $?' + fi + + wrappers_required=yes + case $host in + *cegcc* | *mingw32ce*) + # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway. + wrappers_required=no + ;; + *cygwin* | *mingw* ) + if test "$build_libtool_libs" != yes; then + wrappers_required=no + fi + ;; + *) + if test "$need_relink" = no || test "$build_libtool_libs" != yes; then + wrappers_required=no + fi + ;; + esac + if test "$wrappers_required" = no; then + # Replace the output file specification. + compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'` + link_command="$compile_command$compile_rpath" + + # We have no uninstalled library dependencies, so finalize right now. + exit_status=0 + func_show_eval "$link_command" 'exit_status=$?' + + if test -n "$postlink_cmds"; then + func_to_tool_file "$output" + postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` + func_execute_cmds "$postlink_cmds" 'exit $?' + fi + + # Delete the generated files. + if test -f "$output_objdir/${outputname}S.${objext}"; then + func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"' + fi + + exit $exit_status + fi + + if test -n "$compile_shlibpath$finalize_shlibpath"; then + compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" + fi + if test -n "$finalize_shlibpath"; then + finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" + fi + + compile_var= + finalize_var= + if test -n "$runpath_var"; then + if test -n "$perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $perm_rpath; do + func_append rpath "$dir:" + done + compile_var="$runpath_var=\"$rpath\$$runpath_var\" " + fi + if test -n "$finalize_perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $finalize_perm_rpath; do + func_append rpath "$dir:" + done + finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " + fi + fi + + if test "$no_install" = yes; then + # We don't need to create a wrapper script. + link_command="$compile_var$compile_command$compile_rpath" + # Replace the output file specification. + link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'` + # Delete the old output file. + $opt_dry_run || $RM $output + # Link the executable and exit + func_show_eval "$link_command" 'exit $?' + + if test -n "$postlink_cmds"; then + func_to_tool_file "$output" + postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` + func_execute_cmds "$postlink_cmds" 'exit $?' + fi + + exit $EXIT_SUCCESS + fi + + if test "$hardcode_action" = relink; then + # Fast installation is not supported + link_command="$compile_var$compile_command$compile_rpath" + relink_command="$finalize_var$finalize_command$finalize_rpath" + + func_warning "this platform does not like uninstalled shared libraries" + func_warning "\`$output' will be relinked during installation" + else + if test "$fast_install" != no; then + link_command="$finalize_var$compile_command$finalize_rpath" + if test "$fast_install" = yes; then + relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'` + else + # fast_install is set to needless + relink_command= + fi + else + link_command="$compile_var$compile_command$compile_rpath" + relink_command="$finalize_var$finalize_command$finalize_rpath" + fi + fi + + # Replace the output file specification. + link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` + + # Delete the old output files. + $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname + + func_show_eval "$link_command" 'exit $?' + + if test -n "$postlink_cmds"; then + func_to_tool_file "$output_objdir/$outputname" + postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` + func_execute_cmds "$postlink_cmds" 'exit $?' + fi + + # Now create the wrapper script. + func_verbose "creating $output" + + # Quote the relink command for shipping. + if test -n "$relink_command"; then + # Preserve any variables that may affect compiler behavior + for var in $variables_saved_for_relink; do + if eval test -z \"\${$var+set}\"; then + relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" + elif eval var_value=\$$var; test -z "$var_value"; then + relink_command="$var=; export $var; $relink_command" + else + func_quote_for_eval "$var_value" + relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" + fi + done + relink_command="(cd `pwd`; $relink_command)" + relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` + fi + + # Only actually do things if not in dry run mode. + $opt_dry_run || { + # win32 will think the script is a binary if it has + # a .exe suffix, so we strip it off here. + case $output in + *.exe) func_stripname '' '.exe' "$output" + output=$func_stripname_result ;; + esac + # test for cygwin because mv fails w/o .exe extensions + case $host in + *cygwin*) + exeext=.exe + func_stripname '' '.exe' "$outputname" + outputname=$func_stripname_result ;; + *) exeext= ;; + esac + case $host in + *cygwin* | *mingw* ) + func_dirname_and_basename "$output" "" "." + output_name=$func_basename_result + output_path=$func_dirname_result + cwrappersource="$output_path/$objdir/lt-$output_name.c" + cwrapper="$output_path/$output_name.exe" + $RM $cwrappersource $cwrapper + trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 + + func_emit_cwrapperexe_src > $cwrappersource + + # The wrapper executable is built using the $host compiler, + # because it contains $host paths and files. If cross- + # compiling, it, like the target executable, must be + # executed on the $host or under an emulation environment. + $opt_dry_run || { + $LTCC $LTCFLAGS -o $cwrapper $cwrappersource + $STRIP $cwrapper + } + + # Now, create the wrapper script for func_source use: + func_ltwrapper_scriptname $cwrapper + $RM $func_ltwrapper_scriptname_result + trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15 + $opt_dry_run || { + # note: this script will not be executed, so do not chmod. + if test "x$build" = "x$host" ; then + $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result + else + func_emit_wrapper no > $func_ltwrapper_scriptname_result + fi + } + ;; + * ) + $RM $output + trap "$RM $output; exit $EXIT_FAILURE" 1 2 15 + + func_emit_wrapper no > $output + chmod +x $output + ;; + esac + } + exit $EXIT_SUCCESS + ;; + esac + + # See if we need to build an old-fashioned archive. + for oldlib in $oldlibs; do + + if test "$build_libtool_libs" = convenience; then + oldobjs="$libobjs_save $symfileobj" + addlibs="$convenience" + build_libtool_libs=no + else + if test "$build_libtool_libs" = module; then + oldobjs="$libobjs_save" + build_libtool_libs=no + else + oldobjs="$old_deplibs $non_pic_objects" + if test "$preload" = yes && test -f "$symfileobj"; then + func_append oldobjs " $symfileobj" + fi + fi + addlibs="$old_convenience" + fi + + if test -n "$addlibs"; then + gentop="$output_objdir/${outputname}x" + func_append generated " $gentop" + + func_extract_archives $gentop $addlibs + func_append oldobjs " $func_extract_archives_result" + fi + + # Do each command in the archive commands. + if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then + cmds=$old_archive_from_new_cmds + else + + # Add any objects from preloaded convenience libraries + if test -n "$dlprefiles"; then + gentop="$output_objdir/${outputname}x" + func_append generated " $gentop" + + func_extract_archives $gentop $dlprefiles + func_append oldobjs " $func_extract_archives_result" + fi + + # POSIX demands no paths to be encoded in archives. We have + # to avoid creating archives with duplicate basenames if we + # might have to extract them afterwards, e.g., when creating a + # static archive out of a convenience library, or when linking + # the entirety of a libtool archive into another (currently + # not supported by libtool). + if (for obj in $oldobjs + do + func_basename "$obj" + $ECHO "$func_basename_result" + done | sort | sort -uc >/dev/null 2>&1); then + : + else + echo "copying selected object files to avoid basename conflicts..." + gentop="$output_objdir/${outputname}x" + func_append generated " $gentop" + func_mkdir_p "$gentop" + save_oldobjs=$oldobjs + oldobjs= + counter=1 + for obj in $save_oldobjs + do + func_basename "$obj" + objbase="$func_basename_result" + case " $oldobjs " in + " ") oldobjs=$obj ;; + *[\ /]"$objbase "*) + while :; do + # Make sure we don't pick an alternate name that also + # overlaps. + newobj=lt$counter-$objbase + func_arith $counter + 1 + counter=$func_arith_result + case " $oldobjs " in + *[\ /]"$newobj "*) ;; + *) if test ! -f "$gentop/$newobj"; then break; fi ;; + esac + done + func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" + func_append oldobjs " $gentop/$newobj" + ;; + *) func_append oldobjs " $obj" ;; + esac + done + fi + func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 + tool_oldlib=$func_to_tool_file_result + eval cmds=\"$old_archive_cmds\" + + func_len " $cmds" + len=$func_len_result + if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then + cmds=$old_archive_cmds + elif test -n "$archiver_list_spec"; then + func_verbose "using command file archive linking..." + for obj in $oldobjs + do + func_to_tool_file "$obj" + $ECHO "$func_to_tool_file_result" + done > $output_objdir/$libname.libcmd + func_to_tool_file "$output_objdir/$libname.libcmd" + oldobjs=" $archiver_list_spec$func_to_tool_file_result" + cmds=$old_archive_cmds + else + # the command line is too long to link in one step, link in parts + func_verbose "using piecewise archive linking..." + save_RANLIB=$RANLIB + RANLIB=: + objlist= + concat_cmds= + save_oldobjs=$oldobjs + oldobjs= + # Is there a better way of finding the last object in the list? + for obj in $save_oldobjs + do + last_oldobj=$obj + done + eval test_cmds=\"$old_archive_cmds\" + func_len " $test_cmds" + len0=$func_len_result + len=$len0 + for obj in $save_oldobjs + do + func_len " $obj" + func_arith $len + $func_len_result + len=$func_arith_result + func_append objlist " $obj" + if test "$len" -lt "$max_cmd_len"; then + : + else + # the above command should be used before it gets too long + oldobjs=$objlist + if test "$obj" = "$last_oldobj" ; then + RANLIB=$save_RANLIB + fi + test -z "$concat_cmds" || concat_cmds=$concat_cmds~ + eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" + objlist= + len=$len0 + fi + done + RANLIB=$save_RANLIB + oldobjs=$objlist + if test "X$oldobjs" = "X" ; then + eval cmds=\"\$concat_cmds\" + else + eval cmds=\"\$concat_cmds~\$old_archive_cmds\" + fi + fi + fi + func_execute_cmds "$cmds" 'exit $?' + done + + test -n "$generated" && \ + func_show_eval "${RM}r$generated" + + # Now create the libtool archive. + case $output in + *.la) + old_library= + test "$build_old_libs" = yes && old_library="$libname.$libext" + func_verbose "creating $output" + + # Preserve any variables that may affect compiler behavior + for var in $variables_saved_for_relink; do + if eval test -z \"\${$var+set}\"; then + relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" + elif eval var_value=\$$var; test -z "$var_value"; then + relink_command="$var=; export $var; $relink_command" + else + func_quote_for_eval "$var_value" + relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" + fi + done + # Quote the link command for shipping. + relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" + relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` + if test "$hardcode_automatic" = yes ; then + relink_command= + fi + + # Only create the output if not a dry run. + $opt_dry_run || { + for installed in no yes; do + if test "$installed" = yes; then + if test -z "$install_libdir"; then + break + fi + output="$output_objdir/$outputname"i + # Replace all uninstalled libtool libraries with the installed ones + newdependency_libs= + for deplib in $dependency_libs; do + case $deplib in + *.la) + func_basename "$deplib" + name="$func_basename_result" + func_resolve_sysroot "$deplib" + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result` + test -z "$libdir" && \ + func_fatal_error "\`$deplib' is not a valid libtool archive" + func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name" + ;; + -L*) + func_stripname -L '' "$deplib" + func_replace_sysroot "$func_stripname_result" + func_append newdependency_libs " -L$func_replace_sysroot_result" + ;; + -R*) + func_stripname -R '' "$deplib" + func_replace_sysroot "$func_stripname_result" + func_append newdependency_libs " -R$func_replace_sysroot_result" + ;; + *) func_append newdependency_libs " $deplib" ;; + esac + done + dependency_libs="$newdependency_libs" + newdlfiles= + + for lib in $dlfiles; do + case $lib in + *.la) + func_basename "$lib" + name="$func_basename_result" + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` + test -z "$libdir" && \ + func_fatal_error "\`$lib' is not a valid libtool archive" + func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name" + ;; + *) func_append newdlfiles " $lib" ;; + esac + done + dlfiles="$newdlfiles" + newdlprefiles= + for lib in $dlprefiles; do + case $lib in + *.la) + # Only pass preopened files to the pseudo-archive (for + # eventual linking with the app. that links it) if we + # didn't already link the preopened objects directly into + # the library: + func_basename "$lib" + name="$func_basename_result" + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` + test -z "$libdir" && \ + func_fatal_error "\`$lib' is not a valid libtool archive" + func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name" + ;; + esac + done + dlprefiles="$newdlprefiles" + else + newdlfiles= + for lib in $dlfiles; do + case $lib in + [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; + *) abs=`pwd`"/$lib" ;; + esac + func_append newdlfiles " $abs" + done + dlfiles="$newdlfiles" + newdlprefiles= + for lib in $dlprefiles; do + case $lib in + [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; + *) abs=`pwd`"/$lib" ;; + esac + func_append newdlprefiles " $abs" + done + dlprefiles="$newdlprefiles" + fi + $RM $output + # place dlname in correct position for cygwin + # In fact, it would be nice if we could use this code for all target + # systems that can't hard-code library paths into their executables + # and that have no shared library path variable independent of PATH, + # but it turns out we can't easily determine that from inspecting + # libtool variables, so we have to hard-code the OSs to which it + # applies here; at the moment, that means platforms that use the PE + # object format with DLL files. See the long comment at the top of + # tests/bindir.at for full details. + tdlname=$dlname + case $host,$output,$installed,$module,$dlname in + *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) + # If a -bindir argument was supplied, place the dll there. + if test "x$bindir" != x ; + then + func_relative_path "$install_libdir" "$bindir" + tdlname=$func_relative_path_result$dlname + else + # Otherwise fall back on heuristic. + tdlname=../bin/$dlname + fi + ;; + esac + $ECHO > $output "\ +# $outputname - a libtool library file +# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='$tdlname' + +# Names of this library. +library_names='$library_names' + +# The name of the static archive. +old_library='$old_library' + +# Linker flags that can not go in dependency_libs. +inherited_linker_flags='$new_inherited_linker_flags' + +# Libraries that this one depends upon. +dependency_libs='$dependency_libs' + +# Names of additional weak libraries provided by this library +weak_library_names='$weak_libs' + +# Version information for $libname. +current=$current +age=$age +revision=$revision + +# Is this an already installed library? +installed=$installed + +# Should we warn about portability when linking against -modules? +shouldnotlink=$module + +# Files to dlopen/dlpreopen +dlopen='$dlfiles' +dlpreopen='$dlprefiles' + +# Directory that this library needs to be installed in: +libdir='$install_libdir'" + if test "$installed" = no && test "$need_relink" = yes; then + $ECHO >> $output "\ +relink_command=\"$relink_command\"" + fi + done + } + + # Do a symbolic link so that the libtool archive can be found in + # LD_LIBRARY_PATH before the program is installed. + func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?' + ;; + esac + exit $EXIT_SUCCESS +} + +{ test "$opt_mode" = link || test "$opt_mode" = relink; } && + func_mode_link ${1+"$@"} + + +# func_mode_uninstall arg... +func_mode_uninstall () +{ + $opt_debug + RM="$nonopt" + files= + rmforce= + exit_status=0 + + # This variable tells wrapper scripts just to set variables rather + # than running their programs. + libtool_install_magic="$magic" + + for arg + do + case $arg in + -f) func_append RM " $arg"; rmforce=yes ;; + -*) func_append RM " $arg" ;; + *) func_append files " $arg" ;; + esac + done + + test -z "$RM" && \ + func_fatal_help "you must specify an RM program" + + rmdirs= + + for file in $files; do + func_dirname "$file" "" "." + dir="$func_dirname_result" + if test "X$dir" = X.; then + odir="$objdir" + else + odir="$dir/$objdir" + fi + func_basename "$file" + name="$func_basename_result" + test "$opt_mode" = uninstall && odir="$dir" + + # Remember odir for removal later, being careful to avoid duplicates + if test "$opt_mode" = clean; then + case " $rmdirs " in + *" $odir "*) ;; + *) func_append rmdirs " $odir" ;; + esac + fi + + # Don't error if the file doesn't exist and rm -f was used. + if { test -L "$file"; } >/dev/null 2>&1 || + { test -h "$file"; } >/dev/null 2>&1 || + test -f "$file"; then + : + elif test -d "$file"; then + exit_status=1 + continue + elif test "$rmforce" = yes; then + continue + fi + + rmfiles="$file" + + case $name in + *.la) + # Possibly a libtool archive, so verify it. + if func_lalib_p "$file"; then + func_source $dir/$name + + # Delete the libtool libraries and symlinks. + for n in $library_names; do + func_append rmfiles " $odir/$n" + done + test -n "$old_library" && func_append rmfiles " $odir/$old_library" + + case "$opt_mode" in + clean) + case " $library_names " in + *" $dlname "*) ;; + *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;; + esac + test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i" + ;; + uninstall) + if test -n "$library_names"; then + # Do each command in the postuninstall commands. + func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' + fi + + if test -n "$old_library"; then + # Do each command in the old_postuninstall commands. + func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' + fi + # FIXME: should reinstall the best remaining shared library. + ;; + esac + fi + ;; + + *.lo) + # Possibly a libtool object, so verify it. + if func_lalib_p "$file"; then + + # Read the .lo file + func_source $dir/$name + + # Add PIC object to the list of files to remove. + if test -n "$pic_object" && + test "$pic_object" != none; then + func_append rmfiles " $dir/$pic_object" + fi + + # Add non-PIC object to the list of files to remove. + if test -n "$non_pic_object" && + test "$non_pic_object" != none; then + func_append rmfiles " $dir/$non_pic_object" + fi + fi + ;; + + *) + if test "$opt_mode" = clean ; then + noexename=$name + case $file in + *.exe) + func_stripname '' '.exe' "$file" + file=$func_stripname_result + func_stripname '' '.exe' "$name" + noexename=$func_stripname_result + # $file with .exe has already been added to rmfiles, + # add $file without .exe + func_append rmfiles " $file" + ;; + esac + # Do a test to see if this is a libtool program. + if func_ltwrapper_p "$file"; then + if func_ltwrapper_executable_p "$file"; then + func_ltwrapper_scriptname "$file" + relink_command= + func_source $func_ltwrapper_scriptname_result + func_append rmfiles " $func_ltwrapper_scriptname_result" + else + relink_command= + func_source $dir/$noexename + fi + + # note $name still contains .exe if it was in $file originally + # as does the version of $file that was added into $rmfiles + func_append rmfiles " $odir/$name $odir/${name}S.${objext}" + if test "$fast_install" = yes && test -n "$relink_command"; then + func_append rmfiles " $odir/lt-$name" + fi + if test "X$noexename" != "X$name" ; then + func_append rmfiles " $odir/lt-${noexename}.c" + fi + fi + fi + ;; + esac + func_show_eval "$RM $rmfiles" 'exit_status=1' + done + + # Try to remove the ${objdir}s in the directories where we deleted files + for dir in $rmdirs; do + if test -d "$dir"; then + func_show_eval "rmdir $dir >/dev/null 2>&1" + fi + done + + exit $exit_status +} + +{ test "$opt_mode" = uninstall || test "$opt_mode" = clean; } && + func_mode_uninstall ${1+"$@"} + +test -z "$opt_mode" && { + help="$generic_help" + func_fatal_help "you must specify a MODE" +} + +test -z "$exec_cmd" && \ + func_fatal_help "invalid operation mode \`$opt_mode'" + +if test -n "$exec_cmd"; then + eval exec "$exec_cmd" + exit $EXIT_FAILURE +fi + +exit $exit_status + + +# The TAGs below are defined such that we never get into a situation +# in which we disable both kinds of libraries. Given conflicting +# choices, we go for a static library, that is the most portable, +# since we can't tell whether shared libraries were disabled because +# the user asked for that or because the platform doesn't support +# them. This is particularly important on AIX, because we don't +# support having both static and shared libraries enabled at the same +# time on that platform, so we default to a shared-only configuration. +# If a disable-shared tag is given, we'll fallback to a static-only +# configuration. But we'll never go from static-only to shared-only. + +# ### BEGIN LIBTOOL TAG CONFIG: disable-shared +build_libtool_libs=no +build_old_libs=yes +# ### END LIBTOOL TAG CONFIG: disable-shared + +# ### BEGIN LIBTOOL TAG CONFIG: disable-static +build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` +# ### END LIBTOOL TAG CONFIG: disable-static + +# Local Variables: +# mode:shell-script +# sh-indentation:2 +# End: +# vi:sw=2 + diff --git a/gsl-2.5/matrix/.deps/copy.Plo b/gsl-2.5/matrix/.deps/copy.Plo new file mode 100644 index 00000000..446a6a24 --- /dev/null +++ b/gsl-2.5/matrix/.deps/copy.Plo @@ -0,0 +1,231 @@ +copy.lo: copy.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_matrix.h ../gsl/gsl_matrix_complex_long_double.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_types.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_vector_long_double.h \ + ../gsl/gsl_inline.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_vector_complex_double.h \ + ../gsl/gsl_vector_double.h ../gsl/gsl_block_double.h \ + ../gsl/gsl_block_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_vector_long.h \ + ../gsl/gsl_block_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_matrix_int.h \ + ../gsl/gsl_vector_int.h ../gsl/gsl_block_int.h \ + ../gsl/gsl_matrix_ushort.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_matrix_short.h \ + ../gsl/gsl_vector_short.h ../gsl/gsl_block_short.h \ + ../gsl/gsl_matrix_uchar.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_matrix_char.h \ + ../gsl/gsl_vector_char.h ../gsl/gsl_block_char.h ../templates_on.h \ + copy_source.c ../templates_off.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_types.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../templates_on.h: + +copy_source.c: + +../templates_off.h: diff --git a/gsl-2.5/matrix/.deps/file.Plo b/gsl-2.5/matrix/.deps/file.Plo new file mode 100644 index 00000000..02690bc6 --- /dev/null +++ b/gsl-2.5/matrix/.deps/file.Plo @@ -0,0 +1,233 @@ +file.lo: file.c /usr/include/stdc-predef.h ../config.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_types.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_complex.h \ + ../gsl/gsl_check_range.h ../gsl/gsl_vector_complex_long_double.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_inline.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_vector_complex.h \ + ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_vector_complex_double.h \ + ../gsl/gsl_vector_double.h ../gsl/gsl_block_double.h \ + ../gsl/gsl_block_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_vector_long.h \ + ../gsl/gsl_block_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_matrix_int.h \ + ../gsl/gsl_vector_int.h ../gsl/gsl_block_int.h \ + ../gsl/gsl_matrix_ushort.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_matrix_short.h \ + ../gsl/gsl_vector_short.h ../gsl/gsl_block_short.h \ + ../gsl/gsl_matrix_uchar.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_matrix_char.h \ + ../gsl/gsl_vector_char.h ../gsl/gsl_block_char.h ../gsl/gsl_vector.h \ + ../templates_on.h file_source.c ../templates_off.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_vector.h: + +../templates_on.h: + +file_source.c: + +../templates_off.h: diff --git a/gsl-2.5/matrix/.deps/getset.Plo b/gsl-2.5/matrix/.deps/getset.Plo new file mode 100644 index 00000000..324967bf --- /dev/null +++ b/gsl-2.5/matrix/.deps/getset.Plo @@ -0,0 +1,233 @@ +getset.lo: getset.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_errno.h /usr/include/stdio.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_types.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_complex.h \ + ../gsl/gsl_check_range.h ../gsl/gsl_vector_complex_long_double.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_inline.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_vector_complex.h \ + ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_vector_complex_double.h \ + ../gsl/gsl_vector_double.h ../gsl/gsl_block_double.h \ + ../gsl/gsl_block_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_vector_long.h \ + ../gsl/gsl_block_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_matrix_int.h \ + ../gsl/gsl_vector_int.h ../gsl/gsl_block_int.h \ + ../gsl/gsl_matrix_ushort.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_matrix_short.h \ + ../gsl/gsl_vector_short.h ../gsl/gsl_block_short.h \ + ../gsl/gsl_matrix_uchar.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_matrix_char.h \ + ../gsl/gsl_vector_char.h ../gsl/gsl_block_char.h ../gsl/gsl_vector.h \ + ../templates_on.h getset_source.c ../templates_off.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_vector.h: + +../templates_on.h: + +getset_source.c: + +../templates_off.h: diff --git a/gsl-2.5/matrix/.deps/init.Plo b/gsl-2.5/matrix/.deps/init.Plo new file mode 100644 index 00000000..09a5c4ff --- /dev/null +++ b/gsl-2.5/matrix/.deps/init.Plo @@ -0,0 +1,241 @@ +init.lo: init.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/string.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/xlocale.h /usr/include/bits/string.h \ + /usr/include/bits/string2.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/byteswap.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/bits/byteswap-16.h /usr/include/stdlib.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_types.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/sys/types.h \ + /usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib-float.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_vector_long_double.h \ + ../gsl/gsl_inline.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_vector_complex_double.h \ + ../gsl/gsl_vector_double.h ../gsl/gsl_block_double.h \ + ../gsl/gsl_block_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_vector_long.h \ + ../gsl/gsl_block_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_matrix_int.h \ + ../gsl/gsl_vector_int.h ../gsl/gsl_block_int.h \ + ../gsl/gsl_matrix_ushort.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_matrix_short.h \ + ../gsl/gsl_vector_short.h ../gsl/gsl_block_short.h \ + ../gsl/gsl_matrix_uchar.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_matrix_char.h \ + ../gsl/gsl_vector_char.h ../gsl/gsl_block_char.h ../templates_on.h \ + init_source.c ../templates_off.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/string.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string.h: + +/usr/include/bits/string2.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/stdlib.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../templates_on.h: + +init_source.c: + +../templates_off.h: diff --git a/gsl-2.5/matrix/.deps/matrix.Plo b/gsl-2.5/matrix/.deps/matrix.Plo new file mode 100644 index 00000000..7c5a8507 --- /dev/null +++ b/gsl-2.5/matrix/.deps/matrix.Plo @@ -0,0 +1,229 @@ +matrix.lo: matrix.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_errno.h /usr/include/stdio.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_types.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_complex.h \ + ../gsl/gsl_check_range.h ../gsl/gsl_vector_long_double.h \ + ../gsl/gsl_inline.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../build.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../build.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: diff --git a/gsl-2.5/matrix/.deps/minmax.Plo b/gsl-2.5/matrix/.deps/minmax.Plo new file mode 100644 index 00000000..1d9e47f4 --- /dev/null +++ b/gsl-2.5/matrix/.deps/minmax.Plo @@ -0,0 +1,292 @@ +minmax.lo: minmax.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_vector_long_double.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_vector_complex.h \ + ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_vector_complex_double.h \ + ../gsl/gsl_vector_double.h ../gsl/gsl_block_double.h \ + ../gsl/gsl_block_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_vector_long.h \ + ../gsl/gsl_block_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_matrix_int.h \ + ../gsl/gsl_vector_int.h ../gsl/gsl_block_int.h \ + ../gsl/gsl_matrix_ushort.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_matrix_short.h \ + ../gsl/gsl_vector_short.h ../gsl/gsl_block_short.h \ + ../gsl/gsl_matrix_uchar.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_matrix_char.h \ + ../gsl/gsl_vector_char.h ../gsl/gsl_block_char.h ../templates_on.h \ + minmax_source.c ../templates_off.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../templates_on.h: + +minmax_source.c: + +../templates_off.h: diff --git a/gsl-2.5/matrix/.deps/oper.Plo b/gsl-2.5/matrix/.deps/oper.Plo new file mode 100644 index 00000000..21888c5e --- /dev/null +++ b/gsl-2.5/matrix/.deps/oper.Plo @@ -0,0 +1,295 @@ +oper.lo: oper.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_math.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_vector_long_double.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_vector_complex.h \ + ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_vector_complex_double.h \ + ../gsl/gsl_vector_double.h ../gsl/gsl_block_double.h \ + ../gsl/gsl_block_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_vector_long.h \ + ../gsl/gsl_block_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_matrix_int.h \ + ../gsl/gsl_vector_int.h ../gsl/gsl_block_int.h \ + ../gsl/gsl_matrix_ushort.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_matrix_short.h \ + ../gsl/gsl_vector_short.h ../gsl/gsl_block_short.h \ + ../gsl/gsl_matrix_uchar.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_matrix_char.h \ + ../gsl/gsl_vector_char.h ../gsl/gsl_block_char.h ../templates_on.h \ + oper_complex_source.c ../templates_off.h oper_source.c + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../templates_on.h: + +oper_complex_source.c: + +../templates_off.h: + +oper_source.c: diff --git a/gsl-2.5/matrix/.deps/prop.Plo b/gsl-2.5/matrix/.deps/prop.Plo new file mode 100644 index 00000000..f0b74e52 --- /dev/null +++ b/gsl-2.5/matrix/.deps/prop.Plo @@ -0,0 +1,231 @@ +prop.lo: prop.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_matrix.h ../gsl/gsl_matrix_complex_long_double.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_types.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_vector_long_double.h \ + ../gsl/gsl_inline.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_vector_complex_double.h \ + ../gsl/gsl_vector_double.h ../gsl/gsl_block_double.h \ + ../gsl/gsl_block_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_vector_long.h \ + ../gsl/gsl_block_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_matrix_int.h \ + ../gsl/gsl_vector_int.h ../gsl/gsl_block_int.h \ + ../gsl/gsl_matrix_ushort.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_matrix_short.h \ + ../gsl/gsl_vector_short.h ../gsl/gsl_block_short.h \ + ../gsl/gsl_matrix_uchar.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_matrix_char.h \ + ../gsl/gsl_vector_char.h ../gsl/gsl_block_char.h ../templates_on.h \ + prop_source.c ../templates_off.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_types.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../templates_on.h: + +prop_source.c: + +../templates_off.h: diff --git a/gsl-2.5/matrix/.deps/rowcol.Plo b/gsl-2.5/matrix/.deps/rowcol.Plo new file mode 100644 index 00000000..2ccac02f --- /dev/null +++ b/gsl-2.5/matrix/.deps/rowcol.Plo @@ -0,0 +1,295 @@ +rowcol.lo: rowcol.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_math.h /usr/include/math.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h /usr/include/stdlib.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_errno.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_vector_long_double.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_vector_complex.h \ + ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_vector_complex_double.h \ + ../gsl/gsl_vector_double.h ../gsl/gsl_block_double.h \ + ../gsl/gsl_block_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_vector_long.h \ + ../gsl/gsl_block_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_matrix_int.h \ + ../gsl/gsl_vector_int.h ../gsl/gsl_block_int.h \ + ../gsl/gsl_matrix_ushort.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_matrix_short.h \ + ../gsl/gsl_vector_short.h ../gsl/gsl_block_short.h \ + ../gsl/gsl_matrix_uchar.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_matrix_char.h \ + ../gsl/gsl_vector_char.h ../gsl/gsl_block_char.h ../gsl/gsl_vector.h \ + view.h ../templates_on.h rowcol_source.c ../templates_off.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +/usr/include/stdlib.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_vector.h: + +view.h: + +../templates_on.h: + +rowcol_source.c: + +../templates_off.h: diff --git a/gsl-2.5/matrix/.deps/submatrix.Plo b/gsl-2.5/matrix/.deps/submatrix.Plo new file mode 100644 index 00000000..c5a03142 --- /dev/null +++ b/gsl-2.5/matrix/.deps/submatrix.Plo @@ -0,0 +1,295 @@ +submatrix.lo: submatrix.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_math.h /usr/include/math.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h /usr/include/stdlib.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_errno.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_vector_long_double.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_vector_complex.h \ + ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_vector_complex_double.h \ + ../gsl/gsl_vector_double.h ../gsl/gsl_block_double.h \ + ../gsl/gsl_block_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_vector_long.h \ + ../gsl/gsl_block_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_matrix_int.h \ + ../gsl/gsl_vector_int.h ../gsl/gsl_block_int.h \ + ../gsl/gsl_matrix_ushort.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_matrix_short.h \ + ../gsl/gsl_vector_short.h ../gsl/gsl_block_short.h \ + ../gsl/gsl_matrix_uchar.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_matrix_char.h \ + ../gsl/gsl_vector_char.h ../gsl/gsl_block_char.h ../gsl/gsl_vector.h \ + view.h ../templates_on.h submatrix_source.c ../templates_off.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +/usr/include/stdlib.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_vector.h: + +view.h: + +../templates_on.h: + +submatrix_source.c: + +../templates_off.h: diff --git a/gsl-2.5/matrix/.deps/swap.Plo b/gsl-2.5/matrix/.deps/swap.Plo new file mode 100644 index 00000000..17898e6e --- /dev/null +++ b/gsl-2.5/matrix/.deps/swap.Plo @@ -0,0 +1,233 @@ +swap.lo: swap.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_matrix.h ../gsl/gsl_matrix_complex_long_double.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_types.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_vector_long_double.h \ + ../gsl/gsl_inline.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_vector_complex_double.h \ + ../gsl/gsl_vector_double.h ../gsl/gsl_block_double.h \ + ../gsl/gsl_block_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_vector_long.h \ + ../gsl/gsl_block_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_matrix_int.h \ + ../gsl/gsl_vector_int.h ../gsl/gsl_block_int.h \ + ../gsl/gsl_matrix_ushort.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_matrix_short.h \ + ../gsl/gsl_vector_short.h ../gsl/gsl_block_short.h \ + ../gsl/gsl_matrix_uchar.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_matrix_char.h \ + ../gsl/gsl_vector_char.h ../gsl/gsl_block_char.h ../gsl/gsl_vector.h \ + ../templates_on.h swap_source.c ../templates_off.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_types.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_vector.h: + +../templates_on.h: + +swap_source.c: + +../templates_off.h: diff --git a/gsl-2.5/matrix/.deps/test.Po b/gsl-2.5/matrix/.deps/test.Po new file mode 100644 index 00000000..30d06ac7 --- /dev/null +++ b/gsl-2.5/matrix/.deps/test.Po @@ -0,0 +1,312 @@ +test.o: test.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/unistd.h \ + /usr/include/bits/posix_opt.h /usr/include/bits/environments.h \ + /usr/include/bits/confname.h /usr/include/getopt.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_math.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h ../gsl/gsl_errno.h \ + /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_vector_long_double.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_vector_complex.h \ + ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_vector_complex_double.h \ + ../gsl/gsl_vector_double.h ../gsl/gsl_block_double.h \ + ../gsl/gsl_block_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_vector_long.h \ + ../gsl/gsl_block_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_matrix_int.h \ + ../gsl/gsl_vector_int.h ../gsl/gsl_block_int.h \ + ../gsl/gsl_matrix_ushort.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_matrix_short.h \ + ../gsl/gsl_vector_short.h ../gsl/gsl_block_short.h \ + ../gsl/gsl_matrix_uchar.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_matrix_char.h \ + ../gsl/gsl_vector_char.h ../gsl/gsl_block_char.h ../gsl/gsl_test.h \ + ../gsl/gsl_ieee_utils.h ../templates_on.h test_complex_source.c \ + ../templates_off.h test_source.c + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/unistd.h: + +/usr/include/bits/posix_opt.h: + +/usr/include/bits/environments.h: + +/usr/include/bits/confname.h: + +/usr/include/getopt.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_test.h: + +../gsl/gsl_ieee_utils.h: + +../templates_on.h: + +test_complex_source.c: + +../templates_off.h: + +test_source.c: diff --git a/gsl-2.5/matrix/.deps/test_static.Po b/gsl-2.5/matrix/.deps/test_static.Po new file mode 100644 index 00000000..c82a5c49 --- /dev/null +++ b/gsl-2.5/matrix/.deps/test_static.Po @@ -0,0 +1,314 @@ +test_static.o: test_static.c /usr/include/stdc-predef.h test.c \ + ../config.h /usr/include/stdlib.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/unistd.h \ + /usr/include/bits/posix_opt.h /usr/include/bits/environments.h \ + /usr/include/bits/confname.h /usr/include/getopt.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_math.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h ../gsl/gsl_errno.h \ + /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_vector_long_double.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_vector_complex.h \ + ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_vector_complex_double.h \ + ../gsl/gsl_vector_double.h ../gsl/gsl_block_double.h \ + ../gsl/gsl_block_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_vector_long.h \ + ../gsl/gsl_block_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_matrix_int.h \ + ../gsl/gsl_vector_int.h ../gsl/gsl_block_int.h \ + ../gsl/gsl_matrix_ushort.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_matrix_short.h \ + ../gsl/gsl_vector_short.h ../gsl/gsl_block_short.h \ + ../gsl/gsl_matrix_uchar.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_matrix_char.h \ + ../gsl/gsl_vector_char.h ../gsl/gsl_block_char.h ../gsl/gsl_test.h \ + ../gsl/gsl_ieee_utils.h ../templates_on.h test_complex_source.c \ + ../templates_off.h test_source.c + +/usr/include/stdc-predef.h: + +test.c: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/unistd.h: + +/usr/include/bits/posix_opt.h: + +/usr/include/bits/environments.h: + +/usr/include/bits/confname.h: + +/usr/include/getopt.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_test.h: + +../gsl/gsl_ieee_utils.h: + +../templates_on.h: + +test_complex_source.c: + +../templates_off.h: + +test_source.c: diff --git a/gsl-2.5/matrix/.deps/view.Plo b/gsl-2.5/matrix/.deps/view.Plo new file mode 100644 index 00000000..471cba28 --- /dev/null +++ b/gsl-2.5/matrix/.deps/view.Plo @@ -0,0 +1,233 @@ +view.lo: view.c /usr/include/stdc-predef.h ../config.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_types.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_complex.h \ + ../gsl/gsl_check_range.h ../gsl/gsl_vector_complex_long_double.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_inline.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_vector_complex.h \ + ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_vector_complex_double.h \ + ../gsl/gsl_vector_double.h ../gsl/gsl_block_double.h \ + ../gsl/gsl_block_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_vector_long.h \ + ../gsl/gsl_block_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_matrix_int.h \ + ../gsl/gsl_vector_int.h ../gsl/gsl_block_int.h \ + ../gsl/gsl_matrix_ushort.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_matrix_short.h \ + ../gsl/gsl_vector_short.h ../gsl/gsl_block_short.h \ + ../gsl/gsl_matrix_uchar.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_matrix_char.h \ + ../gsl/gsl_vector_char.h ../gsl/gsl_block_char.h view.h \ + ../templates_on.h view_source.c ../templates_off.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +view.h: + +../templates_on.h: + +view_source.c: + +../templates_off.h: diff --git a/gsl-2.5/matrix/.libs/libgslmatrix.la b/gsl-2.5/matrix/.libs/libgslmatrix.la new file mode 120000 index 00000000..e2bde0b7 --- /dev/null +++ b/gsl-2.5/matrix/.libs/libgslmatrix.la @@ -0,0 +1 @@ +../libgslmatrix.la \ No newline at end of file diff --git a/gsl-2.5/matrix/ChangeLog b/gsl-2.5/matrix/ChangeLog new file mode 100644 index 00000000..9f70f76a --- /dev/null +++ b/gsl-2.5/matrix/ChangeLog @@ -0,0 +1,244 @@ +2017-01-07 Rhys Ulerich + + * init_source.c: permit zero-dimensioned matrices (#49988) + * submatrix_source.c: permit zero-dimensioned submatrices (#49988) + * view_source.c: permit zero-dimensioned views + * Audit for n-1 underflows when n = 0 + +2011-10-16 Rhys Ulerich + + * file_source.c: applied patch provided by Matthias Sitte + which repairs failing binary_noncontiguous + tests for complex-valued matrices + +2011-10-16 Rhys Ulerich + + * test_source.c: added binary_noncontiguous test template + * test_complex_source.c: added binary_noncontiguous test template + * test.c: now running binary_noncontiguous + +2010-04-07 Brian Gough + + * prop_source.c (FUNCTION): added a function to test if two + matrices are equal + +2009-07-09 Brian Gough + + * init_source.c (FUNCTION): handle NULL argument in free + +2008-07-03 Brian Gough + + * matrix.c: compile all the inline matrix functions from header + + * gsl_matrix.h and all related files: use new inline declarations + + * Makefile.am (INCLUDES): use top_srcdir, remove top_builddir + (noinst_HEADERS): remove matrix_source.c + +2007-08-21 Brian Gough + + * prop_source.c (FUNCTION): added gsl_matrix_isnonneg + +2007-02-17 Brian Gough + + * test_source.c (FUNCTION): avoid running negative value tests on + char, because it can be unsigned. + +2007-01-26 Brian Gough + + * minmax_source.c: added support for NaNs + +2006-10-31 Brian Gough + + * prop_source.c (FUNCTION): added functions gsl_matrix_ispos, + gsl_matrix_isneg + +2003-01-01 Brian Gough + + * gsl_matrix_complex_float.h (gsl_matrix_complex_float_get): + removed const from zero + + * matrix_source.c (FUNCTION): removed const from zero + +2002-11-24 Brian Gough + + * Makefile.am: added libgslsys.a to link, to provide gsl_hypot for + complex division + +Mon Jun 17 22:31:33 2002 Brian Gough + + * test_complex_source.c (FUNCTION): fixed non-constant initializer + +Wed May 1 21:33:44 2002 Brian Gough + + * gsl_matrix_complex_float.h (gsl_matrix_complex_float_get): moved + constant zero inside GSL_RANGE_CHECK_OFF + +Sun Mar 24 20:28:48 2002 Brian Gough + + * oper_complex_source.c: complex matrix operations (from Toby + White) + +Mon Feb 18 20:33:58 2002 Brian Gough + + * copy_source.c (gsl_matrix_swap): fixed prototype by removing + const from second arg. + +Sun Jan 27 22:29:37 2002 Brian Gough + + * test.c: ensure that range check is working when running the + tests + +Fri Sep 14 18:56:34 2001 Brian Gough + + * view_source.c: fixed cast for array type + + * view.c: added #includes for missing const qualified types + + * view_source.c: error for non-unit strides + +Fri Aug 3 14:11:23 2001 Brian Gough + + * added gsl_matrix_ptr and gsl_matrix_const_ptr functions + +Mon Jul 16 21:28:05 2001 Brian Gough + + * rowcol_source.c (FUNCTION): initialized view to NULL + +Fri Jul 13 21:29:27 2001 Brian Gough + + * changed views to be structs and used casts to initialize them + +Mon Jul 2 12:35:16 2001 Brian Gough + + * view.h: provide macros for initializing null + vectors and views + +Sun Jul 1 22:44:51 2001 Brian Gough + + * introduction of new-style vector/matrix views + +Fri Jun 1 17:04:52 2001 Brian Gough + + * getset_source.c: made these routines work with the current + matrix struct, previously they would give incorrect results + +Mon May 14 22:43:39 2001 Brian Gough + + * matrix_source.c (FUNCTION): removed unnecessary inline from + static function definition + +Tue May 1 23:09:25 2001 Brian Gough + + * gsl_matrix_float.h (struct ): MS VC++ requires that the + struct/typedef be made with a single definition + +Mon Mar 26 20:33:45 2001 Brian Gough + + * view_source.c: split view functions out into a separate file + +Sat Sep 9 16:47:16 2000 Brian Gough + + * added an owner field for indicating whether the underlying + memory is owned by the vector. Changed the meaning of the block + field to always be the address of the underlying block, even for + subviews (previously the block field was set to NULL in this + case). + +Thu Aug 17 19:46:22 2000 Brian Gough + + * swap_source.c (FUNCTION): added function + gsl_matrix_transpose_memcpy for transposing rectangular matrices + +Sun Jul 16 10:40:15 2000 Brian Gough + + * init_source.c (FUNCTION): added gsl_matrix_view function for + creating a matrix view of an ordinary C array + +Sat Jul 15 21:44:22 2000 Brian Gough + + * changed GSL_EDOM to GSL_EINVAL for invalid matrix size arguments + +Sat Jun 17 15:38:30 2000 Brian Gough + + * fixed up missing MULTIPLICITY factors in various functions + +Sun May 28 12:25:02 2000 Brian Gough + + * test_complex_source.c (FUNCTION): use binary mode "b" when + reading and writing binary files + + * test_source.c (FUNCTION): use binary mode "b" when reading and + writing binary files + +Thu May 4 20:58:59 2000 Brian Gough + + * oper.c: added simple arithmetic operations (+,-,*,/,scale,+const) + +Wed Apr 26 15:04:22 2000 Brian Gough + + * prop_source.c (FUNCTION): added function gsl_matrix_isnull + +Tue Apr 18 12:51:49 2000 Brian Gough + + * minmax_source.c (FUNCTION): fixed bug in minmax where + coordinates would be incorrect for min or max in the first element + + * test_source.c (FUNCTION): added tests for max/min functions + +Thu Apr 13 18:39:27 2000 Brian Gough + + * minmax.c: added matrix max/min functions + +Sat Mar 25 20:29:41 2000 Brian Gough + + * swap_source.c (FUNCTION): renamed swap_cols to swap_columns, and + renamed swap_rowcol to swap_row_column + +Tue Mar 21 21:15:22 2000 Brian Gough + + * matrix_source.c (FUNCTION): added set_all and set_zero functions + +Sat Mar 11 11:19:05 2000 Brian Gough + + * init_source.c (FUNCTION): added gsl_matrix_identity to set a + matrix to the identity, and gsl_matrix_zero for zeroing a matrix + + * gsl_matrix.h: renamed struct element dim2 to tda (trailing + dimension) following blas conventions for row-major matrices + +Thu Dec 2 21:17:16 1999 Brian Gough + + * rowcol_source.c (FUNCTION): added gsl_matrix_view_from_vector + (Thanks to Fabrice Rossi) + +Sun Oct 31 20:01:39 1999 Brian Gough + + * copy.c copy_source.c: added gsl_matrix_copy function + +Tue Oct 19 14:13:35 1999 Brian Gough + + * added gsl_matrix_swap_row/col to exchange rows and columns + +Fri Oct 1 15:48:07 1999 Brian Gough + + * the matrix struct now supports a separate 'trailing dimension' + to allow handling of submatrices + + * now uses separate block directory for memory management + +Mon Mar 1 20:05:52 1999 Brian Gough + + * rowcol_source.c: fix rowcol to use strides + +1998-11-09 + + * test_source.c, test_complex_source.c: use macros to determine if + we should run tests with long double printf/scanf, since these + aren't supported on all platforms + +Mon Apr 6 15:06:38 1998 Brian Gough + + * make range checking the default, you have to define + GSL_RANGE_CHECK_OFF to turn it off + diff --git a/gsl-2.5/matrix/Makefile b/gsl-2.5/matrix/Makefile new file mode 100644 index 00000000..dd822cca --- /dev/null +++ b/gsl-2.5/matrix/Makefile @@ -0,0 +1,1064 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# matrix/Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + + + + +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/gsl +pkgincludedir = $(includedir)/gsl +pkglibdir = $(libdir)/gsl +pkglibexecdir = $(libexecdir)/gsl +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = x86_64-unknown-linux-gnu +host_triplet = x86_64-unknown-linux-gnu +check_PROGRAMS = test$(EXEEXT) test_static$(EXEEXT) +subdir = matrix +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp \ + $(noinst_HEADERS) $(pkginclude_HEADERS) \ + $(top_srcdir)/test-driver ChangeLog TODO +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +libgslmatrix_la_LIBADD = +am_libgslmatrix_la_OBJECTS = init.lo matrix.lo file.lo rowcol.lo \ + swap.lo copy.lo minmax.lo prop.lo oper.lo getset.lo view.lo \ + submatrix.lo +libgslmatrix_la_OBJECTS = $(am_libgslmatrix_la_OBJECTS) +AM_V_lt = $(am__v_lt_$(V)) +am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) +am__v_lt_0 = --silent +am__v_lt_1 = +am_test_OBJECTS = test.$(OBJEXT) +test_OBJECTS = $(am_test_OBJECTS) +test_DEPENDENCIES = libgslmatrix.la ../vector/libgslvector.la \ + ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la \ + ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la \ + ../utils/libutils.la +am_test_static_OBJECTS = test_static.$(OBJEXT) +test_static_OBJECTS = $(am_test_static_OBJECTS) +test_static_DEPENDENCIES = libgslmatrix.la ../vector/libgslvector.la \ + ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la \ + ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la \ + ../utils/libutils.la +AM_V_P = $(am__v_P_$(V)) +am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY)) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_$(V)) +am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_$(V)) +am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I. -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_$(V)) +am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_$(V)) +am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libgslmatrix_la_SOURCES) $(test_SOURCES) \ + $(test_static_SOURCES) +DIST_SOURCES = $(libgslmatrix_la_SOURCES) $(test_SOURCES) \ + $(test_static_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(pkgincludedir)" +HEADERS = $(noinst_HEADERS) $(pkginclude_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = .test +LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing aclocal-1.13 +AMTAR = $${TAR-tar} +AM_DEFAULT_VERBOSITY = 1 +AR = ar +AS = as +AUTOCONF = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing autoconf +AUTOHEADER = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing autoheader +AUTOMAKE = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing automake-1.13 +AWK = gawk +CC = gcc +CCDEPMODE = depmode=gcc3 +CFLAGS = -g -O2 +CPP = gcc -E +CPPFLAGS = +CYGPATH_W = echo +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +DLLTOOL = false +DSYMUTIL = +DUMPBIN = +ECHO_C = +ECHO_N = -n +ECHO_T = +EGREP = /usr/bin/grep -E +EXEEXT = +FGREP = /usr/bin/grep -F +GREP = /usr/bin/grep +GSLCBLAS_LDFLAGS = +GSL_CFLAGS = -I${prefix}/include +GSL_LDFLAGS = +GSL_LIBADD = +GSL_LIBM = -lm +GSL_LIBS = -L${exec_prefix}/lib -lgsl +GSL_LT_CBLAS_VERSION = 0:0:0 +GSL_LT_VERSION = 24:0:1 +GSL_MAJOR_VERSION = 2 +GSL_MINOR_VERSION = 5 +HAVE_AIX_IEEE_INTERFACE = +HAVE_DARWIN86_IEEE_INTERFACE = +HAVE_DARWIN_IEEE_INTERFACE = +HAVE_FREEBSD_IEEE_INTERFACE = +HAVE_GNUM68K_IEEE_INTERFACE = +HAVE_GNUPPC_IEEE_INTERFACE = +HAVE_GNUSPARC_IEEE_INTERFACE = +HAVE_GNUX86_IEEE_INTERFACE = +HAVE_HPUX11_IEEE_INTERFACE = +HAVE_HPUX_IEEE_INTERFACE = +HAVE_IRIX_IEEE_INTERFACE = +HAVE_NETBSD_IEEE_INTERFACE = +HAVE_OPENBSD_IEEE_INTERFACE = +HAVE_OS2EMX_IEEE_INTERFACE = +HAVE_SOLARIS_IEEE_INTERFACE = +HAVE_SUNOS4_IEEE_INTERFACE = +HAVE_TRU64_IEEE_INTERFACE = +INSTALL = /usr/bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = $(install_sh) -c -s +LD = /usr/bin/ld -m elf_x86_64 +LDFLAGS = +LIBM = -lm +LIBOBJS = +LIBS = -lm +LIBTOOL = $(SHELL) $(top_builddir)/libtool +LIPO = +LN_S = ln -s +LTLIBOBJS = +MAINT = # +MAKEINFO = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing makeinfo +MANIFEST_TOOL = : +MKDIR_P = /usr/bin/mkdir -p +NM = /usr/bin/nm -B +NMEDIT = +OBJDUMP = objdump +OBJEXT = o +OTOOL = +OTOOL64 = +PACKAGE = gsl +PACKAGE_BUGREPORT = +PACKAGE_NAME = gsl +PACKAGE_STRING = gsl 2.5 +PACKAGE_TARNAME = gsl +PACKAGE_URL = +PACKAGE_VERSION = 2.5 +PATH_SEPARATOR = : +RANLIB = ranlib +SED = /usr/bin/sed +SET_MAKE = +SHELL = /bin/sh +STRIP = strip +VERSION = 2.5 +abs_builddir = /home/groups/kipac/chto/package/gsl/gsl-2.5/matrix +abs_srcdir = /home/groups/kipac/chto/package/gsl/gsl-2.5/matrix +abs_top_builddir = /home/groups/kipac/chto/package/gsl/gsl-2.5 +abs_top_srcdir = /home/groups/kipac/chto/package/gsl/gsl-2.5 +ac_ct_AR = ar +ac_ct_CC = gcc +ac_ct_DUMPBIN = +am__include = include +am__leading_dot = . +am__quote = +am__tar = $${TAR-tar} chof - "$$tardir" +am__untar = $${TAR-tar} xf - +bindir = ${exec_prefix}/bin +build = x86_64-unknown-linux-gnu +build_alias = +build_cpu = x86_64 +build_os = linux-gnu +build_vendor = unknown +builddir = . +datadir = ${datarootdir} +datarootdir = ${prefix}/share +docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} +dvidir = ${docdir} +exec_prefix = ${prefix} +host = x86_64-unknown-linux-gnu +host_alias = +host_cpu = x86_64 +host_os = linux-gnu +host_vendor = unknown +htmldir = ${docdir} +includedir = ${prefix}/include +infodir = ${datarootdir}/info +install_sh = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/install-sh +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +localedir = ${datarootdir}/locale +localstatedir = ${prefix}/var +mandir = ${datarootdir}/man +mkdir_p = $(MKDIR_P) +oldincludedir = /usr/include +pdfdir = ${docdir} +prefix = /home/groups/kipac/chto/package/gsl/gsl_lib +program_transform_name = s,x,x, +psdir = ${docdir} +sbindir = ${exec_prefix}/sbin +sharedstatedir = ${prefix}/com +srcdir = . +sysconfdir = ${prefix}/etc +target_alias = +top_build_prefix = ../ +top_builddir = .. +top_srcdir = .. +noinst_LTLIBRARIES = libgslmatrix.la +pkginclude_HEADERS = gsl_matrix.h gsl_matrix_char.h gsl_matrix_complex_double.h gsl_matrix_complex_float.h gsl_matrix_complex_long_double.h gsl_matrix_double.h gsl_matrix_float.h gsl_matrix_int.h gsl_matrix_long.h gsl_matrix_long_double.h gsl_matrix_short.h gsl_matrix_uchar.h gsl_matrix_uint.h gsl_matrix_ulong.h gsl_matrix_ushort.h +AM_CPPFLAGS = -I$(top_srcdir) +TESTS = $(check_PROGRAMS) +test_LDADD = libgslmatrix.la ../vector/libgslvector.la ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la +test_static_LDADD = libgslmatrix.la ../vector/libgslvector.la ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la +test_SOURCES = test.c +test_static_SOURCES = test_static.c +CLEANFILES = test.txt test.dat test_static.dat +noinst_HEADERS = init_source.c file_source.c rowcol_source.c swap_source.c copy_source.c test_complex_source.c test_source.c minmax_source.c prop_source.c oper_source.c getset_source.c view_source.c submatrix_source.c oper_complex_source.c +libgslmatrix_la_SOURCES = init.c matrix.c file.c rowcol.c swap.c copy.c minmax.c prop.c oper.c getset.c view.c submatrix.c view.h +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu matrix/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu matrix/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: # $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): # $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libgslmatrix.la: $(libgslmatrix_la_OBJECTS) $(libgslmatrix_la_DEPENDENCIES) $(EXTRA_libgslmatrix_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(libgslmatrix_la_OBJECTS) $(libgslmatrix_la_LIBADD) $(LIBS) + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) $(EXTRA_test_DEPENDENCIES) + @rm -f test$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_OBJECTS) $(test_LDADD) $(LIBS) + +test_static$(EXEEXT): $(test_static_OBJECTS) $(test_static_DEPENDENCIES) $(EXTRA_test_static_DEPENDENCIES) + @rm -f test_static$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_static_OBJECTS) $(test_static_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +include ./$(DEPDIR)/copy.Plo +include ./$(DEPDIR)/file.Plo +include ./$(DEPDIR)/getset.Plo +include ./$(DEPDIR)/init.Plo +include ./$(DEPDIR)/matrix.Plo +include ./$(DEPDIR)/minmax.Plo +include ./$(DEPDIR)/oper.Plo +include ./$(DEPDIR)/prop.Plo +include ./$(DEPDIR)/rowcol.Plo +include ./$(DEPDIR)/submatrix.Plo +include ./$(DEPDIR)/swap.Plo +include ./$(DEPDIR)/test.Po +include ./$(DEPDIR)/test_static.Po +include ./$(DEPDIR)/view.Plo + +.c.o: + $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# $(AM_V_CC)source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(COMPILE) -c $< + +.c.obj: + $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# $(AM_V_CC)source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: + $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +# $(AM_V_CC)source='$<' object='$@' libtool=yes \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-pkgincludeHEADERS: $(pkginclude_HEADERS) + @$(NORMAL_INSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \ + done + +uninstall-pkgincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + else \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_PROGRAMS) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +test.log: test$(EXEEXT) + @p='test$(EXEEXT)'; \ + b='test'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test_static.log: test_static$(EXEEXT) + @p='test_static$(EXEEXT)'; \ + b='test_static'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +#.test$(EXEEXT).log: +# @p='$<'; \ +# $(am__set_b); \ +# $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +# --log-file $$b.log --trs-file $$b.trs \ +# $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +# "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-am +all-am: Makefile $(LTLIBRARIES) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(pkgincludedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-pkgincludeHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-pkgincludeHEADERS + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES cscopelist-am ctags ctags-am distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-pkgincludeHEADERS \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + recheck tags tags-am uninstall uninstall-am \ + uninstall-pkgincludeHEADERS + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gsl-2.5/matrix/Makefile.am b/gsl-2.5/matrix/Makefile.am new file mode 100644 index 00000000..f49d7e0a --- /dev/null +++ b/gsl-2.5/matrix/Makefile.am @@ -0,0 +1,24 @@ +noinst_LTLIBRARIES = libgslmatrix.la + +check_PROGRAMS = test test_static + +pkginclude_HEADERS = gsl_matrix.h gsl_matrix_char.h gsl_matrix_complex_double.h gsl_matrix_complex_float.h gsl_matrix_complex_long_double.h gsl_matrix_double.h gsl_matrix_float.h gsl_matrix_int.h gsl_matrix_long.h gsl_matrix_long_double.h gsl_matrix_short.h gsl_matrix_uchar.h gsl_matrix_uint.h gsl_matrix_ulong.h gsl_matrix_ushort.h + +AM_CPPFLAGS = -I$(top_srcdir) + +TESTS = $(check_PROGRAMS) + +test_LDADD = libgslmatrix.la ../vector/libgslvector.la ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la +test_static_LDADD = libgslmatrix.la ../vector/libgslvector.la ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la + +test_SOURCES = test.c + +test_static_SOURCES = test_static.c + +CLEANFILES = test.txt test.dat test_static.dat + +noinst_HEADERS = init_source.c file_source.c rowcol_source.c swap_source.c copy_source.c test_complex_source.c test_source.c minmax_source.c prop_source.c oper_source.c getset_source.c view_source.c submatrix_source.c oper_complex_source.c + +libgslmatrix_la_SOURCES = init.c matrix.c file.c rowcol.c swap.c copy.c minmax.c prop.c oper.c getset.c view.c submatrix.c view.h + + diff --git a/gsl-2.5/matrix/Makefile.in b/gsl-2.5/matrix/Makefile.in new file mode 100644 index 00000000..45967217 --- /dev/null +++ b/gsl-2.5/matrix/Makefile.in @@ -0,0 +1,1064 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + + +VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +check_PROGRAMS = test$(EXEEXT) test_static$(EXEEXT) +subdir = matrix +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp \ + $(noinst_HEADERS) $(pkginclude_HEADERS) \ + $(top_srcdir)/test-driver ChangeLog TODO +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +libgslmatrix_la_LIBADD = +am_libgslmatrix_la_OBJECTS = init.lo matrix.lo file.lo rowcol.lo \ + swap.lo copy.lo minmax.lo prop.lo oper.lo getset.lo view.lo \ + submatrix.lo +libgslmatrix_la_OBJECTS = $(am_libgslmatrix_la_OBJECTS) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +am_test_OBJECTS = test.$(OBJEXT) +test_OBJECTS = $(am_test_OBJECTS) +test_DEPENDENCIES = libgslmatrix.la ../vector/libgslvector.la \ + ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la \ + ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la \ + ../utils/libutils.la +am_test_static_OBJECTS = test_static.$(OBJEXT) +test_static_OBJECTS = $(am_test_static_OBJECTS) +test_static_DEPENDENCIES = libgslmatrix.la ../vector/libgslvector.la \ + ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la \ + ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la \ + ../utils/libutils.la +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libgslmatrix_la_SOURCES) $(test_SOURCES) \ + $(test_static_SOURCES) +DIST_SOURCES = $(libgslmatrix_la_SOURCES) $(test_SOURCES) \ + $(test_static_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(pkgincludedir)" +HEADERS = $(noinst_HEADERS) $(pkginclude_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = @EXEEXT@ .test +LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +GSLCBLAS_LDFLAGS = @GSLCBLAS_LDFLAGS@ +GSL_CFLAGS = @GSL_CFLAGS@ +GSL_LDFLAGS = @GSL_LDFLAGS@ +GSL_LIBADD = @GSL_LIBADD@ +GSL_LIBM = @GSL_LIBM@ +GSL_LIBS = @GSL_LIBS@ +GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ +GSL_LT_VERSION = @GSL_LT_VERSION@ +GSL_MAJOR_VERSION = @GSL_MAJOR_VERSION@ +GSL_MINOR_VERSION = @GSL_MINOR_VERSION@ +HAVE_AIX_IEEE_INTERFACE = @HAVE_AIX_IEEE_INTERFACE@ +HAVE_DARWIN86_IEEE_INTERFACE = @HAVE_DARWIN86_IEEE_INTERFACE@ +HAVE_DARWIN_IEEE_INTERFACE = @HAVE_DARWIN_IEEE_INTERFACE@ +HAVE_FREEBSD_IEEE_INTERFACE = @HAVE_FREEBSD_IEEE_INTERFACE@ +HAVE_GNUM68K_IEEE_INTERFACE = @HAVE_GNUM68K_IEEE_INTERFACE@ +HAVE_GNUPPC_IEEE_INTERFACE = @HAVE_GNUPPC_IEEE_INTERFACE@ +HAVE_GNUSPARC_IEEE_INTERFACE = @HAVE_GNUSPARC_IEEE_INTERFACE@ +HAVE_GNUX86_IEEE_INTERFACE = @HAVE_GNUX86_IEEE_INTERFACE@ +HAVE_HPUX11_IEEE_INTERFACE = @HAVE_HPUX11_IEEE_INTERFACE@ +HAVE_HPUX_IEEE_INTERFACE = @HAVE_HPUX_IEEE_INTERFACE@ +HAVE_IRIX_IEEE_INTERFACE = @HAVE_IRIX_IEEE_INTERFACE@ +HAVE_NETBSD_IEEE_INTERFACE = @HAVE_NETBSD_IEEE_INTERFACE@ +HAVE_OPENBSD_IEEE_INTERFACE = @HAVE_OPENBSD_IEEE_INTERFACE@ +HAVE_OS2EMX_IEEE_INTERFACE = @HAVE_OS2EMX_IEEE_INTERFACE@ +HAVE_SOLARIS_IEEE_INTERFACE = @HAVE_SOLARIS_IEEE_INTERFACE@ +HAVE_SUNOS4_IEEE_INTERFACE = @HAVE_SUNOS4_IEEE_INTERFACE@ +HAVE_TRU64_IEEE_INTERFACE = @HAVE_TRU64_IEEE_INTERFACE@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBM = @LIBM@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +noinst_LTLIBRARIES = libgslmatrix.la +pkginclude_HEADERS = gsl_matrix.h gsl_matrix_char.h gsl_matrix_complex_double.h gsl_matrix_complex_float.h gsl_matrix_complex_long_double.h gsl_matrix_double.h gsl_matrix_float.h gsl_matrix_int.h gsl_matrix_long.h gsl_matrix_long_double.h gsl_matrix_short.h gsl_matrix_uchar.h gsl_matrix_uint.h gsl_matrix_ulong.h gsl_matrix_ushort.h +AM_CPPFLAGS = -I$(top_srcdir) +TESTS = $(check_PROGRAMS) +test_LDADD = libgslmatrix.la ../vector/libgslvector.la ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la +test_static_LDADD = libgslmatrix.la ../vector/libgslvector.la ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la +test_SOURCES = test.c +test_static_SOURCES = test_static.c +CLEANFILES = test.txt test.dat test_static.dat +noinst_HEADERS = init_source.c file_source.c rowcol_source.c swap_source.c copy_source.c test_complex_source.c test_source.c minmax_source.c prop_source.c oper_source.c getset_source.c view_source.c submatrix_source.c oper_complex_source.c +libgslmatrix_la_SOURCES = init.c matrix.c file.c rowcol.c swap.c copy.c minmax.c prop.c oper.c getset.c view.c submatrix.c view.h +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu matrix/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu matrix/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libgslmatrix.la: $(libgslmatrix_la_OBJECTS) $(libgslmatrix_la_DEPENDENCIES) $(EXTRA_libgslmatrix_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(libgslmatrix_la_OBJECTS) $(libgslmatrix_la_LIBADD) $(LIBS) + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) $(EXTRA_test_DEPENDENCIES) + @rm -f test$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_OBJECTS) $(test_LDADD) $(LIBS) + +test_static$(EXEEXT): $(test_static_OBJECTS) $(test_static_DEPENDENCIES) $(EXTRA_test_static_DEPENDENCIES) + @rm -f test_static$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_static_OBJECTS) $(test_static_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/copy.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/file.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getset.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/init.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/matrix.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/minmax.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/oper.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/prop.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rowcol.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/submatrix.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/swap.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_static.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/view.Plo@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-pkgincludeHEADERS: $(pkginclude_HEADERS) + @$(NORMAL_INSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \ + done + +uninstall-pkgincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + else \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_PROGRAMS) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +test.log: test$(EXEEXT) + @p='test$(EXEEXT)'; \ + b='test'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test_static.log: test_static$(EXEEXT) + @p='test_static$(EXEEXT)'; \ + b='test_static'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +@am__EXEEXT_TRUE@.test$(EXEEXT).log: +@am__EXEEXT_TRUE@ @p='$<'; \ +@am__EXEEXT_TRUE@ $(am__set_b); \ +@am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +@am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ +@am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +@am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-am +all-am: Makefile $(LTLIBRARIES) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(pkgincludedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-pkgincludeHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-pkgincludeHEADERS + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES cscopelist-am ctags ctags-am distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-pkgincludeHEADERS \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + recheck tags tags-am uninstall uninstall-am \ + uninstall-pkgincludeHEADERS + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gsl-2.5/matrix/TODO b/gsl-2.5/matrix/TODO new file mode 100644 index 00000000..3f88cad0 --- /dev/null +++ b/gsl-2.5/matrix/TODO @@ -0,0 +1,14 @@ +# -*- org -*- +#+CATEGORY: matrix + +* Tests for subrowcol + +* Pretty print function + +* Clean up the tests. + +* Run tests where matrix tda != size2, note that tda is a physical +dimension and size2 is the number of columns in the matrix. This will +probably find a lot of bugs in the matrix logic. + +* Matrix norms that can be calculated analytically, e.g. Frobenius, etc diff --git a/gsl-2.5/matrix/copy.c b/gsl-2.5/matrix/copy.c new file mode 100644 index 00000000..ffe3a122 --- /dev/null +++ b/gsl-2.5/matrix/copy.c @@ -0,0 +1,87 @@ +#include +#include +#include + +#define BASE_GSL_COMPLEX_LONG +#include "templates_on.h" +#include "copy_source.c" +#include "templates_off.h" +#undef BASE_GSL_COMPLEX_LONG + +#define BASE_GSL_COMPLEX +#include "templates_on.h" +#include "copy_source.c" +#include "templates_off.h" +#undef BASE_GSL_COMPLEX + +#define BASE_GSL_COMPLEX_FLOAT +#include "templates_on.h" +#include "copy_source.c" +#include "templates_off.h" +#undef BASE_GSL_COMPLEX_FLOAT + +#define BASE_LONG_DOUBLE +#include "templates_on.h" +#include "copy_source.c" +#include "templates_off.h" +#undef BASE_LONG_DOUBLE + +#define BASE_DOUBLE +#include "templates_on.h" +#include "copy_source.c" +#include "templates_off.h" +#undef BASE_DOUBLE + +#define BASE_FLOAT +#include "templates_on.h" +#include "copy_source.c" +#include "templates_off.h" +#undef BASE_FLOAT + +#define BASE_ULONG +#include "templates_on.h" +#include "copy_source.c" +#include "templates_off.h" +#undef BASE_ULONG + +#define BASE_LONG +#include "templates_on.h" +#include "copy_source.c" +#include "templates_off.h" +#undef BASE_LONG + +#define BASE_UINT +#include "templates_on.h" +#include "copy_source.c" +#include "templates_off.h" +#undef BASE_UINT + +#define BASE_INT +#include "templates_on.h" +#include "copy_source.c" +#include "templates_off.h" +#undef BASE_INT + +#define BASE_USHORT +#include "templates_on.h" +#include "copy_source.c" +#include "templates_off.h" +#undef BASE_USHORT + +#define BASE_SHORT +#include "templates_on.h" +#include "copy_source.c" +#include "templates_off.h" +#undef BASE_SHORT + +#define BASE_UCHAR +#include "templates_on.h" +#include "copy_source.c" +#include "templates_off.h" +#undef BASE_UCHAR + +#define BASE_CHAR +#include "templates_on.h" +#include "copy_source.c" +#include "templates_off.h" +#undef BASE_CHAR diff --git a/gsl-2.5/matrix/copy.lo b/gsl-2.5/matrix/copy.lo new file mode 100644 index 00000000..4853e963 --- /dev/null +++ b/gsl-2.5/matrix/copy.lo @@ -0,0 +1,12 @@ +# copy.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/copy.o' + +# Name of the non-PIC object +non_pic_object='copy.o' + diff --git a/gsl-2.5/matrix/copy_source.c b/gsl-2.5/matrix/copy_source.c new file mode 100644 index 00000000..830d9f1f --- /dev/null +++ b/gsl-2.5/matrix/copy_source.c @@ -0,0 +1,159 @@ +/* matrix/copy_source.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +int +FUNCTION (gsl_matrix, memcpy) (TYPE (gsl_matrix) * dest, + const TYPE (gsl_matrix) * src) +{ + const size_t src_size1 = src->size1; + const size_t src_size2 = src->size2; + const size_t dest_size1 = dest->size1; + const size_t dest_size2 = dest->size2; + + if (src_size1 != dest_size1 || src_size2 != dest_size2) + { + GSL_ERROR ("matrix sizes are different", GSL_EBADLEN); + } + + { + const size_t src_tda = src->tda ; + const size_t dest_tda = dest->tda ; + size_t i, j; + + for (i = 0; i < src_size1 ; i++) + { + for (j = 0; j < MULTIPLICITY * src_size2; j++) + { + dest->data[MULTIPLICITY * dest_tda * i + j] + = src->data[MULTIPLICITY * src_tda * i + j]; + } + } + } + + return GSL_SUCCESS; +} + + +int +FUNCTION (gsl_matrix, swap) (TYPE (gsl_matrix) * dest, TYPE (gsl_matrix) * src) +{ + const size_t src_size1 = src->size1; + const size_t src_size2 = src->size2; + const size_t dest_size1 = dest->size1; + const size_t dest_size2 = dest->size2; + + if (src_size1 != dest_size1 || src_size2 != dest_size2) + { + GSL_ERROR ("matrix sizes are different", GSL_EBADLEN); + } + + { + const size_t src_tda = src->tda ; + const size_t dest_tda = dest->tda ; + size_t i, j; + + for (i = 0; i < src_size1 ; i++) + { + for (j = 0; j < MULTIPLICITY * src_size2; j++) + { + ATOMIC tmp = src->data[MULTIPLICITY * src_tda * i + j]; + src->data[MULTIPLICITY * src_tda * i + j] + = dest->data[MULTIPLICITY * dest_tda * i + j]; + dest->data[MULTIPLICITY * dest_tda * i + j] = tmp ; + } + } + } + + return GSL_SUCCESS; +} + + +int +FUNCTION (gsl_matrix, tricpy) (const char uplo_src, + const int copy_diag, TYPE (gsl_matrix) * dest, + const TYPE (gsl_matrix) * src) +{ + const size_t src_size1 = src->size1; + const size_t src_size2 = src->size2; + const size_t dest_size1 = dest->size1; + const size_t dest_size2 = dest->size2; + + if (src_size1 != dest_size1 || src_size2 != dest_size2) + { + GSL_ERROR ("matrix sizes are different", GSL_EBADLEN); + } + + { + const size_t src_tda = src->tda ; + const size_t dest_tda = dest->tda ; + size_t i, j, k; + + if (uplo_src == 'L') + { + for (i = 0; i < src_size1 ; i++) + { + for (j = 0; j < i; j++) + { + for (k = 0; k < MULTIPLICITY; k++) + { + size_t e1 = (i * dest_tda + j) * MULTIPLICITY + k ; + size_t e2 = (i * src_tda + j) * MULTIPLICITY + k ; + dest->data[e1] = src->data[e2]; + } + } + } + } + else if (uplo_src == 'U') + { + for (i = 0; i < src_size1 ; i++) + { + for (j = i + 1; j < src_size2; j++) + { + for (k = 0; k < MULTIPLICITY; k++) + { + size_t e1 = (i * dest_tda + j) * MULTIPLICITY + k ; + size_t e2 = (i * src_tda + j) * MULTIPLICITY + k ; + dest->data[e1] = src->data[e2]; + } + } + } + } + else + { + GSL_ERROR ("invalid uplo parameters", GSL_EINVAL); + } + + if (copy_diag) + { + for (i = 0; i < src_size1 ; i++) + { + for (k = 0; k < MULTIPLICITY; k++) + { + size_t e1 = (i * dest_tda + i) * MULTIPLICITY + k ; + size_t e2 = (i * src_tda + i) * MULTIPLICITY + k ; + dest->data[e1] = src->data[e2]; + } + } + } + } + + return GSL_SUCCESS; +} + + diff --git a/gsl-2.5/matrix/file.c b/gsl-2.5/matrix/file.c new file mode 100644 index 00000000..b7528164 --- /dev/null +++ b/gsl-2.5/matrix/file.c @@ -0,0 +1,88 @@ +#include +#include +#include +#include + +#define BASE_GSL_COMPLEX_LONG +#include "templates_on.h" +#include "file_source.c" +#include "templates_off.h" +#undef BASE_GSL_COMPLEX_LONG + +#define BASE_GSL_COMPLEX +#include "templates_on.h" +#include "file_source.c" +#include "templates_off.h" +#undef BASE_GSL_COMPLEX + +#define BASE_GSL_COMPLEX_FLOAT +#include "templates_on.h" +#include "file_source.c" +#include "templates_off.h" +#undef BASE_GSL_COMPLEX_FLOAT + +#define BASE_LONG_DOUBLE +#include "templates_on.h" +#include "file_source.c" +#include "templates_off.h" +#undef BASE_LONG_DOUBLE + +#define BASE_DOUBLE +#include "templates_on.h" +#include "file_source.c" +#include "templates_off.h" +#undef BASE_DOUBLE + +#define BASE_FLOAT +#include "templates_on.h" +#include "file_source.c" +#include "templates_off.h" +#undef BASE_FLOAT + +#define BASE_ULONG +#include "templates_on.h" +#include "file_source.c" +#include "templates_off.h" +#undef BASE_ULONG + +#define BASE_LONG +#include "templates_on.h" +#include "file_source.c" +#include "templates_off.h" +#undef BASE_LONG + +#define BASE_UINT +#include "templates_on.h" +#include "file_source.c" +#include "templates_off.h" +#undef BASE_UINT + +#define BASE_INT +#include "templates_on.h" +#include "file_source.c" +#include "templates_off.h" +#undef BASE_INT + +#define BASE_USHORT +#include "templates_on.h" +#include "file_source.c" +#include "templates_off.h" +#undef BASE_USHORT + +#define BASE_SHORT +#include "templates_on.h" +#include "file_source.c" +#include "templates_off.h" +#undef BASE_SHORT + +#define BASE_UCHAR +#include "templates_on.h" +#include "file_source.c" +#include "templates_off.h" +#undef BASE_UCHAR + +#define BASE_CHAR +#include "templates_on.h" +#include "file_source.c" +#include "templates_off.h" +#undef BASE_CHAR diff --git a/gsl-2.5/matrix/file.lo b/gsl-2.5/matrix/file.lo new file mode 100644 index 00000000..1443af7c --- /dev/null +++ b/gsl-2.5/matrix/file.lo @@ -0,0 +1,12 @@ +# file.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/file.o' + +# Name of the non-PIC object +non_pic_object='file.o' + diff --git a/gsl-2.5/matrix/file_source.c b/gsl-2.5/matrix/file_source.c new file mode 100644 index 00000000..828a2385 --- /dev/null +++ b/gsl-2.5/matrix/file_source.c @@ -0,0 +1,157 @@ +/* matrix/file_source.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +int +FUNCTION (gsl_matrix, fread) (FILE * stream, TYPE (gsl_matrix) * m) +{ + int status = 0; + + const size_t size1 = m->size1; + const size_t size2 = m->size2; + + const size_t tda = m->tda; + + if (tda == size2) /* the rows are contiguous */ + { + status = FUNCTION (gsl_block, raw_fread) (stream, + m->data, + size1 * size2, 1); + } + else + { + size_t i; + + for (i = 0 ; i < size1 ; i++) /* read each row separately */ + { + status = FUNCTION (gsl_block, raw_fread) (stream, + m->data + i * MULTIPLICITY * tda, + size2, 1); + if (status) + break; + } + } + + return status; +} + +int +FUNCTION (gsl_matrix, fwrite) (FILE * stream, const TYPE (gsl_matrix) * m) +{ + int status = 0; + + const size_t size1 = m->size1; + const size_t size2 = m->size2; + + const size_t tda = m->tda; + + if (tda == size2) /* the rows are contiguous */ + { + status = FUNCTION (gsl_block, raw_fwrite) (stream, + m->data, + size1 * size2, 1); + } + else + { + size_t i; + + for (i = 0 ; i < size1 ; i++) /* write each row separately */ + { + status = FUNCTION (gsl_block, raw_fwrite) (stream, + m->data + i * MULTIPLICITY * tda, + size2, 1); + if (status) + break; + } + } + + return status; + +} + +#if !(USES_LONGDOUBLE && !HAVE_PRINTF_LONGDOUBLE) +int +FUNCTION (gsl_matrix, fprintf) (FILE * stream, const TYPE (gsl_matrix) * m, + const char *format) +{ + int status = 0; + + const size_t size1 = m->size1; + const size_t size2 = m->size2; + + const size_t tda = m->tda; + + if (tda == size2) /* the rows are contiguous */ + { + status = FUNCTION (gsl_block, raw_fprintf) (stream, + m->data, + size1 * size2, 1, + format); + } + else + { + size_t i; + + for (i = 0 ; i < size1 ; i++) /* print each row separately */ + { + status = FUNCTION (gsl_block, raw_fprintf) (stream, + m->data + i * MULTIPLICITY * tda, + size2, 1, + format); + if (status) + break; + } + } + + return status; +} + +int +FUNCTION (gsl_matrix, fscanf) (FILE * stream, TYPE (gsl_matrix) * m) +{ + int status = 0; + + const size_t size1 = m->size1; + const size_t size2 = m->size2; + + const size_t tda = m->tda; + + if (tda == size2) /* the rows are contiguous */ + { + status = FUNCTION (gsl_block, raw_fscanf) (stream, + m->data, + size1 * size2, 1); + } + else + { + size_t i; + + for (i = 0 ; i < size1 ; i++) /* scan each row separately */ + { + status = FUNCTION (gsl_block, raw_fscanf) (stream, + m->data + i * MULTIPLICITY * tda, + size2, 1); + if (status) + break; + } + } + + return status; +} +#endif + diff --git a/gsl-2.5/matrix/getset.c b/gsl-2.5/matrix/getset.c new file mode 100644 index 00000000..526144dc --- /dev/null +++ b/gsl-2.5/matrix/getset.c @@ -0,0 +1,88 @@ +#include +#include +#include +#include + +#define BASE_GSL_COMPLEX_LONG +#include "templates_on.h" +#include "getset_source.c" +#include "templates_off.h" +#undef BASE_GSL_COMPLEX_LONG + +#define BASE_GSL_COMPLEX +#include "templates_on.h" +#include "getset_source.c" +#include "templates_off.h" +#undef BASE_GSL_COMPLEX + +#define BASE_GSL_COMPLEX_FLOAT +#include "templates_on.h" +#include "getset_source.c" +#include "templates_off.h" +#undef BASE_GSL_COMPLEX_FLOAT + +#define BASE_LONG_DOUBLE +#include "templates_on.h" +#include "getset_source.c" +#include "templates_off.h" +#undef BASE_LONG_DOUBLE + +#define BASE_DOUBLE +#include "templates_on.h" +#include "getset_source.c" +#include "templates_off.h" +#undef BASE_DOUBLE + +#define BASE_FLOAT +#include "templates_on.h" +#include "getset_source.c" +#include "templates_off.h" +#undef BASE_FLOAT + +#define BASE_ULONG +#include "templates_on.h" +#include "getset_source.c" +#include "templates_off.h" +#undef BASE_ULONG + +#define BASE_LONG +#include "templates_on.h" +#include "getset_source.c" +#include "templates_off.h" +#undef BASE_LONG + +#define BASE_UINT +#include "templates_on.h" +#include "getset_source.c" +#include "templates_off.h" +#undef BASE_UINT + +#define BASE_INT +#include "templates_on.h" +#include "getset_source.c" +#include "templates_off.h" +#undef BASE_INT + +#define BASE_USHORT +#include "templates_on.h" +#include "getset_source.c" +#include "templates_off.h" +#undef BASE_USHORT + +#define BASE_SHORT +#include "templates_on.h" +#include "getset_source.c" +#include "templates_off.h" +#undef BASE_SHORT + +#define BASE_UCHAR +#include "templates_on.h" +#include "getset_source.c" +#include "templates_off.h" +#undef BASE_UCHAR + +#define BASE_CHAR +#include "templates_on.h" +#include "getset_source.c" +#include "templates_off.h" +#undef BASE_CHAR diff --git a/gsl-2.5/matrix/getset.lo b/gsl-2.5/matrix/getset.lo new file mode 100644 index 00000000..a340f65d --- /dev/null +++ b/gsl-2.5/matrix/getset.lo @@ -0,0 +1,12 @@ +# getset.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/getset.o' + +# Name of the non-PIC object +non_pic_object='getset.o' + diff --git a/gsl-2.5/matrix/getset_source.c b/gsl-2.5/matrix/getset_source.c new file mode 100644 index 00000000..e55c05b3 --- /dev/null +++ b/gsl-2.5/matrix/getset_source.c @@ -0,0 +1,228 @@ +/**********************************************************************/ +/* The functions below are obsolete */ +/**********************************************************************/ + +int +FUNCTION (gsl_matrix, get_row) (TYPE (gsl_vector) * v, + const TYPE (gsl_matrix) * m, + const size_t i) +{ + const size_t M = m->size1; + const size_t N = m->size2; + const size_t tda = m->tda; + + if (i >= M) + { + GSL_ERROR ("row index is out of range", GSL_EINVAL); + } + + if (v->size != N) + { + GSL_ERROR ("matrix row size and vector length are not equal", + GSL_EBADLEN); + } + + { + ATOMIC *v_data = v->data; + const ATOMIC *row_data = m->data + MULTIPLICITY * i * tda; + const size_t stride = v->stride ; + size_t j; + + for (j = 0; j < N; j++) + { + unsigned int k; + + for (k = 0; k < MULTIPLICITY; k++) + { + v_data[MULTIPLICITY * stride * j + k] + = row_data[MULTIPLICITY * j + k]; + } + } + } + + return GSL_SUCCESS; +} + +int +FUNCTION (gsl_matrix, get_col) (TYPE (gsl_vector) * v, + const TYPE (gsl_matrix) * m, + const size_t j) +{ + const size_t M = m->size1; + const size_t N = m->size2; + const size_t tda = m->tda; + + if (j >= N) + { + GSL_ERROR ("column index is out of range", GSL_EINVAL); + } + + if (v->size != M) + { + GSL_ERROR ("matrix column size and vector length are not equal", + GSL_EBADLEN); + } + + + { + ATOMIC *v_data = v->data; + const ATOMIC *column_data = m->data + MULTIPLICITY * j; + const size_t stride = v->stride ; + size_t i; + + for (i = 0; i < M; i++) + { + unsigned int k; + + for (k = 0; k < MULTIPLICITY; k++) + { + v_data[stride * MULTIPLICITY * i + k] = + column_data[MULTIPLICITY * i * tda + k]; + } + } + } + + return GSL_SUCCESS; +} + +int +FUNCTION (gsl_matrix, set_row) (TYPE (gsl_matrix) * m, + const size_t i, + const TYPE (gsl_vector) * v) +{ + const size_t M = m->size1; + const size_t N = m->size2; + const size_t tda = m->tda; + + if (i >= M) + { + GSL_ERROR ("row index is out of range", GSL_EINVAL); + } + + if (v->size != N) + { + GSL_ERROR ("matrix row size and vector length are not equal", + GSL_EBADLEN); + } + + { + const ATOMIC *v_data = v->data; + ATOMIC *row_data = m->data + MULTIPLICITY * i * tda; + const size_t stride = v->stride ; + size_t j; + + for (j = 0; j < N; j++) + { + unsigned int k; + + for (k = 0; k < MULTIPLICITY; k++) + { + row_data[MULTIPLICITY*j + k] + = v_data[MULTIPLICITY * stride * j + k]; + } + } + } + + return GSL_SUCCESS; +} + +int +FUNCTION (gsl_matrix, set_col) (TYPE (gsl_matrix) * m, + const size_t j, + const TYPE (gsl_vector) * v) +{ + const size_t M = m->size1; + const size_t N = m->size2; + const size_t tda = m->tda; + + if (j >= N) + { + GSL_ERROR ("column index is out of range", GSL_EINVAL); + } + + if (v->size != M) + { + GSL_ERROR ("matrix column size and vector length are not equal", + GSL_EBADLEN); + } + + { + const ATOMIC *v_data = v->data; + ATOMIC *column_data = m->data + MULTIPLICITY * j; + const size_t stride = v->stride ; + size_t i; + + for (i = 0; i < M; i++) + { + unsigned int k; + + for (k = 0; k < MULTIPLICITY; k++) + { + column_data[MULTIPLICITY * i * tda + k] + = v_data[MULTIPLICITY * stride * i + k]; + } + } + } + + return GSL_SUCCESS; +} + + +TYPE (gsl_vector) * +FUNCTION (gsl_vector, alloc_row_from_matrix) (TYPE(gsl_matrix) * m, + const size_t i) +{ + TYPE (gsl_vector) * v; + + const size_t M = m->size1; + + if (i >= M) + { + GSL_ERROR_VAL ("row index is out of range", GSL_EINVAL, 0); + } + + v = (TYPE (gsl_vector) *) malloc (sizeof (TYPE (gsl_vector))); + + if (v == 0) + { + GSL_ERROR_VAL ("failed to allocate space for vector struct", + GSL_ENOMEM, 0); + } + + v->data = m->data + MULTIPLICITY * i * m->tda ; + v->size = m->size2; + v->stride = 1; + v->block = 0; + + return v; +} + +TYPE (gsl_vector) * +FUNCTION (gsl_vector, alloc_col_from_matrix) (TYPE(gsl_matrix) * m, + const size_t j) +{ + TYPE (gsl_vector) * v; + + const size_t N = m->size2; + + if (j >= N) + { + GSL_ERROR_VAL ("column index is out of range", GSL_EINVAL, 0); + } + + v = (TYPE (gsl_vector) *) malloc (sizeof (TYPE (gsl_vector))); + + if (v == 0) + { + GSL_ERROR_VAL ("failed to allocate space for vector struct", + GSL_ENOMEM, 0); + } + + v->data = m->data + MULTIPLICITY * j ; + v->size = m->size1; + v->stride = m->tda; + v->block = 0; + + return v; +} + diff --git a/gsl-2.5/matrix/gsl_matrix.h b/gsl-2.5/matrix/gsl_matrix.h new file mode 100644 index 00000000..9b7ed765 --- /dev/null +++ b/gsl-2.5/matrix/gsl_matrix.h @@ -0,0 +1,25 @@ +#ifndef __GSL_MATRIX_H__ +#define __GSL_MATRIX_H__ + +#include +#include +#include + +#include +#include +#include + +#include +#include + +#include +#include + +#include +#include + +#include +#include + + +#endif /* __GSL_MATRIX_H__ */ diff --git a/gsl-2.5/matrix/gsl_matrix_char.h b/gsl-2.5/matrix/gsl_matrix_char.h new file mode 100644 index 00000000..7e81de30 --- /dev/null +++ b/gsl-2.5/matrix/gsl_matrix_char.h @@ -0,0 +1,352 @@ +/* matrix/gsl_matrix_char.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_MATRIX_CHAR_H__ +#define __GSL_MATRIX_CHAR_H__ + +#include +#include +#include +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +typedef struct +{ + size_t size1; + size_t size2; + size_t tda; + char * data; + gsl_block_char * block; + int owner; +} gsl_matrix_char; + +typedef struct +{ + gsl_matrix_char matrix; +} _gsl_matrix_char_view; + +typedef _gsl_matrix_char_view gsl_matrix_char_view; + +typedef struct +{ + gsl_matrix_char matrix; +} _gsl_matrix_char_const_view; + +typedef const _gsl_matrix_char_const_view gsl_matrix_char_const_view; + +/* Allocation */ + +gsl_matrix_char * +gsl_matrix_char_alloc (const size_t n1, const size_t n2); + +gsl_matrix_char * +gsl_matrix_char_calloc (const size_t n1, const size_t n2); + +gsl_matrix_char * +gsl_matrix_char_alloc_from_block (gsl_block_char * b, + const size_t offset, + const size_t n1, + const size_t n2, + const size_t d2); + +gsl_matrix_char * +gsl_matrix_char_alloc_from_matrix (gsl_matrix_char * m, + const size_t k1, + const size_t k2, + const size_t n1, + const size_t n2); + +gsl_vector_char * +gsl_vector_char_alloc_row_from_matrix (gsl_matrix_char * m, + const size_t i); + +gsl_vector_char * +gsl_vector_char_alloc_col_from_matrix (gsl_matrix_char * m, + const size_t j); + +void gsl_matrix_char_free (gsl_matrix_char * m); + +/* Views */ + +_gsl_matrix_char_view +gsl_matrix_char_submatrix (gsl_matrix_char * m, + const size_t i, const size_t j, + const size_t n1, const size_t n2); + +_gsl_vector_char_view +gsl_matrix_char_row (gsl_matrix_char * m, const size_t i); + +_gsl_vector_char_view +gsl_matrix_char_column (gsl_matrix_char * m, const size_t j); + +_gsl_vector_char_view +gsl_matrix_char_diagonal (gsl_matrix_char * m); + +_gsl_vector_char_view +gsl_matrix_char_subdiagonal (gsl_matrix_char * m, const size_t k); + +_gsl_vector_char_view +gsl_matrix_char_superdiagonal (gsl_matrix_char * m, const size_t k); + +_gsl_vector_char_view +gsl_matrix_char_subrow (gsl_matrix_char * m, const size_t i, + const size_t offset, const size_t n); + +_gsl_vector_char_view +gsl_matrix_char_subcolumn (gsl_matrix_char * m, const size_t j, + const size_t offset, const size_t n); + +_gsl_matrix_char_view +gsl_matrix_char_view_array (char * base, + const size_t n1, + const size_t n2); + +_gsl_matrix_char_view +gsl_matrix_char_view_array_with_tda (char * base, + const size_t n1, + const size_t n2, + const size_t tda); + + +_gsl_matrix_char_view +gsl_matrix_char_view_vector (gsl_vector_char * v, + const size_t n1, + const size_t n2); + +_gsl_matrix_char_view +gsl_matrix_char_view_vector_with_tda (gsl_vector_char * v, + const size_t n1, + const size_t n2, + const size_t tda); + + +_gsl_matrix_char_const_view +gsl_matrix_char_const_submatrix (const gsl_matrix_char * m, + const size_t i, const size_t j, + const size_t n1, const size_t n2); + +_gsl_vector_char_const_view +gsl_matrix_char_const_row (const gsl_matrix_char * m, + const size_t i); + +_gsl_vector_char_const_view +gsl_matrix_char_const_column (const gsl_matrix_char * m, + const size_t j); + +_gsl_vector_char_const_view +gsl_matrix_char_const_diagonal (const gsl_matrix_char * m); + +_gsl_vector_char_const_view +gsl_matrix_char_const_subdiagonal (const gsl_matrix_char * m, + const size_t k); + +_gsl_vector_char_const_view +gsl_matrix_char_const_superdiagonal (const gsl_matrix_char * m, + const size_t k); + +_gsl_vector_char_const_view +gsl_matrix_char_const_subrow (const gsl_matrix_char * m, const size_t i, + const size_t offset, const size_t n); + +_gsl_vector_char_const_view +gsl_matrix_char_const_subcolumn (const gsl_matrix_char * m, const size_t j, + const size_t offset, const size_t n); + +_gsl_matrix_char_const_view +gsl_matrix_char_const_view_array (const char * base, + const size_t n1, + const size_t n2); + +_gsl_matrix_char_const_view +gsl_matrix_char_const_view_array_with_tda (const char * base, + const size_t n1, + const size_t n2, + const size_t tda); + +_gsl_matrix_char_const_view +gsl_matrix_char_const_view_vector (const gsl_vector_char * v, + const size_t n1, + const size_t n2); + +_gsl_matrix_char_const_view +gsl_matrix_char_const_view_vector_with_tda (const gsl_vector_char * v, + const size_t n1, + const size_t n2, + const size_t tda); + +/* Operations */ + +void gsl_matrix_char_set_zero (gsl_matrix_char * m); +void gsl_matrix_char_set_identity (gsl_matrix_char * m); +void gsl_matrix_char_set_all (gsl_matrix_char * m, char x); + +int gsl_matrix_char_fread (FILE * stream, gsl_matrix_char * m) ; +int gsl_matrix_char_fwrite (FILE * stream, const gsl_matrix_char * m) ; +int gsl_matrix_char_fscanf (FILE * stream, gsl_matrix_char * m); +int gsl_matrix_char_fprintf (FILE * stream, const gsl_matrix_char * m, const char * format); + +int gsl_matrix_char_memcpy(gsl_matrix_char * dest, const gsl_matrix_char * src); +int gsl_matrix_char_swap(gsl_matrix_char * m1, gsl_matrix_char * m2); +int gsl_matrix_char_tricpy(const char uplo_src, const int copy_diag, gsl_matrix_char * dest, const gsl_matrix_char * src); + +int gsl_matrix_char_swap_rows(gsl_matrix_char * m, const size_t i, const size_t j); +int gsl_matrix_char_swap_columns(gsl_matrix_char * m, const size_t i, const size_t j); +int gsl_matrix_char_swap_rowcol(gsl_matrix_char * m, const size_t i, const size_t j); +int gsl_matrix_char_transpose (gsl_matrix_char * m); +int gsl_matrix_char_transpose_memcpy (gsl_matrix_char * dest, const gsl_matrix_char * src); +int gsl_matrix_char_transpose_tricpy (const char uplo_src, const int copy_diag, gsl_matrix_char * dest, const gsl_matrix_char * src); + +char gsl_matrix_char_max (const gsl_matrix_char * m); +char gsl_matrix_char_min (const gsl_matrix_char * m); +void gsl_matrix_char_minmax (const gsl_matrix_char * m, char * min_out, char * max_out); + +void gsl_matrix_char_max_index (const gsl_matrix_char * m, size_t * imax, size_t *jmax); +void gsl_matrix_char_min_index (const gsl_matrix_char * m, size_t * imin, size_t *jmin); +void gsl_matrix_char_minmax_index (const gsl_matrix_char * m, size_t * imin, size_t * jmin, size_t * imax, size_t * jmax); + +int gsl_matrix_char_equal (const gsl_matrix_char * a, const gsl_matrix_char * b); + +int gsl_matrix_char_isnull (const gsl_matrix_char * m); +int gsl_matrix_char_ispos (const gsl_matrix_char * m); +int gsl_matrix_char_isneg (const gsl_matrix_char * m); +int gsl_matrix_char_isnonneg (const gsl_matrix_char * m); + +int gsl_matrix_char_add (gsl_matrix_char * a, const gsl_matrix_char * b); +int gsl_matrix_char_sub (gsl_matrix_char * a, const gsl_matrix_char * b); +int gsl_matrix_char_mul_elements (gsl_matrix_char * a, const gsl_matrix_char * b); +int gsl_matrix_char_div_elements (gsl_matrix_char * a, const gsl_matrix_char * b); +int gsl_matrix_char_scale (gsl_matrix_char * a, const double x); +int gsl_matrix_char_add_constant (gsl_matrix_char * a, const double x); +int gsl_matrix_char_add_diagonal (gsl_matrix_char * a, const double x); + +/***********************************************************************/ +/* The functions below are obsolete */ +/***********************************************************************/ +int gsl_matrix_char_get_row(gsl_vector_char * v, const gsl_matrix_char * m, const size_t i); +int gsl_matrix_char_get_col(gsl_vector_char * v, const gsl_matrix_char * m, const size_t j); +int gsl_matrix_char_set_row(gsl_matrix_char * m, const size_t i, const gsl_vector_char * v); +int gsl_matrix_char_set_col(gsl_matrix_char * m, const size_t j, const gsl_vector_char * v); +/***********************************************************************/ + +/* inline functions if you are using GCC */ + +INLINE_DECL char gsl_matrix_char_get(const gsl_matrix_char * m, const size_t i, const size_t j); +INLINE_DECL void gsl_matrix_char_set(gsl_matrix_char * m, const size_t i, const size_t j, const char x); +INLINE_DECL char * gsl_matrix_char_ptr(gsl_matrix_char * m, const size_t i, const size_t j); +INLINE_DECL const char * gsl_matrix_char_const_ptr(const gsl_matrix_char * m, const size_t i, const size_t j); + +#ifdef HAVE_INLINE +INLINE_FUN +char +gsl_matrix_char_get(const gsl_matrix_char * m, const size_t i, const size_t j) +{ +#if GSL_RANGE_CHECK + if (GSL_RANGE_COND(1)) + { + if (i >= m->size1) + { + GSL_ERROR_VAL("first index out of range", GSL_EINVAL, 0) ; + } + else if (j >= m->size2) + { + GSL_ERROR_VAL("second index out of range", GSL_EINVAL, 0) ; + } + } +#endif + return m->data[i * m->tda + j] ; +} + +INLINE_FUN +void +gsl_matrix_char_set(gsl_matrix_char * m, const size_t i, const size_t j, const char x) +{ +#if GSL_RANGE_CHECK + if (GSL_RANGE_COND(1)) + { + if (i >= m->size1) + { + GSL_ERROR_VOID("first index out of range", GSL_EINVAL) ; + } + else if (j >= m->size2) + { + GSL_ERROR_VOID("second index out of range", GSL_EINVAL) ; + } + } +#endif + m->data[i * m->tda + j] = x ; +} + +INLINE_FUN +char * +gsl_matrix_char_ptr(gsl_matrix_char * m, const size_t i, const size_t j) +{ +#if GSL_RANGE_CHECK + if (GSL_RANGE_COND(1)) + { + if (i >= m->size1) + { + GSL_ERROR_NULL("first index out of range", GSL_EINVAL) ; + } + else if (j >= m->size2) + { + GSL_ERROR_NULL("second index out of range", GSL_EINVAL) ; + } + } +#endif + return (char *) (m->data + (i * m->tda + j)) ; +} + +INLINE_FUN +const char * +gsl_matrix_char_const_ptr(const gsl_matrix_char * m, const size_t i, const size_t j) +{ +#if GSL_RANGE_CHECK + if (GSL_RANGE_COND(1)) + { + if (i >= m->size1) + { + GSL_ERROR_NULL("first index out of range", GSL_EINVAL) ; + } + else if (j >= m->size2) + { + GSL_ERROR_NULL("second index out of range", GSL_EINVAL) ; + } + } +#endif + return (const char *) (m->data + (i * m->tda + j)) ; +} + +#endif + +__END_DECLS + +#endif /* __GSL_MATRIX_CHAR_H__ */ diff --git a/gsl-2.5/matrix/gsl_matrix_complex_double.h b/gsl-2.5/matrix/gsl_matrix_complex_double.h new file mode 100644 index 00000000..3b879138 --- /dev/null +++ b/gsl-2.5/matrix/gsl_matrix_complex_double.h @@ -0,0 +1,353 @@ +/* matrix/gsl_matrix_complex_double.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_MATRIX_COMPLEX_DOUBLE_H__ +#define __GSL_MATRIX_COMPLEX_DOUBLE_H__ + +#include +#include +#include +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +typedef struct +{ + size_t size1; + size_t size2; + size_t tda; + double * data; + gsl_block_complex * block; + int owner; +} gsl_matrix_complex ; + +typedef struct +{ + gsl_matrix_complex matrix; +} _gsl_matrix_complex_view; + +typedef _gsl_matrix_complex_view gsl_matrix_complex_view; + +typedef struct +{ + gsl_matrix_complex matrix; +} _gsl_matrix_complex_const_view; + +typedef const _gsl_matrix_complex_const_view gsl_matrix_complex_const_view; + + +/* Allocation */ + +gsl_matrix_complex * +gsl_matrix_complex_alloc (const size_t n1, const size_t n2); + +gsl_matrix_complex * +gsl_matrix_complex_calloc (const size_t n1, const size_t n2); + +gsl_matrix_complex * +gsl_matrix_complex_alloc_from_block (gsl_block_complex * b, + const size_t offset, + const size_t n1, const size_t n2, const size_t d2); + +gsl_matrix_complex * +gsl_matrix_complex_alloc_from_matrix (gsl_matrix_complex * b, + const size_t k1, const size_t k2, + const size_t n1, const size_t n2); + +gsl_vector_complex * +gsl_vector_complex_alloc_row_from_matrix (gsl_matrix_complex * m, + const size_t i); + +gsl_vector_complex * +gsl_vector_complex_alloc_col_from_matrix (gsl_matrix_complex * m, + const size_t j); + +void gsl_matrix_complex_free (gsl_matrix_complex * m); + +/* Views */ + +_gsl_matrix_complex_view +gsl_matrix_complex_submatrix (gsl_matrix_complex * m, + const size_t i, const size_t j, + const size_t n1, const size_t n2); + +_gsl_vector_complex_view +gsl_matrix_complex_row (gsl_matrix_complex * m, const size_t i); + +_gsl_vector_complex_view +gsl_matrix_complex_column (gsl_matrix_complex * m, const size_t j); + +_gsl_vector_complex_view +gsl_matrix_complex_diagonal (gsl_matrix_complex * m); + +_gsl_vector_complex_view +gsl_matrix_complex_subdiagonal (gsl_matrix_complex * m, const size_t k); + +_gsl_vector_complex_view +gsl_matrix_complex_superdiagonal (gsl_matrix_complex * m, const size_t k); + +_gsl_vector_complex_view +gsl_matrix_complex_subrow (gsl_matrix_complex * m, + const size_t i, const size_t offset, + const size_t n); + +_gsl_vector_complex_view +gsl_matrix_complex_subcolumn (gsl_matrix_complex * m, + const size_t j, const size_t offset, + const size_t n); + +_gsl_matrix_complex_view +gsl_matrix_complex_view_array (double * base, + const size_t n1, + const size_t n2); + +_gsl_matrix_complex_view +gsl_matrix_complex_view_array_with_tda (double * base, + const size_t n1, + const size_t n2, + const size_t tda); + +_gsl_matrix_complex_view +gsl_matrix_complex_view_vector (gsl_vector_complex * v, + const size_t n1, + const size_t n2); + +_gsl_matrix_complex_view +gsl_matrix_complex_view_vector_with_tda (gsl_vector_complex * v, + const size_t n1, + const size_t n2, + const size_t tda); + + +_gsl_matrix_complex_const_view +gsl_matrix_complex_const_submatrix (const gsl_matrix_complex * m, + const size_t i, const size_t j, + const size_t n1, const size_t n2); + +_gsl_vector_complex_const_view +gsl_matrix_complex_const_row (const gsl_matrix_complex * m, + const size_t i); + +_gsl_vector_complex_const_view +gsl_matrix_complex_const_column (const gsl_matrix_complex * m, + const size_t j); + +_gsl_vector_complex_const_view +gsl_matrix_complex_const_diagonal (const gsl_matrix_complex * m); + +_gsl_vector_complex_const_view +gsl_matrix_complex_const_subdiagonal (const gsl_matrix_complex * m, + const size_t k); + +_gsl_vector_complex_const_view +gsl_matrix_complex_const_superdiagonal (const gsl_matrix_complex * m, + const size_t k); + +_gsl_vector_complex_const_view +gsl_matrix_complex_const_subrow (const gsl_matrix_complex * m, + const size_t i, const size_t offset, + const size_t n); + +_gsl_vector_complex_const_view +gsl_matrix_complex_const_subcolumn (const gsl_matrix_complex * m, + const size_t j, const size_t offset, + const size_t n); + +_gsl_matrix_complex_const_view +gsl_matrix_complex_const_view_array (const double * base, + const size_t n1, + const size_t n2); + +_gsl_matrix_complex_const_view +gsl_matrix_complex_const_view_array_with_tda (const double * base, + const size_t n1, + const size_t n2, + const size_t tda); + +_gsl_matrix_complex_const_view +gsl_matrix_complex_const_view_vector (const gsl_vector_complex * v, + const size_t n1, + const size_t n2); + +_gsl_matrix_complex_const_view +gsl_matrix_complex_const_view_vector_with_tda (const gsl_vector_complex * v, + const size_t n1, + const size_t n2, + const size_t tda); + +/* Operations */ + +void gsl_matrix_complex_set_zero (gsl_matrix_complex * m); +void gsl_matrix_complex_set_identity (gsl_matrix_complex * m); +void gsl_matrix_complex_set_all (gsl_matrix_complex * m, gsl_complex x); + +int gsl_matrix_complex_fread (FILE * stream, gsl_matrix_complex * m) ; +int gsl_matrix_complex_fwrite (FILE * stream, const gsl_matrix_complex * m) ; +int gsl_matrix_complex_fscanf (FILE * stream, gsl_matrix_complex * m); +int gsl_matrix_complex_fprintf (FILE * stream, const gsl_matrix_complex * m, const char * format); + +int gsl_matrix_complex_memcpy(gsl_matrix_complex * dest, const gsl_matrix_complex * src); +int gsl_matrix_complex_swap(gsl_matrix_complex * m1, gsl_matrix_complex * m2); +int gsl_matrix_complex_tricpy(const char uplo_src, const int copy_diag, gsl_matrix_complex * dest, const gsl_matrix_complex * src); + +int gsl_matrix_complex_swap_rows(gsl_matrix_complex * m, const size_t i, const size_t j); +int gsl_matrix_complex_swap_columns(gsl_matrix_complex * m, const size_t i, const size_t j); +int gsl_matrix_complex_swap_rowcol(gsl_matrix_complex * m, const size_t i, const size_t j); + +int gsl_matrix_complex_transpose (gsl_matrix_complex * m); +int gsl_matrix_complex_transpose_memcpy (gsl_matrix_complex * dest, const gsl_matrix_complex * src); +int gsl_matrix_complex_transpose_tricpy(const char uplo_src, const int copy_diag, gsl_matrix_complex * dest, const gsl_matrix_complex * src); + +int gsl_matrix_complex_equal (const gsl_matrix_complex * a, const gsl_matrix_complex * b); + +int gsl_matrix_complex_isnull (const gsl_matrix_complex * m); +int gsl_matrix_complex_ispos (const gsl_matrix_complex * m); +int gsl_matrix_complex_isneg (const gsl_matrix_complex * m); +int gsl_matrix_complex_isnonneg (const gsl_matrix_complex * m); + +int gsl_matrix_complex_add (gsl_matrix_complex * a, const gsl_matrix_complex * b); +int gsl_matrix_complex_sub (gsl_matrix_complex * a, const gsl_matrix_complex * b); +int gsl_matrix_complex_mul_elements (gsl_matrix_complex * a, const gsl_matrix_complex * b); +int gsl_matrix_complex_div_elements (gsl_matrix_complex * a, const gsl_matrix_complex * b); +int gsl_matrix_complex_scale (gsl_matrix_complex * a, const gsl_complex x); +int gsl_matrix_complex_add_constant (gsl_matrix_complex * a, const gsl_complex x); +int gsl_matrix_complex_add_diagonal (gsl_matrix_complex * a, const gsl_complex x); + +/***********************************************************************/ +/* The functions below are obsolete */ +/***********************************************************************/ +int gsl_matrix_complex_get_row(gsl_vector_complex * v, const gsl_matrix_complex * m, const size_t i); +int gsl_matrix_complex_get_col(gsl_vector_complex * v, const gsl_matrix_complex * m, const size_t j); +int gsl_matrix_complex_set_row(gsl_matrix_complex * m, const size_t i, const gsl_vector_complex * v); +int gsl_matrix_complex_set_col(gsl_matrix_complex * m, const size_t j, const gsl_vector_complex * v); +/***********************************************************************/ + +/* inline functions if you are using GCC */ + +INLINE_DECL gsl_complex gsl_matrix_complex_get(const gsl_matrix_complex * m, const size_t i, const size_t j); +INLINE_DECL void gsl_matrix_complex_set(gsl_matrix_complex * m, const size_t i, const size_t j, const gsl_complex x); + +INLINE_DECL gsl_complex * gsl_matrix_complex_ptr(gsl_matrix_complex * m, const size_t i, const size_t j); +INLINE_DECL const gsl_complex * gsl_matrix_complex_const_ptr(const gsl_matrix_complex * m, const size_t i, const size_t j); + +#ifdef HAVE_INLINE + +INLINE_FUN +gsl_complex +gsl_matrix_complex_get(const gsl_matrix_complex * m, + const size_t i, const size_t j) +{ +#if GSL_RANGE_CHECK + if (GSL_RANGE_COND(1)) + { + gsl_complex zero = {{0,0}}; + + if (i >= m->size1) + { + GSL_ERROR_VAL("first index out of range", GSL_EINVAL, zero) ; + } + else if (j >= m->size2) + { + GSL_ERROR_VAL("second index out of range", GSL_EINVAL, zero) ; + } + } +#endif + return *(gsl_complex *)(m->data + 2*(i * m->tda + j)) ; +} + +INLINE_FUN +void +gsl_matrix_complex_set(gsl_matrix_complex * m, + const size_t i, const size_t j, const gsl_complex x) +{ +#if GSL_RANGE_CHECK + if (GSL_RANGE_COND(1)) + { + if (i >= m->size1) + { + GSL_ERROR_VOID("first index out of range", GSL_EINVAL) ; + } + else if (j >= m->size2) + { + GSL_ERROR_VOID("second index out of range", GSL_EINVAL) ; + } + } +#endif + *(gsl_complex *)(m->data + 2*(i * m->tda + j)) = x ; +} + +INLINE_FUN +gsl_complex * +gsl_matrix_complex_ptr(gsl_matrix_complex * m, + const size_t i, const size_t j) +{ +#if GSL_RANGE_CHECK + if (GSL_RANGE_COND(1)) + { + if (i >= m->size1) + { + GSL_ERROR_NULL("first index out of range", GSL_EINVAL) ; + } + else if (j >= m->size2) + { + GSL_ERROR_NULL("second index out of range", GSL_EINVAL) ; + } + } +#endif + return (gsl_complex *)(m->data + 2*(i * m->tda + j)) ; +} + +INLINE_FUN +const gsl_complex * +gsl_matrix_complex_const_ptr(const gsl_matrix_complex * m, + const size_t i, const size_t j) +{ +#if GSL_RANGE_CHECK + if (GSL_RANGE_COND(1)) + { + if (i >= m->size1) + { + GSL_ERROR_NULL("first index out of range", GSL_EINVAL) ; + } + else if (j >= m->size2) + { + GSL_ERROR_NULL("second index out of range", GSL_EINVAL) ; + } + } +#endif + return (const gsl_complex *)(m->data + 2*(i * m->tda + j)) ; +} + +#endif /* HAVE_INLINE */ + +__END_DECLS + +#endif /* __GSL_MATRIX_COMPLEX_DOUBLE_H__ */ diff --git a/gsl-2.5/matrix/gsl_matrix_complex_float.h b/gsl-2.5/matrix/gsl_matrix_complex_float.h new file mode 100644 index 00000000..c91eb19e --- /dev/null +++ b/gsl-2.5/matrix/gsl_matrix_complex_float.h @@ -0,0 +1,353 @@ +/* matrix/gsl_matrix_complex_float.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_MATRIX_COMPLEX_FLOAT_H__ +#define __GSL_MATRIX_COMPLEX_FLOAT_H__ + +#include +#include +#include +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +typedef struct +{ + size_t size1; + size_t size2; + size_t tda; + float * data; + gsl_block_complex_float * block; + int owner; +} gsl_matrix_complex_float ; + +typedef struct +{ + gsl_matrix_complex_float matrix; +} _gsl_matrix_complex_float_view; + +typedef _gsl_matrix_complex_float_view gsl_matrix_complex_float_view; + +typedef struct +{ + gsl_matrix_complex_float matrix; +} _gsl_matrix_complex_float_const_view; + +typedef const _gsl_matrix_complex_float_const_view gsl_matrix_complex_float_const_view; + + +/* Allocation */ + +gsl_matrix_complex_float * +gsl_matrix_complex_float_alloc (const size_t n1, const size_t n2); + +gsl_matrix_complex_float * +gsl_matrix_complex_float_calloc (const size_t n1, const size_t n2); + +gsl_matrix_complex_float * +gsl_matrix_complex_float_alloc_from_block (gsl_block_complex_float * b, + const size_t offset, + const size_t n1, const size_t n2, const size_t d2); + +gsl_matrix_complex_float * +gsl_matrix_complex_float_alloc_from_matrix (gsl_matrix_complex_float * b, + const size_t k1, const size_t k2, + const size_t n1, const size_t n2); + +gsl_vector_complex_float * +gsl_vector_complex_float_alloc_row_from_matrix (gsl_matrix_complex_float * m, + const size_t i); + +gsl_vector_complex_float * +gsl_vector_complex_float_alloc_col_from_matrix (gsl_matrix_complex_float * m, + const size_t j); + +void gsl_matrix_complex_float_free (gsl_matrix_complex_float * m); + +/* Views */ + +_gsl_matrix_complex_float_view +gsl_matrix_complex_float_submatrix (gsl_matrix_complex_float * m, + const size_t i, const size_t j, + const size_t n1, const size_t n2); + +_gsl_vector_complex_float_view +gsl_matrix_complex_float_row (gsl_matrix_complex_float * m, const size_t i); + +_gsl_vector_complex_float_view +gsl_matrix_complex_float_column (gsl_matrix_complex_float * m, const size_t j); + +_gsl_vector_complex_float_view +gsl_matrix_complex_float_diagonal (gsl_matrix_complex_float * m); + +_gsl_vector_complex_float_view +gsl_matrix_complex_float_subdiagonal (gsl_matrix_complex_float * m, const size_t k); + +_gsl_vector_complex_float_view +gsl_matrix_complex_float_superdiagonal (gsl_matrix_complex_float * m, const size_t k); + +_gsl_vector_complex_float_view +gsl_matrix_complex_float_subrow (gsl_matrix_complex_float * m, + const size_t i, const size_t offset, + const size_t n); + +_gsl_vector_complex_float_view +gsl_matrix_complex_float_subcolumn (gsl_matrix_complex_float * m, + const size_t j, const size_t offset, + const size_t n); + +_gsl_matrix_complex_float_view +gsl_matrix_complex_float_view_array (float * base, + const size_t n1, + const size_t n2); + +_gsl_matrix_complex_float_view +gsl_matrix_complex_float_view_array_with_tda (float * base, + const size_t n1, + const size_t n2, + const size_t tda); + +_gsl_matrix_complex_float_view +gsl_matrix_complex_float_view_vector (gsl_vector_complex_float * v, + const size_t n1, + const size_t n2); + +_gsl_matrix_complex_float_view +gsl_matrix_complex_float_view_vector_with_tda (gsl_vector_complex_float * v, + const size_t n1, + const size_t n2, + const size_t tda); + + +_gsl_matrix_complex_float_const_view +gsl_matrix_complex_float_const_submatrix (const gsl_matrix_complex_float * m, + const size_t i, const size_t j, + const size_t n1, const size_t n2); + +_gsl_vector_complex_float_const_view +gsl_matrix_complex_float_const_row (const gsl_matrix_complex_float * m, + const size_t i); + +_gsl_vector_complex_float_const_view +gsl_matrix_complex_float_const_column (const gsl_matrix_complex_float * m, + const size_t j); + +_gsl_vector_complex_float_const_view +gsl_matrix_complex_float_const_diagonal (const gsl_matrix_complex_float * m); + +_gsl_vector_complex_float_const_view +gsl_matrix_complex_float_const_subdiagonal (const gsl_matrix_complex_float * m, + const size_t k); + +_gsl_vector_complex_float_const_view +gsl_matrix_complex_float_const_superdiagonal (const gsl_matrix_complex_float * m, + const size_t k); + +_gsl_vector_complex_float_const_view +gsl_matrix_complex_float_const_subrow (const gsl_matrix_complex_float * m, + const size_t i, const size_t offset, + const size_t n); + +_gsl_vector_complex_float_const_view +gsl_matrix_complex_float_const_subcolumn (const gsl_matrix_complex_float * m, + const size_t j, const size_t offset, + const size_t n); + +_gsl_matrix_complex_float_const_view +gsl_matrix_complex_float_const_view_array (const float * base, + const size_t n1, + const size_t n2); + +_gsl_matrix_complex_float_const_view +gsl_matrix_complex_float_const_view_array_with_tda (const float * base, + const size_t n1, + const size_t n2, + const size_t tda); + +_gsl_matrix_complex_float_const_view +gsl_matrix_complex_float_const_view_vector (const gsl_vector_complex_float * v, + const size_t n1, + const size_t n2); + +_gsl_matrix_complex_float_const_view +gsl_matrix_complex_float_const_view_vector_with_tda (const gsl_vector_complex_float * v, + const size_t n1, + const size_t n2, + const size_t tda); + +/* Operations */ + +void gsl_matrix_complex_float_set_zero (gsl_matrix_complex_float * m); +void gsl_matrix_complex_float_set_identity (gsl_matrix_complex_float * m); +void gsl_matrix_complex_float_set_all (gsl_matrix_complex_float * m, gsl_complex_float x); + +int gsl_matrix_complex_float_fread (FILE * stream, gsl_matrix_complex_float * m) ; +int gsl_matrix_complex_float_fwrite (FILE * stream, const gsl_matrix_complex_float * m) ; +int gsl_matrix_complex_float_fscanf (FILE * stream, gsl_matrix_complex_float * m); +int gsl_matrix_complex_float_fprintf (FILE * stream, const gsl_matrix_complex_float * m, const char * format); + +int gsl_matrix_complex_float_memcpy(gsl_matrix_complex_float * dest, const gsl_matrix_complex_float * src); +int gsl_matrix_complex_float_swap(gsl_matrix_complex_float * m1, gsl_matrix_complex_float * m2); +int gsl_matrix_complex_float_tricpy(const char uplo_src, const int copy_diag, gsl_matrix_complex_float * dest, const gsl_matrix_complex_float * src); + +int gsl_matrix_complex_float_swap_rows(gsl_matrix_complex_float * m, const size_t i, const size_t j); +int gsl_matrix_complex_float_swap_columns(gsl_matrix_complex_float * m, const size_t i, const size_t j); +int gsl_matrix_complex_float_swap_rowcol(gsl_matrix_complex_float * m, const size_t i, const size_t j); + +int gsl_matrix_complex_float_transpose (gsl_matrix_complex_float * m); +int gsl_matrix_complex_float_transpose_memcpy (gsl_matrix_complex_float * dest, const gsl_matrix_complex_float * src); +int gsl_matrix_complex_float_transpose_tricpy(const char uplo_src, const int copy_diag, gsl_matrix_complex_float * dest, const gsl_matrix_complex_float * src); + +int gsl_matrix_complex_float_equal (const gsl_matrix_complex_float * a, const gsl_matrix_complex_float * b); + +int gsl_matrix_complex_float_isnull (const gsl_matrix_complex_float * m); +int gsl_matrix_complex_float_ispos (const gsl_matrix_complex_float * m); +int gsl_matrix_complex_float_isneg (const gsl_matrix_complex_float * m); +int gsl_matrix_complex_float_isnonneg (const gsl_matrix_complex_float * m); + +int gsl_matrix_complex_float_add (gsl_matrix_complex_float * a, const gsl_matrix_complex_float * b); +int gsl_matrix_complex_float_sub (gsl_matrix_complex_float * a, const gsl_matrix_complex_float * b); +int gsl_matrix_complex_float_mul_elements (gsl_matrix_complex_float * a, const gsl_matrix_complex_float * b); +int gsl_matrix_complex_float_div_elements (gsl_matrix_complex_float * a, const gsl_matrix_complex_float * b); +int gsl_matrix_complex_float_scale (gsl_matrix_complex_float * a, const gsl_complex_float x); +int gsl_matrix_complex_float_add_constant (gsl_matrix_complex_float * a, const gsl_complex_float x); +int gsl_matrix_complex_float_add_diagonal (gsl_matrix_complex_float * a, const gsl_complex_float x); + +/***********************************************************************/ +/* The functions below are obsolete */ +/***********************************************************************/ +int gsl_matrix_complex_float_get_row(gsl_vector_complex_float * v, const gsl_matrix_complex_float * m, const size_t i); +int gsl_matrix_complex_float_get_col(gsl_vector_complex_float * v, const gsl_matrix_complex_float * m, const size_t j); +int gsl_matrix_complex_float_set_row(gsl_matrix_complex_float * m, const size_t i, const gsl_vector_complex_float * v); +int gsl_matrix_complex_float_set_col(gsl_matrix_complex_float * m, const size_t j, const gsl_vector_complex_float * v); +/***********************************************************************/ + +/* inline functions if you are using GCC */ + +INLINE_DECL gsl_complex_float gsl_matrix_complex_float_get(const gsl_matrix_complex_float * m, const size_t i, const size_t j); +INLINE_DECL void gsl_matrix_complex_float_set(gsl_matrix_complex_float * m, const size_t i, const size_t j, const gsl_complex_float x); + +INLINE_DECL gsl_complex_float * gsl_matrix_complex_float_ptr(gsl_matrix_complex_float * m, const size_t i, const size_t j); +INLINE_DECL const gsl_complex_float * gsl_matrix_complex_float_const_ptr(const gsl_matrix_complex_float * m, const size_t i, const size_t j); + +#ifdef HAVE_INLINE + +INLINE_FUN +gsl_complex_float +gsl_matrix_complex_float_get(const gsl_matrix_complex_float * m, + const size_t i, const size_t j) +{ +#if GSL_RANGE_CHECK + if (GSL_RANGE_COND(1)) + { + gsl_complex_float zero = {{0,0}}; + + if (i >= m->size1) + { + GSL_ERROR_VAL("first index out of range", GSL_EINVAL, zero) ; + } + else if (j >= m->size2) + { + GSL_ERROR_VAL("second index out of range", GSL_EINVAL, zero) ; + } + } +#endif + return *(gsl_complex_float *)(m->data + 2*(i * m->tda + j)) ; +} + +INLINE_FUN +void +gsl_matrix_complex_float_set(gsl_matrix_complex_float * m, + const size_t i, const size_t j, const gsl_complex_float x) +{ +#if GSL_RANGE_CHECK + if (GSL_RANGE_COND(1)) + { + if (i >= m->size1) + { + GSL_ERROR_VOID("first index out of range", GSL_EINVAL) ; + } + else if (j >= m->size2) + { + GSL_ERROR_VOID("second index out of range", GSL_EINVAL) ; + } + } +#endif + *(gsl_complex_float *)(m->data + 2*(i * m->tda + j)) = x ; +} + +INLINE_FUN +gsl_complex_float * +gsl_matrix_complex_float_ptr(gsl_matrix_complex_float * m, + const size_t i, const size_t j) +{ +#if GSL_RANGE_CHECK + if (GSL_RANGE_COND(1)) + { + if (i >= m->size1) + { + GSL_ERROR_NULL("first index out of range", GSL_EINVAL) ; + } + else if (j >= m->size2) + { + GSL_ERROR_NULL("second index out of range", GSL_EINVAL) ; + } + } +#endif + return (gsl_complex_float *)(m->data + 2*(i * m->tda + j)) ; +} + +INLINE_FUN +const gsl_complex_float * +gsl_matrix_complex_float_const_ptr(const gsl_matrix_complex_float * m, + const size_t i, const size_t j) +{ +#if GSL_RANGE_CHECK + if (GSL_RANGE_COND(1)) + { + if (i >= m->size1) + { + GSL_ERROR_NULL("first index out of range", GSL_EINVAL) ; + } + else if (j >= m->size2) + { + GSL_ERROR_NULL("second index out of range", GSL_EINVAL) ; + } + } +#endif + return (const gsl_complex_float *)(m->data + 2*(i * m->tda + j)) ; +} + +#endif /* HAVE_INLINE */ + +__END_DECLS + +#endif /* __GSL_MATRIX_COMPLEX_FLOAT_H__ */ diff --git a/gsl-2.5/matrix/gsl_matrix_complex_long_double.h b/gsl-2.5/matrix/gsl_matrix_complex_long_double.h new file mode 100644 index 00000000..58314ffa --- /dev/null +++ b/gsl-2.5/matrix/gsl_matrix_complex_long_double.h @@ -0,0 +1,353 @@ +/* matrix/gsl_matrix_complex_long_double.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_MATRIX_COMPLEX_LONG_DOUBLE_H__ +#define __GSL_MATRIX_COMPLEX_LONG_DOUBLE_H__ + +#include +#include +#include +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +typedef struct +{ + size_t size1; + size_t size2; + size_t tda; + long double * data; + gsl_block_complex_long_double * block; + int owner; +} gsl_matrix_complex_long_double ; + +typedef struct +{ + gsl_matrix_complex_long_double matrix; +} _gsl_matrix_complex_long_double_view; + +typedef _gsl_matrix_complex_long_double_view gsl_matrix_complex_long_double_view; + +typedef struct +{ + gsl_matrix_complex_long_double matrix; +} _gsl_matrix_complex_long_double_const_view; + +typedef const _gsl_matrix_complex_long_double_const_view gsl_matrix_complex_long_double_const_view; + + +/* Allocation */ + +gsl_matrix_complex_long_double * +gsl_matrix_complex_long_double_alloc (const size_t n1, const size_t n2); + +gsl_matrix_complex_long_double * +gsl_matrix_complex_long_double_calloc (const size_t n1, const size_t n2); + +gsl_matrix_complex_long_double * +gsl_matrix_complex_long_double_alloc_from_block (gsl_block_complex_long_double * b, + const size_t offset, + const size_t n1, const size_t n2, const size_t d2); + +gsl_matrix_complex_long_double * +gsl_matrix_complex_long_double_alloc_from_matrix (gsl_matrix_complex_long_double * b, + const size_t k1, const size_t k2, + const size_t n1, const size_t n2); + +gsl_vector_complex_long_double * +gsl_vector_complex_long_double_alloc_row_from_matrix (gsl_matrix_complex_long_double * m, + const size_t i); + +gsl_vector_complex_long_double * +gsl_vector_complex_long_double_alloc_col_from_matrix (gsl_matrix_complex_long_double * m, + const size_t j); + +void gsl_matrix_complex_long_double_free (gsl_matrix_complex_long_double * m); + +/* Views */ + +_gsl_matrix_complex_long_double_view +gsl_matrix_complex_long_double_submatrix (gsl_matrix_complex_long_double * m, + const size_t i, const size_t j, + const size_t n1, const size_t n2); + +_gsl_vector_complex_long_double_view +gsl_matrix_complex_long_double_row (gsl_matrix_complex_long_double * m, const size_t i); + +_gsl_vector_complex_long_double_view +gsl_matrix_complex_long_double_column (gsl_matrix_complex_long_double * m, const size_t j); + +_gsl_vector_complex_long_double_view +gsl_matrix_complex_long_double_diagonal (gsl_matrix_complex_long_double * m); + +_gsl_vector_complex_long_double_view +gsl_matrix_complex_long_double_subdiagonal (gsl_matrix_complex_long_double * m, const size_t k); + +_gsl_vector_complex_long_double_view +gsl_matrix_complex_long_double_superdiagonal (gsl_matrix_complex_long_double * m, const size_t k); + +_gsl_vector_complex_long_double_view +gsl_matrix_complex_long_double_subrow (gsl_matrix_complex_long_double * m, + const size_t i, const size_t offset, + const size_t n); + +_gsl_vector_complex_long_double_view +gsl_matrix_complex_long_double_subcolumn (gsl_matrix_complex_long_double * m, + const size_t j, const size_t offset, + const size_t n); + +_gsl_matrix_complex_long_double_view +gsl_matrix_complex_long_double_view_array (long double * base, + const size_t n1, + const size_t n2); + +_gsl_matrix_complex_long_double_view +gsl_matrix_complex_long_double_view_array_with_tda (long double * base, + const size_t n1, + const size_t n2, + const size_t tda); + +_gsl_matrix_complex_long_double_view +gsl_matrix_complex_long_double_view_vector (gsl_vector_complex_long_double * v, + const size_t n1, + const size_t n2); + +_gsl_matrix_complex_long_double_view +gsl_matrix_complex_long_double_view_vector_with_tda (gsl_vector_complex_long_double * v, + const size_t n1, + const size_t n2, + const size_t tda); + + +_gsl_matrix_complex_long_double_const_view +gsl_matrix_complex_long_double_const_submatrix (const gsl_matrix_complex_long_double * m, + const size_t i, const size_t j, + const size_t n1, const size_t n2); + +_gsl_vector_complex_long_double_const_view +gsl_matrix_complex_long_double_const_row (const gsl_matrix_complex_long_double * m, + const size_t i); + +_gsl_vector_complex_long_double_const_view +gsl_matrix_complex_long_double_const_column (const gsl_matrix_complex_long_double * m, + const size_t j); + +_gsl_vector_complex_long_double_const_view +gsl_matrix_complex_long_double_const_diagonal (const gsl_matrix_complex_long_double * m); + +_gsl_vector_complex_long_double_const_view +gsl_matrix_complex_long_double_const_subdiagonal (const gsl_matrix_complex_long_double * m, + const size_t k); + +_gsl_vector_complex_long_double_const_view +gsl_matrix_complex_long_double_const_superdiagonal (const gsl_matrix_complex_long_double * m, + const size_t k); + +_gsl_vector_complex_long_double_const_view +gsl_matrix_complex_long_double_const_subrow (const gsl_matrix_complex_long_double * m, + const size_t i, const size_t offset, + const size_t n); + +_gsl_vector_complex_long_double_const_view +gsl_matrix_complex_long_double_const_subcolumn (const gsl_matrix_complex_long_double * m, + const size_t j, const size_t offset, + const size_t n); + +_gsl_matrix_complex_long_double_const_view +gsl_matrix_complex_long_double_const_view_array (const long double * base, + const size_t n1, + const size_t n2); + +_gsl_matrix_complex_long_double_const_view +gsl_matrix_complex_long_double_const_view_array_with_tda (const long double * base, + const size_t n1, + const size_t n2, + const size_t tda); + +_gsl_matrix_complex_long_double_const_view +gsl_matrix_complex_long_double_const_view_vector (const gsl_vector_complex_long_double * v, + const size_t n1, + const size_t n2); + +_gsl_matrix_complex_long_double_const_view +gsl_matrix_complex_long_double_const_view_vector_with_tda (const gsl_vector_complex_long_double * v, + const size_t n1, + const size_t n2, + const size_t tda); + +/* Operations */ + +void gsl_matrix_complex_long_double_set_zero (gsl_matrix_complex_long_double * m); +void gsl_matrix_complex_long_double_set_identity (gsl_matrix_complex_long_double * m); +void gsl_matrix_complex_long_double_set_all (gsl_matrix_complex_long_double * m, gsl_complex_long_double x); + +int gsl_matrix_complex_long_double_fread (FILE * stream, gsl_matrix_complex_long_double * m) ; +int gsl_matrix_complex_long_double_fwrite (FILE * stream, const gsl_matrix_complex_long_double * m) ; +int gsl_matrix_complex_long_double_fscanf (FILE * stream, gsl_matrix_complex_long_double * m); +int gsl_matrix_complex_long_double_fprintf (FILE * stream, const gsl_matrix_complex_long_double * m, const char * format); + +int gsl_matrix_complex_long_double_memcpy(gsl_matrix_complex_long_double * dest, const gsl_matrix_complex_long_double * src); +int gsl_matrix_complex_long_double_swap(gsl_matrix_complex_long_double * m1, gsl_matrix_complex_long_double * m2); +int gsl_matrix_complex_long_double_tricpy(const char uplo_src, const int copy_diag, gsl_matrix_complex_long_double * dest, const gsl_matrix_complex_long_double * src); + +int gsl_matrix_complex_long_double_swap_rows(gsl_matrix_complex_long_double * m, const size_t i, const size_t j); +int gsl_matrix_complex_long_double_swap_columns(gsl_matrix_complex_long_double * m, const size_t i, const size_t j); +int gsl_matrix_complex_long_double_swap_rowcol(gsl_matrix_complex_long_double * m, const size_t i, const size_t j); + +int gsl_matrix_complex_long_double_transpose (gsl_matrix_complex_long_double * m); +int gsl_matrix_complex_long_double_transpose_memcpy (gsl_matrix_complex_long_double * dest, const gsl_matrix_complex_long_double * src); +int gsl_matrix_complex_long_double_transpose_tricpy(const char uplo_src, const int copy_diag, gsl_matrix_complex_long_double * dest, const gsl_matrix_complex_long_double * src); + +int gsl_matrix_complex_long_double_equal (const gsl_matrix_complex_long_double * a, const gsl_matrix_complex_long_double * b); + +int gsl_matrix_complex_long_double_isnull (const gsl_matrix_complex_long_double * m); +int gsl_matrix_complex_long_double_ispos (const gsl_matrix_complex_long_double * m); +int gsl_matrix_complex_long_double_isneg (const gsl_matrix_complex_long_double * m); +int gsl_matrix_complex_long_double_isnonneg (const gsl_matrix_complex_long_double * m); + +int gsl_matrix_complex_long_double_add (gsl_matrix_complex_long_double * a, const gsl_matrix_complex_long_double * b); +int gsl_matrix_complex_long_double_sub (gsl_matrix_complex_long_double * a, const gsl_matrix_complex_long_double * b); +int gsl_matrix_complex_long_double_mul_elements (gsl_matrix_complex_long_double * a, const gsl_matrix_complex_long_double * b); +int gsl_matrix_complex_long_double_div_elements (gsl_matrix_complex_long_double * a, const gsl_matrix_complex_long_double * b); +int gsl_matrix_complex_long_double_scale (gsl_matrix_complex_long_double * a, const gsl_complex_long_double x); +int gsl_matrix_complex_long_double_add_constant (gsl_matrix_complex_long_double * a, const gsl_complex_long_double x); +int gsl_matrix_complex_long_double_add_diagonal (gsl_matrix_complex_long_double * a, const gsl_complex_long_double x); + +/***********************************************************************/ +/* The functions below are obsolete */ +/***********************************************************************/ +int gsl_matrix_complex_long_double_get_row(gsl_vector_complex_long_double * v, const gsl_matrix_complex_long_double * m, const size_t i); +int gsl_matrix_complex_long_double_get_col(gsl_vector_complex_long_double * v, const gsl_matrix_complex_long_double * m, const size_t j); +int gsl_matrix_complex_long_double_set_row(gsl_matrix_complex_long_double * m, const size_t i, const gsl_vector_complex_long_double * v); +int gsl_matrix_complex_long_double_set_col(gsl_matrix_complex_long_double * m, const size_t j, const gsl_vector_complex_long_double * v); +/***********************************************************************/ + +/* inline functions if you are using GCC */ + +INLINE_DECL gsl_complex_long_double gsl_matrix_complex_long_double_get(const gsl_matrix_complex_long_double * m, const size_t i, const size_t j); +INLINE_DECL void gsl_matrix_complex_long_double_set(gsl_matrix_complex_long_double * m, const size_t i, const size_t j, const gsl_complex_long_double x); + +INLINE_DECL gsl_complex_long_double * gsl_matrix_complex_long_double_ptr(gsl_matrix_complex_long_double * m, const size_t i, const size_t j); +INLINE_DECL const gsl_complex_long_double * gsl_matrix_complex_long_double_const_ptr(const gsl_matrix_complex_long_double * m, const size_t i, const size_t j); + +#ifdef HAVE_INLINE + +INLINE_FUN +gsl_complex_long_double +gsl_matrix_complex_long_double_get(const gsl_matrix_complex_long_double * m, + const size_t i, const size_t j) +{ +#if GSL_RANGE_CHECK + if (GSL_RANGE_COND(1)) + { + gsl_complex_long_double zero = {{0,0}}; + + if (i >= m->size1) + { + GSL_ERROR_VAL("first index out of range", GSL_EINVAL, zero) ; + } + else if (j >= m->size2) + { + GSL_ERROR_VAL("second index out of range", GSL_EINVAL, zero) ; + } + } +#endif + return *(gsl_complex_long_double *)(m->data + 2*(i * m->tda + j)) ; +} + +INLINE_FUN +void +gsl_matrix_complex_long_double_set(gsl_matrix_complex_long_double * m, + const size_t i, const size_t j, const gsl_complex_long_double x) +{ +#if GSL_RANGE_CHECK + if (GSL_RANGE_COND(1)) + { + if (i >= m->size1) + { + GSL_ERROR_VOID("first index out of range", GSL_EINVAL) ; + } + else if (j >= m->size2) + { + GSL_ERROR_VOID("second index out of range", GSL_EINVAL) ; + } + } +#endif + *(gsl_complex_long_double *)(m->data + 2*(i * m->tda + j)) = x ; +} + +INLINE_FUN +gsl_complex_long_double * +gsl_matrix_complex_long_double_ptr(gsl_matrix_complex_long_double * m, + const size_t i, const size_t j) +{ +#if GSL_RANGE_CHECK + if (GSL_RANGE_COND(1)) + { + if (i >= m->size1) + { + GSL_ERROR_NULL("first index out of range", GSL_EINVAL) ; + } + else if (j >= m->size2) + { + GSL_ERROR_NULL("second index out of range", GSL_EINVAL) ; + } + } +#endif + return (gsl_complex_long_double *)(m->data + 2*(i * m->tda + j)) ; +} + +INLINE_FUN +const gsl_complex_long_double * +gsl_matrix_complex_long_double_const_ptr(const gsl_matrix_complex_long_double * m, + const size_t i, const size_t j) +{ +#if GSL_RANGE_CHECK + if (GSL_RANGE_COND(1)) + { + if (i >= m->size1) + { + GSL_ERROR_NULL("first index out of range", GSL_EINVAL) ; + } + else if (j >= m->size2) + { + GSL_ERROR_NULL("second index out of range", GSL_EINVAL) ; + } + } +#endif + return (const gsl_complex_long_double *)(m->data + 2*(i * m->tda + j)) ; +} + +#endif /* HAVE_INLINE */ + +__END_DECLS + +#endif /* __GSL_MATRIX_COMPLEX_LONG_DOUBLE_H__ */ diff --git a/gsl-2.5/matrix/gsl_matrix_double.h b/gsl-2.5/matrix/gsl_matrix_double.h new file mode 100644 index 00000000..64f7eed5 --- /dev/null +++ b/gsl-2.5/matrix/gsl_matrix_double.h @@ -0,0 +1,352 @@ +/* matrix/gsl_matrix_double.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_MATRIX_DOUBLE_H__ +#define __GSL_MATRIX_DOUBLE_H__ + +#include +#include +#include +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +typedef struct +{ + size_t size1; + size_t size2; + size_t tda; + double * data; + gsl_block * block; + int owner; +} gsl_matrix; + +typedef struct +{ + gsl_matrix matrix; +} _gsl_matrix_view; + +typedef _gsl_matrix_view gsl_matrix_view; + +typedef struct +{ + gsl_matrix matrix; +} _gsl_matrix_const_view; + +typedef const _gsl_matrix_const_view gsl_matrix_const_view; + +/* Allocation */ + +gsl_matrix * +gsl_matrix_alloc (const size_t n1, const size_t n2); + +gsl_matrix * +gsl_matrix_calloc (const size_t n1, const size_t n2); + +gsl_matrix * +gsl_matrix_alloc_from_block (gsl_block * b, + const size_t offset, + const size_t n1, + const size_t n2, + const size_t d2); + +gsl_matrix * +gsl_matrix_alloc_from_matrix (gsl_matrix * m, + const size_t k1, + const size_t k2, + const size_t n1, + const size_t n2); + +gsl_vector * +gsl_vector_alloc_row_from_matrix (gsl_matrix * m, + const size_t i); + +gsl_vector * +gsl_vector_alloc_col_from_matrix (gsl_matrix * m, + const size_t j); + +void gsl_matrix_free (gsl_matrix * m); + +/* Views */ + +_gsl_matrix_view +gsl_matrix_submatrix (gsl_matrix * m, + const size_t i, const size_t j, + const size_t n1, const size_t n2); + +_gsl_vector_view +gsl_matrix_row (gsl_matrix * m, const size_t i); + +_gsl_vector_view +gsl_matrix_column (gsl_matrix * m, const size_t j); + +_gsl_vector_view +gsl_matrix_diagonal (gsl_matrix * m); + +_gsl_vector_view +gsl_matrix_subdiagonal (gsl_matrix * m, const size_t k); + +_gsl_vector_view +gsl_matrix_superdiagonal (gsl_matrix * m, const size_t k); + +_gsl_vector_view +gsl_matrix_subrow (gsl_matrix * m, const size_t i, + const size_t offset, const size_t n); + +_gsl_vector_view +gsl_matrix_subcolumn (gsl_matrix * m, const size_t j, + const size_t offset, const size_t n); + +_gsl_matrix_view +gsl_matrix_view_array (double * base, + const size_t n1, + const size_t n2); + +_gsl_matrix_view +gsl_matrix_view_array_with_tda (double * base, + const size_t n1, + const size_t n2, + const size_t tda); + + +_gsl_matrix_view +gsl_matrix_view_vector (gsl_vector * v, + const size_t n1, + const size_t n2); + +_gsl_matrix_view +gsl_matrix_view_vector_with_tda (gsl_vector * v, + const size_t n1, + const size_t n2, + const size_t tda); + + +_gsl_matrix_const_view +gsl_matrix_const_submatrix (const gsl_matrix * m, + const size_t i, const size_t j, + const size_t n1, const size_t n2); + +_gsl_vector_const_view +gsl_matrix_const_row (const gsl_matrix * m, + const size_t i); + +_gsl_vector_const_view +gsl_matrix_const_column (const gsl_matrix * m, + const size_t j); + +_gsl_vector_const_view +gsl_matrix_const_diagonal (const gsl_matrix * m); + +_gsl_vector_const_view +gsl_matrix_const_subdiagonal (const gsl_matrix * m, + const size_t k); + +_gsl_vector_const_view +gsl_matrix_const_superdiagonal (const gsl_matrix * m, + const size_t k); + +_gsl_vector_const_view +gsl_matrix_const_subrow (const gsl_matrix * m, const size_t i, + const size_t offset, const size_t n); + +_gsl_vector_const_view +gsl_matrix_const_subcolumn (const gsl_matrix * m, const size_t j, + const size_t offset, const size_t n); + +_gsl_matrix_const_view +gsl_matrix_const_view_array (const double * base, + const size_t n1, + const size_t n2); + +_gsl_matrix_const_view +gsl_matrix_const_view_array_with_tda (const double * base, + const size_t n1, + const size_t n2, + const size_t tda); + +_gsl_matrix_const_view +gsl_matrix_const_view_vector (const gsl_vector * v, + const size_t n1, + const size_t n2); + +_gsl_matrix_const_view +gsl_matrix_const_view_vector_with_tda (const gsl_vector * v, + const size_t n1, + const size_t n2, + const size_t tda); + +/* Operations */ + +void gsl_matrix_set_zero (gsl_matrix * m); +void gsl_matrix_set_identity (gsl_matrix * m); +void gsl_matrix_set_all (gsl_matrix * m, double x); + +int gsl_matrix_fread (FILE * stream, gsl_matrix * m) ; +int gsl_matrix_fwrite (FILE * stream, const gsl_matrix * m) ; +int gsl_matrix_fscanf (FILE * stream, gsl_matrix * m); +int gsl_matrix_fprintf (FILE * stream, const gsl_matrix * m, const char * format); + +int gsl_matrix_memcpy(gsl_matrix * dest, const gsl_matrix * src); +int gsl_matrix_swap(gsl_matrix * m1, gsl_matrix * m2); +int gsl_matrix_tricpy(const char uplo_src, const int copy_diag, gsl_matrix * dest, const gsl_matrix * src); + +int gsl_matrix_swap_rows(gsl_matrix * m, const size_t i, const size_t j); +int gsl_matrix_swap_columns(gsl_matrix * m, const size_t i, const size_t j); +int gsl_matrix_swap_rowcol(gsl_matrix * m, const size_t i, const size_t j); +int gsl_matrix_transpose (gsl_matrix * m); +int gsl_matrix_transpose_memcpy (gsl_matrix * dest, const gsl_matrix * src); +int gsl_matrix_transpose_tricpy (const char uplo_src, const int copy_diag, gsl_matrix * dest, const gsl_matrix * src); + +double gsl_matrix_max (const gsl_matrix * m); +double gsl_matrix_min (const gsl_matrix * m); +void gsl_matrix_minmax (const gsl_matrix * m, double * min_out, double * max_out); + +void gsl_matrix_max_index (const gsl_matrix * m, size_t * imax, size_t *jmax); +void gsl_matrix_min_index (const gsl_matrix * m, size_t * imin, size_t *jmin); +void gsl_matrix_minmax_index (const gsl_matrix * m, size_t * imin, size_t * jmin, size_t * imax, size_t * jmax); + +int gsl_matrix_equal (const gsl_matrix * a, const gsl_matrix * b); + +int gsl_matrix_isnull (const gsl_matrix * m); +int gsl_matrix_ispos (const gsl_matrix * m); +int gsl_matrix_isneg (const gsl_matrix * m); +int gsl_matrix_isnonneg (const gsl_matrix * m); + +int gsl_matrix_add (gsl_matrix * a, const gsl_matrix * b); +int gsl_matrix_sub (gsl_matrix * a, const gsl_matrix * b); +int gsl_matrix_mul_elements (gsl_matrix * a, const gsl_matrix * b); +int gsl_matrix_div_elements (gsl_matrix * a, const gsl_matrix * b); +int gsl_matrix_scale (gsl_matrix * a, const double x); +int gsl_matrix_add_constant (gsl_matrix * a, const double x); +int gsl_matrix_add_diagonal (gsl_matrix * a, const double x); + +/***********************************************************************/ +/* The functions below are obsolete */ +/***********************************************************************/ +int gsl_matrix_get_row(gsl_vector * v, const gsl_matrix * m, const size_t i); +int gsl_matrix_get_col(gsl_vector * v, const gsl_matrix * m, const size_t j); +int gsl_matrix_set_row(gsl_matrix * m, const size_t i, const gsl_vector * v); +int gsl_matrix_set_col(gsl_matrix * m, const size_t j, const gsl_vector * v); +/***********************************************************************/ + +/* inline functions if you are using GCC */ + +INLINE_DECL double gsl_matrix_get(const gsl_matrix * m, const size_t i, const size_t j); +INLINE_DECL void gsl_matrix_set(gsl_matrix * m, const size_t i, const size_t j, const double x); +INLINE_DECL double * gsl_matrix_ptr(gsl_matrix * m, const size_t i, const size_t j); +INLINE_DECL const double * gsl_matrix_const_ptr(const gsl_matrix * m, const size_t i, const size_t j); + +#ifdef HAVE_INLINE +INLINE_FUN +double +gsl_matrix_get(const gsl_matrix * m, const size_t i, const size_t j) +{ +#if GSL_RANGE_CHECK + if (GSL_RANGE_COND(1)) + { + if (i >= m->size1) + { + GSL_ERROR_VAL("first index out of range", GSL_EINVAL, 0) ; + } + else if (j >= m->size2) + { + GSL_ERROR_VAL("second index out of range", GSL_EINVAL, 0) ; + } + } +#endif + return m->data[i * m->tda + j] ; +} + +INLINE_FUN +void +gsl_matrix_set(gsl_matrix * m, const size_t i, const size_t j, const double x) +{ +#if GSL_RANGE_CHECK + if (GSL_RANGE_COND(1)) + { + if (i >= m->size1) + { + GSL_ERROR_VOID("first index out of range", GSL_EINVAL) ; + } + else if (j >= m->size2) + { + GSL_ERROR_VOID("second index out of range", GSL_EINVAL) ; + } + } +#endif + m->data[i * m->tda + j] = x ; +} + +INLINE_FUN +double * +gsl_matrix_ptr(gsl_matrix * m, const size_t i, const size_t j) +{ +#if GSL_RANGE_CHECK + if (GSL_RANGE_COND(1)) + { + if (i >= m->size1) + { + GSL_ERROR_NULL("first index out of range", GSL_EINVAL) ; + } + else if (j >= m->size2) + { + GSL_ERROR_NULL("second index out of range", GSL_EINVAL) ; + } + } +#endif + return (double *) (m->data + (i * m->tda + j)) ; +} + +INLINE_FUN +const double * +gsl_matrix_const_ptr(const gsl_matrix * m, const size_t i, const size_t j) +{ +#if GSL_RANGE_CHECK + if (GSL_RANGE_COND(1)) + { + if (i >= m->size1) + { + GSL_ERROR_NULL("first index out of range", GSL_EINVAL) ; + } + else if (j >= m->size2) + { + GSL_ERROR_NULL("second index out of range", GSL_EINVAL) ; + } + } +#endif + return (const double *) (m->data + (i * m->tda + j)) ; +} + +#endif + +__END_DECLS + +#endif /* __GSL_MATRIX_DOUBLE_H__ */ diff --git a/gsl-2.5/matrix/gsl_matrix_float.h b/gsl-2.5/matrix/gsl_matrix_float.h new file mode 100644 index 00000000..baa50079 --- /dev/null +++ b/gsl-2.5/matrix/gsl_matrix_float.h @@ -0,0 +1,352 @@ +/* matrix/gsl_matrix_float.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_MATRIX_FLOAT_H__ +#define __GSL_MATRIX_FLOAT_H__ + +#include +#include +#include +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +typedef struct +{ + size_t size1; + size_t size2; + size_t tda; + float * data; + gsl_block_float * block; + int owner; +} gsl_matrix_float; + +typedef struct +{ + gsl_matrix_float matrix; +} _gsl_matrix_float_view; + +typedef _gsl_matrix_float_view gsl_matrix_float_view; + +typedef struct +{ + gsl_matrix_float matrix; +} _gsl_matrix_float_const_view; + +typedef const _gsl_matrix_float_const_view gsl_matrix_float_const_view; + +/* Allocation */ + +gsl_matrix_float * +gsl_matrix_float_alloc (const size_t n1, const size_t n2); + +gsl_matrix_float * +gsl_matrix_float_calloc (const size_t n1, const size_t n2); + +gsl_matrix_float * +gsl_matrix_float_alloc_from_block (gsl_block_float * b, + const size_t offset, + const size_t n1, + const size_t n2, + const size_t d2); + +gsl_matrix_float * +gsl_matrix_float_alloc_from_matrix (gsl_matrix_float * m, + const size_t k1, + const size_t k2, + const size_t n1, + const size_t n2); + +gsl_vector_float * +gsl_vector_float_alloc_row_from_matrix (gsl_matrix_float * m, + const size_t i); + +gsl_vector_float * +gsl_vector_float_alloc_col_from_matrix (gsl_matrix_float * m, + const size_t j); + +void gsl_matrix_float_free (gsl_matrix_float * m); + +/* Views */ + +_gsl_matrix_float_view +gsl_matrix_float_submatrix (gsl_matrix_float * m, + const size_t i, const size_t j, + const size_t n1, const size_t n2); + +_gsl_vector_float_view +gsl_matrix_float_row (gsl_matrix_float * m, const size_t i); + +_gsl_vector_float_view +gsl_matrix_float_column (gsl_matrix_float * m, const size_t j); + +_gsl_vector_float_view +gsl_matrix_float_diagonal (gsl_matrix_float * m); + +_gsl_vector_float_view +gsl_matrix_float_subdiagonal (gsl_matrix_float * m, const size_t k); + +_gsl_vector_float_view +gsl_matrix_float_superdiagonal (gsl_matrix_float * m, const size_t k); + +_gsl_vector_float_view +gsl_matrix_float_subrow (gsl_matrix_float * m, const size_t i, + const size_t offset, const size_t n); + +_gsl_vector_float_view +gsl_matrix_float_subcolumn (gsl_matrix_float * m, const size_t j, + const size_t offset, const size_t n); + +_gsl_matrix_float_view +gsl_matrix_float_view_array (float * base, + const size_t n1, + const size_t n2); + +_gsl_matrix_float_view +gsl_matrix_float_view_array_with_tda (float * base, + const size_t n1, + const size_t n2, + const size_t tda); + + +_gsl_matrix_float_view +gsl_matrix_float_view_vector (gsl_vector_float * v, + const size_t n1, + const size_t n2); + +_gsl_matrix_float_view +gsl_matrix_float_view_vector_with_tda (gsl_vector_float * v, + const size_t n1, + const size_t n2, + const size_t tda); + + +_gsl_matrix_float_const_view +gsl_matrix_float_const_submatrix (const gsl_matrix_float * m, + const size_t i, const size_t j, + const size_t n1, const size_t n2); + +_gsl_vector_float_const_view +gsl_matrix_float_const_row (const gsl_matrix_float * m, + const size_t i); + +_gsl_vector_float_const_view +gsl_matrix_float_const_column (const gsl_matrix_float * m, + const size_t j); + +_gsl_vector_float_const_view +gsl_matrix_float_const_diagonal (const gsl_matrix_float * m); + +_gsl_vector_float_const_view +gsl_matrix_float_const_subdiagonal (const gsl_matrix_float * m, + const size_t k); + +_gsl_vector_float_const_view +gsl_matrix_float_const_superdiagonal (const gsl_matrix_float * m, + const size_t k); + +_gsl_vector_float_const_view +gsl_matrix_float_const_subrow (const gsl_matrix_float * m, const size_t i, + const size_t offset, const size_t n); + +_gsl_vector_float_const_view +gsl_matrix_float_const_subcolumn (const gsl_matrix_float * m, const size_t j, + const size_t offset, const size_t n); + +_gsl_matrix_float_const_view +gsl_matrix_float_const_view_array (const float * base, + const size_t n1, + const size_t n2); + +_gsl_matrix_float_const_view +gsl_matrix_float_const_view_array_with_tda (const float * base, + const size_t n1, + const size_t n2, + const size_t tda); + +_gsl_matrix_float_const_view +gsl_matrix_float_const_view_vector (const gsl_vector_float * v, + const size_t n1, + const size_t n2); + +_gsl_matrix_float_const_view +gsl_matrix_float_const_view_vector_with_tda (const gsl_vector_float * v, + const size_t n1, + const size_t n2, + const size_t tda); + +/* Operations */ + +void gsl_matrix_float_set_zero (gsl_matrix_float * m); +void gsl_matrix_float_set_identity (gsl_matrix_float * m); +void gsl_matrix_float_set_all (gsl_matrix_float * m, float x); + +int gsl_matrix_float_fread (FILE * stream, gsl_matrix_float * m) ; +int gsl_matrix_float_fwrite (FILE * stream, const gsl_matrix_float * m) ; +int gsl_matrix_float_fscanf (FILE * stream, gsl_matrix_float * m); +int gsl_matrix_float_fprintf (FILE * stream, const gsl_matrix_float * m, const char * format); + +int gsl_matrix_float_memcpy(gsl_matrix_float * dest, const gsl_matrix_float * src); +int gsl_matrix_float_swap(gsl_matrix_float * m1, gsl_matrix_float * m2); +int gsl_matrix_float_tricpy(const char uplo_src, const int copy_diag, gsl_matrix_float * dest, const gsl_matrix_float * src); + +int gsl_matrix_float_swap_rows(gsl_matrix_float * m, const size_t i, const size_t j); +int gsl_matrix_float_swap_columns(gsl_matrix_float * m, const size_t i, const size_t j); +int gsl_matrix_float_swap_rowcol(gsl_matrix_float * m, const size_t i, const size_t j); +int gsl_matrix_float_transpose (gsl_matrix_float * m); +int gsl_matrix_float_transpose_memcpy (gsl_matrix_float * dest, const gsl_matrix_float * src); +int gsl_matrix_float_transpose_tricpy (const char uplo_src, const int copy_diag, gsl_matrix_float * dest, const gsl_matrix_float * src); + +float gsl_matrix_float_max (const gsl_matrix_float * m); +float gsl_matrix_float_min (const gsl_matrix_float * m); +void gsl_matrix_float_minmax (const gsl_matrix_float * m, float * min_out, float * max_out); + +void gsl_matrix_float_max_index (const gsl_matrix_float * m, size_t * imax, size_t *jmax); +void gsl_matrix_float_min_index (const gsl_matrix_float * m, size_t * imin, size_t *jmin); +void gsl_matrix_float_minmax_index (const gsl_matrix_float * m, size_t * imin, size_t * jmin, size_t * imax, size_t * jmax); + +int gsl_matrix_float_equal (const gsl_matrix_float * a, const gsl_matrix_float * b); + +int gsl_matrix_float_isnull (const gsl_matrix_float * m); +int gsl_matrix_float_ispos (const gsl_matrix_float * m); +int gsl_matrix_float_isneg (const gsl_matrix_float * m); +int gsl_matrix_float_isnonneg (const gsl_matrix_float * m); + +int gsl_matrix_float_add (gsl_matrix_float * a, const gsl_matrix_float * b); +int gsl_matrix_float_sub (gsl_matrix_float * a, const gsl_matrix_float * b); +int gsl_matrix_float_mul_elements (gsl_matrix_float * a, const gsl_matrix_float * b); +int gsl_matrix_float_div_elements (gsl_matrix_float * a, const gsl_matrix_float * b); +int gsl_matrix_float_scale (gsl_matrix_float * a, const double x); +int gsl_matrix_float_add_constant (gsl_matrix_float * a, const double x); +int gsl_matrix_float_add_diagonal (gsl_matrix_float * a, const double x); + +/***********************************************************************/ +/* The functions below are obsolete */ +/***********************************************************************/ +int gsl_matrix_float_get_row(gsl_vector_float * v, const gsl_matrix_float * m, const size_t i); +int gsl_matrix_float_get_col(gsl_vector_float * v, const gsl_matrix_float * m, const size_t j); +int gsl_matrix_float_set_row(gsl_matrix_float * m, const size_t i, const gsl_vector_float * v); +int gsl_matrix_float_set_col(gsl_matrix_float * m, const size_t j, const gsl_vector_float * v); +/***********************************************************************/ + +/* inline functions if you are using GCC */ + +INLINE_DECL float gsl_matrix_float_get(const gsl_matrix_float * m, const size_t i, const size_t j); +INLINE_DECL void gsl_matrix_float_set(gsl_matrix_float * m, const size_t i, const size_t j, const float x); +INLINE_DECL float * gsl_matrix_float_ptr(gsl_matrix_float * m, const size_t i, const size_t j); +INLINE_DECL const float * gsl_matrix_float_const_ptr(const gsl_matrix_float * m, const size_t i, const size_t j); + +#ifdef HAVE_INLINE +INLINE_FUN +float +gsl_matrix_float_get(const gsl_matrix_float * m, const size_t i, const size_t j) +{ +#if GSL_RANGE_CHECK + if (GSL_RANGE_COND(1)) + { + if (i >= m->size1) + { + GSL_ERROR_VAL("first index out of range", GSL_EINVAL, 0) ; + } + else if (j >= m->size2) + { + GSL_ERROR_VAL("second index out of range", GSL_EINVAL, 0) ; + } + } +#endif + return m->data[i * m->tda + j] ; +} + +INLINE_FUN +void +gsl_matrix_float_set(gsl_matrix_float * m, const size_t i, const size_t j, const float x) +{ +#if GSL_RANGE_CHECK + if (GSL_RANGE_COND(1)) + { + if (i >= m->size1) + { + GSL_ERROR_VOID("first index out of range", GSL_EINVAL) ; + } + else if (j >= m->size2) + { + GSL_ERROR_VOID("second index out of range", GSL_EINVAL) ; + } + } +#endif + m->data[i * m->tda + j] = x ; +} + +INLINE_FUN +float * +gsl_matrix_float_ptr(gsl_matrix_float * m, const size_t i, const size_t j) +{ +#if GSL_RANGE_CHECK + if (GSL_RANGE_COND(1)) + { + if (i >= m->size1) + { + GSL_ERROR_NULL("first index out of range", GSL_EINVAL) ; + } + else if (j >= m->size2) + { + GSL_ERROR_NULL("second index out of range", GSL_EINVAL) ; + } + } +#endif + return (float *) (m->data + (i * m->tda + j)) ; +} + +INLINE_FUN +const float * +gsl_matrix_float_const_ptr(const gsl_matrix_float * m, const size_t i, const size_t j) +{ +#if GSL_RANGE_CHECK + if (GSL_RANGE_COND(1)) + { + if (i >= m->size1) + { + GSL_ERROR_NULL("first index out of range", GSL_EINVAL) ; + } + else if (j >= m->size2) + { + GSL_ERROR_NULL("second index out of range", GSL_EINVAL) ; + } + } +#endif + return (const float *) (m->data + (i * m->tda + j)) ; +} + +#endif + +__END_DECLS + +#endif /* __GSL_MATRIX_FLOAT_H__ */ diff --git a/gsl-2.5/matrix/gsl_matrix_int.h b/gsl-2.5/matrix/gsl_matrix_int.h new file mode 100644 index 00000000..b2b9c610 --- /dev/null +++ b/gsl-2.5/matrix/gsl_matrix_int.h @@ -0,0 +1,352 @@ +/* matrix/gsl_matrix_int.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_MATRIX_INT_H__ +#define __GSL_MATRIX_INT_H__ + +#include +#include +#include +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +typedef struct +{ + size_t size1; + size_t size2; + size_t tda; + int * data; + gsl_block_int * block; + int owner; +} gsl_matrix_int; + +typedef struct +{ + gsl_matrix_int matrix; +} _gsl_matrix_int_view; + +typedef _gsl_matrix_int_view gsl_matrix_int_view; + +typedef struct +{ + gsl_matrix_int matrix; +} _gsl_matrix_int_const_view; + +typedef const _gsl_matrix_int_const_view gsl_matrix_int_const_view; + +/* Allocation */ + +gsl_matrix_int * +gsl_matrix_int_alloc (const size_t n1, const size_t n2); + +gsl_matrix_int * +gsl_matrix_int_calloc (const size_t n1, const size_t n2); + +gsl_matrix_int * +gsl_matrix_int_alloc_from_block (gsl_block_int * b, + const size_t offset, + const size_t n1, + const size_t n2, + const size_t d2); + +gsl_matrix_int * +gsl_matrix_int_alloc_from_matrix (gsl_matrix_int * m, + const size_t k1, + const size_t k2, + const size_t n1, + const size_t n2); + +gsl_vector_int * +gsl_vector_int_alloc_row_from_matrix (gsl_matrix_int * m, + const size_t i); + +gsl_vector_int * +gsl_vector_int_alloc_col_from_matrix (gsl_matrix_int * m, + const size_t j); + +void gsl_matrix_int_free (gsl_matrix_int * m); + +/* Views */ + +_gsl_matrix_int_view +gsl_matrix_int_submatrix (gsl_matrix_int * m, + const size_t i, const size_t j, + const size_t n1, const size_t n2); + +_gsl_vector_int_view +gsl_matrix_int_row (gsl_matrix_int * m, const size_t i); + +_gsl_vector_int_view +gsl_matrix_int_column (gsl_matrix_int * m, const size_t j); + +_gsl_vector_int_view +gsl_matrix_int_diagonal (gsl_matrix_int * m); + +_gsl_vector_int_view +gsl_matrix_int_subdiagonal (gsl_matrix_int * m, const size_t k); + +_gsl_vector_int_view +gsl_matrix_int_superdiagonal (gsl_matrix_int * m, const size_t k); + +_gsl_vector_int_view +gsl_matrix_int_subrow (gsl_matrix_int * m, const size_t i, + const size_t offset, const size_t n); + +_gsl_vector_int_view +gsl_matrix_int_subcolumn (gsl_matrix_int * m, const size_t j, + const size_t offset, const size_t n); + +_gsl_matrix_int_view +gsl_matrix_int_view_array (int * base, + const size_t n1, + const size_t n2); + +_gsl_matrix_int_view +gsl_matrix_int_view_array_with_tda (int * base, + const size_t n1, + const size_t n2, + const size_t tda); + + +_gsl_matrix_int_view +gsl_matrix_int_view_vector (gsl_vector_int * v, + const size_t n1, + const size_t n2); + +_gsl_matrix_int_view +gsl_matrix_int_view_vector_with_tda (gsl_vector_int * v, + const size_t n1, + const size_t n2, + const size_t tda); + + +_gsl_matrix_int_const_view +gsl_matrix_int_const_submatrix (const gsl_matrix_int * m, + const size_t i, const size_t j, + const size_t n1, const size_t n2); + +_gsl_vector_int_const_view +gsl_matrix_int_const_row (const gsl_matrix_int * m, + const size_t i); + +_gsl_vector_int_const_view +gsl_matrix_int_const_column (const gsl_matrix_int * m, + const size_t j); + +_gsl_vector_int_const_view +gsl_matrix_int_const_diagonal (const gsl_matrix_int * m); + +_gsl_vector_int_const_view +gsl_matrix_int_const_subdiagonal (const gsl_matrix_int * m, + const size_t k); + +_gsl_vector_int_const_view +gsl_matrix_int_const_superdiagonal (const gsl_matrix_int * m, + const size_t k); + +_gsl_vector_int_const_view +gsl_matrix_int_const_subrow (const gsl_matrix_int * m, const size_t i, + const size_t offset, const size_t n); + +_gsl_vector_int_const_view +gsl_matrix_int_const_subcolumn (const gsl_matrix_int * m, const size_t j, + const size_t offset, const size_t n); + +_gsl_matrix_int_const_view +gsl_matrix_int_const_view_array (const int * base, + const size_t n1, + const size_t n2); + +_gsl_matrix_int_const_view +gsl_matrix_int_const_view_array_with_tda (const int * base, + const size_t n1, + const size_t n2, + const size_t tda); + +_gsl_matrix_int_const_view +gsl_matrix_int_const_view_vector (const gsl_vector_int * v, + const size_t n1, + const size_t n2); + +_gsl_matrix_int_const_view +gsl_matrix_int_const_view_vector_with_tda (const gsl_vector_int * v, + const size_t n1, + const size_t n2, + const size_t tda); + +/* Operations */ + +void gsl_matrix_int_set_zero (gsl_matrix_int * m); +void gsl_matrix_int_set_identity (gsl_matrix_int * m); +void gsl_matrix_int_set_all (gsl_matrix_int * m, int x); + +int gsl_matrix_int_fread (FILE * stream, gsl_matrix_int * m) ; +int gsl_matrix_int_fwrite (FILE * stream, const gsl_matrix_int * m) ; +int gsl_matrix_int_fscanf (FILE * stream, gsl_matrix_int * m); +int gsl_matrix_int_fprintf (FILE * stream, const gsl_matrix_int * m, const char * format); + +int gsl_matrix_int_memcpy(gsl_matrix_int * dest, const gsl_matrix_int * src); +int gsl_matrix_int_swap(gsl_matrix_int * m1, gsl_matrix_int * m2); +int gsl_matrix_int_tricpy(const char uplo_src, const int copy_diag, gsl_matrix_int * dest, const gsl_matrix_int * src); + +int gsl_matrix_int_swap_rows(gsl_matrix_int * m, const size_t i, const size_t j); +int gsl_matrix_int_swap_columns(gsl_matrix_int * m, const size_t i, const size_t j); +int gsl_matrix_int_swap_rowcol(gsl_matrix_int * m, const size_t i, const size_t j); +int gsl_matrix_int_transpose (gsl_matrix_int * m); +int gsl_matrix_int_transpose_memcpy (gsl_matrix_int * dest, const gsl_matrix_int * src); +int gsl_matrix_int_transpose_tricpy (const char uplo_src, const int copy_diag, gsl_matrix_int * dest, const gsl_matrix_int * src); + +int gsl_matrix_int_max (const gsl_matrix_int * m); +int gsl_matrix_int_min (const gsl_matrix_int * m); +void gsl_matrix_int_minmax (const gsl_matrix_int * m, int * min_out, int * max_out); + +void gsl_matrix_int_max_index (const gsl_matrix_int * m, size_t * imax, size_t *jmax); +void gsl_matrix_int_min_index (const gsl_matrix_int * m, size_t * imin, size_t *jmin); +void gsl_matrix_int_minmax_index (const gsl_matrix_int * m, size_t * imin, size_t * jmin, size_t * imax, size_t * jmax); + +int gsl_matrix_int_equal (const gsl_matrix_int * a, const gsl_matrix_int * b); + +int gsl_matrix_int_isnull (const gsl_matrix_int * m); +int gsl_matrix_int_ispos (const gsl_matrix_int * m); +int gsl_matrix_int_isneg (const gsl_matrix_int * m); +int gsl_matrix_int_isnonneg (const gsl_matrix_int * m); + +int gsl_matrix_int_add (gsl_matrix_int * a, const gsl_matrix_int * b); +int gsl_matrix_int_sub (gsl_matrix_int * a, const gsl_matrix_int * b); +int gsl_matrix_int_mul_elements (gsl_matrix_int * a, const gsl_matrix_int * b); +int gsl_matrix_int_div_elements (gsl_matrix_int * a, const gsl_matrix_int * b); +int gsl_matrix_int_scale (gsl_matrix_int * a, const double x); +int gsl_matrix_int_add_constant (gsl_matrix_int * a, const double x); +int gsl_matrix_int_add_diagonal (gsl_matrix_int * a, const double x); + +/***********************************************************************/ +/* The functions below are obsolete */ +/***********************************************************************/ +int gsl_matrix_int_get_row(gsl_vector_int * v, const gsl_matrix_int * m, const size_t i); +int gsl_matrix_int_get_col(gsl_vector_int * v, const gsl_matrix_int * m, const size_t j); +int gsl_matrix_int_set_row(gsl_matrix_int * m, const size_t i, const gsl_vector_int * v); +int gsl_matrix_int_set_col(gsl_matrix_int * m, const size_t j, const gsl_vector_int * v); +/***********************************************************************/ + +/* inline functions if you are using GCC */ + +INLINE_DECL int gsl_matrix_int_get(const gsl_matrix_int * m, const size_t i, const size_t j); +INLINE_DECL void gsl_matrix_int_set(gsl_matrix_int * m, const size_t i, const size_t j, const int x); +INLINE_DECL int * gsl_matrix_int_ptr(gsl_matrix_int * m, const size_t i, const size_t j); +INLINE_DECL const int * gsl_matrix_int_const_ptr(const gsl_matrix_int * m, const size_t i, const size_t j); + +#ifdef HAVE_INLINE +INLINE_FUN +int +gsl_matrix_int_get(const gsl_matrix_int * m, const size_t i, const size_t j) +{ +#if GSL_RANGE_CHECK + if (GSL_RANGE_COND(1)) + { + if (i >= m->size1) + { + GSL_ERROR_VAL("first index out of range", GSL_EINVAL, 0) ; + } + else if (j >= m->size2) + { + GSL_ERROR_VAL("second index out of range", GSL_EINVAL, 0) ; + } + } +#endif + return m->data[i * m->tda + j] ; +} + +INLINE_FUN +void +gsl_matrix_int_set(gsl_matrix_int * m, const size_t i, const size_t j, const int x) +{ +#if GSL_RANGE_CHECK + if (GSL_RANGE_COND(1)) + { + if (i >= m->size1) + { + GSL_ERROR_VOID("first index out of range", GSL_EINVAL) ; + } + else if (j >= m->size2) + { + GSL_ERROR_VOID("second index out of range", GSL_EINVAL) ; + } + } +#endif + m->data[i * m->tda + j] = x ; +} + +INLINE_FUN +int * +gsl_matrix_int_ptr(gsl_matrix_int * m, const size_t i, const size_t j) +{ +#if GSL_RANGE_CHECK + if (GSL_RANGE_COND(1)) + { + if (i >= m->size1) + { + GSL_ERROR_NULL("first index out of range", GSL_EINVAL) ; + } + else if (j >= m->size2) + { + GSL_ERROR_NULL("second index out of range", GSL_EINVAL) ; + } + } +#endif + return (int *) (m->data + (i * m->tda + j)) ; +} + +INLINE_FUN +const int * +gsl_matrix_int_const_ptr(const gsl_matrix_int * m, const size_t i, const size_t j) +{ +#if GSL_RANGE_CHECK + if (GSL_RANGE_COND(1)) + { + if (i >= m->size1) + { + GSL_ERROR_NULL("first index out of range", GSL_EINVAL) ; + } + else if (j >= m->size2) + { + GSL_ERROR_NULL("second index out of range", GSL_EINVAL) ; + } + } +#endif + return (const int *) (m->data + (i * m->tda + j)) ; +} + +#endif + +__END_DECLS + +#endif /* __GSL_MATRIX_INT_H__ */ diff --git a/gsl-2.5/matrix/gsl_matrix_long.h b/gsl-2.5/matrix/gsl_matrix_long.h new file mode 100644 index 00000000..f9b097cc --- /dev/null +++ b/gsl-2.5/matrix/gsl_matrix_long.h @@ -0,0 +1,352 @@ +/* matrix/gsl_matrix_long.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_MATRIX_LONG_H__ +#define __GSL_MATRIX_LONG_H__ + +#include +#include +#include +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +typedef struct +{ + size_t size1; + size_t size2; + size_t tda; + long * data; + gsl_block_long * block; + int owner; +} gsl_matrix_long; + +typedef struct +{ + gsl_matrix_long matrix; +} _gsl_matrix_long_view; + +typedef _gsl_matrix_long_view gsl_matrix_long_view; + +typedef struct +{ + gsl_matrix_long matrix; +} _gsl_matrix_long_const_view; + +typedef const _gsl_matrix_long_const_view gsl_matrix_long_const_view; + +/* Allocation */ + +gsl_matrix_long * +gsl_matrix_long_alloc (const size_t n1, const size_t n2); + +gsl_matrix_long * +gsl_matrix_long_calloc (const size_t n1, const size_t n2); + +gsl_matrix_long * +gsl_matrix_long_alloc_from_block (gsl_block_long * b, + const size_t offset, + const size_t n1, + const size_t n2, + const size_t d2); + +gsl_matrix_long * +gsl_matrix_long_alloc_from_matrix (gsl_matrix_long * m, + const size_t k1, + const size_t k2, + const size_t n1, + const size_t n2); + +gsl_vector_long * +gsl_vector_long_alloc_row_from_matrix (gsl_matrix_long * m, + const size_t i); + +gsl_vector_long * +gsl_vector_long_alloc_col_from_matrix (gsl_matrix_long * m, + const size_t j); + +void gsl_matrix_long_free (gsl_matrix_long * m); + +/* Views */ + +_gsl_matrix_long_view +gsl_matrix_long_submatrix (gsl_matrix_long * m, + const size_t i, const size_t j, + const size_t n1, const size_t n2); + +_gsl_vector_long_view +gsl_matrix_long_row (gsl_matrix_long * m, const size_t i); + +_gsl_vector_long_view +gsl_matrix_long_column (gsl_matrix_long * m, const size_t j); + +_gsl_vector_long_view +gsl_matrix_long_diagonal (gsl_matrix_long * m); + +_gsl_vector_long_view +gsl_matrix_long_subdiagonal (gsl_matrix_long * m, const size_t k); + +_gsl_vector_long_view +gsl_matrix_long_superdiagonal (gsl_matrix_long * m, const size_t k); + +_gsl_vector_long_view +gsl_matrix_long_subrow (gsl_matrix_long * m, const size_t i, + const size_t offset, const size_t n); + +_gsl_vector_long_view +gsl_matrix_long_subcolumn (gsl_matrix_long * m, const size_t j, + const size_t offset, const size_t n); + +_gsl_matrix_long_view +gsl_matrix_long_view_array (long * base, + const size_t n1, + const size_t n2); + +_gsl_matrix_long_view +gsl_matrix_long_view_array_with_tda (long * base, + const size_t n1, + const size_t n2, + const size_t tda); + + +_gsl_matrix_long_view +gsl_matrix_long_view_vector (gsl_vector_long * v, + const size_t n1, + const size_t n2); + +_gsl_matrix_long_view +gsl_matrix_long_view_vector_with_tda (gsl_vector_long * v, + const size_t n1, + const size_t n2, + const size_t tda); + + +_gsl_matrix_long_const_view +gsl_matrix_long_const_submatrix (const gsl_matrix_long * m, + const size_t i, const size_t j, + const size_t n1, const size_t n2); + +_gsl_vector_long_const_view +gsl_matrix_long_const_row (const gsl_matrix_long * m, + const size_t i); + +_gsl_vector_long_const_view +gsl_matrix_long_const_column (const gsl_matrix_long * m, + const size_t j); + +_gsl_vector_long_const_view +gsl_matrix_long_const_diagonal (const gsl_matrix_long * m); + +_gsl_vector_long_const_view +gsl_matrix_long_const_subdiagonal (const gsl_matrix_long * m, + const size_t k); + +_gsl_vector_long_const_view +gsl_matrix_long_const_superdiagonal (const gsl_matrix_long * m, + const size_t k); + +_gsl_vector_long_const_view +gsl_matrix_long_const_subrow (const gsl_matrix_long * m, const size_t i, + const size_t offset, const size_t n); + +_gsl_vector_long_const_view +gsl_matrix_long_const_subcolumn (const gsl_matrix_long * m, const size_t j, + const size_t offset, const size_t n); + +_gsl_matrix_long_const_view +gsl_matrix_long_const_view_array (const long * base, + const size_t n1, + const size_t n2); + +_gsl_matrix_long_const_view +gsl_matrix_long_const_view_array_with_tda (const long * base, + const size_t n1, + const size_t n2, + const size_t tda); + +_gsl_matrix_long_const_view +gsl_matrix_long_const_view_vector (const gsl_vector_long * v, + const size_t n1, + const size_t n2); + +_gsl_matrix_long_const_view +gsl_matrix_long_const_view_vector_with_tda (const gsl_vector_long * v, + const size_t n1, + const size_t n2, + const size_t tda); + +/* Operations */ + +void gsl_matrix_long_set_zero (gsl_matrix_long * m); +void gsl_matrix_long_set_identity (gsl_matrix_long * m); +void gsl_matrix_long_set_all (gsl_matrix_long * m, long x); + +int gsl_matrix_long_fread (FILE * stream, gsl_matrix_long * m) ; +int gsl_matrix_long_fwrite (FILE * stream, const gsl_matrix_long * m) ; +int gsl_matrix_long_fscanf (FILE * stream, gsl_matrix_long * m); +int gsl_matrix_long_fprintf (FILE * stream, const gsl_matrix_long * m, const char * format); + +int gsl_matrix_long_memcpy(gsl_matrix_long * dest, const gsl_matrix_long * src); +int gsl_matrix_long_swap(gsl_matrix_long * m1, gsl_matrix_long * m2); +int gsl_matrix_long_tricpy(const char uplo_src, const int copy_diag, gsl_matrix_long * dest, const gsl_matrix_long * src); + +int gsl_matrix_long_swap_rows(gsl_matrix_long * m, const size_t i, const size_t j); +int gsl_matrix_long_swap_columns(gsl_matrix_long * m, const size_t i, const size_t j); +int gsl_matrix_long_swap_rowcol(gsl_matrix_long * m, const size_t i, const size_t j); +int gsl_matrix_long_transpose (gsl_matrix_long * m); +int gsl_matrix_long_transpose_memcpy (gsl_matrix_long * dest, const gsl_matrix_long * src); +int gsl_matrix_long_transpose_tricpy (const char uplo_src, const int copy_diag, gsl_matrix_long * dest, const gsl_matrix_long * src); + +long gsl_matrix_long_max (const gsl_matrix_long * m); +long gsl_matrix_long_min (const gsl_matrix_long * m); +void gsl_matrix_long_minmax (const gsl_matrix_long * m, long * min_out, long * max_out); + +void gsl_matrix_long_max_index (const gsl_matrix_long * m, size_t * imax, size_t *jmax); +void gsl_matrix_long_min_index (const gsl_matrix_long * m, size_t * imin, size_t *jmin); +void gsl_matrix_long_minmax_index (const gsl_matrix_long * m, size_t * imin, size_t * jmin, size_t * imax, size_t * jmax); + +int gsl_matrix_long_equal (const gsl_matrix_long * a, const gsl_matrix_long * b); + +int gsl_matrix_long_isnull (const gsl_matrix_long * m); +int gsl_matrix_long_ispos (const gsl_matrix_long * m); +int gsl_matrix_long_isneg (const gsl_matrix_long * m); +int gsl_matrix_long_isnonneg (const gsl_matrix_long * m); + +int gsl_matrix_long_add (gsl_matrix_long * a, const gsl_matrix_long * b); +int gsl_matrix_long_sub (gsl_matrix_long * a, const gsl_matrix_long * b); +int gsl_matrix_long_mul_elements (gsl_matrix_long * a, const gsl_matrix_long * b); +int gsl_matrix_long_div_elements (gsl_matrix_long * a, const gsl_matrix_long * b); +int gsl_matrix_long_scale (gsl_matrix_long * a, const double x); +int gsl_matrix_long_add_constant (gsl_matrix_long * a, const double x); +int gsl_matrix_long_add_diagonal (gsl_matrix_long * a, const double x); + +/***********************************************************************/ +/* The functions below are obsolete */ +/***********************************************************************/ +int gsl_matrix_long_get_row(gsl_vector_long * v, const gsl_matrix_long * m, const size_t i); +int gsl_matrix_long_get_col(gsl_vector_long * v, const gsl_matrix_long * m, const size_t j); +int gsl_matrix_long_set_row(gsl_matrix_long * m, const size_t i, const gsl_vector_long * v); +int gsl_matrix_long_set_col(gsl_matrix_long * m, const size_t j, const gsl_vector_long * v); +/***********************************************************************/ + +/* inline functions if you are using GCC */ + +INLINE_DECL long gsl_matrix_long_get(const gsl_matrix_long * m, const size_t i, const size_t j); +INLINE_DECL void gsl_matrix_long_set(gsl_matrix_long * m, const size_t i, const size_t j, const long x); +INLINE_DECL long * gsl_matrix_long_ptr(gsl_matrix_long * m, const size_t i, const size_t j); +INLINE_DECL const long * gsl_matrix_long_const_ptr(const gsl_matrix_long * m, const size_t i, const size_t j); + +#ifdef HAVE_INLINE +INLINE_FUN +long +gsl_matrix_long_get(const gsl_matrix_long * m, const size_t i, const size_t j) +{ +#if GSL_RANGE_CHECK + if (GSL_RANGE_COND(1)) + { + if (i >= m->size1) + { + GSL_ERROR_VAL("first index out of range", GSL_EINVAL, 0) ; + } + else if (j >= m->size2) + { + GSL_ERROR_VAL("second index out of range", GSL_EINVAL, 0) ; + } + } +#endif + return m->data[i * m->tda + j] ; +} + +INLINE_FUN +void +gsl_matrix_long_set(gsl_matrix_long * m, const size_t i, const size_t j, const long x) +{ +#if GSL_RANGE_CHECK + if (GSL_RANGE_COND(1)) + { + if (i >= m->size1) + { + GSL_ERROR_VOID("first index out of range", GSL_EINVAL) ; + } + else if (j >= m->size2) + { + GSL_ERROR_VOID("second index out of range", GSL_EINVAL) ; + } + } +#endif + m->data[i * m->tda + j] = x ; +} + +INLINE_FUN +long * +gsl_matrix_long_ptr(gsl_matrix_long * m, const size_t i, const size_t j) +{ +#if GSL_RANGE_CHECK + if (GSL_RANGE_COND(1)) + { + if (i >= m->size1) + { + GSL_ERROR_NULL("first index out of range", GSL_EINVAL) ; + } + else if (j >= m->size2) + { + GSL_ERROR_NULL("second index out of range", GSL_EINVAL) ; + } + } +#endif + return (long *) (m->data + (i * m->tda + j)) ; +} + +INLINE_FUN +const long * +gsl_matrix_long_const_ptr(const gsl_matrix_long * m, const size_t i, const size_t j) +{ +#if GSL_RANGE_CHECK + if (GSL_RANGE_COND(1)) + { + if (i >= m->size1) + { + GSL_ERROR_NULL("first index out of range", GSL_EINVAL) ; + } + else if (j >= m->size2) + { + GSL_ERROR_NULL("second index out of range", GSL_EINVAL) ; + } + } +#endif + return (const long *) (m->data + (i * m->tda + j)) ; +} + +#endif + +__END_DECLS + +#endif /* __GSL_MATRIX_LONG_H__ */ diff --git a/gsl-2.5/matrix/gsl_matrix_long_double.h b/gsl-2.5/matrix/gsl_matrix_long_double.h new file mode 100644 index 00000000..0f555535 --- /dev/null +++ b/gsl-2.5/matrix/gsl_matrix_long_double.h @@ -0,0 +1,352 @@ +/* matrix/gsl_matrix_long_double.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_MATRIX_LONG_DOUBLE_H__ +#define __GSL_MATRIX_LONG_DOUBLE_H__ + +#include +#include +#include +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +typedef struct +{ + size_t size1; + size_t size2; + size_t tda; + long double * data; + gsl_block_long_double * block; + int owner; +} gsl_matrix_long_double; + +typedef struct +{ + gsl_matrix_long_double matrix; +} _gsl_matrix_long_double_view; + +typedef _gsl_matrix_long_double_view gsl_matrix_long_double_view; + +typedef struct +{ + gsl_matrix_long_double matrix; +} _gsl_matrix_long_double_const_view; + +typedef const _gsl_matrix_long_double_const_view gsl_matrix_long_double_const_view; + +/* Allocation */ + +gsl_matrix_long_double * +gsl_matrix_long_double_alloc (const size_t n1, const size_t n2); + +gsl_matrix_long_double * +gsl_matrix_long_double_calloc (const size_t n1, const size_t n2); + +gsl_matrix_long_double * +gsl_matrix_long_double_alloc_from_block (gsl_block_long_double * b, + const size_t offset, + const size_t n1, + const size_t n2, + const size_t d2); + +gsl_matrix_long_double * +gsl_matrix_long_double_alloc_from_matrix (gsl_matrix_long_double * m, + const size_t k1, + const size_t k2, + const size_t n1, + const size_t n2); + +gsl_vector_long_double * +gsl_vector_long_double_alloc_row_from_matrix (gsl_matrix_long_double * m, + const size_t i); + +gsl_vector_long_double * +gsl_vector_long_double_alloc_col_from_matrix (gsl_matrix_long_double * m, + const size_t j); + +void gsl_matrix_long_double_free (gsl_matrix_long_double * m); + +/* Views */ + +_gsl_matrix_long_double_view +gsl_matrix_long_double_submatrix (gsl_matrix_long_double * m, + const size_t i, const size_t j, + const size_t n1, const size_t n2); + +_gsl_vector_long_double_view +gsl_matrix_long_double_row (gsl_matrix_long_double * m, const size_t i); + +_gsl_vector_long_double_view +gsl_matrix_long_double_column (gsl_matrix_long_double * m, const size_t j); + +_gsl_vector_long_double_view +gsl_matrix_long_double_diagonal (gsl_matrix_long_double * m); + +_gsl_vector_long_double_view +gsl_matrix_long_double_subdiagonal (gsl_matrix_long_double * m, const size_t k); + +_gsl_vector_long_double_view +gsl_matrix_long_double_superdiagonal (gsl_matrix_long_double * m, const size_t k); + +_gsl_vector_long_double_view +gsl_matrix_long_double_subrow (gsl_matrix_long_double * m, const size_t i, + const size_t offset, const size_t n); + +_gsl_vector_long_double_view +gsl_matrix_long_double_subcolumn (gsl_matrix_long_double * m, const size_t j, + const size_t offset, const size_t n); + +_gsl_matrix_long_double_view +gsl_matrix_long_double_view_array (long double * base, + const size_t n1, + const size_t n2); + +_gsl_matrix_long_double_view +gsl_matrix_long_double_view_array_with_tda (long double * base, + const size_t n1, + const size_t n2, + const size_t tda); + + +_gsl_matrix_long_double_view +gsl_matrix_long_double_view_vector (gsl_vector_long_double * v, + const size_t n1, + const size_t n2); + +_gsl_matrix_long_double_view +gsl_matrix_long_double_view_vector_with_tda (gsl_vector_long_double * v, + const size_t n1, + const size_t n2, + const size_t tda); + + +_gsl_matrix_long_double_const_view +gsl_matrix_long_double_const_submatrix (const gsl_matrix_long_double * m, + const size_t i, const size_t j, + const size_t n1, const size_t n2); + +_gsl_vector_long_double_const_view +gsl_matrix_long_double_const_row (const gsl_matrix_long_double * m, + const size_t i); + +_gsl_vector_long_double_const_view +gsl_matrix_long_double_const_column (const gsl_matrix_long_double * m, + const size_t j); + +_gsl_vector_long_double_const_view +gsl_matrix_long_double_const_diagonal (const gsl_matrix_long_double * m); + +_gsl_vector_long_double_const_view +gsl_matrix_long_double_const_subdiagonal (const gsl_matrix_long_double * m, + const size_t k); + +_gsl_vector_long_double_const_view +gsl_matrix_long_double_const_superdiagonal (const gsl_matrix_long_double * m, + const size_t k); + +_gsl_vector_long_double_const_view +gsl_matrix_long_double_const_subrow (const gsl_matrix_long_double * m, const size_t i, + const size_t offset, const size_t n); + +_gsl_vector_long_double_const_view +gsl_matrix_long_double_const_subcolumn (const gsl_matrix_long_double * m, const size_t j, + const size_t offset, const size_t n); + +_gsl_matrix_long_double_const_view +gsl_matrix_long_double_const_view_array (const long double * base, + const size_t n1, + const size_t n2); + +_gsl_matrix_long_double_const_view +gsl_matrix_long_double_const_view_array_with_tda (const long double * base, + const size_t n1, + const size_t n2, + const size_t tda); + +_gsl_matrix_long_double_const_view +gsl_matrix_long_double_const_view_vector (const gsl_vector_long_double * v, + const size_t n1, + const size_t n2); + +_gsl_matrix_long_double_const_view +gsl_matrix_long_double_const_view_vector_with_tda (const gsl_vector_long_double * v, + const size_t n1, + const size_t n2, + const size_t tda); + +/* Operations */ + +void gsl_matrix_long_double_set_zero (gsl_matrix_long_double * m); +void gsl_matrix_long_double_set_identity (gsl_matrix_long_double * m); +void gsl_matrix_long_double_set_all (gsl_matrix_long_double * m, long double x); + +int gsl_matrix_long_double_fread (FILE * stream, gsl_matrix_long_double * m) ; +int gsl_matrix_long_double_fwrite (FILE * stream, const gsl_matrix_long_double * m) ; +int gsl_matrix_long_double_fscanf (FILE * stream, gsl_matrix_long_double * m); +int gsl_matrix_long_double_fprintf (FILE * stream, const gsl_matrix_long_double * m, const char * format); + +int gsl_matrix_long_double_memcpy(gsl_matrix_long_double * dest, const gsl_matrix_long_double * src); +int gsl_matrix_long_double_swap(gsl_matrix_long_double * m1, gsl_matrix_long_double * m2); +int gsl_matrix_long_double_tricpy(const char uplo_src, const int copy_diag, gsl_matrix_long_double * dest, const gsl_matrix_long_double * src); + +int gsl_matrix_long_double_swap_rows(gsl_matrix_long_double * m, const size_t i, const size_t j); +int gsl_matrix_long_double_swap_columns(gsl_matrix_long_double * m, const size_t i, const size_t j); +int gsl_matrix_long_double_swap_rowcol(gsl_matrix_long_double * m, const size_t i, const size_t j); +int gsl_matrix_long_double_transpose (gsl_matrix_long_double * m); +int gsl_matrix_long_double_transpose_memcpy (gsl_matrix_long_double * dest, const gsl_matrix_long_double * src); +int gsl_matrix_long_double_transpose_tricpy (const char uplo_src, const int copy_diag, gsl_matrix_long_double * dest, const gsl_matrix_long_double * src); + +long double gsl_matrix_long_double_max (const gsl_matrix_long_double * m); +long double gsl_matrix_long_double_min (const gsl_matrix_long_double * m); +void gsl_matrix_long_double_minmax (const gsl_matrix_long_double * m, long double * min_out, long double * max_out); + +void gsl_matrix_long_double_max_index (const gsl_matrix_long_double * m, size_t * imax, size_t *jmax); +void gsl_matrix_long_double_min_index (const gsl_matrix_long_double * m, size_t * imin, size_t *jmin); +void gsl_matrix_long_double_minmax_index (const gsl_matrix_long_double * m, size_t * imin, size_t * jmin, size_t * imax, size_t * jmax); + +int gsl_matrix_long_double_equal (const gsl_matrix_long_double * a, const gsl_matrix_long_double * b); + +int gsl_matrix_long_double_isnull (const gsl_matrix_long_double * m); +int gsl_matrix_long_double_ispos (const gsl_matrix_long_double * m); +int gsl_matrix_long_double_isneg (const gsl_matrix_long_double * m); +int gsl_matrix_long_double_isnonneg (const gsl_matrix_long_double * m); + +int gsl_matrix_long_double_add (gsl_matrix_long_double * a, const gsl_matrix_long_double * b); +int gsl_matrix_long_double_sub (gsl_matrix_long_double * a, const gsl_matrix_long_double * b); +int gsl_matrix_long_double_mul_elements (gsl_matrix_long_double * a, const gsl_matrix_long_double * b); +int gsl_matrix_long_double_div_elements (gsl_matrix_long_double * a, const gsl_matrix_long_double * b); +int gsl_matrix_long_double_scale (gsl_matrix_long_double * a, const double x); +int gsl_matrix_long_double_add_constant (gsl_matrix_long_double * a, const double x); +int gsl_matrix_long_double_add_diagonal (gsl_matrix_long_double * a, const double x); + +/***********************************************************************/ +/* The functions below are obsolete */ +/***********************************************************************/ +int gsl_matrix_long_double_get_row(gsl_vector_long_double * v, const gsl_matrix_long_double * m, const size_t i); +int gsl_matrix_long_double_get_col(gsl_vector_long_double * v, const gsl_matrix_long_double * m, const size_t j); +int gsl_matrix_long_double_set_row(gsl_matrix_long_double * m, const size_t i, const gsl_vector_long_double * v); +int gsl_matrix_long_double_set_col(gsl_matrix_long_double * m, const size_t j, const gsl_vector_long_double * v); +/***********************************************************************/ + +/* inline functions if you are using GCC */ + +INLINE_DECL long double gsl_matrix_long_double_get(const gsl_matrix_long_double * m, const size_t i, const size_t j); +INLINE_DECL void gsl_matrix_long_double_set(gsl_matrix_long_double * m, const size_t i, const size_t j, const long double x); +INLINE_DECL long double * gsl_matrix_long_double_ptr(gsl_matrix_long_double * m, const size_t i, const size_t j); +INLINE_DECL const long double * gsl_matrix_long_double_const_ptr(const gsl_matrix_long_double * m, const size_t i, const size_t j); + +#ifdef HAVE_INLINE +INLINE_FUN +long double +gsl_matrix_long_double_get(const gsl_matrix_long_double * m, const size_t i, const size_t j) +{ +#if GSL_RANGE_CHECK + if (GSL_RANGE_COND(1)) + { + if (i >= m->size1) + { + GSL_ERROR_VAL("first index out of range", GSL_EINVAL, 0) ; + } + else if (j >= m->size2) + { + GSL_ERROR_VAL("second index out of range", GSL_EINVAL, 0) ; + } + } +#endif + return m->data[i * m->tda + j] ; +} + +INLINE_FUN +void +gsl_matrix_long_double_set(gsl_matrix_long_double * m, const size_t i, const size_t j, const long double x) +{ +#if GSL_RANGE_CHECK + if (GSL_RANGE_COND(1)) + { + if (i >= m->size1) + { + GSL_ERROR_VOID("first index out of range", GSL_EINVAL) ; + } + else if (j >= m->size2) + { + GSL_ERROR_VOID("second index out of range", GSL_EINVAL) ; + } + } +#endif + m->data[i * m->tda + j] = x ; +} + +INLINE_FUN +long double * +gsl_matrix_long_double_ptr(gsl_matrix_long_double * m, const size_t i, const size_t j) +{ +#if GSL_RANGE_CHECK + if (GSL_RANGE_COND(1)) + { + if (i >= m->size1) + { + GSL_ERROR_NULL("first index out of range", GSL_EINVAL) ; + } + else if (j >= m->size2) + { + GSL_ERROR_NULL("second index out of range", GSL_EINVAL) ; + } + } +#endif + return (long double *) (m->data + (i * m->tda + j)) ; +} + +INLINE_FUN +const long double * +gsl_matrix_long_double_const_ptr(const gsl_matrix_long_double * m, const size_t i, const size_t j) +{ +#if GSL_RANGE_CHECK + if (GSL_RANGE_COND(1)) + { + if (i >= m->size1) + { + GSL_ERROR_NULL("first index out of range", GSL_EINVAL) ; + } + else if (j >= m->size2) + { + GSL_ERROR_NULL("second index out of range", GSL_EINVAL) ; + } + } +#endif + return (const long double *) (m->data + (i * m->tda + j)) ; +} + +#endif + +__END_DECLS + +#endif /* __GSL_MATRIX_LONG_DOUBLE_H__ */ diff --git a/gsl-2.5/matrix/gsl_matrix_short.h b/gsl-2.5/matrix/gsl_matrix_short.h new file mode 100644 index 00000000..f7932498 --- /dev/null +++ b/gsl-2.5/matrix/gsl_matrix_short.h @@ -0,0 +1,352 @@ +/* matrix/gsl_matrix_short.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_MATRIX_SHORT_H__ +#define __GSL_MATRIX_SHORT_H__ + +#include +#include +#include +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +typedef struct +{ + size_t size1; + size_t size2; + size_t tda; + short * data; + gsl_block_short * block; + int owner; +} gsl_matrix_short; + +typedef struct +{ + gsl_matrix_short matrix; +} _gsl_matrix_short_view; + +typedef _gsl_matrix_short_view gsl_matrix_short_view; + +typedef struct +{ + gsl_matrix_short matrix; +} _gsl_matrix_short_const_view; + +typedef const _gsl_matrix_short_const_view gsl_matrix_short_const_view; + +/* Allocation */ + +gsl_matrix_short * +gsl_matrix_short_alloc (const size_t n1, const size_t n2); + +gsl_matrix_short * +gsl_matrix_short_calloc (const size_t n1, const size_t n2); + +gsl_matrix_short * +gsl_matrix_short_alloc_from_block (gsl_block_short * b, + const size_t offset, + const size_t n1, + const size_t n2, + const size_t d2); + +gsl_matrix_short * +gsl_matrix_short_alloc_from_matrix (gsl_matrix_short * m, + const size_t k1, + const size_t k2, + const size_t n1, + const size_t n2); + +gsl_vector_short * +gsl_vector_short_alloc_row_from_matrix (gsl_matrix_short * m, + const size_t i); + +gsl_vector_short * +gsl_vector_short_alloc_col_from_matrix (gsl_matrix_short * m, + const size_t j); + +void gsl_matrix_short_free (gsl_matrix_short * m); + +/* Views */ + +_gsl_matrix_short_view +gsl_matrix_short_submatrix (gsl_matrix_short * m, + const size_t i, const size_t j, + const size_t n1, const size_t n2); + +_gsl_vector_short_view +gsl_matrix_short_row (gsl_matrix_short * m, const size_t i); + +_gsl_vector_short_view +gsl_matrix_short_column (gsl_matrix_short * m, const size_t j); + +_gsl_vector_short_view +gsl_matrix_short_diagonal (gsl_matrix_short * m); + +_gsl_vector_short_view +gsl_matrix_short_subdiagonal (gsl_matrix_short * m, const size_t k); + +_gsl_vector_short_view +gsl_matrix_short_superdiagonal (gsl_matrix_short * m, const size_t k); + +_gsl_vector_short_view +gsl_matrix_short_subrow (gsl_matrix_short * m, const size_t i, + const size_t offset, const size_t n); + +_gsl_vector_short_view +gsl_matrix_short_subcolumn (gsl_matrix_short * m, const size_t j, + const size_t offset, const size_t n); + +_gsl_matrix_short_view +gsl_matrix_short_view_array (short * base, + const size_t n1, + const size_t n2); + +_gsl_matrix_short_view +gsl_matrix_short_view_array_with_tda (short * base, + const size_t n1, + const size_t n2, + const size_t tda); + + +_gsl_matrix_short_view +gsl_matrix_short_view_vector (gsl_vector_short * v, + const size_t n1, + const size_t n2); + +_gsl_matrix_short_view +gsl_matrix_short_view_vector_with_tda (gsl_vector_short * v, + const size_t n1, + const size_t n2, + const size_t tda); + + +_gsl_matrix_short_const_view +gsl_matrix_short_const_submatrix (const gsl_matrix_short * m, + const size_t i, const size_t j, + const size_t n1, const size_t n2); + +_gsl_vector_short_const_view +gsl_matrix_short_const_row (const gsl_matrix_short * m, + const size_t i); + +_gsl_vector_short_const_view +gsl_matrix_short_const_column (const gsl_matrix_short * m, + const size_t j); + +_gsl_vector_short_const_view +gsl_matrix_short_const_diagonal (const gsl_matrix_short * m); + +_gsl_vector_short_const_view +gsl_matrix_short_const_subdiagonal (const gsl_matrix_short * m, + const size_t k); + +_gsl_vector_short_const_view +gsl_matrix_short_const_superdiagonal (const gsl_matrix_short * m, + const size_t k); + +_gsl_vector_short_const_view +gsl_matrix_short_const_subrow (const gsl_matrix_short * m, const size_t i, + const size_t offset, const size_t n); + +_gsl_vector_short_const_view +gsl_matrix_short_const_subcolumn (const gsl_matrix_short * m, const size_t j, + const size_t offset, const size_t n); + +_gsl_matrix_short_const_view +gsl_matrix_short_const_view_array (const short * base, + const size_t n1, + const size_t n2); + +_gsl_matrix_short_const_view +gsl_matrix_short_const_view_array_with_tda (const short * base, + const size_t n1, + const size_t n2, + const size_t tda); + +_gsl_matrix_short_const_view +gsl_matrix_short_const_view_vector (const gsl_vector_short * v, + const size_t n1, + const size_t n2); + +_gsl_matrix_short_const_view +gsl_matrix_short_const_view_vector_with_tda (const gsl_vector_short * v, + const size_t n1, + const size_t n2, + const size_t tda); + +/* Operations */ + +void gsl_matrix_short_set_zero (gsl_matrix_short * m); +void gsl_matrix_short_set_identity (gsl_matrix_short * m); +void gsl_matrix_short_set_all (gsl_matrix_short * m, short x); + +int gsl_matrix_short_fread (FILE * stream, gsl_matrix_short * m) ; +int gsl_matrix_short_fwrite (FILE * stream, const gsl_matrix_short * m) ; +int gsl_matrix_short_fscanf (FILE * stream, gsl_matrix_short * m); +int gsl_matrix_short_fprintf (FILE * stream, const gsl_matrix_short * m, const char * format); + +int gsl_matrix_short_memcpy(gsl_matrix_short * dest, const gsl_matrix_short * src); +int gsl_matrix_short_swap(gsl_matrix_short * m1, gsl_matrix_short * m2); +int gsl_matrix_short_tricpy(const char uplo_src, const int copy_diag, gsl_matrix_short * dest, const gsl_matrix_short * src); + +int gsl_matrix_short_swap_rows(gsl_matrix_short * m, const size_t i, const size_t j); +int gsl_matrix_short_swap_columns(gsl_matrix_short * m, const size_t i, const size_t j); +int gsl_matrix_short_swap_rowcol(gsl_matrix_short * m, const size_t i, const size_t j); +int gsl_matrix_short_transpose (gsl_matrix_short * m); +int gsl_matrix_short_transpose_memcpy (gsl_matrix_short * dest, const gsl_matrix_short * src); +int gsl_matrix_short_transpose_tricpy (const char uplo_src, const int copy_diag, gsl_matrix_short * dest, const gsl_matrix_short * src); + +short gsl_matrix_short_max (const gsl_matrix_short * m); +short gsl_matrix_short_min (const gsl_matrix_short * m); +void gsl_matrix_short_minmax (const gsl_matrix_short * m, short * min_out, short * max_out); + +void gsl_matrix_short_max_index (const gsl_matrix_short * m, size_t * imax, size_t *jmax); +void gsl_matrix_short_min_index (const gsl_matrix_short * m, size_t * imin, size_t *jmin); +void gsl_matrix_short_minmax_index (const gsl_matrix_short * m, size_t * imin, size_t * jmin, size_t * imax, size_t * jmax); + +int gsl_matrix_short_equal (const gsl_matrix_short * a, const gsl_matrix_short * b); + +int gsl_matrix_short_isnull (const gsl_matrix_short * m); +int gsl_matrix_short_ispos (const gsl_matrix_short * m); +int gsl_matrix_short_isneg (const gsl_matrix_short * m); +int gsl_matrix_short_isnonneg (const gsl_matrix_short * m); + +int gsl_matrix_short_add (gsl_matrix_short * a, const gsl_matrix_short * b); +int gsl_matrix_short_sub (gsl_matrix_short * a, const gsl_matrix_short * b); +int gsl_matrix_short_mul_elements (gsl_matrix_short * a, const gsl_matrix_short * b); +int gsl_matrix_short_div_elements (gsl_matrix_short * a, const gsl_matrix_short * b); +int gsl_matrix_short_scale (gsl_matrix_short * a, const double x); +int gsl_matrix_short_add_constant (gsl_matrix_short * a, const double x); +int gsl_matrix_short_add_diagonal (gsl_matrix_short * a, const double x); + +/***********************************************************************/ +/* The functions below are obsolete */ +/***********************************************************************/ +int gsl_matrix_short_get_row(gsl_vector_short * v, const gsl_matrix_short * m, const size_t i); +int gsl_matrix_short_get_col(gsl_vector_short * v, const gsl_matrix_short * m, const size_t j); +int gsl_matrix_short_set_row(gsl_matrix_short * m, const size_t i, const gsl_vector_short * v); +int gsl_matrix_short_set_col(gsl_matrix_short * m, const size_t j, const gsl_vector_short * v); +/***********************************************************************/ + +/* inline functions if you are using GCC */ + +INLINE_DECL short gsl_matrix_short_get(const gsl_matrix_short * m, const size_t i, const size_t j); +INLINE_DECL void gsl_matrix_short_set(gsl_matrix_short * m, const size_t i, const size_t j, const short x); +INLINE_DECL short * gsl_matrix_short_ptr(gsl_matrix_short * m, const size_t i, const size_t j); +INLINE_DECL const short * gsl_matrix_short_const_ptr(const gsl_matrix_short * m, const size_t i, const size_t j); + +#ifdef HAVE_INLINE +INLINE_FUN +short +gsl_matrix_short_get(const gsl_matrix_short * m, const size_t i, const size_t j) +{ +#if GSL_RANGE_CHECK + if (GSL_RANGE_COND(1)) + { + if (i >= m->size1) + { + GSL_ERROR_VAL("first index out of range", GSL_EINVAL, 0) ; + } + else if (j >= m->size2) + { + GSL_ERROR_VAL("second index out of range", GSL_EINVAL, 0) ; + } + } +#endif + return m->data[i * m->tda + j] ; +} + +INLINE_FUN +void +gsl_matrix_short_set(gsl_matrix_short * m, const size_t i, const size_t j, const short x) +{ +#if GSL_RANGE_CHECK + if (GSL_RANGE_COND(1)) + { + if (i >= m->size1) + { + GSL_ERROR_VOID("first index out of range", GSL_EINVAL) ; + } + else if (j >= m->size2) + { + GSL_ERROR_VOID("second index out of range", GSL_EINVAL) ; + } + } +#endif + m->data[i * m->tda + j] = x ; +} + +INLINE_FUN +short * +gsl_matrix_short_ptr(gsl_matrix_short * m, const size_t i, const size_t j) +{ +#if GSL_RANGE_CHECK + if (GSL_RANGE_COND(1)) + { + if (i >= m->size1) + { + GSL_ERROR_NULL("first index out of range", GSL_EINVAL) ; + } + else if (j >= m->size2) + { + GSL_ERROR_NULL("second index out of range", GSL_EINVAL) ; + } + } +#endif + return (short *) (m->data + (i * m->tda + j)) ; +} + +INLINE_FUN +const short * +gsl_matrix_short_const_ptr(const gsl_matrix_short * m, const size_t i, const size_t j) +{ +#if GSL_RANGE_CHECK + if (GSL_RANGE_COND(1)) + { + if (i >= m->size1) + { + GSL_ERROR_NULL("first index out of range", GSL_EINVAL) ; + } + else if (j >= m->size2) + { + GSL_ERROR_NULL("second index out of range", GSL_EINVAL) ; + } + } +#endif + return (const short *) (m->data + (i * m->tda + j)) ; +} + +#endif + +__END_DECLS + +#endif /* __GSL_MATRIX_SHORT_H__ */ diff --git a/gsl-2.5/matrix/gsl_matrix_uchar.h b/gsl-2.5/matrix/gsl_matrix_uchar.h new file mode 100644 index 00000000..1e674634 --- /dev/null +++ b/gsl-2.5/matrix/gsl_matrix_uchar.h @@ -0,0 +1,352 @@ +/* matrix/gsl_matrix_uchar.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_MATRIX_UCHAR_H__ +#define __GSL_MATRIX_UCHAR_H__ + +#include +#include +#include +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +typedef struct +{ + size_t size1; + size_t size2; + size_t tda; + unsigned char * data; + gsl_block_uchar * block; + int owner; +} gsl_matrix_uchar; + +typedef struct +{ + gsl_matrix_uchar matrix; +} _gsl_matrix_uchar_view; + +typedef _gsl_matrix_uchar_view gsl_matrix_uchar_view; + +typedef struct +{ + gsl_matrix_uchar matrix; +} _gsl_matrix_uchar_const_view; + +typedef const _gsl_matrix_uchar_const_view gsl_matrix_uchar_const_view; + +/* Allocation */ + +gsl_matrix_uchar * +gsl_matrix_uchar_alloc (const size_t n1, const size_t n2); + +gsl_matrix_uchar * +gsl_matrix_uchar_calloc (const size_t n1, const size_t n2); + +gsl_matrix_uchar * +gsl_matrix_uchar_alloc_from_block (gsl_block_uchar * b, + const size_t offset, + const size_t n1, + const size_t n2, + const size_t d2); + +gsl_matrix_uchar * +gsl_matrix_uchar_alloc_from_matrix (gsl_matrix_uchar * m, + const size_t k1, + const size_t k2, + const size_t n1, + const size_t n2); + +gsl_vector_uchar * +gsl_vector_uchar_alloc_row_from_matrix (gsl_matrix_uchar * m, + const size_t i); + +gsl_vector_uchar * +gsl_vector_uchar_alloc_col_from_matrix (gsl_matrix_uchar * m, + const size_t j); + +void gsl_matrix_uchar_free (gsl_matrix_uchar * m); + +/* Views */ + +_gsl_matrix_uchar_view +gsl_matrix_uchar_submatrix (gsl_matrix_uchar * m, + const size_t i, const size_t j, + const size_t n1, const size_t n2); + +_gsl_vector_uchar_view +gsl_matrix_uchar_row (gsl_matrix_uchar * m, const size_t i); + +_gsl_vector_uchar_view +gsl_matrix_uchar_column (gsl_matrix_uchar * m, const size_t j); + +_gsl_vector_uchar_view +gsl_matrix_uchar_diagonal (gsl_matrix_uchar * m); + +_gsl_vector_uchar_view +gsl_matrix_uchar_subdiagonal (gsl_matrix_uchar * m, const size_t k); + +_gsl_vector_uchar_view +gsl_matrix_uchar_superdiagonal (gsl_matrix_uchar * m, const size_t k); + +_gsl_vector_uchar_view +gsl_matrix_uchar_subrow (gsl_matrix_uchar * m, const size_t i, + const size_t offset, const size_t n); + +_gsl_vector_uchar_view +gsl_matrix_uchar_subcolumn (gsl_matrix_uchar * m, const size_t j, + const size_t offset, const size_t n); + +_gsl_matrix_uchar_view +gsl_matrix_uchar_view_array (unsigned char * base, + const size_t n1, + const size_t n2); + +_gsl_matrix_uchar_view +gsl_matrix_uchar_view_array_with_tda (unsigned char * base, + const size_t n1, + const size_t n2, + const size_t tda); + + +_gsl_matrix_uchar_view +gsl_matrix_uchar_view_vector (gsl_vector_uchar * v, + const size_t n1, + const size_t n2); + +_gsl_matrix_uchar_view +gsl_matrix_uchar_view_vector_with_tda (gsl_vector_uchar * v, + const size_t n1, + const size_t n2, + const size_t tda); + + +_gsl_matrix_uchar_const_view +gsl_matrix_uchar_const_submatrix (const gsl_matrix_uchar * m, + const size_t i, const size_t j, + const size_t n1, const size_t n2); + +_gsl_vector_uchar_const_view +gsl_matrix_uchar_const_row (const gsl_matrix_uchar * m, + const size_t i); + +_gsl_vector_uchar_const_view +gsl_matrix_uchar_const_column (const gsl_matrix_uchar * m, + const size_t j); + +_gsl_vector_uchar_const_view +gsl_matrix_uchar_const_diagonal (const gsl_matrix_uchar * m); + +_gsl_vector_uchar_const_view +gsl_matrix_uchar_const_subdiagonal (const gsl_matrix_uchar * m, + const size_t k); + +_gsl_vector_uchar_const_view +gsl_matrix_uchar_const_superdiagonal (const gsl_matrix_uchar * m, + const size_t k); + +_gsl_vector_uchar_const_view +gsl_matrix_uchar_const_subrow (const gsl_matrix_uchar * m, const size_t i, + const size_t offset, const size_t n); + +_gsl_vector_uchar_const_view +gsl_matrix_uchar_const_subcolumn (const gsl_matrix_uchar * m, const size_t j, + const size_t offset, const size_t n); + +_gsl_matrix_uchar_const_view +gsl_matrix_uchar_const_view_array (const unsigned char * base, + const size_t n1, + const size_t n2); + +_gsl_matrix_uchar_const_view +gsl_matrix_uchar_const_view_array_with_tda (const unsigned char * base, + const size_t n1, + const size_t n2, + const size_t tda); + +_gsl_matrix_uchar_const_view +gsl_matrix_uchar_const_view_vector (const gsl_vector_uchar * v, + const size_t n1, + const size_t n2); + +_gsl_matrix_uchar_const_view +gsl_matrix_uchar_const_view_vector_with_tda (const gsl_vector_uchar * v, + const size_t n1, + const size_t n2, + const size_t tda); + +/* Operations */ + +void gsl_matrix_uchar_set_zero (gsl_matrix_uchar * m); +void gsl_matrix_uchar_set_identity (gsl_matrix_uchar * m); +void gsl_matrix_uchar_set_all (gsl_matrix_uchar * m, unsigned char x); + +int gsl_matrix_uchar_fread (FILE * stream, gsl_matrix_uchar * m) ; +int gsl_matrix_uchar_fwrite (FILE * stream, const gsl_matrix_uchar * m) ; +int gsl_matrix_uchar_fscanf (FILE * stream, gsl_matrix_uchar * m); +int gsl_matrix_uchar_fprintf (FILE * stream, const gsl_matrix_uchar * m, const char * format); + +int gsl_matrix_uchar_memcpy(gsl_matrix_uchar * dest, const gsl_matrix_uchar * src); +int gsl_matrix_uchar_swap(gsl_matrix_uchar * m1, gsl_matrix_uchar * m2); +int gsl_matrix_uchar_tricpy(const char uplo_src, const int copy_diag, gsl_matrix_uchar * dest, const gsl_matrix_uchar * src); + +int gsl_matrix_uchar_swap_rows(gsl_matrix_uchar * m, const size_t i, const size_t j); +int gsl_matrix_uchar_swap_columns(gsl_matrix_uchar * m, const size_t i, const size_t j); +int gsl_matrix_uchar_swap_rowcol(gsl_matrix_uchar * m, const size_t i, const size_t j); +int gsl_matrix_uchar_transpose (gsl_matrix_uchar * m); +int gsl_matrix_uchar_transpose_memcpy (gsl_matrix_uchar * dest, const gsl_matrix_uchar * src); +int gsl_matrix_uchar_transpose_tricpy (const char uplo_src, const int copy_diag, gsl_matrix_uchar * dest, const gsl_matrix_uchar * src); + +unsigned char gsl_matrix_uchar_max (const gsl_matrix_uchar * m); +unsigned char gsl_matrix_uchar_min (const gsl_matrix_uchar * m); +void gsl_matrix_uchar_minmax (const gsl_matrix_uchar * m, unsigned char * min_out, unsigned char * max_out); + +void gsl_matrix_uchar_max_index (const gsl_matrix_uchar * m, size_t * imax, size_t *jmax); +void gsl_matrix_uchar_min_index (const gsl_matrix_uchar * m, size_t * imin, size_t *jmin); +void gsl_matrix_uchar_minmax_index (const gsl_matrix_uchar * m, size_t * imin, size_t * jmin, size_t * imax, size_t * jmax); + +int gsl_matrix_uchar_equal (const gsl_matrix_uchar * a, const gsl_matrix_uchar * b); + +int gsl_matrix_uchar_isnull (const gsl_matrix_uchar * m); +int gsl_matrix_uchar_ispos (const gsl_matrix_uchar * m); +int gsl_matrix_uchar_isneg (const gsl_matrix_uchar * m); +int gsl_matrix_uchar_isnonneg (const gsl_matrix_uchar * m); + +int gsl_matrix_uchar_add (gsl_matrix_uchar * a, const gsl_matrix_uchar * b); +int gsl_matrix_uchar_sub (gsl_matrix_uchar * a, const gsl_matrix_uchar * b); +int gsl_matrix_uchar_mul_elements (gsl_matrix_uchar * a, const gsl_matrix_uchar * b); +int gsl_matrix_uchar_div_elements (gsl_matrix_uchar * a, const gsl_matrix_uchar * b); +int gsl_matrix_uchar_scale (gsl_matrix_uchar * a, const double x); +int gsl_matrix_uchar_add_constant (gsl_matrix_uchar * a, const double x); +int gsl_matrix_uchar_add_diagonal (gsl_matrix_uchar * a, const double x); + +/***********************************************************************/ +/* The functions below are obsolete */ +/***********************************************************************/ +int gsl_matrix_uchar_get_row(gsl_vector_uchar * v, const gsl_matrix_uchar * m, const size_t i); +int gsl_matrix_uchar_get_col(gsl_vector_uchar * v, const gsl_matrix_uchar * m, const size_t j); +int gsl_matrix_uchar_set_row(gsl_matrix_uchar * m, const size_t i, const gsl_vector_uchar * v); +int gsl_matrix_uchar_set_col(gsl_matrix_uchar * m, const size_t j, const gsl_vector_uchar * v); +/***********************************************************************/ + +/* inline functions if you are using GCC */ + +INLINE_DECL unsigned char gsl_matrix_uchar_get(const gsl_matrix_uchar * m, const size_t i, const size_t j); +INLINE_DECL void gsl_matrix_uchar_set(gsl_matrix_uchar * m, const size_t i, const size_t j, const unsigned char x); +INLINE_DECL unsigned char * gsl_matrix_uchar_ptr(gsl_matrix_uchar * m, const size_t i, const size_t j); +INLINE_DECL const unsigned char * gsl_matrix_uchar_const_ptr(const gsl_matrix_uchar * m, const size_t i, const size_t j); + +#ifdef HAVE_INLINE +INLINE_FUN +unsigned char +gsl_matrix_uchar_get(const gsl_matrix_uchar * m, const size_t i, const size_t j) +{ +#if GSL_RANGE_CHECK + if (GSL_RANGE_COND(1)) + { + if (i >= m->size1) + { + GSL_ERROR_VAL("first index out of range", GSL_EINVAL, 0) ; + } + else if (j >= m->size2) + { + GSL_ERROR_VAL("second index out of range", GSL_EINVAL, 0) ; + } + } +#endif + return m->data[i * m->tda + j] ; +} + +INLINE_FUN +void +gsl_matrix_uchar_set(gsl_matrix_uchar * m, const size_t i, const size_t j, const unsigned char x) +{ +#if GSL_RANGE_CHECK + if (GSL_RANGE_COND(1)) + { + if (i >= m->size1) + { + GSL_ERROR_VOID("first index out of range", GSL_EINVAL) ; + } + else if (j >= m->size2) + { + GSL_ERROR_VOID("second index out of range", GSL_EINVAL) ; + } + } +#endif + m->data[i * m->tda + j] = x ; +} + +INLINE_FUN +unsigned char * +gsl_matrix_uchar_ptr(gsl_matrix_uchar * m, const size_t i, const size_t j) +{ +#if GSL_RANGE_CHECK + if (GSL_RANGE_COND(1)) + { + if (i >= m->size1) + { + GSL_ERROR_NULL("first index out of range", GSL_EINVAL) ; + } + else if (j >= m->size2) + { + GSL_ERROR_NULL("second index out of range", GSL_EINVAL) ; + } + } +#endif + return (unsigned char *) (m->data + (i * m->tda + j)) ; +} + +INLINE_FUN +const unsigned char * +gsl_matrix_uchar_const_ptr(const gsl_matrix_uchar * m, const size_t i, const size_t j) +{ +#if GSL_RANGE_CHECK + if (GSL_RANGE_COND(1)) + { + if (i >= m->size1) + { + GSL_ERROR_NULL("first index out of range", GSL_EINVAL) ; + } + else if (j >= m->size2) + { + GSL_ERROR_NULL("second index out of range", GSL_EINVAL) ; + } + } +#endif + return (const unsigned char *) (m->data + (i * m->tda + j)) ; +} + +#endif + +__END_DECLS + +#endif /* __GSL_MATRIX_UCHAR_H__ */ diff --git a/gsl-2.5/matrix/gsl_matrix_uint.h b/gsl-2.5/matrix/gsl_matrix_uint.h new file mode 100644 index 00000000..2d900026 --- /dev/null +++ b/gsl-2.5/matrix/gsl_matrix_uint.h @@ -0,0 +1,352 @@ +/* matrix/gsl_matrix_uint.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_MATRIX_UINT_H__ +#define __GSL_MATRIX_UINT_H__ + +#include +#include +#include +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +typedef struct +{ + size_t size1; + size_t size2; + size_t tda; + unsigned int * data; + gsl_block_uint * block; + int owner; +} gsl_matrix_uint; + +typedef struct +{ + gsl_matrix_uint matrix; +} _gsl_matrix_uint_view; + +typedef _gsl_matrix_uint_view gsl_matrix_uint_view; + +typedef struct +{ + gsl_matrix_uint matrix; +} _gsl_matrix_uint_const_view; + +typedef const _gsl_matrix_uint_const_view gsl_matrix_uint_const_view; + +/* Allocation */ + +gsl_matrix_uint * +gsl_matrix_uint_alloc (const size_t n1, const size_t n2); + +gsl_matrix_uint * +gsl_matrix_uint_calloc (const size_t n1, const size_t n2); + +gsl_matrix_uint * +gsl_matrix_uint_alloc_from_block (gsl_block_uint * b, + const size_t offset, + const size_t n1, + const size_t n2, + const size_t d2); + +gsl_matrix_uint * +gsl_matrix_uint_alloc_from_matrix (gsl_matrix_uint * m, + const size_t k1, + const size_t k2, + const size_t n1, + const size_t n2); + +gsl_vector_uint * +gsl_vector_uint_alloc_row_from_matrix (gsl_matrix_uint * m, + const size_t i); + +gsl_vector_uint * +gsl_vector_uint_alloc_col_from_matrix (gsl_matrix_uint * m, + const size_t j); + +void gsl_matrix_uint_free (gsl_matrix_uint * m); + +/* Views */ + +_gsl_matrix_uint_view +gsl_matrix_uint_submatrix (gsl_matrix_uint * m, + const size_t i, const size_t j, + const size_t n1, const size_t n2); + +_gsl_vector_uint_view +gsl_matrix_uint_row (gsl_matrix_uint * m, const size_t i); + +_gsl_vector_uint_view +gsl_matrix_uint_column (gsl_matrix_uint * m, const size_t j); + +_gsl_vector_uint_view +gsl_matrix_uint_diagonal (gsl_matrix_uint * m); + +_gsl_vector_uint_view +gsl_matrix_uint_subdiagonal (gsl_matrix_uint * m, const size_t k); + +_gsl_vector_uint_view +gsl_matrix_uint_superdiagonal (gsl_matrix_uint * m, const size_t k); + +_gsl_vector_uint_view +gsl_matrix_uint_subrow (gsl_matrix_uint * m, const size_t i, + const size_t offset, const size_t n); + +_gsl_vector_uint_view +gsl_matrix_uint_subcolumn (gsl_matrix_uint * m, const size_t j, + const size_t offset, const size_t n); + +_gsl_matrix_uint_view +gsl_matrix_uint_view_array (unsigned int * base, + const size_t n1, + const size_t n2); + +_gsl_matrix_uint_view +gsl_matrix_uint_view_array_with_tda (unsigned int * base, + const size_t n1, + const size_t n2, + const size_t tda); + + +_gsl_matrix_uint_view +gsl_matrix_uint_view_vector (gsl_vector_uint * v, + const size_t n1, + const size_t n2); + +_gsl_matrix_uint_view +gsl_matrix_uint_view_vector_with_tda (gsl_vector_uint * v, + const size_t n1, + const size_t n2, + const size_t tda); + + +_gsl_matrix_uint_const_view +gsl_matrix_uint_const_submatrix (const gsl_matrix_uint * m, + const size_t i, const size_t j, + const size_t n1, const size_t n2); + +_gsl_vector_uint_const_view +gsl_matrix_uint_const_row (const gsl_matrix_uint * m, + const size_t i); + +_gsl_vector_uint_const_view +gsl_matrix_uint_const_column (const gsl_matrix_uint * m, + const size_t j); + +_gsl_vector_uint_const_view +gsl_matrix_uint_const_diagonal (const gsl_matrix_uint * m); + +_gsl_vector_uint_const_view +gsl_matrix_uint_const_subdiagonal (const gsl_matrix_uint * m, + const size_t k); + +_gsl_vector_uint_const_view +gsl_matrix_uint_const_superdiagonal (const gsl_matrix_uint * m, + const size_t k); + +_gsl_vector_uint_const_view +gsl_matrix_uint_const_subrow (const gsl_matrix_uint * m, const size_t i, + const size_t offset, const size_t n); + +_gsl_vector_uint_const_view +gsl_matrix_uint_const_subcolumn (const gsl_matrix_uint * m, const size_t j, + const size_t offset, const size_t n); + +_gsl_matrix_uint_const_view +gsl_matrix_uint_const_view_array (const unsigned int * base, + const size_t n1, + const size_t n2); + +_gsl_matrix_uint_const_view +gsl_matrix_uint_const_view_array_with_tda (const unsigned int * base, + const size_t n1, + const size_t n2, + const size_t tda); + +_gsl_matrix_uint_const_view +gsl_matrix_uint_const_view_vector (const gsl_vector_uint * v, + const size_t n1, + const size_t n2); + +_gsl_matrix_uint_const_view +gsl_matrix_uint_const_view_vector_with_tda (const gsl_vector_uint * v, + const size_t n1, + const size_t n2, + const size_t tda); + +/* Operations */ + +void gsl_matrix_uint_set_zero (gsl_matrix_uint * m); +void gsl_matrix_uint_set_identity (gsl_matrix_uint * m); +void gsl_matrix_uint_set_all (gsl_matrix_uint * m, unsigned int x); + +int gsl_matrix_uint_fread (FILE * stream, gsl_matrix_uint * m) ; +int gsl_matrix_uint_fwrite (FILE * stream, const gsl_matrix_uint * m) ; +int gsl_matrix_uint_fscanf (FILE * stream, gsl_matrix_uint * m); +int gsl_matrix_uint_fprintf (FILE * stream, const gsl_matrix_uint * m, const char * format); + +int gsl_matrix_uint_memcpy(gsl_matrix_uint * dest, const gsl_matrix_uint * src); +int gsl_matrix_uint_swap(gsl_matrix_uint * m1, gsl_matrix_uint * m2); +int gsl_matrix_uint_tricpy(const char uplo_src, const int copy_diag, gsl_matrix_uint * dest, const gsl_matrix_uint * src); + +int gsl_matrix_uint_swap_rows(gsl_matrix_uint * m, const size_t i, const size_t j); +int gsl_matrix_uint_swap_columns(gsl_matrix_uint * m, const size_t i, const size_t j); +int gsl_matrix_uint_swap_rowcol(gsl_matrix_uint * m, const size_t i, const size_t j); +int gsl_matrix_uint_transpose (gsl_matrix_uint * m); +int gsl_matrix_uint_transpose_memcpy (gsl_matrix_uint * dest, const gsl_matrix_uint * src); +int gsl_matrix_uint_transpose_tricpy (const char uplo_src, const int copy_diag, gsl_matrix_uint * dest, const gsl_matrix_uint * src); + +unsigned int gsl_matrix_uint_max (const gsl_matrix_uint * m); +unsigned int gsl_matrix_uint_min (const gsl_matrix_uint * m); +void gsl_matrix_uint_minmax (const gsl_matrix_uint * m, unsigned int * min_out, unsigned int * max_out); + +void gsl_matrix_uint_max_index (const gsl_matrix_uint * m, size_t * imax, size_t *jmax); +void gsl_matrix_uint_min_index (const gsl_matrix_uint * m, size_t * imin, size_t *jmin); +void gsl_matrix_uint_minmax_index (const gsl_matrix_uint * m, size_t * imin, size_t * jmin, size_t * imax, size_t * jmax); + +int gsl_matrix_uint_equal (const gsl_matrix_uint * a, const gsl_matrix_uint * b); + +int gsl_matrix_uint_isnull (const gsl_matrix_uint * m); +int gsl_matrix_uint_ispos (const gsl_matrix_uint * m); +int gsl_matrix_uint_isneg (const gsl_matrix_uint * m); +int gsl_matrix_uint_isnonneg (const gsl_matrix_uint * m); + +int gsl_matrix_uint_add (gsl_matrix_uint * a, const gsl_matrix_uint * b); +int gsl_matrix_uint_sub (gsl_matrix_uint * a, const gsl_matrix_uint * b); +int gsl_matrix_uint_mul_elements (gsl_matrix_uint * a, const gsl_matrix_uint * b); +int gsl_matrix_uint_div_elements (gsl_matrix_uint * a, const gsl_matrix_uint * b); +int gsl_matrix_uint_scale (gsl_matrix_uint * a, const double x); +int gsl_matrix_uint_add_constant (gsl_matrix_uint * a, const double x); +int gsl_matrix_uint_add_diagonal (gsl_matrix_uint * a, const double x); + +/***********************************************************************/ +/* The functions below are obsolete */ +/***********************************************************************/ +int gsl_matrix_uint_get_row(gsl_vector_uint * v, const gsl_matrix_uint * m, const size_t i); +int gsl_matrix_uint_get_col(gsl_vector_uint * v, const gsl_matrix_uint * m, const size_t j); +int gsl_matrix_uint_set_row(gsl_matrix_uint * m, const size_t i, const gsl_vector_uint * v); +int gsl_matrix_uint_set_col(gsl_matrix_uint * m, const size_t j, const gsl_vector_uint * v); +/***********************************************************************/ + +/* inline functions if you are using GCC */ + +INLINE_DECL unsigned int gsl_matrix_uint_get(const gsl_matrix_uint * m, const size_t i, const size_t j); +INLINE_DECL void gsl_matrix_uint_set(gsl_matrix_uint * m, const size_t i, const size_t j, const unsigned int x); +INLINE_DECL unsigned int * gsl_matrix_uint_ptr(gsl_matrix_uint * m, const size_t i, const size_t j); +INLINE_DECL const unsigned int * gsl_matrix_uint_const_ptr(const gsl_matrix_uint * m, const size_t i, const size_t j); + +#ifdef HAVE_INLINE +INLINE_FUN +unsigned int +gsl_matrix_uint_get(const gsl_matrix_uint * m, const size_t i, const size_t j) +{ +#if GSL_RANGE_CHECK + if (GSL_RANGE_COND(1)) + { + if (i >= m->size1) + { + GSL_ERROR_VAL("first index out of range", GSL_EINVAL, 0) ; + } + else if (j >= m->size2) + { + GSL_ERROR_VAL("second index out of range", GSL_EINVAL, 0) ; + } + } +#endif + return m->data[i * m->tda + j] ; +} + +INLINE_FUN +void +gsl_matrix_uint_set(gsl_matrix_uint * m, const size_t i, const size_t j, const unsigned int x) +{ +#if GSL_RANGE_CHECK + if (GSL_RANGE_COND(1)) + { + if (i >= m->size1) + { + GSL_ERROR_VOID("first index out of range", GSL_EINVAL) ; + } + else if (j >= m->size2) + { + GSL_ERROR_VOID("second index out of range", GSL_EINVAL) ; + } + } +#endif + m->data[i * m->tda + j] = x ; +} + +INLINE_FUN +unsigned int * +gsl_matrix_uint_ptr(gsl_matrix_uint * m, const size_t i, const size_t j) +{ +#if GSL_RANGE_CHECK + if (GSL_RANGE_COND(1)) + { + if (i >= m->size1) + { + GSL_ERROR_NULL("first index out of range", GSL_EINVAL) ; + } + else if (j >= m->size2) + { + GSL_ERROR_NULL("second index out of range", GSL_EINVAL) ; + } + } +#endif + return (unsigned int *) (m->data + (i * m->tda + j)) ; +} + +INLINE_FUN +const unsigned int * +gsl_matrix_uint_const_ptr(const gsl_matrix_uint * m, const size_t i, const size_t j) +{ +#if GSL_RANGE_CHECK + if (GSL_RANGE_COND(1)) + { + if (i >= m->size1) + { + GSL_ERROR_NULL("first index out of range", GSL_EINVAL) ; + } + else if (j >= m->size2) + { + GSL_ERROR_NULL("second index out of range", GSL_EINVAL) ; + } + } +#endif + return (const unsigned int *) (m->data + (i * m->tda + j)) ; +} + +#endif + +__END_DECLS + +#endif /* __GSL_MATRIX_UINT_H__ */ diff --git a/gsl-2.5/matrix/gsl_matrix_ulong.h b/gsl-2.5/matrix/gsl_matrix_ulong.h new file mode 100644 index 00000000..d9fd50d8 --- /dev/null +++ b/gsl-2.5/matrix/gsl_matrix_ulong.h @@ -0,0 +1,352 @@ +/* matrix/gsl_matrix_ulong.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_MATRIX_ULONG_H__ +#define __GSL_MATRIX_ULONG_H__ + +#include +#include +#include +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +typedef struct +{ + size_t size1; + size_t size2; + size_t tda; + unsigned long * data; + gsl_block_ulong * block; + int owner; +} gsl_matrix_ulong; + +typedef struct +{ + gsl_matrix_ulong matrix; +} _gsl_matrix_ulong_view; + +typedef _gsl_matrix_ulong_view gsl_matrix_ulong_view; + +typedef struct +{ + gsl_matrix_ulong matrix; +} _gsl_matrix_ulong_const_view; + +typedef const _gsl_matrix_ulong_const_view gsl_matrix_ulong_const_view; + +/* Allocation */ + +gsl_matrix_ulong * +gsl_matrix_ulong_alloc (const size_t n1, const size_t n2); + +gsl_matrix_ulong * +gsl_matrix_ulong_calloc (const size_t n1, const size_t n2); + +gsl_matrix_ulong * +gsl_matrix_ulong_alloc_from_block (gsl_block_ulong * b, + const size_t offset, + const size_t n1, + const size_t n2, + const size_t d2); + +gsl_matrix_ulong * +gsl_matrix_ulong_alloc_from_matrix (gsl_matrix_ulong * m, + const size_t k1, + const size_t k2, + const size_t n1, + const size_t n2); + +gsl_vector_ulong * +gsl_vector_ulong_alloc_row_from_matrix (gsl_matrix_ulong * m, + const size_t i); + +gsl_vector_ulong * +gsl_vector_ulong_alloc_col_from_matrix (gsl_matrix_ulong * m, + const size_t j); + +void gsl_matrix_ulong_free (gsl_matrix_ulong * m); + +/* Views */ + +_gsl_matrix_ulong_view +gsl_matrix_ulong_submatrix (gsl_matrix_ulong * m, + const size_t i, const size_t j, + const size_t n1, const size_t n2); + +_gsl_vector_ulong_view +gsl_matrix_ulong_row (gsl_matrix_ulong * m, const size_t i); + +_gsl_vector_ulong_view +gsl_matrix_ulong_column (gsl_matrix_ulong * m, const size_t j); + +_gsl_vector_ulong_view +gsl_matrix_ulong_diagonal (gsl_matrix_ulong * m); + +_gsl_vector_ulong_view +gsl_matrix_ulong_subdiagonal (gsl_matrix_ulong * m, const size_t k); + +_gsl_vector_ulong_view +gsl_matrix_ulong_superdiagonal (gsl_matrix_ulong * m, const size_t k); + +_gsl_vector_ulong_view +gsl_matrix_ulong_subrow (gsl_matrix_ulong * m, const size_t i, + const size_t offset, const size_t n); + +_gsl_vector_ulong_view +gsl_matrix_ulong_subcolumn (gsl_matrix_ulong * m, const size_t j, + const size_t offset, const size_t n); + +_gsl_matrix_ulong_view +gsl_matrix_ulong_view_array (unsigned long * base, + const size_t n1, + const size_t n2); + +_gsl_matrix_ulong_view +gsl_matrix_ulong_view_array_with_tda (unsigned long * base, + const size_t n1, + const size_t n2, + const size_t tda); + + +_gsl_matrix_ulong_view +gsl_matrix_ulong_view_vector (gsl_vector_ulong * v, + const size_t n1, + const size_t n2); + +_gsl_matrix_ulong_view +gsl_matrix_ulong_view_vector_with_tda (gsl_vector_ulong * v, + const size_t n1, + const size_t n2, + const size_t tda); + + +_gsl_matrix_ulong_const_view +gsl_matrix_ulong_const_submatrix (const gsl_matrix_ulong * m, + const size_t i, const size_t j, + const size_t n1, const size_t n2); + +_gsl_vector_ulong_const_view +gsl_matrix_ulong_const_row (const gsl_matrix_ulong * m, + const size_t i); + +_gsl_vector_ulong_const_view +gsl_matrix_ulong_const_column (const gsl_matrix_ulong * m, + const size_t j); + +_gsl_vector_ulong_const_view +gsl_matrix_ulong_const_diagonal (const gsl_matrix_ulong * m); + +_gsl_vector_ulong_const_view +gsl_matrix_ulong_const_subdiagonal (const gsl_matrix_ulong * m, + const size_t k); + +_gsl_vector_ulong_const_view +gsl_matrix_ulong_const_superdiagonal (const gsl_matrix_ulong * m, + const size_t k); + +_gsl_vector_ulong_const_view +gsl_matrix_ulong_const_subrow (const gsl_matrix_ulong * m, const size_t i, + const size_t offset, const size_t n); + +_gsl_vector_ulong_const_view +gsl_matrix_ulong_const_subcolumn (const gsl_matrix_ulong * m, const size_t j, + const size_t offset, const size_t n); + +_gsl_matrix_ulong_const_view +gsl_matrix_ulong_const_view_array (const unsigned long * base, + const size_t n1, + const size_t n2); + +_gsl_matrix_ulong_const_view +gsl_matrix_ulong_const_view_array_with_tda (const unsigned long * base, + const size_t n1, + const size_t n2, + const size_t tda); + +_gsl_matrix_ulong_const_view +gsl_matrix_ulong_const_view_vector (const gsl_vector_ulong * v, + const size_t n1, + const size_t n2); + +_gsl_matrix_ulong_const_view +gsl_matrix_ulong_const_view_vector_with_tda (const gsl_vector_ulong * v, + const size_t n1, + const size_t n2, + const size_t tda); + +/* Operations */ + +void gsl_matrix_ulong_set_zero (gsl_matrix_ulong * m); +void gsl_matrix_ulong_set_identity (gsl_matrix_ulong * m); +void gsl_matrix_ulong_set_all (gsl_matrix_ulong * m, unsigned long x); + +int gsl_matrix_ulong_fread (FILE * stream, gsl_matrix_ulong * m) ; +int gsl_matrix_ulong_fwrite (FILE * stream, const gsl_matrix_ulong * m) ; +int gsl_matrix_ulong_fscanf (FILE * stream, gsl_matrix_ulong * m); +int gsl_matrix_ulong_fprintf (FILE * stream, const gsl_matrix_ulong * m, const char * format); + +int gsl_matrix_ulong_memcpy(gsl_matrix_ulong * dest, const gsl_matrix_ulong * src); +int gsl_matrix_ulong_swap(gsl_matrix_ulong * m1, gsl_matrix_ulong * m2); +int gsl_matrix_ulong_tricpy(const char uplo_src, const int copy_diag, gsl_matrix_ulong * dest, const gsl_matrix_ulong * src); + +int gsl_matrix_ulong_swap_rows(gsl_matrix_ulong * m, const size_t i, const size_t j); +int gsl_matrix_ulong_swap_columns(gsl_matrix_ulong * m, const size_t i, const size_t j); +int gsl_matrix_ulong_swap_rowcol(gsl_matrix_ulong * m, const size_t i, const size_t j); +int gsl_matrix_ulong_transpose (gsl_matrix_ulong * m); +int gsl_matrix_ulong_transpose_memcpy (gsl_matrix_ulong * dest, const gsl_matrix_ulong * src); +int gsl_matrix_ulong_transpose_tricpy (const char uplo_src, const int copy_diag, gsl_matrix_ulong * dest, const gsl_matrix_ulong * src); + +unsigned long gsl_matrix_ulong_max (const gsl_matrix_ulong * m); +unsigned long gsl_matrix_ulong_min (const gsl_matrix_ulong * m); +void gsl_matrix_ulong_minmax (const gsl_matrix_ulong * m, unsigned long * min_out, unsigned long * max_out); + +void gsl_matrix_ulong_max_index (const gsl_matrix_ulong * m, size_t * imax, size_t *jmax); +void gsl_matrix_ulong_min_index (const gsl_matrix_ulong * m, size_t * imin, size_t *jmin); +void gsl_matrix_ulong_minmax_index (const gsl_matrix_ulong * m, size_t * imin, size_t * jmin, size_t * imax, size_t * jmax); + +int gsl_matrix_ulong_equal (const gsl_matrix_ulong * a, const gsl_matrix_ulong * b); + +int gsl_matrix_ulong_isnull (const gsl_matrix_ulong * m); +int gsl_matrix_ulong_ispos (const gsl_matrix_ulong * m); +int gsl_matrix_ulong_isneg (const gsl_matrix_ulong * m); +int gsl_matrix_ulong_isnonneg (const gsl_matrix_ulong * m); + +int gsl_matrix_ulong_add (gsl_matrix_ulong * a, const gsl_matrix_ulong * b); +int gsl_matrix_ulong_sub (gsl_matrix_ulong * a, const gsl_matrix_ulong * b); +int gsl_matrix_ulong_mul_elements (gsl_matrix_ulong * a, const gsl_matrix_ulong * b); +int gsl_matrix_ulong_div_elements (gsl_matrix_ulong * a, const gsl_matrix_ulong * b); +int gsl_matrix_ulong_scale (gsl_matrix_ulong * a, const double x); +int gsl_matrix_ulong_add_constant (gsl_matrix_ulong * a, const double x); +int gsl_matrix_ulong_add_diagonal (gsl_matrix_ulong * a, const double x); + +/***********************************************************************/ +/* The functions below are obsolete */ +/***********************************************************************/ +int gsl_matrix_ulong_get_row(gsl_vector_ulong * v, const gsl_matrix_ulong * m, const size_t i); +int gsl_matrix_ulong_get_col(gsl_vector_ulong * v, const gsl_matrix_ulong * m, const size_t j); +int gsl_matrix_ulong_set_row(gsl_matrix_ulong * m, const size_t i, const gsl_vector_ulong * v); +int gsl_matrix_ulong_set_col(gsl_matrix_ulong * m, const size_t j, const gsl_vector_ulong * v); +/***********************************************************************/ + +/* inline functions if you are using GCC */ + +INLINE_DECL unsigned long gsl_matrix_ulong_get(const gsl_matrix_ulong * m, const size_t i, const size_t j); +INLINE_DECL void gsl_matrix_ulong_set(gsl_matrix_ulong * m, const size_t i, const size_t j, const unsigned long x); +INLINE_DECL unsigned long * gsl_matrix_ulong_ptr(gsl_matrix_ulong * m, const size_t i, const size_t j); +INLINE_DECL const unsigned long * gsl_matrix_ulong_const_ptr(const gsl_matrix_ulong * m, const size_t i, const size_t j); + +#ifdef HAVE_INLINE +INLINE_FUN +unsigned long +gsl_matrix_ulong_get(const gsl_matrix_ulong * m, const size_t i, const size_t j) +{ +#if GSL_RANGE_CHECK + if (GSL_RANGE_COND(1)) + { + if (i >= m->size1) + { + GSL_ERROR_VAL("first index out of range", GSL_EINVAL, 0) ; + } + else if (j >= m->size2) + { + GSL_ERROR_VAL("second index out of range", GSL_EINVAL, 0) ; + } + } +#endif + return m->data[i * m->tda + j] ; +} + +INLINE_FUN +void +gsl_matrix_ulong_set(gsl_matrix_ulong * m, const size_t i, const size_t j, const unsigned long x) +{ +#if GSL_RANGE_CHECK + if (GSL_RANGE_COND(1)) + { + if (i >= m->size1) + { + GSL_ERROR_VOID("first index out of range", GSL_EINVAL) ; + } + else if (j >= m->size2) + { + GSL_ERROR_VOID("second index out of range", GSL_EINVAL) ; + } + } +#endif + m->data[i * m->tda + j] = x ; +} + +INLINE_FUN +unsigned long * +gsl_matrix_ulong_ptr(gsl_matrix_ulong * m, const size_t i, const size_t j) +{ +#if GSL_RANGE_CHECK + if (GSL_RANGE_COND(1)) + { + if (i >= m->size1) + { + GSL_ERROR_NULL("first index out of range", GSL_EINVAL) ; + } + else if (j >= m->size2) + { + GSL_ERROR_NULL("second index out of range", GSL_EINVAL) ; + } + } +#endif + return (unsigned long *) (m->data + (i * m->tda + j)) ; +} + +INLINE_FUN +const unsigned long * +gsl_matrix_ulong_const_ptr(const gsl_matrix_ulong * m, const size_t i, const size_t j) +{ +#if GSL_RANGE_CHECK + if (GSL_RANGE_COND(1)) + { + if (i >= m->size1) + { + GSL_ERROR_NULL("first index out of range", GSL_EINVAL) ; + } + else if (j >= m->size2) + { + GSL_ERROR_NULL("second index out of range", GSL_EINVAL) ; + } + } +#endif + return (const unsigned long *) (m->data + (i * m->tda + j)) ; +} + +#endif + +__END_DECLS + +#endif /* __GSL_MATRIX_ULONG_H__ */ diff --git a/gsl-2.5/matrix/gsl_matrix_ushort.h b/gsl-2.5/matrix/gsl_matrix_ushort.h new file mode 100644 index 00000000..e06cc2ac --- /dev/null +++ b/gsl-2.5/matrix/gsl_matrix_ushort.h @@ -0,0 +1,352 @@ +/* matrix/gsl_matrix_ushort.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_MATRIX_USHORT_H__ +#define __GSL_MATRIX_USHORT_H__ + +#include +#include +#include +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +typedef struct +{ + size_t size1; + size_t size2; + size_t tda; + unsigned short * data; + gsl_block_ushort * block; + int owner; +} gsl_matrix_ushort; + +typedef struct +{ + gsl_matrix_ushort matrix; +} _gsl_matrix_ushort_view; + +typedef _gsl_matrix_ushort_view gsl_matrix_ushort_view; + +typedef struct +{ + gsl_matrix_ushort matrix; +} _gsl_matrix_ushort_const_view; + +typedef const _gsl_matrix_ushort_const_view gsl_matrix_ushort_const_view; + +/* Allocation */ + +gsl_matrix_ushort * +gsl_matrix_ushort_alloc (const size_t n1, const size_t n2); + +gsl_matrix_ushort * +gsl_matrix_ushort_calloc (const size_t n1, const size_t n2); + +gsl_matrix_ushort * +gsl_matrix_ushort_alloc_from_block (gsl_block_ushort * b, + const size_t offset, + const size_t n1, + const size_t n2, + const size_t d2); + +gsl_matrix_ushort * +gsl_matrix_ushort_alloc_from_matrix (gsl_matrix_ushort * m, + const size_t k1, + const size_t k2, + const size_t n1, + const size_t n2); + +gsl_vector_ushort * +gsl_vector_ushort_alloc_row_from_matrix (gsl_matrix_ushort * m, + const size_t i); + +gsl_vector_ushort * +gsl_vector_ushort_alloc_col_from_matrix (gsl_matrix_ushort * m, + const size_t j); + +void gsl_matrix_ushort_free (gsl_matrix_ushort * m); + +/* Views */ + +_gsl_matrix_ushort_view +gsl_matrix_ushort_submatrix (gsl_matrix_ushort * m, + const size_t i, const size_t j, + const size_t n1, const size_t n2); + +_gsl_vector_ushort_view +gsl_matrix_ushort_row (gsl_matrix_ushort * m, const size_t i); + +_gsl_vector_ushort_view +gsl_matrix_ushort_column (gsl_matrix_ushort * m, const size_t j); + +_gsl_vector_ushort_view +gsl_matrix_ushort_diagonal (gsl_matrix_ushort * m); + +_gsl_vector_ushort_view +gsl_matrix_ushort_subdiagonal (gsl_matrix_ushort * m, const size_t k); + +_gsl_vector_ushort_view +gsl_matrix_ushort_superdiagonal (gsl_matrix_ushort * m, const size_t k); + +_gsl_vector_ushort_view +gsl_matrix_ushort_subrow (gsl_matrix_ushort * m, const size_t i, + const size_t offset, const size_t n); + +_gsl_vector_ushort_view +gsl_matrix_ushort_subcolumn (gsl_matrix_ushort * m, const size_t j, + const size_t offset, const size_t n); + +_gsl_matrix_ushort_view +gsl_matrix_ushort_view_array (unsigned short * base, + const size_t n1, + const size_t n2); + +_gsl_matrix_ushort_view +gsl_matrix_ushort_view_array_with_tda (unsigned short * base, + const size_t n1, + const size_t n2, + const size_t tda); + + +_gsl_matrix_ushort_view +gsl_matrix_ushort_view_vector (gsl_vector_ushort * v, + const size_t n1, + const size_t n2); + +_gsl_matrix_ushort_view +gsl_matrix_ushort_view_vector_with_tda (gsl_vector_ushort * v, + const size_t n1, + const size_t n2, + const size_t tda); + + +_gsl_matrix_ushort_const_view +gsl_matrix_ushort_const_submatrix (const gsl_matrix_ushort * m, + const size_t i, const size_t j, + const size_t n1, const size_t n2); + +_gsl_vector_ushort_const_view +gsl_matrix_ushort_const_row (const gsl_matrix_ushort * m, + const size_t i); + +_gsl_vector_ushort_const_view +gsl_matrix_ushort_const_column (const gsl_matrix_ushort * m, + const size_t j); + +_gsl_vector_ushort_const_view +gsl_matrix_ushort_const_diagonal (const gsl_matrix_ushort * m); + +_gsl_vector_ushort_const_view +gsl_matrix_ushort_const_subdiagonal (const gsl_matrix_ushort * m, + const size_t k); + +_gsl_vector_ushort_const_view +gsl_matrix_ushort_const_superdiagonal (const gsl_matrix_ushort * m, + const size_t k); + +_gsl_vector_ushort_const_view +gsl_matrix_ushort_const_subrow (const gsl_matrix_ushort * m, const size_t i, + const size_t offset, const size_t n); + +_gsl_vector_ushort_const_view +gsl_matrix_ushort_const_subcolumn (const gsl_matrix_ushort * m, const size_t j, + const size_t offset, const size_t n); + +_gsl_matrix_ushort_const_view +gsl_matrix_ushort_const_view_array (const unsigned short * base, + const size_t n1, + const size_t n2); + +_gsl_matrix_ushort_const_view +gsl_matrix_ushort_const_view_array_with_tda (const unsigned short * base, + const size_t n1, + const size_t n2, + const size_t tda); + +_gsl_matrix_ushort_const_view +gsl_matrix_ushort_const_view_vector (const gsl_vector_ushort * v, + const size_t n1, + const size_t n2); + +_gsl_matrix_ushort_const_view +gsl_matrix_ushort_const_view_vector_with_tda (const gsl_vector_ushort * v, + const size_t n1, + const size_t n2, + const size_t tda); + +/* Operations */ + +void gsl_matrix_ushort_set_zero (gsl_matrix_ushort * m); +void gsl_matrix_ushort_set_identity (gsl_matrix_ushort * m); +void gsl_matrix_ushort_set_all (gsl_matrix_ushort * m, unsigned short x); + +int gsl_matrix_ushort_fread (FILE * stream, gsl_matrix_ushort * m) ; +int gsl_matrix_ushort_fwrite (FILE * stream, const gsl_matrix_ushort * m) ; +int gsl_matrix_ushort_fscanf (FILE * stream, gsl_matrix_ushort * m); +int gsl_matrix_ushort_fprintf (FILE * stream, const gsl_matrix_ushort * m, const char * format); + +int gsl_matrix_ushort_memcpy(gsl_matrix_ushort * dest, const gsl_matrix_ushort * src); +int gsl_matrix_ushort_swap(gsl_matrix_ushort * m1, gsl_matrix_ushort * m2); +int gsl_matrix_ushort_tricpy(const char uplo_src, const int copy_diag, gsl_matrix_ushort * dest, const gsl_matrix_ushort * src); + +int gsl_matrix_ushort_swap_rows(gsl_matrix_ushort * m, const size_t i, const size_t j); +int gsl_matrix_ushort_swap_columns(gsl_matrix_ushort * m, const size_t i, const size_t j); +int gsl_matrix_ushort_swap_rowcol(gsl_matrix_ushort * m, const size_t i, const size_t j); +int gsl_matrix_ushort_transpose (gsl_matrix_ushort * m); +int gsl_matrix_ushort_transpose_memcpy (gsl_matrix_ushort * dest, const gsl_matrix_ushort * src); +int gsl_matrix_ushort_transpose_tricpy (const char uplo_src, const int copy_diag, gsl_matrix_ushort * dest, const gsl_matrix_ushort * src); + +unsigned short gsl_matrix_ushort_max (const gsl_matrix_ushort * m); +unsigned short gsl_matrix_ushort_min (const gsl_matrix_ushort * m); +void gsl_matrix_ushort_minmax (const gsl_matrix_ushort * m, unsigned short * min_out, unsigned short * max_out); + +void gsl_matrix_ushort_max_index (const gsl_matrix_ushort * m, size_t * imax, size_t *jmax); +void gsl_matrix_ushort_min_index (const gsl_matrix_ushort * m, size_t * imin, size_t *jmin); +void gsl_matrix_ushort_minmax_index (const gsl_matrix_ushort * m, size_t * imin, size_t * jmin, size_t * imax, size_t * jmax); + +int gsl_matrix_ushort_equal (const gsl_matrix_ushort * a, const gsl_matrix_ushort * b); + +int gsl_matrix_ushort_isnull (const gsl_matrix_ushort * m); +int gsl_matrix_ushort_ispos (const gsl_matrix_ushort * m); +int gsl_matrix_ushort_isneg (const gsl_matrix_ushort * m); +int gsl_matrix_ushort_isnonneg (const gsl_matrix_ushort * m); + +int gsl_matrix_ushort_add (gsl_matrix_ushort * a, const gsl_matrix_ushort * b); +int gsl_matrix_ushort_sub (gsl_matrix_ushort * a, const gsl_matrix_ushort * b); +int gsl_matrix_ushort_mul_elements (gsl_matrix_ushort * a, const gsl_matrix_ushort * b); +int gsl_matrix_ushort_div_elements (gsl_matrix_ushort * a, const gsl_matrix_ushort * b); +int gsl_matrix_ushort_scale (gsl_matrix_ushort * a, const double x); +int gsl_matrix_ushort_add_constant (gsl_matrix_ushort * a, const double x); +int gsl_matrix_ushort_add_diagonal (gsl_matrix_ushort * a, const double x); + +/***********************************************************************/ +/* The functions below are obsolete */ +/***********************************************************************/ +int gsl_matrix_ushort_get_row(gsl_vector_ushort * v, const gsl_matrix_ushort * m, const size_t i); +int gsl_matrix_ushort_get_col(gsl_vector_ushort * v, const gsl_matrix_ushort * m, const size_t j); +int gsl_matrix_ushort_set_row(gsl_matrix_ushort * m, const size_t i, const gsl_vector_ushort * v); +int gsl_matrix_ushort_set_col(gsl_matrix_ushort * m, const size_t j, const gsl_vector_ushort * v); +/***********************************************************************/ + +/* inline functions if you are using GCC */ + +INLINE_DECL unsigned short gsl_matrix_ushort_get(const gsl_matrix_ushort * m, const size_t i, const size_t j); +INLINE_DECL void gsl_matrix_ushort_set(gsl_matrix_ushort * m, const size_t i, const size_t j, const unsigned short x); +INLINE_DECL unsigned short * gsl_matrix_ushort_ptr(gsl_matrix_ushort * m, const size_t i, const size_t j); +INLINE_DECL const unsigned short * gsl_matrix_ushort_const_ptr(const gsl_matrix_ushort * m, const size_t i, const size_t j); + +#ifdef HAVE_INLINE +INLINE_FUN +unsigned short +gsl_matrix_ushort_get(const gsl_matrix_ushort * m, const size_t i, const size_t j) +{ +#if GSL_RANGE_CHECK + if (GSL_RANGE_COND(1)) + { + if (i >= m->size1) + { + GSL_ERROR_VAL("first index out of range", GSL_EINVAL, 0) ; + } + else if (j >= m->size2) + { + GSL_ERROR_VAL("second index out of range", GSL_EINVAL, 0) ; + } + } +#endif + return m->data[i * m->tda + j] ; +} + +INLINE_FUN +void +gsl_matrix_ushort_set(gsl_matrix_ushort * m, const size_t i, const size_t j, const unsigned short x) +{ +#if GSL_RANGE_CHECK + if (GSL_RANGE_COND(1)) + { + if (i >= m->size1) + { + GSL_ERROR_VOID("first index out of range", GSL_EINVAL) ; + } + else if (j >= m->size2) + { + GSL_ERROR_VOID("second index out of range", GSL_EINVAL) ; + } + } +#endif + m->data[i * m->tda + j] = x ; +} + +INLINE_FUN +unsigned short * +gsl_matrix_ushort_ptr(gsl_matrix_ushort * m, const size_t i, const size_t j) +{ +#if GSL_RANGE_CHECK + if (GSL_RANGE_COND(1)) + { + if (i >= m->size1) + { + GSL_ERROR_NULL("first index out of range", GSL_EINVAL) ; + } + else if (j >= m->size2) + { + GSL_ERROR_NULL("second index out of range", GSL_EINVAL) ; + } + } +#endif + return (unsigned short *) (m->data + (i * m->tda + j)) ; +} + +INLINE_FUN +const unsigned short * +gsl_matrix_ushort_const_ptr(const gsl_matrix_ushort * m, const size_t i, const size_t j) +{ +#if GSL_RANGE_CHECK + if (GSL_RANGE_COND(1)) + { + if (i >= m->size1) + { + GSL_ERROR_NULL("first index out of range", GSL_EINVAL) ; + } + else if (j >= m->size2) + { + GSL_ERROR_NULL("second index out of range", GSL_EINVAL) ; + } + } +#endif + return (const unsigned short *) (m->data + (i * m->tda + j)) ; +} + +#endif + +__END_DECLS + +#endif /* __GSL_MATRIX_USHORT_H__ */ diff --git a/gsl-2.5/matrix/init.c b/gsl-2.5/matrix/init.c new file mode 100644 index 00000000..84140f87 --- /dev/null +++ b/gsl-2.5/matrix/init.c @@ -0,0 +1,88 @@ +#include +#include +#include +#include + +#define BASE_GSL_COMPLEX_LONG +#include "templates_on.h" +#include "init_source.c" +#include "templates_off.h" +#undef BASE_GSL_COMPLEX_LONG + +#define BASE_GSL_COMPLEX +#include "templates_on.h" +#include "init_source.c" +#include "templates_off.h" +#undef BASE_GSL_COMPLEX + +#define BASE_GSL_COMPLEX_FLOAT +#include "templates_on.h" +#include "init_source.c" +#include "templates_off.h" +#undef BASE_GSL_COMPLEX_FLOAT + +#define BASE_LONG_DOUBLE +#include "templates_on.h" +#include "init_source.c" +#include "templates_off.h" +#undef BASE_LONG_DOUBLE + +#define BASE_DOUBLE +#include "templates_on.h" +#include "init_source.c" +#include "templates_off.h" +#undef BASE_DOUBLE + +#define BASE_FLOAT +#include "templates_on.h" +#include "init_source.c" +#include "templates_off.h" +#undef BASE_FLOAT + +#define BASE_ULONG +#include "templates_on.h" +#include "init_source.c" +#include "templates_off.h" +#undef BASE_ULONG + +#define BASE_LONG +#include "templates_on.h" +#include "init_source.c" +#include "templates_off.h" +#undef BASE_LONG + +#define BASE_UINT +#include "templates_on.h" +#include "init_source.c" +#include "templates_off.h" +#undef BASE_UINT + +#define BASE_INT +#include "templates_on.h" +#include "init_source.c" +#include "templates_off.h" +#undef BASE_INT + +#define BASE_USHORT +#include "templates_on.h" +#include "init_source.c" +#include "templates_off.h" +#undef BASE_USHORT + +#define BASE_SHORT +#include "templates_on.h" +#include "init_source.c" +#include "templates_off.h" +#undef BASE_SHORT + +#define BASE_UCHAR +#include "templates_on.h" +#include "init_source.c" +#include "templates_off.h" +#undef BASE_UCHAR + +#define BASE_CHAR +#include "templates_on.h" +#include "init_source.c" +#include "templates_off.h" +#undef BASE_CHAR diff --git a/gsl-2.5/matrix/init.lo b/gsl-2.5/matrix/init.lo new file mode 100644 index 00000000..c1ea778f --- /dev/null +++ b/gsl-2.5/matrix/init.lo @@ -0,0 +1,12 @@ +# init.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/init.o' + +# Name of the non-PIC object +non_pic_object='init.o' + diff --git a/gsl-2.5/matrix/init_source.c b/gsl-2.5/matrix/init_source.c new file mode 100644 index 00000000..f68eae64 --- /dev/null +++ b/gsl-2.5/matrix/init_source.c @@ -0,0 +1,222 @@ +/* matrix/init_source.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007, 2009 Gerard Jungman, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +TYPE (gsl_matrix) * +FUNCTION (gsl_matrix, alloc) (const size_t n1, const size_t n2) +{ + TYPE (gsl_block) * block; + TYPE (gsl_matrix) * m; + + m = (TYPE (gsl_matrix) *) malloc (sizeof (TYPE (gsl_matrix))); + + if (m == 0) + { + GSL_ERROR_VAL ("failed to allocate space for matrix struct", + GSL_ENOMEM, 0); + } + + /* FIXME: n1*n2 could overflow for large dimensions */ + + block = FUNCTION(gsl_block, alloc) (n1 * n2) ; + + if (block == 0) + { + GSL_ERROR_VAL ("failed to allocate space for block", + GSL_ENOMEM, 0); + } + + m->data = block->data; + m->size1 = n1; + m->size2 = n2; + m->tda = n2; + m->block = block; + m->owner = 1; + + return m; +} + +TYPE (gsl_matrix) * +FUNCTION (gsl_matrix, calloc) (const size_t n1, const size_t n2) +{ + size_t i; + + TYPE (gsl_matrix) * m = FUNCTION (gsl_matrix, alloc) (n1, n2); + + if (m == 0) + return 0; + + /* initialize matrix to zero */ + memset(m->data, 0, MULTIPLICITY * n1 * n2 * sizeof(ATOMIC)); + + for (i = 0; i < MULTIPLICITY * n1 * n2; i++) + { + m->data[i] = 0; + } + + return m; +} + +TYPE (gsl_matrix) * +FUNCTION (gsl_matrix, alloc_from_block) (TYPE(gsl_block) * block, + const size_t offset, + const size_t n1, + const size_t n2, + const size_t d2) +{ + TYPE (gsl_matrix) * m; + + if (d2 < n2) + { + GSL_ERROR_VAL ("matrix dimension d2 must be greater than n2", + GSL_EINVAL, 0); + } + else if (block->size < offset + n1 * d2) + { + GSL_ERROR_VAL ("matrix size exceeds available block size", + GSL_EINVAL, 0); + } + + m = (TYPE (gsl_matrix) *) malloc (sizeof (TYPE (gsl_matrix))); + + if (m == 0) + { + GSL_ERROR_VAL ("failed to allocate space for matrix struct", + GSL_ENOMEM, 0); + } + + m->data = block->data + MULTIPLICITY * offset; + m->size1 = n1; + m->size2 = n2; + m->tda = d2; + m->block = block; + m->owner = 0; + + return m; +} + + +TYPE (gsl_matrix) * +FUNCTION (gsl_matrix, alloc_from_matrix) (TYPE(gsl_matrix) * mm, + const size_t k1, + const size_t k2, + const size_t n1, + const size_t n2) +{ + TYPE (gsl_matrix) * m; + + if (k1 + n1 > mm->size1) + { + GSL_ERROR_VAL ("submatrix dimension 1 exceeds size of original", + GSL_EINVAL, 0); + } + else if (k2 + n2 > mm->size2) + { + GSL_ERROR_VAL ("submatrix dimension 2 exceeds size of original", + GSL_EINVAL, 0); + } + + m = (TYPE (gsl_matrix) *) malloc (sizeof (TYPE (gsl_matrix))); + + if (m == 0) + { + GSL_ERROR_VAL ("failed to allocate space for matrix struct", + GSL_ENOMEM, 0); + } + + m->data = mm->data + k1 * mm->tda + k2 ; + m->size1 = n1; + m->size2 = n2; + m->tda = mm->tda; + m->block = mm->block; + m->owner = 0; + + return m; +} + +void +FUNCTION (gsl_matrix, free) (TYPE (gsl_matrix) * m) +{ + RETURN_IF_NULL (m); + + if (m->owner) + { + FUNCTION(gsl_block, free) (m->block); + } + + free (m); +} +void +FUNCTION (gsl_matrix, set_identity) (TYPE (gsl_matrix) * m) +{ + size_t i, j; + ATOMIC * const data = m->data; + const size_t p = m->size1 ; + const size_t q = m->size2 ; + const size_t tda = m->tda ; + + const BASE zero = ZERO; + const BASE one = ONE; + + for (i = 0; i < p; i++) + { + for (j = 0; j < q; j++) + { + *(BASE *) (data + MULTIPLICITY * (i * tda + j)) = ((i == j) ? one : zero); + } + } +} + +void +FUNCTION (gsl_matrix, set_zero) (TYPE (gsl_matrix) * m) +{ + size_t i, j; + ATOMIC * const data = m->data; + const size_t p = m->size1 ; + const size_t q = m->size2 ; + const size_t tda = m->tda ; + + const BASE zero = ZERO; + + for (i = 0; i < p; i++) + { + for (j = 0; j < q; j++) + { + *(BASE *) (data + MULTIPLICITY * (i * tda + j)) = zero; + } + } +} + +void +FUNCTION (gsl_matrix, set_all) (TYPE (gsl_matrix) * m, BASE x) +{ + size_t i, j; + ATOMIC * const data = m->data; + const size_t p = m->size1 ; + const size_t q = m->size2 ; + const size_t tda = m->tda ; + + for (i = 0; i < p; i++) + { + for (j = 0; j < q; j++) + { + *(BASE *) (data + MULTIPLICITY * (i * tda + j)) = x; + } + } +} + diff --git a/gsl-2.5/matrix/libgslmatrix.la b/gsl-2.5/matrix/libgslmatrix.la new file mode 100644 index 00000000..a9f43b1d --- /dev/null +++ b/gsl-2.5/matrix/libgslmatrix.la @@ -0,0 +1,41 @@ +# libgslmatrix.la - a libtool library file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='' + +# Names of this library. +library_names='' + +# The name of the static archive. +old_library='libgslmatrix.a' + +# Linker flags that can not go in dependency_libs. +inherited_linker_flags='' + +# Libraries that this one depends upon. +dependency_libs=' -lm' + +# Names of additional weak libraries provided by this library +weak_library_names='' + +# Version information for libgslmatrix. +current= +age= +revision= + +# Is this an already installed library? +installed=no + +# Should we warn about portability when linking against -modules? +shouldnotlink=no + +# Files to dlopen/dlpreopen +dlopen='' +dlpreopen='' + +# Directory that this library needs to be installed in: +libdir='' diff --git a/gsl-2.5/matrix/matrix.c b/gsl-2.5/matrix/matrix.c new file mode 100644 index 00000000..fe595fa1 --- /dev/null +++ b/gsl-2.5/matrix/matrix.c @@ -0,0 +1,10 @@ +#include +#include +#include + +/* Compile all the inline matrix functions */ + +#define COMPILE_INLINE_STATIC +#include "build.h" +#include + diff --git a/gsl-2.5/matrix/matrix.lo b/gsl-2.5/matrix/matrix.lo new file mode 100644 index 00000000..0755d234 --- /dev/null +++ b/gsl-2.5/matrix/matrix.lo @@ -0,0 +1,12 @@ +# matrix.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/matrix.o' + +# Name of the non-PIC object +non_pic_object='matrix.o' + diff --git a/gsl-2.5/matrix/minmax.c b/gsl-2.5/matrix/minmax.c new file mode 100644 index 00000000..2a092d4a --- /dev/null +++ b/gsl-2.5/matrix/minmax.c @@ -0,0 +1,72 @@ +#include +#include +#include +#include + +#define BASE_LONG_DOUBLE +#include "templates_on.h" +#include "minmax_source.c" +#include "templates_off.h" +#undef BASE_LONG_DOUBLE + +#define BASE_DOUBLE +#include "templates_on.h" +#include "minmax_source.c" +#include "templates_off.h" +#undef BASE_DOUBLE + +#define BASE_FLOAT +#include "templates_on.h" +#include "minmax_source.c" +#include "templates_off.h" +#undef BASE_FLOAT + +#define BASE_ULONG +#include "templates_on.h" +#include "minmax_source.c" +#include "templates_off.h" +#undef BASE_ULONG + +#define BASE_LONG +#include "templates_on.h" +#include "minmax_source.c" +#include "templates_off.h" +#undef BASE_LONG + +#define BASE_UINT +#include "templates_on.h" +#include "minmax_source.c" +#include "templates_off.h" +#undef BASE_UINT + +#define BASE_INT +#include "templates_on.h" +#include "minmax_source.c" +#include "templates_off.h" +#undef BASE_INT + +#define BASE_USHORT +#include "templates_on.h" +#include "minmax_source.c" +#include "templates_off.h" +#undef BASE_USHORT + +#define BASE_SHORT +#include "templates_on.h" +#include "minmax_source.c" +#include "templates_off.h" +#undef BASE_SHORT + +#define BASE_UCHAR +#include "templates_on.h" +#include "minmax_source.c" +#include "templates_off.h" +#undef BASE_UCHAR + +#define BASE_CHAR +#include "templates_on.h" +#include "minmax_source.c" +#include "templates_off.h" +#undef BASE_CHAR + + diff --git a/gsl-2.5/matrix/minmax.lo b/gsl-2.5/matrix/minmax.lo new file mode 100644 index 00000000..adb8d3f7 --- /dev/null +++ b/gsl-2.5/matrix/minmax.lo @@ -0,0 +1,12 @@ +# minmax.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/minmax.o' + +# Name of the non-PIC object +non_pic_object='minmax.o' + diff --git a/gsl-2.5/matrix/minmax_source.c b/gsl-2.5/matrix/minmax_source.c new file mode 100644 index 00000000..5b2a2fd9 --- /dev/null +++ b/gsl-2.5/matrix/minmax_source.c @@ -0,0 +1,254 @@ +/* matrix/minmax_source.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +BASE +FUNCTION (gsl_matrix, max) (const TYPE (gsl_matrix) * m) +{ + /* finds the largest element of a matrix */ + + const size_t M = m->size1; + const size_t N = m->size2; + const size_t tda = m->tda; + + BASE max = m->data[0 * tda + 0]; + size_t i, j; + + for (i = 0; i < M; i++) + { + for (j = 0; j < N; j++) + { + BASE x = m->data[i * tda + j]; + if (x > max) + max = x; +#ifdef FP + if (isnan (x)) + return x; +#endif + } + } + + return max; +} + +BASE +FUNCTION (gsl_matrix, min) (const TYPE (gsl_matrix) * m) +{ + /* finds the smallest element of a matrix */ + + const size_t M = m->size1; + const size_t N = m->size2; + const size_t tda = m->tda; + + BASE min = m->data[0 * tda + 0]; + size_t i, j; + + for (i = 0; i < M; i++) + { + for (j = 0; j < N; j++) + { + BASE x = m->data[i * tda + j]; + if (x < min) + min = x; +#ifdef FP + if (isnan (x)) + return x; +#endif + } + } + + return min; +} + + +void +FUNCTION (gsl_matrix, minmax) (const TYPE (gsl_matrix) * m, + BASE * min_out, + BASE * max_out) +{ + /* finds the smallest and largest elements of a matrix */ + + const size_t M = m->size1; + const size_t N = m->size2; + const size_t tda = m->tda; + + BASE max = m->data[0 * tda + 0]; + BASE min = m->data[0 * tda + 0]; + + size_t i, j; + + for (i = 0; i < M; i++) + { + for (j = 0; j < N; j++) + { + BASE x = m->data[i * tda + j]; + if (x < min) + { + min = x; + } + if (x > max) + { + max = x; + } +#ifdef FP + if (isnan (x)) + { + *min_out = x; + *max_out = x; + return; + } +#endif + } + } + + *min_out = min; + *max_out = max; +} + +void +FUNCTION (gsl_matrix, max_index) (const TYPE (gsl_matrix) * m, size_t * imax_out, size_t *jmax_out) +{ + /* finds the largest element of a matrix */ + + const size_t M = m->size1; + const size_t N = m->size2; + const size_t tda = m->tda; + + BASE max = m->data[0 * tda + 0]; + size_t imax = 0, jmax = 0; + size_t i, j; + + for (i = 0; i < M; i++) + { + for (j = 0; j < N; j++) + { + BASE x = m->data[i * tda + j]; + if (x > max) + { + max = x; + imax = i; + jmax = j; + } +#ifdef FP + if (isnan (x)) + { + *imax_out = i; + *jmax_out = j; + return; + } +#endif + } + } + + *imax_out = imax; + *jmax_out = jmax; +} + +void +FUNCTION (gsl_matrix, min_index) (const TYPE (gsl_matrix) * m, size_t * imin_out, size_t *jmin_out) +{ + /* finds the largest element of a matrix */ + + const size_t M = m->size1; + const size_t N = m->size2; + const size_t tda = m->tda; + + BASE min = m->data[0 * tda + 0]; + size_t imin = 0, jmin = 0; + size_t i, j; + + for (i = 0; i < M; i++) + { + for (j = 0; j < N; j++) + { + BASE x = m->data[i * tda + j]; + if (x < min) + { + min = x; + imin = i; + jmin = j; + } +#ifdef FP + if (isnan (x)) + { + *imin_out = i; + *jmin_out = j; + return; + } +#endif + } + } + + *imin_out = imin; + *jmin_out = jmin; +} + +void +FUNCTION (gsl_matrix, minmax_index) (const TYPE (gsl_matrix) * m, + size_t * imin_out, + size_t * jmin_out, + size_t * imax_out, + size_t * jmax_out) +{ + /* finds the smallest and largest elements of a matrix */ + + const size_t M = m->size1; + const size_t N = m->size2; + const size_t tda = m->tda; + + size_t imin = 0, jmin = 0, imax = 0, jmax = 0; + BASE max = m->data[0 * tda + 0]; + BASE min = m->data[0 * tda + 0]; + + size_t i, j; + + for (i = 0; i < M; i++) + { + for (j = 0; j < N; j++) + { + BASE x = m->data[i * tda + j]; + if (x < min) + { + min = x; + imin = i; + jmin = j; + } + if (x > max) + { + max = x; + imax = i; + jmax = j; + } +#ifdef FP + if (isnan (x)) + { + *imin_out = i; + *jmin_out = j; + *imax_out = i; + *jmax_out = j; + return; + } +#endif + } + } + + *imin_out = imin; + *jmin_out = jmin; + *imax_out = imax; + *jmax_out = jmax; +} diff --git a/gsl-2.5/matrix/oper.c b/gsl-2.5/matrix/oper.c new file mode 100644 index 00000000..996efad8 --- /dev/null +++ b/gsl-2.5/matrix/oper.c @@ -0,0 +1,91 @@ +#include +#include +#include +#include +#include + +#define BASE_GSL_COMPLEX_LONG +#include "templates_on.h" +#include "oper_complex_source.c" +#include "templates_off.h" +#undef BASE_GSL_COMPLEX_LONG + +#define BASE_GSL_COMPLEX +#include "templates_on.h" +#include "oper_complex_source.c" +#include "templates_off.h" +#undef BASE_GSL_COMPLEX + +#define BASE_GSL_COMPLEX_FLOAT +#include "templates_on.h" +#include "oper_complex_source.c" +#include "templates_off.h" +#undef BASE_GSL_COMPLEX_FLOAT + +#define BASE_LONG_DOUBLE +#include "templates_on.h" +#include "oper_source.c" +#include "templates_off.h" +#undef BASE_LONG_DOUBLE + +#define BASE_DOUBLE +#include "templates_on.h" +#include "oper_source.c" +#include "templates_off.h" +#undef BASE_DOUBLE + +#define BASE_FLOAT +#include "templates_on.h" +#include "oper_source.c" +#include "templates_off.h" +#undef BASE_FLOAT + +#define BASE_ULONG +#include "templates_on.h" +#include "oper_source.c" +#include "templates_off.h" +#undef BASE_ULONG + +#define BASE_LONG +#include "templates_on.h" +#include "oper_source.c" +#include "templates_off.h" +#undef BASE_LONG + +#define BASE_UINT +#include "templates_on.h" +#include "oper_source.c" +#include "templates_off.h" +#undef BASE_UINT + +#define BASE_INT +#include "templates_on.h" +#include "oper_source.c" +#include "templates_off.h" +#undef BASE_INT + +#define BASE_USHORT +#include "templates_on.h" +#include "oper_source.c" +#include "templates_off.h" +#undef BASE_USHORT + +#define BASE_SHORT +#include "templates_on.h" +#include "oper_source.c" +#include "templates_off.h" +#undef BASE_SHORT + +#define BASE_UCHAR +#include "templates_on.h" +#include "oper_source.c" +#include "templates_off.h" +#undef BASE_UCHAR + +#define BASE_CHAR +#include "templates_on.h" +#include "oper_source.c" +#include "templates_off.h" +#undef BASE_CHAR + + diff --git a/gsl-2.5/matrix/oper.lo b/gsl-2.5/matrix/oper.lo new file mode 100644 index 00000000..0bc91450 --- /dev/null +++ b/gsl-2.5/matrix/oper.lo @@ -0,0 +1,12 @@ +# oper.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/oper.o' + +# Name of the non-PIC object +non_pic_object='oper.o' + diff --git a/gsl-2.5/matrix/oper_complex_source.c b/gsl-2.5/matrix/oper_complex_source.c new file mode 100644 index 00000000..5d2c5c51 --- /dev/null +++ b/gsl-2.5/matrix/oper_complex_source.c @@ -0,0 +1,236 @@ +/* matrix/oper_complex_source.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +int +FUNCTION (gsl_matrix, add) (TYPE (gsl_matrix) * a, + const TYPE (gsl_matrix) * b) +{ + const size_t M = a->size1; + const size_t N = a->size2; + + if (b->size1 != M || b->size2 != N) + { + GSL_ERROR ("matrices must have same dimensions", GSL_EBADLEN); + } + else + { + const size_t tda_a = a->tda; + const size_t tda_b = b->tda; + + size_t i, j; + + for (i = 0; i < M; i++) + { + for (j = 0; j < N; j++) + { + const size_t aij = 2 * (i * tda_a + j); + const size_t bij = 2 * (i * tda_b + j); + + a->data[aij] += b->data[bij]; + a->data[aij + 1] += b->data[bij + 1]; + } + } + + return GSL_SUCCESS; + } +} + +int +FUNCTION (gsl_matrix, sub) (TYPE (gsl_matrix) * a, + const TYPE (gsl_matrix) * b) +{ + const size_t M = a->size1; + const size_t N = a->size2; + + if (b->size1 != M || b->size2 != N) + { + GSL_ERROR ("matrices must have same dimensions", GSL_EBADLEN); + } + else + { + const size_t tda_a = a->tda; + const size_t tda_b = b->tda; + + size_t i, j; + + for (i = 0; i < M; i++) + { + for (j = 0; j < N; j++) + { + const size_t aij = 2 * (i * tda_a + j); + const size_t bij = 2 * (i * tda_b + j); + + a->data[aij] -= b->data[bij]; + a->data[aij + 1] -= b->data[bij + 1]; + } + } + + return GSL_SUCCESS; + } +} + +int +FUNCTION (gsl_matrix, mul_elements) (TYPE (gsl_matrix) * a, + const TYPE (gsl_matrix) * b) +{ + const size_t M = a->size1; + const size_t N = a->size2; + + if (b->size1 != M || b->size2 != N) + { + GSL_ERROR ("matrices must have same dimensions", GSL_EBADLEN); + } + else + { + const size_t tda_a = a->tda; + const size_t tda_b = b->tda; + + size_t i, j; + + for (i = 0; i < M; i++) + { + for (j = 0; j < N; j++) + { + const size_t aij = 2 * (i * tda_a + j); + const size_t bij = 2 * (i * tda_b + j); + + ATOMIC ar = a->data[aij]; + ATOMIC ai = a->data[aij + 1]; + + ATOMIC br = b->data[bij]; + ATOMIC bi = b->data[bij + 1]; + + a->data[aij] = ar * br - ai * bi; + a->data[aij + 1] = ar * bi + ai * br; + } + } + + return GSL_SUCCESS; + } +} + +int +FUNCTION (gsl_matrix, div_elements) (TYPE (gsl_matrix) * a, + const TYPE (gsl_matrix) * b) +{ + const size_t M = a->size1; + const size_t N = a->size2; + + if (b->size1 != M || b->size2 != N) + { + GSL_ERROR ("matrices must have same dimensions", GSL_EBADLEN); + } + else + { + const size_t tda_a = a->tda; + const size_t tda_b = b->tda; + + size_t i, j; + + for (i = 0; i < M; i++) + { + for (j = 0; j < N; j++) + { + const size_t aij = 2 * (i * tda_a + j); + const size_t bij = 2 * (i * tda_b + j); + + ATOMIC ar = a->data[aij]; + ATOMIC ai = a->data[aij + 1]; + + ATOMIC br = b->data[bij]; + ATOMIC bi = b->data[bij + 1]; + + ATOMIC s = 1.0 / hypot(br, bi); + + ATOMIC sbr = s * br; + ATOMIC sbi = s * bi; + + a->data[aij] = (ar * sbr + ai * sbi) * s; + a->data[aij + 1] = (ai * sbr - ar * sbi) * s; + } + } + + return GSL_SUCCESS; + } +} + +int FUNCTION (gsl_matrix, scale) (TYPE (gsl_matrix) * a, const BASE x) +{ + const size_t M = a->size1; + const size_t N = a->size2; + const size_t tda = a->tda; + + size_t i, j; + + ATOMIC xr = GSL_REAL(x); + ATOMIC xi = GSL_IMAG(x); + + for (i = 0; i < M; i++) + { + for (j = 0; j < N; j++) + { + const size_t aij = 2 * (i * tda + j); + + ATOMIC ar = a->data[aij]; + ATOMIC ai = a->data[aij + 1]; + + a->data[aij] = ar * xr - ai * xi; + a->data[aij + 1] = ar * xi + ai * xr; + } + } + + return GSL_SUCCESS; +} + +int FUNCTION (gsl_matrix, add_constant) (TYPE (gsl_matrix) * a, const BASE x) +{ + const size_t M = a->size1; + const size_t N = a->size2; + const size_t tda = a->tda; + + size_t i, j; + + for (i = 0; i < M; i++) + { + for (j = 0; j < N; j++) + { + a->data[2 * (i * tda + j)] += GSL_REAL (x); + a->data[2 * (i * tda + j) + 1] += GSL_IMAG (x); + } + } + + return GSL_SUCCESS; +} + + +int FUNCTION (gsl_matrix, add_diagonal) (TYPE (gsl_matrix) * a, const BASE x) +{ + const size_t M = a->size1; + const size_t N = a->size2; + const size_t tda = a->tda; + const size_t loop_lim = (M < N ? M : N); + size_t i; + for (i = 0; i < loop_lim; i++) + { + a->data[2 * (i * tda + i)] += GSL_REAL (x); + a->data[2 * (i * tda + i) + 1] += GSL_IMAG (x); + } + + return GSL_SUCCESS; +} diff --git a/gsl-2.5/matrix/oper_source.c b/gsl-2.5/matrix/oper_source.c new file mode 100644 index 00000000..3560c17f --- /dev/null +++ b/gsl-2.5/matrix/oper_source.c @@ -0,0 +1,191 @@ +/* matrix/oper_source.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +int +FUNCTION(gsl_matrix, add) (TYPE(gsl_matrix) * a, const TYPE(gsl_matrix) * b) +{ + const size_t M = a->size1; + const size_t N = a->size2; + + if (b->size1 != M || b->size2 != N) + { + GSL_ERROR ("matrices must have same dimensions", GSL_EBADLEN); + } + else + { + const size_t tda_a = a->tda; + const size_t tda_b = b->tda; + + size_t i, j; + + for (i = 0; i < M; i++) + { + for (j = 0; j < N; j++) + { + a->data[i * tda_a + j] += b->data[i * tda_b + j]; + } + } + + return GSL_SUCCESS; + } +} + +int +FUNCTION(gsl_matrix, sub) (TYPE(gsl_matrix) * a, const TYPE(gsl_matrix) * b) +{ + const size_t M = a->size1; + const size_t N = a->size2; + + if (b->size1 != M || b->size2 != N) + { + GSL_ERROR ("matrices must have same dimensions", GSL_EBADLEN); + } + else + { + const size_t tda_a = a->tda; + const size_t tda_b = b->tda; + + size_t i, j; + + for (i = 0; i < M; i++) + { + for (j = 0; j < N; j++) + { + a->data[i * tda_a + j] -= b->data[i * tda_b + j]; + } + } + + return GSL_SUCCESS; + } +} + +int +FUNCTION(gsl_matrix, mul_elements) (TYPE(gsl_matrix) * a, const TYPE(gsl_matrix) * b) +{ + const size_t M = a->size1; + const size_t N = a->size2; + + if (b->size1 != M || b->size2 != N) + { + GSL_ERROR ("matrices must have same dimensions", GSL_EBADLEN); + } + else + { + const size_t tda_a = a->tda; + const size_t tda_b = b->tda; + + size_t i, j; + + for (i = 0; i < M; i++) + { + for (j = 0; j < N; j++) + { + a->data[i * tda_a + j] *= b->data[i * tda_b + j]; + } + } + + return GSL_SUCCESS; + } +} + +int +FUNCTION(gsl_matrix, div_elements) (TYPE(gsl_matrix) * a, const TYPE(gsl_matrix) * b) +{ + const size_t M = a->size1; + const size_t N = a->size2; + + if (b->size1 != M || b->size2 != N) + { + GSL_ERROR ("matrices must have same dimensions", GSL_EBADLEN); + } + else + { + const size_t tda_a = a->tda; + const size_t tda_b = b->tda; + + size_t i, j; + + for (i = 0; i < M; i++) + { + for (j = 0; j < N; j++) + { + a->data[i * tda_a + j] /= b->data[i * tda_b + j]; + } + } + + return GSL_SUCCESS; + } +} + +int +FUNCTION(gsl_matrix, scale) (TYPE(gsl_matrix) * a, const double x) +{ + const size_t M = a->size1; + const size_t N = a->size2; + const size_t tda = a->tda; + + size_t i, j; + + for (i = 0; i < M; i++) + { + for (j = 0; j < N; j++) + { + a->data[i * tda + j] *= x; + } + } + + return GSL_SUCCESS; +} + +int +FUNCTION(gsl_matrix, add_constant) (TYPE(gsl_matrix) * a, const double x) +{ + const size_t M = a->size1; + const size_t N = a->size2; + const size_t tda = a->tda; + + size_t i, j; + + for (i = 0; i < M; i++) + { + for (j = 0; j < N; j++) + { + a->data[i * tda + j] += x; + } + } + + return GSL_SUCCESS; +} + + +int +FUNCTION(gsl_matrix, add_diagonal) (TYPE(gsl_matrix) * a, const double x) +{ + const size_t M = a->size1; + const size_t N = a->size2; + const size_t tda = a->tda; + const size_t loop_lim = ( M < N ? M : N ); + size_t i; + for (i = 0; i < loop_lim; i++) + { + a->data[i * tda + i] += x; + } + + return GSL_SUCCESS; +} diff --git a/gsl-2.5/matrix/prop.c b/gsl-2.5/matrix/prop.c new file mode 100644 index 00000000..b151e8de --- /dev/null +++ b/gsl-2.5/matrix/prop.c @@ -0,0 +1,87 @@ +#include +#include +#include + +#define BASE_GSL_COMPLEX_LONG +#include "templates_on.h" +#include "prop_source.c" +#include "templates_off.h" +#undef BASE_GSL_COMPLEX_LONG + +#define BASE_GSL_COMPLEX +#include "templates_on.h" +#include "prop_source.c" +#include "templates_off.h" +#undef BASE_GSL_COMPLEX + +#define BASE_GSL_COMPLEX_FLOAT +#include "templates_on.h" +#include "prop_source.c" +#include "templates_off.h" +#undef BASE_GSL_COMPLEX_FLOAT + +#define BASE_LONG_DOUBLE +#include "templates_on.h" +#include "prop_source.c" +#include "templates_off.h" +#undef BASE_LONG_DOUBLE + +#define BASE_DOUBLE +#include "templates_on.h" +#include "prop_source.c" +#include "templates_off.h" +#undef BASE_DOUBLE + +#define BASE_FLOAT +#include "templates_on.h" +#include "prop_source.c" +#include "templates_off.h" +#undef BASE_FLOAT + +#define BASE_ULONG +#include "templates_on.h" +#include "prop_source.c" +#include "templates_off.h" +#undef BASE_ULONG + +#define BASE_LONG +#include "templates_on.h" +#include "prop_source.c" +#include "templates_off.h" +#undef BASE_LONG + +#define BASE_UINT +#include "templates_on.h" +#include "prop_source.c" +#include "templates_off.h" +#undef BASE_UINT + +#define BASE_INT +#include "templates_on.h" +#include "prop_source.c" +#include "templates_off.h" +#undef BASE_INT + +#define BASE_USHORT +#include "templates_on.h" +#include "prop_source.c" +#include "templates_off.h" +#undef BASE_USHORT + +#define BASE_SHORT +#include "templates_on.h" +#include "prop_source.c" +#include "templates_off.h" +#undef BASE_SHORT + +#define BASE_UCHAR +#include "templates_on.h" +#include "prop_source.c" +#include "templates_off.h" +#undef BASE_UCHAR + +#define BASE_CHAR +#include "templates_on.h" +#include "prop_source.c" +#include "templates_off.h" +#undef BASE_CHAR diff --git a/gsl-2.5/matrix/prop.lo b/gsl-2.5/matrix/prop.lo new file mode 100644 index 00000000..f76bd287 --- /dev/null +++ b/gsl-2.5/matrix/prop.lo @@ -0,0 +1,12 @@ +# prop.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/prop.o' + +# Name of the non-PIC object +non_pic_object='prop.o' + diff --git a/gsl-2.5/matrix/prop_source.c b/gsl-2.5/matrix/prop_source.c new file mode 100644 index 00000000..eec2ecf0 --- /dev/null +++ b/gsl-2.5/matrix/prop_source.c @@ -0,0 +1,161 @@ +/* matrix/prop_source.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +int +FUNCTION (gsl_matrix, equal) (const TYPE (gsl_matrix) * a, const TYPE (gsl_matrix) * b) +{ + const size_t M = a->size1; + const size_t N = a->size2; + + if (b->size1 != M || b->size2 != N) + { + GSL_ERROR_VAL ("matrices must have same dimensions", GSL_EBADLEN, 0); + } + else + { + const size_t tda_a = a->tda; + const size_t tda_b = b->tda; + + size_t i, j, k; + + for (i = 0; i < M; i++) + { + for (j = 0; j < N; j++) + { + for (k = 0; k < MULTIPLICITY; k++) + { + if (a->data[(i * tda_a + j) * MULTIPLICITY + k] + != b->data[(i * tda_b + j) * MULTIPLICITY + k]) + { + return 0; + } + } + } + } + } + return 1; +} + + +int +FUNCTION (gsl_matrix, isnull) (const TYPE (gsl_matrix) * m) +{ + const size_t size1 = m->size1; + const size_t size2 = m->size2; + const size_t tda = m->tda ; + + size_t i, j, k; + + for (i = 0; i < size1 ; i++) + { + for (j = 0; j < size2; j++) + { + for (k = 0; k < MULTIPLICITY; k++) + { + if (m->data[(i * tda + j) * MULTIPLICITY + k] != 0.0) + { + return 0; + } + } + } + } + + return 1; +} + + +int +FUNCTION (gsl_matrix, ispos) (const TYPE (gsl_matrix) * m) +{ + const size_t size1 = m->size1; + const size_t size2 = m->size2; + const size_t tda = m->tda ; + + size_t i, j, k; + + for (i = 0; i < size1 ; i++) + { + for (j = 0; j < size2; j++) + { + for (k = 0; k < MULTIPLICITY; k++) + { + if (m->data[(i * tda + j) * MULTIPLICITY + k] <= 0.0) + { + return 0; + } + } + } + } + + return 1; +} + + +int +FUNCTION (gsl_matrix, isneg) (const TYPE (gsl_matrix) * m) +{ + const size_t size1 = m->size1; + const size_t size2 = m->size2; + const size_t tda = m->tda ; + + size_t i, j, k; + + for (i = 0; i < size1 ; i++) + { + for (j = 0; j < size2; j++) + { + for (k = 0; k < MULTIPLICITY; k++) + { + if (m->data[(i * tda + j) * MULTIPLICITY + k] >= 0.0) + { + return 0; + } + } + } + } + + return 1; +} + + +int +FUNCTION (gsl_matrix, isnonneg) (const TYPE (gsl_matrix) * m) +{ + const size_t size1 = m->size1; + const size_t size2 = m->size2; + const size_t tda = m->tda ; + + size_t i, j, k; + + for (i = 0; i < size1 ; i++) + { + for (j = 0; j < size2; j++) + { + for (k = 0; k < MULTIPLICITY; k++) + { + if (m->data[(i * tda + j) * MULTIPLICITY + k] < 0.0) + { + return 0; + } + } + } + } + + return 1; +} diff --git a/gsl-2.5/matrix/rowcol.c b/gsl-2.5/matrix/rowcol.c new file mode 100644 index 00000000..39a36f5a --- /dev/null +++ b/gsl-2.5/matrix/rowcol.c @@ -0,0 +1,178 @@ +#include +#include +#include +#include +#include + +#include "view.h" + +#define BASE_GSL_COMPLEX_LONG +#include "templates_on.h" +#include "rowcol_source.c" +#include "templates_off.h" +#undef BASE_GSL_COMPLEX_LONG + +#define BASE_GSL_COMPLEX +#include "templates_on.h" +#include "rowcol_source.c" +#include "templates_off.h" +#undef BASE_GSL_COMPLEX + +#define BASE_GSL_COMPLEX_FLOAT +#include "templates_on.h" +#include "rowcol_source.c" +#include "templates_off.h" +#undef BASE_GSL_COMPLEX_FLOAT + +#define BASE_LONG_DOUBLE +#include "templates_on.h" +#include "rowcol_source.c" +#include "templates_off.h" +#undef BASE_LONG_DOUBLE + +#define BASE_DOUBLE +#include "templates_on.h" +#include "rowcol_source.c" +#include "templates_off.h" +#undef BASE_DOUBLE + +#define BASE_FLOAT +#include "templates_on.h" +#include "rowcol_source.c" +#include "templates_off.h" +#undef BASE_FLOAT + +#define BASE_ULONG +#include "templates_on.h" +#include "rowcol_source.c" +#include "templates_off.h" +#undef BASE_ULONG + +#define BASE_LONG +#include "templates_on.h" +#include "rowcol_source.c" +#include "templates_off.h" +#undef BASE_LONG + +#define BASE_UINT +#include "templates_on.h" +#include "rowcol_source.c" +#include "templates_off.h" +#undef BASE_UINT + +#define BASE_INT +#include "templates_on.h" +#include "rowcol_source.c" +#include "templates_off.h" +#undef BASE_INT + +#define BASE_USHORT +#include "templates_on.h" +#include "rowcol_source.c" +#include "templates_off.h" +#undef BASE_USHORT + +#define BASE_SHORT +#include "templates_on.h" +#include "rowcol_source.c" +#include "templates_off.h" +#undef BASE_SHORT + +#define BASE_UCHAR +#include "templates_on.h" +#include "rowcol_source.c" +#include "templates_off.h" +#undef BASE_UCHAR + +#define BASE_CHAR +#include "templates_on.h" +#include "rowcol_source.c" +#include "templates_off.h" +#undef BASE_CHAR + +#define USE_QUALIFIER +#define QUALIFIER const + +#define BASE_GSL_COMPLEX_LONG +#include "templates_on.h" +#include "rowcol_source.c" +#include "templates_off.h" +#undef BASE_GSL_COMPLEX_LONG + +#define BASE_GSL_COMPLEX +#include "templates_on.h" +#include "rowcol_source.c" +#include "templates_off.h" +#undef BASE_GSL_COMPLEX + +#define BASE_GSL_COMPLEX_FLOAT +#include "templates_on.h" +#include "rowcol_source.c" +#include "templates_off.h" +#undef BASE_GSL_COMPLEX_FLOAT + +#define BASE_LONG_DOUBLE +#include "templates_on.h" +#include "rowcol_source.c" +#include "templates_off.h" +#undef BASE_LONG_DOUBLE + +#define BASE_DOUBLE +#include "templates_on.h" +#include "rowcol_source.c" +#include "templates_off.h" +#undef BASE_DOUBLE + +#define BASE_FLOAT +#include "templates_on.h" +#include "rowcol_source.c" +#include "templates_off.h" +#undef BASE_FLOAT + +#define BASE_ULONG +#include "templates_on.h" +#include "rowcol_source.c" +#include "templates_off.h" +#undef BASE_ULONG + +#define BASE_LONG +#include "templates_on.h" +#include "rowcol_source.c" +#include "templates_off.h" +#undef BASE_LONG + +#define BASE_UINT +#include "templates_on.h" +#include "rowcol_source.c" +#include "templates_off.h" +#undef BASE_UINT + +#define BASE_INT +#include "templates_on.h" +#include "rowcol_source.c" +#include "templates_off.h" +#undef BASE_INT + +#define BASE_USHORT +#include "templates_on.h" +#include "rowcol_source.c" +#include "templates_off.h" +#undef BASE_USHORT + +#define BASE_SHORT +#include "templates_on.h" +#include "rowcol_source.c" +#include "templates_off.h" +#undef BASE_SHORT + +#define BASE_UCHAR +#include "templates_on.h" +#include "rowcol_source.c" +#include "templates_off.h" +#undef BASE_UCHAR + +#define BASE_CHAR +#include "templates_on.h" +#include "rowcol_source.c" +#include "templates_off.h" +#undef BASE_CHAR diff --git a/gsl-2.5/matrix/rowcol.lo b/gsl-2.5/matrix/rowcol.lo new file mode 100644 index 00000000..47df6a27 --- /dev/null +++ b/gsl-2.5/matrix/rowcol.lo @@ -0,0 +1,12 @@ +# rowcol.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/rowcol.o' + +# Name of the non-PIC object +non_pic_object='rowcol.o' + diff --git a/gsl-2.5/matrix/rowcol_source.c b/gsl-2.5/matrix/rowcol_source.c new file mode 100644 index 00000000..072e3839 --- /dev/null +++ b/gsl-2.5/matrix/rowcol_source.c @@ -0,0 +1,199 @@ +/* matrix/rowcol_source.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +QUALIFIED_VIEW(_gsl_vector,view) +FUNCTION (gsl_matrix, row) (QUALIFIED_TYPE(gsl_matrix) * m, const size_t i) +{ + QUALIFIED_VIEW(_gsl_vector,view) view = NULL_VECTOR_VIEW; + + if (i >= m->size1) + { + GSL_ERROR_VAL ("row index is out of range", GSL_EINVAL, view); + } + + { + TYPE(gsl_vector) v = NULL_VECTOR; + + v.data = m->data + i * MULTIPLICITY * m->tda; + v.size = m->size2; + v.stride = 1; + v.block = m->block; + v.owner = 0; + + view.vector = v; + return view; + } +} + +QUALIFIED_VIEW(_gsl_vector,view) +FUNCTION (gsl_matrix, column) (QUALIFIED_TYPE(gsl_matrix) * m, const size_t j) +{ + QUALIFIED_VIEW(_gsl_vector,view) view = NULL_VECTOR_VIEW; + + if (j >= m->size2) + { + GSL_ERROR_VAL ("column index is out of range", GSL_EINVAL, view); + } + + { + TYPE(gsl_vector) v = NULL_VECTOR; + + v.data = m->data + j * MULTIPLICITY; + v.size = m->size1; + v.stride = m->tda; + v.block = m->block; + v.owner = 0; + + view.vector = v; + return view; + } +} + +QUALIFIED_VIEW(_gsl_vector,view) +FUNCTION (gsl_matrix, diagonal) (QUALIFIED_TYPE(gsl_matrix) * m) +{ + QUALIFIED_VIEW(_gsl_vector,view) view = NULL_VECTOR_VIEW; + + TYPE(gsl_vector) v = NULL_VECTOR; + v.data = m->data; + v.size = GSL_MIN(m->size1,m->size2); + v.stride = m->tda + 1; + v.block = m->block; + v.owner = 0; + + view.vector = v; + return view; +} + +QUALIFIED_VIEW(_gsl_vector,view) +FUNCTION (gsl_matrix, subdiagonal) (QUALIFIED_TYPE(gsl_matrix) * m, + const size_t k) +{ + QUALIFIED_VIEW(_gsl_vector,view) view = NULL_VECTOR_VIEW; + + if (k >= m->size1) + { + GSL_ERROR_VAL ("subdiagonal index is out of range", GSL_EINVAL, view); + } + + { + TYPE(gsl_vector) v = NULL_VECTOR; + + v.data = m->data + k * MULTIPLICITY * m->tda; + v.size = GSL_MIN(m->size1 - k, m->size2); + v.stride = m->tda + 1; + v.block = m->block; + v.owner = 0; + + view.vector = v; + return view; + } +} + +QUALIFIED_VIEW(_gsl_vector,view) +FUNCTION (gsl_matrix, superdiagonal) (QUALIFIED_TYPE(gsl_matrix) * m, + const size_t k) +{ + QUALIFIED_VIEW(_gsl_vector,view) view = NULL_VECTOR_VIEW; + + + if (k >= m->size2) + { + GSL_ERROR_VAL ("column index is out of range", GSL_EINVAL, view); + } + + { + TYPE(gsl_vector) v = NULL_VECTOR; + + v.data = m->data + k * MULTIPLICITY; + v.size = GSL_MIN(m->size1, m->size2 - k); + v.stride = m->tda + 1; + v.block = m->block; + v.owner = 0; + + view.vector = v; + return view; + } +} + +QUALIFIED_VIEW(_gsl_vector,view) +FUNCTION (gsl_matrix, subrow) (QUALIFIED_TYPE(gsl_matrix) * m, const size_t i, const size_t offset, const size_t n) +{ + QUALIFIED_VIEW(_gsl_vector,view) view = NULL_VECTOR_VIEW; + + if (i >= m->size1) + { + GSL_ERROR_VAL ("row index is out of range", GSL_EINVAL, view); + } + else if (n == 0) + { + GSL_ERROR_VAL ("vector length n must be positive integer", + GSL_EINVAL, view); + } + else if (offset + n > m->size2) + { + GSL_ERROR_VAL ("dimension n overflows matrix", GSL_EINVAL, view); + } + + { + TYPE(gsl_vector) v = NULL_VECTOR; + + v.data = m->data + MULTIPLICITY * (i * m->tda + offset); + v.size = n; + v.stride = 1; + v.block = m->block; + v.owner = 0; + + view.vector = v; + return view; + } +} + +QUALIFIED_VIEW(_gsl_vector,view) +FUNCTION (gsl_matrix, subcolumn) (QUALIFIED_TYPE(gsl_matrix) * m, const size_t j, const size_t offset, const size_t n) +{ + QUALIFIED_VIEW(_gsl_vector,view) view = NULL_VECTOR_VIEW; + + if (j >= m->size2) + { + GSL_ERROR_VAL ("column index is out of range", GSL_EINVAL, view); + } + else if (n == 0) + { + GSL_ERROR_VAL ("vector length n must be positive integer", + GSL_EINVAL, view); + } + else if (offset + n > m->size1) + { + GSL_ERROR_VAL ("dimension n overflows matrix", GSL_EINVAL, view); + } + + { + TYPE(gsl_vector) v = NULL_VECTOR; + + v.data = m->data + MULTIPLICITY * (offset * m->tda + j); + v.size = n; + v.stride = m->tda; + v.block = m->block; + v.owner = 0; + + view.vector = v; + return view; + } +} diff --git a/gsl-2.5/matrix/submatrix.c b/gsl-2.5/matrix/submatrix.c new file mode 100644 index 00000000..c9427629 --- /dev/null +++ b/gsl-2.5/matrix/submatrix.c @@ -0,0 +1,178 @@ +#include +#include +#include +#include +#include + +#include "view.h" + +#define BASE_GSL_COMPLEX_LONG +#include "templates_on.h" +#include "submatrix_source.c" +#include "templates_off.h" +#undef BASE_GSL_COMPLEX_LONG + +#define BASE_GSL_COMPLEX +#include "templates_on.h" +#include "submatrix_source.c" +#include "templates_off.h" +#undef BASE_GSL_COMPLEX + +#define BASE_GSL_COMPLEX_FLOAT +#include "templates_on.h" +#include "submatrix_source.c" +#include "templates_off.h" +#undef BASE_GSL_COMPLEX_FLOAT + +#define BASE_LONG_DOUBLE +#include "templates_on.h" +#include "submatrix_source.c" +#include "templates_off.h" +#undef BASE_LONG_DOUBLE + +#define BASE_DOUBLE +#include "templates_on.h" +#include "submatrix_source.c" +#include "templates_off.h" +#undef BASE_DOUBLE + +#define BASE_FLOAT +#include "templates_on.h" +#include "submatrix_source.c" +#include "templates_off.h" +#undef BASE_FLOAT + +#define BASE_ULONG +#include "templates_on.h" +#include "submatrix_source.c" +#include "templates_off.h" +#undef BASE_ULONG + +#define BASE_LONG +#include "templates_on.h" +#include "submatrix_source.c" +#include "templates_off.h" +#undef BASE_LONG + +#define BASE_UINT +#include "templates_on.h" +#include "submatrix_source.c" +#include "templates_off.h" +#undef BASE_UINT + +#define BASE_INT +#include "templates_on.h" +#include "submatrix_source.c" +#include "templates_off.h" +#undef BASE_INT + +#define BASE_USHORT +#include "templates_on.h" +#include "submatrix_source.c" +#include "templates_off.h" +#undef BASE_USHORT + +#define BASE_SHORT +#include "templates_on.h" +#include "submatrix_source.c" +#include "templates_off.h" +#undef BASE_SHORT + +#define BASE_UCHAR +#include "templates_on.h" +#include "submatrix_source.c" +#include "templates_off.h" +#undef BASE_UCHAR + +#define BASE_CHAR +#include "templates_on.h" +#include "submatrix_source.c" +#include "templates_off.h" +#undef BASE_CHAR + +#define USE_QUALIFIER +#define QUALIFIER const + +#define BASE_GSL_COMPLEX_LONG +#include "templates_on.h" +#include "submatrix_source.c" +#include "templates_off.h" +#undef BASE_GSL_COMPLEX_LONG + +#define BASE_GSL_COMPLEX +#include "templates_on.h" +#include "submatrix_source.c" +#include "templates_off.h" +#undef BASE_GSL_COMPLEX + +#define BASE_GSL_COMPLEX_FLOAT +#include "templates_on.h" +#include "submatrix_source.c" +#include "templates_off.h" +#undef BASE_GSL_COMPLEX_FLOAT + +#define BASE_LONG_DOUBLE +#include "templates_on.h" +#include "submatrix_source.c" +#include "templates_off.h" +#undef BASE_LONG_DOUBLE + +#define BASE_DOUBLE +#include "templates_on.h" +#include "submatrix_source.c" +#include "templates_off.h" +#undef BASE_DOUBLE + +#define BASE_FLOAT +#include "templates_on.h" +#include "submatrix_source.c" +#include "templates_off.h" +#undef BASE_FLOAT + +#define BASE_ULONG +#include "templates_on.h" +#include "submatrix_source.c" +#include "templates_off.h" +#undef BASE_ULONG + +#define BASE_LONG +#include "templates_on.h" +#include "submatrix_source.c" +#include "templates_off.h" +#undef BASE_LONG + +#define BASE_UINT +#include "templates_on.h" +#include "submatrix_source.c" +#include "templates_off.h" +#undef BASE_UINT + +#define BASE_INT +#include "templates_on.h" +#include "submatrix_source.c" +#include "templates_off.h" +#undef BASE_INT + +#define BASE_USHORT +#include "templates_on.h" +#include "submatrix_source.c" +#include "templates_off.h" +#undef BASE_USHORT + +#define BASE_SHORT +#include "templates_on.h" +#include "submatrix_source.c" +#include "templates_off.h" +#undef BASE_SHORT + +#define BASE_UCHAR +#include "templates_on.h" +#include "submatrix_source.c" +#include "templates_off.h" +#undef BASE_UCHAR + +#define BASE_CHAR +#include "templates_on.h" +#include "submatrix_source.c" +#include "templates_off.h" +#undef BASE_CHAR diff --git a/gsl-2.5/matrix/submatrix.lo b/gsl-2.5/matrix/submatrix.lo new file mode 100644 index 00000000..b12ea488 --- /dev/null +++ b/gsl-2.5/matrix/submatrix.lo @@ -0,0 +1,12 @@ +# submatrix.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/submatrix.o' + +# Name of the non-PIC object +non_pic_object='submatrix.o' + diff --git a/gsl-2.5/matrix/submatrix_source.c b/gsl-2.5/matrix/submatrix_source.c new file mode 100644 index 00000000..d5ad64cd --- /dev/null +++ b/gsl-2.5/matrix/submatrix_source.c @@ -0,0 +1,58 @@ +/* matrix/submatrix_source.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +QUALIFIED_VIEW(_gsl_matrix,view) +FUNCTION (gsl_matrix, submatrix) (QUALIFIED_TYPE(gsl_matrix) * m, + const size_t i, const size_t j, + const size_t n1, const size_t n2) +{ + QUALIFIED_VIEW(_gsl_matrix,view) view = NULL_MATRIX_VIEW; + + if (i >= m->size1) + { + GSL_ERROR_VAL ("row index is out of range", GSL_EINVAL, view); + } + else if (j >= m->size2) + { + GSL_ERROR_VAL ("column index is out of range", GSL_EINVAL, view); + } + else if (i + n1 > m->size1) + { + GSL_ERROR_VAL ("first dimension overflows matrix", GSL_EINVAL, view); + } + else if (j + n2 > m->size2) + { + GSL_ERROR_VAL ("second dimension overflows matrix", GSL_EINVAL, view); + } + + { + TYPE(gsl_matrix) s = NULL_MATRIX; + + s.data = m->data + MULTIPLICITY * (i * m->tda + j); + s.size1 = n1; + s.size2 = n2; + s.tda = m->tda; + s.block = m->block; + s.owner = 0; + + view.matrix = s; + return view; + } +} + diff --git a/gsl-2.5/matrix/swap.c b/gsl-2.5/matrix/swap.c new file mode 100644 index 00000000..cf5b67c4 --- /dev/null +++ b/gsl-2.5/matrix/swap.c @@ -0,0 +1,88 @@ +#include +#include +#include +#include + +#define BASE_GSL_COMPLEX_LONG +#include "templates_on.h" +#include "swap_source.c" +#include "templates_off.h" +#undef BASE_GSL_COMPLEX_LONG + +#define BASE_GSL_COMPLEX +#include "templates_on.h" +#include "swap_source.c" +#include "templates_off.h" +#undef BASE_GSL_COMPLEX + +#define BASE_GSL_COMPLEX_FLOAT +#include "templates_on.h" +#include "swap_source.c" +#include "templates_off.h" +#undef BASE_GSL_COMPLEX_FLOAT + +#define BASE_LONG_DOUBLE +#include "templates_on.h" +#include "swap_source.c" +#include "templates_off.h" +#undef BASE_LONG_DOUBLE + +#define BASE_DOUBLE +#include "templates_on.h" +#include "swap_source.c" +#include "templates_off.h" +#undef BASE_DOUBLE + +#define BASE_FLOAT +#include "templates_on.h" +#include "swap_source.c" +#include "templates_off.h" +#undef BASE_FLOAT + +#define BASE_ULONG +#include "templates_on.h" +#include "swap_source.c" +#include "templates_off.h" +#undef BASE_ULONG + +#define BASE_LONG +#include "templates_on.h" +#include "swap_source.c" +#include "templates_off.h" +#undef BASE_LONG + +#define BASE_UINT +#include "templates_on.h" +#include "swap_source.c" +#include "templates_off.h" +#undef BASE_UINT + +#define BASE_INT +#include "templates_on.h" +#include "swap_source.c" +#include "templates_off.h" +#undef BASE_INT + +#define BASE_USHORT +#include "templates_on.h" +#include "swap_source.c" +#include "templates_off.h" +#undef BASE_USHORT + +#define BASE_SHORT +#include "templates_on.h" +#include "swap_source.c" +#include "templates_off.h" +#undef BASE_SHORT + +#define BASE_UCHAR +#include "templates_on.h" +#include "swap_source.c" +#include "templates_off.h" +#undef BASE_UCHAR + +#define BASE_CHAR +#include "templates_on.h" +#include "swap_source.c" +#include "templates_off.h" +#undef BASE_CHAR diff --git a/gsl-2.5/matrix/swap.lo b/gsl-2.5/matrix/swap.lo new file mode 100644 index 00000000..fd74e39c --- /dev/null +++ b/gsl-2.5/matrix/swap.lo @@ -0,0 +1,12 @@ +# swap.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/swap.o' + +# Name of the non-PIC object +non_pic_object='swap.o' + diff --git a/gsl-2.5/matrix/swap_source.c b/gsl-2.5/matrix/swap_source.c new file mode 100644 index 00000000..8354332c --- /dev/null +++ b/gsl-2.5/matrix/swap_source.c @@ -0,0 +1,284 @@ +/* matrix/swap_source.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +int +FUNCTION (gsl_matrix, swap_rows) (TYPE (gsl_matrix) * m, + const size_t i, const size_t j) +{ + const size_t size1 = m->size1; + const size_t size2 = m->size2; + + if (i >= size1) + { + GSL_ERROR ("first row index is out of range", GSL_EINVAL); + } + + if (j >= size1) + { + GSL_ERROR ("second row index is out of range", GSL_EINVAL); + } + + if (i != j) + { + ATOMIC *row1 = m->data + MULTIPLICITY * i * m->tda; + ATOMIC *row2 = m->data + MULTIPLICITY * j * m->tda; + + size_t k; + + for (k = 0; k < MULTIPLICITY * size2; k++) + { + ATOMIC tmp = row1[k] ; + row1[k] = row2[k] ; + row2[k] = tmp ; + } + } + + return GSL_SUCCESS; +} + +int +FUNCTION (gsl_matrix, swap_columns) (TYPE (gsl_matrix) * m, + const size_t i, const size_t j) +{ + const size_t size1 = m->size1; + const size_t size2 = m->size2; + + if (i >= size2) + { + GSL_ERROR ("first column index is out of range", GSL_EINVAL); + } + + if (j >= size2) + { + GSL_ERROR ("second column index is out of range", GSL_EINVAL); + } + + if (i != j) + { + ATOMIC *col1 = m->data + MULTIPLICITY * i; + ATOMIC *col2 = m->data + MULTIPLICITY * j; + + size_t p; + + for (p = 0; p < size1; p++) + { + size_t k; + size_t n = p * MULTIPLICITY * m->tda; + + for (k = 0; k < MULTIPLICITY; k++) + { + ATOMIC tmp = col1[n+k] ; + col1[n+k] = col2[n+k] ; + col2[n+k] = tmp ; + } + } + } + + return GSL_SUCCESS; +} + + +int +FUNCTION (gsl_matrix, swap_rowcol) (TYPE (gsl_matrix) * m, + const size_t i, const size_t j) +{ + const size_t size1 = m->size1; + const size_t size2 = m->size2; + + if (size1 != size2) + { + GSL_ERROR ("matrix must be square to swap row and column", GSL_ENOTSQR); + } + + if (i >= size1) + { + GSL_ERROR ("row index is out of range", GSL_EINVAL); + } + + if (j >= size2) + { + GSL_ERROR ("column index is out of range", GSL_EINVAL); + } + + { + ATOMIC *row = m->data + MULTIPLICITY * i * m->tda; + ATOMIC *col = m->data + MULTIPLICITY * j; + + size_t p; + + for (p = 0; p < size1; p++) + { + size_t k; + + size_t r = p * MULTIPLICITY; + size_t c = p * MULTIPLICITY * m->tda; + + for (k = 0; k < MULTIPLICITY; k++) + { + ATOMIC tmp = col[c+k] ; + col[c+k] = row[r+k] ; + row[r+k] = tmp ; + } + } + } + + return GSL_SUCCESS; +} + + +int +FUNCTION (gsl_matrix, transpose) (TYPE (gsl_matrix) * m) +{ + const size_t size1 = m->size1; + const size_t size2 = m->size2; + size_t i, j, k; + + if (size1 != size2) + { + GSL_ERROR ("matrix must be square to take transpose", GSL_ENOTSQR); + } + + for (i = 0; i < size1; i++) + { + for (j = i + 1 ; j < size2 ; j++) + { + for (k = 0; k < MULTIPLICITY; k++) + { + size_t e1 = (i * m->tda + j) * MULTIPLICITY + k ; + size_t e2 = (j * m->tda + i) * MULTIPLICITY + k ; + { + ATOMIC tmp = m->data[e1] ; + m->data[e1] = m->data[e2] ; + m->data[e2] = tmp ; + } + } + } + } + + return GSL_SUCCESS; +} + +int +FUNCTION (gsl_matrix, transpose_memcpy) (TYPE (gsl_matrix) * dest, + const TYPE (gsl_matrix) * src) +{ + const size_t src_size1 = src->size1; + const size_t src_size2 = src->size2; + + const size_t dest_size1 = dest->size1; + const size_t dest_size2 = dest->size2; + + size_t i, j, k; + + if (dest_size2 != src_size1 || dest_size1 != src_size2) + { + GSL_ERROR ("dimensions of dest matrix must be transpose of src matrix", + GSL_EBADLEN); + } + + for (i = 0; i < dest_size1; i++) + { + for (j = 0 ; j < dest_size2; j++) + { + for (k = 0; k < MULTIPLICITY; k++) + { + size_t e1 = (i * dest->tda + j) * MULTIPLICITY + k ; + size_t e2 = (j * src->tda + i) * MULTIPLICITY + k ; + + dest->data[e1] = src->data[e2] ; + } + } + } + + return GSL_SUCCESS; +} + +int +FUNCTION (gsl_matrix, transpose_tricpy) (const char uplo_src, + const int copy_diag, TYPE (gsl_matrix) * dest, + const TYPE (gsl_matrix) * src) +{ + const size_t src_size1 = src->size1; + const size_t src_size2 = src->size2; + const size_t dest_size1 = dest->size1; + const size_t dest_size2 = dest->size2; + + if (src_size1 != dest_size1 || src_size2 != dest_size2) + { + GSL_ERROR ("matrix sizes are different", GSL_EBADLEN); + } + + { + const size_t src_tda = src->tda ; + const size_t dest_tda = dest->tda ; + size_t i, j, k; + + if (uplo_src == 'L') + { + /* copy lower triangle of src to upper triangle of dest */ + for (i = 0; i < src_size1 ; i++) + { + for (j = 0; j < i; j++) + { + for (k = 0; k < MULTIPLICITY; k++) + { + size_t e1 = (j * dest_tda + i) * MULTIPLICITY + k ; + size_t e2 = (i * src_tda + j) * MULTIPLICITY + k ; + dest->data[e1] = src->data[e2]; + } + } + } + } + else if (uplo_src == 'U') + { + /* copy upper triangle of src to lower triangle of dest */ + for (i = 0; i < src_size1 ; i++) + { + for (j = i + 1; j < src_size2; j++) + { + for (k = 0; k < MULTIPLICITY; k++) + { + size_t e1 = (j * dest_tda + i) * MULTIPLICITY + k ; + size_t e2 = (i * src_tda + j) * MULTIPLICITY + k ; + dest->data[e1] = src->data[e2]; + } + } + } + } + else + { + GSL_ERROR ("invalid uplo_src parameter", GSL_EINVAL); + } + + if (copy_diag) + { + for (i = 0; i < src_size1 ; i++) + { + for (k = 0; k < MULTIPLICITY; k++) + { + size_t e1 = (i * dest_tda + i) * MULTIPLICITY + k ; + size_t e2 = (i * src_tda + i) * MULTIPLICITY + k ; + dest->data[e1] = src->data[e2]; + } + } + } + } + + return GSL_SUCCESS; +} diff --git a/gsl-2.5/matrix/test b/gsl-2.5/matrix/test new file mode 100755 index 00000000..b0278702 Binary files /dev/null and b/gsl-2.5/matrix/test differ diff --git a/gsl-2.5/matrix/test-suite.log b/gsl-2.5/matrix/test-suite.log new file mode 100644 index 00000000..d4fd3954 --- /dev/null +++ b/gsl-2.5/matrix/test-suite.log @@ -0,0 +1,14 @@ +==================================== + gsl 2.5: matrix/test-suite.log +==================================== + +# TOTAL: 2 +# PASS: 2 +# SKIP: 0 +# XFAIL: 0 +# FAIL: 0 +# XPASS: 0 +# ERROR: 0 + +.. contents:: :depth: 2 + diff --git a/gsl-2.5/matrix/test.c b/gsl-2.5/matrix/test.c new file mode 100644 index 00000000..9539ad60 --- /dev/null +++ b/gsl-2.5/matrix/test.c @@ -0,0 +1,257 @@ +/* matrix/test.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include + +#if defined( _MSC_VER ) && defined( GSL_DLL ) +#undef inline +#define inline __forceinline +#endif +#if (!GSL_RANGE_CHECK) && defined(HAVE_INLINE) +#undef GSL_RANGE_CHECK +#define GSL_RANGE_CHECK 1 +#endif + +#include +#include +#include +#include +#include +#include +#include +#include + +int status = 0; + +#ifndef DESC +#define DESC "" +#endif + +#define BASE_GSL_COMPLEX_LONG +#include "templates_on.h" +#include "test_complex_source.c" +#include "templates_off.h" +#undef BASE_GSL_COMPLEX_LONG + +#define BASE_GSL_COMPLEX +#include "templates_on.h" +#include "test_complex_source.c" +#include "templates_off.h" +#undef BASE_GSL_COMPLEX + +#define BASE_GSL_COMPLEX_FLOAT +#include "templates_on.h" +#include "test_complex_source.c" +#include "templates_off.h" +#undef BASE_GSL_COMPLEX_FLOAT + +#define BASE_LONG_DOUBLE +#include "templates_on.h" +#include "test_source.c" +#include "templates_off.h" +#undef BASE_LONG_DOUBLE + +#define BASE_DOUBLE +#include "templates_on.h" +#include "test_source.c" +#include "templates_off.h" +#undef BASE_DOUBLE + +#define BASE_FLOAT +#include "templates_on.h" +#include "test_source.c" +#include "templates_off.h" +#undef BASE_FLOAT + +#define BASE_ULONG +#include "templates_on.h" +#include "test_source.c" +#include "templates_off.h" +#undef BASE_ULONG + +#define BASE_LONG +#include "templates_on.h" +#include "test_source.c" +#include "templates_off.h" +#undef BASE_LONG + +#define BASE_UINT +#include "templates_on.h" +#include "test_source.c" +#include "templates_off.h" +#undef BASE_UINT + +#define BASE_INT +#include "templates_on.h" +#include "test_source.c" +#include "templates_off.h" +#undef BASE_INT + +#define BASE_USHORT +#include "templates_on.h" +#include "test_source.c" +#include "templates_off.h" +#undef BASE_USHORT + +#define BASE_SHORT +#include "templates_on.h" +#include "test_source.c" +#include "templates_off.h" +#undef BASE_SHORT + +#define BASE_UCHAR +#include "templates_on.h" +#include "test_source.c" +#include "templates_off.h" +#undef BASE_UCHAR + +#define BASE_CHAR +#include "templates_on.h" +#include "test_source.c" +#include "templates_off.h" +#undef BASE_CHAR + +void my_error_handler (const char *reason, const char *file, + int line, int err); + +int +main (void) +{ + size_t M = 53; + size_t N = 107; + + gsl_ieee_env_setup (); + + test_func (M, N); + test_float_func (M, N); + test_long_double_func (M, N); + test_ulong_func (M, N); + test_long_func (M, N); + test_uint_func (M, N); + test_int_func (M, N); + test_ushort_func (M, N); + test_short_func (M, N); + test_uchar_func (M, N); + test_char_func (M, N); + test_complex_func (M, N); + test_complex_float_func (M, N); + test_complex_long_double_func (M, N); + + test_ops (M, N); + test_float_ops (M, N); + test_long_double_ops (M, N); + test_ulong_ops (M, N); + test_long_ops (M, N); + test_uint_ops (M, N); + test_int_ops (M, N); + test_ushort_ops (M, N); + test_short_ops (M, N); + test_uchar_ops (M, N); + test_char_ops (M, N); + + /* Must use smaller dimensions to prevent approximation of floats in + float_mul_elements test*/ + + { + const size_t P = 8; + const size_t Q = 12; + + test_complex_ops (P, Q); + test_complex_float_ops (P, Q); + test_complex_long_double_ops (P, Q); + } + + test_text (M, N); + test_float_text (M, N); +#if HAVE_PRINTF_LONGDOUBLE + test_long_double_text (M, N); +#endif + test_ulong_text (M, N); + test_long_text (M, N); + test_uint_text (M, N); + test_int_text (M, N); + test_ushort_text (M, N); + test_short_text (M, N); + test_uchar_text (M, N); + test_char_text (M, N); + test_complex_text (M, N); + test_complex_float_text (M, N); +#if HAVE_PRINTF_LONGDOUBLE + test_complex_long_double_text (M, N); +#endif + + test_binary (M, N); + test_float_binary (M, N); + test_long_double_binary (M, N); + test_ulong_binary (M, N); + test_long_binary (M, N); + test_uint_binary (M, N); + test_int_binary (M, N); + test_ushort_binary (M, N); + test_short_binary (M, N); + test_uchar_binary (M, N); + test_char_binary (M, N); + test_complex_binary (M, N); + test_complex_float_binary (M, N); + test_complex_long_double_binary (M, N); + + test_binary_noncontiguous (M, N); + test_float_binary_noncontiguous (M, N); + test_long_double_binary_noncontiguous (M, N); + test_ulong_binary_noncontiguous (M, N); + test_long_binary_noncontiguous (M, N); + test_uint_binary_noncontiguous (M, N); + test_int_binary_noncontiguous (M, N); + test_ushort_binary_noncontiguous (M, N); + test_short_binary_noncontiguous (M, N); + test_uchar_binary_noncontiguous (M, N); + test_char_binary_noncontiguous (M, N); + test_complex_binary_noncontiguous (M, N); + test_complex_float_binary_noncontiguous (M, N); + test_complex_long_double_binary_noncontiguous (M, N); + +#if GSL_RANGE_CHECK + gsl_set_error_handler (&my_error_handler); + + test_trap (M, N); + test_float_trap (M, N); + test_long_double_trap (M, N); + test_ulong_trap (M, N); + test_long_trap (M, N); + test_uint_trap (M, N); + test_int_trap (M, N); + test_ushort_trap (M, N); + test_short_trap (M, N); + test_uchar_trap (M, N); + test_char_trap (M, N); + test_complex_trap (M, N); + test_complex_float_trap (M, N); + test_complex_long_double_trap (M, N); +#endif + + exit (gsl_test_summary ()); +} + +void +my_error_handler (const char *reason, const char *file, int line, int err) +{ + if (0) + printf ("(caught [%s:%d: %s (%d)])\n", file, line, reason, err); + status = 1; +} diff --git a/gsl-2.5/matrix/test.dat b/gsl-2.5/matrix/test.dat new file mode 100644 index 00000000..d67f602c Binary files /dev/null and b/gsl-2.5/matrix/test.dat differ diff --git a/gsl-2.5/matrix/test.log b/gsl-2.5/matrix/test.log new file mode 100644 index 00000000..f01aa229 --- /dev/null +++ b/gsl-2.5/matrix/test.log @@ -0,0 +1 @@ +Completed [1012/1012] diff --git a/gsl-2.5/matrix/test.trs b/gsl-2.5/matrix/test.trs new file mode 100644 index 00000000..3f0f396c --- /dev/null +++ b/gsl-2.5/matrix/test.trs @@ -0,0 +1,4 @@ +:test-result: PASS +:global-test-result: PASS +:recheck: no +:copy-in-global-log: no diff --git a/gsl-2.5/matrix/test_complex_source.c b/gsl-2.5/matrix/test_complex_source.c new file mode 100644 index 00000000..84c43e53 --- /dev/null +++ b/gsl-2.5/matrix/test_complex_source.c @@ -0,0 +1,796 @@ +/* matrix/test_complex_source.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +void FUNCTION (test, func) (const size_t M, const size_t N); +void FUNCTION (test, ops) (const size_t P, const size_t Q); +void FUNCTION (test, trap) (const size_t M, const size_t N); +void FUNCTION (test, text) (const size_t M, const size_t N); +void FUNCTION (test, binary) (const size_t M, const size_t N); +void FUNCTION (test, binary_noncontiguous) (const size_t M, const size_t N); + +#define TEST(expr,desc) gsl_test((expr), NAME(gsl_matrix) desc " M=%d, N=%d", M, N) + +void +FUNCTION (test, func) (const size_t M, const size_t N) +{ + + size_t i, j; + int k = 0; + + TYPE (gsl_matrix) * m = FUNCTION (gsl_matrix, alloc) (M, N); + + gsl_test (m->data == 0, NAME (gsl_matrix) "_alloc returns valid pointer"); + gsl_test (m->size1 != M, NAME (gsl_matrix) "_alloc returns valid size1"); + gsl_test (m->size2 != N, NAME (gsl_matrix) "_alloc returns valid size2"); + gsl_test (m->tda != N, NAME (gsl_matrix) "_alloc returns valid tda"); + + for (i = 0; i < M; i++) + { + for (j = 0; j < N; j++) + { + BASE z = ZERO; + k++; + GSL_REAL (z) = (ATOMIC) k; + GSL_IMAG (z) = (ATOMIC) (k + 1000); + FUNCTION (gsl_matrix, set) (m, i, j, z); + } + } + + status = 0; + k = 0; + for (i = 0; i < M; i++) + { + for (j = 0; j < N; j++) + { + k++; + if (m->data[2 * (i * N + j)] != k || + m->data[2 * (i * N + j) + 1] != k + 1000) + status = 1; + } + } + + gsl_test (status, NAME (gsl_matrix) "_set writes into array"); + + status = 0; + k = 0; + for (i = 0; i < M; i++) + { + for (j = 0; j < N; j++) + { + BASE z = FUNCTION (gsl_matrix, get) (m, i, j); + k++; + if (GSL_REAL (z) != k || GSL_IMAG (z) != k + 1000) + status = 1; + } + } + gsl_test (status, NAME (gsl_matrix) "_get reads from array"); + + FUNCTION (gsl_matrix, free) (m); /* free whatever is in m */ + + m = FUNCTION (gsl_matrix, calloc) (M, N); + + { + int status = (FUNCTION(gsl_matrix,isnull)(m) != 1); + TEST (status, "_isnull" DESC " on calloc matrix"); + + status = (FUNCTION(gsl_matrix,ispos)(m) != 0); + TEST (status, "_ispos" DESC " on calloc matrix"); + + status = (FUNCTION(gsl_matrix,isneg)(m) != 0); + TEST (status, "_isneg" DESC " on calloc matrix"); + } + + for (i = 0; i < M; i++) + { + for (j = 0; j < N; j++) + { + BASE z = ZERO; + FUNCTION (gsl_matrix, set) (m, i, j, z); + } + } + + { + status = (FUNCTION(gsl_matrix,isnull)(m) != 1); + TEST (status, "_isnull" DESC " on null matrix") ; + + status = (FUNCTION(gsl_matrix,ispos)(m) != 0); + TEST (status, "_ispos" DESC " on null matrix") ; + + status = (FUNCTION(gsl_matrix,isneg)(m) != 0); + TEST (status, "_isneg" DESC " on null matrix") ; + } + + + k = 0; + for (i = 0; i < M; i++) + { + for (j = 0; j < N; j++) + { + BASE z = ZERO; + k++; + GSL_REAL (z) = (ATOMIC) (k % 10); + GSL_IMAG (z) = (ATOMIC) ((k + 5) % 10); + FUNCTION (gsl_matrix, set) (m, i, j, z); + } + } + + { + status = (FUNCTION(gsl_matrix,isnull)(m) != 0); + TEST (status, "_isnull" DESC " on non-negative matrix") ; + + status = (FUNCTION(gsl_matrix,ispos)(m) != 0); + TEST (status, "_ispos" DESC " on non-negative matrix") ; + + status = (FUNCTION(gsl_matrix,isneg)(m) != 0); + TEST (status, "_isneg" DESC " on non-negative matrix") ; + } + + k = 0; + for (i = 0; i < M; i++) + { + for (j = 0; j < N; j++) + { + BASE z = ZERO; + k++; + GSL_REAL (z) = (ATOMIC) ((k % 10) - 5); + GSL_IMAG (z) = (ATOMIC) (((k + 5) % 10) - 5); + FUNCTION (gsl_matrix, set) (m, i, j, z); + } + } + + { + status = (FUNCTION(gsl_matrix,isnull)(m) != 0); + TEST (status, "_isnull" DESC " on mixed matrix") ; + + status = (FUNCTION(gsl_matrix,ispos)(m) != 0); + TEST (status, "_ispos" DESC " on mixed matrix") ; + + status = (FUNCTION(gsl_matrix,isneg)(m) != 0); + TEST (status, "_isneg" DESC " on mixed matrix") ; + } + + k = 0; + for (i = 0; i < M; i++) + { + for (j = 0; j < N; j++) + { + BASE z = ZERO; + k++; + GSL_REAL (z) = -(ATOMIC) (k % 10); + GSL_IMAG (z) = -(ATOMIC) ((k + 5) % 10); + FUNCTION (gsl_matrix, set) (m, i, j, z); + } + } + + { + status = (FUNCTION(gsl_matrix,isnull)(m) != 0); + TEST (status, "_isnull" DESC " on non-positive matrix") ; + + status = (FUNCTION(gsl_matrix,ispos)(m) != 0); + TEST (status, "_ispos" DESC " on non-positive matrix") ; + + status = (FUNCTION(gsl_matrix,isneg)(m) != 0); + TEST (status, "_isneg" DESC " on non-positive matrix") ; + } + + k = 0; + for (i = 0; i < M; i++) + { + for (j = 0; j < N; j++) + { + BASE z = ZERO; + k++; + GSL_REAL (z) = (ATOMIC) (k % 10 + 1); + GSL_IMAG (z) = (ATOMIC) ((k + 5) % 10 + 1); + FUNCTION (gsl_matrix, set) (m, i, j, z); + } + } + + { + status = (FUNCTION(gsl_matrix,isnull)(m) != 0); + TEST (status, "_isnull" DESC " on positive matrix") ; + + status = (FUNCTION(gsl_matrix,ispos)(m) != 1); + TEST (status, "_ispos" DESC " on positive matrix") ; + + status = (FUNCTION(gsl_matrix,isneg)(m) != 0); + TEST (status, "_isneg" DESC " on positive matrix") ; + } + + k = 0; + for (i = 0; i < M; i++) + { + for (j = 0; j < N; j++) + { + BASE z = ZERO; + k++; + GSL_REAL (z) = -(ATOMIC) (k % 10 + 1); + GSL_IMAG (z) = -(ATOMIC) ((k + 5) % 10 + 1); + FUNCTION (gsl_matrix, set) (m, i, j, z); + } + } + + { + status = (FUNCTION(gsl_matrix,isnull)(m) != 0); + TEST (status, "_isnull" DESC " on negative matrix") ; + + status = (FUNCTION(gsl_matrix,ispos)(m) != 0); + TEST (status, "_ispos" DESC " on negative matrix") ; + + status = (FUNCTION(gsl_matrix,isneg)(m) != 1); + TEST (status, "_isneg" DESC " on negative matrix") ; + } + + FUNCTION (gsl_matrix, free) (m); /* free whatever is in m */ +} + +#if !(USES_LONGDOUBLE && !HAVE_PRINTF_LONGDOUBLE) +void +FUNCTION (test, text) (const size_t M, const size_t N) +{ + TYPE (gsl_matrix) * m = FUNCTION (gsl_matrix, alloc) (M, N); + + size_t i, j, k; + +#ifdef NO_INLINE + char filename[] = "test_static.dat"; +#else + char filename[] = "test.dat"; +#endif + + /* write file */ + { + FILE *f = fopen(filename, "w"); + + k = 0; + for (i = 0; i < M; i++) + { + for (j = 0; j < N; j++) + { + BASE z; + k++; + GSL_REAL (z) = (ATOMIC) k; + GSL_IMAG (z) = (ATOMIC) (k + 1000); + FUNCTION (gsl_matrix, set) (m, i, j, z); + } + } + + FUNCTION (gsl_matrix, fprintf) (f, m, OUT_FORMAT); + + fclose(f); + } + + /* read file */ + { + FILE *f = fopen(filename, "r"); + TYPE (gsl_matrix) * mm = FUNCTION (gsl_matrix, alloc) (M, N); + status = 0; + + FUNCTION (gsl_matrix, fscanf) (f, mm); + + k = 0; + for (i = 0; i < M; i++) + { + for (j = 0; j < N; j++) + { + k++; + if (mm->data[2 * (i * N + j)] != k + || mm->data[2 * (i * N + j) + 1] != k + 1000) + status = 1; + } + } + + gsl_test (status, NAME (gsl_matrix) "_fprintf and fscanf"); + + FUNCTION (gsl_matrix, free) (mm); + + fclose (f); + } + + FUNCTION (gsl_matrix, free) (m); +} +#endif + +void +FUNCTION (test, binary) (const size_t M, const size_t N) +{ + TYPE (gsl_matrix) * m = FUNCTION (gsl_matrix, alloc) (M, N); + + size_t i, j, k; + +#ifdef NO_INLINE + char filename[] = "test_static.dat"; +#else + char filename[] = "test.dat"; +#endif + + /* write file */ + { + FILE *f = fopen(filename, "wb"); + + k = 0; + for (i = 0; i < M; i++) + { + for (j = 0; j < N; j++) + { + BASE z = ZERO; + k++; + GSL_REAL (z) = (ATOMIC) k; + GSL_IMAG (z) = (ATOMIC) (k + 1000); + FUNCTION (gsl_matrix, set) (m, i, j, z); + } + } + + FUNCTION (gsl_matrix, fwrite) (f, m); + + fclose(f); + } + + /* read file */ + { + FILE *f = fopen(filename, "rb"); + TYPE (gsl_matrix) * mm = FUNCTION (gsl_matrix, alloc) (M, N); + status = 0; + + FUNCTION (gsl_matrix, fread) (f, mm); + + k = 0; + for (i = 0; i < M; i++) + { + for (j = 0; j < N; j++) + { + k++; + if (mm->data[2 * (i * N + j)] != k + || mm->data[2 * (i * N + j) + 1] != k + 1000) + status = 1; + } + } + + gsl_test (status, NAME (gsl_matrix) "_write and read"); + + FUNCTION (gsl_matrix, free) (mm); + + fclose (f); + } + + FUNCTION (gsl_matrix, free) (m); +} + +void +FUNCTION (test, binary_noncontiguous) (const size_t M, const size_t N) +{ + TYPE (gsl_matrix) * l = FUNCTION (gsl_matrix, calloc) (M+1, N+1); + VIEW (gsl_matrix, view) m = FUNCTION (gsl_matrix, submatrix) (l, 0, 0, M, N); + + size_t i, j, k; + +#ifdef NO_INLINE + char filename[] = "test_static.dat"; +#else + char filename[] = "test.dat"; +#endif + + /* write file */ + { + FILE *f = fopen(filename, "wb"); + + k = 0; + for (i = 0; i < M; i++) + { + for (j = 0; j < N; j++) + { + BASE z = ZERO; + k++; + GSL_REAL (z) = (ATOMIC) k; + GSL_IMAG (z) = (ATOMIC) (k + 1000); + FUNCTION (gsl_matrix, set) (&m.matrix, i, j, z); + } + } + + FUNCTION (gsl_matrix, fwrite) (f, &m.matrix); + + fclose(f); + } + + /* read file */ + { + FILE *f = fopen(filename, "rb"); + TYPE (gsl_matrix) * ll = FUNCTION (gsl_matrix, alloc) (M+1, N+1); + VIEW (gsl_matrix, view) mm = FUNCTION (gsl_matrix, submatrix) (ll, 0, 0, M, N); + status = 0; + + FUNCTION (gsl_matrix, fread) (f, &mm.matrix); + + k = 0; + for (i = 0; i < M; i++) + { + for (j = 0; j < N; j++) + { + BASE z = FUNCTION (gsl_matrix, get) (&mm.matrix, i, j); + k++; + if (GSL_REAL (z) != k || GSL_IMAG (z) != k + 1000) + status = 1; + } + } + + gsl_test (status, NAME (gsl_matrix) "_write and read (noncontiguous)"); + + FUNCTION (gsl_matrix, free) (ll); + + fclose (f); + } + + FUNCTION (gsl_matrix, free) (l); +} + +void +FUNCTION (test, trap) (const size_t M, const size_t N) +{ + TYPE (gsl_matrix) * mc = FUNCTION (gsl_matrix, alloc) (M, N); + size_t i = 0, j = 0; + + BASE z = { {(ATOMIC) 1.2, (ATOMIC) 3.4} }; + BASE z1; + + status = 0; + FUNCTION (gsl_matrix, set) (mc, i - 1, j, z); + gsl_test (!status, + NAME (gsl_matrix) "_set traps 1st index below lower bound"); + + status = 0; + FUNCTION (gsl_matrix, set) (mc, i, j - 1, z); + gsl_test (!status, + NAME (gsl_matrix) "_set traps 2nd index below lower bound"); + + status = 0; + FUNCTION (gsl_matrix, set) (mc, M + 1, 0, z); + gsl_test (!status, + NAME (gsl_matrix) "_set traps 1st index above upper bound"); + + status = 0; + FUNCTION (gsl_matrix, set) (mc, 0, N + 1, z); + gsl_test (!status, + NAME (gsl_matrix) "_set traps 2nd index above upper bound"); + + status = 0; + FUNCTION (gsl_matrix, set) (mc, M, 0, z); + gsl_test (!status, NAME (gsl_matrix) "_set traps 1st index at upper bound"); + + status = 0; + FUNCTION (gsl_matrix, set) (mc, 0, N, z); + gsl_test (!status, NAME (gsl_matrix) "_set traps 2nd index at upper bound"); + + status = 0; + z1 = FUNCTION (gsl_matrix, get) (mc, i - 1, 0); + gsl_test (!status, + NAME (gsl_matrix) "_get traps 1st index below lower bound"); + gsl_test (GSL_REAL (z1) != 0, + NAME (gsl_matrix) "_get, zero real for 1st index below l.b."); + gsl_test (GSL_IMAG (z1) != 0, + NAME (gsl_matrix) "_get, zero imag for 1st index below l.b."); + + status = 0; + z1 = FUNCTION (gsl_matrix, get) (mc, 0, j - 1); + gsl_test (!status, + NAME (gsl_matrix) "_get traps 2nd index below lower bound"); + gsl_test (GSL_REAL (z1) != 0, + NAME (gsl_matrix) "_get, zero real for 2nd index below l.b."); + gsl_test (GSL_IMAG (z1) != 0, + NAME (gsl_matrix) "_get, zero imag for 2nd index below l.b."); + + status = 0; + z1 = FUNCTION (gsl_matrix, get) (mc, M + 1, 0); + gsl_test (!status, + NAME (gsl_matrix) "_get traps 1st index above upper bound"); + gsl_test (GSL_REAL (z1) != 0, + NAME (gsl_matrix) "_get, zero real for 1st index above u.b."); + gsl_test (GSL_IMAG (z1) != 0, + NAME (gsl_matrix) "_get, zero imag for 1st index above u.b."); + + status = 0; + z1 = FUNCTION (gsl_matrix, get) (mc, 0, N + 1); + gsl_test (!status, + NAME (gsl_matrix) "_get traps 2nd index above upper bound"); + gsl_test (GSL_REAL (z1) != 0, + NAME (gsl_matrix) "_get, zero real for 2nd index above u.b."); + gsl_test (GSL_IMAG (z1) != 0, + NAME (gsl_matrix) "_get, zero imag for 2nd index above u.b."); + + status = 0; + z1 = FUNCTION (gsl_matrix, get) (mc, M, 0); + gsl_test (!status, NAME (gsl_matrix) "_get traps 1st index at upper bound"); + gsl_test (GSL_REAL (z1) != 0, + NAME (gsl_matrix) "_get, zero real for 1st index at u.b."); + gsl_test (GSL_IMAG (z1) != 0, + NAME (gsl_matrix) "_get, zero imag for 1st index at u.b."); + + status = 0; + z1 = FUNCTION (gsl_matrix, get) (mc, 0, N); + gsl_test (!status, NAME (gsl_matrix) "_get traps 2nd index at upper bound"); + gsl_test (GSL_REAL (z1) != 0, + NAME (gsl_matrix) "_get, zero real for 2nd index at u.b."); + gsl_test (GSL_IMAG (z1) != 0, + NAME (gsl_matrix) "_get, zero imag for 2nd index at u.b."); + + FUNCTION (gsl_matrix, free) (mc); +} + + +void +FUNCTION (test, ops) (const size_t P, const size_t Q) +{ + TYPE (gsl_matrix) * a = FUNCTION (gsl_matrix, alloc) (P, Q); + TYPE (gsl_matrix) * b = FUNCTION (gsl_matrix, alloc) (P, Q); + TYPE (gsl_matrix) * m = FUNCTION (gsl_matrix, alloc) (P, Q); + size_t i, j; + size_t k = 0; + + size_t status = 0; + + for (i = 0; i < P; i++) + { + for (j = 0; j < Q; j++) + { + BASE z, z1; + GSL_REAL (z) = (ATOMIC) k; + GSL_IMAG (z) = (ATOMIC) (k + 10); + GSL_REAL (z1) = (ATOMIC) (k + 5); + GSL_IMAG (z1) = (ATOMIC) (k + 20); + + FUNCTION (gsl_matrix, set) (a, i, j, z); + FUNCTION (gsl_matrix, set) (b, i, j, z1); + k++; + } + } + + { + { + int status = (FUNCTION(gsl_matrix,equal) (a,b) != 0); + gsl_test (status, NAME (gsl_matrix) "_equal matrix unequal"); + } + + FUNCTION (gsl_matrix, memcpy) (m, a); + + { + int status = (FUNCTION(gsl_matrix,equal) (a,m) != 1); + gsl_test (status, NAME (gsl_matrix) "_equal matrix equal"); + } + + FUNCTION (gsl_matrix, add) (m, b); + + k = 0; + status = 0; + + for (i = 0; i < P; i++) + { + for (j = 0; j < Q; j++) + { + BASE z = FUNCTION (gsl_matrix, get) (m, i, j); + if (GSL_REAL (z) != (ATOMIC) (2 * k + 5) || + GSL_IMAG (z) != (ATOMIC) (2 * k + 30)) + status = 1; + k++; + } + } + gsl_test (status, NAME (gsl_matrix) "_add matrix addition"); + } + + { + FUNCTION (gsl_matrix, memcpy) (m, a); + + FUNCTION (gsl_matrix, sub) (m, b); + + k = 0; + status = 0; + + for (i = 0; i < P; i++) + { + for (j = 0; j < Q; j++) + { + BASE z = FUNCTION (gsl_matrix, get) (m, i, j); + if (GSL_REAL (z) != (ATOMIC) (-5) + || GSL_IMAG (z) != (ATOMIC) (-10)) + status = 1; + k++; + } + } + gsl_test (status, NAME (gsl_matrix) "_sub matrix subtraction"); + } + + { + FUNCTION (gsl_matrix, memcpy) (m, a); + + FUNCTION (gsl_matrix, mul_elements) (m, b); + + k = 0; + status = 0; + + for (i = 0; i < P; i++) + { + for (j = 0; j < Q; j++) + { + ATOMIC real = -(ATOMIC) (25 * k + 200); + ATOMIC imag = (ATOMIC) (2 * k * k + 35 * k + 50); + BASE z = FUNCTION (gsl_matrix, get) (m, i, j); + if (fabs (GSL_REAL (z) - real) > 100 * BASE_EPSILON || + fabs (GSL_IMAG (z) - imag) > 100 * BASE_EPSILON) + { + status = 1; +#ifdef DEBUG + printf ("%d\t%d\n", i, j); + printf (OUT_FORMAT "\n", + GSL_REAL (z) + (ATOMIC) (25 * (ATOMIC) k + 200)); + printf (OUT_FORMAT "\n", + GSL_IMAG (z) - (ATOMIC) (2 * k * k + 35 * k + 50)); + printf ("\n"); +#endif + } + k++; + } + } + gsl_test (status, NAME (gsl_matrix) "_mul_elements multiplication"); + } + + + { + FUNCTION (gsl_matrix, memcpy) (m, a); + + FUNCTION (gsl_matrix, div_elements) (m, b); + + k = 0; + status = 0; + + for (i = 0; i < P; i++) + { + for (j = 0; j < Q; j++) + { + ATOMIC denom = (2 * k * k + 50 * k + 425); + ATOMIC real = (ATOMIC) (2 * k * k + 35 * k + 200) / denom; + ATOMIC imag = ((ATOMIC) (50) - (ATOMIC) (5 * k)) / denom; + BASE z = FUNCTION (gsl_matrix, get) (m, i, j); + if (fabs (GSL_REAL (z) - real) > 100 * BASE_EPSILON || + fabs (GSL_IMAG (z) - imag) > 100 * BASE_EPSILON) + { +#ifdef DEBUG + printf (OUT_FORMAT "\t", + GSL_REAL (z) - (ATOMIC) (2 * k * k + 35 * k + + 200) / denom); + printf (OUT_FORMAT "\n", + GSL_IMAG (z) - ((ATOMIC) (50) - + (ATOMIC) (5 * k)) / denom); +#endif + status = 1; + } + k++; + } + } + gsl_test (status, NAME (gsl_matrix) "_div_elements division"); + } + + { + BASE s; + GSL_SET_COMPLEX(&s, 2.0, 3.0); + + FUNCTION (gsl_matrix, memcpy) (m, a); + FUNCTION (gsl_matrix, scale) (m, s); + + k = 0; + status = 0; + + for (i = 0; i < P; i++) + { + for (j = 0; j < Q; j++) + { + ATOMIC real = (ATOMIC) (-(ATOMIC)k - 30); + ATOMIC imag = (ATOMIC) (5 * (ATOMIC)k + 20); + BASE z = FUNCTION (gsl_matrix, get) (m, i, j); + if (GSL_REAL (z) != real || GSL_IMAG (z) != imag) + { + status = 1; + } + k++; + } + } + gsl_test (status, NAME (gsl_matrix) "_scale"); + } + + { + BASE s; + GSL_SET_COMPLEX(&s, 2.0, 3.0); + + FUNCTION (gsl_matrix, memcpy) (m, a); + FUNCTION (gsl_matrix, add_constant) (m, s); + + k = 0; + status = 0; + + for (i = 0; i < P; i++) + { + for (j = 0; j < Q; j++) + { + ATOMIC real = (ATOMIC) ((ATOMIC)k + 2); + ATOMIC imag = (ATOMIC) ((ATOMIC)k + 10 + 3); + BASE z = FUNCTION (gsl_matrix, get) (m, i, j); + if (GSL_REAL (z) != real || GSL_IMAG (z) != imag) + { + status = 1; + } + k++; + } + } + gsl_test (status, NAME (gsl_matrix) "_add_constant"); + } + + { + BASE s; + GSL_SET_COMPLEX(&s, 2.0, 3.0); + + FUNCTION (gsl_matrix, memcpy) (m, a); + FUNCTION (gsl_matrix, add_diagonal) (m, s); + + k = 0; + status = 0; + + for (i = 0; i < P; i++) + { + for (j = 0; j < Q; j++) + { + ATOMIC real = (ATOMIC) ((ATOMIC)k + ((i==j) ? 2 : 0)); + ATOMIC imag = (ATOMIC) ((ATOMIC)k + 10 +((i==j) ? 3 : 0)); + BASE z = FUNCTION (gsl_matrix, get) (m, i, j); + if (GSL_REAL (z) != real || GSL_IMAG (z) != imag) + { + status = 1; + } + k++; + } + } + gsl_test (status, NAME (gsl_matrix) "_add_diagonal"); + } + + { + FUNCTION (gsl_matrix, swap) (a, b); + + k = 0; + status = 0; + + for (i = 0; i < P; i++) + { + for (j = 0; j < Q; j++) + { + BASE x = FUNCTION (gsl_matrix, get) (a, i, j); + BASE y = FUNCTION (gsl_matrix, get) (b, i, j); + if (GSL_REAL (x) != (ATOMIC) (k + 5) || GSL_IMAG (x) != (ATOMIC) (k + 20) || + GSL_REAL (y) != (ATOMIC) (k) || GSL_IMAG (y) != (ATOMIC) (k + 10)) + { + status = 1; + } + k++; + } + } + gsl_test (status, NAME (gsl_matrix) "_swap"); + } + + + + FUNCTION (gsl_matrix, free) (a); + FUNCTION (gsl_matrix, free) (b); + FUNCTION (gsl_matrix, free) (m); + +} diff --git a/gsl-2.5/matrix/test_source.c b/gsl-2.5/matrix/test_source.c new file mode 100644 index 00000000..9f5bf0c2 --- /dev/null +++ b/gsl-2.5/matrix/test_source.c @@ -0,0 +1,875 @@ +/* matrix/test_source.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +void FUNCTION (test, func) (const size_t M, const size_t N); +void FUNCTION (test, ops) (const size_t M, const size_t N); +void FUNCTION (test, trap) (const size_t M, const size_t N); +void FUNCTION (test, text) (const size_t M, const size_t N); +void FUNCTION (test, binary) (const size_t M, const size_t N); +void FUNCTION (test, binary_noncontiguous) (const size_t M, const size_t N); + +#define TEST(expr,desc) gsl_test((expr), NAME(gsl_matrix) desc " M=%d, N=%d", M, N) + +void +FUNCTION (test, func) (const size_t M, const size_t N) +{ + TYPE (gsl_vector) * v; + size_t i, j; + size_t k = 0; + + TYPE (gsl_matrix) * m = FUNCTION (gsl_matrix, alloc) (M, N); + + gsl_test (m->data == 0, NAME (gsl_matrix) "_alloc returns valid pointer"); + gsl_test (m->size1 != M, NAME (gsl_matrix) "_alloc returns valid size1"); + gsl_test (m->size2 != N, NAME (gsl_matrix) "_alloc returns valid size2"); + gsl_test (m->tda != N, NAME (gsl_matrix) "_alloc returns valid tda"); + + for (i = 0; i < M; i++) + { + for (j = 0; j < N; j++) + { + k++; + FUNCTION (gsl_matrix, set) (m, i, j, (BASE) k); + } + } + + { + status = 0; + k = 0; + for (i = 0; i < M; i++) + { + for (j = 0; j < N; j++) + { + k++; + if (m->data[i * N + j] != (BASE) k) + status = 1; + }; + }; + + gsl_test (status, NAME (gsl_matrix) "_set writes into array"); + } + + { + status = 0; + k = 0; + for (i = 0; i < M; i++) + { + for (j = 0; j < N; j++) + { + k++; + if (FUNCTION (gsl_matrix, get) (m, i, j) != (BASE) k) + status = 1; + }; + }; + gsl_test (status, NAME (gsl_matrix) "_get reads from array"); + } + + + FUNCTION (gsl_matrix, free) (m); /* free whatever is in m */ + + m = FUNCTION (gsl_matrix, calloc) (M, N); + v = FUNCTION (gsl_vector, calloc) (N); + + { + int status = (FUNCTION(gsl_matrix,isnull)(m) != 1); + TEST (status, "_isnull" DESC " on calloc matrix"); + + status = (FUNCTION(gsl_matrix,ispos)(m) != 0); + TEST (status, "_ispos" DESC " on calloc matrix"); + + status = (FUNCTION(gsl_matrix,isneg)(m) != 0); + TEST (status, "_isneg" DESC " on calloc matrix"); + + status = (FUNCTION(gsl_matrix,isnonneg)(m) != 1); + TEST (status, "_isnonneg" DESC " on calloc matrix"); + } + + + k = 0; + for (i = 0; i < M; i++) + { + for (j = 0; j < N; j++) + { + k++; + FUNCTION (gsl_matrix, set) (m, i, j, (BASE) k); + } + } + + + { + status = 0; + k = 0; + for (i = 0; i < M; i++) + { + FUNCTION (gsl_matrix, get_row) (v, m, i); + + for (j = 0; j < N; j++) + { + k++; + if (v->data[j] != (BASE) k) + status = 1; + } + } + + gsl_test (status, NAME (gsl_matrix) "_get_row extracts row"); + } + + { + BASE exp_max = FUNCTION(gsl_matrix, get) (m, 0, 0); + BASE exp_min = FUNCTION(gsl_matrix, get) (m, 0, 0); + size_t exp_imax = 0, exp_jmax = 0, exp_imin = 0, exp_jmin = 0; + + for (i = 0; i < M; i++) + { + for (j = 0; j < N; j++) + { + BASE k = FUNCTION(gsl_matrix, get) (m, i, j); + if (k > exp_max) { + exp_max = FUNCTION(gsl_matrix, get) (m, i, j); + exp_imax = i; + exp_jmax = j; + } + if (k < exp_min) { + exp_min = FUNCTION(gsl_matrix, get) (m, i, j); + exp_imin = i; + exp_jmin = j; + } + } + } + + { + BASE max = FUNCTION(gsl_matrix, max) (m) ; + + gsl_test (max != exp_max, NAME(gsl_matrix) "_max returns correct maximum value"); + } + + { + BASE min = FUNCTION(gsl_matrix, min) (m) ; + + gsl_test (min != exp_min, NAME(gsl_matrix) "_min returns correct minimum value"); + } + + { + BASE min, max; + FUNCTION(gsl_matrix, minmax) (m, &min, &max); + + gsl_test (max != exp_max, NAME(gsl_matrix) "_minmax returns correct maximum value"); + gsl_test (min != exp_min, NAME(gsl_matrix) "_minmax returns correct minimum value"); + } + + + { + size_t imax, jmax; + FUNCTION(gsl_matrix, max_index) (m, &imax, &jmax) ; + + gsl_test (imax != exp_imax, NAME(gsl_matrix) "_max_index returns correct maximum i"); + gsl_test (jmax != exp_jmax, NAME(gsl_matrix) "_max_index returns correct maximum j"); + } + + { + size_t imin, jmin; + FUNCTION(gsl_matrix, min_index) (m, &imin, &jmin) ; + + gsl_test (imin != exp_imin, NAME(gsl_matrix) "_min_index returns correct minimum i"); + gsl_test (jmin != exp_jmin, NAME(gsl_matrix) "_min_index returns correct minimum j"); + } + + { + size_t imin, jmin, imax, jmax; + + FUNCTION(gsl_matrix, minmax_index) (m, &imin, &jmin, &imax, &jmax); + + gsl_test (imax != exp_imax, NAME(gsl_matrix) "_minmax_index returns correct maximum i"); + gsl_test (jmax != exp_jmax, NAME(gsl_matrix) "_minmax_index returns correct maximum j"); + + gsl_test (imin != exp_imin, NAME(gsl_matrix) "_minmax_index returns correct minimum i"); + gsl_test (jmin != exp_jmin, NAME(gsl_matrix) "_minmax_index returns correct minimum j"); + } + +#if FP + FUNCTION(gsl_matrix,set)(m, 2, 3, GSL_NAN); + exp_min = GSL_NAN; exp_max = GSL_NAN; + exp_imin = 2; exp_jmin = 3; + exp_imax = 2; exp_jmax = 3; + + { + BASE max = FUNCTION(gsl_matrix, max) (m) ; + + gsl_test_abs (max,exp_max, 0, NAME(gsl_matrix) "_max returns correct maximum value for NaN"); + } + + { + BASE min = FUNCTION(gsl_matrix, min) (m) ; + + gsl_test_abs (min, exp_min, 0, NAME(gsl_matrix) "_min returns correct minimum value for NaN"); + } + + { + BASE min, max; + FUNCTION(gsl_matrix, minmax) (m, &min, &max); + + gsl_test_abs (max, exp_max, 0, NAME(gsl_matrix) "_minmax returns correct maximum value for NaN"); + gsl_test_abs (min, exp_min, 0, NAME(gsl_matrix) "_minmax returns correct minimum value for NaN"); + } + + + { + size_t imax, jmax; + FUNCTION(gsl_matrix, max_index) (m, &imax, &jmax) ; + + gsl_test (imax != exp_imax, NAME(gsl_matrix) "_max_index returns correct maximum i for NaN"); + gsl_test (jmax != exp_jmax, NAME(gsl_matrix) "_max_index returns correct maximum j for NaN"); + } + + { + size_t imin, jmin; + FUNCTION(gsl_matrix, min_index) (m, &imin, &jmin) ; + + gsl_test (imin != exp_imin, NAME(gsl_matrix) "_min_index returns correct minimum i for NaN"); + gsl_test (jmin != exp_jmin, NAME(gsl_matrix) "_min_index returns correct minimum j for NaN"); + } + + { + size_t imin, jmin, imax, jmax; + + FUNCTION(gsl_matrix, minmax_index) (m, &imin, &jmin, &imax, &jmax); + + gsl_test (imax != exp_imax, NAME(gsl_matrix) "_minmax_index returns correct maximum i for NaN"); + gsl_test (jmax != exp_jmax, NAME(gsl_matrix) "_minmax_index returns correct maximum j for NaN"); + + gsl_test (imin != exp_imin, NAME(gsl_matrix) "_minmax_index returns correct minimum i for NaN"); + gsl_test (jmin != exp_jmin, NAME(gsl_matrix) "_minmax_index returns correct minimum j for NaN"); + } +#endif + + + } + + + for (i = 0; i < M; i++) + { + for (j = 0; j < N; j++) + { + FUNCTION (gsl_matrix, set) (m, i, j, (ATOMIC) 0); + } + } + + { + status = (FUNCTION(gsl_matrix,isnull)(m) != 1); + TEST (status, "_isnull" DESC " on null matrix") ; + + status = (FUNCTION(gsl_matrix,ispos)(m) != 0); + TEST (status, "_ispos" DESC " on null matrix") ; + + status = (FUNCTION(gsl_matrix,isneg)(m) != 0); + TEST (status, "_isneg" DESC " on null matrix") ; + + status = (FUNCTION(gsl_matrix,isnonneg)(m) != 1); + TEST (status, "_isnonneg" DESC " on null matrix") ; + } + + + k = 0; + for (i = 0; i < M; i++) + { + for (j = 0; j < N; j++) + { + k++; + FUNCTION (gsl_matrix, set) (m, i, j, (ATOMIC) (k % 10)); + } + } + + { + status = (FUNCTION(gsl_matrix,isnull)(m) != 0); + TEST (status, "_isnull" DESC " on non-negative matrix") ; + + status = (FUNCTION(gsl_matrix,ispos)(m) != 0); + TEST (status, "_ispos" DESC " on non-negative matrix") ; + + status = (FUNCTION(gsl_matrix,isneg)(m) != 0); + TEST (status, "_isneg" DESC " on non-negative matrix") ; + + status = (FUNCTION(gsl_matrix,isnonneg)(m) != 1); + TEST (status, "_isnonneg" DESC " on non-negative matrix") ; + } + +#ifndef UNSIGNED + k = 0; + for (i = 0; i < M; i++) + { + for (j = 0; j < N; j++) + { + ATOMIC mij = ((++k) % 10) - (ATOMIC) 5; + FUNCTION (gsl_matrix, set) (m, i, j, mij); + } + } + + { + status = (FUNCTION(gsl_matrix,isnull)(m) != 0); + TEST (status, "_isnull" DESC " on mixed matrix") ; + + status = (FUNCTION(gsl_matrix,ispos)(m) != 0); + TEST (status, "_ispos" DESC " on mixed matrix") ; + + status = (FUNCTION(gsl_matrix,isneg)(m) != 0); + TEST (status, "_isneg" DESC " on mixed matrix") ; + + status = (FUNCTION(gsl_matrix,isnonneg)(m) != 0); + TEST (status, "_isnonneg" DESC " on mixed matrix") ; + } + + k = 0; + for (i = 0; i < M; i++) + { + for (j = 0; j < N; j++) + { + k++; + FUNCTION (gsl_matrix, set) (m, i, j, -(ATOMIC) (k % 10)); + } + } + + { + status = (FUNCTION(gsl_matrix,isnull)(m) != 0); + TEST (status, "_isnull" DESC " on non-positive matrix") ; + + status = (FUNCTION(gsl_matrix,ispos)(m) != 0); + TEST (status, "_ispos" DESC " on non-positive matrix") ; + + status = (FUNCTION(gsl_matrix,isneg)(m) != 0); + TEST (status, "_isneg" DESC " on non-positive matrix") ; + + status = (FUNCTION(gsl_matrix,isnonneg)(m) != 0); + TEST (status, "_isnonneg" DESC " on non-positive matrix") ; + } +#endif + + k = 0; + for (i = 0; i < M; i++) + { + for (j = 0; j < N; j++) + { + k++; + FUNCTION (gsl_matrix, set) (m, i, j, (ATOMIC) (k % 10 + 1)); + } + } + + { + status = (FUNCTION(gsl_matrix,isnull)(m) != 0); + TEST (status, "_isnull" DESC " on positive matrix") ; + + status = (FUNCTION(gsl_matrix,ispos)(m) != 1); + TEST (status, "_ispos" DESC " on positive matrix") ; + + status = (FUNCTION(gsl_matrix,isneg)(m) != 0); + TEST (status, "_isneg" DESC " on positive matrix") ; + + status = (FUNCTION(gsl_matrix,isnonneg)(m) != 1); + TEST (status, "_isnonneg" DESC " on positive matrix") ; + } + +#if (!defined(UNSIGNED) && !defined(BASE_CHAR)) + k = 0; + for (i = 0; i < M; i++) + { + for (j = 0; j < N; j++) + { + k++; + FUNCTION (gsl_matrix, set) (m, i, j, -(ATOMIC) (k % 10 + 1)); + } + } + + { + status = (FUNCTION(gsl_matrix,isnull)(m) != 0); + TEST (status, "_isnull" DESC " on negative matrix") ; + + status = (FUNCTION(gsl_matrix,ispos)(m) != 0); + TEST (status, "_ispos" DESC " on negative matrix") ; + + status = (FUNCTION(gsl_matrix,isneg)(m) != 1); + TEST (status, "_isneg" DESC " on negative matrix") ; + + status = (FUNCTION(gsl_matrix,isnonneg)(m) != 0); + TEST (status, "_isnonneg" DESC " on negative matrix") ; + } +#endif + + FUNCTION (gsl_matrix, free) (m); + FUNCTION (gsl_vector, free) (v); +} + + +void +FUNCTION (test, ops) (const size_t M, const size_t N) +{ + size_t i, j; + + TYPE (gsl_matrix) * a = FUNCTION (gsl_matrix, calloc) (M, N); + TYPE (gsl_matrix) * b = FUNCTION (gsl_matrix, calloc) (M, N); + TYPE (gsl_matrix) * m = FUNCTION (gsl_matrix, alloc) (M, N); + + for (i = 0; i < M; i++) + { + for (j = 0; j < N; j++) + { + FUNCTION (gsl_matrix, set) (a, i, j, (BASE)(3 + i + 5 * j)); + FUNCTION (gsl_matrix, set) (b, i, j, (BASE)(3 + 2 * i + 4 * j)); + } + } + + { + int status = (FUNCTION(gsl_matrix,equal) (a,b) != 0); + gsl_test (status, NAME (gsl_matrix) "_equal matrix unequal"); + } + + FUNCTION (gsl_matrix, memcpy) (m, a); + + { + int status = (FUNCTION(gsl_matrix,equal) (a,m) != 1); + gsl_test (status, NAME (gsl_matrix) "_equal matrix equal"); + } + + FUNCTION (gsl_matrix, add) (m, b); + + { + int status = 0; + + for (i = 0; i < M; i++) + { + for (j = 0; j < N; j++) + { + BASE r = FUNCTION(gsl_matrix,get) (m,i,j); + BASE x = FUNCTION(gsl_matrix,get) (a,i,j); + BASE y = FUNCTION(gsl_matrix,get) (b,i,j); + BASE z = x + y; + if (r != z) + status = 1; + } + } + gsl_test (status, NAME (gsl_matrix) "_add matrix addition"); + } + + + FUNCTION(gsl_matrix, memcpy) (m, a); + FUNCTION(gsl_matrix, sub) (m, b); + + { + int status = 0; + + for (i = 0; i < M; i++) + { + for (j = 0; j < N; j++) + { + BASE r = FUNCTION(gsl_matrix,get) (m,i,j); + BASE x = FUNCTION(gsl_matrix,get) (a,i,j); + BASE y = FUNCTION(gsl_matrix,get) (b,i,j); + BASE z = x - y; + if (r != z) + status = 1; + } + } + gsl_test (status, NAME (gsl_matrix) "_sub matrix subtraction"); + } + + FUNCTION(gsl_matrix, memcpy) (m, a); + FUNCTION(gsl_matrix, mul_elements) (m, b); + + { + int status = 0; + + for (i = 0; i < M; i++) + { + for (j = 0; j < N; j++) + { + BASE r = FUNCTION(gsl_matrix,get) (m,i,j); + BASE x = FUNCTION(gsl_matrix,get) (a,i,j); + BASE y = FUNCTION(gsl_matrix,get) (b,i,j); + BASE z = x * y; + if (r != z) + status = 1; + } + } + gsl_test (status, NAME (gsl_matrix) "_mul_elements multiplication"); + } + + FUNCTION(gsl_matrix, memcpy) (m, a); + FUNCTION(gsl_matrix, div_elements) (m, b); + + { + int status = 0; + + for (i = 0; i < M; i++) + { + for (j = 0; j < N; j++) + { + BASE r = FUNCTION(gsl_matrix,get) (m,i,j); + BASE x = FUNCTION(gsl_matrix,get) (a,i,j); + BASE y = FUNCTION(gsl_matrix,get) (b,i,j); + BASE z = x / y; + if (fabs(r - z) > 2 * GSL_FLT_EPSILON * fabs(z)) + status = 1; + } + } + gsl_test (status, NAME (gsl_matrix) "_div_elements division"); + } + + + FUNCTION(gsl_matrix, memcpy) (m, a); + FUNCTION(gsl_matrix, scale) (m, 2.0); + + { + int status = 0; + + for (i = 0; i < M; i++) + { + for (j = 0; j < N; j++) + { + BASE r = FUNCTION(gsl_matrix,get) (m,i,j); + BASE x = FUNCTION(gsl_matrix,get) (a,i,j); + if (r != (ATOMIC)(2*x)) + status = 1; + } + } + gsl_test (status, NAME (gsl_matrix) "_scale"); + } + + FUNCTION(gsl_matrix, memcpy) (m, a); + FUNCTION(gsl_matrix, add_constant) (m, 3.0); + + { + int status = 0; + + for (i = 0; i < M; i++) + { + for (j = 0; j < N; j++) + { + BASE r = FUNCTION(gsl_matrix,get) (m,i,j); + BASE x = FUNCTION(gsl_matrix,get) (a,i,j); + BASE y = x + 3.0; + if (fabs(r - y) > 2 * GSL_FLT_EPSILON * fabs(y)) + status = 1; + } + } + gsl_test (status, NAME (gsl_matrix) "_add_constant"); + } + + FUNCTION(gsl_matrix, memcpy) (m, a); + FUNCTION(gsl_matrix, add_diagonal) (m, 5.0); + + { + int status = 0; + + for (i = 0; i < M; i++) + { + for (j = 0; j < N; j++) + { + BASE r = FUNCTION(gsl_matrix,get) (m,i,j); + BASE x = FUNCTION(gsl_matrix,get) (a,i,j); + BASE y = (i == j) ? (x + (ATOMIC) 5.0) : x; + if (fabs(r - y) > 2 * GSL_FLT_EPSILON * fabs(y)) + status = 1; + } + } + gsl_test (status, NAME (gsl_matrix) "_add_diagonal"); + } + + + FUNCTION(gsl_matrix, swap) (a, b); + + { + int status = 0; + + for (i = 0; i < M; i++) + { + for (j = 0; j < N; j++) + { + BASE x = FUNCTION(gsl_matrix,get) (a,i,j); + BASE y = FUNCTION(gsl_matrix,get) (b,i,j); + if (y != (BASE)(3 + i + 5 * j) || x != (BASE)(3 + 2 * i + 4 * j)) + status = 1; + } + } + gsl_test (status, NAME (gsl_matrix) "_swap"); + } + + + FUNCTION(gsl_matrix, free) (a); + FUNCTION(gsl_matrix, free) (b); + FUNCTION(gsl_matrix, free) (m); +} + +#if !(USES_LONGDOUBLE && !HAVE_PRINTF_LONGDOUBLE) +void +FUNCTION (test, text) (const size_t M, const size_t N) +{ + TYPE (gsl_matrix) * m = FUNCTION (gsl_matrix, alloc) (M, N); + + size_t i, j, k; + +#ifdef NO_INLINE + char filename[] = "test_static.dat"; +#else + char filename[] = "test.dat"; +#endif + + { + /* write file */ + FILE *f = fopen(filename, "w"); + + k = 0; + for (i = 0; i < M; i++) + { + for (j = 0; j < N; j++) + { + k++; + FUNCTION (gsl_matrix, set) (m, i, j, (BASE) k); + } + } + + FUNCTION (gsl_matrix, fprintf) (f, m, OUT_FORMAT); + + fclose(f); + } + + /* read file */ + + { + FILE *f = fopen(filename, "r"); + TYPE (gsl_matrix) * mm = FUNCTION (gsl_matrix, alloc) (M, N); + status = 0; + + FUNCTION (gsl_matrix, fscanf) (f, mm); + + k = 0; + for (i = 0; i < M; i++) + { + for (j = 0; j < N; j++) + { + k++; + if (mm->data[i * N + j] != (BASE) k) + status = 1; + } + } + + gsl_test (status, NAME (gsl_matrix) "_fprintf and fscanf"); + + FUNCTION (gsl_matrix, free) (mm); + + fclose (f); + } + + FUNCTION (gsl_matrix, free) (m); +} +#endif + +void +FUNCTION (test, binary) (const size_t M, const size_t N) +{ + TYPE (gsl_matrix) * m = FUNCTION (gsl_matrix, calloc) (M, N); + + size_t i, j, k; + +#ifdef NO_INLINE + char filename[] = "test_static.dat"; +#else + char filename[] = "test.dat"; +#endif + + /* write file */ + { + FILE *f = fopen(filename, "wb"); + + k = 0; + for (i = 0; i < M; i++) + { + for (j = 0; j < N; j++) + { + k++; + FUNCTION (gsl_matrix, set) (m, i, j, (BASE) k); + } + } + + FUNCTION (gsl_matrix, fwrite) (f, m); + + fclose(f); + } + + /* read file */ + { + FILE *f = fopen(filename, "rb"); + TYPE (gsl_matrix) * mm = FUNCTION (gsl_matrix, alloc) (M, N); + status = 0; + + FUNCTION (gsl_matrix, fread) (f, mm); + + k = 0; + for (i = 0; i < M; i++) + { + for (j = 0; j < N; j++) + { + k++; + if (mm->data[i * N + j] != (BASE) k) + status = 1; + } + } + + gsl_test (status, NAME (gsl_matrix) "_write and read"); + + FUNCTION (gsl_matrix, free) (mm); + + fclose (f); + } + + FUNCTION (gsl_matrix, free) (m); +} + +void +FUNCTION (test, binary_noncontiguous) (const size_t M, const size_t N) +{ + TYPE (gsl_matrix) * l = FUNCTION (gsl_matrix, calloc) (M+1, N+1); + VIEW (gsl_matrix, view) m = FUNCTION (gsl_matrix, submatrix) (l, 0, 0, M, N); + + size_t i, j, k; + +#ifdef NO_INLINE + char filename[] = "test_static.dat"; +#else + char filename[] = "test.dat"; +#endif + + /* write file */ + { + FILE *f = fopen(filename, "wb"); + + k = 0; + for (i = 0; i < M; i++) + { + for (j = 0; j < N; j++) + { + k++; + FUNCTION (gsl_matrix, set) (&m.matrix, i, j, (BASE) k); + } + } + + FUNCTION (gsl_matrix, fwrite) (f, &m.matrix); + + fclose(f); + } + + /* read file */ + { + FILE *f = fopen(filename, "rb"); + TYPE (gsl_matrix) * ll = FUNCTION (gsl_matrix, alloc) (M+1, N+1); + VIEW (gsl_matrix, view) mm = FUNCTION (gsl_matrix, submatrix) (ll, 0, 0, M, N); + status = 0; + + FUNCTION (gsl_matrix, fread) (f, &mm.matrix); + + k = 0; + for (i = 0; i < M; i++) + { + for (j = 0; j < N; j++) + { + k++; + if (FUNCTION (gsl_matrix, get) (&mm.matrix, i, j) != (BASE) k) + status = 1; + } + } + + gsl_test (status, NAME (gsl_matrix) "_write and read (noncontiguous)"); + + FUNCTION (gsl_matrix, free) (ll); + + fclose (f); + } + + FUNCTION (gsl_matrix, free) (l); +} + +void +FUNCTION (test, trap) (const size_t M, const size_t N) +{ + TYPE (gsl_matrix) * m = FUNCTION (gsl_matrix, alloc) (M, N); + + size_t i = 0, j = 0; + double x; + + status = 0; + FUNCTION (gsl_matrix, set) (m, M + 1, 0, (BASE) 1.2); + gsl_test (!status, + NAME (gsl_matrix) "_set traps 1st index above upper bound"); + + status = 0; + FUNCTION (gsl_matrix, set) (m, 0, N + 1, (BASE) 1.2); + gsl_test (!status, + NAME (gsl_matrix) "_set traps 2nd index above upper bound"); + + status = 0; + FUNCTION (gsl_matrix, set) (m, M, 0, (BASE) 1.2); + gsl_test (!status, + NAME (gsl_matrix) "_set traps 1st index at upper bound"); + + status = 0; + FUNCTION (gsl_matrix, set) (m, 0, N, (BASE) 1.2); + gsl_test (!status, + NAME (gsl_matrix) "_set traps 2nd index at upper bound"); + + status = 0; + x = FUNCTION (gsl_matrix, get) (m, i - 1, 0); + gsl_test (!status, + NAME (gsl_matrix) "_get traps 1st index below lower bound"); + gsl_test (x != 0, + NAME (gsl_matrix) "_get returns zero for 1st index below lower bound"); + + status = 0; + x = FUNCTION (gsl_matrix, get) (m, 0, j - 1); + gsl_test (!status, + NAME (gsl_matrix) "_get traps 2nd index below lower bound"); + gsl_test (x != 0, + NAME (gsl_matrix) "_get returns zero for 2nd index below lower bound"); + + status = 0; + x = FUNCTION (gsl_matrix, get) (m, M + 1, 0); + gsl_test (!status, + NAME (gsl_matrix) "_get traps 1st index above upper bound"); + gsl_test (x != 0, + NAME (gsl_matrix) "_get returns zero for 1st index above upper bound"); + + status = 0; + x = FUNCTION (gsl_matrix, get) (m, 0, N + 1); + gsl_test (!status, + NAME (gsl_matrix) "_get traps 2nd index above upper bound"); + gsl_test (x != 0, + NAME (gsl_matrix) "_get returns zero for 2nd index above upper bound"); + + status = 0; + x = FUNCTION (gsl_matrix, get) (m, M, 0); + gsl_test (!status, + NAME (gsl_matrix) "_get traps 1st index at upper bound"); + gsl_test (x != 0, + NAME (gsl_matrix) "_get returns zero for 1st index at upper bound"); + + status = 0; + x = FUNCTION (gsl_matrix, get) (m, 0, N); + gsl_test (!status, + NAME (gsl_matrix) "_get traps 2nd index at upper bound"); + gsl_test (x != 0, + NAME (gsl_matrix) "_get returns zero for 2nd index at upper bound"); + + FUNCTION (gsl_matrix, free) (m); +} diff --git a/gsl-2.5/matrix/test_static b/gsl-2.5/matrix/test_static new file mode 100755 index 00000000..20429331 Binary files /dev/null and b/gsl-2.5/matrix/test_static differ diff --git a/gsl-2.5/matrix/test_static.c b/gsl-2.5/matrix/test_static.c new file mode 100644 index 00000000..2ce7098c --- /dev/null +++ b/gsl-2.5/matrix/test_static.c @@ -0,0 +1,7 @@ + +#undef HAVE_INLINE +#ifndef NO_INLINE +#define NO_INLINE +#endif +#define DESC " (static)" +#include "test.c" diff --git a/gsl-2.5/matrix/test_static.dat b/gsl-2.5/matrix/test_static.dat new file mode 100644 index 00000000..d67f602c Binary files /dev/null and b/gsl-2.5/matrix/test_static.dat differ diff --git a/gsl-2.5/matrix/test_static.log b/gsl-2.5/matrix/test_static.log new file mode 100644 index 00000000..f01aa229 --- /dev/null +++ b/gsl-2.5/matrix/test_static.log @@ -0,0 +1 @@ +Completed [1012/1012] diff --git a/gsl-2.5/matrix/test_static.trs b/gsl-2.5/matrix/test_static.trs new file mode 100644 index 00000000..3f0f396c --- /dev/null +++ b/gsl-2.5/matrix/test_static.trs @@ -0,0 +1,4 @@ +:test-result: PASS +:global-test-result: PASS +:recheck: no +:copy-in-global-log: no diff --git a/gsl-2.5/matrix/view.c b/gsl-2.5/matrix/view.c new file mode 100644 index 00000000..2ad49115 --- /dev/null +++ b/gsl-2.5/matrix/view.c @@ -0,0 +1,176 @@ +#include +#include +#include + +#include "view.h" + +#define BASE_GSL_COMPLEX_LONG +#include "templates_on.h" +#include "view_source.c" +#include "templates_off.h" +#undef BASE_GSL_COMPLEX_LONG + +#define BASE_GSL_COMPLEX +#include "templates_on.h" +#include "view_source.c" +#include "templates_off.h" +#undef BASE_GSL_COMPLEX + +#define BASE_GSL_COMPLEX_FLOAT +#include "templates_on.h" +#include "view_source.c" +#include "templates_off.h" +#undef BASE_GSL_COMPLEX_FLOAT + +#define BASE_LONG_DOUBLE +#include "templates_on.h" +#include "view_source.c" +#include "templates_off.h" +#undef BASE_LONG_DOUBLE + +#define BASE_DOUBLE +#include "templates_on.h" +#include "view_source.c" +#include "templates_off.h" +#undef BASE_DOUBLE + +#define BASE_FLOAT +#include "templates_on.h" +#include "view_source.c" +#include "templates_off.h" +#undef BASE_FLOAT + +#define BASE_ULONG +#include "templates_on.h" +#include "view_source.c" +#include "templates_off.h" +#undef BASE_ULONG + +#define BASE_LONG +#include "templates_on.h" +#include "view_source.c" +#include "templates_off.h" +#undef BASE_LONG + +#define BASE_UINT +#include "templates_on.h" +#include "view_source.c" +#include "templates_off.h" +#undef BASE_UINT + +#define BASE_INT +#include "templates_on.h" +#include "view_source.c" +#include "templates_off.h" +#undef BASE_INT + +#define BASE_USHORT +#include "templates_on.h" +#include "view_source.c" +#include "templates_off.h" +#undef BASE_USHORT + +#define BASE_SHORT +#include "templates_on.h" +#include "view_source.c" +#include "templates_off.h" +#undef BASE_SHORT + +#define BASE_UCHAR +#include "templates_on.h" +#include "view_source.c" +#include "templates_off.h" +#undef BASE_UCHAR + +#define BASE_CHAR +#include "templates_on.h" +#include "view_source.c" +#include "templates_off.h" +#undef BASE_CHAR + +#define USE_QUALIFIER +#define QUALIFIER const + +#define BASE_GSL_COMPLEX_LONG +#include "templates_on.h" +#include "view_source.c" +#include "templates_off.h" +#undef BASE_GSL_COMPLEX_LONG + +#define BASE_GSL_COMPLEX +#include "templates_on.h" +#include "view_source.c" +#include "templates_off.h" +#undef BASE_GSL_COMPLEX + +#define BASE_GSL_COMPLEX_FLOAT +#include "templates_on.h" +#include "view_source.c" +#include "templates_off.h" +#undef BASE_GSL_COMPLEX_FLOAT + +#define BASE_LONG_DOUBLE +#include "templates_on.h" +#include "view_source.c" +#include "templates_off.h" +#undef BASE_LONG_DOUBLE + +#define BASE_DOUBLE +#include "templates_on.h" +#include "view_source.c" +#include "templates_off.h" +#undef BASE_DOUBLE + +#define BASE_FLOAT +#include "templates_on.h" +#include "view_source.c" +#include "templates_off.h" +#undef BASE_FLOAT + +#define BASE_ULONG +#include "templates_on.h" +#include "view_source.c" +#include "templates_off.h" +#undef BASE_ULONG + +#define BASE_LONG +#include "templates_on.h" +#include "view_source.c" +#include "templates_off.h" +#undef BASE_LONG + +#define BASE_UINT +#include "templates_on.h" +#include "view_source.c" +#include "templates_off.h" +#undef BASE_UINT + +#define BASE_INT +#include "templates_on.h" +#include "view_source.c" +#include "templates_off.h" +#undef BASE_INT + +#define BASE_USHORT +#include "templates_on.h" +#include "view_source.c" +#include "templates_off.h" +#undef BASE_USHORT + +#define BASE_SHORT +#include "templates_on.h" +#include "view_source.c" +#include "templates_off.h" +#undef BASE_SHORT + +#define BASE_UCHAR +#include "templates_on.h" +#include "view_source.c" +#include "templates_off.h" +#undef BASE_UCHAR + +#define BASE_CHAR +#include "templates_on.h" +#include "view_source.c" +#include "templates_off.h" +#undef BASE_CHAR diff --git a/gsl-2.5/matrix/view.h b/gsl-2.5/matrix/view.h new file mode 100644 index 00000000..01df9bdb --- /dev/null +++ b/gsl-2.5/matrix/view.h @@ -0,0 +1,5 @@ +#define NULL_VECTOR {0, 0, 0, 0, 0} +#define NULL_VECTOR_VIEW {{0, 0, 0, 0, 0}} + +#define NULL_MATRIX {0, 0, 0, 0, 0, 0} +#define NULL_MATRIX_VIEW {{0, 0, 0, 0, 0, 0}} diff --git a/gsl-2.5/matrix/view.lo b/gsl-2.5/matrix/view.lo new file mode 100644 index 00000000..c68e7846 --- /dev/null +++ b/gsl-2.5/matrix/view.lo @@ -0,0 +1,12 @@ +# view.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/view.o' + +# Name of the non-PIC object +non_pic_object='view.o' + diff --git a/gsl-2.5/matrix/view_source.c b/gsl-2.5/matrix/view_source.c new file mode 100644 index 00000000..15ff6bf9 --- /dev/null +++ b/gsl-2.5/matrix/view_source.c @@ -0,0 +1,221 @@ +/* matrix/view_source.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2007 Gerard Jungman, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +QUALIFIED_VIEW (_gsl_matrix,view) +FUNCTION (gsl_matrix, view_array) (QUALIFIER ATOMIC * array, + const size_t n1, const size_t n2) +{ + QUALIFIED_VIEW (_gsl_matrix,view) view = NULL_MATRIX_VIEW; + + { + TYPE(gsl_matrix) m = NULL_MATRIX; + + m.data = (ATOMIC *)array; + m.size1 = n1; + m.size2 = n2; + m.tda = n2; + m.block = 0; + m.owner = 0; + + view.matrix = m; + return view; + } +} + +QUALIFIED_VIEW (_gsl_matrix,view) +FUNCTION(gsl_matrix, view_array_with_tda) (QUALIFIER ATOMIC * base, + const size_t n1, + const size_t n2, + const size_t tda) +{ + QUALIFIED_VIEW (_gsl_matrix,view) view = NULL_MATRIX_VIEW; + + if (n2 > tda) + { + GSL_ERROR_VAL ("matrix dimension n2 must not exceed tda", + GSL_EINVAL, view); + } + + { + TYPE(gsl_matrix) m = NULL_MATRIX; + + m.data = (ATOMIC *)base; + m.size1 = n1; + m.size2 = n2; + m.tda = tda; + m.block = 0; + m.owner = 0; + + view.matrix = m; + return view; + } +} + +QUALIFIED_VIEW (_gsl_matrix,view) +FUNCTION(gsl_matrix, view_vector) (QUALIFIED_TYPE(gsl_vector) * v, + const size_t n1, + const size_t n2) +{ + QUALIFIED_VIEW (_gsl_matrix,view) view = NULL_MATRIX_VIEW; + + if (v->stride != 1) + { + GSL_ERROR_VAL ("vector must have unit stride", + GSL_EINVAL, view); + } + else if (n1 * n2 > v->size) + { + GSL_ERROR_VAL ("matrix size exceeds size of original", + GSL_EINVAL, view); + } + + { + TYPE(gsl_matrix) m = NULL_MATRIX; + + m.data = v->data; + m.size1 = n1; + m.size2 = n2; + m.tda = n2; + m.block = v->block; + m.owner = 0; + + view.matrix = m; + return view; + } +} + + +QUALIFIED_VIEW (_gsl_matrix,view) +FUNCTION(gsl_matrix, view_vector_with_tda) (QUALIFIED_TYPE(gsl_vector) * v, + const size_t n1, + const size_t n2, + const size_t tda) +{ + QUALIFIED_VIEW (_gsl_matrix,view) view = NULL_MATRIX_VIEW; + + if (v->stride != 1) + { + GSL_ERROR_VAL ("vector must have unit stride", + GSL_EINVAL, view); + } + else if (n2 > tda) + { + GSL_ERROR_VAL ("matrix dimension n2 must not exceed tda", + GSL_EINVAL, view); + } + else if (n1 * tda > v->size) + { + GSL_ERROR_VAL ("matrix size exceeds size of original", + GSL_EINVAL, view); + } + + { + TYPE(gsl_matrix) m = NULL_MATRIX; + + m.data = v->data; + m.size1 = n1; + m.size2 = n2; + m.tda = tda; + m.block = v->block; + m.owner = 0; + + view.matrix = m; + return view; + } +} + +#ifdef JUNK +int +FUNCTION (gsl_matrix, view_from_matrix) (TYPE(gsl_matrix) * m, + TYPE(gsl_matrix) * mm, + const size_t k1, + const size_t k2, + const size_t n1, + const size_t n2) +{ + if (k1 + n1 > mm->size1) + { + GSL_ERROR_VAL ("submatrix dimension 1 exceeds size of original", + GSL_EINVAL, 0); + } + else if (k2 + n2 > mm->size2) + { + GSL_ERROR_VAL ("submatrix dimension 2 exceeds size of original", + GSL_EINVAL, 0); + } + + m->data = mm->data + k1 * mm->tda + k2 ; + m->size1 = n1; + m->size2 = n2; + m->tda = mm->tda; + m->block = mm->block; + m->owner = 0; + + return GSL_SUCCESS; +} + +int +FUNCTION (gsl_vector, view_row_from_matrix) (TYPE(gsl_vector) * v, + TYPE(gsl_matrix) * m, + const size_t i) +{ + const size_t column_length = m->size1; + + if (i >= column_length) + { + GSL_ERROR ("row index is out of range", GSL_EINVAL); + } + + if (v->block != 0) + { + GSL_ERROR ("vector already has memory allocated to it", GSL_ENOMEM); + } + + v->data = m->data + MULTIPLICITY * i * m->tda ; + v->size = m->size2; + v->stride = 1; + + return GSL_SUCCESS; +} + +int +FUNCTION (gsl_vector, view_col_from_matrix) (TYPE(gsl_vector) * v, + TYPE(gsl_matrix) * m, + const size_t j) +{ + const size_t row_length = m->size2; + + if (j >= row_length) + { + GSL_ERROR_VAL ("column index is out of range", GSL_EINVAL, 0); + } + + if (v->block != 0) + { + GSL_ERROR ("vector already has memory allocated to it", GSL_ENOMEM); + } + + v->data = m->data + MULTIPLICITY * j ; + v->size = m->size1; + v->stride = m->tda; + + return GSL_SUCCESS; +} +#endif /* JUNK */ + diff --git a/gsl-2.5/mdate-sh b/gsl-2.5/mdate-sh new file mode 100644 index 00000000..33362d47 --- /dev/null +++ b/gsl-2.5/mdate-sh @@ -0,0 +1,91 @@ +#!/bin/sh +# mdate-sh - get modification time of a file and pretty-print it +# Copyright (C) 1995 Software Foundation, Inc. +# Written by Ulrich Drepper , June 1995 +# +# 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, 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. + +# Prevent date giving response in another language. +LANG=C +export LANG +LC_ALL=C +export LC_ALL +LC_TIME=C +export LC_TIME + +# Get the extended ls output of the file. +if ls -L /dev/null 1>/dev/null 2>&1; then + set - `ls -L -l $1` +else + set - `ls -l $1` +fi +# The month is at least the fourth argument. +# (3 shifts here, the next inside the loop) +shift +shift +shift + +# Find the month. Next argument is day, followed by the year or time. +month= +until test $month +do + shift + case $1 in + Jan) month=January; nummonth=1;; + Feb) month=February; nummonth=2;; + Mar) month=March; nummonth=3;; + Apr) month=April; nummonth=4;; + May) month=May; nummonth=5;; + Jun) month=June; nummonth=6;; + Jul) month=July; nummonth=7;; + Aug) month=August; nummonth=8;; + Sep) month=September; nummonth=9;; + Oct) month=October; nummonth=10;; + Nov) month=November; nummonth=11;; + Dec) month=December; nummonth=12;; + esac +done + +day=$2 + +# Here we have to deal with the problem that the ls output gives either +# the time of day or the year. +case $3 in + *:*) set `date`; eval year=\$$# + case $2 in + Jan) nummonthtod=1;; + Feb) nummonthtod=2;; + Mar) nummonthtod=3;; + Apr) nummonthtod=4;; + May) nummonthtod=5;; + Jun) nummonthtod=6;; + Jul) nummonthtod=7;; + Aug) nummonthtod=8;; + Sep) nummonthtod=9;; + Oct) nummonthtod=10;; + Nov) nummonthtod=11;; + Dec) nummonthtod=12;; + esac + # For the first six month of the year the time notation can also + # be used for files modified in the last year. + if (expr $nummonth \> $nummonthtod) > /dev/null; + then + year=`expr $year - 1` + fi;; + *) year=$3;; +esac + +# The result. +echo $day $month $year diff --git a/gsl-2.5/min/.deps/bracketing.Plo b/gsl-2.5/min/.deps/bracketing.Plo new file mode 100644 index 00000000..78e9ed51 --- /dev/null +++ b/gsl-2.5/min/.deps/bracketing.Plo @@ -0,0 +1,174 @@ +bracketing.lo: bracketing.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_math.h /usr/include/math.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_min.h /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/byteswap.h \ + /usr/include/bits/byteswap-16.h /usr/include/sys/types.h \ + /usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib-float.h min.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_min.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +min.h: diff --git a/gsl-2.5/min/.deps/brent.Plo b/gsl-2.5/min/.deps/brent.Plo new file mode 100644 index 00000000..f2cabb0e --- /dev/null +++ b/gsl-2.5/min/.deps/brent.Plo @@ -0,0 +1,174 @@ +brent.lo: brent.c /usr/include/stdc-predef.h ../config.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/byteswap.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/bits/byteswap-16.h /usr/include/sys/types.h \ + /usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib-float.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h ../gsl/gsl_math.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h ../gsl/gsl_precision.h ../gsl/gsl_types.h \ + ../gsl/gsl_nan.h ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h \ + ../gsl/gsl_errno.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_min.h min.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_min.h: + +min.h: diff --git a/gsl-2.5/min/.deps/convergence.Plo b/gsl-2.5/min/.deps/convergence.Plo new file mode 100644 index 00000000..89197585 --- /dev/null +++ b/gsl-2.5/min/.deps/convergence.Plo @@ -0,0 +1,172 @@ +convergence.lo: convergence.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_math.h /usr/include/math.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_min.h /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/byteswap.h \ + /usr/include/bits/byteswap-16.h /usr/include/sys/types.h \ + /usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib-float.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_min.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: diff --git a/gsl-2.5/min/.deps/fsolver.Plo b/gsl-2.5/min/.deps/fsolver.Plo new file mode 100644 index 00000000..2783304f --- /dev/null +++ b/gsl-2.5/min/.deps/fsolver.Plo @@ -0,0 +1,185 @@ +fsolver.lo: fsolver.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/string.h \ + /usr/include/xlocale.h /usr/include/bits/string.h \ + /usr/include/bits/string2.h ../gsl/gsl_errno.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_types.h ../gsl/gsl_min.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_nan.h ../gsl/gsl_pow_int.h \ + ../gsl/gsl_minmax.h min.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string.h: + +/usr/include/bits/string2.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_min.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +min.h: diff --git a/gsl-2.5/min/.deps/golden.Plo b/gsl-2.5/min/.deps/golden.Plo new file mode 100644 index 00000000..cccb8f42 --- /dev/null +++ b/gsl-2.5/min/.deps/golden.Plo @@ -0,0 +1,174 @@ +golden.lo: golden.c /usr/include/stdc-predef.h ../config.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/byteswap.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/bits/byteswap-16.h /usr/include/sys/types.h \ + /usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib-float.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h ../gsl/gsl_math.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h ../gsl/gsl_precision.h ../gsl/gsl_types.h \ + ../gsl/gsl_nan.h ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h \ + ../gsl/gsl_errno.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_min.h min.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_min.h: + +min.h: diff --git a/gsl-2.5/min/.deps/quad_golden.Plo b/gsl-2.5/min/.deps/quad_golden.Plo new file mode 100644 index 00000000..66632584 --- /dev/null +++ b/gsl-2.5/min/.deps/quad_golden.Plo @@ -0,0 +1,174 @@ +quad_golden.lo: quad_golden.c /usr/include/stdc-predef.h ../config.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/byteswap.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/bits/byteswap-16.h /usr/include/sys/types.h \ + /usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib-float.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h ../gsl/gsl_math.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h ../gsl/gsl_precision.h ../gsl/gsl_types.h \ + ../gsl/gsl_nan.h ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h \ + ../gsl/gsl_errno.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_min.h min.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_min.h: + +min.h: diff --git a/gsl-2.5/min/.deps/test.Po b/gsl-2.5/min/.deps/test.Po new file mode 100644 index 00000000..487591b4 --- /dev/null +++ b/gsl-2.5/min/.deps/test.Po @@ -0,0 +1,181 @@ +test.o: test.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_min.h \ + ../gsl/gsl_errno.h /usr/include/stdio.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_test.h ../gsl/gsl_ieee_utils.h test.h min.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_min.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_test.h: + +../gsl/gsl_ieee_utils.h: + +test.h: + +min.h: diff --git a/gsl-2.5/min/.deps/test_funcs.Po b/gsl-2.5/min/.deps/test_funcs.Po new file mode 100644 index 00000000..ae3aa9ad --- /dev/null +++ b/gsl-2.5/min/.deps/test_funcs.Po @@ -0,0 +1,136 @@ +test_funcs.o: test_funcs.c /usr/include/stdc-predef.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_min.h \ + /usr/include/stdlib.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h test.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_min.h: + +/usr/include/stdlib.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +test.h: diff --git a/gsl-2.5/min/.libs/libgslmin.la b/gsl-2.5/min/.libs/libgslmin.la new file mode 120000 index 00000000..8dd3bb8e --- /dev/null +++ b/gsl-2.5/min/.libs/libgslmin.la @@ -0,0 +1 @@ +../libgslmin.la \ No newline at end of file diff --git a/gsl-2.5/min/ChangeLog b/gsl-2.5/min/ChangeLog new file mode 100644 index 00000000..013fcf9a --- /dev/null +++ b/gsl-2.5/min/ChangeLog @@ -0,0 +1,98 @@ +2009-07-11 Brian Gough + + * quad_golden.c: added new safeguarded step-length algorithm from + James Howse + +2009-07-09 Brian Gough + + * fsolver.c (gsl_min_fminimizer_free): handle NULL argument in free + +2008-07-03 Brian Gough + + * Makefile.am (INCLUDES): use top_srcdir instead of top_builddir + +2008-01-09 Brian Gough + + * brent.c (brent_iterate): remove spurious early return + +2007-07-30 Brian Gough + + * min.h (SAFE_FUNC_CALL): use gsl_finite instead of finite + +2005-09-09 Brian Gough + + * min.h: improved error message, function can be discontinuous + despite what error message said. + +2005-04-28 Brian Gough + + * brent.c (brent_iterate): fixed error in ordering of tests for + updates so that it agrees with Brent's book. + +2004-04-13 Brian Gough + + * brent.c (brent_iterate): corrected condition for setting to + +/-tolerance. + +Sun Apr 7 15:22:11 2002 Brian Gough + + * fsolver.c (gsl_min_fminimizer_x_minimum): new function, + obsoletes gsl_min_fminimizer_minimum. + (gsl_min_fminimizer_f_minimum): new function for accessing + function values + (gsl_min_fminimizer_f_lower): new function for accessing function + values + (gsl_min_fminimizer_f_upper): new function for accessing function + values + + * renamed minimum to x_minimum throughout + +Wed Oct 3 11:35:45 2001 Brian Gough + + * test.c (main): added an extra test + +Sun Jul 15 17:53:26 2001 Brian Gough + + * eliminated interval type, changed order of arguments to set + functions + +Tue Apr 17 22:13:58 2001 Brian Gough + + * fsolver.c (gsl_min_fminimizer_alloc): removed unnecessary status + variable + +Mon Apr 2 14:54:33 2001 Brian Gough + + * brent.c (brent_init): fixed incorrect value for golden ratio + (brent_iterate): fixed incorrect value for golden ratio + + * golden.c (goldensection_iterate): fixed incorrect value for + golden ratio + + * bracketing.c (gsl_min_find_bracket): fixed incorrect value for + golden ratio + +Sun Feb 18 11:43:04 2001 Brian Gough + + * fsolver.c: changed so that the solver _alloc function no longer + calls _set, the user must do that separately. + +Fri May 5 16:09:11 2000 Brian Gough + + * test.c (test_bracket): fixed warning about "control reaches end + of non-void function" by changing return type to void + +Tue Feb 15 16:32:55 2000 Brian Gough + + * bracketing.c (gsl_min_find_bracket): changed counter nb_eval + from type int to type size_t in order to avoid comparison between + signed and unsigned, (nb_eval < eval_max). + +Mon Feb 14 13:07:43 2000 Brian Gough + + * made all internal functions static + +Wed Oct 13 16:08:03 1999 Brian Gough + + * rewritten to allow initial values to be specified + diff --git a/gsl-2.5/min/Makefile b/gsl-2.5/min/Makefile new file mode 100644 index 00000000..6576d8a8 --- /dev/null +++ b/gsl-2.5/min/Makefile @@ -0,0 +1,1033 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# min/Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + + + + +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/gsl +pkgincludedir = $(includedir)/gsl +pkglibdir = $(libdir)/gsl +pkglibexecdir = $(libexecdir)/gsl +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = x86_64-unknown-linux-gnu +host_triplet = x86_64-unknown-linux-gnu +check_PROGRAMS = test$(EXEEXT) +subdir = min +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp \ + $(noinst_HEADERS) $(pkginclude_HEADERS) \ + $(top_srcdir)/test-driver ChangeLog +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +libgslmin_la_LIBADD = +am_libgslmin_la_OBJECTS = fsolver.lo golden.lo brent.lo convergence.lo \ + bracketing.lo quad_golden.lo +libgslmin_la_OBJECTS = $(am_libgslmin_la_OBJECTS) +AM_V_lt = $(am__v_lt_$(V)) +am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) +am__v_lt_0 = --silent +am__v_lt_1 = +am_test_OBJECTS = test.$(OBJEXT) test_funcs.$(OBJEXT) +test_OBJECTS = $(am_test_OBJECTS) +test_DEPENDENCIES = libgslmin.la ../ieee-utils/libgslieeeutils.la \ + ../err/libgslerr.la ../test/libgsltest.la ../utils/libutils.la \ + ../sys/libgslsys.la +AM_V_P = $(am__v_P_$(V)) +am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY)) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_$(V)) +am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_$(V)) +am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I. -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_$(V)) +am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_$(V)) +am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libgslmin_la_SOURCES) $(test_SOURCES) +DIST_SOURCES = $(libgslmin_la_SOURCES) $(test_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(pkgincludedir)" +HEADERS = $(noinst_HEADERS) $(pkginclude_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = .test +LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing aclocal-1.13 +AMTAR = $${TAR-tar} +AM_DEFAULT_VERBOSITY = 1 +AR = ar +AS = as +AUTOCONF = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing autoconf +AUTOHEADER = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing autoheader +AUTOMAKE = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing automake-1.13 +AWK = gawk +CC = gcc +CCDEPMODE = depmode=gcc3 +CFLAGS = -g -O2 +CPP = gcc -E +CPPFLAGS = +CYGPATH_W = echo +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +DLLTOOL = false +DSYMUTIL = +DUMPBIN = +ECHO_C = +ECHO_N = -n +ECHO_T = +EGREP = /usr/bin/grep -E +EXEEXT = +FGREP = /usr/bin/grep -F +GREP = /usr/bin/grep +GSLCBLAS_LDFLAGS = +GSL_CFLAGS = -I${prefix}/include +GSL_LDFLAGS = +GSL_LIBADD = +GSL_LIBM = -lm +GSL_LIBS = -L${exec_prefix}/lib -lgsl +GSL_LT_CBLAS_VERSION = 0:0:0 +GSL_LT_VERSION = 24:0:1 +GSL_MAJOR_VERSION = 2 +GSL_MINOR_VERSION = 5 +HAVE_AIX_IEEE_INTERFACE = +HAVE_DARWIN86_IEEE_INTERFACE = +HAVE_DARWIN_IEEE_INTERFACE = +HAVE_FREEBSD_IEEE_INTERFACE = +HAVE_GNUM68K_IEEE_INTERFACE = +HAVE_GNUPPC_IEEE_INTERFACE = +HAVE_GNUSPARC_IEEE_INTERFACE = +HAVE_GNUX86_IEEE_INTERFACE = +HAVE_HPUX11_IEEE_INTERFACE = +HAVE_HPUX_IEEE_INTERFACE = +HAVE_IRIX_IEEE_INTERFACE = +HAVE_NETBSD_IEEE_INTERFACE = +HAVE_OPENBSD_IEEE_INTERFACE = +HAVE_OS2EMX_IEEE_INTERFACE = +HAVE_SOLARIS_IEEE_INTERFACE = +HAVE_SUNOS4_IEEE_INTERFACE = +HAVE_TRU64_IEEE_INTERFACE = +INSTALL = /usr/bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = $(install_sh) -c -s +LD = /usr/bin/ld -m elf_x86_64 +LDFLAGS = +LIBM = -lm +LIBOBJS = +LIBS = -lm +LIBTOOL = $(SHELL) $(top_builddir)/libtool +LIPO = +LN_S = ln -s +LTLIBOBJS = +MAINT = # +MAKEINFO = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing makeinfo +MANIFEST_TOOL = : +MKDIR_P = /usr/bin/mkdir -p +NM = /usr/bin/nm -B +NMEDIT = +OBJDUMP = objdump +OBJEXT = o +OTOOL = +OTOOL64 = +PACKAGE = gsl +PACKAGE_BUGREPORT = +PACKAGE_NAME = gsl +PACKAGE_STRING = gsl 2.5 +PACKAGE_TARNAME = gsl +PACKAGE_URL = +PACKAGE_VERSION = 2.5 +PATH_SEPARATOR = : +RANLIB = ranlib +SED = /usr/bin/sed +SET_MAKE = +SHELL = /bin/sh +STRIP = strip +VERSION = 2.5 +abs_builddir = /home/groups/kipac/chto/package/gsl/gsl-2.5/min +abs_srcdir = /home/groups/kipac/chto/package/gsl/gsl-2.5/min +abs_top_builddir = /home/groups/kipac/chto/package/gsl/gsl-2.5 +abs_top_srcdir = /home/groups/kipac/chto/package/gsl/gsl-2.5 +ac_ct_AR = ar +ac_ct_CC = gcc +ac_ct_DUMPBIN = +am__include = include +am__leading_dot = . +am__quote = +am__tar = $${TAR-tar} chof - "$$tardir" +am__untar = $${TAR-tar} xf - +bindir = ${exec_prefix}/bin +build = x86_64-unknown-linux-gnu +build_alias = +build_cpu = x86_64 +build_os = linux-gnu +build_vendor = unknown +builddir = . +datadir = ${datarootdir} +datarootdir = ${prefix}/share +docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} +dvidir = ${docdir} +exec_prefix = ${prefix} +host = x86_64-unknown-linux-gnu +host_alias = +host_cpu = x86_64 +host_os = linux-gnu +host_vendor = unknown +htmldir = ${docdir} +includedir = ${prefix}/include +infodir = ${datarootdir}/info +install_sh = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/install-sh +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +localedir = ${datarootdir}/locale +localstatedir = ${prefix}/var +mandir = ${datarootdir}/man +mkdir_p = $(MKDIR_P) +oldincludedir = /usr/include +pdfdir = ${docdir} +prefix = /home/groups/kipac/chto/package/gsl/gsl_lib +program_transform_name = s,x,x, +psdir = ${docdir} +sbindir = ${exec_prefix}/sbin +sharedstatedir = ${prefix}/com +srcdir = . +sysconfdir = ${prefix}/etc +target_alias = +top_build_prefix = ../ +top_builddir = .. +top_srcdir = .. +noinst_LTLIBRARIES = libgslmin.la +pkginclude_HEADERS = gsl_min.h +noinst_HEADERS = min.h +AM_CPPFLAGS = -I$(top_srcdir) +libgslmin_la_SOURCES = fsolver.c golden.c brent.c convergence.c bracketing.c quad_golden.c +TESTS = $(check_PROGRAMS) +test_SOURCES = test.c test_funcs.c test.h +test_LDADD = libgslmin.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../utils/libutils.la ../sys/libgslsys.la +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu min/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu min/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: # $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): # $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libgslmin.la: $(libgslmin_la_OBJECTS) $(libgslmin_la_DEPENDENCIES) $(EXTRA_libgslmin_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(libgslmin_la_OBJECTS) $(libgslmin_la_LIBADD) $(LIBS) + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) $(EXTRA_test_DEPENDENCIES) + @rm -f test$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_OBJECTS) $(test_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +include ./$(DEPDIR)/bracketing.Plo +include ./$(DEPDIR)/brent.Plo +include ./$(DEPDIR)/convergence.Plo +include ./$(DEPDIR)/fsolver.Plo +include ./$(DEPDIR)/golden.Plo +include ./$(DEPDIR)/quad_golden.Plo +include ./$(DEPDIR)/test.Po +include ./$(DEPDIR)/test_funcs.Po + +.c.o: + $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# $(AM_V_CC)source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(COMPILE) -c $< + +.c.obj: + $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# $(AM_V_CC)source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: + $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +# $(AM_V_CC)source='$<' object='$@' libtool=yes \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-pkgincludeHEADERS: $(pkginclude_HEADERS) + @$(NORMAL_INSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \ + done + +uninstall-pkgincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + else \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_PROGRAMS) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +test.log: test$(EXEEXT) + @p='test$(EXEEXT)'; \ + b='test'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +#.test$(EXEEXT).log: +# @p='$<'; \ +# $(am__set_b); \ +# $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +# --log-file $$b.log --trs-file $$b.trs \ +# $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +# "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-am +all-am: Makefile $(LTLIBRARIES) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(pkgincludedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-pkgincludeHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-pkgincludeHEADERS + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES cscopelist-am ctags ctags-am distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-pkgincludeHEADERS \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + recheck tags tags-am uninstall uninstall-am \ + uninstall-pkgincludeHEADERS + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gsl-2.5/min/Makefile.am b/gsl-2.5/min/Makefile.am new file mode 100644 index 00000000..ce46f111 --- /dev/null +++ b/gsl-2.5/min/Makefile.am @@ -0,0 +1,16 @@ +noinst_LTLIBRARIES = libgslmin.la + +pkginclude_HEADERS = gsl_min.h + +noinst_HEADERS = min.h + +AM_CPPFLAGS = -I$(top_srcdir) + +libgslmin_la_SOURCES = fsolver.c golden.c brent.c convergence.c bracketing.c quad_golden.c + +check_PROGRAMS = test + +TESTS = $(check_PROGRAMS) + +test_SOURCES = test.c test_funcs.c test.h +test_LDADD = libgslmin.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../utils/libutils.la ../sys/libgslsys.la diff --git a/gsl-2.5/min/Makefile.in b/gsl-2.5/min/Makefile.in new file mode 100644 index 00000000..be94261d --- /dev/null +++ b/gsl-2.5/min/Makefile.in @@ -0,0 +1,1033 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + + +VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +check_PROGRAMS = test$(EXEEXT) +subdir = min +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp \ + $(noinst_HEADERS) $(pkginclude_HEADERS) \ + $(top_srcdir)/test-driver ChangeLog +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +libgslmin_la_LIBADD = +am_libgslmin_la_OBJECTS = fsolver.lo golden.lo brent.lo convergence.lo \ + bracketing.lo quad_golden.lo +libgslmin_la_OBJECTS = $(am_libgslmin_la_OBJECTS) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +am_test_OBJECTS = test.$(OBJEXT) test_funcs.$(OBJEXT) +test_OBJECTS = $(am_test_OBJECTS) +test_DEPENDENCIES = libgslmin.la ../ieee-utils/libgslieeeutils.la \ + ../err/libgslerr.la ../test/libgsltest.la ../utils/libutils.la \ + ../sys/libgslsys.la +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libgslmin_la_SOURCES) $(test_SOURCES) +DIST_SOURCES = $(libgslmin_la_SOURCES) $(test_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(pkgincludedir)" +HEADERS = $(noinst_HEADERS) $(pkginclude_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = @EXEEXT@ .test +LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +GSLCBLAS_LDFLAGS = @GSLCBLAS_LDFLAGS@ +GSL_CFLAGS = @GSL_CFLAGS@ +GSL_LDFLAGS = @GSL_LDFLAGS@ +GSL_LIBADD = @GSL_LIBADD@ +GSL_LIBM = @GSL_LIBM@ +GSL_LIBS = @GSL_LIBS@ +GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ +GSL_LT_VERSION = @GSL_LT_VERSION@ +GSL_MAJOR_VERSION = @GSL_MAJOR_VERSION@ +GSL_MINOR_VERSION = @GSL_MINOR_VERSION@ +HAVE_AIX_IEEE_INTERFACE = @HAVE_AIX_IEEE_INTERFACE@ +HAVE_DARWIN86_IEEE_INTERFACE = @HAVE_DARWIN86_IEEE_INTERFACE@ +HAVE_DARWIN_IEEE_INTERFACE = @HAVE_DARWIN_IEEE_INTERFACE@ +HAVE_FREEBSD_IEEE_INTERFACE = @HAVE_FREEBSD_IEEE_INTERFACE@ +HAVE_GNUM68K_IEEE_INTERFACE = @HAVE_GNUM68K_IEEE_INTERFACE@ +HAVE_GNUPPC_IEEE_INTERFACE = @HAVE_GNUPPC_IEEE_INTERFACE@ +HAVE_GNUSPARC_IEEE_INTERFACE = @HAVE_GNUSPARC_IEEE_INTERFACE@ +HAVE_GNUX86_IEEE_INTERFACE = @HAVE_GNUX86_IEEE_INTERFACE@ +HAVE_HPUX11_IEEE_INTERFACE = @HAVE_HPUX11_IEEE_INTERFACE@ +HAVE_HPUX_IEEE_INTERFACE = @HAVE_HPUX_IEEE_INTERFACE@ +HAVE_IRIX_IEEE_INTERFACE = @HAVE_IRIX_IEEE_INTERFACE@ +HAVE_NETBSD_IEEE_INTERFACE = @HAVE_NETBSD_IEEE_INTERFACE@ +HAVE_OPENBSD_IEEE_INTERFACE = @HAVE_OPENBSD_IEEE_INTERFACE@ +HAVE_OS2EMX_IEEE_INTERFACE = @HAVE_OS2EMX_IEEE_INTERFACE@ +HAVE_SOLARIS_IEEE_INTERFACE = @HAVE_SOLARIS_IEEE_INTERFACE@ +HAVE_SUNOS4_IEEE_INTERFACE = @HAVE_SUNOS4_IEEE_INTERFACE@ +HAVE_TRU64_IEEE_INTERFACE = @HAVE_TRU64_IEEE_INTERFACE@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBM = @LIBM@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +noinst_LTLIBRARIES = libgslmin.la +pkginclude_HEADERS = gsl_min.h +noinst_HEADERS = min.h +AM_CPPFLAGS = -I$(top_srcdir) +libgslmin_la_SOURCES = fsolver.c golden.c brent.c convergence.c bracketing.c quad_golden.c +TESTS = $(check_PROGRAMS) +test_SOURCES = test.c test_funcs.c test.h +test_LDADD = libgslmin.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../utils/libutils.la ../sys/libgslsys.la +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu min/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu min/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libgslmin.la: $(libgslmin_la_OBJECTS) $(libgslmin_la_DEPENDENCIES) $(EXTRA_libgslmin_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(libgslmin_la_OBJECTS) $(libgslmin_la_LIBADD) $(LIBS) + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) $(EXTRA_test_DEPENDENCIES) + @rm -f test$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_OBJECTS) $(test_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bracketing.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/brent.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/convergence.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fsolver.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/golden.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/quad_golden.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_funcs.Po@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-pkgincludeHEADERS: $(pkginclude_HEADERS) + @$(NORMAL_INSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \ + done + +uninstall-pkgincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + else \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_PROGRAMS) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +test.log: test$(EXEEXT) + @p='test$(EXEEXT)'; \ + b='test'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +@am__EXEEXT_TRUE@.test$(EXEEXT).log: +@am__EXEEXT_TRUE@ @p='$<'; \ +@am__EXEEXT_TRUE@ $(am__set_b); \ +@am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +@am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ +@am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +@am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-am +all-am: Makefile $(LTLIBRARIES) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(pkgincludedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-pkgincludeHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-pkgincludeHEADERS + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES cscopelist-am ctags ctags-am distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-pkgincludeHEADERS \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + recheck tags tags-am uninstall uninstall-am \ + uninstall-pkgincludeHEADERS + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gsl-2.5/min/bracketing.c b/gsl-2.5/min/bracketing.c new file mode 100644 index 00000000..bf38a2b6 --- /dev/null +++ b/gsl-2.5/min/bracketing.c @@ -0,0 +1,125 @@ +/* min/bracketing.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Fabrice Rossi + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* bracketing.c -- find an initial bracketing interval for a function to minimize */ + +#include +#include +#include +#include +#include + +#include "min.h" + +int +gsl_min_find_bracket(gsl_function *f,double *x_minimum,double * f_minimum, + double * x_lower, double * f_lower, + double * x_upper, double * f_upper, + size_t eval_max) +{ + /* The three following variables must be declared volatile to avoid storage + in extended precision registers available on some architecture. The code + relies on the ability to compare double values. As the values will be + store in regular memory, the extended precision will then be lost and + values that are different in extended precision might have equal + representation in double precision. This behavior might break the + algorithm. + */ + volatile double f_left = *f_lower; + volatile double f_right = *f_upper; + volatile double f_center; + double x_left = *x_lower; + double x_right= *x_upper; + double x_center; + const double golden = 0.3819660; /* golden = (3 - sqrt(5))/2 */ + size_t nb_eval = 0; + + + if (f_right >= f_left) + { + x_center = (x_right - x_left) * golden + x_left; + nb_eval++; + SAFE_FUNC_CALL (f, x_center, &f_center); + } + else + { + x_center = x_right ; + f_center = f_right ; + x_right = (x_center - x_left) / golden + x_left; + nb_eval++; + SAFE_FUNC_CALL (f, x_right, &f_right); + } + + do + { + if (f_center < f_left ) + { + if (f_center < f_right) + { + *x_lower = x_left; + *x_upper = x_right; + *x_minimum = x_center; + *f_lower = f_left; + *f_upper = f_right; + *f_minimum = f_center; +/* gsl_ieee_printf_double (&f_left); + printf(" "); + gsl_ieee_printf_double (&f_center); + printf("\n");*/ + return GSL_SUCCESS; + } + else if (f_center > f_right) + { + x_left = x_center; + f_left = f_center; + x_center = x_right; + f_center = f_right; + x_right = (x_center - x_left) / golden + x_left; + nb_eval++; + SAFE_FUNC_CALL (f, x_right, &f_right); + } + else /* f_center == f_right */ + { + x_right = x_center; + f_right = f_center; + x_center = (x_right - x_left) * golden + x_left; + nb_eval++; + SAFE_FUNC_CALL (f, x_center, &f_center); + } + } + else /* f_center >= f_left */ + { + x_right = x_center; + f_right = f_center; + x_center = (x_right - x_left) * golden + x_left; + nb_eval++; + SAFE_FUNC_CALL (f, x_center, &f_center); + } + } + while (nb_eval < eval_max + && (x_right - x_left) > GSL_SQRT_DBL_EPSILON * ( (x_right + x_left) * 0.5 ) + GSL_SQRT_DBL_EPSILON); + *x_lower = x_left; + *x_upper = x_right; + *x_minimum = x_center; + *f_lower = f_left; + *f_upper = f_right; + *f_minimum = f_center; + return GSL_FAILURE; +} + diff --git a/gsl-2.5/min/bracketing.lo b/gsl-2.5/min/bracketing.lo new file mode 100644 index 00000000..3c44a4d8 --- /dev/null +++ b/gsl-2.5/min/bracketing.lo @@ -0,0 +1,12 @@ +# bracketing.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/bracketing.o' + +# Name of the non-PIC object +non_pic_object='bracketing.o' + diff --git a/gsl-2.5/min/brent.c b/gsl-2.5/min/brent.c new file mode 100644 index 00000000..4eebc553 --- /dev/null +++ b/gsl-2.5/min/brent.c @@ -0,0 +1,221 @@ +/* min/brent.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* brent.c -- brent minimum finding algorithm */ + +#include + +#include +#include +#include +#include +#include + +#include +#include +#include + +#include "min.h" + +typedef struct + { + double d, e, v, w; + double f_v, f_w; + } +brent_state_t; + +static int brent_init (void *vstate, gsl_function * f, double x_minimum, double f_minimum, double x_lower, double f_lower, double x_upper, double f_upper); +static int brent_iterate (void *vstate, gsl_function * f, double *x_minimum, double * f_minimum, double * x_lower, double * f_lower, double * x_upper, double * f_upper); + +static int +brent_init (void *vstate, gsl_function * f, double x_minimum, double f_minimum, double x_lower, double f_lower, double x_upper, double f_upper) +{ + brent_state_t *state = (brent_state_t *) vstate; + + const double golden = 0.3819660; /* golden = (3 - sqrt(5))/2 */ + + double v = x_lower + golden * (x_upper - x_lower); + double w = v; + + double f_vw; + + x_minimum = 0 ; /* avoid warnings about unused varibles */ + f_minimum = 0 ; + f_lower = 0 ; + f_upper = 0 ; + + state->v = v; + state->w = w; + + state->d = 0; + state->e = 0; + + SAFE_FUNC_CALL (f, v, &f_vw); + + state->f_v = f_vw; + state->f_w = f_vw; + + return GSL_SUCCESS; +} + +static int +brent_iterate (void *vstate, gsl_function * f, double *x_minimum, double * f_minimum, double * x_lower, double * f_lower, double * x_upper, double * f_upper) +{ + brent_state_t *state = (brent_state_t *) vstate; + + const double x_left = *x_lower; + const double x_right = *x_upper; + + const double z = *x_minimum; + double d = state->e; + double e = state->d; + double u, f_u; + const double v = state->v; + const double w = state->w; + const double f_v = state->f_v; + const double f_w = state->f_w; + const double f_z = *f_minimum; + + const double golden = 0.3819660; /* golden = (3 - sqrt(5))/2 */ + + const double w_lower = (z - x_left); + const double w_upper = (x_right - z); + + const double tolerance = GSL_SQRT_DBL_EPSILON * fabs (z); + + double p = 0, q = 0, r = 0; + + const double midpoint = 0.5 * (x_left + x_right); + + if (fabs (e) > tolerance) + { + /* fit parabola */ + + r = (z - w) * (f_z - f_v); + q = (z - v) * (f_z - f_w); + p = (z - v) * q - (z - w) * r; + q = 2 * (q - r); + + if (q > 0) + { + p = -p; + } + else + { + q = -q; + } + + r = e; + e = d; + } + + if (fabs (p) < fabs (0.5 * q * r) && p < q * w_lower && p < q * w_upper) + { + double t2 = 2 * tolerance ; + + d = p / q; + u = z + d; + + if ((u - x_left) < t2 || (x_right - u) < t2) + { + d = (z < midpoint) ? tolerance : -tolerance ; + } + } + else + { + e = (z < midpoint) ? x_right - z : -(z - x_left) ; + d = golden * e; + } + + + if (fabs (d) >= tolerance) + { + u = z + d; + } + else + { + u = z + ((d > 0) ? tolerance : -tolerance) ; + } + + state->e = e; + state->d = d; + + SAFE_FUNC_CALL(f, u, &f_u); + + if (f_u <= f_z) + { + if (u < z) + { + *x_upper = z; + *f_upper = f_z; + } + else + { + *x_lower = z; + *f_lower = f_z; + } + + state->v = w; + state->f_v = f_w; + state->w = z; + state->f_w = f_z; + *x_minimum = u; + *f_minimum = f_u; + return GSL_SUCCESS; + } + else + { + if (u < z) + { + *x_lower = u; + *f_lower = f_u; + } + else + { + *x_upper = u; + *f_upper = f_u; + } + + if (f_u <= f_w || w == z) + { + state->v = w; + state->f_v = f_w; + state->w = u; + state->f_w = f_u; + return GSL_SUCCESS; + } + else if (f_u <= f_v || v == z || v == w) + { + state->v = u; + state->f_v = f_u; + return GSL_SUCCESS; + } + } + + return GSL_SUCCESS; +} + + +static const gsl_min_fminimizer_type brent_type = +{"brent", /* name */ + sizeof (brent_state_t), + &brent_init, + &brent_iterate}; + +const gsl_min_fminimizer_type *gsl_min_fminimizer_brent = &brent_type; diff --git a/gsl-2.5/min/brent.lo b/gsl-2.5/min/brent.lo new file mode 100644 index 00000000..a0e956ef --- /dev/null +++ b/gsl-2.5/min/brent.lo @@ -0,0 +1,12 @@ +# brent.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/brent.o' + +# Name of the non-PIC object +non_pic_object='brent.o' + diff --git a/gsl-2.5/min/convergence.c b/gsl-2.5/min/convergence.c new file mode 100644 index 00000000..f687aafd --- /dev/null +++ b/gsl-2.5/min/convergence.c @@ -0,0 +1,61 @@ +/* min/convergence.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include + +int +gsl_min_test_interval (double x_lower, double x_upper, double epsabs, double epsrel) +{ + const double lower = x_lower; + const double upper = x_upper; + + const double abs_lower = fabs(lower) ; + const double abs_upper = fabs(upper) ; + + double min_abs, tolerance; + + if (epsrel < 0.0) + GSL_ERROR ("relative tolerance is negative", GSL_EBADTOL); + + if (epsabs < 0.0) + GSL_ERROR ("absolute tolerance is negative", GSL_EBADTOL); + + if (lower > upper) + GSL_ERROR ("lower bound larger than upper_bound", GSL_EINVAL); + + if ((lower > 0 && upper > 0) || (lower < 0 && upper < 0)) + { + min_abs = GSL_MIN_DBL(abs_lower, abs_upper) ; + } + else + { + min_abs = 0; + } + + tolerance = epsabs + epsrel * min_abs ; + + if (fabs(upper - lower) < tolerance) + return GSL_SUCCESS; + + return GSL_CONTINUE ; +} + diff --git a/gsl-2.5/min/convergence.lo b/gsl-2.5/min/convergence.lo new file mode 100644 index 00000000..a5468a8d --- /dev/null +++ b/gsl-2.5/min/convergence.lo @@ -0,0 +1,12 @@ +# convergence.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/convergence.o' + +# Name of the non-PIC object +non_pic_object='convergence.o' + diff --git a/gsl-2.5/min/fsolver.c b/gsl-2.5/min/fsolver.c new file mode 100644 index 00000000..4cbda85f --- /dev/null +++ b/gsl-2.5/min/fsolver.c @@ -0,0 +1,201 @@ +/* min/fsolver.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include + +#include "min.h" + +static int +compute_f_values (gsl_function * f, double x_minimum, double * f_minimum, + double x_lower, double * f_lower, + double x_upper, double * f_upper); + + +static int +compute_f_values (gsl_function * f, double x_minimum, double * f_minimum, + double x_lower, double * f_lower, + double x_upper, double * f_upper) +{ + SAFE_FUNC_CALL(f, x_lower, f_lower); + SAFE_FUNC_CALL(f, x_upper, f_upper); + SAFE_FUNC_CALL(f, x_minimum, f_minimum); + + return GSL_SUCCESS; +} + +int +gsl_min_fminimizer_set (gsl_min_fminimizer * s, + gsl_function * f, + double x_minimum, double x_lower, double x_upper) +{ + int status ; + + double f_minimum, f_lower, f_upper; + + status = compute_f_values (f, x_minimum, &f_minimum, + x_lower, &f_lower, + x_upper, &f_upper); + + if (status != GSL_SUCCESS) + { + return status ; + } + + status = gsl_min_fminimizer_set_with_values (s, f, x_minimum, f_minimum, + x_lower, f_lower, + x_upper, f_upper); + return status; +} + +gsl_min_fminimizer * +gsl_min_fminimizer_alloc (const gsl_min_fminimizer_type * T) +{ + gsl_min_fminimizer * s = + (gsl_min_fminimizer *) malloc (sizeof (gsl_min_fminimizer)); + + if (s == 0) + { + GSL_ERROR_VAL ("failed to allocate space for minimizer struct", + GSL_ENOMEM, 0); + }; + + s->state = malloc (T->size); + + if (s->state == 0) + { + free (s); /* exception in constructor, avoid memory leak */ + + GSL_ERROR_VAL ("failed to allocate space for minimizer state", + GSL_ENOMEM, 0); + }; + + s->type = T ; + s->function = NULL; + + return s; +} + +int +gsl_min_fminimizer_set_with_values (gsl_min_fminimizer * s, gsl_function * f, + double x_minimum, double f_minimum, + double x_lower, double f_lower, + double x_upper, double f_upper) +{ + s->function = f; + s->x_minimum = x_minimum; + s->x_lower = x_lower; + s->x_upper = x_upper; + + if (x_lower > x_upper) + { + GSL_ERROR ("invalid interval (lower > upper)", GSL_EINVAL); + } + + if (x_minimum >= x_upper || x_minimum <= x_lower) + { + GSL_ERROR ("x_minimum must lie inside interval (lower < x < upper)", + GSL_EINVAL); + } + + s->f_lower = f_lower; + s->f_upper = f_upper; + s->f_minimum = f_minimum; + + if (f_minimum >= f_lower || f_minimum >= f_upper) + { + GSL_ERROR ("endpoints do not enclose a minimum", GSL_EINVAL); + } + + return (s->type->set) (s->state, s->function, + x_minimum, f_minimum, + x_lower, f_lower, + x_upper, f_upper); +} + + +int +gsl_min_fminimizer_iterate (gsl_min_fminimizer * s) +{ + return (s->type->iterate) (s->state, s->function, + &(s->x_minimum), &(s->f_minimum), + &(s->x_lower), &(s->f_lower), + &(s->x_upper), &(s->f_upper)); +} + +void +gsl_min_fminimizer_free (gsl_min_fminimizer * s) +{ + RETURN_IF_NULL (s); + free (s->state); + free (s); +} + +const char * +gsl_min_fminimizer_name (const gsl_min_fminimizer * s) +{ + return s->type->name; +} + +/* Deprecated, use x_minimum instead */ +double +gsl_min_fminimizer_minimum (const gsl_min_fminimizer * s) +{ + return s->x_minimum; +} + +double +gsl_min_fminimizer_x_minimum (const gsl_min_fminimizer * s) +{ + return s->x_minimum; +} + +double +gsl_min_fminimizer_x_lower (const gsl_min_fminimizer * s) +{ + return s->x_lower; +} + +double +gsl_min_fminimizer_x_upper (const gsl_min_fminimizer * s) +{ + return s->x_upper; +} + +double +gsl_min_fminimizer_f_minimum (const gsl_min_fminimizer * s) +{ + return s->f_minimum; +} + +double +gsl_min_fminimizer_f_lower (const gsl_min_fminimizer * s) +{ + return s->f_lower; +} + +double +gsl_min_fminimizer_f_upper (const gsl_min_fminimizer * s) +{ + return s->f_upper; +} + diff --git a/gsl-2.5/min/fsolver.lo b/gsl-2.5/min/fsolver.lo new file mode 100644 index 00000000..01f433d3 --- /dev/null +++ b/gsl-2.5/min/fsolver.lo @@ -0,0 +1,12 @@ +# fsolver.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/fsolver.o' + +# Name of the non-PIC object +non_pic_object='fsolver.o' + diff --git a/gsl-2.5/min/golden.c b/gsl-2.5/min/golden.c new file mode 100644 index 00000000..f09fe032 --- /dev/null +++ b/gsl-2.5/min/golden.c @@ -0,0 +1,120 @@ +/* min/golden.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + + +/* goldensection.c -- goldensection minimum finding algorithm */ + +#include + +#include +#include +#include +#include +#include + +#include +#include +#include + +#include "min.h" + +typedef struct + { + double dummy; + } +goldensection_state_t; + +static int goldensection_init (void * vstate, gsl_function * f, double x_minimum, double f_minimum, double x_lower, double f_lower, double x_upper, double f_upper); +static int goldensection_iterate (void * vstate, gsl_function * f, double * x_minimum, double * f_minimum, double * x_lower, double * f_lower, double * x_upper, double * f_upper); + +static int +goldensection_init (void * vstate, gsl_function * f, double x_minimum, double f_minimum, double x_lower, double f_lower, double x_upper, double f_upper) +{ + goldensection_state_t * state = (goldensection_state_t *) vstate; + + /* no initialization required, prevent warnings about unused variables */ + + state = 0; + f = 0; + x_minimum = 0; + f_minimum = 0; + x_lower = 0; + f_lower = 0; + x_upper = 0; + f_upper = 0; + + return GSL_SUCCESS; +} + +static int +goldensection_iterate (void * vstate, gsl_function * f, double * x_minimum, double * f_minimum, double * x_lower, double * f_lower, double * x_upper, double * f_upper) +{ + goldensection_state_t * state = (goldensection_state_t *) vstate; + + const double x_center = *x_minimum ; + const double x_left = *x_lower ; + const double x_right = *x_upper ; + + const double f_min = *f_minimum; + + const double golden = 0.3819660; /* golden = (3 - sqrt(5))/2 */ + + const double w_lower = (x_center - x_left); + const double w_upper = (x_right - x_center); + + double x_new, f_new; + + state = 0 ; /* avoid warning about unused parameters */ + + x_new = x_center + golden * ((w_upper > w_lower) ? w_upper : -w_lower) ; + + SAFE_FUNC_CALL (f, x_new, &f_new); + + if (f_new < f_min) + { + *x_minimum = x_new ; + *f_minimum = f_new ; + return GSL_SUCCESS; + } + else if (x_new < x_center && f_new > f_min) + { + *x_lower = x_new ; + *f_lower = f_new ; + return GSL_SUCCESS; + } + else if (x_new > x_center && f_new > f_min) + { + *x_upper = x_new ; + *f_upper = f_new ; + return GSL_SUCCESS; + } + else + { + return GSL_FAILURE; + } +} + + +static const gsl_min_fminimizer_type goldensection_type = +{"goldensection", /* name */ + sizeof (goldensection_state_t), + &goldensection_init, + &goldensection_iterate}; + +const gsl_min_fminimizer_type * gsl_min_fminimizer_goldensection = &goldensection_type; diff --git a/gsl-2.5/min/golden.lo b/gsl-2.5/min/golden.lo new file mode 100644 index 00000000..ae3e68d1 --- /dev/null +++ b/gsl-2.5/min/golden.lo @@ -0,0 +1,12 @@ +# golden.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/golden.o' + +# Name of the non-PIC object +non_pic_object='golden.o' + diff --git a/gsl-2.5/min/gsl_min.h b/gsl-2.5/min/gsl_min.h new file mode 100644 index 00000000..c179572a --- /dev/null +++ b/gsl-2.5/min/gsl_min.h @@ -0,0 +1,111 @@ +/* min/gsl_min.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007, 2009 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_MIN_H__ +#define __GSL_MIN_H__ + +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +typedef struct + { + const char *name; + size_t size; + int (*set) (void *state, gsl_function * f, double x_minimum, double f_minimum, double x_lower, double f_lower, double x_upper, double f_upper); + int (*iterate) (void *state, gsl_function * f, double * x_minimum, double * f_minimum, double * x_lower, double * f_lower, double * x_upper, double * f_upper); + } +gsl_min_fminimizer_type; + +typedef struct + { + const gsl_min_fminimizer_type * type; + gsl_function * function ; + double x_minimum ; + double x_lower ; + double x_upper ; + double f_minimum, f_lower, f_upper; + void *state; + } +gsl_min_fminimizer; + +gsl_min_fminimizer * +gsl_min_fminimizer_alloc (const gsl_min_fminimizer_type * T) ; + +void gsl_min_fminimizer_free (gsl_min_fminimizer * s); + +int gsl_min_fminimizer_set (gsl_min_fminimizer * s, + gsl_function * f, double x_minimum, + double x_lower, double x_upper); + +int gsl_min_fminimizer_set_with_values (gsl_min_fminimizer * s, + gsl_function * f, + double x_minimum, double f_minimum, + double x_lower, double f_lower, + double x_upper, double f_upper); + +int gsl_min_fminimizer_iterate (gsl_min_fminimizer * s); + +const char * gsl_min_fminimizer_name (const gsl_min_fminimizer * s); + +double gsl_min_fminimizer_x_minimum (const gsl_min_fminimizer * s); +double gsl_min_fminimizer_x_lower (const gsl_min_fminimizer * s); +double gsl_min_fminimizer_x_upper (const gsl_min_fminimizer * s); +double gsl_min_fminimizer_f_minimum (const gsl_min_fminimizer * s); +double gsl_min_fminimizer_f_lower (const gsl_min_fminimizer * s); +double gsl_min_fminimizer_f_upper (const gsl_min_fminimizer * s); + +/* Deprecated, use x_minimum instead */ +double gsl_min_fminimizer_minimum (const gsl_min_fminimizer * s); + +int +gsl_min_test_interval (double x_lower, double x_upper, double epsabs, double epsrel); + +GSL_VAR const gsl_min_fminimizer_type * gsl_min_fminimizer_goldensection; +GSL_VAR const gsl_min_fminimizer_type * gsl_min_fminimizer_brent; +GSL_VAR const gsl_min_fminimizer_type * gsl_min_fminimizer_quad_golden; + +typedef +int (*gsl_min_bracketing_function)(gsl_function *f, + double *x_minimum,double * f_minimum, + double *x_lower, double * f_lower, + double *x_upper, double * f_upper, + size_t eval_max); + +int +gsl_min_find_bracket(gsl_function *f,double *x_minimum,double * f_minimum, + double *x_lower, double * f_lower, + double *x_upper, double * f_upper, + size_t eval_max); + +__END_DECLS + +#endif /* __GSL_MIN_H__ */ diff --git a/gsl-2.5/min/libgslmin.la b/gsl-2.5/min/libgslmin.la new file mode 100644 index 00000000..7ce1924f --- /dev/null +++ b/gsl-2.5/min/libgslmin.la @@ -0,0 +1,41 @@ +# libgslmin.la - a libtool library file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='' + +# Names of this library. +library_names='' + +# The name of the static archive. +old_library='libgslmin.a' + +# Linker flags that can not go in dependency_libs. +inherited_linker_flags='' + +# Libraries that this one depends upon. +dependency_libs=' -lm' + +# Names of additional weak libraries provided by this library +weak_library_names='' + +# Version information for libgslmin. +current= +age= +revision= + +# Is this an already installed library? +installed=no + +# Should we warn about portability when linking against -modules? +shouldnotlink=no + +# Files to dlopen/dlpreopen +dlopen='' +dlpreopen='' + +# Directory that this library needs to be installed in: +libdir='' diff --git a/gsl-2.5/min/min.h b/gsl-2.5/min/min.h new file mode 100644 index 00000000..f20050b1 --- /dev/null +++ b/gsl-2.5/min/min.h @@ -0,0 +1,25 @@ +/* min/min.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#define SAFE_FUNC_CALL(f, x, yp) \ +do { \ + *yp = GSL_FN_EVAL(f,x); \ + if (!gsl_finite(*yp)) \ + GSL_ERROR("computed function value is infinite or NaN", GSL_EBADFUNC); \ +} while (0) diff --git a/gsl-2.5/min/quad_golden.c b/gsl-2.5/min/quad_golden.c new file mode 100644 index 00000000..c078bd66 --- /dev/null +++ b/gsl-2.5/min/quad_golden.c @@ -0,0 +1,343 @@ +/*----------------------------------------------------------------------------*/ +/* */ +/* quad_golden.c */ +/* */ +/* Copyright (C) 2007 James Howse */ +/* Copyright (C) 2009 Brian Gough */ +/* */ +/* This program is free software; you can redistribute it and/or modify */ +/* it under the terms of the GNU General Public License as published by */ +/* the Free Software Foundation; either version 3 of the License, or (at */ +/* your option) any later version. */ +/* */ +/* This program is distributed in the hope that it will be useful, but */ +/* WITHOUT ANY WARRANTY; without even the implied warranty of */ +/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU */ +/* General Public License for more details. */ +/* */ +/* You should have received a copy of the GNU General Public License */ +/* along with this program; if not, write to the Free Software */ +/* Foundation, Inc., 51 Franklin Street, Fifth Floor, */ +/* Boston, MA 02110-1301, USA. */ +/* */ +/* :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: */ +/* */ +/* This algorithm performs univariate minimization (i.e., line search). */ +/* It requires only objective function values g(x) to compute the minimum. */ +/* The algorithm maintains an interval of uncertainty [a,b] and a point x */ +/* in the interval [a,b] such that a < x < b, and g(a) > g(x) and */ +/* g(x) < g(b). The algorithm also maintains the three points with the */ +/* smallest objective values x, v and w such that g(x) < g(v) < g(w). The */ +/* algorithm terminates when max( x - a, b - x ) < 2(r |x| + t) where r */ +/* and t are small positive reals. At a given iteration, the algorithm */ +/* first fits a quadratic through the three points (x, g(x)), (v, g(v)) */ +/* and (w, g(w)) and computes the location of the minimum u of the */ +/* resulting quadratic. If u is in the interval [a,b] then g(u) is */ +/* computed. If u is not in the interval [a,b], and either v < x and */ +/* w < x, or v > x and w > x (i.e., the quadratic is extrapolating), then */ +/* a point u' is computed using a safeguarding procedure and g(u') is */ +/* computed. If u is not in the interval [a,b], and the quadratic is not */ +/* extrapolating, then a point u'' is computed using approximate golden */ +/* section and g(u'') is computed. After evaluating g() at the */ +/* appropriate new point, a, b, x, v, and w are updated and the next */ +/* iteration is performed. The algorithm is based on work presented in */ +/* the following references. */ +/* */ +/* Algorithms for Minimization without derivatives */ +/* Richard Brent */ +/* Prentice-Hall Inc., Englewood Cliffs, NJ, 1973 */ +/* */ +/* Safeguarded Steplength Algorithms for Optimization using Descent Methods */ +/* Philip E. Gill and Walter Murray */ +/* Division of Numerical Analysis and Computing */ +/* National Physical Laboratory, Teddington, United Kingdom */ +/* NPL Report NAC 37, August 1974 */ +/* */ +/*----------------------------------------------------------------------------*/ +#include + +#include +#include +#include +#include +#include + +#include +#include +#include + +#include "min.h" + +#define REL_ERR_VAL 1.0e-06 +#define ABS_ERR_VAL 1.0e-10 +#define GOLDEN_MEAN 0.3819660112501052 /* (3 - sqrt(5))/2 */ +#define GOLDEN_RATIO 1.6180339887498950 /* (1 + sqrt(5))/2 */ + +#define DEBUG_PRINTF(x) /* do nothing */ + +typedef struct +{ + double step_size, stored_step, prev_stored_step; + double x_prev_small, f_prev_small, x_small, f_small; + unsigned int num_iter; +} +quad_golden_state_t; + +static int +quad_golden_init (void *vstate, gsl_function * f, double x_minimum, + double f_minimum, double x_lower, double f_lower, + double x_upper, double f_upper) +{ + quad_golden_state_t *state = (quad_golden_state_t *) vstate; + + /* For the original behavior, the first value for x_minimum_minimum + passed in by the user should be a golden section step but we + don't enforce this here. */ + + state->x_prev_small = x_minimum; + state->x_small = x_minimum; + + state->f_prev_small = f_minimum; + state->f_small = f_minimum; + + state->step_size = 0.0; + state->stored_step = 0.0; + state->prev_stored_step = 0.0; + state->num_iter = 0; + + x_lower = 0 ; /* avoid warnings about unused variables */ + x_upper = 0 ; + f_lower = 0 ; + f_upper = 0 ; + f = 0; + + return GSL_SUCCESS; +} + +static int +quad_golden_iterate (void *vstate, gsl_function * f, double *x_minimum, + double *f_minimum, double *x_lower, double *f_lower, + double *x_upper, double *f_upper) +{ + quad_golden_state_t *state = (quad_golden_state_t *) vstate; + + const double x_m = *x_minimum; + const double f_m = *f_minimum; + + const double x_l = *x_lower; + const double x_u = *x_upper; + + const double x_small = state->x_small; + const double f_small = state->f_small; + + const double x_prev_small = state->x_prev_small; + const double f_prev_small = state->f_prev_small; + + double stored_step = state->stored_step; /* update on exit */ + double prev_stored_step = state->prev_stored_step; /* update on exit */ + double step_size = state->step_size; /* update on exit */ + + double quad_step_size = prev_stored_step; + + double x_trial; + double x_eval, f_eval; + + double x_midpoint = 0.5 * (x_l + x_u); + double tol = REL_ERR_VAL * fabs (x_m) + ABS_ERR_VAL; /* total error tolerance */ + + if (fabs (stored_step) - tol > -2.0 * GSL_DBL_EPSILON) + { + /* Fit quadratic */ + double c3 = (x_m - x_small) * (f_m - f_prev_small); + double c2 = (x_m - x_prev_small) * (f_m - f_small); + double c1 = (x_m - x_prev_small) * c2 - (x_m - x_small) * c3; + + c2 = 2.0 * (c2 - c3); + + if (fabs (c2) > GSL_DBL_EPSILON) /* if( c2 != 0 ) */ + { + if (c2 > 0.0) + c1 = -c1; + + c2 = fabs (c2); + + quad_step_size = c1 / c2; + } + else + { + /* Handle case where c2 ~=~ 0 */ + /* Insure that the line search will NOT take a quadratic + interpolation step in this iteration */ + quad_step_size = stored_step; + } + + prev_stored_step = stored_step; + stored_step = step_size; + } + + x_trial = x_m + quad_step_size; + + if (fabs (quad_step_size) < fabs (0.5 * prev_stored_step) && x_trial > x_l && x_trial < x_u) + { + /* Take quadratic interpolation step */ + step_size = quad_step_size; + + /* Do not evaluate function too close to x_l or x_u */ + if ((x_trial - x_l) < 2.0 * tol || (x_u - x_trial) < 2.0 * tol) + { + step_size = (x_midpoint >= x_m ? +1.0 : -1.0) * fabs(tol); + } + + DEBUG_PRINTF(("quadratic step: %g\n", step_size)); + } + else if ((x_small != x_prev_small && x_small < x_m && x_prev_small < x_m) || + (x_small != x_prev_small && x_small > x_m && x_prev_small > x_m)) + { + /* Take safeguarded function comparison step */ + double outside_interval, inside_interval; + + if (x_small < x_m) + { + outside_interval = x_l - x_m; + inside_interval = x_u - x_m; + } + else + { + outside_interval = x_u - x_m; + inside_interval = x_l - x_m; + } + + if (fabs (inside_interval) <= tol) + { + /* Swap inside and outside intervals */ + double tmp = outside_interval; + outside_interval = inside_interval; + inside_interval = tmp; + } + + { + double step = inside_interval; + double scale_factor; + + if (fabs (outside_interval) < fabs (inside_interval)) + { + scale_factor = 0.5 * sqrt (-outside_interval / inside_interval); + } + else + { + scale_factor = (5.0 / 11.0) * (0.1 - inside_interval / outside_interval); + } + + state->stored_step = step; + step_size = scale_factor * step; + } + + DEBUG_PRINTF(("safeguard step: %g\n", step_size)); + } + else + { + /* Take golden section step */ + double step; + + if (x_m < x_midpoint) + { + step = x_u - x_m; + } + else + { + step = x_l - x_m; + } + + state->stored_step = step; + step_size = GOLDEN_MEAN * step; + + DEBUG_PRINTF(("golden step: %g\n", step_size)); + } + + /* Do not evaluate function too close to x_minimum */ + if (fabs (step_size) > tol) + { + x_eval = x_m + step_size; + } + else + { + x_eval = x_m + (step_size >= 0 ? +1.0 : -1.0) * fabs(tol); + } + + /* Evaluate function at the new point x_eval */ + SAFE_FUNC_CALL(f, x_eval, &f_eval); + + /* Update {x,f}_lower, {x,f}_upper, {x,f}_prev_small, {x,f}_small, and {x,f}_minimum */ + if (f_eval <= f_m) + { + if (x_eval < x_m) + { + *x_upper = x_m; + *f_upper = f_m; + } + else + { + *x_lower = x_m; + *f_upper = f_m; + } + + state->x_prev_small = x_small; + state->f_prev_small = f_small; + + state->x_small = x_m; + state->f_small = f_m; + + *x_minimum = x_eval; + *f_minimum = f_eval; + } + else + { + if (x_eval < x_m) + { + *x_lower = x_eval; + *f_lower = f_eval; + } + else + { + *x_upper = x_eval; + *f_upper = f_eval; + } + + if (f_eval <= f_small || fabs (x_small - x_m) < 2.0 * GSL_DBL_EPSILON) + { + state->x_prev_small = x_small; + state->f_prev_small = f_small; + + state->x_small = x_eval; + state->f_small = f_eval; + } + else if (f_eval <= f_prev_small || + fabs (x_prev_small - x_m) < 2.0 * GSL_DBL_EPSILON || + fabs (x_prev_small - x_small) < 2.0 * GSL_DBL_EPSILON) + { + state->x_prev_small = x_eval; + state->f_prev_small = f_eval; + } + } + + /* Update stored values for next iteration */ + + state->stored_step = stored_step; + state->prev_stored_step = prev_stored_step; + state->step_size = step_size; + state->num_iter++; + + DEBUG_PRINTF(("[%d] Final State: %g %g %g\n", state->num_iter, x_l, x_m, x_u)); + + return GSL_SUCCESS; +} + + +static const gsl_min_fminimizer_type quad_golden_type = { "quad-golden", /* name */ + sizeof (quad_golden_state_t), + &quad_golden_init, + &quad_golden_iterate +}; + +const gsl_min_fminimizer_type *gsl_min_fminimizer_quad_golden = + &quad_golden_type; diff --git a/gsl-2.5/min/quad_golden.lo b/gsl-2.5/min/quad_golden.lo new file mode 100644 index 00000000..35331095 --- /dev/null +++ b/gsl-2.5/min/quad_golden.lo @@ -0,0 +1,12 @@ +# quad_golden.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/quad_golden.o' + +# Name of the non-PIC object +non_pic_object='quad_golden.o' + diff --git a/gsl-2.5/min/test b/gsl-2.5/min/test new file mode 100755 index 00000000..71b08098 Binary files /dev/null and b/gsl-2.5/min/test differ diff --git a/gsl-2.5/min/test-suite.log b/gsl-2.5/min/test-suite.log new file mode 100644 index 00000000..7c43cd81 --- /dev/null +++ b/gsl-2.5/min/test-suite.log @@ -0,0 +1,14 @@ +================================= + gsl 2.5: min/test-suite.log +================================= + +# TOTAL: 1 +# PASS: 1 +# SKIP: 0 +# XFAIL: 0 +# FAIL: 0 +# XPASS: 0 +# ERROR: 0 + +.. contents:: :depth: 2 + diff --git a/gsl-2.5/min/test.c b/gsl-2.5/min/test.c new file mode 100644 index 00000000..d9b037d2 --- /dev/null +++ b/gsl-2.5/min/test.c @@ -0,0 +1,216 @@ +/* min/test.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ +#include +#include +#include +#include +#include +#include +#include + +#include "test.h" +#include "min.h" + +/* stopping parameters */ + +const double EPSABS = 0.001 ; +const double EPSREL = 0.001 ; + +const unsigned int MAX_ITERATIONS = 100; + +void my_error_handler (const char *reason, const char *file, + int line, int err); + +#define WITHIN_TOL(a, b, epsrel, epsabs) \ + (fabs((a) - (b)) < (epsrel) * GSL_MIN(fabs(a), fabs(b)) + (epsabs)) + +int +main (void) +{ + gsl_function F_cos, F_func1, F_func2, F_func3, F_func4; + + const gsl_min_fminimizer_type * fminimizer[4] ; + const gsl_min_fminimizer_type ** T; + + gsl_ieee_env_setup (); + + fminimizer[0] = gsl_min_fminimizer_goldensection; + fminimizer[1] = gsl_min_fminimizer_brent; + fminimizer[2] = gsl_min_fminimizer_quad_golden; + fminimizer[3] = 0; + + F_cos = create_function (f_cos) ; + F_func1 = create_function (func1) ; + F_func2 = create_function (func2) ; + F_func3 = create_function (func3) ; + F_func4 = create_function (func4) ; + + gsl_set_error_handler (&my_error_handler); + + for (T = fminimizer ; *T != 0 ; T++) + { + test_f (*T, "cos(x) [0 (3) 6]", &F_cos, 0.0, 3.0, 6.0, M_PI); + test_f (*T, "x^4 - 1 [-3 (-1) 17]", &F_func1, -3.0, -1.0, 17.0, 0.0); + test_f (*T, "sqrt(|x|) [-2 (-1) 1.5]", &F_func2, -2.0, -1.0, 1.5, 0.0); + test_f (*T, "func3(x) [-2 (3) 4]", &F_func3, -2.0, 3.0, 4.0, 1.0); + test_f (*T, "func4(x) [0 (0.782) 1]", &F_func4, 0, 0.782, 1.0, 0.8); + + test_f_e (*T, "invalid range check [4, 0]", &F_cos, 4.0, 3.0, 0.0, M_PI); + test_f_e (*T, "invalid range check [1, 1]", &F_cos, 1.0, 1.0, 1.0, M_PI); + test_f_e (*T, "invalid range check [-1, 1]", &F_cos, -1.0, 0.0, 1.0, M_PI); + } + test_bracket("cos(x) [1,2]",&F_cos,1.0,2.0,15); + test_bracket("sqrt(|x|) [-1,0]",&F_func2,-1.0,0.0,15); + test_bracket("sqrt(|x|) [-1,-0.6]",&F_func2,-1.0,-0.6,15); + test_bracket("sqrt(|x|) [-1,1]",&F_func2,-1.0,1.0,15); + + exit (gsl_test_summary ()); +} + +void +test_f (const gsl_min_fminimizer_type * T, + const char * description, gsl_function *f, + double lower_bound, double middle, double upper_bound, + double correct_minimum) +{ + int status; + size_t iterations = 0; + double m, a, b; + double x_lower, x_upper; + gsl_min_fminimizer * s; + + x_lower = lower_bound; + x_upper = upper_bound; + + s = gsl_min_fminimizer_alloc (T) ; + gsl_min_fminimizer_set (s, f, middle, x_lower, x_upper) ; + + do + { + iterations++ ; + + status = gsl_min_fminimizer_iterate (s); + + m = gsl_min_fminimizer_x_minimum(s); + a = gsl_min_fminimizer_x_lower(s); + b = gsl_min_fminimizer_x_upper(s); + +#ifdef DEBUG + printf("%.12f %.18f %.12f %.18f %.12f %.18f status=%d\n", + a, GSL_FN_EVAL(f, a), m, GSL_FN_EVAL(f, m), b, GSL_FN_EVAL(f, b), status); +#endif + + if (a > b) + gsl_test (GSL_FAILURE, "interval is invalid (%g,%g)", a, b); + + if (m < a || m > b) + gsl_test (GSL_FAILURE, "m lies outside interval %g (%g,%g)", m, a, b); + + if (status) break ; + + status = gsl_min_test_interval (a, b, EPSABS, EPSREL); + } + while (status == GSL_CONTINUE && iterations < MAX_ITERATIONS); + + gsl_test (status, "%s, %s (%g obs vs %g expected) ", + gsl_min_fminimizer_name(s), description, + gsl_min_fminimizer_x_minimum(s), correct_minimum); + + /* check the validity of the returned result */ + + if (!WITHIN_TOL (m, correct_minimum, EPSREL, EPSABS)) + { + gsl_test (GSL_FAILURE, "incorrect precision (%g obs vs %g expected)", + m, correct_minimum); + } + + gsl_min_fminimizer_free (s); + +} + +void +test_f_e (const gsl_min_fminimizer_type * T, + const char * description, gsl_function *f, + double lower_bound, double middle, double upper_bound, + double correct_minimum) +{ + int status; + size_t iterations = 0; + double x_lower, x_upper; + double a, b; + gsl_min_fminimizer * s; + + x_lower = lower_bound; + x_upper = upper_bound; + + s = gsl_min_fminimizer_alloc (T) ; + status = gsl_min_fminimizer_set (s, f, middle, x_lower, x_upper) ; + + if (status != GSL_SUCCESS) + { + gsl_min_fminimizer_free (s) ; + gsl_test (status == GSL_SUCCESS, "%s, %s", T->name, description); + return ; + } + + do + { + iterations++ ; + gsl_min_fminimizer_iterate (s); + a = gsl_min_fminimizer_x_lower(s); + b = gsl_min_fminimizer_x_upper(s); + + status = gsl_min_test_interval (a, b, EPSABS, EPSREL); + } + while (status == GSL_CONTINUE && iterations < MAX_ITERATIONS); + + gsl_test (!status, "%s, %s", gsl_min_fminimizer_name(s), description, + gsl_min_fminimizer_x_minimum(s) - correct_minimum); + + gsl_min_fminimizer_free (s); +} + +void +my_error_handler (const char *reason, const char *file, int line, int err) +{ + if (0) + printf ("(caught [%s:%d: %s (%d)])\n", file, line, reason, err); +} + +int +test_bracket (const char * description,gsl_function *f,double lower_bound, + double upper_bound, unsigned int max) +{ + int status; + double x_lower, x_upper; + double f_upper,f_lower,f_minimum; + double x_minimum; + + x_lower=lower_bound; + x_upper=upper_bound; + SAFE_FUNC_CALL (f,x_lower,&f_lower); + SAFE_FUNC_CALL (f,x_upper,&f_upper); + status=gsl_min_find_bracket(f,&x_minimum,&f_minimum,&x_lower,&f_lower,&x_upper,&f_upper,max); + gsl_test (status,"%s, interval: [%g,%g], values: (%g,%g), minimum at: %g, value: %g", + description,x_lower,x_upper,f_lower,f_upper,x_minimum,f_minimum); + return status; +} + + + diff --git a/gsl-2.5/min/test.h b/gsl-2.5/min/test.h new file mode 100644 index 00000000..5cc3f191 --- /dev/null +++ b/gsl-2.5/min/test.h @@ -0,0 +1,42 @@ +/* min/test.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +gsl_function create_function (double (*f)(double, void *)); + +void +test_f_e (const gsl_min_fminimizer_type * T, + const char * description, gsl_function *f, + double lower_bound, double minimum, double upper_bound, + double correct_minimum); + +void +test_f (const gsl_min_fminimizer_type * T, + const char * description, gsl_function *f, + double lower_bound, double middle, double upper_bound, + double correct_minimum); + +int +test_bracket (const char * description,gsl_function *f,double lower_bound, + double upper_bound, unsigned int max); + +double f_cos (double x, void * p); +double func1 (double x, void * p); +double func2 (double x, void * p); +double func3 (double x, void * p); +double func4 (double x, void * p); diff --git a/gsl-2.5/min/test.log b/gsl-2.5/min/test.log new file mode 100644 index 00000000..c7a24520 --- /dev/null +++ b/gsl-2.5/min/test.log @@ -0,0 +1 @@ +Completed [28/28] diff --git a/gsl-2.5/min/test.trs b/gsl-2.5/min/test.trs new file mode 100644 index 00000000..3f0f396c --- /dev/null +++ b/gsl-2.5/min/test.trs @@ -0,0 +1,4 @@ +:test-result: PASS +:global-test-result: PASS +:recheck: no +:copy-in-global-log: no diff --git a/gsl-2.5/min/test_funcs.c b/gsl-2.5/min/test_funcs.c new file mode 100644 index 00000000..50f4f525 --- /dev/null +++ b/gsl-2.5/min/test_funcs.c @@ -0,0 +1,85 @@ +/* min/test_funcs.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include + +#include "test.h" + +gsl_function create_function (double (*f)(double, void *)) +{ + gsl_function F ; + F.function = f ; + F.params = 0 ; + return F ; +} + +double +f_cos (double x, void * p) +{ + p = 0; /* avoid warning about unused parameter */ + return cos(x); +} + +/* f(x) = x^4 - 1 */ +/* minimum at x = 0 */ + +double +func1 (double x, void * p) +{ + p = 0; /* avoid warning about unused parameter */ + return pow (x, 4.0) - 1; +} + +/* f(x) = sqrt(|x|) */ +/* minimum at x = 0 */ + +double +func2 (double x, void * p) +{ + p = 0; /* avoid warning about unused parameter */ + return sqrt(fabs(x)); +} + + +/* f(x) = 1 for x < 1 and -exp(-x) for x >= 1 */ +/* minimum at x = 1 */ + +double +func3 (double x, void * p) +{ + p = 0; /* avoid warning about unused parameter */ + + if (x < 1) + return 1 ; + else + return - exp(-x) ; +} + +/* f(x) = x - 30/(1+1e5*(x-0.8)**2) */ +/* minimum near x = 0.8 */ + +double +func4 (double x, void * p) +{ + p = 0; /* avoid warning about unused parameter */ + + return x - 30.0 / (1.0 + 1e5 * pow(x-0.8, 2.0)); +} + diff --git a/gsl-2.5/missing b/gsl-2.5/missing new file mode 100755 index 00000000..cdea5149 --- /dev/null +++ b/gsl-2.5/missing @@ -0,0 +1,215 @@ +#! /bin/sh +# Common wrapper for a few potentially missing GNU programs. + +scriptversion=2012-06-26.16; # UTC + +# Copyright (C) 1996-2013 Free Software Foundation, Inc. +# Originally written by Fran,cois Pinard , 1996. + +# 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, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +if test $# -eq 0; then + echo 1>&2 "Try '$0 --help' for more information" + exit 1 +fi + +case $1 in + + --is-lightweight) + # Used by our autoconf macros to check whether the available missing + # script is modern enough. + exit 0 + ;; + + --run) + # Back-compat with the calling convention used by older automake. + shift + ;; + + -h|--h|--he|--hel|--help) + echo "\ +$0 [OPTION]... PROGRAM [ARGUMENT]... + +Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due +to PROGRAM being missing or too old. + +Options: + -h, --help display this help and exit + -v, --version output version information and exit + +Supported PROGRAM values: + aclocal autoconf autoheader autom4te automake makeinfo + bison yacc flex lex help2man + +Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and +'g' are ignored when checking the name. + +Send bug reports to ." + exit $? + ;; + + -v|--v|--ve|--ver|--vers|--versi|--versio|--version) + echo "missing $scriptversion (GNU Automake)" + exit $? + ;; + + -*) + echo 1>&2 "$0: unknown '$1' option" + echo 1>&2 "Try '$0 --help' for more information" + exit 1 + ;; + +esac + +# Run the given program, remember its exit status. +"$@"; st=$? + +# If it succeeded, we are done. +test $st -eq 0 && exit 0 + +# Also exit now if we it failed (or wasn't found), and '--version' was +# passed; such an option is passed most likely to detect whether the +# program is present and works. +case $2 in --version|--help) exit $st;; esac + +# Exit code 63 means version mismatch. This often happens when the user +# tries to use an ancient version of a tool on a file that requires a +# minimum version. +if test $st -eq 63; then + msg="probably too old" +elif test $st -eq 127; then + # Program was missing. + msg="missing on your system" +else + # Program was found and executed, but failed. Give up. + exit $st +fi + +perl_URL=http://www.perl.org/ +flex_URL=http://flex.sourceforge.net/ +gnu_software_URL=http://www.gnu.org/software + +program_details () +{ + case $1 in + aclocal|automake) + echo "The '$1' program is part of the GNU Automake package:" + echo "<$gnu_software_URL/automake>" + echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:" + echo "<$gnu_software_URL/autoconf>" + echo "<$gnu_software_URL/m4/>" + echo "<$perl_URL>" + ;; + autoconf|autom4te|autoheader) + echo "The '$1' program is part of the GNU Autoconf package:" + echo "<$gnu_software_URL/autoconf/>" + echo "It also requires GNU m4 and Perl in order to run:" + echo "<$gnu_software_URL/m4/>" + echo "<$perl_URL>" + ;; + esac +} + +give_advice () +{ + # Normalize program name to check for. + normalized_program=`echo "$1" | sed ' + s/^gnu-//; t + s/^gnu//; t + s/^g//; t'` + + printf '%s\n' "'$1' is $msg." + + configure_deps="'configure.ac' or m4 files included by 'configure.ac'" + case $normalized_program in + autoconf*) + echo "You should only need it if you modified 'configure.ac'," + echo "or m4 files included by it." + program_details 'autoconf' + ;; + autoheader*) + echo "You should only need it if you modified 'acconfig.h' or" + echo "$configure_deps." + program_details 'autoheader' + ;; + automake*) + echo "You should only need it if you modified 'Makefile.am' or" + echo "$configure_deps." + program_details 'automake' + ;; + aclocal*) + echo "You should only need it if you modified 'acinclude.m4' or" + echo "$configure_deps." + program_details 'aclocal' + ;; + autom4te*) + echo "You might have modified some maintainer files that require" + echo "the 'automa4te' program to be rebuilt." + program_details 'autom4te' + ;; + bison*|yacc*) + echo "You should only need it if you modified a '.y' file." + echo "You may want to install the GNU Bison package:" + echo "<$gnu_software_URL/bison/>" + ;; + lex*|flex*) + echo "You should only need it if you modified a '.l' file." + echo "You may want to install the Fast Lexical Analyzer package:" + echo "<$flex_URL>" + ;; + help2man*) + echo "You should only need it if you modified a dependency" \ + "of a man page." + echo "You may want to install the GNU Help2man package:" + echo "<$gnu_software_URL/help2man/>" + ;; + makeinfo*) + echo "You should only need it if you modified a '.texi' file, or" + echo "any other file indirectly affecting the aspect of the manual." + echo "You might want to install the Texinfo package:" + echo "<$gnu_software_URL/texinfo/>" + echo "The spurious makeinfo call might also be the consequence of" + echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might" + echo "want to install GNU make:" + echo "<$gnu_software_URL/make/>" + ;; + *) + echo "You might have modified some files without having the proper" + echo "tools for further handling them. Check the 'README' file, it" + echo "often tells you about the needed prerequisites for installing" + echo "this package. You may also peek at any GNU archive site, in" + echo "case some other package contains this missing '$1' program." + ;; + esac +} + +give_advice "$1" | sed -e '1s/^/WARNING: /' \ + -e '2,$s/^/ /' >&2 + +# Propagate the correct exit status (expected to be 127 for a program +# not found, 63 for a program that failed due to version mismatch). +exit $st + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC" +# time-stamp-end: "; # UTC" +# End: diff --git a/gsl-2.5/mkinstalldirs b/gsl-2.5/mkinstalldirs new file mode 100755 index 00000000..55d537f8 --- /dev/null +++ b/gsl-2.5/mkinstalldirs @@ -0,0 +1,162 @@ +#! /bin/sh +# mkinstalldirs --- make directory hierarchy + +scriptversion=2009-04-28.21; # UTC + +# Original author: Noah Friedman +# Created: 1993-05-16 +# Public domain. +# +# This file is maintained in Automake, please report +# bugs to or send patches to +# . + +nl=' +' +IFS=" "" $nl" +errstatus=0 +dirmode= + +usage="\ +Usage: mkinstalldirs [-h] [--help] [--version] [-m MODE] DIR ... + +Create each directory DIR (with mode MODE, if specified), including all +leading file name components. + +Report bugs to ." + +# process command line arguments +while test $# -gt 0 ; do + case $1 in + -h | --help | --h*) # -h for help + echo "$usage" + exit $? + ;; + -m) # -m PERM arg + shift + test $# -eq 0 && { echo "$usage" 1>&2; exit 1; } + dirmode=$1 + shift + ;; + --version) + echo "$0 $scriptversion" + exit $? + ;; + --) # stop option processing + shift + break + ;; + -*) # unknown option + echo "$usage" 1>&2 + exit 1 + ;; + *) # first non-opt arg + break + ;; + esac +done + +for file +do + if test -d "$file"; then + shift + else + break + fi +done + +case $# in + 0) exit 0 ;; +esac + +# Solaris 8's mkdir -p isn't thread-safe. If you mkdir -p a/b and +# mkdir -p a/c at the same time, both will detect that a is missing, +# one will create a, then the other will try to create a and die with +# a "File exists" error. This is a problem when calling mkinstalldirs +# from a parallel make. We use --version in the probe to restrict +# ourselves to GNU mkdir, which is thread-safe. +case $dirmode in + '') + if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then + echo "mkdir -p -- $*" + exec mkdir -p -- "$@" + else + # On NextStep and OpenStep, the 'mkdir' command does not + # recognize any option. It will interpret all options as + # directories to create, and then abort because '.' already + # exists. + test -d ./-p && rmdir ./-p + test -d ./--version && rmdir ./--version + fi + ;; + *) + if mkdir -m "$dirmode" -p --version . >/dev/null 2>&1 && + test ! -d ./--version; then + echo "mkdir -m $dirmode -p -- $*" + exec mkdir -m "$dirmode" -p -- "$@" + else + # Clean up after NextStep and OpenStep mkdir. + for d in ./-m ./-p ./--version "./$dirmode"; + do + test -d $d && rmdir $d + done + fi + ;; +esac + +for file +do + case $file in + /*) pathcomp=/ ;; + *) pathcomp= ;; + esac + oIFS=$IFS + IFS=/ + set fnord $file + shift + IFS=$oIFS + + for d + do + test "x$d" = x && continue + + pathcomp=$pathcomp$d + case $pathcomp in + -*) pathcomp=./$pathcomp ;; + esac + + if test ! -d "$pathcomp"; then + echo "mkdir $pathcomp" + + mkdir "$pathcomp" || lasterr=$? + + if test ! -d "$pathcomp"; then + errstatus=$lasterr + else + if test ! -z "$dirmode"; then + echo "chmod $dirmode $pathcomp" + lasterr= + chmod "$dirmode" "$pathcomp" || lasterr=$? + + if test ! -z "$lasterr"; then + errstatus=$lasterr + fi + fi + fi + fi + + pathcomp=$pathcomp/ + done +done + +exit $errstatus + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC" +# time-stamp-end: "; # UTC" +# End: diff --git a/gsl-2.5/monte/.deps/miser.Plo b/gsl-2.5/monte/.deps/miser.Plo new file mode 100644 index 00000000..9b3ad834 --- /dev/null +++ b/gsl-2.5/monte/.deps/miser.Plo @@ -0,0 +1,180 @@ +miser.lo: miser.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h /usr/include/stdlib.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_math.h ../gsl/gsl_sys.h \ + ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_rng.h ../gsl/gsl_monte.h ../gsl/gsl_monte_miser.h \ + ../gsl/gsl_monte_plain.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +/usr/include/stdlib.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_rng.h: + +../gsl/gsl_monte.h: + +../gsl/gsl_monte_miser.h: + +../gsl/gsl_monte_plain.h: diff --git a/gsl-2.5/monte/.deps/plain.Plo b/gsl-2.5/monte/.deps/plain.Plo new file mode 100644 index 00000000..ddb6e0b7 --- /dev/null +++ b/gsl-2.5/monte/.deps/plain.Plo @@ -0,0 +1,177 @@ +plain.lo: plain.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_math.h ../gsl/gsl_sys.h \ + ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_rng.h \ + /usr/include/stdlib.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_errno.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_monte_plain.h ../gsl/gsl_monte.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_rng.h: + +/usr/include/stdlib.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_monte_plain.h: + +../gsl/gsl_monte.h: diff --git a/gsl-2.5/monte/.deps/test.Po b/gsl-2.5/monte/.deps/test.Po new file mode 100644 index 00000000..d6761eb4 --- /dev/null +++ b/gsl-2.5/monte/.deps/test.Po @@ -0,0 +1,190 @@ +test.o: test.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../gsl/gsl_math.h ../gsl/gsl_sys.h \ + ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_rng.h ../gsl/gsl_test.h ../gsl/gsl_ieee_utils.h \ + ../gsl/gsl_monte_plain.h ../gsl/gsl_monte.h ../gsl/gsl_monte_miser.h \ + ../gsl/gsl_monte_vegas.h test_main.c + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_rng.h: + +../gsl/gsl_test.h: + +../gsl/gsl_ieee_utils.h: + +../gsl/gsl_monte_plain.h: + +../gsl/gsl_monte.h: + +../gsl/gsl_monte_miser.h: + +../gsl/gsl_monte_vegas.h: + +test_main.c: diff --git a/gsl-2.5/monte/.deps/vegas.Plo b/gsl-2.5/monte/.deps/vegas.Plo new file mode 100644 index 00000000..13ae4d62 --- /dev/null +++ b/gsl-2.5/monte/.deps/vegas.Plo @@ -0,0 +1,177 @@ +vegas.lo: vegas.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../gsl/gsl_math.h ../gsl/gsl_sys.h \ + ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_rng.h /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/byteswap.h \ + /usr/include/bits/byteswap-16.h /usr/include/sys/types.h \ + /usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib-float.h \ + ../gsl/gsl_monte_vegas.h ../gsl/gsl_monte.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +/usr/include/stdio.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_rng.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_monte_vegas.h: + +../gsl/gsl_monte.h: diff --git a/gsl-2.5/monte/.libs/libgslmonte.la b/gsl-2.5/monte/.libs/libgslmonte.la new file mode 120000 index 00000000..a1a34178 --- /dev/null +++ b/gsl-2.5/monte/.libs/libgslmonte.la @@ -0,0 +1 @@ +../libgslmonte.la \ No newline at end of file diff --git a/gsl-2.5/monte/ChangeLog b/gsl-2.5/monte/ChangeLog new file mode 100644 index 00000000..1150fd48 --- /dev/null +++ b/gsl-2.5/monte/ChangeLog @@ -0,0 +1,220 @@ +2009-07-25 Brian Gough + + * vegas.c (gsl_monte_vegas_params_get) + (gsl_monte_vegas_params_set): added get/set functions for params + (gsl_monte_vegas_chisq): added chisq accessor + + * gsl_monte_vegas.h: added separate params struct + + * miser.c (gsl_monte_miser_params_set) + (gsl_monte_miser_params_get): added get/set functions for params + + * gsl_monte_miser.h: added separate params struct + +2009-07-09 Brian Gough + + * vegas.c (gsl_monte_vegas_free): handle NULL argument in free + + * plain.c (gsl_monte_plain_free): handle NULL argument in free + + * miser.c (gsl_monte_miser_free): handle NULL argument in free + +2009-02-10 Brian Gough + + * vegas.c (gsl_monte_vegas_integrate): use gsl_pow_int to compute + tot_boxes, avoids potentially inaccurate pow functions (MinGW). + +2008-11-20 Brian Gough + + * vegas.c (gsl_monte_vegas_integrate): improve the chisq + calculation to avoid cancellation errors in the original + formula (fixes bug #24510) + + * test.c (MONTE_ERROR_TEST): added test cases for negative chisq + in vegas + +2008-07-03 Brian Gough + + * Makefile.am (INCLUDES): use top_srcdir instead of top_builddir + +2008-04-26 Brian Gough + + * vegas.c (gsl_monte_vegas_integrate): compute running totals as + volatile double to prevent problems with excess precision, use + meaningful variable names for sum of squares, variance and sigma. + + * test_main.c: compute the ensemble mean more accurately for the tests + + * test.c: added a test for warm-start vegas, as well as cold-start + + * miser.c (gsl_monte_miser_integrate): catch zero weights to avoid + division by zero + + * test.c (main): added test for step-type function + +2004-06-02 Brian Gough + + * test_main.c: handle the case where sd==0 && error[i] !=0 more + carefully + +Mon Apr 23 13:23:47 2001 Brian Gough + + * test_main.c: removed unused status variable + +Sat Jan 6 19:56:49 2001 Brian Gough + + * miser.c (gsl_monte_miser_free): fixed memory leak for s->hits_{r,l} + + * vegas.c (gsl_monte_vegas_free): fixed memory leak for s->x + +Fri Dec 22 21:43:04 2000 Brian Gough + + * miser.c: removed max-min estimation method for subvolumes. We + will use the standard variance method and try to use a sufficient + number of points to estimate the variance reliably. + +Wed Dec 20 21:32:40 2000 Brian Gough + + * vegas.c: tidied up the algorithm, deal with cases of sigma = 0 + explicitly. + +Sat Dec 9 14:19:53 2000 Brian Gough + + * reorganization and clean up + +Thu Nov 16 19:50:27 2000 Brian Gough + + * miser.c: rewrite to fix overflows and make calling conventions + consistent + + * plain.c: rewrite to fix overflows and make calling conventions + consistent + +Thu Oct 26 20:06:36 2000 Brian Gough + + * plain.c (gsl_monte_plain_integrate): integer factor + calls*(calls-1) used in numerical expression can easily overflow, + changed to calls*(calls-1.0). + +Sat Oct 21 20:36:06 2000 Brian Gough + + * miser.c (gsl_monte_miser_integrate): fixed bug where hits_l was + used in place of hits_r + +Tue Sep 19 19:16:37 2000 Brian Gough + + * plain.c (gsl_monte_plain_alloc): initialise check_done to avoid + warning about use of unitialised memory + + * vegas.c (gsl_monte_vegas_alloc): as above + + * miser.c (gsl_monte_miser_alloc): as above + + * plain.c miser.c: removed use of sprintf for error messages + +Wed May 31 19:50:19 2000 Brian Gough + + * miser_test.c (main): increased tolerances to allow tests to pass + with different compilers + +Mon May 15 15:26:22 2000 Brian Gough + + * vegas_test.c (main): added gsl_ieee_env_setup() to allow change + of precision in tests + + * miser_test.c (main): ditto + + * plain_test.c (main): ditto + +Fri Feb 26 14:49:56 1999 Brian Gough + + * Makefile.am: removed ..._LDFLAGS = -static since this is + specific to gcc + + + +Wed Nov 18 10:59:56 1998 Brian Gough + + * use standard headers templates_on.h and templates_off.h instead + of source.h + +Tue Nov 17 16:49:12 1998 Brian Gough + + * added #include to all top-level source files + + * plain.c (gsl_monte_plain_integrate): replaced myMAX by GSL_MAX + + * utils.c: move macros around to avoid double definition + +Fri Aug 14 10:12:06 1998 Brian Gough + + * Makefile.am: I needed to add utils.h to libgslmonte_a_SOURCES to + get it to work with my automake + +Thu Jul 30 17:31:29 1998 booth + + * gsl_monte_miser.h, miser.c: + Turn off the annoying warning in miser unless the user requests it. + +Wed Jul 29 20:24:54 1998 bjg + + * Makefile.am, Makefile.in: some fixes to pass make distcheck + + * Makefile.am, Makefile.in: + experimenting with new top level makefile.am + +Tue Jul 28 17:05:20 1998 booth + + * plain.c, vegas.c, miser.c: + make all the _free functions check their argument. Also, the init functions + now throw EFAULT if given a null pointer. + + * gsl_monte_vegas.h, vegas.c: + vegas1, vegas2 and vegas3 all go away. Get them by setting the "stage" + variabe appropriately. Also, make _free check its argument. + + * vegas.c, gsl_monte_vegas.h: minor cleanup prior to be change. + + * vegas.c: minor changes, commiting by accident. + +Mon Jul 27 22:52:49 1998 bjg + + * Makefile.in, Makefile.am: + fixed some of the include requirements for make dist + +Mon Jul 27 15:19:54 1998 booth + + * vegas_print.h, vegas_test.c, miser_test.c, vegas-print.c, vegas.c, Attic/gsl_vegas.h, Attic/gsl_vegas_print.h, gsl_monte_vegas.h, miser.c, Attic/gsl_miser.h, Makefile.am, Makefile.in, gsl_monte_miser.h: + Renamed public header files to follow convention correctly. + + * vegas.c, vegas_test.c, miser.c, miser_test.c, plain.c, plain_test.c, Attic/gsl_miser.h, Attic/gsl_vegas.h, gsl_monte_plain.h: + All the integration functions now end with _integrate (except for + vegas1, vegas2 and vegas3 which are going away RSN). + +Tue Jul 21 21:54:33 1998 booth + + * vegas.c, vegas-print.c, Attic/gsl_vegas_print.h, Attic/gsl_vegas.h: + trivial stuff: eliminate compiler warnings, eliminate some unneeded variables, + change some types to make consistent with plain and miser. + + * gsl_monte_plain.h, plain.c, plain_test.c: + Make "plain" conform to same style as miser and vegas. + +Fri Jul 17 02:23:40 1998 jungman + + * Makefile.in: we're gonna make it... + +Thu Jul 16 16:23:45 1998 booth + + * vegas-print.c, vegas.c, Attic/gsl_vegas_print.h: + Have now completely eliminated all static variables. + + * vegas_test.c, vegas.c, Attic/gsl_vegas.h, Attic/gsl_vegas_print.h, vegas-print.c: + Continuing to remove all static variables from vegas. + +Wed Jul 15 19:10:24 1998 booth + + * vegas.c, vegas_test.c, Attic/gsl_vegas.h: + Do the state-structure thing for vegas. Not finished, so far the only + real content is the rng structure. + diff --git a/gsl-2.5/monte/Makefile b/gsl-2.5/monte/Makefile new file mode 100644 index 00000000..b4729508 --- /dev/null +++ b/gsl-2.5/monte/Makefile @@ -0,0 +1,1031 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# monte/Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + + + + +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/gsl +pkgincludedir = $(includedir)/gsl +pkglibdir = $(libdir)/gsl +pkglibexecdir = $(libexecdir)/gsl +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = x86_64-unknown-linux-gnu +host_triplet = x86_64-unknown-linux-gnu +check_PROGRAMS = test$(EXEEXT) +subdir = monte +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp \ + $(noinst_HEADERS) $(pkginclude_HEADERS) \ + $(top_srcdir)/test-driver ChangeLog README TODO +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +libgslmonte_la_LIBADD = +am_libgslmonte_la_OBJECTS = miser.lo plain.lo vegas.lo +libgslmonte_la_OBJECTS = $(am_libgslmonte_la_OBJECTS) +AM_V_lt = $(am__v_lt_$(V)) +am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) +am__v_lt_0 = --silent +am__v_lt_1 = +am_test_OBJECTS = test.$(OBJEXT) +test_OBJECTS = $(am_test_OBJECTS) +test_DEPENDENCIES = libgslmonte.la ../rng/libgslrng.la \ + ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la \ + ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la +AM_V_P = $(am__v_P_$(V)) +am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY)) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_$(V)) +am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_$(V)) +am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I. -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_$(V)) +am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_$(V)) +am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libgslmonte_la_SOURCES) $(test_SOURCES) +DIST_SOURCES = $(libgslmonte_la_SOURCES) $(test_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(pkgincludedir)" +HEADERS = $(noinst_HEADERS) $(pkginclude_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = .test +LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing aclocal-1.13 +AMTAR = $${TAR-tar} +AM_DEFAULT_VERBOSITY = 1 +AR = ar +AS = as +AUTOCONF = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing autoconf +AUTOHEADER = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing autoheader +AUTOMAKE = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing automake-1.13 +AWK = gawk +CC = gcc +CCDEPMODE = depmode=gcc3 +CFLAGS = -g -O2 +CPP = gcc -E +CPPFLAGS = +CYGPATH_W = echo +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +DLLTOOL = false +DSYMUTIL = +DUMPBIN = +ECHO_C = +ECHO_N = -n +ECHO_T = +EGREP = /usr/bin/grep -E +EXEEXT = +FGREP = /usr/bin/grep -F +GREP = /usr/bin/grep +GSLCBLAS_LDFLAGS = +GSL_CFLAGS = -I${prefix}/include +GSL_LDFLAGS = +GSL_LIBADD = +GSL_LIBM = -lm +GSL_LIBS = -L${exec_prefix}/lib -lgsl +GSL_LT_CBLAS_VERSION = 0:0:0 +GSL_LT_VERSION = 24:0:1 +GSL_MAJOR_VERSION = 2 +GSL_MINOR_VERSION = 5 +HAVE_AIX_IEEE_INTERFACE = +HAVE_DARWIN86_IEEE_INTERFACE = +HAVE_DARWIN_IEEE_INTERFACE = +HAVE_FREEBSD_IEEE_INTERFACE = +HAVE_GNUM68K_IEEE_INTERFACE = +HAVE_GNUPPC_IEEE_INTERFACE = +HAVE_GNUSPARC_IEEE_INTERFACE = +HAVE_GNUX86_IEEE_INTERFACE = +HAVE_HPUX11_IEEE_INTERFACE = +HAVE_HPUX_IEEE_INTERFACE = +HAVE_IRIX_IEEE_INTERFACE = +HAVE_NETBSD_IEEE_INTERFACE = +HAVE_OPENBSD_IEEE_INTERFACE = +HAVE_OS2EMX_IEEE_INTERFACE = +HAVE_SOLARIS_IEEE_INTERFACE = +HAVE_SUNOS4_IEEE_INTERFACE = +HAVE_TRU64_IEEE_INTERFACE = +INSTALL = /usr/bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = $(install_sh) -c -s +LD = /usr/bin/ld -m elf_x86_64 +LDFLAGS = +LIBM = -lm +LIBOBJS = +LIBS = -lm +LIBTOOL = $(SHELL) $(top_builddir)/libtool +LIPO = +LN_S = ln -s +LTLIBOBJS = +MAINT = # +MAKEINFO = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing makeinfo +MANIFEST_TOOL = : +MKDIR_P = /usr/bin/mkdir -p +NM = /usr/bin/nm -B +NMEDIT = +OBJDUMP = objdump +OBJEXT = o +OTOOL = +OTOOL64 = +PACKAGE = gsl +PACKAGE_BUGREPORT = +PACKAGE_NAME = gsl +PACKAGE_STRING = gsl 2.5 +PACKAGE_TARNAME = gsl +PACKAGE_URL = +PACKAGE_VERSION = 2.5 +PATH_SEPARATOR = : +RANLIB = ranlib +SED = /usr/bin/sed +SET_MAKE = +SHELL = /bin/sh +STRIP = strip +VERSION = 2.5 +abs_builddir = /home/groups/kipac/chto/package/gsl/gsl-2.5/monte +abs_srcdir = /home/groups/kipac/chto/package/gsl/gsl-2.5/monte +abs_top_builddir = /home/groups/kipac/chto/package/gsl/gsl-2.5 +abs_top_srcdir = /home/groups/kipac/chto/package/gsl/gsl-2.5 +ac_ct_AR = ar +ac_ct_CC = gcc +ac_ct_DUMPBIN = +am__include = include +am__leading_dot = . +am__quote = +am__tar = $${TAR-tar} chof - "$$tardir" +am__untar = $${TAR-tar} xf - +bindir = ${exec_prefix}/bin +build = x86_64-unknown-linux-gnu +build_alias = +build_cpu = x86_64 +build_os = linux-gnu +build_vendor = unknown +builddir = . +datadir = ${datarootdir} +datarootdir = ${prefix}/share +docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} +dvidir = ${docdir} +exec_prefix = ${prefix} +host = x86_64-unknown-linux-gnu +host_alias = +host_cpu = x86_64 +host_os = linux-gnu +host_vendor = unknown +htmldir = ${docdir} +includedir = ${prefix}/include +infodir = ${datarootdir}/info +install_sh = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/install-sh +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +localedir = ${datarootdir}/locale +localstatedir = ${prefix}/var +mandir = ${datarootdir}/man +mkdir_p = $(MKDIR_P) +oldincludedir = /usr/include +pdfdir = ${docdir} +prefix = /home/groups/kipac/chto/package/gsl/gsl_lib +program_transform_name = s,x,x, +psdir = ${docdir} +sbindir = ${exec_prefix}/sbin +sharedstatedir = ${prefix}/com +srcdir = . +sysconfdir = ${prefix}/etc +target_alias = +top_build_prefix = ../ +top_builddir = .. +top_srcdir = .. +noinst_LTLIBRARIES = libgslmonte.la +libgslmonte_la_SOURCES = miser.c plain.c gsl_monte_vegas.h gsl_monte_miser.h gsl_monte_plain.h gsl_monte.h vegas.c +pkginclude_HEADERS = gsl_monte.h gsl_monte_vegas.h gsl_monte_miser.h gsl_monte_plain.h +AM_CPPFLAGS = -I$(top_srcdir) +TESTS = $(check_PROGRAMS) +test_SOURCES = test.c +test_LDADD = libgslmonte.la ../rng/libgslrng.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la +noinst_HEADERS = test_main.c +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu monte/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu monte/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: # $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): # $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libgslmonte.la: $(libgslmonte_la_OBJECTS) $(libgslmonte_la_DEPENDENCIES) $(EXTRA_libgslmonte_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(libgslmonte_la_OBJECTS) $(libgslmonte_la_LIBADD) $(LIBS) + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) $(EXTRA_test_DEPENDENCIES) + @rm -f test$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_OBJECTS) $(test_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +include ./$(DEPDIR)/miser.Plo +include ./$(DEPDIR)/plain.Plo +include ./$(DEPDIR)/test.Po +include ./$(DEPDIR)/vegas.Plo + +.c.o: + $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# $(AM_V_CC)source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(COMPILE) -c $< + +.c.obj: + $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# $(AM_V_CC)source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: + $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +# $(AM_V_CC)source='$<' object='$@' libtool=yes \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-pkgincludeHEADERS: $(pkginclude_HEADERS) + @$(NORMAL_INSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \ + done + +uninstall-pkgincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + else \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_PROGRAMS) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +test.log: test$(EXEEXT) + @p='test$(EXEEXT)'; \ + b='test'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +#.test$(EXEEXT).log: +# @p='$<'; \ +# $(am__set_b); \ +# $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +# --log-file $$b.log --trs-file $$b.trs \ +# $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +# "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-am +all-am: Makefile $(LTLIBRARIES) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(pkgincludedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-pkgincludeHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-pkgincludeHEADERS + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES cscopelist-am ctags ctags-am distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-pkgincludeHEADERS \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + recheck tags tags-am uninstall uninstall-am \ + uninstall-pkgincludeHEADERS + + +#demo_SOURCES= demo.c +#demo_LDADD = libgslmonte.la ../rng/libgslrng.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../utils/libutils.la + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gsl-2.5/monte/Makefile.am b/gsl-2.5/monte/Makefile.am new file mode 100644 index 00000000..53dae42d --- /dev/null +++ b/gsl-2.5/monte/Makefile.am @@ -0,0 +1,21 @@ +noinst_LTLIBRARIES = libgslmonte.la + +libgslmonte_la_SOURCES = miser.c plain.c gsl_monte_vegas.h gsl_monte_miser.h gsl_monte_plain.h gsl_monte.h vegas.c + +pkginclude_HEADERS = gsl_monte.h gsl_monte_vegas.h gsl_monte_miser.h gsl_monte_plain.h + +AM_CPPFLAGS = -I$(top_srcdir) + +TESTS = $(check_PROGRAMS) + +check_PROGRAMS = test #demo + +test_SOURCES = test.c +test_LDADD = libgslmonte.la ../rng/libgslrng.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la + +noinst_HEADERS = test_main.c + +#demo_SOURCES= demo.c +#demo_LDADD = libgslmonte.la ../rng/libgslrng.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../utils/libutils.la + + diff --git a/gsl-2.5/monte/Makefile.in b/gsl-2.5/monte/Makefile.in new file mode 100644 index 00000000..b001cea8 --- /dev/null +++ b/gsl-2.5/monte/Makefile.in @@ -0,0 +1,1031 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + + +VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +check_PROGRAMS = test$(EXEEXT) +subdir = monte +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp \ + $(noinst_HEADERS) $(pkginclude_HEADERS) \ + $(top_srcdir)/test-driver ChangeLog README TODO +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +libgslmonte_la_LIBADD = +am_libgslmonte_la_OBJECTS = miser.lo plain.lo vegas.lo +libgslmonte_la_OBJECTS = $(am_libgslmonte_la_OBJECTS) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +am_test_OBJECTS = test.$(OBJEXT) +test_OBJECTS = $(am_test_OBJECTS) +test_DEPENDENCIES = libgslmonte.la ../rng/libgslrng.la \ + ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la \ + ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libgslmonte_la_SOURCES) $(test_SOURCES) +DIST_SOURCES = $(libgslmonte_la_SOURCES) $(test_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(pkgincludedir)" +HEADERS = $(noinst_HEADERS) $(pkginclude_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = @EXEEXT@ .test +LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +GSLCBLAS_LDFLAGS = @GSLCBLAS_LDFLAGS@ +GSL_CFLAGS = @GSL_CFLAGS@ +GSL_LDFLAGS = @GSL_LDFLAGS@ +GSL_LIBADD = @GSL_LIBADD@ +GSL_LIBM = @GSL_LIBM@ +GSL_LIBS = @GSL_LIBS@ +GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ +GSL_LT_VERSION = @GSL_LT_VERSION@ +GSL_MAJOR_VERSION = @GSL_MAJOR_VERSION@ +GSL_MINOR_VERSION = @GSL_MINOR_VERSION@ +HAVE_AIX_IEEE_INTERFACE = @HAVE_AIX_IEEE_INTERFACE@ +HAVE_DARWIN86_IEEE_INTERFACE = @HAVE_DARWIN86_IEEE_INTERFACE@ +HAVE_DARWIN_IEEE_INTERFACE = @HAVE_DARWIN_IEEE_INTERFACE@ +HAVE_FREEBSD_IEEE_INTERFACE = @HAVE_FREEBSD_IEEE_INTERFACE@ +HAVE_GNUM68K_IEEE_INTERFACE = @HAVE_GNUM68K_IEEE_INTERFACE@ +HAVE_GNUPPC_IEEE_INTERFACE = @HAVE_GNUPPC_IEEE_INTERFACE@ +HAVE_GNUSPARC_IEEE_INTERFACE = @HAVE_GNUSPARC_IEEE_INTERFACE@ +HAVE_GNUX86_IEEE_INTERFACE = @HAVE_GNUX86_IEEE_INTERFACE@ +HAVE_HPUX11_IEEE_INTERFACE = @HAVE_HPUX11_IEEE_INTERFACE@ +HAVE_HPUX_IEEE_INTERFACE = @HAVE_HPUX_IEEE_INTERFACE@ +HAVE_IRIX_IEEE_INTERFACE = @HAVE_IRIX_IEEE_INTERFACE@ +HAVE_NETBSD_IEEE_INTERFACE = @HAVE_NETBSD_IEEE_INTERFACE@ +HAVE_OPENBSD_IEEE_INTERFACE = @HAVE_OPENBSD_IEEE_INTERFACE@ +HAVE_OS2EMX_IEEE_INTERFACE = @HAVE_OS2EMX_IEEE_INTERFACE@ +HAVE_SOLARIS_IEEE_INTERFACE = @HAVE_SOLARIS_IEEE_INTERFACE@ +HAVE_SUNOS4_IEEE_INTERFACE = @HAVE_SUNOS4_IEEE_INTERFACE@ +HAVE_TRU64_IEEE_INTERFACE = @HAVE_TRU64_IEEE_INTERFACE@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBM = @LIBM@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +noinst_LTLIBRARIES = libgslmonte.la +libgslmonte_la_SOURCES = miser.c plain.c gsl_monte_vegas.h gsl_monte_miser.h gsl_monte_plain.h gsl_monte.h vegas.c +pkginclude_HEADERS = gsl_monte.h gsl_monte_vegas.h gsl_monte_miser.h gsl_monte_plain.h +AM_CPPFLAGS = -I$(top_srcdir) +TESTS = $(check_PROGRAMS) +test_SOURCES = test.c +test_LDADD = libgslmonte.la ../rng/libgslrng.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la +noinst_HEADERS = test_main.c +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu monte/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu monte/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libgslmonte.la: $(libgslmonte_la_OBJECTS) $(libgslmonte_la_DEPENDENCIES) $(EXTRA_libgslmonte_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(libgslmonte_la_OBJECTS) $(libgslmonte_la_LIBADD) $(LIBS) + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) $(EXTRA_test_DEPENDENCIES) + @rm -f test$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_OBJECTS) $(test_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/miser.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/plain.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vegas.Plo@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-pkgincludeHEADERS: $(pkginclude_HEADERS) + @$(NORMAL_INSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \ + done + +uninstall-pkgincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + else \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_PROGRAMS) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +test.log: test$(EXEEXT) + @p='test$(EXEEXT)'; \ + b='test'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +@am__EXEEXT_TRUE@.test$(EXEEXT).log: +@am__EXEEXT_TRUE@ @p='$<'; \ +@am__EXEEXT_TRUE@ $(am__set_b); \ +@am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +@am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ +@am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +@am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-am +all-am: Makefile $(LTLIBRARIES) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(pkgincludedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-pkgincludeHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-pkgincludeHEADERS + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES cscopelist-am ctags ctags-am distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-pkgincludeHEADERS \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + recheck tags tags-am uninstall uninstall-am \ + uninstall-pkgincludeHEADERS + + +#demo_SOURCES= demo.c +#demo_LDADD = libgslmonte.la ../rng/libgslrng.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../utils/libutils.la + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gsl-2.5/monte/README b/gsl-2.5/monte/README new file mode 100644 index 00000000..9658d7bb --- /dev/null +++ b/gsl-2.5/monte/README @@ -0,0 +1,37 @@ +G. P. Lepage, "VEGAS..." J. Comp. Phys. 27, 192(1978). +W.H. Press, G.R. Farrar, "Miser..." Computers in Physics, v4 (1990), pp190-195 + +References from PVEGAS by Richard Kreckel + +[1]: G.P. Lepage: A New Algorithm for Adaptive Multidimensional + Integration; Journal of Computational Physics 27, + 192-203, (1978) + +[2]: W. Press, S. Teukolsky, W. Vetterling, B. Flannery: Numerical + Recipes in C, (second edition) Cambridge University Press, + 1992. + +[3]: R.C. Tausworthe: Random numbers generated by linear + recurrence modulo two, Math. Comput. 19, 201-209, (1965) + +[4]: I. Deak: Uniform random number generators for parallel + computers; Parallel Computing, 15, 155-164, (1990) + +[5]: R. Kreckel: Parallelization of adaptive MC integrators, + MZ-TH/97-30, physics/9710028; Comp. Phys. Comm., 106, 258-266, + (1997) (A preliminary version of this article can be retrieved + via anonymous ftp from ftpthep.physik.uni-mainz.de in the directory + /pub/pvegas/.) + +[6]: S. Veseli: Multidimensional integration in a heterogeneous + network environment; FERMILAB-PUB-97/271-T; physics/9710017 + +[7]: R. Kreckel: Addendum: Parallelization of adaptive MC integrators, + (Available via anonymous ftp from ftpthep.physik.uni-mainz.de in + the directory /pub/pvegas/.) + +[8]: MPI-Forum: MPI: A Message-Passing Interface Standard, University + of Tennessee, Knoxville, Tennessee, (1995) + +[9]: T. Ohl: Vegas Revisited: Adaptive Monte Carlo Integration Beyond + Factorization; hep-ph/9806432 diff --git a/gsl-2.5/monte/TODO b/gsl-2.5/monte/TODO new file mode 100644 index 00000000..7b7a070c --- /dev/null +++ b/gsl-2.5/monte/TODO @@ -0,0 +1,28 @@ +# -*- org -*- +#+CATEGORY: monte + +* Add Lattice Method and Quasi-random Method to monte carlo integration + +* Fix the "No-points in left/right half space" error in miser. Random +errors like that are discouraged in a library. The routine should +iterate over the dimensions choosing a point on each side of the +bisection to ensure that the error does not occur. + +* VEGAS could estimate its roundoff error, caused by dividing up into +many boxes and then summing (I know this is ridiculous for any +realistic case, but it shows up on the tests when integrating a +constant!). In particular, there are some failures reported for the +VEGAS constant tests on Windows. + +* VEGAS gives a negative chisq for some cases where there are wildly +inconsistent values. Calculation should be improved so that chisq>=0. + +Also, when there are inconsistent values it might make sense to scale +the error by chisq, as is often done experimentally -- at least that +way the error would be increased. + +* The original VEGAS allowed to user to calculate other weighted +quantities. The appropriate way to implement it in GSL would be to +provide a separate routine which returns sample points and weights so +that the user can caculate any quantity. + diff --git a/gsl-2.5/monte/gsl_monte.h b/gsl-2.5/monte/gsl_monte.h new file mode 100644 index 00000000..4d1d88e2 --- /dev/null +++ b/gsl-2.5/monte/gsl_monte.h @@ -0,0 +1,55 @@ +/* monte/gsl_monte.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Michael Booth + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Some things common to all the Monte-Carlo implementations */ +/* Author: MJB */ + +#ifndef __GSL_MONTE_H__ +#define __GSL_MONTE_H__ + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +/* Hide the function type in a typedef so that we can use it in all our + integration functions, and make it easy to change things. +*/ + +struct gsl_monte_function_struct { + double (*f)(double * x_array, size_t dim, void * params); + size_t dim; + void * params; +}; + +typedef struct gsl_monte_function_struct gsl_monte_function; + +#define GSL_MONTE_FN_EVAL(F,x) (*((F)->f))(x,(F)->dim,(F)->params) + + +__END_DECLS + +#endif /* __GSL_MONTE_H__ */ diff --git a/gsl-2.5/monte/gsl_monte_miser.h b/gsl-2.5/monte/gsl_monte_miser.h new file mode 100644 index 00000000..5940396d --- /dev/null +++ b/gsl-2.5/monte/gsl_monte_miser.h @@ -0,0 +1,97 @@ +/* monte/gsl_monte_miser.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Michael Booth + * Copyright (C) 2009 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: MJB */ + +#ifndef __GSL_MONTE_MISER_H__ +#define __GSL_MONTE_MISER_H__ + +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +typedef struct { + size_t min_calls; + size_t min_calls_per_bisection; + double dither; + double estimate_frac; + double alpha; + size_t dim; + int estimate_style; + int depth; + int verbose; + double * x; + double * xmid; + double * sigma_l; + double * sigma_r; + double * fmax_l; + double * fmax_r; + double * fmin_l; + double * fmin_r; + double * fsum_l; + double * fsum_r; + double * fsum2_l; + double * fsum2_r; + size_t * hits_l; + size_t * hits_r; +} gsl_monte_miser_state; + +int gsl_monte_miser_integrate(gsl_monte_function * f, + const double xl[], const double xh[], + size_t dim, size_t calls, + gsl_rng *r, + gsl_monte_miser_state* state, + double *result, double *abserr); + +gsl_monte_miser_state* gsl_monte_miser_alloc(size_t dim); + +int gsl_monte_miser_init(gsl_monte_miser_state* state); + +void gsl_monte_miser_free(gsl_monte_miser_state* state); + +typedef struct { + double estimate_frac; + size_t min_calls; + size_t min_calls_per_bisection; + double alpha; + double dither; +} gsl_monte_miser_params; + +void gsl_monte_miser_params_get (const gsl_monte_miser_state * state, + gsl_monte_miser_params * params); + +void gsl_monte_miser_params_set (gsl_monte_miser_state * state, + const gsl_monte_miser_params * params); + +__END_DECLS + +#endif /* __GSL_MONTE_MISER_H__ */ diff --git a/gsl-2.5/monte/gsl_monte_plain.h b/gsl-2.5/monte/gsl_monte_plain.h new file mode 100644 index 00000000..c4745b97 --- /dev/null +++ b/gsl-2.5/monte/gsl_monte_plain.h @@ -0,0 +1,65 @@ +/* monte/gsl_monte_plain.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Michael Booth + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Plain Monte-Carlo. */ + +/* Author: MJB */ + +#ifndef __GSL_MONTE_PLAIN_H__ +#define __GSL_MONTE_PLAIN_H__ + +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +typedef struct { + size_t dim; + double *x; +} gsl_monte_plain_state; + +int +gsl_monte_plain_integrate (const gsl_monte_function * f, + const double xl[], const double xu[], + const size_t dim, + const size_t calls, + gsl_rng * r, + gsl_monte_plain_state * state, + double *result, double *abserr); + +gsl_monte_plain_state* gsl_monte_plain_alloc(size_t dim); + +int gsl_monte_plain_init(gsl_monte_plain_state* state); + +void gsl_monte_plain_free (gsl_monte_plain_state* state); + +__END_DECLS + +#endif /* __GSL_MONTE_PLAIN_H__ */ diff --git a/gsl-2.5/monte/gsl_monte_vegas.h b/gsl-2.5/monte/gsl_monte_vegas.h new file mode 100644 index 00000000..0942c04d --- /dev/null +++ b/gsl-2.5/monte/gsl_monte_vegas.h @@ -0,0 +1,125 @@ +/* monte/gsl_monte_vegas.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Michael Booth + * Copyright (C) 2009 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* header for the gsl "vegas" routines. Mike Booth, May 1998 */ + +#ifndef __GSL_MONTE_VEGAS_H__ +#define __GSL_MONTE_VEGAS_H__ + +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +enum {GSL_VEGAS_MODE_IMPORTANCE = 1, + GSL_VEGAS_MODE_IMPORTANCE_ONLY = 0, + GSL_VEGAS_MODE_STRATIFIED = -1}; + +typedef struct { + /* grid */ + size_t dim; + size_t bins_max; + unsigned int bins; + unsigned int boxes; /* these are both counted along the axes */ + double * xi; + double * xin; + double * delx; + double * weight; + double vol; + + double * x; + int * bin; + int * box; + + /* distribution */ + double * d; + + /* control variables */ + double alpha; + int mode; + int verbose; + unsigned int iterations; + int stage; + + /* scratch variables preserved between calls to vegas1/2/3 */ + double jac; + double wtd_int_sum; + double sum_wgts; + double chi_sum; + double chisq; + + double result; + double sigma; + + unsigned int it_start; + unsigned int it_num; + unsigned int samples; + unsigned int calls_per_box; + + FILE * ostream; + +} gsl_monte_vegas_state; + +int gsl_monte_vegas_integrate(gsl_monte_function * f, + double xl[], double xu[], + size_t dim, size_t calls, + gsl_rng * r, + gsl_monte_vegas_state *state, + double* result, double* abserr); + +gsl_monte_vegas_state* gsl_monte_vegas_alloc(size_t dim); + +int gsl_monte_vegas_init(gsl_monte_vegas_state* state); + +void gsl_monte_vegas_free (gsl_monte_vegas_state* state); + +double gsl_monte_vegas_chisq (const gsl_monte_vegas_state* state); +void gsl_monte_vegas_runval (const gsl_monte_vegas_state* state, double * result, double * sigma); + +typedef struct { + double alpha; + size_t iterations; + int stage; + int mode; + int verbose; + FILE * ostream; +} gsl_monte_vegas_params; + +void gsl_monte_vegas_params_get (const gsl_monte_vegas_state * state, + gsl_monte_vegas_params * params); + +void gsl_monte_vegas_params_set (gsl_monte_vegas_state * state, + const gsl_monte_vegas_params * params); + +__END_DECLS + +#endif /* __GSL_MONTE_VEGAS_H__ */ + diff --git a/gsl-2.5/monte/libgslmonte.la b/gsl-2.5/monte/libgslmonte.la new file mode 100644 index 00000000..ee3c5952 --- /dev/null +++ b/gsl-2.5/monte/libgslmonte.la @@ -0,0 +1,41 @@ +# libgslmonte.la - a libtool library file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='' + +# Names of this library. +library_names='' + +# The name of the static archive. +old_library='libgslmonte.a' + +# Linker flags that can not go in dependency_libs. +inherited_linker_flags='' + +# Libraries that this one depends upon. +dependency_libs=' -lm' + +# Names of additional weak libraries provided by this library +weak_library_names='' + +# Version information for libgslmonte. +current= +age= +revision= + +# Is this an already installed library? +installed=no + +# Should we warn about portability when linking against -modules? +shouldnotlink=no + +# Files to dlopen/dlpreopen +dlopen='' +dlpreopen='' + +# Directory that this library needs to be installed in: +libdir='' diff --git a/gsl-2.5/monte/miser.c b/gsl-2.5/monte/miser.c new file mode 100644 index 00000000..bb2a88d3 --- /dev/null +++ b/gsl-2.5/monte/miser.c @@ -0,0 +1,709 @@ +/* monte/miser.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Michael Booth + * Copyright (C) 2009 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* MISER. Based on the algorithm described in the following article, + + W.H. Press, G.R. Farrar, "Recursive Stratified Sampling for + Multidimensional Monte Carlo Integration", Computers in Physics, + v4 (1990), pp190-195. + +*/ + +/* Author: MJB */ +/* Modified by Brian Gough 12/2000 */ + +#include +#include +#include + +#include +#include +#include +#include +#include + +static int +estimate_corrmc (gsl_monte_function * f, + const double xl[], const double xu[], + size_t dim, size_t calls, + gsl_rng * r, + gsl_monte_miser_state * state, + double *result, double *abserr, + const double xmid[], double sigma_l[], double sigma_r[]); + + +int +gsl_monte_miser_integrate (gsl_monte_function * f, + const double xl[], const double xu[], + size_t dim, size_t calls, + gsl_rng * r, + gsl_monte_miser_state * state, + double *result, double *abserr) +{ + size_t n, estimate_calls, calls_l, calls_r; + const size_t min_calls = state->min_calls; + size_t i; + size_t i_bisect; + int found_best; + + double res_est = 0, err_est = 0; + double res_r = 0, err_r = 0, res_l = 0, err_l = 0; + double xbi_l, xbi_m, xbi_r, s; + + double vol; + double weight_l, weight_r; + + double *x = state->x; + double *xmid = state->xmid; + double *sigma_l = state->sigma_l, *sigma_r = state->sigma_r; + + if (dim != state->dim) + { + GSL_ERROR ("number of dimensions must match allocated size", GSL_EINVAL); + } + + for (i = 0; i < dim; i++) + { + if (xu[i] <= xl[i]) + { + GSL_ERROR ("xu must be greater than xl", GSL_EINVAL); + } + + if (xu[i] - xl[i] > GSL_DBL_MAX) + { + GSL_ERROR ("Range of integration is too large, please rescale", + GSL_EINVAL); + } + } + + if (state->alpha < 0) + { + GSL_ERROR ("alpha must be non-negative", GSL_EINVAL); + } + + /* Compute volume */ + + vol = 1; + + for (i = 0; i < dim; i++) + { + vol *= xu[i] - xl[i]; + } + + if (calls < state->min_calls_per_bisection) + { + double m = 0.0, q = 0.0; + + if (calls < 2) + { + GSL_ERROR ("insufficient calls for subvolume", GSL_EFAILED); + } + + for (n = 0; n < calls; n++) + { + /* Choose a random point in the integration region */ + + for (i = 0; i < dim; i++) + { + x[i] = xl[i] + gsl_rng_uniform_pos (r) * (xu[i] - xl[i]); + } + + { + double fval = GSL_MONTE_FN_EVAL (f, x); + + /* recurrence for mean and variance */ + + double d = fval - m; + m += d / (n + 1.0); + q += d * d * (n / (n + 1.0)); + } + } + + *result = vol * m; + + *abserr = vol * sqrt (q / (calls * (calls - 1.0))); + + return GSL_SUCCESS; + } + + estimate_calls = GSL_MAX (min_calls, calls * (state->estimate_frac)); + + if (estimate_calls < 4 * dim) + { + GSL_ERROR ("insufficient calls to sample all halfspaces", GSL_ESANITY); + } + + /* Flip coins to bisect the integration region with some fuzz */ + + for (i = 0; i < dim; i++) + { + s = (gsl_rng_uniform (r) - 0.5) >= 0.0 ? state->dither : -state->dither; + state->xmid[i] = (0.5 + s) * xl[i] + (0.5 - s) * xu[i]; + } + + /* The idea is to chose the direction to bisect based on which will + give the smallest total variance. We could (and may do so later) + use MC to compute these variances. But the NR guys simply estimate + the variances by finding the min and max function values + for each half-region for each bisection. */ + + estimate_corrmc (f, xl, xu, dim, estimate_calls, + r, state, &res_est, &err_est, xmid, sigma_l, sigma_r); + + /* We have now used up some calls for the estimation */ + + calls -= estimate_calls; + + /* Now find direction with the smallest total "variance" */ + + { + double best_var = GSL_DBL_MAX; + double beta = 2.0 / (1.0 + state->alpha); + found_best = 0; + i_bisect = 0; + weight_l = weight_r = 1.0; + + for (i = 0; i < dim; i++) + { + if (sigma_l[i] >= 0 && sigma_r[i] >= 0) + { + /* estimates are okay */ + double var = pow (sigma_l[i], beta) + pow (sigma_r[i], beta); + + if (var <= best_var) + { + found_best = 1; + best_var = var; + i_bisect = i; + weight_l = pow (sigma_l[i], beta); + weight_r = pow (sigma_r[i], beta); + + if (weight_l == 0 && weight_r == 0) + { + weight_l = 1; + weight_r = 1; + } + } + } + else + { + if (sigma_l[i] < 0) + { + GSL_ERROR ("no points in left-half space!", GSL_ESANITY); + } + if (sigma_r[i] < 0) + { + GSL_ERROR ("no points in right-half space!", GSL_ESANITY); + } + } + } + } + + if (!found_best) + { + /* All estimates were the same, so chose a direction at random */ + + i_bisect = gsl_rng_uniform_int (r, dim); + } + + xbi_l = xl[i_bisect]; + xbi_m = xmid[i_bisect]; + xbi_r = xu[i_bisect]; + + /* Get the actual fractional sizes of the two "halves", and + distribute the remaining calls among them */ + + { + double fraction_l = fabs ((xbi_m - xbi_l) / (xbi_r - xbi_l)); + double fraction_r = 1 - fraction_l; + + double a = fraction_l * weight_l; + double b = fraction_r * weight_r; + + calls_l = min_calls + (calls - 2 * min_calls) * a / (a + b); + calls_r = min_calls + (calls - 2 * min_calls) * b / (a + b); + } + + /* Compute the integral for the left hand side of the bisection */ + + /* Due to the recursive nature of the algorithm we must allocate + some new memory for each recursive call */ + + { + int status; + + double *xu_tmp = (double *) malloc (dim * sizeof (double)); + + if (xu_tmp == 0) + { + GSL_ERROR_VAL ("out of memory for left workspace", GSL_ENOMEM, 0); + } + + for (i = 0; i < dim; i++) + { + xu_tmp[i] = xu[i]; + } + + xu_tmp[i_bisect] = xbi_m; + + status = gsl_monte_miser_integrate (f, xl, xu_tmp, + dim, calls_l, r, state, + &res_l, &err_l); + free (xu_tmp); + + if (status != GSL_SUCCESS) + { + return status; + } + } + + /* Compute the integral for the right hand side of the bisection */ + + { + int status; + + double *xl_tmp = (double *) malloc (dim * sizeof (double)); + + if (xl_tmp == 0) + { + GSL_ERROR_VAL ("out of memory for right workspace", GSL_ENOMEM, 0); + } + + for (i = 0; i < dim; i++) + { + xl_tmp[i] = xl[i]; + } + + xl_tmp[i_bisect] = xbi_m; + + status = gsl_monte_miser_integrate (f, xl_tmp, xu, + dim, calls_r, r, state, + &res_r, &err_r); + free (xl_tmp); + + if (status != GSL_SUCCESS) + { + return status; + } + } + + *result = res_l + res_r; + *abserr = sqrt (err_l * err_l + err_r * err_r); + + return GSL_SUCCESS; +} + +gsl_monte_miser_state * +gsl_monte_miser_alloc (size_t dim) +{ + gsl_monte_miser_state *s = + (gsl_monte_miser_state *) malloc (sizeof (gsl_monte_miser_state)); + + if (s == 0) + { + GSL_ERROR_VAL ("failed to allocate space for miser state struct", + GSL_ENOMEM, 0); + } + + s->x = (double *) malloc (dim * sizeof (double)); + + if (s->x == 0) + { + free (s); + GSL_ERROR_VAL ("failed to allocate space for x", GSL_ENOMEM, 0); + } + + s->xmid = (double *) malloc (dim * sizeof (double)); + + if (s->xmid == 0) + { + free (s->x); + free (s); + GSL_ERROR_VAL ("failed to allocate space for xmid", GSL_ENOMEM, 0); + } + + s->sigma_l = (double *) malloc (dim * sizeof (double)); + + if (s->sigma_l == 0) + { + free (s->xmid); + free (s->x); + free (s); + GSL_ERROR_VAL ("failed to allocate space for sigma_l", GSL_ENOMEM, 0); + } + + s->sigma_r = (double *) malloc (dim * sizeof (double)); + + if (s->sigma_r == 0) + { + free (s->sigma_l); + free (s->xmid); + free (s->x); + free (s); + GSL_ERROR_VAL ("failed to allocate space for sigma_r", GSL_ENOMEM, 0); + } + + s->fmax_l = (double *) malloc (dim * sizeof (double)); + + if (s->fmax_l == 0) + { + free (s->sigma_r); + free (s->sigma_l); + free (s->xmid); + free (s->x); + free (s); + GSL_ERROR_VAL ("failed to allocate space for fmax_l", GSL_ENOMEM, 0); + } + + s->fmax_r = (double *) malloc (dim * sizeof (double)); + + if (s->fmax_r == 0) + { + free (s->fmax_l); + free (s->sigma_r); + free (s->sigma_l); + free (s->xmid); + free (s->x); + free (s); + GSL_ERROR_VAL ("failed to allocate space for fmax_r", GSL_ENOMEM, 0); + } + + s->fmin_l = (double *) malloc (dim * sizeof (double)); + + if (s->fmin_l == 0) + { + free (s->fmax_r); + free (s->fmax_l); + free (s->sigma_r); + free (s->sigma_l); + free (s->xmid); + free (s->x); + free (s); + GSL_ERROR_VAL ("failed to allocate space for fmin_l", GSL_ENOMEM, 0); + } + + s->fmin_r = (double *) malloc (dim * sizeof (double)); + + if (s->fmin_r == 0) + { + free (s->fmin_l); + free (s->fmax_r); + free (s->fmax_l); + free (s->sigma_r); + free (s->sigma_l); + free (s->xmid); + free (s->x); + free (s); + GSL_ERROR_VAL ("failed to allocate space for fmin_r", GSL_ENOMEM, 0); + } + + s->fsum_l = (double *) malloc (dim * sizeof (double)); + + if (s->fsum_l == 0) + { + free (s->fmin_r); + free (s->fmin_l); + free (s->fmax_r); + free (s->fmax_l); + free (s->sigma_r); + free (s->sigma_l); + free (s->xmid); + free (s->x); + free (s); + GSL_ERROR_VAL ("failed to allocate space for fsum_l", GSL_ENOMEM, 0); + } + + s->fsum_r = (double *) malloc (dim * sizeof (double)); + + if (s->fsum_r == 0) + { + free (s->fsum_l); + free (s->fmin_r); + free (s->fmin_l); + free (s->fmax_r); + free (s->fmax_l); + free (s->sigma_r); + free (s->sigma_l); + free (s->xmid); + free (s->x); + free (s); + GSL_ERROR_VAL ("failed to allocate space for fsum_r", GSL_ENOMEM, 0); + } + + s->fsum2_l = (double *) malloc (dim * sizeof (double)); + + if (s->fsum2_l == 0) + { + free (s->fsum_r); + free (s->fsum_l); + free (s->fmin_r); + free (s->fmin_l); + free (s->fmax_r); + free (s->fmax_l); + free (s->sigma_r); + free (s->sigma_l); + free (s->xmid); + free (s->x); + free (s); + GSL_ERROR_VAL ("failed to allocate space for fsum2_l", GSL_ENOMEM, 0); + } + + s->fsum2_r = (double *) malloc (dim * sizeof (double)); + + if (s->fsum2_r == 0) + { + free (s->fsum2_l); + free (s->fsum_r); + free (s->fsum_l); + free (s->fmin_r); + free (s->fmin_l); + free (s->fmax_r); + free (s->fmax_l); + free (s->sigma_r); + free (s->sigma_l); + free (s->xmid); + free (s->x); + free (s); + GSL_ERROR_VAL ("failed to allocate space for fsum2_r", GSL_ENOMEM, 0); + } + + + s->hits_r = (size_t *) malloc (dim * sizeof (size_t)); + + if (s->hits_r == 0) + { + free (s->fsum2_r); + free (s->fsum2_l); + free (s->fsum_r); + free (s->fsum_l); + free (s->fmin_r); + free (s->fmin_l); + free (s->fmax_r); + free (s->fmax_l); + free (s->sigma_r); + free (s->sigma_l); + free (s->xmid); + free (s->x); + free (s); + GSL_ERROR_VAL ("failed to allocate space for fsum2_r", GSL_ENOMEM, 0); + } + + s->hits_l = (size_t *) malloc (dim * sizeof (size_t)); + + if (s->hits_l == 0) + { + free (s->hits_r); + free (s->fsum2_r); + free (s->fsum2_l); + free (s->fsum_r); + free (s->fsum_l); + free (s->fmin_r); + free (s->fmin_l); + free (s->fmax_r); + free (s->fmax_l); + free (s->sigma_r); + free (s->sigma_l); + free (s->xmid); + free (s->x); + free (s); + GSL_ERROR_VAL ("failed to allocate space for fsum2_r", GSL_ENOMEM, 0); + } + + s->dim = dim; + + gsl_monte_miser_init (s); + + return s; +} + +int +gsl_monte_miser_init (gsl_monte_miser_state * s) +{ + /* We use 8 points in each halfspace to estimate the variance. There are + 2*dim halfspaces. A variance estimate requires a minimum of 2 points. */ + s->min_calls = 16 * s->dim; + s->min_calls_per_bisection = 32 * s->min_calls; + s->estimate_frac = 0.1; + s->alpha = 2.0; + s->dither = 0.0; + + return GSL_SUCCESS; +} + +void +gsl_monte_miser_free (gsl_monte_miser_state * s) +{ + RETURN_IF_NULL (s); + free (s->hits_r); + free (s->hits_l); + free (s->fsum2_r); + free (s->fsum2_l); + free (s->fsum_r); + free (s->fsum_l); + free (s->fmin_r); + free (s->fmin_l); + free (s->fmax_r); + free (s->fmax_l); + free (s->sigma_r); + free (s->sigma_l); + free (s->xmid); + free (s->x); + free (s); +} + +void +gsl_monte_miser_params_get (const gsl_monte_miser_state * s, gsl_monte_miser_params * p) +{ + p->estimate_frac = s->estimate_frac; + p->min_calls = s->min_calls; + p->min_calls_per_bisection = s->min_calls_per_bisection; + p->alpha = s->alpha; + p->dither = s->dither; +} + +void +gsl_monte_miser_params_set (gsl_monte_miser_state * s, const gsl_monte_miser_params * p) +{ + s->estimate_frac = p->estimate_frac; + s->min_calls = p->min_calls; + s->min_calls_per_bisection = p->min_calls_per_bisection; + s->alpha = p->alpha; + s->dither = p->dither; +} + +static int +estimate_corrmc (gsl_monte_function * f, + const double xl[], const double xu[], + size_t dim, size_t calls, + gsl_rng * r, + gsl_monte_miser_state * state, + double *result, double *abserr, + const double xmid[], double sigma_l[], double sigma_r[]) +{ + size_t i, n; + + double *x = state->x; + double *fsum_l = state->fsum_l; + double *fsum_r = state->fsum_r; + double *fsum2_l = state->fsum2_l; + double *fsum2_r = state->fsum2_r; + size_t *hits_l = state->hits_l; + size_t *hits_r = state->hits_r; + + double m = 0.0, q = 0.0; + double vol = 1.0; + + for (i = 0; i < dim; i++) + { + vol *= xu[i] - xl[i]; + hits_l[i] = hits_r[i] = 0; + fsum_l[i] = fsum_r[i] = 0.0; + fsum2_l[i] = fsum2_r[i] = 0.0; + sigma_l[i] = sigma_r[i] = -1; + } + + for (n = 0; n < calls; n++) + { + double fval; + + unsigned int j = (n/2) % dim; + unsigned int side = (n % 2); + + for (i = 0; i < dim; i++) + { + double z = gsl_rng_uniform_pos (r) ; + + if (i != j) + { + x[i] = xl[i] + z * (xu[i] - xl[i]); + } + else + { + if (side == 0) + { + x[i] = xmid[i] + z * (xu[i] - xmid[i]); + } + else + { + x[i] = xl[i] + z * (xmid[i] - xl[i]); + } + } + } + + fval = GSL_MONTE_FN_EVAL (f, x); + + /* recurrence for mean and variance */ + { + double d = fval - m; + m += d / (n + 1.0); + q += d * d * (n / (n + 1.0)); + } + + /* compute the variances on each side of the bisection */ + for (i = 0; i < dim; i++) + { + if (x[i] <= xmid[i]) + { + fsum_l[i] += fval; + fsum2_l[i] += fval * fval; + hits_l[i]++; + } + else + { + fsum_r[i] += fval; + fsum2_r[i] += fval * fval; + hits_r[i]++; + } + } + } + + for (i = 0; i < dim; i++) + { + double fraction_l = (xmid[i] - xl[i]) / (xu[i] - xl[i]); + + if (hits_l[i] > 0) + { + fsum_l[i] /= hits_l[i]; + sigma_l[i] = sqrt (fsum2_l[i] - fsum_l[i] * fsum_l[i] / hits_l[i]); + sigma_l[i] *= fraction_l * vol / hits_l[i]; + } + + if (hits_r[i] > 0) + { + fsum_r[i] /= hits_r[i]; + sigma_r[i] = sqrt (fsum2_r[i] - fsum_r[i] * fsum_r[i] / hits_r[i]); + sigma_r[i] *= (1 - fraction_l) * vol / hits_r[i]; + } + } + + *result = vol * m; + + if (calls < 2) + { + *abserr = GSL_POSINF; + } + else + { + *abserr = vol * sqrt (q / (calls * (calls - 1.0))); + } + + return GSL_SUCCESS; +} + diff --git a/gsl-2.5/monte/miser.lo b/gsl-2.5/monte/miser.lo new file mode 100644 index 00000000..c8ccca94 --- /dev/null +++ b/gsl-2.5/monte/miser.lo @@ -0,0 +1,12 @@ +# miser.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/miser.o' + +# Name of the non-PIC object +non_pic_object='miser.o' + diff --git a/gsl-2.5/monte/plain.c b/gsl-2.5/monte/plain.c new file mode 100644 index 00000000..1aa3cf0f --- /dev/null +++ b/gsl-2.5/monte/plain.c @@ -0,0 +1,152 @@ +/* monte/plain.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2009 Michael Booth + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Plain Monte-Carlo. */ + +/* Author: MJB */ + +#include +#include +#include +#include +#include + +int +gsl_monte_plain_integrate (const gsl_monte_function * f, + const double xl[], const double xu[], + const size_t dim, + const size_t calls, + gsl_rng * r, + gsl_monte_plain_state * state, + double *result, double *abserr) +{ + double vol, m = 0, q = 0; + double *x = state->x; + size_t n, i; + + if (dim != state->dim) + { + GSL_ERROR ("number of dimensions must match allocated size", GSL_EINVAL); + } + + for (i = 0; i < dim; i++) + { + if (xu[i] <= xl[i]) + { + GSL_ERROR ("xu must be greater than xl", GSL_EINVAL); + } + + if (xu[i] - xl[i] > GSL_DBL_MAX) + { + GSL_ERROR ("Range of integration is too large, please rescale", + GSL_EINVAL); + } + } + + /* Compute the volume of the region */ + + vol = 1; + + for (i = 0; i < dim; i++) + { + vol *= xu[i] - xl[i]; + } + + for (n = 0; n < calls; n++) + { + /* Choose a random point in the integration region */ + + for (i = 0; i < dim; i++) + { + x[i] = xl[i] + gsl_rng_uniform_pos (r) * (xu[i] - xl[i]); + } + + { + double fval = GSL_MONTE_FN_EVAL (f, x); + + /* recurrence for mean and variance */ + + double d = fval - m; + m += d / (n + 1.0); + q += d * d * (n / (n + 1.0)); + } + } + + *result = vol * m; + + if (calls < 2) + { + *abserr = GSL_POSINF; + } + else + { + *abserr = vol * sqrt (q / (calls * (calls - 1.0))); + } + + return GSL_SUCCESS; +} + +gsl_monte_plain_state * +gsl_monte_plain_alloc (size_t dim) +{ + gsl_monte_plain_state *s = + (gsl_monte_plain_state *) malloc (sizeof (gsl_monte_plain_state)); + + if (s == 0) + { + GSL_ERROR_VAL ("failed to allocate space for state struct", + GSL_ENOMEM, 0); + } + + s->x = (double *) malloc (dim * sizeof (double)); + + if (s->x == 0) + { + free (s); + GSL_ERROR_VAL ("failed to allocate space for working vector", + GSL_ENOMEM, 0); + } + + s->dim = dim; + + return s; +} + +/* Set some default values and whatever */ + +int +gsl_monte_plain_init (gsl_monte_plain_state * s) +{ + size_t i; + + for (i = 0; i < s->dim; i++) + { + s->x[i] = 0.0; + } + + return GSL_SUCCESS; +} + +void +gsl_monte_plain_free (gsl_monte_plain_state * s) +{ + RETURN_IF_NULL (s); + free (s->x); + free (s); +} diff --git a/gsl-2.5/monte/plain.lo b/gsl-2.5/monte/plain.lo new file mode 100644 index 00000000..2a1591d4 --- /dev/null +++ b/gsl-2.5/monte/plain.lo @@ -0,0 +1,12 @@ +# plain.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/plain.o' + +# Name of the non-PIC object +non_pic_object='plain.o' + diff --git a/gsl-2.5/monte/test b/gsl-2.5/monte/test new file mode 100755 index 00000000..3854f1ee Binary files /dev/null and b/gsl-2.5/monte/test differ diff --git a/gsl-2.5/monte/test-suite.log b/gsl-2.5/monte/test-suite.log new file mode 100644 index 00000000..cefdff46 --- /dev/null +++ b/gsl-2.5/monte/test-suite.log @@ -0,0 +1,14 @@ +=================================== + gsl 2.5: monte/test-suite.log +=================================== + +# TOTAL: 1 +# PASS: 1 +# SKIP: 0 +# XFAIL: 0 +# FAIL: 0 +# XPASS: 0 +# ERROR: 0 + +.. contents:: :depth: 2 + diff --git a/gsl-2.5/monte/test.c b/gsl-2.5/monte/test.c new file mode 100644 index 00000000..4426e22a --- /dev/null +++ b/gsl-2.5/monte/test.c @@ -0,0 +1,480 @@ +/* monte/test.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Michael Booth + * Copyright (C) 2009 Michael Booth + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include + +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +#define CONSTANT +#define STEP +#define PRODUCT +#define GAUSSIAN +#define DBLGAUSSIAN +#define TSUDA + +#define PLAIN +#define MISER +#define VEGAS + +double xl[11] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; +double xu[11] = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +double xu2[11] = { 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2 }; +double xu3[2] = { GSL_DBL_MAX, GSL_DBL_MAX }; + +double fconst (double x[], size_t d, void *params); +double fstep (double x[], size_t d, void *params); +double f0 (double x[], size_t d, void *params); +double f1 (double x[], size_t d, void *params); +double f2 (double x[], size_t d, void *params); +double f3 (double x[], size_t d, void *params); + +void my_error_handler (const char *reason, const char *file, + int line, int err); + +struct problem { + gsl_monte_function * f; + double * xl; + double * xu; + size_t dim; + size_t calls; + double expected_result; + double expected_error; + char * description; +} ; + +gsl_monte_function +make_function (double (*f)(double *, size_t, void *), size_t d, void * p); + +gsl_monte_function +make_function (double (*f)(double *, size_t, void *), size_t d, void * p) +{ + gsl_monte_function f_new; + + f_new.f = f; + f_new.dim = d; + f_new.params = p; + + return f_new; +} + + +void +add (struct problem * problems, int * n, + gsl_monte_function * f, double xl[], double xu[], size_t dim, size_t calls, + double result, double err, char * description); + +void +add (struct problem * problems, int * n, + gsl_monte_function * f, double xl[], double xu[], size_t dim, size_t calls, + double result, double err, char * description) +{ + int i = *n; + problems[i].f = f; + problems[i].xl = xl; + problems[i].xu = xu; + problems[i].dim = dim; + problems[i].calls = calls; + problems[i].expected_result = result; + problems[i].expected_error = err; + problems[i].description = description; + (*n)++; +} + +#define TRIALS 10 + +int +main (void) +{ + double result[TRIALS], error[TRIALS]; + double a = 0.1; + double c = (1.0 + sqrt (10.0)) / 9.0; + + gsl_monte_function Fc = make_function(&fconst, 0, 0); + gsl_monte_function Fs = make_function(&fstep, 0, 0); + gsl_monte_function F0 = make_function(&f0, 0, &a); + gsl_monte_function F1 = make_function(&f1, 0, &a); + gsl_monte_function F2 = make_function(&f2, 0, &a); + gsl_monte_function F3 = make_function(&f3, 0, &c); + + /* The relationship between the variance of the function itself, the + error on the integral and the number of calls is, + + sigma = sqrt(variance/N) + + where the variance is the <(f - )^2> where <.> denotes the + volume average (integral over the integration region divided by + the volume) */ + + int n = 0; + struct problem * I; + struct problem problems[256]; + +#ifdef CONSTANT + /* variance(Fc) = 0 */ + + add(problems,&n, &Fc, xl, xu, 1, 1000, 1.0, 0.0, "constant, 1d"); + add(problems,&n, &Fc, xl, xu, 2, 1000, 1.0, 0.0, "constant, 2d"); + add(problems,&n, &Fc, xl, xu, 3, 1000, 1.0, 0.0, "constant, 3d"); + add(problems,&n, &Fc, xl, xu, 4, 1000, 1.0, 0.0, "constant, 4d"); + add(problems,&n, &Fc, xl, xu, 5, 1000, 1.0, 0.0, "constant, 5d"); + add(problems,&n, &Fc, xl, xu, 6, 1000, 1.0, 0.0, "constant, 6d"); + add(problems,&n, &Fc, xl, xu, 7, 1000, 1.0, 0.0, "constant, 7d"); + add(problems,&n, &Fc, xl, xu, 8, 1000, 1.0, 0.0, "constant, 8d"); + add(problems,&n, &Fc, xl, xu, 9, 1000, 1.0, 0.0, "constant, 9d"); + add(problems,&n, &Fc, xl, xu, 10, 1000, 1.0, 0.0, "constant, 10d"); +#endif + +#ifdef STEP + /* variance(Fs) = 0.4/sqrt(1000) */ + add(problems,&n, &Fs, xl, xu, 1, 100000, 0.8, 1.264e-3, "step, 1d"); + add(problems,&n, &Fs, xl, xu, 2, 100000, 0.8, 1.264e-3, "step, 2d"); + add(problems,&n, &Fs, xl, xu, 3, 100000, 0.8, 1.264e-3, "step, 3d"); + add(problems,&n, &Fs, xl, xu, 4, 100000, 0.8, 1.264e-3, "step, 4d"); + add(problems,&n, &Fs, xl, xu, 5, 100000, 0.8, 1.264e-3, "step, 5d"); + add(problems,&n, &Fs, xl, xu, 6, 100000, 0.8, 1.264e-3, "step, 6d"); + add(problems,&n, &Fs, xl, xu, 7, 100000, 0.8, 1.264e-3, "step, 7d"); + add(problems,&n, &Fs, xl, xu, 8, 100000, 0.8, 1.264e-3, "step, 8d"); + add(problems,&n, &Fs, xl, xu, 9, 100000, 0.8, 1.264e-3, "step, 9d"); + add(problems,&n, &Fs, xl, xu, 10, 100000, 0.8, 1.264e-3, "step, 10d"); +#endif + +#ifdef PRODUCT + /* variance(F0) = (4/3)^d - 1 */ + + add(problems,&n, &F0, xl, xu, 1, 3333, 1.0, 0.01, "product, 1d" ); + add(problems,&n, &F0, xl, xu, 2, 7777, 1.0, 0.01, "product, 2d" ); + add(problems,&n, &F0, xl, xu, 3, 13703, 1.0, 0.01, "product, 3d" ); + add(problems,&n, &F0, xl, xu, 4, 21604, 1.0, 0.01, "product, 4d" ); + add(problems,&n, &F0, xl, xu, 5, 32139, 1.0, 0.01, "product, 5d" ); + add(problems,&n, &F0, xl, xu, 6, 46186, 1.0, 0.01, "product, 6d" ); + add(problems,&n, &F0, xl, xu, 7, 64915, 1.0, 0.01, "product, 7d" ); + add(problems,&n, &F0, xl, xu, 8, 89887, 1.0, 0.01, "product, 8d" ); + add(problems,&n, &F0, xl, xu, 9, 123182, 1.0, 0.01, "product, 9d" ); + add(problems,&n, &F0, xl, xu, 10, 167577, 1.0, 0.01, "product, 10d" ); +#endif + +#ifdef GAUSSIAN + /* variance(F1) = (1/(a sqrt(2 pi)))^d - 1 */ + + add(problems,&n, &F1, xl, xu, 1, 298, 1.0, 0.1, "gaussian, 1d" ); + add(problems,&n, &F1, xl, xu, 2, 1492, 1.0, 0.1, "gaussian, 2d" ); + add(problems,&n, &F1, xl, xu, 3, 6249, 1.0, 0.1, "gaussian, 3d" ); + add(problems,&n, &F1, xl, xu, 4, 25230, 1.0, 0.1, "gaussian, 4d" ); + add(problems,&n, &F1, xl, xu, 5, 100953, 1.0, 0.1, "gaussian, 5d" ); + add(problems,&n, &F1, xl, xu, 6, 44782, 1.0, 0.3, "gaussian, 6d" ); + add(problems,&n, &F1, xl, xu, 7, 178690, 1.0, 0.3, "gaussian, 7d" ); + add(problems,&n, &F1, xl, xu, 8, 712904, 1.0, 0.3, "gaussian, 8d" ); + add(problems,&n, &F1, xl, xu, 9, 2844109, 1.0, 0.3, "gaussian, 9d" ); + add(problems,&n, &F1, xl, xu, 10, 11346390, 1.0, 0.3, "gaussian, 10d" ); +#endif + +#ifdef DBLGAUSSIAN + /* variance(F2) = 0.5 * (1/(a sqrt(2 pi)))^d - 1 */ + + add(problems,&n, &F2, xl, xu, 1, 9947, 1.0, 0.01, "double gaussian, 1d" ); + add(problems,&n, &F2, xl, xu, 2, 695, 1.0, 0.1, "double gaussian, 2d" ); + add(problems,&n, &F2, xl, xu, 3, 3074, 1.0, 0.1, "double gaussian, 3d" ); + add(problems,&n, &F2, xl, xu, 4, 12565, 1.0, 0.1, "double gaussian, 4d" ); + add(problems,&n, &F2, xl, xu, 5, 50426, 1.0, 0.1, "double gaussian, 5d" ); + add(problems,&n, &F2, xl, xu, 6, 201472, 1.0, 0.1, "double gaussian, 6d" ); + add(problems,&n, &F2, xl, xu, 7, 804056, 1.0, 0.1, "double gaussian, 7d" ); + add(problems,&n, &F2, xl, xu, 8, 356446, 1.0, 0.3, "double gaussian, 8d" ); + add(problems,&n, &F2, xl, xu, 9, 1422049, 1.0, 0.3, "double gaussian, 9d" ); + add(problems,&n, &F2, xl, xu, 10, 5673189, 1.0, 0.3, "double gaussian, 10d" ); +#endif + +#ifdef TSUDA + /* variance(F3) = ((c^2 + c + 1/3)/(c(c+1)))^d - 1 */ + + add(problems,&n, &F3, xl, xu, 1, 4928, 1.0, 0.01, "tsuda function, 1d" ); + add(problems,&n, &F3, xl, xu, 2, 12285, 1.0, 0.01, "tsuda function, 2d" ); + add(problems,&n, &F3, xl, xu, 3, 23268, 1.0, 0.01, "tsuda function, 3d" ); + add(problems,&n, &F3, xl, xu, 4, 39664, 1.0, 0.01, "tsuda function, 4d" ); + add(problems,&n, &F3, xl, xu, 5, 64141, 1.0, 0.01, "tsuda function, 5d" ); + add(problems,&n, &F3, xl, xu, 6, 100680, 1.0, 0.01, "tsuda function, 6d" ); + add(problems,&n, &F3, xl, xu, 7, 155227, 1.0, 0.01, "tsuda function, 7d" ); + add(problems,&n, &F3, xl, xu, 8, 236657, 1.0, 0.01, "tsuda function, 8d" ); + add(problems,&n, &F3, xl, xu, 9, 358219, 1.0, 0.01, "tsuda function, 9d" ); + add(problems,&n, &F3, xl, xu, 10, 539690, 1.0, 0.01, "tsuda function, 10d" ); +#endif + + add(problems,&n, 0, 0, 0, 0, 0, 0, 0, 0 ); + + + /* gsl_set_error_handler (&my_error_handler); */ + gsl_ieee_env_setup (); + gsl_rng_env_setup (); + +#ifdef A + printf ("testing allocation/input checks\n"); + + status = gsl_monte_plain_validate (s, xl, xu3, 1, 1); + gsl_test (status != 0, "error if limits too large"); + status = gsl_monte_plain_validate (s, xl, xu, 0, 10); + gsl_test (status != 0, "error if num_dim = 0"); + status = gsl_monte_plain_validate (s, xl, xu, 1, 0); + gsl_test (status != 0, "error if calls = 0"); + status = gsl_monte_plain_validate (s, xu, xl, 1, 10); + gsl_test (status != 0, "error if xu < xl"); +#endif + +#ifdef PLAIN +#define NAME "plain" +#define MONTE_STATE gsl_monte_plain_state +#define MONTE_ALLOC gsl_monte_plain_alloc +#define MONTE_INTEGRATE gsl_monte_plain_integrate +#define MONTE_FREE gsl_monte_plain_free +#define MONTE_SPEEDUP 1 +#define MONTE_ERROR_TEST(err,expected) gsl_test_factor(err,expected, 5.0, NAME ", %s, abserr[%d]", I->description, i) +#include "test_main.c" +#undef NAME +#undef MONTE_STATE +#undef MONTE_ALLOC +#undef MONTE_INTEGRATE +#undef MONTE_FREE +#undef MONTE_ERROR_TEST +#undef MONTE_SPEEDUP +#endif + +#ifdef MISER +#define NAME "miser" +#define MONTE_STATE gsl_monte_miser_state +#define MONTE_ALLOC gsl_monte_miser_alloc +#define MONTE_INTEGRATE gsl_monte_miser_integrate +#define MONTE_FREE gsl_monte_miser_free +#define MONTE_SPEEDUP 2 +#define MONTE_ERROR_TEST(err,expected) gsl_test(err > 5.0 * expected, NAME ", %s, abserr[%d] (obs %g vs plain %g)", I->description, i, err, expected) +#include "test_main.c" +#undef NAME +#undef MONTE_STATE +#undef MONTE_ALLOC +#undef MONTE_INTEGRATE +#undef MONTE_FREE +#undef MONTE_ERROR_TEST +#undef MONTE_SPEEDUP +#endif + +#ifdef MISER +#define NAME "miser(params)" +#define MONTE_STATE gsl_monte_miser_state +#define MONTE_ALLOC gsl_monte_miser_alloc +#define MONTE_PARAMS gsl_monte_miser_params +#define MONTE_INTEGRATE(f,xl,xu,dim,calls,r,s,res,err) { gsl_monte_miser_params_get(s, ¶ms) ; params.alpha = 1.5 ; gsl_monte_miser_params_set(s, ¶ms) ; gsl_monte_miser_integrate(f,xl,xu,dim,calls,r,s,res,err); } +#define MONTE_FREE gsl_monte_miser_free +#define MONTE_SPEEDUP 2 +#define MONTE_ERROR_TEST(err,expected) gsl_test(err > 5.0 * expected, NAME ", %s, abserr[%d] (obs %g vs plain %g)", I->description, i, err, expected) +#include "test_main.c" +#undef NAME +#undef MONTE_STATE +#undef MONTE_ALLOC +#undef MONTE_PARAMS +#undef MONTE_INTEGRATE +#undef MONTE_FREE +#undef MONTE_ERROR_TEST +#undef MONTE_SPEEDUP +#endif + +#ifdef MISER +#define NAME "miser(params)" +#define MONTE_STATE gsl_monte_miser_state +#define MONTE_ALLOC gsl_monte_miser_alloc +#define MONTE_PARAMS gsl_monte_miser_params +#define MONTE_INTEGRATE(f,xl,xu,dim,calls,r,s,res,err) { gsl_monte_miser_params_get(s, ¶ms) ; params.alpha = 1.5 ; gsl_monte_miser_params_set(s, ¶ms) ; gsl_monte_miser_integrate(f,xl,xu,dim,calls,r,s,res,err); } +#define MONTE_FREE gsl_monte_miser_free +#define MONTE_SPEEDUP 2 +#define MONTE_ERROR_TEST(err,expected) gsl_test(err > 5.0 * expected, NAME ", %s, abserr[%d] (obs %g vs plain %g)", I->description, i, err, expected) +#include "test_main.c" +#undef NAME +#undef MONTE_STATE +#undef MONTE_ALLOC +#undef MONTE_PARAMS +#undef MONTE_INTEGRATE +#undef MONTE_FREE +#undef MONTE_ERROR_TEST +#undef MONTE_SPEEDUP +#endif + +#ifdef VEGAS +#define NAME "vegas" +#define MONTE_STATE gsl_monte_vegas_state +#define MONTE_ALLOC gsl_monte_vegas_alloc +#define MONTE_INTEGRATE(f,xl,xu,dim,calls,r,s,res,err) { gsl_monte_vegas_integrate(f,xl,xu,dim,calls,r,s,res,err) ; } +#define MONTE_FREE gsl_monte_vegas_free +#define MONTE_SPEEDUP 3 +#define MONTE_ERROR_TEST(err,expected) gsl_test(err > 3.0 * (expected == 0 ? 1.0/(I->calls/MONTE_SPEEDUP) : expected), NAME ", %s, abserr[%d] (obs %g vs exp %g)", I->description, i, err, expected) ; gsl_test(gsl_monte_vegas_chisq(s) < 0, NAME " returns valid chisq (%g)", gsl_monte_vegas_chisq(s)) +#include "test_main.c" +#undef NAME +#undef MONTE_STATE +#undef MONTE_ALLOC +#undef MONTE_INTEGRATE +#undef MONTE_FREE +#undef MONTE_ERROR_TEST +#undef MONTE_SPEEDUP +#endif + + +#ifdef VEGAS +#define NAME "vegas(warm)" +#define MONTE_STATE gsl_monte_vegas_state +#define MONTE_ALLOC gsl_monte_vegas_alloc +#define MONTE_INTEGRATE(f,xl,xu,dim,calls,r,s,res,err) { gsl_monte_vegas_integrate(f,xl,xu,dim,calls,r,s,res,err) ; gsl_monte_vegas_integrate(f,xl,xu,dim,calls,r,s,res,err); } +#define MONTE_FREE gsl_monte_vegas_free +#define MONTE_SPEEDUP 3 +#define MONTE_ERROR_TEST(err,expected) gsl_test(err > 3.0 * (expected == 0 ? 1.0/(I->calls/MONTE_SPEEDUP) : expected), NAME ", %s, abserr[%d] (obs %g vs exp %g)", I->description, i, err, expected); gsl_test(gsl_monte_vegas_chisq(s) < 0, NAME " returns valid chisq (%g)", gsl_monte_vegas_chisq(s)) +#include "test_main.c" +#undef NAME +#undef MONTE_STATE +#undef MONTE_ALLOC +#undef MONTE_INTEGRATE +#undef MONTE_FREE +#undef MONTE_ERROR_TEST +#undef MONTE_SPEEDUP +#endif + + +#ifdef VEGAS +#define NAME "vegas(params)" +#define MONTE_STATE gsl_monte_vegas_state +#define MONTE_ALLOC gsl_monte_vegas_alloc +#define MONTE_PARAMS gsl_monte_vegas_params +#define MONTE_INTEGRATE(f,xl,xu,dim,calls,r,s,res,err) { gsl_monte_vegas_params_get(s, ¶ms) ; params.alpha = 2 ; params.iterations = 3 ; gsl_monte_vegas_params_set(s, ¶ms) ; gsl_monte_vegas_integrate(f,xl,xu,dim,calls,r,s,res,err); } +#define MONTE_FREE gsl_monte_vegas_free +#define MONTE_SPEEDUP 3 +#define MONTE_ERROR_TEST(err,expected) gsl_test(err > 3.0 * (expected == 0 ? 1.0/(I->calls/MONTE_SPEEDUP) : expected), NAME ", %s, abserr[%d] (obs %g vs exp %g)", I->description, i, err, expected); gsl_test(gsl_monte_vegas_chisq(s) < 0, NAME " returns valid chisq (%g)", gsl_monte_vegas_chisq(s)) +#include "test_main.c" +#undef NAME +#undef MONTE_STATE +#undef MONTE_ALLOC +#undef MONTE_PARAMS +#undef MONTE_INTEGRATE +#undef MONTE_FREE +#undef MONTE_ERROR_TEST +#undef MONTE_SPEEDUP +#endif + + + exit (gsl_test_summary ()); +} + +/* Simple constant function */ +double +fconst (double x[], size_t num_dim, void *params) +{ + return 1; +} + + +/* Step-type (pulse) function */ +double +fstep (double x[], size_t num_dim, void *params) +{ + return (x[0] > 0.1 && x[0] < 0.9) ? 1 : 0; +} + +/* Simple product function */ +double +f0 (double x[], size_t num_dim, void *params) +{ + double prod = 1.0; + unsigned int i; + + for (i = 0; i < num_dim; ++i) + { + prod *= 2.0 * x[i]; + } + + return prod; +} + +/* Gaussian centered at 1/2. */ + +double +f1 (double x[], size_t num_dim, void *params) +{ + double a = *(double *)params; + double sum = 0.; + + unsigned int i; + for (i = 0; i < num_dim; i++) + { + double dx = x[i] - 0.5; + sum += dx * dx; + } + return (pow (M_2_SQRTPI / (2. * a), (double) num_dim) * + exp (-sum / (a * a))); +} + +/* double gaussian */ +double +f2 (double x[], size_t num_dim, void *params) +{ + double a = *(double *)params; + double sum1 = 0.; + double sum2 = 0.; + + unsigned int i; + for (i = 0; i < num_dim; i++) + { + double dx1 = x[i] - 1. / 3.; + double dx2 = x[i] - 2. / 3.; + sum1 += dx1 * dx1; + sum2 += dx2 * dx2; + } + return 0.5 * pow (M_2_SQRTPI / (2. * a), num_dim) + * (exp (-sum1 / (a * a)) + exp (-sum2 / (a * a))); +} + +/* Tsuda's example */ +double +f3 (double x[], size_t num_dim, void *params) +{ + double c = *(double *)params; + + double prod = 1.; + + unsigned int i; + + for (i = 0; i < num_dim; i++) + { + prod *= c / (c + 1) * pow((c + 1) / (c + x[i]), 2.0); + } + + return prod; +} + + +void +my_error_handler (const char *reason, const char *file, int line, int err) +{ + if (0) + printf ("(caught [%s:%d: %s (%d)])\n", file, line, reason, err); +} diff --git a/gsl-2.5/monte/test.log b/gsl-2.5/monte/test.log new file mode 100644 index 00000000..61b5a4b6 --- /dev/null +++ b/gsl-2.5/monte/test.log @@ -0,0 +1 @@ +Completed [4320/4320] diff --git a/gsl-2.5/monte/test.trs b/gsl-2.5/monte/test.trs new file mode 100644 index 00000000..3f0f396c --- /dev/null +++ b/gsl-2.5/monte/test.trs @@ -0,0 +1,4 @@ +:test-result: PASS +:global-test-result: PASS +:recheck: no +:copy-in-global-log: no diff --git a/gsl-2.5/monte/test_main.c b/gsl-2.5/monte/test_main.c new file mode 100644 index 00000000..7cd71d18 --- /dev/null +++ b/gsl-2.5/monte/test_main.c @@ -0,0 +1,71 @@ +for (I = problems ; I->f != 0; I++) +{ + size_t i; + double res, err; + + gsl_rng * r; + + if (I->dim > 3) + { + continue ; + } + + r = gsl_rng_alloc (gsl_rng_default); + + for (i = 0; i < TRIALS ; i++) + { + MONTE_STATE *s = MONTE_ALLOC (I->dim); +#ifdef MONTE_PARAMS + MONTE_PARAMS params; +#endif + + I->f->dim = I->dim; + + MONTE_INTEGRATE (I->f, I->xl, I->xu, + I->dim, I->calls / MONTE_SPEEDUP, r, s, + &res, &err); + + gsl_test_abs (res, I->expected_result, + 5 * GSL_MAX(err, 1024*GSL_DBL_EPSILON), + NAME ", %s, result[%d]", I->description, i); + + MONTE_ERROR_TEST (err, I->expected_error); + + result[i] = res; + error[i] = err; + + MONTE_FREE (s); + } + + + /* Check the results for consistency as an ensemble */ + + { + double mean = 0, sumd2 = 0, sd; + + /* We need to compute the mean exactly when all terms are equal, + to get an exact zero for the standard deviation (this is a + common case when integrating a constant). */ + + for (i = 0; i < TRIALS; i++) + { + mean += (result[i] - mean) / (i + 1.0); + } + + for (i = 0; i < TRIALS; i++) + { + sumd2 += pow(result[i] - mean, 2.0); + } + + sd = sqrt(sumd2 / (TRIALS-1.0)) ; + + for (i = 0; i < TRIALS; i++) + { + gsl_test_factor (error[i], sd, 5.0, + NAME ", %s, abserr[%d] vs sd", I->description, i); + } + } + + gsl_rng_free (r); +} + diff --git a/gsl-2.5/monte/vegas.c b/gsl-2.5/monte/vegas.c new file mode 100644 index 00000000..87e2b8f9 --- /dev/null +++ b/gsl-2.5/monte/vegas.c @@ -0,0 +1,925 @@ +/* monte/vegas.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Michael Booth + * Copyright (C) 2009 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: MJB */ +/* Modified by: Brian Gough, 12/2000 */ + +/* This is an implementation of the adaptive Monte-Carlo algorithm + of G. P. Lepage, originally described in J. Comp. Phys. 27, 192(1978). + The current version of the algorithm was described in the Cornell + preprint CLNS-80/447 of March, 1980. + + This code follows most closely the c version by D.R.Yennie, coded + in 1984. + + The input coordinates are x[j], with upper and lower limits xu[j] + and xl[j]. The integration length in the j-th direction is + delx[j]. Each coordinate x[j] is rescaled to a variable y[j] in + the range 0 to 1. The range is divided into bins with boundaries + xi[i][j], where i=0 corresponds to y=0 and i=bins to y=1. The grid + is refined (ie, bins are adjusted) using d[i][j] which is some + variation on the squared sum. A third parameter used in defining + the real coordinate using random numbers is called z. It ranges + from 0 to bins. Its integer part gives the lower index of the bin + into which a call is to be placed, and the remainder gives the + location inside the bin. + + When stratified sampling is used the bins are grouped into boxes, + and the algorithm allocates an equal number of function calls to + each box. + + The variable alpha controls how "stiff" the rebinning algorithm is. + alpha = 0 means never change the grid. Alpha is typically set between + 1 and 2. + + */ + +/* configuration headers */ +#include + +/* standard headers */ +#include +#include + +/* gsl headers */ +#include +#include +#include +#include + +/* lib-specific headers */ +#define BINS_MAX 50 /* even integer, will be divided by two */ + +/* A separable grid with coordinates and values */ +#define COORD(s,i,j) ((s)->xi[(i)*(s)->dim + (j)]) +#define NEW_COORD(s,i) ((s)->xin[(i)]) +#define VALUE(s,i,j) ((s)->d[(i)*(s)->dim + (j)]) + +#define USE_ORIGINAL_CHISQ_FORMULA 0 + +/* predeclare functions */ + +typedef int coord; + +static void init_grid (gsl_monte_vegas_state * s, double xl[], double xu[], + size_t dim); +static void reset_grid_values (gsl_monte_vegas_state * s); +static void init_box_coord (gsl_monte_vegas_state * s, coord box[]); +static int change_box_coord (gsl_monte_vegas_state * s, coord box[]); +static void accumulate_distribution (gsl_monte_vegas_state * s, coord bin[], + double y); +static void random_point (double x[], coord bin[], double *bin_vol, + const coord box[], + const double xl[], const double xu[], + gsl_monte_vegas_state * s, gsl_rng * r); +static void resize_grid (gsl_monte_vegas_state * s, unsigned int bins); +static void refine_grid (gsl_monte_vegas_state * s); + +static void print_lim (gsl_monte_vegas_state * state, + double xl[], double xu[], unsigned long dim); +static void print_head (gsl_monte_vegas_state * state, + unsigned long num_dim, unsigned long calls, + unsigned int it_num, + unsigned int bins, unsigned int boxes); +static void print_res (gsl_monte_vegas_state * state, + unsigned int itr, double res, double err, + double cum_res, double cum_err, + double chi_sq); +static void print_dist (gsl_monte_vegas_state * state, unsigned long dim); +static void print_grid (gsl_monte_vegas_state * state, unsigned long dim); + +int +gsl_monte_vegas_integrate (gsl_monte_function * f, + double xl[], double xu[], + size_t dim, size_t calls, + gsl_rng * r, + gsl_monte_vegas_state * state, + double *result, double *abserr) +{ + double cum_int, cum_sig; + size_t i, k, it; + + if (dim != state->dim) + { + GSL_ERROR ("number of dimensions must match allocated size", GSL_EINVAL); + } + + for (i = 0; i < dim; i++) + { + if (xu[i] <= xl[i]) + { + GSL_ERROR ("xu must be greater than xl", GSL_EINVAL); + } + + if (xu[i] - xl[i] > GSL_DBL_MAX) + { + GSL_ERROR ("Range of integration is too large, please rescale", + GSL_EINVAL); + } + } + + if (state->stage == 0) + { + init_grid (state, xl, xu, dim); + + if (state->verbose >= 0) + { + print_lim (state, xl, xu, dim); + } + } + + if (state->stage <= 1) + { + state->wtd_int_sum = 0; + state->sum_wgts = 0; + state->chi_sum = 0; + state->it_num = 1; + state->samples = 0; + state->chisq = 0; + } + + if (state->stage <= 2) + { + unsigned int bins = state->bins_max; + unsigned int boxes = 1; + + if (state->mode != GSL_VEGAS_MODE_IMPORTANCE_ONLY) + { + /* shooting for 2 calls/box */ + + boxes = floor (pow (calls / 2.0, 1.0 / dim)); + state->mode = GSL_VEGAS_MODE_IMPORTANCE; + + if (2 * boxes >= state->bins_max) + { + /* if bins/box < 2 */ + int box_per_bin = GSL_MAX (boxes / state->bins_max, 1); + + bins = GSL_MIN(boxes / box_per_bin, state->bins_max); + boxes = box_per_bin * bins; + + state->mode = GSL_VEGAS_MODE_STRATIFIED; + } + } + + { + double tot_boxes = gsl_pow_int ((double) boxes, dim); + state->calls_per_box = GSL_MAX (calls / tot_boxes, 2); + calls = state->calls_per_box * tot_boxes; + } + + /* total volume of x-space/(avg num of calls/bin) */ + state->jac = state->vol * pow ((double) bins, (double) dim) / calls; + + state->boxes = boxes; + + /* If the number of bins changes from the previous invocation, bins + are expanded or contracted accordingly, while preserving bin + density */ + + if (bins != state->bins) + { + resize_grid (state, bins); + + if (state->verbose > 1) + { + print_grid (state, dim); + } + } + + if (state->verbose >= 0) + { + print_head (state, + dim, calls, state->it_num, state->bins, state->boxes); + } + } + + state->it_start = state->it_num; + + cum_int = 0.0; + cum_sig = 0.0; + + for (it = 0; it < state->iterations; it++) + { + double intgrl = 0.0, intgrl_sq = 0.0; + double tss = 0.0; + double wgt, var, sig; + size_t calls_per_box = state->calls_per_box; + double jacbin = state->jac; + double *x = state->x; + coord *bin = state->bin; + + state->it_num = state->it_start + it; + + reset_grid_values (state); + init_box_coord (state, state->box); + + do + { + volatile double m = 0, q = 0; + double f_sq_sum = 0.0; + + for (k = 0; k < calls_per_box; k++) + { + volatile double fval; + double bin_vol; + + random_point (x, bin, &bin_vol, state->box, xl, xu, state, r); + + fval = jacbin * bin_vol * GSL_MONTE_FN_EVAL (f, x); + + /* recurrence for mean and variance (sum of squares) */ + + { + double d = fval - m; + m += d / (k + 1.0); + q += d * d * (k / (k + 1.0)); + } + + if (state->mode != GSL_VEGAS_MODE_STRATIFIED) + { + double f_sq = fval * fval; + accumulate_distribution (state, bin, f_sq); + } + } + + intgrl += m * calls_per_box; + + f_sq_sum = q * calls_per_box; + + tss += f_sq_sum; + + if (state->mode == GSL_VEGAS_MODE_STRATIFIED) + { + accumulate_distribution (state, bin, f_sq_sum); + } + } + while (change_box_coord (state, state->box)); + + /* Compute final results for this iteration */ + + var = tss / (calls_per_box - 1.0) ; + + if (var > 0) + { + wgt = 1.0 / var; + } + else if (state->sum_wgts > 0) + { + wgt = state->sum_wgts / state->samples; + } + else + { + wgt = 0.0; + } + + intgrl_sq = intgrl * intgrl; + + sig = sqrt (var); + + state->result = intgrl; + state->sigma = sig; + + if (wgt > 0.0) + { + double sum_wgts = state->sum_wgts; + double wtd_int_sum = state->wtd_int_sum; + double m = (sum_wgts > 0) ? (wtd_int_sum / sum_wgts) : 0; + double q = intgrl - m; + + state->samples++ ; + state->sum_wgts += wgt; + state->wtd_int_sum += intgrl * wgt; + state->chi_sum += intgrl_sq * wgt; + + cum_int = state->wtd_int_sum / state->sum_wgts; + cum_sig = sqrt (1 / state->sum_wgts); + +#if USE_ORIGINAL_CHISQ_FORMULA +/* This is the chisq formula from the original Lepage paper. It + computes the variance from - ^2 and can suffer from + catastrophic cancellations, e.g. returning negative chisq. */ + if (state->samples > 1) + { + state->chisq = (state->chi_sum - state->wtd_int_sum * cum_int) / + (state->samples - 1.0); + } +#else +/* The new formula below computes exactly the same quantity as above + but using a stable recurrence */ + if (state->samples == 1) { + state->chisq = 0; + } else { + state->chisq *= (state->samples - 2.0); + state->chisq += (wgt / (1 + (wgt / sum_wgts))) * q * q; + state->chisq /= (state->samples - 1.0); + } +#endif + } + else + { + cum_int += (intgrl - cum_int) / (it + 1.0); + cum_sig = 0.0; + } + + + if (state->verbose >= 0) + { + print_res (state, + state->it_num, intgrl, sig, cum_int, cum_sig, + state->chisq); + if (it + 1 == state->iterations && state->verbose > 0) + { + print_grid (state, dim); + } + } + + if (state->verbose > 1) + { + print_dist (state, dim); + } + + refine_grid (state); + + if (state->verbose > 1) + { + print_grid (state, dim); + } + + } + + /* By setting stage to 1 further calls will generate independent + estimates based on the same grid, although it may be rebinned. */ + + state->stage = 1; + + *result = cum_int; + *abserr = cum_sig; + + return GSL_SUCCESS; +} + + + +gsl_monte_vegas_state * +gsl_monte_vegas_alloc (size_t dim) +{ + gsl_monte_vegas_state *s = + (gsl_monte_vegas_state *) malloc (sizeof (gsl_monte_vegas_state)); + + if (s == 0) + { + GSL_ERROR_VAL ("failed to allocate space for vegas state struct", + GSL_ENOMEM, 0); + } + + s->delx = (double *) malloc (dim * sizeof (double)); + + if (s->delx == 0) + { + free (s); + GSL_ERROR_VAL ("failed to allocate space for delx", GSL_ENOMEM, 0); + } + + s->d = (double *) malloc (BINS_MAX * dim * sizeof (double)); + + if (s->d == 0) + { + free (s->delx); + free (s); + GSL_ERROR_VAL ("failed to allocate space for d", GSL_ENOMEM, 0); + } + + s->xi = (double *) malloc ((BINS_MAX + 1) * dim * sizeof (double)); + + if (s->xi == 0) + { + free (s->d); + free (s->delx); + free (s); + GSL_ERROR_VAL ("failed to allocate space for xi", GSL_ENOMEM, 0); + } + + s->xin = (double *) malloc ((BINS_MAX + 1) * sizeof (double)); + + if (s->xin == 0) + { + free (s->xi); + free (s->d); + free (s->delx); + free (s); + GSL_ERROR_VAL ("failed to allocate space for xin", GSL_ENOMEM, 0); + } + + s->weight = (double *) malloc (BINS_MAX * sizeof (double)); + + if (s->weight == 0) + { + free (s->xin); + free (s->xi); + free (s->d); + free (s->delx); + free (s); + GSL_ERROR_VAL ("failed to allocate space for xin", GSL_ENOMEM, 0); + } + + s->box = (coord *) malloc (dim * sizeof (coord)); + + if (s->box == 0) + { + free (s->weight); + free (s->xin); + free (s->xi); + free (s->d); + free (s->delx); + free (s); + GSL_ERROR_VAL ("failed to allocate space for box", GSL_ENOMEM, 0); + } + + s->bin = (coord *) malloc (dim * sizeof (coord)); + + if (s->bin == 0) + { + free (s->box); + free (s->weight); + free (s->xin); + free (s->xi); + free (s->d); + free (s->delx); + free (s); + GSL_ERROR_VAL ("failed to allocate space for bin", GSL_ENOMEM, 0); + } + + s->x = (double *) malloc (dim * sizeof (double)); + + if (s->x == 0) + { + free (s->bin); + free (s->box); + free (s->weight); + free (s->xin); + free (s->xi); + free (s->d); + free (s->delx); + free (s); + GSL_ERROR_VAL ("failed to allocate space for x", GSL_ENOMEM, 0); + } + + s->dim = dim; + s->bins_max = BINS_MAX; + + gsl_monte_vegas_init (s); + + return s; +} + +/* Set some default values and whatever */ +int +gsl_monte_vegas_init (gsl_monte_vegas_state * state) +{ + state->stage = 0; + state->alpha = 1.5; + state->verbose = -1; + state->iterations = 5; + state->mode = GSL_VEGAS_MODE_IMPORTANCE; + state->chisq = 0; + state->bins = state->bins_max; + state->ostream = stdout; + + return GSL_SUCCESS; +} + +void +gsl_monte_vegas_free (gsl_monte_vegas_state * s) +{ + RETURN_IF_NULL (s); + free (s->x); + free (s->delx); + free (s->d); + free (s->xi); + free (s->xin); + free (s->weight); + free (s->box); + free (s->bin); + free (s); +} + +double +gsl_monte_vegas_chisq (const gsl_monte_vegas_state * s) +{ + return s->chisq; +} + +void +gsl_monte_vegas_runval (const gsl_monte_vegas_state * s, double * result, double * sigma) +{ + *result = s->result; + *sigma = s->sigma; +} + +void +gsl_monte_vegas_params_get (const gsl_monte_vegas_state * s, gsl_monte_vegas_params * p) +{ + p->alpha = s->alpha; + p->iterations = s->iterations; + p->stage = s->stage; + p->mode = s->mode; + p->verbose = s->verbose; + p->ostream = s->ostream; +} + +void +gsl_monte_vegas_params_set (gsl_monte_vegas_state * s, const gsl_monte_vegas_params * p) +{ + s->alpha = p->alpha; + s->iterations = p->iterations; + s->stage = p->stage; + s->mode = p->mode; + s->verbose = p->verbose; + s->ostream = p->ostream; +} + +static void +init_box_coord (gsl_monte_vegas_state * s, coord box[]) +{ + size_t i; + + size_t dim = s->dim; + + for (i = 0; i < dim; i++) + { + box[i] = 0; + } +} + +/* change_box_coord steps through the box coord like + {0,0}, {0, 1}, {0, 2}, {0, 3}, {1, 0}, {1, 1}, {1, 2}, ... +*/ +static int +change_box_coord (gsl_monte_vegas_state * s, coord box[]) +{ + int j = s->dim - 1; + + int ng = s->boxes; + + while (j >= 0) + { + box[j] = (box[j] + 1) % ng; + + if (box[j] != 0) + { + return 1; + } + + j--; + } + + return 0; +} + +static void +init_grid (gsl_monte_vegas_state * s, double xl[], double xu[], size_t dim) +{ + size_t j; + + double vol = 1.0; + + s->bins = 1; + + for (j = 0; j < dim; j++) + { + double dx = xu[j] - xl[j]; + s->delx[j] = dx; + vol *= dx; + + COORD (s, 0, j) = 0.0; + COORD (s, 1, j) = 1.0; + } + + s->vol = vol; +} + + +static void +reset_grid_values (gsl_monte_vegas_state * s) +{ + size_t i, j; + + size_t dim = s->dim; + size_t bins = s->bins; + + for (i = 0; i < bins; i++) + { + for (j = 0; j < dim; j++) + { + VALUE (s, i, j) = 0.0; + } + } +} + +static void +accumulate_distribution (gsl_monte_vegas_state * s, coord bin[], double y) +{ + size_t j; + size_t dim = s->dim; + + for (j = 0; j < dim; j++) + { + int i = bin[j]; + VALUE (s, i, j) += y; + } +} + +static void +random_point (double x[], coord bin[], double *bin_vol, + const coord box[], const double xl[], const double xu[], + gsl_monte_vegas_state * s, gsl_rng * r) +{ + /* Use the random number generator r to return a random position x + in a given box. The value of bin gives the bin location of the + random position (there may be several bins within a given box) */ + + double vol = 1.0; + + size_t j; + + size_t dim = s->dim; + size_t bins = s->bins; + size_t boxes = s->boxes; + + DISCARD_POINTER(xu); /* prevent warning about unused parameter */ + + for (j = 0; j < dim; ++j) + { + /* box[j] + ran gives the position in the box units, while z + is the position in bin units. */ + + double z = ((box[j] + gsl_rng_uniform_pos (r)) / boxes) * bins; + + int k = z; + + double y, bin_width; + + bin[j] = k; + + if (k == 0) + { + bin_width = COORD (s, 1, j); + y = z * bin_width; + } + else + { + bin_width = COORD (s, k + 1, j) - COORD (s, k, j); + y = COORD (s, k, j) + (z - k) * bin_width; + } + + x[j] = xl[j] + y * s->delx[j]; + + vol *= bin_width; + } + + *bin_vol = vol; +} + + +static void +resize_grid (gsl_monte_vegas_state * s, unsigned int bins) +{ + size_t j, k; + size_t dim = s->dim; + + /* weight is ratio of bin sizes */ + + double pts_per_bin = (double) s->bins / (double) bins; + + for (j = 0; j < dim; j++) + { + double xold; + double xnew = 0; + double dw = 0; + int i = 1; + + for (k = 1; k <= s->bins; k++) + { + dw += 1.0; + xold = xnew; + xnew = COORD (s, k, j); + + for (; dw > pts_per_bin; i++) + { + dw -= pts_per_bin; + NEW_COORD (s, i) = xnew - (xnew - xold) * dw; + } + } + + for (k = 1 ; k < bins; k++) + { + COORD(s, k, j) = NEW_COORD(s, k); + } + + COORD (s, bins, j) = 1; + } + + s->bins = bins; +} + +static void +refine_grid (gsl_monte_vegas_state * s) +{ + size_t i, j, k; + size_t dim = s->dim; + size_t bins = s->bins; + + for (j = 0; j < dim; j++) + { + double grid_tot_j, tot_weight; + double * weight = s->weight; + + double oldg = VALUE (s, 0, j); + double newg = VALUE (s, 1, j); + + VALUE (s, 0, j) = (oldg + newg) / 2; + grid_tot_j = VALUE (s, 0, j); + + /* This implements gs[i][j] = (gs[i-1][j]+gs[i][j]+gs[i+1][j])/3 */ + + for (i = 1; i < bins - 1; i++) + { + double rc = oldg + newg; + oldg = newg; + newg = VALUE (s, i + 1, j); + VALUE (s, i, j) = (rc + newg) / 3; + grid_tot_j += VALUE (s, i, j); + } + VALUE (s, bins - 1, j) = (newg + oldg) / 2; + + grid_tot_j += VALUE (s, bins - 1, j); + + tot_weight = 0; + + for (i = 0; i < bins; i++) + { + weight[i] = 0; + + if (VALUE (s, i, j) > 0) + { + oldg = grid_tot_j / VALUE (s, i, j); + /* damped change */ + weight[i] = pow (((oldg - 1) / oldg / log (oldg)), s->alpha); + } + + tot_weight += weight[i]; + +#ifdef DEBUG + printf("weight[%d] = %g\n", i, weight[i]); +#endif + } + + { + double pts_per_bin = tot_weight / bins; + + double xold; + double xnew = 0; + double dw = 0; + i = 1; + + for (k = 0; k < bins; k++) + { + dw += weight[k]; + xold = xnew; + xnew = COORD (s, k + 1, j); + + for (; dw > pts_per_bin; i++) + { + dw -= pts_per_bin; + NEW_COORD (s, i) = xnew - (xnew - xold) * dw / weight[k]; + } + } + + for (k = 1 ; k < bins ; k++) + { + COORD(s, k, j) = NEW_COORD(s, k); + } + + COORD (s, bins, j) = 1; + } + } +} + + +static void +print_lim (gsl_monte_vegas_state * state, + double xl[], double xu[], unsigned long dim) +{ + unsigned long j; + + fprintf (state->ostream, "The limits of integration are:\n"); + for (j = 0; j < dim; ++j) + fprintf (state->ostream, "\nxl[%lu]=%f xu[%lu]=%f", j, xl[j], j, xu[j]); + fprintf (state->ostream, "\n"); + fflush (state->ostream); +} + +static void +print_head (gsl_monte_vegas_state * state, + unsigned long num_dim, unsigned long calls, + unsigned int it_num, unsigned int bins, unsigned int boxes) +{ + fprintf (state->ostream, + "\nnum_dim=%lu, calls=%lu, it_num=%d, max_it_num=%d ", + num_dim, calls, it_num, state->iterations); + fprintf (state->ostream, + "verb=%d, alph=%.2f,\nmode=%d, bins=%d, boxes=%d\n", + state->verbose, state->alpha, state->mode, bins, boxes); + fprintf (state->ostream, + "\n single.......iteration "); + fprintf (state->ostream, "accumulated......results \n"); + + fprintf (state->ostream, + "iteration integral sigma integral "); + fprintf (state->ostream, " sigma chi-sq/it\n\n"); + fflush (state->ostream); + +} + +static void +print_res (gsl_monte_vegas_state * state, + unsigned int itr, + double res, double err, + double cum_res, double cum_err, + double chi_sq) +{ + fprintf (state->ostream, + "%4d %6.4e %10.2e %6.4e %8.2e %10.2e\n", + itr, res, err, cum_res, cum_err, chi_sq); + fflush (state->ostream); +} + +static void +print_dist (gsl_monte_vegas_state * state, unsigned long dim) +{ + unsigned long i, j; + int p = state->verbose; + if (p < 1) + return; + + for (j = 0; j < dim; ++j) + { + fprintf (state->ostream, "\n axis %lu \n", j); + fprintf (state->ostream, " x g\n"); + for (i = 0; i < state->bins; i++) + { + fprintf (state->ostream, "weight [%11.2e , %11.2e] = ", + COORD (state, i, j), COORD(state,i+1,j)); + fprintf (state->ostream, " %11.2e\n", VALUE (state, i, j)); + + } + fprintf (state->ostream, "\n"); + } + fprintf (state->ostream, "\n"); + fflush (state->ostream); + +} + +static void +print_grid (gsl_monte_vegas_state * state, unsigned long dim) +{ + unsigned long i, j; + int p = state->verbose; + if (p < 1) + return; + + for (j = 0; j < dim; ++j) + { + fprintf (state->ostream, "\n axis %lu \n", j); + fprintf (state->ostream, " x \n"); + for (i = 0; i <= state->bins; i++) + { + fprintf (state->ostream, "%11.2e", COORD (state, i, j)); + if (i % 5 == 4) + fprintf (state->ostream, "\n"); + } + fprintf (state->ostream, "\n"); + } + fprintf (state->ostream, "\n"); + fflush (state->ostream); + +} + diff --git a/gsl-2.5/monte/vegas.lo b/gsl-2.5/monte/vegas.lo new file mode 100644 index 00000000..537d9ff4 --- /dev/null +++ b/gsl-2.5/monte/vegas.lo @@ -0,0 +1,12 @@ +# vegas.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/vegas.o' + +# Name of the non-PIC object +non_pic_object='vegas.o' + diff --git a/gsl-2.5/movstat/.deps/alloc.Plo b/gsl-2.5/movstat/.deps/alloc.Plo new file mode 100644 index 00000000..a7018d93 --- /dev/null +++ b/gsl-2.5/movstat/.deps/alloc.Plo @@ -0,0 +1,253 @@ +alloc.lo: alloc.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_movstat.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_complex.h \ + ../gsl/gsl_check_range.h ../gsl/gsl_vector_long_double.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_vector_complex.h \ + ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_movstat.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: diff --git a/gsl-2.5/movstat/.deps/apply.Plo b/gsl-2.5/movstat/.deps/apply.Plo new file mode 100644 index 00000000..70b401a6 --- /dev/null +++ b/gsl-2.5/movstat/.deps/apply.Plo @@ -0,0 +1,253 @@ +apply.lo: apply.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_math.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_vector.h ../gsl/gsl_vector_complex_long_double.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_movstat.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_movstat.h: diff --git a/gsl-2.5/movstat/.deps/fill.Plo b/gsl-2.5/movstat/.deps/fill.Plo new file mode 100644 index 00000000..03858865 --- /dev/null +++ b/gsl-2.5/movstat/.deps/fill.Plo @@ -0,0 +1,253 @@ +fill.lo: fill.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_math.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_vector.h ../gsl/gsl_vector_complex_long_double.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_movstat.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_movstat.h: diff --git a/gsl-2.5/movstat/.deps/funcacc.Plo b/gsl-2.5/movstat/.deps/funcacc.Plo new file mode 100644 index 00000000..107575e4 --- /dev/null +++ b/gsl-2.5/movstat/.deps/funcacc.Plo @@ -0,0 +1,314 @@ +funcacc.lo: funcacc.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_math.h /usr/include/math.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h /usr/include/stdlib.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_errno.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_movstat.h ../gsl/gsl_sort.h \ + ../gsl/gsl_sort_long_double.h ../gsl/gsl_permutation.h \ + ../gsl/gsl_sort_double.h ../gsl/gsl_sort_float.h ../gsl/gsl_sort_ulong.h \ + ../gsl/gsl_sort_long.h ../gsl/gsl_sort_uint.h ../gsl/gsl_sort_int.h \ + ../gsl/gsl_sort_ushort.h ../gsl/gsl_sort_short.h ../gsl/gsl_sort_uchar.h \ + ../gsl/gsl_sort_char.h ../gsl/gsl_statistics.h \ + ../gsl/gsl_statistics_long_double.h ../gsl/gsl_statistics_double.h \ + ../gsl/gsl_statistics_float.h ../gsl/gsl_statistics_ulong.h \ + ../gsl/gsl_statistics_long.h ../gsl/gsl_statistics_uint.h \ + ../gsl/gsl_statistics_int.h ../gsl/gsl_statistics_ushort.h \ + ../gsl/gsl_statistics_short.h ../gsl/gsl_statistics_uchar.h \ + ../gsl/gsl_statistics_char.h ringbuf.c + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +/usr/include/stdlib.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_movstat.h: + +../gsl/gsl_sort.h: + +../gsl/gsl_sort_long_double.h: + +../gsl/gsl_permutation.h: + +../gsl/gsl_sort_double.h: + +../gsl/gsl_sort_float.h: + +../gsl/gsl_sort_ulong.h: + +../gsl/gsl_sort_long.h: + +../gsl/gsl_sort_uint.h: + +../gsl/gsl_sort_int.h: + +../gsl/gsl_sort_ushort.h: + +../gsl/gsl_sort_short.h: + +../gsl/gsl_sort_uchar.h: + +../gsl/gsl_sort_char.h: + +../gsl/gsl_statistics.h: + +../gsl/gsl_statistics_long_double.h: + +../gsl/gsl_statistics_double.h: + +../gsl/gsl_statistics_float.h: + +../gsl/gsl_statistics_ulong.h: + +../gsl/gsl_statistics_long.h: + +../gsl/gsl_statistics_uint.h: + +../gsl/gsl_statistics_int.h: + +../gsl/gsl_statistics_ushort.h: + +../gsl/gsl_statistics_short.h: + +../gsl/gsl_statistics_uchar.h: + +../gsl/gsl_statistics_char.h: + +ringbuf.c: diff --git a/gsl-2.5/movstat/.deps/madacc.Plo b/gsl-2.5/movstat/.deps/madacc.Plo new file mode 100644 index 00000000..0f8c244f --- /dev/null +++ b/gsl-2.5/movstat/.deps/madacc.Plo @@ -0,0 +1,285 @@ +madacc.lo: madacc.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_math.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_movstat.h ../gsl/gsl_statistics.h \ + ../gsl/gsl_statistics_long_double.h ../gsl/gsl_statistics_double.h \ + ../gsl/gsl_statistics_float.h ../gsl/gsl_statistics_ulong.h \ + ../gsl/gsl_statistics_long.h ../gsl/gsl_statistics_uint.h \ + ../gsl/gsl_statistics_int.h ../gsl/gsl_statistics_ushort.h \ + ../gsl/gsl_statistics_short.h ../gsl/gsl_statistics_uchar.h \ + ../gsl/gsl_statistics_char.h ringbuf.c + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_movstat.h: + +../gsl/gsl_statistics.h: + +../gsl/gsl_statistics_long_double.h: + +../gsl/gsl_statistics_double.h: + +../gsl/gsl_statistics_float.h: + +../gsl/gsl_statistics_ulong.h: + +../gsl/gsl_statistics_long.h: + +../gsl/gsl_statistics_uint.h: + +../gsl/gsl_statistics_int.h: + +../gsl/gsl_statistics_ushort.h: + +../gsl/gsl_statistics_short.h: + +../gsl/gsl_statistics_uchar.h: + +../gsl/gsl_statistics_char.h: + +ringbuf.c: diff --git a/gsl-2.5/movstat/.deps/medacc.Plo b/gsl-2.5/movstat/.deps/medacc.Plo new file mode 100644 index 00000000..46f54413 --- /dev/null +++ b/gsl-2.5/movstat/.deps/medacc.Plo @@ -0,0 +1,254 @@ +medacc.lo: medacc.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_math.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_movstat.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_complex.h \ + ../gsl/gsl_check_range.h ../gsl/gsl_vector_long_double.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_vector_complex.h \ + ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_movstat.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: diff --git a/gsl-2.5/movstat/.deps/mmacc.Plo b/gsl-2.5/movstat/.deps/mmacc.Plo new file mode 100644 index 00000000..6f893835 --- /dev/null +++ b/gsl-2.5/movstat/.deps/mmacc.Plo @@ -0,0 +1,257 @@ +mmacc.lo: mmacc.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_math.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_movstat.h deque.c ringbuf.c + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_movstat.h: + +deque.c: + +ringbuf.c: diff --git a/gsl-2.5/movstat/.deps/movQn.Plo b/gsl-2.5/movstat/.deps/movQn.Plo new file mode 100644 index 00000000..4bf669a9 --- /dev/null +++ b/gsl-2.5/movstat/.deps/movQn.Plo @@ -0,0 +1,314 @@ +movQn.lo: movQn.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_math.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_vector.h ../gsl/gsl_vector_complex_long_double.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_movstat.h ../gsl/gsl_sort.h \ + ../gsl/gsl_sort_long_double.h ../gsl/gsl_permutation.h \ + ../gsl/gsl_sort_double.h ../gsl/gsl_sort_float.h ../gsl/gsl_sort_ulong.h \ + ../gsl/gsl_sort_long.h ../gsl/gsl_sort_uint.h ../gsl/gsl_sort_int.h \ + ../gsl/gsl_sort_ushort.h ../gsl/gsl_sort_short.h ../gsl/gsl_sort_uchar.h \ + ../gsl/gsl_sort_char.h ../gsl/gsl_statistics.h \ + ../gsl/gsl_statistics_long_double.h ../gsl/gsl_statistics_double.h \ + ../gsl/gsl_statistics_float.h ../gsl/gsl_statistics_ulong.h \ + ../gsl/gsl_statistics_long.h ../gsl/gsl_statistics_uint.h \ + ../gsl/gsl_statistics_int.h ../gsl/gsl_statistics_ushort.h \ + ../gsl/gsl_statistics_short.h ../gsl/gsl_statistics_uchar.h \ + ../gsl/gsl_statistics_char.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_movstat.h: + +../gsl/gsl_sort.h: + +../gsl/gsl_sort_long_double.h: + +../gsl/gsl_permutation.h: + +../gsl/gsl_sort_double.h: + +../gsl/gsl_sort_float.h: + +../gsl/gsl_sort_ulong.h: + +../gsl/gsl_sort_long.h: + +../gsl/gsl_sort_uint.h: + +../gsl/gsl_sort_int.h: + +../gsl/gsl_sort_ushort.h: + +../gsl/gsl_sort_short.h: + +../gsl/gsl_sort_uchar.h: + +../gsl/gsl_sort_char.h: + +../gsl/gsl_statistics.h: + +../gsl/gsl_statistics_long_double.h: + +../gsl/gsl_statistics_double.h: + +../gsl/gsl_statistics_float.h: + +../gsl/gsl_statistics_ulong.h: + +../gsl/gsl_statistics_long.h: + +../gsl/gsl_statistics_uint.h: + +../gsl/gsl_statistics_int.h: + +../gsl/gsl_statistics_ushort.h: + +../gsl/gsl_statistics_short.h: + +../gsl/gsl_statistics_uchar.h: + +../gsl/gsl_statistics_char.h: diff --git a/gsl-2.5/movstat/.deps/movSn.Plo b/gsl-2.5/movstat/.deps/movSn.Plo new file mode 100644 index 00000000..44de538a --- /dev/null +++ b/gsl-2.5/movstat/.deps/movSn.Plo @@ -0,0 +1,314 @@ +movSn.lo: movSn.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_math.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_vector.h ../gsl/gsl_vector_complex_long_double.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_movstat.h ../gsl/gsl_sort.h \ + ../gsl/gsl_sort_long_double.h ../gsl/gsl_permutation.h \ + ../gsl/gsl_sort_double.h ../gsl/gsl_sort_float.h ../gsl/gsl_sort_ulong.h \ + ../gsl/gsl_sort_long.h ../gsl/gsl_sort_uint.h ../gsl/gsl_sort_int.h \ + ../gsl/gsl_sort_ushort.h ../gsl/gsl_sort_short.h ../gsl/gsl_sort_uchar.h \ + ../gsl/gsl_sort_char.h ../gsl/gsl_statistics.h \ + ../gsl/gsl_statistics_long_double.h ../gsl/gsl_statistics_double.h \ + ../gsl/gsl_statistics_float.h ../gsl/gsl_statistics_ulong.h \ + ../gsl/gsl_statistics_long.h ../gsl/gsl_statistics_uint.h \ + ../gsl/gsl_statistics_int.h ../gsl/gsl_statistics_ushort.h \ + ../gsl/gsl_statistics_short.h ../gsl/gsl_statistics_uchar.h \ + ../gsl/gsl_statistics_char.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_movstat.h: + +../gsl/gsl_sort.h: + +../gsl/gsl_sort_long_double.h: + +../gsl/gsl_permutation.h: + +../gsl/gsl_sort_double.h: + +../gsl/gsl_sort_float.h: + +../gsl/gsl_sort_ulong.h: + +../gsl/gsl_sort_long.h: + +../gsl/gsl_sort_uint.h: + +../gsl/gsl_sort_int.h: + +../gsl/gsl_sort_ushort.h: + +../gsl/gsl_sort_short.h: + +../gsl/gsl_sort_uchar.h: + +../gsl/gsl_sort_char.h: + +../gsl/gsl_statistics.h: + +../gsl/gsl_statistics_long_double.h: + +../gsl/gsl_statistics_double.h: + +../gsl/gsl_statistics_float.h: + +../gsl/gsl_statistics_ulong.h: + +../gsl/gsl_statistics_long.h: + +../gsl/gsl_statistics_uint.h: + +../gsl/gsl_statistics_int.h: + +../gsl/gsl_statistics_ushort.h: + +../gsl/gsl_statistics_short.h: + +../gsl/gsl_statistics_uchar.h: + +../gsl/gsl_statistics_char.h: diff --git a/gsl-2.5/movstat/.deps/movmad.Plo b/gsl-2.5/movstat/.deps/movmad.Plo new file mode 100644 index 00000000..9330773e --- /dev/null +++ b/gsl-2.5/movstat/.deps/movmad.Plo @@ -0,0 +1,314 @@ +movmad.lo: movmad.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_math.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_vector.h ../gsl/gsl_vector_complex_long_double.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_movstat.h ../gsl/gsl_sort.h \ + ../gsl/gsl_sort_long_double.h ../gsl/gsl_permutation.h \ + ../gsl/gsl_sort_double.h ../gsl/gsl_sort_float.h ../gsl/gsl_sort_ulong.h \ + ../gsl/gsl_sort_long.h ../gsl/gsl_sort_uint.h ../gsl/gsl_sort_int.h \ + ../gsl/gsl_sort_ushort.h ../gsl/gsl_sort_short.h ../gsl/gsl_sort_uchar.h \ + ../gsl/gsl_sort_char.h ../gsl/gsl_statistics.h \ + ../gsl/gsl_statistics_long_double.h ../gsl/gsl_statistics_double.h \ + ../gsl/gsl_statistics_float.h ../gsl/gsl_statistics_ulong.h \ + ../gsl/gsl_statistics_long.h ../gsl/gsl_statistics_uint.h \ + ../gsl/gsl_statistics_int.h ../gsl/gsl_statistics_ushort.h \ + ../gsl/gsl_statistics_short.h ../gsl/gsl_statistics_uchar.h \ + ../gsl/gsl_statistics_char.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_movstat.h: + +../gsl/gsl_sort.h: + +../gsl/gsl_sort_long_double.h: + +../gsl/gsl_permutation.h: + +../gsl/gsl_sort_double.h: + +../gsl/gsl_sort_float.h: + +../gsl/gsl_sort_ulong.h: + +../gsl/gsl_sort_long.h: + +../gsl/gsl_sort_uint.h: + +../gsl/gsl_sort_int.h: + +../gsl/gsl_sort_ushort.h: + +../gsl/gsl_sort_short.h: + +../gsl/gsl_sort_uchar.h: + +../gsl/gsl_sort_char.h: + +../gsl/gsl_statistics.h: + +../gsl/gsl_statistics_long_double.h: + +../gsl/gsl_statistics_double.h: + +../gsl/gsl_statistics_float.h: + +../gsl/gsl_statistics_ulong.h: + +../gsl/gsl_statistics_long.h: + +../gsl/gsl_statistics_uint.h: + +../gsl/gsl_statistics_int.h: + +../gsl/gsl_statistics_ushort.h: + +../gsl/gsl_statistics_short.h: + +../gsl/gsl_statistics_uchar.h: + +../gsl/gsl_statistics_char.h: diff --git a/gsl-2.5/movstat/.deps/movmean.Plo b/gsl-2.5/movstat/.deps/movmean.Plo new file mode 100644 index 00000000..21b57614 --- /dev/null +++ b/gsl-2.5/movstat/.deps/movmean.Plo @@ -0,0 +1,253 @@ +movmean.lo: movmean.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_movstat.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_complex.h \ + ../gsl/gsl_check_range.h ../gsl/gsl_vector_long_double.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_vector_complex.h \ + ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_movstat.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: diff --git a/gsl-2.5/movstat/.deps/movmedian.Plo b/gsl-2.5/movstat/.deps/movmedian.Plo new file mode 100644 index 00000000..9af0e407 --- /dev/null +++ b/gsl-2.5/movstat/.deps/movmedian.Plo @@ -0,0 +1,253 @@ +movmedian.lo: movmedian.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_movstat.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_complex.h \ + ../gsl/gsl_check_range.h ../gsl/gsl_vector_long_double.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_vector_complex.h \ + ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_movstat.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: diff --git a/gsl-2.5/movstat/.deps/movminmax.Plo b/gsl-2.5/movstat/.deps/movminmax.Plo new file mode 100644 index 00000000..0490c1cb --- /dev/null +++ b/gsl-2.5/movstat/.deps/movminmax.Plo @@ -0,0 +1,253 @@ +movminmax.lo: movminmax.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_movstat.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_complex.h \ + ../gsl/gsl_check_range.h ../gsl/gsl_vector_long_double.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_vector_complex.h \ + ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_movstat.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: diff --git a/gsl-2.5/movstat/.deps/movqqr.Plo b/gsl-2.5/movstat/.deps/movqqr.Plo new file mode 100644 index 00000000..f92a52b3 --- /dev/null +++ b/gsl-2.5/movstat/.deps/movqqr.Plo @@ -0,0 +1,314 @@ +movqqr.lo: movqqr.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_math.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_vector.h ../gsl/gsl_vector_complex_long_double.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_movstat.h ../gsl/gsl_sort.h \ + ../gsl/gsl_sort_long_double.h ../gsl/gsl_permutation.h \ + ../gsl/gsl_sort_double.h ../gsl/gsl_sort_float.h ../gsl/gsl_sort_ulong.h \ + ../gsl/gsl_sort_long.h ../gsl/gsl_sort_uint.h ../gsl/gsl_sort_int.h \ + ../gsl/gsl_sort_ushort.h ../gsl/gsl_sort_short.h ../gsl/gsl_sort_uchar.h \ + ../gsl/gsl_sort_char.h ../gsl/gsl_statistics.h \ + ../gsl/gsl_statistics_long_double.h ../gsl/gsl_statistics_double.h \ + ../gsl/gsl_statistics_float.h ../gsl/gsl_statistics_ulong.h \ + ../gsl/gsl_statistics_long.h ../gsl/gsl_statistics_uint.h \ + ../gsl/gsl_statistics_int.h ../gsl/gsl_statistics_ushort.h \ + ../gsl/gsl_statistics_short.h ../gsl/gsl_statistics_uchar.h \ + ../gsl/gsl_statistics_char.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_movstat.h: + +../gsl/gsl_sort.h: + +../gsl/gsl_sort_long_double.h: + +../gsl/gsl_permutation.h: + +../gsl/gsl_sort_double.h: + +../gsl/gsl_sort_float.h: + +../gsl/gsl_sort_ulong.h: + +../gsl/gsl_sort_long.h: + +../gsl/gsl_sort_uint.h: + +../gsl/gsl_sort_int.h: + +../gsl/gsl_sort_ushort.h: + +../gsl/gsl_sort_short.h: + +../gsl/gsl_sort_uchar.h: + +../gsl/gsl_sort_char.h: + +../gsl/gsl_statistics.h: + +../gsl/gsl_statistics_long_double.h: + +../gsl/gsl_statistics_double.h: + +../gsl/gsl_statistics_float.h: + +../gsl/gsl_statistics_ulong.h: + +../gsl/gsl_statistics_long.h: + +../gsl/gsl_statistics_uint.h: + +../gsl/gsl_statistics_int.h: + +../gsl/gsl_statistics_ushort.h: + +../gsl/gsl_statistics_short.h: + +../gsl/gsl_statistics_uchar.h: + +../gsl/gsl_statistics_char.h: diff --git a/gsl-2.5/movstat/.deps/movsum.Plo b/gsl-2.5/movstat/.deps/movsum.Plo new file mode 100644 index 00000000..157b8ca1 --- /dev/null +++ b/gsl-2.5/movstat/.deps/movsum.Plo @@ -0,0 +1,253 @@ +movsum.lo: movsum.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_movstat.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_complex.h \ + ../gsl/gsl_check_range.h ../gsl/gsl_vector_long_double.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_vector_complex.h \ + ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_movstat.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: diff --git a/gsl-2.5/movstat/.deps/movvariance.Plo b/gsl-2.5/movstat/.deps/movvariance.Plo new file mode 100644 index 00000000..3b7ae92b --- /dev/null +++ b/gsl-2.5/movstat/.deps/movvariance.Plo @@ -0,0 +1,253 @@ +movvariance.lo: movvariance.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_movstat.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_complex.h \ + ../gsl/gsl_check_range.h ../gsl/gsl_vector_long_double.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_vector_complex.h \ + ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_movstat.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: diff --git a/gsl-2.5/movstat/.deps/mvacc.Plo b/gsl-2.5/movstat/.deps/mvacc.Plo new file mode 100644 index 00000000..042a7086 --- /dev/null +++ b/gsl-2.5/movstat/.deps/mvacc.Plo @@ -0,0 +1,253 @@ +mvacc.lo: mvacc.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_math.h /usr/include/math.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h /usr/include/stdlib.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_errno.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_movstat.h ringbuf.c + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +/usr/include/stdlib.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_movstat.h: + +ringbuf.c: diff --git a/gsl-2.5/movstat/.deps/qnacc.Plo b/gsl-2.5/movstat/.deps/qnacc.Plo new file mode 100644 index 00000000..fa0f7e2f --- /dev/null +++ b/gsl-2.5/movstat/.deps/qnacc.Plo @@ -0,0 +1,314 @@ +qnacc.lo: qnacc.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_math.h /usr/include/math.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h /usr/include/stdlib.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_errno.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_movstat.h ../gsl/gsl_sort.h \ + ../gsl/gsl_sort_long_double.h ../gsl/gsl_permutation.h \ + ../gsl/gsl_sort_double.h ../gsl/gsl_sort_float.h ../gsl/gsl_sort_ulong.h \ + ../gsl/gsl_sort_long.h ../gsl/gsl_sort_uint.h ../gsl/gsl_sort_int.h \ + ../gsl/gsl_sort_ushort.h ../gsl/gsl_sort_short.h ../gsl/gsl_sort_uchar.h \ + ../gsl/gsl_sort_char.h ../gsl/gsl_statistics.h \ + ../gsl/gsl_statistics_long_double.h ../gsl/gsl_statistics_double.h \ + ../gsl/gsl_statistics_float.h ../gsl/gsl_statistics_ulong.h \ + ../gsl/gsl_statistics_long.h ../gsl/gsl_statistics_uint.h \ + ../gsl/gsl_statistics_int.h ../gsl/gsl_statistics_ushort.h \ + ../gsl/gsl_statistics_short.h ../gsl/gsl_statistics_uchar.h \ + ../gsl/gsl_statistics_char.h ringbuf.c + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +/usr/include/stdlib.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_movstat.h: + +../gsl/gsl_sort.h: + +../gsl/gsl_sort_long_double.h: + +../gsl/gsl_permutation.h: + +../gsl/gsl_sort_double.h: + +../gsl/gsl_sort_float.h: + +../gsl/gsl_sort_ulong.h: + +../gsl/gsl_sort_long.h: + +../gsl/gsl_sort_uint.h: + +../gsl/gsl_sort_int.h: + +../gsl/gsl_sort_ushort.h: + +../gsl/gsl_sort_short.h: + +../gsl/gsl_sort_uchar.h: + +../gsl/gsl_sort_char.h: + +../gsl/gsl_statistics.h: + +../gsl/gsl_statistics_long_double.h: + +../gsl/gsl_statistics_double.h: + +../gsl/gsl_statistics_float.h: + +../gsl/gsl_statistics_ulong.h: + +../gsl/gsl_statistics_long.h: + +../gsl/gsl_statistics_uint.h: + +../gsl/gsl_statistics_int.h: + +../gsl/gsl_statistics_ushort.h: + +../gsl/gsl_statistics_short.h: + +../gsl/gsl_statistics_uchar.h: + +../gsl/gsl_statistics_char.h: + +ringbuf.c: diff --git a/gsl-2.5/movstat/.deps/qqracc.Plo b/gsl-2.5/movstat/.deps/qqracc.Plo new file mode 100644 index 00000000..170becf8 --- /dev/null +++ b/gsl-2.5/movstat/.deps/qqracc.Plo @@ -0,0 +1,314 @@ +qqracc.lo: qqracc.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_math.h /usr/include/math.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h /usr/include/stdlib.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_errno.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_movstat.h ../gsl/gsl_sort.h \ + ../gsl/gsl_sort_long_double.h ../gsl/gsl_permutation.h \ + ../gsl/gsl_sort_double.h ../gsl/gsl_sort_float.h ../gsl/gsl_sort_ulong.h \ + ../gsl/gsl_sort_long.h ../gsl/gsl_sort_uint.h ../gsl/gsl_sort_int.h \ + ../gsl/gsl_sort_ushort.h ../gsl/gsl_sort_short.h ../gsl/gsl_sort_uchar.h \ + ../gsl/gsl_sort_char.h ../gsl/gsl_statistics.h \ + ../gsl/gsl_statistics_long_double.h ../gsl/gsl_statistics_double.h \ + ../gsl/gsl_statistics_float.h ../gsl/gsl_statistics_ulong.h \ + ../gsl/gsl_statistics_long.h ../gsl/gsl_statistics_uint.h \ + ../gsl/gsl_statistics_int.h ../gsl/gsl_statistics_ushort.h \ + ../gsl/gsl_statistics_short.h ../gsl/gsl_statistics_uchar.h \ + ../gsl/gsl_statistics_char.h ringbuf.c + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +/usr/include/stdlib.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_movstat.h: + +../gsl/gsl_sort.h: + +../gsl/gsl_sort_long_double.h: + +../gsl/gsl_permutation.h: + +../gsl/gsl_sort_double.h: + +../gsl/gsl_sort_float.h: + +../gsl/gsl_sort_ulong.h: + +../gsl/gsl_sort_long.h: + +../gsl/gsl_sort_uint.h: + +../gsl/gsl_sort_int.h: + +../gsl/gsl_sort_ushort.h: + +../gsl/gsl_sort_short.h: + +../gsl/gsl_sort_uchar.h: + +../gsl/gsl_sort_char.h: + +../gsl/gsl_statistics.h: + +../gsl/gsl_statistics_long_double.h: + +../gsl/gsl_statistics_double.h: + +../gsl/gsl_statistics_float.h: + +../gsl/gsl_statistics_ulong.h: + +../gsl/gsl_statistics_long.h: + +../gsl/gsl_statistics_uint.h: + +../gsl/gsl_statistics_int.h: + +../gsl/gsl_statistics_ushort.h: + +../gsl/gsl_statistics_short.h: + +../gsl/gsl_statistics_uchar.h: + +../gsl/gsl_statistics_char.h: + +ringbuf.c: diff --git a/gsl-2.5/movstat/.deps/snacc.Plo b/gsl-2.5/movstat/.deps/snacc.Plo new file mode 100644 index 00000000..64e4192a --- /dev/null +++ b/gsl-2.5/movstat/.deps/snacc.Plo @@ -0,0 +1,314 @@ +snacc.lo: snacc.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_math.h /usr/include/math.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h /usr/include/stdlib.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_errno.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_movstat.h ../gsl/gsl_sort.h \ + ../gsl/gsl_sort_long_double.h ../gsl/gsl_permutation.h \ + ../gsl/gsl_sort_double.h ../gsl/gsl_sort_float.h ../gsl/gsl_sort_ulong.h \ + ../gsl/gsl_sort_long.h ../gsl/gsl_sort_uint.h ../gsl/gsl_sort_int.h \ + ../gsl/gsl_sort_ushort.h ../gsl/gsl_sort_short.h ../gsl/gsl_sort_uchar.h \ + ../gsl/gsl_sort_char.h ../gsl/gsl_statistics.h \ + ../gsl/gsl_statistics_long_double.h ../gsl/gsl_statistics_double.h \ + ../gsl/gsl_statistics_float.h ../gsl/gsl_statistics_ulong.h \ + ../gsl/gsl_statistics_long.h ../gsl/gsl_statistics_uint.h \ + ../gsl/gsl_statistics_int.h ../gsl/gsl_statistics_ushort.h \ + ../gsl/gsl_statistics_short.h ../gsl/gsl_statistics_uchar.h \ + ../gsl/gsl_statistics_char.h ringbuf.c + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +/usr/include/stdlib.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_movstat.h: + +../gsl/gsl_sort.h: + +../gsl/gsl_sort_long_double.h: + +../gsl/gsl_permutation.h: + +../gsl/gsl_sort_double.h: + +../gsl/gsl_sort_float.h: + +../gsl/gsl_sort_ulong.h: + +../gsl/gsl_sort_long.h: + +../gsl/gsl_sort_uint.h: + +../gsl/gsl_sort_int.h: + +../gsl/gsl_sort_ushort.h: + +../gsl/gsl_sort_short.h: + +../gsl/gsl_sort_uchar.h: + +../gsl/gsl_sort_char.h: + +../gsl/gsl_statistics.h: + +../gsl/gsl_statistics_long_double.h: + +../gsl/gsl_statistics_double.h: + +../gsl/gsl_statistics_float.h: + +../gsl/gsl_statistics_ulong.h: + +../gsl/gsl_statistics_long.h: + +../gsl/gsl_statistics_uint.h: + +../gsl/gsl_statistics_int.h: + +../gsl/gsl_statistics_ushort.h: + +../gsl/gsl_statistics_short.h: + +../gsl/gsl_statistics_uchar.h: + +../gsl/gsl_statistics_char.h: + +ringbuf.c: diff --git a/gsl-2.5/movstat/.deps/sumacc.Plo b/gsl-2.5/movstat/.deps/sumacc.Plo new file mode 100644 index 00000000..a0b8f628 --- /dev/null +++ b/gsl-2.5/movstat/.deps/sumacc.Plo @@ -0,0 +1,253 @@ +sumacc.lo: sumacc.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_math.h /usr/include/math.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h /usr/include/stdlib.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_errno.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_movstat.h ringbuf.c + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +/usr/include/stdlib.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_movstat.h: + +ringbuf.c: diff --git a/gsl-2.5/movstat/.deps/test.Po b/gsl-2.5/movstat/.deps/test.Po new file mode 100644 index 00000000..6947975f --- /dev/null +++ b/gsl-2.5/movstat/.deps/test.Po @@ -0,0 +1,420 @@ +test.o: test.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + /usr/include/string.h /usr/include/xlocale.h /usr/include/bits/string.h \ + /usr/include/bits/string2.h ../gsl/gsl_math.h ../gsl/gsl_sys.h \ + ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_movstat.h \ + ../gsl/gsl_vector.h ../gsl/gsl_vector_complex_long_double.h \ + ../gsl/gsl_errno.h /usr/include/stdio.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_statistics.h \ + ../gsl/gsl_statistics_long_double.h ../gsl/gsl_statistics_double.h \ + ../gsl/gsl_statistics_float.h ../gsl/gsl_statistics_ulong.h \ + ../gsl/gsl_statistics_long.h ../gsl/gsl_statistics_uint.h \ + ../gsl/gsl_statistics_int.h ../gsl/gsl_statistics_ushort.h \ + ../gsl/gsl_statistics_short.h ../gsl/gsl_statistics_uchar.h \ + ../gsl/gsl_statistics_char.h ../gsl/gsl_test.h ../gsl/gsl_rng.h \ + ../gsl/gsl_randist.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_ieee_utils.h test_mad.c test_mean.c \ + test_median.c test_minmax.c test_Qn.c ../gsl/gsl_sort.h \ + ../gsl/gsl_sort_long_double.h ../gsl/gsl_permutation.h \ + ../gsl/gsl_sort_double.h ../gsl/gsl_sort_float.h ../gsl/gsl_sort_ulong.h \ + ../gsl/gsl_sort_long.h ../gsl/gsl_sort_uint.h ../gsl/gsl_sort_int.h \ + ../gsl/gsl_sort_ushort.h ../gsl/gsl_sort_short.h ../gsl/gsl_sort_uchar.h \ + ../gsl/gsl_sort_char.h test_qqr.c test_sum.c test_Sn.c \ + ../gsl/gsl_sort_vector.h ../gsl/gsl_sort_vector_long_double.h \ + ../gsl/gsl_sort_vector_double.h ../gsl/gsl_sort_vector_float.h \ + ../gsl/gsl_sort_vector_ulong.h ../gsl/gsl_sort_vector_long.h \ + ../gsl/gsl_sort_vector_uint.h ../gsl/gsl_sort_vector_int.h \ + ../gsl/gsl_sort_vector_ushort.h ../gsl/gsl_sort_vector_short.h \ + ../gsl/gsl_sort_vector_uchar.h ../gsl/gsl_sort_vector_char.h \ + test_variance.c + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string.h: + +/usr/include/bits/string2.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_movstat.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_statistics.h: + +../gsl/gsl_statistics_long_double.h: + +../gsl/gsl_statistics_double.h: + +../gsl/gsl_statistics_float.h: + +../gsl/gsl_statistics_ulong.h: + +../gsl/gsl_statistics_long.h: + +../gsl/gsl_statistics_uint.h: + +../gsl/gsl_statistics_int.h: + +../gsl/gsl_statistics_ushort.h: + +../gsl/gsl_statistics_short.h: + +../gsl/gsl_statistics_uchar.h: + +../gsl/gsl_statistics_char.h: + +../gsl/gsl_test.h: + +../gsl/gsl_rng.h: + +../gsl/gsl_randist.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_ieee_utils.h: + +test_mad.c: + +test_mean.c: + +test_median.c: + +test_minmax.c: + +test_Qn.c: + +../gsl/gsl_sort.h: + +../gsl/gsl_sort_long_double.h: + +../gsl/gsl_permutation.h: + +../gsl/gsl_sort_double.h: + +../gsl/gsl_sort_float.h: + +../gsl/gsl_sort_ulong.h: + +../gsl/gsl_sort_long.h: + +../gsl/gsl_sort_uint.h: + +../gsl/gsl_sort_int.h: + +../gsl/gsl_sort_ushort.h: + +../gsl/gsl_sort_short.h: + +../gsl/gsl_sort_uchar.h: + +../gsl/gsl_sort_char.h: + +test_qqr.c: + +test_sum.c: + +test_Sn.c: + +../gsl/gsl_sort_vector.h: + +../gsl/gsl_sort_vector_long_double.h: + +../gsl/gsl_sort_vector_double.h: + +../gsl/gsl_sort_vector_float.h: + +../gsl/gsl_sort_vector_ulong.h: + +../gsl/gsl_sort_vector_long.h: + +../gsl/gsl_sort_vector_uint.h: + +../gsl/gsl_sort_vector_int.h: + +../gsl/gsl_sort_vector_ushort.h: + +../gsl/gsl_sort_vector_short.h: + +../gsl/gsl_sort_vector_uchar.h: + +../gsl/gsl_sort_vector_char.h: + +test_variance.c: diff --git a/gsl-2.5/movstat/.libs/libgslmovstat.la b/gsl-2.5/movstat/.libs/libgslmovstat.la new file mode 120000 index 00000000..145539c7 --- /dev/null +++ b/gsl-2.5/movstat/.libs/libgslmovstat.la @@ -0,0 +1 @@ +../libgslmovstat.la \ No newline at end of file diff --git a/gsl-2.5/movstat/Makefile b/gsl-2.5/movstat/Makefile new file mode 100644 index 00000000..bb722856 --- /dev/null +++ b/gsl-2.5/movstat/Makefile @@ -0,0 +1,1075 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# movstat/Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + + + + +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/gsl +pkgincludedir = $(includedir)/gsl +pkglibdir = $(libdir)/gsl +pkglibexecdir = $(libexecdir)/gsl +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = x86_64-unknown-linux-gnu +host_triplet = x86_64-unknown-linux-gnu +check_PROGRAMS = test$(EXEEXT) +subdir = movstat +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp \ + $(noinst_HEADERS) $(pkginclude_HEADERS) \ + $(top_srcdir)/test-driver TODO +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +libgslmovstat_la_LIBADD = +am_libgslmovstat_la_OBJECTS = alloc.lo apply.lo fill.lo funcacc.lo \ + madacc.lo medacc.lo mmacc.lo movmad.lo movmean.lo movmedian.lo \ + movminmax.lo movsum.lo movSn.lo movQn.lo movqqr.lo \ + movvariance.lo mvacc.lo qnacc.lo qqracc.lo snacc.lo sumacc.lo +libgslmovstat_la_OBJECTS = $(am_libgslmovstat_la_OBJECTS) +AM_V_lt = $(am__v_lt_$(V)) +am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) +am__v_lt_0 = --silent +am__v_lt_1 = +am_test_OBJECTS = test.$(OBJEXT) +test_OBJECTS = $(am_test_OBJECTS) +test_DEPENDENCIES = libgslmovstat.la ../statistics/libgslstatistics.la \ + ../sort/libgslsort.la ../ieee-utils/libgslieeeutils.la \ + ../randist/libgslrandist.la ../rng/libgslrng.la \ + ../specfunc/libgslspecfunc.la ../complex/libgslcomplex.la \ + ../err/libgslerr.la ../test/libgsltest.la \ + ../vector/libgslvector.la ../block/libgslblock.la \ + ../sys/libgslsys.la ../utils/libutils.la +AM_V_P = $(am__v_P_$(V)) +am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY)) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_$(V)) +am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_$(V)) +am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I. -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_$(V)) +am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_$(V)) +am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libgslmovstat_la_SOURCES) $(test_SOURCES) +DIST_SOURCES = $(libgslmovstat_la_SOURCES) $(test_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(pkgincludedir)" +HEADERS = $(noinst_HEADERS) $(pkginclude_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = .test +LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing aclocal-1.13 +AMTAR = $${TAR-tar} +AM_DEFAULT_VERBOSITY = 1 +AR = ar +AS = as +AUTOCONF = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing autoconf +AUTOHEADER = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing autoheader +AUTOMAKE = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing automake-1.13 +AWK = gawk +CC = gcc +CCDEPMODE = depmode=gcc3 +CFLAGS = -g -O2 +CPP = gcc -E +CPPFLAGS = +CYGPATH_W = echo +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +DLLTOOL = false +DSYMUTIL = +DUMPBIN = +ECHO_C = +ECHO_N = -n +ECHO_T = +EGREP = /usr/bin/grep -E +EXEEXT = +FGREP = /usr/bin/grep -F +GREP = /usr/bin/grep +GSLCBLAS_LDFLAGS = +GSL_CFLAGS = -I${prefix}/include +GSL_LDFLAGS = +GSL_LIBADD = +GSL_LIBM = -lm +GSL_LIBS = -L${exec_prefix}/lib -lgsl +GSL_LT_CBLAS_VERSION = 0:0:0 +GSL_LT_VERSION = 24:0:1 +GSL_MAJOR_VERSION = 2 +GSL_MINOR_VERSION = 5 +HAVE_AIX_IEEE_INTERFACE = +HAVE_DARWIN86_IEEE_INTERFACE = +HAVE_DARWIN_IEEE_INTERFACE = +HAVE_FREEBSD_IEEE_INTERFACE = +HAVE_GNUM68K_IEEE_INTERFACE = +HAVE_GNUPPC_IEEE_INTERFACE = +HAVE_GNUSPARC_IEEE_INTERFACE = +HAVE_GNUX86_IEEE_INTERFACE = +HAVE_HPUX11_IEEE_INTERFACE = +HAVE_HPUX_IEEE_INTERFACE = +HAVE_IRIX_IEEE_INTERFACE = +HAVE_NETBSD_IEEE_INTERFACE = +HAVE_OPENBSD_IEEE_INTERFACE = +HAVE_OS2EMX_IEEE_INTERFACE = +HAVE_SOLARIS_IEEE_INTERFACE = +HAVE_SUNOS4_IEEE_INTERFACE = +HAVE_TRU64_IEEE_INTERFACE = +INSTALL = /usr/bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = $(install_sh) -c -s +LD = /usr/bin/ld -m elf_x86_64 +LDFLAGS = +LIBM = -lm +LIBOBJS = +LIBS = -lm +LIBTOOL = $(SHELL) $(top_builddir)/libtool +LIPO = +LN_S = ln -s +LTLIBOBJS = +MAINT = # +MAKEINFO = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing makeinfo +MANIFEST_TOOL = : +MKDIR_P = /usr/bin/mkdir -p +NM = /usr/bin/nm -B +NMEDIT = +OBJDUMP = objdump +OBJEXT = o +OTOOL = +OTOOL64 = +PACKAGE = gsl +PACKAGE_BUGREPORT = +PACKAGE_NAME = gsl +PACKAGE_STRING = gsl 2.5 +PACKAGE_TARNAME = gsl +PACKAGE_URL = +PACKAGE_VERSION = 2.5 +PATH_SEPARATOR = : +RANLIB = ranlib +SED = /usr/bin/sed +SET_MAKE = +SHELL = /bin/sh +STRIP = strip +VERSION = 2.5 +abs_builddir = /home/groups/kipac/chto/package/gsl/gsl-2.5/movstat +abs_srcdir = /home/groups/kipac/chto/package/gsl/gsl-2.5/movstat +abs_top_builddir = /home/groups/kipac/chto/package/gsl/gsl-2.5 +abs_top_srcdir = /home/groups/kipac/chto/package/gsl/gsl-2.5 +ac_ct_AR = ar +ac_ct_CC = gcc +ac_ct_DUMPBIN = +am__include = include +am__leading_dot = . +am__quote = +am__tar = $${TAR-tar} chof - "$$tardir" +am__untar = $${TAR-tar} xf - +bindir = ${exec_prefix}/bin +build = x86_64-unknown-linux-gnu +build_alias = +build_cpu = x86_64 +build_os = linux-gnu +build_vendor = unknown +builddir = . +datadir = ${datarootdir} +datarootdir = ${prefix}/share +docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} +dvidir = ${docdir} +exec_prefix = ${prefix} +host = x86_64-unknown-linux-gnu +host_alias = +host_cpu = x86_64 +host_os = linux-gnu +host_vendor = unknown +htmldir = ${docdir} +includedir = ${prefix}/include +infodir = ${datarootdir}/info +install_sh = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/install-sh +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +localedir = ${datarootdir}/locale +localstatedir = ${prefix}/var +mandir = ${datarootdir}/man +mkdir_p = $(MKDIR_P) +oldincludedir = /usr/include +pdfdir = ${docdir} +prefix = /home/groups/kipac/chto/package/gsl/gsl_lib +program_transform_name = s,x,x, +psdir = ${docdir} +sbindir = ${exec_prefix}/sbin +sharedstatedir = ${prefix}/com +srcdir = . +sysconfdir = ${prefix}/etc +target_alias = +top_build_prefix = ../ +top_builddir = .. +top_srcdir = .. +noinst_LTLIBRARIES = libgslmovstat.la +pkginclude_HEADERS = gsl_movstat.h +AM_CPPFLAGS = -I$(top_srcdir) +libgslmovstat_la_SOURCES = \ + alloc.c \ + apply.c \ + fill.c \ + funcacc.c \ + madacc.c \ + medacc.c \ + mmacc.c \ + movmad.c \ + movmean.c \ + movmedian.c \ + movminmax.c \ + movsum.c \ + movSn.c \ + movQn.c \ + movqqr.c \ + movvariance.c \ + mvacc.c \ + qnacc.c \ + qqracc.c \ + snacc.c \ + sumacc.c + +noinst_HEADERS = deque.c ringbuf.c test_mad.c test_mean.c test_median.c test_minmax.c test_Qn.c test_qqr.c test_Sn.c test_sum.c test_variance.c +TESTS = $(check_PROGRAMS) +test_SOURCES = test.c +test_LDADD = libgslmovstat.la ../statistics/libgslstatistics.la ../sort/libgslsort.la ../ieee-utils/libgslieeeutils.la ../randist/libgslrandist.la ../rng/libgslrng.la ../specfunc/libgslspecfunc.la ../complex/libgslcomplex.la ../err/libgslerr.la ../test/libgsltest.la ../vector/libgslvector.la ../block/libgslblock.la ../sys/libgslsys.la ../utils/libutils.la +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu movstat/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu movstat/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: # $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): # $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libgslmovstat.la: $(libgslmovstat_la_OBJECTS) $(libgslmovstat_la_DEPENDENCIES) $(EXTRA_libgslmovstat_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(libgslmovstat_la_OBJECTS) $(libgslmovstat_la_LIBADD) $(LIBS) + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) $(EXTRA_test_DEPENDENCIES) + @rm -f test$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_OBJECTS) $(test_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +include ./$(DEPDIR)/alloc.Plo +include ./$(DEPDIR)/apply.Plo +include ./$(DEPDIR)/fill.Plo +include ./$(DEPDIR)/funcacc.Plo +include ./$(DEPDIR)/madacc.Plo +include ./$(DEPDIR)/medacc.Plo +include ./$(DEPDIR)/mmacc.Plo +include ./$(DEPDIR)/movQn.Plo +include ./$(DEPDIR)/movSn.Plo +include ./$(DEPDIR)/movmad.Plo +include ./$(DEPDIR)/movmean.Plo +include ./$(DEPDIR)/movmedian.Plo +include ./$(DEPDIR)/movminmax.Plo +include ./$(DEPDIR)/movqqr.Plo +include ./$(DEPDIR)/movsum.Plo +include ./$(DEPDIR)/movvariance.Plo +include ./$(DEPDIR)/mvacc.Plo +include ./$(DEPDIR)/qnacc.Plo +include ./$(DEPDIR)/qqracc.Plo +include ./$(DEPDIR)/snacc.Plo +include ./$(DEPDIR)/sumacc.Plo +include ./$(DEPDIR)/test.Po + +.c.o: + $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# $(AM_V_CC)source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(COMPILE) -c $< + +.c.obj: + $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# $(AM_V_CC)source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: + $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +# $(AM_V_CC)source='$<' object='$@' libtool=yes \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-pkgincludeHEADERS: $(pkginclude_HEADERS) + @$(NORMAL_INSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \ + done + +uninstall-pkgincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + else \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_PROGRAMS) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +test.log: test$(EXEEXT) + @p='test$(EXEEXT)'; \ + b='test'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +#.test$(EXEEXT).log: +# @p='$<'; \ +# $(am__set_b); \ +# $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +# --log-file $$b.log --trs-file $$b.trs \ +# $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +# "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-am +all-am: Makefile $(LTLIBRARIES) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(pkgincludedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-pkgincludeHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-pkgincludeHEADERS + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES cscopelist-am ctags ctags-am distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-pkgincludeHEADERS \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + recheck tags tags-am uninstall uninstall-am \ + uninstall-pkgincludeHEADERS + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gsl-2.5/movstat/Makefile.am b/gsl-2.5/movstat/Makefile.am new file mode 100644 index 00000000..7765a211 --- /dev/null +++ b/gsl-2.5/movstat/Makefile.am @@ -0,0 +1,36 @@ +noinst_LTLIBRARIES = libgslmovstat.la + +pkginclude_HEADERS = gsl_movstat.h + +AM_CPPFLAGS = -I$(top_srcdir) + +libgslmovstat_la_SOURCES = \ + alloc.c \ + apply.c \ + fill.c \ + funcacc.c \ + madacc.c \ + medacc.c \ + mmacc.c \ + movmad.c \ + movmean.c \ + movmedian.c \ + movminmax.c \ + movsum.c \ + movSn.c \ + movQn.c \ + movqqr.c \ + movvariance.c \ + mvacc.c \ + qnacc.c \ + qqracc.c \ + snacc.c \ + sumacc.c + +noinst_HEADERS = deque.c ringbuf.c test_mad.c test_mean.c test_median.c test_minmax.c test_Qn.c test_qqr.c test_Sn.c test_sum.c test_variance.c + +check_PROGRAMS = test +TESTS = $(check_PROGRAMS) + +test_SOURCES = test.c +test_LDADD = libgslmovstat.la ../statistics/libgslstatistics.la ../sort/libgslsort.la ../ieee-utils/libgslieeeutils.la ../randist/libgslrandist.la ../rng/libgslrng.la ../specfunc/libgslspecfunc.la ../complex/libgslcomplex.la ../err/libgslerr.la ../test/libgsltest.la ../vector/libgslvector.la ../block/libgslblock.la ../sys/libgslsys.la ../utils/libutils.la diff --git a/gsl-2.5/movstat/Makefile.in b/gsl-2.5/movstat/Makefile.in new file mode 100644 index 00000000..be566b45 --- /dev/null +++ b/gsl-2.5/movstat/Makefile.in @@ -0,0 +1,1075 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + + +VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +check_PROGRAMS = test$(EXEEXT) +subdir = movstat +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp \ + $(noinst_HEADERS) $(pkginclude_HEADERS) \ + $(top_srcdir)/test-driver TODO +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +libgslmovstat_la_LIBADD = +am_libgslmovstat_la_OBJECTS = alloc.lo apply.lo fill.lo funcacc.lo \ + madacc.lo medacc.lo mmacc.lo movmad.lo movmean.lo movmedian.lo \ + movminmax.lo movsum.lo movSn.lo movQn.lo movqqr.lo \ + movvariance.lo mvacc.lo qnacc.lo qqracc.lo snacc.lo sumacc.lo +libgslmovstat_la_OBJECTS = $(am_libgslmovstat_la_OBJECTS) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +am_test_OBJECTS = test.$(OBJEXT) +test_OBJECTS = $(am_test_OBJECTS) +test_DEPENDENCIES = libgslmovstat.la ../statistics/libgslstatistics.la \ + ../sort/libgslsort.la ../ieee-utils/libgslieeeutils.la \ + ../randist/libgslrandist.la ../rng/libgslrng.la \ + ../specfunc/libgslspecfunc.la ../complex/libgslcomplex.la \ + ../err/libgslerr.la ../test/libgsltest.la \ + ../vector/libgslvector.la ../block/libgslblock.la \ + ../sys/libgslsys.la ../utils/libutils.la +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libgslmovstat_la_SOURCES) $(test_SOURCES) +DIST_SOURCES = $(libgslmovstat_la_SOURCES) $(test_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(pkgincludedir)" +HEADERS = $(noinst_HEADERS) $(pkginclude_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = @EXEEXT@ .test +LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +GSLCBLAS_LDFLAGS = @GSLCBLAS_LDFLAGS@ +GSL_CFLAGS = @GSL_CFLAGS@ +GSL_LDFLAGS = @GSL_LDFLAGS@ +GSL_LIBADD = @GSL_LIBADD@ +GSL_LIBM = @GSL_LIBM@ +GSL_LIBS = @GSL_LIBS@ +GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ +GSL_LT_VERSION = @GSL_LT_VERSION@ +GSL_MAJOR_VERSION = @GSL_MAJOR_VERSION@ +GSL_MINOR_VERSION = @GSL_MINOR_VERSION@ +HAVE_AIX_IEEE_INTERFACE = @HAVE_AIX_IEEE_INTERFACE@ +HAVE_DARWIN86_IEEE_INTERFACE = @HAVE_DARWIN86_IEEE_INTERFACE@ +HAVE_DARWIN_IEEE_INTERFACE = @HAVE_DARWIN_IEEE_INTERFACE@ +HAVE_FREEBSD_IEEE_INTERFACE = @HAVE_FREEBSD_IEEE_INTERFACE@ +HAVE_GNUM68K_IEEE_INTERFACE = @HAVE_GNUM68K_IEEE_INTERFACE@ +HAVE_GNUPPC_IEEE_INTERFACE = @HAVE_GNUPPC_IEEE_INTERFACE@ +HAVE_GNUSPARC_IEEE_INTERFACE = @HAVE_GNUSPARC_IEEE_INTERFACE@ +HAVE_GNUX86_IEEE_INTERFACE = @HAVE_GNUX86_IEEE_INTERFACE@ +HAVE_HPUX11_IEEE_INTERFACE = @HAVE_HPUX11_IEEE_INTERFACE@ +HAVE_HPUX_IEEE_INTERFACE = @HAVE_HPUX_IEEE_INTERFACE@ +HAVE_IRIX_IEEE_INTERFACE = @HAVE_IRIX_IEEE_INTERFACE@ +HAVE_NETBSD_IEEE_INTERFACE = @HAVE_NETBSD_IEEE_INTERFACE@ +HAVE_OPENBSD_IEEE_INTERFACE = @HAVE_OPENBSD_IEEE_INTERFACE@ +HAVE_OS2EMX_IEEE_INTERFACE = @HAVE_OS2EMX_IEEE_INTERFACE@ +HAVE_SOLARIS_IEEE_INTERFACE = @HAVE_SOLARIS_IEEE_INTERFACE@ +HAVE_SUNOS4_IEEE_INTERFACE = @HAVE_SUNOS4_IEEE_INTERFACE@ +HAVE_TRU64_IEEE_INTERFACE = @HAVE_TRU64_IEEE_INTERFACE@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBM = @LIBM@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +noinst_LTLIBRARIES = libgslmovstat.la +pkginclude_HEADERS = gsl_movstat.h +AM_CPPFLAGS = -I$(top_srcdir) +libgslmovstat_la_SOURCES = \ + alloc.c \ + apply.c \ + fill.c \ + funcacc.c \ + madacc.c \ + medacc.c \ + mmacc.c \ + movmad.c \ + movmean.c \ + movmedian.c \ + movminmax.c \ + movsum.c \ + movSn.c \ + movQn.c \ + movqqr.c \ + movvariance.c \ + mvacc.c \ + qnacc.c \ + qqracc.c \ + snacc.c \ + sumacc.c + +noinst_HEADERS = deque.c ringbuf.c test_mad.c test_mean.c test_median.c test_minmax.c test_Qn.c test_qqr.c test_Sn.c test_sum.c test_variance.c +TESTS = $(check_PROGRAMS) +test_SOURCES = test.c +test_LDADD = libgslmovstat.la ../statistics/libgslstatistics.la ../sort/libgslsort.la ../ieee-utils/libgslieeeutils.la ../randist/libgslrandist.la ../rng/libgslrng.la ../specfunc/libgslspecfunc.la ../complex/libgslcomplex.la ../err/libgslerr.la ../test/libgsltest.la ../vector/libgslvector.la ../block/libgslblock.la ../sys/libgslsys.la ../utils/libutils.la +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu movstat/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu movstat/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libgslmovstat.la: $(libgslmovstat_la_OBJECTS) $(libgslmovstat_la_DEPENDENCIES) $(EXTRA_libgslmovstat_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(libgslmovstat_la_OBJECTS) $(libgslmovstat_la_LIBADD) $(LIBS) + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) $(EXTRA_test_DEPENDENCIES) + @rm -f test$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_OBJECTS) $(test_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/alloc.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/apply.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fill.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/funcacc.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/madacc.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/medacc.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mmacc.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/movQn.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/movSn.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/movmad.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/movmean.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/movmedian.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/movminmax.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/movqqr.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/movsum.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/movvariance.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mvacc.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/qnacc.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/qqracc.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/snacc.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sumacc.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test.Po@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-pkgincludeHEADERS: $(pkginclude_HEADERS) + @$(NORMAL_INSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \ + done + +uninstall-pkgincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + else \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_PROGRAMS) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +test.log: test$(EXEEXT) + @p='test$(EXEEXT)'; \ + b='test'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +@am__EXEEXT_TRUE@.test$(EXEEXT).log: +@am__EXEEXT_TRUE@ @p='$<'; \ +@am__EXEEXT_TRUE@ $(am__set_b); \ +@am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +@am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ +@am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +@am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-am +all-am: Makefile $(LTLIBRARIES) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(pkgincludedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-pkgincludeHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-pkgincludeHEADERS + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES cscopelist-am ctags ctags-am distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-pkgincludeHEADERS \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + recheck tags tags-am uninstall uninstall-am \ + uninstall-pkgincludeHEADERS + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gsl-2.5/movstat/TODO b/gsl-2.5/movstat/TODO new file mode 100644 index 00000000..0938d26d --- /dev/null +++ b/gsl-2.5/movstat/TODO @@ -0,0 +1,2 @@ +1. medacc: add delete function and convert to movstat_apply format +2. remove gsl_math.h / gsl_function_vec -- not used? diff --git a/gsl-2.5/movstat/alloc.c b/gsl-2.5/movstat/alloc.c new file mode 100644 index 00000000..ffa949fe --- /dev/null +++ b/gsl-2.5/movstat/alloc.c @@ -0,0 +1,154 @@ +/* movstat/alloc.c + * + * Copyright (C) 2018 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include + +/* +gsl_movstat_alloc() + Allocate a workspace for moving window statistics. +The window around sample x_i is defined as: + +W_i^{H,J} = {x_{i-H},...,x_i,...x_{i+J}} + +The total window size is: + +K = H + J + 1 + +Inputs: K - total samples in window (H = J = K / 2) + +Return: pointer to workspace + +Notes: +1) If K is even, it is rounded up to the next odd +*/ + +gsl_movstat_workspace * +gsl_movstat_alloc(const size_t K) +{ + const size_t H = K / 2; + return gsl_movstat_alloc_with_size(0, H, H); +} + +/* +gsl_movstat_alloc2() + Allocate a workspace for moving window statistics. +The window around sample x_i is defined as: + +W_i^{H,J} = {x_{i-H},...,x_i,...x_{i+J}} + +The total window size is: + +K = H + J + 1 + +Inputs: H - number of samples before current sample + J - number of samples after current sample + +Return: pointer to workspace +*/ + +gsl_movstat_workspace * +gsl_movstat_alloc2(const size_t H, const size_t J) +{ + return gsl_movstat_alloc_with_size(0, H, J); +} + +/* +gsl_movstat_alloc_with_size() + Allocate a workspace for moving window statistics with predefined workspace +size for accumulators. The window around sample x_i is defined as: + +W_i^{H,J} = {x_{i-H},...,x_i,...x_{i+J}} + +The total window size is: + +K = H + J + 1 + +Inputs: accum_state_size - state size for accumulator (set to zero to use default value) + H - number of samples before current sample + J - number of samples after current sample + +Return: pointer to workspace +*/ + +gsl_movstat_workspace * +gsl_movstat_alloc_with_size(const size_t accum_state_size, const size_t H, const size_t J) +{ + gsl_movstat_workspace *w; + size_t state_size = accum_state_size; + + w = calloc(1, sizeof(gsl_movstat_workspace)); + if (w == 0) + { + GSL_ERROR_NULL ("failed to allocate space for workspace", GSL_ENOMEM); + } + + w->H = H; + w->J = J; + w->K = H + J + 1; + + if (state_size == 0) + { + /* + * determine maximum number of bytes needed for the various accumulators; + * the accumulators will all share the same workspace + */ + state_size = GSL_MAX(state_size, (gsl_movstat_accum_mad->size)(w->K)); /* MAD accumulator */ + state_size = GSL_MAX(state_size, (gsl_movstat_accum_mean->size)(w->K)); /* mean/variance/sd accumulator */ + state_size = GSL_MAX(state_size, (gsl_movstat_accum_min->size)(w->K)); /* min/max accumulator */ + state_size = GSL_MAX(state_size, (gsl_movstat_accum_sum->size)(w->K)); /* sum accumulator */ + state_size = GSL_MAX(state_size, (gsl_movstat_accum_median->size)(w->K)); /* median accumulator */ + state_size = GSL_MAX(state_size, (gsl_movstat_accum_Qn->size)(w->K)); /* Q_n accumulator */ + state_size = GSL_MAX(state_size, (gsl_movstat_accum_qqr->size)(w->K)); /* QQR accumulator */ + state_size = GSL_MAX(state_size, (gsl_movstat_accum_Sn->size)(w->K)); /* S_n accumulator */ + } + + w->state = malloc(state_size); + if (w->state == 0) + { + gsl_movstat_free(w); + GSL_ERROR_NULL ("failed to allocate space for accumulator state", GSL_ENOMEM); + } + + w->work = malloc(w->K * sizeof(double)); + if (w->work == 0) + { + gsl_movstat_free(w); + GSL_ERROR_NULL ("failed to allocate space for work", GSL_ENOMEM); + } + + w->state_size = state_size; + + return w; +} + +void +gsl_movstat_free(gsl_movstat_workspace * w) +{ + if (w->work) + free(w->work); + + if (w->state) + free(w->state); + + free(w); +} diff --git a/gsl-2.5/movstat/alloc.lo b/gsl-2.5/movstat/alloc.lo new file mode 100644 index 00000000..6fe907b7 --- /dev/null +++ b/gsl-2.5/movstat/alloc.lo @@ -0,0 +1,12 @@ +# alloc.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/alloc.o' + +# Name of the non-PIC object +non_pic_object='alloc.o' + diff --git a/gsl-2.5/movstat/apply.c b/gsl-2.5/movstat/apply.c new file mode 100644 index 00000000..1ffcff2d --- /dev/null +++ b/gsl-2.5/movstat/apply.c @@ -0,0 +1,210 @@ +/* movstat/apply.c + * + * Copyright (C) 2018 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include +#include + +/* +gsl_movstat_apply_accum() + Apply moving window statistic to input vector. This is a generalized +routine to handle window endpoints and apply a given accumulator to +the input vector. + +Inputs: endtype - end point handling criteria + x - input vector, size n + accum - accumulator to apply moving window statistic + accum_params - parameters to pass to accumulator + y - output vector, size n + z - second output vector (i.e. minmax), size n; can be NULL + w - workspace + +Notes: +1) It is allowed to have x = y for in-place moving statistics +*/ + +int +gsl_movstat_apply_accum(const gsl_movstat_end_t endtype, + const gsl_vector * x, + const gsl_movstat_accum * accum, + void * accum_params, + gsl_vector * y, + gsl_vector * z, + gsl_movstat_workspace * w) +{ + if (x->size != y->size) + { + GSL_ERROR("input and output vectors must have same length", GSL_EBADLEN); + } + else if (z != NULL && x->size != z->size) + { + GSL_ERROR("input and output vectors must have same length", GSL_EBADLEN); + } + else + { + const int n = (int) x->size; + const int H = w->H; /* number of samples to left of current sample */ + const int J = w->J; /* number of samples to right of current sample */ + int i; + double x1 = 0.0; /* pad values for data edges */ + double xN = 0.0; + double result[2]; + + /* initialize accumulator */ + (accum->init)(w->K, w->state); + + /* pad initial window if necessary */ + if (endtype != GSL_MOVSTAT_END_TRUNCATE) + { + if (endtype == GSL_MOVSTAT_END_PADZERO) + { + x1 = 0.0; + xN = 0.0; + } + else if (endtype == GSL_MOVSTAT_END_PADVALUE) + { + x1 = gsl_vector_get(x, 0); + xN = gsl_vector_get(x, n - 1); + } + + /* pad initial windows with H values */ + for (i = 0; i < H; ++i) + (accum->insert)(x1, w->state); + } + else if (accum->delete == NULL) /* FIXME XXX */ + { + /* save last K - 1 samples of x for later (needed for in-place input/output) */ + int idx1 = GSL_MAX(n - J - H, 0); + int idx2 = n - 1; + + for (i = idx1; i <= idx2; ++i) + w->work[i - idx1] = gsl_vector_get(x, i); + } + + /* process input vector and fill y(0:n - J - 1) */ + for (i = 0; i < n; ++i) + { + double xi = gsl_vector_get(x, i); + int idx = i - J; + + (accum->insert)(xi, w->state); + + if (idx >= 0) + { + (accum->get)(accum_params, result, w->state); + gsl_vector_set(y, idx, result[0]); + + if (z != NULL) + gsl_vector_set(z, idx, result[1]); + } + } + + if (endtype == GSL_MOVSTAT_END_TRUNCATE) + { + /* need to fill y(n-J:n-1) using shrinking windows */ + int idx1 = GSL_MAX(n - J, 0); + int idx2 = n - 1; + + if (accum->delete == NULL) + { + int wsize = n - GSL_MAX(n - J - H, 0); /* size of work array */ + + for (i = idx1; i <= idx2; ++i) + { + int nsamp = n - GSL_MAX(i - H, 0); /* number of samples in this window */ + int j; + + (accum->init)(w->K, w->state); + + for (j = wsize - nsamp; j < wsize; ++j) + (accum->insert)(w->work[j], w->state); + + /* yi = acc_get [ work(i:K-2) ] */ + (accum->get)(accum_params, result, w->state); + gsl_vector_set(y, i, result[0]); + + if (z != NULL) + gsl_vector_set(z, i, result[1]); + } + } + else + { + for (i = idx1; i <= idx2; ++i) + { + if (i - H > 0) + { + /* delete oldest window sample as we move closer to edge */ + (accum->delete)(w->state); + } + + /* yi = acc_get [ work(i:K-2) ] */ + (accum->get)(accum_params, result, w->state); + gsl_vector_set(y, i, result[0]); + + if (z != NULL) + gsl_vector_set(z, i, result[1]); + } + } + } + else + { + /* pad final windows and fill y(n-J:n-1) */ + for (i = 0; i < J; ++i) + { + int idx = n - J + i; + + (accum->insert)(xN, w->state); + + if (idx >= 0) + { + (accum->get)(accum_params, result, w->state); + gsl_vector_set(y, idx, result[0]); + + if (z != NULL) + gsl_vector_set(z, idx, result[1]); + } + } + } + + return GSL_SUCCESS; + } +} + +/* +gsl_movstat_apply() + Apply user-defined moving window function to input vector + +Inputs: endtype - end point handling criteria + F - user-defined function + x - input vector, size n + y - output vector, size n + w - workspace +*/ + +int +gsl_movstat_apply(const gsl_movstat_end_t endtype, const gsl_movstat_function * F, + const gsl_vector * x, gsl_vector * y, gsl_movstat_workspace * w) +{ + int status = gsl_movstat_apply_accum(endtype, x, gsl_movstat_accum_userfunc, (void *) F, y, NULL, w); + return status; +} diff --git a/gsl-2.5/movstat/apply.lo b/gsl-2.5/movstat/apply.lo new file mode 100644 index 00000000..81154fa5 --- /dev/null +++ b/gsl-2.5/movstat/apply.lo @@ -0,0 +1,12 @@ +# apply.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/apply.o' + +# Name of the non-PIC object +non_pic_object='apply.o' + diff --git a/gsl-2.5/movstat/deque.c b/gsl-2.5/movstat/deque.c new file mode 100644 index 00000000..3ae51167 --- /dev/null +++ b/gsl-2.5/movstat/deque.c @@ -0,0 +1,228 @@ +/* movstat/deque.c + * + * Double-ended queue based on a circular buffer + * + * Copyright (C) 2018 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +typedef int deque_type_t; + +typedef struct +{ + int head; + int tail; + int size; /* total elements allocated */ + deque_type_t *array; +} deque; + +static size_t deque_size(const size_t n); +static int deque_init(const size_t n, deque * d); +static int deque_empty(deque * d); +static int deque_is_empty(const deque * d); +static int deque_is_full(const deque * d); +static int deque_push_front(const deque_type_t x, deque * d); +static int deque_push_back(const deque_type_t x, deque * d); +static int deque_pop_front(deque * d); +static int deque_pop_back(deque * d); +static deque_type_t deque_peek_front(const deque * d); +static deque_type_t deque_peek_back(const deque * d); + +static size_t +deque_size(const size_t n) +{ + size_t size = 0; + + size += sizeof(deque); + size += n * sizeof(deque_type_t); /* array */ + + return size; +} + +static int +deque_init(const size_t n, deque * d) +{ + d->head = -1; + d->tail = 0; + d->size = (int) n; + d->array = (deque_type_t *) ((unsigned char *) d + sizeof(deque)); + + return GSL_SUCCESS; +} + +/* empty the queue */ +static int +deque_empty(deque * d) +{ + d->head = -1; + d->tail = 0; + return GSL_SUCCESS; +} + +/* check if queue is empty */ +static int +deque_is_empty(const deque * d) +{ + return (d->head == -1); +} + +/* check if queue is full */ +static int +deque_is_full(const deque * d) +{ + return ((d->head == 0 && d->tail == d->size - 1) || + (d->head == d->tail + 1)); +} + +static int +deque_push_front(const deque_type_t x, deque * d) +{ + if (deque_is_full(d)) + { + GSL_ERROR("deque is full", GSL_EOVRFLW); + } + else + { + if (d->head == -1) /* queue is empty */ + { + d->head = 0; + d->tail = 0; + } + else if (d->head == 0) /* head is in first position, wrap to end */ + { + d->head = d->size - 1; + } + else /* decrement head */ + { + --(d->head); + } + + /* insert element */ + d->array[d->head] = x; + + return GSL_SUCCESS; + } +} + +static int +deque_push_back(const deque_type_t x, deque * d) +{ + if (deque_is_full(d)) + { + GSL_ERROR("deque is full", GSL_EOVRFLW); + } + else + { + if (d->head == -1) /* queue is empty */ + { + d->head = 0; + d->tail = 0; + } + else if (d->tail == d->size - 1) /* tail is in last position, wrap to 0 */ + { + d->tail = 0; + } + else /* increment tail */ + { + ++(d->tail); + } + + /* insert element */ + d->array[d->tail] = x; + + return GSL_SUCCESS; + } +} + +static int +deque_pop_front(deque * d) +{ + if (deque_is_empty(d)) + { + GSL_ERROR("cannot pop element from empty queue", GSL_EOVRFLW); + } + else + { + if (d->head == d->tail) /* queue has only one element */ + { + d->head = -1; + d->tail = -1; + } + else if (d->head == d->size - 1) /* head is in last position, wrap to 0 */ + { + d->head = 0; + } + else /* increment head */ + { + ++(d->head); + } + + return GSL_SUCCESS; + } +} + +static int +deque_pop_back(deque * d) +{ + if (deque_is_empty(d)) + { + GSL_ERROR("cannot pop element from empty queue", GSL_EOVRFLW); + } + else + { + if (d->head == d->tail) /* queue has only one element */ + { + d->head = -1; + d->tail = -1; + } + else if (d->tail == 0) /* tail is in first position, wrap to end */ + { + d->tail = d->size - 1; + } + else /* decrement tail */ + { + --(d->tail); + } + + return GSL_SUCCESS; + } +} + +static deque_type_t +deque_peek_front(const deque * d) +{ + if (deque_is_empty(d)) + { + GSL_ERROR("queue is empty", GSL_EBADLEN); + } + else + { + return d->array[d->head]; + } +} + +static deque_type_t +deque_peek_back(const deque * d) +{ + if (deque_is_empty(d) || d->tail < 0) + { + GSL_ERROR("queue is empty", GSL_EBADLEN); + } + else + { + return d->array[d->tail]; + } +} diff --git a/gsl-2.5/movstat/fill.c b/gsl-2.5/movstat/fill.c new file mode 100644 index 00000000..7989c399 --- /dev/null +++ b/gsl-2.5/movstat/fill.c @@ -0,0 +1,101 @@ +/* movstat/fill.c + * + * Copyright (C) 2018 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include +#include + +/* +gsl_movstat_fill() + Fill window for sample 'idx' from x using given end conditions + +Inputs: endtype - how to handle end points + x - input vector, length n + idx - index of center sample in window in [0,n-1] + H - number of samples left of center to include + J - number of samples right of center to include + window - (output) window of samples centered on x_{idx}, + W_{idx}^{H,J}, length H + J + 1 + +Return: size of filled window (<= H + J + 1) +*/ + +size_t +gsl_movstat_fill(const gsl_movstat_end_t endtype, const gsl_vector * x, const size_t idx, + const size_t H, const size_t J, double * window) +{ + if (idx >= x->size) + { + GSL_ERROR_VAL ("window center index must be between 0 and n - 1", GSL_EDOM, 0); + } + else + { + const int n = (int) x->size; + const int iidx = (int) idx; + const int iH = (int) H; + const int iJ = (int) J; + int idx1, idx2, j; + size_t window_size; + + if (endtype == GSL_MOVSTAT_END_TRUNCATE) + { + idx1 = GSL_MAX(iidx - iH, 0); + idx2 = GSL_MIN(iidx + iJ, n - 1); + } + else + { + idx1 = iidx - iH; + idx2 = iidx + iJ; + } + + window_size = (size_t) (idx2 - idx1 + 1); + + /* fill sliding window */ + for (j = idx1; j <= idx2; ++j) + { + int widx = j - idx1; + + if (j < 0) + { + /* initial condition */ + if (endtype == GSL_MOVSTAT_END_PADZERO) + window[widx] = 0.0; + else if (endtype == GSL_MOVSTAT_END_PADVALUE) + window[widx] = gsl_vector_get(x, 0); + } + else if (j >= n) + { + if (endtype == GSL_MOVSTAT_END_PADZERO) + window[widx] = 0.0; + else if (endtype == GSL_MOVSTAT_END_PADVALUE) + window[widx] = gsl_vector_get(x, n - 1); + } + else + { + window[widx] = gsl_vector_get(x, j); + } + } + + return window_size; + } +} diff --git a/gsl-2.5/movstat/fill.lo b/gsl-2.5/movstat/fill.lo new file mode 100644 index 00000000..2b08f50a --- /dev/null +++ b/gsl-2.5/movstat/fill.lo @@ -0,0 +1,12 @@ +# fill.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/fill.o' + +# Name of the non-PIC object +non_pic_object='fill.o' + diff --git a/gsl-2.5/movstat/funcacc.c b/gsl-2.5/movstat/funcacc.c new file mode 100644 index 00000000..b880652d --- /dev/null +++ b/gsl-2.5/movstat/funcacc.c @@ -0,0 +1,109 @@ +/* movstat/funcacc.c + * + * Moving window accumulator for arbitrary user-defined function + * + * Copyright (C) 2018 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include +#include + +typedef double funcacc_type_t; +typedef funcacc_type_t ringbuf_type_t; + +#include "ringbuf.c" + +typedef struct +{ + funcacc_type_t *window; /* linear array for current window */ + ringbuf *rbuf; /* ring buffer storing current window */ +} funcacc_state_t; + +static size_t +funcacc_size(const size_t n) +{ + size_t size = 0; + + size += sizeof(funcacc_state_t); + size += n * sizeof(funcacc_type_t); + size += ringbuf_size(n); + + return size; +} + +static int +funcacc_init(const size_t n, void * vstate) +{ + funcacc_state_t * state = (funcacc_state_t *) vstate; + + state->window = (funcacc_type_t *) ((unsigned char *) vstate + sizeof(funcacc_state_t)); + state->rbuf = (ringbuf *) ((unsigned char *) state->window + n * sizeof(funcacc_type_t)); + + ringbuf_init(n, state->rbuf); + + return GSL_SUCCESS; +} + +static int +funcacc_insert(const funcacc_type_t x, void * vstate) +{ + funcacc_state_t * state = (funcacc_state_t *) vstate; + + /* add new element to ring buffer */ + ringbuf_insert(x, state->rbuf); + + return GSL_SUCCESS; +} + +static int +funcacc_delete(void * vstate) +{ + funcacc_state_t * state = (funcacc_state_t *) vstate; + + if (!ringbuf_is_empty(state->rbuf)) + ringbuf_pop_back(state->rbuf); + + return GSL_SUCCESS; +} + +static int +funcacc_get(void * params, funcacc_type_t * result, const void * vstate) +{ + const funcacc_state_t * state = (const funcacc_state_t *) vstate; + gsl_movstat_function *f = (gsl_movstat_function *) params; + size_t n = ringbuf_copy(state->window, state->rbuf); + + *result = GSL_MOVSTAT_FN_EVAL(f, n, state->window); + + return GSL_SUCCESS; +} + +static const gsl_movstat_accum func_accum_type = +{ + funcacc_size, + funcacc_init, + funcacc_insert, + funcacc_delete, + funcacc_get +}; + +const gsl_movstat_accum *gsl_movstat_accum_userfunc = &func_accum_type; diff --git a/gsl-2.5/movstat/funcacc.lo b/gsl-2.5/movstat/funcacc.lo new file mode 100644 index 00000000..820ea57a --- /dev/null +++ b/gsl-2.5/movstat/funcacc.lo @@ -0,0 +1,12 @@ +# funcacc.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/funcacc.o' + +# Name of the non-PIC object +non_pic_object='funcacc.o' + diff --git a/gsl-2.5/movstat/gsl_movstat.h b/gsl-2.5/movstat/gsl_movstat.h new file mode 100644 index 00000000..ba6184b4 --- /dev/null +++ b/gsl-2.5/movstat/gsl_movstat.h @@ -0,0 +1,138 @@ +/* movstat/gsl_movstat.h + * + * Copyright (C) 2018 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_MOVSTAT_H__ +#define __GSL_MOVSTAT_H__ + +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +typedef enum +{ + GSL_MOVSTAT_END_PADZERO, + GSL_MOVSTAT_END_PADVALUE, + GSL_MOVSTAT_END_TRUNCATE +} gsl_movstat_end_t; + +/* accumulator struct + * size - return number of bytes needed for accumulator with maximum of n elements + * init - initialize accumulator state + * insert - insert a single sample into accumulator; if there are already n + * samples in accumulator, oldest sample is overwritten + * delete - delete oldest sample from accumulator + * get - return accumulated value + */ +typedef struct +{ + size_t (*size) (const size_t n); + int (*init) (const size_t n, void * vstate); + int (*insert) (const double x, void * vstate); + int (*delete) (void * vstate); + int (*get) (void * params, double * result, const void * vstate); +} gsl_movstat_accum; + +typedef struct +{ + double (* function) (const size_t n, double x[], void * params); + void * params; +} gsl_movstat_function; + +#define GSL_MOVSTAT_FN_EVAL(F,n,x) (*((F)->function))((n),(x),(F)->params) + +/* workspace for moving window statistics */ + +typedef struct +{ + size_t H; /* number of previous samples in window */ + size_t J; /* number of after samples in window */ + size_t K; /* window size K = H + J + 1 */ + double *work; /* workspace, size K */ + void *state; /* state workspace for various accumulators */ + size_t state_size; /* bytes allocated for 'state' */ +} gsl_movstat_workspace; + +/* alloc.c */ + +gsl_movstat_workspace *gsl_movstat_alloc(const size_t K); +gsl_movstat_workspace *gsl_movstat_alloc2(const size_t H, const size_t J); +gsl_movstat_workspace *gsl_movstat_alloc_with_size(const size_t accum_state_size, const size_t H, const size_t J); +void gsl_movstat_free(gsl_movstat_workspace * w); + +/* apply.c */ +int gsl_movstat_apply_accum(const gsl_movstat_end_t endtype, const gsl_vector * x, + const gsl_movstat_accum * accum, void * accum_params, + gsl_vector * y, gsl_vector * z, + gsl_movstat_workspace * w); +int gsl_movstat_apply(const gsl_movstat_end_t endtype, const gsl_movstat_function * F, + const gsl_vector * x, gsl_vector * y, gsl_movstat_workspace * w); + +/* fill.c */ +size_t gsl_movstat_fill(const gsl_movstat_end_t endtype, const gsl_vector * x, const size_t idx, + const size_t H, const size_t J, double * window); + +int gsl_movstat_mean(const gsl_movstat_end_t endtype, const gsl_vector * x, gsl_vector * y, gsl_movstat_workspace * w); +int gsl_movstat_variance(const gsl_movstat_end_t endtype, const gsl_vector * x, gsl_vector * y, gsl_movstat_workspace * w); +int gsl_movstat_sd(const gsl_movstat_end_t endtype, const gsl_vector * x, gsl_vector * y, gsl_movstat_workspace * w); +int gsl_movstat_median(const gsl_movstat_end_t endtype, const gsl_vector * x, gsl_vector * y, gsl_movstat_workspace * w); +int gsl_movstat_min(const gsl_movstat_end_t endtype, const gsl_vector * x, gsl_vector * y, gsl_movstat_workspace * w); +int gsl_movstat_max(const gsl_movstat_end_t endtype, const gsl_vector * x, gsl_vector * y, gsl_movstat_workspace * w); +int gsl_movstat_minmax(const gsl_movstat_end_t endtype, const gsl_vector * x, gsl_vector * y_min, gsl_vector * y_max, gsl_movstat_workspace * w); +int gsl_movstat_mad0(const gsl_movstat_end_t endtype, const gsl_vector * x, gsl_vector * xmedian, + gsl_vector * xmad, gsl_movstat_workspace * w); +int gsl_movstat_mad(const gsl_movstat_end_t endtype, const gsl_vector * x, gsl_vector * xmedian, + gsl_vector * xmad, gsl_movstat_workspace * w); +int gsl_movstat_qqr(const gsl_movstat_end_t endtype, const gsl_vector * x, const double q, + gsl_vector * xqqr, gsl_movstat_workspace * w); +int gsl_movstat_Sn(const gsl_movstat_end_t endtype, const gsl_vector * x, + gsl_vector * xscale, gsl_movstat_workspace * w); +int gsl_movstat_Qn(const gsl_movstat_end_t endtype, const gsl_vector * x, + gsl_vector * xscale, gsl_movstat_workspace * w); +int gsl_movstat_sum(const gsl_movstat_end_t endtype, const gsl_vector * x, gsl_vector * y, gsl_movstat_workspace * w); + +/* accumulator variables */ + +GSL_VAR const gsl_movstat_accum * gsl_movstat_accum_mad; +GSL_VAR const gsl_movstat_accum * gsl_movstat_accum_max; +GSL_VAR const gsl_movstat_accum * gsl_movstat_accum_mean; +GSL_VAR const gsl_movstat_accum * gsl_movstat_accum_median; +GSL_VAR const gsl_movstat_accum * gsl_movstat_accum_min; +GSL_VAR const gsl_movstat_accum * gsl_movstat_accum_minmax; +GSL_VAR const gsl_movstat_accum * gsl_movstat_accum_sd; +GSL_VAR const gsl_movstat_accum * gsl_movstat_accum_Sn; +GSL_VAR const gsl_movstat_accum * gsl_movstat_accum_sum; +GSL_VAR const gsl_movstat_accum * gsl_movstat_accum_Qn; +GSL_VAR const gsl_movstat_accum * gsl_movstat_accum_qqr; +GSL_VAR const gsl_movstat_accum * gsl_movstat_accum_userfunc; +GSL_VAR const gsl_movstat_accum * gsl_movstat_accum_variance; + +__END_DECLS + +#endif /* __GSL_MOVSTAT_H__ */ diff --git a/gsl-2.5/movstat/libgslmovstat.la b/gsl-2.5/movstat/libgslmovstat.la new file mode 100644 index 00000000..e1d96ab9 --- /dev/null +++ b/gsl-2.5/movstat/libgslmovstat.la @@ -0,0 +1,41 @@ +# libgslmovstat.la - a libtool library file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='' + +# Names of this library. +library_names='' + +# The name of the static archive. +old_library='libgslmovstat.a' + +# Linker flags that can not go in dependency_libs. +inherited_linker_flags='' + +# Libraries that this one depends upon. +dependency_libs=' -lm' + +# Names of additional weak libraries provided by this library +weak_library_names='' + +# Version information for libgslmovstat. +current= +age= +revision= + +# Is this an already installed library? +installed=no + +# Should we warn about portability when linking against -modules? +shouldnotlink=no + +# Files to dlopen/dlpreopen +dlopen='' +dlpreopen='' + +# Directory that this library needs to be installed in: +libdir='' diff --git a/gsl-2.5/movstat/madacc.c b/gsl-2.5/movstat/madacc.c new file mode 100644 index 00000000..ad0595c4 --- /dev/null +++ b/gsl-2.5/movstat/madacc.c @@ -0,0 +1,158 @@ +/* movstat/madacc.c + * + * Copyright (C) 2018 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* + * This module contains routines for computing the median absolute deviation (MAD) + * of a moving fixed-sized window. + */ + +#include +#include +#include +#include +#include +#include +#include + +typedef double madacc_type_t; +typedef madacc_type_t ringbuf_type_t; + +#include "ringbuf.c" + +typedef struct +{ + size_t n; /* window size */ + const gsl_movstat_accum *medacc; /* median accumulator */ + void *median_state; /* median accumulator workspace */ + ringbuf *rbuf; /* ring buffer storing current window, size n */ + madacc_type_t *work; /* workspace, size n */ +} madacc_state_t; + +static size_t madacc_size(const size_t n); +static int madacc_init(const size_t n, void * vstate); +static int madacc_insert(const madacc_type_t x, void * vstate); +static int madacc_delete(void * vstate); +static int madacc_medmad(void * params, madacc_type_t * result, const void * vstate); + +static size_t +madacc_size(const size_t n) +{ + size_t size = 0; + const gsl_movstat_accum * acc = gsl_movstat_accum_median; + + size += sizeof(madacc_state_t); + size += (acc->size)(n); /* median accumulator */ + size += ringbuf_size(n); /* rbuf */ + size += n * sizeof(madacc_type_t); /* work */ + + return size; +} + +static int +madacc_init(const size_t n, void * vstate) +{ + madacc_state_t * state = (madacc_state_t *) vstate; + + state->n = n; + state->medacc = gsl_movstat_accum_median; + + state->median_state = (void *) ((unsigned char *) vstate + sizeof(madacc_state_t)); + state->rbuf = (ringbuf *) ((unsigned char *) state->median_state + (state->medacc->size)(n)); + state->work = (madacc_type_t *) ((unsigned char *) state->rbuf + ringbuf_size(n)); + + (state->medacc->init)(n, state->median_state); + ringbuf_init(n, state->rbuf); + + return GSL_SUCCESS; +} + +static int +madacc_insert(const madacc_type_t x, void * vstate) +{ + madacc_state_t * state = (madacc_state_t *) vstate; + + /* insert element into median accumulator */ + (state->medacc->insert)(x, state->median_state); + + /* insert element into ring buffer */ + ringbuf_insert(x, state->rbuf); + + return GSL_SUCCESS; +} + +static int +madacc_delete(void * vstate) +{ + madacc_state_t * state = (madacc_state_t *) vstate; + + if (!ringbuf_is_empty(state->rbuf)) + ringbuf_pop_back(state->rbuf); + + return GSL_SUCCESS; +} + +static int +madacc_medmad(void * params, madacc_type_t * result, const void * vstate) +{ + const madacc_state_t * state = (const madacc_state_t *) vstate; + + if (ringbuf_is_empty(state->rbuf)) + { + GSL_ERROR("no samples yet added to workspace", GSL_EINVAL); + } + else + { + int status; + const double scale = *(double *) params; + const int n = ringbuf_n(state->rbuf); + int i; + double median, mad; + + /* compute median of current window */ + status = (state->medacc->get)(NULL, &median, state->median_state); + if (status) + return status; + + /* compute current window absolute deviations from median */ + for (i = 0; i < n; ++i) + { + double xi = state->rbuf->array[(state->rbuf->head + i) % state->rbuf->size]; + state->work[i] = fabs(xi - median); + } + + /* compute MAD of current window */ + mad = gsl_stats_median(state->work, 1, n); + + result[0] = median; + result[1] = scale * mad; + + return GSL_SUCCESS; + } +} + +static const gsl_movstat_accum mad_accum_type = +{ + madacc_size, + madacc_init, + madacc_insert, + NULL, /*XXX*/ + madacc_medmad +}; + +const gsl_movstat_accum *gsl_movstat_accum_mad = &mad_accum_type; diff --git a/gsl-2.5/movstat/madacc.lo b/gsl-2.5/movstat/madacc.lo new file mode 100644 index 00000000..f5759cd4 --- /dev/null +++ b/gsl-2.5/movstat/madacc.lo @@ -0,0 +1,12 @@ +# madacc.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/madacc.o' + +# Name of the non-PIC object +non_pic_object='madacc.o' + diff --git a/gsl-2.5/movstat/medacc.c b/gsl-2.5/movstat/medacc.c new file mode 100644 index 00000000..b1eec034 --- /dev/null +++ b/gsl-2.5/movstat/medacc.c @@ -0,0 +1,267 @@ +/* movstat/medacc.c + * + * Copyright (C) 2018 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * Original copyright notice: + * Copyright (c) 2011 ashelly.myopenid.com under + */ + +#include +#include +#include +#include +#include +#include + +#define ItemLess(a,b) ((a)<(b)) +#define ItemMean(a,b) (((a)+(b))/2) + +#define minCt(m) (((m)->ct-1)/2) /* count of items in minheap */ +#define maxCt(m) (((m)->ct)/2) /* count of items in maxheap */ + +typedef double medacc_type_t; + +typedef struct +{ + int n; /* window size */ + int idx; /* position in circular queue */ + int ct; /* count of items in queue */ + medacc_type_t *data; /* circular queue of values, size k */ + int *pos; /* index into `heap` for each value, size 2*k */ + int *heap; /* max/median/min heap holding indices into `data` */ +} medacc_state_t; + +static size_t medacc_size(const size_t n); +static int medacc_init(const size_t n, void * vstate); +static int medacc_insert(const medacc_type_t x, void * vstate); +static int medacc_delete(void * vstate); +static int medacc_get(void * params, medacc_type_t * result, const void * vstate); + +static int mmless(const medacc_state_t * state, const int i, const int j); +static int mmexchange(medacc_state_t * state, const int i, const int j); +static int mmCmpExch(medacc_state_t * state, const int i, const int j); +static void minSortDown(medacc_state_t * state, int i); +static void maxSortDown(medacc_state_t * state, int i); +static int minSortUp(medacc_state_t * state, int i); +static int maxSortUp(medacc_state_t * state, int i); + +static size_t +medacc_size(const size_t n) +{ + size_t size = 0; + + size += sizeof(medacc_state_t); + size += n * sizeof(medacc_type_t); + size += 2 * n * sizeof(int); + + return size; +} + +static int +medacc_init(const size_t n, void * vstate) +{ + medacc_state_t * state = (medacc_state_t *) vstate; + int k = (int) n; + + state->n = n; + state->ct = 0; + state->idx = 0; + + state->data = (medacc_type_t *) ((unsigned char *) vstate + sizeof(medacc_state_t)); + state->pos = (int *) ((unsigned char *) state->data + n * sizeof(medacc_type_t)); + state->heap = state->pos + n + (n/2); /* points to middle of storage */ + + /* set up initial heap fill pattern: median,max,min,max,... */ + while (k--) + { + state->pos[k] = ((k + 1)/2) * ((k & 1) ? -1 : 1); + state->heap[state->pos[k]] = k; + } + + return GSL_SUCCESS; +} + +static int +medacc_insert(const medacc_type_t x, void * vstate) +{ + medacc_state_t * state = (medacc_state_t *) vstate; + int isNew = (state->ct < (int) state->n); + int p = state->pos[state->idx]; + medacc_type_t old = state->data[state->idx]; + + state->data[state->idx] = x; + state->idx = (state->idx + 1) % state->n; + state->ct += isNew; + + if (p > 0) /* new item is in minHeap */ + { + if (!isNew && ItemLess(old, x)) + minSortDown(state, p * 2); + else if (minSortUp(state, p)) + maxSortDown(state, -1); + } + else if (p < 0) /* new item is in maxHeap */ + { + if (!isNew && ItemLess(x, old)) + maxSortDown(state, p * 2); + else if (maxSortUp(state, p)) + minSortDown(state, 1); + } + else /* new item is at median */ + { + if (maxCt(state)) + maxSortDown(state, -1); + + if (minCt(state)) + minSortDown(state, 1); + } + + return GSL_SUCCESS; +} + +static int +medacc_delete(void * vstate) +{ + medacc_state_t * state = (medacc_state_t *) vstate; + + if (state->ct > 0) + { + int p = state->pos[(state->idx - state->ct + state->n) % state->n]; + + if (p > 0) /* oldest item is in minHeap */ + { + mmexchange(state, p, minCt(state)); + --(state->ct); + minSortDown(state, 2 * p); + } + else if (p < 0) /* oldest item is in maxHeap */ + { + mmexchange(state, p, maxCt(state)); + --(state->ct); + maxSortDown(state, 2 * p); + } + else if (p == 0) /* oldest item is at median */ + { + } + } + + return GSL_SUCCESS; +} + +/* returns median (or average of 2 when item count is even) */ +static int +medacc_get(void * params, medacc_type_t * result, const void * vstate) +{ + const medacc_state_t * state = (const medacc_state_t *) vstate; + medacc_type_t median = state->data[state->heap[0]]; + + (void) params; + + if ((state->ct & 1) == 0) + median = ItemMean(median, state->data[state->heap[-1]]); + + *result = median; + + return GSL_SUCCESS; +} + +/* returns 1 if heap[i] < heap[j] */ +static int +mmless(const medacc_state_t * state, const int i, const int j) +{ + return ItemLess(state->data[state->heap[i]], state->data[state->heap[j]]); +} + +/* swaps items i and j in heap, maintains indexes */ +static int +mmexchange(medacc_state_t * state, const int i, const int j) +{ + int t = state->heap[i]; + state->heap[i] = state->heap[j]; + state->heap[j] = t; + state->pos[state->heap[i]] = i; + state->pos[state->heap[j]] = j; + return 1; +} + +/* swaps items i and j if i < j; returns true if swapped */ +static int +mmCmpExch(medacc_state_t * state, const int i, const int j) +{ + return (mmless(state, i, j) && mmexchange(state , i, j)); +} + +/* maintains minheap property for all items below i/2. */ +static void +minSortDown(medacc_state_t * state, int i) +{ + for (; i <= minCt(state); i *= 2) + { + if (i > 1 && i < minCt(state) && mmless(state, i + 1, i)) + ++i; + + if (!mmCmpExch(state, i, i / 2)) + break; + } +} + +/* maintains maxheap property for all items below i/2. (negative indexes) */ +static void +maxSortDown(medacc_state_t * state, int i) +{ + for (; i >= -maxCt(state); i *= 2) + { + if (i < -1 && i > -maxCt(state) && mmless(state, i, i - 1)) + --i; + + if (!mmCmpExch(state, i / 2, i)) + break; + } +} + +/* maintains minheap property for all items above i, including median + returns true if median changed */ +static int +minSortUp(medacc_state_t * state, int i) +{ + while (i > 0 && mmCmpExch(state, i, i / 2)) + i /= 2; + + return (i == 0); +} + +/* maintains maxheap property for all items above i, including median + returns true if median changed */ +static int +maxSortUp(medacc_state_t * state, int i) +{ + while (i<0 && mmCmpExch(state, i / 2, i)) + i /= 2; + + return (i == 0); +} + +static const gsl_movstat_accum median_accum_type = +{ + medacc_size, + medacc_init, + medacc_insert, + NULL, /* XXX FIXME */ + medacc_get +}; + +const gsl_movstat_accum *gsl_movstat_accum_median = &median_accum_type; diff --git a/gsl-2.5/movstat/medacc.lo b/gsl-2.5/movstat/medacc.lo new file mode 100644 index 00000000..cc5176bb --- /dev/null +++ b/gsl-2.5/movstat/medacc.lo @@ -0,0 +1,12 @@ +# medacc.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/medacc.o' + +# Name of the non-PIC object +non_pic_object='medacc.o' + diff --git a/gsl-2.5/movstat/mmacc.c b/gsl-2.5/movstat/mmacc.c new file mode 100644 index 00000000..6a889215 --- /dev/null +++ b/gsl-2.5/movstat/mmacc.c @@ -0,0 +1,277 @@ +/* movstat/mmacc.c + * + * Copyright (C) 2018 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* + * This module contains routines for tracking minimum/maximum values of a + * moving fixed-sized window. It is based on the algorithm of: + * + * [1] Daniel Lemire, Streaming Maximum-Minimum Filter Using No More than Three Comparisons per Element, + * Nordic Journal of Computing, Volume 13, Number 4, pages 328-339, 2006 + * + * Also available as a preprint here: https://arxiv.org/abs/cs/0610046 + */ + +#include +#include +#include +#include +#include +#include + +typedef double mmacc_type_t; +typedef mmacc_type_t ringbuf_type_t; + +#include "deque.c" +#include "ringbuf.c" + +typedef struct +{ + size_t n; /* window size */ + size_t k; /* number of samples in current window */ + mmacc_type_t xprev; /* previous sample added to window */ + ringbuf *rbuf; /* ring buffer storing current window, size n */ + deque *minque; /* double-ended queue of min values (L) */ + deque *maxque; /* double-ended queue of max values (U) */ +} mmacc_state_t; + +static size_t mmacc_size(const size_t n); +static int mmacc_init(const size_t n, void * vstate); +static int mmacc_insert(const mmacc_type_t x, void * vstate); +static int mmacc_delete(void * vstate); +static int mmacc_min(void * params, mmacc_type_t * result, const void * vstate); +static int mmacc_max(void * params, mmacc_type_t * result, const void * vstate); +static int mmacc_minmax(void * params, mmacc_type_t * result, const void * vstate); + +static size_t +mmacc_size(const size_t n) +{ + size_t size = 0; + + size += sizeof(mmacc_state_t); + size += ringbuf_size(n); /* rbuf */ + size += 2 * deque_size(n + 1); /* minque/maxque */ + + return size; +} + +static int +mmacc_init(const size_t n, void * vstate) +{ + mmacc_state_t * state = (mmacc_state_t *) vstate; + + state->n = n; + state->k = 0; + state->xprev = 0.0; + + state->rbuf = (ringbuf *) ((unsigned char *) vstate + sizeof(mmacc_state_t)); + state->minque = (deque *) ((unsigned char *) state->rbuf + ringbuf_size(n)); + state->maxque = (deque *) ((unsigned char *) state->minque + deque_size(n + 1)); + + ringbuf_init(n, state->rbuf); + deque_init(n + 1, state->minque); + deque_init(n + 1, state->maxque); + + return GSL_SUCCESS; +} + +static int +mmacc_insert(const mmacc_type_t x, void * vstate) +{ + mmacc_state_t * state = (mmacc_state_t *) vstate; + int head, tail; + + if (state->k == 0) + { + /* first sample */ + ringbuf_insert(x, state->rbuf); + head = state->rbuf->head; + deque_push_back(head, state->maxque); + deque_push_back(head, state->minque); + } + else + { + if (x > state->xprev) + { + deque_pop_back(state->maxque); + + while (!deque_is_empty(state->maxque)) + { + if (x <= state->rbuf->array[deque_peek_back(state->maxque)]) + break; + + deque_pop_back(state->maxque); + } + } + else + { + deque_pop_back(state->minque); + + while (!deque_is_empty(state->minque)) + { + if (x >= state->rbuf->array[deque_peek_back(state->minque)]) + break; + + deque_pop_back(state->minque); + } + } + + /* store new sample into ring buffer */ + tail = state->rbuf->tail; + ringbuf_insert(x, state->rbuf); + head = state->rbuf->head; + + deque_push_back(head, state->maxque); + deque_push_back(head, state->minque); + + if (state->k == state->n) + { + /* + * window is full - check if oldest window element is a global minimum/maximum + * of current window - if so pop it from U/L queues; + * the check head != tail ensures there is more than 1 element in the + * queue, do not pop if queue has only 1 element, since this element would + * be the newest sample + */ + if (state->maxque->head != state->maxque->tail && tail == deque_peek_front(state->maxque)) + deque_pop_front(state->maxque); + else if (state->minque->head != state->minque->tail && tail == deque_peek_front(state->minque)) + deque_pop_front(state->minque); + } + } + + if (state->k < state->n) + ++(state->k); + + state->xprev = x; + + return GSL_SUCCESS; +} + +static int +mmacc_delete(void * vstate) +{ + mmacc_state_t * state = (mmacc_state_t *) vstate; + + if (state->k > 0) + { + /* + * check if oldest window element is a global minimum/maximum; if so + * pop it from U/L queues + */ + if (state->rbuf->tail == deque_peek_front(state->maxque)) + deque_pop_front(state->maxque); + else if (state->rbuf->tail == deque_peek_front(state->minque)) + deque_pop_front(state->minque); + + /* remove oldest element from ring buffer */ + ringbuf_pop_back(state->rbuf); + + --(state->k); + } + + return GSL_SUCCESS; +} + +static int +mmacc_min(void * params, mmacc_type_t * result, const void * vstate) +{ + const mmacc_state_t * state = (const mmacc_state_t *) vstate; + + (void) params; + + if (state->k == 0) + { + GSL_ERROR ("no samples yet added to workspace", GSL_EINVAL); + } + else + { + *result = state->rbuf->array[deque_peek_front(state->minque)]; + return GSL_SUCCESS; + } +} + +static int +mmacc_max(void * params, mmacc_type_t * result, const void * vstate) +{ + const mmacc_state_t * state = (const mmacc_state_t *) vstate; + + (void) params; + + if (state->k == 0) + { + GSL_ERROR ("no samples yet added to workspace", GSL_EINVAL); + } + else + { + *result = state->rbuf->array[deque_peek_front(state->maxque)]; + return GSL_SUCCESS; + } +} + +static int +mmacc_minmax(void * params, mmacc_type_t * result, const void * vstate) +{ + const mmacc_state_t * state = (const mmacc_state_t *) vstate; + + (void) params; + + if (state->k == 0) + { + GSL_ERROR ("no samples yet added to workspace", GSL_EINVAL); + } + else + { + result[0] = state->rbuf->array[deque_peek_front(state->minque)]; + result[1] = state->rbuf->array[deque_peek_front(state->maxque)]; + return GSL_SUCCESS; + } +} + +static const gsl_movstat_accum min_accum_type = +{ + mmacc_size, + mmacc_init, + mmacc_insert, + mmacc_delete, + mmacc_min +}; + +const gsl_movstat_accum *gsl_movstat_accum_min = &min_accum_type; + +static const gsl_movstat_accum max_accum_type = +{ + mmacc_size, + mmacc_init, + mmacc_insert, + mmacc_delete, + mmacc_max +}; + +const gsl_movstat_accum *gsl_movstat_accum_max = &max_accum_type; + +static const gsl_movstat_accum minmax_accum_type = +{ + mmacc_size, + mmacc_init, + mmacc_insert, + mmacc_delete, + mmacc_minmax +}; + +const gsl_movstat_accum *gsl_movstat_accum_minmax = &minmax_accum_type; diff --git a/gsl-2.5/movstat/mmacc.lo b/gsl-2.5/movstat/mmacc.lo new file mode 100644 index 00000000..6936d817 --- /dev/null +++ b/gsl-2.5/movstat/mmacc.lo @@ -0,0 +1,12 @@ +# mmacc.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/mmacc.o' + +# Name of the non-PIC object +non_pic_object='mmacc.o' + diff --git a/gsl-2.5/movstat/movQn.c b/gsl-2.5/movstat/movQn.c new file mode 100644 index 00000000..d359d518 --- /dev/null +++ b/gsl-2.5/movstat/movQn.c @@ -0,0 +1,49 @@ +/* movstat/movQn.c + * + * Compute moving "Q_n" statistic from Croux and Rousseeuw, 1992 + * + * Copyright (C) 2018 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/* +gsl_movstat_Qn() + Calculate moving Q_n statistic for input vector + +Inputs: endtype - how to handle end points + x - input vector, size n + xscale - (output) vector of "Q_n" statistics, size n + xscale_i = (Q_n)_i for i-th window: + w - workspace +*/ + +int +gsl_movstat_Qn(const gsl_movstat_end_t endtype, const gsl_vector * x, + gsl_vector * xscale, gsl_movstat_workspace * w) +{ + int status = gsl_movstat_apply_accum(endtype, x, gsl_movstat_accum_Qn, NULL, xscale, NULL, w); + return status; +} diff --git a/gsl-2.5/movstat/movQn.lo b/gsl-2.5/movstat/movQn.lo new file mode 100644 index 00000000..7b91be20 --- /dev/null +++ b/gsl-2.5/movstat/movQn.lo @@ -0,0 +1,12 @@ +# movQn.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/movQn.o' + +# Name of the non-PIC object +non_pic_object='movQn.o' + diff --git a/gsl-2.5/movstat/movSn.c b/gsl-2.5/movstat/movSn.c new file mode 100644 index 00000000..53d3479e --- /dev/null +++ b/gsl-2.5/movstat/movSn.c @@ -0,0 +1,49 @@ +/* movstat/movSn.c + * + * Compute moving "S_n" statistic from Croux and Rousseeuw, 1992 + * + * Copyright (C) 2018 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/* +gsl_movstat_Sn() + Calculate moving S_n statistic for input vector + +Inputs: endtype - how to handle end points + x - input vector, size n + xscale - (output) vector of "S_n" statistics, size n + xscale_i = (S_n)_i for i-th window: + w - workspace +*/ + +int +gsl_movstat_Sn(const gsl_movstat_end_t endtype, const gsl_vector * x, + gsl_vector * xscale, gsl_movstat_workspace * w) +{ + int status = gsl_movstat_apply_accum(endtype, x, gsl_movstat_accum_Sn, NULL, xscale, NULL, w); + return status; +} diff --git a/gsl-2.5/movstat/movSn.lo b/gsl-2.5/movstat/movSn.lo new file mode 100644 index 00000000..c3d0727a --- /dev/null +++ b/gsl-2.5/movstat/movSn.lo @@ -0,0 +1,12 @@ +# movSn.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/movSn.o' + +# Name of the non-PIC object +non_pic_object='movSn.o' + diff --git a/gsl-2.5/movstat/movmad.c b/gsl-2.5/movstat/movmad.c new file mode 100644 index 00000000..d1b7233e --- /dev/null +++ b/gsl-2.5/movstat/movmad.c @@ -0,0 +1,96 @@ +/* movstat/movmad.c + * + * Copyright (C) 2018 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/* +gsl_movstat_mad() + Apply a moving MAD to an input vector (with scale factor to make an +unbiased estimate of sigma) + +Inputs: endtype - how to handle end points + x - input vector, size n + xmedian - (output) vector of median values of x, size n + xmedian_i = median of window centered on x_i + xmad - (output) vector of estimated standard deviations of x, size n + xmad_i = MAD of i-th window: 1.4826 * median(|x_i - xmedian_i|) + w - workspace +*/ + +int +gsl_movstat_mad(const gsl_movstat_end_t endtype, const gsl_vector * x, gsl_vector * xmedian, gsl_vector * xmad, + gsl_movstat_workspace * w) +{ + if (x->size != xmedian->size) + { + GSL_ERROR("x and xmedian vectors must have same length", GSL_EBADLEN); + } + else if (x->size != xmad->size) + { + GSL_ERROR("x and xmad vectors must have same length", GSL_EBADLEN); + } + else + { + double scale = 1.482602218505602; + int status = gsl_movstat_apply_accum(endtype, x, gsl_movstat_accum_mad, &scale, xmedian, xmad, w); + return status; + } +} + +/* +gsl_movstat_mad0() + Apply a moving MAD to an input vector (without scale factor to make an +unbiased estimate of sigma) + +Inputs: endtype - how to handle end points + x - input vector, size n + xmedian - (output) vector of median values of x, size n + xmedian_i = median of window centered on x_i + xmad - (output) vector of estimated standard deviations of x, size n + xmad_i = MAD of i-th window: median(|x_i - xmedian_i|) + w - workspace +*/ + +int +gsl_movstat_mad0(const gsl_movstat_end_t endtype, const gsl_vector * x, gsl_vector * xmedian, gsl_vector * xmad, + gsl_movstat_workspace * w) +{ + if (x->size != xmedian->size) + { + GSL_ERROR("x and xmedian vectors must have same length", GSL_EBADLEN); + } + else if (x->size != xmad->size) + { + GSL_ERROR("x and xmad vectors must have same length", GSL_EBADLEN); + } + else + { + double scale = 1.0; + int status = gsl_movstat_apply_accum(endtype, x, gsl_movstat_accum_mad, &scale, xmedian, xmad, w); + return status; + } +} diff --git a/gsl-2.5/movstat/movmad.lo b/gsl-2.5/movstat/movmad.lo new file mode 100644 index 00000000..a700b1a3 --- /dev/null +++ b/gsl-2.5/movstat/movmad.lo @@ -0,0 +1,12 @@ +# movmad.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/movmad.o' + +# Name of the non-PIC object +non_pic_object='movmad.o' + diff --git a/gsl-2.5/movstat/movmean.c b/gsl-2.5/movstat/movmean.c new file mode 100644 index 00000000..f1c2ed5c --- /dev/null +++ b/gsl-2.5/movstat/movmean.c @@ -0,0 +1,43 @@ +/* movstat/movmean.c + * + * Routines related to a moving window mean + * + * Copyright (C) 2018 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include + +/* +gsl_movstat_mean() + Apply moving mean to input vector + +Inputs: endtype - end point handling criteria + x - input vector, size n + y - output vector, size n + w - workspace +*/ + +int +gsl_movstat_mean(const gsl_movstat_end_t endtype, const gsl_vector * x, gsl_vector * y, gsl_movstat_workspace * w) +{ + int status = gsl_movstat_apply_accum(endtype, x, gsl_movstat_accum_mean, NULL, y, NULL, w); + return status; +} diff --git a/gsl-2.5/movstat/movmean.lo b/gsl-2.5/movstat/movmean.lo new file mode 100644 index 00000000..5b09360f --- /dev/null +++ b/gsl-2.5/movstat/movmean.lo @@ -0,0 +1,12 @@ +# movmean.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/movmean.o' + +# Name of the non-PIC object +non_pic_object='movmean.o' + diff --git a/gsl-2.5/movstat/movmedian.c b/gsl-2.5/movstat/movmedian.c new file mode 100644 index 00000000..da2774f3 --- /dev/null +++ b/gsl-2.5/movstat/movmedian.c @@ -0,0 +1,43 @@ +/* movstat/movmedian.c + * + * Routines related to a moving window median + * + * Copyright (C) 2018 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include + +/* +gsl_movstat_median() + Apply median filter to input vector + +Inputs: endtype - end point handling criteria + x - input vector, size n + y - output vector, size n + w - workspace +*/ + +int +gsl_movstat_median(const gsl_movstat_end_t endtype, const gsl_vector * x, gsl_vector * y, gsl_movstat_workspace * w) +{ + int status = gsl_movstat_apply_accum(endtype, x, gsl_movstat_accum_median, NULL, y, NULL, w); + return status; +} diff --git a/gsl-2.5/movstat/movmedian.lo b/gsl-2.5/movstat/movmedian.lo new file mode 100644 index 00000000..4bcb8a98 --- /dev/null +++ b/gsl-2.5/movstat/movmedian.lo @@ -0,0 +1,12 @@ +# movmedian.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/movmedian.o' + +# Name of the non-PIC object +non_pic_object='movmedian.o' + diff --git a/gsl-2.5/movstat/movminmax.c b/gsl-2.5/movstat/movminmax.c new file mode 100644 index 00000000..21ce6cf6 --- /dev/null +++ b/gsl-2.5/movstat/movminmax.c @@ -0,0 +1,78 @@ +/* movstat/movminmax.c + * + * Routines related to a moving window min/max + * + * Copyright (C) 2018 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include + +/* +gsl_movstat_minmax() + Apply minmax filter to input vector + +Inputs: endtype - end point handling criteria + x - input vector, size n + y_min - output vector of minimum values, size n + y_max - output vector of maximum values, size n + w - workspace +*/ + +int +gsl_movstat_minmax(const gsl_movstat_end_t endtype, const gsl_vector * x, gsl_vector * y_min, gsl_vector * y_max, gsl_movstat_workspace * w) +{ + int status = gsl_movstat_apply_accum(endtype, x, gsl_movstat_accum_minmax, NULL, y_min, y_max, w); + return status; +} + +/* +gsl_movstat_min() + Apply minimum filter to input vector + +Inputs: endtype - end point handling criteria + x - input vector, size n + y - output vector of minimum values, size n + w - workspace +*/ + +int +gsl_movstat_min(const gsl_movstat_end_t endtype, const gsl_vector * x, gsl_vector * y, gsl_movstat_workspace * w) +{ + int status = gsl_movstat_apply_accum(endtype, x, gsl_movstat_accum_min, NULL, y, NULL, w); + return status; +} + +/* +gsl_movstat_max() + Apply maximum filter to input vector + +Inputs: endtype - end point handling criteria + x - input vector, size n + y - output vector of maximum values, size n + w - workspace +*/ + +int +gsl_movstat_max(const gsl_movstat_end_t endtype, const gsl_vector * x, gsl_vector * y, gsl_movstat_workspace * w) +{ + int status = gsl_movstat_apply_accum(endtype, x, gsl_movstat_accum_max, NULL, y, NULL, w); + return status; +} diff --git a/gsl-2.5/movstat/movminmax.lo b/gsl-2.5/movstat/movminmax.lo new file mode 100644 index 00000000..13258b40 --- /dev/null +++ b/gsl-2.5/movstat/movminmax.lo @@ -0,0 +1,12 @@ +# movminmax.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/movminmax.o' + +# Name of the non-PIC object +non_pic_object='movminmax.o' + diff --git a/gsl-2.5/movstat/movqqr.c b/gsl-2.5/movstat/movqqr.c new file mode 100644 index 00000000..8d2c2ec9 --- /dev/null +++ b/gsl-2.5/movstat/movqqr.c @@ -0,0 +1,62 @@ +/* movstat/movqqr.c + * + * Compute moving q-quantile range + * + * Copyright (C) 2018 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/* +gsl_movstat_qqr() + Apply a moving q-quantile range to an input vector + +Inputs: endtype - how to handle end points + x - input vector, size n + q - quantile \in [0,0.5] + xqqr - (output) vector of q-quantile ranges of x, size n + xqqr_i = q-quantile range of i-th window: + w - workspace +*/ + +int +gsl_movstat_qqr(const gsl_movstat_end_t endtype, const gsl_vector * x, const double q, + gsl_vector * xqqr, gsl_movstat_workspace * w) +{ + if (x->size != xqqr->size) + { + GSL_ERROR("x and xqqr vectors must have same length", GSL_EBADLEN); + } + else if (q < 0.0 || q > 0.5) + { + GSL_ERROR("q must be between 0 and 0.5", GSL_EDOM); + } + else + { + double qq = q; + int status = gsl_movstat_apply_accum(endtype, x, gsl_movstat_accum_qqr, (void *) &qq, xqqr, NULL, w); + return status; + } +} diff --git a/gsl-2.5/movstat/movqqr.lo b/gsl-2.5/movstat/movqqr.lo new file mode 100644 index 00000000..3716c2a6 --- /dev/null +++ b/gsl-2.5/movstat/movqqr.lo @@ -0,0 +1,12 @@ +# movqqr.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/movqqr.o' + +# Name of the non-PIC object +non_pic_object='movqqr.o' + diff --git a/gsl-2.5/movstat/movsum.c b/gsl-2.5/movstat/movsum.c new file mode 100644 index 00000000..85a224fb --- /dev/null +++ b/gsl-2.5/movstat/movsum.c @@ -0,0 +1,43 @@ +/* movstat/movsum.c + * + * Routines related to a moving window sum + * + * Copyright (C) 2018 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include + +/* +gsl_movstat_sum() + Apply moving sum to input vector + +Inputs: endtype - end point handling criteria + x - input vector, size n + y - output vector, size n + w - workspace +*/ + +int +gsl_movstat_sum(const gsl_movstat_end_t endtype, const gsl_vector * x, gsl_vector * y, gsl_movstat_workspace * w) +{ + int status = gsl_movstat_apply_accum(endtype, x, gsl_movstat_accum_sum, NULL, y, NULL, w); + return status; +} diff --git a/gsl-2.5/movstat/movsum.lo b/gsl-2.5/movstat/movsum.lo new file mode 100644 index 00000000..78024483 --- /dev/null +++ b/gsl-2.5/movstat/movsum.lo @@ -0,0 +1,12 @@ +# movsum.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/movsum.o' + +# Name of the non-PIC object +non_pic_object='movsum.o' + diff --git a/gsl-2.5/movstat/movvariance.c b/gsl-2.5/movstat/movvariance.c new file mode 100644 index 00000000..ffcf510a --- /dev/null +++ b/gsl-2.5/movstat/movvariance.c @@ -0,0 +1,60 @@ +/* movstat/movvar.c + * + * Routines related to a moving window variance + * + * Copyright (C) 2018 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include + +/* +gsl_movstat_variance() + Apply moving variance to input vector + +Inputs: endtype - end point handling criteria + x - input vector, size n + y - output vector, size n + w - workspace +*/ + +int +gsl_movstat_variance(const gsl_movstat_end_t endtype, const gsl_vector * x, gsl_vector * y, gsl_movstat_workspace * w) +{ + int status = gsl_movstat_apply_accum(endtype, x, gsl_movstat_accum_variance, NULL, y, NULL, w); + return status; +} + +/* +gsl_movstat_sd() + Apply moving standard deviation to input vector + +Inputs: endtype - end point handling criteria + x - input vector, size n + y - output vector, size n + w - workspace +*/ + +int +gsl_movstat_sd(const gsl_movstat_end_t endtype, const gsl_vector * x, gsl_vector * y, gsl_movstat_workspace * w) +{ + int status = gsl_movstat_apply_accum(endtype, x, gsl_movstat_accum_sd, NULL, y, NULL, w); + return status; +} diff --git a/gsl-2.5/movstat/movvariance.lo b/gsl-2.5/movstat/movvariance.lo new file mode 100644 index 00000000..6e7507db --- /dev/null +++ b/gsl-2.5/movstat/movvariance.lo @@ -0,0 +1,12 @@ +# movvariance.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/movvariance.o' + +# Name of the non-PIC object +non_pic_object='movvariance.o' + diff --git a/gsl-2.5/movstat/mvacc.c b/gsl-2.5/movstat/mvacc.c new file mode 100644 index 00000000..14f08944 --- /dev/null +++ b/gsl-2.5/movstat/mvacc.c @@ -0,0 +1,205 @@ +/* movstat/mvacc.c + * + * Moving window mean/variance accumulator - based on a modification + * to Welford's algorithm, discussed here: + * + * https://stackoverflow.com/a/6664212 + * + * Copyright (C) 2018 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include + +typedef double ringbuf_type_t; + +#include "ringbuf.c" + +typedef struct +{ + size_t n; /* window size */ + size_t k; /* number of samples currently in window */ + double mean; /* current window mean */ + double M2; /* current window M2 */ + ringbuf *rbuf; /* ring buffer storing current window */ +} mvacc_state_t; + +static size_t +mvacc_size(const size_t n) +{ + size_t size = 0; + + size += sizeof(mvacc_state_t); + size += ringbuf_size(n); + + return size; +} + +static int +mvacc_init(const size_t n, void * vstate) +{ + mvacc_state_t * state = (mvacc_state_t *) vstate; + + state->n = n; + state->k = 0; + state->mean = 0.0; + state->M2 = 0.0; + + state->rbuf = (ringbuf *) ((unsigned char *) vstate + sizeof(mvacc_state_t)); + ringbuf_init(n, state->rbuf); + + return GSL_SUCCESS; +} + +static int +mvacc_insert(const double x, void * vstate) +{ + mvacc_state_t * state = (mvacc_state_t *) vstate; + + if (ringbuf_is_full(state->rbuf)) + { + /* remove oldest window element and add new one */ + double old = ringbuf_peek_back(state->rbuf); + double prev_mean = state->mean; + + state->mean += (x - old) / (double) state->n; + state->M2 += ((old - prev_mean) + (x - state->mean)) * (x - old); + } + else + { + double delta = x - state->mean; + + /* + * Welford algorithm: + * + * mu_new = mu_old + (x - mu_old) / n + * M2_new = M2_old + (x - mu_old) * (x - mu_new) + */ + + ++(state->k); + state->mean += delta / (double) state->k; + state->M2 += delta * (x - state->mean); + } + + /* add new element to ring buffer */ + ringbuf_insert(x, state->rbuf); + + return GSL_SUCCESS; +} + +static int +mvacc_delete(void * vstate) +{ + mvacc_state_t * state = (mvacc_state_t *) vstate; + + if (!ringbuf_is_empty(state->rbuf)) + { + if (state->k > 1) + { + /* + * mu_new = mu_old + (mu_old - x_old) / (n - 1) + * M2_new = M2_old - (mu_old - x_old) * (mu_new - x_old) + */ + + double old = ringbuf_peek_back(state->rbuf); + double prev_mean = state->mean; + double delta = prev_mean - old; + + state->mean += delta / (state->k - 1.0); + state->M2 -= delta * (state->mean - old); + } + else if (state->k == 1) + { + state->mean = 0.0; + state->M2 = 0.0; + } + + ringbuf_pop_back(state->rbuf); + --(state->k); + } + + return GSL_SUCCESS; +} + +static int +mvacc_mean(void * params, double * result, const void * vstate) +{ + const mvacc_state_t * state = (const mvacc_state_t *) vstate; + (void) params; + *result = state->mean; + return GSL_SUCCESS; +} + +static int +mvacc_variance(void * params, double * result, const void * vstate) +{ + const mvacc_state_t * state = (const mvacc_state_t *) vstate; + + (void) params; + + if (state->k < 2) + *result = 0.0; + else + *result = state->M2 / (state->k - 1.0); + + return GSL_SUCCESS; +} + +static int +mvacc_sd(void * params, double * result, const void * vstate) +{ + double variance; + int status = mvacc_variance(params, &variance, vstate); + *result = sqrt(variance); + return status; +} + +static const gsl_movstat_accum mean_accum_type = +{ + mvacc_size, + mvacc_init, + mvacc_insert, + mvacc_delete, + mvacc_mean +}; + +const gsl_movstat_accum *gsl_movstat_accum_mean = &mean_accum_type; + +static const gsl_movstat_accum variance_accum_type = +{ + mvacc_size, + mvacc_init, + mvacc_insert, + mvacc_delete, + mvacc_variance +}; + +const gsl_movstat_accum *gsl_movstat_accum_variance = &variance_accum_type; + +static const gsl_movstat_accum sd_accum_type = +{ + mvacc_size, + mvacc_init, + mvacc_insert, + mvacc_delete, + mvacc_sd +}; + +const gsl_movstat_accum *gsl_movstat_accum_sd = &sd_accum_type; diff --git a/gsl-2.5/movstat/mvacc.lo b/gsl-2.5/movstat/mvacc.lo new file mode 100644 index 00000000..861b45f6 --- /dev/null +++ b/gsl-2.5/movstat/mvacc.lo @@ -0,0 +1,12 @@ +# mvacc.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/mvacc.o' + +# Name of the non-PIC object +non_pic_object='mvacc.o' + diff --git a/gsl-2.5/movstat/qnacc.c b/gsl-2.5/movstat/qnacc.c new file mode 100644 index 00000000..57c60d64 --- /dev/null +++ b/gsl-2.5/movstat/qnacc.c @@ -0,0 +1,118 @@ +/* movstat/qnacc.c + * + * Moving window Q_n accumulator + * + * Copyright (C) 2018 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include +#include + +typedef double qnacc_type_t; +typedef qnacc_type_t ringbuf_type_t; + +#include "ringbuf.c" + +typedef struct +{ + qnacc_type_t *window; /* linear array for current window */ + qnacc_type_t *work; /* workspace, length 3*n */ + int *work_int; /* integer workspace, length 5*n */ + ringbuf *rbuf; /* ring buffer storing current window */ +} qnacc_state_t; + +static size_t +qnacc_size(const size_t n) +{ + size_t size = 0; + + size += sizeof(qnacc_state_t); + size += n * sizeof(qnacc_type_t); /* window */ + size += 3 * n * sizeof(qnacc_type_t); /* work */ + size += 5 * n * sizeof(int); /* work_int */ + size += ringbuf_size(n); + + return size; +} + +static int +qnacc_init(const size_t n, void * vstate) +{ + qnacc_state_t * state = (qnacc_state_t *) vstate; + + state->window = (qnacc_type_t *) ((unsigned char *) vstate + sizeof(qnacc_state_t)); + state->work = (qnacc_type_t *) ((unsigned char *) state->window + n * sizeof(qnacc_type_t)); + state->work_int = (int *) ((unsigned char *) state->work + 3 * n * sizeof(qnacc_type_t)); + state->rbuf = (ringbuf *) ((unsigned char *) state->work_int + 5 * n * sizeof(int)); + + ringbuf_init(n, state->rbuf); + + return GSL_SUCCESS; +} + +static int +qnacc_insert(const qnacc_type_t x, void * vstate) +{ + qnacc_state_t * state = (qnacc_state_t *) vstate; + + /* add new element to ring buffer */ + ringbuf_insert(x, state->rbuf); + + return GSL_SUCCESS; +} + +static int +qnacc_delete(void * vstate) +{ + qnacc_state_t * state = (qnacc_state_t *) vstate; + + if (!ringbuf_is_empty(state->rbuf)) + ringbuf_pop_back(state->rbuf); + + return GSL_SUCCESS; +} + +/* FIXME XXX: this is inefficient - could be improved by maintaining a sorted ring buffer */ +static int +qnacc_get(void * params, qnacc_type_t * result, const void * vstate) +{ + const qnacc_state_t * state = (const qnacc_state_t *) vstate; + size_t n = ringbuf_copy(state->window, state->rbuf); + + (void) params; + + gsl_sort(state->window, 1, n); + *result = gsl_stats_Qn_from_sorted_data(state->window, 1, n, state->work, state->work_int); + + return GSL_SUCCESS; +} + +static const gsl_movstat_accum qn_accum_type = +{ + qnacc_size, + qnacc_init, + qnacc_insert, + qnacc_delete, + qnacc_get +}; + +const gsl_movstat_accum *gsl_movstat_accum_Qn = &qn_accum_type; diff --git a/gsl-2.5/movstat/qnacc.lo b/gsl-2.5/movstat/qnacc.lo new file mode 100644 index 00000000..2fae801b --- /dev/null +++ b/gsl-2.5/movstat/qnacc.lo @@ -0,0 +1,12 @@ +# qnacc.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/qnacc.o' + +# Name of the non-PIC object +non_pic_object='qnacc.o' + diff --git a/gsl-2.5/movstat/qqracc.c b/gsl-2.5/movstat/qqracc.c new file mode 100644 index 00000000..eb7cfcf9 --- /dev/null +++ b/gsl-2.5/movstat/qqracc.c @@ -0,0 +1,118 @@ +/* movstat/qqracc.c + * + * Moving window QQR accumulator + * + * Copyright (C) 2018 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include +#include + +typedef double qqracc_type_t; +typedef qqracc_type_t ringbuf_type_t; + +#include "ringbuf.c" + +typedef struct +{ + qqracc_type_t *window; /* linear array for current window */ + ringbuf *rbuf; /* ring buffer storing current window */ +} qqracc_state_t; + +static size_t +qqracc_size(const size_t n) +{ + size_t size = 0; + + size += sizeof(qqracc_state_t); + size += n * sizeof(qqracc_type_t); + size += ringbuf_size(n); + + return size; +} + +static int +qqracc_init(const size_t n, void * vstate) +{ + qqracc_state_t * state = (qqracc_state_t *) vstate; + + state->window = (qqracc_type_t *) ((unsigned char *) vstate + sizeof(qqracc_state_t)); + state->rbuf = (ringbuf *) ((unsigned char *) state->window + n * sizeof(qqracc_type_t)); + + ringbuf_init(n, state->rbuf); + + return GSL_SUCCESS; +} + +static int +qqracc_insert(const qqracc_type_t x, void * vstate) +{ + qqracc_state_t * state = (qqracc_state_t *) vstate; + + /* add new element to ring buffer */ + ringbuf_insert(x, state->rbuf); + + return GSL_SUCCESS; +} + +static int +qqracc_delete(void * vstate) +{ + qqracc_state_t * state = (qqracc_state_t *) vstate; + + if (!ringbuf_is_empty(state->rbuf)) + ringbuf_pop_back(state->rbuf); + + return GSL_SUCCESS; +} + +/* FIXME XXX: this is inefficient - could be improved by maintaining a sorted ring buffer */ +static int +qqracc_get(void * params, qqracc_type_t * result, const void * vstate) +{ + const qqracc_state_t * state = (const qqracc_state_t *) vstate; + double q = *(double *) params; + size_t n = ringbuf_copy(state->window, state->rbuf); + double quant1, quant2; + + gsl_sort(state->window, 1, n); + + /* compute q-quantile and (1-q)-quantile */ + quant1 = gsl_stats_quantile_from_sorted_data(state->window, 1, n, q); + quant2 = gsl_stats_quantile_from_sorted_data(state->window, 1, n, 1.0 - q); + + /* compute q-quantile range */ + *result = quant2 - quant1; + + return GSL_SUCCESS; +} + +static const gsl_movstat_accum qqr_accum_type = +{ + qqracc_size, + qqracc_init, + qqracc_insert, + qqracc_delete, + qqracc_get +}; + +const gsl_movstat_accum *gsl_movstat_accum_qqr = &qqr_accum_type; diff --git a/gsl-2.5/movstat/qqracc.lo b/gsl-2.5/movstat/qqracc.lo new file mode 100644 index 00000000..c75d27c1 --- /dev/null +++ b/gsl-2.5/movstat/qqracc.lo @@ -0,0 +1,12 @@ +# qqracc.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/qqracc.o' + +# Name of the non-PIC object +non_pic_object='qqracc.o' + diff --git a/gsl-2.5/movstat/ringbuf.c b/gsl-2.5/movstat/ringbuf.c new file mode 100644 index 00000000..ab2ccd09 --- /dev/null +++ b/gsl-2.5/movstat/ringbuf.c @@ -0,0 +1,220 @@ +/* movstat/ringbuf.c + * + * Ring buffer module + * + * Copyright (C) 2018 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_RINGBUF_C__ +#define __GSL_RINGBUF_C__ + +/*typedef int ringbuf_type;*/ + +typedef struct +{ + ringbuf_type_t *array; + int head; + int tail; + int size; /* total elements allocated */ +} ringbuf; + +static size_t ringbuf_size(const size_t n); +static int ringbuf_empty(ringbuf * d); +static int ringbuf_is_empty(const ringbuf * d); +static int ringbuf_is_full(const ringbuf * d); +static int ringbuf_insert(const ringbuf_type_t x, ringbuf * d); +static int ringbuf_pop_back(ringbuf * b); +static ringbuf_type_t ringbuf_peek(const int i, const ringbuf * b); +static ringbuf_type_t ringbuf_peek_front(const ringbuf * d); +static ringbuf_type_t ringbuf_peek_back(const ringbuf * d); +static size_t ringbuf_copy(double * dest, const ringbuf * b); +static int ringbuf_n(const ringbuf * b); + +static size_t +ringbuf_size(const size_t n) +{ + size_t size = 0; + + size += sizeof(ringbuf); + size += n * sizeof(ringbuf_type_t); /* b->array */ + + return size; +} + +static int +ringbuf_init(const size_t n, ringbuf * b) +{ + b->array = (ringbuf_type_t *) ((char *) b + sizeof(ringbuf)); + b->head = -1; + b->tail = 0; + b->size = (int) n; + return GSL_SUCCESS; +} + +/* empty the buffer */ +static int +ringbuf_empty(ringbuf * b) +{ + b->head = -1; + b->tail = 0; + return GSL_SUCCESS; +} + +/* check if buffer is empty */ +static int +ringbuf_is_empty(const ringbuf * b) +{ + return (b->head == -1); +} + +/* check if buffer is full */ +static int +ringbuf_is_full(const ringbuf * b) +{ + return ((b->head == 0 && b->tail == b->size - 1) || + (b->head == b->tail + 1)); +} + +/* insert element into buffer, overwriting oldest element if necessary */ +static int +ringbuf_insert(const ringbuf_type_t x, ringbuf * b) +{ + if (b->head == -1) /* buffer is empty */ + { + b->head = 0; + b->tail = 0; + } + else if (b->head == 0) /* head is in first position, wrap to end */ + { + b->head = b->size - 1; + + if (b->tail == b->head && b->size > 1) + --(b->tail); /* buffer is full so decrease tail */ + } + else /* decrement head */ + { + --(b->head); + + if (b->tail == b->head) + { + /* buffer is full so update tail */ + if (b->tail == 0) + b->tail = b->size - 1; + else + --(b->tail); + } + } + + /* insert element */ + b->array[b->head] = x; + + return GSL_SUCCESS; +} + +static int +ringbuf_pop_back(ringbuf * b) +{ + if (ringbuf_is_empty(b) || b->tail < 0) + { + GSL_ERROR("buffer is empty", GSL_EBADLEN); + } + else + { + if (b->head == b->tail) /* buffer has only one element */ + { + b->head = -1; + b->tail = -1; + } + else if (b->tail == 0) /* tail is in first position, wrap to end */ + { + b->tail = b->size - 1; + } + else /* decrement tail */ + { + --(b->tail); + } + + return GSL_SUCCESS; + } +} + +static ringbuf_type_t +ringbuf_peek(const int i, const ringbuf * b) +{ + if (ringbuf_is_empty(b)) + { + GSL_ERROR("buffer is empty", GSL_EBADLEN); + } + else + { + return b->array[(b->head + i) % b->size]; + } +} + +static ringbuf_type_t +ringbuf_peek_front(const ringbuf * b) +{ + if (ringbuf_is_empty(b)) + { + GSL_ERROR("buffer is empty", GSL_EBADLEN); + } + else + { + return b->array[b->head]; + } +} + +static ringbuf_type_t +ringbuf_peek_back(const ringbuf * b) +{ + if (ringbuf_is_empty(b) || b->tail < 0) + { + GSL_ERROR("buffer is empty", GSL_EBADLEN); + } + else + { + return b->array[b->tail]; + } +} + +static size_t +ringbuf_copy(double * dest, const ringbuf * b) +{ + if (ringbuf_is_empty(b) || b->tail < 0) + { + return 0; + } + else + { + const int n = ringbuf_n(b); + int i; + + for (i = 0; i < n; ++i) + dest[i] = b->array[(b->head + i) % b->size]; + + return (size_t) n; + } +} + +static int +ringbuf_n(const ringbuf * b) +{ + const int n = (b->head > b->tail) ? (b->size - b->head + b->tail + 1) : (b->tail - b->head + 1); + return n; +} + +#endif /* __GSL_RINGBUF_C__ */ diff --git a/gsl-2.5/movstat/snacc.c b/gsl-2.5/movstat/snacc.c new file mode 100644 index 00000000..de4dea64 --- /dev/null +++ b/gsl-2.5/movstat/snacc.c @@ -0,0 +1,114 @@ +/* movstat/snacc.c + * + * Moving window S_n accumulator + * + * Copyright (C) 2018 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include +#include + +typedef double snacc_type_t; +typedef snacc_type_t ringbuf_type_t; + +#include "ringbuf.c" + +typedef struct +{ + snacc_type_t *window; /* linear array for current window */ + snacc_type_t *work; /* workspace */ + ringbuf *rbuf; /* ring buffer storing current window */ +} snacc_state_t; + +static size_t +snacc_size(const size_t n) +{ + size_t size = 0; + + size += sizeof(snacc_state_t); + size += 2 * n * sizeof(snacc_type_t); + size += ringbuf_size(n); + + return size; +} + +static int +snacc_init(const size_t n, void * vstate) +{ + snacc_state_t * state = (snacc_state_t *) vstate; + + state->window = (snacc_type_t *) ((unsigned char *) vstate + sizeof(snacc_state_t)); + state->work = (snacc_type_t *) ((unsigned char *) state->window + n * sizeof(snacc_type_t)); + state->rbuf = (ringbuf *) ((unsigned char *) state->work + n * sizeof(snacc_type_t)); + + ringbuf_init(n, state->rbuf); + + return GSL_SUCCESS; +} + +static int +snacc_insert(const snacc_type_t x, void * vstate) +{ + snacc_state_t * state = (snacc_state_t *) vstate; + + /* add new element to ring buffer */ + ringbuf_insert(x, state->rbuf); + + return GSL_SUCCESS; +} + +static int +snacc_delete(void * vstate) +{ + snacc_state_t * state = (snacc_state_t *) vstate; + + if (!ringbuf_is_empty(state->rbuf)) + ringbuf_pop_back(state->rbuf); + + return GSL_SUCCESS; +} + +/* FIXME XXX: this is inefficient - could be improved by maintaining a sorted ring buffer */ +static int +snacc_get(void * params, snacc_type_t * result, const void * vstate) +{ + const snacc_state_t * state = (const snacc_state_t *) vstate; + size_t n = ringbuf_copy(state->window, state->rbuf); + + (void) params; + + gsl_sort(state->window, 1, n); + *result = gsl_stats_Sn_from_sorted_data(state->window, 1, n, state->work); + + return GSL_SUCCESS; +} + +static const gsl_movstat_accum sn_accum_type = +{ + snacc_size, + snacc_init, + snacc_insert, + snacc_delete, + snacc_get +}; + +const gsl_movstat_accum *gsl_movstat_accum_Sn = &sn_accum_type; diff --git a/gsl-2.5/movstat/snacc.lo b/gsl-2.5/movstat/snacc.lo new file mode 100644 index 00000000..2d757501 --- /dev/null +++ b/gsl-2.5/movstat/snacc.lo @@ -0,0 +1,12 @@ +# snacc.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/snacc.o' + +# Name of the non-PIC object +non_pic_object='snacc.o' + diff --git a/gsl-2.5/movstat/sumacc.c b/gsl-2.5/movstat/sumacc.c new file mode 100644 index 00000000..dbd9c71c --- /dev/null +++ b/gsl-2.5/movstat/sumacc.c @@ -0,0 +1,112 @@ +/* movstat/sumacc.c + * + * Moving window sum accumulator + * + * Copyright (C) 2018 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include + +typedef double ringbuf_type_t; + +#include "ringbuf.c" + +typedef struct +{ + double sum; /* current window sum */ + ringbuf *rbuf; /* ring buffer storing current window */ +} sumacc_state_t; + +static size_t +sumacc_size(const size_t n) +{ + size_t size = 0; + + size += sizeof(sumacc_state_t); + size += ringbuf_size(n); + + return size; +} + +static int +sumacc_init(const size_t n, void * vstate) +{ + sumacc_state_t * state = (sumacc_state_t *) vstate; + + state->sum = 0.0; + + state->rbuf = (ringbuf *) ((unsigned char *) vstate + sizeof(sumacc_state_t)); + ringbuf_init(n, state->rbuf); + + return GSL_SUCCESS; +} + +static int +sumacc_insert(const double x, void * vstate) +{ + sumacc_state_t * state = (sumacc_state_t *) vstate; + + if (ringbuf_is_full(state->rbuf)) + { + /* subtract oldest element from sum */ + state->sum -= ringbuf_peek_back(state->rbuf); + } + + /* add new element to sum and ring buffer */ + state->sum += x; + ringbuf_insert(x, state->rbuf); + + return GSL_SUCCESS; +} + +static int +sumacc_delete(void * vstate) +{ + sumacc_state_t * state = (sumacc_state_t *) vstate; + + if (!ringbuf_is_empty(state->rbuf)) + { + state->sum -= ringbuf_peek_back(state->rbuf); + ringbuf_pop_back(state->rbuf); + } + + return GSL_SUCCESS; +} + +static int +sumacc_get(void * params, double * result, const void * vstate) +{ + const sumacc_state_t * state = (const sumacc_state_t *) vstate; + (void) params; + *result = state->sum; + return GSL_SUCCESS; +} + +static const gsl_movstat_accum sum_accum_type = +{ + sumacc_size, + sumacc_init, + sumacc_insert, + sumacc_delete, + sumacc_get +}; + +const gsl_movstat_accum *gsl_movstat_accum_sum = &sum_accum_type; diff --git a/gsl-2.5/movstat/sumacc.lo b/gsl-2.5/movstat/sumacc.lo new file mode 100644 index 00000000..c0c7623f --- /dev/null +++ b/gsl-2.5/movstat/sumacc.lo @@ -0,0 +1,12 @@ +# sumacc.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/sumacc.o' + +# Name of the non-PIC object +non_pic_object='sumacc.o' + diff --git a/gsl-2.5/movstat/test b/gsl-2.5/movstat/test new file mode 100755 index 00000000..f7474641 Binary files /dev/null and b/gsl-2.5/movstat/test differ diff --git a/gsl-2.5/movstat/test-suite.log b/gsl-2.5/movstat/test-suite.log new file mode 100644 index 00000000..78952b1c --- /dev/null +++ b/gsl-2.5/movstat/test-suite.log @@ -0,0 +1,14 @@ +===================================== + gsl 2.5: movstat/test-suite.log +===================================== + +# TOTAL: 1 +# PASS: 1 +# SKIP: 0 +# XFAIL: 0 +# FAIL: 0 +# XPASS: 0 +# ERROR: 0 + +.. contents:: :depth: 2 + diff --git a/gsl-2.5/movstat/test.c b/gsl-2.5/movstat/test.c new file mode 100644 index 00000000..ad097c9c --- /dev/null +++ b/gsl-2.5/movstat/test.c @@ -0,0 +1,109 @@ +/* movstat/test.c + * + * Copyright (C) 2018 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/* compare two vectors */ +static void +compare_vectors(const double tol, const gsl_vector * v, const gsl_vector * expected, + const char * desc) +{ + const size_t n = v->size; + size_t i; + + for (i = 0; i < n; ++i) + { + double vi = gsl_vector_get(v, i); + double ui = gsl_vector_get(expected, i); + + gsl_test_rel(vi, ui, tol, "%s i=%zu", desc, i); + } +} + +/* generate random vector with elements in [-1,1] */ +static void +random_vector(gsl_vector * v, gsl_rng * r) +{ + size_t i; + + for (i = 0; i < v->size; ++i) + { + double vi = 2.0 * gsl_rng_uniform(r) - 1.0; /* in [-1,1] */ + gsl_vector_set(v, i, vi); + } +} + +static int +test_noisy_sine(const double sigma, gsl_vector * x, gsl_rng * r) +{ + const size_t n = x->size; + size_t i; + + for (i = 0; i < n; ++i) + { + double ti = (double) i / (n - 1.0); + double xi = sin(2.0 * M_PI * ti) + + sin(2.0 * M_PI * 40.0 * ti); + double ei = gsl_ran_gaussian(r, sigma); + + gsl_vector_set(x, i, xi + ei); + } + + return GSL_SUCCESS; +} + +#include "test_mad.c" +#include "test_mean.c" +#include "test_median.c" +#include "test_minmax.c" +#include "test_Qn.c" +#include "test_qqr.c" +#include "test_sum.c" +#include "test_Sn.c" +#include "test_variance.c" + +int +main() +{ + gsl_rng *r = gsl_rng_alloc(gsl_rng_default); + + test_mean(r); + test_median(r); + test_minmax(r); + test_mad(r); + test_Qn(r); + test_qqr(r); + test_sum(r); + test_Sn(r); + test_variance(r); + + gsl_rng_free(r); + + exit (gsl_test_summary()); +} diff --git a/gsl-2.5/movstat/test.log b/gsl-2.5/movstat/test.log new file mode 100644 index 00000000..86420ea5 --- /dev/null +++ b/gsl-2.5/movstat/test.log @@ -0,0 +1 @@ +Completed [1379180/1379180] diff --git a/gsl-2.5/movstat/test.trs b/gsl-2.5/movstat/test.trs new file mode 100644 index 00000000..3f0f396c --- /dev/null +++ b/gsl-2.5/movstat/test.trs @@ -0,0 +1,4 @@ +:test-result: PASS +:global-test-result: PASS +:recheck: no +:copy-in-global-log: no diff --git a/gsl-2.5/movstat/test_Qn.c b/gsl-2.5/movstat/test_Qn.c new file mode 100644 index 00000000..dea40652 --- /dev/null +++ b/gsl-2.5/movstat/test_Qn.c @@ -0,0 +1,157 @@ +/* movstat/test_Qn.c + * + * Copyright (C) 2018 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include + +/* calculate Q_n statistic for input vector using slow/naive algorithm */ +static int +slow_movQn(const gsl_movstat_end_t etype, const gsl_vector * x, gsl_vector * y, + const int H, const int J) +{ + const size_t n = x->size; + const int K = H + J + 1; + double *window = malloc(K * sizeof(double)); + double *work = malloc(3 * K * sizeof(double)); + int *work_int = malloc(5 * K * sizeof(int)); + size_t i; + + for (i = 0; i < n; ++i) + { + size_t wsize = gsl_movstat_fill(etype, x, i, H, J, window); + double Qn; + + gsl_sort(window, 1, wsize); + Qn = gsl_stats_Qn_from_sorted_data(window, 1, wsize, work, work_int); + gsl_vector_set(y, i, Qn); + } + + free(window); + free(work); + free(work_int); + + return GSL_SUCCESS; +} + +static double +func_Qn(const size_t n, double x[], void * params) +{ + double *work = malloc(3 * n * sizeof(double)); + int *work_int = malloc(5 * n * sizeof(int)); + double Qn; + + (void) params; + + gsl_sort(x, 1, n); + Qn = gsl_stats_Qn_from_sorted_data(x, 1, n, work, work_int); + + free(work); + free(work_int); + + return Qn; +} + +static void +test_Qn_proc(const double tol, const size_t n, const size_t H, const size_t J, + const gsl_movstat_end_t etype, gsl_rng *rng_p) +{ + gsl_movstat_workspace *w; + gsl_vector *x = gsl_vector_alloc(n); + gsl_vector *y = gsl_vector_alloc(n); + gsl_vector *z = gsl_vector_alloc(n); + gsl_movstat_function F; + char buf[2048]; + + F.function = func_Qn; + F.params = NULL; + + if (H == J) + w = gsl_movstat_alloc(2*H + 1); + else + w = gsl_movstat_alloc2(H, J); + + /* test moving median with random input */ + random_vector(x, rng_p); + + /* y = Q_n(x) with slow brute force algorithm */ + slow_movQn(etype, x, y, H, J); + + /* z = Q_n(x) */ + gsl_movstat_Qn(etype, x, z, w); + + /* test y = z */ + sprintf(buf, "n=%zu H=%zu J=%zu endtype=%u Qn random", n, H, J, etype); + compare_vectors(tol, z, y, buf); + + /* z = Q_n(x) in-place */ + gsl_vector_memcpy(z, x); + gsl_movstat_Qn(etype, z, z, w); + + sprintf(buf, "n=%zu H=%zu J=%zu endtype=%u Qn random in-place", n, H, J, etype); + compare_vectors(tol, z, y, buf); + + /* z = Q_n(x) with user-defined function */ + gsl_movstat_apply(etype, &F, x, z, w); + + sprintf(buf, "n=%zu H=%zu J=%zu endtype=%u Qn user", n, H, J, etype); + compare_vectors(tol, z, y, buf); + + gsl_vector_free(x); + gsl_vector_free(y); + gsl_vector_free(z); + gsl_movstat_free(w); +} + +static void +test_Qn(gsl_rng * rng_p) +{ + test_Qn_proc(GSL_DBL_EPSILON, 1000, 0, 0, GSL_MOVSTAT_END_PADZERO, rng_p); + test_Qn_proc(GSL_DBL_EPSILON, 1000, 5, 5, GSL_MOVSTAT_END_PADZERO, rng_p); + test_Qn_proc(GSL_DBL_EPSILON, 1000, 5, 2, GSL_MOVSTAT_END_PADZERO, rng_p); + test_Qn_proc(GSL_DBL_EPSILON, 1000, 2, 5, GSL_MOVSTAT_END_PADZERO, rng_p); + test_Qn_proc(GSL_DBL_EPSILON, 2000, 50, 0, GSL_MOVSTAT_END_PADZERO, rng_p); + test_Qn_proc(GSL_DBL_EPSILON, 2000, 0, 50, GSL_MOVSTAT_END_PADZERO, rng_p); + test_Qn_proc(GSL_DBL_EPSILON, 20, 50, 50, GSL_MOVSTAT_END_PADZERO, rng_p); + test_Qn_proc(GSL_DBL_EPSILON, 20, 1, 50, GSL_MOVSTAT_END_PADZERO, rng_p); + test_Qn_proc(GSL_DBL_EPSILON, 20, 50, 1, GSL_MOVSTAT_END_PADZERO, rng_p); + + test_Qn_proc(GSL_DBL_EPSILON, 1000, 0, 0, GSL_MOVSTAT_END_PADVALUE, rng_p); + test_Qn_proc(GSL_DBL_EPSILON, 1000, 5, 5, GSL_MOVSTAT_END_PADVALUE, rng_p); + test_Qn_proc(GSL_DBL_EPSILON, 1000, 5, 2, GSL_MOVSTAT_END_PADVALUE, rng_p); + test_Qn_proc(GSL_DBL_EPSILON, 1000, 2, 5, GSL_MOVSTAT_END_PADVALUE, rng_p); + test_Qn_proc(GSL_DBL_EPSILON, 2000, 50, 0, GSL_MOVSTAT_END_PADVALUE, rng_p); + test_Qn_proc(GSL_DBL_EPSILON, 2000, 0, 50, GSL_MOVSTAT_END_PADVALUE, rng_p); + test_Qn_proc(GSL_DBL_EPSILON, 20, 50, 50, GSL_MOVSTAT_END_PADVALUE, rng_p); + test_Qn_proc(GSL_DBL_EPSILON, 20, 1, 50, GSL_MOVSTAT_END_PADVALUE, rng_p); + test_Qn_proc(GSL_DBL_EPSILON, 20, 50, 1, GSL_MOVSTAT_END_PADVALUE, rng_p); + + test_Qn_proc(GSL_DBL_EPSILON, 1000, 0, 0, GSL_MOVSTAT_END_TRUNCATE, rng_p); + test_Qn_proc(GSL_DBL_EPSILON, 1000, 5, 5, GSL_MOVSTAT_END_TRUNCATE, rng_p); + test_Qn_proc(GSL_DBL_EPSILON, 1000, 5, 2, GSL_MOVSTAT_END_TRUNCATE, rng_p); + test_Qn_proc(GSL_DBL_EPSILON, 1000, 2, 5, GSL_MOVSTAT_END_TRUNCATE, rng_p); + test_Qn_proc(GSL_DBL_EPSILON, 2000, 50, 0, GSL_MOVSTAT_END_TRUNCATE, rng_p); + test_Qn_proc(GSL_DBL_EPSILON, 2000, 0, 50, GSL_MOVSTAT_END_TRUNCATE, rng_p); + test_Qn_proc(GSL_DBL_EPSILON, 20, 50, 50, GSL_MOVSTAT_END_TRUNCATE, rng_p); + test_Qn_proc(GSL_DBL_EPSILON, 20, 1, 50, GSL_MOVSTAT_END_TRUNCATE, rng_p); + test_Qn_proc(GSL_DBL_EPSILON, 20, 50, 1, GSL_MOVSTAT_END_TRUNCATE, rng_p); +} diff --git a/gsl-2.5/movstat/test_Sn.c b/gsl-2.5/movstat/test_Sn.c new file mode 100644 index 00000000..51b1a761 --- /dev/null +++ b/gsl-2.5/movstat/test_Sn.c @@ -0,0 +1,152 @@ +/* movstat/test_Sn.c + * + * Copyright (C) 2018 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include + +/* calculate S_n statistic for input vector using slow/naive algorithm */ +static int +slow_movSn(const gsl_movstat_end_t etype, const gsl_vector * x, gsl_vector * y, + const int H, const int J) +{ + const size_t n = x->size; + const int K = H + J + 1; + double *window = malloc(K * sizeof(double)); + double *work = malloc(K * sizeof(double)); + size_t i; + + for (i = 0; i < n; ++i) + { + size_t wsize = gsl_movstat_fill(etype, x, i, H, J, window); + double Sn; + + gsl_sort(window, 1, wsize); + Sn = gsl_stats_Sn_from_sorted_data(window, 1, wsize, work); + gsl_vector_set(y, i, Sn); + } + + free(window); + free(work); + + return GSL_SUCCESS; +} + +static double +func_Sn(const size_t n, double x[], void * params) +{ + double *work = malloc(n * sizeof(double)); + double Sn; + + (void) params; + + gsl_sort(x, 1, n); + Sn = gsl_stats_Sn_from_sorted_data(x, 1, n, work); + + free(work); + + return Sn; +} + +static void +test_Sn_proc(const double tol, const size_t n, const size_t H, const size_t J, + const gsl_movstat_end_t etype, gsl_rng *rng_p) +{ + gsl_movstat_workspace *w; + gsl_vector *x = gsl_vector_alloc(n); + gsl_vector *y = gsl_vector_alloc(n); + gsl_vector *z = gsl_vector_alloc(n); + gsl_movstat_function F; + char buf[2048]; + + F.function = func_Sn; + F.params = NULL; + + if (H == J) + w = gsl_movstat_alloc(2*H + 1); + else + w = gsl_movstat_alloc2(H, J); + + /* test moving median with random input */ + random_vector(x, rng_p); + + /* y = S_n(x) with slow brute force algorithm */ + slow_movSn(etype, x, y, H, J); + + /* z = S_n(x) */ + gsl_movstat_Sn(etype, x, z, w); + + /* test y = z */ + sprintf(buf, "n=%zu H=%zu J=%zu endtype=%u Sn random", n, H, J, etype); + compare_vectors(tol, z, y, buf); + + /* z = S_n(x) in-place */ + gsl_vector_memcpy(z, x); + gsl_movstat_Sn(etype, z, z, w); + + sprintf(buf, "n=%zu H=%zu J=%zu endtype=%u Sn random in-place", n, H, J, etype); + compare_vectors(tol, z, y, buf); + + /* z = S_n(x) with user-defined function */ + gsl_movstat_apply(etype, &F, x, z, w); + + sprintf(buf, "n=%zu H=%zu J=%zu endtype=%u Sn user", n, H, J, etype); + compare_vectors(tol, z, y, buf); + + gsl_vector_free(x); + gsl_vector_free(y); + gsl_vector_free(z); + gsl_movstat_free(w); +} + +static void +test_Sn(gsl_rng * rng_p) +{ + test_Sn_proc(GSL_DBL_EPSILON, 1000, 0, 0, GSL_MOVSTAT_END_PADZERO, rng_p); + test_Sn_proc(GSL_DBL_EPSILON, 1000, 5, 5, GSL_MOVSTAT_END_PADZERO, rng_p); + test_Sn_proc(GSL_DBL_EPSILON, 1000, 5, 2, GSL_MOVSTAT_END_PADZERO, rng_p); + test_Sn_proc(GSL_DBL_EPSILON, 1000, 2, 5, GSL_MOVSTAT_END_PADZERO, rng_p); + test_Sn_proc(GSL_DBL_EPSILON, 2000, 50, 0, GSL_MOVSTAT_END_PADZERO, rng_p); + test_Sn_proc(GSL_DBL_EPSILON, 2000, 0, 50, GSL_MOVSTAT_END_PADZERO, rng_p); + test_Sn_proc(GSL_DBL_EPSILON, 20, 50, 50, GSL_MOVSTAT_END_PADZERO, rng_p); + test_Sn_proc(GSL_DBL_EPSILON, 20, 1, 50, GSL_MOVSTAT_END_PADZERO, rng_p); + test_Sn_proc(GSL_DBL_EPSILON, 20, 50, 1, GSL_MOVSTAT_END_PADZERO, rng_p); + + test_Sn_proc(GSL_DBL_EPSILON, 1000, 0, 0, GSL_MOVSTAT_END_PADVALUE, rng_p); + test_Sn_proc(GSL_DBL_EPSILON, 1000, 5, 5, GSL_MOVSTAT_END_PADVALUE, rng_p); + test_Sn_proc(GSL_DBL_EPSILON, 1000, 5, 2, GSL_MOVSTAT_END_PADVALUE, rng_p); + test_Sn_proc(GSL_DBL_EPSILON, 1000, 2, 5, GSL_MOVSTAT_END_PADVALUE, rng_p); + test_Sn_proc(GSL_DBL_EPSILON, 2000, 50, 0, GSL_MOVSTAT_END_PADVALUE, rng_p); + test_Sn_proc(GSL_DBL_EPSILON, 2000, 0, 50, GSL_MOVSTAT_END_PADVALUE, rng_p); + test_Sn_proc(GSL_DBL_EPSILON, 20, 50, 50, GSL_MOVSTAT_END_PADVALUE, rng_p); + test_Sn_proc(GSL_DBL_EPSILON, 20, 1, 50, GSL_MOVSTAT_END_PADVALUE, rng_p); + test_Sn_proc(GSL_DBL_EPSILON, 20, 50, 1, GSL_MOVSTAT_END_PADVALUE, rng_p); + + test_Sn_proc(GSL_DBL_EPSILON, 1000, 0, 0, GSL_MOVSTAT_END_TRUNCATE, rng_p); + test_Sn_proc(GSL_DBL_EPSILON, 1000, 5, 5, GSL_MOVSTAT_END_TRUNCATE, rng_p); + test_Sn_proc(GSL_DBL_EPSILON, 1000, 5, 2, GSL_MOVSTAT_END_TRUNCATE, rng_p); + test_Sn_proc(GSL_DBL_EPSILON, 1000, 2, 5, GSL_MOVSTAT_END_TRUNCATE, rng_p); + test_Sn_proc(GSL_DBL_EPSILON, 2000, 50, 0, GSL_MOVSTAT_END_TRUNCATE, rng_p); + test_Sn_proc(GSL_DBL_EPSILON, 2000, 0, 50, GSL_MOVSTAT_END_TRUNCATE, rng_p); + test_Sn_proc(GSL_DBL_EPSILON, 20, 50, 50, GSL_MOVSTAT_END_TRUNCATE, rng_p); + test_Sn_proc(GSL_DBL_EPSILON, 20, 1, 50, GSL_MOVSTAT_END_TRUNCATE, rng_p); + test_Sn_proc(GSL_DBL_EPSILON, 20, 50, 1, GSL_MOVSTAT_END_TRUNCATE, rng_p); +} diff --git a/gsl-2.5/movstat/test_mad.c b/gsl-2.5/movstat/test_mad.c new file mode 100644 index 00000000..3e588fe6 --- /dev/null +++ b/gsl-2.5/movstat/test_mad.c @@ -0,0 +1,178 @@ +/* movstat/test_mad.c + * + * Copyright (C) 2018 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include + +/* compute filtered data by explicitely constructing window and finding MAD */ +int +slow_movmad(const gsl_movstat_end_t etype, const gsl_vector * x, gsl_vector * y, + const int H, const int J) +{ + const size_t n = x->size; + const int K = H + J + 1; + double *window = malloc(K * sizeof(double)); + size_t i; + + for (i = 0; i < n; ++i) + { + size_t wsize = gsl_movstat_fill(etype, x, i, H, J, window); + double median = gsl_stats_median(window, 1, wsize); + double mad; + size_t j; + + for (j = 0; j < wsize; ++j) + window[j] = fabs(window[j] - median); + + mad = gsl_stats_median(window, 1, wsize); + + gsl_vector_set(y, i, mad); + } + + free(window); + + return GSL_SUCCESS; +} + +static double +func_mad(const size_t n, double x[], void * params) +{ + double *work = malloc(n * sizeof(double)); + double mad; + + (void) params; + + mad = gsl_stats_mad0(x, 1, n, work); + + free(work); + + return mad; +} + +static void +test_mad_proc(const double tol, const size_t n, const size_t H, const size_t J, + const gsl_movstat_end_t etype, gsl_rng *rng_p) +{ + const double scale = 1.482602218505602; + gsl_movstat_workspace *w; + gsl_vector *x = gsl_vector_alloc(n); + gsl_vector *y = gsl_vector_alloc(n); + gsl_vector *z = gsl_vector_alloc(n); + gsl_vector *med1 = gsl_vector_alloc(n); + gsl_vector *med2 = gsl_vector_alloc(n); + gsl_movstat_function F; + char buf[2048]; + + F.function = func_mad; + F.params = NULL; + + if (H == J) + w = gsl_movstat_alloc(2*H + 1); + else + w = gsl_movstat_alloc2(H, J); + + /* test moving MAD with random input */ + random_vector(x, rng_p); + + /* y = MAD(x) with slow brute force algorithm */ + slow_movmad(etype, x, y, H, J); + + /* z = MAD(x) */ + gsl_movstat_mad0(etype, x, med1, z, w); + + /* med2 = median(x) */ + gsl_movstat_median(etype, x, med2, w); + + /* test y = z */ + sprintf(buf, "n=%zu H=%zu J=%zu endtype=%u MAD0 random", n, H, J, etype); + compare_vectors(tol, z, y, buf); + + /* test med1 = med2 */ + sprintf(buf, "n=%zu H=%zu J=%zu endtype=%u MAD0 random median test", n, H, J, etype); + compare_vectors(tol, med1, med2, buf); + + /* z = MAD(x) in-place */ + gsl_vector_memcpy(z, x); + gsl_movstat_mad0(etype, z, med1, z, w); + + sprintf(buf, "n=%zu H=%zu J=%zu endtype=%u MAD0 random in-place", n, H, J, etype); + compare_vectors(tol, z, y, buf); + + /* z = MAD(x) with user-defined function */ + gsl_movstat_apply(etype, &F, x, z, w); + + sprintf(buf, "n=%zu H=%zu J=%zu endtype=%u MAD0 user", n, H, J, etype); + compare_vectors(tol, z, y, buf); + + /* test scaled MAD function */ + + /* z = MAD(x) */ + gsl_movstat_mad(etype, x, med1, z, w); + + sprintf(buf, "n=%zu H=%zu J=%zu endtype=%u MAD random", n, H, J, etype); + gsl_vector_scale(y, scale); + compare_vectors(tol, z, y, buf); + + gsl_vector_free(x); + gsl_vector_free(y); + gsl_vector_free(z); + gsl_vector_free(med1); + gsl_vector_free(med2); + gsl_movstat_free(w); +} + +static void +test_mad(gsl_rng * rng_p) +{ + test_mad_proc(GSL_DBL_EPSILON, 100, 0, 0, GSL_MOVSTAT_END_PADZERO, rng_p); + test_mad_proc(GSL_DBL_EPSILON, 1000, 1, 1, GSL_MOVSTAT_END_PADZERO, rng_p); + test_mad_proc(GSL_DBL_EPSILON, 5000, 8, 8, GSL_MOVSTAT_END_PADZERO, rng_p); + test_mad_proc(GSL_DBL_EPSILON, 5000, 0, 5, GSL_MOVSTAT_END_PADZERO, rng_p); + test_mad_proc(GSL_DBL_EPSILON, 5000, 5, 0, GSL_MOVSTAT_END_PADZERO, rng_p); + test_mad_proc(GSL_DBL_EPSILON, 5000, 15, 10, GSL_MOVSTAT_END_PADZERO, rng_p); + test_mad_proc(GSL_DBL_EPSILON, 5000, 10, 15, GSL_MOVSTAT_END_PADZERO, rng_p); + test_mad_proc(GSL_DBL_EPSILON, 50, 100, 150, GSL_MOVSTAT_END_PADZERO, rng_p); + test_mad_proc(GSL_DBL_EPSILON, 50, 150, 100, GSL_MOVSTAT_END_PADZERO, rng_p); + test_mad_proc(GSL_DBL_EPSILON, 50, 100, 100, GSL_MOVSTAT_END_PADZERO, rng_p); + + test_mad_proc(GSL_DBL_EPSILON, 100, 0, 0, GSL_MOVSTAT_END_PADVALUE, rng_p); + test_mad_proc(GSL_DBL_EPSILON, 1000, 1, 1, GSL_MOVSTAT_END_PADVALUE, rng_p); + test_mad_proc(GSL_DBL_EPSILON, 5000, 8, 8, GSL_MOVSTAT_END_PADVALUE, rng_p); + test_mad_proc(GSL_DBL_EPSILON, 5000, 0, 5, GSL_MOVSTAT_END_PADVALUE, rng_p); + test_mad_proc(GSL_DBL_EPSILON, 5000, 5, 0, GSL_MOVSTAT_END_PADVALUE, rng_p); + test_mad_proc(GSL_DBL_EPSILON, 5000, 15, 10, GSL_MOVSTAT_END_PADVALUE, rng_p); + test_mad_proc(GSL_DBL_EPSILON, 5000, 10, 15, GSL_MOVSTAT_END_PADVALUE, rng_p); + test_mad_proc(GSL_DBL_EPSILON, 50, 100, 150, GSL_MOVSTAT_END_PADVALUE, rng_p); + test_mad_proc(GSL_DBL_EPSILON, 50, 150, 100, GSL_MOVSTAT_END_PADVALUE, rng_p); + test_mad_proc(GSL_DBL_EPSILON, 50, 100, 100, GSL_MOVSTAT_END_PADVALUE, rng_p); + + test_mad_proc(GSL_DBL_EPSILON, 100, 0, 0, GSL_MOVSTAT_END_TRUNCATE, rng_p); + test_mad_proc(GSL_DBL_EPSILON, 1000, 1, 1, GSL_MOVSTAT_END_TRUNCATE, rng_p); + test_mad_proc(GSL_DBL_EPSILON, 5000, 8, 8, GSL_MOVSTAT_END_TRUNCATE, rng_p); + test_mad_proc(GSL_DBL_EPSILON, 5000, 0, 5, GSL_MOVSTAT_END_TRUNCATE, rng_p); + test_mad_proc(GSL_DBL_EPSILON, 5000, 5, 0, GSL_MOVSTAT_END_TRUNCATE, rng_p); + test_mad_proc(GSL_DBL_EPSILON, 5000, 15, 10, GSL_MOVSTAT_END_TRUNCATE, rng_p); + test_mad_proc(GSL_DBL_EPSILON, 5000, 10, 15, GSL_MOVSTAT_END_TRUNCATE, rng_p); + test_mad_proc(GSL_DBL_EPSILON, 50, 100, 150, GSL_MOVSTAT_END_TRUNCATE, rng_p); + test_mad_proc(GSL_DBL_EPSILON, 50, 150, 100, GSL_MOVSTAT_END_TRUNCATE, rng_p); + test_mad_proc(GSL_DBL_EPSILON, 50, 100, 100, GSL_MOVSTAT_END_TRUNCATE, rng_p); +} diff --git a/gsl-2.5/movstat/test_mean.c b/gsl-2.5/movstat/test_mean.c new file mode 100644 index 00000000..dbb5c6da --- /dev/null +++ b/gsl-2.5/movstat/test_mean.c @@ -0,0 +1,135 @@ +/* movstat/test_mean.c + * + * Copyright (C) 2018 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include + +/* compute moving mean by explicitely constructing window and computing mean */ +int +slow_movmean(const gsl_movstat_end_t etype, const gsl_vector * x, gsl_vector * y, + const int H, const int J) +{ + const size_t n = x->size; + const int K = H + J + 1; + double *window = malloc(K * sizeof(double)); + size_t i; + + for (i = 0; i < n; ++i) + { + size_t wsize = gsl_movstat_fill(etype, x, i, H, J, window); + double mean = gsl_stats_mean(window, 1, wsize); + + gsl_vector_set(y, i, mean); + } + + free(window); + + return GSL_SUCCESS; +} + +static double +func_mean(const size_t n, double x[], void * params) +{ + (void) params; + return gsl_stats_mean(x, 1, n); +} + +static void +test_mean_proc(const double tol, const size_t n, const size_t H, const size_t J, + const gsl_movstat_end_t etype, gsl_rng * rng_p) +{ + gsl_movstat_workspace * w = gsl_movstat_alloc2(H, J); + gsl_vector * x = gsl_vector_alloc(n); + gsl_vector * y = gsl_vector_alloc(n); + gsl_vector * z = gsl_vector_alloc(n); + gsl_movstat_function F; + char buf[2048]; + + F.function = func_mean; + F.params = NULL; + + random_vector(x, rng_p); + + /* y = mean(x) with slow brute force method */ + slow_movmean(etype, x, y, H, J); + + /* y = mean(x) with fast method */ + gsl_movstat_mean(etype, x, z, w); + + /* test y = z */ + sprintf(buf, "n=%zu H=%zu J=%zu endtype=%u mean random", n, H, J, etype); + compare_vectors(tol, z, y, buf); + + /* z = mean(x) in-place */ + gsl_vector_memcpy(z, x); + gsl_movstat_mean(etype, z, z, w); + + sprintf(buf, "n=%zu H=%zu J=%zu endtype=%u mean random in-place", n, H, J, etype); + compare_vectors(tol, z, y, buf); + + /* z = mean(x) with user-defined function */ + gsl_movstat_apply(etype, &F, x, z, w); + + sprintf(buf, "n=%zu H=%zu J=%zu endtype=%u mean user", n, H, J, etype); + compare_vectors(tol, z, y, buf); + + gsl_movstat_free(w); + gsl_vector_free(x); + gsl_vector_free(y); + gsl_vector_free(z); +} + +static void +test_mean(gsl_rng * rng_p) +{ + const double eps = 1.0e-10; + + test_mean_proc(eps, 1000, 0, 0, GSL_MOVSTAT_END_PADZERO, rng_p); + test_mean_proc(eps, 1000, 3, 3, GSL_MOVSTAT_END_PADZERO, rng_p); + test_mean_proc(eps, 1000, 0, 5, GSL_MOVSTAT_END_PADZERO, rng_p); + test_mean_proc(eps, 1000, 5, 0, GSL_MOVSTAT_END_PADZERO, rng_p); + test_mean_proc(eps, 2000, 10, 5, GSL_MOVSTAT_END_PADZERO, rng_p); + test_mean_proc(eps, 2000, 5, 10, GSL_MOVSTAT_END_PADZERO, rng_p); + test_mean_proc(eps, 20, 50, 50, GSL_MOVSTAT_END_PADZERO, rng_p); + test_mean_proc(eps, 20, 10, 50, GSL_MOVSTAT_END_PADZERO, rng_p); + test_mean_proc(eps, 20, 50, 10, GSL_MOVSTAT_END_PADZERO, rng_p); + + test_mean_proc(eps, 1000, 0, 0, GSL_MOVSTAT_END_PADVALUE, rng_p); + test_mean_proc(eps, 1000, 3, 3, GSL_MOVSTAT_END_PADVALUE, rng_p); + test_mean_proc(eps, 1000, 0, 5, GSL_MOVSTAT_END_PADVALUE, rng_p); + test_mean_proc(eps, 1000, 5, 0, GSL_MOVSTAT_END_PADVALUE, rng_p); + test_mean_proc(eps, 2000, 10, 5, GSL_MOVSTAT_END_PADVALUE, rng_p); + test_mean_proc(eps, 2000, 5, 10, GSL_MOVSTAT_END_PADVALUE, rng_p); + test_mean_proc(eps, 20, 50, 50, GSL_MOVSTAT_END_PADVALUE, rng_p); + test_mean_proc(eps, 20, 10, 50, GSL_MOVSTAT_END_PADVALUE, rng_p); + test_mean_proc(eps, 20, 50, 10, GSL_MOVSTAT_END_PADVALUE, rng_p); + + test_mean_proc(eps, 1000, 0, 0, GSL_MOVSTAT_END_TRUNCATE, rng_p); + test_mean_proc(eps, 1000, 3, 3, GSL_MOVSTAT_END_TRUNCATE, rng_p); + test_mean_proc(eps, 1000, 0, 5, GSL_MOVSTAT_END_TRUNCATE, rng_p); + test_mean_proc(eps, 1000, 5, 0, GSL_MOVSTAT_END_TRUNCATE, rng_p); + test_mean_proc(eps, 2000, 10, 5, GSL_MOVSTAT_END_TRUNCATE, rng_p); + test_mean_proc(eps, 2000, 5, 10, GSL_MOVSTAT_END_TRUNCATE, rng_p); + test_mean_proc(eps, 20, 50, 50, GSL_MOVSTAT_END_TRUNCATE, rng_p); + test_mean_proc(eps, 20, 10, 50, GSL_MOVSTAT_END_TRUNCATE, rng_p); + test_mean_proc(eps, 20, 50, 10, GSL_MOVSTAT_END_TRUNCATE, rng_p); +} diff --git a/gsl-2.5/movstat/test_median.c b/gsl-2.5/movstat/test_median.c new file mode 100644 index 00000000..9eaca2f5 --- /dev/null +++ b/gsl-2.5/movstat/test_median.c @@ -0,0 +1,177 @@ +/* movstat/test_median.c + * + * Copyright (C) 2018 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include + +/* compute filtered data by explicitely constructing window, sorting it and finding median */ +int +slow_movmedian(const gsl_movstat_end_t etype, const gsl_vector * x, gsl_vector * y, + const int H, const int J) +{ + const size_t n = x->size; + const int K = H + J + 1; + double *window = malloc(K * sizeof(double)); + size_t i; + + for (i = 0; i < n; ++i) + { + size_t wsize = gsl_movstat_fill(etype, x, i, H, J, window); + double yi = gsl_stats_median(window, 1, wsize); + + gsl_vector_set(y, i, yi); + } + + free(window); + + return GSL_SUCCESS; +} + +/* test root sequence */ +static void +test_median_root(const double tol, const size_t n, const size_t K, const gsl_movstat_end_t etype) +{ + gsl_movstat_workspace *w = gsl_movstat_alloc(K); + gsl_vector *x = gsl_vector_alloc(n); + gsl_vector *y = gsl_vector_alloc(n); + char buf[2048]; + size_t i; + + /* test a root sequence (square input): x = [zero one zero] */ + gsl_vector_set_all(x, 0.0); + + for (i = n / 3; i <= n / 2; ++i) + gsl_vector_set(x, i, 1.0); + + /* compute y = median(x) and test y = x */ + gsl_movstat_median(etype, x, y, w); + + sprintf(buf, "n=%zu K=%zu endtype=%u SMF root sequence", n, K, etype); + compare_vectors(tol, y, x, buf); + + gsl_vector_free(x); + gsl_vector_free(y); + gsl_movstat_free(w); +} + +static double +func_median(const size_t n, double x[], void * params) +{ + (void) params; + return gsl_stats_median(x, 1, n); +} + +static void +test_median_proc(const double tol, const size_t n, const size_t H, const size_t J, + const gsl_movstat_end_t etype, gsl_rng *rng_p) +{ + gsl_movstat_workspace *w; + gsl_vector *x = gsl_vector_alloc(n); + gsl_vector *y = gsl_vector_alloc(n); + gsl_vector *z = gsl_vector_alloc(n); + gsl_movstat_function F; + char buf[2048]; + + F.function = func_median; + F.params = NULL; + + if (H == J) + w = gsl_movstat_alloc(2*H + 1); + else + w = gsl_movstat_alloc2(H, J); + + /* test moving median with random input */ + random_vector(x, rng_p); + + /* y = median(x) with slow brute force algorithm */ + slow_movmedian(etype, x, y, H, J); + + /* z = median(x) */ + gsl_movstat_median(etype, x, z, w); + + /* test y = z */ + sprintf(buf, "n=%zu H=%zu J=%zu endtype=%u median random", n, H, J, etype); + compare_vectors(tol, z, y, buf); + + /* z = median(x) in-place */ + gsl_vector_memcpy(z, x); + gsl_movstat_median(etype, z, z, w); + + sprintf(buf, "n=%zu H=%zu J=%zu endtype=%u median random in-place", n, H, J, etype); + compare_vectors(tol, z, y, buf); + + /* z = median(x) with user-defined function */ + gsl_movstat_apply(etype, &F, x, z, w); + + sprintf(buf, "n=%zu H=%zu J=%zu endtype=%u median user", n, H, J, etype); + compare_vectors(tol, z, y, buf); + + gsl_vector_free(x); + gsl_vector_free(y); + gsl_vector_free(z); + gsl_movstat_free(w); +} + +static void +test_median(gsl_rng * rng_p) +{ + test_median_root(GSL_DBL_EPSILON, 1000, 3, GSL_MOVSTAT_END_PADZERO); + test_median_root(GSL_DBL_EPSILON, 200, 15, GSL_MOVSTAT_END_PADVALUE); + test_median_root(GSL_DBL_EPSILON, 100, 5, GSL_MOVSTAT_END_TRUNCATE); + + test_median_proc(GSL_DBL_EPSILON, 1000, 0, 0, GSL_MOVSTAT_END_PADZERO, rng_p); + test_median_proc(GSL_DBL_EPSILON, 1000, 1, 1, GSL_MOVSTAT_END_PADZERO, rng_p); + test_median_proc(GSL_DBL_EPSILON, 100, 150, 150, GSL_MOVSTAT_END_PADZERO, rng_p); + test_median_proc(GSL_DBL_EPSILON, 5000, 8, 8, GSL_MOVSTAT_END_PADZERO, rng_p); + test_median_proc(GSL_DBL_EPSILON, 5000, 0, 5, GSL_MOVSTAT_END_PADZERO, rng_p); + test_median_proc(GSL_DBL_EPSILON, 5000, 5, 0, GSL_MOVSTAT_END_PADZERO, rng_p); + test_median_proc(GSL_DBL_EPSILON, 5000, 15, 10, GSL_MOVSTAT_END_PADZERO, rng_p); + test_median_proc(GSL_DBL_EPSILON, 5000, 10, 15, GSL_MOVSTAT_END_PADZERO, rng_p); + test_median_proc(GSL_DBL_EPSILON, 50, 100, 150, GSL_MOVSTAT_END_PADZERO, rng_p); + test_median_proc(GSL_DBL_EPSILON, 50, 150, 100, GSL_MOVSTAT_END_PADZERO, rng_p); + test_median_proc(GSL_DBL_EPSILON, 50, 100, 100, GSL_MOVSTAT_END_PADZERO, rng_p); + + test_median_proc(GSL_DBL_EPSILON, 1000, 0, 0, GSL_MOVSTAT_END_PADVALUE, rng_p); + test_median_proc(GSL_DBL_EPSILON, 1000, 1, 1, GSL_MOVSTAT_END_PADVALUE, rng_p); + test_median_proc(GSL_DBL_EPSILON, 100, 150, 150, GSL_MOVSTAT_END_PADVALUE, rng_p); + test_median_proc(GSL_DBL_EPSILON, 5000, 8, 8, GSL_MOVSTAT_END_PADVALUE, rng_p); + test_median_proc(GSL_DBL_EPSILON, 5000, 0, 5, GSL_MOVSTAT_END_PADVALUE, rng_p); + test_median_proc(GSL_DBL_EPSILON, 5000, 5, 0, GSL_MOVSTAT_END_PADVALUE, rng_p); + test_median_proc(GSL_DBL_EPSILON, 5000, 15, 10, GSL_MOVSTAT_END_PADVALUE, rng_p); + test_median_proc(GSL_DBL_EPSILON, 5000, 10, 15, GSL_MOVSTAT_END_PADVALUE, rng_p); + test_median_proc(GSL_DBL_EPSILON, 50, 100, 150, GSL_MOVSTAT_END_PADVALUE, rng_p); + test_median_proc(GSL_DBL_EPSILON, 50, 150, 100, GSL_MOVSTAT_END_PADVALUE, rng_p); + test_median_proc(GSL_DBL_EPSILON, 50, 100, 100, GSL_MOVSTAT_END_PADVALUE, rng_p); + + test_median_proc(GSL_DBL_EPSILON, 1000, 0, 0, GSL_MOVSTAT_END_TRUNCATE, rng_p); + test_median_proc(GSL_DBL_EPSILON, 1000, 1, 1, GSL_MOVSTAT_END_TRUNCATE, rng_p); + test_median_proc(GSL_DBL_EPSILON, 100, 150, 150, GSL_MOVSTAT_END_TRUNCATE, rng_p); + test_median_proc(GSL_DBL_EPSILON, 5000, 8, 8, GSL_MOVSTAT_END_TRUNCATE, rng_p); + test_median_proc(GSL_DBL_EPSILON, 5000, 0, 5, GSL_MOVSTAT_END_TRUNCATE, rng_p); + test_median_proc(GSL_DBL_EPSILON, 5000, 5, 0, GSL_MOVSTAT_END_TRUNCATE, rng_p); + test_median_proc(GSL_DBL_EPSILON, 5000, 15, 10, GSL_MOVSTAT_END_TRUNCATE, rng_p); + test_median_proc(GSL_DBL_EPSILON, 5000, 10, 15, GSL_MOVSTAT_END_TRUNCATE, rng_p); + test_median_proc(GSL_DBL_EPSILON, 50, 100, 150, GSL_MOVSTAT_END_TRUNCATE, rng_p); + test_median_proc(GSL_DBL_EPSILON, 50, 150, 100, GSL_MOVSTAT_END_TRUNCATE, rng_p); + test_median_proc(GSL_DBL_EPSILON, 50, 100, 100, GSL_MOVSTAT_END_TRUNCATE, rng_p); +} diff --git a/gsl-2.5/movstat/test_minmax.c b/gsl-2.5/movstat/test_minmax.c new file mode 100644 index 00000000..bcc2a2a5 --- /dev/null +++ b/gsl-2.5/movstat/test_minmax.c @@ -0,0 +1,262 @@ +/* movstat/test_minmax.c + * + * Copyright (C) 2018 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include + +/* compute filtered data by explicitely constructing window and finding min/max */ +int +slow_minmax(const gsl_movstat_end_t etype, const gsl_vector * x, gsl_vector * y_min, gsl_vector * y_max, + const int H, const int J) +{ + const size_t n = x->size; + const int K = H + J + 1; + double *window = malloc(K * sizeof(double)); + size_t i; + + for (i = 0; i < n; ++i) + { + size_t wsize = gsl_movstat_fill(etype, x, i, H, J, window); + gsl_vector_view v = gsl_vector_view_array(window, wsize); + double min, max; + + gsl_vector_minmax(&v.vector, &min, &max); + gsl_vector_set(y_min, i, min); + gsl_vector_set(y_max, i, max); + } + + free(window); + + return GSL_SUCCESS; +} + +static double +func_min(const size_t n, double x[], void * params) +{ + gsl_vector_view v = gsl_vector_view_array(x, n); + (void) params; + return gsl_vector_min(&v.vector); +} + +static double +func_max(const size_t n, double x[], void * params) +{ + gsl_vector_view v = gsl_vector_view_array(x, n); + (void) params; + return gsl_vector_max(&v.vector); +} + +static void +test_minmax_x(const double tol, const gsl_vector * x, const int H, const int J, + const gsl_movstat_end_t endtype, const char * desc) +{ + const size_t n = x->size; + gsl_vector * u_min = gsl_vector_alloc(n); + gsl_vector * y_min = gsl_vector_alloc(n); + gsl_vector * z_min = gsl_vector_alloc(n); + gsl_vector * u_max = gsl_vector_alloc(n); + gsl_vector * y_max = gsl_vector_alloc(n); + gsl_vector * z_max = gsl_vector_alloc(n); + gsl_movstat_workspace * w = gsl_movstat_alloc2(H, J); + gsl_movstat_function F1, F2; + char buf[2048]; + + F1.function = func_min; + F1.params = NULL; + + F2.function = func_max; + F2.params = NULL; + + /* compute moving min/max */ + gsl_movstat_min(endtype, x, u_min, w); + gsl_movstat_max(endtype, x, u_max, w); + gsl_movstat_minmax(endtype, x, y_min, y_max, w); + + /* compute moving min/max with slow brute force method */ + slow_minmax(endtype, x, z_min, z_max, H, J); + + sprintf(buf, "test_minmax: %s min endtype=%d n=%zu H=%d J=%d", desc, endtype, n, H, J); + compare_vectors(tol, u_min, z_min, buf); + + sprintf(buf, "test_minmax: %s max endtype=%d n=%zu H=%d J=%d", desc, endtype, n, H, J); + compare_vectors(tol, u_max, z_max, buf); + + sprintf(buf, "test_minmax: %s minmax(minimum) endtype=%d n=%zu H=%d J=%d", desc, endtype, n, H, J); + compare_vectors(tol, y_min, z_min, buf); + + sprintf(buf, "test_minmax: %s minmax(maximum) endtype=%d n=%zu H=%d J=%d", desc, endtype, n, H, J); + compare_vectors(tol, y_max, z_max, buf); + + /* in-place tests */ + + gsl_vector_memcpy(u_min, x); + gsl_vector_memcpy(u_max, x); + + gsl_movstat_min(endtype, u_min, u_min, w); + gsl_movstat_max(endtype, u_max, u_max, w); + + sprintf(buf, "test_minmax: %s in-place min endtype=%d n=%zu H=%d J=%d", desc, endtype, n, H, J); + compare_vectors(tol, u_min, z_min, buf); + + sprintf(buf, "test_minmax: %s in-place max endtype=%d n=%zu H=%d J=%d", desc, endtype, n, H, J); + compare_vectors(tol, u_max, z_max, buf); + + /* user-defined function tests */ + + gsl_movstat_apply(endtype, &F1, x, z_min, w); + sprintf(buf, "n=%zu H=%d J=%d endtype=%u min user", n, H, J, endtype); + compare_vectors(tol, z_min, y_min, buf); + + gsl_movstat_apply(endtype, &F2, x, z_max, w); + sprintf(buf, "n=%zu H=%d J=%d endtype=%u max user", n, H, J, endtype); + compare_vectors(tol, z_max, y_max, buf); + + gsl_vector_free(u_min); + gsl_vector_free(y_min); + gsl_vector_free(z_min); + gsl_vector_free(u_max); + gsl_vector_free(y_max); + gsl_vector_free(z_max); + gsl_movstat_free(w); +} + +/* test alternating sequence [a,b,a,b,...] input */ +static void +test_minmax_alt(const double tol, const size_t n, const int H, const int J, + const gsl_movstat_end_t endtype) +{ + const double a = 5.0; + const double b = -5.0; + gsl_vector * x = gsl_vector_alloc(n); + size_t i; + + for (i = 0; i < n; ++i) + { + if (i % 2 == 0) + gsl_vector_set(x, i, a); + else + gsl_vector_set(x, i, b); + } + + test_minmax_x(tol, x, H, J, endtype, "alternating"); + + gsl_vector_free(x); +} + +/* test noisy sine wave input */ +static void +test_minmax_sine(const double tol, const size_t n, const int H, const int J, + const gsl_movstat_end_t endtype, gsl_rng * rng_p) +{ + gsl_vector * x = gsl_vector_alloc(n); + + /* construct noisy sine signal */ + test_noisy_sine(0.5, x, rng_p); + + test_minmax_x(tol, x, H, J, endtype, "noisy_sine"); + + gsl_vector_free(x); +} + +/* test random input */ +static void +test_minmax_random(const double tol, const size_t n, const int H, const int J, + const gsl_movstat_end_t endtype, gsl_rng * rng_p) +{ + gsl_vector * x = gsl_vector_alloc(n); + + /* construct random input signal */ + random_vector(x, rng_p); + + test_minmax_x(tol, x, H, J, endtype, "random"); + + gsl_vector_free(x); +} + +static void +test_minmax(gsl_rng * rng_p) +{ + /* alternating input */ + + test_minmax_alt(GSL_DBL_EPSILON, 1000, 7, 7, GSL_MOVSTAT_END_PADZERO); + test_minmax_alt(GSL_DBL_EPSILON, 1000, 5, 2, GSL_MOVSTAT_END_PADZERO); + test_minmax_alt(GSL_DBL_EPSILON, 500, 1, 3, GSL_MOVSTAT_END_PADZERO); + test_minmax_alt(GSL_DBL_EPSILON, 20, 50, 10, GSL_MOVSTAT_END_PADZERO); + test_minmax_alt(GSL_DBL_EPSILON, 20, 10, 50, GSL_MOVSTAT_END_PADZERO); + + /* noisy sine wave input */ + + test_minmax_sine(GSL_DBL_EPSILON, 1000, 5, 7, GSL_MOVSTAT_END_PADZERO, rng_p); + test_minmax_sine(GSL_DBL_EPSILON, 2000, 0, 2, GSL_MOVSTAT_END_PADZERO, rng_p); + test_minmax_sine(GSL_DBL_EPSILON, 500, 3, 0, GSL_MOVSTAT_END_PADZERO, rng_p); + test_minmax_sine(GSL_DBL_EPSILON, 20, 50, 50, GSL_MOVSTAT_END_PADZERO, rng_p); + test_minmax_sine(GSL_DBL_EPSILON, 20, 10, 50, GSL_MOVSTAT_END_PADZERO, rng_p); + test_minmax_sine(GSL_DBL_EPSILON, 20, 50, 10, GSL_MOVSTAT_END_PADZERO, rng_p); + + test_minmax_sine(GSL_DBL_EPSILON, 500, 5, 7, GSL_MOVSTAT_END_PADVALUE, rng_p); + test_minmax_sine(GSL_DBL_EPSILON, 1000, 10, 20, GSL_MOVSTAT_END_PADVALUE, rng_p); + test_minmax_sine(GSL_DBL_EPSILON, 1000, 3, 3, GSL_MOVSTAT_END_PADVALUE, rng_p); + test_minmax_sine(GSL_DBL_EPSILON, 20, 50, 50, GSL_MOVSTAT_END_PADVALUE, rng_p); + test_minmax_sine(GSL_DBL_EPSILON, 20, 10, 50, GSL_MOVSTAT_END_PADVALUE, rng_p); + test_minmax_sine(GSL_DBL_EPSILON, 20, 50, 10, GSL_MOVSTAT_END_PADVALUE, rng_p); + + test_minmax_sine(GSL_DBL_EPSILON, 500, 5, 7, GSL_MOVSTAT_END_TRUNCATE, rng_p); + test_minmax_sine(GSL_DBL_EPSILON, 1000, 10, 20, GSL_MOVSTAT_END_TRUNCATE, rng_p); + test_minmax_sine(GSL_DBL_EPSILON, 1000, 3, 3, GSL_MOVSTAT_END_TRUNCATE, rng_p); + test_minmax_sine(GSL_DBL_EPSILON, 1000, 30, 5, GSL_MOVSTAT_END_TRUNCATE, rng_p); + test_minmax_sine(GSL_DBL_EPSILON, 1000, 5, 30, GSL_MOVSTAT_END_TRUNCATE, rng_p); + test_minmax_sine(GSL_DBL_EPSILON, 20, 50, 50, GSL_MOVSTAT_END_TRUNCATE, rng_p); + test_minmax_sine(GSL_DBL_EPSILON, 20, 10, 50, GSL_MOVSTAT_END_TRUNCATE, rng_p); + test_minmax_sine(GSL_DBL_EPSILON, 20, 50, 10, GSL_MOVSTAT_END_TRUNCATE, rng_p); + + /* random input */ + + test_minmax_random(GSL_DBL_EPSILON, 1000, 0, 0, GSL_MOVSTAT_END_PADZERO, rng_p); + test_minmax_random(GSL_DBL_EPSILON, 1000, 5, 7, GSL_MOVSTAT_END_PADZERO, rng_p); + test_minmax_random(GSL_DBL_EPSILON, 2000, 0, 2, GSL_MOVSTAT_END_PADZERO, rng_p); + test_minmax_random(GSL_DBL_EPSILON, 500, 3, 0, GSL_MOVSTAT_END_PADZERO, rng_p); + test_minmax_random(GSL_DBL_EPSILON, 500, 10, 5, GSL_MOVSTAT_END_PADZERO, rng_p); + test_minmax_random(GSL_DBL_EPSILON, 500, 5, 10, GSL_MOVSTAT_END_PADZERO, rng_p); + test_minmax_random(GSL_DBL_EPSILON, 20, 50, 50, GSL_MOVSTAT_END_PADZERO, rng_p); + test_minmax_random(GSL_DBL_EPSILON, 20, 10, 50, GSL_MOVSTAT_END_PADZERO, rng_p); + test_minmax_random(GSL_DBL_EPSILON, 20, 50, 10, GSL_MOVSTAT_END_PADZERO, rng_p); + + test_minmax_random(GSL_DBL_EPSILON, 1000, 0, 0, GSL_MOVSTAT_END_PADVALUE, rng_p); + test_minmax_random(GSL_DBL_EPSILON, 1000, 5, 7, GSL_MOVSTAT_END_PADVALUE, rng_p); + test_minmax_random(GSL_DBL_EPSILON, 2000, 0, 2, GSL_MOVSTAT_END_PADVALUE, rng_p); + test_minmax_random(GSL_DBL_EPSILON, 500, 3, 0, GSL_MOVSTAT_END_PADVALUE, rng_p); + test_minmax_random(GSL_DBL_EPSILON, 500, 10, 5, GSL_MOVSTAT_END_PADVALUE, rng_p); + test_minmax_random(GSL_DBL_EPSILON, 500, 5, 10, GSL_MOVSTAT_END_PADVALUE, rng_p); + test_minmax_random(GSL_DBL_EPSILON, 20, 50, 50, GSL_MOVSTAT_END_PADVALUE, rng_p); + test_minmax_random(GSL_DBL_EPSILON, 20, 10, 50, GSL_MOVSTAT_END_PADVALUE, rng_p); + test_minmax_random(GSL_DBL_EPSILON, 20, 50, 10, GSL_MOVSTAT_END_PADVALUE, rng_p); + + test_minmax_random(GSL_DBL_EPSILON, 1000, 0, 0, GSL_MOVSTAT_END_TRUNCATE, rng_p); + test_minmax_random(GSL_DBL_EPSILON, 1000, 5, 7, GSL_MOVSTAT_END_TRUNCATE, rng_p); + test_minmax_random(GSL_DBL_EPSILON, 2000, 0, 2, GSL_MOVSTAT_END_TRUNCATE, rng_p); + test_minmax_random(GSL_DBL_EPSILON, 500, 3, 0, GSL_MOVSTAT_END_TRUNCATE, rng_p); + test_minmax_random(GSL_DBL_EPSILON, 500, 10, 5, GSL_MOVSTAT_END_TRUNCATE, rng_p); + test_minmax_random(GSL_DBL_EPSILON, 500, 5, 10, GSL_MOVSTAT_END_TRUNCATE, rng_p); + test_minmax_random(GSL_DBL_EPSILON, 20, 50, 50, GSL_MOVSTAT_END_TRUNCATE, rng_p); + test_minmax_random(GSL_DBL_EPSILON, 20, 10, 50, GSL_MOVSTAT_END_TRUNCATE, rng_p); + test_minmax_random(GSL_DBL_EPSILON, 20, 50, 10, GSL_MOVSTAT_END_TRUNCATE, rng_p); +} diff --git a/gsl-2.5/movstat/test_qqr.c b/gsl-2.5/movstat/test_qqr.c new file mode 100644 index 00000000..b823653c --- /dev/null +++ b/gsl-2.5/movstat/test_qqr.c @@ -0,0 +1,147 @@ +/* movstat/test_qqr.c + * + * Copyright (C) 2018 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include + +/* compute moving QQR by explicitely constructing window and computing QQR */ +int +slow_movqqr(const gsl_movstat_end_t etype, const double q, const gsl_vector * x, + gsl_vector * y, const int H, const int J) +{ + const size_t n = x->size; + const int K = H + J + 1; + double *window = malloc(K * sizeof(double)); + size_t i; + + for (i = 0; i < n; ++i) + { + size_t wsize = gsl_movstat_fill(etype, x, i, H, J, window); + double quant1, quant2; + + gsl_sort(window, 1, wsize); + quant1 = gsl_stats_quantile_from_sorted_data(window, 1, wsize, q); + quant2 = gsl_stats_quantile_from_sorted_data(window, 1, wsize, 1.0 - q); + + gsl_vector_set(y, i, quant2 - quant1); + } + + free(window); + + return GSL_SUCCESS; +} + +static double +func_qqr(const size_t n, double x[], void * params) +{ + double q = *(double *) params; + double quant1, quant2; + + (void) params; + + gsl_sort(x, 1, n); + quant1 = gsl_stats_quantile_from_sorted_data(x, 1, n, q); + quant2 = gsl_stats_quantile_from_sorted_data(x, 1, n, 1.0 - q); + + return (quant2 - quant1); +} + +static void +test_qqr_proc(const double tol, const double q, const size_t n, const size_t H, const size_t J, + const gsl_movstat_end_t etype, gsl_rng * rng_p) +{ + gsl_movstat_workspace * w = gsl_movstat_alloc2(H, J); + gsl_vector * x = gsl_vector_alloc(n); + gsl_vector * y = gsl_vector_alloc(n); + gsl_vector * z = gsl_vector_alloc(n); + gsl_movstat_function F; + char buf[2048]; + + F.function = func_qqr; + F.params = (void *) &q; + + random_vector(x, rng_p); + + /* y = QQR(x) with slow brute force method */ + slow_movqqr(etype, q, x, y, H, J); + + /* y = QQR(x) with fast method */ + gsl_movstat_qqr(etype, x, q, z, w); + + /* test y = z */ + sprintf(buf, "n=%zu H=%zu J=%zu endtype=%u QQR random", n, H, J, etype); + compare_vectors(tol, z, y, buf); + + /* z = QQR(x) in-place */ + gsl_vector_memcpy(z, x); + gsl_movstat_qqr(etype, z, q, z, w); + + sprintf(buf, "n=%zu H=%zu J=%zu endtype=%u QQR random in-place", n, H, J, etype); + compare_vectors(tol, z, y, buf); + + /* z = QQR(x) with user-defined function */ + gsl_movstat_apply(etype, &F, x, z, w); + + sprintf(buf, "n=%zu H=%zu J=%zu endtype=%u QQR user", n, H, J, etype); + compare_vectors(tol, z, y, buf); + + gsl_movstat_free(w); + gsl_vector_free(x); + gsl_vector_free(y); + gsl_vector_free(z); +} + +static void +test_qqr(gsl_rng * rng_p) +{ + const double eps = 1.0e-10; + + test_qqr_proc(eps, 0.1, 100, 0, 0, GSL_MOVSTAT_END_PADZERO, rng_p); + test_qqr_proc(eps, 0.1, 1000, 3, 3, GSL_MOVSTAT_END_PADZERO, rng_p); + test_qqr_proc(eps, 0.2, 1000, 0, 5, GSL_MOVSTAT_END_PADZERO, rng_p); + test_qqr_proc(eps, 0.3, 1000, 5, 0, GSL_MOVSTAT_END_PADZERO, rng_p); + test_qqr_proc(eps, 0.25, 2000, 10, 5, GSL_MOVSTAT_END_PADZERO, rng_p); + test_qqr_proc(eps, 0.4, 2000, 5, 10, GSL_MOVSTAT_END_PADZERO, rng_p); + test_qqr_proc(eps, 0.25, 20, 50, 50, GSL_MOVSTAT_END_PADZERO, rng_p); + test_qqr_proc(eps, 0.25, 20, 10, 50, GSL_MOVSTAT_END_PADZERO, rng_p); + test_qqr_proc(eps, 0.25, 20, 50, 10, GSL_MOVSTAT_END_PADZERO, rng_p); + + test_qqr_proc(eps, 0.1, 100, 0, 0, GSL_MOVSTAT_END_PADVALUE, rng_p); + test_qqr_proc(eps, 0.1, 1000, 3, 3, GSL_MOVSTAT_END_PADVALUE, rng_p); + test_qqr_proc(eps, 0.2, 1000, 0, 5, GSL_MOVSTAT_END_PADVALUE, rng_p); + test_qqr_proc(eps, 0.3, 1000, 5, 0, GSL_MOVSTAT_END_PADVALUE, rng_p); + test_qqr_proc(eps, 0.25, 2000, 10, 5, GSL_MOVSTAT_END_PADVALUE, rng_p); + test_qqr_proc(eps, 0.4, 2000, 5, 10, GSL_MOVSTAT_END_PADVALUE, rng_p); + test_qqr_proc(eps, 0.25, 20, 50, 50, GSL_MOVSTAT_END_PADVALUE, rng_p); + test_qqr_proc(eps, 0.25, 20, 10, 50, GSL_MOVSTAT_END_PADVALUE, rng_p); + test_qqr_proc(eps, 0.25, 20, 50, 10, GSL_MOVSTAT_END_PADVALUE, rng_p); + + test_qqr_proc(eps, 0.1, 100, 0, 0, GSL_MOVSTAT_END_TRUNCATE, rng_p); + test_qqr_proc(eps, 0.1, 1000, 3, 3, GSL_MOVSTAT_END_TRUNCATE, rng_p); + test_qqr_proc(eps, 0.2, 1000, 0, 5, GSL_MOVSTAT_END_TRUNCATE, rng_p); + test_qqr_proc(eps, 0.3, 1000, 5, 0, GSL_MOVSTAT_END_TRUNCATE, rng_p); + test_qqr_proc(eps, 0.25, 2000, 10, 5, GSL_MOVSTAT_END_TRUNCATE, rng_p); + test_qqr_proc(eps, 0.4, 2000, 5, 10, GSL_MOVSTAT_END_TRUNCATE, rng_p); + test_qqr_proc(eps, 0.25, 20, 50, 50, GSL_MOVSTAT_END_TRUNCATE, rng_p); + test_qqr_proc(eps, 0.25, 20, 10, 50, GSL_MOVSTAT_END_TRUNCATE, rng_p); + test_qqr_proc(eps, 0.25, 20, 50, 10, GSL_MOVSTAT_END_TRUNCATE, rng_p); +} diff --git a/gsl-2.5/movstat/test_sum.c b/gsl-2.5/movstat/test_sum.c new file mode 100644 index 00000000..89f1ecc1 --- /dev/null +++ b/gsl-2.5/movstat/test_sum.c @@ -0,0 +1,144 @@ +/* movstat/test_sum.c + * + * Copyright (C) 2018 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include + +/* compute moving sum by explicitely constructing window and summing elements */ +int +slow_movsum(const gsl_movstat_end_t etype, const gsl_vector * x, gsl_vector * y, + const int H, const int J) +{ + const size_t n = x->size; + const int K = H + J + 1; + double *window = malloc(K * sizeof(double)); + size_t i; + + for (i = 0; i < n; ++i) + { + size_t wsize = gsl_movstat_fill(etype, x, i, H, J, window); + double sum = 0.0; + size_t j; + + for (j = 0; j < wsize; ++j) + sum += window[j]; + + gsl_vector_set(y, i, sum); + } + + free(window); + + return GSL_SUCCESS; +} + +static double +func_sum(const size_t n, double x[], void * params) +{ + double sum = 0.0; + size_t i; + + (void) params; + + for (i = 0; i < n; ++i) + sum += x[i]; + + return sum; +} + +static void +test_sum_proc(const double tol, const size_t n, const size_t H, const size_t J, + const gsl_movstat_end_t etype, gsl_rng * rng_p) +{ + gsl_movstat_workspace * w = gsl_movstat_alloc2(H, J); + gsl_vector * x = gsl_vector_alloc(n); + gsl_vector * y = gsl_vector_alloc(n); + gsl_vector * z = gsl_vector_alloc(n); + gsl_movstat_function F; + char buf[2048]; + + F.function = func_sum; + F.params = NULL; + + random_vector(x, rng_p); + + /* y = sum(x) with slow brute force method */ + slow_movsum(etype, x, y, H, J); + + /* y = sum(x) with fast method */ + gsl_movstat_sum(etype, x, z, w); + + /* test y = z */ + sprintf(buf, "n=%zu H=%zu J=%zu endtype=%u sum random", n, H, J, etype); + compare_vectors(tol, z, y, buf); + + /* z = sum(x) in-place */ + gsl_vector_memcpy(z, x); + gsl_movstat_sum(etype, z, z, w); + + sprintf(buf, "n=%zu H=%zu J=%zu endtype=%u sum random in-place", n, H, J, etype); + compare_vectors(tol, z, y, buf); + + /* z = sum(x) with user-defined function */ + gsl_movstat_apply(etype, &F, x, z, w); + + sprintf(buf, "n=%zu H=%zu J=%zu endtype=%u sum user", n, H, J, etype); + compare_vectors(tol, z, y, buf); + + gsl_movstat_free(w); + gsl_vector_free(x); + gsl_vector_free(y); + gsl_vector_free(z); +} + +static void +test_sum(gsl_rng * rng_p) +{ + test_sum_proc(GSL_DBL_EPSILON, 1000, 0, 0, GSL_MOVSTAT_END_PADZERO, rng_p); + test_sum_proc(GSL_DBL_EPSILON, 1000, 3, 3, GSL_MOVSTAT_END_PADZERO, rng_p); + test_sum_proc(GSL_DBL_EPSILON, 1000, 0, 5, GSL_MOVSTAT_END_PADZERO, rng_p); + test_sum_proc(GSL_DBL_EPSILON, 1000, 5, 0, GSL_MOVSTAT_END_PADZERO, rng_p); + test_sum_proc(GSL_DBL_EPSILON, 2000, 10, 5, GSL_MOVSTAT_END_PADZERO, rng_p); + test_sum_proc(GSL_DBL_EPSILON, 2000, 5, 10, GSL_MOVSTAT_END_PADZERO, rng_p); + test_sum_proc(GSL_DBL_EPSILON, 20, 50, 50, GSL_MOVSTAT_END_PADZERO, rng_p); + test_sum_proc(GSL_DBL_EPSILON, 20, 10, 50, GSL_MOVSTAT_END_PADZERO, rng_p); + test_sum_proc(GSL_DBL_EPSILON, 20, 50, 10, GSL_MOVSTAT_END_PADZERO, rng_p); + + test_sum_proc(GSL_DBL_EPSILON, 1000, 0, 0, GSL_MOVSTAT_END_PADVALUE, rng_p); + test_sum_proc(GSL_DBL_EPSILON, 1000, 3, 3, GSL_MOVSTAT_END_PADVALUE, rng_p); + test_sum_proc(GSL_DBL_EPSILON, 1000, 0, 5, GSL_MOVSTAT_END_PADVALUE, rng_p); + test_sum_proc(GSL_DBL_EPSILON, 1000, 5, 0, GSL_MOVSTAT_END_PADVALUE, rng_p); + test_sum_proc(GSL_DBL_EPSILON, 2000, 10, 5, GSL_MOVSTAT_END_PADVALUE, rng_p); + test_sum_proc(GSL_DBL_EPSILON, 2000, 5, 10, GSL_MOVSTAT_END_PADVALUE, rng_p); + test_sum_proc(GSL_DBL_EPSILON, 20, 50, 50, GSL_MOVSTAT_END_PADVALUE, rng_p); + test_sum_proc(GSL_DBL_EPSILON, 20, 10, 50, GSL_MOVSTAT_END_PADVALUE, rng_p); + test_sum_proc(GSL_DBL_EPSILON, 20, 50, 10, GSL_MOVSTAT_END_PADVALUE, rng_p); + + test_sum_proc(GSL_DBL_EPSILON, 1000, 0, 0, GSL_MOVSTAT_END_TRUNCATE, rng_p); + test_sum_proc(GSL_DBL_EPSILON, 1000, 3, 3, GSL_MOVSTAT_END_TRUNCATE, rng_p); + test_sum_proc(GSL_DBL_EPSILON, 1000, 0, 5, GSL_MOVSTAT_END_TRUNCATE, rng_p); + test_sum_proc(GSL_DBL_EPSILON, 1000, 5, 0, GSL_MOVSTAT_END_TRUNCATE, rng_p); + test_sum_proc(GSL_DBL_EPSILON, 2000, 10, 5, GSL_MOVSTAT_END_TRUNCATE, rng_p); + test_sum_proc(GSL_DBL_EPSILON, 2000, 5, 10, GSL_MOVSTAT_END_TRUNCATE, rng_p); + test_sum_proc(GSL_DBL_EPSILON, 20, 50, 50, GSL_MOVSTAT_END_TRUNCATE, rng_p); + test_sum_proc(GSL_DBL_EPSILON, 20, 10, 50, GSL_MOVSTAT_END_TRUNCATE, rng_p); + test_sum_proc(GSL_DBL_EPSILON, 20, 50, 10, GSL_MOVSTAT_END_TRUNCATE, rng_p); +} diff --git a/gsl-2.5/movstat/test_variance.c b/gsl-2.5/movstat/test_variance.c new file mode 100644 index 00000000..eeb36705 --- /dev/null +++ b/gsl-2.5/movstat/test_variance.c @@ -0,0 +1,201 @@ +/* movstat/test_variance.c + * + * Copyright (C) 2018 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include + +/* compute moving variance by explicitely constructing window and computing variance */ +int +slow_movvar(const gsl_movstat_end_t etype, const gsl_vector * x, gsl_vector * y, + const int H, const int J) +{ + const size_t n = x->size; + const int K = H + J + 1; + double *window = malloc(K * sizeof(double)); + size_t i; + + for (i = 0; i < n; ++i) + { + size_t wsize = gsl_movstat_fill(etype, x, i, H, J, window); + double variance = (wsize > 1) ? gsl_stats_variance(window, 1, wsize) : 0.0; + + gsl_vector_set(y, i, variance); + } + + free(window); + + return GSL_SUCCESS; +} + +/* compute moving variance by explicitely constructing window and computing variance */ +int +slow_movsd(const gsl_movstat_end_t etype, const gsl_vector * x, gsl_vector * y, + const int H, const int J) +{ + const size_t n = x->size; + const int K = H + J + 1; + double *window = malloc(K * sizeof(double)); + size_t i; + + for (i = 0; i < n; ++i) + { + size_t wsize = gsl_movstat_fill(etype, x, i, H, J, window); + double sd = (wsize > 1) ? gsl_stats_sd(window, 1, wsize) : 0.0; + + gsl_vector_set(y, i, sd); + } + + free(window); + + return GSL_SUCCESS; +} + +static double +func_var(const size_t n, double x[], void * params) +{ + (void) params; + if (n > 1) + return gsl_stats_variance(x, 1, n); + else + return 0.0; +} + +static double +func_sd(const size_t n, double x[], void * params) +{ + (void) params; + if (n > 1) + return gsl_stats_sd(x, 1, n); + else + return 0.0; +} + +static void +test_variance_proc(const double tol, const size_t n, const size_t H, const size_t J, + const gsl_movstat_end_t etype, gsl_rng * rng_p) +{ + gsl_movstat_workspace * w = gsl_movstat_alloc2(H, J); + gsl_vector * x = gsl_vector_alloc(n); + gsl_vector * y = gsl_vector_alloc(n); + gsl_vector * z = gsl_vector_alloc(n); + gsl_movstat_function F1, F2; + char buf[2048]; + + F1.function = func_var; + F1.params = NULL; + + F2.function = func_sd; + F2.params = NULL; + + random_vector(x, rng_p); + + /* test variance */ + + /* y = variance(x) with slow brute force method */ + slow_movvar(etype, x, y, H, J); + + /* y = variance(x) with fast method */ + gsl_movstat_variance(etype, x, z, w); + + /* test y = z */ + sprintf(buf, "n=%zu H=%zu J=%zu endtype=%u variance random", n, H, J, etype); + compare_vectors(tol, z, y, buf); + + /* z = variance(x) in-place */ + gsl_vector_memcpy(z, x); + gsl_movstat_variance(etype, z, z, w); + + sprintf(buf, "n=%zu H=%zu J=%zu endtype=%u variance random in-place", n, H, J, etype); + compare_vectors(tol, z, y, buf); + + /* z = variance(x) with user-defined function */ + gsl_movstat_apply(etype, &F1, x, z, w); + + sprintf(buf, "n=%zu H=%zu J=%zu endtype=%u variance user", n, H, J, etype); + compare_vectors(tol, z, y, buf); + + /* test standard deviation */ + + /* y = stddev(x) with slow brute force method */ + slow_movsd(etype, x, y, H, J); + + /* y = stddev(x) with fast method */ + gsl_movstat_sd(etype, x, z, w); + + /* test y = z */ + sprintf(buf, "n=%zu H=%zu J=%zu endtype=%u stddev random", n, H, J, etype); + compare_vectors(tol, z, y, buf); + + /* z = stddev(x) in-place */ + gsl_vector_memcpy(z, x); + gsl_movstat_sd(etype, z, z, w); + + sprintf(buf, "n=%zu H=%zu J=%zu endtype=%u stddev random in-place", n, H, J, etype); + compare_vectors(tol, z, y, buf); + + /* z = stddev(x) with user-defined function */ + gsl_movstat_apply(etype, &F2, x, z, w); + + sprintf(buf, "n=%zu H=%zu J=%zu endtype=%u stddev user", n, H, J, etype); + compare_vectors(tol, z, y, buf); + + gsl_movstat_free(w); + gsl_vector_free(x); + gsl_vector_free(y); + gsl_vector_free(z); +} + +static void +test_variance(gsl_rng * rng_p) +{ + const double eps = 1.0e-10; + + test_variance_proc(eps, 1000, 0, 0, GSL_MOVSTAT_END_PADZERO, rng_p); + test_variance_proc(eps, 1000, 3, 3, GSL_MOVSTAT_END_PADZERO, rng_p); + test_variance_proc(eps, 1000, 0, 5, GSL_MOVSTAT_END_PADZERO, rng_p); + test_variance_proc(eps, 1000, 5, 0, GSL_MOVSTAT_END_PADZERO, rng_p); + test_variance_proc(eps, 2000, 10, 5, GSL_MOVSTAT_END_PADZERO, rng_p); + test_variance_proc(eps, 2000, 5, 10, GSL_MOVSTAT_END_PADZERO, rng_p); + test_variance_proc(eps, 20, 50, 50, GSL_MOVSTAT_END_PADZERO, rng_p); + test_variance_proc(eps, 20, 10, 50, GSL_MOVSTAT_END_PADZERO, rng_p); + test_variance_proc(eps, 20, 50, 10, GSL_MOVSTAT_END_PADZERO, rng_p); + + test_variance_proc(eps, 1000, 0, 0, GSL_MOVSTAT_END_PADVALUE, rng_p); + test_variance_proc(eps, 1000, 3, 3, GSL_MOVSTAT_END_PADVALUE, rng_p); + test_variance_proc(eps, 1000, 1, 5, GSL_MOVSTAT_END_PADVALUE, rng_p); + test_variance_proc(eps, 1000, 5, 1, GSL_MOVSTAT_END_PADVALUE, rng_p); + test_variance_proc(eps, 2000, 10, 5, GSL_MOVSTAT_END_PADVALUE, rng_p); + test_variance_proc(eps, 2000, 5, 10, GSL_MOVSTAT_END_PADVALUE, rng_p); + test_variance_proc(eps, 20, 50, 50, GSL_MOVSTAT_END_PADVALUE, rng_p); + test_variance_proc(eps, 20, 10, 50, GSL_MOVSTAT_END_PADVALUE, rng_p); + test_variance_proc(eps, 20, 50, 10, GSL_MOVSTAT_END_PADVALUE, rng_p); + + test_variance_proc(eps, 1000, 0, 0, GSL_MOVSTAT_END_TRUNCATE, rng_p); + test_variance_proc(eps, 1000, 3, 3, GSL_MOVSTAT_END_TRUNCATE, rng_p); + test_variance_proc(eps, 1000, 0, 5, GSL_MOVSTAT_END_TRUNCATE, rng_p); + test_variance_proc(eps, 1000, 5, 0, GSL_MOVSTAT_END_TRUNCATE, rng_p); + test_variance_proc(eps, 2000, 10, 5, GSL_MOVSTAT_END_TRUNCATE, rng_p); + test_variance_proc(eps, 2000, 5, 10, GSL_MOVSTAT_END_TRUNCATE, rng_p); + test_variance_proc(eps, 20, 50, 50, GSL_MOVSTAT_END_TRUNCATE, rng_p); + test_variance_proc(eps, 20, 10, 50, GSL_MOVSTAT_END_TRUNCATE, rng_p); + test_variance_proc(eps, 20, 50, 10, GSL_MOVSTAT_END_TRUNCATE, rng_p); +} diff --git a/gsl-2.5/multifit/.deps/convergence.Plo b/gsl-2.5/multifit/.deps/convergence.Plo new file mode 100644 index 00000000..71de62e8 --- /dev/null +++ b/gsl-2.5/multifit/.deps/convergence.Plo @@ -0,0 +1,300 @@ +convergence.lo: convergence.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_math.h /usr/include/math.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_multifit_nlin.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_complex.h \ + ../gsl/gsl_check_range.h ../gsl/gsl_vector_long_double.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_vector_complex.h \ + ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_permutation.h ../gsl/gsl_blas.h \ + ../gsl/gsl_blas_types.h ../gsl/gsl_cblas.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_multifit_nlin.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_permutation.h: + +../gsl/gsl_blas.h: + +../gsl/gsl_blas_types.h: + +../gsl/gsl_cblas.h: diff --git a/gsl-2.5/multifit/.deps/covar.Plo b/gsl-2.5/multifit/.deps/covar.Plo new file mode 100644 index 00000000..a1404d61 --- /dev/null +++ b/gsl-2.5/multifit/.deps/covar.Plo @@ -0,0 +1,304 @@ +covar.lo: covar.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_math.h /usr/include/math.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_permutation.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_linalg.h ../gsl/gsl_mode.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_complex.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_blas.h ../gsl/gsl_blas_types.h \ + ../gsl/gsl_cblas.h ../gsl/gsl_multifit_nlin.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_permutation.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_linalg.h: + +../gsl/gsl_mode.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_blas.h: + +../gsl/gsl_blas_types.h: + +../gsl/gsl_cblas.h: + +../gsl/gsl_multifit_nlin.h: diff --git a/gsl-2.5/multifit/.deps/fdfridge.Plo b/gsl-2.5/multifit/.deps/fdfridge.Plo new file mode 100644 index 00000000..2fba163f --- /dev/null +++ b/gsl-2.5/multifit/.deps/fdfridge.Plo @@ -0,0 +1,300 @@ +fdfridge.lo: fdfridge.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_vector.h ../gsl/gsl_vector_complex_long_double.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_multifit_nlin.h \ + ../gsl/gsl_permutation.h ../gsl/gsl_blas.h ../gsl/gsl_blas_types.h \ + ../gsl/gsl_cblas.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_multifit_nlin.h: + +../gsl/gsl_permutation.h: + +../gsl/gsl_blas.h: + +../gsl/gsl_blas_types.h: + +../gsl/gsl_cblas.h: diff --git a/gsl-2.5/multifit/.deps/fdfsolver.Plo b/gsl-2.5/multifit/.deps/fdfsolver.Plo new file mode 100644 index 00000000..dfd29c06 --- /dev/null +++ b/gsl-2.5/multifit/.deps/fdfsolver.Plo @@ -0,0 +1,303 @@ +fdfsolver.lo: fdfsolver.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/string.h \ + /usr/include/xlocale.h /usr/include/bits/string.h \ + /usr/include/bits/string2.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_multifit_nlin.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_complex.h \ + ../gsl/gsl_check_range.h ../gsl/gsl_vector_long_double.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_vector_complex.h \ + ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_permutation.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string.h: + +/usr/include/bits/string2.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_multifit_nlin.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_permutation.h: diff --git a/gsl-2.5/multifit/.deps/fdjac.Plo b/gsl-2.5/multifit/.deps/fdjac.Plo new file mode 100644 index 00000000..75b5832c --- /dev/null +++ b/gsl-2.5/multifit/.deps/fdjac.Plo @@ -0,0 +1,293 @@ +fdjac.lo: fdjac.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_math.h /usr/include/math.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_multifit_nlin.h \ + /usr/include/stdlib.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_permutation.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_multifit_nlin.h: + +/usr/include/stdlib.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_permutation.h: diff --git a/gsl-2.5/multifit/.deps/fsolver.Plo b/gsl-2.5/multifit/.deps/fsolver.Plo new file mode 100644 index 00000000..a46fcd3e --- /dev/null +++ b/gsl-2.5/multifit/.deps/fsolver.Plo @@ -0,0 +1,303 @@ +fsolver.lo: fsolver.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/string.h \ + /usr/include/xlocale.h /usr/include/bits/string.h \ + /usr/include/bits/string2.h ../gsl/gsl_errno.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_types.h ../gsl/gsl_multifit_nlin.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_nan.h ../gsl/gsl_pow_int.h \ + ../gsl/gsl_minmax.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_complex.h \ + ../gsl/gsl_check_range.h ../gsl/gsl_vector_long_double.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_vector_complex.h \ + ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_permutation.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string.h: + +/usr/include/bits/string2.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_multifit_nlin.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_permutation.h: diff --git a/gsl-2.5/multifit/.deps/gcv.Plo b/gsl-2.5/multifit/.deps/gcv.Plo new file mode 100644 index 00000000..6f43899f --- /dev/null +++ b/gsl-2.5/multifit/.deps/gcv.Plo @@ -0,0 +1,306 @@ +gcv.lo: gcv.c /usr/include/stdc-predef.h ../config.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_types.h ../gsl/gsl_multifit.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_nan.h ../gsl/gsl_pow_int.h \ + ../gsl/gsl_minmax.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_complex.h \ + ../gsl/gsl_check_range.h ../gsl/gsl_vector_long_double.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_vector_complex.h \ + ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_blas.h ../gsl/gsl_blas_types.h \ + ../gsl/gsl_cblas.h ../gsl/gsl_linalg.h ../gsl/gsl_mode.h \ + ../gsl/gsl_permutation.h ../gsl/gsl_min.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_multifit.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_blas.h: + +../gsl/gsl_blas_types.h: + +../gsl/gsl_cblas.h: + +../gsl/gsl_linalg.h: + +../gsl/gsl_mode.h: + +../gsl/gsl_permutation.h: + +../gsl/gsl_min.h: diff --git a/gsl-2.5/multifit/.deps/gradient.Plo b/gsl-2.5/multifit/.deps/gradient.Plo new file mode 100644 index 00000000..abab8cb5 --- /dev/null +++ b/gsl-2.5/multifit/.deps/gradient.Plo @@ -0,0 +1,300 @@ +gradient.lo: gradient.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_math.h /usr/include/math.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_multifit_nlin.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_complex.h \ + ../gsl/gsl_check_range.h ../gsl/gsl_vector_long_double.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_vector_complex.h \ + ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_permutation.h ../gsl/gsl_blas.h \ + ../gsl/gsl_blas_types.h ../gsl/gsl_cblas.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_multifit_nlin.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_permutation.h: + +../gsl/gsl_blas.h: + +../gsl/gsl_blas_types.h: + +../gsl/gsl_cblas.h: diff --git a/gsl-2.5/multifit/.deps/lmder.Plo b/gsl-2.5/multifit/.deps/lmder.Plo new file mode 100644 index 00000000..d3a07ea6 --- /dev/null +++ b/gsl-2.5/multifit/.deps/lmder.Plo @@ -0,0 +1,317 @@ +lmder.lo: lmder.c /usr/include/stdc-predef.h ../config.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/byteswap.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/bits/byteswap-16.h /usr/include/sys/types.h \ + /usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib-float.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h ../gsl/gsl_math.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h ../gsl/gsl_precision.h ../gsl/gsl_types.h \ + ../gsl/gsl_nan.h ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h \ + ../gsl/gsl_errno.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_multifit_nlin.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_complex.h \ + ../gsl/gsl_check_range.h ../gsl/gsl_vector_long_double.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_vector_complex.h \ + ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_permutation.h ../gsl/gsl_blas.h \ + ../gsl/gsl_blas_types.h ../gsl/gsl_cblas.h ../gsl/gsl_linalg.h \ + ../gsl/gsl_mode.h lmutil.c lmpar.c ../gsl/gsl_permute_vector_double.h \ + qrsolv.c lmset.c lmiterate.c + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_multifit_nlin.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_permutation.h: + +../gsl/gsl_blas.h: + +../gsl/gsl_blas_types.h: + +../gsl/gsl_cblas.h: + +../gsl/gsl_linalg.h: + +../gsl/gsl_mode.h: + +lmutil.c: + +lmpar.c: + +../gsl/gsl_permute_vector_double.h: + +qrsolv.c: + +lmset.c: + +lmiterate.c: diff --git a/gsl-2.5/multifit/.deps/lmniel.Plo b/gsl-2.5/multifit/.deps/lmniel.Plo new file mode 100644 index 00000000..98d53d6e --- /dev/null +++ b/gsl-2.5/multifit/.deps/lmniel.Plo @@ -0,0 +1,305 @@ +lmniel.lo: lmniel.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_math.h /usr/include/math.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h /usr/include/stdlib.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_errno.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_linalg.h ../gsl/gsl_mode.h \ + ../gsl/gsl_permutation.h ../gsl/gsl_blas.h ../gsl/gsl_blas_types.h \ + ../gsl/gsl_cblas.h ../gsl/gsl_multifit_nlin.h lmmisc.c + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +/usr/include/stdlib.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_linalg.h: + +../gsl/gsl_mode.h: + +../gsl/gsl_permutation.h: + +../gsl/gsl_blas.h: + +../gsl/gsl_blas_types.h: + +../gsl/gsl_cblas.h: + +../gsl/gsl_multifit_nlin.h: + +lmmisc.c: diff --git a/gsl-2.5/multifit/.deps/multilinear.Plo b/gsl-2.5/multifit/.deps/multilinear.Plo new file mode 100644 index 00000000..f149c359 --- /dev/null +++ b/gsl-2.5/multifit/.deps/multilinear.Plo @@ -0,0 +1,306 @@ +multilinear.lo: multilinear.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_errno.h /usr/include/stdio.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_types.h ../gsl/gsl_multifit.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_nan.h ../gsl/gsl_pow_int.h \ + ../gsl/gsl_minmax.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_complex.h \ + ../gsl/gsl_check_range.h ../gsl/gsl_vector_long_double.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_vector_complex.h \ + ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_blas.h ../gsl/gsl_blas_types.h \ + ../gsl/gsl_cblas.h ../gsl/gsl_linalg.h ../gsl/gsl_mode.h \ + ../gsl/gsl_permutation.h linear_common.c + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_multifit.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_blas.h: + +../gsl/gsl_blas_types.h: + +../gsl/gsl_cblas.h: + +../gsl/gsl_linalg.h: + +../gsl/gsl_mode.h: + +../gsl/gsl_permutation.h: + +linear_common.c: diff --git a/gsl-2.5/multifit/.deps/multireg.Plo b/gsl-2.5/multifit/.deps/multireg.Plo new file mode 100644 index 00000000..e36ea2c3 --- /dev/null +++ b/gsl-2.5/multifit/.deps/multireg.Plo @@ -0,0 +1,306 @@ +multireg.lo: multireg.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_errno.h /usr/include/stdio.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_types.h ../gsl/gsl_multifit.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_nan.h ../gsl/gsl_pow_int.h \ + ../gsl/gsl_minmax.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_complex.h \ + ../gsl/gsl_check_range.h ../gsl/gsl_vector_long_double.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_vector_complex.h \ + ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_blas.h ../gsl/gsl_blas_types.h \ + ../gsl/gsl_cblas.h ../gsl/gsl_linalg.h ../gsl/gsl_mode.h \ + ../gsl/gsl_permutation.h linear_common.c + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_multifit.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_blas.h: + +../gsl/gsl_blas_types.h: + +../gsl/gsl_cblas.h: + +../gsl/gsl_linalg.h: + +../gsl/gsl_mode.h: + +../gsl/gsl_permutation.h: + +linear_common.c: diff --git a/gsl-2.5/multifit/.deps/multirobust.Plo b/gsl-2.5/multifit/.deps/multirobust.Plo new file mode 100644 index 00000000..74dd6dac --- /dev/null +++ b/gsl-2.5/multifit/.deps/multirobust.Plo @@ -0,0 +1,393 @@ +multirobust.lo: multirobust.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_math.h /usr/include/math.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_multifit.h \ + /usr/include/stdlib.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_statistics.h \ + ../gsl/gsl_statistics_long_double.h ../gsl/gsl_statistics_double.h \ + ../gsl/gsl_statistics_float.h ../gsl/gsl_statistics_ulong.h \ + ../gsl/gsl_statistics_long.h ../gsl/gsl_statistics_uint.h \ + ../gsl/gsl_statistics_int.h ../gsl/gsl_statistics_ushort.h \ + ../gsl/gsl_statistics_short.h ../gsl/gsl_statistics_uchar.h \ + ../gsl/gsl_statistics_char.h ../gsl/gsl_sort.h \ + ../gsl/gsl_sort_long_double.h ../gsl/gsl_permutation.h \ + ../gsl/gsl_sort_double.h ../gsl/gsl_sort_float.h ../gsl/gsl_sort_ulong.h \ + ../gsl/gsl_sort_long.h ../gsl/gsl_sort_uint.h ../gsl/gsl_sort_int.h \ + ../gsl/gsl_sort_ushort.h ../gsl/gsl_sort_short.h ../gsl/gsl_sort_uchar.h \ + ../gsl/gsl_sort_char.h ../gsl/gsl_sort_vector.h \ + ../gsl/gsl_sort_vector_long_double.h ../gsl/gsl_sort_vector_double.h \ + ../gsl/gsl_sort_vector_float.h ../gsl/gsl_sort_vector_ulong.h \ + ../gsl/gsl_sort_vector_long.h ../gsl/gsl_sort_vector_uint.h \ + ../gsl/gsl_sort_vector_int.h ../gsl/gsl_sort_vector_ushort.h \ + ../gsl/gsl_sort_vector_short.h ../gsl/gsl_sort_vector_uchar.h \ + ../gsl/gsl_sort_vector_char.h ../gsl/gsl_blas.h ../gsl/gsl_blas_types.h \ + ../gsl/gsl_cblas.h ../gsl/gsl_linalg.h ../gsl/gsl_mode.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_multifit.h: + +/usr/include/stdlib.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_statistics.h: + +../gsl/gsl_statistics_long_double.h: + +../gsl/gsl_statistics_double.h: + +../gsl/gsl_statistics_float.h: + +../gsl/gsl_statistics_ulong.h: + +../gsl/gsl_statistics_long.h: + +../gsl/gsl_statistics_uint.h: + +../gsl/gsl_statistics_int.h: + +../gsl/gsl_statistics_ushort.h: + +../gsl/gsl_statistics_short.h: + +../gsl/gsl_statistics_uchar.h: + +../gsl/gsl_statistics_char.h: + +../gsl/gsl_sort.h: + +../gsl/gsl_sort_long_double.h: + +../gsl/gsl_permutation.h: + +../gsl/gsl_sort_double.h: + +../gsl/gsl_sort_float.h: + +../gsl/gsl_sort_ulong.h: + +../gsl/gsl_sort_long.h: + +../gsl/gsl_sort_uint.h: + +../gsl/gsl_sort_int.h: + +../gsl/gsl_sort_ushort.h: + +../gsl/gsl_sort_short.h: + +../gsl/gsl_sort_uchar.h: + +../gsl/gsl_sort_char.h: + +../gsl/gsl_sort_vector.h: + +../gsl/gsl_sort_vector_long_double.h: + +../gsl/gsl_sort_vector_double.h: + +../gsl/gsl_sort_vector_float.h: + +../gsl/gsl_sort_vector_ulong.h: + +../gsl/gsl_sort_vector_long.h: + +../gsl/gsl_sort_vector_uint.h: + +../gsl/gsl_sort_vector_int.h: + +../gsl/gsl_sort_vector_ushort.h: + +../gsl/gsl_sort_vector_short.h: + +../gsl/gsl_sort_vector_uchar.h: + +../gsl/gsl_sort_vector_char.h: + +../gsl/gsl_blas.h: + +../gsl/gsl_blas_types.h: + +../gsl/gsl_cblas.h: + +../gsl/gsl_linalg.h: + +../gsl/gsl_mode.h: diff --git a/gsl-2.5/multifit/.deps/multiwlinear.Plo b/gsl-2.5/multifit/.deps/multiwlinear.Plo new file mode 100644 index 00000000..ed62dce7 --- /dev/null +++ b/gsl-2.5/multifit/.deps/multiwlinear.Plo @@ -0,0 +1,306 @@ +multiwlinear.lo: multiwlinear.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_errno.h /usr/include/stdio.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_types.h ../gsl/gsl_multifit.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_nan.h ../gsl/gsl_pow_int.h \ + ../gsl/gsl_minmax.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_complex.h \ + ../gsl/gsl_check_range.h ../gsl/gsl_vector_long_double.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_vector_complex.h \ + ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_blas.h ../gsl/gsl_blas_types.h \ + ../gsl/gsl_cblas.h ../gsl/gsl_linalg.h ../gsl/gsl_mode.h \ + ../gsl/gsl_permutation.h linear_common.c + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_multifit.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_blas.h: + +../gsl/gsl_blas_types.h: + +../gsl/gsl_cblas.h: + +../gsl/gsl_linalg.h: + +../gsl/gsl_mode.h: + +../gsl/gsl_permutation.h: + +linear_common.c: diff --git a/gsl-2.5/multifit/.deps/robust_wfun.Plo b/gsl-2.5/multifit/.deps/robust_wfun.Plo new file mode 100644 index 00000000..f614057a --- /dev/null +++ b/gsl-2.5/multifit/.deps/robust_wfun.Plo @@ -0,0 +1,289 @@ +robust_wfun.lo: robust_wfun.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_math.h /usr/include/math.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h /usr/include/stdlib.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_errno.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_multifit.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +/usr/include/stdlib.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_multifit.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: diff --git a/gsl-2.5/multifit/.deps/test.Po b/gsl-2.5/multifit/.deps/test.Po new file mode 100644 index 00000000..f6a2b505 --- /dev/null +++ b/gsl-2.5/multifit/.deps/test.Po @@ -0,0 +1,421 @@ +test.o: test.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_test.h \ + ../gsl/gsl_multifit.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_multifit_nlin.h \ + ../gsl/gsl_permutation.h ../gsl/gsl_blas.h ../gsl/gsl_blas_types.h \ + ../gsl/gsl_cblas.h ../gsl/gsl_rng.h ../gsl/gsl_linalg.h \ + ../gsl/gsl_mode.h ../gsl/gsl_ieee_utils.h test_linear.c test_longley.c \ + test_filip.c test_pontius.c test_estimator.c test_reg.c test_shaw.c \ + ../gsl/gsl_sf_trig.h ../gsl/gsl_sf_result.h test_nonlinear.c test_bard.c \ + test_beale.c test_biggs.c test_box.c test_boxbod.c test_brown1.c \ + test_brown2.c test_brown3.c test_eckerle.c test_enso.c test_exp1.c \ + test_gaussian.c test_hahn1.c test_helical.c test_jennrich.c \ + test_kirby2.c test_kowalik.c test_lin1.c test_lin2.c test_lin3.c \ + test_meyer.c test_meyerscal.c test_osborne.c test_penalty1.c \ + test_penalty2.c test_powell1.c test_powell2.c test_powell3.c \ + test_rat42.c test_rat43.c test_rosenbrock.c test_rosenbrocke.c \ + test_roth.c test_thurber.c test_vardim.c test_watson.c test_wood.c \ + test_wnlin.c + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_test.h: + +../gsl/gsl_multifit.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_multifit_nlin.h: + +../gsl/gsl_permutation.h: + +../gsl/gsl_blas.h: + +../gsl/gsl_blas_types.h: + +../gsl/gsl_cblas.h: + +../gsl/gsl_rng.h: + +../gsl/gsl_linalg.h: + +../gsl/gsl_mode.h: + +../gsl/gsl_ieee_utils.h: + +test_linear.c: + +test_longley.c: + +test_filip.c: + +test_pontius.c: + +test_estimator.c: + +test_reg.c: + +test_shaw.c: + +../gsl/gsl_sf_trig.h: + +../gsl/gsl_sf_result.h: + +test_nonlinear.c: + +test_bard.c: + +test_beale.c: + +test_biggs.c: + +test_box.c: + +test_boxbod.c: + +test_brown1.c: + +test_brown2.c: + +test_brown3.c: + +test_eckerle.c: + +test_enso.c: + +test_exp1.c: + +test_gaussian.c: + +test_hahn1.c: + +test_helical.c: + +test_jennrich.c: + +test_kirby2.c: + +test_kowalik.c: + +test_lin1.c: + +test_lin2.c: + +test_lin3.c: + +test_meyer.c: + +test_meyerscal.c: + +test_osborne.c: + +test_penalty1.c: + +test_penalty2.c: + +test_powell1.c: + +test_powell2.c: + +test_powell3.c: + +test_rat42.c: + +test_rat43.c: + +test_rosenbrock.c: + +test_rosenbrocke.c: + +test_roth.c: + +test_thurber.c: + +test_vardim.c: + +test_watson.c: + +test_wood.c: + +test_wnlin.c: diff --git a/gsl-2.5/multifit/.deps/work.Plo b/gsl-2.5/multifit/.deps/work.Plo new file mode 100644 index 00000000..fe7fdb89 --- /dev/null +++ b/gsl-2.5/multifit/.deps/work.Plo @@ -0,0 +1,290 @@ +work.lo: work.c /usr/include/stdc-predef.h ../config.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_types.h ../gsl/gsl_multifit.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_nan.h ../gsl/gsl_pow_int.h \ + ../gsl/gsl_minmax.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_complex.h \ + ../gsl/gsl_check_range.h ../gsl/gsl_vector_long_double.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_vector_complex.h \ + ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_multifit.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: diff --git a/gsl-2.5/multifit/.libs/libgslmultifit.la b/gsl-2.5/multifit/.libs/libgslmultifit.la new file mode 120000 index 00000000..08e9a676 --- /dev/null +++ b/gsl-2.5/multifit/.libs/libgslmultifit.la @@ -0,0 +1 @@ +../libgslmultifit.la \ No newline at end of file diff --git a/gsl-2.5/multifit/.libs/lt-test b/gsl-2.5/multifit/.libs/lt-test new file mode 100755 index 00000000..96d34c16 Binary files /dev/null and b/gsl-2.5/multifit/.libs/lt-test differ diff --git a/gsl-2.5/multifit/.libs/test b/gsl-2.5/multifit/.libs/test new file mode 100755 index 00000000..08bb4015 Binary files /dev/null and b/gsl-2.5/multifit/.libs/test differ diff --git a/gsl-2.5/multifit/ChangeLog b/gsl-2.5/multifit/ChangeLog new file mode 100644 index 00000000..b79ff5be --- /dev/null +++ b/gsl-2.5/multifit/ChangeLog @@ -0,0 +1,184 @@ +2013-06-10 Patrick Alken + + * fdfsolver.c (gsl_multifit_fdfsolver_driver): added higher level + wrapper routine + +2010-02-25 Brian Gough + + * lmiterate.c (iterate): changed GSL_CONTINUE to GSL_ENOPROG for + the case where the routine has made 10 or more attempts to find a + suitable trial step without success. + +2009-11-25 Brian Gough + + * multilinear.c (gsl_multifit_linear_usvd) + (gsl_multifit_wlinear_usvd): provide an unscaled version of the + fits + +2009-07-09 Brian Gough + + * work.c (gsl_multifit_linear_free): handle NULL argument in free + + * fsolver.c (gsl_multifit_fsolver_free): handle NULL argument in + free + + * fdfsolver.c (gsl_multifit_fdfsolver_free): handle NULL argument + in free + +2009-06-24 Brian Gough + + * lmset.c (set): check the return code of fdf + +2008-07-03 Brian Gough + + * Makefile.am (INCLUDES): use top_srcdir instead of top_builddir + +2007-07-29 Brian Gough + + * lmset.c (set): ensure internal state is zeroed after a set + +2007-01-26 Brian Gough + + * fsolver.c (gsl_multifit_fsolver_set): made vector argument x + const + +2006-03-30 Brian Gough + + * fsolver.c (gsl_multifit_fsolver_alloc): minpack algorithms + require n>=p, added check + + * fdfsolver.c (gsl_multifit_fdfsolver_alloc): minpack algorithms + require n>=p, added check + +2006-02-20 Brian Gough + + * multilinear.c (gsl_multifit_linear_est): added linear estimator + + * test_estimator.c (test_estimator): added test for gsl_multifit_linear_est + +2005-07-03 Brian Gough + + * multilinear.c (gsl_multifit_linear_svd): accept a user-specified + tolerance for the SVD cutoff and return effective rank + (gsl_multifit_wlinear_svd): same + +2004-12-23 Brian Gough + + * gsl_multifit_nlin.h: removed unused declaration of + gsl_multifit_fdjacobian + +2004-06-14 Brian Gough + + * lmiterate.c (iterate): handle case where fnorm = 0 to avoid + division by zero + + * covar.c (gsl_multifit_covar): change tolerance test to match + original code, and handle case where tolr = 0 + +2003-03-21 Brian Gough + + * lmset.c (set): removed reference to q, compute QR decomposition + in place + + * lmiterate.c (iterate): removed reference to q, compute QR + decomposition in-place for R + + * lmutil.c: removed compute_qtf + + * lmder.c (lmder_free): removed reference to q + (lmder_alloc): removed reference to q + +Tue Nov 12 22:18:14 2002 Brian Gough + + * lmder.c (lmder_alloc): use GSL_ERROR instead of GSL_ERROR_VAL + for internal alloc functions which return int + +Thu Feb 28 20:15:33 2002 Brian Gough + + * lmiterate.c (iterate): return immediately if evaluation raised + error (Hans E. Plesser) + + * lmpar.c (lmpar): avoid division by zero for w=0 in rank + deficient case + +Mon Oct 8 19:25:55 2001 Brian Gough + + * test.c (main): added extra nist tests + + * lmutil.c (compute_rptdx): fixed bug, permutation in rptdx vector + was incorrectly applied + + * lmpar.c (compute_newton_direction): fixed bug, permutation of + newton direction vector was incorrect (should have been inverse + permutation) + +Mon Jul 30 17:43:21 2001 Brian Gough + + * test_filip.c (test_filip): reduce tolerance on covariance test + slightly for MSVC with /O2 + +Sun Jul 1 22:42:34 2001 Brian Gough + + * multilinear.c: modified to use new-style vector views + + * test_pontius.c: modified to use new-style vector views + + * test_longley.c: modified to use new-style vector views + + * test_fn.c: modified to use new-style vector views + + * test_filip.c: modified to use new-style vector views + +Tue Jun 26 21:41:30 2001 Brian Gough + + * test_filip.c (test_filip): reduce tolerance on covariance test + slightly + +Wed Jun 20 13:11:26 2001 Brian Gough + + * removed unused variable work2 + +Tue Jun 19 23:18:01 2001 Brian Gough + + * multilinear.c: perform column scaling before doing fit to + improve accuracy + (gsl_multifit_linear): use modified Golub-Reinsch SVD for greater + speed + (gsl_multifit_wlinear): use modified Golub-Reinsch SVD for greater + speed + +Wed Jun 6 13:32:22 2001 Brian Gough + + * lmder.c covar.c lmiterate.c lmset.c: updated to use new QR + calling convention (now passes workspace) + +Sat Apr 28 11:46:59 2001 Brian Gough + + * qrsolv.c (qrsolv): removed local declaration of j to avoid + shadowing global j + +Mon Apr 23 13:40:04 2001 Brian Gough + + * qrsolv.c (qrsolv): made function static so it is not exported + +Wed Apr 18 13:39:33 2001 Brian Gough + + * lmpar.c (compute_newton_direction): moved final rescaling inside + loop, as in the original lmpar.f + +Thu Mar 8 15:29:32 2001 Brian Gough + + * lmpar.c (compute_newton_direction): corrected bug that produced + negative index + +Sun Feb 18 16:39:46 2001 Brian Gough + + * fdfsolver.c (gsl_multifit_fdfsolver_alloc): changed so that the + solver _alloc function no longer calls _set, the user must do that + separately. + +Fri Sep 29 19:19:24 2000 Brian Gough + + * Makefile.am multifit/demo.c: removed demo from Makefile since it + is was just a temporary test. + diff --git a/gsl-2.5/multifit/Makefile b/gsl-2.5/multifit/Makefile new file mode 100644 index 00000000..9bdf1aef --- /dev/null +++ b/gsl-2.5/multifit/Makefile @@ -0,0 +1,1108 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# multifit/Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + + + + +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/gsl +pkgincludedir = $(includedir)/gsl +pkglibdir = $(libdir)/gsl +pkglibexecdir = $(libexecdir)/gsl +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = x86_64-unknown-linux-gnu +host_triplet = x86_64-unknown-linux-gnu +check_PROGRAMS = test$(EXEEXT) +subdir = multifit +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp \ + $(noinst_HEADERS) $(pkginclude_HEADERS) \ + $(top_srcdir)/test-driver ChangeLog TODO +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +libgslmultifit_la_LIBADD = +am_libgslmultifit_la_OBJECTS = gcv.lo multilinear.lo multiwlinear.lo \ + work.lo lmniel.lo lmder.lo fsolver.lo fdfsolver.lo fdfridge.lo \ + fdjac.lo convergence.lo gradient.lo covar.lo multirobust.lo \ + robust_wfun.lo multireg.lo +libgslmultifit_la_OBJECTS = $(am_libgslmultifit_la_OBJECTS) +AM_V_lt = $(am__v_lt_$(V)) +am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) +am__v_lt_0 = --silent +am__v_lt_1 = +am_test_OBJECTS = test.$(OBJEXT) +test_OBJECTS = $(am_test_OBJECTS) +test_DEPENDENCIES = libgslmultifit.la ../linalg/libgsllinalg.la \ + ../permutation/libgslpermutation.la ../blas/libgslblas.la \ + ../cblas/libgslcblas.la ../matrix/libgslmatrix.la \ + ../sort/libgslsort.la ../statistics/libgslstatistics.la \ + ../vector/libgslvector.la ../block/libgslblock.la \ + ../complex/libgslcomplex.la ../ieee-utils/libgslieeeutils.la \ + ../err/libgslerr.la ../test/libgsltest.la ../utils/libutils.la \ + ../sys/libgslsys.la ../rng/libgslrng.la \ + ../specfunc/libgslspecfunc.la ../min/libgslmin.la +AM_V_P = $(am__v_P_$(V)) +am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY)) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_$(V)) +am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_$(V)) +am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I. -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_$(V)) +am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_$(V)) +am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libgslmultifit_la_SOURCES) $(test_SOURCES) +DIST_SOURCES = $(libgslmultifit_la_SOURCES) $(test_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(pkgincludedir)" +HEADERS = $(noinst_HEADERS) $(pkginclude_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = .test +LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing aclocal-1.13 +AMTAR = $${TAR-tar} +AM_DEFAULT_VERBOSITY = 1 +AR = ar +AS = as +AUTOCONF = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing autoconf +AUTOHEADER = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing autoheader +AUTOMAKE = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing automake-1.13 +AWK = gawk +CC = gcc +CCDEPMODE = depmode=gcc3 +CFLAGS = -g -O2 +CPP = gcc -E +CPPFLAGS = +CYGPATH_W = echo +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +DLLTOOL = false +DSYMUTIL = +DUMPBIN = +ECHO_C = +ECHO_N = -n +ECHO_T = +EGREP = /usr/bin/grep -E +EXEEXT = +FGREP = /usr/bin/grep -F +GREP = /usr/bin/grep +GSLCBLAS_LDFLAGS = +GSL_CFLAGS = -I${prefix}/include +GSL_LDFLAGS = +GSL_LIBADD = +GSL_LIBM = -lm +GSL_LIBS = -L${exec_prefix}/lib -lgsl +GSL_LT_CBLAS_VERSION = 0:0:0 +GSL_LT_VERSION = 24:0:1 +GSL_MAJOR_VERSION = 2 +GSL_MINOR_VERSION = 5 +HAVE_AIX_IEEE_INTERFACE = +HAVE_DARWIN86_IEEE_INTERFACE = +HAVE_DARWIN_IEEE_INTERFACE = +HAVE_FREEBSD_IEEE_INTERFACE = +HAVE_GNUM68K_IEEE_INTERFACE = +HAVE_GNUPPC_IEEE_INTERFACE = +HAVE_GNUSPARC_IEEE_INTERFACE = +HAVE_GNUX86_IEEE_INTERFACE = +HAVE_HPUX11_IEEE_INTERFACE = +HAVE_HPUX_IEEE_INTERFACE = +HAVE_IRIX_IEEE_INTERFACE = +HAVE_NETBSD_IEEE_INTERFACE = +HAVE_OPENBSD_IEEE_INTERFACE = +HAVE_OS2EMX_IEEE_INTERFACE = +HAVE_SOLARIS_IEEE_INTERFACE = +HAVE_SUNOS4_IEEE_INTERFACE = +HAVE_TRU64_IEEE_INTERFACE = +INSTALL = /usr/bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = $(install_sh) -c -s +LD = /usr/bin/ld -m elf_x86_64 +LDFLAGS = +LIBM = -lm +LIBOBJS = +LIBS = -lm +LIBTOOL = $(SHELL) $(top_builddir)/libtool +LIPO = +LN_S = ln -s +LTLIBOBJS = +MAINT = # +MAKEINFO = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing makeinfo +MANIFEST_TOOL = : +MKDIR_P = /usr/bin/mkdir -p +NM = /usr/bin/nm -B +NMEDIT = +OBJDUMP = objdump +OBJEXT = o +OTOOL = +OTOOL64 = +PACKAGE = gsl +PACKAGE_BUGREPORT = +PACKAGE_NAME = gsl +PACKAGE_STRING = gsl 2.5 +PACKAGE_TARNAME = gsl +PACKAGE_URL = +PACKAGE_VERSION = 2.5 +PATH_SEPARATOR = : +RANLIB = ranlib +SED = /usr/bin/sed +SET_MAKE = +SHELL = /bin/sh +STRIP = strip +VERSION = 2.5 +abs_builddir = /home/groups/kipac/chto/package/gsl/gsl-2.5/multifit +abs_srcdir = /home/groups/kipac/chto/package/gsl/gsl-2.5/multifit +abs_top_builddir = /home/groups/kipac/chto/package/gsl/gsl-2.5 +abs_top_srcdir = /home/groups/kipac/chto/package/gsl/gsl-2.5 +ac_ct_AR = ar +ac_ct_CC = gcc +ac_ct_DUMPBIN = +am__include = include +am__leading_dot = . +am__quote = +am__tar = $${TAR-tar} chof - "$$tardir" +am__untar = $${TAR-tar} xf - +bindir = ${exec_prefix}/bin +build = x86_64-unknown-linux-gnu +build_alias = +build_cpu = x86_64 +build_os = linux-gnu +build_vendor = unknown +builddir = . +datadir = ${datarootdir} +datarootdir = ${prefix}/share +docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} +dvidir = ${docdir} +exec_prefix = ${prefix} +host = x86_64-unknown-linux-gnu +host_alias = +host_cpu = x86_64 +host_os = linux-gnu +host_vendor = unknown +htmldir = ${docdir} +includedir = ${prefix}/include +infodir = ${datarootdir}/info +install_sh = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/install-sh +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +localedir = ${datarootdir}/locale +localstatedir = ${prefix}/var +mandir = ${datarootdir}/man +mkdir_p = $(MKDIR_P) +oldincludedir = /usr/include +pdfdir = ${docdir} +prefix = /home/groups/kipac/chto/package/gsl/gsl_lib +program_transform_name = s,x,x, +psdir = ${docdir} +sbindir = ${exec_prefix}/sbin +sharedstatedir = ${prefix}/com +srcdir = . +sysconfdir = ${prefix}/etc +target_alias = +top_build_prefix = ../ +top_builddir = .. +top_srcdir = .. +noinst_LTLIBRARIES = libgslmultifit.la +pkginclude_HEADERS = gsl_multifit.h gsl_multifit_nlin.h +AM_CPPFLAGS = -I$(top_srcdir) +libgslmultifit_la_SOURCES = gcv.c multilinear.c multiwlinear.c work.c lmniel.c lmder.c fsolver.c fdfsolver.c fdfridge.c fdjac.c convergence.c gradient.c covar.c multirobust.c robust_wfun.c multireg.c +noinst_HEADERS = \ +linear_common.c \ +lmutil.c \ +lmpar.c \ +lmset.c \ +lmiterate.c \ +lmmisc.c \ +qrsolv.c \ +test_bard.c \ +test_beale.c \ +test_biggs.c \ +test_box.c \ +test_boxbod.c \ +test_brown1.c \ +test_brown2.c \ +test_brown3.c \ +test_eckerle.c \ +test_enso.c \ +test_estimator.c \ +test_exp1.c \ +test_filip.c \ +test_gaussian.c \ +test_hahn1.c \ +test_helical.c \ +test_jennrich.c \ +test_kirby2.c \ +test_kowalik.c \ +test_lin1.c \ +test_lin2.c \ +test_lin3.c \ +test_linear.c \ +test_longley.c \ +test_meyer.c \ +test_meyerscal.c \ +test_nelson.c \ +test_nonlinear.c \ +test_osborne.c \ +test_penalty1.c \ +test_penalty2.c \ +test_pontius.c \ +test_powell1.c \ +test_powell2.c \ +test_powell3.c \ +test_rat42.c \ +test_rat43.c \ +test_reg.c \ +test_rosenbrock.c \ +test_rosenbrocke.c \ +test_roth.c \ +test_shaw.c \ +test_thurber.c \ +test_vardim.c \ +test_watson.c \ +test_wnlin.c \ +test_wood.c + +TESTS = $(check_PROGRAMS) +test_SOURCES = test.c +test_LDADD = libgslmultifit.la ../linalg/libgsllinalg.la ../permutation/libgslpermutation.la ../blas/libgslblas.la ../cblas/libgslcblas.la ../matrix/libgslmatrix.la ../sort/libgslsort.la ../statistics/libgslstatistics.la ../vector/libgslvector.la ../block/libgslblock.la ../complex/libgslcomplex.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../utils/libutils.la ../sys/libgslsys.la ../rng/libgslrng.la ../specfunc/libgslspecfunc.la ../min/libgslmin.la +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu multifit/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu multifit/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: # $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): # $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libgslmultifit.la: $(libgslmultifit_la_OBJECTS) $(libgslmultifit_la_DEPENDENCIES) $(EXTRA_libgslmultifit_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(libgslmultifit_la_OBJECTS) $(libgslmultifit_la_LIBADD) $(LIBS) + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) $(EXTRA_test_DEPENDENCIES) + @rm -f test$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_OBJECTS) $(test_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +include ./$(DEPDIR)/convergence.Plo +include ./$(DEPDIR)/covar.Plo +include ./$(DEPDIR)/fdfridge.Plo +include ./$(DEPDIR)/fdfsolver.Plo +include ./$(DEPDIR)/fdjac.Plo +include ./$(DEPDIR)/fsolver.Plo +include ./$(DEPDIR)/gcv.Plo +include ./$(DEPDIR)/gradient.Plo +include ./$(DEPDIR)/lmder.Plo +include ./$(DEPDIR)/lmniel.Plo +include ./$(DEPDIR)/multilinear.Plo +include ./$(DEPDIR)/multireg.Plo +include ./$(DEPDIR)/multirobust.Plo +include ./$(DEPDIR)/multiwlinear.Plo +include ./$(DEPDIR)/robust_wfun.Plo +include ./$(DEPDIR)/test.Po +include ./$(DEPDIR)/work.Plo + +.c.o: + $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# $(AM_V_CC)source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(COMPILE) -c $< + +.c.obj: + $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# $(AM_V_CC)source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: + $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +# $(AM_V_CC)source='$<' object='$@' libtool=yes \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-pkgincludeHEADERS: $(pkginclude_HEADERS) + @$(NORMAL_INSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \ + done + +uninstall-pkgincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + else \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_PROGRAMS) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +test.log: test$(EXEEXT) + @p='test$(EXEEXT)'; \ + b='test'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +#.test$(EXEEXT).log: +# @p='$<'; \ +# $(am__set_b); \ +# $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +# --log-file $$b.log --trs-file $$b.trs \ +# $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +# "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-am +all-am: Makefile $(LTLIBRARIES) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(pkgincludedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-pkgincludeHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-pkgincludeHEADERS + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES cscopelist-am ctags ctags-am distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-pkgincludeHEADERS \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + recheck tags tags-am uninstall uninstall-am \ + uninstall-pkgincludeHEADERS + + +#demo_SOURCES = demo.c +#demo_LDADD = libgslmultifit.la ../linalg/libgsllinalg.la ../permutation/libgslpermutation.la ../blas/libgslblas.la ../cblas/libgslcblas.la ../matrix/libgslmatrix.la ../vector/libgslvector.la ../block/libgslblock.la ../randist/libgslrandist.la ../rng/libgslrng.la ../complex/libgslcomplex.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../utils/libutils.la ../sys/libgslsys.la + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gsl-2.5/multifit/Makefile.am b/gsl-2.5/multifit/Makefile.am new file mode 100644 index 00000000..988614e0 --- /dev/null +++ b/gsl-2.5/multifit/Makefile.am @@ -0,0 +1,74 @@ +noinst_LTLIBRARIES = libgslmultifit.la + +pkginclude_HEADERS = gsl_multifit.h gsl_multifit_nlin.h + +AM_CPPFLAGS = -I$(top_srcdir) + +libgslmultifit_la_SOURCES = gcv.c multilinear.c multiwlinear.c work.c lmniel.c lmder.c fsolver.c fdfsolver.c fdfridge.c fdjac.c convergence.c gradient.c covar.c multirobust.c robust_wfun.c multireg.c + +noinst_HEADERS = \ +linear_common.c \ +lmutil.c \ +lmpar.c \ +lmset.c \ +lmiterate.c \ +lmmisc.c \ +qrsolv.c \ +test_bard.c \ +test_beale.c \ +test_biggs.c \ +test_box.c \ +test_boxbod.c \ +test_brown1.c \ +test_brown2.c \ +test_brown3.c \ +test_eckerle.c \ +test_enso.c \ +test_estimator.c \ +test_exp1.c \ +test_filip.c \ +test_gaussian.c \ +test_hahn1.c \ +test_helical.c \ +test_jennrich.c \ +test_kirby2.c \ +test_kowalik.c \ +test_lin1.c \ +test_lin2.c \ +test_lin3.c \ +test_linear.c \ +test_longley.c \ +test_meyer.c \ +test_meyerscal.c \ +test_nelson.c \ +test_nonlinear.c \ +test_osborne.c \ +test_penalty1.c \ +test_penalty2.c \ +test_pontius.c \ +test_powell1.c \ +test_powell2.c \ +test_powell3.c \ +test_rat42.c \ +test_rat43.c \ +test_reg.c \ +test_rosenbrock.c \ +test_rosenbrocke.c \ +test_roth.c \ +test_shaw.c \ +test_thurber.c \ +test_vardim.c \ +test_watson.c \ +test_wnlin.c \ +test_wood.c + +check_PROGRAMS = test #demo + +TESTS = $(check_PROGRAMS) + +test_SOURCES = test.c +test_LDADD = libgslmultifit.la ../linalg/libgsllinalg.la ../permutation/libgslpermutation.la ../blas/libgslblas.la ../cblas/libgslcblas.la ../matrix/libgslmatrix.la ../sort/libgslsort.la ../statistics/libgslstatistics.la ../vector/libgslvector.la ../block/libgslblock.la ../complex/libgslcomplex.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../utils/libutils.la ../sys/libgslsys.la ../rng/libgslrng.la ../specfunc/libgslspecfunc.la ../min/libgslmin.la + +#demo_SOURCES = demo.c +#demo_LDADD = libgslmultifit.la ../linalg/libgsllinalg.la ../permutation/libgslpermutation.la ../blas/libgslblas.la ../cblas/libgslcblas.la ../matrix/libgslmatrix.la ../vector/libgslvector.la ../block/libgslblock.la ../randist/libgslrandist.la ../rng/libgslrng.la ../complex/libgslcomplex.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../utils/libutils.la ../sys/libgslsys.la + diff --git a/gsl-2.5/multifit/Makefile.in b/gsl-2.5/multifit/Makefile.in new file mode 100644 index 00000000..6b754597 --- /dev/null +++ b/gsl-2.5/multifit/Makefile.in @@ -0,0 +1,1108 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + + +VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +check_PROGRAMS = test$(EXEEXT) +subdir = multifit +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp \ + $(noinst_HEADERS) $(pkginclude_HEADERS) \ + $(top_srcdir)/test-driver ChangeLog TODO +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +libgslmultifit_la_LIBADD = +am_libgslmultifit_la_OBJECTS = gcv.lo multilinear.lo multiwlinear.lo \ + work.lo lmniel.lo lmder.lo fsolver.lo fdfsolver.lo fdfridge.lo \ + fdjac.lo convergence.lo gradient.lo covar.lo multirobust.lo \ + robust_wfun.lo multireg.lo +libgslmultifit_la_OBJECTS = $(am_libgslmultifit_la_OBJECTS) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +am_test_OBJECTS = test.$(OBJEXT) +test_OBJECTS = $(am_test_OBJECTS) +test_DEPENDENCIES = libgslmultifit.la ../linalg/libgsllinalg.la \ + ../permutation/libgslpermutation.la ../blas/libgslblas.la \ + ../cblas/libgslcblas.la ../matrix/libgslmatrix.la \ + ../sort/libgslsort.la ../statistics/libgslstatistics.la \ + ../vector/libgslvector.la ../block/libgslblock.la \ + ../complex/libgslcomplex.la ../ieee-utils/libgslieeeutils.la \ + ../err/libgslerr.la ../test/libgsltest.la ../utils/libutils.la \ + ../sys/libgslsys.la ../rng/libgslrng.la \ + ../specfunc/libgslspecfunc.la ../min/libgslmin.la +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libgslmultifit_la_SOURCES) $(test_SOURCES) +DIST_SOURCES = $(libgslmultifit_la_SOURCES) $(test_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(pkgincludedir)" +HEADERS = $(noinst_HEADERS) $(pkginclude_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = @EXEEXT@ .test +LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +GSLCBLAS_LDFLAGS = @GSLCBLAS_LDFLAGS@ +GSL_CFLAGS = @GSL_CFLAGS@ +GSL_LDFLAGS = @GSL_LDFLAGS@ +GSL_LIBADD = @GSL_LIBADD@ +GSL_LIBM = @GSL_LIBM@ +GSL_LIBS = @GSL_LIBS@ +GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ +GSL_LT_VERSION = @GSL_LT_VERSION@ +GSL_MAJOR_VERSION = @GSL_MAJOR_VERSION@ +GSL_MINOR_VERSION = @GSL_MINOR_VERSION@ +HAVE_AIX_IEEE_INTERFACE = @HAVE_AIX_IEEE_INTERFACE@ +HAVE_DARWIN86_IEEE_INTERFACE = @HAVE_DARWIN86_IEEE_INTERFACE@ +HAVE_DARWIN_IEEE_INTERFACE = @HAVE_DARWIN_IEEE_INTERFACE@ +HAVE_FREEBSD_IEEE_INTERFACE = @HAVE_FREEBSD_IEEE_INTERFACE@ +HAVE_GNUM68K_IEEE_INTERFACE = @HAVE_GNUM68K_IEEE_INTERFACE@ +HAVE_GNUPPC_IEEE_INTERFACE = @HAVE_GNUPPC_IEEE_INTERFACE@ +HAVE_GNUSPARC_IEEE_INTERFACE = @HAVE_GNUSPARC_IEEE_INTERFACE@ +HAVE_GNUX86_IEEE_INTERFACE = @HAVE_GNUX86_IEEE_INTERFACE@ +HAVE_HPUX11_IEEE_INTERFACE = @HAVE_HPUX11_IEEE_INTERFACE@ +HAVE_HPUX_IEEE_INTERFACE = @HAVE_HPUX_IEEE_INTERFACE@ +HAVE_IRIX_IEEE_INTERFACE = @HAVE_IRIX_IEEE_INTERFACE@ +HAVE_NETBSD_IEEE_INTERFACE = @HAVE_NETBSD_IEEE_INTERFACE@ +HAVE_OPENBSD_IEEE_INTERFACE = @HAVE_OPENBSD_IEEE_INTERFACE@ +HAVE_OS2EMX_IEEE_INTERFACE = @HAVE_OS2EMX_IEEE_INTERFACE@ +HAVE_SOLARIS_IEEE_INTERFACE = @HAVE_SOLARIS_IEEE_INTERFACE@ +HAVE_SUNOS4_IEEE_INTERFACE = @HAVE_SUNOS4_IEEE_INTERFACE@ +HAVE_TRU64_IEEE_INTERFACE = @HAVE_TRU64_IEEE_INTERFACE@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBM = @LIBM@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +noinst_LTLIBRARIES = libgslmultifit.la +pkginclude_HEADERS = gsl_multifit.h gsl_multifit_nlin.h +AM_CPPFLAGS = -I$(top_srcdir) +libgslmultifit_la_SOURCES = gcv.c multilinear.c multiwlinear.c work.c lmniel.c lmder.c fsolver.c fdfsolver.c fdfridge.c fdjac.c convergence.c gradient.c covar.c multirobust.c robust_wfun.c multireg.c +noinst_HEADERS = \ +linear_common.c \ +lmutil.c \ +lmpar.c \ +lmset.c \ +lmiterate.c \ +lmmisc.c \ +qrsolv.c \ +test_bard.c \ +test_beale.c \ +test_biggs.c \ +test_box.c \ +test_boxbod.c \ +test_brown1.c \ +test_brown2.c \ +test_brown3.c \ +test_eckerle.c \ +test_enso.c \ +test_estimator.c \ +test_exp1.c \ +test_filip.c \ +test_gaussian.c \ +test_hahn1.c \ +test_helical.c \ +test_jennrich.c \ +test_kirby2.c \ +test_kowalik.c \ +test_lin1.c \ +test_lin2.c \ +test_lin3.c \ +test_linear.c \ +test_longley.c \ +test_meyer.c \ +test_meyerscal.c \ +test_nelson.c \ +test_nonlinear.c \ +test_osborne.c \ +test_penalty1.c \ +test_penalty2.c \ +test_pontius.c \ +test_powell1.c \ +test_powell2.c \ +test_powell3.c \ +test_rat42.c \ +test_rat43.c \ +test_reg.c \ +test_rosenbrock.c \ +test_rosenbrocke.c \ +test_roth.c \ +test_shaw.c \ +test_thurber.c \ +test_vardim.c \ +test_watson.c \ +test_wnlin.c \ +test_wood.c + +TESTS = $(check_PROGRAMS) +test_SOURCES = test.c +test_LDADD = libgslmultifit.la ../linalg/libgsllinalg.la ../permutation/libgslpermutation.la ../blas/libgslblas.la ../cblas/libgslcblas.la ../matrix/libgslmatrix.la ../sort/libgslsort.la ../statistics/libgslstatistics.la ../vector/libgslvector.la ../block/libgslblock.la ../complex/libgslcomplex.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../utils/libutils.la ../sys/libgslsys.la ../rng/libgslrng.la ../specfunc/libgslspecfunc.la ../min/libgslmin.la +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu multifit/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu multifit/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libgslmultifit.la: $(libgslmultifit_la_OBJECTS) $(libgslmultifit_la_DEPENDENCIES) $(EXTRA_libgslmultifit_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(libgslmultifit_la_OBJECTS) $(libgslmultifit_la_LIBADD) $(LIBS) + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) $(EXTRA_test_DEPENDENCIES) + @rm -f test$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_OBJECTS) $(test_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/convergence.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/covar.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fdfridge.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fdfsolver.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fdjac.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fsolver.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gcv.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gradient.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lmder.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lmniel.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/multilinear.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/multireg.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/multirobust.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/multiwlinear.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/robust_wfun.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/work.Plo@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-pkgincludeHEADERS: $(pkginclude_HEADERS) + @$(NORMAL_INSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \ + done + +uninstall-pkgincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + else \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_PROGRAMS) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +test.log: test$(EXEEXT) + @p='test$(EXEEXT)'; \ + b='test'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +@am__EXEEXT_TRUE@.test$(EXEEXT).log: +@am__EXEEXT_TRUE@ @p='$<'; \ +@am__EXEEXT_TRUE@ $(am__set_b); \ +@am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +@am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ +@am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +@am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-am +all-am: Makefile $(LTLIBRARIES) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(pkgincludedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-pkgincludeHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-pkgincludeHEADERS + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES cscopelist-am ctags ctags-am distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-pkgincludeHEADERS \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + recheck tags tags-am uninstall uninstall-am \ + uninstall-pkgincludeHEADERS + + +#demo_SOURCES = demo.c +#demo_LDADD = libgslmultifit.la ../linalg/libgsllinalg.la ../permutation/libgslpermutation.la ../blas/libgslblas.la ../cblas/libgslcblas.la ../matrix/libgslmatrix.la ../vector/libgslvector.la ../block/libgslblock.la ../randist/libgslrandist.la ../rng/libgslrng.la ../complex/libgslcomplex.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../utils/libutils.la ../sys/libgslsys.la + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gsl-2.5/multifit/TODO b/gsl-2.5/multifit/TODO new file mode 100644 index 00000000..637359b0 --- /dev/null +++ b/gsl-2.5/multifit/TODO @@ -0,0 +1,19 @@ +# -*- org -*- +#+CATEGORY: multifit + +The following would also be nice additions to the multifit function suite +(see MS Excel regression output for example): + +1. Produce the correlation coefficient (r) and other statistics. +2. Allow fit variable weighting (not observation weighting). +3. Allow for principal factor computations. + +The following features should be added to the nonlinear least squares routines: + +1. Support for constraints + +2. robust nonlinear least squares and robust ridge regression + +3. covariance matrices for ridge regression + +4. min_workspace_p is dynamically allocated in gsl_multifit_linear_gcv_min - fix diff --git a/gsl-2.5/multifit/convergence.c b/gsl-2.5/multifit/convergence.c new file mode 100644 index 00000000..f0c6a1ce --- /dev/null +++ b/gsl-2.5/multifit/convergence.c @@ -0,0 +1,174 @@ +/* multifit/convergence.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include + +static double scaled_infnorm(const gsl_vector *x, const gsl_vector *g); + +/* +gsl_multifit_fdfsolver_test() + Convergence tests for nonlinear minimization + +(1) |dx_i| <= xtol * (1 + |x_i|) for all i +(2) || g .* x ||_inf <= gtol ||f||^2 +(3) ||f(x+dx) - f(x)|| <= ftol * max(||f(x)||, 1) + +Inputs: s - fdfsolver + xtol - tolerance for step size + gtol - tolerance for gradient vector + ftol - tolerance for residual vector + info - (output) + 1 - stopped by small x step + 2 - stopped by small gradient + 3 - stopped by small residual vector change +*/ + +int +gsl_multifit_fdfsolver_test (const gsl_multifit_fdfsolver * s, + const double xtol, const double gtol, + const double ftol, int *info) +{ + int status; + double gnorm, fnorm, phi; + + *info = 0; + + status = gsl_multifit_test_delta(s->dx, s->x, xtol*xtol, xtol); + if (status == GSL_SUCCESS) + { + *info = 1; + return GSL_SUCCESS; + } + + /* compute gradient g = J^T f */ + (s->type->gradient) (s->state, s->g); + + /* compute gnorm = max_i( g_i * max(x_i, 1) ) */ + gnorm = scaled_infnorm(s->x, s->g); + + /* compute fnorm = ||f|| */ + fnorm = gsl_blas_dnrm2(s->f); + phi = 0.5 * fnorm * fnorm; + + if (gnorm <= gtol * GSL_MAX(phi, 1.0)) + { + *info = 2; + return GSL_SUCCESS; + } + +#if 0 + if (dfnorm <= ftol * GSL_MAX(fnorm, 1.0)) + { + *info = 3; + return GSL_SUCCESS; + } +#endif + + return GSL_CONTINUE; +} /* gsl_multifit_fdfsolver_test() */ + +int +gsl_multifit_test_delta (const gsl_vector * dx, const gsl_vector * x, + double epsabs, double epsrel) +{ + size_t i; + int ok = 1; + const size_t n = x->size ; + + if (epsrel < 0.0) + { + GSL_ERROR ("relative tolerance is negative", GSL_EBADTOL); + } + + for (i = 0 ; i < n ; i++) + { + double xi = gsl_vector_get(x,i); + double dxi = gsl_vector_get(dx,i); + double tolerance = epsabs + epsrel * fabs(xi) ; + + if (fabs(dxi) < tolerance) + { + ok = 1; + } + else + { + ok = 0; + break; + } + } + + if (ok) + return GSL_SUCCESS ; + + return GSL_CONTINUE; +} + +int +gsl_multifit_test_gradient (const gsl_vector * g, double epsabs) +{ + size_t i; + + double residual = 0; + + const size_t n = g->size; + + if (epsabs < 0.0) + { + GSL_ERROR ("absolute tolerance is negative", GSL_EBADTOL); + } + + for (i = 0 ; i < n ; i++) + { + double gi = gsl_vector_get(g, i); + + residual += fabs(gi); + } + + + if (residual < epsabs) + { + return GSL_SUCCESS; + } + + return GSL_CONTINUE ; +} + +static double +scaled_infnorm(const gsl_vector *x, const gsl_vector *g) +{ + const size_t n = x->size; + size_t i; + double norm = 0.0; + + for (i = 0; i < n; ++i) + { + double xi = GSL_MAX(gsl_vector_get(x, i), 1.0); + double gi = gsl_vector_get(g, i); + double tmp = fabs(xi * gi); + + if (tmp > norm) + norm = tmp; + } + + return norm; +} diff --git a/gsl-2.5/multifit/convergence.lo b/gsl-2.5/multifit/convergence.lo new file mode 100644 index 00000000..a5468a8d --- /dev/null +++ b/gsl-2.5/multifit/convergence.lo @@ -0,0 +1,12 @@ +# convergence.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/convergence.o' + +# Name of the non-PIC object +non_pic_object='convergence.o' + diff --git a/gsl-2.5/multifit/covar.c b/gsl-2.5/multifit/covar.c new file mode 100644 index 00000000..746462f2 --- /dev/null +++ b/gsl-2.5/multifit/covar.c @@ -0,0 +1,199 @@ +/* multifit/covar.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2004, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include + +/* Compute the covariance matrix + + cov = inv (J^T J) + + by QRP^T decomposition of J +*/ + +int +gsl_multifit_covar (const gsl_matrix * J, const double epsrel, gsl_matrix * covar) +{ + int status; + gsl_matrix * r; + gsl_vector * tau; + gsl_vector * norm; + gsl_permutation * perm; + const size_t m = J->size1; + const size_t n = J->size2; + + if (m < n) + { + GSL_ERROR ("Jacobian be rectangular M x N with M >= N", GSL_EBADLEN); + } + + if (covar->size1 != covar->size2 || covar->size1 != n) + { + GSL_ERROR ("covariance matrix must be square and match second dimension of jacobian", GSL_EBADLEN); + } + + r = gsl_matrix_alloc (m, n); + tau = gsl_vector_alloc (n); + perm = gsl_permutation_alloc (n) ; + norm = gsl_vector_alloc (n) ; + + { + int signum = 0; + gsl_matrix_memcpy (r, J); + gsl_linalg_QRPT_decomp (r, tau, perm, &signum, norm); + } + + status = gsl_multifit_covar_QRPT(r, perm, epsrel, covar); + + gsl_matrix_free (r); + gsl_permutation_free (perm); + gsl_vector_free (tau); + gsl_vector_free (norm); + + return status; +} + +int +gsl_multifit_covar_QRPT (gsl_matrix * r, gsl_permutation * perm, + const double epsrel, gsl_matrix * covar) +{ + /* Form the inverse of R in the full upper triangle of R */ + + double tolr = epsrel * fabs(gsl_matrix_get(r, 0, 0)); + const size_t n = r->size2; + size_t i, j, k; + size_t kmax = 0; + + for (k = 0 ; k < n ; k++) + { + double rkk = gsl_matrix_get(r, k, k); + + if (fabs(rkk) <= tolr) + { + break; + } + + gsl_matrix_set(r, k, k, 1.0/rkk); + + for (j = 0; j < k ; j++) + { + double t = gsl_matrix_get(r, j, k) / rkk; + gsl_matrix_set (r, j, k, 0.0); + + for (i = 0; i <= j; i++) + { + double rik = gsl_matrix_get (r, i, k); + double rij = gsl_matrix_get (r, i, j); + + gsl_matrix_set (r, i, k, rik - t * rij); + } + } + kmax = k; + } + + /* Form the full upper triangle of the inverse of R^T R in the full + upper triangle of R */ + + for (k = 0; k <= kmax ; k++) + { + for (j = 0; j < k; j++) + { + double rjk = gsl_matrix_get (r, j, k); + + for (i = 0; i <= j ; i++) + { + double rij = gsl_matrix_get (r, i, j); + double rik = gsl_matrix_get (r, i, k); + + gsl_matrix_set (r, i, j, rij + rjk * rik); + } + } + + { + double t = gsl_matrix_get (r, k, k); + + for (i = 0; i <= k; i++) + { + double rik = gsl_matrix_get (r, i, k); + + gsl_matrix_set (r, i, k, t * rik); + }; + } + } + + /* Form the full lower triangle of the covariance matrix in the + strict lower triangle of R and in w */ + + for (j = 0 ; j < n ; j++) + { + size_t pj = gsl_permutation_get (perm, j); + + for (i = 0; i <= j; i++) + { + size_t pi = gsl_permutation_get (perm, i); + + double rij; + + if (j > kmax) + { + gsl_matrix_set (r, i, j, 0.0); + rij = 0.0 ; + } + else + { + rij = gsl_matrix_get (r, i, j); + } + + if (pi > pj) + { + gsl_matrix_set (r, pi, pj, rij); + } + else if (pi < pj) + { + gsl_matrix_set (r, pj, pi, rij); + } + + } + + { + double rjj = gsl_matrix_get (r, j, j); + gsl_matrix_set (covar, pj, pj, rjj); + } + } + + + /* symmetrize the covariance matrix */ + + for (j = 0 ; j < n ; j++) + { + for (i = 0; i < j ; i++) + { + double rji = gsl_matrix_get (r, j, i); + + gsl_matrix_set (covar, j, i, rji); + gsl_matrix_set (covar, i, j, rji); + } + } + + return GSL_SUCCESS; +} /* gsl_multifit_covar_QRPT() */ diff --git a/gsl-2.5/multifit/covar.lo b/gsl-2.5/multifit/covar.lo new file mode 100644 index 00000000..0240d2a5 --- /dev/null +++ b/gsl-2.5/multifit/covar.lo @@ -0,0 +1,12 @@ +# covar.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/covar.o' + +# Name of the non-PIC object +non_pic_object='covar.o' + diff --git a/gsl-2.5/multifit/fdfridge.c b/gsl-2.5/multifit/fdfridge.c new file mode 100644 index 00000000..eeb710c3 --- /dev/null +++ b/gsl-2.5/multifit/fdfridge.c @@ -0,0 +1,460 @@ +/* multifit/fdfridge.c + * + * Copyright (C) 2014 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include +#include +#include + +static int fdfridge_f(const gsl_vector * x, void * params, gsl_vector * f); +static int fdfridge_df(const gsl_vector * x, void * params, gsl_matrix * J); + +gsl_multifit_fdfridge * +gsl_multifit_fdfridge_alloc (const gsl_multifit_fdfsolver_type * T, + const size_t n, const size_t p) +{ + gsl_multifit_fdfridge * work; + + work = calloc(1, sizeof(gsl_multifit_fdfridge)); + if (work == NULL) + { + GSL_ERROR_VAL("failed to allocate workspace", + GSL_ENOMEM, 0); + } + + work->s = gsl_multifit_fdfsolver_alloc (T, n + p, p); + if (work->s == NULL) + { + gsl_multifit_fdfridge_free(work); + GSL_ERROR_VAL("failed to allocate space for fdfsolver", + GSL_ENOMEM, 0); + } + + work->wts = gsl_vector_alloc(n + p); + if (work->wts == NULL) + { + gsl_multifit_fdfridge_free(work); + GSL_ERROR_VAL("failed to allocate space for weight vector", + GSL_ENOMEM, 0); + } + + work->f = gsl_vector_alloc(n); + if (work->f == NULL) + { + gsl_multifit_fdfridge_free(work); + GSL_ERROR_VAL("failed to allocate space for f vector", + GSL_ENOMEM, 0); + } + + work->n = n; + work->p = p; + work->lambda = 0.0; + + /* initialize weights to 1 (for augmented portion of vector) */ + gsl_vector_set_all(work->wts, 1.0); + + return work; +} /* gsl_multifit_fdfridge_alloc() */ + +void +gsl_multifit_fdfridge_free(gsl_multifit_fdfridge *work) +{ + if (work->s) + gsl_multifit_fdfsolver_free(work->s); + + if (work->wts) + gsl_vector_free(work->wts); + + if (work->f) + gsl_vector_free(work->f); + + free(work); +} + +const char * +gsl_multifit_fdfridge_name(const gsl_multifit_fdfridge * w) +{ + return gsl_multifit_fdfsolver_name(w->s); +} + +gsl_vector * +gsl_multifit_fdfridge_position (const gsl_multifit_fdfridge * w) +{ + return gsl_multifit_fdfsolver_position(w->s); +} + +gsl_vector * +gsl_multifit_fdfridge_residual (const gsl_multifit_fdfridge * w) +{ + return gsl_multifit_fdfsolver_residual(w->s); +} + +size_t +gsl_multifit_fdfridge_niter (const gsl_multifit_fdfridge * w) +{ + return w->s->niter; +} + +int +gsl_multifit_fdfridge_set (gsl_multifit_fdfridge * w, + gsl_multifit_function_fdf * f, + const gsl_vector * x, + const double lambda) +{ + return gsl_multifit_fdfridge_wset(w, f, x, lambda, NULL); +} /* gsl_multifit_fdfridge_set() */ + +int +gsl_multifit_fdfridge_wset (gsl_multifit_fdfridge * w, + gsl_multifit_function_fdf * f, + const gsl_vector * x, + const double lambda, + const gsl_vector * wts) +{ + const size_t n = w->n; + const size_t p = w->p; + + if (n != f->n || p != f->p) + { + GSL_ERROR ("function size does not match solver", GSL_EBADLEN); + } + else if (p != x->size) + { + GSL_ERROR ("vector length does not match solver", GSL_EBADLEN); + } + else if (wts != NULL && n != wts->size) + { + GSL_ERROR ("weight vector length does not match solver", GSL_EBADLEN); + } + else + { + int status; + gsl_vector_view wv = gsl_vector_subvector(w->wts, 0, n); + + /* save user defined fdf */ + w->fdf = f; + + /* build modified fdf for Tikhonov terms */ + w->fdftik.f = &fdfridge_f; + w->fdftik.df = &fdfridge_df; + w->fdftik.n = n + p; /* add p for Tikhonov terms */ + w->fdftik.p = p; + w->fdftik.params = (void *) w; + + /* store damping parameter */ + w->lambda = lambda; + w->L = NULL; + + if (wts) + { + /* copy weight vector into user portion of w->wts */ + gsl_vector_memcpy(&wv.vector, wts); + status = gsl_multifit_fdfsolver_wset(w->s, &(w->fdftik), x, w->wts); + } + else + { + status = gsl_multifit_fdfsolver_wset(w->s, &(w->fdftik), x, NULL); + } + + /* update function/Jacobian evaluations */ + f->nevalf = w->fdftik.nevalf; + f->nevaldf = w->fdftik.nevaldf; + + return status; + } +} /* gsl_multifit_fdfridge_wset() */ + +int +gsl_multifit_fdfridge_set2 (gsl_multifit_fdfridge * w, + gsl_multifit_function_fdf * f, + const gsl_vector * x, + const gsl_vector * lambda) +{ + return gsl_multifit_fdfridge_wset2(w, f, x, lambda, NULL); +} /* gsl_multifit_fdfridge_set2() */ + +int +gsl_multifit_fdfridge_wset2 (gsl_multifit_fdfridge * w, + gsl_multifit_function_fdf * f, + const gsl_vector * x, + const gsl_vector * lambda, + const gsl_vector * wts) +{ + const size_t n = w->n; + const size_t p = w->p; + + if (n != f->n || p != f->p) + { + GSL_ERROR ("function size does not match solver", GSL_EBADLEN); + } + else if (p != x->size) + { + GSL_ERROR ("vector length does not match solver", GSL_EBADLEN); + } + else if (lambda->size != p) + { + GSL_ERROR ("lambda vector size does not match solver", GSL_EBADLEN); + } + else if (wts != NULL && n != wts->size) + { + GSL_ERROR ("weight vector length does not match solver", GSL_EBADLEN); + } + else + { + int status; + gsl_vector_view wv = gsl_vector_subvector(w->wts, 0, n); + + /* save user defined fdf */ + w->fdf = f; + w->fdf->nevalf = 0; + w->fdf->nevaldf = 0; + + /* build modified fdf for Tikhonov terms */ + w->fdftik.f = &fdfridge_f; + w->fdftik.df = &fdfridge_df; + w->fdftik.n = n + p; /* add p for Tikhonov terms */ + w->fdftik.p = p; + w->fdftik.params = (void *) w; + + /* store damping matrix */ + w->lambda = 0.0; + w->L_diag = lambda; + w->L = NULL; + + if (wts) + { + /* copy weight vector into user portion */ + gsl_vector_memcpy(&wv.vector, wts); + status = gsl_multifit_fdfsolver_wset(w->s, &(w->fdftik), x, w->wts); + } + else + { + status = gsl_multifit_fdfsolver_wset(w->s, &(w->fdftik), x, NULL); + } + + /* update function/Jacobian evaluations */ + f->nevalf = w->fdftik.nevalf; + f->nevaldf = w->fdftik.nevaldf; + + return status; + } +} /* gsl_multifit_fdfridge_wset2() */ + +int +gsl_multifit_fdfridge_set3 (gsl_multifit_fdfridge * w, + gsl_multifit_function_fdf * f, + const gsl_vector * x, + const gsl_matrix * L) +{ + return gsl_multifit_fdfridge_wset3(w, f, x, L, NULL); +} /* gsl_multifit_fdfridge_set3() */ + +int +gsl_multifit_fdfridge_wset3 (gsl_multifit_fdfridge * w, + gsl_multifit_function_fdf * f, + const gsl_vector * x, + const gsl_matrix * L, + const gsl_vector * wts) +{ + const size_t n = w->n; + const size_t p = w->p; + + if (n != f->n || p != f->p) + { + GSL_ERROR ("function size does not match solver", GSL_EBADLEN); + } + else if (p != x->size) + { + GSL_ERROR ("vector length does not match solver", GSL_EBADLEN); + } + else if (L->size2 != p) + { + GSL_ERROR ("L matrix size2 does not match solver", GSL_EBADLEN); + } + else if (wts != NULL && n != wts->size) + { + GSL_ERROR ("weight vector length does not match solver", GSL_EBADLEN); + } + else + { + int status; + gsl_vector_view wv = gsl_vector_subvector(w->wts, 0, n); + + /* save user defined fdf */ + w->fdf = f; + w->fdf->nevalf = 0; + w->fdf->nevaldf = 0; + + /* build modified fdf for Tikhonov terms */ + w->fdftik.f = &fdfridge_f; + w->fdftik.df = &fdfridge_df; + w->fdftik.n = n + p; /* add p for Tikhonov terms */ + w->fdftik.p = p; + w->fdftik.params = (void *) w; + + /* store damping matrix */ + w->lambda = 0.0; + w->L_diag = NULL; + w->L = L; + + if (wts) + { + /* copy weight vector into user portion */ + gsl_vector_memcpy(&wv.vector, wts); + status = gsl_multifit_fdfsolver_wset(w->s, &(w->fdftik), x, w->wts); + } + else + { + status = gsl_multifit_fdfsolver_wset(w->s, &(w->fdftik), x, NULL); + } + + /* update function/Jacobian evaluations */ + f->nevalf = w->fdftik.nevalf; + f->nevaldf = w->fdftik.nevaldf; + + return status; + } +} /* gsl_multifit_fdfridge_wset3() */ + +int +gsl_multifit_fdfridge_iterate (gsl_multifit_fdfridge * w) +{ + int status = gsl_multifit_fdfsolver_iterate(w->s); + + /* update function/Jacobian evaluations */ + w->fdf->nevalf = w->fdftik.nevalf; + w->fdf->nevaldf = w->fdftik.nevaldf; + + return status; +} + +int +gsl_multifit_fdfridge_driver (gsl_multifit_fdfridge * w, + const size_t maxiter, + const double xtol, + const double gtol, + const double ftol, + int *info) +{ + int status = gsl_multifit_fdfsolver_driver(w->s, maxiter, xtol, + gtol, ftol, info); + return status; +} /* gsl_multifit_fdfridge_driver() */ + +/* +fdfridge_f() + Callback function to provide residuals, including extra p +Tikhonov terms. The residual vector will have the form: + +f~ = [ f ] + [ \lambda x ] + +where f is the user supplied residuals, x are the model +parameters, and \lambda is the Tikhonov damping parameter + +Inputs: x - model parameters (size p) + params - pointer to fdfridge workspace + f - (output) (n+p) vector to store f~ +*/ + +static int +fdfridge_f(const gsl_vector * x, void * params, gsl_vector * f) +{ + int status; + gsl_multifit_fdfridge *w = (gsl_multifit_fdfridge *) params; + const size_t n = w->n; + const size_t p = w->p; + gsl_vector_view f_user = gsl_vector_subvector(f, 0, n); + gsl_vector_view f_tik = gsl_vector_subvector(f, n, p); + + /* call user callback function to get residual vector f */ + status = gsl_multifit_eval_wf(w->fdf, x, NULL, &f_user.vector); + if (status) + return status; + + if (w->L_diag) + { + /* store diag(L_diag) x in Tikhonov portion of f~ */ + gsl_vector_memcpy(&f_tik.vector, x); + gsl_vector_mul(&f_tik.vector, w->L_diag); + } + else if (w->L) + { + /* store Lx in Tikhonov portion of f~ */ + gsl_blas_dgemv(CblasNoTrans, 1.0, w->L, x, 0.0, &f_tik.vector); + } + else + { + /* store \lambda x in Tikhonov portion of f~ */ + gsl_vector_memcpy(&f_tik.vector, x); + gsl_vector_scale(&f_tik.vector, w->lambda); + } + + return GSL_SUCCESS; +} /* fdfridge_f() */ + +static int +fdfridge_df(const gsl_vector * x, void * params, gsl_matrix * J) +{ + int status; + gsl_multifit_fdfridge *w = (gsl_multifit_fdfridge *) params; + const size_t n = w->n; + const size_t p = w->p; + gsl_matrix_view J_user = gsl_matrix_submatrix(J, 0, 0, n, p); + gsl_matrix_view J_tik = gsl_matrix_submatrix(J, n, 0, p, p); + gsl_vector_view diag = gsl_matrix_diagonal(&J_tik.matrix); + + /* compute Jacobian */ + if (w->fdf->df) + status = gsl_multifit_eval_wdf(w->fdf, x, NULL, &J_user.matrix); + else + { + /* compute f(x) and then finite difference Jacobian */ + status = gsl_multifit_eval_wf(w->fdf, x, NULL, w->f); + status += gsl_multifit_fdfsolver_dif_df(x, NULL, w->fdf, w->f, + &J_user.matrix); + } + + if (status) + return status; + + if (w->L_diag) + { + /* store diag(L_diag) in Tikhonov portion of J */ + gsl_matrix_set_zero(&J_tik.matrix); + gsl_vector_memcpy(&diag.vector, w->L_diag); + } + else if (w->L) + { + /* store L in Tikhonov portion of J */ + gsl_matrix_memcpy(&J_tik.matrix, w->L); + } + else + { + /* store \lambda I_p in Tikhonov portion of J */ + gsl_matrix_set_zero(&J_tik.matrix); + gsl_vector_set_all(&diag.vector, w->lambda); + } + + return GSL_SUCCESS; +} /* fdfridge_df() */ diff --git a/gsl-2.5/multifit/fdfridge.lo b/gsl-2.5/multifit/fdfridge.lo new file mode 100644 index 00000000..674c26f3 --- /dev/null +++ b/gsl-2.5/multifit/fdfridge.lo @@ -0,0 +1,12 @@ +# fdfridge.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/fdfridge.o' + +# Name of the non-PIC object +non_pic_object='fdfridge.o' + diff --git a/gsl-2.5/multifit/fdfsolver.c b/gsl-2.5/multifit/fdfsolver.c new file mode 100644 index 00000000..88136e9e --- /dev/null +++ b/gsl-2.5/multifit/fdfsolver.c @@ -0,0 +1,380 @@ +/* multifit/fdfsolver.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include + +gsl_multifit_fdfsolver * +gsl_multifit_fdfsolver_alloc (const gsl_multifit_fdfsolver_type * T, + size_t n, size_t p) +{ + int status; + + gsl_multifit_fdfsolver * s; + + if (n < p) + { + GSL_ERROR_VAL ("insufficient data points, n < p", GSL_EINVAL, 0); + } + + s = (gsl_multifit_fdfsolver *) calloc (1, sizeof (gsl_multifit_fdfsolver)); + if (s == 0) + { + GSL_ERROR_VAL ("failed to allocate space for multifit solver struct", + GSL_ENOMEM, 0); + } + + s->x = gsl_vector_calloc (p); + + if (s->x == 0) + { + gsl_multifit_fdfsolver_free (s); + GSL_ERROR_VAL ("failed to allocate space for x", GSL_ENOMEM, 0); + } + + s->f = gsl_vector_calloc (n); + + if (s->f == 0) + { + gsl_multifit_fdfsolver_free (s); + GSL_ERROR_VAL ("failed to allocate space for f", GSL_ENOMEM, 0); + } + + s->dx = gsl_vector_calloc (p); + + if (s->dx == 0) + { + gsl_multifit_fdfsolver_free (s); + GSL_ERROR_VAL ("failed to allocate space for dx", GSL_ENOMEM, 0); + } + + s->g = gsl_vector_alloc (p); + + if (s->g == 0) + { + gsl_multifit_fdfsolver_free (s); + GSL_ERROR_VAL ("failed to allocate space for g", GSL_ENOMEM, 0); + } + + s->sqrt_wts = gsl_vector_calloc (n); + + if (s->sqrt_wts == 0) + { + gsl_multifit_fdfsolver_free (s); + GSL_ERROR_VAL ("failed to allocate space for sqrt_wts", GSL_ENOMEM, 0); + } + + s->state = calloc (1, T->size); + + if (s->state == 0) + { + gsl_multifit_fdfsolver_free (s); + GSL_ERROR_VAL ("failed to allocate space for multifit solver state", + GSL_ENOMEM, 0); + } + + s->type = T ; + + status = (s->type->alloc)(s->state, n, p); + + if (status != GSL_SUCCESS) + { + gsl_multifit_fdfsolver_free (s); + GSL_ERROR_VAL ("failed to set solver", status, 0); + } + + s->fdf = NULL; + + s->niter = 0; + + return s; +} + +int +gsl_multifit_fdfsolver_set (gsl_multifit_fdfsolver * s, + gsl_multifit_function_fdf * f, + const gsl_vector * x) +{ + return gsl_multifit_fdfsolver_wset(s, f, x, NULL); +} + +int +gsl_multifit_fdfsolver_wset (gsl_multifit_fdfsolver * s, + gsl_multifit_function_fdf * f, + const gsl_vector * x, + const gsl_vector * wts) +{ + const size_t n = s->f->size; + + if (n != f->n) + { + GSL_ERROR ("function size does not match solver", GSL_EBADLEN); + } + else if (s->x->size != x->size) + { + GSL_ERROR ("vector length does not match solver", GSL_EBADLEN); + } + else if (wts != NULL && n != wts->size) + { + GSL_ERROR ("weight vector length does not match solver", GSL_EBADLEN); + } + else + { + size_t i; + + s->fdf = f; + gsl_vector_memcpy(s->x, x); + s->niter = 0; + + if (wts) + { + for (i = 0; i < n; ++i) + { + double wi = gsl_vector_get(wts, i); + gsl_vector_set(s->sqrt_wts, i, sqrt(wi)); + } + } + else + gsl_vector_set_all(s->sqrt_wts, 1.0); + + return (s->type->set) (s->state, s->sqrt_wts, s->fdf, s->x, s->f, s->dx); + } +} + +int +gsl_multifit_fdfsolver_iterate (gsl_multifit_fdfsolver * s) +{ + int status = + (s->type->iterate) (s->state, s->sqrt_wts, s->fdf, s->x, s->f, s->dx); + + s->niter++; + + return status; +} + +/* +gsl_multifit_fdfsolver_driver() + Iterate the nonlinear least squares solver until completion + +Inputs: s - fdfsolver + maxiter - maximum iterations to allow + xtol - tolerance in step x + gtol - tolerance in gradient + ftol - tolerance in ||f|| + info - (output) info flag on why iteration terminated + 1 = stopped due to small step size ||dx| + 2 = stopped due to small gradient + 3 = stopped due to small change in f + GSL_ETOLX = ||dx|| has converged to within machine + precision (and xtol is too small) + GSL_ETOLG = ||g||_inf is smaller than machine + precision (gtol is too small) + GSL_ETOLF = change in ||f|| is smaller than machine + precision (ftol is too small) + +Return: GSL_SUCCESS if converged, GSL_MAXITER if maxiter exceeded without +converging +*/ +int +gsl_multifit_fdfsolver_driver (gsl_multifit_fdfsolver * s, + const size_t maxiter, + const double xtol, + const double gtol, + const double ftol, + int *info) +{ + int status; + size_t iter = 0; + + do + { + status = gsl_multifit_fdfsolver_iterate (s); + + /* + * if status is GSL_ENOPROG or GSL_SUCCESS, continue iterating, + * otherwise the method has converged with a GSL_ETOLx flag + */ + if (status != GSL_SUCCESS && status != GSL_ENOPROG) + break; + + /* test for convergence */ + status = gsl_multifit_fdfsolver_test(s, xtol, gtol, ftol, info); + } + while (status == GSL_CONTINUE && ++iter < maxiter); + + /* + * the following error codes mean that the solution has converged + * to within machine precision, so record the error code in info + * and return success + */ + if (status == GSL_ETOLF || status == GSL_ETOLX || status == GSL_ETOLG) + { + *info = status; + status = GSL_SUCCESS; + } + + /* check if max iterations reached */ + if (iter >= maxiter && status != GSL_SUCCESS) + status = GSL_EMAXITER; + + return status; +} /* gsl_multifit_fdfsolver_driver() */ + +int +gsl_multifit_fdfsolver_jac (gsl_multifit_fdfsolver * s, gsl_matrix * J) +{ + const size_t n = s->f->size; + const size_t p = s->x->size; + + if (n != J->size1 || p != J->size2) + { + GSL_ERROR ("Jacobian dimensions do not match solver", GSL_EBADLEN); + } + else + { + return (s->type->jac) (s->state, J); + } +} /* gsl_multifit_fdfsolver_jac() */ + +void +gsl_multifit_fdfsolver_free (gsl_multifit_fdfsolver * s) +{ + RETURN_IF_NULL (s); + + if (s->state) + { + (s->type->free) (s->state); + free (s->state); + } + + if (s->dx) + gsl_vector_free (s->dx); + + if (s->x) + gsl_vector_free (s->x); + + if (s->f) + gsl_vector_free (s->f); + + if (s->sqrt_wts) + gsl_vector_free (s->sqrt_wts); + + if (s->g) + gsl_vector_free (s->g); + + free (s); +} + +const char * +gsl_multifit_fdfsolver_name (const gsl_multifit_fdfsolver * s) +{ + return s->type->name; +} + +gsl_vector * +gsl_multifit_fdfsolver_position (const gsl_multifit_fdfsolver * s) +{ + return s->x; +} + +gsl_vector * +gsl_multifit_fdfsolver_residual (const gsl_multifit_fdfsolver * s) +{ + return s->f; +} + +size_t +gsl_multifit_fdfsolver_niter (const gsl_multifit_fdfsolver * s) +{ + return s->niter; +} + +/* +gsl_multifit_eval_wf() + Compute residual vector y with user callback function, and apply +weighting transform if given: + +y~ = sqrt(W) y + +Inputs: fdf - callback function + x - model parameters + swts - weight matrix sqrt(W) = sqrt(diag(w1,w2,...,wn)) + set to NULL for unweighted fit + y - (output) (weighted) residual vector + y_i = sqrt(w_i) f_i where f_i is unweighted residual +*/ + +int +gsl_multifit_eval_wf(gsl_multifit_function_fdf *fdf, const gsl_vector *x, + const gsl_vector *swts, gsl_vector *y) +{ + int s = ((*((fdf)->f)) (x, fdf->params, y)); + ++(fdf->nevalf); + + /* y <- sqrt(W) y */ + if (swts) + gsl_vector_mul(y, swts); + + return s; +} + +/* +gsl_multifit_eval_wdf() + Compute Jacobian matrix J with user callback function, and apply +weighting transform if given: + +J~ = sqrt(W) J + +Inputs: fdf - callback function + x - model parameters + swts - weight matrix W = diag(w1,w2,...,wn) + set to NULL for unweighted fit + dy - (output) (weighted) Jacobian matrix + dy = sqrt(W) dy where dy is unweighted Jacobian +*/ + +int +gsl_multifit_eval_wdf(gsl_multifit_function_fdf *fdf, const gsl_vector *x, + const gsl_vector *swts, gsl_matrix *dy) +{ + int status = ((*((fdf)->df)) (x, fdf->params, dy)); + + ++(fdf->nevaldf); + + /* J <- sqrt(W) J */ + if (swts) + { + const size_t n = swts->size; + size_t i; + + for (i = 0; i < n; ++i) + { + double swi = gsl_vector_get(swts, i); + gsl_vector_view v = gsl_matrix_row(dy, i); + + gsl_vector_scale(&v.vector, swi); + } + } + + return status; +} diff --git a/gsl-2.5/multifit/fdfsolver.lo b/gsl-2.5/multifit/fdfsolver.lo new file mode 100644 index 00000000..8d98782b --- /dev/null +++ b/gsl-2.5/multifit/fdfsolver.lo @@ -0,0 +1,12 @@ +# fdfsolver.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/fdfsolver.o' + +# Name of the non-PIC object +non_pic_object='fdfsolver.o' + diff --git a/gsl-2.5/multifit/fdjac.c b/gsl-2.5/multifit/fdjac.c new file mode 100644 index 00000000..f00881e6 --- /dev/null +++ b/gsl-2.5/multifit/fdjac.c @@ -0,0 +1,145 @@ +/* multifit/fdjac.c + * + * Copyright (C) 2013 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * + * This module contains routines for approximating the Jacobian with finite + * differences for nonlinear least-squares fitting. + */ + +#include +#include +#include +#include +#include + +static int fdjac(const gsl_vector *x, const gsl_vector *wts, + gsl_multifit_function_fdf *fdf, + const gsl_vector *f, gsl_matrix *J); + +/* +fdjac() + Compute approximate Jacobian using forward differences + +Inputs: x - parameter vector + wts - data weights + fdf - fdf struct + f - (input) vector of function values f_i(x) + J - (output) Jacobian matrix + +Return: success or error +*/ + +static int +fdjac(const gsl_vector *x, const gsl_vector *wts, + gsl_multifit_function_fdf *fdf, const gsl_vector *f, gsl_matrix *J) +{ + int status = 0; + size_t i, j; + double h; + const double epsfcn = 0.0; + double eps = sqrt(GSL_MAX(epsfcn, GSL_DBL_EPSILON)); + + for (j = 0; j < fdf->p; ++j) + { + double xj = gsl_vector_get(x, j); + + /* use column j of J as temporary storage for f(x + dx) */ + gsl_vector_view v = gsl_matrix_column(J, j); + + h = eps * fabs(xj); + if (h == 0.0) + h = eps; + + /* perturb x_j to compute forward difference */ + gsl_vector_set((gsl_vector *) x, j, xj + h); + + status += gsl_multifit_eval_wf (fdf, x, wts, &v.vector); + if (status) + return status; + + /* restore x_j */ + gsl_vector_set((gsl_vector *) x, j, xj); + + h = 1.0 / h; + for (i = 0; i < fdf->n; ++i) + { + double fnext = gsl_vector_get(&v.vector, i); + double fi = gsl_vector_get(f, i); + + gsl_matrix_set(J, i, j, (fnext - fi) * h); + } + } + + return status; +} /* fdjac() */ + +/* +gsl_multifit_fdfsolver_dif_df() + Compute approximate Jacobian using finite differences + +Inputs: x - parameter vector + wts - data weights (set to NULL if not needed) + fdf - fdf + f - (input) function values f_i(x) + J - (output) approximate Jacobian matrix + +Return: success or error +*/ + +int +gsl_multifit_fdfsolver_dif_df(const gsl_vector *x, const gsl_vector *wts, + gsl_multifit_function_fdf *fdf, + const gsl_vector *f, gsl_matrix *J) +{ + return fdjac(x, wts, fdf, f, J); +} /* gsl_multifit_fdfsolver_dif_df() */ + +#ifndef GSL_DISABLE_DEPRECATED + +/* +gsl_multifit_fdfsolver_dif_fdf() + Compute function values (analytic) and approximate Jacobian using finite +differences + +Inputs: x - parameter vector + fdf - fdf + f - (output) function values f_i(x) + J - (output) approximate Jacobian matrix + +Return: success or error +*/ + +int +gsl_multifit_fdfsolver_dif_fdf(const gsl_vector *x, + gsl_multifit_function_fdf *fdf, + gsl_vector *f, gsl_matrix *J) +{ + int status = 0; + + status = gsl_multifit_eval_wf(fdf, x, NULL, f); + if (status) + return status; + + status = fdjac(x, NULL, fdf, f, J); + if (status) + return status; + + return status; +} /* gsl_multifit_fdfsolver_dif_fdf() */ + +#endif /* !GSL_DISABLE_DEPRECATED */ diff --git a/gsl-2.5/multifit/fdjac.lo b/gsl-2.5/multifit/fdjac.lo new file mode 100644 index 00000000..920371ab --- /dev/null +++ b/gsl-2.5/multifit/fdjac.lo @@ -0,0 +1,12 @@ +# fdjac.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/fdjac.o' + +# Name of the non-PIC object +non_pic_object='fdjac.o' + diff --git a/gsl-2.5/multifit/fsolver.c b/gsl-2.5/multifit/fsolver.c new file mode 100644 index 00000000..f0613c07 --- /dev/null +++ b/gsl-2.5/multifit/fsolver.c @@ -0,0 +1,180 @@ +/* multifit/fsolver.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include + +gsl_multifit_fsolver * +gsl_multifit_fsolver_alloc (const gsl_multifit_fsolver_type * T, + size_t n, size_t p) +{ + int status; + + gsl_multifit_fsolver * s; + + if (n < p) + { + GSL_ERROR_VAL ("insufficient data points, n < p", GSL_EINVAL, 0); + } + + s = (gsl_multifit_fsolver *) malloc (sizeof (gsl_multifit_fsolver)); + + if (s == 0) + { + GSL_ERROR_VAL ("failed to allocate space for multifit solver struct", + GSL_ENOMEM, 0); + } + + s->x = gsl_vector_calloc (p); + + if (s->x == 0) + { + free (s); + GSL_ERROR_VAL ("failed to allocate space for x", GSL_ENOMEM, 0); + } + + s->f = gsl_vector_calloc (n); + + if (s->f == 0) + { + gsl_vector_free (s->x); + free (s); + GSL_ERROR_VAL ("failed to allocate space for f", GSL_ENOMEM, 0); + } + + s->dx = gsl_vector_calloc (p); + + if (s->dx == 0) + { + gsl_vector_free (s->x); + gsl_vector_free (s->f); + free (s); + GSL_ERROR_VAL ("failed to allocate space for dx", GSL_ENOMEM, 0); + } + + s->state = malloc (T->size); + + if (s->state == 0) + { + gsl_vector_free (s->dx); + gsl_vector_free (s->x); + gsl_vector_free (s->f); + free (s); /* exception in constructor, avoid memory leak */ + + GSL_ERROR_VAL ("failed to allocate space for multifit solver state", + GSL_ENOMEM, 0); + } + + s->type = T ; + + status = (s->type->alloc)(s->state, n, p); + + if (status != GSL_SUCCESS) + { + (s->type->free)(s->state); + free (s->state); + gsl_vector_free (s->dx); + gsl_vector_free (s->x); + gsl_vector_free (s->f); + free (s); /* exception in constructor, avoid memory leak */ + + GSL_ERROR_VAL ("failed to set solver", status, 0); + } + + s->function = NULL; + + return s; +} + +int +gsl_multifit_fsolver_set (gsl_multifit_fsolver * s, + gsl_multifit_function * f, + const gsl_vector * x) +{ + if (s->f->size != f->n) + { + GSL_ERROR ("function size does not match solver", GSL_EBADLEN); + } + + if (s->x->size != x->size) + { + GSL_ERROR ("vector length does not match solver", GSL_EBADLEN); + } + + s->function = f; + gsl_vector_memcpy(s->x,x); + + return (s->type->set) (s->state, s->function, s->x, s->f, s->dx); +} + +int +gsl_multifit_fsolver_iterate (gsl_multifit_fsolver * s) +{ + return (s->type->iterate) (s->state, s->function, s->x, s->f, s->dx); +} + +int +gsl_multifit_fsolver_driver (gsl_multifit_fsolver * s, + const size_t maxiter, + const double epsabs, + const double epsrel) +{ + int status; + size_t iter = 0; + + do + { + status = gsl_multifit_fsolver_iterate (s); + if (status) + break; + + /* test for convergence */ + status = gsl_multifit_test_delta (s->dx, s->x, epsabs, epsrel); + } + while (status == GSL_CONTINUE && ++iter < maxiter); + + return status; +} /* gsl_multifit_fdfsolver_driver() */ + +void +gsl_multifit_fsolver_free (gsl_multifit_fsolver * s) +{ + RETURN_IF_NULL (s); + (s->type->free) (s->state); + free (s->state); + gsl_vector_free (s->dx); + gsl_vector_free (s->x); + gsl_vector_free (s->f); + free (s); +} + +const char * +gsl_multifit_fsolver_name (const gsl_multifit_fsolver * s) +{ + return s->type->name; +} + +gsl_vector * +gsl_multifit_fsolver_position (const gsl_multifit_fsolver * s) +{ + return s->x; +} diff --git a/gsl-2.5/multifit/fsolver.lo b/gsl-2.5/multifit/fsolver.lo new file mode 100644 index 00000000..01f433d3 --- /dev/null +++ b/gsl-2.5/multifit/fsolver.lo @@ -0,0 +1,12 @@ +# fsolver.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/fsolver.o' + +# Name of the non-PIC object +non_pic_object='fsolver.o' + diff --git a/gsl-2.5/multifit/gcv.c b/gsl-2.5/multifit/gcv.c new file mode 100644 index 00000000..2b28535e --- /dev/null +++ b/gsl-2.5/multifit/gcv.c @@ -0,0 +1,397 @@ +/* multifit/gcv.c + * + * Copyright (C) 2016 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* + * References: + * + * [1] P. C. Hansen, "Discrete Inverse Problems: Insight and Algorithms," + * SIAM Press, 2010. + */ + +#include +#include +#include +#include +#include +#include +#include +#include + +typedef struct +{ + const gsl_vector * S; + const gsl_vector * UTy; + double delta0; + size_t np; + gsl_vector * workp; +} gcv_params; + +static double gcv_func(double lambda, void * params); + +/* +gsl_multifit_linear_gcv_init() + Initialize Generalized Cross Validation parameters + +Inputs: y - right hand side vector + reg_param - (output) regularization parameters + UTy - (output) U^T y + delta0 - (output) delta0 + work - workspace +*/ + +int +gsl_multifit_linear_gcv_init(const gsl_vector * y, + gsl_vector * reg_param, + gsl_vector * UTy, + double * delta0, + gsl_multifit_linear_workspace * work) +{ + const size_t n = y->size; + + if (n != work->n) + { + GSL_ERROR("y vector does not match workspace", GSL_EBADLEN); + } + else if (UTy->size != work->p) + { + GSL_ERROR ("UTy vector does not match workspace", GSL_EBADLEN); + } + else + { + const size_t p = work->p; + + gsl_matrix_view U = gsl_matrix_submatrix(work->A, 0, 0, n, p); + gsl_vector_view S = gsl_vector_subvector(work->S, 0, p); + + const double smax = gsl_vector_get(&S.vector, 0); + const double smin = gsl_vector_get(&S.vector, p - 1); + + double dr; /* residual error from projection */ + + double normy = gsl_blas_dnrm2(y); + double normUTy; + + /* compute projection UTy = U^T y */ + gsl_blas_dgemv (CblasTrans, 1.0, &U.matrix, y, 0.0, UTy); + normUTy = gsl_blas_dnrm2(UTy); + + /* dr = ||y||^2 - ||U^T y||^2 */ + dr = (normy + normUTy) * (normy - normUTy); + + /* calculate regularization parameters */ + gsl_multifit_linear_lreg(smin, smax, reg_param); + + if (n > p && dr > 0.0) + *delta0 = dr; + else + *delta0 = 0.0; + + return GSL_SUCCESS; + } +} + +/* +gsl_multifit_linear_gcv_curve() + Calculate Generalized Cross Validation curve for a set +of regularization parameters + +Inputs: reg_param - regularization parameters + UTy - U^T y vector, size p + delta0 - delta0 + G - (output) GCV curve values + work - workspace +*/ + +int +gsl_multifit_linear_gcv_curve(const gsl_vector * reg_param, + const gsl_vector * UTy, + const double delta0, + gsl_vector * G, + gsl_multifit_linear_workspace * work) +{ + const size_t n = work->n; + const size_t p = work->p; + const size_t N = reg_param->size; /* number of points on GCV curve */ + + if (UTy->size != p) + { + GSL_ERROR("UTy vector does not match workspace", GSL_EBADLEN); + } + else if (G->size != N) + { + GSL_ERROR ("size of reg_param and G vectors do not match", + GSL_EBADLEN); + } + else + { + size_t i; + + gsl_vector_view S = gsl_vector_subvector(work->S, 0, p); + gsl_vector_view workp = gsl_matrix_subcolumn(work->QSI, 0, 0, p); + + gcv_params params; + + params.S = &S.vector; + params.UTy = UTy; + params.delta0 = delta0; + params.np = n - p; + params.workp = &workp.vector; + + for (i = 0; i < N; ++i) + { + double lambdai = gsl_vector_get(reg_param, i); + double Gi = gcv_func(lambdai, ¶ms); + + gsl_vector_set(G, i, Gi); + } + + return GSL_SUCCESS; + } +} + +/* +gsl_multifit_linear_gcv_min() + Find regularization parameter which minimizes GCV curve + +Inputs: reg_param - regularization parameters + UTy - U^T y vector, size p + G - GCV curve values + delta0 - delta0 + lambda - (output) optimal regularization parameter + work - workspace +*/ + +int +gsl_multifit_linear_gcv_min(const gsl_vector * reg_param, + const gsl_vector * UTy, + const gsl_vector * G, + const double delta0, + double * lambda, + gsl_multifit_linear_workspace * work) +{ + const size_t n = work->n; + const size_t p = work->p; + const size_t npts = reg_param->size; /* number of points on GCV curve */ + + if (UTy->size != p) + { + GSL_ERROR("UTy vector does not match workspace", GSL_EBADLEN); + } + else if (G->size != npts) + { + GSL_ERROR ("size of reg_param and G vectors do not match", + GSL_EBADLEN); + } + else + { + int status; + const size_t max_iter = 500; + const double tol = 1.0e-4; + gsl_vector_view S = gsl_vector_subvector(work->S, 0, p); + gsl_vector_view workp = gsl_matrix_subcolumn(work->QSI, 0, 0, p); + gcv_params params; + int idxG = (int) gsl_vector_min_index(G); + double a = gsl_vector_get(reg_param, GSL_MIN(idxG + 1, (int) npts - 1)); + double b = gsl_vector_get(reg_param, GSL_MAX(idxG - 1, 0)); + double m = gsl_vector_get(reg_param, idxG); + size_t iter = 0; + gsl_function F; + + /* XXX FIXME */ + gsl_min_fminimizer *min_workspace_p; + + if (idxG == 0 || idxG == ((int)npts - 1)) + { + /* the minimum is an endpoint of the curve, no need to search */ + *lambda = m; + return GSL_SUCCESS; + } + + /* XXX FIXME */ + min_workspace_p = gsl_min_fminimizer_alloc(gsl_min_fminimizer_brent); + + params.S = &S.vector; + params.UTy = UTy; + params.delta0 = delta0; + params.np = n - p; + params.workp = &workp.vector; + + F.function = gcv_func; + F.params = ¶ms; + + gsl_min_fminimizer_set(min_workspace_p, &F, m, a, b); + + do + { + iter++; + status = gsl_min_fminimizer_iterate(min_workspace_p); + + a = gsl_min_fminimizer_x_lower(min_workspace_p); + b = gsl_min_fminimizer_x_upper(min_workspace_p); + + status = gsl_min_test_interval(a, b, 0.0, tol); + } + while (status == GSL_CONTINUE && iter < max_iter); + + if (status == GSL_SUCCESS) + *lambda = gsl_min_fminimizer_minimum(min_workspace_p); + else + status = GSL_EMAXITER; + + gsl_min_fminimizer_free(min_workspace_p); + + return status; + } +} + +/* +gsl_multifit_linear_gcv_calc() + Calculate GCV function G(lambda) for given lambda + +Inputs: reg_param - regularization parameters + UTy - U^T y vector, size p + delta0 - delta0 + G - (output) GCV curve values + work - workspace +*/ + +double +gsl_multifit_linear_gcv_calc(const double lambda, + const gsl_vector * UTy, + const double delta0, + gsl_multifit_linear_workspace * work) +{ + const size_t n = work->n; + const size_t p = work->p; + + if (UTy->size != p) + { + GSL_ERROR_VAL("UTy vector does not match workspace", GSL_EBADLEN, 0.0); + } + else + { + gsl_vector_view S = gsl_vector_subvector(work->S, 0, p); + gsl_vector_view workp = gsl_matrix_subcolumn(work->QSI, 0, 0, p); + gcv_params params; + double G; + + params.S = &S.vector; + params.UTy = UTy; + params.delta0 = delta0; + params.np = n - p; + params.workp = &workp.vector; + + G = gcv_func(lambda, ¶ms); + + return G; + } +} + +/* +gsl_multifit_linear_gcv() + Calculate Generalized Cross Validation curve for a set +of regularization parameters + +Inputs: y - right hand side vector + reg_param - (output) regularization parameters + G - (output) GCV curve values + lambda - (output) optimal regularization parameter which + minimizes GCV curve + G_lambda - (output) G(lambda) value at optimal parameter + work - workspace +*/ + +int +gsl_multifit_linear_gcv(const gsl_vector * y, + gsl_vector * reg_param, + gsl_vector * G, + double * lambda, + double * G_lambda, + gsl_multifit_linear_workspace * work) +{ + const size_t n = y->size; + const size_t N = G->size; /* number of points on GCV curve */ + + if (n != work->n) + { + GSL_ERROR("y vector does not match workspace", GSL_EBADLEN); + } + else if (reg_param->size != N) + { + GSL_ERROR ("size of reg_param and G vectors do not match", + GSL_EBADLEN); + } + else + { + int status; + const size_t p = work->p; + gsl_vector_view UTy = gsl_vector_subvector(work->xt, 0, p); + double delta0; + + status = gsl_multifit_linear_gcv_init(y, reg_param, &UTy.vector, &delta0, work); + if (status) + return status; + + status = gsl_multifit_linear_gcv_curve(reg_param, &UTy.vector, delta0, G, work); + if (status) + return status; + + status = gsl_multifit_linear_gcv_min(reg_param, &UTy.vector, G, delta0, lambda, work); + if (status) + return status; + + *G_lambda = gsl_multifit_linear_gcv_calc(*lambda, &UTy.vector, delta0, work); + + return GSL_SUCCESS; + } +} + +static double +gcv_func(double lambda, void * params) +{ + gcv_params * par = (gcv_params *) params; + const gsl_vector *S = par->S; + const gsl_vector *UTy = par->UTy; + double delta0 = par->delta0; + size_t np = par->np; + gsl_vector *workp = par->workp; + const size_t p = S->size; + size_t i; + double lambda_sq = lambda * lambda; + double G, d, norm; + double sumf = 0.0; + + /* compute workp = 1 - filter_factors */ + for (i = 0; i < p; ++i) + { + double si = gsl_vector_get(S, i); + double fi = lambda_sq / (si * si + lambda_sq); + gsl_vector_set(workp, i, fi); + sumf += fi; + } + + d = (double)np + sumf; + + gsl_vector_mul(workp, UTy); + norm = gsl_blas_dnrm2(workp); + + G = (norm*norm + delta0) / (d * d); + + return G; +} diff --git a/gsl-2.5/multifit/gcv.lo b/gsl-2.5/multifit/gcv.lo new file mode 100644 index 00000000..db46c59c --- /dev/null +++ b/gsl-2.5/multifit/gcv.lo @@ -0,0 +1,12 @@ +# gcv.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/gcv.o' + +# Name of the non-PIC object +non_pic_object='gcv.o' + diff --git a/gsl-2.5/multifit/gradient.c b/gsl-2.5/multifit/gradient.c new file mode 100644 index 00000000..72e1631c --- /dev/null +++ b/gsl-2.5/multifit/gradient.c @@ -0,0 +1,33 @@ +/* multifit/gradient.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include + +int +gsl_multifit_gradient (const gsl_matrix * J, const gsl_vector * f, + gsl_vector * g) +{ + int status = gsl_blas_dgemv (CblasTrans, 1.0, J, f, 0.0, g); + return status; +} + diff --git a/gsl-2.5/multifit/gradient.lo b/gsl-2.5/multifit/gradient.lo new file mode 100644 index 00000000..6883ea54 --- /dev/null +++ b/gsl-2.5/multifit/gradient.lo @@ -0,0 +1,12 @@ +# gradient.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/gradient.o' + +# Name of the non-PIC object +non_pic_object='gradient.o' + diff --git a/gsl-2.5/multifit/gsl_multifit.h b/gsl-2.5/multifit/gsl_multifit.h new file mode 100644 index 00000000..42cbc54c --- /dev/null +++ b/gsl-2.5/multifit/gsl_multifit.h @@ -0,0 +1,380 @@ +/* multifit/gsl_multifit.h + * + * Copyright (C) 2000, 2007, 2010 Brian Gough + * Copyright (C) 2013, Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_MULTIFIT_H__ +#define __GSL_MULTIFIT_H__ + +#include +#include +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +typedef struct +{ + size_t nmax; /* maximum number of observations */ + size_t pmax; /* maximum number of parameters */ + size_t n; /* number of observations in current SVD decomposition */ + size_t p; /* number of parameters in current SVD decomposition */ + gsl_matrix * A; /* least squares matrix for SVD, n-by-p */ + gsl_matrix * Q; + gsl_matrix * QSI; + gsl_vector * S; + gsl_vector * t; + gsl_vector * xt; + gsl_vector * D; + double rcond; /* reciprocal condition number */ +} +gsl_multifit_linear_workspace; + +gsl_multifit_linear_workspace * +gsl_multifit_linear_alloc (const size_t n, const size_t p); + +void +gsl_multifit_linear_free (gsl_multifit_linear_workspace * w); + +int +gsl_multifit_linear (const gsl_matrix * X, + const gsl_vector * y, + gsl_vector * c, + gsl_matrix * cov, + double * chisq, + gsl_multifit_linear_workspace * work); + +int +gsl_multifit_linear_tsvd (const gsl_matrix * X, + const gsl_vector * y, + const double tol, + gsl_vector * c, + gsl_matrix * cov, + double * chisq, + size_t * rank, + gsl_multifit_linear_workspace * work); + +int +gsl_multifit_linear_svd (const gsl_matrix * X, + gsl_multifit_linear_workspace * work); + +int +gsl_multifit_linear_bsvd (const gsl_matrix * X, + gsl_multifit_linear_workspace * work); + +size_t +gsl_multifit_linear_rank(const double tol, const gsl_multifit_linear_workspace * work); + +int +gsl_multifit_linear_solve (const double lambda, + const gsl_matrix * X, + const gsl_vector * y, + gsl_vector * c, + double *rnorm, + double *snorm, + gsl_multifit_linear_workspace * work); + +int +gsl_multifit_linear_applyW(const gsl_matrix * X, + const gsl_vector * w, + const gsl_vector * y, + gsl_matrix * WX, + gsl_vector * Wy); + +int +gsl_multifit_linear_stdform1 (const gsl_vector * L, + const gsl_matrix * X, + const gsl_vector * y, + gsl_matrix * Xs, + gsl_vector * ys, + gsl_multifit_linear_workspace * work); + +int +gsl_multifit_linear_wstdform1 (const gsl_vector * L, + const gsl_matrix * X, + const gsl_vector * w, + const gsl_vector * y, + gsl_matrix * Xs, + gsl_vector * ys, + gsl_multifit_linear_workspace * work); + +int +gsl_multifit_linear_L_decomp (gsl_matrix * L, gsl_vector * tau); + +int +gsl_multifit_linear_stdform2 (const gsl_matrix * LQR, + const gsl_vector * Ltau, + const gsl_matrix * X, + const gsl_vector * y, + gsl_matrix * Xs, + gsl_vector * ys, + gsl_matrix * M, + gsl_multifit_linear_workspace * work); + +int +gsl_multifit_linear_wstdform2 (const gsl_matrix * LQR, + const gsl_vector * Ltau, + const gsl_matrix * X, + const gsl_vector * w, + const gsl_vector * y, + gsl_matrix * Xs, + gsl_vector * ys, + gsl_matrix * M, + gsl_multifit_linear_workspace * work); + +int +gsl_multifit_linear_genform1 (const gsl_vector * L, + const gsl_vector * cs, + gsl_vector * c, + gsl_multifit_linear_workspace * work); + +int +gsl_multifit_linear_genform2 (const gsl_matrix * LQR, + const gsl_vector * Ltau, + const gsl_matrix * X, + const gsl_vector * y, + const gsl_vector * cs, + const gsl_matrix * M, + gsl_vector * c, + gsl_multifit_linear_workspace * work); + +int +gsl_multifit_linear_wgenform2 (const gsl_matrix * LQR, + const gsl_vector * Ltau, + const gsl_matrix * X, + const gsl_vector * w, + const gsl_vector * y, + const gsl_vector * cs, + const gsl_matrix * M, + gsl_vector * c, + gsl_multifit_linear_workspace * work); + +int +gsl_multifit_linear_lreg (const double smin, const double smax, + gsl_vector * reg_param); + +int +gsl_multifit_linear_lcurve (const gsl_vector * y, + gsl_vector * reg_param, + gsl_vector * rho, gsl_vector * eta, + gsl_multifit_linear_workspace * work); + +int +gsl_multifit_linear_lcorner(const gsl_vector *rho, + const gsl_vector *eta, + size_t *idx); + +int +gsl_multifit_linear_lcorner2(const gsl_vector *reg_param, + const gsl_vector *eta, + size_t *idx); + +int +gsl_multifit_linear_Lk(const size_t p, const size_t k, gsl_matrix *L); + +int +gsl_multifit_linear_Lsobolev(const size_t p, const size_t kmax, + const gsl_vector *alpha, gsl_matrix *L, + gsl_multifit_linear_workspace *work); + +int +gsl_multifit_wlinear (const gsl_matrix * X, + const gsl_vector * w, + const gsl_vector * y, + gsl_vector * c, + gsl_matrix * cov, + double * chisq, + gsl_multifit_linear_workspace * work); + +int +gsl_multifit_wlinear_tsvd (const gsl_matrix * X, + const gsl_vector * w, + const gsl_vector * y, + const double tol, + gsl_vector * c, + gsl_matrix * cov, + double * chisq, + size_t * rank, + gsl_multifit_linear_workspace * work); + +int +gsl_multifit_wlinear_svd (const gsl_matrix * X, + const gsl_vector * w, + const gsl_vector * y, + double tol, + size_t * rank, + gsl_vector * c, + gsl_matrix * cov, + double *chisq, + gsl_multifit_linear_workspace * work); + +int +gsl_multifit_wlinear_usvd (const gsl_matrix * X, + const gsl_vector * w, + const gsl_vector * y, + double tol, + size_t * rank, + gsl_vector * c, + gsl_matrix * cov, + double *chisq, + gsl_multifit_linear_workspace * work); + +int +gsl_multifit_linear_est (const gsl_vector * x, + const gsl_vector * c, + const gsl_matrix * cov, double *y, double *y_err); + +double +gsl_multifit_linear_rcond (const gsl_multifit_linear_workspace * w); + +int +gsl_multifit_linear_residuals (const gsl_matrix *X, const gsl_vector *y, + const gsl_vector *c, gsl_vector *r); + +/* gcv.c */ +int +gsl_multifit_linear_gcv_init(const gsl_vector * y, + gsl_vector * reg_param, + gsl_vector * UTy, + double * delta0, + gsl_multifit_linear_workspace * work); + +int +gsl_multifit_linear_gcv_curve(const gsl_vector * reg_param, + const gsl_vector * UTy, + const double delta0, + gsl_vector * G, + gsl_multifit_linear_workspace * work); + +int +gsl_multifit_linear_gcv_min(const gsl_vector * reg_param, + const gsl_vector * UTy, + const gsl_vector * G, + const double delta0, + double * lambda, + gsl_multifit_linear_workspace * work); + +double +gsl_multifit_linear_gcv_calc(const double lambda, + const gsl_vector * UTy, + const double delta0, + gsl_multifit_linear_workspace * work); + +int +gsl_multifit_linear_gcv(const gsl_vector * y, + gsl_vector * reg_param, + gsl_vector * G, + double * lambda, + double * G_lambda, + gsl_multifit_linear_workspace * work); + +typedef struct +{ + const char * name; /* method name */ + int (*wfun)(const gsl_vector *r, gsl_vector *w); + int (*psi_deriv)(const gsl_vector *r, gsl_vector *dpsi); + double tuning_default; /* default tuning constant */ +} gsl_multifit_robust_type; + +typedef struct +{ + double sigma_ols; /* OLS estimate of sigma */ + double sigma_mad; /* MAD estimate of sigma */ + double sigma_rob; /* robust estimate of sigma */ + double sigma; /* final estimate of sigma */ + double Rsq; /* R^2 coefficient of determination */ + double adj_Rsq; /* degree of freedom adjusted R^2 */ + double rmse; /* root mean squared error */ + double sse; /* residual sum of squares */ + size_t dof; /* degrees of freedom */ + size_t numit; /* number of iterations */ + gsl_vector *weights; /* final weights */ + gsl_vector *r; /* final residuals y - X c */ +} gsl_multifit_robust_stats; + +typedef struct +{ + size_t n; /* number of observations */ + size_t p; /* number of parameters */ + size_t numit; /* number of iterations */ + size_t maxiter; /* maximum iterations */ + const gsl_multifit_robust_type *type; + double tune; /* tuning parameter */ + + gsl_vector *r; /* residuals at current iteration */ + gsl_vector *weights; /* weights at current iteration */ + gsl_vector *c_prev; /* coefficients from previous iteration */ + gsl_vector *resfac; /* multiplicative factors for residuals */ + + gsl_vector *psi; /* psi(r) */ + gsl_vector *dpsi; /* psi'(r) */ + + gsl_matrix *QSI; /* Q S^{-1} of original matrix X */ + gsl_vector *D; /* balancing parameters of original matrix X */ + + gsl_vector *workn; /* workspace of length n */ + + gsl_multifit_robust_stats stats; /* various statistics */ + + gsl_multifit_linear_workspace *multifit_p; +} gsl_multifit_robust_workspace; + +/* available types */ +GSL_VAR const gsl_multifit_robust_type * gsl_multifit_robust_default; +GSL_VAR const gsl_multifit_robust_type * gsl_multifit_robust_bisquare; +GSL_VAR const gsl_multifit_robust_type * gsl_multifit_robust_cauchy; +GSL_VAR const gsl_multifit_robust_type * gsl_multifit_robust_fair; +GSL_VAR const gsl_multifit_robust_type * gsl_multifit_robust_huber; +GSL_VAR const gsl_multifit_robust_type * gsl_multifit_robust_ols; +GSL_VAR const gsl_multifit_robust_type * gsl_multifit_robust_welsch; + +gsl_multifit_robust_workspace *gsl_multifit_robust_alloc(const gsl_multifit_robust_type *T, + const size_t n, const size_t p); +void gsl_multifit_robust_free(gsl_multifit_robust_workspace *w); +int gsl_multifit_robust_tune(const double tune, + gsl_multifit_robust_workspace *w); +int gsl_multifit_robust_maxiter(const size_t maxiter, + gsl_multifit_robust_workspace *w); +const char *gsl_multifit_robust_name(const gsl_multifit_robust_workspace *w); +gsl_multifit_robust_stats gsl_multifit_robust_statistics(const gsl_multifit_robust_workspace *w); +int gsl_multifit_robust_weights(const gsl_vector *r, gsl_vector *wts, + gsl_multifit_robust_workspace *w); +int gsl_multifit_robust(const gsl_matrix * X, const gsl_vector * y, + gsl_vector * c, gsl_matrix *cov, + gsl_multifit_robust_workspace *w); +int gsl_multifit_robust_est(const gsl_vector * x, const gsl_vector * c, + const gsl_matrix * cov, double *y, double *y_err); +int gsl_multifit_robust_residuals(const gsl_matrix * X, + const gsl_vector * y, + const gsl_vector * c, gsl_vector * r, + gsl_multifit_robust_workspace * w); + +__END_DECLS + +#endif /* __GSL_MULTIFIT_H__ */ diff --git a/gsl-2.5/multifit/gsl_multifit_nlin.h b/gsl-2.5/multifit/gsl_multifit_nlin.h new file mode 100644 index 00000000..b0dd06e7 --- /dev/null +++ b/gsl-2.5/multifit/gsl_multifit_nlin.h @@ -0,0 +1,275 @@ +/* multifit_nlin/gsl_multifit_nlin.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_MULTIFIT_NLIN_H__ +#define __GSL_MULTIFIT_NLIN_H__ + +#include +#include +#include +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +int gsl_multifit_gradient (const gsl_matrix * J, const gsl_vector * f, + gsl_vector * g); + +int gsl_multifit_covar (const gsl_matrix * J, const double epsrel, gsl_matrix * covar); +int gsl_multifit_covar_QRPT (gsl_matrix * r, gsl_permutation * perm, + const double epsrel, gsl_matrix * covar); + + +/* Definition of vector-valued functions with parameters based on gsl_vector */ + +struct gsl_multifit_function_struct +{ + int (* f) (const gsl_vector * x, void * params, gsl_vector * f); + size_t n; /* number of functions */ + size_t p; /* number of independent variables */ + void * params; +}; + +typedef struct gsl_multifit_function_struct gsl_multifit_function ; + +#define GSL_MULTIFIT_FN_EVAL(F,x,y) (*((F)->f))(x,(F)->params,(y)) + +typedef struct + { + const char *name; + size_t size; + int (*alloc) (void *state, size_t n, size_t p); + int (*set) (void *state, gsl_multifit_function * function, gsl_vector * x, gsl_vector * f, gsl_vector * dx); + int (*iterate) (void *state, gsl_multifit_function * function, gsl_vector * x, gsl_vector * f, gsl_vector * dx); + void (*free) (void *state); + } +gsl_multifit_fsolver_type; + +typedef struct + { + const gsl_multifit_fsolver_type * type; + gsl_multifit_function * function ; + gsl_vector * x ; + gsl_vector * f ; + gsl_vector * dx ; + void *state; + } +gsl_multifit_fsolver; + +gsl_multifit_fsolver * +gsl_multifit_fsolver_alloc (const gsl_multifit_fsolver_type * T, + size_t n, size_t p); + +void gsl_multifit_fsolver_free (gsl_multifit_fsolver * s); + +int gsl_multifit_fsolver_set (gsl_multifit_fsolver * s, + gsl_multifit_function * f, + const gsl_vector * x); + +int gsl_multifit_fsolver_iterate (gsl_multifit_fsolver * s); + +int gsl_multifit_fsolver_driver (gsl_multifit_fsolver * s, + const size_t maxiter, + const double epsabs, const double epsrel); + +const char * gsl_multifit_fsolver_name (const gsl_multifit_fsolver * s); +gsl_vector * gsl_multifit_fsolver_position (const gsl_multifit_fsolver * s); + +/* Definition of vector-valued functions and gradient with parameters + based on gsl_vector */ + +struct gsl_multifit_function_fdf_struct +{ + int (* f) (const gsl_vector * x, void * params, gsl_vector * f); + int (* df) (const gsl_vector * x, void * params, gsl_matrix * df); + int (* fdf) (const gsl_vector * x, void * params, gsl_vector * f, gsl_matrix *df); + size_t n; /* number of functions */ + size_t p; /* number of independent variables */ + void * params; /* user parameters */ + size_t nevalf; /* number of function evaluations */ + size_t nevaldf; /* number of Jacobian evaluations */ +}; + +typedef struct gsl_multifit_function_fdf_struct gsl_multifit_function_fdf ; + +typedef struct + { + const char *name; + size_t size; + int (*alloc) (void *state, size_t n, size_t p); + int (*set) (void *state, const gsl_vector * wts, + gsl_multifit_function_fdf * fdf, gsl_vector * x, + gsl_vector * f, gsl_vector * dx); + int (*iterate) (void *state, const gsl_vector * wts, + gsl_multifit_function_fdf * fdf, gsl_vector * x, + gsl_vector * f, gsl_vector * dx); + int (*gradient) (void *state, gsl_vector * g); + int (*jac) (void *state, gsl_matrix * J); + void (*free) (void *state); + } +gsl_multifit_fdfsolver_type; + +typedef struct + { + const gsl_multifit_fdfsolver_type * type; + gsl_multifit_function_fdf * fdf ; + gsl_vector * x; /* parameter values x */ + gsl_vector * f; /* residual vector f(x) */ + gsl_vector * dx; /* step dx */ + gsl_vector * g; /* gradient J^T f */ + gsl_vector * sqrt_wts; /* sqrt(wts) */ + size_t niter; /* number of iterations performed */ + void *state; + } +gsl_multifit_fdfsolver; + + +gsl_multifit_fdfsolver * +gsl_multifit_fdfsolver_alloc (const gsl_multifit_fdfsolver_type * T, + size_t n, size_t p); + +int +gsl_multifit_fdfsolver_set (gsl_multifit_fdfsolver * s, + gsl_multifit_function_fdf * fdf, + const gsl_vector * x); +int gsl_multifit_fdfsolver_wset (gsl_multifit_fdfsolver * s, + gsl_multifit_function_fdf * f, + const gsl_vector * x, + const gsl_vector * wts); + +int +gsl_multifit_fdfsolver_iterate (gsl_multifit_fdfsolver * s); + +int gsl_multifit_fdfsolver_driver (gsl_multifit_fdfsolver * s, + const size_t maxiter, + const double xtol, + const double gtol, + const double ftol, + int *info); + +int gsl_multifit_fdfsolver_jac (gsl_multifit_fdfsolver * s, + gsl_matrix * J); + +void +gsl_multifit_fdfsolver_free (gsl_multifit_fdfsolver * s); + +const char * gsl_multifit_fdfsolver_name (const gsl_multifit_fdfsolver * s); +gsl_vector * gsl_multifit_fdfsolver_position (const gsl_multifit_fdfsolver * s); +gsl_vector * gsl_multifit_fdfsolver_residual (const gsl_multifit_fdfsolver * s); +size_t gsl_multifit_fdfsolver_niter (const gsl_multifit_fdfsolver * s); +int gsl_multifit_eval_wf(gsl_multifit_function_fdf *fdf, + const gsl_vector *x, const gsl_vector *wts, + gsl_vector *y); +int gsl_multifit_eval_wdf(gsl_multifit_function_fdf *fdf, + const gsl_vector *x, const gsl_vector *wts, + gsl_matrix *dy); + +int gsl_multifit_fdfsolver_test (const gsl_multifit_fdfsolver * s, + const double xtol, + const double gtol, + const double ftol, int *info); +int gsl_multifit_test_delta (const gsl_vector * dx, const gsl_vector * x, + double epsabs, double epsrel); + +int gsl_multifit_test_gradient (const gsl_vector * g, double epsabs); + +int gsl_multifit_fdfsolver_dif_df(const gsl_vector *x, + const gsl_vector *wts, + gsl_multifit_function_fdf *fdf, + const gsl_vector *f, gsl_matrix *J); +int gsl_multifit_fdfsolver_dif_fdf(const gsl_vector *x, gsl_multifit_function_fdf *fdf, + gsl_vector *f, gsl_matrix *J); + +typedef struct +{ + size_t n; /* number of (original) residuals */ + size_t p; /* number of model parameters */ + double lambda; /* damping parameter */ + const gsl_vector *L_diag; /* diagonal damping matrix or NULL */ + const gsl_matrix *L; /* general damping matrix or NULL */ + gsl_vector *f; /* function values for finite diff J */ + gsl_vector *wts; /* weight vector for augmented system */ + gsl_multifit_fdfsolver * s; + gsl_multifit_function_fdf *fdf; /* user defined fdf */ + gsl_multifit_function_fdf fdftik; /* Tikhonov modified fdf */ +} gsl_multifit_fdfridge; + +gsl_multifit_fdfridge * +gsl_multifit_fdfridge_alloc (const gsl_multifit_fdfsolver_type * T, + const size_t n, const size_t p); +void gsl_multifit_fdfridge_free(gsl_multifit_fdfridge *work); +const char *gsl_multifit_fdfridge_name(const gsl_multifit_fdfridge * w); +gsl_vector *gsl_multifit_fdfridge_position (const gsl_multifit_fdfridge * w); +gsl_vector *gsl_multifit_fdfridge_residual (const gsl_multifit_fdfridge * w); +size_t gsl_multifit_fdfridge_niter (const gsl_multifit_fdfridge * w); +int gsl_multifit_fdfridge_set (gsl_multifit_fdfridge * w, + gsl_multifit_function_fdf * f, + const gsl_vector * x, + const double lambda); +int gsl_multifit_fdfridge_wset (gsl_multifit_fdfridge * w, + gsl_multifit_function_fdf * f, + const gsl_vector * x, + const double lambda, + const gsl_vector * wts); +int gsl_multifit_fdfridge_set2 (gsl_multifit_fdfridge * w, + gsl_multifit_function_fdf * f, + const gsl_vector * x, + const gsl_vector * lambda); +int gsl_multifit_fdfridge_wset2 (gsl_multifit_fdfridge * w, + gsl_multifit_function_fdf * f, + const gsl_vector * x, + const gsl_vector * lambda, + const gsl_vector * wts); +int gsl_multifit_fdfridge_set3 (gsl_multifit_fdfridge * w, + gsl_multifit_function_fdf * f, + const gsl_vector * x, + const gsl_matrix * L); +int gsl_multifit_fdfridge_wset3 (gsl_multifit_fdfridge * w, + gsl_multifit_function_fdf * f, + const gsl_vector * x, + const gsl_matrix * L, + const gsl_vector * wts); +int gsl_multifit_fdfridge_iterate (gsl_multifit_fdfridge * w); +int gsl_multifit_fdfridge_driver (gsl_multifit_fdfridge * w, + const size_t maxiter, + const double xtol, + const double gtol, + const double ftol, + int *info); + +/* extern const gsl_multifit_fsolver_type * gsl_multifit_fsolver_gradient; */ + +GSL_VAR const gsl_multifit_fdfsolver_type * gsl_multifit_fdfsolver_lmsder; +GSL_VAR const gsl_multifit_fdfsolver_type * gsl_multifit_fdfsolver_lmder; +GSL_VAR const gsl_multifit_fdfsolver_type * gsl_multifit_fdfsolver_lmniel; + +__END_DECLS + +#endif /* __GSL_MULTIFIT_NLIN_H__ */ diff --git a/gsl-2.5/multifit/libgslmultifit.la b/gsl-2.5/multifit/libgslmultifit.la new file mode 100644 index 00000000..e625720e --- /dev/null +++ b/gsl-2.5/multifit/libgslmultifit.la @@ -0,0 +1,41 @@ +# libgslmultifit.la - a libtool library file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='' + +# Names of this library. +library_names='' + +# The name of the static archive. +old_library='libgslmultifit.a' + +# Linker flags that can not go in dependency_libs. +inherited_linker_flags='' + +# Libraries that this one depends upon. +dependency_libs=' -lm' + +# Names of additional weak libraries provided by this library +weak_library_names='' + +# Version information for libgslmultifit. +current= +age= +revision= + +# Is this an already installed library? +installed=no + +# Should we warn about portability when linking against -modules? +shouldnotlink=no + +# Files to dlopen/dlpreopen +dlopen='' +dlpreopen='' + +# Directory that this library needs to be installed in: +libdir='' diff --git a/gsl-2.5/multifit/linear_common.c b/gsl-2.5/multifit/linear_common.c new file mode 100644 index 00000000..e0ca0f95 --- /dev/null +++ b/gsl-2.5/multifit/linear_common.c @@ -0,0 +1,197 @@ +#include +#include +#include +#include +#include +#include +#include +#include + +/* Fit + * + * y = X c + * + * where X is an n x p matrix of n observations for p variables. + * + * The solution includes a possible standard form Tikhonov regularization: + * + * c = (X^T X + lambda^2 I)^{-1} X^T y + * + * where lambda^2 is the Tikhonov regularization parameter. + * + * The function multifit_linear_svd() must first be called to + * compute the SVD decomposition of X + * + * Inputs: X - least squares matrix + * y - right hand side vector + * tol - singular value tolerance + * lambda - Tikhonov regularization parameter lambda; + * ignored if <= 0 + * rank - (output) effective rank + * c - (output) model coefficient vector + * rnorm - (output) residual norm ||y - X c|| + * snorm - (output) solution norm ||c|| + * work - workspace + * + * Notes: + * 1) The dimensions of X must match work->n and work->p which are set + * by multifit_linear_svd() + * 2) On input: + * work->A contains U + * work->Q contains Q + * work->S contains singular values + * 3) If this function is called from gsl_multifit_wlinear(), then + * the input y points to work->t, which contains sqrt(W) y. Since + * work->t is also used as scratch workspace by this function, we + * do the necessary computations with y first to avoid problems. + * 4) When lambda <= 0, singular values are truncated when: + * s_j <= tol * s_0 + */ + +static int +multifit_linear_solve (const gsl_matrix * X, + const gsl_vector * y, + const double tol, + const double lambda, + size_t * rank, + gsl_vector * c, + double *rnorm, + double *snorm, + gsl_multifit_linear_workspace * work) +{ + const size_t n = X->size1; + const size_t p = X->size2; + + if (n != work->n || p != work->p) + { + GSL_ERROR("observation matrix does not match workspace", GSL_EBADLEN); + } + else if (n != y->size) + { + GSL_ERROR("number of observations in y does not match matrix", + GSL_EBADLEN); + } + else if (p != c->size) + { + GSL_ERROR ("number of parameters c does not match matrix", + GSL_EBADLEN); + } + else if (tol <= 0) + { + GSL_ERROR ("tolerance must be positive", GSL_EINVAL); + } + else + { + const double lambda_sq = lambda * lambda; + + double rho_ls = 0.0; /* contribution to rnorm from OLS */ + + size_t j, p_eff; + + /* these inputs are previously computed by multifit_linear_svd() */ + gsl_matrix_view A = gsl_matrix_submatrix(work->A, 0, 0, n, p); + gsl_matrix_view Q = gsl_matrix_submatrix(work->Q, 0, 0, p, p); + gsl_vector_view S = gsl_vector_subvector(work->S, 0, p); + + /* workspace */ + gsl_matrix_view QSI = gsl_matrix_submatrix(work->QSI, 0, 0, p, p); + gsl_vector_view xt = gsl_vector_subvector(work->xt, 0, p); + gsl_vector_view D = gsl_vector_subvector(work->D, 0, p); + gsl_vector_view t = gsl_vector_subvector(work->t, 0, n); + + /* + * Solve y = A c for c + * c = Q diag(s_i / (s_i^2 + lambda_i^2)) U^T y + */ + + /* compute xt = U^T y */ + gsl_blas_dgemv (CblasTrans, 1.0, &A.matrix, y, 0.0, &xt.vector); + + if (n > p) + { + /* + * compute OLS residual norm = || y - U U^T y ||; + * for n = p, U U^T = I, so no need to calculate norm + */ + gsl_vector_memcpy(&t.vector, y); + gsl_blas_dgemv(CblasNoTrans, -1.0, &A.matrix, &xt.vector, 1.0, &t.vector); + rho_ls = gsl_blas_dnrm2(&t.vector); + } + + if (lambda > 0.0) + { + /* xt <-- [ s(i) / (s(i)^2 + lambda^2) ] .* U^T y */ + for (j = 0; j < p; ++j) + { + double sj = gsl_vector_get(&S.vector, j); + double f = (sj * sj) / (sj * sj + lambda_sq); + double *ptr = gsl_vector_ptr(&xt.vector, j); + + /* use D as workspace for residual norm */ + gsl_vector_set(&D.vector, j, (1.0 - f) * (*ptr)); + + *ptr *= sj / (sj*sj + lambda_sq); + } + + /* compute regularized solution vector */ + gsl_blas_dgemv (CblasNoTrans, 1.0, &Q.matrix, &xt.vector, 0.0, c); + + /* compute solution norm */ + *snorm = gsl_blas_dnrm2(c); + + /* compute residual norm */ + *rnorm = gsl_blas_dnrm2(&D.vector); + + if (n > p) + { + /* add correction to residual norm (see eqs 6-7 of [1]) */ + *rnorm = sqrt((*rnorm) * (*rnorm) + rho_ls * rho_ls); + } + + /* reset D vector */ + gsl_vector_set_all(&D.vector, 1.0); + } + else + { + /* Scale the matrix Q, QSI = Q S^{-1} */ + + gsl_matrix_memcpy (&QSI.matrix, &Q.matrix); + + { + double s0 = gsl_vector_get (&S.vector, 0); + p_eff = 0; + + for (j = 0; j < p; j++) + { + gsl_vector_view column = gsl_matrix_column (&QSI.matrix, j); + double sj = gsl_vector_get (&S.vector, j); + double alpha; + + if (sj <= tol * s0) + { + alpha = 0.0; + } + else + { + alpha = 1.0 / sj; + p_eff++; + } + + gsl_vector_scale (&column.vector, alpha); + } + + *rank = p_eff; + } + + gsl_blas_dgemv (CblasNoTrans, 1.0, &QSI.matrix, &xt.vector, 0.0, c); + + /* Unscale the balancing factors */ + gsl_vector_div (c, &D.vector); + + *snorm = gsl_blas_dnrm2(c); + *rnorm = rho_ls; + } + + return GSL_SUCCESS; + } +} diff --git a/gsl-2.5/multifit/lmder.c b/gsl-2.5/multifit/lmder.c new file mode 100644 index 00000000..e931a58b --- /dev/null +++ b/gsl-2.5/multifit/lmder.c @@ -0,0 +1,457 @@ +/* multfit/lmder.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include + +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include + + +typedef struct + { + size_t iter; + double xnorm; + double fnorm; + double delta; + double par; + gsl_matrix *J; /* Jacobian matrix */ + gsl_matrix *r; /* R matrix in J = Q R P^T */ + gsl_vector *tau; + gsl_vector *diag; /* scaling matrix D = diag(d1,...,dp) */ + gsl_vector *qtf; /* Q^T f */ + gsl_vector *newton; + gsl_vector *gradient; /* gradient g = J^T f */ + gsl_vector *x_trial; /* trial step x + dx */ + gsl_vector *f_trial; /* trial function f(x + dx) */ + gsl_vector *df; + gsl_vector *sdiag; + gsl_vector *rptdx; + const gsl_vector *weights; /* data weights */ + gsl_vector *w; + gsl_vector *work1; + gsl_permutation * perm; + } +lmder_state_t; + +static int lmder_alloc (void *vstate, size_t n, size_t p); +static int lmder_set (void *vstate, const gsl_vector * swts, gsl_multifit_function_fdf * fdf, gsl_vector * x, gsl_vector * f, gsl_vector * dx); +static int lmsder_set (void *vstate, const gsl_vector * swts, gsl_multifit_function_fdf * fdf, gsl_vector * x, gsl_vector * f, gsl_vector * dx); +static int set (void *vstate, const gsl_vector * swts, gsl_multifit_function_fdf * fdf, gsl_vector * x, gsl_vector * f, gsl_vector * dx, int scale); +static int lmder_iterate (void *vstate, const gsl_vector * swts, gsl_multifit_function_fdf * fdf, gsl_vector * x, gsl_vector * f, gsl_vector * dx); +static void lmder_free (void *vstate); +static int iterate (void *vstate, const gsl_vector * swts, gsl_multifit_function_fdf * fdf, gsl_vector * x, gsl_vector * f, gsl_vector * dx, int scale); + +#include "lmutil.c" +#include "lmpar.c" +#include "lmset.c" +#include "lmiterate.c" + + +static int +lmder_alloc (void *vstate, size_t n, size_t p) +{ + lmder_state_t *state = (lmder_state_t *) vstate; + gsl_matrix *r, *J; + gsl_vector *tau, *diag, *qtf, *newton, *gradient, *x_trial, *f_trial, + *df, *sdiag, *rptdx, *w, *work1; + gsl_permutation *perm; + + J = gsl_matrix_alloc (n, p); + + if (J == 0) + { + GSL_ERROR ("failed to allocate space for J", GSL_ENOMEM); + } + + state->J = J; + + r = gsl_matrix_alloc (n, p); + + if (r == 0) + { + GSL_ERROR ("failed to allocate space for r", GSL_ENOMEM); + } + + state->r = r; + + tau = gsl_vector_calloc (GSL_MIN(n, p)); + + if (tau == 0) + { + gsl_matrix_free (r); + + GSL_ERROR ("failed to allocate space for tau", GSL_ENOMEM); + } + + state->tau = tau; + + diag = gsl_vector_calloc (p); + + if (diag == 0) + { + gsl_matrix_free (r); + gsl_vector_free (tau); + + GSL_ERROR ("failed to allocate space for diag", GSL_ENOMEM); + } + + state->diag = diag; + + qtf = gsl_vector_calloc (n); + + if (qtf == 0) + { + gsl_matrix_free (r); + gsl_vector_free (tau); + gsl_vector_free (diag); + + GSL_ERROR ("failed to allocate space for qtf", GSL_ENOMEM); + } + + state->qtf = qtf; + + newton = gsl_vector_calloc (p); + + if (newton == 0) + { + gsl_matrix_free (r); + gsl_vector_free (tau); + gsl_vector_free (diag); + gsl_vector_free (qtf); + + GSL_ERROR ("failed to allocate space for newton", GSL_ENOMEM); + } + + state->newton = newton; + + gradient = gsl_vector_calloc (p); + + if (gradient == 0) + { + gsl_matrix_free (r); + gsl_vector_free (tau); + gsl_vector_free (diag); + gsl_vector_free (qtf); + gsl_vector_free (newton); + + GSL_ERROR ("failed to allocate space for gradient", GSL_ENOMEM); + } + + state->gradient = gradient; + + x_trial = gsl_vector_calloc (p); + + if (x_trial == 0) + { + gsl_matrix_free (r); + gsl_vector_free (tau); + gsl_vector_free (diag); + gsl_vector_free (qtf); + gsl_vector_free (newton); + gsl_vector_free (gradient); + + GSL_ERROR ("failed to allocate space for x_trial", GSL_ENOMEM); + } + + state->x_trial = x_trial; + + f_trial = gsl_vector_calloc (n); + + if (f_trial == 0) + { + gsl_matrix_free (r); + gsl_vector_free (tau); + gsl_vector_free (diag); + gsl_vector_free (qtf); + gsl_vector_free (newton); + gsl_vector_free (gradient); + gsl_vector_free (x_trial); + + GSL_ERROR ("failed to allocate space for f_trial", GSL_ENOMEM); + } + + state->f_trial = f_trial; + + df = gsl_vector_calloc (n); + + if (df == 0) + { + gsl_matrix_free (r); + gsl_vector_free (tau); + gsl_vector_free (diag); + gsl_vector_free (qtf); + gsl_vector_free (newton); + gsl_vector_free (gradient); + gsl_vector_free (x_trial); + gsl_vector_free (f_trial); + + GSL_ERROR ("failed to allocate space for df", GSL_ENOMEM); + } + + state->df = df; + + sdiag = gsl_vector_calloc (p); + + if (sdiag == 0) + { + gsl_matrix_free (r); + gsl_vector_free (tau); + gsl_vector_free (diag); + gsl_vector_free (qtf); + gsl_vector_free (newton); + gsl_vector_free (gradient); + gsl_vector_free (x_trial); + gsl_vector_free (f_trial); + gsl_vector_free (df); + + GSL_ERROR ("failed to allocate space for sdiag", GSL_ENOMEM); + } + + state->sdiag = sdiag; + + + rptdx = gsl_vector_calloc (n); + + if (rptdx == 0) + { + gsl_matrix_free (r); + gsl_vector_free (tau); + gsl_vector_free (diag); + gsl_vector_free (qtf); + gsl_vector_free (newton); + gsl_vector_free (gradient); + gsl_vector_free (x_trial); + gsl_vector_free (f_trial); + gsl_vector_free (df); + gsl_vector_free (sdiag); + + GSL_ERROR ("failed to allocate space for rptdx", GSL_ENOMEM); + } + + state->rptdx = rptdx; + + w = gsl_vector_calloc (n); + + if (w == 0) + { + gsl_matrix_free (r); + gsl_vector_free (tau); + gsl_vector_free (diag); + gsl_vector_free (qtf); + gsl_vector_free (newton); + gsl_vector_free (gradient); + gsl_vector_free (x_trial); + gsl_vector_free (f_trial); + gsl_vector_free (df); + gsl_vector_free (sdiag); + gsl_vector_free (rptdx); + + GSL_ERROR ("failed to allocate space for w", GSL_ENOMEM); + } + + state->w = w; + + work1 = gsl_vector_calloc (p); + + if (work1 == 0) + { + gsl_matrix_free (r); + gsl_vector_free (tau); + gsl_vector_free (diag); + gsl_vector_free (qtf); + gsl_vector_free (newton); + gsl_vector_free (gradient); + gsl_vector_free (x_trial); + gsl_vector_free (f_trial); + gsl_vector_free (df); + gsl_vector_free (sdiag); + gsl_vector_free (rptdx); + gsl_vector_free (w); + + GSL_ERROR ("failed to allocate space for work1", GSL_ENOMEM); + } + + state->work1 = work1; + + perm = gsl_permutation_calloc (p); + + if (perm == 0) + { + gsl_matrix_free (r); + gsl_vector_free (tau); + gsl_vector_free (diag); + gsl_vector_free (qtf); + gsl_vector_free (newton); + gsl_vector_free (gradient); + gsl_vector_free (x_trial); + gsl_vector_free (f_trial); + gsl_vector_free (df); + gsl_vector_free (sdiag); + gsl_vector_free (rptdx); + gsl_vector_free (w); + gsl_vector_free (work1); + + GSL_ERROR ("failed to allocate space for perm", GSL_ENOMEM); + } + + state->perm = perm; + + return GSL_SUCCESS; +} + +static int +lmder_set (void *vstate, const gsl_vector * swts, + gsl_multifit_function_fdf * fdf, gsl_vector * x, + gsl_vector * f, gsl_vector * dx) +{ + int status = set (vstate, swts, fdf, x, f, dx, 0); + return status ; +} + +static int +lmsder_set (void *vstate, const gsl_vector * swts, + gsl_multifit_function_fdf * fdf, gsl_vector * x, + gsl_vector * f, gsl_vector * dx) +{ + int status = set (vstate, swts, fdf, x, f, dx, 1); + return status ; +} + +static int +lmder_iterate (void *vstate, const gsl_vector * swts, + gsl_multifit_function_fdf * fdf, gsl_vector * x, + gsl_vector * f, gsl_vector * dx) +{ + int status = iterate (vstate, swts, fdf, x, f, dx, 0); + return status; +} + +static int +lmsder_iterate (void *vstate, const gsl_vector * swts, + gsl_multifit_function_fdf * fdf, gsl_vector * x, + gsl_vector * f, gsl_vector * dx) +{ + int status = iterate (vstate, swts, fdf, x, f, dx, 1); + return status; +} + +static int +lmder_gradient (void *vstate, gsl_vector * g) +{ + lmder_state_t *state = (lmder_state_t *) vstate; + compute_gradient(state->r, state->qtf, g); + return GSL_SUCCESS; +} + +static int +lmder_jac (void *vstate, gsl_matrix * J) +{ + lmder_state_t *state = (lmder_state_t *) vstate; + int s = gsl_matrix_memcpy(J, state->J); + + return s; +} + +static void +lmder_free (void *vstate) +{ + lmder_state_t *state = (lmder_state_t *) vstate; + + if (state->perm) + gsl_permutation_free (state->perm); + + if (state->work1) + gsl_vector_free (state->work1); + + if (state->w) + gsl_vector_free (state->w); + + if (state->rptdx) + gsl_vector_free (state->rptdx); + + if (state->sdiag) + gsl_vector_free (state->sdiag); + + if (state->df) + gsl_vector_free (state->df); + + if (state->f_trial) + gsl_vector_free (state->f_trial); + + if (state->x_trial) + gsl_vector_free (state->x_trial); + + if (state->gradient) + gsl_vector_free (state->gradient); + + if (state->newton) + gsl_vector_free (state->newton); + + if (state->qtf) + gsl_vector_free (state->qtf); + + if (state->diag) + gsl_vector_free (state->diag); + + if (state->tau) + gsl_vector_free (state->tau); + + if (state->r) + gsl_matrix_free (state->r); + + if (state->J) + gsl_matrix_free (state->J); +} + +static const gsl_multifit_fdfsolver_type lmder_type = +{ + "lmder", /* name */ + sizeof (lmder_state_t), + &lmder_alloc, + &lmder_set, + &lmder_iterate, + &lmder_gradient, + &lmder_jac, + &lmder_free +}; + +static const gsl_multifit_fdfsolver_type lmsder_type = +{ + "lmsder", /* name */ + sizeof (lmder_state_t), + &lmder_alloc, + &lmsder_set, + &lmsder_iterate, + &lmder_gradient, + &lmder_jac, + &lmder_free +}; + +const gsl_multifit_fdfsolver_type *gsl_multifit_fdfsolver_lmder = &lmder_type; +const gsl_multifit_fdfsolver_type *gsl_multifit_fdfsolver_lmsder = &lmsder_type; diff --git a/gsl-2.5/multifit/lmder.lo b/gsl-2.5/multifit/lmder.lo new file mode 100644 index 00000000..60e0327c --- /dev/null +++ b/gsl-2.5/multifit/lmder.lo @@ -0,0 +1,12 @@ +# lmder.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/lmder.o' + +# Name of the non-PIC object +non_pic_object='lmder.o' + diff --git a/gsl-2.5/multifit/lmiterate.c b/gsl-2.5/multifit/lmiterate.c new file mode 100644 index 00000000..6366040a --- /dev/null +++ b/gsl-2.5/multifit/lmiterate.c @@ -0,0 +1,237 @@ +static int +iterate (void *vstate, const gsl_vector * swts, + gsl_multifit_function_fdf * fdf, gsl_vector * x, + gsl_vector * f, gsl_vector * dx, int scale) +{ + lmder_state_t *state = (lmder_state_t *) vstate; + + gsl_matrix *r = state->r; + gsl_vector *tau = state->tau; + gsl_vector *diag = state->diag; + gsl_vector *qtf = state->qtf; + gsl_vector *x_trial = state->x_trial; + gsl_vector *f_trial = state->f_trial; + gsl_vector *rptdx = state->rptdx; + gsl_vector *newton = state->newton; + gsl_vector *gradient = state->gradient; + gsl_vector *sdiag = state->sdiag; + gsl_vector *w = state->w; + gsl_vector *work1 = state->work1; + gsl_permutation *perm = state->perm; + + double prered, actred; + double pnorm, fnorm1, fnorm1p, gnorm; + double ratio; + double dirder; + + int iter = 0; + + double p1 = 0.1, p25 = 0.25, p5 = 0.5, p75 = 0.75, p0001 = 0.0001; + + if (state->fnorm == 0.0) + { + return GSL_SUCCESS; + } + + /* Compute norm of scaled gradient */ + + compute_gradient_direction (r, perm, qtf, diag, gradient); + + { + size_t iamax = gsl_blas_idamax (gradient); + + gnorm = fabs(gsl_vector_get (gradient, iamax) / state->fnorm); + } + + /* Determine the Levenberg-Marquardt parameter */ + +lm_iteration: + + iter++ ; + + { + int status = lmpar (r, perm, qtf, diag, state->delta, &(state->par), newton, gradient, sdiag, dx, w); + if (status) + return status; + } + + /* Take a trial step */ + + gsl_vector_scale (dx, -1.0); /* reverse the step to go downhill */ + + compute_trial_step (x, dx, state->x_trial); + + pnorm = scaled_enorm (diag, dx); + + if (state->iter == 1) + { + if (pnorm < state->delta) + { +#ifdef DEBUG + printf("set delta = pnorm = %g\n" , pnorm); +#endif + state->delta = pnorm; + } + } + + /* Evaluate function at x + p */ + /* return immediately if evaluation raised error */ + { + int status = gsl_multifit_eval_wf (fdf, x_trial, swts, f_trial); + if (status) + return status; + } + + fnorm1 = enorm (f_trial); + + /* Compute the scaled actual reduction */ + + actred = compute_actual_reduction (state->fnorm, fnorm1); + +#ifdef DEBUG + printf("lmiterate: fnorm = %g fnorm1 = %g actred = %g\n", state->fnorm, fnorm1, actred); + printf("r = "); gsl_matrix_fprintf(stdout, r, "%g"); + printf("perm = "); gsl_permutation_fprintf(stdout, perm, "%d"); + printf("dx = "); gsl_vector_fprintf(stdout, dx, "%g"); +#endif + + /* Compute rptdx = R P^T dx, noting that |J dx| = |R P^T dx| */ + + compute_rptdx (r, perm, dx, rptdx); + +#ifdef DEBUG + printf("rptdx = "); gsl_vector_fprintf(stdout, rptdx, "%g"); +#endif + + fnorm1p = enorm (rptdx); + + /* Compute the scaled predicted reduction = |J dx|^2 + 2 par |D dx|^2 */ + + { + double t1 = fnorm1p / state->fnorm; + double t2 = (sqrt(state->par) * pnorm) / state->fnorm; + + prered = t1 * t1 + t2 * t2 / p5; + dirder = -(t1 * t1 + t2 * t2); + } + + /* compute the ratio of the actual to predicted reduction */ + + if (prered > 0) + { + ratio = actred / prered; + } + else + { + ratio = 0; + } + +#ifdef DEBUG + printf("lmiterate: prered = %g dirder = %g ratio = %g\n", prered, dirder,ratio); +#endif + + + /* update the step bound */ + + if (ratio > p25) + { +#ifdef DEBUG + printf("ratio > p25\n"); +#endif + if (state->par == 0 || ratio >= p75) + { + state->delta = pnorm / p5; + state->par *= p5; +#ifdef DEBUG + printf("updated step bounds: delta = %g, par = %g\n", state->delta, state->par); +#endif + } + } + else + { + double temp = (actred >= 0) ? p5 : p5*dirder / (dirder + p5 * actred); + +#ifdef DEBUG + printf("ratio < p25\n"); +#endif + + if (p1 * fnorm1 >= state->fnorm || temp < p1 ) + { + temp = p1; + } + + state->delta = temp * GSL_MIN_DBL (state->delta, pnorm/p1); + + state->par /= temp; +#ifdef DEBUG + printf("updated step bounds: delta = %g, par = %g\n", state->delta, state->par); +#endif + } + + + /* test for successful iteration, termination and stringent tolerances */ + + if (ratio >= p0001) + { + gsl_vector_memcpy (x, x_trial); + gsl_vector_memcpy (f, f_trial); + + /* return immediately if evaluation raised error */ + { + int status; + + /* compute Jacobian at new x and store in state->r */ + if (fdf->df) + status = gsl_multifit_eval_wdf (fdf, x_trial, swts, r); + else + status = gsl_multifit_fdfsolver_dif_df(x_trial, swts, fdf, f_trial, r); + + if (status) + return status; + } + + /* wa2_j = diag_j * x_j */ + state->xnorm = scaled_enorm(diag, x); + state->fnorm = fnorm1; + state->iter++; + + /* Rescale if necessary */ + + if (scale) + { + update_diag (r, diag); + } + + /* compute J = Q R P^T and qtf = Q^T f */ + { + int signum; + + gsl_matrix_memcpy(state->J, r); + gsl_linalg_QRPT_decomp (r, tau, perm, &signum, work1); + gsl_vector_memcpy (qtf, f); + gsl_linalg_QR_QTvec (r, tau, qtf); + } + + return GSL_SUCCESS; + } + else if (fabs(actred) <= GSL_DBL_EPSILON && prered <= GSL_DBL_EPSILON + && p5 * ratio <= 1.0) + { + return GSL_ETOLF ; + } + else if (state->delta <= GSL_DBL_EPSILON * state->xnorm) + { + return GSL_ETOLX; + } + else if (gnorm <= GSL_DBL_EPSILON) + { + return GSL_ETOLG; + } + else if (iter < 10) + { + /* Repeat inner loop if unsuccessful */ + goto lm_iteration; + } + + return GSL_ENOPROG; +} diff --git a/gsl-2.5/multifit/lmmisc.c b/gsl-2.5/multifit/lmmisc.c new file mode 100644 index 00000000..8ae82ee4 --- /dev/null +++ b/gsl-2.5/multifit/lmmisc.c @@ -0,0 +1,111 @@ +/* multifit/lmmisc.c + * + * Copyright (C) 2014 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* compute step dx by solving (J^T J + mu*I) dx = -J^T f */ +static int +lmniel_calc_dx(const double mu, const gsl_matrix *A, const gsl_vector *rhs, + gsl_vector *dx, lmniel_state_t *state) +{ + int status; + gsl_matrix *A_copy = state->A_copy; + gsl_vector_view diag = gsl_matrix_diagonal(A_copy); + + /* make a copy of J^T J matrix */ + gsl_matrix_memcpy(A_copy, A); + + /* augment normal equations with LM parameter: A -> A + mu*I */ + gsl_vector_add_constant(&diag.vector, mu); + + status = gsl_linalg_QR_decomp(A_copy, state->work); + if (status) + return status; + + status = gsl_linalg_QR_solve(A_copy, state->work, rhs, dx); + if (status) + return status; + + return GSL_SUCCESS; +} /* lmniel_calc_dx() */ + +/* compute x_trial = x + dx */ +static void +lmniel_trial_step(const gsl_vector * x, const gsl_vector * dx, + gsl_vector * x_trial) +{ + size_t i, N = x->size; + + for (i = 0; i < N; i++) + { + double dxi = gsl_vector_get (dx, i); + double xi = gsl_vector_get (x, i); + gsl_vector_set (x_trial, i, xi + dxi); + } +} /* lmniel_trial_step() */ + +/* +lmniel_calc_dF() + Compute dF = F(x) - F(x + dx) = 1/2 (f - f_new)^T (f + f_new) +*/ +static double +lmniel_calc_dF(const gsl_vector *f, const gsl_vector *f_new) +{ + const size_t N = f->size; + size_t i; + double dF = 0.0; + + for (i = 0; i < N; ++i) + { + double fi = gsl_vector_get(f, i); + double fnewi = gsl_vector_get(f_new, i); + + dF += (fi - fnewi) * (fi + fnewi); + } + + dF *= 0.5; + + return dF; +} /* lmniel_calc_dF() */ + +/* +lmniel_calc_dL() + Compute dL = L(0) - L(dx) = 1/2 dx^T (mu * D^T D dx - g) +Here, the mg input is -g +*/ + +static double +lmniel_calc_dL(const double mu, const gsl_vector *diag, + const gsl_vector *dx, const gsl_vector *mg) +{ + const size_t p = dx->size; + size_t i; + double dL = 0.0; + + for (i = 0; i < p; ++i) + { + double dxi = gsl_vector_get(dx, i); + double di = gsl_vector_get(diag, i); + double mgi = gsl_vector_get(mg, i); /* -g_i */ + + dL += dxi * (mu * di * di * dxi + mgi); + } + + dL *= 0.5; + + return dL; +} /* lmniel_calc_dL() */ diff --git a/gsl-2.5/multifit/lmniel.c b/gsl-2.5/multifit/lmniel.c new file mode 100644 index 00000000..1c3f7891 --- /dev/null +++ b/gsl-2.5/multifit/lmniel.c @@ -0,0 +1,382 @@ +/* multifit/lmniel.c + * + * Copyright (C) 2014 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include +#include +#include + +#define SCALE 0 + +/* + * This module contains an implementation of the Levenberg-Marquardt + * algorithm for nonlinear optimization problems. This implementation + * closely follows the following works: + * + * [1] H. B. Nielsen, K. Madsen, Introduction to Optimization and + * Data Fitting, Informatics and Mathematical Modeling, + * Technical University of Denmark (DTU), 2010. + */ + +typedef struct +{ + gsl_matrix *A; /* J^T J */ + gsl_matrix *A_copy; /* copy of J^T J */ + gsl_matrix *J; /* Jacobian J(x) */ + gsl_vector *diag; /* D = diag(J^T J) */ + gsl_vector *rhs; /* rhs vector = -g = -J^T f */ + gsl_vector *x_trial; /* trial parameter vector */ + gsl_vector *f_trial; /* trial function vector */ + gsl_vector *work; /* workspace length p */ + long nu; /* nu */ + double mu; /* LM damping parameter mu */ + double tau; /* initial scale factor for mu */ +} lmniel_state_t; + +#include "lmmisc.c" + +#define LM_ONE_THIRD (0.333333333333333) + +static int lmniel_alloc (void *vstate, const size_t n, const size_t p); +static void lmniel_free(void *vstate); +static int lmniel_set(void *vstate, const gsl_vector * swts, + gsl_multifit_function_fdf *fdf, + gsl_vector *x, gsl_vector *f, gsl_vector *dx); +static int lmniel_iterate(void *vstate, const gsl_vector *swts, + gsl_multifit_function_fdf *fdf, + gsl_vector *x, gsl_vector *f, gsl_vector *dx); + +static int +lmniel_alloc (void *vstate, const size_t n, const size_t p) +{ + lmniel_state_t *state = (lmniel_state_t *) vstate; + + state->A = gsl_matrix_alloc(p, p); + if (state->A == NULL) + { + GSL_ERROR ("failed to allocate space for A", GSL_ENOMEM); + } + + state->J = gsl_matrix_alloc(n, p); + if (state->J == NULL) + { + GSL_ERROR ("failed to allocate space for J", GSL_ENOMEM); + } + + state->diag = gsl_vector_alloc(p); + if (state->diag == NULL) + { + GSL_ERROR ("failed to allocate space for diag", GSL_ENOMEM); + } + + state->rhs = gsl_vector_alloc(p); + if (state->rhs == NULL) + { + GSL_ERROR ("failed to allocate space for rhs", GSL_ENOMEM); + } + + state->work = gsl_vector_alloc(p); + if (state->work == NULL) + { + GSL_ERROR ("failed to allocate space for work", GSL_ENOMEM); + } + + state->A_copy = gsl_matrix_alloc(p, p); + if (state->A_copy == NULL) + { + GSL_ERROR ("failed to allocate space for A_copy", GSL_ENOMEM); + } + + state->x_trial = gsl_vector_alloc(p); + if (state->x_trial == NULL) + { + GSL_ERROR ("failed to allocate space for x_trial", GSL_ENOMEM); + } + + state->f_trial = gsl_vector_alloc(n); + if (state->f_trial == NULL) + { + GSL_ERROR ("failed to allocate space for f_trial", GSL_ENOMEM); + } + + state->tau = 1.0e-3; + + return GSL_SUCCESS; +} /* lmniel_alloc() */ + +static void +lmniel_free(void *vstate) +{ + lmniel_state_t *state = (lmniel_state_t *) vstate; + + if (state->A) + gsl_matrix_free(state->A); + + if (state->J) + gsl_matrix_free(state->J); + + if (state->diag) + gsl_vector_free(state->diag); + + if (state->rhs) + gsl_vector_free(state->rhs); + + if (state->work) + gsl_vector_free(state->work); + + if (state->A_copy) + gsl_matrix_free(state->A_copy); + + if (state->x_trial) + gsl_vector_free(state->x_trial); + + if (state->f_trial) + gsl_vector_free(state->f_trial); +} /* lmniel_free() */ + +static int +lmniel_set(void *vstate, const gsl_vector *swts, + gsl_multifit_function_fdf *fdf, gsl_vector *x, + gsl_vector *f, gsl_vector *dx) +{ + int status; + lmniel_state_t *state = (lmniel_state_t *) vstate; + const size_t p = x->size; + size_t i; + + /* initialize counters for function and Jacobian evaluations */ + fdf->nevalf = 0; + fdf->nevaldf = 0; + + /* evaluate function and Jacobian at x and apply weight transform */ + status = gsl_multifit_eval_wf(fdf, x, swts, f); + if (status) + return status; + + if (fdf->df) + status = gsl_multifit_eval_wdf(fdf, x, swts, state->J); + else + status = gsl_multifit_fdfsolver_dif_df(x, swts, fdf, f, state->J); + if (status) + return status; + + /* compute rhs = -J^T f */ + gsl_blas_dgemv(CblasTrans, -1.0, state->J, f, 0.0, state->rhs); + +#if SCALE + gsl_vector_set_zero(state->diag); +#else + gsl_vector_set_all(state->diag, 1.0); +#endif + + /* set default parameters */ + state->nu = 2; + +#if SCALE + state->mu = state->tau; +#else + /* compute mu_0 = tau * max(diag(J^T J)) */ + state->mu = -1.0; + for (i = 0; i < p; ++i) + { + gsl_vector_view c = gsl_matrix_column(state->J, i); + double result; /* (J^T J)_{ii} */ + + gsl_blas_ddot(&c.vector, &c.vector, &result); + state->mu = GSL_MAX(state->mu, result); + } + + state->mu *= state->tau; +#endif + + return GSL_SUCCESS; +} /* lmniel_set() */ + +/* +lmniel_iterate() + This function performs 1 iteration of the LM algorithm 6.18 +from [1]. The algorithm is slightly modified to loop until we +find an acceptable step dx, in order to guarantee that each +function call contains a new input vector x. + +Args: vstate - lm workspace + swts - data weights (NULL if unweighted) + fdf - function and Jacobian pointers + x - on input, current parameter vector + on output, new parameter vector x + dx + f - on input, f(x) + on output, f(x + dx) + dx - (output only) parameter step vector + +Notes: +1) On input, the following must be initialized in state: +nu, mu, rhs, J + +2) On output, the following are updated with the current iterates: +nu, mu, rhs, J + +rhs needs to be set on each output, so that lmniel_gradient supplies +the correct g = J^T f +*/ + +static int +lmniel_iterate(void *vstate, const gsl_vector *swts, + gsl_multifit_function_fdf *fdf, gsl_vector *x, + gsl_vector *f, gsl_vector *dx) +{ + int status; + lmniel_state_t *state = (lmniel_state_t *) vstate; + gsl_matrix *J = state->J; /* Jacobian J(x) */ + gsl_matrix *A = state->A; /* J^T J */ + gsl_vector *rhs = state->rhs; /* -g = -J^T f */ + gsl_vector *x_trial = state->x_trial; /* trial x + dx */ + gsl_vector *f_trial = state->f_trial; /* trial f(x + dx) */ + gsl_vector *diag = state->diag; /* diag(D) */ + double dF; /* F(x) - F(x + dx) */ + double dL; /* L(0) - L(dx) */ + int foundstep = 0; /* found step dx */ + + /* compute A = J^T J */ + status = gsl_blas_dsyrk(CblasLower, CblasTrans, 1.0, J, 0.0, A); + if (status) + return status; + + /* copy lower triangle to upper */ + gsl_matrix_transpose_tricpy('L', 0, A, A); + +#if SCALE + lmniel_update_diag(J, diag); +#endif + + /* loop until we find an acceptable step dx */ + while (!foundstep) + { + /* solve (A + mu*I) dx = g */ + status = lmniel_calc_dx(state->mu, A, rhs, dx, state); + if (status) + return status; + + /* compute x_trial = x + dx */ + lmniel_trial_step(x, dx, x_trial); + + /* compute f(x + dx) */ + status = gsl_multifit_eval_wf(fdf, x_trial, swts, f_trial); + if (status) + return status; + + /* compute dF = F(x) - F(x + dx) */ + dF = lmniel_calc_dF(f, f_trial); + + /* compute dL = L(0) - L(dx) = dx^T (mu*dx - g) */ + dL = lmniel_calc_dL(state->mu, diag, dx, rhs); + + /* check that rho = dF/dL > 0 */ + if ((dL > 0.0) && (dF >= 0.0)) + { + /* reduction in error, step acceptable */ + + double tmp; + + /* update LM parameter mu */ + tmp = 2.0 * (dF / dL) - 1.0; + tmp = 1.0 - tmp*tmp*tmp; + state->mu *= GSL_MAX(LM_ONE_THIRD, tmp); + state->nu = 2; + + /* compute J <- J(x + dx) */ + if (fdf->df) + status = gsl_multifit_eval_wdf(fdf, x_trial, swts, J); + else + status = gsl_multifit_fdfsolver_dif_df(x_trial, swts, fdf, f_trial, J); + if (status) + return status; + + /* update x <- x + dx */ + gsl_vector_memcpy(x, x_trial); + + /* update f <- f(x + dx) */ + gsl_vector_memcpy(f, f_trial); + + /* compute new rhs = -J^T f */ + gsl_blas_dgemv(CblasTrans, -1.0, J, f, 0.0, rhs); + + foundstep = 1; + } + else + { + long nu2; + + /* step did not reduce error, reject step */ + state->mu *= (double) state->nu; + nu2 = state->nu << 1; /* 2*nu */ + if (nu2 <= state->nu) + { + gsl_vector_view d = gsl_matrix_diagonal(A); + + /* + * nu has wrapped around / overflown, reset mu and nu + * to original values and break to force another iteration + */ + /*GSL_ERROR("nu parameter has overflown", GSL_EOVRFLW);*/ + state->nu = 2; + state->mu = state->tau * gsl_vector_max(&d.vector); + break; + } + state->nu = nu2; + } + } /* while (!foundstep) */ + + return GSL_SUCCESS; +} /* lmniel_iterate() */ + +static int +lmniel_gradient(void *vstate, gsl_vector * g) +{ + lmniel_state_t *state = (lmniel_state_t *) vstate; + gsl_vector_memcpy(g, state->rhs); + gsl_vector_scale(g, -1.0); + return GSL_SUCCESS; +} + +static int +lmniel_jac(void *vstate, gsl_matrix * J) +{ + lmniel_state_t *state = (lmniel_state_t *) vstate; + int s = gsl_matrix_memcpy(J, state->J); + + return s; +} + +static const gsl_multifit_fdfsolver_type lmniel_type = +{ + "lmniel", + sizeof(lmniel_state_t), + &lmniel_alloc, + &lmniel_set, + &lmniel_iterate, + &lmniel_gradient, + &lmniel_jac, + &lmniel_free +}; + +const gsl_multifit_fdfsolver_type *gsl_multifit_fdfsolver_lmniel = &lmniel_type; diff --git a/gsl-2.5/multifit/lmniel.lo b/gsl-2.5/multifit/lmniel.lo new file mode 100644 index 00000000..73eef1c3 --- /dev/null +++ b/gsl-2.5/multifit/lmniel.lo @@ -0,0 +1,12 @@ +# lmniel.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/lmniel.o' + +# Name of the non-PIC object +non_pic_object='lmniel.o' + diff --git a/gsl-2.5/multifit/lmpar.c b/gsl-2.5/multifit/lmpar.c new file mode 100644 index 00000000..1e7a3d12 --- /dev/null +++ b/gsl-2.5/multifit/lmpar.c @@ -0,0 +1,522 @@ +/* multifit/lmpar.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include + +#include "qrsolv.c" + +static size_t +count_nsing (const gsl_matrix * r) +{ + /* Count the number of nonsingular entries. Returns the index of the + first entry which is singular. */ + + size_t n = r->size2; + size_t i; + + for (i = 0; i < n; i++) + { + double rii = gsl_matrix_get (r, i, i); + + if (rii == 0) + { + break; + } + } + + return i; +} + + +static void +compute_newton_direction (const gsl_matrix * r, const gsl_permutation * perm, + const gsl_vector * qtf, gsl_vector * x) +{ + + /* Compute and store in x the Gauss-Newton direction. If the + Jacobian is rank-deficient then obtain a least squares + solution. */ + + const size_t n = r->size2; + size_t i, j, nsing; + + for (i = 0 ; i < n ; i++) + { + double qtfi = gsl_vector_get (qtf, i); + gsl_vector_set (x, i, qtfi); + } + + nsing = count_nsing (r); + +#ifdef DEBUG + printf("nsing = %d\n", nsing); + printf("r = "); gsl_matrix_fprintf(stdout, r, "%g"); printf("\n"); + printf("qtf = "); gsl_vector_fprintf(stdout, x, "%g"); printf("\n"); +#endif + + for (i = nsing; i < n; i++) + { + gsl_vector_set (x, i, 0.0); + } + + if (nsing > 0) + { + for (j = nsing; j > 0 && j--;) + { + double rjj = gsl_matrix_get (r, j, j); + double temp = gsl_vector_get (x, j) / rjj; + + gsl_vector_set (x, j, temp); + + for (i = 0; i < j; i++) + { + double rij = gsl_matrix_get (r, i, j); + double xi = gsl_vector_get (x, i); + gsl_vector_set (x, i, xi - rij * temp); + } + } + } + + gsl_permute_vector_inverse (perm, x); +} + +static void +compute_newton_correction (const gsl_matrix * r, const gsl_vector * sdiag, + const gsl_permutation * p, gsl_vector * x, + double dxnorm, + const gsl_vector * diag, gsl_vector * w) +{ + size_t n = r->size2; + size_t i, j; + + for (i = 0; i < n; i++) + { + size_t pi = gsl_permutation_get (p, i); + + double dpi = gsl_vector_get (diag, pi); + double xpi = gsl_vector_get (x, pi); + + gsl_vector_set (w, i, dpi * (dpi * xpi) / dxnorm); + } + + for (j = 0; j < n; j++) + { + double sj = gsl_vector_get (sdiag, j); + double wj = gsl_vector_get (w, j); + + double tj = wj / sj; + + gsl_vector_set (w, j, tj); + + for (i = j + 1; i < n; i++) + { + double rij = gsl_matrix_get (r, i, j); + double wi = gsl_vector_get (w, i); + + gsl_vector_set (w, i, wi - rij * tj); + } + } +} + +static void +compute_newton_bound (const gsl_matrix * r, const gsl_vector * x, + double dxnorm, const gsl_permutation * perm, + const gsl_vector * diag, gsl_vector * w) +{ + /* If the jacobian is not rank-deficient then the Newton step + provides a lower bound for the zero of the function. Otherwise + set this bound to zero. */ + + size_t n = r->size2; + + size_t i, j; + + size_t nsing = count_nsing (r); + + if (nsing < n) + { + gsl_vector_set_zero (w); + return; + } + + for (i = 0; i < n; i++) + { + size_t pi = gsl_permutation_get (perm, i); + + double dpi = gsl_vector_get (diag, pi); + double xpi = gsl_vector_get (x, pi); + + gsl_vector_set (w, i, dpi * (dpi * xpi / dxnorm)); + } + + for (j = 0; j < n; j++) + { + double sum = 0; + + for (i = 0; i < j; i++) + { + sum += gsl_matrix_get (r, i, j) * gsl_vector_get (w, i); + } + + { + double rjj = gsl_matrix_get (r, j, j); + double wj = gsl_vector_get (w, j); + + gsl_vector_set (w, j, (wj - sum) / rjj); + } + } +} + +/* compute scaled gradient g = D^{-1} J^T f (see More' eq 7.2) */ +static void +compute_gradient_direction (const gsl_matrix * r, const gsl_permutation * p, + const gsl_vector * qtf, const gsl_vector * diag, + gsl_vector * g) +{ + const size_t n = r->size2; + + size_t i, j; + + for (j = 0; j < n; j++) + { + double sum = 0; + + for (i = 0; i <= j; i++) + { + sum += gsl_matrix_get (r, i, j) * gsl_vector_get (qtf, i); + } + + { + size_t pj = gsl_permutation_get (p, j); + double dpj = gsl_vector_get (diag, pj); + + gsl_vector_set (g, j, sum / dpj); + } + } +} + +/* compute gradient g = J^T f */ +static void +compute_gradient (const gsl_matrix * r, const gsl_vector * qtf, + gsl_vector * g) +{ + const size_t n = r->size2; + + size_t i, j; + + for (j = 0; j < n; j++) + { + double sum = 0; + + for (i = 0; i <= j; i++) + { + sum += gsl_matrix_get (r, i, j) * gsl_vector_get (qtf, i); + } + + gsl_vector_set (g, j, sum); + } +} + +static int +lmpar (gsl_matrix * r, const gsl_permutation * perm, const gsl_vector * qtf, + const gsl_vector * diag, double delta, double * par_inout, + gsl_vector * newton, gsl_vector * gradient, gsl_vector * sdiag, + gsl_vector * x, gsl_vector * w) +{ + double dxnorm, gnorm, fp, fp_old, par_lower, par_upper, par_c; + + double par = *par_inout; + + size_t iter = 0; + +#ifdef DEBUG + printf("ENTERING lmpar\n"); +#endif + + + compute_newton_direction (r, perm, qtf, newton); + +#ifdef DEBUG + printf ("newton = "); + gsl_vector_fprintf (stdout, newton, "%g"); + printf ("\n"); + + printf ("diag = "); + gsl_vector_fprintf (stdout, diag, "%g"); + printf ("\n"); +#endif + + /* Evaluate the function at the origin and test for acceptance of + the Gauss-Newton direction. */ + + dxnorm = scaled_enorm (diag, newton); + + fp = dxnorm - delta; + +#ifdef DEBUG + printf ("dxnorm = %g, delta = %g, fp = %g\n", dxnorm, delta, fp); +#endif + + if (fp <= 0.1 * delta) + { + gsl_vector_memcpy (x, newton); +#ifdef DEBUG + printf ("took newton (fp = %g, delta = %g)\n", fp, delta); +#endif + + *par_inout = 0; + + return GSL_SUCCESS; + } + +#ifdef DEBUG + printf ("r = "); + gsl_matrix_fprintf (stdout, r, "%g"); + printf ("\n"); + + printf ("newton = "); + gsl_vector_fprintf (stdout, newton, "%g"); + printf ("\n"); + + printf ("dxnorm = %g\n", dxnorm); +#endif + + + compute_newton_bound (r, newton, dxnorm, perm, diag, w); + +#ifdef DEBUG + printf("perm = "); gsl_permutation_fprintf(stdout, perm, "%d"); + + printf ("diag = "); + gsl_vector_fprintf (stdout, diag, "%g"); + printf ("\n"); + + printf ("w = "); + gsl_vector_fprintf (stdout, w, "%g"); + printf ("\n"); +#endif + + + { + double wnorm = enorm (w); + double phider = wnorm * wnorm; + + /* w == zero if r rank-deficient, + then set lower bound to zero form MINPACK, lmder.f + Hans E. Plesser 2002-02-25 (hans.plesser@itf.nlh.no) */ + if ( wnorm > 0 ) + par_lower = fp / (delta * phider); + else + par_lower = 0.0; + } + +#ifdef DEBUG + printf("par = %g\n", par ); + printf("par_lower = %g\n", par_lower); +#endif + + compute_gradient_direction (r, perm, qtf, diag, gradient); + + gnorm = enorm (gradient); + +#ifdef DEBUG + printf("gradient = "); gsl_vector_fprintf(stdout, gradient, "%g"); printf("\n"); + printf("gnorm = %g\n", gnorm); +#endif + + par_upper = gnorm / delta; + + if (par_upper == 0) + { + par_upper = GSL_DBL_MIN / GSL_MIN_DBL(delta, 0.1); + } + +#ifdef DEBUG + printf("par_upper = %g\n", par_upper); +#endif + + if (par > par_upper) + { +#ifdef DEBUG + printf("set par to par_upper\n"); +#endif + + par = par_upper; + } + else if (par < par_lower) + { +#ifdef DEBUG + printf("set par to par_lower\n"); +#endif + + par = par_lower; + } + + if (par == 0) + { + par = gnorm / dxnorm; +#ifdef DEBUG + printf("set par to gnorm/dxnorm = %g\n", par); +#endif + + } + + /* Beginning of iteration */ + +iteration: + + iter++; + +#ifdef DEBUG + printf("lmpar iteration = %d\n", iter); +#endif + +#ifdef BRIANSFIX + /* Seems like this is described in the paper but not in the MINPACK code */ + + if (par < par_lower || par > par_upper) + { + par = GSL_MAX_DBL (0.001 * par_upper, sqrt(par_lower * par_upper)); + } +#endif + + /* Evaluate the function at the current value of par */ + + if (par == 0) + { + par = GSL_MAX_DBL (0.001 * par_upper, GSL_DBL_MIN); +#ifdef DEBUG + printf("par = 0, set par to = %g\n", par); +#endif + + } + + /* Compute the least squares solution of [ R P x - Q^T f, sqrt(par) D x] + for A = Q R P^T */ + +#ifdef DEBUG + printf ("calling qrsolv with par = %g\n", par); +#endif + + { + double sqrt_par = sqrt(par); + + qrsolv (r, perm, sqrt_par, diag, qtf, x, sdiag, w); + } + + dxnorm = scaled_enorm (diag, x); + + fp_old = fp; + + fp = dxnorm - delta; + +#ifdef DEBUG + printf ("After qrsolv dxnorm = %g, delta = %g, fp = %g\n", dxnorm, delta, fp); + printf ("sdiag = ") ; gsl_vector_fprintf(stdout, sdiag, "%g"); printf("\n"); + printf ("x = ") ; gsl_vector_fprintf(stdout, x, "%g"); printf("\n"); + printf ("r = ") ; gsl_matrix_fprintf(stdout, r, "%g"); printf("\nXXX\n"); +#endif + + /* If the function is small enough, accept the current value of par */ + + if (fabs (fp) <= 0.1 * delta) + goto line220; + + if (par_lower == 0 && fp <= fp_old && fp_old < 0) + goto line220; + + /* Check for maximum number of iterations */ + + if (iter == 10) + goto line220; + + /* Compute the Newton correction */ + + compute_newton_correction (r, sdiag, perm, x, dxnorm, diag, w); + +#ifdef DEBUG + printf ("newton_correction = "); + gsl_vector_fprintf(stdout, w, "%g"); printf("\n"); +#endif + + { + double wnorm = enorm (w); + par_c = fp / (delta * wnorm * wnorm); + } + +#ifdef DEBUG + printf("fp = %g\n", fp); + printf("par_lower = %g\n", par_lower); + printf("par_upper = %g\n", par_upper); + printf("par_c = %g\n", par_c); +#endif + + + /* Depending on the sign of the function, update par_lower or par_upper */ + + if (fp > 0) + { + if (par > par_lower) + { + par_lower = par; +#ifdef DEBUG + printf("fp > 0: set par_lower = par = %g\n", par); +#endif + + } + } + else if (fp < 0) + { + if (par < par_upper) + { +#ifdef DEBUG + printf("fp < 0: set par_upper = par = %g\n", par); +#endif + par_upper = par; + } + } + + /* Compute an improved estimate for par */ + +#ifdef DEBUG + printf("improved estimate par = MAX(%g, %g) \n", par_lower, par+par_c); +#endif + + par = GSL_MAX_DBL (par_lower, par + par_c); + +#ifdef DEBUG + printf("improved estimate par = %g \n", par); +#endif + + + goto iteration; + +line220: + +#ifdef DEBUG + printf("LEAVING lmpar, par = %g\n", par); +#endif + + *par_inout = par; + + return GSL_SUCCESS; +} + + + diff --git a/gsl-2.5/multifit/lmset.c b/gsl-2.5/multifit/lmset.c new file mode 100644 index 00000000..9f84de90 --- /dev/null +++ b/gsl-2.5/multifit/lmset.c @@ -0,0 +1,84 @@ +static int +set (void *vstate, const gsl_vector * swts, gsl_multifit_function_fdf * fdf, + gsl_vector * x, gsl_vector * f, gsl_vector * dx, int scale) +{ + lmder_state_t *state = (lmder_state_t *) vstate; + + gsl_matrix *r = state->r; + gsl_vector *tau = state->tau; + gsl_vector *qtf = state->qtf; + gsl_vector *diag = state->diag; + gsl_vector *work1 = state->work1; + gsl_permutation *perm = state->perm; + + int signum; + + /* start counting function and Jacobian evaluations */ + fdf->nevalf = 0; + fdf->nevaldf = 0; + + /* return immediately if evaluation raised error */ + { + int status; + + /* Evaluate function at x */ + status = gsl_multifit_eval_wf (fdf, x, swts, f); + if (status) + return status; + + /* Evaluate Jacobian at x and store in state->r */ + if (fdf->df) + status = gsl_multifit_eval_wdf (fdf, x, swts, r); + else /* finite difference approximation */ + status = gsl_multifit_fdfsolver_dif_df(x, swts, fdf, f, r); + + gsl_matrix_memcpy(state->J, r); + + if (status) + return status; + } + + state->par = 0; + state->iter = 1; + state->fnorm = enorm (f); + + gsl_vector_set_all (dx, 0.0); + + /* store column norms in diag */ + + if (scale) + { + compute_diag (r, diag); + } + else + { + gsl_vector_set_all (diag, 1.0); + } + + /* set delta to 100 |D x| or to 100 if |D x| is zero */ + + state->xnorm = scaled_enorm (diag, x); + state->delta = compute_delta (diag, x); + + /* Factorize J = Q R P^T */ + gsl_linalg_QRPT_decomp (r, tau, perm, &signum, work1); + + /* compute qtf = Q^T f */ + gsl_vector_memcpy (qtf, f); + gsl_linalg_QR_QTvec (r, tau, qtf); + + gsl_vector_set_zero (state->rptdx); + gsl_vector_set_zero (state->w); + + /* Zero the trial vector, as in the alloc function */ + + gsl_vector_set_zero (state->f_trial); + +#ifdef DEBUG + printf("r = "); gsl_matrix_fprintf(stdout, r, "%g"); + printf("perm = "); gsl_permutation_fprintf(stdout, perm, "%d"); + printf("tau = "); gsl_vector_fprintf(stdout, tau, "%g"); +#endif + + return GSL_SUCCESS; +} diff --git a/gsl-2.5/multifit/lmutil.c b/gsl-2.5/multifit/lmutil.c new file mode 100644 index 00000000..469a27ef --- /dev/null +++ b/gsl-2.5/multifit/lmutil.c @@ -0,0 +1,124 @@ +static void compute_diag (const gsl_matrix * J, gsl_vector * diag); +static void update_diag (const gsl_matrix * J, gsl_vector * diag); +static double compute_delta (gsl_vector * diag, gsl_vector * x); +static double scaled_enorm (const gsl_vector * d, const gsl_vector * f); +static double enorm (const gsl_vector * f); + +static double +enorm (const gsl_vector * f) +{ + return gsl_blas_dnrm2 (f); +} + +static double +scaled_enorm (const gsl_vector * d, const gsl_vector * f) +{ + double e2 = 0; + size_t i, n = f->size; + for (i = 0; i < n; i++) + { + double fi = gsl_vector_get (f, i); + double di = gsl_vector_get (d, i); + double u = di * fi; + e2 += u * u; + } + return sqrt (e2); +} + +static double +compute_delta (gsl_vector * diag, gsl_vector * x) +{ + double Dx = scaled_enorm (diag, x); + double factor = 100; /* generally recommended value from MINPACK */ + + return (Dx > 0) ? factor * Dx : factor; +} + +static double +compute_actual_reduction (double fnorm, double fnorm1) +{ + double actred; + + if (0.1 * fnorm1 < fnorm) + { + double u = fnorm1 / fnorm; + actred = 1 - u * u; + } + else + { + actred = -1; + } + + return actred; +} + +static void +compute_diag (const gsl_matrix * J, gsl_vector * diag) +{ + size_t j, p = J->size2; + + for (j = 0; j < p; j++) + { + gsl_vector_const_view v = gsl_matrix_const_column(J, j); + double norm = gsl_blas_dnrm2(&v.vector); + + if (norm == 0) + norm = 1.0; + + gsl_vector_set (diag, j, norm); + } +} + +static void +update_diag (const gsl_matrix * J, gsl_vector * diag) +{ + size_t j, p = J->size2; + + for (j = 0; j < p; j++) + { + gsl_vector_const_view v = gsl_matrix_const_column(J, j); + double norm = gsl_blas_dnrm2(&v.vector); + double *diagj = gsl_vector_ptr(diag, j); + + if (norm == 0) + norm = 1.0; + + *diagj = GSL_MAX(*diagj, norm); + } +} + +static void +compute_rptdx (const gsl_matrix * r, const gsl_permutation * p, + const gsl_vector * dx, gsl_vector * rptdx) +{ + size_t i, j, N = dx->size; + + for (i = 0; i < N; i++) + { + double sum = 0; + + for (j = i; j < N; j++) + { + size_t pj = gsl_permutation_get (p, j); + + sum += gsl_matrix_get (r, i, j) * gsl_vector_get (dx, pj); + } + + gsl_vector_set (rptdx, i, sum); + } +} + + +static void +compute_trial_step (gsl_vector * x, gsl_vector * dx, gsl_vector * x_trial) +{ + size_t i, N = x->size; + + for (i = 0; i < N; i++) + { + double pi = gsl_vector_get (dx, i); + double xi = gsl_vector_get (x, i); + gsl_vector_set (x_trial, i, xi + pi); + } +} + diff --git a/gsl-2.5/multifit/multilinear.c b/gsl-2.5/multifit/multilinear.c new file mode 100644 index 00000000..3b4615d8 --- /dev/null +++ b/gsl-2.5/multifit/multilinear.c @@ -0,0 +1,358 @@ +/* multifit/multilinear.c + * + * Copyright (C) 2000, 2007, 2010 Brian Gough + * Copyright (C) 2013, 2015 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include +#include + +#include "linear_common.c" + +static int multifit_linear_svd (const gsl_matrix * X, + const int balance, + gsl_multifit_linear_workspace * work); + +int +gsl_multifit_linear (const gsl_matrix * X, + const gsl_vector * y, + gsl_vector * c, + gsl_matrix * cov, + double *chisq, gsl_multifit_linear_workspace * work) +{ + size_t rank; + int status = gsl_multifit_linear_tsvd(X, y, GSL_DBL_EPSILON, c, cov, chisq, &rank, work); + + return status; +} + +/* +gsl_multifit_linear_tsvd() + Solve linear least squares system with truncated SVD + +Inputs: X - least squares matrix, n-by-p + y - right hand side vector, n-by-1 + tol - tolerance for singular value truncation; if + s_j <= tol * s_0 + then it is discarded from series expansion + c - (output) solution vector, p-by-1 + cov - (output) covariance matrix, p-by-p + chisq - (output) cost function chi^2 + rank - (output) effective rank (number of singular values + used in solution) + work - workspace +*/ + +int +gsl_multifit_linear_tsvd (const gsl_matrix * X, + const gsl_vector * y, + const double tol, + gsl_vector * c, + gsl_matrix * cov, + double * chisq, + size_t * rank, + gsl_multifit_linear_workspace * work) +{ + const size_t n = X->size1; + const size_t p = X->size2; + + if (y->size != n) + { + GSL_ERROR("number of observations in y does not match matrix", + GSL_EBADLEN); + } + else if (p != c->size) + { + GSL_ERROR ("number of parameters c does not match matrix", + GSL_EBADLEN); + } + else if (tol <= 0) + { + GSL_ERROR ("tolerance must be positive", GSL_EINVAL); + } + else + { + int status; + double rnorm = 0.0, snorm; + + /* compute balanced SVD */ + status = gsl_multifit_linear_bsvd (X, work); + if (status) + return status; + + status = multifit_linear_solve (X, y, tol, -1.0, rank, + c, &rnorm, &snorm, work); + + *chisq = rnorm * rnorm; + + /* variance-covariance matrix cov = s2 * (Q S^-1) (Q S^-1)^T */ + { + double r2 = rnorm * rnorm; + double s2 = r2 / (double)(n - *rank); + size_t i, j; + gsl_matrix_view QSI = gsl_matrix_submatrix(work->QSI, 0, 0, p, p); + gsl_vector_view D = gsl_vector_subvector(work->D, 0, p); + + for (i = 0; i < p; i++) + { + gsl_vector_view row_i = gsl_matrix_row (&QSI.matrix, i); + double d_i = gsl_vector_get (&D.vector, i); + + for (j = i; j < p; j++) + { + gsl_vector_view row_j = gsl_matrix_row (&QSI.matrix, j); + double d_j = gsl_vector_get (&D.vector, j); + double s; + + gsl_blas_ddot (&row_i.vector, &row_j.vector, &s); + + gsl_matrix_set (cov, i, j, s * s2 / (d_i * d_j)); + gsl_matrix_set (cov, j, i, s * s2 / (d_i * d_j)); + } + } + } + + return status; + } +} + +/* +gsl_multifit_linear_svd() + Perform SVD decomposition of the matrix X and store in work without +balancing +*/ + +int +gsl_multifit_linear_svd (const gsl_matrix * X, + gsl_multifit_linear_workspace * work) +{ + /* do not balance by default */ + int status = multifit_linear_svd(X, 0, work); + + return status; +} + +/* +gsl_multifit_linear_bsvd() + Perform SVD decomposition of the matrix X and store in work with +balancing +*/ + +int +gsl_multifit_linear_bsvd (const gsl_matrix * X, + gsl_multifit_linear_workspace * work) +{ + int status = multifit_linear_svd(X, 1, work); + + return status; +} + +size_t +gsl_multifit_linear_rank(const double tol, const gsl_multifit_linear_workspace * work) +{ + double s0 = gsl_vector_get (work->S, 0); + size_t rank = 0; + size_t j; + + for (j = 0; j < work->p; j++) + { + double sj = gsl_vector_get (work->S, j); + + if (sj > tol * s0) + ++rank; + } + + return rank; +} + +/* Estimation of values for given x */ + +int +gsl_multifit_linear_est (const gsl_vector * x, + const gsl_vector * c, + const gsl_matrix * cov, double *y, double *y_err) +{ + + if (x->size != c->size) + { + GSL_ERROR ("number of parameters c does not match number of observations x", + GSL_EBADLEN); + } + else if (cov->size1 != cov->size2) + { + GSL_ERROR ("covariance matrix is not square", GSL_ENOTSQR); + } + else if (c->size != cov->size1) + { + GSL_ERROR ("number of parameters c does not match size of covariance matrix cov", + GSL_EBADLEN); + } + else + { + size_t i, j; + double var = 0; + + gsl_blas_ddot(x, c, y); /* y = x.c */ + + /* var = x' cov x */ + + for (i = 0; i < x->size; i++) + { + const double xi = gsl_vector_get (x, i); + var += xi * xi * gsl_matrix_get (cov, i, i); + + for (j = 0; j < i; j++) + { + const double xj = gsl_vector_get (x, j); + var += 2 * xi * xj * gsl_matrix_get (cov, i, j); + } + } + + *y_err = sqrt (var); + + return GSL_SUCCESS; + } +} + +/* +gsl_multifit_linear_rcond() + Return reciprocal condition number of LS matrix; +gsl_multifit_linear_svd() must first be called to +compute the SVD of X and its reciprocal condition number +*/ + +double +gsl_multifit_linear_rcond (const gsl_multifit_linear_workspace * w) +{ + return w->rcond; +} + +/* +gsl_multifit_linear_residuals() + Compute vector of residuals from fit + +Inputs: X - design matrix + y - rhs vector + c - fit coefficients + r - (output) where to store residuals +*/ + +int +gsl_multifit_linear_residuals (const gsl_matrix *X, const gsl_vector *y, + const gsl_vector *c, gsl_vector *r) +{ + if (X->size1 != y->size) + { + GSL_ERROR + ("number of observations in y does not match rows of matrix X", + GSL_EBADLEN); + } + else if (X->size2 != c->size) + { + GSL_ERROR ("number of parameters c does not match columns of matrix X", + GSL_EBADLEN); + } + else if (y->size != r->size) + { + GSL_ERROR ("number of observations in y does not match number of residuals", + GSL_EBADLEN); + } + else + { + /* r = y - X c */ + gsl_vector_memcpy(r, y); + gsl_blas_dgemv(CblasNoTrans, -1.0, X, c, 1.0, r); + + return GSL_SUCCESS; + } +} /* gsl_multifit_linear_residuals() */ + +/* Perform a SVD decomposition on the least squares matrix X = U S Q^T + * + * Inputs: X - least squares matrix + * balance - 1 to perform column balancing + * work - workspace + * + * Notes: + * 1) On output, + * work->A contains the matrix U + * work->Q contains the matrix Q + * work->S contains the vector of singular values + * 2) The matrix X may have smaller dimensions than the workspace + * in the case of stdform2() - but the dimensions cannot be larger + * 3) On output, work->n and work->p are set to the dimensions of X + * 4) On output, work->rcond is set to the reciprocal condition number of X + */ + +static int +multifit_linear_svd (const gsl_matrix * X, + const int balance, + gsl_multifit_linear_workspace * work) +{ + const size_t n = X->size1; + const size_t p = X->size2; + + if (n > work->nmax || p > work->pmax) + { + GSL_ERROR("observation matrix larger than workspace", GSL_EBADLEN); + } + else + { + gsl_matrix_view A = gsl_matrix_submatrix(work->A, 0, 0, n, p); + gsl_matrix_view Q = gsl_matrix_submatrix(work->Q, 0, 0, p, p); + gsl_matrix_view QSI = gsl_matrix_submatrix(work->QSI, 0, 0, p, p); + gsl_vector_view S = gsl_vector_subvector(work->S, 0, p); + gsl_vector_view xt = gsl_vector_subvector(work->xt, 0, p); + gsl_vector_view D = gsl_vector_subvector(work->D, 0, p); + + /* Copy X to workspace, A <= X */ + + gsl_matrix_memcpy (&A.matrix, X); + + /* Balance the columns of the matrix A if requested */ + + if (balance) + { + gsl_linalg_balance_columns (&A.matrix, &D.vector); + } + else + { + gsl_vector_set_all (&D.vector, 1.0); + } + + /* decompose A into U S Q^T */ + gsl_linalg_SV_decomp_mod (&A.matrix, &QSI.matrix, &Q.matrix, + &S.vector, &xt.vector); + + /* compute reciprocal condition number rcond = smin / smax */ + { + double smin, smax; + gsl_vector_minmax(&S.vector, &smin, &smax); + work->rcond = smin / smax; + } + + work->n = n; + work->p = p; + + return GSL_SUCCESS; + } +} diff --git a/gsl-2.5/multifit/multilinear.lo b/gsl-2.5/multifit/multilinear.lo new file mode 100644 index 00000000..634bfe08 --- /dev/null +++ b/gsl-2.5/multifit/multilinear.lo @@ -0,0 +1,12 @@ +# multilinear.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/multilinear.o' + +# Name of the non-PIC object +non_pic_object='multilinear.o' + diff --git a/gsl-2.5/multifit/multireg.c b/gsl-2.5/multifit/multireg.c new file mode 100644 index 00000000..4573fa93 --- /dev/null +++ b/gsl-2.5/multifit/multireg.c @@ -0,0 +1,1220 @@ +/* multifit/multireg.c + * + * Copyright (C) 2015 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* + * References: + * + * [1] P. C. Hansen & D. P. O'Leary, "The use of the L-curve in + * the regularization of discrete ill-posed problems", SIAM J. Sci. + * Comput. 14 (1993), pp. 1487-1503. + * + * [2] P. C. Hansen, "Discrete Inverse Problems: Insight and Algorithms," + * SIAM Press, 2010. + */ + +#include +#include +#include +#include +#include +#include +#include + +#include "linear_common.c" + +int +gsl_multifit_linear_solve (const double lambda, + const gsl_matrix * X, + const gsl_vector * y, + gsl_vector * c, + double *rnorm, + double *snorm, + gsl_multifit_linear_workspace * work) +{ + size_t rank; + int status; + + status = multifit_linear_solve(X, y, GSL_DBL_EPSILON, lambda, &rank, c, + rnorm, snorm, work); + + return status; +} /* gsl_multifit_linear_solve() */ + +/* +gsl_multifit_linear_applyW() + Apply weight matrix to (X,y) LS system + +Inputs: X - least squares matrix n-by-p + w - weight vector n-by-1 or NULL for W = I + y - right hand side n-by-1 + WX - (output) sqrt(W) X, n-by-p + Wy - (output) sqrt(W) y, n-by-1 + +Notes: +1) If w = NULL, on output WX = X and Wy = y +2) It is allowed for WX = X and Wy = y for in-place transform +*/ + +int +gsl_multifit_linear_applyW(const gsl_matrix * X, + const gsl_vector * w, + const gsl_vector * y, + gsl_matrix * WX, + gsl_vector * Wy) +{ + const size_t n = X->size1; + const size_t p = X->size2; + + if (n != y->size) + { + GSL_ERROR("y vector does not match X", GSL_EBADLEN); + } + else if (w != NULL && n != w->size) + { + GSL_ERROR("weight vector does not match X", GSL_EBADLEN); + } + else if (n != WX->size1 || p != WX->size2) + { + GSL_ERROR("WX matrix dimensions do not match X", GSL_EBADLEN); + } + else if (n != Wy->size) + { + GSL_ERROR("Wy vector must be length n", GSL_EBADLEN); + } + else + { + size_t i; + + /* copy WX = X; Wy = y if distinct pointers */ + if (WX != X) + gsl_matrix_memcpy(WX, X); + if (Wy != y) + gsl_vector_memcpy(Wy, y); + + if (w != NULL) + { + /* construct WX = sqrt(W) X and Wy = sqrt(W) y */ + for (i = 0; i < n; ++i) + { + double wi = gsl_vector_get(w, i); + double swi; + gsl_vector_view row = gsl_matrix_row(WX, i); + double *yi = gsl_vector_ptr(Wy, i); + + if (wi < 0.0) + wi = 0.0; + + swi = sqrt(wi); + gsl_vector_scale(&row.vector, swi); + *yi *= swi; + } + } + + return GSL_SUCCESS; + } +} + +/* +gsl_multifit_linear_wstdform1() + Using regularization matrix +L = diag(l_1,l_2,...,l_p), transform to Tikhonov standard form: + +X~ = sqrt(W) X L^{-1} +y~ = sqrt(W) y +c~ = L c + +Inputs: L - Tikhonov matrix as a vector of diagonal elements p-by-1; + or NULL for L = I + X - least squares matrix n-by-p + y - right hand side vector n-by-1 + w - weight vector n-by-1; or NULL for W = I + Xs - least squares matrix in standard form X~ n-by-p + ys - right hand side vector in standard form y~ n-by-1 + work - workspace + +Return: success/error + +Notes: +1) It is allowed for X = Xs and y = ys +*/ + +int +gsl_multifit_linear_wstdform1 (const gsl_vector * L, + const gsl_matrix * X, + const gsl_vector * w, + const gsl_vector * y, + gsl_matrix * Xs, + gsl_vector * ys, + gsl_multifit_linear_workspace * work) +{ + const size_t n = X->size1; + const size_t p = X->size2; + + if (n > work->nmax || p > work->pmax) + { + GSL_ERROR("observation matrix larger than workspace", GSL_EBADLEN); + } + else if (L != NULL && p != L->size) + { + GSL_ERROR("L vector does not match X", GSL_EBADLEN); + } + else if (n != y->size) + { + GSL_ERROR("y vector does not match X", GSL_EBADLEN); + } + else if (w != NULL && n != w->size) + { + GSL_ERROR("weight vector does not match X", GSL_EBADLEN); + } + else if (n != Xs->size1 || p != Xs->size2) + { + GSL_ERROR("Xs matrix dimensions do not match X", GSL_EBADLEN); + } + else if (n != ys->size) + { + GSL_ERROR("ys vector must be length n", GSL_EBADLEN); + } + else + { + int status = GSL_SUCCESS; + + /* compute Xs = sqrt(W) X and ys = sqrt(W) y */ + status = gsl_multifit_linear_applyW(X, w, y, Xs, ys); + if (status) + return status; + + if (L != NULL) + { + size_t j; + + /* construct X~ = sqrt(W) X * L^{-1} matrix */ + for (j = 0; j < p; ++j) + { + gsl_vector_view Xj = gsl_matrix_column(Xs, j); + double lj = gsl_vector_get(L, j); + + if (lj == 0.0) + { + GSL_ERROR("L matrix is singular", GSL_EDOM); + } + + gsl_vector_scale(&Xj.vector, 1.0 / lj); + } + } + + return status; + } +} + +/* +gsl_multifit_linear_stdform1() + Using regularization matrix L = diag(l_1,l_2,...,l_p), +and W = I, transform to Tikhonov standard form: + +X~ = X L^{-1} +y~ = y +c~ = L c + +Inputs: L - Tikhonov matrix as a vector of diagonal elements p-by-1 + X - least squares matrix n-by-p + y - right hand side vector n-by-1 + Xs - least squares matrix in standard form X~ n-by-p + ys - right hand side vector in standard form y~ n-by-1 + work - workspace + +Return: success/error + +Notes: +1) It is allowed for X = Xs +*/ + +int +gsl_multifit_linear_stdform1 (const gsl_vector * L, + const gsl_matrix * X, + const gsl_vector * y, + gsl_matrix * Xs, + gsl_vector * ys, + gsl_multifit_linear_workspace * work) +{ + int status; + + status = gsl_multifit_linear_wstdform1(L, X, NULL, y, Xs, ys, work); + + return status; +} + +int +gsl_multifit_linear_L_decomp (gsl_matrix * L, gsl_vector * tau) +{ + const size_t m = L->size1; + const size_t p = L->size2; + int status; + + if (tau->size != GSL_MIN(m, p)) + { + GSL_ERROR("tau vector must be min(m,p)", GSL_EBADLEN); + } + else if (m >= p) + { + /* square or tall L matrix */ + status = gsl_linalg_QR_decomp(L, tau); + return status; + } + else + { + /* more columns than rows, compute qr(L^T) */ + gsl_matrix_view LTQR = gsl_matrix_view_array(L->data, p, m); + gsl_matrix *LT = gsl_matrix_alloc(p, m); + + /* XXX: use temporary storage due to difficulties in transforming + * a rectangular matrix in-place */ + gsl_matrix_transpose_memcpy(LT, L); + gsl_matrix_memcpy(<QR.matrix, LT); + gsl_matrix_free(LT); + + status = gsl_linalg_QR_decomp(<QR.matrix, tau); + + return status; + } +} + +/* +gsl_multifit_linear_wstdform2() + Using regularization matrix L which is m-by-p, transform to Tikhonov +standard form. This routine is separated into two cases: + +Case 1: m >= p, here we can use the QR decomposition of L = QR, and note +that ||L c|| = ||R c|| where R is p-by-p. Therefore, + +X~ = X R^{-1} is n-by-p +y~ = y is n-by-1 +c~ is p-by-1 +M is not used + +Case 2: m < p + +X~ is (n - p + m)-by-m +y~ is (n - p + m)-by-1 +c~ is m-by-1 +M is n-by-p (workspace) + +Inputs: LQR - output from gsl_multifit_linear_L_decomp() + Ltau - output from gsl_multifit_linear_L_decomp() + X - least squares matrix n-by-p + w - weight vector n-by-1; or NULL for W = I + y - right hand side vector n-by-1 + Xs - (output) least squares matrix in standard form + case 1: n-by-p + case 2: (n - p + m)-by-m + ys - (output) right hand side vector in standard form + case 1: n-by-1 + case 2: (n - p + m)-by-1 + M - (output) workspace matrix needed to reconstruct solution vector + case 1: not used + case 2: n-by-p + work - workspace + +Return: success/error + +Notes: +1) If m >= p, on output: + Xs = X R^{-1} + ys = y + +2) If m < p, on output: + M(:,1:pm) contains QR decomposition of A * K_o, needed to reconstruct + solution vector, where pm = p - m; M(:,p) contains Householder scalars +*/ + +int +gsl_multifit_linear_wstdform2 (const gsl_matrix * LQR, + const gsl_vector * Ltau, + const gsl_matrix * X, + const gsl_vector * w, + const gsl_vector * y, + gsl_matrix * Xs, + gsl_vector * ys, + gsl_matrix * M, + gsl_multifit_linear_workspace * work) +{ + const size_t m = LQR->size1; + const size_t n = X->size1; + const size_t p = X->size2; + + if (n > work->nmax || p > work->pmax) + { + GSL_ERROR("observation matrix larger than workspace", GSL_EBADLEN); + } + else if (p != LQR->size2) + { + GSL_ERROR("LQR and X matrices have different numbers of columns", GSL_EBADLEN); + } + else if (n != y->size) + { + GSL_ERROR("y vector does not match X", GSL_EBADLEN); + } + else if (w != NULL && n != w->size) + { + GSL_ERROR("weights vector must be length n", GSL_EBADLEN); + } + else if (m >= p) /* square or tall L matrix */ + { + /* the sizes of Xs and ys depend on whether m >= p or m < p */ + if (n != Xs->size1 || p != Xs->size2) + { + GSL_ERROR("Xs matrix must be n-by-p", GSL_EBADLEN); + } + else if (n != ys->size) + { + GSL_ERROR("ys vector must have length n", GSL_EBADLEN); + } + else + { + int status; + size_t i; + gsl_matrix_const_view R = gsl_matrix_const_submatrix(LQR, 0, 0, p, p); + + /* compute Xs = sqrt(W) X and ys = sqrt(W) y */ + status = gsl_multifit_linear_applyW(X, w, y, Xs, ys); + if (status) + return status; + + /* compute X~ = X R^{-1} using QR decomposition of L */ + for (i = 0; i < n; ++i) + { + gsl_vector_view v = gsl_matrix_row(Xs, i); + + /* solve: R^T y = X_i */ + gsl_blas_dtrsv(CblasUpper, CblasTrans, CblasNonUnit, &R.matrix, &v.vector); + } + + return GSL_SUCCESS; + } + } + else /* L matrix with m < p */ + { + const size_t pm = p - m; + const size_t npm = n - pm; + + /* + * This code closely follows section 2.6.1 of Hansen's + * "Regularization Tools" manual + */ + + if (npm != Xs->size1 || m != Xs->size2) + { + GSL_ERROR("Xs matrix must be (n-p+m)-by-m", GSL_EBADLEN); + } + else if (npm != ys->size) + { + GSL_ERROR("ys vector must be of length (n-p+m)", GSL_EBADLEN); + } + else if (n != M->size1 || p != M->size2) + { + GSL_ERROR("M matrix must be n-by-p", GSL_EBADLEN); + } + else + { + int status; + gsl_matrix_view A = gsl_matrix_submatrix(work->A, 0, 0, n, p); + gsl_vector_view b = gsl_vector_subvector(work->t, 0, n); + + gsl_matrix_view LTQR = gsl_matrix_view_array(LQR->data, p, m); /* qr(L^T) */ + gsl_matrix_view Rp = gsl_matrix_view_array(LQR->data, m, m); /* R factor of L^T */ + gsl_vector_const_view LTtau = gsl_vector_const_subvector(Ltau, 0, m); + + /* + * M(:,1:p-m) will hold QR decomposition of A K_o; M(:,p) will hold + * Householder scalars + */ + gsl_matrix_view MQR = gsl_matrix_submatrix(M, 0, 0, n, pm); + gsl_vector_view Mtau = gsl_matrix_subcolumn(M, p - 1, 0, GSL_MIN(n, pm)); + + gsl_matrix_view AKo, AKp, HqTAKp; + gsl_vector_view v; + size_t i; + + /* compute A = sqrt(W) X and b = sqrt(W) y */ + status = gsl_multifit_linear_applyW(X, w, y, &A.matrix, &b.vector); + if (status) + return status; + + /* compute: A <- A K = [ A K_p ; A K_o ] */ + gsl_linalg_QR_matQ(<QR.matrix, <tau.vector, &A.matrix); + AKp = gsl_matrix_submatrix(&A.matrix, 0, 0, n, m); + AKo = gsl_matrix_submatrix(&A.matrix, 0, m, n, pm); + + /* compute QR decomposition [H,T] = qr(A * K_o) and store in M */ + gsl_matrix_memcpy(&MQR.matrix, &AKo.matrix); + gsl_linalg_QR_decomp(&MQR.matrix, &Mtau.vector); + + /* AKp currently contains A K_p; apply H^T from the left to get H^T A K_p */ + gsl_linalg_QR_QTmat(&MQR.matrix, &Mtau.vector, &AKp.matrix); + + /* the last npm rows correspond to H_q^T A K_p */ + HqTAKp = gsl_matrix_submatrix(&AKp.matrix, pm, 0, npm, m); + + /* solve: Xs R_p^T = H_q^T A K_p for Xs */ + gsl_matrix_memcpy(Xs, &HqTAKp.matrix); + for (i = 0; i < npm; ++i) + { + gsl_vector_view x = gsl_matrix_row(Xs, i); + gsl_blas_dtrsv(CblasUpper, CblasNoTrans, CblasNonUnit, &Rp.matrix, &x.vector); + } + + /* + * compute: ys = H_q^T b; this is equivalent to computing + * the last q elements of H^T b (q = npm) + */ + v = gsl_vector_subvector(&b.vector, pm, npm); + gsl_linalg_QR_QTvec(&MQR.matrix, &Mtau.vector, &b.vector); + gsl_vector_memcpy(ys, &v.vector); + + return GSL_SUCCESS; + } + } +} + +int +gsl_multifit_linear_stdform2 (const gsl_matrix * LQR, + const gsl_vector * Ltau, + const gsl_matrix * X, + const gsl_vector * y, + gsl_matrix * Xs, + gsl_vector * ys, + gsl_matrix * M, + gsl_multifit_linear_workspace * work) +{ + int status; + + status = gsl_multifit_linear_wstdform2(LQR, Ltau, X, NULL, y, Xs, ys, M, work); + + return status; +} + +/* +gsl_multifit_linear_genform1() + Backtransform regularized solution vector using matrix +L = diag(L) +*/ + +int +gsl_multifit_linear_genform1 (const gsl_vector * L, + const gsl_vector * cs, + gsl_vector * c, + gsl_multifit_linear_workspace * work) +{ + if (L->size > work->pmax) + { + GSL_ERROR("L vector does not match workspace", GSL_EBADLEN); + } + else if (L->size != cs->size) + { + GSL_ERROR("cs vector does not match L", GSL_EBADLEN); + } + else if (L->size != c->size) + { + GSL_ERROR("c vector does not match L", GSL_EBADLEN); + } + else + { + /* compute true solution vector c = L^{-1} c~ */ + gsl_vector_memcpy(c, cs); + gsl_vector_div(c, L); + + return GSL_SUCCESS; + } +} + +/* +gsl_multifit_linear_wgenform2() + Backtransform regularized solution vector in standard form to recover +original vector + +Inputs: LQR - output from gsl_multifit_linear_L_decomp() + Ltau - output from gsl_multifit_linear_L_decomp() + X - original least squares matrix n-by-p + w - original weight vector n-by-1 or NULL for W = I + y - original rhs vector n-by-1 + cs - standard form solution vector + c - (output) original solution vector p-by-1 + M - matrix computed by gsl_multifit_linear_wstdform2() + work - workspace +*/ + +int +gsl_multifit_linear_wgenform2 (const gsl_matrix * LQR, + const gsl_vector * Ltau, + const gsl_matrix * X, + const gsl_vector * w, + const gsl_vector * y, + const gsl_vector * cs, + const gsl_matrix * M, + gsl_vector * c, + gsl_multifit_linear_workspace * work) +{ + const size_t m = LQR->size1; + const size_t n = X->size1; + const size_t p = X->size2; + + if (n > work->nmax || p > work->pmax) + { + GSL_ERROR("X matrix does not match workspace", GSL_EBADLEN); + } + else if (p != LQR->size2) + { + GSL_ERROR("LQR matrix does not match X", GSL_EBADLEN); + } + else if (p != c->size) + { + GSL_ERROR("c vector does not match X", GSL_EBADLEN); + } + else if (w != NULL && n != w->size) + { + GSL_ERROR("w vector does not match X", GSL_EBADLEN); + } + else if (n != y->size) + { + GSL_ERROR("y vector does not match X", GSL_EBADLEN); + } + else if (m >= p) /* square or tall L matrix */ + { + if (p != cs->size) + { + GSL_ERROR("cs vector must be length p", GSL_EBADLEN); + } + else + { + int s; + gsl_matrix_const_view R = gsl_matrix_const_submatrix(LQR, 0, 0, p, p); /* R factor of L */ + + /* solve R c = cs for true solution c, using QR decomposition of L */ + gsl_vector_memcpy(c, cs); + s = gsl_blas_dtrsv(CblasUpper, CblasNoTrans, CblasNonUnit, &R.matrix, c); + + return s; + } + } + else /* rectangular L matrix with m < p */ + { + if (m != cs->size) + { + GSL_ERROR("cs vector must be length m", GSL_EBADLEN); + } + else if (n != M->size1 || p != M->size2) + { + GSL_ERROR("M matrix must be size n-by-p", GSL_EBADLEN); + } + else + { + int status; + const size_t pm = p - m; + gsl_matrix_view A = gsl_matrix_submatrix(work->A, 0, 0, n, p); + gsl_vector_view b = gsl_vector_subvector(work->t, 0, n); + gsl_matrix_view Rp = gsl_matrix_view_array(LQR->data, m, m); /* R_p */ + gsl_matrix_view LTQR = gsl_matrix_view_array(LQR->data, p, m); + gsl_vector_const_view LTtau = gsl_vector_const_subvector(Ltau, 0, m); + gsl_matrix_const_view MQR = gsl_matrix_const_submatrix(M, 0, 0, n, pm); + gsl_vector_const_view Mtau = gsl_matrix_const_subcolumn(M, p - 1, 0, GSL_MIN(n, pm)); + gsl_matrix_const_view To = gsl_matrix_const_submatrix(&MQR.matrix, 0, 0, pm, pm); + gsl_vector_view workp = gsl_vector_subvector(work->xt, 0, p); + gsl_vector_view v1, v2; + + /* compute A = sqrt(W) X and b = sqrt(W) y */ + status = gsl_multifit_linear_applyW(X, w, y, &A.matrix, &b.vector); + if (status) + return status; + + /* initialize c to zero */ + gsl_vector_set_zero(c); + + /* compute c = L_inv cs = K_p R_p^{-T} cs */ + + /* set c(1:m) = R_p^{-T} cs */ + v1 = gsl_vector_subvector(c, 0, m); + gsl_vector_memcpy(&v1.vector, cs); + gsl_blas_dtrsv(CblasUpper, CblasTrans, CblasNonUnit, &Rp.matrix, &v1.vector); + + /* c <- K R_p^{-T} cs = [ K_p R_p^{_T} cs ; 0 ] */ + gsl_linalg_QR_Qvec(<QR.matrix, <tau.vector, c); + + /* compute: b1 = b - A L_inv cs */ + gsl_blas_dgemv(CblasNoTrans, -1.0, &A.matrix, c, 1.0, &b.vector); + + /* compute: b2 = H^T b1 */ + gsl_linalg_QR_QTvec(&MQR.matrix, &Mtau.vector, &b.vector); + + /* compute: b3 = T_o^{-1} b2 */ + v1 = gsl_vector_subvector(&b.vector, 0, pm); + gsl_blas_dtrsv(CblasUpper, CblasNoTrans, CblasNonUnit, &To.matrix, &v1.vector); + + /* compute: b4 = K_o b3 */ + gsl_vector_set_zero(&workp.vector); + v2 = gsl_vector_subvector(&workp.vector, m, pm); + gsl_vector_memcpy(&v2.vector, &v1.vector); + gsl_linalg_QR_Qvec(<QR.matrix, <tau.vector, &workp.vector); + + /* final solution vector */ + gsl_vector_add(c, &workp.vector); + + return GSL_SUCCESS; + } + } +} + +int +gsl_multifit_linear_genform2 (const gsl_matrix * LQR, + const gsl_vector * Ltau, + const gsl_matrix * X, + const gsl_vector * y, + const gsl_vector * cs, + const gsl_matrix * M, + gsl_vector * c, + gsl_multifit_linear_workspace * work) +{ + int status; + + status = gsl_multifit_linear_wgenform2(LQR, Ltau, X, NULL, y, cs, M, c, work); + + return status; +} + +/* +gsl_multifit_linear_lreg() + Calculate regularization parameters to use in L-curve +analysis + +Inputs: smin - smallest singular value of LS system + smax - largest singular value of LS system > 0 + reg_param - (output) vector of regularization parameters + derived from singular values + +Return: success/error +*/ + +int +gsl_multifit_linear_lreg (const double smin, const double smax, + gsl_vector * reg_param) +{ + if (smax <= 0.0) + { + GSL_ERROR("smax must be positive", GSL_EINVAL); + } + else + { + const size_t N = reg_param->size; + + /* smallest regularization parameter */ + const double smin_ratio = 16.0 * GSL_DBL_EPSILON; + const double new_smin = GSL_MAX(smin, smax*smin_ratio); + double ratio; + size_t i; + + gsl_vector_set(reg_param, N - 1, new_smin); + + /* ratio so that reg_param(1) = s(1) */ + ratio = pow(smax / new_smin, 1.0 / ((double)N - 1.0)); + + /* calculate the regularization parameters */ + for (i = N - 1; i > 0 && i--; ) + { + double rp1 = gsl_vector_get(reg_param, i + 1); + gsl_vector_set(reg_param, i, ratio * rp1); + } + + return GSL_SUCCESS; + } +} + +/* +gsl_multifit_linear_lcurve() + Calculate L-curve using regularization parameters estimated +from singular values of least squares matrix + +Inputs: y - right hand side vector + reg_param - (output) vector of regularization parameters + derived from singular values + rho - (output) vector of residual norms ||y - X c|| + eta - (output) vector of solution norms ||lambda c|| + work - workspace + +Return: success/error + +Notes: +1) SVD of X must be computed first by calling multifit_linear_svd(); + work->n and work->p are initialized by this function +*/ + +int +gsl_multifit_linear_lcurve (const gsl_vector * y, + gsl_vector * reg_param, + gsl_vector * rho, gsl_vector * eta, + gsl_multifit_linear_workspace * work) +{ + const size_t n = y->size; + const size_t N = rho->size; /* number of points on L-curve */ + + if (n != work->n) + { + GSL_ERROR("y vector does not match workspace", GSL_EBADLEN); + } + else if (N < 3) + { + GSL_ERROR ("at least 3 points are needed for L-curve analysis", + GSL_EBADLEN); + } + else if (N != eta->size) + { + GSL_ERROR ("size of rho and eta vectors do not match", + GSL_EBADLEN); + } + else if (reg_param->size != eta->size) + { + GSL_ERROR ("size of reg_param and eta vectors do not match", + GSL_EBADLEN); + } + else + { + int status = GSL_SUCCESS; + const size_t p = work->p; + + size_t i, j; + + gsl_matrix_view A = gsl_matrix_submatrix(work->A, 0, 0, n, p); + gsl_vector_view S = gsl_vector_subvector(work->S, 0, p); + gsl_vector_view xt = gsl_vector_subvector(work->xt, 0, p); + gsl_vector_view workp = gsl_matrix_subcolumn(work->QSI, 0, 0, p); + gsl_vector_view workp2 = gsl_vector_subvector(work->D, 0, p); /* D isn't used for regularized problems */ + + const double smax = gsl_vector_get(&S.vector, 0); + const double smin = gsl_vector_get(&S.vector, p - 1); + + double dr; /* residual error from projection */ + double normy = gsl_blas_dnrm2(y); + double normUTy; + + /* compute projection xt = U^T y */ + gsl_blas_dgemv (CblasTrans, 1.0, &A.matrix, y, 0.0, &xt.vector); + + normUTy = gsl_blas_dnrm2(&xt.vector); + dr = normy*normy - normUTy*normUTy; + + /* calculate regularization parameters */ + gsl_multifit_linear_lreg(smin, smax, reg_param); + + for (i = 0; i < N; ++i) + { + double lambda = gsl_vector_get(reg_param, i); + double lambda_sq = lambda * lambda; + + for (j = 0; j < p; ++j) + { + double sj = gsl_vector_get(&S.vector, j); + double xtj = gsl_vector_get(&xt.vector, j); + double f = sj / (sj*sj + lambda_sq); + + gsl_vector_set(&workp.vector, j, f * xtj); + gsl_vector_set(&workp2.vector, j, (1.0 - sj*f) * xtj); + } + + gsl_vector_set(eta, i, gsl_blas_dnrm2(&workp.vector)); + gsl_vector_set(rho, i, gsl_blas_dnrm2(&workp2.vector)); + } + + if (n > p && dr > 0.0) + { + /* add correction to residual norm (see eqs 6-7 of [1]) */ + for (i = 0; i < N; ++i) + { + double rhoi = gsl_vector_get(rho, i); + double *ptr = gsl_vector_ptr(rho, i); + + *ptr = sqrt(rhoi*rhoi + dr); + } + } + + /* restore D to identity matrix */ + gsl_vector_set_all(work->D, 1.0); + + return status; + } +} /* gsl_multifit_linear_lcurve() */ + +/* +gsl_multifit_linear_lcorner() + Determine point on L-curve of maximum curvature. For each +set of 3 points on the L-curve, the circle which passes through +the 3 points is computed. The radius of the circle is then used +as an estimate of the curvature at the middle point. The point +with maximum curvature is then selected. + +Inputs: rho - vector of residual norms ||A x - b|| + eta - vector of solution norms ||L x|| + idx - (output) index i such that + (log(rho(i)),log(eta(i))) is the point of + maximum curvature + +Return: success/error +*/ + +int +gsl_multifit_linear_lcorner(const gsl_vector *rho, + const gsl_vector *eta, + size_t *idx) +{ + const size_t n = rho->size; + + if (n < 3) + { + GSL_ERROR ("at least 3 points are needed for L-curve analysis", + GSL_EBADLEN); + } + else if (n != eta->size) + { + GSL_ERROR ("size of rho and eta vectors do not match", + GSL_EBADLEN); + } + else + { + int s = GSL_SUCCESS; + size_t i; + double x1, y1; /* first point of triangle on L-curve */ + double x2, y2; /* second point of triangle on L-curve */ + double rmin = -1.0; /* minimum radius of curvature */ + + /* initial values */ + x1 = log(gsl_vector_get(rho, 0)); + y1 = log(gsl_vector_get(eta, 0)); + + x2 = log(gsl_vector_get(rho, 1)); + y2 = log(gsl_vector_get(eta, 1)); + + for (i = 1; i < n - 1; ++i) + { + /* + * The points (x1,y1), (x2,y2), (x3,y3) are the previous, + * current, and next point on the L-curve. We will find + * the circle which fits these 3 points and take its radius + * as an estimate of the curvature at this point. + */ + double x3 = log(gsl_vector_get(rho, i + 1)); + double y3 = log(gsl_vector_get(eta, i + 1)); + + double x21 = x2 - x1; + double y21 = y2 - y1; + double x31 = x3 - x1; + double y31 = y3 - y1; + double h21 = x21*x21 + y21*y21; + double h31 = x31*x31 + y31*y31; + double d = fabs(2.0 * (x21*y31 - x31*y21)); + double r = sqrt(h21*h31*((x3-x2)*(x3-x2)+(y3-y2)*(y3-y2))) / d; + + /* if d =~ 0 then there are nearly colinear points */ + if (gsl_finite(r)) + { + /* check for smallest radius of curvature */ + if (r < rmin || rmin < 0.0) + { + rmin = r; + *idx = i; + } + } + + /* update previous/current L-curve values */ + x1 = x2; + y1 = y2; + x2 = x3; + y2 = y3; + } + + /* check if a minimum radius was found */ + if (rmin < 0.0) + { + /* possibly co-linear points */ + GSL_ERROR("failed to find minimum radius", GSL_EINVAL); + } + + return s; + } +} /* gsl_multifit_linear_lcorner() */ + +/* +gsl_multifit_linear_lcorner2() + Determine point on L-curve (lambda^2, ||c||^2) of maximum curvature. +For each set of 3 points on the L-curve, the circle which passes through +the 3 points is computed. The radius of the circle is then used +as an estimate of the curvature at the middle point. The point +with maximum curvature is then selected. + +This routine is based on the paper + +M. Rezghi and S. M. Hosseini, "A new variant of L-curve for Tikhonov +regularization", J. Comp. App. Math., 231 (2009). + +Inputs: reg_param - vector of regularization parameters + eta - vector of solution norms ||L x|| + idx - (output) index i such that + (lambda(i)^2,eta(i)^2) is the point of + maximum curvature + +Return: success/error +*/ + +int +gsl_multifit_linear_lcorner2(const gsl_vector *reg_param, + const gsl_vector *eta, + size_t *idx) +{ + const size_t n = reg_param->size; + + if (n < 3) + { + GSL_ERROR ("at least 3 points are needed for L-curve analysis", + GSL_EBADLEN); + } + else if (n != eta->size) + { + GSL_ERROR ("size of reg_param and eta vectors do not match", + GSL_EBADLEN); + } + else + { + int s = GSL_SUCCESS; + size_t i; + double x1, y1; /* first point of triangle on L-curve */ + double x2, y2; /* second point of triangle on L-curve */ + double rmin = -1.0; /* minimum radius of curvature */ + + /* initial values */ + x1 = gsl_vector_get(reg_param, 0); + x1 *= x1; + y1 = gsl_vector_get(eta, 0); + y1 *= y1; + + x2 = gsl_vector_get(reg_param, 1); + x2 *= x2; + y2 = gsl_vector_get(eta, 1); + y2 *= y2; + + for (i = 1; i < n - 1; ++i) + { + /* + * The points (x1,y1), (x2,y2), (x3,y3) are the previous, + * current, and next point on the L-curve. We will find + * the circle which fits these 3 points and take its radius + * as an estimate of the curvature at this point. + */ + double lamip1 = gsl_vector_get(reg_param, i + 1); + double etaip1 = gsl_vector_get(eta, i + 1); + double x3 = lamip1 * lamip1; + double y3 = etaip1 * etaip1; + + double x21 = x2 - x1; + double y21 = y2 - y1; + double x31 = x3 - x1; + double y31 = y3 - y1; + double h21 = x21*x21 + y21*y21; + double h31 = x31*x31 + y31*y31; + double d = fabs(2.0 * (x21*y31 - x31*y21)); + double r = sqrt(h21*h31*((x3-x2)*(x3-x2)+(y3-y2)*(y3-y2))) / d; + + /* if d =~ 0 then there are nearly colinear points */ + if (gsl_finite(r)) + { + /* check for smallest radius of curvature */ + if (r < rmin || rmin < 0.0) + { + rmin = r; + *idx = i; + } + } + + /* update previous/current L-curve values */ + x1 = x2; + y1 = y2; + x2 = x3; + y2 = y3; + } + + /* check if a minimum radius was found */ + if (rmin < 0.0) + { + /* possibly co-linear points */ + GSL_ERROR("failed to find minimum radius", GSL_EINVAL); + } + + return s; + } +} /* gsl_multifit_linear_lcorner2() */ + +#define GSL_MULTIFIT_MAXK 100 + +/* +gsl_multifit_linear_L() + Compute discrete approximation to derivative operator of order +k on a regular grid of p points, ie: L is (p-k)-by-p +*/ + +int +gsl_multifit_linear_Lk(const size_t p, const size_t k, gsl_matrix *L) +{ + if (p <= k) + { + GSL_ERROR("p must be larger than derivative order", GSL_EBADLEN); + } + else if (k >= GSL_MULTIFIT_MAXK - 1) + { + GSL_ERROR("derivative order k too large", GSL_EBADLEN); + } + else if (p - k != L->size1 || p != L->size2) + { + GSL_ERROR("L matrix must be (p-k)-by-p", GSL_EBADLEN); + } + else + { + double c_data[GSL_MULTIFIT_MAXK]; + gsl_vector_view cv = gsl_vector_view_array(c_data, k + 1); + size_t i, j; + + /* zeroth derivative */ + if (k == 0) + { + gsl_matrix_set_identity(L); + return GSL_SUCCESS; + } + + gsl_matrix_set_zero(L); + + gsl_vector_set_zero(&cv.vector); + gsl_vector_set(&cv.vector, 0, -1.0); + gsl_vector_set(&cv.vector, 1, 1.0); + + for (i = 1; i < k; ++i) + { + double cjm1 = 0.0; + + for (j = 0; j < k + 1; ++j) + { + double cj = gsl_vector_get(&cv.vector, j); + + gsl_vector_set(&cv.vector, j, cjm1 - cj); + cjm1 = cj; + } + } + + /* build L, the c_i are the entries on the diagonals */ + for (i = 0; i < k + 1; ++i) + { + gsl_vector_view v = gsl_matrix_superdiagonal(L, i); + double ci = gsl_vector_get(&cv.vector, i); + + gsl_vector_set_all(&v.vector, ci); + } + + return GSL_SUCCESS; + } +} /* gsl_multifit_linear_Lk() */ + +/* +gsl_multifit_linear_Lsobolev() + Construct Sobolev smoothing norm operator + +L = [ a_0 I; a_1 L_1; a_2 L_2; ...; a_k L_k ] + +by computing the Cholesky factor of L^T L + +Inputs: p - number of columns of L + kmax - maximum derivative order (< p) + alpha - vector of weights; alpha_k multiplies L_k, size kmax + 1 + L - (output) upper triangular Sobolev matrix p-by-p, + stored in upper triangle + work - workspace + +Notes: +1) work->Q is used to store intermediate L_k matrices +*/ + +int +gsl_multifit_linear_Lsobolev(const size_t p, const size_t kmax, + const gsl_vector *alpha, gsl_matrix *L, + gsl_multifit_linear_workspace *work) +{ + if (p > work->pmax) + { + GSL_ERROR("p is larger than workspace", GSL_EBADLEN); + } + else if (p <= kmax) + { + GSL_ERROR("p must be larger than derivative order", GSL_EBADLEN); + } + else if (kmax + 1 != alpha->size) + { + GSL_ERROR("alpha must be size kmax + 1", GSL_EBADLEN); + } + else if (p != L->size1) + { + GSL_ERROR("L matrix is wrong size", GSL_EBADLEN); + } + else if (L->size1 != L->size2) + { + GSL_ERROR("L matrix is not square", GSL_ENOTSQR); + } + else + { + int s; + size_t j, k; + gsl_vector_view d = gsl_matrix_diagonal(L); + const double alpha0 = gsl_vector_get(alpha, 0); + + /* initialize L to alpha0^2 I */ + gsl_matrix_set_zero(L); + gsl_vector_add_constant(&d.vector, alpha0 * alpha0); + + for (k = 1; k <= kmax; ++k) + { + gsl_matrix_view Lk = gsl_matrix_submatrix(work->Q, 0, 0, p - k, p); + double ak = gsl_vector_get(alpha, k); + + /* compute a_k L_k */ + s = gsl_multifit_linear_Lk(p, k, &Lk.matrix); + if (s) + return s; + + gsl_matrix_scale(&Lk.matrix, ak); + + /* LTL += L_k^T L_k */ + gsl_blas_dsyrk(CblasLower, CblasTrans, 1.0, &Lk.matrix, 1.0, L); + } + + s = gsl_linalg_cholesky_decomp(L); + if (s) + return s; + + /* copy Cholesky factor to upper triangle and zero out bottom */ + gsl_matrix_transpose_tricpy('L', 1, L, L); + + for (j = 0; j < p; ++j) + { + for (k = 0; k < j; ++k) + gsl_matrix_set(L, j, k, 0.0); + } + + return GSL_SUCCESS; + } +} diff --git a/gsl-2.5/multifit/multireg.lo b/gsl-2.5/multifit/multireg.lo new file mode 100644 index 00000000..acf7768a --- /dev/null +++ b/gsl-2.5/multifit/multireg.lo @@ -0,0 +1,12 @@ +# multireg.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/multireg.o' + +# Name of the non-PIC object +non_pic_object='multireg.o' + diff --git a/gsl-2.5/multifit/multirobust.c b/gsl-2.5/multifit/multirobust.c new file mode 100644 index 00000000..7df7e8e6 --- /dev/null +++ b/gsl-2.5/multifit/multirobust.c @@ -0,0 +1,767 @@ +/* multirobust.c + * + * Copyright (C) 2013 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * This module contains routines related to robust linear least squares. The + * algorithm used closely follows the publications: + * + * [1] DuMouchel, W. and F. O'Brien (1989), "Integrating a robust + * option into a multiple regression computing environment," + * Computer Science and Statistics: Proceedings of the 21st + * Symposium on the Interface, American Statistical Association + * + * [2] Street, J.O., R.J. Carroll, and D. Ruppert (1988), "A note on + * computing robust regression estimates via iteratively + * reweighted least squares," The American Statistician, v. 42, + * pp. 152-154. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +static int robust_test_convergence(const gsl_vector *c_prev, const gsl_vector *c, + const double tol); +static double robust_madsigma(const gsl_vector *r, const size_t p, gsl_vector *workn); +static double robust_robsigma(const gsl_vector *r, const double s, + const double tune, gsl_multifit_robust_workspace *w); +static double robust_sigma(const double s_ols, const double s_rob, + gsl_multifit_robust_workspace *w); +static int robust_covariance(const double sigma, gsl_matrix *cov, + gsl_multifit_robust_workspace *w); + +/* +gsl_multifit_robust_alloc + Allocate a robust workspace + +Inputs: T - robust weighting algorithm + n - number of observations + p - number of model parameters + +Return: pointer to workspace +*/ + +gsl_multifit_robust_workspace * +gsl_multifit_robust_alloc(const gsl_multifit_robust_type *T, + const size_t n, const size_t p) +{ + gsl_multifit_robust_workspace *w; + + if (n < p) + { + GSL_ERROR_VAL("observations n must be >= p", GSL_EINVAL, 0); + } + + w = calloc(1, sizeof(gsl_multifit_robust_workspace)); + if (w == 0) + { + GSL_ERROR_VAL("failed to allocate space for multifit_robust struct", + GSL_ENOMEM, 0); + } + + w->n = n; + w->p = p; + w->type = T; + w->maxiter = 100; /* maximum iterations */ + w->tune = w->type->tuning_default; + + w->multifit_p = gsl_multifit_linear_alloc(n, p); + if (w->multifit_p == 0) + { + gsl_multifit_robust_free(w); + GSL_ERROR_VAL("failed to allocate space for multifit_linear struct", + GSL_ENOMEM, 0); + } + + w->r = gsl_vector_alloc(n); + if (w->r == 0) + { + gsl_multifit_robust_free(w); + GSL_ERROR_VAL("failed to allocate space for residuals", + GSL_ENOMEM, 0); + } + + w->weights = gsl_vector_alloc(n); + if (w->weights == 0) + { + gsl_multifit_robust_free(w); + GSL_ERROR_VAL("failed to allocate space for weights", GSL_ENOMEM, 0); + } + + w->c_prev = gsl_vector_alloc(p); + if (w->c_prev == 0) + { + gsl_multifit_robust_free(w); + GSL_ERROR_VAL("failed to allocate space for c_prev", GSL_ENOMEM, 0); + } + + w->resfac = gsl_vector_alloc(n); + if (w->resfac == 0) + { + gsl_multifit_robust_free(w); + GSL_ERROR_VAL("failed to allocate space for residual factors", + GSL_ENOMEM, 0); + } + + w->psi = gsl_vector_alloc(n); + if (w->psi == 0) + { + gsl_multifit_robust_free(w); + GSL_ERROR_VAL("failed to allocate space for psi", GSL_ENOMEM, 0); + } + + w->dpsi = gsl_vector_alloc(n); + if (w->dpsi == 0) + { + gsl_multifit_robust_free(w); + GSL_ERROR_VAL("failed to allocate space for dpsi", GSL_ENOMEM, 0); + } + + w->QSI = gsl_matrix_alloc(p, p); + if (w->QSI == 0) + { + gsl_multifit_robust_free(w); + GSL_ERROR_VAL("failed to allocate space for QSI", GSL_ENOMEM, 0); + } + + w->D = gsl_vector_alloc(p); + if (w->D == 0) + { + gsl_multifit_robust_free(w); + GSL_ERROR_VAL("failed to allocate space for D", GSL_ENOMEM, 0); + } + + w->workn = gsl_vector_alloc(n); + if (w->workn == 0) + { + gsl_multifit_robust_free(w); + GSL_ERROR_VAL("failed to allocate space for workn", GSL_ENOMEM, 0); + } + + w->stats.sigma_ols = 0.0; + w->stats.sigma_mad = 0.0; + w->stats.sigma_rob = 0.0; + w->stats.sigma = 0.0; + w->stats.Rsq = 0.0; + w->stats.adj_Rsq = 0.0; + w->stats.rmse = 0.0; + w->stats.sse = 0.0; + w->stats.dof = n - p; + w->stats.weights = w->weights; + w->stats.r = w->r; + + return w; +} /* gsl_multifit_robust_alloc() */ + +/* +gsl_multifit_robust_free() + Free memory associated with robust workspace +*/ + +void +gsl_multifit_robust_free(gsl_multifit_robust_workspace *w) +{ + if (w->multifit_p) + gsl_multifit_linear_free(w->multifit_p); + + if (w->r) + gsl_vector_free(w->r); + + if (w->weights) + gsl_vector_free(w->weights); + + if (w->c_prev) + gsl_vector_free(w->c_prev); + + if (w->resfac) + gsl_vector_free(w->resfac); + + if (w->psi) + gsl_vector_free(w->psi); + + if (w->dpsi) + gsl_vector_free(w->dpsi); + + if (w->QSI) + gsl_matrix_free(w->QSI); + + if (w->D) + gsl_vector_free(w->D); + + if (w->workn) + gsl_vector_free(w->workn); + + free(w); +} /* gsl_multifit_robust_free() */ + +int +gsl_multifit_robust_tune(const double tune, gsl_multifit_robust_workspace *w) +{ + w->tune = tune; + return GSL_SUCCESS; +} + +int +gsl_multifit_robust_maxiter(const size_t maxiter, + gsl_multifit_robust_workspace *w) +{ + if (w->maxiter == 0) + { + GSL_ERROR("maxiter must be greater than 0", GSL_EINVAL); + } + else + { + w->maxiter = maxiter; + return GSL_SUCCESS; + } +} + +const char * +gsl_multifit_robust_name(const gsl_multifit_robust_workspace *w) +{ + return w->type->name; +} + +gsl_multifit_robust_stats +gsl_multifit_robust_statistics(const gsl_multifit_robust_workspace *w) +{ + return w->stats; +} + +/* +gsl_multifit_robust_weights() + Compute iterative weights for given residuals + +Inputs: r - residuals + wts - (output) where to store weights + w_i = r_i / (sigma_mad * tune) + w - workspace + +Return: success/error + +Notes: +1) Sizes of r and wts must be equal +2) Size of r/wts may be less than or equal to w->n, to allow +for computing weights of a subset of data +*/ + +int +gsl_multifit_robust_weights(const gsl_vector *r, gsl_vector *wts, + gsl_multifit_robust_workspace *w) +{ + if (r->size != wts->size) + { + GSL_ERROR("residual vector does not match weight vector size", GSL_EBADLEN); + } + else + { + int s; + double sigma; + + sigma = robust_madsigma(r, w->p, wts); + + /* scale residuals by sigma and tuning factor */ + gsl_vector_memcpy(wts, r); + gsl_vector_scale(wts, 1.0 / (sigma * w->tune)); + + /* compute weights in-place */ + s = w->type->wfun(wts, wts); + + return s; + } +} /* gsl_multifit_robust_weights() */ + +/* +gsl_multifit_robust() + Perform robust iteratively reweighted linear least squares +fit + +Inputs: X - design matrix of basis functions + y - right hand side vector + c - (output) model coefficients + cov - (output) covariance matrix + w - workspace +*/ + +int +gsl_multifit_robust(const gsl_matrix * X, + const gsl_vector * y, + gsl_vector * c, + gsl_matrix * cov, + gsl_multifit_robust_workspace *w) +{ + /* check matrix and vector sizes */ + if (X->size1 != y->size) + { + GSL_ERROR + ("number of observations in y does not match rows of matrix X", + GSL_EBADLEN); + } + else if (X->size2 != c->size) + { + GSL_ERROR ("number of parameters c does not match columns of matrix X", + GSL_EBADLEN); + } + else if (cov->size1 != cov->size2) + { + GSL_ERROR ("covariance matrix is not square", GSL_ENOTSQR); + } + else if (c->size != cov->size1) + { + GSL_ERROR + ("number of parameters does not match size of covariance matrix", + GSL_EBADLEN); + } + else if (X->size1 != w->n || X->size2 != w->p) + { + GSL_ERROR + ("size of workspace does not match size of observation matrix", + GSL_EBADLEN); + } + else + { + int s; + double chisq; + const double tol = GSL_SQRT_DBL_EPSILON; + int converged = 0; + size_t numit = 0; + const size_t n = y->size; + double sigy = gsl_stats_sd(y->data, y->stride, n); + double sig_lower; + size_t i; + + /* + * if the initial fit is very good, then finding outliers by comparing + * them to the residual standard deviation is difficult. Therefore we + * set a lower bound on the standard deviation estimate that is a small + * fraction of the standard deviation of the data values + */ + sig_lower = 1.0e-6 * sigy; + if (sig_lower == 0.0) + sig_lower = 1.0; + + /* compute initial estimates using ordinary least squares */ + s = gsl_multifit_linear(X, y, c, cov, &chisq, w->multifit_p); + if (s) + return s; + + /* save Q S^{-1} of original matrix */ + gsl_matrix_memcpy(w->QSI, w->multifit_p->QSI); + gsl_vector_memcpy(w->D, w->multifit_p->D); + + /* compute statistical leverage of each data point */ + s = gsl_linalg_SV_leverage(w->multifit_p->A, w->resfac); + if (s) + return s; + + /* correct residuals with factor 1 / sqrt(1 - h) */ + for (i = 0; i < n; ++i) + { + double h = gsl_vector_get(w->resfac, i); + + if (h > 0.9999) + h = 0.9999; + + gsl_vector_set(w->resfac, i, 1.0 / sqrt(1.0 - h)); + } + + /* compute residuals from OLS fit r = y - X c */ + s = gsl_multifit_linear_residuals(X, y, c, w->r); + if (s) + return s; + + /* compute estimate of sigma from ordinary least squares */ + w->stats.sigma_ols = gsl_blas_dnrm2(w->r) / sqrt((double) w->stats.dof); + + while (!converged && ++numit <= w->maxiter) + { + double sig; + + /* adjust residuals by statistical leverage (see DuMouchel and O'Brien) */ + s = gsl_vector_mul(w->r, w->resfac); + if (s) + return s; + + /* compute estimate of standard deviation using MAD */ + sig = robust_madsigma(w->r, w->p, w->workn); + + /* scale residuals by standard deviation and tuning parameter */ + gsl_vector_scale(w->r, 1.0 / (GSL_MAX(sig, sig_lower) * w->tune)); + + /* compute weights using these residuals */ + s = w->type->wfun(w->r, w->weights); + if (s) + return s; + + gsl_vector_memcpy(w->c_prev, c); + + /* solve weighted least squares with new weights */ + s = gsl_multifit_wlinear(X, w->weights, y, c, cov, &chisq, w->multifit_p); + if (s) + return s; + + /* compute new residuals r = y - X c */ + s = gsl_multifit_linear_residuals(X, y, c, w->r); + if (s) + return s; + + converged = robust_test_convergence(w->c_prev, c, tol); + } + + /* compute final MAD sigma */ + w->stats.sigma_mad = robust_madsigma(w->r, w->p, w->workn); + + /* compute robust estimate of sigma */ + w->stats.sigma_rob = robust_robsigma(w->r, w->stats.sigma_mad, w->tune, w); + + /* compute final estimate of sigma */ + w->stats.sigma = robust_sigma(w->stats.sigma_ols, w->stats.sigma_rob, w); + + /* store number of iterations */ + w->stats.numit = numit; + + { + double dof = (double) w->stats.dof; + double rnorm = w->stats.sigma * sqrt(dof); /* see DuMouchel, sec 4.2 */ + double ss_err = rnorm * rnorm; + double ss_tot = gsl_stats_tss(y->data, y->stride, n); + + /* compute R^2 */ + w->stats.Rsq = 1.0 - ss_err / ss_tot; + + /* compute adjusted R^2 */ + w->stats.adj_Rsq = 1.0 - (1.0 - w->stats.Rsq) * ((double)n - 1.0) / dof; + + /* compute rmse */ + w->stats.rmse = sqrt(ss_err / dof); + + /* store SSE */ + w->stats.sse = ss_err; + } + + /* calculate covariance matrix = sigma^2 (X^T X)^{-1} */ + s = robust_covariance(w->stats.sigma, cov, w); + if (s) + return s; + + /* raise an error if not converged */ + if (numit > w->maxiter) + { + GSL_ERROR("maximum iterations exceeded", GSL_EMAXITER); + } + + return s; + } +} /* gsl_multifit_robust() */ + +/* Estimation of values for given x */ +int +gsl_multifit_robust_est(const gsl_vector * x, const gsl_vector * c, + const gsl_matrix * cov, double *y, double *y_err) +{ + int s = gsl_multifit_linear_est(x, c, cov, y, y_err); + + return s; +} + +/* +gsl_multifit_robust_residuals() + Compute robust / studentized residuals from fit + +r_i = (y_i - Y_i) / (sigma * sqrt(1 - h_i)) + +Inputs: X - design matrix + y - rhs vector + c - fit coefficients + r - (output) studentized residuals + w - workspace + +Notes: +1) gsl_multifit_robust() must first be called to compute the coefficients +c, the leverage factors in w->resfac, and sigma in w->stats.sigma +*/ + +int +gsl_multifit_robust_residuals(const gsl_matrix * X, const gsl_vector * y, + const gsl_vector * c, gsl_vector * r, + gsl_multifit_robust_workspace * w) +{ + if (X->size1 != y->size) + { + GSL_ERROR + ("number of observations in y does not match rows of matrix X", + GSL_EBADLEN); + } + else if (X->size2 != c->size) + { + GSL_ERROR ("number of parameters c does not match columns of matrix X", + GSL_EBADLEN); + } + else if (y->size != r->size) + { + GSL_ERROR ("number of observations in y does not match number of residuals", + GSL_EBADLEN); + } + else + { + const double sigma = w->stats.sigma; /* previously calculated sigma */ + int s; + size_t i; + + /* compute r = y - X c */ + s = gsl_multifit_linear_residuals(X, y, c, r); + if (s) + return s; + + for (i = 0; i < r->size; ++i) + { + double hfac = gsl_vector_get(w->resfac, i); /* 1/sqrt(1 - h_i) */ + double *ri = gsl_vector_ptr(r, i); + + /* multiply residual by 1 / (sigma * sqrt(1 - h_i)) */ + *ri *= hfac / sigma; + } + + return s; + } +} /* gsl_multifit_robust_residuals() */ + +/*********************************** + * INTERNAL ROUTINES * + ***********************************/ + +/* +robust_test_convergence() + Test for convergence in robust least squares + +Convergence criteria: + +|c_i^(k) - c_i^(k-1)| <= tol * max(|c_i^(k)|, |c_i^(k-1)|) + +for all i. k refers to iteration number. + +Inputs: c_prev - coefficients from previous iteration + c - coefficients from current iteration + tol - tolerance + +Return: 1 if converged, 0 if not +*/ + +static int +robust_test_convergence(const gsl_vector *c_prev, const gsl_vector *c, + const double tol) +{ + size_t p = c->size; + size_t i; + + for (i = 0; i < p; ++i) + { + double ai = gsl_vector_get(c_prev, i); + double bi = gsl_vector_get(c, i); + + if (fabs(bi - ai) > tol * GSL_MAX(fabs(ai), fabs(bi))) + return 0; /* not yet converged */ + } + + /* converged */ + return 1; +} /* robust_test_convergence() */ + +/* +robust_madsigma() + Estimate the standard deviation of the residuals using +the Median-Absolute-Deviation (MAD) of the residuals, +throwing away the smallest p residuals. + +See: Street et al, 1988 + +Inputs: r - vector of residuals + p - number of model coefficients (smallest p residuals are + ignored) + workn - workspace of size n = length(r) +*/ + +static double +robust_madsigma(const gsl_vector *r, const size_t p, gsl_vector *workn) +{ + size_t n = r->size; + double sigma; + size_t i; + + /* allow for the possibility that r->size < w->n */ + gsl_vector_view v1 = gsl_vector_subvector(workn, 0, n); + gsl_vector_view v2; + + /* copy |r| into workn */ + for (i = 0; i < n; ++i) + { + gsl_vector_set(&v1.vector, i, fabs(gsl_vector_get(r, i))); + } + + gsl_sort_vector(&v1.vector); + + /* + * ignore the smallest p residuals when computing the median + * (see Street et al 1988) + */ + v2 = gsl_vector_subvector(&v1.vector, p - 1, n - p + 1); + sigma = gsl_stats_median_from_sorted_data(v2.vector.data, v2.vector.stride, v2.vector.size) / 0.6745; + + return sigma; +} /* robust_madsigma() */ + +/* +robust_robsigma() + Compute robust estimate of sigma so that +sigma^2 * inv(X' * X) is a reasonable estimate of +the covariance for robust regression. Based heavily +on the equations of Street et al, 1988. + +Inputs: r - vector of residuals y - X c + s - sigma estimate using MAD + tune - tuning constant + w - workspace +*/ + +static double +robust_robsigma(const gsl_vector *r, const double s, + const double tune, gsl_multifit_robust_workspace *w) +{ + double sigma; + size_t i; + const size_t n = w->n; + const size_t p = w->p; + const double st = s * tune; + double a, b, lambda; + + /* compute u = r / sqrt(1 - h) / st */ + gsl_vector_memcpy(w->workn, r); + gsl_vector_mul(w->workn, w->resfac); + gsl_vector_scale(w->workn, 1.0 / st); + + /* compute w(u) and psi'(u) */ + w->type->wfun(w->workn, w->psi); + w->type->psi_deriv(w->workn, w->dpsi); + + /* compute psi(u) = u*w(u) */ + gsl_vector_mul(w->psi, w->workn); + + /* Street et al, Eq (3) */ + a = gsl_stats_mean(w->dpsi->data, w->dpsi->stride, n); + + /* Street et al, Eq (5) */ + b = 0.0; + for (i = 0; i < n; ++i) + { + double psi_i = gsl_vector_get(w->psi, i); + double resfac = gsl_vector_get(w->resfac, i); + double fac = 1.0 / (resfac*resfac); /* 1 - h */ + + b += fac * psi_i * psi_i; + } + b /= (double) (n - p); + + /* Street et al, Eq (5) */ + lambda = 1.0 + ((double)p)/((double)n) * (1.0 - a) / a; + + sigma = lambda * sqrt(b) * st / a; + + return sigma; +} /* robust_robsigma() */ + +/* +robust_sigma() + Compute final estimate of residual standard deviation, using +the OLS and robust sigma estimates. + +This equation is taken from DuMouchel and O'Brien, sec 4.1: +\hat{\sigma_R} + +Inputs: s_ols - OLS sigma + s_rob - robust sigma + w - workspace + +Return: final estimate of sigma +*/ + +static double +robust_sigma(const double s_ols, const double s_rob, + gsl_multifit_robust_workspace *w) +{ + double sigma; + const double p = (double) w->p; + const double n = (double) w->n; + + /* see DuMouchel and O'Brien, sec 4.1 */ + sigma = GSL_MAX(s_rob, + sqrt((s_ols*s_ols*p*p + s_rob*s_rob*n) / + (p*p + n))); + + return sigma; +} /* robust_sigma() */ + +/* +robust_covariance() + Calculate final covariance matrix, defined as: + + sigma * (X^T X)^{-1} + +Inputs: sigma - residual standard deviation + cov - (output) covariance matrix + w - workspace +*/ + +static int +robust_covariance(const double sigma, gsl_matrix *cov, + gsl_multifit_robust_workspace *w) +{ + int status = 0; + const size_t p = w->p; + const double s2 = sigma * sigma; + size_t i, j; + gsl_matrix *QSI = w->QSI; + gsl_vector *D = w->D; + + /* Form variance-covariance matrix cov = s2 * (Q S^-1) (Q S^-1)^T */ + + for (i = 0; i < p; i++) + { + gsl_vector_view row_i = gsl_matrix_row (QSI, i); + double d_i = gsl_vector_get (D, i); + + for (j = i; j < p; j++) + { + gsl_vector_view row_j = gsl_matrix_row (QSI, j); + double d_j = gsl_vector_get (D, j); + double s; + + gsl_blas_ddot (&row_i.vector, &row_j.vector, &s); + + gsl_matrix_set (cov, i, j, s * s2 / (d_i * d_j)); + gsl_matrix_set (cov, j, i, s * s2 / (d_i * d_j)); + } + } + + return status; +} /* robust_covariance() */ diff --git a/gsl-2.5/multifit/multirobust.lo b/gsl-2.5/multifit/multirobust.lo new file mode 100644 index 00000000..5b597d04 --- /dev/null +++ b/gsl-2.5/multifit/multirobust.lo @@ -0,0 +1,12 @@ +# multirobust.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/multirobust.o' + +# Name of the non-PIC object +non_pic_object='multirobust.o' + diff --git a/gsl-2.5/multifit/multiwlinear.c b/gsl-2.5/multifit/multiwlinear.c new file mode 100644 index 00000000..1f10684f --- /dev/null +++ b/gsl-2.5/multifit/multiwlinear.c @@ -0,0 +1,158 @@ +/* multifit/multiwlinear.c + * + * Copyright (C) 2015 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include +#include + +#include "linear_common.c" + +int +gsl_multifit_wlinear (const gsl_matrix * X, + const gsl_vector * w, + const gsl_vector * y, + gsl_vector * c, + gsl_matrix * cov, + double *chisq, gsl_multifit_linear_workspace * work) +{ + size_t rank; + int status = gsl_multifit_wlinear_tsvd(X, w, y, GSL_DBL_EPSILON, c, cov, chisq, &rank, work); + + return status; +} + +int +gsl_multifit_wlinear_tsvd (const gsl_matrix * X, + const gsl_vector * w, + const gsl_vector * y, + const double tol, + gsl_vector * c, + gsl_matrix * cov, + double * chisq, + size_t * rank, + gsl_multifit_linear_workspace * work) +{ + const size_t n = X->size1; + const size_t p = X->size2; + + if (y->size != n) + { + GSL_ERROR("number of observations in y does not match matrix", + GSL_EBADLEN); + } + else if (w->size != n) + { + GSL_ERROR("number of weights in w does not match matrix", + GSL_EBADLEN); + } + else if (p != c->size) + { + GSL_ERROR ("number of parameters c does not match matrix", + GSL_EBADLEN); + } + else if (tol <= 0) + { + GSL_ERROR ("tolerance must be positive", GSL_EINVAL); + } + else + { + int status; + double rnorm, snorm; + gsl_matrix_view A = gsl_matrix_submatrix(work->A, 0, 0, n, p); + gsl_vector_view b = gsl_vector_subvector(work->t, 0, n); + + /* compute A = sqrt(W) X, b = sqrt(W) y */ + status = gsl_multifit_linear_applyW(X, w, y, &A.matrix, &b.vector); + if (status) + return status; + + /* compute SVD of A */ + status = gsl_multifit_linear_bsvd(&A.matrix, work); + if (status) + return status; + + status = multifit_linear_solve(X, &b.vector, tol, 0.0, rank, + c, &rnorm, &snorm, work); + if (status) + return status; + + *chisq = rnorm * rnorm; + + /* variance-covariance matrix cov = s2 * (Q S^-1) (Q S^-1)^T */ + { + const size_t p = X->size2; + size_t i, j; + gsl_matrix_view QSI = gsl_matrix_submatrix(work->QSI, 0, 0, p, p); + gsl_vector_view D = gsl_vector_subvector(work->D, 0, p); + + for (i = 0; i < p; i++) + { + gsl_vector_view row_i = gsl_matrix_row (&QSI.matrix, i); + double d_i = gsl_vector_get (&D.vector, i); + + for (j = i; j < p; j++) + { + gsl_vector_view row_j = gsl_matrix_row (&QSI.matrix, j); + double d_j = gsl_vector_get (&D.vector, j); + double s; + + gsl_blas_ddot (&row_i.vector, &row_j.vector, &s); + + gsl_matrix_set (cov, i, j, s / (d_i * d_j)); + gsl_matrix_set (cov, j, i, s / (d_i * d_j)); + } + } + } + } + + return GSL_SUCCESS; +} + +int +gsl_multifit_wlinear_svd (const gsl_matrix * X, + const gsl_vector * w, + const gsl_vector * y, + double tol, + size_t * rank, + gsl_vector * c, + gsl_matrix * cov, + double *chisq, gsl_multifit_linear_workspace * work) +{ + int status = gsl_multifit_wlinear_tsvd(X, w, y, tol, c, cov, chisq, rank, work); + return status; +} + +int +gsl_multifit_wlinear_usvd (const gsl_matrix * X, + const gsl_vector * w, + const gsl_vector * y, + double tol, + size_t * rank, + gsl_vector * c, + gsl_matrix * cov, + double *chisq, gsl_multifit_linear_workspace * work) +{ + /* FIXME: this call does actually perform balancing, but this function is deprecated anyway */ + int status = gsl_multifit_wlinear_tsvd(X, w, y, tol, c, cov, chisq, rank, work); + return status; +} diff --git a/gsl-2.5/multifit/multiwlinear.lo b/gsl-2.5/multifit/multiwlinear.lo new file mode 100644 index 00000000..85a2c383 --- /dev/null +++ b/gsl-2.5/multifit/multiwlinear.lo @@ -0,0 +1,12 @@ +# multiwlinear.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/multiwlinear.o' + +# Name of the non-PIC object +non_pic_object='multiwlinear.o' + diff --git a/gsl-2.5/multifit/qrsolv.c b/gsl-2.5/multifit/qrsolv.c new file mode 100644 index 00000000..06f03995 --- /dev/null +++ b/gsl-2.5/multifit/qrsolv.c @@ -0,0 +1,218 @@ +/* This function computes the solution to the least squares system + + phi = [ A x = b , lambda D x = 0 ]^2 + + where A is an M by N matrix, D is an N by N diagonal matrix, lambda + is a scalar parameter and b is a vector of length M. + + The function requires the factorization of A into A = Q R P^T, + where Q is an orthogonal matrix, R is an upper triangular matrix + with diagonal elements of non-increasing magnitude and P is a + permuation matrix. The system above is then equivalent to + + [ R z = Q^T b, P^T (lambda D) P z = 0 ] + + where x = P z. If this system does not have full rank then a least + squares solution is obtained. On output the function also provides + an upper triangular matrix S such that + + P^T (A^T A + lambda^2 D^T D) P = S^T S + + Parameters, + + r: On input, contains the full upper triangle of R. On output the + strict lower triangle contains the transpose of the strict upper + triangle of S, and the diagonal of S is stored in sdiag. The full + upper triangle of R is not modified. + + p: the encoded form of the permutation matrix P. column j of P is + column p[j] of the identity matrix. + + lambda, diag: contains the scalar lambda and the diagonal elements + of the matrix D + + qtb: contains the product Q^T b + + x: on output contains the least squares solution of the system + + wa: is a workspace of length N + + */ + +static int +qrsolv (gsl_matrix * r, const gsl_permutation * p, const double lambda, + const gsl_vector * diag, const gsl_vector * qtb, + gsl_vector * x, gsl_vector * sdiag, gsl_vector * wa) +{ + size_t n = r->size2; + + size_t i, j, k, nsing; + + /* Copy r and qtb to preserve input and initialise s. In particular, + save the diagonal elements of r in x */ + + for (j = 0; j < n; j++) + { + double rjj = gsl_matrix_get (r, j, j); + double qtbj = gsl_vector_get (qtb, j); + + for (i = j + 1; i < n; i++) + { + double rji = gsl_matrix_get (r, j, i); + gsl_matrix_set (r, i, j, rji); + } + + gsl_vector_set (x, j, rjj); + gsl_vector_set (wa, j, qtbj); + } + + /* Eliminate the diagonal matrix d using a Givens rotation */ + + for (j = 0; j < n; j++) + { + double qtbpj; + + size_t pj = gsl_permutation_get (p, j); + + double diagpj = lambda * gsl_vector_get (diag, pj); + + if (diagpj == 0) + { + continue; + } + + gsl_vector_set (sdiag, j, diagpj); + + for (k = j + 1; k < n; k++) + { + gsl_vector_set (sdiag, k, 0.0); + } + + /* The transformations to eliminate the row of d modify only a + single element of qtb beyond the first n, which is initially + zero */ + + qtbpj = 0; + + for (k = j; k < n; k++) + { + /* Determine a Givens rotation which eliminates the + appropriate element in the current row of d */ + + double sine, cosine; + + double wak = gsl_vector_get (wa, k); + double rkk = gsl_matrix_get (r, k, k); + double sdiagk = gsl_vector_get (sdiag, k); + + if (sdiagk == 0) + { + continue; + } + + if (fabs (rkk) < fabs (sdiagk)) + { + double cotangent = rkk / sdiagk; + sine = 0.5 / sqrt (0.25 + 0.25 * cotangent * cotangent); + cosine = sine * cotangent; + } + else + { + double tangent = sdiagk / rkk; + cosine = 0.5 / sqrt (0.25 + 0.25 * tangent * tangent); + sine = cosine * tangent; + } + + /* Compute the modified diagonal element of r and the + modified element of [qtb,0] */ + + { + double new_rkk = cosine * rkk + sine * sdiagk; + double new_wak = cosine * wak + sine * qtbpj; + + qtbpj = -sine * wak + cosine * qtbpj; + + gsl_matrix_set(r, k, k, new_rkk); + gsl_vector_set(wa, k, new_wak); + } + + /* Accumulate the transformation in the row of s */ + + for (i = k + 1; i < n; i++) + { + double rik = gsl_matrix_get (r, i, k); + double sdiagi = gsl_vector_get (sdiag, i); + + double new_rik = cosine * rik + sine * sdiagi; + double new_sdiagi = -sine * rik + cosine * sdiagi; + + gsl_matrix_set(r, i, k, new_rik); + gsl_vector_set(sdiag, i, new_sdiagi); + } + } + + /* Store the corresponding diagonal element of s and restore the + corresponding diagonal element of r */ + + { + double rjj = gsl_matrix_get (r, j, j); + double xj = gsl_vector_get(x, j); + + gsl_vector_set (sdiag, j, rjj); + gsl_matrix_set (r, j, j, xj); + } + + } + + /* Solve the triangular system for z. If the system is singular then + obtain a least squares solution */ + + nsing = n; + + for (j = 0; j < n; j++) + { + double sdiagj = gsl_vector_get (sdiag, j); + + if (sdiagj == 0) + { + nsing = j; + break; + } + } + + for (j = nsing; j < n; j++) + { + gsl_vector_set (wa, j, 0.0); + } + + for (k = 0; k < nsing; k++) + { + double sum = 0; + + j = (nsing - 1) - k; + + for (i = j + 1; i < nsing; i++) + { + sum += gsl_matrix_get(r, i, j) * gsl_vector_get(wa, i); + } + + { + double waj = gsl_vector_get (wa, j); + double sdiagj = gsl_vector_get (sdiag, j); + + gsl_vector_set (wa, j, (waj - sum) / sdiagj); + } + } + + /* Permute the components of z back to the components of x */ + + for (j = 0; j < n; j++) + { + size_t pj = gsl_permutation_get (p, j); + double waj = gsl_vector_get (wa, j); + + gsl_vector_set (x, pj, waj); + } + + return GSL_SUCCESS; +} diff --git a/gsl-2.5/multifit/robust_wfun.c b/gsl-2.5/multifit/robust_wfun.c new file mode 100644 index 00000000..af8d2c3e --- /dev/null +++ b/gsl-2.5/multifit/robust_wfun.c @@ -0,0 +1,276 @@ +/* robust_wfun.c + * + * Copyright (C) 2013 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include + +/* default tuning constants */ +#define TUNING_BISQUARE (4.685) +#define TUNING_CAUCHY (2.385) +#define TUNING_FAIR (1.4) +#define TUNING_HUBER (1.345) +#define TUNING_OLS (1.0) +#define TUNING_WELSCH (2.985) + +/* + * Note: for each of the weighting functions below, it + * is safe to call them with in-place parameters, so that + * input/output vectors are the same + */ + +static int +bisquare(const gsl_vector *r, gsl_vector *w) +{ + size_t i; + size_t n = r->size; + + for (i = 0; i < n; ++i) + { + double ri = gsl_vector_get(r, i); + + if (fabs(ri) < 1.0) + gsl_vector_set(w, i, (1.0 - ri*ri)*(1.0 - ri*ri)); + else + gsl_vector_set(w, i, 0.0); + } + + return GSL_SUCCESS; +} /* bisquare() */ + +static int +bisquare_dpsi(const gsl_vector *r, gsl_vector *dpsi) +{ + size_t i; + size_t n = r->size; + + for (i = 0; i < n; ++i) + { + double ri = gsl_vector_get(r, i); + + if (fabs(ri) < 1.0) + gsl_vector_set(dpsi, i, (1.0 - ri*ri)*(1.0 - 5.0*ri*ri)); + else + gsl_vector_set(dpsi, i, 0.0); + } + + return GSL_SUCCESS; +} /* bisquare_dpsi() */ + +static const gsl_multifit_robust_type bisquare_type = { + "bisquare", + &bisquare, + &bisquare_dpsi, + TUNING_BISQUARE +}; + +static int +cauchy(const gsl_vector *r, gsl_vector *w) +{ + size_t i; + size_t n = r->size; + + for (i = 0; i < n; ++i) + { + double ri = gsl_vector_get(r, i); + + gsl_vector_set(w, i, 1.0 / (1.0 + ri*ri)); + } + + return GSL_SUCCESS; +} /* cauchy() */ + +static int +cauchy_dpsi(const gsl_vector *r, gsl_vector *dpsi) +{ + size_t i; + size_t n = r->size; + + for (i = 0; i < n; ++i) + { + double ri = gsl_vector_get(r, i); + double rsq = ri * ri; + + gsl_vector_set(dpsi, i, (1 - rsq) / (1.0 + rsq) / (1.0 + rsq)); + } + + return GSL_SUCCESS; +} /* cauchy_dpsi() */ + +static const gsl_multifit_robust_type cauchy_type = { + "cauchy", + &cauchy, + &cauchy_dpsi, + TUNING_CAUCHY +}; + +static int +fair(const gsl_vector *r, gsl_vector *w) +{ + size_t i; + size_t n = r->size; + + for (i = 0; i < n; ++i) + { + double ri = gsl_vector_get(r, i); + + gsl_vector_set(w, i, 1.0 / (1.0 + fabs(ri))); + } + + return GSL_SUCCESS; +} /* fair() */ + +static int +fair_dpsi(const gsl_vector *r, gsl_vector *dpsi) +{ + size_t i; + size_t n = r->size; + + for (i = 0; i < n; ++i) + { + double ri = gsl_vector_get(r, i); + + gsl_vector_set(dpsi, i, 1.0 / (1.0 + fabs(ri)) / (1.0 + fabs(ri))); + } + + return GSL_SUCCESS; +} /* fair_dpsi() */ + +static const gsl_multifit_robust_type fair_type = { + "fair", + &fair, + &fair_dpsi, + TUNING_FAIR +}; + +static int +huber(const gsl_vector *r, gsl_vector *w) +{ + size_t i; + size_t n = r->size; + + for (i = 0; i < n; ++i) + { + double absri = fabs(gsl_vector_get(r, i)); + + if (absri <= 1.0) + gsl_vector_set(w, i, 1.0); + else + gsl_vector_set(w, i, 1.0 / absri); + } + + return GSL_SUCCESS; +} /* huber() */ + +static int +huber_dpsi(const gsl_vector *r, gsl_vector *dpsi) +{ + size_t i; + size_t n = r->size; + + for (i = 0; i < n; ++i) + { + double ri = gsl_vector_get(r, i); + + if (fabs(ri) <= 1.0) + gsl_vector_set(dpsi, i, 1.0); + else + gsl_vector_set(dpsi, i, 0.0); + } + + return GSL_SUCCESS; +} /* huber_dpsi() */ + +static const gsl_multifit_robust_type huber_type = { + "huber", + &huber, + &huber_dpsi, + TUNING_HUBER +}; + +static int +ols(const gsl_vector *r, gsl_vector *w) +{ + gsl_vector_set_all(w, 1.0); + + return GSL_SUCCESS; +} + +static int +ols_dpsi(const gsl_vector *r, gsl_vector *dpsi) +{ + gsl_vector_set_all(dpsi, 1.0); + + return GSL_SUCCESS; +} + +static const gsl_multifit_robust_type ols_type = { + "ols", + &ols, + &ols_dpsi, + TUNING_OLS +}; + +static int +welsch(const gsl_vector *r, gsl_vector *w) +{ + size_t i; + size_t n = r->size; + + for (i = 0; i < n; ++i) + { + double ri = gsl_vector_get(r, i); + + gsl_vector_set(w, i, exp(-ri*ri)); + } + + return GSL_SUCCESS; +} /* welsch() */ + +static int +welsch_dpsi(const gsl_vector *r, gsl_vector *dpsi) +{ + size_t i; + size_t n = r->size; + + for (i = 0; i < n; ++i) + { + double ri = gsl_vector_get(r, i); + + gsl_vector_set(dpsi, i, (1.0 - 2.0*ri*ri) * exp(-ri*ri)); + } + + return GSL_SUCCESS; +} /* welsch_dpsi() */ + +static const gsl_multifit_robust_type welsch_type = { + "welsch", + &welsch, + &welsch_dpsi, + TUNING_WELSCH +}; + +const gsl_multifit_robust_type *gsl_multifit_robust_default = &bisquare_type; +const gsl_multifit_robust_type *gsl_multifit_robust_bisquare = &bisquare_type; +const gsl_multifit_robust_type *gsl_multifit_robust_cauchy = &cauchy_type; +const gsl_multifit_robust_type *gsl_multifit_robust_fair = &fair_type; +const gsl_multifit_robust_type *gsl_multifit_robust_huber = &huber_type; +const gsl_multifit_robust_type *gsl_multifit_robust_ols = &ols_type; +const gsl_multifit_robust_type *gsl_multifit_robust_welsch = &welsch_type; diff --git a/gsl-2.5/multifit/robust_wfun.lo b/gsl-2.5/multifit/robust_wfun.lo new file mode 100644 index 00000000..47b66752 --- /dev/null +++ b/gsl-2.5/multifit/robust_wfun.lo @@ -0,0 +1,12 @@ +# robust_wfun.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/robust_wfun.o' + +# Name of the non-PIC object +non_pic_object='robust_wfun.o' + diff --git a/gsl-2.5/multifit/test b/gsl-2.5/multifit/test new file mode 100755 index 00000000..06b45086 --- /dev/null +++ b/gsl-2.5/multifit/test @@ -0,0 +1,228 @@ +#! /bin/sh + +# test - temporary wrapper script for .libs/test +# Generated by libtool (GNU libtool) 2.4.2 +# +# The test program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s/\([`"$\\]\)/\\\1/g' + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command="(cd /home/groups/kipac/chto/package/gsl/gsl-2.5/multifit; LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LIBRARY_PATH; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; LD_LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/fftw/include:/home/users/chto/lib/fftw/lib:/home/users/chto/lib/healpix/lib:/home/users/chto/lib/namaster/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/include:/home/users/chto/cpp/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LD_LIBRARY_PATH; PATH=/share/software/user/open/curl/7.54.0/bin:/share/software/user/open/libressl/2.5.3/bin:/home/users/chto/lib/cfitsio:/home/users/chto/lib/cfitsio/include:/home/users/chto/lib:/home/users/chto/bin/bin:/home/users/chto/bin:/home/users/chto/.texlive/bin/x86_64-linux:/home/groups/kipac/chto/anaconda2/envs/newenv3/bin:/home/users/chto/.local/bin/include:/home/users/chto/.local/bin/lib:/home/users/chto/.local/bin:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/bin64:/share/software/user/open/fftw/3.3.6/bin:/home/groups/kipac/chto/anaconda2/condabin:/share/software/user/restricted/ifort/2019/bin:/share/software/user/open/gsl/2.3/bin:/share/software/user/srcc/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/dell/srvadmin/bin:/opt/dell/srvadmin/iSM/bin:/home/users/chto/bin; export PATH; gcc -g -O2 -o \$progdir/\$file test.o ./.libs/libgslmultifit.a ../linalg/.libs/libgsllinalg.a ../permutation/.libs/libgslpermutation.a ../blas/.libs/libgslblas.a ../cblas/.libs/libgslcblas.so ../matrix/.libs/libgslmatrix.a ../sort/.libs/libgslsort.a ../statistics/.libs/libgslstatistics.a ../vector/.libs/libgslvector.a ../block/.libs/libgslblock.a ../complex/.libs/libgslcomplex.a ../ieee-utils/.libs/libgslieeeutils.a ../err/.libs/libgslerr.a ../test/.libs/libgsltest.a ../utils/.libs/libutils.a ../sys/.libs/libgslsys.a ../rng/.libs/libgslrng.a ../specfunc/.libs/libgslspecfunc.a ../min/.libs/libgslmin.a -lm -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/cblas/.libs -Wl,-rpath -Wl,/usr/local/lib)" + +# This environment variable determines our operation mode. +if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then + # install mode needs the following variables: + generated_by_libtool_version='2.4.2' + notinst_deplibs=' ../cblas/libgslcblas.la' +else + # When we are sourced in execute mode, $file and $ECHO are already set. + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + file="$0" + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + ECHO="printf %s\\n" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ which is used only on +# windows platforms, and (c) all begin with the string --lt- +# (application programs are unlikely to have options which match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's ../libtool value, followed by no. +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=$0 + shift + for lt_opt + do + case "$lt_opt" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%/[^/]*$%%'` + test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=. + lt_dump_F=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%^.*/%%'` + cat "$lt_dump_D/$lt_dump_F" + exit 0 + ;; + --lt-*) + $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n "$lt_option_debug"; then + echo "test:test:${LINENO}: libtool wrapper (GNU libtool) 2.4.2" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + $ECHO "test:test:${LINENO}: newargv[$lt_dump_args_N]: $lt_arg" + lt_dump_args_N=`expr $lt_dump_args_N + 1` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ + + if test -n "$lt_option_debug"; then + $ECHO "test:test:${LINENO}: newargv[0]: $progdir/$program" 1>&2 + func_lt_dump_args ${1+"$@"} 1>&2 + fi + exec "$progdir/$program" ${1+"$@"} + + $ECHO "$0: cannot exec $program $*" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from $@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case " $* " in + *\ --lt-*) + for lt_wr_arg + do + case $lt_wr_arg in + --lt-*) ;; + *) set x "$@" "$lt_wr_arg"; shift;; + esac + shift + done ;; + esac + func_exec_program_core ${1+"$@"} +} + + # Parse options + func_parse_lt_options "$0" ${1+"$@"} + + # Find the directory that this script lives in. + thisdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + test "x$thisdir" = "x$file" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=`ls -ld "$file" | /usr/bin/sed -n 's/.*-> //p'` + while test -n "$file"; do + destdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + + # If there was a directory component, then change thisdir. + if test "x$destdir" != "x$file"; then + case "$destdir" in + [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;; + *) thisdir="$thisdir/$destdir" ;; + esac + fi + + file=`$ECHO "$file" | /usr/bin/sed 's%^.*/%%'` + file=`ls -ld "$thisdir/$file" | /usr/bin/sed -n 's/.*-> //p'` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no + if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then + # special case for '.' + if test "$thisdir" = "."; then + thisdir=`pwd` + fi + # remove .libs from thisdir + case "$thisdir" in + *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /usr/bin/sed 's%[\\/][^\\/]*$%%'` ;; + .libs ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=`cd "$thisdir" && pwd` + test -n "$absdir" && thisdir="$absdir" + + program=lt-'test' + progdir="$thisdir/.libs" + + if test ! -f "$progdir/$program" || + { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /usr/bin/sed 1q`; \ + test "X$file" != "X$progdir/$program"; }; then + + file="$$-$program" + + if test ! -d "$progdir"; then + mkdir "$progdir" + else + rm -f "$progdir/$file" + fi + + # relink executable if necessary + if test -n "$relink_command"; then + if relink_command_output=`eval $relink_command 2>&1`; then : + else + printf %s\n "$relink_command_output" >&2 + rm -f "$progdir/$file" + exit 1 + fi + fi + + mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null || + { rm -f "$progdir/$program"; + mv -f "$progdir/$file" "$progdir/$program"; } + rm -f "$progdir/$file" + fi + + if test -f "$progdir/$program"; then + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + # Run the actual program with our arguments. + func_exec_program ${1+"$@"} + fi + else + # The program doesn't exist. + $ECHO "$0: error: \`$progdir/$program' does not exist" 1>&2 + $ECHO "This script is just a wrapper for $program." 1>&2 + $ECHO "See the libtool documentation for more information." 1>&2 + exit 1 + fi +fi diff --git a/gsl-2.5/multifit/test-suite.log b/gsl-2.5/multifit/test-suite.log new file mode 100644 index 00000000..85542f95 --- /dev/null +++ b/gsl-2.5/multifit/test-suite.log @@ -0,0 +1,14 @@ +====================================== + gsl 2.5: multifit/test-suite.log +====================================== + +# TOTAL: 1 +# PASS: 1 +# SKIP: 0 +# XFAIL: 0 +# FAIL: 0 +# XPASS: 0 +# ERROR: 0 + +.. contents:: :depth: 2 + diff --git a/gsl-2.5/multifit/test.c b/gsl-2.5/multifit/test.c new file mode 100644 index 00000000..6daa31a7 --- /dev/null +++ b/gsl-2.5/multifit/test.c @@ -0,0 +1,54 @@ +/* multifit/test.c + * + * Copyright (C) 2007, 2013 Brian Gough, Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* These tests are based on the NIST Statistical Reference Datasets + See http://www.nist.gov/itl/div898/strd/index.html for more + information. */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#include "test_linear.c" +#include "test_nonlinear.c" + +int +main (void) +{ + gsl_ieee_env_setup(); + + /* test linear regression */ + test_linear(); + +#if 0 /* fdfsolver interface now deprecated */ + /* test nonlinear regression */ + test_nonlinear(); +#endif + + exit (gsl_test_summary ()); +} diff --git a/gsl-2.5/multifit/test.log b/gsl-2.5/multifit/test.log new file mode 100644 index 00000000..8a45bf7a --- /dev/null +++ b/gsl-2.5/multifit/test.log @@ -0,0 +1 @@ +Completed [190078/190078] diff --git a/gsl-2.5/multifit/test.trs b/gsl-2.5/multifit/test.trs new file mode 100644 index 00000000..3f0f396c --- /dev/null +++ b/gsl-2.5/multifit/test.trs @@ -0,0 +1,4 @@ +:test-result: PASS +:global-test-result: PASS +:recheck: no +:copy-in-global-log: no diff --git a/gsl-2.5/multifit/test_bard.c b/gsl-2.5/multifit/test_bard.c new file mode 100644 index 00000000..4e48ad0e --- /dev/null +++ b/gsl-2.5/multifit/test_bard.c @@ -0,0 +1,121 @@ +#define bard_N 15 +#define bard_P 3 + +#define bard_NTRIES 3 + +static double bard_x0[bard_P] = { 1.0, 1.0, 1.0 }; + +static double bard_epsrel = 1.0e-8; + +static double bard_Y[bard_N] = { +0.14, 0.18, 0.22, 0.25, 0.29, 0.32, 0.35, 0.39, 0.37, +0.58, 0.73, 0.96, 1.34, 2.10, 4.39 +}; + +static void +bard_checksol(const double x[], const double sumsq, + const double epsrel, const char *sname, + const char *pname) +{ + size_t i; + const double sumsq_exact1 = 8.214877306578963e-03; + const double bard_x1[bard_P] = { 8.241055975623580e-02, + 1.133036092245175, + 2.343695178435405 }; + const double sumsq_exact2 = 17.42869333333333; + const double bard_x2[bard_P] = { 8.406666666666666e-01, + -99999.9, /* -inf */ + -99999.9 }; /* -inf */ + const double *bard_x; + double sumsq_exact; + + if (fabs(x[1]) < 10.0 && fabs(x[2]) < 10.0) + { + bard_x = bard_x1; + sumsq_exact = sumsq_exact1; + } + else + { + bard_x = bard_x2; + sumsq_exact = sumsq_exact2; + } + + gsl_test_rel(sumsq, sumsq_exact, epsrel, "%s/%s sumsq", + sname, pname); + + for (i = 0; i < bard_P; ++i) + { + if (bard_x[i] < -90000.0) + continue; + + gsl_test_rel(x[i], bard_x[i], epsrel, "%s/%s i=%zu", + sname, pname, i); + } +} + +static int +bard_f (const gsl_vector * x, void *params, gsl_vector * f) +{ + double x1 = gsl_vector_get(x, 0); + double x2 = gsl_vector_get(x, 1); + double x3 = gsl_vector_get(x, 2); + size_t i; + + for (i = 0; i < bard_N; ++i) + { + double ui = i + 1.0; + double vi = 16.0 - i - 1.0; + double wi = GSL_MIN(ui, vi); + double yi = bard_Y[i]; + double fi = yi - (x1 + (ui / (x2*vi + x3*wi))); + + gsl_vector_set(f, i, fi); + } + + return GSL_SUCCESS; +} + +static int +bard_df (const gsl_vector * x, void *params, gsl_matrix * J) +{ + double x2 = gsl_vector_get(x, 1); + double x3 = gsl_vector_get(x, 2); + size_t i; + + for (i = 0; i < bard_N; ++i) + { + double ui = i + 1.0; + double vi = 16.0 - i - 1.0; + double wi = GSL_MIN(ui, vi); + double term = x2 * vi + x3 * wi; + + gsl_matrix_set(J, i, 0, -1.0); + gsl_matrix_set(J, i, 1, ui * vi / (term * term)); + gsl_matrix_set(J, i, 2, ui * wi / (term * term)); + } + + return GSL_SUCCESS; +} + +static gsl_multifit_function_fdf bard_func = +{ + &bard_f, + &bard_df, + NULL, + bard_N, + bard_P, + NULL, + 0, + 0 +}; + +static test_fdf_problem bard_problem = +{ + "bard", + bard_x0, + NULL, + &bard_epsrel, + bard_NTRIES, + &bard_checksol, + &bard_func +}; diff --git a/gsl-2.5/multifit/test_beale.c b/gsl-2.5/multifit/test_beale.c new file mode 100644 index 00000000..bfd2ed52 --- /dev/null +++ b/gsl-2.5/multifit/test_beale.c @@ -0,0 +1,87 @@ +#define beale_N 3 +#define beale_P 2 + +#define beale_NTRIES 1 + +static double beale_x0[beale_P] = { 1.0, 1.0 }; +static double beale_epsrel = 1.0e-12; + +static double beale_Y[beale_N] = { 1.5, 2.25, 2.625 }; + +static void +beale_checksol(const double x[], const double sumsq, + const double epsrel, const char *sname, + const char *pname) +{ + size_t i; + const double sumsq_exact = 0.0; + const double beale_x[beale_P] = { 3.0, 0.5 }; + + gsl_test_rel(sumsq, sumsq_exact, epsrel, "%s/%s sumsq", + sname, pname); + + for (i = 0; i < beale_P; ++i) + { + gsl_test_rel(x[i], beale_x[i], epsrel, "%s/%s i=%zu", + sname, pname, i); + } +} + +static int +beale_f (const gsl_vector * x, void *params, gsl_vector * f) +{ + double x1 = gsl_vector_get(x, 0); + double x2 = gsl_vector_get(x, 1); + size_t i; + + for (i = 0; i < beale_N; ++i) + { + double yi = beale_Y[i]; + double term = pow(x2, i + 1.0); + double fi = yi - x1*(1.0 - term); + gsl_vector_set(f, i, fi); + } + + return GSL_SUCCESS; +} + +static int +beale_df (const gsl_vector * x, void *params, gsl_matrix * J) +{ + double x1 = gsl_vector_get(x, 0); + double x2 = gsl_vector_get(x, 1); + size_t i; + + for (i = 0; i < beale_N; ++i) + { + double term = pow(x2, (double) i); + + gsl_matrix_set(J, i, 0, term*x2 - 1.0); + gsl_matrix_set(J, i, 1, (i + 1.0) * x1 * term); + } + + return GSL_SUCCESS; +} + +static gsl_multifit_function_fdf beale_func = +{ + &beale_f, + &beale_df, + NULL, + beale_N, + beale_P, + NULL, + 0, + 0 +}; + +static test_fdf_problem beale_problem = +{ + "beale", + beale_x0, + NULL, + &beale_epsrel, + beale_NTRIES, + &beale_checksol, + &beale_func +}; diff --git a/gsl-2.5/multifit/test_biggs.c b/gsl-2.5/multifit/test_biggs.c new file mode 100644 index 00000000..d42ad3c5 --- /dev/null +++ b/gsl-2.5/multifit/test_biggs.c @@ -0,0 +1,101 @@ +#define biggs_N 6 /* >= p */ +#define biggs_P 6 + +#define biggs_NTRIES 2 + +static double biggs_x0[biggs_P] = { 1.0, 2.0, 1.0, 1.0, 1.0, 1.0 }; +static double biggs_epsrel = 1.0e-9; + +static void +biggs_checksol(const double x[], const double sumsq, + const double epsrel, const char *sname, + const char *pname) +{ + const double sumsq_exact = 0.0; + const double biggs_x[biggs_P] = { 1.0, 10.0, 1.0, 5.0, 4.0, 3.0 }; + const double norm_exact = 12.3288280059380; + gsl_vector_const_view v = gsl_vector_const_view_array(biggs_x, biggs_P); + double norm = gsl_blas_dnrm2(&v.vector); + + gsl_test_rel(sumsq, sumsq_exact, epsrel, "%s/%s sumsq", + sname, pname); + + /* + * the solution vector is not unique due to permutations, so test + * the norm instead of individual elements + */ + gsl_test_rel(norm, norm_exact, epsrel, "%s/%s norm", + sname, pname); +} + +static int +biggs_f (const gsl_vector * x, void *params, gsl_vector * f) +{ + double x1 = gsl_vector_get(x, 0); + double x2 = gsl_vector_get(x, 1); + double x3 = gsl_vector_get(x, 2); + double x4 = gsl_vector_get(x, 3); + double x5 = gsl_vector_get(x, 4); + double x6 = gsl_vector_get(x, 5); + size_t i; + + for (i = 0; i < biggs_N; ++i) + { + double ti = 0.1 * (i + 1.0); + double yi = exp(-ti) - 5*exp(-10*ti) + 3*exp(-4*ti); + double fi = x3*exp(-ti*x1) - x4*exp(-ti*x2) + x6*exp(-ti*x5) - yi; + + gsl_vector_set(f, i, fi); + } + + return GSL_SUCCESS; +} + +static int +biggs_df (const gsl_vector * x, void *params, gsl_matrix * J) +{ + double x1 = gsl_vector_get(x, 0); + double x2 = gsl_vector_get(x, 1); + double x3 = gsl_vector_get(x, 2); + double x4 = gsl_vector_get(x, 3); + double x5 = gsl_vector_get(x, 4); + double x6 = gsl_vector_get(x, 5); + size_t i; + + for (i = 0; i < biggs_N; ++i) + { + double ti = 0.1 * (i + 1.0); + + gsl_matrix_set(J, i, 0, -ti*x3*exp(-ti*x1)); + gsl_matrix_set(J, i, 1, ti*x4*exp(-ti*x2)); + gsl_matrix_set(J, i, 2, exp(-ti*x1)); + gsl_matrix_set(J, i, 3, -exp(-ti*x2)); + gsl_matrix_set(J, i, 4, -ti*x6*exp(-ti*x5)); + gsl_matrix_set(J, i, 5, exp(-ti*x5)); + } + + return GSL_SUCCESS; +} + +static gsl_multifit_function_fdf biggs_func = +{ + &biggs_f, + &biggs_df, + NULL, + biggs_N, + biggs_P, + NULL, + 0, + 0 +}; + +static test_fdf_problem biggs_problem = +{ + "biggs", + biggs_x0, + NULL, + &biggs_epsrel, + biggs_NTRIES, + &biggs_checksol, + &biggs_func +}; diff --git a/gsl-2.5/multifit/test_box.c b/gsl-2.5/multifit/test_box.c new file mode 100644 index 00000000..d742ed0d --- /dev/null +++ b/gsl-2.5/multifit/test_box.c @@ -0,0 +1,89 @@ +#define box_N 10 /* can be >= p */ +#define box_P 3 + +#define box_NTRIES 1 + +static double box_x0[box_P] = { 0.0, 10.0, 20.0 }; +static double box_epsrel = 1.0e-12; + +static void +box_checksol(const double x[], const double sumsq, + const double epsrel, const char *sname, + const char *pname) +{ + size_t i; + const double sumsq_exact = 0.0; + const double box_x[box_P] = { 1.0, 10.0, 1.0 }; + + gsl_test_rel(sumsq, sumsq_exact, epsrel, "%s/%s sumsq", + sname, pname); + + for (i = 0; i < box_P; ++i) + { + gsl_test_rel(x[i], box_x[i], epsrel, "%s/%s i=%zu", + sname, pname, i); + } +} + +static int +box_f (const gsl_vector * x, void *params, gsl_vector * f) +{ + double x1 = gsl_vector_get(x, 0); + double x2 = gsl_vector_get(x, 1); + double x3 = gsl_vector_get(x, 2); + size_t i; + + for (i = 0; i < box_N; ++i) + { + double ti = (i + 1.0) / 10.0; + double fi = exp(-x1*ti) - exp(-x2*ti) - x3*(exp(-ti) - exp(-10.0*ti)); + gsl_vector_set(f, i, fi); + } + + return GSL_SUCCESS; +} + +static int +box_df (const gsl_vector * x, void *params, gsl_matrix * J) +{ + double x1 = gsl_vector_get(x, 0); + double x2 = gsl_vector_get(x, 1); + size_t i; + + for (i = 0; i < box_N; ++i) + { + double ti = (i + 1.0) / 10.0; + double term1 = exp(-x1*ti); + double term2 = exp(-x2*ti); + double term3 = exp(-10.0*ti) - exp(-ti); + + gsl_matrix_set(J, i, 0, -ti*term1); + gsl_matrix_set(J, i, 1, ti*term2); + gsl_matrix_set(J, i, 2, term3); + } + + return GSL_SUCCESS; +} + +static gsl_multifit_function_fdf box_func = +{ + &box_f, + &box_df, + NULL, + box_N, + box_P, + NULL, + 0, + 0 +}; + +static test_fdf_problem box_problem = +{ + "box3d", + box_x0, + NULL, + &box_epsrel, + box_NTRIES, + &box_checksol, + &box_func +}; diff --git a/gsl-2.5/multifit/test_boxbod.c b/gsl-2.5/multifit/test_boxbod.c new file mode 100644 index 00000000..0ad9e0fd --- /dev/null +++ b/gsl-2.5/multifit/test_boxbod.c @@ -0,0 +1,106 @@ +#define boxbod_N 6 +#define boxbod_P 2 + +#define boxbod_NTRIES 1 + +static double boxbod_x0[boxbod_P] = { 100.0, 0.75 }; +static double boxbod_epsrel = 1.0e-7; + +static double boxbod_sigma[boxbod_P] = { + 1.2354515176E+01, 1.0455993237E-01 +}; + +static double boxbod_X[boxbod_N] = { 1.0, 2.0, 3.0, 5.0, 7.0, 10.0 }; + +static double boxbod_F[boxbod_N] = { 109.0, 149.0, 149.0, 191.0, + 213.0, 224.0 }; + +static void +boxbod_checksol(const double x[], const double sumsq, + const double epsrel, const char *sname, + const char *pname) +{ + size_t i; + const double sumsq_exact = 1.1680088766E+03; + const double boxbod_x[boxbod_P] = { 2.1380940889E+02, + 5.4723748542E-01 }; + + gsl_test_rel(sumsq, sumsq_exact, epsrel, "%s/%s sumsq", + sname, pname); + + for (i = 0; i < boxbod_P; ++i) + { + gsl_test_rel(x[i], boxbod_x[i], epsrel, "%s/%s i=%zu", + sname, pname, i); + } +} + + +static int +boxbod_f (const gsl_vector * x, void *params, gsl_vector * f) +{ + double b[boxbod_P]; + size_t i; + + for (i = 0; i < boxbod_P; i++) + { + b[i] = gsl_vector_get(x, i); + } + + for (i = 0; i < boxbod_N; i++) + { + double xi = boxbod_X[i]; + double yi; + + yi = b[0] * (1.0 - exp(-b[1] * xi)); + gsl_vector_set (f, i, yi - boxbod_F[i]); + } + + return GSL_SUCCESS; +} + +static int +boxbod_df (const gsl_vector * x, void *params, gsl_matrix * df) +{ + double b[boxbod_P]; + size_t i; + + for (i = 0; i < boxbod_P; i++) + { + b[i] = gsl_vector_get(x, i); + } + + for (i = 0; i < boxbod_N; i++) + { + double xi = boxbod_X[i]; + double term = exp(-b[1] * xi); + + gsl_matrix_set (df, i, 0, 1.0 - term); + gsl_matrix_set (df, i, 1, b[0] * term * xi); + } + + return GSL_SUCCESS; +} + +static gsl_multifit_function_fdf boxbod_func = +{ + &boxbod_f, + &boxbod_df, + NULL, + boxbod_N, + boxbod_P, + NULL, + 0, + 0 +}; + +static test_fdf_problem boxbod_problem = +{ + "nist-boxbod", + boxbod_x0, + boxbod_sigma, + &boxbod_epsrel, + boxbod_NTRIES, + &boxbod_checksol, + &boxbod_func +}; diff --git a/gsl-2.5/multifit/test_brown1.c b/gsl-2.5/multifit/test_brown1.c new file mode 100644 index 00000000..a42ae497 --- /dev/null +++ b/gsl-2.5/multifit/test_brown1.c @@ -0,0 +1,96 @@ +#define brown1_N 20 +#define brown1_P 4 + +#define brown1_NTRIES 3 + +static double brown1_x0[brown1_P] = { 25, 5, -5, -1 }; +static double brown1_epsrel = 1.0e-6; + +static void +brown1_checksol(const double x[], const double sumsq, + const double epsrel, const char *sname, + const char *pname) +{ + size_t i; + const double sumsq_exact = 8.582220162635628e+04; + const double brown1_x[brown1_P] = { + -1.159443990239263e+01, 1.320363005221244e+01, + -4.034395456782477e-01, 2.367789088597534e-01 }; + + gsl_test_rel(sumsq, sumsq_exact, epsrel, "%s/%s sumsq", + sname, pname); + + for (i = 0; i < brown1_P; ++i) + { + gsl_test_rel(x[i], brown1_x[i], epsrel, "%s/%s i=%zu", + sname, pname, i); + } +} + +static int +brown1_f (const gsl_vector * x, void *params, gsl_vector * f) +{ + double x0 = gsl_vector_get (x, 0); + double x1 = gsl_vector_get (x, 1); + double x2 = gsl_vector_get (x, 2); + double x3 = gsl_vector_get (x, 3); + size_t i; + + for (i = 0; i < brown1_N; i++) + { + double ti = 0.2 * (i + 1); + double ui = x0 + x1 * ti - exp (ti); + double vi = x2 + x3 * sin (ti) - cos (ti); + + gsl_vector_set (f, i, ui * ui + vi * vi); + } + + return GSL_SUCCESS; +} + +static int +brown1_df (const gsl_vector * x, void *params, gsl_matrix * df) +{ + double x0 = gsl_vector_get (x, 0); + double x1 = gsl_vector_get (x, 1); + double x2 = gsl_vector_get (x, 2); + double x3 = gsl_vector_get (x, 3); + size_t i; + + for (i = 0; i < brown1_N; i++) + { + double ti = 0.2 * (i + 1); + double ui = x0 + x1 * ti - exp (ti); + double vi = x2 + x3 * sin (ti) - cos (ti); + + gsl_matrix_set (df, i, 0, 2 * ui); + gsl_matrix_set (df, i, 1, 2 * ui * ti); + gsl_matrix_set (df, i, 2, 2 * vi); + gsl_matrix_set (df, i, 3, 2 * vi * sin (ti)); + + } + return GSL_SUCCESS; +} + +static gsl_multifit_function_fdf brown1_func = +{ + &brown1_f, + &brown1_df, + NULL, + brown1_N, + brown1_P, + NULL, + 0, + 0 +}; + +static test_fdf_problem brown1_problem = +{ + "brown_dennis", + brown1_x0, + NULL, + &brown1_epsrel, + brown1_NTRIES, + &brown1_checksol, + &brown1_func +}; diff --git a/gsl-2.5/multifit/test_brown2.c b/gsl-2.5/multifit/test_brown2.c new file mode 100644 index 00000000..7b46a24b --- /dev/null +++ b/gsl-2.5/multifit/test_brown2.c @@ -0,0 +1,128 @@ +#define brown2_N 5 +#define brown2_P 5 + +#define brown2_NTRIES 3 + +static double brown2_x0[brown2_P] = { 0.5, 0.5, 0.5, 0.5, 0.5 }; +static double brown2_epsrel = 1.0e-12; + +static void +brown2_checksol(const double x[], const double sumsq, + const double epsrel, const char *sname, + const char *pname) +{ + size_t i; + double sumsq_exact; + double alpha; + const double p = (double) brown2_P; + double alpha1mp, lhs, lastel; + + if (sumsq < 0.5) + { + /* sumsq = 0 case */ + + sumsq_exact = 0.0; + alpha = x[0]; + alpha1mp = pow(alpha, 1.0 - p); + lhs = p*pow(alpha, p) - (p + 1)/alpha1mp; + lastel = alpha1mp; + + gsl_test_rel(lhs, -1.0, epsrel, "%s/%s alpha lhs", + sname, pname); + } + else + { + /* sumsq = 1 case */ + + sumsq_exact = 1.0; + alpha = 0.0; + lastel = p + 1.0; + } + + gsl_test_rel(sumsq, sumsq_exact, epsrel, "%s/%s sumsq", + sname, pname); + + for (i = 1; i < brown2_P - 1; ++i) + { + gsl_test_rel(x[i], alpha, epsrel, "%s/%s i=%zu", + sname, pname, i); + } + + gsl_test_rel(x[brown2_P - 1], lastel, epsrel, "%s/%s last element", + sname, pname); +} + +static int +brown2_f (const gsl_vector * x, void *params, gsl_vector * f) +{ + size_t i; + double sum = -(brown2_N + 1.0); + double prod = 1.0; + + for (i = 0; i < brown2_N; ++i) + { + double xi = gsl_vector_get(x, i); + sum += xi; + prod *= xi; + } + + for (i = 0; i < brown2_N - 1; ++i) + { + double xi = gsl_vector_get(x, i); + gsl_vector_set(f, i, xi + sum); + } + + gsl_vector_set(f, brown2_N - 1, prod - 1.0); + + return GSL_SUCCESS; +} + +static int +brown2_df (const gsl_vector * x, void *params, gsl_matrix * J) +{ + size_t i, j; + + for (j = 0; j < brown2_P; ++j) + { + double prod = 1.0; + + for (i = 0; i < brown2_N - 1; i++) + { + double Jij = (i == j) ? 2.0 : 1.0; + gsl_matrix_set(J, i, j, Jij); + } + + for (i = 0; i < brown2_N; i++) + { + if (i != j) + prod *= gsl_vector_get(x, i); + } + + gsl_matrix_set(J, brown2_N - 1, j, prod); + } + + return GSL_SUCCESS; +} + +static gsl_multifit_function_fdf brown2_func = +{ + &brown2_f, + &brown2_df, + NULL, + brown2_N, + brown2_P, + NULL, + 0, + 0 +}; + +static test_fdf_problem brown2_problem = +{ + "brown_almost_linear", + brown2_x0, + NULL, + &brown2_epsrel, + brown2_NTRIES, + &brown2_checksol, + &brown2_func +}; diff --git a/gsl-2.5/multifit/test_brown3.c b/gsl-2.5/multifit/test_brown3.c new file mode 100644 index 00000000..d9eceb70 --- /dev/null +++ b/gsl-2.5/multifit/test_brown3.c @@ -0,0 +1,78 @@ +#define brown3_N 3 +#define brown3_P 2 + +#define brown3_NTRIES 3 + +static double brown3_x0[brown3_P] = { 1.0, 1.0 }; +static double brown3_epsrel = 1.0e-12; + +static void +brown3_checksol(const double x[], const double sumsq, + const double epsrel, const char *sname, + const char *pname) +{ + size_t i; + const double sumsq_exact = 0.0; + const double brown3_x[brown3_P] = { 1.0e6, 2.0e-6 }; + + gsl_test_rel(sumsq, sumsq_exact, epsrel, "%s/%s sumsq", + sname, pname); + + for (i = 0; i < brown3_P; ++i) + { + gsl_test_rel(x[i], brown3_x[i], epsrel, "%s/%s i=%zu", + sname, pname, i); + } +} + +static int +brown3_f (const gsl_vector * x, void *params, gsl_vector * f) +{ + double x1 = gsl_vector_get(x, 0); + double x2 = gsl_vector_get(x, 1); + + gsl_vector_set(f, 0, x1 - 1.0e6); + gsl_vector_set(f, 1, x2 - 2.0e-6); + gsl_vector_set(f, 2, x1*x2 - 2.0); + + return GSL_SUCCESS; +} + +static int +brown3_df (const gsl_vector * x, void *params, gsl_matrix * J) +{ + double x1 = gsl_vector_get(x, 0); + double x2 = gsl_vector_get(x, 1); + + gsl_matrix_set_zero(J); + + gsl_matrix_set(J, 0, 0, 1.0); + gsl_matrix_set(J, 1, 1, 1.0); + gsl_matrix_set(J, 2, 0, x2); + gsl_matrix_set(J, 2, 1, x1); + + return GSL_SUCCESS; +} + +static gsl_multifit_function_fdf brown3_func = +{ + &brown3_f, + &brown3_df, + NULL, + brown3_N, + brown3_P, + NULL, + 0, + 0 +}; + +static test_fdf_problem brown3_problem = +{ + "brown_badly_scaled", + brown3_x0, + NULL, + &brown3_epsrel, + brown3_NTRIES, + &brown3_checksol, + &brown3_func +}; diff --git a/gsl-2.5/multifit/test_eckerle.c b/gsl-2.5/multifit/test_eckerle.c new file mode 100644 index 00000000..d81cc9e2 --- /dev/null +++ b/gsl-2.5/multifit/test_eckerle.c @@ -0,0 +1,124 @@ +#define eckerle_N 35 +#define eckerle_P 3 + +#define eckerle_NTRIES 1 + +static double eckerle_x0[eckerle_P] = { 1.0, 10.0, 500.0 }; +static double eckerle_epsrel = 1.0e-7; + +static double eckerle_sigma[eckerle_P] = { + 1.5408051163E-02, 4.6803020753E-02, 4.6800518816E-02 +}; + +static double eckerle_X[eckerle_N] = { + 400.000000, 405.000000, 410.000000, 415.000000, 420.000000, + 425.000000, 430.000000, 435.000000, 436.500000, 438.000000, + 439.500000, 441.000000, 442.500000, 444.000000, 445.500000, + 447.000000, 448.500000, 450.000000, 451.500000, 453.000000, + 454.500000, 456.000000, 457.500000, 459.000000, 460.500000, + 462.000000, 463.500000, 465.000000, 470.000000, 475.000000, + 480.000000, 485.000000, 490.000000, 495.000000, 500.000000 }; + +static double eckerle_F[eckerle_N] = { + 0.0001575, 0.0001699, 0.0002350, 0.0003102, 0.0004917, + 0.0008710, 0.0017418, 0.0046400, 0.0065895, 0.0097302, + 0.0149002, 0.0237310, 0.0401683, 0.0712559, 0.1264458, + 0.2073413, 0.2902366, 0.3445623, 0.3698049, 0.3668534, + 0.3106727, 0.2078154, 0.1164354, 0.0616764, 0.0337200, + 0.0194023, 0.0117831, 0.0074357, 0.0022732, 0.0008800, + 0.0004579, 0.0002345, 0.0001586, 0.0001143, 0.0000710 }; + +static void +eckerle_checksol(const double x[], const double sumsq, + const double epsrel, const char *sname, + const char *pname) +{ + size_t i; + const double sumsq_exact = 1.4635887487E-03; + const double eckerle_x[eckerle_P] = { 1.5543827178E+00, + 4.0888321754E+00, + 4.5154121844E+02 }; + + gsl_test_rel(sumsq, sumsq_exact, epsrel, "%s/%s sumsq", + sname, pname); + + for (i = 0; i < eckerle_P; ++i) + { + gsl_test_rel(x[i], eckerle_x[i], epsrel, "%s/%s i=%zu", + sname, pname, i); + } +} + + +static int +eckerle_f (const gsl_vector * x, void *params, gsl_vector * f) +{ + double b[eckerle_P]; + size_t i; + + for (i = 0; i < eckerle_P; i++) + { + b[i] = gsl_vector_get(x, i); + } + + for (i = 0; i < eckerle_N; i++) + { + double xi = eckerle_X[i]; + double term = xi - b[2]; + double yi; + + yi = b[0] / b[1] * exp(-0.5 * term * term / b[1] / b[1]); + gsl_vector_set (f, i, yi - eckerle_F[i]); + } + + return GSL_SUCCESS; +} + +static int +eckerle_df (const gsl_vector * x, void *params, gsl_matrix * df) +{ + double b[eckerle_P]; + size_t i; + + for (i = 0; i < eckerle_P; i++) + { + b[i] = gsl_vector_get(x, i); + } + + for (i = 0; i < eckerle_N; i++) + { + double xi = eckerle_X[i]; + double term1 = xi - b[2]; + double term2 = exp(-0.5 * term1 * term1 / (b[1] * b[1])); + + gsl_matrix_set (df, i, 0, term2 / b[1]); + gsl_matrix_set (df, i, 1, + -b[0] * term2 / (b[1] * b[1]) + b[0] / pow(b[1], 4.0) * term2 * term1 * term1); + gsl_matrix_set (df, i, 2, b[0] / pow(b[1], 3.0) * term1 * term2); + } + + return GSL_SUCCESS; +} + +static gsl_multifit_function_fdf eckerle_func = +{ + &eckerle_f, + &eckerle_df, + NULL, + eckerle_N, + eckerle_P, + NULL, + 0, + 0 +}; + +static test_fdf_problem eckerle_problem = +{ + "nist-eckerle", + eckerle_x0, + eckerle_sigma, + &eckerle_epsrel, + eckerle_NTRIES, + &eckerle_checksol, + &eckerle_func +}; diff --git a/gsl-2.5/multifit/test_enso.c b/gsl-2.5/multifit/test_enso.c new file mode 100644 index 00000000..70956d14 --- /dev/null +++ b/gsl-2.5/multifit/test_enso.c @@ -0,0 +1,300 @@ +#define enso_N 168 +#define enso_P 9 + +#define enso_NTRIES 1 + +static double enso_x0[enso_P] = { 10.0, 3.0, 0.5, 44.0, -1.5, 0.5, 26.0, 0.1, 1.5 }; + + +static double enso_epsrel = 1.0e-3; + +static double enso_sigma[enso_P] = { + 1.7488832467E-01, + 2.4310052139E-01, + 2.4354686618E-01, + 9.4408025976E-01, + 2.8078369611E-01, + 4.8073701119E-01, + 4.1612939130E-01, + 5.1460022911E-01, + 2.5434468893E-01 +}; + +static double enso_F[enso_N] = { + 12.90000, + 11.30000, + 10.60000, + 11.20000, + 10.90000, + 7.500000, + 7.700000, + 11.70000, + 12.90000, + 14.30000, + 10.90000, + 13.70000, + 17.10000, + 14.00000, + 15.30000, + 8.500000, + 5.700000, + 5.500000, + 7.600000, + 8.600000, + 7.300000, + 7.600000, + 12.70000, + 11.00000, + 12.70000, + 12.90000, + 13.00000, + 10.90000, + 10.400000, + 10.200000, + 8.000000, + 10.90000, + 13.60000, + 10.500000, + 9.200000, + 12.40000, + 12.70000, + 13.30000, + 10.100000, + 7.800000, + 4.800000, + 3.000000, + 2.500000, + 6.300000, + 9.700000, + 11.60000, + 8.600000, + 12.40000, + 10.500000, + 13.30000, + 10.400000, + 8.100000, + 3.700000, + 10.70000, + 5.100000, + 10.400000, + 10.90000, + 11.70000, + 11.40000, + 13.70000, + 14.10000, + 14.00000, + 12.50000, + 6.300000, + 9.600000, + 11.70000, + 5.000000, + 10.80000, + 12.70000, + 10.80000, + 11.80000, + 12.60000, + 15.70000, + 12.60000, + 14.80000, + 7.800000, + 7.100000, + 11.20000, + 8.100000, + 6.400000, + 5.200000, + 12.00000, + 10.200000, + 12.70000, + 10.200000, + 14.70000, + 12.20000, + 7.100000, + 5.700000, + 6.700000, + 3.900000, + 8.500000, + 8.300000, + 10.80000, + 16.70000, + 12.60000, + 12.50000, + 12.50000, + 9.800000, + 7.200000, + 4.100000, + 10.60000, + 10.100000, + 10.100000, + 11.90000, + 13.60000, + 16.30000, + 17.60000, + 15.50000, + 16.00000, + 15.20000, + 11.20000, + 14.30000, + 14.50000, + 8.500000, + 12.00000, + 12.70000, + 11.30000, + 14.50000, + 15.10000, + 10.400000, + 11.50000, + 13.40000, + 7.500000, + 0.6000000, + 0.3000000, + 5.500000, + 5.000000, + 4.600000, + 8.200000, + 9.900000, + 9.200000, + 12.50000, + 10.90000, + 9.900000, + 8.900000, + 7.600000, + 9.500000, + 8.400000, + 10.70000, + 13.60000, + 13.70000, + 13.70000, + 16.50000, + 16.80000, + 17.10000, + 15.40000, + 9.500000, + 6.100000, + 10.100000, + 9.300000, + 5.300000, + 11.20000, + 16.60000, + 15.60000, + 12.00000, + 11.50000, + 8.600000, + 13.80000, + 8.700000, + 8.600000, + 8.600000, + 8.700000, + 12.80000, + 13.20000, + 14.00000, + 13.40000, + 14.80000 +}; + +static void +enso_checksol(const double x[], const double sumsq, + const double epsrel, const char *sname, + const char *pname) +{ + size_t i; + const double sumsq_exact = 7.8853978668E+02; + const double enso_x[enso_P] = { + 1.0510749193E+01, 3.0762128085E+00, 5.3280138227E-01, + 4.4311088700E+01, -1.6231428586E+00, 5.2554493756E-01, + 2.6887614440E+01, 2.1232288488E-01, 1.4966870418E+00 }; + + gsl_test_rel(sumsq, sumsq_exact, epsrel, "%s/%s sumsq", + sname, pname); + + for (i = 0; i < enso_P; ++i) + { + gsl_test_rel(x[i], enso_x[i], epsrel, "%s/%s i=%zu", + sname, pname, i); + } +} + + +static int +enso_f (const gsl_vector * x, void *params, gsl_vector * f) +{ + double b[enso_P]; + size_t i; + + for (i = 0; i < enso_P; i++) + { + b[i] = gsl_vector_get(x, i); + } + + for (i = 0; i < enso_N; i++) + { + double t = (i + 1.0); + double y; + y = b[0]; + y += b[1] * cos(2*M_PI*t/12); + y += b[2] * sin(2*M_PI*t/12); + y += b[4] * cos(2*M_PI*t/b[3]); + y += b[5] * sin(2*M_PI*t/b[3]); + y += b[7] * cos(2*M_PI*t/b[6]); + y += b[8] * sin(2*M_PI*t/b[6]); + + gsl_vector_set (f, i, enso_F[i] - y); + } + + return GSL_SUCCESS; +} + +static int +enso_df (const gsl_vector * x, void *params, gsl_matrix * df) +{ + double b[enso_P]; + size_t i; + + for (i = 0; i < enso_P; i++) + { + b[i] = gsl_vector_get(x, i); + } + + for (i = 0; i < enso_N; i++) + { + double t = (i + 1.0); + + gsl_matrix_set (df, i, 0, -1.0); + gsl_matrix_set (df, i, 1, -cos(2*M_PI*t/12)); + gsl_matrix_set (df, i, 2, -sin(2*M_PI*t/12)); + gsl_matrix_set (df, i, 3, + -b[4]*(2*M_PI*t/(b[3]*b[3]))*sin(2*M_PI*t/b[3]) + +b[5]*(2*M_PI*t/(b[3]*b[3]))*cos(2*M_PI*t/b[3])); + gsl_matrix_set (df, i, 4, -cos(2*M_PI*t/b[3])); + gsl_matrix_set (df, i, 5, -sin(2*M_PI*t/b[3])); + gsl_matrix_set (df, i, 6, + -b[7] * (2*M_PI*t/(b[6]*b[6])) * sin(2*M_PI*t/b[6]) + +b[8] * (2*M_PI*t/(b[6]*b[6])) * cos(2*M_PI*t/b[6])); + gsl_matrix_set (df, i, 7, -cos(2*M_PI*t/b[6])); + gsl_matrix_set (df, i, 8, -sin(2*M_PI*t/b[6])); + } + + return GSL_SUCCESS; +} + +static gsl_multifit_function_fdf enso_func = +{ + &enso_f, + &enso_df, + NULL, + enso_N, + enso_P, + NULL, + 0, + 0 +}; + +static test_fdf_problem enso_problem = +{ + "nist-ENSO", + enso_x0, + enso_sigma, + &enso_epsrel, + enso_NTRIES, + &enso_checksol, + &enso_func +}; diff --git a/gsl-2.5/multifit/test_estimator.c b/gsl-2.5/multifit/test_estimator.c new file mode 100644 index 00000000..51cbabad --- /dev/null +++ b/gsl-2.5/multifit/test_estimator.c @@ -0,0 +1,37 @@ +void +test_estimator () +{ + gsl_vector_view c; + gsl_matrix_view cov; + gsl_vector_view x; + double y, y_err; + + double cov_ij[25] = { + 4.271520, -0.526675, 0.957930, 0.267750, -0.103610, + -0.526675, 5.701680, -0.098080, 0.641845, 0.429780, + 0.957930, -0.098080, 4.584790, 0.375865, 1.510810, + 0.267750, 0.641845, 0.375865, 4.422720, 0.392210, + -0.103610, 0.429780, 1.510810, 0.392210, 5.782750 + + }; + + double c_i[5] = { + -0.627020, 0.848674, 0.216877, -0.057883, 0.596668 + }; + + double x_i[5] = { + 0.99932, 0.23858, 0.19797, 1.44008, -0.15335 + }; + + double y_expected = -5.56037032230000e-01; + double yerr_expected = 3.91891123349318e+00; + + cov = gsl_matrix_view_array(cov_ij, 5, 5); + c = gsl_vector_view_array(c_i, 5); + x = gsl_vector_view_array(x_i, 5); + + gsl_multifit_linear_est(&x.vector , &c.vector, &cov.matrix, &y, &y_err); + + gsl_test_rel (y, y_expected, 256*GSL_DBL_EPSILON, "gsl_multifit_linear_est y"); + gsl_test_rel (y_err, yerr_expected, 256*GSL_DBL_EPSILON, "gsl_multifit_linear_est yerr"); +} diff --git a/gsl-2.5/multifit/test_exp1.c b/gsl-2.5/multifit/test_exp1.c new file mode 100644 index 00000000..211c6754 --- /dev/null +++ b/gsl-2.5/multifit/test_exp1.c @@ -0,0 +1,105 @@ +#define exp1_N 45 +#define exp1_P 4 + +#define exp1_NTRIES 3 + +static double exp1_x0[exp1_P] = { -1.0, -2.0, 1.0, -1.0 }; +static double exp1_epsrel = 1.0e-4; + +static double exp1_Y[exp1_N] = { +0.090542, 0.124569, 0.179367, 0.195654, 0.269707, +0.286027, 0.289892, 0.317475, 0.308191, 0.336995, +0.348371, 0.321337, 0.299423, 0.338972, 0.304763, +0.288903, 0.300820, 0.303974, 0.283987, 0.262078, +0.281593, 0.267531, 0.218926, 0.225572, 0.200594, +0.197375, 0.182440, 0.183892, 0.152285, 0.174028, +0.150874, 0.126220, 0.126266, 0.106384, 0.118923, +0.091868, 0.128926, 0.119273, 0.115997, 0.105831, +0.075261, 0.068387, 0.090823, 0.085205, 0.067203 +}; + +static void +exp1_checksol(const double x[], const double sumsq, + const double epsrel, const char *sname, + const char *pname) +{ + size_t i; + const double sumsq_exact = 1.0e-2; + const double exp1_x[exp1_P] = { -4.0, -5.0, 4.0, -4.0 }; /* approx */ + + gsl_test_rel(sumsq, sumsq_exact, epsrel, "%s/%s sumsq", + sname, pname); + + for (i = 0; i < exp1_P; ++i) + { + gsl_test_rel(x[i], exp1_x[i], epsrel, "%s/%s i=%zu", + sname, pname, i); + } +} + +static int +exp1_f (const gsl_vector * x, void *params, gsl_vector * f) +{ + double x1 = gsl_vector_get(x, 0); + double x2 = gsl_vector_get(x, 1); + double x3 = gsl_vector_get(x, 2); + double x4 = gsl_vector_get(x, 3); + size_t i; + + for (i = 0; i < exp1_N; ++i) + { + double ti = 0.02*(i + 1.0); + double yi = exp1_Y[i]; + double fi = yi - (x3*exp(x1*ti) + x4*exp(x2*ti)); + gsl_vector_set(f, i, fi); + } + + return GSL_SUCCESS; +} + +static int +exp1_df (const gsl_vector * x, void *params, gsl_matrix * J) +{ + double x1 = gsl_vector_get(x, 0); + double x2 = gsl_vector_get(x, 1); + double x3 = gsl_vector_get(x, 2); + double x4 = gsl_vector_get(x, 3); + size_t i; + + for (i = 0; i < exp1_N; ++i) + { + double ti = 0.02*(i + 1.0); + double term1 = exp(x1*ti); + double term2 = exp(x2*ti); + + gsl_matrix_set(J, i, 0, -x3*ti*term1); + gsl_matrix_set(J, i, 1, -x4*ti*term2); + gsl_matrix_set(J, i, 2, -term1); + gsl_matrix_set(J, i, 3, -term2); + } + + return GSL_SUCCESS; +} + +static gsl_multifit_function_fdf exp1_func = +{ + &exp1_f, + &exp1_df, + NULL, + exp1_N, + exp1_P, + NULL, + 0, + 0 +}; + +static test_fdf_problem exp1_problem = +{ + "expfit1", + exp1_x0, + NULL, + &exp1_epsrel, + exp1_NTRIES, + &exp1_checksol, + &exp1_func +}; diff --git a/gsl-2.5/multifit/test_filip.c b/gsl-2.5/multifit/test_filip.c new file mode 100644 index 00000000..c98c53b3 --- /dev/null +++ b/gsl-2.5/multifit/test_filip.c @@ -0,0 +1,186 @@ +size_t filip_n = 82; +size_t filip_p = 11; + +double filip_x[] = { -6.860120914, -4.324130045, -4.358625055, +-4.358426747, -6.955852379, -6.661145254, -6.355462942, -6.118102026, +-7.115148017, -6.815308569, -6.519993057, -6.204119983, -5.853871964, +-6.109523091, -5.79832982, -5.482672118, -5.171791386, -4.851705903, +-4.517126416, -4.143573228, -3.709075441, -3.499489089, -6.300769497, +-5.953504836, -5.642065153, -5.031376979, -4.680685696, -4.329846955, +-3.928486195, -8.56735134, -8.363211311, -8.107682739, -7.823908741, +-7.522878745, -7.218819279, -6.920818754, -6.628932138, -6.323946875, +-5.991399828, -8.781464495, -8.663140179, -8.473531488, -8.247337057, +-7.971428747, -7.676129393, -7.352812702, -7.072065318, -6.774174009, +-6.478861916, -6.159517513, -6.835647144, -6.53165267, -6.224098421, +-5.910094889, -5.598599459, -5.290645224, -4.974284616, -4.64454848, +-4.290560426, -3.885055584, -3.408378962, -3.13200249, -8.726767166, +-8.66695597, -8.511026475, -8.165388579, -7.886056648, -7.588043762, +-7.283412422, -6.995678626, -6.691862621, -6.392544977, -6.067374056, +-6.684029655, -6.378719832, -6.065855188, -5.752272167, -5.132414673, +-4.811352704, -4.098269308, -3.66174277, -3.2644011}; + +double filip_y[] = { 0.8116, 0.9072, 0.9052, 0.9039, 0.8053, 0.8377, +0.8667, 0.8809, 0.7975, 0.8162, 0.8515, 0.8766, 0.8885, 0.8859, +0.8959, 0.8913, 0.8959, 0.8971, 0.9021, 0.909, 0.9139, 0.9199, 0.8692, +0.8872, 0.89, 0.891, 0.8977, 0.9035, 0.9078, 0.7675, 0.7705, 0.7713, +0.7736, 0.7775, 0.7841, 0.7971, 0.8329, 0.8641, 0.8804, 0.7668, +0.7633, 0.7678, 0.7697, 0.77, 0.7749, 0.7796, 0.7897, 0.8131, 0.8498, +0.8741, 0.8061, 0.846, 0.8751, 0.8856, 0.8919, 0.8934, 0.894, 0.8957, +0.9047, 0.9129, 0.9209, 0.9219, 0.7739, 0.7681, 0.7665, 0.7703, +0.7702, 0.7761, 0.7809, 0.7961, 0.8253, 0.8602, 0.8809, 0.8301, +0.8664, 0.8834, 0.8898, 0.8964, 0.8963, 0.9074, 0.9119, 0.9228 } ; + +static int +test_filip_results(const char *str, + const gsl_vector *c, const gsl_vector *expected_c, + const gsl_vector *cov_diag, const gsl_vector *expected_sd, + const double chisq, const double chisq_res, + const double expected_chisq) +{ + size_t i; + + /* test coefficient vector */ + for (i = 0; i < filip_p; ++i) + { + gsl_test_rel (gsl_vector_get(c,i), + gsl_vector_get(expected_c, i), + 1.0e-7, + "%s c[%zu]", str, i) ; + + if (cov_diag && expected_sd) + { + gsl_test_rel (sqrt(gsl_vector_get(cov_diag, i)), + gsl_vector_get(expected_sd, i), + 1e-7, + "%s cov[%zu,%zu]", str, i, i); + } + } + + gsl_test_rel (chisq, expected_chisq, 1.0e-7, "%s chisq", str); + gsl_test_rel (chisq_res, expected_chisq, 1.0e-7, "%s chisq residuals", str); + + return GSL_SUCCESS; +} + +void +test_filip () +{ + size_t i, j; + gsl_multifit_linear_workspace * work = + gsl_multifit_linear_alloc (filip_n, filip_p); + + gsl_multifit_robust_workspace * work_rob = + gsl_multifit_robust_alloc (gsl_multifit_robust_ols, filip_n, filip_p); + + gsl_matrix * X = gsl_matrix_alloc (filip_n, filip_p); + gsl_vector_view y = gsl_vector_view_array (filip_y, filip_n); + gsl_vector * c = gsl_vector_alloc (filip_p); + gsl_matrix * cov = gsl_matrix_alloc (filip_p, filip_p); + gsl_vector * r = gsl_vector_alloc(filip_n); + + double chisq, chisq_res; + + double expected_c[11] = { -1467.48961422980, + -2772.17959193342, + -2316.37108160893, + -1127.97394098372, + -354.478233703349, + -75.1242017393757, + -10.8753180355343, + -1.06221498588947, + -0.670191154593408E-01, + -0.246781078275479E-02, + -0.402962525080404E-04 }; + + double expected_sd[11] = { 298.084530995537, + 559.779865474950, + 466.477572127796, + 227.204274477751, + 71.6478660875927, + 15.2897178747400, + 2.23691159816033, + 0.221624321934227, + 0.142363763154724E-01, + 0.535617408889821E-03, + 0.896632837373868E-05 }; + + double expected_chisq = 0.795851382172941E-03; + + gsl_vector_view diag = gsl_matrix_diagonal (cov); + gsl_vector_view exp_c = gsl_vector_view_array(expected_c, filip_p); + gsl_vector_view exp_sd = gsl_vector_view_array(expected_sd, filip_p); + + for (i = 0 ; i < filip_n; i++) + { + for (j = 0; j < filip_p; j++) + { + gsl_matrix_set(X, i, j, pow(filip_x[i], j)); + } + } + + /* test unweighted least squares */ + gsl_multifit_linear (X, &y.vector, c, cov, &chisq, work); + gsl_multifit_linear_residuals(X, &y.vector, c, r); + gsl_blas_ddot(r, r, &chisq_res); + + test_filip_results("filip gsl_multifit_linear", + c, &exp_c.vector, + &diag.vector, &exp_sd.vector, + chisq, chisq_res, expected_chisq); + + /* test robust least squares */ + gsl_multifit_robust (X, &y.vector, c, cov, work_rob); + + test_filip_results("filip gsl_multifit_robust", + c, &exp_c.vector, + &diag.vector, &exp_sd.vector, + 1.0, 1.0, 1.0); + + /* test weighted least squares */ + { + gsl_vector * w = gsl_vector_alloc (filip_n); + + /* computed using GNU Calc */ + + double expected_cov[11][11] ={ { 7.9269341767252183262588583867942e9, 1.4880416622254098343441063389706e10, 1.2385811858111487905481427591107e10, 6.0210784406215266653697715794241e9, 1.8936652526181982747116667336389e9, 4.0274900618493109653998118587093e8, 5.8685468011819735806180092394606e7, 5.7873451475721689084330083708901e6, 3.6982719848703747920663262917032e5, 1.3834818802741350637527054170891e4, 2.301758578713219280719633494302e2 }, + { 1.4880416622254098334697515488559e10, 2.7955091668548290835529555438088e10, 2.3286604504243362691678565997033e10, 1.132895006796272983689297219686e10, 3.5657281653312473123348357644683e9, 7.5893300392314445528176646366087e8, 1.1066654886143524811964131660002e8, 1.0921285448484575110763947787775e7, 6.9838139975394769253353547606971e5, 2.6143091775349597218939272614126e4, 4.3523386330348588614289505633539e2 }, + { 1.2385811858111487890788272968677e10, 2.3286604504243362677757802422747e10, 1.9412787917766676553608636489674e10, 9.4516246492862131849077729250098e9, 2.9771226694709917550143152097252e9, 6.3413035086730038062129508949859e8, 9.2536164488309401636559552742339e7, 9.1386304643423333815338760248027e6, 5.8479478338916429826337004060941e5, 2.1905933113294737443808429764554e4, 3.6493161325305557266196635180155e2 }, + { 6.0210784406215266545770691532365e9, 1.1328950067962729823273441573365e10, 9.4516246492862131792040001429636e9, 4.6053152992000107509329772255094e9, 1.4517147860312147098138030287038e9, 3.0944988323328589376402579060072e8, 4.5190223822292688669369522708712e7, 4.4660958693678497534529855690752e6, 2.8599340736122198213681258676423e5, 1.0720394998549386596165641244705e4, 1.7870937745661967319298031044424e2 }, + { 1.8936652526181982701620450132636e9, 3.5657281653312473058825073094524e9, 2.9771226694709917514149924058297e9, 1.451714786031214708936087401632e9, 4.5796563896564815123074920050827e8, 9.7693972414561515534525103622773e7, 1.427717861635658545863942948444e7, 1.4120161287735817621354292900338e6, 9.0484361228623960006818614875557e4, 3.394106783764852373199087455398e3, 5.6617406468519495376287407526295e1 }, + { 4.0274900618493109532650887473599e8, 7.589330039231444534478894935778e8, 6.3413035086730037947153564986653e8, 3.09449883233285893390542947998e8, 9.7693972414561515475770399055121e7, 2.0855726248311948992114244257719e7, 3.0501263034740400533872858749566e6, 3.0187475839310308153394428784224e5, 1.9358204633534233524477930175632e4, 7.2662989867560017077361942813911e2, 1.2129002231061036467607394277965e1 }, + { 5.868546801181973559370854830868e7, 1.1066654886143524778548044386795e8, 9.2536164488309401413296494869777e7, 4.5190223822292688587853853162072e7, 1.4277178616356585441556046753562e7, 3.050126303474040051574715592746e6, 4.4639982579046340884744460329946e5, 4.4212093985989836047285007760238e4, 2.8371395028774486687625333589972e3, 1.0656694507620102300567296504381e2, 1.7799982046359973175080475654123e0 }, + { 5.7873451475721688839974153925406e6, 1.0921285448484575071271480643397e7, 9.1386304643423333540728480344578e6, 4.4660958693678497427674903565664e6, 1.4120161287735817596182229182587e6, 3.0187475839310308117812257613082e5, 4.4212093985989836021482392757677e4, 4.3818874017028389517560906916315e3, 2.813828775753142855163154605027e2, 1.0576188138416671883232607188969e1, 1.7676976288918295012452853715408e-1 }, + { 3.6982719848703747742568351456818e5, 6.9838139975394768959780068745979e5, 5.8479478338916429616547638954781e5, 2.8599340736122198128717796825489e5, 9.0484361228623959793493985226792e4, 1.9358204633534233490579641064343e4, 2.8371395028774486654873647731797e3, 2.8138287757531428535592907878017e2, 1.8081118503579798222896804627964e1, 6.8005074291434681866415478598732e-1, 1.1373581557749643543869665860719e-2 }, + { 1.3834818802741350562839757244708e4, 2.614309177534959709397445440919e4, 2.1905933113294737352721470167247e4, 1.0720394998549386558251721913182e4, 3.3941067837648523632905604575131e3, 7.2662989867560016909534954790835e2, 1.0656694507620102282337905013451e2, 1.0576188138416671871337685672492e1, 6.8005074291434681828743281967838e-1, 2.5593857187900736057022477529078e-2, 4.2831487599116264442963102045936e-4 }, + { 2.3017585787132192669801658674163e2, 4.3523386330348588381716460685124e2, 3.6493161325305557094116270974735e2, 1.7870937745661967246233792737255e2, 5.6617406468519495180024059284629e1, 1.2129002231061036433003571679329e1, 1.7799982046359973135014027410646e0, 1.7676976288918294983059118597214e-1, 1.137358155774964353146460100337e-2, 4.283148759911626442000316269063e-4, 7.172253875245080423800933453952e-6 } }; + + gsl_vector_set_all (w, 1.0); + + gsl_multifit_wlinear (X, w, &y.vector, c, cov, &chisq, work); + gsl_multifit_linear_residuals(X, &y.vector, c, r); + gsl_blas_ddot(r, r, &chisq_res); + + test_filip_results("filip gsl_multifit_wlinear", + c, &exp_c.vector, + NULL, NULL, + chisq, chisq_res, expected_chisq); + + for (i = 0; i < filip_p; i++) + { + for (j = 0; j < filip_p; j++) + { + gsl_test_rel (gsl_matrix_get(cov,i,j), expected_cov[i][j], 1e-6, + "filip gsl_multifit_wlinear cov(%d,%d)", i, j) ; + } + } + + gsl_vector_free(w); + } + + gsl_vector_free(c); + gsl_matrix_free(cov); + gsl_matrix_free(X); + gsl_vector_free(r); + gsl_multifit_linear_free (work); + gsl_multifit_robust_free (work_rob); +} diff --git a/gsl-2.5/multifit/test_gaussian.c b/gsl-2.5/multifit/test_gaussian.c new file mode 100644 index 00000000..bd4389e6 --- /dev/null +++ b/gsl-2.5/multifit/test_gaussian.c @@ -0,0 +1,99 @@ +#define gaussian_N 15 +#define gaussian_P 3 + +#define gaussian_NTRIES 2 + +static double gaussian_x0[gaussian_P] = { 0.4, 1.0, 0.0 }; + +static double gaussian_epsrel = 1.0e-10; + +static double gaussian_Y[gaussian_N] = { +0.0009, 0.0044, 0.0175, 0.0540, 0.1295, 0.2420, 0.3521, 0.3989, +0.3521, 0.2420, 0.1295, 0.0540, 0.0175, 0.0044, 0.0009 +}; + +static void +gaussian_checksol(const double x[], const double sumsq, + const double epsrel, const char *sname, + const char *pname) +{ + size_t i; + const double sumsq_exact = 1.12793276961871985e-08; + const double gaussian_x[gaussian_P] = { 0.398956137838762825, + 1.00001908448786647, + 0.0 }; + + gsl_test_rel(sumsq, sumsq_exact, epsrel, "%s/%s sumsq", + sname, pname); + + for (i = 0; i < gaussian_P; ++i) + { + gsl_test_rel(x[i], gaussian_x[i], epsrel, "%s/%s i=%zu", + sname, pname, i); + } +} + +static int +gaussian_f (const gsl_vector * x, void *params, gsl_vector * f) +{ + double x1 = gsl_vector_get(x, 0); + double x2 = gsl_vector_get(x, 1); + double x3 = gsl_vector_get(x, 2); + size_t i; + + for (i = 0; i < gaussian_N; ++i) + { + double ti = (7.0 - i) / 2.0; + double yi = gaussian_Y[i]; + double term = ti - x3; + double fi = x1 * exp(-x2*term*term/2.0) - yi; + gsl_vector_set(f, i, fi); + } + + return GSL_SUCCESS; +} + +static int +gaussian_df (const gsl_vector * x, void *params, gsl_matrix * J) +{ + double x1 = gsl_vector_get(x, 0); + double x2 = gsl_vector_get(x, 1); + double x3 = gsl_vector_get(x, 2); + size_t i; + + for (i = 0; i < gaussian_N; ++i) + { + double ti = (7.0 - i) / 2.0; + double term1 = ti - x3; + double term2 = exp(-x2*term1*term1/2.0); + + gsl_matrix_set(J, i, 0, term2); + gsl_matrix_set(J, i, 1, -0.5*x1*term2*term1*term1); + gsl_matrix_set(J, i, 2, x1*x2*term1*term2); + } + + return GSL_SUCCESS; +} + +static gsl_multifit_function_fdf gaussian_func = +{ + &gaussian_f, + &gaussian_df, + NULL, + gaussian_N, + gaussian_P, + NULL, + 0, + 0 +}; + +static test_fdf_problem gaussian_problem = +{ + "gaussian", + gaussian_x0, + NULL, + &gaussian_epsrel, + gaussian_NTRIES, + &gaussian_checksol, + &gaussian_func +}; diff --git a/gsl-2.5/multifit/test_hahn1.c b/gsl-2.5/multifit/test_hahn1.c new file mode 100644 index 00000000..0cf84b11 --- /dev/null +++ b/gsl-2.5/multifit/test_hahn1.c @@ -0,0 +1,595 @@ +#define hahn1_N 236 +#define hahn1_P 7 + +#define hahn1_NTRIES 1 + +/* double hahn1_x0[7] = { 10, -1, 0.05, -0.00001, -0.05, 0.001, -0.000001 }; */ + +static double hahn1_x0[hahn1_P] = { 1, -0.1, 0.005, -0.000001, -0.005, 0.0001, -0.0000001}; + + +static double hahn1_epsrel = 1.0e-5; + +static double hahn1_sigma[hahn1_P] = { + 1.7070154742E-01, + 1.2000289189E-02, + 2.2508314937E-04, + 2.7578037666E-07, + 2.4712888219E-04, + 1.0449373768E-05, + 1.3027335327E-08 +}; + +static double hahn1_F1[hahn1_N] = { + .591E0, + 1.547E0, + 2.902E0, + 2.894E0, + 4.703E0, + 6.307E0, + 7.03E0 , + 7.898E0, + 9.470E0, + 9.484E0, + 10.072E0, + 10.163E0, + 11.615E0, + 12.005E0, + 12.478E0, + 12.982E0, + 12.970E0, + 13.926E0, + 14.452E0, + 14.404E0, + 15.190E0, + 15.550E0, + 15.528E0, + 15.499E0, + 16.131E0, + 16.438E0, + 16.387E0, + 16.549E0, + 16.872E0, + 16.830E0, + 16.926E0, + 16.907E0, + 16.966E0, + 17.060E0, + 17.122E0, + 17.311E0, + 17.355E0, + 17.668E0, + 17.767E0, + 17.803E0, + 17.765E0, + 17.768E0, + 17.736E0, + 17.858E0, + 17.877E0, + 17.912E0, + 18.046E0, + 18.085E0, + 18.291E0, + 18.357E0, + 18.426E0, + 18.584E0, + 18.610E0, + 18.870E0, + 18.795E0, + 19.111E0, + .367E0, + .796E0, + 0.892E0, + 1.903E0, + 2.150E0, + 3.697E0, + 5.870E0, + 6.421E0, + 7.422E0, + 9.944E0, + 11.023E0, + 11.87E0 , + 12.786E0, + 14.067E0, + 13.974E0, + 14.462E0, + 14.464E0, + 15.381E0, + 15.483E0, + 15.59E0 , + 16.075E0, + 16.347E0, + 16.181E0, + 16.915E0, + 17.003E0, + 16.978E0, + 17.756E0, + 17.808E0, + 17.868E0, + 18.481E0, + 18.486E0, + 19.090E0, + 16.062E0, + 16.337E0, + 16.345E0, + 16.388E0, + 17.159E0, + 17.116E0, + 17.164E0, + 17.123E0, + 17.979E0, + 17.974E0, + 18.007E0, + 17.993E0, + 18.523E0, + 18.669E0, + 18.617E0, + 19.371E0, + 19.330E0, + 0.080E0, + 0.248E0, + 1.089E0, + 1.418E0, + 2.278E0, + 3.624E0, + 4.574E0, + 5.556E0, + 7.267E0, + 7.695E0, + 9.136E0, + 9.959E0, + 9.957E0, + 11.600E0, + 13.138E0, + 13.564E0, + 13.871E0, + 13.994E0, + 14.947E0, + 15.473E0, + 15.379E0, + 15.455E0, + 15.908E0, + 16.114E0, + 17.071E0, + 17.135E0, + 17.282E0, + 17.368E0, + 17.483E0, + 17.764E0, + 18.185E0, + 18.271E0, + 18.236E0, + 18.237E0, + 18.523E0, + 18.627E0, + 18.665E0, + 19.086E0, + 0.214E0, + 0.943E0, + 1.429E0, + 2.241E0, + 2.951E0, + 3.782E0, + 4.757E0, + 5.602E0, + 7.169E0, + 8.920E0, + 10.055E0, + 12.035E0, + 12.861E0, + 13.436E0, + 14.167E0, + 14.755E0, + 15.168E0, + 15.651E0, + 15.746E0, + 16.216E0, + 16.445E0, + 16.965E0, + 17.121E0, + 17.206E0, + 17.250E0, + 17.339E0, + 17.793E0, + 18.123E0, + 18.49E0 , + 18.566E0, + 18.645E0, + 18.706E0, + 18.924E0, + 19.1E0 , + 0.375E0, + 0.471E0, + 1.504E0, + 2.204E0, + 2.813E0, + 4.765E0, + 9.835E0, + 10.040E0, + 11.946E0, + 12.596E0, + 13.303E0, + 13.922E0, + 14.440E0, + 14.951E0, + 15.627E0, + 15.639E0, + 15.814E0, + 16.315E0, + 16.334E0, + 16.430E0, + 16.423E0, + 17.024E0, + 17.009E0, + 17.165E0, + 17.134E0, + 17.349E0, + 17.576E0, + 17.848E0, + 18.090E0, + 18.276E0, + 18.404E0, + 18.519E0, + 19.133E0, + 19.074E0, + 19.239E0, + 19.280E0, + 19.101E0, + 19.398E0, + 19.252E0, + 19.89E0 , + 20.007E0, + 19.929E0, + 19.268E0, + 19.324E0, + 20.049E0, + 20.107E0, + 20.062E0, + 20.065E0, + 19.286E0, + 19.972E0, + 20.088E0, + 20.743E0, + 20.83E0 , + 20.935E0, + 21.035E0, + 20.93E0 , + 21.074E0, + 21.085E0, + 20.935E0 +}; + + +static double hahn1_F0[hahn1_N] = { + 24.41E0, + 34.82E0, + 44.09E0, + 45.07E0, + 54.98E0, + 65.51E0, + 70.53E0, + 75.70E0, + 89.57E0, + 91.14E0, + 96.40E0, + 97.19E0, + 114.26E0, + 120.25E0, + 127.08E0, + 133.55E0, + 133.61E0, + 158.67E0, + 172.74E0, + 171.31E0, + 202.14E0, + 220.55E0, + 221.05E0, + 221.39E0, + 250.99E0, + 268.99E0, + 271.80E0, + 271.97E0, + 321.31E0, + 321.69E0, + 330.14E0, + 333.03E0, + 333.47E0, + 340.77E0, + 345.65E0, + 373.11E0, + 373.79E0, + 411.82E0, + 419.51E0, + 421.59E0, + 422.02E0, + 422.47E0, + 422.61E0, + 441.75E0, + 447.41E0, + 448.7E0 , + 472.89E0, + 476.69E0, + 522.47E0, + 522.62E0, + 524.43E0, + 546.75E0, + 549.53E0, + 575.29E0, + 576.00E0, + 625.55E0, + 20.15E0, + 28.78E0, + 29.57E0, + 37.41E0, + 39.12E0, + 50.24E0, + 61.38E0, + 66.25E0, + 73.42E0, + 95.52E0, + 107.32E0, + 122.04E0, + 134.03E0, + 163.19E0, + 163.48E0, + 175.70E0, + 179.86E0, + 211.27E0, + 217.78E0, + 219.14E0, + 262.52E0, + 268.01E0, + 268.62E0, + 336.25E0, + 337.23E0, + 339.33E0, + 427.38E0, + 428.58E0, + 432.68E0, + 528.99E0, + 531.08E0, + 628.34E0, + 253.24E0, + 273.13E0, + 273.66E0, + 282.10E0, + 346.62E0, + 347.19E0, + 348.78E0, + 351.18E0, + 450.10E0, + 450.35E0, + 451.92E0, + 455.56E0, + 552.22E0, + 553.56E0, + 555.74E0, + 652.59E0, + 656.20E0, + 14.13E0, + 20.41E0, + 31.30E0, + 33.84E0, + 39.70E0, + 48.83E0, + 54.50E0, + 60.41E0, + 72.77E0, + 75.25E0, + 86.84E0, + 94.88E0, + 96.40E0, + 117.37E0, + 139.08E0, + 147.73E0, + 158.63E0, + 161.84E0, + 192.11E0, + 206.76E0, + 209.07E0, + 213.32E0, + 226.44E0, + 237.12E0, + 330.90E0, + 358.72E0, + 370.77E0, + 372.72E0, + 396.24E0, + 416.59E0, + 484.02E0, + 495.47E0, + 514.78E0, + 515.65E0, + 519.47E0, + 544.47E0, + 560.11E0, + 620.77E0, + 18.97E0, + 28.93E0, + 33.91E0, + 40.03E0, + 44.66E0, + 49.87E0, + 55.16E0, + 60.90E0, + 72.08E0, + 85.15E0, + 97.06E0, + 119.63E0, + 133.27E0, + 143.84E0, + 161.91E0, + 180.67E0, + 198.44E0, + 226.86E0, + 229.65E0, + 258.27E0, + 273.77E0, + 339.15E0, + 350.13E0, + 362.75E0, + 371.03E0, + 393.32E0, + 448.53E0, + 473.78E0, + 511.12E0, + 524.70E0, + 548.75E0, + 551.64E0, + 574.02E0, + 623.86E0, + 21.46E0, + 24.33E0, + 33.43E0, + 39.22E0, + 44.18E0, + 55.02E0, + 94.33E0, + 96.44E0, + 118.82E0, + 128.48E0, + 141.94E0, + 156.92E0, + 171.65E0, + 190.00E0, + 223.26E0, + 223.88E0, + 231.50E0, + 265.05E0, + 269.44E0, + 271.78E0, + 273.46E0, + 334.61E0, + 339.79E0, + 349.52E0, + 358.18E0, + 377.98E0, + 394.77E0, + 429.66E0, + 468.22E0, + 487.27E0, + 519.54E0, + 523.03E0, + 612.99E0, + 638.59E0, + 641.36E0, + 622.05E0, + 631.50E0, + 663.97E0, + 646.9E0 , + 748.29E0, + 749.21E0, + 750.14E0, + 647.04E0, + 646.89E0, + 746.9E0 , + 748.43E0, + 747.35E0, + 749.27E0, + 647.61E0, + 747.78E0, + 750.51E0, + 851.37E0, + 845.97E0, + 847.54E0, + 849.93E0, + 851.61E0, + 849.75E0, + 850.98E0, + 848.23E0 +}; + +static void +hahn1_checksol(const double x[], const double sumsq, + const double epsrel, const char *sname, + const char *pname) +{ + size_t i; + const double sumsq_exact = 1.5324382854E+00; + const double hahn1_x[hahn1_P] = { + 1.0776351733E+00, -1.2269296921E-01, 4.0863750610E-03, + -1.4262662514E-06, -5.7609940901E-03, 2.4053735503E-04, + -1.2314450199E-07 }; + + gsl_test_rel(sumsq, sumsq_exact, epsrel, "%s/%s sumsq", + sname, pname); + + for (i = 0; i < hahn1_P; ++i) + { + gsl_test_rel(x[i], hahn1_x[i], epsrel, "%s/%s i=%zu", + sname, pname, i); + } +} + +static int +hahn1_f (const gsl_vector * x, void *params, gsl_vector * f) +{ + double b[hahn1_P]; + size_t i; + + for (i = 0; i < hahn1_P; i++) + { + b[i] = gsl_vector_get(x, i); + } + + for (i = 0; i < hahn1_N; i++) + { + double x = hahn1_F0[i]; + double y = ((b[0] + x* (b[1] + x * (b[2] + x * b[3]))) + / (1 + x*(b[4] + x *(b[5] + x*b[6])))); + gsl_vector_set (f, i, hahn1_F1[i] - y); + } + + return GSL_SUCCESS; +} + +static int +hahn1_df (const gsl_vector * x, void *params, gsl_matrix * df) +{ + double b[hahn1_P]; + size_t i; + + for (i = 0; i < hahn1_P; i++) + { + b[i] = gsl_vector_get(x, i); + } + + for (i = 0; i < hahn1_N; i++) + { + double x = hahn1_F0[i]; + double u = (b[0] + x*(b[1] + x*(b[2] + x * b[3]))); + double v = (1 + x*(b[4] + x*(b[5] + x*b[6]))); + gsl_matrix_set (df, i, 0, -1/v); + gsl_matrix_set (df, i, 1, -x/v); + gsl_matrix_set (df, i, 2, -x*x/v); + gsl_matrix_set (df, i, 3, -x*x*x/v); + gsl_matrix_set (df, i, 4, x*u/(v*v)); + gsl_matrix_set (df, i, 5, x*x*u/(v*v)); + gsl_matrix_set (df, i, 6, x*x*x*u/(v*v)); + } + + return GSL_SUCCESS; +} + +static gsl_multifit_function_fdf hahn1_func = +{ + &hahn1_f, + &hahn1_df, + NULL, + hahn1_N, + hahn1_P, + NULL, + 0, + 0 +}; + +static test_fdf_problem hahn1_problem = +{ + "nist-hahn1", + hahn1_x0, + hahn1_sigma, + &hahn1_epsrel, + hahn1_NTRIES, + &hahn1_checksol, + &hahn1_func +}; diff --git a/gsl-2.5/multifit/test_helical.c b/gsl-2.5/multifit/test_helical.c new file mode 100644 index 00000000..6bc3f394 --- /dev/null +++ b/gsl-2.5/multifit/test_helical.c @@ -0,0 +1,91 @@ +#define helical_N 3 +#define helical_P 3 + +#define helical_NTRIES 4 + +static double helical_x0[helical_P] = { -1.0, 0.0, 0.0 }; +static double helical_x[helical_P] = { 1.0, 0.0, 0.0 }; + +static double helical_epsrel = 1.0e-12; + +static void +helical_checksol(const double x[], const double sumsq, + const double epsrel, const char *sname, + const char *pname) +{ + size_t i; + const double sumsq_exact = 0.0; + + gsl_test_rel(sumsq, sumsq_exact, epsrel, "%s/%s sumsq", + sname, pname); + + for (i = 0; i < helical_P; ++i) + { + gsl_test_rel(x[i], helical_x[i], epsrel, "%s/%s i=%zu", + sname, pname, i); + } +} + +static int +helical_f (const gsl_vector * x, void *params, gsl_vector * f) +{ + double x1 = gsl_vector_get(x, 0); + double x2 = gsl_vector_get(x, 1); + double x3 = gsl_vector_get(x, 2); + double theta = (x1 >= 0.0) ? 0.0 : 5.0; + double nx = gsl_hypot(x1, x2); + + gsl_vector_set(f, 0, 10.0 * (x3 - 5.0/M_PI*atan(x2 / x1) - theta)); + gsl_vector_set(f, 1, 10.0*(nx - 1.0)); + gsl_vector_set(f, 2, x3); + + return GSL_SUCCESS; +} + +static int +helical_df (const gsl_vector * x, void *params, gsl_matrix * J) +{ + double x1 = gsl_vector_get(x, 0); + double x2 = gsl_vector_get(x, 1); + double nx = gsl_hypot(x1, x2); + double nx_sq = nx * nx; + double term1 = 50.0 / (M_PI * nx_sq); + double term2 = 10.0 / nx; + + gsl_matrix_set(J, 0, 0, term1*x2); + gsl_matrix_set(J, 0, 1, -term1*x1); + gsl_matrix_set(J, 0, 2, 10.0); + + gsl_matrix_set(J, 1, 0, term2*x1); + gsl_matrix_set(J, 1, 1, term2*x2); + gsl_matrix_set(J, 1, 2, 0.0); + + gsl_matrix_set(J, 2, 0, 0.0); + gsl_matrix_set(J, 2, 1, 0.0); + gsl_matrix_set(J, 2, 2, 1.0); + + return GSL_SUCCESS; +} + +static gsl_multifit_function_fdf helical_func = +{ + &helical_f, + &helical_df, + NULL, + helical_N, + helical_P, + NULL, + 0, + 0 +}; + +static test_fdf_problem helical_problem = +{ + "helical", + helical_x0, + NULL, + &helical_epsrel, + helical_NTRIES, + &helical_checksol, + &helical_func +}; diff --git a/gsl-2.5/multifit/test_jennrich.c b/gsl-2.5/multifit/test_jennrich.c new file mode 100644 index 00000000..e129cfbb --- /dev/null +++ b/gsl-2.5/multifit/test_jennrich.c @@ -0,0 +1,85 @@ +#define jennrich_N 10 +#define jennrich_P 2 + +#define jennrich_NTRIES 1 + +static double jennrich_x0[jennrich_P] = { 0.3, 0.4 }; +static double jennrich_epsrel = 1.0e-8; + +static void +jennrich_checksol(const double x[], const double sumsq, + const double epsrel, const char *sname, + const char *pname) +{ + size_t i; + const double sumsq_exact = 1.243621823556148e+02; + const double jennrich_x[jennrich_P] = { 2.578252139935855e-01, + 2.578252133471426e-01 }; + + gsl_test_rel(sumsq, sumsq_exact, epsrel, "%s/%s sumsq", + sname, pname); + + for (i = 0; i < jennrich_P; ++i) + { + gsl_test_rel(x[i], jennrich_x[i], epsrel, "%s/%s i=%zu", + sname, pname, i); + } +} + +static int +jennrich_f (const gsl_vector * x, void *params, gsl_vector * f) +{ + double x1 = gsl_vector_get(x, 0); + double x2 = gsl_vector_get(x, 1); + size_t i; + + for (i = 0; i < jennrich_N; ++i) + { + double ip1 = i + 1.0; + double fi = 2.0*(i + 2.0) - (exp(x1*ip1) + exp(x2*ip1)); + gsl_vector_set(f, i, fi); + } + + return GSL_SUCCESS; +} + +static int +jennrich_df (const gsl_vector * x, void *params, gsl_matrix * J) +{ + double x1 = gsl_vector_get(x, 0); + double x2 = gsl_vector_get(x, 1); + size_t i; + + for (i = 0; i < jennrich_N; ++i) + { + double ip1 = i + 1.0; + + gsl_matrix_set(J, i, 0, -ip1*exp(ip1*x1)); + gsl_matrix_set(J, i, 1, -ip1*exp(ip1*x2)); + } + + return GSL_SUCCESS; +} + +static gsl_multifit_function_fdf jennrich_func = +{ + &jennrich_f, + &jennrich_df, + NULL, + jennrich_N, + jennrich_P, + NULL, + 0, + 0 +}; + +static test_fdf_problem jennrich_problem = +{ + "jennrich", + jennrich_x0, + NULL, + &jennrich_epsrel, + jennrich_NTRIES, + &jennrich_checksol, + &jennrich_func +}; diff --git a/gsl-2.5/multifit/test_kirby2.c b/gsl-2.5/multifit/test_kirby2.c new file mode 100644 index 00000000..5c6fcb00 --- /dev/null +++ b/gsl-2.5/multifit/test_kirby2.c @@ -0,0 +1,419 @@ +#define kirby2_N 151 +#define kirby2_P 5 + +#define kirby2_NTRIES 1 + +/* double kirby2_x0[kirby2_P] = { 2, -0.1, 0.003, -0.001, 0.00001 }; */ + +static double kirby2_x0[kirby2_P] = { 1.5, -0.15, 0.0025, -0.0015, 0.00002 }; + +static double kirby2_epsrel = 1.0e-5; + +static double kirby2_sigma[kirby2_P] = { + 8.7989634338E-02, + 4.1182041386E-03, + 4.1856520458E-05, + 5.8931897355E-05, + 2.0129761919E-07 +}; + +static double kirby2_F1[kirby2_N] = { + 0.0082E0, + 0.0112E0, + 0.0149E0, + 0.0198E0, + 0.0248E0, + 0.0324E0, + 0.0420E0, + 0.0549E0, + 0.0719E0, + 0.0963E0, + 0.1291E0, + 0.1710E0, + 0.2314E0, + 0.3227E0, + 0.4809E0, + 0.7084E0, + 1.0220E0, + 1.4580E0, + 1.9520E0, + 2.5410E0, + 3.2230E0, + 3.9990E0, + 4.8520E0, + 5.7320E0, + 6.7270E0, + 7.8350E0, + 9.0250E0, + 10.2670E0, + 11.5780E0, + 12.9440E0, + 14.3770E0, + 15.8560E0, + 17.3310E0, + 18.8850E0, + 20.5750E0, + 22.3200E0, + 22.3030E0, + 23.4600E0, + 24.0600E0, + 25.2720E0, + 25.8530E0, + 27.1100E0, + 27.6580E0, + 28.9240E0, + 29.5110E0, + 30.7100E0, + 31.3500E0, + 32.5200E0, + 33.2300E0, + 34.3300E0, + 35.0600E0, + 36.1700E0, + 36.8400E0, + 38.0100E0, + 38.6700E0, + 39.8700E0, + 40.0300E0, + 40.5000E0, + 41.3700E0, + 41.6700E0, + 42.3100E0, + 42.7300E0, + 43.4600E0, + 44.1400E0, + 44.5500E0, + 45.2200E0, + 45.9200E0, + 46.3000E0, + 47.0000E0, + 47.6800E0, + 48.0600E0, + 48.7400E0, + 49.4100E0, + 49.7600E0, + 50.4300E0, + 51.1100E0, + 51.5000E0, + 52.1200E0, + 52.7600E0, + 53.1800E0, + 53.7800E0, + 54.4600E0, + 54.8300E0, + 55.4000E0, + 56.4300E0, + 57.0300E0, + 58.0000E0, + 58.6100E0, + 59.5800E0, + 60.1100E0, + 61.1000E0, + 61.6500E0, + 62.5900E0, + 63.1200E0, + 64.0300E0, + 64.6200E0, + 65.4900E0, + 66.0300E0, + 66.8900E0, + 67.4200E0, + 68.2300E0, + 68.7700E0, + 69.5900E0, + 70.1100E0, + 70.8600E0, + 71.4300E0, + 72.1600E0, + 72.7000E0, + 73.4000E0, + 73.9300E0, + 74.6000E0, + 75.1600E0, + 75.8200E0, + 76.3400E0, + 76.9800E0, + 77.4800E0, + 78.0800E0, + 78.6000E0, + 79.1700E0, + 79.6200E0, + 79.8800E0, + 80.1900E0, + 80.6600E0, + 81.2200E0, + 81.6600E0, + 82.1600E0, + 82.5900E0, + 83.1400E0, + 83.5000E0, + 84.0000E0, + 84.4000E0, + 84.8900E0, + 85.2600E0, + 85.7400E0, + 86.0700E0, + 86.5400E0, + 86.8900E0, + 87.3200E0, + 87.6500E0, + 88.1000E0, + 88.4300E0, + 88.8300E0, + 89.1200E0, + 89.5400E0, + 89.8500E0, + 90.2500E0, + 90.5500E0, + 90.9300E0, + 91.2000E0, + 91.5500E0, + 92.2000E0 +}; + + +static double kirby2_F0[kirby2_N] = { + 9.65E0, + 10.74E0, + 11.81E0, + 12.88E0, + 14.06E0, + 15.28E0, + 16.63E0, + 18.19E0, + 19.88E0, + 21.84E0, + 24.00E0, + 26.25E0, + 28.86E0, + 31.85E0, + 35.79E0, + 40.18E0, + 44.74E0, + 49.53E0, + 53.94E0, + 58.29E0, + 62.63E0, + 67.03E0, + 71.25E0, + 75.22E0, + 79.33E0, + 83.56E0, + 87.75E0, + 91.93E0, + 96.10E0, + 100.28E0, + 104.46E0, + 108.66E0, + 112.71E0, + 116.88E0, + 121.33E0, + 125.79E0, + 125.79E0, + 128.74E0, + 130.27E0, + 133.33E0, + 134.79E0, + 137.93E0, + 139.33E0, + 142.46E0, + 143.90E0, + 146.91E0, + 148.51E0, + 151.41E0, + 153.17E0, + 155.97E0, + 157.76E0, + 160.56E0, + 162.30E0, + 165.21E0, + 166.90E0, + 169.92E0, + 170.32E0, + 171.54E0, + 173.79E0, + 174.57E0, + 176.25E0, + 177.34E0, + 179.19E0, + 181.02E0, + 182.08E0, + 183.88E0, + 185.75E0, + 186.80E0, + 188.63E0, + 190.45E0, + 191.48E0, + 193.35E0, + 195.22E0, + 196.23E0, + 198.05E0, + 199.97E0, + 201.06E0, + 202.83E0, + 204.69E0, + 205.86E0, + 207.58E0, + 209.50E0, + 210.65E0, + 212.33E0, + 215.43E0, + 217.16E0, + 220.21E0, + 221.98E0, + 225.06E0, + 226.79E0, + 229.92E0, + 231.69E0, + 234.77E0, + 236.60E0, + 239.63E0, + 241.50E0, + 244.48E0, + 246.40E0, + 249.35E0, + 251.32E0, + 254.22E0, + 256.24E0, + 259.11E0, + 261.18E0, + 264.02E0, + 266.13E0, + 268.94E0, + 271.09E0, + 273.87E0, + 276.08E0, + 278.83E0, + 281.08E0, + 283.81E0, + 286.11E0, + 288.81E0, + 291.08E0, + 293.75E0, + 295.99E0, + 298.64E0, + 300.84E0, + 302.02E0, + 303.48E0, + 305.65E0, + 308.27E0, + 310.41E0, + 313.01E0, + 315.12E0, + 317.71E0, + 319.79E0, + 322.36E0, + 324.42E0, + 326.98E0, + 329.01E0, + 331.56E0, + 333.56E0, + 336.10E0, + 338.08E0, + 340.60E0, + 342.57E0, + 345.08E0, + 347.02E0, + 349.52E0, + 351.44E0, + 353.93E0, + 355.83E0, + 358.32E0, + 360.20E0, + 362.67E0, + 364.53E0, + 367.00E0, + 371.30E0 +}; + +static void +kirby2_checksol(const double x[], const double sumsq, + const double epsrel, const char *sname, + const char *pname) +{ + size_t i; + const double sumsq_exact = 3.9050739624E+00; + const double kirby2_x[kirby2_P] = { + 1.6745063063E+00, -1.3927397867E-01, 2.5961181191E-03, + -1.7241811870E-03, 2.1664802578E-05 }; + + gsl_test_rel(sumsq, sumsq_exact, epsrel, "%s/%s sumsq", + sname, pname); + + for (i = 0; i < kirby2_P; ++i) + { + gsl_test_rel(x[i], kirby2_x[i], epsrel, "%s/%s i=%zu", + sname, pname, i); + } +} + +static int +kirby2_f (const gsl_vector * x, void *params, gsl_vector * f) +{ + double b[kirby2_P]; + size_t i; + + for (i = 0; i < kirby2_P; i++) + { + b[i] = gsl_vector_get(x, i); + } + + for (i = 0; i < kirby2_N; i++) + { + double x = kirby2_F0[i]; + double y = ((b[0] + x* (b[1] + x * b[2])) + / (1 + x*(b[3] + x *b[4]))); + gsl_vector_set (f, i, kirby2_F1[i] - y); + } + + return GSL_SUCCESS; +} + +static int +kirby2_df (const gsl_vector * x, void *params, gsl_matrix * df) +{ + double b[kirby2_P]; + size_t i; + + for (i = 0; i < kirby2_P; i++) + { + b[i] = gsl_vector_get(x, i); + } + + for (i = 0; i < kirby2_N; i++) + { + double x = kirby2_F0[i]; + double u = (b[0] + x*(b[1] + x*b[2])); + double v = (1 + x*(b[3] + x*b[4])); + gsl_matrix_set (df, i, 0, -1/v); + gsl_matrix_set (df, i, 1, -x/v); + gsl_matrix_set (df, i, 2, -x*x/v); + gsl_matrix_set (df, i, 3, x*u/(v*v)); + gsl_matrix_set (df, i, 4, x*x*u/(v*v)); + } + + return GSL_SUCCESS; +} + +static gsl_multifit_function_fdf kirby2_func = +{ + &kirby2_f, + &kirby2_df, + NULL, + kirby2_N, + kirby2_P, + NULL, + 0, + 0 +}; + +static test_fdf_problem kirby2_problem = +{ + "nist-kirby2", + kirby2_x0, + kirby2_sigma, + &kirby2_epsrel, + kirby2_NTRIES, + &kirby2_checksol, + &kirby2_func +}; diff --git a/gsl-2.5/multifit/test_kowalik.c b/gsl-2.5/multifit/test_kowalik.c new file mode 100644 index 00000000..0179851f --- /dev/null +++ b/gsl-2.5/multifit/test_kowalik.c @@ -0,0 +1,130 @@ +#define kowalik_N 11 +#define kowalik_P 4 + +#define kowalik_NTRIES 4 + +static double kowalik_x0[kowalik_P] = { 0.25, 0.39, 0.415, 0.39 }; + +static double kowalik_epsrel = 1.0e-7; + +static double kowalik_Y[kowalik_N] = { +0.1957, 0.1947, 0.1735, 0.1600, 0.0844, 0.0627, +0.0456, 0.0342, 0.0323, 0.0235, 0.0246 +}; + +static double kowalik_U[kowalik_N] = { +4.0000, 2.0000, 1.0000, 0.5000, 0.2500, 0.1670, +0.1250, 0.1000, 0.0833, 0.0714, 0.0625 +}; + +static void +kowalik_checksol(const double x[], const double sumsq, + const double epsrel, const char *sname, + const char *pname) +{ + size_t i; + gsl_vector_const_view v = gsl_vector_const_view_array(x, kowalik_P); + const double norm = gsl_blas_dnrm2(&v.vector); + const double sumsq_exact1 = 3.075056038492370e-04; + const double kowalik_x1[kowalik_P] = { 1.928069345723978e-01, + 1.912823290344599e-01, + 1.230565070690708e-01, + 1.360623308065148e-01 }; + const double sumsq_exact2 = 0.00102734304869549252; + const double kowalik_x2[kowalik_P] = { -99999.9, /* inf */ + -14.0758834005984603, + -99999.9, /* -inf */ + -99999.9 }; /* -inf */ + const double *kowalik_x; + double sumsq_exact; + + if (norm < 10.0) + { + kowalik_x = kowalik_x1; + sumsq_exact = sumsq_exact1; + } + else + { + kowalik_x = kowalik_x2; + sumsq_exact = sumsq_exact2; + } + + gsl_test_rel(sumsq, sumsq_exact, epsrel, "%s/%s sumsq", + sname, pname); + + for (i = 0; i < kowalik_P; ++i) + { + if (kowalik_x[i] < -90000.0) + continue; + + gsl_test_rel(x[i], kowalik_x[i], epsrel, "%s/%s i=%zu", + sname, pname, i); + } +} + +static int +kowalik_f (const gsl_vector * x, void *params, gsl_vector * f) +{ + double x1 = gsl_vector_get(x, 0); + double x2 = gsl_vector_get(x, 1); + double x3 = gsl_vector_get(x, 2); + double x4 = gsl_vector_get(x, 3); + size_t i; + + for (i = 0; i < kowalik_N; ++i) + { + double yi = kowalik_Y[i]; + double ui = kowalik_U[i]; + double fi = yi - (x1*ui*(ui+x2)) / (x4 + ui*(ui + x3)); + gsl_vector_set(f, i, fi); + } + + return GSL_SUCCESS; +} + +static int +kowalik_df (const gsl_vector * x, void *params, gsl_matrix * J) +{ + double x1 = gsl_vector_get(x, 0); + double x2 = gsl_vector_get(x, 1); + double x3 = gsl_vector_get(x, 2); + double x4 = gsl_vector_get(x, 3); + size_t i; + + for (i = 0; i < kowalik_N; ++i) + { + double ui = kowalik_U[i]; + double term1 = ui*(ui + x2); + double term2 = ui*(ui + x3) + x4; + + gsl_matrix_set(J, i, 0, -term1 / term2); + gsl_matrix_set(J, i, 1, -ui*x1/term2); + gsl_matrix_set(J, i, 2, ui*term1*x1 / (term2*term2)); + gsl_matrix_set(J, i, 3, term1*x1 / (term2*term2)); + } + + return GSL_SUCCESS; +} + +static gsl_multifit_function_fdf kowalik_func = +{ + &kowalik_f, + &kowalik_df, + NULL, + kowalik_N, + kowalik_P, + NULL, + 0, + 0 +}; + +static test_fdf_problem kowalik_problem = +{ + "kowalik", + kowalik_x0, + NULL, + &kowalik_epsrel, + kowalik_NTRIES, + &kowalik_checksol, + &kowalik_func +}; diff --git a/gsl-2.5/multifit/test_lin1.c b/gsl-2.5/multifit/test_lin1.c new file mode 100644 index 00000000..2c28ab8d --- /dev/null +++ b/gsl-2.5/multifit/test_lin1.c @@ -0,0 +1,90 @@ +#define lin1_N 11 /* can be anything >= p */ +#define lin1_P 5 + +#define lin1_NTRIES 3 + +static double lin1_x0[lin1_P] = { 1.0, 1.0, 1.0, 1.0, 1.0 }; +static double lin1_epsrel = 1.0e-10; + +static void +lin1_checksol(const double x[], const double sumsq, + const double epsrel, const char *sname, + const char *pname) +{ + size_t i; + const double sumsq_exact = (double) (lin1_N - lin1_P); + + gsl_test_rel(sumsq, sumsq_exact, epsrel, "%s/%s sumsq", + sname, pname); + + for (i = 0; i < lin1_P; ++i) + { + gsl_test_rel(x[i], -1.0, epsrel, "%s/%s i=%zu", + sname, pname, i); + } +} + +static int +lin1_f (const gsl_vector * x, void *params, gsl_vector * f) +{ + size_t i, j; + + for (i = 0; i < lin1_N; ++i) + { + double fi = 0.0; + + for (j = 0; j < lin1_P; ++j) + { + double xj = gsl_vector_get(x, j); + double Aij = (i == j) ? 1.0 : 0.0; + Aij -= 2.0 / lin1_N; + fi += Aij * xj; + } + + fi -= 1.0; + gsl_vector_set(f, i, fi); + } + + return GSL_SUCCESS; +} + +static int +lin1_df (const gsl_vector * x, void *params, gsl_matrix * J) +{ + size_t i, j; + + for (i = 0; i < lin1_N; ++i) + { + for (j = 0; j < lin1_P; ++j) + { + double Jij = (i == j) ? 1.0 : 0.0; + Jij -= 2.0 / lin1_N; + gsl_matrix_set(J, i, j, Jij); + } + } + + return GSL_SUCCESS; +} + +static gsl_multifit_function_fdf lin1_func = +{ + &lin1_f, + &lin1_df, + NULL, + lin1_N, + lin1_P, + NULL, + 0, + 0 +}; + +static test_fdf_problem lin1_problem = +{ + "linear_full", + lin1_x0, + NULL, + &lin1_epsrel, + lin1_NTRIES, + &lin1_checksol, + &lin1_func +}; diff --git a/gsl-2.5/multifit/test_lin2.c b/gsl-2.5/multifit/test_lin2.c new file mode 100644 index 00000000..0fbc690e --- /dev/null +++ b/gsl-2.5/multifit/test_lin2.c @@ -0,0 +1,89 @@ +#define lin2_N 20 /* can be anything >= p */ +#define lin2_P 5 + +#define lin2_NTRIES 3 + +static double lin2_x0[lin2_P] = { 1.0, 1.0, 1.0, 1.0, 1.0 }; +static double lin2_epsrel = 1.0e-11; + +static void +lin2_checksol(const double x[], const double sumsq, + const double epsrel, const char *sname, + const char *pname) +{ + size_t i; + const double n = (double) lin2_N; + const double sumsq_exact = 0.5 * (n*(n - 1.0)) / (2.0*n + 1.0); + const double sum_exact = 3.0 / (2.0*n + 1.0); + double sum = 0.0; + + gsl_test_rel(sumsq, sumsq_exact, epsrel, "%s/%s sumsq", + sname, pname); + + for (i = 0; i < lin2_P; ++i) + sum += (i + 1.0) * x[i]; + + gsl_test_rel(sum, sum_exact, epsrel, "%s/%s coeff sum", + sname, pname); +} + +static int +lin2_f (const gsl_vector * x, void *params, gsl_vector * f) +{ + size_t i, j; + + for (i = 0; i < lin2_N; ++i) + { + double fi = 0.0; + + for (j = 0; j < lin2_P; ++j) + { + double xj = gsl_vector_get(x, j); + fi += (j + 1) * xj; + } + + fi = (i + 1) * fi - 1.0; + gsl_vector_set(f, i, fi); + } + + return GSL_SUCCESS; +} + +static int +lin2_df (const gsl_vector * x, void *params, gsl_matrix * J) +{ + size_t i, j; + + for (i = 0; i < lin2_N; ++i) + { + for (j = 0; j < lin2_P; ++j) + { + gsl_matrix_set(J, i, j, (i + 1.0) * (j + 1.0)); + } + } + + return GSL_SUCCESS; +} + +static gsl_multifit_function_fdf lin2_func = +{ + &lin2_f, + &lin2_df, + NULL, + lin2_N, + lin2_P, + NULL, + 0, + 0 +}; + +static test_fdf_problem lin2_problem = +{ + "linear_rank1", + lin2_x0, + NULL, + &lin2_epsrel, + lin2_NTRIES, + &lin2_checksol, + &lin2_func +}; diff --git a/gsl-2.5/multifit/test_lin3.c b/gsl-2.5/multifit/test_lin3.c new file mode 100644 index 00000000..7d6a8dd1 --- /dev/null +++ b/gsl-2.5/multifit/test_lin3.c @@ -0,0 +1,94 @@ +#define lin3_N 50 /* can be anything >= p */ +#define lin3_P 10 /* >= 3 */ + +#define lin3_NTRIES 3 + +static double lin3_x0[lin3_P] = { 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0 }; +static double lin3_epsrel = 1.0e-10; + +static void +lin3_checksol(const double x[], const double sumsq, + const double epsrel, const char *sname, + const char *pname) +{ + size_t i; + const double n = (double) lin3_N; + const double sumsq_exact = 0.5 * (n*n + 3*n - 6.0) / (2*n - 3.0); + const double sum_exact = 3.0 / (2.0*n - 3.0); + double sum = 0.0; + + gsl_test_rel(sumsq, sumsq_exact, epsrel, "%s/%s sumsq", + sname, pname); + + for (i = 1; i < lin3_P - 1; ++i) + sum += (i + 1.0) * x[i]; + + gsl_test_rel(sum, sum_exact, epsrel, "%s/%s coeff sum", + sname, pname); +} + +static int +lin3_f (const gsl_vector * x, void *params, gsl_vector * f) +{ + size_t i, j; + + gsl_vector_set(f, 0, -1.0); + gsl_vector_set(f, lin3_N - 1, -1.0); + + for (i = 1; i < lin3_N - 1; ++i) + { + double fi = 0.0; + + for (j = 1; j < lin3_P - 1; ++j) + { + double xj = gsl_vector_get(x, j); + fi += (j + 1) * xj; + } + + fi = i * fi - 1.0; + gsl_vector_set(f, i, fi); + } + + return GSL_SUCCESS; +} + +static int +lin3_df (const gsl_vector * x, void *params, gsl_matrix * J) +{ + size_t i, j; + + gsl_matrix_set_zero(J); + + for (i = 1; i < lin3_N - 1; ++i) + { + for (j = 1; j < lin3_P - 1; ++j) + { + gsl_matrix_set(J, i, j, i * (j + 1.0)); + } + } + + return GSL_SUCCESS; +} + +static gsl_multifit_function_fdf lin3_func = +{ + &lin3_f, + &lin3_df, + NULL, + lin3_N, + lin3_P, + NULL, + 0, + 0 +}; + +static test_fdf_problem lin3_problem = +{ + "linear_rank1zeros", + lin3_x0, + NULL, + &lin3_epsrel, + lin3_NTRIES, + &lin3_checksol, + &lin3_func +}; diff --git a/gsl-2.5/multifit/test_linear.c b/gsl-2.5/multifit/test_linear.c new file mode 100644 index 00000000..76fac8b5 --- /dev/null +++ b/gsl-2.5/multifit/test_linear.c @@ -0,0 +1,82 @@ +/* multifit/test_linear.c + * + * Copyright (C) 2007, 2013 Brian Gough, Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +static void +test_random_vector(gsl_vector *v, const gsl_rng *r, + const double lower, const double upper) +{ + size_t i; + size_t N = v->size; + + for (i = 0; i < N; ++i) + { + gsl_vector_set(v, i, + gsl_rng_uniform(r) * (upper - lower) + lower); + } +} + +static void +test_random_matrix(gsl_matrix *m, const gsl_rng *r, + const double lower, const double upper) +{ + size_t i, j; + size_t M = m->size1; + size_t N = m->size2; + + for (i = 0; i < M; ++i) + { + for (j = 0; j < N; ++j) + { + gsl_matrix_set(m, i, j, + gsl_rng_uniform(r) * (upper - lower) + lower); + } + } +} + +static void +test_random_vector_noise(const gsl_rng *r, gsl_vector *y) +{ + size_t i; + + for (i = 0; i < y->size; ++i) + { + double *ptr = gsl_vector_ptr(y, i); + *ptr += 1.0e-3 * gsl_rng_uniform(r); + } +} + +#include "test_longley.c" +#include "test_filip.c" +#include "test_pontius.c" +#include "test_estimator.c" +#include "test_reg.c" +#include "test_shaw.c" + +/* test linear regression */ + +void +test_linear(void) +{ + test_longley(); + test_filip(); + test_pontius(); + test_estimator(); + test_reg(); + test_shaw(); +} diff --git a/gsl-2.5/multifit/test_longley.c b/gsl-2.5/multifit/test_longley.c new file mode 100644 index 00000000..8ac48567 --- /dev/null +++ b/gsl-2.5/multifit/test_longley.c @@ -0,0 +1,176 @@ +size_t longley_n = 16; +size_t longley_p = 7; + +double longley_x [] = { + 1, 83.0, 234289, 2356, 1590, 107608, 1947, + 1, 88.5, 259426, 2325, 1456, 108632, 1948, + 1, 88.2, 258054, 3682, 1616, 109773, 1949, + 1, 89.5, 284599, 3351, 1650, 110929, 1950, + 1, 96.2, 328975, 2099, 3099, 112075, 1951, + 1, 98.1, 346999, 1932, 3594, 113270, 1952, + 1, 99.0, 365385, 1870, 3547, 115094, 1953, + 1, 100.0, 363112, 3578, 3350, 116219, 1954, + 1, 101.2, 397469, 2904, 3048, 117388, 1955, + 1, 104.6, 419180, 2822, 2857, 118734, 1956, + 1, 108.4, 442769, 2936, 2798, 120445, 1957, + 1, 110.8, 444546, 4681, 2637, 121950, 1958, + 1, 112.6, 482704, 3813, 2552, 123366, 1959, + 1, 114.2, 502601, 3931, 2514, 125368, 1960, + 1, 115.7, 518173, 4806, 2572, 127852, 1961, + 1, 116.9, 554894, 4007, 2827, 130081, 1962 } ; + +double longley_y[] = {60323, 61122, 60171, 61187, 63221, 63639, 64989, 63761, + 66019, 67857, 68169, 66513, 68655, 69564, 69331, 70551}; + +static int +test_longley_results(const char *str, + const gsl_vector *c, const gsl_vector *expected_c, + const gsl_vector *cov_diag, const gsl_vector *expected_sd, + const double chisq, const double chisq_res, + const double expected_chisq) +{ + size_t i; + + /* test coefficient vector */ + for (i = 0; i < longley_p; ++i) + { + gsl_test_rel (gsl_vector_get(c,i), + gsl_vector_get(expected_c, i), + 1.0e-10, + "%s c[%zu]", str, i) ; + + if (cov_diag && expected_sd) + { + gsl_test_rel (sqrt(gsl_vector_get(cov_diag, i)), + gsl_vector_get(expected_sd, i), + 1e-10, + "%s cov[%zu,%zu]", str, i, i); + } + } + + gsl_test_rel (chisq, expected_chisq, 1.0e-10, "%s chisq", str); + gsl_test_rel (chisq_res, expected_chisq, 1.0e-10, "%s chisq residuals", str); + + return GSL_SUCCESS; +} + +void +test_longley () +{ + gsl_multifit_linear_workspace * work = + gsl_multifit_linear_alloc (longley_n, longley_p); + + gsl_multifit_robust_workspace * work_rob = + gsl_multifit_robust_alloc (gsl_multifit_robust_ols, longley_n, longley_p); + + gsl_matrix_view X = gsl_matrix_view_array (longley_x, longley_n, longley_p); + gsl_vector_view y = gsl_vector_view_array (longley_y, longley_n); + gsl_vector * c = gsl_vector_alloc (longley_p); + gsl_vector * r = gsl_vector_alloc (longley_n); + gsl_matrix * cov = gsl_matrix_alloc (longley_p, longley_p); + + double chisq, chisq_res; + + double expected_c[7] = { -3482258.63459582, + 15.0618722713733, + -0.358191792925910E-01, + -2.02022980381683, + -1.03322686717359, + -0.511041056535807E-01, + 1829.15146461355 }; + + double expected_sd[7] = { 890420.383607373, + 84.9149257747669, + 0.334910077722432E-01, + 0.488399681651699, + 0.214274163161675, + 0.226073200069370, + 455.478499142212 } ; + + double expected_chisq = 836424.055505915; + + gsl_vector_view diag = gsl_matrix_diagonal (cov); + gsl_vector_view exp_c = gsl_vector_view_array(expected_c, longley_p); + gsl_vector_view exp_sd = gsl_vector_view_array(expected_sd, longley_p); + + /* test unweighted least squares */ + gsl_multifit_linear (&X.matrix, &y.vector, c, cov, &chisq, work); + gsl_multifit_linear_residuals(&X.matrix, &y.vector, c, r); + gsl_blas_ddot(r, r, &chisq_res); + + test_longley_results("longley gsl_multifit_linear", + c, &exp_c.vector, + &diag.vector, &exp_sd.vector, + chisq, chisq_res, expected_chisq); + + /* test robust least squares */ + gsl_multifit_robust (&X.matrix, &y.vector, c, cov, work_rob); + + test_longley_results("longley gsl_multifit_robust", + c, &exp_c.vector, + &diag.vector, &exp_sd.vector, + 1.0, 1.0, 1.0); + + /* test weighted least squares */ + { + size_t i, j; + + gsl_vector * w = gsl_vector_alloc (longley_n); + + double expected_cov[7][7] = { { 8531122.56783558, +-166.727799925578, 0.261873708176346, 3.91188317230983, +1.1285582054705, -0.889550869422687, -4362.58709870581}, + +{-166.727799925578, 0.0775861253030891, -1.98725210399982e-05, +-0.000247667096727256, -6.82911920718824e-05, 0.000136160797527761, +0.0775255245956248}, + +{0.261873708176346, -1.98725210399982e-05, 1.20690316701888e-08, +1.66429546772984e-07, 3.61843600487847e-08, -6.78805814483582e-08, +-0.00013158719037715}, + +{3.91188317230983, -0.000247667096727256, 1.66429546772984e-07, +2.56665052544717e-06, 6.96541409215597e-07, -9.00858307771567e-07, +-0.00197260370663974}, + +{1.1285582054705, -6.82911920718824e-05, 3.61843600487847e-08, +6.96541409215597e-07, 4.94032602583969e-07, -9.8469143760973e-08, +-0.000576921112208274}, + +{-0.889550869422687, 0.000136160797527761, -6.78805814483582e-08, +-9.00858307771567e-07, -9.8469143760973e-08, 5.49938542664952e-07, +0.000430074434198215}, + +{-4362.58709870581, 0.0775255245956248, -0.00013158719037715, +-0.00197260370663974, -0.000576921112208274, 0.000430074434198215, +2.23229587481535 }} ; + + gsl_vector_set_all (w, 1.0); + + gsl_multifit_wlinear (&X.matrix, w, &y.vector, c, cov, &chisq, work); + gsl_multifit_linear_residuals(&X.matrix, &y.vector, c, r); + gsl_blas_ddot(r, r, &chisq_res); + + test_longley_results("longley gsl_multifit_wlinear", + c, &exp_c.vector, + NULL, NULL, + chisq, chisq_res, expected_chisq); + + for (i = 0; i < longley_p; i++) + { + for (j = 0; j < longley_p; j++) + { + gsl_test_rel (gsl_matrix_get(cov,i,j), expected_cov[i][j], 1e-7, + "longley gsl_multifit_wlinear cov(%d,%d)", i, j) ; + } + } + + gsl_vector_free(w); + } + + gsl_vector_free(c); + gsl_vector_free(r); + gsl_matrix_free(cov); + gsl_multifit_linear_free (work); + gsl_multifit_robust_free (work_rob); +} /* test_longley() */ diff --git a/gsl-2.5/multifit/test_meyer.c b/gsl-2.5/multifit/test_meyer.c new file mode 100644 index 00000000..2709c0fd --- /dev/null +++ b/gsl-2.5/multifit/test_meyer.c @@ -0,0 +1,98 @@ +#define meyer_N 16 +#define meyer_P 3 + +#define meyer_NTRIES 1 + +static double meyer_x0[meyer_P] = { 0.02, 4000.0, 250.0 }; +static double meyer_epsrel = 1.0e-8; + +static double meyer_Y[meyer_N] = { +34780., 28610., 23650., 19630., 16370., 13720., 11540., +9744., 8261., 7030., 6005., 5147., 4427., 3820., +3307., 2872. +}; + +static void +meyer_checksol(const double x[], const double sumsq, + const double epsrel, const char *sname, + const char *pname) +{ + size_t i; + const double sumsq_exact = 8.794585517053883e+01; + const double meyer_x[meyer_P] = { 5.609636471049458e-03, + 6.181346346283188e+03, + 3.452236346240292e+02 }; + + gsl_test_rel(sumsq, sumsq_exact, epsrel, "%s/%s sumsq", + sname, pname); + + for (i = 0; i < meyer_P; ++i) + { + gsl_test_rel(x[i], meyer_x[i], epsrel, "%s/%s i=%zu", + sname, pname, i); + } +} + +static int +meyer_f (const gsl_vector * x, void *params, gsl_vector * f) +{ + double x1 = gsl_vector_get(x, 0); + double x2 = gsl_vector_get(x, 1); + double x3 = gsl_vector_get(x, 2); + size_t i; + + for (i = 0; i < meyer_N; ++i) + { + double ti = 45.0 + 5.0*(i + 1.0); + double yi = meyer_Y[i]; + double fi = x1 * exp(x2 / (ti + x3)) - yi; + gsl_vector_set(f, i, fi); + } + + return GSL_SUCCESS; +} + +static int +meyer_df (const gsl_vector * x, void *params, gsl_matrix * J) +{ + double x1 = gsl_vector_get(x, 0); + double x2 = gsl_vector_get(x, 1); + double x3 = gsl_vector_get(x, 2); + size_t i; + + for (i = 0; i < meyer_N; ++i) + { + double ti = 45.0 + 5.0*(i + 1.0); + double term1 = ti + x3; + double term2 = exp(x2 / term1); + + gsl_matrix_set(J, i, 0, term2); + gsl_matrix_set(J, i, 1, x1*term2/term1); + gsl_matrix_set(J, i, 2, -x1*x2*term2/(term1*term1)); + } + + return GSL_SUCCESS; +} + +static gsl_multifit_function_fdf meyer_func = +{ + &meyer_f, + &meyer_df, + NULL, + meyer_N, + meyer_P, + NULL, + 0, + 0 +}; + +static test_fdf_problem meyer_problem = +{ + "meyer", + meyer_x0, + NULL, + &meyer_epsrel, + meyer_NTRIES, + &meyer_checksol, + &meyer_func +}; diff --git a/gsl-2.5/multifit/test_meyerscal.c b/gsl-2.5/multifit/test_meyerscal.c new file mode 100644 index 00000000..d75f3f99 --- /dev/null +++ b/gsl-2.5/multifit/test_meyerscal.c @@ -0,0 +1,98 @@ +#define meyerscal_N 16 +#define meyerscal_P 3 + +#define meyerscal_NTRIES 1 + +static double meyerscal_x0[meyerscal_P] = { 8.85, 4.0, 2.5 }; +static double meyerscal_epsrel = 1.0e-8; + +static double meyerscal_Y[meyerscal_N] = { +34780., 28610., 23650., 19630., 16370., 13720., 11540., +9744., 8261., 7030., 6005., 5147., 4427., 3820., +3307., 2872. +}; + +static void +meyerscal_checksol(const double x[], const double sumsq, + const double epsrel, const char *sname, + const char *pname) +{ + size_t i; + const double sumsq_exact = 8.794585517003888e-05; + const double meyerscal_x[meyerscal_P] = { 2.481778312286695e+00, + 6.181346341853554e+00, + 3.452236344749865e+00 }; + + gsl_test_rel(sumsq, sumsq_exact, epsrel, "%s/%s sumsq", + sname, pname); + + for (i = 0; i < meyerscal_P; ++i) + { + gsl_test_rel(x[i], meyerscal_x[i], epsrel, "%s/%s i=%zu", + sname, pname, i); + } +} + +static int +meyerscal_f (const gsl_vector * x, void *params, gsl_vector * f) +{ + double x1 = gsl_vector_get(x, 0); + double x2 = gsl_vector_get(x, 1); + double x3 = gsl_vector_get(x, 2); + size_t i; + + for (i = 0; i < meyerscal_N; ++i) + { + double ti = 0.45 + 0.05*(i + 1.0); + double yi = meyerscal_Y[i]; + double fi = x1 * exp(10.0*x2 / (ti + x3) - 13.0) - 1.0e-3*yi; + gsl_vector_set(f, i, fi); + } + + return GSL_SUCCESS; +} + +static int +meyerscal_df (const gsl_vector * x, void *params, gsl_matrix * J) +{ + double x1 = gsl_vector_get(x, 0); + double x2 = gsl_vector_get(x, 1); + double x3 = gsl_vector_get(x, 2); + size_t i; + + for (i = 0; i < meyerscal_N; ++i) + { + double ti = 0.45 + 0.05*(i + 1.0); + double term1 = ti + x3; + double term2 = exp(10.0*x2/term1 - 13.0); + + gsl_matrix_set(J, i, 0, term2); + gsl_matrix_set(J, i, 1, 10.0*x1*term2/term1); + gsl_matrix_set(J, i, 2, -10.0*x1*x2*term2/(term1*term1)); + } + + return GSL_SUCCESS; +} + +static gsl_multifit_function_fdf meyerscal_func = +{ + &meyerscal_f, + &meyerscal_df, + NULL, + meyerscal_N, + meyerscal_P, + NULL, + 0, + 0 +}; + +static test_fdf_problem meyerscal_problem = +{ + "meyerscal", + meyerscal_x0, + NULL, + &meyerscal_epsrel, + meyerscal_NTRIES, + &meyerscal_checksol, + &meyerscal_func +}; diff --git a/gsl-2.5/multifit/test_nelson.c b/gsl-2.5/multifit/test_nelson.c new file mode 100644 index 00000000..f7f9bc46 --- /dev/null +++ b/gsl-2.5/multifit/test_nelson.c @@ -0,0 +1,202 @@ +const size_t nelson_N = 128; +const size_t nelson_P = 3; + +/* double nelson_x0[3] = { 2, 0.0001, -0.01}; */ + +double nelson_x0[3] = { 2.5 , 0.000000005, -0.01}; + +double nelson_x[3] = { + 2.5906836021E+00, + 5.6177717026E-09, + -5.7701013174E-02 +}; + +double nelson_sumsq = 3.7976833176E+00; + +double nelson_sigma[3] = { + 1.9149996413E-02, + 6.1124096540E-09, + 3.9572366543E-03 +}; + +double nelson_F[128][3] = { + { 15.00E0, 1E0, 180E0}, + { 17.00E0, 1E0, 180E0}, + { 15.50E0, 1E0, 180E0}, + { 16.50E0, 1E0, 180E0}, + { 15.50E0, 1E0, 225E0}, + { 15.00E0, 1E0, 225E0}, + { 16.00E0, 1E0, 225E0}, + { 14.50E0, 1E0, 225E0}, + { 15.00E0, 1E0, 250E0}, + { 14.50E0, 1E0, 250E0}, + { 12.50E0, 1E0, 250E0}, + { 11.00E0, 1E0, 250E0}, + { 14.00E0, 1E0, 275E0}, + { 13.00E0, 1E0, 275E0}, + { 14.00E0, 1E0, 275E0}, + { 11.50E0, 1E0, 275E0}, + { 14.00E0, 2E0, 180E0}, + { 16.00E0, 2E0, 180E0}, + { 13.00E0, 2E0, 180E0}, + { 13.50E0, 2E0, 180E0}, + { 13.00E0, 2E0, 225E0}, + { 13.50E0, 2E0, 225E0}, + { 12.50E0, 2E0, 225E0}, + { 12.50E0, 2E0, 225E0}, + { 12.50E0, 2E0, 250E0}, + { 12.00E0, 2E0, 250E0}, + { 11.50E0, 2E0, 250E0}, + { 12.00E0, 2E0, 250E0}, + { 13.00E0, 2E0, 275E0}, + { 11.50E0, 2E0, 275E0}, + { 13.00E0, 2E0, 275E0}, + { 12.50E0, 2E0, 275E0}, + { 13.50E0, 4E0, 180E0}, + { 17.50E0, 4E0, 180E0}, + { 17.50E0, 4E0, 180E0}, + { 13.50E0, 4E0, 180E0}, + { 12.50E0, 4E0, 225E0}, + { 12.50E0, 4E0, 225E0}, + { 15.00E0, 4E0, 225E0}, + { 13.00E0, 4E0, 225E0}, + { 12.00E0, 4E0, 250E0}, + { 13.00E0, 4E0, 250E0}, + { 12.00E0, 4E0, 250E0}, + { 13.50E0, 4E0, 250E0}, + { 10.00E0, 4E0, 275E0}, + { 11.50E0, 4E0, 275E0}, + { 11.00E0, 4E0, 275E0}, + { 9.50E0, 4E0, 275E0}, + { 15.00E0, 8E0, 180E0}, + { 15.00E0, 8E0, 180E0}, + { 15.50E0, 8E0, 180E0}, + { 16.00E0, 8E0, 180E0}, + { 13.00E0, 8E0, 225E0}, + { 10.50E0, 8E0, 225E0}, + { 13.50E0, 8E0, 225E0}, + { 14.00E0, 8E0, 225E0}, + { 12.50E0, 8E0, 250E0}, + { 12.00E0, 8E0, 250E0}, + { 11.50E0, 8E0, 250E0}, + { 11.50E0, 8E0, 250E0}, + { 6.50E0, 8E0, 275E0}, + { 5.50E0, 8E0, 275E0}, + { 6.00E0, 8E0, 275E0}, + { 6.00E0, 8E0, 275E0}, + { 18.50E0, 16E0, 180E0}, + { 17.00E0, 16E0, 180E0}, + { 15.30E0, 16E0, 180E0}, + { 16.00E0, 16E0, 180E0}, + { 13.00E0, 16E0, 225E0}, + { 14.00E0, 16E0, 225E0}, + { 12.50E0, 16E0, 225E0}, + { 11.00E0, 16E0, 225E0}, + { 12.00E0, 16E0, 250E0}, + { 12.00E0, 16E0, 250E0}, + { 11.50E0, 16E0, 250E0}, + { 12.00E0, 16E0, 250E0}, + { 6.00E0, 16E0, 275E0}, + { 6.00E0, 16E0, 275E0}, + { 5.00E0, 16E0, 275E0}, + { 5.50E0, 16E0, 275E0}, + { 12.50E0, 32E0, 180E0}, + { 13.00E0, 32E0, 180E0}, + { 16.00E0, 32E0, 180E0}, + { 12.00E0, 32E0, 180E0}, + { 11.00E0, 32E0, 225E0}, + { 9.50E0, 32E0, 225E0}, + { 11.00E0, 32E0, 225E0}, + { 11.00E0, 32E0, 225E0}, + { 11.00E0, 32E0, 250E0}, + { 10.00E0, 32E0, 250E0}, + { 10.50E0, 32E0, 250E0}, + { 10.50E0, 32E0, 250E0}, + { 2.70E0, 32E0, 275E0}, + { 2.70E0, 32E0, 275E0}, + { 2.50E0, 32E0, 275E0}, + { 2.40E0, 32E0, 275E0}, + { 13.00E0, 48E0, 180E0}, + { 13.50E0, 48E0, 180E0}, + { 16.50E0, 48E0, 180E0}, + { 13.60E0, 48E0, 180E0}, + { 11.50E0, 48E0, 225E0}, + { 10.50E0, 48E0, 225E0}, + { 13.50E0, 48E0, 225E0}, + { 12.00E0, 48E0, 225E0}, + { 7.00E0, 48E0, 250E0}, + { 6.90E0, 48E0, 250E0}, + { 8.80E0, 48E0, 250E0}, + { 7.90E0, 48E0, 250E0}, + { 1.20E0, 48E0, 275E0}, + { 1.50E0, 48E0, 275E0}, + { 1.00E0, 48E0, 275E0}, + { 1.50E0, 48E0, 275E0}, + { 13.00E0, 64E0, 180E0}, + { 12.50E0, 64E0, 180E0}, + { 16.50E0, 64E0, 180E0}, + { 16.00E0, 64E0, 180E0}, + { 11.00E0, 64E0, 225E0}, + { 11.50E0, 64E0, 225E0}, + { 10.50E0, 64E0, 225E0}, + { 10.00E0, 64E0, 225E0}, + { 7.27E0, 64E0, 250E0}, + { 7.50E0, 64E0, 250E0}, + { 6.70E0, 64E0, 250E0}, + { 7.60E0, 64E0, 250E0}, + { 1.50E0, 64E0, 275E0}, + { 1.00E0, 64E0, 275E0}, + { 1.20E0, 64E0, 275E0}, + { 1.20E0, 64E0, 275E0} +}; + + +int +nelson_f (const gsl_vector * x, void *params, gsl_vector * f) +{ + double b[3]; + size_t i; + + for (i = 0; i < 3; i++) + { + b[i] = gsl_vector_get(x, i); + } + + + + for (i = 0; i < 128; i++) + { + double x1 = nelson_F[i][1]; + double x2 = nelson_F[i][2]; + + double y = b[0] - b[1] * x1 * (b[2]*x2 < -100) ? 0.0 : exp(-b[2] * x2); + + gsl_vector_set (f, i, log(nelson_F[i][0]) - y); + } + + return GSL_SUCCESS; +} + +int +nelson_df (const gsl_vector * x, void *params, gsl_matrix * df) +{ + double b[3]; + size_t i; + + for (i = 0; i < 3; i++) + { + b[i] = gsl_vector_get(x, i); + } + + for (i = 0; i < 128; i++) + { + double x1 = nelson_F[i][1]; + double x2 = nelson_F[i][2]; + + gsl_matrix_set (df, i, 0, -1.0); + gsl_matrix_set (df, i, 1, x1 * exp(-b[2] * x2)); + gsl_matrix_set (df, i, 2, -b[1] * x1 * x2 * exp(-b[2] * x2)); + } + + return GSL_SUCCESS; +} diff --git a/gsl-2.5/multifit/test_nonlinear.c b/gsl-2.5/multifit/test_nonlinear.c new file mode 100644 index 00000000..d01f8f3d --- /dev/null +++ b/gsl-2.5/multifit/test_nonlinear.c @@ -0,0 +1,580 @@ +/* multifit/test_nonlinear.c + * + * Copyright (C) 2007, 2013, 2014 Brian Gough, Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +typedef struct +{ + const char *name; + double *x0; /* initial parameters (size p) */ + double *sigma; + double *epsrel; /* relative tolerance for solution checking */ + size_t ntries; + void (*checksol) (const double x[], const double sumsq, + const double epsrel, const char *sname, + const char *pname); + gsl_multifit_function_fdf *fdf; +} test_fdf_problem; + +#include "test_bard.c" +#include "test_beale.c" +#include "test_biggs.c" +#include "test_box.c" +#include "test_boxbod.c" +#include "test_brown1.c" +#include "test_brown2.c" +#include "test_brown3.c" +#include "test_eckerle.c" +#include "test_enso.c" +#include "test_exp1.c" +#include "test_gaussian.c" +#include "test_hahn1.c" +#include "test_helical.c" +#include "test_jennrich.c" +#include "test_kirby2.c" +#include "test_kowalik.c" +#include "test_lin1.c" +#include "test_lin2.c" +#include "test_lin3.c" +#include "test_meyer.c" +#include "test_meyerscal.c" +#include "test_osborne.c" +#include "test_penalty1.c" +#include "test_penalty2.c" +#include "test_powell1.c" +#include "test_powell2.c" +#include "test_powell3.c" +#include "test_rat42.c" +#include "test_rat43.c" +#include "test_rosenbrock.c" +#include "test_rosenbrocke.c" +#include "test_roth.c" +#include "test_thurber.c" +#include "test_vardim.c" +#include "test_watson.c" +#include "test_wood.c" + +#include "test_wnlin.c" + +static void test_fdf(const gsl_multifit_fdfsolver_type * T, + const double xtol, const double gtol, + const double ftol, const double epsrel, + const double x0_scale, test_fdf_problem *problem, + const double *wts); +static void test_fdfridge(const gsl_multifit_fdfsolver_type * T, + const double xtol, const double gtol, + const double ftol, const double epsrel, + const double x0_scale, test_fdf_problem *problem, + const double *wts); +static void test_fdf_checksol(const char *sname, const char *pname, + const double epsrel, + gsl_multifit_fdfsolver *s, + test_fdf_problem *problem); +static void test_scale_x0(gsl_vector *x0, const double scale); + +/* + * These test problems are taken from + * + * H. B. Nielsen, UCTP test problems for unconstrained optimization, + * IMM Department of Mathematical Modeling, Tech. Report IMM-REP-2000-17, + * 2000. + */ +static test_fdf_problem *test_fdf_nielsen[] = { + &lin1_problem, /* 1 */ + &lin2_problem, /* 2 */ + &lin3_problem, /* 3 */ + &rosenbrock_problem, /* 4 */ + &helical_problem, /* 5 */ + &powell1_problem, /* 6 */ + &roth_problem, /* 7 */ + &bard_problem, /* 8 */ + &kowalik_problem, /* 9 */ + &meyer_problem, /* 10 */ + &watson_problem, /* 11 */ + &box_problem, /* 12 */ + &jennrich_problem, /* 13 */ + &brown1_problem, /* 14 */ + &brown2_problem, /* 16 */ + &osborne_problem, /* 17 */ + &exp1_problem, /* 18 */ + &meyerscal_problem, /* 20 */ + + &powell2_problem, + + NULL +}; + +/* + * These tests are from + * + * J. J. More, B. S. Garbow and K. E. Hillstrom, Testing + * Unconstrained Optimization Software, ACM Trans. Math. Soft. + * Vol 7, No 1, 1981. + * + * Many of these overlap with the Nielsen tests + */ +static test_fdf_problem *test_fdf_more[] = { + &rosenbrock_problem, /* 1 */ + &roth_problem, /* 2 */ + &powell3_problem, /* 3 */ + &brown3_problem, /* 4 */ + &beale_problem, /* 5 */ + &jennrich_problem, /* 6 */ + &helical_problem, /* 7 */ + &bard_problem, /* 8 */ + &gaussian_problem, /* 9 */ + &meyer_problem, /* 10 */ + &box_problem, /* 12 */ + &powell1_problem, /* 13 */ + &wood_problem, /* 14 */ + &kowalik_problem, /* 15 */ + &brown1_problem, /* 16 */ + &osborne_problem, /* 17 */ + &biggs_problem, /* 18 */ + &watson_problem, /* 20 */ + &rosenbrocke_problem, /* 21 */ + &penalty1_problem, /* 23 */ + &penalty2_problem, /* 24 */ + &vardim_problem, /* 25 */ + &brown2_problem, /* 27 */ + &lin1_problem, /* 32 */ + &lin2_problem, /* 33 */ + &lin3_problem, /* 34 */ + + NULL +}; + +/* NIST test cases */ +static test_fdf_problem *test_fdf_nist[] = { + &kirby2_problem, + &hahn1_problem, + &enso_problem, + &thurber_problem, + &boxbod_problem, + &rat42_problem, + &eckerle_problem, + &rat43_problem, + + NULL +}; + +static void +test_nonlinear(void) +{ + const double xtol = pow(GSL_DBL_EPSILON, 0.9); + const double gtol = pow(GSL_DBL_EPSILON, 0.9); + const double ftol = 0.0; + size_t i, j; + + /* Nielsen tests */ + for (i = 0; test_fdf_nielsen[i] != NULL; ++i) + { + test_fdf_problem *problem = test_fdf_nielsen[i]; + double epsrel = *(problem->epsrel); + double scale = 1.0; + + for (j = 0; j < problem->ntries; ++j) + { + double eps_scale = epsrel * scale; + + test_fdf(gsl_multifit_fdfsolver_lmsder, xtol, gtol, ftol, + eps_scale, scale, problem, NULL); + test_fdfridge(gsl_multifit_fdfsolver_lmsder, xtol, gtol, ftol, + eps_scale, scale, problem, NULL); + + /* test finite difference Jacobian */ + { + gsl_multifit_function_fdf fdf; + fdf.df = problem->fdf->df; + problem->fdf->df = NULL; + test_fdf(gsl_multifit_fdfsolver_lmsder, xtol, gtol, ftol, + 1.0e5 * eps_scale, 1.0, problem, NULL); + test_fdfridge(gsl_multifit_fdfsolver_lmsder, xtol, gtol, ftol, + 1.0e5 * eps_scale, 1.0, problem, NULL); + problem->fdf->df = fdf.df; + } + + scale *= 10.0; + } + + test_fdf(gsl_multifit_fdfsolver_lmniel, xtol, gtol, ftol, + 10.0 * epsrel, 1.0, problem, NULL); + } + + /* More tests */ + for (i = 0; test_fdf_more[i] != NULL; ++i) + { + test_fdf_problem *problem = test_fdf_more[i]; + double epsrel = *(problem->epsrel); + double scale = 1.0; + + for (j = 0; j < problem->ntries; ++j) + { + double eps_scale = epsrel * scale; + + test_fdf(gsl_multifit_fdfsolver_lmsder, xtol, gtol, ftol, + eps_scale, scale, problem, NULL); + test_fdfridge(gsl_multifit_fdfsolver_lmsder, xtol, gtol, ftol, + eps_scale, scale, problem, NULL); + + /* test finite difference Jacobian */ + { + gsl_multifit_function_fdf fdf; + fdf.df = problem->fdf->df; + problem->fdf->df = NULL; + test_fdf(gsl_multifit_fdfsolver_lmsder, xtol, gtol, ftol, + 1.0e5 * eps_scale, 1.0, problem, NULL); + test_fdfridge(gsl_multifit_fdfsolver_lmsder, xtol, gtol, ftol, + 1.0e5 * eps_scale, 1.0, problem, NULL); + problem->fdf->df = fdf.df; + } + + scale *= 10.0; + } + + test_fdf(gsl_multifit_fdfsolver_lmniel, xtol, gtol, ftol, + 10.0 * epsrel, 1.0, problem, NULL); + } + + /* NIST tests */ + for (i = 0; test_fdf_nist[i] != NULL; ++i) + { + test_fdf_problem *problem = test_fdf_nist[i]; + double epsrel = *(problem->epsrel); + double scale = 1.0; + + for (j = 0; j < problem->ntries; ++j) + { + double eps_scale = epsrel * scale; + + test_fdf(gsl_multifit_fdfsolver_lmsder, xtol, gtol, ftol, + eps_scale, scale, problem, NULL); + test_fdf(gsl_multifit_fdfsolver_lmder, xtol, gtol, ftol, + eps_scale, scale, problem, NULL); + + /* test finite difference Jacobian */ + { + gsl_multifit_function_fdf fdf; + fdf.df = problem->fdf->df; + problem->fdf->df = NULL; + test_fdf(gsl_multifit_fdfsolver_lmsder, xtol, gtol, ftol, + eps_scale, 1.0, problem, NULL); + test_fdf(gsl_multifit_fdfsolver_lmder, xtol, gtol, ftol, + eps_scale, scale, problem, NULL); + problem->fdf->df = fdf.df; + } + + scale *= 10.0; + } + + test_fdf(gsl_multifit_fdfsolver_lmniel, xtol, gtol, ftol, + epsrel, 1.0, problem, NULL); + } + + /* test weighted nonlinear least squares */ + + /* internal weighting in _f and _df functions */ + test_fdf(gsl_multifit_fdfsolver_lmsder, xtol, gtol, ftol, + wnlin_epsrel, 1.0, &wnlin_problem1, NULL); + test_fdf(gsl_multifit_fdfsolver_lmniel, xtol, gtol, ftol, + wnlin_epsrel, 1.0, &wnlin_problem1, NULL); + test_fdfridge(gsl_multifit_fdfsolver_lmsder, xtol, gtol, ftol, + wnlin_epsrel, 1.0, &wnlin_problem1, NULL); + test_fdfridge(gsl_multifit_fdfsolver_lmniel, xtol, gtol, ftol, + wnlin_epsrel, 1.0, &wnlin_problem1, NULL); + + /* weighting through fdfsolver_wset */ + test_fdf(gsl_multifit_fdfsolver_lmsder, xtol, gtol, ftol, + wnlin_epsrel, 1.0, &wnlin_problem2, wnlin_W); + test_fdf(gsl_multifit_fdfsolver_lmniel, xtol, gtol, ftol, + wnlin_epsrel, 1.0, &wnlin_problem2, wnlin_W); + test_fdfridge(gsl_multifit_fdfsolver_lmsder, xtol, gtol, ftol, + wnlin_epsrel, 1.0, &wnlin_problem2, wnlin_W); + test_fdfridge(gsl_multifit_fdfsolver_lmniel, xtol, gtol, ftol, + wnlin_epsrel, 1.0, &wnlin_problem2, wnlin_W); +} + +/* +test_fdf() + Test a weighted nonlinear least squares problem + +Inputs: T - solver to use + xtol - tolerance in x + gtol - tolerance in gradient + ftol - tolerance in residual vector + epsrel - relative error tolerance in solution + x0_scale - to test robustness against starting points, + the standard starting point in 'problem' is + multiplied by this scale factor: + x0 <- x0 * x0_scale + If x0 = 0, then all components of x0 are set to + x0_scale + problem - contains the nonlinear problem and solution point + wts - weight vector (NULL for unweighted) +*/ + +static void +test_fdf(const gsl_multifit_fdfsolver_type * T, const double xtol, + const double gtol, const double ftol, + const double epsrel, const double x0_scale, + test_fdf_problem *problem, + const double *wts) +{ + gsl_multifit_function_fdf *fdf = problem->fdf; + const size_t n = fdf->n; + const size_t p = fdf->p; + const size_t max_iter = 1500; + gsl_vector *x0 = gsl_vector_alloc(p); + gsl_vector_view x0v = gsl_vector_view_array(problem->x0, p); + gsl_multifit_fdfsolver *s = gsl_multifit_fdfsolver_alloc (T, n, p); + const char *pname = problem->name; + char sname[2048]; + int status, info; + + sprintf(sname, "%s/scale=%g%s", + gsl_multifit_fdfsolver_name(s), x0_scale, + problem->fdf->df ? "" : "/fdiff"); + + /* scale starting point x0 */ + gsl_vector_memcpy(x0, &x0v.vector); + test_scale_x0(x0, x0_scale); + + if (wts) + { + gsl_vector_const_view wv = gsl_vector_const_view_array(wts, n); + gsl_multifit_fdfsolver_wset(s, fdf, x0, &wv.vector); + } + else + gsl_multifit_fdfsolver_set(s, fdf, x0); + + status = gsl_multifit_fdfsolver_driver(s, max_iter, xtol, gtol, + ftol, &info); + gsl_test(status, "%s/%s did not converge, status=%s", + sname, pname, gsl_strerror(status)); + + /* check solution */ + test_fdf_checksol(sname, pname, epsrel, s, problem); + + if (wts == NULL) + { + /* test again with weighting matrix W = I */ + gsl_vector *wv = gsl_vector_alloc(n); + + sprintf(sname, "%s/scale=%g%s/weights", + gsl_multifit_fdfsolver_name(s), x0_scale, + problem->fdf->df ? "" : "/fdiff"); + + gsl_vector_memcpy(x0, &x0v.vector); + test_scale_x0(x0, x0_scale); + + gsl_vector_set_all(wv, 1.0); + gsl_multifit_fdfsolver_wset(s, fdf, x0, wv); + + status = gsl_multifit_fdfsolver_driver(s, max_iter, xtol, gtol, + ftol, &info); + gsl_test(status, "%s/%s did not converge, status=%s", + sname, pname, gsl_strerror(status)); + + test_fdf_checksol(sname, pname, epsrel, s, problem); + + gsl_vector_free(wv); + } + + gsl_multifit_fdfsolver_free(s); + gsl_vector_free(x0); +} + +/* +test_fdfridge() + Test a nonlinear least squares problem + +Inputs: T - solver to use + xtol - tolerance in x + gtol - tolerance in gradient + ftol - tolerance in residual vector + epsrel - relative error tolerance in solution + x0_scale - to test robustness against starting points, + the standard starting point in 'problem' is + multiplied by this scale factor: + x0 <- x0 * x0_scale + If x0 = 0, then all components of x0 are set to + x0_scale + problem - contains the nonlinear problem and solution point + wts - weight vector +*/ + +static void +test_fdfridge(const gsl_multifit_fdfsolver_type * T, const double xtol, + const double gtol, const double ftol, + const double epsrel, const double x0_scale, + test_fdf_problem *problem, const double *wts) +{ + gsl_multifit_function_fdf *fdf = problem->fdf; + const size_t n = fdf->n; + const size_t p = fdf->p; + const size_t max_iter = 1500; + gsl_vector *x0 = gsl_vector_alloc(p); + gsl_vector_view x0v = gsl_vector_view_array(problem->x0, p); + gsl_multifit_fdfridge *w = gsl_multifit_fdfridge_alloc (T, n, p); + const char *pname = problem->name; + char sname[2048]; + int status, info; + double lambda = 0.0; + + sprintf(sname, "ridge/%s", gsl_multifit_fdfridge_name(w)); + + /* scale starting point x0 */ + gsl_vector_memcpy(x0, &x0v.vector); + test_scale_x0(x0, x0_scale); + + /* test undamped case with lambda = 0 */ + if (wts) + { + gsl_vector_const_view wv = gsl_vector_const_view_array(wts, n); + gsl_multifit_fdfridge_wset(w, fdf, x0, lambda, &wv.vector); + } + else + gsl_multifit_fdfridge_set(w, fdf, x0, lambda); + + status = gsl_multifit_fdfridge_driver(w, max_iter, xtol, gtol, + ftol, &info); + gsl_test(status, "%s/%s did not converge, status=%s", + sname, pname, gsl_strerror(status)); + + /* check solution */ + test_fdf_checksol(sname, pname, epsrel, w->s, problem); + + /* test for self consisent solution with L = \lambda I */ + { + const double eps = 1.0e-10; + gsl_matrix *L = gsl_matrix_calloc(p, p); + gsl_vector_view diag = gsl_matrix_diagonal(L); + gsl_multifit_fdfridge *w2 = gsl_multifit_fdfridge_alloc (T, n, p); + gsl_vector *y0 = gsl_vector_alloc(p); + size_t i; + + /* pick some value for lambda and set L = \lambda I */ + lambda = 5.0; + gsl_vector_set_all(&diag.vector, lambda); + + /* scale initial vector */ + gsl_vector_memcpy(x0, &x0v.vector); + test_scale_x0(x0, x0_scale); + gsl_vector_memcpy(y0, x0); + + if (wts) + { + gsl_vector_const_view wv = gsl_vector_const_view_array(wts, n); + gsl_multifit_fdfridge_wset(w, fdf, x0, lambda, &wv.vector); + gsl_multifit_fdfridge_wset3(w2, fdf, y0, L, &wv.vector); + } + else + { + gsl_multifit_fdfridge_set(w, fdf, x0, lambda); + gsl_multifit_fdfridge_set3(w2, fdf, y0, L); + } + + /* solve with scalar lambda routine */ + status = gsl_multifit_fdfridge_driver(w, max_iter, xtol, gtol, + ftol, &info); + gsl_test(status, "%s/lambda/%s did not converge, status=%s", + sname, pname, gsl_strerror(status)); + + /* solve with general matrix routine */ + status = gsl_multifit_fdfridge_driver(w2, max_iter, xtol, gtol, + ftol, &info); + gsl_test(status, "%s/L/%s did not converge, status=%s", + sname, pname, gsl_strerror(status)); + + /* test x = y */ + for (i = 0; i < p; ++i) + { + double xi = gsl_vector_get(w->s->x, i); + double yi = gsl_vector_get(w2->s->x, i); + + if (fabs(xi) < eps) + { + gsl_test_abs(yi, xi, eps, "%s/%s ridge lambda=%g i=%zu", + sname, pname, lambda, i); + } + else + { + gsl_test_rel(yi, xi, eps, "%s/%s ridge lambda=%g i=%zu", + sname, pname, lambda, i); + } + } + + gsl_matrix_free(L); + gsl_vector_free(y0); + gsl_multifit_fdfridge_free(w2); + } + + gsl_multifit_fdfridge_free(w); + gsl_vector_free(x0); +} + +static void +test_fdf_checksol(const char *sname, const char *pname, + const double epsrel, gsl_multifit_fdfsolver *s, + test_fdf_problem *problem) +{ + gsl_multifit_function_fdf *fdf = problem->fdf; + const double *sigma = problem->sigma; + gsl_vector *f = gsl_multifit_fdfsolver_residual(s); + gsl_vector *x = gsl_multifit_fdfsolver_position(s); + double sumsq; + + /* check solution vector x and sumsq = ||f||^2 */ + gsl_blas_ddot(f, f, &sumsq); + (problem->checksol)(x->data, sumsq, epsrel, sname, pname); + +#if 1 + /* check variances */ + if (sigma) + { + const size_t n = fdf->n; + const size_t p = fdf->p; + size_t i; + gsl_matrix * J = gsl_matrix_alloc(n, p); + gsl_matrix * covar = gsl_matrix_alloc (p, p); + + gsl_multifit_fdfsolver_jac (s, J); + gsl_multifit_covar(J, 0.0, covar); + + for (i = 0; i < p; i++) + { + double ei = sqrt(sumsq/(n-p))*sqrt(gsl_matrix_get(covar,i,i)); + gsl_test_rel (ei, sigma[i], epsrel, + "%s/%s, sigma(%d)", sname, pname, i) ; + } + + gsl_matrix_free (J); + gsl_matrix_free (covar); + } +#endif +} + +static void +test_scale_x0(gsl_vector *x0, const double scale) +{ + double nx = gsl_blas_dnrm2(x0); + + if (nx == 0.0) + gsl_vector_set_all(x0, scale); + else + gsl_vector_scale(x0, scale); +} /* test_scale_x0() */ diff --git a/gsl-2.5/multifit/test_osborne.c b/gsl-2.5/multifit/test_osborne.c new file mode 100644 index 00000000..0a3ca41d --- /dev/null +++ b/gsl-2.5/multifit/test_osborne.c @@ -0,0 +1,105 @@ +#define osborne_N 33 +#define osborne_P 5 + +#define osborne_NTRIES 3 + +static double osborne_x0[osborne_P] = { 0.5, 1.5, -1.0, 0.01, 0.02 }; +static double osborne_epsrel = 1.0e-8; + +static double osborne_Y[osborne_N] = { +0.844, 0.908, 0.932, 0.936, 0.925, 0.908, 0.881, +0.850, 0.818, 0.784, 0.751, 0.718, 0.685, 0.658, +0.628, 0.603, 0.580, 0.558, 0.538, 0.522, 0.506, +0.490, 0.478, 0.467, 0.457, 0.448, 0.438, 0.431, +0.424, 0.420, 0.414, 0.411, 0.406 +}; + +static void +osborne_checksol(const double x[], const double sumsq, + const double epsrel, const char *sname, + const char *pname) +{ + const double sumsq_exact = 5.464894697482687e-05; + const double osborne_x[osborne_P] = { + 3.754100521058740e-01, + -99999.0, + -99999.0, + -99999.0, + -99999.0 }; + + gsl_test_rel(sumsq, sumsq_exact, epsrel, "%s/%s sumsq", + sname, pname); + + /* only the first model parameter is uniquely constrained */ + gsl_test_rel(x[0], osborne_x[0], epsrel, "%s/%s i=0", + sname, pname); +} + +static int +osborne_f (const gsl_vector * x, void *params, gsl_vector * f) +{ + double x1 = gsl_vector_get(x, 0); + double x2 = gsl_vector_get(x, 1); + double x3 = gsl_vector_get(x, 2); + double x4 = gsl_vector_get(x, 3); + double x5 = gsl_vector_get(x, 4); + size_t i; + + for (i = 0; i < osborne_N; ++i) + { + double ti = 10.0*i; + double yi = osborne_Y[i]; + double fi = yi - (x1 + x2*exp(-x4*ti) + x3*exp(-x5*ti)); + gsl_vector_set(f, i, fi); + } + + return GSL_SUCCESS; +} + +static int +osborne_df (const gsl_vector * x, void *params, gsl_matrix * J) +{ + double x2 = gsl_vector_get(x, 1); + double x3 = gsl_vector_get(x, 2); + double x4 = gsl_vector_get(x, 3); + double x5 = gsl_vector_get(x, 4); + size_t i; + + for (i = 0; i < osborne_N; ++i) + { + double ti = 10.0*i; + double term1 = exp(-x4*ti); + double term2 = exp(-x5*ti); + + gsl_matrix_set(J, i, 0, -1.0); + gsl_matrix_set(J, i, 1, -term1); + gsl_matrix_set(J, i, 2, -term2); + gsl_matrix_set(J, i, 3, ti*x2*term1); + gsl_matrix_set(J, i, 4, ti*x3*term2); + } + + return GSL_SUCCESS; +} + +static gsl_multifit_function_fdf osborne_func = +{ + &osborne_f, + &osborne_df, + NULL, + osborne_N, + osborne_P, + NULL, + 0, + 0 +}; + +static test_fdf_problem osborne_problem = +{ + "osborne", + osborne_x0, + NULL, + &osborne_epsrel, + osborne_NTRIES, + &osborne_checksol, + &osborne_func +}; diff --git a/gsl-2.5/multifit/test_penalty1.c b/gsl-2.5/multifit/test_penalty1.c new file mode 100644 index 00000000..52309199 --- /dev/null +++ b/gsl-2.5/multifit/test_penalty1.c @@ -0,0 +1,86 @@ +#define penalty1_N 11 /* p + 1 */ +#define penalty1_P 10 + +#define penalty1_NTRIES 4 + +static double penalty1_x0[penalty1_P] = { 1.0, 2.0, 3.0, 4.0, 5.0, + 6.0, 7.0, 8.0, 9.0, 10.0 }; + +static double penalty1_epsrel = 1.0e-12; + +static void +penalty1_checksol(const double x[], const double sumsq, + const double epsrel, const char *sname, + const char *pname) +{ + const double sumsq_exact = 7.08765146709037993e-05; + + gsl_test_rel(sumsq, sumsq_exact, epsrel, "%s/%s sumsq", + sname, pname); +} + +static int +penalty1_f (const gsl_vector * x, void *params, gsl_vector * f) +{ + const double alpha = 1.0e-5; + const double sqrt_alpha = sqrt(alpha); + size_t i; + double sum = 0.0; + + for (i = 0; i < penalty1_P; ++i) + { + double xi = gsl_vector_get(x, i); + + gsl_vector_set(f, i, sqrt_alpha*(xi - 1.0)); + + sum += xi * xi; + } + + gsl_vector_set(f, penalty1_P, sum - 0.25); + + return GSL_SUCCESS; +} + +static int +penalty1_df (const gsl_vector * x, void *params, gsl_matrix * J) +{ + const double alpha = 1.0e-5; + const double sqrt_alpha = sqrt(alpha); + size_t i; + gsl_matrix_view m = gsl_matrix_submatrix(J, 0, 0, penalty1_P, penalty1_P); + gsl_vector_view diag = gsl_matrix_diagonal(&m.matrix); + + gsl_matrix_set_zero(&m.matrix); + gsl_vector_set_all(&diag.vector, sqrt_alpha); + + for (i = 0; i < penalty1_P; ++i) + { + double xi = gsl_vector_get(x, i); + gsl_matrix_set(J, penalty1_P, i, 2.0 * xi); + } + + return GSL_SUCCESS; +} + +static gsl_multifit_function_fdf penalty1_func = +{ + &penalty1_f, + &penalty1_df, + NULL, + penalty1_N, + penalty1_P, + NULL, + 0, + 0 +}; + +static test_fdf_problem penalty1_problem = +{ + "penalty1", + penalty1_x0, + NULL, + &penalty1_epsrel, + penalty1_NTRIES, + &penalty1_checksol, + &penalty1_func +}; diff --git a/gsl-2.5/multifit/test_penalty2.c b/gsl-2.5/multifit/test_penalty2.c new file mode 100644 index 00000000..93c53349 --- /dev/null +++ b/gsl-2.5/multifit/test_penalty2.c @@ -0,0 +1,128 @@ +#define penalty2_N 8 /* 2*p */ +#define penalty2_P 4 + +#define penalty2_NTRIES 3 + +static double penalty2_x0[penalty2_P] = { 0.5, 0.5, 0.5, 0.5 }; +static double penalty2_epsrel = 1.0e-12; + +static void +penalty2_checksol(const double x[], const double sumsq, + const double epsrel, const char *sname, + const char *pname) +{ + const double sumsq_exact = 9.37629300735544219e-06; + + gsl_test_rel(sumsq, sumsq_exact, epsrel, "%s/%s sumsq", + sname, pname); +} + +static int +penalty2_f (const gsl_vector * x, void *params, gsl_vector * f) +{ + const double alpha = 1.0e-5; + const double sqrt_alpha = sqrt(alpha); + double x1 = gsl_vector_get(x, 0); + size_t i; + double sum = penalty2_P * x1 * x1; + + gsl_vector_set(f, 0, x1 - 0.2); + + /* rows [2:p] */ + for (i = 1; i < penalty2_P; ++i) + { + double xi = gsl_vector_get(x, i); + double xim1 = gsl_vector_get(x, i - 1); + double yi = exp(0.1*(i + 1.0)) + exp(0.1*i); + + gsl_vector_set(f, i, sqrt_alpha*(exp(0.1*xi) + exp(0.1*xim1) - yi)); + + sum += (penalty2_P - i) * xi * xi; + } + + /* rows [p+1:2p-1] */ + for (i = penalty2_P; i < penalty2_N - 1; ++i) + { + double xi = gsl_vector_get(x, i - penalty2_P + 1); + + gsl_vector_set(f, i, sqrt_alpha*(exp(0.1*xi) - exp(-0.1))); + } + + /* row 2p */ + gsl_vector_set(f, penalty2_N - 1, sum - 1.0); + + return GSL_SUCCESS; +} + +static int +penalty2_df (const gsl_vector * x, void *params, gsl_matrix * J) +{ + const double alpha = 1.0e-5; + const double sqrt_alpha = sqrt(alpha); + size_t i, j; + + for (j = 0; j < penalty2_P; ++j) + { + double xj = gsl_vector_get(x, j); + double delta1j = (j == 0) ? 1.0 : 0.0; + + /* first and last rows */ + gsl_matrix_set(J, 0, j, delta1j); + gsl_matrix_set(J, penalty2_N - 1, j, 2.0 * (penalty2_P - j) * xj); + + /* rows [2:p] */ + for (i = 1; i < penalty2_P; ++i) + { + double xi = gsl_vector_get(x, i); + double xim1 = gsl_vector_get(x, i - 1); + double Jij; + + if (i == j) + Jij = exp(0.1 * xi); + else if (i - 1 == j) + Jij = exp(0.1 * xim1); + else + Jij = 0.0; + + Jij *= 0.1 * sqrt_alpha; + + gsl_matrix_set(J, i, j, Jij); + } + + /* rows [p+1:2p-1] */ + for (i = penalty2_P; i < penalty2_N - 1; ++i) + { + double xi = gsl_vector_get(x, i - penalty2_P + 1); + + if (i - penalty2_P + 1 == j) + gsl_matrix_set(J, i, j, 0.1 * sqrt_alpha * exp(0.1*xi)); + else + gsl_matrix_set(J, i, j, 0.0); + } + } + + return GSL_SUCCESS; +} + +static gsl_multifit_function_fdf penalty2_func = +{ + &penalty2_f, + &penalty2_df, + NULL, + penalty2_N, + penalty2_P, + NULL, + 0, + 0 +}; + +static test_fdf_problem penalty2_problem = +{ + "penalty2", + penalty2_x0, + NULL, + &penalty2_epsrel, + penalty2_NTRIES, + &penalty2_checksol, + &penalty2_func +}; diff --git a/gsl-2.5/multifit/test_pontius.c b/gsl-2.5/multifit/test_pontius.c new file mode 100644 index 00000000..d3272250 --- /dev/null +++ b/gsl-2.5/multifit/test_pontius.c @@ -0,0 +1,146 @@ +size_t pontius_n = 40; +size_t pontius_p = 3; + +double pontius_x[] = { 150000, 300000, 450000, 600000, 750000, 900000, +1050000, 1200000, 1350000, 1500000, 1650000, 1800000, 1950000, 2100000, +2250000, 2400000, 2550000, 2700000, 2850000, 3000000, 150000, 300000, +450000, 600000, 750000, 900000, 1050000, 1200000, 1350000, 1500000, +1650000, 1800000, 1950000, 2100000, 2250000, 2400000, 2550000, 2700000, +2850000, 3000000 }; + +double pontius_y[] = { .11019, .21956, .32949, .43899, .54803, .65694, +.76562, .87487, .98292, 1.09146, 1.20001, 1.30822, 1.41599, 1.52399, +1.63194, 1.73947, 1.84646, 1.95392, 2.06128, 2.16844, .11052, .22018, +.32939, .43886, .54798, .65739, .76596, .87474, .98300, 1.09150, +1.20004, 1.30818, 1.41613, 1.52408, 1.63159, 1.73965, 1.84696, +1.95445, 2.06177, 2.16829 }; + +static int +test_pontius_results(const char *str, + const gsl_vector *c, const gsl_vector *expected_c, + const gsl_vector *cov_diag, const gsl_vector *expected_sd, + const double chisq, const double chisq_res, + const double expected_chisq) +{ + size_t i; + + /* test coefficient vector */ + for (i = 0; i < pontius_p; ++i) + { + gsl_test_rel (gsl_vector_get(c,i), + gsl_vector_get(expected_c, i), + 1.0e-10, + "%s c[%zu]", str, i) ; + + if (cov_diag && expected_sd) + { + gsl_test_rel (sqrt(gsl_vector_get(cov_diag, i)), + gsl_vector_get(expected_sd, i), + 1e-10, + "%s cov[%zu,%zu]", str, i, i); + } + } + + gsl_test_rel (chisq, expected_chisq, 1.0e-10, "%s chisq", str); + gsl_test_rel (chisq_res, expected_chisq, 1.0e-10, "%s chisq residuals", str); + + return GSL_SUCCESS; +} + +void +test_pontius () +{ + size_t i, j; + gsl_multifit_linear_workspace * work = + gsl_multifit_linear_alloc (pontius_n, pontius_p); + + gsl_multifit_robust_workspace * work_rob = + gsl_multifit_robust_alloc (gsl_multifit_robust_ols, pontius_n, pontius_p); + + gsl_matrix * X = gsl_matrix_alloc (pontius_n, pontius_p); + gsl_vector_view y = gsl_vector_view_array (pontius_y, pontius_n); + gsl_vector * c = gsl_vector_alloc (pontius_p); + gsl_vector * r = gsl_vector_alloc (pontius_n); + gsl_matrix * cov = gsl_matrix_alloc (pontius_p, pontius_p); + + double chisq, chisq_res; + + double expected_c[3] = { 0.673565789473684E-03, + 0.732059160401003E-06, + -0.316081871345029E-14}; + + double expected_sd[3] = { 0.107938612033077E-03, + 0.157817399981659E-09, + 0.486652849992036E-16 }; + + double expected_chisq = 0.155761768796992E-05; + + gsl_vector_view diag = gsl_matrix_diagonal (cov); + gsl_vector_view exp_c = gsl_vector_view_array(expected_c, pontius_p); + gsl_vector_view exp_sd = gsl_vector_view_array(expected_sd, pontius_p); + + for (i = 0 ; i < pontius_n; i++) + { + for (j = 0; j < pontius_p; j++) + { + gsl_matrix_set(X, i, j, pow(pontius_x[i], j)); + } + } + + /* test unweighted least squares */ + gsl_multifit_linear (X, &y.vector, c, cov, &chisq, work); + gsl_multifit_linear_residuals(X, &y.vector, c, r); + gsl_blas_ddot(r, r, &chisq_res); + + test_pontius_results("pontius gsl_multifit_linear", + c, &exp_c.vector, + &diag.vector, &exp_sd.vector, + chisq, chisq_res, expected_chisq); + + /* test robust least squares */ + gsl_multifit_robust (X, &y.vector, c, cov, work_rob); + + test_pontius_results("pontius gsl_multifit_robust", + c, &exp_c.vector, + &diag.vector, &exp_sd.vector, + 1.0, 1.0, 1.0); + + /* test weighted least squares */ + { + gsl_vector * w = gsl_vector_alloc (pontius_n); + + double expected_cov[3][3] ={ + {2.76754385964916e-01 , -3.59649122807024e-07, 9.74658869395731e-14}, + {-3.59649122807024e-07, 5.91630591630603e-13, -1.77210703526497e-19}, + {9.74658869395731e-14, -1.77210703526497e-19, 5.62573661988878e-26} }; + + gsl_vector_set_all (w, 1.0); + + gsl_multifit_wlinear (X, w, &y.vector, c, cov, &chisq, work); + gsl_multifit_linear_residuals(X, &y.vector, c, r); + gsl_blas_ddot(r, r, &chisq_res); + + test_pontius_results("pontius gsl_multifit_wlinear", + c, &exp_c.vector, + NULL, NULL, + chisq, chisq_res, expected_chisq); + + for (i = 0; i < pontius_p; i++) + { + for (j = 0; j < pontius_p; j++) + { + gsl_test_rel (gsl_matrix_get(cov,i,j), expected_cov[i][j], 1e-10, + "pontius gsl_multifit_wlinear cov(%d,%d)", i, j) ; + } + } + + gsl_vector_free(w); + } + + gsl_vector_free(c); + gsl_vector_free(r); + gsl_matrix_free(cov); + gsl_matrix_free(X); + gsl_multifit_linear_free (work); + gsl_multifit_robust_free (work_rob); +} diff --git a/gsl-2.5/multifit/test_powell1.c b/gsl-2.5/multifit/test_powell1.c new file mode 100644 index 00000000..572de3be --- /dev/null +++ b/gsl-2.5/multifit/test_powell1.c @@ -0,0 +1,97 @@ +#define powell1_N 4 +#define powell1_P 4 + +#define powell1_NTRIES 4 + +static double powell1_x0[powell1_P] = { 3.0, -1.0, 0.0, 1.0 }; +static double powell1_epsrel = 1.0e-5; + +static void +powell1_checksol(const double x[], const double sumsq, + const double epsrel, const char *sname, + const char *pname) +{ + size_t i; + const double sumsq_exact = 0.0; + + gsl_test_rel(sumsq, sumsq_exact, epsrel, "%s/%s sumsq", + sname, pname); + + for (i = 0; i < powell1_P; ++i) + { + gsl_test_rel(x[i], 0.0, epsrel, "%s/%s i=%zu", + sname, pname, i); + } +} + +static int +powell1_f (const gsl_vector * x, void *params, gsl_vector * f) +{ + double x1 = gsl_vector_get (x, 0); + double x2 = gsl_vector_get (x, 1); + double x3 = gsl_vector_get (x, 2); + double x4 = gsl_vector_get (x, 3); + + gsl_vector_set(f, 0, x1 + 10.0*x2); + gsl_vector_set(f, 1, sqrt(5.0) * (x3 - x4)); + gsl_vector_set(f, 2, pow(x2 - 2.0*x3, 2.0)); + gsl_vector_set(f, 3, sqrt(10.0) * pow((x1 - x4), 2.0)); + + return GSL_SUCCESS; +} + +static int +powell1_df (const gsl_vector * x, void *params, gsl_matrix * J) +{ + double x1 = gsl_vector_get (x, 0); + double x2 = gsl_vector_get (x, 1); + double x3 = gsl_vector_get (x, 2); + double x4 = gsl_vector_get (x, 3); + double term1 = x2 - 2.0*x3; + double term2 = x1 - x4; + + gsl_matrix_set(J, 0, 0, 1.0); + gsl_matrix_set(J, 0, 1, 10.0); + gsl_matrix_set(J, 0, 2, 0.0); + gsl_matrix_set(J, 0, 3, 0.0); + + gsl_matrix_set(J, 1, 0, 0.0); + gsl_matrix_set(J, 1, 1, 0.0); + gsl_matrix_set(J, 1, 2, sqrt(5.0)); + gsl_matrix_set(J, 1, 3, -sqrt(5.0)); + + gsl_matrix_set(J, 2, 0, 0.0); + gsl_matrix_set(J, 2, 1, 2.0*term1); + gsl_matrix_set(J, 2, 2, -4.0*term1); + gsl_matrix_set(J, 2, 3, 0.0); + + gsl_matrix_set(J, 3, 0, 2.0*sqrt(10.0)*term2); + gsl_matrix_set(J, 3, 1, 0.0); + gsl_matrix_set(J, 3, 2, 0.0); + gsl_matrix_set(J, 3, 3, -2.0*sqrt(10.0)*term2); + + return GSL_SUCCESS; +} + +static gsl_multifit_function_fdf powell1_func = +{ + &powell1_f, + &powell1_df, + NULL, + powell1_N, + powell1_P, + NULL, + 0, + 0 +}; + +static test_fdf_problem powell1_problem = +{ + "powell_singular", + powell1_x0, + NULL, + &powell1_epsrel, + powell1_NTRIES, + &powell1_checksol, + &powell1_func +}; diff --git a/gsl-2.5/multifit/test_powell2.c b/gsl-2.5/multifit/test_powell2.c new file mode 100644 index 00000000..05a4417c --- /dev/null +++ b/gsl-2.5/multifit/test_powell2.c @@ -0,0 +1,75 @@ +#define powell2_N 2 +#define powell2_P 2 + +#define powell2_NTRIES 3 + +static double powell2_x0[powell2_P] = { 3.0, 1.0 }; +static double powell2_epsrel = 1.0e-7; + +static void +powell2_checksol(const double x[], const double sumsq, + const double epsrel, const char *sname, + const char *pname) +{ + size_t i; + const double sumsq_exact = 0.0; + + gsl_test_rel(sumsq, sumsq_exact, epsrel, "%s/%s sumsq", + sname, pname); + + for (i = 0; i < powell2_P; ++i) + { + gsl_test_rel(x[i], 0.0, epsrel, "%s/%s i=%zu", + sname, pname, i); + } +} + +static int +powell2_f (const gsl_vector * x, void *params, gsl_vector * f) +{ + double x0 = gsl_vector_get (x, 0); + double x1 = gsl_vector_get (x, 1); + + gsl_vector_set(f, 0, x0); + gsl_vector_set(f, 1, 10.0*x0/(x0 + 0.1) + 2.0*x1*x1); + + return GSL_SUCCESS; +} + +static int +powell2_df (const gsl_vector * x, void *params, gsl_matrix * df) +{ + double x0 = gsl_vector_get (x, 0); + double x1 = gsl_vector_get (x, 1); + double term = x0 + 0.1; + + gsl_matrix_set(df, 0, 0, 1.0); + gsl_matrix_set(df, 0, 1, 0.0); + gsl_matrix_set(df, 1, 0, 1.0 / (term * term)); + gsl_matrix_set(df, 1, 1, 4.0 * x1); + + return GSL_SUCCESS; +} + +static gsl_multifit_function_fdf powell2_func = +{ + &powell2_f, + &powell2_df, + NULL, + powell2_N, + powell2_P, + NULL, + 0, + 0 +}; + +static test_fdf_problem powell2_problem = +{ + "powell2", + powell2_x0, + NULL, + &powell2_epsrel, + powell2_NTRIES, + &powell2_checksol, + &powell2_func +}; diff --git a/gsl-2.5/multifit/test_powell3.c b/gsl-2.5/multifit/test_powell3.c new file mode 100644 index 00000000..7c833844 --- /dev/null +++ b/gsl-2.5/multifit/test_powell3.c @@ -0,0 +1,77 @@ +#define powell3_N 2 +#define powell3_P 2 + +#define powell3_NTRIES 1 + +static double powell3_x0[powell3_P] = { 0.0, 1.0 }; +static double powell3_epsrel = 1.0e-12; + +static void +powell3_checksol(const double x[], const double sumsq, + const double epsrel, const char *sname, + const char *pname) +{ + size_t i; + const double sumsq_exact = 0.0; + const double powell3_x[powell3_P] = { 1.09815932969975976e-05, + 9.10614673986700218 }; + + gsl_test_rel(sumsq, sumsq_exact, epsrel, "%s/%s sumsq", + sname, pname); + + for (i = 0; i < powell3_P; ++i) + { + gsl_test_rel(x[i], powell3_x[i], epsrel, "%s/%s i=%zu", + sname, pname, i); + } +} + +static int +powell3_f (const gsl_vector * x, void *params, gsl_vector * f) +{ + double x1 = gsl_vector_get(x, 0); + double x2 = gsl_vector_get(x, 1); + + gsl_vector_set(f, 0, 1.0e4*x1*x2 - 1.0); + gsl_vector_set(f, 1, exp(-x1) + exp(-x2) - 1.0001); + + return GSL_SUCCESS; +} + +static int +powell3_df (const gsl_vector * x, void *params, gsl_matrix * J) +{ + double x1 = gsl_vector_get(x, 0); + double x2 = gsl_vector_get(x, 1); + + gsl_matrix_set(J, 0, 0, 1.0e4*x2); + gsl_matrix_set(J, 0, 1, 1.0e4*x1); + + gsl_matrix_set(J, 1, 0, -exp(-x1)); + gsl_matrix_set(J, 1, 1, -exp(-x2)); + + return GSL_SUCCESS; +} + +static gsl_multifit_function_fdf powell3_func = +{ + &powell3_f, + &powell3_df, + NULL, + powell3_N, + powell3_P, + NULL, + 0, + 0 +}; + +static test_fdf_problem powell3_problem = +{ + "powell_badly_scaled", + powell3_x0, + NULL, + &powell3_epsrel, + powell3_NTRIES, + &powell3_checksol, + &powell3_func +}; diff --git a/gsl-2.5/multifit/test_rat42.c b/gsl-2.5/multifit/test_rat42.c new file mode 100644 index 00000000..32a652bd --- /dev/null +++ b/gsl-2.5/multifit/test_rat42.c @@ -0,0 +1,109 @@ +#define rat42_N 9 +#define rat42_P 3 + +#define rat42_NTRIES 1 + +static double rat42_x0[rat42_P] = { 100.0, 1.0, 0.1 }; +static double rat42_epsrel = 1.0e-7; + +static double rat42_sigma[rat42_P] = { + 1.7340283401E+00, 8.8295217536E-02, 3.4465663377E-03 +}; + +static double rat42_X[rat42_N] = { 9.0, 14.0, 21.0, 28.0, 42.0, + 57.0, 63.0, 70.0, 79.0 }; + +static double rat42_F[rat42_N] = { 8.930, 10.800, 18.590, 22.330, + 39.350, 56.110, 61.730, 64.620, + 67.080 }; + +static void +rat42_checksol(const double x[], const double sumsq, + const double epsrel, const char *sname, + const char *pname) +{ + size_t i; + const double sumsq_exact = 8.0565229338E+00; + const double rat42_x[rat42_P] = { 7.2462237576E+01, + 2.6180768402E+00, + 6.7359200066E-02 }; + + gsl_test_rel(sumsq, sumsq_exact, epsrel, "%s/%s sumsq", + sname, pname); + + for (i = 0; i < rat42_P; ++i) + { + gsl_test_rel(x[i], rat42_x[i], epsrel, "%s/%s i=%zu", + sname, pname, i); + } +} + + +static int +rat42_f (const gsl_vector * x, void *params, gsl_vector * f) +{ + double b[rat42_P]; + size_t i; + + for (i = 0; i < rat42_P; i++) + { + b[i] = gsl_vector_get(x, i); + } + + for (i = 0; i < rat42_N; i++) + { + double xi = rat42_X[i]; + double yi = b[0] / (1.0 + exp(b[1] - b[2]*xi)); + gsl_vector_set (f, i, yi - rat42_F[i]); + } + + return GSL_SUCCESS; +} + +static int +rat42_df (const gsl_vector * x, void *params, gsl_matrix * df) +{ + double b[rat42_P]; + size_t i; + + for (i = 0; i < rat42_P; i++) + { + b[i] = gsl_vector_get(x, i); + } + + for (i = 0; i < rat42_N; i++) + { + double xi = rat42_X[i]; + double term1 = exp(b[1] - b[2]*xi); + double term2 = 1.0 + term1; + + gsl_matrix_set (df, i, 0, 1.0 / term2); + gsl_matrix_set (df, i, 1, -b[0] * term1 / (term2 * term2)); + gsl_matrix_set (df, i, 2, b[0] * term1 * xi / (term2 * term2)); + } + + return GSL_SUCCESS; +} + +static gsl_multifit_function_fdf rat42_func = +{ + &rat42_f, + &rat42_df, + NULL, + rat42_N, + rat42_P, + NULL, + 0, + 0 +}; + +static test_fdf_problem rat42_problem = +{ + "nist-rat42", + rat42_x0, + rat42_sigma, + &rat42_epsrel, + rat42_NTRIES, + &rat42_checksol, + &rat42_func +}; diff --git a/gsl-2.5/multifit/test_rat43.c b/gsl-2.5/multifit/test_rat43.c new file mode 100644 index 00000000..25669262 --- /dev/null +++ b/gsl-2.5/multifit/test_rat43.c @@ -0,0 +1,112 @@ +#define rat43_N 15 +#define rat43_P 4 + +#define rat43_NTRIES 1 + +static double rat43_x0[rat43_P] = { 100.0, 10.0, 1.0, 1.0 }; +static double rat43_epsrel = 1.0e-6; + +static double rat43_sigma[rat43_P] = { + 1.6302297817E+01, 2.0828735829E+00, + 1.9566123451E-01, 6.8761936385E-01 +}; + +static double rat43_F[rat43_N] = { 16.08, 33.83, 65.80, 97.20, 191.55, + 326.20, 386.87, 520.53, 590.03, + 651.92, 724.93, 699.56, 689.96, + 637.56, 717.41 }; + +static void +rat43_checksol(const double x[], const double sumsq, + const double epsrel, const char *sname, + const char *pname) +{ + size_t i; + const double sumsq_exact = 8.7864049080E+03; + const double rat43_x[rat43_P] = { 6.9964151270E+02, + 5.2771253025E+00, + 7.5962938329E-01, + 1.2792483859E+00 }; + + gsl_test_rel(sumsq, sumsq_exact, epsrel, "%s/%s sumsq", + sname, pname); + + for (i = 0; i < rat43_P; ++i) + { + gsl_test_rel(x[i], rat43_x[i], epsrel, "%s/%s i=%zu", + sname, pname, i); + } +} + + +static int +rat43_f (const gsl_vector * x, void *params, gsl_vector * f) +{ + double b[rat43_P]; + size_t i; + + for (i = 0; i < rat43_P; i++) + { + b[i] = gsl_vector_get(x, i); + } + + for (i = 0; i < rat43_N; i++) + { + double xi = i + 1.0; + double e = exp(b[1] - b[2]*xi); + double yi = b[0] / pow(1.0 + e, 1.0 / b[3]); + gsl_vector_set (f, i, yi - rat43_F[i]); + } + + return GSL_SUCCESS; +} + +static int +rat43_df (const gsl_vector * x, void *params, gsl_matrix * df) +{ + double b[rat43_P]; + size_t i; + + for (i = 0; i < rat43_P; i++) + { + b[i] = gsl_vector_get(x, i); + } + + for (i = 0; i < rat43_N; i++) + { + double xi = i + 1.0; + double e = exp(b[1] - b[2]*xi); + double term1 = 1.0 + e; + double term2 = pow(term1, -1.0 / b[3]); + + gsl_matrix_set (df, i, 0, term2); + gsl_matrix_set (df, i, 1, -b[0] / b[3] * e * term2 / term1); + gsl_matrix_set (df, i, 2, b[0] / b[3] * xi * e * term2 / term1); + gsl_matrix_set (df, i, 3, b[0] / b[3] / b[3] * log(term1) * term2); + } + + return GSL_SUCCESS; +} + +static gsl_multifit_function_fdf rat43_func = +{ + &rat43_f, + &rat43_df, + NULL, + rat43_N, + rat43_P, + NULL, + 0, + 0 +}; + +static test_fdf_problem rat43_problem = +{ + "nist-rat43", + rat43_x0, + rat43_sigma, + &rat43_epsrel, + rat43_NTRIES, + &rat43_checksol, + &rat43_func +}; diff --git a/gsl-2.5/multifit/test_reg.c b/gsl-2.5/multifit/test_reg.c new file mode 100644 index 00000000..9bd95f40 --- /dev/null +++ b/gsl-2.5/multifit/test_reg.c @@ -0,0 +1,548 @@ +/* generate random square orthogonal matrix via QR decomposition */ +static void +test_random_matrix_orth(gsl_matrix *m, const gsl_rng *r) +{ + const size_t M = m->size1; + gsl_matrix *A = gsl_matrix_alloc(M, M); + gsl_vector *tau = gsl_vector_alloc(M); + gsl_matrix *R = gsl_matrix_alloc(M, M); + + test_random_matrix(A, r, -1.0, 1.0); + gsl_linalg_QR_decomp(A, tau); + gsl_linalg_QR_unpack(A, tau, m, R); + + gsl_matrix_free(A); + gsl_matrix_free(R); + gsl_vector_free(tau); +} + +/* construct ill-conditioned matrix via SVD */ +static void +test_random_matrix_ill(gsl_matrix *m, const gsl_rng *r) +{ + const size_t M = m->size1; + const size_t N = m->size2; + gsl_matrix *U = gsl_matrix_alloc(M, M); + gsl_matrix *V = gsl_matrix_alloc(N, N); + gsl_vector *S = gsl_vector_alloc(N); + gsl_matrix_view Uv = gsl_matrix_submatrix(U, 0, 0, M, N); + const double smin = 16.0 * GSL_DBL_EPSILON; + const double smax = 10.0; + const double ratio = pow(smin / smax, 1.0 / (N - 1.0)); + double s; + size_t j; + + test_random_matrix_orth(U, r); + test_random_matrix_orth(V, r); + + /* compute U * S */ + + s = smax; + for (j = 0; j < N; ++j) + { + gsl_vector_view uj = gsl_matrix_column(U, j); + + gsl_vector_scale(&uj.vector, s); + s *= ratio; + } + + /* compute m = (U * S) * V' */ + gsl_blas_dgemm(CblasNoTrans, CblasTrans, 1.0, &Uv.matrix, V, 0.0, m); + + gsl_matrix_free(U); + gsl_matrix_free(V); + gsl_vector_free(S); +} + +/* solve system with lambda = 0 and test against OLS solution */ +static void +test_reg1(const gsl_matrix * X, const gsl_vector * y, + const gsl_vector * wts, const double tol, + gsl_multifit_linear_workspace * w, const char * desc) +{ + const size_t n = X->size1; + const size_t p = X->size2; + double rnorm, snorm, chisq; + gsl_vector *c0 = gsl_vector_alloc(p); + gsl_vector *c1 = gsl_vector_alloc(p); + gsl_matrix *cov = gsl_matrix_alloc(p, p); + size_t j; + + if (wts) + { + gsl_matrix *Xs = gsl_matrix_alloc(n, p); + gsl_vector *ys = gsl_vector_alloc(n); + + gsl_multifit_wlinear(X, wts, y, c0, cov, &chisq, w); + + gsl_multifit_linear_wstdform1(NULL, X, wts, y, Xs, ys, w); + gsl_multifit_linear_svd(Xs, w); + gsl_multifit_linear_solve(0.0, Xs, ys, c1, &rnorm, &snorm, w); + + gsl_matrix_free(Xs); + gsl_vector_free(ys); + } + else + { + gsl_multifit_linear(X, y, c0, cov, &chisq, w); + + gsl_multifit_linear_svd(X, w); + gsl_multifit_linear_solve(0.0, X, y, c1, &rnorm, &snorm, w); + } + + gsl_test_rel(rnorm*rnorm, chisq, tol, + "test_reg1: %s, lambda = 0, n=%zu p=%zu chisq", desc, n, p); + + /* test c0 = c1 */ + for (j = 0; j < p; ++j) + { + double c0j = gsl_vector_get(c0, j); + double c1j = gsl_vector_get(c1, j); + + gsl_test_rel(c1j, c0j, tol, "test_reg1: %s, lambda = 0, n=%zu p=%zu c0/c1", + desc, n, p); + } + + gsl_vector_free(c0); + gsl_vector_free(c1); + gsl_matrix_free(cov); +} + +/* solve standard form system with given lambda and test against + * normal equations solution, L = I */ +static void +test_reg2(const double lambda, const gsl_matrix * X, const gsl_vector * y, + const gsl_vector * wts, const double tol, + gsl_multifit_linear_workspace * w, const char * desc) +{ + const size_t n = X->size1; + const size_t p = X->size2; + double rnorm0, snorm0; + double rnorm1, snorm1; + gsl_vector *c0 = gsl_vector_alloc(p); + gsl_vector *c1 = gsl_vector_alloc(p); + gsl_matrix *XTX = gsl_matrix_alloc(p, p); /* X^T W X + lambda^2 I */ + gsl_vector *XTy = gsl_vector_alloc(p); /* X^T W y */ + gsl_matrix *Xs = gsl_matrix_alloc(n, p); + gsl_vector *ys = gsl_vector_alloc(n); + gsl_vector_view xtx_diag = gsl_matrix_diagonal(XTX); + gsl_permutation *perm = gsl_permutation_alloc(p); + gsl_vector *r = gsl_vector_alloc(n); + int signum; + size_t j; + + /* compute Xs = sqrt(W) X and ys = sqrt(W) y */ + gsl_multifit_linear_wstdform1(NULL, X, wts, y, Xs, ys, w); + + /* construct XTy = X^T W y */ + gsl_blas_dgemv(CblasTrans, 1.0, Xs, ys, 0.0, XTy); + + /* construct XTX = X^T W X + lambda^2 I */ + gsl_blas_dgemm(CblasTrans, CblasNoTrans, 1.0, Xs, Xs, 0.0, XTX); + gsl_vector_add_constant(&xtx_diag.vector, lambda*lambda); + + /* solve XTX c = XTy with LU decomp */ + gsl_linalg_LU_decomp(XTX, perm, &signum); + gsl_linalg_LU_solve(XTX, perm, XTy, c0); + + /* compute SVD of X */ + gsl_multifit_linear_svd(Xs, w); + + /* solve regularized standard form system with lambda */ + gsl_multifit_linear_solve(lambda, Xs, ys, c1, &rnorm0, &snorm0, w); + + /* test snorm = ||c1|| */ + snorm1 = gsl_blas_dnrm2(c1); + gsl_test_rel(snorm0, snorm1, tol, "test_reg2: %s, snorm lambda=%g n=%zu p=%zu", + desc, lambda, n, p); + + /* test rnorm = ||y - X c1|| */ + gsl_vector_memcpy(r, ys); + gsl_blas_dgemv(CblasNoTrans, -1.0, Xs, c1, 1.0, r); + rnorm1 = gsl_blas_dnrm2(r); + gsl_test_rel(rnorm0, rnorm1, tol, "test_reg2: %s, rnorm lambda=%g n=%zu p=%zu", + desc, lambda, n, p); + + /* test c0 = c1 */ + for (j = 0; j < p; ++j) + { + double c0j = gsl_vector_get(c0, j); + double c1j = gsl_vector_get(c1, j); + + gsl_test_rel(c1j, c0j, tol, "test_reg2: %s, c0/c1 lambda=%g n=%zu p=%zu", + desc, lambda, n, p); + } + + gsl_matrix_free(XTX); + gsl_vector_free(XTy); + gsl_matrix_free(Xs); + gsl_vector_free(ys); + gsl_vector_free(c0); + gsl_vector_free(c1); + gsl_vector_free(r); + gsl_permutation_free(perm); +} + +/* solve system with given lambda and L = diag(L) and test against + * normal equations solution */ +static void +test_reg3(const double lambda, const gsl_vector * L, const gsl_matrix * X, + const gsl_vector * y, const gsl_vector * wts, const double tol, + gsl_multifit_linear_workspace * w, const char * desc) +{ + const size_t n = X->size1; + const size_t p = X->size2; + double rnorm0, snorm0; + double rnorm1, snorm1; + gsl_vector *c0 = gsl_vector_alloc(p); + gsl_vector *c1 = gsl_vector_alloc(p); + gsl_matrix *XTX = gsl_matrix_alloc(p, p); /* X^T W X + lambda^2 L^T L */ + gsl_vector *XTy = gsl_vector_alloc(p); /* X^T W y */ + gsl_matrix *Xs = gsl_matrix_alloc(n, p); /* standard form X~ */ + gsl_vector *ys = gsl_vector_alloc(n); /* standard form y~ */ + gsl_vector *Lc = gsl_vector_alloc(p); + gsl_vector *r = gsl_vector_alloc(n); + gsl_permutation *perm = gsl_permutation_alloc(p); + int signum; + size_t j; + + /* compute Xs = sqrt(W) X, ys = sqrt(W) y */ + gsl_multifit_linear_wstdform1(NULL, X, wts, y, Xs, ys, w); + + /* construct XTy = X^T W y */ + gsl_blas_dgemv(CblasTrans, 1.0, Xs, ys, 0.0, XTy); + + /* construct XTX = X^T W X + lambda^2 L^T L */ + gsl_blas_dgemm(CblasTrans, CblasNoTrans, 1.0, Xs, Xs, 0.0, XTX); + + for (j = 0; j < p; ++j) + { + double lj = gsl_vector_get(L, j); + *gsl_matrix_ptr(XTX, j, j) += pow(lambda * lj, 2.0); + } + + /* solve XTX c = XTy with LU decomp */ + gsl_linalg_LU_decomp(XTX, perm, &signum); + gsl_linalg_LU_solve(XTX, perm, XTy, c0); + + /* solve with reg routine */ + gsl_multifit_linear_wstdform1(L, X, wts, y, Xs, ys, w); + gsl_multifit_linear_svd(Xs, w); + gsl_multifit_linear_solve(lambda, Xs, ys, c1, &rnorm0, &snorm0, w); + gsl_multifit_linear_genform1(L, c1, c1, w); + + /* test snorm = ||L c1|| */ + gsl_vector_memcpy(Lc, c1); + gsl_vector_mul(Lc, L); + snorm1 = gsl_blas_dnrm2(Lc); + gsl_test_rel(snorm0, snorm1, tol, "test_reg3: %s, snorm lambda=%g n=%zu p=%zu", + desc, lambda, n, p); + + /* test rnorm = ||y - X c1||, compute again Xs = sqrt(W) X and ys = sqrt(W) y */ + gsl_multifit_linear_wstdform1(NULL, X, wts, y, Xs, ys, w); + gsl_vector_memcpy(r, ys); + gsl_blas_dgemv(CblasNoTrans, -1.0, Xs, c1, 1.0, r); + rnorm1 = gsl_blas_dnrm2(r); + gsl_test_rel(rnorm0, rnorm1, tol, "test_reg3: %s, rnorm lambda=%g n=%zu p=%zu", + desc, lambda, n, p); + + /* test c0 = c1 */ + for (j = 0; j < p; ++j) + { + double c0j = gsl_vector_get(c0, j); + double c1j = gsl_vector_get(c1, j); + + gsl_test_rel(c1j, c0j, tol, "test_reg3: %s, c0/c1 j=%zu lambda=%g n=%zu p=%zu", + desc, j, lambda, n, p); + } + + gsl_matrix_free(Xs); + gsl_matrix_free(XTX); + gsl_vector_free(XTy); + gsl_vector_free(c0); + gsl_vector_free(c1); + gsl_vector_free(Lc); + gsl_vector_free(ys); + gsl_vector_free(r); + gsl_permutation_free(perm); +} + +/* solve system with given lambda and L and test against + * normal equations solution */ +static void +test_reg4(const double lambda, const gsl_matrix * L, const gsl_matrix * X, + const gsl_vector * y, const gsl_vector * wts, const double tol, + gsl_multifit_linear_workspace * w, const char *desc) +{ + const size_t m = L->size1; + const size_t n = X->size1; + const size_t p = X->size2; + double rnorm0, snorm0; + double rnorm1, snorm1; + gsl_vector *c0 = gsl_vector_alloc(p); + gsl_vector *c1 = gsl_vector_alloc(p); + gsl_matrix *LTL = gsl_matrix_alloc(p, p); /* L^T L */ + gsl_matrix *XTX = gsl_matrix_alloc(p, p); /* X^T W X + lambda^2 L^T L */ + gsl_vector *XTy = gsl_vector_alloc(p); /* X^T W y */ + gsl_permutation *perm = gsl_permutation_alloc(p); + gsl_matrix *Xs = (m < p) ? gsl_matrix_alloc(n - (p - m), m) : gsl_matrix_alloc(n, p); + gsl_vector *ys = (m < p) ? gsl_vector_alloc(n - (p - m)) : gsl_vector_alloc(n); + gsl_matrix *M = (m < p) ? gsl_matrix_alloc(n, p) : gsl_matrix_alloc(m, p); + gsl_vector *cs = (m < p) ? gsl_vector_alloc(m) : gsl_vector_alloc(p); + gsl_matrix *WX = gsl_matrix_alloc(n, p); + gsl_vector *Wy = gsl_vector_alloc(n); + gsl_vector *Lc = gsl_vector_alloc(m); + gsl_vector *r = gsl_vector_alloc(n); + gsl_matrix *LQR = gsl_matrix_alloc(m, p); + gsl_vector *Ltau = gsl_vector_alloc(GSL_MIN(m, p)); + int signum; + size_t j; + + /* compute WX = sqrt(W) X, Wy = sqrt(W) y */ + gsl_multifit_linear_wstdform1(NULL, X, wts, y, WX, Wy, w); + + /* construct XTy = X^T W y */ + gsl_blas_dgemv(CblasTrans, 1.0, WX, Wy, 0.0, XTy); + + /* construct XTX = X^T W X + lambda^2 L^T L */ + gsl_blas_dgemm(CblasTrans, CblasNoTrans, 1.0, L, L, 0.0, LTL); + gsl_matrix_scale(LTL, lambda * lambda); + + gsl_blas_dgemm(CblasTrans, CblasNoTrans, 1.0, WX, WX, 0.0, XTX); + gsl_matrix_add(XTX, LTL); + + /* solve XTX c = XTy with LU decomp */ + gsl_linalg_LU_decomp(XTX, perm, &signum); + gsl_linalg_LU_solve(XTX, perm, XTy, c0); + + /* solve with reg routine */ + gsl_matrix_memcpy(LQR, L); + gsl_multifit_linear_L_decomp(LQR, Ltau); + gsl_multifit_linear_wstdform2(LQR, Ltau, X, wts, y, Xs, ys, M, w); + gsl_multifit_linear_svd(Xs, w); + gsl_multifit_linear_solve(lambda, Xs, ys, cs, &rnorm0, &snorm0, w); + gsl_multifit_linear_wgenform2(LQR, Ltau, X, wts, y, cs, M, c1, w); + + /* test snorm = ||L c1|| */ + gsl_blas_dgemv(CblasNoTrans, 1.0, L, c1, 0.0, Lc); + snorm1 = gsl_blas_dnrm2(Lc); + gsl_test_rel(snorm0, snorm1, tol, "test_reg4: %s snorm lambda=%g", desc, lambda); + + /* test rnorm = ||y - X c1||_W */ + gsl_vector_memcpy(r, Wy); + gsl_blas_dgemv(CblasNoTrans, -1.0, WX, c1, 1.0, r); + rnorm1 = gsl_blas_dnrm2(r); + gsl_test_rel(rnorm0, rnorm1, tol, "test_reg4: %s rnorm lambda=%g", desc, lambda); + + /* test c0 = c1 */ + for (j = 0; j < p; ++j) + { + double c0j = gsl_vector_get(c0, j); + double c1j = gsl_vector_get(c1, j); + + gsl_test_rel(c1j, c0j, tol, "test_reg4: %s lambda=%g n=%zu p=%zu j=%zu", + desc, lambda, n, p, j); + } + + gsl_matrix_free(LTL); + gsl_matrix_free(XTX); + gsl_vector_free(XTy); + gsl_vector_free(c0); + gsl_vector_free(c1); + gsl_permutation_free(perm); + gsl_matrix_free(Xs); + gsl_vector_free(ys); + gsl_vector_free(cs); + gsl_matrix_free(M); + gsl_vector_free(Lc); + gsl_matrix_free(WX); + gsl_vector_free(Wy); + gsl_vector_free(r); + gsl_matrix_free(LQR); + gsl_vector_free(Ltau); +} + +static void +test_reg_system(const size_t n, const size_t p, const gsl_rng *r) +{ + gsl_matrix *X = gsl_matrix_alloc(n, p); + gsl_vector *y = gsl_vector_alloc(n); + gsl_vector *c = gsl_vector_alloc(p); + gsl_vector *wts = gsl_vector_alloc(n); + gsl_multifit_linear_workspace *w = gsl_multifit_linear_alloc(n, p); + gsl_multifit_linear_workspace *wbig = gsl_multifit_linear_alloc(n + 10, p + 5); + gsl_vector *diagL = gsl_vector_alloc(p); + gsl_matrix *Lsqr = gsl_matrix_alloc(p, p); + gsl_matrix *Ltall = gsl_matrix_alloc(5*p, p); + gsl_matrix *L1 = gsl_matrix_alloc(p - 1, p); + gsl_matrix *L2 = gsl_matrix_alloc(p - 2, p); + gsl_matrix *L3 = gsl_matrix_alloc(p - 3, p); + gsl_matrix *L5 = gsl_matrix_alloc(p - 5, p); + size_t i; + + /* generate random weights */ + test_random_vector(wts, r, 0.0, 1.0); + + /* generate well-conditioned system and test against OLS solution */ + test_random_matrix(X, r, -1.0, 1.0); + test_random_vector(y, r, -1.0, 1.0); + test_reg1(X, y, NULL, 1.0e-10, w, "unweighted"); + test_reg1(X, y, wts, 1.0e-10, w, "weighted"); + + /* generate ill-conditioned system */ + test_random_matrix_ill(X, r); + test_random_vector(c, r, -1.0, 1.0); + + /* compute y = X c + noise */ + gsl_blas_dgemv(CblasNoTrans, 1.0, X, c, 0.0, y); + test_random_vector_noise(r, y); + + /* random diag(L) vector */ + test_random_vector(diagL, r, -2.0, 2.0); + + /* random square and tall L matrices */ + test_random_matrix(Lsqr, r, -2.0, 2.0); + test_random_matrix(Ltall, r, -2.0, 2.0); + + gsl_multifit_linear_Lk(p, 1, L1); + gsl_multifit_linear_Lk(p, 2, L2); + gsl_multifit_linear_Lk(p, 3, L3); + gsl_multifit_linear_Lk(p, 5, L5); + + for (i = 0; i < 3; ++i) + { + /* + * can't make lambda too small or normal equations + * approach won't work well + */ + double lambda = pow(10.0, -(double) i); + + /* test unweighted */ + test_reg2(lambda, X, y, NULL, 1.0e-6, w, "unweighted"); + test_reg3(lambda, diagL, X, y, NULL, 1.0e-6, w, "unweighted"); + test_reg4(lambda, Lsqr, X, y, NULL, 1.0e-8, w, "Lsqr unweighted"); + test_reg4(lambda, Ltall, X, y, NULL, 1.0e-8, w, "Ltall unweighted"); + test_reg4(lambda, L1, X, y, NULL, 1.0e-6, w, "L1 unweighted"); + test_reg4(lambda, L2, X, y, NULL, 1.0e-6, w, "L2 unweighted"); + test_reg4(lambda, L3, X, y, NULL, 1.0e-5, w, "L3 unweighted"); + test_reg4(lambda, L5, X, y, NULL, 1.0e-4, w, "L5 unweighted"); + + /* test weighted */ + test_reg2(lambda, X, y, wts, 1.0e-6, w, "weighted"); + test_reg3(lambda, diagL, X, y, wts, 1.0e-6, w, "weighted"); + test_reg4(lambda, Lsqr, X, y, wts, 1.0e-8, w, "Lsqr weighted"); + test_reg4(lambda, L1, X, y, wts, 1.0e-6, w, "L1 weighted"); + test_reg4(lambda, L2, X, y, wts, 1.0e-6, w, "L2 weighted"); + test_reg4(lambda, L3, X, y, wts, 1.0e-5, w, "L3 weighted"); + test_reg4(lambda, L5, X, y, wts, 1.0e-4, w, "L5 weighted"); + + /* test again with larger workspace */ + test_reg2(lambda, X, y, NULL, 1.0e-6, wbig, "unweighted big"); + test_reg3(lambda, diagL, X, y, NULL, 1.0e-6, wbig, "unweighted big"); + test_reg4(lambda, Lsqr, X, y, NULL, 1.0e-8, wbig, "Lsqr unweighted big"); + test_reg4(lambda, L1, X, y, NULL, 1.0e-6, wbig, "L1 unweighted big"); + test_reg4(lambda, L2, X, y, NULL, 1.0e-6, wbig, "L2 unweighted big"); + test_reg4(lambda, L3, X, y, NULL, 1.0e-5, wbig, "L3 unweighted big"); + test_reg4(lambda, L5, X, y, NULL, 1.0e-4, wbig, "L5 unweighted big"); + + test_reg2(lambda, X, y, wts, 1.0e-6, wbig, "weighted big"); + test_reg3(lambda, diagL, X, y, wts, 1.0e-6, wbig, "weighted big"); + test_reg4(lambda, Lsqr, X, y, wts, 1.0e-8, wbig, "Lsqr weighted big"); + test_reg4(lambda, L1, X, y, wts, 1.0e-6, wbig, "L1 weighted big"); + test_reg4(lambda, L2, X, y, wts, 1.0e-6, wbig, "L2 weighted big"); + test_reg4(lambda, L3, X, y, wts, 1.0e-5, wbig, "L3 weighted big"); + test_reg4(lambda, L5, X, y, wts, 1.0e-4, wbig, "L5 weighted big"); + } + + gsl_matrix_free(X); + gsl_vector_free(y); + gsl_vector_free(c); + gsl_vector_free(wts); + gsl_vector_free(diagL); + gsl_matrix_free(Lsqr); + gsl_matrix_free(Ltall); + gsl_matrix_free(L1); + gsl_matrix_free(L2); + gsl_matrix_free(L3); + gsl_matrix_free(L5); + gsl_multifit_linear_free(w); + gsl_multifit_linear_free(wbig); +} + +static void +test_reg_sobolev(const size_t p, const size_t kmax, const gsl_rng *r) +{ + const double tol = 1.0e-12; + size_t i, j, k; + gsl_matrix *L = gsl_matrix_calloc(p, p); + gsl_matrix *LTL = gsl_matrix_alloc(p, p); /* Sobolov L^T L */ + gsl_matrix *LTL2 = gsl_matrix_alloc(p, p); /* alternate L^T L */ + gsl_matrix *Li = gsl_matrix_alloc(p, p); + gsl_multifit_linear_workspace *w = gsl_multifit_linear_alloc(p, p); + + for (k = 0; k <= kmax; ++k) + { + gsl_vector *alpha = gsl_vector_alloc(k + 1); + + /* random weights */ + test_random_vector(alpha, r, 0.0, 1.0); + + /* compute Sobolev matrix */ + gsl_multifit_linear_Lsobolev(p, k, alpha, L, w); + + /* compute LTL = L^T L */ + gsl_blas_dgemm(CblasTrans, CblasNoTrans, 1.0, L, L, 0.0, LTL); + + /* now compute LTL2 = L^T L using individual L_i factors */ + { + gsl_matrix_set_zero(LTL2); + for (i = 0; i <= k; ++i) + { + gsl_matrix_view Liv = gsl_matrix_submatrix(Li, 0, 0, p - i, p); + double ai = gsl_vector_get(alpha, i); + + /* compute a_i L_i */ + gsl_multifit_linear_Lk(p, i, &Liv.matrix); + gsl_matrix_scale(&Liv.matrix, ai); + + /* LTL += L_i^T L_i */ + gsl_blas_dgemm(CblasTrans, CblasNoTrans, 1.0, &Liv.matrix, &Liv.matrix, 1.0, LTL2); + } + } + + /* test LTL = LTL2 */ + for (i = 0; i < p; ++i) + { + for (j = 0; j < p; ++j) + { + double aij = gsl_matrix_get(LTL, i, j); + double bij = gsl_matrix_get(LTL2, i, j); + + gsl_test_rel(aij, bij, tol, "sobolov k=%zu LTL(%zu,%zu)", k, i, j); + } + } + + gsl_vector_free(alpha); + } + + gsl_matrix_free(L); + gsl_matrix_free(Li); + gsl_matrix_free(LTL); + gsl_matrix_free(LTL2); + gsl_multifit_linear_free(w); +} + +/* test linear regularized regression */ +static void +test_reg(void) +{ + gsl_rng *r = gsl_rng_alloc(gsl_rng_default); + + test_reg_system(100, 15, r); + test_reg_system(100, 50, r); + test_reg_system(100, 99, r); + + test_reg_sobolev(20, 10, r); + + gsl_rng_free(r); +} diff --git a/gsl-2.5/multifit/test_rosenbrock.c b/gsl-2.5/multifit/test_rosenbrock.c new file mode 100644 index 00000000..d42806e3 --- /dev/null +++ b/gsl-2.5/multifit/test_rosenbrock.c @@ -0,0 +1,73 @@ +#define rosenbrock_N 2 +#define rosenbrock_P 2 + +#define rosenbrock_NTRIES 4 + +static double rosenbrock_x0[rosenbrock_P] = { -1.2, 1.0 }; +static double rosenbrock_epsrel = 1.0e-12; + +static void +rosenbrock_checksol(const double x[], const double sumsq, + const double epsrel, const char *sname, + const char *pname) +{ + size_t i; + const double sumsq_exact = 0.0; + + gsl_test_rel(sumsq, sumsq_exact, epsrel, "%s/%s sumsq", + sname, pname); + + for (i = 0; i < rosenbrock_P; ++i) + { + gsl_test_rel(x[i], 1.0, epsrel, "%s/%s i=%zu", + sname, pname, i); + } +} + +static int +rosenbrock_f (const gsl_vector * x, void *params, gsl_vector * f) +{ + double x1 = gsl_vector_get(x, 0); + double x2 = gsl_vector_get(x, 1); + + gsl_vector_set(f, 0, 10.0 * (x2 - x1*x1)); + gsl_vector_set(f, 1, 1.0 - x1); + + return GSL_SUCCESS; +} + +static int +rosenbrock_df (const gsl_vector * x, void *params, gsl_matrix * J) +{ + double x1 = gsl_vector_get(x, 0); + + gsl_matrix_set(J, 0, 0, -20.0*x1); + gsl_matrix_set(J, 0, 1, 10.0); + gsl_matrix_set(J, 1, 0, -1.0); + gsl_matrix_set(J, 1, 1, 0.0); + + return GSL_SUCCESS; +} + +static gsl_multifit_function_fdf rosenbrock_func = +{ + &rosenbrock_f, + &rosenbrock_df, + NULL, + rosenbrock_N, + rosenbrock_P, + NULL, + 0, + 0 +}; + +static test_fdf_problem rosenbrock_problem = +{ + "rosenbrock", + rosenbrock_x0, + NULL, + &rosenbrock_epsrel, + rosenbrock_NTRIES, + &rosenbrock_checksol, + &rosenbrock_func +}; diff --git a/gsl-2.5/multifit/test_rosenbrocke.c b/gsl-2.5/multifit/test_rosenbrocke.c new file mode 100644 index 00000000..fca65fce --- /dev/null +++ b/gsl-2.5/multifit/test_rosenbrocke.c @@ -0,0 +1,88 @@ +#define rosenbrocke_N 8 /* = p */ +#define rosenbrocke_P 8 /* must be even */ + +#define rosenbrocke_NTRIES 4 + +static double rosenbrocke_x0[rosenbrocke_P] = { -1.2, 1.0, -1.2, 1.0, + -1.2, 1.0, -1.2, 1.0 }; + +static double rosenbrocke_epsrel = 1.0e-12; + +static void +rosenbrocke_checksol(const double x[], const double sumsq, + const double epsrel, const char *sname, + const char *pname) +{ + size_t i; + const double sumsq_exact = 0.0; + const double rosenbrocke_x[rosenbrocke_P] = { 1.0, 1.0, 1.0, 1.0, + 1.0, 1.0, 1.0, 1.0 }; + + gsl_test_rel(sumsq, sumsq_exact, epsrel, "%s/%s sumsq", + sname, pname); + + for (i = 0; i < rosenbrocke_P; ++i) + { + gsl_test_rel(x[i], rosenbrocke_x[i], epsrel, "%s/%s i=%zu", + sname, pname, i); + } +} + +static int +rosenbrocke_f (const gsl_vector * x, void *params, gsl_vector * f) +{ + size_t i; + + for (i = 0; i < rosenbrocke_N / 2; ++i) + { + double x2i = gsl_vector_get(x, 2*i + 1); + double x2im1 = gsl_vector_get(x, 2*i); + + gsl_vector_set(f, 2*i, 10.0 * (x2i - x2im1*x2im1)); + gsl_vector_set(f, 2*i + 1, 1.0 - x2im1); + } + + return GSL_SUCCESS; +} + +static int +rosenbrocke_df (const gsl_vector * x, void *params, gsl_matrix * J) +{ + size_t i; + + gsl_matrix_set_zero(J); + + for (i = 0; i < rosenbrocke_N / 2; ++i) + { + double x2im1 = gsl_vector_get(x, 2*i); + + gsl_matrix_set(J, 2*i, 2*i, -20.0*x2im1); + gsl_matrix_set(J, 2*i, 2*i + 1, 10.0); + gsl_matrix_set(J, 2*i + 1, 2*i, -1.0); + } + + return GSL_SUCCESS; +} + +static gsl_multifit_function_fdf rosenbrocke_func = +{ + &rosenbrocke_f, + &rosenbrocke_df, + NULL, + rosenbrocke_N, + rosenbrocke_P, + NULL, + 0, + 0 +}; + +static test_fdf_problem rosenbrocke_problem = +{ + "rosenbrock_extended", + rosenbrocke_x0, + NULL, + &rosenbrocke_epsrel, + rosenbrocke_NTRIES, + &rosenbrocke_checksol, + &rosenbrocke_func +}; diff --git a/gsl-2.5/multifit/test_roth.c b/gsl-2.5/multifit/test_roth.c new file mode 100644 index 00000000..87f7ae00 --- /dev/null +++ b/gsl-2.5/multifit/test_roth.c @@ -0,0 +1,89 @@ +#define roth_N 2 +#define roth_P 2 + +#define roth_NTRIES 3 + +static double roth_x0[roth_P] = { 0.5, -2.0 }; +static double roth_epsrel = 1.0e-8; + +static void +roth_checksol(const double x[], const double sumsq, + const double epsrel, const char *sname, + const char *pname) +{ + size_t i; + const double sumsq_exact1 = 0.0; + const double roth_x1[roth_P] = { 5.0, 4.0 }; + const double sumsq_exact2 = 48.9842536792400; + const double roth_x2[roth_P] = { 11.4127789869021, -0.896805253274477 }; + const double *roth_x; + double sumsq_exact; + + if (fabs(sumsq) < 0.1) + { + sumsq_exact = sumsq_exact1; + roth_x = roth_x1; + } + else + { + sumsq_exact = sumsq_exact2; + roth_x = roth_x2; + } + + gsl_test_rel(sumsq, sumsq_exact, epsrel, "%s/%s sumsq", + sname, pname); + + for (i = 0; i < roth_P; ++i) + { + gsl_test_rel(x[i], roth_x[i], epsrel, "%s/%s i=%zu", + sname, pname, i); + } +} + +static int +roth_f (const gsl_vector * x, void *params, gsl_vector * f) +{ + double x1 = gsl_vector_get(x, 0); + double x2 = gsl_vector_get(x, 1); + + gsl_vector_set(f, 0, x1 - x2*(2.0 - x2*(5.0 - x2)) - 13.0); + gsl_vector_set(f, 1, x1 - x2*(14.0 - x2*(1.0 + x2)) - 29.0); + + return GSL_SUCCESS; +} + +static int +roth_df (const gsl_vector * x, void *params, gsl_matrix * J) +{ + double x2 = gsl_vector_get(x, 1); + + gsl_matrix_set(J, 0, 0, 1.0); + gsl_matrix_set(J, 0, 1, -2.0 + x2*(10.0 - 3.0*x2)); + gsl_matrix_set(J, 1, 0, 1.0); + gsl_matrix_set(J, 1, 1, -14.0 + x2*(2.0 + 3.0*x2)); + + return GSL_SUCCESS; +} + +static gsl_multifit_function_fdf roth_func = +{ + &roth_f, + &roth_df, + NULL, + roth_N, + roth_P, + NULL, + 0, + 0 +}; + +static test_fdf_problem roth_problem = +{ + "roth_freudenstein", + roth_x0, + NULL, + &roth_epsrel, + roth_NTRIES, + &roth_checksol, + &roth_func +}; diff --git a/gsl-2.5/multifit/test_shaw.c b/gsl-2.5/multifit/test_shaw.c new file mode 100644 index 00000000..33c99188 --- /dev/null +++ b/gsl-2.5/multifit/test_shaw.c @@ -0,0 +1,353 @@ +/* + * test_shaw.c + * + * Test L-curve (Tikhonov) regression routines using Shaw + * problem. See example 1.10 of + * + * [1] R.C. Aster, B. Borchers and C. H. Thurber, + * Parameter Estimation and Inverse Problems (2nd ed), 2012. + */ + +#include + +/* alternate (and inefficient) method of computing G(lambda) */ +static double +shaw_gcv_G(const double lambda, const gsl_matrix * X, const gsl_vector * y, + gsl_multifit_linear_workspace * work) +{ + const size_t n = X->size1; + const size_t p = X->size2; + gsl_matrix * XTX = gsl_matrix_alloc(p, p); + gsl_matrix * XI = gsl_matrix_alloc(p, n); + gsl_matrix * XXI = gsl_matrix_alloc(n, n); + gsl_vector * c = gsl_vector_alloc(p); + gsl_vector_view d; + double rnorm, snorm; + double term1, term2, G; + size_t i; + + /* compute regularized solution with this lambda */ + gsl_multifit_linear_solve(lambda, X, y, c, &rnorm, &snorm, work); + + /* compute X^T X */ + gsl_blas_dsyrk(CblasLower, CblasTrans, 1.0, X, 0.0, XTX); + + /* add lambda*I */ + d = gsl_matrix_diagonal(XTX); + gsl_vector_add_constant(&d.vector, lambda * lambda); + + /* invert (X^T X + lambda*I) */ + gsl_linalg_cholesky_decomp1(XTX); + gsl_linalg_cholesky_invert(XTX); + gsl_matrix_transpose_tricpy('L', 0, XTX, XTX); + + /* XI = (X^T X + lambda*I)^{-1} X^T */ + gsl_blas_dgemm(CblasNoTrans, CblasTrans, 1.0, XTX, X, 0.0, XI); + + /* XXI = X (X^T X + lambda*I)^{-1} X^T */ + gsl_blas_dgemm(CblasNoTrans, CblasNoTrans, 1.0, X, XI, 0.0, XXI); + + /* compute: term1 = Tr(I - X XI) */ + term1 = 0.0; + for (i = 0; i < n; ++i) + { + double *Ai = gsl_matrix_ptr(XXI, i, i); + term1 += 1.0 - (*Ai); + } + + gsl_matrix_free(XTX); + gsl_matrix_free(XI); + gsl_matrix_free(XXI); + gsl_vector_free(c); + + term2 = rnorm / term1; + + return term2 * term2;; +} + +/* construct design matrix and rhs vector for Shaw problem */ +static int +shaw_system(gsl_matrix * X, gsl_vector * y) +{ + int s = GSL_SUCCESS; + const size_t n = X->size1; + const size_t p = X->size2; + const double dtheta = M_PI / (double) p; + size_t i, j; + gsl_vector *m = gsl_vector_alloc(p); + + /* build the design matrix */ + for (i = 0; i < n; ++i) + { + double si = (i + 0.5) * M_PI / n - M_PI / 2.0; + double csi = cos(si); + double sni = sin(si); + + for (j = 0; j < p; ++j) + { + double thetaj = (j + 0.5) * M_PI / p - M_PI / 2.0; + double term1 = csi + cos(thetaj); + double term2 = gsl_sf_sinc(sni + sin(thetaj)); + double Xij = term1 * term1 * term2 * term2 * dtheta; + + gsl_matrix_set(X, i, j, Xij); + } + } + + /* construct coefficient vector */ + { + const double a1 = 2.0; + const double a2 = 1.0; + const double c1 = 6.0; + const double c2 = 2.0; + const double t1 = 0.8; + const double t2 = -0.5; + + for (j = 0; j < p; ++j) + { + double tj = -M_PI / 2.0 + (j + 0.5) * dtheta; + double mj = a1 * exp(-c1 * (tj - t1) * (tj - t1)) + + a2 * exp(-c2 * (tj - t2) * (tj - t2)); + gsl_vector_set(m, j, mj); + } + } + + /* construct rhs vector */ + gsl_blas_dgemv(CblasNoTrans, 1.0, X, m, 0.0, y); + + gsl_vector_free(m); + + return s; +} + +static int +test_shaw_system_l(gsl_rng *rng_p, const size_t n, const size_t p, + const double lambda_expected, + gsl_vector *rhs) +{ + const size_t npoints = 1000; /* number of points on L-curve */ + const double tol1 = 1.0e-12; + const double tol2 = 1.0e-9; + const double tol3 = 1.0e-5; + gsl_vector * reg_param = gsl_vector_alloc(npoints); + gsl_vector * rho = gsl_vector_alloc(npoints); + gsl_vector * eta = gsl_vector_alloc(npoints); + + gsl_matrix * X = gsl_matrix_alloc(n, p); + gsl_matrix * cov = gsl_matrix_alloc(p, p); + gsl_vector * c = gsl_vector_alloc(p); + gsl_vector * ytmp = gsl_vector_alloc(n); + gsl_vector * y; + gsl_vector * r = gsl_vector_alloc(n); + gsl_multifit_linear_workspace * work = + gsl_multifit_linear_alloc (n, p); + + size_t reg_idx, i; + double lambda, rnorm, snorm; + + /* build design matrix */ + shaw_system(X, ytmp); + + if (rhs) + y = rhs; + else + { + y = ytmp; + + /* add random noise to exact rhs vector */ + test_random_vector_noise(rng_p, y); + } + + /* SVD decomposition */ + gsl_multifit_linear_svd(X, work); + + /* calculate L-curve */ + gsl_multifit_linear_lcurve(y, reg_param, rho, eta, work); + + /* test rho and eta vectors */ + for (i = 0; i < npoints; ++i) + { + double rhoi = gsl_vector_get(rho, i); + double etai = gsl_vector_get(eta, i); + double lami = gsl_vector_get(reg_param, i); + + /* solve regularized system and check for consistent rho/eta values */ + gsl_multifit_linear_solve(lami, X, y, c, &rnorm, &snorm, work); + gsl_test_rel(rhoi, rnorm, tol3, "shaw rho n=%zu p=%zu lambda=%e", + n, p, lami); + gsl_test_rel(etai, snorm, tol1, "shaw eta n=%zu p=%zu lambda=%e", + n, p, lami); + } + + /* calculate corner of L-curve */ + gsl_multifit_linear_lcorner(rho, eta, ®_idx); + + lambda = gsl_vector_get(reg_param, reg_idx); + + /* test against known lambda value if given */ + if (lambda_expected > 0.0) + { + gsl_test_rel(lambda, lambda_expected, tol1, + "shaw: n=%zu p=%zu L-curve corner lambda", + n, p); + } + + /* compute regularized solution with optimal lambda */ + gsl_multifit_linear_solve(lambda, X, y, c, &rnorm, &snorm, work); + + /* compute residual norm ||y - X c|| */ + gsl_vector_memcpy(r, y); + gsl_blas_dgemv(CblasNoTrans, 1.0, X, c, -1.0, r); + + /* test rnorm value */ + gsl_test_rel(rnorm, gsl_blas_dnrm2(r), tol2, + "shaw: n=%zu p=%zu rnorm", n, p); + + /* test snorm value */ + gsl_test_rel(snorm, gsl_blas_dnrm2(c), tol2, + "shaw: n=%zu p=%zu snorm", n, p); + + gsl_matrix_free(X); + gsl_matrix_free(cov); + gsl_vector_free(reg_param); + gsl_vector_free(rho); + gsl_vector_free(eta); + gsl_vector_free(r); + gsl_vector_free(c); + gsl_vector_free(ytmp); + gsl_multifit_linear_free(work); + + return 0; +} /* test_shaw_system_l() */ + +static int +test_shaw_system_gcv(gsl_rng *rng_p, const size_t n, const size_t p, + const double lambda_expected, + gsl_vector *rhs) +{ + const size_t npoints = 200; /* number of points on L-curve */ + const double tol1 = 1.0e-12; + const double tol2 = 1.4e-10; + const double tol3 = 1.0e-5; + gsl_vector * reg_param = gsl_vector_alloc(npoints); + gsl_vector * G = gsl_vector_alloc(npoints); + + gsl_matrix * X = gsl_matrix_alloc(n, p); + gsl_matrix * cov = gsl_matrix_alloc(p, p); + gsl_vector * c = gsl_vector_alloc(p); + gsl_vector * ytmp = gsl_vector_alloc(n); + gsl_vector * y; + gsl_vector * r = gsl_vector_alloc(n); + gsl_multifit_linear_workspace * work = + gsl_multifit_linear_alloc (n, p); + + size_t reg_idx, i; + double lambda, rnorm, snorm, G_lambda; + + /* build design matrix */ + shaw_system(X, ytmp); + + if (rhs) + y = rhs; + else + { + y = ytmp; + + /* add random noise to exact rhs vector */ + test_random_vector_noise(rng_p, y); + } + + /* SVD decomposition */ + gsl_multifit_linear_svd(X, work); + + /* calculate GCV curve */ + gsl_multifit_linear_gcv(y, reg_param, G, &lambda, &G_lambda, work); + + /* test G vector */ + for (i = 0; i < npoints; ++i) + { + double lami = gsl_vector_get(reg_param, i); + + if (lami > 1.0e-5) + { + /* test unreliable for small lambda */ + double Gi = gsl_vector_get(G, i); + double Gi_expected = shaw_gcv_G(lami, X, y, work); + + gsl_test_rel(Gi, Gi_expected, tol3, "shaw[%zu,%zu] gcv G i=%zu lambda=%e", + n, p, i, lami); + } + } + + /* test against known lambda value if given */ + if (lambda_expected > 0.0) + { + gsl_test_rel(lambda, lambda_expected, tol2, + "shaw gcv: n=%zu p=%zu lambda", + n, p); + } + + /* compute regularized solution with optimal lambda */ + gsl_multifit_linear_solve(lambda, X, y, c, &rnorm, &snorm, work); + + /* compute residual norm ||y - X c|| */ + gsl_vector_memcpy(r, y); + gsl_blas_dgemv(CblasNoTrans, 1.0, X, c, -1.0, r); + + /* test rnorm value */ + gsl_test_rel(rnorm, gsl_blas_dnrm2(r), tol2, + "shaw gcv: n=%zu p=%zu rnorm", n, p); + + /* test snorm value */ + gsl_test_rel(snorm, gsl_blas_dnrm2(c), tol2, + "shaw gcv: n=%zu p=%zu snorm", n, p); + + gsl_matrix_free(X); + gsl_matrix_free(cov); + gsl_vector_free(reg_param); + gsl_vector_free(G); + gsl_vector_free(r); + gsl_vector_free(c); + gsl_vector_free(ytmp); + gsl_multifit_linear_free(work); + + return 0; +} /* test_shaw_system_gcv() */ + +void +test_shaw(void) +{ + gsl_rng * r = gsl_rng_alloc(gsl_rng_default); + + { + double shaw20_y[] = { + 8.7547455124379323e-04, 5.4996835885761936e-04, + 1.7527999407005367e-06, 1.9552372913117047e-03, + 1.4411645433785081e-02, 5.2800013336393704e-02, + 1.3609152023257112e-01, 2.7203484587635818e-01, + 4.3752225136193390e-01, 5.7547667319875240e-01, + 6.2445052213539942e-01, 5.6252658286441348e-01, + 4.2322239923561566e-01, 2.6768469219560631e-01, + 1.4337901162734543e-01, 6.5614569346074361e-02, + 2.6013851831752945e-02, 9.2336933089481269e-03, + 3.2269066658993694e-03, 1.3999201459261811e-03 }; + gsl_vector_view rhs = gsl_vector_view_array(shaw20_y, 20); + + /* lambda and rhs values from [1] */ + test_shaw_system_l(r, 20, 20, 5.793190958069266e-06, &rhs.vector); + + test_shaw_system_gcv(r, 20, 20, 1.24921780949051038e-05, &rhs.vector); + } + + { + size_t n, p; + + for (n = 10; n <= 50; n += 2) + { + for (p = n - 6; p <= n; p += 2) + test_shaw_system_l(r, n, p, -1.0, NULL); + } + } + + gsl_rng_free(r); +} /* test_shaw() */ diff --git a/gsl-2.5/multifit/test_thurber.c b/gsl-2.5/multifit/test_thurber.c new file mode 100644 index 00000000..fd073098 --- /dev/null +++ b/gsl-2.5/multifit/test_thurber.c @@ -0,0 +1,136 @@ +#define thurber_N 37 +#define thurber_P 7 + +#define thurber_NTRIES 1 + +static double thurber_x0[thurber_P] = { 1000.0, 1000.0, 400.0, 40.0, + 0.7, 0.3, 0.03 }; + +static double thurber_epsrel = 1.0e-6; + +static double thurber_sigma[thurber_P] = { + 4.6647963344E+00, 3.9571156086E+01, 2.8698696102E+01, + 5.5675370270E+00, 3.1333340687E-02, 1.4984928198E-02, + 6.5842344623E-03 +}; + +static double thurber_X[thurber_N] = { + -3.067, -2.981, -2.921, -2.912, -2.840, -2.797, -2.702, + -2.699, -2.633, -2.481, -2.363, -2.322, -1.501, -1.460, + -1.274, -1.212, -1.100, -1.046, -0.915, -0.714, -0.566, + -0.545, -0.400, -0.309, -0.109, -0.103, 0.010, 0.119, + 0.377, 0.790, 0.963, 1.006, 1.115, 1.572, 1.841, + 2.047, 2.200 +}; + +static double thurber_F[thurber_N] = { + 80.574, 84.248, 87.264, 87.195, 89.076, 89.608, 89.868, 90.101, + 92.405, 95.854, 100.696, 101.060, 401.672, 390.724, 567.534, + 635.316, 733.054, 759.087, 894.206, 990.785, 1090.109, 1080.914, + 1122.643, 1178.351, 1260.531, 1273.514, 1288.339, 1327.543, 1353.863, + 1414.509, 1425.208, 1421.384, 1442.962, 1464.350, 1468.705, + 1447.894, 1457.628 +}; + +static void +thurber_checksol(const double x[], const double sumsq, + const double epsrel, const char *sname, + const char *pname) +{ + size_t i; + const double sumsq_exact = 5.6427082397E+03; + const double thurber_x[thurber_P] = { + 1.2881396800E+03, 1.4910792535E+03, 5.8323836877E+02, + 7.5416644291E+01, 9.6629502864E-01, 3.9797285797E-01, + 4.9727297349E-02 }; + + gsl_test_rel(sumsq, sumsq_exact, epsrel, "%s/%s sumsq", + sname, pname); + + for (i = 0; i < thurber_P; ++i) + { + gsl_test_rel(x[i], thurber_x[i], epsrel, "%s/%s i=%zu", + sname, pname, i); + } +} + + +static int +thurber_f (const gsl_vector * x, void *params, gsl_vector * f) +{ + double b[thurber_P]; + size_t i; + + for (i = 0; i < thurber_P; i++) + { + b[i] = gsl_vector_get(x, i); + } + + for (i = 0; i < thurber_N; i++) + { + double xi = thurber_X[i]; + double yi; + + yi = b[0] + b[1]*xi + b[2]*xi*xi + b[3]*xi*xi*xi; + yi /= 1.0 + b[4]*xi + b[5]*xi*xi + b[6]*xi*xi*xi; + + gsl_vector_set (f, i, yi - thurber_F[i]); + } + + return GSL_SUCCESS; +} + +static int +thurber_df (const gsl_vector * x, void *params, gsl_matrix * df) +{ + double b[thurber_P]; + size_t i; + + for (i = 0; i < thurber_P; i++) + { + b[i] = gsl_vector_get(x, i); + } + + for (i = 0; i < thurber_N; i++) + { + double xi = thurber_X[i]; + double d, n, d_sq; + + n = b[0] + b[1]*xi + b[2]*xi*xi + b[3]*xi*xi*xi; + d = 1.0 + b[4]*xi + b[5]*xi*xi + b[6]*xi*xi*xi; + d_sq = d * d; + + gsl_matrix_set (df, i, 0, 1.0 / d); + gsl_matrix_set (df, i, 1, xi / d); + gsl_matrix_set (df, i, 2, (xi * xi) / d); + gsl_matrix_set (df, i, 3, (xi * xi * xi) / d); + gsl_matrix_set (df, i, 4, -xi * n / d_sq); + gsl_matrix_set (df, i, 5, -xi * xi * n / d_sq); + gsl_matrix_set (df, i, 6, -xi * xi * xi * n / d_sq); + } + + return GSL_SUCCESS; +} + +static gsl_multifit_function_fdf thurber_func = +{ + &thurber_f, + &thurber_df, + NULL, + thurber_N, + thurber_P, + NULL, + 0, + 0 +}; + +static test_fdf_problem thurber_problem = +{ + "nist-thurber", + thurber_x0, + thurber_sigma, + &thurber_epsrel, + thurber_NTRIES, + &thurber_checksol, + &thurber_func +}; diff --git a/gsl-2.5/multifit/test_vardim.c b/gsl-2.5/multifit/test_vardim.c new file mode 100644 index 00000000..03dda5c6 --- /dev/null +++ b/gsl-2.5/multifit/test_vardim.c @@ -0,0 +1,94 @@ +#define vardim_N 7 /* p + 2 */ +#define vardim_P 5 + +#define vardim_NTRIES 4 + +static double vardim_x0[vardim_P] = { 0.8, 0.6, 0.4, 0.2, 0.0 }; + +static double vardim_epsrel = 1.0e-12; + +static void +vardim_checksol(const double x[], const double sumsq, + const double epsrel, const char *sname, + const char *pname) +{ + size_t i; + const double sumsq_exact = 0.0; + + gsl_test_rel(sumsq, sumsq_exact, epsrel, "%s/%s sumsq", + sname, pname); + + for (i = 0; i < vardim_P; ++i) + { + gsl_test_rel(x[i], 1.0, epsrel, "%s/%s i=%zu", + sname, pname, i); + } +} + +static int +vardim_f (const gsl_vector * x, void *params, gsl_vector * f) +{ + size_t i; + double sum = 0.0; + + for (i = 0; i < vardim_P; ++i) + { + double xi = gsl_vector_get(x, i); + + gsl_vector_set(f, i, xi - 1.0); + + sum += (i + 1.0) * (xi - 1.0); + } + + gsl_vector_set(f, vardim_P, sum); + gsl_vector_set(f, vardim_P + 1, sum*sum); + + return GSL_SUCCESS; +} + +static int +vardim_df (const gsl_vector * x, void *params, gsl_matrix * J) +{ + size_t i; + double sum = 0.0; + gsl_matrix_view m = gsl_matrix_submatrix(J, 0, 0, vardim_P, vardim_P); + + gsl_matrix_set_identity(&m.matrix); + + for (i = 0; i < vardim_P; ++i) + { + double xi = gsl_vector_get(x, i); + sum += (i + 1.0) * (xi - 1.0); + } + + for (i = 0; i < vardim_P; ++i) + { + gsl_matrix_set(J, vardim_P, i, i + 1.0); + gsl_matrix_set(J, vardim_P + 1, i, 2*(i + 1.0)*sum); + } + + return GSL_SUCCESS; +} + +static gsl_multifit_function_fdf vardim_func = +{ + &vardim_f, + &vardim_df, + NULL, + vardim_N, + vardim_P, + NULL, + 0, + 0 +}; + +static test_fdf_problem vardim_problem = +{ + "vardim", + vardim_x0, + NULL, + &vardim_epsrel, + vardim_NTRIES, + &vardim_checksol, + &vardim_func +}; diff --git a/gsl-2.5/multifit/test_watson.c b/gsl-2.5/multifit/test_watson.c new file mode 100644 index 00000000..cd7c663c --- /dev/null +++ b/gsl-2.5/multifit/test_watson.c @@ -0,0 +1,127 @@ +#define watson_N 31 +#define watson_P 6 + +#define watson_NTRIES 4 + +static double watson_x0[watson_P] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; +static double watson_epsrel = 1.0e-6; + +static void +watson_checksol(const double x[], const double sumsq, + const double epsrel, const char *sname, + const char *pname) +{ + size_t i; + const double sumsq_exact = 2.287670053552372e-03; + const double watson_x[watson_P] = { + -1.572508640629858e-02, 1.012434869366059e+00, -2.329916259263380e-01, + 1.260430087686035e+00, -1.513728922580576e+00, 9.929964323646112e-01 }; + + gsl_test_rel(sumsq, sumsq_exact, epsrel, "%s/%s sumsq", + sname, pname); + + for (i = 0; i < watson_P; ++i) + { + gsl_test_rel(x[i], watson_x[i], epsrel, "%s/%s i=%zu", + sname, pname, i); + } +} + +static int +watson_f (const gsl_vector * x, void *params, gsl_vector * f) +{ + const double x1 = gsl_vector_get(x, 0); + const double x2 = gsl_vector_get(x, 1); + size_t i, j; + + for (i = 0; i < watson_N - 2; ++i) + { + double ti = (i + 1) / 29.0; + double tjm1 = 1.0, tjm2 = 1.0; + double sum1 = 0.0, sum2 = 0.0; + + for (j = 0; j < watson_P; ++j) + { + double xj = gsl_vector_get(x, j); + + sum1 += xj * tjm1; + tjm1 *= ti; + + if (j > 0) + { + sum2 += j * xj * tjm2; + tjm2 *= ti; + } + } + + gsl_vector_set (f, i, sum2 - sum1*sum1 - 1.0); + } + + gsl_vector_set(f, watson_N - 2, x1); + gsl_vector_set(f, watson_N - 1, x2 - x1*x1 - 1.0); + + return GSL_SUCCESS; +} + +static int +watson_df (const gsl_vector * x, void *params, gsl_matrix * J) +{ + double x1 = gsl_vector_get (x, 0); + size_t i, j; + + gsl_matrix_set_zero(J); + + for (i = 0; i < watson_N - 2; ++i) + { + double ti = (i + 1) / 29.0; + double tjm1 = 1.0, tjm2 = 1.0; + double sum1 = 0.0; + + for (j = 0; j < watson_P; ++j) + { + double xj = gsl_vector_get(x, j); + sum1 += xj * tjm1; + tjm1 *= ti; + } + + tjm1 = 1.0; + tjm2 = 1.0; + for (j = 0; j < watson_P; ++j) + { + gsl_matrix_set(J, i, j, j * tjm2 - 2.0*sum1*tjm1); + tjm1 *= ti; + + if (j > 0) + tjm2 *= ti; + } + } + + gsl_matrix_set(J, watson_N - 2, 0, 1.0); + gsl_matrix_set(J, watson_N - 1, 0, -2.0*x1); + gsl_matrix_set(J, watson_N - 1, 1, 1.0); + + return GSL_SUCCESS; +} + +static gsl_multifit_function_fdf watson_func = +{ + &watson_f, + &watson_df, + NULL, + watson_N, + watson_P, + NULL, + 0, + 0 +}; + +static test_fdf_problem watson_problem = +{ + "watson", + watson_x0, + NULL, + &watson_epsrel, + watson_NTRIES, + &watson_checksol, + &watson_func +}; diff --git a/gsl-2.5/multifit/test_wnlin.c b/gsl-2.5/multifit/test_wnlin.c new file mode 100644 index 00000000..a11d7b34 --- /dev/null +++ b/gsl-2.5/multifit/test_wnlin.c @@ -0,0 +1,154 @@ +#define wnlin_N 40 +#define wnlin_P 3 + +#define wnlin_NTRIES 1 + +static double wnlin_x0[wnlin_P] = { 1.0, 0.0, 0.0 }; +static double wnlin_epsrel = 1.0e-8; + +static int wnlin_internal_weight = 1; + +/* data */ +static double wnlin_Y[wnlin_N] = { + 6.08035e+00, 5.47552e+00, 5.94654e+00, 5.04920e+00, 4.78568e+00, + 3.51748e+00, 2.84671e+00, 3.24634e+00, 3.23395e+00, 3.30385e+00, + 2.83439e+00, 2.31891e+00, 2.33858e+00, 2.40559e+00, 2.41856e+00, + 1.99966e+00, 1.88127e+00, 1.91477e+00, 1.70415e+00, 1.60316e+00, + 1.77937e+00, 1.55302e+00, 1.50903e+00, 1.36364e+00, 1.36873e+00, + 1.41954e+00, 1.37778e+00, 1.23573e+00, 1.28524e+00, 1.46327e+00, + 1.22315e+00, 1.19330e+00, 1.18717e+00, 8.83172e-01, 1.23424e+00, + 1.14683e+00, 1.11091e+00, 1.20396e+00, 1.28722e+00, 1.05801e+00 +}; + +/* weights */ +static double wnlin_W[wnlin_N] = { + 2.77778e+00, 3.27690e+00, 3.85426e+00, 4.51906e+00, 5.28083e+00, + 6.14919e+00, 7.13370e+00, 8.24349e+00, 9.48703e+00, 1.08717e+01, + 1.24036e+01, 1.40869e+01, 1.59238e+01, 1.79142e+01, 2.00553e+01, + 2.23415e+01, 2.47646e+01, 2.73137e+01, 2.99753e+01, 3.27337e+01, + 3.55714e+01, 3.84696e+01, 4.14085e+01, 4.43678e+01, 4.73278e+01, + 5.02690e+01, 5.31731e+01, 5.60234e+01, 5.88046e+01, 6.15036e+01, + 6.41092e+01, 6.66121e+01, 6.90054e+01, 7.12839e+01, 7.34442e+01, + 7.54848e+01, 7.74053e+01, 7.92069e+01, 8.08918e+01, 8.24632e+01 +}; + +static void +wnlin_checksol(const double x[], const double sumsq, + const double epsrel, const char *sname, + const char *pname) +{ + size_t i; + const double sumsq_exact = 29.7481259665713758; + const double wnlin_x[wnlin_P] = { 5.17378551196259195, + 0.111041758006851149, + 1.05282724070446099 }; + + gsl_test_rel(sumsq, sumsq_exact, epsrel, "%s/%s sumsq", + sname, pname); + + for (i = 0; i < wnlin_P; ++i) + { + gsl_test_rel(x[i], wnlin_x[i], epsrel, "%s/%s i=%zu", + sname, pname, i); + } +} + +static int +wnlin_f (const gsl_vector *x, void *params, gsl_vector *f) +{ + int *iptr = (int *) params; + int doweight = iptr ? *iptr : 0; + double A = gsl_vector_get (x, 0); + double lambda = gsl_vector_get (x, 1); + double b = gsl_vector_get (x, 2); + size_t i; + + /* model Yi = A * exp(-lambda * i) + b */ + for (i = 0; i < wnlin_N; i++) + { + double ti = i; + double yi = wnlin_Y[i]; + double swi = sqrt(wnlin_W[i]); + double Mi = A * exp (-lambda * ti) + b; + + if (doweight) + gsl_vector_set (f, i, swi * (Mi - yi)); + else + gsl_vector_set (f, i, Mi - yi); + } + + return GSL_SUCCESS; +} + +static int +wnlin_df (const gsl_vector *x, void *params, gsl_matrix *df) +{ + int *iptr = (int *) params; + int doweight = iptr ? *iptr : 0; + double A = gsl_vector_get (x, 0); + double lambda = gsl_vector_get (x, 1); + size_t i; + + for (i = 0; i < wnlin_N; i++) + { + gsl_vector_view v = gsl_matrix_row(df, i); + double ti = i; + double swi = sqrt(wnlin_W[i]); + double e = exp(-lambda * ti); + + gsl_vector_set(&v.vector, 0, e); + gsl_vector_set(&v.vector, 1, -ti * A * e); + gsl_vector_set(&v.vector, 2, 1.0); + + if (doweight) + gsl_vector_scale(&v.vector, swi); + } + + return GSL_SUCCESS; +} + +static gsl_multifit_function_fdf wnlin_func1 = +{ + &wnlin_f, + &wnlin_df, + NULL, + wnlin_N, + wnlin_P, + (void *) &wnlin_internal_weight, + 0, + 0 +}; + +static gsl_multifit_function_fdf wnlin_func2 = +{ + &wnlin_f, + &wnlin_df, + NULL, + wnlin_N, + wnlin_P, + NULL, + 0, + 0 +}; + +static test_fdf_problem wnlin_problem1 = +{ + "wnlin_internal_weights", + wnlin_x0, + NULL, + &wnlin_epsrel, + wnlin_NTRIES, + &wnlin_checksol, + &wnlin_func1 +}; + +static test_fdf_problem wnlin_problem2 = +{ + "wnlin_external_weights", + wnlin_x0, + NULL, + &wnlin_epsrel, + wnlin_NTRIES, + &wnlin_checksol, + &wnlin_func2 +}; diff --git a/gsl-2.5/multifit/test_wood.c b/gsl-2.5/multifit/test_wood.c new file mode 100644 index 00000000..e2b6ad37 --- /dev/null +++ b/gsl-2.5/multifit/test_wood.c @@ -0,0 +1,91 @@ +#define wood_N 6 +#define wood_P 4 + +#define wood_NTRIES 3 + +static double wood_x0[wood_P] = { -3.0, -1.0, -3.0, -1.0 }; +static double wood_epsrel = 1.0e-12; + +static void +wood_checksol(const double x[], const double sumsq, + const double epsrel, const char *sname, + const char *pname) +{ + size_t i; + const double sumsq_exact = 0.0; + const double wood_x[wood_P] = { 1.0, 1.0, 1.0, 1.0 }; + + gsl_test_rel(sumsq, sumsq_exact, epsrel, "%s/%s sumsq", + sname, pname); + + for (i = 0; i < wood_P; ++i) + { + gsl_test_rel(x[i], wood_x[i], epsrel, "%s/%s i=%zu", + sname, pname, i); + } +} + +static int +wood_f (const gsl_vector * x, void *params, gsl_vector * f) +{ + double x1 = gsl_vector_get(x, 0); + double x2 = gsl_vector_get(x, 1); + double x3 = gsl_vector_get(x, 2); + double x4 = gsl_vector_get(x, 3); + + gsl_vector_set(f, 0, 10.0*(x2 - x1*x1)); + gsl_vector_set(f, 1, 1.0 - x1); + gsl_vector_set(f, 2, sqrt(90.0)*(x4 - x3*x3)); + gsl_vector_set(f, 3, 1.0 - x3); + gsl_vector_set(f, 4, sqrt(10.0)*(x2 + x4 - 2.0)); + gsl_vector_set(f, 5, (x2 - x4) / sqrt(10.0)); + + return GSL_SUCCESS; +} + +static int +wood_df (const gsl_vector * x, void *params, gsl_matrix * J) +{ + double x1 = gsl_vector_get(x, 0); + double x3 = gsl_vector_get(x, 2); + double s90 = sqrt(90.0); + double s10 = sqrt(10.0); + + gsl_matrix_set_zero(J); + + gsl_matrix_set(J, 0, 0, -20.0*x1); + gsl_matrix_set(J, 0, 1, 10.0); + gsl_matrix_set(J, 1, 0, -1.0); + gsl_matrix_set(J, 2, 2, -2.0*s90*x3); + gsl_matrix_set(J, 2, 3, s90); + gsl_matrix_set(J, 3, 2, -1.0); + gsl_matrix_set(J, 4, 1, s10); + gsl_matrix_set(J, 4, 3, s10); + gsl_matrix_set(J, 5, 1, 1.0/s10); + gsl_matrix_set(J, 5, 3, -1.0/s10); + + return GSL_SUCCESS; +} + +static gsl_multifit_function_fdf wood_func = +{ + &wood_f, + &wood_df, + NULL, + wood_N, + wood_P, + NULL, + 0, + 0 +}; + +static test_fdf_problem wood_problem = +{ + "wood", + wood_x0, + NULL, + &wood_epsrel, + wood_NTRIES, + &wood_checksol, + &wood_func +}; diff --git a/gsl-2.5/multifit/work.c b/gsl-2.5/multifit/work.c new file mode 100644 index 00000000..0427c441 --- /dev/null +++ b/gsl-2.5/multifit/work.c @@ -0,0 +1,130 @@ +/* multifit/work.c + * + * Copyright (C) 2000, 2007, 2009 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include + +gsl_multifit_linear_workspace * +gsl_multifit_linear_alloc (const size_t nmax, const size_t pmax) +{ + gsl_multifit_linear_workspace *w; + + w = calloc (1, sizeof (gsl_multifit_linear_workspace)); + + if (w == 0) + { + GSL_ERROR_VAL ("failed to allocate space for multifit_linear struct", + GSL_ENOMEM, 0); + } + + w->nmax = nmax; /* max number of observations */ + w->pmax = pmax; /* max number of parameters */ + w->n = 0; + w->p = 0; + w->rcond = 0.0; + + w->A = gsl_matrix_alloc (nmax, pmax); + + if (w->A == 0) + { + gsl_multifit_linear_free(w); + GSL_ERROR_VAL ("failed to allocate space for A", GSL_ENOMEM, 0); + } + + w->Q = gsl_matrix_alloc (pmax, pmax); + + if (w->Q == 0) + { + gsl_multifit_linear_free(w); + GSL_ERROR_VAL ("failed to allocate space for Q", GSL_ENOMEM, 0); + } + + w->QSI = gsl_matrix_alloc (pmax, pmax); + + if (w->QSI == 0) + { + gsl_multifit_linear_free(w); + GSL_ERROR_VAL ("failed to allocate space for QSI", GSL_ENOMEM, 0); + } + + w->S = gsl_vector_alloc (pmax); + + if (w->S == 0) + { + gsl_multifit_linear_free(w); + GSL_ERROR_VAL ("failed to allocate space for S", GSL_ENOMEM, 0); + } + + w->t = gsl_vector_alloc (nmax); + + if (w->t == 0) + { + gsl_multifit_linear_free(w); + GSL_ERROR_VAL ("failed to allocate space for t", GSL_ENOMEM, 0); + } + + w->xt = gsl_vector_calloc (pmax); + + if (w->xt == 0) + { + gsl_multifit_linear_free(w); + GSL_ERROR_VAL ("failed to allocate space for xt", GSL_ENOMEM, 0); + } + + w->D = gsl_vector_calloc (pmax); + + if (w->D == 0) + { + gsl_multifit_linear_free(w); + GSL_ERROR_VAL ("failed to allocate space for D", GSL_ENOMEM, 0); + } + + return w; +} + +void +gsl_multifit_linear_free (gsl_multifit_linear_workspace * w) +{ + RETURN_IF_NULL (w); + + if (w->A) + gsl_matrix_free (w->A); + + if (w->Q) + gsl_matrix_free (w->Q); + + if (w->QSI) + gsl_matrix_free (w->QSI); + + if (w->S) + gsl_vector_free (w->S); + + if (w->t) + gsl_vector_free (w->t); + + if (w->xt) + gsl_vector_free (w->xt); + + if (w->D) + gsl_vector_free (w->D); + + free (w); +} + diff --git a/gsl-2.5/multifit/work.lo b/gsl-2.5/multifit/work.lo new file mode 100644 index 00000000..2c40d03d --- /dev/null +++ b/gsl-2.5/multifit/work.lo @@ -0,0 +1,12 @@ +# work.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/work.o' + +# Name of the non-PIC object +non_pic_object='work.o' + diff --git a/gsl-2.5/multifit_nlinear/.deps/cholesky.Plo b/gsl-2.5/multifit_nlinear/.deps/cholesky.Plo new file mode 100644 index 00000000..676b3c54 --- /dev/null +++ b/gsl-2.5/multifit_nlinear/.deps/cholesky.Plo @@ -0,0 +1,305 @@ +cholesky.lo: cholesky.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_math.h /usr/include/math.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h /usr/include/stdlib.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_errno.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_linalg.h ../gsl/gsl_mode.h \ + ../gsl/gsl_permutation.h ../gsl/gsl_blas.h ../gsl/gsl_blas_types.h \ + ../gsl/gsl_cblas.h ../gsl/gsl_multifit_nlinear.h common.c + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +/usr/include/stdlib.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_linalg.h: + +../gsl/gsl_mode.h: + +../gsl/gsl_permutation.h: + +../gsl/gsl_blas.h: + +../gsl/gsl_blas_types.h: + +../gsl/gsl_cblas.h: + +../gsl/gsl_multifit_nlinear.h: + +common.c: diff --git a/gsl-2.5/multifit_nlinear/.deps/convergence.Plo b/gsl-2.5/multifit_nlinear/.deps/convergence.Plo new file mode 100644 index 00000000..849fecac --- /dev/null +++ b/gsl-2.5/multifit_nlinear/.deps/convergence.Plo @@ -0,0 +1,300 @@ +convergence.lo: convergence.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_math.h /usr/include/math.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_multifit_nlinear.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_complex.h \ + ../gsl/gsl_check_range.h ../gsl/gsl_vector_long_double.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_vector_complex.h \ + ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_permutation.h ../gsl/gsl_blas.h \ + ../gsl/gsl_blas_types.h ../gsl/gsl_cblas.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_multifit_nlinear.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_permutation.h: + +../gsl/gsl_blas.h: + +../gsl/gsl_blas_types.h: + +../gsl/gsl_cblas.h: diff --git a/gsl-2.5/multifit_nlinear/.deps/covar.Plo b/gsl-2.5/multifit_nlinear/.deps/covar.Plo new file mode 100644 index 00000000..38bf6857 --- /dev/null +++ b/gsl-2.5/multifit_nlinear/.deps/covar.Plo @@ -0,0 +1,304 @@ +covar.lo: covar.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_math.h /usr/include/math.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_permutation.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_linalg.h ../gsl/gsl_mode.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_complex.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_blas.h ../gsl/gsl_blas_types.h \ + ../gsl/gsl_cblas.h ../gsl/gsl_multifit_nlinear.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_permutation.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_linalg.h: + +../gsl/gsl_mode.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_blas.h: + +../gsl/gsl_blas_types.h: + +../gsl/gsl_cblas.h: + +../gsl/gsl_multifit_nlinear.h: diff --git a/gsl-2.5/multifit_nlinear/.deps/dogleg.Plo b/gsl-2.5/multifit_nlinear/.deps/dogleg.Plo new file mode 100644 index 00000000..9b3be55f --- /dev/null +++ b/gsl-2.5/multifit_nlinear/.deps/dogleg.Plo @@ -0,0 +1,305 @@ +dogleg.lo: dogleg.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_math.h /usr/include/math.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h /usr/include/stdlib.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_errno.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_linalg.h ../gsl/gsl_mode.h \ + ../gsl/gsl_permutation.h ../gsl/gsl_blas.h ../gsl/gsl_blas_types.h \ + ../gsl/gsl_cblas.h ../gsl/gsl_multifit_nlinear.h common.c + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +/usr/include/stdlib.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_linalg.h: + +../gsl/gsl_mode.h: + +../gsl/gsl_permutation.h: + +../gsl/gsl_blas.h: + +../gsl/gsl_blas_types.h: + +../gsl/gsl_cblas.h: + +../gsl/gsl_multifit_nlinear.h: + +common.c: diff --git a/gsl-2.5/multifit_nlinear/.deps/fdf.Plo b/gsl-2.5/multifit_nlinear/.deps/fdf.Plo new file mode 100644 index 00000000..33ace1bb --- /dev/null +++ b/gsl-2.5/multifit_nlinear/.deps/fdf.Plo @@ -0,0 +1,303 @@ +fdf.lo: fdf.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/string.h \ + /usr/include/xlocale.h /usr/include/bits/string.h \ + /usr/include/bits/string2.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_multifit_nlinear.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_complex.h \ + ../gsl/gsl_check_range.h ../gsl/gsl_vector_long_double.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_vector_complex.h \ + ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_permutation.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string.h: + +/usr/include/bits/string2.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_multifit_nlinear.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_permutation.h: diff --git a/gsl-2.5/multifit_nlinear/.deps/fdfvv.Plo b/gsl-2.5/multifit_nlinear/.deps/fdfvv.Plo new file mode 100644 index 00000000..51272838 --- /dev/null +++ b/gsl-2.5/multifit_nlinear/.deps/fdfvv.Plo @@ -0,0 +1,300 @@ +fdfvv.lo: fdfvv.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_math.h /usr/include/math.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_multifit_nlinear.h \ + /usr/include/stdlib.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_permutation.h ../gsl/gsl_blas.h \ + ../gsl/gsl_blas_types.h ../gsl/gsl_cblas.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_multifit_nlinear.h: + +/usr/include/stdlib.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_permutation.h: + +../gsl/gsl_blas.h: + +../gsl/gsl_blas_types.h: + +../gsl/gsl_cblas.h: diff --git a/gsl-2.5/multifit_nlinear/.deps/fdjac.Plo b/gsl-2.5/multifit_nlinear/.deps/fdjac.Plo new file mode 100644 index 00000000..3aae3527 --- /dev/null +++ b/gsl-2.5/multifit_nlinear/.deps/fdjac.Plo @@ -0,0 +1,293 @@ +fdjac.lo: fdjac.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_math.h /usr/include/math.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_multifit_nlinear.h \ + /usr/include/stdlib.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_permutation.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_multifit_nlinear.h: + +/usr/include/stdlib.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_permutation.h: diff --git a/gsl-2.5/multifit_nlinear/.deps/lm.Plo b/gsl-2.5/multifit_nlinear/.deps/lm.Plo new file mode 100644 index 00000000..8d8856a2 --- /dev/null +++ b/gsl-2.5/multifit_nlinear/.deps/lm.Plo @@ -0,0 +1,305 @@ +lm.lo: lm.c /usr/include/stdc-predef.h ../config.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h /usr/include/stdlib.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_errno.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_linalg.h ../gsl/gsl_mode.h \ + ../gsl/gsl_permutation.h ../gsl/gsl_blas.h ../gsl/gsl_blas_types.h \ + ../gsl/gsl_cblas.h ../gsl/gsl_multifit_nlinear.h common.c + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +/usr/include/stdlib.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_linalg.h: + +../gsl/gsl_mode.h: + +../gsl/gsl_permutation.h: + +../gsl/gsl_blas.h: + +../gsl/gsl_blas_types.h: + +../gsl/gsl_cblas.h: + +../gsl/gsl_multifit_nlinear.h: + +common.c: diff --git a/gsl-2.5/multifit_nlinear/.deps/qr.Plo b/gsl-2.5/multifit_nlinear/.deps/qr.Plo new file mode 100644 index 00000000..17516e98 --- /dev/null +++ b/gsl-2.5/multifit_nlinear/.deps/qr.Plo @@ -0,0 +1,307 @@ +qr.lo: qr.c /usr/include/stdc-predef.h ../config.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h /usr/include/stdlib.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_errno.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_linalg.h ../gsl/gsl_mode.h \ + ../gsl/gsl_permutation.h ../gsl/gsl_blas.h ../gsl/gsl_blas_types.h \ + ../gsl/gsl_cblas.h ../gsl/gsl_multifit_nlinear.h common.c qrsolv.c + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +/usr/include/stdlib.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_linalg.h: + +../gsl/gsl_mode.h: + +../gsl/gsl_permutation.h: + +../gsl/gsl_blas.h: + +../gsl/gsl_blas_types.h: + +../gsl/gsl_cblas.h: + +../gsl/gsl_multifit_nlinear.h: + +common.c: + +qrsolv.c: diff --git a/gsl-2.5/multifit_nlinear/.deps/scaling.Plo b/gsl-2.5/multifit_nlinear/.deps/scaling.Plo new file mode 100644 index 00000000..59eedb96 --- /dev/null +++ b/gsl-2.5/multifit_nlinear/.deps/scaling.Plo @@ -0,0 +1,303 @@ +scaling.lo: scaling.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_math.h /usr/include/math.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h /usr/include/stdlib.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_errno.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_linalg.h ../gsl/gsl_mode.h \ + ../gsl/gsl_permutation.h ../gsl/gsl_blas.h ../gsl/gsl_blas_types.h \ + ../gsl/gsl_cblas.h ../gsl/gsl_multifit_nlinear.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +/usr/include/stdlib.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_linalg.h: + +../gsl/gsl_mode.h: + +../gsl/gsl_permutation.h: + +../gsl/gsl_blas.h: + +../gsl/gsl_blas_types.h: + +../gsl/gsl_cblas.h: + +../gsl/gsl_multifit_nlinear.h: diff --git a/gsl-2.5/multifit_nlinear/.deps/subspace2D.Plo b/gsl-2.5/multifit_nlinear/.deps/subspace2D.Plo new file mode 100644 index 00000000..9c1cfc4f --- /dev/null +++ b/gsl-2.5/multifit_nlinear/.deps/subspace2D.Plo @@ -0,0 +1,308 @@ +subspace2D.lo: subspace2D.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_math.h /usr/include/math.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h /usr/include/stdlib.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_errno.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_linalg.h ../gsl/gsl_mode.h \ + ../gsl/gsl_permutation.h ../gsl/gsl_blas.h ../gsl/gsl_blas_types.h \ + ../gsl/gsl_cblas.h ../gsl/gsl_multifit_nlinear.h ../gsl/gsl_poly.h \ + common.c + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +/usr/include/stdlib.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_linalg.h: + +../gsl/gsl_mode.h: + +../gsl/gsl_permutation.h: + +../gsl/gsl_blas.h: + +../gsl/gsl_blas_types.h: + +../gsl/gsl_cblas.h: + +../gsl/gsl_multifit_nlinear.h: + +../gsl/gsl_poly.h: + +common.c: diff --git a/gsl-2.5/multifit_nlinear/.deps/svd.Plo b/gsl-2.5/multifit_nlinear/.deps/svd.Plo new file mode 100644 index 00000000..7c1e9c7d --- /dev/null +++ b/gsl-2.5/multifit_nlinear/.deps/svd.Plo @@ -0,0 +1,303 @@ +svd.lo: svd.c /usr/include/stdc-predef.h ../config.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h /usr/include/stdlib.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_errno.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_linalg.h ../gsl/gsl_mode.h \ + ../gsl/gsl_permutation.h ../gsl/gsl_blas.h ../gsl/gsl_blas_types.h \ + ../gsl/gsl_cblas.h ../gsl/gsl_multifit_nlinear.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +/usr/include/stdlib.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_linalg.h: + +../gsl/gsl_mode.h: + +../gsl/gsl_permutation.h: + +../gsl/gsl_blas.h: + +../gsl/gsl_blas_types.h: + +../gsl/gsl_cblas.h: + +../gsl/gsl_multifit_nlinear.h: diff --git a/gsl-2.5/multifit_nlinear/.deps/test.Po b/gsl-2.5/multifit_nlinear/.deps/test.Po new file mode 100644 index 00000000..a03bc930 --- /dev/null +++ b/gsl-2.5/multifit_nlinear/.deps/test.Po @@ -0,0 +1,401 @@ +test.o: test.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/string.h \ + /usr/include/xlocale.h /usr/include/bits/string.h \ + /usr/include/bits/string2.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_test.h \ + ../gsl/gsl_multifit_nlinear.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_permutation.h ../gsl/gsl_blas.h \ + ../gsl/gsl_blas_types.h ../gsl/gsl_cblas.h ../gsl/gsl_ieee_utils.h \ + test_fdf.c test_bard.c test_beale.c test_biggs.c test_box.c \ + test_boxbod.c test_brown1.c test_brown2.c test_brown3.c test_eckerle.c \ + test_enso.c test_exp1.c test_gaussian.c test_hahn1.c test_helical.c \ + test_jennrich.c test_kirby2.c test_kowalik.c test_lin1.c test_lin2.c \ + test_lin3.c test_meyer.c test_meyerscal.c test_osborne.c test_penalty1.c \ + test_penalty2.c test_powell1.c test_powell2.c test_powell3.c \ + test_rat42.c test_rat43.c test_rosenbrock.c test_rosenbrocke.c \ + test_roth.c test_thurber.c test_vardim.c test_watson.c test_wood.c \ + test_wnlin.c + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string.h: + +/usr/include/bits/string2.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_test.h: + +../gsl/gsl_multifit_nlinear.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_permutation.h: + +../gsl/gsl_blas.h: + +../gsl/gsl_blas_types.h: + +../gsl/gsl_cblas.h: + +../gsl/gsl_ieee_utils.h: + +test_fdf.c: + +test_bard.c: + +test_beale.c: + +test_biggs.c: + +test_box.c: + +test_boxbod.c: + +test_brown1.c: + +test_brown2.c: + +test_brown3.c: + +test_eckerle.c: + +test_enso.c: + +test_exp1.c: + +test_gaussian.c: + +test_hahn1.c: + +test_helical.c: + +test_jennrich.c: + +test_kirby2.c: + +test_kowalik.c: + +test_lin1.c: + +test_lin2.c: + +test_lin3.c: + +test_meyer.c: + +test_meyerscal.c: + +test_osborne.c: + +test_penalty1.c: + +test_penalty2.c: + +test_powell1.c: + +test_powell2.c: + +test_powell3.c: + +test_rat42.c: + +test_rat43.c: + +test_rosenbrock.c: + +test_rosenbrocke.c: + +test_roth.c: + +test_thurber.c: + +test_vardim.c: + +test_watson.c: + +test_wood.c: + +test_wnlin.c: diff --git a/gsl-2.5/multifit_nlinear/.deps/trust.Plo b/gsl-2.5/multifit_nlinear/.deps/trust.Plo new file mode 100644 index 00000000..58ccfebd --- /dev/null +++ b/gsl-2.5/multifit_nlinear/.deps/trust.Plo @@ -0,0 +1,307 @@ +trust.lo: trust.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_math.h /usr/include/math.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h /usr/include/stdlib.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_errno.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_linalg.h ../gsl/gsl_mode.h \ + ../gsl/gsl_permutation.h ../gsl/gsl_blas.h ../gsl/gsl_blas_types.h \ + ../gsl/gsl_cblas.h ../gsl/gsl_multifit_nlinear.h common.c nielsen.c + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +/usr/include/stdlib.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_linalg.h: + +../gsl/gsl_mode.h: + +../gsl/gsl_permutation.h: + +../gsl/gsl_blas.h: + +../gsl/gsl_blas_types.h: + +../gsl/gsl_cblas.h: + +../gsl/gsl_multifit_nlinear.h: + +common.c: + +nielsen.c: diff --git a/gsl-2.5/multifit_nlinear/.libs/libgslmultifit_nlinear.la b/gsl-2.5/multifit_nlinear/.libs/libgslmultifit_nlinear.la new file mode 120000 index 00000000..313eab3b --- /dev/null +++ b/gsl-2.5/multifit_nlinear/.libs/libgslmultifit_nlinear.la @@ -0,0 +1 @@ +../libgslmultifit_nlinear.la \ No newline at end of file diff --git a/gsl-2.5/multifit_nlinear/.libs/lt-test b/gsl-2.5/multifit_nlinear/.libs/lt-test new file mode 100755 index 00000000..f591ed95 Binary files /dev/null and b/gsl-2.5/multifit_nlinear/.libs/lt-test differ diff --git a/gsl-2.5/multifit_nlinear/.libs/test b/gsl-2.5/multifit_nlinear/.libs/test new file mode 100755 index 00000000..b3171613 Binary files /dev/null and b/gsl-2.5/multifit_nlinear/.libs/test differ diff --git a/gsl-2.5/multifit_nlinear/Makefile b/gsl-2.5/multifit_nlinear/Makefile new file mode 100644 index 00000000..48b63ccc --- /dev/null +++ b/gsl-2.5/multifit_nlinear/Makefile @@ -0,0 +1,1091 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# multifit_nlinear/Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + + + + +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/gsl +pkgincludedir = $(includedir)/gsl +pkglibdir = $(libdir)/gsl +pkglibexecdir = $(libexecdir)/gsl +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = x86_64-unknown-linux-gnu +host_triplet = x86_64-unknown-linux-gnu +check_PROGRAMS = test$(EXEEXT) +subdir = multifit_nlinear +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp \ + $(noinst_HEADERS) $(pkginclude_HEADERS) \ + $(top_srcdir)/test-driver TODO +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +libgslmultifit_nlinear_la_LIBADD = +am_libgslmultifit_nlinear_la_OBJECTS = cholesky.lo convergence.lo \ + covar.lo dogleg.lo fdf.lo fdfvv.lo fdjac.lo lm.lo qr.lo \ + scaling.lo subspace2D.lo svd.lo trust.lo +libgslmultifit_nlinear_la_OBJECTS = \ + $(am_libgslmultifit_nlinear_la_OBJECTS) +AM_V_lt = $(am__v_lt_$(V)) +am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) +am__v_lt_0 = --silent +am__v_lt_1 = +am_test_OBJECTS = test.$(OBJEXT) +test_OBJECTS = $(am_test_OBJECTS) +test_DEPENDENCIES = libgslmultifit_nlinear.la ../eigen/libgsleigen.la \ + ../linalg/libgsllinalg.la ../permutation/libgslpermutation.la \ + ../blas/libgslblas.la ../cblas/libgslcblas.la \ + ../matrix/libgslmatrix.la ../sort/libgslsort.la \ + ../statistics/libgslstatistics.la ../vector/libgslvector.la \ + ../block/libgslblock.la ../complex/libgslcomplex.la \ + ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la \ + ../test/libgsltest.la ../utils/libutils.la ../sys/libgslsys.la \ + ../rng/libgslrng.la ../specfunc/libgslspecfunc.la \ + ../poly/libgslpoly.la +AM_V_P = $(am__v_P_$(V)) +am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY)) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_$(V)) +am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_$(V)) +am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I. -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_$(V)) +am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_$(V)) +am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libgslmultifit_nlinear_la_SOURCES) $(test_SOURCES) +DIST_SOURCES = $(libgslmultifit_nlinear_la_SOURCES) $(test_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(pkgincludedir)" +HEADERS = $(noinst_HEADERS) $(pkginclude_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = .test +LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing aclocal-1.13 +AMTAR = $${TAR-tar} +AM_DEFAULT_VERBOSITY = 1 +AR = ar +AS = as +AUTOCONF = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing autoconf +AUTOHEADER = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing autoheader +AUTOMAKE = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing automake-1.13 +AWK = gawk +CC = gcc +CCDEPMODE = depmode=gcc3 +CFLAGS = -g -O2 +CPP = gcc -E +CPPFLAGS = +CYGPATH_W = echo +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +DLLTOOL = false +DSYMUTIL = +DUMPBIN = +ECHO_C = +ECHO_N = -n +ECHO_T = +EGREP = /usr/bin/grep -E +EXEEXT = +FGREP = /usr/bin/grep -F +GREP = /usr/bin/grep +GSLCBLAS_LDFLAGS = +GSL_CFLAGS = -I${prefix}/include +GSL_LDFLAGS = +GSL_LIBADD = +GSL_LIBM = -lm +GSL_LIBS = -L${exec_prefix}/lib -lgsl +GSL_LT_CBLAS_VERSION = 0:0:0 +GSL_LT_VERSION = 24:0:1 +GSL_MAJOR_VERSION = 2 +GSL_MINOR_VERSION = 5 +HAVE_AIX_IEEE_INTERFACE = +HAVE_DARWIN86_IEEE_INTERFACE = +HAVE_DARWIN_IEEE_INTERFACE = +HAVE_FREEBSD_IEEE_INTERFACE = +HAVE_GNUM68K_IEEE_INTERFACE = +HAVE_GNUPPC_IEEE_INTERFACE = +HAVE_GNUSPARC_IEEE_INTERFACE = +HAVE_GNUX86_IEEE_INTERFACE = +HAVE_HPUX11_IEEE_INTERFACE = +HAVE_HPUX_IEEE_INTERFACE = +HAVE_IRIX_IEEE_INTERFACE = +HAVE_NETBSD_IEEE_INTERFACE = +HAVE_OPENBSD_IEEE_INTERFACE = +HAVE_OS2EMX_IEEE_INTERFACE = +HAVE_SOLARIS_IEEE_INTERFACE = +HAVE_SUNOS4_IEEE_INTERFACE = +HAVE_TRU64_IEEE_INTERFACE = +INSTALL = /usr/bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = $(install_sh) -c -s +LD = /usr/bin/ld -m elf_x86_64 +LDFLAGS = +LIBM = -lm +LIBOBJS = +LIBS = -lm +LIBTOOL = $(SHELL) $(top_builddir)/libtool +LIPO = +LN_S = ln -s +LTLIBOBJS = +MAINT = # +MAKEINFO = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing makeinfo +MANIFEST_TOOL = : +MKDIR_P = /usr/bin/mkdir -p +NM = /usr/bin/nm -B +NMEDIT = +OBJDUMP = objdump +OBJEXT = o +OTOOL = +OTOOL64 = +PACKAGE = gsl +PACKAGE_BUGREPORT = +PACKAGE_NAME = gsl +PACKAGE_STRING = gsl 2.5 +PACKAGE_TARNAME = gsl +PACKAGE_URL = +PACKAGE_VERSION = 2.5 +PATH_SEPARATOR = : +RANLIB = ranlib +SED = /usr/bin/sed +SET_MAKE = +SHELL = /bin/sh +STRIP = strip +VERSION = 2.5 +abs_builddir = /home/groups/kipac/chto/package/gsl/gsl-2.5/multifit_nlinear +abs_srcdir = /home/groups/kipac/chto/package/gsl/gsl-2.5/multifit_nlinear +abs_top_builddir = /home/groups/kipac/chto/package/gsl/gsl-2.5 +abs_top_srcdir = /home/groups/kipac/chto/package/gsl/gsl-2.5 +ac_ct_AR = ar +ac_ct_CC = gcc +ac_ct_DUMPBIN = +am__include = include +am__leading_dot = . +am__quote = +am__tar = $${TAR-tar} chof - "$$tardir" +am__untar = $${TAR-tar} xf - +bindir = ${exec_prefix}/bin +build = x86_64-unknown-linux-gnu +build_alias = +build_cpu = x86_64 +build_os = linux-gnu +build_vendor = unknown +builddir = . +datadir = ${datarootdir} +datarootdir = ${prefix}/share +docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} +dvidir = ${docdir} +exec_prefix = ${prefix} +host = x86_64-unknown-linux-gnu +host_alias = +host_cpu = x86_64 +host_os = linux-gnu +host_vendor = unknown +htmldir = ${docdir} +includedir = ${prefix}/include +infodir = ${datarootdir}/info +install_sh = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/install-sh +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +localedir = ${datarootdir}/locale +localstatedir = ${prefix}/var +mandir = ${datarootdir}/man +mkdir_p = $(MKDIR_P) +oldincludedir = /usr/include +pdfdir = ${docdir} +prefix = /home/groups/kipac/chto/package/gsl/gsl_lib +program_transform_name = s,x,x, +psdir = ${docdir} +sbindir = ${exec_prefix}/sbin +sharedstatedir = ${prefix}/com +srcdir = . +sysconfdir = ${prefix}/etc +target_alias = +top_build_prefix = ../ +top_builddir = .. +top_srcdir = .. +noinst_LTLIBRARIES = libgslmultifit_nlinear.la +pkginclude_HEADERS = gsl_multifit_nlinear.h +AM_CPPFLAGS = -I$(top_srcdir) +libgslmultifit_nlinear_la_SOURCES = cholesky.c convergence.c covar.c dogleg.c fdf.c fdfvv.c fdjac.c lm.c qr.c scaling.c subspace2D.c svd.c trust.c +noinst_HEADERS = \ +common.c \ +nielsen.c \ +qrsolv.c \ +test_bard.c \ +test_beale.c \ +test_biggs.c \ +test_box.c \ +test_boxbod.c \ +test_brown1.c \ +test_brown2.c \ +test_brown3.c \ +test_eckerle.c \ +test_enso.c \ +test_exp1.c \ +test_fdf.c \ +test_gaussian.c \ +test_hahn1.c \ +test_helical.c \ +test_jennrich.c \ +test_kirby2.c \ +test_kowalik.c \ +test_lin1.c \ +test_lin2.c \ +test_lin3.c \ +test_meyer.c \ +test_meyerscal.c \ +test_osborne.c \ +test_penalty1.c \ +test_penalty2.c \ +test_powell1.c \ +test_powell2.c \ +test_powell3.c \ +test_rat42.c \ +test_rat43.c \ +test_rosenbrock.c \ +test_rosenbrocke.c \ +test_roth.c \ +test_thurber.c \ +test_vardim.c \ +test_watson.c \ +test_wnlin.c \ +test_wood.c + +TESTS = $(check_PROGRAMS) +test_SOURCES = test.c +test_LDADD = libgslmultifit_nlinear.la ../eigen/libgsleigen.la ../linalg/libgsllinalg.la ../permutation/libgslpermutation.la ../blas/libgslblas.la ../cblas/libgslcblas.la ../matrix/libgslmatrix.la ../sort/libgslsort.la ../statistics/libgslstatistics.la ../vector/libgslvector.la ../block/libgslblock.la ../complex/libgslcomplex.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../utils/libutils.la ../sys/libgslsys.la ../rng/libgslrng.la ../specfunc/libgslspecfunc.la ../poly/libgslpoly.la +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu multifit_nlinear/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu multifit_nlinear/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: # $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): # $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libgslmultifit_nlinear.la: $(libgslmultifit_nlinear_la_OBJECTS) $(libgslmultifit_nlinear_la_DEPENDENCIES) $(EXTRA_libgslmultifit_nlinear_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(libgslmultifit_nlinear_la_OBJECTS) $(libgslmultifit_nlinear_la_LIBADD) $(LIBS) + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) $(EXTRA_test_DEPENDENCIES) + @rm -f test$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_OBJECTS) $(test_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +include ./$(DEPDIR)/cholesky.Plo +include ./$(DEPDIR)/convergence.Plo +include ./$(DEPDIR)/covar.Plo +include ./$(DEPDIR)/dogleg.Plo +include ./$(DEPDIR)/fdf.Plo +include ./$(DEPDIR)/fdfvv.Plo +include ./$(DEPDIR)/fdjac.Plo +include ./$(DEPDIR)/lm.Plo +include ./$(DEPDIR)/qr.Plo +include ./$(DEPDIR)/scaling.Plo +include ./$(DEPDIR)/subspace2D.Plo +include ./$(DEPDIR)/svd.Plo +include ./$(DEPDIR)/test.Po +include ./$(DEPDIR)/trust.Plo + +.c.o: + $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# $(AM_V_CC)source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(COMPILE) -c $< + +.c.obj: + $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# $(AM_V_CC)source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: + $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +# $(AM_V_CC)source='$<' object='$@' libtool=yes \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-pkgincludeHEADERS: $(pkginclude_HEADERS) + @$(NORMAL_INSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \ + done + +uninstall-pkgincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + else \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_PROGRAMS) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +test.log: test$(EXEEXT) + @p='test$(EXEEXT)'; \ + b='test'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +#.test$(EXEEXT).log: +# @p='$<'; \ +# $(am__set_b); \ +# $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +# --log-file $$b.log --trs-file $$b.trs \ +# $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +# "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-am +all-am: Makefile $(LTLIBRARIES) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(pkgincludedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-pkgincludeHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-pkgincludeHEADERS + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES cscopelist-am ctags ctags-am distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-pkgincludeHEADERS \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + recheck tags tags-am uninstall uninstall-am \ + uninstall-pkgincludeHEADERS + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gsl-2.5/multifit_nlinear/Makefile.am b/gsl-2.5/multifit_nlinear/Makefile.am new file mode 100644 index 00000000..180f46bb --- /dev/null +++ b/gsl-2.5/multifit_nlinear/Makefile.am @@ -0,0 +1,58 @@ +noinst_LTLIBRARIES = libgslmultifit_nlinear.la + +pkginclude_HEADERS = gsl_multifit_nlinear.h + +AM_CPPFLAGS = -I$(top_srcdir) + +libgslmultifit_nlinear_la_SOURCES = cholesky.c convergence.c covar.c dogleg.c fdf.c fdfvv.c fdjac.c lm.c qr.c scaling.c subspace2D.c svd.c trust.c + +noinst_HEADERS = \ +common.c \ +nielsen.c \ +qrsolv.c \ +test_bard.c \ +test_beale.c \ +test_biggs.c \ +test_box.c \ +test_boxbod.c \ +test_brown1.c \ +test_brown2.c \ +test_brown3.c \ +test_eckerle.c \ +test_enso.c \ +test_exp1.c \ +test_fdf.c \ +test_gaussian.c \ +test_hahn1.c \ +test_helical.c \ +test_jennrich.c \ +test_kirby2.c \ +test_kowalik.c \ +test_lin1.c \ +test_lin2.c \ +test_lin3.c \ +test_meyer.c \ +test_meyerscal.c \ +test_osborne.c \ +test_penalty1.c \ +test_penalty2.c \ +test_powell1.c \ +test_powell2.c \ +test_powell3.c \ +test_rat42.c \ +test_rat43.c \ +test_rosenbrock.c \ +test_rosenbrocke.c \ +test_roth.c \ +test_thurber.c \ +test_vardim.c \ +test_watson.c \ +test_wnlin.c \ +test_wood.c + +check_PROGRAMS = test + +TESTS = $(check_PROGRAMS) + +test_SOURCES = test.c +test_LDADD = libgslmultifit_nlinear.la ../eigen/libgsleigen.la ../linalg/libgsllinalg.la ../permutation/libgslpermutation.la ../blas/libgslblas.la ../cblas/libgslcblas.la ../matrix/libgslmatrix.la ../sort/libgslsort.la ../statistics/libgslstatistics.la ../vector/libgslvector.la ../block/libgslblock.la ../complex/libgslcomplex.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../utils/libutils.la ../sys/libgslsys.la ../rng/libgslrng.la ../specfunc/libgslspecfunc.la ../poly/libgslpoly.la diff --git a/gsl-2.5/multifit_nlinear/Makefile.in b/gsl-2.5/multifit_nlinear/Makefile.in new file mode 100644 index 00000000..f1547da5 --- /dev/null +++ b/gsl-2.5/multifit_nlinear/Makefile.in @@ -0,0 +1,1091 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + + +VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +check_PROGRAMS = test$(EXEEXT) +subdir = multifit_nlinear +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp \ + $(noinst_HEADERS) $(pkginclude_HEADERS) \ + $(top_srcdir)/test-driver TODO +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +libgslmultifit_nlinear_la_LIBADD = +am_libgslmultifit_nlinear_la_OBJECTS = cholesky.lo convergence.lo \ + covar.lo dogleg.lo fdf.lo fdfvv.lo fdjac.lo lm.lo qr.lo \ + scaling.lo subspace2D.lo svd.lo trust.lo +libgslmultifit_nlinear_la_OBJECTS = \ + $(am_libgslmultifit_nlinear_la_OBJECTS) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +am_test_OBJECTS = test.$(OBJEXT) +test_OBJECTS = $(am_test_OBJECTS) +test_DEPENDENCIES = libgslmultifit_nlinear.la ../eigen/libgsleigen.la \ + ../linalg/libgsllinalg.la ../permutation/libgslpermutation.la \ + ../blas/libgslblas.la ../cblas/libgslcblas.la \ + ../matrix/libgslmatrix.la ../sort/libgslsort.la \ + ../statistics/libgslstatistics.la ../vector/libgslvector.la \ + ../block/libgslblock.la ../complex/libgslcomplex.la \ + ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la \ + ../test/libgsltest.la ../utils/libutils.la ../sys/libgslsys.la \ + ../rng/libgslrng.la ../specfunc/libgslspecfunc.la \ + ../poly/libgslpoly.la +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libgslmultifit_nlinear_la_SOURCES) $(test_SOURCES) +DIST_SOURCES = $(libgslmultifit_nlinear_la_SOURCES) $(test_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(pkgincludedir)" +HEADERS = $(noinst_HEADERS) $(pkginclude_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = @EXEEXT@ .test +LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +GSLCBLAS_LDFLAGS = @GSLCBLAS_LDFLAGS@ +GSL_CFLAGS = @GSL_CFLAGS@ +GSL_LDFLAGS = @GSL_LDFLAGS@ +GSL_LIBADD = @GSL_LIBADD@ +GSL_LIBM = @GSL_LIBM@ +GSL_LIBS = @GSL_LIBS@ +GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ +GSL_LT_VERSION = @GSL_LT_VERSION@ +GSL_MAJOR_VERSION = @GSL_MAJOR_VERSION@ +GSL_MINOR_VERSION = @GSL_MINOR_VERSION@ +HAVE_AIX_IEEE_INTERFACE = @HAVE_AIX_IEEE_INTERFACE@ +HAVE_DARWIN86_IEEE_INTERFACE = @HAVE_DARWIN86_IEEE_INTERFACE@ +HAVE_DARWIN_IEEE_INTERFACE = @HAVE_DARWIN_IEEE_INTERFACE@ +HAVE_FREEBSD_IEEE_INTERFACE = @HAVE_FREEBSD_IEEE_INTERFACE@ +HAVE_GNUM68K_IEEE_INTERFACE = @HAVE_GNUM68K_IEEE_INTERFACE@ +HAVE_GNUPPC_IEEE_INTERFACE = @HAVE_GNUPPC_IEEE_INTERFACE@ +HAVE_GNUSPARC_IEEE_INTERFACE = @HAVE_GNUSPARC_IEEE_INTERFACE@ +HAVE_GNUX86_IEEE_INTERFACE = @HAVE_GNUX86_IEEE_INTERFACE@ +HAVE_HPUX11_IEEE_INTERFACE = @HAVE_HPUX11_IEEE_INTERFACE@ +HAVE_HPUX_IEEE_INTERFACE = @HAVE_HPUX_IEEE_INTERFACE@ +HAVE_IRIX_IEEE_INTERFACE = @HAVE_IRIX_IEEE_INTERFACE@ +HAVE_NETBSD_IEEE_INTERFACE = @HAVE_NETBSD_IEEE_INTERFACE@ +HAVE_OPENBSD_IEEE_INTERFACE = @HAVE_OPENBSD_IEEE_INTERFACE@ +HAVE_OS2EMX_IEEE_INTERFACE = @HAVE_OS2EMX_IEEE_INTERFACE@ +HAVE_SOLARIS_IEEE_INTERFACE = @HAVE_SOLARIS_IEEE_INTERFACE@ +HAVE_SUNOS4_IEEE_INTERFACE = @HAVE_SUNOS4_IEEE_INTERFACE@ +HAVE_TRU64_IEEE_INTERFACE = @HAVE_TRU64_IEEE_INTERFACE@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBM = @LIBM@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +noinst_LTLIBRARIES = libgslmultifit_nlinear.la +pkginclude_HEADERS = gsl_multifit_nlinear.h +AM_CPPFLAGS = -I$(top_srcdir) +libgslmultifit_nlinear_la_SOURCES = cholesky.c convergence.c covar.c dogleg.c fdf.c fdfvv.c fdjac.c lm.c qr.c scaling.c subspace2D.c svd.c trust.c +noinst_HEADERS = \ +common.c \ +nielsen.c \ +qrsolv.c \ +test_bard.c \ +test_beale.c \ +test_biggs.c \ +test_box.c \ +test_boxbod.c \ +test_brown1.c \ +test_brown2.c \ +test_brown3.c \ +test_eckerle.c \ +test_enso.c \ +test_exp1.c \ +test_fdf.c \ +test_gaussian.c \ +test_hahn1.c \ +test_helical.c \ +test_jennrich.c \ +test_kirby2.c \ +test_kowalik.c \ +test_lin1.c \ +test_lin2.c \ +test_lin3.c \ +test_meyer.c \ +test_meyerscal.c \ +test_osborne.c \ +test_penalty1.c \ +test_penalty2.c \ +test_powell1.c \ +test_powell2.c \ +test_powell3.c \ +test_rat42.c \ +test_rat43.c \ +test_rosenbrock.c \ +test_rosenbrocke.c \ +test_roth.c \ +test_thurber.c \ +test_vardim.c \ +test_watson.c \ +test_wnlin.c \ +test_wood.c + +TESTS = $(check_PROGRAMS) +test_SOURCES = test.c +test_LDADD = libgslmultifit_nlinear.la ../eigen/libgsleigen.la ../linalg/libgsllinalg.la ../permutation/libgslpermutation.la ../blas/libgslblas.la ../cblas/libgslcblas.la ../matrix/libgslmatrix.la ../sort/libgslsort.la ../statistics/libgslstatistics.la ../vector/libgslvector.la ../block/libgslblock.la ../complex/libgslcomplex.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../utils/libutils.la ../sys/libgslsys.la ../rng/libgslrng.la ../specfunc/libgslspecfunc.la ../poly/libgslpoly.la +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu multifit_nlinear/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu multifit_nlinear/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libgslmultifit_nlinear.la: $(libgslmultifit_nlinear_la_OBJECTS) $(libgslmultifit_nlinear_la_DEPENDENCIES) $(EXTRA_libgslmultifit_nlinear_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(libgslmultifit_nlinear_la_OBJECTS) $(libgslmultifit_nlinear_la_LIBADD) $(LIBS) + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) $(EXTRA_test_DEPENDENCIES) + @rm -f test$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_OBJECTS) $(test_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cholesky.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/convergence.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/covar.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dogleg.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fdf.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fdfvv.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fdjac.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lm.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/qr.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/scaling.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/subspace2D.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/svd.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/trust.Plo@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-pkgincludeHEADERS: $(pkginclude_HEADERS) + @$(NORMAL_INSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \ + done + +uninstall-pkgincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + else \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_PROGRAMS) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +test.log: test$(EXEEXT) + @p='test$(EXEEXT)'; \ + b='test'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +@am__EXEEXT_TRUE@.test$(EXEEXT).log: +@am__EXEEXT_TRUE@ @p='$<'; \ +@am__EXEEXT_TRUE@ $(am__set_b); \ +@am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +@am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ +@am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +@am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-am +all-am: Makefile $(LTLIBRARIES) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(pkgincludedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-pkgincludeHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-pkgincludeHEADERS + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES cscopelist-am ctags ctags-am distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-pkgincludeHEADERS \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + recheck tags tags-am uninstall uninstall-am \ + uninstall-pkgincludeHEADERS + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gsl-2.5/multifit_nlinear/TODO b/gsl-2.5/multifit_nlinear/TODO new file mode 100644 index 00000000..ab89ca55 --- /dev/null +++ b/gsl-2.5/multifit_nlinear/TODO @@ -0,0 +1,6 @@ +1. rewrite qrsolv (COD, test on lin2) +2. More/Sorensen method for mu calculation +3. better condition estimate for svd +4. Revisit h_fvv = 0.01 vs 0.02 (originally 0.01) +5. fdfvv test currently disabled in test_fdf.c - on MacOS, the lmaccel/box3d/fdfvv test fails +6. Tikhonov regularization diff --git a/gsl-2.5/multifit_nlinear/cholesky.c b/gsl-2.5/multifit_nlinear/cholesky.c new file mode 100644 index 00000000..e60c8ab2 --- /dev/null +++ b/gsl-2.5/multifit_nlinear/cholesky.c @@ -0,0 +1,301 @@ +/* multifit_nlinear/cholesky.c + * + * Copyright (C) 2015, 2016 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* + * This module calculates the solution of the normal equations least squares + * system: + * + * [ J~^T J~ + mu D~^T D~ ] p~ = -J~^T f + * + * using the modified Cholesky decomposition. Quantities are scaled + * according to: + * + * J~ = J S + * D~ = D S + * p~ = S^{-1} p + * + * where S is a diagonal matrix and S_jj = || J_j || and J_j is column + * j of the Jacobian. This balancing transformation seems to be more + * numerically stable for some Jacobians. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "common.c" + +typedef struct +{ + gsl_matrix *JTJ; /* J^T J */ + gsl_matrix *work_JTJ; /* copy of J^T J */ + gsl_vector *rhs; /* -J^T f, size p */ + gsl_permutation *perm; /* permutation matrix for modified Cholesky */ + gsl_vector *work3p; /* workspace, size 3*p */ + double mu; /* current regularization parameter */ +} cholesky_state_t; + +static void *cholesky_alloc (const size_t n, const size_t p); +static int cholesky_init(const void * vtrust_state, void * vstate); +static int cholesky_presolve(const double mu, const void * vtrust_state, void * vstate); +static int cholesky_solve(const gsl_vector * f, gsl_vector *x, + const void * vtrust_state, void *vstate); +static int cholesky_solve_rhs(const gsl_vector * b, gsl_vector *x, cholesky_state_t *state); +static int cholesky_regularize(const double mu, const gsl_vector * diag, gsl_matrix * A, + cholesky_state_t * state); + +static void * +cholesky_alloc (const size_t n, const size_t p) +{ + cholesky_state_t *state; + + (void)n; + + state = calloc(1, sizeof(cholesky_state_t)); + if (state == NULL) + { + GSL_ERROR_NULL ("failed to allocate cholesky state", GSL_ENOMEM); + } + + state->JTJ = gsl_matrix_alloc(p, p); + if (state->JTJ == NULL) + { + GSL_ERROR_NULL ("failed to allocate space for JTJ", GSL_ENOMEM); + } + + state->work_JTJ = gsl_matrix_alloc(p, p); + if (state->work_JTJ == NULL) + { + GSL_ERROR_NULL ("failed to allocate space for JTJ workspace", + GSL_ENOMEM); + } + + state->rhs = gsl_vector_alloc(p); + if (state->rhs == NULL) + { + GSL_ERROR_NULL ("failed to allocate space for rhs", GSL_ENOMEM); + } + + state->perm = gsl_permutation_alloc(p); + if (state->perm == NULL) + { + GSL_ERROR_NULL ("failed to allocate space for perm", GSL_ENOMEM); + } + + state->work3p = gsl_vector_alloc(3 * p); + if (state->work3p == NULL) + { + GSL_ERROR_NULL ("failed to allocate space for work3p", GSL_ENOMEM); + } + + state->mu = -1.0; + + return state; +} + +static void +cholesky_free(void *vstate) +{ + cholesky_state_t *state = (cholesky_state_t *) vstate; + + if (state->JTJ) + gsl_matrix_free(state->JTJ); + + if (state->work_JTJ) + gsl_matrix_free(state->work_JTJ); + + if (state->rhs) + gsl_vector_free(state->rhs); + + if (state->perm) + gsl_permutation_free(state->perm); + + if (state->work3p) + gsl_vector_free(state->work3p); + + free(state); +} + +static int +cholesky_init(const void * vtrust_state, void * vstate) +{ + const gsl_multifit_nlinear_trust_state *trust_state = + (const gsl_multifit_nlinear_trust_state *) vtrust_state; + cholesky_state_t *state = (cholesky_state_t *) vstate; + + /* compute J^T J */ + gsl_blas_dsyrk(CblasLower, CblasTrans, 1.0, trust_state->J, 0.0, state->JTJ); + + return GSL_SUCCESS; +} + +/* +cholesky_presolve() + Compute the modified Cholesky decomposition of J^T J + mu D^T D. +Modified Cholesky is used in case mu = 0 and there are rounding +errors in forming J^T J which could lead to an indefinite matrix. + +Inputs: mu - LM parameter + vstate - workspace + +Notes: +1) On output, state->work_JTJ contains the Cholesky decomposition of +J^T J + mu D^T D +*/ + +static int +cholesky_presolve(const double mu, const void * vtrust_state, void * vstate) +{ + const gsl_multifit_nlinear_trust_state *trust_state = + (const gsl_multifit_nlinear_trust_state *) vtrust_state; + cholesky_state_t *state = (cholesky_state_t *) vstate; + gsl_matrix *JTJ = state->work_JTJ; + const gsl_vector *diag = trust_state->diag; + int status; + + /* copy lower triangle of A to workspace */ + gsl_matrix_tricpy('L', 1, JTJ, state->JTJ); + + /* augment normal equations: A -> A + mu D^T D */ + status = cholesky_regularize(mu, diag, JTJ, state); + if (status) + return status; + + /* compute modified Cholesky decomposition */ + status = gsl_linalg_mcholesky_decomp(JTJ, state->perm, NULL); + if (status) + return status; + + state->mu = mu; + + return GSL_SUCCESS; +} + +/* +cholesky_solve() + Compute (J^T J + mu D^T D) x = -J^T f + +Inputs: f - right hand side vector f + x - (output) solution vector + vstate - cholesky workspace +*/ + +static int +cholesky_solve(const gsl_vector * f, gsl_vector *x, + const void * vtrust_state, void *vstate) +{ + const gsl_multifit_nlinear_trust_state *trust_state = + (const gsl_multifit_nlinear_trust_state *) vtrust_state; + cholesky_state_t *state = (cholesky_state_t *) vstate; + int status; + + /* compute rhs = -J^T f */ + gsl_blas_dgemv(CblasTrans, -1.0, trust_state->J, f, 0.0, state->rhs); + + status = cholesky_solve_rhs(state->rhs, x, state); + if (status) + return status; + + return GSL_SUCCESS; +} + +static int +cholesky_rcond(double * rcond, void * vstate) +{ + int status; + cholesky_state_t *state = (cholesky_state_t *) vstate; + double rcond_JTJ; + + if (state->mu != 0) + { + /* + * Cholesky decomposition hasn't been computed yet, or was computed + * with mu > 0 - recompute Cholesky decomposition of J^T J + */ + + /* copy lower triangle of JTJ to workspace */ + gsl_matrix_tricpy('L', 1, state->work_JTJ, state->JTJ); + + /* compute modified Cholesky decomposition */ + status = gsl_linalg_mcholesky_decomp(state->work_JTJ, state->perm, NULL); + if (status) + return status; + } + + status = gsl_linalg_mcholesky_rcond(state->work_JTJ, state->perm, &rcond_JTJ, state->work3p); + if (status == GSL_SUCCESS) + *rcond = sqrt(rcond_JTJ); + + return status; +} + +/* solve: (J^T J + mu D^T D) x = b */ +static int +cholesky_solve_rhs(const gsl_vector * b, gsl_vector *x, cholesky_state_t *state) +{ + int status; + gsl_matrix *JTJ = state->work_JTJ; + + status = gsl_linalg_mcholesky_solve(JTJ, state->perm, b, x); + if (status) + return status; + + return GSL_SUCCESS; +} + +/* A <- A + mu D^T D */ +static int +cholesky_regularize(const double mu, const gsl_vector * diag, gsl_matrix * A, + cholesky_state_t * state) +{ + (void) state; + + if (mu != 0.0) + { + size_t i; + + for (i = 0; i < diag->size; ++i) + { + double di = gsl_vector_get(diag, i); + double *Aii = gsl_matrix_ptr(A, i, i); + *Aii += mu * di * di; + } + } + + return GSL_SUCCESS; +} + +static const gsl_multifit_nlinear_solver cholesky_type = +{ + "cholesky", + cholesky_alloc, + cholesky_init, + cholesky_presolve, + cholesky_solve, + cholesky_rcond, + cholesky_free +}; + +const gsl_multifit_nlinear_solver *gsl_multifit_nlinear_solver_cholesky = &cholesky_type; diff --git a/gsl-2.5/multifit_nlinear/cholesky.lo b/gsl-2.5/multifit_nlinear/cholesky.lo new file mode 100644 index 00000000..a534867e --- /dev/null +++ b/gsl-2.5/multifit_nlinear/cholesky.lo @@ -0,0 +1,12 @@ +# cholesky.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/cholesky.o' + +# Name of the non-PIC object +non_pic_object='cholesky.o' + diff --git a/gsl-2.5/multifit_nlinear/common.c b/gsl-2.5/multifit_nlinear/common.c new file mode 100644 index 00000000..9899e7ee --- /dev/null +++ b/gsl-2.5/multifit_nlinear/common.c @@ -0,0 +1,107 @@ +/* multifit_nlinear/common.c + * + * Copyright (C) 2014, 2015, 2016 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +static double scaled_enorm (const gsl_vector * d, const gsl_vector * f); +static void scaled_addition (const double alpha, const gsl_vector * x, + const double beta, const gsl_vector * y, + gsl_vector * z); +static double quadratic_preduction(const gsl_vector *f, const gsl_matrix * J, + const gsl_vector * dx, gsl_vector * work); + +/* compute || diag(d) f || */ +static double +scaled_enorm (const gsl_vector * d, const gsl_vector * f) +{ + double e2 = 0; + size_t i, n = f->size; + for (i = 0; i < n; i++) + { + double fi = gsl_vector_get (f, i); + double di = gsl_vector_get (d, i); + double u = di * fi; + e2 += u * u; + } + return sqrt (e2); +} + +/* compute z = alpha*x + beta*y */ +static void +scaled_addition (const double alpha, const gsl_vector * x, + const double beta, const gsl_vector * y, gsl_vector * z) +{ + const size_t N = z->size; + size_t i; + + for (i = 0; i < N; i++) + { + double xi = gsl_vector_get (x, i); + double yi = gsl_vector_get (y, i); + gsl_vector_set (z, i, alpha * xi + beta * yi); + } +} + +/* +quadratic_preduction() + Calculate predicted reduction based on standard +quadratic model: + +m_k(dx) = Phi(x_k) + dx' g + 1/2 dx' B_k dx + +predicted_reduction = m_k(0) - m_k(dx) + = -2 g^T dx / ||f||^2 - ( ||J*dx|| / ||f|| )^2 + = -2 fhat . beta - ||beta||^2 + +where: beta = J*dx / ||f|| + +Inputs: f - f(x), size n + J - Jacobian J(x), n-by-p + dx - proposed step, size p + work - workspace, size n + +Return: predicted reduction +*/ + +static double +quadratic_preduction(const gsl_vector * f, const gsl_matrix * J, + const gsl_vector * dx, gsl_vector * work) +{ + const size_t n = f->size; + const double normf = gsl_blas_dnrm2(f); + double pred_reduction; + double norm_beta; /* ||J*dx|| / ||f|| */ + size_t i; + + /* compute beta = J*dx / ||f|| */ + gsl_blas_dgemv(CblasNoTrans, 1.0 / normf, J, dx, 0.0, work); + norm_beta = gsl_blas_dnrm2(work); + + /* initialize to ( ||J*dx|| / ||f|| )^2 */ + pred_reduction = -norm_beta * norm_beta; + + /* subtract 2*fhat.beta */ + for (i = 0; i < n; ++i) + { + double fi = gsl_vector_get(f, i); + double betai = gsl_vector_get(work, i); + + pred_reduction -= 2.0 * (fi / normf) * betai; + } + + return pred_reduction; +} diff --git a/gsl-2.5/multifit_nlinear/convergence.c b/gsl-2.5/multifit_nlinear/convergence.c new file mode 100644 index 00000000..577a8143 --- /dev/null +++ b/gsl-2.5/multifit_nlinear/convergence.c @@ -0,0 +1,146 @@ +/* multifit_nlinear/convergence.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * Copyright (C) 2015 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include + +static int test_delta (const gsl_vector * dx, const gsl_vector * x, + double epsabs, double epsrel); +static double scaled_infnorm(const gsl_vector *x, const gsl_vector *g); + +/* +gsl_multifit_nlinear_test() + Convergence tests for nonlinear minimization + +(1) |dx_i| <= xtol * (1 + |x_i|) for all i +(2) || g .* x ||_inf <= gtol ||f||^2 +(3) ||f(x+dx) - f(x)|| <= ftol * max(||f(x)||, 1) + +Inputs: xtol - tolerance for step size + gtol - tolerance for gradient vector + ftol - tolerance for residual vector + info - (output) + 1 - stopped by small x step + 2 - stopped by small gradient + 3 - stopped by small residual vector change + w - workspace +*/ + +int +gsl_multifit_nlinear_test (const double xtol, const double gtol, + const double ftol, int *info, + const gsl_multifit_nlinear_workspace * w) +{ + int status; + double gnorm, fnorm, phi; + + *info = 0; + + status = test_delta(w->dx, w->x, xtol*xtol, xtol); + if (status == GSL_SUCCESS) + { + *info = 1; + return GSL_SUCCESS; + } + + /* compute gnorm = max_i( g_i * max(x_i, 1) ) */ + gnorm = scaled_infnorm(w->x, w->g); + + /* compute fnorm = ||f|| */ + fnorm = gsl_blas_dnrm2(w->f); + phi = 0.5 * fnorm * fnorm; + + if (gnorm <= gtol * GSL_MAX(phi, 1.0)) + { + *info = 2; + return GSL_SUCCESS; + } + +#if 0 /* XXX */ + if (dfnorm <= ftol * GSL_MAX(fnorm, 1.0)) + { + *info = 3; + return GSL_SUCCESS; + } +#else + (void)ftol; +#endif + + return GSL_CONTINUE; +} + +static int +test_delta (const gsl_vector * dx, const gsl_vector * x, + double epsabs, double epsrel) +{ + size_t i; + int ok = 1; + const size_t n = x->size ; + + if (epsrel < 0.0) + { + GSL_ERROR ("relative tolerance is negative", GSL_EBADTOL); + } + + for (i = 0 ; i < n ; i++) + { + double xi = gsl_vector_get(x,i); + double dxi = gsl_vector_get(dx,i); + double tolerance = epsabs + epsrel * fabs(xi) ; + + if (fabs(dxi) < tolerance) + { + ok = 1; + } + else + { + ok = 0; + break; + } + } + + if (ok) + return GSL_SUCCESS ; + + return GSL_CONTINUE; +} + +static double +scaled_infnorm(const gsl_vector *x, const gsl_vector *g) +{ + const size_t n = x->size; + size_t i; + double norm = 0.0; + + for (i = 0; i < n; ++i) + { + double xi = GSL_MAX(gsl_vector_get(x, i), 1.0); + double gi = gsl_vector_get(g, i); + double tmp = fabs(xi * gi); + + if (tmp > norm) + norm = tmp; + } + + return norm; +} diff --git a/gsl-2.5/multifit_nlinear/convergence.lo b/gsl-2.5/multifit_nlinear/convergence.lo new file mode 100644 index 00000000..a5468a8d --- /dev/null +++ b/gsl-2.5/multifit_nlinear/convergence.lo @@ -0,0 +1,12 @@ +# convergence.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/convergence.o' + +# Name of the non-PIC object +non_pic_object='convergence.o' + diff --git a/gsl-2.5/multifit_nlinear/covar.c b/gsl-2.5/multifit_nlinear/covar.c new file mode 100644 index 00000000..22770701 --- /dev/null +++ b/gsl-2.5/multifit_nlinear/covar.c @@ -0,0 +1,203 @@ +/* multifit_nlinear/covar.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2004, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include + +static int covar_QRPT (gsl_matrix * r, gsl_permutation * perm, + const double epsrel, gsl_matrix * covar); + +/* Compute the covariance matrix + + cov = inv (J^T J) + + by QRP^T decomposition of J +*/ + +int +gsl_multifit_nlinear_covar (const gsl_matrix * J, const double epsrel, + gsl_matrix * covar) +{ + int status; + gsl_matrix * r; + gsl_vector * tau; + gsl_vector * norm; + gsl_permutation * perm; + const size_t m = J->size1; + const size_t n = J->size2; + + if (m < n) + { + GSL_ERROR ("Jacobian be rectangular M x N with M >= N", GSL_EBADLEN); + } + + if (covar->size1 != covar->size2 || covar->size1 != n) + { + GSL_ERROR ("covariance matrix must be square and match second dimension of jacobian", GSL_EBADLEN); + } + + r = gsl_matrix_alloc (m, n); + tau = gsl_vector_alloc (n); + perm = gsl_permutation_alloc (n) ; + norm = gsl_vector_alloc (n) ; + + { + int signum = 0; + gsl_matrix_memcpy (r, J); + gsl_linalg_QRPT_decomp (r, tau, perm, &signum, norm); + } + + status = covar_QRPT(r, perm, epsrel, covar); + + gsl_matrix_free (r); + gsl_permutation_free (perm); + gsl_vector_free (tau); + gsl_vector_free (norm); + + return status; +} + +static int +covar_QRPT (gsl_matrix * r, gsl_permutation * perm, + const double epsrel, gsl_matrix * covar) +{ + /* Form the inverse of R in the full upper triangle of R */ + + double tolr = epsrel * fabs(gsl_matrix_get(r, 0, 0)); + const size_t n = r->size2; + size_t i, j, k; + size_t kmax = 0; + + for (k = 0 ; k < n ; k++) + { + double rkk = gsl_matrix_get(r, k, k); + + if (fabs(rkk) <= tolr) + { + break; + } + + gsl_matrix_set(r, k, k, 1.0/rkk); + + for (j = 0; j < k ; j++) + { + double t = gsl_matrix_get(r, j, k) / rkk; + gsl_matrix_set (r, j, k, 0.0); + + for (i = 0; i <= j; i++) + { + double rik = gsl_matrix_get (r, i, k); + double rij = gsl_matrix_get (r, i, j); + + gsl_matrix_set (r, i, k, rik - t * rij); + } + } + kmax = k; + } + + /* Form the full upper triangle of the inverse of R^T R in the full + upper triangle of R */ + + for (k = 0; k <= kmax ; k++) + { + for (j = 0; j < k; j++) + { + double rjk = gsl_matrix_get (r, j, k); + + for (i = 0; i <= j ; i++) + { + double rij = gsl_matrix_get (r, i, j); + double rik = gsl_matrix_get (r, i, k); + + gsl_matrix_set (r, i, j, rij + rjk * rik); + } + } + + { + double t = gsl_matrix_get (r, k, k); + + for (i = 0; i <= k; i++) + { + double rik = gsl_matrix_get (r, i, k); + + gsl_matrix_set (r, i, k, t * rik); + }; + } + } + + /* Form the full lower triangle of the covariance matrix in the + strict lower triangle of R and in w */ + + for (j = 0 ; j < n ; j++) + { + size_t pj = gsl_permutation_get (perm, j); + + for (i = 0; i <= j; i++) + { + size_t pi = gsl_permutation_get (perm, i); + + double rij; + + if (j > kmax) + { + gsl_matrix_set (r, i, j, 0.0); + rij = 0.0 ; + } + else + { + rij = gsl_matrix_get (r, i, j); + } + + if (pi > pj) + { + gsl_matrix_set (r, pi, pj, rij); + } + else if (pi < pj) + { + gsl_matrix_set (r, pj, pi, rij); + } + + } + + { + double rjj = gsl_matrix_get (r, j, j); + gsl_matrix_set (covar, pj, pj, rjj); + } + } + + + /* symmetrize the covariance matrix */ + + for (j = 0 ; j < n ; j++) + { + for (i = 0; i < j ; i++) + { + double rji = gsl_matrix_get (r, j, i); + + gsl_matrix_set (covar, j, i, rji); + gsl_matrix_set (covar, i, j, rji); + } + } + + return GSL_SUCCESS; +} diff --git a/gsl-2.5/multifit_nlinear/covar.lo b/gsl-2.5/multifit_nlinear/covar.lo new file mode 100644 index 00000000..0240d2a5 --- /dev/null +++ b/gsl-2.5/multifit_nlinear/covar.lo @@ -0,0 +1,12 @@ +# covar.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/covar.o' + +# Name of the non-PIC object +non_pic_object='covar.o' + diff --git a/gsl-2.5/multifit_nlinear/dogleg.c b/gsl-2.5/multifit_nlinear/dogleg.c new file mode 100644 index 00000000..f006cdae --- /dev/null +++ b/gsl-2.5/multifit_nlinear/dogleg.c @@ -0,0 +1,489 @@ +/* multifit_nlinear/dogleg.c + * + * Copyright (C) 2016 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include +#include +#include + +/* + * This module contains an implementation of the Powell dogleg + * algorithm for nonlinear optimization problems. This implementation + * closely follows the following works: + * + * [1] H. B. Nielsen, K. Madsen, Introduction to Optimization and + * Data Fitting, Informatics and Mathematical Modeling, + * Technical University of Denmark (DTU), 2010. + * + * [2] J. E. Dennis and H. H. W. Mei, Two new unconstrained optimization + * algorithms which use function and gradient values, J. Opt. Theory and + * Appl., 28(4), 1979. + */ + +typedef struct +{ + size_t n; /* number of observations */ + size_t p; /* number of parameters */ + gsl_vector *dx_gn; /* Gauss-Newton step, size p */ + gsl_vector *dx_sd; /* steepest descent step, size p */ + double norm_Dgn; /* || D dx_gn || */ + double norm_Dsd; /* || D dx_sd || */ + double norm_Dinvg; /* || D^{-1} g || */ + double norm_JDinv2g; /* || J D^{-2} g || */ + gsl_vector *workp; /* workspace, length p */ + gsl_vector *workn; /* workspace, length n */ + + /* tunable parameters */ + gsl_multifit_nlinear_parameters params; +} dogleg_state_t; + +#include "common.c" + +static void * dogleg_alloc (const void * params, const size_t n, const size_t p); +static void dogleg_free(void *vstate); +static int dogleg_init(const void *vtrust_state, void *vstate); +static int dogleg_preloop(const void * vtrust_state, void * vstate); +static int dogleg_step(const void * vtrust_state, const double delta, + gsl_vector * dx, void * vstate); +static int dogleg_double_step(const void * vtrust_state, const double delta, + gsl_vector * dx, void * vstate); +static int dogleg_preduction(const void * vtrust_state, const gsl_vector * dx, + double * pred, void * vstate); +static int dogleg_calc_gn(const gsl_multifit_nlinear_trust_state * trust_state, gsl_vector * dx); +static double dogleg_beta(const double t, const double delta, + const gsl_vector * diag, dogleg_state_t * state); + +static void * +dogleg_alloc (const void * params, const size_t n, const size_t p) +{ + const gsl_multifit_nlinear_parameters *mparams = (const gsl_multifit_nlinear_parameters *) params; + dogleg_state_t *state; + + state = calloc(1, sizeof(dogleg_state_t)); + if (state == NULL) + { + GSL_ERROR_NULL ("failed to allocate dogleg state", GSL_ENOMEM); + } + + state->dx_gn = gsl_vector_alloc(p); + if (state->dx_gn == NULL) + { + GSL_ERROR_NULL ("failed to allocate space for dx_gn", GSL_ENOMEM); + } + + state->dx_sd = gsl_vector_alloc(p); + if (state->dx_sd == NULL) + { + GSL_ERROR_NULL ("failed to allocate space for dx_sd", GSL_ENOMEM); + } + + state->workp = gsl_vector_alloc(p); + if (state->workp == NULL) + { + GSL_ERROR_NULL ("failed to allocate space for workp", GSL_ENOMEM); + } + + state->workn = gsl_vector_alloc(n); + if (state->workn == NULL) + { + GSL_ERROR_NULL ("failed to allocate space for workn", GSL_ENOMEM); + } + + state->n = n; + state->p = p; + state->params = *mparams; + + return state; +} + +static void +dogleg_free(void *vstate) +{ + dogleg_state_t *state = (dogleg_state_t *) vstate; + + if (state->dx_gn) + gsl_vector_free(state->dx_gn); + + if (state->dx_sd) + gsl_vector_free(state->dx_sd); + + if (state->workp) + gsl_vector_free(state->workp); + + if (state->workn) + gsl_vector_free(state->workn); + + free(state); +} + +/* +dogleg_init() + Initialize dogleg solver + +Inputs: vtrust_state - trust state + vstate - workspace + +Return: success/error +*/ + +static int +dogleg_init(const void *vtrust_state, void *vstate) +{ + (void)vtrust_state; + (void)vstate; + + return GSL_SUCCESS; +} + +/* +dogleg_preloop() + Initialize dogleg method prior to iteration loop. +This involves computing the steepest descent step. The +Gauss-Newton step is computed if needed in the _step() +routines. + +Notes: on output, +1) state->dx_sd contains steepest descent step +2) state->norm_Dinvg contains || D^{-1} g || +3) state->norm_JDinv2g contains || J D^{-2} g || +*/ + +static int +dogleg_preloop(const void * vtrust_state, void * vstate) +{ + const gsl_multifit_nlinear_trust_state *trust_state = + (const gsl_multifit_nlinear_trust_state *) vtrust_state; + dogleg_state_t *state = (dogleg_state_t *) vstate; + double u; + double alpha; /* ||g||^2 / ||Jg||^2 */ + + /* calculate the steepest descent step */ + + /* compute workp = D^{-1} g and its norm */ + gsl_vector_memcpy(state->workp, trust_state->g); + gsl_vector_div(state->workp, trust_state->diag); + state->norm_Dinvg = gsl_blas_dnrm2(state->workp); + + /* compute workp = D^{-2} g */ + gsl_vector_div(state->workp, trust_state->diag); + + /* compute: workn = J D^{-2} g */ + gsl_blas_dgemv(CblasNoTrans, 1.0, trust_state->J, state->workp, 0.0, state->workn); + state->norm_JDinv2g = gsl_blas_dnrm2(state->workn); + + u = state->norm_Dinvg / state->norm_JDinv2g; + alpha = u * u; + + /* dx_sd = -alpha D^{-2} g */ + gsl_vector_memcpy(state->dx_sd, state->workp); + gsl_vector_scale(state->dx_sd, -alpha); + + state->norm_Dsd = scaled_enorm(trust_state->diag, state->dx_sd); + state->norm_Dgn = -1.0; /* computed later if needed */ + + return GSL_SUCCESS; +} + +/* +dogleg_step() + Calculate a new step vector +*/ + +static int +dogleg_step(const void * vtrust_state, const double delta, + gsl_vector * dx, void * vstate) +{ + const gsl_multifit_nlinear_trust_state *trust_state = + (const gsl_multifit_nlinear_trust_state *) vtrust_state; + dogleg_state_t *state = (dogleg_state_t *) vstate; + + if (state->norm_Dsd >= delta) + { + /* steepest descent step is outside trust region; + * truncate steepest descent step to trust region boundary */ + gsl_vector_memcpy(dx, state->dx_sd); + gsl_vector_scale(dx, delta / state->norm_Dsd); + } + else + { + /* compute Gauss-Newton step if needed */ + if (state->norm_Dgn < 0.0) + { + int status = dogleg_calc_gn(trust_state, state->dx_gn); + + if (status) + return status; + + /* compute || D dx_gn || */ + state->norm_Dgn = scaled_enorm(trust_state->diag, state->dx_gn); + } + + if (state->norm_Dgn <= delta) + { + /* Gauss-Newton step is inside trust region, use it as final step + * since it is the global minimizer of the quadratic model function */ + gsl_vector_memcpy(dx, state->dx_gn); + } + else + { + /* Gauss-Newton step is outside trust region, but steepest + * descent is inside; use dogleg step */ + + double beta = dogleg_beta(1.0, delta, trust_state->diag, state); + + /* compute: workp = dx_gn - dx_sd */ + scaled_addition(1.0, state->dx_gn, -1.0, state->dx_sd, state->workp); + + /* dx = dx_sd + beta*(dx_gn - dx_sd) */ + scaled_addition(beta, state->workp, 1.0, state->dx_sd, dx); + } + } + + return GSL_SUCCESS; +} + +/* +dogleg_double_step() + Calculate a new step with double dogleg method. Based on +section 3 of [2] +*/ + +static int +dogleg_double_step(const void * vtrust_state, const double delta, + gsl_vector * dx, void * vstate) +{ + const double alpha_fac = 0.8; /* recommended value from Dennis and Mei */ + const gsl_multifit_nlinear_trust_state *trust_state = + (const gsl_multifit_nlinear_trust_state *) vtrust_state; + dogleg_state_t *state = (dogleg_state_t *) vstate; + + if (state->norm_Dsd >= delta) + { + /* steepest descent step is outside trust region; + * truncate steepest descent step to trust region boundary */ + gsl_vector_memcpy(dx, state->dx_sd); + gsl_vector_scale(dx, delta / state->norm_Dsd); + } + else + { + /* compute Gauss-Newton step if needed */ + if (state->norm_Dgn < 0.0) + { + int status = dogleg_calc_gn(trust_state, state->dx_gn); + + if (status) + return status; + + /* compute || D dx_gn || */ + state->norm_Dgn = scaled_enorm(trust_state->diag, state->dx_gn); + } + + if (state->norm_Dgn <= delta) + { + /* Gauss-Newton step is inside trust region, use it as final step + * since it is the global minimizer of the quadratic model function */ + gsl_vector_memcpy(dx, state->dx_gn); + } + else + { + double t, u, v, c; + + /* compute: u = ||D^{-1} g||^2 / ||J D^{-2} g||^2 */ + v = state->norm_Dinvg / state->norm_JDinv2g; + u = v * v; + + /* compute: v = g^T dx_gn */ + gsl_blas_ddot(trust_state->g, state->dx_gn, &v); + + /* compute: c = ||D^{-1} g||^4 / (||J D^{-2} g||^2 * |g^T dx_gn|) */ + c = u * (state->norm_Dinvg / fabs(v)) * state->norm_Dinvg; + + /* compute: t = 1 - alpha_fac*(1-c) */ + t = 1.0 - alpha_fac*(1.0 - c); + + if (t * state->norm_Dgn <= delta) + { + /* set dx = (delta / ||D dx_gn||) dx_gn */ + gsl_vector_memcpy(dx, state->dx_gn); + gsl_vector_scale(dx, delta / state->norm_Dgn); + } + else + { + /* Cauchy point is inside, Gauss-Newton is outside trust region; + * use double dogleg step */ + + double beta = dogleg_beta(t, delta, trust_state->diag, state); + + /* compute: workp = t*dx_gn - dx_sd */ + scaled_addition(t, state->dx_gn, -1.0, state->dx_sd, state->workp); + + /* dx = dx_sd + beta*(t*dx_gn - dx_sd) */ + scaled_addition(beta, state->workp, 1.0, state->dx_sd, dx); + } + } + } + + return GSL_SUCCESS; +} + +static int +dogleg_preduction(const void * vtrust_state, const gsl_vector * dx, + double * pred, void * vstate) +{ + const gsl_multifit_nlinear_trust_state *trust_state = + (const gsl_multifit_nlinear_trust_state *) vtrust_state; + dogleg_state_t *state = (dogleg_state_t *) vstate; + + *pred = quadratic_preduction(trust_state->f, trust_state->J, dx, state->workn); + + return GSL_SUCCESS; +} + +/* +dogleg_calc_gn() + Calculate Gauss-Newton step which satisfies: + +J dx_gn = -f + +Inputs: trust_state - trust state variables + dx - (output) Gauss-Newton step + +Return: success/error +*/ + +static int +dogleg_calc_gn(const gsl_multifit_nlinear_trust_state * trust_state, gsl_vector * dx) +{ + int status; + const gsl_multifit_nlinear_parameters *params = trust_state->params; + + /* initialize linear least squares solver */ + status = (params->solver->init)(trust_state, trust_state->solver_state); + if (status) + return status; + + /* prepare the linear solver to compute Gauss-Newton step */ + status = (params->solver->presolve)(0.0, trust_state, trust_state->solver_state); + if (status) + return status; + + /* solve: J dx_gn = -f for Gauss-Newton step */ + status = (params->solver->solve)(trust_state->f, + dx, + trust_state, + trust_state->solver_state); + if (status) + return status; + + return GSL_SUCCESS; +} + +/* +dogleg_beta() + This function finds beta in [0,1] such that the step + +dx = dx_sd + beta*(t*dx_gn - dx_sd) + +has norm + +||D dx|| = delta + +beta is the positive root of the quadratic: + +a beta^2 + b beta + c = 0 + +with + +a = ||D(t*dx_gn - dx_sd)||^2 +b = 2 dx_sd^T D^T D (t*dx_gn - dx_sd) +c = ||D dx_sd||^2 - delta^2 + +Inputs: t - amount of Gauss-Newton step to use for dogleg + (= 1 for classical dogleg, <= 1 for double dogleg) + delta - trust region radius + diag - diag(D) scaling matrix + state - workspace +*/ + +static double +dogleg_beta(const double t, const double delta, + const gsl_vector * diag, dogleg_state_t * state) +{ + double beta; + double a, b, c; + + /* compute: workp = t*dx_gn - dx_sd */ + scaled_addition(t, state->dx_gn, -1.0, state->dx_sd, state->workp); + + /* a = || D (t*dx_gn - dx_sd) ||^2 */ + a = scaled_enorm(diag, state->workp); + a *= a; + + /* workp = D^T D (t*dx_gn - dx_sd) */ + gsl_vector_mul(state->workp, diag); + gsl_vector_mul(state->workp, diag); + + /* b = 2 dx_sd^T D^T D (t*dx_gn - dx-sd) */ + gsl_blas_ddot(state->dx_sd, state->workp, &b); + b *= 2.0; + + /* c = || D dx_sd ||^2 - delta^2 = (||D dx_sd|| + delta) (||D dx_sd|| - delta) */ + c = (state->norm_Dsd + delta) * (state->norm_Dsd - delta); + + if (b > 0.0) + { + beta = (-2.0 * c) / (b + sqrt(b*b - 4.0*a*c)); + } + else + { + beta = (-b + sqrt(b*b - 4.0*a*c)) / (2.0 * a); + } + + return beta; +} + +static const gsl_multifit_nlinear_trs dogleg_type = +{ + "dogleg", + dogleg_alloc, + dogleg_init, + dogleg_preloop, + dogleg_step, + dogleg_preduction, + dogleg_free +}; + +const gsl_multifit_nlinear_trs *gsl_multifit_nlinear_trs_dogleg = &dogleg_type; + +static const gsl_multifit_nlinear_trs ddogleg_type = +{ + "double-dogleg", + dogleg_alloc, + dogleg_init, + dogleg_preloop, + dogleg_double_step, + dogleg_preduction, + dogleg_free +}; + +const gsl_multifit_nlinear_trs *gsl_multifit_nlinear_trs_ddogleg = &ddogleg_type; diff --git a/gsl-2.5/multifit_nlinear/dogleg.lo b/gsl-2.5/multifit_nlinear/dogleg.lo new file mode 100644 index 00000000..8d92cd28 --- /dev/null +++ b/gsl-2.5/multifit_nlinear/dogleg.lo @@ -0,0 +1,12 @@ +# dogleg.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/dogleg.o' + +# Name of the non-PIC object +non_pic_object='dogleg.o' + diff --git a/gsl-2.5/multifit_nlinear/fdf.c b/gsl-2.5/multifit_nlinear/fdf.c new file mode 100644 index 00000000..fc0c1134 --- /dev/null +++ b/gsl-2.5/multifit_nlinear/fdf.c @@ -0,0 +1,511 @@ +/* multifit_nlinear/fdf.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * Copyright (C) 2015, 2016 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include + +gsl_multifit_nlinear_workspace * +gsl_multifit_nlinear_alloc (const gsl_multifit_nlinear_type * T, + const gsl_multifit_nlinear_parameters * params, + const size_t n, const size_t p) +{ + gsl_multifit_nlinear_workspace * w; + + if (n < p) + { + GSL_ERROR_VAL ("insufficient data points, n < p", GSL_EINVAL, 0); + } + + w = calloc (1, sizeof (gsl_multifit_nlinear_workspace)); + if (w == 0) + { + GSL_ERROR_VAL ("failed to allocate space for multifit workspace", + GSL_ENOMEM, 0); + } + + w->x = gsl_vector_calloc (p); + if (w->x == 0) + { + gsl_multifit_nlinear_free (w); + GSL_ERROR_VAL ("failed to allocate space for x", GSL_ENOMEM, 0); + } + + w->f = gsl_vector_calloc (n); + if (w->f == 0) + { + gsl_multifit_nlinear_free (w); + GSL_ERROR_VAL ("failed to allocate space for f", GSL_ENOMEM, 0); + } + + w->dx = gsl_vector_calloc (p); + if (w->dx == 0) + { + gsl_multifit_nlinear_free (w); + GSL_ERROR_VAL ("failed to allocate space for dx", GSL_ENOMEM, 0); + } + + w->g = gsl_vector_alloc (p); + if (w->g == 0) + { + gsl_multifit_nlinear_free (w); + GSL_ERROR_VAL ("failed to allocate space for g", GSL_ENOMEM, 0); + } + + w->J = gsl_matrix_alloc(n, p); + if (w->J == 0) + { + gsl_multifit_nlinear_free (w); + GSL_ERROR_VAL ("failed to allocate space for Jacobian", GSL_ENOMEM, 0); + } + + w->sqrt_wts_work = gsl_vector_calloc (n); + if (w->sqrt_wts_work == 0) + { + gsl_multifit_nlinear_free (w); + GSL_ERROR_VAL ("failed to allocate space for weights", GSL_ENOMEM, 0); + } + + w->state = (T->alloc)(params, n, p); + if (w->state == 0) + { + gsl_multifit_nlinear_free (w); + GSL_ERROR_VAL ("failed to allocate space for multifit state", GSL_ENOMEM, 0); + } + + w->type = T; + w->fdf = NULL; + w->niter = 0; + w->params = *params; + + return w; +} + +void +gsl_multifit_nlinear_free (gsl_multifit_nlinear_workspace * w) +{ + RETURN_IF_NULL (w); + + if (w->state) + (w->type->free) (w->state); + + if (w->dx) + gsl_vector_free (w->dx); + + if (w->x) + gsl_vector_free (w->x); + + if (w->f) + gsl_vector_free (w->f); + + if (w->sqrt_wts_work) + gsl_vector_free (w->sqrt_wts_work); + + if (w->g) + gsl_vector_free (w->g); + + if (w->J) + gsl_matrix_free (w->J); + + free (w); +} + +gsl_multifit_nlinear_parameters +gsl_multifit_nlinear_default_parameters(void) +{ + gsl_multifit_nlinear_parameters params; + + params.trs = gsl_multifit_nlinear_trs_lm; + params.scale = gsl_multifit_nlinear_scale_more; + params.solver = gsl_multifit_nlinear_solver_qr; + params.fdtype = GSL_MULTIFIT_NLINEAR_FWDIFF; + params.factor_up = 3.0; + params.factor_down = 2.0; + params.avmax = 0.75; + params.h_df = GSL_SQRT_DBL_EPSILON; + params.h_fvv = 0.02; + + return params; +} + +int +gsl_multifit_nlinear_init (const gsl_vector * x, + gsl_multifit_nlinear_fdf * fdf, + gsl_multifit_nlinear_workspace * w) +{ + return gsl_multifit_nlinear_winit(x, NULL, fdf, w); +} + +int +gsl_multifit_nlinear_winit (const gsl_vector * x, + const gsl_vector * wts, + gsl_multifit_nlinear_fdf * fdf, + gsl_multifit_nlinear_workspace * w) +{ + const size_t n = w->f->size; + + if (n != fdf->n) + { + GSL_ERROR ("function size does not match workspace", GSL_EBADLEN); + } + else if (w->x->size != x->size) + { + GSL_ERROR ("vector length does not match workspace", GSL_EBADLEN); + } + else if (wts != NULL && n != wts->size) + { + GSL_ERROR ("weight vector length does not match workspace", GSL_EBADLEN); + } + else + { + size_t i; + + /* initialize counters for function and Jacobian evaluations */ + fdf->nevalf = 0; + fdf->nevaldf = 0; + fdf->nevalfvv = 0; + + w->fdf = fdf; + gsl_vector_memcpy(w->x, x); + w->niter = 0; + + if (wts) + { + w->sqrt_wts = w->sqrt_wts_work; + + for (i = 0; i < n; ++i) + { + double wi = gsl_vector_get(wts, i); + gsl_vector_set(w->sqrt_wts, i, sqrt(wi)); + } + } + else + { + w->sqrt_wts = NULL; + } + + return (w->type->init) (w->state, w->sqrt_wts, w->fdf, + w->x, w->f, w->J, w->g); + } +} + +int +gsl_multifit_nlinear_iterate (gsl_multifit_nlinear_workspace * w) +{ + int status = + (w->type->iterate) (w->state, w->sqrt_wts, w->fdf, + w->x, w->f, w->J, w->g, w->dx); + + w->niter++; + + return status; +} + +double +gsl_multifit_nlinear_avratio (const gsl_multifit_nlinear_workspace * w) +{ + return (w->type->avratio) (w->state); +} + +/* +gsl_multifit_nlinear_driver() + Iterate the nonlinear least squares solver until completion + +Inputs: maxiter - maximum iterations to allow + xtol - tolerance in step x + gtol - tolerance in gradient + ftol - tolerance in ||f|| + callback - callback function to call each iteration + callback_params - parameters to pass to callback function + info - (output) info flag on why iteration terminated + 1 = stopped due to small step size ||dx| + 2 = stopped due to small gradient + 3 = stopped due to small change in f + GSL_ETOLX = ||dx|| has converged to within machine + precision (and xtol is too small) + GSL_ETOLG = ||g||_inf is smaller than machine + precision (gtol is too small) + GSL_ETOLF = change in ||f|| is smaller than machine + precision (ftol is too small) + w - workspace + +Return: +GSL_SUCCESS if converged +GSL_MAXITER if maxiter exceeded without converging +GSL_ENOPROG if no accepted step found on first iteration +*/ + +int +gsl_multifit_nlinear_driver (const size_t maxiter, + const double xtol, + const double gtol, + const double ftol, + void (*callback)(const size_t iter, void *params, + const gsl_multifit_nlinear_workspace *w), + void *callback_params, + int *info, + gsl_multifit_nlinear_workspace * w) +{ + int status; + size_t iter = 0; + + /* call user callback function prior to any iterations + * with initial system state */ + if (callback) + callback(iter, callback_params, w); + + do + { + status = gsl_multifit_nlinear_iterate (w); + + /* + * If the solver reports no progress on the first iteration, + * then it didn't find a single step to reduce the + * cost function and more iterations won't help so return. + * + * If we get a no progress flag on subsequent iterations, + * it means we did find a good step in a previous iteration, + * so continue iterating since the solver has now reset + * mu to its initial value. + */ + if (status == GSL_ENOPROG && iter == 0) + { + *info = status; + return GSL_EMAXITER; + } + + ++iter; + + if (callback) + callback(iter, callback_params, w); + + /* test for convergence */ + status = gsl_multifit_nlinear_test(xtol, gtol, ftol, info, w); + } + while (status == GSL_CONTINUE && iter < maxiter); + + /* + * the following error codes mean that the solution has converged + * to within machine precision, so record the error code in info + * and return success + */ + if (status == GSL_ETOLF || status == GSL_ETOLX || status == GSL_ETOLG) + { + *info = status; + status = GSL_SUCCESS; + } + + /* check if max iterations reached */ + if (iter >= maxiter && status != GSL_SUCCESS) + status = GSL_EMAXITER; + + return status; +} /* gsl_multifit_nlinear_driver() */ + +gsl_matrix * +gsl_multifit_nlinear_jac (const gsl_multifit_nlinear_workspace * w) +{ + return w->J; +} + +const char * +gsl_multifit_nlinear_name (const gsl_multifit_nlinear_workspace * w) +{ + return w->type->name; +} + +gsl_vector * +gsl_multifit_nlinear_position (const gsl_multifit_nlinear_workspace * w) +{ + return w->x; +} + +gsl_vector * +gsl_multifit_nlinear_residual (const gsl_multifit_nlinear_workspace * w) +{ + return w->f; +} + +size_t +gsl_multifit_nlinear_niter (const gsl_multifit_nlinear_workspace * w) +{ + return w->niter; +} + +int +gsl_multifit_nlinear_rcond (double *rcond, const gsl_multifit_nlinear_workspace * w) +{ + int status = (w->type->rcond) (rcond, w->state); + return status; +} + +const char * +gsl_multifit_nlinear_trs_name (const gsl_multifit_nlinear_workspace * w) +{ + return w->params.trs->name; +} + +/* +gsl_multifit_nlinear_eval_f() + Compute residual vector y with user callback function, and apply +weighting transform if given: + +y~ = sqrt(W) y + +Inputs: fdf - callback function + x - model parameters + swts - weight matrix sqrt(W) = sqrt(diag(w1,w2,...,wn)) + set to NULL for unweighted fit + y - (output) (weighted) residual vector + y_i = sqrt(w_i) f_i where f_i is unweighted residual +*/ + +int +gsl_multifit_nlinear_eval_f(gsl_multifit_nlinear_fdf *fdf, + const gsl_vector *x, + const gsl_vector *swts, + gsl_vector *y) +{ + int s = ((*((fdf)->f)) (x, fdf->params, y)); + + ++(fdf->nevalf); + + /* y <- sqrt(W) y */ + if (swts) + gsl_vector_mul(y, swts); + + return s; +} + +/* +gsl_multifit_nlinear_eval_df() + Compute Jacobian matrix J with user callback function, and apply +weighting transform if given: + +J~ = sqrt(W) J + +Inputs: x - model parameters + f - residual vector f(x) + swts - weight matrix W = diag(w1,w2,...,wn) + set to NULL for unweighted fit + h - finite difference step size + fdtype - finite difference method + fdf - callback function + df - (output) (weighted) Jacobian matrix + df = sqrt(W) df where df is unweighted Jacobian + work - workspace for finite difference, size n +*/ + +int +gsl_multifit_nlinear_eval_df(const gsl_vector *x, + const gsl_vector *f, + const gsl_vector *swts, + const double h, + const gsl_multifit_nlinear_fdtype fdtype, + gsl_multifit_nlinear_fdf *fdf, + gsl_matrix *df, + gsl_vector *work) +{ + int status; + + if (fdf->df) + { + /* call user-supplied function */ + status = ((*((fdf)->df)) (x, fdf->params, df)); + ++(fdf->nevaldf); + + /* J <- sqrt(W) J */ + if (swts) + { + const size_t n = swts->size; + size_t i; + + for (i = 0; i < n; ++i) + { + double swi = gsl_vector_get(swts, i); + gsl_vector_view v = gsl_matrix_row(df, i); + + gsl_vector_scale(&v.vector, swi); + } + } + } + else + { + /* use finite difference Jacobian approximation */ + status = gsl_multifit_nlinear_df(h, fdtype, x, swts, fdf, f, df, work); + } + + return status; +} + +/* +gsl_multifit_nlinear_eval_fvv() + Compute second direction derivative vector yvv with user +callback function, and apply weighting transform if given: + +yvv~ = sqrt(W) yvv + +Inputs: h - step size for finite difference, if needed + x - model parameters, size p + v - unscaled geodesic velocity vector, size p + f - residual vector f(x), size n + J - Jacobian matrix J(x), n-by-p + swts - weight matrix sqrt(W) = sqrt(diag(w1,w2,...,wn)) + set to NULL for unweighted fit + fdf - callback function + yvv - (output) (weighted) second directional derivative vector + yvv_i = sqrt(w_i) fvv_i where f_i is unweighted + work - workspace, size p +*/ + +int +gsl_multifit_nlinear_eval_fvv(const double h, + const gsl_vector *x, + const gsl_vector *v, + const gsl_vector *f, + const gsl_matrix *J, + const gsl_vector *swts, + gsl_multifit_nlinear_fdf *fdf, + gsl_vector *yvv, gsl_vector *work) +{ + int status; + + if (fdf->fvv != NULL) + { + /* call user-supplied function */ + status = ((*((fdf)->fvv)) (x, v, fdf->params, yvv)); + ++(fdf->nevalfvv); + + /* yvv <- sqrt(W) yvv */ + if (swts) + gsl_vector_mul(yvv, swts); + } + else + { + /* use finite difference approximation */ + status = gsl_multifit_nlinear_fdfvv(h, x, v, f, J, + swts, fdf, yvv, work); + } + + return status; +} diff --git a/gsl-2.5/multifit_nlinear/fdf.lo b/gsl-2.5/multifit_nlinear/fdf.lo new file mode 100644 index 00000000..26ab9754 --- /dev/null +++ b/gsl-2.5/multifit_nlinear/fdf.lo @@ -0,0 +1,12 @@ +# fdf.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/fdf.o' + +# Name of the non-PIC object +non_pic_object='fdf.o' + diff --git a/gsl-2.5/multifit_nlinear/fdfvv.c b/gsl-2.5/multifit_nlinear/fdfvv.c new file mode 100644 index 00000000..612b4742 --- /dev/null +++ b/gsl-2.5/multifit_nlinear/fdfvv.c @@ -0,0 +1,121 @@ +/* multifit_nlinear/fdfvv.c + * + * Copyright (C) 2015 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include + +/* +fdfvv() + Compute approximate second directional derivative using +finite differences. + +See Eq. 19 of: + +M. K. Transtrum, J. P. Sethna, Improvements to the Levenberg +Marquardt algorithm for nonlinear least-squares minimization, +arXiv:1201.5885, 2012. + +Inputs: h - step size for finite difference + x - parameter vector, size p + v - geodesic velocity, size p + f - vector of function values f_i(x), size n + J - Jacobian matrix J(x), n-by-p + swts - data weights + fdf - fdf struct + fvv - (output) approximate second directional derivative + vector D_v^2 f(x) + work - workspace, size p + +Return: success or error +*/ + +static int +fdfvv(const double h, const gsl_vector *x, const gsl_vector *v, + const gsl_vector *f, const gsl_matrix *J, const gsl_vector *swts, + gsl_multifit_nlinear_fdf *fdf, gsl_vector *fvv, gsl_vector *work) +{ + int status; + const size_t n = fdf->n; + const size_t p = fdf->p; + const double hinv = 1.0 / h; + size_t i; + + /* compute work = x + h*v */ + for (i = 0; i < p; ++i) + { + double xi = gsl_vector_get(x, i); + double vi = gsl_vector_get(v, i); + + gsl_vector_set(work, i, xi + h * vi); + } + + /* compute f(x + h*v) */ + status = gsl_multifit_nlinear_eval_f (fdf, work, swts, fvv); + if (status) + return status; + + for (i = 0; i < n; ++i) + { + double fi = gsl_vector_get(f, i); /* f_i(x) */ + double fip = gsl_vector_get(fvv, i); /* f_i(x + h*v) */ + gsl_vector_const_view row = gsl_matrix_const_row(J, i); + double u, fvvi; + + /* compute u = sum_{ij} J_{ij} D v_j */ + gsl_blas_ddot(&row.vector, v, &u); + + fvvi = (2.0 * hinv) * ((fip - fi) * hinv - u); + + gsl_vector_set(fvv, i, fvvi); + } + + return status; +} + +/* +gsl_multifit_nlinear_fdfvv() + Compute approximate second directional derivative +using finite differences + +Inputs: h - step size for finite difference + x - parameter vector, size p + v - geodesic velocity, size p + f - function values f_i(x), size n + J - Jacobian matrix J(x), n-by-p + swts - sqrt data weights (set to NULL if not needed) + fdf - fdf + fvv - (output) approximate (weighted) second directional derivative + vector, size n, sqrt(W) fvv + work - workspace, size p + +Return: success or error +*/ + +int +gsl_multifit_nlinear_fdfvv(const double h, const gsl_vector *x, const gsl_vector *v, + const gsl_vector *f, const gsl_matrix *J, + const gsl_vector *swts, gsl_multifit_nlinear_fdf *fdf, + gsl_vector *fvv, gsl_vector *work) +{ + return fdfvv(h, x, v, f, J, swts, fdf, fvv, work); +} diff --git a/gsl-2.5/multifit_nlinear/fdfvv.lo b/gsl-2.5/multifit_nlinear/fdfvv.lo new file mode 100644 index 00000000..64be7edb --- /dev/null +++ b/gsl-2.5/multifit_nlinear/fdfvv.lo @@ -0,0 +1,12 @@ +# fdfvv.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/fdfvv.o' + +# Name of the non-PIC object +non_pic_object='fdfvv.o' + diff --git a/gsl-2.5/multifit_nlinear/fdjac.c b/gsl-2.5/multifit_nlinear/fdjac.c new file mode 100644 index 00000000..a8f2de53 --- /dev/null +++ b/gsl-2.5/multifit_nlinear/fdjac.c @@ -0,0 +1,194 @@ +/* multifit_nlinear/fdjac.c + * + * Copyright (C) 2013, 2016 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * + * This module contains routines for approximating the Jacobian with + * finite differences for nonlinear least-squares fitting. + */ + +#include +#include +#include +#include +#include + +static int forward_jac(const double h, const gsl_vector *x, + const gsl_vector *wts, + gsl_multifit_nlinear_fdf *fdf, + const gsl_vector *f, gsl_matrix *J); +static int center_jac(const double h, const gsl_vector *x, const gsl_vector *wts, + gsl_multifit_nlinear_fdf *fdf, gsl_matrix *J, gsl_vector *work); + +/* +forward_jac() + Compute approximate Jacobian using forward differences + +Inputs: h - finite difference step size + x - parameter vector + wts - data weights + fdf - fdf struct + f - (input) vector of function values f_i(x) + J - (output) Jacobian matrix + +Return: success or error +*/ + +static int +forward_jac(const double h, const gsl_vector *x, const gsl_vector *wts, + gsl_multifit_nlinear_fdf *fdf, const gsl_vector *f, gsl_matrix *J) +{ + int status = 0; + size_t i, j; + double delta; + + for (j = 0; j < fdf->p; ++j) + { + double xj = gsl_vector_get(x, j); + + /* use column j of J as temporary storage for f(x + dx) */ + gsl_vector_view v = gsl_matrix_column(J, j); + + delta = h * fabs(xj); + if (delta == 0.0) + delta = h; + + /* perturb x_j to compute forward difference */ + gsl_vector_set((gsl_vector *) x, j, xj + delta); + + status += gsl_multifit_nlinear_eval_f (fdf, x, wts, &v.vector); + if (status) + return status; + + /* restore x_j */ + gsl_vector_set((gsl_vector *) x, j, xj); + + delta = 1.0 / delta; + for (i = 0; i < fdf->n; ++i) + { + double fnext = gsl_vector_get(&v.vector, i); + double fi = gsl_vector_get(f, i); + + gsl_matrix_set(J, i, j, (fnext - fi) * delta); + } + } + + return status; +} + +/* +center_jac() + Compute approximate Jacobian using centered differences + +Inputs: h - finite difference step size + x - parameter vector + wts - data weights + fdf - fdf struct + J - (output) Jacobian matrix + work - additional workspace, size n + +Return: success or error +*/ + +static int +center_jac(const double h, const gsl_vector *x, const gsl_vector *wts, + gsl_multifit_nlinear_fdf *fdf, gsl_matrix *J, gsl_vector *work) +{ + int status = 0; + size_t i, j; + double delta; + + for (j = 0; j < fdf->p; ++j) + { + double xj = gsl_vector_get(x, j); + + /* use column j of J as temporary storage for f(x + dx) */ + gsl_vector_view v = gsl_matrix_column(J, j); + + delta = h * fabs(xj); + if (delta == 0.0) + delta = h; + + /* perturb x_j to compute forward difference, f(x + 1/2 delta e_j) */ + gsl_vector_set((gsl_vector *) x, j, xj + 0.5 * delta); + + status += gsl_multifit_nlinear_eval_f (fdf, x, wts, &v.vector); + if (status) + return status; + + /* perturb x_j to compute backward difference, f(x - 1/2 delta e_j) */ + gsl_vector_set((gsl_vector *) x, j, xj - 0.5 * delta); + + status += gsl_multifit_nlinear_eval_f (fdf, x, wts, work); + if (status) + return status; + + /* restore x_j */ + gsl_vector_set((gsl_vector *) x, j, xj); + + delta = 1.0 / delta; + for (i = 0; i < fdf->n; ++i) + { + double fnext = gsl_vector_get(&v.vector, i); + double fprev = gsl_vector_get(work, i); + + gsl_matrix_set(J, i, j, (fnext - fprev) * delta); + } + } + + return status; +} + +/* +gsl_multifit_nlinear_df() + Compute approximate Jacobian using finite differences + +Inputs: h - finite difference step size + fdtype - finite difference method + x - parameter vector + wts - data weights (set to NULL if not needed) + fdf - fdf + f - (input) function values f_i(x) + J - (output) approximate (weighted) Jacobian matrix, sqrt(W) * J + work - additional workspace for centered differences, size n + +Return: success or error +*/ + +int +gsl_multifit_nlinear_df(const double h, const gsl_multifit_nlinear_fdtype fdtype, + const gsl_vector *x, const gsl_vector *wts, + gsl_multifit_nlinear_fdf *fdf, + const gsl_vector *f, gsl_matrix *J, gsl_vector *work) +{ + int status; + + if (fdtype == GSL_MULTIFIT_NLINEAR_FWDIFF) + { + status = forward_jac(h, x, wts, fdf, f, J); + } + else if (fdtype == GSL_MULTIFIT_NLINEAR_CTRDIFF) + { + status = center_jac(h, x, wts, fdf, J, work); + } + else + { + GSL_ERROR("invalid specified fdtype", GSL_EINVAL); + } + + return status; +} diff --git a/gsl-2.5/multifit_nlinear/fdjac.lo b/gsl-2.5/multifit_nlinear/fdjac.lo new file mode 100644 index 00000000..920371ab --- /dev/null +++ b/gsl-2.5/multifit_nlinear/fdjac.lo @@ -0,0 +1,12 @@ +# fdjac.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/fdjac.o' + +# Name of the non-PIC object +non_pic_object='fdjac.o' + diff --git a/gsl-2.5/multifit_nlinear/gsl_multifit_nlinear.h b/gsl-2.5/multifit_nlinear/gsl_multifit_nlinear.h new file mode 100644 index 00000000..4e1828c1 --- /dev/null +++ b/gsl-2.5/multifit_nlinear/gsl_multifit_nlinear.h @@ -0,0 +1,303 @@ +/* multifit_nlinear/gsl_multifit_nlinear.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * Copyright (C) 2015, 2016 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_MULTIFIT_NLINEAR_H__ +#define __GSL_MULTIFIT_NLINEAR_H__ + +#include +#include +#include +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +typedef enum +{ + GSL_MULTIFIT_NLINEAR_FWDIFF, + GSL_MULTIFIT_NLINEAR_CTRDIFF +} gsl_multifit_nlinear_fdtype; + +/* Definition of vector-valued functions and gradient with parameters + based on gsl_vector */ + +typedef struct +{ + int (* f) (const gsl_vector * x, void * params, gsl_vector * f); + int (* df) (const gsl_vector * x, void * params, gsl_matrix * df); + int (* fvv) (const gsl_vector * x, const gsl_vector * v, void * params, + gsl_vector * fvv); + size_t n; /* number of functions */ + size_t p; /* number of independent variables */ + void * params; /* user parameters */ + size_t nevalf; /* number of function evaluations */ + size_t nevaldf; /* number of Jacobian evaluations */ + size_t nevalfvv; /* number of fvv evaluations */ +} gsl_multifit_nlinear_fdf; + +/* trust region subproblem method */ +typedef struct +{ + const char *name; + void * (*alloc) (const void * params, const size_t n, const size_t p); + int (*init) (const void * vtrust_state, void * vstate); + int (*preloop) (const void * vtrust_state, void * vstate); + int (*step) (const void * vtrust_state, const double delta, + gsl_vector * dx, void * vstate); + int (*preduction) (const void * vtrust_state, const gsl_vector * dx, + double * pred, void * vstate); + void (*free) (void * vstate); +} gsl_multifit_nlinear_trs; + +/* scaling matrix specification */ +typedef struct +{ + const char *name; + int (*init) (const gsl_matrix * J, gsl_vector * diag); + int (*update) (const gsl_matrix * J, gsl_vector * diag); +} gsl_multifit_nlinear_scale; + +/* + * linear least squares solvers - there are three steps to + * solving a least squares problem using a trust region + * method: + * + * 1. init: called once per iteration when a new Jacobian matrix + * is computed; perform factorization of Jacobian (qr,svd) + * or form normal equations matrix (cholesky) + * 2. presolve: called each time a new LM parameter value mu is available; + * used for cholesky method in order to factor + * the (J^T J + mu D^T D) matrix + * 3. solve: solve the least square system for a given rhs + */ +typedef struct +{ + const char *name; + void * (*alloc) (const size_t n, const size_t p); + int (*init) (const void * vtrust_state, void * vstate); + int (*presolve) (const double mu, const void * vtrust_state, void * vstate); + int (*solve) (const gsl_vector * f, gsl_vector * x, + const void * vtrust_state, void * vstate); + int (*rcond) (double * rcond, void * vstate); + void (*free) (void * vstate); +} gsl_multifit_nlinear_solver; + +/* tunable parameters */ +typedef struct +{ + const gsl_multifit_nlinear_trs *trs; /* trust region subproblem method */ + const gsl_multifit_nlinear_scale *scale; /* scaling method */ + const gsl_multifit_nlinear_solver *solver; /* solver method */ + gsl_multifit_nlinear_fdtype fdtype; /* finite difference method */ + double factor_up; /* factor for increasing trust radius */ + double factor_down; /* factor for decreasing trust radius */ + double avmax; /* max allowed |a|/|v| */ + double h_df; /* step size for finite difference Jacobian */ + double h_fvv; /* step size for finite difference fvv */ +} gsl_multifit_nlinear_parameters; + +typedef struct +{ + const char *name; + void * (*alloc) (const gsl_multifit_nlinear_parameters * params, + const size_t n, const size_t p); + int (*init) (void * state, const gsl_vector * wts, + gsl_multifit_nlinear_fdf * fdf, const gsl_vector * x, + gsl_vector * f, gsl_matrix * J, gsl_vector * g); + int (*iterate) (void * state, const gsl_vector * wts, + gsl_multifit_nlinear_fdf * fdf, gsl_vector * x, + gsl_vector * f, gsl_matrix * J, gsl_vector * g, + gsl_vector * dx); + int (*rcond) (double * rcond, void * state); + double (*avratio) (void * state); + void (*free) (void * state); +} gsl_multifit_nlinear_type; + +/* current state passed to low-level trust region algorithms */ +typedef struct +{ + const gsl_vector * x; /* parameter values x */ + const gsl_vector * f; /* residual vector f(x) */ + const gsl_vector * g; /* gradient J^T f */ + const gsl_matrix * J; /* Jacobian J(x) */ + const gsl_vector * diag; /* scaling matrix D */ + const gsl_vector * sqrt_wts; /* sqrt(diag(W)) or NULL for unweighted */ + const double *mu; /* LM parameter */ + const gsl_multifit_nlinear_parameters * params; + void *solver_state; /* workspace for linear least squares solver */ + gsl_multifit_nlinear_fdf * fdf; + double *avratio; /* |a| / |v| */ +} gsl_multifit_nlinear_trust_state; + +typedef struct +{ + const gsl_multifit_nlinear_type * type; + gsl_multifit_nlinear_fdf * fdf ; + gsl_vector * x; /* parameter values x */ + gsl_vector * f; /* residual vector f(x) */ + gsl_vector * dx; /* step dx */ + gsl_vector * g; /* gradient J^T f */ + gsl_matrix * J; /* Jacobian J(x) */ + gsl_vector * sqrt_wts_work; /* sqrt(W) */ + gsl_vector * sqrt_wts; /* ptr to sqrt_wts_work, or NULL if not using weights */ + size_t niter; /* number of iterations performed */ + gsl_multifit_nlinear_parameters params; + void *state; +} gsl_multifit_nlinear_workspace; + +gsl_multifit_nlinear_workspace * +gsl_multifit_nlinear_alloc (const gsl_multifit_nlinear_type * T, + const gsl_multifit_nlinear_parameters * params, + size_t n, size_t p); + +void gsl_multifit_nlinear_free (gsl_multifit_nlinear_workspace * w); + +gsl_multifit_nlinear_parameters gsl_multifit_nlinear_default_parameters(void); + +int +gsl_multifit_nlinear_init (const gsl_vector * x, + gsl_multifit_nlinear_fdf * fdf, + gsl_multifit_nlinear_workspace * w); + +int gsl_multifit_nlinear_winit (const gsl_vector * x, + const gsl_vector * wts, + gsl_multifit_nlinear_fdf * fdf, + gsl_multifit_nlinear_workspace * w); + +int +gsl_multifit_nlinear_iterate (gsl_multifit_nlinear_workspace * w); + +double +gsl_multifit_nlinear_avratio (const gsl_multifit_nlinear_workspace * w); + +int +gsl_multifit_nlinear_driver (const size_t maxiter, + const double xtol, + const double gtol, + const double ftol, + void (*callback)(const size_t iter, void *params, + const gsl_multifit_nlinear_workspace *w), + void *callback_params, + int *info, + gsl_multifit_nlinear_workspace * w); + +gsl_matrix * +gsl_multifit_nlinear_jac (const gsl_multifit_nlinear_workspace * w); + +const char * +gsl_multifit_nlinear_name (const gsl_multifit_nlinear_workspace * w); + +gsl_vector * +gsl_multifit_nlinear_position (const gsl_multifit_nlinear_workspace * w); + +gsl_vector * +gsl_multifit_nlinear_residual (const gsl_multifit_nlinear_workspace * w); + +size_t +gsl_multifit_nlinear_niter (const gsl_multifit_nlinear_workspace * w); + +int +gsl_multifit_nlinear_rcond (double *rcond, const gsl_multifit_nlinear_workspace * w); + +const char * +gsl_multifit_nlinear_trs_name (const gsl_multifit_nlinear_workspace * w); + +int gsl_multifit_nlinear_eval_f(gsl_multifit_nlinear_fdf *fdf, + const gsl_vector *x, + const gsl_vector *swts, + gsl_vector *y); + +int gsl_multifit_nlinear_eval_df(const gsl_vector *x, + const gsl_vector *f, + const gsl_vector *swts, + const double h, + const gsl_multifit_nlinear_fdtype fdtype, + gsl_multifit_nlinear_fdf *fdf, + gsl_matrix *df, gsl_vector *work); + +int +gsl_multifit_nlinear_eval_fvv(const double h, + const gsl_vector *x, + const gsl_vector *v, + const gsl_vector *f, + const gsl_matrix *J, + const gsl_vector *swts, + gsl_multifit_nlinear_fdf *fdf, + gsl_vector *yvv, gsl_vector *work); + +/* covar.c */ +int +gsl_multifit_nlinear_covar (const gsl_matrix * J, const double epsrel, + gsl_matrix * covar); + +/* convergence.c */ +int +gsl_multifit_nlinear_test (const double xtol, const double gtol, + const double ftol, int *info, + const gsl_multifit_nlinear_workspace * w); + +/* fdjac.c */ +int +gsl_multifit_nlinear_df(const double h, const gsl_multifit_nlinear_fdtype fdtype, + const gsl_vector *x, const gsl_vector *wts, + gsl_multifit_nlinear_fdf *fdf, + const gsl_vector *f, gsl_matrix *J, gsl_vector *work); + +/* fdfvv.c */ +int +gsl_multifit_nlinear_fdfvv(const double h, const gsl_vector *x, const gsl_vector *v, + const gsl_vector *f, const gsl_matrix *J, + const gsl_vector *swts, gsl_multifit_nlinear_fdf *fdf, + gsl_vector *fvv, gsl_vector *work); + +/* top-level algorithms */ +GSL_VAR const gsl_multifit_nlinear_type * gsl_multifit_nlinear_trust; + +/* trust region subproblem methods */ +GSL_VAR const gsl_multifit_nlinear_trs * gsl_multifit_nlinear_trs_lm; +GSL_VAR const gsl_multifit_nlinear_trs * gsl_multifit_nlinear_trs_lmaccel; +GSL_VAR const gsl_multifit_nlinear_trs * gsl_multifit_nlinear_trs_dogleg; +GSL_VAR const gsl_multifit_nlinear_trs * gsl_multifit_nlinear_trs_ddogleg; +GSL_VAR const gsl_multifit_nlinear_trs * gsl_multifit_nlinear_trs_subspace2D; + +/* scaling matrix strategies */ +GSL_VAR const gsl_multifit_nlinear_scale * gsl_multifit_nlinear_scale_levenberg; +GSL_VAR const gsl_multifit_nlinear_scale * gsl_multifit_nlinear_scale_marquardt; +GSL_VAR const gsl_multifit_nlinear_scale * gsl_multifit_nlinear_scale_more; + +/* linear solvers */ +GSL_VAR const gsl_multifit_nlinear_solver * gsl_multifit_nlinear_solver_cholesky; +GSL_VAR const gsl_multifit_nlinear_solver * gsl_multifit_nlinear_solver_qr; +GSL_VAR const gsl_multifit_nlinear_solver * gsl_multifit_nlinear_solver_svd; + +__END_DECLS + +#endif /* __GSL_MULTIFIT_NLINEAR_H__ */ diff --git a/gsl-2.5/multifit_nlinear/libgslmultifit_nlinear.la b/gsl-2.5/multifit_nlinear/libgslmultifit_nlinear.la new file mode 100644 index 00000000..8c5b81a9 --- /dev/null +++ b/gsl-2.5/multifit_nlinear/libgslmultifit_nlinear.la @@ -0,0 +1,41 @@ +# libgslmultifit_nlinear.la - a libtool library file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='' + +# Names of this library. +library_names='' + +# The name of the static archive. +old_library='libgslmultifit_nlinear.a' + +# Linker flags that can not go in dependency_libs. +inherited_linker_flags='' + +# Libraries that this one depends upon. +dependency_libs=' -lm' + +# Names of additional weak libraries provided by this library +weak_library_names='' + +# Version information for libgslmultifit_nlinear. +current= +age= +revision= + +# Is this an already installed library? +installed=no + +# Should we warn about portability when linking against -modules? +shouldnotlink=no + +# Files to dlopen/dlpreopen +dlopen='' +dlpreopen='' + +# Directory that this library needs to be installed in: +libdir='' diff --git a/gsl-2.5/multifit_nlinear/lm.c b/gsl-2.5/multifit_nlinear/lm.c new file mode 100644 index 00000000..b76f0d9f --- /dev/null +++ b/gsl-2.5/multifit_nlinear/lm.c @@ -0,0 +1,344 @@ +/* multifit_nlinear/lm.c + * + * Copyright (C) 2014, 2015, 2016 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/* + * This module contains an implementation of the Levenberg-Marquardt + * algorithm for nonlinear optimization problems. This implementation + * closely follows the following works: + * + * [1] H. B. Nielsen, K. Madsen, Introduction to Optimization and + * Data Fitting, Informatics and Mathematical Modeling, + * Technical University of Denmark (DTU), 2010. + * + * [2] J. J. More, The Levenberg-Marquardt Algorithm: Implementation + * and Theory, Lecture Notes in Mathematics, v630, 1978. + */ + +typedef struct +{ + size_t n; /* number of observations */ + size_t p; /* number of parameters */ + gsl_vector *fvv; /* D_v^2 f(x), size n */ + gsl_vector *vel; /* geodesic velocity (standard LM step), size p */ + gsl_vector *acc; /* geodesic acceleration, size p */ + gsl_vector *workp; /* workspace, length p */ + gsl_vector *workn; /* workspace, length n */ + + int accel; /* use geodesic acceleration? */ + + /* tunable parameters */ + gsl_multifit_nlinear_parameters params; +} lm_state_t; + +#include "common.c" + +static void *lm_alloc (const int accel, const void * params, const size_t n, const size_t p); +static void *lm_alloc_noaccel (const void * params, const size_t n, const size_t p); +static void *lm_alloc_accel (const void * params, const size_t n, const size_t p); +static void lm_free(void *vstate); +static int lm_init(const void *vtrust_state, void *vstate); +static int lm_preloop(const void * vtrust_state, void * vstate); +static int lm_step(const void * vtrust_state, const double delta, + gsl_vector * dx, void * vstate); +static int lm_preduction(const void * vtrust_state, const gsl_vector * dx, + double * pred, void * vstate); + +static void * +lm_alloc (const int accel, const void * params, const size_t n, const size_t p) +{ + const gsl_multifit_nlinear_parameters *mparams = (const gsl_multifit_nlinear_parameters *) params; + lm_state_t *state; + + state = calloc(1, sizeof(lm_state_t)); + if (state == NULL) + { + GSL_ERROR_NULL ("failed to allocate lm state", GSL_ENOMEM); + } + + state->workp = gsl_vector_alloc(p); + if (state->workp == NULL) + { + GSL_ERROR_NULL ("failed to allocate space for workp", GSL_ENOMEM); + } + + state->workn = gsl_vector_alloc(n); + if (state->workn == NULL) + { + GSL_ERROR_NULL ("failed to allocate space for workn", GSL_ENOMEM); + } + + state->fvv = gsl_vector_alloc(n); + if (state->fvv == NULL) + { + GSL_ERROR_NULL ("failed to allocate space for fvv", GSL_ENOMEM); + } + + state->vel = gsl_vector_alloc(p); + if (state->vel == NULL) + { + GSL_ERROR_NULL ("failed to allocate space for vel", GSL_ENOMEM); + } + + state->acc = gsl_vector_alloc(p); + if (state->acc == NULL) + { + GSL_ERROR_NULL ("failed to allocate space for acc", GSL_ENOMEM); + } + + state->n = n; + state->p = p; + state->params = *mparams; + state->accel = accel; + + return state; +} + +static void * +lm_alloc_noaccel (const void * params, const size_t n, const size_t p) +{ + return lm_alloc(0, params, n, p); +} + +static void * +lm_alloc_accel (const void * params, const size_t n, const size_t p) +{ + return lm_alloc(1, params, n, p); +} + +static void +lm_free(void *vstate) +{ + lm_state_t *state = (lm_state_t *) vstate; + + if (state->workp) + gsl_vector_free(state->workp); + + if (state->workn) + gsl_vector_free(state->workn); + + if (state->fvv) + gsl_vector_free(state->fvv); + + if (state->vel) + gsl_vector_free(state->vel); + + if (state->acc) + gsl_vector_free(state->acc); + + free(state); +} + +/* +lm_init() + Initialize LM solver + +Inputs: vtrust_state - trust state + vstate - workspace + +Return: success/error +*/ + +static int +lm_init(const void *vtrust_state, void *vstate) +{ + const gsl_multifit_nlinear_trust_state *trust_state = + (const gsl_multifit_nlinear_trust_state *) vtrust_state; + lm_state_t *state = (lm_state_t *) vstate; + + gsl_vector_set_zero(state->vel); + gsl_vector_set_zero(state->acc); + + *(trust_state->avratio) = 0.0; + + return GSL_SUCCESS; +} + +/* +lm_preloop() + Initialize LM method for new Jacobian matrix +*/ + +static int +lm_preloop(const void * vtrust_state, void * vstate) +{ + int status; + const gsl_multifit_nlinear_trust_state *trust_state = + (const gsl_multifit_nlinear_trust_state *) vtrust_state; + const gsl_multifit_nlinear_parameters *params = trust_state->params; + + (void)vstate; + + /* initialize linear least squares solver */ + status = (params->solver->init)(trust_state, trust_state->solver_state); + if (status) + return status; + + return GSL_SUCCESS; +} + +/* +lm_step() + Calculate a new step vector by solving the linear +least squares system: + +[ J ] v = - [ f ] +[ sqrt(mu) D ] [ 0 ] +*/ + +static int +lm_step(const void * vtrust_state, const double delta, + gsl_vector * dx, void * vstate) +{ + int status; + const gsl_multifit_nlinear_trust_state *trust_state = + (const gsl_multifit_nlinear_trust_state *) vtrust_state; + lm_state_t *state = (lm_state_t *) vstate; + const gsl_multifit_nlinear_parameters *params = trust_state->params; + const double mu = *(trust_state->mu); + + (void)delta; + + /* prepare the linear solver with current LM parameter mu */ + status = (params->solver->presolve)(mu, trust_state, trust_state->solver_state); + if (status) + return status; + + /* + * solve: [ J ] v = - [ f ] + * [ sqrt(mu)*D ] [ 0 ] + */ + status = (params->solver->solve)(trust_state->f, + state->vel, + trust_state, + trust_state->solver_state); + if (status) + return status; + + if (state->accel) + { + double anorm, vnorm; + + /* compute geodesic acceleration */ + status = gsl_multifit_nlinear_eval_fvv(params->h_fvv, + trust_state->x, + state->vel, + trust_state->f, + trust_state->J, + trust_state->sqrt_wts, + trust_state->fdf, + state->fvv, + state->workp); + if (status) + return status; + + /* + * solve: [ J ] a = - [ fvv ] + * [ sqrt(mu)*D ] [ 0 ] + */ + status = (params->solver->solve)(state->fvv, + state->acc, + trust_state, + trust_state->solver_state); + if (status) + return status; + + anorm = gsl_blas_dnrm2(state->acc); + vnorm = gsl_blas_dnrm2(state->vel); + + /* store |a| / |v| */ + *(trust_state->avratio) = anorm / vnorm; + } + + /* compute step dx = v + 1/2 a */ + scaled_addition(1.0, state->vel, 0.5, state->acc, dx); + + return GSL_SUCCESS; +} + +/* +lm_preduction() + Compute predicted reduction using Eq 4.4 of More 1978 +*/ + +static int +lm_preduction(const void * vtrust_state, const gsl_vector * dx, + double * pred, void * vstate) +{ + const gsl_multifit_nlinear_trust_state *trust_state = + (const gsl_multifit_nlinear_trust_state *) vtrust_state; + lm_state_t *state = (lm_state_t *) vstate; + const gsl_vector *diag = trust_state->diag; + const gsl_vector *p = state->vel; + const double norm_Dp = scaled_enorm(diag, p); + const double normf = gsl_blas_dnrm2(trust_state->f); + const double mu = *(trust_state->mu); + double norm_Jp; + double u, v; + + (void)dx; + + /* compute work = J*p */ + gsl_blas_dgemv(CblasNoTrans, 1.0, trust_state->J, p, 0.0, state->workn); + + /* compute ||J*p|| */ + norm_Jp = gsl_blas_dnrm2(state->workn); + + u = norm_Jp / normf; + v = norm_Dp / normf; + + *pred = u * u + 2.0 * mu * v * v; + + return GSL_SUCCESS; +} + +static const gsl_multifit_nlinear_trs lm_type = +{ + "levenberg-marquardt", + lm_alloc_noaccel, + lm_init, + lm_preloop, + lm_step, + lm_preduction, + lm_free +}; + +const gsl_multifit_nlinear_trs *gsl_multifit_nlinear_trs_lm = &lm_type; + +static const gsl_multifit_nlinear_trs lmaccel_type = +{ + "levenberg-marquardt+accel", + lm_alloc_accel, + lm_init, + lm_preloop, + lm_step, + lm_preduction, + lm_free +}; + +const gsl_multifit_nlinear_trs *gsl_multifit_nlinear_trs_lmaccel = &lmaccel_type; diff --git a/gsl-2.5/multifit_nlinear/lm.lo b/gsl-2.5/multifit_nlinear/lm.lo new file mode 100644 index 00000000..494ceff7 --- /dev/null +++ b/gsl-2.5/multifit_nlinear/lm.lo @@ -0,0 +1,12 @@ +# lm.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/lm.o' + +# Name of the non-PIC object +non_pic_object='lm.o' + diff --git a/gsl-2.5/multifit_nlinear/nielsen.c b/gsl-2.5/multifit_nlinear/nielsen.c new file mode 100644 index 00000000..73c0f150 --- /dev/null +++ b/gsl-2.5/multifit_nlinear/nielsen.c @@ -0,0 +1,101 @@ +/* multifit_nlinear/nielsen.c + * + * Copyright (C) 2016 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* + * This module contains routines for updating the Levenberg-Marquardt + * damping parameter on each iteration using Nielsen's method: + * + * [1] H. B. Nielsen, K. Madsen, Introduction to Optimization and + * Data Fitting, Informatics and Mathematical Modeling, + * Technical University of Denmark (DTU), 2010. + * + * 5 routines are needed to implement the update procedure: + * + * 1. accept - update parameter after a step has been accepted + * 2. reject - update parameter after a step has been rejected + * 3. free - free workspace state + */ + +#include +#include +#include +#include +#include +#include +#include +#include + +#define LM_ONE_THIRD (0.333333333333333) + +static int nielsen_init(const gsl_matrix * J, const gsl_vector * diag, + double * mu, long * nu); +static int nielsen_accept(const double rho, double * mu, long * nu); +static int nielsen_reject(double * mu, long * nu); + +static int +nielsen_init(const gsl_matrix * J, const gsl_vector * diag, + double * mu, long * nu) +{ + const double mu0 = 1.0e-3; + const size_t p = J->size2; + size_t j; + double max = -1.0; + + *nu = 2; + + /* set mu = mu0 * max(diag(J~^T J~)), with J~ = J D^{-1} */ + + for (j = 0; j < p; ++j) + { + gsl_vector_const_view v = gsl_matrix_const_column(J, j); + double dj = gsl_vector_get(diag, j); + double norm = gsl_blas_dnrm2(&v.vector) / dj; + max = GSL_MAX(max, norm); + } + + *mu = mu0 * max * max; + + return GSL_SUCCESS; +} + +static int +nielsen_accept(const double rho, double * mu, long * nu) +{ + double b; + + /* reset nu */ + *nu = 2; + + b = 2.0 * rho - 1.0; + b = 1.0 - b*b*b; + *mu *= GSL_MAX(LM_ONE_THIRD, b); + + return GSL_SUCCESS; +} + +static int +nielsen_reject(double * mu, long * nu) +{ + *mu *= (double) *nu; + + /* nu := 2*nu */ + *nu <<= 1; + + return GSL_SUCCESS; +} diff --git a/gsl-2.5/multifit_nlinear/qr.c b/gsl-2.5/multifit_nlinear/qr.c new file mode 100644 index 00000000..a865baf2 --- /dev/null +++ b/gsl-2.5/multifit_nlinear/qr.c @@ -0,0 +1,286 @@ +/* multifit_nlinear/qr.c + * + * Copyright (C) 2015, 2016 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* + * This module handles the solution of the linear least squares + * system: + * + * [ J~ ] p~ = - [ f ] + * [ sqrt(mu)*D~ ] [ 0 ] + * + * using a QR approach. Quantities are scaled according to: + * + * J~ = J S + * D~ = D S + * p~ = S^{-1} p + * + * where S is a diagonal matrix and S_jj = || J_j || and J_j is column + * j of the Jacobian. This balancing transformation seems to be more + * numerically stable for some Jacobians. + */ + +#include +#include +#include +#include +#include +#include +#include +#include + +#include "common.c" +#include "qrsolv.c" + +typedef struct +{ + size_t p; + gsl_matrix *QR; /* QR factorization of J */ + gsl_vector *tau_Q; /* Householder scalars for Q */ + gsl_matrix *T; /* workspace matrix for qrsolv, p-by-p */ + gsl_permutation *perm; /* permutation matrix */ + size_t rank; /* rank of J */ + gsl_vector *residual; /* residual of LS problem [ J; sqrt(mu) D ] p = - [ f; 0 ] */ + gsl_vector *qtf; /* Q^T f */ + gsl_vector *workn; /* workspace, length n */ + gsl_vector *workp; /* workspace, length p */ + gsl_vector *work3p; /* workspace, length 3*p */ + double mu; /* LM parameter */ +} qr_state_t; + +static int qr_init(const void * vtrust_state, void * vstate); +static int qr_presolve(const double mu, const void * vtrust_state, void * vstate); +static int qr_solve(const gsl_vector * f, gsl_vector *x, + const void * vtrust_state, void *vstate); +static int qr_rcond(double * rcond, void * vstate); + +static void * +qr_alloc (const size_t n, const size_t p) +{ + qr_state_t *state; + + (void)n; + + state = calloc(1, sizeof(qr_state_t)); + if (state == NULL) + { + GSL_ERROR_NULL ("failed to allocate qr state", GSL_ENOMEM); + } + + state->QR = gsl_matrix_alloc(n, p); + if (state->QR == NULL) + { + GSL_ERROR_NULL ("failed to allocate space for QR", GSL_ENOMEM); + } + + state->tau_Q = gsl_vector_alloc(p); + if (state->tau_Q == NULL) + { + GSL_ERROR_NULL ("failed to allocate space for tau_Q", + GSL_ENOMEM); + } + + state->T = gsl_matrix_alloc(p, p); + if (state->T == NULL) + { + GSL_ERROR_NULL ("failed to allocate space for T", GSL_ENOMEM); + } + + state->qtf = gsl_vector_alloc(n); + if (state->qtf == NULL) + { + GSL_ERROR_NULL ("failed to allocate space for qtf", + GSL_ENOMEM); + } + + state->residual = gsl_vector_alloc(n); + if (state->residual == NULL) + { + GSL_ERROR_NULL ("failed to allocate space for residual", + GSL_ENOMEM); + } + + state->perm = gsl_permutation_calloc(p); + if (state->perm == NULL) + { + GSL_ERROR_NULL ("failed to allocate space for perm", + GSL_ENOMEM); + } + + state->workn = gsl_vector_alloc(n); + if (state->workn == NULL) + { + GSL_ERROR_NULL ("failed to allocate space for workn", + GSL_ENOMEM); + } + + state->workp = gsl_vector_alloc(p); + if (state->workp == NULL) + { + GSL_ERROR_NULL ("failed to allocate space for workp", + GSL_ENOMEM); + } + + state->work3p = gsl_vector_alloc(3 * p); + if (state->work3p == NULL) + { + GSL_ERROR_NULL ("failed to allocate space for work3p", + GSL_ENOMEM); + } + + state->p = p; + state->mu = 0.0; + state->rank = 0; + + return state; +} + +static void +qr_free(void *vstate) +{ + qr_state_t *state = (qr_state_t *) vstate; + + if (state->QR) + gsl_matrix_free(state->QR); + + if (state->tau_Q) + gsl_vector_free(state->tau_Q); + + if (state->T) + gsl_matrix_free(state->T); + + if (state->qtf) + gsl_vector_free(state->qtf); + + if (state->residual) + gsl_vector_free(state->residual); + + if (state->perm) + gsl_permutation_free(state->perm); + + if (state->workn) + gsl_vector_free(state->workn); + + if (state->workp) + gsl_vector_free(state->workp); + + if (state->work3p) + gsl_vector_free(state->work3p); + + free(state); +} + +/* compute J = Q R PT */ +static int +qr_init(const void * vtrust_state, void * vstate) +{ + const gsl_multifit_nlinear_trust_state *trust_state = + (const gsl_multifit_nlinear_trust_state *) vtrust_state; + qr_state_t *state = (qr_state_t *) vstate; + int signum; + + /* perform QR decomposition of J */ + gsl_matrix_memcpy(state->QR, trust_state->J); + gsl_linalg_QRPT_decomp(state->QR, state->tau_Q, state->perm, + &signum, state->workp); + + return GSL_SUCCESS; +} + +static int +qr_presolve(const double mu, const void * vtrust_state, void * vstate) +{ + qr_state_t *state = (qr_state_t *) vstate; + + state->mu = mu; + + (void) vtrust_state; + + return GSL_SUCCESS; +} + +static int +qr_solve(const gsl_vector * f, gsl_vector *x, + const void * vtrust_state, void *vstate) +{ + qr_state_t *state = (qr_state_t *) vstate; + int status; + + if (state->mu == 0.0) + { + /* + * compute Gauss-Newton direction by solving + * J x = f + * with an attempt to identify rank deficiency in J + */ + size_t rank = gsl_linalg_QRPT_rank(state->QR, -1.0); + status = gsl_linalg_QRPT_lssolve2(state->QR, state->tau_Q, state->perm, + f, rank, x, state->residual); + } + else + { + /* + * solve: + * + * [ J ] x = [ f ] + * [ sqrt(mu) D ] [ 0 ] + * + * using QRPT factorization of J + */ + + const gsl_multifit_nlinear_trust_state *trust_state = + (const gsl_multifit_nlinear_trust_state *) vtrust_state; + double sqrt_mu = sqrt(state->mu); + + /* compute qtf = Q^T f */ + gsl_vector_memcpy(state->qtf, f); + gsl_linalg_QR_QTvec(state->QR, state->tau_Q, state->qtf); + + status = qrsolv(state->QR, state->perm, sqrt_mu, trust_state->diag, + state->qtf, state->T, x, state->workn); + } + + /* reverse step to go downhill */ + gsl_vector_scale(x, -1.0); + + return status; +} + +static int +qr_rcond(double * rcond, void * vstate) +{ + int status; + qr_state_t *state = (qr_state_t *) vstate; + + status = gsl_linalg_QRPT_rcond(state->QR, rcond, state->work3p); + + return status; +} + +static const gsl_multifit_nlinear_solver qr_type = +{ + "qr", + qr_alloc, + qr_init, + qr_presolve, + qr_solve, + qr_rcond, + qr_free +}; + +const gsl_multifit_nlinear_solver *gsl_multifit_nlinear_solver_qr = &qr_type; diff --git a/gsl-2.5/multifit_nlinear/qr.lo b/gsl-2.5/multifit_nlinear/qr.lo new file mode 100644 index 00000000..36e02dcc --- /dev/null +++ b/gsl-2.5/multifit_nlinear/qr.lo @@ -0,0 +1,12 @@ +# qr.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/qr.o' + +# Name of the non-PIC object +non_pic_object='qr.o' + diff --git a/gsl-2.5/multifit_nlinear/qrsolv.c b/gsl-2.5/multifit_nlinear/qrsolv.c new file mode 100644 index 00000000..493f19d3 --- /dev/null +++ b/gsl-2.5/multifit_nlinear/qrsolv.c @@ -0,0 +1,217 @@ +/* This function computes the solution to the least squares system + + phi = [ A x = b , lambda D x = 0 ]^2 + + where A is an M by N matrix, D is an N by N diagonal matrix, lambda + is a scalar parameter and b is a vector of length M. + + The function requires the factorization of A into A = Q R P^T, + where Q is an orthogonal matrix, R is an upper triangular matrix + with diagonal elements of non-increasing magnitude and P is a + permuation matrix. The system above is then equivalent to + + [ R z = Q^T b, P^T (lambda D) P z = 0 ] + + where x = P z. If this system does not have full rank then a least + squares solution is obtained. On output the function also provides + an upper triangular matrix S such that + + P^T (A^T A + lambda^2 D^T D) P = S^T S + + Parameters, + + r: On input, contains the full upper triangle of R. The diagonal + elements are modified but restored on output. The full + upper triangle of R is not modified. + + p: the encoded form of the permutation matrix P. column j of P is + column p[j] of the identity matrix. + + lambda, diag: contains the scalar lambda and the diagonal elements + of the matrix D + + qtb: contains the product Q^T b + + S: on output contains the matrix S, n-by-n + + x: on output contains the least squares solution of the system + + work: is a workspace of length N + + */ + +static int +qrsolv (gsl_matrix * r, const gsl_permutation * p, const double lambda, + const gsl_vector * diag, const gsl_vector * qtb, + gsl_matrix * S, gsl_vector * x, gsl_vector * work) +{ + size_t n = r->size2; + + size_t i, j, k, nsing; + + /* Copy r and qtb to preserve input and initialise s. In particular, + save the diagonal elements of r in x */ + + for (j = 0; j < n; j++) + { + double rjj = gsl_matrix_get (r, j, j); + double qtbj = gsl_vector_get (qtb, j); + + for (i = j + 1; i < n; i++) + { + double rji = gsl_matrix_get (r, j, i); + gsl_matrix_set (S, i, j, rji); + } + + gsl_vector_set (x, j, rjj); + gsl_vector_set (work, j, qtbj); + } + + /* Eliminate the diagonal matrix d using a Givens rotation */ + + for (j = 0; j < n; j++) + { + double qtbpj; + + size_t pj = gsl_permutation_get (p, j); + + double diagpj = lambda * gsl_vector_get (diag, pj); + + if (diagpj == 0) + { + continue; + } + + gsl_matrix_set (S, j, j, diagpj); + + for (k = j + 1; k < n; k++) + { + gsl_matrix_set (S, k, k, 0.0); + } + + /* The transformations to eliminate the row of d modify only a + single element of qtb beyond the first n, which is initially + zero */ + + qtbpj = 0; + + for (k = j; k < n; k++) + { + /* Determine a Givens rotation which eliminates the + appropriate element in the current row of d */ + + double sine, cosine; + + double wk = gsl_vector_get (work, k); + double rkk = gsl_matrix_get (r, k, k); + double skk = gsl_matrix_get (S, k, k); + + if (skk == 0) + { + continue; + } + + if (fabs (rkk) < fabs (skk)) + { + double cotangent = rkk / skk; + sine = 0.5 / sqrt (0.25 + 0.25 * cotangent * cotangent); + cosine = sine * cotangent; + } + else + { + double tangent = skk / rkk; + cosine = 0.5 / sqrt (0.25 + 0.25 * tangent * tangent); + sine = cosine * tangent; + } + + /* Compute the modified diagonal element of r and the + modified element of [qtb,0] */ + + { + double new_rkk = cosine * rkk + sine * skk; + double new_wk = cosine * wk + sine * qtbpj; + + qtbpj = -sine * wk + cosine * qtbpj; + + gsl_matrix_set(r, k, k, new_rkk); + gsl_matrix_set(S, k, k, new_rkk); + gsl_vector_set(work, k, new_wk); + } + + /* Accumulate the transformation in the row of s */ + + for (i = k + 1; i < n; i++) + { + double sik = gsl_matrix_get (S, i, k); + double sii = gsl_matrix_get (S, i, i); + + double new_sik = cosine * sik + sine * sii; + double new_sii = -sine * sik + cosine * sii; + + gsl_matrix_set(S, i, k, new_sik); + gsl_matrix_set(S, i, i, new_sii); + } + } + + /* Store the corresponding diagonal element of s and restore the + corresponding diagonal element of r */ + + { + double xj = gsl_vector_get(x, j); + gsl_matrix_set (r, j, j, xj); + } + + } + + /* Solve the triangular system for z. If the system is singular then + obtain a least squares solution */ + + nsing = n; + + for (j = 0; j < n; j++) + { + double sjj = gsl_matrix_get (S, j, j); + + if (sjj == 0) + { + nsing = j; + break; + } + } + + for (j = nsing; j < n; j++) + { + gsl_vector_set (work, j, 0.0); + } + + for (k = 0; k < nsing; k++) + { + double sum = 0; + + j = (nsing - 1) - k; + + for (i = j + 1; i < nsing; i++) + { + sum += gsl_matrix_get(S, i, j) * gsl_vector_get(work, i); + } + + { + double wj = gsl_vector_get (work, j); + double sjj = gsl_matrix_get (S, j, j); + + gsl_vector_set (work, j, (wj - sum) / sjj); + } + } + + /* Permute the components of z back to the components of x */ + + for (j = 0; j < n; j++) + { + size_t pj = gsl_permutation_get (p, j); + double wj = gsl_vector_get (work, j); + + gsl_vector_set (x, pj, wj); + } + + return GSL_SUCCESS; +} diff --git a/gsl-2.5/multifit_nlinear/scaling.c b/gsl-2.5/multifit_nlinear/scaling.c new file mode 100644 index 00000000..fc2efda7 --- /dev/null +++ b/gsl-2.5/multifit_nlinear/scaling.c @@ -0,0 +1,158 @@ +/* multifit_nlinear/scaling.c + * + * Copyright (C) 2015, 2016 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* + * This module handles the updating of the scaling matrix D_k in the + * trust region subproblem: + * + * min m_k (dx), || D_k dx || <= Delta_k + * + * where m_k(dx) is a model which approximates the cost function + * F(x_k + dx) near the current iteration point x_k + * + * D_k can be updated according to several different strategies. + */ + +#include +#include +#include +#include +#include +#include +#include +#include + +static int init_diag_levenberg(const gsl_matrix * J, gsl_vector * diag); +static int update_diag_levenberg(const gsl_matrix * J, + gsl_vector * diag); + +static int init_diag_marquardt(const gsl_matrix * J, gsl_vector * diag); +static int update_diag_marquardt (const gsl_matrix * J, + gsl_vector * diag); + +static int init_diag_more(const gsl_matrix * J, gsl_vector * diag); +static int update_diag_more(const gsl_matrix * J, gsl_vector * diag); + +/* Levenberg scaling, D = I */ +static int +init_diag_levenberg(const gsl_matrix * J, gsl_vector * diag) +{ + (void)J; /* avoid unused parameter warning */ + gsl_vector_set_all(diag, 1.0); + return GSL_SUCCESS; +} + +static int +update_diag_levenberg(const gsl_matrix * J, gsl_vector * diag) +{ + (void)J; /* avoid unused parameter warning */ + (void)diag; /* avoid unused parameter warning */ + + /* nothing to do */ + return GSL_SUCCESS; +} + +/* initialize diagonal scaling matrix D according to Marquardt method */ +static int +init_diag_marquardt(const gsl_matrix * J, gsl_vector * diag) +{ + return update_diag_marquardt(J, diag); +} + +/* update diagonal scaling matrix D according to Marquardt method */ +static int +update_diag_marquardt (const gsl_matrix * J, gsl_vector * diag) +{ + const size_t p = J->size2; + size_t j; + + for (j = 0; j < p; j++) + { + gsl_vector_const_view v = gsl_matrix_const_column(J, j); + double norm = gsl_blas_dnrm2(&v.vector); + + if (norm == 0.0) + norm = 1.0; + + gsl_vector_set(diag, j, norm); + } + + return GSL_SUCCESS; +} + +/* initialize diagonal scaling matrix D according to Eq 6.3 of + * More, 1978 */ +static int +init_diag_more(const gsl_matrix * J, gsl_vector * diag) +{ + int status; + + gsl_vector_set_zero(diag); + status = update_diag_more(J, diag); + + return status; +} + +/* update diagonal scaling matrix D according to Eq. 6.3 of + * More, 1978 */ +static int +update_diag_more (const gsl_matrix * J, gsl_vector * diag) +{ + const size_t p = J->size2; + size_t j; + + for (j = 0; j < p; j++) + { + gsl_vector_const_view v = gsl_matrix_const_column(J, j); + double norm = gsl_blas_dnrm2(&v.vector); + double *diagj = gsl_vector_ptr(diag, j); + + if (norm == 0.0) + norm = 1.0; + + *diagj = GSL_MAX(*diagj, norm); + } + + return GSL_SUCCESS; +} + +static const gsl_multifit_nlinear_scale levenberg_type = +{ + "levenberg", + init_diag_levenberg, + update_diag_levenberg +}; + +static const gsl_multifit_nlinear_scale marquardt_type = +{ + "marquardt", + init_diag_marquardt, + update_diag_marquardt +}; + +static const gsl_multifit_nlinear_scale more_type = +{ + "more", + init_diag_more, + update_diag_more +}; + +const gsl_multifit_nlinear_scale *gsl_multifit_nlinear_scale_levenberg = &levenberg_type; +const gsl_multifit_nlinear_scale *gsl_multifit_nlinear_scale_marquardt = &marquardt_type; +const gsl_multifit_nlinear_scale *gsl_multifit_nlinear_scale_more = &more_type; diff --git a/gsl-2.5/multifit_nlinear/scaling.lo b/gsl-2.5/multifit_nlinear/scaling.lo new file mode 100644 index 00000000..c393bd66 --- /dev/null +++ b/gsl-2.5/multifit_nlinear/scaling.lo @@ -0,0 +1,12 @@ +# scaling.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/scaling.o' + +# Name of the non-PIC object +non_pic_object='scaling.o' + diff --git a/gsl-2.5/multifit_nlinear/subspace2D.c b/gsl-2.5/multifit_nlinear/subspace2D.c new file mode 100644 index 00000000..1c532783 --- /dev/null +++ b/gsl-2.5/multifit_nlinear/subspace2D.c @@ -0,0 +1,711 @@ +/* multifit_nlinear/subspace2D.c + * + * Copyright (C) 2016 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/* + * This module implements a 2D subspace trust region subproblem method, + * as outlined in + * + * [1] G. A. Shultz, R. B. Schnabel, and R. H. Byrd + * A Family of Trust-Region-Based Algorithms for Unconstrained + * Minimization with Strong Global Convergence Properties, + * SIAM Journal on Numerical Analysis 1985 22:1, 47-67 + * + * [2] R. H. Byrd, R. B. Schnabel, G. A. Shultz, + * Approximate solution of the trust region problem by + * minimization over two-dimensional subspaces, + * Mathematical Programming, January 1988, Volume 40, + * Issue 1, pp 247-263 + * + * The idea is to solve: + * + * min_{dx} g^T dx + 1/2 dx^T B dx + * + * with constraints: + * + * ||D dx|| <= delta + * dx \in span{dx_sd, dx_gn} + * + * where B is the Hessian matrix, B = J^T J + * + * The steps are as follows: + * + * 1. preloop: + * a. Compute Gauss-Newton and steepest descent vectors, + * dx_gn, dx_sd + * b. Compute an orthonormal basis for span(D dx_sd, D dx_gn) by + * constructing W = [ D dx_sd, D dx_gn ] and performing a QR + * decomposition of W. The 2 columns of the Q matrix + * will then span the column space of W. W should have rank 2 + * unless D*dx_sd and D*dx_gn are parallel, in which case it will + * have rank 1. + * c. Precompute various quantities needed for the step calculation + * + * 2. step: + * a. If the Gauss-Newton step is inside the trust region, use it + * b. if W has rank 1, we cannot form a 2D subspace, so in this case + * follow the steepest descent direction to the trust region boundary + * and use that as the step. + * c. In the full rank 2 case, if the GN point is outside the trust region, + * then the minimizer of the objective function lies on the trust + * region boundary. Therefore the minimization problem becomes: + * + * min_{dx} g^T dx + 1/2 dx^T B dx, with ||dx|| = delta, dx = Q * x + * + * where x is a 2-vector to be determined and the columns of Q are + * the orthonormal basis vectors of the subspace. Note the equality + * constraint now instead of <=. In terms of the new variable x, + * the minimization problem becomes: + * + * min_x subg^T x + 1/2 x^T subB x, with ||Q*x|| = ||x|| = delta + * + * where: + * subg = Q^T g (2-by-1) + * subB = Q^T B Q (2-by-2) + * + * This equality constrained 2D minimization problem can be solved + * with a Lagrangian multiplier, which results in a 4th degree polynomial + * equation to be solved. The equation is: + * + * lambda^4 1 + * + lambda^3 2 tr(B) + * + lambda^2 (tr(B)^2 + 2 det(B) - g^T g / delta^2) + * + lambda^1 (2 det(B) tr(B) - 2 g^T adj(B)^T g / delta^2) + * + lambda^0 (det(B)^2 - g^T adj(B)^T adj(B) g / delta^2) + * + * where adj(B) is the adjugate matrix of B. + * + * We then check each of the 4 solutions for lambda to determine which + * lambda results in the smallest objective function value. This x + * is then used to construct the final step: dx = Q*x + */ + +typedef struct +{ + size_t n; /* number of observations */ + size_t p; /* number of parameters */ + gsl_vector *dx_gn; /* Gauss-Newton step, size p */ + gsl_vector *dx_sd; /* steepest descent step, size p */ + double norm_Dgn; /* || D dx_gn || */ + double norm_Dsd; /* || D dx_sd || */ + gsl_vector *workp; /* workspace, length p */ + gsl_vector *workn; /* workspace, length n */ + gsl_matrix *W; /* orthonormal basis for 2D subspace, p-by-2 */ + gsl_matrix *JQ; /* J * Q, n-by-p */ + gsl_vector *tau; /* Householder scalars */ + gsl_vector *subg; /* subspace gradient = W^T g, 2-by-1 */ + gsl_matrix *subB; /* subspace Hessian = W^T B W, 2-by-2 */ + gsl_permutation *perm; /* permutation matrix */ + + double trB; /* Tr(subB) */ + double detB; /* det(subB) */ + double normg; /* || subg || */ + double term0; /* g^T adj(B)^T adj(B) g */ + double term1; /* g^T adj(B)^T g */ + + size_t rank; /* rank of [ dx_sd, dx_gn ] matrix */ + + gsl_poly_complex_workspace *poly_p; + + /* tunable parameters */ + gsl_multifit_nlinear_parameters params; +} subspace2D_state_t; + +#include "common.c" + +static void * subspace2D_alloc (const void * params, const size_t n, const size_t p); +static void subspace2D_free(void *vstate); +static int subspace2D_init(const void *vtrust_state, void *vstate); +static int subspace2D_preloop(const void * vtrust_state, void * vstate); +static int subspace2D_step(const void * vtrust_state, const double delta, + gsl_vector * dx, void * vstate); +static int subspace2D_preduction(const void * vtrust_state, const gsl_vector * dx, + double * pred, void * vstate); +static int subspace2D_solution(const double lambda, gsl_vector * x, + subspace2D_state_t * state); +static double subspace2D_objective(const gsl_vector * x, subspace2D_state_t * state); +static int subspace2D_calc_gn(const gsl_multifit_nlinear_trust_state * trust_state, gsl_vector * dx); +static int subspace2D_calc_sd(const gsl_multifit_nlinear_trust_state * trust_state, gsl_vector * dx, + subspace2D_state_t * state); + +static void * +subspace2D_alloc (const void * params, const size_t n, const size_t p) +{ + const gsl_multifit_nlinear_parameters *par = (const gsl_multifit_nlinear_parameters *) params; + subspace2D_state_t *state; + + state = calloc(1, sizeof(subspace2D_state_t)); + if (state == NULL) + { + GSL_ERROR_NULL ("failed to allocate subspace2D state", GSL_ENOMEM); + } + + state->dx_gn = gsl_vector_alloc(p); + if (state->dx_gn == NULL) + { + GSL_ERROR_NULL ("failed to allocate space for dx_gn", GSL_ENOMEM); + } + + state->dx_sd = gsl_vector_alloc(p); + if (state->dx_sd == NULL) + { + GSL_ERROR_NULL ("failed to allocate space for dx_sd", GSL_ENOMEM); + } + + state->workp = gsl_vector_alloc(p); + if (state->workp == NULL) + { + GSL_ERROR_NULL ("failed to allocate space for workp", GSL_ENOMEM); + } + + state->workn = gsl_vector_alloc(n); + if (state->workn == NULL) + { + GSL_ERROR_NULL ("failed to allocate space for workn", GSL_ENOMEM); + } + + state->W = gsl_matrix_alloc(p, 2); + if (state->W == NULL) + { + GSL_ERROR_NULL ("failed to allocate space for W", GSL_ENOMEM); + } + + state->JQ = gsl_matrix_alloc(n, p); + if (state->JQ == NULL) + { + GSL_ERROR_NULL ("failed to allocate space for JQ", GSL_ENOMEM); + } + + state->tau = gsl_vector_alloc(2); + if (state->tau == NULL) + { + GSL_ERROR_NULL ("failed to allocate space for tau", GSL_ENOMEM); + } + + state->subg = gsl_vector_alloc(2); + if (state->subg == NULL) + { + GSL_ERROR_NULL ("failed to allocate space for subg", GSL_ENOMEM); + } + + state->subB = gsl_matrix_alloc(2, 2); + if (state->subB == NULL) + { + GSL_ERROR_NULL ("failed to allocate space for subB", GSL_ENOMEM); + } + + state->perm = gsl_permutation_alloc(2); + if (state->perm == NULL) + { + GSL_ERROR_NULL ("failed to allocate space for perm", GSL_ENOMEM); + } + + state->poly_p = gsl_poly_complex_workspace_alloc(5); + if (state->poly_p == NULL) + { + GSL_ERROR_NULL ("failed to allocate space for poly workspace", GSL_ENOMEM); + } + + state->n = n; + state->p = p; + state->rank = 0; + state->params = *par; + + return state; +} + +static void +subspace2D_free(void *vstate) +{ + subspace2D_state_t *state = (subspace2D_state_t *) vstate; + + if (state->dx_gn) + gsl_vector_free(state->dx_gn); + + if (state->dx_sd) + gsl_vector_free(state->dx_sd); + + if (state->workp) + gsl_vector_free(state->workp); + + if (state->workn) + gsl_vector_free(state->workn); + + if (state->W) + gsl_matrix_free(state->W); + + if (state->JQ) + gsl_matrix_free(state->JQ); + + if (state->tau) + gsl_vector_free(state->tau); + + if (state->subg) + gsl_vector_free(state->subg); + + if (state->subB) + gsl_matrix_free(state->subB); + + if (state->perm) + gsl_permutation_free(state->perm); + + if (state->poly_p) + gsl_poly_complex_workspace_free(state->poly_p); + + free(state); +} + +/* +subspace2D_init() + Initialize subspace2D solver + +Inputs: vtrust_state - trust state + vstate - workspace + +Return: success/error +*/ + +static int +subspace2D_init(const void *vtrust_state, void *vstate) +{ + (void)vtrust_state; + (void)vstate; + + return GSL_SUCCESS; +} + +/* +subspace2D_preloop() + Initialize subspace2D method prior to iteration loop. +This involves computing the Gauss-Newton step and +steepest descent step + +Notes: on output, +1) state->dx_gn contains Gauss-Newton step +2) state->dx_sd contains steepest descent step +3) state->rank contains the rank([dx_sd, dx_gn]) +4) if full rank subspace (rank = 2), then: + state->trB = Tr(subB) + state->detB = det(subB) + state->normg = || subg || +*/ + +static int +subspace2D_preloop(const void * vtrust_state, void * vstate) +{ + int status; + const gsl_multifit_nlinear_trust_state *trust_state = + (const gsl_multifit_nlinear_trust_state *) vtrust_state; + subspace2D_state_t *state = (subspace2D_state_t *) vstate; + gsl_vector_view v; + double work_data[2]; + gsl_vector_view work = gsl_vector_view_array(work_data, 2); + int signum; + + /* calculate Gauss-Newton step */ + status = subspace2D_calc_gn(trust_state, state->dx_gn); + if (status) + return status; + + /* now calculate the steepest descent step */ + status = subspace2D_calc_sd(trust_state, state->dx_sd, state); + if (status) + return status; + + /* store norms */ + state->norm_Dgn = scaled_enorm(trust_state->diag, state->dx_gn); + state->norm_Dsd = scaled_enorm(trust_state->diag, state->dx_sd); + + /* + * now compute orthonormal basis for span(D dx_sd, D dx_gn) using + * QR decomposition; set W = [ D dx_sd, D dx_gn ] and normalize each + * column to unit magnitude. Then the Q matrix will form a basis for Col(W) + */ + + v = gsl_matrix_column(state->W, 0); + gsl_vector_memcpy(&v.vector, state->dx_sd); + gsl_vector_mul(&v.vector, trust_state->diag); + if (state->norm_Dsd != 0) + gsl_vector_scale(&v.vector, 1.0 / state->norm_Dsd); + + v = gsl_matrix_column(state->W, 1); + gsl_vector_memcpy(&v.vector, state->dx_gn); + gsl_vector_mul(&v.vector, trust_state->diag); + if (state->norm_Dgn != 0) + gsl_vector_scale(&v.vector, 1.0 / state->norm_Dgn); + + /* use a rank revealing QR decomposition in case dx_sd and dx_gn + * are parallel */ + gsl_linalg_QRPT_decomp(state->W, state->tau, state->perm, &signum, &work.vector); + + /* check for parallel dx_sd, dx_gn, in which case rank will be 1 */ + state->rank = gsl_linalg_QRPT_rank(state->W, -1.0); + + if (state->rank == 2) + { + /* + * full rank subspace, compute: + * subg = Q^T D^{-1} g + * subB = Q^T D^{-1} B D^{-1} Q where B = J^T J + */ + const size_t p = state->p; + size_t i; + gsl_matrix_view JQ = gsl_matrix_submatrix(state->JQ, 0, 0, state->n, GSL_MIN(2, p)); + double B00, B10, B11, g0, g1; + + /* compute subg */ + gsl_vector_memcpy(state->workp, trust_state->g); + gsl_vector_div(state->workp, trust_state->diag); + gsl_linalg_QR_QTvec(state->W, state->tau, state->workp); + + g0 = gsl_vector_get(state->workp, 0); + g1 = gsl_vector_get(state->workp, 1); + + gsl_vector_set(state->subg, 0, g0); + gsl_vector_set(state->subg, 1, g1); + + /* compute subB */ + + /* compute J D^{-1} */ + gsl_matrix_memcpy(state->JQ, trust_state->J); + + for (i = 0; i < p; ++i) + { + gsl_vector_view c = gsl_matrix_column(state->JQ, i); + double di = gsl_vector_get(trust_state->diag, i); + gsl_vector_scale(&c.vector, 1.0 / di); + } + + /* compute J D^{-1} Q */ + gsl_linalg_QR_matQ(state->W, state->tau, state->JQ); + + /* compute subB = Q^T D^{-1} J^T J D^{-1} Q */ + gsl_blas_dsyrk(CblasLower, CblasTrans, 1.0, &JQ.matrix, 0.0, state->subB); + + B00 = gsl_matrix_get(state->subB, 0, 0); + B10 = gsl_matrix_get(state->subB, 1, 0); + B11 = gsl_matrix_get(state->subB, 1, 1); + + state->trB = B00 + B11; + state->detB = B00*B11 - B10*B10; + state->normg = gsl_blas_dnrm2(state->subg); + + /* g^T adj(B)^T adj(B) g */ + state->term0 = (B10*B10 + B11*B11)*g0*g0 - + 2*B10*(B00 + B11)*g0*g1 + + (B00*B00 + B10*B10)*g1*g1; + + /* g^T adj(B)^T g */ + state->term1 = B11 * g0 * g0 + g1 * (B00*g1 - 2*B10*g0); + + } + + return GSL_SUCCESS; +} + + +/* +subspace2D_step() + Calculate a new step with 2D subspace method. Based on [1]. We +seek a vector dx in span{dx_gn, dx_sd} which minimizes the model +function subject to ||dx|| <= delta +*/ + +static int +subspace2D_step(const void * vtrust_state, const double delta, + gsl_vector * dx, void * vstate) +{ + const gsl_multifit_nlinear_trust_state *trust_state = + (const gsl_multifit_nlinear_trust_state *) vtrust_state; + subspace2D_state_t *state = (subspace2D_state_t *) vstate; + + if (state->norm_Dgn <= delta) + { + /* Gauss-Newton step is inside trust region, use it as final step + * since it is the global minimizer of the quadratic model function */ + gsl_vector_memcpy(dx, state->dx_gn); + } + else if (state->rank < 2) + { + /* rank of [dx_sd, dx_gn] is 1, meaning dx_sd and dx_gn + * are parallel so we can't form a 2D subspace. Follow the steepest + * descent direction to the trust region boundary as our step */ + gsl_vector_memcpy(dx, state->dx_sd); + gsl_vector_scale(dx, delta / state->norm_Dsd); + } + else + { + int status; + const double delta_sq = delta * delta; + double u = state->normg / delta; + double a[5]; + double z[8]; + +#if 1 + a[0] = state->detB * state->detB - state->term0 / delta_sq; + a[1] = 2 * state->detB * state->trB - 2 * state->term1 / delta_sq; + a[2] = state->trB * state->trB + 2 * state->detB - u * u; + a[3] = 2 * state->trB; + a[4] = 1.0; +#else + double TrB_D = state->trB * delta; + double detB_D = state->detB * delta; + double normg_sq = state->normg * state->normg; + + a[0] = detB_D * detB_D - state->term0; + a[1] = 2 * state->detB * state->trB * delta_sq - 2 * state->term1; + a[2] = TrB_D * TrB_D + 2 * state->detB * delta_sq - normg_sq; + a[3] = 2 * state->trB * delta_sq; + a[4] = delta_sq; +#endif + + status = gsl_poly_complex_solve(a, 5, state->poly_p, z); + if (status == GSL_SUCCESS) + { + size_t i; + double min = 0.0; + int mini = -1; + double x_data[2]; + gsl_vector_view x = gsl_vector_view_array(x_data, 2); + + /* + * loop through all four values of the Lagrange multiplier + * lambda. For each lambda, evaluate the objective function + * with Re(lambda) to determine which lambda minimizes the + * function + */ + for (i = 0; i < 4; ++i) + { + double cost, normx; + + /*fprintf(stderr, "root: %.12e + %.12e i\n", + z[2*i], z[2*i+1]);*/ + + status = subspace2D_solution(z[2*i], &x.vector, state); + if (status != GSL_SUCCESS) + continue; /* singular matrix system */ + + /* ensure ||x|| = delta */ + + normx = gsl_blas_dnrm2(&x.vector); + if (normx == 0.0) + continue; + + gsl_vector_scale(&x.vector, delta / normx); + + /* evaluate objective function to determine minimizer */ + cost = subspace2D_objective(&x.vector, state); + if (mini < 0 || cost < min) + { + mini = (int) i; + min = cost; + } + } + + if (mini < 0) + { + /* did not find minimizer - should not get here */ + return GSL_FAILURE; + } + else + { + /* compute x which minimizes objective function */ + subspace2D_solution(z[2*mini], &x.vector, state); + + /* dx = Q * x */ + gsl_vector_set_zero(dx); + gsl_vector_set(dx, 0, gsl_vector_get(&x.vector, 0)); + gsl_vector_set(dx, 1, gsl_vector_get(&x.vector, 1)); + gsl_linalg_QR_Qvec(state->W, state->tau, dx); + + /* compute final dx by multiplying by D^{-1} */ + gsl_vector_div(dx, trust_state->diag); + } + } + else + { + GSL_ERROR ("gsl_poly_complex_solve failed", status); + } + } + + return GSL_SUCCESS; +} + +static int +subspace2D_preduction(const void * vtrust_state, const gsl_vector * dx, + double * pred, void * vstate) +{ + const gsl_multifit_nlinear_trust_state *trust_state = + (const gsl_multifit_nlinear_trust_state *) vtrust_state; + subspace2D_state_t *state = (subspace2D_state_t *) vstate; + + *pred = quadratic_preduction(trust_state->f, trust_state->J, dx, state->workn); + + return GSL_SUCCESS; +} + +/* solve 2D subspace problem: (B + lambda*I) x = -g */ +static int +subspace2D_solution(const double lambda, gsl_vector * x, + subspace2D_state_t * state) +{ + int status = GSL_SUCCESS; + double C_data[4]; + gsl_matrix_view C = gsl_matrix_view_array(C_data, 2, 2); + double B00 = gsl_matrix_get(state->subB, 0, 0); + double B10 = gsl_matrix_get(state->subB, 1, 0); + double B11 = gsl_matrix_get(state->subB, 1, 1); + + /* construct C = B + lambda*I */ + gsl_matrix_set(&C.matrix, 0, 0, B00 + lambda); + gsl_matrix_set(&C.matrix, 1, 0, B10); + gsl_matrix_set(&C.matrix, 0, 1, B10); + gsl_matrix_set(&C.matrix, 1, 1, B11 + lambda); + + /* use modified Cholesky in case C is not positive definite */ + gsl_linalg_mcholesky_decomp(&C.matrix, state->perm, NULL); + gsl_linalg_mcholesky_solve(&C.matrix, state->perm, state->subg, x); + + gsl_vector_scale(x, -1.0); + + return status; +} + +/* evaluate 2D objective function: f(x) = g^T x + 1/2 x^T B x */ +static double +subspace2D_objective(const gsl_vector * x, subspace2D_state_t * state) +{ + double f; + double y_data[2]; + gsl_vector_view y = gsl_vector_view_array(y_data, 2); + + /* compute: y = g + 1/2 B x */ + gsl_vector_memcpy(&y.vector, state->subg); + gsl_blas_dsymv(CblasLower, 0.5, state->subB, x, 1.0, &y.vector); + + /* compute: f = x^T ( g + 1/2 B x ) */ + gsl_blas_ddot(x, &y.vector, &f); + + return f; +} + +/* +subspace2D_calc_gn() + Calculate Gauss-Newton step which satisfies: + +J dx_gn = -f + +Inputs: trust_state - trust state variables + dx - (output) Gauss-Newton step + +Return: success/error +*/ + +static int +subspace2D_calc_gn(const gsl_multifit_nlinear_trust_state * trust_state, gsl_vector * dx) +{ + int status; + const gsl_multifit_nlinear_parameters *params = trust_state->params; + + /* initialize linear least squares solver */ + status = (params->solver->init)(trust_state, trust_state->solver_state); + if (status) + return status; + + /* prepare the linear solver to compute Gauss-Newton step */ + status = (params->solver->presolve)(0.0, trust_state, trust_state->solver_state); + if (status) + return status; + + /* solve: J dx_gn = -f for Gauss-Newton step */ + status = (params->solver->solve)(trust_state->f, + dx, + trust_state, + trust_state->solver_state); + if (status) + return status; + + return GSL_SUCCESS; +} + +/* +subspace2D_calc_sd() + Calculate steepest descent step, + +dx_sd = - || D^{-1} g ||^2 / || J D^{-2} g ||^2 D^{-2} g + +Inputs: trust_state - trust state variables + dx - (output) steepest descent vector + state - workspace + +Return: success/error +*/ + +static int +subspace2D_calc_sd(const gsl_multifit_nlinear_trust_state * trust_state, gsl_vector * dx, + subspace2D_state_t * state) +{ + double norm_Dinvg; /* || D^{-1} g || */ + double norm_JDinv2g; /* || J D^{-2} g || */ + double alpha; /* || D^{-1} g ||^2 / || J D^{-2} g ||^2 */ + double u; + + /* compute workp = D^{-1} g and its norm */ + gsl_vector_memcpy(state->workp, trust_state->g); + gsl_vector_div(state->workp, trust_state->diag); + norm_Dinvg = gsl_blas_dnrm2(state->workp); + + /* compute workp = D^{-2} g */ + gsl_vector_div(state->workp, trust_state->diag); + + /* compute: workn = J D^{-2} g */ + gsl_blas_dgemv(CblasNoTrans, 1.0, trust_state->J, state->workp, 0.0, state->workn); + norm_JDinv2g = gsl_blas_dnrm2(state->workn); + + u = norm_Dinvg / norm_JDinv2g; + alpha = u * u; + + /* dx_sd = -alpha D^{-2} g */ + gsl_vector_memcpy(dx, state->workp); + gsl_vector_scale(dx, -alpha); + + return GSL_SUCCESS; +} + +static const gsl_multifit_nlinear_trs subspace2D_type = +{ + "2D-subspace", + subspace2D_alloc, + subspace2D_init, + subspace2D_preloop, + subspace2D_step, + subspace2D_preduction, + subspace2D_free +}; + +const gsl_multifit_nlinear_trs *gsl_multifit_nlinear_trs_subspace2D = &subspace2D_type; diff --git a/gsl-2.5/multifit_nlinear/subspace2D.lo b/gsl-2.5/multifit_nlinear/subspace2D.lo new file mode 100644 index 00000000..9d34dc8c --- /dev/null +++ b/gsl-2.5/multifit_nlinear/subspace2D.lo @@ -0,0 +1,12 @@ +# subspace2D.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/subspace2D.o' + +# Name of the non-PIC object +non_pic_object='subspace2D.o' + diff --git a/gsl-2.5/multifit_nlinear/svd.c b/gsl-2.5/multifit_nlinear/svd.c new file mode 100644 index 00000000..6c2131bb --- /dev/null +++ b/gsl-2.5/multifit_nlinear/svd.c @@ -0,0 +1,269 @@ +/* multifit_nlinear/svd.c + * + * Copyright (C) 2016 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* + * This module handles the solution of the linear least squares + * system: + * + * [ J ] dx = - [ f ] + * [ sqrt(mu)*D ] [ 0 ] + * + * using an SVD approach. The system above is transformed to "standard form" + * via: + * + * J~ = J D^{-1} + * dx~ = D dx + * + * so that + * + * [ J~ ] dx~ = - [ f ] + * [ sqrt(mu)*I ] [ 0 ] + * + * can be solved with a standard SVD method, and then dx is recovered + * from dx~ via: dx = D^{-1} dx~ + */ + +#include +#include +#include +#include +#include +#include +#include +#include + +typedef struct +{ + size_t n; /* number of residuals */ + size_t p; /* number of parameters */ + gsl_matrix *U; /* U factor of J, n-by-p */ + gsl_matrix *V; /* V factor of J, p-by-p */ + gsl_vector *S; /* singular values, size p */ + gsl_vector *workp; /* workspace, length p */ + double mu; /* LM parameter */ +} svd_state_t; + +static int svd_init(const void * vtrust_state, void * vstate); +static int svd_presolve(const double mu, const void * vtrust_state, void * vstate); +static int svd_solve(const gsl_vector * f, gsl_vector *x, + const void * vtrust_state, void *vstate); +static int svd_rcond(double * rcond, void * vstate); + +static void * +svd_alloc (const size_t n, const size_t p) +{ + svd_state_t *state; + + (void)n; + + state = calloc(1, sizeof(svd_state_t)); + if (state == NULL) + { + GSL_ERROR_NULL ("failed to allocate svd state", GSL_ENOMEM); + } + + state->U = gsl_matrix_alloc(n, p); + if (state->U == NULL) + { + GSL_ERROR_NULL ("failed to allocate space for U", GSL_ENOMEM); + } + + state->V = gsl_matrix_alloc(p, p); + if (state->V == NULL) + { + GSL_ERROR_NULL ("failed to allocate space for V", GSL_ENOMEM); + } + + state->S = gsl_vector_alloc(p); + if (state->S == NULL) + { + GSL_ERROR_NULL ("failed to allocate space for S", + GSL_ENOMEM); + } + + state->workp = gsl_vector_alloc(p); + if (state->workp == NULL) + { + GSL_ERROR_NULL ("failed to allocate space for workp", + GSL_ENOMEM); + } + + state->mu = 0.0; + state->n = n; + state->p = p; + + return state; +} + +static void +svd_free(void *vstate) +{ + svd_state_t *state = (svd_state_t *) vstate; + + if (state->U) + gsl_matrix_free(state->U); + + if (state->V) + gsl_matrix_free(state->V); + + if (state->S) + gsl_vector_free(state->S); + + if (state->workp) + gsl_vector_free(state->workp); + + free(state); +} + +/* compute svd of J */ +static int +svd_init(const void * vtrust_state, void * vstate) +{ + int status; + const gsl_multifit_nlinear_trust_state *trust_state = + (const gsl_multifit_nlinear_trust_state *) vtrust_state; + svd_state_t *state = (svd_state_t *) vstate; + size_t i; + + gsl_matrix_set_zero(state->U); + + /* compute U = J D^{-1} */ + for (i = 0; i < state->p; ++i) + { + gsl_vector_const_view Ji = gsl_matrix_const_column(trust_state->J, i); + gsl_vector_view ui = gsl_matrix_column(state->U, i); + double di = gsl_vector_get(trust_state->diag, i); + + gsl_blas_daxpy(1.0 / di, &Ji.vector, &ui.vector); + } + + status = gsl_linalg_SV_decomp(state->U, state->V, state->S, state->workp); + + return status; +} + +static int +svd_presolve(const double mu, const void * vtrust_state, void * vstate) +{ + svd_state_t *state = (svd_state_t *) vstate; + + state->mu = mu; + + (void)vtrust_state; + + return GSL_SUCCESS; +} + +static int +svd_solve(const gsl_vector * f, gsl_vector *x, + const void * vtrust_state, void *vstate) +{ + int status = GSL_SUCCESS; + const gsl_multifit_nlinear_trust_state *trust_state = + (const gsl_multifit_nlinear_trust_state *) vtrust_state; + svd_state_t *state = (svd_state_t *) vstate; + const size_t p = state->p; + const double tol = GSL_DBL_EPSILON; + const double s0 = gsl_vector_get(state->S, 0); + size_t j; + + /* compute workp = - U^T f */ + gsl_blas_dgemv(CblasTrans, -1.0, state->U, f, 0.0, state->workp); + + /* + * compute: + * + * workp = sum_i s_i / (s_i^2 + mu) (-u_i^T f) + */ + + if (state->mu == 0.0) + { + /* + * compute Gauss-Newton direction by solving + * J x = -f + */ + + for (j = 0; j < p; ++j) + { + double sj = gsl_vector_get(state->S, j); + double *ptr = gsl_vector_ptr(state->workp, j); + double alpha; + + if (sj <= tol * s0) + alpha = 0.0; + else + alpha = 1.0 / sj; + + *ptr *= alpha; + } + } + else + { + /* + * solve: + * + * [ J D^{-1} ] (D x) = -[ f ] + * [ sqrt(mu) I ] [ 0 ] + * + * using SVD factorization of J D^{-1} + */ + + for (j = 0; j < p; ++j) + { + double sj = gsl_vector_get(state->S, j); + double *ptr = gsl_vector_ptr(state->workp, j); + + *ptr *= sj / (sj*sj + state->mu); + } + } + + /* compute: x = V * workp */ + gsl_blas_dgemv(CblasNoTrans, 1.0, state->V, state->workp, 0.0, x); + + /* compute D^{-1} x */ + gsl_vector_div(x, trust_state->diag); + + return status; +} + +static int +svd_rcond(double * rcond, void * vstate) +{ + int status = GSL_SUCCESS; + svd_state_t *state = (svd_state_t *) vstate; + double smax = gsl_vector_get(state->S, 0); + double smin = gsl_vector_get(state->S, state->p - 1); + + *rcond = smin / smax; + + return status; +} + +static const gsl_multifit_nlinear_solver svd_type = +{ + "svd", + svd_alloc, + svd_init, + svd_presolve, + svd_solve, + svd_rcond, + svd_free +}; + +const gsl_multifit_nlinear_solver *gsl_multifit_nlinear_solver_svd = &svd_type; diff --git a/gsl-2.5/multifit_nlinear/svd.lo b/gsl-2.5/multifit_nlinear/svd.lo new file mode 100644 index 00000000..92ac6ba5 --- /dev/null +++ b/gsl-2.5/multifit_nlinear/svd.lo @@ -0,0 +1,12 @@ +# svd.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/svd.o' + +# Name of the non-PIC object +non_pic_object='svd.o' + diff --git a/gsl-2.5/multifit_nlinear/test b/gsl-2.5/multifit_nlinear/test new file mode 100755 index 00000000..c4830640 --- /dev/null +++ b/gsl-2.5/multifit_nlinear/test @@ -0,0 +1,228 @@ +#! /bin/sh + +# test - temporary wrapper script for .libs/test +# Generated by libtool (GNU libtool) 2.4.2 +# +# The test program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s/\([`"$\\]\)/\\\1/g' + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command="(cd /home/groups/kipac/chto/package/gsl/gsl-2.5/multifit_nlinear; LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LIBRARY_PATH; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; LD_LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/fftw/include:/home/users/chto/lib/fftw/lib:/home/users/chto/lib/healpix/lib:/home/users/chto/lib/namaster/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/include:/home/users/chto/cpp/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LD_LIBRARY_PATH; PATH=/share/software/user/open/curl/7.54.0/bin:/share/software/user/open/libressl/2.5.3/bin:/home/users/chto/lib/cfitsio:/home/users/chto/lib/cfitsio/include:/home/users/chto/lib:/home/users/chto/bin/bin:/home/users/chto/bin:/home/users/chto/.texlive/bin/x86_64-linux:/home/groups/kipac/chto/anaconda2/envs/newenv3/bin:/home/users/chto/.local/bin/include:/home/users/chto/.local/bin/lib:/home/users/chto/.local/bin:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/bin64:/share/software/user/open/fftw/3.3.6/bin:/home/groups/kipac/chto/anaconda2/condabin:/share/software/user/restricted/ifort/2019/bin:/share/software/user/open/gsl/2.3/bin:/share/software/user/srcc/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/dell/srvadmin/bin:/opt/dell/srvadmin/iSM/bin:/home/users/chto/bin; export PATH; gcc -g -O2 -o \$progdir/\$file test.o ./.libs/libgslmultifit_nlinear.a ../eigen/.libs/libgsleigen.a ../linalg/.libs/libgsllinalg.a ../permutation/.libs/libgslpermutation.a ../blas/.libs/libgslblas.a ../cblas/.libs/libgslcblas.so ../matrix/.libs/libgslmatrix.a ../sort/.libs/libgslsort.a ../statistics/.libs/libgslstatistics.a ../vector/.libs/libgslvector.a ../block/.libs/libgslblock.a ../complex/.libs/libgslcomplex.a ../ieee-utils/.libs/libgslieeeutils.a ../err/.libs/libgslerr.a ../test/.libs/libgsltest.a ../utils/.libs/libutils.a ../sys/.libs/libgslsys.a ../rng/.libs/libgslrng.a ../specfunc/.libs/libgslspecfunc.a ../poly/.libs/libgslpoly.a -lm -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/cblas/.libs -Wl,-rpath -Wl,/usr/local/lib)" + +# This environment variable determines our operation mode. +if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then + # install mode needs the following variables: + generated_by_libtool_version='2.4.2' + notinst_deplibs=' ../cblas/libgslcblas.la' +else + # When we are sourced in execute mode, $file and $ECHO are already set. + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + file="$0" + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + ECHO="printf %s\\n" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ which is used only on +# windows platforms, and (c) all begin with the string --lt- +# (application programs are unlikely to have options which match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's ../libtool value, followed by no. +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=$0 + shift + for lt_opt + do + case "$lt_opt" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%/[^/]*$%%'` + test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=. + lt_dump_F=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%^.*/%%'` + cat "$lt_dump_D/$lt_dump_F" + exit 0 + ;; + --lt-*) + $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n "$lt_option_debug"; then + echo "test:test:${LINENO}: libtool wrapper (GNU libtool) 2.4.2" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + $ECHO "test:test:${LINENO}: newargv[$lt_dump_args_N]: $lt_arg" + lt_dump_args_N=`expr $lt_dump_args_N + 1` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ + + if test -n "$lt_option_debug"; then + $ECHO "test:test:${LINENO}: newargv[0]: $progdir/$program" 1>&2 + func_lt_dump_args ${1+"$@"} 1>&2 + fi + exec "$progdir/$program" ${1+"$@"} + + $ECHO "$0: cannot exec $program $*" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from $@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case " $* " in + *\ --lt-*) + for lt_wr_arg + do + case $lt_wr_arg in + --lt-*) ;; + *) set x "$@" "$lt_wr_arg"; shift;; + esac + shift + done ;; + esac + func_exec_program_core ${1+"$@"} +} + + # Parse options + func_parse_lt_options "$0" ${1+"$@"} + + # Find the directory that this script lives in. + thisdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + test "x$thisdir" = "x$file" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=`ls -ld "$file" | /usr/bin/sed -n 's/.*-> //p'` + while test -n "$file"; do + destdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + + # If there was a directory component, then change thisdir. + if test "x$destdir" != "x$file"; then + case "$destdir" in + [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;; + *) thisdir="$thisdir/$destdir" ;; + esac + fi + + file=`$ECHO "$file" | /usr/bin/sed 's%^.*/%%'` + file=`ls -ld "$thisdir/$file" | /usr/bin/sed -n 's/.*-> //p'` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no + if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then + # special case for '.' + if test "$thisdir" = "."; then + thisdir=`pwd` + fi + # remove .libs from thisdir + case "$thisdir" in + *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /usr/bin/sed 's%[\\/][^\\/]*$%%'` ;; + .libs ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=`cd "$thisdir" && pwd` + test -n "$absdir" && thisdir="$absdir" + + program=lt-'test' + progdir="$thisdir/.libs" + + if test ! -f "$progdir/$program" || + { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /usr/bin/sed 1q`; \ + test "X$file" != "X$progdir/$program"; }; then + + file="$$-$program" + + if test ! -d "$progdir"; then + mkdir "$progdir" + else + rm -f "$progdir/$file" + fi + + # relink executable if necessary + if test -n "$relink_command"; then + if relink_command_output=`eval $relink_command 2>&1`; then : + else + printf %s\n "$relink_command_output" >&2 + rm -f "$progdir/$file" + exit 1 + fi + fi + + mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null || + { rm -f "$progdir/$program"; + mv -f "$progdir/$file" "$progdir/$program"; } + rm -f "$progdir/$file" + fi + + if test -f "$progdir/$program"; then + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + # Run the actual program with our arguments. + func_exec_program ${1+"$@"} + fi + else + # The program doesn't exist. + $ECHO "$0: error: \`$progdir/$program' does not exist" 1>&2 + $ECHO "This script is just a wrapper for $program." 1>&2 + $ECHO "See the libtool documentation for more information." 1>&2 + exit 1 + fi +fi diff --git a/gsl-2.5/multifit_nlinear/test-suite.log b/gsl-2.5/multifit_nlinear/test-suite.log new file mode 100644 index 00000000..c11becd3 --- /dev/null +++ b/gsl-2.5/multifit_nlinear/test-suite.log @@ -0,0 +1,14 @@ +============================================== + gsl 2.5: multifit_nlinear/test-suite.log +============================================== + +# TOTAL: 1 +# PASS: 1 +# SKIP: 0 +# XFAIL: 0 +# FAIL: 0 +# XPASS: 0 +# ERROR: 0 + +.. contents:: :depth: 2 + diff --git a/gsl-2.5/multifit_nlinear/test.c b/gsl-2.5/multifit_nlinear/test.c new file mode 100644 index 00000000..f88247a2 --- /dev/null +++ b/gsl-2.5/multifit_nlinear/test.c @@ -0,0 +1,105 @@ +/* multifit_nlinear/test.c + * + * Copyright (C) 2007, 2013, 2015, 2016 Brian Gough, Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* These tests are based on the NIST Statistical Reference Datasets + See http://www.nist.gov/itl/div898/strd/index.html for more + information. */ + +#include +#include +#include +#include +#include +#include +#include +#include + +#include "test_fdf.c" + +static void +test_proc(const gsl_multifit_nlinear_trs *trs, + const gsl_multifit_nlinear_scale *scale, + const gsl_multifit_nlinear_solver *solver, + const int fdtype) +{ + gsl_multifit_nlinear_parameters fdf_params = + gsl_multifit_nlinear_default_parameters(); + + fdf_params.trs = trs; + fdf_params.scale = scale; + fdf_params.solver = solver; + fdf_params.fdtype = fdtype; + + test_fdf_main(&fdf_params); +} + +int +main (void) +{ + const gsl_multifit_nlinear_trs **nlinear_trs[6]; + const gsl_multifit_nlinear_solver **nlinear_solvers[4]; + const gsl_multifit_nlinear_scale **nlinear_scales[3]; + const gsl_multifit_nlinear_trs **trs; + const gsl_multifit_nlinear_solver **solver; + const gsl_multifit_nlinear_scale **scale; + size_t i = 0; + + gsl_ieee_env_setup(); + + /* initialize arrays */ + + nlinear_trs[0] = &gsl_multifit_nlinear_trs_lm; + nlinear_trs[1] = &gsl_multifit_nlinear_trs_lmaccel; + nlinear_trs[2] = &gsl_multifit_nlinear_trs_dogleg; + nlinear_trs[3] = &gsl_multifit_nlinear_trs_ddogleg; + nlinear_trs[4] = &gsl_multifit_nlinear_trs_subspace2D; + nlinear_trs[5] = NULL; + + nlinear_solvers[0] = &gsl_multifit_nlinear_solver_cholesky; + nlinear_solvers[1] = &gsl_multifit_nlinear_solver_qr; + nlinear_solvers[2] = &gsl_multifit_nlinear_solver_svd; + nlinear_solvers[3] = NULL; + + /* skip Marquardt scaling since it won't pass */ + nlinear_scales[0] = &gsl_multifit_nlinear_scale_levenberg; + nlinear_scales[1] = &gsl_multifit_nlinear_scale_more; + nlinear_scales[2] = NULL; + + /* run testsuite over all parameter combinations */ + + for (trs = nlinear_trs[i]; trs != NULL; trs = nlinear_trs[++i]) + { + size_t j = 0; + + fprintf(stderr, "trs = %s\n", (*trs)->name); + + for (solver = nlinear_solvers[j]; solver != NULL; solver = nlinear_solvers[++j]) + { + size_t k = 0; + fprintf(stderr, "solver = %s\n", (*solver)->name); + for (scale = nlinear_scales[k]; scale != NULL; scale = nlinear_scales[++k]) + { + test_proc(*trs, *scale, *solver, GSL_MULTIFIT_NLINEAR_FWDIFF); + test_proc(*trs, *scale, *solver, GSL_MULTIFIT_NLINEAR_CTRDIFF); + } + } + } + + exit (gsl_test_summary ()); +} diff --git a/gsl-2.5/multifit_nlinear/test.log b/gsl-2.5/multifit_nlinear/test.log new file mode 100644 index 00000000..cb0cdda6 --- /dev/null +++ b/gsl-2.5/multifit_nlinear/test.log @@ -0,0 +1,21 @@ +trs = levenberg-marquardt +solver = cholesky +solver = qr +solver = svd +trs = levenberg-marquardt+accel +solver = cholesky +solver = qr +solver = svd +trs = dogleg +solver = cholesky +solver = qr +solver = svd +trs = double-dogleg +solver = cholesky +solver = qr +solver = svd +trs = 2D-subspace +solver = cholesky +solver = qr +solver = svd +Completed [92904/92904] diff --git a/gsl-2.5/multifit_nlinear/test.trs b/gsl-2.5/multifit_nlinear/test.trs new file mode 100644 index 00000000..3f0f396c --- /dev/null +++ b/gsl-2.5/multifit_nlinear/test.trs @@ -0,0 +1,4 @@ +:test-result: PASS +:global-test-result: PASS +:recheck: no +:copy-in-global-log: no diff --git a/gsl-2.5/multifit_nlinear/test_bard.c b/gsl-2.5/multifit_nlinear/test_bard.c new file mode 100644 index 00000000..6bb058e5 --- /dev/null +++ b/gsl-2.5/multifit_nlinear/test_bard.c @@ -0,0 +1,153 @@ +#define bard_N 15 +#define bard_P 3 + +static double bard_x0[bard_P] = { 1.0, 1.0, 1.0 }; +static double bard_epsrel = 1.0e-7; + +static double bard_Y[bard_N] = { +0.14, 0.18, 0.22, 0.25, 0.29, 0.32, 0.35, 0.39, 0.37, +0.58, 0.73, 0.96, 1.34, 2.10, 4.39 +}; + +static void +bard_checksol(const double x[], const double sumsq, + const double epsrel, const char *sname, + const char *pname) +{ + size_t i; + const double sumsq_exact1 = 8.214877306578963e-03; + double bard_x1[bard_P] = { 8.241055975623580e-02, + 1.133036092245175, + 2.343695178435405 }; + const double sumsq_exact2 = 17.42869333333333; + double bard_x2[bard_P] = { 8.406666666666666e-01, + 0.0, /* -inf */ + 0.0 }; /* -inf */ + double *bard_x; + double sumsq_exact; + + bard_x2[1] = GSL_NAN; + bard_x2[2] = GSL_NAN; + + if (fabs(x[1]) < 10.0 && fabs(x[2]) < 10.0) + { + bard_x = bard_x1; + sumsq_exact = sumsq_exact1; + } + else + { + bard_x = bard_x2; + sumsq_exact = sumsq_exact2; + } + + gsl_test_rel(sumsq, sumsq_exact, epsrel, "%s/%s sumsq", + sname, pname); + + for (i = 0; i < bard_P; ++i) + { + if (!gsl_finite(bard_x[i])) + continue; + + gsl_test_rel(x[i], bard_x[i], epsrel, "%s/%s i=%zu", + sname, pname, i); + } +} + +static int +bard_f (const gsl_vector * x, void *params, gsl_vector * f) +{ + double x1 = gsl_vector_get(x, 0); + double x2 = gsl_vector_get(x, 1); + double x3 = gsl_vector_get(x, 2); + size_t i; + + for (i = 0; i < bard_N; ++i) + { + double ui = i + 1.0; + double vi = 16.0 - i - 1.0; + double wi = GSL_MIN(ui, vi); + double yi = bard_Y[i]; + double fi = yi - (x1 + (ui / (x2*vi + x3*wi))); + + gsl_vector_set(f, i, fi); + } + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +bard_df (const gsl_vector * x, void *params, gsl_matrix * J) +{ + double x2 = gsl_vector_get(x, 1); + double x3 = gsl_vector_get(x, 2); + size_t i; + + for (i = 0; i < bard_N; ++i) + { + double ui = i + 1.0; + double vi = 16.0 - i - 1.0; + double wi = GSL_MIN(ui, vi); + double term = x2 * vi + x3 * wi; + + gsl_matrix_set(J, i, 0, -1.0); + gsl_matrix_set(J, i, 1, ui * vi / (term * term)); + gsl_matrix_set(J, i, 2, ui * wi / (term * term)); + } + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +bard_fvv (const gsl_vector * x, const gsl_vector * v, + void *params, gsl_vector * fvv) +{ + double x2 = gsl_vector_get(x, 1); + double x3 = gsl_vector_get(x, 2); + double v2 = gsl_vector_get(v, 1); + double v3 = gsl_vector_get(v, 2); + size_t i; + + for (i = 0; i < bard_N; ++i) + { + double ui = i + 1.0; + double vi = 16.0 - i - 1.0; + double wi = GSL_MIN(ui, vi); + double term1 = x2 * vi + x3 * wi; + double term2 = v2 * vi + v3 * wi; + double ratio = term2 / term1; + + gsl_vector_set(fvv, i, -2.0 * ui * ratio * ratio / term1); + } + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static gsl_multifit_nlinear_fdf bard_func = +{ + bard_f, + bard_df, + bard_fvv, + bard_N, + bard_P, + NULL, + 0, + 0, + 0 +}; + +static test_fdf_problem bard_problem = +{ + "bard", + bard_x0, + NULL, + NULL, + &bard_epsrel, + &bard_checksol, + &bard_func +}; diff --git a/gsl-2.5/multifit_nlinear/test_beale.c b/gsl-2.5/multifit_nlinear/test_beale.c new file mode 100644 index 00000000..93177d2b --- /dev/null +++ b/gsl-2.5/multifit_nlinear/test_beale.c @@ -0,0 +1,113 @@ +#define beale_N 3 +#define beale_P 2 + +static double beale_x0[beale_P] = { 1.0, 1.0 }; +static double beale_epsrel = 1.0e-12; + +static double beale_Y[beale_N] = { 1.5, 2.25, 2.625 }; + +static void +beale_checksol(const double x[], const double sumsq, + const double epsrel, const char *sname, + const char *pname) +{ + size_t i; + const double sumsq_exact = 0.0; + const double beale_x[beale_P] = { 3.0, 0.5 }; + + gsl_test_rel(sumsq, sumsq_exact, epsrel, "%s/%s sumsq", + sname, pname); + + for (i = 0; i < beale_P; ++i) + { + gsl_test_rel(x[i], beale_x[i], epsrel, "%s/%s i=%zu", + sname, pname, i); + } +} + +static int +beale_f (const gsl_vector * x, void *params, gsl_vector * f) +{ + double x1 = gsl_vector_get(x, 0); + double x2 = gsl_vector_get(x, 1); + size_t i; + + for (i = 0; i < beale_N; ++i) + { + double yi = beale_Y[i]; + double term = pow(x2, i + 1.0); + double fi = yi - x1*(1.0 - term); + gsl_vector_set(f, i, fi); + } + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +beale_df (const gsl_vector * x, void *params, gsl_matrix * J) +{ + double x1 = gsl_vector_get(x, 0); + double x2 = gsl_vector_get(x, 1); + size_t i; + + for (i = 0; i < beale_N; ++i) + { + double term = pow(x2, (double) i); + + gsl_matrix_set(J, i, 0, term*x2 - 1.0); + gsl_matrix_set(J, i, 1, (i + 1.0) * x1 * term); + } + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +beale_fvv (const gsl_vector * x, const gsl_vector * v, + void *params, gsl_vector * fvv) +{ + double x1 = gsl_vector_get(x, 0); + double x2 = gsl_vector_get(x, 1); + double v1 = gsl_vector_get(v, 0); + double v2 = gsl_vector_get(v, 1); + size_t i; + + for (i = 0; i < beale_N; ++i) + { + double term = pow(x2, (double)i - 1.0); + + gsl_vector_set(fvv, i, (i + 1.0) * v2 * term * + (i * v2 * x1 + 2.0 * v1 * x2)); + } + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static gsl_multifit_nlinear_fdf beale_func = +{ + beale_f, + beale_df, + beale_fvv, + beale_N, + beale_P, + NULL, + 0, + 0, + 0 +}; + +static test_fdf_problem beale_problem = +{ + "beale", + beale_x0, + NULL, + NULL, + &beale_epsrel, + &beale_checksol, + &beale_func +}; diff --git a/gsl-2.5/multifit_nlinear/test_biggs.c b/gsl-2.5/multifit_nlinear/test_biggs.c new file mode 100644 index 00000000..052b3fba --- /dev/null +++ b/gsl-2.5/multifit_nlinear/test_biggs.c @@ -0,0 +1,140 @@ +#define biggs_N 20 /* >= p */ +#define biggs_P 6 + +/* dogleg method has trouble converging from recommended starting point, + * so we use an x0 which is a little closer to the true solution */ +/*static double biggs_x0[biggs_P] = { 1.0, 2.0, 1.0, 1.0, 1.0, 1.0 };*/ +static double biggs_x0[biggs_P] = { 1.0, 5.0, 1.0, 2.0, 3.0, 2.0 }; +static double biggs_epsrel = 1.0e-9; + +static void +biggs_checksol(const double x[], const double sumsq, + const double epsrel, const char *sname, + const char *pname) +{ + const double sumsq_exact = 0.0; + const double biggs_x[biggs_P] = { 1.0, 10.0, 1.0, 5.0, 4.0, 3.0 }; + size_t i; + + gsl_test_rel(sumsq, sumsq_exact, epsrel, "%s/%s sumsq", + sname, pname); + + for (i = 0; i < biggs_P; ++i) + { + gsl_test_rel(x[i], biggs_x[i], epsrel, "%s/%s i=%zu", + sname, pname, i); + } +} + +static int +biggs_f (const gsl_vector * x, void *params, gsl_vector * f) +{ + double x1 = gsl_vector_get(x, 0); + double x2 = gsl_vector_get(x, 1); + double x3 = gsl_vector_get(x, 2); + double x4 = gsl_vector_get(x, 3); + double x5 = gsl_vector_get(x, 4); + double x6 = gsl_vector_get(x, 5); + size_t i; + + for (i = 0; i < biggs_N; ++i) + { + double ti = 0.1 * (i + 1.0); + double yi = exp(-ti) - 5*exp(-10*ti) + 3*exp(-4*ti); + double fi = x3*exp(-ti*x1) - x4*exp(-ti*x2) + x6*exp(-ti*x5) - yi; + + gsl_vector_set(f, i, fi); + } + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +biggs_df (const gsl_vector * x, void *params, gsl_matrix * J) +{ + double x1 = gsl_vector_get(x, 0); + double x2 = gsl_vector_get(x, 1); + double x3 = gsl_vector_get(x, 2); + double x4 = gsl_vector_get(x, 3); + double x5 = gsl_vector_get(x, 4); + double x6 = gsl_vector_get(x, 5); + size_t i; + + for (i = 0; i < biggs_N; ++i) + { + double ti = 0.1 * (i + 1.0); + + gsl_matrix_set(J, i, 0, -ti*x3*exp(-ti*x1)); + gsl_matrix_set(J, i, 1, ti*x4*exp(-ti*x2)); + gsl_matrix_set(J, i, 2, exp(-ti*x1)); + gsl_matrix_set(J, i, 3, -exp(-ti*x2)); + gsl_matrix_set(J, i, 4, -ti*x6*exp(-ti*x5)); + gsl_matrix_set(J, i, 5, exp(-ti*x5)); + } + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +biggs_fvv (const gsl_vector * x, const gsl_vector * v, + void *params, gsl_vector * fvv) +{ + double x1 = gsl_vector_get(x, 0); + double x2 = gsl_vector_get(x, 1); + double x3 = gsl_vector_get(x, 2); + double x4 = gsl_vector_get(x, 3); + double x5 = gsl_vector_get(x, 4); + double x6 = gsl_vector_get(x, 5); + double v1 = gsl_vector_get(v, 0); + double v2 = gsl_vector_get(v, 1); + double v3 = gsl_vector_get(v, 2); + double v4 = gsl_vector_get(v, 3); + double v5 = gsl_vector_get(v, 4); + double v6 = gsl_vector_get(v, 5); + size_t i; + + for (i = 0; i < biggs_N; ++i) + { + double ti = 0.1 * (i + 1.0); + double term1 = exp(-ti * x1); + double term2 = exp(-ti * x2); + double term3 = exp(-ti * x5); + + gsl_vector_set(fvv, i, ti * term1 * term2 * term3 * + (v1/(term2*term3)*(-2*v3 + ti*v1*x3) - + v2/(term1*term3)*(-2*v4 + ti*v2*x4) + + v5/(term1*term2)*(-2*v6 + ti*v5*x6))); + } + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static gsl_multifit_nlinear_fdf biggs_func = +{ + biggs_f, + biggs_df, + biggs_fvv, + biggs_N, + biggs_P, + NULL, + 0, + 0, + 0 +}; + +static test_fdf_problem biggs_problem = +{ + "biggs", + biggs_x0, + NULL, + NULL, + &biggs_epsrel, + &biggs_checksol, + &biggs_func +}; diff --git a/gsl-2.5/multifit_nlinear/test_box.c b/gsl-2.5/multifit_nlinear/test_box.c new file mode 100644 index 00000000..d6f3f787 --- /dev/null +++ b/gsl-2.5/multifit_nlinear/test_box.c @@ -0,0 +1,143 @@ +#define box_N 10 /* can be >= p */ +#define box_P 3 + +/* dogleg method fails with recommended starting point, so use + * a slightly easier x0 */ +/*static double box_x0[box_P] = { 0.0, 10.0, 20.0 };*/ +static double box_x0[box_P] = { 5.0, 10.0, 2.0 }; +static double box_epsrel = 1.0e-12; + +static void +box_checksol(const double x[], const double sumsq, + const double epsrel, const char *sname, + const char *pname) +{ + const double sumsq_exact = 0.0; + const double eps = 1.0e-6; + + gsl_test_rel(sumsq, sumsq_exact, epsrel, "%s/%s sumsq", + sname, pname); + + /* there are 3 possible solution vectors */ + + if (fabs(x[2] - 1.0) < eps) + { + /* case 1: x* = [ 1; 10; 1 ] */ + gsl_test_rel(x[0], 1.0, epsrel, "%s/%s i=0", + sname, pname); + gsl_test_rel(x[1], 10.0, epsrel, "%s/%s i=1", + sname, pname); + gsl_test_rel(x[2], 1.0, epsrel, "%s/%s i=2", + sname, pname); + } + else if (fabs(x[2] + 1.0) < eps) + { + /* case 2: x* = [ 10; 1; -1 ] */ + gsl_test_rel(x[0], 10.0, epsrel, "%s/%s i=0", + sname, pname); + gsl_test_rel(x[1], 1.0, epsrel, "%s/%s i=1", + sname, pname); + gsl_test_rel(x[2], -1.0, epsrel, "%s/%s i=2", + sname, pname); + } + else + { + /* case 3: x* = [ a; a; 0 ] for any a */ + gsl_test_rel(x[0], x[1], epsrel, "%s/%s i=0,1", + sname, pname); + gsl_test_rel(x[2], 0.0, epsrel, "%s/%s i=2", + sname, pname); + } +} + +static int +box_f (const gsl_vector * x, void *params, gsl_vector * f) +{ + double x1 = gsl_vector_get(x, 0); + double x2 = gsl_vector_get(x, 1); + double x3 = gsl_vector_get(x, 2); + size_t i; + + for (i = 0; i < box_N; ++i) + { + double ti = (i + 1.0) / 10.0; + double fi = exp(-x1*ti) - exp(-x2*ti) - x3*(exp(-ti) - exp(-10.0*ti)); + gsl_vector_set(f, i, fi); + } + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +box_df (const gsl_vector * x, void *params, gsl_matrix * J) +{ + double x1 = gsl_vector_get(x, 0); + double x2 = gsl_vector_get(x, 1); + size_t i; + + for (i = 0; i < box_N; ++i) + { + double ti = (i + 1.0) / 10.0; + double term1 = exp(-x1*ti); + double term2 = exp(-x2*ti); + double term3 = exp(-10.0*ti) - exp(-ti); + + gsl_matrix_set(J, i, 0, -ti*term1); + gsl_matrix_set(J, i, 1, ti*term2); + gsl_matrix_set(J, i, 2, term3); + } + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +box_fvv (const gsl_vector * x, const gsl_vector * v, + void *params, gsl_vector * fvv) +{ + double x1 = gsl_vector_get(x, 0); + double x2 = gsl_vector_get(x, 1); + double v1 = gsl_vector_get(v, 0); + double v2 = gsl_vector_get(v, 1); + size_t i; + + for (i = 0; i < box_N; ++i) + { + double ti = (i + 1.0) / 10.0; + double term1 = exp(-x1*ti); + double term2 = exp(-x2*ti); + + gsl_vector_set(fvv, i, ti * ti * (v1*v1*term1 - v2*v2*term2)); + } + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static gsl_multifit_nlinear_fdf box_func = +{ + box_f, + box_df, + box_fvv, + box_N, + box_P, + NULL, + 0, + 0, + 0 +}; + +static test_fdf_problem box_problem = +{ + "box3d", + box_x0, + NULL, + NULL, + &box_epsrel, + &box_checksol, + &box_func +}; diff --git a/gsl-2.5/multifit_nlinear/test_boxbod.c b/gsl-2.5/multifit_nlinear/test_boxbod.c new file mode 100644 index 00000000..a41f0241 --- /dev/null +++ b/gsl-2.5/multifit_nlinear/test_boxbod.c @@ -0,0 +1,144 @@ +#define boxbod_N 6 +#define boxbod_P 2 + +static double boxbod_x0a[boxbod_P] = { 1.0, 1.0 }; +static double boxbod_x0b[boxbod_P] = { 100.0, 0.75 }; +static double boxbod_epsrel = 1.0e-7; + +static double boxbod_sigma[boxbod_P] = { + 1.2354515176E+01, 1.0455993237E-01 +}; + +static double boxbod_X[boxbod_N] = { 1.0, 2.0, 3.0, 5.0, 7.0, 10.0 }; + +static double boxbod_F[boxbod_N] = { 109.0, 149.0, 149.0, 191.0, + 213.0, 224.0 }; + +static void +boxbod_checksol(const double x[], const double sumsq, + const double epsrel, const char *sname, + const char *pname) +{ + size_t i; + const double sumsq_exact = 1.1680088766E+03; + const double boxbod_x[boxbod_P] = { 2.1380940889E+02, + 5.4723748542E-01 }; + + gsl_test_rel(sumsq, sumsq_exact, epsrel, "%s/%s sumsq", + sname, pname); + + for (i = 0; i < boxbod_P; ++i) + { + gsl_test_rel(x[i], boxbod_x[i], epsrel, "%s/%s i=%zu", + sname, pname, i); + } +} + + +static int +boxbod_f (const gsl_vector * x, void *params, gsl_vector * f) +{ + double b[boxbod_P]; + size_t i; + + for (i = 0; i < boxbod_P; i++) + { + b[i] = gsl_vector_get(x, i); + } + + for (i = 0; i < boxbod_N; i++) + { + double xi = boxbod_X[i]; + double yi; + + yi = b[0] * (1.0 - exp(-b[1] * xi)); + gsl_vector_set (f, i, yi - boxbod_F[i]); + } + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +boxbod_df (const gsl_vector * x, void *params, gsl_matrix * df) +{ + double b[boxbod_P]; + size_t i; + + for (i = 0; i < boxbod_P; i++) + { + b[i] = gsl_vector_get(x, i); + } + + for (i = 0; i < boxbod_N; i++) + { + double xi = boxbod_X[i]; + double term = exp(-b[1] * xi); + + gsl_matrix_set (df, i, 0, 1.0 - term); + gsl_matrix_set (df, i, 1, b[0] * term * xi); + } + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +boxbod_fvv (const gsl_vector * x, const gsl_vector * v, + void *params, gsl_vector * fvv) +{ + double x1 = gsl_vector_get(x, 0); + double x2 = gsl_vector_get(x, 1); + double v1 = gsl_vector_get(v, 0); + double v2 = gsl_vector_get(v, 1); + size_t i; + + for (i = 0; i < boxbod_N; i++) + { + double ti = boxbod_X[i]; + double term = exp(-x2 * ti); + + gsl_vector_set(fvv, i, term * ti * v2 * (2*v1 - ti*v2*x1)); + } + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static gsl_multifit_nlinear_fdf boxbod_func = +{ + boxbod_f, + boxbod_df, + boxbod_fvv, + boxbod_N, + boxbod_P, + NULL, + 0, + 0, + 0 +}; + +static test_fdf_problem boxboda_problem = +{ + "nist-boxboda", + boxbod_x0a, + NULL, + boxbod_sigma, + &boxbod_epsrel, + &boxbod_checksol, + &boxbod_func +}; + +static test_fdf_problem boxbodb_problem = +{ + "nist-boxbodb", + boxbod_x0b, + NULL, + boxbod_sigma, + &boxbod_epsrel, + &boxbod_checksol, + &boxbod_func +}; diff --git a/gsl-2.5/multifit_nlinear/test_brown1.c b/gsl-2.5/multifit_nlinear/test_brown1.c new file mode 100644 index 00000000..d03b951c --- /dev/null +++ b/gsl-2.5/multifit_nlinear/test_brown1.c @@ -0,0 +1,126 @@ +#define brown1_N 20 +#define brown1_P 4 + +static double brown1_x0[brown1_P] = { 25, 5, -5, -1 }; +static double brown1_epsrel = 1.0e-5; + +static void +brown1_checksol(const double x[], const double sumsq, + const double epsrel, const char *sname, + const char *pname) +{ + size_t i; + const double sumsq_exact = 8.582220162635628e+04; + const double brown1_x[brown1_P] = { + -1.159443990239263e+01, 1.320363005221244e+01, + -4.034395456782477e-01, 2.367789088597534e-01 }; + + gsl_test_rel(sumsq, sumsq_exact, epsrel, "%s/%s sumsq", + sname, pname); + + for (i = 0; i < brown1_P; ++i) + { + gsl_test_rel(x[i], brown1_x[i], epsrel, "%s/%s i=%zu", + sname, pname, i); + } +} + +static int +brown1_f (const gsl_vector * x, void *params, gsl_vector * f) +{ + double x0 = gsl_vector_get (x, 0); + double x1 = gsl_vector_get (x, 1); + double x2 = gsl_vector_get (x, 2); + double x3 = gsl_vector_get (x, 3); + size_t i; + + for (i = 0; i < brown1_N; i++) + { + double ti = 0.2 * (i + 1); + double ui = x0 + x1 * ti - exp (ti); + double vi = x2 + x3 * sin (ti) - cos (ti); + + gsl_vector_set (f, i, ui * ui + vi * vi); + } + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +brown1_df (const gsl_vector * x, void *params, gsl_matrix * df) +{ + double x0 = gsl_vector_get (x, 0); + double x1 = gsl_vector_get (x, 1); + double x2 = gsl_vector_get (x, 2); + double x3 = gsl_vector_get (x, 3); + size_t i; + + for (i = 0; i < brown1_N; i++) + { + double ti = 0.2 * (i + 1); + double ui = x0 + x1 * ti - exp (ti); + double vi = x2 + x3 * sin (ti) - cos (ti); + + gsl_matrix_set (df, i, 0, 2 * ui); + gsl_matrix_set (df, i, 1, 2 * ui * ti); + gsl_matrix_set (df, i, 2, 2 * vi); + gsl_matrix_set (df, i, 3, 2 * vi * sin (ti)); + + } + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +brown1_fvv (const gsl_vector * x, const gsl_vector * v, + void *params, gsl_vector * fvv) +{ + double v0 = gsl_vector_get (v, 0); + double v1 = gsl_vector_get (v, 1); + double v2 = gsl_vector_get (v, 2); + double v3 = gsl_vector_get (v, 3); + size_t i; + + for (i = 0; i < brown1_N; i++) + { + double ti = 0.2 * (i + 1); + double term1 = v0 + ti*v1; + double term2 = v3*sin(ti); + + gsl_vector_set (fvv, i, 2.0 * (term1*term1 + v2*v2 + + term2 * (2*v2 + term2))); + } + + (void)x; /* avoid unused parameter warning */ + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static gsl_multifit_nlinear_fdf brown1_func = +{ + brown1_f, + brown1_df, + brown1_fvv, + brown1_N, + brown1_P, + NULL, + 0, + 0, + 0 +}; + +static test_fdf_problem brown1_problem = +{ + "brown_dennis", + brown1_x0, + NULL, + NULL, + &brown1_epsrel, + &brown1_checksol, + &brown1_func +}; diff --git a/gsl-2.5/multifit_nlinear/test_brown2.c b/gsl-2.5/multifit_nlinear/test_brown2.c new file mode 100644 index 00000000..bb9a8b83 --- /dev/null +++ b/gsl-2.5/multifit_nlinear/test_brown2.c @@ -0,0 +1,170 @@ +#define brown2_N 5 +#define brown2_P 5 + +static double brown2_x0[brown2_P] = { 0.5, 0.5, 0.5, 0.5, 0.5 }; +static double brown2_epsrel = 1.0e-12; + +static void +brown2_checksol(const double x[], const double sumsq, + const double epsrel, const char *sname, + const char *pname) +{ + size_t i; + double sumsq_exact; + double alpha; + const double p = (double) brown2_P; + double alpha1mp, lhs, lastel; + + if (sumsq < 0.5) + { + /* sumsq = 0 case */ + + sumsq_exact = 0.0; + alpha = x[0]; + alpha1mp = pow(alpha, 1.0 - p); + lhs = p*pow(alpha, p) - (p + 1)/alpha1mp; + lastel = alpha1mp; + + gsl_test_rel(lhs, -1.0, epsrel, "%s/%s alpha lhs", + sname, pname); + } + else + { + /* sumsq = 1 case */ + + sumsq_exact = 1.0; + alpha = 0.0; + lastel = p + 1.0; + } + + gsl_test_rel(sumsq, sumsq_exact, epsrel, "%s/%s sumsq", + sname, pname); + + for (i = 1; i < brown2_P - 1; ++i) + { + gsl_test_rel(x[i], alpha, epsrel, "%s/%s i=%zu", + sname, pname, i); + } + + gsl_test_rel(x[brown2_P - 1], lastel, epsrel, "%s/%s last element", + sname, pname); +} + +static int +brown2_f (const gsl_vector * x, void *params, gsl_vector * f) +{ + size_t i; + double sum = -(brown2_N + 1.0); + double prod = 1.0; + + for (i = 0; i < brown2_N; ++i) + { + double xi = gsl_vector_get(x, i); + sum += xi; + prod *= xi; + } + + for (i = 0; i < brown2_N - 1; ++i) + { + double xi = gsl_vector_get(x, i); + gsl_vector_set(f, i, xi + sum); + } + + gsl_vector_set(f, brown2_N - 1, prod - 1.0); + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +brown2_df (const gsl_vector * x, void *params, gsl_matrix * J) +{ + size_t i, j; + + for (j = 0; j < brown2_P; ++j) + { + double prod = 1.0; + + for (i = 0; i < brown2_N - 1; i++) + { + double Jij = (i == j) ? 2.0 : 1.0; + gsl_matrix_set(J, i, j, Jij); + } + + for (i = 0; i < brown2_N; i++) + { + if (i != j) + prod *= gsl_vector_get(x, i); + } + + gsl_matrix_set(J, brown2_N - 1, j, prod); + } + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +brown2_fvv (const gsl_vector * x, const gsl_vector * v, + void *params, gsl_vector * fvv) +{ + size_t i, j, k; + double sum = 0.0; + + gsl_vector_set_zero(fvv); + + for (k = 0; k < brown2_P; ++k) + { + double vk = gsl_vector_get(v, k); + + for (i = 0; i < brown2_P; ++i) + { + double vi = gsl_vector_get(v, i); + double delta = (i == k) ? 1.0 : 0.0; + double prod = 1.0; + + for (j = 0; j < brown2_N; ++j) + { + if (j != i && j != k) + { + double xj = gsl_vector_get(x, j); + prod *= xj; + } + } + + sum += vk * vi * (1.0 - delta) * prod; + } + } + + gsl_vector_set(fvv, brown2_N - 1, sum); + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static gsl_multifit_nlinear_fdf brown2_func = +{ + brown2_f, + brown2_df, + brown2_fvv, + brown2_N, + brown2_P, + NULL, + 0, + 0, + 0 +}; + +static test_fdf_problem brown2_problem = +{ + "brown_almost_linear", + brown2_x0, + NULL, + NULL, + &brown2_epsrel, + &brown2_checksol, + &brown2_func +}; diff --git a/gsl-2.5/multifit_nlinear/test_brown3.c b/gsl-2.5/multifit_nlinear/test_brown3.c new file mode 100644 index 00000000..403772c5 --- /dev/null +++ b/gsl-2.5/multifit_nlinear/test_brown3.c @@ -0,0 +1,98 @@ +#define brown3_N 3 +#define brown3_P 2 + +static double brown3_x0[brown3_P] = { 1.0, 1.0 }; +static double brown3_epsrel = 1.0e-12; + +static void +brown3_checksol(const double x[], const double sumsq, + const double epsrel, const char *sname, + const char *pname) +{ + size_t i; + const double sumsq_exact = 0.0; + const double brown3_x[brown3_P] = { 1.0e6, 2.0e-6 }; + + gsl_test_rel(sumsq, sumsq_exact, epsrel, "%s/%s sumsq", + sname, pname); + + for (i = 0; i < brown3_P; ++i) + { + gsl_test_rel(x[i], brown3_x[i], epsrel, "%s/%s i=%zu", + sname, pname, i); + } +} + +static int +brown3_f (const gsl_vector * x, void *params, gsl_vector * f) +{ + double x1 = gsl_vector_get(x, 0); + double x2 = gsl_vector_get(x, 1); + + gsl_vector_set(f, 0, x1 - 1.0e6); + gsl_vector_set(f, 1, x2 - 2.0e-6); + gsl_vector_set(f, 2, x1*x2 - 2.0); + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +brown3_df (const gsl_vector * x, void *params, gsl_matrix * J) +{ + double x1 = gsl_vector_get(x, 0); + double x2 = gsl_vector_get(x, 1); + + gsl_matrix_set_zero(J); + + gsl_matrix_set(J, 0, 0, 1.0); + gsl_matrix_set(J, 1, 1, 1.0); + gsl_matrix_set(J, 2, 0, x2); + gsl_matrix_set(J, 2, 1, x1); + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +brown3_fvv (const gsl_vector * x, const gsl_vector * v, + void *params, gsl_vector * fvv) +{ + double v1 = gsl_vector_get(v, 0); + double v2 = gsl_vector_get(v, 1); + + gsl_vector_set(fvv, 0, 0.0); + gsl_vector_set(fvv, 1, 0.0); + gsl_vector_set(fvv, 2, 2.0 * v1 * v2); + + (void)x; /* avoid unused parameter warning */ + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static gsl_multifit_nlinear_fdf brown3_func = +{ + brown3_f, + brown3_df, + brown3_fvv, + brown3_N, + brown3_P, + NULL, + 0, + 0, + 0 +}; + +static test_fdf_problem brown3_problem = +{ + "brown_badly_scaled", + brown3_x0, + NULL, + NULL, + &brown3_epsrel, + &brown3_checksol, + &brown3_func +}; diff --git a/gsl-2.5/multifit_nlinear/test_eckerle.c b/gsl-2.5/multifit_nlinear/test_eckerle.c new file mode 100644 index 00000000..6d8a7038 --- /dev/null +++ b/gsl-2.5/multifit_nlinear/test_eckerle.c @@ -0,0 +1,155 @@ +#define eckerle_N 35 +#define eckerle_P 3 + +static double eckerle_x0a[eckerle_P] = { 1.0, 10.0, 500.0 }; +static double eckerle_x0b[eckerle_P] = { 1.5, 5.0, 450.0 }; +static double eckerle_epsrel = 1.0e-7; + +static double eckerle_sigma[eckerle_P] = { + 1.5408051163E-02, 4.6803020753E-02, 4.6800518816E-02 +}; + +static double eckerle_X[eckerle_N] = { + 400.000000, 405.000000, 410.000000, 415.000000, 420.000000, + 425.000000, 430.000000, 435.000000, 436.500000, 438.000000, + 439.500000, 441.000000, 442.500000, 444.000000, 445.500000, + 447.000000, 448.500000, 450.000000, 451.500000, 453.000000, + 454.500000, 456.000000, 457.500000, 459.000000, 460.500000, + 462.000000, 463.500000, 465.000000, 470.000000, 475.000000, + 480.000000, 485.000000, 490.000000, 495.000000, 500.000000 }; + +static double eckerle_F[eckerle_N] = { + 0.0001575, 0.0001699, 0.0002350, 0.0003102, 0.0004917, + 0.0008710, 0.0017418, 0.0046400, 0.0065895, 0.0097302, + 0.0149002, 0.0237310, 0.0401683, 0.0712559, 0.1264458, + 0.2073413, 0.2902366, 0.3445623, 0.3698049, 0.3668534, + 0.3106727, 0.2078154, 0.1164354, 0.0616764, 0.0337200, + 0.0194023, 0.0117831, 0.0074357, 0.0022732, 0.0008800, + 0.0004579, 0.0002345, 0.0001586, 0.0001143, 0.0000710 }; + +static void +eckerle_checksol(const double x[], const double sumsq, + const double epsrel, const char *sname, + const char *pname) +{ + size_t i; + const double sumsq_exact = 1.4635887487E-03; + const double eckerle_x[eckerle_P] = { 1.5543827178E+00, + 4.0888321754E+00, + 4.5154121844E+02 }; + double new_x[3]; + + gsl_test_rel(sumsq, sumsq_exact, epsrel, "%s/%s sumsq", + sname, pname); + + /* x1 and x2 are unique up to a sign, but they must be + * the same sign */ + if (x[0] < 0.0 && x[1] < 0.0) + { + new_x[0] = -x[0]; + new_x[1] = -x[1]; + } + else + { + new_x[0] = x[0]; + new_x[1] = x[1]; + } + + new_x[2] = x[2]; + + for (i = 0; i < eckerle_P; ++i) + { + gsl_test_rel(new_x[i], eckerle_x[i], epsrel, "%s/%s i=%zu", + sname, pname, i); + } +} + + +static int +eckerle_f (const gsl_vector * x, void *params, gsl_vector * f) +{ + double b[eckerle_P]; + size_t i; + + for (i = 0; i < eckerle_P; i++) + { + b[i] = gsl_vector_get(x, i); + } + + for (i = 0; i < eckerle_N; i++) + { + double xi = eckerle_X[i]; + double term = xi - b[2]; + double yi; + + yi = b[0] / b[1] * exp(-0.5 * term * term / b[1] / b[1]); + gsl_vector_set (f, i, yi - eckerle_F[i]); + } + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +eckerle_df (const gsl_vector * x, void *params, gsl_matrix * df) +{ + double b[eckerle_P]; + size_t i; + + for (i = 0; i < eckerle_P; i++) + { + b[i] = gsl_vector_get(x, i); + } + + for (i = 0; i < eckerle_N; i++) + { + double xi = eckerle_X[i]; + double term1 = xi - b[2]; + double term2 = exp(-0.5 * term1 * term1 / (b[1] * b[1])); + + gsl_matrix_set (df, i, 0, term2 / b[1]); + gsl_matrix_set (df, i, 1, + -b[0] * term2 / (b[1] * b[1]) + b[0] / pow(b[1], 4.0) * term2 * term1 * term1); + gsl_matrix_set (df, i, 2, b[0] / pow(b[1], 3.0) * term1 * term2); + } + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static gsl_multifit_nlinear_fdf eckerle_func = +{ + eckerle_f, + eckerle_df, + NULL, /* analytic expression too complex */ + eckerle_N, + eckerle_P, + NULL, + 0, + 0, + 0 +}; + +static test_fdf_problem eckerlea_problem = +{ + "nist-eckerlea", + eckerle_x0a, + NULL, + eckerle_sigma, + &eckerle_epsrel, + &eckerle_checksol, + &eckerle_func +}; + +static test_fdf_problem eckerleb_problem = +{ + "nist-eckerleb", + eckerle_x0b, + NULL, + eckerle_sigma, + &eckerle_epsrel, + &eckerle_checksol, + &eckerle_func +}; diff --git a/gsl-2.5/multifit_nlinear/test_enso.c b/gsl-2.5/multifit_nlinear/test_enso.c new file mode 100644 index 00000000..8b2fdc4f --- /dev/null +++ b/gsl-2.5/multifit_nlinear/test_enso.c @@ -0,0 +1,173 @@ +#define enso_N 168 +#define enso_P 9 + +static double enso_x0a[enso_P] = { 11.0, 3.0, 0.5, 40.0, -0.7, -1.3, 25.0, -0.3, 1.4 }; +static double enso_x0b[enso_P] = { 10.0, 3.0, 0.5, 44.0, -1.5, 0.5, 26.0, -0.1, 1.5 }; + +static double enso_epsrel = 1.0e-3; + +static double enso_sigma[enso_P] = { + 1.7488832467E-01, 2.4310052139E-01, 2.4354686618E-01, 9.4408025976E-01, 2.8078369611E-01, + 4.8073701119E-01, 4.1612939130E-01, 5.1460022911E-01, 2.5434468893E-01 +}; + +static double enso_F[enso_N] = { + 12.90000, 11.30000, 10.60000, 11.20000, 10.90000, + 7.500000, 7.700000, 11.70000, 12.90000, 14.30000, + 10.90000, 13.70000, 17.10000, 14.00000, 15.30000, + 8.500000, 5.700000, 5.500000, 7.600000, 8.600000, + 7.300000, 7.600000, 12.70000, 11.00000, 12.70000, + 12.90000, 13.00000, 10.90000, 10.400000, 10.200000, + 8.000000, 10.90000, 13.60000, 10.500000, 9.200000, + 12.40000, 12.70000, 13.30000, 10.100000, 7.800000, + 4.800000, 3.000000, 2.500000, 6.300000, 9.700000, + 11.60000, 8.600000, 12.40000, 10.500000, 13.30000, + 10.400000, 8.100000, 3.700000, 10.70000, 5.100000, + 10.400000, 10.90000, 11.70000, 11.40000, 13.70000, + 14.10000, 14.00000, 12.50000, 6.300000, 9.600000, + 11.70000, 5.000000, 10.80000, 12.70000, 10.80000, + 11.80000, 12.60000, 15.70000, 12.60000, 14.80000, + 7.800000, 7.100000, 11.20000, 8.100000, 6.400000, + 5.200000, 12.00000, 10.200000, 12.70000, 10.200000, + 14.70000, 12.20000, 7.100000, 5.700000, 6.700000, + 3.900000, 8.500000, 8.300000, 10.80000, 16.70000, + 12.60000, 12.50000, 12.50000, 9.800000, 7.200000, + 4.100000, 10.60000, 10.100000, 10.100000, 11.90000, + 13.60000, 16.30000, 17.60000, 15.50000, 16.00000, + 15.20000, 11.20000, 14.30000, 14.50000, 8.500000, + 12.00000, 12.70000, 11.30000, 14.50000, 15.10000, + 10.400000, 11.50000, 13.40000, 7.500000, 0.6000000, + 0.3000000, 5.500000, 5.000000, 4.600000, 8.200000, + 9.900000, 9.200000, 12.50000, 10.90000, 9.900000, + 8.900000, 7.600000, 9.500000, 8.400000, 10.70000, + 13.60000, 13.70000, 13.70000, 16.50000, 16.80000, + 17.10000, 15.40000, 9.500000, 6.100000, 10.100000, + 9.300000, 5.300000, 11.20000, 16.60000, 15.60000, + 12.00000, 11.50000, 8.600000, 13.80000, 8.700000, + 8.600000, 8.600000, 8.700000, 12.80000, 13.20000, + 14.00000, 13.40000, 14.80000 +}; + +static void +enso_checksol(const double x[], const double sumsq, + const double epsrel, const char *sname, + const char *pname) +{ + size_t i; + const double sumsq_exact = 7.8853978668E+02; + const double enso_x[enso_P] = { + 1.0510749193E+01, 3.0762128085E+00, 5.3280138227E-01, + 4.4311088700E+01, -1.6231428586E+00, 5.2554493756E-01, + 2.6887614440E+01, 2.1232288488E-01, 1.4966870418E+00 }; + + gsl_test_rel(sumsq, sumsq_exact, epsrel, "%s/%s sumsq", + sname, pname); + + for (i = 0; i < enso_P; ++i) + { + gsl_test_rel(x[i], enso_x[i], epsrel, "%s/%s i=%zu", + sname, pname, i); + } +} + + +static int +enso_f (const gsl_vector * x, void *params, gsl_vector * f) +{ + double b[enso_P]; + size_t i; + + for (i = 0; i < enso_P; i++) + { + b[i] = gsl_vector_get(x, i); + } + + for (i = 0; i < enso_N; i++) + { + double t = (i + 1.0); + double y; + y = b[0]; + y += b[1] * cos(2*M_PI*t/12); + y += b[2] * sin(2*M_PI*t/12); + y += b[4] * cos(2*M_PI*t/b[3]); + y += b[5] * sin(2*M_PI*t/b[3]); + y += b[7] * cos(2*M_PI*t/b[6]); + y += b[8] * sin(2*M_PI*t/b[6]); + + gsl_vector_set (f, i, enso_F[i] - y); + } + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +enso_df (const gsl_vector * x, void *params, gsl_matrix * df) +{ + double b[enso_P]; + size_t i; + + for (i = 0; i < enso_P; i++) + { + b[i] = gsl_vector_get(x, i); + } + + for (i = 0; i < enso_N; i++) + { + double t = (i + 1.0); + + gsl_matrix_set (df, i, 0, -1.0); + gsl_matrix_set (df, i, 1, -cos(2*M_PI*t/12)); + gsl_matrix_set (df, i, 2, -sin(2*M_PI*t/12)); + gsl_matrix_set (df, i, 3, + -b[4]*(2*M_PI*t/(b[3]*b[3]))*sin(2*M_PI*t/b[3]) + +b[5]*(2*M_PI*t/(b[3]*b[3]))*cos(2*M_PI*t/b[3])); + gsl_matrix_set (df, i, 4, -cos(2*M_PI*t/b[3])); + gsl_matrix_set (df, i, 5, -sin(2*M_PI*t/b[3])); + gsl_matrix_set (df, i, 6, + -b[7] * (2*M_PI*t/(b[6]*b[6])) * sin(2*M_PI*t/b[6]) + +b[8] * (2*M_PI*t/(b[6]*b[6])) * cos(2*M_PI*t/b[6])); + gsl_matrix_set (df, i, 7, -cos(2*M_PI*t/b[6])); + gsl_matrix_set (df, i, 8, -sin(2*M_PI*t/b[6])); + } + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static gsl_multifit_nlinear_fdf enso_func = +{ + enso_f, + enso_df, + NULL, /* analytic expression too complex */ + enso_N, + enso_P, + NULL, + 0, + 0, + 0 +}; + +static test_fdf_problem ensoa_problem = +{ + "nist-ENSOa", + enso_x0a, + NULL, + enso_sigma, + &enso_epsrel, + &enso_checksol, + &enso_func +}; + +static test_fdf_problem ensob_problem = +{ + "nist-ENSOb", + enso_x0b, + NULL, + enso_sigma, + &enso_epsrel, + &enso_checksol, + &enso_func +}; diff --git a/gsl-2.5/multifit_nlinear/test_exp1.c b/gsl-2.5/multifit_nlinear/test_exp1.c new file mode 100644 index 00000000..a7e49d1d --- /dev/null +++ b/gsl-2.5/multifit_nlinear/test_exp1.c @@ -0,0 +1,138 @@ +#define exp1_N 45 +#define exp1_P 4 + +static double exp1_x0[exp1_P] = { -1.0, -2.0, 1.0, -1.0 }; +static double exp1_epsrel = 1.0e-4; + +static double exp1_Y[exp1_N] = { +0.090542, 0.124569, 0.179367, 0.195654, 0.269707, +0.286027, 0.289892, 0.317475, 0.308191, 0.336995, +0.348371, 0.321337, 0.299423, 0.338972, 0.304763, +0.288903, 0.300820, 0.303974, 0.283987, 0.262078, +0.281593, 0.267531, 0.218926, 0.225572, 0.200594, +0.197375, 0.182440, 0.183892, 0.152285, 0.174028, +0.150874, 0.126220, 0.126266, 0.106384, 0.118923, +0.091868, 0.128926, 0.119273, 0.115997, 0.105831, +0.075261, 0.068387, 0.090823, 0.085205, 0.067203 +}; + +static void +exp1_checksol(const double x[], const double sumsq, + const double epsrel, const char *sname, + const char *pname) +{ + size_t i; + const double sumsq_exact = 1.0e-2; + const double exp1_x[exp1_P] = { -4.0, -5.0, 4.0, -4.0 }; /* approx */ + + gsl_test_rel(sumsq, sumsq_exact, epsrel, "%s/%s sumsq", + sname, pname); + + for (i = 0; i < exp1_P; ++i) + { + gsl_test_rel(x[i], exp1_x[i], epsrel, "%s/%s i=%zu", + sname, pname, i); + } +} + +static int +exp1_f (const gsl_vector * x, void *params, gsl_vector * f) +{ + double x1 = gsl_vector_get(x, 0); + double x2 = gsl_vector_get(x, 1); + double x3 = gsl_vector_get(x, 2); + double x4 = gsl_vector_get(x, 3); + size_t i; + + for (i = 0; i < exp1_N; ++i) + { + double ti = 0.02*(i + 1.0); + double yi = exp1_Y[i]; + double fi = yi - (x3*exp(x1*ti) + x4*exp(x2*ti)); + gsl_vector_set(f, i, fi); + } + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +exp1_df (const gsl_vector * x, void *params, gsl_matrix * J) +{ + double x1 = gsl_vector_get(x, 0); + double x2 = gsl_vector_get(x, 1); + double x3 = gsl_vector_get(x, 2); + double x4 = gsl_vector_get(x, 3); + size_t i; + + for (i = 0; i < exp1_N; ++i) + { + double ti = 0.02*(i + 1.0); + double term1 = exp(x1*ti); + double term2 = exp(x2*ti); + + gsl_matrix_set(J, i, 0, -x3*ti*term1); + gsl_matrix_set(J, i, 1, -x4*ti*term2); + gsl_matrix_set(J, i, 2, -term1); + gsl_matrix_set(J, i, 3, -term2); + } + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +exp1_fvv (const gsl_vector * x, const gsl_vector * v, + void *params, gsl_vector * fvv) +{ + double x1 = gsl_vector_get(x, 0); + double x2 = gsl_vector_get(x, 1); + double x3 = gsl_vector_get(x, 2); + double x4 = gsl_vector_get(x, 3); + double v1 = gsl_vector_get(v, 0); + double v2 = gsl_vector_get(v, 1); + double v3 = gsl_vector_get(v, 2); + double v4 = gsl_vector_get(v, 3); + size_t i; + + for (i = 0; i < exp1_N; ++i) + { + double ti = 0.02*(i + 1.0); + double term1 = exp(x1*ti); + double term2 = exp(x2*ti); + double term3 = 2*v3 + ti*v1*x3; + double term4 = 2*v4 + ti*v2*x4; + + gsl_vector_set(fvv, i, -ti*(v1*term1*term3 + v2*term2*term4)); + } + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static gsl_multifit_nlinear_fdf exp1_func = +{ + exp1_f, + exp1_df, + exp1_fvv, + exp1_N, + exp1_P, + NULL, + 0, + 0, + 0 +}; + +static test_fdf_problem exp1_problem = +{ + "expfit1", + exp1_x0, + NULL, + NULL, + &exp1_epsrel, + &exp1_checksol, + &exp1_func +}; diff --git a/gsl-2.5/multifit_nlinear/test_fdf.c b/gsl-2.5/multifit_nlinear/test_fdf.c new file mode 100644 index 00000000..d0db2a15 --- /dev/null +++ b/gsl-2.5/multifit_nlinear/test_fdf.c @@ -0,0 +1,365 @@ +/* multifit_nlinear/test_fdf.c + * + * Copyright (C) 2007, 2013, 2014, 2015, 2016 Brian Gough, Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +typedef struct +{ + const char *name; + double *x0; /* initial parameters (size p) */ + double *weights; /* data weights */ + double *sigma; + double *epsrel; /* relative tolerance for solution checking */ + void (*checksol) (const double x[], const double sumsq, + const double epsrel, const char *sname, + const char *pname); + gsl_multifit_nlinear_fdf *fdf; +} test_fdf_problem; + +#include "test_bard.c" +#include "test_beale.c" +#include "test_biggs.c" +#include "test_box.c" +#include "test_boxbod.c" +#include "test_brown1.c" +#include "test_brown2.c" +#include "test_brown3.c" +#include "test_eckerle.c" +#include "test_enso.c" +#include "test_exp1.c" +#include "test_gaussian.c" +#include "test_hahn1.c" +#include "test_helical.c" +#include "test_jennrich.c" +#include "test_kirby2.c" +#include "test_kowalik.c" +#include "test_lin1.c" +#include "test_lin2.c" +#include "test_lin3.c" +#include "test_meyer.c" +#include "test_meyerscal.c" +#include "test_osborne.c" +#include "test_penalty1.c" +#include "test_penalty2.c" +#include "test_powell1.c" +#include "test_powell2.c" +#include "test_powell3.c" +#include "test_rat42.c" +#include "test_rat43.c" +#include "test_rosenbrock.c" +#include "test_rosenbrocke.c" +#include "test_roth.c" +#include "test_thurber.c" +#include "test_vardim.c" +#include "test_watson.c" +#include "test_wood.c" + +#include "test_wnlin.c" + +static void test_fdf(const gsl_multifit_nlinear_type * T, + const gsl_multifit_nlinear_parameters * params, + const double xtol, const double gtol, + const double ftol, + const double epsrel, + test_fdf_problem *problem); +static void test_fdf_checksol(const char *sname, const char *pname, + const double epsrel, + gsl_multifit_nlinear_workspace *s, + test_fdf_problem *problem); + +/* + * FIXME: some test problems are disabled since they fail on certain + * solvers. Known failures are: + * + * Method test-problem + * ====== ============ + * dogleg thurbera + * dogleg rat43a + * all boxboda + */ + +static test_fdf_problem *test_problems[] = { + /* + * These test problems are taken from + * + * H. B. Nielsen, UCTP test problems for unconstrained optimization, + * IMM Department of Mathematical Modeling, Tech. Report + * IMM-REP-2000-17, 2000. + */ + &lin1_problem, /* 1 */ + &lin2_problem, /* 2 */ + &lin3_problem, /* 3 */ + &rosenbrock_problem, /* 4 */ + &helical_problem, /* 5 */ + &powell1_problem, /* 6 */ + &roth_problem, /* 7 */ + &bard_problem, /* 8 */ + &kowalik_problem, /* 9 */ + &meyer_problem, /* 10 */ + &watson_problem, /* 11 */ + &box_problem, /* 12 */ + &jennrich_problem, /* 13 */ + &brown1_problem, /* 14 */ + &brown2_problem, /* 16 */ + &osborne_problem, /* 17 */ + &exp1_problem, /* 18 */ + &meyerscal_problem, /* 20 */ + + &powell2_problem, + + /* + * These tests are from + * + * J. J. More, B. S. Garbow and K. E. Hillstrom, Testing + * Unconstrained Optimization Software, ACM Trans. Math. Soft. + * Vol 7, No 1, 1981. + * + * Many of these overlap with the Nielsen tests + */ + &rosenbrock_problem, /* 1 */ + &roth_problem, /* 2 */ + &powell3_problem, /* 3 */ + &brown3_problem, /* 4 */ + &beale_problem, /* 5 */ + &jennrich_problem, /* 6 */ + &helical_problem, /* 7 */ + &bard_problem, /* 8 */ + &gaussian_problem, /* 9 */ + &meyer_problem, /* 10 */ + &box_problem, /* 12 */ + &powell1_problem, /* 13 */ + &wood_problem, /* 14 */ + &kowalik_problem, /* 15 */ + &brown1_problem, /* 16 */ + &osborne_problem, /* 17 */ + &biggs_problem, /* 18 */ + &watson_problem, /* 20 */ + &rosenbrocke_problem, /* 21 */ + &penalty1_problem, /* 23 */ + &penalty2_problem, /* 24 */ + &vardim_problem, /* 25 */ + &brown2_problem, /* 27 */ + &lin1_problem, /* 32 */ + &lin2_problem, /* 33 */ + &lin3_problem, /* 34 */ + + /* NIST test cases */ + &kirby2a_problem, + &kirby2b_problem, + &hahn1a_problem, + &hahn1b_problem, + &ensoa_problem, + &ensob_problem, + /*&thurbera_problem,*/ + &thurberb_problem, + /*&boxboda_problem,*/ + &boxbodb_problem, + &rat42a_problem, + &rat42b_problem, + &eckerlea_problem, + &eckerleb_problem, + /*&rat43a_problem,*/ + &rat43b_problem, + + /* weighted test cases */ + &wnlin_problem1, + &wnlin_problem2, + + NULL +}; + +static void +test_fdf_main(const gsl_multifit_nlinear_parameters * params) +{ + const double xtol = pow(GSL_DBL_EPSILON, 0.9); + const double gtol = pow(GSL_DBL_EPSILON, 0.9); + const double ftol = 0.0; + size_t i; + + for (i = 0; test_problems[i] != NULL; ++i) + { + test_fdf_problem *problem = test_problems[i]; + double epsrel = *(problem->epsrel); + gsl_multifit_nlinear_fdf fdf; + + test_fdf(gsl_multifit_nlinear_trust, params, xtol, gtol, ftol, + epsrel, problem); + + /* test finite difference Jacobian + * XXX: watson problem doesn't work with forward differences */ + if (problem != &watson_problem) + { + fdf.df = problem->fdf->df; + problem->fdf->df = NULL; + + test_fdf(gsl_multifit_nlinear_trust, params, xtol, gtol, ftol, + 1.0e3 * epsrel, problem); + + problem->fdf->df = fdf.df; + } + +#if 0 /*XXX: box3d test fails on MacOS here */ + if (params->trs == gsl_multifit_nlinear_trs_lmaccel && problem->fdf->fvv != NULL) + { + /* test finite difference second directional derivative */ + fdf.fvv = problem->fdf->fvv; + problem->fdf->fvv = NULL; + + test_fdf(gsl_multifit_nlinear_trust, params, xtol, gtol, ftol, + epsrel / params->h_fvv, problem); + + problem->fdf->fvv = fdf.fvv; + } +#endif + } +} + +/* +test_fdf() + Test a weighted nonlinear least squares problem + +Inputs: T - solver to use + params - solver parameters + xtol - tolerance in x + gtol - tolerance in gradient + ftol - tolerance in residual vector + epsrel - relative error tolerance in solution + problem - contains the nonlinear problem and solution point +*/ + +static void +test_fdf(const gsl_multifit_nlinear_type * T, + const gsl_multifit_nlinear_parameters * params, + const double xtol, const double gtol, const double ftol, + const double epsrel, + test_fdf_problem *problem) +{ + gsl_multifit_nlinear_fdf *fdf = problem->fdf; + const size_t n = fdf->n; + const size_t p = fdf->p; + const size_t max_iter = 2500; + gsl_vector *x0 = gsl_vector_alloc(p); + gsl_vector_view x0v = gsl_vector_view_array(problem->x0, p); + gsl_multifit_nlinear_workspace *w = + gsl_multifit_nlinear_alloc (T, params, n, p); + const char *pname = problem->name; + char buf[2048]; + char sname[2048]; + int status, info; + + sprintf(buf, "%s/%s/scale=%s/solver=%s", + gsl_multifit_nlinear_name(w), + params->trs->name, + params->scale->name, + params->solver->name); + + if (problem->fdf->df == NULL) + { + if (params->fdtype == GSL_MULTIFIT_NLINEAR_FWDIFF) + strcat(buf, "/fdjac,forward"); + else + strcat(buf, "/fdjac,center"); + } + + if (problem->fdf->fvv == NULL) + { + strcat(buf, "/fdfvv"); + } + + strcpy(sname, buf); + + gsl_vector_memcpy(x0, &x0v.vector); + + if (problem->weights != NULL) + { + gsl_vector_const_view wv = gsl_vector_const_view_array(problem->weights, n); + gsl_multifit_nlinear_winit(x0, &wv.vector, fdf, w); + } + else + gsl_multifit_nlinear_init(x0, fdf, w); + + status = gsl_multifit_nlinear_driver(max_iter, xtol, gtol, ftol, + NULL, NULL, &info, w); + gsl_test(status, "%s/%s did not converge, status=%s", + sname, pname, gsl_strerror(status)); + + /* check solution */ + test_fdf_checksol(sname, pname, epsrel, w, problem); + + if (problem->weights == NULL) + { + /* test again with weighting matrix W = I */ + gsl_vector *wv = gsl_vector_alloc(n); + + sprintf(sname, "%s/weighted", buf); + + gsl_vector_memcpy(x0, &x0v.vector); + + gsl_vector_set_all(wv, 1.0); + gsl_multifit_nlinear_winit(x0, wv, fdf, w); + + status = gsl_multifit_nlinear_driver(max_iter, xtol, gtol, ftol, + NULL, NULL, &info, w); + gsl_test(status, "%s/%s did not converge, status=%s", + sname, pname, gsl_strerror(status)); + + test_fdf_checksol(sname, pname, epsrel, w, problem); + + gsl_vector_free(wv); + } + + gsl_multifit_nlinear_free(w); + gsl_vector_free(x0); +} + +static void +test_fdf_checksol(const char *sname, const char *pname, + const double epsrel, + gsl_multifit_nlinear_workspace *w, + test_fdf_problem *problem) +{ + gsl_multifit_nlinear_fdf *fdf = problem->fdf; + const double *sigma = problem->sigma; + gsl_vector *f = gsl_multifit_nlinear_residual(w); + gsl_vector *x = gsl_multifit_nlinear_position(w); + double sumsq; + + /* check solution vector x and sumsq = ||f||^2 */ + gsl_blas_ddot(f, f, &sumsq); + (problem->checksol)(x->data, sumsq, epsrel, sname, pname); + + /* check variances */ + if (sigma) + { + const size_t n = fdf->n; + const size_t p = fdf->p; + size_t i; + gsl_matrix * covar = gsl_matrix_alloc (p, p); + gsl_matrix *J = gsl_multifit_nlinear_jac (w); + + gsl_multifit_nlinear_covar (J, 0.0, covar); + + for (i = 0; i < p; i++) + { + double ei = sqrt(sumsq/(n-p))*sqrt(gsl_matrix_get(covar,i,i)); + gsl_test_rel (ei, sigma[i], epsrel, + "%s/%s, sigma(%d)", sname, pname, i) ; + } + + gsl_matrix_free (covar); + } +} diff --git a/gsl-2.5/multifit_nlinear/test_gaussian.c b/gsl-2.5/multifit_nlinear/test_gaussian.c new file mode 100644 index 00000000..87f05d84 --- /dev/null +++ b/gsl-2.5/multifit_nlinear/test_gaussian.c @@ -0,0 +1,135 @@ +#define gaussian_N 15 +#define gaussian_P 3 + +static double gaussian_x0[gaussian_P] = { 0.4, 1.0, 0.0 }; +static double gaussian_epsrel = 1.0e-10; + +static double gaussian_Y[gaussian_N] = { +0.0009, 0.0044, 0.0175, 0.0540, 0.1295, 0.2420, 0.3521, 0.3989, +0.3521, 0.2420, 0.1295, 0.0540, 0.0175, 0.0044, 0.0009 +}; + +static void +gaussian_checksol(const double x[], const double sumsq, + const double epsrel, const char *sname, + const char *pname) +{ + size_t i; + const double sumsq_exact = 1.12793276961871985e-08; + const double gaussian_x[gaussian_P] = { 0.398956137838762825, + 1.00001908448786647, + 0.0 }; + + gsl_test_rel(sumsq, sumsq_exact, epsrel, "%s/%s sumsq", + sname, pname); + + for (i = 0; i < gaussian_P; ++i) + { + gsl_test_rel(x[i], gaussian_x[i], epsrel, "%s/%s i=%zu", + sname, pname, i); + } +} + +static int +gaussian_f (const gsl_vector * x, void *params, gsl_vector * f) +{ + double x1 = gsl_vector_get(x, 0); + double x2 = gsl_vector_get(x, 1); + double x3 = gsl_vector_get(x, 2); + size_t i; + + for (i = 0; i < gaussian_N; ++i) + { + double ti = (7.0 - i) / 2.0; + double yi = gaussian_Y[i]; + double term = ti - x3; + double fi = x1 * exp(-x2*term*term/2.0) - yi; + gsl_vector_set(f, i, fi); + } + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +gaussian_df (const gsl_vector * x, void *params, gsl_matrix * J) +{ + double x1 = gsl_vector_get(x, 0); + double x2 = gsl_vector_get(x, 1); + double x3 = gsl_vector_get(x, 2); + size_t i; + + for (i = 0; i < gaussian_N; ++i) + { + double ti = (7.0 - i) / 2.0; + double term1 = ti - x3; + double term2 = exp(-x2*term1*term1/2.0); + + gsl_matrix_set(J, i, 0, term2); + gsl_matrix_set(J, i, 1, -0.5*x1*term2*term1*term1); + gsl_matrix_set(J, i, 2, x1*x2*term1*term2); + } + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +gaussian_fvv (const gsl_vector * x, const gsl_vector * v, + void *params, gsl_vector * fvv) +{ + double x1 = gsl_vector_get(x, 0); + double x2 = gsl_vector_get(x, 1); + double x3 = gsl_vector_get(x, 2); + double v1 = gsl_vector_get(v, 0); + double v2 = gsl_vector_get(v, 1); + double v3 = gsl_vector_get(v, 2); + size_t i; + + for (i = 0; i < gaussian_N; ++i) + { + double ti = (7.0 - i) / 2.0; + double term1 = ti - x3; + double term2 = exp(-x2*term1*term1/2.0); + + gsl_vector_set(fvv, i, 0.25 * term2 * + (ti*ti*ti*ti*v2*v2*x1 - + 4*ti*ti*ti*v2*x1*(v3*x2 + v2*x3) + + v2*x3*x3*(v2*x1*x3*x3 - 4*v1) + + 4*v3*v3*x1*x2*(x2*x3*x3 - 1.0) + + 4*v3*x3*(-2*v1*x2 + v2*x1*(x2*x3*x3 - 2.0)) + + ti*ti*(4*v3*v3*x1*x2*x2 + 2*v2*(-2*v1 + 3*x1*x3*(2*v3*x2 + v2*x3))) - + 4*ti*(v2*v2*x1*x3*x3*x3 + 2*v3*x2*(-v1 + v3*x1*x2*x3) + + v2*(-2*v1*x3 + v3*x1*(-2.0 + 3*x2*x3*x3))))); + } + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static gsl_multifit_nlinear_fdf gaussian_func = +{ + gaussian_f, + gaussian_df, + gaussian_fvv, + gaussian_N, + gaussian_P, + NULL, + 0, + 0, + 0 +}; + +static test_fdf_problem gaussian_problem = +{ + "gaussian", + gaussian_x0, + NULL, + NULL, + &gaussian_epsrel, + &gaussian_checksol, + &gaussian_func +}; diff --git a/gsl-2.5/multifit_nlinear/test_hahn1.c b/gsl-2.5/multifit_nlinear/test_hahn1.c new file mode 100644 index 00000000..a33f4cc9 --- /dev/null +++ b/gsl-2.5/multifit_nlinear/test_hahn1.c @@ -0,0 +1,226 @@ +#define hahn1_N 236 +#define hahn1_P 7 + +static double hahn1_x0a[hahn1_P] = { 10, -1, 0.05, -0.00001, -0.05, 0.001, -0.000001 }; +static double hahn1_x0b[hahn1_P] = { 1, -0.1, 0.005, -0.000001, -0.005, 0.0001, -0.0000001}; + +static double hahn1_epsrel = 1.0e-5; + +static double hahn1_sigma[hahn1_P] = { + 1.7070154742E-01, 1.2000289189E-02, 2.2508314937E-04, 2.7578037666E-07, + 2.4712888219E-04, 1.0449373768E-05, 1.3027335327E-08 +}; + +static double hahn1_F1[hahn1_N] = { + .591E0, 1.547E0, 2.902E0, 2.894E0, 4.703E0, + 6.307E0, 7.03E0 , 7.898E0, 9.470E0, 9.484E0, + 10.072E0, 10.163E0, 11.615E0, 12.005E0, 12.478E0, + 12.982E0, 12.970E0, 13.926E0, 14.452E0, 14.404E0, + 15.190E0, 15.550E0, 15.528E0, 15.499E0, 16.131E0, + 16.438E0, 16.387E0, 16.549E0, 16.872E0, 16.830E0, + 16.926E0, 16.907E0, 16.966E0, 17.060E0, 17.122E0, + 17.311E0, 17.355E0, 17.668E0, 17.767E0, 17.803E0, + 17.765E0, 17.768E0, 17.736E0, 17.858E0, 17.877E0, + 17.912E0, 18.046E0, 18.085E0, 18.291E0, 18.357E0, + 18.426E0, 18.584E0, 18.610E0, 18.870E0, 18.795E0, + 19.111E0, .367E0, .796E0, 0.892E0, 1.903E0, + 2.150E0, 3.697E0, 5.870E0, 6.421E0, 7.422E0, + 9.944E0, 11.023E0, 11.87E0 , 12.786E0, 14.067E0, + 13.974E0, 14.462E0, 14.464E0, 15.381E0, 15.483E0, + 15.59E0 , 16.075E0, 16.347E0, 16.181E0, 16.915E0, + 17.003E0, 16.978E0, 17.756E0, 17.808E0, 17.868E0, + 18.481E0, 18.486E0, 19.090E0, 16.062E0, 16.337E0, + 16.345E0, 16.388E0, 17.159E0, 17.116E0, 17.164E0, + 17.123E0, 17.979E0, 17.974E0, 18.007E0, 17.993E0, + 18.523E0, 18.669E0, 18.617E0, 19.371E0, 19.330E0, + 0.080E0, 0.248E0, 1.089E0, 1.418E0, 2.278E0, + 3.624E0, 4.574E0, 5.556E0, 7.267E0, 7.695E0, + 9.136E0, 9.959E0, 9.957E0, 11.600E0, 13.138E0, + 13.564E0, 13.871E0, 13.994E0, 14.947E0, 15.473E0, + 15.379E0, 15.455E0, 15.908E0, 16.114E0, 17.071E0, + 17.135E0, 17.282E0, 17.368E0, 17.483E0, 17.764E0, + 18.185E0, 18.271E0, 18.236E0, 18.237E0, 18.523E0, + 18.627E0, 18.665E0, 19.086E0, 0.214E0, 0.943E0, + 1.429E0, 2.241E0, 2.951E0, 3.782E0, 4.757E0, + 5.602E0, 7.169E0, 8.920E0, 10.055E0, 12.035E0, + 12.861E0, 13.436E0, 14.167E0, 14.755E0, 15.168E0, + 15.651E0, 15.746E0, 16.216E0, 16.445E0, 16.965E0, + 17.121E0, 17.206E0, 17.250E0, 17.339E0, 17.793E0, + 18.123E0, 18.49E0 , 18.566E0, 18.645E0, 18.706E0, + 18.924E0, 19.1E0 , 0.375E0, 0.471E0, 1.504E0, + 2.204E0, 2.813E0, 4.765E0, 9.835E0, 10.040E0, + 11.946E0, 12.596E0, 13.303E0, 13.922E0, 14.440E0, + 14.951E0, 15.627E0, 15.639E0, 15.814E0, 16.315E0, + 16.334E0, 16.430E0, 16.423E0, 17.024E0, 17.009E0, + 17.165E0, 17.134E0, 17.349E0, 17.576E0, 17.848E0, + 18.090E0, 18.276E0, 18.404E0, 18.519E0, 19.133E0, + 19.074E0, 19.239E0, 19.280E0, 19.101E0, 19.398E0, + 19.252E0, 19.89E0 , 20.007E0, 19.929E0, 19.268E0, + 19.324E0, 20.049E0, 20.107E0, 20.062E0, 20.065E0, + 19.286E0, 19.972E0, 20.088E0, 20.743E0, 20.83E0 , + 20.935E0, 21.035E0, 20.93E0 , 21.074E0, 21.085E0, + 20.935E0 +}; + + +static double hahn1_F0[hahn1_N] = { + 24.41E0, 34.82E0, 44.09E0, 45.07E0, 54.98E0, + 65.51E0, 70.53E0, 75.70E0, 89.57E0, 91.14E0, + 96.40E0, 97.19E0, 114.26E0, 120.25E0, 127.08E0, + 133.55E0, 133.61E0, 158.67E0, 172.74E0, 171.31E0, + 202.14E0, 220.55E0, 221.05E0, 221.39E0, 250.99E0, + 268.99E0, 271.80E0, 271.97E0, 321.31E0, 321.69E0, + 330.14E0, 333.03E0, 333.47E0, 340.77E0, 345.65E0, + 373.11E0, 373.79E0, 411.82E0, 419.51E0, 421.59E0, + 422.02E0, 422.47E0, 422.61E0, 441.75E0, 447.41E0, + 448.7E0 , 472.89E0, 476.69E0, 522.47E0, 522.62E0, + 524.43E0, 546.75E0, 549.53E0, 575.29E0, 576.00E0, + 625.55E0, 20.15E0, 28.78E0, 29.57E0, 37.41E0, + 39.12E0, 50.24E0, 61.38E0, 66.25E0, 73.42E0, + 95.52E0, 107.32E0, 122.04E0, 134.03E0, 163.19E0, + 163.48E0, 175.70E0, 179.86E0, 211.27E0, 217.78E0, + 219.14E0, 262.52E0, 268.01E0, 268.62E0, 336.25E0, + 337.23E0, 339.33E0, 427.38E0, 428.58E0, 432.68E0, + 528.99E0, 531.08E0, 628.34E0, 253.24E0, 273.13E0, + 273.66E0, 282.10E0, 346.62E0, 347.19E0, 348.78E0, + 351.18E0, 450.10E0, 450.35E0, 451.92E0, 455.56E0, + 552.22E0, 553.56E0, 555.74E0, 652.59E0, 656.20E0, + 14.13E0, 20.41E0, 31.30E0, 33.84E0, 39.70E0, + 48.83E0, 54.50E0, 60.41E0, 72.77E0, 75.25E0, + 86.84E0, 94.88E0, 96.40E0, 117.37E0, 139.08E0, + 147.73E0, 158.63E0, 161.84E0, 192.11E0, 206.76E0, + 209.07E0, 213.32E0, 226.44E0, 237.12E0, 330.90E0, + 358.72E0, 370.77E0, 372.72E0, 396.24E0, 416.59E0, + 484.02E0, 495.47E0, 514.78E0, 515.65E0, 519.47E0, + 544.47E0, 560.11E0, 620.77E0, 18.97E0, 28.93E0, + 33.91E0, 40.03E0, 44.66E0, 49.87E0, 55.16E0, + 60.90E0, 72.08E0, 85.15E0, 97.06E0, 119.63E0, + 133.27E0, 143.84E0, 161.91E0, 180.67E0, 198.44E0, + 226.86E0, 229.65E0, 258.27E0, 273.77E0, 339.15E0, + 350.13E0, 362.75E0, 371.03E0, 393.32E0, 448.53E0, + 473.78E0, 511.12E0, 524.70E0, 548.75E0, 551.64E0, + 574.02E0, 623.86E0, 21.46E0, 24.33E0, 33.43E0, + 39.22E0, 44.18E0, 55.02E0, 94.33E0, 96.44E0, + 118.82E0, 128.48E0, 141.94E0, 156.92E0, 171.65E0, + 190.00E0, 223.26E0, 223.88E0, 231.50E0, 265.05E0, + 269.44E0, 271.78E0, 273.46E0, 334.61E0, 339.79E0, + 349.52E0, 358.18E0, 377.98E0, 394.77E0, 429.66E0, + 468.22E0, 487.27E0, 519.54E0, 523.03E0, 612.99E0, + 638.59E0, 641.36E0, 622.05E0, 631.50E0, 663.97E0, + 646.9E0 , 748.29E0, 749.21E0, 750.14E0, 647.04E0, + 646.89E0, 746.9E0 , 748.43E0, 747.35E0, 749.27E0, + 647.61E0, 747.78E0, 750.51E0, 851.37E0, 845.97E0, + 847.54E0, 849.93E0, 851.61E0, 849.75E0, 850.98E0, + 848.23E0 +}; + +static void +hahn1_checksol(const double x[], const double sumsq, + const double epsrel, const char *sname, + const char *pname) +{ + size_t i; + const double sumsq_exact = 1.5324382854E+00; + const double hahn1_x[hahn1_P] = { + 1.0776351733E+00, -1.2269296921E-01, 4.0863750610E-03, + -1.4262662514E-06, -5.7609940901E-03, 2.4053735503E-04, + -1.2314450199E-07 }; + + gsl_test_rel(sumsq, sumsq_exact, epsrel, "%s/%s sumsq", + sname, pname); + + for (i = 0; i < hahn1_P; ++i) + { + gsl_test_rel(x[i], hahn1_x[i], epsrel, "%s/%s i=%zu", + sname, pname, i); + } +} + +static int +hahn1_f (const gsl_vector * x, void *params, gsl_vector * f) +{ + double b[hahn1_P]; + size_t i; + + for (i = 0; i < hahn1_P; i++) + { + b[i] = gsl_vector_get(x, i); + } + + for (i = 0; i < hahn1_N; i++) + { + double t = hahn1_F0[i]; + double y = ((b[0] + t* (b[1] + t * (b[2] + t * b[3]))) + / (1 + t*(b[4] + t *(b[5] + t*b[6])))); + gsl_vector_set (f, i, hahn1_F1[i] - y); + } + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +hahn1_df (const gsl_vector * x, void *params, gsl_matrix * df) +{ + double b[hahn1_P]; + size_t i; + + for (i = 0; i < hahn1_P; i++) + { + b[i] = gsl_vector_get(x, i); + } + + for (i = 0; i < hahn1_N; i++) + { + double t = hahn1_F0[i]; + double u = (b[0] + t*(b[1] + t*(b[2] + t * b[3]))); + double v = (1 + t*(b[4] + t*(b[5] + t*b[6]))); + gsl_matrix_set (df, i, 0, -1/v); + gsl_matrix_set (df, i, 1, -t/v); + gsl_matrix_set (df, i, 2, -t*t/v); + gsl_matrix_set (df, i, 3, -t*t*t/v); + gsl_matrix_set (df, i, 4, t*u/(v*v)); + gsl_matrix_set (df, i, 5, t*t*u/(v*v)); + gsl_matrix_set (df, i, 6, t*t*t*u/(v*v)); + } + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static gsl_multifit_nlinear_fdf hahn1_func = +{ + hahn1_f, + hahn1_df, + NULL, /* analytic expression too complex */ + hahn1_N, + hahn1_P, + NULL, + 0, + 0, + 0 +}; + +static test_fdf_problem hahn1a_problem = +{ + "nist-hahn1a", + hahn1_x0a, + NULL, + hahn1_sigma, + &hahn1_epsrel, + &hahn1_checksol, + &hahn1_func +}; + +static test_fdf_problem hahn1b_problem = +{ + "nist-hahn1b", + hahn1_x0b, + NULL, + hahn1_sigma, + &hahn1_epsrel, + &hahn1_checksol, + &hahn1_func +}; diff --git a/gsl-2.5/multifit_nlinear/test_helical.c b/gsl-2.5/multifit_nlinear/test_helical.c new file mode 100644 index 00000000..c9139120 --- /dev/null +++ b/gsl-2.5/multifit_nlinear/test_helical.c @@ -0,0 +1,115 @@ +#define helical_N 3 +#define helical_P 3 + +static double helical_x0[helical_P] = { -1.0, 0.0, 0.0 }; +static double helical_x[helical_P] = { 1.0, 0.0, 0.0 }; + +static double helical_epsrel = 1.0e-12; + +static void +helical_checksol(const double x[], const double sumsq, + const double epsrel, const char *sname, + const char *pname) +{ + size_t i; + const double sumsq_exact = 0.0; + + gsl_test_rel(sumsq, sumsq_exact, epsrel, "%s/%s sumsq", + sname, pname); + + for (i = 0; i < helical_P; ++i) + { + gsl_test_rel(x[i], helical_x[i], epsrel, "%s/%s i=%zu", + sname, pname, i); + } +} + +static int +helical_f (const gsl_vector * x, void *params, gsl_vector * f) +{ + double x1 = gsl_vector_get(x, 0); + double x2 = gsl_vector_get(x, 1); + double x3 = gsl_vector_get(x, 2); + double theta = (x1 >= 0.0) ? 0.0 : 5.0; + double nx = gsl_hypot(x1, x2); + + gsl_vector_set(f, 0, 10.0 * (x3 - 5.0/M_PI*atan(x2 / x1) - theta)); + gsl_vector_set(f, 1, 10.0*(nx - 1.0)); + gsl_vector_set(f, 2, x3); + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +helical_df (const gsl_vector * x, void *params, gsl_matrix * J) +{ + double x1 = gsl_vector_get(x, 0); + double x2 = gsl_vector_get(x, 1); + double nx = gsl_hypot(x1, x2); + double nx_sq = nx * nx; + double term1 = 50.0 / (M_PI * nx_sq); + double term2 = 10.0 / nx; + + gsl_matrix_set(J, 0, 0, term1*x2); + gsl_matrix_set(J, 0, 1, -term1*x1); + gsl_matrix_set(J, 0, 2, 10.0); + + gsl_matrix_set(J, 1, 0, term2*x1); + gsl_matrix_set(J, 1, 1, term2*x2); + gsl_matrix_set(J, 1, 2, 0.0); + + gsl_matrix_set(J, 2, 0, 0.0); + gsl_matrix_set(J, 2, 1, 0.0); + gsl_matrix_set(J, 2, 2, 1.0); + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +helical_fvv (const gsl_vector * x, const gsl_vector * v, + void *params, gsl_vector * fvv) +{ + double x1 = gsl_vector_get(x, 0); + double x2 = gsl_vector_get(x, 1); + double v1 = gsl_vector_get(v, 0); + double v2 = gsl_vector_get(v, 1); + double term1 = v2*x1 - v1*x2; + double term2 = v1*x1 + v2*x2; + double term3 = x1*x1 + x2*x2; + + gsl_vector_set(fvv, 0, 100.0 / M_PI * (term1 / term3) * (term2 / term3)); + gsl_vector_set(fvv, 1, 10.0 * (term1 * term1) / pow(term3, 1.5)); + gsl_vector_set(fvv, 2, 0.0); + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static gsl_multifit_nlinear_fdf helical_func = +{ + helical_f, + helical_df, + helical_fvv, + helical_N, + helical_P, + NULL, + 0, + 0, + 0 +}; + +static test_fdf_problem helical_problem = +{ + "helical", + helical_x0, + NULL, + NULL, + &helical_epsrel, + &helical_checksol, + &helical_func +}; diff --git a/gsl-2.5/multifit_nlinear/test_jennrich.c b/gsl-2.5/multifit_nlinear/test_jennrich.c new file mode 100644 index 00000000..12806602 --- /dev/null +++ b/gsl-2.5/multifit_nlinear/test_jennrich.c @@ -0,0 +1,112 @@ +#define jennrich_N 10 +#define jennrich_P 2 + +static double jennrich_x0[jennrich_P] = { 0.3, 0.4 }; +static double jennrich_epsrel = 1.0e-7; + +static void +jennrich_checksol(const double x[], const double sumsq, + const double epsrel, const char *sname, + const char *pname) +{ + size_t i; + const double sumsq_exact = 1.243621823556148e+02; + const double jennrich_x[jennrich_P] = { 2.578252139935855e-01, + 2.578252133471426e-01 }; + + gsl_test_rel(sumsq, sumsq_exact, epsrel, "%s/%s sumsq", + sname, pname); + + for (i = 0; i < jennrich_P; ++i) + { + gsl_test_rel(x[i], jennrich_x[i], epsrel, "%s/%s i=%zu", + sname, pname, i); + } +} + +static int +jennrich_f (const gsl_vector * x, void *params, gsl_vector * f) +{ + double x1 = gsl_vector_get(x, 0); + double x2 = gsl_vector_get(x, 1); + size_t i; + + for (i = 0; i < jennrich_N; ++i) + { + double ip1 = i + 1.0; + double fi = 2.0*(i + 2.0) - (exp(x1*ip1) + exp(x2*ip1)); + gsl_vector_set(f, i, fi); + } + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +jennrich_df (const gsl_vector * x, void *params, gsl_matrix * J) +{ + double x1 = gsl_vector_get(x, 0); + double x2 = gsl_vector_get(x, 1); + size_t i; + + for (i = 0; i < jennrich_N; ++i) + { + double ip1 = i + 1.0; + + gsl_matrix_set(J, i, 0, -ip1*exp(ip1*x1)); + gsl_matrix_set(J, i, 1, -ip1*exp(ip1*x2)); + } + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +jennrich_fvv (const gsl_vector * x, const gsl_vector * v, + void *params, gsl_vector * fvv) +{ + double x1 = gsl_vector_get(x, 0); + double x2 = gsl_vector_get(x, 1); + double v1 = gsl_vector_get(v, 0); + double v2 = gsl_vector_get(v, 1); + size_t i; + + for (i = 0; i < jennrich_N; ++i) + { + double ip1 = i + 1.0; + double term1 = exp(ip1*x1); + double term2 = exp(ip1*x2); + + gsl_vector_set(fvv, i, -ip1*ip1*(v1*v1*term1 + v2*v2*term2)); + } + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static gsl_multifit_nlinear_fdf jennrich_func = +{ + jennrich_f, + jennrich_df, + jennrich_fvv, + jennrich_N, + jennrich_P, + NULL, + 0, + 0, + 0 +}; + +static test_fdf_problem jennrich_problem = +{ + "jennrich", + jennrich_x0, + NULL, + NULL, + &jennrich_epsrel, + &jennrich_checksol, + &jennrich_func +}; diff --git a/gsl-2.5/multifit_nlinear/test_kirby2.c b/gsl-2.5/multifit_nlinear/test_kirby2.c new file mode 100644 index 00000000..58e05f41 --- /dev/null +++ b/gsl-2.5/multifit_nlinear/test_kirby2.c @@ -0,0 +1,221 @@ +#define kirby2_N 151 +#define kirby2_P 5 + +static double kirby2_x0a[kirby2_P] = { 2.0, -0.1, 0.003, -0.001, 0.00001 }; +static double kirby2_x0b[kirby2_P] = { 1.5, -0.15, 0.0025, -0.0015, 0.00002 }; +static double kirby2_x[kirby2_P] = { 1.6745063063E+00, -1.3927397867E-01, 2.5961181191E-03, + -1.7241811870E-03, 2.1664802578E-05 }; + +static double kirby2_epsrel = 1.0e-5; + +static double kirby2_sigma[kirby2_P] = { + 8.7989634338E-02, 4.1182041386E-03, 4.1856520458E-05, + 5.8931897355E-05, 2.0129761919E-07 +}; + +static double kirby2_F1[kirby2_N] = { + 0.0082E0, 0.0112E0, 0.0149E0, 0.0198E0, 0.0248E0, + 0.0324E0, 0.0420E0, 0.0549E0, 0.0719E0, 0.0963E0, + 0.1291E0, 0.1710E0, 0.2314E0, 0.3227E0, 0.4809E0, + 0.7084E0, 1.0220E0, 1.4580E0, 1.9520E0, 2.5410E0, + 3.2230E0, 3.9990E0, 4.8520E0, 5.7320E0, 6.7270E0, + 7.8350E0, 9.0250E0, 10.2670E0, 11.5780E0, 12.9440E0, + 14.3770E0, 15.8560E0, 17.3310E0, 18.8850E0, 20.5750E0, + 22.3200E0, 22.3030E0, 23.4600E0, 24.0600E0, 25.2720E0, + 25.8530E0, 27.1100E0, 27.6580E0, 28.9240E0, 29.5110E0, + 30.7100E0, 31.3500E0, 32.5200E0, 33.2300E0, 34.3300E0, + 35.0600E0, 36.1700E0, 36.8400E0, 38.0100E0, 38.6700E0, + 39.8700E0, 40.0300E0, 40.5000E0, 41.3700E0, 41.6700E0, + 42.3100E0, 42.7300E0, 43.4600E0, 44.1400E0, 44.5500E0, + 45.2200E0, 45.9200E0, 46.3000E0, 47.0000E0, 47.6800E0, + 48.0600E0, 48.7400E0, 49.4100E0, 49.7600E0, 50.4300E0, + 51.1100E0, 51.5000E0, 52.1200E0, 52.7600E0, 53.1800E0, + 53.7800E0, 54.4600E0, 54.8300E0, 55.4000E0, 56.4300E0, + 57.0300E0, 58.0000E0, 58.6100E0, 59.5800E0, 60.1100E0, + 61.1000E0, 61.6500E0, 62.5900E0, 63.1200E0, 64.0300E0, + 64.6200E0, 65.4900E0, 66.0300E0, 66.8900E0, 67.4200E0, + 68.2300E0, 68.7700E0, 69.5900E0, 70.1100E0, 70.8600E0, + 71.4300E0, 72.1600E0, 72.7000E0, 73.4000E0, 73.9300E0, + 74.6000E0, 75.1600E0, 75.8200E0, 76.3400E0, 76.9800E0, + 77.4800E0, 78.0800E0, 78.6000E0, 79.1700E0, 79.6200E0, + 79.8800E0, 80.1900E0, 80.6600E0, 81.2200E0, 81.6600E0, + 82.1600E0, 82.5900E0, 83.1400E0, 83.5000E0, 84.0000E0, + 84.4000E0, 84.8900E0, 85.2600E0, 85.7400E0, 86.0700E0, + 86.5400E0, 86.8900E0, 87.3200E0, 87.6500E0, 88.1000E0, + 88.4300E0, 88.8300E0, 89.1200E0, 89.5400E0, 89.8500E0, + 90.2500E0, 90.5500E0, 90.9300E0, 91.2000E0, 91.5500E0, + 92.2000E0 +}; + + +static double kirby2_F0[kirby2_N] = { + 9.65E0, 10.74E0, 11.81E0, 12.88E0, 14.06E0, + 15.28E0, 16.63E0, 18.19E0, 19.88E0, 21.84E0, + 24.00E0, 26.25E0, 28.86E0, 31.85E0, 35.79E0, + 40.18E0, 44.74E0, 49.53E0, 53.94E0, 58.29E0, + 62.63E0, 67.03E0, 71.25E0, 75.22E0, 79.33E0, + 83.56E0, 87.75E0, 91.93E0, 96.10E0, 100.28E0, + 104.46E0, 108.66E0, 112.71E0, 116.88E0, 121.33E0, + 125.79E0, 125.79E0, 128.74E0, 130.27E0, 133.33E0, + 134.79E0, 137.93E0, 139.33E0, 142.46E0, 143.90E0, + 146.91E0, 148.51E0, 151.41E0, 153.17E0, 155.97E0, + 157.76E0, 160.56E0, 162.30E0, 165.21E0, 166.90E0, + 169.92E0, 170.32E0, 171.54E0, 173.79E0, 174.57E0, + 176.25E0, 177.34E0, 179.19E0, 181.02E0, 182.08E0, + 183.88E0, 185.75E0, 186.80E0, 188.63E0, 190.45E0, + 191.48E0, 193.35E0, 195.22E0, 196.23E0, 198.05E0, + 199.97E0, 201.06E0, 202.83E0, 204.69E0, 205.86E0, + 207.58E0, 209.50E0, 210.65E0, 212.33E0, 215.43E0, + 217.16E0, 220.21E0, 221.98E0, 225.06E0, 226.79E0, + 229.92E0, 231.69E0, 234.77E0, 236.60E0, 239.63E0, + 241.50E0, 244.48E0, 246.40E0, 249.35E0, 251.32E0, + 254.22E0, 256.24E0, 259.11E0, 261.18E0, 264.02E0, + 266.13E0, 268.94E0, 271.09E0, 273.87E0, 276.08E0, + 278.83E0, 281.08E0, 283.81E0, 286.11E0, 288.81E0, + 291.08E0, 293.75E0, 295.99E0, 298.64E0, 300.84E0, + 302.02E0, 303.48E0, 305.65E0, 308.27E0, 310.41E0, + 313.01E0, 315.12E0, 317.71E0, 319.79E0, 322.36E0, + 324.42E0, 326.98E0, 329.01E0, 331.56E0, 333.56E0, + 336.10E0, 338.08E0, 340.60E0, 342.57E0, 345.08E0, + 347.02E0, 349.52E0, 351.44E0, 353.93E0, 355.83E0, + 358.32E0, 360.20E0, 362.67E0, 364.53E0, 367.00E0, + 371.30E0 +}; + +static void +kirby2_checksol(const double x[], const double sumsq, + const double epsrel, const char *sname, + const char *pname) +{ + size_t i; + const double sumsq_exact = 3.9050739624E+00; + + gsl_test_rel(sumsq, sumsq_exact, epsrel, "%s/%s sumsq", + sname, pname); + + for (i = 0; i < kirby2_P; ++i) + { + gsl_test_rel(x[i], kirby2_x[i], epsrel, "%s/%s i=%zu", + sname, pname, i); + } +} + +static int +kirby2_f (const gsl_vector * x, void *params, gsl_vector * f) +{ + double b[kirby2_P]; + size_t i; + + for (i = 0; i < kirby2_P; i++) + { + b[i] = gsl_vector_get(x, i); + } + + for (i = 0; i < kirby2_N; i++) + { + double t = kirby2_F0[i]; + double y = ((b[0] + t* (b[1] + t * b[2])) + / (1 + t*(b[3] + t *b[4]))); + gsl_vector_set (f, i, kirby2_F1[i] - y); + } + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +kirby2_df (const gsl_vector * x, void *params, gsl_matrix * df) +{ + double b[kirby2_P]; + size_t i; + + for (i = 0; i < kirby2_P; i++) + { + b[i] = gsl_vector_get(x, i); + } + + for (i = 0; i < kirby2_N; i++) + { + double t = kirby2_F0[i]; + double u = (b[0] + t*(b[1] + t*b[2])); + double v = (1 + t*(b[3] + t*b[4])); + gsl_matrix_set (df, i, 0, -1/v); + gsl_matrix_set (df, i, 1, -t/v); + gsl_matrix_set (df, i, 2, -t*t/v); + gsl_matrix_set (df, i, 3, t*u/(v*v)); + gsl_matrix_set (df, i, 4, t*t*u/(v*v)); + } + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +kirby2_fvv (const gsl_vector * x, const gsl_vector * v, + void *params, gsl_vector * fvv) +{ + double x1 = gsl_vector_get(x, 0); + double x2 = gsl_vector_get(x, 1); + double x3 = gsl_vector_get(x, 2); + double x4 = gsl_vector_get(x, 3); + double x5 = gsl_vector_get(x, 4); + double v1 = gsl_vector_get(v, 0); + double v2 = gsl_vector_get(v, 1); + double v3 = gsl_vector_get(v, 2); + double v4 = gsl_vector_get(v, 3); + double v5 = gsl_vector_get(v, 4); + size_t i; + + for (i = 0; i < kirby2_N; i++) + { + double t = kirby2_F0[i]; + double term1 = 1.0 + t*(x4 + t*x5); + + gsl_vector_set(fvv, i, -2*t/pow(term1, 3.0) * + (v4 + t*v5) * + (-t*(-v2 + v4*x1 + + t*(-v3 + v5*x1 + v4*x2 + t*v5*x2 + t*(v4+t*v5)*x3)) + + t*t*(v2 + t*v3)*(x4 + t*x5) + v1*(1.0 + t*(x4 + t*x5)))); + } + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static gsl_multifit_nlinear_fdf kirby2_func = +{ + kirby2_f, + kirby2_df, + kirby2_fvv, + kirby2_N, + kirby2_P, + NULL, + 0, + 0, + 0 +}; + +static test_fdf_problem kirby2a_problem = +{ + "nist-kirby2a", + kirby2_x0a, + NULL, + kirby2_sigma, + &kirby2_epsrel, + &kirby2_checksol, + &kirby2_func +}; + +static test_fdf_problem kirby2b_problem = +{ + "nist-kirby2b", + kirby2_x0b, + NULL, + kirby2_sigma, + &kirby2_epsrel, + &kirby2_checksol, + &kirby2_func +}; diff --git a/gsl-2.5/multifit_nlinear/test_kowalik.c b/gsl-2.5/multifit_nlinear/test_kowalik.c new file mode 100644 index 00000000..12c5ca04 --- /dev/null +++ b/gsl-2.5/multifit_nlinear/test_kowalik.c @@ -0,0 +1,167 @@ +#define kowalik_N 11 +#define kowalik_P 4 + +static double kowalik_x0[kowalik_P] = { 0.25, 0.39, 0.415, 0.39 }; +static double kowalik_epsrel = 1.0e-6; + +static double kowalik_Y[kowalik_N] = { +0.1957, 0.1947, 0.1735, 0.1600, 0.0844, 0.0627, +0.0456, 0.0342, 0.0323, 0.0235, 0.0246 +}; + +static double kowalik_U[kowalik_N] = { +4.0000, 2.0000, 1.0000, 0.5000, 0.2500, 0.1670, +0.1250, 0.1000, 0.0833, 0.0714, 0.0625 +}; + +static void +kowalik_checksol(const double x[], const double sumsq, + const double epsrel, const char *sname, + const char *pname) +{ + size_t i; + gsl_vector_const_view v = gsl_vector_const_view_array(x, kowalik_P); + const double norm = gsl_blas_dnrm2(&v.vector); + const double sumsq_exact1 = 3.075056038492370e-04; + double kowalik_x1[kowalik_P] = { 1.928069345723978e-01, + 1.912823290344599e-01, + 1.230565070690708e-01, + 1.360623308065148e-01 }; + const double sumsq_exact2 = 0.00102734304869549252; + double kowalik_x2[kowalik_P] = { 0.0, /* inf */ + -14.0758834005984603, + 0.0, /* -inf */ + 0.0 }; /* -inf */ + const double *kowalik_x; + double sumsq_exact; + + kowalik_x2[0] = GSL_NAN; + kowalik_x2[2] = GSL_NAN; + kowalik_x2[3] = GSL_NAN; + + if (norm < 10.0) + { + kowalik_x = kowalik_x1; + sumsq_exact = sumsq_exact1; + } + else + { + kowalik_x = kowalik_x2; + sumsq_exact = sumsq_exact2; + } + + gsl_test_rel(sumsq, sumsq_exact, epsrel, "%s/%s sumsq", + sname, pname); + + for (i = 0; i < kowalik_P; ++i) + { + if (!gsl_finite(kowalik_x[i])) + continue; + + gsl_test_rel(x[i], kowalik_x[i], epsrel, "%s/%s i=%zu", + sname, pname, i); + } +} + +static int +kowalik_f (const gsl_vector * x, void *params, gsl_vector * f) +{ + double x1 = gsl_vector_get(x, 0); + double x2 = gsl_vector_get(x, 1); + double x3 = gsl_vector_get(x, 2); + double x4 = gsl_vector_get(x, 3); + size_t i; + + for (i = 0; i < kowalik_N; ++i) + { + double yi = kowalik_Y[i]; + double ui = kowalik_U[i]; + double fi = yi - (x1*ui*(ui+x2)) / (x4 + ui*(ui + x3)); + gsl_vector_set(f, i, fi); + } + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +kowalik_df (const gsl_vector * x, void *params, gsl_matrix * J) +{ + double x1 = gsl_vector_get(x, 0); + double x2 = gsl_vector_get(x, 1); + double x3 = gsl_vector_get(x, 2); + double x4 = gsl_vector_get(x, 3); + size_t i; + + for (i = 0; i < kowalik_N; ++i) + { + double ui = kowalik_U[i]; + double term1 = ui*(ui + x2); + double term2 = ui*(ui + x3) + x4; + + gsl_matrix_set(J, i, 0, -term1 / term2); + gsl_matrix_set(J, i, 1, -ui*x1/term2); + gsl_matrix_set(J, i, 2, ui*term1*x1 / (term2*term2)); + gsl_matrix_set(J, i, 3, term1*x1 / (term2*term2)); + } + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +kowalik_fvv (const gsl_vector * x, const gsl_vector * v, + void *params, gsl_vector * fvv) +{ + double x1 = gsl_vector_get(x, 0); + double x2 = gsl_vector_get(x, 1); + double x3 = gsl_vector_get(x, 2); + double x4 = gsl_vector_get(x, 3); + double v1 = gsl_vector_get(v, 0); + double v2 = gsl_vector_get(v, 1); + double v3 = gsl_vector_get(v, 2); + double v4 = gsl_vector_get(v, 3); + size_t i; + + for (i = 0; i < kowalik_N; ++i) + { + double ui = kowalik_U[i]; + double term2 = ui*(ui + x3) + x4; + double term3 = ui*ui*v1 - ui*v3*x1 - v4*x1 + + ui*v1*x3 + v1*x4; + double term4 = ui*ui*(v3-v2) + v4*x2 + + ui*(v4 + v3*x2 - v2*x3) - v2*x4; + + gsl_vector_set(fvv, i, 2.0*ui*term3*term4 / pow(term2, 3.0)); + } + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static gsl_multifit_nlinear_fdf kowalik_func = +{ + kowalik_f, + kowalik_df, + kowalik_fvv, + kowalik_N, + kowalik_P, + NULL, + 0, + 0, + 0 +}; + +static test_fdf_problem kowalik_problem = +{ + "kowalik", + kowalik_x0, + NULL, + NULL, + &kowalik_epsrel, + &kowalik_checksol, + &kowalik_func +}; diff --git a/gsl-2.5/multifit_nlinear/test_lin1.c b/gsl-2.5/multifit_nlinear/test_lin1.c new file mode 100644 index 00000000..a73fb164 --- /dev/null +++ b/gsl-2.5/multifit_nlinear/test_lin1.c @@ -0,0 +1,107 @@ +#define lin1_N 11 /* can be anything >= p */ +#define lin1_P 5 + +static double lin1_x0[lin1_P] = { 1.0, 1.0, 1.0, 1.0, 1.0 }; +static double lin1_epsrel = 1.0e-10; + +static void +lin1_checksol(const double x[], const double sumsq, + const double epsrel, const char *sname, + const char *pname) +{ + size_t i; + const double sumsq_exact = (double) (lin1_N - lin1_P); + + gsl_test_rel(sumsq, sumsq_exact, epsrel, "%s/%s sumsq", + sname, pname); + + for (i = 0; i < lin1_P; ++i) + { + gsl_test_rel(x[i], -1.0, epsrel, "%s/%s i=%zu", + sname, pname, i); + } +} + +static int +lin1_f (const gsl_vector * x, void *params, gsl_vector * f) +{ + size_t i, j; + + for (i = 0; i < lin1_N; ++i) + { + double fi = 0.0; + + for (j = 0; j < lin1_P; ++j) + { + double xj = gsl_vector_get(x, j); + double Aij = (i == j) ? 1.0 : 0.0; + Aij -= 2.0 / lin1_N; + fi += Aij * xj; + } + + fi -= 1.0; + gsl_vector_set(f, i, fi); + } + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +lin1_df (const gsl_vector * x, void *params, gsl_matrix * J) +{ + size_t i, j; + + for (i = 0; i < lin1_N; ++i) + { + for (j = 0; j < lin1_P; ++j) + { + double Jij = (i == j) ? 1.0 : 0.0; + Jij -= 2.0 / lin1_N; + gsl_matrix_set(J, i, j, Jij); + } + } + + (void)x; /* avoid unused parameter warning */ + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +lin1_fvv (const gsl_vector * x, const gsl_vector * v, + void *params, gsl_vector * fvv) +{ + (void)x; /* avoid unused parameter warnings */ + (void)v; + (void)params; + + gsl_vector_set_zero(fvv); + + return GSL_SUCCESS; +} + +static gsl_multifit_nlinear_fdf lin1_func = +{ + lin1_f, + lin1_df, + lin1_fvv, + lin1_N, + lin1_P, + NULL, + 0, + 0, + 0 +}; + +static test_fdf_problem lin1_problem = +{ + "linear_full", + lin1_x0, + NULL, + NULL, + &lin1_epsrel, + &lin1_checksol, + &lin1_func +}; diff --git a/gsl-2.5/multifit_nlinear/test_lin2.c b/gsl-2.5/multifit_nlinear/test_lin2.c new file mode 100644 index 00000000..e67fb061 --- /dev/null +++ b/gsl-2.5/multifit_nlinear/test_lin2.c @@ -0,0 +1,106 @@ +#define lin2_N 20 /* can be anything >= p */ +#define lin2_P 5 + +static double lin2_x0[lin2_P] = { 1.0, 1.0, 1.0, 1.0, 1.0 }; +static double lin2_epsrel = 1.0e-9; + +static void +lin2_checksol(const double x[], const double sumsq, + const double epsrel, const char *sname, + const char *pname) +{ + size_t i; + const double n = (double) lin2_N; + const double sumsq_exact = 0.5 * (n*(n - 1.0)) / (2.0*n + 1.0); + const double sum_exact = 3.0 / (2.0*n + 1.0); + double sum = 0.0; + + gsl_test_rel(sumsq, sumsq_exact, epsrel, "%s/%s sumsq", + sname, pname); + + for (i = 0; i < lin2_P; ++i) + sum += (i + 1.0) * x[i]; + + gsl_test_rel(sum, sum_exact, epsrel, "%s/%s coeff sum", + sname, pname); +} + +static int +lin2_f (const gsl_vector * x, void *params, gsl_vector * f) +{ + size_t i, j; + + for (i = 0; i < lin2_N; ++i) + { + double fi = 0.0; + + for (j = 0; j < lin2_P; ++j) + { + double xj = gsl_vector_get(x, j); + fi += (j + 1) * xj; + } + + fi = (i + 1) * fi - 1.0; + gsl_vector_set(f, i, fi); + } + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +lin2_df (const gsl_vector * x, void *params, gsl_matrix * J) +{ + size_t i, j; + + for (i = 0; i < lin2_N; ++i) + { + for (j = 0; j < lin2_P; ++j) + { + gsl_matrix_set(J, i, j, (i + 1.0) * (j + 1.0)); + } + } + + (void)x; /* avoid unused parameter warning */ + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +lin2_fvv (const gsl_vector * x, const gsl_vector * v, + void *params, gsl_vector * fvv) +{ + (void)x; /* avoid unused parameter warnings */ + (void)v; + (void)params; + + gsl_vector_set_zero(fvv); + + return GSL_SUCCESS; +} + +static gsl_multifit_nlinear_fdf lin2_func = +{ + lin2_f, + lin2_df, + lin2_fvv, + lin2_N, + lin2_P, + NULL, + 0, + 0, + 0 +}; + +static test_fdf_problem lin2_problem = +{ + "linear_rank1", + lin2_x0, + NULL, + NULL, + &lin2_epsrel, + &lin2_checksol, + &lin2_func +}; diff --git a/gsl-2.5/multifit_nlinear/test_lin3.c b/gsl-2.5/multifit_nlinear/test_lin3.c new file mode 100644 index 00000000..f8b55f33 --- /dev/null +++ b/gsl-2.5/multifit_nlinear/test_lin3.c @@ -0,0 +1,113 @@ +#define lin3_N 50 /* can be anything >= p */ +#define lin3_P 10 /* >= 3 */ + +static double lin3_x0[lin3_P] = { 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0 }; +static double lin3_epsrel = 1.0e-8; + +static void +lin3_checksol(const double x[], const double sumsq, + const double epsrel, const char *sname, + const char *pname) +{ + size_t i; + const double n = (double) lin3_N; + const double sumsq_exact = 0.5 * (n*n + 3*n - 6.0) / (2*n - 3.0); + const double sum_exact = 3.0 / (2.0*n - 3.0); + double sum = 0.0; + + gsl_test_rel(sumsq, sumsq_exact, epsrel, "%s/%s sumsq", + sname, pname); + + for (i = 1; i < lin3_P - 1; ++i) + sum += (i + 1.0) * x[i]; + + gsl_test_rel(sum, sum_exact, epsrel, "%s/%s coeff sum", + sname, pname); + + (void)x; /* avoid unused parameter warning */ +} + +static int +lin3_f (const gsl_vector * x, void *params, gsl_vector * f) +{ + size_t i, j; + + gsl_vector_set(f, 0, -1.0); + gsl_vector_set(f, lin3_N - 1, -1.0); + + for (i = 1; i < lin3_N - 1; ++i) + { + double fi = 0.0; + + for (j = 1; j < lin3_P - 1; ++j) + { + double xj = gsl_vector_get(x, j); + fi += (j + 1) * xj; + } + + fi = i * fi - 1.0; + gsl_vector_set(f, i, fi); + } + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +lin3_df (const gsl_vector * x, void *params, gsl_matrix * J) +{ + size_t i, j; + + gsl_matrix_set_zero(J); + + for (i = 1; i < lin3_N - 1; ++i) + { + for (j = 1; j < lin3_P - 1; ++j) + { + gsl_matrix_set(J, i, j, i * (j + 1.0)); + } + } + + (void)x; /* avoid unused parameter warning */ + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +lin3_fvv (const gsl_vector * x, const gsl_vector * v, + void *params, gsl_vector * fvv) +{ + (void)x; /* avoid unused parameter warnings */ + (void)v; + (void)params; + + gsl_vector_set_zero(fvv); + + return GSL_SUCCESS; +} + +static gsl_multifit_nlinear_fdf lin3_func = +{ + lin3_f, + lin3_df, + lin3_fvv, + lin3_N, + lin3_P, + NULL, + 0, + 0, + 0 +}; + +static test_fdf_problem lin3_problem = +{ + "linear_rank1zeros", + lin3_x0, + NULL, + NULL, + &lin3_epsrel, + &lin3_checksol, + &lin3_func +}; diff --git a/gsl-2.5/multifit_nlinear/test_meyer.c b/gsl-2.5/multifit_nlinear/test_meyer.c new file mode 100644 index 00000000..c6a88a6d --- /dev/null +++ b/gsl-2.5/multifit_nlinear/test_meyer.c @@ -0,0 +1,131 @@ +#define meyer_N 16 +#define meyer_P 3 + +static double meyer_x0[meyer_P] = { 0.02, 4000.0, 250.0 }; +static double meyer_epsrel = 1.0e-6; + +static double meyer_Y[meyer_N] = { +34780., 28610., 23650., 19630., 16370., 13720., 11540., +9744., 8261., 7030., 6005., 5147., 4427., 3820., +3307., 2872. +}; + +static void +meyer_checksol(const double x[], const double sumsq, + const double epsrel, const char *sname, + const char *pname) +{ + size_t i; + const double sumsq_exact = 8.794585517053883e+01; + const double meyer_x[meyer_P] = { 5.609636471049458e-03, + 6.181346346283188e+03, + 3.452236346240292e+02 }; + + gsl_test_rel(sumsq, sumsq_exact, epsrel, "%s/%s sumsq", + sname, pname); + + for (i = 0; i < meyer_P; ++i) + { + gsl_test_rel(x[i], meyer_x[i], epsrel, "%s/%s i=%zu", + sname, pname, i); + } +} + +static int +meyer_f (const gsl_vector * x, void *params, gsl_vector * f) +{ + double x1 = gsl_vector_get(x, 0); + double x2 = gsl_vector_get(x, 1); + double x3 = gsl_vector_get(x, 2); + size_t i; + + for (i = 0; i < meyer_N; ++i) + { + double ti = 45.0 + 5.0*(i + 1.0); + double yi = meyer_Y[i]; + double fi = x1 * exp(x2 / (ti + x3)) - yi; + gsl_vector_set(f, i, fi); + } + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +meyer_df (const gsl_vector * x, void *params, gsl_matrix * J) +{ + double x1 = gsl_vector_get(x, 0); + double x2 = gsl_vector_get(x, 1); + double x3 = gsl_vector_get(x, 2); + size_t i; + + for (i = 0; i < meyer_N; ++i) + { + double ti = 45.0 + 5.0*(i + 1.0); + double term1 = ti + x3; + double term2 = exp(x2 / term1); + + gsl_matrix_set(J, i, 0, term2); + gsl_matrix_set(J, i, 1, x1*term2/term1); + gsl_matrix_set(J, i, 2, -x1*x2*term2/(term1*term1)); + } + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +meyer_fvv (const gsl_vector * x, const gsl_vector * v, + void *params, gsl_vector * fvv) +{ + double x1 = gsl_vector_get(x, 0); + double x2 = gsl_vector_get(x, 1); + double x3 = gsl_vector_get(x, 2); + double v1 = gsl_vector_get(v, 0); + double v2 = gsl_vector_get(v, 1); + double v3 = gsl_vector_get(v, 2); + size_t i; + + for (i = 0; i < meyer_N; ++i) + { + double ti = 45.0 + 5.0*(i + 1.0); + double term1 = ti + x3; + double term2 = exp(x2 / term1); + double term3 = v2*term1 - v3*x2; + double term4 = 2*ti*ti*v1 - v3*x1*(x2 + 2*x3) + + x3*(v2*x1 + 2*v1*x3) + + ti*(v2*x1 - 2*v3*x1 + 4*v1*x3); + + gsl_vector_set(fvv, i, term2 * term3 * term4 / pow(term1, 4.0)); + } + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static gsl_multifit_nlinear_fdf meyer_func = +{ + meyer_f, + meyer_df, + meyer_fvv, + meyer_N, + meyer_P, + NULL, + 0, + 0, + 0 +}; + +static test_fdf_problem meyer_problem = +{ + "meyer", + meyer_x0, + NULL, + NULL, + &meyer_epsrel, + &meyer_checksol, + &meyer_func +}; diff --git a/gsl-2.5/multifit_nlinear/test_meyerscal.c b/gsl-2.5/multifit_nlinear/test_meyerscal.c new file mode 100644 index 00000000..6fa77109 --- /dev/null +++ b/gsl-2.5/multifit_nlinear/test_meyerscal.c @@ -0,0 +1,132 @@ +#define meyerscal_N 16 +#define meyerscal_P 3 + +static double meyerscal_x0[meyerscal_P] = { 8.85, 4.0, 2.5 }; +static double meyerscal_epsrel = 1.0e-6; + +static double meyerscal_Y[meyerscal_N] = { +34780., 28610., 23650., 19630., 16370., 13720., 11540., +9744., 8261., 7030., 6005., 5147., 4427., 3820., +3307., 2872. +}; + +static void +meyerscal_checksol(const double x[], const double sumsq, + const double epsrel, const char *sname, + const char *pname) +{ + size_t i; + const double sumsq_exact = 8.794585517003888e-05; + const double meyerscal_x[meyerscal_P] = { 2.481778312286695e+00, + 6.181346341853554e+00, + 3.452236344749865e+00 }; + + gsl_test_rel(sumsq, sumsq_exact, epsrel, "%s/%s sumsq", + sname, pname); + + for (i = 0; i < meyerscal_P; ++i) + { + gsl_test_rel(x[i], meyerscal_x[i], epsrel, "%s/%s i=%zu", + sname, pname, i); + } +} + +static int +meyerscal_f (const gsl_vector * x, void *params, gsl_vector * f) +{ + double x1 = gsl_vector_get(x, 0); + double x2 = gsl_vector_get(x, 1); + double x3 = gsl_vector_get(x, 2); + size_t i; + + for (i = 0; i < meyerscal_N; ++i) + { + double ti = 0.45 + 0.05*(i + 1.0); + double yi = meyerscal_Y[i]; + double fi = x1 * exp(10.0*x2 / (ti + x3) - 13.0) - 1.0e-3*yi; + gsl_vector_set(f, i, fi); + } + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +meyerscal_df (const gsl_vector * x, void *params, gsl_matrix * J) +{ + double x1 = gsl_vector_get(x, 0); + double x2 = gsl_vector_get(x, 1); + double x3 = gsl_vector_get(x, 2); + size_t i; + + for (i = 0; i < meyerscal_N; ++i) + { + double ti = 0.45 + 0.05*(i + 1.0); + double term1 = ti + x3; + double term2 = exp(10.0*x2/term1 - 13.0); + + gsl_matrix_set(J, i, 0, term2); + gsl_matrix_set(J, i, 1, 10.0*x1*term2/term1); + gsl_matrix_set(J, i, 2, -10.0*x1*x2*term2/(term1*term1)); + } + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +meyerscal_fvv (const gsl_vector * x, const gsl_vector * v, + void *params, gsl_vector * fvv) +{ + double x1 = gsl_vector_get(x, 0); + double x2 = gsl_vector_get(x, 1); + double x3 = gsl_vector_get(x, 2); + double v1 = gsl_vector_get(v, 0); + double v2 = gsl_vector_get(v, 1); + double v3 = gsl_vector_get(v, 2); + size_t i; + + for (i = 0; i < meyerscal_N; ++i) + { + double ti = 0.45 + 0.05*(i + 1.0); + double term1 = ti + x3; + double term2 = exp(10.0*x2/term1 - 13.0); + double term3 = v2*term1 - v3*x2; + double term4 = ti*ti*v1 - + v3*x1*(5*x2 + x3) + + x3*(5*v2*x1 + v1*x3) + + ti*(5*v2*x1 - v3*x1 + 2*v1*x3); + + gsl_vector_set(fvv, i, 20*term2*term3*term4 / pow(term1, 4.0)); + } + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static gsl_multifit_nlinear_fdf meyerscal_func = +{ + meyerscal_f, + meyerscal_df, + meyerscal_fvv, + meyerscal_N, + meyerscal_P, + NULL, + 0, + 0, + 0 +}; + +static test_fdf_problem meyerscal_problem = +{ + "meyerscal", + meyerscal_x0, + NULL, + NULL, + &meyerscal_epsrel, + &meyerscal_checksol, + &meyerscal_func +}; diff --git a/gsl-2.5/multifit_nlinear/test_osborne.c b/gsl-2.5/multifit_nlinear/test_osborne.c new file mode 100644 index 00000000..8fd61415 --- /dev/null +++ b/gsl-2.5/multifit_nlinear/test_osborne.c @@ -0,0 +1,140 @@ +#define osborne_N 33 +#define osborne_P 5 + +static double osborne_x0[osborne_P] = { 0.5, 1.5, -1.0, 0.01, 0.02 }; +static double osborne_epsrel = 1.0e-8; + +static double osborne_Y[osborne_N] = { +0.844, 0.908, 0.932, 0.936, 0.925, 0.908, 0.881, +0.850, 0.818, 0.784, 0.751, 0.718, 0.685, 0.658, +0.628, 0.603, 0.580, 0.558, 0.538, 0.522, 0.506, +0.490, 0.478, 0.467, 0.457, 0.448, 0.438, 0.431, +0.424, 0.420, 0.414, 0.411, 0.406 +}; + +static void +osborne_checksol(const double x[], const double sumsq, + const double epsrel, const char *sname, + const char *pname) +{ + const double sumsq_exact = 5.464894697482687e-05; + double osborne_x[osborne_P]; + + osborne_x[0] = 3.754100521058740e-01; + osborne_x[1] = GSL_NAN; + osborne_x[2] = GSL_NAN; + osborne_x[3] = GSL_NAN; + osborne_x[4] = GSL_NAN; + + gsl_test_rel(sumsq, sumsq_exact, epsrel, "%s/%s sumsq", + sname, pname); + + /* only the first model parameter is uniquely constrained */ + gsl_test_rel(x[0], osborne_x[0], epsrel, "%s/%s i=0", + sname, pname); +} + +static int +osborne_f (const gsl_vector * x, void *params, gsl_vector * f) +{ + double x1 = gsl_vector_get(x, 0); + double x2 = gsl_vector_get(x, 1); + double x3 = gsl_vector_get(x, 2); + double x4 = gsl_vector_get(x, 3); + double x5 = gsl_vector_get(x, 4); + size_t i; + + for (i = 0; i < osborne_N; ++i) + { + double ti = 10.0*i; + double yi = osborne_Y[i]; + double fi = yi - (x1 + x2*exp(-x4*ti) + x3*exp(-x5*ti)); + gsl_vector_set(f, i, fi); + } + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +osborne_df (const gsl_vector * x, void *params, gsl_matrix * J) +{ + double x2 = gsl_vector_get(x, 1); + double x3 = gsl_vector_get(x, 2); + double x4 = gsl_vector_get(x, 3); + double x5 = gsl_vector_get(x, 4); + size_t i; + + for (i = 0; i < osborne_N; ++i) + { + double ti = 10.0*i; + double term1 = exp(-x4*ti); + double term2 = exp(-x5*ti); + + gsl_matrix_set(J, i, 0, -1.0); + gsl_matrix_set(J, i, 1, -term1); + gsl_matrix_set(J, i, 2, -term2); + gsl_matrix_set(J, i, 3, ti*x2*term1); + gsl_matrix_set(J, i, 4, ti*x3*term2); + } + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +osborne_fvv (const gsl_vector * x, const gsl_vector * v, + void *params, gsl_vector * fvv) +{ + double x2 = gsl_vector_get(x, 1); + double x3 = gsl_vector_get(x, 2); + double x4 = gsl_vector_get(x, 3); + double x5 = gsl_vector_get(x, 4); + double v2 = gsl_vector_get(v, 1); + double v3 = gsl_vector_get(v, 2); + double v4 = gsl_vector_get(v, 3); + double v5 = gsl_vector_get(v, 4); + size_t i; + + for (i = 0; i < osborne_N; ++i) + { + double ti = 10.0*i; + double term1 = exp(-x4*ti); + double term2 = exp(-x5*ti); + double term3 = -2*v2 + ti*v4*x2; + double term4 = -2*v3 + ti*v5*x3; + + gsl_vector_set(fvv, i, -term1 * term2 * ti * + (v4 / term2 * term3 + v5 / term1 * term4)); + } + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static gsl_multifit_nlinear_fdf osborne_func = +{ + osborne_f, + osborne_df, + osborne_fvv, + osborne_N, + osborne_P, + NULL, + 0, + 0, + 0 +}; + +static test_fdf_problem osborne_problem = +{ + "osborne", + osborne_x0, + NULL, + NULL, + &osborne_epsrel, + &osborne_checksol, + &osborne_func +}; diff --git a/gsl-2.5/multifit_nlinear/test_penalty1.c b/gsl-2.5/multifit_nlinear/test_penalty1.c new file mode 100644 index 00000000..c9805865 --- /dev/null +++ b/gsl-2.5/multifit_nlinear/test_penalty1.c @@ -0,0 +1,107 @@ +#define penalty1_P 10 +#define penalty1_N (penalty1_P + 1) + +static double penalty1_x0[penalty1_P] = { 1.0, 2.0, 3.0, 4.0, 5.0, + 6.0, 7.0, 8.0, 9.0, 10.0 }; +static double penalty1_epsrel = 1.0e-12; + +static void +penalty1_checksol(const double x[], const double sumsq, + const double epsrel, const char *sname, + const char *pname) +{ + const double sumsq_exact = 7.08765146709037993e-05; + + gsl_test_rel(sumsq, sumsq_exact, epsrel, "%s/%s sumsq", + sname, pname); + + (void)x; /* avoid unused parameter warning */ +} + +static int +penalty1_f (const gsl_vector * x, void *params, gsl_vector * f) +{ + const double alpha = 1.0e-5; + const double sqrt_alpha = sqrt(alpha); + size_t i; + double sum = 0.0; + + for (i = 0; i < penalty1_P; ++i) + { + double xi = gsl_vector_get(x, i); + + gsl_vector_set(f, i, sqrt_alpha*(xi - 1.0)); + + sum += xi * xi; + } + + gsl_vector_set(f, penalty1_N - 1, sum - 0.25); + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +penalty1_df (const gsl_vector * x, void *params, gsl_matrix * J) +{ + const double alpha = 1.0e-5; + const double sqrt_alpha = sqrt(alpha); + size_t i; + gsl_matrix_view m = gsl_matrix_submatrix(J, 0, 0, penalty1_P, penalty1_P); + gsl_vector_view diag = gsl_matrix_diagonal(&m.matrix); + + gsl_matrix_set_zero(&m.matrix); + gsl_vector_set_all(&diag.vector, sqrt_alpha); + + for (i = 0; i < penalty1_P; ++i) + { + double xi = gsl_vector_get(x, i); + gsl_matrix_set(J, penalty1_N - 1, i, 2.0 * xi); + } + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +penalty1_fvv (const gsl_vector * x, const gsl_vector * v, + void *params, gsl_vector * fvv) +{ + double u; + + gsl_vector_set_zero(fvv); + + gsl_blas_ddot(v, v, &u); + gsl_vector_set(fvv, penalty1_N - 1, 2.0 * u); + + (void)x; /* avoid unused parameter warning */ + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static gsl_multifit_nlinear_fdf penalty1_func = +{ + penalty1_f, + penalty1_df, + penalty1_fvv, + penalty1_N, + penalty1_P, + NULL, + 0, + 0, + 0 +}; + +static test_fdf_problem penalty1_problem = +{ + "penalty1", + penalty1_x0, + NULL, + NULL, + &penalty1_epsrel, + &penalty1_checksol, + &penalty1_func +}; diff --git a/gsl-2.5/multifit_nlinear/test_penalty2.c b/gsl-2.5/multifit_nlinear/test_penalty2.c new file mode 100644 index 00000000..65275550 --- /dev/null +++ b/gsl-2.5/multifit_nlinear/test_penalty2.c @@ -0,0 +1,179 @@ +#define penalty2_N 8 /* 2*p */ +#define penalty2_P 4 + +static double penalty2_x0[penalty2_P] = { 0.5, 0.5, 0.5, 0.5 }; +static double penalty2_epsrel = 1.0e-12; + +static void +penalty2_checksol(const double x[], const double sumsq, + const double epsrel, const char *sname, + const char *pname) +{ + const double sumsq_exact = 9.37629300735544219e-06; + + gsl_test_rel(sumsq, sumsq_exact, epsrel, "%s/%s sumsq", + sname, pname); + + (void)x; /* avoid unused parameter warning */ +} + +static int +penalty2_f (const gsl_vector * x, void *params, gsl_vector * f) +{ + const double alpha = 1.0e-5; + const double sqrt_alpha = sqrt(alpha); + double x1 = gsl_vector_get(x, 0); + size_t i; + double sum = penalty2_P * x1 * x1; + + gsl_vector_set(f, 0, x1 - 0.2); + + /* rows [2:p] */ + for (i = 1; i < penalty2_P; ++i) + { + double xi = gsl_vector_get(x, i); + double xim1 = gsl_vector_get(x, i - 1); + double yi = exp(0.1*(i + 1.0)) + exp(0.1*i); + + gsl_vector_set(f, i, sqrt_alpha*(exp(0.1*xi) + exp(0.1*xim1) - yi)); + + sum += (penalty2_P - i) * xi * xi; + } + + /* rows [p+1:2p-1] */ + for (i = penalty2_P; i < penalty2_N - 1; ++i) + { + double xi = gsl_vector_get(x, i - penalty2_P + 1); + + gsl_vector_set(f, i, sqrt_alpha*(exp(0.1*xi) - exp(-0.1))); + } + + /* row 2p */ + gsl_vector_set(f, penalty2_N - 1, sum - 1.0); + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +penalty2_df (const gsl_vector * x, void *params, gsl_matrix * J) +{ + const double alpha = 1.0e-5; + const double sqrt_alpha = sqrt(alpha); + size_t i, j; + + for (j = 0; j < penalty2_P; ++j) + { + double xj = gsl_vector_get(x, j); + double delta1j = (j == 0) ? 1.0 : 0.0; + + /* first and last rows */ + gsl_matrix_set(J, 0, j, delta1j); + gsl_matrix_set(J, penalty2_N - 1, j, 2.0 * (penalty2_P - j) * xj); + + /* rows [2:p] */ + for (i = 1; i < penalty2_P; ++i) + { + double xi = gsl_vector_get(x, i); + double xim1 = gsl_vector_get(x, i - 1); + double Jij; + + if (i == j) + Jij = exp(0.1 * xi); + else if (i - 1 == j) + Jij = exp(0.1 * xim1); + else + Jij = 0.0; + + Jij *= 0.1 * sqrt_alpha; + + gsl_matrix_set(J, i, j, Jij); + } + + /* rows [p+1:2p-1] */ + for (i = penalty2_P; i < penalty2_N - 1; ++i) + { + double xi = gsl_vector_get(x, i - penalty2_P + 1); + + if (i - penalty2_P + 1 == j) + gsl_matrix_set(J, i, j, 0.1 * sqrt_alpha * exp(0.1*xi)); + else + gsl_matrix_set(J, i, j, 0.0); + } + } + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +penalty2_fvv (const gsl_vector * x, const gsl_vector * v, + void *params, gsl_vector * fvv) +{ + const double alpha = 1.0e-5; + const double sqrt_alpha = sqrt(alpha); + double v1 = gsl_vector_get(v, 0); + double sum = penalty2_P * v1 * v1; + size_t i; + + /* first row */ + gsl_vector_set(fvv, 0, 0.0); + + /* rows [2:p] */ + for (i = 1; i < penalty2_P; ++i) + { + double xi = gsl_vector_get(x, i); + double xim1 = gsl_vector_get(x, i - 1); + double vi = gsl_vector_get(v, i); + double vim1 = gsl_vector_get(v, i - 1); + double term1 = exp(xi / 10.0); + double term2 = exp(xim1 / 10.0); + + gsl_vector_set(fvv, i, + sqrt_alpha / 100.0 * (term1 * vi * vi + term2 * vim1 * vim1)); + + sum += (penalty2_P - i) * vi * vi; + } + + /* last row */ + gsl_vector_set(fvv, penalty2_N - 1, 2.0 * sum); + + /* rows [p+1:2p-1] */ + for (i = penalty2_P; i < penalty2_N - 1; ++i) + { + double xi = gsl_vector_get(x, i - penalty2_P + 1); + double vi = gsl_vector_get(v, i - penalty2_P + 1); + + gsl_vector_set(fvv, i, sqrt_alpha / 100.0 * exp(xi / 10.0) * vi * vi); + } + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static gsl_multifit_nlinear_fdf penalty2_func = +{ + penalty2_f, + penalty2_df, + penalty2_fvv, + penalty2_N, + penalty2_P, + NULL, + 0, + 0, + 0 +}; + +static test_fdf_problem penalty2_problem = +{ + "penalty2", + penalty2_x0, + NULL, + NULL, + &penalty2_epsrel, + &penalty2_checksol, + &penalty2_func +}; diff --git a/gsl-2.5/multifit_nlinear/test_powell1.c b/gsl-2.5/multifit_nlinear/test_powell1.c new file mode 100644 index 00000000..8d332bb4 --- /dev/null +++ b/gsl-2.5/multifit_nlinear/test_powell1.c @@ -0,0 +1,120 @@ +#define powell1_N 4 +#define powell1_P 4 + +static double powell1_x0[powell1_P] = { 3.0, -1.0, 0.0, 1.0 }; +static double powell1_epsrel = 1.0e-4; + +static void +powell1_checksol(const double x[], const double sumsq, + const double epsrel, const char *sname, + const char *pname) +{ + size_t i; + const double sumsq_exact = 0.0; + + gsl_test_rel(sumsq, sumsq_exact, epsrel, "%s/%s sumsq", + sname, pname); + + for (i = 0; i < powell1_P; ++i) + { + gsl_test_rel(x[i], 0.0, epsrel, "%s/%s i=%zu", + sname, pname, i); + } +} + +static int +powell1_f (const gsl_vector * x, void *params, gsl_vector * f) +{ + double x1 = gsl_vector_get (x, 0); + double x2 = gsl_vector_get (x, 1); + double x3 = gsl_vector_get (x, 2); + double x4 = gsl_vector_get (x, 3); + + gsl_vector_set(f, 0, x1 + 10.0*x2); + gsl_vector_set(f, 1, sqrt(5.0) * (x3 - x4)); + gsl_vector_set(f, 2, pow(x2 - 2.0*x3, 2.0)); + gsl_vector_set(f, 3, sqrt(10.0) * pow((x1 - x4), 2.0)); + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +powell1_df (const gsl_vector * x, void *params, gsl_matrix * J) +{ + double x1 = gsl_vector_get (x, 0); + double x2 = gsl_vector_get (x, 1); + double x3 = gsl_vector_get (x, 2); + double x4 = gsl_vector_get (x, 3); + double term1 = x2 - 2.0*x3; + double term2 = x1 - x4; + + gsl_matrix_set(J, 0, 0, 1.0); + gsl_matrix_set(J, 0, 1, 10.0); + gsl_matrix_set(J, 0, 2, 0.0); + gsl_matrix_set(J, 0, 3, 0.0); + + gsl_matrix_set(J, 1, 0, 0.0); + gsl_matrix_set(J, 1, 1, 0.0); + gsl_matrix_set(J, 1, 2, sqrt(5.0)); + gsl_matrix_set(J, 1, 3, -sqrt(5.0)); + + gsl_matrix_set(J, 2, 0, 0.0); + gsl_matrix_set(J, 2, 1, 2.0*term1); + gsl_matrix_set(J, 2, 2, -4.0*term1); + gsl_matrix_set(J, 2, 3, 0.0); + + gsl_matrix_set(J, 3, 0, 2.0*sqrt(10.0)*term2); + gsl_matrix_set(J, 3, 1, 0.0); + gsl_matrix_set(J, 3, 2, 0.0); + gsl_matrix_set(J, 3, 3, -2.0*sqrt(10.0)*term2); + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +powell1_fvv (const gsl_vector * x, const gsl_vector * v, + void *params, gsl_vector * fvv) +{ + double v1 = gsl_vector_get(v, 0); + double v2 = gsl_vector_get(v, 1); + double v3 = gsl_vector_get(v, 2); + double v4 = gsl_vector_get(v, 3); + + gsl_vector_set(fvv, 0, 0.0); + gsl_vector_set(fvv, 1, 0.0); + gsl_vector_set(fvv, 2, 2.0 * pow(v2 - 2.0*v3, 2.0)); + gsl_vector_set(fvv, 3, 2.0 * sqrt(10.0) * pow(v1 - v4, 2.0)); + + (void)x; /* avoid unused parameter warning */ + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static gsl_multifit_nlinear_fdf powell1_func = +{ + powell1_f, + powell1_df, + powell1_fvv, + powell1_N, + powell1_P, + NULL, + 0, + 0, + 0 +}; + +static test_fdf_problem powell1_problem = +{ + "powell_singular", + powell1_x0, + NULL, + NULL, + &powell1_epsrel, + &powell1_checksol, + &powell1_func +}; diff --git a/gsl-2.5/multifit_nlinear/test_powell2.c b/gsl-2.5/multifit_nlinear/test_powell2.c new file mode 100644 index 00000000..d3db8b09 --- /dev/null +++ b/gsl-2.5/multifit_nlinear/test_powell2.c @@ -0,0 +1,95 @@ +#define powell2_N 2 +#define powell2_P 2 + +static double powell2_x0[powell2_P] = { 3.0, 1.0 }; +static double powell2_epsrel = 1.0e-3; + +static void +powell2_checksol(const double x[], const double sumsq, + const double epsrel, const char *sname, + const char *pname) +{ + size_t i; + const double sumsq_exact = 0.0; + + gsl_test_rel(sumsq, sumsq_exact, epsrel, "%s/%s sumsq", + sname, pname); + + for (i = 0; i < powell2_P; ++i) + { + gsl_test_rel(x[i], 0.0, epsrel, "%s/%s i=%zu", + sname, pname, i); + } +} + +static int +powell2_f (const gsl_vector * x, void *params, gsl_vector * f) +{ + double x0 = gsl_vector_get (x, 0); + double x1 = gsl_vector_get (x, 1); + + gsl_vector_set(f, 0, x0); + gsl_vector_set(f, 1, 10.0*x0/(x0 + 0.1) + 2.0*x1*x1); + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +powell2_df (const gsl_vector * x, void *params, gsl_matrix * df) +{ + double x0 = gsl_vector_get (x, 0); + double x1 = gsl_vector_get (x, 1); + double term = x0 + 0.1; + + gsl_matrix_set(df, 0, 0, 1.0); + gsl_matrix_set(df, 0, 1, 0.0); + gsl_matrix_set(df, 1, 0, 1.0 / (term * term)); + gsl_matrix_set(df, 1, 1, 4.0 * x1); + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +powell2_fvv (const gsl_vector * x, const gsl_vector * v, + void *params, gsl_vector * fvv) +{ + double x0 = gsl_vector_get (x, 0); + double v0 = gsl_vector_get (v, 0); + double v1 = gsl_vector_get (v, 1); + double term = x0 + 0.1; + + gsl_vector_set(fvv, 0, 0.0); + gsl_vector_set(fvv, 1, 4*v1*v1 - (2*v0*v0)/pow(term, 3.0)); + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static gsl_multifit_nlinear_fdf powell2_func = +{ + powell2_f, + powell2_df, + powell2_fvv, + powell2_N, + powell2_P, + NULL, + 0, + 0, + 0 +}; + +static test_fdf_problem powell2_problem = +{ + "powell2", + powell2_x0, + NULL, + NULL, + &powell2_epsrel, + &powell2_checksol, + &powell2_func +}; diff --git a/gsl-2.5/multifit_nlinear/test_powell3.c b/gsl-2.5/multifit_nlinear/test_powell3.c new file mode 100644 index 00000000..55edbb93 --- /dev/null +++ b/gsl-2.5/multifit_nlinear/test_powell3.c @@ -0,0 +1,97 @@ +#define powell3_N 2 +#define powell3_P 2 + +static double powell3_x0[powell3_P] = { 0.0, 1.0 }; +static double powell3_epsrel = 1.0e-10; + +static void +powell3_checksol(const double x[], const double sumsq, + const double epsrel, const char *sname, + const char *pname) +{ + size_t i; + const double sumsq_exact = 0.0; + const double powell3_x[powell3_P] = { 1.09815932969975976e-05, + 9.10614673986700218 }; + + gsl_test_rel(sumsq, sumsq_exact, epsrel, "%s/%s sumsq", + sname, pname); + + for (i = 0; i < powell3_P; ++i) + { + gsl_test_rel(x[i], powell3_x[i], epsrel, "%s/%s i=%zu", + sname, pname, i); + } +} + +static int +powell3_f (const gsl_vector * x, void *params, gsl_vector * f) +{ + double x1 = gsl_vector_get(x, 0); + double x2 = gsl_vector_get(x, 1); + + gsl_vector_set(f, 0, 1.0e4*x1*x2 - 1.0); + gsl_vector_set(f, 1, exp(-x1) + exp(-x2) - 1.0001); + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +powell3_df (const gsl_vector * x, void *params, gsl_matrix * J) +{ + double x1 = gsl_vector_get(x, 0); + double x2 = gsl_vector_get(x, 1); + + gsl_matrix_set(J, 0, 0, 1.0e4*x2); + gsl_matrix_set(J, 0, 1, 1.0e4*x1); + + gsl_matrix_set(J, 1, 0, -exp(-x1)); + gsl_matrix_set(J, 1, 1, -exp(-x2)); + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +powell3_fvv (const gsl_vector * x, const gsl_vector * v, + void *params, gsl_vector * fvv) +{ + double x1 = gsl_vector_get(x, 0); + double x2 = gsl_vector_get(x, 1); + double v1 = gsl_vector_get(v, 0); + double v2 = gsl_vector_get(v, 1); + + gsl_vector_set(fvv, 0, 2.0e4 * v1 * v2); + gsl_vector_set(fvv, 1, v1*v1*exp(-x1) + v2*v2*exp(-x2)); + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static gsl_multifit_nlinear_fdf powell3_func = +{ + powell3_f, + powell3_df, + powell3_fvv, + powell3_N, + powell3_P, + NULL, + 0, + 0, + 0 +}; + +static test_fdf_problem powell3_problem = +{ + "powell_badly_scaled", + powell3_x0, + NULL, + NULL, + &powell3_epsrel, + &powell3_checksol, + &powell3_func +}; diff --git a/gsl-2.5/multifit_nlinear/test_rat42.c b/gsl-2.5/multifit_nlinear/test_rat42.c new file mode 100644 index 00000000..1fb3ef2e --- /dev/null +++ b/gsl-2.5/multifit_nlinear/test_rat42.c @@ -0,0 +1,153 @@ +#define rat42_N 9 +#define rat42_P 3 + +static double rat42_x0a[rat42_P] = { 100.0, 1.0, 0.1 }; +static double rat42_x0b[rat42_P] = { 75.0, 2.5, 0.07 }; +static double rat42_epsrel = 1.0e-7; + +static double rat42_sigma[rat42_P] = { + 1.7340283401E+00, 8.8295217536E-02, 3.4465663377E-03 +}; + +static double rat42_X[rat42_N] = { 9.0, 14.0, 21.0, 28.0, 42.0, + 57.0, 63.0, 70.0, 79.0 }; + +static double rat42_F[rat42_N] = { 8.930, 10.800, 18.590, 22.330, + 39.350, 56.110, 61.730, 64.620, + 67.080 }; + +static void +rat42_checksol(const double x[], const double sumsq, + const double epsrel, const char *sname, + const char *pname) +{ + size_t i; + const double sumsq_exact = 8.0565229338E+00; + const double rat42_x[rat42_P] = { 7.2462237576E+01, + 2.6180768402E+00, + 6.7359200066E-02 }; + + gsl_test_rel(sumsq, sumsq_exact, epsrel, "%s/%s sumsq", + sname, pname); + + for (i = 0; i < rat42_P; ++i) + { + gsl_test_rel(x[i], rat42_x[i], epsrel, "%s/%s i=%zu", + sname, pname, i); + } +} + + +static int +rat42_f (const gsl_vector * x, void *params, gsl_vector * f) +{ + double b[rat42_P]; + size_t i; + + for (i = 0; i < rat42_P; i++) + { + b[i] = gsl_vector_get(x, i); + } + + for (i = 0; i < rat42_N; i++) + { + double xi = rat42_X[i]; + double yi = b[0] / (1.0 + exp(b[1] - b[2]*xi)); + gsl_vector_set (f, i, yi - rat42_F[i]); + } + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +rat42_df (const gsl_vector * x, void *params, gsl_matrix * df) +{ + double b[rat42_P]; + size_t i; + + for (i = 0; i < rat42_P; i++) + { + b[i] = gsl_vector_get(x, i); + } + + for (i = 0; i < rat42_N; i++) + { + double xi = rat42_X[i]; + double term1 = exp(b[1] - b[2]*xi); + double term2 = 1.0 + term1; + + gsl_matrix_set (df, i, 0, 1.0 / term2); + gsl_matrix_set (df, i, 1, -b[0] * term1 / (term2 * term2)); + gsl_matrix_set (df, i, 2, b[0] * term1 * xi / (term2 * term2)); + } + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +rat42_fvv (const gsl_vector * x, const gsl_vector * v, + void *params, gsl_vector * fvv) +{ + double x1 = gsl_vector_get(x, 0); + double x2 = gsl_vector_get(x, 1); + double x3 = gsl_vector_get(x, 2); + double v1 = gsl_vector_get(v, 0); + double v2 = gsl_vector_get(v, 1); + double v3 = gsl_vector_get(v, 2); + size_t i; + + for (i = 0; i < rat42_N; i++) + { + double ti = rat42_X[i]; + double term1 = exp(x2); + double term2 = exp(ti * x3); + + gsl_vector_set(fvv, i, + -pow(term1 + term2, -3.0) * term1 * term2 * + (v2 - ti*v3) * (term1*(2*v1 - v2*x1 + ti*v3*x1) + + term2*(2*v1 + x1*(v2 - ti*v3)))); + } + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static gsl_multifit_nlinear_fdf rat42_func = +{ + rat42_f, + rat42_df, + rat42_fvv, + rat42_N, + rat42_P, + NULL, + 0, + 0, + 0 +}; + +static test_fdf_problem rat42a_problem = +{ + "nist-rat42a", + rat42_x0a, + NULL, + rat42_sigma, + &rat42_epsrel, + &rat42_checksol, + &rat42_func +}; + +static test_fdf_problem rat42b_problem = +{ + "nist-rat42b", + rat42_x0b, + NULL, + rat42_sigma, + &rat42_epsrel, + &rat42_checksol, + &rat42_func +}; diff --git a/gsl-2.5/multifit_nlinear/test_rat43.c b/gsl-2.5/multifit_nlinear/test_rat43.c new file mode 100644 index 00000000..a84ce918 --- /dev/null +++ b/gsl-2.5/multifit_nlinear/test_rat43.c @@ -0,0 +1,127 @@ +#define rat43_N 15 +#define rat43_P 4 + +static double rat43_x0a[rat43_P] = { 100.0, 10.0, 1.0, 1.0 }; +static double rat43_x0b[rat43_P] = { 700.0, 5.0, 0.75, 1.3 }; +static double rat43_epsrel = 1.0e-6; + +static double rat43_sigma[rat43_P] = { + 1.6302297817E+01, 2.0828735829E+00, + 1.9566123451E-01, 6.8761936385E-01 +}; + +static double rat43_F[rat43_N] = { 16.08, 33.83, 65.80, 97.20, 191.55, + 326.20, 386.87, 520.53, 590.03, + 651.92, 724.93, 699.56, 689.96, + 637.56, 717.41 }; + +static void +rat43_checksol(const double x[], const double sumsq, + const double epsrel, const char *sname, + const char *pname) +{ + size_t i; + const double sumsq_exact = 8.7864049080E+03; + const double rat43_x[rat43_P] = { 6.9964151270E+02, + 5.2771253025E+00, + 7.5962938329E-01, + 1.2792483859E+00 }; + + gsl_test_rel(sumsq, sumsq_exact, epsrel, "%s/%s sumsq", + sname, pname); + + for (i = 0; i < rat43_P; ++i) + { + gsl_test_rel(x[i], rat43_x[i], epsrel, "%s/%s i=%zu", + sname, pname, i); + } +} + + +static int +rat43_f (const gsl_vector * x, void *params, gsl_vector * f) +{ + double b[rat43_P]; + size_t i; + + for (i = 0; i < rat43_P; i++) + { + b[i] = gsl_vector_get(x, i); + } + + for (i = 0; i < rat43_N; i++) + { + double xi = i + 1.0; + double e = exp(b[1] - b[2]*xi); + double yi = b[0] / pow(1.0 + e, 1.0 / b[3]); + gsl_vector_set (f, i, yi - rat43_F[i]); + } + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +rat43_df (const gsl_vector * x, void *params, gsl_matrix * df) +{ + double b[rat43_P]; + size_t i; + + for (i = 0; i < rat43_P; i++) + { + b[i] = gsl_vector_get(x, i); + } + + for (i = 0; i < rat43_N; i++) + { + double xi = i + 1.0; + double e = exp(b[1] - b[2]*xi); + double term1 = 1.0 + e; + double term2 = pow(term1, -1.0 / b[3]); + + gsl_matrix_set (df, i, 0, term2); + gsl_matrix_set (df, i, 1, -b[0] / b[3] * e * term2 / term1); + gsl_matrix_set (df, i, 2, b[0] / b[3] * xi * e * term2 / term1); + gsl_matrix_set (df, i, 3, b[0] / b[3] / b[3] * log(term1) * term2); + } + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static gsl_multifit_nlinear_fdf rat43_func = +{ + rat43_f, + rat43_df, + NULL, /* analytic expression too complex */ + rat43_N, + rat43_P, + NULL, + 0, + 0, + 0 +}; + +static test_fdf_problem rat43a_problem = +{ + "nist-rat43a", + rat43_x0a, + NULL, + rat43_sigma, + &rat43_epsrel, + &rat43_checksol, + &rat43_func +}; + +static test_fdf_problem rat43b_problem = +{ + "nist-rat43b", + rat43_x0b, + NULL, + rat43_sigma, + &rat43_epsrel, + &rat43_checksol, + &rat43_func +}; diff --git a/gsl-2.5/multifit_nlinear/test_rosenbrock.c b/gsl-2.5/multifit_nlinear/test_rosenbrock.c new file mode 100644 index 00000000..3bd22abb --- /dev/null +++ b/gsl-2.5/multifit_nlinear/test_rosenbrock.c @@ -0,0 +1,91 @@ +#define rosenbrock_N 2 +#define rosenbrock_P 2 + +static double rosenbrock_x0[rosenbrock_P] = { -1.2, 1.0 }; +static double rosenbrock_epsrel = 1.0e-12; + +static void +rosenbrock_checksol(const double x[], const double sumsq, + const double epsrel, const char *sname, + const char *pname) +{ + size_t i; + const double sumsq_exact = 0.0; + + gsl_test_rel(sumsq, sumsq_exact, epsrel, "%s/%s sumsq", + sname, pname); + + for (i = 0; i < rosenbrock_P; ++i) + { + gsl_test_rel(x[i], 1.0, epsrel, "%s/%s i=%zu", + sname, pname, i); + } +} + +static int +rosenbrock_f (const gsl_vector * x, void *params, gsl_vector * f) +{ + double x1 = gsl_vector_get(x, 0); + double x2 = gsl_vector_get(x, 1); + + gsl_vector_set(f, 0, 10.0 * (x2 - x1*x1)); + gsl_vector_set(f, 1, 1.0 - x1); + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +rosenbrock_df (const gsl_vector * x, void *params, gsl_matrix * J) +{ + double x1 = gsl_vector_get(x, 0); + + gsl_matrix_set(J, 0, 0, -20.0*x1); + gsl_matrix_set(J, 0, 1, 10.0); + gsl_matrix_set(J, 1, 0, -1.0); + gsl_matrix_set(J, 1, 1, 0.0); + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +rosenbrock_fvv (const gsl_vector * x, const gsl_vector * v, + void *params, gsl_vector * fvv) +{ + double v1 = gsl_vector_get(v, 0); + + gsl_vector_set(fvv, 0, -20.0 * v1 * v1); + gsl_vector_set(fvv, 1, 0.0); + + (void)x; /* avoid unused parameter warning */ + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static gsl_multifit_nlinear_fdf rosenbrock_func = +{ + rosenbrock_f, + rosenbrock_df, + rosenbrock_fvv, + rosenbrock_N, + rosenbrock_P, + NULL, + 0, + 0, + 0 +}; + +static test_fdf_problem rosenbrock_problem = +{ + "rosenbrock", + rosenbrock_x0, + NULL, + NULL, + &rosenbrock_epsrel, + &rosenbrock_checksol, + &rosenbrock_func +}; diff --git a/gsl-2.5/multifit_nlinear/test_rosenbrocke.c b/gsl-2.5/multifit_nlinear/test_rosenbrocke.c new file mode 100644 index 00000000..727df18f --- /dev/null +++ b/gsl-2.5/multifit_nlinear/test_rosenbrocke.c @@ -0,0 +1,110 @@ +#define rosenbrocke_N 8 /* = p */ +#define rosenbrocke_P 8 /* must be even */ + +static double rosenbrocke_x0[rosenbrocke_P] = { -1.2, 1.0, -1.2, 1.0, + -1.2, 1.0, -1.2, 1.0 }; +static double rosenbrocke_epsrel = 1.0e-12; + +static void +rosenbrocke_checksol(const double x[], const double sumsq, + const double epsrel, const char *sname, + const char *pname) +{ + size_t i; + const double sumsq_exact = 0.0; + const double rosenbrocke_x[rosenbrocke_P] = { 1.0, 1.0, 1.0, 1.0, + 1.0, 1.0, 1.0, 1.0 }; + + gsl_test_rel(sumsq, sumsq_exact, epsrel, "%s/%s sumsq", + sname, pname); + + for (i = 0; i < rosenbrocke_P; ++i) + { + gsl_test_rel(x[i], rosenbrocke_x[i], epsrel, "%s/%s i=%zu", + sname, pname, i); + } +} + +static int +rosenbrocke_f (const gsl_vector * x, void *params, gsl_vector * f) +{ + size_t i; + + for (i = 0; i < rosenbrocke_N / 2; ++i) + { + double x2i = gsl_vector_get(x, 2*i + 1); + double x2im1 = gsl_vector_get(x, 2*i); + + gsl_vector_set(f, 2*i, 10.0 * (x2i - x2im1*x2im1)); + gsl_vector_set(f, 2*i + 1, 1.0 - x2im1); + } + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +rosenbrocke_df (const gsl_vector * x, void *params, gsl_matrix * J) +{ + size_t i; + + gsl_matrix_set_zero(J); + + for (i = 0; i < rosenbrocke_N / 2; ++i) + { + double x2im1 = gsl_vector_get(x, 2*i); + + gsl_matrix_set(J, 2*i, 2*i, -20.0*x2im1); + gsl_matrix_set(J, 2*i, 2*i + 1, 10.0); + gsl_matrix_set(J, 2*i + 1, 2*i, -1.0); + } + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +rosenbrocke_fvv (const gsl_vector * x, const gsl_vector * v, + void *params, gsl_vector * fvv) +{ + size_t i; + + for (i = 0; i < rosenbrocke_N / 2; ++i) + { + double v2im1 = gsl_vector_get(v, 2*i); + + gsl_vector_set(fvv, 2*i, -20.0 * v2im1 * v2im1); + gsl_vector_set(fvv, 2*i + 1, 0.0); + } + + (void)x; /* avoid unused parameter warning */ + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static gsl_multifit_nlinear_fdf rosenbrocke_func = +{ + rosenbrocke_f, + rosenbrocke_df, + rosenbrocke_fvv, + rosenbrocke_N, + rosenbrocke_P, + NULL, + 0, + 0, + 0 +}; + +static test_fdf_problem rosenbrocke_problem = +{ + "rosenbrock_extended", + rosenbrocke_x0, + NULL, + NULL, + &rosenbrocke_epsrel, + &rosenbrocke_checksol, + &rosenbrocke_func +}; diff --git a/gsl-2.5/multifit_nlinear/test_roth.c b/gsl-2.5/multifit_nlinear/test_roth.c new file mode 100644 index 00000000..a5ac14bd --- /dev/null +++ b/gsl-2.5/multifit_nlinear/test_roth.c @@ -0,0 +1,107 @@ +#define roth_N 2 +#define roth_P 2 + +static double roth_x0[roth_P] = { 0.5, -2.0 }; +static double roth_epsrel = 1.0e-6; + +static void +roth_checksol(const double x[], const double sumsq, + const double epsrel, const char *sname, + const char *pname) +{ + size_t i; + const double sumsq_exact1 = 0.0; + const double roth_x1[roth_P] = { 5.0, 4.0 }; + const double sumsq_exact2 = 48.9842536792400; + const double roth_x2[roth_P] = { 11.4127789869021, -0.896805253274477 }; + const double *roth_x; + double sumsq_exact; + + if (fabs(sumsq) < 0.1) + { + sumsq_exact = sumsq_exact1; + roth_x = roth_x1; + } + else + { + sumsq_exact = sumsq_exact2; + roth_x = roth_x2; + } + + gsl_test_rel(sumsq, sumsq_exact, epsrel, "%s/%s sumsq", + sname, pname); + + for (i = 0; i < roth_P; ++i) + { + gsl_test_rel(x[i], roth_x[i], epsrel, "%s/%s i=%zu", + sname, pname, i); + } +} + +static int +roth_f (const gsl_vector * x, void *params, gsl_vector * f) +{ + double x1 = gsl_vector_get(x, 0); + double x2 = gsl_vector_get(x, 1); + + gsl_vector_set(f, 0, x1 - x2*(2.0 - x2*(5.0 - x2)) - 13.0); + gsl_vector_set(f, 1, x1 - x2*(14.0 - x2*(1.0 + x2)) - 29.0); + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +roth_df (const gsl_vector * x, void *params, gsl_matrix * J) +{ + double x2 = gsl_vector_get(x, 1); + + gsl_matrix_set(J, 0, 0, 1.0); + gsl_matrix_set(J, 0, 1, -2.0 + x2*(10.0 - 3.0*x2)); + gsl_matrix_set(J, 1, 0, 1.0); + gsl_matrix_set(J, 1, 1, -14.0 + x2*(2.0 + 3.0*x2)); + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +roth_fvv (const gsl_vector * x, const gsl_vector * v, + void *params, gsl_vector * fvv) +{ + double x2 = gsl_vector_get(x, 1); + double v2 = gsl_vector_get(v, 1); + + gsl_vector_set(fvv, 0, (10.0 - 6.0*x2) * v2 * v2); + gsl_vector_set(fvv, 1, (2.0 + 6.0*x2) * v2 * v2); + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static gsl_multifit_nlinear_fdf roth_func = +{ + roth_f, + roth_df, + roth_fvv, + roth_N, + roth_P, + NULL, + 0, + 0, + 0 +}; + +static test_fdf_problem roth_problem = +{ + "roth_freudenstein", + roth_x0, + NULL, + NULL, + &roth_epsrel, + &roth_checksol, + &roth_func +}; diff --git a/gsl-2.5/multifit_nlinear/test_thurber.c b/gsl-2.5/multifit_nlinear/test_thurber.c new file mode 100644 index 00000000..0ba15f12 --- /dev/null +++ b/gsl-2.5/multifit_nlinear/test_thurber.c @@ -0,0 +1,151 @@ +#define thurber_N 37 +#define thurber_P 7 + +static double thurber_x0a[thurber_P] = { 1000.0, 1000.0, 400.0, 40.0, + 0.7, 0.3, 0.03 }; +static double thurber_x0b[thurber_P] = { 1300.0, 1500.0, 500.0, 75.0, + 1.0, 0.4, 0.05 }; +static double thurber_epsrel = 1.0e-6; + +static double thurber_sigma[thurber_P] = { + 4.6647963344E+00, 3.9571156086E+01, 2.8698696102E+01, + 5.5675370270E+00, 3.1333340687E-02, 1.4984928198E-02, + 6.5842344623E-03 +}; + +static double thurber_X[thurber_N] = { + -3.067, -2.981, -2.921, -2.912, -2.840, -2.797, -2.702, + -2.699, -2.633, -2.481, -2.363, -2.322, -1.501, -1.460, + -1.274, -1.212, -1.100, -1.046, -0.915, -0.714, -0.566, + -0.545, -0.400, -0.309, -0.109, -0.103, 0.010, 0.119, + 0.377, 0.790, 0.963, 1.006, 1.115, 1.572, 1.841, + 2.047, 2.200 +}; + +static double thurber_F[thurber_N] = { + 80.574, 84.248, 87.264, 87.195, 89.076, 89.608, 89.868, 90.101, + 92.405, 95.854, 100.696, 101.060, 401.672, 390.724, 567.534, + 635.316, 733.054, 759.087, 894.206, 990.785, 1090.109, 1080.914, + 1122.643, 1178.351, 1260.531, 1273.514, 1288.339, 1327.543, 1353.863, + 1414.509, 1425.208, 1421.384, 1442.962, 1464.350, 1468.705, + 1447.894, 1457.628 +}; + +static void +thurber_checksol(const double x[], const double sumsq, + const double epsrel, const char *sname, + const char *pname) +{ + size_t i; + const double sumsq_exact = 5.6427082397E+03; + const double thurber_x[thurber_P] = { + 1.2881396800E+03, 1.4910792535E+03, 5.8323836877E+02, + 7.5416644291E+01, 9.6629502864E-01, 3.9797285797E-01, + 4.9727297349E-02 }; + + gsl_test_rel(sumsq, sumsq_exact, epsrel, "%s/%s sumsq", + sname, pname); + + for (i = 0; i < thurber_P; ++i) + { + gsl_test_rel(x[i], thurber_x[i], epsrel, "%s/%s i=%zu", + sname, pname, i); + } +} + + +static int +thurber_f (const gsl_vector * x, void *params, gsl_vector * f) +{ + double b[thurber_P]; + size_t i; + + for (i = 0; i < thurber_P; i++) + { + b[i] = gsl_vector_get(x, i); + } + + for (i = 0; i < thurber_N; i++) + { + double xi = thurber_X[i]; + double yi; + + yi = b[0] + b[1]*xi + b[2]*xi*xi + b[3]*xi*xi*xi; + yi /= 1.0 + b[4]*xi + b[5]*xi*xi + b[6]*xi*xi*xi; + + gsl_vector_set (f, i, yi - thurber_F[i]); + } + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +thurber_df (const gsl_vector * x, void *params, gsl_matrix * df) +{ + double b[thurber_P]; + size_t i; + + for (i = 0; i < thurber_P; i++) + { + b[i] = gsl_vector_get(x, i); + } + + for (i = 0; i < thurber_N; i++) + { + double xi = thurber_X[i]; + double d, n, d_sq; + + n = b[0] + b[1]*xi + b[2]*xi*xi + b[3]*xi*xi*xi; + d = 1.0 + b[4]*xi + b[5]*xi*xi + b[6]*xi*xi*xi; + d_sq = d * d; + + gsl_matrix_set (df, i, 0, 1.0 / d); + gsl_matrix_set (df, i, 1, xi / d); + gsl_matrix_set (df, i, 2, (xi * xi) / d); + gsl_matrix_set (df, i, 3, (xi * xi * xi) / d); + gsl_matrix_set (df, i, 4, -xi * n / d_sq); + gsl_matrix_set (df, i, 5, -xi * xi * n / d_sq); + gsl_matrix_set (df, i, 6, -xi * xi * xi * n / d_sq); + } + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static gsl_multifit_nlinear_fdf thurber_func = +{ + thurber_f, + thurber_df, + NULL, /* analytic expression too complex */ + thurber_N, + thurber_P, + NULL, + 0, + 0, + 0 +}; + +static test_fdf_problem thurbera_problem = +{ + "nist-thurbera", + thurber_x0a, + NULL, + thurber_sigma, + &thurber_epsrel, + &thurber_checksol, + &thurber_func +}; + +static test_fdf_problem thurberb_problem = +{ + "nist-thurberb", + thurber_x0b, + NULL, + thurber_sigma, + &thurber_epsrel, + &thurber_checksol, + &thurber_func +}; diff --git a/gsl-2.5/multifit_nlinear/test_vardim.c b/gsl-2.5/multifit_nlinear/test_vardim.c new file mode 100644 index 00000000..fb66e09e --- /dev/null +++ b/gsl-2.5/multifit_nlinear/test_vardim.c @@ -0,0 +1,119 @@ +#define vardim_N 7 /* p + 2 */ +#define vardim_P 5 + +static double vardim_x0[vardim_P] = { 0.8, 0.6, 0.4, 0.2, 0.0 }; +static double vardim_epsrel = 1.0e-12; + +static void +vardim_checksol(const double x[], const double sumsq, + const double epsrel, const char *sname, + const char *pname) +{ + size_t i; + const double sumsq_exact = 0.0; + + gsl_test_rel(sumsq, sumsq_exact, epsrel, "%s/%s sumsq", + sname, pname); + + for (i = 0; i < vardim_P; ++i) + { + gsl_test_rel(x[i], 1.0, epsrel, "%s/%s i=%zu", + sname, pname, i); + } +} + +static int +vardim_f (const gsl_vector * x, void *params, gsl_vector * f) +{ + size_t i; + double sum = 0.0; + + for (i = 0; i < vardim_P; ++i) + { + double xi = gsl_vector_get(x, i); + + gsl_vector_set(f, i, xi - 1.0); + + sum += (i + 1.0) * (xi - 1.0); + } + + gsl_vector_set(f, vardim_P, sum); + gsl_vector_set(f, vardim_P + 1, sum*sum); + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +vardim_df (const gsl_vector * x, void *params, gsl_matrix * J) +{ + size_t i; + double sum = 0.0; + gsl_matrix_view m = gsl_matrix_submatrix(J, 0, 0, vardim_P, vardim_P); + + gsl_matrix_set_identity(&m.matrix); + + for (i = 0; i < vardim_P; ++i) + { + double xi = gsl_vector_get(x, i); + sum += (i + 1.0) * (xi - 1.0); + } + + for (i = 0; i < vardim_P; ++i) + { + gsl_matrix_set(J, vardim_P, i, i + 1.0); + gsl_matrix_set(J, vardim_P + 1, i, 2*(i + 1.0)*sum); + } + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +vardim_fvv (const gsl_vector * x, const gsl_vector * v, + void *params, gsl_vector * fvv) +{ + size_t i; + double sum = 0.0; + + gsl_vector_set_zero(fvv); + + for (i = 0; i < vardim_P; ++i) + { + double vi = gsl_vector_get(v, i); + sum += (i + 1.0) * vi; + } + + gsl_vector_set(fvv, vardim_N - 1, 2.0 * sum * sum); + + (void)x; /* avoid unused parameter warning */ + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static gsl_multifit_nlinear_fdf vardim_func = +{ + vardim_f, + vardim_df, + vardim_fvv, + vardim_N, + vardim_P, + NULL, + 0, + 0, + 0 +}; + +static test_fdf_problem vardim_problem = +{ + "vardim", + vardim_x0, + NULL, + NULL, + &vardim_epsrel, + &vardim_checksol, + &vardim_func +}; diff --git a/gsl-2.5/multifit_nlinear/test_watson.c b/gsl-2.5/multifit_nlinear/test_watson.c new file mode 100644 index 00000000..12c19adb --- /dev/null +++ b/gsl-2.5/multifit_nlinear/test_watson.c @@ -0,0 +1,162 @@ +#define watson_N 31 +#define watson_P 6 + +static double watson_x0[watson_P] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; +static double watson_epsrel = 1.0e-6; + +static void +watson_checksol(const double x[], const double sumsq, + const double epsrel, const char *sname, + const char *pname) +{ + size_t i; + const double sumsq_exact = 2.287670053552372e-03; + const double watson_x[watson_P] = { + -1.572508640629858e-02, 1.012434869366059e+00, -2.329916259263380e-01, + 1.260430087686035e+00, -1.513728922580576e+00, 9.929964323646112e-01 }; + + gsl_test_rel(sumsq, sumsq_exact, epsrel, "%s/%s sumsq", + sname, pname); + + for (i = 0; i < watson_P; ++i) + { + gsl_test_rel(x[i], watson_x[i], epsrel, "%s/%s i=%zu", + sname, pname, i); + } +} + +static int +watson_f (const gsl_vector * x, void *params, gsl_vector * f) +{ + const double x1 = gsl_vector_get(x, 0); + const double x2 = gsl_vector_get(x, 1); + size_t i, j; + + for (i = 0; i < watson_N - 2; ++i) + { + double ti = (i + 1) / 29.0; + double tjm1 = 1.0, tjm2 = 1.0; + double sum1 = 0.0, sum2 = 0.0; + + for (j = 0; j < watson_P; ++j) + { + double xj = gsl_vector_get(x, j); + + sum1 += xj * tjm1; + tjm1 *= ti; + + if (j > 0) + { + sum2 += j * xj * tjm2; + tjm2 *= ti; + } + } + + gsl_vector_set (f, i, sum2 - sum1*sum1 - 1.0); + } + + gsl_vector_set(f, watson_N - 2, x1); + gsl_vector_set(f, watson_N - 1, x2 - x1*x1 - 1.0); + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +watson_df (const gsl_vector * x, void *params, gsl_matrix * J) +{ + double x1 = gsl_vector_get (x, 0); + size_t i, j; + + gsl_matrix_set_zero(J); + + for (i = 0; i < watson_N - 2; ++i) + { + double ti = (i + 1) / 29.0; + double tjm1 = 1.0, tjm2 = 1.0; + double sum1 = 0.0; + + for (j = 0; j < watson_P; ++j) + { + double xj = gsl_vector_get(x, j); + sum1 += xj * tjm1; + tjm1 *= ti; + } + + tjm1 = 1.0; + tjm2 = 1.0; + for (j = 0; j < watson_P; ++j) + { + gsl_matrix_set(J, i, j, j * tjm2 - 2.0*sum1*tjm1); + tjm1 *= ti; + + if (j > 0) + tjm2 *= ti; + } + } + + gsl_matrix_set(J, watson_N - 2, 0, 1.0); + gsl_matrix_set(J, watson_N - 1, 0, -2.0*x1); + gsl_matrix_set(J, watson_N - 1, 1, 1.0); + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +watson_fvv (const gsl_vector * x, const gsl_vector * v, + void *params, gsl_vector * fvv) +{ + double v1 = gsl_vector_get (v, 0); + size_t i, j; + + for (i = 0; i < watson_N - 2; ++i) + { + double ti = (i + 1) / 29.0; + double sum = 0.0; + double tjm1 = 1.0; + + for (j = 0; j < watson_P; ++j) + { + double vj = gsl_vector_get(v, j); + sum += vj * tjm1; + tjm1 *= ti; + } + + gsl_vector_set(fvv, i, -2.0*sum*sum); + } + + gsl_vector_set(fvv, watson_N - 2, 0.0); + gsl_vector_set(fvv, watson_N - 1, -2.0*v1*v1); + + (void)x; /* avoid unused parameter warning */ + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static gsl_multifit_nlinear_fdf watson_func = +{ + watson_f, + watson_df, + watson_fvv, + watson_N, + watson_P, + NULL, + 0, + 0, + 0 +}; + +static test_fdf_problem watson_problem = +{ + "watson", + watson_x0, + NULL, + NULL, + &watson_epsrel, + &watson_checksol, + &watson_func +}; diff --git a/gsl-2.5/multifit_nlinear/test_wnlin.c b/gsl-2.5/multifit_nlinear/test_wnlin.c new file mode 100644 index 00000000..b7953890 --- /dev/null +++ b/gsl-2.5/multifit_nlinear/test_wnlin.c @@ -0,0 +1,185 @@ +#define wnlin_N 40 +#define wnlin_P 3 + +/* initial guess should be chosen so that Jacobian has full rank, + * or some solvers will fail */ +static double wnlin_x0[wnlin_P] = { 1.0, 0.9, 0.0 }; +static double wnlin_epsrel = 1.0e-7; + +static int wnlin_internal_weight = 1; + +/* data */ +static double wnlin_Y[wnlin_N] = { + 6.08035e+00, 5.47552e+00, 5.94654e+00, 5.04920e+00, 4.78568e+00, + 3.51748e+00, 2.84671e+00, 3.24634e+00, 3.23395e+00, 3.30385e+00, + 2.83439e+00, 2.31891e+00, 2.33858e+00, 2.40559e+00, 2.41856e+00, + 1.99966e+00, 1.88127e+00, 1.91477e+00, 1.70415e+00, 1.60316e+00, + 1.77937e+00, 1.55302e+00, 1.50903e+00, 1.36364e+00, 1.36873e+00, + 1.41954e+00, 1.37778e+00, 1.23573e+00, 1.28524e+00, 1.46327e+00, + 1.22315e+00, 1.19330e+00, 1.18717e+00, 8.83172e-01, 1.23424e+00, + 1.14683e+00, 1.11091e+00, 1.20396e+00, 1.28722e+00, 1.05801e+00 +}; + +/* weights */ +static double wnlin_W[wnlin_N] = { + 2.77778e+00, 3.27690e+00, 3.85426e+00, 4.51906e+00, 5.28083e+00, + 6.14919e+00, 7.13370e+00, 8.24349e+00, 9.48703e+00, 1.08717e+01, + 1.24036e+01, 1.40869e+01, 1.59238e+01, 1.79142e+01, 2.00553e+01, + 2.23415e+01, 2.47646e+01, 2.73137e+01, 2.99753e+01, 3.27337e+01, + 3.55714e+01, 3.84696e+01, 4.14085e+01, 4.43678e+01, 4.73278e+01, + 5.02690e+01, 5.31731e+01, 5.60234e+01, 5.88046e+01, 6.15036e+01, + 6.41092e+01, 6.66121e+01, 6.90054e+01, 7.12839e+01, 7.34442e+01, + 7.54848e+01, 7.74053e+01, 7.92069e+01, 8.08918e+01, 8.24632e+01 +}; + +static void +wnlin_checksol(const double x[], const double sumsq, + const double epsrel, const char *sname, + const char *pname) +{ + size_t i; + const double sumsq_exact = 29.7481259665713758; + const double wnlin_x[wnlin_P] = { 5.17378551196259195, + 0.111041758006851149, + 1.05282724070446099 }; + + gsl_test_rel(sumsq, sumsq_exact, epsrel, "%s/%s sumsq", + sname, pname); + + for (i = 0; i < wnlin_P; ++i) + { + gsl_test_rel(x[i], wnlin_x[i], epsrel, "%s/%s i=%zu", + sname, pname, i); + } +} + +static int +wnlin_f (const gsl_vector *x, void *params, gsl_vector *f) +{ + int *iptr = (int *) params; + int doweight = iptr ? *iptr : 0; + double A = gsl_vector_get (x, 0); + double lambda = gsl_vector_get (x, 1); + double b = gsl_vector_get (x, 2); + size_t i; + + /* model Yi = A * exp(-lambda * i) + b */ + for (i = 0; i < wnlin_N; i++) + { + double ti = i; + double yi = wnlin_Y[i]; + double swi = sqrt(wnlin_W[i]); + double Mi = A * exp (-lambda * ti) + b; + + if (doweight) + gsl_vector_set (f, i, swi * (Mi - yi)); + else + gsl_vector_set (f, i, Mi - yi); + } + + return GSL_SUCCESS; +} + +static int +wnlin_df (const gsl_vector *x, void *params, gsl_matrix *df) +{ + int *iptr = (int *) params; + int doweight = iptr ? *iptr : 0; + double A = gsl_vector_get (x, 0); + double lambda = gsl_vector_get (x, 1); + size_t i; + + for (i = 0; i < wnlin_N; i++) + { + gsl_vector_view v = gsl_matrix_row(df, i); + double ti = i; + double swi = sqrt(wnlin_W[i]); + double e = exp(-lambda * ti); + + gsl_vector_set(&v.vector, 0, e); + gsl_vector_set(&v.vector, 1, -ti * A * e); + gsl_vector_set(&v.vector, 2, 1.0); + + if (doweight) + gsl_vector_scale(&v.vector, swi); + } + + return GSL_SUCCESS; +} + +static int +wnlin_fvv (const gsl_vector * x, const gsl_vector * v, + void *params, gsl_vector * fvv) +{ + int *iptr = (int *) params; + int doweight = iptr ? *iptr : 0; + double A = gsl_vector_get (x, 0); + double lambda = gsl_vector_get (x, 1); + double v1 = gsl_vector_get(v, 0); + double v2 = gsl_vector_get(v, 1); + size_t i; + + for (i = 0; i < wnlin_N; i++) + { + double ti = i; + double swi = sqrt(wnlin_W[i]); + double fvvi; + + fvvi = exp(-ti*lambda)*ti*v2 * (-2*v1 + ti*v2*A); + + if (doweight) + gsl_vector_set(fvv, i, swi * fvvi); + else + gsl_vector_set(fvv, i, fvvi); + } + + return GSL_SUCCESS; +} + +static gsl_multifit_nlinear_fdf wnlin_func1 = +{ + wnlin_f, + wnlin_df, + wnlin_fvv, + wnlin_N, + wnlin_P, + (void *) &wnlin_internal_weight, + 0, + 0, + 0 +}; + +static gsl_multifit_nlinear_fdf wnlin_func2 = +{ + wnlin_f, + wnlin_df, + wnlin_fvv, + wnlin_N, + wnlin_P, + NULL, + 0, + 0, + 0 +}; + +static test_fdf_problem wnlin_problem1 = +{ + "wnlin_internal_weights", + wnlin_x0, + NULL, + NULL, + &wnlin_epsrel, + &wnlin_checksol, + &wnlin_func1 +}; + +static test_fdf_problem wnlin_problem2 = +{ + "wnlin_external_weights", + wnlin_x0, + wnlin_W, + NULL, + &wnlin_epsrel, + &wnlin_checksol, + &wnlin_func2 +}; diff --git a/gsl-2.5/multifit_nlinear/test_wood.c b/gsl-2.5/multifit_nlinear/test_wood.c new file mode 100644 index 00000000..596ad863 --- /dev/null +++ b/gsl-2.5/multifit_nlinear/test_wood.c @@ -0,0 +1,115 @@ +#define wood_N 6 +#define wood_P 4 + +static double wood_x0[wood_P] = { -3.0, -1.0, -3.0, -1.0 }; +static double wood_epsrel = 1.0e-12; + +static void +wood_checksol(const double x[], const double sumsq, + const double epsrel, const char *sname, + const char *pname) +{ + size_t i; + const double sumsq_exact = 0.0; + const double wood_x[wood_P] = { 1.0, 1.0, 1.0, 1.0 }; + + gsl_test_rel(sumsq, sumsq_exact, epsrel, "%s/%s sumsq", + sname, pname); + + for (i = 0; i < wood_P; ++i) + { + gsl_test_rel(x[i], wood_x[i], epsrel, "%s/%s i=%zu", + sname, pname, i); + } +} + +static int +wood_f (const gsl_vector * x, void *params, gsl_vector * f) +{ + double x1 = gsl_vector_get(x, 0); + double x2 = gsl_vector_get(x, 1); + double x3 = gsl_vector_get(x, 2); + double x4 = gsl_vector_get(x, 3); + + gsl_vector_set(f, 0, 10.0*(x2 - x1*x1)); + gsl_vector_set(f, 1, 1.0 - x1); + gsl_vector_set(f, 2, sqrt(90.0)*(x4 - x3*x3)); + gsl_vector_set(f, 3, 1.0 - x3); + gsl_vector_set(f, 4, sqrt(10.0)*(x2 + x4 - 2.0)); + gsl_vector_set(f, 5, (x2 - x4) / sqrt(10.0)); + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +wood_df (const gsl_vector * x, void *params, gsl_matrix * J) +{ + double x1 = gsl_vector_get(x, 0); + double x3 = gsl_vector_get(x, 2); + double s90 = sqrt(90.0); + double s10 = sqrt(10.0); + + gsl_matrix_set_zero(J); + + gsl_matrix_set(J, 0, 0, -20.0*x1); + gsl_matrix_set(J, 0, 1, 10.0); + gsl_matrix_set(J, 1, 0, -1.0); + gsl_matrix_set(J, 2, 2, -2.0*s90*x3); + gsl_matrix_set(J, 2, 3, s90); + gsl_matrix_set(J, 3, 2, -1.0); + gsl_matrix_set(J, 4, 1, s10); + gsl_matrix_set(J, 4, 3, s10); + gsl_matrix_set(J, 5, 1, 1.0/s10); + gsl_matrix_set(J, 5, 3, -1.0/s10); + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +wood_fvv (const gsl_vector * x, const gsl_vector * v, + void *params, gsl_vector * fvv) +{ + const double s10 = sqrt(10.0); + double v1 = gsl_vector_get(v, 0); + double v3 = gsl_vector_get(v, 2); + + gsl_vector_set(fvv, 0, -20.0 * v1 * v1); + gsl_vector_set(fvv, 1, 0.0); + gsl_vector_set(fvv, 2, -6.0 * s10 * v3 * v3); + gsl_vector_set(fvv, 3, 0.0); + gsl_vector_set(fvv, 4, 0.0); + gsl_vector_set(fvv, 5, 0.0); + + (void)x; /* avoid unused parameter warning */ + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static gsl_multifit_nlinear_fdf wood_func = +{ + wood_f, + wood_df, + wood_fvv, + wood_N, + wood_P, + NULL, + 0, + 0, + 0 +}; + +static test_fdf_problem wood_problem = +{ + "wood", + wood_x0, + NULL, + NULL, + &wood_epsrel, + &wood_checksol, + &wood_func +}; diff --git a/gsl-2.5/multifit_nlinear/trust.c b/gsl-2.5/multifit_nlinear/trust.c new file mode 100644 index 00000000..2d42ff70 --- /dev/null +++ b/gsl-2.5/multifit_nlinear/trust.c @@ -0,0 +1,588 @@ +/* multifit_nlinear/trust.c + * + * Copyright (C) 2016 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "common.c" +#include "nielsen.c" + +/* + * This module contains a high level driver for a general trust + * region nonlinear least squares solver. This container handles + * the computation of all of the quantities relevant to all trust + * region methods, including: + * + * residual vector: f_k = f(x_k) + * Jacobian matrix: J_k = J(x_k) + * gradient vector: g_k = J_k^T f_k + * scaling matrix: D_k + */ + +typedef struct +{ + size_t n; /* number of observations */ + size_t p; /* number of parameters */ + double delta; /* trust region radius */ + double mu; /* LM parameter */ + long nu; /* for updating LM parameter */ + gsl_vector *diag; /* D = diag(J^T J) */ + gsl_vector *x_trial; /* trial parameter vector */ + gsl_vector *f_trial; /* trial function vector */ + gsl_vector *workp; /* workspace, length p */ + gsl_vector *workn; /* workspace, length n */ + + void *trs_state; /* workspace for trust region subproblem */ + void *solver_state; /* workspace for linear least squares solver */ + + double avratio; /* current |a| / |v| */ + + /* tunable parameters */ + gsl_multifit_nlinear_parameters params; +} trust_state_t; + +static void * trust_alloc (const gsl_multifit_nlinear_parameters * params, + const size_t n, const size_t p); +static void trust_free(void *vstate); +static int trust_init(void *vstate, const gsl_vector * swts, + gsl_multifit_nlinear_fdf *fdf, const gsl_vector *x, + gsl_vector *f, gsl_matrix *J, gsl_vector *g); +static int trust_iterate(void *vstate, const gsl_vector *swts, + gsl_multifit_nlinear_fdf *fdf, + gsl_vector *x, gsl_vector *f, gsl_matrix *J, + gsl_vector *g, gsl_vector *dx); +static int trust_rcond(double *rcond, void *vstate); +static double trust_avratio(void *vstate); +static void trust_trial_step(const gsl_vector * x, const gsl_vector * dx, + gsl_vector * x_trial); +static double trust_calc_rho(const gsl_vector * f, const gsl_vector * f_trial, + const gsl_vector * g, const gsl_matrix * J, + const gsl_vector * dx, trust_state_t * state); +static int trust_eval_step(const gsl_vector * f, const gsl_vector * f_trial, + const gsl_vector * g, const gsl_matrix * J, + const gsl_vector * dx, double * rho, trust_state_t * state); +static double trust_scaled_norm(const gsl_vector *D, const gsl_vector *a); + +static void * +trust_alloc (const gsl_multifit_nlinear_parameters * params, + const size_t n, const size_t p) +{ + trust_state_t *state; + + state = calloc(1, sizeof(trust_state_t)); + if (state == NULL) + { + GSL_ERROR_NULL ("failed to allocate lm state", GSL_ENOMEM); + } + + state->diag = gsl_vector_alloc(p); + if (state->diag == NULL) + { + GSL_ERROR_NULL ("failed to allocate space for diag", GSL_ENOMEM); + } + + state->workp = gsl_vector_alloc(p); + if (state->workp == NULL) + { + GSL_ERROR_NULL ("failed to allocate space for workp", GSL_ENOMEM); + } + + state->workn = gsl_vector_alloc(n); + if (state->workn == NULL) + { + GSL_ERROR_NULL ("failed to allocate space for workn", GSL_ENOMEM); + } + + state->x_trial = gsl_vector_alloc(p); + if (state->x_trial == NULL) + { + GSL_ERROR_NULL ("failed to allocate space for x_trial", GSL_ENOMEM); + } + + state->f_trial = gsl_vector_alloc(n); + if (state->f_trial == NULL) + { + GSL_ERROR_NULL ("failed to allocate space for f_trial", GSL_ENOMEM); + } + + state->trs_state = (params->trs->alloc)(params, n, p); + if (state->trs_state == NULL) + { + GSL_ERROR_NULL ("failed to allocate space for trs state", GSL_ENOMEM); + } + + state->solver_state = (params->solver->alloc)(n, p); + if (state->solver_state == NULL) + { + GSL_ERROR_NULL ("failed to allocate space for solver state", GSL_ENOMEM); + } + + state->n = n; + state->p = p; + state->delta = 0.0; + state->params = *params; + + return state; +} + +static void +trust_free(void *vstate) +{ + trust_state_t *state = (trust_state_t *) vstate; + const gsl_multifit_nlinear_parameters *params = &(state->params); + + if (state->diag) + gsl_vector_free(state->diag); + + if (state->workp) + gsl_vector_free(state->workp); + + if (state->workn) + gsl_vector_free(state->workn); + + if (state->x_trial) + gsl_vector_free(state->x_trial); + + if (state->f_trial) + gsl_vector_free(state->f_trial); + + if (state->trs_state) + (params->trs->free)(state->trs_state); + + if (state->solver_state) + (params->solver->free)(state->solver_state); + + free(state); +} + +/* +trust_init() + Initialize trust region solver + +Inputs: vstate - workspace + swts - sqrt(W) vector + fdf - user callback functions + x - initial parameter values + f - (output) f(x) vector + J - (output) J(x) matrix + g - (output) J(x)' f(x) vector + +Return: success/error +*/ + +static int +trust_init(void *vstate, const gsl_vector *swts, + gsl_multifit_nlinear_fdf *fdf, const gsl_vector *x, + gsl_vector *f, gsl_matrix *J, gsl_vector *g) +{ + int status; + trust_state_t *state = (trust_state_t *) vstate; + const gsl_multifit_nlinear_parameters *params = &(state->params); + double Dx; + + /* evaluate function and Jacobian at x and apply weight transform */ + status = gsl_multifit_nlinear_eval_f(fdf, x, swts, f); + if (status) + return status; + + status = gsl_multifit_nlinear_eval_df(x, f, swts, params->h_df, + params->fdtype, fdf, J, state->workn); + if (status) + return status; + + /* compute g = J^T f */ + gsl_blas_dgemv(CblasTrans, 1.0, J, f, 0.0, g); + + /* initialize diagonal scaling matrix D */ + (params->scale->init)(J, state->diag); + + /* compute initial trust region radius */ + Dx = trust_scaled_norm(state->diag, x); + state->delta = 0.3 * GSL_MAX(1.0, Dx); + + /* initialize LM parameter */ + status = nielsen_init(J, state->diag, &(state->mu), &(state->nu)); + if (status) + return status; + + /* initialize trust region method solver */ + { + gsl_multifit_nlinear_trust_state trust_state; + + trust_state.x = x; + trust_state.f = f; + trust_state.g = g; + trust_state.J = J; + trust_state.diag = state->diag; + trust_state.sqrt_wts = swts; + trust_state.mu = &(state->mu); + trust_state.params = params; + trust_state.solver_state = state->solver_state; + trust_state.fdf = fdf; + trust_state.avratio = &(state->avratio); + + status = (params->trs->init)(&trust_state, state->trs_state); + + if (status) + return status; + } + + /* set default parameters */ + + state->avratio = 0.0; + + return GSL_SUCCESS; +} + +/* +trust_iterate() + This function performs 1 iteration of the trust region algorithm. +It calls a user-specified method for computing the next step +(LM or dogleg), then tests if the computed step is acceptable. + +Args: vstate - trust workspace + swts - data weights (NULL if unweighted) + fdf - function and Jacobian pointers + x - on input, current parameter vector + on output, new parameter vector x + dx + f - on input, f(x) + on output, f(x + dx) + J - on input, J(x) + on output, J(x + dx) + g - on input, g(x) = J(x)' f(x) + on output, g(x + dx) = J(x + dx)' f(x + dx) + dx - (output only) parameter step vector + +Return: +1) GSL_SUCCESS if we found a step which reduces the cost +function + +2) GSL_ENOPROG if 15 successive attempts were to made to +find a good step without success + +3) If a scaling matrix D is used, inputs and outputs are +set to the unscaled quantities (ie: J and g) +*/ + +static int +trust_iterate(void *vstate, const gsl_vector *swts, + gsl_multifit_nlinear_fdf *fdf, gsl_vector *x, + gsl_vector *f, gsl_matrix *J, gsl_vector *g, + gsl_vector *dx) +{ + int status; + trust_state_t *state = (trust_state_t *) vstate; + const gsl_multifit_nlinear_parameters *params = &(state->params); + const gsl_multifit_nlinear_trs *trs = params->trs; + gsl_multifit_nlinear_trust_state trust_state; + gsl_vector *x_trial = state->x_trial; /* trial x + dx */ + gsl_vector *f_trial = state->f_trial; /* trial f(x + dx) */ + gsl_vector *diag = state->diag; /* diag(D) */ + double rho; /* ratio actual_reduction/predicted_reduction */ + int foundstep = 0; /* found step dx */ + int bad_steps = 0; /* consecutive rejected steps */ + + /* store all state parameters needed by low level methods */ + trust_state.x = x; + trust_state.f = f; + trust_state.g = g; + trust_state.J = J; + trust_state.diag = state->diag; + trust_state.sqrt_wts = swts; + trust_state.mu = &(state->mu); + trust_state.params = params; + trust_state.solver_state = state->solver_state; + trust_state.fdf = fdf; + trust_state.avratio = &(state->avratio); + + /* initialize trust region subproblem with this Jacobian */ + status = (trs->preloop)(&trust_state, state->trs_state); + if (status) + return status; + + /* loop until we find an acceptable step dx */ + while (!foundstep) + { + /* calculate new step */ + status = (trs->step)(&trust_state, state->delta, dx, state->trs_state); + + /* occasionally the iterative methods (ie: CG Steihaug) can fail to find a step, + * so in this case skip rho calculation and count it as a rejected step */ + + if (status == GSL_SUCCESS) + { + /* compute x_trial = x + dx */ + trust_trial_step(x, dx, x_trial); + + /* compute f_trial = f(x + dx) */ + status = gsl_multifit_nlinear_eval_f(fdf, x_trial, swts, f_trial); + if (status) + return status; + + /* check if step should be accepted or rejected */ + status = trust_eval_step(f, f_trial, g, J, dx, &rho, state); + if (status == GSL_SUCCESS) + foundstep = 1; + } + else + { + /* an iterative TRS method failed to find a step vector */ + rho = -1.0; + } + + /* + * update trust region radius: if rho is large, + * then the quadratic model is a good approximation + * to the objective function, enlarge trust region. + * If rho is small (or negative), the model function + * is a poor approximation so decrease trust region. This + * can happen even if the step is accepted. + */ + if (rho > 0.75) + state->delta *= params->factor_up; + else if (rho < 0.25) + state->delta /= params->factor_down; + + if (foundstep) + { + /* step was accepted */ + + /* compute J <- J(x + dx) */ + status = gsl_multifit_nlinear_eval_df(x_trial, f_trial, swts, + params->h_df, params->fdtype, + fdf, J, state->workn); + if (status) + return status; + + /* update x <- x + dx */ + gsl_vector_memcpy(x, x_trial); + + /* update f <- f(x + dx) */ + gsl_vector_memcpy(f, f_trial); + + /* compute new g = J^T f */ + gsl_blas_dgemv(CblasTrans, 1.0, J, f, 0.0, g); + + /* update scaling matrix D */ + (params->scale->update)(J, diag); + + /* step accepted, decrease LM parameter */ + status = nielsen_accept(rho, &(state->mu), &(state->nu)); + if (status) + return status; + + bad_steps = 0; + } + else + { + /* step rejected, increase LM parameter */ + status = nielsen_reject(&(state->mu), &(state->nu)); + if (status) + return status; + + if (++bad_steps > 15) + { + /* if more than 15 consecutive rejected steps, report no progress */ + return GSL_ENOPROG; + } + } + } + + return GSL_SUCCESS; +} /* trust_iterate() */ + +static int +trust_rcond(double *rcond, void *vstate) +{ + int status; + trust_state_t *state = (trust_state_t *) vstate; + const gsl_multifit_nlinear_parameters *params = &(state->params); + + status = (params->solver->rcond)(rcond, state->solver_state); + + return status; +} + +static double +trust_avratio(void *vstate) +{ + trust_state_t *state = (trust_state_t *) vstate; + return state->avratio; +} + +/* compute x_trial = x + dx */ +static void +trust_trial_step(const gsl_vector * x, const gsl_vector * dx, + gsl_vector * x_trial) +{ + size_t i, N = x->size; + + for (i = 0; i < N; i++) + { + double dxi = gsl_vector_get (dx, i); + double xi = gsl_vector_get (x, i); + gsl_vector_set (x_trial, i, xi + dxi); + } +} + +/* +trust_calc_rho() + Calculate ratio of actual reduction to predicted +reduction. + +rho = actual_reduction / predicted_reduction + +actual_reduction = 1 - ( ||f+|| / ||f|| )^2 +predicted_reduction = -2 g^T dx / ||f||^2 - ( ||J*dx|| / ||f|| )^2 + = -2 fhat . beta - ||beta||^2 + +where: beta = J*dx / ||f|| + +Inputs: f - f(x) + f_trial - f(x + dx) + g - gradient J^T f + J - Jacobian + dx - proposed step, size p + state - workspace + +Return: rho = actual_reduction / predicted_reduction +If actual_reduction is < 0, return rho = -1 +*/ + +static double +trust_calc_rho(const gsl_vector * f, const gsl_vector * f_trial, + const gsl_vector * g, const gsl_matrix * J, + const gsl_vector * dx, trust_state_t * state) +{ + int status; + const gsl_multifit_nlinear_parameters *params = &(state->params); + const gsl_multifit_nlinear_trs *trs = params->trs; + const double normf = gsl_blas_dnrm2(f); + const double normf_trial = gsl_blas_dnrm2(f_trial); + gsl_multifit_nlinear_trust_state trust_state; + double rho; + double actual_reduction; + double pred_reduction; + double u; + + /* if ||f(x+dx)|| > ||f(x)|| reject step immediately */ + if (normf_trial >= normf) + return -1.0; + + trust_state.x = NULL; + trust_state.f = f; + trust_state.g = g; + trust_state.J = J; + trust_state.diag = state->diag; + trust_state.sqrt_wts = NULL; + trust_state.mu = &(state->mu); + trust_state.params = params; + trust_state.solver_state = state->solver_state; + trust_state.fdf = NULL; + trust_state.avratio = &(state->avratio); + + /* compute numerator of rho (actual reduction) */ + u = normf_trial / normf; + actual_reduction = 1.0 - u*u; + + /* + * compute denominator of rho (predicted reduction); this is calculated + * inside each trust region subproblem, since it depends on the local + * model used, which can vary according to each TRS + */ + status = (trs->preduction)(&trust_state, dx, &pred_reduction, state->trs_state); + if (status) + return -1.0; + + if (pred_reduction > 0.0) + rho = actual_reduction / pred_reduction; + else + rho = -1.0; + + return rho; +} + +/* +trust_eval_step() + Evaluate proposed step to determine if it should be +accepted or rejected +*/ + +static int +trust_eval_step(const gsl_vector * f, const gsl_vector * f_trial, + const gsl_vector * g, const gsl_matrix * J, + const gsl_vector * dx, double * rho, trust_state_t * state) +{ + int status = GSL_SUCCESS; + const gsl_multifit_nlinear_parameters *params = &(state->params); + + if (params->trs == gsl_multifit_nlinear_trs_lmaccel) + { + /* reject step if acceleration is too large compared to velocity */ + if (state->avratio > params->avmax) + status = GSL_FAILURE; + } + + /* compute rho */ + *rho = trust_calc_rho(f, f_trial, g, J, dx, state); + if (*rho <= 0.0) + status = GSL_FAILURE; + + return status; +} + +/* compute || diag(D) a || */ +static double +trust_scaled_norm(const gsl_vector *D, const gsl_vector *a) +{ + const size_t n = a->size; + double e2 = 0.0; + size_t i; + + for (i = 0; i < n; ++i) + { + double Di = gsl_vector_get(D, i); + double ai = gsl_vector_get(a, i); + double u = Di * ai; + + e2 += u * u; + } + + return sqrt (e2); +} + +static const gsl_multifit_nlinear_type trust_type = +{ + "trust-region", + trust_alloc, + trust_init, + trust_iterate, + trust_rcond, + trust_avratio, + trust_free +}; + +const gsl_multifit_nlinear_type *gsl_multifit_nlinear_trust = &trust_type; diff --git a/gsl-2.5/multifit_nlinear/trust.lo b/gsl-2.5/multifit_nlinear/trust.lo new file mode 100644 index 00000000..ee2a3cac --- /dev/null +++ b/gsl-2.5/multifit_nlinear/trust.lo @@ -0,0 +1,12 @@ +# trust.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/trust.o' + +# Name of the non-PIC object +non_pic_object='trust.o' + diff --git a/gsl-2.5/multilarge/.deps/multilarge.Plo b/gsl-2.5/multilarge/.deps/multilarge.Plo new file mode 100644 index 00000000..64794fab --- /dev/null +++ b/gsl-2.5/multilarge/.deps/multilarge.Plo @@ -0,0 +1,298 @@ +multilarge.lo: multilarge.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_math.h /usr/include/math.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h /usr/include/stdlib.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_errno.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_multifit.h ../gsl/gsl_multilarge.h \ + ../gsl/gsl_blas.h ../gsl/gsl_blas_types.h ../gsl/gsl_cblas.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +/usr/include/stdlib.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_multifit.h: + +../gsl/gsl_multilarge.h: + +../gsl/gsl_blas.h: + +../gsl/gsl_blas_types.h: + +../gsl/gsl_cblas.h: diff --git a/gsl-2.5/multilarge/.deps/normal.Plo b/gsl-2.5/multilarge/.deps/normal.Plo new file mode 100644 index 00000000..1acc0057 --- /dev/null +++ b/gsl-2.5/multilarge/.deps/normal.Plo @@ -0,0 +1,308 @@ +normal.lo: normal.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_math.h /usr/include/math.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h /usr/include/stdlib.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_errno.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_linalg.h ../gsl/gsl_mode.h \ + ../gsl/gsl_permutation.h ../gsl/gsl_blas.h ../gsl/gsl_blas_types.h \ + ../gsl/gsl_cblas.h ../gsl/gsl_eigen.h ../gsl/gsl_multifit.h \ + ../gsl/gsl_multilarge.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +/usr/include/stdlib.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_linalg.h: + +../gsl/gsl_mode.h: + +../gsl/gsl_permutation.h: + +../gsl/gsl_blas.h: + +../gsl/gsl_blas_types.h: + +../gsl/gsl_cblas.h: + +../gsl/gsl_eigen.h: + +../gsl/gsl_multifit.h: + +../gsl/gsl_multilarge.h: diff --git a/gsl-2.5/multilarge/.deps/test.Po b/gsl-2.5/multilarge/.deps/test.Po new file mode 100644 index 00000000..8bbb2fdb --- /dev/null +++ b/gsl-2.5/multilarge/.deps/test.Po @@ -0,0 +1,314 @@ +test.o: test.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_test.h \ + ../gsl/gsl_multifit.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_multilarge.h ../gsl/gsl_blas.h \ + ../gsl/gsl_blas_types.h ../gsl/gsl_cblas.h ../gsl/gsl_rng.h \ + ../gsl/gsl_linalg.h ../gsl/gsl_mode.h ../gsl/gsl_permutation.h \ + ../gsl/gsl_ieee_utils.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_test.h: + +../gsl/gsl_multifit.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_multilarge.h: + +../gsl/gsl_blas.h: + +../gsl/gsl_blas_types.h: + +../gsl/gsl_cblas.h: + +../gsl/gsl_rng.h: + +../gsl/gsl_linalg.h: + +../gsl/gsl_mode.h: + +../gsl/gsl_permutation.h: + +../gsl/gsl_ieee_utils.h: diff --git a/gsl-2.5/multilarge/.deps/tsqr.Plo b/gsl-2.5/multilarge/.deps/tsqr.Plo new file mode 100644 index 00000000..784d5f50 --- /dev/null +++ b/gsl-2.5/multilarge/.deps/tsqr.Plo @@ -0,0 +1,305 @@ +tsqr.lo: tsqr.c /usr/include/stdc-predef.h ../config.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h /usr/include/stdlib.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_errno.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_linalg.h ../gsl/gsl_mode.h \ + ../gsl/gsl_permutation.h ../gsl/gsl_blas.h ../gsl/gsl_blas_types.h \ + ../gsl/gsl_cblas.h ../gsl/gsl_multilarge.h ../gsl/gsl_multifit.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +/usr/include/stdlib.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_linalg.h: + +../gsl/gsl_mode.h: + +../gsl/gsl_permutation.h: + +../gsl/gsl_blas.h: + +../gsl/gsl_blas_types.h: + +../gsl/gsl_cblas.h: + +../gsl/gsl_multilarge.h: + +../gsl/gsl_multifit.h: diff --git a/gsl-2.5/multilarge/.libs/libgslmultilarge.la b/gsl-2.5/multilarge/.libs/libgslmultilarge.la new file mode 120000 index 00000000..12f89060 --- /dev/null +++ b/gsl-2.5/multilarge/.libs/libgslmultilarge.la @@ -0,0 +1 @@ +../libgslmultilarge.la \ No newline at end of file diff --git a/gsl-2.5/multilarge/.libs/lt-test b/gsl-2.5/multilarge/.libs/lt-test new file mode 100755 index 00000000..3e869dda Binary files /dev/null and b/gsl-2.5/multilarge/.libs/lt-test differ diff --git a/gsl-2.5/multilarge/.libs/test b/gsl-2.5/multilarge/.libs/test new file mode 100755 index 00000000..7efd0d4b Binary files /dev/null and b/gsl-2.5/multilarge/.libs/test differ diff --git a/gsl-2.5/multilarge/Makefile b/gsl-2.5/multilarge/Makefile new file mode 100644 index 00000000..33900285 --- /dev/null +++ b/gsl-2.5/multilarge/Makefile @@ -0,0 +1,1032 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# multilarge/Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + + + + +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/gsl +pkgincludedir = $(includedir)/gsl +pkglibdir = $(libdir)/gsl +pkglibexecdir = $(libexecdir)/gsl +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = x86_64-unknown-linux-gnu +host_triplet = x86_64-unknown-linux-gnu +check_PROGRAMS = test$(EXEEXT) +subdir = multilarge +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp \ + $(pkginclude_HEADERS) $(top_srcdir)/test-driver +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +libgslmultilarge_la_LIBADD = +am_libgslmultilarge_la_OBJECTS = multilarge.lo normal.lo tsqr.lo +libgslmultilarge_la_OBJECTS = $(am_libgslmultilarge_la_OBJECTS) +AM_V_lt = $(am__v_lt_$(V)) +am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) +am__v_lt_0 = --silent +am__v_lt_1 = +am_test_OBJECTS = test.$(OBJEXT) +test_OBJECTS = $(am_test_OBJECTS) +test_DEPENDENCIES = libgslmultilarge.la ../test/libgsltest.la \ + ../multifit/libgslmultifit.la ../eigen/libgsleigen.la \ + ../linalg/libgsllinalg.la ../blas/libgslblas.la \ + ../cblas/libgslcblas.la ../permutation/libgslpermutation.la \ + ../matrix/libgslmatrix.la ../vector/libgslvector.la \ + ../block/libgslblock.la ../sys/libgslsys.la \ + ../utils/libutils.la ../rng/libgslrng.la \ + ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la \ + ../complex/libgslcomplex.la ../min/libgslmin.la +AM_V_P = $(am__v_P_$(V)) +am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY)) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_$(V)) +am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_$(V)) +am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I. -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_$(V)) +am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_$(V)) +am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libgslmultilarge_la_SOURCES) $(test_SOURCES) +DIST_SOURCES = $(libgslmultilarge_la_SOURCES) $(test_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(pkgincludedir)" +HEADERS = $(pkginclude_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = .test +LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing aclocal-1.13 +AMTAR = $${TAR-tar} +AM_DEFAULT_VERBOSITY = 1 +AR = ar +AS = as +AUTOCONF = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing autoconf +AUTOHEADER = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing autoheader +AUTOMAKE = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing automake-1.13 +AWK = gawk +CC = gcc +CCDEPMODE = depmode=gcc3 +CFLAGS = -g -O2 +CPP = gcc -E +CPPFLAGS = +CYGPATH_W = echo +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +DLLTOOL = false +DSYMUTIL = +DUMPBIN = +ECHO_C = +ECHO_N = -n +ECHO_T = +EGREP = /usr/bin/grep -E +EXEEXT = +FGREP = /usr/bin/grep -F +GREP = /usr/bin/grep +GSLCBLAS_LDFLAGS = +GSL_CFLAGS = -I${prefix}/include +GSL_LDFLAGS = +GSL_LIBADD = +GSL_LIBM = -lm +GSL_LIBS = -L${exec_prefix}/lib -lgsl +GSL_LT_CBLAS_VERSION = 0:0:0 +GSL_LT_VERSION = 24:0:1 +GSL_MAJOR_VERSION = 2 +GSL_MINOR_VERSION = 5 +HAVE_AIX_IEEE_INTERFACE = +HAVE_DARWIN86_IEEE_INTERFACE = +HAVE_DARWIN_IEEE_INTERFACE = +HAVE_FREEBSD_IEEE_INTERFACE = +HAVE_GNUM68K_IEEE_INTERFACE = +HAVE_GNUPPC_IEEE_INTERFACE = +HAVE_GNUSPARC_IEEE_INTERFACE = +HAVE_GNUX86_IEEE_INTERFACE = +HAVE_HPUX11_IEEE_INTERFACE = +HAVE_HPUX_IEEE_INTERFACE = +HAVE_IRIX_IEEE_INTERFACE = +HAVE_NETBSD_IEEE_INTERFACE = +HAVE_OPENBSD_IEEE_INTERFACE = +HAVE_OS2EMX_IEEE_INTERFACE = +HAVE_SOLARIS_IEEE_INTERFACE = +HAVE_SUNOS4_IEEE_INTERFACE = +HAVE_TRU64_IEEE_INTERFACE = +INSTALL = /usr/bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = $(install_sh) -c -s +LD = /usr/bin/ld -m elf_x86_64 +LDFLAGS = +LIBM = -lm +LIBOBJS = +LIBS = -lm +LIBTOOL = $(SHELL) $(top_builddir)/libtool +LIPO = +LN_S = ln -s +LTLIBOBJS = +MAINT = # +MAKEINFO = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing makeinfo +MANIFEST_TOOL = : +MKDIR_P = /usr/bin/mkdir -p +NM = /usr/bin/nm -B +NMEDIT = +OBJDUMP = objdump +OBJEXT = o +OTOOL = +OTOOL64 = +PACKAGE = gsl +PACKAGE_BUGREPORT = +PACKAGE_NAME = gsl +PACKAGE_STRING = gsl 2.5 +PACKAGE_TARNAME = gsl +PACKAGE_URL = +PACKAGE_VERSION = 2.5 +PATH_SEPARATOR = : +RANLIB = ranlib +SED = /usr/bin/sed +SET_MAKE = +SHELL = /bin/sh +STRIP = strip +VERSION = 2.5 +abs_builddir = /home/groups/kipac/chto/package/gsl/gsl-2.5/multilarge +abs_srcdir = /home/groups/kipac/chto/package/gsl/gsl-2.5/multilarge +abs_top_builddir = /home/groups/kipac/chto/package/gsl/gsl-2.5 +abs_top_srcdir = /home/groups/kipac/chto/package/gsl/gsl-2.5 +ac_ct_AR = ar +ac_ct_CC = gcc +ac_ct_DUMPBIN = +am__include = include +am__leading_dot = . +am__quote = +am__tar = $${TAR-tar} chof - "$$tardir" +am__untar = $${TAR-tar} xf - +bindir = ${exec_prefix}/bin +build = x86_64-unknown-linux-gnu +build_alias = +build_cpu = x86_64 +build_os = linux-gnu +build_vendor = unknown +builddir = . +datadir = ${datarootdir} +datarootdir = ${prefix}/share +docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} +dvidir = ${docdir} +exec_prefix = ${prefix} +host = x86_64-unknown-linux-gnu +host_alias = +host_cpu = x86_64 +host_os = linux-gnu +host_vendor = unknown +htmldir = ${docdir} +includedir = ${prefix}/include +infodir = ${datarootdir}/info +install_sh = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/install-sh +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +localedir = ${datarootdir}/locale +localstatedir = ${prefix}/var +mandir = ${datarootdir}/man +mkdir_p = $(MKDIR_P) +oldincludedir = /usr/include +pdfdir = ${docdir} +prefix = /home/groups/kipac/chto/package/gsl/gsl_lib +program_transform_name = s,x,x, +psdir = ${docdir} +sbindir = ${exec_prefix}/sbin +sharedstatedir = ${prefix}/com +srcdir = . +sysconfdir = ${prefix}/etc +target_alias = +top_build_prefix = ../ +top_builddir = .. +top_srcdir = .. +noinst_LTLIBRARIES = libgslmultilarge.la +pkginclude_HEADERS = gsl_multilarge.h +libgslmultilarge_la_SOURCES = multilarge.c normal.c tsqr.c +AM_CPPFLAGS = -I$(top_srcdir) +TESTS = $(check_PROGRAMS) +test_SOURCES = test.c +test_LDADD = libgslmultilarge.la ../test/libgsltest.la ../multifit/libgslmultifit.la ../eigen/libgsleigen.la ../linalg/libgsllinalg.la ../blas/libgslblas.la ../cblas/libgslcblas.la ../permutation/libgslpermutation.la ../matrix/libgslmatrix.la ../vector/libgslvector.la ../block/libgslblock.la ../sys/libgslsys.la ../utils/libutils.la ../rng/libgslrng.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../complex/libgslcomplex.la ../min/libgslmin.la +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu multilarge/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu multilarge/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: # $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): # $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libgslmultilarge.la: $(libgslmultilarge_la_OBJECTS) $(libgslmultilarge_la_DEPENDENCIES) $(EXTRA_libgslmultilarge_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(libgslmultilarge_la_OBJECTS) $(libgslmultilarge_la_LIBADD) $(LIBS) + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) $(EXTRA_test_DEPENDENCIES) + @rm -f test$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_OBJECTS) $(test_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +include ./$(DEPDIR)/multilarge.Plo +include ./$(DEPDIR)/normal.Plo +include ./$(DEPDIR)/test.Po +include ./$(DEPDIR)/tsqr.Plo + +.c.o: + $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# $(AM_V_CC)source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(COMPILE) -c $< + +.c.obj: + $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# $(AM_V_CC)source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: + $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +# $(AM_V_CC)source='$<' object='$@' libtool=yes \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-pkgincludeHEADERS: $(pkginclude_HEADERS) + @$(NORMAL_INSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \ + done + +uninstall-pkgincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + else \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_PROGRAMS) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +test.log: test$(EXEEXT) + @p='test$(EXEEXT)'; \ + b='test'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +#.test$(EXEEXT).log: +# @p='$<'; \ +# $(am__set_b); \ +# $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +# --log-file $$b.log --trs-file $$b.trs \ +# $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +# "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-am +all-am: Makefile $(LTLIBRARIES) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(pkgincludedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-pkgincludeHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-pkgincludeHEADERS + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES cscopelist-am ctags ctags-am distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-pkgincludeHEADERS \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + recheck tags tags-am uninstall uninstall-am \ + uninstall-pkgincludeHEADERS + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gsl-2.5/multilarge/Makefile.am b/gsl-2.5/multilarge/Makefile.am new file mode 100644 index 00000000..40faa3b6 --- /dev/null +++ b/gsl-2.5/multilarge/Makefile.am @@ -0,0 +1,14 @@ +noinst_LTLIBRARIES = libgslmultilarge.la + +pkginclude_HEADERS = gsl_multilarge.h + +libgslmultilarge_la_SOURCES = multilarge.c normal.c tsqr.c + +AM_CPPFLAGS = -I$(top_srcdir) + +check_PROGRAMS = test + +TESTS = $(check_PROGRAMS) + +test_SOURCES = test.c +test_LDADD = libgslmultilarge.la ../test/libgsltest.la ../multifit/libgslmultifit.la ../eigen/libgsleigen.la ../linalg/libgsllinalg.la ../blas/libgslblas.la ../cblas/libgslcblas.la ../permutation/libgslpermutation.la ../matrix/libgslmatrix.la ../vector/libgslvector.la ../block/libgslblock.la ../sys/libgslsys.la ../utils/libutils.la ../rng/libgslrng.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../complex/libgslcomplex.la ../min/libgslmin.la diff --git a/gsl-2.5/multilarge/Makefile.in b/gsl-2.5/multilarge/Makefile.in new file mode 100644 index 00000000..405aebbc --- /dev/null +++ b/gsl-2.5/multilarge/Makefile.in @@ -0,0 +1,1032 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + + +VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +check_PROGRAMS = test$(EXEEXT) +subdir = multilarge +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp \ + $(pkginclude_HEADERS) $(top_srcdir)/test-driver +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +libgslmultilarge_la_LIBADD = +am_libgslmultilarge_la_OBJECTS = multilarge.lo normal.lo tsqr.lo +libgslmultilarge_la_OBJECTS = $(am_libgslmultilarge_la_OBJECTS) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +am_test_OBJECTS = test.$(OBJEXT) +test_OBJECTS = $(am_test_OBJECTS) +test_DEPENDENCIES = libgslmultilarge.la ../test/libgsltest.la \ + ../multifit/libgslmultifit.la ../eigen/libgsleigen.la \ + ../linalg/libgsllinalg.la ../blas/libgslblas.la \ + ../cblas/libgslcblas.la ../permutation/libgslpermutation.la \ + ../matrix/libgslmatrix.la ../vector/libgslvector.la \ + ../block/libgslblock.la ../sys/libgslsys.la \ + ../utils/libutils.la ../rng/libgslrng.la \ + ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la \ + ../complex/libgslcomplex.la ../min/libgslmin.la +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libgslmultilarge_la_SOURCES) $(test_SOURCES) +DIST_SOURCES = $(libgslmultilarge_la_SOURCES) $(test_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(pkgincludedir)" +HEADERS = $(pkginclude_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = @EXEEXT@ .test +LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +GSLCBLAS_LDFLAGS = @GSLCBLAS_LDFLAGS@ +GSL_CFLAGS = @GSL_CFLAGS@ +GSL_LDFLAGS = @GSL_LDFLAGS@ +GSL_LIBADD = @GSL_LIBADD@ +GSL_LIBM = @GSL_LIBM@ +GSL_LIBS = @GSL_LIBS@ +GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ +GSL_LT_VERSION = @GSL_LT_VERSION@ +GSL_MAJOR_VERSION = @GSL_MAJOR_VERSION@ +GSL_MINOR_VERSION = @GSL_MINOR_VERSION@ +HAVE_AIX_IEEE_INTERFACE = @HAVE_AIX_IEEE_INTERFACE@ +HAVE_DARWIN86_IEEE_INTERFACE = @HAVE_DARWIN86_IEEE_INTERFACE@ +HAVE_DARWIN_IEEE_INTERFACE = @HAVE_DARWIN_IEEE_INTERFACE@ +HAVE_FREEBSD_IEEE_INTERFACE = @HAVE_FREEBSD_IEEE_INTERFACE@ +HAVE_GNUM68K_IEEE_INTERFACE = @HAVE_GNUM68K_IEEE_INTERFACE@ +HAVE_GNUPPC_IEEE_INTERFACE = @HAVE_GNUPPC_IEEE_INTERFACE@ +HAVE_GNUSPARC_IEEE_INTERFACE = @HAVE_GNUSPARC_IEEE_INTERFACE@ +HAVE_GNUX86_IEEE_INTERFACE = @HAVE_GNUX86_IEEE_INTERFACE@ +HAVE_HPUX11_IEEE_INTERFACE = @HAVE_HPUX11_IEEE_INTERFACE@ +HAVE_HPUX_IEEE_INTERFACE = @HAVE_HPUX_IEEE_INTERFACE@ +HAVE_IRIX_IEEE_INTERFACE = @HAVE_IRIX_IEEE_INTERFACE@ +HAVE_NETBSD_IEEE_INTERFACE = @HAVE_NETBSD_IEEE_INTERFACE@ +HAVE_OPENBSD_IEEE_INTERFACE = @HAVE_OPENBSD_IEEE_INTERFACE@ +HAVE_OS2EMX_IEEE_INTERFACE = @HAVE_OS2EMX_IEEE_INTERFACE@ +HAVE_SOLARIS_IEEE_INTERFACE = @HAVE_SOLARIS_IEEE_INTERFACE@ +HAVE_SUNOS4_IEEE_INTERFACE = @HAVE_SUNOS4_IEEE_INTERFACE@ +HAVE_TRU64_IEEE_INTERFACE = @HAVE_TRU64_IEEE_INTERFACE@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBM = @LIBM@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +noinst_LTLIBRARIES = libgslmultilarge.la +pkginclude_HEADERS = gsl_multilarge.h +libgslmultilarge_la_SOURCES = multilarge.c normal.c tsqr.c +AM_CPPFLAGS = -I$(top_srcdir) +TESTS = $(check_PROGRAMS) +test_SOURCES = test.c +test_LDADD = libgslmultilarge.la ../test/libgsltest.la ../multifit/libgslmultifit.la ../eigen/libgsleigen.la ../linalg/libgsllinalg.la ../blas/libgslblas.la ../cblas/libgslcblas.la ../permutation/libgslpermutation.la ../matrix/libgslmatrix.la ../vector/libgslvector.la ../block/libgslblock.la ../sys/libgslsys.la ../utils/libutils.la ../rng/libgslrng.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../complex/libgslcomplex.la ../min/libgslmin.la +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu multilarge/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu multilarge/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libgslmultilarge.la: $(libgslmultilarge_la_OBJECTS) $(libgslmultilarge_la_DEPENDENCIES) $(EXTRA_libgslmultilarge_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(libgslmultilarge_la_OBJECTS) $(libgslmultilarge_la_LIBADD) $(LIBS) + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) $(EXTRA_test_DEPENDENCIES) + @rm -f test$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_OBJECTS) $(test_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/multilarge.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/normal.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tsqr.Plo@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-pkgincludeHEADERS: $(pkginclude_HEADERS) + @$(NORMAL_INSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \ + done + +uninstall-pkgincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + else \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_PROGRAMS) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +test.log: test$(EXEEXT) + @p='test$(EXEEXT)'; \ + b='test'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +@am__EXEEXT_TRUE@.test$(EXEEXT).log: +@am__EXEEXT_TRUE@ @p='$<'; \ +@am__EXEEXT_TRUE@ $(am__set_b); \ +@am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +@am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ +@am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +@am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-am +all-am: Makefile $(LTLIBRARIES) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(pkgincludedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-pkgincludeHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-pkgincludeHEADERS + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES cscopelist-am ctags ctags-am distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-pkgincludeHEADERS \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + recheck tags tags-am uninstall uninstall-am \ + uninstall-pkgincludeHEADERS + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gsl-2.5/multilarge/gsl_multilarge.h b/gsl-2.5/multilarge/gsl_multilarge.h new file mode 100644 index 00000000..e99c1e1c --- /dev/null +++ b/gsl-2.5/multilarge/gsl_multilarge.h @@ -0,0 +1,141 @@ +/* gsl_multilarge.h + * + * Copyright (C) 2015 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_MULTILARGE_H__ +#define __GSL_MULTILARGE_H__ + +#include +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +/* iteration solver type */ +typedef struct +{ + const char *name; + void * (*alloc) (const size_t p); + int (*reset) (void *); + int (*accumulate) (gsl_matrix * X, gsl_vector * y, + void *); + int (*solve) (const double lambda, gsl_vector * c, + double * rnorm, double * snorm, void *); + int (*rcond) (double * rcond, void *); + int (*lcurve) (gsl_vector * reg_param, gsl_vector * rho, + gsl_vector * eta, void *); + void (*free) (void *); +} gsl_multilarge_linear_type; + +typedef struct +{ + const gsl_multilarge_linear_type * type; + void * state; + size_t p; +} gsl_multilarge_linear_workspace; + +/* available types */ +GSL_VAR const gsl_multilarge_linear_type * gsl_multilarge_linear_normal; +GSL_VAR const gsl_multilarge_linear_type * gsl_multilarge_linear_tsqr; + +/* + * Prototypes + */ +gsl_multilarge_linear_workspace * +gsl_multilarge_linear_alloc(const gsl_multilarge_linear_type * T, + const size_t p); + +void gsl_multilarge_linear_free(gsl_multilarge_linear_workspace * w); + +const char *gsl_multilarge_linear_name(const gsl_multilarge_linear_workspace * w); + +int gsl_multilarge_linear_reset(gsl_multilarge_linear_workspace * w); + +int gsl_multilarge_linear_accumulate(gsl_matrix * X, + gsl_vector * y, + gsl_multilarge_linear_workspace * w); + +int gsl_multilarge_linear_solve(const double lambda, gsl_vector * c, + double * rnorm, double * snorm, + gsl_multilarge_linear_workspace * w); + +int gsl_multilarge_linear_rcond(double *rcond, gsl_multilarge_linear_workspace * w); + +int gsl_multilarge_linear_lcurve(gsl_vector * reg_param, gsl_vector * rho, + gsl_vector * eta, + gsl_multilarge_linear_workspace * w); + +int gsl_multilarge_linear_wstdform1 (const gsl_vector * L, + const gsl_matrix * X, + const gsl_vector * w, + const gsl_vector * y, + gsl_matrix * Xs, + gsl_vector * ys, + gsl_multilarge_linear_workspace * work); + +int gsl_multilarge_linear_stdform1 (const gsl_vector * L, + const gsl_matrix * X, + const gsl_vector * y, + gsl_matrix * Xs, + gsl_vector * ys, + gsl_multilarge_linear_workspace * work); + +int gsl_multilarge_linear_L_decomp (gsl_matrix * L, gsl_vector * tau); + +int gsl_multilarge_linear_wstdform2 (const gsl_matrix * LQR, + const gsl_vector * Ltau, + const gsl_matrix * X, + const gsl_vector * w, + const gsl_vector * y, + gsl_matrix * Xs, + gsl_vector * ys, + gsl_multilarge_linear_workspace * work); + +int gsl_multilarge_linear_stdform2 (const gsl_matrix * LQR, + const gsl_vector * Ltau, + const gsl_matrix * X, + const gsl_vector * y, + gsl_matrix * Xs, + gsl_vector * ys, + gsl_multilarge_linear_workspace * work); + +int gsl_multilarge_linear_genform1 (const gsl_vector * L, + const gsl_vector * cs, + gsl_vector * c, + gsl_multilarge_linear_workspace * work); + +int gsl_multilarge_linear_genform2 (const gsl_matrix * LQR, + const gsl_vector * Ltau, + const gsl_vector * cs, + gsl_vector * c, + gsl_multilarge_linear_workspace * work); + +__END_DECLS + +#endif /* __GSL_MULTILARGE_H__ */ diff --git a/gsl-2.5/multilarge/libgslmultilarge.la b/gsl-2.5/multilarge/libgslmultilarge.la new file mode 100644 index 00000000..fedf7242 --- /dev/null +++ b/gsl-2.5/multilarge/libgslmultilarge.la @@ -0,0 +1,41 @@ +# libgslmultilarge.la - a libtool library file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='' + +# Names of this library. +library_names='' + +# The name of the static archive. +old_library='libgslmultilarge.a' + +# Linker flags that can not go in dependency_libs. +inherited_linker_flags='' + +# Libraries that this one depends upon. +dependency_libs=' -lm' + +# Names of additional weak libraries provided by this library +weak_library_names='' + +# Version information for libgslmultilarge. +current= +age= +revision= + +# Is this an already installed library? +installed=no + +# Should we warn about portability when linking against -modules? +shouldnotlink=no + +# Files to dlopen/dlpreopen +dlopen='' +dlpreopen='' + +# Directory that this library needs to be installed in: +libdir='' diff --git a/gsl-2.5/multilarge/multilarge.c b/gsl-2.5/multilarge/multilarge.c new file mode 100644 index 00000000..98a2b065 --- /dev/null +++ b/gsl-2.5/multilarge/multilarge.c @@ -0,0 +1,402 @@ +/* multilarge.c + * + * Copyright (C) 2015 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include +#include +#include + +gsl_multilarge_linear_workspace * +gsl_multilarge_linear_alloc(const gsl_multilarge_linear_type *T, + const size_t p) +{ + gsl_multilarge_linear_workspace *w; + + w = calloc(1, sizeof(gsl_multilarge_linear_workspace)); + if (w == NULL) + { + GSL_ERROR_NULL("failed to allocate space for workspace", + GSL_ENOMEM); + } + + w->type = T; + + w->state = w->type->alloc(p); + if (w->state == NULL) + { + gsl_multilarge_linear_free(w); + GSL_ERROR_NULL("failed to allocate space for multilarge state", + GSL_ENOMEM); + } + + w->p = p; + + /* initialize newly allocated state */ + gsl_multilarge_linear_reset(w); + + return w; +} + +void +gsl_multilarge_linear_free(gsl_multilarge_linear_workspace *w) +{ + RETURN_IF_NULL(w); + + if (w->state) + w->type->free(w->state); + + free(w); +} + +const char * +gsl_multilarge_linear_name(const gsl_multilarge_linear_workspace *w) +{ + return w->type->name; +} + +int +gsl_multilarge_linear_reset(gsl_multilarge_linear_workspace *w) +{ + int status = w->type->reset(w->state); + return status; +} + +int +gsl_multilarge_linear_accumulate(gsl_matrix * X, gsl_vector * y, + gsl_multilarge_linear_workspace * w) +{ + int status = w->type->accumulate(X, y, w->state); + return status; +} + +int +gsl_multilarge_linear_solve(const double lambda, gsl_vector * c, + double * rnorm, double * snorm, + gsl_multilarge_linear_workspace * w) +{ + int status = w->type->solve(lambda, c, rnorm, snorm, w->state); + return status; +} + +int +gsl_multilarge_linear_rcond(double *rcond, gsl_multilarge_linear_workspace * w) +{ + int status = w->type->rcond(rcond, w->state); + return status; +} + +int +gsl_multilarge_linear_lcurve(gsl_vector * reg_param, gsl_vector * rho, + gsl_vector * eta, + gsl_multilarge_linear_workspace * w) +{ + const size_t len = reg_param->size; + + if (len != rho->size) + { + GSL_ERROR ("reg_param and rho have different sizes", GSL_EBADLEN); + } + else if (len != eta->size) + { + GSL_ERROR ("reg_param and eta have different sizes", GSL_EBADLEN); + } + else + { + int status = w->type->lcurve(reg_param, rho, eta, w->state); + return status; + } +} + +/* +gsl_multilarge_linear_wstdform1() + Using regularization matrix +L = diag(l_1,l_2,...,l_p), transform to Tikhonov standard form: + +X~ = sqrt(W) X L^{-1} +y~ = sqrt(W) y +c~ = L c + +Inputs: L - Tikhonov matrix as a vector of diagonal elements p-by-1; + or NULL for L = I + X - least squares matrix n-by-p + y - right hand side vector n-by-1 + w - weight vector n-by-1; or NULL for W = I + Xs - least squares matrix in standard form X~ n-by-p + ys - right hand side vector in standard form y~ n-by-1 + work - workspace + +Return: success/error + +Notes: +1) It is allowed for X = Xs and y = ys +*/ + +int +gsl_multilarge_linear_wstdform1 (const gsl_vector * L, + const gsl_matrix * X, + const gsl_vector * w, + const gsl_vector * y, + gsl_matrix * Xs, + gsl_vector * ys, + gsl_multilarge_linear_workspace * work) +{ + const size_t n = X->size1; + const size_t p = X->size2; + + if (L != NULL && p != L->size) + { + GSL_ERROR("L vector does not match X", GSL_EBADLEN); + } + else if (n != y->size) + { + GSL_ERROR("y vector does not match X", GSL_EBADLEN); + } + else if (w != NULL && n != w->size) + { + GSL_ERROR("weight vector does not match X", GSL_EBADLEN); + } + else if (n != Xs->size1 || p != Xs->size2) + { + GSL_ERROR("Xs matrix dimensions do not match X", GSL_EBADLEN); + } + else if (n != ys->size) + { + GSL_ERROR("ys vector must be length n", GSL_EBADLEN); + } + else + { + int status = GSL_SUCCESS; + + /* compute Xs = sqrt(W) X and ys = sqrt(W) y */ + status = gsl_multifit_linear_applyW(X, w, y, Xs, ys); + if (status) + return status; + + if (L != NULL) + { + size_t j; + + /* construct X~ = sqrt(W) X * L^{-1} matrix */ + for (j = 0; j < p; ++j) + { + gsl_vector_view Xj = gsl_matrix_column(Xs, j); + double lj = gsl_vector_get(L, j); + + if (lj == 0.0) + { + GSL_ERROR("L matrix is singular", GSL_EDOM); + } + + gsl_vector_scale(&Xj.vector, 1.0 / lj); + } + } + + return status; + } +} + +int +gsl_multilarge_linear_stdform1 (const gsl_vector * L, + const gsl_matrix * X, + const gsl_vector * y, + gsl_matrix * Xs, + gsl_vector * ys, + gsl_multilarge_linear_workspace * work) +{ + int status; + + status = gsl_multilarge_linear_wstdform1(L, X, NULL, y, Xs, ys, work); + + return status; +} + +int +gsl_multilarge_linear_L_decomp (gsl_matrix * L, gsl_vector * tau) +{ + const size_t m = L->size1; + const size_t p = L->size2; + + if (m < p) + { + GSL_ERROR("m < p not yet supported", GSL_EBADLEN); + } + else + { + int status; + + status = gsl_multifit_linear_L_decomp(L, tau); + + return status; + } +} + +int +gsl_multilarge_linear_wstdform2 (const gsl_matrix * LQR, + const gsl_vector * Ltau, + const gsl_matrix * X, + const gsl_vector * w, + const gsl_vector * y, + gsl_matrix * Xs, + gsl_vector * ys, + gsl_multilarge_linear_workspace * work) +{ + const size_t m = LQR->size1; + const size_t n = X->size1; + const size_t p = X->size2; + + if (p != work->p) + { + GSL_ERROR("X has wrong number of columns", GSL_EBADLEN); + } + else if (p != LQR->size2) + { + GSL_ERROR("LQR and X matrices have different numbers of columns", GSL_EBADLEN); + } + else if (n != y->size) + { + GSL_ERROR("y vector does not match X", GSL_EBADLEN); + } + else if (w != NULL && n != w->size) + { + GSL_ERROR("weights vector must be length n", GSL_EBADLEN); + } + else if (m < p) + { + GSL_ERROR("m < p not yet supported", GSL_EBADLEN); + } + else if (n != Xs->size1 || p != Xs->size2) + { + GSL_ERROR("Xs matrix must be n-by-p", GSL_EBADLEN); + } + else if (n != ys->size) + { + GSL_ERROR("ys vector must have length n", GSL_EBADLEN); + } + else + { + int status; + size_t i; + gsl_matrix_const_view R = gsl_matrix_const_submatrix(LQR, 0, 0, p, p); + + /* compute Xs = sqrt(W) X and ys = sqrt(W) y */ + status = gsl_multifit_linear_applyW(X, w, y, Xs, ys); + if (status) + return status; + + /* compute X~ = X R^{-1} using QR decomposition of L */ + for (i = 0; i < n; ++i) + { + gsl_vector_view v = gsl_matrix_row(Xs, i); + + /* solve: R^T y = X_i */ + gsl_blas_dtrsv(CblasUpper, CblasTrans, CblasNonUnit, &R.matrix, &v.vector); + } + + return GSL_SUCCESS; + } +} + +int +gsl_multilarge_linear_stdform2 (const gsl_matrix * LQR, + const gsl_vector * Ltau, + const gsl_matrix * X, + const gsl_vector * y, + gsl_matrix * Xs, + gsl_vector * ys, + gsl_multilarge_linear_workspace * work) +{ + int status; + + status = gsl_multilarge_linear_wstdform2(LQR, Ltau, X, NULL, y, Xs, ys, work); + + return status; +} + +/* +gsl_multilarge_linear_genform1() + Backtransform regularized solution vector using matrix +L = diag(L) +*/ + +int +gsl_multilarge_linear_genform1 (const gsl_vector * L, + const gsl_vector * cs, + gsl_vector * c, + gsl_multilarge_linear_workspace * work) +{ + if (L->size != work->p) + { + GSL_ERROR("L vector does not match workspace", GSL_EBADLEN); + } + else if (L->size != cs->size) + { + GSL_ERROR("cs vector does not match L", GSL_EBADLEN); + } + else if (L->size != c->size) + { + GSL_ERROR("c vector does not match L", GSL_EBADLEN); + } + else + { + /* compute true solution vector c = L^{-1} c~ */ + gsl_vector_memcpy(c, cs); + gsl_vector_div(c, L); + + return GSL_SUCCESS; + } +} + +int +gsl_multilarge_linear_genform2 (const gsl_matrix * LQR, + const gsl_vector * Ltau, + const gsl_vector * cs, + gsl_vector * c, + gsl_multilarge_linear_workspace * work) +{ + const size_t m = LQR->size1; + const size_t p = LQR->size2; + + if (p != c->size) + { + GSL_ERROR("c vector does not match LQR", GSL_EBADLEN); + } + else if (m < p) + { + GSL_ERROR("m < p not yet supported", GSL_EBADLEN); + } + else if (p != cs->size) + { + GSL_ERROR("cs vector size does not match c", GSL_EBADLEN); + } + else + { + int s; + gsl_matrix_const_view R = gsl_matrix_const_submatrix(LQR, 0, 0, p, p); /* R factor of L */ + + /* solve R c = cs for true solution c, using QR decomposition of L */ + gsl_vector_memcpy(c, cs); + s = gsl_blas_dtrsv(CblasUpper, CblasNoTrans, CblasNonUnit, &R.matrix, c); + + return s; + } +} diff --git a/gsl-2.5/multilarge/multilarge.lo b/gsl-2.5/multilarge/multilarge.lo new file mode 100644 index 00000000..0cdf8f7e --- /dev/null +++ b/gsl-2.5/multilarge/multilarge.lo @@ -0,0 +1,12 @@ +# multilarge.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/multilarge.o' + +# Name of the non-PIC object +non_pic_object='multilarge.o' + diff --git a/gsl-2.5/multilarge/normal.c b/gsl-2.5/multilarge/normal.c new file mode 100644 index 00000000..60823b5c --- /dev/null +++ b/gsl-2.5/multilarge/normal.c @@ -0,0 +1,513 @@ +/* normal.c + * + * Copyright (C) 2015, 2016 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +typedef struct +{ + size_t p; /* number of columns of LS matrix */ + gsl_matrix *ATA; /* A^T A, p-by-p */ + gsl_vector *ATb; /* A^T b, p-by-1 */ + double normb; /* || b || */ + gsl_matrix *work_ATA; /* workspace for chol(ATA), p-by-p */ + gsl_permutation *perm; /* permutation vector */ + gsl_vector *workp; /* workspace size p */ + gsl_vector *work3p; /* workspace size 3*p */ + gsl_vector *D; /* scale factors for ATA, size p */ + gsl_vector *c; /* solution vector for L-curve */ + int eigen; /* 1 if eigenvalues computed */ + double eval_min; /* minimum eigenvalue */ + double eval_max; /* maximum eigenvalue */ + gsl_eigen_symm_workspace *eigen_p; +} normal_state_t; + +static void *normal_alloc(const size_t p); +static void normal_free(void *vstate); +static int normal_reset(void *vstate); +static int normal_accumulate(gsl_matrix * A, gsl_vector * b, + void * vstate); +static int normal_solve(const double lambda, gsl_vector * x, + double * rnorm, double * snorm, + void * vstate); +static int normal_rcond(double * rcond, void * vstate); +static int normal_lcurve(gsl_vector * reg_param, gsl_vector * rho, + gsl_vector * eta, void * vstate); +static int normal_solve_system(const double lambda, gsl_vector * x, + normal_state_t *state); +static int normal_solve_cholesky(gsl_matrix * ATA, const gsl_vector * ATb, + gsl_vector * x, normal_state_t *state); +static int normal_calc_norms(const gsl_vector *x, double *rnorm, + double *snorm, normal_state_t *state); +static int normal_eigen(normal_state_t *state); + +/* +normal_alloc() + Allocate workspace for solving large linear least squares +problems using the normal equations approach + +Inputs: p - number of columns of LS matrix + +Return: pointer to workspace +*/ + +static void * +normal_alloc(const size_t p) +{ + normal_state_t *state; + + if (p == 0) + { + GSL_ERROR_NULL("p must be a positive integer", + GSL_EINVAL); + } + + state = calloc(1, sizeof(normal_state_t)); + if (!state) + { + GSL_ERROR_NULL("failed to allocate normal state", GSL_ENOMEM); + } + + state->p = p; + + state->ATA = gsl_matrix_alloc(p, p); + if (state->ATA == NULL) + { + normal_free(state); + GSL_ERROR_NULL("failed to allocate ATA matrix", GSL_ENOMEM); + } + + state->work_ATA = gsl_matrix_alloc(p, p); + if (state->work_ATA == NULL) + { + normal_free(state); + GSL_ERROR_NULL("failed to allocate temporary ATA matrix", GSL_ENOMEM); + } + + state->ATb = gsl_vector_alloc(p); + if (state->ATb == NULL) + { + normal_free(state); + GSL_ERROR_NULL("failed to allocate ATb vector", GSL_ENOMEM); + } + + state->perm = gsl_permutation_alloc(p); + if (state->perm == NULL) + { + normal_free(state); + GSL_ERROR_NULL("failed to allocate perm", GSL_ENOMEM); + } + + state->D = gsl_vector_alloc(p); + if (state->D == NULL) + { + normal_free(state); + GSL_ERROR_NULL("failed to allocate D vector", GSL_ENOMEM); + } + + state->workp = gsl_vector_alloc(p); + if (state->workp == NULL) + { + normal_free(state); + GSL_ERROR_NULL("failed to allocate temporary ATb vector", GSL_ENOMEM); + } + + state->work3p = gsl_vector_alloc(3 * p); + if (state->work3p == NULL) + { + normal_free(state); + GSL_ERROR_NULL("failed to allocate work3p", GSL_ENOMEM); + } + + state->c = gsl_vector_alloc(p); + if (state->c == NULL) + { + normal_free(state); + GSL_ERROR_NULL("failed to allocate c vector", GSL_ENOMEM); + } + + state->eigen_p = gsl_eigen_symm_alloc(p); + if (state->eigen_p == NULL) + { + normal_free(state); + GSL_ERROR_NULL("failed to allocate eigen workspace", GSL_ENOMEM); + } + + normal_reset(state); + + return state; +} + +static void +normal_free(void *vstate) +{ + normal_state_t *state = (normal_state_t *) vstate; + + if (state->ATA) + gsl_matrix_free(state->ATA); + + if (state->work_ATA) + gsl_matrix_free(state->work_ATA); + + if (state->ATb) + gsl_vector_free(state->ATb); + + if (state->perm) + gsl_permutation_free(state->perm); + + if (state->D) + gsl_vector_free(state->D); + + if (state->workp) + gsl_vector_free(state->workp); + + if (state->work3p) + gsl_vector_free(state->work3p); + + if (state->c) + gsl_vector_free(state->c); + + if (state->eigen_p) + gsl_eigen_symm_free(state->eigen_p); + + free(state); +} + +static int +normal_reset(void *vstate) +{ + normal_state_t *state = (normal_state_t *) vstate; + + gsl_matrix_set_zero(state->ATA); + gsl_vector_set_zero(state->ATb); + state->normb = 0.0; + state->eigen = 0; + state->eval_min = 0.0; + state->eval_max = 0.0; + + return GSL_SUCCESS; +} + +/* +normal_accumulate() + Add a new block of rows to the normal equations system + +Inputs: A - new block of rows, n-by-p + b - new rhs vector n-by-1 + vstate - workspace + +Return: success/error +*/ + +static int +normal_accumulate(gsl_matrix * A, gsl_vector * b, void * vstate) +{ + normal_state_t *state = (normal_state_t *) vstate; + const size_t n = A->size1; + + if (A->size2 != state->p) + { + GSL_ERROR("columns of A do not match workspace", GSL_EBADLEN); + } + else if (n != b->size) + { + GSL_ERROR("A and b have different numbers of rows", GSL_EBADLEN); + } + else + { + int s; + + /* ATA += A^T A, using only the lower half of the matrix */ + s = gsl_blas_dsyrk(CblasLower, CblasTrans, 1.0, A, 1.0, state->ATA); + if (s) + return s; + + /* ATb += A^T b */ + s = gsl_blas_dgemv(CblasTrans, 1.0, A, b, 1.0, state->ATb); + if (s) + return s; + + /* update || b || */ + state->normb = gsl_hypot(state->normb, gsl_blas_dnrm2(b)); + + return GSL_SUCCESS; + } +} + +/* +normal_solve() + Solve normal equations system: + +(A^T A + \lambda^2 I) x = A^T b + +using Cholesky decomposition + +Inputs: lambda - regularization parameter + x - (output) solution vector p-by-1 + rnorm - (output) residual norm ||b - A x|| + snorm - (output) solution norm ||x|| + vstate - workspace + +Return: success/error +*/ + +static int +normal_solve(const double lambda, gsl_vector * x, + double * rnorm, double * snorm, + void * vstate) +{ + normal_state_t *state = (normal_state_t *) vstate; + + if (x->size != state->p) + { + GSL_ERROR("solution vector does not match workspace", GSL_EBADLEN); + } + else + { + int status; + + /* solve system (A^T A) x = A^T b */ + status = normal_solve_system(lambda, x, state); + if (status) + { + GSL_ERROR("failed to solve normal equations", status); + } + + /* compute residual norm ||y - X c|| and solution norm ||x|| */ + normal_calc_norms(x, rnorm, snorm, state); + + return GSL_SUCCESS; + } +} + +static int +normal_rcond(double * rcond, void * vstate) +{ + normal_state_t *state = (normal_state_t *) vstate; + int status = GSL_SUCCESS; + double rcond_ATA; + + status = gsl_linalg_pcholesky_rcond(state->work_ATA, state->perm, &rcond_ATA, state->work3p); + if (status == GSL_SUCCESS) + *rcond = sqrt(rcond_ATA); + + return status; +} + +/* +normal_lcurve() + Compute L-curve of least squares system + +Inputs: reg_param - (output) vector of regularization parameters + rho - (output) vector of residual norms + eta - (output) vector of solution norms + vstate - workspace + +Return: success/error +*/ + +static int +normal_lcurve(gsl_vector * reg_param, gsl_vector * rho, + gsl_vector * eta, void * vstate) +{ + normal_state_t *state = (normal_state_t *) vstate; + int status; + double smin, smax; /* minimum/maximum singular values */ + size_t i; + + if (state->eigen == 0) + { + status = normal_eigen(state); + if (status) + return status; + } + + if (state->eval_max < 0.0) + { + GSL_ERROR("matrix is not positive definite", GSL_EDOM); + } + + /* compute singular values which are sqrts of eigenvalues */ + smax = sqrt(state->eval_max); + if (state->eval_min > 0.0) + smin = sqrt(state->eval_min); + else + smin = 0.0; + + /* compute vector of regularization parameters */ + gsl_multifit_linear_lreg(smin, smax, reg_param); + + /* solve normal equations for each regularization parameter */ + for (i = 0; i < reg_param->size; ++i) + { + double lambda = gsl_vector_get(reg_param, i); + double rnorm, snorm; + + status = normal_solve_system(lambda, state->c, state); + if (status) + return status; + + /* compute ||y - X c|| and ||c|| */ + normal_calc_norms(state->c, &rnorm, &snorm, state); + + gsl_vector_set(rho, i, rnorm); + gsl_vector_set(eta, i, snorm); + } + + return GSL_SUCCESS; +} + +/* +normal_solve_system() + Compute solution to normal equations: + +(A^T A + lambda^2*I) x = A^T b + +using LDL decomposition. + +Inputs: x - (output) solution vector + state - workspace + +Return: success/error +*/ + +static int +normal_solve_system(const double lambda, gsl_vector * x, normal_state_t *state) +{ + int status; + const double lambda_sq = lambda * lambda; + gsl_vector_view d = gsl_matrix_diagonal(state->work_ATA); + + /* copy ATA matrix to temporary workspace and regularize */ + gsl_matrix_tricpy('L', 1, state->work_ATA, state->ATA); + gsl_vector_add_constant(&d.vector, lambda_sq); + + /* solve with LDL decomposition */ + status = normal_solve_cholesky(state->work_ATA, state->ATb, x, state); + if (status) + return status; + + return status; +} + +static int +normal_solve_cholesky(gsl_matrix * ATA, const gsl_vector * ATb, + gsl_vector * x, normal_state_t *state) +{ + int status; + + status = gsl_linalg_pcholesky_decomp2(ATA, state->perm, state->D); + if (status) + return status; + + status = gsl_linalg_pcholesky_solve2(ATA, state->perm, state->D, ATb, x); + if (status) + return status; + + return GSL_SUCCESS; +} + +/* +normal_calc_norms() + Compute residual norm ||y - X c|| and solution +norm ||c|| + +Inputs: x - solution vector + rnorm - (output) residual norm ||y - X c|| + snorm - (output) solution norm ||c|| + state - workspace +*/ + +static int +normal_calc_norms(const gsl_vector *x, double *rnorm, + double *snorm, normal_state_t *state) +{ + double r2; + + /* compute solution norm ||x|| */ + *snorm = gsl_blas_dnrm2(x); + + /* compute residual norm ||b - Ax|| */ + + /* compute: A^T A x - 2 A^T b */ + gsl_vector_memcpy(state->workp, state->ATb); + gsl_blas_dsymv(CblasLower, 1.0, state->ATA, x, -2.0, state->workp); + + /* compute: x^T A^T A x - 2 x^T A^T b */ + gsl_blas_ddot(x, state->workp, &r2); + + /* add b^T b */ + r2 += state->normb * state->normb; + + *rnorm = sqrt(r2); + + return GSL_SUCCESS; +} + +/* +normal_eigen() + Compute eigenvalues of A^T A matrix, which +are stored in state->workp on output. Also, +state->eval_min and state->eval_max are set +to the minimum/maximum eigenvalues +*/ + +static int +normal_eigen(normal_state_t *state) +{ + int status; + + /* copy lower triangle of ATA to temporary workspace */ + gsl_matrix_tricpy('L', 1, state->work_ATA, state->ATA); + + /* compute eigenvalues of ATA */ + status = gsl_eigen_symm(state->work_ATA, state->workp, state->eigen_p); + if (status) + return status; + + gsl_vector_minmax(state->workp, &state->eval_min, &state->eval_max); + + state->eigen = 1; + + return GSL_SUCCESS; +} + +static const gsl_multilarge_linear_type normal_type = +{ + "normal", + normal_alloc, + normal_reset, + normal_accumulate, + normal_solve, + normal_rcond, + normal_lcurve, + normal_free +}; + +const gsl_multilarge_linear_type * gsl_multilarge_linear_normal = + &normal_type; diff --git a/gsl-2.5/multilarge/normal.lo b/gsl-2.5/multilarge/normal.lo new file mode 100644 index 00000000..98d9c058 --- /dev/null +++ b/gsl-2.5/multilarge/normal.lo @@ -0,0 +1,12 @@ +# normal.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/normal.o' + +# Name of the non-PIC object +non_pic_object='normal.o' + diff --git a/gsl-2.5/multilarge/test b/gsl-2.5/multilarge/test new file mode 100755 index 00000000..60049af2 --- /dev/null +++ b/gsl-2.5/multilarge/test @@ -0,0 +1,228 @@ +#! /bin/sh + +# test - temporary wrapper script for .libs/test +# Generated by libtool (GNU libtool) 2.4.2 +# +# The test program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s/\([`"$\\]\)/\\\1/g' + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command="(cd /home/groups/kipac/chto/package/gsl/gsl-2.5/multilarge; LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LIBRARY_PATH; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; LD_LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/fftw/include:/home/users/chto/lib/fftw/lib:/home/users/chto/lib/healpix/lib:/home/users/chto/lib/namaster/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/include:/home/users/chto/cpp/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LD_LIBRARY_PATH; PATH=/share/software/user/open/curl/7.54.0/bin:/share/software/user/open/libressl/2.5.3/bin:/home/users/chto/lib/cfitsio:/home/users/chto/lib/cfitsio/include:/home/users/chto/lib:/home/users/chto/bin/bin:/home/users/chto/bin:/home/users/chto/.texlive/bin/x86_64-linux:/home/groups/kipac/chto/anaconda2/envs/newenv3/bin:/home/users/chto/.local/bin/include:/home/users/chto/.local/bin/lib:/home/users/chto/.local/bin:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/bin64:/share/software/user/open/fftw/3.3.6/bin:/home/groups/kipac/chto/anaconda2/condabin:/share/software/user/restricted/ifort/2019/bin:/share/software/user/open/gsl/2.3/bin:/share/software/user/srcc/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/dell/srvadmin/bin:/opt/dell/srvadmin/iSM/bin:/home/users/chto/bin; export PATH; gcc -g -O2 -o \$progdir/\$file test.o ./.libs/libgslmultilarge.a ../test/.libs/libgsltest.a ../multifit/.libs/libgslmultifit.a ../eigen/.libs/libgsleigen.a ../linalg/.libs/libgsllinalg.a ../blas/.libs/libgslblas.a ../cblas/.libs/libgslcblas.so ../permutation/.libs/libgslpermutation.a ../matrix/.libs/libgslmatrix.a ../vector/.libs/libgslvector.a ../block/.libs/libgslblock.a ../sys/.libs/libgslsys.a ../utils/.libs/libutils.a ../rng/.libs/libgslrng.a ../ieee-utils/.libs/libgslieeeutils.a ../err/.libs/libgslerr.a ../complex/.libs/libgslcomplex.a ../min/.libs/libgslmin.a -lm -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/cblas/.libs -Wl,-rpath -Wl,/usr/local/lib)" + +# This environment variable determines our operation mode. +if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then + # install mode needs the following variables: + generated_by_libtool_version='2.4.2' + notinst_deplibs=' ../cblas/libgslcblas.la' +else + # When we are sourced in execute mode, $file and $ECHO are already set. + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + file="$0" + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + ECHO="printf %s\\n" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ which is used only on +# windows platforms, and (c) all begin with the string --lt- +# (application programs are unlikely to have options which match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's ../libtool value, followed by no. +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=$0 + shift + for lt_opt + do + case "$lt_opt" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%/[^/]*$%%'` + test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=. + lt_dump_F=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%^.*/%%'` + cat "$lt_dump_D/$lt_dump_F" + exit 0 + ;; + --lt-*) + $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n "$lt_option_debug"; then + echo "test:test:${LINENO}: libtool wrapper (GNU libtool) 2.4.2" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + $ECHO "test:test:${LINENO}: newargv[$lt_dump_args_N]: $lt_arg" + lt_dump_args_N=`expr $lt_dump_args_N + 1` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ + + if test -n "$lt_option_debug"; then + $ECHO "test:test:${LINENO}: newargv[0]: $progdir/$program" 1>&2 + func_lt_dump_args ${1+"$@"} 1>&2 + fi + exec "$progdir/$program" ${1+"$@"} + + $ECHO "$0: cannot exec $program $*" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from $@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case " $* " in + *\ --lt-*) + for lt_wr_arg + do + case $lt_wr_arg in + --lt-*) ;; + *) set x "$@" "$lt_wr_arg"; shift;; + esac + shift + done ;; + esac + func_exec_program_core ${1+"$@"} +} + + # Parse options + func_parse_lt_options "$0" ${1+"$@"} + + # Find the directory that this script lives in. + thisdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + test "x$thisdir" = "x$file" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=`ls -ld "$file" | /usr/bin/sed -n 's/.*-> //p'` + while test -n "$file"; do + destdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + + # If there was a directory component, then change thisdir. + if test "x$destdir" != "x$file"; then + case "$destdir" in + [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;; + *) thisdir="$thisdir/$destdir" ;; + esac + fi + + file=`$ECHO "$file" | /usr/bin/sed 's%^.*/%%'` + file=`ls -ld "$thisdir/$file" | /usr/bin/sed -n 's/.*-> //p'` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no + if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then + # special case for '.' + if test "$thisdir" = "."; then + thisdir=`pwd` + fi + # remove .libs from thisdir + case "$thisdir" in + *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /usr/bin/sed 's%[\\/][^\\/]*$%%'` ;; + .libs ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=`cd "$thisdir" && pwd` + test -n "$absdir" && thisdir="$absdir" + + program=lt-'test' + progdir="$thisdir/.libs" + + if test ! -f "$progdir/$program" || + { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /usr/bin/sed 1q`; \ + test "X$file" != "X$progdir/$program"; }; then + + file="$$-$program" + + if test ! -d "$progdir"; then + mkdir "$progdir" + else + rm -f "$progdir/$file" + fi + + # relink executable if necessary + if test -n "$relink_command"; then + if relink_command_output=`eval $relink_command 2>&1`; then : + else + printf %s\n "$relink_command_output" >&2 + rm -f "$progdir/$file" + exit 1 + fi + fi + + mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null || + { rm -f "$progdir/$program"; + mv -f "$progdir/$file" "$progdir/$program"; } + rm -f "$progdir/$file" + fi + + if test -f "$progdir/$program"; then + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + # Run the actual program with our arguments. + func_exec_program ${1+"$@"} + fi + else + # The program doesn't exist. + $ECHO "$0: error: \`$progdir/$program' does not exist" 1>&2 + $ECHO "This script is just a wrapper for $program." 1>&2 + $ECHO "See the libtool documentation for more information." 1>&2 + exit 1 + fi +fi diff --git a/gsl-2.5/multilarge/test-suite.log b/gsl-2.5/multilarge/test-suite.log new file mode 100644 index 00000000..5ff7aab2 --- /dev/null +++ b/gsl-2.5/multilarge/test-suite.log @@ -0,0 +1,14 @@ +======================================== + gsl 2.5: multilarge/test-suite.log +======================================== + +# TOTAL: 1 +# PASS: 1 +# SKIP: 0 +# XFAIL: 0 +# FAIL: 0 +# XPASS: 0 +# ERROR: 0 + +.. contents:: :depth: 2 + diff --git a/gsl-2.5/multilarge/test.c b/gsl-2.5/multilarge/test.c new file mode 100644 index 00000000..02651e57 --- /dev/null +++ b/gsl-2.5/multilarge/test.c @@ -0,0 +1,515 @@ +/* multilarge/test.c + * + * Copyright (C) 2015 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +static void test_random_matrix_orth(gsl_matrix *m, const gsl_rng *r); +static void test_random_matrix_ill(gsl_matrix *m, const gsl_rng *r); +static void test_random_vector(gsl_vector *v, const gsl_rng *r, + const double lower, const double upper); +static void test_random_matrix(gsl_matrix *m, const gsl_rng *r, + const double lower, const double upper); +static void test_random_vector_noise(const gsl_rng *r, gsl_vector *y); +static void test_compare_vectors(const double tol, const gsl_vector * a, + const gsl_vector * b, const char * desc); +static void test_multifit_solve(const double lambda, const gsl_matrix * X, + const gsl_vector * y, const gsl_vector * wts, + const gsl_vector * diagL, const gsl_matrix * L, + double *rnorm, double *snorm, gsl_vector * c); +static void test_multilarge_solve(const gsl_multilarge_linear_type * T, const double lambda, + const gsl_matrix * X, const gsl_vector * y, gsl_vector * wts, + const gsl_vector * diagL, const gsl_matrix * L, + double *rnorm, double *snorm, gsl_vector * c); + +/* generate random square orthogonal matrix via QR decomposition */ +static void +test_random_matrix_orth(gsl_matrix *m, const gsl_rng *r) +{ + const size_t M = m->size1; + gsl_matrix *A = gsl_matrix_alloc(M, M); + gsl_vector *tau = gsl_vector_alloc(M); + gsl_matrix *R = gsl_matrix_alloc(M, M); + + test_random_matrix(A, r, -1.0, 1.0); + gsl_linalg_QR_decomp(A, tau); + gsl_linalg_QR_unpack(A, tau, m, R); + + gsl_matrix_free(A); + gsl_matrix_free(R); + gsl_vector_free(tau); +} + +/* construct ill-conditioned matrix via SVD */ +static void +test_random_matrix_ill(gsl_matrix *m, const gsl_rng *r) +{ + const size_t M = m->size1; + const size_t N = m->size2; + gsl_matrix *U = gsl_matrix_alloc(M, M); + gsl_matrix *V = gsl_matrix_alloc(N, N); + gsl_vector *S = gsl_vector_alloc(N); + gsl_matrix_view Uv = gsl_matrix_submatrix(U, 0, 0, M, N); + const double smin = 16.0 * GSL_DBL_EPSILON; + const double smax = 10.0; + const double ratio = pow(smin / smax, 1.0 / (N - 1.0)); + double s; + size_t j; + + test_random_matrix_orth(U, r); + test_random_matrix_orth(V, r); + + /* compute U * S */ + + s = smax; + for (j = 0; j < N; ++j) + { + gsl_vector_view uj = gsl_matrix_column(U, j); + + gsl_vector_scale(&uj.vector, s); + s *= ratio; + } + + /* compute m = (U * S) * V' */ + gsl_blas_dgemm(CblasNoTrans, CblasTrans, 1.0, &Uv.matrix, V, 0.0, m); + + gsl_matrix_free(U); + gsl_matrix_free(V); + gsl_vector_free(S); +} + +static void +test_random_vector(gsl_vector *v, const gsl_rng *r, + const double lower, const double upper) +{ + size_t i; + size_t N = v->size; + + for (i = 0; i < N; ++i) + { + gsl_vector_set(v, i, + gsl_rng_uniform(r) * (upper - lower) + lower); + } +} + +static void +test_random_matrix(gsl_matrix *m, const gsl_rng *r, + const double lower, const double upper) +{ + size_t i, j; + size_t M = m->size1; + size_t N = m->size2; + + for (i = 0; i < M; ++i) + { + for (j = 0; j < N; ++j) + { + gsl_matrix_set(m, i, j, + gsl_rng_uniform(r) * (upper - lower) + lower); + } + } +} + +/* generate Vandermonde matrix using equally spaced input points + * on [0,1] */ +static void +test_vander_matrix(gsl_matrix * m) +{ + const size_t M = m->size1; + const size_t N = m->size2; + const double dt = 1.0 / (M - 1.0); + size_t i, j; + + for (i = 0; i < M; ++i) + { + double ti = i * dt; + double mij = 1.0; + + for (j = 0; j < N; ++j) + { + gsl_matrix_set(m, i, j, mij); + mij *= ti; + } + } +} + +static void +test_random_vector_noise(const gsl_rng *r, gsl_vector *y) +{ + size_t i; + + for (i = 0; i < y->size; ++i) + { + double *ptr = gsl_vector_ptr(y, i); + *ptr += 1.0e-3 * gsl_rng_uniform(r); + } +} + +static void +test_compare_vectors(const double tol, const gsl_vector * a, + const gsl_vector * b, const char * desc) +{ + size_t i; + + for (i = 0; i < a->size; ++i) + { + double ai = gsl_vector_get(a, i); + double bi = gsl_vector_get(b, i); + + gsl_test_rel(bi, ai, tol, "%s i=%zu", desc, i); + } +} + +/* solve least squares system with multifit SVD */ +static void +test_multifit_solve(const double lambda, const gsl_matrix * X, + const gsl_vector * y, const gsl_vector * wts, + const gsl_vector * diagL, const gsl_matrix * L, + double *rnorm, double *snorm, gsl_vector * c) +{ + const size_t n = X->size1; + const size_t p = X->size2; + gsl_multifit_linear_workspace *w = + gsl_multifit_linear_alloc(n, p); + gsl_matrix *Xs = gsl_matrix_alloc(n, p); + gsl_vector *ys = gsl_vector_alloc(n); + gsl_vector *cs = gsl_vector_alloc(p); + gsl_matrix *LQR = NULL; + gsl_vector *Ltau = NULL; + gsl_matrix *M = NULL; + + /* convert to standard form */ + if (diagL) + { + gsl_multifit_linear_wstdform1(diagL, X, wts, y, Xs, ys, w); + } + else if (L) + { + const size_t m = L->size1; + + LQR = gsl_matrix_alloc(m, p); + Ltau = gsl_vector_alloc(GSL_MIN(m, p)); + M = (m >= p) ? gsl_matrix_alloc(m, p) : gsl_matrix_alloc(n, p); + + gsl_matrix_memcpy(LQR, L); + gsl_multifit_linear_L_decomp(LQR, Ltau); + gsl_multifit_linear_wstdform2(LQR, Ltau, X, wts, y, Xs, ys, M, w); + } + else + { + gsl_matrix_memcpy(Xs, X); + gsl_vector_memcpy(ys, y); + } + + gsl_multifit_linear_svd(Xs, w); + gsl_multifit_linear_solve(lambda, Xs, ys, cs, rnorm, snorm, w); + + /* convert to general form */ + if (diagL) + gsl_multifit_linear_genform1(diagL, cs, c, w); + else if (L) + gsl_multifit_linear_wgenform2(LQR, Ltau, X, wts, y, cs, M, c, w); + else + gsl_vector_memcpy(c, cs); + + gsl_multifit_linear_free(w); + gsl_matrix_free(Xs); + gsl_vector_free(ys); + gsl_vector_free(cs); + + if (LQR) + gsl_matrix_free(LQR); + if (Ltau) + gsl_vector_free(Ltau); + if (M) + gsl_matrix_free(M); +} + +/* solve least squares system with multilarge */ +static void +test_multilarge_solve(const gsl_multilarge_linear_type * T, const double lambda, + const gsl_matrix * X, const gsl_vector * y, gsl_vector * wts, + const gsl_vector * diagL, const gsl_matrix * L, + double *rnorm, double *snorm, gsl_vector * c) +{ + const size_t n = X->size1; + const size_t p = X->size2; + const size_t nblock = 5; + const size_t nrows = n / nblock; /* number of rows per block */ + gsl_multilarge_linear_workspace *w = + gsl_multilarge_linear_alloc(T, p); + gsl_matrix *Xs = gsl_matrix_alloc(nrows, p); + gsl_vector *ys = gsl_vector_alloc(nrows); + gsl_vector *cs = gsl_vector_alloc(p); + gsl_matrix *LQR = NULL; + gsl_vector *Ltau = NULL; + size_t rowidx = 0; + + if (L) + { + const size_t m = L->size1; + + LQR = gsl_matrix_alloc(m, p); + Ltau = gsl_vector_alloc(p); + + gsl_matrix_memcpy(LQR, L); + gsl_multilarge_linear_L_decomp(LQR, Ltau); + } + + while (rowidx < n) + { + size_t nleft = n - rowidx; + size_t nr = GSL_MIN(nrows, nleft); + gsl_matrix_const_view Xv = gsl_matrix_const_submatrix(X, rowidx, 0, nr, p); + gsl_vector_const_view yv = gsl_vector_const_subvector(y, rowidx, nr); + gsl_vector_view wv; + gsl_matrix_view Xsv = gsl_matrix_submatrix(Xs, 0, 0, nr, p); + gsl_vector_view ysv = gsl_vector_subvector(ys, 0, nr); + + if (wts) + wv = gsl_vector_subvector(wts, rowidx, nr); + + /* convert to standard form */ + if (diagL) + { + gsl_multilarge_linear_wstdform1(diagL, &Xv.matrix, wts ? &wv.vector : NULL, + &yv.vector, &Xsv.matrix, &ysv.vector, w); + } + else if (L) + { + gsl_multilarge_linear_wstdform2(LQR, Ltau, &Xv.matrix, wts ? &wv.vector : NULL, + &yv.vector, &Xsv.matrix, &ysv.vector, w); + } + else + { + gsl_matrix_memcpy(&Xsv.matrix, &Xv.matrix); + gsl_vector_memcpy(&ysv.vector, &yv.vector); + } + + gsl_multilarge_linear_accumulate(&Xsv.matrix, &ysv.vector, w); + + rowidx += nr; + } + + gsl_multilarge_linear_solve(lambda, cs, rnorm, snorm, w); + + if (diagL) + gsl_multilarge_linear_genform1(diagL, cs, c, w); + else if (L) + gsl_multilarge_linear_genform2(LQR, Ltau, cs, c, w); + else + gsl_vector_memcpy(c, cs); + + gsl_multilarge_linear_free(w); + gsl_matrix_free(Xs); + gsl_vector_free(ys); + gsl_vector_free(cs); + + if (LQR) + gsl_matrix_free(LQR); + if (Ltau) + gsl_vector_free(Ltau); +} + +static void +test_random(const gsl_multilarge_linear_type * T, + const size_t n, const size_t p, + const double tol, + const gsl_rng * r) +{ + const double tol1 = 1.0e3 * tol; + gsl_matrix *X = gsl_matrix_alloc(n, p); + gsl_vector *y = gsl_vector_alloc(n); + gsl_vector *c = gsl_vector_alloc(p); + gsl_vector *w = gsl_vector_alloc(n); + gsl_vector *diagL = gsl_vector_alloc(p); + gsl_matrix *Lsqr = gsl_matrix_alloc(p, p); + gsl_matrix *Ltall = gsl_matrix_alloc(5*p, p); + gsl_vector *c0 = gsl_vector_alloc(p); + gsl_vector *c1 = gsl_vector_alloc(p); + double rnorm0, snorm0; + double rnorm1, snorm1; + char str[2048]; + size_t i; + + /* generate LS system */ + test_random_matrix_ill(X, r); + /*test_random_matrix(X, r, -1.0, 1.0);*/ + test_random_vector(c, r, -1.0, 1.0); + + /* compute y = X c + noise */ + gsl_blas_dgemv(CblasNoTrans, 1.0, X, c, 0.0, y); + test_random_vector_noise(r, y); + + /* random weights */ + test_random_vector(w, r, 0.0, 1.0); + + /* random diag(L) */ + test_random_vector(diagL, r, 1.0, 5.0); + + /* random square L */ + test_random_matrix(Lsqr, r, -5.0, 5.0); + + /* random tall L */ + test_random_matrix(Ltall, r, -10.0, 10.0); + + for (i = 0; i < 2; ++i) + { + double lambda = pow(10.0, -(double) i); + + /* unweighted with L = I */ + { + test_multifit_solve(lambda, X, y, NULL, NULL, NULL, &rnorm0, &snorm0, c0); + test_multilarge_solve(T, lambda, X, y, NULL, NULL, NULL, &rnorm1, &snorm1, c1); + + sprintf(str, "random %s unweighted stdform n=%zu p=%zu lambda=%g", + T->name, n, p, lambda); + test_compare_vectors(tol, c0, c1, str); + + gsl_test_rel(rnorm1, rnorm0, tol1, "rnorm %s", str); + gsl_test_rel(snorm1, snorm0, tol, "snorm %s", str); + } + + /* weighted, L = diag(L) */ + { + test_multifit_solve(lambda, X, y, w, diagL, NULL, &rnorm0, &snorm0, c0); + test_multilarge_solve(T, lambda, X, y, w, diagL, NULL, &rnorm1, &snorm1, c1); + + sprintf(str, "random %s weighted diag(L) n=%zu p=%zu lambda=%g", + T->name, n, p, lambda); + test_compare_vectors(tol, c0, c1, str); + + gsl_test_rel(rnorm1, rnorm0, tol1, "rnorm %s", str); + gsl_test_rel(snorm1, snorm0, tol, "snorm %s", str); + } + + /* unweighted, L = diag(L) */ + { + test_multifit_solve(lambda, X, y, NULL, diagL, NULL, &rnorm0, &snorm0, c0); + test_multilarge_solve(T, lambda, X, y, NULL, diagL, NULL, &rnorm1, &snorm1, c1); + + sprintf(str, "random %s unweighted diag(L) n=%zu p=%zu lambda=%g", + T->name, n, p, lambda); + test_compare_vectors(tol, c0, c1, str); + + gsl_test_rel(rnorm1, rnorm0, tol1, "rnorm %s", str); + gsl_test_rel(snorm1, snorm0, tol, "snorm %s", str); + } + + /* weighted, L = square */ + { + test_multifit_solve(lambda, X, y, w, NULL, Lsqr, &rnorm0, &snorm0, c0); + test_multilarge_solve(T, lambda, X, y, w, NULL, Lsqr, &rnorm1, &snorm1, c1); + + sprintf(str, "random %s weighted Lsqr n=%zu p=%zu lambda=%g", + T->name, n, p, lambda); + test_compare_vectors(tol, c0, c1, str); + + gsl_test_rel(rnorm1, rnorm0, tol1, "rnorm %s", str); + gsl_test_rel(snorm1, snorm0, tol, "snorm %s", str); + } + + /* unweighted, L = square */ + { + test_multifit_solve(lambda, X, y, NULL, NULL, Lsqr, &rnorm0, &snorm0, c0); + test_multilarge_solve(T, lambda, X, y, NULL, NULL, Lsqr, &rnorm1, &snorm1, c1); + + sprintf(str, "random %s unweighted Lsqr n=%zu p=%zu lambda=%g", + T->name, n, p, lambda); + test_compare_vectors(tol, c0, c1, str); + + gsl_test_rel(rnorm1, rnorm0, tol1, "rnorm %s", str); + gsl_test_rel(snorm1, snorm0, tol, "snorm %s", str); + } + + /* weighted, L = tall */ + { + test_multifit_solve(lambda, X, y, w, NULL, Ltall, &rnorm0, &snorm0, c0); + test_multilarge_solve(T, lambda, X, y, w, NULL, Ltall, &rnorm1, &snorm1, c1); + + sprintf(str, "random %s weighted Ltall n=%zu p=%zu lambda=%g", + T->name, n, p, lambda); + test_compare_vectors(tol, c0, c1, str); + + gsl_test_rel(rnorm1, rnorm0, tol1, "rnorm %s", str); + gsl_test_rel(snorm1, snorm0, tol, "snorm %s", str); + } + + /* unweighted, L = tall */ + { + test_multifit_solve(lambda, X, y, NULL, NULL, Ltall, &rnorm0, &snorm0, c0); + test_multilarge_solve(T, lambda, X, y, NULL, NULL, Ltall, &rnorm1, &snorm1, c1); + + sprintf(str, "random %s unweighted Ltall n=%zu p=%zu lambda=%g", + T->name, n, p, lambda); + test_compare_vectors(tol, c0, c1, str); + + gsl_test_rel(rnorm1, rnorm0, tol1, "rnorm %s", str); + gsl_test_rel(snorm1, snorm0, tol, "snorm %s", str); + } + } + + gsl_matrix_free(X); + gsl_vector_free(y); + gsl_vector_free(c); + gsl_vector_free(w); + gsl_vector_free(diagL); + gsl_matrix_free(Lsqr); + gsl_matrix_free(Ltall); + gsl_vector_free(c0); + gsl_vector_free(c1); +} + +int +main (void) +{ + gsl_rng *r = gsl_rng_alloc(gsl_rng_default); + + gsl_ieee_env_setup(); + + { + const double tol1 = 1.0e-8; + const double tol2 = 1.0e-11; + const size_t n_vals[] = { 40, 356, 501 }; + const size_t p_vals[] = { 40, 213, 345 }; + size_t i; + + for (i = 0; i < 2; ++i) + { + size_t n = n_vals[i]; + size_t p = p_vals[i]; + + /* generate random ill-conditioned LS system and test */ + test_random(gsl_multilarge_linear_normal, n, p, tol1, r); + test_random(gsl_multilarge_linear_tsqr, n, p, tol2, r); + } + } + + gsl_rng_free(r); + + exit (gsl_test_summary ()); +} diff --git a/gsl-2.5/multilarge/test.log b/gsl-2.5/multilarge/test.log new file mode 100644 index 00000000..7ea8e951 --- /dev/null +++ b/gsl-2.5/multilarge/test.log @@ -0,0 +1 @@ +Completed [7196/7196] diff --git a/gsl-2.5/multilarge/test.trs b/gsl-2.5/multilarge/test.trs new file mode 100644 index 00000000..3f0f396c --- /dev/null +++ b/gsl-2.5/multilarge/test.trs @@ -0,0 +1,4 @@ +:test-result: PASS +:global-test-result: PASS +:recheck: no +:copy-in-global-log: no diff --git a/gsl-2.5/multilarge/tsqr.c b/gsl-2.5/multilarge/tsqr.c new file mode 100644 index 00000000..68033ac5 --- /dev/null +++ b/gsl-2.5/multilarge/tsqr.c @@ -0,0 +1,705 @@ +/* tsqr.c + * + * Copyright (C) 2015 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* + * This module implements the sequential TSQR algorithm + * described in + * + * [1] Demmel, J., Grigori, L., Hoemmen, M. F., and Langou, J. + * "Communication-optimal parallel and sequential QR and LU factorizations", + * UCB Technical Report No. UCB/EECS-2008-89, 2008. + * + * The algorithm operates on a tall least squares system: + * + * [ A_1 ] x = [ b_1 ] + * [ A_2 ] [ b_2 ] + * [ ... ] [ ... ] + * [ A_k ] [ b_k ] + * + * as follows: + * + * 1. Initialize + * a. [Q_1,R_1] = qr(A_1) + * b. z_1 = Q_1^T b_1 + * 2. Loop i = 2:k + * a. [Q_i,R_i] = qr( [ R_{i-1} ; A_i ] ) + * b. z_i = Q_i^T [ z_{i-1} ; b_i ] + * 3. Output: + * a. R = R_k + * b. Q^T b = z_k + * + * Step 2(a) is optimized to take advantage + * of the sparse structure of the matrix + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +typedef struct +{ + size_t p; /* number of columns of LS matrix */ + int init; /* QR system has been initialized */ + int svd; /* SVD of R has been computed */ + double normb; /* || b || for computing residual norm */ + + gsl_vector *tau; /* Householder scalars, p-by-1 */ + gsl_matrix *R; /* [ R ; A_i ], size p-by-p */ + gsl_vector *QTb; /* [ Q^T b ; b_i ], size p-by-1 */ + + gsl_multifit_linear_workspace *multifit_workspace_p; +} tsqr_state_t; + +static void *tsqr_alloc(const size_t p); +static void tsqr_free(void *vstate); +static int tsqr_reset(void *vstate); +static int tsqr_accumulate(gsl_matrix * A, gsl_vector * b, + void * vstate); +static int tsqr_solve(const double lambda, gsl_vector * x, + double * rnorm, double * snorm, + void * vstate); +static int tsqr_rcond(double * rcond, void * vstate); +static int tsqr_lcurve(gsl_vector * reg_param, gsl_vector * rho, + gsl_vector * eta, void * vstate); +static int tsqr_svd(tsqr_state_t * state); +static double tsqr_householder_transform (double *v0, gsl_vector * v); +static int tsqr_householder_hv (const double tau, const gsl_vector * v, double *w0, + gsl_vector * w); +static int tsqr_householder_hm (const double tau, const gsl_vector * v, gsl_matrix * R, + gsl_matrix * A); +static int tsqr_QR_decomp (gsl_matrix * R, gsl_matrix * A, gsl_vector * tau); + +/* +tsqr_alloc() + Allocate workspace for solving large linear least squares +problems using the TSQR approach + +Inputs: p - number of columns of LS matrix + +Return: pointer to workspace +*/ + +static void * +tsqr_alloc(const size_t p) +{ + tsqr_state_t *state; + + if (p == 0) + { + GSL_ERROR_NULL("p must be a positive integer", + GSL_EINVAL); + } + + state = calloc(1, sizeof(tsqr_state_t)); + if (!state) + { + GSL_ERROR_NULL("failed to allocate tsqr state", GSL_ENOMEM); + } + + state->p = p; + state->init = 0; + state->svd = 0; + state->normb = 0.0; + + state->R = gsl_matrix_alloc(p, p); + if (state->R == NULL) + { + tsqr_free(state); + GSL_ERROR_NULL("failed to allocate R matrix", GSL_ENOMEM); + } + + state->QTb = gsl_vector_alloc(p); + if (state->QTb == NULL) + { + tsqr_free(state); + GSL_ERROR_NULL("failed to allocate QTb vector", GSL_ENOMEM); + } + + state->tau = gsl_vector_alloc(p); + if (state->tau == NULL) + { + tsqr_free(state); + GSL_ERROR_NULL("failed to allocate tau vector", GSL_ENOMEM); + } + + state->multifit_workspace_p = gsl_multifit_linear_alloc(p, p); + if (state->multifit_workspace_p == NULL) + { + tsqr_free(state); + GSL_ERROR_NULL("failed to allocate multifit workspace", GSL_ENOMEM); + } + + return state; +} + +static void +tsqr_free(void *vstate) +{ + tsqr_state_t *state = (tsqr_state_t *) vstate; + + if (state->R) + gsl_matrix_free(state->R); + + if (state->QTb) + gsl_vector_free(state->QTb); + + if (state->tau) + gsl_vector_free(state->tau); + + if (state->multifit_workspace_p) + gsl_multifit_linear_free(state->multifit_workspace_p); + + free(state); +} + +static int +tsqr_reset(void *vstate) +{ + tsqr_state_t *state = (tsqr_state_t *) vstate; + + gsl_matrix_set_zero(state->R); + gsl_vector_set_zero(state->QTb); + state->init = 0; + state->svd = 0; + state->normb = 0.0; + + return GSL_SUCCESS; +} + +/* +tsqr_accumulate() + Add a new block of rows to the QR system + +Inputs: A - new block of rows, n-by-p + b - new rhs vector n-by-1 + vstate - workspace + +Return: success/error + +Notes: +1) On output, the upper triangular portion of state->R(1:p,1:p) +contains current R matrix + +2) state->QTb(1:p) contains current Q^T b vector + +3) A and b are destroyed +*/ + +static int +tsqr_accumulate(gsl_matrix * A, gsl_vector * b, void * vstate) +{ + tsqr_state_t *state = (tsqr_state_t *) vstate; + const size_t n = A->size1; + const size_t p = A->size2; + + if (p != state->p) + { + GSL_ERROR("columns of A do not match workspace", GSL_EBADLEN); + } + else if (n != b->size) + { + GSL_ERROR("A and b have different numbers of rows", GSL_EBADLEN); + } + else if (state->init == 0) + { + int status; + const size_t npmin = GSL_MIN(n, p); + gsl_vector_view tau = gsl_vector_subvector(state->tau, 0, npmin); + gsl_matrix_view R = gsl_matrix_submatrix(state->R, 0, 0, npmin, p); + gsl_matrix_view Av = gsl_matrix_submatrix(A, 0, 0, npmin, p); + gsl_vector_view QTb = gsl_vector_subvector(state->QTb, 0, npmin); + gsl_vector_view bv = gsl_vector_subvector(b, 0, npmin); + + /* this is the first matrix block A_1, compute its (dense) QR decomposition */ + + /* compute QR decomposition of A */ + status = gsl_linalg_QR_decomp(A, &tau.vector); + if (status) + return status; + + /* store upper triangular R factor in state->R */ + gsl_matrix_tricpy('U', 1, &R.matrix, &Av.matrix); + + /* compute ||b|| */ + state->normb = gsl_blas_dnrm2(b); + + /* compute Q^T b and keep the first p elements */ + gsl_linalg_QR_QTvec(A, &tau.vector, b); + gsl_vector_memcpy(&QTb.vector, &bv.vector); + + state->init = 1; + + return GSL_SUCCESS; + } + else + { + int status; + + /* compute QR decomposition of [ R_{i-1} ; A_i ], accounting for + * sparse structure */ + status = tsqr_QR_decomp(state->R, A, state->tau); + if (status) + return status; + + /* update ||b|| */ + state->normb = gsl_hypot(state->normb, gsl_blas_dnrm2(b)); + + /* + * compute Q^T [ QTb_{i - 1}; b_i ], accounting for the sparse + * structure of the Householder reflectors + */ + { + size_t i; + + for (i = 0; i < p; i++) + { + const double ti = gsl_vector_get (state->tau, i); + gsl_vector_const_view h = gsl_matrix_const_column (A, i); + double *wi = gsl_vector_ptr(state->QTb, i); + tsqr_householder_hv (ti, &(h.vector), wi, b); + } + } + + return GSL_SUCCESS; + } +} + +/* +tsqr_solve() + Solve the least squares system: + +chi^2 = || QTb - R x ||^2 + lambda^2 || x ||^2 + +using the SVD of R + +Inputs: lambda - regularization parameter + x - (output) solution vector p-by-1 + rnorm - (output) residual norm ||b - A x|| + snorm - (output) solution norm ||x|| + vstate - workspace + +Return: success/error +*/ + +static int +tsqr_solve(const double lambda, gsl_vector * x, + double * rnorm, double * snorm, + void * vstate) +{ + tsqr_state_t *state = (tsqr_state_t *) vstate; + const size_t p = x->size; + + if (p != state->p) + { + GSL_ERROR("solution vector does not match workspace", GSL_EBADLEN); + } + else + { + int status; + + /* compute SVD of R if not already computed */ + if (state->svd == 0) + { + status = tsqr_svd(state); + if (status) + return status; + } + + status = gsl_multifit_linear_solve(lambda, state->R, state->QTb, x, rnorm, snorm, + state->multifit_workspace_p); + if (status) + return status; + + /* + * Since we're solving a reduced square system above, we need + * to account for the full residual vector: + * + * rnorm = || [ Q1^T b - R x ; Q2^T b ] || + * + * where Q1 is the thin Q factor of X, and Q2 + * are the remaining columns of Q. But: + * + * || Q2^T b ||^2 = ||b||^2 - ||Q1^T b||^2 + * + * so add this into the rnorm calculation + */ + { + double norm_Q1Tb = gsl_blas_dnrm2(state->QTb); + double ratio = norm_Q1Tb / state->normb; + double diff = 1.0 - ratio*ratio; + + if (diff > GSL_DBL_EPSILON) + { + double norm_Q2Tb = state->normb * sqrt(diff); + *rnorm = gsl_hypot(*rnorm, norm_Q2Tb); + } + } + + return GSL_SUCCESS; + } +} + +/* +tsqr_lcurve() + Compute L-curve of least squares system + +Inputs: reg_param - (output) vector of regularization parameters + rho - (output) vector of residual norms + eta - (output) vector of solution norms + vstate - workspace + +Return: success/error +*/ + +static int +tsqr_lcurve(gsl_vector * reg_param, gsl_vector * rho, + gsl_vector * eta, void * vstate) +{ + tsqr_state_t *state = (tsqr_state_t *) vstate; + int status; + + /* compute SVD of R if not already computed */ + if (state->svd == 0) + { + status = tsqr_svd(state); + if (status) + return status; + } + + status = gsl_multifit_linear_lcurve(state->QTb, reg_param, rho, eta, + state->multifit_workspace_p); + + /* now add contribution to rnorm from Q2 factor */ + { + double norm_Q1Tb = gsl_blas_dnrm2(state->QTb); + double ratio = norm_Q1Tb / state->normb; + double diff = 1.0 - ratio*ratio; + size_t i; + + if (diff > GSL_DBL_EPSILON) + { + double norm_Q2Tb = state->normb * sqrt(diff); + + for (i = 0; i < rho->size; ++i) + { + double *rhoi = gsl_vector_ptr(rho, i); + *rhoi = gsl_hypot(*rhoi, norm_Q2Tb); + } + } + } + + return status; +} + +static int +tsqr_rcond(double * rcond, void * vstate) +{ + tsqr_state_t *state = (tsqr_state_t *) vstate; + + /* compute SVD of R if not already computed */ + if (state->svd == 0) + { + int status = tsqr_svd(state); + if (status) + return status; + } + + *rcond = gsl_multifit_linear_rcond(state->multifit_workspace_p); + + return GSL_SUCCESS; +} + +/* +tsqr_svd() + Compute the SVD of the upper triangular +R factor. This allows us to compute the upper/lower +bounds on the regularization parameter and compute +the matrix reciprocal condition number. + +Inputs: state - workspace + +Return: success/error +*/ + +static int +tsqr_svd(tsqr_state_t * state) +{ + int status; + + status = gsl_multifit_linear_svd(state->R, state->multifit_workspace_p); + if (status) + { + GSL_ERROR("error computing SVD of R", status); + } + + state->svd = 1; + + return GSL_SUCCESS; +} + +/* +tsqr_householder_transform() + This routine is an optimized version of +gsl_linalg_householder_transform(), designed for the QR +decomposition of M-by-N matrices of the form: + +T = [ R ] + [ A ] + +where R is N-by-N upper triangular, and A is (M-N)-by-N dense. +This routine computes a householder transformation (tau,v) of a +x so that P x = [ I - tau*v*v' ] x annihilates x(1:n-1). x will +be a subcolumn of the matrix T, and so its structure will be: + +x = [ x0 ] <- 1 nonzero value for the diagonal element of R + [ 0 ] <- N - j - 1 zeros, where j is column of matrix in [0,N-1] + [ x ] <- M-N nonzero values for the dense part A + +Inputs: v0 - pointer to diagonal element of R + on input, v0 = x0; + v - on input, x vector + on output, householder vector v +*/ + +static double +tsqr_householder_transform (double *v0, gsl_vector * v) +{ + /* replace v[0:M-1] with a householder vector (v[0:M-1]) and + coefficient tau that annihilate v[1:M-1] */ + + double alpha, beta, tau ; + + /* compute xnorm = || [ 0 ; v ] ||, ignoring zero part of vector */ + double xnorm = gsl_blas_dnrm2(v); + + if (xnorm == 0) + { + return 0.0; /* tau = 0 */ + } + + alpha = *v0; + beta = - (alpha >= 0.0 ? +1.0 : -1.0) * hypot(alpha, xnorm) ; + tau = (beta - alpha) / beta ; + + { + double s = (alpha - beta); + + if (fabs(s) > GSL_DBL_MIN) + { + gsl_blas_dscal (1.0 / s, v); + *v0 = beta; + } + else + { + gsl_blas_dscal (GSL_DBL_EPSILON / s, v); + gsl_blas_dscal (1.0 / GSL_DBL_EPSILON, v); + *v0 = beta; + } + } + + return tau; +} + +/* +tsqr_householder_hv() + Apply Householder reflector to a vector. The Householder +reflectors are for the QR decomposition of the matrix + + [ R ] + [ A ] + +where R is p-by-p upper triangular and A is n-by-p dense. +Therefore all relevant components of the Householder +vector are stored in the columns of A, while the components +in R are 0, except for diag(R) which are 1. + +The vector w to be transformed is partitioned as + + [ w1 ] + [ w2 ] + +where w1 is p-by-1 and w2 is n-by-1. The w2 portion +of w is transformed by v, but most of w1 remains unchanged +except for the first element, w0 + +Inputs: tau - Householder scalar + v - Householder vector, n-by-1 + w0 - (input/output) + on input, w1(0); + on output, transformed w1(0) + w - (input/output) n-by-1 + on input, vector w2; + on output, P*w2 +*/ + +static int +tsqr_householder_hv (const double tau, const gsl_vector * v, double *w0, gsl_vector * w) +{ + /* applies a householder transformation v to vector w */ + + if (tau == 0) + return GSL_SUCCESS ; + + { + double d1, d; + + /* compute d1 = v(2:n)' w(2:n) */ + gsl_blas_ddot (v, w, &d1); + + /* compute d = v'w = w(1) + d1 since v(1) = 1 */ + d = *w0 + d1; + + /* compute w = w - tau (v) (v'w) */ + *w0 -= tau * d; + gsl_blas_daxpy (-tau * d, v, w); + } + + return GSL_SUCCESS; +} + +/* +tsqr_householder_hm() + Apply Householder reflector to a submatrix of + + [ R ] + [ A ] + +where R is p-by-p upper triangular and A is n-by-p dense. +The diagonal terms of R are already transformed by +tsqr_householder_transform(), so we just need to operate +on the submatrix A(:,i:p) as well as the superdiagonal +elements of R + +Inputs: tau - Householder scalar + v - Householder vector + R - upper triangular submatrix of R, (p-i)-by-(p-i-1) + A - dense submatrix of A, n-by-(p-i) +*/ + +static int +tsqr_householder_hm (const double tau, const gsl_vector * v, gsl_matrix * R, + gsl_matrix * A) +{ + /* applies a householder transformation v,tau to matrix [ R ; A ] */ + + if (tau == 0.0) + { + return GSL_SUCCESS; + } + else + { + size_t j; + + for (j = 0; j < A->size2; j++) + { + double R0j = gsl_matrix_get (R, 0, j); + double wj; + gsl_vector_view A1j = gsl_matrix_column(A, j); + + gsl_blas_ddot (&A1j.vector, v, &wj); + wj += R0j; + + gsl_matrix_set (R, 0, j, R0j - tau * wj); + + gsl_blas_daxpy (-tau * wj, v, &A1j.vector); + } + + return GSL_SUCCESS; + } +} + +/* +tsqr_QR_decomp() + Compute the QR decomposition of the matrix + + [ R ] + [ A ] + +where R is p-by-p upper triangular and A is n-by-p dense. + +Inputs: R - upper triangular p-by-p matrix + A - dense n-by-p matrix + tau - Householder scalars +*/ + +static int +tsqr_QR_decomp (gsl_matrix * R, gsl_matrix * A, gsl_vector * tau) +{ + const size_t n = A->size1; + const size_t p = R->size2; + + if (R->size2 != A->size2) + { + GSL_ERROR ("R and A have different number of columns", GSL_EBADLEN); + } + else if (tau->size != p) + { + GSL_ERROR ("size of tau must be p", GSL_EBADLEN); + } + else + { + size_t i; + + for (i = 0; i < p; i++) + { + /* Compute the Householder transformation to reduce the j-th + column of the matrix [ R ; A ] to a multiple of the j-th unit vector, + taking into account the sparse structure of R */ + + gsl_vector_view c = gsl_matrix_column(A, i); + double *Rii = gsl_matrix_ptr(R, i, i); + double tau_i = tsqr_householder_transform(Rii, &c.vector); + + gsl_vector_set (tau, i, tau_i); + + /* Apply the transformation to the remaining columns and + update the norms */ + + if (i + 1 < p) + { + gsl_matrix_view Rv = gsl_matrix_submatrix(R, i, i + 1, p - i, p - (i + 1)); + gsl_matrix_view Av = gsl_matrix_submatrix(A, 0, i + 1, n, p - (i + 1)); + tsqr_householder_hm (tau_i, &(c.vector), &(Rv.matrix), &(Av.matrix)); + } + } + + return GSL_SUCCESS; + } +} + +static const gsl_multilarge_linear_type tsqr_type = +{ + "tsqr", + tsqr_alloc, + tsqr_reset, + tsqr_accumulate, + tsqr_solve, + tsqr_rcond, + tsqr_lcurve, + tsqr_free +}; + +const gsl_multilarge_linear_type * gsl_multilarge_linear_tsqr = + &tsqr_type; diff --git a/gsl-2.5/multilarge/tsqr.lo b/gsl-2.5/multilarge/tsqr.lo new file mode 100644 index 00000000..cd8352f7 --- /dev/null +++ b/gsl-2.5/multilarge/tsqr.lo @@ -0,0 +1,12 @@ +# tsqr.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/tsqr.o' + +# Name of the non-PIC object +non_pic_object='tsqr.o' + diff --git a/gsl-2.5/multilarge_nlinear/.deps/cgst.Plo b/gsl-2.5/multilarge_nlinear/.deps/cgst.Plo new file mode 100644 index 00000000..11015b4e --- /dev/null +++ b/gsl-2.5/multilarge_nlinear/.deps/cgst.Plo @@ -0,0 +1,305 @@ +cgst.lo: cgst.c /usr/include/stdc-predef.h ../config.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h /usr/include/stdlib.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_errno.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_linalg.h ../gsl/gsl_mode.h \ + ../gsl/gsl_permutation.h ../gsl/gsl_blas.h ../gsl/gsl_blas_types.h \ + ../gsl/gsl_cblas.h ../gsl/gsl_multilarge_nlinear.h common.c + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +/usr/include/stdlib.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_linalg.h: + +../gsl/gsl_mode.h: + +../gsl/gsl_permutation.h: + +../gsl/gsl_blas.h: + +../gsl/gsl_blas_types.h: + +../gsl/gsl_cblas.h: + +../gsl/gsl_multilarge_nlinear.h: + +common.c: diff --git a/gsl-2.5/multilarge_nlinear/.deps/cholesky.Plo b/gsl-2.5/multilarge_nlinear/.deps/cholesky.Plo new file mode 100644 index 00000000..a777d210 --- /dev/null +++ b/gsl-2.5/multilarge_nlinear/.deps/cholesky.Plo @@ -0,0 +1,305 @@ +cholesky.lo: cholesky.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_math.h /usr/include/math.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h /usr/include/stdlib.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_errno.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_linalg.h ../gsl/gsl_mode.h \ + ../gsl/gsl_permutation.h ../gsl/gsl_blas.h ../gsl/gsl_blas_types.h \ + ../gsl/gsl_cblas.h ../gsl/gsl_multilarge_nlinear.h common.c + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +/usr/include/stdlib.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_linalg.h: + +../gsl/gsl_mode.h: + +../gsl/gsl_permutation.h: + +../gsl/gsl_blas.h: + +../gsl/gsl_blas_types.h: + +../gsl/gsl_cblas.h: + +../gsl/gsl_multilarge_nlinear.h: + +common.c: diff --git a/gsl-2.5/multilarge_nlinear/.deps/convergence.Plo b/gsl-2.5/multilarge_nlinear/.deps/convergence.Plo new file mode 100644 index 00000000..2b1c3dcd --- /dev/null +++ b/gsl-2.5/multilarge_nlinear/.deps/convergence.Plo @@ -0,0 +1,302 @@ +convergence.lo: convergence.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_math.h /usr/include/math.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_vector.h ../gsl/gsl_vector_complex_long_double.h \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/byteswap.h \ + /usr/include/bits/byteswap-16.h /usr/include/sys/types.h \ + /usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib-float.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_blas.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_blas_types.h ../gsl/gsl_cblas.h \ + ../gsl/gsl_multifit_nlin.h ../gsl/gsl_permutation.h \ + ../gsl/gsl_multilarge_nlinear.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_blas.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_blas_types.h: + +../gsl/gsl_cblas.h: + +../gsl/gsl_multifit_nlin.h: + +../gsl/gsl_permutation.h: + +../gsl/gsl_multilarge_nlinear.h: diff --git a/gsl-2.5/multilarge_nlinear/.deps/dogleg.Plo b/gsl-2.5/multilarge_nlinear/.deps/dogleg.Plo new file mode 100644 index 00000000..d964f66b --- /dev/null +++ b/gsl-2.5/multilarge_nlinear/.deps/dogleg.Plo @@ -0,0 +1,305 @@ +dogleg.lo: dogleg.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_math.h /usr/include/math.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h /usr/include/stdlib.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_errno.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_linalg.h ../gsl/gsl_mode.h \ + ../gsl/gsl_permutation.h ../gsl/gsl_blas.h ../gsl/gsl_blas_types.h \ + ../gsl/gsl_cblas.h ../gsl/gsl_multilarge_nlinear.h common.c + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +/usr/include/stdlib.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_linalg.h: + +../gsl/gsl_mode.h: + +../gsl/gsl_permutation.h: + +../gsl/gsl_blas.h: + +../gsl/gsl_blas_types.h: + +../gsl/gsl_cblas.h: + +../gsl/gsl_multilarge_nlinear.h: + +common.c: diff --git a/gsl-2.5/multilarge_nlinear/.deps/dummy.Plo b/gsl-2.5/multilarge_nlinear/.deps/dummy.Plo new file mode 100644 index 00000000..18936ae4 --- /dev/null +++ b/gsl-2.5/multilarge_nlinear/.deps/dummy.Plo @@ -0,0 +1,303 @@ +dummy.lo: dummy.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_math.h /usr/include/math.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h /usr/include/stdlib.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_errno.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_linalg.h ../gsl/gsl_mode.h \ + ../gsl/gsl_permutation.h ../gsl/gsl_blas.h ../gsl/gsl_blas_types.h \ + ../gsl/gsl_cblas.h ../gsl/gsl_multilarge_nlinear.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +/usr/include/stdlib.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_linalg.h: + +../gsl/gsl_mode.h: + +../gsl/gsl_permutation.h: + +../gsl/gsl_blas.h: + +../gsl/gsl_blas_types.h: + +../gsl/gsl_cblas.h: + +../gsl/gsl_multilarge_nlinear.h: diff --git a/gsl-2.5/multilarge_nlinear/.deps/fdf.Plo b/gsl-2.5/multilarge_nlinear/.deps/fdf.Plo new file mode 100644 index 00000000..210aaa08 --- /dev/null +++ b/gsl-2.5/multilarge_nlinear/.deps/fdf.Plo @@ -0,0 +1,310 @@ +fdf.lo: fdf.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/string.h \ + /usr/include/xlocale.h /usr/include/bits/string.h \ + /usr/include/bits/string2.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_blas.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_complex.h \ + ../gsl/gsl_check_range.h ../gsl/gsl_vector_long_double.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_vector_complex.h \ + ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_blas_types.h ../gsl/gsl_cblas.h \ + ../gsl/gsl_multilarge_nlinear.h ../gsl/gsl_permutation.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string.h: + +/usr/include/bits/string2.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_blas.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_blas_types.h: + +../gsl/gsl_cblas.h: + +../gsl/gsl_multilarge_nlinear.h: + +../gsl/gsl_permutation.h: diff --git a/gsl-2.5/multilarge_nlinear/.deps/lm.Plo b/gsl-2.5/multilarge_nlinear/.deps/lm.Plo new file mode 100644 index 00000000..433c26d8 --- /dev/null +++ b/gsl-2.5/multilarge_nlinear/.deps/lm.Plo @@ -0,0 +1,305 @@ +lm.lo: lm.c /usr/include/stdc-predef.h ../config.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h /usr/include/stdlib.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_errno.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_linalg.h ../gsl/gsl_mode.h \ + ../gsl/gsl_permutation.h ../gsl/gsl_blas.h ../gsl/gsl_blas_types.h \ + ../gsl/gsl_cblas.h ../gsl/gsl_multilarge_nlinear.h common.c + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +/usr/include/stdlib.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_linalg.h: + +../gsl/gsl_mode.h: + +../gsl/gsl_permutation.h: + +../gsl/gsl_blas.h: + +../gsl/gsl_blas_types.h: + +../gsl/gsl_cblas.h: + +../gsl/gsl_multilarge_nlinear.h: + +common.c: diff --git a/gsl-2.5/multilarge_nlinear/.deps/scaling.Plo b/gsl-2.5/multilarge_nlinear/.deps/scaling.Plo new file mode 100644 index 00000000..2e540267 --- /dev/null +++ b/gsl-2.5/multilarge_nlinear/.deps/scaling.Plo @@ -0,0 +1,303 @@ +scaling.lo: scaling.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_math.h /usr/include/math.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h /usr/include/stdlib.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_errno.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_linalg.h ../gsl/gsl_mode.h \ + ../gsl/gsl_permutation.h ../gsl/gsl_blas.h ../gsl/gsl_blas_types.h \ + ../gsl/gsl_cblas.h ../gsl/gsl_multilarge_nlinear.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +/usr/include/stdlib.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_linalg.h: + +../gsl/gsl_mode.h: + +../gsl/gsl_permutation.h: + +../gsl/gsl_blas.h: + +../gsl/gsl_blas_types.h: + +../gsl/gsl_cblas.h: + +../gsl/gsl_multilarge_nlinear.h: diff --git a/gsl-2.5/multilarge_nlinear/.deps/subspace2D.Plo b/gsl-2.5/multilarge_nlinear/.deps/subspace2D.Plo new file mode 100644 index 00000000..e4623522 --- /dev/null +++ b/gsl-2.5/multilarge_nlinear/.deps/subspace2D.Plo @@ -0,0 +1,308 @@ +subspace2D.lo: subspace2D.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_math.h /usr/include/math.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h /usr/include/stdlib.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_errno.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_linalg.h ../gsl/gsl_mode.h \ + ../gsl/gsl_permutation.h ../gsl/gsl_blas.h ../gsl/gsl_blas_types.h \ + ../gsl/gsl_cblas.h ../gsl/gsl_multilarge_nlinear.h ../gsl/gsl_poly.h \ + common.c + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +/usr/include/stdlib.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_linalg.h: + +../gsl/gsl_mode.h: + +../gsl/gsl_permutation.h: + +../gsl/gsl_blas.h: + +../gsl/gsl_blas_types.h: + +../gsl/gsl_cblas.h: + +../gsl/gsl_multilarge_nlinear.h: + +../gsl/gsl_poly.h: + +common.c: diff --git a/gsl-2.5/multilarge_nlinear/.deps/test.Po b/gsl-2.5/multilarge_nlinear/.deps/test.Po new file mode 100644 index 00000000..ce36e50a --- /dev/null +++ b/gsl-2.5/multilarge_nlinear/.deps/test.Po @@ -0,0 +1,401 @@ +test.o: test.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/string.h \ + /usr/include/xlocale.h /usr/include/bits/string.h \ + /usr/include/bits/string2.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_test.h \ + ../gsl/gsl_multilarge_nlinear.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_permutation.h ../gsl/gsl_blas.h \ + ../gsl/gsl_blas_types.h ../gsl/gsl_cblas.h ../gsl/gsl_ieee_utils.h \ + test_fdf.c test_bard.c test_beale.c test_biggs.c test_box.c \ + test_boxbod.c test_brown1.c test_brown2.c test_brown3.c test_eckerle.c \ + test_enso.c test_exp1.c test_gaussian.c test_hahn1.c test_helical.c \ + test_jennrich.c test_kirby2.c test_kowalik.c test_lin1.c test_lin2.c \ + test_lin3.c test_meyer.c test_meyerscal.c test_osborne.c test_penalty1.c \ + test_penalty2.c test_powell1.c test_powell2.c test_powell3.c \ + test_rat42.c test_rat43.c test_rosenbrock.c test_rosenbrocke.c \ + test_roth.c test_thurber.c test_vardim.c test_watson.c test_wood.c \ + test_wnlin.c + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string.h: + +/usr/include/bits/string2.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_test.h: + +../gsl/gsl_multilarge_nlinear.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_permutation.h: + +../gsl/gsl_blas.h: + +../gsl/gsl_blas_types.h: + +../gsl/gsl_cblas.h: + +../gsl/gsl_ieee_utils.h: + +test_fdf.c: + +test_bard.c: + +test_beale.c: + +test_biggs.c: + +test_box.c: + +test_boxbod.c: + +test_brown1.c: + +test_brown2.c: + +test_brown3.c: + +test_eckerle.c: + +test_enso.c: + +test_exp1.c: + +test_gaussian.c: + +test_hahn1.c: + +test_helical.c: + +test_jennrich.c: + +test_kirby2.c: + +test_kowalik.c: + +test_lin1.c: + +test_lin2.c: + +test_lin3.c: + +test_meyer.c: + +test_meyerscal.c: + +test_osborne.c: + +test_penalty1.c: + +test_penalty2.c: + +test_powell1.c: + +test_powell2.c: + +test_powell3.c: + +test_rat42.c: + +test_rat43.c: + +test_rosenbrock.c: + +test_rosenbrocke.c: + +test_roth.c: + +test_thurber.c: + +test_vardim.c: + +test_watson.c: + +test_wood.c: + +test_wnlin.c: diff --git a/gsl-2.5/multilarge_nlinear/.deps/trust.Plo b/gsl-2.5/multilarge_nlinear/.deps/trust.Plo new file mode 100644 index 00000000..16abdb8f --- /dev/null +++ b/gsl-2.5/multilarge_nlinear/.deps/trust.Plo @@ -0,0 +1,307 @@ +trust.lo: trust.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_math.h /usr/include/math.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h /usr/include/stdlib.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_errno.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_linalg.h ../gsl/gsl_mode.h \ + ../gsl/gsl_permutation.h ../gsl/gsl_blas.h ../gsl/gsl_blas_types.h \ + ../gsl/gsl_cblas.h ../gsl/gsl_multilarge_nlinear.h common.c nielsen.c + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +/usr/include/stdlib.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_linalg.h: + +../gsl/gsl_mode.h: + +../gsl/gsl_permutation.h: + +../gsl/gsl_blas.h: + +../gsl/gsl_blas_types.h: + +../gsl/gsl_cblas.h: + +../gsl/gsl_multilarge_nlinear.h: + +common.c: + +nielsen.c: diff --git a/gsl-2.5/multilarge_nlinear/.libs/libgslmultilarge_nlinear.la b/gsl-2.5/multilarge_nlinear/.libs/libgslmultilarge_nlinear.la new file mode 120000 index 00000000..3d1442cc --- /dev/null +++ b/gsl-2.5/multilarge_nlinear/.libs/libgslmultilarge_nlinear.la @@ -0,0 +1 @@ +../libgslmultilarge_nlinear.la \ No newline at end of file diff --git a/gsl-2.5/multilarge_nlinear/.libs/lt-test b/gsl-2.5/multilarge_nlinear/.libs/lt-test new file mode 100755 index 00000000..d6f650c6 Binary files /dev/null and b/gsl-2.5/multilarge_nlinear/.libs/lt-test differ diff --git a/gsl-2.5/multilarge_nlinear/.libs/test b/gsl-2.5/multilarge_nlinear/.libs/test new file mode 100755 index 00000000..23330b0d Binary files /dev/null and b/gsl-2.5/multilarge_nlinear/.libs/test differ diff --git a/gsl-2.5/multilarge_nlinear/Makefile b/gsl-2.5/multilarge_nlinear/Makefile new file mode 100644 index 00000000..faf427d3 --- /dev/null +++ b/gsl-2.5/multilarge_nlinear/Makefile @@ -0,0 +1,1087 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# multilarge_nlinear/Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + + + + +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/gsl +pkgincludedir = $(includedir)/gsl +pkglibdir = $(libdir)/gsl +pkglibexecdir = $(libexecdir)/gsl +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = x86_64-unknown-linux-gnu +host_triplet = x86_64-unknown-linux-gnu +check_PROGRAMS = test$(EXEEXT) +subdir = multilarge_nlinear +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp \ + $(noinst_HEADERS) $(pkginclude_HEADERS) \ + $(top_srcdir)/test-driver TODO +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +libgslmultilarge_nlinear_la_LIBADD = +am_libgslmultilarge_nlinear_la_OBJECTS = cgst.lo cholesky.lo \ + convergence.lo dogleg.lo dummy.lo fdf.lo lm.lo scaling.lo \ + subspace2D.lo trust.lo +libgslmultilarge_nlinear_la_OBJECTS = \ + $(am_libgslmultilarge_nlinear_la_OBJECTS) +AM_V_lt = $(am__v_lt_$(V)) +am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) +am__v_lt_0 = --silent +am__v_lt_1 = +am_test_OBJECTS = test.$(OBJEXT) +test_OBJECTS = $(am_test_OBJECTS) +test_DEPENDENCIES = libgslmultilarge_nlinear.la ../test/libgsltest.la \ + ../multilarge/libgslmultilarge.la \ + ../multifit/libgslmultifit.la ../eigen/libgsleigen.la \ + ../linalg/libgsllinalg.la ../permutation/libgslpermutation.la \ + ../blas/libgslblas.la ../cblas/libgslcblas.la \ + ../matrix/libgslmatrix.la ../vector/libgslvector.la \ + ../block/libgslblock.la ../sys/libgslsys.la \ + ../utils/libutils.la ../rng/libgslrng.la \ + ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la \ + ../complex/libgslcomplex.la ../poly/libgslpoly.la +AM_V_P = $(am__v_P_$(V)) +am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY)) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_$(V)) +am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_$(V)) +am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I. -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_$(V)) +am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_$(V)) +am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libgslmultilarge_nlinear_la_SOURCES) $(test_SOURCES) +DIST_SOURCES = $(libgslmultilarge_nlinear_la_SOURCES) $(test_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(pkgincludedir)" +HEADERS = $(noinst_HEADERS) $(pkginclude_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = .test +LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing aclocal-1.13 +AMTAR = $${TAR-tar} +AM_DEFAULT_VERBOSITY = 1 +AR = ar +AS = as +AUTOCONF = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing autoconf +AUTOHEADER = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing autoheader +AUTOMAKE = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing automake-1.13 +AWK = gawk +CC = gcc +CCDEPMODE = depmode=gcc3 +CFLAGS = -g -O2 +CPP = gcc -E +CPPFLAGS = +CYGPATH_W = echo +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +DLLTOOL = false +DSYMUTIL = +DUMPBIN = +ECHO_C = +ECHO_N = -n +ECHO_T = +EGREP = /usr/bin/grep -E +EXEEXT = +FGREP = /usr/bin/grep -F +GREP = /usr/bin/grep +GSLCBLAS_LDFLAGS = +GSL_CFLAGS = -I${prefix}/include +GSL_LDFLAGS = +GSL_LIBADD = +GSL_LIBM = -lm +GSL_LIBS = -L${exec_prefix}/lib -lgsl +GSL_LT_CBLAS_VERSION = 0:0:0 +GSL_LT_VERSION = 24:0:1 +GSL_MAJOR_VERSION = 2 +GSL_MINOR_VERSION = 5 +HAVE_AIX_IEEE_INTERFACE = +HAVE_DARWIN86_IEEE_INTERFACE = +HAVE_DARWIN_IEEE_INTERFACE = +HAVE_FREEBSD_IEEE_INTERFACE = +HAVE_GNUM68K_IEEE_INTERFACE = +HAVE_GNUPPC_IEEE_INTERFACE = +HAVE_GNUSPARC_IEEE_INTERFACE = +HAVE_GNUX86_IEEE_INTERFACE = +HAVE_HPUX11_IEEE_INTERFACE = +HAVE_HPUX_IEEE_INTERFACE = +HAVE_IRIX_IEEE_INTERFACE = +HAVE_NETBSD_IEEE_INTERFACE = +HAVE_OPENBSD_IEEE_INTERFACE = +HAVE_OS2EMX_IEEE_INTERFACE = +HAVE_SOLARIS_IEEE_INTERFACE = +HAVE_SUNOS4_IEEE_INTERFACE = +HAVE_TRU64_IEEE_INTERFACE = +INSTALL = /usr/bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = $(install_sh) -c -s +LD = /usr/bin/ld -m elf_x86_64 +LDFLAGS = +LIBM = -lm +LIBOBJS = +LIBS = -lm +LIBTOOL = $(SHELL) $(top_builddir)/libtool +LIPO = +LN_S = ln -s +LTLIBOBJS = +MAINT = # +MAKEINFO = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing makeinfo +MANIFEST_TOOL = : +MKDIR_P = /usr/bin/mkdir -p +NM = /usr/bin/nm -B +NMEDIT = +OBJDUMP = objdump +OBJEXT = o +OTOOL = +OTOOL64 = +PACKAGE = gsl +PACKAGE_BUGREPORT = +PACKAGE_NAME = gsl +PACKAGE_STRING = gsl 2.5 +PACKAGE_TARNAME = gsl +PACKAGE_URL = +PACKAGE_VERSION = 2.5 +PATH_SEPARATOR = : +RANLIB = ranlib +SED = /usr/bin/sed +SET_MAKE = +SHELL = /bin/sh +STRIP = strip +VERSION = 2.5 +abs_builddir = /home/groups/kipac/chto/package/gsl/gsl-2.5/multilarge_nlinear +abs_srcdir = /home/groups/kipac/chto/package/gsl/gsl-2.5/multilarge_nlinear +abs_top_builddir = /home/groups/kipac/chto/package/gsl/gsl-2.5 +abs_top_srcdir = /home/groups/kipac/chto/package/gsl/gsl-2.5 +ac_ct_AR = ar +ac_ct_CC = gcc +ac_ct_DUMPBIN = +am__include = include +am__leading_dot = . +am__quote = +am__tar = $${TAR-tar} chof - "$$tardir" +am__untar = $${TAR-tar} xf - +bindir = ${exec_prefix}/bin +build = x86_64-unknown-linux-gnu +build_alias = +build_cpu = x86_64 +build_os = linux-gnu +build_vendor = unknown +builddir = . +datadir = ${datarootdir} +datarootdir = ${prefix}/share +docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} +dvidir = ${docdir} +exec_prefix = ${prefix} +host = x86_64-unknown-linux-gnu +host_alias = +host_cpu = x86_64 +host_os = linux-gnu +host_vendor = unknown +htmldir = ${docdir} +includedir = ${prefix}/include +infodir = ${datarootdir}/info +install_sh = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/install-sh +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +localedir = ${datarootdir}/locale +localstatedir = ${prefix}/var +mandir = ${datarootdir}/man +mkdir_p = $(MKDIR_P) +oldincludedir = /usr/include +pdfdir = ${docdir} +prefix = /home/groups/kipac/chto/package/gsl/gsl_lib +program_transform_name = s,x,x, +psdir = ${docdir} +sbindir = ${exec_prefix}/sbin +sharedstatedir = ${prefix}/com +srcdir = . +sysconfdir = ${prefix}/etc +target_alias = +top_build_prefix = ../ +top_builddir = .. +top_srcdir = .. +noinst_LTLIBRARIES = libgslmultilarge_nlinear.la +pkginclude_HEADERS = gsl_multilarge_nlinear.h +libgslmultilarge_nlinear_la_SOURCES = cgst.c cholesky.c convergence.c dogleg.c dummy.c fdf.c lm.c scaling.c subspace2D.c trust.c +AM_CPPFLAGS = -I$(top_srcdir) +noinst_HEADERS = \ +common.c \ +nielsen.c \ +test_fdf.c \ +test_bard.c \ +test_beale.c \ +test_biggs.c \ +test_box.c \ +test_boxbod.c \ +test_brown1.c \ +test_brown2.c \ +test_brown3.c \ +test_eckerle.c \ +test_enso.c \ +test_exp1.c \ +test_hahn1.c \ +test_helical.c \ +test_gaussian.c \ +test_jennrich.c \ +test_kirby2.c \ +test_kowalik.c \ +test_lin1.c \ +test_lin2.c \ +test_lin3.c \ +test_meyer.c \ +test_meyerscal.c \ +test_osborne.c \ +test_penalty1.c \ +test_penalty2.c \ +test_powell1.c \ +test_powell2.c \ +test_powell3.c \ +test_rat42.c \ +test_rat43.c \ +test_rosenbrock.c \ +test_rosenbrocke.c \ +test_roth.c \ +test_thurber.c \ +test_vardim.c \ +test_watson.c \ +test_wood.c \ +test_wnlin.c + +TESTS = $(check_PROGRAMS) +test_SOURCES = test.c +test_LDADD = libgslmultilarge_nlinear.la ../test/libgsltest.la ../multilarge/libgslmultilarge.la ../multifit/libgslmultifit.la ../eigen/libgsleigen.la ../linalg/libgsllinalg.la ../permutation/libgslpermutation.la ../blas/libgslblas.la ../cblas/libgslcblas.la ../matrix/libgslmatrix.la ../vector/libgslvector.la ../block/libgslblock.la ../sys/libgslsys.la ../utils/libutils.la ../rng/libgslrng.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../complex/libgslcomplex.la ../poly/libgslpoly.la +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu multilarge_nlinear/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu multilarge_nlinear/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: # $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): # $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libgslmultilarge_nlinear.la: $(libgslmultilarge_nlinear_la_OBJECTS) $(libgslmultilarge_nlinear_la_DEPENDENCIES) $(EXTRA_libgslmultilarge_nlinear_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(libgslmultilarge_nlinear_la_OBJECTS) $(libgslmultilarge_nlinear_la_LIBADD) $(LIBS) + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) $(EXTRA_test_DEPENDENCIES) + @rm -f test$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_OBJECTS) $(test_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +include ./$(DEPDIR)/cgst.Plo +include ./$(DEPDIR)/cholesky.Plo +include ./$(DEPDIR)/convergence.Plo +include ./$(DEPDIR)/dogleg.Plo +include ./$(DEPDIR)/dummy.Plo +include ./$(DEPDIR)/fdf.Plo +include ./$(DEPDIR)/lm.Plo +include ./$(DEPDIR)/scaling.Plo +include ./$(DEPDIR)/subspace2D.Plo +include ./$(DEPDIR)/test.Po +include ./$(DEPDIR)/trust.Plo + +.c.o: + $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# $(AM_V_CC)source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(COMPILE) -c $< + +.c.obj: + $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# $(AM_V_CC)source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: + $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +# $(AM_V_CC)source='$<' object='$@' libtool=yes \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-pkgincludeHEADERS: $(pkginclude_HEADERS) + @$(NORMAL_INSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \ + done + +uninstall-pkgincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + else \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_PROGRAMS) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +test.log: test$(EXEEXT) + @p='test$(EXEEXT)'; \ + b='test'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +#.test$(EXEEXT).log: +# @p='$<'; \ +# $(am__set_b); \ +# $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +# --log-file $$b.log --trs-file $$b.trs \ +# $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +# "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-am +all-am: Makefile $(LTLIBRARIES) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(pkgincludedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-pkgincludeHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-pkgincludeHEADERS + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES cscopelist-am ctags ctags-am distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-pkgincludeHEADERS \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + recheck tags tags-am uninstall uninstall-am \ + uninstall-pkgincludeHEADERS + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gsl-2.5/multilarge_nlinear/Makefile.am b/gsl-2.5/multilarge_nlinear/Makefile.am new file mode 100644 index 00000000..e67079d0 --- /dev/null +++ b/gsl-2.5/multilarge_nlinear/Makefile.am @@ -0,0 +1,57 @@ +noinst_LTLIBRARIES = libgslmultilarge_nlinear.la + +pkginclude_HEADERS = gsl_multilarge_nlinear.h + +libgslmultilarge_nlinear_la_SOURCES = cgst.c cholesky.c convergence.c dogleg.c dummy.c fdf.c lm.c scaling.c subspace2D.c trust.c + +AM_CPPFLAGS = -I$(top_srcdir) + +noinst_HEADERS = \ +common.c \ +nielsen.c \ +test_fdf.c \ +test_bard.c \ +test_beale.c \ +test_biggs.c \ +test_box.c \ +test_boxbod.c \ +test_brown1.c \ +test_brown2.c \ +test_brown3.c \ +test_eckerle.c \ +test_enso.c \ +test_exp1.c \ +test_hahn1.c \ +test_helical.c \ +test_gaussian.c \ +test_jennrich.c \ +test_kirby2.c \ +test_kowalik.c \ +test_lin1.c \ +test_lin2.c \ +test_lin3.c \ +test_meyer.c \ +test_meyerscal.c \ +test_osborne.c \ +test_penalty1.c \ +test_penalty2.c \ +test_powell1.c \ +test_powell2.c \ +test_powell3.c \ +test_rat42.c \ +test_rat43.c \ +test_rosenbrock.c \ +test_rosenbrocke.c \ +test_roth.c \ +test_thurber.c \ +test_vardim.c \ +test_watson.c \ +test_wood.c \ +test_wnlin.c + +check_PROGRAMS = test + +TESTS = $(check_PROGRAMS) + +test_SOURCES = test.c +test_LDADD = libgslmultilarge_nlinear.la ../test/libgsltest.la ../multilarge/libgslmultilarge.la ../multifit/libgslmultifit.la ../eigen/libgsleigen.la ../linalg/libgsllinalg.la ../permutation/libgslpermutation.la ../blas/libgslblas.la ../cblas/libgslcblas.la ../matrix/libgslmatrix.la ../vector/libgslvector.la ../block/libgslblock.la ../sys/libgslsys.la ../utils/libutils.la ../rng/libgslrng.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../complex/libgslcomplex.la ../poly/libgslpoly.la diff --git a/gsl-2.5/multilarge_nlinear/Makefile.in b/gsl-2.5/multilarge_nlinear/Makefile.in new file mode 100644 index 00000000..cea1b546 --- /dev/null +++ b/gsl-2.5/multilarge_nlinear/Makefile.in @@ -0,0 +1,1087 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + + +VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +check_PROGRAMS = test$(EXEEXT) +subdir = multilarge_nlinear +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp \ + $(noinst_HEADERS) $(pkginclude_HEADERS) \ + $(top_srcdir)/test-driver TODO +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +libgslmultilarge_nlinear_la_LIBADD = +am_libgslmultilarge_nlinear_la_OBJECTS = cgst.lo cholesky.lo \ + convergence.lo dogleg.lo dummy.lo fdf.lo lm.lo scaling.lo \ + subspace2D.lo trust.lo +libgslmultilarge_nlinear_la_OBJECTS = \ + $(am_libgslmultilarge_nlinear_la_OBJECTS) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +am_test_OBJECTS = test.$(OBJEXT) +test_OBJECTS = $(am_test_OBJECTS) +test_DEPENDENCIES = libgslmultilarge_nlinear.la ../test/libgsltest.la \ + ../multilarge/libgslmultilarge.la \ + ../multifit/libgslmultifit.la ../eigen/libgsleigen.la \ + ../linalg/libgsllinalg.la ../permutation/libgslpermutation.la \ + ../blas/libgslblas.la ../cblas/libgslcblas.la \ + ../matrix/libgslmatrix.la ../vector/libgslvector.la \ + ../block/libgslblock.la ../sys/libgslsys.la \ + ../utils/libutils.la ../rng/libgslrng.la \ + ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la \ + ../complex/libgslcomplex.la ../poly/libgslpoly.la +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libgslmultilarge_nlinear_la_SOURCES) $(test_SOURCES) +DIST_SOURCES = $(libgslmultilarge_nlinear_la_SOURCES) $(test_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(pkgincludedir)" +HEADERS = $(noinst_HEADERS) $(pkginclude_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = @EXEEXT@ .test +LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +GSLCBLAS_LDFLAGS = @GSLCBLAS_LDFLAGS@ +GSL_CFLAGS = @GSL_CFLAGS@ +GSL_LDFLAGS = @GSL_LDFLAGS@ +GSL_LIBADD = @GSL_LIBADD@ +GSL_LIBM = @GSL_LIBM@ +GSL_LIBS = @GSL_LIBS@ +GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ +GSL_LT_VERSION = @GSL_LT_VERSION@ +GSL_MAJOR_VERSION = @GSL_MAJOR_VERSION@ +GSL_MINOR_VERSION = @GSL_MINOR_VERSION@ +HAVE_AIX_IEEE_INTERFACE = @HAVE_AIX_IEEE_INTERFACE@ +HAVE_DARWIN86_IEEE_INTERFACE = @HAVE_DARWIN86_IEEE_INTERFACE@ +HAVE_DARWIN_IEEE_INTERFACE = @HAVE_DARWIN_IEEE_INTERFACE@ +HAVE_FREEBSD_IEEE_INTERFACE = @HAVE_FREEBSD_IEEE_INTERFACE@ +HAVE_GNUM68K_IEEE_INTERFACE = @HAVE_GNUM68K_IEEE_INTERFACE@ +HAVE_GNUPPC_IEEE_INTERFACE = @HAVE_GNUPPC_IEEE_INTERFACE@ +HAVE_GNUSPARC_IEEE_INTERFACE = @HAVE_GNUSPARC_IEEE_INTERFACE@ +HAVE_GNUX86_IEEE_INTERFACE = @HAVE_GNUX86_IEEE_INTERFACE@ +HAVE_HPUX11_IEEE_INTERFACE = @HAVE_HPUX11_IEEE_INTERFACE@ +HAVE_HPUX_IEEE_INTERFACE = @HAVE_HPUX_IEEE_INTERFACE@ +HAVE_IRIX_IEEE_INTERFACE = @HAVE_IRIX_IEEE_INTERFACE@ +HAVE_NETBSD_IEEE_INTERFACE = @HAVE_NETBSD_IEEE_INTERFACE@ +HAVE_OPENBSD_IEEE_INTERFACE = @HAVE_OPENBSD_IEEE_INTERFACE@ +HAVE_OS2EMX_IEEE_INTERFACE = @HAVE_OS2EMX_IEEE_INTERFACE@ +HAVE_SOLARIS_IEEE_INTERFACE = @HAVE_SOLARIS_IEEE_INTERFACE@ +HAVE_SUNOS4_IEEE_INTERFACE = @HAVE_SUNOS4_IEEE_INTERFACE@ +HAVE_TRU64_IEEE_INTERFACE = @HAVE_TRU64_IEEE_INTERFACE@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBM = @LIBM@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +noinst_LTLIBRARIES = libgslmultilarge_nlinear.la +pkginclude_HEADERS = gsl_multilarge_nlinear.h +libgslmultilarge_nlinear_la_SOURCES = cgst.c cholesky.c convergence.c dogleg.c dummy.c fdf.c lm.c scaling.c subspace2D.c trust.c +AM_CPPFLAGS = -I$(top_srcdir) +noinst_HEADERS = \ +common.c \ +nielsen.c \ +test_fdf.c \ +test_bard.c \ +test_beale.c \ +test_biggs.c \ +test_box.c \ +test_boxbod.c \ +test_brown1.c \ +test_brown2.c \ +test_brown3.c \ +test_eckerle.c \ +test_enso.c \ +test_exp1.c \ +test_hahn1.c \ +test_helical.c \ +test_gaussian.c \ +test_jennrich.c \ +test_kirby2.c \ +test_kowalik.c \ +test_lin1.c \ +test_lin2.c \ +test_lin3.c \ +test_meyer.c \ +test_meyerscal.c \ +test_osborne.c \ +test_penalty1.c \ +test_penalty2.c \ +test_powell1.c \ +test_powell2.c \ +test_powell3.c \ +test_rat42.c \ +test_rat43.c \ +test_rosenbrock.c \ +test_rosenbrocke.c \ +test_roth.c \ +test_thurber.c \ +test_vardim.c \ +test_watson.c \ +test_wood.c \ +test_wnlin.c + +TESTS = $(check_PROGRAMS) +test_SOURCES = test.c +test_LDADD = libgslmultilarge_nlinear.la ../test/libgsltest.la ../multilarge/libgslmultilarge.la ../multifit/libgslmultifit.la ../eigen/libgsleigen.la ../linalg/libgsllinalg.la ../permutation/libgslpermutation.la ../blas/libgslblas.la ../cblas/libgslcblas.la ../matrix/libgslmatrix.la ../vector/libgslvector.la ../block/libgslblock.la ../sys/libgslsys.la ../utils/libutils.la ../rng/libgslrng.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../complex/libgslcomplex.la ../poly/libgslpoly.la +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu multilarge_nlinear/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu multilarge_nlinear/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libgslmultilarge_nlinear.la: $(libgslmultilarge_nlinear_la_OBJECTS) $(libgslmultilarge_nlinear_la_DEPENDENCIES) $(EXTRA_libgslmultilarge_nlinear_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(libgslmultilarge_nlinear_la_OBJECTS) $(libgslmultilarge_nlinear_la_LIBADD) $(LIBS) + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) $(EXTRA_test_DEPENDENCIES) + @rm -f test$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_OBJECTS) $(test_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cgst.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cholesky.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/convergence.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dogleg.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dummy.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fdf.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lm.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/scaling.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/subspace2D.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/trust.Plo@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-pkgincludeHEADERS: $(pkginclude_HEADERS) + @$(NORMAL_INSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \ + done + +uninstall-pkgincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + else \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_PROGRAMS) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +test.log: test$(EXEEXT) + @p='test$(EXEEXT)'; \ + b='test'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +@am__EXEEXT_TRUE@.test$(EXEEXT).log: +@am__EXEEXT_TRUE@ @p='$<'; \ +@am__EXEEXT_TRUE@ $(am__set_b); \ +@am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +@am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ +@am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +@am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-am +all-am: Makefile $(LTLIBRARIES) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(pkgincludedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-pkgincludeHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-pkgincludeHEADERS + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES cscopelist-am ctags ctags-am distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-pkgincludeHEADERS \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + recheck tags tags-am uninstall uninstall-am \ + uninstall-pkgincludeHEADERS + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gsl-2.5/multilarge_nlinear/TODO b/gsl-2.5/multilarge_nlinear/TODO new file mode 100644 index 00000000..3c0df80c --- /dev/null +++ b/gsl-2.5/multilarge_nlinear/TODO @@ -0,0 +1,2 @@ +1. finite difference J and fvv for cholesky solver +2. Fix biggs test x0 and dogleg / ddogleg convergence issue diff --git a/gsl-2.5/multilarge_nlinear/cgst.c b/gsl-2.5/multilarge_nlinear/cgst.c new file mode 100644 index 00000000..9e86cdc2 --- /dev/null +++ b/gsl-2.5/multilarge_nlinear/cgst.c @@ -0,0 +1,382 @@ +/* multilarge_nlinear/cgst.c + * + * Copyright (C) 2016 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include +#include +#include + +/* + * This module contains an implementation of the Steihaug-Toint + * conjugate gradient algorithm for nonlinear optimization problems. + * This implementation closely follows the following works: + * + * [1] T. Steihaug, The conjugate gradient method and trust regions + * in large scale optimization, SIAM J. Num. Anal., 20(3) 1983. + * + * In the below algorithm, the Jacobian and gradient are scaled + * according to: + * + * J~ = J D^{-1} + * g~ = D^{-1} + * + * prior to any calculations which results in better numerical + * stability when solving for the Gauss-Newton step. The resulting + * step vector is then backtransformed as: + * + * dx = D^{-1} dx~ + */ + +typedef struct +{ + size_t n; /* number of observations */ + size_t p; /* number of parameters */ + gsl_vector *z; /* Gauss-Newton step, size p */ + gsl_vector *r; /* steepest descent step, size p */ + gsl_vector *d; /* steepest descent step, size p */ + gsl_vector *workp; /* workspace, length p */ + gsl_vector *workn; /* workspace, length n */ + double norm_g; /* || g~ || */ + + double cgtol; /* tolerance for CG solution */ + size_t cgmaxit; /* maximum CG iterations */ +} cgst_state_t; + +#include "common.c" + +static void * cgst_alloc (const void * params, const size_t n, const size_t p); +static void cgst_free(void *vstate); +static int cgst_init(const void *vtrust_state, void *vstate); +static int cgst_preloop(const void * vtrust_state, void * vstate); +static int cgst_step(const void * vtrust_state, const double delta, + gsl_vector * dx, void * vstate); +static int cgst_preduction(const void * vtrust_state, const gsl_vector * dx, + double * pred, void * vstate); +static double cgst_calc_tau(const gsl_vector * p, const gsl_vector * d, + const double delta); + +static void * +cgst_alloc (const void * params, const size_t n, const size_t p) +{ + const gsl_multilarge_nlinear_parameters *par = (const gsl_multilarge_nlinear_parameters *) params; + cgst_state_t *state; + + state = calloc(1, sizeof(cgst_state_t)); + if (state == NULL) + { + GSL_ERROR_NULL ("failed to allocate st state", GSL_ENOMEM); + } + + state->z = gsl_vector_alloc(p); + if (state->z == NULL) + { + GSL_ERROR_NULL ("failed to allocate space for z", GSL_ENOMEM); + } + + state->r = gsl_vector_alloc(p); + if (state->r == NULL) + { + GSL_ERROR_NULL ("failed to allocate space for r", GSL_ENOMEM); + } + + state->d = gsl_vector_alloc(p); + if (state->d == NULL) + { + GSL_ERROR_NULL ("failed to allocate space for d", GSL_ENOMEM); + } + + state->workp = gsl_vector_alloc(p); + if (state->workp == NULL) + { + GSL_ERROR_NULL ("failed to allocate space for workp", GSL_ENOMEM); + } + + state->workn = gsl_vector_alloc(n); + if (state->workn == NULL) + { + GSL_ERROR_NULL ("failed to allocate space for workn", GSL_ENOMEM); + } + + state->n = n; + state->p = p; + + state->cgmaxit = par->max_iter; + if (state->cgmaxit == 0) + state->cgmaxit = n; + + state->cgtol = par->tol; + + return state; +} + +static void +cgst_free(void *vstate) +{ + cgst_state_t *state = (cgst_state_t *) vstate; + + if (state->z) + gsl_vector_free(state->z); + + if (state->r) + gsl_vector_free(state->r); + + if (state->d) + gsl_vector_free(state->d); + + if (state->workp) + gsl_vector_free(state->workp); + + if (state->workn) + gsl_vector_free(state->workn); + + free(state); +} + +/* +cgst_init() + Initialize cgst solver + +Inputs: vtrust_state - trust state + vstate - workspace + +Return: success/error +*/ + +static int +cgst_init(const void *vtrust_state, void *vstate) +{ + /* nothing to do */ + + (void)vtrust_state; + (void)vstate; + + return GSL_SUCCESS; +} + +static int +cgst_preloop(const void * vtrust_state, void * vstate) +{ + /* nothing to do */ + + (void)vtrust_state; + (void)vstate; + + return GSL_SUCCESS; +} + +/* +cgst_step() + Calculate a new step vector + +Return: +GSL_SUCCESS if CG solution found +GSL_EMAXITER if no solution found +*/ + +static int +cgst_step(const void * vtrust_state, const double delta, + gsl_vector * dx, void * vstate) +{ + int status; + const gsl_multilarge_nlinear_trust_state *trust_state = + (const gsl_multilarge_nlinear_trust_state *) vtrust_state; + cgst_state_t *state = (cgst_state_t *) vstate; + const gsl_vector * x = trust_state->x; + const gsl_vector * f = trust_state->f; + const gsl_vector * swts = trust_state->sqrt_wts; + const gsl_vector * diag = trust_state->diag; + const gsl_multilarge_nlinear_parameters * params = trust_state->params; + gsl_multilarge_nlinear_fdf * fdf = trust_state->fdf; + double alpha, beta, u; + double norm_Jd; /* || J D^{-1} d_i || */ + double norm_r; /* || r_i || */ + double norm_rp1; /* || r_{i+1} || */ + size_t i; + + /* Step 1 of [1], section 2; scale gradient as + * + * g~ = D^{-1} g + * + * for better numerical stability + */ + + for (i = 0; i < state->p; ++i) + { + double gi = gsl_vector_get(trust_state->g, i); + double di = gsl_vector_get(trust_state->diag, i); + + gsl_vector_set(state->z, i, 0.0); + gsl_vector_set(state->r, i, -gi / di); + gsl_vector_set(state->d, i, -gi / di); + gsl_vector_set(state->workp, i, gi / di); + } + + /* compute || g~ || */ + state->norm_g = gsl_blas_dnrm2(state->workp); + + for (i = 0; i < state->cgmaxit; ++i) + { + /* workp := D^{-1} d_i */ + gsl_vector_memcpy(state->workp, state->d); + gsl_vector_div(state->workp, trust_state->diag); + + /* workn := J D^{-1} d_i */ + status = gsl_multilarge_nlinear_eval_df(CblasNoTrans, x, f, state->workp, + swts, params->h_df, params->fdtype, + fdf, state->workn, NULL, NULL); + if (status) + return status; + + /* compute || J D^{-1} d_i || */ + norm_Jd = gsl_blas_dnrm2(state->workn); + + /* Step 2 of [1], section 2 */ + if (norm_Jd == 0.0) + { + double tau = cgst_calc_tau(state->z, state->d, delta); + + /* dx = z_i + tau*d_i */ + scaled_addition(1.0, state->z, tau, state->d, dx); + gsl_vector_div(dx, diag); + + return GSL_SUCCESS; + } + + /* Step 3 of [1], section 2 */ + + norm_r = gsl_blas_dnrm2(state->r); + u = norm_r / norm_Jd; + alpha = u * u; + + /* workp <= z_{i+1} = z_i + alpha_i*d_i */ + scaled_addition(1.0, state->z, alpha, state->d, state->workp); + + u = gsl_blas_dnrm2(state->workp); + if (u >= delta) + { + double tau = cgst_calc_tau(state->z, state->d, delta); + + /* dx = z_i + tau*d_i */ + scaled_addition(1.0, state->z, tau, state->d, dx); + gsl_vector_div(dx, diag); + + return GSL_SUCCESS; + } + + /* store z_{i+1} */ + gsl_vector_memcpy(state->z, state->workp); + + /* Step 4 of [1], section 2 */ + + /* compute: workp := alpha B d_i = alpha D^{-1} J^T J D^{-1} d_i, + * where J D^{-1} d_i is already stored in workn */ + status = gsl_multilarge_nlinear_eval_df(CblasTrans, x, f, state->workn, + swts, params->h_df, params->fdtype, + fdf, state->workp, NULL, NULL); + if (status) + return status; + + gsl_vector_div(state->workp, trust_state->diag); + gsl_vector_scale(state->workp, alpha); + + /* r_{i+1} = r_i - alpha*B*d_i */ + gsl_vector_sub(state->r, state->workp); + norm_rp1 = gsl_blas_dnrm2(state->r); + + u = norm_rp1 / state->norm_g; + if (u < state->cgtol) + { + gsl_vector_memcpy(dx, state->z); + gsl_vector_div(dx, diag); + return GSL_SUCCESS; + } + + /* Step 5 of [1], section 2 */ + + /* compute u = ||r_{i+1}|| / || r_i|| */ + u = norm_rp1 / norm_r; + beta = u * u; + + /* compute: d_{i+1} = rt_{i+1} + beta*d_i */ + scaled_addition(1.0, state->r, beta, state->d, state->d); + } + + /* failed to converge, return current estimate */ + gsl_vector_memcpy(dx, state->z); + gsl_vector_div(dx, diag); + + return GSL_EMAXITER; +} + +static int +cgst_preduction(const void * vtrust_state, const gsl_vector * dx, + double * pred, void * vstate) +{ + const gsl_multilarge_nlinear_trust_state *trust_state = + (const gsl_multilarge_nlinear_trust_state *) vtrust_state; + cgst_state_t *state = (cgst_state_t *) vstate; + + *pred = quadratic_preduction(trust_state, dx, state->workn); + + return GSL_SUCCESS; +} + +/* +cgst_calc_tau() + Compute tau > 0 such that: + +|| p + tau*d || = delta +*/ + +static double +cgst_calc_tau(const gsl_vector * p, const gsl_vector * d, + const double delta) +{ + double norm_p, norm_d, u; + double t1, t2, tau; + + norm_p = gsl_blas_dnrm2(p); + norm_d = gsl_blas_dnrm2(d); + + /* compute (p, d) */ + gsl_blas_ddot(p, d, &u); + + t1 = u / (norm_d * norm_d); + t2 = t1*u + (delta + norm_p) * (delta - norm_p); + tau = -t1 + sqrt(t2) / norm_d; + + return tau; +} + +static const gsl_multilarge_nlinear_trs cgst_type = +{ + "steihaug-toint", + cgst_alloc, + cgst_init, + cgst_preloop, + cgst_step, + cgst_preduction, + cgst_free +}; + +const gsl_multilarge_nlinear_trs *gsl_multilarge_nlinear_trs_cgst = &cgst_type; diff --git a/gsl-2.5/multilarge_nlinear/cgst.lo b/gsl-2.5/multilarge_nlinear/cgst.lo new file mode 100644 index 00000000..fa57c94d --- /dev/null +++ b/gsl-2.5/multilarge_nlinear/cgst.lo @@ -0,0 +1,12 @@ +# cgst.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/cgst.o' + +# Name of the non-PIC object +non_pic_object='cgst.o' + diff --git a/gsl-2.5/multilarge_nlinear/cholesky.c b/gsl-2.5/multilarge_nlinear/cholesky.c new file mode 100644 index 00000000..c52783d5 --- /dev/null +++ b/gsl-2.5/multilarge_nlinear/cholesky.c @@ -0,0 +1,324 @@ +/* multilarge_nlinear/cholesky.c + * + * Copyright (C) 2016 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* + * This module calculates the solution of the normal equations least squares + * system: + * + * [ J^T J + mu D^T D ] p = -J^T f + * + * using the modified Cholesky decomposition. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "common.c" + +typedef struct +{ + gsl_matrix *JTJ; /* J^T J */ + gsl_matrix *work_JTJ; /* copy of J^T J */ + gsl_vector *rhs; /* -J^T f, size p */ + gsl_permutation *perm; /* permutation matrix for modified Cholesky */ + gsl_vector *work3p; /* workspace, size 3*p */ + gsl_vector *workn; /* workspace, size n */ + double mu; /* current regularization parameter */ +} cholesky_state_t; + +static void *cholesky_alloc (const size_t n, const size_t p); +static int cholesky_init(const void * vtrust_state, void * vstate); +static int cholesky_presolve(const double mu, const void * vtrust_state, void * vstate); +static int cholesky_solve(const gsl_vector * g, gsl_vector *x, + const void * vtrust_state, void *vstate); +static int cholesky_rcond(double * rcond, const gsl_matrix * JTJ, void * vstate); +static int cholesky_covar(const gsl_matrix * JTJ, gsl_matrix * covar, void * vstate); +static int cholesky_solve_rhs(const gsl_vector * b, gsl_vector *x, cholesky_state_t *state); +static int cholesky_regularize(const double mu, const gsl_vector * diag, gsl_matrix * A, + cholesky_state_t * state); + +static void * +cholesky_alloc (const size_t n, const size_t p) +{ + cholesky_state_t *state; + + state = calloc(1, sizeof(cholesky_state_t)); + if (state == NULL) + { + GSL_ERROR_NULL ("failed to allocate cholesky state", GSL_ENOMEM); + } + + state->JTJ = gsl_matrix_alloc(p, p); + if (state->JTJ == NULL) + { + GSL_ERROR_NULL ("failed to allocate space for JTJ", GSL_ENOMEM); + } + + state->work_JTJ = gsl_matrix_alloc(p, p); + if (state->work_JTJ == NULL) + { + GSL_ERROR_NULL ("failed to allocate space for JTJ workspace", + GSL_ENOMEM); + } + + state->rhs = gsl_vector_alloc(p); + if (state->rhs == NULL) + { + GSL_ERROR_NULL ("failed to allocate space for rhs", GSL_ENOMEM); + } + + state->perm = gsl_permutation_alloc(p); + if (state->perm == NULL) + { + GSL_ERROR_NULL ("failed to allocate space for perm", GSL_ENOMEM); + } + + state->work3p = gsl_vector_alloc(3 * p); + if (state->work3p == NULL) + { + GSL_ERROR_NULL ("failed to allocate space for work3p", GSL_ENOMEM); + } + + state->workn = gsl_vector_alloc(n); + if (state->workn == NULL) + { + GSL_ERROR_NULL ("failed to allocate space for workn", GSL_ENOMEM); + } + + state->mu = -1.0; + + return state; +} + +static void +cholesky_free(void *vstate) +{ + cholesky_state_t *state = (cholesky_state_t *) vstate; + + if (state->JTJ) + gsl_matrix_free(state->JTJ); + + if (state->work_JTJ) + gsl_matrix_free(state->work_JTJ); + + if (state->rhs) + gsl_vector_free(state->rhs); + + if (state->perm) + gsl_permutation_free(state->perm); + + if (state->work3p) + gsl_vector_free(state->work3p); + + if (state->workn) + gsl_vector_free(state->workn); + + free(state); +} + +static int +cholesky_init(const void * vtrust_state, void * vstate) +{ + const gsl_multilarge_nlinear_trust_state *trust_state = + (const gsl_multilarge_nlinear_trust_state *) vtrust_state; + cholesky_state_t *state = (cholesky_state_t *) vstate; + + /* store J^T J normal equations matrix */ + gsl_matrix_tricpy('L', 1, state->JTJ, trust_state->JTJ); + + return GSL_SUCCESS; +} + +/* +cholesky_presolve() + Compute the modified Cholesky decomposition of J^T J + mu D^T D. +Modified Cholesky is used in case mu = 0 and there are rounding +errors in forming J^T J which could lead to an indefinite matrix. + +Inputs: mu - LM parameter + vstate - workspace + +Notes: +1) On output, state->work_JTJ contains the Cholesky decomposition of +J^T J + mu D^T D +*/ + +static int +cholesky_presolve(const double mu, const void * vtrust_state, void * vstate) +{ + const gsl_multilarge_nlinear_trust_state *trust_state = + (const gsl_multilarge_nlinear_trust_state *) vtrust_state; + cholesky_state_t *state = (cholesky_state_t *) vstate; + gsl_matrix *JTJ = state->work_JTJ; + const gsl_vector *diag = trust_state->diag; + int status; + + /* copy lower triangle of A to workspace */ + gsl_matrix_tricpy('L', 1, JTJ, state->JTJ); + + /* augment normal equations: A -> A + mu D^T D */ + status = cholesky_regularize(mu, diag, JTJ, state); + if (status) + return status; + + /* compute modified Cholesky decomposition */ + status = gsl_linalg_mcholesky_decomp(JTJ, state->perm, NULL); + if (status) + return status; + + state->mu = mu; + + return GSL_SUCCESS; +} + +/* +cholesky_solve() + Compute (J^T J + mu D^T D) x = -g + +where g = J^T f + +Inputs: g - right hand side vector g, size p + x - (output) solution vector + vstate - cholesky workspace +*/ + +static int +cholesky_solve(const gsl_vector * g, gsl_vector *x, + const void * vtrust_state, void *vstate) +{ + cholesky_state_t *state = (cholesky_state_t *) vstate; + int status; + + status = cholesky_solve_rhs(g, x, state); + if (status) + return status; + + /* reverse direction to go downhill */ + gsl_vector_scale(x, -1.0); + + (void) vtrust_state; + + return GSL_SUCCESS; +} + +static int +cholesky_rcond(double * rcond, const gsl_matrix * JTJ, void * vstate) +{ + int status; + cholesky_state_t *state = (cholesky_state_t *) vstate; + double rcond_JTJ; + + /* its possible the current Cholesky decomposition is from the previous + * iteration so do a new one to be sure we use the right Jacobian */ + + /* copy lower triangle of JTJ to workspace */ + gsl_matrix_tricpy('L', 1, state->work_JTJ, JTJ); + + /* compute modified Cholesky decomposition */ + status = gsl_linalg_mcholesky_decomp(state->work_JTJ, state->perm, NULL); + if (status) + return status; + + status = gsl_linalg_mcholesky_rcond(state->work_JTJ, state->perm, &rcond_JTJ, state->work3p); + if (status == GSL_SUCCESS) + *rcond = sqrt(rcond_JTJ); + + return status; +} + +static int +cholesky_covar(const gsl_matrix * JTJ, gsl_matrix * covar, void * vstate) +{ + int status; + cholesky_state_t *state = (cholesky_state_t *) vstate; + + /* its possible the current Cholesky decomposition is from the previous + * iteration so do a new one to be sure we use the right Jacobian */ + + /* copy lower triangle of JTJ to workspace */ + gsl_matrix_tricpy('L', 1, state->work_JTJ, JTJ); + + /* compute modified Cholesky decomposition */ + status = gsl_linalg_mcholesky_decomp(state->work_JTJ, state->perm, NULL); + if (status) + return status; + + status = gsl_linalg_mcholesky_invert(state->work_JTJ, state->perm, covar); + if (status) + return status; + + return GSL_SUCCESS; +} + +/* solve: (J^T J + mu D^T D) x = b */ +static int +cholesky_solve_rhs(const gsl_vector * b, gsl_vector *x, cholesky_state_t *state) +{ + int status; + gsl_matrix *JTJ = state->work_JTJ; + + status = gsl_linalg_mcholesky_solve(JTJ, state->perm, b, x); + if (status) + return status; + + return GSL_SUCCESS; +} + +/* A <- A + mu D^T D */ +static int +cholesky_regularize(const double mu, const gsl_vector * diag, gsl_matrix * A, + cholesky_state_t * state) +{ + (void) state; + + if (mu != 0.0) + { + size_t i; + + for (i = 0; i < diag->size; ++i) + { + double di = gsl_vector_get(diag, i); + double *Aii = gsl_matrix_ptr(A, i, i); + *Aii += mu * di * di; + } + } + + return GSL_SUCCESS; +} + +static const gsl_multilarge_nlinear_solver cholesky_type = +{ + "cholesky", + cholesky_alloc, + cholesky_init, + cholesky_presolve, + cholesky_solve, + cholesky_rcond, + cholesky_covar, + cholesky_free +}; + +const gsl_multilarge_nlinear_solver *gsl_multilarge_nlinear_solver_cholesky = &cholesky_type; diff --git a/gsl-2.5/multilarge_nlinear/cholesky.lo b/gsl-2.5/multilarge_nlinear/cholesky.lo new file mode 100644 index 00000000..a534867e --- /dev/null +++ b/gsl-2.5/multilarge_nlinear/cholesky.lo @@ -0,0 +1,12 @@ +# cholesky.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/cholesky.o' + +# Name of the non-PIC object +non_pic_object='cholesky.o' + diff --git a/gsl-2.5/multilarge_nlinear/common.c b/gsl-2.5/multilarge_nlinear/common.c new file mode 100644 index 00000000..bea023ca --- /dev/null +++ b/gsl-2.5/multilarge_nlinear/common.c @@ -0,0 +1,131 @@ +/* multilarge_nlinear/common.c + * + * Copyright (C) 2015, 2016 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +static double scaled_enorm (const gsl_vector * d, const gsl_vector * f); +static void scaled_addition (const double alpha, const gsl_vector * x, + const double beta, const gsl_vector * y, + gsl_vector * z); +static double quadratic_preduction(const gsl_multilarge_nlinear_trust_state * trust_state, + const gsl_vector * dx, gsl_vector * work); + +/* compute || diag(d) f || */ +static double +scaled_enorm (const gsl_vector * d, const gsl_vector * f) +{ + double e2 = 0; + size_t i, n = f->size; + for (i = 0; i < n; i++) + { + double fi = gsl_vector_get (f, i); + double di = gsl_vector_get (d, i); + double u = di * fi; + e2 += u * u; + } + return sqrt (e2); +} + +/* compute z = alpha*x + beta*y */ +static void +scaled_addition (const double alpha, const gsl_vector * x, + const double beta, const gsl_vector * y, gsl_vector * z) +{ + const size_t N = z->size; + size_t i; + + for (i = 0; i < N; i++) + { + double xi = gsl_vector_get (x, i); + double yi = gsl_vector_get (y, i); + gsl_vector_set (z, i, alpha * xi + beta * yi); + } +} + +/* +quadratic_preduction() + Calculate predicted reduction based on standard +quadratic model: + +m_k(dx) = Phi(x_k) + dx' g + 1/2 dx' B_k dx + +predicted_reduction = m_k(0) - m_k(dx) + = -2 g^T dx / ||f||^2 - ( ||J*dx|| / ||f|| )^2 + = -2 fhat . beta - ||beta||^2 + +where: beta = J*dx / ||f|| + +Inputs: trust_state - trust state + dx - proposed step, size p + work - workspace, size n + +Return: predicted reduction +*/ + +static double +quadratic_preduction(const gsl_multilarge_nlinear_trust_state * trust_state, + const gsl_vector * dx, gsl_vector * work) +{ + const gsl_vector * f = trust_state->f; + const gsl_multilarge_nlinear_parameters * params = trust_state->params; + const double normf = gsl_blas_dnrm2(f); + double gTdx; /* g^T dx */ + gsl_multilarge_nlinear_fdf * fdf = trust_state->fdf; + double pred_reduction, u; + + /* compute g^T dx */ + gsl_blas_ddot(trust_state->g, dx, &gTdx); + + /* first term: -2 g^T dx / ||f||^2 */ + pred_reduction = -2.0 * gTdx / (normf * normf); + + if (params->solver == gsl_multilarge_nlinear_solver_cholesky) + { + const size_t p = fdf->p; + gsl_vector_view workp = gsl_vector_subvector(work, 0, p); + + /* compute workp = J^T J dx */ + gsl_blas_dsymv(CblasLower, 1.0, trust_state->JTJ, dx, 0.0, &workp.vector); + + /* compute u = dx^T J^T J dx = ||J dx||^2 */ + gsl_blas_ddot(&workp.vector, dx, &u); + + pred_reduction -= u / (normf * normf); + } + else + { + int status; + const gsl_vector * x = trust_state->x; + const gsl_vector * swts = trust_state->sqrt_wts; + + /* compute work = J*dx */ + status = gsl_multilarge_nlinear_eval_df(CblasNoTrans, x, f, dx, + swts, params->h_df, params->fdtype, + fdf, work, NULL, NULL); + if (status) + { + GSL_ERROR_VAL("error computing preduction", status, 0.0); + } + + /* compute u = ||J*dx|| / ||f|| */ + u = gsl_blas_dnrm2(work) / normf; + + pred_reduction -= u * u; + } + + return pred_reduction; +} diff --git a/gsl-2.5/multilarge_nlinear/convergence.c b/gsl-2.5/multilarge_nlinear/convergence.c new file mode 100644 index 00000000..d2d8d087 --- /dev/null +++ b/gsl-2.5/multilarge_nlinear/convergence.c @@ -0,0 +1,111 @@ +/* multilargenlin/convergence.c + * + * Copyright (C) 2015 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include +#include + +static double scaled_infnorm(const gsl_vector *x, const gsl_vector *g); + +/* +gsl_multilarge_nlinear_test() + Convergence tests for nonlinear least squares minimization + +(1) |dx_i| <= xtol * (1 + |x_i|) for all i +(2) || g .* x ||_inf <= gtol ||f||^2 +(3) ||f(x+dx) - f(x)|| <= ftol * max(||f(x)||, 1) + +Inputs: xtol - tolerance for step size + gtol - tolerance for gradient vector + ftol - tolerance for residual vector + info - (output) + 1 - stopped by small x step + 2 - stopped by small gradient + 3 - stopped by small residual vector change + w - workspace +*/ + +int +gsl_multilarge_nlinear_test (const double xtol, const double gtol, + const double ftol, int *info, + const gsl_multilarge_nlinear_workspace * w) +{ + int status; + double gnorm, fnorm, phi; + + *info = 0; + + status = gsl_multifit_test_delta(w->dx, w->x, xtol*xtol, xtol); + if (status == GSL_SUCCESS) + { + *info = 1; + return GSL_SUCCESS; + } + + /* compute gnorm = max_i( g_i * max(x_i, 1) ) */ + gnorm = scaled_infnorm(w->x, w->g); + + /* compute fnorm = ||f|| */ + fnorm = gsl_blas_dnrm2(w->f); + phi = 0.5 * fnorm * fnorm; + +#if 0 + fprintf(stderr, "gnorm = %.12e fnorm = %.12e gnorm/phi = %.12e\n", gnorm, fnorm, gnorm / phi); +#endif + + if (gnorm <= gtol * GSL_MAX(phi, 1.0)) + { + *info = 2; + return GSL_SUCCESS; + } + +#if 0 + if (dfnorm <= ftol * GSL_MAX(fnorm, 1.0)) + { + *info = 3; + return GSL_SUCCESS; + } +#endif + + return GSL_CONTINUE; +} + +static double +scaled_infnorm(const gsl_vector *x, const gsl_vector *g) +{ + const size_t n = x->size; + size_t i; + double norm = 0.0; + + for (i = 0; i < n; ++i) + { + double xi = GSL_MAX(gsl_vector_get(x, i), 1.0); + double gi = gsl_vector_get(g, i); + double tmp = fabs(xi * gi); + + if (tmp > norm) + norm = tmp; + } + + return norm; +} diff --git a/gsl-2.5/multilarge_nlinear/convergence.lo b/gsl-2.5/multilarge_nlinear/convergence.lo new file mode 100644 index 00000000..a5468a8d --- /dev/null +++ b/gsl-2.5/multilarge_nlinear/convergence.lo @@ -0,0 +1,12 @@ +# convergence.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/convergence.o' + +# Name of the non-PIC object +non_pic_object='convergence.o' + diff --git a/gsl-2.5/multilarge_nlinear/dogleg.c b/gsl-2.5/multilarge_nlinear/dogleg.c new file mode 100644 index 00000000..fbf98660 --- /dev/null +++ b/gsl-2.5/multilarge_nlinear/dogleg.c @@ -0,0 +1,501 @@ +/* multilarge_nlinear/dogleg.c + * + * Copyright (C) 2016 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include +#include +#include + +/* + * This module contains an implementation of the Powell dogleg + * algorithm for nonlinear optimization problems. This implementation + * closely follows the following works: + * + * [1] H. B. Nielsen, K. Madsen, Introduction to Optimization and + * Data Fitting, Informatics and Mathematical Modeling, + * Technical University of Denmark (DTU), 2010. + * + * [2] J. E. Dennis and H. H. W. Mei, Two new unconstrained optimization + * algorithms which use function and gradient values, J. Opt. Theory and + * Appl., 28(4), 1979. + */ + +typedef struct +{ + size_t n; /* number of observations */ + size_t p; /* number of parameters */ + gsl_vector *dx_gn; /* Gauss-Newton step, size p */ + gsl_vector *dx_sd; /* steepest descent step, size p */ + double norm_Dgn; /* || D dx_gn || */ + double norm_Dsd; /* || D dx_sd || */ + double norm_Dinvg; /* || D^{-1} g || */ + double norm_JDinv2g; /* || J D^{-2} g || */ + gsl_vector *workp1; /* workspace, length p */ + gsl_vector *workp2; /* workspace, length p */ + gsl_vector *workn; /* workspace, length n */ + + /* tunable parameters */ + gsl_multilarge_nlinear_parameters params; +} dogleg_state_t; + +#include "common.c" + +static void * dogleg_alloc (const void * params, const size_t n, const size_t p); +static void dogleg_free(void *vstate); +static int dogleg_init(const void *vtrust_state, void *vstate); +static int dogleg_preloop(const void * vtrust_state, void * vstate); +static int dogleg_step(const void * vtrust_state, const double delta, + gsl_vector * dx, void * vstate); +static int dogleg_double_step(const void * vtrust_state, const double delta, + gsl_vector * dx, void * vstate); +static int dogleg_preduction(const void * vtrust_state, const gsl_vector * dx, + double * pred, void * vstate); +static int dogleg_calc_gn(const gsl_multilarge_nlinear_trust_state * trust_state, gsl_vector * dx); +static double dogleg_beta(const double t, const double delta, + const gsl_vector * diag, dogleg_state_t * state); + +static void * +dogleg_alloc (const void * params, const size_t n, const size_t p) +{ + dogleg_state_t *state; + + state = calloc(1, sizeof(dogleg_state_t)); + if (state == NULL) + { + GSL_ERROR_NULL ("failed to allocate dogleg state", GSL_ENOMEM); + } + + state->dx_gn = gsl_vector_alloc(p); + if (state->dx_gn == NULL) + { + GSL_ERROR_NULL ("failed to allocate space for dx_gn", GSL_ENOMEM); + } + + state->dx_sd = gsl_vector_alloc(p); + if (state->dx_sd == NULL) + { + GSL_ERROR_NULL ("failed to allocate space for dx_sd", GSL_ENOMEM); + } + + state->workp1 = gsl_vector_alloc(p); + if (state->workp1 == NULL) + { + GSL_ERROR_NULL ("failed to allocate space for workp1", GSL_ENOMEM); + } + + state->workp2 = gsl_vector_alloc(p); + if (state->workp2 == NULL) + { + GSL_ERROR_NULL ("failed to allocate space for workp2", GSL_ENOMEM); + } + + state->workn = gsl_vector_alloc(n); + if (state->workn == NULL) + { + GSL_ERROR_NULL ("failed to allocate space for workn", GSL_ENOMEM); + } + + state->n = n; + state->p = p; + state->params = *(const gsl_multilarge_nlinear_parameters *) params; + + return state; +} + +static void +dogleg_free(void *vstate) +{ + dogleg_state_t *state = (dogleg_state_t *) vstate; + + if (state->dx_gn) + gsl_vector_free(state->dx_gn); + + if (state->dx_sd) + gsl_vector_free(state->dx_sd); + + if (state->workp1) + gsl_vector_free(state->workp1); + + if (state->workp2) + gsl_vector_free(state->workp2); + + if (state->workn) + gsl_vector_free(state->workn); + + free(state); +} + +/* +dogleg_init() + Initialize dogleg solver + +Inputs: vtrust_state - trust state + vstate - workspace + +Return: success/error +*/ + +static int +dogleg_init(const void *vtrust_state, void *vstate) +{ + (void)vtrust_state; + (void)vstate; + + return GSL_SUCCESS; +} + +/* +dogleg_preloop() + Initialize dogleg method prior to iteration loop. +This involves computing the steepest descent step. The +Gauss-Newton step is computed later in the _step() functions +if required. + +Notes: on output, +1) state->dx_sd contains steepest descent step +2) state->norm_Dinvg contains || D^{-1} g || +3) state->norm_JDinv2g contains || J D^{-2} g || +*/ + +static int +dogleg_preloop(const void * vtrust_state, void * vstate) +{ + const gsl_multilarge_nlinear_trust_state *trust_state = + (const gsl_multilarge_nlinear_trust_state *) vtrust_state; + dogleg_state_t *state = (dogleg_state_t *) vstate; + double u; + double alpha; /* ||g||^2 / ||Jg||^2 */ + + /* calculate the steepest descent step */ + + /* compute workp1 = D^{-1} g and its norm */ + gsl_vector_memcpy(state->workp1, trust_state->g); + gsl_vector_div(state->workp1, trust_state->diag); + state->norm_Dinvg = gsl_blas_dnrm2(state->workp1); + + /* compute workp1 = D^{-2} g */ + gsl_vector_div(state->workp1, trust_state->diag); + + /* compute workp2 = J^T J D^{-2} g */ + gsl_blas_dsymv(CblasLower, 1.0, trust_state->JTJ, state->workp1, 0.0, state->workp2); + + /* compute norm_JDinv2g = || J D^{-2} g || */ + gsl_blas_ddot(state->workp1, state->workp2, &u); + state->norm_JDinv2g = sqrt(u); + + u = state->norm_Dinvg / state->norm_JDinv2g; + alpha = u * u; + + /* dx_sd = -alpha D^{-2} g */ + gsl_vector_memcpy(state->dx_sd, state->workp1); + gsl_vector_scale(state->dx_sd, -alpha); + + state->norm_Dsd = scaled_enorm(trust_state->diag, state->dx_sd); + state->norm_Dgn = -1.0; /* computed later if needed */ + + return GSL_SUCCESS; +} + +/* +dogleg_step() + Calculate a new step vector +*/ + +static int +dogleg_step(const void * vtrust_state, const double delta, + gsl_vector * dx, void * vstate) +{ + const gsl_multilarge_nlinear_trust_state *trust_state = + (const gsl_multilarge_nlinear_trust_state *) vtrust_state; + dogleg_state_t *state = (dogleg_state_t *) vstate; + + if (state->norm_Dsd >= delta) + { + /* steepest descent step is outside trust region; + * truncate steepest descent step to trust region boundary */ + gsl_vector_memcpy(dx, state->dx_sd); + gsl_vector_scale(dx, delta / state->norm_Dsd); + } + else + { + /* compute Gauss-Newton step if needed */ + if (state->norm_Dgn < 0.0) + { + int status = dogleg_calc_gn(trust_state, state->dx_gn); + + if (status) + return status; + + /* compute || D dx_gn || */ + state->norm_Dgn = scaled_enorm(trust_state->diag, state->dx_gn); + } + + if (state->norm_Dgn <= delta) + { + /* Gauss-Newton step is inside trust region, use it as final step + * since it is the global minimizer of the quadratic model function */ + gsl_vector_memcpy(dx, state->dx_gn); + } + else + { + /* Gauss-Newton step is outside trust region, but steepest + * descent is inside; use dogleg step */ + + double beta = dogleg_beta(1.0, delta, trust_state->diag, state); + + /* compute: workp1 = dx_gn - dx_sd */ + scaled_addition(1.0, state->dx_gn, -1.0, state->dx_sd, state->workp1); + + /* dx = dx_sd + beta*(dx_gn - dx_sd) */ + scaled_addition(beta, state->workp1, 1.0, state->dx_sd, dx); + } + } + + return GSL_SUCCESS; +} + +/* +dogleg_double_step() + Calculate a new step with double dogleg method. Based on +section 3 of [2] +*/ + +static int +dogleg_double_step(const void * vtrust_state, const double delta, + gsl_vector * dx, void * vstate) +{ + const double alpha_fac = 0.8; /* recommended value from Dennis and Mei */ + const gsl_multilarge_nlinear_trust_state *trust_state = + (const gsl_multilarge_nlinear_trust_state *) vtrust_state; + dogleg_state_t *state = (dogleg_state_t *) vstate; + + if (state->norm_Dsd >= delta) + { + /* steepest descent step is outside trust region; + * truncate steepest descent step to trust region boundary */ + gsl_vector_memcpy(dx, state->dx_sd); + gsl_vector_scale(dx, delta / state->norm_Dsd); + } + else + { + /* compute Gauss-Newton step if needed */ + if (state->norm_Dgn < 0.0) + { + int status = dogleg_calc_gn(trust_state, state->dx_gn); + + if (status) + return status; + + /* compute || D dx_gn || */ + state->norm_Dgn = scaled_enorm(trust_state->diag, state->dx_gn); + } + + if (state->norm_Dgn <= delta) + { + /* Gauss-Newton step is inside trust region, use it as final step + * since it is the global minimizer of the quadratic model function */ + gsl_vector_memcpy(dx, state->dx_gn); + } + else + { + double t, u, v, c; + + /* compute: u = ||D^{-1} g||^2 / ||J D^{-2} g||^2 */ + v = state->norm_Dinvg / state->norm_JDinv2g; + u = v * v; + + /* compute: v = g^T dx_gn */ + gsl_blas_ddot(trust_state->g, state->dx_gn, &v); + + /* compute: c = ||D^{-1} g||^4 / (||J D^{-2} g||^2 * |g^T dx_gn|) */ + c = u * (state->norm_Dinvg / fabs(v)) * state->norm_Dinvg; + + /* compute: t = 1 - alpha_fac*(1-c) */ + t = 1.0 - alpha_fac*(1.0 - c); + + if (t * state->norm_Dgn <= delta) + { + /* set dx = (delta / ||D dx_gn||) dx_gn */ + gsl_vector_memcpy(dx, state->dx_gn); + gsl_vector_scale(dx, delta / state->norm_Dgn); + } + else + { + /* Cauchy point is inside, Gauss-Newton is outside trust region; + * use double dogleg step */ + + double beta = dogleg_beta(t, delta, trust_state->diag, state); + + /* compute: workp1 = t*dx_gn - dx_sd */ + scaled_addition(t, state->dx_gn, -1.0, state->dx_sd, state->workp1); + + /* dx = dx_sd + beta*(t*dx_gn - dx_sd) */ + scaled_addition(beta, state->workp1, 1.0, state->dx_sd, dx); + } + } + } + + return GSL_SUCCESS; +} + +static int +dogleg_preduction(const void * vtrust_state, const gsl_vector * dx, + double * pred, void * vstate) +{ + const gsl_multilarge_nlinear_trust_state *trust_state = + (const gsl_multilarge_nlinear_trust_state *) vtrust_state; + dogleg_state_t *state = (dogleg_state_t *) vstate; + + *pred = quadratic_preduction(trust_state, dx, state->workn); + + return GSL_SUCCESS; +} + +/* +dogleg_calc_gn() + Calculate Gauss-Newton step by solving + +J^T J dx_gn = -J^T f + +Inputs: trust_state - trust state variables + dx - (output) Gauss-Newton step vector + +Return: success/error +*/ + +static int +dogleg_calc_gn(const gsl_multilarge_nlinear_trust_state * trust_state, gsl_vector * dx) +{ + int status; + const gsl_multilarge_nlinear_parameters *params = trust_state->params; + + /* initialize linear least squares solver */ + status = (params->solver->init)(trust_state, trust_state->solver_state); + if (status) + return status; + + /* prepare the linear solver to compute Gauss-Newton step */ + status = (params->solver->presolve)(0.0, trust_state, trust_state->solver_state); + if (status) + return status; + + /* solve: J dx_gn = -f for Gauss-Newton step */ + status = (params->solver->solve)(trust_state->g, + dx, + trust_state, + trust_state->solver_state); + if (status) + return status; + + return GSL_SUCCESS; +} + +/* +dogleg_beta() + This function finds beta in [0,1] such that the step + +dx = dx_sd + beta*(t*dx_gn - dx_sd) + +has norm + +||D dx|| = delta + +beta is the positive root of the quadratic: + +a beta^2 + b beta + c = 0 + +with + +a = ||D(t*dx_gn - dx_sd)||^2 +b = 2 dx_sd^T D^T D (t*dx_gn - dx_sd) +c = ||D dx_sd||^2 - delta^2 + +Inputs: t - amount of Gauss-Newton step to use for dogleg + (= 1 for classical dogleg, <= 1 for double dogleg) + delta - trust region radius + diag - diag(D) scaling matrix + state - workspace +*/ + +static double +dogleg_beta(const double t, const double delta, + const gsl_vector * diag, dogleg_state_t * state) +{ + double beta; + double a, b, c; + + /* compute: workp1 = t*dx_gn - dx_sd */ + scaled_addition(t, state->dx_gn, -1.0, state->dx_sd, state->workp1); + + /* a = || D (t*dx_gn - dx_sd) ||^2 */ + a = scaled_enorm(diag, state->workp1); + a *= a; + + /* workp1 = D^T D (t*dx_gn - dx_sd) */ + gsl_vector_mul(state->workp1, diag); + gsl_vector_mul(state->workp1, diag); + + /* b = 2 dx_sd^T D^T D (t*dx_gn - dx-sd) */ + gsl_blas_ddot(state->dx_sd, state->workp1, &b); + b *= 2.0; + + /* c = || D dx_sd ||^2 - delta^2 = (||D dx_sd|| + delta) (||D dx_sd|| - delta) */ + c = (state->norm_Dsd + delta) * (state->norm_Dsd - delta); + + if (b > 0.0) + { + beta = (-2.0 * c) / (b + sqrt(b*b - 4.0*a*c)); + } + else + { + beta = (-b + sqrt(b*b - 4.0*a*c)) / (2.0 * a); + } + + return beta; +} + +static const gsl_multilarge_nlinear_trs dogleg_type = +{ + "dogleg", + dogleg_alloc, + dogleg_init, + dogleg_preloop, + dogleg_step, + dogleg_preduction, + dogleg_free +}; + +const gsl_multilarge_nlinear_trs *gsl_multilarge_nlinear_trs_dogleg = &dogleg_type; + +static const gsl_multilarge_nlinear_trs ddogleg_type = +{ + "double-dogleg", + dogleg_alloc, + dogleg_init, + dogleg_preloop, + dogleg_double_step, + dogleg_preduction, + dogleg_free +}; + +const gsl_multilarge_nlinear_trs *gsl_multilarge_nlinear_trs_ddogleg = &ddogleg_type; diff --git a/gsl-2.5/multilarge_nlinear/dogleg.lo b/gsl-2.5/multilarge_nlinear/dogleg.lo new file mode 100644 index 00000000..8d92cd28 --- /dev/null +++ b/gsl-2.5/multilarge_nlinear/dogleg.lo @@ -0,0 +1,12 @@ +# dogleg.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/dogleg.o' + +# Name of the non-PIC object +non_pic_object='dogleg.o' + diff --git a/gsl-2.5/multilarge_nlinear/dummy.c b/gsl-2.5/multilarge_nlinear/dummy.c new file mode 100644 index 00000000..fb9ba844 --- /dev/null +++ b/gsl-2.5/multilarge_nlinear/dummy.c @@ -0,0 +1,113 @@ +/* multilarge_nlinear/dummy.c + * + * Copyright (C) 2016 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* dummy linear solver */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +static void *dummy_alloc (const size_t n, const size_t p); +static int dummy_init(const void * vtrust_state, void * vstate); +static int dummy_presolve(const double mu, const void * vtrust_state, void * vstate); +static int dummy_solve(const gsl_vector * g, gsl_vector *x, + const void * vtrust_state, void *vstate); +static int dummy_rcond(double * rcond, const gsl_matrix * JTJ, void * vstate); +static int dummy_covar(const gsl_matrix * JTJ, gsl_matrix * covar, void * vstate); + +static void * +dummy_alloc (const size_t n, const size_t p) +{ + (void) n; + (void) p; + return NULL; +} + +static void +dummy_free(void *vstate) +{ + (void) vstate; +} + +static int +dummy_init(const void * vtrust_state, void * vstate) +{ + (void) vtrust_state; + (void) vstate; + return GSL_SUCCESS; +} + +static int +dummy_presolve(const double mu, const void * vtrust_state, void * vstate) +{ + (void) mu; + (void) vtrust_state; + (void) vstate; + return GSL_SUCCESS; +} + +static int +dummy_solve(const gsl_vector * g, gsl_vector *x, + const void * vtrust_state, void *vstate) +{ + (void) g; + (void) x; + (void) vtrust_state; + (void) vstate; + return GSL_SUCCESS; +} + +static int +dummy_rcond(double * rcond, const gsl_matrix * JTJ, void * vstate) +{ + (void) vstate; + (void) rcond; + (void) JTJ; + *rcond = 0.0; + return GSL_SUCCESS; +} + +static int +dummy_covar(const gsl_matrix * JTJ, gsl_matrix * covar, void * vstate) +{ + (void) vstate; + (void) JTJ; + gsl_matrix_set_zero(covar); + return GSL_SUCCESS; +} + +static const gsl_multilarge_nlinear_solver dummy_type = +{ + "dummy", + dummy_alloc, + dummy_init, + dummy_presolve, + dummy_solve, + dummy_rcond, + dummy_covar, + dummy_free +}; + +const gsl_multilarge_nlinear_solver *gsl_multilarge_nlinear_solver_none = &dummy_type; diff --git a/gsl-2.5/multilarge_nlinear/dummy.lo b/gsl-2.5/multilarge_nlinear/dummy.lo new file mode 100644 index 00000000..01f0dbec --- /dev/null +++ b/gsl-2.5/multilarge_nlinear/dummy.lo @@ -0,0 +1,12 @@ +# dummy.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/dummy.o' + +# Name of the non-PIC object +non_pic_object='dummy.o' + diff --git a/gsl-2.5/multilarge_nlinear/fdf.c b/gsl-2.5/multilarge_nlinear/fdf.c new file mode 100644 index 00000000..9fe3a23c --- /dev/null +++ b/gsl-2.5/multilarge_nlinear/fdf.c @@ -0,0 +1,564 @@ +/* multilarge_nlinear/fdf.c + * + * Copyright (C) 2015, 2016 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include +#include + +gsl_multilarge_nlinear_workspace * +gsl_multilarge_nlinear_alloc (const gsl_multilarge_nlinear_type * T, + const gsl_multilarge_nlinear_parameters * params, + const size_t n, const size_t p) +{ + gsl_multilarge_nlinear_workspace * w; + + if (n < p) + { + GSL_ERROR_VAL ("insufficient data points, n < p", GSL_EINVAL, 0); + } + + w = calloc (1, sizeof (gsl_multilarge_nlinear_workspace)); + if (w == 0) + { + GSL_ERROR_VAL ("failed to allocate space for workspace", + GSL_ENOMEM, 0); + } + + w->n = n; + w->p = p; + w->type = T; + w->fdf = NULL; + w->niter = 0; + w->params = *params; + + /* the cgst method uses its own built-in linear solver */ + if (w->params.trs == gsl_multilarge_nlinear_trs_cgst) + { + w->params.solver = gsl_multilarge_nlinear_solver_none; + } + + w->x = gsl_vector_calloc (p); + if (w->x == 0) + { + gsl_multilarge_nlinear_free (w); + GSL_ERROR_VAL ("failed to allocate space for x", GSL_ENOMEM, 0); + } + + w->f = gsl_vector_calloc (n); + if (w->f == 0) + { + gsl_multilarge_nlinear_free (w); + GSL_ERROR_VAL ("failed to allocate space for f", GSL_ENOMEM, 0); + } + + w->dx = gsl_vector_calloc (p); + if (w->dx == 0) + { + gsl_multilarge_nlinear_free (w); + GSL_ERROR_VAL ("failed to allocate space for dx", GSL_ENOMEM, 0); + } + + w->g = gsl_vector_alloc (p); + if (w->g == 0) + { + gsl_multilarge_nlinear_free (w); + GSL_ERROR_VAL ("failed to allocate space for g", GSL_ENOMEM, 0); + } + + if (w->params.solver == gsl_multilarge_nlinear_solver_cholesky) + { + w->JTJ = gsl_matrix_alloc (p, p); + if (w->JTJ == 0) + { + gsl_multilarge_nlinear_free (w); + GSL_ERROR_VAL ("failed to allocate space for JTJ", GSL_ENOMEM, 0); + } + } + + w->sqrt_wts_work = gsl_vector_calloc (n); + if (w->sqrt_wts_work == 0) + { + gsl_multilarge_nlinear_free (w); + GSL_ERROR_VAL ("failed to allocate space for weights", GSL_ENOMEM, 0); + } + + w->state = (T->alloc)(&(w->params), n, p); + if (w->state == 0) + { + gsl_multilarge_nlinear_free (w); + GSL_ERROR_VAL ("failed to allocate space for state", GSL_ENOMEM, 0); + } + + return w; +} + +void +gsl_multilarge_nlinear_free (gsl_multilarge_nlinear_workspace * w) +{ + RETURN_IF_NULL (w); + + if (w->state) + (w->type->free) (w->state); + + if (w->dx) + gsl_vector_free (w->dx); + + if (w->x) + gsl_vector_free (w->x); + + if (w->f) + gsl_vector_free (w->f); + + if (w->sqrt_wts_work) + gsl_vector_free (w->sqrt_wts_work); + + if (w->g) + gsl_vector_free (w->g); + + if (w->JTJ) + gsl_matrix_free (w->JTJ); + + free (w); +} + +gsl_multilarge_nlinear_parameters +gsl_multilarge_nlinear_default_parameters(void) +{ + gsl_multilarge_nlinear_parameters params; + + params.trs = gsl_multilarge_nlinear_trs_lm; + params.scale = gsl_multilarge_nlinear_scale_more; + params.solver = gsl_multilarge_nlinear_solver_cholesky; + params.fdtype = GSL_MULTILARGE_NLINEAR_FWDIFF; + params.factor_up = 3.0; + params.factor_down = 2.0; + params.avmax = 0.75; + params.h_df = GSL_SQRT_DBL_EPSILON; + params.h_fvv = 0.01; + params.max_iter = 0; + params.tol = 1.0e-6; + + return params; +} + +int +gsl_multilarge_nlinear_init (const gsl_vector * x, + gsl_multilarge_nlinear_fdf * fdf, + gsl_multilarge_nlinear_workspace * w) +{ + return gsl_multilarge_nlinear_winit(x, NULL, fdf, w); +} + +int +gsl_multilarge_nlinear_winit (const gsl_vector * x, + const gsl_vector * wts, + gsl_multilarge_nlinear_fdf * fdf, + gsl_multilarge_nlinear_workspace * w) +{ + const size_t n = w->f->size; + + if (n != fdf->n) + { + GSL_ERROR ("function size does not match workspace", GSL_EBADLEN); + } + else if (w->x->size != x->size) + { + GSL_ERROR ("vector length does not match workspace", GSL_EBADLEN); + } + else if (wts != NULL && n != wts->size) + { + GSL_ERROR ("weight vector length does not match workspace", GSL_EBADLEN); + } + else + { + size_t i; + + /* initialize counters for function and Jacobian evaluations */ + fdf->nevalf = 0; + fdf->nevaldfu = 0; + fdf->nevaldf2 = 0; + fdf->nevalfvv = 0; + + w->fdf = fdf; + gsl_vector_memcpy(w->x, x); + w->niter = 0; + + if (wts) + { + w->sqrt_wts = w->sqrt_wts_work; + + for (i = 0; i < n; ++i) + { + double wi = gsl_vector_get(wts, i); + gsl_vector_set(w->sqrt_wts, i, sqrt(wi)); + } + } + else + { + w->sqrt_wts = NULL; + } + + return (w->type->init) (w->state, w->sqrt_wts, w->fdf, + w->x, w->f, w->g, w->JTJ); + } +} + +int +gsl_multilarge_nlinear_iterate (gsl_multilarge_nlinear_workspace * w) +{ + int status = + (w->type->iterate) (w->state, w->sqrt_wts, w->fdf, + w->x, w->f, w->g, w->JTJ, w->dx); + + w->niter++; + + return status; +} + +double +gsl_multilarge_nlinear_avratio (const gsl_multilarge_nlinear_workspace * w) +{ + return (w->type->avratio) (w->state); +} + +int +gsl_multilarge_nlinear_rcond (double * rcond, const gsl_multilarge_nlinear_workspace * w) +{ + int status = (w->type->rcond) (rcond, w->JTJ, w->state); + return status; +} + +int +gsl_multilarge_nlinear_covar (gsl_matrix * covar, gsl_multilarge_nlinear_workspace * w) +{ + if (covar->size1 != covar->size2) + { + GSL_ERROR ("covariance matrix must be square", GSL_ENOTSQR); + } + else if (covar->size1 != w->p) + { + GSL_ERROR ("covariance matrix does not match workspace", GSL_EBADLEN); + } + else + { + int status = (w->type->covar) (w->JTJ, covar, w->state); + return status; + } +} + +/* +gsl_multilarge_nlinear_driver() + Iterate the nonlinear least squares solver until completion + +Inputs: maxiter - maximum iterations to allow + xtol - tolerance in step x + gtol - tolerance in gradient + ftol - tolerance in ||f|| + callback - callback function to call each iteration + callback_params - parameters to pass to callback function + info - (output) info flag on why iteration terminated + 1 = stopped due to small step size ||dx| + 2 = stopped due to small gradient + 3 = stopped due to small change in f + GSL_ETOLX = ||dx|| has converged to within machine + precision (and xtol is too small) + GSL_ETOLG = ||g||_inf is smaller than machine + precision (gtol is too small) + GSL_ETOLF = change in ||f|| is smaller than machine + precision (ftol is too small) + w - workspace + +Return: +GSL_SUCCESS if converged +GSL_MAXITER if maxiter exceeded without converging +GSL_ENOPROG if no accepted step found on first iteration +*/ + +int +gsl_multilarge_nlinear_driver (const size_t maxiter, + const double xtol, + const double gtol, + const double ftol, + void (*callback)(const size_t iter, void *params, + const gsl_multilarge_nlinear_workspace *w), + void *callback_params, + int *info, + gsl_multilarge_nlinear_workspace * w) +{ + int status; + size_t iter = 0; + + /* call user callback function prior to any iterations + * with initial system state */ + if (callback) + callback(iter, callback_params, w); + + do + { + status = gsl_multilarge_nlinear_iterate (w); + + /* + * If the solver reports no progress on the first iteration, + * then it didn't find a single step to reduce the + * cost function and more iterations won't help so return. + * + * If we get a no progress flag on subsequent iterations, + * it means we did find a good step in a previous iteration, + * so continue iterating since the solver has now reset + * mu to its initial value. + */ + if (status == GSL_ENOPROG && iter == 0) + { + *info = status; + return GSL_EMAXITER; + } + + ++iter; + + if (callback) + callback(iter, callback_params, w); + + /* test for convergence */ + status = gsl_multilarge_nlinear_test(xtol, gtol, ftol, info, w); + } + while (status == GSL_CONTINUE && iter < maxiter); + + /* + * the following error codes mean that the solution has converged + * to within machine precision, so record the error code in info + * and return success + */ + if (status == GSL_ETOLF || status == GSL_ETOLX || status == GSL_ETOLG) + { + *info = status; + status = GSL_SUCCESS; + } + + /* check if max iterations reached */ + if (iter >= maxiter && status != GSL_SUCCESS) + status = GSL_EMAXITER; + + return status; +} /* gsl_multilarge_nlinear_driver() */ + +const char * +gsl_multilarge_nlinear_name (const gsl_multilarge_nlinear_workspace * w) +{ + return w->type->name; +} + +gsl_vector * +gsl_multilarge_nlinear_position (const gsl_multilarge_nlinear_workspace * w) +{ + return w->x; +} + +gsl_vector * +gsl_multilarge_nlinear_residual (const gsl_multilarge_nlinear_workspace * w) +{ + return w->f; +} + +gsl_vector * +gsl_multilarge_nlinear_step (const gsl_multilarge_nlinear_workspace * w) +{ + return w->dx; +} + +size_t +gsl_multilarge_nlinear_niter (const gsl_multilarge_nlinear_workspace * w) +{ + return w->niter; +} + +const char * +gsl_multilarge_nlinear_trs_name (const gsl_multilarge_nlinear_workspace * w) +{ + return w->params.trs->name; +} + +/* +gsl_multilarge_nlinear_eval_f() + Compute residual vector y with user callback function, and apply +weighting transform if given: + +y~ = sqrt(W) y + +Inputs: fdf - callback function + x - model parameters + swts - weight matrix sqrt(W) = sqrt(diag(w1,w2,...,wn)) + set to NULL for unweighted fit + y - (output) (weighted) residual vector + y_i = sqrt(w_i) f_i where f_i is unweighted residual +*/ + +int +gsl_multilarge_nlinear_eval_f(gsl_multilarge_nlinear_fdf *fdf, + const gsl_vector *x, + const gsl_vector *swts, + gsl_vector *y) +{ + int s = ((*((fdf)->f)) (x, fdf->params, y)); + + ++(fdf->nevalf); + + /* y <- sqrt(W) y */ + if (swts) + gsl_vector_mul(y, swts); + + return s; +} + +/* +gsl_multilarge_nlinear_eval_df() + Compute Jacobian matrix-vector product: + +v = J * u + +or + +v = J^T u + +Inputs: TransJ - use J or J^T + x - model parameters + f - residual vector f(x) + u - input vector u + swts - weight matrix W = diag(w1,w2,...,wn) + set to NULL for unweighted fit + h - finite difference step size + fdtype - finite difference method + fdf - callback function + v - (output) vector v + JTJ - (output) matrix J^T J + work - workspace for finite difference, size n +*/ + +int +gsl_multilarge_nlinear_eval_df(const CBLAS_TRANSPOSE_t TransJ, + const gsl_vector *x, + const gsl_vector *f, + const gsl_vector *u, + const gsl_vector *swts, + const double h, + const gsl_multilarge_nlinear_fdtype fdtype, + gsl_multilarge_nlinear_fdf *fdf, + gsl_vector *v, + gsl_matrix *JTJ, + gsl_vector *work) +{ + const size_t n = fdf->n; + const size_t p = fdf->p; + + if (u != NULL && ((TransJ == CblasNoTrans && u->size != p) || + (TransJ == CblasTrans && u->size != n))) + { + GSL_ERROR("u vector has wrong size", GSL_EBADLEN); + } + else if (v != NULL && ((TransJ == CblasNoTrans && v->size != n) || + (TransJ == CblasTrans && v->size != p))) + { + GSL_ERROR("v vector has wrong size", GSL_EBADLEN); + } + else if (JTJ != NULL && ((JTJ->size1 != p) || (JTJ->size2 != p))) + { + GSL_ERROR("JTJ matrix has wrong size", GSL_EBADLEN); + } + else + { + int status; + + if (fdf->df) + { + /* call user-supplied function */ + status = ((*((fdf)->df)) (TransJ, x, u, fdf->params, v, JTJ)); + + if (v) + ++(fdf->nevaldfu); + + if (JTJ) + ++(fdf->nevaldf2); + } + else + { +#if 0 + /* use finite difference Jacobian approximation */ + status = gsl_multilarge_nlinear_df(h, fdtype, x, swts, fdf, f, df, work); +#endif + } + + return status; + } +} + +/* +gsl_multilarge_nlinear_eval_fvv() + Compute second direction derivative vector yvv with user +callback function, and apply weighting transform if given: + +yvv~ = sqrt(W) yvv + +Inputs: h - step size for finite difference, if needed + x - model parameters, size p + v - unscaled geodesic velocity vector, size p + f - residual vector f(x), size n + swts - weight matrix sqrt(W) = sqrt(diag(w1,w2,...,wn)) + set to NULL for unweighted fit + fdf - callback function + yvv - (output) (weighted) second directional derivative vector + yvv_i = sqrt(w_i) fvv_i where f_i is unweighted + work - workspace, size p +*/ + +int +gsl_multilarge_nlinear_eval_fvv(const double h, + const gsl_vector *x, + const gsl_vector *v, + const gsl_vector *f, + const gsl_vector *swts, + gsl_multilarge_nlinear_fdf *fdf, + gsl_vector *yvv, + gsl_vector *work) +{ + int status; + + if (fdf->fvv != NULL) + { + /* call user-supplied function */ + status = ((*((fdf)->fvv)) (x, v, fdf->params, yvv)); + ++(fdf->nevalfvv); + } + else + { +#if 0 + /* use finite difference approximation */ + status = gsl_multilarge_nlinear_fdfvv(h, x, v, f, J, + swts, fdf, yvv, work); +#endif + } + + /* yvv <- sqrt(W) yvv */ + if (swts) + gsl_vector_mul(yvv, swts); + + return status; +} diff --git a/gsl-2.5/multilarge_nlinear/fdf.lo b/gsl-2.5/multilarge_nlinear/fdf.lo new file mode 100644 index 00000000..26ab9754 --- /dev/null +++ b/gsl-2.5/multilarge_nlinear/fdf.lo @@ -0,0 +1,12 @@ +# fdf.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/fdf.o' + +# Name of the non-PIC object +non_pic_object='fdf.o' + diff --git a/gsl-2.5/multilarge_nlinear/gsl_multilarge_nlinear.h b/gsl-2.5/multilarge_nlinear/gsl_multilarge_nlinear.h new file mode 100644 index 00000000..51e131b3 --- /dev/null +++ b/gsl-2.5/multilarge_nlinear/gsl_multilarge_nlinear.h @@ -0,0 +1,313 @@ +/* multilarge_nlinear/gsl_multilarge_nlinear.h + * + * Copyright (C) 2015, 2016 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_MULTILARGE_NLINEAR_H__ +#define __GSL_MULTILARGE_NLINEAR_H__ + +#include +#include +#include +#include +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +typedef enum +{ + GSL_MULTILARGE_NLINEAR_FWDIFF, + GSL_MULTILARGE_NLINEAR_CTRDIFF +} gsl_multilarge_nlinear_fdtype; + +/* Definition of vector-valued functions and gradient with parameters + based on gsl_vector */ + +typedef struct +{ + int (* f) (const gsl_vector * x, void * params, gsl_vector * f); + int (* df) (CBLAS_TRANSPOSE_t TransJ, const gsl_vector * x, + const gsl_vector * u, void * params, gsl_vector * v, + gsl_matrix * JTJ); + int (* fvv) (const gsl_vector * x, const gsl_vector * v, void * params, + gsl_vector * fvv); + size_t n; /* number of functions */ + size_t p; /* number of independent variables */ + void * params; /* user parameters */ + size_t nevalf; /* number of function evaluations */ + size_t nevaldfu; /* number of Jacobian matrix-vector evaluations */ + size_t nevaldf2; /* number of Jacobian J^T J evaluations */ + size_t nevalfvv; /* number of fvv evaluations */ +} gsl_multilarge_nlinear_fdf; + +/* trust region subproblem method */ +typedef struct +{ + const char *name; + void * (*alloc) (const void * params, const size_t n, const size_t p); + int (*init) (const void * vtrust_state, void * vstate); + int (*preloop) (const void * vtrust_state, void * vstate); + int (*step) (const void * vtrust_state, const double delta, + gsl_vector * dx, void * vstate); + int (*preduction) (const void * vtrust_state, const gsl_vector * dx, + double * pred, void * vstate); + void (*free) (void * vstate); +} gsl_multilarge_nlinear_trs; + +/* scaling matrix specification */ +typedef struct +{ + const char *name; + int (*init) (const gsl_matrix * JTJ, gsl_vector * diag); + int (*update) (const gsl_matrix * JTJ, gsl_vector * diag); +} gsl_multilarge_nlinear_scale; + +/* + * linear least squares solvers - there are three steps to + * solving a least squares problem using a direct method: + * + * 1. init: called once per iteration when a new Jacobian matrix + * is required; form normal equations matrix J^T J + * 2. presolve: called each time a new LM parameter value mu is available; + * used for cholesky method in order to factor + * the (J^T J + mu D^T D) matrix + * 3. solve: solve the least square system for a given rhs + */ +typedef struct +{ + const char *name; + void * (*alloc) (const size_t n, const size_t p); + int (*init) (const void * vtrust_state, void * vstate); + int (*presolve) (const double mu, const void * vtrust_state, void * vstate); + int (*solve) (const gsl_vector * g, gsl_vector * x, + const void * vtrust_state, void * vstate); + int (*rcond) (double * rcond, const gsl_matrix * JTJ, void * vstate); + int (*covar) (const gsl_matrix * JTJ, gsl_matrix * covar, void * vstate); + void (*free) (void * vstate); +} gsl_multilarge_nlinear_solver; + +/* tunable parameters */ +typedef struct +{ + const gsl_multilarge_nlinear_trs *trs; /* trust region subproblem method */ + const gsl_multilarge_nlinear_scale *scale; /* scaling method */ + const gsl_multilarge_nlinear_solver *solver; /* solver method */ + gsl_multilarge_nlinear_fdtype fdtype; /* finite difference method */ + double factor_up; /* factor for increasing trust radius */ + double factor_down; /* factor for decreasing trust radius */ + double avmax; /* max allowed |a|/|v| */ + double h_df; /* step size for finite difference Jacobian */ + double h_fvv; /* step size for finite difference fvv */ + size_t max_iter; /* maximum iterations for trs method */ + double tol; /* tolerance for solving trs */ +} gsl_multilarge_nlinear_parameters; + +typedef struct +{ + const char *name; + void * (*alloc) (const gsl_multilarge_nlinear_parameters * params, + const size_t n, const size_t p); + int (*init) (void * state, const gsl_vector * wts, + gsl_multilarge_nlinear_fdf * fdf, const gsl_vector * x, + gsl_vector * f, gsl_vector * g, gsl_matrix * JTJ); + int (*iterate) (void * state, const gsl_vector * wts, + gsl_multilarge_nlinear_fdf * fdf, gsl_vector * x, + gsl_vector * f, gsl_vector * g, gsl_matrix * JTJ, + gsl_vector * dx); + int (*rcond) (double * rcond, const gsl_matrix * JTJ, void * state); + int (*covar) (const gsl_matrix * JTJ, gsl_matrix * covar, void * state); + double (*avratio) (void * state); + void (*free) (void * state); +} gsl_multilarge_nlinear_type; + +/* current state passed to low-level trust region algorithms */ +typedef struct +{ + const gsl_vector * x; /* parameter values x */ + const gsl_vector * f; /* residual vector f(x) */ + const gsl_vector * g; /* gradient J^T f */ + const gsl_matrix * JTJ; /* matrix J^T J */ + const gsl_vector * diag; /* scaling matrix D */ + const gsl_vector * sqrt_wts; /* sqrt(diag(W)) or NULL for unweighted */ + const double *mu; /* LM parameter */ + const gsl_multilarge_nlinear_parameters * params; + void *solver_state; /* workspace for direct least squares solver */ + gsl_multilarge_nlinear_fdf * fdf; + double *avratio; /* |a| / |v| */ +} gsl_multilarge_nlinear_trust_state; + +typedef struct +{ + const gsl_multilarge_nlinear_type * type; + gsl_multilarge_nlinear_fdf * fdf ; + gsl_vector * x; /* parameter values x */ + gsl_vector * f; /* residual vector f(x) */ + gsl_vector * dx; /* step dx */ + gsl_vector * g; /* gradient J^T f */ + gsl_matrix * JTJ; /* matrix J^T J */ + gsl_vector * sqrt_wts_work; /* sqrt(W) */ + gsl_vector * sqrt_wts; /* ptr to sqrt_wts_work, or NULL if not using weights */ + size_t n; /* number of residuals */ + size_t p; /* number of parameters */ + size_t niter; /* number of iterations performed */ + gsl_multilarge_nlinear_parameters params; + void *state; +} gsl_multilarge_nlinear_workspace; + +gsl_multilarge_nlinear_workspace * +gsl_multilarge_nlinear_alloc (const gsl_multilarge_nlinear_type * T, + const gsl_multilarge_nlinear_parameters * params, + size_t n, size_t p); + +void gsl_multilarge_nlinear_free (gsl_multilarge_nlinear_workspace * w); + +gsl_multilarge_nlinear_parameters gsl_multilarge_nlinear_default_parameters(void); + +int +gsl_multilarge_nlinear_init (const gsl_vector * x, + gsl_multilarge_nlinear_fdf * fdf, + gsl_multilarge_nlinear_workspace * w); + +int gsl_multilarge_nlinear_winit (const gsl_vector * x, + const gsl_vector * wts, + gsl_multilarge_nlinear_fdf * fdf, + gsl_multilarge_nlinear_workspace * w); + +int +gsl_multilarge_nlinear_iterate (gsl_multilarge_nlinear_workspace * w); + +double +gsl_multilarge_nlinear_avratio (const gsl_multilarge_nlinear_workspace * w); + +int +gsl_multilarge_nlinear_rcond (double * rcond, const gsl_multilarge_nlinear_workspace * w); + +int +gsl_multilarge_nlinear_covar (gsl_matrix * covar, gsl_multilarge_nlinear_workspace * w); + +int +gsl_multilarge_nlinear_driver (const size_t maxiter, + const double xtol, + const double gtol, + const double ftol, + void (*callback)(const size_t iter, void *params, + const gsl_multilarge_nlinear_workspace *w), + void *callback_params, + int *info, + gsl_multilarge_nlinear_workspace * w); + +const char * +gsl_multilarge_nlinear_name (const gsl_multilarge_nlinear_workspace * w); + +gsl_vector * +gsl_multilarge_nlinear_position (const gsl_multilarge_nlinear_workspace * w); + +gsl_vector * +gsl_multilarge_nlinear_residual (const gsl_multilarge_nlinear_workspace * w); + +gsl_vector * +gsl_multilarge_nlinear_step (const gsl_multilarge_nlinear_workspace * w); + +size_t +gsl_multilarge_nlinear_niter (const gsl_multilarge_nlinear_workspace * w); + +const char * +gsl_multilarge_nlinear_trs_name (const gsl_multilarge_nlinear_workspace * w); + +int gsl_multilarge_nlinear_eval_f(gsl_multilarge_nlinear_fdf *fdf, + const gsl_vector *x, + const gsl_vector *swts, + gsl_vector *y); + +int +gsl_multilarge_nlinear_eval_df(const CBLAS_TRANSPOSE_t TransJ, + const gsl_vector *x, + const gsl_vector *f, + const gsl_vector *u, + const gsl_vector *swts, + const double h, + const gsl_multilarge_nlinear_fdtype fdtype, + gsl_multilarge_nlinear_fdf *fdf, + gsl_vector *v, + gsl_matrix *JTJ, + gsl_vector *work); + +int +gsl_multilarge_nlinear_eval_fvv(const double h, + const gsl_vector *x, + const gsl_vector *v, + const gsl_vector *f, + const gsl_vector *swts, + gsl_multilarge_nlinear_fdf *fdf, + gsl_vector *yvv, + gsl_vector *work); + +/* convergence.c */ +int +gsl_multilarge_nlinear_test (const double xtol, const double gtol, + const double ftol, int *info, + const gsl_multilarge_nlinear_workspace * w); + +/* fdjac.c */ +int +gsl_multilarge_nlinear_df(const double h, const gsl_multilarge_nlinear_fdtype fdtype, + const gsl_vector *x, const gsl_vector *wts, + gsl_multilarge_nlinear_fdf *fdf, + const gsl_vector *f, gsl_matrix *J, gsl_vector *work); + +/* fdfvv.c */ +int +gsl_multilarge_nlinear_fdfvv(const double h, const gsl_vector *x, const gsl_vector *v, + const gsl_vector *f, const gsl_matrix *J, + const gsl_vector *swts, gsl_multilarge_nlinear_fdf *fdf, + gsl_vector *fvv, gsl_vector *work); + +/* top-level algorithms */ +GSL_VAR const gsl_multilarge_nlinear_type * gsl_multilarge_nlinear_trust; + +/* trust region subproblem methods */ +GSL_VAR const gsl_multilarge_nlinear_trs * gsl_multilarge_nlinear_trs_lm; +GSL_VAR const gsl_multilarge_nlinear_trs * gsl_multilarge_nlinear_trs_lmaccel; +GSL_VAR const gsl_multilarge_nlinear_trs * gsl_multilarge_nlinear_trs_dogleg; +GSL_VAR const gsl_multilarge_nlinear_trs * gsl_multilarge_nlinear_trs_ddogleg; +GSL_VAR const gsl_multilarge_nlinear_trs * gsl_multilarge_nlinear_trs_subspace2D; +GSL_VAR const gsl_multilarge_nlinear_trs * gsl_multilarge_nlinear_trs_cgst; + +/* scaling matrix strategies */ +GSL_VAR const gsl_multilarge_nlinear_scale * gsl_multilarge_nlinear_scale_levenberg; +GSL_VAR const gsl_multilarge_nlinear_scale * gsl_multilarge_nlinear_scale_marquardt; +GSL_VAR const gsl_multilarge_nlinear_scale * gsl_multilarge_nlinear_scale_more; + +/* linear solvers */ +GSL_VAR const gsl_multilarge_nlinear_solver * gsl_multilarge_nlinear_solver_cholesky; +GSL_VAR const gsl_multilarge_nlinear_solver * gsl_multilarge_nlinear_solver_none; + +__END_DECLS + +#endif /* __GSL_MULTILARGE_NLINEAR_H__ */ diff --git a/gsl-2.5/multilarge_nlinear/libgslmultilarge_nlinear.la b/gsl-2.5/multilarge_nlinear/libgslmultilarge_nlinear.la new file mode 100644 index 00000000..99e92b47 --- /dev/null +++ b/gsl-2.5/multilarge_nlinear/libgslmultilarge_nlinear.la @@ -0,0 +1,41 @@ +# libgslmultilarge_nlinear.la - a libtool library file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='' + +# Names of this library. +library_names='' + +# The name of the static archive. +old_library='libgslmultilarge_nlinear.a' + +# Linker flags that can not go in dependency_libs. +inherited_linker_flags='' + +# Libraries that this one depends upon. +dependency_libs=' -lm' + +# Names of additional weak libraries provided by this library +weak_library_names='' + +# Version information for libgslmultilarge_nlinear. +current= +age= +revision= + +# Is this an already installed library? +installed=no + +# Should we warn about portability when linking against -modules? +shouldnotlink=no + +# Files to dlopen/dlpreopen +dlopen='' +dlpreopen='' + +# Directory that this library needs to be installed in: +libdir='' diff --git a/gsl-2.5/multilarge_nlinear/lm.c b/gsl-2.5/multilarge_nlinear/lm.c new file mode 100644 index 00000000..7ae7a79d --- /dev/null +++ b/gsl-2.5/multilarge_nlinear/lm.c @@ -0,0 +1,364 @@ +/* multilarge_nlinear/lm.c + * + * Copyright (C) 2014, 2015, 2016 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/* + * This module contains an implementation of the Levenberg-Marquardt + * algorithm for nonlinear optimization problems. This implementation + * closely follows the following works: + * + * [1] H. B. Nielsen, K. Madsen, Introduction to Optimization and + * Data Fitting, Informatics and Mathematical Modeling, + * Technical University of Denmark (DTU), 2010. + * + * [2] J. J. More, The Levenberg-Marquardt Algorithm: Implementation + * and Theory, Lecture Notes in Mathematics, v630, 1978. + */ + +typedef struct +{ + size_t n; /* number of observations */ + size_t p; /* number of parameters */ + gsl_vector *fvv; /* D_v^2 f(x), size n */ + gsl_vector *vel; /* geodesic velocity (standard LM step), size p */ + gsl_vector *acc; /* geodesic acceleration, size p */ + gsl_vector *JTfvv; /* J^T fvv, size p */ + gsl_vector *workp; /* workspace, length p */ + gsl_vector *workn; /* workspace, length n */ + + int accel; /* use geodesic acceleration? */ + + /* tunable parameters */ + gsl_multilarge_nlinear_parameters params; +} lm_state_t; + +#include "common.c" + +static void *lm_alloc (const int accel, const void * params, const size_t n, const size_t p); +static void *lm_alloc_noaccel (const void * params, const size_t n, const size_t p); +static void *lm_alloc_accel (const void * params, const size_t n, const size_t p); +static void lm_free(void *vstate); +static int lm_init(const void *vtrust_state, void *vstate); +static int lm_preloop(const void * vtrust_state, void * vstate); +static int lm_step(const void * vtrust_state, const double delta, + gsl_vector * dx, void * vstate); +static int lm_preduction(const void * vtrust_state, const gsl_vector * dx, + double * pred, void * vstate); + +static void * +lm_alloc (const int accel, const void * params, const size_t n, const size_t p) +{ + const gsl_multilarge_nlinear_parameters *mparams = (const gsl_multilarge_nlinear_parameters *) params; + lm_state_t *state; + + state = calloc(1, sizeof(lm_state_t)); + if (state == NULL) + { + GSL_ERROR_NULL ("failed to allocate lm state", GSL_ENOMEM); + } + + state->workp = gsl_vector_alloc(p); + if (state->workp == NULL) + { + GSL_ERROR_NULL ("failed to allocate space for workp", GSL_ENOMEM); + } + + state->workn = gsl_vector_alloc(n); + if (state->workn == NULL) + { + GSL_ERROR_NULL ("failed to allocate space for workn", GSL_ENOMEM); + } + + state->fvv = gsl_vector_alloc(n); + if (state->fvv == NULL) + { + GSL_ERROR_NULL ("failed to allocate space for fvv", GSL_ENOMEM); + } + + state->vel = gsl_vector_alloc(p); + if (state->vel == NULL) + { + GSL_ERROR_NULL ("failed to allocate space for vel", GSL_ENOMEM); + } + + state->acc = gsl_vector_alloc(p); + if (state->acc == NULL) + { + GSL_ERROR_NULL ("failed to allocate space for acc", GSL_ENOMEM); + } + + state->JTfvv = gsl_vector_alloc(p); + if (state->JTfvv == NULL) + { + GSL_ERROR_NULL ("failed to allocate space for JTfvv", GSL_ENOMEM); + } + + state->n = n; + state->p = p; + state->params = *mparams; + state->accel = accel; + + return state; +} + +static void * +lm_alloc_noaccel (const void * params, const size_t n, const size_t p) +{ + return lm_alloc(0, params, n, p); +} + +static void * +lm_alloc_accel (const void * params, const size_t n, const size_t p) +{ + return lm_alloc(1, params, n, p); +} + +static void +lm_free(void *vstate) +{ + lm_state_t *state = (lm_state_t *) vstate; + + if (state->workp) + gsl_vector_free(state->workp); + + if (state->workn) + gsl_vector_free(state->workn); + + if (state->fvv) + gsl_vector_free(state->fvv); + + if (state->vel) + gsl_vector_free(state->vel); + + if (state->acc) + gsl_vector_free(state->acc); + + if (state->JTfvv) + gsl_vector_free(state->JTfvv); + + free(state); +} + +/* +lm_init() + Initialize LM solver + +Inputs: vtrust_state - trust state + vstate - workspace + +Return: success/error +*/ + +static int +lm_init(const void *vtrust_state, void *vstate) +{ + const gsl_multilarge_nlinear_trust_state *trust_state = + (const gsl_multilarge_nlinear_trust_state *) vtrust_state; + lm_state_t *state = (lm_state_t *) vstate; + + gsl_vector_set_zero(state->vel); + gsl_vector_set_zero(state->acc); + + *(trust_state->avratio) = 0.0; + + return GSL_SUCCESS; +} + +/* +lm_preloop() + Initialize LM method for new Jacobian matrix +*/ + +static int +lm_preloop(const void * vtrust_state, void * vstate) +{ + int status; + const gsl_multilarge_nlinear_trust_state *trust_state = + (const gsl_multilarge_nlinear_trust_state *) vtrust_state; + const gsl_multilarge_nlinear_parameters *params = trust_state->params; + + (void)vstate; + + /* initialize linear least squares solver */ + status = (params->solver->init)(trust_state, trust_state->solver_state); + if (status) + return status; + + return GSL_SUCCESS; +} + +/* +lm_step() + Calculate a new step vector by solving the linear +least squares system: + +[ J ] v = - [ f ] +[ sqrt(mu) D ] [ 0 ] +*/ + +static int +lm_step(const void * vtrust_state, const double delta, + gsl_vector * dx, void * vstate) +{ + int status; + const gsl_multilarge_nlinear_trust_state *trust_state = + (const gsl_multilarge_nlinear_trust_state *) vtrust_state; + lm_state_t *state = (lm_state_t *) vstate; + const gsl_multilarge_nlinear_parameters *params = trust_state->params; + const double mu = *(trust_state->mu); + + (void)delta; + + /* prepare the linear solver with current LM parameter mu */ + status = (params->solver->presolve)(mu, trust_state, trust_state->solver_state); + if (status) + return status; + + /* solve: (J^T J + mu D^T D) v = - J^T f */ + status = (params->solver->solve)(trust_state->g, + state->vel, + trust_state, + trust_state->solver_state); + if (status) + return status; + + if (state->accel) + { + double anorm, vnorm; + + /* compute geodesic acceleration */ + status = gsl_multilarge_nlinear_eval_fvv(params->h_fvv, + trust_state->x, + state->vel, + trust_state->f, + trust_state->sqrt_wts, + trust_state->fdf, + state->fvv, + state->workp); + if (status) + return status; + + /* compute J^T fvv */ + status = gsl_multilarge_nlinear_eval_df(CblasTrans, + trust_state->x, + trust_state->f, + state->fvv, + trust_state->sqrt_wts, + params->h_df, + params->fdtype, + trust_state->fdf, + state->JTfvv, + NULL, + state->workn); + if (status) + return status; + + /* solve: (J^T J + mu D^T D) a = - J^T fvv */ + status = (params->solver->solve)(state->JTfvv, + state->acc, + trust_state, + trust_state->solver_state); + if (status) + return status; + + anorm = gsl_blas_dnrm2(state->acc); + vnorm = gsl_blas_dnrm2(state->vel); + + /* store |a| / |v| */ + *(trust_state->avratio) = anorm / vnorm; + } + + /* compute step dx = v + 1/2 a */ + scaled_addition(1.0, state->vel, 0.5, state->acc, dx); + + return GSL_SUCCESS; +} + +/* +lm_preduction() + Compute predicted reduction using Eq 4.4 of More 1978 +*/ + +static int +lm_preduction(const void * vtrust_state, const gsl_vector * dx, + double * pred, void * vstate) +{ + const gsl_multilarge_nlinear_trust_state *trust_state = + (const gsl_multilarge_nlinear_trust_state *) vtrust_state; + lm_state_t *state = (lm_state_t *) vstate; + const gsl_vector *diag = trust_state->diag; + const gsl_vector *p = state->vel; + const double norm_Dp = scaled_enorm(diag, p); + const double normf = gsl_blas_dnrm2(trust_state->f); + const double mu = *(trust_state->mu); + double u, v; + + (void)dx; + + /* compute workp = J^T J p */ + gsl_blas_dsymv(CblasLower, 1.0, trust_state->JTJ, p, 0.0, state->workp); + + /* compute u = p^T J^T J p = ||J p||^2 */ + gsl_blas_ddot(state->workp, p, &u); + + /* compute u = ||J p||^2 / ||f||^2 */ + u /= normf * normf; + + /* v = ||D p|| / ||f|| */ + v = norm_Dp / normf; + + *pred = u + 2.0 * mu * v * v; + + return GSL_SUCCESS; +} + +static const gsl_multilarge_nlinear_trs lm_type = +{ + "levenberg-marquardt", + lm_alloc_noaccel, + lm_init, + lm_preloop, + lm_step, + lm_preduction, + lm_free +}; + +const gsl_multilarge_nlinear_trs *gsl_multilarge_nlinear_trs_lm = &lm_type; + +static const gsl_multilarge_nlinear_trs lmaccel_type = +{ + "levenberg-marquardt+accel", + lm_alloc_accel, + lm_init, + lm_preloop, + lm_step, + lm_preduction, + lm_free +}; + +const gsl_multilarge_nlinear_trs *gsl_multilarge_nlinear_trs_lmaccel = &lmaccel_type; diff --git a/gsl-2.5/multilarge_nlinear/lm.lo b/gsl-2.5/multilarge_nlinear/lm.lo new file mode 100644 index 00000000..494ceff7 --- /dev/null +++ b/gsl-2.5/multilarge_nlinear/lm.lo @@ -0,0 +1,12 @@ +# lm.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/lm.o' + +# Name of the non-PIC object +non_pic_object='lm.o' + diff --git a/gsl-2.5/multilarge_nlinear/nielsen.c b/gsl-2.5/multilarge_nlinear/nielsen.c new file mode 100644 index 00000000..215d0817 --- /dev/null +++ b/gsl-2.5/multilarge_nlinear/nielsen.c @@ -0,0 +1,106 @@ +/* multilarge_nlinear/nielsen.c + * + * Copyright (C) 2016 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* + * This module contains routines for updating the Levenberg-Marquardt + * damping parameter on each iteration using Nielsen's method: + * + * [1] H. B. Nielsen, K. Madsen, Introduction to Optimization and + * Data Fitting, Informatics and Mathematical Modeling, + * Technical University of Denmark (DTU), 2010. + * + * 3 routines are needed to implement the update procedure: + * + * 1. init - initialize parameter prior to iteration + * 2. accept - update parameter after a step has been accepted + * 3. reject - update parameter after a step has been rejected + */ + +#include +#include +#include +#include +#include +#include +#include + +#define LM_ONE_THIRD (0.333333333333333) + +static int nielsen_init(const gsl_matrix * JTJ, const gsl_vector * diag, + double * mu, long * nu); +static int nielsen_accept(const double rho, double * mu, long * nu); +static int nielsen_reject(double * mu, long * nu); + +static int +nielsen_init(const gsl_matrix * JTJ, const gsl_vector * diag, + double * mu, long * nu) +{ + const double mu0 = 1.0e-3; + size_t i; + double max = -1.0; + + *nu = 2; + + if (JTJ == NULL) + { + /* not using cholesky solver */ + *mu = mu0; + return GSL_SUCCESS; + } + + /* set mu = mu0 * max(diag(J~^T J~)), with J~ = J D^{-1} */ + + for (i = 0; i < JTJ->size1; ++i) + { + double JTJi = gsl_matrix_get(JTJ, i, i); + double di = gsl_vector_get(diag, i); + double val = JTJi / (di * di); + max = GSL_MAX(max, val); + } + + *mu = mu0 * max; + + return GSL_SUCCESS; +} + +static int +nielsen_accept(const double rho, double * mu, long * nu) +{ + double b; + + /* reset nu */ + *nu = 2; + + b = 2.0 * rho - 1.0; + b = 1.0 - b*b*b; + *mu *= GSL_MAX(LM_ONE_THIRD, b); + + return GSL_SUCCESS; +} + +static int +nielsen_reject(double * mu, long * nu) +{ + *mu *= (double) *nu; + + /* nu := 2*nu */ + *nu <<= 1; + + return GSL_SUCCESS; +} diff --git a/gsl-2.5/multilarge_nlinear/scaling.c b/gsl-2.5/multilarge_nlinear/scaling.c new file mode 100644 index 00000000..922dee61 --- /dev/null +++ b/gsl-2.5/multilarge_nlinear/scaling.c @@ -0,0 +1,160 @@ +/* multilarge_nlinear/scaling.c + * + * Copyright (C) 2015, 2016 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* + * This module handles the updating of the scaling matrix D_k in the + * trust region subproblem: + * + * min m_k (dx), || D_k dx || <= Delta_k + * + * where m_k(dx) is a model which approximates the cost function + * F(x_k + dx) near the current iteration point x_k + * + * D_k can be updated according to several different strategies. + */ + +#include +#include +#include +#include +#include +#include +#include +#include + +static int init_diag_levenberg(const gsl_matrix * JTJ, gsl_vector * diag); +static int update_diag_levenberg(const gsl_matrix * JTJ, gsl_vector * diag); + +static int init_diag_marquardt(const gsl_matrix * JTJ, gsl_vector * diag); +static int update_diag_marquardt (const gsl_matrix * JTJ, gsl_vector * diag); + +static int init_diag_more(const gsl_matrix * JTJ, gsl_vector * diag); +static int update_diag_more(const gsl_matrix * JTJ, gsl_vector * diag); + +/* Levenberg scaling, D = I */ +static int +init_diag_levenberg(const gsl_matrix * JTJ, gsl_vector * diag) +{ + (void)JTJ; /* avoid unused parameter warning */ + gsl_vector_set_all(diag, 1.0); + return GSL_SUCCESS; +} + +static int +update_diag_levenberg(const gsl_matrix * JTJ, gsl_vector * diag) +{ + (void)JTJ; /* avoid unused parameter warning */ + (void)diag; /* avoid unused parameter warning */ + + /* nothing to do */ + return GSL_SUCCESS; +} + +/* initialize diagonal scaling matrix D according to Marquardt method */ +static int +init_diag_marquardt(const gsl_matrix * JTJ, gsl_vector * diag) +{ + return update_diag_marquardt(JTJ, diag); +} + +/* update diagonal scaling matrix D according to Marquardt method */ +static int +update_diag_marquardt (const gsl_matrix * JTJ, gsl_vector * diag) +{ + const size_t p = JTJ->size2; + size_t j; + + for (j = 0; j < p; j++) + { + double Jjj = gsl_matrix_get(JTJ, j, j); + double norm; + + if (Jjj <= 0.0) + norm = 1.0; + else + norm = sqrt(Jjj); + + gsl_vector_set(diag, j, norm); + } + + return GSL_SUCCESS; +} + +/* initialize diagonal scaling matrix D according to Eq 6.3 of + * More, 1978 */ +static int +init_diag_more(const gsl_matrix * JTJ, gsl_vector * diag) +{ + int status; + + gsl_vector_set_zero(diag); + status = update_diag_more(JTJ, diag); + + return status; +} + +/* update diagonal scaling matrix D according to Eq. 6.3 of + * More, 1978 */ +static int +update_diag_more (const gsl_matrix * JTJ, gsl_vector * diag) +{ + const size_t p = JTJ->size2; + size_t j; + + for (j = 0; j < p; j++) + { + double Jjj = gsl_matrix_get(JTJ, j, j); + double *diagj = gsl_vector_ptr(diag, j); + double norm; + + if (Jjj <= 0.0) + norm = 1.0; + else + norm = sqrt(Jjj); + + *diagj = GSL_MAX(*diagj, norm); + } + + return GSL_SUCCESS; +} + +static const gsl_multilarge_nlinear_scale levenberg_type = +{ + "levenberg", + init_diag_levenberg, + update_diag_levenberg +}; + +static const gsl_multilarge_nlinear_scale marquardt_type = +{ + "marquardt", + init_diag_marquardt, + update_diag_marquardt +}; + +static const gsl_multilarge_nlinear_scale more_type = +{ + "more", + init_diag_more, + update_diag_more +}; + +const gsl_multilarge_nlinear_scale *gsl_multilarge_nlinear_scale_levenberg = &levenberg_type; +const gsl_multilarge_nlinear_scale *gsl_multilarge_nlinear_scale_marquardt = &marquardt_type; +const gsl_multilarge_nlinear_scale *gsl_multilarge_nlinear_scale_more = &more_type; diff --git a/gsl-2.5/multilarge_nlinear/scaling.lo b/gsl-2.5/multilarge_nlinear/scaling.lo new file mode 100644 index 00000000..c393bd66 --- /dev/null +++ b/gsl-2.5/multilarge_nlinear/scaling.lo @@ -0,0 +1,12 @@ +# scaling.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/scaling.o' + +# Name of the non-PIC object +non_pic_object='scaling.o' + diff --git a/gsl-2.5/multilarge_nlinear/subspace2D.c b/gsl-2.5/multilarge_nlinear/subspace2D.c new file mode 100644 index 00000000..226291c7 --- /dev/null +++ b/gsl-2.5/multilarge_nlinear/subspace2D.c @@ -0,0 +1,736 @@ +/* multilarge_nlinear/subspace2D.c + * + * Copyright (C) 2016 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/* + * This module implements a 2D subspace trust region subproblem method, + * as outlined in + * + * [1] G. A. Shultz, R. B. Schnabel, and R. H. Byrd + * A Family of Trust-Region-Based Algorithms for Unconstrained + * Minimization with Strong Global Convergence Properties, + * SIAM Journal on Numerical Analysis 1985 22:1, 47-67 + * + * [2] R. H. Byrd, R. B. Schnabel, G. A. Shultz, + * Approximate solution of the trust region problem by + * minimization over two-dimensional subspaces, + * Mathematical Programming, January 1988, Volume 40, + * Issue 1, pp 247-263 + * + * The idea is to solve: + * + * min_{dx} g^T dx + 1/2 dx^T B dx + * + * with constraints: + * + * ||D dx|| <= delta + * dx \in span{dx_sd, dx_gn} + * + * where B is the Hessian matrix, B = J^T J + * + * The steps are as follows: + * + * 1. preloop: + * a. Compute Gauss-Newton and steepest descent vectors, + * dx_gn, dx_sd + * b. Compute an orthonormal basis for span(D dx_sd, D dx_gn) by + * constructing W = [ D dx_sd, D dx_gn ] and performing a QR + * decomposition of W. The 2 columns of the Q matrix + * will then span the column space of W. W should have rank 2 + * unless D*dx_sd and D*dx_gn are parallel, in which case it will + * have rank 1. + * c. Precompute various quantities needed for the step calculation + * + * 2. step: + * a. If the Gauss-Newton step is inside the trust region, use it + * b. if W has rank 1, we cannot form a 2D subspace, so in this case + * follow the steepest descent direction to the trust region boundary + * and use that as the step. + * c. In the full rank 2 case, if the GN point is outside the trust region, + * then the minimizer of the objective function lies on the trust + * region boundary. Therefore the minimization problem becomes: + * + * min_{dx} g^T dx + 1/2 dx^T B dx, with ||dx|| = delta, dx = Q * x + * + * where x is a 2-vector to be determined and the columns of Q are + * the orthonormal basis vectors of the subspace. Note the equality + * constraint now instead of <=. In terms of the new variable x, + * the minimization problem becomes: + * + * min_x subg^T x + 1/2 x^T subB x, with ||Q*x|| = ||x|| = delta + * + * where: + * subg = Q^T g (2-by-1) + * subB = Q^T B Q (2-by-2) + * + * This equality constrained 2D minimization problem can be solved + * with a Lagrangian multiplier, which results in a 4th degree polynomial + * equation to be solved. The equation is: + * + * lambda^4 1 + * + lambda^3 2 tr(B) + * + lambda^2 (tr(B)^2 + 2 det(B) - g^T g / delta^2) + * + lambda^1 (2 det(B) tr(B) - 2 g^T adj(B)^T g / delta^2) + * + lambda^0 (det(B)^2 - g^T adj(B)^T adj(B) g / delta^2) + * + * where adj(B) is the adjugate matrix of B. + * + * We then check each of the 4 solutions for lambda to determine which + * lambda results in the smallest objective function value. This x + * is then used to construct the final step: dx = Q*x + */ + +typedef struct +{ + size_t n; /* number of observations */ + size_t p; /* number of parameters */ + gsl_vector *dx_gn; /* Gauss-Newton step, size p */ + gsl_vector *dx_sd; /* steepest descent step, size p */ + double norm_Dgn; /* || D dx_gn || */ + double norm_Dsd; /* || D dx_sd || */ + gsl_vector *workp1; /* workspace, length p */ + gsl_vector *workp2; /* workspace, length p */ + gsl_vector *workn; /* workspace, length n */ + gsl_matrix *W; /* orthonormal basis for 2D subspace, p-by-2 */ + gsl_matrix *work_JTJ; /* D^{-1} J^T J D^{-1}, p-by-p */ + gsl_vector *tau; /* Householder scalars */ + gsl_vector *subg; /* subspace gradient = W^T g, 2-by-1 */ + gsl_matrix *subB; /* subspace Hessian = W^T B W, 2-by-2 */ + gsl_permutation *perm; /* permutation matrix */ + + double trB; /* Tr(subB) */ + double detB; /* det(subB) */ + double normg; /* || subg || */ + double term0; /* g^T adj(B)^T adj(B) g */ + double term1; /* g^T adj(B)^T g */ + + size_t rank; /* rank of [ dx_sd, dx_gn ] matrix */ + + gsl_poly_complex_workspace *poly_p; + + /* tunable parameters */ + gsl_multilarge_nlinear_parameters params; +} subspace2D_state_t; + +#include "common.c" + +static void * subspace2D_alloc (const void * params, const size_t n, const size_t p); +static void subspace2D_free(void *vstate); +static int subspace2D_init(const void *vtrust_state, void *vstate); +static int subspace2D_preloop(const void * vtrust_state, void * vstate); +static int subspace2D_step(const void * vtrust_state, const double delta, + gsl_vector * dx, void * vstate); +static int subspace2D_preduction(const void * vtrust_state, const gsl_vector * dx, + double * pred, void * vstate); +static int subspace2D_solution(const double lambda, gsl_vector * x, + subspace2D_state_t * state); +static double subspace2D_objective(const gsl_vector * x, subspace2D_state_t * state); +static int subspace2D_calc_gn(const gsl_multilarge_nlinear_trust_state * trust_state, gsl_vector * dx); +static int subspace2D_calc_sd(const gsl_multilarge_nlinear_trust_state * trust_state, gsl_vector * dx, + subspace2D_state_t * state); + +static void * +subspace2D_alloc (const void * params, const size_t n, const size_t p) +{ + const gsl_multilarge_nlinear_parameters *par = (const gsl_multilarge_nlinear_parameters *) params; + subspace2D_state_t *state; + + state = calloc(1, sizeof(subspace2D_state_t)); + if (state == NULL) + { + GSL_ERROR_NULL ("failed to allocate subspace2D state", GSL_ENOMEM); + } + + state->dx_gn = gsl_vector_alloc(p); + if (state->dx_gn == NULL) + { + GSL_ERROR_NULL ("failed to allocate space for dx_gn", GSL_ENOMEM); + } + + state->dx_sd = gsl_vector_alloc(p); + if (state->dx_sd == NULL) + { + GSL_ERROR_NULL ("failed to allocate space for dx_sd", GSL_ENOMEM); + } + + state->workp1 = gsl_vector_alloc(p); + if (state->workp1 == NULL) + { + GSL_ERROR_NULL ("failed to allocate space for workp1", GSL_ENOMEM); + } + + state->workp2 = gsl_vector_alloc(p); + if (state->workp2 == NULL) + { + GSL_ERROR_NULL ("failed to allocate space for workp2", GSL_ENOMEM); + } + + state->workn = gsl_vector_alloc(n); + if (state->workn == NULL) + { + GSL_ERROR_NULL ("failed to allocate space for workn", GSL_ENOMEM); + } + + state->W = gsl_matrix_alloc(p, 2); + if (state->W == NULL) + { + GSL_ERROR_NULL ("failed to allocate space for W", GSL_ENOMEM); + } + + state->work_JTJ = gsl_matrix_alloc(p, p); + if (state->work_JTJ == NULL) + { + GSL_ERROR_NULL ("failed to allocate space for work_JTJ", GSL_ENOMEM); + } + + state->tau = gsl_vector_alloc(2); + if (state->tau == NULL) + { + GSL_ERROR_NULL ("failed to allocate space for tau", GSL_ENOMEM); + } + + state->subg = gsl_vector_alloc(2); + if (state->subg == NULL) + { + GSL_ERROR_NULL ("failed to allocate space for subg", GSL_ENOMEM); + } + + state->subB = gsl_matrix_alloc(2, 2); + if (state->subB == NULL) + { + GSL_ERROR_NULL ("failed to allocate space for subB", GSL_ENOMEM); + } + + state->perm = gsl_permutation_alloc(2); + if (state->perm == NULL) + { + GSL_ERROR_NULL ("failed to allocate space for perm", GSL_ENOMEM); + } + + state->poly_p = gsl_poly_complex_workspace_alloc(5); + if (state->poly_p == NULL) + { + GSL_ERROR_NULL ("failed to allocate space for poly workspace", GSL_ENOMEM); + } + + state->n = n; + state->p = p; + state->rank = 0; + state->params = *par; + + return state; +} + +static void +subspace2D_free(void *vstate) +{ + subspace2D_state_t *state = (subspace2D_state_t *) vstate; + + if (state->dx_gn) + gsl_vector_free(state->dx_gn); + + if (state->dx_sd) + gsl_vector_free(state->dx_sd); + + if (state->workp1) + gsl_vector_free(state->workp1); + + if (state->workp2) + gsl_vector_free(state->workp2); + + if (state->workn) + gsl_vector_free(state->workn); + + if (state->W) + gsl_matrix_free(state->W); + + if (state->work_JTJ) + gsl_matrix_free(state->work_JTJ); + + if (state->tau) + gsl_vector_free(state->tau); + + if (state->subg) + gsl_vector_free(state->subg); + + if (state->subB) + gsl_matrix_free(state->subB); + + if (state->perm) + gsl_permutation_free(state->perm); + + if (state->poly_p) + gsl_poly_complex_workspace_free(state->poly_p); + + free(state); +} + +/* +subspace2D_init() + Initialize subspace2D solver + +Inputs: vtrust_state - trust state + vstate - workspace + +Return: success/error +*/ + +static int +subspace2D_init(const void *vtrust_state, void *vstate) +{ + (void)vtrust_state; + (void)vstate; + + return GSL_SUCCESS; +} + +/* +subspace2D_preloop() + Initialize subspace2D method prior to iteration loop. +This involves computing the Gauss-Newton step and +steepest descent step + +Notes: on output, +1) state->dx_gn contains Gauss-Newton step +2) state->dx_sd contains steepest descent step +3) state->rank contains the rank([dx_sd, dx_gn]) +4) if full rank subspace (rank = 2), then: + state->trB = Tr(subB) + state->detB = det(subB) + state->normg = || subg || +*/ + +static int +subspace2D_preloop(const void * vtrust_state, void * vstate) +{ + int status; + const gsl_multilarge_nlinear_trust_state *trust_state = + (const gsl_multilarge_nlinear_trust_state *) vtrust_state; + subspace2D_state_t *state = (subspace2D_state_t *) vstate; + gsl_vector_view v; + double work_data[2]; + gsl_vector_view work = gsl_vector_view_array(work_data, 2); + int signum; + + /* calculate Gauss-Newton step */ + status = subspace2D_calc_gn(trust_state, state->dx_gn); + if (status) + return status; + + /* now calculate the steepest descent step */ + status = subspace2D_calc_sd(trust_state, state->dx_sd, state); + if (status) + return status; + + /* store norms */ + state->norm_Dgn = scaled_enorm(trust_state->diag, state->dx_gn); + state->norm_Dsd = scaled_enorm(trust_state->diag, state->dx_sd); + + /* + * now compute orthonormal basis for span(D dx_sd, D dx_gn) using + * QR decomposition; set W = [ D dx_sd, D dx_gn ] and normalize each + * column to unit magnitude. Then the Q matrix will form a basis for Col(W) + */ + + v = gsl_matrix_column(state->W, 0); + gsl_vector_memcpy(&v.vector, state->dx_sd); + gsl_vector_mul(&v.vector, trust_state->diag); + if (state->norm_Dsd != 0) + gsl_vector_scale(&v.vector, 1.0 / state->norm_Dsd); + + v = gsl_matrix_column(state->W, 1); + gsl_vector_memcpy(&v.vector, state->dx_gn); + gsl_vector_mul(&v.vector, trust_state->diag); + if (state->norm_Dgn != 0) + gsl_vector_scale(&v.vector, 1.0 / state->norm_Dgn); + + /* use a rank revealing QR decomposition in case dx_sd and dx_gn + * are parallel */ + gsl_linalg_QRPT_decomp(state->W, state->tau, state->perm, &signum, &work.vector); + + /* check for parallel dx_sd, dx_gn, in which case rank will be 1 */ + state->rank = gsl_linalg_QRPT_rank(state->W, -1.0); + + if (state->rank == 2) + { + /* + * full rank subspace, compute: + * subg = Q^T D^{-1} g + * subB = Q^T D^{-1} B D^{-1} Q where B = J^T J + */ + const size_t p = state->p; + size_t i, j; + double B00, B10, B11, g0, g1; + + /* compute subg */ + gsl_vector_memcpy(state->workp1, trust_state->g); + gsl_vector_div(state->workp1, trust_state->diag); + gsl_linalg_QR_QTvec(state->W, state->tau, state->workp1); + + g0 = gsl_vector_get(state->workp1, 0); + g1 = gsl_vector_get(state->workp1, 1); + + gsl_vector_set(state->subg, 0, g0); + gsl_vector_set(state->subg, 1, g1); + + /* compute subB */ + + /* compute work_JTJ = D^{-1} J^T J D^{-1} using lower triangle */ + for (j = 0; j < p; ++j) + { + double dj = gsl_vector_get(trust_state->diag, j); + + for (i = j; i < p; ++i) + { + double di = gsl_vector_get(trust_state->diag, i); + double Aij = gsl_matrix_get(trust_state->JTJ, i, j); + + gsl_matrix_set(state->work_JTJ, i, j, Aij / (di * dj)); + } + } + + gsl_matrix_transpose_tricpy('L', 0, state->work_JTJ, state->work_JTJ); + + /* compute work_JTJ = Q^T D^{-1} J^T J D^{-1} Q */ + gsl_linalg_QR_matQ(state->W, state->tau, state->work_JTJ); + gsl_linalg_QR_QTmat(state->W, state->tau, state->work_JTJ); + +#if 0 + /* compute subB = Q^T D^{-1} J^T J D^{-1} Q */ + gsl_blas_dsyrk(CblasLower, CblasTrans, 1.0, &JQ.matrix, 0.0, state->subB); +#endif + + B00 = gsl_matrix_get(state->work_JTJ, 0, 0); + B10 = gsl_matrix_get(state->work_JTJ, 1, 0); + B11 = gsl_matrix_get(state->work_JTJ, 1, 1); + + gsl_matrix_set(state->subB, 0, 0, B00); + gsl_matrix_set(state->subB, 1, 0, B10); + gsl_matrix_set(state->subB, 1, 1, B11); + + state->trB = B00 + B11; + state->detB = B00*B11 - B10*B10; + state->normg = gsl_blas_dnrm2(state->subg); + + /* g^T adj(B)^T adj(B) g */ + state->term0 = (B10*B10 + B11*B11)*g0*g0 - + 2*B10*(B00 + B11)*g0*g1 + + (B00*B00 + B10*B10)*g1*g1; + + /* g^T adj(B)^T g */ + state->term1 = B11 * g0 * g0 + g1 * (B00*g1 - 2*B10*g0); + + } + + return GSL_SUCCESS; +} + + +/* +subspace2D_step() + Calculate a new step with 2D subspace method. Based on [1]. We +seek a vector dx in span{dx_gn, dx_sd} which minimizes the model +function subject to ||dx|| <= delta +*/ + +static int +subspace2D_step(const void * vtrust_state, const double delta, + gsl_vector * dx, void * vstate) +{ + const gsl_multilarge_nlinear_trust_state *trust_state = + (const gsl_multilarge_nlinear_trust_state *) vtrust_state; + subspace2D_state_t *state = (subspace2D_state_t *) vstate; + + if (state->norm_Dgn <= delta) + { + /* Gauss-Newton step is inside trust region, use it as final step + * since it is the global minimizer of the quadratic model function */ + gsl_vector_memcpy(dx, state->dx_gn); + } + else if (state->rank < 2) + { + /* rank of [dx_sd, dx_gn] is 1, meaning dx_sd and dx_gn + * are parallel so we can't form a 2D subspace. Follow the steepest + * descent direction to the trust region boundary as our step */ + gsl_vector_memcpy(dx, state->dx_sd); + gsl_vector_scale(dx, delta / state->norm_Dsd); + } + else + { + int status; + const double delta_sq = delta * delta; + double u = state->normg / delta; + double a[5]; + double z[8]; + +#if 1 + a[0] = state->detB * state->detB - state->term0 / delta_sq; + a[1] = 2 * state->detB * state->trB - 2 * state->term1 / delta_sq; + a[2] = state->trB * state->trB + 2 * state->detB - u * u; + a[3] = 2 * state->trB; + a[4] = 1.0; +#else + double TrB_D = state->trB * delta; + double detB_D = state->detB * delta; + double normg_sq = state->normg * state->normg; + + a[0] = detB_D * detB_D - state->term0; + a[1] = 2 * state->detB * state->trB * delta_sq - 2 * state->term1; + a[2] = TrB_D * TrB_D + 2 * state->detB * delta_sq - normg_sq; + a[3] = 2 * state->trB * delta_sq; + a[4] = delta_sq; +#endif + + status = gsl_poly_complex_solve(a, 5, state->poly_p, z); + if (status == GSL_SUCCESS) + { + size_t i; + double min = 0.0; + int mini = -1; + double x_data[2]; + gsl_vector_view x = gsl_vector_view_array(x_data, 2); + + /* + * loop through all four values of the Lagrange multiplier + * lambda. For each lambda, evaluate the objective function + * with Re(lambda) to determine which lambda minimizes the + * function + */ + for (i = 0; i < 4; ++i) + { + double cost, normx; + + /*fprintf(stderr, "root: %.12e + %.12e i\n", + z[2*i], z[2*i+1]);*/ + + status = subspace2D_solution(z[2*i], &x.vector, state); + if (status != GSL_SUCCESS) + continue; /* singular matrix system */ + + /* ensure ||x|| = delta */ + + normx = gsl_blas_dnrm2(&x.vector); + if (normx == 0.0) + continue; + + gsl_vector_scale(&x.vector, delta / normx); + + /* evaluate objective function to determine minimizer */ + cost = subspace2D_objective(&x.vector, state); + if (mini < 0 || cost < min) + { + mini = (int) i; + min = cost; + } + } + + if (mini < 0) + { + /* did not find minimizer - should not get here */ + return GSL_FAILURE; + } + else + { + /* compute x which minimizes objective function */ + subspace2D_solution(z[2*mini], &x.vector, state); + + /* dx = Q * x */ + gsl_vector_set_zero(dx); + gsl_vector_set(dx, 0, gsl_vector_get(&x.vector, 0)); + gsl_vector_set(dx, 1, gsl_vector_get(&x.vector, 1)); + gsl_linalg_QR_Qvec(state->W, state->tau, dx); + + /* compute final dx by multiplying by D^{-1} */ + gsl_vector_div(dx, trust_state->diag); + } + } + else + { + GSL_ERROR ("gsl_poly_complex_solve failed", status); + } + } + + return GSL_SUCCESS; +} + +static int +subspace2D_preduction(const void * vtrust_state, const gsl_vector * dx, + double * pred, void * vstate) +{ + const gsl_multilarge_nlinear_trust_state *trust_state = + (const gsl_multilarge_nlinear_trust_state *) vtrust_state; + subspace2D_state_t *state = (subspace2D_state_t *) vstate; + + *pred = quadratic_preduction(trust_state, dx, state->workn); + + return GSL_SUCCESS; +} + +/* solve 2D subspace problem: (B + lambda*I) x = -g */ +static int +subspace2D_solution(const double lambda, gsl_vector * x, + subspace2D_state_t * state) +{ + int status = GSL_SUCCESS; + double C_data[4]; + gsl_matrix_view C = gsl_matrix_view_array(C_data, 2, 2); + double B00 = gsl_matrix_get(state->subB, 0, 0); + double B10 = gsl_matrix_get(state->subB, 1, 0); + double B11 = gsl_matrix_get(state->subB, 1, 1); + + /* construct C = B + lambda*I */ + gsl_matrix_set(&C.matrix, 0, 0, B00 + lambda); + gsl_matrix_set(&C.matrix, 1, 0, B10); + gsl_matrix_set(&C.matrix, 0, 1, B10); + gsl_matrix_set(&C.matrix, 1, 1, B11 + lambda); + + /* use modified Cholesky in case C is not positive definite */ + gsl_linalg_mcholesky_decomp(&C.matrix, state->perm, NULL); + gsl_linalg_mcholesky_solve(&C.matrix, state->perm, state->subg, x); + + gsl_vector_scale(x, -1.0); + + return status; +} + +/* evaluate 2D objective function: f(x) = g^T x + 1/2 x^T B x */ +static double +subspace2D_objective(const gsl_vector * x, subspace2D_state_t * state) +{ + double f; + double y_data[2]; + gsl_vector_view y = gsl_vector_view_array(y_data, 2); + + /* compute: y = g + 1/2 B x */ + gsl_vector_memcpy(&y.vector, state->subg); + gsl_blas_dsymv(CblasLower, 0.5, state->subB, x, 1.0, &y.vector); + + /* compute: f = x^T ( g + 1/2 B x ) */ + gsl_blas_ddot(x, &y.vector, &f); + + return f; +} + +/* +subspace2D_calc_gn() + Calculate Gauss-Newton step by solving + +J^T J dx_gn = -J^T f + +Inputs: trust_state - trust state variables + dx - (output) Gauss-Newton step vector + +Return: success/error +*/ + +static int +subspace2D_calc_gn(const gsl_multilarge_nlinear_trust_state * trust_state, gsl_vector * dx) +{ + int status; + const gsl_multilarge_nlinear_parameters *params = trust_state->params; + + /* initialize linear least squares solver */ + status = (params->solver->init)(trust_state, trust_state->solver_state); + if (status) + return status; + + /* prepare the linear solver to compute Gauss-Newton step */ + status = (params->solver->presolve)(0.0, trust_state, trust_state->solver_state); + if (status) + return status; + + /* solve: J dx_gn = -f for Gauss-Newton step */ + status = (params->solver->solve)(trust_state->g, + dx, + trust_state, + trust_state->solver_state); + if (status) + return status; + + return GSL_SUCCESS; +} + +/* +subspace2D_calc_sd() + Calculate steepest descent step, + +dx_sd = - || D^{-1} g ||^2 / || J D^{-2} g ||^2 D^{-2} g + +Inputs: trust_state - trust state variables + dx - (output) steepest descent vector + state - workspace + +Return: success/error +*/ + +static int +subspace2D_calc_sd(const gsl_multilarge_nlinear_trust_state * trust_state, gsl_vector * dx, + subspace2D_state_t * state) +{ + double norm_Dinvg; /* || D^{-1} g || */ + double norm_JDinv2g; /* || J D^{-2} g || */ + double alpha; /* || D^{-1} g ||^2 / || J D^{-2} g ||^2 */ + double u; + + /* compute workp1 = D^{-1} g and its norm */ + gsl_vector_memcpy(state->workp1, trust_state->g); + gsl_vector_div(state->workp1, trust_state->diag); + norm_Dinvg = gsl_blas_dnrm2(state->workp1); + + /* compute workp1 = D^{-2} g */ + gsl_vector_div(state->workp1, trust_state->diag); + + /* compute workp2 = J^T J D^{-2} g */ + gsl_blas_dsymv(CblasLower, 1.0, trust_state->JTJ, state->workp1, 0.0, state->workp2); + + /* compute norm_JDinv2g = || J D^{-2} g || */ + gsl_blas_ddot(state->workp1, state->workp2, &u); + norm_JDinv2g = sqrt(u); + + u = norm_Dinvg / norm_JDinv2g; + alpha = u * u; + + /* dx_sd = -alpha D^{-2} g */ + gsl_vector_memcpy(dx, state->workp1); + gsl_vector_scale(dx, -alpha); + + return GSL_SUCCESS; +} + +static const gsl_multilarge_nlinear_trs subspace2D_type = +{ + "2D-subspace", + subspace2D_alloc, + subspace2D_init, + subspace2D_preloop, + subspace2D_step, + subspace2D_preduction, + subspace2D_free +}; + +const gsl_multilarge_nlinear_trs *gsl_multilarge_nlinear_trs_subspace2D = &subspace2D_type; diff --git a/gsl-2.5/multilarge_nlinear/subspace2D.lo b/gsl-2.5/multilarge_nlinear/subspace2D.lo new file mode 100644 index 00000000..9d34dc8c --- /dev/null +++ b/gsl-2.5/multilarge_nlinear/subspace2D.lo @@ -0,0 +1,12 @@ +# subspace2D.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/subspace2D.o' + +# Name of the non-PIC object +non_pic_object='subspace2D.o' + diff --git a/gsl-2.5/multilarge_nlinear/test b/gsl-2.5/multilarge_nlinear/test new file mode 100755 index 00000000..d136e5b5 --- /dev/null +++ b/gsl-2.5/multilarge_nlinear/test @@ -0,0 +1,228 @@ +#! /bin/sh + +# test - temporary wrapper script for .libs/test +# Generated by libtool (GNU libtool) 2.4.2 +# +# The test program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s/\([`"$\\]\)/\\\1/g' + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command="(cd /home/groups/kipac/chto/package/gsl/gsl-2.5/multilarge_nlinear; LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LIBRARY_PATH; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; LD_LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/fftw/include:/home/users/chto/lib/fftw/lib:/home/users/chto/lib/healpix/lib:/home/users/chto/lib/namaster/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/include:/home/users/chto/cpp/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LD_LIBRARY_PATH; PATH=/share/software/user/open/curl/7.54.0/bin:/share/software/user/open/libressl/2.5.3/bin:/home/users/chto/lib/cfitsio:/home/users/chto/lib/cfitsio/include:/home/users/chto/lib:/home/users/chto/bin/bin:/home/users/chto/bin:/home/users/chto/.texlive/bin/x86_64-linux:/home/groups/kipac/chto/anaconda2/envs/newenv3/bin:/home/users/chto/.local/bin/include:/home/users/chto/.local/bin/lib:/home/users/chto/.local/bin:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/bin64:/share/software/user/open/fftw/3.3.6/bin:/home/groups/kipac/chto/anaconda2/condabin:/share/software/user/restricted/ifort/2019/bin:/share/software/user/open/gsl/2.3/bin:/share/software/user/srcc/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/dell/srvadmin/bin:/opt/dell/srvadmin/iSM/bin:/home/users/chto/bin; export PATH; gcc -g -O2 -o \$progdir/\$file test.o ./.libs/libgslmultilarge_nlinear.a ../test/.libs/libgsltest.a ../multilarge/.libs/libgslmultilarge.a ../multifit/.libs/libgslmultifit.a ../eigen/.libs/libgsleigen.a ../linalg/.libs/libgsllinalg.a ../permutation/.libs/libgslpermutation.a ../blas/.libs/libgslblas.a ../cblas/.libs/libgslcblas.so ../matrix/.libs/libgslmatrix.a ../vector/.libs/libgslvector.a ../block/.libs/libgslblock.a ../sys/.libs/libgslsys.a ../utils/.libs/libutils.a ../rng/.libs/libgslrng.a ../ieee-utils/.libs/libgslieeeutils.a ../err/.libs/libgslerr.a ../complex/.libs/libgslcomplex.a ../poly/.libs/libgslpoly.a -lm -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/cblas/.libs -Wl,-rpath -Wl,/usr/local/lib)" + +# This environment variable determines our operation mode. +if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then + # install mode needs the following variables: + generated_by_libtool_version='2.4.2' + notinst_deplibs=' ../cblas/libgslcblas.la' +else + # When we are sourced in execute mode, $file and $ECHO are already set. + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + file="$0" + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + ECHO="printf %s\\n" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ which is used only on +# windows platforms, and (c) all begin with the string --lt- +# (application programs are unlikely to have options which match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's ../libtool value, followed by no. +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=$0 + shift + for lt_opt + do + case "$lt_opt" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%/[^/]*$%%'` + test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=. + lt_dump_F=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%^.*/%%'` + cat "$lt_dump_D/$lt_dump_F" + exit 0 + ;; + --lt-*) + $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n "$lt_option_debug"; then + echo "test:test:${LINENO}: libtool wrapper (GNU libtool) 2.4.2" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + $ECHO "test:test:${LINENO}: newargv[$lt_dump_args_N]: $lt_arg" + lt_dump_args_N=`expr $lt_dump_args_N + 1` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ + + if test -n "$lt_option_debug"; then + $ECHO "test:test:${LINENO}: newargv[0]: $progdir/$program" 1>&2 + func_lt_dump_args ${1+"$@"} 1>&2 + fi + exec "$progdir/$program" ${1+"$@"} + + $ECHO "$0: cannot exec $program $*" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from $@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case " $* " in + *\ --lt-*) + for lt_wr_arg + do + case $lt_wr_arg in + --lt-*) ;; + *) set x "$@" "$lt_wr_arg"; shift;; + esac + shift + done ;; + esac + func_exec_program_core ${1+"$@"} +} + + # Parse options + func_parse_lt_options "$0" ${1+"$@"} + + # Find the directory that this script lives in. + thisdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + test "x$thisdir" = "x$file" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=`ls -ld "$file" | /usr/bin/sed -n 's/.*-> //p'` + while test -n "$file"; do + destdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + + # If there was a directory component, then change thisdir. + if test "x$destdir" != "x$file"; then + case "$destdir" in + [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;; + *) thisdir="$thisdir/$destdir" ;; + esac + fi + + file=`$ECHO "$file" | /usr/bin/sed 's%^.*/%%'` + file=`ls -ld "$thisdir/$file" | /usr/bin/sed -n 's/.*-> //p'` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no + if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then + # special case for '.' + if test "$thisdir" = "."; then + thisdir=`pwd` + fi + # remove .libs from thisdir + case "$thisdir" in + *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /usr/bin/sed 's%[\\/][^\\/]*$%%'` ;; + .libs ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=`cd "$thisdir" && pwd` + test -n "$absdir" && thisdir="$absdir" + + program=lt-'test' + progdir="$thisdir/.libs" + + if test ! -f "$progdir/$program" || + { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /usr/bin/sed 1q`; \ + test "X$file" != "X$progdir/$program"; }; then + + file="$$-$program" + + if test ! -d "$progdir"; then + mkdir "$progdir" + else + rm -f "$progdir/$file" + fi + + # relink executable if necessary + if test -n "$relink_command"; then + if relink_command_output=`eval $relink_command 2>&1`; then : + else + printf %s\n "$relink_command_output" >&2 + rm -f "$progdir/$file" + exit 1 + fi + fi + + mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null || + { rm -f "$progdir/$program"; + mv -f "$progdir/$file" "$progdir/$program"; } + rm -f "$progdir/$file" + fi + + if test -f "$progdir/$program"; then + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + # Run the actual program with our arguments. + func_exec_program ${1+"$@"} + fi + else + # The program doesn't exist. + $ECHO "$0: error: \`$progdir/$program' does not exist" 1>&2 + $ECHO "This script is just a wrapper for $program." 1>&2 + $ECHO "See the libtool documentation for more information." 1>&2 + exit 1 + fi +fi diff --git a/gsl-2.5/multilarge_nlinear/test-suite.log b/gsl-2.5/multilarge_nlinear/test-suite.log new file mode 100644 index 00000000..1bc26423 --- /dev/null +++ b/gsl-2.5/multilarge_nlinear/test-suite.log @@ -0,0 +1,14 @@ +================================================ + gsl 2.5: multilarge_nlinear/test-suite.log +================================================ + +# TOTAL: 1 +# PASS: 1 +# SKIP: 0 +# XFAIL: 0 +# FAIL: 0 +# XPASS: 0 +# ERROR: 0 + +.. contents:: :depth: 2 + diff --git a/gsl-2.5/multilarge_nlinear/test.c b/gsl-2.5/multilarge_nlinear/test.c new file mode 100644 index 00000000..9cb89e60 --- /dev/null +++ b/gsl-2.5/multilarge_nlinear/test.c @@ -0,0 +1,95 @@ +/* multilarge_nlinear/test.c + * + * Copyright (C) 2015, 2016 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* These tests are based on the NIST Statistical Reference Datasets + See http://www.nist.gov/itl/div898/strd/index.html for more + information. */ + +#include +#include +#include +#include +#include +#include +#include +#include + +#include "test_fdf.c" + +static void +test_proc(const gsl_multilarge_nlinear_trs *trs, + const gsl_multilarge_nlinear_scale *scale, + const int fdtype) +{ + gsl_multilarge_nlinear_parameters fdf_params = + gsl_multilarge_nlinear_default_parameters(); + + fdf_params.trs = trs; + fdf_params.scale = scale; + fdf_params.fdtype = fdtype; + + test_fdf_main(&fdf_params); +} + +int +main (void) +{ + const gsl_multilarge_nlinear_trs **nlinear_trs[7]; + const gsl_multilarge_nlinear_scale **nlinear_scales[3]; + const gsl_multilarge_nlinear_trs **trs; + const gsl_multilarge_nlinear_scale **scale; + int fdtype; + size_t i = 0; + + gsl_ieee_env_setup(); + + /* initialize arrays */ + + nlinear_trs[0] = &gsl_multilarge_nlinear_trs_lm; + nlinear_trs[1] = &gsl_multilarge_nlinear_trs_lmaccel; + nlinear_trs[2] = &gsl_multilarge_nlinear_trs_dogleg; + nlinear_trs[3] = &gsl_multilarge_nlinear_trs_ddogleg; + nlinear_trs[4] = &gsl_multilarge_nlinear_trs_subspace2D; + nlinear_trs[5] = &gsl_multilarge_nlinear_trs_cgst; + nlinear_trs[6] = NULL; + + nlinear_scales[0] = &gsl_multilarge_nlinear_scale_levenberg; + nlinear_scales[1] = &gsl_multilarge_nlinear_scale_more; + nlinear_scales[2] = NULL; + + /* run testsuite over all parameter combinations */ + + for (trs = nlinear_trs[i]; trs != NULL; trs = nlinear_trs[++i]) + { + size_t j = 0; + + fprintf(stderr, "trs = %s\n", (*trs)->name); + + for (scale = nlinear_scales[j]; scale != NULL; scale = nlinear_scales[++j]) + { + for (fdtype = GSL_MULTILARGE_NLINEAR_FWDIFF; + fdtype <= GSL_MULTILARGE_NLINEAR_CTRDIFF; ++fdtype) + { + test_proc(*trs, *scale, fdtype); + } + } + } + + exit (gsl_test_summary ()); +} diff --git a/gsl-2.5/multilarge_nlinear/test.log b/gsl-2.5/multilarge_nlinear/test.log new file mode 100644 index 00000000..d7343a33 --- /dev/null +++ b/gsl-2.5/multilarge_nlinear/test.log @@ -0,0 +1,7 @@ +trs = levenberg-marquardt +trs = levenberg-marquardt+accel +trs = dogleg +trs = double-dogleg +trs = 2D-subspace +trs = steihaug-toint +Completed [12936/12936] diff --git a/gsl-2.5/multilarge_nlinear/test.trs b/gsl-2.5/multilarge_nlinear/test.trs new file mode 100644 index 00000000..3f0f396c --- /dev/null +++ b/gsl-2.5/multilarge_nlinear/test.trs @@ -0,0 +1,4 @@ +:test-result: PASS +:global-test-result: PASS +:recheck: no +:copy-in-global-log: no diff --git a/gsl-2.5/multilarge_nlinear/test_bard.c b/gsl-2.5/multilarge_nlinear/test_bard.c new file mode 100644 index 00000000..9d80608f --- /dev/null +++ b/gsl-2.5/multilarge_nlinear/test_bard.c @@ -0,0 +1,164 @@ +#define bard_N 15 +#define bard_P 3 + +static double bard_x0[bard_P] = { 1.0, 1.0, 1.0 }; +static double bard_epsrel = 1.0e-7; + +static double bard_J[bard_N * bard_P]; + +static double bard_Y[bard_N] = { +0.14, 0.18, 0.22, 0.25, 0.29, 0.32, 0.35, 0.39, 0.37, +0.58, 0.73, 0.96, 1.34, 2.10, 4.39 +}; + +static void +bard_checksol(const double x[], const double sumsq, + const double epsrel, const char *sname, + const char *pname) +{ + size_t i; + const double sumsq_exact1 = 8.214877306578963e-03; + const double bard_x1[bard_P] = { 8.241055975623580e-02, + 1.133036092245175, + 2.343695178435405 }; + const double sumsq_exact2 = 17.42869333333333; + double bard_x2[bard_P] = { 8.406666666666666e-01, + 0.0, /* -inf */ + 0.0 }; /* -inf */ + const double *bard_x; + double sumsq_exact; + + bard_x2[1] = GSL_NAN; + bard_x2[2] = GSL_NAN; + + if (fabs(x[1]) < 10.0 && fabs(x[2]) < 10.0) + { + bard_x = bard_x1; + sumsq_exact = sumsq_exact1; + } + else + { + bard_x = bard_x2; + sumsq_exact = sumsq_exact2; + } + + gsl_test_rel(sumsq, sumsq_exact, epsrel, "%s/%s sumsq", + sname, pname); + + for (i = 0; i < bard_P; ++i) + { + if (!gsl_finite(bard_x[i])) + continue; + + gsl_test_rel(x[i], bard_x[i], epsrel, "%s/%s i=%zu", + sname, pname, i); + } +} + +static int +bard_f (const gsl_vector * x, void *params, gsl_vector * f) +{ + double x1 = gsl_vector_get(x, 0); + double x2 = gsl_vector_get(x, 1); + double x3 = gsl_vector_get(x, 2); + size_t i; + + for (i = 0; i < bard_N; ++i) + { + double ui = i + 1.0; + double vi = 16.0 - i - 1.0; + double wi = GSL_MIN(ui, vi); + double yi = bard_Y[i]; + double fi = yi - (x1 + (ui / (x2*vi + x3*wi))); + + gsl_vector_set(f, i, fi); + } + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +bard_df (CBLAS_TRANSPOSE_t TransJ, const gsl_vector * x, + const gsl_vector * u, void * params, gsl_vector * v, + gsl_matrix * JTJ) +{ + gsl_matrix_view J = gsl_matrix_view_array(bard_J, bard_N, bard_P); + double x2 = gsl_vector_get(x, 1); + double x3 = gsl_vector_get(x, 2); + size_t i; + + for (i = 0; i < bard_N; ++i) + { + double ui = i + 1.0; + double vi = 16.0 - i - 1.0; + double wi = GSL_MIN(ui, vi); + double term = x2 * vi + x3 * wi; + + gsl_matrix_set(&J.matrix, i, 0, -1.0); + gsl_matrix_set(&J.matrix, i, 1, ui * vi / (term * term)); + gsl_matrix_set(&J.matrix, i, 2, ui * wi / (term * term)); + } + + if (v) + gsl_blas_dgemv(TransJ, 1.0, &J.matrix, u, 0.0, v); + + if (JTJ) + gsl_blas_dsyrk(CblasLower, CblasTrans, 1.0, &J.matrix, 0.0, JTJ); + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +bard_fvv (const gsl_vector * x, const gsl_vector * v, + void *params, gsl_vector * fvv) +{ + double x2 = gsl_vector_get(x, 1); + double x3 = gsl_vector_get(x, 2); + double v2 = gsl_vector_get(v, 1); + double v3 = gsl_vector_get(v, 2); + size_t i; + + for (i = 0; i < bard_N; ++i) + { + double ui = i + 1.0; + double vi = 16.0 - i - 1.0; + double wi = GSL_MIN(ui, vi); + double term1 = x2 * vi + x3 * wi; + double term2 = v2 * vi + v3 * wi; + double ratio = term2 / term1; + + gsl_vector_set(fvv, i, -2.0 * ui * ratio * ratio / term1); + } + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static gsl_multilarge_nlinear_fdf bard_func = +{ + bard_f, + bard_df, + bard_fvv, + bard_N, + bard_P, + NULL, + 0, + 0, + 0, + 0 +}; + +static test_fdf_problem bard_problem = +{ + "bard", + bard_x0, + NULL, + &bard_epsrel, + &bard_checksol, + &bard_func +}; diff --git a/gsl-2.5/multilarge_nlinear/test_beale.c b/gsl-2.5/multilarge_nlinear/test_beale.c new file mode 100644 index 00000000..d7f6ab66 --- /dev/null +++ b/gsl-2.5/multilarge_nlinear/test_beale.c @@ -0,0 +1,124 @@ +#define beale_N 3 +#define beale_P 2 + +static double beale_x0[beale_P] = { 1.0, 1.0 }; +static double beale_epsrel = 1.0e-12; + +static double beale_J[beale_N * beale_P]; + +static double beale_Y[beale_N] = { 1.5, 2.25, 2.625 }; + +static void +beale_checksol(const double x[], const double sumsq, + const double epsrel, const char *sname, + const char *pname) +{ + size_t i; + const double sumsq_exact = 0.0; + const double beale_x[beale_P] = { 3.0, 0.5 }; + + gsl_test_rel(sumsq, sumsq_exact, epsrel, "%s/%s sumsq", + sname, pname); + + for (i = 0; i < beale_P; ++i) + { + gsl_test_rel(x[i], beale_x[i], epsrel, "%s/%s i=%zu", + sname, pname, i); + } +} + +static int +beale_f (const gsl_vector * x, void *params, gsl_vector * f) +{ + double x1 = gsl_vector_get(x, 0); + double x2 = gsl_vector_get(x, 1); + size_t i; + + for (i = 0; i < beale_N; ++i) + { + double yi = beale_Y[i]; + double term = pow(x2, i + 1.0); + double fi = yi - x1*(1.0 - term); + gsl_vector_set(f, i, fi); + } + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +beale_df (CBLAS_TRANSPOSE_t TransJ, const gsl_vector * x, + const gsl_vector * u, void * params, gsl_vector * v, + gsl_matrix * JTJ) +{ + gsl_matrix_view J = gsl_matrix_view_array(beale_J, beale_N, beale_P); + double x1 = gsl_vector_get(x, 0); + double x2 = gsl_vector_get(x, 1); + size_t i; + + for (i = 0; i < beale_N; ++i) + { + double term = pow(x2, (double) i); + + gsl_matrix_set(&J.matrix, i, 0, term*x2 - 1.0); + gsl_matrix_set(&J.matrix, i, 1, (i + 1.0) * x1 * term); + } + + if (v) + gsl_blas_dgemv(TransJ, 1.0, &J.matrix, u, 0.0, v); + + if (JTJ) + gsl_blas_dsyrk(CblasLower, CblasTrans, 1.0, &J.matrix, 0.0, JTJ); + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +beale_fvv (const gsl_vector * x, const gsl_vector * v, + void *params, gsl_vector * fvv) +{ + double x1 = gsl_vector_get(x, 0); + double x2 = gsl_vector_get(x, 1); + double v1 = gsl_vector_get(v, 0); + double v2 = gsl_vector_get(v, 1); + size_t i; + + for (i = 0; i < beale_N; ++i) + { + double term = pow(x2, (double)i - 1.0); + + gsl_vector_set(fvv, i, (i + 1.0) * v2 * term * + (i * v2 * x1 + 2.0 * v1 * x2)); + } + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static gsl_multilarge_nlinear_fdf beale_func = +{ + beale_f, + beale_df, + beale_fvv, + beale_N, + beale_P, + NULL, + 0, + 0, + 0, + 0 +}; + +static test_fdf_problem beale_problem = +{ + "beale", + beale_x0, + NULL, + &beale_epsrel, + &beale_checksol, + &beale_func +}; diff --git a/gsl-2.5/multilarge_nlinear/test_biggs.c b/gsl-2.5/multilarge_nlinear/test_biggs.c new file mode 100644 index 00000000..9d7eaa90 --- /dev/null +++ b/gsl-2.5/multilarge_nlinear/test_biggs.c @@ -0,0 +1,163 @@ +#define biggs_N 6 /* >= p */ +#define biggs_P 6 + +/* dogleg method has trouble converging from recommended starting point, + * so we use an x0 which is a little closer to the true solution */ +/*static double biggs_x0[biggs_P] = { 1.0, 2.0, 1.0, 1.0, 1.0, 1.0 };*/ +static double biggs_x0[biggs_P] = { 1.0, 8.0, 1.0, 2.0, 3.0, 2.0 }; +static double biggs_epsrel = 1.0e-9; + +static double biggs_J[biggs_N * biggs_P]; + +static void +biggs_checksol(const double x[], const double sumsq, + const double epsrel, const char *sname, + const char *pname) +{ +#if 0 + const double sumsq_exact = 0.0; +#endif + const double biggs_x[biggs_P] = { 1.0, 10.0, 1.0, 5.0, 4.0, 3.0 }; + const double norm_exact = 12.3288280059380; + gsl_vector_const_view v = gsl_vector_const_view_array(biggs_x, biggs_P); + double norm = gsl_blas_dnrm2(&v.vector); + +#if 0 + /* some solvers have difficulty reaching sumsq = 0 to sufficient + * decimal places */ + gsl_test_rel(sumsq, sumsq_exact, epsrel, "%s/%s sumsq", + sname, pname); +#endif + + /* + * the solution vector is not unique due to permutations, so test + * the norm instead of individual elements + */ + gsl_test_rel(norm, norm_exact, epsrel, "%s/%s norm", + sname, pname); + + (void)x; /* avoid unused parameter warning */ + (void)sumsq; /* avoid unused parameter warning */ +} + +static int +biggs_f (const gsl_vector * x, void *params, gsl_vector * f) +{ + double x1 = gsl_vector_get(x, 0); + double x2 = gsl_vector_get(x, 1); + double x3 = gsl_vector_get(x, 2); + double x4 = gsl_vector_get(x, 3); + double x5 = gsl_vector_get(x, 4); + double x6 = gsl_vector_get(x, 5); + size_t i; + + for (i = 0; i < biggs_N; ++i) + { + double ti = 0.1 * (i + 1.0); + double yi = exp(-ti) - 5*exp(-10*ti) + 3*exp(-4*ti); + double fi = x3*exp(-ti*x1) - x4*exp(-ti*x2) + x6*exp(-ti*x5) - yi; + + gsl_vector_set(f, i, fi); + } + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +biggs_df (CBLAS_TRANSPOSE_t TransJ, const gsl_vector * x, + const gsl_vector * u, void * params, gsl_vector * v, + gsl_matrix * JTJ) +{ + gsl_matrix_view J = gsl_matrix_view_array(biggs_J, biggs_N, biggs_P); + double x1 = gsl_vector_get(x, 0); + double x2 = gsl_vector_get(x, 1); + double x3 = gsl_vector_get(x, 2); + double x4 = gsl_vector_get(x, 3); + double x5 = gsl_vector_get(x, 4); + double x6 = gsl_vector_get(x, 5); + size_t i; + + for (i = 0; i < biggs_N; ++i) + { + double ti = 0.1 * (i + 1.0); + + gsl_matrix_set(&J.matrix, i, 0, -ti*x3*exp(-ti*x1)); + gsl_matrix_set(&J.matrix, i, 1, ti*x4*exp(-ti*x2)); + gsl_matrix_set(&J.matrix, i, 2, exp(-ti*x1)); + gsl_matrix_set(&J.matrix, i, 3, -exp(-ti*x2)); + gsl_matrix_set(&J.matrix, i, 4, -ti*x6*exp(-ti*x5)); + gsl_matrix_set(&J.matrix, i, 5, exp(-ti*x5)); + } + + if (v) + gsl_blas_dgemv(TransJ, 1.0, &J.matrix, u, 0.0, v); + + if (JTJ) + gsl_blas_dsyrk(CblasLower, CblasTrans, 1.0, &J.matrix, 0.0, JTJ); + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +biggs_fvv (const gsl_vector * x, const gsl_vector * v, + void *params, gsl_vector * fvv) +{ + double x1 = gsl_vector_get(x, 0); + double x2 = gsl_vector_get(x, 1); + double x3 = gsl_vector_get(x, 2); + double x4 = gsl_vector_get(x, 3); + double x5 = gsl_vector_get(x, 4); + double x6 = gsl_vector_get(x, 5); + double v1 = gsl_vector_get(v, 0); + double v2 = gsl_vector_get(v, 1); + double v3 = gsl_vector_get(v, 2); + double v4 = gsl_vector_get(v, 3); + double v5 = gsl_vector_get(v, 4); + double v6 = gsl_vector_get(v, 5); + size_t i; + + for (i = 0; i < biggs_N; ++i) + { + double ti = 0.1 * (i + 1.0); + double term1 = exp(-ti * x1); + double term2 = exp(-ti * x2); + double term3 = exp(-ti * x5); + + gsl_vector_set(fvv, i, ti * term1 * term2 * term3 * + (v1/(term2*term3)*(-2*v3 + ti*v1*x3) - + v2/(term1*term3)*(-2*v4 + ti*v2*x4) + + v5/(term1*term2)*(-2*v6 + ti*v5*x6))); + } + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static gsl_multilarge_nlinear_fdf biggs_func = +{ + biggs_f, + biggs_df, + biggs_fvv, + biggs_N, + biggs_P, + NULL, + 0, + 0, + 0, + 0 +}; + +static test_fdf_problem biggs_problem = +{ + "biggs", + biggs_x0, + NULL, + &biggs_epsrel, + &biggs_checksol, + &biggs_func +}; diff --git a/gsl-2.5/multilarge_nlinear/test_box.c b/gsl-2.5/multilarge_nlinear/test_box.c new file mode 100644 index 00000000..aa36f5cd --- /dev/null +++ b/gsl-2.5/multilarge_nlinear/test_box.c @@ -0,0 +1,154 @@ +#define box_N 10 /* can be >= p */ +#define box_P 3 + +/* dogleg method fails with recommended starting point, so use + * a slightly easier x0 */ +/*static double box_x0[box_P] = { 0.0, 10.0, 20.0 };*/ +static double box_x0[box_P] = { 5.0, 10.0, 2.0 }; +static double box_epsrel = 1.0e-12; + +static double box_J[box_N * box_P]; + +static void +box_checksol(const double x[], const double sumsq, + const double epsrel, const char *sname, + const char *pname) +{ + const double sumsq_exact = 0.0; + const double eps = 1.0e-6; + + gsl_test_rel(sumsq, sumsq_exact, epsrel, "%s/%s sumsq", + sname, pname); + + /* there are 3 possible solution vectors */ + + if (fabs(x[2] - 1.0) < eps) + { + /* case 1: x* = [ 1; 10; 1 ] */ + gsl_test_rel(x[0], 1.0, epsrel, "%s/%s i=0", + sname, pname); + gsl_test_rel(x[1], 10.0, epsrel, "%s/%s i=1", + sname, pname); + gsl_test_rel(x[2], 1.0, epsrel, "%s/%s i=2", + sname, pname); + } + else if (fabs(x[2] + 1.0) < eps) + { + /* case 2: x* = [ 10; 1; -1 ] */ + gsl_test_rel(x[0], 10.0, epsrel, "%s/%s i=0", + sname, pname); + gsl_test_rel(x[1], 1.0, epsrel, "%s/%s i=1", + sname, pname); + gsl_test_rel(x[2], -1.0, epsrel, "%s/%s i=2", + sname, pname); + } + else + { + /* case 3: x* = [ a; a; 0 ] for any a */ + gsl_test_rel(x[0], x[1], epsrel, "%s/%s i=0,1", + sname, pname); + gsl_test_rel(x[2], 0.0, epsrel, "%s/%s i=2", + sname, pname); + } +} + +static int +box_f (const gsl_vector * x, void *params, gsl_vector * f) +{ + double x1 = gsl_vector_get(x, 0); + double x2 = gsl_vector_get(x, 1); + double x3 = gsl_vector_get(x, 2); + size_t i; + + for (i = 0; i < box_N; ++i) + { + double ti = (i + 1.0) / 10.0; + double fi = exp(-x1*ti) - exp(-x2*ti) - x3*(exp(-ti) - exp(-10.0*ti)); + gsl_vector_set(f, i, fi); + } + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +box_df (CBLAS_TRANSPOSE_t TransJ, const gsl_vector * x, + const gsl_vector * u, void * params, gsl_vector * v, + gsl_matrix * JTJ) +{ + gsl_matrix_view J = gsl_matrix_view_array(box_J, box_N, box_P); + double x1 = gsl_vector_get(x, 0); + double x2 = gsl_vector_get(x, 1); + size_t i; + + for (i = 0; i < box_N; ++i) + { + double ti = (i + 1.0) / 10.0; + double term1 = exp(-x1*ti); + double term2 = exp(-x2*ti); + double term3 = exp(-10.0*ti) - exp(-ti); + + gsl_matrix_set(&J.matrix, i, 0, -ti*term1); + gsl_matrix_set(&J.matrix, i, 1, ti*term2); + gsl_matrix_set(&J.matrix, i, 2, term3); + } + + if (v) + gsl_blas_dgemv(TransJ, 1.0, &J.matrix, u, 0.0, v); + + if (JTJ) + gsl_blas_dsyrk(CblasLower, CblasTrans, 1.0, &J.matrix, 0.0, JTJ); + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +box_fvv (const gsl_vector * x, const gsl_vector * v, + void *params, gsl_vector * fvv) +{ + double x1 = gsl_vector_get(x, 0); + double x2 = gsl_vector_get(x, 1); + double v1 = gsl_vector_get(v, 0); + double v2 = gsl_vector_get(v, 1); + size_t i; + + for (i = 0; i < box_N; ++i) + { + double ti = (i + 1.0) / 10.0; + double term1 = exp(-x1*ti); + double term2 = exp(-x2*ti); + + gsl_vector_set(fvv, i, ti * ti * (v1*v1*term1 - v2*v2*term2)); + } + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static gsl_multilarge_nlinear_fdf box_func = +{ + box_f, + box_df, + box_fvv, + box_N, + box_P, + NULL, + 0, + 0, + 0, + 0 +}; + +static test_fdf_problem box_problem = +{ + "box3d", + box_x0, + NULL, + &box_epsrel, + &box_checksol, + &box_func +}; diff --git a/gsl-2.5/multilarge_nlinear/test_boxbod.c b/gsl-2.5/multilarge_nlinear/test_boxbod.c new file mode 100644 index 00000000..9454aa93 --- /dev/null +++ b/gsl-2.5/multilarge_nlinear/test_boxbod.c @@ -0,0 +1,154 @@ +#define boxbod_N 6 +#define boxbod_P 2 + +static double boxbod_x0a[boxbod_P] = { 1.0, 1.0 }; +static double boxbod_x0b[boxbod_P] = { 100.0, 0.75 }; +static double boxbod_epsrel = 1.0e-7; + +static double boxbod_J[boxbod_N * boxbod_P]; + +static double boxbod_sigma[boxbod_P] = { + 1.2354515176E+01, 1.0455993237E-01 +}; + +static double boxbod_X[boxbod_N] = { 1.0, 2.0, 3.0, 5.0, 7.0, 10.0 }; + +static double boxbod_F[boxbod_N] = { 109.0, 149.0, 149.0, 191.0, + 213.0, 224.0 }; + +static void +boxbod_checksol(const double x[], const double sumsq, + const double epsrel, const char *sname, + const char *pname) +{ + size_t i; + const double sumsq_exact = 1.1680088766E+03; + const double boxbod_x[boxbod_P] = { 2.1380940889E+02, + 5.4723748542E-01 }; + + gsl_test_rel(sumsq, sumsq_exact, epsrel, "%s/%s sumsq", + sname, pname); + + for (i = 0; i < boxbod_P; ++i) + { + gsl_test_rel(x[i], boxbod_x[i], epsrel, "%s/%s i=%zu", + sname, pname, i); + } +} + + +static int +boxbod_f (const gsl_vector * x, void *params, gsl_vector * f) +{ + double b[boxbod_P]; + size_t i; + + for (i = 0; i < boxbod_P; i++) + { + b[i] = gsl_vector_get(x, i); + } + + for (i = 0; i < boxbod_N; i++) + { + double xi = boxbod_X[i]; + double yi; + + yi = b[0] * (1.0 - exp(-b[1] * xi)); + gsl_vector_set (f, i, yi - boxbod_F[i]); + } + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +boxbod_df (CBLAS_TRANSPOSE_t TransJ, const gsl_vector * x, + const gsl_vector * u, void * params, gsl_vector * v, + gsl_matrix * JTJ) +{ + gsl_matrix_view J = gsl_matrix_view_array(boxbod_J, boxbod_N, boxbod_P); + double b[boxbod_P]; + size_t i; + + for (i = 0; i < boxbod_P; i++) + { + b[i] = gsl_vector_get(x, i); + } + + for (i = 0; i < boxbod_N; i++) + { + double xi = boxbod_X[i]; + double term = exp(-b[1] * xi); + + gsl_matrix_set (&J.matrix, i, 0, 1.0 - term); + gsl_matrix_set (&J.matrix, i, 1, b[0] * term * xi); + } + + if (v) + gsl_blas_dgemv(TransJ, 1.0, &J.matrix, u, 0.0, v); + + if (JTJ) + gsl_blas_dsyrk(CblasLower, CblasTrans, 1.0, &J.matrix, 0.0, JTJ); + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +boxbod_fvv (const gsl_vector * x, const gsl_vector * v, + void *params, gsl_vector * fvv) +{ + double x1 = gsl_vector_get(x, 0); + double x2 = gsl_vector_get(x, 1); + double v1 = gsl_vector_get(v, 0); + double v2 = gsl_vector_get(v, 1); + size_t i; + + for (i = 0; i < boxbod_N; i++) + { + double ti = boxbod_X[i]; + double term = exp(-x2 * ti); + + gsl_vector_set(fvv, i, term * ti * v2 * (2*v1 - ti*v2*x1)); + } + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static gsl_multilarge_nlinear_fdf boxbod_func = +{ + boxbod_f, + boxbod_df, + boxbod_fvv, + boxbod_N, + boxbod_P, + NULL, + 0, + 0, + 0, + 0 +}; + +static test_fdf_problem boxboda_problem = +{ + "nist-boxboda", + boxbod_x0a, + boxbod_sigma, + &boxbod_epsrel, + &boxbod_checksol, + &boxbod_func +}; + +static test_fdf_problem boxbodb_problem = +{ + "nist-boxbodb", + boxbod_x0b, + boxbod_sigma, + &boxbod_epsrel, + &boxbod_checksol, + &boxbod_func +}; diff --git a/gsl-2.5/multilarge_nlinear/test_brown1.c b/gsl-2.5/multilarge_nlinear/test_brown1.c new file mode 100644 index 00000000..167c7c07 --- /dev/null +++ b/gsl-2.5/multilarge_nlinear/test_brown1.c @@ -0,0 +1,137 @@ +#define brown1_N 20 +#define brown1_P 4 + +static double brown1_x0[brown1_P] = { 25, 5, -5, -1 }; +static double brown1_epsrel = 1.0e-5; + +static double brown1_J[brown1_N * brown1_P]; + +static void +brown1_checksol(const double x[], const double sumsq, + const double epsrel, const char *sname, + const char *pname) +{ + size_t i; + const double sumsq_exact = 8.582220162635628e+04; + const double brown1_x[brown1_P] = { + -1.159443990239263e+01, 1.320363005221244e+01, + -4.034395456782477e-01, 2.367789088597534e-01 }; + + gsl_test_rel(sumsq, sumsq_exact, epsrel, "%s/%s sumsq", + sname, pname); + + for (i = 0; i < brown1_P; ++i) + { + gsl_test_rel(x[i], brown1_x[i], epsrel, "%s/%s i=%zu", + sname, pname, i); + } +} + +static int +brown1_f (const gsl_vector * x, void *params, gsl_vector * f) +{ + double x0 = gsl_vector_get (x, 0); + double x1 = gsl_vector_get (x, 1); + double x2 = gsl_vector_get (x, 2); + double x3 = gsl_vector_get (x, 3); + size_t i; + + for (i = 0; i < brown1_N; i++) + { + double ti = 0.2 * (i + 1); + double ui = x0 + x1 * ti - exp (ti); + double vi = x2 + x3 * sin (ti) - cos (ti); + + gsl_vector_set (f, i, ui * ui + vi * vi); + } + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +brown1_df (CBLAS_TRANSPOSE_t TransJ, const gsl_vector * x, + const gsl_vector * u, void * params, gsl_vector * v, + gsl_matrix * JTJ) +{ + gsl_matrix_view J = gsl_matrix_view_array(brown1_J, brown1_N, brown1_P); + double x0 = gsl_vector_get (x, 0); + double x1 = gsl_vector_get (x, 1); + double x2 = gsl_vector_get (x, 2); + double x3 = gsl_vector_get (x, 3); + size_t i; + + for (i = 0; i < brown1_N; i++) + { + double ti = 0.2 * (i + 1); + double ui = x0 + x1 * ti - exp (ti); + double vi = x2 + x3 * sin (ti) - cos (ti); + + gsl_matrix_set (&J.matrix, i, 0, 2 * ui); + gsl_matrix_set (&J.matrix, i, 1, 2 * ui * ti); + gsl_matrix_set (&J.matrix, i, 2, 2 * vi); + gsl_matrix_set (&J.matrix, i, 3, 2 * vi * sin (ti)); + + } + + if (v) + gsl_blas_dgemv(TransJ, 1.0, &J.matrix, u, 0.0, v); + + if (JTJ) + gsl_blas_dsyrk(CblasLower, CblasTrans, 1.0, &J.matrix, 0.0, JTJ); + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +brown1_fvv (const gsl_vector * x, const gsl_vector * v, + void *params, gsl_vector * fvv) +{ + double v0 = gsl_vector_get (v, 0); + double v1 = gsl_vector_get (v, 1); + double v2 = gsl_vector_get (v, 2); + double v3 = gsl_vector_get (v, 3); + size_t i; + + for (i = 0; i < brown1_N; i++) + { + double ti = 0.2 * (i + 1); + double term1 = v0 + ti*v1; + double term2 = v3*sin(ti); + + gsl_vector_set (fvv, i, 2.0 * (term1*term1 + v2*v2 + + term2 * (2*v2 + term2))); + } + + (void)x; /* avoid unused parameter warning */ + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static gsl_multilarge_nlinear_fdf brown1_func = +{ + brown1_f, + brown1_df, + brown1_fvv, + brown1_N, + brown1_P, + NULL, + 0, + 0, + 0, + 0 +}; + +static test_fdf_problem brown1_problem = +{ + "brown_dennis", + brown1_x0, + NULL, + &brown1_epsrel, + &brown1_checksol, + &brown1_func +}; diff --git a/gsl-2.5/multilarge_nlinear/test_brown2.c b/gsl-2.5/multilarge_nlinear/test_brown2.c new file mode 100644 index 00000000..b4542776 --- /dev/null +++ b/gsl-2.5/multilarge_nlinear/test_brown2.c @@ -0,0 +1,181 @@ +#define brown2_N 5 +#define brown2_P 5 + +static double brown2_x0[brown2_P] = { 0.5, 0.5, 0.5, 0.5, 0.5 }; +static double brown2_epsrel = 1.0e-12; + +static double brown2_J[brown2_N * brown2_P]; + +static void +brown2_checksol(const double x[], const double sumsq, + const double epsrel, const char *sname, + const char *pname) +{ + size_t i; + double sumsq_exact; + double alpha; + const double p = (double) brown2_P; + double alpha1mp, lhs, lastel; + + if (sumsq < 0.5) + { + /* sumsq = 0 case */ + + sumsq_exact = 0.0; + alpha = x[0]; + alpha1mp = pow(alpha, 1.0 - p); + lhs = p*pow(alpha, p) - (p + 1)/alpha1mp; + lastel = alpha1mp; + + gsl_test_rel(lhs, -1.0, epsrel, "%s/%s alpha lhs", + sname, pname); + } + else + { + /* sumsq = 1 case */ + + sumsq_exact = 1.0; + alpha = 0.0; + lastel = p + 1.0; + } + + gsl_test_rel(sumsq, sumsq_exact, epsrel, "%s/%s sumsq", + sname, pname); + + for (i = 1; i < brown2_P - 1; ++i) + { + gsl_test_rel(x[i], alpha, epsrel, "%s/%s i=%zu", + sname, pname, i); + } + + gsl_test_rel(x[brown2_P - 1], lastel, epsrel, "%s/%s last element", + sname, pname); +} + +static int +brown2_f (const gsl_vector * x, void *params, gsl_vector * f) +{ + size_t i; + double sum = -(brown2_N + 1.0); + double prod = 1.0; + + for (i = 0; i < brown2_N; ++i) + { + double xi = gsl_vector_get(x, i); + sum += xi; + prod *= xi; + } + + for (i = 0; i < brown2_N - 1; ++i) + { + double xi = gsl_vector_get(x, i); + gsl_vector_set(f, i, xi + sum); + } + + gsl_vector_set(f, brown2_N - 1, prod - 1.0); + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +brown2_df (CBLAS_TRANSPOSE_t TransJ, const gsl_vector * x, + const gsl_vector * u, void * params, gsl_vector * v, + gsl_matrix * JTJ) +{ + gsl_matrix_view J = gsl_matrix_view_array(brown2_J, brown2_N, brown2_P); + size_t i, j; + + for (j = 0; j < brown2_P; ++j) + { + double prod = 1.0; + + for (i = 0; i < brown2_N - 1; i++) + { + double Jij = (i == j) ? 2.0 : 1.0; + gsl_matrix_set(&J.matrix, i, j, Jij); + } + + for (i = 0; i < brown2_N; i++) + { + if (i != j) + prod *= gsl_vector_get(x, i); + } + + gsl_matrix_set(&J.matrix, brown2_N - 1, j, prod); + } + + if (v) + gsl_blas_dgemv(TransJ, 1.0, &J.matrix, u, 0.0, v); + + if (JTJ) + gsl_blas_dsyrk(CblasLower, CblasTrans, 1.0, &J.matrix, 0.0, JTJ); + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +brown2_fvv (const gsl_vector * x, const gsl_vector * v, + void *params, gsl_vector * fvv) +{ + size_t i, j, k; + double sum = 0.0; + + gsl_vector_set_zero(fvv); + + for (k = 0; k < brown2_P; ++k) + { + double vk = gsl_vector_get(v, k); + + for (i = 0; i < brown2_P; ++i) + { + double vi = gsl_vector_get(v, i); + double delta = (i == k) ? 1.0 : 0.0; + double prod = 1.0; + + for (j = 0; j < brown2_N; ++j) + { + if (j != i && j != k) + { + double xj = gsl_vector_get(x, j); + prod *= xj; + } + } + + sum += vk * vi * (1.0 - delta) * prod; + } + } + + gsl_vector_set(fvv, brown2_N - 1, sum); + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static gsl_multilarge_nlinear_fdf brown2_func = +{ + brown2_f, + brown2_df, + brown2_fvv, + brown2_N, + brown2_P, + NULL, + 0, + 0, + 0, + 0 +}; + +static test_fdf_problem brown2_problem = +{ + "brown_almost_linear", + brown2_x0, + NULL, + &brown2_epsrel, + &brown2_checksol, + &brown2_func +}; diff --git a/gsl-2.5/multilarge_nlinear/test_brown3.c b/gsl-2.5/multilarge_nlinear/test_brown3.c new file mode 100644 index 00000000..53035952 --- /dev/null +++ b/gsl-2.5/multilarge_nlinear/test_brown3.c @@ -0,0 +1,109 @@ +#define brown3_N 3 +#define brown3_P 2 + +static double brown3_x0[brown3_P] = { 1.0, 1.0 }; +static double brown3_epsrel = 1.0e-12; + +static double brown3_J[brown3_N * brown3_P]; + +static void +brown3_checksol(const double x[], const double sumsq, + const double epsrel, const char *sname, + const char *pname) +{ + size_t i; + const double sumsq_exact = 0.0; + const double brown3_x[brown3_P] = { 1.0e6, 2.0e-6 }; + + gsl_test_rel(sumsq, sumsq_exact, epsrel, "%s/%s sumsq", + sname, pname); + + for (i = 0; i < brown3_P; ++i) + { + gsl_test_rel(x[i], brown3_x[i], epsrel, "%s/%s i=%zu", + sname, pname, i); + } +} + +static int +brown3_f (const gsl_vector * x, void *params, gsl_vector * f) +{ + double x1 = gsl_vector_get(x, 0); + double x2 = gsl_vector_get(x, 1); + + gsl_vector_set(f, 0, x1 - 1.0e6); + gsl_vector_set(f, 1, x2 - 2.0e-6); + gsl_vector_set(f, 2, x1*x2 - 2.0); + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +brown3_df (CBLAS_TRANSPOSE_t TransJ, const gsl_vector * x, + const gsl_vector * u, void * params, gsl_vector * v, + gsl_matrix * JTJ) +{ + gsl_matrix_view J = gsl_matrix_view_array(brown3_J, brown3_N, brown3_P); + double x1 = gsl_vector_get(x, 0); + double x2 = gsl_vector_get(x, 1); + + gsl_matrix_set_zero(&J.matrix); + + gsl_matrix_set(&J.matrix, 0, 0, 1.0); + gsl_matrix_set(&J.matrix, 1, 1, 1.0); + gsl_matrix_set(&J.matrix, 2, 0, x2); + gsl_matrix_set(&J.matrix, 2, 1, x1); + + if (v) + gsl_blas_dgemv(TransJ, 1.0, &J.matrix, u, 0.0, v); + + if (JTJ) + gsl_blas_dsyrk(CblasLower, CblasTrans, 1.0, &J.matrix, 0.0, JTJ); + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +brown3_fvv (const gsl_vector * x, const gsl_vector * v, + void *params, gsl_vector * fvv) +{ + double v1 = gsl_vector_get(v, 0); + double v2 = gsl_vector_get(v, 1); + + gsl_vector_set(fvv, 0, 0.0); + gsl_vector_set(fvv, 1, 0.0); + gsl_vector_set(fvv, 2, 2.0 * v1 * v2); + + (void)x; /* avoid unused parameter warning */ + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static gsl_multilarge_nlinear_fdf brown3_func = +{ + brown3_f, + brown3_df, + brown3_fvv, + brown3_N, + brown3_P, + NULL, + 0, + 0, + 0, + 0 +}; + +static test_fdf_problem brown3_problem = +{ + "brown_badly_scaled", + brown3_x0, + NULL, + &brown3_epsrel, + &brown3_checksol, + &brown3_func +}; diff --git a/gsl-2.5/multilarge_nlinear/test_eckerle.c b/gsl-2.5/multilarge_nlinear/test_eckerle.c new file mode 100644 index 00000000..326a08e2 --- /dev/null +++ b/gsl-2.5/multilarge_nlinear/test_eckerle.c @@ -0,0 +1,164 @@ +#define eckerle_N 35 +#define eckerle_P 3 + +static double eckerle_x0a[eckerle_P] = { 1.0, 10.0, 500.0 }; +static double eckerle_x0b[eckerle_P] = { 1.5, 5.0, 450.0 }; +static double eckerle_epsrel = 1.0e-7; + +static double eckerle_J[eckerle_N * eckerle_P]; + +static double eckerle_sigma[eckerle_P] = { + 1.5408051163E-02, 4.6803020753E-02, 4.6800518816E-02 +}; + +static double eckerle_X[eckerle_N] = { + 400.000000, 405.000000, 410.000000, 415.000000, 420.000000, + 425.000000, 430.000000, 435.000000, 436.500000, 438.000000, + 439.500000, 441.000000, 442.500000, 444.000000, 445.500000, + 447.000000, 448.500000, 450.000000, 451.500000, 453.000000, + 454.500000, 456.000000, 457.500000, 459.000000, 460.500000, + 462.000000, 463.500000, 465.000000, 470.000000, 475.000000, + 480.000000, 485.000000, 490.000000, 495.000000, 500.000000 }; + +static double eckerle_F[eckerle_N] = { + 0.0001575, 0.0001699, 0.0002350, 0.0003102, 0.0004917, + 0.0008710, 0.0017418, 0.0046400, 0.0065895, 0.0097302, + 0.0149002, 0.0237310, 0.0401683, 0.0712559, 0.1264458, + 0.2073413, 0.2902366, 0.3445623, 0.3698049, 0.3668534, + 0.3106727, 0.2078154, 0.1164354, 0.0616764, 0.0337200, + 0.0194023, 0.0117831, 0.0074357, 0.0022732, 0.0008800, + 0.0004579, 0.0002345, 0.0001586, 0.0001143, 0.0000710 }; + +static void +eckerle_checksol(const double x[], const double sumsq, + const double epsrel, const char *sname, + const char *pname) +{ + size_t i; + const double sumsq_exact = 1.4635887487E-03; + const double eckerle_x[eckerle_P] = { 1.5543827178E+00, + 4.0888321754E+00, + 4.5154121844E+02 }; + double new_x[3]; + + gsl_test_rel(sumsq, sumsq_exact, epsrel, "%s/%s sumsq", + sname, pname); + + /* x1 and x2 are unique up to a sign, but they must be + * the same sign */ + if (x[0] < 0.0 && x[1] < 0.0) + { + new_x[0] = -x[0]; + new_x[1] = -x[1]; + } + else + { + new_x[0] = x[0]; + new_x[1] = x[1]; + } + + new_x[2] = x[2]; + + for (i = 0; i < eckerle_P; ++i) + { + gsl_test_rel(new_x[i], eckerle_x[i], epsrel, "%s/%s i=%zu", + sname, pname, i); + } +} + +static int +eckerle_f (const gsl_vector * x, void *params, gsl_vector * f) +{ + double b[eckerle_P]; + size_t i; + + for (i = 0; i < eckerle_P; i++) + { + b[i] = gsl_vector_get(x, i); + } + + for (i = 0; i < eckerle_N; i++) + { + double xi = eckerle_X[i]; + double term = xi - b[2]; + double yi; + + yi = b[0] / b[1] * exp(-0.5 * term * term / b[1] / b[1]); + gsl_vector_set (f, i, yi - eckerle_F[i]); + } + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +eckerle_df (CBLAS_TRANSPOSE_t TransJ, const gsl_vector * x, + const gsl_vector * u, void * params, gsl_vector * v, + gsl_matrix * JTJ) +{ + gsl_matrix_view J = gsl_matrix_view_array(eckerle_J, eckerle_N, eckerle_P); + double b[eckerle_P]; + size_t i; + + for (i = 0; i < eckerle_P; i++) + { + b[i] = gsl_vector_get(x, i); + } + + for (i = 0; i < eckerle_N; i++) + { + double xi = eckerle_X[i]; + double term1 = xi - b[2]; + double term2 = exp(-0.5 * term1 * term1 / (b[1] * b[1])); + + gsl_matrix_set (&J.matrix, i, 0, term2 / b[1]); + gsl_matrix_set (&J.matrix, i, 1, + -b[0] * term2 / (b[1] * b[1]) + b[0] / pow(b[1], 4.0) * term2 * term1 * term1); + gsl_matrix_set (&J.matrix, i, 2, b[0] / pow(b[1], 3.0) * term1 * term2); + } + + if (v) + gsl_blas_dgemv(TransJ, 1.0, &J.matrix, u, 0.0, v); + + if (JTJ) + gsl_blas_dsyrk(CblasLower, CblasTrans, 1.0, &J.matrix, 0.0, JTJ); + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static gsl_multilarge_nlinear_fdf eckerle_func = +{ + eckerle_f, + eckerle_df, + NULL, /* analytic expression too complex */ + eckerle_N, + eckerle_P, + NULL, + 0, + 0, + 0, + 0 +}; + +static test_fdf_problem eckerlea_problem = +{ + "nist-eckerlea", + eckerle_x0a, + eckerle_sigma, + &eckerle_epsrel, + &eckerle_checksol, + &eckerle_func +}; + +static test_fdf_problem eckerleb_problem = +{ + "nist-eckerleb", + eckerle_x0b, + eckerle_sigma, + &eckerle_epsrel, + &eckerle_checksol, + &eckerle_func +}; diff --git a/gsl-2.5/multilarge_nlinear/test_enso.c b/gsl-2.5/multilarge_nlinear/test_enso.c new file mode 100644 index 00000000..9cc3e1af --- /dev/null +++ b/gsl-2.5/multilarge_nlinear/test_enso.c @@ -0,0 +1,182 @@ +#define enso_N 168 +#define enso_P 9 + +static double enso_x0a[enso_P] = { 11.0, 3.0, 0.5, 40.0, -0.7, -1.3, 25.0, -0.3, 1.4 }; +static double enso_x0b[enso_P] = { 10.0, 3.0, 0.5, 44.0, -1.5, 0.5, 26.0, -0.1, 1.5 }; +static double enso_epsrel = 1.0e-3; + +static double enso_J[enso_N * enso_P]; + +static double enso_sigma[enso_P] = { + 1.7488832467E-01, 2.4310052139E-01, 2.4354686618E-01, 9.4408025976E-01, 2.8078369611E-01, + 4.8073701119E-01, 4.1612939130E-01, 5.1460022911E-01, 2.5434468893E-01 +}; + +static double enso_F[enso_N] = { + 12.90000, 11.30000, 10.60000, 11.20000, 10.90000, + 7.500000, 7.700000, 11.70000, 12.90000, 14.30000, + 10.90000, 13.70000, 17.10000, 14.00000, 15.30000, + 8.500000, 5.700000, 5.500000, 7.600000, 8.600000, + 7.300000, 7.600000, 12.70000, 11.00000, 12.70000, + 12.90000, 13.00000, 10.90000, 10.400000, 10.200000, + 8.000000, 10.90000, 13.60000, 10.500000, 9.200000, + 12.40000, 12.70000, 13.30000, 10.100000, 7.800000, + 4.800000, 3.000000, 2.500000, 6.300000, 9.700000, + 11.60000, 8.600000, 12.40000, 10.500000, 13.30000, + 10.400000, 8.100000, 3.700000, 10.70000, 5.100000, + 10.400000, 10.90000, 11.70000, 11.40000, 13.70000, + 14.10000, 14.00000, 12.50000, 6.300000, 9.600000, + 11.70000, 5.000000, 10.80000, 12.70000, 10.80000, + 11.80000, 12.60000, 15.70000, 12.60000, 14.80000, + 7.800000, 7.100000, 11.20000, 8.100000, 6.400000, + 5.200000, 12.00000, 10.200000, 12.70000, 10.200000, + 14.70000, 12.20000, 7.100000, 5.700000, 6.700000, + 3.900000, 8.500000, 8.300000, 10.80000, 16.70000, + 12.60000, 12.50000, 12.50000, 9.800000, 7.200000, + 4.100000, 10.60000, 10.100000, 10.100000, 11.90000, + 13.60000, 16.30000, 17.60000, 15.50000, 16.00000, + 15.20000, 11.20000, 14.30000, 14.50000, 8.500000, + 12.00000, 12.70000, 11.30000, 14.50000, 15.10000, + 10.400000, 11.50000, 13.40000, 7.500000, 0.6000000, + 0.3000000, 5.500000, 5.000000, 4.600000, 8.200000, + 9.900000, 9.200000, 12.50000, 10.90000, 9.900000, + 8.900000, 7.600000, 9.500000, 8.400000, 10.70000, + 13.60000, 13.70000, 13.70000, 16.50000, 16.80000, + 17.10000, 15.40000, 9.500000, 6.100000, 10.100000, + 9.300000, 5.300000, 11.20000, 16.60000, 15.60000, + 12.00000, 11.50000, 8.600000, 13.80000, 8.700000, + 8.600000, 8.600000, 8.700000, 12.80000, 13.20000, + 14.00000, 13.40000, 14.80000 +}; + +static void +enso_checksol(const double x[], const double sumsq, + const double epsrel, const char *sname, + const char *pname) +{ + size_t i; + const double sumsq_exact = 7.8853978668E+02; + const double enso_x[enso_P] = { + 1.0510749193E+01, 3.0762128085E+00, 5.3280138227E-01, + 4.4311088700E+01, -1.6231428586E+00, 5.2554493756E-01, + 2.6887614440E+01, 2.1232288488E-01, 1.4966870418E+00 }; + + gsl_test_rel(sumsq, sumsq_exact, epsrel, "%s/%s sumsq", + sname, pname); + + for (i = 0; i < enso_P; ++i) + { + gsl_test_rel(x[i], enso_x[i], epsrel, "%s/%s i=%zu", + sname, pname, i); + } +} + + +static int +enso_f (const gsl_vector * x, void *params, gsl_vector * f) +{ + double b[enso_P]; + size_t i; + + for (i = 0; i < enso_P; i++) + { + b[i] = gsl_vector_get(x, i); + } + + for (i = 0; i < enso_N; i++) + { + double t = (i + 1.0); + double y; + y = b[0]; + y += b[1] * cos(2*M_PI*t/12); + y += b[2] * sin(2*M_PI*t/12); + y += b[4] * cos(2*M_PI*t/b[3]); + y += b[5] * sin(2*M_PI*t/b[3]); + y += b[7] * cos(2*M_PI*t/b[6]); + y += b[8] * sin(2*M_PI*t/b[6]); + + gsl_vector_set (f, i, enso_F[i] - y); + } + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +enso_df (CBLAS_TRANSPOSE_t TransJ, const gsl_vector * x, + const gsl_vector * u, void * params, gsl_vector * v, + gsl_matrix * JTJ) +{ + gsl_matrix_view J = gsl_matrix_view_array(enso_J, enso_N, enso_P); + double b[enso_P]; + size_t i; + + for (i = 0; i < enso_P; i++) + { + b[i] = gsl_vector_get(x, i); + } + + for (i = 0; i < enso_N; i++) + { + double t = (i + 1.0); + + gsl_matrix_set (&J.matrix, i, 0, -1.0); + gsl_matrix_set (&J.matrix, i, 1, -cos(2*M_PI*t/12)); + gsl_matrix_set (&J.matrix, i, 2, -sin(2*M_PI*t/12)); + gsl_matrix_set (&J.matrix, i, 3, + -b[4]*(2*M_PI*t/(b[3]*b[3]))*sin(2*M_PI*t/b[3]) + +b[5]*(2*M_PI*t/(b[3]*b[3]))*cos(2*M_PI*t/b[3])); + gsl_matrix_set (&J.matrix, i, 4, -cos(2*M_PI*t/b[3])); + gsl_matrix_set (&J.matrix, i, 5, -sin(2*M_PI*t/b[3])); + gsl_matrix_set (&J.matrix, i, 6, + -b[7] * (2*M_PI*t/(b[6]*b[6])) * sin(2*M_PI*t/b[6]) + +b[8] * (2*M_PI*t/(b[6]*b[6])) * cos(2*M_PI*t/b[6])); + gsl_matrix_set (&J.matrix, i, 7, -cos(2*M_PI*t/b[6])); + gsl_matrix_set (&J.matrix, i, 8, -sin(2*M_PI*t/b[6])); + } + + if (v) + gsl_blas_dgemv(TransJ, 1.0, &J.matrix, u, 0.0, v); + + if (JTJ) + gsl_blas_dsyrk(CblasLower, CblasTrans, 1.0, &J.matrix, 0.0, JTJ); + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static gsl_multilarge_nlinear_fdf enso_func = +{ + enso_f, + enso_df, + NULL, /* analytic expression too complex */ + enso_N, + enso_P, + NULL, + 0, + 0, + 0, + 0 +}; + +static test_fdf_problem ensoa_problem = +{ + "nist-ENSOa", + enso_x0a, + enso_sigma, + &enso_epsrel, + &enso_checksol, + &enso_func +}; + +static test_fdf_problem ensob_problem = +{ + "nist-ENSOb", + enso_x0b, + enso_sigma, + &enso_epsrel, + &enso_checksol, + &enso_func +}; diff --git a/gsl-2.5/multilarge_nlinear/test_exp1.c b/gsl-2.5/multilarge_nlinear/test_exp1.c new file mode 100644 index 00000000..7455bd67 --- /dev/null +++ b/gsl-2.5/multilarge_nlinear/test_exp1.c @@ -0,0 +1,149 @@ +#define exp1_N 45 +#define exp1_P 4 + +static double exp1_x0[exp1_P] = { -1.0, -2.0, 1.0, -1.0 }; +static double exp1_epsrel = 1.0e-4; + +static double exp1_J[exp1_N * exp1_P]; + +static double exp1_Y[exp1_N] = { +0.090542, 0.124569, 0.179367, 0.195654, 0.269707, +0.286027, 0.289892, 0.317475, 0.308191, 0.336995, +0.348371, 0.321337, 0.299423, 0.338972, 0.304763, +0.288903, 0.300820, 0.303974, 0.283987, 0.262078, +0.281593, 0.267531, 0.218926, 0.225572, 0.200594, +0.197375, 0.182440, 0.183892, 0.152285, 0.174028, +0.150874, 0.126220, 0.126266, 0.106384, 0.118923, +0.091868, 0.128926, 0.119273, 0.115997, 0.105831, +0.075261, 0.068387, 0.090823, 0.085205, 0.067203 +}; + +static void +exp1_checksol(const double x[], const double sumsq, + const double epsrel, const char *sname, + const char *pname) +{ + size_t i; + const double sumsq_exact = 1.0e-2; + const double exp1_x[exp1_P] = { -4.0, -5.0, 4.0, -4.0 }; /* approx */ + + gsl_test_rel(sumsq, sumsq_exact, epsrel, "%s/%s sumsq", + sname, pname); + + for (i = 0; i < exp1_P; ++i) + { + gsl_test_rel(x[i], exp1_x[i], epsrel, "%s/%s i=%zu", + sname, pname, i); + } +} + +static int +exp1_f (const gsl_vector * x, void *params, gsl_vector * f) +{ + double x1 = gsl_vector_get(x, 0); + double x2 = gsl_vector_get(x, 1); + double x3 = gsl_vector_get(x, 2); + double x4 = gsl_vector_get(x, 3); + size_t i; + + for (i = 0; i < exp1_N; ++i) + { + double ti = 0.02*(i + 1.0); + double yi = exp1_Y[i]; + double fi = yi - (x3*exp(x1*ti) + x4*exp(x2*ti)); + gsl_vector_set(f, i, fi); + } + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +exp1_df (CBLAS_TRANSPOSE_t TransJ, const gsl_vector * x, + const gsl_vector * u, void * params, gsl_vector * v, + gsl_matrix * JTJ) +{ + gsl_matrix_view J = gsl_matrix_view_array(exp1_J, exp1_N, exp1_P); + double x1 = gsl_vector_get(x, 0); + double x2 = gsl_vector_get(x, 1); + double x3 = gsl_vector_get(x, 2); + double x4 = gsl_vector_get(x, 3); + size_t i; + + for (i = 0; i < exp1_N; ++i) + { + double ti = 0.02*(i + 1.0); + double term1 = exp(x1*ti); + double term2 = exp(x2*ti); + + gsl_matrix_set(&J.matrix, i, 0, -x3*ti*term1); + gsl_matrix_set(&J.matrix, i, 1, -x4*ti*term2); + gsl_matrix_set(&J.matrix, i, 2, -term1); + gsl_matrix_set(&J.matrix, i, 3, -term2); + } + + if (v) + gsl_blas_dgemv(TransJ, 1.0, &J.matrix, u, 0.0, v); + + if (JTJ) + gsl_blas_dsyrk(CblasLower, CblasTrans, 1.0, &J.matrix, 0.0, JTJ); + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +exp1_fvv (const gsl_vector * x, const gsl_vector * v, + void *params, gsl_vector * fvv) +{ + double x1 = gsl_vector_get(x, 0); + double x2 = gsl_vector_get(x, 1); + double x3 = gsl_vector_get(x, 2); + double x4 = gsl_vector_get(x, 3); + double v1 = gsl_vector_get(v, 0); + double v2 = gsl_vector_get(v, 1); + double v3 = gsl_vector_get(v, 2); + double v4 = gsl_vector_get(v, 3); + size_t i; + + for (i = 0; i < exp1_N; ++i) + { + double ti = 0.02*(i + 1.0); + double term1 = exp(x1*ti); + double term2 = exp(x2*ti); + double term3 = 2*v3 + ti*v1*x3; + double term4 = 2*v4 + ti*v2*x4; + + gsl_vector_set(fvv, i, -ti*(v1*term1*term3 + v2*term2*term4)); + } + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static gsl_multilarge_nlinear_fdf exp1_func = +{ + exp1_f, + exp1_df, + exp1_fvv, + exp1_N, + exp1_P, + NULL, + 0, + 0, + 0, + 0 +}; + +static test_fdf_problem exp1_problem = +{ + "expfit1", + exp1_x0, + NULL, + &exp1_epsrel, + &exp1_checksol, + &exp1_func +}; diff --git a/gsl-2.5/multilarge_nlinear/test_fdf.c b/gsl-2.5/multilarge_nlinear/test_fdf.c new file mode 100644 index 00000000..6b05bcc2 --- /dev/null +++ b/gsl-2.5/multilarge_nlinear/test_fdf.c @@ -0,0 +1,383 @@ +/* multilarge_nlinear/test_fdf.c + * + * Copyright (C) 2015, 2016 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +typedef struct +{ + const char *name; + double *x0; /* initial parameters (size p) */ + double *sigma; + double *epsrel; /* relative tolerance for solution checking */ + void (*checksol) (const double x[], const double sumsq, + const double epsrel, const char *sname, + const char *pname); + gsl_multilarge_nlinear_fdf *fdf; +} test_fdf_problem; + +#include "test_bard.c" +#include "test_beale.c" +#include "test_biggs.c" +#include "test_box.c" +#include "test_boxbod.c" +#include "test_brown1.c" +#include "test_brown2.c" +#include "test_brown3.c" +#include "test_eckerle.c" +#include "test_enso.c" +#include "test_exp1.c" +#include "test_gaussian.c" +#include "test_hahn1.c" +#include "test_helical.c" +#include "test_jennrich.c" +#include "test_kirby2.c" +#include "test_kowalik.c" +#include "test_lin1.c" +#include "test_lin2.c" +#include "test_lin3.c" +#include "test_meyer.c" +#include "test_meyerscal.c" +#include "test_osborne.c" +#include "test_penalty1.c" +#include "test_penalty2.c" +#include "test_powell1.c" +#include "test_powell2.c" +#include "test_powell3.c" +#include "test_rat42.c" +#include "test_rat43.c" +#include "test_rosenbrock.c" +#include "test_rosenbrocke.c" +#include "test_roth.c" +#include "test_thurber.c" +#include "test_vardim.c" +#include "test_watson.c" +#include "test_wood.c" + +#include "test_wnlin.c" + +static void test_fdf(const gsl_multilarge_nlinear_type * T, + const gsl_multilarge_nlinear_parameters * params, + const double xtol, const double gtol, + const double ftol, + const double epsrel, const double x0_scale, + test_fdf_problem *problem, + const double *wts); +static void test_fdf_checksol(const char *sname, const char *pname, + const double epsrel, + gsl_multilarge_nlinear_workspace *s, + test_fdf_problem *problem); +static void test_scale_x0(gsl_vector *x0, const double scale); + +/* + * FIXME: some test problems are disabled since they fail on certain + * solvers. Known failures are: + * + * Method test-problem + * ====== ============ + * dogleg thurbera + * dogleg rat43a + * cgst boxboda + */ + +static test_fdf_problem *test_problems[] = { + /* + * These test problems are taken from + * + * H. B. Nielsen, UCTP test problems for unconstrained optimization, + * IMM Department of Mathematical Modeling, Tech. Report + * IMM-REP-2000-17, 2000. + */ + &lin1_problem, /* 1 */ + &lin2_problem, /* 2 */ + &lin3_problem, /* 3 */ + &rosenbrock_problem, /* 4 */ + &helical_problem, /* 5 */ + &powell1_problem, /* 6 */ + &roth_problem, /* 7 */ + &bard_problem, /* 8 */ + &kowalik_problem, /* 9 */ + &meyer_problem, /* 10 */ + &watson_problem, /* 11 */ + &box_problem, /* 12 */ + &jennrich_problem, /* 13 */ + &brown1_problem, /* 14 */ + &brown2_problem, /* 16 */ + &osborne_problem, /* 17 */ + &exp1_problem, /* 18 */ + &meyerscal_problem, /* 20 */ + + &powell2_problem, + + /* + * These tests are from + * + * J. J. More, B. S. Garbow and K. E. Hillstrom, Testing + * Unconstrained Optimization Software, ACM Trans. Math. Soft. + * Vol 7, No 1, 1981. + * + * Many of these overlap with the Nielsen tests + */ + &rosenbrock_problem, /* 1 */ + &roth_problem, /* 2 */ + &powell3_problem, /* 3 */ + &brown3_problem, /* 4 */ + &beale_problem, /* 5 */ + &jennrich_problem, /* 6 */ + &helical_problem, /* 7 */ + &bard_problem, /* 8 */ + &gaussian_problem, /* 9 */ + &meyer_problem, /* 10 */ + &box_problem, /* 12 */ + &powell1_problem, /* 13 */ + &wood_problem, /* 14 */ + &kowalik_problem, /* 15 */ + &brown1_problem, /* 16 */ + &osborne_problem, /* 17 */ + &biggs_problem, /* 18 */ + &watson_problem, /* 20 */ + &rosenbrocke_problem, /* 21 */ + &penalty1_problem, /* 23 */ + &penalty2_problem, /* 24 */ + &vardim_problem, /* 25 */ + &brown2_problem, /* 27 */ + &lin1_problem, /* 32 */ + &lin2_problem, /* 33 */ + &lin3_problem, /* 34 */ + + /* NIST test cases */ + &kirby2a_problem, + &kirby2b_problem, + &hahn1a_problem, + &hahn1b_problem, + &ensoa_problem, + &ensob_problem, + /*&thurbera_problem,*/ + &thurberb_problem, + /*&boxboda_problem,*/ + &boxbodb_problem, + &rat42a_problem, + &rat42b_problem, + &eckerlea_problem, + &eckerleb_problem, + /*&rat43a_problem,*/ + &rat43b_problem, + + NULL +}; + +static void +test_fdf_main(const gsl_multilarge_nlinear_parameters * params) +{ + const double xtol = pow(GSL_DBL_EPSILON, 0.9); + const double gtol = pow(GSL_DBL_EPSILON, 0.9); + const double ftol = 0.0; + size_t i; + + for (i = 0; test_problems[i] != NULL; ++i) + { + test_fdf_problem *problem = test_problems[i]; + double epsrel = *(problem->epsrel); + + /*XXX: finite difference fvv not working yet */ + if (problem->fdf->fvv == NULL) + continue; + + test_fdf(gsl_multilarge_nlinear_trust, params, xtol, gtol, ftol, + epsrel, 1.0, problem, NULL); + +#if 0 /* XXX */ + /* test finite difference Jacobian */ + fdf.df = problem->fdf->df; + problem->fdf->df = NULL; + + test_fdf(gsl_multilarge_nlinear_trust, params, xtol, gtol, ftol, + 1.0e3 * epsrel, 1.0, problem, NULL); + + problem->fdf->df = fdf.df; +#endif + +#if 0 + if (params->trs == gsl_multilarge_nlinear_trs_lmaccel && problem->fdf->fvv != NULL) + { + /* test finite difference second directional derivative */ + fdf.fvv = problem->fdf->fvv; + problem->fdf->fvv = NULL; + + test_fdf(gsl_multilarge_nlinear_trust, params, xtol, gtol, ftol, + epsrel / params->h_fvv, 1.0, problem, NULL); + + problem->fdf->fvv = fdf.fvv; + } +#endif + } + + /* test weighted nonlinear least squares */ + + /* internal weighting in _f and _df functions */ + test_fdf(gsl_multilarge_nlinear_trust, params, xtol, gtol, ftol, + wnlin_epsrel, 1.0, &wnlin_problem1, NULL); +} + +/* +test_fdf() + Test a weighted nonlinear least squares problem + +Inputs: T - solver to use + params - solver parameters + xtol - tolerance in x + gtol - tolerance in gradient + ftol - tolerance in residual vector + epsrel - relative error tolerance in solution + x0_scale - to test robustness against starting points, + the standard starting point in 'problem' is + multiplied by this scale factor: + x0 <- x0 * x0_scale + If x0 = 0, then all components of x0 are set to + x0_scale + problem - contains the nonlinear problem and solution point + wts - weight vector (NULL for unweighted) +*/ + +static void +test_fdf(const gsl_multilarge_nlinear_type * T, + const gsl_multilarge_nlinear_parameters * params, + const double xtol, const double gtol, const double ftol, + const double epsrel, const double x0_scale, + test_fdf_problem *problem, + const double *wts) +{ + gsl_multilarge_nlinear_fdf *fdf = problem->fdf; + const size_t n = fdf->n; + const size_t p = fdf->p; + const size_t max_iter = 2500; + gsl_vector *x0 = gsl_vector_alloc(p); + gsl_vector_view x0v = gsl_vector_view_array(problem->x0, p); + gsl_multilarge_nlinear_workspace *w = + gsl_multilarge_nlinear_alloc (T, params, n, p); + const char *pname = problem->name; + char buf[2048]; + char sname[2048]; + int status, info; + + sprintf(buf, "%s/%s/solver=%s/scale=%s%s%s", + gsl_multilarge_nlinear_name(w), + params->trs->name, + params->solver->name, + params->scale->name, + problem->fdf->df ? "" : "/fdjac", + problem->fdf->fvv ? "" : "/fdfvv"); + + strcpy(sname, buf); + + /* scale starting point x0 */ + gsl_vector_memcpy(x0, &x0v.vector); + test_scale_x0(x0, x0_scale); + + if (wts) + { + gsl_vector_const_view wv = gsl_vector_const_view_array(wts, n); + gsl_multilarge_nlinear_winit(x0, &wv.vector, fdf, w); + } + else + gsl_multilarge_nlinear_init(x0, fdf, w); + + status = gsl_multilarge_nlinear_driver(max_iter, xtol, gtol, ftol, + NULL, NULL, &info, w); + gsl_test(status, "%s/%s did not converge, status=%s", + sname, pname, gsl_strerror(status)); + + /* check solution */ + test_fdf_checksol(sname, pname, epsrel, w, problem); + + if (wts == NULL) + { + /* test again with weighting matrix W = I */ + gsl_vector *wv = gsl_vector_alloc(n); + + sprintf(sname, "%s/weighted", buf); + + gsl_vector_memcpy(x0, &x0v.vector); + test_scale_x0(x0, x0_scale); + + gsl_vector_set_all(wv, 1.0); + gsl_multilarge_nlinear_winit(x0, wv, fdf, w); + + status = gsl_multilarge_nlinear_driver(max_iter, xtol, gtol, ftol, + NULL, NULL, &info, w); + gsl_test(status, "%s/%s did not converge, status=%s", + sname, pname, gsl_strerror(status)); + + test_fdf_checksol(sname, pname, epsrel, w, problem); + + gsl_vector_free(wv); + } + + gsl_multilarge_nlinear_free(w); + gsl_vector_free(x0); +} + +static void +test_fdf_checksol(const char *sname, const char *pname, + const double epsrel, + gsl_multilarge_nlinear_workspace *w, + test_fdf_problem *problem) +{ + gsl_multilarge_nlinear_fdf *fdf = problem->fdf; + const double *sigma = problem->sigma; + gsl_vector *f = gsl_multilarge_nlinear_residual(w); + gsl_vector *x = gsl_multilarge_nlinear_position(w); + double sumsq; + + /* check solution vector x and sumsq = ||f||^2 */ + gsl_blas_ddot(f, f, &sumsq); + (problem->checksol)(x->data, sumsq, epsrel, sname, pname); + + /* XXX: covariance not implemented for cgst method */ + if (w->params.trs == gsl_multilarge_nlinear_trs_cgst) + return; + + /* check variances */ + if (sigma) + { + const size_t n = fdf->n; + const size_t p = fdf->p; + size_t i; + gsl_matrix * covar = gsl_matrix_alloc (p, p); + + gsl_multilarge_nlinear_covar (covar, w); + + for (i = 0; i < p; i++) + { + double ei = sqrt(sumsq/(n-p))*sqrt(gsl_matrix_get(covar,i,i)); + gsl_test_rel (ei, sigma[i], epsrel, + "%s/%s, sigma(%d)", sname, pname, i) ; + } + + gsl_matrix_free (covar); + } +} + +static void +test_scale_x0(gsl_vector *x0, const double scale) +{ + double nx = gsl_blas_dnrm2(x0); + + if (nx == 0.0) + gsl_vector_set_all(x0, scale); + else + gsl_vector_scale(x0, scale); +} /* test_scale_x0() */ diff --git a/gsl-2.5/multilarge_nlinear/test_gaussian.c b/gsl-2.5/multilarge_nlinear/test_gaussian.c new file mode 100644 index 00000000..db481921 --- /dev/null +++ b/gsl-2.5/multilarge_nlinear/test_gaussian.c @@ -0,0 +1,146 @@ +#define gaussian_N 15 +#define gaussian_P 3 + +static double gaussian_x0[gaussian_P] = { 0.4, 1.0, 0.0 }; +static double gaussian_epsrel = 1.0e-10; + +static double gaussian_J[gaussian_N * gaussian_P]; + +static double gaussian_Y[gaussian_N] = { +0.0009, 0.0044, 0.0175, 0.0540, 0.1295, 0.2420, 0.3521, 0.3989, +0.3521, 0.2420, 0.1295, 0.0540, 0.0175, 0.0044, 0.0009 +}; + +static void +gaussian_checksol(const double x[], const double sumsq, + const double epsrel, const char *sname, + const char *pname) +{ + size_t i; + const double sumsq_exact = 1.12793276961871985e-08; + const double gaussian_x[gaussian_P] = { 0.398956137838762825, + 1.00001908448786647, + 0.0 }; + + gsl_test_rel(sumsq, sumsq_exact, epsrel, "%s/%s sumsq", + sname, pname); + + for (i = 0; i < gaussian_P; ++i) + { + gsl_test_rel(x[i], gaussian_x[i], epsrel, "%s/%s i=%zu", + sname, pname, i); + } +} + +static int +gaussian_f (const gsl_vector * x, void *params, gsl_vector * f) +{ + double x1 = gsl_vector_get(x, 0); + double x2 = gsl_vector_get(x, 1); + double x3 = gsl_vector_get(x, 2); + size_t i; + + for (i = 0; i < gaussian_N; ++i) + { + double ti = (7.0 - i) / 2.0; + double yi = gaussian_Y[i]; + double term = ti - x3; + double fi = x1 * exp(-x2*term*term/2.0) - yi; + gsl_vector_set(f, i, fi); + } + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +gaussian_df (CBLAS_TRANSPOSE_t TransJ, const gsl_vector * x, + const gsl_vector * u, void * params, gsl_vector * v, + gsl_matrix * JTJ) +{ + gsl_matrix_view J = gsl_matrix_view_array(gaussian_J, gaussian_N, gaussian_P); + double x1 = gsl_vector_get(x, 0); + double x2 = gsl_vector_get(x, 1); + double x3 = gsl_vector_get(x, 2); + size_t i; + + for (i = 0; i < gaussian_N; ++i) + { + double ti = (7.0 - i) / 2.0; + double term1 = ti - x3; + double term2 = exp(-x2*term1*term1/2.0); + + gsl_matrix_set(&J.matrix, i, 0, term2); + gsl_matrix_set(&J.matrix, i, 1, -0.5*x1*term2*term1*term1); + gsl_matrix_set(&J.matrix, i, 2, x1*x2*term1*term2); + } + + if (v) + gsl_blas_dgemv(TransJ, 1.0, &J.matrix, u, 0.0, v); + + if (JTJ) + gsl_blas_dsyrk(CblasLower, CblasTrans, 1.0, &J.matrix, 0.0, JTJ); + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +gaussian_fvv (const gsl_vector * x, const gsl_vector * v, + void *params, gsl_vector * fvv) +{ + double x1 = gsl_vector_get(x, 0); + double x2 = gsl_vector_get(x, 1); + double x3 = gsl_vector_get(x, 2); + double v1 = gsl_vector_get(v, 0); + double v2 = gsl_vector_get(v, 1); + double v3 = gsl_vector_get(v, 2); + size_t i; + + for (i = 0; i < gaussian_N; ++i) + { + double ti = (7.0 - i) / 2.0; + double term1 = ti - x3; + double term2 = exp(-x2*term1*term1/2.0); + + gsl_vector_set(fvv, i, 0.25 * term2 * + (ti*ti*ti*ti*v2*v2*x1 - + 4*ti*ti*ti*v2*x1*(v3*x2 + v2*x3) + + v2*x3*x3*(v2*x1*x3*x3 - 4*v1) + + 4*v3*v3*x1*x2*(x2*x3*x3 - 1.0) + + 4*v3*x3*(-2*v1*x2 + v2*x1*(x2*x3*x3 - 2.0)) + + ti*ti*(4*v3*v3*x1*x2*x2 + 2*v2*(-2*v1 + 3*x1*x3*(2*v3*x2 + v2*x3))) - + 4*ti*(v2*v2*x1*x3*x3*x3 + 2*v3*x2*(-v1 + v3*x1*x2*x3) + + v2*(-2*v1*x3 + v3*x1*(-2.0 + 3*x2*x3*x3))))); + } + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static gsl_multilarge_nlinear_fdf gaussian_func = +{ + gaussian_f, + gaussian_df, + gaussian_fvv, + gaussian_N, + gaussian_P, + NULL, + 0, + 0, + 0, + 0 +}; + +static test_fdf_problem gaussian_problem = +{ + "gaussian", + gaussian_x0, + NULL, + &gaussian_epsrel, + &gaussian_checksol, + &gaussian_func +}; diff --git a/gsl-2.5/multilarge_nlinear/test_hahn1.c b/gsl-2.5/multilarge_nlinear/test_hahn1.c new file mode 100644 index 00000000..9cbf1331 --- /dev/null +++ b/gsl-2.5/multilarge_nlinear/test_hahn1.c @@ -0,0 +1,235 @@ +#define hahn1_N 236 +#define hahn1_P 7 + +static double hahn1_x0a[hahn1_P] = { 10, -1, 0.05, -0.00001, -0.05, 0.001, -0.000001 }; +static double hahn1_x0b[hahn1_P] = { 1, -0.1, 0.005, -0.000001, -0.005, 0.0001, -0.0000001}; +static double hahn1_epsrel = 1.0e-5; + +static double hahn1_J[hahn1_N * hahn1_P]; + +static double hahn1_sigma[hahn1_P] = { + 1.7070154742E-01, 1.2000289189E-02, 2.2508314937E-04, 2.7578037666E-07, + 2.4712888219E-04, 1.0449373768E-05, 1.3027335327E-08 +}; + +static double hahn1_F1[hahn1_N] = { + .591E0, 1.547E0, 2.902E0, 2.894E0, 4.703E0, + 6.307E0, 7.03E0 , 7.898E0, 9.470E0, 9.484E0, + 10.072E0, 10.163E0, 11.615E0, 12.005E0, 12.478E0, + 12.982E0, 12.970E0, 13.926E0, 14.452E0, 14.404E0, + 15.190E0, 15.550E0, 15.528E0, 15.499E0, 16.131E0, + 16.438E0, 16.387E0, 16.549E0, 16.872E0, 16.830E0, + 16.926E0, 16.907E0, 16.966E0, 17.060E0, 17.122E0, + 17.311E0, 17.355E0, 17.668E0, 17.767E0, 17.803E0, + 17.765E0, 17.768E0, 17.736E0, 17.858E0, 17.877E0, + 17.912E0, 18.046E0, 18.085E0, 18.291E0, 18.357E0, + 18.426E0, 18.584E0, 18.610E0, 18.870E0, 18.795E0, + 19.111E0, .367E0, .796E0, 0.892E0, 1.903E0, + 2.150E0, 3.697E0, 5.870E0, 6.421E0, 7.422E0, + 9.944E0, 11.023E0, 11.87E0 , 12.786E0, 14.067E0, + 13.974E0, 14.462E0, 14.464E0, 15.381E0, 15.483E0, + 15.59E0 , 16.075E0, 16.347E0, 16.181E0, 16.915E0, + 17.003E0, 16.978E0, 17.756E0, 17.808E0, 17.868E0, + 18.481E0, 18.486E0, 19.090E0, 16.062E0, 16.337E0, + 16.345E0, 16.388E0, 17.159E0, 17.116E0, 17.164E0, + 17.123E0, 17.979E0, 17.974E0, 18.007E0, 17.993E0, + 18.523E0, 18.669E0, 18.617E0, 19.371E0, 19.330E0, + 0.080E0, 0.248E0, 1.089E0, 1.418E0, 2.278E0, + 3.624E0, 4.574E0, 5.556E0, 7.267E0, 7.695E0, + 9.136E0, 9.959E0, 9.957E0, 11.600E0, 13.138E0, + 13.564E0, 13.871E0, 13.994E0, 14.947E0, 15.473E0, + 15.379E0, 15.455E0, 15.908E0, 16.114E0, 17.071E0, + 17.135E0, 17.282E0, 17.368E0, 17.483E0, 17.764E0, + 18.185E0, 18.271E0, 18.236E0, 18.237E0, 18.523E0, + 18.627E0, 18.665E0, 19.086E0, 0.214E0, 0.943E0, + 1.429E0, 2.241E0, 2.951E0, 3.782E0, 4.757E0, + 5.602E0, 7.169E0, 8.920E0, 10.055E0, 12.035E0, + 12.861E0, 13.436E0, 14.167E0, 14.755E0, 15.168E0, + 15.651E0, 15.746E0, 16.216E0, 16.445E0, 16.965E0, + 17.121E0, 17.206E0, 17.250E0, 17.339E0, 17.793E0, + 18.123E0, 18.49E0 , 18.566E0, 18.645E0, 18.706E0, + 18.924E0, 19.1E0 , 0.375E0, 0.471E0, 1.504E0, + 2.204E0, 2.813E0, 4.765E0, 9.835E0, 10.040E0, + 11.946E0, 12.596E0, 13.303E0, 13.922E0, 14.440E0, + 14.951E0, 15.627E0, 15.639E0, 15.814E0, 16.315E0, + 16.334E0, 16.430E0, 16.423E0, 17.024E0, 17.009E0, + 17.165E0, 17.134E0, 17.349E0, 17.576E0, 17.848E0, + 18.090E0, 18.276E0, 18.404E0, 18.519E0, 19.133E0, + 19.074E0, 19.239E0, 19.280E0, 19.101E0, 19.398E0, + 19.252E0, 19.89E0 , 20.007E0, 19.929E0, 19.268E0, + 19.324E0, 20.049E0, 20.107E0, 20.062E0, 20.065E0, + 19.286E0, 19.972E0, 20.088E0, 20.743E0, 20.83E0 , + 20.935E0, 21.035E0, 20.93E0 , 21.074E0, 21.085E0, + 20.935E0 +}; + + +static double hahn1_F0[hahn1_N] = { + 24.41E0, 34.82E0, 44.09E0, 45.07E0, 54.98E0, + 65.51E0, 70.53E0, 75.70E0, 89.57E0, 91.14E0, + 96.40E0, 97.19E0, 114.26E0, 120.25E0, 127.08E0, + 133.55E0, 133.61E0, 158.67E0, 172.74E0, 171.31E0, + 202.14E0, 220.55E0, 221.05E0, 221.39E0, 250.99E0, + 268.99E0, 271.80E0, 271.97E0, 321.31E0, 321.69E0, + 330.14E0, 333.03E0, 333.47E0, 340.77E0, 345.65E0, + 373.11E0, 373.79E0, 411.82E0, 419.51E0, 421.59E0, + 422.02E0, 422.47E0, 422.61E0, 441.75E0, 447.41E0, + 448.7E0 , 472.89E0, 476.69E0, 522.47E0, 522.62E0, + 524.43E0, 546.75E0, 549.53E0, 575.29E0, 576.00E0, + 625.55E0, 20.15E0, 28.78E0, 29.57E0, 37.41E0, + 39.12E0, 50.24E0, 61.38E0, 66.25E0, 73.42E0, + 95.52E0, 107.32E0, 122.04E0, 134.03E0, 163.19E0, + 163.48E0, 175.70E0, 179.86E0, 211.27E0, 217.78E0, + 219.14E0, 262.52E0, 268.01E0, 268.62E0, 336.25E0, + 337.23E0, 339.33E0, 427.38E0, 428.58E0, 432.68E0, + 528.99E0, 531.08E0, 628.34E0, 253.24E0, 273.13E0, + 273.66E0, 282.10E0, 346.62E0, 347.19E0, 348.78E0, + 351.18E0, 450.10E0, 450.35E0, 451.92E0, 455.56E0, + 552.22E0, 553.56E0, 555.74E0, 652.59E0, 656.20E0, + 14.13E0, 20.41E0, 31.30E0, 33.84E0, 39.70E0, + 48.83E0, 54.50E0, 60.41E0, 72.77E0, 75.25E0, + 86.84E0, 94.88E0, 96.40E0, 117.37E0, 139.08E0, + 147.73E0, 158.63E0, 161.84E0, 192.11E0, 206.76E0, + 209.07E0, 213.32E0, 226.44E0, 237.12E0, 330.90E0, + 358.72E0, 370.77E0, 372.72E0, 396.24E0, 416.59E0, + 484.02E0, 495.47E0, 514.78E0, 515.65E0, 519.47E0, + 544.47E0, 560.11E0, 620.77E0, 18.97E0, 28.93E0, + 33.91E0, 40.03E0, 44.66E0, 49.87E0, 55.16E0, + 60.90E0, 72.08E0, 85.15E0, 97.06E0, 119.63E0, + 133.27E0, 143.84E0, 161.91E0, 180.67E0, 198.44E0, + 226.86E0, 229.65E0, 258.27E0, 273.77E0, 339.15E0, + 350.13E0, 362.75E0, 371.03E0, 393.32E0, 448.53E0, + 473.78E0, 511.12E0, 524.70E0, 548.75E0, 551.64E0, + 574.02E0, 623.86E0, 21.46E0, 24.33E0, 33.43E0, + 39.22E0, 44.18E0, 55.02E0, 94.33E0, 96.44E0, + 118.82E0, 128.48E0, 141.94E0, 156.92E0, 171.65E0, + 190.00E0, 223.26E0, 223.88E0, 231.50E0, 265.05E0, + 269.44E0, 271.78E0, 273.46E0, 334.61E0, 339.79E0, + 349.52E0, 358.18E0, 377.98E0, 394.77E0, 429.66E0, + 468.22E0, 487.27E0, 519.54E0, 523.03E0, 612.99E0, + 638.59E0, 641.36E0, 622.05E0, 631.50E0, 663.97E0, + 646.9E0 , 748.29E0, 749.21E0, 750.14E0, 647.04E0, + 646.89E0, 746.9E0 , 748.43E0, 747.35E0, 749.27E0, + 647.61E0, 747.78E0, 750.51E0, 851.37E0, 845.97E0, + 847.54E0, 849.93E0, 851.61E0, 849.75E0, 850.98E0, + 848.23E0 +}; + +static void +hahn1_checksol(const double x[], const double sumsq, + const double epsrel, const char *sname, + const char *pname) +{ + size_t i; + const double sumsq_exact = 1.5324382854E+00; + const double hahn1_x[hahn1_P] = { + 1.0776351733E+00, -1.2269296921E-01, 4.0863750610E-03, + -1.4262662514E-06, -5.7609940901E-03, 2.4053735503E-04, + -1.2314450199E-07 }; + + gsl_test_rel(sumsq, sumsq_exact, epsrel, "%s/%s sumsq", + sname, pname); + + for (i = 0; i < hahn1_P; ++i) + { + gsl_test_rel(x[i], hahn1_x[i], epsrel, "%s/%s i=%zu", + sname, pname, i); + } +} + +static int +hahn1_f (const gsl_vector * x, void *params, gsl_vector * f) +{ + double b[hahn1_P]; + size_t i; + + for (i = 0; i < hahn1_P; i++) + { + b[i] = gsl_vector_get(x, i); + } + + for (i = 0; i < hahn1_N; i++) + { + double t = hahn1_F0[i]; + double y = ((b[0] + t* (b[1] + t * (b[2] + t * b[3]))) + / (1 + t*(b[4] + t *(b[5] + t*b[6])))); + gsl_vector_set (f, i, hahn1_F1[i] - y); + } + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +hahn1_df (CBLAS_TRANSPOSE_t TransJ, const gsl_vector * x, + const gsl_vector * u, void * params, gsl_vector * v, + gsl_matrix * JTJ) +{ + gsl_matrix_view J = gsl_matrix_view_array(hahn1_J, hahn1_N, hahn1_P); + double b[hahn1_P]; + size_t i; + + for (i = 0; i < hahn1_P; i++) + { + b[i] = gsl_vector_get(x, i); + } + + for (i = 0; i < hahn1_N; i++) + { + double t = hahn1_F0[i]; + double u = (b[0] + t*(b[1] + t*(b[2] + t * b[3]))); + double v = (1 + t*(b[4] + t*(b[5] + t*b[6]))); + gsl_matrix_set (&J.matrix, i, 0, -1/v); + gsl_matrix_set (&J.matrix, i, 1, -t/v); + gsl_matrix_set (&J.matrix, i, 2, -t*t/v); + gsl_matrix_set (&J.matrix, i, 3, -t*t*t/v); + gsl_matrix_set (&J.matrix, i, 4, t*u/(v*v)); + gsl_matrix_set (&J.matrix, i, 5, t*t*u/(v*v)); + gsl_matrix_set (&J.matrix, i, 6, t*t*t*u/(v*v)); + } + + if (v) + gsl_blas_dgemv(TransJ, 1.0, &J.matrix, u, 0.0, v); + + if (JTJ) + gsl_blas_dsyrk(CblasLower, CblasTrans, 1.0, &J.matrix, 0.0, JTJ); + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static gsl_multilarge_nlinear_fdf hahn1_func = +{ + hahn1_f, + hahn1_df, + NULL, /* analytic expression too complex */ + hahn1_N, + hahn1_P, + NULL, + 0, + 0, + 0, + 0 +}; + +static test_fdf_problem hahn1a_problem = +{ + "nist-hahn1a", + hahn1_x0a, + hahn1_sigma, + &hahn1_epsrel, + &hahn1_checksol, + &hahn1_func +}; + +static test_fdf_problem hahn1b_problem = +{ + "nist-hahn1b", + hahn1_x0b, + hahn1_sigma, + &hahn1_epsrel, + &hahn1_checksol, + &hahn1_func +}; diff --git a/gsl-2.5/multilarge_nlinear/test_helical.c b/gsl-2.5/multilarge_nlinear/test_helical.c new file mode 100644 index 00000000..0e7f6467 --- /dev/null +++ b/gsl-2.5/multilarge_nlinear/test_helical.c @@ -0,0 +1,125 @@ +#define helical_N 3 +#define helical_P 3 + +static double helical_x0[helical_P] = { -1.0, 0.0, 0.0 }; +static double helical_x[helical_P] = { 1.0, 0.0, 0.0 }; +static double helical_epsrel = 1.0e-12; + +static double helical_J[helical_N * helical_P]; + +static void +helical_checksol(const double x[], const double sumsq, + const double epsrel, const char *sname, + const char *pname) +{ + size_t i; + const double sumsq_exact = 0.0; + + gsl_test_rel(sumsq, sumsq_exact, epsrel, "%s/%s sumsq", + sname, pname); + + for (i = 0; i < helical_P; ++i) + { + gsl_test_rel(x[i], helical_x[i], epsrel, "%s/%s i=%zu", + sname, pname, i); + } +} + +static int +helical_f (const gsl_vector * x, void *params, gsl_vector * f) +{ + double x1 = gsl_vector_get(x, 0); + double x2 = gsl_vector_get(x, 1); + double x3 = gsl_vector_get(x, 2); + double theta = (x1 >= 0.0) ? 0.0 : 5.0; + double nx = gsl_hypot(x1, x2); + + gsl_vector_set(f, 0, 10.0 * (x3 - 5.0/M_PI*atan(x2 / x1) - theta)); + gsl_vector_set(f, 1, 10.0*(nx - 1.0)); + gsl_vector_set(f, 2, x3); + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +helical_df (CBLAS_TRANSPOSE_t TransJ, const gsl_vector * x, + const gsl_vector * u, void * params, gsl_vector * v, + gsl_matrix * JTJ) +{ + gsl_matrix_view J = gsl_matrix_view_array(helical_J, helical_N, helical_P); + double x1 = gsl_vector_get(x, 0); + double x2 = gsl_vector_get(x, 1); + double nx = gsl_hypot(x1, x2); + double nx_sq = nx * nx; + double term1 = 50.0 / (M_PI * nx_sq); + double term2 = 10.0 / nx; + + gsl_matrix_set(&J.matrix, 0, 0, term1*x2); + gsl_matrix_set(&J.matrix, 0, 1, -term1*x1); + gsl_matrix_set(&J.matrix, 0, 2, 10.0); + + gsl_matrix_set(&J.matrix, 1, 0, term2*x1); + gsl_matrix_set(&J.matrix, 1, 1, term2*x2); + gsl_matrix_set(&J.matrix, 1, 2, 0.0); + + gsl_matrix_set(&J.matrix, 2, 0, 0.0); + gsl_matrix_set(&J.matrix, 2, 1, 0.0); + gsl_matrix_set(&J.matrix, 2, 2, 1.0); + + if (v) + gsl_blas_dgemv(TransJ, 1.0, &J.matrix, u, 0.0, v); + + if (JTJ) + gsl_blas_dsyrk(CblasLower, CblasTrans, 1.0, &J.matrix, 0.0, JTJ); + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +helical_fvv (const gsl_vector * x, const gsl_vector * v, + void *params, gsl_vector * fvv) +{ + double x1 = gsl_vector_get(x, 0); + double x2 = gsl_vector_get(x, 1); + double v1 = gsl_vector_get(v, 0); + double v2 = gsl_vector_get(v, 1); + double term1 = v2*x1 - v1*x2; + double term2 = v1*x1 + v2*x2; + double term3 = x1*x1 + x2*x2; + + gsl_vector_set(fvv, 0, 100.0 / M_PI * (term1 / term3) * (term2 / term3)); + gsl_vector_set(fvv, 1, 10.0 * (term1 * term1) / pow(term3, 1.5)); + gsl_vector_set(fvv, 2, 0.0); + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static gsl_multilarge_nlinear_fdf helical_func = +{ + helical_f, + helical_df, + helical_fvv, + helical_N, + helical_P, + NULL, + 0, + 0, + 0, + 0 +}; + +static test_fdf_problem helical_problem = +{ + "helical", + helical_x0, + NULL, + &helical_epsrel, + &helical_checksol, + &helical_func +}; diff --git a/gsl-2.5/multilarge_nlinear/test_jennrich.c b/gsl-2.5/multilarge_nlinear/test_jennrich.c new file mode 100644 index 00000000..3a435045 --- /dev/null +++ b/gsl-2.5/multilarge_nlinear/test_jennrich.c @@ -0,0 +1,123 @@ +#define jennrich_N 10 +#define jennrich_P 2 + +static double jennrich_x0[jennrich_P] = { 0.3, 0.4 }; +static double jennrich_epsrel = 1.0e-7; + +static double jennrich_J[jennrich_N * jennrich_P]; + +static void +jennrich_checksol(const double x[], const double sumsq, + const double epsrel, const char *sname, + const char *pname) +{ + size_t i; + const double sumsq_exact = 1.243621823556148e+02; + const double jennrich_x[jennrich_P] = { 2.578252139935855e-01, + 2.578252133471426e-01 }; + + gsl_test_rel(sumsq, sumsq_exact, epsrel, "%s/%s sumsq", + sname, pname); + + for (i = 0; i < jennrich_P; ++i) + { + gsl_test_rel(x[i], jennrich_x[i], epsrel, "%s/%s i=%zu", + sname, pname, i); + } +} + +static int +jennrich_f (const gsl_vector * x, void *params, gsl_vector * f) +{ + double x1 = gsl_vector_get(x, 0); + double x2 = gsl_vector_get(x, 1); + size_t i; + + for (i = 0; i < jennrich_N; ++i) + { + double ip1 = i + 1.0; + double fi = 2.0*(i + 2.0) - (exp(x1*ip1) + exp(x2*ip1)); + gsl_vector_set(f, i, fi); + } + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +jennrich_df (CBLAS_TRANSPOSE_t TransJ, const gsl_vector * x, + const gsl_vector * u, void * params, gsl_vector * v, + gsl_matrix * JTJ) +{ + gsl_matrix_view J = gsl_matrix_view_array(jennrich_J, jennrich_N, jennrich_P); + double x1 = gsl_vector_get(x, 0); + double x2 = gsl_vector_get(x, 1); + size_t i; + + for (i = 0; i < jennrich_N; ++i) + { + double ip1 = i + 1.0; + + gsl_matrix_set(&J.matrix, i, 0, -ip1*exp(ip1*x1)); + gsl_matrix_set(&J.matrix, i, 1, -ip1*exp(ip1*x2)); + } + + if (v) + gsl_blas_dgemv(TransJ, 1.0, &J.matrix, u, 0.0, v); + + if (JTJ) + gsl_blas_dsyrk(CblasLower, CblasTrans, 1.0, &J.matrix, 0.0, JTJ); + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +jennrich_fvv (const gsl_vector * x, const gsl_vector * v, + void *params, gsl_vector * fvv) +{ + double x1 = gsl_vector_get(x, 0); + double x2 = gsl_vector_get(x, 1); + double v1 = gsl_vector_get(v, 0); + double v2 = gsl_vector_get(v, 1); + size_t i; + + for (i = 0; i < jennrich_N; ++i) + { + double ip1 = i + 1.0; + double term1 = exp(ip1*x1); + double term2 = exp(ip1*x2); + + gsl_vector_set(fvv, i, -ip1*ip1*(v1*v1*term1 + v2*v2*term2)); + } + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static gsl_multilarge_nlinear_fdf jennrich_func = +{ + jennrich_f, + jennrich_df, + jennrich_fvv, + jennrich_N, + jennrich_P, + NULL, + 0, + 0, + 0, + 0 +}; + +static test_fdf_problem jennrich_problem = +{ + "jennrich", + jennrich_x0, + NULL, + &jennrich_epsrel, + &jennrich_checksol, + &jennrich_func +}; diff --git a/gsl-2.5/multilarge_nlinear/test_kirby2.c b/gsl-2.5/multilarge_nlinear/test_kirby2.c new file mode 100644 index 00000000..3aeedae4 --- /dev/null +++ b/gsl-2.5/multilarge_nlinear/test_kirby2.c @@ -0,0 +1,230 @@ +#define kirby2_N 151 +#define kirby2_P 5 + +static double kirby2_x0a[kirby2_P] = { 2.0, -0.1, 0.003, -0.001, 0.00001 }; +static double kirby2_x0b[kirby2_P] = { 1.5, -0.15, 0.0025, -0.0015, 0.00002 }; +static double kirby2_x[kirby2_P] = { 1.6745063063E+00, -1.3927397867E-01, 2.5961181191E-03, + -1.7241811870E-03, 2.1664802578E-05 }; +static double kirby2_epsrel = 1.0e-5; + +static double kirby2_J[kirby2_N * kirby2_P]; + +static double kirby2_sigma[kirby2_P] = { + 8.7989634338E-02, 4.1182041386E-03, 4.1856520458E-05, + 5.8931897355E-05, 2.0129761919E-07 +}; + +static double kirby2_F1[kirby2_N] = { + 0.0082E0, 0.0112E0, 0.0149E0, 0.0198E0, 0.0248E0, + 0.0324E0, 0.0420E0, 0.0549E0, 0.0719E0, 0.0963E0, + 0.1291E0, 0.1710E0, 0.2314E0, 0.3227E0, 0.4809E0, + 0.7084E0, 1.0220E0, 1.4580E0, 1.9520E0, 2.5410E0, + 3.2230E0, 3.9990E0, 4.8520E0, 5.7320E0, 6.7270E0, + 7.8350E0, 9.0250E0, 10.2670E0, 11.5780E0, 12.9440E0, + 14.3770E0, 15.8560E0, 17.3310E0, 18.8850E0, 20.5750E0, + 22.3200E0, 22.3030E0, 23.4600E0, 24.0600E0, 25.2720E0, + 25.8530E0, 27.1100E0, 27.6580E0, 28.9240E0, 29.5110E0, + 30.7100E0, 31.3500E0, 32.5200E0, 33.2300E0, 34.3300E0, + 35.0600E0, 36.1700E0, 36.8400E0, 38.0100E0, 38.6700E0, + 39.8700E0, 40.0300E0, 40.5000E0, 41.3700E0, 41.6700E0, + 42.3100E0, 42.7300E0, 43.4600E0, 44.1400E0, 44.5500E0, + 45.2200E0, 45.9200E0, 46.3000E0, 47.0000E0, 47.6800E0, + 48.0600E0, 48.7400E0, 49.4100E0, 49.7600E0, 50.4300E0, + 51.1100E0, 51.5000E0, 52.1200E0, 52.7600E0, 53.1800E0, + 53.7800E0, 54.4600E0, 54.8300E0, 55.4000E0, 56.4300E0, + 57.0300E0, 58.0000E0, 58.6100E0, 59.5800E0, 60.1100E0, + 61.1000E0, 61.6500E0, 62.5900E0, 63.1200E0, 64.0300E0, + 64.6200E0, 65.4900E0, 66.0300E0, 66.8900E0, 67.4200E0, + 68.2300E0, 68.7700E0, 69.5900E0, 70.1100E0, 70.8600E0, + 71.4300E0, 72.1600E0, 72.7000E0, 73.4000E0, 73.9300E0, + 74.6000E0, 75.1600E0, 75.8200E0, 76.3400E0, 76.9800E0, + 77.4800E0, 78.0800E0, 78.6000E0, 79.1700E0, 79.6200E0, + 79.8800E0, 80.1900E0, 80.6600E0, 81.2200E0, 81.6600E0, + 82.1600E0, 82.5900E0, 83.1400E0, 83.5000E0, 84.0000E0, + 84.4000E0, 84.8900E0, 85.2600E0, 85.7400E0, 86.0700E0, + 86.5400E0, 86.8900E0, 87.3200E0, 87.6500E0, 88.1000E0, + 88.4300E0, 88.8300E0, 89.1200E0, 89.5400E0, 89.8500E0, + 90.2500E0, 90.5500E0, 90.9300E0, 91.2000E0, 91.5500E0, + 92.2000E0 +}; + + +static double kirby2_F0[kirby2_N] = { + 9.65E0, 10.74E0, 11.81E0, 12.88E0, 14.06E0, + 15.28E0, 16.63E0, 18.19E0, 19.88E0, 21.84E0, + 24.00E0, 26.25E0, 28.86E0, 31.85E0, 35.79E0, + 40.18E0, 44.74E0, 49.53E0, 53.94E0, 58.29E0, + 62.63E0, 67.03E0, 71.25E0, 75.22E0, 79.33E0, + 83.56E0, 87.75E0, 91.93E0, 96.10E0, 100.28E0, + 104.46E0, 108.66E0, 112.71E0, 116.88E0, 121.33E0, + 125.79E0, 125.79E0, 128.74E0, 130.27E0, 133.33E0, + 134.79E0, 137.93E0, 139.33E0, 142.46E0, 143.90E0, + 146.91E0, 148.51E0, 151.41E0, 153.17E0, 155.97E0, + 157.76E0, 160.56E0, 162.30E0, 165.21E0, 166.90E0, + 169.92E0, 170.32E0, 171.54E0, 173.79E0, 174.57E0, + 176.25E0, 177.34E0, 179.19E0, 181.02E0, 182.08E0, + 183.88E0, 185.75E0, 186.80E0, 188.63E0, 190.45E0, + 191.48E0, 193.35E0, 195.22E0, 196.23E0, 198.05E0, + 199.97E0, 201.06E0, 202.83E0, 204.69E0, 205.86E0, + 207.58E0, 209.50E0, 210.65E0, 212.33E0, 215.43E0, + 217.16E0, 220.21E0, 221.98E0, 225.06E0, 226.79E0, + 229.92E0, 231.69E0, 234.77E0, 236.60E0, 239.63E0, + 241.50E0, 244.48E0, 246.40E0, 249.35E0, 251.32E0, + 254.22E0, 256.24E0, 259.11E0, 261.18E0, 264.02E0, + 266.13E0, 268.94E0, 271.09E0, 273.87E0, 276.08E0, + 278.83E0, 281.08E0, 283.81E0, 286.11E0, 288.81E0, + 291.08E0, 293.75E0, 295.99E0, 298.64E0, 300.84E0, + 302.02E0, 303.48E0, 305.65E0, 308.27E0, 310.41E0, + 313.01E0, 315.12E0, 317.71E0, 319.79E0, 322.36E0, + 324.42E0, 326.98E0, 329.01E0, 331.56E0, 333.56E0, + 336.10E0, 338.08E0, 340.60E0, 342.57E0, 345.08E0, + 347.02E0, 349.52E0, 351.44E0, 353.93E0, 355.83E0, + 358.32E0, 360.20E0, 362.67E0, 364.53E0, 367.00E0, + 371.30E0 +}; + +static void +kirby2_checksol(const double x[], const double sumsq, + const double epsrel, const char *sname, + const char *pname) +{ + size_t i; + const double sumsq_exact = 3.9050739624E+00; + + gsl_test_rel(sumsq, sumsq_exact, epsrel, "%s/%s sumsq", + sname, pname); + + for (i = 0; i < kirby2_P; ++i) + { + gsl_test_rel(x[i], kirby2_x[i], epsrel, "%s/%s i=%zu", + sname, pname, i); + } +} + +static int +kirby2_f (const gsl_vector * x, void *params, gsl_vector * f) +{ + double b[kirby2_P]; + size_t i; + + for (i = 0; i < kirby2_P; i++) + { + b[i] = gsl_vector_get(x, i); + } + + for (i = 0; i < kirby2_N; i++) + { + double t = kirby2_F0[i]; + double y = ((b[0] + t* (b[1] + t * b[2])) + / (1 + t*(b[3] + t *b[4]))); + gsl_vector_set (f, i, kirby2_F1[i] - y); + } + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +kirby2_df (CBLAS_TRANSPOSE_t TransJ, const gsl_vector * x, + const gsl_vector * u, void * params, gsl_vector * v, + gsl_matrix * JTJ) +{ + gsl_matrix_view J = gsl_matrix_view_array(kirby2_J, kirby2_N, kirby2_P); + double b[kirby2_P]; + size_t i; + + for (i = 0; i < kirby2_P; i++) + { + b[i] = gsl_vector_get(x, i); + } + + for (i = 0; i < kirby2_N; i++) + { + double t = kirby2_F0[i]; + double u = (b[0] + t*(b[1] + t*b[2])); + double v = (1 + t*(b[3] + t*b[4])); + gsl_matrix_set (&J.matrix, i, 0, -1/v); + gsl_matrix_set (&J.matrix, i, 1, -t/v); + gsl_matrix_set (&J.matrix, i, 2, -t*t/v); + gsl_matrix_set (&J.matrix, i, 3, t*u/(v*v)); + gsl_matrix_set (&J.matrix, i, 4, t*t*u/(v*v)); + } + + if (v) + gsl_blas_dgemv(TransJ, 1.0, &J.matrix, u, 0.0, v); + + if (JTJ) + gsl_blas_dsyrk(CblasLower, CblasTrans, 1.0, &J.matrix, 0.0, JTJ); + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +kirby2_fvv (const gsl_vector * x, const gsl_vector * v, + void *params, gsl_vector * fvv) +{ + double x1 = gsl_vector_get(x, 0); + double x2 = gsl_vector_get(x, 1); + double x3 = gsl_vector_get(x, 2); + double x4 = gsl_vector_get(x, 3); + double x5 = gsl_vector_get(x, 4); + double v1 = gsl_vector_get(v, 0); + double v2 = gsl_vector_get(v, 1); + double v3 = gsl_vector_get(v, 2); + double v4 = gsl_vector_get(v, 3); + double v5 = gsl_vector_get(v, 4); + size_t i; + + for (i = 0; i < kirby2_N; i++) + { + double t = kirby2_F0[i]; + double term1 = 1.0 + t*(x4 + t*x5); + + gsl_vector_set(fvv, i, -2*t/pow(term1, 3.0) * + (v4 + t*v5) * + (-t*(-v2 + v4*x1 + + t*(-v3 + v5*x1 + v4*x2 + t*v5*x2 + t*(v4+t*v5)*x3)) + + t*t*(v2 + t*v3)*(x4 + t*x5) + v1*(1.0 + t*(x4 + t*x5)))); + } + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static gsl_multilarge_nlinear_fdf kirby2_func = +{ + kirby2_f, + kirby2_df, + kirby2_fvv, + kirby2_N, + kirby2_P, + NULL, + 0, + 0, + 0, + 0 +}; + +static test_fdf_problem kirby2a_problem = +{ + "nist-kirby2a", + kirby2_x0a, + kirby2_sigma, + &kirby2_epsrel, + &kirby2_checksol, + &kirby2_func +}; + +static test_fdf_problem kirby2b_problem = +{ + "nist-kirby2b", + kirby2_x0b, + kirby2_sigma, + &kirby2_epsrel, + &kirby2_checksol, + &kirby2_func +}; diff --git a/gsl-2.5/multilarge_nlinear/test_kowalik.c b/gsl-2.5/multilarge_nlinear/test_kowalik.c new file mode 100644 index 00000000..3ac87b83 --- /dev/null +++ b/gsl-2.5/multilarge_nlinear/test_kowalik.c @@ -0,0 +1,178 @@ +#define kowalik_N 11 +#define kowalik_P 4 + +static double kowalik_x0[kowalik_P] = { 0.25, 0.39, 0.415, 0.39 }; +static double kowalik_epsrel = 1.0e-6; + +static double kowalik_J[kowalik_N * kowalik_P]; + +static double kowalik_Y[kowalik_N] = { +0.1957, 0.1947, 0.1735, 0.1600, 0.0844, 0.0627, +0.0456, 0.0342, 0.0323, 0.0235, 0.0246 +}; + +static double kowalik_U[kowalik_N] = { +4.0000, 2.0000, 1.0000, 0.5000, 0.2500, 0.1670, +0.1250, 0.1000, 0.0833, 0.0714, 0.0625 +}; + +static void +kowalik_checksol(const double x[], const double sumsq, + const double epsrel, const char *sname, + const char *pname) +{ + size_t i; + gsl_vector_const_view v = gsl_vector_const_view_array(x, kowalik_P); + const double norm = gsl_blas_dnrm2(&v.vector); + const double sumsq_exact1 = 3.075056038492370e-04; + const double kowalik_x1[kowalik_P] = { 1.928069345723978e-01, + 1.912823290344599e-01, + 1.230565070690708e-01, + 1.360623308065148e-01 }; + const double sumsq_exact2 = 0.00102734304869549252; + double kowalik_x2[kowalik_P] = { 0.0, /* inf */ + -14.0758834005984603, + 0.0, /* -inf */ + 0.0 }; /* -inf */ + const double *kowalik_x; + double sumsq_exact; + + kowalik_x2[0] = GSL_NAN; + kowalik_x2[2] = GSL_NAN; + kowalik_x2[3] = GSL_NAN; + + if (norm < 10.0) + { + kowalik_x = kowalik_x1; + sumsq_exact = sumsq_exact1; + } + else + { + kowalik_x = kowalik_x2; + sumsq_exact = sumsq_exact2; + } + + gsl_test_rel(sumsq, sumsq_exact, epsrel, "%s/%s sumsq", + sname, pname); + + for (i = 0; i < kowalik_P; ++i) + { + if (!gsl_finite(kowalik_x[i])) + continue; + + gsl_test_rel(x[i], kowalik_x[i], epsrel, "%s/%s i=%zu", + sname, pname, i); + } +} + +static int +kowalik_f (const gsl_vector * x, void *params, gsl_vector * f) +{ + double x1 = gsl_vector_get(x, 0); + double x2 = gsl_vector_get(x, 1); + double x3 = gsl_vector_get(x, 2); + double x4 = gsl_vector_get(x, 3); + size_t i; + + for (i = 0; i < kowalik_N; ++i) + { + double yi = kowalik_Y[i]; + double ui = kowalik_U[i]; + double fi = yi - (x1*ui*(ui+x2)) / (x4 + ui*(ui + x3)); + gsl_vector_set(f, i, fi); + } + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +kowalik_df (CBLAS_TRANSPOSE_t TransJ, const gsl_vector * x, + const gsl_vector * u, void * params, gsl_vector * v, + gsl_matrix * JTJ) +{ + gsl_matrix_view J = gsl_matrix_view_array(kowalik_J, kowalik_N, kowalik_P); + double x1 = gsl_vector_get(x, 0); + double x2 = gsl_vector_get(x, 1); + double x3 = gsl_vector_get(x, 2); + double x4 = gsl_vector_get(x, 3); + size_t i; + + for (i = 0; i < kowalik_N; ++i) + { + double ui = kowalik_U[i]; + double term1 = ui*(ui + x2); + double term2 = ui*(ui + x3) + x4; + + gsl_matrix_set(&J.matrix, i, 0, -term1 / term2); + gsl_matrix_set(&J.matrix, i, 1, -ui*x1/term2); + gsl_matrix_set(&J.matrix, i, 2, ui*term1*x1 / (term2*term2)); + gsl_matrix_set(&J.matrix, i, 3, term1*x1 / (term2*term2)); + } + + if (v) + gsl_blas_dgemv(TransJ, 1.0, &J.matrix, u, 0.0, v); + + if (JTJ) + gsl_blas_dsyrk(CblasLower, CblasTrans, 1.0, &J.matrix, 0.0, JTJ); + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +kowalik_fvv (const gsl_vector * x, const gsl_vector * v, + void *params, gsl_vector * fvv) +{ + double x1 = gsl_vector_get(x, 0); + double x2 = gsl_vector_get(x, 1); + double x3 = gsl_vector_get(x, 2); + double x4 = gsl_vector_get(x, 3); + double v1 = gsl_vector_get(v, 0); + double v2 = gsl_vector_get(v, 1); + double v3 = gsl_vector_get(v, 2); + double v4 = gsl_vector_get(v, 3); + size_t i; + + for (i = 0; i < kowalik_N; ++i) + { + double ui = kowalik_U[i]; + double term2 = ui*(ui + x3) + x4; + double term3 = ui*ui*v1 - ui*v3*x1 - v4*x1 + + ui*v1*x3 + v1*x4; + double term4 = ui*ui*(v3-v2) + v4*x2 + + ui*(v4 + v3*x2 - v2*x3) - v2*x4; + + gsl_vector_set(fvv, i, 2.0*ui*term3*term4 / pow(term2, 3.0)); + } + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static gsl_multilarge_nlinear_fdf kowalik_func = +{ + kowalik_f, + kowalik_df, + kowalik_fvv, + kowalik_N, + kowalik_P, + NULL, + 0, + 0, + 0, + 0 +}; + +static test_fdf_problem kowalik_problem = +{ + "kowalik", + kowalik_x0, + NULL, + &kowalik_epsrel, + &kowalik_checksol, + &kowalik_func +}; diff --git a/gsl-2.5/multilarge_nlinear/test_lin1.c b/gsl-2.5/multilarge_nlinear/test_lin1.c new file mode 100644 index 00000000..f4883994 --- /dev/null +++ b/gsl-2.5/multilarge_nlinear/test_lin1.c @@ -0,0 +1,118 @@ +#define lin1_N 11 /* can be anything >= p */ +#define lin1_P 5 + +static double lin1_x0[lin1_P] = { 1.0, 1.0, 1.0, 1.0, 1.0 }; +static double lin1_epsrel = 1.0e-10; + +static double lin1_J[lin1_N * lin1_P]; + +static void +lin1_checksol(const double x[], const double sumsq, + const double epsrel, const char *sname, + const char *pname) +{ + size_t i; + const double sumsq_exact = (double) (lin1_N - lin1_P); + + gsl_test_rel(sumsq, sumsq_exact, epsrel, "%s/%s sumsq", + sname, pname); + + for (i = 0; i < lin1_P; ++i) + { + gsl_test_rel(x[i], -1.0, epsrel, "%s/%s i=%zu", + sname, pname, i); + } +} + +static int +lin1_f (const gsl_vector * x, void *params, gsl_vector * f) +{ + size_t i, j; + + for (i = 0; i < lin1_N; ++i) + { + double fi = 0.0; + + for (j = 0; j < lin1_P; ++j) + { + double xj = gsl_vector_get(x, j); + double Aij = (i == j) ? 1.0 : 0.0; + Aij -= 2.0 / lin1_N; + fi += Aij * xj; + } + + fi -= 1.0; + gsl_vector_set(f, i, fi); + } + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +lin1_df (CBLAS_TRANSPOSE_t TransJ, const gsl_vector * x, + const gsl_vector * u, void * params, gsl_vector * v, + gsl_matrix * JTJ) +{ + gsl_matrix_view J = gsl_matrix_view_array(lin1_J, lin1_N, lin1_P); + size_t i, j; + + for (i = 0; i < lin1_N; ++i) + { + for (j = 0; j < lin1_P; ++j) + { + double Jij = (i == j) ? 1.0 : 0.0; + Jij -= 2.0 / lin1_N; + gsl_matrix_set(&J.matrix, i, j, Jij); + } + } + + if (v) + gsl_blas_dgemv(TransJ, 1.0, &J.matrix, u, 0.0, v); + + if (JTJ) + gsl_blas_dsyrk(CblasLower, CblasTrans, 1.0, &J.matrix, 0.0, JTJ); + + (void)x; /* avoid unused parameter warning */ + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +lin1_fvv (const gsl_vector * x, const gsl_vector * v, + void *params, gsl_vector * fvv) +{ + (void)x; /* avoid unused parameter warnings */ + (void)v; + (void)params; + + gsl_vector_set_zero(fvv); + + return GSL_SUCCESS; +} + +static gsl_multilarge_nlinear_fdf lin1_func = +{ + lin1_f, + lin1_df, + lin1_fvv, + lin1_N, + lin1_P, + NULL, + 0, + 0, + 0, + 0 +}; + +static test_fdf_problem lin1_problem = +{ + "linear_full", + lin1_x0, + NULL, + &lin1_epsrel, + &lin1_checksol, + &lin1_func +}; diff --git a/gsl-2.5/multilarge_nlinear/test_lin2.c b/gsl-2.5/multilarge_nlinear/test_lin2.c new file mode 100644 index 00000000..b2513d0c --- /dev/null +++ b/gsl-2.5/multilarge_nlinear/test_lin2.c @@ -0,0 +1,117 @@ +#define lin2_N 20 /* can be anything >= p */ +#define lin2_P 5 + +static double lin2_x0[lin2_P] = { 1.0, 1.0, 1.0, 1.0, 1.0 }; +static double lin2_epsrel = 1.0e-8; + +static double lin2_J[lin2_N * lin2_P]; + +static void +lin2_checksol(const double x[], const double sumsq, + const double epsrel, const char *sname, + const char *pname) +{ + size_t i; + const double n = (double) lin2_N; + const double sumsq_exact = 0.5 * (n*(n - 1.0)) / (2.0*n + 1.0); + const double sum_exact = 3.0 / (2.0*n + 1.0); + double sum = 0.0; + + gsl_test_rel(sumsq, sumsq_exact, epsrel, "%s/%s sumsq", + sname, pname); + + for (i = 0; i < lin2_P; ++i) + sum += (i + 1.0) * x[i]; + + gsl_test_rel(sum, sum_exact, epsrel, "%s/%s coeff sum", + sname, pname); +} + +static int +lin2_f (const gsl_vector * x, void *params, gsl_vector * f) +{ + size_t i, j; + + for (i = 0; i < lin2_N; ++i) + { + double fi = 0.0; + + for (j = 0; j < lin2_P; ++j) + { + double xj = gsl_vector_get(x, j); + fi += (j + 1) * xj; + } + + fi = (i + 1) * fi - 1.0; + gsl_vector_set(f, i, fi); + } + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +lin2_df (CBLAS_TRANSPOSE_t TransJ, const gsl_vector * x, + const gsl_vector * u, void * params, gsl_vector * v, + gsl_matrix * JTJ) +{ + gsl_matrix_view J = gsl_matrix_view_array(lin2_J, lin2_N, lin2_P); + size_t i, j; + + for (i = 0; i < lin2_N; ++i) + { + for (j = 0; j < lin2_P; ++j) + { + gsl_matrix_set(&J.matrix, i, j, (i + 1.0) * (j + 1.0)); + } + } + + if (v) + gsl_blas_dgemv(TransJ, 1.0, &J.matrix, u, 0.0, v); + + if (JTJ) + gsl_blas_dsyrk(CblasLower, CblasTrans, 1.0, &J.matrix, 0.0, JTJ); + + (void)x; /* avoid unused parameter warning */ + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +lin2_fvv (const gsl_vector * x, const gsl_vector * v, + void *params, gsl_vector * fvv) +{ + (void)x; /* avoid unused parameter warnings */ + (void)v; + (void)params; + + gsl_vector_set_zero(fvv); + + return GSL_SUCCESS; +} + +static gsl_multilarge_nlinear_fdf lin2_func = +{ + lin2_f, + lin2_df, + lin2_fvv, + lin2_N, + lin2_P, + NULL, + 0, + 0, + 0, + 0 +}; + +static test_fdf_problem lin2_problem = +{ + "linear_rank1", + lin2_x0, + NULL, + &lin2_epsrel, + &lin2_checksol, + &lin2_func +}; diff --git a/gsl-2.5/multilarge_nlinear/test_lin3.c b/gsl-2.5/multilarge_nlinear/test_lin3.c new file mode 100644 index 00000000..7160fcd2 --- /dev/null +++ b/gsl-2.5/multilarge_nlinear/test_lin3.c @@ -0,0 +1,124 @@ +#define lin3_N 50 /* can be anything >= p */ +#define lin3_P 10 /* >= 3 */ + +static double lin3_x0[lin3_P] = { 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0 }; +static double lin3_epsrel = 1.0e-8; + +static double lin3_J[lin3_N * lin3_P]; + +static void +lin3_checksol(const double x[], const double sumsq, + const double epsrel, const char *sname, + const char *pname) +{ + size_t i; + const double n = (double) lin3_N; + const double sumsq_exact = 0.5 * (n*n + 3*n - 6.0) / (2*n - 3.0); + const double sum_exact = 3.0 / (2.0*n - 3.0); + double sum = 0.0; + + gsl_test_rel(sumsq, sumsq_exact, epsrel, "%s/%s sumsq", + sname, pname); + + for (i = 1; i < lin3_P - 1; ++i) + sum += (i + 1.0) * x[i]; + + gsl_test_rel(sum, sum_exact, epsrel, "%s/%s coeff sum", + sname, pname); + + (void)x; /* avoid unused parameter warning */ +} + +static int +lin3_f (const gsl_vector * x, void *params, gsl_vector * f) +{ + size_t i, j; + + gsl_vector_set(f, 0, -1.0); + gsl_vector_set(f, lin3_N - 1, -1.0); + + for (i = 1; i < lin3_N - 1; ++i) + { + double fi = 0.0; + + for (j = 1; j < lin3_P - 1; ++j) + { + double xj = gsl_vector_get(x, j); + fi += (j + 1) * xj; + } + + fi = i * fi - 1.0; + gsl_vector_set(f, i, fi); + } + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +lin3_df (CBLAS_TRANSPOSE_t TransJ, const gsl_vector * x, + const gsl_vector * u, void * params, gsl_vector * v, + gsl_matrix * JTJ) +{ + gsl_matrix_view J = gsl_matrix_view_array(lin3_J, lin3_N, lin3_P); + size_t i, j; + + gsl_matrix_set_zero(&J.matrix); + + for (i = 1; i < lin3_N - 1; ++i) + { + for (j = 1; j < lin3_P - 1; ++j) + { + gsl_matrix_set(&J.matrix, i, j, i * (j + 1.0)); + } + } + + if (v) + gsl_blas_dgemv(TransJ, 1.0, &J.matrix, u, 0.0, v); + + if (JTJ) + gsl_blas_dsyrk(CblasLower, CblasTrans, 1.0, &J.matrix, 0.0, JTJ); + + (void)x; /* avoid unused parameter warning */ + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +lin3_fvv (const gsl_vector * x, const gsl_vector * v, + void *params, gsl_vector * fvv) +{ + (void)x; /* avoid unused parameter warnings */ + (void)v; + (void)params; + + gsl_vector_set_zero(fvv); + + return GSL_SUCCESS; +} + +static gsl_multilarge_nlinear_fdf lin3_func = +{ + lin3_f, + lin3_df, + lin3_fvv, + lin3_N, + lin3_P, + NULL, + 0, + 0, + 0, + 0 +}; + +static test_fdf_problem lin3_problem = +{ + "linear_rank1zeros", + lin3_x0, + NULL, + &lin3_epsrel, + &lin3_checksol, + &lin3_func +}; diff --git a/gsl-2.5/multilarge_nlinear/test_meyer.c b/gsl-2.5/multilarge_nlinear/test_meyer.c new file mode 100644 index 00000000..29210b59 --- /dev/null +++ b/gsl-2.5/multilarge_nlinear/test_meyer.c @@ -0,0 +1,142 @@ +#define meyer_N 16 +#define meyer_P 3 + +static double meyer_x0[meyer_P] = { 0.02, 4000.0, 250.0 }; +static double meyer_epsrel = 1.0e-7; + +static double meyer_J[meyer_N * meyer_P]; + +static double meyer_Y[meyer_N] = { +34780., 28610., 23650., 19630., 16370., 13720., 11540., +9744., 8261., 7030., 6005., 5147., 4427., 3820., +3307., 2872. +}; + +static void +meyer_checksol(const double x[], const double sumsq, + const double epsrel, const char *sname, + const char *pname) +{ + size_t i; + const double sumsq_exact = 8.794585517053883e+01; + const double meyer_x[meyer_P] = { 5.609636471049458e-03, + 6.181346346283188e+03, + 3.452236346240292e+02 }; + + gsl_test_rel(sumsq, sumsq_exact, epsrel, "%s/%s sumsq", + sname, pname); + + for (i = 0; i < meyer_P; ++i) + { + gsl_test_rel(x[i], meyer_x[i], epsrel, "%s/%s i=%zu", + sname, pname, i); + } +} + +static int +meyer_f (const gsl_vector * x, void *params, gsl_vector * f) +{ + double x1 = gsl_vector_get(x, 0); + double x2 = gsl_vector_get(x, 1); + double x3 = gsl_vector_get(x, 2); + size_t i; + + for (i = 0; i < meyer_N; ++i) + { + double ti = 45.0 + 5.0*(i + 1.0); + double yi = meyer_Y[i]; + double fi = x1 * exp(x2 / (ti + x3)) - yi; + gsl_vector_set(f, i, fi); + } + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +meyer_df (CBLAS_TRANSPOSE_t TransJ, const gsl_vector * x, + const gsl_vector * u, void * params, gsl_vector * v, + gsl_matrix * JTJ) +{ + gsl_matrix_view J = gsl_matrix_view_array(meyer_J, meyer_N, meyer_P); + double x1 = gsl_vector_get(x, 0); + double x2 = gsl_vector_get(x, 1); + double x3 = gsl_vector_get(x, 2); + size_t i; + + for (i = 0; i < meyer_N; ++i) + { + double ti = 45.0 + 5.0*(i + 1.0); + double term1 = ti + x3; + double term2 = exp(x2 / term1); + + gsl_matrix_set(&J.matrix, i, 0, term2); + gsl_matrix_set(&J.matrix, i, 1, x1*term2/term1); + gsl_matrix_set(&J.matrix, i, 2, -x1*x2*term2/(term1*term1)); + } + + if (v) + gsl_blas_dgemv(TransJ, 1.0, &J.matrix, u, 0.0, v); + + if (JTJ) + gsl_blas_dsyrk(CblasLower, CblasTrans, 1.0, &J.matrix, 0.0, JTJ); + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +meyer_fvv (const gsl_vector * x, const gsl_vector * v, + void *params, gsl_vector * fvv) +{ + double x1 = gsl_vector_get(x, 0); + double x2 = gsl_vector_get(x, 1); + double x3 = gsl_vector_get(x, 2); + double v1 = gsl_vector_get(v, 0); + double v2 = gsl_vector_get(v, 1); + double v3 = gsl_vector_get(v, 2); + size_t i; + + for (i = 0; i < meyer_N; ++i) + { + double ti = 45.0 + 5.0*(i + 1.0); + double term1 = ti + x3; + double term2 = exp(x2 / term1); + double term3 = v2*term1 - v3*x2; + double term4 = 2*ti*ti*v1 - v3*x1*(x2 + 2*x3) + + x3*(v2*x1 + 2*v1*x3) + + ti*(v2*x1 - 2*v3*x1 + 4*v1*x3); + + gsl_vector_set(fvv, i, term2 * term3 * term4 / pow(term1, 4.0)); + } + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static gsl_multilarge_nlinear_fdf meyer_func = +{ + meyer_f, + meyer_df, + meyer_fvv, + meyer_N, + meyer_P, + NULL, + 0, + 0, + 0, + 0 +}; + +static test_fdf_problem meyer_problem = +{ + "meyer", + meyer_x0, + NULL, + &meyer_epsrel, + &meyer_checksol, + &meyer_func +}; diff --git a/gsl-2.5/multilarge_nlinear/test_meyerscal.c b/gsl-2.5/multilarge_nlinear/test_meyerscal.c new file mode 100644 index 00000000..3d33765d --- /dev/null +++ b/gsl-2.5/multilarge_nlinear/test_meyerscal.c @@ -0,0 +1,143 @@ +#define meyerscal_N 16 +#define meyerscal_P 3 + +static double meyerscal_x0[meyerscal_P] = { 8.85, 4.0, 2.5 }; +static double meyerscal_epsrel = 1.0e-6; + +static double meyerscal_J[meyerscal_N * meyerscal_P]; + +static double meyerscal_Y[meyerscal_N] = { +34780., 28610., 23650., 19630., 16370., 13720., 11540., +9744., 8261., 7030., 6005., 5147., 4427., 3820., +3307., 2872. +}; + +static void +meyerscal_checksol(const double x[], const double sumsq, + const double epsrel, const char *sname, + const char *pname) +{ + size_t i; + const double sumsq_exact = 8.794585517003888e-05; + const double meyerscal_x[meyerscal_P] = { 2.481778312286695e+00, + 6.181346341853554e+00, + 3.452236344749865e+00 }; + + gsl_test_rel(sumsq, sumsq_exact, epsrel, "%s/%s sumsq", + sname, pname); + + for (i = 0; i < meyerscal_P; ++i) + { + gsl_test_rel(x[i], meyerscal_x[i], epsrel, "%s/%s i=%zu", + sname, pname, i); + } +} + +static int +meyerscal_f (const gsl_vector * x, void *params, gsl_vector * f) +{ + double x1 = gsl_vector_get(x, 0); + double x2 = gsl_vector_get(x, 1); + double x3 = gsl_vector_get(x, 2); + size_t i; + + for (i = 0; i < meyerscal_N; ++i) + { + double ti = 0.45 + 0.05*(i + 1.0); + double yi = meyerscal_Y[i]; + double fi = x1 * exp(10.0*x2 / (ti + x3) - 13.0) - 1.0e-3*yi; + gsl_vector_set(f, i, fi); + } + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +meyerscal_df (CBLAS_TRANSPOSE_t TransJ, const gsl_vector * x, + const gsl_vector * u, void * params, gsl_vector * v, + gsl_matrix * JTJ) +{ + gsl_matrix_view J = gsl_matrix_view_array(meyerscal_J, meyerscal_N, meyerscal_P); + double x1 = gsl_vector_get(x, 0); + double x2 = gsl_vector_get(x, 1); + double x3 = gsl_vector_get(x, 2); + size_t i; + + for (i = 0; i < meyerscal_N; ++i) + { + double ti = 0.45 + 0.05*(i + 1.0); + double term1 = ti + x3; + double term2 = exp(10.0*x2/term1 - 13.0); + + gsl_matrix_set(&J.matrix, i, 0, term2); + gsl_matrix_set(&J.matrix, i, 1, 10.0*x1*term2/term1); + gsl_matrix_set(&J.matrix, i, 2, -10.0*x1*x2*term2/(term1*term1)); + } + + if (v) + gsl_blas_dgemv(TransJ, 1.0, &J.matrix, u, 0.0, v); + + if (JTJ) + gsl_blas_dsyrk(CblasLower, CblasTrans, 1.0, &J.matrix, 0.0, JTJ); + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +meyerscal_fvv (const gsl_vector * x, const gsl_vector * v, + void *params, gsl_vector * fvv) +{ + double x1 = gsl_vector_get(x, 0); + double x2 = gsl_vector_get(x, 1); + double x3 = gsl_vector_get(x, 2); + double v1 = gsl_vector_get(v, 0); + double v2 = gsl_vector_get(v, 1); + double v3 = gsl_vector_get(v, 2); + size_t i; + + for (i = 0; i < meyerscal_N; ++i) + { + double ti = 0.45 + 0.05*(i + 1.0); + double term1 = ti + x3; + double term2 = exp(10.0*x2/term1 - 13.0); + double term3 = v2*term1 - v3*x2; + double term4 = ti*ti*v1 - + v3*x1*(5*x2 + x3) + + x3*(5*v2*x1 + v1*x3) + + ti*(5*v2*x1 - v3*x1 + 2*v1*x3); + + gsl_vector_set(fvv, i, 20*term2*term3*term4 / pow(term1, 4.0)); + } + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static gsl_multilarge_nlinear_fdf meyerscal_func = +{ + meyerscal_f, + meyerscal_df, + meyerscal_fvv, + meyerscal_N, + meyerscal_P, + NULL, + 0, + 0, + 0, + 0 +}; + +static test_fdf_problem meyerscal_problem = +{ + "meyerscal", + meyerscal_x0, + NULL, + &meyerscal_epsrel, + &meyerscal_checksol, + &meyerscal_func +}; diff --git a/gsl-2.5/multilarge_nlinear/test_osborne.c b/gsl-2.5/multilarge_nlinear/test_osborne.c new file mode 100644 index 00000000..956c925a --- /dev/null +++ b/gsl-2.5/multilarge_nlinear/test_osborne.c @@ -0,0 +1,151 @@ +#define osborne_N 33 +#define osborne_P 5 + +static double osborne_x0[osborne_P] = { 0.5, 1.5, -1.0, 0.01, 0.02 }; +static double osborne_epsrel = 1.0e-8; + +static double osborne_J[osborne_N * osborne_P]; + +static double osborne_Y[osborne_N] = { +0.844, 0.908, 0.932, 0.936, 0.925, 0.908, 0.881, +0.850, 0.818, 0.784, 0.751, 0.718, 0.685, 0.658, +0.628, 0.603, 0.580, 0.558, 0.538, 0.522, 0.506, +0.490, 0.478, 0.467, 0.457, 0.448, 0.438, 0.431, +0.424, 0.420, 0.414, 0.411, 0.406 +}; + +static void +osborne_checksol(const double x[], const double sumsq, + const double epsrel, const char *sname, + const char *pname) +{ + const double sumsq_exact = 5.464894697482687e-05; + double osborne_x[osborne_P]; + + osborne_x[0] = 3.754100521058740e-01; + osborne_x[1] = GSL_NAN; + osborne_x[2] = GSL_NAN; + osborne_x[3] = GSL_NAN; + osborne_x[4] = GSL_NAN; + + gsl_test_rel(sumsq, sumsq_exact, epsrel, "%s/%s sumsq", + sname, pname); + + /* only the first model parameter is uniquely constrained */ + gsl_test_rel(x[0], osborne_x[0], epsrel, "%s/%s i=0", + sname, pname); +} + +static int +osborne_f (const gsl_vector * x, void *params, gsl_vector * f) +{ + double x1 = gsl_vector_get(x, 0); + double x2 = gsl_vector_get(x, 1); + double x3 = gsl_vector_get(x, 2); + double x4 = gsl_vector_get(x, 3); + double x5 = gsl_vector_get(x, 4); + size_t i; + + for (i = 0; i < osborne_N; ++i) + { + double ti = 10.0*i; + double yi = osborne_Y[i]; + double fi = yi - (x1 + x2*exp(-x4*ti) + x3*exp(-x5*ti)); + gsl_vector_set(f, i, fi); + } + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +osborne_df (CBLAS_TRANSPOSE_t TransJ, const gsl_vector * x, + const gsl_vector * u, void * params, gsl_vector * v, + gsl_matrix * JTJ) +{ + gsl_matrix_view J = gsl_matrix_view_array(osborne_J, osborne_N, osborne_P); + double x2 = gsl_vector_get(x, 1); + double x3 = gsl_vector_get(x, 2); + double x4 = gsl_vector_get(x, 3); + double x5 = gsl_vector_get(x, 4); + size_t i; + + for (i = 0; i < osborne_N; ++i) + { + double ti = 10.0*i; + double term1 = exp(-x4*ti); + double term2 = exp(-x5*ti); + + gsl_matrix_set(&J.matrix, i, 0, -1.0); + gsl_matrix_set(&J.matrix, i, 1, -term1); + gsl_matrix_set(&J.matrix, i, 2, -term2); + gsl_matrix_set(&J.matrix, i, 3, ti*x2*term1); + gsl_matrix_set(&J.matrix, i, 4, ti*x3*term2); + } + + if (v) + gsl_blas_dgemv(TransJ, 1.0, &J.matrix, u, 0.0, v); + + if (JTJ) + gsl_blas_dsyrk(CblasLower, CblasTrans, 1.0, &J.matrix, 0.0, JTJ); + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +osborne_fvv (const gsl_vector * x, const gsl_vector * v, + void *params, gsl_vector * fvv) +{ + double x2 = gsl_vector_get(x, 1); + double x3 = gsl_vector_get(x, 2); + double x4 = gsl_vector_get(x, 3); + double x5 = gsl_vector_get(x, 4); + double v2 = gsl_vector_get(v, 1); + double v3 = gsl_vector_get(v, 2); + double v4 = gsl_vector_get(v, 3); + double v5 = gsl_vector_get(v, 4); + size_t i; + + for (i = 0; i < osborne_N; ++i) + { + double ti = 10.0*i; + double term1 = exp(-x4*ti); + double term2 = exp(-x5*ti); + double term3 = -2*v2 + ti*v4*x2; + double term4 = -2*v3 + ti*v5*x3; + + gsl_vector_set(fvv, i, -term1 * term2 * ti * + (v4 / term2 * term3 + v5 / term1 * term4)); + } + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static gsl_multilarge_nlinear_fdf osborne_func = +{ + osborne_f, + osborne_df, + osborne_fvv, + osborne_N, + osborne_P, + NULL, + 0, + 0, + 0, + 0 +}; + +static test_fdf_problem osborne_problem = +{ + "osborne", + osborne_x0, + NULL, + &osborne_epsrel, + &osborne_checksol, + &osborne_func +}; diff --git a/gsl-2.5/multilarge_nlinear/test_penalty1.c b/gsl-2.5/multilarge_nlinear/test_penalty1.c new file mode 100644 index 00000000..a5ad0d54 --- /dev/null +++ b/gsl-2.5/multilarge_nlinear/test_penalty1.c @@ -0,0 +1,118 @@ +#define penalty1_P 10 +#define penalty1_N (penalty1_P + 1) + +static double penalty1_x0[penalty1_P] = { 1.0, 2.0, 3.0, 4.0, 5.0, + 6.0, 7.0, 8.0, 9.0, 10.0 }; +static double penalty1_epsrel = 1.0e-12; + +static double penalty1_J[penalty1_N * penalty1_P]; + +static void +penalty1_checksol(const double x[], const double sumsq, + const double epsrel, const char *sname, + const char *pname) +{ + const double sumsq_exact = 7.08765146709037993e-05; + + gsl_test_rel(sumsq, sumsq_exact, epsrel, "%s/%s sumsq", + sname, pname); + + (void)x; /* avoid unused parameter warning */ +} + +static int +penalty1_f (const gsl_vector * x, void *params, gsl_vector * f) +{ + const double alpha = 1.0e-5; + const double sqrt_alpha = sqrt(alpha); + size_t i; + double sum = 0.0; + + for (i = 0; i < penalty1_P; ++i) + { + double xi = gsl_vector_get(x, i); + + gsl_vector_set(f, i, sqrt_alpha*(xi - 1.0)); + + sum += xi * xi; + } + + gsl_vector_set(f, penalty1_N - 1, sum - 0.25); + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +penalty1_df (CBLAS_TRANSPOSE_t TransJ, const gsl_vector * x, + const gsl_vector * u, void * params, gsl_vector * v, + gsl_matrix * JTJ) +{ + gsl_matrix_view J = gsl_matrix_view_array(penalty1_J, penalty1_N, penalty1_P); + const double alpha = 1.0e-5; + const double sqrt_alpha = sqrt(alpha); + size_t i; + gsl_matrix_view m = gsl_matrix_submatrix(&J.matrix, 0, 0, penalty1_P, penalty1_P); + gsl_vector_view diag = gsl_matrix_diagonal(&m.matrix); + + gsl_matrix_set_zero(&m.matrix); + gsl_vector_set_all(&diag.vector, sqrt_alpha); + + for (i = 0; i < penalty1_P; ++i) + { + double xi = gsl_vector_get(x, i); + gsl_matrix_set(&J.matrix, penalty1_N - 1, i, 2.0 * xi); + } + + if (v) + gsl_blas_dgemv(TransJ, 1.0, &J.matrix, u, 0.0, v); + + if (JTJ) + gsl_blas_dsyrk(CblasLower, CblasTrans, 1.0, &J.matrix, 0.0, JTJ); + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +penalty1_fvv (const gsl_vector * x, const gsl_vector * v, + void *params, gsl_vector * fvv) +{ + double u; + + gsl_vector_set_zero(fvv); + + gsl_blas_ddot(v, v, &u); + gsl_vector_set(fvv, penalty1_N - 1, 2.0 * u); + + (void)x; /* avoid unused parameter warning */ + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static gsl_multilarge_nlinear_fdf penalty1_func = +{ + penalty1_f, + penalty1_df, + penalty1_fvv, + penalty1_N, + penalty1_P, + NULL, + 0, + 0, + 0, + 0 +}; + +static test_fdf_problem penalty1_problem = +{ + "penalty1", + penalty1_x0, + NULL, + &penalty1_epsrel, + &penalty1_checksol, + &penalty1_func +}; diff --git a/gsl-2.5/multilarge_nlinear/test_penalty2.c b/gsl-2.5/multilarge_nlinear/test_penalty2.c new file mode 100644 index 00000000..3fd71b55 --- /dev/null +++ b/gsl-2.5/multilarge_nlinear/test_penalty2.c @@ -0,0 +1,190 @@ +#define penalty2_N 8 /* 2*p */ +#define penalty2_P 4 + +static double penalty2_x0[penalty2_P] = { 0.5, 0.5, 0.5, 0.5 }; +static double penalty2_epsrel = 1.0e-12; + +static double penalty2_J[penalty2_N * penalty2_P]; + +static void +penalty2_checksol(const double x[], const double sumsq, + const double epsrel, const char *sname, + const char *pname) +{ + const double sumsq_exact = 9.37629300735544219e-06; + + gsl_test_rel(sumsq, sumsq_exact, epsrel, "%s/%s sumsq", + sname, pname); + + (void)x; /* avoid unused parameter warning */ +} + +static int +penalty2_f (const gsl_vector * x, void *params, gsl_vector * f) +{ + const double alpha = 1.0e-5; + const double sqrt_alpha = sqrt(alpha); + double x1 = gsl_vector_get(x, 0); + size_t i; + double sum = penalty2_P * x1 * x1; + + gsl_vector_set(f, 0, x1 - 0.2); + + /* rows [2:p] */ + for (i = 1; i < penalty2_P; ++i) + { + double xi = gsl_vector_get(x, i); + double xim1 = gsl_vector_get(x, i - 1); + double yi = exp(0.1*(i + 1.0)) + exp(0.1*i); + + gsl_vector_set(f, i, sqrt_alpha*(exp(0.1*xi) + exp(0.1*xim1) - yi)); + + sum += (penalty2_P - i) * xi * xi; + } + + /* rows [p+1:2p-1] */ + for (i = penalty2_P; i < penalty2_N - 1; ++i) + { + double xi = gsl_vector_get(x, i - penalty2_P + 1); + + gsl_vector_set(f, i, sqrt_alpha*(exp(0.1*xi) - exp(-0.1))); + } + + /* row 2p */ + gsl_vector_set(f, penalty2_N - 1, sum - 1.0); + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +penalty2_df (CBLAS_TRANSPOSE_t TransJ, const gsl_vector * x, + const gsl_vector * u, void * params, gsl_vector * v, + gsl_matrix * JTJ) +{ + gsl_matrix_view J = gsl_matrix_view_array(penalty2_J, penalty2_N, penalty2_P); + const double alpha = 1.0e-5; + const double sqrt_alpha = sqrt(alpha); + size_t i, j; + + for (j = 0; j < penalty2_P; ++j) + { + double xj = gsl_vector_get(x, j); + double delta1j = (j == 0) ? 1.0 : 0.0; + + /* first and last rows */ + gsl_matrix_set(&J.matrix, 0, j, delta1j); + gsl_matrix_set(&J.matrix, penalty2_N - 1, j, 2.0 * (penalty2_P - j) * xj); + + /* rows [2:p] */ + for (i = 1; i < penalty2_P; ++i) + { + double xi = gsl_vector_get(x, i); + double xim1 = gsl_vector_get(x, i - 1); + double Jij; + + if (i == j) + Jij = exp(0.1 * xi); + else if (i - 1 == j) + Jij = exp(0.1 * xim1); + else + Jij = 0.0; + + Jij *= 0.1 * sqrt_alpha; + + gsl_matrix_set(&J.matrix, i, j, Jij); + } + + /* rows [p+1:2p-1] */ + for (i = penalty2_P; i < penalty2_N - 1; ++i) + { + double xi = gsl_vector_get(x, i - penalty2_P + 1); + + if (i - penalty2_P + 1 == j) + gsl_matrix_set(&J.matrix, i, j, 0.1 * sqrt_alpha * exp(0.1*xi)); + else + gsl_matrix_set(&J.matrix, i, j, 0.0); + } + } + + if (v) + gsl_blas_dgemv(TransJ, 1.0, &J.matrix, u, 0.0, v); + + if (JTJ) + gsl_blas_dsyrk(CblasLower, CblasTrans, 1.0, &J.matrix, 0.0, JTJ); + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +penalty2_fvv (const gsl_vector * x, const gsl_vector * v, + void *params, gsl_vector * fvv) +{ + const double alpha = 1.0e-5; + const double sqrt_alpha = sqrt(alpha); + double v1 = gsl_vector_get(v, 0); + double sum = penalty2_P * v1 * v1; + size_t i; + + /* first row */ + gsl_vector_set(fvv, 0, 0.0); + + /* rows [2:p] */ + for (i = 1; i < penalty2_P; ++i) + { + double xi = gsl_vector_get(x, i); + double xim1 = gsl_vector_get(x, i - 1); + double vi = gsl_vector_get(v, i); + double vim1 = gsl_vector_get(v, i - 1); + double term1 = exp(xi / 10.0); + double term2 = exp(xim1 / 10.0); + + gsl_vector_set(fvv, i, + sqrt_alpha / 100.0 * (term1 * vi * vi + term2 * vim1 * vim1)); + + sum += (penalty2_P - i) * vi * vi; + } + + /* last row */ + gsl_vector_set(fvv, penalty2_N - 1, 2.0 * sum); + + /* rows [p+1:2p-1] */ + for (i = penalty2_P; i < penalty2_N - 1; ++i) + { + double xi = gsl_vector_get(x, i - penalty2_P + 1); + double vi = gsl_vector_get(v, i - penalty2_P + 1); + + gsl_vector_set(fvv, i, sqrt_alpha / 100.0 * exp(xi / 10.0) * vi * vi); + } + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static gsl_multilarge_nlinear_fdf penalty2_func = +{ + penalty2_f, + penalty2_df, + penalty2_fvv, + penalty2_N, + penalty2_P, + NULL, + 0, + 0, + 0, + 0 +}; + +static test_fdf_problem penalty2_problem = +{ + "penalty2", + penalty2_x0, + NULL, + &penalty2_epsrel, + &penalty2_checksol, + &penalty2_func +}; diff --git a/gsl-2.5/multilarge_nlinear/test_powell1.c b/gsl-2.5/multilarge_nlinear/test_powell1.c new file mode 100644 index 00000000..080c21bf --- /dev/null +++ b/gsl-2.5/multilarge_nlinear/test_powell1.c @@ -0,0 +1,131 @@ +#define powell1_N 4 +#define powell1_P 4 + +static double powell1_x0[powell1_P] = { 3.0, -1.0, 0.0, 1.0 }; +static double powell1_epsrel = 1.0e-4; + +static double powell1_J[powell1_N * powell1_P]; + +static void +powell1_checksol(const double x[], const double sumsq, + const double epsrel, const char *sname, + const char *pname) +{ + size_t i; + const double sumsq_exact = 0.0; + + gsl_test_rel(sumsq, sumsq_exact, epsrel, "%s/%s sumsq", + sname, pname); + + for (i = 0; i < powell1_P; ++i) + { + gsl_test_rel(x[i], 0.0, epsrel, "%s/%s i=%zu", + sname, pname, i); + } +} + +static int +powell1_f (const gsl_vector * x, void *params, gsl_vector * f) +{ + double x1 = gsl_vector_get (x, 0); + double x2 = gsl_vector_get (x, 1); + double x3 = gsl_vector_get (x, 2); + double x4 = gsl_vector_get (x, 3); + + gsl_vector_set(f, 0, x1 + 10.0*x2); + gsl_vector_set(f, 1, sqrt(5.0) * (x3 - x4)); + gsl_vector_set(f, 2, pow(x2 - 2.0*x3, 2.0)); + gsl_vector_set(f, 3, sqrt(10.0) * pow((x1 - x4), 2.0)); + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +powell1_df (CBLAS_TRANSPOSE_t TransJ, const gsl_vector * x, + const gsl_vector * u, void * params, gsl_vector * v, + gsl_matrix * JTJ) +{ + gsl_matrix_view J = gsl_matrix_view_array(powell1_J, powell1_N, powell1_P); + double x1 = gsl_vector_get (x, 0); + double x2 = gsl_vector_get (x, 1); + double x3 = gsl_vector_get (x, 2); + double x4 = gsl_vector_get (x, 3); + double term1 = x2 - 2.0*x3; + double term2 = x1 - x4; + + gsl_matrix_set(&J.matrix, 0, 0, 1.0); + gsl_matrix_set(&J.matrix, 0, 1, 10.0); + gsl_matrix_set(&J.matrix, 0, 2, 0.0); + gsl_matrix_set(&J.matrix, 0, 3, 0.0); + + gsl_matrix_set(&J.matrix, 1, 0, 0.0); + gsl_matrix_set(&J.matrix, 1, 1, 0.0); + gsl_matrix_set(&J.matrix, 1, 2, sqrt(5.0)); + gsl_matrix_set(&J.matrix, 1, 3, -sqrt(5.0)); + + gsl_matrix_set(&J.matrix, 2, 0, 0.0); + gsl_matrix_set(&J.matrix, 2, 1, 2.0*term1); + gsl_matrix_set(&J.matrix, 2, 2, -4.0*term1); + gsl_matrix_set(&J.matrix, 2, 3, 0.0); + + gsl_matrix_set(&J.matrix, 3, 0, 2.0*sqrt(10.0)*term2); + gsl_matrix_set(&J.matrix, 3, 1, 0.0); + gsl_matrix_set(&J.matrix, 3, 2, 0.0); + gsl_matrix_set(&J.matrix, 3, 3, -2.0*sqrt(10.0)*term2); + + if (v) + gsl_blas_dgemv(TransJ, 1.0, &J.matrix, u, 0.0, v); + + if (JTJ) + gsl_blas_dsyrk(CblasLower, CblasTrans, 1.0, &J.matrix, 0.0, JTJ); + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +powell1_fvv (const gsl_vector * x, const gsl_vector * v, + void *params, gsl_vector * fvv) +{ + double v1 = gsl_vector_get(v, 0); + double v2 = gsl_vector_get(v, 1); + double v3 = gsl_vector_get(v, 2); + double v4 = gsl_vector_get(v, 3); + + gsl_vector_set(fvv, 0, 0.0); + gsl_vector_set(fvv, 1, 0.0); + gsl_vector_set(fvv, 2, 2.0 * pow(v2 - 2.0*v3, 2.0)); + gsl_vector_set(fvv, 3, 2.0 * sqrt(10.0) * pow(v1 - v4, 2.0)); + + (void)x; /* avoid unused parameter warning */ + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static gsl_multilarge_nlinear_fdf powell1_func = +{ + powell1_f, + powell1_df, + powell1_fvv, + powell1_N, + powell1_P, + NULL, + 0, + 0, + 0, + 0 +}; + +static test_fdf_problem powell1_problem = +{ + "powell_singular", + powell1_x0, + NULL, + &powell1_epsrel, + &powell1_checksol, + &powell1_func +}; diff --git a/gsl-2.5/multilarge_nlinear/test_powell2.c b/gsl-2.5/multilarge_nlinear/test_powell2.c new file mode 100644 index 00000000..4293c496 --- /dev/null +++ b/gsl-2.5/multilarge_nlinear/test_powell2.c @@ -0,0 +1,106 @@ +#define powell2_N 2 +#define powell2_P 2 + +static double powell2_x0[powell2_P] = { 3.0, 1.0 }; +static double powell2_epsrel = 1.0e-3; + +static double powell2_J[powell2_N * powell2_P]; + +static void +powell2_checksol(const double x[], const double sumsq, + const double epsrel, const char *sname, + const char *pname) +{ + size_t i; + const double sumsq_exact = 0.0; + + gsl_test_rel(sumsq, sumsq_exact, epsrel, "%s/%s sumsq", + sname, pname); + + for (i = 0; i < powell2_P; ++i) + { + gsl_test_rel(x[i], 0.0, epsrel, "%s/%s i=%zu", + sname, pname, i); + } +} + +static int +powell2_f (const gsl_vector * x, void *params, gsl_vector * f) +{ + double x0 = gsl_vector_get (x, 0); + double x1 = gsl_vector_get (x, 1); + + gsl_vector_set(f, 0, x0); + gsl_vector_set(f, 1, 10.0*x0/(x0 + 0.1) + 2.0*x1*x1); + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +powell2_df (CBLAS_TRANSPOSE_t TransJ, const gsl_vector * x, + const gsl_vector * u, void * params, gsl_vector * v, + gsl_matrix * JTJ) +{ + gsl_matrix_view J = gsl_matrix_view_array(powell2_J, powell2_N, powell2_P); + double x0 = gsl_vector_get (x, 0); + double x1 = gsl_vector_get (x, 1); + double term = x0 + 0.1; + + gsl_matrix_set(&J.matrix, 0, 0, 1.0); + gsl_matrix_set(&J.matrix, 0, 1, 0.0); + gsl_matrix_set(&J.matrix, 1, 0, 1.0 / (term * term)); + gsl_matrix_set(&J.matrix, 1, 1, 4.0 * x1); + + if (v) + gsl_blas_dgemv(TransJ, 1.0, &J.matrix, u, 0.0, v); + + if (JTJ) + gsl_blas_dsyrk(CblasLower, CblasTrans, 1.0, &J.matrix, 0.0, JTJ); + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +powell2_fvv (const gsl_vector * x, const gsl_vector * v, + void *params, gsl_vector * fvv) +{ + double x0 = gsl_vector_get (x, 0); + double v0 = gsl_vector_get (v, 0); + double v1 = gsl_vector_get (v, 1); + double term = x0 + 0.1; + + gsl_vector_set(fvv, 0, 0.0); + gsl_vector_set(fvv, 1, 4*v1*v1 - (2*v0*v0)/pow(term, 3.0)); + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static gsl_multilarge_nlinear_fdf powell2_func = +{ + powell2_f, + powell2_df, + powell2_fvv, + powell2_N, + powell2_P, + NULL, + 0, + 0, + 0, + 0 +}; + +static test_fdf_problem powell2_problem = +{ + "powell2", + powell2_x0, + NULL, + &powell2_epsrel, + &powell2_checksol, + &powell2_func +}; diff --git a/gsl-2.5/multilarge_nlinear/test_powell3.c b/gsl-2.5/multilarge_nlinear/test_powell3.c new file mode 100644 index 00000000..f22b84f9 --- /dev/null +++ b/gsl-2.5/multilarge_nlinear/test_powell3.c @@ -0,0 +1,108 @@ +#define powell3_N 2 +#define powell3_P 2 + +static double powell3_x0[powell3_P] = { 0.0, 1.0 }; +static double powell3_epsrel = 1.0e-6; + +static double powell3_J[powell3_N * powell3_P]; + +static void +powell3_checksol(const double x[], const double sumsq, + const double epsrel, const char *sname, + const char *pname) +{ + size_t i; + const double sumsq_exact = 0.0; + const double powell3_x[powell3_P] = { 1.09815932969975976e-05, + 9.10614673986700218 }; + + gsl_test_rel(sumsq, sumsq_exact, epsrel, "%s/%s sumsq", + sname, pname); + + for (i = 0; i < powell3_P; ++i) + { + gsl_test_rel(x[i], powell3_x[i], epsrel, "%s/%s i=%zu", + sname, pname, i); + } +} + +static int +powell3_f (const gsl_vector * x, void *params, gsl_vector * f) +{ + double x1 = gsl_vector_get(x, 0); + double x2 = gsl_vector_get(x, 1); + + gsl_vector_set(f, 0, 1.0e4*x1*x2 - 1.0); + gsl_vector_set(f, 1, exp(-x1) + exp(-x2) - 1.0001); + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +powell3_df (CBLAS_TRANSPOSE_t TransJ, const gsl_vector * x, + const gsl_vector * u, void * params, gsl_vector * v, + gsl_matrix * JTJ) +{ + gsl_matrix_view J = gsl_matrix_view_array(powell3_J, powell3_N, powell3_P); + double x1 = gsl_vector_get(x, 0); + double x2 = gsl_vector_get(x, 1); + + gsl_matrix_set(&J.matrix, 0, 0, 1.0e4*x2); + gsl_matrix_set(&J.matrix, 0, 1, 1.0e4*x1); + + gsl_matrix_set(&J.matrix, 1, 0, -exp(-x1)); + gsl_matrix_set(&J.matrix, 1, 1, -exp(-x2)); + + if (v) + gsl_blas_dgemv(TransJ, 1.0, &J.matrix, u, 0.0, v); + + if (JTJ) + gsl_blas_dsyrk(CblasLower, CblasTrans, 1.0, &J.matrix, 0.0, JTJ); + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +powell3_fvv (const gsl_vector * x, const gsl_vector * v, + void *params, gsl_vector * fvv) +{ + double x1 = gsl_vector_get(x, 0); + double x2 = gsl_vector_get(x, 1); + double v1 = gsl_vector_get(v, 0); + double v2 = gsl_vector_get(v, 1); + + gsl_vector_set(fvv, 0, 2.0e4 * v1 * v2); + gsl_vector_set(fvv, 1, v1*v1*exp(-x1) + v2*v2*exp(-x2)); + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static gsl_multilarge_nlinear_fdf powell3_func = +{ + powell3_f, + powell3_df, + powell3_fvv, + powell3_N, + powell3_P, + NULL, + 0, + 0, + 0, + 0 +}; + +static test_fdf_problem powell3_problem = +{ + "powell_badly_scaled", + powell3_x0, + NULL, + &powell3_epsrel, + &powell3_checksol, + &powell3_func +}; diff --git a/gsl-2.5/multilarge_nlinear/test_rat42.c b/gsl-2.5/multilarge_nlinear/test_rat42.c new file mode 100644 index 00000000..d147edaa --- /dev/null +++ b/gsl-2.5/multilarge_nlinear/test_rat42.c @@ -0,0 +1,163 @@ +#define rat42_N 9 +#define rat42_P 3 + +static double rat42_x0a[rat42_P] = { 100.0, 1.0, 0.1 }; +static double rat42_x0b[rat42_P] = { 75.0, 2.5, 0.07 }; +static double rat42_epsrel = 1.0e-7; + +static double rat42_J[rat42_N * rat42_P]; + +static double rat42_sigma[rat42_P] = { + 1.7340283401E+00, 8.8295217536E-02, 3.4465663377E-03 +}; + +static double rat42_X[rat42_N] = { 9.0, 14.0, 21.0, 28.0, 42.0, + 57.0, 63.0, 70.0, 79.0 }; + +static double rat42_F[rat42_N] = { 8.930, 10.800, 18.590, 22.330, + 39.350, 56.110, 61.730, 64.620, + 67.080 }; + +static void +rat42_checksol(const double x[], const double sumsq, + const double epsrel, const char *sname, + const char *pname) +{ + size_t i; + const double sumsq_exact = 8.0565229338E+00; + const double rat42_x[rat42_P] = { 7.2462237576E+01, + 2.6180768402E+00, + 6.7359200066E-02 }; + + gsl_test_rel(sumsq, sumsq_exact, epsrel, "%s/%s sumsq", + sname, pname); + + for (i = 0; i < rat42_P; ++i) + { + gsl_test_rel(x[i], rat42_x[i], epsrel, "%s/%s i=%zu", + sname, pname, i); + } +} + + +static int +rat42_f (const gsl_vector * x, void *params, gsl_vector * f) +{ + double b[rat42_P]; + size_t i; + + for (i = 0; i < rat42_P; i++) + { + b[i] = gsl_vector_get(x, i); + } + + for (i = 0; i < rat42_N; i++) + { + double xi = rat42_X[i]; + double yi = b[0] / (1.0 + exp(b[1] - b[2]*xi)); + gsl_vector_set (f, i, yi - rat42_F[i]); + } + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +rat42_df (CBLAS_TRANSPOSE_t TransJ, const gsl_vector * x, + const gsl_vector * u, void * params, gsl_vector * v, + gsl_matrix * JTJ) +{ + gsl_matrix_view J = gsl_matrix_view_array(rat42_J, rat42_N, rat42_P); + double b[rat42_P]; + size_t i; + + for (i = 0; i < rat42_P; i++) + { + b[i] = gsl_vector_get(x, i); + } + + for (i = 0; i < rat42_N; i++) + { + double xi = rat42_X[i]; + double term1 = exp(b[1] - b[2]*xi); + double term2 = 1.0 + term1; + + gsl_matrix_set (&J.matrix, i, 0, 1.0 / term2); + gsl_matrix_set (&J.matrix, i, 1, -b[0] * term1 / (term2 * term2)); + gsl_matrix_set (&J.matrix, i, 2, b[0] * term1 * xi / (term2 * term2)); + } + + if (v) + gsl_blas_dgemv(TransJ, 1.0, &J.matrix, u, 0.0, v); + + if (JTJ) + gsl_blas_dsyrk(CblasLower, CblasTrans, 1.0, &J.matrix, 0.0, JTJ); + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +rat42_fvv (const gsl_vector * x, const gsl_vector * v, + void *params, gsl_vector * fvv) +{ + double x1 = gsl_vector_get(x, 0); + double x2 = gsl_vector_get(x, 1); + double x3 = gsl_vector_get(x, 2); + double v1 = gsl_vector_get(v, 0); + double v2 = gsl_vector_get(v, 1); + double v3 = gsl_vector_get(v, 2); + size_t i; + + for (i = 0; i < rat42_N; i++) + { + double ti = rat42_X[i]; + double term1 = exp(x2); + double term2 = exp(ti * x3); + + gsl_vector_set(fvv, i, + -pow(term1 + term2, -3.0) * term1 * term2 * + (v2 - ti*v3) * (term1*(2*v1 - v2*x1 + ti*v3*x1) + + term2*(2*v1 + x1*(v2 - ti*v3)))); + } + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static gsl_multilarge_nlinear_fdf rat42_func = +{ + rat42_f, + rat42_df, + rat42_fvv, + rat42_N, + rat42_P, + NULL, + 0, + 0, + 0, + 0 +}; + +static test_fdf_problem rat42a_problem = +{ + "nist-rat42a", + rat42_x0a, + rat42_sigma, + &rat42_epsrel, + &rat42_checksol, + &rat42_func +}; + +static test_fdf_problem rat42b_problem = +{ + "nist-rat42b", + rat42_x0b, + rat42_sigma, + &rat42_epsrel, + &rat42_checksol, + &rat42_func +}; diff --git a/gsl-2.5/multilarge_nlinear/test_rat43.c b/gsl-2.5/multilarge_nlinear/test_rat43.c new file mode 100644 index 00000000..00e3dca2 --- /dev/null +++ b/gsl-2.5/multilarge_nlinear/test_rat43.c @@ -0,0 +1,137 @@ +#define rat43_N 15 +#define rat43_P 4 + +static double rat43_x0a[rat43_P] = { 100.0, 10.0, 1.0, 1.0 }; +static double rat43_x0b[rat43_P] = { 700.0, 5.0, 0.75, 1.3 }; +static double rat43_epsrel = 1.0e-6; + +static double rat43_J[rat43_N * rat43_P]; + +static double rat43_sigma[rat43_P] = { + 1.6302297817E+01, 2.0828735829E+00, + 1.9566123451E-01, 6.8761936385E-01 +}; + +static double rat43_F[rat43_N] = { 16.08, 33.83, 65.80, 97.20, 191.55, + 326.20, 386.87, 520.53, 590.03, + 651.92, 724.93, 699.56, 689.96, + 637.56, 717.41 }; + +static void +rat43_checksol(const double x[], const double sumsq, + const double epsrel, const char *sname, + const char *pname) +{ + size_t i; + const double sumsq_exact = 8.7864049080E+03; + const double rat43_x[rat43_P] = { 6.9964151270E+02, + 5.2771253025E+00, + 7.5962938329E-01, + 1.2792483859E+00 }; + + gsl_test_rel(sumsq, sumsq_exact, epsrel, "%s/%s sumsq", + sname, pname); + + for (i = 0; i < rat43_P; ++i) + { + gsl_test_rel(x[i], rat43_x[i], epsrel, "%s/%s i=%zu", + sname, pname, i); + } +} + + +static int +rat43_f (const gsl_vector * x, void *params, gsl_vector * f) +{ + double b[rat43_P]; + size_t i; + + for (i = 0; i < rat43_P; i++) + { + b[i] = gsl_vector_get(x, i); + } + + for (i = 0; i < rat43_N; i++) + { + double xi = i + 1.0; + double e = exp(b[1] - b[2]*xi); + double yi = b[0] / pow(1.0 + e, 1.0 / b[3]); + gsl_vector_set (f, i, yi - rat43_F[i]); + } + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +rat43_df (CBLAS_TRANSPOSE_t TransJ, const gsl_vector * x, + const gsl_vector * u, void * params, gsl_vector * v, + gsl_matrix * JTJ) +{ + gsl_matrix_view J = gsl_matrix_view_array(rat43_J, rat43_N, rat43_P); + double b[rat43_P]; + size_t i; + + for (i = 0; i < rat43_P; i++) + { + b[i] = gsl_vector_get(x, i); + } + + for (i = 0; i < rat43_N; i++) + { + double xi = i + 1.0; + double e = exp(b[1] - b[2]*xi); + double term1 = 1.0 + e; + double term2 = pow(term1, -1.0 / b[3]); + + gsl_matrix_set (&J.matrix, i, 0, term2); + gsl_matrix_set (&J.matrix, i, 1, -b[0] / b[3] * e * term2 / term1); + gsl_matrix_set (&J.matrix, i, 2, b[0] / b[3] * xi * e * term2 / term1); + gsl_matrix_set (&J.matrix, i, 3, b[0] / b[3] / b[3] * log(term1) * term2); + } + + if (v) + gsl_blas_dgemv(TransJ, 1.0, &J.matrix, u, 0.0, v); + + if (JTJ) + gsl_blas_dsyrk(CblasLower, CblasTrans, 1.0, &J.matrix, 0.0, JTJ); + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static gsl_multilarge_nlinear_fdf rat43_func = +{ + rat43_f, + rat43_df, + NULL, /* analytic expression too complex */ + rat43_N, + rat43_P, + NULL, + 0, + 0, + 0, + 0 +}; + +static test_fdf_problem rat43a_problem = +{ + "nist-rat43a", + rat43_x0a, + rat43_sigma, + &rat43_epsrel, + &rat43_checksol, + &rat43_func +}; + +static test_fdf_problem rat43b_problem = +{ + "nist-rat43b", + rat43_x0b, + rat43_sigma, + &rat43_epsrel, + &rat43_checksol, + &rat43_func +}; diff --git a/gsl-2.5/multilarge_nlinear/test_rosenbrock.c b/gsl-2.5/multilarge_nlinear/test_rosenbrock.c new file mode 100644 index 00000000..3925a3c1 --- /dev/null +++ b/gsl-2.5/multilarge_nlinear/test_rosenbrock.c @@ -0,0 +1,102 @@ +#define rosenbrock_N 2 +#define rosenbrock_P 2 + +static double rosenbrock_x0[rosenbrock_P] = { -1.2, 1.0 }; +static double rosenbrock_epsrel = 1.0e-12; + +static double rosenbrock_J[rosenbrock_N * rosenbrock_P]; + +static void +rosenbrock_checksol(const double x[], const double sumsq, + const double epsrel, const char *sname, + const char *pname) +{ + size_t i; + const double sumsq_exact = 0.0; + + gsl_test_rel(sumsq, sumsq_exact, epsrel, "%s/%s sumsq", + sname, pname); + + for (i = 0; i < rosenbrock_P; ++i) + { + gsl_test_rel(x[i], 1.0, epsrel, "%s/%s i=%zu", + sname, pname, i); + } +} + +static int +rosenbrock_f (const gsl_vector * x, void *params, gsl_vector * f) +{ + double x1 = gsl_vector_get(x, 0); + double x2 = gsl_vector_get(x, 1); + + gsl_vector_set(f, 0, 10.0 * (x2 - x1*x1)); + gsl_vector_set(f, 1, 1.0 - x1); + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +rosenbrock_df (CBLAS_TRANSPOSE_t TransJ, const gsl_vector * x, + const gsl_vector * u, void * params, gsl_vector * v, + gsl_matrix * JTJ) +{ + gsl_matrix_view J = gsl_matrix_view_array(rosenbrock_J, rosenbrock_N, rosenbrock_P); + double x1 = gsl_vector_get(x, 0); + + gsl_matrix_set(&J.matrix, 0, 0, -20.0*x1); + gsl_matrix_set(&J.matrix, 0, 1, 10.0); + gsl_matrix_set(&J.matrix, 1, 0, -1.0); + gsl_matrix_set(&J.matrix, 1, 1, 0.0); + + if (v) + gsl_blas_dgemv(TransJ, 1.0, &J.matrix, u, 0.0, v); + + if (JTJ) + gsl_blas_dsyrk(CblasLower, CblasTrans, 1.0, &J.matrix, 0.0, JTJ); + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +rosenbrock_fvv (const gsl_vector * x, const gsl_vector * v, + void *params, gsl_vector * fvv) +{ + double v1 = gsl_vector_get(v, 0); + + gsl_vector_set(fvv, 0, -20.0 * v1 * v1); + gsl_vector_set(fvv, 1, 0.0); + + (void)x; /* avoid unused parameter warning */ + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static gsl_multilarge_nlinear_fdf rosenbrock_func = +{ + rosenbrock_f, + rosenbrock_df, + rosenbrock_fvv, + rosenbrock_N, + rosenbrock_P, + NULL, + 0, + 0, + 0, + 0 +}; + +static test_fdf_problem rosenbrock_problem = +{ + "rosenbrock", + rosenbrock_x0, + NULL, + &rosenbrock_epsrel, + &rosenbrock_checksol, + &rosenbrock_func +}; diff --git a/gsl-2.5/multilarge_nlinear/test_rosenbrocke.c b/gsl-2.5/multilarge_nlinear/test_rosenbrocke.c new file mode 100644 index 00000000..f5a330f5 --- /dev/null +++ b/gsl-2.5/multilarge_nlinear/test_rosenbrocke.c @@ -0,0 +1,121 @@ +#define rosenbrocke_N 8 /* = p */ +#define rosenbrocke_P 8 /* must be even */ + +static double rosenbrocke_x0[rosenbrocke_P] = { -1.2, 1.0, -1.2, 1.0, + -1.2, 1.0, -1.2, 1.0 }; +static double rosenbrocke_epsrel = 1.0e-12; + +static double rosenbrocke_J[rosenbrocke_N * rosenbrocke_P]; + +static void +rosenbrocke_checksol(const double x[], const double sumsq, + const double epsrel, const char *sname, + const char *pname) +{ + size_t i; + const double sumsq_exact = 0.0; + const double rosenbrocke_x[rosenbrocke_P] = { 1.0, 1.0, 1.0, 1.0, + 1.0, 1.0, 1.0, 1.0 }; + + gsl_test_rel(sumsq, sumsq_exact, epsrel, "%s/%s sumsq", + sname, pname); + + for (i = 0; i < rosenbrocke_P; ++i) + { + gsl_test_rel(x[i], rosenbrocke_x[i], epsrel, "%s/%s i=%zu", + sname, pname, i); + } +} + +static int +rosenbrocke_f (const gsl_vector * x, void *params, gsl_vector * f) +{ + size_t i; + + for (i = 0; i < rosenbrocke_N / 2; ++i) + { + double x2i = gsl_vector_get(x, 2*i + 1); + double x2im1 = gsl_vector_get(x, 2*i); + + gsl_vector_set(f, 2*i, 10.0 * (x2i - x2im1*x2im1)); + gsl_vector_set(f, 2*i + 1, 1.0 - x2im1); + } + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +rosenbrocke_df (CBLAS_TRANSPOSE_t TransJ, const gsl_vector * x, + const gsl_vector * u, void * params, gsl_vector * v, + gsl_matrix * JTJ) +{ + gsl_matrix_view J = gsl_matrix_view_array(rosenbrocke_J, rosenbrocke_N, rosenbrocke_P); + size_t i; + + gsl_matrix_set_zero(&J.matrix); + + for (i = 0; i < rosenbrocke_N / 2; ++i) + { + double x2im1 = gsl_vector_get(x, 2*i); + + gsl_matrix_set(&J.matrix, 2*i, 2*i, -20.0*x2im1); + gsl_matrix_set(&J.matrix, 2*i, 2*i + 1, 10.0); + gsl_matrix_set(&J.matrix, 2*i + 1, 2*i, -1.0); + } + + if (v) + gsl_blas_dgemv(TransJ, 1.0, &J.matrix, u, 0.0, v); + + if (JTJ) + gsl_blas_dsyrk(CblasLower, CblasTrans, 1.0, &J.matrix, 0.0, JTJ); + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +rosenbrocke_fvv (const gsl_vector * x, const gsl_vector * v, + void *params, gsl_vector * fvv) +{ + size_t i; + + for (i = 0; i < rosenbrocke_N / 2; ++i) + { + double v2im1 = gsl_vector_get(v, 2*i); + + gsl_vector_set(fvv, 2*i, -20.0 * v2im1 * v2im1); + gsl_vector_set(fvv, 2*i + 1, 0.0); + } + + (void)x; /* avoid unused parameter warning */ + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static gsl_multilarge_nlinear_fdf rosenbrocke_func = +{ + rosenbrocke_f, + rosenbrocke_df, + rosenbrocke_fvv, + rosenbrocke_N, + rosenbrocke_P, + NULL, + 0, + 0, + 0, + 0 +}; + +static test_fdf_problem rosenbrocke_problem = +{ + "rosenbrock_extended", + rosenbrocke_x0, + NULL, + &rosenbrocke_epsrel, + &rosenbrocke_checksol, + &rosenbrocke_func +}; diff --git a/gsl-2.5/multilarge_nlinear/test_roth.c b/gsl-2.5/multilarge_nlinear/test_roth.c new file mode 100644 index 00000000..41d81e3a --- /dev/null +++ b/gsl-2.5/multilarge_nlinear/test_roth.c @@ -0,0 +1,118 @@ +#define roth_N 2 +#define roth_P 2 + +static double roth_x0[roth_P] = { 0.5, -2.0 }; +static double roth_epsrel = 1.0e-7; + +static double roth_J[roth_N * roth_P]; + +static void +roth_checksol(const double x[], const double sumsq, + const double epsrel, const char *sname, + const char *pname) +{ + size_t i; + const double sumsq_exact1 = 0.0; + const double roth_x1[roth_P] = { 5.0, 4.0 }; + const double sumsq_exact2 = 48.9842536792400; + const double roth_x2[roth_P] = { 11.4127789869021, -0.896805253274477 }; + const double *roth_x; + double sumsq_exact; + + if (fabs(sumsq) < 0.1) + { + sumsq_exact = sumsq_exact1; + roth_x = roth_x1; + } + else + { + sumsq_exact = sumsq_exact2; + roth_x = roth_x2; + } + + gsl_test_rel(sumsq, sumsq_exact, epsrel, "%s/%s sumsq", + sname, pname); + + for (i = 0; i < roth_P; ++i) + { + gsl_test_rel(x[i], roth_x[i], epsrel, "%s/%s i=%zu", + sname, pname, i); + } +} + +static int +roth_f (const gsl_vector * x, void *params, gsl_vector * f) +{ + double x1 = gsl_vector_get(x, 0); + double x2 = gsl_vector_get(x, 1); + + gsl_vector_set(f, 0, x1 - x2*(2.0 - x2*(5.0 - x2)) - 13.0); + gsl_vector_set(f, 1, x1 - x2*(14.0 - x2*(1.0 + x2)) - 29.0); + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +roth_df (CBLAS_TRANSPOSE_t TransJ, const gsl_vector * x, + const gsl_vector * u, void * params, gsl_vector * v, + gsl_matrix * JTJ) +{ + gsl_matrix_view J = gsl_matrix_view_array(roth_J, roth_N, roth_P); + double x2 = gsl_vector_get(x, 1); + + gsl_matrix_set(&J.matrix, 0, 0, 1.0); + gsl_matrix_set(&J.matrix, 0, 1, -2.0 + x2*(10.0 - 3.0*x2)); + gsl_matrix_set(&J.matrix, 1, 0, 1.0); + gsl_matrix_set(&J.matrix, 1, 1, -14.0 + x2*(2.0 + 3.0*x2)); + + if (v) + gsl_blas_dgemv(TransJ, 1.0, &J.matrix, u, 0.0, v); + + if (JTJ) + gsl_blas_dsyrk(CblasLower, CblasTrans, 1.0, &J.matrix, 0.0, JTJ); + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +roth_fvv (const gsl_vector * x, const gsl_vector * v, + void *params, gsl_vector * fvv) +{ + double x2 = gsl_vector_get(x, 1); + double v2 = gsl_vector_get(v, 1); + + gsl_vector_set(fvv, 0, (10.0 - 6.0*x2) * v2 * v2); + gsl_vector_set(fvv, 1, (2.0 + 6.0*x2) * v2 * v2); + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static gsl_multilarge_nlinear_fdf roth_func = +{ + roth_f, + roth_df, + roth_fvv, + roth_N, + roth_P, + NULL, + 0, + 0, + 0, + 0 +}; + +static test_fdf_problem roth_problem = +{ + "roth_freudenstein", + roth_x0, + NULL, + &roth_epsrel, + &roth_checksol, + &roth_func +}; diff --git a/gsl-2.5/multilarge_nlinear/test_thurber.c b/gsl-2.5/multilarge_nlinear/test_thurber.c new file mode 100644 index 00000000..68bee234 --- /dev/null +++ b/gsl-2.5/multilarge_nlinear/test_thurber.c @@ -0,0 +1,161 @@ +#define thurber_N 37 +#define thurber_P 7 + +static double thurber_x0a[thurber_P] = { 1000.0, 1000.0, 400.0, 40.0, + 0.7, 0.3, 0.03 }; +static double thurber_x0b[thurber_P] = { 1300.0, 1500.0, 500.0, 75.0, + 1.0, 0.4, 0.05 }; +static double thurber_epsrel = 1.0e-6; + +static double thurber_J[thurber_N * thurber_P]; + +static double thurber_sigma[thurber_P] = { + 4.6647963344E+00, 3.9571156086E+01, 2.8698696102E+01, + 5.5675370270E+00, 3.1333340687E-02, 1.4984928198E-02, + 6.5842344623E-03 +}; + +static double thurber_X[thurber_N] = { + -3.067, -2.981, -2.921, -2.912, -2.840, -2.797, -2.702, + -2.699, -2.633, -2.481, -2.363, -2.322, -1.501, -1.460, + -1.274, -1.212, -1.100, -1.046, -0.915, -0.714, -0.566, + -0.545, -0.400, -0.309, -0.109, -0.103, 0.010, 0.119, + 0.377, 0.790, 0.963, 1.006, 1.115, 1.572, 1.841, + 2.047, 2.200 +}; + +static double thurber_F[thurber_N] = { + 80.574, 84.248, 87.264, 87.195, 89.076, 89.608, 89.868, 90.101, + 92.405, 95.854, 100.696, 101.060, 401.672, 390.724, 567.534, + 635.316, 733.054, 759.087, 894.206, 990.785, 1090.109, 1080.914, + 1122.643, 1178.351, 1260.531, 1273.514, 1288.339, 1327.543, 1353.863, + 1414.509, 1425.208, 1421.384, 1442.962, 1464.350, 1468.705, + 1447.894, 1457.628 +}; + +static void +thurber_checksol(const double x[], const double sumsq, + const double epsrel, const char *sname, + const char *pname) +{ + size_t i; + const double sumsq_exact = 5.6427082397E+03; + const double thurber_x[thurber_P] = { + 1.2881396800E+03, 1.4910792535E+03, 5.8323836877E+02, + 7.5416644291E+01, 9.6629502864E-01, 3.9797285797E-01, + 4.9727297349E-02 }; + + gsl_test_rel(sumsq, sumsq_exact, epsrel, "%s/%s sumsq", + sname, pname); + + for (i = 0; i < thurber_P; ++i) + { + gsl_test_rel(x[i], thurber_x[i], epsrel, "%s/%s i=%zu", + sname, pname, i); + } +} + + +static int +thurber_f (const gsl_vector * x, void *params, gsl_vector * f) +{ + double b[thurber_P]; + size_t i; + + for (i = 0; i < thurber_P; i++) + { + b[i] = gsl_vector_get(x, i); + } + + for (i = 0; i < thurber_N; i++) + { + double xi = thurber_X[i]; + double yi; + + yi = b[0] + b[1]*xi + b[2]*xi*xi + b[3]*xi*xi*xi; + yi /= 1.0 + b[4]*xi + b[5]*xi*xi + b[6]*xi*xi*xi; + + gsl_vector_set (f, i, yi - thurber_F[i]); + } + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +thurber_df (CBLAS_TRANSPOSE_t TransJ, const gsl_vector * x, + const gsl_vector * u, void * params, gsl_vector * v, + gsl_matrix * JTJ) +{ + gsl_matrix_view J = gsl_matrix_view_array(thurber_J, thurber_N, thurber_P); + double b[thurber_P]; + size_t i; + + for (i = 0; i < thurber_P; i++) + { + b[i] = gsl_vector_get(x, i); + } + + for (i = 0; i < thurber_N; i++) + { + double xi = thurber_X[i]; + double d, n, d_sq; + + n = b[0] + b[1]*xi + b[2]*xi*xi + b[3]*xi*xi*xi; + d = 1.0 + b[4]*xi + b[5]*xi*xi + b[6]*xi*xi*xi; + d_sq = d * d; + + gsl_matrix_set (&J.matrix, i, 0, 1.0 / d); + gsl_matrix_set (&J.matrix, i, 1, xi / d); + gsl_matrix_set (&J.matrix, i, 2, (xi * xi) / d); + gsl_matrix_set (&J.matrix, i, 3, (xi * xi * xi) / d); + gsl_matrix_set (&J.matrix, i, 4, -xi * n / d_sq); + gsl_matrix_set (&J.matrix, i, 5, -xi * xi * n / d_sq); + gsl_matrix_set (&J.matrix, i, 6, -xi * xi * xi * n / d_sq); + } + + if (v) + gsl_blas_dgemv(TransJ, 1.0, &J.matrix, u, 0.0, v); + + if (JTJ) + gsl_blas_dsyrk(CblasLower, CblasTrans, 1.0, &J.matrix, 0.0, JTJ); + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static gsl_multilarge_nlinear_fdf thurber_func = +{ + thurber_f, + thurber_df, + NULL, /* analytic expression too complex */ + thurber_N, + thurber_P, + NULL, + 0, + 0, + 0, + 0 +}; + +static test_fdf_problem thurbera_problem = +{ + "nist-thurbera", + thurber_x0a, + thurber_sigma, + &thurber_epsrel, + &thurber_checksol, + &thurber_func +}; + +static test_fdf_problem thurberb_problem = +{ + "nist-thurberb", + thurber_x0b, + thurber_sigma, + &thurber_epsrel, + &thurber_checksol, + &thurber_func +}; diff --git a/gsl-2.5/multilarge_nlinear/test_vardim.c b/gsl-2.5/multilarge_nlinear/test_vardim.c new file mode 100644 index 00000000..18521c8a --- /dev/null +++ b/gsl-2.5/multilarge_nlinear/test_vardim.c @@ -0,0 +1,130 @@ +#define vardim_N 7 /* p + 2 */ +#define vardim_P 5 + +static double vardim_x0[vardim_P] = { 0.8, 0.6, 0.4, 0.2, 0.0 }; +static double vardim_epsrel = 1.0e-12; + +static double vardim_J[vardim_N * vardim_P]; + +static void +vardim_checksol(const double x[], const double sumsq, + const double epsrel, const char *sname, + const char *pname) +{ + size_t i; + const double sumsq_exact = 0.0; + + gsl_test_rel(sumsq, sumsq_exact, epsrel, "%s/%s sumsq", + sname, pname); + + for (i = 0; i < vardim_P; ++i) + { + gsl_test_rel(x[i], 1.0, epsrel, "%s/%s i=%zu", + sname, pname, i); + } +} + +static int +vardim_f (const gsl_vector * x, void *params, gsl_vector * f) +{ + size_t i; + double sum = 0.0; + + for (i = 0; i < vardim_P; ++i) + { + double xi = gsl_vector_get(x, i); + + gsl_vector_set(f, i, xi - 1.0); + + sum += (i + 1.0) * (xi - 1.0); + } + + gsl_vector_set(f, vardim_P, sum); + gsl_vector_set(f, vardim_P + 1, sum*sum); + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +vardim_df (CBLAS_TRANSPOSE_t TransJ, const gsl_vector * x, + const gsl_vector * u, void * params, gsl_vector * v, + gsl_matrix * JTJ) +{ + gsl_matrix_view J = gsl_matrix_view_array(vardim_J, vardim_N, vardim_P); + size_t i; + double sum = 0.0; + gsl_matrix_view m = gsl_matrix_submatrix(&J.matrix, 0, 0, vardim_P, vardim_P); + + gsl_matrix_set_identity(&m.matrix); + + for (i = 0; i < vardim_P; ++i) + { + double xi = gsl_vector_get(x, i); + sum += (i + 1.0) * (xi - 1.0); + } + + for (i = 0; i < vardim_P; ++i) + { + gsl_matrix_set(&J.matrix, vardim_P, i, i + 1.0); + gsl_matrix_set(&J.matrix, vardim_P + 1, i, 2*(i + 1.0)*sum); + } + + if (v) + gsl_blas_dgemv(TransJ, 1.0, &J.matrix, u, 0.0, v); + + if (JTJ) + gsl_blas_dsyrk(CblasLower, CblasTrans, 1.0, &J.matrix, 0.0, JTJ); + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +vardim_fvv (const gsl_vector * x, const gsl_vector * v, + void *params, gsl_vector * fvv) +{ + size_t i; + double sum = 0.0; + + gsl_vector_set_zero(fvv); + + for (i = 0; i < vardim_P; ++i) + { + double vi = gsl_vector_get(v, i); + sum += (i + 1.0) * vi; + } + + gsl_vector_set(fvv, vardim_N - 1, 2.0 * sum * sum); + + (void)x; /* avoid unused parameter warning */ + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static gsl_multilarge_nlinear_fdf vardim_func = +{ + vardim_f, + vardim_df, + vardim_fvv, + vardim_N, + vardim_P, + NULL, + 0, + 0, + 0, + 0 +}; + +static test_fdf_problem vardim_problem = +{ + "vardim", + vardim_x0, + NULL, + &vardim_epsrel, + &vardim_checksol, + &vardim_func +}; diff --git a/gsl-2.5/multilarge_nlinear/test_watson.c b/gsl-2.5/multilarge_nlinear/test_watson.c new file mode 100644 index 00000000..b7063f5f --- /dev/null +++ b/gsl-2.5/multilarge_nlinear/test_watson.c @@ -0,0 +1,173 @@ +#define watson_N 31 +#define watson_P 6 + +static double watson_x0[watson_P] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; +static double watson_epsrel = 1.0e-6; + +static double watson_J[watson_N * watson_P]; + +static void +watson_checksol(const double x[], const double sumsq, + const double epsrel, const char *sname, + const char *pname) +{ + size_t i; + const double sumsq_exact = 2.287670053552372e-03; + const double watson_x[watson_P] = { + -1.572508640629858e-02, 1.012434869366059e+00, -2.329916259263380e-01, + 1.260430087686035e+00, -1.513728922580576e+00, 9.929964323646112e-01 }; + + gsl_test_rel(sumsq, sumsq_exact, epsrel, "%s/%s sumsq", + sname, pname); + + for (i = 0; i < watson_P; ++i) + { + gsl_test_rel(x[i], watson_x[i], epsrel, "%s/%s i=%zu", + sname, pname, i); + } +} + +static int +watson_f (const gsl_vector * x, void *params, gsl_vector * f) +{ + const double x1 = gsl_vector_get(x, 0); + const double x2 = gsl_vector_get(x, 1); + size_t i, j; + + for (i = 0; i < watson_N - 2; ++i) + { + double ti = (i + 1) / 29.0; + double tjm1 = 1.0, tjm2 = 1.0; + double sum1 = 0.0, sum2 = 0.0; + + for (j = 0; j < watson_P; ++j) + { + double xj = gsl_vector_get(x, j); + + sum1 += xj * tjm1; + tjm1 *= ti; + + if (j > 0) + { + sum2 += j * xj * tjm2; + tjm2 *= ti; + } + } + + gsl_vector_set (f, i, sum2 - sum1*sum1 - 1.0); + } + + gsl_vector_set(f, watson_N - 2, x1); + gsl_vector_set(f, watson_N - 1, x2 - x1*x1 - 1.0); + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +watson_df (CBLAS_TRANSPOSE_t TransJ, const gsl_vector * x, + const gsl_vector * u, void * params, gsl_vector * v, + gsl_matrix * JTJ) +{ + gsl_matrix_view J = gsl_matrix_view_array(watson_J, watson_N, watson_P); + double x1 = gsl_vector_get (x, 0); + size_t i, j; + + gsl_matrix_set_zero(&J.matrix); + + for (i = 0; i < watson_N - 2; ++i) + { + double ti = (i + 1) / 29.0; + double tjm1 = 1.0, tjm2 = 1.0; + double sum1 = 0.0; + + for (j = 0; j < watson_P; ++j) + { + double xj = gsl_vector_get(x, j); + sum1 += xj * tjm1; + tjm1 *= ti; + } + + tjm1 = 1.0; + tjm2 = 1.0; + for (j = 0; j < watson_P; ++j) + { + gsl_matrix_set(&J.matrix, i, j, j * tjm2 - 2.0*sum1*tjm1); + tjm1 *= ti; + + if (j > 0) + tjm2 *= ti; + } + } + + gsl_matrix_set(&J.matrix, watson_N - 2, 0, 1.0); + gsl_matrix_set(&J.matrix, watson_N - 1, 0, -2.0*x1); + gsl_matrix_set(&J.matrix, watson_N - 1, 1, 1.0); + + if (v) + gsl_blas_dgemv(TransJ, 1.0, &J.matrix, u, 0.0, v); + + if (JTJ) + gsl_blas_dsyrk(CblasLower, CblasTrans, 1.0, &J.matrix, 0.0, JTJ); + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +watson_fvv (const gsl_vector * x, const gsl_vector * v, + void *params, gsl_vector * fvv) +{ + double v1 = gsl_vector_get (v, 0); + size_t i, j; + + for (i = 0; i < watson_N - 2; ++i) + { + double ti = (i + 1) / 29.0; + double sum = 0.0; + double tjm1 = 1.0; + + for (j = 0; j < watson_P; ++j) + { + double vj = gsl_vector_get(v, j); + sum += vj * tjm1; + tjm1 *= ti; + } + + gsl_vector_set(fvv, i, -2.0*sum*sum); + } + + gsl_vector_set(fvv, watson_N - 2, 0.0); + gsl_vector_set(fvv, watson_N - 1, -2.0*v1*v1); + + (void)x; /* avoid unused parameter warning */ + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static gsl_multilarge_nlinear_fdf watson_func = +{ + watson_f, + watson_df, + watson_fvv, + watson_N, + watson_P, + NULL, + 0, + 0, + 0, + 0 +}; + +static test_fdf_problem watson_problem = +{ + "watson", + watson_x0, + NULL, + &watson_epsrel, + &watson_checksol, + &watson_func +}; diff --git a/gsl-2.5/multilarge_nlinear/test_wnlin.c b/gsl-2.5/multilarge_nlinear/test_wnlin.c new file mode 100644 index 00000000..9f5a661a --- /dev/null +++ b/gsl-2.5/multilarge_nlinear/test_wnlin.c @@ -0,0 +1,155 @@ +#define wnlin_N 40 +#define wnlin_P 3 + +static double wnlin_x0[wnlin_P] = { 1.0, 0.9, 0.0 }; +static double wnlin_epsrel = 1.0e-8; + +static double wnlin_J[wnlin_N * wnlin_P]; + +/* data */ +static double wnlin_Y[wnlin_N] = { + 6.08035e+00, 5.47552e+00, 5.94654e+00, 5.04920e+00, 4.78568e+00, + 3.51748e+00, 2.84671e+00, 3.24634e+00, 3.23395e+00, 3.30385e+00, + 2.83439e+00, 2.31891e+00, 2.33858e+00, 2.40559e+00, 2.41856e+00, + 1.99966e+00, 1.88127e+00, 1.91477e+00, 1.70415e+00, 1.60316e+00, + 1.77937e+00, 1.55302e+00, 1.50903e+00, 1.36364e+00, 1.36873e+00, + 1.41954e+00, 1.37778e+00, 1.23573e+00, 1.28524e+00, 1.46327e+00, + 1.22315e+00, 1.19330e+00, 1.18717e+00, 8.83172e-01, 1.23424e+00, + 1.14683e+00, 1.11091e+00, 1.20396e+00, 1.28722e+00, 1.05801e+00 +}; + +/* weights */ +static double wnlin_W[wnlin_N] = { + 2.77778e+00, 3.27690e+00, 3.85426e+00, 4.51906e+00, 5.28083e+00, + 6.14919e+00, 7.13370e+00, 8.24349e+00, 9.48703e+00, 1.08717e+01, + 1.24036e+01, 1.40869e+01, 1.59238e+01, 1.79142e+01, 2.00553e+01, + 2.23415e+01, 2.47646e+01, 2.73137e+01, 2.99753e+01, 3.27337e+01, + 3.55714e+01, 3.84696e+01, 4.14085e+01, 4.43678e+01, 4.73278e+01, + 5.02690e+01, 5.31731e+01, 5.60234e+01, 5.88046e+01, 6.15036e+01, + 6.41092e+01, 6.66121e+01, 6.90054e+01, 7.12839e+01, 7.34442e+01, + 7.54848e+01, 7.74053e+01, 7.92069e+01, 8.08918e+01, 8.24632e+01 +}; + +static void +wnlin_checksol(const double x[], const double sumsq, + const double epsrel, const char *sname, + const char *pname) +{ + size_t i; + const double sumsq_exact = 29.7481259665713758; + const double wnlin_x[wnlin_P] = { 5.17378551196259195, + 0.111041758006851149, + 1.05282724070446099 }; + + gsl_test_rel(sumsq, sumsq_exact, epsrel, "%s/%s sumsq", + sname, pname); + + for (i = 0; i < wnlin_P; ++i) + { + gsl_test_rel(x[i], wnlin_x[i], epsrel, "%s/%s i=%zu", + sname, pname, i); + } +} + +static int +wnlin_f (const gsl_vector *x, void *params, gsl_vector *f) +{ + double A = gsl_vector_get (x, 0); + double lambda = gsl_vector_get (x, 1); + double b = gsl_vector_get (x, 2); + size_t i; + + /* model Yi = A * exp(-lambda * i) + b */ + for (i = 0; i < wnlin_N; i++) + { + double ti = i; + double yi = wnlin_Y[i]; + double swi = sqrt(wnlin_W[i]); + double Mi = A * exp (-lambda * ti) + b; + + gsl_vector_set (f, i, swi * (Mi - yi)); + } + + return GSL_SUCCESS; +} + +static int +wnlin_df (CBLAS_TRANSPOSE_t TransJ, const gsl_vector * x, + const gsl_vector * u, void * params, gsl_vector * v, + gsl_matrix * JTJ) +{ + gsl_matrix_view J = gsl_matrix_view_array(wnlin_J, wnlin_N, wnlin_P); + double A = gsl_vector_get (x, 0); + double lambda = gsl_vector_get (x, 1); + size_t i; + + for (i = 0; i < wnlin_N; i++) + { + gsl_vector_view v = gsl_matrix_row(&J.matrix, i); + double ti = i; + double swi = sqrt(wnlin_W[i]); + double e = exp(-lambda * ti); + + gsl_vector_set(&v.vector, 0, e); + gsl_vector_set(&v.vector, 1, -ti * A * e); + gsl_vector_set(&v.vector, 2, 1.0); + + gsl_vector_scale(&v.vector, swi); + } + + if (v) + gsl_blas_dgemv(TransJ, 1.0, &J.matrix, u, 0.0, v); + + if (JTJ) + gsl_blas_dsyrk(CblasLower, CblasTrans, 1.0, &J.matrix, 0.0, JTJ); + + return GSL_SUCCESS; +} + +static int +wnlin_fvv (const gsl_vector * x, const gsl_vector * v, + void *params, gsl_vector * fvv) +{ + double A = gsl_vector_get (x, 0); + double lambda = gsl_vector_get (x, 1); + double v1 = gsl_vector_get(v, 0); + double v2 = gsl_vector_get(v, 1); + size_t i; + + for (i = 0; i < wnlin_N; i++) + { + double ti = i; + double swi = sqrt(wnlin_W[i]); + double fvvi; + + fvvi = exp(-ti*lambda)*ti*v2 * (-2*v1 + ti*v2*A); + + gsl_vector_set(fvv, i, swi * fvvi); + } + + return GSL_SUCCESS; +} + +static gsl_multilarge_nlinear_fdf wnlin_func1 = +{ + wnlin_f, + wnlin_df, + wnlin_fvv, + wnlin_N, + wnlin_P, + NULL, + 0, + 0, + 0, + 0 +}; + +static test_fdf_problem wnlin_problem1 = +{ + "wnlin_internal_weights", + wnlin_x0, + NULL, + &wnlin_epsrel, + &wnlin_checksol, + &wnlin_func1 +}; diff --git a/gsl-2.5/multilarge_nlinear/test_wood.c b/gsl-2.5/multilarge_nlinear/test_wood.c new file mode 100644 index 00000000..6d6d1266 --- /dev/null +++ b/gsl-2.5/multilarge_nlinear/test_wood.c @@ -0,0 +1,126 @@ +#define wood_N 6 +#define wood_P 4 + +static double wood_x0[wood_P] = { -3.0, -1.0, -3.0, -1.0 }; +static double wood_epsrel = 1.0e-12; + +static double wood_J[wood_N * wood_P]; + +static void +wood_checksol(const double x[], const double sumsq, + const double epsrel, const char *sname, + const char *pname) +{ + size_t i; + const double sumsq_exact = 0.0; + const double wood_x[wood_P] = { 1.0, 1.0, 1.0, 1.0 }; + + gsl_test_rel(sumsq, sumsq_exact, epsrel, "%s/%s sumsq", + sname, pname); + + for (i = 0; i < wood_P; ++i) + { + gsl_test_rel(x[i], wood_x[i], epsrel, "%s/%s i=%zu", + sname, pname, i); + } +} + +static int +wood_f (const gsl_vector * x, void *params, gsl_vector * f) +{ + double x1 = gsl_vector_get(x, 0); + double x2 = gsl_vector_get(x, 1); + double x3 = gsl_vector_get(x, 2); + double x4 = gsl_vector_get(x, 3); + + gsl_vector_set(f, 0, 10.0*(x2 - x1*x1)); + gsl_vector_set(f, 1, 1.0 - x1); + gsl_vector_set(f, 2, sqrt(90.0)*(x4 - x3*x3)); + gsl_vector_set(f, 3, 1.0 - x3); + gsl_vector_set(f, 4, sqrt(10.0)*(x2 + x4 - 2.0)); + gsl_vector_set(f, 5, (x2 - x4) / sqrt(10.0)); + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +wood_df (CBLAS_TRANSPOSE_t TransJ, const gsl_vector * x, + const gsl_vector * u, void * params, gsl_vector * v, + gsl_matrix * JTJ) +{ + gsl_matrix_view J = gsl_matrix_view_array(wood_J, wood_N, wood_P); + double x1 = gsl_vector_get(x, 0); + double x3 = gsl_vector_get(x, 2); + double s90 = sqrt(90.0); + double s10 = sqrt(10.0); + + gsl_matrix_set_zero(&J.matrix); + + gsl_matrix_set(&J.matrix, 0, 0, -20.0*x1); + gsl_matrix_set(&J.matrix, 0, 1, 10.0); + gsl_matrix_set(&J.matrix, 1, 0, -1.0); + gsl_matrix_set(&J.matrix, 2, 2, -2.0*s90*x3); + gsl_matrix_set(&J.matrix, 2, 3, s90); + gsl_matrix_set(&J.matrix, 3, 2, -1.0); + gsl_matrix_set(&J.matrix, 4, 1, s10); + gsl_matrix_set(&J.matrix, 4, 3, s10); + gsl_matrix_set(&J.matrix, 5, 1, 1.0/s10); + gsl_matrix_set(&J.matrix, 5, 3, -1.0/s10); + + if (v) + gsl_blas_dgemv(TransJ, 1.0, &J.matrix, u, 0.0, v); + + if (JTJ) + gsl_blas_dsyrk(CblasLower, CblasTrans, 1.0, &J.matrix, 0.0, JTJ); + + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static int +wood_fvv (const gsl_vector * x, const gsl_vector * v, + void *params, gsl_vector * fvv) +{ + const double s10 = sqrt(10.0); + double v1 = gsl_vector_get(v, 0); + double v3 = gsl_vector_get(v, 2); + + gsl_vector_set(fvv, 0, -20.0 * v1 * v1); + gsl_vector_set(fvv, 1, 0.0); + gsl_vector_set(fvv, 2, -6.0 * s10 * v3 * v3); + gsl_vector_set(fvv, 3, 0.0); + gsl_vector_set(fvv, 4, 0.0); + gsl_vector_set(fvv, 5, 0.0); + + (void)x; /* avoid unused parameter warning */ + (void)params; /* avoid unused parameter warning */ + + return GSL_SUCCESS; +} + +static gsl_multilarge_nlinear_fdf wood_func = +{ + wood_f, + wood_df, + wood_fvv, + wood_N, + wood_P, + NULL, + 0, + 0, + 0, + 0 +}; + +static test_fdf_problem wood_problem = +{ + "wood", + wood_x0, + NULL, + &wood_epsrel, + &wood_checksol, + &wood_func +}; diff --git a/gsl-2.5/multilarge_nlinear/trust.c b/gsl-2.5/multilarge_nlinear/trust.c new file mode 100644 index 00000000..484bc700 --- /dev/null +++ b/gsl-2.5/multilarge_nlinear/trust.c @@ -0,0 +1,585 @@ +/* multilarge_nlinear/trust.c + * + * Copyright (C) 2016 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "common.c" +#include "nielsen.c" + +/* + * This module contains a high level driver for a general trust + * region nonlinear least squares solver. This container handles + * the computation of all of the quantities relevant to all trust + * region methods, including: + * + * residual vector: f_k = f(x_k) + * Jacobian matrix: J_k = J(x_k) + * gradient vector: g_k = J_k^T f_k + * scaling matrix: D_k + */ + +typedef struct +{ + size_t n; /* number of observations */ + size_t p; /* number of parameters */ + double delta; /* trust region radius */ + double mu; /* LM parameter */ + long nu; /* for updating LM parameter */ + gsl_vector *diag; /* D = diag(J^T J) */ + gsl_vector *x_trial; /* trial parameter vector */ + gsl_vector *f_trial; /* trial function vector */ + gsl_vector *workn; /* workspace, length n */ + + void *trs_state; /* workspace for trust region subproblem */ + void *solver_state; /* workspace for linear least squares solver */ + + double avratio; /* current |a| / |v| */ + + /* tunable parameters */ + gsl_multilarge_nlinear_parameters params; +} trust_state_t; + +static void * trust_alloc (const gsl_multilarge_nlinear_parameters * params, + const size_t n, const size_t p); +static void trust_free(void *vstate); +static int trust_init(void *vstate, const gsl_vector * swts, + gsl_multilarge_nlinear_fdf *fdf, const gsl_vector *x, + gsl_vector *f, gsl_vector *g, gsl_matrix *JTJ); +static int trust_iterate(void *vstate, const gsl_vector *swts, + gsl_multilarge_nlinear_fdf *fdf, + gsl_vector *x, gsl_vector *f, + gsl_vector *g, gsl_matrix *JTJ, gsl_vector *dx); +static int trust_rcond(double * rcond, const gsl_matrix * JTJ, void * vstate); +static int trust_covar(const gsl_matrix * JTJ, gsl_matrix * covar, void * vstate); +static double trust_avratio(void *vstate); +static void trust_trial_step(const gsl_vector * x, const gsl_vector * dx, + gsl_vector * x_trial); +static double trust_calc_rho(const gsl_multilarge_nlinear_trust_state * trust_state, + const gsl_vector * f_trial, const gsl_vector * dx, + trust_state_t * state); +static int trust_eval_step(const gsl_multilarge_nlinear_trust_state * trust_state, + const gsl_vector * f_trial, const gsl_vector * dx, + double * rho, trust_state_t * state); +static double trust_scaled_norm(const gsl_vector *D, const gsl_vector *a); + +static void * +trust_alloc (const gsl_multilarge_nlinear_parameters * params, + const size_t n, const size_t p) +{ + trust_state_t *state; + + state = calloc(1, sizeof(trust_state_t)); + if (state == NULL) + { + GSL_ERROR_NULL ("failed to allocate lm state", GSL_ENOMEM); + } + + state->diag = gsl_vector_alloc(p); + if (state->diag == NULL) + { + GSL_ERROR_NULL ("failed to allocate space for diag", GSL_ENOMEM); + } + + state->workn = gsl_vector_alloc(n); + if (state->workn == NULL) + { + GSL_ERROR_NULL ("failed to allocate space for workn", GSL_ENOMEM); + } + + state->x_trial = gsl_vector_alloc(p); + if (state->x_trial == NULL) + { + GSL_ERROR_NULL ("failed to allocate space for x_trial", GSL_ENOMEM); + } + + state->f_trial = gsl_vector_alloc(n); + if (state->f_trial == NULL) + { + GSL_ERROR_NULL ("failed to allocate space for f_trial", GSL_ENOMEM); + } + + state->trs_state = (params->trs->alloc)(params, n, p); + if (state->trs_state == NULL) + { + GSL_ERROR_NULL ("failed to allocate space for trs state", GSL_ENOMEM); + } + + if (params->solver != gsl_multilarge_nlinear_solver_none) + { + state->solver_state = (params->solver->alloc)(n, p); + if (state->solver_state == NULL) + { + GSL_ERROR_NULL ("failed to allocate space for solver state", GSL_ENOMEM); + } + } + + state->n = n; + state->p = p; + state->delta = 0.0; + state->params = *params; + + return state; +} + +static void +trust_free(void *vstate) +{ + trust_state_t *state = (trust_state_t *) vstate; + const gsl_multilarge_nlinear_parameters *params = &(state->params); + + if (state->diag) + gsl_vector_free(state->diag); + + if (state->workn) + gsl_vector_free(state->workn); + + if (state->x_trial) + gsl_vector_free(state->x_trial); + + if (state->f_trial) + gsl_vector_free(state->f_trial); + + if (state->trs_state) + (params->trs->free)(state->trs_state); + + if (state->solver_state) + (params->solver->free)(state->solver_state); + + free(state); +} + +/* +trust_init() + Initialize trust region solver + +Inputs: vstate - workspace + swts - sqrt(W) vector + fdf - user callback functions + x - initial parameter values + f - (output) f(x) vector + g - (output) J(x)' f(x) vector + +Return: success/error +*/ + +static int +trust_init(void *vstate, const gsl_vector *swts, + gsl_multilarge_nlinear_fdf *fdf, const gsl_vector *x, + gsl_vector *f, gsl_vector *g, gsl_matrix *JTJ) +{ + int status; + trust_state_t *state = (trust_state_t *) vstate; + const gsl_multilarge_nlinear_parameters *params = &(state->params); + double Dx; + + /* evaluate function and Jacobian at x and apply weight transform */ + status = gsl_multilarge_nlinear_eval_f(fdf, x, swts, f); + if (status) + return status; + + /* compute g = J^T f and J^T J */ + status = gsl_multilarge_nlinear_eval_df(CblasTrans, x, f, f, + swts, params->h_df, params->fdtype, + fdf, g, JTJ, state->workn); + if (status) + return status; + + /* initialize diagonal scaling matrix D */ + if (JTJ != NULL) + (params->scale->init)(JTJ, state->diag); + else + gsl_vector_set_all(state->diag, 1.0); + + /* compute initial trust region radius */ + Dx = trust_scaled_norm(state->diag, x); + state->delta = 0.3 * GSL_MAX(1.0, Dx); + + /* initialize LM parameter */ + nielsen_init(JTJ, state->diag, &(state->mu), &(state->nu)); + + /* initialize trust region method solver */ + { + gsl_multilarge_nlinear_trust_state trust_state; + + trust_state.x = x; + trust_state.f = f; + trust_state.g = g; + trust_state.JTJ = JTJ; + trust_state.diag = state->diag; + trust_state.sqrt_wts = swts; + trust_state.mu = &(state->mu); + trust_state.params = params; + trust_state.solver_state = state->solver_state; + trust_state.fdf = fdf; + trust_state.avratio = &(state->avratio); + + status = (params->trs->init)(&trust_state, state->trs_state); + + if (status) + return status; + } + + /* set default parameters */ + + state->avratio = 0.0; + + return GSL_SUCCESS; +} + +/* +trust_iterate() + This function performs 1 iteration of the trust region algorithm. +It calls a user-specified method for computing the next step +(LM or dogleg), then tests if the computed step is acceptable. + +Args: vstate - trust workspace + swts - data weights (NULL if unweighted) + fdf - function and Jacobian pointers + x - on input, current parameter vector + on output, new parameter vector x + dx + f - on input, f(x) + on output, f(x + dx) + g - on input, g(x) = J(x)' f(x) + on output, g(x + dx) = J(x + dx)' f(x + dx) + JTJ - on input, J(x)^T J(x) + on output, J(x + dx)^T J(x + dx) + dx - (output only) parameter step vector + +Return: +1) GSL_SUCCESS if we found a step which reduces the cost +function + +2) GSL_ENOPROG if 15 successive attempts were to made to +find a good step without success + +3) If a scaling matrix D is used, inputs and outputs are +set to the unscaled quantities (ie: J and g) +*/ + +static int +trust_iterate(void *vstate, const gsl_vector *swts, + gsl_multilarge_nlinear_fdf *fdf, gsl_vector *x, + gsl_vector *f, gsl_vector *g, gsl_matrix *JTJ, + gsl_vector *dx) +{ + int status; + trust_state_t *state = (trust_state_t *) vstate; + const gsl_multilarge_nlinear_parameters *params = &(state->params); + const gsl_multilarge_nlinear_trs *trs = params->trs; + gsl_multilarge_nlinear_trust_state trust_state; + gsl_vector *x_trial = state->x_trial; /* trial x + dx */ + gsl_vector *f_trial = state->f_trial; /* trial f(x + dx) */ + double rho; /* ratio actual_reduction/predicted_reduction */ + int foundstep = 0; /* found step dx */ + int bad_steps = 0; /* consecutive rejected steps */ + + /* store all state parameters needed by low level methods */ + trust_state.x = x; + trust_state.f = f; + trust_state.g = g; + trust_state.JTJ = JTJ; + trust_state.diag = state->diag; + trust_state.sqrt_wts = swts; + trust_state.mu = &(state->mu); + trust_state.params = params; + trust_state.solver_state = state->solver_state; + trust_state.fdf = fdf; + trust_state.avratio = &(state->avratio); + + /* initialize trust region subproblem with this Jacobian */ + status = (trs->preloop)(&trust_state, state->trs_state); + if (status) + return status; + + /* loop until we find an acceptable step dx */ + while (!foundstep) + { + /* calculate new step */ + status = (trs->step)(&trust_state, state->delta, dx, state->trs_state); + + /* occasionally the iterative methods (ie: CG Steihaug) can fail to find a step, + * so in this case skip rho calculation and count it as a rejected step */ + + if (status == GSL_SUCCESS) + { + /* compute x_trial = x + dx */ + trust_trial_step(x, dx, x_trial); + + /* compute f_trial = f(x + dx) */ + status = gsl_multilarge_nlinear_eval_f(fdf, x_trial, swts, f_trial); + if (status) + return status; + + /* check if step should be accepted or rejected */ + status = trust_eval_step(&trust_state, f_trial, dx, &rho, state); + if (status == GSL_SUCCESS) + foundstep = 1; + +#if 0 /*XXX*/ + fprintf(stdout, "delta = %.12e |D dx| = %.12e |dx| = %.12e, dx0 = %.12e dx1 = %.12e |x_trial| = %.12e |f_trial| = %.12e rho = %.12e\n", + state->delta, + scaled_enorm(state->diag, dx), + gsl_blas_dnrm2(dx), + gsl_vector_get(dx, 0), + gsl_vector_get(dx, 1), + gsl_blas_dnrm2(x_trial), + gsl_blas_dnrm2(f_trial), + rho); +#endif + } + else + { + /* an iterative TRS method failed to find a step vector */ + rho = -1.0; + } + + /* + * update trust region radius: if rho is large, + * then the quadratic model is a good approximation + * to the objective function, enlarge trust region. + * If rho is small (or negative), the model function + * is a poor approximation so decrease trust region. This + * can happen even if the step is accepted. + */ + if (rho > 0.75) + state->delta *= params->factor_up; + else if (rho < 0.25) + state->delta /= params->factor_down; + + if (foundstep) + { + /* step was accepted */ + + /* update x <- x + dx */ + gsl_vector_memcpy(x, x_trial); + + /* update f <- f(x + dx) */ + gsl_vector_memcpy(f, f_trial); + + /* compute new g = J^T f and J^T J */ + status = gsl_multilarge_nlinear_eval_df(CblasTrans, x, f, f, + swts, params->h_df, params->fdtype, + fdf, g, JTJ, state->workn); + if (status) + return status; + + /* update scaling matrix D */ + if (JTJ != NULL) + (params->scale->update)(JTJ, state->diag); + + /* step accepted, decrease LM parameter */ + nielsen_accept(rho, &(state->mu), &(state->nu)); + + bad_steps = 0; + } + else + { + /* step rejected, increase LM parameter */ + nielsen_reject(&(state->mu), &(state->nu)); + + /* if more than 15 consecutive rejected steps, report no progress */ + if (++bad_steps > 15) + { + return GSL_ENOPROG; + } + } + } + + return GSL_SUCCESS; +} /* trust_iterate() */ + +static int +trust_rcond(double * rcond, const gsl_matrix * JTJ, void * vstate) +{ + int status; + trust_state_t *state = (trust_state_t *) vstate; + const gsl_multilarge_nlinear_parameters *params = &(state->params); + + status = (params->solver->rcond)(rcond, JTJ, state->solver_state); + + return status; +} + +static int +trust_covar(const gsl_matrix * JTJ, gsl_matrix * covar, void * vstate) +{ + int status; + trust_state_t *state = (trust_state_t *) vstate; + const gsl_multilarge_nlinear_parameters *params = &(state->params); + + status = (params->solver->covar)(JTJ, covar, state->solver_state); + + return status; +} + +static double +trust_avratio(void *vstate) +{ + trust_state_t *state = (trust_state_t *) vstate; + return state->avratio; +} + +/* compute x_trial = x + dx */ +static void +trust_trial_step(const gsl_vector * x, const gsl_vector * dx, + gsl_vector * x_trial) +{ + size_t i, N = x->size; + + for (i = 0; i < N; i++) + { + double dxi = gsl_vector_get (dx, i); + double xi = gsl_vector_get (x, i); + gsl_vector_set (x_trial, i, xi + dxi); + } +} + +/* +trust_calc_rho() + Calculate ratio of actual reduction to predicted +reduction. + +rho = actual_reduction / predicted_reduction + +actual_reduction = 1 - ( ||f+|| / ||f|| )^2 +predicted_reduction = -2 g^T dx / ||f||^2 - ( ||J*dx|| / ||f|| )^2 + = -2 fhat . beta - ||beta||^2 + +where: beta = J*dx / ||f|| + +Inputs: trust_state - trust state + f_trial - f(x + dx) + dx - proposed step, size p + state - workspace + +Return: rho = actual_reduction / predicted_reduction +If actual_reduction is < 0, return rho = -1 +*/ + +static double +trust_calc_rho(const gsl_multilarge_nlinear_trust_state * trust_state, + const gsl_vector * f_trial, const gsl_vector * dx, + trust_state_t * state) +{ + int status; + const gsl_multilarge_nlinear_parameters *params = &(state->params); + const gsl_multilarge_nlinear_trs *trs = params->trs; + const gsl_vector * f = trust_state->f; + const double normf = gsl_blas_dnrm2(f); + const double normf_trial = gsl_blas_dnrm2(f_trial); + double rho; + double actual_reduction; + double pred_reduction; + double u; + + /* if ||f(x+dx)|| > ||f(x)|| reject step immediately */ + if (normf_trial >= normf) + return -1.0; + + /* compute numerator of rho (actual reduction) */ + u = normf_trial / normf; + actual_reduction = 1.0 - u*u; + + /* + * compute denominator of rho (predicted reduction); this is calculated + * inside each trust region subproblem, since it depends on the local + * model used, which can vary according to each TRS + */ + status = (trs->preduction)(trust_state, dx, &pred_reduction, state->trs_state); + if (status) + return -1.0; + + if (pred_reduction > 0.0) + rho = actual_reduction / pred_reduction; + else + rho = -1.0; + + return rho; +} + +/* +trust_eval_step() + Evaluate proposed step to determine if it should be +accepted or rejected +*/ + +static int +trust_eval_step(const gsl_multilarge_nlinear_trust_state * trust_state, + const gsl_vector * f_trial, const gsl_vector * dx, + double * rho, trust_state_t * state) +{ + int status = GSL_SUCCESS; + const gsl_multilarge_nlinear_parameters *params = &(state->params); + + if (params->trs == gsl_multilarge_nlinear_trs_lmaccel) + { + /* reject step if acceleration is too large compared to velocity */ + if (state->avratio > params->avmax) + status = GSL_FAILURE; + } + + /* compute rho */ + *rho = trust_calc_rho(trust_state, f_trial, dx, state); + if (*rho <= 0.0) + status = GSL_FAILURE; + + return status; +} + +/* compute || diag(D) a || */ +static double +trust_scaled_norm(const gsl_vector *D, const gsl_vector *a) +{ + const size_t n = a->size; + double e2 = 0.0; + size_t i; + + for (i = 0; i < n; ++i) + { + double Di = gsl_vector_get(D, i); + double ai = gsl_vector_get(a, i); + double u = Di * ai; + + e2 += u * u; + } + + return sqrt (e2); +} + +static const gsl_multilarge_nlinear_type trust_type = +{ + "trust-region", + trust_alloc, + trust_init, + trust_iterate, + trust_rcond, + trust_covar, + trust_avratio, + trust_free +}; + +const gsl_multilarge_nlinear_type *gsl_multilarge_nlinear_trust = &trust_type; diff --git a/gsl-2.5/multilarge_nlinear/trust.lo b/gsl-2.5/multilarge_nlinear/trust.lo new file mode 100644 index 00000000..ee2a3cac --- /dev/null +++ b/gsl-2.5/multilarge_nlinear/trust.lo @@ -0,0 +1,12 @@ +# trust.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/trust.o' + +# Name of the non-PIC object +non_pic_object='trust.o' + diff --git a/gsl-2.5/multimin/.deps/conjugate_fr.Plo b/gsl-2.5/multimin/.deps/conjugate_fr.Plo new file mode 100644 index 00000000..cd9efa53 --- /dev/null +++ b/gsl-2.5/multimin/.deps/conjugate_fr.Plo @@ -0,0 +1,302 @@ +conjugate_fr.lo: conjugate_fr.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_multimin.h /usr/include/stdlib.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_types.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_nan.h ../gsl/gsl_pow_int.h \ + ../gsl/gsl_minmax.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_min.h ../gsl/gsl_blas.h \ + ../gsl/gsl_blas_types.h ../gsl/gsl_cblas.h directional_minimize.c + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_multimin.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_types.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_min.h: + +../gsl/gsl_blas.h: + +../gsl/gsl_blas_types.h: + +../gsl/gsl_cblas.h: + +directional_minimize.c: diff --git a/gsl-2.5/multimin/.deps/conjugate_pr.Plo b/gsl-2.5/multimin/.deps/conjugate_pr.Plo new file mode 100644 index 00000000..ac144795 --- /dev/null +++ b/gsl-2.5/multimin/.deps/conjugate_pr.Plo @@ -0,0 +1,302 @@ +conjugate_pr.lo: conjugate_pr.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_multimin.h /usr/include/stdlib.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_types.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_nan.h ../gsl/gsl_pow_int.h \ + ../gsl/gsl_minmax.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_min.h ../gsl/gsl_blas.h \ + ../gsl/gsl_blas_types.h ../gsl/gsl_cblas.h directional_minimize.c + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_multimin.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_types.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_min.h: + +../gsl/gsl_blas.h: + +../gsl/gsl_blas_types.h: + +../gsl/gsl_cblas.h: + +directional_minimize.c: diff --git a/gsl-2.5/multimin/.deps/convergence.Plo b/gsl-2.5/multimin/.deps/convergence.Plo new file mode 100644 index 00000000..0f586816 --- /dev/null +++ b/gsl-2.5/multimin/.deps/convergence.Plo @@ -0,0 +1,300 @@ +convergence.lo: convergence.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_multimin.h /usr/include/stdlib.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_types.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_nan.h ../gsl/gsl_pow_int.h \ + ../gsl/gsl_minmax.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_min.h ../gsl/gsl_blas.h \ + ../gsl/gsl_blas_types.h ../gsl/gsl_cblas.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_multimin.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_types.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_min.h: + +../gsl/gsl_blas.h: + +../gsl/gsl_blas_types.h: + +../gsl/gsl_cblas.h: diff --git a/gsl-2.5/multimin/.deps/diff.Plo b/gsl-2.5/multimin/.deps/diff.Plo new file mode 100644 index 00000000..8d6ed18c --- /dev/null +++ b/gsl-2.5/multimin/.deps/diff.Plo @@ -0,0 +1,293 @@ +diff.lo: diff.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_multimin.h /usr/include/stdlib.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_types.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_nan.h ../gsl/gsl_pow_int.h \ + ../gsl/gsl_minmax.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_min.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_multimin.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_types.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_min.h: diff --git a/gsl-2.5/multimin/.deps/fdfminimizer.Plo b/gsl-2.5/multimin/.deps/fdfminimizer.Plo new file mode 100644 index 00000000..e950d7f2 --- /dev/null +++ b/gsl-2.5/multimin/.deps/fdfminimizer.Plo @@ -0,0 +1,292 @@ +fdfminimizer.lo: fdfminimizer.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_errno.h /usr/include/stdio.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_types.h ../gsl/gsl_multimin.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_nan.h ../gsl/gsl_pow_int.h \ + ../gsl/gsl_minmax.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_complex.h \ + ../gsl/gsl_check_range.h ../gsl/gsl_vector_long_double.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_vector_complex.h \ + ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_min.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_multimin.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_min.h: diff --git a/gsl-2.5/multimin/.deps/fminimizer.Plo b/gsl-2.5/multimin/.deps/fminimizer.Plo new file mode 100644 index 00000000..f44de95d --- /dev/null +++ b/gsl-2.5/multimin/.deps/fminimizer.Plo @@ -0,0 +1,292 @@ +fminimizer.lo: fminimizer.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_errno.h /usr/include/stdio.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_types.h ../gsl/gsl_multimin.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_nan.h ../gsl/gsl_pow_int.h \ + ../gsl/gsl_minmax.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_complex.h \ + ../gsl/gsl_check_range.h ../gsl/gsl_vector_long_double.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_vector_complex.h \ + ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_min.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_multimin.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_min.h: diff --git a/gsl-2.5/multimin/.deps/simplex.Plo b/gsl-2.5/multimin/.deps/simplex.Plo new file mode 100644 index 00000000..d0a4cb03 --- /dev/null +++ b/gsl-2.5/multimin/.deps/simplex.Plo @@ -0,0 +1,300 @@ +simplex.lo: simplex.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_blas.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_types.h \ + ../gsl/gsl_errno.h /usr/include/stdio.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_inline.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_vector_complex.h \ + ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_blas_types.h ../gsl/gsl_cblas.h \ + ../gsl/gsl_multimin.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_nan.h ../gsl/gsl_pow_int.h \ + ../gsl/gsl_minmax.h ../gsl/gsl_min.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_blas.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_types.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_blas_types.h: + +../gsl/gsl_cblas.h: + +../gsl/gsl_multimin.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_min.h: diff --git a/gsl-2.5/multimin/.deps/simplex2.Plo b/gsl-2.5/multimin/.deps/simplex2.Plo new file mode 100644 index 00000000..a162e8d3 --- /dev/null +++ b/gsl-2.5/multimin/.deps/simplex2.Plo @@ -0,0 +1,300 @@ +simplex2.lo: simplex2.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_blas.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_types.h \ + ../gsl/gsl_errno.h /usr/include/stdio.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_inline.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_vector_complex.h \ + ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_blas_types.h ../gsl/gsl_cblas.h \ + ../gsl/gsl_multimin.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_nan.h ../gsl/gsl_pow_int.h \ + ../gsl/gsl_minmax.h ../gsl/gsl_min.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_blas.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_types.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_blas_types.h: + +../gsl/gsl_cblas.h: + +../gsl/gsl_multimin.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_min.h: diff --git a/gsl-2.5/multimin/.deps/steepest_descent.Plo b/gsl-2.5/multimin/.deps/steepest_descent.Plo new file mode 100644 index 00000000..8c679352 --- /dev/null +++ b/gsl-2.5/multimin/.deps/steepest_descent.Plo @@ -0,0 +1,301 @@ +steepest_descent.lo: steepest_descent.c /usr/include/stdc-predef.h \ + ../config.h ../gsl/gsl_multimin.h /usr/include/stdlib.h \ + /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_types.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_nan.h ../gsl/gsl_pow_int.h \ + ../gsl/gsl_minmax.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_min.h ../gsl/gsl_blas_types.h \ + ../gsl/gsl_cblas.h ../gsl/gsl_blas.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_multimin.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_types.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_min.h: + +../gsl/gsl_blas_types.h: + +../gsl/gsl_cblas.h: + +../gsl/gsl_blas.h: diff --git a/gsl-2.5/multimin/.deps/test.Po b/gsl-2.5/multimin/.deps/test.Po new file mode 100644 index 00000000..53040bf9 --- /dev/null +++ b/gsl-2.5/multimin/.deps/test.Po @@ -0,0 +1,307 @@ +test.o: test.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_test.h ../gsl/gsl_blas.h \ + ../gsl/gsl_vector.h ../gsl/gsl_vector_complex_long_double.h \ + ../gsl/gsl_types.h ../gsl/gsl_errno.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_inline.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_vector_complex.h \ + ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_blas_types.h ../gsl/gsl_cblas.h \ + ../gsl/gsl_multimin.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_nan.h ../gsl/gsl_pow_int.h \ + ../gsl/gsl_minmax.h ../gsl/gsl_min.h ../gsl/gsl_ieee_utils.h \ + test_funcs.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_test.h: + +../gsl/gsl_blas.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_types.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_blas_types.h: + +../gsl/gsl_cblas.h: + +../gsl/gsl_multimin.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_min.h: + +../gsl/gsl_ieee_utils.h: + +test_funcs.h: diff --git a/gsl-2.5/multimin/.deps/test_funcs.Po b/gsl-2.5/multimin/.deps/test_funcs.Po new file mode 100644 index 00000000..b9366f9a --- /dev/null +++ b/gsl-2.5/multimin/.deps/test_funcs.Po @@ -0,0 +1,295 @@ +test_funcs.o: test_funcs.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_math.h ../gsl/gsl_sys.h \ + ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_multimin.h \ + /usr/include/stdlib.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_min.h test_funcs.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_multimin.h: + +/usr/include/stdlib.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_min.h: + +test_funcs.h: diff --git a/gsl-2.5/multimin/.deps/vector_bfgs.Plo b/gsl-2.5/multimin/.deps/vector_bfgs.Plo new file mode 100644 index 00000000..d7993f82 --- /dev/null +++ b/gsl-2.5/multimin/.deps/vector_bfgs.Plo @@ -0,0 +1,302 @@ +vector_bfgs.lo: vector_bfgs.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_multimin.h /usr/include/stdlib.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_types.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_nan.h ../gsl/gsl_pow_int.h \ + ../gsl/gsl_minmax.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_min.h ../gsl/gsl_blas.h \ + ../gsl/gsl_blas_types.h ../gsl/gsl_cblas.h directional_minimize.c + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_multimin.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_types.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_min.h: + +../gsl/gsl_blas.h: + +../gsl/gsl_blas_types.h: + +../gsl/gsl_cblas.h: + +directional_minimize.c: diff --git a/gsl-2.5/multimin/.deps/vector_bfgs2.Plo b/gsl-2.5/multimin/.deps/vector_bfgs2.Plo new file mode 100644 index 00000000..079053c1 --- /dev/null +++ b/gsl-2.5/multimin/.deps/vector_bfgs2.Plo @@ -0,0 +1,307 @@ +vector_bfgs2.lo: vector_bfgs2.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_multimin.h /usr/include/stdlib.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_types.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_nan.h ../gsl/gsl_pow_int.h \ + ../gsl/gsl_minmax.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_min.h ../gsl/gsl_blas.h \ + ../gsl/gsl_blas_types.h ../gsl/gsl_cblas.h linear_minimize.c \ + ../gsl/gsl_poly.h linear_wrapper.c + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_multimin.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_types.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_min.h: + +../gsl/gsl_blas.h: + +../gsl/gsl_blas_types.h: + +../gsl/gsl_cblas.h: + +linear_minimize.c: + +../gsl/gsl_poly.h: + +linear_wrapper.c: diff --git a/gsl-2.5/multimin/.libs/libgslmultimin.la b/gsl-2.5/multimin/.libs/libgslmultimin.la new file mode 120000 index 00000000..9e5a9d74 --- /dev/null +++ b/gsl-2.5/multimin/.libs/libgslmultimin.la @@ -0,0 +1 @@ +../libgslmultimin.la \ No newline at end of file diff --git a/gsl-2.5/multimin/.libs/lt-test b/gsl-2.5/multimin/.libs/lt-test new file mode 100755 index 00000000..dcea567c Binary files /dev/null and b/gsl-2.5/multimin/.libs/lt-test differ diff --git a/gsl-2.5/multimin/.libs/test b/gsl-2.5/multimin/.libs/test new file mode 100755 index 00000000..2e0ad657 Binary files /dev/null and b/gsl-2.5/multimin/.libs/test differ diff --git a/gsl-2.5/multimin/ChangeLog b/gsl-2.5/multimin/ChangeLog new file mode 100644 index 00000000..f7e9e67d --- /dev/null +++ b/gsl-2.5/multimin/ChangeLog @@ -0,0 +1,186 @@ +2010-04-07 Brian Gough + + * test.c (test_fdf): handle case of GSL_ENOPROG from early returns + + * test_funcs.c (simpleabs_f): new test function with non-zero + first derivatives around minimum + + * steepest_descent.c (steepest_descent_iterate): return early if + trial point does not move within machine precision + + * directional_minimize.c (intermediate_point): return early with + step=0 if trial point does not move from initial point within + machine precision + +2009-08-05 Brian Gough + + * simplex2.c (contract_by_best): update the size and + center to avoid old values being used + + * test.c (main): added a testcase for the spring function + +2009-07-11 Brian Gough + + * simplex2.c (nmsimplex_set_rand): provide alternative + initialisation which randomizes the initial simplex + +2009-07-09 Brian Gough + + * fminimizer.c (gsl_multimin_fminimizer_free): handle NULL + argument in free + + * fdfminimizer.c (gsl_multimin_fdfminimizer_free): handle NULL + argument in free + +2008-11-29 Brian Gough + + * test.c (test_f): extended fminimizer test to allow type to be + passed in as a parameter + + * simplex2.c: use BLAS, keep track of center in state to avoid + unnecessary computation, compute size as RMS value to allow linear + update. + +2008-07-03 Brian Gough + + * Makefile.am (INCLUDES): use top_srcdir instead of top_builddir + +2008-05-06 Brian Gough + + * simplex.c (nmsimplex_iterate): fix search for second highest + point + +2007-07-30 Brian Gough + + * history.c: removed (unused file) + +2007-02-20 Brian Gough + + * vector_bfgs2.c (vector_bfgs2_iterate): use positive step size + +2007-02-17 Brian Gough + + * linear_minimize.c (minimize): return GSL_ENOPROG for roundoff + +2007-02-14 Brian Gough + + * linear_minimize.c: made all functions static + + * linear_wrapper.c: made all functions static + +2007-02-08 Brian Gough + + * linear_wrapper.c: convert multidimensional function to + one-dimensional for line minimisation + + * linear_minimize.c: one-dimensional minimisation from Fletcher + + * vector_bfgs2.c: added Fletcher's implementation + +2006-02-18 Brian Gough + + * vector_bfgs.c (vector_bfgs_iterate): avoid division by zero if + dxdg == 0 + +2003-07-24 Brian Gough + + * simplex.c (nmsimplex_set): changed index variable i from int to + size_t + +2003-04-17 Brian Gough + + * simplex.c (nmsimplex_iterate): bug fix to find the second + highest point correctly + + * vector_bfgs.c (vector_bfgs_iterate): no need to update g0norm on + each downhill step, since g0norm is the norm for the initial + gradient. + + * conjugate_pr.c (conjugate_pr_iterate): no need to update g0norm + on each downhill step, since g0norm is the norm for the initial + gradient. + + * conjugate_fr.c (conjugate_fr_iterate): no need to update g0norm + on each downhill step, since g0norm is the norm for the initial + gradient. + +Sun Sep 30 20:50:00 2002 Tuomo Keskitalo + + * Added Nelder-Mead Simplex optimization algorithm and + fminimizer structure. + +Sun Feb 10 21:57:36 2002 Brian Gough + + * conjugate_pr.c (conjugate_pr_iterate): return error ENOPROG if + cannot find downward step + + * conjugate_fr.c (conjugate_fr_iterate): return error ENOPROG if + cannot find downward step + + * vector_bfgs.c (vector_bfgs_iterate): return error ENOPROG if + cannot find downward step + +Thu Oct 25 11:56:06 2001 Brian Gough + + * added a tolerance parameter for the line minimizations + +Wed Oct 24 23:18:46 2001 Brian Gough + + * modified all routines to use a single minimiztion iteration, + instead of nested iterations for line and gradient search. + +Thu Oct 18 22:56:52 2001 Brian Gough + + * renamed gsl_multimin_f_minimizer to gsl_multimin_fminimizer for + consistency with rest of the library + + * renamed gsl_multimin_fdf_minimizer to gsl_multimin_fdfminimizer + for consistency with rest of the library + +Mon Oct 8 21:41:51 2001 Brian Gough + + * diff.c (gsl_multimin_diff): pass params argument using + GSL_MULTIMIN_FN_EVAL (3 occurrences) + +Sun Jul 15 17:54:15 2001 Brian Gough + + * fdfminimizer.c (gsl_multimin_fdf_minimizer_alloc): eliminated + use of interval type + +Sat Apr 28 11:29:08 2001 Brian Gough + + * diff.c (gsl_multimin_diff): made indices unsigned + +Mon Apr 23 13:22:31 2001 Brian Gough + + * gsl_multimin.h diff.c: made starting_point const throughout to + avoid compiler warnings + + * made internal functions static + + * gsl_multimin.h: added missing prototype for gsl_multimin_diff + +Tue Apr 17 22:15:37 2001 Brian Gough + + * gsl_multimin.h: added missing prototype for gsl_multimin_compute_ep + +Sun Feb 18 16:35:21 2001 Brian Gough + + * fdfminimizer.c (gsl_multimin_fdf_minimizer_alloc): modified to + account for change in calling convection of + gsl_min_fminimizer_alloc + +Fri May 5 16:08:34 2000 Brian Gough + + * test.c (test_fdf): fixed warning about "control reaches end of + non-void function" by changing test_fdf to return type void + +Tue May 2 19:20:46 2000 Brian Gough + + * test.c (main): added return gsl_test_summary() to main, so that + test results are returned through the exit status. + +Mon Feb 14 13:12:16 2000 Brian Gough + + * made all internal functions static + diff --git a/gsl-2.5/multimin/Makefile b/gsl-2.5/multimin/Makefile new file mode 100644 index 00000000..8ef8c194 --- /dev/null +++ b/gsl-2.5/multimin/Makefile @@ -0,0 +1,1048 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# multimin/Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + + + + +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/gsl +pkgincludedir = $(includedir)/gsl +pkglibdir = $(libdir)/gsl +pkglibexecdir = $(libexecdir)/gsl +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = x86_64-unknown-linux-gnu +host_triplet = x86_64-unknown-linux-gnu +check_PROGRAMS = test$(EXEEXT) +subdir = multimin +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp \ + $(noinst_HEADERS) $(pkginclude_HEADERS) \ + $(top_srcdir)/test-driver ChangeLog TODO +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +libgslmultimin_la_LIBADD = +am_libgslmultimin_la_OBJECTS = fdfminimizer.lo steepest_descent.lo \ + conjugate_fr.lo conjugate_pr.lo convergence.lo diff.lo \ + vector_bfgs.lo vector_bfgs2.lo fminimizer.lo simplex.lo \ + simplex2.lo +libgslmultimin_la_OBJECTS = $(am_libgslmultimin_la_OBJECTS) +AM_V_lt = $(am__v_lt_$(V)) +am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) +am__v_lt_0 = --silent +am__v_lt_1 = +am_test_OBJECTS = test.$(OBJEXT) test_funcs.$(OBJEXT) +test_OBJECTS = $(am_test_OBJECTS) +test_DEPENDENCIES = libgslmultimin.la ../min/libgslmin.la \ + ../poly/libgslpoly.la ../blas/libgslblas.la \ + ../cblas/libgslcblas.la ../linalg/libgsllinalg.la \ + ../permutation/libgslpermutation.la ../matrix/libgslmatrix.la \ + ../vector/libgslvector.la ../block/libgslblock.la \ + ../complex/libgslcomplex.la ../ieee-utils/libgslieeeutils.la \ + ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la \ + ../utils/libutils.la +AM_V_P = $(am__v_P_$(V)) +am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY)) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_$(V)) +am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_$(V)) +am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I. -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_$(V)) +am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_$(V)) +am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libgslmultimin_la_SOURCES) $(test_SOURCES) +DIST_SOURCES = $(libgslmultimin_la_SOURCES) $(test_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(pkgincludedir)" +HEADERS = $(noinst_HEADERS) $(pkginclude_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = .test +LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing aclocal-1.13 +AMTAR = $${TAR-tar} +AM_DEFAULT_VERBOSITY = 1 +AR = ar +AS = as +AUTOCONF = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing autoconf +AUTOHEADER = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing autoheader +AUTOMAKE = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing automake-1.13 +AWK = gawk +CC = gcc +CCDEPMODE = depmode=gcc3 +CFLAGS = -g -O2 +CPP = gcc -E +CPPFLAGS = +CYGPATH_W = echo +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +DLLTOOL = false +DSYMUTIL = +DUMPBIN = +ECHO_C = +ECHO_N = -n +ECHO_T = +EGREP = /usr/bin/grep -E +EXEEXT = +FGREP = /usr/bin/grep -F +GREP = /usr/bin/grep +GSLCBLAS_LDFLAGS = +GSL_CFLAGS = -I${prefix}/include +GSL_LDFLAGS = +GSL_LIBADD = +GSL_LIBM = -lm +GSL_LIBS = -L${exec_prefix}/lib -lgsl +GSL_LT_CBLAS_VERSION = 0:0:0 +GSL_LT_VERSION = 24:0:1 +GSL_MAJOR_VERSION = 2 +GSL_MINOR_VERSION = 5 +HAVE_AIX_IEEE_INTERFACE = +HAVE_DARWIN86_IEEE_INTERFACE = +HAVE_DARWIN_IEEE_INTERFACE = +HAVE_FREEBSD_IEEE_INTERFACE = +HAVE_GNUM68K_IEEE_INTERFACE = +HAVE_GNUPPC_IEEE_INTERFACE = +HAVE_GNUSPARC_IEEE_INTERFACE = +HAVE_GNUX86_IEEE_INTERFACE = +HAVE_HPUX11_IEEE_INTERFACE = +HAVE_HPUX_IEEE_INTERFACE = +HAVE_IRIX_IEEE_INTERFACE = +HAVE_NETBSD_IEEE_INTERFACE = +HAVE_OPENBSD_IEEE_INTERFACE = +HAVE_OS2EMX_IEEE_INTERFACE = +HAVE_SOLARIS_IEEE_INTERFACE = +HAVE_SUNOS4_IEEE_INTERFACE = +HAVE_TRU64_IEEE_INTERFACE = +INSTALL = /usr/bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = $(install_sh) -c -s +LD = /usr/bin/ld -m elf_x86_64 +LDFLAGS = +LIBM = -lm +LIBOBJS = +LIBS = -lm +LIBTOOL = $(SHELL) $(top_builddir)/libtool +LIPO = +LN_S = ln -s +LTLIBOBJS = +MAINT = # +MAKEINFO = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing makeinfo +MANIFEST_TOOL = : +MKDIR_P = /usr/bin/mkdir -p +NM = /usr/bin/nm -B +NMEDIT = +OBJDUMP = objdump +OBJEXT = o +OTOOL = +OTOOL64 = +PACKAGE = gsl +PACKAGE_BUGREPORT = +PACKAGE_NAME = gsl +PACKAGE_STRING = gsl 2.5 +PACKAGE_TARNAME = gsl +PACKAGE_URL = +PACKAGE_VERSION = 2.5 +PATH_SEPARATOR = : +RANLIB = ranlib +SED = /usr/bin/sed +SET_MAKE = +SHELL = /bin/sh +STRIP = strip +VERSION = 2.5 +abs_builddir = /home/groups/kipac/chto/package/gsl/gsl-2.5/multimin +abs_srcdir = /home/groups/kipac/chto/package/gsl/gsl-2.5/multimin +abs_top_builddir = /home/groups/kipac/chto/package/gsl/gsl-2.5 +abs_top_srcdir = /home/groups/kipac/chto/package/gsl/gsl-2.5 +ac_ct_AR = ar +ac_ct_CC = gcc +ac_ct_DUMPBIN = +am__include = include +am__leading_dot = . +am__quote = +am__tar = $${TAR-tar} chof - "$$tardir" +am__untar = $${TAR-tar} xf - +bindir = ${exec_prefix}/bin +build = x86_64-unknown-linux-gnu +build_alias = +build_cpu = x86_64 +build_os = linux-gnu +build_vendor = unknown +builddir = . +datadir = ${datarootdir} +datarootdir = ${prefix}/share +docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} +dvidir = ${docdir} +exec_prefix = ${prefix} +host = x86_64-unknown-linux-gnu +host_alias = +host_cpu = x86_64 +host_os = linux-gnu +host_vendor = unknown +htmldir = ${docdir} +includedir = ${prefix}/include +infodir = ${datarootdir}/info +install_sh = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/install-sh +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +localedir = ${datarootdir}/locale +localstatedir = ${prefix}/var +mandir = ${datarootdir}/man +mkdir_p = $(MKDIR_P) +oldincludedir = /usr/include +pdfdir = ${docdir} +prefix = /home/groups/kipac/chto/package/gsl/gsl_lib +program_transform_name = s,x,x, +psdir = ${docdir} +sbindir = ${exec_prefix}/sbin +sharedstatedir = ${prefix}/com +srcdir = . +sysconfdir = ${prefix}/etc +target_alias = +top_build_prefix = ../ +top_builddir = .. +top_srcdir = .. +noinst_LTLIBRARIES = libgslmultimin.la +pkginclude_HEADERS = gsl_multimin.h +AM_CPPFLAGS = -I$(top_srcdir) +libgslmultimin_la_SOURCES = fdfminimizer.c steepest_descent.c conjugate_fr.c conjugate_pr.c convergence.c diff.c vector_bfgs.c vector_bfgs2.c fminimizer.c simplex.c simplex2.c +noinst_HEADERS = directional_minimize.c linear_minimize.c linear_wrapper.c +TESTS = $(check_PROGRAMS) +test_SOURCES = test.c test_funcs.c test_funcs.h +test_LDADD = libgslmultimin.la ../min/libgslmin.la ../poly/libgslpoly.la ../blas/libgslblas.la ../cblas/libgslcblas.la ../linalg/libgsllinalg.la ../permutation/libgslpermutation.la ../matrix/libgslmatrix.la ../vector/libgslvector.la ../block/libgslblock.la ../complex/libgslcomplex.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu multimin/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu multimin/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: # $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): # $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libgslmultimin.la: $(libgslmultimin_la_OBJECTS) $(libgslmultimin_la_DEPENDENCIES) $(EXTRA_libgslmultimin_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(libgslmultimin_la_OBJECTS) $(libgslmultimin_la_LIBADD) $(LIBS) + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) $(EXTRA_test_DEPENDENCIES) + @rm -f test$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_OBJECTS) $(test_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +include ./$(DEPDIR)/conjugate_fr.Plo +include ./$(DEPDIR)/conjugate_pr.Plo +include ./$(DEPDIR)/convergence.Plo +include ./$(DEPDIR)/diff.Plo +include ./$(DEPDIR)/fdfminimizer.Plo +include ./$(DEPDIR)/fminimizer.Plo +include ./$(DEPDIR)/simplex.Plo +include ./$(DEPDIR)/simplex2.Plo +include ./$(DEPDIR)/steepest_descent.Plo +include ./$(DEPDIR)/test.Po +include ./$(DEPDIR)/test_funcs.Po +include ./$(DEPDIR)/vector_bfgs.Plo +include ./$(DEPDIR)/vector_bfgs2.Plo + +.c.o: + $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# $(AM_V_CC)source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(COMPILE) -c $< + +.c.obj: + $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# $(AM_V_CC)source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: + $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +# $(AM_V_CC)source='$<' object='$@' libtool=yes \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-pkgincludeHEADERS: $(pkginclude_HEADERS) + @$(NORMAL_INSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \ + done + +uninstall-pkgincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + else \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_PROGRAMS) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +test.log: test$(EXEEXT) + @p='test$(EXEEXT)'; \ + b='test'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +#.test$(EXEEXT).log: +# @p='$<'; \ +# $(am__set_b); \ +# $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +# --log-file $$b.log --trs-file $$b.trs \ +# $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +# "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-am +all-am: Makefile $(LTLIBRARIES) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(pkgincludedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-pkgincludeHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-pkgincludeHEADERS + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES cscopelist-am ctags ctags-am distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-pkgincludeHEADERS \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + recheck tags tags-am uninstall uninstall-am \ + uninstall-pkgincludeHEADERS + + +#demo_SOURCES = demo.c +#demo_LDADD = libgslmultimin.la ../min/libgslmin.la ../blas/libgslblas.la ../cblas/libgslcblas.la ../linalg/libgsllinalg.la ../matrix/libgslmatrix.la ../vector/libgslvector.la ../block/libgslblock.la ../complex/libgslcomplex.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gsl-2.5/multimin/Makefile.am b/gsl-2.5/multimin/Makefile.am new file mode 100644 index 00000000..7071359c --- /dev/null +++ b/gsl-2.5/multimin/Makefile.am @@ -0,0 +1,20 @@ +noinst_LTLIBRARIES = libgslmultimin.la + +pkginclude_HEADERS = gsl_multimin.h + +AM_CPPFLAGS = -I$(top_srcdir) + +libgslmultimin_la_SOURCES = fdfminimizer.c steepest_descent.c conjugate_fr.c conjugate_pr.c convergence.c diff.c vector_bfgs.c vector_bfgs2.c fminimizer.c simplex.c simplex2.c + +noinst_HEADERS = directional_minimize.c linear_minimize.c linear_wrapper.c + +check_PROGRAMS = test #demo + +TESTS = $(check_PROGRAMS) + +test_SOURCES = test.c test_funcs.c test_funcs.h +test_LDADD = libgslmultimin.la ../min/libgslmin.la ../poly/libgslpoly.la ../blas/libgslblas.la ../cblas/libgslcblas.la ../linalg/libgsllinalg.la ../permutation/libgslpermutation.la ../matrix/libgslmatrix.la ../vector/libgslvector.la ../block/libgslblock.la ../complex/libgslcomplex.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la + +#demo_SOURCES = demo.c +#demo_LDADD = libgslmultimin.la ../min/libgslmin.la ../blas/libgslblas.la ../cblas/libgslcblas.la ../linalg/libgsllinalg.la ../matrix/libgslmatrix.la ../vector/libgslvector.la ../block/libgslblock.la ../complex/libgslcomplex.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la + diff --git a/gsl-2.5/multimin/Makefile.in b/gsl-2.5/multimin/Makefile.in new file mode 100644 index 00000000..a4084e84 --- /dev/null +++ b/gsl-2.5/multimin/Makefile.in @@ -0,0 +1,1048 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + + +VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +check_PROGRAMS = test$(EXEEXT) +subdir = multimin +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp \ + $(noinst_HEADERS) $(pkginclude_HEADERS) \ + $(top_srcdir)/test-driver ChangeLog TODO +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +libgslmultimin_la_LIBADD = +am_libgslmultimin_la_OBJECTS = fdfminimizer.lo steepest_descent.lo \ + conjugate_fr.lo conjugate_pr.lo convergence.lo diff.lo \ + vector_bfgs.lo vector_bfgs2.lo fminimizer.lo simplex.lo \ + simplex2.lo +libgslmultimin_la_OBJECTS = $(am_libgslmultimin_la_OBJECTS) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +am_test_OBJECTS = test.$(OBJEXT) test_funcs.$(OBJEXT) +test_OBJECTS = $(am_test_OBJECTS) +test_DEPENDENCIES = libgslmultimin.la ../min/libgslmin.la \ + ../poly/libgslpoly.la ../blas/libgslblas.la \ + ../cblas/libgslcblas.la ../linalg/libgsllinalg.la \ + ../permutation/libgslpermutation.la ../matrix/libgslmatrix.la \ + ../vector/libgslvector.la ../block/libgslblock.la \ + ../complex/libgslcomplex.la ../ieee-utils/libgslieeeutils.la \ + ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la \ + ../utils/libutils.la +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libgslmultimin_la_SOURCES) $(test_SOURCES) +DIST_SOURCES = $(libgslmultimin_la_SOURCES) $(test_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(pkgincludedir)" +HEADERS = $(noinst_HEADERS) $(pkginclude_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = @EXEEXT@ .test +LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +GSLCBLAS_LDFLAGS = @GSLCBLAS_LDFLAGS@ +GSL_CFLAGS = @GSL_CFLAGS@ +GSL_LDFLAGS = @GSL_LDFLAGS@ +GSL_LIBADD = @GSL_LIBADD@ +GSL_LIBM = @GSL_LIBM@ +GSL_LIBS = @GSL_LIBS@ +GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ +GSL_LT_VERSION = @GSL_LT_VERSION@ +GSL_MAJOR_VERSION = @GSL_MAJOR_VERSION@ +GSL_MINOR_VERSION = @GSL_MINOR_VERSION@ +HAVE_AIX_IEEE_INTERFACE = @HAVE_AIX_IEEE_INTERFACE@ +HAVE_DARWIN86_IEEE_INTERFACE = @HAVE_DARWIN86_IEEE_INTERFACE@ +HAVE_DARWIN_IEEE_INTERFACE = @HAVE_DARWIN_IEEE_INTERFACE@ +HAVE_FREEBSD_IEEE_INTERFACE = @HAVE_FREEBSD_IEEE_INTERFACE@ +HAVE_GNUM68K_IEEE_INTERFACE = @HAVE_GNUM68K_IEEE_INTERFACE@ +HAVE_GNUPPC_IEEE_INTERFACE = @HAVE_GNUPPC_IEEE_INTERFACE@ +HAVE_GNUSPARC_IEEE_INTERFACE = @HAVE_GNUSPARC_IEEE_INTERFACE@ +HAVE_GNUX86_IEEE_INTERFACE = @HAVE_GNUX86_IEEE_INTERFACE@ +HAVE_HPUX11_IEEE_INTERFACE = @HAVE_HPUX11_IEEE_INTERFACE@ +HAVE_HPUX_IEEE_INTERFACE = @HAVE_HPUX_IEEE_INTERFACE@ +HAVE_IRIX_IEEE_INTERFACE = @HAVE_IRIX_IEEE_INTERFACE@ +HAVE_NETBSD_IEEE_INTERFACE = @HAVE_NETBSD_IEEE_INTERFACE@ +HAVE_OPENBSD_IEEE_INTERFACE = @HAVE_OPENBSD_IEEE_INTERFACE@ +HAVE_OS2EMX_IEEE_INTERFACE = @HAVE_OS2EMX_IEEE_INTERFACE@ +HAVE_SOLARIS_IEEE_INTERFACE = @HAVE_SOLARIS_IEEE_INTERFACE@ +HAVE_SUNOS4_IEEE_INTERFACE = @HAVE_SUNOS4_IEEE_INTERFACE@ +HAVE_TRU64_IEEE_INTERFACE = @HAVE_TRU64_IEEE_INTERFACE@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBM = @LIBM@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +noinst_LTLIBRARIES = libgslmultimin.la +pkginclude_HEADERS = gsl_multimin.h +AM_CPPFLAGS = -I$(top_srcdir) +libgslmultimin_la_SOURCES = fdfminimizer.c steepest_descent.c conjugate_fr.c conjugate_pr.c convergence.c diff.c vector_bfgs.c vector_bfgs2.c fminimizer.c simplex.c simplex2.c +noinst_HEADERS = directional_minimize.c linear_minimize.c linear_wrapper.c +TESTS = $(check_PROGRAMS) +test_SOURCES = test.c test_funcs.c test_funcs.h +test_LDADD = libgslmultimin.la ../min/libgslmin.la ../poly/libgslpoly.la ../blas/libgslblas.la ../cblas/libgslcblas.la ../linalg/libgsllinalg.la ../permutation/libgslpermutation.la ../matrix/libgslmatrix.la ../vector/libgslvector.la ../block/libgslblock.la ../complex/libgslcomplex.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu multimin/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu multimin/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libgslmultimin.la: $(libgslmultimin_la_OBJECTS) $(libgslmultimin_la_DEPENDENCIES) $(EXTRA_libgslmultimin_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(libgslmultimin_la_OBJECTS) $(libgslmultimin_la_LIBADD) $(LIBS) + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) $(EXTRA_test_DEPENDENCIES) + @rm -f test$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_OBJECTS) $(test_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/conjugate_fr.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/conjugate_pr.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/convergence.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/diff.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fdfminimizer.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fminimizer.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/simplex.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/simplex2.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/steepest_descent.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_funcs.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vector_bfgs.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vector_bfgs2.Plo@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-pkgincludeHEADERS: $(pkginclude_HEADERS) + @$(NORMAL_INSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \ + done + +uninstall-pkgincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + else \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_PROGRAMS) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +test.log: test$(EXEEXT) + @p='test$(EXEEXT)'; \ + b='test'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +@am__EXEEXT_TRUE@.test$(EXEEXT).log: +@am__EXEEXT_TRUE@ @p='$<'; \ +@am__EXEEXT_TRUE@ $(am__set_b); \ +@am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +@am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ +@am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +@am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-am +all-am: Makefile $(LTLIBRARIES) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(pkgincludedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-pkgincludeHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-pkgincludeHEADERS + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES cscopelist-am ctags ctags-am distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-pkgincludeHEADERS \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + recheck tags tags-am uninstall uninstall-am \ + uninstall-pkgincludeHEADERS + + +#demo_SOURCES = demo.c +#demo_LDADD = libgslmultimin.la ../min/libgslmin.la ../blas/libgslblas.la ../cblas/libgslcblas.la ../linalg/libgsllinalg.la ../matrix/libgslmatrix.la ../vector/libgslvector.la ../block/libgslblock.la ../complex/libgslcomplex.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gsl-2.5/multimin/TODO b/gsl-2.5/multimin/TODO new file mode 100644 index 00000000..fbf4e0f3 --- /dev/null +++ b/gsl-2.5/multimin/TODO @@ -0,0 +1,8 @@ +# -*- org -*- +#+CATEGORY: multimin + +* Check behavior of conjugate_fr in multimin -- the demo results look odd. + +* Should have made f and df return int instead of void. + +* Handle errors via GSL_NAN similar to min.h in min/ diff --git a/gsl-2.5/multimin/conjugate_fr.c b/gsl-2.5/multimin/conjugate_fr.c new file mode 100644 index 00000000..7b3f9637 --- /dev/null +++ b/gsl-2.5/multimin/conjugate_fr.c @@ -0,0 +1,271 @@ +/* multimin/conjugate_fr.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Fabrice Rossi + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* conjugate_fr.c -- Conjugate gradient Fletcher-Reeve algorithm */ + +/* Modified by Brian Gough to use single iteration structure */ + +#include +#include +#include + +#include "directional_minimize.c" + +typedef struct +{ + int iter; + double step; + double max_step; + double tol; + gsl_vector *x1; + gsl_vector *dx1; + gsl_vector *x2; + double pnorm; + gsl_vector *p; + double g0norm; + gsl_vector *g0; +} +conjugate_fr_state_t; + +static int +conjugate_fr_alloc (void *vstate, size_t n) +{ + conjugate_fr_state_t *state = (conjugate_fr_state_t *) vstate; + + state->x1 = gsl_vector_calloc (n); + + if (state->x1 == 0) + { + GSL_ERROR ("failed to allocate space for x1", GSL_ENOMEM); + } + + state->dx1 = gsl_vector_calloc (n); + + if (state->dx1 == 0) + { + gsl_vector_free (state->x1); + GSL_ERROR ("failed to allocate space for dx1", GSL_ENOMEM); + } + + state->x2 = gsl_vector_calloc (n); + + if (state->x2 == 0) + { + gsl_vector_free (state->dx1); + gsl_vector_free (state->x1); + GSL_ERROR ("failed to allocate space for x2", GSL_ENOMEM); + } + + state->p = gsl_vector_calloc (n); + + if (state->p == 0) + { + gsl_vector_free (state->x2); + gsl_vector_free (state->dx1); + gsl_vector_free (state->x1); + GSL_ERROR ("failed to allocate space for p", GSL_ENOMEM); + } + + state->g0 = gsl_vector_calloc (n); + + if (state->g0 == 0) + { + gsl_vector_free (state->p); + gsl_vector_free (state->x2); + gsl_vector_free (state->dx1); + gsl_vector_free (state->x1); + GSL_ERROR ("failed to allocate space for g0", GSL_ENOMEM); + } + + return GSL_SUCCESS; +} + +static int +conjugate_fr_set (void *vstate, gsl_multimin_function_fdf * fdf, + const gsl_vector * x, double *f, gsl_vector * gradient, + double step_size, double tol) +{ + conjugate_fr_state_t *state = (conjugate_fr_state_t *) vstate; + + state->iter = 0; + state->step = step_size; + state->max_step = step_size; + state->tol = tol; + + GSL_MULTIMIN_FN_EVAL_F_DF (fdf, x, f, gradient); + + /* Use the gradient as the initial direction */ + + gsl_vector_memcpy (state->p, gradient); + gsl_vector_memcpy (state->g0, gradient); + + { + double gnorm = gsl_blas_dnrm2 (gradient); + + state->pnorm = gnorm; + state->g0norm = gnorm; + } + + return GSL_SUCCESS; +} + +static void +conjugate_fr_free (void *vstate) +{ + conjugate_fr_state_t *state = (conjugate_fr_state_t *) vstate; + + gsl_vector_free (state->g0); + gsl_vector_free (state->p); + gsl_vector_free (state->x2); + gsl_vector_free (state->dx1); + gsl_vector_free (state->x1); +} + +static int +conjugate_fr_restart (void *vstate) +{ + conjugate_fr_state_t *state = (conjugate_fr_state_t *) vstate; + + state->iter = 0; + return GSL_SUCCESS; +} + +static int +conjugate_fr_iterate (void *vstate, gsl_multimin_function_fdf * fdf, + gsl_vector * x, double *f, + gsl_vector * gradient, gsl_vector * dx) +{ + conjugate_fr_state_t *state = (conjugate_fr_state_t *) vstate; + + gsl_vector *x1 = state->x1; + gsl_vector *dx1 = state->dx1; + gsl_vector *x2 = state->x2; + gsl_vector *p = state->p; + gsl_vector *g0 = state->g0; + + double pnorm = state->pnorm; + double g0norm = state->g0norm; + + double fa = *f, fb, fc; + double dir; + double stepa = 0.0, stepb, stepc = state->step, tol = state->tol; + + double g1norm; + double pg; + + if (pnorm == 0.0 || g0norm == 0.0) + { + gsl_vector_set_zero (dx); + return GSL_ENOPROG; + } + + /* Determine which direction is downhill, +p or -p */ + + gsl_blas_ddot (p, gradient, &pg); + + dir = (pg >= 0.0) ? +1.0 : -1.0; + + /* Compute new trial point at x_c= x - step * p, where p is the + current direction */ + + take_step (x, p, stepc, dir / pnorm, x1, dx); + + /* Evaluate function and gradient at new point xc */ + + fc = GSL_MULTIMIN_FN_EVAL_F (fdf, x1); + + if (fc < fa) + { + /* Success, reduced the function value */ + state->step = stepc * 2.0; + *f = fc; + gsl_vector_memcpy (x, x1); + GSL_MULTIMIN_FN_EVAL_DF (fdf, x1, gradient); + return GSL_SUCCESS; + } + +#ifdef DEBUG + printf ("got stepc = %g fc = %g\n", stepc, fc); +#endif + + /* Do a line minimisation in the region (xa,fa) (xc,fc) to find an + intermediate (xb,fb) satisifying fa > fb < fc. Choose an initial + xb based on parabolic interpolation */ + + intermediate_point (fdf, x, p, dir / pnorm, pg, + stepa, stepc, fa, fc, x1, dx1, gradient, &stepb, &fb); + + if (stepb == 0.0) + { + return GSL_ENOPROG; + } + + minimize (fdf, x, p, dir / pnorm, + stepa, stepb, stepc, fa, fb, fc, tol, + x1, dx1, x2, dx, gradient, &(state->step), f, &g1norm); + + gsl_vector_memcpy (x, x2); + + /* Choose a new conjugate direction for the next step */ + + state->iter = (state->iter + 1) % x->size; + + if (state->iter == 0) + { + gsl_vector_memcpy (p, gradient); + state->pnorm = g1norm; + } + else + { + /* p' = g1 - beta * p */ + + double beta = -pow (g1norm / g0norm, 2.0); + gsl_blas_dscal (-beta, p); + gsl_blas_daxpy (1.0, gradient, p); + state->pnorm = gsl_blas_dnrm2 (p); + } + + state->g0norm = g1norm; + gsl_vector_memcpy (g0, gradient); + +#ifdef DEBUG + printf ("updated conjugate directions\n"); + printf ("p: "); + gsl_vector_fprintf (stdout, p, "%g"); + printf ("g: "); + gsl_vector_fprintf (stdout, gradient, "%g"); +#endif + + return GSL_SUCCESS; +} + + + +static const gsl_multimin_fdfminimizer_type conjugate_fr_type = { + "conjugate_fr", /* name */ + sizeof (conjugate_fr_state_t), + &conjugate_fr_alloc, + &conjugate_fr_set, + &conjugate_fr_iterate, + &conjugate_fr_restart, + &conjugate_fr_free +}; + +const gsl_multimin_fdfminimizer_type + * gsl_multimin_fdfminimizer_conjugate_fr = &conjugate_fr_type; diff --git a/gsl-2.5/multimin/conjugate_fr.lo b/gsl-2.5/multimin/conjugate_fr.lo new file mode 100644 index 00000000..f719c316 --- /dev/null +++ b/gsl-2.5/multimin/conjugate_fr.lo @@ -0,0 +1,12 @@ +# conjugate_fr.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/conjugate_fr.o' + +# Name of the non-PIC object +non_pic_object='conjugate_fr.o' + diff --git a/gsl-2.5/multimin/conjugate_pr.c b/gsl-2.5/multimin/conjugate_pr.c new file mode 100644 index 00000000..25241e4d --- /dev/null +++ b/gsl-2.5/multimin/conjugate_pr.c @@ -0,0 +1,276 @@ +/* multimin/conjugate_pr.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Fabrice Rossi + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* conjugate_pr.c -- Conjugate gradient Polak-Ribiere algorithm */ + +/* Modified by Brian Gough to use single iteration structure */ + +#include +#include +#include + +#include "directional_minimize.c" + +typedef struct +{ + int iter; + double step; + double max_step; + double tol; + gsl_vector *x1; + gsl_vector *dx1; + gsl_vector *x2; + double pnorm; + gsl_vector *p; + double g0norm; + gsl_vector *g0; +} +conjugate_pr_state_t; + +static int +conjugate_pr_alloc (void *vstate, size_t n) +{ + conjugate_pr_state_t *state = (conjugate_pr_state_t *) vstate; + + state->x1 = gsl_vector_calloc (n); + + if (state->x1 == 0) + { + GSL_ERROR ("failed to allocate space for x1", GSL_ENOMEM); + } + + state->dx1 = gsl_vector_calloc (n); + + if (state->dx1 == 0) + { + gsl_vector_free (state->x1); + GSL_ERROR ("failed to allocate space for dx1", GSL_ENOMEM); + } + + state->x2 = gsl_vector_calloc (n); + + if (state->x2 == 0) + { + gsl_vector_free (state->dx1); + gsl_vector_free (state->x1); + GSL_ERROR ("failed to allocate space for x2", GSL_ENOMEM); + } + + state->p = gsl_vector_calloc (n); + + if (state->p == 0) + { + gsl_vector_free (state->x2); + gsl_vector_free (state->dx1); + gsl_vector_free (state->x1); + GSL_ERROR ("failed to allocate space for p", GSL_ENOMEM); + } + + state->g0 = gsl_vector_calloc (n); + + if (state->g0 == 0) + { + gsl_vector_free (state->p); + gsl_vector_free (state->x2); + gsl_vector_free (state->dx1); + gsl_vector_free (state->x1); + GSL_ERROR ("failed to allocate space for g0", GSL_ENOMEM); + } + + return GSL_SUCCESS; +} + +static int +conjugate_pr_set (void *vstate, gsl_multimin_function_fdf * fdf, + const gsl_vector * x, double *f, gsl_vector * gradient, + double step_size, double tol) +{ + conjugate_pr_state_t *state = (conjugate_pr_state_t *) vstate; + + state->iter = 0; + state->step = step_size; + state->max_step = step_size; + state->tol = tol; + + GSL_MULTIMIN_FN_EVAL_F_DF (fdf, x, f, gradient); + + /* Use the gradient as the initial direction */ + + gsl_vector_memcpy (state->p, gradient); + gsl_vector_memcpy (state->g0, gradient); + + { + double gnorm = gsl_blas_dnrm2 (gradient); + + state->pnorm = gnorm; + state->g0norm = gnorm; + } + + return GSL_SUCCESS; +} + +static void +conjugate_pr_free (void *vstate) +{ + conjugate_pr_state_t *state = (conjugate_pr_state_t *) vstate; + + gsl_vector_free (state->g0); + gsl_vector_free (state->p); + gsl_vector_free (state->x2); + gsl_vector_free (state->dx1); + gsl_vector_free (state->x1); +} + +static int +conjugate_pr_restart (void *vstate) +{ + conjugate_pr_state_t *state = (conjugate_pr_state_t *) vstate; + + state->iter = 0; + return GSL_SUCCESS; +} + +static int +conjugate_pr_iterate (void *vstate, gsl_multimin_function_fdf * fdf, + gsl_vector * x, double *f, + gsl_vector * gradient, gsl_vector * dx) +{ + conjugate_pr_state_t *state = (conjugate_pr_state_t *) vstate; + + gsl_vector *x1 = state->x1; + gsl_vector *dx1 = state->dx1; + gsl_vector *x2 = state->x2; + gsl_vector *p = state->p; + gsl_vector *g0 = state->g0; + + double pnorm = state->pnorm; + double g0norm = state->g0norm; + + double fa = *f, fb, fc; + double dir; + double stepa = 0.0, stepb, stepc = state->step, tol = state->tol; + + double g1norm; + double pg; + + if (pnorm == 0.0 || g0norm == 0.0) + { + gsl_vector_set_zero (dx); + return GSL_ENOPROG; + } + + /* Determine which direction is downhill, +p or -p */ + + gsl_blas_ddot (p, gradient, &pg); + + dir = (pg >= 0.0) ? +1.0 : -1.0; + + /* Compute new trial point at x_c= x - step * p, where p is the + current direction */ + + take_step (x, p, stepc, dir / pnorm, x1, dx); + + /* Evaluate function and gradient at new point xc */ + + fc = GSL_MULTIMIN_FN_EVAL_F (fdf, x1); + + if (fc < fa) + { + /* Success, reduced the function value */ + state->step = stepc * 2.0; + *f = fc; + gsl_vector_memcpy (x, x1); + GSL_MULTIMIN_FN_EVAL_DF (fdf, x1, gradient); + return GSL_SUCCESS; + } + +#ifdef DEBUG + printf ("got stepc = %g fc = %g\n", stepc, fc); +#endif + + /* Do a line minimisation in the region (xa,fa) (xc,fc) to find an + intermediate (xb,fb) satisifying fa > fb < fc. Choose an initial + xb based on parabolic interpolation */ + + intermediate_point (fdf, x, p, dir / pnorm, pg, + stepa, stepc, fa, fc, x1, dx1, gradient, &stepb, &fb); + + if (stepb == 0.0) + { + return GSL_ENOPROG; + } + + minimize (fdf, x, p, dir / pnorm, + stepa, stepb, stepc, fa, fb, fc, tol, + x1, dx1, x2, dx, gradient, &(state->step), f, &g1norm); + + gsl_vector_memcpy (x, x2); + + /* Choose a new conjugate direction for the next step */ + + state->iter = (state->iter + 1) % x->size; + + if (state->iter == 0) + { + gsl_vector_memcpy (p, gradient); + state->pnorm = g1norm; + } + else + { + /* p' = g1 - beta * p */ + + double g0g1, beta; + + gsl_blas_daxpy (-1.0, gradient, g0); /* g0' = g0 - g1 */ + gsl_blas_ddot(g0, gradient, &g0g1); /* g1g0 = (g0-g1).g1 */ + beta = g0g1 / (g0norm*g0norm); /* beta = -((g1 - g0).g1)/(g0.g0) */ + + gsl_blas_dscal (-beta, p); + gsl_blas_daxpy (1.0, gradient, p); + state->pnorm = gsl_blas_dnrm2 (p); + } + + state->g0norm = g1norm; + gsl_vector_memcpy (g0, gradient); + +#ifdef DEBUG + printf ("updated conjugate directions\n"); + printf ("p: "); + gsl_vector_fprintf (stdout, p, "%g"); + printf ("g: "); + gsl_vector_fprintf (stdout, gradient, "%g"); +#endif + + return GSL_SUCCESS; +} + + + +static const gsl_multimin_fdfminimizer_type conjugate_pr_type = { + "conjugate_pr", /* name */ + sizeof (conjugate_pr_state_t), + &conjugate_pr_alloc, + &conjugate_pr_set, + &conjugate_pr_iterate, + &conjugate_pr_restart, + &conjugate_pr_free +}; + +const gsl_multimin_fdfminimizer_type + * gsl_multimin_fdfminimizer_conjugate_pr = &conjugate_pr_type; diff --git a/gsl-2.5/multimin/conjugate_pr.lo b/gsl-2.5/multimin/conjugate_pr.lo new file mode 100644 index 00000000..18e3f38a --- /dev/null +++ b/gsl-2.5/multimin/conjugate_pr.lo @@ -0,0 +1,12 @@ +# conjugate_pr.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/conjugate_pr.o' + +# Name of the non-PIC object +non_pic_object='conjugate_pr.o' + diff --git a/gsl-2.5/multimin/convergence.c b/gsl-2.5/multimin/convergence.c new file mode 100644 index 00000000..3898e823 --- /dev/null +++ b/gsl-2.5/multimin/convergence.c @@ -0,0 +1,58 @@ +/* multimin/convergence.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Fabrice Rossi + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include + +int +gsl_multimin_test_gradient (const gsl_vector *g, double epsabs) +{ + double norm; + + if (epsabs < 0.0) + { + GSL_ERROR ("absolute tolerance is negative", GSL_EBADTOL); + } + + norm = gsl_blas_dnrm2(g); + + if (norm < epsabs) + { + return GSL_SUCCESS; + } + + return GSL_CONTINUE; +} + +int +gsl_multimin_test_size (const double size, double epsabs) +{ + if (epsabs < 0.0) + { + GSL_ERROR ("absolute tolerance is negative", GSL_EBADTOL); + } + + if (size < epsabs) + { + return GSL_SUCCESS; + } + + return GSL_CONTINUE; +} diff --git a/gsl-2.5/multimin/convergence.lo b/gsl-2.5/multimin/convergence.lo new file mode 100644 index 00000000..a5468a8d --- /dev/null +++ b/gsl-2.5/multimin/convergence.lo @@ -0,0 +1,12 @@ +# convergence.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/convergence.o' + +# Name of the non-PIC object +non_pic_object='convergence.o' + diff --git a/gsl-2.5/multimin/diff.c b/gsl-2.5/multimin/diff.c new file mode 100644 index 00000000..f6937245 --- /dev/null +++ b/gsl-2.5/multimin/diff.c @@ -0,0 +1,58 @@ +/* multimin/diff.c + * + * Copyright (C) 2000 David Morrison + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include + +int +gsl_multimin_diff (const gsl_multimin_function * f, + const gsl_vector * x, gsl_vector * g) +{ + size_t i, n = f->n; + + double h = GSL_SQRT_DBL_EPSILON; + + + gsl_vector * x1 = gsl_vector_alloc (n); /* FIXME: pass as argument */ + + gsl_vector_memcpy (x1, x); + + for (i = 0; i < n; i++) + { + double fl, fh; + + double xi = gsl_vector_get (x, i); + double dx = fabs(xi) * h; + + if (dx == 0.0) dx = h; + + gsl_vector_set (x1, i, xi + dx); + fh = GSL_MULTIMIN_FN_EVAL(f, x1); + + gsl_vector_set (x1, i, xi - dx); + fl = GSL_MULTIMIN_FN_EVAL(f, x1); + + gsl_vector_set (x1, i, xi); + gsl_vector_set (g, i, (fh - fl) / (2.0 * dx)); + } + + gsl_vector_free (x1); + + return GSL_SUCCESS; +} diff --git a/gsl-2.5/multimin/diff.lo b/gsl-2.5/multimin/diff.lo new file mode 100644 index 00000000..17b872c2 --- /dev/null +++ b/gsl-2.5/multimin/diff.lo @@ -0,0 +1,12 @@ +# diff.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/diff.o' + +# Name of the non-PIC object +non_pic_object='diff.o' + diff --git a/gsl-2.5/multimin/directional_minimize.c b/gsl-2.5/multimin/directional_minimize.c new file mode 100644 index 00000000..6dfa0acc --- /dev/null +++ b/gsl-2.5/multimin/directional_minimize.c @@ -0,0 +1,248 @@ +/* multimin/directional_minimize.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Fabrice Rossi + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +static void +take_step (const gsl_vector * x, const gsl_vector * p, + double step, double lambda, gsl_vector * x1, gsl_vector * dx) +{ + gsl_vector_set_zero (dx); + gsl_blas_daxpy (-step * lambda, p, dx); + + gsl_vector_memcpy (x1, x); + gsl_blas_daxpy (1.0, dx, x1); +} + +static void +intermediate_point (gsl_multimin_function_fdf * fdf, + const gsl_vector * x, const gsl_vector * p, + double lambda, + double pg, + double stepa, double stepc, + double fa, double fc, + gsl_vector * x1, gsl_vector * dx, gsl_vector * gradient, + double * step, double * f) +{ + double stepb, fb; + +trial: + { + double u = fabs (pg * lambda * stepc); + stepb = 0.5 * stepc * u / ((fc - fa) + u); + } + + take_step (x, p, stepb, lambda, x1, dx); + + if (gsl_vector_equal (x, x1)) + { + /* Take fast exit if trial point does not move from initial point */ +#ifdef DEBUG + printf ("fast exit x == x1 for stepb = %g\n", stepb); +#endif + *step = 0; + *f = fa; + GSL_MULTIMIN_FN_EVAL_DF(fdf, x1, gradient); + return ; + } + + fb = GSL_MULTIMIN_FN_EVAL_F (fdf, x1); + +#ifdef DEBUG + printf ("trying stepb = %g fb = %.18e\n", stepb, fb); +#endif + + if (fb >= fa && stepb > 0.0) + { + /* downhill step failed, reduce step-size and try again */ + fc = fb; + stepc = stepb; + goto trial; + } +#ifdef DEBUG + printf ("ok!\n"); +#endif + + *step = stepb; + *f = fb; + GSL_MULTIMIN_FN_EVAL_DF(fdf, x1, gradient); +} + +static void +minimize (gsl_multimin_function_fdf * fdf, + const gsl_vector * x, const gsl_vector * p, + double lambda, + double stepa, double stepb, double stepc, + double fa, double fb, double fc, double tol, + gsl_vector * x1, gsl_vector * dx1, + gsl_vector * x2, gsl_vector * dx2, gsl_vector * gradient, + double * step, double * f, double * gnorm) +{ + /* Starting at (x0, f0) move along the direction p to find a minimum + f(x0 - lambda * p), returning the new point x1 = x0-lambda*p, + f1=f(x1) and g1 = grad(f) at x1. */ + + double u = stepb; + double v = stepa; + double w = stepc; + double fu = fb; + double fv = fa; + double fw = fc; + + double old2 = fabs(w - v); + double old1 = fabs(v - u); + + double stepm, fm, pg, gnorm1; + + int iter = 0; + + gsl_vector_memcpy (x2, x1); + gsl_vector_memcpy (dx2, dx1); + + *f = fb; + *step = stepb; + *gnorm = gsl_blas_dnrm2 (gradient); + +mid_trial: + + iter++; + + if (iter > 10) + { + return; /* MAX ITERATIONS */ + } + + { + double dw = w - u; + double dv = v - u; + double du = 0.0; + + double e1 = ((fv - fu) * dw * dw + (fu - fw) * dv * dv); + double e2 = 2.0 * ((fv - fu) * dw + (fu - fw) * dv); + + if (e2 != 0.0) + { + du = e1 / e2; + } + + if (du > 0.0 && du < (stepc - stepb) && fabs(du) < 0.5 * old2) + { + stepm = u + du; + } + else if (du < 0.0 && du > (stepa - stepb) && fabs(du) < 0.5 * old2) + { + stepm = u + du; + } + else if ((stepc - stepb) > (stepb - stepa)) + { + stepm = 0.38 * (stepc - stepb) + stepb; + } + else + { + stepm = stepb - 0.38 * (stepb - stepa); + } + } + + take_step (x, p, stepm, lambda, x1, dx1); + + fm = GSL_MULTIMIN_FN_EVAL_F (fdf, x1); + +#ifdef DEBUG + printf ("trying stepm = %g fm = %.18e\n", stepm, fm); +#endif + + if (fm > fb) + { + if (fm < fv) + { + w = v; + v = stepm; + fw = fv; + fv = fm; + } + else if (fm < fw) + { + w = stepm; + fw = fm; + } + + if (stepm < stepb) + { + stepa = stepm; + fa = fm; + } + else + { + stepc = stepm; + fc = fm; + } + goto mid_trial; + } + else if (fm <= fb) + { + old2 = old1; + old1 = fabs(u - stepm); + w = v; + v = u; + u = stepm; + fw = fv; + fv = fu; + fu = fm; + + gsl_vector_memcpy (x2, x1); + gsl_vector_memcpy (dx2, dx1); + + GSL_MULTIMIN_FN_EVAL_DF (fdf, x1, gradient); + gsl_blas_ddot (p, gradient, &pg); + gnorm1 = gsl_blas_dnrm2 (gradient); + +#ifdef DEBUG + printf ("p: "); gsl_vector_fprintf(stdout, p, "%g"); + printf ("g: "); gsl_vector_fprintf(stdout, gradient, "%g"); + printf ("gnorm: %.18e\n", gnorm1); + printf ("pg: %.18e\n", pg); + printf ("orth: %g\n", fabs (pg * lambda/ gnorm1)); +#endif + *f = fm; + *step = stepm; + *gnorm = gnorm1; + + if (fabs (pg * lambda / gnorm1) < tol) + { +#ifdef DEBUG + printf("ok!\n"); +#endif + return; /* SUCCESS */ + } + + if (stepm < stepb) + { + stepc = stepb; + fc = fb; + stepb = stepm; + fb = fm; + } + else + { + stepa = stepb; + fa = fb; + stepb = stepm; + fb = fm; + } + goto mid_trial; + } +} diff --git a/gsl-2.5/multimin/fdfminimizer.c b/gsl-2.5/multimin/fdfminimizer.c new file mode 100644 index 00000000..7ebb8f4b --- /dev/null +++ b/gsl-2.5/multimin/fdfminimizer.c @@ -0,0 +1,174 @@ +/* multimin/fdfminimizer.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Fabrice Rossi + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include + +gsl_multimin_fdfminimizer * +gsl_multimin_fdfminimizer_alloc (const gsl_multimin_fdfminimizer_type * T, + size_t n) +{ + int status; + + gsl_multimin_fdfminimizer *s = + (gsl_multimin_fdfminimizer *) malloc (sizeof (gsl_multimin_fdfminimizer)); + + if (s == 0) + { + GSL_ERROR_VAL ("failed to allocate space for minimizer struct", + GSL_ENOMEM, 0); + } + + s->type = T; + + s->x = gsl_vector_calloc (n); + + if (s->x == 0) + { + free (s); + GSL_ERROR_VAL ("failed to allocate space for x", GSL_ENOMEM, 0); + } + + s->gradient = gsl_vector_calloc (n); + + if (s->gradient == 0) + { + gsl_vector_free (s->x); + free (s); + GSL_ERROR_VAL ("failed to allocate space for gradient", GSL_ENOMEM, 0); + } + + s->dx = gsl_vector_calloc (n); + + if (s->dx == 0) + { + gsl_vector_free (s->x); + gsl_vector_free (s->gradient); + free (s); + GSL_ERROR_VAL ("failed to allocate space for dx", GSL_ENOMEM, 0); + } + + s->state = malloc (T->size); + + if (s->state == 0) + { + gsl_vector_free (s->x); + gsl_vector_free (s->gradient); + gsl_vector_free (s->dx); + free (s); + GSL_ERROR_VAL ("failed to allocate space for minimizer state", + GSL_ENOMEM, 0); + } + + status = (T->alloc) (s->state, n); + + if (status != GSL_SUCCESS) + { + free (s->state); + gsl_vector_free (s->x); + gsl_vector_free (s->gradient); + gsl_vector_free (s->dx); + free (s); + + GSL_ERROR_VAL ("failed to initialize minimizer state", GSL_ENOMEM, 0); + } + + return s; +} + +int +gsl_multimin_fdfminimizer_set (gsl_multimin_fdfminimizer * s, + gsl_multimin_function_fdf * fdf, + const gsl_vector * x, + double step_size, double tol) +{ + if (s->x->size != fdf->n) + { + GSL_ERROR ("function incompatible with solver size", GSL_EBADLEN); + } + + if (x->size != fdf->n) + { + GSL_ERROR ("vector length not compatible with function", GSL_EBADLEN); + } + + s->fdf = fdf; + + gsl_vector_memcpy (s->x,x); + gsl_vector_set_zero (s->dx); + + return (s->type->set) (s->state, s->fdf, s->x, &(s->f), s->gradient, step_size, tol); +} + +void +gsl_multimin_fdfminimizer_free (gsl_multimin_fdfminimizer * s) +{ + RETURN_IF_NULL (s); + (s->type->free) (s->state); + free (s->state); + gsl_vector_free (s->dx); + gsl_vector_free (s->gradient); + gsl_vector_free (s->x); + free (s); +} + +int +gsl_multimin_fdfminimizer_iterate (gsl_multimin_fdfminimizer * s) +{ + return (s->type->iterate) (s->state, s->fdf, s->x, &(s->f), s->gradient, s->dx); +} + +int +gsl_multimin_fdfminimizer_restart (gsl_multimin_fdfminimizer * s) +{ + return (s->type->restart) (s->state); +} + +const char * +gsl_multimin_fdfminimizer_name (const gsl_multimin_fdfminimizer * s) +{ + return s->type->name; +} + + +gsl_vector * +gsl_multimin_fdfminimizer_x (const gsl_multimin_fdfminimizer * s) +{ + return s->x; +} + +gsl_vector * +gsl_multimin_fdfminimizer_dx (const gsl_multimin_fdfminimizer * s) +{ + return s->dx; +} + +gsl_vector * +gsl_multimin_fdfminimizer_gradient (const gsl_multimin_fdfminimizer * s) +{ + return s->gradient; +} + +double +gsl_multimin_fdfminimizer_minimum (const gsl_multimin_fdfminimizer * s) +{ + return s->f; +} + diff --git a/gsl-2.5/multimin/fdfminimizer.lo b/gsl-2.5/multimin/fdfminimizer.lo new file mode 100644 index 00000000..e144e5d4 --- /dev/null +++ b/gsl-2.5/multimin/fdfminimizer.lo @@ -0,0 +1,12 @@ +# fdfminimizer.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/fdfminimizer.o' + +# Name of the non-PIC object +non_pic_object='fdfminimizer.o' + diff --git a/gsl-2.5/multimin/fminimizer.c b/gsl-2.5/multimin/fminimizer.c new file mode 100644 index 00000000..676083c4 --- /dev/null +++ b/gsl-2.5/multimin/fminimizer.c @@ -0,0 +1,135 @@ +/* multimin/fminimizer.c + * + * Copyright (C) 2002, 2009 Tuomo Keskitalo, Ivo Alxneit + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include + +gsl_multimin_fminimizer * +gsl_multimin_fminimizer_alloc (const gsl_multimin_fminimizer_type * T, + size_t n) +{ + int status; + + gsl_multimin_fminimizer *s = + (gsl_multimin_fminimizer *) malloc (sizeof (gsl_multimin_fminimizer)); + + if (s == 0) + { + GSL_ERROR_VAL ("failed to allocate space for minimizer struct", + GSL_ENOMEM, 0); + } + + s->type = T; + + s->x = gsl_vector_calloc (n); + + if (s->x == 0) + { + free (s); + GSL_ERROR_VAL ("failed to allocate space for x", GSL_ENOMEM, 0); + } + + s->state = malloc (T->size); + + if (s->state == 0) + { + gsl_vector_free (s->x); + free (s); + GSL_ERROR_VAL ("failed to allocate space for minimizer state", + GSL_ENOMEM, 0); + } + + status = (T->alloc) (s->state, n); + + if (status != GSL_SUCCESS) + { + free (s->state); + gsl_vector_free (s->x); + free (s); + + GSL_ERROR_VAL ("failed to initialize minimizer state", GSL_ENOMEM, 0); + } + + return s; +} + +int +gsl_multimin_fminimizer_set (gsl_multimin_fminimizer * s, + gsl_multimin_function * f, + const gsl_vector * x, + const gsl_vector * step_size) +{ + if (s->x->size != f->n) + { + GSL_ERROR ("function incompatible with solver size", GSL_EBADLEN); + } + + if (x->size != f->n || step_size->size != f->n) + { + GSL_ERROR ("vector length not compatible with function", GSL_EBADLEN); + } + + s->f = f; + + gsl_vector_memcpy (s->x,x); + + return (s->type->set) (s->state, s->f, s->x, &(s->size), step_size); +} + +void +gsl_multimin_fminimizer_free (gsl_multimin_fminimizer * s) +{ + RETURN_IF_NULL (s); + (s->type->free) (s->state); + free (s->state); + gsl_vector_free (s->x); + free (s); +} + +int +gsl_multimin_fminimizer_iterate (gsl_multimin_fminimizer * s) +{ + return (s->type->iterate) (s->state, s->f, s->x, &(s->size), &(s->fval)); +} + +const char * +gsl_multimin_fminimizer_name (const gsl_multimin_fminimizer * s) +{ + return s->type->name; +} + + +gsl_vector * +gsl_multimin_fminimizer_x (const gsl_multimin_fminimizer * s) +{ + return s->x; +} + +double +gsl_multimin_fminimizer_minimum (const gsl_multimin_fminimizer * s) +{ + return s->fval; +} + +double +gsl_multimin_fminimizer_size (const gsl_multimin_fminimizer * s) +{ + return s->size; +} diff --git a/gsl-2.5/multimin/fminimizer.lo b/gsl-2.5/multimin/fminimizer.lo new file mode 100644 index 00000000..161e1f6b --- /dev/null +++ b/gsl-2.5/multimin/fminimizer.lo @@ -0,0 +1,12 @@ +# fminimizer.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/fminimizer.o' + +# Name of the non-PIC object +non_pic_object='fminimizer.o' + diff --git a/gsl-2.5/multimin/gsl_multimin.h b/gsl-2.5/multimin/gsl_multimin.h new file mode 100644 index 00000000..28702272 --- /dev/null +++ b/gsl-2.5/multimin/gsl_multimin.h @@ -0,0 +1,226 @@ +/* multimin/gsl_multimin.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Fabrice Rossi + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Modified by Tuomo Keskitalo to include fminimizer and + Nelder Mead related lines */ + +#ifndef __GSL_MULTIMIN_H__ +#define __GSL_MULTIMIN_H__ + +#include +#include +#include +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +/* Definition of an arbitrary real-valued function with gsl_vector input and */ +/* parameters */ +struct gsl_multimin_function_struct +{ + double (* f) (const gsl_vector * x, void * params); + size_t n; + void * params; +}; + +typedef struct gsl_multimin_function_struct gsl_multimin_function; + +#define GSL_MULTIMIN_FN_EVAL(F,x) (*((F)->f))(x,(F)->params) + +/* Definition of an arbitrary differentiable real-valued function */ +/* with gsl_vector input and parameters */ +struct gsl_multimin_function_fdf_struct +{ + double (* f) (const gsl_vector * x, void * params); + void (* df) (const gsl_vector * x, void * params,gsl_vector * df); + void (* fdf) (const gsl_vector * x, void * params,double *f,gsl_vector * df); + size_t n; + void * params; +}; + +typedef struct gsl_multimin_function_fdf_struct gsl_multimin_function_fdf; + +#define GSL_MULTIMIN_FN_EVAL_F(F,x) (*((F)->f))(x,(F)->params) +#define GSL_MULTIMIN_FN_EVAL_DF(F,x,g) (*((F)->df))(x,(F)->params,(g)) +#define GSL_MULTIMIN_FN_EVAL_F_DF(F,x,y,g) (*((F)->fdf))(x,(F)->params,(y),(g)) + +int gsl_multimin_diff (const gsl_multimin_function * f, + const gsl_vector * x, gsl_vector * g); + +/* minimization of non-differentiable functions */ + +typedef struct +{ + const char *name; + size_t size; + int (*alloc) (void *state, size_t n); + int (*set) (void *state, gsl_multimin_function * f, + const gsl_vector * x, + double * size, + const gsl_vector * step_size); + int (*iterate) (void *state, gsl_multimin_function * f, + gsl_vector * x, + double * size, + double * fval); + void (*free) (void *state); +} +gsl_multimin_fminimizer_type; + +typedef struct +{ + /* multi dimensional part */ + const gsl_multimin_fminimizer_type *type; + gsl_multimin_function *f; + + double fval; + gsl_vector * x; + + double size; + + void *state; +} +gsl_multimin_fminimizer; + +gsl_multimin_fminimizer * +gsl_multimin_fminimizer_alloc(const gsl_multimin_fminimizer_type *T, + size_t n); + +int +gsl_multimin_fminimizer_set (gsl_multimin_fminimizer * s, + gsl_multimin_function * f, + const gsl_vector * x, + const gsl_vector * step_size); + +void +gsl_multimin_fminimizer_free(gsl_multimin_fminimizer *s); + +const char * +gsl_multimin_fminimizer_name (const gsl_multimin_fminimizer * s); + +int +gsl_multimin_fminimizer_iterate(gsl_multimin_fminimizer *s); + +gsl_vector * +gsl_multimin_fminimizer_x (const gsl_multimin_fminimizer * s); + +double +gsl_multimin_fminimizer_minimum (const gsl_multimin_fminimizer * s); + +double +gsl_multimin_fminimizer_size (const gsl_multimin_fminimizer * s); + +/* Convergence test functions */ + +int +gsl_multimin_test_gradient(const gsl_vector * g, double epsabs); + +int +gsl_multimin_test_size(const double size, double epsabs); + +/* minimisation of differentiable functions */ + +typedef struct +{ + const char *name; + size_t size; + int (*alloc) (void *state, size_t n); + int (*set) (void *state, gsl_multimin_function_fdf * fdf, + const gsl_vector * x, double * f, + gsl_vector * gradient, double step_size, double tol); + int (*iterate) (void *state,gsl_multimin_function_fdf * fdf, + gsl_vector * x, double * f, + gsl_vector * gradient, gsl_vector * dx); + int (*restart) (void *state); + void (*free) (void *state); +} +gsl_multimin_fdfminimizer_type; + +typedef struct +{ + /* multi dimensional part */ + const gsl_multimin_fdfminimizer_type *type; + gsl_multimin_function_fdf *fdf; + + double f; + gsl_vector * x; + gsl_vector * gradient; + gsl_vector * dx; + + void *state; +} +gsl_multimin_fdfminimizer; + +gsl_multimin_fdfminimizer * +gsl_multimin_fdfminimizer_alloc(const gsl_multimin_fdfminimizer_type *T, + size_t n); + +int +gsl_multimin_fdfminimizer_set (gsl_multimin_fdfminimizer * s, + gsl_multimin_function_fdf *fdf, + const gsl_vector * x, + double step_size, double tol); + +void +gsl_multimin_fdfminimizer_free(gsl_multimin_fdfminimizer *s); + +const char * +gsl_multimin_fdfminimizer_name (const gsl_multimin_fdfminimizer * s); + +int +gsl_multimin_fdfminimizer_iterate(gsl_multimin_fdfminimizer *s); + +int +gsl_multimin_fdfminimizer_restart(gsl_multimin_fdfminimizer *s); + +gsl_vector * +gsl_multimin_fdfminimizer_x (const gsl_multimin_fdfminimizer * s); + +gsl_vector * +gsl_multimin_fdfminimizer_dx (const gsl_multimin_fdfminimizer * s); + +gsl_vector * +gsl_multimin_fdfminimizer_gradient (const gsl_multimin_fdfminimizer * s); + +double +gsl_multimin_fdfminimizer_minimum (const gsl_multimin_fdfminimizer * s); + +GSL_VAR const gsl_multimin_fdfminimizer_type *gsl_multimin_fdfminimizer_steepest_descent; +GSL_VAR const gsl_multimin_fdfminimizer_type *gsl_multimin_fdfminimizer_conjugate_pr; +GSL_VAR const gsl_multimin_fdfminimizer_type *gsl_multimin_fdfminimizer_conjugate_fr; +GSL_VAR const gsl_multimin_fdfminimizer_type *gsl_multimin_fdfminimizer_vector_bfgs; +GSL_VAR const gsl_multimin_fdfminimizer_type *gsl_multimin_fdfminimizer_vector_bfgs2; +GSL_VAR const gsl_multimin_fminimizer_type *gsl_multimin_fminimizer_nmsimplex; +GSL_VAR const gsl_multimin_fminimizer_type *gsl_multimin_fminimizer_nmsimplex2; +GSL_VAR const gsl_multimin_fminimizer_type *gsl_multimin_fminimizer_nmsimplex2rand; + +__END_DECLS + +#endif /* __GSL_MULTIMIN_H__ */ diff --git a/gsl-2.5/multimin/libgslmultimin.la b/gsl-2.5/multimin/libgslmultimin.la new file mode 100644 index 00000000..993ad2ca --- /dev/null +++ b/gsl-2.5/multimin/libgslmultimin.la @@ -0,0 +1,41 @@ +# libgslmultimin.la - a libtool library file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='' + +# Names of this library. +library_names='' + +# The name of the static archive. +old_library='libgslmultimin.a' + +# Linker flags that can not go in dependency_libs. +inherited_linker_flags='' + +# Libraries that this one depends upon. +dependency_libs=' -lm' + +# Names of additional weak libraries provided by this library +weak_library_names='' + +# Version information for libgslmultimin. +current= +age= +revision= + +# Is this an already installed library? +installed=no + +# Should we warn about portability when linking against -modules? +shouldnotlink=no + +# Files to dlopen/dlpreopen +dlopen='' +dlpreopen='' + +# Directory that this library needs to be installed in: +libdir='' diff --git a/gsl-2.5/multimin/linear_minimize.c b/gsl-2.5/multimin/linear_minimize.c new file mode 100644 index 00000000..60677d63 --- /dev/null +++ b/gsl-2.5/multimin/linear_minimize.c @@ -0,0 +1,247 @@ +#include +#include +#include + +/* Find a minimum in x=[0,1] of the interpolating quadratic through + * (0,f0) (1,f1) with derivative fp0 at x=0. The interpolating + * polynomial is q(x) = f0 + fp0 * z + (f1-f0-fp0) * z^2 + */ + +static double +interp_quad (double f0, double fp0, double f1, double zl, double zh) +{ + double fl = f0 + zl*(fp0 + zl*(f1 - f0 -fp0)); + double fh = f0 + zh*(fp0 + zh*(f1 - f0 -fp0)); + double c = 2 * (f1 - f0 - fp0); /* curvature */ + + double zmin = zl, fmin = fl; + + if (fh < fmin) { zmin = zh; fmin = fh; } + + if (c > 0) /* positive curvature required for a minimum */ + { + double z = -fp0 / c; /* location of minimum */ + if (z > zl && z < zh) { + double f = f0 + z*(fp0 + z*(f1 - f0 -fp0)); + if (f < fmin) { zmin = z; fmin = f; }; + } + } + + return zmin; +} + +/* Find a minimum in x=[0,1] of the interpolating cubic through + * (0,f0) (1,f1) with derivatives fp0 at x=0 and fp1 at x=1. + * + * The interpolating polynomial is: + * + * c(x) = f0 + fp0 * z + eta * z^2 + xi * z^3 + * + * where eta=3*(f1-f0)-2*fp0-fp1, xi=fp0+fp1-2*(f1-f0). + */ + +static double +cubic (double c0, double c1, double c2, double c3, double z) +{ + return c0 + z * (c1 + z * (c2 + z * c3)); +} + +static void +check_extremum (double c0, double c1, double c2, double c3, double z, + double *zmin, double *fmin) +{ + /* could make an early return by testing curvature >0 for minimum */ + + double y = cubic (c0, c1, c2, c3, z); + + if (y < *fmin) + { + *zmin = z; /* accepted new point*/ + *fmin = y; + } +} + +static double +interp_cubic (double f0, double fp0, double f1, double fp1, double zl, double zh) +{ + double eta = 3 * (f1 - f0) - 2 * fp0 - fp1; + double xi = fp0 + fp1 - 2 * (f1 - f0); + double c0 = f0, c1 = fp0, c2 = eta, c3 = xi; + double zmin, fmin; + double z0, z1; + + zmin = zl; fmin = cubic(c0, c1, c2, c3, zl); + check_extremum (c0, c1, c2, c3, zh, &zmin, &fmin); + + { + int n = gsl_poly_solve_quadratic (3 * c3, 2 * c2, c1, &z0, &z1); + + if (n == 2) /* found 2 roots */ + { + if (z0 > zl && z0 < zh) + check_extremum (c0, c1, c2, c3, z0, &zmin, &fmin); + if (z1 > zl && z1 < zh) + check_extremum (c0, c1, c2, c3, z1, &zmin, &fmin); + } + else if (n == 1) /* found 1 root */ + { + if (z0 > zl && z0 < zh) + check_extremum (c0, c1, c2, c3, z0, &zmin, &fmin); + } + } + + return zmin; +} + + +static double +interpolate (double a, double fa, double fpa, + double b, double fb, double fpb, double xmin, double xmax, + int order) +{ + /* Map [a,b] to [0,1] */ + double z, alpha, zmin, zmax; + + zmin = (xmin - a) / (b - a); + zmax = (xmax - a) / (b - a); + + if (zmin > zmax) + { + double tmp = zmin; + zmin = zmax; + zmax = tmp; + }; + + if (order > 2 && GSL_IS_REAL(fpb)) { + z = interp_cubic (fa, fpa * (b - a), fb, fpb * (b - a), zmin, zmax); + } else { + z = interp_quad (fa, fpa * (b - a), fb, zmin, zmax); + } + + alpha = a + z * (b - a); + + return alpha; +} + +/* recommended values from Fletcher are + rho = 0.01, sigma = 0.1, tau1 = 9, tau2 = 0.05, tau3 = 0.5 */ + +static int +minimize (gsl_function_fdf * fn, double rho, double sigma, + double tau1, double tau2, double tau3, + int order, double alpha1, double *alpha_new) +{ + double f0, fp0, falpha, falpha_prev, fpalpha, fpalpha_prev, delta, + alpha_next; + double alpha = alpha1, alpha_prev = 0.0; + double a, b, fa, fb, fpa, fpb; + const size_t bracket_iters = 100, section_iters = 100; + size_t i = 0; + + GSL_FN_FDF_EVAL_F_DF (fn, 0.0, &f0, &fp0); + falpha_prev = f0; + fpalpha_prev = fp0; + + /* Avoid uninitialized variables morning */ + a = 0.0; b = alpha; + fa = f0; fb = 0.0; + fpa = fp0; fpb = 0.0; + + /* Begin bracketing */ + + while (i++ < bracket_iters) + { + falpha = GSL_FN_FDF_EVAL_F (fn, alpha); + + /* Fletcher's rho test */ + + if (falpha > f0 + alpha * rho * fp0 || falpha >= falpha_prev) + { + a = alpha_prev; fa = falpha_prev; fpa = fpalpha_prev; + b = alpha; fb = falpha; fpb = GSL_NAN; + break; /* goto sectioning */ + } + + fpalpha = GSL_FN_FDF_EVAL_DF (fn, alpha); + + /* Fletcher's sigma test */ + + if (fabs (fpalpha) <= -sigma * fp0) + { + *alpha_new = alpha; + return GSL_SUCCESS; + } + + if (fpalpha >= 0) + { + a = alpha; fa = falpha; fpa = fpalpha; + b = alpha_prev; fb = falpha_prev; fpb = fpalpha_prev; + break; /* goto sectioning */ + } + + delta = alpha - alpha_prev; + + { + double lower = alpha + delta; + double upper = alpha + tau1 * delta; + + alpha_next = interpolate (alpha_prev, falpha_prev, fpalpha_prev, + alpha, falpha, fpalpha, lower, upper, order); + + } + + alpha_prev = alpha; + falpha_prev = falpha; + fpalpha_prev = fpalpha; + alpha = alpha_next; + } + + /* Sectioning of bracket [a,b] */ + + while (i++ < section_iters) + { + delta = b - a; + + { + double lower = a + tau2 * delta; + double upper = b - tau3 * delta; + + alpha = interpolate (a, fa, fpa, b, fb, fpb, lower, upper, order); + } + + falpha = GSL_FN_FDF_EVAL_F (fn, alpha); + + if ((a-alpha)*fpa <= GSL_DBL_EPSILON) { + /* roundoff prevents progress */ + return GSL_ENOPROG; + }; + + if (falpha > f0 + rho * alpha * fp0 || falpha >= fa) + { + /* a_next = a; */ + b = alpha; fb = falpha; fpb = GSL_NAN; + } + else + { + fpalpha = GSL_FN_FDF_EVAL_DF (fn, alpha); + + if (fabs(fpalpha) <= -sigma * fp0) + { + *alpha_new = alpha; + return GSL_SUCCESS; /* terminate */ + } + + if ( ((b-a) >= 0 && fpalpha >= 0) || ((b-a) <=0 && fpalpha <= 0)) + { + b = a; fb = fa; fpb = fpa; + a = alpha; fa = falpha; fpa = fpalpha; + } + else + { + a = alpha; fa = falpha; fpa = fpalpha; + } + } + } + + return GSL_SUCCESS; +} diff --git a/gsl-2.5/multimin/linear_wrapper.c b/gsl-2.5/multimin/linear_wrapper.c new file mode 100644 index 00000000..b284da9d --- /dev/null +++ b/gsl-2.5/multimin/linear_wrapper.c @@ -0,0 +1,185 @@ +typedef struct +{ + gsl_function_fdf fdf_linear; + gsl_multimin_function_fdf *fdf; + /* fixed values */ + const gsl_vector *x; + const gsl_vector *g; + const gsl_vector *p; + + /* cached values, for x(alpha) = x + alpha * p */ + double f_alpha; + double df_alpha; + gsl_vector *x_alpha; + gsl_vector *g_alpha; + + /* cache "keys" */ + double f_cache_key; + double df_cache_key; + double x_cache_key; + double g_cache_key; +} +wrapper_t; + +static void +moveto (double alpha, wrapper_t * w) +{ + if (alpha == w->x_cache_key) /* using previously cached position */ + { + return; + } + + /* set x_alpha = x + alpha * p */ + + gsl_vector_memcpy (w->x_alpha, w->x); + gsl_blas_daxpy (alpha, w->p, w->x_alpha); + + w->x_cache_key = alpha; +} + +static double +slope (wrapper_t * w) /* compute gradient . direction */ +{ + double df; + gsl_blas_ddot (w->g_alpha, w->p, &df); + return df; +} + +static double +wrap_f (double alpha, void *params) +{ + wrapper_t *w = (wrapper_t *) params; + if (alpha == w->f_cache_key) /* using previously cached f(alpha) */ + { + return w->f_alpha; + } + + moveto (alpha, w); + + w->f_alpha = GSL_MULTIMIN_FN_EVAL_F (w->fdf, w->x_alpha); + w->f_cache_key = alpha; + + return w->f_alpha; +} + +static double +wrap_df (double alpha, void *params) +{ + wrapper_t *w = (wrapper_t *) params; + if (alpha == w->df_cache_key) /* using previously cached df(alpha) */ + { + return w->df_alpha; + } + + moveto (alpha, w); + + if (alpha != w->g_cache_key) + { + GSL_MULTIMIN_FN_EVAL_DF (w->fdf, w->x_alpha, w->g_alpha); + w->g_cache_key = alpha; + } + + w->df_alpha = slope (w); + w->df_cache_key = alpha; + + return w->df_alpha; +} + +static void +wrap_fdf (double alpha, void *params, double *f, double *df) +{ + wrapper_t *w = (wrapper_t *) params; + + /* Check for previously cached values */ + + if (alpha == w->f_cache_key && alpha == w->df_cache_key) + { + *f = w->f_alpha; + *df = w->df_alpha; + return; + } + + if (alpha == w->f_cache_key || alpha == w->df_cache_key) + { + *f = wrap_f (alpha, params); + *df = wrap_df (alpha, params); + return; + } + + moveto (alpha, w); + GSL_MULTIMIN_FN_EVAL_F_DF (w->fdf, w->x_alpha, &w->f_alpha, w->g_alpha); + w->f_cache_key = alpha; + w->g_cache_key = alpha; + + w->df_alpha = slope (w); + w->df_cache_key = alpha; + + *f = w->f_alpha; + *df = w->df_alpha; +} + +static void +prepare_wrapper (wrapper_t * w, gsl_multimin_function_fdf * fdf, + const gsl_vector * x, double f, const gsl_vector *g, + const gsl_vector * p, + gsl_vector * x_alpha, gsl_vector *g_alpha) +{ + w->fdf_linear.f = &wrap_f; + w->fdf_linear.df = &wrap_df; + w->fdf_linear.fdf = &wrap_fdf; + w->fdf_linear.params = (void *)w; /* pointer to "self" */ + + w->fdf = fdf; + + w->x = x; + w->g = g; + w->p = p; + + w->x_alpha = x_alpha; + w->g_alpha = g_alpha; + + gsl_vector_memcpy(w->x_alpha, w->x); + w->x_cache_key = 0.0; + + w->f_alpha = f; + w->f_cache_key = 0.0; + + gsl_vector_memcpy(w->g_alpha, w->g); + w->g_cache_key = 0.0; + + w->df_alpha = slope(w); + w->df_cache_key = 0.0; +} + +static void +update_position (wrapper_t * w, double alpha, gsl_vector *x, double *f, gsl_vector *g) +{ + /* ensure that everything is fully cached */ + { double f_alpha, df_alpha; wrap_fdf (alpha, w, &f_alpha, &df_alpha); } ; + + *f = w->f_alpha; + gsl_vector_memcpy(x, w->x_alpha); + gsl_vector_memcpy(g, w->g_alpha); +} + +static void +change_direction (wrapper_t * w) +{ + /* Convert the cache values from the end of the current minimisation + to those needed for the start of the next minimisation, alpha=0 */ + + /* The new x_alpha for alpha=0 is the current position */ + gsl_vector_memcpy (w->x_alpha, w->x); + w->x_cache_key = 0.0; + + /* The function value does not change */ + w->f_cache_key = 0.0; + + /* The new g_alpha for alpha=0 is the current gradient at the endpoint */ + gsl_vector_memcpy (w->g_alpha, w->g); + w->g_cache_key = 0.0; + + /* Calculate the slope along the new direction vector, p */ + w->df_alpha = slope (w); + w->df_cache_key = 0.0; +} diff --git a/gsl-2.5/multimin/simplex.c b/gsl-2.5/multimin/simplex.c new file mode 100644 index 00000000..0d05b1b6 --- /dev/null +++ b/gsl-2.5/multimin/simplex.c @@ -0,0 +1,467 @@ +/* multimin/simplex.c + * + * Copyright (C) 2007 Brian Gough + * Copyright (C) 2002 Tuomo Keskitalo, Ivo Alxneit + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* + - Originally written by Tuomo Keskitalo + - Corrections to nmsimplex_iterate and other functions + by Ivo Alxneit + - Additional help by Brian Gough +*/ + +/* The Simplex method of Nelder and Mead, + also known as the polytope search alogorithm. Ref: + Nelder, J.A., Mead, R., Computer Journal 7 (1965) pp. 308-313. + + This implementation uses n+1 corner points in the simplex. +*/ + +#include +#include +#include +#include + +typedef struct +{ + gsl_matrix *x1; /* simplex corner points */ + gsl_vector *y1; /* function value at corner points */ + gsl_vector *ws1; /* workspace 1 for algorithm */ + gsl_vector *ws2; /* workspace 2 for algorithm */ +} +nmsimplex_state_t; + +static double +nmsimplex_move_corner (const double coeff, const nmsimplex_state_t * state, + size_t corner, gsl_vector * xc, + const gsl_multimin_function * f) +{ + /* moves a simplex corner scaled by coeff (negative value represents + mirroring by the middle point of the "other" corner points) + and gives new corner in xc and function value at xc as a + return value + */ + + gsl_matrix *x1 = state->x1; + + size_t i, j; + double newval, mp; + + for (j = 0; j < x1->size2; j++) + { + mp = 0.0; + for (i = 0; i < x1->size1; i++) + { + if (i != corner) + { + mp += (gsl_matrix_get (x1, i, j)); + } + } + mp /= (double) (x1->size1 - 1); + newval = mp - coeff * (mp - gsl_matrix_get (x1, corner, j)); + gsl_vector_set (xc, j, newval); + } + + newval = GSL_MULTIMIN_FN_EVAL (f, xc); + + return newval; +} + +static int +nmsimplex_contract_by_best (nmsimplex_state_t * state, size_t best, + gsl_vector * xc, gsl_multimin_function * f) +{ + + /* Function contracts the simplex in respect to + best valued corner. That is, all corners besides the + best corner are moved. */ + + /* the xc vector is simply work space here */ + + gsl_matrix *x1 = state->x1; + gsl_vector *y1 = state->y1; + + size_t i, j; + double newval; + + int status = GSL_SUCCESS; + + for (i = 0; i < x1->size1; i++) + { + if (i != best) + { + for (j = 0; j < x1->size2; j++) + { + newval = 0.5 * (gsl_matrix_get (x1, i, j) + + gsl_matrix_get (x1, best, j)); + gsl_matrix_set (x1, i, j, newval); + } + + /* evaluate function in the new point */ + + gsl_matrix_get_row (xc, x1, i); + newval = GSL_MULTIMIN_FN_EVAL (f, xc); + gsl_vector_set (y1, i, newval); + + /* notify caller that we found at least one bad function value. + we finish the contraction (and do not abort) to allow the user + to handle the situation */ + + if(!gsl_finite(newval)) + { + status = GSL_EBADFUNC; + } + } + } + + return status; +} + +static int +nmsimplex_calc_center (const nmsimplex_state_t * state, gsl_vector * mp) +{ + /* calculates the center of the simplex to mp */ + + gsl_matrix *x1 = state->x1; + + size_t i, j; + double val; + + for (j = 0; j < x1->size2; j++) + { + val = 0.0; + for (i = 0; i < x1->size1; i++) + { + val += gsl_matrix_get (x1, i, j); + } + val /= x1->size1; + gsl_vector_set (mp, j, val); + } + + return GSL_SUCCESS; +} + +static double +nmsimplex_size (nmsimplex_state_t * state) +{ + /* calculates simplex size as average sum of length of vectors + from simplex center to corner points: + + ( sum ( || y - y_middlepoint || ) ) / n + */ + + gsl_vector *s = state->ws1; + gsl_vector *mp = state->ws2; + + gsl_matrix *x1 = state->x1; + size_t i; + + double ss = 0.0; + + /* Calculate middle point */ + nmsimplex_calc_center (state, mp); + + for (i = 0; i < x1->size1; i++) + { + gsl_matrix_get_row (s, x1, i); + gsl_blas_daxpy (-1.0, mp, s); + ss += gsl_blas_dnrm2 (s); + } + + return ss / (double) (x1->size1); +} + +static int +nmsimplex_alloc (void *vstate, size_t n) +{ + nmsimplex_state_t *state = (nmsimplex_state_t *) vstate; + + if (n == 0) + { + GSL_ERROR("invalid number of parameters specified", GSL_EINVAL); + } + + state->x1 = gsl_matrix_alloc (n + 1, n); + + if (state->x1 == NULL) + { + GSL_ERROR ("failed to allocate space for x1", GSL_ENOMEM); + } + + state->y1 = gsl_vector_alloc (n + 1); + + if (state->y1 == NULL) + { + gsl_matrix_free(state->x1); + GSL_ERROR ("failed to allocate space for y", GSL_ENOMEM); + } + + state->ws1 = gsl_vector_alloc (n); + + if (state->ws1 == NULL) + { + gsl_matrix_free(state->x1); + gsl_vector_free(state->y1); + GSL_ERROR ("failed to allocate space for ws1", GSL_ENOMEM); + } + + state->ws2 = gsl_vector_alloc (n); + + if (state->ws2 == NULL) + { + gsl_matrix_free(state->x1); + gsl_vector_free(state->y1); + gsl_vector_free(state->ws1); + GSL_ERROR ("failed to allocate space for ws2", GSL_ENOMEM); + } + + return GSL_SUCCESS; +} + +static int +nmsimplex_set (void *vstate, gsl_multimin_function * f, + const gsl_vector * x, + double *size, const gsl_vector * step_size) +{ + int status; + size_t i; + double val; + + nmsimplex_state_t *state = (nmsimplex_state_t *) vstate; + + gsl_vector *xtemp = state->ws1; + + if (xtemp->size != x->size) + { + GSL_ERROR("incompatible size of x", GSL_EINVAL); + } + + if (xtemp->size != step_size->size) + { + GSL_ERROR("incompatible size of step_size", GSL_EINVAL); + } + + /* first point is the original x0 */ + + val = GSL_MULTIMIN_FN_EVAL (f, x); + + if (!gsl_finite(val)) + { + GSL_ERROR("non-finite function value encountered", GSL_EBADFUNC); + } + + gsl_matrix_set_row (state->x1, 0, x); + gsl_vector_set (state->y1, 0, val); + + /* following points are initialized to x0 + step_size */ + + for (i = 0; i < x->size; i++) + { + status = gsl_vector_memcpy (xtemp, x); + + if (status != 0) + { + GSL_ERROR ("vector memcopy failed", GSL_EFAILED); + } + + val = gsl_vector_get (xtemp, i) + gsl_vector_get (step_size, i); + gsl_vector_set (xtemp, i, val); + val = GSL_MULTIMIN_FN_EVAL (f, xtemp); + + if (!gsl_finite(val)) + { + GSL_ERROR("non-finite function value encountered", GSL_EBADFUNC); + } + + gsl_matrix_set_row (state->x1, i + 1, xtemp); + gsl_vector_set (state->y1, i + 1, val); + } + + /* Initialize simplex size */ + + *size = nmsimplex_size (state); + + return GSL_SUCCESS; +} + +static void +nmsimplex_free (void *vstate) +{ + nmsimplex_state_t *state = (nmsimplex_state_t *) vstate; + + gsl_matrix_free (state->x1); + gsl_vector_free (state->y1); + gsl_vector_free (state->ws1); + gsl_vector_free (state->ws2); +} + +static int +nmsimplex_iterate (void *vstate, gsl_multimin_function * f, + gsl_vector * x, double *size, double *fval) +{ + + /* Simplex iteration tries to minimize function f value */ + /* Includes corrections from Ivo Alxneit */ + + nmsimplex_state_t *state = (nmsimplex_state_t *) vstate; + + /* xc and xc2 vectors store tried corner point coordinates */ + + gsl_vector *xc = state->ws1; + gsl_vector *xc2 = state->ws2; + gsl_vector *y1 = state->y1; + gsl_matrix *x1 = state->x1; + + size_t n = y1->size; + size_t i; + size_t hi, s_hi, lo; + double dhi, ds_hi, dlo; + int status; + double val, val2; + + + if (xc->size != x->size) + { + GSL_ERROR("incompatible size of x", GSL_EINVAL); + } + + /* get index of highest, second highest and lowest point */ + + dhi = dlo = gsl_vector_get (y1, 0); + hi = 0; lo = 0; + + ds_hi = gsl_vector_get(y1, 1); + s_hi = 1; + + for (i = 1; i < n; i++) + { + val = (gsl_vector_get (y1, i)); + if (val < dlo) + { + dlo = val; + lo = i; + } + else if (val > dhi) + { + ds_hi = dhi; + s_hi = hi; + dhi = val; + hi = i; + } + else if (val > ds_hi) + { + ds_hi = val; + s_hi = i; + } + } + + /* reflect the highest value */ + + val = nmsimplex_move_corner (-1.0, state, hi, xc, f); + + if (gsl_finite(val) && val < gsl_vector_get (y1, lo)) + { + + /* reflected point becomes lowest point, try expansion */ + + val2 = nmsimplex_move_corner (-2.0, state, hi, xc2, f); + + if (gsl_finite(val2) && val2 < gsl_vector_get (y1, lo)) + { + gsl_matrix_set_row (x1, hi, xc2); + gsl_vector_set (y1, hi, val2); + } + else + { + gsl_matrix_set_row (x1, hi, xc); + gsl_vector_set (y1, hi, val); + } + } + + /* reflection does not improve things enough + or + we got a non-finite (illegal) function value */ + + else if (!gsl_finite(val) || val > gsl_vector_get (y1, s_hi)) + { + if (gsl_finite(val) && val <= gsl_vector_get (y1, hi)) + { + + /* if trial point is better than highest point, replace + highest point */ + + gsl_matrix_set_row (x1, hi, xc); + gsl_vector_set (y1, hi, val); + } + + /* try one dimensional contraction */ + + val2 = nmsimplex_move_corner (0.5, state, hi, xc2, f); + + if (gsl_finite(val2) && val2 <= gsl_vector_get (y1, hi)) + { + gsl_matrix_set_row (state->x1, hi, xc2); + gsl_vector_set (y1, hi, val2); + } + + else + { + + /* contract the whole simplex in respect to the best point */ + + status = nmsimplex_contract_by_best (state, lo, xc, f); + if (status != GSL_SUCCESS) + { + GSL_ERROR ("nmsimplex_contract_by_best failed", GSL_EFAILED); + } + } + } + else + { + + /* trial point is better than second highest point. + Replace highest point by it */ + + gsl_matrix_set_row (x1, hi, xc); + gsl_vector_set (y1, hi, val); + } + + /* return lowest point of simplex as x */ + + lo = gsl_vector_min_index (y1); + gsl_matrix_get_row (x, x1, lo); + *fval = gsl_vector_get (y1, lo); + + /* Update simplex size */ + + *size = nmsimplex_size (state); + + return GSL_SUCCESS; +} + +static const gsl_multimin_fminimizer_type nmsimplex_type = +{ "nmsimplex", /* name */ + sizeof (nmsimplex_state_t), + &nmsimplex_alloc, + &nmsimplex_set, + &nmsimplex_iterate, + &nmsimplex_free +}; + +const gsl_multimin_fminimizer_type + * gsl_multimin_fminimizer_nmsimplex = &nmsimplex_type; diff --git a/gsl-2.5/multimin/simplex.lo b/gsl-2.5/multimin/simplex.lo new file mode 100644 index 00000000..235d4cfd --- /dev/null +++ b/gsl-2.5/multimin/simplex.lo @@ -0,0 +1,12 @@ +# simplex.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/simplex.o' + +# Name of the non-PIC object +non_pic_object='simplex.o' + diff --git a/gsl-2.5/multimin/simplex2.c b/gsl-2.5/multimin/simplex2.c new file mode 100644 index 00000000..59dd57db --- /dev/null +++ b/gsl-2.5/multimin/simplex2.c @@ -0,0 +1,701 @@ +/* multimin/simplex2.c + * + * Copyright (C) 2007, 2008, 2009 Brian Gough + * Copyright (C) 2002 Tuomo Keskitalo, Ivo Alxneit + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* + - Originally written by Tuomo Keskitalo + - Corrections to nmsimplex_iterate and other functions + by Ivo Alxneit + - Additional help by Brian Gough + - Optimisations added by Brian Gough + + use BLAS for frequently-called functions + + keep track of the center to avoid unnecessary computation + + compute size as RMS value, allowing linear update on each step + instead of recomputing from all N+1 vectors. +*/ + +/* The Simplex method of Nelder and Mead, also known as the polytope + search alogorithm. Ref: Nelder, J.A., Mead, R., Computer Journal 7 + (1965) pp. 308-313. + + This implementation uses n+1 corner points in the simplex. +*/ + +#include +#include +#include +#include +#include + +typedef struct +{ + gsl_matrix *x1; /* simplex corner points */ + gsl_vector *y1; /* function value at corner points */ + gsl_vector *ws1; /* workspace 1 for algorithm */ + gsl_vector *ws2; /* workspace 2 for algorithm */ + gsl_vector *center; /* center of all points */ + gsl_vector *delta; /* current step */ + gsl_vector *xmc; /* x - center (workspace) */ + double S2; + unsigned long count; +} +nmsimplex_state_t; + +static int +compute_center (const nmsimplex_state_t * state, gsl_vector * center); +static double +compute_size (nmsimplex_state_t * state, const gsl_vector * center); + +static double +try_corner_move (const double coeff, + const nmsimplex_state_t * state, + size_t corner, + gsl_vector * xc, const gsl_multimin_function * f) +{ + /* moves a simplex corner scaled by coeff (negative value represents + mirroring by the middle point of the "other" corner points) + and gives new corner in xc and function value at xc as a + return value + */ + + gsl_matrix *x1 = state->x1; + const size_t P = x1->size1; + double newval; + + /* xc = (1-coeff)*(P/(P-1)) * center(all) + ((P*coeff-1)/(P-1))*x_corner */ + { + double alpha = (1 - coeff) * P / (P - 1.0); + double beta = (P * coeff - 1.0) / (P - 1.0); + gsl_vector_const_view row = gsl_matrix_const_row (x1, corner); + + gsl_vector_memcpy (xc, state->center); + gsl_blas_dscal (alpha, xc); + gsl_blas_daxpy (beta, &row.vector, xc); + } + + newval = GSL_MULTIMIN_FN_EVAL (f, xc); + + return newval; +} + + +static void +update_point (nmsimplex_state_t * state, size_t i, + const gsl_vector * x, double val) +{ + gsl_vector_const_view x_orig = gsl_matrix_const_row (state->x1, i); + const size_t P = state->x1->size1; + + /* Compute delta = x - x_orig */ + gsl_vector_memcpy (state->delta, x); + gsl_blas_daxpy (-1.0, &x_orig.vector, state->delta); + + /* Compute xmc = x_orig - c */ + gsl_vector_memcpy (state->xmc, &x_orig.vector); + gsl_blas_daxpy (-1.0, state->center, state->xmc); + + /* Update size: S2' = S2 + (2/P) * (x_orig - c).delta + (P-1)*(delta/P)^2 */ + { + double d = gsl_blas_dnrm2 (state->delta); + double xmcd; + gsl_blas_ddot (state->xmc, state->delta, &xmcd); + state->S2 += (2.0 / P) * xmcd + ((P - 1.0) / P) * (d * d / P); + } + + /* Update center: c' = c + (x - x_orig) / P */ + + { + double alpha = 1.0 / P; + gsl_blas_daxpy (-alpha, &x_orig.vector, state->center); + gsl_blas_daxpy (alpha, x, state->center); + } + + gsl_matrix_set_row (state->x1, i, x); + gsl_vector_set (state->y1, i, val); +} + +static int +contract_by_best (nmsimplex_state_t * state, size_t best, + gsl_vector * xc, gsl_multimin_function * f) +{ + + /* Function contracts the simplex in respect to best valued + corner. That is, all corners besides the best corner are moved. + (This function is rarely called in practice, since it is the last + choice, hence not optimised - BJG) */ + + /* the xc vector is simply work space here */ + + gsl_matrix *x1 = state->x1; + gsl_vector *y1 = state->y1; + + size_t i, j; + double newval; + + int status = GSL_SUCCESS; + + for (i = 0; i < x1->size1; i++) + { + if (i != best) + { + for (j = 0; j < x1->size2; j++) + { + newval = 0.5 * (gsl_matrix_get (x1, i, j) + + gsl_matrix_get (x1, best, j)); + gsl_matrix_set (x1, i, j, newval); + } + + /* evaluate function in the new point */ + + gsl_matrix_get_row (xc, x1, i); + newval = GSL_MULTIMIN_FN_EVAL (f, xc); + gsl_vector_set (y1, i, newval); + + /* notify caller that we found at least one bad function value. + we finish the contraction (and do not abort) to allow the user + to handle the situation */ + + if (!gsl_finite (newval)) + { + status = GSL_EBADFUNC; + } + } + } + + /* We need to update the centre and size as well */ + compute_center (state, state->center); + compute_size (state, state->center); + + return status; +} + +static int +compute_center (const nmsimplex_state_t * state, gsl_vector * center) +{ + /* calculates the center of the simplex and stores in center */ + + gsl_matrix *x1 = state->x1; + const size_t P = x1->size1; + size_t i; + + gsl_vector_set_zero (center); + + for (i = 0; i < P; i++) + { + gsl_vector_const_view row = gsl_matrix_const_row (x1, i); + gsl_blas_daxpy (1.0, &row.vector, center); + } + + { + const double alpha = 1.0 / P; + gsl_blas_dscal (alpha, center); + } + + return GSL_SUCCESS; +} + +static double +compute_size (nmsimplex_state_t * state, const gsl_vector * center) +{ + /* calculates simplex size as rms sum of length of vectors + from simplex center to corner points: + + sqrt( sum ( || y - y_middlepoint ||^2 ) / n ) + */ + + gsl_vector *s = state->ws1; + gsl_matrix *x1 = state->x1; + const size_t P = x1->size1; + size_t i; + + double ss = 0.0; + + for (i = 0; i < P; i++) + { + double t; + gsl_matrix_get_row (s, x1, i); + gsl_blas_daxpy (-1.0, center, s); + t = gsl_blas_dnrm2 (s); + ss += t * t; + } + + /* Store squared size in the state */ + state->S2 = (ss / P); + + return sqrt (ss / P); +} + +static int +nmsimplex_alloc (void *vstate, size_t n) +{ + nmsimplex_state_t *state = (nmsimplex_state_t *) vstate; + + if (n == 0) + { + GSL_ERROR ("invalid number of parameters specified", GSL_EINVAL); + } + + state->x1 = gsl_matrix_alloc (n + 1, n); + + if (state->x1 == NULL) + { + GSL_ERROR ("failed to allocate space for x1", GSL_ENOMEM); + } + + state->y1 = gsl_vector_alloc (n + 1); + + if (state->y1 == NULL) + { + gsl_matrix_free (state->x1); + GSL_ERROR ("failed to allocate space for y", GSL_ENOMEM); + } + + state->ws1 = gsl_vector_alloc (n); + + if (state->ws1 == NULL) + { + gsl_matrix_free (state->x1); + gsl_vector_free (state->y1); + GSL_ERROR ("failed to allocate space for ws1", GSL_ENOMEM); + } + + state->ws2 = gsl_vector_alloc (n); + + if (state->ws2 == NULL) + { + gsl_matrix_free (state->x1); + gsl_vector_free (state->y1); + gsl_vector_free (state->ws1); + GSL_ERROR ("failed to allocate space for ws2", GSL_ENOMEM); + } + + state->center = gsl_vector_alloc (n); + + if (state->center == NULL) + { + gsl_matrix_free (state->x1); + gsl_vector_free (state->y1); + gsl_vector_free (state->ws1); + gsl_vector_free (state->ws2); + GSL_ERROR ("failed to allocate space for center", GSL_ENOMEM); + } + + state->delta = gsl_vector_alloc (n); + + if (state->delta == NULL) + { + gsl_matrix_free (state->x1); + gsl_vector_free (state->y1); + gsl_vector_free (state->ws1); + gsl_vector_free (state->ws2); + gsl_vector_free (state->center); + GSL_ERROR ("failed to allocate space for delta", GSL_ENOMEM); + } + + state->xmc = gsl_vector_alloc (n); + + if (state->xmc == NULL) + { + gsl_matrix_free (state->x1); + gsl_vector_free (state->y1); + gsl_vector_free (state->ws1); + gsl_vector_free (state->ws2); + gsl_vector_free (state->center); + gsl_vector_free (state->delta); + GSL_ERROR ("failed to allocate space for xmc", GSL_ENOMEM); + } + + state->count = 0; + + return GSL_SUCCESS; +} + +static void +nmsimplex_free (void *vstate) +{ + nmsimplex_state_t *state = (nmsimplex_state_t *) vstate; + + gsl_matrix_free (state->x1); + gsl_vector_free (state->y1); + gsl_vector_free (state->ws1); + gsl_vector_free (state->ws2); + gsl_vector_free (state->center); + gsl_vector_free (state->delta); + gsl_vector_free (state->xmc); +} + +static int +nmsimplex_set (void *vstate, gsl_multimin_function * f, + const gsl_vector * x, + double *size, const gsl_vector * step_size) +{ + int status; + size_t i; + double val; + + nmsimplex_state_t *state = (nmsimplex_state_t *) vstate; + + gsl_vector *xtemp = state->ws1; + + if (xtemp->size != x->size) + { + GSL_ERROR ("incompatible size of x", GSL_EINVAL); + } + + if (xtemp->size != step_size->size) + { + GSL_ERROR ("incompatible size of step_size", GSL_EINVAL); + } + + /* first point is the original x0 */ + + val = GSL_MULTIMIN_FN_EVAL (f, x); + + if (!gsl_finite (val)) + { + GSL_ERROR ("non-finite function value encountered", GSL_EBADFUNC); + } + + gsl_matrix_set_row (state->x1, 0, x); + gsl_vector_set (state->y1, 0, val); + + /* following points are initialized to x0 + step_size */ + + for (i = 0; i < x->size; i++) + { + status = gsl_vector_memcpy (xtemp, x); + + if (status != 0) + { + GSL_ERROR ("vector memcopy failed", GSL_EFAILED); + } + + { + double xi = gsl_vector_get (x, i); + double si = gsl_vector_get (step_size, i); + + gsl_vector_set (xtemp, i, xi + si); + val = GSL_MULTIMIN_FN_EVAL (f, xtemp); + } + + if (!gsl_finite (val)) + { + GSL_ERROR ("non-finite function value encountered", GSL_EBADFUNC); + } + + gsl_matrix_set_row (state->x1, i + 1, xtemp); + gsl_vector_set (state->y1, i + 1, val); + } + + compute_center (state, state->center); + + /* Initialize simplex size */ + *size = compute_size (state, state->center); + + state->count++; + + return GSL_SUCCESS; +} + +static int +nmsimplex_iterate (void *vstate, gsl_multimin_function * f, + gsl_vector * x, double *size, double *fval) +{ + + /* Simplex iteration tries to minimize function f value */ + /* Includes corrections from Ivo Alxneit */ + + nmsimplex_state_t *state = (nmsimplex_state_t *) vstate; + + /* xc and xc2 vectors store tried corner point coordinates */ + + gsl_vector *xc = state->ws1; + gsl_vector *xc2 = state->ws2; + gsl_vector *y1 = state->y1; + gsl_matrix *x1 = state->x1; + + const size_t n = y1->size; + size_t i; + size_t hi, s_hi, lo; + double dhi, ds_hi, dlo; + int status; + double val, val2; + + if (xc->size != x->size) + { + GSL_ERROR ("incompatible size of x", GSL_EINVAL); + } + + /* get index of highest, second highest and lowest point */ + + dhi = dlo = gsl_vector_get (y1, 0); + hi = 0; + lo = 0; + + ds_hi = gsl_vector_get (y1, 1); + s_hi = 1; + + for (i = 1; i < n; i++) + { + val = (gsl_vector_get (y1, i)); + if (val < dlo) + { + dlo = val; + lo = i; + } + else if (val > dhi) + { + ds_hi = dhi; + s_hi = hi; + dhi = val; + hi = i; + } + else if (val > ds_hi) + { + ds_hi = val; + s_hi = i; + } + } + + /* try reflecting the highest value point */ + + val = try_corner_move (-1.0, state, hi, xc, f); + + if (gsl_finite (val) && val < gsl_vector_get (y1, lo)) + { + /* reflected point is lowest, try expansion */ + + val2 = try_corner_move (-2.0, state, hi, xc2, f); + + if (gsl_finite (val2) && val2 < gsl_vector_get (y1, lo)) + { + update_point (state, hi, xc2, val2); + } + else + { + update_point (state, hi, xc, val); + } + } + else if (!gsl_finite (val) || val > gsl_vector_get (y1, s_hi)) + { + /* reflection does not improve things enough, or we got a + non-finite function value */ + + if (gsl_finite (val) && val <= gsl_vector_get (y1, hi)) + { + /* if trial point is better than highest point, replace + highest point */ + + update_point (state, hi, xc, val); + } + + /* try one-dimensional contraction */ + + val2 = try_corner_move (0.5, state, hi, xc2, f); + + if (gsl_finite (val2) && val2 <= gsl_vector_get (y1, hi)) + { + update_point (state, hi, xc2, val2); + } + else + { + /* contract the whole simplex about the best point */ + + status = contract_by_best (state, lo, xc, f); + + if (status != GSL_SUCCESS) + { + GSL_ERROR ("contraction failed", GSL_EFAILED); + } + } + } + else + { + /* trial point is better than second highest point. Replace + highest point by it */ + + update_point (state, hi, xc, val); + } + + /* return lowest point of simplex as x */ + + lo = gsl_vector_min_index (y1); + gsl_matrix_get_row (x, x1, lo); + *fval = gsl_vector_get (y1, lo); + + /* Update simplex size */ + + { + double S2 = state->S2; + + if (S2 > 0) + { + *size = sqrt (S2); + } + else + { + /* recompute if accumulated error has made size invalid */ + *size = compute_size (state, state->center); + } + } + + return GSL_SUCCESS; +} + +static const gsl_multimin_fminimizer_type nmsimplex_type = +{ "nmsimplex2", /* name */ + sizeof (nmsimplex_state_t), + &nmsimplex_alloc, + &nmsimplex_set, + &nmsimplex_iterate, + &nmsimplex_free +}; + +const gsl_multimin_fminimizer_type + * gsl_multimin_fminimizer_nmsimplex2 = &nmsimplex_type; + + +static inline double +ran_unif (unsigned long *seed) +{ + unsigned long s = *seed; + *seed = (s * 69069 + 1) & 0xffffffffUL; + return (*seed) / 4294967296.0; +} + +static int +nmsimplex_set_rand (void *vstate, gsl_multimin_function * f, + const gsl_vector * x, + double *size, const gsl_vector * step_size) +{ + size_t i, j; + double val; + + nmsimplex_state_t *state = (nmsimplex_state_t *) vstate; + + gsl_vector *xtemp = state->ws1; + + if (xtemp->size != x->size) + { + GSL_ERROR ("incompatible size of x", GSL_EINVAL); + } + + if (xtemp->size != step_size->size) + { + GSL_ERROR ("incompatible size of step_size", GSL_EINVAL); + } + + /* first point is the original x0 */ + + val = GSL_MULTIMIN_FN_EVAL (f, x); + + if (!gsl_finite (val)) + { + GSL_ERROR ("non-finite function value encountered", GSL_EBADFUNC); + } + + gsl_matrix_set_row (state->x1, 0, x); + gsl_vector_set (state->y1, 0, val); + + { + gsl_matrix_view m = + gsl_matrix_submatrix (state->x1, 1, 0, x->size, x->size); + + /* generate a random orthornomal basis */ + unsigned long seed = state->count ^ 0x12345678; + + ran_unif (&seed); /* warm it up */ + + gsl_matrix_set_identity (&m.matrix); + + /* start with random reflections */ + for (i = 0; i < x->size; i++) + { + double s = ran_unif (&seed); + if (s > 0.5) gsl_matrix_set (&m.matrix, i, i, -1.0); + } + + /* apply random rotations */ + for (i = 0; i < x->size; i++) + { + for (j = i + 1; j < x->size; j++) + { + /* rotate columns i and j by a random angle */ + double angle = 2.0 * M_PI * ran_unif (&seed); + double c = cos (angle), s = sin (angle); + gsl_vector_view c_i = gsl_matrix_column (&m.matrix, i); + gsl_vector_view c_j = gsl_matrix_column (&m.matrix, j); + gsl_blas_drot (&c_i.vector, &c_j.vector, c, s); + } + } + + /* scale the orthonormal basis by the user-supplied step_size in + each dimension, and use as an offset from the central point x */ + + for (i = 0; i < x->size; i++) + { + double x_i = gsl_vector_get (x, i); + double s_i = gsl_vector_get (step_size, i); + gsl_vector_view c_i = gsl_matrix_column (&m.matrix, i); + + for (j = 0; j < x->size; j++) + { + double x_ij = gsl_vector_get (&c_i.vector, j); + gsl_vector_set (&c_i.vector, j, x_i + s_i * x_ij); + } + } + + /* compute the function values at each offset point */ + + for (i = 0; i < x->size; i++) + { + gsl_vector_view r_i = gsl_matrix_row (&m.matrix, i); + + val = GSL_MULTIMIN_FN_EVAL (f, &r_i.vector); + + if (!gsl_finite (val)) + { + GSL_ERROR ("non-finite function value encountered", GSL_EBADFUNC); + } + + gsl_vector_set (state->y1, i + 1, val); + } + } + + compute_center (state, state->center); + + /* Initialize simplex size */ + *size = compute_size (state, state->center); + + state->count++; + + return GSL_SUCCESS; +} + +static const gsl_multimin_fminimizer_type nmsimplex2rand_type = +{ "nmsimplex2rand", /* name */ + sizeof (nmsimplex_state_t), + &nmsimplex_alloc, + &nmsimplex_set_rand, + &nmsimplex_iterate, + &nmsimplex_free +}; + +const gsl_multimin_fminimizer_type + * gsl_multimin_fminimizer_nmsimplex2rand = &nmsimplex2rand_type; diff --git a/gsl-2.5/multimin/simplex2.lo b/gsl-2.5/multimin/simplex2.lo new file mode 100644 index 00000000..e68ad7db --- /dev/null +++ b/gsl-2.5/multimin/simplex2.lo @@ -0,0 +1,12 @@ +# simplex2.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/simplex2.o' + +# Name of the non-PIC object +non_pic_object='simplex2.o' + diff --git a/gsl-2.5/multimin/steepest_descent.c b/gsl-2.5/multimin/steepest_descent.c new file mode 100644 index 00000000..1738f761 --- /dev/null +++ b/gsl-2.5/multimin/steepest_descent.c @@ -0,0 +1,176 @@ +/* multimin/steepest_descent.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Fabrice Rossi + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* steepest_descent.c -- the steepest descent algorithm */ + +/* Modified by Brian Gough to use single iteration structure */ + +#include +#include +#include +#include + +typedef struct +{ + double step; + double max_step; + double tol; + gsl_vector *x1; + gsl_vector *g1; +} +steepest_descent_state_t; + +static int +steepest_descent_alloc (void *vstate, size_t n) +{ + steepest_descent_state_t *state = (steepest_descent_state_t *) vstate; + + state->x1 = gsl_vector_alloc (n); + + if (state->x1 == NULL) + { + GSL_ERROR ("failed to allocate space for x1", GSL_ENOMEM); + } + + state->g1 = gsl_vector_alloc (n); + + if (state->g1 == NULL) + { + gsl_vector_free (state->x1); + GSL_ERROR ("failed to allocate space for g1", GSL_ENOMEM); + } + + return GSL_SUCCESS; +} + +static int +steepest_descent_set (void *vstate, gsl_multimin_function_fdf * fdf, + const gsl_vector * x, double *f, + gsl_vector * gradient, double step_size, double tol) +{ + steepest_descent_state_t *state = (steepest_descent_state_t *) vstate; + + GSL_MULTIMIN_FN_EVAL_F_DF (fdf, x, f, gradient); + + state->step = step_size; + state->max_step = step_size; + state->tol = tol; + + return GSL_SUCCESS; +} + + +static void +steepest_descent_free (void *vstate) +{ + steepest_descent_state_t *state = (steepest_descent_state_t *) vstate; + + gsl_vector_free (state->x1); + gsl_vector_free (state->g1); +} + +static int +steepest_descent_restart (void *vstate) +{ + steepest_descent_state_t *state = (steepest_descent_state_t *) vstate; + + state->step = state->max_step; + + return GSL_SUCCESS; +} + +static int +steepest_descent_iterate (void *vstate, gsl_multimin_function_fdf * fdf, + gsl_vector * x, double *f, + gsl_vector * gradient, gsl_vector * dx) +{ + steepest_descent_state_t *state = (steepest_descent_state_t *) vstate; + + gsl_vector *x1 = state->x1; + gsl_vector *g1 = state->g1; + + double f0 = *f; + double f1; + double step = state->step, tol = state->tol; + + int failed = 0; + + /* compute new trial point at x1= x - step * dir, where dir is the + normalized gradient */ + + double gnorm = gsl_blas_dnrm2 (gradient); + + if (gnorm == 0.0) + { + gsl_vector_set_zero (dx); + return GSL_ENOPROG; + } + +trial: + gsl_vector_set_zero (dx); + gsl_blas_daxpy (-step / gnorm, gradient, dx); + + gsl_vector_memcpy (x1, x); + gsl_blas_daxpy (1.0, dx, x1); + + if (gsl_vector_equal (x, x1)) + { + return GSL_ENOPROG; + } + + /* evaluate function and gradient at new point x1 */ + + GSL_MULTIMIN_FN_EVAL_F_DF (fdf, x1, &f1, g1); + + if (f1 > f0) + { + /* downhill step failed, reduce step-size and try again */ + + failed = 1; + step *= tol; + goto trial; + } + + if (failed) + step *= tol; + else + step *= 2.0; + + state->step = step; + + gsl_vector_memcpy (x, x1); + gsl_vector_memcpy (gradient, g1); + + *f = f1; + + return GSL_SUCCESS; +} + +static const gsl_multimin_fdfminimizer_type steepest_descent_type = + { "steepest_descent", /* name */ + sizeof (steepest_descent_state_t), + &steepest_descent_alloc, + &steepest_descent_set, + &steepest_descent_iterate, + &steepest_descent_restart, + &steepest_descent_free +}; + +const gsl_multimin_fdfminimizer_type + * gsl_multimin_fdfminimizer_steepest_descent = &steepest_descent_type; diff --git a/gsl-2.5/multimin/steepest_descent.lo b/gsl-2.5/multimin/steepest_descent.lo new file mode 100644 index 00000000..710583a6 --- /dev/null +++ b/gsl-2.5/multimin/steepest_descent.lo @@ -0,0 +1,12 @@ +# steepest_descent.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/steepest_descent.o' + +# Name of the non-PIC object +non_pic_object='steepest_descent.o' + diff --git a/gsl-2.5/multimin/test b/gsl-2.5/multimin/test new file mode 100755 index 00000000..4cc0701a --- /dev/null +++ b/gsl-2.5/multimin/test @@ -0,0 +1,228 @@ +#! /bin/sh + +# test - temporary wrapper script for .libs/test +# Generated by libtool (GNU libtool) 2.4.2 +# +# The test program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s/\([`"$\\]\)/\\\1/g' + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command="(cd /home/groups/kipac/chto/package/gsl/gsl-2.5/multimin; LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LIBRARY_PATH; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; LD_LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/fftw/include:/home/users/chto/lib/fftw/lib:/home/users/chto/lib/healpix/lib:/home/users/chto/lib/namaster/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/include:/home/users/chto/cpp/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LD_LIBRARY_PATH; PATH=/share/software/user/open/curl/7.54.0/bin:/share/software/user/open/libressl/2.5.3/bin:/home/users/chto/lib/cfitsio:/home/users/chto/lib/cfitsio/include:/home/users/chto/lib:/home/users/chto/bin/bin:/home/users/chto/bin:/home/users/chto/.texlive/bin/x86_64-linux:/home/groups/kipac/chto/anaconda2/envs/newenv3/bin:/home/users/chto/.local/bin/include:/home/users/chto/.local/bin/lib:/home/users/chto/.local/bin:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/bin64:/share/software/user/open/fftw/3.3.6/bin:/home/groups/kipac/chto/anaconda2/condabin:/share/software/user/restricted/ifort/2019/bin:/share/software/user/open/gsl/2.3/bin:/share/software/user/srcc/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/dell/srvadmin/bin:/opt/dell/srvadmin/iSM/bin:/home/users/chto/bin; export PATH; gcc -g -O2 -o \$progdir/\$file test.o test_funcs.o ./.libs/libgslmultimin.a ../min/.libs/libgslmin.a ../poly/.libs/libgslpoly.a ../blas/.libs/libgslblas.a ../cblas/.libs/libgslcblas.so ../linalg/.libs/libgsllinalg.a ../permutation/.libs/libgslpermutation.a ../matrix/.libs/libgslmatrix.a ../vector/.libs/libgslvector.a ../block/.libs/libgslblock.a ../complex/.libs/libgslcomplex.a ../ieee-utils/.libs/libgslieeeutils.a ../err/.libs/libgslerr.a ../test/.libs/libgsltest.a ../sys/.libs/libgslsys.a ../utils/.libs/libutils.a -lm -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/cblas/.libs -Wl,-rpath -Wl,/usr/local/lib)" + +# This environment variable determines our operation mode. +if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then + # install mode needs the following variables: + generated_by_libtool_version='2.4.2' + notinst_deplibs=' ../cblas/libgslcblas.la' +else + # When we are sourced in execute mode, $file and $ECHO are already set. + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + file="$0" + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + ECHO="printf %s\\n" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ which is used only on +# windows platforms, and (c) all begin with the string --lt- +# (application programs are unlikely to have options which match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's ../libtool value, followed by no. +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=$0 + shift + for lt_opt + do + case "$lt_opt" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%/[^/]*$%%'` + test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=. + lt_dump_F=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%^.*/%%'` + cat "$lt_dump_D/$lt_dump_F" + exit 0 + ;; + --lt-*) + $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n "$lt_option_debug"; then + echo "test:test:${LINENO}: libtool wrapper (GNU libtool) 2.4.2" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + $ECHO "test:test:${LINENO}: newargv[$lt_dump_args_N]: $lt_arg" + lt_dump_args_N=`expr $lt_dump_args_N + 1` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ + + if test -n "$lt_option_debug"; then + $ECHO "test:test:${LINENO}: newargv[0]: $progdir/$program" 1>&2 + func_lt_dump_args ${1+"$@"} 1>&2 + fi + exec "$progdir/$program" ${1+"$@"} + + $ECHO "$0: cannot exec $program $*" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from $@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case " $* " in + *\ --lt-*) + for lt_wr_arg + do + case $lt_wr_arg in + --lt-*) ;; + *) set x "$@" "$lt_wr_arg"; shift;; + esac + shift + done ;; + esac + func_exec_program_core ${1+"$@"} +} + + # Parse options + func_parse_lt_options "$0" ${1+"$@"} + + # Find the directory that this script lives in. + thisdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + test "x$thisdir" = "x$file" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=`ls -ld "$file" | /usr/bin/sed -n 's/.*-> //p'` + while test -n "$file"; do + destdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + + # If there was a directory component, then change thisdir. + if test "x$destdir" != "x$file"; then + case "$destdir" in + [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;; + *) thisdir="$thisdir/$destdir" ;; + esac + fi + + file=`$ECHO "$file" | /usr/bin/sed 's%^.*/%%'` + file=`ls -ld "$thisdir/$file" | /usr/bin/sed -n 's/.*-> //p'` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no + if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then + # special case for '.' + if test "$thisdir" = "."; then + thisdir=`pwd` + fi + # remove .libs from thisdir + case "$thisdir" in + *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /usr/bin/sed 's%[\\/][^\\/]*$%%'` ;; + .libs ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=`cd "$thisdir" && pwd` + test -n "$absdir" && thisdir="$absdir" + + program=lt-'test' + progdir="$thisdir/.libs" + + if test ! -f "$progdir/$program" || + { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /usr/bin/sed 1q`; \ + test "X$file" != "X$progdir/$program"; }; then + + file="$$-$program" + + if test ! -d "$progdir"; then + mkdir "$progdir" + else + rm -f "$progdir/$file" + fi + + # relink executable if necessary + if test -n "$relink_command"; then + if relink_command_output=`eval $relink_command 2>&1`; then : + else + printf %s\n "$relink_command_output" >&2 + rm -f "$progdir/$file" + exit 1 + fi + fi + + mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null || + { rm -f "$progdir/$program"; + mv -f "$progdir/$file" "$progdir/$program"; } + rm -f "$progdir/$file" + fi + + if test -f "$progdir/$program"; then + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + # Run the actual program with our arguments. + func_exec_program ${1+"$@"} + fi + else + # The program doesn't exist. + $ECHO "$0: error: \`$progdir/$program' does not exist" 1>&2 + $ECHO "This script is just a wrapper for $program." 1>&2 + $ECHO "See the libtool documentation for more information." 1>&2 + exit 1 + fi +fi diff --git a/gsl-2.5/multimin/test-suite.log b/gsl-2.5/multimin/test-suite.log new file mode 100644 index 00000000..5e6fba71 --- /dev/null +++ b/gsl-2.5/multimin/test-suite.log @@ -0,0 +1,14 @@ +====================================== + gsl 2.5: multimin/test-suite.log +====================================== + +# TOTAL: 1 +# PASS: 1 +# SKIP: 0 +# XFAIL: 0 +# FAIL: 0 +# XPASS: 0 +# ERROR: 0 + +.. contents:: :depth: 2 + diff --git a/gsl-2.5/multimin/test.c b/gsl-2.5/multimin/test.c new file mode 100644 index 00000000..a8e3bf23 --- /dev/null +++ b/gsl-2.5/multimin/test.c @@ -0,0 +1,223 @@ +/* multimin/test.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Fabrice Rossi + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Modified by Tuomo Keskitalo to add Nelder Mead Simplex test suite */ + +#include +#include +#include +#include +#include +#include + +#include "test_funcs.h" + +unsigned int fcount, gcount; + +int +test_fdf(const char * desc, gsl_multimin_function_fdf *f, + initpt_function initpt, const gsl_multimin_fdfminimizer_type *T); + +int +test_f(const char * desc, gsl_multimin_function *f, initpt_function initpt, + const gsl_multimin_fminimizer_type *T); + +int +main (void) +{ + gsl_ieee_env_setup (); + + { + const gsl_multimin_fdfminimizer_type *fdfminimizers[6]; + const gsl_multimin_fdfminimizer_type ** T; + + fdfminimizers[0] = gsl_multimin_fdfminimizer_steepest_descent; + fdfminimizers[1] = gsl_multimin_fdfminimizer_conjugate_pr; + fdfminimizers[2] = gsl_multimin_fdfminimizer_conjugate_fr; + fdfminimizers[3] = gsl_multimin_fdfminimizer_vector_bfgs; + fdfminimizers[4] = gsl_multimin_fdfminimizer_vector_bfgs2; + fdfminimizers[5] = 0; + + T = fdfminimizers; + + while (*T != 0) + { + test_fdf("Roth", &roth, roth_initpt,*T); + test_fdf("Wood", &wood, wood_initpt,*T); + test_fdf("Rosenbrock", &rosenbrock, rosenbrock_initpt,*T); + test_fdf("Rosenbrock1", &rosenbrock, rosenbrock_initpt1,*T); + test_fdf("SimpleAbs", &simpleabs, simpleabs_initpt,*T); + T++; + } + + T = fdfminimizers; + + while (*T != 0) + { + test_fdf("NRoth", &Nroth, roth_initpt,*T); + test_fdf("NWood", &Nwood, wood_initpt,*T); + test_fdf("NRosenbrock", &Nrosenbrock, rosenbrock_initpt,*T); + T++; + } + } + + + { + const gsl_multimin_fminimizer_type *fminimizers[4]; + const gsl_multimin_fminimizer_type ** T; + + fminimizers[0] = gsl_multimin_fminimizer_nmsimplex; + fminimizers[1] = gsl_multimin_fminimizer_nmsimplex2; + fminimizers[2] = gsl_multimin_fminimizer_nmsimplex2rand; + fminimizers[3] = 0; + + T = fminimizers; + + while (*T != 0) + { + test_f("Roth", &roth_fmin, roth_initpt,*T); + test_f("Wood", &wood_fmin, wood_initpt,*T); + test_f("Rosenbrock", &rosenbrock_fmin, rosenbrock_initpt,*T); + test_f("Spring", &spring_fmin, spring_initpt,*T); + T++; + } + } + + + exit (gsl_test_summary()); +} + +int +test_fdf(const char * desc, + gsl_multimin_function_fdf *f, + initpt_function initpt, + const gsl_multimin_fdfminimizer_type *T) +{ + int status; + size_t iter = 0; + double step_size; + + gsl_vector *x = gsl_vector_alloc (f->n); + + gsl_multimin_fdfminimizer *s; + fcount = 0; gcount = 0; + + (*initpt) (x); + + step_size = 0.1 * gsl_blas_dnrm2 (x); + + s = gsl_multimin_fdfminimizer_alloc(T, f->n); + + gsl_multimin_fdfminimizer_set (s, f, x, step_size, 0.1); + +#ifdef DEBUG + printf("x "); gsl_vector_fprintf (stdout, s->x, "%g"); + printf("g "); gsl_vector_fprintf (stdout, s->gradient, "%g"); +#endif + + do + { + iter++; + status = gsl_multimin_fdfminimizer_iterate(s); + +#ifdef DEBUG + printf("%i: \n",iter); + printf("x "); gsl_vector_fprintf (stdout, s->x, "%g"); + printf("g "); gsl_vector_fprintf (stdout, s->gradient, "%g"); + printf("f(x) %g\n",s->f); + printf("dx %g\n",gsl_blas_dnrm2(s->dx)); + printf("status=%d\n", status); + printf("\n"); +#endif + if (status == GSL_ENOPROG) + break; + + status = gsl_multimin_test_gradient(s->gradient,1e-3); + } + while (iter < 5000 && status == GSL_CONTINUE); + + /* If no error in iteration, test for numerical convergence */ + if (status == GSL_CONTINUE || status == GSL_ENOPROG) + status = (fabs(s->f) > 1e-5); + + gsl_test(status, "%s, on %s: %i iters (fn+g=%d+%d), f(x)=%g", + gsl_multimin_fdfminimizer_name(s),desc, iter, fcount, gcount, s->f); + + gsl_multimin_fdfminimizer_free(s); + gsl_vector_free(x); + + return status; +} + +int +test_f(const char * desc, gsl_multimin_function *f, initpt_function initpt, + const gsl_multimin_fminimizer_type *T) +{ + int status; + size_t i, iter = 0; + + gsl_vector *x = gsl_vector_alloc (f->n); + + gsl_vector *step_size = gsl_vector_alloc (f->n); + + gsl_multimin_fminimizer *s; + + fcount = 0; gcount = 0; + (*initpt) (x); + + for (i = 0; i < f->n; i++) + gsl_vector_set (step_size, i, 1); + + s = gsl_multimin_fminimizer_alloc(T, f->n); + + gsl_multimin_fminimizer_set (s, f, x, step_size); + +#ifdef DEBUG + printf("x "); gsl_vector_fprintf (stdout, s->x, "%g"); +#endif + + do + { + iter++; + status = gsl_multimin_fminimizer_iterate(s); + +#ifdef DEBUG + printf("%i: \n",iter); + printf("x "); gsl_vector_fprintf (stdout, s->x, "%g"); + printf("f(x) %g\n", gsl_multimin_fminimizer_minimum (s)); + printf("size: %g\n", gsl_multimin_fminimizer_size (s)); + printf("\n"); +#endif + + status = gsl_multimin_test_size (gsl_multimin_fminimizer_size (s), + 1e-3); + } + while (iter < 5000 && status == GSL_CONTINUE); + + status |= (fabs(s->fval) > 1e-5); + + gsl_test(status, "%s, on %s: %d iter (fn=%d), f(x)=%g", + gsl_multimin_fminimizer_name(s),desc, iter, fcount, s->fval); + + gsl_multimin_fminimizer_free(s); + gsl_vector_free(x); + gsl_vector_free(step_size); + + return status; +} diff --git a/gsl-2.5/multimin/test.log b/gsl-2.5/multimin/test.log new file mode 100644 index 00000000..86b58067 --- /dev/null +++ b/gsl-2.5/multimin/test.log @@ -0,0 +1 @@ +Completed [52/52] diff --git a/gsl-2.5/multimin/test.trs b/gsl-2.5/multimin/test.trs new file mode 100644 index 00000000..3f0f396c --- /dev/null +++ b/gsl-2.5/multimin/test.trs @@ -0,0 +1,4 @@ +:test-result: PASS +:global-test-result: PASS +:recheck: no +:copy-in-global-log: no diff --git a/gsl-2.5/multimin/test_funcs.c b/gsl-2.5/multimin/test_funcs.c new file mode 100644 index 00000000..d783e487 --- /dev/null +++ b/gsl-2.5/multimin/test_funcs.c @@ -0,0 +1,342 @@ +/* multimin/test_funcs.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Fabrice Rossi + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include + +#include "test_funcs.h" + +gsl_multimin_function_fdf simpleabs = +{&simpleabs_f, + &simpleabs_df, + &simpleabs_fdf, + 2, 0}; + +gsl_multimin_function simpleabs_fmin = +{&simpleabs_f, + 2, 0}; + +void simpleabs_initpt (gsl_vector * x) +{ + gsl_vector_set (x, 0, 1.0); + gsl_vector_set (x, 1, 2.0); +} + +void simpleabs_initpt1 (gsl_vector * x) +{ + gsl_vector_set (x, 0, 1.0); + gsl_vector_set (x, 1, 1.0); +} + +double simpleabs_f (const gsl_vector * x, void *params) +{ + double u = gsl_vector_get(x,0); + double v = gsl_vector_get(x,1); + double a = u - 1; + double b = v - 2; + fcount++; + return fabs(a) + fabs(b); +} + +void simpleabs_df (const gsl_vector * x, void *params, gsl_vector * df) +{ + double u = gsl_vector_get(x,0); + double v = gsl_vector_get(x,1); + gcount++; + gsl_vector_set(df,0, GSL_SIGN(u-1)); + gsl_vector_set(df,1, GSL_SIGN(v-2)); +} + +void simpleabs_fdf (const gsl_vector * x, void *params, double * f, + gsl_vector * df) +{ + double u = gsl_vector_get(x,0); + double v = gsl_vector_get(x,1); + double a = u - 1; + double b = v - 2; + gcount++; + *f = fabs(a) + fabs(b); + gsl_vector_set(df,0, GSL_SIGN(u-1)); + gsl_vector_set(df,1, GSL_SIGN(v-2)); +} + +gsl_multimin_function_fdf rosenbrock = +{&rosenbrock_f, + &rosenbrock_df, + &rosenbrock_fdf, + 2, 0}; + +gsl_multimin_function rosenbrock_fmin = +{&rosenbrock_f, + 2, 0}; + +void rosenbrock_initpt (gsl_vector * x) +{ + gsl_vector_set (x, 0, -1.2); + gsl_vector_set (x, 1, 1.0); +} + +void rosenbrock_initpt1 (gsl_vector * x) +{ + gsl_vector_set (x, 0, 1.0); + gsl_vector_set (x, 1, 1.0); +} + +double rosenbrock_f (const gsl_vector * x, void *params) +{ + double u = gsl_vector_get(x,0); + double v = gsl_vector_get(x,1); + double a = u - 1; + double b = u * u - v; + fcount++; + return a * a + 10 * b * b; +} + +void rosenbrock_df (const gsl_vector * x, void *params, gsl_vector * df) +{ + double u = gsl_vector_get(x,0); + double v = gsl_vector_get(x,1); + double b = u * u - v; + gcount++; + gsl_vector_set(df,0,2 * (u - 1) + 40 * u * b); + gsl_vector_set(df,1,-20 * b); +} + +void rosenbrock_fdf (const gsl_vector * x, void *params, double * f, + gsl_vector * df) +{ + double u = gsl_vector_get(x,0); + double v = gsl_vector_get(x,1); + double a = u - 1; + double b = u * u - v; + gcount++; + *f = a * a + 10 * b * b; + gsl_vector_set(df,0,2 * (u - 1) + 40 * u * b); + gsl_vector_set(df,1,-20 * b); +} + +gsl_multimin_function_fdf roth = +{&roth_f, + &roth_df, + &roth_fdf, + 2, 0}; + +gsl_multimin_function roth_fmin = +{&roth_f, + 2, 0}; + +void roth_initpt (gsl_vector * x) +{ + gsl_vector_set (x, 0, 4.5); + gsl_vector_set (x, 1, 3.5); +} + +double roth_f (const gsl_vector * x, void *params) +{ + double u = gsl_vector_get(x,0); + double v = gsl_vector_get(x,1); + double a = -13.0 + u + ((5.0 - v)*v - 2.0)*v; + double b = -29.0 + u + ((v + 1.0)*v - 14.0)*v; + fcount++; + return a * a + b * b; +} + +void roth_df (const gsl_vector * x, void *params, gsl_vector * df) +{ + double u = gsl_vector_get(x,0); + double v = gsl_vector_get(x,1); + double a = -13.0 + u + ((5.0 - v)*v - 2.0)*v; + double b = -29.0 + u + ((v + 1.0)*v - 14.0)*v; + double c = -2 + v * (10 - 3 * v); + double d = -14 + v * (2 + 3 * v); + gcount++; + gsl_vector_set(df,0,2 * a + 2 * b); + gsl_vector_set(df,1,2 * a * c + 2 * b * d); +} + +void roth_fdf (const gsl_vector * x, void *params, double * f, + gsl_vector * df) +{ + *f = roth_f (x,params); + roth_df(x,params,df); +} + +gsl_multimin_function_fdf wood = +{&wood_f, + &wood_df, + &wood_fdf, + 4, 0}; + +gsl_multimin_function wood_fmin = +{&wood_f, + 4, 0}; + +void +wood_initpt (gsl_vector * x) +{ + gsl_vector_set (x, 0, -3.0); + gsl_vector_set (x, 1, -1.0); + gsl_vector_set (x, 2, -3.0); + gsl_vector_set (x, 3, -1.0); +} + +double wood_f (const gsl_vector * x, void *params) +{ + double u1 = gsl_vector_get(x,0); + double u2 = gsl_vector_get(x,1); + double u3 = gsl_vector_get(x,2); + double u4 = gsl_vector_get(x,3); + + double t1 = u1 * u1 - u2; + double t2 = u3 * u3 - u4; + fcount++; + return 100 * t1 * t1 + (1 - u1) * (1 - u1) + + 90 * t2 * t2 + (1 - u3) * (1 - u3) + + 10.1 * ( (1 - u2) * (1 - u2) + (1 - u4) * (1 - u4) ) + + 19.8 * (1 - u2) * (1 - u4); +} + +void wood_df (const gsl_vector * x, void *params, gsl_vector * df) +{ + double u1 = gsl_vector_get(x,0); + double u2 = gsl_vector_get(x,1); + double u3 = gsl_vector_get(x,2); + double u4 = gsl_vector_get(x,3); + + double t1 = u1 * u1 - u2; + double t2 = u3 * u3 - u4; + gcount++; + gsl_vector_set(df,0, 400 * u1 * t1 - 2 * (1 - u1) ); + gsl_vector_set(df,1, -200 * t1 - 20.2 * (1 - u2) - 19.8 * (1 - u4) ); + gsl_vector_set(df,2, 360 * u3 * t2 - 2 * (1 - u3) ); + gsl_vector_set(df,3, -180 * t2 - 20.2 * (1 - u4) - 19.8 * (1 - u2) ); + +} + +void wood_fdf (const gsl_vector * x, void *params, double * f, gsl_vector * df) +{ + wood_df(x,params,df); + *f=wood_f(x,params); +} + +gsl_multimin_function_fdf Nrosenbrock = +{&rosenbrock_f, + &Nrosenbrock_df, + &Nrosenbrock_fdf, + 2, 0}; + +void Nrosenbrock_df (const gsl_vector * x, void *params, gsl_vector * df) +{ + gsl_multimin_function F ; + F.f = rosenbrock_f; + F.params = params; + F.n = x->size; + gsl_multimin_diff (&F, x, df); +} + +void Nrosenbrock_fdf (const gsl_vector * x, void *params, double * f, + gsl_vector * df) +{ + *f = rosenbrock_f (x, params); + Nrosenbrock_df (x, params, df); +} + +gsl_multimin_function_fdf Nroth = +{&roth_f, + &Nroth_df, + &Nroth_fdf, + 2, 0}; + +void Nroth_df (const gsl_vector * x, void *params, gsl_vector * df) +{ + gsl_multimin_function F ; + F.f = roth_f; + F.params = params; + F.n = x->size; + gsl_multimin_diff (&F, x, df); +} + +void Nroth_fdf (const gsl_vector * x, void *params, double * f, + gsl_vector * df) +{ + *f = roth_f (x, params); + Nroth_df (x, params, df); +} + + +gsl_multimin_function_fdf Nwood = +{&wood_f, + &Nwood_df, + &Nwood_fdf, + 4, 0}; + +void Nwood_df (const gsl_vector * x, void *params, gsl_vector * df) +{ + gsl_multimin_function F ; + F.f = wood_f; + F.params = params; + F.n = x->size; + gsl_multimin_diff (&F, x, df); +} + +void Nwood_fdf (const gsl_vector * x, void *params, double * f, + gsl_vector * df) +{ + *f = wood_f (x, params); + Nwood_df (x, params, df); +} + + +gsl_multimin_function spring_fmin = { &spring_f, + 3, 0 +}; + +void +spring_initpt (gsl_vector * x) +{ + gsl_vector_set (x, 0, 1.0); + gsl_vector_set (x, 1, 0.0); + gsl_vector_set (x, 2, 7.0 * M_PI); +} + +double +spring_f (const gsl_vector * x, void *params) +{ + double x0 = gsl_vector_get (x, 0); + double x1 = gsl_vector_get (x, 1); + double x2 = gsl_vector_get (x, 2); + + double theta = atan2 (x1, x0); + double r = sqrt (x0 * x0 + x1 * x1); + double z = x2; + while (z > M_PI) + z -= 2.0 * M_PI; + while (z < -M_PI) + z += 2.0 * M_PI; + { + double tmz = theta - z; + double rm1 = r - 1.0; + double ret = 0.1 * (expm1 (tmz * tmz + rm1 * rm1) + fabs (x2 / 10.0)); + return ret; + } +} + + diff --git a/gsl-2.5/multimin/test_funcs.h b/gsl-2.5/multimin/test_funcs.h new file mode 100644 index 00000000..c89169e0 --- /dev/null +++ b/gsl-2.5/multimin/test_funcs.h @@ -0,0 +1,68 @@ +/* multimin/test_funcs.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Fabrice Rossi + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +extern unsigned int fcount, gcount; + +typedef void (*initpt_function) (gsl_vector * x); + +extern gsl_multimin_function_fdf simpleabs; +extern gsl_multimin_function simpleabs_fmin; +void simpleabs_initpt (gsl_vector * x); +void simpleabs_initpt1 (gsl_vector * x); +double simpleabs_f (const gsl_vector * x, void *params); +void simpleabs_df (const gsl_vector * x, void *params, gsl_vector * df); +void simpleabs_fdf (const gsl_vector * x, void *params, double * f, gsl_vector * df); + +extern gsl_multimin_function_fdf rosenbrock; +extern gsl_multimin_function rosenbrock_fmin; +void rosenbrock_initpt (gsl_vector * x); +void rosenbrock_initpt1 (gsl_vector * x); +double rosenbrock_f (const gsl_vector * x, void *params); +void rosenbrock_df (const gsl_vector * x, void *params, gsl_vector * df); +void rosenbrock_fdf (const gsl_vector * x, void *params, double * f, gsl_vector * df); + +extern gsl_multimin_function_fdf wood; +extern gsl_multimin_function wood_fmin; +void wood_initpt (gsl_vector * x); +double wood_f (const gsl_vector * x, void *params); +void wood_df (const gsl_vector * x, void *params, gsl_vector * df); +void wood_fdf (const gsl_vector * x, void *params, double * f, gsl_vector * df); + +extern gsl_multimin_function_fdf roth; +extern gsl_multimin_function roth_fmin; +void roth_initpt (gsl_vector * x); +double roth_f (const gsl_vector * x, void *params); +void roth_df (const gsl_vector * x, void *params, gsl_vector * df); +void roth_fdf (const gsl_vector * x, void *params, double * f, gsl_vector * df); + +extern gsl_multimin_function_fdf Nrosenbrock; +void Nrosenbrock_df (const gsl_vector * x, void *params, gsl_vector * df); +void Nrosenbrock_fdf (const gsl_vector * x, void *params, double * f, gsl_vector * df); + +extern gsl_multimin_function_fdf Nroth; +void Nroth_df (const gsl_vector * x, void *params, gsl_vector * df); +void Nroth_fdf (const gsl_vector * x, void *params, double * f, gsl_vector * df); + +extern gsl_multimin_function_fdf Nwood; +void Nwood_df (const gsl_vector * x, void *params, gsl_vector * df); +void Nwood_fdf (const gsl_vector * x, void *params, double * f, gsl_vector * df); + +extern gsl_multimin_function spring_fmin; +void spring_initpt (gsl_vector * x); +double spring_f (const gsl_vector *x, void *params); diff --git a/gsl-2.5/multimin/vector_bfgs.c b/gsl-2.5/multimin/vector_bfgs.c new file mode 100644 index 00000000..e1c958a4 --- /dev/null +++ b/gsl-2.5/multimin/vector_bfgs.c @@ -0,0 +1,350 @@ +/* multimin/vector_bfgs.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Fabrice Rossi + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* vector_bfgs.c -- Limited memory Broyden-Fletcher-Goldfarb-Shanno method */ + +/* Modified by Brian Gough to use single iteration structure */ + +#include +#include +#include + +#include "directional_minimize.c" + +typedef struct +{ + int iter; + double step; + double max_step; + double tol; + gsl_vector *x1; + gsl_vector *dx1; + gsl_vector *x2; + double g0norm; + double pnorm; + gsl_vector *p; + gsl_vector *x0; + gsl_vector *g0; + gsl_vector *dx0; + gsl_vector *dg0; +} +vector_bfgs_state_t; + +static int +vector_bfgs_alloc (void *vstate, size_t n) +{ + vector_bfgs_state_t *state = (vector_bfgs_state_t *) vstate; + + state->x1 = gsl_vector_calloc (n); + + if (state->x1 == 0) + { + GSL_ERROR ("failed to allocate space for x1", GSL_ENOMEM); + } + + state->dx1 = gsl_vector_calloc (n); + + if (state->dx1 == 0) + { + gsl_vector_free (state->x1); + GSL_ERROR ("failed to allocate space for dx1", GSL_ENOMEM); + } + + state->x2 = gsl_vector_calloc (n); + + if (state->x2 == 0) + { + gsl_vector_free (state->dx1); + gsl_vector_free (state->x1); + GSL_ERROR ("failed to allocate space for x2", GSL_ENOMEM); + } + + state->p = gsl_vector_calloc (n); + + if (state->p == 0) + { + gsl_vector_free (state->x2); + gsl_vector_free (state->dx1); + gsl_vector_free (state->x1); + GSL_ERROR ("failed to allocate space for p", GSL_ENOMEM); + } + + state->x0 = gsl_vector_calloc (n); + + if (state->x0 == 0) + { + gsl_vector_free (state->p); + gsl_vector_free (state->x2); + gsl_vector_free (state->dx1); + gsl_vector_free (state->x1); + GSL_ERROR ("failed to allocate space for g0", GSL_ENOMEM); + } + + state->g0 = gsl_vector_calloc (n); + + if (state->g0 == 0) + { + gsl_vector_free (state->x0); + gsl_vector_free (state->p); + gsl_vector_free (state->x2); + gsl_vector_free (state->dx1); + gsl_vector_free (state->x1); + GSL_ERROR ("failed to allocate space for g0", GSL_ENOMEM); + } + + state->dx0 = gsl_vector_calloc (n); + + if (state->dx0 == 0) + { + gsl_vector_free (state->g0); + gsl_vector_free (state->x0); + gsl_vector_free (state->p); + gsl_vector_free (state->x2); + gsl_vector_free (state->dx1); + gsl_vector_free (state->x1); + GSL_ERROR ("failed to allocate space for g0", GSL_ENOMEM); + } + + state->dg0 = gsl_vector_calloc (n); + + if (state->dg0 == 0) + { + gsl_vector_free (state->dx0); + gsl_vector_free (state->g0); + gsl_vector_free (state->x0); + gsl_vector_free (state->p); + gsl_vector_free (state->x2); + gsl_vector_free (state->dx1); + gsl_vector_free (state->x1); + GSL_ERROR ("failed to allocate space for g0", GSL_ENOMEM); + } + + return GSL_SUCCESS; +} + +static int +vector_bfgs_set (void *vstate, gsl_multimin_function_fdf * fdf, + const gsl_vector * x, double *f, gsl_vector * gradient, + double step_size, double tol) +{ + vector_bfgs_state_t *state = (vector_bfgs_state_t *) vstate; + + state->iter = 0; + state->step = step_size; + state->max_step = step_size; + state->tol = tol; + + GSL_MULTIMIN_FN_EVAL_F_DF (fdf, x, f, gradient); + + /* Use the gradient as the initial direction */ + + gsl_vector_memcpy (state->x0, x); + gsl_vector_memcpy (state->p, gradient); + gsl_vector_memcpy (state->g0, gradient); + + { + double gnorm = gsl_blas_dnrm2 (gradient); + state->pnorm = gnorm; + state->g0norm = gnorm; + } + + return GSL_SUCCESS; +} + +static void +vector_bfgs_free (void *vstate) +{ + vector_bfgs_state_t *state = (vector_bfgs_state_t *) vstate; + + gsl_vector_free (state->dg0); + gsl_vector_free (state->dx0); + gsl_vector_free (state->g0); + gsl_vector_free (state->x0); + gsl_vector_free (state->p); + gsl_vector_free (state->x2); + gsl_vector_free (state->dx1); + gsl_vector_free (state->x1); +} + +static int +vector_bfgs_restart (void *vstate) +{ + vector_bfgs_state_t *state = (vector_bfgs_state_t *) vstate; + + state->iter = 0; + return GSL_SUCCESS; +} + +static int +vector_bfgs_iterate (void *vstate, gsl_multimin_function_fdf * fdf, + gsl_vector * x, double *f, + gsl_vector * gradient, gsl_vector * dx) +{ + vector_bfgs_state_t *state = (vector_bfgs_state_t *) vstate; + + gsl_vector *x1 = state->x1; + gsl_vector *dx1 = state->dx1; + gsl_vector *x2 = state->x2; + gsl_vector *p = state->p; + gsl_vector *g0 = state->g0; + gsl_vector *x0 = state->x0; + + double pnorm = state->pnorm; + double g0norm = state->g0norm; + + double fa = *f, fb, fc; + double dir; + double stepa = 0.0, stepb, stepc = state->step, tol = state->tol; + + double g1norm; + double pg; + + if (pnorm == 0.0 || g0norm == 0.0) + { + gsl_vector_set_zero (dx); + return GSL_ENOPROG; + } + + /* Determine which direction is downhill, +p or -p */ + + gsl_blas_ddot (p, gradient, &pg); + + dir = (pg >= 0.0) ? +1.0 : -1.0; + + /* Compute new trial point at x_c= x - step * p, where p is the + current direction */ + + take_step (x, p, stepc, dir / pnorm, x1, dx); + + /* Evaluate function and gradient at new point xc */ + + fc = GSL_MULTIMIN_FN_EVAL_F (fdf, x1); + + if (fc < fa) + { + /* Success, reduced the function value */ + state->step = stepc * 2.0; + *f = fc; + gsl_vector_memcpy (x, x1); + GSL_MULTIMIN_FN_EVAL_DF (fdf, x1, gradient); + return GSL_SUCCESS; + } + +#ifdef DEBUG + printf ("got stepc = %g fc = %g\n", stepc, fc); +#endif + + /* Do a line minimisation in the region (xa,fa) (xc,fc) to find an + intermediate (xb,fb) satisifying fa > fb < fc. Choose an initial + xb based on parabolic interpolation */ + + intermediate_point (fdf, x, p, dir / pnorm, pg, + stepa, stepc, fa, fc, x1, dx1, gradient, &stepb, &fb); + + if (stepb == 0.0) + { + return GSL_ENOPROG; + } + + minimize (fdf, x, p, dir / pnorm, + stepa, stepb, stepc, fa, fb, fc, tol, + x1, dx1, x2, dx, gradient, &(state->step), f, &g1norm); + + gsl_vector_memcpy (x, x2); + + /* Choose a new direction for the next step */ + + state->iter = (state->iter + 1) % x->size; + + if (state->iter == 0) + { + gsl_vector_memcpy (p, gradient); + state->pnorm = g1norm; + } + else + { + /* This is the BFGS update: */ + /* p' = g1 - A dx - B dg */ + /* A = - (1+ dg.dg/dx.dg) B + dg.g/dx.dg */ + /* B = dx.g/dx.dg */ + + gsl_vector *dx0 = state->dx0; + gsl_vector *dg0 = state->dg0; + + double dxg, dgg, dxdg, dgnorm, A, B; + + /* dx0 = x - x0 */ + gsl_vector_memcpy (dx0, x); + gsl_blas_daxpy (-1.0, x0, dx0); + + /* dg0 = g - g0 */ + gsl_vector_memcpy (dg0, gradient); + gsl_blas_daxpy (-1.0, g0, dg0); + + gsl_blas_ddot (dx0, gradient, &dxg); + gsl_blas_ddot (dg0, gradient, &dgg); + gsl_blas_ddot (dx0, dg0, &dxdg); + + dgnorm = gsl_blas_dnrm2 (dg0); + + if (dxdg != 0) + { + B = dxg / dxdg; + A = -(1.0 + dgnorm * dgnorm / dxdg) * B + dgg / dxdg; + } + else + { + B = 0; + A = 0; + } + + gsl_vector_memcpy (p, gradient); + gsl_blas_daxpy (-A, dx0, p); + gsl_blas_daxpy (-B, dg0, p); + + state->pnorm = gsl_blas_dnrm2 (p); + } + + gsl_vector_memcpy (g0, gradient); + gsl_vector_memcpy (x0, x); + state->g0norm = gsl_blas_dnrm2 (g0); + +#ifdef DEBUG + printf ("updated directions\n"); + printf ("p: "); + gsl_vector_fprintf (stdout, p, "%g"); + printf ("g: "); + gsl_vector_fprintf (stdout, gradient, "%g"); +#endif + + return GSL_SUCCESS; +} + +static const gsl_multimin_fdfminimizer_type vector_bfgs_type = { + "vector_bfgs", /* name */ + sizeof (vector_bfgs_state_t), + &vector_bfgs_alloc, + &vector_bfgs_set, + &vector_bfgs_iterate, + &vector_bfgs_restart, + &vector_bfgs_free +}; + +const gsl_multimin_fdfminimizer_type + * gsl_multimin_fdfminimizer_vector_bfgs = &vector_bfgs_type; diff --git a/gsl-2.5/multimin/vector_bfgs.lo b/gsl-2.5/multimin/vector_bfgs.lo new file mode 100644 index 00000000..fca96d48 --- /dev/null +++ b/gsl-2.5/multimin/vector_bfgs.lo @@ -0,0 +1,12 @@ +# vector_bfgs.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/vector_bfgs.o' + +# Name of the non-PIC object +non_pic_object='vector_bfgs.o' + diff --git a/gsl-2.5/multimin/vector_bfgs2.c b/gsl-2.5/multimin/vector_bfgs2.c new file mode 100644 index 00000000..92ffc03a --- /dev/null +++ b/gsl-2.5/multimin/vector_bfgs2.c @@ -0,0 +1,331 @@ +/* multimin/vector_bfgs2.c + * + * Copyright (C) 2007, 2009 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + * 02110-1301, USA. + */ + +/* vector_bfgs2.c -- Fletcher's implementation of the BFGS method, + using the line minimisation algorithm from from R.Fletcher, + "Practical Methods of Optimization", Second Edition, ISBN + 0471915475. Algorithms 2.6.2 and 2.6.4. */ + +/* Thanks to Alan Irwin irwin@beluga.phys.uvic.ca. for suggesting this + algorithm and providing sample fortran benchmarks */ + +#include +#include +#include + +#include "linear_minimize.c" +#include "linear_wrapper.c" + +typedef struct +{ + int iter; + double step; + double g0norm; + double pnorm; + double delta_f; + double fp0; /* f'(0) for f(x-alpha*p) */ + gsl_vector *x0; + gsl_vector *g0; + gsl_vector *p; + /* work space */ + gsl_vector *dx0; + gsl_vector *dg0; + gsl_vector *x_alpha; + gsl_vector *g_alpha; + /* wrapper function */ + wrapper_t wrap; + /* minimization parameters */ + double rho; + double sigma; + double tau1; + double tau2; + double tau3; + int order; +} +vector_bfgs2_state_t; + +static int +vector_bfgs2_alloc (void *vstate, size_t n) +{ + vector_bfgs2_state_t *state = (vector_bfgs2_state_t *) vstate; + + state->p = gsl_vector_calloc (n); + + if (state->p == 0) + { + GSL_ERROR ("failed to allocate space for p", GSL_ENOMEM); + } + + state->x0 = gsl_vector_calloc (n); + + if (state->x0 == 0) + { + gsl_vector_free (state->p); + GSL_ERROR ("failed to allocate space for g0", GSL_ENOMEM); + } + + state->g0 = gsl_vector_calloc (n); + + if (state->g0 == 0) + { + gsl_vector_free (state->x0); + gsl_vector_free (state->p); + GSL_ERROR ("failed to allocate space for g0", GSL_ENOMEM); + } + + state->dx0 = gsl_vector_calloc (n); + + if (state->dx0 == 0) + { + gsl_vector_free (state->g0); + gsl_vector_free (state->x0); + gsl_vector_free (state->p); + GSL_ERROR ("failed to allocate space for g0", GSL_ENOMEM); + } + + state->dg0 = gsl_vector_calloc (n); + + if (state->dg0 == 0) + { + gsl_vector_free (state->dx0); + gsl_vector_free (state->g0); + gsl_vector_free (state->x0); + gsl_vector_free (state->p); + GSL_ERROR ("failed to allocate space for g0", GSL_ENOMEM); + } + + state->x_alpha = gsl_vector_calloc (n); + + if (state->x_alpha == 0) + { + gsl_vector_free (state->dg0); + gsl_vector_free (state->dx0); + gsl_vector_free (state->g0); + gsl_vector_free (state->x0); + gsl_vector_free (state->p); + GSL_ERROR ("failed to allocate space for g0", GSL_ENOMEM); + } + + state->g_alpha = gsl_vector_calloc (n); + + if (state->g_alpha == 0) + { + gsl_vector_free (state->x_alpha); + gsl_vector_free (state->dg0); + gsl_vector_free (state->dx0); + gsl_vector_free (state->g0); + gsl_vector_free (state->x0); + gsl_vector_free (state->p); + GSL_ERROR ("failed to allocate space for g0", GSL_ENOMEM); + } + + return GSL_SUCCESS; +} + +static int +vector_bfgs2_set (void *vstate, gsl_multimin_function_fdf * fdf, + const gsl_vector * x, double *f, gsl_vector * gradient, + double step_size, double tol) +{ + vector_bfgs2_state_t *state = (vector_bfgs2_state_t *) vstate; + + state->iter = 0; + state->step = step_size; + state->delta_f = 0; + + GSL_MULTIMIN_FN_EVAL_F_DF (fdf, x, f, gradient); + + /* Use the gradient as the initial direction */ + + gsl_vector_memcpy (state->x0, x); + gsl_vector_memcpy (state->g0, gradient); + state->g0norm = gsl_blas_dnrm2 (state->g0); + + gsl_vector_memcpy (state->p, gradient); + gsl_blas_dscal (-1 / state->g0norm, state->p); + state->pnorm = gsl_blas_dnrm2 (state->p); /* should be 1 */ + state->fp0 = -state->g0norm; + + /* Prepare the wrapper */ + + prepare_wrapper (&state->wrap, fdf, + state->x0, *f, state->g0, + state->p, state->x_alpha, state->g_alpha); + + /* Prepare 1d minimisation parameters */ + + state->rho = 0.01; + state->sigma = tol; + state->tau1 = 9; + state->tau2 = 0.05; + state->tau3 = 0.5; + state->order = 3; /* use cubic interpolation where possible */ + + return GSL_SUCCESS; +} + +static void +vector_bfgs2_free (void *vstate) +{ + vector_bfgs2_state_t *state = (vector_bfgs2_state_t *) vstate; + + gsl_vector_free (state->x_alpha); + gsl_vector_free (state->g_alpha); + gsl_vector_free (state->dg0); + gsl_vector_free (state->dx0); + gsl_vector_free (state->g0); + gsl_vector_free (state->x0); + gsl_vector_free (state->p); +} + +static int +vector_bfgs2_restart (void *vstate) +{ + vector_bfgs2_state_t *state = (vector_bfgs2_state_t *) vstate; + + state->iter = 0; + return GSL_SUCCESS; +} + +static int +vector_bfgs2_iterate (void *vstate, gsl_multimin_function_fdf * fdf, + gsl_vector * x, double *f, + gsl_vector * gradient, gsl_vector * dx) +{ + vector_bfgs2_state_t *state = (vector_bfgs2_state_t *) vstate; + double alpha = 0.0, alpha1; + gsl_vector *x0 = state->x0; + gsl_vector *g0 = state->g0; + gsl_vector *p = state->p; + + double g0norm = state->g0norm; + double pnorm = state->pnorm; + double delta_f = state->delta_f; + double pg, dir; + int status; + + double f0 = *f; + + if (pnorm == 0.0 || g0norm == 0.0 || state->fp0 == 0) + { + gsl_vector_set_zero (dx); + return GSL_ENOPROG; + } + + if (delta_f < 0) + { + double del = GSL_MAX_DBL (-delta_f, 10 * GSL_DBL_EPSILON * fabs(f0)); + alpha1 = GSL_MIN_DBL (1.0, 2.0 * del / (-state->fp0)); + } + else + { + alpha1 = fabs(state->step); + } + + /* line minimisation, with cubic interpolation (order = 3) */ + + status = minimize (&state->wrap.fdf_linear, state->rho, state->sigma, + state->tau1, state->tau2, state->tau3, state->order, + alpha1, &alpha); + + if (status != GSL_SUCCESS) + { + return status; + } + + update_position (&(state->wrap), alpha, x, f, gradient); + + state->delta_f = *f - f0; + + /* Choose a new direction for the next step */ + + { + /* This is the BFGS update: */ + /* p' = g1 - A dx - B dg */ + /* A = - (1+ dg.dg/dx.dg) B + dg.g/dx.dg */ + /* B = dx.g/dx.dg */ + + gsl_vector *dx0 = state->dx0; + gsl_vector *dg0 = state->dg0; + + double dxg, dgg, dxdg, dgnorm, A, B; + + /* dx0 = x - x0 */ + gsl_vector_memcpy (dx0, x); + gsl_blas_daxpy (-1.0, x0, dx0); + + gsl_vector_memcpy (dx, dx0); /* keep a copy */ + + /* dg0 = g - g0 */ + gsl_vector_memcpy (dg0, gradient); + gsl_blas_daxpy (-1.0, g0, dg0); + + gsl_blas_ddot (dx0, gradient, &dxg); + gsl_blas_ddot (dg0, gradient, &dgg); + gsl_blas_ddot (dx0, dg0, &dxdg); + + dgnorm = gsl_blas_dnrm2 (dg0); + + if (dxdg != 0) + { + B = dxg / dxdg; + A = -(1.0 + dgnorm * dgnorm / dxdg) * B + dgg / dxdg; + } + else + { + B = 0; + A = 0; + } + + gsl_vector_memcpy (p, gradient); + gsl_blas_daxpy (-A, dx0, p); + gsl_blas_daxpy (-B, dg0, p); + } + + gsl_vector_memcpy (g0, gradient); + gsl_vector_memcpy (x0, x); + state->g0norm = gsl_blas_dnrm2 (g0); + state->pnorm = gsl_blas_dnrm2 (p); + + /* update direction and fp0 */ + + gsl_blas_ddot (p, gradient, &pg); + dir = (pg >= 0.0) ? -1.0 : +1.0; + gsl_blas_dscal (dir / state->pnorm, p); + state->pnorm = gsl_blas_dnrm2 (p); + gsl_blas_ddot (p, g0, &state->fp0); + + change_direction (&state->wrap); + + return GSL_SUCCESS; +} + +static const gsl_multimin_fdfminimizer_type vector_bfgs2_type = { + "vector_bfgs2", /* name */ + sizeof (vector_bfgs2_state_t), + &vector_bfgs2_alloc, + &vector_bfgs2_set, + &vector_bfgs2_iterate, + &vector_bfgs2_restart, + &vector_bfgs2_free +}; + +const gsl_multimin_fdfminimizer_type + * gsl_multimin_fdfminimizer_vector_bfgs2 = &vector_bfgs2_type; diff --git a/gsl-2.5/multimin/vector_bfgs2.lo b/gsl-2.5/multimin/vector_bfgs2.lo new file mode 100644 index 00000000..36bcb52e --- /dev/null +++ b/gsl-2.5/multimin/vector_bfgs2.lo @@ -0,0 +1,12 @@ +# vector_bfgs2.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/vector_bfgs2.o' + +# Name of the non-PIC object +non_pic_object='vector_bfgs2.o' + diff --git a/gsl-2.5/multiroots/.deps/broyden.Plo b/gsl-2.5/multiroots/.deps/broyden.Plo new file mode 100644 index 00000000..01feacee --- /dev/null +++ b/gsl-2.5/multiroots/.deps/broyden.Plo @@ -0,0 +1,306 @@ +broyden.lo: broyden.c /usr/include/stdc-predef.h ../config.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/byteswap.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/bits/byteswap-16.h /usr/include/sys/types.h \ + /usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib-float.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h ../gsl/gsl_math.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h ../gsl/gsl_precision.h ../gsl/gsl_types.h \ + ../gsl/gsl_nan.h ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h \ + ../gsl/gsl_errno.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_multiroots.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_complex.h \ + ../gsl/gsl_check_range.h ../gsl/gsl_vector_long_double.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_vector_complex.h \ + ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_linalg.h ../gsl/gsl_mode.h \ + ../gsl/gsl_permutation.h ../gsl/gsl_blas.h ../gsl/gsl_blas_types.h \ + ../gsl/gsl_cblas.h enorm.c + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_multiroots.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_linalg.h: + +../gsl/gsl_mode.h: + +../gsl/gsl_permutation.h: + +../gsl/gsl_blas.h: + +../gsl/gsl_blas_types.h: + +../gsl/gsl_cblas.h: + +enorm.c: diff --git a/gsl-2.5/multiroots/.deps/convergence.Plo b/gsl-2.5/multiroots/.deps/convergence.Plo new file mode 100644 index 00000000..613f38aa --- /dev/null +++ b/gsl-2.5/multiroots/.deps/convergence.Plo @@ -0,0 +1,291 @@ +convergence.lo: convergence.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_math.h /usr/include/math.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_multiroots.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_complex.h \ + ../gsl/gsl_check_range.h ../gsl/gsl_vector_long_double.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_vector_complex.h \ + ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_multiroots.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: diff --git a/gsl-2.5/multiroots/.deps/dnewton.Plo b/gsl-2.5/multiroots/.deps/dnewton.Plo new file mode 100644 index 00000000..1f43ed4f --- /dev/null +++ b/gsl-2.5/multiroots/.deps/dnewton.Plo @@ -0,0 +1,304 @@ +dnewton.lo: dnewton.c /usr/include/stdc-predef.h ../config.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/byteswap.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/bits/byteswap-16.h /usr/include/sys/types.h \ + /usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib-float.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h ../gsl/gsl_math.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h ../gsl/gsl_precision.h ../gsl/gsl_types.h \ + ../gsl/gsl_nan.h ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h \ + ../gsl/gsl_errno.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_multiroots.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_complex.h \ + ../gsl/gsl_check_range.h ../gsl/gsl_vector_long_double.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_vector_complex.h \ + ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_linalg.h ../gsl/gsl_mode.h \ + ../gsl/gsl_permutation.h ../gsl/gsl_blas.h ../gsl/gsl_blas_types.h \ + ../gsl/gsl_cblas.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_multiroots.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_linalg.h: + +../gsl/gsl_mode.h: + +../gsl/gsl_permutation.h: + +../gsl/gsl_blas.h: + +../gsl/gsl_blas_types.h: + +../gsl/gsl_cblas.h: diff --git a/gsl-2.5/multiroots/.deps/fdfsolver.Plo b/gsl-2.5/multiroots/.deps/fdfsolver.Plo new file mode 100644 index 00000000..c91f466c --- /dev/null +++ b/gsl-2.5/multiroots/.deps/fdfsolver.Plo @@ -0,0 +1,301 @@ +fdfsolver.lo: fdfsolver.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/string.h \ + /usr/include/xlocale.h /usr/include/bits/string.h \ + /usr/include/bits/string2.h ../gsl/gsl_errno.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_types.h ../gsl/gsl_multiroots.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_nan.h ../gsl/gsl_pow_int.h \ + ../gsl/gsl_minmax.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_complex.h \ + ../gsl/gsl_check_range.h ../gsl/gsl_vector_long_double.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_vector_complex.h \ + ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string.h: + +/usr/include/bits/string2.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_multiroots.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: diff --git a/gsl-2.5/multiroots/.deps/fdjac.Plo b/gsl-2.5/multiroots/.deps/fdjac.Plo new file mode 100644 index 00000000..5f32cefb --- /dev/null +++ b/gsl-2.5/multiroots/.deps/fdjac.Plo @@ -0,0 +1,291 @@ +fdjac.lo: fdjac.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_multiroots.h /usr/include/stdlib.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_types.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_nan.h ../gsl/gsl_pow_int.h \ + ../gsl/gsl_minmax.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_multiroots.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_types.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: diff --git a/gsl-2.5/multiroots/.deps/fsolver.Plo b/gsl-2.5/multiroots/.deps/fsolver.Plo new file mode 100644 index 00000000..6d16db4b --- /dev/null +++ b/gsl-2.5/multiroots/.deps/fsolver.Plo @@ -0,0 +1,301 @@ +fsolver.lo: fsolver.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/string.h \ + /usr/include/xlocale.h /usr/include/bits/string.h \ + /usr/include/bits/string2.h ../gsl/gsl_errno.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_types.h ../gsl/gsl_multiroots.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_nan.h ../gsl/gsl_pow_int.h \ + ../gsl/gsl_minmax.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_complex.h \ + ../gsl/gsl_check_range.h ../gsl/gsl_vector_long_double.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_vector_complex.h \ + ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string.h: + +/usr/include/bits/string2.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_multiroots.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: diff --git a/gsl-2.5/multiroots/.deps/gnewton.Plo b/gsl-2.5/multiroots/.deps/gnewton.Plo new file mode 100644 index 00000000..2cf7ed66 --- /dev/null +++ b/gsl-2.5/multiroots/.deps/gnewton.Plo @@ -0,0 +1,306 @@ +gnewton.lo: gnewton.c /usr/include/stdc-predef.h ../config.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/byteswap.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/bits/byteswap-16.h /usr/include/sys/types.h \ + /usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib-float.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h ../gsl/gsl_math.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h ../gsl/gsl_precision.h ../gsl/gsl_types.h \ + ../gsl/gsl_nan.h ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h \ + ../gsl/gsl_errno.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_multiroots.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_complex.h \ + ../gsl/gsl_check_range.h ../gsl/gsl_vector_long_double.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_vector_complex.h \ + ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_linalg.h ../gsl/gsl_mode.h \ + ../gsl/gsl_permutation.h ../gsl/gsl_blas.h ../gsl/gsl_blas_types.h \ + ../gsl/gsl_cblas.h enorm.c + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_multiroots.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_linalg.h: + +../gsl/gsl_mode.h: + +../gsl/gsl_permutation.h: + +../gsl/gsl_blas.h: + +../gsl/gsl_blas_types.h: + +../gsl/gsl_cblas.h: + +enorm.c: diff --git a/gsl-2.5/multiroots/.deps/hybrid.Plo b/gsl-2.5/multiroots/.deps/hybrid.Plo new file mode 100644 index 00000000..5d33a927 --- /dev/null +++ b/gsl-2.5/multiroots/.deps/hybrid.Plo @@ -0,0 +1,308 @@ +hybrid.lo: hybrid.c /usr/include/stdc-predef.h ../config.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/byteswap.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/bits/byteswap-16.h /usr/include/sys/types.h \ + /usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib-float.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h ../gsl/gsl_math.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h ../gsl/gsl_precision.h ../gsl/gsl_types.h \ + ../gsl/gsl_nan.h ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h \ + ../gsl/gsl_errno.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_multiroots.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_complex.h \ + ../gsl/gsl_check_range.h ../gsl/gsl_vector_long_double.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_vector_complex.h \ + ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_linalg.h ../gsl/gsl_mode.h \ + ../gsl/gsl_permutation.h ../gsl/gsl_blas.h ../gsl/gsl_blas_types.h \ + ../gsl/gsl_cblas.h dogleg.c enorm.c + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_multiroots.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_linalg.h: + +../gsl/gsl_mode.h: + +../gsl/gsl_permutation.h: + +../gsl/gsl_blas.h: + +../gsl/gsl_blas_types.h: + +../gsl/gsl_cblas.h: + +dogleg.c: + +enorm.c: diff --git a/gsl-2.5/multiroots/.deps/hybridj.Plo b/gsl-2.5/multiroots/.deps/hybridj.Plo new file mode 100644 index 00000000..90468740 --- /dev/null +++ b/gsl-2.5/multiroots/.deps/hybridj.Plo @@ -0,0 +1,308 @@ +hybridj.lo: hybridj.c /usr/include/stdc-predef.h ../config.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/byteswap.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/bits/byteswap-16.h /usr/include/sys/types.h \ + /usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib-float.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h ../gsl/gsl_math.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h ../gsl/gsl_precision.h ../gsl/gsl_types.h \ + ../gsl/gsl_nan.h ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h \ + ../gsl/gsl_errno.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_multiroots.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_complex.h \ + ../gsl/gsl_check_range.h ../gsl/gsl_vector_long_double.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_vector_complex.h \ + ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_linalg.h ../gsl/gsl_mode.h \ + ../gsl/gsl_permutation.h ../gsl/gsl_blas.h ../gsl/gsl_blas_types.h \ + ../gsl/gsl_cblas.h dogleg.c enorm.c + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_multiroots.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_linalg.h: + +../gsl/gsl_mode.h: + +../gsl/gsl_permutation.h: + +../gsl/gsl_blas.h: + +../gsl/gsl_blas_types.h: + +../gsl/gsl_cblas.h: + +dogleg.c: + +enorm.c: diff --git a/gsl-2.5/multiroots/.deps/newton.Plo b/gsl-2.5/multiroots/.deps/newton.Plo new file mode 100644 index 00000000..2ac7bede --- /dev/null +++ b/gsl-2.5/multiroots/.deps/newton.Plo @@ -0,0 +1,304 @@ +newton.lo: newton.c /usr/include/stdc-predef.h ../config.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/byteswap.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/bits/byteswap-16.h /usr/include/sys/types.h \ + /usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib-float.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h ../gsl/gsl_math.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h ../gsl/gsl_precision.h ../gsl/gsl_types.h \ + ../gsl/gsl_nan.h ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h \ + ../gsl/gsl_errno.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_multiroots.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_complex.h \ + ../gsl/gsl_check_range.h ../gsl/gsl_vector_long_double.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_vector_complex.h \ + ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_linalg.h ../gsl/gsl_mode.h \ + ../gsl/gsl_permutation.h ../gsl/gsl_blas.h ../gsl/gsl_blas_types.h \ + ../gsl/gsl_cblas.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_multiroots.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_linalg.h: + +../gsl/gsl_mode.h: + +../gsl/gsl_permutation.h: + +../gsl/gsl_blas.h: + +../gsl/gsl_blas_types.h: + +../gsl/gsl_cblas.h: diff --git a/gsl-2.5/multiroots/.deps/test.Po b/gsl-2.5/multiroots/.deps/test.Po new file mode 100644 index 00000000..d11be6cb --- /dev/null +++ b/gsl-2.5/multiroots/.deps/test.Po @@ -0,0 +1,297 @@ +test.o: test.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_types.h \ + ../gsl/gsl_errno.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_inline.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_vector_complex.h \ + ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_test.h ../gsl/gsl_multiroots.h \ + ../gsl/gsl_math.h /usr/include/math.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_nan.h ../gsl/gsl_pow_int.h \ + ../gsl/gsl_minmax.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_ieee_utils.h test_funcs.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_types.h: + +../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_test.h: + +../gsl/gsl_multiroots.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_ieee_utils.h: + +test_funcs.h: diff --git a/gsl-2.5/multiroots/.deps/test_funcs.Po b/gsl-2.5/multiroots/.deps/test_funcs.Po new file mode 100644 index 00000000..a7e1c66c --- /dev/null +++ b/gsl-2.5/multiroots/.deps/test_funcs.Po @@ -0,0 +1,293 @@ +test_funcs.o: test_funcs.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h /usr/include/stdlib.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_types.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_inline.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_vector_complex.h \ + ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_multiroots.h ../gsl/gsl_math.h \ + ../gsl/gsl_sys.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_nan.h ../gsl/gsl_pow_int.h \ + ../gsl/gsl_minmax.h test_funcs.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +/usr/include/stdlib.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_types.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_multiroots.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +test_funcs.h: diff --git a/gsl-2.5/multiroots/.libs/libgslmultiroots.la b/gsl-2.5/multiroots/.libs/libgslmultiroots.la new file mode 120000 index 00000000..728e7d3d --- /dev/null +++ b/gsl-2.5/multiroots/.libs/libgslmultiroots.la @@ -0,0 +1 @@ +../libgslmultiroots.la \ No newline at end of file diff --git a/gsl-2.5/multiroots/.libs/lt-test b/gsl-2.5/multiroots/.libs/lt-test new file mode 100755 index 00000000..af765c5d Binary files /dev/null and b/gsl-2.5/multiroots/.libs/lt-test differ diff --git a/gsl-2.5/multiroots/.libs/test b/gsl-2.5/multiroots/.libs/test new file mode 100755 index 00000000..43db059c Binary files /dev/null and b/gsl-2.5/multiroots/.libs/test differ diff --git a/gsl-2.5/multiroots/ChangeLog b/gsl-2.5/multiroots/ChangeLog new file mode 100644 index 00000000..d5a85bde --- /dev/null +++ b/gsl-2.5/multiroots/ChangeLog @@ -0,0 +1,142 @@ +2011-01-24 Brian Gough + + * gnewton.c (gnewton_iterate): check for singular jacobian + + * newton.c (newton_iterate): check for singular jacobian + +2009-07-09 Brian Gough + + * fsolver.c (gsl_multiroot_fsolver_free): handle NULL argument in + free + + * fdfsolver.c (gsl_multiroot_fdfsolver_free): handle NULL argument + in free + +2008-07-03 Brian Gough + + * Makefile.am (INCLUDES): use top_srcdir instead of top_builddir + +2007-11-09 Brian Gough + + * convergence.c (gsl_multiroot_test_delta): accept dxi = 0 + +2007-08-27 Brian Gough + + * fdjac.c (gsl_multiroot_fdjacobian): detect null columns (dx too + small) + (gsl_multiroot_fdjacobian): avoid memory leak for x1,f1 + +2007-01-26 Brian Gough + + * fsolver.c (gsl_multiroot_fsolver_set): made vector argument x + const + + * fdfsolver.c (gsl_multiroot_fdfsolver_set): made vector argument + x const + +Tue Nov 12 22:26:40 2002 Brian Gough + + * newton.c (newton_alloc): return error code, not null + + * hybridj.c (hybridj_alloc): return error code, not null + + * hybrid.c (hybrid_alloc): return error code, not null + + * gnewton.c (gnewton_alloc): return error code, not null + + * dnewton.c (dnewton_alloc): return error code, not null + + * broyden.c (broyden_alloc): return error code, not null + +Wed May 1 21:40:55 2002 Brian Gough + + * fdfsolver.c (gsl_multiroot_fdfsolver_dx): new function to return + dx + (gsl_multiroot_fdfsolver_f): new function to return f + + * fsolver.c (gsl_multiroot_fsolver_dx): new function to return dx + (gsl_multiroot_fsolver_f): new function to return f + +Sat Jan 26 17:11:34 2002 Brian Gough + + * hybrid.c (set): fix broken 'if' statement + +Thu Jan 10 19:26:55 2002 Brian Gough + + * hybrid.c dnewton.c: return status values for user-function + (Theis Peter Hansen) + +Tue Jun 19 23:40:18 2001 Brian Gough + + * hybrid.c: removed workspace for linalg calls, no longer needed + + * hybridj.c: removed workspace for linalg calls, no longer needed + +Wed Jun 6 13:31:18 2001 Brian Gough + + * hybridj.c: updated to use new QR calling convention (now passes + workspace) + + * hybrid.c: updated to use new QR calling convention (now passes + workspace) + +Mon Apr 23 12:55:39 2001 Brian Gough + + * Makefile.am (test_LDADD): added cblas lib + +Mon Apr 16 20:18:08 2001 Brian Gough + + * dnewton.c (dnewton_iterate): removed unnecessary status variable + +Sun Feb 18 11:26:45 2001 Brian Gough + + * fdfsolver.c fsolver.c: changed so that the solver _alloc + function no longer calls _set, the user must do that separately. + +Thu Nov 30 21:48:39 2000 Brian Gough + + * newton.c (newton_iterate): return GSL_EBADFUNC if error in + function evaluation + + * hybridj.c (iterate): return GSL_EBADFUNC if error in + function evaluation + + * hybrid.c (iterate): return GSL_EBADFUNC if error in function + evaluation + + * gnewton.c (gnewton_iterate): return GSL_EBADFUNC if error in + function evaluation + + * fdjac.c (gsl_multiroot_fdjacobian): return GSL_EBADFUNC if error + in function evaluation + + * dnewton.c (dnewton_iterate): return GSL_EBADFUNC if error in + function evaluation + + * broyden.c (broyden_iterate): return GSL_EBADFUNC if error in + function evaluation + +Sun Aug 27 13:43:13 2000 Brian Gough + + * hybridj.c hybrid.c dogleg.c: begin comments with a capital + letter to improve readability + +Sat Aug 26 16:12:19 2000 Brian Gough + + * hybridj.c hybrid.c: renamed rdiag to tau, since it plays that + role here and is not the diagonal of R (see qr.c documentation for + more details) + +Wed Feb 23 15:36:39 2000 Brian Gough + + * changed gsl_vector_copy to gsl_vector_cpy + +Fri Feb 18 18:45:02 2000 Brian Gough + + * fixed various .c files to use permutation + +Wed Feb 16 21:13:24 2000 Brian Gough + + * fixed Makefiles that include gsl_linalg.h to add + -I$(srcdir)/../permutation to their include path + diff --git a/gsl-2.5/multiroots/Makefile b/gsl-2.5/multiroots/Makefile new file mode 100644 index 00000000..81d1178d --- /dev/null +++ b/gsl-2.5/multiroots/Makefile @@ -0,0 +1,1044 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# multiroots/Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + + +# -*-makefile-*- + + + +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/gsl +pkgincludedir = $(includedir)/gsl +pkglibdir = $(libdir)/gsl +pkglibexecdir = $(libexecdir)/gsl +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = x86_64-unknown-linux-gnu +host_triplet = x86_64-unknown-linux-gnu +check_PROGRAMS = test$(EXEEXT) +subdir = multiroots +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp \ + $(noinst_HEADERS) $(pkginclude_HEADERS) \ + $(top_srcdir)/test-driver ChangeLog +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +libgslmultiroots_la_LIBADD = +am_libgslmultiroots_la_OBJECTS = fdjac.lo fsolver.lo fdfsolver.lo \ + convergence.lo newton.lo gnewton.lo dnewton.lo broyden.lo \ + hybrid.lo hybridj.lo +libgslmultiroots_la_OBJECTS = $(am_libgslmultiroots_la_OBJECTS) +AM_V_lt = $(am__v_lt_$(V)) +am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) +am__v_lt_0 = --silent +am__v_lt_1 = +am_test_OBJECTS = test.$(OBJEXT) test_funcs.$(OBJEXT) +test_OBJECTS = $(am_test_OBJECTS) +test_DEPENDENCIES = libgslmultiroots.la ../linalg/libgsllinalg.la \ + ../blas/libgslblas.la ../cblas/libgslcblas.la \ + ../permutation/libgslpermutation.la ../matrix/libgslmatrix.la \ + ../vector/libgslvector.la ../block/libgslblock.la \ + ../complex/libgslcomplex.la ../ieee-utils/libgslieeeutils.la \ + ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la \ + ../utils/libutils.la +AM_V_P = $(am__v_P_$(V)) +am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY)) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_$(V)) +am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_$(V)) +am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I. -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_$(V)) +am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_$(V)) +am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libgslmultiroots_la_SOURCES) $(test_SOURCES) +DIST_SOURCES = $(libgslmultiroots_la_SOURCES) $(test_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(pkgincludedir)" +HEADERS = $(noinst_HEADERS) $(pkginclude_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = .test +LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing aclocal-1.13 +AMTAR = $${TAR-tar} +AM_DEFAULT_VERBOSITY = 1 +AR = ar +AS = as +AUTOCONF = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing autoconf +AUTOHEADER = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing autoheader +AUTOMAKE = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing automake-1.13 +AWK = gawk +CC = gcc +CCDEPMODE = depmode=gcc3 +CFLAGS = -g -O2 +CPP = gcc -E +CPPFLAGS = +CYGPATH_W = echo +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +DLLTOOL = false +DSYMUTIL = +DUMPBIN = +ECHO_C = +ECHO_N = -n +ECHO_T = +EGREP = /usr/bin/grep -E +EXEEXT = +FGREP = /usr/bin/grep -F +GREP = /usr/bin/grep +GSLCBLAS_LDFLAGS = +GSL_CFLAGS = -I${prefix}/include +GSL_LDFLAGS = +GSL_LIBADD = +GSL_LIBM = -lm +GSL_LIBS = -L${exec_prefix}/lib -lgsl +GSL_LT_CBLAS_VERSION = 0:0:0 +GSL_LT_VERSION = 24:0:1 +GSL_MAJOR_VERSION = 2 +GSL_MINOR_VERSION = 5 +HAVE_AIX_IEEE_INTERFACE = +HAVE_DARWIN86_IEEE_INTERFACE = +HAVE_DARWIN_IEEE_INTERFACE = +HAVE_FREEBSD_IEEE_INTERFACE = +HAVE_GNUM68K_IEEE_INTERFACE = +HAVE_GNUPPC_IEEE_INTERFACE = +HAVE_GNUSPARC_IEEE_INTERFACE = +HAVE_GNUX86_IEEE_INTERFACE = +HAVE_HPUX11_IEEE_INTERFACE = +HAVE_HPUX_IEEE_INTERFACE = +HAVE_IRIX_IEEE_INTERFACE = +HAVE_NETBSD_IEEE_INTERFACE = +HAVE_OPENBSD_IEEE_INTERFACE = +HAVE_OS2EMX_IEEE_INTERFACE = +HAVE_SOLARIS_IEEE_INTERFACE = +HAVE_SUNOS4_IEEE_INTERFACE = +HAVE_TRU64_IEEE_INTERFACE = +INSTALL = /usr/bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = $(install_sh) -c -s +LD = /usr/bin/ld -m elf_x86_64 +LDFLAGS = +LIBM = -lm +LIBOBJS = +LIBS = -lm +LIBTOOL = $(SHELL) $(top_builddir)/libtool +LIPO = +LN_S = ln -s +LTLIBOBJS = +MAINT = # +MAKEINFO = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing makeinfo +MANIFEST_TOOL = : +MKDIR_P = /usr/bin/mkdir -p +NM = /usr/bin/nm -B +NMEDIT = +OBJDUMP = objdump +OBJEXT = o +OTOOL = +OTOOL64 = +PACKAGE = gsl +PACKAGE_BUGREPORT = +PACKAGE_NAME = gsl +PACKAGE_STRING = gsl 2.5 +PACKAGE_TARNAME = gsl +PACKAGE_URL = +PACKAGE_VERSION = 2.5 +PATH_SEPARATOR = : +RANLIB = ranlib +SED = /usr/bin/sed +SET_MAKE = +SHELL = /bin/sh +STRIP = strip +VERSION = 2.5 +abs_builddir = /home/groups/kipac/chto/package/gsl/gsl-2.5/multiroots +abs_srcdir = /home/groups/kipac/chto/package/gsl/gsl-2.5/multiroots +abs_top_builddir = /home/groups/kipac/chto/package/gsl/gsl-2.5 +abs_top_srcdir = /home/groups/kipac/chto/package/gsl/gsl-2.5 +ac_ct_AR = ar +ac_ct_CC = gcc +ac_ct_DUMPBIN = +am__include = include +am__leading_dot = . +am__quote = +am__tar = $${TAR-tar} chof - "$$tardir" +am__untar = $${TAR-tar} xf - +bindir = ${exec_prefix}/bin +build = x86_64-unknown-linux-gnu +build_alias = +build_cpu = x86_64 +build_os = linux-gnu +build_vendor = unknown +builddir = . +datadir = ${datarootdir} +datarootdir = ${prefix}/share +docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} +dvidir = ${docdir} +exec_prefix = ${prefix} +host = x86_64-unknown-linux-gnu +host_alias = +host_cpu = x86_64 +host_os = linux-gnu +host_vendor = unknown +htmldir = ${docdir} +includedir = ${prefix}/include +infodir = ${datarootdir}/info +install_sh = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/install-sh +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +localedir = ${datarootdir}/locale +localstatedir = ${prefix}/var +mandir = ${datarootdir}/man +mkdir_p = $(MKDIR_P) +oldincludedir = /usr/include +pdfdir = ${docdir} +prefix = /home/groups/kipac/chto/package/gsl/gsl_lib +program_transform_name = s,x,x, +psdir = ${docdir} +sbindir = ${exec_prefix}/sbin +sharedstatedir = ${prefix}/com +srcdir = . +sysconfdir = ${prefix}/etc +target_alias = +top_build_prefix = ../ +top_builddir = .. +top_srcdir = .. +noinst_LTLIBRARIES = libgslmultiroots.la +pkginclude_HEADERS = gsl_multiroots.h +noinst_HEADERS = enorm.c dogleg.c +AM_CPPFLAGS = -I$(top_srcdir) +libgslmultiroots_la_SOURCES = fdjac.c fsolver.c fdfsolver.c convergence.c newton.c gnewton.c dnewton.c broyden.c hybrid.c hybridj.c +TESTS = $(check_PROGRAMS) +test_SOURCES = test.c test_funcs.c test_funcs.h +test_LDADD = libgslmultiroots.la ../linalg/libgsllinalg.la ../blas/libgslblas.la ../cblas/libgslcblas.la ../permutation/libgslpermutation.la ../matrix/libgslmatrix.la ../vector/libgslvector.la ../block/libgslblock.la ../complex/libgslcomplex.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu multiroots/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu multiroots/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: # $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): # $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libgslmultiroots.la: $(libgslmultiroots_la_OBJECTS) $(libgslmultiroots_la_DEPENDENCIES) $(EXTRA_libgslmultiroots_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(libgslmultiroots_la_OBJECTS) $(libgslmultiroots_la_LIBADD) $(LIBS) + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) $(EXTRA_test_DEPENDENCIES) + @rm -f test$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_OBJECTS) $(test_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +include ./$(DEPDIR)/broyden.Plo +include ./$(DEPDIR)/convergence.Plo +include ./$(DEPDIR)/dnewton.Plo +include ./$(DEPDIR)/fdfsolver.Plo +include ./$(DEPDIR)/fdjac.Plo +include ./$(DEPDIR)/fsolver.Plo +include ./$(DEPDIR)/gnewton.Plo +include ./$(DEPDIR)/hybrid.Plo +include ./$(DEPDIR)/hybridj.Plo +include ./$(DEPDIR)/newton.Plo +include ./$(DEPDIR)/test.Po +include ./$(DEPDIR)/test_funcs.Po + +.c.o: + $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# $(AM_V_CC)source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(COMPILE) -c $< + +.c.obj: + $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# $(AM_V_CC)source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: + $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +# $(AM_V_CC)source='$<' object='$@' libtool=yes \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-pkgincludeHEADERS: $(pkginclude_HEADERS) + @$(NORMAL_INSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \ + done + +uninstall-pkgincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + else \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_PROGRAMS) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +test.log: test$(EXEEXT) + @p='test$(EXEEXT)'; \ + b='test'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +#.test$(EXEEXT).log: +# @p='$<'; \ +# $(am__set_b); \ +# $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +# --log-file $$b.log --trs-file $$b.trs \ +# $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +# "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-am +all-am: Makefile $(LTLIBRARIES) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(pkgincludedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-pkgincludeHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-pkgincludeHEADERS + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES cscopelist-am ctags ctags-am distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-pkgincludeHEADERS \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + recheck tags tags-am uninstall uninstall-am \ + uninstall-pkgincludeHEADERS + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gsl-2.5/multiroots/Makefile.am b/gsl-2.5/multiroots/Makefile.am new file mode 100644 index 00000000..a351c3f3 --- /dev/null +++ b/gsl-2.5/multiroots/Makefile.am @@ -0,0 +1,19 @@ +# -*-makefile-*- + +noinst_LTLIBRARIES = libgslmultiroots.la + +pkginclude_HEADERS = gsl_multiroots.h + +noinst_HEADERS = enorm.c dogleg.c + +AM_CPPFLAGS = -I$(top_srcdir) + +libgslmultiroots_la_SOURCES = fdjac.c fsolver.c fdfsolver.c convergence.c newton.c gnewton.c dnewton.c broyden.c hybrid.c hybridj.c + +check_PROGRAMS = test + +TESTS = $(check_PROGRAMS) + +test_SOURCES = test.c test_funcs.c test_funcs.h +test_LDADD = libgslmultiroots.la ../linalg/libgsllinalg.la ../blas/libgslblas.la ../cblas/libgslcblas.la ../permutation/libgslpermutation.la ../matrix/libgslmatrix.la ../vector/libgslvector.la ../block/libgslblock.la ../complex/libgslcomplex.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la + diff --git a/gsl-2.5/multiroots/Makefile.in b/gsl-2.5/multiroots/Makefile.in new file mode 100644 index 00000000..b6d59894 --- /dev/null +++ b/gsl-2.5/multiroots/Makefile.in @@ -0,0 +1,1044 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# -*-makefile-*- + + +VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +check_PROGRAMS = test$(EXEEXT) +subdir = multiroots +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp \ + $(noinst_HEADERS) $(pkginclude_HEADERS) \ + $(top_srcdir)/test-driver ChangeLog +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +libgslmultiroots_la_LIBADD = +am_libgslmultiroots_la_OBJECTS = fdjac.lo fsolver.lo fdfsolver.lo \ + convergence.lo newton.lo gnewton.lo dnewton.lo broyden.lo \ + hybrid.lo hybridj.lo +libgslmultiroots_la_OBJECTS = $(am_libgslmultiroots_la_OBJECTS) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +am_test_OBJECTS = test.$(OBJEXT) test_funcs.$(OBJEXT) +test_OBJECTS = $(am_test_OBJECTS) +test_DEPENDENCIES = libgslmultiroots.la ../linalg/libgsllinalg.la \ + ../blas/libgslblas.la ../cblas/libgslcblas.la \ + ../permutation/libgslpermutation.la ../matrix/libgslmatrix.la \ + ../vector/libgslvector.la ../block/libgslblock.la \ + ../complex/libgslcomplex.la ../ieee-utils/libgslieeeutils.la \ + ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la \ + ../utils/libutils.la +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libgslmultiroots_la_SOURCES) $(test_SOURCES) +DIST_SOURCES = $(libgslmultiroots_la_SOURCES) $(test_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(pkgincludedir)" +HEADERS = $(noinst_HEADERS) $(pkginclude_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = @EXEEXT@ .test +LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +GSLCBLAS_LDFLAGS = @GSLCBLAS_LDFLAGS@ +GSL_CFLAGS = @GSL_CFLAGS@ +GSL_LDFLAGS = @GSL_LDFLAGS@ +GSL_LIBADD = @GSL_LIBADD@ +GSL_LIBM = @GSL_LIBM@ +GSL_LIBS = @GSL_LIBS@ +GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ +GSL_LT_VERSION = @GSL_LT_VERSION@ +GSL_MAJOR_VERSION = @GSL_MAJOR_VERSION@ +GSL_MINOR_VERSION = @GSL_MINOR_VERSION@ +HAVE_AIX_IEEE_INTERFACE = @HAVE_AIX_IEEE_INTERFACE@ +HAVE_DARWIN86_IEEE_INTERFACE = @HAVE_DARWIN86_IEEE_INTERFACE@ +HAVE_DARWIN_IEEE_INTERFACE = @HAVE_DARWIN_IEEE_INTERFACE@ +HAVE_FREEBSD_IEEE_INTERFACE = @HAVE_FREEBSD_IEEE_INTERFACE@ +HAVE_GNUM68K_IEEE_INTERFACE = @HAVE_GNUM68K_IEEE_INTERFACE@ +HAVE_GNUPPC_IEEE_INTERFACE = @HAVE_GNUPPC_IEEE_INTERFACE@ +HAVE_GNUSPARC_IEEE_INTERFACE = @HAVE_GNUSPARC_IEEE_INTERFACE@ +HAVE_GNUX86_IEEE_INTERFACE = @HAVE_GNUX86_IEEE_INTERFACE@ +HAVE_HPUX11_IEEE_INTERFACE = @HAVE_HPUX11_IEEE_INTERFACE@ +HAVE_HPUX_IEEE_INTERFACE = @HAVE_HPUX_IEEE_INTERFACE@ +HAVE_IRIX_IEEE_INTERFACE = @HAVE_IRIX_IEEE_INTERFACE@ +HAVE_NETBSD_IEEE_INTERFACE = @HAVE_NETBSD_IEEE_INTERFACE@ +HAVE_OPENBSD_IEEE_INTERFACE = @HAVE_OPENBSD_IEEE_INTERFACE@ +HAVE_OS2EMX_IEEE_INTERFACE = @HAVE_OS2EMX_IEEE_INTERFACE@ +HAVE_SOLARIS_IEEE_INTERFACE = @HAVE_SOLARIS_IEEE_INTERFACE@ +HAVE_SUNOS4_IEEE_INTERFACE = @HAVE_SUNOS4_IEEE_INTERFACE@ +HAVE_TRU64_IEEE_INTERFACE = @HAVE_TRU64_IEEE_INTERFACE@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBM = @LIBM@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +noinst_LTLIBRARIES = libgslmultiroots.la +pkginclude_HEADERS = gsl_multiroots.h +noinst_HEADERS = enorm.c dogleg.c +AM_CPPFLAGS = -I$(top_srcdir) +libgslmultiroots_la_SOURCES = fdjac.c fsolver.c fdfsolver.c convergence.c newton.c gnewton.c dnewton.c broyden.c hybrid.c hybridj.c +TESTS = $(check_PROGRAMS) +test_SOURCES = test.c test_funcs.c test_funcs.h +test_LDADD = libgslmultiroots.la ../linalg/libgsllinalg.la ../blas/libgslblas.la ../cblas/libgslcblas.la ../permutation/libgslpermutation.la ../matrix/libgslmatrix.la ../vector/libgslvector.la ../block/libgslblock.la ../complex/libgslcomplex.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu multiroots/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu multiroots/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libgslmultiroots.la: $(libgslmultiroots_la_OBJECTS) $(libgslmultiroots_la_DEPENDENCIES) $(EXTRA_libgslmultiroots_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(libgslmultiroots_la_OBJECTS) $(libgslmultiroots_la_LIBADD) $(LIBS) + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) $(EXTRA_test_DEPENDENCIES) + @rm -f test$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_OBJECTS) $(test_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/broyden.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/convergence.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dnewton.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fdfsolver.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fdjac.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fsolver.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gnewton.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hybrid.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hybridj.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/newton.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_funcs.Po@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-pkgincludeHEADERS: $(pkginclude_HEADERS) + @$(NORMAL_INSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \ + done + +uninstall-pkgincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + else \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_PROGRAMS) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +test.log: test$(EXEEXT) + @p='test$(EXEEXT)'; \ + b='test'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +@am__EXEEXT_TRUE@.test$(EXEEXT).log: +@am__EXEEXT_TRUE@ @p='$<'; \ +@am__EXEEXT_TRUE@ $(am__set_b); \ +@am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +@am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ +@am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +@am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-am +all-am: Makefile $(LTLIBRARIES) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(pkgincludedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-pkgincludeHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-pkgincludeHEADERS + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES cscopelist-am ctags ctags-am distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-pkgincludeHEADERS \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + recheck tags tags-am uninstall uninstall-am \ + uninstall-pkgincludeHEADERS + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gsl-2.5/multiroots/broyden.c b/gsl-2.5/multiroots/broyden.c new file mode 100644 index 00000000..65c96478 --- /dev/null +++ b/gsl-2.5/multiroots/broyden.c @@ -0,0 +1,456 @@ +/* multiroots/broyden.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include + +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +#include "enorm.c" + +/* Broyden's method. It is not an efficient or modern algorithm but + gives an example of a rank-1 update. + + C.G. Broyden, "A Class of Methods for Solving Nonlinear + Simultaneous Equations", Mathematics of Computation, vol 19 (1965), + p 577-593 + + */ + +typedef struct + { + gsl_matrix *H; + gsl_matrix *lu; + gsl_permutation *permutation; + gsl_vector *v; + gsl_vector *w; + gsl_vector *y; + gsl_vector *p; + gsl_vector *fnew; + gsl_vector *x_trial; + double phi; + } +broyden_state_t; + +static int broyden_alloc (void *vstate, size_t n); +static int broyden_set (void *vstate, gsl_multiroot_function * function, gsl_vector * x, gsl_vector * f, gsl_vector * dx); +static int broyden_iterate (void *vstate, gsl_multiroot_function * function, gsl_vector * x, gsl_vector * f, gsl_vector * dx); +static void broyden_free (void *vstate); + + +static int +broyden_alloc (void *vstate, size_t n) +{ + broyden_state_t *state = (broyden_state_t *) vstate; + gsl_vector *v, *w, *y, *fnew, *x_trial, *p; + gsl_permutation *perm; + gsl_matrix *m, *H; + + m = gsl_matrix_calloc (n, n); + + if (m == 0) + { + GSL_ERROR ("failed to allocate space for lu", GSL_ENOMEM); + } + + state->lu = m; + + perm = gsl_permutation_calloc (n); + + if (perm == 0) + { + gsl_matrix_free (m); + + GSL_ERROR ("failed to allocate space for permutation", GSL_ENOMEM); + } + + state->permutation = perm; + + H = gsl_matrix_calloc (n, n); + + if (H == 0) + { + gsl_permutation_free (perm); + gsl_matrix_free (m); + + GSL_ERROR ("failed to allocate space for d", GSL_ENOMEM); + } + + state->H = H; + + v = gsl_vector_calloc (n); + + if (v == 0) + { + gsl_matrix_free (H); + gsl_permutation_free (perm); + gsl_matrix_free (m); + + GSL_ERROR ("failed to allocate space for v", GSL_ENOMEM); + } + + state->v = v; + + w = gsl_vector_calloc (n); + + if (w == 0) + { + gsl_vector_free (v); + gsl_matrix_free (H); + gsl_permutation_free (perm); + gsl_matrix_free (m); + + GSL_ERROR ("failed to allocate space for w", GSL_ENOMEM); + } + + state->w = w; + + y = gsl_vector_calloc (n); + + if (y == 0) + { + gsl_vector_free (w); + gsl_vector_free (v); + gsl_matrix_free (H); + gsl_permutation_free (perm); + gsl_matrix_free (m); + + GSL_ERROR ("failed to allocate space for y", GSL_ENOMEM); + } + + state->y = y; + + fnew = gsl_vector_calloc (n); + + if (fnew == 0) + { + gsl_vector_free (y); + gsl_vector_free (w); + gsl_vector_free (v); + gsl_matrix_free (H); + gsl_permutation_free (perm); + gsl_matrix_free (m); + + GSL_ERROR ("failed to allocate space for fnew", GSL_ENOMEM); + } + + state->fnew = fnew; + + x_trial = gsl_vector_calloc (n); + + if (x_trial == 0) + { + gsl_vector_free (fnew); + gsl_vector_free (y); + gsl_vector_free (w); + gsl_vector_free (v); + gsl_matrix_free (H); + gsl_permutation_free (perm); + gsl_matrix_free (m); + + GSL_ERROR ("failed to allocate space for x_trial", GSL_ENOMEM); + } + + state->x_trial = x_trial; + + p = gsl_vector_calloc (n); + + if (p == 0) + { + gsl_vector_free (x_trial); + gsl_vector_free (fnew); + gsl_vector_free (y); + gsl_vector_free (w); + gsl_vector_free (v); + gsl_matrix_free (H); + gsl_permutation_free (perm); + gsl_matrix_free (m); + + GSL_ERROR ("failed to allocate space for p", GSL_ENOMEM); + } + + state->p = p; + + return GSL_SUCCESS; +} + +static int +broyden_set (void *vstate, gsl_multiroot_function * function, gsl_vector * x, gsl_vector * f, gsl_vector * dx) +{ + broyden_state_t *state = (broyden_state_t *) vstate; + size_t i, j, n = function->n; + int signum = 0; + + GSL_MULTIROOT_FN_EVAL (function, x, f); + + gsl_multiroot_fdjacobian (function, x, f, GSL_SQRT_DBL_EPSILON, state->lu); + gsl_linalg_LU_decomp (state->lu, state->permutation, &signum); + gsl_linalg_LU_invert (state->lu, state->permutation, state->H); + + for (i = 0; i < n; i++) + for (j = 0; j < n; j++) + gsl_matrix_set(state->H,i,j,-gsl_matrix_get(state->H,i,j)); + + for (i = 0; i < n; i++) + { + gsl_vector_set (dx, i, 0.0); + } + + state->phi = enorm (f); + + return GSL_SUCCESS; +} + +static int +broyden_iterate (void *vstate, gsl_multiroot_function * function, gsl_vector * x, gsl_vector * f, gsl_vector * dx) +{ + broyden_state_t *state = (broyden_state_t *) vstate; + + double phi0, phi1, t, lambda; + + gsl_matrix *H = state->H; + gsl_vector *p = state->p; + gsl_vector *y = state->y; + gsl_vector *v = state->v; + gsl_vector *w = state->w; + gsl_vector *fnew = state->fnew; + gsl_vector *x_trial = state->x_trial; + gsl_matrix *lu = state->lu; + gsl_permutation *perm = state->permutation; + + size_t i, j, iter; + + size_t n = function->n; + + /* p = H f */ + + for (i = 0; i < n; i++) + { + double sum = 0; + + for (j = 0; j < n; j++) + { + sum += gsl_matrix_get (H, i, j) * gsl_vector_get (f, j); + } + gsl_vector_set (p, i, sum); + } + + t = 1; + iter = 0; + + phi0 = state->phi; + +new_step: + + for (i = 0; i < n; i++) + { + double pi = gsl_vector_get (p, i); + double xi = gsl_vector_get (x, i); + gsl_vector_set (x_trial, i, xi + t * pi); + } + + { + int status = GSL_MULTIROOT_FN_EVAL (function, x_trial, fnew); + + if (status != GSL_SUCCESS) + { + return GSL_EBADFUNC; + } + } + + phi1 = enorm (fnew); + + iter++ ; + + if (phi1 > phi0 && iter < 10 && t > 0.1) + { + /* full step goes uphill, take a reduced step instead */ + + double theta = phi1 / phi0; + t *= (sqrt (1.0 + 6.0 * theta) - 1.0) / (3.0 * theta); + goto new_step; + } + + if (phi1 > phi0) + { + /* need to recompute Jacobian */ + int signum = 0; + + gsl_multiroot_fdjacobian (function, x, f, GSL_SQRT_DBL_EPSILON, lu); + + for (i = 0; i < n; i++) + for (j = 0; j < n; j++) + gsl_matrix_set(lu,i,j,-gsl_matrix_get(lu,i,j)); + + gsl_linalg_LU_decomp (lu, perm, &signum); + gsl_linalg_LU_invert (lu, perm, H); + + gsl_linalg_LU_solve (lu, perm, f, p); + + t = 1; + + for (i = 0; i < n; i++) + { + double pi = gsl_vector_get (p, i); + double xi = gsl_vector_get (x, i); + gsl_vector_set (x_trial, i, xi + t * pi); + } + + { + int status = GSL_MULTIROOT_FN_EVAL (function, x_trial, fnew); + + if (status != GSL_SUCCESS) + { + return GSL_EBADFUNC; + } + } + + phi1 = enorm (fnew); + } + + /* y = f' - f */ + + for (i = 0; i < n; i++) + { + double yi = gsl_vector_get (fnew, i) - gsl_vector_get (f, i); + gsl_vector_set (y, i, yi); + } + + /* v = H y */ + + for (i = 0; i < n; i++) + { + double sum = 0; + + for (j = 0; j < n; j++) + { + sum += gsl_matrix_get (H, i, j) * gsl_vector_get (y, j); + } + + gsl_vector_set (v, i, sum); + } + + /* lambda = p . v */ + + lambda = 0; + + for (i = 0; i < n; i++) + { + lambda += gsl_vector_get (p, i) * gsl_vector_get (v, i); + } + + if (lambda == 0) + { + GSL_ERROR ("approximation to Jacobian has collapsed", GSL_EZERODIV) ; + } + + /* v' = v + t * p */ + + for (i = 0; i < n; i++) + { + double vi = gsl_vector_get (v, i) + t * gsl_vector_get (p, i); + gsl_vector_set (v, i, vi); + } + + /* w^T = p^T H */ + + for (i = 0; i < n; i++) + { + double sum = 0; + + for (j = 0; j < n; j++) + { + sum += gsl_matrix_get (H, j, i) * gsl_vector_get (p, j); + } + + gsl_vector_set (w, i, sum); + } + + /* Hij -> Hij - (vi wj / lambda) */ + + for (i = 0; i < n; i++) + { + double vi = gsl_vector_get (v, i); + + for (j = 0; j < n; j++) + { + double wj = gsl_vector_get (w, j); + double Hij = gsl_matrix_get (H, i, j) - vi * wj / lambda; + gsl_matrix_set (H, i, j, Hij); + } + } + + /* copy fnew into f */ + + gsl_vector_memcpy (f, fnew); + + /* copy x_trial into x */ + + gsl_vector_memcpy (x, x_trial); + + for (i = 0; i < n; i++) + { + double pi = gsl_vector_get (p, i); + gsl_vector_set (dx, i, t * pi); + } + + state->phi = phi1; + + return GSL_SUCCESS; +} + + +static void +broyden_free (void *vstate) +{ + broyden_state_t *state = (broyden_state_t *) vstate; + + gsl_matrix_free (state->H); + + gsl_matrix_free (state->lu); + gsl_permutation_free (state->permutation); + + gsl_vector_free (state->v); + gsl_vector_free (state->w); + gsl_vector_free (state->y); + gsl_vector_free (state->p); + + gsl_vector_free (state->fnew); + gsl_vector_free (state->x_trial); + +} + + +static const gsl_multiroot_fsolver_type broyden_type = +{"broyden", /* name */ + sizeof (broyden_state_t), + &broyden_alloc, + &broyden_set, + &broyden_iterate, + &broyden_free}; + +const gsl_multiroot_fsolver_type *gsl_multiroot_fsolver_broyden = &broyden_type; diff --git a/gsl-2.5/multiroots/broyden.lo b/gsl-2.5/multiroots/broyden.lo new file mode 100644 index 00000000..560718fd --- /dev/null +++ b/gsl-2.5/multiroots/broyden.lo @@ -0,0 +1,12 @@ +# broyden.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/broyden.o' + +# Name of the non-PIC object +non_pic_object='broyden.o' + diff --git a/gsl-2.5/multiroots/convergence.c b/gsl-2.5/multiroots/convergence.c new file mode 100644 index 00000000..17cea33a --- /dev/null +++ b/gsl-2.5/multiroots/convergence.c @@ -0,0 +1,90 @@ +/* multiroots/convergence.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include + +int +gsl_multiroot_test_delta (const gsl_vector * dx, const gsl_vector * x, + double epsabs, double epsrel) +{ + size_t i; + int ok = 1; + const size_t n = x->size ; + + if (epsrel < 0.0) + { + GSL_ERROR ("relative tolerance is negative", GSL_EBADTOL); + } + + for (i = 0 ; i < n ; i++) + { + double xi = gsl_vector_get(x,i); + double dxi = gsl_vector_get(dx,i); + double tolerance = epsabs + epsrel * fabs(xi) ; + + if (fabs(dxi) < tolerance || dxi == 0) + { + ok = 1; + } + else + { + ok = 0; + break; + } + } + + if (ok) + return GSL_SUCCESS ; + + return GSL_CONTINUE; +} + +int +gsl_multiroot_test_residual (const gsl_vector * f, double epsabs) +{ + size_t i; + + double residual = 0; + + const size_t n = f->size; + + if (epsabs < 0.0) + { + GSL_ERROR ("absolute tolerance is negative", GSL_EBADTOL); + } + + for (i = 0 ; i < n ; i++) + { + double fi = gsl_vector_get(f, i); + + residual += fabs(fi); + } + + + if (residual < epsabs) + { + return GSL_SUCCESS; + } + + return GSL_CONTINUE ; +} + diff --git a/gsl-2.5/multiroots/convergence.lo b/gsl-2.5/multiroots/convergence.lo new file mode 100644 index 00000000..a5468a8d --- /dev/null +++ b/gsl-2.5/multiroots/convergence.lo @@ -0,0 +1,12 @@ +# convergence.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/convergence.o' + +# Name of the non-PIC object +non_pic_object='convergence.o' + diff --git a/gsl-2.5/multiroots/dnewton.c b/gsl-2.5/multiroots/dnewton.c new file mode 100644 index 00000000..66b049bb --- /dev/null +++ b/gsl-2.5/multiroots/dnewton.c @@ -0,0 +1,186 @@ +/* multiroots/dnewton.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include + +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +/* Newton method using a finite difference approximation to the jacobian. + The derivatives are estimated using a step size of + + h_i = sqrt(DBL_EPSILON) * x_i + + */ + +typedef struct + { + gsl_matrix * J; + gsl_matrix * lu; + gsl_permutation * permutation; + } +dnewton_state_t; + +static int dnewton_alloc (void * vstate, size_t n); +static int dnewton_set (void * vstate, gsl_multiroot_function * function, gsl_vector * x, gsl_vector * f, gsl_vector * dx); +static int dnewton_iterate (void * vstate, gsl_multiroot_function * function, gsl_vector * x, gsl_vector * f, gsl_vector * dx); +static void dnewton_free (void * vstate); + +static int +dnewton_alloc (void * vstate, size_t n) +{ + dnewton_state_t * state = (dnewton_state_t *) vstate; + gsl_permutation * p; + gsl_matrix * m, * J; + + m = gsl_matrix_calloc (n,n); + + if (m == 0) + { + GSL_ERROR ("failed to allocate space for lu", GSL_ENOMEM); + } + + state->lu = m ; + + p = gsl_permutation_calloc (n); + + if (p == 0) + { + gsl_matrix_free(m); + + GSL_ERROR ("failed to allocate space for permutation", GSL_ENOMEM); + } + + state->permutation = p ; + + J = gsl_matrix_calloc (n,n); + + if (J == 0) + { + gsl_permutation_free(p); + gsl_matrix_free(m); + + GSL_ERROR ("failed to allocate space for d", GSL_ENOMEM); + } + + state->J = J; + + return GSL_SUCCESS; +} + +static int +dnewton_set (void * vstate, gsl_multiroot_function * function, gsl_vector * x, gsl_vector * f, gsl_vector * dx) +{ + dnewton_state_t * state = (dnewton_state_t *) vstate; + size_t i, n = function->n ; + int status; + + status = GSL_MULTIROOT_FN_EVAL (function, x, f); + if (status) + return status; + + status = gsl_multiroot_fdjacobian (function, x, f, GSL_SQRT_DBL_EPSILON, + state->J); + if (status) + return status; + + for (i = 0; i < n; i++) + { + gsl_vector_set (dx, i, 0.0); + } + + return GSL_SUCCESS; +} + +static int +dnewton_iterate (void * vstate, gsl_multiroot_function * function, gsl_vector * x, gsl_vector * f, gsl_vector * dx) +{ + dnewton_state_t * state = (dnewton_state_t *) vstate; + + int signum ; + + size_t i; + + size_t n = function->n ; + + gsl_matrix_memcpy (state->lu, state->J); + + { + int status = gsl_linalg_LU_decomp (state->lu, state->permutation, &signum); + if (status) + return status; + } + + { + int status = gsl_linalg_LU_solve (state->lu, state->permutation, f, dx); + if (status) + return status; + } + + for (i = 0; i < n; i++) + { + double e = gsl_vector_get (dx, i); + double y = gsl_vector_get (x, i); + gsl_vector_set (dx, i, -e); + gsl_vector_set (x, i, y - e); + } + + { + int status = GSL_MULTIROOT_FN_EVAL (function, x, f); + + if (status != GSL_SUCCESS) + { + return GSL_EBADFUNC; + } + } + + gsl_multiroot_fdjacobian (function, x, f, GSL_SQRT_DBL_EPSILON, state->J); + + return GSL_SUCCESS; +} + + +static void +dnewton_free (void * vstate) +{ + dnewton_state_t * state = (dnewton_state_t *) vstate; + + gsl_matrix_free(state->J); + gsl_matrix_free(state->lu); + gsl_permutation_free(state->permutation); +} + + +static const gsl_multiroot_fsolver_type dnewton_type = +{"dnewton", /* name */ + sizeof (dnewton_state_t), + &dnewton_alloc, + &dnewton_set, + &dnewton_iterate, + &dnewton_free}; + +const gsl_multiroot_fsolver_type * gsl_multiroot_fsolver_dnewton = &dnewton_type; diff --git a/gsl-2.5/multiroots/dnewton.lo b/gsl-2.5/multiroots/dnewton.lo new file mode 100644 index 00000000..70da0333 --- /dev/null +++ b/gsl-2.5/multiroots/dnewton.lo @@ -0,0 +1,12 @@ +# dnewton.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/dnewton.o' + +# Name of the non-PIC object +non_pic_object='dnewton.o' + diff --git a/gsl-2.5/multiroots/dogleg.c b/gsl-2.5/multiroots/dogleg.c new file mode 100644 index 00000000..b439d953 --- /dev/null +++ b/gsl-2.5/multiroots/dogleg.c @@ -0,0 +1,413 @@ +/* multiroots/dogleg.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include "enorm.c" + +static void compute_diag (const gsl_matrix * J, gsl_vector * diag); +static void update_diag (const gsl_matrix * J, gsl_vector * diag); +static double compute_delta (gsl_vector * diag, gsl_vector * x); +static void compute_df (const gsl_vector * f_trial, const gsl_vector * f, gsl_vector * df); +static void compute_wv (const gsl_vector * qtdf, const gsl_vector *rdx, const gsl_vector *dx, const gsl_vector *diag, double pnorm, gsl_vector * w, gsl_vector * v); + +static double scaled_enorm (const gsl_vector * d, const gsl_vector * f); + +static double scaled_enorm (const gsl_vector * d, const gsl_vector * f) { + double e2 = 0 ; + size_t i, n = f->size ; + for (i = 0; i < n ; i++) { + double fi= gsl_vector_get(f, i); + double di= gsl_vector_get(d, i); + double u = di * fi; + e2 += u * u ; + } + return sqrt(e2); +} + +static double enorm_sum (const gsl_vector * a, const gsl_vector * b); + +static double enorm_sum (const gsl_vector * a, const gsl_vector * b) { + double e2 = 0 ; + size_t i, n = a->size ; + for (i = 0; i < n ; i++) { + double ai= gsl_vector_get(a, i); + double bi= gsl_vector_get(b, i); + double u = ai + bi; + e2 += u * u ; + } + return sqrt(e2); +} + +static void +compute_wv (const gsl_vector * qtdf, const gsl_vector *rdx, const gsl_vector *dx, const gsl_vector *diag, double pnorm, gsl_vector * w, gsl_vector * v) +{ + size_t i, n = qtdf->size; + + for (i = 0; i < n; i++) + { + double qtdfi = gsl_vector_get (qtdf, i); + double rdxi = gsl_vector_get (rdx, i); + double dxi = gsl_vector_get (dx, i); + double diagi = gsl_vector_get (diag, i); + + gsl_vector_set (w, i, (qtdfi - rdxi) / pnorm); + gsl_vector_set (v, i, diagi * diagi * dxi / pnorm); + } +} + + +static void +compute_df (const gsl_vector * f_trial, const gsl_vector * f, gsl_vector * df) +{ + size_t i, n = f->size; + + for (i = 0; i < n; i++) + { + double dfi = gsl_vector_get (f_trial, i) - gsl_vector_get (f, i); + gsl_vector_set (df, i, dfi); + } +} + +static void +compute_diag (const gsl_matrix * J, gsl_vector * diag) +{ + size_t i, j, n = diag->size; + + for (j = 0; j < n; j++) + { + double sum = 0; + for (i = 0; i < n; i++) + { + double Jij = gsl_matrix_get (J, i, j); + sum += Jij * Jij; + } + if (sum == 0) + sum = 1.0; + + gsl_vector_set (diag, j, sqrt (sum)); + } +} + +static void +update_diag (const gsl_matrix * J, gsl_vector * diag) +{ + size_t i, j, n = diag->size; + + for (j = 0; j < n; j++) + { + double cnorm, diagj, sum = 0; + for (i = 0; i < n; i++) + { + double Jij = gsl_matrix_get (J, i, j); + sum += Jij * Jij; + } + if (sum == 0) + sum = 1.0; + + cnorm = sqrt (sum); + diagj = gsl_vector_get (diag, j); + + if (cnorm > diagj) + gsl_vector_set (diag, j, cnorm); + } +} + +static double +compute_delta (gsl_vector * diag, gsl_vector * x) +{ + double Dx = scaled_enorm (diag, x); + double factor = 100; + + return (Dx > 0) ? factor * Dx : factor; +} + +static double +compute_actual_reduction (double fnorm, double fnorm1) +{ + double actred; + + if (fnorm1 < fnorm) + { + double u = fnorm1 / fnorm; + actred = 1 - u * u; + } + else + { + actred = -1; + } + + return actred; +} + +static double +compute_predicted_reduction (double fnorm, double fnorm1) +{ + double prered; + + if (fnorm1 < fnorm) + { + double u = fnorm1 / fnorm; + prered = 1 - u * u; + } + else + { + prered = 0; + } + + return prered; +} + +static void +compute_qtf (const gsl_matrix * q, const gsl_vector * f, gsl_vector * qtf) +{ + size_t i, j, N = f->size ; + + for (j = 0; j < N; j++) + { + double sum = 0; + for (i = 0; i < N; i++) + sum += gsl_matrix_get (q, i, j) * gsl_vector_get (f, i); + + gsl_vector_set (qtf, j, sum); + } +} + +static void +compute_rdx (const gsl_matrix * r, const gsl_vector * dx, gsl_vector * rdx) +{ + size_t i, j, N = dx->size ; + + for (i = 0; i < N; i++) + { + double sum = 0; + + for (j = i; j < N; j++) + { + sum += gsl_matrix_get (r, i, j) * gsl_vector_get (dx, j); + } + + gsl_vector_set (rdx, i, sum); + } +} + + +static void +compute_trial_step (gsl_vector *x, gsl_vector * dx, gsl_vector * x_trial) +{ + size_t i, N = x->size; + + for (i = 0; i < N; i++) + { + double pi = gsl_vector_get (dx, i); + double xi = gsl_vector_get (x, i); + gsl_vector_set (x_trial, i, xi + pi); + } +} + +static int +newton_direction (const gsl_matrix * r, const gsl_vector * qtf, gsl_vector * p) +{ + const size_t N = r->size2; + size_t i; + int status; + + status = gsl_linalg_R_solve (r, qtf, p); + +#ifdef DEBUG + printf("rsolve status = %d\n", status); +#endif + + for (i = 0; i < N; i++) + { + double pi = gsl_vector_get (p, i); + gsl_vector_set (p, i, -pi); + } + + return status; +} + +static void +gradient_direction (const gsl_matrix * r, const gsl_vector * qtf, + const gsl_vector * diag, gsl_vector * g) +{ + const size_t M = r->size1; + const size_t N = r->size2; + + size_t i, j; + + for (j = 0; j < M; j++) + { + double sum = 0; + double dj; + + for (i = 0; i < N; i++) + { + sum += gsl_matrix_get (r, i, j) * gsl_vector_get (qtf, i); + } + + dj = gsl_vector_get (diag, j); + gsl_vector_set (g, j, -sum / dj); + } +} + +static void +minimum_step (double gnorm, const gsl_vector * diag, gsl_vector * g) +{ + const size_t N = g->size; + size_t i; + + for (i = 0; i < N; i++) + { + double gi = gsl_vector_get (g, i); + double di = gsl_vector_get (diag, i); + gsl_vector_set (g, i, (gi / gnorm) / di); + } +} + +static void +compute_Rg (const gsl_matrix * r, const gsl_vector * gradient, gsl_vector * Rg) +{ + const size_t N = r->size2; + size_t i, j; + + for (i = 0; i < N; i++) + { + double sum = 0; + + for (j = i; j < N; j++) + { + double gj = gsl_vector_get (gradient, j); + double rij = gsl_matrix_get (r, i, j); + sum += rij * gj; + } + + gsl_vector_set (Rg, i, sum); + } +} + +static void +scaled_addition (double alpha, gsl_vector * newton, double beta, gsl_vector * gradient, gsl_vector * p) +{ + const size_t N = p->size; + size_t i; + + for (i = 0; i < N; i++) + { + double ni = gsl_vector_get (newton, i); + double gi = gsl_vector_get (gradient, i); + gsl_vector_set (p, i, alpha * ni + beta * gi); + } +} + +static int +dogleg (const gsl_matrix * r, const gsl_vector * qtf, + const gsl_vector * diag, double delta, + gsl_vector * newton, gsl_vector * gradient, gsl_vector * p) +{ + double qnorm, gnorm, sgnorm, bnorm, temp; + + newton_direction (r, qtf, newton); + +#ifdef DEBUG + printf("newton = "); gsl_vector_fprintf(stdout, newton, "%g"); printf("\n"); +#endif + + qnorm = scaled_enorm (diag, newton); + + if (qnorm <= delta) + { + gsl_vector_memcpy (p, newton); +#ifdef DEBUG + printf("took newton (qnorm = %g <= delta = %g)\n", qnorm, delta); +#endif + return GSL_SUCCESS; + } + + gradient_direction (r, qtf, diag, gradient); + +#ifdef DEBUG + printf("grad = "); gsl_vector_fprintf(stdout, gradient, "%g"); printf("\n"); +#endif + + gnorm = enorm (gradient); + + if (gnorm == 0) + { + double alpha = delta / qnorm; + double beta = 0; + scaled_addition (alpha, newton, beta, gradient, p); +#ifdef DEBUG + printf("took scaled newton because gnorm = 0\n"); +#endif + return GSL_SUCCESS; + } + + minimum_step (gnorm, diag, gradient); + + compute_Rg (r, gradient, p); /* Use p as temporary space to compute Rg */ + +#ifdef DEBUG + printf("mingrad = "); gsl_vector_fprintf(stdout, gradient, "%g"); printf("\n"); + printf("Rg = "); gsl_vector_fprintf(stdout, p, "%g"); printf("\n"); +#endif + + temp = enorm (p); + sgnorm = (gnorm / temp) / temp; + + if (sgnorm > delta) + { + double alpha = 0; + double beta = delta; + scaled_addition (alpha, newton, beta, gradient, p); +#ifdef DEBUG + printf("took gradient\n"); +#endif + return GSL_SUCCESS; + } + + bnorm = enorm (qtf); + + { + double bg = bnorm / gnorm; + double bq = bnorm / qnorm; + double dq = delta / qnorm; + double dq2 = dq * dq; + double sd = sgnorm / delta; + double sd2 = sd * sd; + + double t1 = bg * bq * sd; + double u = t1 - dq; + double t2 = t1 - dq * sd2 + sqrt (u * u + (1-dq2) * (1 - sd2)); + + double alpha = dq * (1 - sd2) / t2; + double beta = (1 - alpha) * sgnorm; + +#ifdef DEBUG + printf("bnorm = %g\n", bnorm); + printf("gnorm = %g\n", gnorm); + printf("qnorm = %g\n", qnorm); + printf("delta = %g\n", delta); + printf("alpha = %g beta = %g\n", alpha, beta); + printf("took scaled combination of newton and gradient\n"); +#endif + + scaled_addition (alpha, newton, beta, gradient, p); + } + + return GSL_SUCCESS; +} diff --git a/gsl-2.5/multiroots/enorm.c b/gsl-2.5/multiroots/enorm.c new file mode 100644 index 00000000..0d90dba7 --- /dev/null +++ b/gsl-2.5/multiroots/enorm.c @@ -0,0 +1,33 @@ +/* multiroots/enorm.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +static double enorm (const gsl_vector * f); + +static double enorm (const gsl_vector * f) { + double e2 = 0 ; + size_t i, n = f->size ; + for (i = 0; i < n ; i++) { + double fi= gsl_vector_get(f, i); + e2 += fi * fi ; + } + return sqrt(e2); +} + + + diff --git a/gsl-2.5/multiroots/fdfsolver.c b/gsl-2.5/multiroots/fdfsolver.c new file mode 100644 index 00000000..82db3b46 --- /dev/null +++ b/gsl-2.5/multiroots/fdfsolver.c @@ -0,0 +1,177 @@ +/* multiroots/fdfsolver.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include + +gsl_multiroot_fdfsolver * +gsl_multiroot_fdfsolver_alloc (const gsl_multiroot_fdfsolver_type * T, + size_t n) +{ + int status; + + gsl_multiroot_fdfsolver * s; + + s = (gsl_multiroot_fdfsolver *) malloc (sizeof (gsl_multiroot_fdfsolver)); + + if (s == 0) + { + GSL_ERROR_VAL ("failed to allocate space for multiroot solver struct", + GSL_ENOMEM, 0); + } + + s->x = gsl_vector_calloc (n); + + if (s->x == 0) + { + free (s); + GSL_ERROR_VAL ("failed to allocate space for x", GSL_ENOMEM, 0); + } + + s->f = gsl_vector_calloc (n); + + if (s->f == 0) + { + gsl_vector_free (s->x); + free (s); + GSL_ERROR_VAL ("failed to allocate space for f", GSL_ENOMEM, 0); + } + + s->J = gsl_matrix_calloc (n,n); + + if (s->J == 0) + { + gsl_vector_free (s->x); + gsl_vector_free (s->f); + free (s); + GSL_ERROR_VAL ("failed to allocate space for g", GSL_ENOMEM, 0); + } + + s->dx = gsl_vector_calloc (n); + + if (s->dx == 0) + { + gsl_matrix_free (s->J); + gsl_vector_free (s->x); + gsl_vector_free (s->f); + free (s); + GSL_ERROR_VAL ("failed to allocate space for dx", GSL_ENOMEM, 0); + } + + s->state = malloc (T->size); + + if (s->state == 0) + { + gsl_vector_free (s->dx); + gsl_vector_free (s->x); + gsl_vector_free (s->f); + gsl_matrix_free (s->J); + free (s); /* exception in constructor, avoid memory leak */ + + GSL_ERROR_VAL ("failed to allocate space for multiroot solver state", + GSL_ENOMEM, 0); + } + + s->type = T ; + + status = (s->type->alloc)(s->state, n); + + if (status != GSL_SUCCESS) + { + free (s->state); + gsl_vector_free (s->dx); + gsl_vector_free (s->x); + gsl_vector_free (s->f); + gsl_matrix_free (s->J); + free (s); /* exception in constructor, avoid memory leak */ + + GSL_ERROR_VAL ("failed to set solver", status, 0); + } + + s->fdf = NULL; + + return s; +} + +int +gsl_multiroot_fdfsolver_set (gsl_multiroot_fdfsolver * s, + gsl_multiroot_function_fdf * f, + const gsl_vector * x) +{ + if (s->x->size != f->n) + { + GSL_ERROR ("function incompatible with solver size", GSL_EBADLEN); + } + + if (x->size != f->n) + { + GSL_ERROR ("vector length not compatible with function", GSL_EBADLEN); + } + + s->fdf = f; + gsl_vector_memcpy(s->x,x); + + return (s->type->set) (s->state, s->fdf, s->x, s->f, s->J, s->dx); +} + +int +gsl_multiroot_fdfsolver_iterate (gsl_multiroot_fdfsolver * s) +{ + return (s->type->iterate) (s->state, s->fdf, s->x, s->f, s->J, s->dx); +} + +void +gsl_multiroot_fdfsolver_free (gsl_multiroot_fdfsolver * s) +{ + RETURN_IF_NULL (s); + (s->type->free) (s->state); + free (s->state); + gsl_vector_free (s->dx); + gsl_vector_free (s->x); + gsl_vector_free (s->f); + gsl_matrix_free (s->J); + free (s); +} + +const char * +gsl_multiroot_fdfsolver_name (const gsl_multiroot_fdfsolver * s) +{ + return s->type->name; +} + +gsl_vector * +gsl_multiroot_fdfsolver_root (const gsl_multiroot_fdfsolver * s) +{ + return s->x; +} + +gsl_vector * +gsl_multiroot_fdfsolver_dx (const gsl_multiroot_fdfsolver * s) +{ + return s->dx; +} + +gsl_vector * +gsl_multiroot_fdfsolver_f (const gsl_multiroot_fdfsolver * s) +{ + return s->f; +} diff --git a/gsl-2.5/multiroots/fdfsolver.lo b/gsl-2.5/multiroots/fdfsolver.lo new file mode 100644 index 00000000..8d98782b --- /dev/null +++ b/gsl-2.5/multiroots/fdfsolver.lo @@ -0,0 +1,12 @@ +# fdfsolver.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/fdfsolver.o' + +# Name of the non-PIC object +non_pic_object='fdfsolver.o' + diff --git a/gsl-2.5/multiroots/fdjac.c b/gsl-2.5/multiroots/fdjac.c new file mode 100644 index 00000000..286752c9 --- /dev/null +++ b/gsl-2.5/multiroots/fdjac.c @@ -0,0 +1,111 @@ +/* multiroots/fdjac.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include + +int +gsl_multiroot_fdjacobian (gsl_multiroot_function * F, + const gsl_vector * x, const gsl_vector * f, + double epsrel, gsl_matrix * jacobian) +{ + const size_t n = x->size; + const size_t m = f->size; + const size_t n1 = jacobian->size1; + const size_t n2 = jacobian->size2; + int status = 0; + + if (m != n1 || n != n2) + { + GSL_ERROR ("function and jacobian are not conformant", GSL_EBADLEN); + } + + { + size_t i,j; + gsl_vector *x1, *f1; + + x1 = gsl_vector_alloc (n); + + if (x1 == 0) + { + GSL_ERROR ("failed to allocate space for x1 workspace", GSL_ENOMEM); + } + + f1 = gsl_vector_alloc (m); + + if (f1 == 0) + { + gsl_vector_free (x1); + + GSL_ERROR ("failed to allocate space for f1 workspace", GSL_ENOMEM); + } + + gsl_vector_memcpy (x1, x); /* copy x into x1 */ + + for (j = 0; j < n; j++) + { + double xj = gsl_vector_get (x, j); + double dx = epsrel * fabs (xj); + + if (dx == 0) + { + dx = epsrel; + } + + gsl_vector_set (x1, j, xj + dx); + + { + int f_stat = GSL_MULTIROOT_FN_EVAL (F, x1, f1); + + if (f_stat != GSL_SUCCESS) + { + status = GSL_EBADFUNC; + break; /* n.b. avoid memory leak for x1,f1 */ + } + } + + gsl_vector_set (x1, j, xj); + + for (i = 0; i < m; i++) + { + double g1 = gsl_vector_get (f1, i); + double g0 = gsl_vector_get (f, i); + gsl_matrix_set (jacobian, i, j, (g1 - g0) / dx); + } + + { + gsl_vector_view col = gsl_matrix_column (jacobian, j); + int null_col = gsl_vector_isnull (&col.vector); + /* if column is null, return an error - this may be due to + dx being too small. Try increasing epsrel */ + if (null_col) { + status = GSL_ESING; + } + } + } + + gsl_vector_free (x1); + gsl_vector_free (f1); + } + + if (status) + return status; + else + return GSL_SUCCESS; +} diff --git a/gsl-2.5/multiroots/fdjac.lo b/gsl-2.5/multiroots/fdjac.lo new file mode 100644 index 00000000..920371ab --- /dev/null +++ b/gsl-2.5/multiroots/fdjac.lo @@ -0,0 +1,12 @@ +# fdjac.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/fdjac.o' + +# Name of the non-PIC object +non_pic_object='fdjac.o' + diff --git a/gsl-2.5/multiroots/fsolver.c b/gsl-2.5/multiroots/fsolver.c new file mode 100644 index 00000000..c460ab36 --- /dev/null +++ b/gsl-2.5/multiroots/fsolver.c @@ -0,0 +1,164 @@ +/* multiroots/fsolver.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include + +gsl_multiroot_fsolver * +gsl_multiroot_fsolver_alloc (const gsl_multiroot_fsolver_type * T, + size_t n) +{ + int status; + + gsl_multiroot_fsolver * s; + + s = (gsl_multiroot_fsolver *) malloc (sizeof (gsl_multiroot_fsolver)); + + if (s == 0) + { + GSL_ERROR_VAL ("failed to allocate space for multiroot solver struct", + GSL_ENOMEM, 0); + } + + s->x = gsl_vector_calloc (n); + + if (s->x == 0) + { + free (s); + GSL_ERROR_VAL ("failed to allocate space for x", GSL_ENOMEM, 0); + } + + s->f = gsl_vector_calloc (n); + + if (s->f == 0) + { + gsl_vector_free (s->x); + free (s); + GSL_ERROR_VAL ("failed to allocate space for f", GSL_ENOMEM, 0); + } + + s->dx = gsl_vector_calloc (n); + + if (s->dx == 0) + { + gsl_vector_free (s->x); + gsl_vector_free (s->f); + free (s); + GSL_ERROR_VAL ("failed to allocate space for dx", GSL_ENOMEM, 0); + } + + s->state = malloc (T->size); + + if (s->state == 0) + { + gsl_vector_free (s->dx); + gsl_vector_free (s->x); + gsl_vector_free (s->f); + free (s); /* exception in constructor, avoid memory leak */ + + GSL_ERROR_VAL ("failed to allocate space for multiroot solver state", + GSL_ENOMEM, 0); + } + + s->type = T ; + + status = (s->type->alloc)(s->state, n); + + if (status != GSL_SUCCESS) + { + (s->type->free)(s->state); + free (s->state); + gsl_vector_free (s->dx); + gsl_vector_free (s->x); + gsl_vector_free (s->f); + free (s); /* exception in constructor, avoid memory leak */ + + GSL_ERROR_VAL ("failed to set solver", status, 0); + } + + s->function = NULL; + + return s; +} + +int +gsl_multiroot_fsolver_set (gsl_multiroot_fsolver * s, + gsl_multiroot_function * f, + const gsl_vector * x) +{ + if (s->x->size != f->n) + { + GSL_ERROR ("function incompatible with solver size", GSL_EBADLEN); + } + + if (x->size != f->n) + { + GSL_ERROR ("vector length not compatible with function", GSL_EBADLEN); + } + + s->function = f; + gsl_vector_memcpy(s->x,x); + + return (s->type->set) (s->state, s->function, s->x, s->f, s->dx); +} + +int +gsl_multiroot_fsolver_iterate (gsl_multiroot_fsolver * s) +{ + return (s->type->iterate) (s->state, s->function, s->x, s->f, s->dx); +} + +void +gsl_multiroot_fsolver_free (gsl_multiroot_fsolver * s) +{ + RETURN_IF_NULL (s); + (s->type->free) (s->state); + free (s->state); + gsl_vector_free (s->dx); + gsl_vector_free (s->x); + gsl_vector_free (s->f); + free (s); +} + +const char * +gsl_multiroot_fsolver_name (const gsl_multiroot_fsolver * s) +{ + return s->type->name; +} + +gsl_vector * +gsl_multiroot_fsolver_root (const gsl_multiroot_fsolver * s) +{ + return s->x; +} + +gsl_vector * +gsl_multiroot_fsolver_dx (const gsl_multiroot_fsolver * s) +{ + return s->dx; +} + +gsl_vector * +gsl_multiroot_fsolver_f (const gsl_multiroot_fsolver * s) +{ + return s->f; +} diff --git a/gsl-2.5/multiroots/fsolver.lo b/gsl-2.5/multiroots/fsolver.lo new file mode 100644 index 00000000..01f433d3 --- /dev/null +++ b/gsl-2.5/multiroots/fsolver.lo @@ -0,0 +1,12 @@ +# fsolver.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/fsolver.o' + +# Name of the non-PIC object +non_pic_object='fsolver.o' + diff --git a/gsl-2.5/multiroots/gnewton.c b/gsl-2.5/multiroots/gnewton.c new file mode 100644 index 00000000..44ac2627 --- /dev/null +++ b/gsl-2.5/multiroots/gnewton.c @@ -0,0 +1,230 @@ +/* multiroots/gnewton.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include + +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +#include "enorm.c" + +/* Simple globally convergent Newton method (rejects uphill steps) */ + +typedef struct + { + double phi; + gsl_vector * x_trial; + gsl_vector * d; + gsl_matrix * lu; + gsl_permutation * permutation; + } +gnewton_state_t; + +static int gnewton_alloc (void * vstate, size_t n); +static int gnewton_set (void * vstate, gsl_multiroot_function_fdf * fdf, gsl_vector * x, gsl_vector * f, gsl_matrix * J, gsl_vector * dx); +static int gnewton_iterate (void * vstate, gsl_multiroot_function_fdf * fdf, gsl_vector * x, gsl_vector * f, gsl_matrix * J, gsl_vector * dx); +static void gnewton_free (void * vstate); + +static int +gnewton_alloc (void * vstate, size_t n) +{ + gnewton_state_t * state = (gnewton_state_t *) vstate; + gsl_vector * d, * x_trial ; + gsl_permutation * p; + gsl_matrix * m; + + m = gsl_matrix_calloc (n,n); + + if (m == 0) + { + GSL_ERROR ("failed to allocate space for lu", GSL_ENOMEM); + } + + state->lu = m ; + + p = gsl_permutation_calloc (n); + + if (p == 0) + { + gsl_matrix_free(m); + + GSL_ERROR ("failed to allocate space for permutation", GSL_ENOMEM); + } + + state->permutation = p ; + + d = gsl_vector_calloc (n); + + if (d == 0) + { + gsl_permutation_free(p); + gsl_matrix_free(m); + + GSL_ERROR ("failed to allocate space for d", GSL_ENOMEM); + } + + state->d = d; + + x_trial = gsl_vector_calloc (n); + + if (x_trial == 0) + { + gsl_vector_free(d); + gsl_permutation_free(p); + gsl_matrix_free(m); + + GSL_ERROR ("failed to allocate space for x_trial", GSL_ENOMEM); + } + + state->x_trial = x_trial; + + return GSL_SUCCESS; +} + + +static int +gnewton_set (void * vstate, gsl_multiroot_function_fdf * FDF, gsl_vector * x, gsl_vector * f, gsl_matrix * J, gsl_vector * dx) +{ + gnewton_state_t * state = (gnewton_state_t *) vstate; + size_t i, n = FDF->n ; + + GSL_MULTIROOT_FN_EVAL_F_DF (FDF, x, f, J); + + for (i = 0; i < n; i++) + { + gsl_vector_set (dx, i, 0.0); + } + + state->phi = enorm(f); + + return GSL_SUCCESS; +} + +static int +gnewton_iterate (void * vstate, gsl_multiroot_function_fdf * fdf, gsl_vector * x, gsl_vector * f, gsl_matrix * J, gsl_vector * dx) +{ + gnewton_state_t * state = (gnewton_state_t *) vstate; + + int signum ; + double t, phi0, phi1; + + size_t i; + + size_t n = fdf->n ; + + gsl_matrix_memcpy (state->lu, J); + + gsl_linalg_LU_decomp (state->lu, state->permutation, &signum); + + { + int status = gsl_linalg_LU_solve (state->lu, state->permutation, f, state->d); + if (status) + return status; + } + + t = 1; + + phi0 = state->phi; + +new_step: + + for (i = 0; i < n; i++) + { + double di = gsl_vector_get (state->d, i); + double xi = gsl_vector_get (x, i); + gsl_vector_set (state->x_trial, i, xi - t*di); + } + + { + int status = GSL_MULTIROOT_FN_EVAL_F (fdf, state->x_trial, f); + + if (status != GSL_SUCCESS) + { + return GSL_EBADFUNC; + } + } + + phi1 = enorm (f); + + if (phi1 > phi0 && t > GSL_DBL_EPSILON) + { + /* full step goes uphill, take a reduced step instead */ + + double theta = phi1 / phi0; + double u = (sqrt(1.0 + 6.0 * theta) - 1.0) / (3.0 * theta); + + t *= u ; + + goto new_step; + } + + /* copy x_trial into x */ + + gsl_vector_memcpy (x, state->x_trial); + + for (i = 0; i < n; i++) + { + double di = gsl_vector_get (state->d, i); + gsl_vector_set (dx, i, -t*di); + } + + { + int status = GSL_MULTIROOT_FN_EVAL_DF (fdf, x, J); + + if (status != GSL_SUCCESS) + { + return GSL_EBADFUNC; + } + } + + state->phi = phi1; + + return GSL_SUCCESS; +} + + +static void +gnewton_free (void * vstate) +{ + gnewton_state_t * state = (gnewton_state_t *) vstate; + + gsl_vector_free(state->d); + gsl_vector_free(state->x_trial); + gsl_matrix_free(state->lu); + gsl_permutation_free(state->permutation); +} + + +static const gsl_multiroot_fdfsolver_type gnewton_type = +{"gnewton", /* name */ + sizeof (gnewton_state_t), + &gnewton_alloc, + &gnewton_set, + &gnewton_iterate, + &gnewton_free}; + +const gsl_multiroot_fdfsolver_type * gsl_multiroot_fdfsolver_gnewton = &gnewton_type; diff --git a/gsl-2.5/multiroots/gnewton.lo b/gsl-2.5/multiroots/gnewton.lo new file mode 100644 index 00000000..103646db --- /dev/null +++ b/gsl-2.5/multiroots/gnewton.lo @@ -0,0 +1,12 @@ +# gnewton.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/gnewton.o' + +# Name of the non-PIC object +non_pic_object='gnewton.o' + diff --git a/gsl-2.5/multiroots/gsl_multiroots.h b/gsl-2.5/multiroots/gsl_multiroots.h new file mode 100644 index 00000000..7f661547 --- /dev/null +++ b/gsl-2.5/multiroots/gsl_multiroots.h @@ -0,0 +1,177 @@ +/* multiroots/gsl_multiroots.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_MULTIROOTS_H__ +#define __GSL_MULTIROOTS_H__ + +#include +#include +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +/* Definition of vector-valued functions with parameters based on gsl_vector */ + +struct gsl_multiroot_function_struct +{ + int (* f) (const gsl_vector * x, void * params, gsl_vector * f); + size_t n; + void * params; +}; + +typedef struct gsl_multiroot_function_struct gsl_multiroot_function ; + +#define GSL_MULTIROOT_FN_EVAL(F,x,y) (*((F)->f))(x,(F)->params,(y)) + +int gsl_multiroot_fdjacobian (gsl_multiroot_function * F, + const gsl_vector * x, const gsl_vector * f, + double epsrel, gsl_matrix * jacobian); + + +typedef struct + { + const char *name; + size_t size; + int (*alloc) (void *state, size_t n); + int (*set) (void *state, gsl_multiroot_function * function, gsl_vector * x, gsl_vector * f, gsl_vector * dx); + int (*iterate) (void *state, gsl_multiroot_function * function, gsl_vector * x, gsl_vector * f, gsl_vector * dx); + void (*free) (void *state); + } +gsl_multiroot_fsolver_type; + +typedef struct + { + const gsl_multiroot_fsolver_type * type; + gsl_multiroot_function * function ; + gsl_vector * x ; + gsl_vector * f ; + gsl_vector * dx ; + void *state; + } +gsl_multiroot_fsolver; + +gsl_multiroot_fsolver * +gsl_multiroot_fsolver_alloc (const gsl_multiroot_fsolver_type * T, + size_t n); + +void gsl_multiroot_fsolver_free (gsl_multiroot_fsolver * s); + +int gsl_multiroot_fsolver_set (gsl_multiroot_fsolver * s, + gsl_multiroot_function * f, + const gsl_vector * x); + +int gsl_multiroot_fsolver_iterate (gsl_multiroot_fsolver * s); + +const char * gsl_multiroot_fsolver_name (const gsl_multiroot_fsolver * s); +gsl_vector * gsl_multiroot_fsolver_root (const gsl_multiroot_fsolver * s); +gsl_vector * gsl_multiroot_fsolver_dx (const gsl_multiroot_fsolver * s); +gsl_vector * gsl_multiroot_fsolver_f (const gsl_multiroot_fsolver * s); + +/* Definition of vector-valued functions and gradient with parameters + based on gsl_vector */ + +struct gsl_multiroot_function_fdf_struct +{ + int (* f) (const gsl_vector * x, void * params, gsl_vector * f); + int (* df) (const gsl_vector * x, void * params, gsl_matrix * df); + int (* fdf) (const gsl_vector * x, void * params, gsl_vector * f, gsl_matrix *df); + size_t n; + void * params; +}; + +typedef struct gsl_multiroot_function_fdf_struct gsl_multiroot_function_fdf ; + +#define GSL_MULTIROOT_FN_EVAL_F(F,x,y) ((*((F)->f))(x,(F)->params,(y))) +#define GSL_MULTIROOT_FN_EVAL_DF(F,x,dy) ((*((F)->df))(x,(F)->params,(dy))) +#define GSL_MULTIROOT_FN_EVAL_F_DF(F,x,y,dy) ((*((F)->fdf))(x,(F)->params,(y),(dy))) + +typedef struct + { + const char *name; + size_t size; + int (*alloc) (void *state, size_t n); + int (*set) (void *state, gsl_multiroot_function_fdf * fdf, gsl_vector * x, gsl_vector * f, gsl_matrix * J, gsl_vector * dx); + int (*iterate) (void *state, gsl_multiroot_function_fdf * fdf, gsl_vector * x, gsl_vector * f, gsl_matrix * J, gsl_vector * dx); + void (*free) (void *state); + } +gsl_multiroot_fdfsolver_type; + +typedef struct + { + const gsl_multiroot_fdfsolver_type * type; + gsl_multiroot_function_fdf * fdf ; + gsl_vector * x; + gsl_vector * f; + gsl_matrix * J; + gsl_vector * dx; + void *state; + } +gsl_multiroot_fdfsolver; + +gsl_multiroot_fdfsolver * +gsl_multiroot_fdfsolver_alloc (const gsl_multiroot_fdfsolver_type * T, + size_t n); + +int +gsl_multiroot_fdfsolver_set (gsl_multiroot_fdfsolver * s, + gsl_multiroot_function_fdf * fdf, + const gsl_vector * x); + +int +gsl_multiroot_fdfsolver_iterate (gsl_multiroot_fdfsolver * s); + +void +gsl_multiroot_fdfsolver_free (gsl_multiroot_fdfsolver * s); + +const char * gsl_multiroot_fdfsolver_name (const gsl_multiroot_fdfsolver * s); +gsl_vector * gsl_multiroot_fdfsolver_root (const gsl_multiroot_fdfsolver * s); +gsl_vector * gsl_multiroot_fdfsolver_dx (const gsl_multiroot_fdfsolver * s); +gsl_vector * gsl_multiroot_fdfsolver_f (const gsl_multiroot_fdfsolver * s); + +int gsl_multiroot_test_delta (const gsl_vector * dx, const gsl_vector * x, + double epsabs, double epsrel); + +int gsl_multiroot_test_residual (const gsl_vector * f, double epsabs); + +GSL_VAR const gsl_multiroot_fsolver_type * gsl_multiroot_fsolver_dnewton; +GSL_VAR const gsl_multiroot_fsolver_type * gsl_multiroot_fsolver_broyden; +GSL_VAR const gsl_multiroot_fsolver_type * gsl_multiroot_fsolver_hybrid; +GSL_VAR const gsl_multiroot_fsolver_type * gsl_multiroot_fsolver_hybrids; + +GSL_VAR const gsl_multiroot_fdfsolver_type * gsl_multiroot_fdfsolver_newton; +GSL_VAR const gsl_multiroot_fdfsolver_type * gsl_multiroot_fdfsolver_gnewton; +GSL_VAR const gsl_multiroot_fdfsolver_type * gsl_multiroot_fdfsolver_hybridj; +GSL_VAR const gsl_multiroot_fdfsolver_type * gsl_multiroot_fdfsolver_hybridsj; + + +__END_DECLS + +#endif /* __GSL_MULTIROOTS_H__ */ diff --git a/gsl-2.5/multiroots/hybrid.c b/gsl-2.5/multiroots/hybrid.c new file mode 100644 index 00000000..65493823 --- /dev/null +++ b/gsl-2.5/multiroots/hybrid.c @@ -0,0 +1,662 @@ +/* multiroots/hybrid.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include + +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +#include "dogleg.c" + +typedef struct +{ + size_t iter; + size_t ncfail; + size_t ncsuc; + size_t nslow1; + size_t nslow2; + double fnorm; + double delta; + gsl_matrix *J; + gsl_matrix *q; + gsl_matrix *r; + gsl_vector *tau; + gsl_vector *diag; + gsl_vector *qtf; + gsl_vector *newton; + gsl_vector *gradient; + gsl_vector *x_trial; + gsl_vector *f_trial; + gsl_vector *df; + gsl_vector *qtdf; + gsl_vector *rdx; + gsl_vector *w; + gsl_vector *v; +} +hybrid_state_t; + +static int hybrid_alloc (void *vstate, size_t n); +static int hybrid_set (void *vstate, gsl_multiroot_function * func, + gsl_vector * x, gsl_vector * f, gsl_vector * dx); +static int hybrids_set (void *vstate, gsl_multiroot_function * func, + gsl_vector * x, gsl_vector * f, gsl_vector * dx); +static int hybrid_set_impl (void *vstate, gsl_multiroot_function * func, gsl_vector * x, + gsl_vector * f, gsl_vector * dx, int scale); +static int hybrid_iterate (void *vstate, gsl_multiroot_function * func, + gsl_vector * x, gsl_vector * f, gsl_vector * dx); +static void hybrid_free (void *vstate); +static int hybrid_iterate_impl (void *vstate, gsl_multiroot_function * func, + gsl_vector * x, gsl_vector * f, gsl_vector * dx, + int scale); + +static int +hybrid_alloc (void *vstate, size_t n) +{ + hybrid_state_t *state = (hybrid_state_t *) vstate; + gsl_matrix *J, *q, *r; + gsl_vector *tau, *diag, *qtf, *newton, *gradient, *x_trial, *f_trial, + *df, *qtdf, *rdx, *w, *v; + + J = gsl_matrix_calloc (n, n); + + if (J == 0) + { + GSL_ERROR ("failed to allocate space for J", GSL_ENOMEM); + } + + state->J = J; + + q = gsl_matrix_calloc (n, n); + + if (q == 0) + { + gsl_matrix_free (J); + + GSL_ERROR ("failed to allocate space for q", GSL_ENOMEM); + } + + state->q = q; + + r = gsl_matrix_calloc (n, n); + + if (r == 0) + { + gsl_matrix_free (J); + gsl_matrix_free (q); + + GSL_ERROR ("failed to allocate space for r", GSL_ENOMEM); + } + + state->r = r; + + tau = gsl_vector_calloc (n); + + if (tau == 0) + { + gsl_matrix_free (J); + gsl_matrix_free (q); + gsl_matrix_free (r); + + GSL_ERROR ("failed to allocate space for tau", GSL_ENOMEM); + } + + state->tau = tau; + + diag = gsl_vector_calloc (n); + + if (diag == 0) + { + gsl_matrix_free (J); + gsl_matrix_free (q); + gsl_matrix_free (r); + gsl_vector_free (tau); + + GSL_ERROR ("failed to allocate space for diag", GSL_ENOMEM); + } + + state->diag = diag; + + qtf = gsl_vector_calloc (n); + + if (qtf == 0) + { + gsl_matrix_free (J); + gsl_matrix_free (q); + gsl_matrix_free (r); + gsl_vector_free (tau); + gsl_vector_free (diag); + + GSL_ERROR ("failed to allocate space for qtf", GSL_ENOMEM); + } + + state->qtf = qtf; + + newton = gsl_vector_calloc (n); + + if (newton == 0) + { + gsl_matrix_free (J); + gsl_matrix_free (q); + gsl_matrix_free (r); + gsl_vector_free (tau); + gsl_vector_free (diag); + gsl_vector_free (qtf); + + GSL_ERROR ("failed to allocate space for newton", GSL_ENOMEM); + } + + state->newton = newton; + + gradient = gsl_vector_calloc (n); + + if (gradient == 0) + { + gsl_matrix_free (J); + gsl_matrix_free (q); + gsl_matrix_free (r); + gsl_vector_free (tau); + gsl_vector_free (diag); + gsl_vector_free (qtf); + gsl_vector_free (newton); + + GSL_ERROR ("failed to allocate space for gradient", GSL_ENOMEM); + } + + state->gradient = gradient; + + x_trial = gsl_vector_calloc (n); + + if (x_trial == 0) + { + gsl_matrix_free (J); + gsl_matrix_free (q); + gsl_matrix_free (r); + gsl_vector_free (tau); + gsl_vector_free (diag); + gsl_vector_free (qtf); + gsl_vector_free (newton); + gsl_vector_free (gradient); + + GSL_ERROR ("failed to allocate space for x_trial", GSL_ENOMEM); + } + + state->x_trial = x_trial; + + f_trial = gsl_vector_calloc (n); + + if (f_trial == 0) + { + gsl_matrix_free (J); + gsl_matrix_free (q); + gsl_matrix_free (r); + gsl_vector_free (tau); + gsl_vector_free (diag); + gsl_vector_free (qtf); + gsl_vector_free (newton); + gsl_vector_free (gradient); + gsl_vector_free (x_trial); + + GSL_ERROR ("failed to allocate space for f_trial", GSL_ENOMEM); + } + + state->f_trial = f_trial; + + df = gsl_vector_calloc (n); + + if (df == 0) + { + gsl_matrix_free (J); + gsl_matrix_free (q); + gsl_matrix_free (r); + gsl_vector_free (tau); + gsl_vector_free (diag); + gsl_vector_free (qtf); + gsl_vector_free (newton); + gsl_vector_free (gradient); + gsl_vector_free (x_trial); + gsl_vector_free (f_trial); + + GSL_ERROR ("failed to allocate space for df", GSL_ENOMEM); + } + + state->df = df; + + qtdf = gsl_vector_calloc (n); + + if (qtdf == 0) + { + gsl_matrix_free (J); + gsl_matrix_free (q); + gsl_matrix_free (r); + gsl_vector_free (tau); + gsl_vector_free (diag); + gsl_vector_free (qtf); + gsl_vector_free (newton); + gsl_vector_free (gradient); + gsl_vector_free (x_trial); + gsl_vector_free (f_trial); + gsl_vector_free (df); + + GSL_ERROR ("failed to allocate space for qtdf", GSL_ENOMEM); + } + + state->qtdf = qtdf; + + + rdx = gsl_vector_calloc (n); + + if (rdx == 0) + { + gsl_matrix_free (J); + gsl_matrix_free (q); + gsl_matrix_free (r); + gsl_vector_free (tau); + gsl_vector_free (diag); + gsl_vector_free (qtf); + gsl_vector_free (newton); + gsl_vector_free (gradient); + gsl_vector_free (x_trial); + gsl_vector_free (f_trial); + gsl_vector_free (df); + gsl_vector_free (qtdf); + + GSL_ERROR ("failed to allocate space for rdx", GSL_ENOMEM); + } + + state->rdx = rdx; + + w = gsl_vector_calloc (n); + + if (w == 0) + { + gsl_matrix_free (J); + gsl_matrix_free (q); + gsl_matrix_free (r); + gsl_vector_free (tau); + gsl_vector_free (diag); + gsl_vector_free (qtf); + gsl_vector_free (newton); + gsl_vector_free (gradient); + gsl_vector_free (x_trial); + gsl_vector_free (f_trial); + gsl_vector_free (df); + gsl_vector_free (qtdf); + gsl_vector_free (rdx); + + GSL_ERROR ("failed to allocate space for w", GSL_ENOMEM); + } + + state->w = w; + + v = gsl_vector_calloc (n); + + if (v == 0) + { + gsl_matrix_free (J); + gsl_matrix_free (q); + gsl_matrix_free (r); + gsl_vector_free (tau); + gsl_vector_free (diag); + gsl_vector_free (qtf); + gsl_vector_free (newton); + gsl_vector_free (gradient); + gsl_vector_free (x_trial); + gsl_vector_free (f_trial); + gsl_vector_free (df); + gsl_vector_free (qtdf); + gsl_vector_free (rdx); + gsl_vector_free (w); + + GSL_ERROR ("failed to allocate space for v", GSL_ENOMEM); + } + + state->v = v; + + return GSL_SUCCESS; +} + +static int +hybrid_set (void *vstate, gsl_multiroot_function * func, gsl_vector * x, + gsl_vector * f, gsl_vector * dx) +{ + int status = hybrid_set_impl (vstate, func, x, f, dx, 0); + return status; +} + +static int +hybrids_set (void *vstate, gsl_multiroot_function * func, gsl_vector * x, + gsl_vector * f, gsl_vector * dx) +{ + int status = hybrid_set_impl (vstate, func, x, f, dx, 1); + return status; +} + +static int +hybrid_set_impl (void *vstate, gsl_multiroot_function * func, gsl_vector * x, + gsl_vector * f, gsl_vector * dx, int scale) +{ + hybrid_state_t *state = (hybrid_state_t *) vstate; + + gsl_matrix *J = state->J; + gsl_matrix *q = state->q; + gsl_matrix *r = state->r; + gsl_vector *tau = state->tau; + gsl_vector *diag = state->diag; + + int status; + + status = GSL_MULTIROOT_FN_EVAL (func, x, f); + + if (status) + { + return status; + } + + status = gsl_multiroot_fdjacobian (func, x, f, GSL_SQRT_DBL_EPSILON, J); + + if (status) + { + return status; + } + + state->iter = 1; + state->fnorm = enorm (f); + state->ncfail = 0; + state->ncsuc = 0; + state->nslow1 = 0; + state->nslow2 = 0; + + gsl_vector_set_all (dx, 0.0); + + /* Store column norms in diag */ + + if (scale) + compute_diag (J, diag); + else + gsl_vector_set_all (diag, 1.0); + + /* Set delta to factor |D x| or to factor if |D x| is zero */ + + state->delta = compute_delta (diag, x); + + /* Factorize J into QR decomposition */ + + status = gsl_linalg_QR_decomp (J, tau); + + if (status) + { + return status; + } + + status = gsl_linalg_QR_unpack (J, tau, q, r); + + return status; +} + +static int +hybrid_iterate (void *vstate, gsl_multiroot_function * func, gsl_vector * x, + gsl_vector * f, gsl_vector * dx) +{ + int status = hybrid_iterate_impl (vstate, func, x, f, dx, 0); + return status; +} + +static int +hybrids_iterate (void *vstate, gsl_multiroot_function * func, gsl_vector * x, + gsl_vector * f, gsl_vector * dx) +{ + int status = hybrid_iterate_impl (vstate, func, x, f, dx, 1); + return status; +} + +static int +hybrid_iterate_impl (void *vstate, gsl_multiroot_function * func, + gsl_vector * x, + gsl_vector * f, gsl_vector * dx, int scale) +{ + hybrid_state_t *state = (hybrid_state_t *) vstate; + + const double fnorm = state->fnorm; + + gsl_matrix *J = state->J; + gsl_matrix *q = state->q; + gsl_matrix *r = state->r; + gsl_vector *tau = state->tau; + gsl_vector *diag = state->diag; + gsl_vector *qtf = state->qtf; + gsl_vector *x_trial = state->x_trial; + gsl_vector *f_trial = state->f_trial; + gsl_vector *df = state->df; + gsl_vector *qtdf = state->qtdf; + gsl_vector *rdx = state->rdx; + gsl_vector *w = state->w; + gsl_vector *v = state->v; + + double prered, actred; + double pnorm, fnorm1, fnorm1p; + double ratio; + double p1 = 0.1, p5 = 0.5, p001 = 0.001, p0001 = 0.0001; + + /* Compute qtf = Q^T f */ + + compute_qtf (q, f, qtf); + + /* Compute dogleg step */ + + dogleg (r, qtf, diag, state->delta, state->newton, state->gradient, dx); + + /* Take a trial step */ + + compute_trial_step (x, dx, state->x_trial); + + pnorm = scaled_enorm (diag, dx); + + if (state->iter == 1) + { + if (pnorm < state->delta) + { + state->delta = pnorm; + } + } + + /* Evaluate function at x + p */ + + { + int status = GSL_MULTIROOT_FN_EVAL (func, x_trial, f_trial); + + if (status != GSL_SUCCESS) + { + return GSL_EBADFUNC; + } + } + + /* Set df = f_trial - f */ + + compute_df (f_trial, f, df); + + /* Compute the scaled actual reduction */ + + fnorm1 = enorm (f_trial); + + actred = compute_actual_reduction (fnorm, fnorm1); + + /* Compute rdx = R dx */ + + compute_rdx (r, dx, rdx); + + /* Compute the scaled predicted reduction phi1p = |Q^T f + R dx| */ + + fnorm1p = enorm_sum (qtf, rdx); + + prered = compute_predicted_reduction (fnorm, fnorm1p); + + /* Compute the ratio of the actual to predicted reduction */ + + if (prered > 0) + { + ratio = actred / prered; + } + else + { + ratio = 0; + } + + /* Update the step bound */ + + if (ratio < p1) + { + state->ncsuc = 0; + state->ncfail++; + state->delta *= p5; + } + else + { + state->ncfail = 0; + state->ncsuc++; + + if (ratio >= p5 || state->ncsuc > 1) + state->delta = GSL_MAX (state->delta, pnorm / p5); + if (fabs (ratio - 1) <= p1) + state->delta = pnorm / p5; + } + + /* Test for successful iteration */ + + if (ratio >= p0001) + { + gsl_vector_memcpy (x, x_trial); + gsl_vector_memcpy (f, f_trial); + state->fnorm = fnorm1; + state->iter++; + } + + /* Determine the progress of the iteration */ + + state->nslow1++; + if (actred >= p001) + state->nslow1 = 0; + + if (actred >= p1) + state->nslow2 = 0; + + if (state->ncfail == 2) + { + gsl_multiroot_fdjacobian (func, x, f, GSL_SQRT_DBL_EPSILON, J); + + state->nslow2++; + + if (state->iter == 1) + { + if (scale) + compute_diag (J, diag); + state->delta = compute_delta (diag, x); + } + else + { + if (scale) + update_diag (J, diag); + } + + /* Factorize J into QR decomposition */ + + gsl_linalg_QR_decomp (J, tau); + gsl_linalg_QR_unpack (J, tau, q, r); + + return GSL_SUCCESS; + } + + /* Compute qtdf = Q^T df, w = (Q^T df - R dx)/|dx|, v = D^2 dx/|dx| */ + + compute_qtf (q, df, qtdf); + + compute_wv (qtdf, rdx, dx, diag, pnorm, w, v); + + /* Rank-1 update of the jacobian Q'R' = Q(R + w v^T) */ + + gsl_linalg_QR_update (q, r, w, v); + + /* No progress as measured by jacobian evaluations */ + + if (state->nslow2 == 5) + { + return GSL_ENOPROGJ; + } + + /* No progress as measured by function evaluations */ + + if (state->nslow1 == 10) + { + return GSL_ENOPROG; + } + + return GSL_SUCCESS; +} + + +static void +hybrid_free (void *vstate) +{ + hybrid_state_t *state = (hybrid_state_t *) vstate; + + gsl_vector_free (state->v); + gsl_vector_free (state->w); + gsl_vector_free (state->rdx); + gsl_vector_free (state->qtdf); + gsl_vector_free (state->df); + gsl_vector_free (state->f_trial); + gsl_vector_free (state->x_trial); + gsl_vector_free (state->gradient); + gsl_vector_free (state->newton); + gsl_vector_free (state->qtf); + gsl_vector_free (state->diag); + gsl_vector_free (state->tau); + gsl_matrix_free (state->r); + gsl_matrix_free (state->q); + gsl_matrix_free (state->J); +} + +static const gsl_multiroot_fsolver_type hybrid_type = { + "hybrid", /* name */ + sizeof (hybrid_state_t), + &hybrid_alloc, + &hybrid_set, + &hybrid_iterate, + &hybrid_free +}; + +static const gsl_multiroot_fsolver_type hybrids_type = { + "hybrids", /* name */ + sizeof (hybrid_state_t), + &hybrid_alloc, + &hybrids_set, + &hybrids_iterate, + &hybrid_free +}; + +const gsl_multiroot_fsolver_type *gsl_multiroot_fsolver_hybrid = &hybrid_type; +const gsl_multiroot_fsolver_type *gsl_multiroot_fsolver_hybrids = + &hybrids_type; diff --git a/gsl-2.5/multiroots/hybrid.lo b/gsl-2.5/multiroots/hybrid.lo new file mode 100644 index 00000000..e89e379b --- /dev/null +++ b/gsl-2.5/multiroots/hybrid.lo @@ -0,0 +1,12 @@ +# hybrid.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/hybrid.o' + +# Name of the non-PIC object +non_pic_object='hybrid.o' + diff --git a/gsl-2.5/multiroots/hybridj.c b/gsl-2.5/multiroots/hybridj.c new file mode 100644 index 00000000..afe52302 --- /dev/null +++ b/gsl-2.5/multiroots/hybridj.c @@ -0,0 +1,608 @@ +/* multiroots/hybridj.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include + +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +#include "dogleg.c" + +typedef struct + { + size_t iter; + size_t ncfail; + size_t ncsuc; + size_t nslow1; + size_t nslow2; + double fnorm; + double delta; + gsl_matrix *q; + gsl_matrix *r; + gsl_vector *tau; + gsl_vector *diag; + gsl_vector *qtf; + gsl_vector *newton; + gsl_vector *gradient; + gsl_vector *x_trial; + gsl_vector *f_trial; + gsl_vector *df; + gsl_vector *qtdf; + gsl_vector *rdx; + gsl_vector *w; + gsl_vector *v; + } +hybridj_state_t; + +static int hybridj_alloc (void *vstate, size_t n); +static int hybridj_set (void *vstate, gsl_multiroot_function_fdf * fdf, gsl_vector * x, gsl_vector * f, gsl_matrix * J, gsl_vector * dx); +static int hybridsj_set (void *vstate, gsl_multiroot_function_fdf * fdf, gsl_vector * x, gsl_vector * f, gsl_matrix * J, gsl_vector * dx); +static int hybridj_set_impl (void *vstate, gsl_multiroot_function_fdf * fdf, gsl_vector * x, gsl_vector * f, gsl_matrix * J, gsl_vector * dx, int scale); +static int hybridj_iterate (void *vstate, gsl_multiroot_function_fdf * fdf, gsl_vector * x, gsl_vector * f, gsl_matrix * J, gsl_vector * dx); +static void hybridj_free (void *vstate); +static int hybridj_iterate_impl (void *vstate, gsl_multiroot_function_fdf * fdf, gsl_vector * x, gsl_vector * f, gsl_matrix * J, gsl_vector * dx, int scale); + +static int +hybridj_alloc (void *vstate, size_t n) +{ + hybridj_state_t *state = (hybridj_state_t *) vstate; + gsl_matrix *q, *r; + gsl_vector *tau, *diag, *qtf, *newton, *gradient, *x_trial, *f_trial, + *df, *qtdf, *rdx, *w, *v; + + q = gsl_matrix_calloc (n, n); + + if (q == 0) + { + GSL_ERROR ("failed to allocate space for q", GSL_ENOMEM); + } + + state->q = q; + + r = gsl_matrix_calloc (n, n); + + if (r == 0) + { + gsl_matrix_free (q); + + GSL_ERROR ("failed to allocate space for r", GSL_ENOMEM); + } + + state->r = r; + + tau = gsl_vector_calloc (n); + + if (tau == 0) + { + gsl_matrix_free (q); + gsl_matrix_free (r); + + GSL_ERROR ("failed to allocate space for tau", GSL_ENOMEM); + } + + state->tau = tau; + + diag = gsl_vector_calloc (n); + + if (diag == 0) + { + gsl_matrix_free (q); + gsl_matrix_free (r); + gsl_vector_free (tau); + + GSL_ERROR ("failed to allocate space for diag", GSL_ENOMEM); + } + + state->diag = diag; + + qtf = gsl_vector_calloc (n); + + if (qtf == 0) + { + gsl_matrix_free (q); + gsl_matrix_free (r); + gsl_vector_free (tau); + gsl_vector_free (diag); + + GSL_ERROR ("failed to allocate space for qtf", GSL_ENOMEM); + } + + state->qtf = qtf; + + newton = gsl_vector_calloc (n); + + if (newton == 0) + { + gsl_matrix_free (q); + gsl_matrix_free (r); + gsl_vector_free (tau); + gsl_vector_free (diag); + gsl_vector_free (qtf); + + GSL_ERROR ("failed to allocate space for newton", GSL_ENOMEM); + } + + state->newton = newton; + + gradient = gsl_vector_calloc (n); + + if (gradient == 0) + { + gsl_matrix_free (q); + gsl_matrix_free (r); + gsl_vector_free (tau); + gsl_vector_free (diag); + gsl_vector_free (qtf); + gsl_vector_free (newton); + + GSL_ERROR ("failed to allocate space for gradient", GSL_ENOMEM); + } + + state->gradient = gradient; + + x_trial = gsl_vector_calloc (n); + + if (x_trial == 0) + { + gsl_matrix_free (q); + gsl_matrix_free (r); + gsl_vector_free (tau); + gsl_vector_free (diag); + gsl_vector_free (qtf); + gsl_vector_free (newton); + gsl_vector_free (gradient); + + GSL_ERROR ("failed to allocate space for x_trial", GSL_ENOMEM); + } + + state->x_trial = x_trial; + + f_trial = gsl_vector_calloc (n); + + if (f_trial == 0) + { + gsl_matrix_free (q); + gsl_matrix_free (r); + gsl_vector_free (tau); + gsl_vector_free (diag); + gsl_vector_free (qtf); + gsl_vector_free (newton); + gsl_vector_free (gradient); + gsl_vector_free (x_trial); + + GSL_ERROR ("failed to allocate space for f_trial", GSL_ENOMEM); + } + + state->f_trial = f_trial; + + df = gsl_vector_calloc (n); + + if (df == 0) + { + gsl_matrix_free (q); + gsl_matrix_free (r); + gsl_vector_free (tau); + gsl_vector_free (diag); + gsl_vector_free (qtf); + gsl_vector_free (newton); + gsl_vector_free (gradient); + gsl_vector_free (x_trial); + gsl_vector_free (f_trial); + + GSL_ERROR ("failed to allocate space for df", GSL_ENOMEM); + } + + state->df = df; + + qtdf = gsl_vector_calloc (n); + + if (qtdf == 0) + { + gsl_matrix_free (q); + gsl_matrix_free (r); + gsl_vector_free (tau); + gsl_vector_free (diag); + gsl_vector_free (qtf); + gsl_vector_free (newton); + gsl_vector_free (gradient); + gsl_vector_free (x_trial); + gsl_vector_free (f_trial); + gsl_vector_free (df); + + GSL_ERROR ("failed to allocate space for qtdf", GSL_ENOMEM); + } + + state->qtdf = qtdf; + + + rdx = gsl_vector_calloc (n); + + if (rdx == 0) + { + gsl_matrix_free (q); + gsl_matrix_free (r); + gsl_vector_free (tau); + gsl_vector_free (diag); + gsl_vector_free (qtf); + gsl_vector_free (newton); + gsl_vector_free (gradient); + gsl_vector_free (x_trial); + gsl_vector_free (f_trial); + gsl_vector_free (df); + gsl_vector_free (qtdf); + + GSL_ERROR ("failed to allocate space for rdx", GSL_ENOMEM); + } + + state->rdx = rdx; + + w = gsl_vector_calloc (n); + + if (w == 0) + { + gsl_matrix_free (q); + gsl_matrix_free (r); + gsl_vector_free (tau); + gsl_vector_free (diag); + gsl_vector_free (qtf); + gsl_vector_free (newton); + gsl_vector_free (gradient); + gsl_vector_free (x_trial); + gsl_vector_free (f_trial); + gsl_vector_free (df); + gsl_vector_free (qtdf); + gsl_vector_free (rdx); + + GSL_ERROR ("failed to allocate space for w", GSL_ENOMEM); + } + + state->w = w; + + v = gsl_vector_calloc (n); + + if (v == 0) + { + gsl_matrix_free (q); + gsl_matrix_free (r); + gsl_vector_free (tau); + gsl_vector_free (diag); + gsl_vector_free (qtf); + gsl_vector_free (newton); + gsl_vector_free (gradient); + gsl_vector_free (x_trial); + gsl_vector_free (f_trial); + gsl_vector_free (df); + gsl_vector_free (qtdf); + gsl_vector_free (rdx); + gsl_vector_free (w); + + GSL_ERROR ("failed to allocate space for v", GSL_ENOMEM); + } + + state->v = v; + + return GSL_SUCCESS; +} + +static int +hybridj_set (void *vstate, gsl_multiroot_function_fdf * fdf, gsl_vector * x, gsl_vector * f, gsl_matrix * J, gsl_vector * dx) +{ + int status = hybridj_set_impl (vstate, fdf, x, f, J, dx, 0); + return status ; +} + +static int +hybridsj_set (void *vstate, gsl_multiroot_function_fdf * fdf, gsl_vector * x, gsl_vector * f, gsl_matrix * J, gsl_vector * dx) +{ + int status = hybridj_set_impl (vstate, fdf, x, f, J, dx, 1); + return status ; +} + +static int +hybridj_set_impl (void *vstate, gsl_multiroot_function_fdf * fdf, gsl_vector * x, gsl_vector * f, gsl_matrix * J, gsl_vector * dx, int scale) +{ + hybridj_state_t *state = (hybridj_state_t *) vstate; + + gsl_matrix *q = state->q; + gsl_matrix *r = state->r; + gsl_vector *tau = state->tau; + gsl_vector *diag = state->diag; + + GSL_MULTIROOT_FN_EVAL_F_DF (fdf, x, f, J); + + state->iter = 1; + state->fnorm = enorm (f); + state->ncfail = 0; + state->ncsuc = 0; + state->nslow1 = 0; + state->nslow2 = 0; + + gsl_vector_set_all (dx, 0.0); + + /* Store column norms in diag */ + + if (scale) + compute_diag (J, diag); + else + gsl_vector_set_all (diag, 1.0); + + /* Set delta to factor |D x| or to factor if |D x| is zero */ + + state->delta = compute_delta (diag, x); + + /* Factorize J into QR decomposition */ + + gsl_linalg_QR_decomp (J, tau); + gsl_linalg_QR_unpack (J, tau, q, r); + + return GSL_SUCCESS; +} + +static int +hybridj_iterate (void *vstate, gsl_multiroot_function_fdf * fdf, gsl_vector * x, gsl_vector * f, gsl_matrix * J, gsl_vector * dx) +{ + int status = hybridj_iterate_impl (vstate, fdf, x, f, J, dx, 0); + return status; +} + +static int +hybridsj_iterate (void *vstate, gsl_multiroot_function_fdf * fdf, gsl_vector * x, gsl_vector * f, gsl_matrix * J, gsl_vector * dx) +{ + int status = hybridj_iterate_impl (vstate, fdf, x, f, J, dx, 1); + return status; +} + +static int +hybridj_iterate_impl (void *vstate, gsl_multiroot_function_fdf * fdf, gsl_vector * x, gsl_vector * f, gsl_matrix * J, gsl_vector * dx, int scale) +{ + hybridj_state_t *state = (hybridj_state_t *) vstate; + + const double fnorm = state->fnorm; + + gsl_matrix *q = state->q; + gsl_matrix *r = state->r; + gsl_vector *tau = state->tau; + gsl_vector *diag = state->diag; + gsl_vector *qtf = state->qtf; + gsl_vector *x_trial = state->x_trial; + gsl_vector *f_trial = state->f_trial; + gsl_vector *df = state->df; + gsl_vector *qtdf = state->qtdf; + gsl_vector *rdx = state->rdx; + gsl_vector *w = state->w; + gsl_vector *v = state->v; + + double prered, actred; + double pnorm, fnorm1, fnorm1p; + double ratio; + double p1 = 0.1, p5 = 0.5, p001 = 0.001, p0001 = 0.0001; + + /* Compute qtf = Q^T f */ + + compute_qtf (q, f, qtf); + + /* Compute dogleg step */ + + dogleg (r, qtf, diag, state->delta, state->newton, state->gradient, dx); + + /* Take a trial step */ + + compute_trial_step (x, dx, state->x_trial); + + pnorm = scaled_enorm (diag, dx); + + if (state->iter == 1) + { + if (pnorm < state->delta) + { + state->delta = pnorm; + } + } + + /* Evaluate function at x + p */ + + { + int status = GSL_MULTIROOT_FN_EVAL_F (fdf, x_trial, f_trial); + + if (status != GSL_SUCCESS) + { + return GSL_EBADFUNC; + } + } + + /* Set df = f_trial - f */ + + compute_df (f_trial, f, df); + + /* Compute the scaled actual reduction */ + + fnorm1 = enorm (f_trial); + + actred = compute_actual_reduction (fnorm, fnorm1); + + /* Compute rdx = R dx */ + + compute_rdx (r, dx, rdx); + + /* Compute the scaled predicted reduction phi1p = |Q^T f + R dx| */ + + fnorm1p = enorm_sum (qtf, rdx); + + prered = compute_predicted_reduction (fnorm, fnorm1p); + + /* Compute the ratio of the actual to predicted reduction */ + + if (prered > 0) + { + ratio = actred / prered; + } + else + { + ratio = 0; + } + + /* Update the step bound */ + + if (ratio < p1) + { + state->ncsuc = 0; + state->ncfail++; + state->delta *= p5; + } + else + { + state->ncfail = 0; + state->ncsuc++; + + if (ratio >= p5 || state->ncsuc > 1) + state->delta = GSL_MAX (state->delta, pnorm / p5); + if (fabs (ratio - 1) <= p1) + state->delta = pnorm / p5; + } + + /* Test for successful iteration */ + + if (ratio >= p0001) + { + gsl_vector_memcpy (x, x_trial); + gsl_vector_memcpy (f, f_trial); + state->fnorm = fnorm1; + state->iter++; + } + + /* Determine the progress of the iteration */ + + state->nslow1++; + if (actred >= p001) + state->nslow1 = 0; + + if (actred >= p1) + state->nslow2 = 0; + + if (state->ncfail == 2) + { + { + int status = GSL_MULTIROOT_FN_EVAL_DF (fdf, x, J); + + if (status != GSL_SUCCESS) + { + return GSL_EBADFUNC; + } + } + + state->nslow2++; + + if (state->iter == 1) + { + if (scale) + compute_diag (J, diag); + state->delta = compute_delta (diag, x); + } + else + { + if (scale) + update_diag (J, diag); + } + + /* Factorize J into QR decomposition */ + + gsl_linalg_QR_decomp (J, tau); + gsl_linalg_QR_unpack (J, tau, q, r); + return GSL_SUCCESS; + } + + /* Compute qtdf = Q^T df, w = (Q^T df - R dx)/|dx|, v = D^2 dx/|dx| */ + + compute_qtf (q, df, qtdf); + + compute_wv (qtdf, rdx, dx, diag, pnorm, w, v); + + /* Rank-1 update of the jacobian Q'R' = Q(R + w v^T) */ + + gsl_linalg_QR_update (q, r, w, v); + + /* No progress as measured by jacobian evaluations */ + + if (state->nslow2 == 5) + { + return GSL_ENOPROGJ; + } + + /* No progress as measured by function evaluations */ + + if (state->nslow1 == 10) + { + return GSL_ENOPROG; + } + + return GSL_SUCCESS; +} + + +static void +hybridj_free (void *vstate) +{ + hybridj_state_t *state = (hybridj_state_t *) vstate; + + gsl_vector_free (state->v); + gsl_vector_free (state->w); + gsl_vector_free (state->rdx); + gsl_vector_free (state->qtdf); + gsl_vector_free (state->df); + gsl_vector_free (state->f_trial); + gsl_vector_free (state->x_trial); + gsl_vector_free (state->gradient); + gsl_vector_free (state->newton); + gsl_vector_free (state->qtf); + gsl_vector_free (state->diag); + gsl_vector_free (state->tau); + gsl_matrix_free (state->r); + gsl_matrix_free (state->q); +} + +static const gsl_multiroot_fdfsolver_type hybridj_type = +{ + "hybridj", /* name */ + sizeof (hybridj_state_t), + &hybridj_alloc, + &hybridj_set, + &hybridj_iterate, + &hybridj_free +}; + +static const gsl_multiroot_fdfsolver_type hybridsj_type = +{ + "hybridsj", /* name */ + sizeof (hybridj_state_t), + &hybridj_alloc, + &hybridsj_set, + &hybridsj_iterate, + &hybridj_free +}; + +const gsl_multiroot_fdfsolver_type *gsl_multiroot_fdfsolver_hybridj = &hybridj_type; +const gsl_multiroot_fdfsolver_type *gsl_multiroot_fdfsolver_hybridsj = &hybridsj_type; diff --git a/gsl-2.5/multiroots/hybridj.lo b/gsl-2.5/multiroots/hybridj.lo new file mode 100644 index 00000000..3dc9529e --- /dev/null +++ b/gsl-2.5/multiroots/hybridj.lo @@ -0,0 +1,12 @@ +# hybridj.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/hybridj.o' + +# Name of the non-PIC object +non_pic_object='hybridj.o' + diff --git a/gsl-2.5/multiroots/libgslmultiroots.la b/gsl-2.5/multiroots/libgslmultiroots.la new file mode 100644 index 00000000..0e1d562b --- /dev/null +++ b/gsl-2.5/multiroots/libgslmultiroots.la @@ -0,0 +1,41 @@ +# libgslmultiroots.la - a libtool library file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='' + +# Names of this library. +library_names='' + +# The name of the static archive. +old_library='libgslmultiroots.a' + +# Linker flags that can not go in dependency_libs. +inherited_linker_flags='' + +# Libraries that this one depends upon. +dependency_libs=' -lm' + +# Names of additional weak libraries provided by this library +weak_library_names='' + +# Version information for libgslmultiroots. +current= +age= +revision= + +# Is this an already installed library? +installed=no + +# Should we warn about portability when linking against -modules? +shouldnotlink=no + +# Files to dlopen/dlpreopen +dlopen='' +dlpreopen='' + +# Directory that this library needs to be installed in: +libdir='' diff --git a/gsl-2.5/multiroots/newton.c b/gsl-2.5/multiroots/newton.c new file mode 100644 index 00000000..f60ddca9 --- /dev/null +++ b/gsl-2.5/multiroots/newton.c @@ -0,0 +1,156 @@ +/* multiroots/newton.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include + +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +typedef struct + { + gsl_matrix * lu; + gsl_permutation * permutation; + } +newton_state_t; + +static int newton_alloc (void * vstate, size_t n); +static int newton_set (void * vstate, gsl_multiroot_function_fdf * fdf, gsl_vector * x, gsl_vector * f, gsl_matrix * J, gsl_vector * dx); +static int newton_iterate (void * vstate, gsl_multiroot_function_fdf * fdf, gsl_vector * x, gsl_vector * f, gsl_matrix * J, gsl_vector * dx); +static void newton_free (void * vstate); + +static int +newton_alloc (void * vstate, size_t n) +{ + newton_state_t * state = (newton_state_t *) vstate; + gsl_permutation * p; + gsl_matrix * m; + + m = gsl_matrix_calloc (n,n); + + if (m == 0) + { + GSL_ERROR ("failed to allocate space for lu", GSL_ENOMEM); + } + + state->lu = m ; + + p = gsl_permutation_calloc (n); + + if (p == 0) + { + gsl_matrix_free(m); + + GSL_ERROR ("failed to allocate space for permutation", GSL_ENOMEM); + } + + state->permutation = p ; + + return GSL_SUCCESS; +} + +static int +newton_set (void * vstate, gsl_multiroot_function_fdf * FDF, gsl_vector * x, gsl_vector * f, gsl_matrix * J, gsl_vector * dx) +{ + newton_state_t * state = (newton_state_t *) vstate; + + size_t i, n = FDF->n ; + + state = 0 ; /* avoid warnings about unused parameters */ + + GSL_MULTIROOT_FN_EVAL_F_DF (FDF, x, f, J); + + for (i = 0; i < n; i++) + { + gsl_vector_set (dx, i, 0.0); + } + + return GSL_SUCCESS; +} + +static int +newton_iterate (void * vstate, gsl_multiroot_function_fdf * fdf, gsl_vector * x, gsl_vector * f, gsl_matrix * J, gsl_vector * dx) +{ + newton_state_t * state = (newton_state_t *) vstate; + + int signum; + + size_t i; + + size_t n = fdf->n ; + + gsl_matrix_memcpy (state->lu, J); + + gsl_linalg_LU_decomp (state->lu, state->permutation, &signum); + + { + int status = gsl_linalg_LU_solve (state->lu, state->permutation, f, dx); + + if (status) + return status; + } + + for (i = 0; i < n; i++) + { + double e = gsl_vector_get (dx, i); + double y = gsl_vector_get (x, i); + gsl_vector_set (dx, i, -e); + gsl_vector_set (x, i, y - e); + } + + { + int status = GSL_MULTIROOT_FN_EVAL_F_DF (fdf, x, f, J); + + if (status != GSL_SUCCESS) + { + return GSL_EBADFUNC; + } + } + + return GSL_SUCCESS; +} + + +static void +newton_free (void * vstate) +{ + newton_state_t * state = (newton_state_t *) vstate; + + gsl_matrix_free(state->lu); + + gsl_permutation_free(state->permutation); +} + + +static const gsl_multiroot_fdfsolver_type newton_type = +{"newton", /* name */ + sizeof (newton_state_t), + &newton_alloc, + &newton_set, + &newton_iterate, + &newton_free}; + +const gsl_multiroot_fdfsolver_type * gsl_multiroot_fdfsolver_newton = &newton_type; diff --git a/gsl-2.5/multiroots/newton.lo b/gsl-2.5/multiroots/newton.lo new file mode 100644 index 00000000..37f29ae8 --- /dev/null +++ b/gsl-2.5/multiroots/newton.lo @@ -0,0 +1,12 @@ +# newton.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/newton.o' + +# Name of the non-PIC object +non_pic_object='newton.o' + diff --git a/gsl-2.5/multiroots/test b/gsl-2.5/multiroots/test new file mode 100755 index 00000000..c7108bed --- /dev/null +++ b/gsl-2.5/multiroots/test @@ -0,0 +1,228 @@ +#! /bin/sh + +# test - temporary wrapper script for .libs/test +# Generated by libtool (GNU libtool) 2.4.2 +# +# The test program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s/\([`"$\\]\)/\\\1/g' + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command="(cd /home/groups/kipac/chto/package/gsl/gsl-2.5/multiroots; LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LIBRARY_PATH; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; LD_LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/fftw/include:/home/users/chto/lib/fftw/lib:/home/users/chto/lib/healpix/lib:/home/users/chto/lib/namaster/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/include:/home/users/chto/cpp/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LD_LIBRARY_PATH; PATH=/share/software/user/open/curl/7.54.0/bin:/share/software/user/open/libressl/2.5.3/bin:/home/users/chto/lib/cfitsio:/home/users/chto/lib/cfitsio/include:/home/users/chto/lib:/home/users/chto/bin/bin:/home/users/chto/bin:/home/users/chto/.texlive/bin/x86_64-linux:/home/groups/kipac/chto/anaconda2/envs/newenv3/bin:/home/users/chto/.local/bin/include:/home/users/chto/.local/bin/lib:/home/users/chto/.local/bin:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/bin64:/share/software/user/open/fftw/3.3.6/bin:/home/groups/kipac/chto/anaconda2/condabin:/share/software/user/restricted/ifort/2019/bin:/share/software/user/open/gsl/2.3/bin:/share/software/user/srcc/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/dell/srvadmin/bin:/opt/dell/srvadmin/iSM/bin:/home/users/chto/bin; export PATH; gcc -g -O2 -o \$progdir/\$file test.o test_funcs.o ./.libs/libgslmultiroots.a ../linalg/.libs/libgsllinalg.a ../blas/.libs/libgslblas.a ../cblas/.libs/libgslcblas.so ../permutation/.libs/libgslpermutation.a ../matrix/.libs/libgslmatrix.a ../vector/.libs/libgslvector.a ../block/.libs/libgslblock.a ../complex/.libs/libgslcomplex.a ../ieee-utils/.libs/libgslieeeutils.a ../err/.libs/libgslerr.a ../test/.libs/libgsltest.a ../sys/.libs/libgslsys.a ../utils/.libs/libutils.a -lm -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/cblas/.libs -Wl,-rpath -Wl,/usr/local/lib)" + +# This environment variable determines our operation mode. +if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then + # install mode needs the following variables: + generated_by_libtool_version='2.4.2' + notinst_deplibs=' ../cblas/libgslcblas.la' +else + # When we are sourced in execute mode, $file and $ECHO are already set. + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + file="$0" + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + ECHO="printf %s\\n" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ which is used only on +# windows platforms, and (c) all begin with the string --lt- +# (application programs are unlikely to have options which match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's ../libtool value, followed by no. +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=$0 + shift + for lt_opt + do + case "$lt_opt" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%/[^/]*$%%'` + test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=. + lt_dump_F=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%^.*/%%'` + cat "$lt_dump_D/$lt_dump_F" + exit 0 + ;; + --lt-*) + $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n "$lt_option_debug"; then + echo "test:test:${LINENO}: libtool wrapper (GNU libtool) 2.4.2" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + $ECHO "test:test:${LINENO}: newargv[$lt_dump_args_N]: $lt_arg" + lt_dump_args_N=`expr $lt_dump_args_N + 1` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ + + if test -n "$lt_option_debug"; then + $ECHO "test:test:${LINENO}: newargv[0]: $progdir/$program" 1>&2 + func_lt_dump_args ${1+"$@"} 1>&2 + fi + exec "$progdir/$program" ${1+"$@"} + + $ECHO "$0: cannot exec $program $*" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from $@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case " $* " in + *\ --lt-*) + for lt_wr_arg + do + case $lt_wr_arg in + --lt-*) ;; + *) set x "$@" "$lt_wr_arg"; shift;; + esac + shift + done ;; + esac + func_exec_program_core ${1+"$@"} +} + + # Parse options + func_parse_lt_options "$0" ${1+"$@"} + + # Find the directory that this script lives in. + thisdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + test "x$thisdir" = "x$file" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=`ls -ld "$file" | /usr/bin/sed -n 's/.*-> //p'` + while test -n "$file"; do + destdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + + # If there was a directory component, then change thisdir. + if test "x$destdir" != "x$file"; then + case "$destdir" in + [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;; + *) thisdir="$thisdir/$destdir" ;; + esac + fi + + file=`$ECHO "$file" | /usr/bin/sed 's%^.*/%%'` + file=`ls -ld "$thisdir/$file" | /usr/bin/sed -n 's/.*-> //p'` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no + if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then + # special case for '.' + if test "$thisdir" = "."; then + thisdir=`pwd` + fi + # remove .libs from thisdir + case "$thisdir" in + *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /usr/bin/sed 's%[\\/][^\\/]*$%%'` ;; + .libs ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=`cd "$thisdir" && pwd` + test -n "$absdir" && thisdir="$absdir" + + program=lt-'test' + progdir="$thisdir/.libs" + + if test ! -f "$progdir/$program" || + { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /usr/bin/sed 1q`; \ + test "X$file" != "X$progdir/$program"; }; then + + file="$$-$program" + + if test ! -d "$progdir"; then + mkdir "$progdir" + else + rm -f "$progdir/$file" + fi + + # relink executable if necessary + if test -n "$relink_command"; then + if relink_command_output=`eval $relink_command 2>&1`; then : + else + printf %s\n "$relink_command_output" >&2 + rm -f "$progdir/$file" + exit 1 + fi + fi + + mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null || + { rm -f "$progdir/$program"; + mv -f "$progdir/$file" "$progdir/$program"; } + rm -f "$progdir/$file" + fi + + if test -f "$progdir/$program"; then + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + # Run the actual program with our arguments. + func_exec_program ${1+"$@"} + fi + else + # The program doesn't exist. + $ECHO "$0: error: \`$progdir/$program' does not exist" 1>&2 + $ECHO "This script is just a wrapper for $program." 1>&2 + $ECHO "See the libtool documentation for more information." 1>&2 + exit 1 + fi +fi diff --git a/gsl-2.5/multiroots/test-suite.log b/gsl-2.5/multiroots/test-suite.log new file mode 100644 index 00000000..030aa81c --- /dev/null +++ b/gsl-2.5/multiroots/test-suite.log @@ -0,0 +1,14 @@ +======================================== + gsl 2.5: multiroots/test-suite.log +======================================== + +# TOTAL: 1 +# PASS: 1 +# SKIP: 0 +# XFAIL: 0 +# FAIL: 0 +# XPASS: 0 +# ERROR: 0 + +.. contents:: :depth: 2 + diff --git a/gsl-2.5/multiroots/test.c b/gsl-2.5/multiroots/test.c new file mode 100644 index 00000000..2f2593d3 --- /dev/null +++ b/gsl-2.5/multiroots/test.c @@ -0,0 +1,260 @@ +/* multiroots/test.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include + +#include + +#include "test_funcs.h" +int test_fdf (const char * desc, gsl_multiroot_function_fdf * function, initpt_function initpt, double factor, const gsl_multiroot_fdfsolver_type * T); +int test_f (const char * desc, gsl_multiroot_function_fdf * fdf, initpt_function initpt, double factor, const gsl_multiroot_fsolver_type * T); + + +int +main (void) +{ + const gsl_multiroot_fsolver_type * fsolvers[5] ; + const gsl_multiroot_fsolver_type ** T1 ; + + const gsl_multiroot_fdfsolver_type * fdfsolvers[5] ; + const gsl_multiroot_fdfsolver_type ** T2 ; + + double f; + + fsolvers[0] = gsl_multiroot_fsolver_dnewton; + fsolvers[1] = gsl_multiroot_fsolver_broyden; + fsolvers[2] = gsl_multiroot_fsolver_hybrid; + fsolvers[3] = gsl_multiroot_fsolver_hybrids; + fsolvers[4] = 0; + + fdfsolvers[0] = gsl_multiroot_fdfsolver_newton; + fdfsolvers[1] = gsl_multiroot_fdfsolver_gnewton; + fdfsolvers[2] = gsl_multiroot_fdfsolver_hybridj; + fdfsolvers[3] = gsl_multiroot_fdfsolver_hybridsj; + fdfsolvers[4] = 0; + + gsl_ieee_env_setup(); + + + f = 1.0 ; + + T1 = fsolvers ; + + while (*T1 != 0) + { + test_f ("Rosenbrock", &rosenbrock, rosenbrock_initpt, f, *T1); + test_f ("Roth", &roth, roth_initpt, f, *T1); + test_f ("Powell badly scaled", &powellscal, powellscal_initpt, f, *T1); + test_f ("Brown badly scaled", &brownscal, brownscal_initpt, f, *T1); + test_f ("Powell singular", &powellsing, powellsing_initpt, f, *T1); + test_f ("Wood", &wood, wood_initpt, f, *T1); + test_f ("Helical", &helical, helical_initpt, f, *T1); + test_f ("Discrete BVP", &dbv, dbv_initpt, f, *T1); + test_f ("Trig", &trig, trig_initpt, f, *T1); + T1++; + } + + T2 = fdfsolvers ; + + while (*T2 != 0) + { + test_fdf ("Rosenbrock", &rosenbrock, rosenbrock_initpt, f, *T2); + test_fdf ("Roth", &roth, roth_initpt, f, *T2); + test_fdf ("Powell badly scaled", &powellscal, powellscal_initpt, f, *T2); + test_fdf ("Brown badly scaled", &brownscal, brownscal_initpt, f, *T2); + test_fdf ("Powell singular", &powellsing, powellsing_initpt, f, *T2); + test_fdf ("Wood", &wood, wood_initpt, f, *T2); + test_fdf ("Helical", &helical, helical_initpt, f, *T2); + test_fdf ("Discrete BVP", &dbv, dbv_initpt, f, *T2); + test_fdf ("Trig", &trig, trig_initpt, f, *T2); + T2++; + } + + exit (gsl_test_summary ()); +} + +void scale (gsl_vector * x, double factor); + +void +scale (gsl_vector * x, double factor) +{ + size_t i, n = x->size; + + if (gsl_vector_isnull(x)) + { + for (i = 0; i < n; i++) + { + gsl_vector_set (x, i, factor); + } + } + else + { + for (i = 0; i < n; i++) + { + double xi = gsl_vector_get(x, i); + gsl_vector_set(x, i, factor * xi); + } + } +} + +int +test_fdf (const char * desc, gsl_multiroot_function_fdf * function, + initpt_function initpt, double factor, + const gsl_multiroot_fdfsolver_type * T) +{ + int status; + double residual = 0; + size_t i, n = function->n, iter = 0; + + gsl_vector *x = gsl_vector_alloc (n); + gsl_matrix *J = gsl_matrix_alloc (n, n); + + gsl_multiroot_fdfsolver *s; + + (*initpt) (x); + + if (factor != 1.0) scale(x, factor); + + s = gsl_multiroot_fdfsolver_alloc (T, n); + gsl_multiroot_fdfsolver_set (s, function, x); + + do + { + iter++; + status = gsl_multiroot_fdfsolver_iterate (s); + + if (status) + break ; + + status = gsl_multiroot_test_residual (s->f, 0.0000001); + } + while (status == GSL_CONTINUE && iter < 1000); + +#ifdef DEBUG + printf("x "); gsl_vector_fprintf (stdout, s->x, "%g"); printf("\n"); + printf("f "); gsl_vector_fprintf (stdout, s->f, "%g"); printf("\n"); +#endif + + +#ifdef TEST_JACOBIAN + { + double r,sum; size_t j; + + gsl_multiroot_function f1 ; + f1.f = function->f ; + f1.n = function->n ; + f1.params = function->params ; + + gsl_multiroot_fdjacobian (&f1, s->x, s->f, GSL_SQRT_DBL_EPSILON, J); + + /* compare J and s->J */ + + r=0;sum=0; + for (i = 0; i < n; i++) + for (j = 0; j< n ; j++) + { + double u = gsl_matrix_get(J,i,j); + double su = gsl_matrix_get(s->J, i, j); + r = fabs(u - su)/(1e-6 + 1e-6 * fabs(u)); sum+=r; + if (fabs(u - su) > 1e-6 + 1e-6 * fabs(u)) + printf("broken jacobian %g\n", r); + } + printf("avg r = %g\n", sum/(n*n)); + } +#endif + + for (i = 0; i < n ; i++) + { + residual += fabs(gsl_vector_get(s->f, i)); + } + + gsl_multiroot_fdfsolver_free (s); + gsl_matrix_free(J); + gsl_vector_free(x); + + gsl_test(status, "%s on %s (%g), %u iterations, residual = %.2g", T->name, desc, factor, iter, residual); + + return status; +} + + +int +test_f (const char * desc, gsl_multiroot_function_fdf * fdf, + initpt_function initpt, double factor, + const gsl_multiroot_fsolver_type * T) +{ + int status; + size_t i, n = fdf->n, iter = 0; + double residual = 0; + + gsl_vector *x; + + gsl_multiroot_fsolver *s; + gsl_multiroot_function function; + + function.f = fdf->f; + function.params = fdf->params; + function.n = n ; + + x = gsl_vector_alloc (n); + + (*initpt) (x); + + if (factor != 1.0) scale(x, factor); + + s = gsl_multiroot_fsolver_alloc (T, n); + gsl_multiroot_fsolver_set (s, &function, x); + +/* printf("x "); gsl_vector_fprintf (stdout, s->x, "%g"); printf("\n"); */ +/* printf("f "); gsl_vector_fprintf (stdout, s->f, "%g"); printf("\n"); */ + + do + { + iter++; + status = gsl_multiroot_fsolver_iterate (s); + + if (status) + break ; + + status = gsl_multiroot_test_residual (s->f, 0.0000001); + } + while (status == GSL_CONTINUE && iter < 1000); + +#ifdef DEBUG + printf("x "); gsl_vector_fprintf (stdout, s->x, "%g"); printf("\n"); + printf("f "); gsl_vector_fprintf (stdout, s->f, "%g"); printf("\n"); +#endif + + for (i = 0; i < n ; i++) + { + residual += fabs(gsl_vector_get(s->f, i)); + } + + gsl_multiroot_fsolver_free (s); + gsl_vector_free(x); + + gsl_test(status, "%s on %s (%g), %u iterations, residual = %.2g", T->name, desc, factor, iter, residual); + + return status; +} diff --git a/gsl-2.5/multiroots/test.log b/gsl-2.5/multiroots/test.log new file mode 100644 index 00000000..36ae2ede --- /dev/null +++ b/gsl-2.5/multiroots/test.log @@ -0,0 +1 @@ +Completed [72/72] diff --git a/gsl-2.5/multiroots/test.trs b/gsl-2.5/multiroots/test.trs new file mode 100644 index 00000000..3f0f396c --- /dev/null +++ b/gsl-2.5/multiroots/test.trs @@ -0,0 +1,4 @@ +:test-result: PASS +:global-test-result: PASS +:recheck: no +:copy-in-global-log: no diff --git a/gsl-2.5/multiroots/test_funcs.c b/gsl-2.5/multiroots/test_funcs.c new file mode 100644 index 00000000..b1dbf779 --- /dev/null +++ b/gsl-2.5/multiroots/test_funcs.c @@ -0,0 +1,744 @@ +/* multiroots/test_funcs.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include + +#include "test_funcs.h" + +/* For information on testing see the following paper, + + J.J More, B.S. Garbow, K.E. Hillstrom, "Testing Unconstrained + Optimization Software", ACM Transactions on Mathematical Software, + Vol 7, No 1, (1981) p 17-41 + + */ + +/* Rosenbrock Function */ + +gsl_multiroot_function_fdf rosenbrock = +{&rosenbrock_f, + &rosenbrock_df, + &rosenbrock_fdf, + 2, 0}; + +void +rosenbrock_initpt (gsl_vector * x) +{ + gsl_vector_set (x, 0, -1.2); + gsl_vector_set (x, 1, 1.0); +} + +int +rosenbrock_f (const gsl_vector * x, void *params, gsl_vector * f) +{ + double x0 = gsl_vector_get (x, 0); + double x1 = gsl_vector_get (x, 1); + + double y0 = 1 - x0; + double y1 = 10 * (x1 - x0 * x0); + + gsl_vector_set (f, 0, y0); + gsl_vector_set (f, 1, y1); + + params = 0; /* avoid warning about unused parameters */ + + return GSL_SUCCESS; +} + +int +rosenbrock_df (const gsl_vector * x, void *params, gsl_matrix * df) +{ + double x0 = gsl_vector_get (x, 0); + + double df00 = -1; + double df01 = 0; + double df10 = -20 * x0; + double df11 = 10; + + gsl_matrix_set (df, 0, 0, df00); + gsl_matrix_set (df, 0, 1, df01); + gsl_matrix_set (df, 1, 0, df10); + gsl_matrix_set (df, 1, 1, df11); + + params = 0; /* avoid warning about unused parameters */ + + return GSL_SUCCESS; +} + +int +rosenbrock_fdf (const gsl_vector * x, void *params, + gsl_vector * f, gsl_matrix * df) +{ + rosenbrock_f (x, params, f); + rosenbrock_df (x, params, df); + + return GSL_SUCCESS; +} + + +/* Freudenstein and Roth function */ + +gsl_multiroot_function_fdf roth = +{&roth_f, + &roth_df, + &roth_fdf, + 2, 0}; + +void +roth_initpt (gsl_vector * x) +{ + gsl_vector_set (x, 0, 4.5); /* changed from the value in the paper */ + gsl_vector_set (x, 1, 3.5); /* otherwise the problem is too hard */ +} + +int +roth_f (const gsl_vector * x, void *params, gsl_vector * f) +{ + double x0 = gsl_vector_get (x, 0); + double x1 = gsl_vector_get (x, 1); + + double y0 = -13.0 + x0 + ((5.0 - x1)*x1 - 2.0)*x1; + double y1 = -29.0 + x0 + ((x1 + 1.0)*x1 - 14.0)*x1; + + gsl_vector_set (f, 0, y0); + gsl_vector_set (f, 1, y1); + + params = 0; /* avoid warning about unused parameters */ + + return GSL_SUCCESS; +} + +int +roth_df (const gsl_vector * x, void *params, gsl_matrix * df) +{ + double x1 = gsl_vector_get (x, 1); + + double df00 = 1; + double df01 = -3 * x1 * x1 + 10 * x1 - 2; + double df10 = 1; + double df11 = 3 * x1 * x1 + 2 * x1 - 14; + + gsl_matrix_set (df, 0, 0, df00); + gsl_matrix_set (df, 0, 1, df01); + gsl_matrix_set (df, 1, 0, df10); + gsl_matrix_set (df, 1, 1, df11); + + params = 0; /* avoid warning about unused parameters */ + + return GSL_SUCCESS; +} + +int +roth_fdf (const gsl_vector * x, void *params, + gsl_vector * f, gsl_matrix * df) +{ + roth_f (x, params, f); + roth_df (x, params, df); + + return GSL_SUCCESS; +} + + + +/* Powell badly scaled function */ + +gsl_multiroot_function_fdf powellscal = +{&powellscal_f, + &powellscal_df, + &powellscal_fdf, + 2, 0}; + +void +powellscal_initpt (gsl_vector * x) +{ + gsl_vector_set (x, 0, 0.0); + gsl_vector_set (x, 1, 1.0); +} + +int +powellscal_f (const gsl_vector * x, void *params, gsl_vector * f) +{ + double x0 = gsl_vector_get (x, 0); + double x1 = gsl_vector_get (x, 1); + + double y0 = 10000.0 * x0 * x1 - 1.0; + double y1 = exp (-x0) + exp (-x1) - 1.0001; + + gsl_vector_set (f, 0, y0); + gsl_vector_set (f, 1, y1); + + params = 0; /* avoid warning about unused parameters */ + + return GSL_SUCCESS; +} + +int +powellscal_df (const gsl_vector * x, void *params, gsl_matrix * df) +{ + double x0 = gsl_vector_get (x, 0); + double x1 = gsl_vector_get (x, 1); + + double df00 = 10000.0 * x1, df01 = 10000.0 * x0; + double df10 = -exp (-x0), df11 = -exp (-x1); + + gsl_matrix_set (df, 0, 0, df00); + gsl_matrix_set (df, 0, 1, df01); + gsl_matrix_set (df, 1, 0, df10); + gsl_matrix_set (df, 1, 1, df11); + + params = 0; /* avoid warning about unused parameters */ + + return GSL_SUCCESS; +} + +int +powellscal_fdf (const gsl_vector * x, void *params, + gsl_vector * f, gsl_matrix * df) +{ + powellscal_f (x, params, f); + powellscal_df (x, params, df); + + return GSL_SUCCESS; +} + + +/* Brown badly scaled function */ + +gsl_multiroot_function_fdf brownscal = +{&brownscal_f, + &brownscal_df, + &brownscal_fdf, + 2, 0}; + +void +brownscal_initpt (gsl_vector * x) +{ + gsl_vector_set (x, 0, 1.0); + gsl_vector_set (x, 1, 1.0); +} + +int +brownscal_f (const gsl_vector * x, void *params, gsl_vector * f) +{ + double x0 = gsl_vector_get (x, 0); + double x1 = gsl_vector_get (x, 1); + + double y0 = x0 - 1e6; + double y1 = x0 * x1 - 2; + + gsl_vector_set (f, 0, y0); + gsl_vector_set (f, 1, y1); + + params = 0; /* avoid warning about unused parameters */ + + return GSL_SUCCESS; +} + +int +brownscal_df (const gsl_vector * x, void *params, gsl_matrix * df) +{ + double x0 = gsl_vector_get (x, 0); + double x1 = gsl_vector_get (x, 1); + + double df00 = 1.0, df01 = 0.0; + double df10 = x1, df11 = x0; + + gsl_matrix_set (df, 0, 0, df00); + gsl_matrix_set (df, 0, 1, df01); + gsl_matrix_set (df, 1, 0, df10); + gsl_matrix_set (df, 1, 1, df11); + + params = 0; /* avoid warning about unused parameters */ + + return GSL_SUCCESS; +} + +int +brownscal_fdf (const gsl_vector * x, void *params, + gsl_vector * f, gsl_matrix * df) +{ + brownscal_f (x, params, f); + brownscal_df (x, params, df); + + return GSL_SUCCESS; +} + + +/* Powell Singular Function */ + +gsl_multiroot_function_fdf powellsing = +{&powellsing_f, + &powellsing_df, + &powellsing_fdf, + 4, 0}; + +void +powellsing_initpt (gsl_vector * x) +{ + gsl_vector_set (x, 0, 3.0); + gsl_vector_set (x, 1, -1.0); + gsl_vector_set (x, 2, 0.0); + gsl_vector_set (x, 3, 1.0); +} + +int +powellsing_f (const gsl_vector * x, void *params, gsl_vector * f) +{ + double x0 = gsl_vector_get (x, 0); + double x1 = gsl_vector_get (x, 1); + double x2 = gsl_vector_get (x, 2); + double x3 = gsl_vector_get (x, 3); + + double y0 = x0 + 10 * x1; + double y1 = sqrt (5.0) * (x2 - x3); + double y2 = pow (x1 - 2 * x2, 2.0); + double y3 = sqrt (10.0) * pow (x0 - x3, 2.0); + + gsl_vector_set (f, 0, y0); + gsl_vector_set (f, 1, y1); + gsl_vector_set (f, 2, y2); + gsl_vector_set (f, 3, y3); + + params = 0; /* avoid warning about unused parameters */ + + return GSL_SUCCESS; +} + +int +powellsing_df (const gsl_vector * x, void *params, gsl_matrix * df) +{ + double x0 = gsl_vector_get (x, 0); + double x1 = gsl_vector_get (x, 1); + double x2 = gsl_vector_get (x, 2); + double x3 = gsl_vector_get (x, 3); + + double df00 = 1, df01 = 10, df02 = 0, df03 = 0; + double df10 = 0, df11 = 0, df12 = sqrt (5.0), df13 = -df12; + double df20 = 0, df21 = 2 * (x1 - 2 * x2), df22 = -2 * df21, df23 = 0; + double df30 = 2 * sqrt (10.0) * (x0 - x3), df31 = 0, df32 = 0, df33 = -df30; + + gsl_matrix_set (df, 0, 0, df00); + gsl_matrix_set (df, 0, 1, df01); + gsl_matrix_set (df, 0, 2, df02); + gsl_matrix_set (df, 0, 3, df03); + + gsl_matrix_set (df, 1, 0, df10); + gsl_matrix_set (df, 1, 1, df11); + gsl_matrix_set (df, 1, 2, df12); + gsl_matrix_set (df, 1, 3, df13); + + gsl_matrix_set (df, 2, 0, df20); + gsl_matrix_set (df, 2, 1, df21); + gsl_matrix_set (df, 2, 2, df22); + gsl_matrix_set (df, 2, 3, df23); + + gsl_matrix_set (df, 3, 0, df30); + gsl_matrix_set (df, 3, 1, df31); + gsl_matrix_set (df, 3, 2, df32); + gsl_matrix_set (df, 3, 3, df33); + + params = 0; /* avoid warning about unused parameters */ + + return GSL_SUCCESS; +} + +int +powellsing_fdf (const gsl_vector * x, void *params, + gsl_vector * f, gsl_matrix * df) +{ + powellsing_f (x, params, f); + powellsing_df (x, params, df); + + return GSL_SUCCESS; +} + + +/* Wood function */ + +gsl_multiroot_function_fdf wood = +{&wood_f, + &wood_df, + &wood_fdf, + 4, 0}; + +void +wood_initpt (gsl_vector * x) +{ + gsl_vector_set (x, 0, -3.0); + gsl_vector_set (x, 1, -1.0); + gsl_vector_set (x, 2, -3.0); + gsl_vector_set (x, 3, -1.0); +} + +int +wood_f (const gsl_vector * x, void *params, gsl_vector * f) +{ + double x0 = gsl_vector_get (x, 0); + double x1 = gsl_vector_get (x, 1); + double x2 = gsl_vector_get (x, 2); + double x3 = gsl_vector_get (x, 3); + + double t1 = x1 - x0 * x0; + double t2 = x3 - x2 * x2; + + double y0 = -200.0 * x0 * t1 - (1 - x0); + double y1 = 200.0 * t1 + 20.2 * (x1 - 1) + 19.8 * (x3 - 1); + double y2 = -180.0 * x2 * t2 - (1 - x2); + double y3 = 180.0 * t2 + 20.2 * (x3 - 1) + 19.8 * (x1 - 1); + + gsl_vector_set (f, 0, y0); + gsl_vector_set (f, 1, y1); + gsl_vector_set (f, 2, y2); + gsl_vector_set (f, 3, y3); + + params = 0; /* avoid warning about unused parameters */ + + return GSL_SUCCESS; +} + +int +wood_df (const gsl_vector * x, void *params, gsl_matrix * df) +{ + double x0 = gsl_vector_get (x, 0); + double x1 = gsl_vector_get (x, 1); + double x2 = gsl_vector_get (x, 2); + double x3 = gsl_vector_get (x, 3); + + double t1 = x1 - 3 * x0 * x0; + double t2 = x3 - 3 * x2 * x2; + + double df00 = -200.0 * t1 + 1, df01 = -200.0 * x0, df02 = 0, df03 = 0; + double df10 = -400.0*x0, df11 = 200.0 + 20.2, df12 = 0, df13 = 19.8; + double df20 = 0, df21 = 0, df22 = -180.0 * t2 + 1, df23 = -180.0 * x2; + double df30 = 0, df31 = 19.8, df32 = -2 * 180 * x2, df33 = 180.0 + 20.2; + + gsl_matrix_set (df, 0, 0, df00); + gsl_matrix_set (df, 0, 1, df01); + gsl_matrix_set (df, 0, 2, df02); + gsl_matrix_set (df, 0, 3, df03); + + gsl_matrix_set (df, 1, 0, df10); + gsl_matrix_set (df, 1, 1, df11); + gsl_matrix_set (df, 1, 2, df12); + gsl_matrix_set (df, 1, 3, df13); + + gsl_matrix_set (df, 2, 0, df20); + gsl_matrix_set (df, 2, 1, df21); + gsl_matrix_set (df, 2, 2, df22); + gsl_matrix_set (df, 2, 3, df23); + + gsl_matrix_set (df, 3, 0, df30); + gsl_matrix_set (df, 3, 1, df31); + gsl_matrix_set (df, 3, 2, df32); + gsl_matrix_set (df, 3, 3, df33); + + params = 0; /* avoid warning about unused parameters */ + + return GSL_SUCCESS; +} + +int +wood_fdf (const gsl_vector * x, void *params, + gsl_vector * f, gsl_matrix * df) +{ + wood_f (x, params, f); + wood_df (x, params, df); + + return GSL_SUCCESS; +} + + +/* Helical Valley Function */ + +gsl_multiroot_function_fdf helical = +{&helical_f, + &helical_df, + &helical_fdf, + 3, 0}; + +void +helical_initpt (gsl_vector * x) +{ + gsl_vector_set (x, 0, -1.0); + gsl_vector_set (x, 1, 0.0); + gsl_vector_set (x, 2, 0.0); +} + +int +helical_f (const gsl_vector * x, void *params, gsl_vector * f) +{ + double x0 = gsl_vector_get (x, 0); + double x1 = gsl_vector_get (x, 1); + double x2 = gsl_vector_get (x, 2); + + double t1, t2; + double y0, y1, y2; + + if (x0 > 0) + { + t1 = atan(x1/x0) / (2.0 * M_PI); + } + else if (x0 < 0) + { + t1 = 0.5 + atan(x1/x0) / (2.0 * M_PI); + } + else + { + t1 = 0.25 * (x1 > 0 ? +1 : -1); + } + + t2 = sqrt(x0*x0 + x1*x1) ; + + y0 = 10 * (x2 - 10 * t1); + y1 = 10 * (t2 - 1); + y2 = x2 ; + + gsl_vector_set (f, 0, y0); + gsl_vector_set (f, 1, y1); + gsl_vector_set (f, 2, y2); + + params = 0; /* avoid warning about unused parameters */ + + return GSL_SUCCESS; +} + +int +helical_df (const gsl_vector * x, void *params, gsl_matrix * df) +{ + double x0 = gsl_vector_get (x, 0); + double x1 = gsl_vector_get (x, 1); + + double t = x0 * x0 + x1 * x1 ; + double t1 = 2 * M_PI * t ; + double t2 = sqrt(t) ; + + double df00 = 100*x1/t1, df01 = -100.0 * x0/t1, df02 = 10.0; + double df10 = 10*x0/t2, df11 = 10*x1/t2, df12 = 0; + double df20 = 0, df21 = 0, df22 = 1.0; + + gsl_matrix_set (df, 0, 0, df00); + gsl_matrix_set (df, 0, 1, df01); + gsl_matrix_set (df, 0, 2, df02); + + gsl_matrix_set (df, 1, 0, df10); + gsl_matrix_set (df, 1, 1, df11); + gsl_matrix_set (df, 1, 2, df12); + + gsl_matrix_set (df, 2, 0, df20); + gsl_matrix_set (df, 2, 1, df21); + gsl_matrix_set (df, 2, 2, df22); + + params = 0; /* avoid warning about unused parameters */ + + return GSL_SUCCESS; +} + +int +helical_fdf (const gsl_vector * x, void *params, + gsl_vector * f, gsl_matrix * df) +{ + helical_f (x, params, f); + helical_df (x, params, df); + + return GSL_SUCCESS; +} + + +/* Discrete Boundary Value Function */ + +#define N 10 + +gsl_multiroot_function_fdf dbv = +{&dbv_f, + &dbv_df, + &dbv_fdf, + N, 0}; + +void +dbv_initpt (gsl_vector * x) +{ + size_t i; + double h = 1.0 / (N + 1.0); + + for (i = 0; i < N; i++) + { + double t = (i + 1) * h; + double z = t * (t - 1); + gsl_vector_set (x, i, z); + } +} + +int +dbv_f (const gsl_vector * x, void *params, gsl_vector * f) +{ + size_t i; + + double h = 1.0 / (N + 1.0); + + for (i = 0; i < N; i++) + { + double z, ti = (i + 1) * h; + double xi = 0, xim1 = 0, xip1 = 0; + + xi = gsl_vector_get (x, i); + + if (i > 0) + xim1 = gsl_vector_get (x, i - 1); + + if (i < N - 1) + xip1 = gsl_vector_get (x, i + 1); + + z = 2 * xi - xim1 - xip1 + h * h * pow(xi + ti + 1, 3.0) / 2.0; + + gsl_vector_set (f, i, z); + + } + + params = 0; /* avoid warning about unused parameters */ + + return GSL_SUCCESS; +} + +int +dbv_df (const gsl_vector * x, void *params, gsl_matrix * df) +{ + size_t i, j; + + double h = 1.0 / (N + 1.0); + + for (i = 0; i < N; i++) + for (j = 0; j < N; j++) + gsl_matrix_set (df, i, j, 0.0); + + for (i = 0; i < N; i++) + { + double dz_dxi, ti = (i + 1) * h; + + double xi = gsl_vector_get (x, i); + + dz_dxi = 2.0 + (3.0 / 2.0) * h * h * pow(xi + ti + 1, 2.0) ; + + gsl_matrix_set (df, i, i, dz_dxi); + + if (i > 0) + gsl_matrix_set (df, i, i-1, -1.0); + + if (i < N - 1) + gsl_matrix_set (df, i, i+1, -1.0); + + } + + params = 0; /* avoid warning about unused parameters */ + + return GSL_SUCCESS; +} + +int +dbv_fdf (const gsl_vector * x, void *params, + gsl_vector * f, gsl_matrix * df) +{ + dbv_f (x, params, f); + dbv_df (x, params, df); + + return GSL_SUCCESS; +} + +/* Trigonometric Function */ + +gsl_multiroot_function_fdf trig = +{&trig_f, + &trig_df, + &trig_fdf, + N, 0}; + +void +trig_initpt (gsl_vector * x) +{ + size_t i; + + for (i = 0; i < N; i++) /* choose an initial point which converges */ + { + gsl_vector_set (x, i, 0.05); + } +} + +int +trig_f (const gsl_vector * x, void *params, gsl_vector * f) +{ + size_t i; + double sum = 0; + + for (i = 0; i < N; i++) + { + sum += cos(gsl_vector_get(x,i)); + } + + for (i = 0; i < N; i++) + { + double xi = gsl_vector_get (x,i); + double z = N - sum + (i + 1) * (1 - cos(xi)) - sin(xi); + + gsl_vector_set (f, i, z); + } + + params = 0; /* avoid warning about unused parameters */ + + return GSL_SUCCESS; +} + +int +trig_df (const gsl_vector * x, void *params, gsl_matrix * df) +{ + size_t i, j; + + for (i = 0; i < N; i++) + { + for (j = 0; j < N; j++) + { + double dz; + double xi = gsl_vector_get(x, i); + double xj = gsl_vector_get(x, j); + + if (j == i) + dz = sin(xi) + (i + 1) * sin(xi) - cos(xi); + else + dz = sin(xj); + + gsl_matrix_set(df, i, j, dz); + } + } + + params = 0; /* avoid warning about unused parameters */ + + return GSL_SUCCESS; +} + +int +trig_fdf (const gsl_vector * x, void *params, + gsl_vector * f, gsl_matrix * df) +{ + trig_f (x, params, f); + trig_df (x, params, df); + + return GSL_SUCCESS; +} diff --git a/gsl-2.5/multiroots/test_funcs.h b/gsl-2.5/multiroots/test_funcs.h new file mode 100644 index 00000000..73b433d7 --- /dev/null +++ b/gsl-2.5/multiroots/test_funcs.h @@ -0,0 +1,76 @@ +/* multiroots/test_funcs.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + + +typedef void (*initpt_function) (gsl_vector * x); + +extern gsl_multiroot_function_fdf rosenbrock; +void rosenbrock_initpt (gsl_vector * x); +int rosenbrock_f (const gsl_vector * x, void *params, gsl_vector * f); +int rosenbrock_df (const gsl_vector * x, void *params, gsl_matrix * df); +int rosenbrock_fdf (const gsl_vector * x, void *params, gsl_vector * f, gsl_matrix * df); + +extern gsl_multiroot_function_fdf roth; +void roth_initpt (gsl_vector * x); +int roth_f (const gsl_vector * x, void *params, gsl_vector * f); +int roth_df (const gsl_vector * x, void *params, gsl_matrix * df); +int roth_fdf (const gsl_vector * x, void *params, gsl_vector * f, gsl_matrix * df); + +extern gsl_multiroot_function_fdf brownscal; +void brownscal_initpt (gsl_vector * x); +int brownscal_f (const gsl_vector * x, void *params, gsl_vector * f); +int brownscal_df (const gsl_vector * x, void *params, gsl_matrix * df); +int brownscal_fdf (const gsl_vector * x, void *params, gsl_vector * f, gsl_matrix * df); + +extern gsl_multiroot_function_fdf powellscal; +void powellscal_initpt (gsl_vector * x); +int powellscal_f (const gsl_vector * x, void *params, gsl_vector * f); +int powellscal_df (const gsl_vector * x, void *params, gsl_matrix * df); +int powellscal_fdf (const gsl_vector * x, void *params, gsl_vector * f, gsl_matrix * df); + +extern gsl_multiroot_function_fdf powellsing; +void powellsing_initpt (gsl_vector * x); +int powellsing_f (const gsl_vector * x, void *params, gsl_vector * f); +int powellsing_df (const gsl_vector * x, void *params, gsl_matrix * df); +int powellsing_fdf (const gsl_vector * x, void *params, gsl_vector * f, gsl_matrix * df); + +extern gsl_multiroot_function_fdf wood; +void wood_initpt (gsl_vector * x); +int wood_f (const gsl_vector * x, void *params, gsl_vector * f); +int wood_df (const gsl_vector * x, void *params, gsl_matrix * df); +int wood_fdf (const gsl_vector * x, void *params, gsl_vector * f, gsl_matrix * df); + +extern gsl_multiroot_function_fdf helical; +void helical_initpt (gsl_vector * x); +int helical_f (const gsl_vector * x, void *params, gsl_vector * f); +int helical_df (const gsl_vector * x, void *params, gsl_matrix * df); +int helical_fdf (const gsl_vector * x, void *params, gsl_vector * f, gsl_matrix * df); + +extern gsl_multiroot_function_fdf dbv; +void dbv_initpt (gsl_vector * x); +int dbv_f (const gsl_vector * x, void *params, gsl_vector * f); +int dbv_df (const gsl_vector * x, void *params, gsl_matrix * df); +int dbv_fdf (const gsl_vector * x, void *params, gsl_vector * f, gsl_matrix * df); + +extern gsl_multiroot_function_fdf trig; +void trig_initpt (gsl_vector * x); +int trig_f (const gsl_vector * x, void *params, gsl_vector * f); +int trig_df (const gsl_vector * x, void *params, gsl_matrix * df); +int trig_fdf (const gsl_vector * x, void *params, gsl_vector * f, gsl_matrix * df); + diff --git a/gsl-2.5/multiset/.deps/file.Plo b/gsl-2.5/multiset/.deps/file.Plo new file mode 100644 index 00000000..72cd356d --- /dev/null +++ b/gsl-2.5/multiset/.deps/file.Plo @@ -0,0 +1,115 @@ +file.lo: file.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdio.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../gsl/gsl_errno.h /usr/include/errno.h \ + /usr/include/bits/errno.h /usr/include/linux/errno.h \ + /usr/include/asm/errno.h /usr/include/asm-generic/errno.h \ + /usr/include/asm-generic/errno-base.h ../gsl/gsl_types.h \ + ../gsl/gsl_multiset.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_inline.h \ + ../gsl/gsl_check_range.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_multiset.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_check_range.h: diff --git a/gsl-2.5/multiset/.deps/init.Plo b/gsl-2.5/multiset/.deps/init.Plo new file mode 100644 index 00000000..12bc5b01 --- /dev/null +++ b/gsl-2.5/multiset/.deps/init.Plo @@ -0,0 +1,114 @@ +init.lo: init.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_errno.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_types.h ../gsl/gsl_multiset.h ../gsl/gsl_inline.h \ + ../gsl/gsl_check_range.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_multiset.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_check_range.h: diff --git a/gsl-2.5/multiset/.deps/inline.Plo b/gsl-2.5/multiset/.deps/inline.Plo new file mode 100644 index 00000000..7e697d43 --- /dev/null +++ b/gsl-2.5/multiset/.deps/inline.Plo @@ -0,0 +1,113 @@ +inline.lo: inline.c /usr/include/stdc-predef.h ../build.h \ + ../gsl/gsl_multiset.h /usr/include/stdlib.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_errno.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_types.h ../gsl/gsl_inline.h ../gsl/gsl_check_range.h + +/usr/include/stdc-predef.h: + +../build.h: + +../gsl/gsl_multiset.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_check_range.h: diff --git a/gsl-2.5/multiset/.deps/multiset.Plo b/gsl-2.5/multiset/.deps/multiset.Plo new file mode 100644 index 00000000..d26ca973 --- /dev/null +++ b/gsl-2.5/multiset/.deps/multiset.Plo @@ -0,0 +1,114 @@ +multiset.lo: multiset.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_errno.h /usr/include/stdio.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_types.h ../gsl/gsl_multiset.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_inline.h \ + ../gsl/gsl_check_range.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_multiset.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_check_range.h: diff --git a/gsl-2.5/multiset/.deps/test.Po b/gsl-2.5/multiset/.deps/test.Po new file mode 100644 index 00000000..2a78490a --- /dev/null +++ b/gsl-2.5/multiset/.deps/test.Po @@ -0,0 +1,142 @@ +test.o: test.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_multiset.h ../gsl/gsl_errno.h /usr/include/errno.h \ + /usr/include/bits/errno.h /usr/include/linux/errno.h \ + /usr/include/asm/errno.h /usr/include/asm-generic/errno.h \ + /usr/include/asm-generic/errno-base.h ../gsl/gsl_types.h \ + ../gsl/gsl_inline.h ../gsl/gsl_check_range.h ../gsl/gsl_test.h \ + ../gsl/gsl_ieee_utils.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_multiset.h: + +../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_test.h: + +../gsl/gsl_ieee_utils.h: diff --git a/gsl-2.5/multiset/.libs/libgslmultiset.la b/gsl-2.5/multiset/.libs/libgslmultiset.la new file mode 120000 index 00000000..18eb4355 --- /dev/null +++ b/gsl-2.5/multiset/.libs/libgslmultiset.la @@ -0,0 +1 @@ +../libgslmultiset.la \ No newline at end of file diff --git a/gsl-2.5/multiset/ChangeLog b/gsl-2.5/multiset/ChangeLog new file mode 100644 index 00000000..1dfd7c2e --- /dev/null +++ b/gsl-2.5/multiset/ChangeLog @@ -0,0 +1,14 @@ +2011-09-12 Rhys Ulerich + + * init.c (gsl_multiset_alloc): remove incorrect (k, n) constraint per + question from Michael Underwood . k strictly + greater than n is permissible. Incorrect constraint due to copy'n'pase + from combinations logic. + + * multiset.c (gsl_multiset_valid): likewise + + * test.c: add tests to verify k > n working as expected. + +2009-09-21 Rhys Ulerich + + * added multiset support to GSL based on combinations diff --git a/gsl-2.5/multiset/Makefile b/gsl-2.5/multiset/Makefile new file mode 100644 index 00000000..401e4172 --- /dev/null +++ b/gsl-2.5/multiset/Makefile @@ -0,0 +1,1034 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# multiset/Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + + + + +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/gsl +pkgincludedir = $(includedir)/gsl +pkglibdir = $(libdir)/gsl +pkglibexecdir = $(libexecdir)/gsl +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = x86_64-unknown-linux-gnu +host_triplet = x86_64-unknown-linux-gnu +check_PROGRAMS = test$(EXEEXT) +subdir = multiset +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp \ + $(noinst_HEADERS) $(pkginclude_HEADERS) \ + $(top_srcdir)/test-driver ChangeLog TODO +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +libgslmultiset_la_LIBADD = +am_libgslmultiset_la_OBJECTS = init.lo file.lo multiset.lo inline.lo +libgslmultiset_la_OBJECTS = $(am_libgslmultiset_la_OBJECTS) +AM_V_lt = $(am__v_lt_$(V)) +am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) +am__v_lt_0 = --silent +am__v_lt_1 = +am_test_OBJECTS = test.$(OBJEXT) +test_OBJECTS = $(am_test_OBJECTS) +test_DEPENDENCIES = libgslmultiset.la ../vector/libgslvector.la \ + ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la \ + ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la \ + ../utils/libutils.la +AM_V_P = $(am__v_P_$(V)) +am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY)) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_$(V)) +am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_$(V)) +am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I. -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_$(V)) +am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_$(V)) +am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libgslmultiset_la_SOURCES) $(test_SOURCES) +DIST_SOURCES = $(libgslmultiset_la_SOURCES) $(test_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(pkgincludedir)" +HEADERS = $(noinst_HEADERS) $(pkginclude_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = .test +LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing aclocal-1.13 +AMTAR = $${TAR-tar} +AM_DEFAULT_VERBOSITY = 1 +AR = ar +AS = as +AUTOCONF = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing autoconf +AUTOHEADER = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing autoheader +AUTOMAKE = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing automake-1.13 +AWK = gawk +CC = gcc +CCDEPMODE = depmode=gcc3 +CFLAGS = -g -O2 +CPP = gcc -E +CPPFLAGS = +CYGPATH_W = echo +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +DLLTOOL = false +DSYMUTIL = +DUMPBIN = +ECHO_C = +ECHO_N = -n +ECHO_T = +EGREP = /usr/bin/grep -E +EXEEXT = +FGREP = /usr/bin/grep -F +GREP = /usr/bin/grep +GSLCBLAS_LDFLAGS = +GSL_CFLAGS = -I${prefix}/include +GSL_LDFLAGS = +GSL_LIBADD = +GSL_LIBM = -lm +GSL_LIBS = -L${exec_prefix}/lib -lgsl +GSL_LT_CBLAS_VERSION = 0:0:0 +GSL_LT_VERSION = 24:0:1 +GSL_MAJOR_VERSION = 2 +GSL_MINOR_VERSION = 5 +HAVE_AIX_IEEE_INTERFACE = +HAVE_DARWIN86_IEEE_INTERFACE = +HAVE_DARWIN_IEEE_INTERFACE = +HAVE_FREEBSD_IEEE_INTERFACE = +HAVE_GNUM68K_IEEE_INTERFACE = +HAVE_GNUPPC_IEEE_INTERFACE = +HAVE_GNUSPARC_IEEE_INTERFACE = +HAVE_GNUX86_IEEE_INTERFACE = +HAVE_HPUX11_IEEE_INTERFACE = +HAVE_HPUX_IEEE_INTERFACE = +HAVE_IRIX_IEEE_INTERFACE = +HAVE_NETBSD_IEEE_INTERFACE = +HAVE_OPENBSD_IEEE_INTERFACE = +HAVE_OS2EMX_IEEE_INTERFACE = +HAVE_SOLARIS_IEEE_INTERFACE = +HAVE_SUNOS4_IEEE_INTERFACE = +HAVE_TRU64_IEEE_INTERFACE = +INSTALL = /usr/bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = $(install_sh) -c -s +LD = /usr/bin/ld -m elf_x86_64 +LDFLAGS = +LIBM = -lm +LIBOBJS = +LIBS = -lm +LIBTOOL = $(SHELL) $(top_builddir)/libtool +LIPO = +LN_S = ln -s +LTLIBOBJS = +MAINT = # +MAKEINFO = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing makeinfo +MANIFEST_TOOL = : +MKDIR_P = /usr/bin/mkdir -p +NM = /usr/bin/nm -B +NMEDIT = +OBJDUMP = objdump +OBJEXT = o +OTOOL = +OTOOL64 = +PACKAGE = gsl +PACKAGE_BUGREPORT = +PACKAGE_NAME = gsl +PACKAGE_STRING = gsl 2.5 +PACKAGE_TARNAME = gsl +PACKAGE_URL = +PACKAGE_VERSION = 2.5 +PATH_SEPARATOR = : +RANLIB = ranlib +SED = /usr/bin/sed +SET_MAKE = +SHELL = /bin/sh +STRIP = strip +VERSION = 2.5 +abs_builddir = /home/groups/kipac/chto/package/gsl/gsl-2.5/multiset +abs_srcdir = /home/groups/kipac/chto/package/gsl/gsl-2.5/multiset +abs_top_builddir = /home/groups/kipac/chto/package/gsl/gsl-2.5 +abs_top_srcdir = /home/groups/kipac/chto/package/gsl/gsl-2.5 +ac_ct_AR = ar +ac_ct_CC = gcc +ac_ct_DUMPBIN = +am__include = include +am__leading_dot = . +am__quote = +am__tar = $${TAR-tar} chof - "$$tardir" +am__untar = $${TAR-tar} xf - +bindir = ${exec_prefix}/bin +build = x86_64-unknown-linux-gnu +build_alias = +build_cpu = x86_64 +build_os = linux-gnu +build_vendor = unknown +builddir = . +datadir = ${datarootdir} +datarootdir = ${prefix}/share +docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} +dvidir = ${docdir} +exec_prefix = ${prefix} +host = x86_64-unknown-linux-gnu +host_alias = +host_cpu = x86_64 +host_os = linux-gnu +host_vendor = unknown +htmldir = ${docdir} +includedir = ${prefix}/include +infodir = ${datarootdir}/info +install_sh = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/install-sh +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +localedir = ${datarootdir}/locale +localstatedir = ${prefix}/var +mandir = ${datarootdir}/man +mkdir_p = $(MKDIR_P) +oldincludedir = /usr/include +pdfdir = ${docdir} +prefix = /home/groups/kipac/chto/package/gsl/gsl_lib +program_transform_name = s,x,x, +psdir = ${docdir} +sbindir = ${exec_prefix}/sbin +sharedstatedir = ${prefix}/com +srcdir = . +sysconfdir = ${prefix}/etc +target_alias = +top_build_prefix = ../ +top_builddir = .. +top_srcdir = .. +noinst_LTLIBRARIES = libgslmultiset.la +pkginclude_HEADERS = gsl_multiset.h +AM_CPPFLAGS = -I$(top_srcdir) +libgslmultiset_la_SOURCES = init.c file.c multiset.c inline.c +noinst_HEADERS = +TESTS = $(check_PROGRAMS) +test_SOURCES = test.c +test_LDADD = libgslmultiset.la ../vector/libgslvector.la ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu multiset/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu multiset/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: # $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): # $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libgslmultiset.la: $(libgslmultiset_la_OBJECTS) $(libgslmultiset_la_DEPENDENCIES) $(EXTRA_libgslmultiset_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(libgslmultiset_la_OBJECTS) $(libgslmultiset_la_LIBADD) $(LIBS) + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) $(EXTRA_test_DEPENDENCIES) + @rm -f test$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_OBJECTS) $(test_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +include ./$(DEPDIR)/file.Plo +include ./$(DEPDIR)/init.Plo +include ./$(DEPDIR)/inline.Plo +include ./$(DEPDIR)/multiset.Plo +include ./$(DEPDIR)/test.Po + +.c.o: + $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# $(AM_V_CC)source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(COMPILE) -c $< + +.c.obj: + $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# $(AM_V_CC)source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: + $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +# $(AM_V_CC)source='$<' object='$@' libtool=yes \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-pkgincludeHEADERS: $(pkginclude_HEADERS) + @$(NORMAL_INSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \ + done + +uninstall-pkgincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + else \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_PROGRAMS) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +test.log: test$(EXEEXT) + @p='test$(EXEEXT)'; \ + b='test'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +#.test$(EXEEXT).log: +# @p='$<'; \ +# $(am__set_b); \ +# $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +# --log-file $$b.log --trs-file $$b.trs \ +# $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +# "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-am +all-am: Makefile $(LTLIBRARIES) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(pkgincludedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-pkgincludeHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-pkgincludeHEADERS + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES cscopelist-am ctags ctags-am distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-pkgincludeHEADERS \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + recheck tags tags-am uninstall uninstall-am \ + uninstall-pkgincludeHEADERS + + +#noinst_PROGRAMS = demo +#demo_SOURCES = demo.c +#demo_LDADD = libgslmultiset.la ../vector/libgslvector.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gsl-2.5/multiset/Makefile.am b/gsl-2.5/multiset/Makefile.am new file mode 100644 index 00000000..ffdcb2e4 --- /dev/null +++ b/gsl-2.5/multiset/Makefile.am @@ -0,0 +1,21 @@ +noinst_LTLIBRARIES = libgslmultiset.la + +pkginclude_HEADERS = gsl_multiset.h + +AM_CPPFLAGS = -I$(top_srcdir) + +libgslmultiset_la_SOURCES = init.c file.c multiset.c inline.c + +noinst_HEADERS = + +TESTS = $(check_PROGRAMS) + +check_PROGRAMS = test + +test_SOURCES = test.c + +test_LDADD = libgslmultiset.la ../vector/libgslvector.la ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la + +#noinst_PROGRAMS = demo +#demo_SOURCES = demo.c +#demo_LDADD = libgslmultiset.la ../vector/libgslvector.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la diff --git a/gsl-2.5/multiset/Makefile.in b/gsl-2.5/multiset/Makefile.in new file mode 100644 index 00000000..7cfb60ec --- /dev/null +++ b/gsl-2.5/multiset/Makefile.in @@ -0,0 +1,1034 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + + +VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +check_PROGRAMS = test$(EXEEXT) +subdir = multiset +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp \ + $(noinst_HEADERS) $(pkginclude_HEADERS) \ + $(top_srcdir)/test-driver ChangeLog TODO +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +libgslmultiset_la_LIBADD = +am_libgslmultiset_la_OBJECTS = init.lo file.lo multiset.lo inline.lo +libgslmultiset_la_OBJECTS = $(am_libgslmultiset_la_OBJECTS) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +am_test_OBJECTS = test.$(OBJEXT) +test_OBJECTS = $(am_test_OBJECTS) +test_DEPENDENCIES = libgslmultiset.la ../vector/libgslvector.la \ + ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la \ + ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la \ + ../utils/libutils.la +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libgslmultiset_la_SOURCES) $(test_SOURCES) +DIST_SOURCES = $(libgslmultiset_la_SOURCES) $(test_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(pkgincludedir)" +HEADERS = $(noinst_HEADERS) $(pkginclude_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = @EXEEXT@ .test +LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +GSLCBLAS_LDFLAGS = @GSLCBLAS_LDFLAGS@ +GSL_CFLAGS = @GSL_CFLAGS@ +GSL_LDFLAGS = @GSL_LDFLAGS@ +GSL_LIBADD = @GSL_LIBADD@ +GSL_LIBM = @GSL_LIBM@ +GSL_LIBS = @GSL_LIBS@ +GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ +GSL_LT_VERSION = @GSL_LT_VERSION@ +GSL_MAJOR_VERSION = @GSL_MAJOR_VERSION@ +GSL_MINOR_VERSION = @GSL_MINOR_VERSION@ +HAVE_AIX_IEEE_INTERFACE = @HAVE_AIX_IEEE_INTERFACE@ +HAVE_DARWIN86_IEEE_INTERFACE = @HAVE_DARWIN86_IEEE_INTERFACE@ +HAVE_DARWIN_IEEE_INTERFACE = @HAVE_DARWIN_IEEE_INTERFACE@ +HAVE_FREEBSD_IEEE_INTERFACE = @HAVE_FREEBSD_IEEE_INTERFACE@ +HAVE_GNUM68K_IEEE_INTERFACE = @HAVE_GNUM68K_IEEE_INTERFACE@ +HAVE_GNUPPC_IEEE_INTERFACE = @HAVE_GNUPPC_IEEE_INTERFACE@ +HAVE_GNUSPARC_IEEE_INTERFACE = @HAVE_GNUSPARC_IEEE_INTERFACE@ +HAVE_GNUX86_IEEE_INTERFACE = @HAVE_GNUX86_IEEE_INTERFACE@ +HAVE_HPUX11_IEEE_INTERFACE = @HAVE_HPUX11_IEEE_INTERFACE@ +HAVE_HPUX_IEEE_INTERFACE = @HAVE_HPUX_IEEE_INTERFACE@ +HAVE_IRIX_IEEE_INTERFACE = @HAVE_IRIX_IEEE_INTERFACE@ +HAVE_NETBSD_IEEE_INTERFACE = @HAVE_NETBSD_IEEE_INTERFACE@ +HAVE_OPENBSD_IEEE_INTERFACE = @HAVE_OPENBSD_IEEE_INTERFACE@ +HAVE_OS2EMX_IEEE_INTERFACE = @HAVE_OS2EMX_IEEE_INTERFACE@ +HAVE_SOLARIS_IEEE_INTERFACE = @HAVE_SOLARIS_IEEE_INTERFACE@ +HAVE_SUNOS4_IEEE_INTERFACE = @HAVE_SUNOS4_IEEE_INTERFACE@ +HAVE_TRU64_IEEE_INTERFACE = @HAVE_TRU64_IEEE_INTERFACE@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBM = @LIBM@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +noinst_LTLIBRARIES = libgslmultiset.la +pkginclude_HEADERS = gsl_multiset.h +AM_CPPFLAGS = -I$(top_srcdir) +libgslmultiset_la_SOURCES = init.c file.c multiset.c inline.c +noinst_HEADERS = +TESTS = $(check_PROGRAMS) +test_SOURCES = test.c +test_LDADD = libgslmultiset.la ../vector/libgslvector.la ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu multiset/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu multiset/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libgslmultiset.la: $(libgslmultiset_la_OBJECTS) $(libgslmultiset_la_DEPENDENCIES) $(EXTRA_libgslmultiset_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(libgslmultiset_la_OBJECTS) $(libgslmultiset_la_LIBADD) $(LIBS) + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) $(EXTRA_test_DEPENDENCIES) + @rm -f test$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_OBJECTS) $(test_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/file.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/init.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/inline.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/multiset.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test.Po@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-pkgincludeHEADERS: $(pkginclude_HEADERS) + @$(NORMAL_INSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \ + done + +uninstall-pkgincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + else \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_PROGRAMS) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +test.log: test$(EXEEXT) + @p='test$(EXEEXT)'; \ + b='test'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +@am__EXEEXT_TRUE@.test$(EXEEXT).log: +@am__EXEEXT_TRUE@ @p='$<'; \ +@am__EXEEXT_TRUE@ $(am__set_b); \ +@am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +@am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ +@am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +@am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-am +all-am: Makefile $(LTLIBRARIES) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(pkgincludedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-pkgincludeHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-pkgincludeHEADERS + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES cscopelist-am ctags ctags-am distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-pkgincludeHEADERS \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + recheck tags tags-am uninstall uninstall-am \ + uninstall-pkgincludeHEADERS + + +#noinst_PROGRAMS = demo +#demo_SOURCES = demo.c +#demo_LDADD = libgslmultiset.la ../vector/libgslvector.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gsl-2.5/multiset/TODO b/gsl-2.5/multiset/TODO new file mode 100644 index 00000000..44415e0c --- /dev/null +++ b/gsl-2.5/multiset/TODO @@ -0,0 +1,4 @@ +# -*- org -*- +#+CATEGORY: multiset + +* The module has a lot of overlap with combination/ some of the functions could be abstracted out. diff --git a/gsl-2.5/multiset/file.c b/gsl-2.5/multiset/file.c new file mode 100644 index 00000000..97be1f15 --- /dev/null +++ b/gsl-2.5/multiset/file.c @@ -0,0 +1,115 @@ +/* multiset/file.c + * based on combination/file.c by Szymon Jaroszewicz + * based on permutation/file.c by Brian Gough + * + * Copyright (C) 2001 Szymon Jaroszewicz + * Copyright (C) 2009 Rhys Ulerich + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include + +#define IN_FORMAT "%lu" + +int +gsl_multiset_fread (FILE * stream, gsl_multiset * c) +{ + size_t k = c->k ; + + size_t * data = c->data ; + + size_t items = fread (data, sizeof (size_t), k, stream); + + if (items != k) + { + GSL_ERROR ("fread failed", GSL_EFAILED); + } + + return GSL_SUCCESS; +} + +int +gsl_multiset_fwrite (FILE * stream, const gsl_multiset * c) +{ + size_t k = c->k ; + + size_t * data = c->data ; + + size_t items = fwrite (data, sizeof (size_t), k, stream); + + if (items != k) + { + GSL_ERROR ("fwrite failed", GSL_EFAILED); + } + + return GSL_SUCCESS; +} + +int +gsl_multiset_fprintf (FILE * stream, const gsl_multiset * c, const char *format) +{ + size_t k = c->k ; + + size_t * data = c->data ; + + size_t i; + + for (i = 0; i < k; i++) + { + int status = fprintf (stream, format, data[i]); + + if (status < 0) + { + GSL_ERROR ("fprintf failed", GSL_EFAILED); + } + } + + return GSL_SUCCESS; +} + +int +gsl_multiset_fscanf (FILE * stream, gsl_multiset * c) +{ + size_t k = c->k ; + + size_t * data = c->data ; + + size_t i; + + for (i = 0; i < k; i++) + { + unsigned long j ; + + /* FIXME: what if size_t != unsigned long ??? + + want read in size_t but have to read in unsigned long to avoid + error from compiler */ + + int status = fscanf (stream, IN_FORMAT, &j); + + if (status != 1) + { + GSL_ERROR ("fscanf failed", GSL_EFAILED); + } + + data[i] = j; + } + + return GSL_SUCCESS; +} diff --git a/gsl-2.5/multiset/file.lo b/gsl-2.5/multiset/file.lo new file mode 100644 index 00000000..1443af7c --- /dev/null +++ b/gsl-2.5/multiset/file.lo @@ -0,0 +1,12 @@ +# file.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/file.o' + +# Name of the non-PIC object +non_pic_object='file.o' + diff --git a/gsl-2.5/multiset/gsl_multiset.h b/gsl-2.5/multiset/gsl_multiset.h new file mode 100644 index 00000000..1ba5d6cc --- /dev/null +++ b/gsl-2.5/multiset/gsl_multiset.h @@ -0,0 +1,93 @@ +/* multiset/gsl_multiset.h + * based on combination/gsl_combination.h by Szymon Jaroszewicz + * based on permutation/gsl_permutation.h by Brian Gough + * + * Copyright (C) 2009 Rhys Ulerich + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_MULTISET_H__ +#define __GSL_MULTISET_H__ + +#include +#include +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +struct gsl_multiset_struct +{ + size_t n; + size_t k; + size_t *data; +}; + +typedef struct gsl_multiset_struct gsl_multiset; + +gsl_multiset *gsl_multiset_alloc (const size_t n, const size_t k); +gsl_multiset *gsl_multiset_calloc (const size_t n, const size_t k); +void gsl_multiset_init_first (gsl_multiset * c); +void gsl_multiset_init_last (gsl_multiset * c); +void gsl_multiset_free (gsl_multiset * c); +int gsl_multiset_memcpy (gsl_multiset * dest, const gsl_multiset * src); + +int gsl_multiset_fread (FILE * stream, gsl_multiset * c); +int gsl_multiset_fwrite (FILE * stream, const gsl_multiset * c); +int gsl_multiset_fscanf (FILE * stream, gsl_multiset * c); +int gsl_multiset_fprintf (FILE * stream, const gsl_multiset * c, const char *format); + +size_t gsl_multiset_n (const gsl_multiset * c); +size_t gsl_multiset_k (const gsl_multiset * c); +size_t * gsl_multiset_data (const gsl_multiset * c); + +int gsl_multiset_valid (gsl_multiset * c); +int gsl_multiset_next (gsl_multiset * c); +int gsl_multiset_prev (gsl_multiset * c); + +INLINE_DECL size_t gsl_multiset_get (const gsl_multiset * c, const size_t i); + +#ifdef HAVE_INLINE + +INLINE_FUN +size_t +gsl_multiset_get (const gsl_multiset * c, const size_t i) +{ +#if GSL_RANGE_CHECK + if (GSL_RANGE_COND(i >= c->k)) /* size_t is unsigned, can't be negative */ + { + GSL_ERROR_VAL ("index out of range", GSL_EINVAL, 0); + } +#endif + return c->data[i]; +} + +#endif /* HAVE_INLINE */ + +__END_DECLS + +#endif /* __GSL_MULTISET_H__ */ diff --git a/gsl-2.5/multiset/init.c b/gsl-2.5/multiset/init.c new file mode 100644 index 00000000..be9714bc --- /dev/null +++ b/gsl-2.5/multiset/init.c @@ -0,0 +1,125 @@ +/* multiset/init.c + * based on combination/init.c by Szymon Jaroszewicz + * based on permutation/init.c by Brian Gough + * + * Copyright (C) 2001 Szymon Jaroszewicz + * Copyright (C) 2009 Brian Gough + * Copyright (C) 2009 Rhys Ulerich + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include + +gsl_multiset * +gsl_multiset_alloc (const size_t n, const size_t k) +{ + gsl_multiset * c; + + if (n == 0) + { + GSL_ERROR_VAL ("multiset parameter n must be positive integer", + GSL_EDOM, 0); + } + c = (gsl_multiset *) malloc (sizeof (gsl_multiset)); + + if (c == 0) + { + GSL_ERROR_VAL ("failed to allocate space for multiset struct", + GSL_ENOMEM, 0); + } + + if (k > 0) + { + c->data = (size_t *) malloc (k * sizeof (size_t)); + + if (c->data == 0) + { + free (c); /* exception in constructor, avoid memory leak */ + + GSL_ERROR_VAL ("failed to allocate space for multiset data", + GSL_ENOMEM, 0); + } + } + else + { + c->data = 0; + } + + c->n = n; + c->k = k; + + return c; +} + +gsl_multiset * +gsl_multiset_calloc (const size_t n, const size_t k) +{ + size_t i; + + gsl_multiset * c = gsl_multiset_alloc (n, k); + + if (c == 0) + return 0; + + /* initialize multiset to repeated first element */ + + for (i = 0; i < k; i++) + { + c->data[i] = 0; + } + + return c; +} + +void +gsl_multiset_init_first (gsl_multiset * c) +{ + const size_t k = c->k ; + size_t i; + + /* initialize multiset to repeated first element */ + + for (i = 0; i < k; i++) + { + c->data[i] = 0; + } +} + +void +gsl_multiset_init_last (gsl_multiset * c) +{ + const size_t k = c->k ; + size_t i; + size_t n = c->n; + + /* initialize multiset to repeated last element */ + + for (i = 0; i < k; i++) + { + c->data[i] = n - 1; + } +} + +void +gsl_multiset_free (gsl_multiset * c) +{ + RETURN_IF_NULL (c); + if (c->k > 0) free (c->data); + free (c); +} diff --git a/gsl-2.5/multiset/init.lo b/gsl-2.5/multiset/init.lo new file mode 100644 index 00000000..c1ea778f --- /dev/null +++ b/gsl-2.5/multiset/init.lo @@ -0,0 +1,12 @@ +# init.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/init.o' + +# Name of the non-PIC object +non_pic_object='init.o' + diff --git a/gsl-2.5/multiset/inline.c b/gsl-2.5/multiset/inline.c new file mode 100644 index 00000000..f59e9f33 --- /dev/null +++ b/gsl-2.5/multiset/inline.c @@ -0,0 +1,24 @@ +/* multiset/inline.c + * + * Copyright (C) 2008 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Compile all the inline functions */ + +#define COMPILE_INLINE_STATIC +#include "build.h" +#include diff --git a/gsl-2.5/multiset/inline.lo b/gsl-2.5/multiset/inline.lo new file mode 100644 index 00000000..c5763370 --- /dev/null +++ b/gsl-2.5/multiset/inline.lo @@ -0,0 +1,12 @@ +# inline.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/inline.o' + +# Name of the non-PIC object +non_pic_object='inline.o' + diff --git a/gsl-2.5/multiset/libgslmultiset.la b/gsl-2.5/multiset/libgslmultiset.la new file mode 100644 index 00000000..e2ff4b8c --- /dev/null +++ b/gsl-2.5/multiset/libgslmultiset.la @@ -0,0 +1,41 @@ +# libgslmultiset.la - a libtool library file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='' + +# Names of this library. +library_names='' + +# The name of the static archive. +old_library='libgslmultiset.a' + +# Linker flags that can not go in dependency_libs. +inherited_linker_flags='' + +# Libraries that this one depends upon. +dependency_libs=' -lm' + +# Names of additional weak libraries provided by this library +weak_library_names='' + +# Version information for libgslmultiset. +current= +age= +revision= + +# Is this an already installed library? +installed=no + +# Should we warn about portability when linking against -modules? +shouldnotlink=no + +# Files to dlopen/dlpreopen +dlopen='' +dlpreopen='' + +# Directory that this library needs to be installed in: +libdir='' diff --git a/gsl-2.5/multiset/multiset.c b/gsl-2.5/multiset/multiset.c new file mode 100644 index 00000000..c1a0f80b --- /dev/null +++ b/gsl-2.5/multiset/multiset.c @@ -0,0 +1,177 @@ +/* multiset/multiset.c + * based on combination/combination.c by Szymon Jaroszewicz + * based on permutation/permutation.c by Brian Gough + * + * Copyright (C) 2001 Szymon Jaroszewicz + * Copyright (C) 2009 Rhys Ulerich + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include + +size_t +gsl_multiset_n (const gsl_multiset * c) +{ + return c->n ; +} + +size_t +gsl_multiset_k (const gsl_multiset * c) +{ + return c->k ; +} + +size_t * +gsl_multiset_data (const gsl_multiset * c) +{ + return c->data ; +} + +int +gsl_multiset_valid (gsl_multiset * c) +{ + const size_t n = c->n ; + const size_t k = c->k ; + + size_t i, j ; + + for (i = 0; i < k; i++) + { + const size_t ci = c->data[i]; + + if (ci >= n) + { + GSL_ERROR("multiset index outside range", GSL_FAILURE) ; + } + + for (j = 0; j < i; j++) + { + if (c->data[j] > ci) + { + GSL_ERROR("multiset indices not in increasing order", + GSL_FAILURE) ; + } + } + } + + return GSL_SUCCESS; +} + + +int +gsl_multiset_next (gsl_multiset * c) +{ + /* Replaces c with the next multiset (in the standard lexicographical + * ordering). Returns GSL_FAILURE if there is no next multiset. + */ + const size_t n = c->n; + const size_t k = c->k; + size_t *data = c->data; + size_t i; + + if(k == 0) + { + return GSL_FAILURE; + } + i = k - 1; + + while(i > 0 && data[i] == n-1) + { + --i; + } + + if (i == 0 && data[0] == n-1) + { + return GSL_FAILURE; + } + + ++data[i]; + + while(i < k-1) + { + data[i+1] = data[i]; + ++i; + } + + return GSL_SUCCESS; +} + +int +gsl_multiset_prev (gsl_multiset * c) +{ + /* Replaces c with the previous multiset (in the standard + * lexicographical ordering). Returns GSL_FAILURE if there is no + * previous multiset. + */ + const size_t n = c->n; + const size_t k = c->k; + size_t *data = c->data; + size_t i; + + if(k == 0) + { + return GSL_FAILURE; + } + i = k - 1; + + while(i > 0 && data[i-1] == data[i]) + { + --i; + } + + if(i == 0 && data[i] == 0) + { + return GSL_FAILURE; + } + + data[i]--; + + if (data[i] < n-1) + { + while (i < k-1) { + data[++i] = n - 1; + } + } + + return GSL_SUCCESS; +} + +int +gsl_multiset_memcpy (gsl_multiset * dest, const gsl_multiset * src) +{ + const size_t src_n = src->n; + const size_t src_k = src->k; + const size_t dest_n = dest->n; + const size_t dest_k = dest->k; + + if (src_n != dest_n || src_k != dest_k) + { + GSL_ERROR ("multiset lengths are not equal", GSL_EBADLEN); + } + + { + size_t j; + + for (j = 0; j < src_k; j++) + { + dest->data[j] = src->data[j]; + } + } + + return GSL_SUCCESS; +} diff --git a/gsl-2.5/multiset/multiset.lo b/gsl-2.5/multiset/multiset.lo new file mode 100644 index 00000000..fe61a34f --- /dev/null +++ b/gsl-2.5/multiset/multiset.lo @@ -0,0 +1,12 @@ +# multiset.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/multiset.o' + +# Name of the non-PIC object +non_pic_object='multiset.o' + diff --git a/gsl-2.5/multiset/test b/gsl-2.5/multiset/test new file mode 100755 index 00000000..b8639f3d Binary files /dev/null and b/gsl-2.5/multiset/test differ diff --git a/gsl-2.5/multiset/test-suite.log b/gsl-2.5/multiset/test-suite.log new file mode 100644 index 00000000..94c43108 --- /dev/null +++ b/gsl-2.5/multiset/test-suite.log @@ -0,0 +1,14 @@ +====================================== + gsl 2.5: multiset/test-suite.log +====================================== + +# TOTAL: 1 +# PASS: 1 +# SKIP: 0 +# XFAIL: 0 +# FAIL: 0 +# XPASS: 0 +# ERROR: 0 + +.. contents:: :depth: 2 + diff --git a/gsl-2.5/multiset/test.c b/gsl-2.5/multiset/test.c new file mode 100644 index 00000000..597b72a1 --- /dev/null +++ b/gsl-2.5/multiset/test.c @@ -0,0 +1,304 @@ +/* multiset/test.c + * based on combination/test.c by Szymon Jaroszewicz + * based on permutation/test.c by Brian Gough + * + * Copyright (C) 2001 Szymon Jaroszewicz + * Copyright (C) 2009 Rhys Ulerich + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include +#include + +size_t c63[56][3] = { + { 0,0,0 }, { 0,0,1 }, { 0,0,2 }, { 0,0,3 }, { 0,0,4 }, { 0,0,5 }, + { 0,1,1 }, { 0,1,2 }, { 0,1,3 }, { 0,1,4 }, { 0,1,5 }, + { 0,2,2 }, { 0,2,3 }, { 0,2,4 }, { 0,2,5 }, + { 0,3,3 }, { 0,3,4 }, { 0,3,5 }, + { 0,4,4 }, { 0,4,5 }, + { 0,5,5 }, + { 1,1,1 }, { 1,1,2 }, { 1,1,3 }, { 1,1,4 }, { 1,1,5 }, + { 1,2,2 }, { 1,2,3 }, { 1,2,4 }, { 1,2,5 }, + { 1,3,3 }, { 1,3,4 }, { 1,3,5 }, + { 1,4,4 }, { 1,4,5 }, + { 1,5,5 }, + { 2,2,2 }, { 2,2,3 }, { 2,2,4 }, { 2,2,5 }, + { 2,3,3 }, { 2,3,4 }, { 2,3,5 }, + { 2,4,4 }, { 2,4,5 }, + { 2,5,5 }, + { 3,3,3 }, { 3,3,4 }, { 3,3,5 }, + { 3,4,4 }, { 3,4,5 }, + { 3,5,5 }, + { 4,4,4 }, { 4,4,5 }, + { 4,5,5 }, + { 5,5,5 } +} ; + +void my_error_handler (const char *reason, const char *file, int line, int err); + +int +main (void) +{ + size_t i, j; + int status = 0, s; + gsl_multiset * c ; + + gsl_ieee_env_setup (); + + c = gsl_multiset_alloc (6,3); + + /* Test multisets in forward order */ + + gsl_multiset_init_first (c); + + i = 0; + + do + { + if ( i >= 56 ) + { + status = 1; + break; + } + for (j = 0; j < 3; j++) + { + status |= (c->data[j] != c63[i][j]); + } + + { + int s1 = gsl_multiset_valid (c); + gsl_test (s1, "gsl_multiset_valid (%u)", i); + } + + i++; + } + while (gsl_multiset_next(c) == GSL_SUCCESS); + + gsl_test(status, "gsl_multiset_next, 6 choose 3 multiset, 56 steps"); + + gsl_multiset_next(c); + gsl_multiset_next(c); + gsl_multiset_next(c); + for (j = 0; j < 3; j++) + { + status |= (c->data[j] != c63[55][j]); + } + gsl_test(status, "gsl_multiset_next on the last multiset"); + + { + int s1 = gsl_multiset_valid (c); + gsl_test (s1, "gsl_multiset_valid on the last multiset"); + } + + { + gsl_multiset * d = gsl_multiset_alloc (6,3); + gsl_multiset_memcpy (d, c); + + status = 0; + + for (j = 0; j < 3; j++) + { + status |= (d->data[j] != c->data[j]); + } + + gsl_test (status, "gsl_multiset_memcpy, 6 choose 3 multiset"); + gsl_multiset_free(d); + } + + + /* Now test multisets in reverse order */ + + gsl_multiset_init_last (c); + + i = 56; + do + { + if ( i == 0 ) + { + status = 1; + break; + } + + i--; + + for (j = 0; j < 3; j++) + { + status |= (c->data[j] != c63[i][j]); + } + + { + int s1 = gsl_multiset_valid (c); + gsl_test (s1, "gsl_multiset_valid (%u)", i); + } + } + while (gsl_multiset_prev(c) == GSL_SUCCESS); + + gsl_test(status, "gsl_multiset_prev, 6 choose 3 multiset, 20 steps"); + + gsl_multiset_prev(c); + gsl_multiset_prev(c); + gsl_multiset_prev(c); + for (j = 0; j < 3; j++) + { + status |= (c->data[j] != c63[0][j]); + } + gsl_test(status, "gsl_multiset_prev on the first multiset"); + + { + int s1 = gsl_multiset_valid (c); + gsl_test (s1, "gsl_multiset_valid on the first multiset"); + } + + { + gsl_multiset * d = gsl_multiset_alloc (6,3); + gsl_multiset_memcpy (d, c); + + status = 0; + + for (j = 0; j < 3; j++) + { + status |= (d->data[j] != c->data[j]); + } + + gsl_test (status, "gsl_multiset_memcpy, 6 choose 3 multiset"); + gsl_multiset_free(d); + } + + gsl_multiset_free (c); + + /* Check k = 3 strictly greater than n = 2 gives results */ + /* {0, 0, 0}, {0, 0, 1}, {0, 1, 1,}, and {1, 1, 1}. */ + c = gsl_multiset_calloc(2, 3); + status |= (c->data[0] != 0); + status |= (c->data[1] != 0); + status |= (c->data[2] != 0); + status |= (gsl_multiset_valid(c) != GSL_SUCCESS); + status |= (gsl_multiset_next(c) == GSL_FAILURE); + status |= (c->data[0] != 0); + status |= (c->data[1] != 0); + status |= (c->data[2] != 1); + status |= (gsl_multiset_valid(c) != GSL_SUCCESS); + status |= (gsl_multiset_next(c) == GSL_FAILURE); + status |= (c->data[0] != 0); + status |= (c->data[1] != 1); + status |= (c->data[2] != 1); + status |= (gsl_multiset_valid(c) != GSL_SUCCESS); + status |= (gsl_multiset_next(c) == GSL_FAILURE); + status |= (c->data[0] != 1); + status |= (c->data[1] != 1); + status |= (c->data[2] != 1); + status |= (gsl_multiset_valid(c) != GSL_SUCCESS); + status |= (gsl_multiset_next(c) != GSL_FAILURE); + gsl_test(status, "gsl_multiset 2 choose 3"); + gsl_multiset_free (c); + + c = gsl_multiset_calloc(7, 0); + /* should return GSL_FAILURE every time */ + status |= (gsl_multiset_next(c) != GSL_FAILURE); + status |= (gsl_multiset_next(c) != GSL_FAILURE); + status |= (gsl_multiset_prev(c) != GSL_FAILURE); + status |= (gsl_multiset_prev(c) != GSL_FAILURE); + gsl_test(status, "gsl_multiset 7 choose 0"); + gsl_multiset_free (c); + + c = gsl_multiset_calloc(1, 1); + /* should return GSL_FAILURE every time */ + for(j = 0; j < 1; j++) + { + status |= (gsl_multiset_get(c, j) != j); + } + status |= (gsl_multiset_next(c) != GSL_FAILURE); + for(j = 0; j < 1; j++) + { + status |= (gsl_multiset_get(c, j) != j); + } + status |= (gsl_multiset_next(c) != GSL_FAILURE); + for(j = 0; j < 1; j++) + { + status |= (gsl_multiset_get(c, j) != j); + } + status |= (gsl_multiset_prev(c) != GSL_FAILURE); + for(j = 0; j < 1; j++) + { + status |= (gsl_multiset_get(c, j) != j); + } + status |= (gsl_multiset_prev(c) != GSL_FAILURE); + for(j = 0; j < 1; j++) + { + status |= (gsl_multiset_get(c, j) != j); + } + gsl_test(status, "gsl_multiset 7 choose 7"); + gsl_multiset_free (c); + + c = gsl_multiset_calloc(6, 3); + + gsl_set_error_handler (&my_error_handler); + + c->data[0] = 1; + c->data[1] = 2; + c->data[2] = 1; + s = gsl_multiset_valid (c); + gsl_test (!s, "gsl_multiset_valid on an invalid multiset (1,1,2)"); + + c->data[0] = 2; + c->data[1] = 1; + c->data[2] = 0; + s = gsl_multiset_valid (c); + gsl_test (!s, "gsl_multiset_valid on an invalid multiset (2,1,0)"); + + c->data[0] = 1; + c->data[1] = 2; + c->data[2] = 0; + s = gsl_multiset_valid (c); + gsl_test (!s, "gsl_multiset_valid on an invalid multiset (1,2,0)"); + + { + gsl_multiset * d = gsl_multiset_alloc (6,4); + int s = gsl_multiset_memcpy (d, c); + gsl_test (!s, "gsl_multiset_memcpy, (6,4) vs (6,3)"); + gsl_multiset_free(d); + } + + { + gsl_multiset * d = gsl_multiset_alloc (7,3); + int s = gsl_multiset_memcpy (d, c); + gsl_test (!s, "gsl_multiset_memcpy, (7,3) vs (6,3)"); + gsl_multiset_free(d); + } + + { + gsl_multiset * d = gsl_multiset_alloc (7,2); + int s = gsl_multiset_memcpy (d, c); + gsl_test (!s, "gsl_multiset_memcpy, (7,2) vs (6,3)"); + gsl_multiset_free(d); + } + + + gsl_multiset_free (c); + + exit (gsl_test_summary()); +} + +void +my_error_handler (const char *reason, const char *file, int line, int err) +{ + if (0) printf ("(caught [%s:%d: %s (%d)])\n", file, line, reason, err) ; +} diff --git a/gsl-2.5/multiset/test.log b/gsl-2.5/multiset/test.log new file mode 100644 index 00000000..98280f05 --- /dev/null +++ b/gsl-2.5/multiset/test.log @@ -0,0 +1 @@ +Completed [129/129] diff --git a/gsl-2.5/multiset/test.trs b/gsl-2.5/multiset/test.trs new file mode 100644 index 00000000..3f0f396c --- /dev/null +++ b/gsl-2.5/multiset/test.trs @@ -0,0 +1,4 @@ +:test-result: PASS +:global-test-result: PASS +:recheck: no +:copy-in-global-log: no diff --git a/gsl-2.5/ntuple/.deps/ntuple.Plo b/gsl-2.5/ntuple/.deps/ntuple.Plo new file mode 100644 index 00000000..569d80e3 --- /dev/null +++ b/gsl-2.5/ntuple/.deps/ntuple.Plo @@ -0,0 +1,112 @@ +ntuple.lo: ntuple.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/errno.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_errno.h /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../gsl/gsl_types.h ../gsl/gsl_ntuple.h \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/byteswap.h \ + /usr/include/bits/byteswap-16.h /usr/include/sys/types.h \ + /usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib-float.h \ + ../gsl/gsl_histogram.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/errno.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../gsl/gsl_types.h: + +../gsl/gsl_ntuple.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_histogram.h: diff --git a/gsl-2.5/ntuple/.deps/test.Po b/gsl-2.5/ntuple/.deps/test.Po new file mode 100644 index 00000000..acbae943 --- /dev/null +++ b/gsl-2.5/ntuple/.deps/test.Po @@ -0,0 +1,126 @@ +test.o: test.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/string.h \ + /usr/include/xlocale.h /usr/include/bits/string.h \ + /usr/include/bits/string2.h ../gsl/gsl_ntuple.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../gsl/gsl_errno.h /usr/include/errno.h \ + /usr/include/bits/errno.h /usr/include/linux/errno.h \ + /usr/include/asm/errno.h /usr/include/asm-generic/errno.h \ + /usr/include/asm-generic/errno-base.h ../gsl/gsl_types.h \ + ../gsl/gsl_histogram.h ../gsl/gsl_test.h ../gsl/gsl_ieee_utils.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string.h: + +/usr/include/bits/string2.h: + +../gsl/gsl_ntuple.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_histogram.h: + +../gsl/gsl_test.h: + +../gsl/gsl_ieee_utils.h: diff --git a/gsl-2.5/ntuple/.libs/libgslntuple.la b/gsl-2.5/ntuple/.libs/libgslntuple.la new file mode 120000 index 00000000..7b1a1e0b --- /dev/null +++ b/gsl-2.5/ntuple/.libs/libgslntuple.la @@ -0,0 +1 @@ +../libgslntuple.la \ No newline at end of file diff --git a/gsl-2.5/ntuple/ChangeLog b/gsl-2.5/ntuple/ChangeLog new file mode 100644 index 00000000..359858d8 --- /dev/null +++ b/gsl-2.5/ntuple/ChangeLog @@ -0,0 +1,9 @@ +2008-07-03 Brian Gough + + * Makefile.am (INCLUDES): use top_srcdir instead of top_builddir + +2004-05-30 Brian Gough + + * ntuple/test.c (main): choose ratio 1/(i+1.5) to avoid values + exactly on test cutoff x=0.1 + diff --git a/gsl-2.5/ntuple/Makefile b/gsl-2.5/ntuple/Makefile new file mode 100644 index 00000000..e77daf13 --- /dev/null +++ b/gsl-2.5/ntuple/Makefile @@ -0,0 +1,1033 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# ntuple/Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + + + + +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/gsl +pkgincludedir = $(includedir)/gsl +pkglibdir = $(libdir)/gsl +pkglibexecdir = $(libexecdir)/gsl +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = x86_64-unknown-linux-gnu +host_triplet = x86_64-unknown-linux-gnu +check_PROGRAMS = test$(EXEEXT) +subdir = ntuple +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp \ + $(pkginclude_HEADERS) $(top_srcdir)/test-driver ChangeLog +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +libgslntuple_la_LIBADD = +am_libgslntuple_la_OBJECTS = ntuple.lo +libgslntuple_la_OBJECTS = $(am_libgslntuple_la_OBJECTS) +AM_V_lt = $(am__v_lt_$(V)) +am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) +am__v_lt_0 = --silent +am__v_lt_1 = +am_test_OBJECTS = test.$(OBJEXT) +test_OBJECTS = $(am_test_OBJECTS) +test_DEPENDENCIES = libgslntuple.la ../histogram/libgslhistogram.la \ + ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la \ + ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la \ + ../utils/libutils.la +AM_V_P = $(am__v_P_$(V)) +am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY)) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_$(V)) +am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_$(V)) +am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I. -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_$(V)) +am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_$(V)) +am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libgslntuple_la_SOURCES) $(test_SOURCES) +DIST_SOURCES = $(libgslntuple_la_SOURCES) $(test_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(pkgincludedir)" +HEADERS = $(pkginclude_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = .test +LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing aclocal-1.13 +AMTAR = $${TAR-tar} +AM_DEFAULT_VERBOSITY = 1 +AR = ar +AS = as +AUTOCONF = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing autoconf +AUTOHEADER = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing autoheader +AUTOMAKE = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing automake-1.13 +AWK = gawk +CC = gcc +CCDEPMODE = depmode=gcc3 +CFLAGS = -g -O2 +CPP = gcc -E +CPPFLAGS = +CYGPATH_W = echo +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +DLLTOOL = false +DSYMUTIL = +DUMPBIN = +ECHO_C = +ECHO_N = -n +ECHO_T = +EGREP = /usr/bin/grep -E +EXEEXT = +FGREP = /usr/bin/grep -F +GREP = /usr/bin/grep +GSLCBLAS_LDFLAGS = +GSL_CFLAGS = -I${prefix}/include +GSL_LDFLAGS = +GSL_LIBADD = +GSL_LIBM = -lm +GSL_LIBS = -L${exec_prefix}/lib -lgsl +GSL_LT_CBLAS_VERSION = 0:0:0 +GSL_LT_VERSION = 24:0:1 +GSL_MAJOR_VERSION = 2 +GSL_MINOR_VERSION = 5 +HAVE_AIX_IEEE_INTERFACE = +HAVE_DARWIN86_IEEE_INTERFACE = +HAVE_DARWIN_IEEE_INTERFACE = +HAVE_FREEBSD_IEEE_INTERFACE = +HAVE_GNUM68K_IEEE_INTERFACE = +HAVE_GNUPPC_IEEE_INTERFACE = +HAVE_GNUSPARC_IEEE_INTERFACE = +HAVE_GNUX86_IEEE_INTERFACE = +HAVE_HPUX11_IEEE_INTERFACE = +HAVE_HPUX_IEEE_INTERFACE = +HAVE_IRIX_IEEE_INTERFACE = +HAVE_NETBSD_IEEE_INTERFACE = +HAVE_OPENBSD_IEEE_INTERFACE = +HAVE_OS2EMX_IEEE_INTERFACE = +HAVE_SOLARIS_IEEE_INTERFACE = +HAVE_SUNOS4_IEEE_INTERFACE = +HAVE_TRU64_IEEE_INTERFACE = +INSTALL = /usr/bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = $(install_sh) -c -s +LD = /usr/bin/ld -m elf_x86_64 +LDFLAGS = +LIBM = -lm +LIBOBJS = +LIBS = -lm +LIBTOOL = $(SHELL) $(top_builddir)/libtool +LIPO = +LN_S = ln -s +LTLIBOBJS = +MAINT = # +MAKEINFO = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing makeinfo +MANIFEST_TOOL = : +MKDIR_P = /usr/bin/mkdir -p +NM = /usr/bin/nm -B +NMEDIT = +OBJDUMP = objdump +OBJEXT = o +OTOOL = +OTOOL64 = +PACKAGE = gsl +PACKAGE_BUGREPORT = +PACKAGE_NAME = gsl +PACKAGE_STRING = gsl 2.5 +PACKAGE_TARNAME = gsl +PACKAGE_URL = +PACKAGE_VERSION = 2.5 +PATH_SEPARATOR = : +RANLIB = ranlib +SED = /usr/bin/sed +SET_MAKE = +SHELL = /bin/sh +STRIP = strip +VERSION = 2.5 +abs_builddir = /home/groups/kipac/chto/package/gsl/gsl-2.5/ntuple +abs_srcdir = /home/groups/kipac/chto/package/gsl/gsl-2.5/ntuple +abs_top_builddir = /home/groups/kipac/chto/package/gsl/gsl-2.5 +abs_top_srcdir = /home/groups/kipac/chto/package/gsl/gsl-2.5 +ac_ct_AR = ar +ac_ct_CC = gcc +ac_ct_DUMPBIN = +am__include = include +am__leading_dot = . +am__quote = +am__tar = $${TAR-tar} chof - "$$tardir" +am__untar = $${TAR-tar} xf - +bindir = ${exec_prefix}/bin +build = x86_64-unknown-linux-gnu +build_alias = +build_cpu = x86_64 +build_os = linux-gnu +build_vendor = unknown +builddir = . +datadir = ${datarootdir} +datarootdir = ${prefix}/share +docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} +dvidir = ${docdir} +exec_prefix = ${prefix} +host = x86_64-unknown-linux-gnu +host_alias = +host_cpu = x86_64 +host_os = linux-gnu +host_vendor = unknown +htmldir = ${docdir} +includedir = ${prefix}/include +infodir = ${datarootdir}/info +install_sh = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/install-sh +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +localedir = ${datarootdir}/locale +localstatedir = ${prefix}/var +mandir = ${datarootdir}/man +mkdir_p = $(MKDIR_P) +oldincludedir = /usr/include +pdfdir = ${docdir} +prefix = /home/groups/kipac/chto/package/gsl/gsl_lib +program_transform_name = s,x,x, +psdir = ${docdir} +sbindir = ${exec_prefix}/sbin +sharedstatedir = ${prefix}/com +srcdir = . +sysconfdir = ${prefix}/etc +target_alias = +top_build_prefix = ../ +top_builddir = .. +top_srcdir = .. +noinst_LTLIBRARIES = libgslntuple.la +pkginclude_HEADERS = gsl_ntuple.h +AM_CPPFLAGS = -I$(top_srcdir) +libgslntuple_la_SOURCES = ntuple.c +TESTS = $(check_PROGRAMS) +test_SOURCES = test.c +test_LDADD = libgslntuple.la ../histogram/libgslhistogram.la ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la + +#demo_SOURCES = demo.c +#demo_LDADD = libgslntuple.la ../histogram/libgslhistogram.la ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la + +#demo1_SOURCES = demo1.c +#demo1_LDADD = libgslntuple.la ../histogram/libgslhistogram.la ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la +CLEANFILES = test.dat +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu ntuple/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu ntuple/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: # $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): # $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libgslntuple.la: $(libgslntuple_la_OBJECTS) $(libgslntuple_la_DEPENDENCIES) $(EXTRA_libgslntuple_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(libgslntuple_la_OBJECTS) $(libgslntuple_la_LIBADD) $(LIBS) + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) $(EXTRA_test_DEPENDENCIES) + @rm -f test$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_OBJECTS) $(test_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +include ./$(DEPDIR)/ntuple.Plo +include ./$(DEPDIR)/test.Po + +.c.o: + $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# $(AM_V_CC)source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(COMPILE) -c $< + +.c.obj: + $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# $(AM_V_CC)source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: + $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +# $(AM_V_CC)source='$<' object='$@' libtool=yes \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-pkgincludeHEADERS: $(pkginclude_HEADERS) + @$(NORMAL_INSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \ + done + +uninstall-pkgincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + else \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_PROGRAMS) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +test.log: test$(EXEEXT) + @p='test$(EXEEXT)'; \ + b='test'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +#.test$(EXEEXT).log: +# @p='$<'; \ +# $(am__set_b); \ +# $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +# --log-file $$b.log --trs-file $$b.trs \ +# $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +# "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-am +all-am: Makefile $(LTLIBRARIES) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(pkgincludedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-pkgincludeHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-pkgincludeHEADERS + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES cscopelist-am ctags ctags-am distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-pkgincludeHEADERS \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + recheck tags tags-am uninstall uninstall-am \ + uninstall-pkgincludeHEADERS + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gsl-2.5/ntuple/Makefile.am b/gsl-2.5/ntuple/Makefile.am new file mode 100644 index 00000000..7e1152fc --- /dev/null +++ b/gsl-2.5/ntuple/Makefile.am @@ -0,0 +1,22 @@ +noinst_LTLIBRARIES = libgslntuple.la + +pkginclude_HEADERS = gsl_ntuple.h + +AM_CPPFLAGS = -I$(top_srcdir) + +libgslntuple_la_SOURCES = ntuple.c + +TESTS = $(check_PROGRAMS) + +check_PROGRAMS = test #demo demo1 + +test_SOURCES = test.c +test_LDADD = libgslntuple.la ../histogram/libgslhistogram.la ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la + +#demo_SOURCES = demo.c +#demo_LDADD = libgslntuple.la ../histogram/libgslhistogram.la ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la + +#demo1_SOURCES = demo1.c +#demo1_LDADD = libgslntuple.la ../histogram/libgslhistogram.la ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la + +CLEANFILES = test.dat diff --git a/gsl-2.5/ntuple/Makefile.in b/gsl-2.5/ntuple/Makefile.in new file mode 100644 index 00000000..bfcd6700 --- /dev/null +++ b/gsl-2.5/ntuple/Makefile.in @@ -0,0 +1,1033 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + + +VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +check_PROGRAMS = test$(EXEEXT) +subdir = ntuple +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp \ + $(pkginclude_HEADERS) $(top_srcdir)/test-driver ChangeLog +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +libgslntuple_la_LIBADD = +am_libgslntuple_la_OBJECTS = ntuple.lo +libgslntuple_la_OBJECTS = $(am_libgslntuple_la_OBJECTS) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +am_test_OBJECTS = test.$(OBJEXT) +test_OBJECTS = $(am_test_OBJECTS) +test_DEPENDENCIES = libgslntuple.la ../histogram/libgslhistogram.la \ + ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la \ + ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la \ + ../utils/libutils.la +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libgslntuple_la_SOURCES) $(test_SOURCES) +DIST_SOURCES = $(libgslntuple_la_SOURCES) $(test_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(pkgincludedir)" +HEADERS = $(pkginclude_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = @EXEEXT@ .test +LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +GSLCBLAS_LDFLAGS = @GSLCBLAS_LDFLAGS@ +GSL_CFLAGS = @GSL_CFLAGS@ +GSL_LDFLAGS = @GSL_LDFLAGS@ +GSL_LIBADD = @GSL_LIBADD@ +GSL_LIBM = @GSL_LIBM@ +GSL_LIBS = @GSL_LIBS@ +GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ +GSL_LT_VERSION = @GSL_LT_VERSION@ +GSL_MAJOR_VERSION = @GSL_MAJOR_VERSION@ +GSL_MINOR_VERSION = @GSL_MINOR_VERSION@ +HAVE_AIX_IEEE_INTERFACE = @HAVE_AIX_IEEE_INTERFACE@ +HAVE_DARWIN86_IEEE_INTERFACE = @HAVE_DARWIN86_IEEE_INTERFACE@ +HAVE_DARWIN_IEEE_INTERFACE = @HAVE_DARWIN_IEEE_INTERFACE@ +HAVE_FREEBSD_IEEE_INTERFACE = @HAVE_FREEBSD_IEEE_INTERFACE@ +HAVE_GNUM68K_IEEE_INTERFACE = @HAVE_GNUM68K_IEEE_INTERFACE@ +HAVE_GNUPPC_IEEE_INTERFACE = @HAVE_GNUPPC_IEEE_INTERFACE@ +HAVE_GNUSPARC_IEEE_INTERFACE = @HAVE_GNUSPARC_IEEE_INTERFACE@ +HAVE_GNUX86_IEEE_INTERFACE = @HAVE_GNUX86_IEEE_INTERFACE@ +HAVE_HPUX11_IEEE_INTERFACE = @HAVE_HPUX11_IEEE_INTERFACE@ +HAVE_HPUX_IEEE_INTERFACE = @HAVE_HPUX_IEEE_INTERFACE@ +HAVE_IRIX_IEEE_INTERFACE = @HAVE_IRIX_IEEE_INTERFACE@ +HAVE_NETBSD_IEEE_INTERFACE = @HAVE_NETBSD_IEEE_INTERFACE@ +HAVE_OPENBSD_IEEE_INTERFACE = @HAVE_OPENBSD_IEEE_INTERFACE@ +HAVE_OS2EMX_IEEE_INTERFACE = @HAVE_OS2EMX_IEEE_INTERFACE@ +HAVE_SOLARIS_IEEE_INTERFACE = @HAVE_SOLARIS_IEEE_INTERFACE@ +HAVE_SUNOS4_IEEE_INTERFACE = @HAVE_SUNOS4_IEEE_INTERFACE@ +HAVE_TRU64_IEEE_INTERFACE = @HAVE_TRU64_IEEE_INTERFACE@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBM = @LIBM@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +noinst_LTLIBRARIES = libgslntuple.la +pkginclude_HEADERS = gsl_ntuple.h +AM_CPPFLAGS = -I$(top_srcdir) +libgslntuple_la_SOURCES = ntuple.c +TESTS = $(check_PROGRAMS) +test_SOURCES = test.c +test_LDADD = libgslntuple.la ../histogram/libgslhistogram.la ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la + +#demo_SOURCES = demo.c +#demo_LDADD = libgslntuple.la ../histogram/libgslhistogram.la ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la + +#demo1_SOURCES = demo1.c +#demo1_LDADD = libgslntuple.la ../histogram/libgslhistogram.la ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la +CLEANFILES = test.dat +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu ntuple/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu ntuple/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libgslntuple.la: $(libgslntuple_la_OBJECTS) $(libgslntuple_la_DEPENDENCIES) $(EXTRA_libgslntuple_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(libgslntuple_la_OBJECTS) $(libgslntuple_la_LIBADD) $(LIBS) + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) $(EXTRA_test_DEPENDENCIES) + @rm -f test$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_OBJECTS) $(test_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ntuple.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test.Po@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-pkgincludeHEADERS: $(pkginclude_HEADERS) + @$(NORMAL_INSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \ + done + +uninstall-pkgincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + else \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_PROGRAMS) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +test.log: test$(EXEEXT) + @p='test$(EXEEXT)'; \ + b='test'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +@am__EXEEXT_TRUE@.test$(EXEEXT).log: +@am__EXEEXT_TRUE@ @p='$<'; \ +@am__EXEEXT_TRUE@ $(am__set_b); \ +@am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +@am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ +@am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +@am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-am +all-am: Makefile $(LTLIBRARIES) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(pkgincludedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-pkgincludeHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-pkgincludeHEADERS + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES cscopelist-am ctags ctags-am distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-pkgincludeHEADERS \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + recheck tags tags-am uninstall uninstall-am \ + uninstall-pkgincludeHEADERS + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gsl-2.5/ntuple/gsl_ntuple.h b/gsl-2.5/ntuple/gsl_ntuple.h new file mode 100644 index 00000000..90d8a26c --- /dev/null +++ b/gsl-2.5/ntuple/gsl_ntuple.h @@ -0,0 +1,82 @@ +/* histogram/ntuple.h + * + * Copyright (C) 2000 Simone Piccardi + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +/* Jan/2001 Modified by Brian Gough. Minor changes for GSL */ + +#ifndef __GSL_NTUPLE_H__ +#define __GSL_NTUPLE_H__ + +#include +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +typedef struct { + FILE * file; + void * ntuple_data; + size_t size; +} gsl_ntuple; + +typedef struct { + int (* function) (void * ntuple_data, void * params); + void * params; +} gsl_ntuple_select_fn; + +typedef struct { + double (* function) (void * ntuple_data, void * params); + void * params; +} gsl_ntuple_value_fn; + +gsl_ntuple * +gsl_ntuple_open (char * filename, void * ntuple_data, size_t size); + +gsl_ntuple * +gsl_ntuple_create (char * filename, void * ntuple_data, size_t size); + +int gsl_ntuple_write (gsl_ntuple * ntuple); +int gsl_ntuple_read (gsl_ntuple * ntuple); + +int gsl_ntuple_bookdata (gsl_ntuple * ntuple); /* synonym for write */ + +int gsl_ntuple_project (gsl_histogram * h, gsl_ntuple * ntuple, + gsl_ntuple_value_fn *value_func, + gsl_ntuple_select_fn *select_func); + +int gsl_ntuple_close (gsl_ntuple * ntuple); + +__END_DECLS + +#endif /* __GSL_NTUPLE_H__ */ + + + + diff --git a/gsl-2.5/ntuple/libgslntuple.la b/gsl-2.5/ntuple/libgslntuple.la new file mode 100644 index 00000000..980553e3 --- /dev/null +++ b/gsl-2.5/ntuple/libgslntuple.la @@ -0,0 +1,41 @@ +# libgslntuple.la - a libtool library file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='' + +# Names of this library. +library_names='' + +# The name of the static archive. +old_library='libgslntuple.a' + +# Linker flags that can not go in dependency_libs. +inherited_linker_flags='' + +# Libraries that this one depends upon. +dependency_libs=' -lm' + +# Names of additional weak libraries provided by this library +weak_library_names='' + +# Version information for libgslntuple. +current= +age= +revision= + +# Is this an already installed library? +installed=no + +# Should we warn about portability when linking against -modules? +shouldnotlink=no + +# Files to dlopen/dlpreopen +dlopen='' +dlpreopen='' + +# Directory that this library needs to be installed in: +libdir='' diff --git a/gsl-2.5/ntuple/ntuple.c b/gsl-2.5/ntuple/ntuple.c new file mode 100644 index 00000000..0019fe59 --- /dev/null +++ b/gsl-2.5/ntuple/ntuple.c @@ -0,0 +1,202 @@ +/* histogram/ntuple.c + * + * Copyright (C) 2000 Simone Piccardi + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Jan/2001 Modified by Brian Gough. Minor changes for GSL */ + +#include +#include +#include +#include + +/* + * gsl_ntuple_open: + * Initialize an ntuple structure and create the related file + */ + +gsl_ntuple * +gsl_ntuple_create (char *filename, void *ntuple_data, size_t size) +{ + gsl_ntuple *ntuple = (gsl_ntuple *)malloc (sizeof (gsl_ntuple)); + + if (ntuple == 0) + { + GSL_ERROR_VAL ("failed to allocate space for ntuple struct", + GSL_ENOMEM, 0); + } + + ntuple->ntuple_data = ntuple_data; + ntuple->size = size; + + ntuple->file = fopen (filename, "wb"); + + if (ntuple->file == 0) + { + free (ntuple); + GSL_ERROR_VAL ("unable to create ntuple file", GSL_EFAILED, 0); + } + + return ntuple; +} + +/* + * gsl_ntuple_open: + * Initialize an ntuple structure and open the related file + */ + +gsl_ntuple * +gsl_ntuple_open (char *filename, void *ntuple_data, size_t size) +{ + gsl_ntuple *ntuple = (gsl_ntuple *)malloc (sizeof (gsl_ntuple)); + + if (ntuple == 0) + { + GSL_ERROR_VAL ("failed to allocate space for ntuple struct", + GSL_ENOMEM, 0); + } + + ntuple->ntuple_data = ntuple_data; + ntuple->size = size; + + ntuple->file = fopen (filename, "rb"); + + if (ntuple->file == 0) + { + free (ntuple); + GSL_ERROR_VAL ("unable to open ntuple file for reading", + GSL_EFAILED, 0); + } + + return ntuple; +} + +/* + * gsl_ntuple_write: + * write to file a data row, must be used in a loop! + */ + +int +gsl_ntuple_write (gsl_ntuple * ntuple) +{ + size_t nwrite; + + nwrite = fwrite (ntuple->ntuple_data, ntuple->size, + 1, ntuple->file); + + if (nwrite != 1) + { + GSL_ERROR ("failed to write ntuple entry to file", GSL_EFAILED); + } + + return GSL_SUCCESS; +} + +/* the following function is a synonym for gsl_ntuple_write */ + +int +gsl_ntuple_bookdata (gsl_ntuple * ntuple) +{ + return gsl_ntuple_write (ntuple); +} + +/* + * gsl_ntuple_read: + * read form file a data row, must be used in a loop! + */ + +int +gsl_ntuple_read (gsl_ntuple * ntuple) +{ + size_t nread; + + nread = fread (ntuple->ntuple_data, ntuple->size, 1, ntuple->file); + + if (nread == 0 && feof(ntuple->file)) + { + return GSL_EOF; + } + + if (nread != 1) + { + GSL_ERROR ("failed to read ntuple entry from file", GSL_EFAILED); + } + + return GSL_SUCCESS; +} + +/* + * gsl_ntuple_project: + * fill an histogram with an ntuple file contents, use + * SelVal and SelFunc user defined functions to get + * the value to book and the selection funtion + */ + +#define EVAL(f,x) ((*((f)->function))(x,(f)->params)) + +int +gsl_ntuple_project (gsl_histogram * h, gsl_ntuple * ntuple, + gsl_ntuple_value_fn * value_func, + gsl_ntuple_select_fn * select_func) +{ + size_t nread; + + do + { + nread = fread (ntuple->ntuple_data, ntuple->size, + 1, ntuple->file); + + if (nread == 0 && feof(ntuple->file)) + { + break ; + } + + if (nread != 1) + { + GSL_ERROR ("failed to read ntuple for projection", GSL_EFAILED); + } + + if (EVAL(select_func, ntuple->ntuple_data)) + { + gsl_histogram_increment (h, EVAL(value_func, ntuple->ntuple_data)); + } + } + while (1); + + return GSL_SUCCESS; +} + + +/* + * gsl_ntuple_close: + * close the ntuple file and free the memory + */ + +int +gsl_ntuple_close (gsl_ntuple * ntuple) +{ + int status = fclose (ntuple->file); + + if (status) + { + GSL_ERROR ("failed to close ntuple file", GSL_EFAILED); + } + + free (ntuple); + + return GSL_SUCCESS; +} diff --git a/gsl-2.5/ntuple/ntuple.lo b/gsl-2.5/ntuple/ntuple.lo new file mode 100644 index 00000000..bb4a567b --- /dev/null +++ b/gsl-2.5/ntuple/ntuple.lo @@ -0,0 +1,12 @@ +# ntuple.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/ntuple.o' + +# Name of the non-PIC object +non_pic_object='ntuple.o' + diff --git a/gsl-2.5/ntuple/test b/gsl-2.5/ntuple/test new file mode 100755 index 00000000..be4edacb Binary files /dev/null and b/gsl-2.5/ntuple/test differ diff --git a/gsl-2.5/ntuple/test-suite.log b/gsl-2.5/ntuple/test-suite.log new file mode 100644 index 00000000..08923f92 --- /dev/null +++ b/gsl-2.5/ntuple/test-suite.log @@ -0,0 +1,14 @@ +==================================== + gsl 2.5: ntuple/test-suite.log +==================================== + +# TOTAL: 1 +# PASS: 1 +# SKIP: 0 +# XFAIL: 0 +# FAIL: 0 +# XPASS: 0 +# ERROR: 0 + +.. contents:: :depth: 2 + diff --git a/gsl-2.5/ntuple/test.c b/gsl-2.5/ntuple/test.c new file mode 100644 index 00000000..0827c131 --- /dev/null +++ b/gsl-2.5/ntuple/test.c @@ -0,0 +1,166 @@ +#include +#include +#include +#include +#include +#include + +struct data +{ + int num; + double x; + double y; + double z; +}; +int sel_func (void *ntuple_data, void * params); +double val_func (void *ntuple_data, void * params); + +int +main (void) +{ + struct data ntuple_row; + int i; + + double x[1000], y[1000], z[1000], f[100]; + + gsl_ntuple_select_fn S; + gsl_ntuple_value_fn V; + + double scale = 1.5; + + gsl_ieee_env_setup (); + + /* zero struct including padding bytes to avoid valgrind errors */ + memset(&ntuple_row, 0, sizeof(struct data)); + + S.function = &sel_func; + S.params = &scale; + + V.function = &val_func; + V.params = &scale; + + { + gsl_ntuple *ntuple = gsl_ntuple_create ("test.dat", &ntuple_row, + sizeof (ntuple_row)); + + int status = 0; + + for (i = 0; i < 100; i++) f[i] = 0; + + for (i = 0; i < 1000; i++) + { + double xi = 1.0 / (i + 1.5); + double yi = xi * xi ; + double zi = xi * xi * xi; + + ntuple_row.x = xi; + ntuple_row.y = yi; + ntuple_row.z = zi; + ntuple_row.num = i; + + x[i] = xi; y[i] = yi; z[i] = zi; + + if (xi * scale < 0.1) + { + double v = xi + yi + zi; + int k = (int)(100.0*v*scale); + f[k]++; + } + + /* printf ("x,y,z = %f,%f,%f; n=%x \n", ntuple_row.x, + ntuple_row.y, ntuple_row.z, ntuple_row.num); */ + + { + int s = gsl_ntuple_bookdata (ntuple); + + if (s != GSL_SUCCESS) + { + status = 1; + } + } + } + + gsl_ntuple_close (ntuple); + + gsl_test (status, "writing ntuples"); + } + + { + gsl_ntuple *ntuple = gsl_ntuple_open ("test.dat", &ntuple_row, + sizeof (ntuple_row)); + int status = 0; + + for (i = 0; i < 1000; i++) + { + gsl_ntuple_read (ntuple); + + status = (ntuple_row.num != i); + status |= (ntuple_row.x != x[i]); + status |= (ntuple_row.y != y[i]); + status |= (ntuple_row.z != z[i]); + + /* printf ("x,y,z = %f,%f,%f; n=%d\n", ntuple_row.x, + ntuple_row.y, ntuple_row.z, ntuple_row.num); */ + } + gsl_ntuple_close (ntuple); + + gsl_test (status, "reading ntuples"); + } + + { + int status = 0; + + gsl_ntuple *ntuple = gsl_ntuple_open ("test.dat", &ntuple_row, + sizeof (ntuple_row)); + + gsl_histogram *h = gsl_histogram_calloc_uniform (100, 0., 1.); + + gsl_ntuple_project (h, ntuple, &V, &S); + + gsl_ntuple_close (ntuple); + + /* gsl_histogram_fprintf (stdout, h, "%f", "%f"); */ + + for (i = 0; i < 100; i++) + { + /* printf ("h %g f %g\n", h->bin[i], f[i]); */ + + if (h->bin[i] != f[i]) + { + status = 1; + } + } + + gsl_test (status, "histogramming ntuples"); + + gsl_histogram_free (h); + } + + exit (gsl_test_summary()); +} + +int +sel_func (void *ntuple_data, void * params) +{ + double x, y, z, scale; + scale = *(double *)params; + + x = ((struct data *) ntuple_data)->x; + y = ((struct data *) ntuple_data)->y; + z = ((struct data *) ntuple_data)->z; + + return (x*scale < 0.1); +} + +double +val_func (void *ntuple_data, void * params) +{ + double x, y, z, scale; + scale = *(double *)params; + + x = ((struct data *) ntuple_data)->x; + y = ((struct data *) ntuple_data)->y; + z = ((struct data *) ntuple_data)->z; + + return (x + y + z) * scale; +} diff --git a/gsl-2.5/ntuple/test.dat b/gsl-2.5/ntuple/test.dat new file mode 100644 index 00000000..a9bb21c3 Binary files /dev/null and b/gsl-2.5/ntuple/test.dat differ diff --git a/gsl-2.5/ntuple/test.log b/gsl-2.5/ntuple/test.log new file mode 100644 index 00000000..308da222 --- /dev/null +++ b/gsl-2.5/ntuple/test.log @@ -0,0 +1 @@ +Completed [3/3] diff --git a/gsl-2.5/ntuple/test.trs b/gsl-2.5/ntuple/test.trs new file mode 100644 index 00000000..3f0f396c --- /dev/null +++ b/gsl-2.5/ntuple/test.trs @@ -0,0 +1,4 @@ +:test-result: PASS +:global-test-result: PASS +:recheck: no +:copy-in-global-log: no diff --git a/gsl-2.5/ode-initval/.deps/bsimp.Plo b/gsl-2.5/ode-initval/.deps/bsimp.Plo new file mode 100644 index 00000000..b3f34cd2 --- /dev/null +++ b/gsl-2.5/ode-initval/.deps/bsimp.Plo @@ -0,0 +1,316 @@ +bsimp.lo: bsimp.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/string.h \ + /usr/include/xlocale.h /usr/include/bits/string.h \ + /usr/include/bits/string2.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_linalg.h ../gsl/gsl_mode.h ../gsl/gsl_permutation.h \ + ../gsl/gsl_check_range.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_complex.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_blas.h ../gsl/gsl_blas_types.h \ + ../gsl/gsl_cblas.h ../gsl/gsl_odeiv.h odeiv_util.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string.h: + +/usr/include/bits/string2.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_linalg.h: + +../gsl/gsl_mode.h: + +../gsl/gsl_permutation.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_blas.h: + +../gsl/gsl_blas_types.h: + +../gsl/gsl_cblas.h: + +../gsl/gsl_odeiv.h: + +odeiv_util.h: diff --git a/gsl-2.5/ode-initval/.deps/control.Plo b/gsl-2.5/ode-initval/.deps/control.Plo new file mode 100644 index 00000000..ad7c2b16 --- /dev/null +++ b/gsl-2.5/ode-initval/.deps/control.Plo @@ -0,0 +1,173 @@ +control.lo: control.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_odeiv.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_odeiv.h: diff --git a/gsl-2.5/ode-initval/.deps/cscal.Plo b/gsl-2.5/ode-initval/.deps/cscal.Plo new file mode 100644 index 00000000..a21f518c --- /dev/null +++ b/gsl-2.5/ode-initval/.deps/cscal.Plo @@ -0,0 +1,183 @@ +cscal.lo: cscal.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/string.h \ + /usr/include/xlocale.h /usr/include/bits/string.h \ + /usr/include/bits/string2.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_errno.h /usr/include/stdio.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_types.h ../gsl/gsl_math.h ../gsl/gsl_sys.h \ + ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_nan.h ../gsl/gsl_pow_int.h \ + ../gsl/gsl_minmax.h ../gsl/gsl_odeiv.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string.h: + +/usr/include/bits/string2.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_odeiv.h: diff --git a/gsl-2.5/ode-initval/.deps/cstd.Plo b/gsl-2.5/ode-initval/.deps/cstd.Plo new file mode 100644 index 00000000..f95520b2 --- /dev/null +++ b/gsl-2.5/ode-initval/.deps/cstd.Plo @@ -0,0 +1,173 @@ +cstd.lo: cstd.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_errno.h /usr/include/stdio.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_types.h ../gsl/gsl_math.h ../gsl/gsl_sys.h \ + ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_nan.h ../gsl/gsl_pow_int.h \ + ../gsl/gsl_minmax.h ../gsl/gsl_odeiv.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_odeiv.h: diff --git a/gsl-2.5/ode-initval/.deps/evolve.Plo b/gsl-2.5/ode-initval/.deps/evolve.Plo new file mode 100644 index 00000000..8776c32a --- /dev/null +++ b/gsl-2.5/ode-initval/.deps/evolve.Plo @@ -0,0 +1,185 @@ +evolve.lo: evolve.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/string.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/xlocale.h /usr/include/bits/string.h \ + /usr/include/bits/string2.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/byteswap.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/bits/byteswap-16.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_odeiv.h odeiv_util.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/string.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string.h: + +/usr/include/bits/string2.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_odeiv.h: + +odeiv_util.h: diff --git a/gsl-2.5/ode-initval/.deps/gear1.Plo b/gsl-2.5/ode-initval/.deps/gear1.Plo new file mode 100644 index 00000000..9a11f2ef --- /dev/null +++ b/gsl-2.5/ode-initval/.deps/gear1.Plo @@ -0,0 +1,185 @@ +gear1.lo: gear1.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/string.h \ + /usr/include/xlocale.h /usr/include/bits/string.h \ + /usr/include/bits/string2.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_odeiv.h odeiv_util.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string.h: + +/usr/include/bits/string2.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_odeiv.h: + +odeiv_util.h: diff --git a/gsl-2.5/ode-initval/.deps/gear2.Plo b/gsl-2.5/ode-initval/.deps/gear2.Plo new file mode 100644 index 00000000..9392a667 --- /dev/null +++ b/gsl-2.5/ode-initval/.deps/gear2.Plo @@ -0,0 +1,185 @@ +gear2.lo: gear2.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/string.h \ + /usr/include/xlocale.h /usr/include/bits/string.h \ + /usr/include/bits/string2.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + odeiv_util.h ../gsl/gsl_odeiv.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string.h: + +/usr/include/bits/string2.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +odeiv_util.h: + +../gsl/gsl_odeiv.h: diff --git a/gsl-2.5/ode-initval/.deps/rk2.Plo b/gsl-2.5/ode-initval/.deps/rk2.Plo new file mode 100644 index 00000000..fc8bf18e --- /dev/null +++ b/gsl-2.5/ode-initval/.deps/rk2.Plo @@ -0,0 +1,121 @@ +rk2.lo: rk2.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/string.h \ + /usr/include/xlocale.h /usr/include/bits/string.h \ + /usr/include/bits/string2.h ../gsl/gsl_errno.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_types.h ../gsl/gsl_odeiv.h odeiv_util.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string.h: + +/usr/include/bits/string2.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_odeiv.h: + +odeiv_util.h: diff --git a/gsl-2.5/ode-initval/.deps/rk2imp.Plo b/gsl-2.5/ode-initval/.deps/rk2imp.Plo new file mode 100644 index 00000000..2878fc71 --- /dev/null +++ b/gsl-2.5/ode-initval/.deps/rk2imp.Plo @@ -0,0 +1,185 @@ +rk2imp.lo: rk2imp.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/string.h \ + /usr/include/xlocale.h /usr/include/bits/string.h \ + /usr/include/bits/string2.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_odeiv.h odeiv_util.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string.h: + +/usr/include/bits/string2.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_odeiv.h: + +odeiv_util.h: diff --git a/gsl-2.5/ode-initval/.deps/rk2simp.Plo b/gsl-2.5/ode-initval/.deps/rk2simp.Plo new file mode 100644 index 00000000..43e1c70b --- /dev/null +++ b/gsl-2.5/ode-initval/.deps/rk2simp.Plo @@ -0,0 +1,316 @@ +rk2simp.lo: rk2simp.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/string.h \ + /usr/include/xlocale.h /usr/include/bits/string.h \ + /usr/include/bits/string2.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_odeiv.h ../gsl/gsl_linalg.h ../gsl/gsl_mode.h \ + ../gsl/gsl_permutation.h ../gsl/gsl_check_range.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_complex.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_blas.h ../gsl/gsl_blas_types.h \ + ../gsl/gsl_cblas.h odeiv_util.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string.h: + +/usr/include/bits/string2.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_odeiv.h: + +../gsl/gsl_linalg.h: + +../gsl/gsl_mode.h: + +../gsl/gsl_permutation.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_blas.h: + +../gsl/gsl_blas_types.h: + +../gsl/gsl_cblas.h: + +odeiv_util.h: diff --git a/gsl-2.5/ode-initval/.deps/rk4.Plo b/gsl-2.5/ode-initval/.deps/rk4.Plo new file mode 100644 index 00000000..4a22d3da --- /dev/null +++ b/gsl-2.5/ode-initval/.deps/rk4.Plo @@ -0,0 +1,121 @@ +rk4.lo: rk4.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/string.h \ + /usr/include/xlocale.h /usr/include/bits/string.h \ + /usr/include/bits/string2.h ../gsl/gsl_errno.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_types.h ../gsl/gsl_odeiv.h odeiv_util.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string.h: + +/usr/include/bits/string2.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_odeiv.h: + +odeiv_util.h: diff --git a/gsl-2.5/ode-initval/.deps/rk4imp.Plo b/gsl-2.5/ode-initval/.deps/rk4imp.Plo new file mode 100644 index 00000000..e53a2803 --- /dev/null +++ b/gsl-2.5/ode-initval/.deps/rk4imp.Plo @@ -0,0 +1,185 @@ +rk4imp.lo: rk4imp.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/string.h \ + /usr/include/xlocale.h /usr/include/bits/string.h \ + /usr/include/bits/string2.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_odeiv.h odeiv_util.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string.h: + +/usr/include/bits/string2.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_odeiv.h: + +odeiv_util.h: diff --git a/gsl-2.5/ode-initval/.deps/rk8pd.Plo b/gsl-2.5/ode-initval/.deps/rk8pd.Plo new file mode 100644 index 00000000..083b848d --- /dev/null +++ b/gsl-2.5/ode-initval/.deps/rk8pd.Plo @@ -0,0 +1,121 @@ +rk8pd.lo: rk8pd.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/string.h \ + /usr/include/xlocale.h /usr/include/bits/string.h \ + /usr/include/bits/string2.h ../gsl/gsl_errno.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_types.h ../gsl/gsl_odeiv.h odeiv_util.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string.h: + +/usr/include/bits/string2.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_odeiv.h: + +odeiv_util.h: diff --git a/gsl-2.5/ode-initval/.deps/rkck.Plo b/gsl-2.5/ode-initval/.deps/rkck.Plo new file mode 100644 index 00000000..b1aa04a1 --- /dev/null +++ b/gsl-2.5/ode-initval/.deps/rkck.Plo @@ -0,0 +1,121 @@ +rkck.lo: rkck.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/string.h \ + /usr/include/xlocale.h /usr/include/bits/string.h \ + /usr/include/bits/string2.h ../gsl/gsl_errno.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_types.h ../gsl/gsl_odeiv.h odeiv_util.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string.h: + +/usr/include/bits/string2.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_odeiv.h: + +odeiv_util.h: diff --git a/gsl-2.5/ode-initval/.deps/rkf45.Plo b/gsl-2.5/ode-initval/.deps/rkf45.Plo new file mode 100644 index 00000000..c8b0ea6c --- /dev/null +++ b/gsl-2.5/ode-initval/.deps/rkf45.Plo @@ -0,0 +1,121 @@ +rkf45.lo: rkf45.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/string.h \ + /usr/include/xlocale.h /usr/include/bits/string.h \ + /usr/include/bits/string2.h ../gsl/gsl_errno.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_types.h ../gsl/gsl_odeiv.h odeiv_util.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string.h: + +/usr/include/bits/string2.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_odeiv.h: + +odeiv_util.h: diff --git a/gsl-2.5/ode-initval/.deps/step.Plo b/gsl-2.5/ode-initval/.deps/step.Plo new file mode 100644 index 00000000..d32e20a0 --- /dev/null +++ b/gsl-2.5/ode-initval/.deps/step.Plo @@ -0,0 +1,109 @@ +step.lo: step.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_errno.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_types.h ../gsl/gsl_odeiv.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_odeiv.h: diff --git a/gsl-2.5/ode-initval/.deps/test.Po b/gsl-2.5/ode-initval/.deps/test.Po new file mode 100644 index 00000000..6872eaf0 --- /dev/null +++ b/gsl-2.5/ode-initval/.deps/test.Po @@ -0,0 +1,320 @@ +test.o: test.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/string.h /usr/include/xlocale.h \ + /usr/include/bits/string.h /usr/include/bits/string2.h \ + /usr/include/math.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_test.h ../gsl/gsl_errno.h \ + /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_types.h ../gsl/gsl_math.h ../gsl/gsl_sys.h \ + ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_nan.h ../gsl/gsl_pow_int.h \ + ../gsl/gsl_minmax.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h ../gsl/gsl_complex.h \ + ../gsl/gsl_check_range.h ../gsl/gsl_vector_complex_long_double.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_vector_complex_double.h \ + ../gsl/gsl_vector_double.h ../gsl/gsl_block_double.h \ + ../gsl/gsl_block_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_vector_long.h \ + ../gsl/gsl_block_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_matrix_int.h \ + ../gsl/gsl_vector_int.h ../gsl/gsl_block_int.h \ + ../gsl/gsl_matrix_ushort.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_matrix_short.h \ + ../gsl/gsl_vector_short.h ../gsl/gsl_block_short.h \ + ../gsl/gsl_matrix_uchar.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_matrix_char.h \ + ../gsl/gsl_vector_char.h ../gsl/gsl_block_char.h ../gsl/gsl_linalg.h \ + ../gsl/gsl_mode.h ../gsl/gsl_permutation.h ../gsl/gsl_vector.h \ + ../gsl/gsl_blas.h ../gsl/gsl_blas_types.h ../gsl/gsl_cblas.h \ + ../gsl/gsl_ieee_utils.h ../gsl/gsl_odeiv.h odeiv_util.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string.h: + +/usr/include/bits/string2.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_test.h: + +../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_linalg.h: + +../gsl/gsl_mode.h: + +../gsl/gsl_permutation.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_blas.h: + +../gsl/gsl_blas_types.h: + +../gsl/gsl_cblas.h: + +../gsl/gsl_ieee_utils.h: + +../gsl/gsl_odeiv.h: + +odeiv_util.h: diff --git a/gsl-2.5/ode-initval/.libs/libgslodeiv.la b/gsl-2.5/ode-initval/.libs/libgslodeiv.la new file mode 120000 index 00000000..48428805 --- /dev/null +++ b/gsl-2.5/ode-initval/.libs/libgslodeiv.la @@ -0,0 +1 @@ +../libgslodeiv.la \ No newline at end of file diff --git a/gsl-2.5/ode-initval/.libs/lt-test b/gsl-2.5/ode-initval/.libs/lt-test new file mode 100755 index 00000000..d9f6d6b5 Binary files /dev/null and b/gsl-2.5/ode-initval/.libs/lt-test differ diff --git a/gsl-2.5/ode-initval/.libs/test b/gsl-2.5/ode-initval/.libs/test new file mode 100755 index 00000000..74d6fd9a Binary files /dev/null and b/gsl-2.5/ode-initval/.libs/test differ diff --git a/gsl-2.5/ode-initval/ChangeLog b/gsl-2.5/ode-initval/ChangeLog new file mode 100644 index 00000000..1a137cb9 --- /dev/null +++ b/gsl-2.5/ode-initval/ChangeLog @@ -0,0 +1,188 @@ +2011-04-25 Brian Gough + + * This module is now superseded by ode-initval2 + +2009-08-12 Brian Gough + + * rk4.c (rk4_alloc): fix order of free statements to avoid memory + leak + +2009-07-09 Brian Gough + + * step.c (gsl_odeiv_step_free): handle NULL argument in free + + * evolve.c (gsl_odeiv_evolve_free): handle NULL argument in free + + * control.c (gsl_odeiv_control_free): handle NULL argument in free + +2009-04-21 Brian Gough + + * gear2.c (gear2_apply): save initial values of y for possible + failures + +2009-04-20 Brian Gough + + * evolve.c (gsl_odeiv_evolve_apply): restore original t value when + step fails + +2008-07-03 Brian Gough + + * Makefile.am (INCLUDES): use top_srcdir instead of top_builddir + +2008-01-28 Brian Gough + + * test.c (test_evolve_negative_h): test evolution with negative + steps as well as positive + +2008-01-03 Brian Gough + + * evolve.c (gsl_odeiv_evolve_apply): handle the case where + GSL_ODEIV_HADJ_DEC does not represent a real decrease (e.g. where + x+h = x due to finite precision) + +2006-07-29 Brian Gough + + * evolve.c (gsl_odeiv_evolve_apply): notify user of step-size + which caused any failure by returning it + +2006-06-13 Brian Gough + + * gsl_odeiv.h, control.c (gsl_odeiv_control_hadjust): change y0 to + y in prototype to avoid conflict with bessel y0() in math.h + + * test.c (test_odeiv_stepper): change y0 to ystart + +2005-04-08 Brian Gough + + * Fixed all functions to consistently return status instead of + GSL_EBADFUNC. + +2004-12-29 Brian Gough + + * test.c (test_compare_vanderpol): avoid variable size array + (test_compare_oregonator): as above + +2004-12-23 Brian Gough + + * test.c (test_evolve_xsin): changed description from "failures" + to "errors" + +2004-12-22 Brian Gough + + * rk2simp.c (rk2simp_step): added missing static declaration + + * gear1.c (gear1_step): added missing static declaration + + * gear2.c (gear2_step): added missing static declaration + + * rk4imp.c (rk4imp_step): added missing static declaration + + * rk4.c (rk4_step): added missing static declaration + + * rk2imp.c (rk2imp_step): added missing static declaration + +2004-12-01 Brian Gough + + * updated all solvers to ensure correct handling of error codes + from user defined functions + + * test.c (rhs_xsin): added a test which includes failures of the + function itself and jacobian + +2004-11-25 Brian Gough + + * gear2.c (gear2_alloc): added check for non-allocation of primer, + and two-step error estimation + +2004-11-23 Brian Gough + + * gear1.c (gear1_apply): use 90% error bound + + * rk2imp.c (rk2imp_apply): use 90% error bound + + * rk2simp.c (rk2simp_apply): use 90% error bound + +2004-11-18 Brian Gough + + * test.c: new test program (Tuomo Keskitalo) + +2004-11-12 Brian Gough + + * evolve.c (gsl_odeiv_evolve_apply): check for internal stepper + failure (Tuomo Keskitalo) + + * bsimp.c: gives exact dydt_out (Tuomo Keskitalo) + + * rk2simp.c: new semi-implicit solver (Tuomo Keskitalo) + + * gear1.c rkf45.c rkck.c rk8pd.c rk4imp.c rk2imp.c rk2.c rk4.c: + fix error estimate, exact derivatives on output (Tuomo Keskitalo) + +2004-05-28 Brian Gough + + * bsimp.c (bsimp_apply): fix prototype of function to match + definition in typedef by removing const on double args. + +Sat Aug 3 19:02:37 2002 Brian Gough + + * cscal.c (struct): use matlab style error control, with scalar + relative error and vector absolute error + +Wed Oct 3 13:19:28 2001 Brian Gough + + * evolve.c (gsl_odeiv_evolve_apply): report error if step + direction does not match interval direction + + * cstd.c (std_control_hadjust): allow for negative step-sizes + + * evolve.c (gsl_odeiv_evolve_apply): allow for integrating + backwards in time + +Sat Sep 29 21:02:36 2001 Brian Gough + + * bsimp.c: use the condition |D^-1 Delta| >> 1 to detect + singularities, as described in the paper and implemented in METAN1 + by Deuflhard et al. + + * evolve.c (gsl_odeiv_evolve_apply): reset the final_step flag + whenever the step size is decreased + +Sun Jul 1 22:42:02 2001 Brian Gough + + * bsimp.c: modified to use new-style vector views + +Fri Jun 22 11:59:24 2001 Brian Gough + + * evolve.c: keep track of failed step count + +Tue Jun 12 11:34:23 2001 Brian Gough + + * rkf45.c: added Runge-Kutta Fehlberg method, RKF45 + + * reorganized to use standard gsl conventions + +Mon Apr 23 10:26:22 2001 Brian Gough + + * unified error handling conventions to _e for error handling + functions and no suffix for plain functions, so _impl functions + are no longer needed. + + * removed tests for EFAULT, since EFAULT should only apply to + invalid non-null pointers. + +2000-05-14 Steve Robbins + + * Makefile.am (test_LDADD): put libgslpermutation ahead of + libgslvector in the link beccause the former uses + `gsl_check_range' which is defined in the latter. + +Tue Apr 11 19:59:01 2000 Brian Gough + + * bsimp.c (bsimp_step_local): changed gsl_la prefix to gsl_linalg, + new naming convention + + +Fri Oct 1 15:46:13 1999 Brian Gough + + * bsimp.c: converted to use new-style block/vector code + diff --git a/gsl-2.5/ode-initval/Makefile b/gsl-2.5/ode-initval/Makefile new file mode 100644 index 00000000..68aebb39 --- /dev/null +++ b/gsl-2.5/ode-initval/Makefile @@ -0,0 +1,1047 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# ode-initval/Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + + + + +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/gsl +pkgincludedir = $(includedir)/gsl +pkglibdir = $(libdir)/gsl +pkglibexecdir = $(libexecdir)/gsl +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = x86_64-unknown-linux-gnu +host_triplet = x86_64-unknown-linux-gnu +check_PROGRAMS = test$(EXEEXT) +subdir = ode-initval +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp \ + $(noinst_HEADERS) $(pkginclude_HEADERS) \ + $(top_srcdir)/test-driver ChangeLog TODO +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +libgslodeiv_la_LIBADD = +am_libgslodeiv_la_OBJECTS = control.lo cstd.lo cscal.lo evolve.lo \ + step.lo rk2.lo rk2imp.lo rk2simp.lo rk4.lo rk4imp.lo rkf45.lo \ + rk8pd.lo rkck.lo bsimp.lo gear1.lo gear2.lo +libgslodeiv_la_OBJECTS = $(am_libgslodeiv_la_OBJECTS) +AM_V_lt = $(am__v_lt_$(V)) +am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) +am__v_lt_0 = --silent +am__v_lt_1 = +am_test_OBJECTS = test.$(OBJEXT) +test_OBJECTS = $(am_test_OBJECTS) +test_DEPENDENCIES = libgslodeiv.la ../linalg/libgsllinalg.la \ + ../blas/libgslblas.la ../cblas/libgslcblas.la \ + ../matrix/libgslmatrix.la ../permutation/libgslpermutation.la \ + ../vector/libgslvector.la ../block/libgslblock.la \ + ../complex/libgslcomplex.la ../ieee-utils/libgslieeeutils.la \ + ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la \ + ../utils/libutils.la +AM_V_P = $(am__v_P_$(V)) +am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY)) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_$(V)) +am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_$(V)) +am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I. -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_$(V)) +am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_$(V)) +am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libgslodeiv_la_SOURCES) $(test_SOURCES) +DIST_SOURCES = $(libgslodeiv_la_SOURCES) $(test_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(pkgincludedir)" +HEADERS = $(noinst_HEADERS) $(pkginclude_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = .test +LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing aclocal-1.13 +AMTAR = $${TAR-tar} +AM_DEFAULT_VERBOSITY = 1 +AR = ar +AS = as +AUTOCONF = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing autoconf +AUTOHEADER = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing autoheader +AUTOMAKE = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing automake-1.13 +AWK = gawk +CC = gcc +CCDEPMODE = depmode=gcc3 +CFLAGS = -g -O2 +CPP = gcc -E +CPPFLAGS = +CYGPATH_W = echo +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +DLLTOOL = false +DSYMUTIL = +DUMPBIN = +ECHO_C = +ECHO_N = -n +ECHO_T = +EGREP = /usr/bin/grep -E +EXEEXT = +FGREP = /usr/bin/grep -F +GREP = /usr/bin/grep +GSLCBLAS_LDFLAGS = +GSL_CFLAGS = -I${prefix}/include +GSL_LDFLAGS = +GSL_LIBADD = +GSL_LIBM = -lm +GSL_LIBS = -L${exec_prefix}/lib -lgsl +GSL_LT_CBLAS_VERSION = 0:0:0 +GSL_LT_VERSION = 24:0:1 +GSL_MAJOR_VERSION = 2 +GSL_MINOR_VERSION = 5 +HAVE_AIX_IEEE_INTERFACE = +HAVE_DARWIN86_IEEE_INTERFACE = +HAVE_DARWIN_IEEE_INTERFACE = +HAVE_FREEBSD_IEEE_INTERFACE = +HAVE_GNUM68K_IEEE_INTERFACE = +HAVE_GNUPPC_IEEE_INTERFACE = +HAVE_GNUSPARC_IEEE_INTERFACE = +HAVE_GNUX86_IEEE_INTERFACE = +HAVE_HPUX11_IEEE_INTERFACE = +HAVE_HPUX_IEEE_INTERFACE = +HAVE_IRIX_IEEE_INTERFACE = +HAVE_NETBSD_IEEE_INTERFACE = +HAVE_OPENBSD_IEEE_INTERFACE = +HAVE_OS2EMX_IEEE_INTERFACE = +HAVE_SOLARIS_IEEE_INTERFACE = +HAVE_SUNOS4_IEEE_INTERFACE = +HAVE_TRU64_IEEE_INTERFACE = +INSTALL = /usr/bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = $(install_sh) -c -s +LD = /usr/bin/ld -m elf_x86_64 +LDFLAGS = +LIBM = -lm +LIBOBJS = +LIBS = -lm +LIBTOOL = $(SHELL) $(top_builddir)/libtool +LIPO = +LN_S = ln -s +LTLIBOBJS = +MAINT = # +MAKEINFO = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing makeinfo +MANIFEST_TOOL = : +MKDIR_P = /usr/bin/mkdir -p +NM = /usr/bin/nm -B +NMEDIT = +OBJDUMP = objdump +OBJEXT = o +OTOOL = +OTOOL64 = +PACKAGE = gsl +PACKAGE_BUGREPORT = +PACKAGE_NAME = gsl +PACKAGE_STRING = gsl 2.5 +PACKAGE_TARNAME = gsl +PACKAGE_URL = +PACKAGE_VERSION = 2.5 +PATH_SEPARATOR = : +RANLIB = ranlib +SED = /usr/bin/sed +SET_MAKE = +SHELL = /bin/sh +STRIP = strip +VERSION = 2.5 +abs_builddir = /home/groups/kipac/chto/package/gsl/gsl-2.5/ode-initval +abs_srcdir = /home/groups/kipac/chto/package/gsl/gsl-2.5/ode-initval +abs_top_builddir = /home/groups/kipac/chto/package/gsl/gsl-2.5 +abs_top_srcdir = /home/groups/kipac/chto/package/gsl/gsl-2.5 +ac_ct_AR = ar +ac_ct_CC = gcc +ac_ct_DUMPBIN = +am__include = include +am__leading_dot = . +am__quote = +am__tar = $${TAR-tar} chof - "$$tardir" +am__untar = $${TAR-tar} xf - +bindir = ${exec_prefix}/bin +build = x86_64-unknown-linux-gnu +build_alias = +build_cpu = x86_64 +build_os = linux-gnu +build_vendor = unknown +builddir = . +datadir = ${datarootdir} +datarootdir = ${prefix}/share +docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} +dvidir = ${docdir} +exec_prefix = ${prefix} +host = x86_64-unknown-linux-gnu +host_alias = +host_cpu = x86_64 +host_os = linux-gnu +host_vendor = unknown +htmldir = ${docdir} +includedir = ${prefix}/include +infodir = ${datarootdir}/info +install_sh = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/install-sh +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +localedir = ${datarootdir}/locale +localstatedir = ${prefix}/var +mandir = ${datarootdir}/man +mkdir_p = $(MKDIR_P) +oldincludedir = /usr/include +pdfdir = ${docdir} +prefix = /home/groups/kipac/chto/package/gsl/gsl_lib +program_transform_name = s,x,x, +psdir = ${docdir} +sbindir = ${exec_prefix}/sbin +sharedstatedir = ${prefix}/com +srcdir = . +sysconfdir = ${prefix}/etc +target_alias = +top_build_prefix = ../ +top_builddir = .. +top_srcdir = .. +noinst_LTLIBRARIES = libgslodeiv.la +pkginclude_HEADERS = gsl_odeiv.h +AM_CPPFLAGS = -I$(top_srcdir) +libgslodeiv_la_SOURCES = control.c cstd.c cscal.c evolve.c step.c rk2.c rk2imp.c rk2simp.c rk4.c rk4imp.c rkf45.c rk8pd.c rkck.c bsimp.c gear1.c gear2.c +noinst_HEADERS = odeiv_util.h +TESTS = $(check_PROGRAMS) +test_LDADD = libgslodeiv.la ../linalg/libgsllinalg.la ../blas/libgslblas.la ../cblas/libgslcblas.la ../matrix/libgslmatrix.la ../permutation/libgslpermutation.la ../vector/libgslvector.la ../block/libgslblock.la ../complex/libgslcomplex.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la +test_SOURCES = test.c +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu ode-initval/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu ode-initval/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: # $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): # $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libgslodeiv.la: $(libgslodeiv_la_OBJECTS) $(libgslodeiv_la_DEPENDENCIES) $(EXTRA_libgslodeiv_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(libgslodeiv_la_OBJECTS) $(libgslodeiv_la_LIBADD) $(LIBS) + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) $(EXTRA_test_DEPENDENCIES) + @rm -f test$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_OBJECTS) $(test_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +include ./$(DEPDIR)/bsimp.Plo +include ./$(DEPDIR)/control.Plo +include ./$(DEPDIR)/cscal.Plo +include ./$(DEPDIR)/cstd.Plo +include ./$(DEPDIR)/evolve.Plo +include ./$(DEPDIR)/gear1.Plo +include ./$(DEPDIR)/gear2.Plo +include ./$(DEPDIR)/rk2.Plo +include ./$(DEPDIR)/rk2imp.Plo +include ./$(DEPDIR)/rk2simp.Plo +include ./$(DEPDIR)/rk4.Plo +include ./$(DEPDIR)/rk4imp.Plo +include ./$(DEPDIR)/rk8pd.Plo +include ./$(DEPDIR)/rkck.Plo +include ./$(DEPDIR)/rkf45.Plo +include ./$(DEPDIR)/step.Plo +include ./$(DEPDIR)/test.Po + +.c.o: + $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# $(AM_V_CC)source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(COMPILE) -c $< + +.c.obj: + $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# $(AM_V_CC)source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: + $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +# $(AM_V_CC)source='$<' object='$@' libtool=yes \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-pkgincludeHEADERS: $(pkginclude_HEADERS) + @$(NORMAL_INSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \ + done + +uninstall-pkgincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + else \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_PROGRAMS) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +test.log: test$(EXEEXT) + @p='test$(EXEEXT)'; \ + b='test'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +#.test$(EXEEXT).log: +# @p='$<'; \ +# $(am__set_b); \ +# $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +# --log-file $$b.log --trs-file $$b.trs \ +# $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +# "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-am +all-am: Makefile $(LTLIBRARIES) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(pkgincludedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-pkgincludeHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-pkgincludeHEADERS + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES cscopelist-am ctags ctags-am distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-pkgincludeHEADERS \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + recheck tags tags-am uninstall uninstall-am \ + uninstall-pkgincludeHEADERS + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gsl-2.5/ode-initval/Makefile.am b/gsl-2.5/ode-initval/Makefile.am new file mode 100644 index 00000000..9c774b5e --- /dev/null +++ b/gsl-2.5/ode-initval/Makefile.am @@ -0,0 +1,18 @@ +noinst_LTLIBRARIES = libgslodeiv.la + +pkginclude_HEADERS = gsl_odeiv.h + +AM_CPPFLAGS = -I$(top_srcdir) + +libgslodeiv_la_SOURCES = control.c cstd.c cscal.c evolve.c step.c rk2.c rk2imp.c rk2simp.c rk4.c rk4imp.c rkf45.c rk8pd.c rkck.c bsimp.c gear1.c gear2.c + +noinst_HEADERS = odeiv_util.h + +check_PROGRAMS = test + +TESTS = $(check_PROGRAMS) + +test_LDADD = libgslodeiv.la ../linalg/libgsllinalg.la ../blas/libgslblas.la ../cblas/libgslcblas.la ../matrix/libgslmatrix.la ../permutation/libgslpermutation.la ../vector/libgslvector.la ../block/libgslblock.la ../complex/libgslcomplex.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la + +test_SOURCES = test.c + diff --git a/gsl-2.5/ode-initval/Makefile.in b/gsl-2.5/ode-initval/Makefile.in new file mode 100644 index 00000000..67000679 --- /dev/null +++ b/gsl-2.5/ode-initval/Makefile.in @@ -0,0 +1,1047 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + + +VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +check_PROGRAMS = test$(EXEEXT) +subdir = ode-initval +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp \ + $(noinst_HEADERS) $(pkginclude_HEADERS) \ + $(top_srcdir)/test-driver ChangeLog TODO +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +libgslodeiv_la_LIBADD = +am_libgslodeiv_la_OBJECTS = control.lo cstd.lo cscal.lo evolve.lo \ + step.lo rk2.lo rk2imp.lo rk2simp.lo rk4.lo rk4imp.lo rkf45.lo \ + rk8pd.lo rkck.lo bsimp.lo gear1.lo gear2.lo +libgslodeiv_la_OBJECTS = $(am_libgslodeiv_la_OBJECTS) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +am_test_OBJECTS = test.$(OBJEXT) +test_OBJECTS = $(am_test_OBJECTS) +test_DEPENDENCIES = libgslodeiv.la ../linalg/libgsllinalg.la \ + ../blas/libgslblas.la ../cblas/libgslcblas.la \ + ../matrix/libgslmatrix.la ../permutation/libgslpermutation.la \ + ../vector/libgslvector.la ../block/libgslblock.la \ + ../complex/libgslcomplex.la ../ieee-utils/libgslieeeutils.la \ + ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la \ + ../utils/libutils.la +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libgslodeiv_la_SOURCES) $(test_SOURCES) +DIST_SOURCES = $(libgslodeiv_la_SOURCES) $(test_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(pkgincludedir)" +HEADERS = $(noinst_HEADERS) $(pkginclude_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = @EXEEXT@ .test +LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +GSLCBLAS_LDFLAGS = @GSLCBLAS_LDFLAGS@ +GSL_CFLAGS = @GSL_CFLAGS@ +GSL_LDFLAGS = @GSL_LDFLAGS@ +GSL_LIBADD = @GSL_LIBADD@ +GSL_LIBM = @GSL_LIBM@ +GSL_LIBS = @GSL_LIBS@ +GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ +GSL_LT_VERSION = @GSL_LT_VERSION@ +GSL_MAJOR_VERSION = @GSL_MAJOR_VERSION@ +GSL_MINOR_VERSION = @GSL_MINOR_VERSION@ +HAVE_AIX_IEEE_INTERFACE = @HAVE_AIX_IEEE_INTERFACE@ +HAVE_DARWIN86_IEEE_INTERFACE = @HAVE_DARWIN86_IEEE_INTERFACE@ +HAVE_DARWIN_IEEE_INTERFACE = @HAVE_DARWIN_IEEE_INTERFACE@ +HAVE_FREEBSD_IEEE_INTERFACE = @HAVE_FREEBSD_IEEE_INTERFACE@ +HAVE_GNUM68K_IEEE_INTERFACE = @HAVE_GNUM68K_IEEE_INTERFACE@ +HAVE_GNUPPC_IEEE_INTERFACE = @HAVE_GNUPPC_IEEE_INTERFACE@ +HAVE_GNUSPARC_IEEE_INTERFACE = @HAVE_GNUSPARC_IEEE_INTERFACE@ +HAVE_GNUX86_IEEE_INTERFACE = @HAVE_GNUX86_IEEE_INTERFACE@ +HAVE_HPUX11_IEEE_INTERFACE = @HAVE_HPUX11_IEEE_INTERFACE@ +HAVE_HPUX_IEEE_INTERFACE = @HAVE_HPUX_IEEE_INTERFACE@ +HAVE_IRIX_IEEE_INTERFACE = @HAVE_IRIX_IEEE_INTERFACE@ +HAVE_NETBSD_IEEE_INTERFACE = @HAVE_NETBSD_IEEE_INTERFACE@ +HAVE_OPENBSD_IEEE_INTERFACE = @HAVE_OPENBSD_IEEE_INTERFACE@ +HAVE_OS2EMX_IEEE_INTERFACE = @HAVE_OS2EMX_IEEE_INTERFACE@ +HAVE_SOLARIS_IEEE_INTERFACE = @HAVE_SOLARIS_IEEE_INTERFACE@ +HAVE_SUNOS4_IEEE_INTERFACE = @HAVE_SUNOS4_IEEE_INTERFACE@ +HAVE_TRU64_IEEE_INTERFACE = @HAVE_TRU64_IEEE_INTERFACE@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBM = @LIBM@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +noinst_LTLIBRARIES = libgslodeiv.la +pkginclude_HEADERS = gsl_odeiv.h +AM_CPPFLAGS = -I$(top_srcdir) +libgslodeiv_la_SOURCES = control.c cstd.c cscal.c evolve.c step.c rk2.c rk2imp.c rk2simp.c rk4.c rk4imp.c rkf45.c rk8pd.c rkck.c bsimp.c gear1.c gear2.c +noinst_HEADERS = odeiv_util.h +TESTS = $(check_PROGRAMS) +test_LDADD = libgslodeiv.la ../linalg/libgsllinalg.la ../blas/libgslblas.la ../cblas/libgslcblas.la ../matrix/libgslmatrix.la ../permutation/libgslpermutation.la ../vector/libgslvector.la ../block/libgslblock.la ../complex/libgslcomplex.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la +test_SOURCES = test.c +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu ode-initval/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu ode-initval/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libgslodeiv.la: $(libgslodeiv_la_OBJECTS) $(libgslodeiv_la_DEPENDENCIES) $(EXTRA_libgslodeiv_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(libgslodeiv_la_OBJECTS) $(libgslodeiv_la_LIBADD) $(LIBS) + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) $(EXTRA_test_DEPENDENCIES) + @rm -f test$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_OBJECTS) $(test_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bsimp.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/control.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cscal.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cstd.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/evolve.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gear1.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gear2.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rk2.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rk2imp.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rk2simp.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rk4.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rk4imp.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rk8pd.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rkck.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rkf45.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/step.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test.Po@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-pkgincludeHEADERS: $(pkginclude_HEADERS) + @$(NORMAL_INSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \ + done + +uninstall-pkgincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + else \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_PROGRAMS) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +test.log: test$(EXEEXT) + @p='test$(EXEEXT)'; \ + b='test'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +@am__EXEEXT_TRUE@.test$(EXEEXT).log: +@am__EXEEXT_TRUE@ @p='$<'; \ +@am__EXEEXT_TRUE@ $(am__set_b); \ +@am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +@am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ +@am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +@am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-am +all-am: Makefile $(LTLIBRARIES) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(pkgincludedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-pkgincludeHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-pkgincludeHEADERS + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES cscopelist-am ctags ctags-am distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-pkgincludeHEADERS \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + recheck tags tags-am uninstall uninstall-am \ + uninstall-pkgincludeHEADERS + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gsl-2.5/ode-initval/TODO b/gsl-2.5/ode-initval/TODO new file mode 100644 index 00000000..9baa4220 --- /dev/null +++ b/gsl-2.5/ode-initval/TODO @@ -0,0 +1,81 @@ +# -*- org -*- +#+CATEGORY: ode-initval + +* Add a higher level interface which accepts a + +start point, +end point, +result array (size N, y0, y1, y2 ... ,y(N-1)) +desired relative and absolute errors epsrel and epsabs + +it should have its own workspace which is a wrapper around the +existing workspaces + +* Implement other stepping methods from well-known packages such as +RKSUITE, VODE, DASSL, etc + +* Roundoff error needs to be taken into account to prevent the +step-size being made arbitrarily small + +* The entry below has been downgraded from a bug. We use the +coefficients given in the original paper by Prince and Dormand, and it +is true that these are inexact (the values in the paper are said to be +accurate 18 figures). If somebody publishes exact versions we will +use them, but at present it is better to stick with the published +versions of the coefficients them use our own. +---------------------------------------------------------------------- +BUG#8 -- inexact coefficients in rk8pd.c + +From: Luc Maisonobe +To: gsl-discuss@sources.redhat.com +Subject: further thoughts about Dormand-Prince 8 (RK8PD) +Date: Wed, 14 Aug 2002 10:50:49 +0200 + +I was looking for some references concerning Runge-Kutta methods when I +noticed GSL had an high order one. I also found a question in the list +archive (April 2002) about the references of this method which is +implemented in rk8pd.c. It was said the coefficients were taken from the +"Numerical Algorithms with C" book by Engeln-Mullges and Uhlig. + +I have checked the coefficients somewhat with a little java tool I have +developped (see http://www.spaceroots.org/archive.htm#RKCheckSoftware) +and found they were not exact. I think this method is really the method +that is already in rksuite (http://www.netlib.org/ode/rksuite/) were the +coefficients are given as real values with 30 decimal digits. The +coefficients have probably been approximated as fractions later on. +However, these approximations are not perfect, they are good only for +the first 16 or 18 digits depending on the coefficient. + +This has no consequence for practical purposes since they are stored in +double variables, but give a false impression of beeing exact +expressions. Well, there are even some coefficients that should really +be rational numbers but for which wrong numerators and denominators are +given. As an example, the first and fourth elements of the b7 array are +given as 29443841.0 / 614563906.0 and 77736538.0 / 692538347, hence the +sum off all elements of the b7 array (which should theoretically be +equal to ah[5]) only approximate this. For these two coefficients, this +could have been avoided using 215595617.0 / 4500000000.0 and +202047683.0 / 1800000000.0, which also looks more coherent with the +other coefficients. + +The rksuite comments say this method is described in this paper : + + High Order Embedded Runge-Kutta Formulae + P.J. Prince and J.R. Dormand + J. Comp. Appl. Math.,7, pp. 67-75, 1981 + +It also says the method is an 8(7) method (i.e. the coefficients set +used to advance integration is order 8 and error estimation is order 7). +If I use my tool to check the order, I am forced to check the order +conditions numerically with a tolerance since I do not have an exact +expression of the coefficients. Since even if some conditions are not +mathematically met, the residuals are small and could be below the +tolerance. There are tolerance values for which such numerical test +dedeuce the method is of order 9, as is said in GSL. However, I am not +convinced, there are to few parameters for the large number of order +conditions needed at order 9. + +I would suggest to correct the coefficients in rk8pd.c (just put the +literal constants of rksuite) and to add the reference to the article. + +---------------------------------------------------------------------- diff --git a/gsl-2.5/ode-initval/bsimp.c b/gsl-2.5/ode-initval/bsimp.c new file mode 100644 index 00000000..07fc2feb --- /dev/null +++ b/gsl-2.5/ode-initval/bsimp.c @@ -0,0 +1,567 @@ +/* ode-initval/bsimp.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2004 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Bulirsch-Stoer Implicit */ + +/* Author: G. Jungman + */ +/* Bader-Deuflhard implicit extrapolative stepper. + * [Numer. Math., 41, 373 (1983)] + */ +#include +#include +#include +#include +#include +#include +#include + +#include "odeiv_util.h" + +#define SEQUENCE_COUNT 8 +#define SEQUENCE_MAX 7 + +/* Bader-Deuflhard extrapolation sequence */ +static const int bd_sequence[SEQUENCE_COUNT] = + { 2, 6, 10, 14, 22, 34, 50, 70 }; + +typedef struct +{ + gsl_matrix *d; /* workspace for extrapolation */ + gsl_matrix *a_mat; /* workspace for linear system matrix */ + gsl_permutation *p_vec; /* workspace for LU permutation */ + + double x[SEQUENCE_MAX]; /* workspace for extrapolation */ + + /* state info */ + size_t k_current; + size_t k_choice; + double h_next; + double eps; + + /* workspace for extrapolation step */ + double *yp; + double *y_save; + double *yerr_save; + double *y_extrap_save; + double *y_extrap_sequence; + double *extrap_work; + double *dfdt; + double *y_temp; + double *delta_temp; + double *weight; + gsl_matrix *dfdy; + + /* workspace for the basic stepper */ + double *rhs_temp; + double *delta; + + /* order of last step */ + size_t order; +} +bsimp_state_t; + +/* Compute weighting factor */ + +static void +compute_weights (const double y[], double w[], size_t dim) +{ + size_t i; + for (i = 0; i < dim; i++) + { + double u = fabs(y[i]); + w[i] = (u > 0.0) ? u : 1.0; + } +} + +/* Calculate a choice for the "order" of the method, using the + * Deuflhard criteria. + */ + +static size_t +bsimp_deuf_kchoice (double eps, size_t dimension) +{ + const double safety_f = 0.25; + const double small_eps = safety_f * eps; + + double a_work[SEQUENCE_COUNT]; + double alpha[SEQUENCE_MAX][SEQUENCE_MAX]; + + int i, k; + + a_work[0] = bd_sequence[0] + 1.0; + + for (k = 0; k < SEQUENCE_MAX; k++) + { + a_work[k + 1] = a_work[k] + bd_sequence[k + 1]; + } + + for (i = 0; i < SEQUENCE_MAX; i++) + { + alpha[i][i] = 1.0; + for (k = 0; k < i; k++) + { + const double tmp1 = a_work[k + 1] - a_work[i + 1]; + const double tmp2 = (a_work[i + 1] - a_work[0] + 1.0) * (2 * k + 1); + alpha[k][i] = pow (small_eps, tmp1 / tmp2); + } + } + + a_work[0] += dimension; + + for (k = 0; k < SEQUENCE_MAX; k++) + { + a_work[k + 1] = a_work[k] + bd_sequence[k + 1]; + } + + for (k = 0; k < SEQUENCE_MAX - 1; k++) + { + if (a_work[k + 2] > a_work[k + 1] * alpha[k][k + 1]) + break; + } + + return k; +} + +static void +poly_extrap (gsl_matrix * d, + const double x[], + const unsigned int i_step, + const double x_i, + const double y_i[], + double y_0[], double y_0_err[], double work[], const size_t dim) +{ + size_t j, k; + + DBL_MEMCPY (y_0_err, y_i, dim); + DBL_MEMCPY (y_0, y_i, dim); + + if (i_step == 0) + { + for (j = 0; j < dim; j++) + { + gsl_matrix_set (d, 0, j, y_i[j]); + } + } + else + { + DBL_MEMCPY (work, y_i, dim); + + for (k = 0; k < i_step; k++) + { + double delta = 1.0 / (x[i_step - k - 1] - x_i); + const double f1 = delta * x_i; + const double f2 = delta * x[i_step - k - 1]; + + for (j = 0; j < dim; j++) + { + const double q_kj = gsl_matrix_get (d, k, j); + gsl_matrix_set (d, k, j, y_0_err[j]); + delta = work[j] - q_kj; + y_0_err[j] = f1 * delta; + work[j] = f2 * delta; + y_0[j] += y_0_err[j]; + } + } + + for (j = 0; j < dim; j++) + { + gsl_matrix_set (d, i_step, j, y_0_err[j]); + } + } +} + +/* Basic implicit Bulirsch-Stoer step. Divide the step h_total into + * n_step smaller steps and do the Bader-Deuflhard semi-implicit + * iteration. */ + +static int +bsimp_step_local (void *vstate, + size_t dim, + const double t0, + const double h_total, + const unsigned int n_step, + const double y[], + const double yp[], + const double dfdt[], + const gsl_matrix * dfdy, + double y_out[], + const gsl_odeiv_system * sys) +{ + bsimp_state_t *state = (bsimp_state_t *) vstate; + + gsl_matrix *const a_mat = state->a_mat; + gsl_permutation *const p_vec = state->p_vec; + + double *const delta = state->delta; + double *const y_temp = state->y_temp; + double *const delta_temp = state->delta_temp; + double *const rhs_temp = state->rhs_temp; + double *const w = state->weight; + + gsl_vector_view y_temp_vec = gsl_vector_view_array (y_temp, dim); + gsl_vector_view delta_temp_vec = gsl_vector_view_array (delta_temp, dim); + gsl_vector_view rhs_temp_vec = gsl_vector_view_array (rhs_temp, dim); + + const double h = h_total / n_step; + double t = t0 + h; + + double sum; + + /* This is the factor sigma referred to in equation 3.4 of the + paper. A relative change in y exceeding sigma indicates a + runaway behavior. According to the authors suitable values for + sigma are >>1. I have chosen a value of 100*dim. BJG */ + + const double max_sum = 100.0 * dim; + + int signum, status; + size_t i, j; + size_t n_inter; + + /* Calculate the matrix for the linear system. */ + for (i = 0; i < dim; i++) + { + for (j = 0; j < dim; j++) + { + gsl_matrix_set (a_mat, i, j, -h * gsl_matrix_get (dfdy, i, j)); + } + gsl_matrix_set (a_mat, i, i, gsl_matrix_get (a_mat, i, i) + 1.0); + } + + /* LU decomposition for the linear system. */ + + gsl_linalg_LU_decomp (a_mat, p_vec, &signum); + + /* Compute weighting factors */ + + compute_weights (y, w, dim); + + /* Initial step. */ + + for (i = 0; i < dim; i++) + { + y_temp[i] = h * (yp[i] + h * dfdt[i]); + } + + gsl_linalg_LU_solve (a_mat, p_vec, &y_temp_vec.vector, &delta_temp_vec.vector); + + sum = 0.0; + + for (i = 0; i < dim; i++) + { + const double di = delta_temp[i]; + delta[i] = di; + y_temp[i] = y[i] + di; + sum += fabs(di) / w[i]; + } + + if (sum > max_sum) + { + return GSL_EFAILED ; + } + + /* Intermediate steps. */ + + status = GSL_ODEIV_FN_EVAL (sys, t, y_temp, y_out); + + if (status) + { + return status; + } + + for (n_inter = 1; n_inter < n_step; n_inter++) + { + for (i = 0; i < dim; i++) + { + rhs_temp[i] = h * y_out[i] - delta[i]; + } + + gsl_linalg_LU_solve (a_mat, p_vec, &rhs_temp_vec.vector, &delta_temp_vec.vector); + + sum = 0.0; + + for (i = 0; i < dim; i++) + { + delta[i] += 2.0 * delta_temp[i]; + y_temp[i] += delta[i]; + sum += fabs(delta[i]) / w[i]; + } + + if (sum > max_sum) + { + return GSL_EFAILED ; + } + + t += h; + + status = GSL_ODEIV_FN_EVAL (sys, t, y_temp, y_out); + + if (status) + { + return status; + } + } + + + /* Final step. */ + + for (i = 0; i < dim; i++) + { + rhs_temp[i] = h * y_out[i] - delta[i]; + } + + gsl_linalg_LU_solve (a_mat, p_vec, &rhs_temp_vec.vector, &delta_temp_vec.vector); + + sum = 0.0; + + for (i = 0; i < dim; i++) + { + y_out[i] = y_temp[i] + delta_temp[i]; + sum += fabs(delta_temp[i]) / w[i]; + } + + if (sum > max_sum) + { + return GSL_EFAILED ; + } + + return GSL_SUCCESS; +} + + +static void * +bsimp_alloc (size_t dim) +{ + bsimp_state_t *state = (bsimp_state_t *) malloc (sizeof (bsimp_state_t)); + + state->d = gsl_matrix_alloc (SEQUENCE_MAX, dim); + state->a_mat = gsl_matrix_alloc (dim, dim); + state->p_vec = gsl_permutation_alloc (dim); + + state->yp = (double *) malloc (dim * sizeof (double)); + state->y_save = (double *) malloc (dim * sizeof (double)); + state->yerr_save = (double *) malloc (dim * sizeof (double)); + state->y_extrap_save = (double *) malloc (dim * sizeof (double)); + state->y_extrap_sequence = (double *) malloc (dim * sizeof (double)); + state->extrap_work = (double *) malloc (dim * sizeof (double)); + state->dfdt = (double *) malloc (dim * sizeof (double)); + state->y_temp = (double *) malloc (dim * sizeof (double)); + state->delta_temp = (double *) malloc (dim * sizeof(double)); + state->weight = (double *) malloc (dim * sizeof(double)); + + state->dfdy = gsl_matrix_alloc (dim, dim); + + state->rhs_temp = (double *) malloc (dim * sizeof(double)); + state->delta = (double *) malloc (dim * sizeof (double)); + + { + size_t k_choice = bsimp_deuf_kchoice (GSL_SQRT_DBL_EPSILON, dim); /*FIXME: choice of epsilon? */ + state->k_choice = k_choice; + state->k_current = k_choice; + state->order = 2 * k_choice; + } + + state->h_next = -GSL_SQRT_DBL_MAX; + + return state; +} + +/* Perform the basic semi-implicit extrapolation + * step, of size h, at a Deuflhard determined order. + */ +static int +bsimp_apply (void *vstate, + size_t dim, + double t, + double h, + double y[], + double yerr[], + const double dydt_in[], + double dydt_out[], + const gsl_odeiv_system * sys) +{ + bsimp_state_t *state = (bsimp_state_t *) vstate; + + double *const x = state->x; + double *const yp = state->yp; + double *const y_save = state->y_save; + double *const yerr_save = state->yerr_save; + double *const y_extrap_sequence = state->y_extrap_sequence; + double *const y_extrap_save = state->y_extrap_save; + double *const extrap_work = state->extrap_work; + double *const dfdt = state->dfdt; + gsl_matrix *d = state->d; + gsl_matrix *dfdy = state->dfdy; + + const double t_local = t; + size_t i, k; + + if (h + t_local == t_local) + { + return GSL_EUNDRFLW; /* FIXME: error condition */ + } + + DBL_MEMCPY (y_extrap_save, y, dim); + + /* Save inputs */ + DBL_MEMCPY (y_save, y, dim); + DBL_MEMCPY (yerr_save, yerr, dim); + + /* Evaluate the derivative. */ + if (dydt_in != NULL) + { + DBL_MEMCPY (yp, dydt_in, dim); + } + else + { + int s = GSL_ODEIV_FN_EVAL (sys, t_local, y, yp); + + if (s != GSL_SUCCESS) + { + return s; + } + } + + /* Evaluate the Jacobian for the system. */ + { + int s = GSL_ODEIV_JA_EVAL (sys, t_local, y, dfdy->data, dfdt); + + if (s != GSL_SUCCESS) + { + return s; + } + } + + /* Make a series of refined extrapolations, + * up to the specified maximum order, which + * was calculated based on the Deuflhard + * criterion upon state initialization. */ + for (k = 0; k <= state->k_current; k++) + { + const unsigned int N = bd_sequence[k]; + const double r = (h / N); + const double x_k = r * r; + + int status = bsimp_step_local (state, + dim, t_local, h, N, + y_extrap_save, yp, + dfdt, dfdy, + y_extrap_sequence, + sys); + + if (status == GSL_EFAILED) + { + /* If the local step fails, set the error to infinity in + order to force a reduction in the step size */ + + for (i = 0; i < dim; i++) + { + yerr[i] = GSL_POSINF; + } + + break; + } + + else if (status != GSL_SUCCESS) + { + return status; + } + + x[k] = x_k; + + poly_extrap (d, x, k, x_k, y_extrap_sequence, y, yerr, extrap_work, dim); + } + + /* Evaluate dydt_out[]. */ + + if (dydt_out != NULL) + { + int s = GSL_ODEIV_FN_EVAL (sys, t + h, y, dydt_out); + + if (s != GSL_SUCCESS) + { + DBL_MEMCPY (y, y_save, dim); + DBL_MEMCPY (yerr, yerr_save, dim); + return s; + } + } + + return GSL_SUCCESS; +} + +static unsigned int +bsimp_order (void *vstate) +{ + bsimp_state_t *state = (bsimp_state_t *) vstate; + return state->order; +} + +static int +bsimp_reset (void *vstate, size_t dim) +{ + bsimp_state_t *state = (bsimp_state_t *) vstate; + + state->h_next = 0; + + DBL_ZERO_MEMSET (state->yp, dim); + + return GSL_SUCCESS; +} + + +static void +bsimp_free (void * vstate) +{ + bsimp_state_t *state = (bsimp_state_t *) vstate; + + free (state->delta); + free (state->rhs_temp); + + gsl_matrix_free (state->dfdy); + + free (state->weight); + free (state->delta_temp); + free (state->y_temp); + free (state->dfdt); + free (state->extrap_work); + free (state->y_extrap_sequence); + free (state->y_extrap_save); + free (state->y_save); + free (state->yerr_save); + free (state->yp); + + gsl_permutation_free (state->p_vec); + gsl_matrix_free (state->a_mat); + gsl_matrix_free (state->d); + free (state); +} + +static const gsl_odeiv_step_type bsimp_type = { + "bsimp", /* name */ + 1, /* can use dydt_in */ + 1, /* gives exact dydt_out */ + &bsimp_alloc, + &bsimp_apply, + &bsimp_reset, + &bsimp_order, + &bsimp_free +}; + +const gsl_odeiv_step_type *gsl_odeiv_step_bsimp = &bsimp_type; diff --git a/gsl-2.5/ode-initval/bsimp.lo b/gsl-2.5/ode-initval/bsimp.lo new file mode 100644 index 00000000..7c4a9f7d --- /dev/null +++ b/gsl-2.5/ode-initval/bsimp.lo @@ -0,0 +1,12 @@ +# bsimp.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/bsimp.o' + +# Name of the non-PIC object +non_pic_object='bsimp.o' + diff --git a/gsl-2.5/ode-initval/control.c b/gsl-2.5/ode-initval/control.c new file mode 100644 index 00000000..2a802f78 --- /dev/null +++ b/gsl-2.5/ode-initval/control.c @@ -0,0 +1,81 @@ +/* ode-initval/control.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ + +#include +#include +#include +#include +#include + +gsl_odeiv_control * +gsl_odeiv_control_alloc(const gsl_odeiv_control_type * T) +{ + gsl_odeiv_control * c = + (gsl_odeiv_control *) malloc(sizeof(gsl_odeiv_control)); + + if(c == 0) + { + GSL_ERROR_NULL ("failed to allocate space for control struct", + GSL_ENOMEM); + }; + + c->type = T; + c->state = c->type->alloc(); + + if (c->state == 0) + { + free (c); /* exception in constructor, avoid memory leak */ + + GSL_ERROR_NULL ("failed to allocate space for control state", + GSL_ENOMEM); + }; + + return c; +} + +int +gsl_odeiv_control_init(gsl_odeiv_control * c, + double eps_abs, double eps_rel, + double a_y, double a_dydt) +{ + return c->type->init (c->state, eps_abs, eps_rel, a_y, a_dydt); +} + +void +gsl_odeiv_control_free(gsl_odeiv_control * c) +{ + RETURN_IF_NULL (c); + c->type->free(c->state); + free(c); +} + +const char * +gsl_odeiv_control_name(const gsl_odeiv_control * c) +{ + return c->type->name; +} + +int +gsl_odeiv_control_hadjust (gsl_odeiv_control * c, gsl_odeiv_step * s, const double y[], const double yerr[], const double dydt[], double * h) +{ + return c->type->hadjust(c->state, s->dimension, s->type->order(s->state), + y, yerr, dydt, h); +} diff --git a/gsl-2.5/ode-initval/control.lo b/gsl-2.5/ode-initval/control.lo new file mode 100644 index 00000000..e3adaf89 --- /dev/null +++ b/gsl-2.5/ode-initval/control.lo @@ -0,0 +1,12 @@ +# control.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/control.o' + +# Name of the non-PIC object +non_pic_object='control.o' + diff --git a/gsl-2.5/ode-initval/cscal.c b/gsl-2.5/ode-initval/cscal.c new file mode 100644 index 00000000..f48d2abf --- /dev/null +++ b/gsl-2.5/ode-initval/cscal.c @@ -0,0 +1,193 @@ +/* ode-initval/cscal.c + * + * Copyright (C) 2002, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include +#include + +typedef struct +{ + double eps_abs; + double eps_rel; + double a_y; + double a_dydt; + double * scale_abs; +} +sc_control_state_t; + +static void * +sc_control_alloc (void) +{ + sc_control_state_t * s = + (sc_control_state_t *) malloc (sizeof(sc_control_state_t)); + + if (s == 0) + { + GSL_ERROR_NULL ("failed to allocate space for sc_control_state", + GSL_ENOMEM); + } + + return s; +} + +static int +sc_control_init (void * vstate, + double eps_abs, double eps_rel, double a_y, double a_dydt) +{ + sc_control_state_t * s = (sc_control_state_t *) vstate; + + if (eps_abs < 0) + { + GSL_ERROR ("eps_abs is negative", GSL_EINVAL); + } + else if (eps_rel < 0) + { + GSL_ERROR ("eps_rel is negative", GSL_EINVAL); + } + else if (a_y < 0) + { + GSL_ERROR ("a_y is negative", GSL_EINVAL); + } + else if (a_dydt < 0) + { + GSL_ERROR ("a_dydt is negative", GSL_EINVAL); + } + + s->eps_rel = eps_rel; + s->eps_abs = eps_abs; + s->a_y = a_y; + s->a_dydt = a_dydt; + + return GSL_SUCCESS; +} + +static int +sc_control_hadjust(void * vstate, size_t dim, unsigned int ord, const double y[], const double yerr[], const double yp[], double * h) +{ + sc_control_state_t *state = (sc_control_state_t *) vstate; + + const double eps_abs = state->eps_abs; + const double eps_rel = state->eps_rel; + const double a_y = state->a_y; + const double a_dydt = state->a_dydt; + const double * scale_abs = state->scale_abs; + + const double S = 0.9; + const double h_old = *h; + + double rmax = DBL_MIN; + size_t i; + + for(i=0; i 1.1) { + /* decrease step, no more than factor of 5, but a fraction S more + than scaling suggests (for better accuracy) */ + double r = S / pow(rmax, 1.0/ord); + + if (r < 0.2) + r = 0.2; + + *h = r * h_old; + + return GSL_ODEIV_HADJ_DEC; + } + else if(rmax < 0.5) { + /* increase step, no more than factor of 5 */ + double r = S / pow(rmax, 1.0/(ord+1.0)); + + if (r > 5.0) + r = 5.0; + + if (r < 1.0) /* don't allow any decrease caused by S<1 */ + r = 1.0; + + *h = r * h_old; + + return GSL_ODEIV_HADJ_INC; + } + else { + /* no change */ + return GSL_ODEIV_HADJ_NIL; + } +} + + +static void +sc_control_free (void * vstate) +{ + sc_control_state_t *state = (sc_control_state_t *) vstate; + free (state->scale_abs); + free (state); +} + +static const gsl_odeiv_control_type sc_control_type = +{"scaled", /* name */ + &sc_control_alloc, + &sc_control_init, + &sc_control_hadjust, + &sc_control_free}; + +const gsl_odeiv_control_type *gsl_odeiv_control_scaled = &sc_control_type; + + +gsl_odeiv_control * +gsl_odeiv_control_scaled_new(double eps_abs, double eps_rel, + double a_y, double a_dydt, + const double scale_abs[], + size_t dim) +{ + gsl_odeiv_control * c = + gsl_odeiv_control_alloc (gsl_odeiv_control_scaled); + + int status = gsl_odeiv_control_init (c, eps_abs, eps_rel, a_y, a_dydt); + + if (status != GSL_SUCCESS) + { + gsl_odeiv_control_free (c); + GSL_ERROR_NULL ("error trying to initialize control", status); + } + + { + sc_control_state_t * s = (sc_control_state_t *) c->state; + + s->scale_abs = (double *)malloc(dim * sizeof(double)); + + if (s->scale_abs == 0) + { + free (s); + GSL_ERROR_NULL ("failed to allocate space for scale_abs", + GSL_ENOMEM); + } + + memcpy(s->scale_abs, scale_abs, dim * sizeof(double)); + } + + return c; +} diff --git a/gsl-2.5/ode-initval/cscal.lo b/gsl-2.5/ode-initval/cscal.lo new file mode 100644 index 00000000..530a9e66 --- /dev/null +++ b/gsl-2.5/ode-initval/cscal.lo @@ -0,0 +1,12 @@ +# cscal.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/cscal.o' + +# Name of the non-PIC object +non_pic_object='cscal.o' + diff --git a/gsl-2.5/ode-initval/cstd.c b/gsl-2.5/ode-initval/cstd.c new file mode 100644 index 00000000..53108b0e --- /dev/null +++ b/gsl-2.5/ode-initval/cstd.c @@ -0,0 +1,184 @@ +/* ode-initval/cstd.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include + +typedef struct +{ + double eps_abs; + double eps_rel; + double a_y; + double a_dydt; +} +std_control_state_t; + +static void * +std_control_alloc (void) +{ + std_control_state_t * s = + (std_control_state_t *) malloc (sizeof(std_control_state_t)); + + if (s == 0) + { + GSL_ERROR_NULL ("failed to allocate space for std_control_state", + GSL_ENOMEM); + } + + return s; +} + +static int +std_control_init (void * vstate, + double eps_abs, double eps_rel, double a_y, double a_dydt) +{ + std_control_state_t * s = (std_control_state_t *) vstate; + + if (eps_abs < 0) + { + GSL_ERROR ("eps_abs is negative", GSL_EINVAL); + } + else if (eps_rel < 0) + { + GSL_ERROR ("eps_rel is negative", GSL_EINVAL); + } + else if (a_y < 0) + { + GSL_ERROR ("a_y is negative", GSL_EINVAL); + } + else if (a_dydt < 0) + { + GSL_ERROR ("a_dydt is negative", GSL_EINVAL); + } + + s->eps_rel = eps_rel; + s->eps_abs = eps_abs; + s->a_y = a_y; + s->a_dydt = a_dydt; + + return GSL_SUCCESS; +} + +static int +std_control_hadjust(void * vstate, size_t dim, unsigned int ord, const double y[], const double yerr[], const double yp[], double * h) +{ + std_control_state_t *state = (std_control_state_t *) vstate; + + const double eps_abs = state->eps_abs; + const double eps_rel = state->eps_rel; + const double a_y = state->a_y; + const double a_dydt = state->a_dydt; + + const double S = 0.9; + const double h_old = *h; + + double rmax = DBL_MIN; + size_t i; + + for(i=0; i 1.1) { + /* decrease step, no more than factor of 5, but a fraction S more + than scaling suggests (for better accuracy) */ + double r = S / pow(rmax, 1.0/ord); + + if (r < 0.2) + r = 0.2; + + *h = r * h_old; + + return GSL_ODEIV_HADJ_DEC; + } + else if(rmax < 0.5) { + /* increase step, no more than factor of 5 */ + double r = S / pow(rmax, 1.0/(ord+1.0)); + + if (r > 5.0) + r = 5.0; + + if (r < 1.0) /* don't allow any decrease caused by S<1 */ + r = 1.0; + + *h = r * h_old; + + return GSL_ODEIV_HADJ_INC; + } + else { + /* no change */ + return GSL_ODEIV_HADJ_NIL; + } +} + + +static void +std_control_free (void * vstate) +{ + std_control_state_t *state = (std_control_state_t *) vstate; + free (state); +} + +static const gsl_odeiv_control_type std_control_type = +{"standard", /* name */ + &std_control_alloc, + &std_control_init, + &std_control_hadjust, + &std_control_free}; + +const gsl_odeiv_control_type *gsl_odeiv_control_standard = &std_control_type; + + +gsl_odeiv_control * +gsl_odeiv_control_standard_new(double eps_abs, double eps_rel, + double a_y, double a_dydt) +{ + gsl_odeiv_control * c = + gsl_odeiv_control_alloc (gsl_odeiv_control_standard); + + int status = gsl_odeiv_control_init (c, eps_abs, eps_rel, a_y, a_dydt); + + if (status != GSL_SUCCESS) + { + gsl_odeiv_control_free (c); + GSL_ERROR_NULL ("error trying to initialize control", status); + } + + return c; +} + +gsl_odeiv_control * +gsl_odeiv_control_y_new(double eps_abs, double eps_rel) +{ + return gsl_odeiv_control_standard_new(eps_abs, eps_rel, 1.0, 0.0); +} + + +gsl_odeiv_control * +gsl_odeiv_control_yp_new(double eps_abs, double eps_rel) +{ + return gsl_odeiv_control_standard_new(eps_abs, eps_rel, 0.0, 1.0); +} diff --git a/gsl-2.5/ode-initval/cstd.lo b/gsl-2.5/ode-initval/cstd.lo new file mode 100644 index 00000000..4e25aec2 --- /dev/null +++ b/gsl-2.5/ode-initval/cstd.lo @@ -0,0 +1,12 @@ +# cstd.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/cstd.o' + +# Name of the non-PIC object +non_pic_object='cstd.o' + diff --git a/gsl-2.5/ode-initval/evolve.c b/gsl-2.5/ode-initval/evolve.c new file mode 100644 index 00000000..d61842a3 --- /dev/null +++ b/gsl-2.5/ode-initval/evolve.c @@ -0,0 +1,236 @@ +/* ode-initval/evolve.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman + */ +#include +#include +#include +#include +#include +#include + +#include "odeiv_util.h" + +gsl_odeiv_evolve * +gsl_odeiv_evolve_alloc (size_t dim) +{ + gsl_odeiv_evolve *e = + (gsl_odeiv_evolve *) malloc (sizeof (gsl_odeiv_evolve)); + + if (e == 0) + { + GSL_ERROR_NULL ("failed to allocate space for evolve struct", + GSL_ENOMEM); + } + + e->y0 = (double *) malloc (dim * sizeof (double)); + + if (e->y0 == 0) + { + free (e); + GSL_ERROR_NULL ("failed to allocate space for y0", GSL_ENOMEM); + } + + e->yerr = (double *) malloc (dim * sizeof (double)); + + if (e->yerr == 0) + { + free (e->y0); + free (e); + GSL_ERROR_NULL ("failed to allocate space for yerr", GSL_ENOMEM); + } + + e->dydt_in = (double *) malloc (dim * sizeof (double)); + + if (e->dydt_in == 0) + { + free (e->yerr); + free (e->y0); + free (e); + GSL_ERROR_NULL ("failed to allocate space for dydt_in", GSL_ENOMEM); + } + + e->dydt_out = (double *) malloc (dim * sizeof (double)); + + if (e->dydt_out == 0) + { + free (e->dydt_in); + free (e->yerr); + free (e->y0); + free (e); + GSL_ERROR_NULL ("failed to allocate space for dydt_out", GSL_ENOMEM); + } + + e->dimension = dim; + e->count = 0; + e->failed_steps = 0; + e->last_step = 0.0; + + return e; +} + +int +gsl_odeiv_evolve_reset (gsl_odeiv_evolve * e) +{ + e->count = 0; + e->failed_steps = 0; + e->last_step = 0.0; + return GSL_SUCCESS; +} + +void +gsl_odeiv_evolve_free (gsl_odeiv_evolve * e) +{ + RETURN_IF_NULL (e); + free (e->dydt_out); + free (e->dydt_in); + free (e->yerr); + free (e->y0); + free (e); +} + +/* Evolution framework method. + * + * Uses an adaptive step control object + */ +int +gsl_odeiv_evolve_apply (gsl_odeiv_evolve * e, + gsl_odeiv_control * con, + gsl_odeiv_step * step, + const gsl_odeiv_system * dydt, + double *t, double t1, double *h, double y[]) +{ + const double t0 = *t; + double h0 = *h; + int step_status; + int final_step = 0; + double dt = t1 - t0; /* remaining time, possibly less than h */ + + if (e->dimension != step->dimension) + { + GSL_ERROR ("step dimension must match evolution size", GSL_EINVAL); + } + + if ((dt < 0.0 && h0 > 0.0) || (dt > 0.0 && h0 < 0.0)) + { + GSL_ERROR ("step direction must match interval direction", GSL_EINVAL); + } + + /* No need to copy if we cannot control the step size. */ + + if (con != NULL) + { + DBL_MEMCPY (e->y0, y, e->dimension); + } + + /* Calculate initial dydt once if the method can benefit. */ + + if (step->type->can_use_dydt_in) + { + int status = GSL_ODEIV_FN_EVAL (dydt, t0, y, e->dydt_in); + + if (status) + { + return status; + } + } + +try_step: + + if ((dt >= 0.0 && h0 > dt) || (dt < 0.0 && h0 < dt)) + { + h0 = dt; + final_step = 1; + } + else + { + final_step = 0; + } + + if (step->type->can_use_dydt_in) + { + step_status = + gsl_odeiv_step_apply (step, t0, h0, y, e->yerr, e->dydt_in, + e->dydt_out, dydt); + } + else + { + step_status = + gsl_odeiv_step_apply (step, t0, h0, y, e->yerr, NULL, e->dydt_out, + dydt); + } + + /* Check for stepper internal failure */ + + if (step_status != GSL_SUCCESS) + { + *h = h0; /* notify user of step-size which caused the failure */ + *t = t0; /* restore original t value */ + return step_status; + } + + e->count++; + e->last_step = h0; + + if (final_step) + { + *t = t1; + } + else + { + *t = t0 + h0; + } + + if (con != NULL) + { + /* Check error and attempt to adjust the step. */ + + double h_old = h0; + + const int hadjust_status + = gsl_odeiv_control_hadjust (con, step, y, e->yerr, e->dydt_out, &h0); + + if (hadjust_status == GSL_ODEIV_HADJ_DEC) + { + /* Check that the reported status is correct (i.e. an actual + decrease in h0 occured) and the suggested h0 will change + the time by at least 1 ulp */ + + double t_curr = GSL_COERCE_DBL(*t); + double t_next = GSL_COERCE_DBL((*t) + h0); + + if (fabs(h0) < fabs(h_old) && t_next != t_curr) + { + /* Step was decreased. Undo step, and try again with new h0. */ + DBL_MEMCPY (y, e->y0, dydt->dimension); + e->failed_steps++; + goto try_step; + } + else + { + h0 = h_old; /* keep current step size */ + } + } + } + + *h = h0; /* suggest step size for next time-step */ + + return step_status; +} diff --git a/gsl-2.5/ode-initval/evolve.lo b/gsl-2.5/ode-initval/evolve.lo new file mode 100644 index 00000000..34fe9524 --- /dev/null +++ b/gsl-2.5/ode-initval/evolve.lo @@ -0,0 +1,12 @@ +# evolve.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/evolve.o' + +# Name of the non-PIC object +non_pic_object='evolve.o' + diff --git a/gsl-2.5/ode-initval/gear1.c b/gsl-2.5/ode-initval/gear1.c new file mode 100644 index 00000000..1111bd3f --- /dev/null +++ b/gsl-2.5/ode-initval/gear1.c @@ -0,0 +1,272 @@ +/* ode-initval/gear1.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Gear 1. This is the implicit Euler a.k.a backward Euler method. */ + +/* Author: G. Jungman + */ + +/* Error estimation by step doubling, see eg. Ascher, U.M., Petzold, + L.R., Computer methods for ordinary differential and + differential-algebraic equations, SIAM, Philadelphia, 1998. + The method is also described in eg. this reference. +*/ + +#include +#include +#include +#include +#include +#include + +#include "odeiv_util.h" + +typedef struct +{ + double *k; + double *y0; + double *y0_orig; + double *y_onestep; +} +gear1_state_t; + +static void * +gear1_alloc (size_t dim) +{ + gear1_state_t *state = (gear1_state_t *) malloc (sizeof (gear1_state_t)); + + if (state == 0) + { + GSL_ERROR_NULL ("failed to allocate space for gear1_state", GSL_ENOMEM); + } + + state->k = (double *) malloc (dim * sizeof (double)); + + if (state->k == 0) + { + free (state); + GSL_ERROR_NULL ("failed to allocate space for k", GSL_ENOMEM); + } + + state->y0 = (double *) malloc (dim * sizeof (double)); + + if (state->y0 == 0) + { + free (state->k); + free (state); + GSL_ERROR_NULL ("failed to allocate space for y0", GSL_ENOMEM); + } + + state->y0_orig = (double *) malloc (dim * sizeof (double)); + + if (state->y0_orig == 0) + { + free (state->y0); + free (state->k); + free (state); + GSL_ERROR_NULL ("failed to allocate space for y0_orig", GSL_ENOMEM); + } + + state->y_onestep = (double *) malloc (dim * sizeof (double)); + + if (state->y_onestep == 0) + { + free (state->y0_orig); + free (state->y0); + free (state->k); + free (state); + GSL_ERROR_NULL ("failed to allocate space for y_onestep", GSL_ENOMEM); + } + + return state; +} + +static int +gear1_step (double *y, gear1_state_t *state, + const double h, const double t, + const size_t dim, const gsl_odeiv_system *sys) +{ + /* Makes an implicit Euler advance with step size h. + y0 is the initial values of variables y. + + The implicit matrix equations to solve are: + + k = y0 + h * f(t + h, k) + + y = y0 + h * f(t + h, k) + */ + + const int iter_steps = 3; + int nu; + size_t i; + double *y0 = state->y0; + double *k = state->k; + + /* Iterative solution of k = y0 + h * f(t + h, k) + + Note: This method does not check for convergence of the + iterative solution! + */ + + for (nu = 0; nu < iter_steps; nu++) + { + int s = GSL_ODEIV_FN_EVAL(sys, t + h, y, k); + + if (s != GSL_SUCCESS) + { + return s; + } + + for (i=0; iy0; + double *y0_orig = state->y0_orig; + double *y_onestep = state->y_onestep; + + /* initialization */ + DBL_MEMCPY(y0, y, dim); + + /* Save initial values for possible failures */ + DBL_MEMCPY (y0_orig, y, dim); + + /* First traverse h with one step (save to y_onestep) */ + DBL_MEMCPY (y_onestep, y, dim); + + { + int s = gear1_step (y_onestep, state, h, t, dim, sys); + + if (s != GSL_SUCCESS) + { + return s; + } + } + + /* Then with two steps with half step length (save to y) */ + { + int s = gear1_step (y, state, h / 2.0, t, dim, sys); + + if (s != GSL_SUCCESS) + { + /* Restore original y vector */ + DBL_MEMCPY (y, y0_orig, dim); + return s; + } + } + + DBL_MEMCPY (y0, y, dim); + + { + int s = gear1_step (y, state, h / 2.0, t + h / 2.0, dim, sys); + + if (s != GSL_SUCCESS) + { + /* Restore original y vector */ + DBL_MEMCPY (y, y0_orig, dim); + return s; + } + } + + /* Cleanup update */ + + if (dydt_out != NULL) + { + int s = GSL_ODEIV_FN_EVAL (sys, t + h, y, dydt_out); + + if (s != GSL_SUCCESS) + { + /* Restore original y vector */ + DBL_MEMCPY (y, y0_orig, dim); + return s; + } + } + + /* Error estimation */ + + for (i = 0; i < dim; i++) + { + yerr[i] = 4.0 * (y[i] - y_onestep[i]); + } + + return GSL_SUCCESS; +} + +static int +gear1_reset (void *vstate, size_t dim) +{ + gear1_state_t *state = (gear1_state_t *) vstate; + + DBL_ZERO_MEMSET (state->y_onestep, dim); + DBL_ZERO_MEMSET (state->y0_orig, dim); + DBL_ZERO_MEMSET (state->y0, dim); + DBL_ZERO_MEMSET (state->k, dim); + return GSL_SUCCESS; +} + +static unsigned int +gear1_order (void *vstate) +{ + gear1_state_t *state = (gear1_state_t *) vstate; + state = 0; /* prevent warnings about unused parameters */ + return 1; +} + +static void +gear1_free (void *vstate) +{ + gear1_state_t *state = (gear1_state_t *) vstate; + free (state->y_onestep); + free (state->y0_orig); + free (state->y0); + free (state->k); + free (state); +} + +static const gsl_odeiv_step_type gear1_type = { "gear1", /* name */ + 0, /* can use dydt_in? */ + 1, /* gives exact dydt_out? */ + &gear1_alloc, + &gear1_apply, + &gear1_reset, + &gear1_order, + &gear1_free +}; + +const gsl_odeiv_step_type *gsl_odeiv_step_gear1 = &gear1_type; diff --git a/gsl-2.5/ode-initval/gear1.lo b/gsl-2.5/ode-initval/gear1.lo new file mode 100644 index 00000000..23f3f914 --- /dev/null +++ b/gsl-2.5/ode-initval/gear1.lo @@ -0,0 +1,12 @@ +# gear1.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/gear1.o' + +# Name of the non-PIC object +non_pic_object='gear1.o' + diff --git a/gsl-2.5/ode-initval/gear2.c b/gsl-2.5/ode-initval/gear2.c new file mode 100644 index 00000000..f27b2f3e --- /dev/null +++ b/gsl-2.5/ode-initval/gear2.c @@ -0,0 +1,347 @@ +/* ode-initval/gear2.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Gear 2 */ + +/* Author: G. Jungman + */ +#include +#include +#include +#include +#include +#include "odeiv_util.h" +#include + + +/* gear2 state object */ +typedef struct +{ + int primed; /* flag indicating that yim1 is ready */ + double t_primed; /* system was primed for this value of t */ + double last_h; /* last step size */ + gsl_odeiv_step *primer; /* stepper to use for priming */ + double *yim1; /* y_{i-1} */ + double *k; /* work space */ + double *y0; /* work space */ + double *y0_orig; + double *y_onestep; + int stutter; +} +gear2_state_t; + +static void * +gear2_alloc (size_t dim) +{ + gear2_state_t *state = (gear2_state_t *) malloc (sizeof (gear2_state_t)); + + if (state == 0) + { + GSL_ERROR_NULL ("failed to allocate space for gear2_state", GSL_ENOMEM); + } + + state->yim1 = (double *) malloc (dim * sizeof (double)); + + if (state->yim1 == 0) + { + free (state); + GSL_ERROR_NULL ("failed to allocate space for yim1", GSL_ENOMEM); + } + + state->k = (double *) malloc (dim * sizeof (double)); + + if (state->k == 0) + { + free (state->yim1); + free (state); + GSL_ERROR_NULL ("failed to allocate space for k", GSL_ENOMEM); + } + + state->y0 = (double *) malloc (dim * sizeof (double)); + + if (state->y0 == 0) + { + free (state->k); + free (state->yim1); + free (state); + GSL_ERROR_NULL ("failed to allocate space for y0", GSL_ENOMEM); + } + + state->y0_orig = (double *) malloc (dim * sizeof (double)); + + if (state->y0_orig == 0) + { + free (state->y0); + free (state->k); + free (state->yim1); + free (state); + GSL_ERROR_NULL ("failed to allocate space for y0_orig", GSL_ENOMEM); + } + + state->y_onestep = (double *) malloc (dim * sizeof (double)); + + if (state->y_onestep == 0) + { + free (state->y0_orig); + free (state->y0); + free (state->k); + free (state->yim1); + free (state); + GSL_ERROR_NULL ("failed to allocate space for y0_orig", GSL_ENOMEM); + } + + state->primed = 0; + state->primer = gsl_odeiv_step_alloc (gsl_odeiv_step_rk4imp, dim); + + if (state->primer == 0) + { + free (state->y_onestep); + free (state->y0_orig); + free (state->y0); + free (state->k); + free (state->yim1); + free (state); + GSL_ERROR_NULL ("failed to allocate space for primer", GSL_ENOMEM); + } + + state->last_h = 0.0; + + return state; +} + +static int +gear2_step (double *y, gear2_state_t * state, + const double h, const double t, + const size_t dim, const gsl_odeiv_system * sys) +{ + /* Makes a Gear2 advance with step size h. + y0 is the initial values of variables y. + The implicit matrix equations to solve are: + k = y0 + h * f(t + h, k) + y = y0 + h * f(t + h, k) + */ + + const int iter_steps = 3; + int nu; + size_t i; + double *y0 = state->y0; + double *yim1 = state->yim1; + double *k = state->k; + + /* Iterative solution of k = y0 + h * f(t + h, k) + Note: This method does not check for convergence of the + iterative solution! + */ + + for (nu = 0; nu < iter_steps; nu++) + { + int s = GSL_ODEIV_FN_EVAL (sys, t + h, y, k); + + if (s != GSL_SUCCESS) + { + return s; + } + + for (i = 0; i < dim; i++) + { + y[i] = ((4.0 * y0[i] - yim1[i]) + 2.0 * h * k[i]) / 3.0; + } + } + + return GSL_SUCCESS; +} + +static int +gear2_apply (void *vstate, + size_t dim, + double t, + double h, + double y[], + double yerr[], + const double dydt_in[], + double dydt_out[], const gsl_odeiv_system * sys) +{ + gear2_state_t *state = (gear2_state_t *) vstate; + + state->stutter = 0; + + if (state->primed == 0 || t == state->t_primed || h != state->last_h) + { + /* Execute a single-step method to prime the process. Note that + * we do this if the step size changes, so frequent step size + * changes will cause the method to stutter. + * + * Note that we reuse this method if the time has not changed, + * which can occur when the adaptive driver is attempting to find + * an appropriate step-size on its first iteration */ + + int status; + DBL_MEMCPY (state->yim1, y, dim); + + status = + gsl_odeiv_step_apply (state->primer, t, h, y, yerr, dydt_in, dydt_out, + sys); + + /* Make note of step size and indicate readiness for a Gear step. */ + + state->primed = 1; + state->t_primed = t; + state->last_h = h; + state->stutter = 1; + + return status; + } + else + { + /* We have a previous y value in the buffer, and the step + * sizes match, so we go ahead with the Gear step. + */ + + double *const k = state->k; + double *const y0 = state->y0; + double *const y0_orig = state->y0_orig; + double *const yim1 = state->yim1; + double *y_onestep = state->y_onestep; + + int s; + size_t i; + + /* initialization */ + DBL_MEMCPY (y0, y, dim); + + /* Save initial values for possible failures */ + DBL_MEMCPY (y0_orig, y, dim); + + /* iterative solution */ + + if (dydt_out != NULL) + { + DBL_MEMCPY (k, dydt_out, dim); + } + + /* First traverse h with one step (save to y_onestep) */ + + DBL_MEMCPY (y_onestep, y, dim); + + s = gear2_step (y_onestep, state, h, t, dim, sys); + + if (s != GSL_SUCCESS) + { + return s; + } + + /* Then with two steps with half step length (save to y) */ + + s = gear2_step (y, state, h / 2.0, t, dim, sys); + + if (s != GSL_SUCCESS) + { + /* Restore original y vector */ + DBL_MEMCPY (y, y0_orig, dim); + return s; + } + + DBL_MEMCPY (y0, y, dim); + + s = gear2_step (y, state, h / 2.0, t + h / 2.0, dim, sys); + + if (s != GSL_SUCCESS) + { + /* Restore original y vector */ + DBL_MEMCPY (y, y0_orig, dim); + return s; + } + + /* Cleanup update */ + + if (dydt_out != NULL) + { + s = GSL_ODEIV_FN_EVAL (sys, t + h, y, dydt_out); + + if (s != GSL_SUCCESS) + { + /* Restore original y vector */ + DBL_MEMCPY (y, y0_orig, dim); + return s; + } + } + + /* Estimate error and update the state buffer. */ + + for (i = 0; i < dim; i++) + { + yerr[i] = 4.0 * (y[i] - y_onestep[i]); + yim1[i] = y0[i]; + } + + /* Make note of step size. */ + state->last_h = h; + + return 0; + } +} + +static int +gear2_reset (void *vstate, size_t dim) +{ + gear2_state_t *state = (gear2_state_t *) vstate; + + DBL_ZERO_MEMSET (state->yim1, dim); + DBL_ZERO_MEMSET (state->k, dim); + DBL_ZERO_MEMSET (state->y0, dim); + + state->primed = 0; + state->last_h = 0.0; + return GSL_SUCCESS; +} + +static unsigned int +gear2_order (void *vstate) +{ + gear2_state_t *state = (gear2_state_t *) vstate; + state = 0; /* prevent warnings about unused parameters */ + return 3; +} + +static void +gear2_free (void *vstate) +{ + gear2_state_t *state = (gear2_state_t *) vstate; + + free (state->yim1); + free (state->k); + free (state->y0); + free (state->y0_orig); + free (state->y_onestep); + gsl_odeiv_step_free (state->primer); + + free (state); +} + +static const gsl_odeiv_step_type gear2_type = { "gear2", /* name */ + 1, /* can use dydt_in */ + 0, /* gives exact dydt_out */ + &gear2_alloc, + &gear2_apply, + &gear2_reset, + &gear2_order, + &gear2_free +}; + +const gsl_odeiv_step_type *gsl_odeiv_step_gear2 = &gear2_type; diff --git a/gsl-2.5/ode-initval/gear2.lo b/gsl-2.5/ode-initval/gear2.lo new file mode 100644 index 00000000..340a0f0d --- /dev/null +++ b/gsl-2.5/ode-initval/gear2.lo @@ -0,0 +1,12 @@ +# gear2.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/gear2.o' + +# Name of the non-PIC object +non_pic_object='gear2.o' + diff --git a/gsl-2.5/ode-initval/gsl_odeiv.h b/gsl-2.5/ode-initval/gsl_odeiv.h new file mode 100644 index 00000000..d70f1501 --- /dev/null +++ b/gsl-2.5/ode-initval/gsl_odeiv.h @@ -0,0 +1,230 @@ +/* ode-initval/gsl_odeiv.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman + */ +#ifndef __GSL_ODEIV_H__ +#define __GSL_ODEIV_H__ + +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + + +/* Description of a system of ODEs. + * + * y' = f(t,y) = dydt(t, y) + * + * The system is specified by giving the right-hand-side + * of the equation and possibly a jacobian function. + * + * Some methods require the jacobian function, which calculates + * the matrix dfdy and the vector dfdt. The matrix dfdy conforms + * to the GSL standard, being a continuous range of floating point + * values, in row-order. + * + * As with GSL function objects, user-supplied parameter + * data is also present. + */ + +typedef struct +{ + int (* function) (double t, const double y[], double dydt[], void * params); + int (* jacobian) (double t, const double y[], double * dfdy, double dfdt[], void * params); + size_t dimension; + void * params; +} +gsl_odeiv_system; + +#define GSL_ODEIV_FN_EVAL(S,t,y,f) (*((S)->function))(t,y,f,(S)->params) +#define GSL_ODEIV_JA_EVAL(S,t,y,dfdy,dfdt) (*((S)->jacobian))(t,y,dfdy,dfdt,(S)->params) + + +/* General stepper object. + * + * Opaque object for stepping an ODE system from t to t+h. + * In general the object has some state which facilitates + * iterating the stepping operation. + */ + +typedef struct +{ + const char * name; + int can_use_dydt_in; + int gives_exact_dydt_out; + void * (*alloc) (size_t dim); + int (*apply) (void * state, size_t dim, double t, double h, double y[], double yerr[], const double dydt_in[], double dydt_out[], const gsl_odeiv_system * dydt); + int (*reset) (void * state, size_t dim); + unsigned int (*order) (void * state); + void (*free) (void * state); +} +gsl_odeiv_step_type; + +typedef struct { + const gsl_odeiv_step_type * type; + size_t dimension; + void * state; +} +gsl_odeiv_step; + + +/* Available stepper types. + * + * rk2 : embedded 2nd(3rd) Runge-Kutta + * rk4 : 4th order (classical) Runge-Kutta + * rkck : embedded 4th(5th) Runge-Kutta, Cash-Karp + * rk8pd : embedded 8th(9th) Runge-Kutta, Prince-Dormand + * rk2imp : implicit 2nd order Runge-Kutta at Gaussian points + * rk4imp : implicit 4th order Runge-Kutta at Gaussian points + * gear1 : M=1 implicit Gear method + * gear2 : M=2 implicit Gear method + */ + +GSL_VAR const gsl_odeiv_step_type *gsl_odeiv_step_rk2; +GSL_VAR const gsl_odeiv_step_type *gsl_odeiv_step_rk4; +GSL_VAR const gsl_odeiv_step_type *gsl_odeiv_step_rkf45; +GSL_VAR const gsl_odeiv_step_type *gsl_odeiv_step_rkck; +GSL_VAR const gsl_odeiv_step_type *gsl_odeiv_step_rk8pd; +GSL_VAR const gsl_odeiv_step_type *gsl_odeiv_step_rk2imp; +GSL_VAR const gsl_odeiv_step_type *gsl_odeiv_step_rk2simp; +GSL_VAR const gsl_odeiv_step_type *gsl_odeiv_step_rk4imp; +GSL_VAR const gsl_odeiv_step_type *gsl_odeiv_step_bsimp; +GSL_VAR const gsl_odeiv_step_type *gsl_odeiv_step_gear1; +GSL_VAR const gsl_odeiv_step_type *gsl_odeiv_step_gear2; + + +/* Constructor for specialized stepper objects. + */ +gsl_odeiv_step * gsl_odeiv_step_alloc(const gsl_odeiv_step_type * T, size_t dim); +int gsl_odeiv_step_reset(gsl_odeiv_step * s); +void gsl_odeiv_step_free(gsl_odeiv_step * s); + +/* General stepper object methods. + */ +const char * gsl_odeiv_step_name(const gsl_odeiv_step * s); +unsigned int gsl_odeiv_step_order(const gsl_odeiv_step * s); + +int gsl_odeiv_step_apply(gsl_odeiv_step * s, double t, double h, double y[], double yerr[], const double dydt_in[], double dydt_out[], const gsl_odeiv_system * dydt); + +/* General step size control object. + * + * The hadjust() method controls the adjustment of + * step size given the result of a step and the error. + * Valid hadjust() methods must return one of the codes below. + * + * The general data can be used by specializations + * to store state and control their heuristics. + */ + +typedef struct +{ + const char * name; + void * (*alloc) (void); + int (*init) (void * state, double eps_abs, double eps_rel, double a_y, double a_dydt); + int (*hadjust) (void * state, size_t dim, unsigned int ord, const double y[], const double yerr[], const double yp[], double * h); + void (*free) (void * state); +} +gsl_odeiv_control_type; + +typedef struct +{ + const gsl_odeiv_control_type * type; + void * state; +} +gsl_odeiv_control; + +/* Possible return values for an hadjust() evolution method. + */ +#define GSL_ODEIV_HADJ_INC 1 /* step was increased */ +#define GSL_ODEIV_HADJ_NIL 0 /* step unchanged */ +#define GSL_ODEIV_HADJ_DEC (-1) /* step decreased */ + +gsl_odeiv_control * gsl_odeiv_control_alloc(const gsl_odeiv_control_type * T); +int gsl_odeiv_control_init(gsl_odeiv_control * c, double eps_abs, double eps_rel, double a_y, double a_dydt); +void gsl_odeiv_control_free(gsl_odeiv_control * c); +int gsl_odeiv_control_hadjust (gsl_odeiv_control * c, gsl_odeiv_step * s, const double y[], const double yerr[], const double dydt[], double * h); +const char * gsl_odeiv_control_name(const gsl_odeiv_control * c); + +/* Available control object constructors. + * + * The standard control object is a four parameter heuristic + * defined as follows: + * D0 = eps_abs + eps_rel * (a_y |y| + a_dydt h |y'|) + * D1 = |yerr| + * q = consistency order of method (q=4 for 4(5) embedded RK) + * S = safety factor (0.9 say) + * + * / (D0/D1)^(1/(q+1)) D0 >= D1 + * h_NEW = S h_OLD * | + * \ (D0/D1)^(1/q) D0 < D1 + * + * This encompasses all the standard error scaling methods. + * + * The y method is the standard method with a_y=1, a_dydt=0. + * The yp method is the standard method with a_y=0, a_dydt=1. + */ + +gsl_odeiv_control * gsl_odeiv_control_standard_new(double eps_abs, double eps_rel, double a_y, double a_dydt); +gsl_odeiv_control * gsl_odeiv_control_y_new(double eps_abs, double eps_rel); +gsl_odeiv_control * gsl_odeiv_control_yp_new(double eps_abs, double eps_rel); + +/* This controller computes errors using different absolute errors for + * each component + * + * D0 = eps_abs * scale_abs[i] + eps_rel * (a_y |y| + a_dydt h |y'|) + */ +gsl_odeiv_control * gsl_odeiv_control_scaled_new(double eps_abs, double eps_rel, double a_y, double a_dydt, const double scale_abs[], size_t dim); + +/* General evolution object. + */ +typedef struct { + size_t dimension; + double * y0; + double * yerr; + double * dydt_in; + double * dydt_out; + double last_step; + unsigned long int count; + unsigned long int failed_steps; +} +gsl_odeiv_evolve; + +/* Evolution object methods. + */ +gsl_odeiv_evolve * gsl_odeiv_evolve_alloc(size_t dim); +int gsl_odeiv_evolve_apply(gsl_odeiv_evolve * e, gsl_odeiv_control * con, gsl_odeiv_step * step, const gsl_odeiv_system * dydt, double * t, double t1, double * h, double y[]); +int gsl_odeiv_evolve_reset(gsl_odeiv_evolve * e); +void gsl_odeiv_evolve_free(gsl_odeiv_evolve * e); + + +__END_DECLS + +#endif /* __GSL_ODEIV_H__ */ diff --git a/gsl-2.5/ode-initval/libgslodeiv.la b/gsl-2.5/ode-initval/libgslodeiv.la new file mode 100644 index 00000000..eb15ae73 --- /dev/null +++ b/gsl-2.5/ode-initval/libgslodeiv.la @@ -0,0 +1,41 @@ +# libgslodeiv.la - a libtool library file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='' + +# Names of this library. +library_names='' + +# The name of the static archive. +old_library='libgslodeiv.a' + +# Linker flags that can not go in dependency_libs. +inherited_linker_flags='' + +# Libraries that this one depends upon. +dependency_libs=' -lm' + +# Names of additional weak libraries provided by this library +weak_library_names='' + +# Version information for libgslodeiv. +current= +age= +revision= + +# Is this an already installed library? +installed=no + +# Should we warn about portability when linking against -modules? +shouldnotlink=no + +# Files to dlopen/dlpreopen +dlopen='' +dlpreopen='' + +# Directory that this library needs to be installed in: +libdir='' diff --git a/gsl-2.5/ode-initval/odeiv_util.h b/gsl-2.5/ode-initval/odeiv_util.h new file mode 100644 index 00000000..5288b356 --- /dev/null +++ b/gsl-2.5/ode-initval/odeiv_util.h @@ -0,0 +1,2 @@ +#define DBL_MEMCPY(dest,src,n) memcpy((dest),(src),(n)*sizeof(double)) +#define DBL_ZERO_MEMSET(dest,n) memset((dest),0,(n)*sizeof(double)) diff --git a/gsl-2.5/ode-initval/rk2.c b/gsl-2.5/ode-initval/rk2.c new file mode 100644 index 00000000..54b20324 --- /dev/null +++ b/gsl-2.5/ode-initval/rk2.c @@ -0,0 +1,250 @@ +/* ode-initval/rk2.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Runge-Kutta 2(3), Euler-Cauchy */ + +/* Author: G. Jungman + */ + +/* Reference: Abramowitz & Stegun, section 25.5. Runge-Kutta 2nd (25.5.7) + and 3rd (25.5.8) order methods */ + +#include +#include +#include +#include +#include + +#include "odeiv_util.h" + +typedef struct +{ + double *k1; + double *k2; + double *k3; + double *ytmp; +} +rk2_state_t; + +static void * +rk2_alloc (size_t dim) +{ + rk2_state_t *state = (rk2_state_t *) malloc (sizeof (rk2_state_t)); + + if (state == 0) + { + GSL_ERROR_NULL ("failed to allocate space for rk2_state", GSL_ENOMEM); + } + + state->k1 = (double *) malloc (dim * sizeof (double)); + + if (state->k1 == 0) + { + free (state); + GSL_ERROR_NULL ("failed to allocate space for k1", GSL_ENOMEM); + } + + state->k2 = (double *) malloc (dim * sizeof (double)); + + if (state->k2 == 0) + { + free (state->k1); + free (state); + GSL_ERROR_NULL ("failed to allocate space for k2", GSL_ENOMEM); + } + + state->k3 = (double *) malloc (dim * sizeof (double)); + + if (state->k3 == 0) + { + free (state->k2); + free (state->k1); + free (state); + GSL_ERROR_NULL ("failed to allocate space for k3", GSL_ENOMEM); + } + + state->ytmp = (double *) malloc (dim * sizeof (double)); + + if (state->ytmp == 0) + { + free (state->k3); + free (state->k2); + free (state->k1); + free (state); + GSL_ERROR_NULL ("failed to allocate space for ytmp", GSL_ENOMEM); + } + + return state; +} + + +static int +rk2_apply (void *vstate, + size_t dim, + double t, + double h, + double y[], + double yerr[], + const double dydt_in[], + double dydt_out[], + const gsl_odeiv_system * sys) +{ + rk2_state_t *state = (rk2_state_t *) vstate; + + size_t i; + + double *const k1 = state->k1; + double *const k2 = state->k2; + double *const k3 = state->k3; + double *const ytmp = state->ytmp; + + /* k1 step */ + /* k1 = f(t,y) */ + + if (dydt_in != NULL) + { + DBL_MEMCPY (k1, dydt_in, dim); + } + else + { + int s = GSL_ODEIV_FN_EVAL (sys, t, y, k1); + + if (s != GSL_SUCCESS) + { + return s; + } + } + + /* k2 step */ + /* k2 = f(t + 0.5*h, y + 0.5*k1) */ + + for (i = 0; i < dim; i++) + { + ytmp[i] = y[i] + 0.5 * h * k1[i]; + } + + { + int s = GSL_ODEIV_FN_EVAL (sys, t + 0.5 * h, ytmp, k2); + + if (s != GSL_SUCCESS) + { + return s; + } + } + + /* k3 step */ + /* for 3rd order estimates, is used for error estimation + k3 = f(t + h, y - k1 + 2*k2) */ + + for (i = 0; i < dim; i++) + { + ytmp[i] = y[i] + h * (-k1[i] + 2.0 * k2[i]); + } + + { + int s = GSL_ODEIV_FN_EVAL (sys, t + h, ytmp, k3); + + if (s != GSL_SUCCESS) + { + return s; + } + } + + /* final sum */ + + for (i = 0; i < dim; i++) + { + /* Save original values if derivative evaluation below fails */ + ytmp[i] = y[i]; + + { + const double ksum3 = (k1[i] + 4.0 * k2[i] + k3[i]) / 6.0; + y[i] += h * ksum3; + } + } + + /* Derivatives at output */ + + if (dydt_out != NULL) + { + int s = GSL_ODEIV_FN_EVAL (sys, t + h, y, dydt_out); + + if (s != GSL_SUCCESS) + { + /* Restore original values */ + DBL_MEMCPY (y, ytmp, dim); + + return s; + } + } + + /* Error estimation */ + + for (i = 0; i < dim; i++) + { + const double ksum3 = (k1[i] + 4.0 * k2[i] + k3[i]) / 6.0; + yerr[i] = h * (k2[i] - ksum3); + } + + return GSL_SUCCESS; +} + +static int +rk2_reset (void *vstate, size_t dim) +{ + rk2_state_t *state = (rk2_state_t *) vstate; + + DBL_ZERO_MEMSET (state->k1, dim); + DBL_ZERO_MEMSET (state->k2, dim); + DBL_ZERO_MEMSET (state->k3, dim); + DBL_ZERO_MEMSET (state->ytmp, dim); + + return GSL_SUCCESS; +} + +static unsigned int +rk2_order (void *vstate) +{ + rk2_state_t *state = (rk2_state_t *) vstate; + state = 0; /* prevent warnings about unused parameters */ + return 2; +} + +static void +rk2_free (void *vstate) +{ + rk2_state_t *state = (rk2_state_t *) vstate; + free (state->k1); + free (state->k2); + free (state->k3); + free (state->ytmp); + free (state); +} + +static const gsl_odeiv_step_type rk2_type = { "rk2", /* name */ + 1, /* can use dydt_in */ + 1, /* gives exact dydt_out */ + &rk2_alloc, + &rk2_apply, + &rk2_reset, + &rk2_order, + &rk2_free +}; + +const gsl_odeiv_step_type *gsl_odeiv_step_rk2 = &rk2_type; diff --git a/gsl-2.5/ode-initval/rk2.lo b/gsl-2.5/ode-initval/rk2.lo new file mode 100644 index 00000000..a317b099 --- /dev/null +++ b/gsl-2.5/ode-initval/rk2.lo @@ -0,0 +1,12 @@ +# rk2.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/rk2.o' + +# Name of the non-PIC object +non_pic_object='rk2.o' + diff --git a/gsl-2.5/ode-initval/rk2imp.c b/gsl-2.5/ode-initval/rk2imp.c new file mode 100644 index 00000000..4e94b082 --- /dev/null +++ b/gsl-2.5/ode-initval/rk2imp.c @@ -0,0 +1,336 @@ +/* ode-initval/rk2imp.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Runge-Kutta 2, Gaussian implicit. Also known as the implicit + midpoint rule. */ + +/* Author: G. Jungman */ + +/* Error estimation by step doubling, see eg. Ascher, U.M., Petzold, + L.R., Computer methods for ordinary differential and + differential-algebraic equations, SIAM, Philadelphia, 1998. + The method is also described in eg. this reference. +*/ + +#include +#include +#include +#include +#include +#include + +#include "odeiv_util.h" + +typedef struct +{ + double *Y1; + double *y0; + double *ytmp; + double *y_onestep; + double *y0_orig; +} +rk2imp_state_t; + +static void * +rk2imp_alloc (size_t dim) +{ + rk2imp_state_t *state = (rk2imp_state_t *) malloc (sizeof (rk2imp_state_t)); + + if (state == 0) + { + GSL_ERROR_NULL ("failed to allocate space for rk2imp_state", + GSL_ENOMEM); + } + + state->Y1 = (double *) malloc (dim * sizeof (double)); + + if (state->Y1 == 0) + { + free (state); + GSL_ERROR_NULL ("failed to allocate space for Y1", GSL_ENOMEM); + } + + state->ytmp = (double *) malloc (dim * sizeof (double)); + + if (state->ytmp == 0) + { + free (state->Y1); + free (state); + GSL_ERROR_NULL ("failed to allocate space for ytmp", GSL_ENOMEM); + } + + state->y0 = (double *) malloc (dim * sizeof (double)); + + if (state->y0 == 0) + { + free (state->Y1); + free (state->ytmp); + free (state); + GSL_ERROR_NULL ("failed to allocate space for y0", GSL_ENOMEM); + } + + state->y_onestep = (double *) malloc (dim * sizeof (double)); + + if (state->y_onestep == 0) + { + free (state->Y1); + free (state->ytmp); + free (state->y0); + free (state); + GSL_ERROR_NULL ("failed to allocate space for y_onestep", GSL_ENOMEM); + } + + state->y0_orig = (double *) malloc (dim * sizeof (double)); + + if (state->y0_orig == 0) + { + free (state->y_onestep); + free (state->Y1); + free (state->ytmp); + free (state->y0); + free (state); + GSL_ERROR_NULL ("failed to allocate space for y0_orig", GSL_ENOMEM); + } + + return state; +} + +static int +rk2imp_step (double *y, rk2imp_state_t *state, + const double h, const double t, + const size_t dim, const gsl_odeiv_system *sys) +{ + /* Makes a Runge-Kutta 2nd order implicit advance with step size h. + y0 is initial values of variables y. + + The implicit matrix equations to solve are: + + Y1 = y0 + h/2 * f(t + h/2, Y1) + + y = y0 + h * f(t + h/2, Y1) + */ + + const double *y0 = state->y0; + double *Y1 = state->Y1; + double *ytmp = state->ytmp; + int max_iter=3; + int nu; + size_t i; + + /* iterative solution of Y1 = y0 + h/2 * f(t + h/2, Y1) + Y1 should include initial values at call. + + Note: This method does not check for convergence of the + iterative solution! + */ + + for (nu = 0; nu < max_iter; nu++) + { + for (i = 0; i < dim; i++) + { + ytmp[i] = y0[i] + 0.5 * h * Y1[i]; + } + + { + int s = GSL_ODEIV_FN_EVAL (sys, t + 0.5 * h, ytmp, Y1); + + if (s != GSL_SUCCESS) + { + return s; + } + } + } + + /* assignment */ + + for (i = 0; i < dim; i++) + { + y[i] = y0[i] + h * Y1[i]; + } + + return GSL_SUCCESS; +} + +static int +rk2imp_apply (void *vstate, + size_t dim, + double t, + double h, + double y[], + double yerr[], + const double dydt_in[], + double dydt_out[], const gsl_odeiv_system * sys) +{ + rk2imp_state_t *state = (rk2imp_state_t *) vstate; + + size_t i; + + double *Y1 = state->Y1; + double *y0 = state->y0; + double *y_onestep = state->y_onestep; + double *y0_orig = state->y0_orig; + + /* Error estimation is done by step doubling procedure */ + + /* initialization step */ + + DBL_MEMCPY (y0, y, dim); + + /* Save initial values for possible failures */ + DBL_MEMCPY (y0_orig, y, dim); + + if (dydt_in != NULL) + { + DBL_MEMCPY (Y1, dydt_in, dim); + } + + else + { + int s = GSL_ODEIV_FN_EVAL (sys, t, y, Y1); + + if (s != GSL_SUCCESS) + { + return s; + } + } + + /* First traverse h with one step (save to y_onestep) */ + + DBL_MEMCPY (y_onestep, y, dim); + + { + int s = rk2imp_step (y_onestep, state, h, t, dim, sys); + + if (s != GSL_SUCCESS) + { + return s; + } + } + + /* Then with two steps with half step length (save to y) */ + + { + int s = rk2imp_step (y, state, h / 2.0, t, dim, sys); + + if (s != GSL_SUCCESS) + { + /* Restore original y vector */ + DBL_MEMCPY (y, y0_orig, dim); + + return s; + } + } + + DBL_MEMCPY (y0, y, dim); + + { + int s = GSL_ODEIV_FN_EVAL (sys, t + h / 2.0, y, Y1); + + if (s != GSL_SUCCESS) + { + /* Restore original y vector */ + DBL_MEMCPY (y, y0_orig, dim); + + return s; + } + } + + { + int s = rk2imp_step (y, state, h / 2.0, t + h / 2.0, dim, sys); + + if (s != GSL_SUCCESS) + { + /* Restore original y vector */ + DBL_MEMCPY (y, y0_orig, dim); + + return s; + } + } + + /* Derivatives at output */ + + if (dydt_out != NULL) + { + int s = GSL_ODEIV_FN_EVAL (sys, t + h, y, dydt_out); + + if (s != GSL_SUCCESS) + { + /* Restore original y vector */ + DBL_MEMCPY (y, y0_orig, dim); + + return s; + } + } + + /* Error estimation */ + + for (i = 0; i < dim; i++) + { + yerr[i] = 4.0 * (y[i] - y_onestep[i]) / 3.0; + } + + return GSL_SUCCESS; +} + +static int +rk2imp_reset (void *vstate, size_t dim) +{ + rk2imp_state_t *state = (rk2imp_state_t *) vstate; + + DBL_ZERO_MEMSET (state->Y1, dim); + DBL_ZERO_MEMSET (state->ytmp, dim); + DBL_ZERO_MEMSET (state->y0, dim); + DBL_ZERO_MEMSET (state->y_onestep, dim); + DBL_ZERO_MEMSET (state->y0_orig, dim); + + return GSL_SUCCESS; +} + +static unsigned int +rk2imp_order (void *vstate) +{ + rk2imp_state_t *state = (rk2imp_state_t *) vstate; + state = 0; /* prevent warnings about unused parameters */ + return 2; +} + +static void +rk2imp_free (void *vstate) +{ + rk2imp_state_t *state = (rk2imp_state_t *) vstate; + + free (state->Y1); + free (state->ytmp); + free (state->y0); + free (state->y_onestep); + free (state->y0_orig); + free (state); +} + +static const gsl_odeiv_step_type rk2imp_type = { "rk2imp", /* name */ + 1, /* can use dydt_in */ + 1, /* gives exact dydt_out */ + &rk2imp_alloc, + &rk2imp_apply, + &rk2imp_reset, + &rk2imp_order, + &rk2imp_free +}; + +const gsl_odeiv_step_type *gsl_odeiv_step_rk2imp = &rk2imp_type; diff --git a/gsl-2.5/ode-initval/rk2imp.lo b/gsl-2.5/ode-initval/rk2imp.lo new file mode 100644 index 00000000..366c5bc4 --- /dev/null +++ b/gsl-2.5/ode-initval/rk2imp.lo @@ -0,0 +1,12 @@ +# rk2imp.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/rk2imp.o' + +# Name of the non-PIC object +non_pic_object='rk2imp.o' + diff --git a/gsl-2.5/ode-initval/rk2simp.c b/gsl-2.5/ode-initval/rk2simp.c new file mode 100644 index 00000000..6d979e02 --- /dev/null +++ b/gsl-2.5/ode-initval/rk2simp.c @@ -0,0 +1,383 @@ +/* ode-initval/rk2simp.c + * + * Copyright (C) 2004 Tuomo Keskitalo + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Runge-Kutta 2, Gaussian implicit. Also known as implicit midpoint rule. + + Non-linear equations solved by linearization, LU-decomposition + and matrix inversion. For reference, see eg. + + Ascher, U.M., Petzold, L.R., Computer methods for ordinary + differential and differential-algebraic equations, SIAM, + Philadelphia, 1998. + */ + +#include +#include +#include +#include +#include +#include +#include + +#include "odeiv_util.h" + +typedef struct +{ + double *Y1; + double *y0; + double *y0_orig; + double *ytmp; + double *dfdy; /* Jacobian */ + double *dfdt; /* time derivatives, not used */ + double *y_onestep; + gsl_permutation *p; +} +rk2simp_state_t; + +static void * +rk2simp_alloc (size_t dim) +{ + rk2simp_state_t *state = + (rk2simp_state_t *) malloc (sizeof (rk2simp_state_t)); + + if (state == 0) + { + GSL_ERROR_NULL ("failed to allocate space for rk2simp_state", + GSL_ENOMEM); + } + + state->Y1 = (double *) malloc (dim * sizeof (double)); + + if (state->Y1 == 0) + { + free (state); + GSL_ERROR_NULL ("failed to allocate space for Y1", GSL_ENOMEM); + } + + state->y0 = (double *) malloc (dim * sizeof (double)); + + if (state->y0 == 0) + { + free (state->Y1); + free (state); + GSL_ERROR_NULL ("failed to allocate space for y0", GSL_ENOMEM); + } + + state->y0_orig = (double *) malloc (dim * sizeof (double)); + + if (state->y0_orig == 0) + { + free (state->Y1); + free (state->y0); + free (state); + GSL_ERROR_NULL ("failed to allocate space for y0_orig", GSL_ENOMEM); + } + + state->ytmp = (double *) malloc (dim * sizeof (double)); + + if (state->ytmp == 0) + { + free (state->Y1); + free (state->y0); + free (state->y0_orig); + free (state); + GSL_ERROR_NULL ("failed to allocate space for ytmp", GSL_ENOMEM); + } + + state->dfdy = (double *) malloc (dim * dim * sizeof (double)); + + if (state->dfdy == 0) + { + free (state->Y1); + free (state->y0); + free (state->y0_orig); + free (state->ytmp); + free (state); + GSL_ERROR_NULL ("failed to allocate space for dfdy", GSL_ENOMEM); + } + + state->dfdt = (double *) malloc (dim * sizeof (double)); + + if (state->dfdt == 0) + { + free (state->Y1); + free (state->y0); + free (state->y0_orig); + free (state->ytmp); + free (state->dfdy); + free (state); + GSL_ERROR_NULL ("failed to allocate space for dfdt", GSL_ENOMEM); + } + + state->y_onestep = (double *) malloc (dim * sizeof (double)); + + if (state->y_onestep == 0) + { + free (state->Y1); + free (state->y0); + free (state->y0_orig); + free (state->ytmp); + free (state->dfdy); + free (state->dfdt); + free (state); + GSL_ERROR_NULL ("failed to allocate space for y_onestep", GSL_ENOMEM); + } + + state->p = gsl_permutation_alloc (dim); + + if (state->p == 0) + { + free (state->Y1); + free (state->y0); + free (state->y0_orig); + free (state->ytmp); + free (state->dfdy); + free (state->dfdt); + free (state->y_onestep); + free (state); + GSL_ERROR_NULL ("failed to allocate space for p", GSL_ENOMEM); + } + + return state; +} + + +static int +rk2simp_step (double *y, rk2simp_state_t * state, + const double h, const double t, + const size_t dim, const gsl_odeiv_system * sys) +{ + /* Makes a Runge-Kutta 2nd order semi-implicit advance with step size h. + y0 is initial values of variables y. + + The linearized semi-implicit equations to calculate are: + + Y1 = y0 + h/2 * (1 - h/2 * df/dy)^(-1) * f(t + h/2, y0) + + y = y0 + h * f(t + h/2, Y1) + */ + + const double *y0 = state->y0; + double *Y1 = state->Y1; + double *ytmp = state->ytmp; + + size_t i; + int s, ps; + + gsl_matrix_view J = gsl_matrix_view_array (state->dfdy, dim, dim); + + /* First solve Y1. + Calculate the inverse matrix (1 - h/2 * df/dy)^-1 + */ + + /* Create matrix to J */ + + s = GSL_ODEIV_JA_EVAL (sys, t, y0, state->dfdy, state->dfdt); + + if (s != GSL_SUCCESS) + { + return s; + } + + gsl_matrix_scale (&J.matrix, -h / 2.0); + gsl_matrix_add_diagonal(&J.matrix, 1.0); + + /* Invert it by LU-decomposition to invmat */ + + s += gsl_linalg_LU_decomp (&J.matrix, state->p, &ps); + + if (s != GSL_SUCCESS) + { + return GSL_EFAILED; + } + + /* Evaluate f(t + h/2, y0) */ + + s = GSL_ODEIV_FN_EVAL (sys, t + 0.5 * h, y0, ytmp); + + if (s != GSL_SUCCESS) + { + return s; + } + + /* Calculate Y1 = y0 + h/2 * ((1-h/2 * df/dy)^-1) ytmp */ + + { + gsl_vector_const_view y0_view = gsl_vector_const_view_array(y0, dim); + gsl_vector_view ytmp_view = gsl_vector_view_array(ytmp, dim); + gsl_vector_view Y1_view = gsl_vector_view_array(Y1, dim); + + s = gsl_linalg_LU_solve (&J.matrix, state->p, + &ytmp_view.vector, &Y1_view.vector); + + gsl_vector_scale (&Y1_view.vector, 0.5 * h); + gsl_vector_add (&Y1_view.vector, &y0_view.vector); + } + + /* And finally evaluation of f(t + h/2, Y1) and calculation of y */ + + s = GSL_ODEIV_FN_EVAL (sys, t + 0.5 * h, Y1, ytmp); + + if (s != GSL_SUCCESS) + { + return s; + } + + for (i = 0; i < dim; i++) + { + y[i] = y0[i] + h * ytmp[i]; + } + + return s; +} + +static int +rk2simp_apply (void *vstate, size_t dim, double t, double h, + double y[], double yerr[], const double dydt_in[], + double dydt_out[], const gsl_odeiv_system * sys) +{ + rk2simp_state_t *state = (rk2simp_state_t *) vstate; + + size_t i; + + double *y0 = state->y0; + double *y0_orig = state->y0_orig; + double *y_onestep = state->y_onestep; + + /* Error estimation is done by step doubling procedure */ + + DBL_MEMCPY (y0, y, dim); + + /* Save initial values in case of failure */ + DBL_MEMCPY (y0_orig, y, dim); + + /* First traverse h with one step (save to y_onestep) */ + DBL_MEMCPY (y_onestep, y, dim); + + { + int s = rk2simp_step (y_onestep, state, h, t, dim, sys); + + if (s != GSL_SUCCESS) + { + return s; + } + } + + /* Then with two steps with half step length (save to y) */ + + { + int s = rk2simp_step (y, state, h / 2.0, t, dim, sys); + + if (s != GSL_SUCCESS) + { + /* Restore original y vector */ + DBL_MEMCPY (y, y0_orig, dim); + return s; + } + } + + DBL_MEMCPY (y0, y, dim); + + { + int s = rk2simp_step (y, state, h / 2.0, t + h / 2.0, dim, sys); + + if (s != GSL_SUCCESS) + { + /* Restore original y vector */ + DBL_MEMCPY (y, y0_orig, dim); + return s; + } + } + + /* Derivatives at output */ + + if (dydt_out != NULL) + { + int s = GSL_ODEIV_FN_EVAL (sys, t + h, y, dydt_out); + + if (s != GSL_SUCCESS) + { + /* Restore original y vector */ + DBL_MEMCPY (y, y0_orig, dim); + return s; + } + } + + /* Error estimation */ + + for (i = 0; i < dim; i++) + { + yerr[i] = 4.0 * (y[i] - y_onestep[i]) / 3.0; + } + + return GSL_SUCCESS; +} + + +static int +rk2simp_reset (void *vstate, size_t dim) +{ + rk2simp_state_t *state = (rk2simp_state_t *) vstate; + + DBL_ZERO_MEMSET (state->Y1, dim); + DBL_ZERO_MEMSET (state->y0, dim); + DBL_ZERO_MEMSET (state->y0_orig, dim); + DBL_ZERO_MEMSET (state->ytmp, dim); + DBL_ZERO_MEMSET (state->dfdt, dim * dim); + DBL_ZERO_MEMSET (state->dfdt, dim); + DBL_ZERO_MEMSET (state->y_onestep, dim); + + return GSL_SUCCESS; +} + +static unsigned int +rk2simp_order (void *vstate) +{ + rk2simp_state_t *state = (rk2simp_state_t *) vstate; + state = 0; /* prevent warnings about unused parameters */ + return 2; +} + +static void +rk2simp_free (void *vstate) +{ + rk2simp_state_t *state = (rk2simp_state_t *) vstate; + free (state->Y1); + free (state->y0); + free (state->y0_orig); + free (state->ytmp); + free (state->dfdy); + free (state->dfdt); + free (state->y_onestep); + gsl_permutation_free (state->p); + free (state); +} + +static const gsl_odeiv_step_type rk2simp_type = { + "rk2simp", /* name */ + 0, /* can use dydt_in? */ + 1, /* gives exact dydt_out? */ + &rk2simp_alloc, + &rk2simp_apply, + &rk2simp_reset, + &rk2simp_order, + &rk2simp_free +}; + +const gsl_odeiv_step_type *gsl_odeiv_step_rk2simp = &rk2simp_type; diff --git a/gsl-2.5/ode-initval/rk2simp.lo b/gsl-2.5/ode-initval/rk2simp.lo new file mode 100644 index 00000000..cb9d1423 --- /dev/null +++ b/gsl-2.5/ode-initval/rk2simp.lo @@ -0,0 +1,12 @@ +# rk2simp.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/rk2simp.o' + +# Name of the non-PIC object +non_pic_object='rk2simp.o' + diff --git a/gsl-2.5/ode-initval/rk4.c b/gsl-2.5/ode-initval/rk4.c new file mode 100644 index 00000000..fda74361 --- /dev/null +++ b/gsl-2.5/ode-initval/rk4.c @@ -0,0 +1,365 @@ +/* ode-initval/rk4.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Runge-Kutta 4th order, Classical */ + +/* Author: G. Jungman + */ + +/* Reference: Abramowitz & Stegun, section 25.5. equation 25.5.10 + + Error estimation by step doubling, see eg. Ascher, U.M., Petzold, + L.R., Computer methods for ordinary differential and + differential-algebraic equations, SIAM, Philadelphia, 1998. +*/ + +#include +#include +#include +#include +#include + +#include "odeiv_util.h" + +typedef struct +{ + double *k; + double *k1; + double *y0; + double *ytmp; + double *y_onestep; +} +rk4_state_t; + +static void * +rk4_alloc (size_t dim) +{ + rk4_state_t *state = (rk4_state_t *) malloc (sizeof (rk4_state_t)); + + if (state == 0) + { + GSL_ERROR_NULL ("failed to allocate space for rk4_state", GSL_ENOMEM); + } + + state->k = (double *) malloc (dim * sizeof (double)); + + if (state->k == 0) + { + free (state); + GSL_ERROR_NULL ("failed to allocate space for k", GSL_ENOMEM); + } + + state->k1 = (double *) malloc (dim * sizeof (double)); + + if (state->k1 == 0) + { + free (state->k); + free (state); + GSL_ERROR_NULL ("failed to allocate space for k1", GSL_ENOMEM); + } + + state->y0 = (double *) malloc (dim * sizeof (double)); + + if (state->y0 == 0) + { + free (state->k); + free (state->k1); + free (state); + GSL_ERROR_NULL ("failed to allocate space for y0", GSL_ENOMEM); + } + + state->ytmp = (double *) malloc (dim * sizeof (double)); + + if (state->ytmp == 0) + { + free (state->y0); + free (state->k); + free (state->k1); + free (state); + GSL_ERROR_NULL ("failed to allocate space for ytmp", GSL_ENOMEM); + } + + state->y_onestep = (double *) malloc (dim * sizeof (double)); + + if (state->y_onestep == 0) + { + free (state->ytmp); + free (state->y0); + free (state->k); + free (state->k1); + free (state); + GSL_ERROR_NULL ("failed to allocate space for ytmp", GSL_ENOMEM); + } + + return state; +} + +static int +rk4_step (double *y, const rk4_state_t *state, + const double h, const double t, const size_t dim, + const gsl_odeiv_system *sys) +{ + /* Makes a Runge-Kutta 4th order advance with step size h. */ + + /* initial values of variables y. */ + const double *y0 = state->y0; + + /* work space */ + double *ytmp = state->ytmp; + + /* Runge-Kutta coefficients. Contains values of coefficient k1 + in the beginning + */ + double *k = state->k; + + size_t i; + + /* k1 step */ + + for (i = 0; i < dim; i++) + { + y[i] += h / 6.0 * k[i]; + ytmp[i] = y0[i] + 0.5 * h * k[i]; + } + + /* k2 step */ + { + int s = GSL_ODEIV_FN_EVAL (sys, t + 0.5 * h, ytmp, k); + + if (s != GSL_SUCCESS) + { + return s; + } + } + + for (i = 0; i < dim; i++) + { + y[i] += h / 3.0 * k[i]; + ytmp[i] = y0[i] + 0.5 * h * k[i]; + } + + /* k3 step */ + { + int s = GSL_ODEIV_FN_EVAL (sys, t + 0.5 * h, ytmp, k); + + if (s != GSL_SUCCESS) + { + return s; + } + } + + for (i = 0; i < dim; i++) + { + y[i] += h / 3.0 * k[i]; + ytmp[i] = y0[i] + h * k[i]; + } + + /* k4 step */ + { + int s = GSL_ODEIV_FN_EVAL (sys, t + h, ytmp, k); + + if (s != GSL_SUCCESS) + { + return s; + } + } + + for (i = 0; i < dim; i++) + { + y[i] += h / 6.0 * k[i]; + } + + return GSL_SUCCESS; +} + + +static int +rk4_apply (void *vstate, + size_t dim, + double t, + double h, + double y[], + double yerr[], + const double dydt_in[], + double dydt_out[], + const gsl_odeiv_system * sys) +{ + rk4_state_t *state = (rk4_state_t *) vstate; + + size_t i; + + double *const k = state->k; + double *const k1 = state->k1; + double *const y0 = state->y0; + double *const y_onestep = state->y_onestep; + + DBL_MEMCPY (y0, y, dim); + + if (dydt_in != NULL) + { + DBL_MEMCPY (k, dydt_in, dim); + } + else + { + int s = GSL_ODEIV_FN_EVAL (sys, t, y0, k); + + if (s != GSL_SUCCESS) + { + return s; + } + } + + /* Error estimation is done by step doubling procedure */ + + /* Save first point derivatives*/ + + DBL_MEMCPY (k1, k, dim); + + /* First traverse h with one step (save to y_onestep) */ + + DBL_MEMCPY (y_onestep, y, dim); + + { + int s = rk4_step (y_onestep, state, h, t, dim, sys); + + if (s != GSL_SUCCESS) + { + return s; + } + } + + /* Then with two steps with half step length (save to y) */ + + DBL_MEMCPY (k, k1, dim); + + { + int s = rk4_step (y, state, h/2.0, t, dim, sys); + + if (s != GSL_SUCCESS) + { + /* Restore original values */ + DBL_MEMCPY (y, y0, dim); + return s; + } + } + + /* Update before second step */ + { + int s = GSL_ODEIV_FN_EVAL (sys, t + h/2.0, y, k); + + if (s != GSL_SUCCESS) + { + /* Restore original values */ + DBL_MEMCPY (y, y0, dim); + return s; + } + } + + /* Save original y0 to k1 for possible failures */ + DBL_MEMCPY (k1, y0, dim); + + /* Update y0 for second step */ + DBL_MEMCPY (y0, y, dim); + + { + int s = rk4_step (y, state, h/2.0, t + h/2.0, dim, sys); + + if (s != GSL_SUCCESS) + { + /* Restore original values */ + DBL_MEMCPY (y, k1, dim); + return s; + } + } + + /* Derivatives at output */ + + if (dydt_out != NULL) { + int s = GSL_ODEIV_FN_EVAL (sys, t + h, y, dydt_out); + + if (s != GSL_SUCCESS) + { + /* Restore original values */ + DBL_MEMCPY (y, k1, dim); + return s; + } + } + + /* Error estimation + + yerr = C * 0.5 * | y(onestep) - y(twosteps) | / (2^order - 1) + + constant C is approximately 8.0 to ensure 90% of samples lie within + the error (assuming a gaussian distribution with prior p(sigma)=1/sigma.) + + */ + + for (i = 0; i < dim; i++) + { + yerr[i] = 4.0 * (y[i] - y_onestep[i]) / 15.0; + } + + return GSL_SUCCESS; +} + +static int +rk4_reset (void *vstate, size_t dim) +{ + rk4_state_t *state = (rk4_state_t *) vstate; + + DBL_ZERO_MEMSET (state->k, dim); + DBL_ZERO_MEMSET (state->k1, dim); + DBL_ZERO_MEMSET (state->y0, dim); + DBL_ZERO_MEMSET (state->ytmp, dim); + DBL_ZERO_MEMSET (state->y_onestep, dim); + + return GSL_SUCCESS; +} + +static unsigned int +rk4_order (void *vstate) +{ + rk4_state_t *state = (rk4_state_t *) vstate; + state = 0; /* prevent warnings about unused parameters */ + return 4; +} + +static void +rk4_free (void *vstate) +{ + rk4_state_t *state = (rk4_state_t *) vstate; + free (state->k); + free (state->k1); + free (state->y0); + free (state->ytmp); + free (state->y_onestep); + free (state); +} + +static const gsl_odeiv_step_type rk4_type = { "rk4", /* name */ + 1, /* can use dydt_in */ + 1, /* gives exact dydt_out */ + &rk4_alloc, + &rk4_apply, + &rk4_reset, + &rk4_order, + &rk4_free +}; + +const gsl_odeiv_step_type *gsl_odeiv_step_rk4 = &rk4_type; diff --git a/gsl-2.5/ode-initval/rk4.lo b/gsl-2.5/ode-initval/rk4.lo new file mode 100644 index 00000000..a1a59feb --- /dev/null +++ b/gsl-2.5/ode-initval/rk4.lo @@ -0,0 +1,12 @@ +# rk4.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/rk4.o' + +# Name of the non-PIC object +non_pic_object='rk4.o' + diff --git a/gsl-2.5/ode-initval/rk4imp.c b/gsl-2.5/ode-initval/rk4imp.c new file mode 100644 index 00000000..e569b7e5 --- /dev/null +++ b/gsl-2.5/ode-initval/rk4imp.c @@ -0,0 +1,390 @@ +/* ode-initval/rk4imp.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Runge-Kutta 4, Gaussian implicit */ + +/* Author: G. Jungman +*/ + +/* Error estimation by step doubling, see eg. Ascher, U.M., Petzold, + L.R., Computer methods for ordinary differential and + differential-algebraic equations, SIAM, Philadelphia, 1998. + Method coefficients can also be found in it. +*/ + +#include +#include +#include +#include +#include +#include + +#include "odeiv_util.h" + +typedef struct +{ + double *k1nu; + double *k2nu; + double *ytmp1; + double *ytmp2; + double *y0; + double *y0_orig; + double *y_onestep; +} +rk4imp_state_t; + +static void * +rk4imp_alloc (size_t dim) +{ + rk4imp_state_t *state = (rk4imp_state_t *) malloc (sizeof (rk4imp_state_t)); + + if (state == 0) + { + GSL_ERROR_NULL ("failed to allocate space for rk4imp_state", + GSL_ENOMEM); + } + + state->k1nu = (double *) malloc (dim * sizeof (double)); + + if (state->k1nu == 0) + { + free (state); + GSL_ERROR_NULL ("failed to allocate space for k1nu", GSL_ENOMEM); + } + + state->k2nu = (double *) malloc (dim * sizeof (double)); + + if (state->k2nu == 0) + { + free (state->k1nu); + free (state); + GSL_ERROR_NULL ("failed to allocate space for k2nu", GSL_ENOMEM); + } + + state->ytmp1 = (double *) malloc (dim * sizeof (double)); + + if (state->ytmp1 == 0) + { + free (state->k2nu); + free (state->k1nu); + free (state); + GSL_ERROR_NULL ("failed to allocate space for ytmp1", GSL_ENOMEM); + } + + state->ytmp2 = (double *) malloc (dim * sizeof (double)); + + if (state->ytmp2 == 0) + { + free (state->ytmp1); + free (state->k2nu); + free (state->k1nu); + free (state); + GSL_ERROR_NULL ("failed to allocate space for ytmp2", GSL_ENOMEM); + } + + state->y0 = (double *) malloc (dim * sizeof (double)); + + if (state->y0 == 0) + { + free (state->ytmp2); + free (state->ytmp1); + free (state->k2nu); + free (state->k1nu); + free (state); + GSL_ERROR_NULL ("failed to allocate space for y0", GSL_ENOMEM); + } + + state->y0_orig = (double *) malloc (dim * sizeof (double)); + + if (state->y0_orig == 0) + { + free (state->y0); + free (state->ytmp2); + free (state->ytmp1); + free (state->k2nu); + free (state->k1nu); + free (state); + GSL_ERROR_NULL ("failed to allocate space for y0_orig", GSL_ENOMEM); + } + + state->y_onestep = (double *) malloc (dim * sizeof (double)); + + if (state->y_onestep == 0) + { + free (state->y0_orig); + free (state->y0); + free (state->ytmp2); + free (state->ytmp1); + free (state->k2nu); + free (state->k1nu); + free (state); + GSL_ERROR_NULL ("failed to allocate space for y_onestep", GSL_ENOMEM); + } + + return state; +} + +static int +rk4imp_step (double *y, rk4imp_state_t *state, + const double h, const double t, + const size_t dim, const gsl_odeiv_system *sys) +{ + /* Makes a Runge-Kutta 4th order implicit advance with step size h. + y0 is initial values of variables y. + + The implicit matrix equations to solve are: + + Y1 = y0 + h * a11 * f(t + h * c1, Y1) + h * a12 * f(t + h * c2, Y2) + Y2 = y0 + h * a21 * f(t + h * c1, Y1) + h * a22 * f(t + h * c2, Y2) + + y = y0 + h * b1 * f(t + h * c1, Y1) + h * b2 * f(t + h * c2, Y2) + + with constant coefficients a, b and c. For this method + they are: b=[0.5 0.5] c=[(3-sqrt(3))/6 (3+sqrt(3))/6] + a11=1/4, a12=(3-2*sqrt(3))/12, a21=(3+2*sqrt(3))/12 and a22=1/4 + */ + + const double ir3 = 1.0 / M_SQRT3; + const int iter_steps = 3; + int nu; + size_t i; + + double *const k1nu = state->k1nu; + double *const k2nu = state->k2nu; + double *const ytmp1 = state->ytmp1; + double *const ytmp2 = state->ytmp2; + + /* iterative solution of Y1 and Y2. + + Note: This method does not check for convergence of the + iterative solution! + */ + + for (nu = 0; nu < iter_steps; nu++) + { + for (i = 0; i < dim; i++) + { + ytmp1[i] = + y[i] + h * (0.25 * k1nu[i] + 0.5 * (0.5 - ir3) * k2nu[i]); + ytmp2[i] = + y[i] + h * (0.25 * k2nu[i] + 0.5 * (0.5 + ir3) * k1nu[i]); + } + { + int s = + GSL_ODEIV_FN_EVAL (sys, t + 0.5 * h * (1.0 - ir3), ytmp1, k1nu); + + if (s != GSL_SUCCESS) + { + return s; + } + } + { + int s = + GSL_ODEIV_FN_EVAL (sys, t + 0.5 * h * (1.0 + ir3), ytmp2, k2nu); + + if (s != GSL_SUCCESS) + { + return s; + } + } + } + + /* assignment */ + + for (i = 0; i < dim; i++) + { + const double d_i = 0.5 * (k1nu[i] + k2nu[i]); + y[i] += h * d_i; + } + + return GSL_SUCCESS; +} + +static int +rk4imp_apply (void *vstate, + size_t dim, + double t, + double h, + double y[], + double yerr[], + const double dydt_in[], + double dydt_out[], + const gsl_odeiv_system * sys) +{ + rk4imp_state_t *state = (rk4imp_state_t *) vstate; + + size_t i; + + double *y0 = state->y0; + double *y0_orig = state->y0_orig; + double *y_onestep = state->y_onestep; + double *k1nu = state->k1nu; + double *k2nu = state->k2nu; + + /* Initialization step */ + DBL_MEMCPY (y0, y, dim); + + /* Save initial values in case of failure */ + DBL_MEMCPY (y0_orig, y, dim); + + if (dydt_in != 0) + { + DBL_MEMCPY (k1nu, dydt_in, dim); + } + else + { + int s = GSL_ODEIV_FN_EVAL (sys, t, y, k1nu); + + if (s != GSL_SUCCESS) + { + return s; + } + } + + DBL_MEMCPY (k2nu, k1nu, dim); + + /* First traverse h with one step (save to y_onestep) */ + + DBL_MEMCPY (y_onestep, y, dim); + + { + int s = rk4imp_step (y_onestep, state, h, t, dim, sys); + + if (s != GSL_SUCCESS) + { + return s; + } + } + + /* Then with two steps with half step length (save to y) */ + + { + int s = rk4imp_step (y, state, h/2.0, t, dim, sys); + + if (s != GSL_SUCCESS) + { + /* Restore original y vector */ + DBL_MEMCPY (y, y0_orig, dim); + return s; + } + } + + DBL_MEMCPY (y0, y, dim); + + { + int s = GSL_ODEIV_FN_EVAL (sys, t + h/2.0, y, k1nu); + + if (s != GSL_SUCCESS) + { + /* Restore original y vector */ + DBL_MEMCPY (y, y0_orig, dim); + return s; + } + } + + DBL_MEMCPY (k2nu, k1nu, dim); + + { + int s = rk4imp_step (y, state, h/2.0, t + h/2.0, dim, sys); + + if (s != GSL_SUCCESS) + { + /* Restore original y vector */ + DBL_MEMCPY (y, y0_orig, dim); + return s; + } + } + + /* Derivatives at output */ + + if (dydt_out != NULL) + { + int s = GSL_ODEIV_FN_EVAL (sys, t + h, y, dydt_out); + + if (s != GSL_SUCCESS) { + /* Restore original y vector */ + DBL_MEMCPY (y, y0_orig, dim); + return s; + } + } + + /* Error estimation */ + + /* Denominator in step doubling error equation + * yerr = 0.5 * | y(onestep) - y(twosteps) | / (2^order - 1) + */ + + for (i = 0; i < dim; i++) + { + yerr[i] = 8.0 * 0.5 * (y[i] - y_onestep[i]) / 15.0; + } + + return GSL_SUCCESS; +} + +static int +rk4imp_reset (void *vstate, size_t dim) +{ + rk4imp_state_t *state = (rk4imp_state_t *) vstate; + + DBL_ZERO_MEMSET (state->y_onestep, dim); + DBL_ZERO_MEMSET (state->y0_orig, dim); + DBL_ZERO_MEMSET (state->y0, dim); + DBL_ZERO_MEMSET (state->k1nu, dim); + DBL_ZERO_MEMSET (state->k2nu, dim); + DBL_ZERO_MEMSET (state->ytmp1, dim); + DBL_ZERO_MEMSET (state->ytmp2, dim); + + return GSL_SUCCESS; +} + +static unsigned int +rk4imp_order (void *vstate) +{ + rk4imp_state_t *state = (rk4imp_state_t *) vstate; + state = 0; /* prevent warnings about unused parameters */ + return 4; +} + +static void +rk4imp_free (void *vstate) +{ + rk4imp_state_t *state = (rk4imp_state_t *) vstate; + + free (state->y_onestep); + free (state->y0_orig); + free (state->y0); + free (state->k1nu); + free (state->k2nu); + free (state->ytmp1); + free (state->ytmp2); + free (state); +} + +static const gsl_odeiv_step_type rk4imp_type = { "rk4imp", /* name */ + 1, /* can use dydt_in? */ + 1, /* gives exact dydt_out? */ + &rk4imp_alloc, + &rk4imp_apply, + &rk4imp_reset, + &rk4imp_order, + &rk4imp_free +}; + +const gsl_odeiv_step_type *gsl_odeiv_step_rk4imp = &rk4imp_type; diff --git a/gsl-2.5/ode-initval/rk4imp.lo b/gsl-2.5/ode-initval/rk4imp.lo new file mode 100644 index 00000000..f048a5b8 --- /dev/null +++ b/gsl-2.5/ode-initval/rk4imp.lo @@ -0,0 +1,12 @@ +# rk4imp.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/rk4imp.o' + +# Name of the non-PIC object +non_pic_object='rk4imp.o' + diff --git a/gsl-2.5/ode-initval/rk8pd.c b/gsl-2.5/ode-initval/rk8pd.c new file mode 100644 index 00000000..a82d1bd2 --- /dev/null +++ b/gsl-2.5/ode-initval/rk8pd.c @@ -0,0 +1,537 @@ +/* ode-initval/rk8pd.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Runge-Kutta 8(9), Prince-Dormand + * + * High Order Embedded Runge-Kutta Formulae + * P.J. Prince and J.R. Dormand + * J. Comp. Appl. Math.,7, pp. 67-75, 1981 + */ + +/* Author: G. Jungman + */ +#include +#include +#include +#include +#include + +#include "odeiv_util.h" + +/* Prince-Dormand constants */ + +static const double Abar[] = { + 14005451.0 / 335480064.0, + 0.0, + 0.0, + 0.0, + 0.0, + -59238493.0 / 1068277825.0, + 181606767.0 / 758867731.0, + 561292985.0 / 797845732.0, + -1041891430.0 / 1371343529.0, + 760417239.0 / 1151165299.0, + 118820643.0 / 751138087.0, + -528747749.0 / 2220607170.0, + 1.0 / 4.0 +}; + +static const double A[] = { + 13451932.0 / 455176623.0, + 0.0, + 0.0, + 0.0, + 0.0, + -808719846.0 / 976000145.0, + 1757004468.0 / 5645159321.0, + 656045339.0 / 265891186.0, + -3867574721.0 / 1518517206.0, + 465885868.0 / 322736535.0, + 53011238.0 / 667516719.0, + 2.0 / 45.0 +}; + +static const double ah[] = { + 1.0 / 18.0, + 1.0 / 12.0, + 1.0 / 8.0, + 5.0 / 16.0, + 3.0 / 8.0, + 59.0 / 400.0, + 93.0 / 200.0, + 5490023248.0 / 9719169821.0, + 13.0 / 20.0, + 1201146811.0 / 1299019798.0 +}; + +static const double b21 = 1.0 / 18.0; +static const double b3[] = { 1.0 / 48.0, 1.0 / 16.0 }; +static const double b4[] = { 1.0 / 32.0, 0.0, 3.0 / 32.0 }; +static const double b5[] = { 5.0 / 16.0, 0.0, -75.0 / 64.0, 75.0 / 64.0 }; +static const double b6[] = { 3.0 / 80.0, 0.0, 0.0, 3.0 / 16.0, 3.0 / 20.0 }; +static const double b7[] = { + 29443841.0 / 614563906.0, + 0.0, + 0.0, + 77736538.0 / 692538347.0, + -28693883.0 / 1125000000.0, + 23124283.0 / 1800000000.0 +}; +static const double b8[] = { + 16016141.0 / 946692911.0, + 0.0, + 0.0, + 61564180.0 / 158732637.0, + 22789713.0 / 633445777.0, + 545815736.0 / 2771057229.0, + -180193667.0 / 1043307555.0 +}; +static const double b9[] = { + 39632708.0 / 573591083.0, + 0.0, + 0.0, + -433636366.0 / 683701615.0, + -421739975.0 / 2616292301.0, + 100302831.0 / 723423059.0, + 790204164.0 / 839813087.0, + 800635310.0 / 3783071287.0 +}; +static const double b10[] = { + 246121993.0 / 1340847787.0, + 0.0, + 0.0, + -37695042795.0 / 15268766246.0, + -309121744.0 / 1061227803.0, + -12992083.0 / 490766935.0, + 6005943493.0 / 2108947869.0, + 393006217.0 / 1396673457.0, + 123872331.0 / 1001029789.0 +}; +static const double b11[] = { + -1028468189.0 / 846180014.0, + 0.0, + 0.0, + 8478235783.0 / 508512852.0, + 1311729495.0 / 1432422823.0, + -10304129995.0 / 1701304382.0, + -48777925059.0 / 3047939560.0, + 15336726248.0 / 1032824649.0, + -45442868181.0 / 3398467696.0, + 3065993473.0 / 597172653.0 +}; +static const double b12[] = { + 185892177.0 / 718116043.0, + 0.0, + 0.0, + -3185094517.0 / 667107341.0, + -477755414.0 / 1098053517.0, + -703635378.0 / 230739211.0, + 5731566787.0 / 1027545527.0, + 5232866602.0 / 850066563.0, + -4093664535.0 / 808688257.0, + 3962137247.0 / 1805957418.0, + 65686358.0 / 487910083.0 +}; +static const double b13[] = { + 403863854.0 / 491063109.0, + 0.0, + 0.0, + -5068492393.0 / 434740067.0, + -411421997.0 / 543043805.0, + 652783627.0 / 914296604.0, + 11173962825.0 / 925320556.0, + -13158990841.0 / 6184727034.0, + 3936647629.0 / 1978049680.0, + -160528059.0 / 685178525.0, + 248638103.0 / 1413531060.0, + 0.0 +}; + +typedef struct +{ + double *k[13]; + double *ytmp; + double *y0; +} +rk8pd_state_t; + +static void * +rk8pd_alloc (size_t dim) +{ + rk8pd_state_t *state = (rk8pd_state_t *) malloc (sizeof (rk8pd_state_t)); + int i, j; + + if (state == 0) + { + GSL_ERROR_NULL ("failed to allocate space for rk8pd_state", GSL_ENOMEM); + } + + state->ytmp = (double *) malloc (dim * sizeof (double)); + + if (state->ytmp == 0) + { + free (state); + GSL_ERROR_NULL ("failed to allocate space for ytmp", GSL_ENOMEM); + } + + state->y0 = (double *) malloc (dim * sizeof (double)); + + if (state->y0 == 0) + { + free (state->ytmp); + free (state); + GSL_ERROR_NULL ("failed to allocate space for y0", GSL_ENOMEM); + } + + for (i = 0; i < 13; i++) + { + state->k[i] = (double *) malloc (dim * sizeof (double)); + + if (state->k[i] == 0) + { + for (j = 0; j < i; j++) + { + free (state->k[j]); + } + free (state->y0); + free (state->ytmp); + free (state); + GSL_ERROR_NULL ("failed to allocate space for k's", GSL_ENOMEM); + } + } + + return state; +} + + +static int +rk8pd_apply (void *vstate, + size_t dim, + double t, + double h, + double y[], + double yerr[], + const double dydt_in[], + double dydt_out[], const gsl_odeiv_system * sys) +{ + rk8pd_state_t *state = (rk8pd_state_t *) vstate; + + size_t i; + + double *const ytmp = state->ytmp; + double *const y0 = state->y0; + /* Note that k1 is stored in state->k[0] due to zero-based indexing */ + double *const k1 = state->k[0]; + double *const k2 = state->k[1]; + double *const k3 = state->k[2]; + double *const k4 = state->k[3]; + double *const k5 = state->k[4]; + double *const k6 = state->k[5]; + double *const k7 = state->k[6]; + double *const k8 = state->k[7]; + double *const k9 = state->k[8]; + double *const k10 = state->k[9]; + double *const k11 = state->k[10]; + double *const k12 = state->k[11]; + double *const k13 = state->k[12]; + + DBL_MEMCPY (y0, y, dim); + + /* k1 step */ + if (dydt_in != NULL) + { + DBL_MEMCPY (k1, dydt_in, dim); + } + else + { + int s = GSL_ODEIV_FN_EVAL (sys, t, y, k1); + + if (s != GSL_SUCCESS) + { + return s; + } + } + + for (i = 0; i < dim; i++) + ytmp[i] = y[i] + b21 * h * k1[i]; + + /* k2 step */ + { + int s = GSL_ODEIV_FN_EVAL (sys, t + ah[0] * h, ytmp, k2); + + if (s != GSL_SUCCESS) + { + return s; + } + } + + for (i = 0; i < dim; i++) + ytmp[i] = y[i] + h * (b3[0] * k1[i] + b3[1] * k2[i]); + + /* k3 step */ + { + int s = GSL_ODEIV_FN_EVAL (sys, t + ah[1] * h, ytmp, k3); + + if (s != GSL_SUCCESS) + { + return s; + } + } + + for (i = 0; i < dim; i++) + ytmp[i] = y[i] + h * (b4[0] * k1[i] + b4[2] * k3[i]); + + /* k4 step */ + { + int s = GSL_ODEIV_FN_EVAL (sys, t + ah[2] * h, ytmp, k4); + + if (s != GSL_SUCCESS) + { + return s; + } + } + + for (i = 0; i < dim; i++) + ytmp[i] = y[i] + h * (b5[0] * k1[i] + b5[2] * k3[i] + b5[3] * k4[i]); + + /* k5 step */ + { + int s = GSL_ODEIV_FN_EVAL (sys, t + ah[3] * h, ytmp, k5); + + if (s != GSL_SUCCESS) + { + return s; + } + } + + for (i = 0; i < dim; i++) + ytmp[i] = y[i] + h * (b6[0] * k1[i] + b6[3] * k4[i] + b6[4] * k5[i]); + + /* k6 step */ + { + int s = GSL_ODEIV_FN_EVAL (sys, t + ah[4] * h, ytmp, k6); + + if (s != GSL_SUCCESS) + { + return s; + } + } + + for (i = 0; i < dim; i++) + ytmp[i] = + y[i] + h * (b7[0] * k1[i] + b7[3] * k4[i] + b7[4] * k5[i] + + b7[5] * k6[i]); + + /* k7 step */ + { + int s = GSL_ODEIV_FN_EVAL (sys, t + ah[5] * h, ytmp, k7); + + if (s != GSL_SUCCESS) + { + return s; + } + } + + for (i = 0; i < dim; i++) + ytmp[i] = + y[i] + h * (b8[0] * k1[i] + b8[3] * k4[i] + b8[4] * k5[i] + + b8[5] * k6[i] + b8[6] * k7[i]); + + /* k8 step */ + { + int s = GSL_ODEIV_FN_EVAL (sys, t + ah[6] * h, ytmp, k8); + + if (s != GSL_SUCCESS) + { + return s; + } + } + + for (i = 0; i < dim; i++) + ytmp[i] = + y[i] + h * (b9[0] * k1[i] + b9[3] * k4[i] + b9[4] * k5[i] + + b9[5] * k6[i] + b9[6] * k7[i] + b9[7] * k8[i]); + + /* k9 step */ + { + int s = GSL_ODEIV_FN_EVAL (sys, t + ah[7] * h, ytmp, k9); + + if (s != GSL_SUCCESS) + { + return s; + } + } + + for (i = 0; i < dim; i++) + ytmp[i] = + y[i] + h * (b10[0] * k1[i] + b10[3] * k4[i] + b10[4] * k5[i] + + b10[5] * k6[i] + b10[6] * k7[i] + b10[7] * k8[i] + + b10[8] * k9[i]); + + /* k10 step */ + { + int s = GSL_ODEIV_FN_EVAL (sys, t + ah[8] * h, ytmp, k10); + + if (s != GSL_SUCCESS) + { + return s; + } + } + + for (i = 0; i < dim; i++) + ytmp[i] = + y[i] + h * (b11[0] * k1[i] + b11[3] * k4[i] + b11[4] * k5[i] + + b11[5] * k6[i] + b11[6] * k7[i] + b11[7] * k8[i] + + b11[8] * k9[i] + b11[9] * k10[i]); + + /* k11 step */ + { + int s = GSL_ODEIV_FN_EVAL (sys, t + ah[9] * h, ytmp, k11); + + if (s != GSL_SUCCESS) + { + return s; + } + } + + for (i = 0; i < dim; i++) + ytmp[i] = + y[i] + h * (b12[0] * k1[i] + b12[3] * k4[i] + b12[4] * k5[i] + + b12[5] * k6[i] + b12[6] * k7[i] + b12[7] * k8[i] + + b12[8] * k9[i] + b12[9] * k10[i] + b12[10] * k11[i]); + + /* k12 step */ + { + int s = GSL_ODEIV_FN_EVAL (sys, t + h, ytmp, k12); + + if (s != GSL_SUCCESS) + { + return s; + } + } + + for (i = 0; i < dim; i++) + ytmp[i] = + y[i] + h * (b13[0] * k1[i] + b13[3] * k4[i] + b13[4] * k5[i] + + b13[5] * k6[i] + b13[6] * k7[i] + b13[7] * k8[i] + + b13[8] * k9[i] + b13[9] * k10[i] + b13[10] * k11[i] + + b13[11] * k12[i]); + + /* k13 step */ + { + int s = GSL_ODEIV_FN_EVAL (sys, t + h, ytmp, k13); + + if (s != GSL_SUCCESS) + { + return s; + } + } + + /* final sum */ + for (i = 0; i < dim; i++) + { + const double ksum8 = + Abar[0] * k1[i] + Abar[5] * k6[i] + Abar[6] * k7[i] + + Abar[7] * k8[i] + Abar[8] * k9[i] + Abar[9] * k10[i] + + Abar[10] * k11[i] + Abar[11] * k12[i] + Abar[12] * k13[i]; + y[i] += h * ksum8; + } + + /* Evaluate dydt_out[]. */ + + if (dydt_out != NULL) + { + int s = GSL_ODEIV_FN_EVAL (sys, t + h, y, dydt_out); + + if (s != GSL_SUCCESS) + { + /* Restore initial values */ + DBL_MEMCPY (y, y0, dim); + return s; + } + } + + /* error estimate */ + for (i = 0; i < dim; i++) + { + const double ksum8 = + Abar[0] * k1[i] + Abar[5] * k6[i] + Abar[6] * k7[i] + + Abar[7] * k8[i] + Abar[8] * k9[i] + Abar[9] * k10[i] + + Abar[10] * k11[i] + Abar[11] * k12[i] + Abar[12] * k13[i]; + const double ksum7 = + A[0] * k1[i] + A[5] * k6[i] + A[6] * k7[i] + A[7] * k8[i] + + A[8] * k9[i] + A[9] * k10[i] + A[10] * k11[i] + A[11] * k12[i]; + yerr[i] = h * (ksum7 - ksum8); + } + + return GSL_SUCCESS; +} + +static int +rk8pd_reset (void *vstate, size_t dim) +{ + rk8pd_state_t *state = (rk8pd_state_t *) vstate; + + int i; + + for (i = 0; i < 13; i++) + { + DBL_ZERO_MEMSET (state->k[i], dim); + } + + DBL_ZERO_MEMSET (state->y0, dim); + DBL_ZERO_MEMSET (state->ytmp, dim); + + return GSL_SUCCESS; +} + +static unsigned int +rk8pd_order (void *vstate) +{ + rk8pd_state_t *state = (rk8pd_state_t *) vstate; + state = 0; /* prevent warnings about unused parameters */ + return 8; +} + +static void +rk8pd_free (void *vstate) +{ + rk8pd_state_t *state = (rk8pd_state_t *) vstate; + int i; + + for (i = 0; i < 13; i++) + { + free (state->k[i]); + } + free (state->y0); + free (state->ytmp); + free (state); +} + +static const gsl_odeiv_step_type rk8pd_type = { "rk8pd", /* name */ + 1, /* can use dydt_in */ + 1, /* gives exact dydt_out */ + &rk8pd_alloc, + &rk8pd_apply, + &rk8pd_reset, + &rk8pd_order, + &rk8pd_free +}; + +const gsl_odeiv_step_type *gsl_odeiv_step_rk8pd = &rk8pd_type; diff --git a/gsl-2.5/ode-initval/rk8pd.lo b/gsl-2.5/ode-initval/rk8pd.lo new file mode 100644 index 00000000..7727e28b --- /dev/null +++ b/gsl-2.5/ode-initval/rk8pd.lo @@ -0,0 +1,12 @@ +# rk8pd.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/rk8pd.o' + +# Name of the non-PIC object +non_pic_object='rk8pd.o' + diff --git a/gsl-2.5/ode-initval/rkck.c b/gsl-2.5/ode-initval/rkck.c new file mode 100644 index 00000000..73ee3a5f --- /dev/null +++ b/gsl-2.5/ode-initval/rkck.c @@ -0,0 +1,371 @@ +/* ode-initval/rkck.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Runge-Kutta 4(5), Cash-Karp */ + +/* Reference: Cash, J.R., Karp, A.H., ACM Transactions of Mathematical + Software, vol. 16 (1990) 201-222. */ + +/* Author: G. Jungman + */ +#include +#include +#include +#include +#include + +#include "odeiv_util.h" + +/* Cash-Karp constants */ +static const double ah[] = { 1.0 / 5.0, 0.3, 3.0 / 5.0, 1.0, 7.0 / 8.0 }; +static const double b21 = 1.0 / 5.0; +static const double b3[] = { 3.0 / 40.0, 9.0 / 40.0 }; +static const double b4[] = { 0.3, -0.9, 1.2 }; +static const double b5[] = { -11.0 / 54.0, 2.5, -70.0 / 27.0, 35.0 / 27.0 }; +static const double b6[] = + { 1631.0 / 55296.0, 175.0 / 512.0, 575.0 / 13824.0, 44275.0 / 110592.0, + 253.0 / 4096.0 }; +static const double c1 = 37.0 / 378.0; +static const double c3 = 250.0 / 621.0; +static const double c4 = 125.0 / 594.0; +static const double c6 = 512.0 / 1771.0; + +/* These are the differences of fifth and fourth order coefficients + for error estimation */ + +static const double ec[] = { 0.0, + 37.0 / 378.0 - 2825.0 / 27648.0, + 0.0, + 250.0 / 621.0 - 18575.0 / 48384.0, + 125.0 / 594.0 - 13525.0 / 55296.0, + -277.0 / 14336.0, + 512.0 / 1771.0 - 0.25 +}; + +typedef struct +{ + double *k1; + double *k2; + double *k3; + double *k4; + double *k5; + double *k6; + double *y0; + double *ytmp; +} +rkck_state_t; + +static void * +rkck_alloc (size_t dim) +{ + rkck_state_t *state = (rkck_state_t *) malloc (sizeof (rkck_state_t)); + + if (state == 0) + { + GSL_ERROR_NULL ("failed to allocate space for rkck_state", GSL_ENOMEM); + } + + state->k1 = (double *) malloc (dim * sizeof (double)); + + if (state->k1 == 0) + { + free (state); + GSL_ERROR_NULL ("failed to allocate space for k1", GSL_ENOMEM); + } + + state->k2 = (double *) malloc (dim * sizeof (double)); + + if (state->k2 == 0) + { + free (state->k1); + free (state); + GSL_ERROR_NULL ("failed to allocate space for k2", GSL_ENOMEM); + } + + state->k3 = (double *) malloc (dim * sizeof (double)); + + if (state->k3 == 0) + { + free (state->k2); + free (state->k1); + free (state); + GSL_ERROR_NULL ("failed to allocate space for k3", GSL_ENOMEM); + } + + state->k4 = (double *) malloc (dim * sizeof (double)); + + if (state->k4 == 0) + { + free (state->k3); + free (state->k2); + free (state->k1); + free (state); + GSL_ERROR_NULL ("failed to allocate space for k4", GSL_ENOMEM); + } + + state->k5 = (double *) malloc (dim * sizeof (double)); + + if (state->k5 == 0) + { + free (state->k4); + free (state->k3); + free (state->k2); + free (state->k1); + free (state); + GSL_ERROR_NULL ("failed to allocate space for k5", GSL_ENOMEM); + } + + state->k6 = (double *) malloc (dim * sizeof (double)); + + if (state->k6 == 0) + { + free (state->k5); + free (state->k4); + free (state->k3); + free (state->k2); + free (state->k1); + free (state); + GSL_ERROR_NULL ("failed to allocate space for k6", GSL_ENOMEM); + } + + state->y0 = (double *) malloc (dim * sizeof (double)); + + if (state->y0 == 0) + { + free (state->k6); + free (state->k5); + free (state->k4); + free (state->k3); + free (state->k2); + free (state->k1); + free (state); + GSL_ERROR_NULL ("failed to allocate space for y0", GSL_ENOMEM); + } + + state->ytmp = (double *) malloc (dim * sizeof (double)); + + if (state->ytmp == 0) + { + free (state->y0); + free (state->k6); + free (state->k5); + free (state->k4); + free (state->k3); + free (state->k2); + free (state->k1); + free (state); + GSL_ERROR_NULL ("failed to allocate space for ytmp", GSL_ENOMEM); + } + + return state; +} + + +static int +rkck_apply (void *vstate, + size_t dim, + double t, + double h, + double y[], + double yerr[], + const double dydt_in[], + double dydt_out[], const gsl_odeiv_system * sys) +{ + rkck_state_t *state = (rkck_state_t *) vstate; + + size_t i; + + double *const k1 = state->k1; + double *const k2 = state->k2; + double *const k3 = state->k3; + double *const k4 = state->k4; + double *const k5 = state->k5; + double *const k6 = state->k6; + double *const ytmp = state->ytmp; + double *const y0 = state->y0; + + DBL_MEMCPY (y0, y, dim); + + /* k1 step */ + if (dydt_in != NULL) + { + DBL_MEMCPY (k1, dydt_in, dim); + } + else + { + int s = GSL_ODEIV_FN_EVAL (sys, t, y, k1); + + if (s != GSL_SUCCESS) + { + return s; + } + } + + for (i = 0; i < dim; i++) + ytmp[i] = y[i] + b21 * h * k1[i]; + + /* k2 step */ + { + int s = GSL_ODEIV_FN_EVAL (sys, t + ah[0] * h, ytmp, k2); + + if (s != GSL_SUCCESS) + { + return s; + } + } + + for (i = 0; i < dim; i++) + ytmp[i] = y[i] + h * (b3[0] * k1[i] + b3[1] * k2[i]); + + /* k3 step */ + { + int s = GSL_ODEIV_FN_EVAL (sys, t + ah[1] * h, ytmp, k3); + + if (s != GSL_SUCCESS) + { + return s; + } + } + + for (i = 0; i < dim; i++) + ytmp[i] = y[i] + h * (b4[0] * k1[i] + b4[1] * k2[i] + b4[2] * k3[i]); + + /* k4 step */ + { + int s = GSL_ODEIV_FN_EVAL (sys, t + ah[2] * h, ytmp, k4); + + if (s != GSL_SUCCESS) + { + return s; + } + } + + for (i = 0; i < dim; i++) + ytmp[i] = + y[i] + h * (b5[0] * k1[i] + b5[1] * k2[i] + b5[2] * k3[i] + + b5[3] * k4[i]); + + /* k5 step */ + { + int s = GSL_ODEIV_FN_EVAL (sys, t + ah[3] * h, ytmp, k5); + + if (s != GSL_SUCCESS) + { + return s; + } + } + + for (i = 0; i < dim; i++) + ytmp[i] = + y[i] + h * (b6[0] * k1[i] + b6[1] * k2[i] + b6[2] * k3[i] + + b6[3] * k4[i] + b6[4] * k5[i]); + + /* k6 step and final sum */ + { + int s = GSL_ODEIV_FN_EVAL (sys, t + ah[4] * h, ytmp, k6); + + if (s != GSL_SUCCESS) + { + return s; + } + } + + for (i = 0; i < dim; i++) + { + const double d_i = c1 * k1[i] + c3 * k3[i] + c4 * k4[i] + c6 * k6[i]; + y[i] += h * d_i; + } + + /* Evaluate dydt_out[]. */ + + if (dydt_out != NULL) + { + int s = GSL_ODEIV_FN_EVAL (sys, t + h, y, dydt_out); + + if (s != GSL_SUCCESS) + { + /* Restore initial values */ + DBL_MEMCPY (y, y0, dim); + return s; + } + } + + /* difference between 4th and 5th order */ + for (i = 0; i < dim; i++) + { + yerr[i] = h * (ec[1] * k1[i] + ec[3] * k3[i] + ec[4] * k4[i] + + ec[5] * k5[i] + ec[6] * k6[i]); + } + + return GSL_SUCCESS; +} + + +static int +rkck_reset (void *vstate, size_t dim) +{ + rkck_state_t *state = (rkck_state_t *) vstate; + + DBL_ZERO_MEMSET (state->k1, dim); + DBL_ZERO_MEMSET (state->k2, dim); + DBL_ZERO_MEMSET (state->k3, dim); + DBL_ZERO_MEMSET (state->k4, dim); + DBL_ZERO_MEMSET (state->k5, dim); + DBL_ZERO_MEMSET (state->k6, dim); + DBL_ZERO_MEMSET (state->ytmp, dim); + DBL_ZERO_MEMSET (state->y0, dim); + + return GSL_SUCCESS; +} + +static unsigned int +rkck_order (void *vstate) +{ + rkck_state_t *state = (rkck_state_t *) vstate; + state = 0; /* prevent warnings about unused parameters */ + return 5; /* FIXME: should this be 4? */ +} + +static void +rkck_free (void *vstate) +{ + rkck_state_t *state = (rkck_state_t *) vstate; + + free (state->ytmp); + free (state->y0); + free (state->k6); + free (state->k5); + free (state->k4); + free (state->k3); + free (state->k2); + free (state->k1); + free (state); +} + +static const gsl_odeiv_step_type rkck_type = { "rkck", /* name */ + 1, /* can use dydt_in */ + 1, /* gives exact dydt_out */ + &rkck_alloc, + &rkck_apply, + &rkck_reset, + &rkck_order, + &rkck_free +}; + +const gsl_odeiv_step_type *gsl_odeiv_step_rkck = &rkck_type; diff --git a/gsl-2.5/ode-initval/rkck.lo b/gsl-2.5/ode-initval/rkck.lo new file mode 100644 index 00000000..e9ddbdc5 --- /dev/null +++ b/gsl-2.5/ode-initval/rkck.lo @@ -0,0 +1,12 @@ +# rkck.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/rkck.o' + +# Name of the non-PIC object +non_pic_object='rkck.o' + diff --git a/gsl-2.5/ode-initval/rkf45.c b/gsl-2.5/ode-initval/rkf45.c new file mode 100644 index 00000000..f938d612 --- /dev/null +++ b/gsl-2.5/ode-initval/rkf45.c @@ -0,0 +1,372 @@ +/* ode-initval/rkf45.c + * + * Copyright (C) 2001, 2004, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Runge-Kutta-Fehlberg 4(5)*/ + +/* Reference eg. Hairer, E., Norsett S.P., Wanner, G. Solving ordinary + differential equations I, Nonstiff Problems, 2nd revised edition, + Springer, 2000. +*/ + +#include +#include +#include +#include +#include + +#include "odeiv_util.h" + +/* Runge-Kutta-Fehlberg coefficients. Zero elements left out */ + +static const double ah[] = { 1.0/4.0, 3.0/8.0, 12.0/13.0, 1.0, 1.0/2.0 }; +static const double b3[] = { 3.0/32.0, 9.0/32.0 }; +static const double b4[] = { 1932.0/2197.0, -7200.0/2197.0, 7296.0/2197.0}; +static const double b5[] = { 8341.0/4104.0, -32832.0/4104.0, 29440.0/4104.0, -845.0/4104.0}; +static const double b6[] = { -6080.0/20520.0, 41040.0/20520.0, -28352.0/20520.0, 9295.0/20520.0, -5643.0/20520.0}; + +static const double c1 = 902880.0/7618050.0; +static const double c3 = 3953664.0/7618050.0; +static const double c4 = 3855735.0/7618050.0; +static const double c5 = -1371249.0/7618050.0; +static const double c6 = 277020.0/7618050.0; + +/* These are the differences of fifth and fourth order coefficients + for error estimation */ + +static const double ec[] = { 0.0, + 1.0 / 360.0, + 0.0, + -128.0 / 4275.0, + -2197.0 / 75240.0, + 1.0 / 50.0, + 2.0 / 55.0 +}; + +typedef struct +{ + double *k1; + double *k2; + double *k3; + double *k4; + double *k5; + double *k6; + double *y0; + double *ytmp; +} +rkf45_state_t; + +static void * +rkf45_alloc (size_t dim) +{ + rkf45_state_t *state = (rkf45_state_t *) malloc (sizeof (rkf45_state_t)); + + if (state == 0) + { + GSL_ERROR_NULL ("failed to allocate space for rkf45_state", GSL_ENOMEM); + } + + state->k1 = (double *) malloc (dim * sizeof (double)); + + if (state->k1 == 0) + { + free (state); + GSL_ERROR_NULL ("failed to allocate space for k1", GSL_ENOMEM); + } + + state->k2 = (double *) malloc (dim * sizeof (double)); + + if (state->k2 == 0) + { + free (state->k1); + free (state); + GSL_ERROR_NULL ("failed to allocate space for k2", GSL_ENOMEM); + } + + state->k3 = (double *) malloc (dim * sizeof (double)); + + if (state->k3 == 0) + { + free (state->k2); + free (state->k1); + free (state); + GSL_ERROR_NULL ("failed to allocate space for k3", GSL_ENOMEM); + } + + state->k4 = (double *) malloc (dim * sizeof (double)); + + if (state->k4 == 0) + { + free (state->k3); + free (state->k2); + free (state->k1); + free (state); + GSL_ERROR_NULL ("failed to allocate space for k4", GSL_ENOMEM); + } + + state->k5 = (double *) malloc (dim * sizeof (double)); + + if (state->k5 == 0) + { + free (state->k4); + free (state->k3); + free (state->k2); + free (state->k1); + free (state); + GSL_ERROR_NULL ("failed to allocate space for k5", GSL_ENOMEM); + } + + state->k6 = (double *) malloc (dim * sizeof (double)); + + if (state->k6 == 0) + { + free (state->k5); + free (state->k4); + free (state->k3); + free (state->k2); + free (state->k1); + free (state); + GSL_ERROR_NULL ("failed to allocate space for k6", GSL_ENOMEM); + } + + state->y0 = (double *) malloc (dim * sizeof (double)); + + if (state->y0 == 0) + { + free (state->k6); + free (state->k5); + free (state->k4); + free (state->k3); + free (state->k2); + free (state->k1); + free (state); + GSL_ERROR_NULL ("failed to allocate space for y0", GSL_ENOMEM); + } + + state->ytmp = (double *) malloc (dim * sizeof (double)); + + if (state->ytmp == 0) + { + free (state->y0); + free (state->k6); + free (state->k5); + free (state->k4); + free (state->k3); + free (state->k2); + free (state->k1); + free (state); + GSL_ERROR_NULL ("failed to allocate space for ytmp", GSL_ENOMEM); + } + + return state; +} + + +static int +rkf45_apply (void *vstate, + size_t dim, + double t, + double h, + double y[], + double yerr[], + const double dydt_in[], + double dydt_out[], const gsl_odeiv_system * sys) +{ + rkf45_state_t *state = (rkf45_state_t *) vstate; + + size_t i; + + double *const k1 = state->k1; + double *const k2 = state->k2; + double *const k3 = state->k3; + double *const k4 = state->k4; + double *const k5 = state->k5; + double *const k6 = state->k6; + double *const ytmp = state->ytmp; + double *const y0 = state->y0; + + DBL_MEMCPY (y0, y, dim); + + /* k1 step */ + if (dydt_in != NULL) + { + DBL_MEMCPY (k1, dydt_in, dim); + } + else + { + int s = GSL_ODEIV_FN_EVAL (sys, t, y, k1); + + if (s != GSL_SUCCESS) + { + return s; + } + } + + for (i = 0; i < dim; i++) + ytmp[i] = y[i] + ah[0] * h * k1[i]; + + /* k2 step */ + { + int s = GSL_ODEIV_FN_EVAL (sys, t + ah[0] * h, ytmp, k2); + + if (s != GSL_SUCCESS) + { + return s; + } + } + + for (i = 0; i < dim; i++) + ytmp[i] = y[i] + h * (b3[0] * k1[i] + b3[1] * k2[i]); + + /* k3 step */ + { + int s = GSL_ODEIV_FN_EVAL (sys, t + ah[1] * h, ytmp, k3); + + if (s != GSL_SUCCESS) + { + return s; + } + } + + for (i = 0; i < dim; i++) + ytmp[i] = y[i] + h * (b4[0] * k1[i] + b4[1] * k2[i] + b4[2] * k3[i]); + + /* k4 step */ + { + int s = GSL_ODEIV_FN_EVAL (sys, t + ah[2] * h, ytmp, k4); + + if (s != GSL_SUCCESS) + { + return s; + } + } + + for (i = 0; i < dim; i++) + ytmp[i] = + y[i] + h * (b5[0] * k1[i] + b5[1] * k2[i] + b5[2] * k3[i] + + b5[3] * k4[i]); + + /* k5 step */ + { + int s = GSL_ODEIV_FN_EVAL (sys, t + ah[3] * h, ytmp, k5); + + if (s != GSL_SUCCESS) + { + return s; + } + } + + for (i = 0; i < dim; i++) + ytmp[i] = + y[i] + h * (b6[0] * k1[i] + b6[1] * k2[i] + b6[2] * k3[i] + + b6[3] * k4[i] + b6[4] * k5[i]); + + /* k6 step and final sum */ + { + int s = GSL_ODEIV_FN_EVAL (sys, t + ah[4] * h, ytmp, k6); + + if (s != GSL_SUCCESS) + { + return s; + } + } + + for (i = 0; i < dim; i++) + { + const double d_i = c1 * k1[i] + c3 * k3[i] + c4 * k4[i] + c5 * k5[i] + c6 * k6[i]; + y[i] += h * d_i; + } + + /* Derivatives at output */ + + if (dydt_out != NULL) + { + int s = GSL_ODEIV_FN_EVAL (sys, t + h, y, dydt_out); + + if (s != GSL_SUCCESS) + { + /* Restore initial values */ + DBL_MEMCPY (y, y0, dim); + + return s; + } + } + + /* difference between 4th and 5th order */ + for (i = 0; i < dim; i++) + { + yerr[i] = h * (ec[1] * k1[i] + ec[3] * k3[i] + ec[4] * k4[i] + + ec[5] * k5[i] + ec[6] * k6[i]); + } + + return GSL_SUCCESS; +} + + +static int +rkf45_reset (void *vstate, size_t dim) +{ + rkf45_state_t *state = (rkf45_state_t *) vstate; + + DBL_ZERO_MEMSET (state->k1, dim); + DBL_ZERO_MEMSET (state->k2, dim); + DBL_ZERO_MEMSET (state->k3, dim); + DBL_ZERO_MEMSET (state->k4, dim); + DBL_ZERO_MEMSET (state->k5, dim); + DBL_ZERO_MEMSET (state->k6, dim); + DBL_ZERO_MEMSET (state->ytmp, dim); + DBL_ZERO_MEMSET (state->y0, dim); + + return GSL_SUCCESS; +} + +static unsigned int +rkf45_order (void *vstate) +{ + rkf45_state_t *state = (rkf45_state_t *) vstate; + state = 0; /* prevent warnings about unused parameters */ + return 5; +} + +static void +rkf45_free (void *vstate) +{ + rkf45_state_t *state = (rkf45_state_t *) vstate; + + free (state->ytmp); + free (state->y0); + free (state->k6); + free (state->k5); + free (state->k4); + free (state->k3); + free (state->k2); + free (state->k1); + free (state); +} + +static const gsl_odeiv_step_type rkf45_type = { "rkf45", /* name */ + 1, /* can use dydt_in */ + 0, /* gives exact dydt_out */ + &rkf45_alloc, + &rkf45_apply, + &rkf45_reset, + &rkf45_order, + &rkf45_free +}; + +const gsl_odeiv_step_type *gsl_odeiv_step_rkf45 = &rkf45_type; diff --git a/gsl-2.5/ode-initval/rkf45.lo b/gsl-2.5/ode-initval/rkf45.lo new file mode 100644 index 00000000..c7fdd114 --- /dev/null +++ b/gsl-2.5/ode-initval/rkf45.lo @@ -0,0 +1,12 @@ +# rkf45.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/rkf45.o' + +# Name of the non-PIC object +non_pic_object='rkf45.o' + diff --git a/gsl-2.5/ode-initval/step.c b/gsl-2.5/ode-initval/step.c new file mode 100644 index 00000000..7131cc96 --- /dev/null +++ b/gsl-2.5/ode-initval/step.c @@ -0,0 +1,90 @@ +/* ode-initval/odeiv.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman + */ +#include +#include +#include +#include + +gsl_odeiv_step * +gsl_odeiv_step_alloc(const gsl_odeiv_step_type * T, size_t dim) +{ + gsl_odeiv_step *s = (gsl_odeiv_step *) malloc (sizeof (gsl_odeiv_step)); + + if (s == 0) + { + GSL_ERROR_NULL ("failed to allocate space for ode struct", GSL_ENOMEM); + }; + + s->type = T; + s->dimension = dim; + + s->state = s->type->alloc(dim); + + if (s->state == 0) + { + free (s); /* exception in constructor, avoid memory leak */ + + GSL_ERROR_NULL ("failed to allocate space for ode state", GSL_ENOMEM); + }; + + return s; +} + +const char * +gsl_odeiv_step_name(const gsl_odeiv_step * s) +{ + return s->type->name; +} + +unsigned int +gsl_odeiv_step_order(const gsl_odeiv_step * s) +{ + return s->type->order(s->state); +} + +int +gsl_odeiv_step_apply( + gsl_odeiv_step * s, + double t, + double h, + double y[], + double yerr[], + const double dydt_in[], + double dydt_out[], + const gsl_odeiv_system * dydt) +{ + return s->type->apply(s->state, s->dimension, t, h, y, yerr, dydt_in, dydt_out, dydt); +} + +int +gsl_odeiv_step_reset(gsl_odeiv_step * s) +{ + return s->type->reset(s->state, s->dimension); +} + +void +gsl_odeiv_step_free(gsl_odeiv_step * s) +{ + RETURN_IF_NULL (s); + s->type->free(s->state); + free(s); +} diff --git a/gsl-2.5/ode-initval/step.lo b/gsl-2.5/ode-initval/step.lo new file mode 100644 index 00000000..a661131b --- /dev/null +++ b/gsl-2.5/ode-initval/step.lo @@ -0,0 +1,12 @@ +# step.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/step.o' + +# Name of the non-PIC object +non_pic_object='step.o' + diff --git a/gsl-2.5/ode-initval/test b/gsl-2.5/ode-initval/test new file mode 100755 index 00000000..af0e3a71 --- /dev/null +++ b/gsl-2.5/ode-initval/test @@ -0,0 +1,228 @@ +#! /bin/sh + +# test - temporary wrapper script for .libs/test +# Generated by libtool (GNU libtool) 2.4.2 +# +# The test program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s/\([`"$\\]\)/\\\1/g' + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command="(cd /home/groups/kipac/chto/package/gsl/gsl-2.5/ode-initval; LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LIBRARY_PATH; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; LD_LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/fftw/include:/home/users/chto/lib/fftw/lib:/home/users/chto/lib/healpix/lib:/home/users/chto/lib/namaster/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/include:/home/users/chto/cpp/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LD_LIBRARY_PATH; PATH=/share/software/user/open/curl/7.54.0/bin:/share/software/user/open/libressl/2.5.3/bin:/home/users/chto/lib/cfitsio:/home/users/chto/lib/cfitsio/include:/home/users/chto/lib:/home/users/chto/bin/bin:/home/users/chto/bin:/home/users/chto/.texlive/bin/x86_64-linux:/home/groups/kipac/chto/anaconda2/envs/newenv3/bin:/home/users/chto/.local/bin/include:/home/users/chto/.local/bin/lib:/home/users/chto/.local/bin:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/bin64:/share/software/user/open/fftw/3.3.6/bin:/home/groups/kipac/chto/anaconda2/condabin:/share/software/user/restricted/ifort/2019/bin:/share/software/user/open/gsl/2.3/bin:/share/software/user/srcc/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/dell/srvadmin/bin:/opt/dell/srvadmin/iSM/bin:/home/users/chto/bin; export PATH; gcc -g -O2 -o \$progdir/\$file test.o ./.libs/libgslodeiv.a ../linalg/.libs/libgsllinalg.a ../blas/.libs/libgslblas.a ../cblas/.libs/libgslcblas.so ../matrix/.libs/libgslmatrix.a ../permutation/.libs/libgslpermutation.a ../vector/.libs/libgslvector.a ../block/.libs/libgslblock.a ../complex/.libs/libgslcomplex.a ../ieee-utils/.libs/libgslieeeutils.a ../err/.libs/libgslerr.a ../test/.libs/libgsltest.a ../sys/.libs/libgslsys.a ../utils/.libs/libutils.a -lm -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/cblas/.libs -Wl,-rpath -Wl,/usr/local/lib)" + +# This environment variable determines our operation mode. +if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then + # install mode needs the following variables: + generated_by_libtool_version='2.4.2' + notinst_deplibs=' ../cblas/libgslcblas.la' +else + # When we are sourced in execute mode, $file and $ECHO are already set. + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + file="$0" + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + ECHO="printf %s\\n" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ which is used only on +# windows platforms, and (c) all begin with the string --lt- +# (application programs are unlikely to have options which match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's ../libtool value, followed by no. +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=$0 + shift + for lt_opt + do + case "$lt_opt" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%/[^/]*$%%'` + test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=. + lt_dump_F=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%^.*/%%'` + cat "$lt_dump_D/$lt_dump_F" + exit 0 + ;; + --lt-*) + $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n "$lt_option_debug"; then + echo "test:test:${LINENO}: libtool wrapper (GNU libtool) 2.4.2" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + $ECHO "test:test:${LINENO}: newargv[$lt_dump_args_N]: $lt_arg" + lt_dump_args_N=`expr $lt_dump_args_N + 1` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ + + if test -n "$lt_option_debug"; then + $ECHO "test:test:${LINENO}: newargv[0]: $progdir/$program" 1>&2 + func_lt_dump_args ${1+"$@"} 1>&2 + fi + exec "$progdir/$program" ${1+"$@"} + + $ECHO "$0: cannot exec $program $*" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from $@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case " $* " in + *\ --lt-*) + for lt_wr_arg + do + case $lt_wr_arg in + --lt-*) ;; + *) set x "$@" "$lt_wr_arg"; shift;; + esac + shift + done ;; + esac + func_exec_program_core ${1+"$@"} +} + + # Parse options + func_parse_lt_options "$0" ${1+"$@"} + + # Find the directory that this script lives in. + thisdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + test "x$thisdir" = "x$file" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=`ls -ld "$file" | /usr/bin/sed -n 's/.*-> //p'` + while test -n "$file"; do + destdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + + # If there was a directory component, then change thisdir. + if test "x$destdir" != "x$file"; then + case "$destdir" in + [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;; + *) thisdir="$thisdir/$destdir" ;; + esac + fi + + file=`$ECHO "$file" | /usr/bin/sed 's%^.*/%%'` + file=`ls -ld "$thisdir/$file" | /usr/bin/sed -n 's/.*-> //p'` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no + if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then + # special case for '.' + if test "$thisdir" = "."; then + thisdir=`pwd` + fi + # remove .libs from thisdir + case "$thisdir" in + *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /usr/bin/sed 's%[\\/][^\\/]*$%%'` ;; + .libs ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=`cd "$thisdir" && pwd` + test -n "$absdir" && thisdir="$absdir" + + program=lt-'test' + progdir="$thisdir/.libs" + + if test ! -f "$progdir/$program" || + { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /usr/bin/sed 1q`; \ + test "X$file" != "X$progdir/$program"; }; then + + file="$$-$program" + + if test ! -d "$progdir"; then + mkdir "$progdir" + else + rm -f "$progdir/$file" + fi + + # relink executable if necessary + if test -n "$relink_command"; then + if relink_command_output=`eval $relink_command 2>&1`; then : + else + printf %s\n "$relink_command_output" >&2 + rm -f "$progdir/$file" + exit 1 + fi + fi + + mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null || + { rm -f "$progdir/$program"; + mv -f "$progdir/$file" "$progdir/$program"; } + rm -f "$progdir/$file" + fi + + if test -f "$progdir/$program"; then + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + # Run the actual program with our arguments. + func_exec_program ${1+"$@"} + fi + else + # The program doesn't exist. + $ECHO "$0: error: \`$progdir/$program' does not exist" 1>&2 + $ECHO "This script is just a wrapper for $program." 1>&2 + $ECHO "See the libtool documentation for more information." 1>&2 + exit 1 + fi +fi diff --git a/gsl-2.5/ode-initval/test-suite.log b/gsl-2.5/ode-initval/test-suite.log new file mode 100644 index 00000000..9f71921e --- /dev/null +++ b/gsl-2.5/ode-initval/test-suite.log @@ -0,0 +1,14 @@ +========================================= + gsl 2.5: ode-initval/test-suite.log +========================================= + +# TOTAL: 1 +# PASS: 1 +# SKIP: 0 +# XFAIL: 0 +# FAIL: 0 +# XPASS: 0 +# ERROR: 0 + +.. contents:: :depth: 2 + diff --git a/gsl-2.5/ode-initval/test.c b/gsl-2.5/ode-initval/test.c new file mode 100644 index 00000000..409c3dd6 --- /dev/null +++ b/gsl-2.5/ode-initval/test.c @@ -0,0 +1,1268 @@ +/* ode-initval/test_odeiv.c + * + * Copyright (C) 2004, 2009 Tuomo Keskitalo + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Some functions and tests based on test.c by G. Jungman. +*/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "odeiv_util.h" + +/* Maximum number of ODE equations */ +#define MAXEQ 4 + +/* RHS for f=2. Solution y = 2 * t + t0 */ + +int +rhs_linear (double t, const double y[], double f[], void *params) +{ + f[0] = 2.0; + + return GSL_SUCCESS; +} + +int +jac_linear (double t, const double y[], double *dfdy, double dfdt[], + void *params) +{ + dfdy[0] = 0.0; + dfdt[0] = 0.0; + + return GSL_SUCCESS; +} + +gsl_odeiv_system rhs_func_lin = { + rhs_linear, + jac_linear, + 1, + 0 +}; + +/* RHS for f=y. Equals y=exp(t) with initial value y(0)=1.0 */ + +int +rhs_exp (double t, const double y[], double f[], void *params) +{ + f[0] = y[0]; + + return GSL_SUCCESS; +} + +int +jac_exp (double t, const double y[], double *dfdy, double dfdt[], + void *params) +{ + dfdy[0] = y[0]; + dfdt[0] = 0.0; + + return GSL_SUCCESS; +} + +gsl_odeiv_system rhs_func_exp = { + rhs_exp, + jac_exp, + 1, + 0 +}; + +/* RHS for f0 = -y1, f1 = y0 + equals y = [cos(t), sin(t)] with initial values [1, 0] +*/ + +int +rhs_sin (double t, const double y[], double f[], void *params) +{ + f[0] = -y[1]; + f[1] = y[0]; + + return GSL_SUCCESS; +} + +int +jac_sin (double t, const double y[], double *dfdy, double dfdt[], + void *params) +{ + dfdy[0] = 0.0; + dfdy[1] = -1.0; + dfdy[2] = 1.0; + dfdy[3] = 0.0; + + dfdt[0] = 0.0; + dfdt[1] = 0.0; + + return GSL_SUCCESS; +} + +gsl_odeiv_system rhs_func_sin = { + rhs_sin, + jac_sin, + 2, + 0 +}; + +/* Sine/cosine with random failures */ + +static int rhs_xsin_reset = 0; +static int jac_xsin_reset = 0; + +int +rhs_xsin (double t, const double y[], double f[], void *params) +{ + static int n = 0, m = 0; + + if (rhs_xsin_reset) { rhs_xsin_reset = 0; n = 0; m = 1;} + n++; + + if (n >= m) { + m = n * 1.3; + return GSL_EFAILED; + } ; + + if (n > 40 && n < 65) { + f[0] = GSL_NAN; + f[1] = GSL_NAN; + return GSL_EFAILED; + } + + f[0] = -y[1]; + f[1] = y[0]; + + return GSL_SUCCESS; +} + +int +jac_xsin (double t, const double y[], double *dfdy, double dfdt[], + void *params) +{ + static int n = 0; + + if (jac_xsin_reset) { jac_xsin_reset = 0; n = 0; } + + n++; + + if (n > 50 && n < 55) { + dfdy[0] = GSL_NAN; + dfdy[1] = GSL_NAN; + dfdy[2] = GSL_NAN; + dfdy[3] = GSL_NAN; + + dfdt[0] = GSL_NAN; + dfdt[1] = GSL_NAN; + return GSL_EFAILED; + } + + dfdy[0] = 0.0; + dfdy[1] = -1.0; + dfdy[2] = 1.0; + dfdy[3] = 0.0; + + dfdt[0] = 0.0; + dfdt[1] = 0.0; + + return GSL_SUCCESS; +} + +gsl_odeiv_system rhs_func_xsin = { + rhs_xsin, + jac_xsin, + 2, + 0 +}; + + +/* RHS for classic stiff example + dy0 / dt = 998 * y0 + 1998 * y1 y0(0) = 1.0 + dy1 / dt = -999 * y0 - 1999 * y1 y1(0) = 0.0 + + solution is + y0 = 2 * exp(-t) - exp(-1000 * t) + y1 = - exp(-t) + exp(-1000 * t) +*/ + +int +rhs_stiff (double t, const double y[], double f[], void *params) +{ + f[0] = 998.0 * y[0] + 1998.0 * y[1]; + f[1] = -999.0 * y[0] - 1999.0 * y[1]; + + return GSL_SUCCESS; +} + +int +jac_stiff (double t, const double y[], double *dfdy, double dfdt[], + void *params) +{ + dfdy[0] = 998.0; + dfdy[1] = 1998.0; + dfdy[2] = -999.0; + dfdy[3] = -1999.0; + + dfdt[0] = 0.0; + dfdt[1] = 0.0; + + return GSL_SUCCESS; +} + +gsl_odeiv_system rhs_func_stiff = { + rhs_stiff, + jac_stiff, + 2, + 0 +}; + +/* van Der Pol oscillator: + f0 = y1 y0(0) = 1.0 + f1 = -y0 + mu * y1 * (1 - y0^2) y1(0) = 0.0 +*/ + +int +rhs_vanderpol (double t, const double y[], double f[], void *params) +{ + const double mu = 10.0; + + f[0] = y[1]; + f[1] = -y[0] + mu * y[1] * (1.0 - y[0]*y[0]); + + return GSL_SUCCESS; +} + +int +jac_vanderpol (double t, const double y[], double *dfdy, double dfdt[], + void *params) +{ + const double mu = 10.0; + + dfdy[0] = 0.0; + dfdy[1] = 1.0; + dfdy[2] = -2.0 * mu * y[0] * y[1] - 1.0; + dfdy[3] = mu * (1.0 - y[0] * y[0]); + + dfdt[0] = 0.0; + dfdt[1] = 0.0; + + return GSL_SUCCESS; +} + +gsl_odeiv_system rhs_func_vanderpol = { + rhs_vanderpol, + jac_vanderpol, + 2, + 0 +}; + +/* The Oregonator - chemical Belusov-Zhabotinskii reaction + y0(0) = 1.0, y1(0) = 2.0, y2(0) = 3.0 +*/ + +int +rhs_oregonator (double t, const double y[], double f[], void *params) +{ + const double c1=77.27; + const double c2=8.375e-6; + const double c3=0.161; + + f[0] = c1 * (y[1] + y[0] * (1 - c2 * y[0] - y[1])); + f[1] = 1/c1 * (y[2] - y[1] * (1 + y[0])); + f[2] = c3 * (y[0] - y[2]); + + return GSL_SUCCESS; +} + +int +jac_oregonator (double t, const double y[], double *dfdy, double dfdt[], + void *params) +{ + const double c1=77.27; + const double c2=8.375e-6; + const double c3=0.161; + + dfdy[0] = c1 * (1 - 2 * c2 * y[0] - y[1]); + dfdy[1] = c1 * (1 - y[0]); + dfdy[2] = 0.0; + + dfdy[3] = 1/c1 * (-y[1]); + dfdy[4] = 1/c1 * (-1 - y[0]); + dfdy[5] = 1/c1; + + dfdy[6] = c3; + dfdy[7] = 0.0; + dfdy[8] = -c3; + + dfdt[0] = 0.0; + dfdt[1] = 0.0; + dfdt[2] = 0.0; + + return GSL_SUCCESS; +} + +gsl_odeiv_system rhs_func_oregonator = { + rhs_oregonator, + jac_oregonator, + 3, + 0 +}; + +/* Volterra-Lotka predator-prey model + + f0 = (a - b * y1) * y0 y0(0) = 3.0 + f1 = (-c + d * y0) * y1 y1(0) = 1.0 + */ + +int +rhs_vl (double t, const double y[], double f[], void *params) +{ + const double a = 1.0; + const double b = 1.0; + const double c = 1.0; + const double d = 1.0; + + f[0] = (a - b * y[1]) * y[0]; + f[1] = (-c + d * y[0]) * y[1]; + + return GSL_SUCCESS; +} + +int +jac_vl (double t, const double y[], double *dfdy, double dfdt[], + void *params) +{ + const double a = 1.0; + const double b = 1.0; + const double c = 1.0; + const double d = 1.0; + + dfdy[0] = a - b * y[1]; + dfdy[1] = -b * y[0]; + dfdy[2] = d * y[1]; + dfdy[3] = -c + d * y[0]; + + dfdt[0] = 0.0; + dfdt[1] = 0.0; + + return GSL_SUCCESS; +} + +gsl_odeiv_system rhs_func_vl = { + rhs_vl, + jac_vl, + 2, + 0 +}; + +/* Stiff trigonometric example + + f0 = -50 * (y0 - cos(t)) y0(0) = 0.0 + */ + +int +rhs_stifftrig (double t, const double y[], double f[], void *params) +{ + f[0] = -50 * (y[0] - cos(t)); + + return GSL_SUCCESS; +} + +int +jac_stifftrig (double t, const double y[], double *dfdy, double dfdt[], + void *params) +{ + dfdy[0] = -50; + + dfdt[0] = -50 * sin(t); + + return GSL_SUCCESS; +} + +gsl_odeiv_system rhs_func_stifftrig = { + rhs_stifftrig, + jac_stifftrig, + 1, + 0 +}; + +/* E5 - a stiff badly scaled chemical problem by Enright, Hull & + Lindberg (1975): Comparing numerical methods for stiff systems of + ODEs. BIT, vol. 15, pp. 10-48. + + f0 = -a * y0 - b * y0 * y2 y0(0) = 1.76e-3 + f1 = a * y0 - m * c * y1 * y2 y1(0) = 0.0 + f2 = a * y0 - b * y0 * y2 - m * c * y1 * y2 + c * y3 y2(0) = 0.0 + f3 = b * y0 * y2 - c * y3 y3(0) = 0.0 + */ + +int +rhs_e5 (double t, const double y[], double f[], void *params) +{ + const double a = 7.89e-10; + const double b = 1.1e7; + const double c = 1.13e3; + const double m = 1.0e6; + + f[0] = -a * y[0] - b * y[0] * y[2]; + f[1] = a * y[0] - m * c * y[1] * y[2]; + f[3] = b * y[0] * y[2] - c * y[3]; + f[2] = f[1] - f[3]; + + return GSL_SUCCESS; +} + +int +jac_e5 (double t, const double y[], double *dfdy, double dfdt[], + void *params) +{ + const double a = 7.89e-10; + const double b = 1.1e7; + const double c = 1.13e3; + const double m = 1.0e6; + + dfdy[0] = -a - b * y[2]; + dfdy[1] = 0.0; + dfdy[2] = -b * y[0]; + dfdy[3] = 0.0; + + dfdy[4] = a; + dfdy[5] = -m * c * y[2]; + dfdy[6] = -m * c * y[1]; + dfdy[7] = 0.0; + + dfdy[8] = a - b * y[2]; + dfdy[9] = -m * c * y[2]; + dfdy[10] = -b * y[0] - m * c * y[1]; + dfdy[11] = c; + + dfdy[12] = b * y[2]; + dfdy[13] = 0.0; + dfdy[14] = b * y[0]; + dfdy[15] = -c; + + dfdt[0] = 0.0; + dfdt[1] = 0.0; + dfdt[2] = 0.0; + dfdt[3] = 0.0; + + return GSL_SUCCESS; +} + +gsl_odeiv_system rhs_func_e5 = { + rhs_e5, + jac_e5, + 4, + 0 +}; + +void +test_odeiv_stepper (const gsl_odeiv_step_type *T, const gsl_odeiv_system *sys, + const double h, const double t, const char desc[], + const double ystart[], const double yfin[], + const double relerr) +{ + /* tests stepper T with one fixed length step advance of system sys + and compares with given values yfin + */ + + double y[MAXEQ] = {0.0}; + double yerr[MAXEQ] = {0.0}; + size_t ne = sys->dimension; + size_t i; + + gsl_odeiv_step *step = gsl_odeiv_step_alloc (T, ne); + + DBL_MEMCPY (y, ystart, MAXEQ); + + { + int s = gsl_odeiv_step_apply (step, t, h, y, yerr, 0, 0, sys); + if (s != GSL_SUCCESS) + { + gsl_test(s, "test_odeiv_stepper: %s step_apply returned %d", desc, s); + } + } + + for (i = 0; i < ne; i++) + { + gsl_test_rel (y[i], yfin[i], relerr, + "%s %s step(%d)", + gsl_odeiv_step_name (step), desc,i); + } + + gsl_odeiv_step_free (step); +} + +void +test_stepper (const gsl_odeiv_step_type *T) +{ + /* Tests stepper T with a step of selected systems */ + + double y[MAXEQ] = {0.0}; + double yfin[MAXEQ] = {0.0}; + + /* Step length */ + double h; + + /* Required tolerance */ + double err_target; + + /* linear */ + h = 1e-1; + err_target = 1e-10; + y[0] = 0.58; + yfin[0] = y[0] + 2 * h; + test_odeiv_stepper (T, &rhs_func_lin, h, 0.0, "linear", + y, yfin, err_target); + + /* exponential */ + h = 1e-4; + err_target = 1e-8; + y[0] = exp(2.7); + yfin[0] = exp(2.7 + h); + test_odeiv_stepper (T, &rhs_func_exp, h, 2.7, "exponential", + y, yfin, err_target); + /* cosine-sine */ + h = 1e-3; + err_target = 1e-6; + y[0] = cos(1.2); + y[1] = sin(1.2); + yfin[0] = cos(1.2 + h); + yfin[1] = sin(1.2 + h); + test_odeiv_stepper (T, &rhs_func_sin, h, 1.2, "cosine-sine", + y, yfin, err_target); + + /* classic stiff */ + h = 1e-7; + err_target = 1e-4; + y[0] = 1.0; + y[1] = 0.0; + + { + const double e1 = exp (-h); + const double e2 = exp (-1000.0 * h); + yfin[0] = 2.0 * e1 - e2; + yfin[1] = -e1 + e2; + } + + test_odeiv_stepper (T, &rhs_func_stiff, h, 0.0, "classic_stiff", + y, yfin, err_target); +} + +void +test_evolve_system (const gsl_odeiv_step_type * T, + const gsl_odeiv_system * sys, + double t0, double t1, double hstart, + double y[], double yfin[], + double err_target, const char *desc) +{ + /* Tests system sys with stepper T. Step length is controlled by + error estimation from the stepper. + */ + + int steps = 0; + size_t i; + + double t = t0; + double h = hstart; + + /* Tolerance factor in testing errors */ + const double factor = 10; + + gsl_odeiv_step * step = gsl_odeiv_step_alloc (T, sys->dimension); + + gsl_odeiv_control *c = + gsl_odeiv_control_standard_new (err_target, err_target, 1.0, 0.0); + + gsl_odeiv_evolve *e = gsl_odeiv_evolve_alloc (sys->dimension); + + double * y_orig = malloc (sys->dimension * sizeof(double)); + + while (t < t1) + { + double t_orig = t; + int s; + memcpy (y_orig, y, sys->dimension * sizeof(double)); + s= gsl_odeiv_evolve_apply (e, c, step, sys, &t, t1, &h, y); + + if (s != GSL_SUCCESS) + { + /* check that t and y are unchanged */ + gsl_test_abs(t, t_orig, 0.0, "%s, t must be restored on failure", + gsl_odeiv_step_name (step)); + + for (i = 0; i < sys->dimension; i++) + { + gsl_test_abs (y[i], y_orig[i], 0.0, + "%s, y must be restored on failure", + gsl_odeiv_step_name (step), desc, i); + } + + if (sys != &rhs_func_xsin) { + /* apart from xsin, other functions should not return errors */ + gsl_test(s, "%s evolve_apply returned %d", + gsl_odeiv_step_name (step), s); + break; + } + } + + if (steps > 100000) + { + gsl_test(GSL_EFAILED, + "%s evolve_apply reached maxiter", + gsl_odeiv_step_name (step)); + break; + } + + steps++; + } + + /* err_target is target error of one step. Test if stepper has made + larger error than (tolerance factor times) the number of steps + times the err_target */ + + for (i = 0; i < sys->dimension; i++) + { + gsl_test_abs (y[i], yfin[i], factor * e->count * err_target, + "%s %s evolve(%d)", + gsl_odeiv_step_name (step), desc, i); + } + + free (y_orig); + gsl_odeiv_evolve_free (e); + gsl_odeiv_control_free (c); + gsl_odeiv_step_free (step); +} + +int +sys_driver (const gsl_odeiv_step_type * T, + const gsl_odeiv_system * sys, + double t0, double t1, double hstart, + double y[], double epsabs, double epsrel, + const char desc[]) +{ + /* This function evolves a system sys with stepper T from t0 to t1. + Step length is varied via error control with possibly different + absolute and relative error tolerances. + */ + + int s = 0; + int steps = 0; + + double t = t0; + double h = hstart; + + gsl_odeiv_step * step = gsl_odeiv_step_alloc (T, sys->dimension); + + gsl_odeiv_control *c = + gsl_odeiv_control_standard_new (epsabs, epsrel, 1.0, 0.0); + gsl_odeiv_evolve *e = gsl_odeiv_evolve_alloc (sys->dimension); + + while (t < t1) + { + s = gsl_odeiv_evolve_apply (e, c, step, sys, &t, t1, &h, y); + + if (s != GSL_SUCCESS) + { + gsl_test(s, "sys_driver: %s evolve_apply returned %d", + gsl_odeiv_step_name (step), s); + break; + } + + if (steps > 1e7) + { + gsl_test(GSL_EMAXITER, + "sys_driver: %s evolve_apply reached maxiter at t=%g", + gsl_odeiv_step_name (step), t); + s = GSL_EMAXITER; + break; + } + + steps++; + } + + gsl_test(s, "%s %s [%g,%g], %d steps completed", + gsl_odeiv_step_name (step), desc, t0, t1, steps); + + gsl_odeiv_evolve_free (e); + gsl_odeiv_control_free (c); + gsl_odeiv_step_free (step); + + return s; +} + +void +test_compare_vanderpol (void) +{ + /* Compares output of van Der Pol oscillator with several steppers */ + + /* system dimension */ + const size_t sd = 2; + + const gsl_odeiv_step_type *steppers[20]; + const gsl_odeiv_step_type **T; + + /* Required error tolerance for each stepper. */ + double err_target[20]; + + /* number of ODE solvers */ + const size_t ns = 11; + + /* initial values for each ode-solver */ + double y[11][2]; + double *yp = &y[0][0]; + + size_t i, j, k; + int status = 0; + + /* Parameters for the problem and stepper */ + const double start = 0.0; + const double end = 100.0; + const double epsabs = 1e-8; + const double epsrel = 1e-8; + const double initstepsize = 1e-5; + + /* Initialize */ + + steppers[0] = gsl_odeiv_step_rk2; + err_target[0] = 1e-6; + steppers[1] = gsl_odeiv_step_rk4; + err_target[1] = 1e-6; + steppers[2] = gsl_odeiv_step_rkf45; + err_target[2] = 1e-6; + steppers[3] = gsl_odeiv_step_rkck; + err_target[3] = 1e-6; + steppers[4] = gsl_odeiv_step_rk8pd; + err_target[4] = 1e-6; + steppers[5] = gsl_odeiv_step_rk2imp; + err_target[5] = 1e-5; + steppers[6] = gsl_odeiv_step_rk2simp; + err_target[6] = 1e-5; + steppers[7] = gsl_odeiv_step_rk4imp; + err_target[7] = 1e-6; + steppers[8] = gsl_odeiv_step_bsimp; + err_target[8] = 1e-7; + steppers[9] = gsl_odeiv_step_gear1; + err_target[9] = 1e-2; + steppers[10] = gsl_odeiv_step_gear2; + err_target[10] = 1e-6; + steppers[11] = 0; + + T = steppers; + + for (i = 0; i < ns; i++) + { + y[i][0] = 1.0; + y[i][1] = 0.0; + } + + /* Call each solver for the problem */ + + i = 0; + while (*T != 0) + { + { + int s = sys_driver (*T, &rhs_func_vanderpol, + start, end, initstepsize, &yp[i], + epsabs, epsrel, "vanderpol"); + if (s != GSL_SUCCESS) + { + status++; + } + } + + T++; + i += sd; + } + + if (status != GSL_SUCCESS) + { + return; + } + + /* Compare results */ + + T = steppers; + + for (i = 0; i < ns; i++) + for (j = i+1; j < ns; j++) + for (k = 0; k < sd; k++) + { + const double val1 = yp[sd * i + k]; + const double val2 = yp[sd * j + k]; + gsl_test_abs (val1, val2, + ( GSL_MAX(err_target[i], err_target[j]) ), + "%s/%s vanderpol", + T[i]->name, T[j]->name); + } + +} + +void +test_compare_oregonator (void) +{ + /* Compares output of the Oregonator with several steppers */ + + /* system dimension */ + const size_t sd = 3; + + const gsl_odeiv_step_type *steppers[20]; + const gsl_odeiv_step_type **T; + + /* Required error tolerance for each stepper. */ + double err_target[20]; + + /* number of ODE solvers */ + const size_t ns = 2; + + /* initial values for each ode-solver */ + double y[2][3]; + double *yp = &y[0][0]; + + size_t i, j, k; + int status = 0; + + /* Parameters for the problem and stepper */ + const double start = 0.0; + const double end = 360.0; + const double epsabs = 1e-8; + const double epsrel = 1e-8; + const double initstepsize = 1e-5; + + /* Initialize */ + + steppers[0] = gsl_odeiv_step_rk2simp; + err_target[0] = 1e-6; + steppers[1] = gsl_odeiv_step_bsimp; + err_target[1] = 1e-6; + steppers[2] = 0; + + T = steppers; + + for (i = 0; i < ns; i++) + { + y[i][0] = 1.0; + y[i][1] = 2.0; + y[i][2] = 3.0; + } + + /* Call each solver for the problem */ + + i = 0; + while (*T != 0) + { + { + int s = sys_driver (*T, &rhs_func_oregonator, + start, end, initstepsize, &yp[i], + epsabs, epsrel, "oregonator"); + + if (s != GSL_SUCCESS) + { + status++; + } + } + + T++; + i += sd; + } + + if (status != GSL_SUCCESS) + { + return; + } + + /* Compare results */ + + T = steppers; + + for (i = 0; i < ns; i++) + for (j = i+1; j < ns; j++) + for (k = 0; k < sd; k++) + { + const double val1 = yp[sd * i + k]; + const double val2 = yp[sd * j + k]; + gsl_test_rel (val1, val2, + ( GSL_MAX(err_target[i], err_target[j]) ), + "%s/%s oregonator", + T[i]->name, T[j]->name); + } + +} + +void +test_evolve_linear (const gsl_odeiv_step_type * T, double h, double err) +{ + double y[1]; + double yfin[1]; + + y[0] = 1.0; + yfin[0] = 9.0; + test_evolve_system (T, &rhs_func_lin, 0.0, 4.0, h, y, yfin, err, + "linear[0,4]"); +} + +void +test_evolve_exp (const gsl_odeiv_step_type * T, double h, double err) +{ + double y[1]; + double yfin[1]; + + y[0] = 1.0; + yfin[0] = exp (2.0); + test_evolve_system (T, &rhs_func_exp, 0.0, 2.0, h, y, yfin, err, + "exp[0,2]"); +} + +void +test_evolve_sin (const gsl_odeiv_step_type * T, double h, double err) +{ + double y[2]; + double yfin[2]; + + y[0] = 1.0; + y[1] = 0.0; + yfin[0] = cos (2.0); + yfin[1] = sin (2.0); + test_evolve_system (T, &rhs_func_sin, 0.0, 2.0, h, y, yfin, err, + "sine[0,2]"); +} + +void +test_evolve_xsin (const gsl_odeiv_step_type * T, double h, double err) +{ + double y[2]; + double yfin[2]; + y[0] = 1.0; + y[1] = 0.0; + yfin[0] = cos (2.0); + yfin[1] = sin (2.0); + rhs_xsin_reset = 1; + jac_xsin_reset = 1; + test_evolve_system (T, &rhs_func_xsin, 0.0, 2.0, h, y, yfin, err, + "sine[0,2] w/errors"); +} + + +void +test_evolve_stiff1 (const gsl_odeiv_step_type * T, double h, double err) +{ + double y[2]; + double yfin[2]; + + y[0] = 1.0; + y[1] = 0.0; + { + double arg = 1.0; + double e1 = exp (-arg); + double e2 = exp (-1000.0 * arg); + yfin[0] = 2.0 * e1 - e2; + yfin[1] = -e1 + e2; + } + test_evolve_system (T, &rhs_func_stiff, 0.0, 1.0, h, y, yfin, err, + "stiff[0,1]"); +} + +void +test_evolve_stiff5 (const gsl_odeiv_step_type * T, double h, double err) +{ + double y[2]; + double yfin[2]; + + y[0] = 1.0; + y[1] = 0.0; + { + double arg = 5.0; + double e1 = exp (-arg); + double e2 = exp (-1000.0 * arg); + yfin[0] = 2.0 * e1 - e2; + yfin[1] = -e1 + e2; + } + test_evolve_system (T, &rhs_func_stiff, 0.0, 5.0, h, y, yfin, err, + "stiff[0,5]"); +} + +/* Test cases from Frank Reininghaus */ + +int rhs_stepfn (double t, const double * y, double * dydt, void * params) { + if (t >= 1.0) + dydt [0] = 1; + else + dydt [0] = 0; + + return GSL_SUCCESS; +} + +void test_stepfn (void) { + /* infinite loop for epsabs = 1e-18, but not for 1e-17 */ + double epsabs = 1e-18; + double epsrel = 1e-6; + + const gsl_odeiv_step_type * T = gsl_odeiv_step_rk2; + gsl_odeiv_step * s = gsl_odeiv_step_alloc (T, 1); + gsl_odeiv_control * c = gsl_odeiv_control_y_new (epsabs, epsrel); + gsl_odeiv_evolve * e = gsl_odeiv_evolve_alloc (1); + gsl_odeiv_system sys = {rhs_stepfn, 0, 1, 0}; + + double t = 0.0; + double h = 1e-6; + double y = 0.0; + int i = 0; + int status; + + while (t < 2.0 && i < 1000000) { + status = gsl_odeiv_evolve_apply (e, c, s, &sys, &t, 2, &h, &y); +#ifdef DEBUG + printf("i=%d status=%d t=%g h=%g y=%g\n", i, status, t, h, y); +#endif + if (status != GSL_SUCCESS) + break; + + i++; + } + + gsl_test_abs(t, 2.0, 1e-16, "evolve step function, t (stepfn/rk2)"); + gsl_test_rel(y, 1.0, epsrel, "evolve step function, y (stepfn/rk2)"); + + gsl_odeiv_evolve_free (e); + gsl_odeiv_control_free (c); + gsl_odeiv_step_free (s); +} + +int rhs_stepfn2 (double t, const double * y, double * dydt, void * params) { + if (t >= 0.0) + dydt [0] = 1e300; + else + dydt [0] = 0; + + return GSL_SUCCESS; +} + +void test_stepfn2 (void) { + /* infinite loop for epsabs = 1e-25, but not for 1e-24 */ + double epsabs = 1e-25; + double epsrel = 1e-6; + + const gsl_odeiv_step_type * T = gsl_odeiv_step_rk2; + gsl_odeiv_step * s = gsl_odeiv_step_alloc (T, 1); + gsl_odeiv_control * c = gsl_odeiv_control_y_new (epsabs, epsrel); + gsl_odeiv_evolve * e = gsl_odeiv_evolve_alloc (1); + gsl_odeiv_system sys = {rhs_stepfn2, 0, 1, 0}; + + double t = -1.0; + double h = 1e-6; + double y = 0.0; + + int i = 0; + int status; + + while (t < 1.0 && i < 10000) { + status = gsl_odeiv_evolve_apply (e, c, s, &sys, &t, 1.0, &h, &y); +#ifdef DEBUG + printf("i=%d status=%d t=%g h=%g y=%g\n", i, status, t, h, y); +#endif + if (status != GSL_SUCCESS) + break; + + i++; + } + + gsl_test_abs(t, 1.0, 1e-16, "evolve big step function, t (stepfn2/rk2)"); + gsl_test_rel(y, 1e300, epsrel, "evolve big step function, y (stepfn2/rk2)"); + + gsl_odeiv_evolve_free (e); + gsl_odeiv_control_free (c); + gsl_odeiv_step_free (s); +} + +int rhs_stepfn3 (double t, const double * y, double * dydt, void * params) { + + static int calls = 0; + + if (t >= 0.0) + dydt [0] = 1e300; + else + dydt [0] = 0; + + calls++; + + return (calls < 100000) ? GSL_SUCCESS : -999; +} + + +void test_stepfn3 (void) { + /* infinite loop for epsabs = 1e-26, but not for 1e-25 */ + double epsabs = 1e-26; + double epsrel = 1e-6; + + const gsl_odeiv_step_type * T = gsl_odeiv_step_rkf45; + gsl_odeiv_step * s = gsl_odeiv_step_alloc (T, 1); + gsl_odeiv_control * c = gsl_odeiv_control_y_new (epsabs, epsrel); + gsl_odeiv_evolve * e = gsl_odeiv_evolve_alloc (1); + gsl_odeiv_system sys = {rhs_stepfn3, 0, 1, 0}; + + double t = -1.0; + double h = 1e-6; + double y = 0.0; + + int i = 0; + int status; + + while (t < 1.0 && i < 10000) { + status = gsl_odeiv_evolve_apply (e, c, s, &sys, &t, 1.0, &h, &y); +#ifdef DEBUG + printf("i=%d status=%d t=%g h=%g y=%g\n", i, status, t, h, y); +#endif + if (status != GSL_SUCCESS) + break; + + i++; + } + + gsl_test_abs(t, 1.0, 1e-16, "evolve big step function, t (stepfn3/rkf45)"); + gsl_test_rel(y, 1e300, epsrel, "evolve big step function, y (stepfn3/rkf45)"); + + gsl_odeiv_evolve_free (e); + gsl_odeiv_control_free (c); + gsl_odeiv_step_free (s); +} + +int rhs_cos (double t, const double * y, double * dydt, void * params) { + dydt [0] = cos (t); + return GSL_SUCCESS; +} + +int jac_cos (double t, const double y[], double *dfdy, double dfdt[], + void *params) +{ + dfdy[0] = 0.0; + dfdt[0] = -sin(t); + + return GSL_SUCCESS; +} + +/* Test evolution in negative direction */ + +void +test_evolve_negative_h (const gsl_odeiv_step_type * T, double h, double err) +{ + /* Tolerance factor in testing errors */ + const double factor = 10; + + gsl_odeiv_step * step = gsl_odeiv_step_alloc (T, 1); + gsl_odeiv_control * c = gsl_odeiv_control_standard_new (err, err, 1.0, 0.0); + gsl_odeiv_evolve * e = gsl_odeiv_evolve_alloc (1); + gsl_odeiv_system sys = {rhs_cos, jac_cos, 1, 0}; + + double t = 0; + double t1 = -4.0; + + double y = 0.0; + double yfin = sin (t1); + + /* Make initial h negative */ + h = -fabs(h); + + while (t > t1) { + int status = gsl_odeiv_evolve_apply (e, c, step, &sys, &t, t1, &h, &y); + + if (status != GSL_SUCCESS) + { + gsl_test(status, "%s evolve_apply returned %d for negative h", + gsl_odeiv_step_name (step), status); + break; + } + } + + gsl_test_abs (y, yfin, factor * e->count * err, + "evolution with negative h (using %s)", + gsl_odeiv_step_name (step)); + + gsl_odeiv_evolve_free (e); + gsl_odeiv_control_free (c); + gsl_odeiv_step_free (step); +} + +int +main (void) +{ + int i; + + struct ptype + { + const gsl_odeiv_step_type *type; + double h; + } + p[20]; + + p[0].type = gsl_odeiv_step_rk2; + p[0].h = 1.0e-3; + p[1].type = gsl_odeiv_step_rk4; + p[1].h = 1.0e-3; + p[2].type = gsl_odeiv_step_rkf45; + p[2].h = 1.0e-3; + p[3].type = gsl_odeiv_step_rkck; + p[3].h = 1.0e-3; + p[4].type = gsl_odeiv_step_rk8pd; + p[4].h = 1.0e-3; + p[5].type = gsl_odeiv_step_rk2imp; + p[5].h = 1.0e-3; + p[6].type = gsl_odeiv_step_rk2simp; + p[6].h = 1.0e-3; + p[7].type = gsl_odeiv_step_rk4imp; + p[7].h = 1.0e-3; + p[8].type = gsl_odeiv_step_bsimp; + p[8].h = 1.0e-3; + p[9].type = gsl_odeiv_step_gear1; + p[9].h = 1.0e-3; + p[10].type = gsl_odeiv_step_gear2; + p[10].h = 1.0e-3; + p[11].type = 0; + + gsl_ieee_env_setup (); + + for (i = 0; p[i].type != 0; i++) + { + test_stepper(p[i].type); + } + + for (i = 0; p[i].type != 0; i++) + { + test_evolve_linear (p[i].type, p[i].h, 1e-10); + test_evolve_exp (p[i].type, p[i].h, 1e-6); + test_evolve_sin (p[i].type, p[i].h, 1e-8); + test_evolve_xsin (p[i].type, p[i].h, 1e-8); + test_evolve_xsin (p[i].type, 0.1, 1e-8); /* test with large step size */ + test_evolve_stiff1 (p[i].type, p[i].h, 1e-7); + test_evolve_stiff5 (p[i].type, p[i].h, 1e-7); + test_evolve_negative_h (p[i].type, p[i].h, 1e-7); + } + + test_compare_vanderpol(); + test_compare_oregonator(); + + test_stepfn(); + test_stepfn2(); + test_stepfn3(); + + exit (gsl_test_summary ()); +} diff --git a/gsl-2.5/ode-initval/test.log b/gsl-2.5/ode-initval/test.log new file mode 100644 index 00000000..38693070 --- /dev/null +++ b/gsl-2.5/ode-initval/test.log @@ -0,0 +1 @@ +Completed [3509/3509] diff --git a/gsl-2.5/ode-initval/test.trs b/gsl-2.5/ode-initval/test.trs new file mode 100644 index 00000000..3f0f396c --- /dev/null +++ b/gsl-2.5/ode-initval/test.trs @@ -0,0 +1,4 @@ +:test-result: PASS +:global-test-result: PASS +:recheck: no +:copy-in-global-log: no diff --git a/gsl-2.5/ode-initval2/.deps/bsimp.Plo b/gsl-2.5/ode-initval2/.deps/bsimp.Plo new file mode 100644 index 00000000..cd08e28e --- /dev/null +++ b/gsl-2.5/ode-initval2/.deps/bsimp.Plo @@ -0,0 +1,318 @@ +bsimp.lo: bsimp.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/string.h \ + /usr/include/xlocale.h /usr/include/bits/string.h \ + /usr/include/bits/string2.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_linalg.h ../gsl/gsl_mode.h ../gsl/gsl_permutation.h \ + ../gsl/gsl_check_range.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_complex.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_blas.h ../gsl/gsl_blas_types.h \ + ../gsl/gsl_cblas.h ../gsl/gsl_odeiv2.h odeiv_util.h step_utils.c + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string.h: + +/usr/include/bits/string2.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_linalg.h: + +../gsl/gsl_mode.h: + +../gsl/gsl_permutation.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_blas.h: + +../gsl/gsl_blas_types.h: + +../gsl/gsl_cblas.h: + +../gsl/gsl_odeiv2.h: + +odeiv_util.h: + +step_utils.c: diff --git a/gsl-2.5/ode-initval2/.deps/control.Plo b/gsl-2.5/ode-initval2/.deps/control.Plo new file mode 100644 index 00000000..23386949 --- /dev/null +++ b/gsl-2.5/ode-initval2/.deps/control.Plo @@ -0,0 +1,173 @@ +control.lo: control.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_odeiv2.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_odeiv2.h: diff --git a/gsl-2.5/ode-initval2/.deps/cscal.Plo b/gsl-2.5/ode-initval2/.deps/cscal.Plo new file mode 100644 index 00000000..8e9777c6 --- /dev/null +++ b/gsl-2.5/ode-initval2/.deps/cscal.Plo @@ -0,0 +1,185 @@ +cscal.lo: cscal.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/string.h \ + /usr/include/xlocale.h /usr/include/bits/string.h \ + /usr/include/bits/string2.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_errno.h /usr/include/stdio.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_types.h ../gsl/gsl_math.h ../gsl/gsl_sys.h \ + ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_nan.h ../gsl/gsl_pow_int.h \ + ../gsl/gsl_minmax.h ../gsl/gsl_odeiv2.h control_utils.c + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string.h: + +/usr/include/bits/string2.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_odeiv2.h: + +control_utils.c: diff --git a/gsl-2.5/ode-initval2/.deps/cstd.Plo b/gsl-2.5/ode-initval2/.deps/cstd.Plo new file mode 100644 index 00000000..2a71b416 --- /dev/null +++ b/gsl-2.5/ode-initval2/.deps/cstd.Plo @@ -0,0 +1,175 @@ +cstd.lo: cstd.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_errno.h /usr/include/stdio.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_types.h ../gsl/gsl_math.h ../gsl/gsl_sys.h \ + ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_nan.h ../gsl/gsl_pow_int.h \ + ../gsl/gsl_minmax.h ../gsl/gsl_odeiv2.h control_utils.c + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_odeiv2.h: + +control_utils.c: diff --git a/gsl-2.5/ode-initval2/.deps/driver.Plo b/gsl-2.5/ode-initval2/.deps/driver.Plo new file mode 100644 index 00000000..953f8057 --- /dev/null +++ b/gsl-2.5/ode-initval2/.deps/driver.Plo @@ -0,0 +1,155 @@ +driver.lo: driver.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_errno.h /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_types.h ../gsl/gsl_odeiv2.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_odeiv2.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: diff --git a/gsl-2.5/ode-initval2/.deps/evolve.Plo b/gsl-2.5/ode-initval2/.deps/evolve.Plo new file mode 100644 index 00000000..ffa56284 --- /dev/null +++ b/gsl-2.5/ode-initval2/.deps/evolve.Plo @@ -0,0 +1,185 @@ +evolve.lo: evolve.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/string.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/xlocale.h /usr/include/bits/string.h \ + /usr/include/bits/string2.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/byteswap.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/bits/byteswap-16.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_odeiv2.h odeiv_util.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/string.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string.h: + +/usr/include/bits/string2.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_odeiv2.h: + +odeiv_util.h: diff --git a/gsl-2.5/ode-initval2/.deps/msadams.Plo b/gsl-2.5/ode-initval2/.deps/msadams.Plo new file mode 100644 index 00000000..6dffa5ea --- /dev/null +++ b/gsl-2.5/ode-initval2/.deps/msadams.Plo @@ -0,0 +1,310 @@ +msadams.lo: msadams.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/string.h \ + /usr/include/xlocale.h /usr/include/bits/string.h \ + /usr/include/bits/string2.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_odeiv2.h ../gsl/gsl_blas.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_complex.h \ + ../gsl/gsl_check_range.h ../gsl/gsl_vector_long_double.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_vector_complex.h \ + ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_blas_types.h ../gsl/gsl_cblas.h \ + odeiv_util.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string.h: + +/usr/include/bits/string2.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_odeiv2.h: + +../gsl/gsl_blas.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_blas_types.h: + +../gsl/gsl_cblas.h: + +odeiv_util.h: diff --git a/gsl-2.5/ode-initval2/.deps/msbdf.Plo b/gsl-2.5/ode-initval2/.deps/msbdf.Plo new file mode 100644 index 00000000..08fb2872 --- /dev/null +++ b/gsl-2.5/ode-initval2/.deps/msbdf.Plo @@ -0,0 +1,317 @@ +msbdf.lo: msbdf.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/string.h \ + /usr/include/xlocale.h /usr/include/bits/string.h \ + /usr/include/bits/string2.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_odeiv2.h ../gsl/gsl_blas.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_complex.h \ + ../gsl/gsl_check_range.h ../gsl/gsl_vector_long_double.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_vector_complex.h \ + ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_blas_types.h ../gsl/gsl_cblas.h \ + ../gsl/gsl_linalg.h ../gsl/gsl_mode.h ../gsl/gsl_permutation.h \ + odeiv_util.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string.h: + +/usr/include/bits/string2.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_odeiv2.h: + +../gsl/gsl_blas.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_blas_types.h: + +../gsl/gsl_cblas.h: + +../gsl/gsl_linalg.h: + +../gsl/gsl_mode.h: + +../gsl/gsl_permutation.h: + +odeiv_util.h: diff --git a/gsl-2.5/ode-initval2/.deps/rk1imp.Plo b/gsl-2.5/ode-initval2/.deps/rk1imp.Plo new file mode 100644 index 00000000..7d63447a --- /dev/null +++ b/gsl-2.5/ode-initval2/.deps/rk1imp.Plo @@ -0,0 +1,321 @@ +rk1imp.lo: rk1imp.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/string.h \ + /usr/include/xlocale.h /usr/include/bits/string.h \ + /usr/include/bits/string2.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_odeiv2.h odeiv_util.h rksubs.c modnewton1.c \ + ../gsl/gsl_linalg.h ../gsl/gsl_mode.h ../gsl/gsl_permutation.h \ + ../gsl/gsl_check_range.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_complex.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_blas.h ../gsl/gsl_blas_types.h \ + ../gsl/gsl_cblas.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string.h: + +/usr/include/bits/string2.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_odeiv2.h: + +odeiv_util.h: + +rksubs.c: + +modnewton1.c: + +../gsl/gsl_linalg.h: + +../gsl/gsl_mode.h: + +../gsl/gsl_permutation.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_blas.h: + +../gsl/gsl_blas_types.h: + +../gsl/gsl_cblas.h: diff --git a/gsl-2.5/ode-initval2/.deps/rk2.Plo b/gsl-2.5/ode-initval2/.deps/rk2.Plo new file mode 100644 index 00000000..3e421697 --- /dev/null +++ b/gsl-2.5/ode-initval2/.deps/rk2.Plo @@ -0,0 +1,123 @@ +rk2.lo: rk2.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/string.h \ + /usr/include/xlocale.h /usr/include/bits/string.h \ + /usr/include/bits/string2.h ../gsl/gsl_errno.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_types.h ../gsl/gsl_odeiv2.h odeiv_util.h step_utils.c + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string.h: + +/usr/include/bits/string2.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_odeiv2.h: + +odeiv_util.h: + +step_utils.c: diff --git a/gsl-2.5/ode-initval2/.deps/rk2imp.Plo b/gsl-2.5/ode-initval2/.deps/rk2imp.Plo new file mode 100644 index 00000000..ba78b8fb --- /dev/null +++ b/gsl-2.5/ode-initval2/.deps/rk2imp.Plo @@ -0,0 +1,321 @@ +rk2imp.lo: rk2imp.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/string.h \ + /usr/include/xlocale.h /usr/include/bits/string.h \ + /usr/include/bits/string2.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_odeiv2.h odeiv_util.h rksubs.c modnewton1.c \ + ../gsl/gsl_linalg.h ../gsl/gsl_mode.h ../gsl/gsl_permutation.h \ + ../gsl/gsl_check_range.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_complex.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_blas.h ../gsl/gsl_blas_types.h \ + ../gsl/gsl_cblas.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string.h: + +/usr/include/bits/string2.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_odeiv2.h: + +odeiv_util.h: + +rksubs.c: + +modnewton1.c: + +../gsl/gsl_linalg.h: + +../gsl/gsl_mode.h: + +../gsl/gsl_permutation.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_blas.h: + +../gsl/gsl_blas_types.h: + +../gsl/gsl_cblas.h: diff --git a/gsl-2.5/ode-initval2/.deps/rk4.Plo b/gsl-2.5/ode-initval2/.deps/rk4.Plo new file mode 100644 index 00000000..e68b9322 --- /dev/null +++ b/gsl-2.5/ode-initval2/.deps/rk4.Plo @@ -0,0 +1,123 @@ +rk4.lo: rk4.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/string.h \ + /usr/include/xlocale.h /usr/include/bits/string.h \ + /usr/include/bits/string2.h ../gsl/gsl_errno.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_types.h ../gsl/gsl_odeiv2.h odeiv_util.h step_utils.c + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string.h: + +/usr/include/bits/string2.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_odeiv2.h: + +odeiv_util.h: + +step_utils.c: diff --git a/gsl-2.5/ode-initval2/.deps/rk4imp.Plo b/gsl-2.5/ode-initval2/.deps/rk4imp.Plo new file mode 100644 index 00000000..e13942d5 --- /dev/null +++ b/gsl-2.5/ode-initval2/.deps/rk4imp.Plo @@ -0,0 +1,321 @@ +rk4imp.lo: rk4imp.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/string.h \ + /usr/include/xlocale.h /usr/include/bits/string.h \ + /usr/include/bits/string2.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_odeiv2.h odeiv_util.h rksubs.c modnewton1.c \ + ../gsl/gsl_linalg.h ../gsl/gsl_mode.h ../gsl/gsl_permutation.h \ + ../gsl/gsl_check_range.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_complex.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_blas.h ../gsl/gsl_blas_types.h \ + ../gsl/gsl_cblas.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string.h: + +/usr/include/bits/string2.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_odeiv2.h: + +odeiv_util.h: + +rksubs.c: + +modnewton1.c: + +../gsl/gsl_linalg.h: + +../gsl/gsl_mode.h: + +../gsl/gsl_permutation.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_blas.h: + +../gsl/gsl_blas_types.h: + +../gsl/gsl_cblas.h: diff --git a/gsl-2.5/ode-initval2/.deps/rk8pd.Plo b/gsl-2.5/ode-initval2/.deps/rk8pd.Plo new file mode 100644 index 00000000..b82924c9 --- /dev/null +++ b/gsl-2.5/ode-initval2/.deps/rk8pd.Plo @@ -0,0 +1,123 @@ +rk8pd.lo: rk8pd.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/string.h \ + /usr/include/xlocale.h /usr/include/bits/string.h \ + /usr/include/bits/string2.h ../gsl/gsl_errno.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_types.h ../gsl/gsl_odeiv2.h odeiv_util.h step_utils.c + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string.h: + +/usr/include/bits/string2.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_odeiv2.h: + +odeiv_util.h: + +step_utils.c: diff --git a/gsl-2.5/ode-initval2/.deps/rkck.Plo b/gsl-2.5/ode-initval2/.deps/rkck.Plo new file mode 100644 index 00000000..ca41fc6f --- /dev/null +++ b/gsl-2.5/ode-initval2/.deps/rkck.Plo @@ -0,0 +1,123 @@ +rkck.lo: rkck.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/string.h \ + /usr/include/xlocale.h /usr/include/bits/string.h \ + /usr/include/bits/string2.h ../gsl/gsl_errno.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_types.h ../gsl/gsl_odeiv2.h odeiv_util.h step_utils.c + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string.h: + +/usr/include/bits/string2.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_odeiv2.h: + +odeiv_util.h: + +step_utils.c: diff --git a/gsl-2.5/ode-initval2/.deps/rkf45.Plo b/gsl-2.5/ode-initval2/.deps/rkf45.Plo new file mode 100644 index 00000000..6298fd78 --- /dev/null +++ b/gsl-2.5/ode-initval2/.deps/rkf45.Plo @@ -0,0 +1,123 @@ +rkf45.lo: rkf45.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/string.h \ + /usr/include/xlocale.h /usr/include/bits/string.h \ + /usr/include/bits/string2.h ../gsl/gsl_errno.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_types.h ../gsl/gsl_odeiv2.h odeiv_util.h step_utils.c + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string.h: + +/usr/include/bits/string2.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_odeiv2.h: + +odeiv_util.h: + +step_utils.c: diff --git a/gsl-2.5/ode-initval2/.deps/step.Plo b/gsl-2.5/ode-initval2/.deps/step.Plo new file mode 100644 index 00000000..1f6849ee --- /dev/null +++ b/gsl-2.5/ode-initval2/.deps/step.Plo @@ -0,0 +1,109 @@ +step.lo: step.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_errno.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_types.h ../gsl/gsl_odeiv2.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_odeiv2.h: diff --git a/gsl-2.5/ode-initval2/.deps/test.Po b/gsl-2.5/ode-initval2/.deps/test.Po new file mode 100644 index 00000000..a9de87c1 --- /dev/null +++ b/gsl-2.5/ode-initval2/.deps/test.Po @@ -0,0 +1,320 @@ +test.o: test.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/string.h /usr/include/xlocale.h \ + /usr/include/bits/string.h /usr/include/bits/string2.h \ + /usr/include/math.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_test.h ../gsl/gsl_errno.h \ + /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_types.h ../gsl/gsl_math.h ../gsl/gsl_sys.h \ + ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_nan.h ../gsl/gsl_pow_int.h \ + ../gsl/gsl_minmax.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h ../gsl/gsl_complex.h \ + ../gsl/gsl_check_range.h ../gsl/gsl_vector_complex_long_double.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_vector_complex_double.h \ + ../gsl/gsl_vector_double.h ../gsl/gsl_block_double.h \ + ../gsl/gsl_block_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_vector_long.h \ + ../gsl/gsl_block_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_matrix_int.h \ + ../gsl/gsl_vector_int.h ../gsl/gsl_block_int.h \ + ../gsl/gsl_matrix_ushort.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_matrix_short.h \ + ../gsl/gsl_vector_short.h ../gsl/gsl_block_short.h \ + ../gsl/gsl_matrix_uchar.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_matrix_char.h \ + ../gsl/gsl_vector_char.h ../gsl/gsl_block_char.h ../gsl/gsl_linalg.h \ + ../gsl/gsl_mode.h ../gsl/gsl_permutation.h ../gsl/gsl_vector.h \ + ../gsl/gsl_blas.h ../gsl/gsl_blas_types.h ../gsl/gsl_cblas.h \ + ../gsl/gsl_ieee_utils.h ../gsl/gsl_odeiv2.h odeiv_util.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string.h: + +/usr/include/bits/string2.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_test.h: + +../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_linalg.h: + +../gsl/gsl_mode.h: + +../gsl/gsl_permutation.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_blas.h: + +../gsl/gsl_blas_types.h: + +../gsl/gsl_cblas.h: + +../gsl/gsl_ieee_utils.h: + +../gsl/gsl_odeiv2.h: + +odeiv_util.h: diff --git a/gsl-2.5/ode-initval2/.libs/libgslodeiv2.la b/gsl-2.5/ode-initval2/.libs/libgslodeiv2.la new file mode 120000 index 00000000..2902e658 --- /dev/null +++ b/gsl-2.5/ode-initval2/.libs/libgslodeiv2.la @@ -0,0 +1 @@ +../libgslodeiv2.la \ No newline at end of file diff --git a/gsl-2.5/ode-initval2/.libs/lt-test b/gsl-2.5/ode-initval2/.libs/lt-test new file mode 100755 index 00000000..95197e3d Binary files /dev/null and b/gsl-2.5/ode-initval2/.libs/lt-test differ diff --git a/gsl-2.5/ode-initval2/.libs/test b/gsl-2.5/ode-initval2/.libs/test new file mode 100755 index 00000000..7292696b Binary files /dev/null and b/gsl-2.5/ode-initval2/.libs/test differ diff --git a/gsl-2.5/ode-initval2/ChangeLog b/gsl-2.5/ode-initval2/ChangeLog new file mode 100644 index 00000000..81fe6839 --- /dev/null +++ b/gsl-2.5/ode-initval2/ChangeLog @@ -0,0 +1,344 @@ +2018-03-18 Tuomo Keskitalo + + * rk2imp.c and evolve.c: Added debug printouts, run indent -gnu -nut. + Thanks for Dominic Steinitz for the additions! + * test.c: Added identifiers to debug printouts. + +2017-11-04 Tuomo Keskitalo + + * cscal.c: Corrected bug #52336 in cscal.c: Decreased maximum step + length increase coefficient (now named maxscale) from 5.0 to 4.9 + because value of 5.0 hits a singularity in msbdf stepper with + order 3, causing a floating point exception. Thanks to Andrew + Benson for reporting this bug! + +2017-10-22 Tuomo Keskitalo + + * msadams.c: Corrected bug #52230 in msadams_apply, where solver + crashed to order change -2 error. This could happen in a very rare + case when two consecutive failed steps suggest decreasing + order. Fix is to reset solver if that happens. Thanks for Michael + Kaufman for reporting this bug and testing the fix! + +2013-06-08 Tuomo Keskitalo + + * driver.c: Removed redundant if clause. Thanks to + David Binderman for the report! + +2013-01-27 Tuomo Keskitalo + + * msbdf.c: Corrected bug which enabled order to be changed + by two (first by stability enhancement, then by order evaluation + after a rejected step). Thanks for Frantisek Kluknavsky and + Andreas Schwab for bug reports! + + * msbdf.c: Added more state variables explicitly to be reset in + msbdf_reset. + + *msbdf.c: Added abscorscaled to remove division of abscor for + use in msbdf_eval_order and subsequent backwards multiplication. + + *test.c: test_extreme_problems: Increased ringmod case tolerances + from 1e-7 to 1e-12 to increase precision. Because that + increases computational burden, I also decreased end time + from 1e-3 to 1e-5. That decreased the acidity of the test + significantly, but the test case is now more appropriate + for normal "make check". Thanks for Frantisek Kluknavsky + for pointing out bad design of the test case. + +2012-09-10 Rhys Ulerich + + * test.c: Correct two out-of-order declarations. + Thanks to Brian Gladman for spotting the problem. + +2012-03-10 Tuomo Keskitalo + + * driver.c: Added function gsl_odeiv2_driver_reset_hstart to + allow resetting step size, possibly change its sign, too. + Check for non-zero hstart in initializations. + + * test.c: Modified test_driver to carry out tests with all + steppers. Small printout changes. + +2012-01-21 Tuomo Keskitalo + + * rkf45.c: Bug correction: Set gives_exact_dydt_out to 1 in + rkf45_type + +2012-01-14 Tuomo Keskitalo + + * evolve.c: Modified initial derivative evaluation in evolve_apply + to reuse previously calculated values. This saves calls to the + user function. Thanks for Illes Farkas for pointing out redundant + function calls! + +2011-06-28 Brian Gough + + * rk4imp.c (rk4imp_apply): use M_SQRT3 instead of sqrt(3) in array + initialiser. + +2011-05-02 Brian Gough + + * gsl_odeiv2.h: fix header guard to __GSL_ODEIV2_H__ + +2011-05-01 Tuomo Keskitalo + + * Replaced ChangeLog with contents of ode-initval2 development log + file (ChangeLog-odeiv2_development) and reformatted the log file. + +2010-10-16 Tuomo Keskitalo + + * Modified evolve and driver so that when user function returns + GSL_EBADFUNC, then ode-initval2 functions return immediately with + that same return value. + + * Corrected bug in msadams for saving ordm1coeff to state. Thanks + to Andrew Benson for pointing out this bug! + +2010-10-10 Tuomo Keskitalo + + * driver.c: Corrected error in driver_evolve_apply, integration to + negative direction should work now. + + * Added evolve_apply_fixed_step and driver_apply_fixed_step for + users who want to use a constant step size to evolve the system. + + * test.c: added test cases for driver (negative evolution, + apply_fixed_step). + + * gsl_odeiv2.h: cleaning and add apply_fixed_step functions. + + * doc/ode-initval.texi: Replaced derivative apostrophe with \prime + (because my new system fails to make ps otherwise). Added new + documentation about apply_fixed_step functions. + +2010-10-09 Tuomo Keskitalo + + * ode-initval2 bzr development branch now at savannah: + http://bzr.savannah.gnu.org/r/gsl/ode-initval2/ + +2010-01-02 Tuomo Keskitalo + + * Changes from ode-initval2-0.9 to ode-initval2-1.0: + + * Removed set_control member from step object and added a + set_driver member to evolve, control and step objects, so that the + driver object and consequently evolve, control and step objects + are all accessible from another. Currently only some steppers + utilize this. They access the control_errlevel function via + state->driver->c instead of state->control. This modification to + the framework enables implementation of more efficient ODE + solvers, which utilize communication among evolve, control and + stepper objects. This also means that some steppers now require a + driver object, and it is best to use those stepper methods through + driver object functions. + + * cstd.c and cscal.c: Added a sanity check for errlev <= 0 + + * run indent -gnu -nut for *.c *.h + + * driver.c: added function odeiv2_driver_alloc_standard_new and + odeiv2_driver_alloc_yp_new + + * driver.c: changed n and nmax in driver struct to unsigned long + int + + * modified documentation accordingly with small nomenclature + changes and made year updates to source files + +2009-11-01 Tuomo Keskitalo + + * Merged with master and modified source to be published as a + package for gsl-1.13. + +2009-05-09 Tuomo Keskitalo + + * Agreed with Brian Gough that the modification I've made cannot + be incorporated to GSL until a major version number change, due to + changes in API. + + * Replated rk2imp with imprk2 and rk4imp with imprk4. Also renamed + impeuler to rk1imp for consistency. + + * Deleted steppers that are deprecated considering new major + release: gear1, gear2, and rk2simp. Modified test.c accordingly. + +2009-05-01 Tuomo Keskitalo + + * Merged with master (evolve.c and test.c needed some manual + work). + + * driver.c: Modified alloc-functions to minimal interface, added + set_hmax, set_nmax and set_hmin functions. + + * test.c: Added test for minimum allowed step size. + Applied indent -gnu -nut. + + * doc/ode-initval.texi: Updated documentation, added Driver + section, updated examples. + +2009-04-05 Tuomo Keskitalo + + * Several uninitialized variable corrections from Brian Gough + added + + * modnewton1, impeuler, imprk2, imprk4: removed unneeded arguments + from solve and init + + * msadams and msbdf modifications: + + * added ordprevbackup, ordwaitbackup (backups) and failcount (to + detect repeated steps rejections). + + * added checks to make sure order is not changed by more than one + order. Added sanity check to catch it. + + * corrected failure and rejection handling for first step + + * Added a heuristic stability enhancement for msbdf. This is yet + to be tested in practice. + + * test.c: Added more benchmark test cases. The results seem + sensible. + + * test.c: Note for benchmark_precision: msbdf performs badly in + rhs_func_exp. Newton iteration starts to fail to converge at some + point, and this forces very small step sizes to be used. I + currently think that this is not a bug, but that msbdf is just not + suitable for this problem. I think that msbdf's prediction step + does not give a good initial guess for Newton iteration in this + case. + + * I tried to increase max_iter in msbdf from 3 to 7 (value used in + modnewton1), and as a result, the performance was better for this + case (Newton iteration convergence was better). However, I would + not increase max_iter, because the default value of 3 is the value + used by the authors in the references, and because it would + decrease the efficiency of msbdf (method would use more function + evaluations per step, and convergence might still not be + achieved). It is best to useanother stepper in this kind of a + case. + +2009-02-28 Tuomo Keskitalo + + * new stepper: msbdf. This is a variable-coefficient linear + multistep backward differentiation formula (BDF) method in + Nordsieck form. It appears to handle stiff cases well and it is + efficient! + + * test.c: Ordered functions in file. Added extreme test case. + + * modnewton1: Convergence test now takes the desired error level + via control object into account. Modified steppers that use + modnewton1 accordingly. + + * modnewton1: Removed reuse_decomp. The variable was useless since + iteration matrix is reconstructed at each stepper call. + + * modnewton1: Dropped max_iter from 10 to 7. Hairer and Wanner + suggests a "relatively high number", but many iterations per step + is costly. + + * steppers that use step doubling for error estimates: Introduced + constant GSL_ODEIV_ERR_SAFETY in gsl_odeiv.h that is used to + multiply the error estimates (yerr). This way user can modify this + coefficient in one place if a change is wanted. + + * driver.c: This is a high level wrapper for ode-initval, which + was wished for in TODO. Added test_driver to test.c to test it. Is + this functionality enough? + + * ode-initval.texi: Added documentation for new steppers. Moved + note about user error codes to system definition. + + * Some finetuning / code cleanup. + +2009-01-21 Tuomo Keskitalo + + * New explicit stepper: msadams (An explicit variable-coefficient + linear multistep Adams method in Nordsieck form). Functional + iteration is used to solve the non-linear equation system. The + algorithms described in the references (see msadams.c) have been + adapted to fit GSL odeiv framework. Currently this is beta, but + the stepper now passes the odeiv test suite. + + * control.c, cstd.c, cscal.c: Added errlev function which + calculates desired error level. This is used in masadams (and can + be used in imp* steppers, too) to control accuracy of functional + iteration. User must call gsl_odeiv_step_set_control after + allocating step and control objects to pass the information about + control object to stepper. This change (or something similar) is + needed to pass tolerance for the stepper routines that need + it. Modified stepper routines accordingly. + + * evolve.c: Changed the step length scaling coefficient for + stepper failure from 0.1 to 0.5, because msadams seems to cope + much better with this change in stiff[0,1] test case. + + * gsl_odeiv.h: gsl_odeiv_control and control_type introduced + earlier because gsl_odeiv_step_type now refers to it. + +2008-11-01 Tuomo Keskitalo + + * New implicit solvers: imprk4 (replaces imprk42 in previous test + package), imprk2 (replaces imprk21 in previous test package) and + impeuler, which use modified Newton iteration to solve the + implicit equations. I decided to dump imprk42 and imprk21 because + I was unsure how to calculate the error estimates for them. I + think that these new implicit methods could be used instead of + rk4imp, rk2imp, gear2 and gear1, which use functional + iteration (which is inefficient for stiff problems.) However, even + these new solvers can not be used efficiently for truly nasty + stiff problems, and better solvers are still needed. + + * modnewton1.c: a modified Newton solver for solution of + non-linear equations of implicit solvers. Jacobian evaluation has + been moved from modnewton1 to imprk2, imprk4 and impeuler. + + * evolve.c: modification to decrease step size if stepper fails, + instead of giving up immediately. + + * evolve.c: A bug fix: Exit with GSL_FAILURE if step size reaches + machine precision instead of continuing with old step size. + + * test.c: added Robertson stiff test + + * test.c: embedded test_oregonator to test_compare_stiff_probelms + to test several stiff problems. Note: the tested integration + interval is rather short due to inefficiency of solvers other than + bsimp in these problems. + + * test.c: modified test_compare_vanderpol and + test_compare_stiff_problems to check against results from first + ode-solver. Changed rk4 or bsimp to first place. + + * test.c: modified stepfn and stepfn2 and expanded these to be + tested with all explicit solvers + + * test.c: removed stepfn3 and added test_broken and + test_stepsize_fail to check that evolve decreases step size below + machine precision and exits with a failure code in the end if user + functions fail continuously. + + * Changes in ode-initval.texi: + + * removed untrue sentence concerning stepping functions: "The + step-size @var{h} will be set to the step-size which caused the + error." + + * Changed gsl_odeiv_system variable name from dydt to sys for + clarity + + * added "explicit" or "implicit" to stepper introductions for + clarity + + * reformulated description of evolve_apply and step_apply and made + changes to reflect the modifications to the code. + + * clarified the point on integrating over discontinuities. It is + best to integrate in sequences. + + * removed the text suggesting the user to force a step size to + integrate over the edge of a discontinuity. The applicability of + this kind of a numerical tweak depends on the case, and should in + my opinion not to be included in a reference book. diff --git a/gsl-2.5/ode-initval2/Makefile b/gsl-2.5/ode-initval2/Makefile new file mode 100644 index 00000000..b3d843c7 --- /dev/null +++ b/gsl-2.5/ode-initval2/Makefile @@ -0,0 +1,1048 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# ode-initval2/Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + + + + +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/gsl +pkgincludedir = $(includedir)/gsl +pkglibdir = $(libdir)/gsl +pkglibexecdir = $(libexecdir)/gsl +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = x86_64-unknown-linux-gnu +host_triplet = x86_64-unknown-linux-gnu +check_PROGRAMS = test$(EXEEXT) +subdir = ode-initval2 +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp \ + $(noinst_HEADERS) $(pkginclude_HEADERS) \ + $(top_srcdir)/test-driver ChangeLog TODO +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +libgslodeiv2_la_LIBADD = +am_libgslodeiv2_la_OBJECTS = control.lo cstd.lo cscal.lo evolve.lo \ + step.lo rk2.lo rk2imp.lo rk4.lo rk4imp.lo rkf45.lo rk8pd.lo \ + rkck.lo bsimp.lo rk1imp.lo msadams.lo msbdf.lo driver.lo +libgslodeiv2_la_OBJECTS = $(am_libgslodeiv2_la_OBJECTS) +AM_V_lt = $(am__v_lt_$(V)) +am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) +am__v_lt_0 = --silent +am__v_lt_1 = +am_test_OBJECTS = test.$(OBJEXT) +test_OBJECTS = $(am_test_OBJECTS) +test_DEPENDENCIES = libgslodeiv2.la ../linalg/libgsllinalg.la \ + ../blas/libgslblas.la ../cblas/libgslcblas.la \ + ../matrix/libgslmatrix.la ../permutation/libgslpermutation.la \ + ../vector/libgslvector.la ../block/libgslblock.la \ + ../complex/libgslcomplex.la ../ieee-utils/libgslieeeutils.la \ + ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la \ + ../utils/libutils.la +AM_V_P = $(am__v_P_$(V)) +am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY)) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_$(V)) +am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_$(V)) +am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I. -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_$(V)) +am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_$(V)) +am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libgslodeiv2_la_SOURCES) $(test_SOURCES) +DIST_SOURCES = $(libgslodeiv2_la_SOURCES) $(test_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(pkgincludedir)" +HEADERS = $(noinst_HEADERS) $(pkginclude_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = .test +LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing aclocal-1.13 +AMTAR = $${TAR-tar} +AM_DEFAULT_VERBOSITY = 1 +AR = ar +AS = as +AUTOCONF = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing autoconf +AUTOHEADER = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing autoheader +AUTOMAKE = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing automake-1.13 +AWK = gawk +CC = gcc +CCDEPMODE = depmode=gcc3 +CFLAGS = -g -O2 +CPP = gcc -E +CPPFLAGS = +CYGPATH_W = echo +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +DLLTOOL = false +DSYMUTIL = +DUMPBIN = +ECHO_C = +ECHO_N = -n +ECHO_T = +EGREP = /usr/bin/grep -E +EXEEXT = +FGREP = /usr/bin/grep -F +GREP = /usr/bin/grep +GSLCBLAS_LDFLAGS = +GSL_CFLAGS = -I${prefix}/include +GSL_LDFLAGS = +GSL_LIBADD = +GSL_LIBM = -lm +GSL_LIBS = -L${exec_prefix}/lib -lgsl +GSL_LT_CBLAS_VERSION = 0:0:0 +GSL_LT_VERSION = 24:0:1 +GSL_MAJOR_VERSION = 2 +GSL_MINOR_VERSION = 5 +HAVE_AIX_IEEE_INTERFACE = +HAVE_DARWIN86_IEEE_INTERFACE = +HAVE_DARWIN_IEEE_INTERFACE = +HAVE_FREEBSD_IEEE_INTERFACE = +HAVE_GNUM68K_IEEE_INTERFACE = +HAVE_GNUPPC_IEEE_INTERFACE = +HAVE_GNUSPARC_IEEE_INTERFACE = +HAVE_GNUX86_IEEE_INTERFACE = +HAVE_HPUX11_IEEE_INTERFACE = +HAVE_HPUX_IEEE_INTERFACE = +HAVE_IRIX_IEEE_INTERFACE = +HAVE_NETBSD_IEEE_INTERFACE = +HAVE_OPENBSD_IEEE_INTERFACE = +HAVE_OS2EMX_IEEE_INTERFACE = +HAVE_SOLARIS_IEEE_INTERFACE = +HAVE_SUNOS4_IEEE_INTERFACE = +HAVE_TRU64_IEEE_INTERFACE = +INSTALL = /usr/bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = $(install_sh) -c -s +LD = /usr/bin/ld -m elf_x86_64 +LDFLAGS = +LIBM = -lm +LIBOBJS = +LIBS = -lm +LIBTOOL = $(SHELL) $(top_builddir)/libtool +LIPO = +LN_S = ln -s +LTLIBOBJS = +MAINT = # +MAKEINFO = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing makeinfo +MANIFEST_TOOL = : +MKDIR_P = /usr/bin/mkdir -p +NM = /usr/bin/nm -B +NMEDIT = +OBJDUMP = objdump +OBJEXT = o +OTOOL = +OTOOL64 = +PACKAGE = gsl +PACKAGE_BUGREPORT = +PACKAGE_NAME = gsl +PACKAGE_STRING = gsl 2.5 +PACKAGE_TARNAME = gsl +PACKAGE_URL = +PACKAGE_VERSION = 2.5 +PATH_SEPARATOR = : +RANLIB = ranlib +SED = /usr/bin/sed +SET_MAKE = +SHELL = /bin/sh +STRIP = strip +VERSION = 2.5 +abs_builddir = /home/groups/kipac/chto/package/gsl/gsl-2.5/ode-initval2 +abs_srcdir = /home/groups/kipac/chto/package/gsl/gsl-2.5/ode-initval2 +abs_top_builddir = /home/groups/kipac/chto/package/gsl/gsl-2.5 +abs_top_srcdir = /home/groups/kipac/chto/package/gsl/gsl-2.5 +ac_ct_AR = ar +ac_ct_CC = gcc +ac_ct_DUMPBIN = +am__include = include +am__leading_dot = . +am__quote = +am__tar = $${TAR-tar} chof - "$$tardir" +am__untar = $${TAR-tar} xf - +bindir = ${exec_prefix}/bin +build = x86_64-unknown-linux-gnu +build_alias = +build_cpu = x86_64 +build_os = linux-gnu +build_vendor = unknown +builddir = . +datadir = ${datarootdir} +datarootdir = ${prefix}/share +docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} +dvidir = ${docdir} +exec_prefix = ${prefix} +host = x86_64-unknown-linux-gnu +host_alias = +host_cpu = x86_64 +host_os = linux-gnu +host_vendor = unknown +htmldir = ${docdir} +includedir = ${prefix}/include +infodir = ${datarootdir}/info +install_sh = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/install-sh +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +localedir = ${datarootdir}/locale +localstatedir = ${prefix}/var +mandir = ${datarootdir}/man +mkdir_p = $(MKDIR_P) +oldincludedir = /usr/include +pdfdir = ${docdir} +prefix = /home/groups/kipac/chto/package/gsl/gsl_lib +program_transform_name = s,x,x, +psdir = ${docdir} +sbindir = ${exec_prefix}/sbin +sharedstatedir = ${prefix}/com +srcdir = . +sysconfdir = ${prefix}/etc +target_alias = +top_build_prefix = ../ +top_builddir = .. +top_srcdir = .. +noinst_LTLIBRARIES = libgslodeiv2.la +pkginclude_HEADERS = gsl_odeiv2.h +AM_CPPFLAGS = -I$(top_srcdir) +libgslodeiv2_la_SOURCES = control.c cstd.c cscal.c evolve.c step.c rk2.c rk2imp.c rk4.c rk4imp.c rkf45.c rk8pd.c rkck.c bsimp.c rk1imp.c msadams.c msbdf.c driver.c +noinst_HEADERS = odeiv_util.h step_utils.c rksubs.c modnewton1.c control_utils.c +TESTS = $(check_PROGRAMS) +test_LDADD = libgslodeiv2.la ../linalg/libgsllinalg.la ../blas/libgslblas.la ../cblas/libgslcblas.la ../matrix/libgslmatrix.la ../permutation/libgslpermutation.la ../vector/libgslvector.la ../block/libgslblock.la ../complex/libgslcomplex.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la +test_SOURCES = test.c +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu ode-initval2/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu ode-initval2/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: # $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): # $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libgslodeiv2.la: $(libgslodeiv2_la_OBJECTS) $(libgslodeiv2_la_DEPENDENCIES) $(EXTRA_libgslodeiv2_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(libgslodeiv2_la_OBJECTS) $(libgslodeiv2_la_LIBADD) $(LIBS) + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) $(EXTRA_test_DEPENDENCIES) + @rm -f test$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_OBJECTS) $(test_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +include ./$(DEPDIR)/bsimp.Plo +include ./$(DEPDIR)/control.Plo +include ./$(DEPDIR)/cscal.Plo +include ./$(DEPDIR)/cstd.Plo +include ./$(DEPDIR)/driver.Plo +include ./$(DEPDIR)/evolve.Plo +include ./$(DEPDIR)/msadams.Plo +include ./$(DEPDIR)/msbdf.Plo +include ./$(DEPDIR)/rk1imp.Plo +include ./$(DEPDIR)/rk2.Plo +include ./$(DEPDIR)/rk2imp.Plo +include ./$(DEPDIR)/rk4.Plo +include ./$(DEPDIR)/rk4imp.Plo +include ./$(DEPDIR)/rk8pd.Plo +include ./$(DEPDIR)/rkck.Plo +include ./$(DEPDIR)/rkf45.Plo +include ./$(DEPDIR)/step.Plo +include ./$(DEPDIR)/test.Po + +.c.o: + $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# $(AM_V_CC)source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(COMPILE) -c $< + +.c.obj: + $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# $(AM_V_CC)source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: + $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +# $(AM_V_CC)source='$<' object='$@' libtool=yes \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-pkgincludeHEADERS: $(pkginclude_HEADERS) + @$(NORMAL_INSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \ + done + +uninstall-pkgincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + else \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_PROGRAMS) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +test.log: test$(EXEEXT) + @p='test$(EXEEXT)'; \ + b='test'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +#.test$(EXEEXT).log: +# @p='$<'; \ +# $(am__set_b); \ +# $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +# --log-file $$b.log --trs-file $$b.trs \ +# $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +# "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-am +all-am: Makefile $(LTLIBRARIES) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(pkgincludedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-pkgincludeHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-pkgincludeHEADERS + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES cscopelist-am ctags ctags-am distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-pkgincludeHEADERS \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + recheck tags tags-am uninstall uninstall-am \ + uninstall-pkgincludeHEADERS + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gsl-2.5/ode-initval2/Makefile.am b/gsl-2.5/ode-initval2/Makefile.am new file mode 100644 index 00000000..0b1c3ee7 --- /dev/null +++ b/gsl-2.5/ode-initval2/Makefile.am @@ -0,0 +1,18 @@ +noinst_LTLIBRARIES = libgslodeiv2.la + +pkginclude_HEADERS = gsl_odeiv2.h + +AM_CPPFLAGS = -I$(top_srcdir) + +libgslodeiv2_la_SOURCES = control.c cstd.c cscal.c evolve.c step.c rk2.c rk2imp.c rk4.c rk4imp.c rkf45.c rk8pd.c rkck.c bsimp.c rk1imp.c msadams.c msbdf.c driver.c + +noinst_HEADERS = odeiv_util.h step_utils.c rksubs.c modnewton1.c control_utils.c + +check_PROGRAMS = test + +TESTS = $(check_PROGRAMS) + +test_LDADD = libgslodeiv2.la ../linalg/libgsllinalg.la ../blas/libgslblas.la ../cblas/libgslcblas.la ../matrix/libgslmatrix.la ../permutation/libgslpermutation.la ../vector/libgslvector.la ../block/libgslblock.la ../complex/libgslcomplex.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la + +test_SOURCES = test.c + diff --git a/gsl-2.5/ode-initval2/Makefile.in b/gsl-2.5/ode-initval2/Makefile.in new file mode 100644 index 00000000..3ab910a3 --- /dev/null +++ b/gsl-2.5/ode-initval2/Makefile.in @@ -0,0 +1,1048 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + + +VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +check_PROGRAMS = test$(EXEEXT) +subdir = ode-initval2 +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp \ + $(noinst_HEADERS) $(pkginclude_HEADERS) \ + $(top_srcdir)/test-driver ChangeLog TODO +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +libgslodeiv2_la_LIBADD = +am_libgslodeiv2_la_OBJECTS = control.lo cstd.lo cscal.lo evolve.lo \ + step.lo rk2.lo rk2imp.lo rk4.lo rk4imp.lo rkf45.lo rk8pd.lo \ + rkck.lo bsimp.lo rk1imp.lo msadams.lo msbdf.lo driver.lo +libgslodeiv2_la_OBJECTS = $(am_libgslodeiv2_la_OBJECTS) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +am_test_OBJECTS = test.$(OBJEXT) +test_OBJECTS = $(am_test_OBJECTS) +test_DEPENDENCIES = libgslodeiv2.la ../linalg/libgsllinalg.la \ + ../blas/libgslblas.la ../cblas/libgslcblas.la \ + ../matrix/libgslmatrix.la ../permutation/libgslpermutation.la \ + ../vector/libgslvector.la ../block/libgslblock.la \ + ../complex/libgslcomplex.la ../ieee-utils/libgslieeeutils.la \ + ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la \ + ../utils/libutils.la +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libgslodeiv2_la_SOURCES) $(test_SOURCES) +DIST_SOURCES = $(libgslodeiv2_la_SOURCES) $(test_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(pkgincludedir)" +HEADERS = $(noinst_HEADERS) $(pkginclude_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = @EXEEXT@ .test +LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +GSLCBLAS_LDFLAGS = @GSLCBLAS_LDFLAGS@ +GSL_CFLAGS = @GSL_CFLAGS@ +GSL_LDFLAGS = @GSL_LDFLAGS@ +GSL_LIBADD = @GSL_LIBADD@ +GSL_LIBM = @GSL_LIBM@ +GSL_LIBS = @GSL_LIBS@ +GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ +GSL_LT_VERSION = @GSL_LT_VERSION@ +GSL_MAJOR_VERSION = @GSL_MAJOR_VERSION@ +GSL_MINOR_VERSION = @GSL_MINOR_VERSION@ +HAVE_AIX_IEEE_INTERFACE = @HAVE_AIX_IEEE_INTERFACE@ +HAVE_DARWIN86_IEEE_INTERFACE = @HAVE_DARWIN86_IEEE_INTERFACE@ +HAVE_DARWIN_IEEE_INTERFACE = @HAVE_DARWIN_IEEE_INTERFACE@ +HAVE_FREEBSD_IEEE_INTERFACE = @HAVE_FREEBSD_IEEE_INTERFACE@ +HAVE_GNUM68K_IEEE_INTERFACE = @HAVE_GNUM68K_IEEE_INTERFACE@ +HAVE_GNUPPC_IEEE_INTERFACE = @HAVE_GNUPPC_IEEE_INTERFACE@ +HAVE_GNUSPARC_IEEE_INTERFACE = @HAVE_GNUSPARC_IEEE_INTERFACE@ +HAVE_GNUX86_IEEE_INTERFACE = @HAVE_GNUX86_IEEE_INTERFACE@ +HAVE_HPUX11_IEEE_INTERFACE = @HAVE_HPUX11_IEEE_INTERFACE@ +HAVE_HPUX_IEEE_INTERFACE = @HAVE_HPUX_IEEE_INTERFACE@ +HAVE_IRIX_IEEE_INTERFACE = @HAVE_IRIX_IEEE_INTERFACE@ +HAVE_NETBSD_IEEE_INTERFACE = @HAVE_NETBSD_IEEE_INTERFACE@ +HAVE_OPENBSD_IEEE_INTERFACE = @HAVE_OPENBSD_IEEE_INTERFACE@ +HAVE_OS2EMX_IEEE_INTERFACE = @HAVE_OS2EMX_IEEE_INTERFACE@ +HAVE_SOLARIS_IEEE_INTERFACE = @HAVE_SOLARIS_IEEE_INTERFACE@ +HAVE_SUNOS4_IEEE_INTERFACE = @HAVE_SUNOS4_IEEE_INTERFACE@ +HAVE_TRU64_IEEE_INTERFACE = @HAVE_TRU64_IEEE_INTERFACE@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBM = @LIBM@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +noinst_LTLIBRARIES = libgslodeiv2.la +pkginclude_HEADERS = gsl_odeiv2.h +AM_CPPFLAGS = -I$(top_srcdir) +libgslodeiv2_la_SOURCES = control.c cstd.c cscal.c evolve.c step.c rk2.c rk2imp.c rk4.c rk4imp.c rkf45.c rk8pd.c rkck.c bsimp.c rk1imp.c msadams.c msbdf.c driver.c +noinst_HEADERS = odeiv_util.h step_utils.c rksubs.c modnewton1.c control_utils.c +TESTS = $(check_PROGRAMS) +test_LDADD = libgslodeiv2.la ../linalg/libgsllinalg.la ../blas/libgslblas.la ../cblas/libgslcblas.la ../matrix/libgslmatrix.la ../permutation/libgslpermutation.la ../vector/libgslvector.la ../block/libgslblock.la ../complex/libgslcomplex.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la +test_SOURCES = test.c +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu ode-initval2/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu ode-initval2/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libgslodeiv2.la: $(libgslodeiv2_la_OBJECTS) $(libgslodeiv2_la_DEPENDENCIES) $(EXTRA_libgslodeiv2_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(libgslodeiv2_la_OBJECTS) $(libgslodeiv2_la_LIBADD) $(LIBS) + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) $(EXTRA_test_DEPENDENCIES) + @rm -f test$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_OBJECTS) $(test_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bsimp.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/control.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cscal.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cstd.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/driver.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/evolve.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/msadams.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/msbdf.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rk1imp.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rk2.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rk2imp.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rk4.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rk4imp.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rk8pd.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rkck.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rkf45.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/step.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test.Po@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-pkgincludeHEADERS: $(pkginclude_HEADERS) + @$(NORMAL_INSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \ + done + +uninstall-pkgincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + else \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_PROGRAMS) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +test.log: test$(EXEEXT) + @p='test$(EXEEXT)'; \ + b='test'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +@am__EXEEXT_TRUE@.test$(EXEEXT).log: +@am__EXEEXT_TRUE@ @p='$<'; \ +@am__EXEEXT_TRUE@ $(am__set_b); \ +@am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +@am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ +@am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +@am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-am +all-am: Makefile $(LTLIBRARIES) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(pkgincludedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-pkgincludeHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-pkgincludeHEADERS + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES cscopelist-am ctags ctags-am distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-pkgincludeHEADERS \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + recheck tags tags-am uninstall uninstall-am \ + uninstall-pkgincludeHEADERS + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gsl-2.5/ode-initval2/TODO b/gsl-2.5/ode-initval2/TODO new file mode 100644 index 00000000..5de515ef --- /dev/null +++ b/gsl-2.5/ode-initval2/TODO @@ -0,0 +1,65 @@ +* Implement other stepping methods from well-known packages such as +RKSUITE, DASSL, etc + +* The entry below has been downgraded from a bug. We use the +coefficients given in the original paper by Prince and Dormand, and it +is true that these are inexact (the values in the paper are said to be +accurate 18 figures). If somebody publishes exact versions we will +use them, but at present it is better to stick with the published +versions of the coefficients them use our own. +---------------------------------------------------------------------- +BUG#8 -- inexact coefficients in rk8pd.c + +From: Luc Maisonobe +To: gsl-discuss@sources.redhat.com +Subject: further thoughts about Dormand-Prince 8 (RK8PD) +Date: Wed, 14 Aug 2002 10:50:49 +0200 + +I was looking for some references concerning Runge-Kutta methods when I +noticed GSL had an high order one. I also found a question in the list +archive (April 2002) about the references of this method which is +implemented in rk8pd.c. It was said the coefficients were taken from the +"Numerical Algorithms with C" book by Engeln-Mullges and Uhlig. + +I have checked the coefficients somewhat with a little java tool I have +developped (see http://www.spaceroots.org/archive.htm#RKCheckSoftware) +and found they were not exact. I think this method is really the method +that is already in rksuite (http://www.netlib.org/ode/rksuite/) were the +coefficients are given as real values with 30 decimal digits. The +coefficients have probably been approximated as fractions later on. +However, these approximations are not perfect, they are good only for +the first 16 or 18 digits depending on the coefficient. + +This has no consequence for practical purposes since they are stored in +double variables, but give a false impression of beeing exact +expressions. Well, there are even some coefficients that should really +be rational numbers but for which wrong numerators and denominators are +given. As an example, the first and fourth elements of the b7 array are +given as 29443841.0 / 614563906.0 and 77736538.0 / 692538347, hence the +sum off all elements of the b7 array (which should theoretically be +equal to ah[5]) only approximate this. For these two coefficients, this +could have been avoided using 215595617.0 / 4500000000.0 and +202047683.0 / 1800000000.0, which also looks more coherent with the +other coefficients. + +The rksuite comments say this method is described in this paper : + + High Order Embedded Runge-Kutta Formulae + P.J. Prince and J.R. Dormand + J. Comp. Appl. Math.,7, pp. 67-75, 1981 + +It also says the method is an 8(7) method (i.e. the coefficients set +used to advance integration is order 8 and error estimation is order 7). +If I use my tool to check the order, I am forced to check the order +conditions numerically with a tolerance since I do not have an exact +expression of the coefficients. Since even if some conditions are not +mathematically met, the residuals are small and could be below the +tolerance. There are tolerance values for which such numerical test +dedeuce the method is of order 9, as is said in GSL. However, I am not +convinced, there are to few parameters for the large number of order +conditions needed at order 9. + +I would suggest to correct the coefficients in rk8pd.c (just put the +literal constants of rksuite) and to add the reference to the article. + +---------------------------------------------------------------------- diff --git a/gsl-2.5/ode-initval2/bsimp.c b/gsl-2.5/ode-initval2/bsimp.c new file mode 100644 index 00000000..474bb57a --- /dev/null +++ b/gsl-2.5/ode-initval2/bsimp.c @@ -0,0 +1,571 @@ +/* ode-initval2/bsimp.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2004 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Bulirsch-Stoer Implicit */ + +/* Author: G. Jungman + */ +/* Bader-Deuflhard implicit extrapolative stepper. + * [Numer. Math., 41, 373 (1983)] + */ +#include +#include +#include +#include +#include +#include +#include + +#include "odeiv_util.h" +#include "step_utils.c" + +#define SEQUENCE_COUNT 8 +#define SEQUENCE_MAX 7 + +/* Bader-Deuflhard extrapolation sequence */ +static const int bd_sequence[SEQUENCE_COUNT] = + { 2, 6, 10, 14, 22, 34, 50, 70 }; + +typedef struct +{ + gsl_matrix *d; /* workspace for extrapolation */ + gsl_matrix *a_mat; /* workspace for linear system matrix */ + gsl_permutation *p_vec; /* workspace for LU permutation */ + + double x[SEQUENCE_MAX]; /* workspace for extrapolation */ + + /* state info */ + size_t k_current; + size_t k_choice; + double h_next; + double eps; + + /* workspace for extrapolation step */ + double *yp; + double *y_save; + double *yerr_save; + double *y_extrap_save; + double *y_extrap_sequence; + double *extrap_work; + double *dfdt; + double *y_temp; + double *delta_temp; + double *weight; + gsl_matrix *dfdy; + + /* workspace for the basic stepper */ + double *rhs_temp; + double *delta; + + /* order of last step */ + size_t order; +} +bsimp_state_t; + +/* Compute weighting factor */ + +static void +compute_weights (const double y[], double w[], size_t dim) +{ + size_t i; + for (i = 0; i < dim; i++) + { + double u = fabs (y[i]); + w[i] = (u > 0.0) ? u : 1.0; + } +} + +/* Calculate a choice for the "order" of the method, using the + * Deuflhard criteria. + */ + +static size_t +bsimp_deuf_kchoice (double eps, size_t dimension) +{ + const double safety_f = 0.25; + const double small_eps = safety_f * eps; + + double a_work[SEQUENCE_COUNT]; + double alpha[SEQUENCE_MAX][SEQUENCE_MAX]; + + int i, k; + + a_work[0] = bd_sequence[0] + 1.0; + + for (k = 0; k < SEQUENCE_MAX; k++) + { + a_work[k + 1] = a_work[k] + bd_sequence[k + 1]; + } + + for (i = 0; i < SEQUENCE_MAX; i++) + { + alpha[i][i] = 1.0; + for (k = 0; k < i; k++) + { + const double tmp1 = a_work[k + 1] - a_work[i + 1]; + const double tmp2 = (a_work[i + 1] - a_work[0] + 1.0) * (2 * k + 1); + alpha[k][i] = pow (small_eps, tmp1 / tmp2); + } + } + + a_work[0] += dimension; + + for (k = 0; k < SEQUENCE_MAX; k++) + { + a_work[k + 1] = a_work[k] + bd_sequence[k + 1]; + } + + for (k = 0; k < SEQUENCE_MAX - 1; k++) + { + if (a_work[k + 2] > a_work[k + 1] * alpha[k][k + 1]) + break; + } + + return k; +} + +static void +poly_extrap (gsl_matrix * d, + const double x[], + const unsigned int i_step, + const double x_i, + const double y_i[], + double y_0[], double y_0_err[], double work[], const size_t dim) +{ + size_t j, k; + + DBL_MEMCPY (y_0_err, y_i, dim); + DBL_MEMCPY (y_0, y_i, dim); + + if (i_step == 0) + { + for (j = 0; j < dim; j++) + { + gsl_matrix_set (d, 0, j, y_i[j]); + } + } + else + { + DBL_MEMCPY (work, y_i, dim); + + for (k = 0; k < i_step; k++) + { + double delta = 1.0 / (x[i_step - k - 1] - x_i); + const double f1 = delta * x_i; + const double f2 = delta * x[i_step - k - 1]; + + for (j = 0; j < dim; j++) + { + const double q_kj = gsl_matrix_get (d, k, j); + gsl_matrix_set (d, k, j, y_0_err[j]); + delta = work[j] - q_kj; + y_0_err[j] = f1 * delta; + work[j] = f2 * delta; + y_0[j] += y_0_err[j]; + } + } + + for (j = 0; j < dim; j++) + { + gsl_matrix_set (d, i_step, j, y_0_err[j]); + } + } +} + +/* Basic implicit Bulirsch-Stoer step. Divide the step h_total into + * n_step smaller steps and do the Bader-Deuflhard semi-implicit + * iteration. */ + +static int +bsimp_step_local (void *vstate, + size_t dim, + const double t0, + const double h_total, + const unsigned int n_step, + const double y[], + const double yp[], + const double dfdt[], + const gsl_matrix * dfdy, + double y_out[], const gsl_odeiv2_system * sys) +{ + bsimp_state_t *state = (bsimp_state_t *) vstate; + + gsl_matrix *const a_mat = state->a_mat; + gsl_permutation *const p_vec = state->p_vec; + + double *const delta = state->delta; + double *const y_temp = state->y_temp; + double *const delta_temp = state->delta_temp; + double *const rhs_temp = state->rhs_temp; + double *const w = state->weight; + + gsl_vector_view y_temp_vec = gsl_vector_view_array (y_temp, dim); + gsl_vector_view delta_temp_vec = gsl_vector_view_array (delta_temp, dim); + gsl_vector_view rhs_temp_vec = gsl_vector_view_array (rhs_temp, dim); + + const double h = h_total / n_step; + double t = t0 + h; + + double sum; + + /* This is the factor sigma referred to in equation 3.4 of the + paper. A relative change in y exceeding sigma indicates a + runaway behavior. According to the authors suitable values for + sigma are >>1. I have chosen a value of 100*dim. BJG */ + + const double max_sum = 100.0 * dim; + + int signum, status; + size_t i, j; + size_t n_inter; + + /* Calculate the matrix for the linear system. */ + for (i = 0; i < dim; i++) + { + for (j = 0; j < dim; j++) + { + gsl_matrix_set (a_mat, i, j, -h * gsl_matrix_get (dfdy, i, j)); + } + gsl_matrix_set (a_mat, i, i, gsl_matrix_get (a_mat, i, i) + 1.0); + } + + /* LU decomposition for the linear system. */ + + gsl_linalg_LU_decomp (a_mat, p_vec, &signum); + + /* Compute weighting factors */ + + compute_weights (y, w, dim); + + /* Initial step. */ + + for (i = 0; i < dim; i++) + { + y_temp[i] = h * (yp[i] + h * dfdt[i]); + } + + gsl_linalg_LU_solve (a_mat, p_vec, &y_temp_vec.vector, + &delta_temp_vec.vector); + + sum = 0.0; + + for (i = 0; i < dim; i++) + { + const double di = delta_temp[i]; + delta[i] = di; + y_temp[i] = y[i] + di; + sum += fabs (di) / w[i]; + } + + if (sum > max_sum) + { + return GSL_EFAILED; + } + + /* Intermediate steps. */ + + status = GSL_ODEIV_FN_EVAL (sys, t, y_temp, y_out); + + if (status) + { + return status; + } + + for (n_inter = 1; n_inter < n_step; n_inter++) + { + for (i = 0; i < dim; i++) + { + rhs_temp[i] = h * y_out[i] - delta[i]; + } + + gsl_linalg_LU_solve (a_mat, p_vec, &rhs_temp_vec.vector, + &delta_temp_vec.vector); + + sum = 0.0; + + for (i = 0; i < dim; i++) + { + delta[i] += 2.0 * delta_temp[i]; + y_temp[i] += delta[i]; + sum += fabs (delta[i]) / w[i]; + } + + if (sum > max_sum) + { + return GSL_EFAILED; + } + + t += h; + + status = GSL_ODEIV_FN_EVAL (sys, t, y_temp, y_out); + + if (status) + { + return status; + } + } + + + /* Final step. */ + + for (i = 0; i < dim; i++) + { + rhs_temp[i] = h * y_out[i] - delta[i]; + } + + gsl_linalg_LU_solve (a_mat, p_vec, &rhs_temp_vec.vector, + &delta_temp_vec.vector); + + sum = 0.0; + + for (i = 0; i < dim; i++) + { + y_out[i] = y_temp[i] + delta_temp[i]; + sum += fabs (delta_temp[i]) / w[i]; + } + + if (sum > max_sum) + { + return GSL_EFAILED; + } + + return GSL_SUCCESS; +} + + +static void * +bsimp_alloc (size_t dim) +{ + bsimp_state_t *state = (bsimp_state_t *) malloc (sizeof (bsimp_state_t)); + + state->d = gsl_matrix_alloc (SEQUENCE_MAX, dim); + state->a_mat = gsl_matrix_alloc (dim, dim); + state->p_vec = gsl_permutation_alloc (dim); + + state->yp = (double *) malloc (dim * sizeof (double)); + state->y_save = (double *) malloc (dim * sizeof (double)); + state->yerr_save = (double *) malloc (dim * sizeof (double)); + state->y_extrap_save = (double *) malloc (dim * sizeof (double)); + state->y_extrap_sequence = (double *) malloc (dim * sizeof (double)); + state->extrap_work = (double *) malloc (dim * sizeof (double)); + state->dfdt = (double *) malloc (dim * sizeof (double)); + state->y_temp = (double *) malloc (dim * sizeof (double)); + state->delta_temp = (double *) malloc (dim * sizeof (double)); + state->weight = (double *) malloc (dim * sizeof (double)); + + state->dfdy = gsl_matrix_alloc (dim, dim); + + state->rhs_temp = (double *) malloc (dim * sizeof (double)); + state->delta = (double *) malloc (dim * sizeof (double)); + + { + size_t k_choice = bsimp_deuf_kchoice (GSL_SQRT_DBL_EPSILON, dim); /*FIXME: choice of epsilon? */ + state->k_choice = k_choice; + state->k_current = k_choice; + state->order = 2 * k_choice; + } + + state->h_next = -GSL_SQRT_DBL_MAX; + + return state; +} + +/* Perform the basic semi-implicit extrapolation + * step, of size h, at a Deuflhard determined order. + */ +static int +bsimp_apply (void *vstate, + size_t dim, + double t, + double h, + double y[], + double yerr[], + const double dydt_in[], + double dydt_out[], const gsl_odeiv2_system * sys) +{ + bsimp_state_t *state = (bsimp_state_t *) vstate; + + double *const x = state->x; + double *const yp = state->yp; + double *const y_save = state->y_save; + double *const yerr_save = state->yerr_save; + double *const y_extrap_sequence = state->y_extrap_sequence; + double *const y_extrap_save = state->y_extrap_save; + double *const extrap_work = state->extrap_work; + double *const dfdt = state->dfdt; + gsl_matrix *d = state->d; + gsl_matrix *dfdy = state->dfdy; + + const double t_local = t; + size_t i, k; + + if (h + t_local == t_local) + { + return GSL_EUNDRFLW; /* FIXME: error condition */ + } + + DBL_MEMCPY (y_extrap_save, y, dim); + + /* Save inputs */ + DBL_MEMCPY (y_save, y, dim); + DBL_MEMCPY (yerr_save, yerr, dim); + + /* Evaluate the derivative. */ + if (dydt_in != NULL) + { + DBL_MEMCPY (yp, dydt_in, dim); + } + else + { + int s = GSL_ODEIV_FN_EVAL (sys, t_local, y, yp); + + if (s != GSL_SUCCESS) + { + return s; + } + } + + /* Evaluate the Jacobian for the system. */ + { + int s = GSL_ODEIV_JA_EVAL (sys, t_local, y, dfdy->data, dfdt); + + if (s != GSL_SUCCESS) + { + return s; + } + } + + /* Make a series of refined extrapolations, + * up to the specified maximum order, which + * was calculated based on the Deuflhard + * criterion upon state initialization. */ + for (k = 0; k <= state->k_current; k++) + { + const unsigned int N = bd_sequence[k]; + const double r = (h / N); + const double x_k = r * r; + + int status = bsimp_step_local (state, + dim, t_local, h, N, + y_extrap_save, yp, + dfdt, dfdy, + y_extrap_sequence, + sys); + + if (status == GSL_EFAILED) + { + /* If the local step fails, set the error to infinity in + order to force a reduction in the step size */ + + for (i = 0; i < dim; i++) + { + yerr[i] = GSL_POSINF; + } + + break; + } + + else if (status != GSL_SUCCESS) + { + return status; + } + + x[k] = x_k; + + poly_extrap (d, x, k, x_k, y_extrap_sequence, y, yerr, extrap_work, + dim); + } + + /* Evaluate dydt_out[]. */ + + if (dydt_out != NULL) + { + int s = GSL_ODEIV_FN_EVAL (sys, t + h, y, dydt_out); + + if (s != GSL_SUCCESS) + { + DBL_MEMCPY (y, y_save, dim); + DBL_MEMCPY (yerr, yerr_save, dim); + return s; + } + } + + return GSL_SUCCESS; +} + +static unsigned int +bsimp_order (void *vstate) +{ + bsimp_state_t *state = (bsimp_state_t *) vstate; + return state->order; +} + +static int +bsimp_reset (void *vstate, size_t dim) +{ + bsimp_state_t *state = (bsimp_state_t *) vstate; + + state->h_next = 0; + + DBL_ZERO_MEMSET (state->yp, dim); + + return GSL_SUCCESS; +} + + +static void +bsimp_free (void *vstate) +{ + bsimp_state_t *state = (bsimp_state_t *) vstate; + + free (state->delta); + free (state->rhs_temp); + + gsl_matrix_free (state->dfdy); + + free (state->weight); + free (state->delta_temp); + free (state->y_temp); + free (state->dfdt); + free (state->extrap_work); + free (state->y_extrap_sequence); + free (state->y_extrap_save); + free (state->y_save); + free (state->yerr_save); + free (state->yp); + + gsl_permutation_free (state->p_vec); + gsl_matrix_free (state->a_mat); + gsl_matrix_free (state->d); + free (state); +} + +static const gsl_odeiv2_step_type bsimp_type = { + "bsimp", /* name */ + 1, /* can use dydt_in */ + 1, /* gives exact dydt_out */ + &bsimp_alloc, + &bsimp_apply, + &stepper_set_driver_null, + &bsimp_reset, + &bsimp_order, + &bsimp_free +}; + +const gsl_odeiv2_step_type *gsl_odeiv2_step_bsimp = &bsimp_type; diff --git a/gsl-2.5/ode-initval2/bsimp.lo b/gsl-2.5/ode-initval2/bsimp.lo new file mode 100644 index 00000000..7c4a9f7d --- /dev/null +++ b/gsl-2.5/ode-initval2/bsimp.lo @@ -0,0 +1,12 @@ +# bsimp.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/bsimp.o' + +# Name of the non-PIC object +non_pic_object='bsimp.o' + diff --git a/gsl-2.5/ode-initval2/control.c b/gsl-2.5/ode-initval2/control.c new file mode 100644 index 00000000..4a09b815 --- /dev/null +++ b/gsl-2.5/ode-initval2/control.c @@ -0,0 +1,107 @@ +/* ode-initval/control.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ + +#include +#include +#include +#include +#include + +gsl_odeiv2_control * +gsl_odeiv2_control_alloc (const gsl_odeiv2_control_type * T) +{ + gsl_odeiv2_control *c = + (gsl_odeiv2_control *) malloc (sizeof (gsl_odeiv2_control)); + + if (c == 0) + { + GSL_ERROR_NULL ("failed to allocate space for control struct", + GSL_ENOMEM); + }; + + c->type = T; + c->state = c->type->alloc (); + + if (c->state == 0) + { + free (c); /* exception in constructor, avoid memory leak */ + + GSL_ERROR_NULL ("failed to allocate space for control state", + GSL_ENOMEM); + }; + + return c; +} + +int +gsl_odeiv2_control_init (gsl_odeiv2_control * c, + double eps_abs, double eps_rel, + double a_y, double a_dydt) +{ + return c->type->init (c->state, eps_abs, eps_rel, a_y, a_dydt); +} + +void +gsl_odeiv2_control_free (gsl_odeiv2_control * c) +{ + RETURN_IF_NULL (c); + c->type->free (c->state); + free (c); +} + +const char * +gsl_odeiv2_control_name (const gsl_odeiv2_control * c) +{ + return c->type->name; +} + +int +gsl_odeiv2_control_hadjust (gsl_odeiv2_control * c, gsl_odeiv2_step * s, + const double y[], const double yerr[], + const double dydt[], double *h) +{ + return c->type->hadjust (c->state, s->dimension, s->type->order (s->state), + y, yerr, dydt, h); +} + +int +gsl_odeiv2_control_errlevel (gsl_odeiv2_control * c, const double y, + const double dydt, const double h, + const size_t ind, double *errlev) +{ + return c->type->errlevel (c->state, y, dydt, h, ind, errlev); +} + +int +gsl_odeiv2_control_set_driver (gsl_odeiv2_control * c, + const gsl_odeiv2_driver * d) +{ + if (d != NULL) + { + c->type->set_driver (c->state, d); + } + else + { + GSL_ERROR_NULL ("driver pointer is null", GSL_EFAULT); + } + + return GSL_SUCCESS; +} diff --git a/gsl-2.5/ode-initval2/control.lo b/gsl-2.5/ode-initval2/control.lo new file mode 100644 index 00000000..e3adaf89 --- /dev/null +++ b/gsl-2.5/ode-initval2/control.lo @@ -0,0 +1,12 @@ +# control.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/control.o' + +# Name of the non-PIC object +non_pic_object='control.o' + diff --git a/gsl-2.5/ode-initval2/control_utils.c b/gsl-2.5/ode-initval2/control_utils.c new file mode 100644 index 00000000..7695500a --- /dev/null +++ b/gsl-2.5/ode-initval2/control_utils.c @@ -0,0 +1,27 @@ +/* ode-initval2/control_utils.c + * + * Copyright (C) 2009 Tuomo Keskitalo + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +static int +control_set_driver_null (void *vstate, const gsl_odeiv2_driver * d) +{ + /* Dummy set function for those control objects that do not + need pointer to driver object. */ + + return GSL_SUCCESS; +} diff --git a/gsl-2.5/ode-initval2/cscal.c b/gsl-2.5/ode-initval2/cscal.c new file mode 100644 index 00000000..5e1caa3a --- /dev/null +++ b/gsl-2.5/ode-initval2/cscal.c @@ -0,0 +1,224 @@ +/* ode-initval2/cscal.c + * + * Copyright (C) 2002, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include +#include +#include "control_utils.c" + +typedef struct +{ + double eps_abs; + double eps_rel; + double a_y; + double a_dydt; + double *scale_abs; +} +sc_control_state_t; + +static void * +sc_control_alloc (void) +{ + sc_control_state_t *s = + (sc_control_state_t *) malloc (sizeof (sc_control_state_t)); + + if (s == 0) + { + GSL_ERROR_NULL ("failed to allocate space for sc_control_state", + GSL_ENOMEM); + } + + return s; +} + +static int +sc_control_init (void *vstate, + double eps_abs, double eps_rel, double a_y, double a_dydt) +{ + sc_control_state_t *s = (sc_control_state_t *) vstate; + + if (eps_abs < 0) + { + GSL_ERROR ("eps_abs is negative", GSL_EINVAL); + } + else if (eps_rel < 0) + { + GSL_ERROR ("eps_rel is negative", GSL_EINVAL); + } + else if (a_y < 0) + { + GSL_ERROR ("a_y is negative", GSL_EINVAL); + } + else if (a_dydt < 0) + { + GSL_ERROR ("a_dydt is negative", GSL_EINVAL); + } + + s->eps_rel = eps_rel; + s->eps_abs = eps_abs; + s->a_y = a_y; + s->a_dydt = a_dydt; + + return GSL_SUCCESS; +} + +static int +sc_control_hadjust (void *vstate, size_t dim, unsigned int ord, + const double y[], const double yerr[], const double yp[], + double *h) +{ + sc_control_state_t *state = (sc_control_state_t *) vstate; + + const double eps_abs = state->eps_abs; + const double eps_rel = state->eps_rel; + const double a_y = state->a_y; + const double a_dydt = state->a_dydt; + const double *scale_abs = state->scale_abs; + + const double S = 0.9; + const double h_old = *h; + + double rmax = DBL_MIN; + size_t i; + + for (i = 0; i < dim; i++) + { + const double D0 = + eps_rel * (a_y * fabs (y[i]) + a_dydt * fabs (h_old * yp[i])) + + eps_abs * scale_abs[i]; + const double r = fabs (yerr[i]) / fabs (D0); + rmax = GSL_MAX_DBL (r, rmax); + } + + if (rmax > 1.1) + { + /* decrease step, no more than factor of 5, but a fraction S more + than scaling suggests (for better accuracy) */ + double r = S / pow (rmax, 1.0 / ord); + + if (r < 0.2) + r = 0.2; + + *h = r * h_old; + + return GSL_ODEIV_HADJ_DEC; + } + else if (rmax < 0.5) + { + /* increase step, no more than factor of maxscale */ + double r = S / pow (rmax, 1.0 / (ord + 1.0)); + const double maxscale = 4.9; + + if (r > maxscale) + r = maxscale; + + if (r < 1.0) /* don't allow any decrease caused by S<1 */ + r = 1.0; + + *h = r * h_old; + + return GSL_ODEIV_HADJ_INC; + } + else + { + /* no change */ + return GSL_ODEIV_HADJ_NIL; + } +} + +static int +sc_control_errlevel (void *vstate, const double y, const double dydt, + const double h, const size_t ind, double *errlev) +{ + sc_control_state_t *state = (sc_control_state_t *) vstate; + + const double eps_abs = state->eps_abs; + const double eps_rel = state->eps_rel; + const double a_y = state->a_y; + const double a_dydt = state->a_dydt; + const double *scale_abs = state->scale_abs; + + *errlev = eps_rel * (a_y * fabs (y) + a_dydt * fabs (h * dydt)) + + eps_abs * scale_abs[ind]; + + if (*errlev <= 0.0) + { + GSL_ERROR_NULL ("errlev <= zero", GSL_ESANITY); + } + + return GSL_SUCCESS; +} + + +static void +sc_control_free (void *vstate) +{ + sc_control_state_t *state = (sc_control_state_t *) vstate; + free (state->scale_abs); + free (state); +} + +static const gsl_odeiv2_control_type sc_control_type = { "scaled", /* name */ + &sc_control_alloc, + &sc_control_init, + &sc_control_hadjust, + &sc_control_errlevel, + &control_set_driver_null, + &sc_control_free +}; + +const gsl_odeiv2_control_type *gsl_odeiv2_control_scaled = &sc_control_type; + + +gsl_odeiv2_control * +gsl_odeiv2_control_scaled_new (double eps_abs, double eps_rel, + double a_y, double a_dydt, + const double scale_abs[], size_t dim) +{ + gsl_odeiv2_control *c = + gsl_odeiv2_control_alloc (gsl_odeiv2_control_scaled); + + int status = gsl_odeiv2_control_init (c, eps_abs, eps_rel, a_y, a_dydt); + + if (status != GSL_SUCCESS) + { + gsl_odeiv2_control_free (c); + GSL_ERROR_NULL ("error trying to initialize control", status); + } + + { + sc_control_state_t *s = (sc_control_state_t *) c->state; + + s->scale_abs = (double *) malloc (dim * sizeof (double)); + + if (s->scale_abs == 0) + { + free (s); + GSL_ERROR_NULL ("failed to allocate space for scale_abs", GSL_ENOMEM); + } + + memcpy (s->scale_abs, scale_abs, dim * sizeof (double)); + } + + return c; +} diff --git a/gsl-2.5/ode-initval2/cscal.lo b/gsl-2.5/ode-initval2/cscal.lo new file mode 100644 index 00000000..530a9e66 --- /dev/null +++ b/gsl-2.5/ode-initval2/cscal.lo @@ -0,0 +1,12 @@ +# cscal.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/cscal.o' + +# Name of the non-PIC object +non_pic_object='cscal.o' + diff --git a/gsl-2.5/ode-initval2/cstd.c b/gsl-2.5/ode-initval2/cstd.c new file mode 100644 index 00000000..6b6833a2 --- /dev/null +++ b/gsl-2.5/ode-initval2/cstd.c @@ -0,0 +1,216 @@ +/* ode-initval2/cstd.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include +#include "control_utils.c" + +typedef struct +{ + double eps_abs; + double eps_rel; + double a_y; + double a_dydt; +} +std_control_state_t; + +static void * +std_control_alloc (void) +{ + std_control_state_t *s = + (std_control_state_t *) malloc (sizeof (std_control_state_t)); + + if (s == 0) + { + GSL_ERROR_NULL ("failed to allocate space for std_control_state", + GSL_ENOMEM); + } + + return s; +} + +static int +std_control_init (void *vstate, + double eps_abs, double eps_rel, double a_y, double a_dydt) +{ + std_control_state_t *s = (std_control_state_t *) vstate; + + if (eps_abs < 0) + { + GSL_ERROR ("eps_abs is negative", GSL_EINVAL); + } + else if (eps_rel < 0) + { + GSL_ERROR ("eps_rel is negative", GSL_EINVAL); + } + else if (a_y < 0) + { + GSL_ERROR ("a_y is negative", GSL_EINVAL); + } + else if (a_dydt < 0) + { + GSL_ERROR ("a_dydt is negative", GSL_EINVAL); + } + + s->eps_rel = eps_rel; + s->eps_abs = eps_abs; + s->a_y = a_y; + s->a_dydt = a_dydt; + + return GSL_SUCCESS; +} + +static int +std_control_hadjust (void *vstate, size_t dim, unsigned int ord, + const double y[], const double yerr[], const double yp[], + double *h) +{ + std_control_state_t *state = (std_control_state_t *) vstate; + + const double eps_abs = state->eps_abs; + const double eps_rel = state->eps_rel; + const double a_y = state->a_y; + const double a_dydt = state->a_dydt; + + const double S = 0.9; + const double h_old = *h; + + double rmax = DBL_MIN; + size_t i; + + for (i = 0; i < dim; i++) + { + const double D0 = + eps_rel * (a_y * fabs (y[i]) + a_dydt * fabs (h_old * yp[i])) + + eps_abs; + const double r = fabs (yerr[i]) / fabs (D0); + rmax = GSL_MAX_DBL (r, rmax); + } + + if (rmax > 1.1) + { + /* decrease step, no more than factor of 5, but a fraction S more + than scaling suggests (for better accuracy) */ + double r = S / pow (rmax, 1.0 / ord); + + if (r < 0.2) + r = 0.2; + + *h = r * h_old; + + return GSL_ODEIV_HADJ_DEC; + } + else if (rmax < 0.5) + { + /* increase step, no more than factor of 5 */ + double r = S / pow (rmax, 1.0 / (ord + 1.0)); + + if (r > 5.0) + r = 5.0; + + if (r < 1.0) /* don't allow any decrease caused by S<1 */ + r = 1.0; + + *h = r * h_old; + + return GSL_ODEIV_HADJ_INC; + } + else + { + /* no change */ + return GSL_ODEIV_HADJ_NIL; + } +} + +static int +std_control_errlevel (void *vstate, const double y, const double dydt, + const double h, const size_t ind, double *errlev) +{ + std_control_state_t *state = (std_control_state_t *) vstate; + + const double eps_abs = state->eps_abs; + const double eps_rel = state->eps_rel; + const double a_y = state->a_y; + const double a_dydt = state->a_dydt; + + *errlev = eps_rel * (a_y * fabs (y) + a_dydt * fabs (h * dydt)) + eps_abs; + + if (*errlev <= 0.0) + { + GSL_ERROR_NULL ("errlev <= zero", GSL_ESANITY); + } + + return GSL_SUCCESS; +} + + +static void +std_control_free (void *vstate) +{ + std_control_state_t *state = (std_control_state_t *) vstate; + free (state); +} + +static const gsl_odeiv2_control_type std_control_type = { "standard", /* name */ + &std_control_alloc, + &std_control_init, + &std_control_hadjust, + &std_control_errlevel, + &control_set_driver_null, + &std_control_free +}; + +const gsl_odeiv2_control_type *gsl_odeiv2_control_standard = + &std_control_type; + + +gsl_odeiv2_control * +gsl_odeiv2_control_standard_new (double eps_abs, double eps_rel, + double a_y, double a_dydt) +{ + gsl_odeiv2_control *c = + gsl_odeiv2_control_alloc (gsl_odeiv2_control_standard); + + int status = gsl_odeiv2_control_init (c, eps_abs, eps_rel, a_y, a_dydt); + + if (status != GSL_SUCCESS) + { + gsl_odeiv2_control_free (c); + GSL_ERROR_NULL ("error trying to initialize control", status); + } + + return c; +} + +gsl_odeiv2_control * +gsl_odeiv2_control_y_new (double eps_abs, double eps_rel) +{ + return gsl_odeiv2_control_standard_new (eps_abs, eps_rel, 1.0, 0.0); +} + + +gsl_odeiv2_control * +gsl_odeiv2_control_yp_new (double eps_abs, double eps_rel) +{ + return gsl_odeiv2_control_standard_new (eps_abs, eps_rel, 0.0, 1.0); +} diff --git a/gsl-2.5/ode-initval2/cstd.lo b/gsl-2.5/ode-initval2/cstd.lo new file mode 100644 index 00000000..4e25aec2 --- /dev/null +++ b/gsl-2.5/ode-initval2/cstd.lo @@ -0,0 +1,12 @@ +# cstd.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/cstd.o' + +# Name of the non-PIC object +non_pic_object='cstd.o' + diff --git a/gsl-2.5/ode-initval2/driver.c b/gsl-2.5/ode-initval2/driver.c new file mode 100644 index 00000000..ead7644f --- /dev/null +++ b/gsl-2.5/ode-initval2/driver.c @@ -0,0 +1,494 @@ +/* ode-initval2/driver.c + * + * Copyright (C) 2009, 2010 Tuomo Keskitalo + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Driver routine for odeiv2. This is a wrapper for low level GSL + functions that allows a simple interface to step, control and + evolve layers. + */ + +#include +#include +#include +#include +#include + +static gsl_odeiv2_driver * +driver_alloc (const gsl_odeiv2_system * sys, const double hstart, + const gsl_odeiv2_step_type * T) +{ + /* Allocates and initializes an ODE driver system. Step and evolve + objects are allocated here, but control object is allocated in + another function. + */ + + gsl_odeiv2_driver *state; + + if (sys == NULL) + { + GSL_ERROR_NULL ("gsl_odeiv2_system must be defined", GSL_EINVAL); + } + + state = (gsl_odeiv2_driver *) calloc (1, sizeof (gsl_odeiv2_driver)); + + if (state == NULL) + { + GSL_ERROR_NULL ("failed to allocate space for driver state", + GSL_ENOMEM); + } + + { + const size_t dim = sys->dimension; + + if (dim == 0) + { + gsl_odeiv2_driver_free(state); + GSL_ERROR_NULL + ("gsl_odeiv2_system dimension must be a positive integer", + GSL_EINVAL); + } + + state->sys = sys; + + state->s = gsl_odeiv2_step_alloc (T, dim); + + if (state->s == NULL) + { + gsl_odeiv2_driver_free(state); + GSL_ERROR_NULL ("failed to allocate step object", GSL_ENOMEM); + } + + state->e = gsl_odeiv2_evolve_alloc (dim); + } + + if (state->e == NULL) + { + gsl_odeiv2_driver_free(state); + GSL_ERROR_NULL ("failed to allocate evolve object", GSL_ENOMEM); + } + + if (hstart > 0.0 || hstart < 0.0) + { + state->h = hstart; + } + else + { + gsl_odeiv2_driver_free(state); + GSL_ERROR_NULL ("invalid hstart", GSL_EINVAL); + } + + state->h = hstart; + state->hmin = 0.0; + state->hmax = GSL_DBL_MAX; + state->nmax = 0; + state->n = 0; + state->c = NULL; + + return state; +} + +int +gsl_odeiv2_driver_set_hmin (gsl_odeiv2_driver * d, const double hmin) +{ + /* Sets minimum allowed step size fabs(hmin) for driver. It is + required that hmin <= fabs(h) <= hmax. */ + + if ((fabs (hmin) > fabs (d->h)) || (fabs (hmin) > d->hmax)) + { + GSL_ERROR_NULL ("hmin <= fabs(h) <= hmax required", GSL_EINVAL); + } + + d->hmin = fabs (hmin); + + return GSL_SUCCESS; +} + +int +gsl_odeiv2_driver_set_hmax (gsl_odeiv2_driver * d, const double hmax) +{ + /* Sets maximum allowed step size fabs(hmax) for driver. It is + required that hmin <= fabs(h) <= hmax. */ + + if ((fabs (hmax) < fabs (d->h)) || (fabs (hmax) < d->hmin)) + { + GSL_ERROR_NULL ("hmin <= fabs(h) <= hmax required", GSL_EINVAL); + } + + if (hmax > 0.0 || hmax < 0.0) + { + d->hmax = fabs (hmax); + } + else + { + GSL_ERROR_NULL ("invalid hmax", GSL_EINVAL); + } + + return GSL_SUCCESS; +} + +int +gsl_odeiv2_driver_set_nmax (gsl_odeiv2_driver * d, + const unsigned long int nmax) +{ + /* Sets maximum number of allowed steps (nmax) for driver */ + + d->nmax = nmax; + + return GSL_SUCCESS; +} + +gsl_odeiv2_driver * +gsl_odeiv2_driver_alloc_y_new (const gsl_odeiv2_system * sys, + const gsl_odeiv2_step_type * T, + const double hstart, + const double epsabs, const double epsrel) +{ + /* Initializes an ODE driver system with control object of type y_new. */ + + gsl_odeiv2_driver *state = driver_alloc (sys, hstart, T); + + if (state == NULL) + { + GSL_ERROR_NULL ("failed to allocate driver object", GSL_ENOMEM); + } + + if (epsabs >= 0.0 && epsrel >= 0.0) + { + state->c = gsl_odeiv2_control_y_new (epsabs, epsrel); + + if (state->c == NULL) + { + gsl_odeiv2_driver_free (state); + GSL_ERROR_NULL ("failed to allocate control object", GSL_ENOMEM); + } + } + else + { + gsl_odeiv2_driver_free (state); + GSL_ERROR_NULL ("epsabs and epsrel must be positive", GSL_EINVAL); + } + + /* Distribute pointer to driver object */ + + gsl_odeiv2_step_set_driver (state->s, state); + gsl_odeiv2_evolve_set_driver (state->e, state); + gsl_odeiv2_control_set_driver (state->c, state); + + return state; +} + +gsl_odeiv2_driver * +gsl_odeiv2_driver_alloc_yp_new (const gsl_odeiv2_system * sys, + const gsl_odeiv2_step_type * T, + const double hstart, + const double epsabs, const double epsrel) +{ + /* Initializes an ODE driver system with control object of type yp_new. */ + + gsl_odeiv2_driver *state = driver_alloc (sys, hstart, T); + + if (state == NULL) + { + GSL_ERROR_NULL ("failed to allocate driver object", GSL_ENOMEM); + } + + if (epsabs >= 0.0 && epsrel >= 0.0) + { + state->c = gsl_odeiv2_control_yp_new (epsabs, epsrel); + + if (state->c == NULL) + { + gsl_odeiv2_driver_free (state); + GSL_ERROR_NULL ("failed to allocate control object", GSL_ENOMEM); + } + } + else + { + gsl_odeiv2_driver_free (state); + GSL_ERROR_NULL ("epsabs and epsrel must be positive", GSL_EINVAL); + } + + /* Distribute pointer to driver object */ + + gsl_odeiv2_step_set_driver (state->s, state); + gsl_odeiv2_evolve_set_driver (state->e, state); + gsl_odeiv2_control_set_driver (state->c, state); + + return state; +} + +gsl_odeiv2_driver * +gsl_odeiv2_driver_alloc_standard_new (const gsl_odeiv2_system * sys, + const gsl_odeiv2_step_type * T, + const double hstart, + const double epsabs, + const double epsrel, const double a_y, + const double a_dydt) +{ + /* Initializes an ODE driver system with control object of type + standard_new. + */ + + gsl_odeiv2_driver *state = driver_alloc (sys, hstart, T); + + if (state == NULL) + { + GSL_ERROR_NULL ("failed to allocate driver object", GSL_ENOMEM); + } + + if (epsabs >= 0.0 && epsrel >= 0.0) + { + state->c = + gsl_odeiv2_control_standard_new (epsabs, epsrel, a_y, a_dydt); + + if (state->c == NULL) + { + gsl_odeiv2_driver_free (state); + GSL_ERROR_NULL ("failed to allocate control object", GSL_ENOMEM); + } + } + else + { + gsl_odeiv2_driver_free (state); + GSL_ERROR_NULL ("epsabs and epsrel must be positive", GSL_EINVAL); + } + + /* Distribute pointer to driver object */ + + gsl_odeiv2_step_set_driver (state->s, state); + gsl_odeiv2_evolve_set_driver (state->e, state); + gsl_odeiv2_control_set_driver (state->c, state); + + return state; +} + +gsl_odeiv2_driver * +gsl_odeiv2_driver_alloc_scaled_new (const gsl_odeiv2_system * sys, + const gsl_odeiv2_step_type * T, + const double hstart, + const double epsabs, const double epsrel, + const double a_y, const double a_dydt, + const double scale_abs[]) +{ + /* Initializes an ODE driver system with control object of type + scaled_new. + */ + + gsl_odeiv2_driver *state = driver_alloc (sys, hstart, T); + + if (state == NULL) + { + GSL_ERROR_NULL ("failed to allocate driver object", GSL_ENOMEM); + } + + if (epsabs >= 0.0 && epsrel >= 0.0) + { + state->c = gsl_odeiv2_control_scaled_new (epsabs, epsrel, a_y, a_dydt, + scale_abs, sys->dimension); + + if (state->c == NULL) + { + gsl_odeiv2_driver_free (state); + GSL_ERROR_NULL ("failed to allocate control object", GSL_ENOMEM); + } + } + else + { + gsl_odeiv2_driver_free (state); + GSL_ERROR_NULL ("epsabs and epsrel must be positive", GSL_EINVAL); + } + + /* Distribute pointer to driver object */ + + gsl_odeiv2_step_set_driver (state->s, state); + gsl_odeiv2_evolve_set_driver (state->e, state); + gsl_odeiv2_control_set_driver (state->c, state); + + return state; +} + +int +gsl_odeiv2_driver_apply (gsl_odeiv2_driver * d, double *t, + const double t1, double y[]) +{ + /* Main driver function that evolves the system from t to t1. In + beginning vector y contains the values of dependent variables at + t. This function returns values at t=t1 in y. In case of + unrecoverable error, y and t contains the values after the last + successful step. + */ + + int sign = 0; + d->n = 0; + + /* Determine integration direction sign */ + + if (d->h > 0.0) + { + sign = 1; + } + else + { + sign = -1; + } + + /* Check that t, t1 and step direction are sensible */ + + if (sign * (t1 - *t) < 0.0) + { + GSL_ERROR_NULL + ("integration limits and/or step direction not consistent", + GSL_EINVAL); + } + + /* Evolution loop */ + + while (sign * (t1 - *t) > 0.0) + { + int s = gsl_odeiv2_evolve_apply (d->e, d->c, d->s, d->sys, + t, t1, &(d->h), y); + + if (s != GSL_SUCCESS) + { + return s; + } + + /* Check for maximum allowed steps */ + + if ((d->nmax > 0) && (d->n > d->nmax)) + { + return GSL_EMAXITER; + } + + /* Set step size if maximum size is exceeded */ + + if (fabs (d->h) > d->hmax) + { + d->h = sign * d->hmax; + } + + /* Check for too small step size */ + + if (fabs (d->h) < d->hmin) + { + return GSL_ENOPROG; + } + + d->n++; + } + + return GSL_SUCCESS; +} + +int +gsl_odeiv2_driver_apply_fixed_step (gsl_odeiv2_driver * d, double *t, + const double h, const unsigned long int n, + double y[]) +{ + /* Alternative driver function that evolves the system from t using + * n steps of size h. In the beginning vector y contains the values + * of dependent variables at t. This function returns values at t = + * t + n * h in y. In case of an unrecoverable error, y and t + * contains the values after the last successful step. + */ + + unsigned long int i; + d->n = 0; + + /* Evolution loop */ + + for (i = 0; i < n; i++) + { + int s = gsl_odeiv2_evolve_apply_fixed_step (d->e, d->c, d->s, d->sys, + t, h, y); + + if (s != GSL_SUCCESS) + { + return s; + } + + d->n++; + } + + return GSL_SUCCESS; +} + +int +gsl_odeiv2_driver_reset (gsl_odeiv2_driver * d) +{ + /* Reset the driver. Resets evolve and step objects. */ + + { + int s = gsl_odeiv2_evolve_reset (d->e); + + if (s != GSL_SUCCESS) + { + return s; + } + } + + { + int s = gsl_odeiv2_step_reset (d->s); + + if (s != GSL_SUCCESS) + { + return s; + } + } + + return GSL_SUCCESS; +} + +int +gsl_odeiv2_driver_reset_hstart (gsl_odeiv2_driver * d, const double hstart) +{ + /* Resets current driver and sets initial step size to hstart */ + + gsl_odeiv2_driver_reset (d); + + if ((d->hmin > fabs (hstart)) || (fabs (hstart) > d->hmax)) + { + GSL_ERROR_NULL ("hmin <= fabs(h) <= hmax required", GSL_EINVAL); + } + + if (hstart > 0.0 || hstart < 0.0) + { + d->h = hstart; + } + else + { + GSL_ERROR_NULL ("invalid hstart", GSL_EINVAL); + } + + return GSL_SUCCESS; +} + +void +gsl_odeiv2_driver_free (gsl_odeiv2_driver * state) +{ + if (state->c) + gsl_odeiv2_control_free (state->c); + + if (state->e) + gsl_odeiv2_evolve_free (state->e); + + if (state->s) + gsl_odeiv2_step_free (state->s); + + free (state); +} diff --git a/gsl-2.5/ode-initval2/driver.lo b/gsl-2.5/ode-initval2/driver.lo new file mode 100644 index 00000000..365301b1 --- /dev/null +++ b/gsl-2.5/ode-initval2/driver.lo @@ -0,0 +1,12 @@ +# driver.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/driver.o' + +# Name of the non-PIC object +non_pic_object='driver.o' + diff --git a/gsl-2.5/ode-initval2/evolve.c b/gsl-2.5/ode-initval2/evolve.c new file mode 100644 index 00000000..a61275ed --- /dev/null +++ b/gsl-2.5/ode-initval2/evolve.c @@ -0,0 +1,398 @@ +/* ode-initval/evolve.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman + */ +#include +#include +#include +#include +#include +#include + +#include "odeiv_util.h" + +gsl_odeiv2_evolve * +gsl_odeiv2_evolve_alloc (size_t dim) +{ + gsl_odeiv2_evolve *e = + (gsl_odeiv2_evolve *) malloc (sizeof (gsl_odeiv2_evolve)); + + if (e == 0) + { + GSL_ERROR_NULL ("failed to allocate space for evolve struct", + GSL_ENOMEM); + } + + e->y0 = (double *) malloc (dim * sizeof (double)); + + if (e->y0 == 0) + { + free (e); + GSL_ERROR_NULL ("failed to allocate space for y0", GSL_ENOMEM); + } + + e->yerr = (double *) malloc (dim * sizeof (double)); + + if (e->yerr == 0) + { + free (e->y0); + free (e); + GSL_ERROR_NULL ("failed to allocate space for yerr", GSL_ENOMEM); + } + + e->dydt_in = (double *) malloc (dim * sizeof (double)); + + if (e->dydt_in == 0) + { + free (e->yerr); + free (e->y0); + free (e); + GSL_ERROR_NULL ("failed to allocate space for dydt_in", GSL_ENOMEM); + } + + e->dydt_out = (double *) malloc (dim * sizeof (double)); + + if (e->dydt_out == 0) + { + free (e->dydt_in); + free (e->yerr); + free (e->y0); + free (e); + GSL_ERROR_NULL ("failed to allocate space for dydt_out", GSL_ENOMEM); + } + + e->dimension = dim; + e->count = 0; + e->failed_steps = 0; + e->last_step = 0.0; + e->driver = NULL; + + return e; +} + +int +gsl_odeiv2_evolve_reset (gsl_odeiv2_evolve * e) +{ + e->count = 0; + e->failed_steps = 0; + e->last_step = 0.0; + return GSL_SUCCESS; +} + +void +gsl_odeiv2_evolve_free (gsl_odeiv2_evolve * e) +{ + RETURN_IF_NULL (e); + free (e->dydt_out); + free (e->dydt_in); + free (e->yerr); + free (e->y0); + free (e); +} + +/* Evolution framework method. + * + * Uses an adaptive step control object + */ +int +gsl_odeiv2_evolve_apply (gsl_odeiv2_evolve * e, + gsl_odeiv2_control * con, + gsl_odeiv2_step * step, + const gsl_odeiv2_system * dydt, + double *t, double t1, double *h, double y[]) +{ + const double t0 = *t; + double h0 = *h; + int step_status; + int final_step = 0; + double dt = t1 - t0; /* remaining time, possibly less than h */ + + if (e->dimension != step->dimension) + { + GSL_ERROR ("step dimension must match evolution size", GSL_EINVAL); + } + + if ((dt < 0.0 && h0 > 0.0) || (dt > 0.0 && h0 < 0.0)) + { + GSL_ERROR ("step direction must match interval direction", GSL_EINVAL); + } + + /* Save y in case of failure in a step */ + + DBL_MEMCPY (e->y0, y, e->dimension); + + /* Calculate initial dydt once or reuse previous value if the method + can benefit. */ + + if (step->type->can_use_dydt_in) + { + if (e->count == 0) + { + int status = GSL_ODEIV_FN_EVAL (dydt, t0, y, e->dydt_in); + + if (status) + { + return status; + } + } + else + { + DBL_MEMCPY (e->dydt_in, e->dydt_out, e->dimension); + } + } + +try_step: + + if ((dt >= 0.0 && h0 > dt) || (dt < 0.0 && h0 < dt)) + { + h0 = dt; + final_step = 1; + } + else + { + final_step = 0; + } + + if (step->type->can_use_dydt_in) + { + step_status = + gsl_odeiv2_step_apply (step, t0, h0, y, e->yerr, e->dydt_in, + e->dydt_out, dydt); + } + else + { + step_status = + gsl_odeiv2_step_apply (step, t0, h0, y, e->yerr, NULL, e->dydt_out, + dydt); + } + + /* Return if stepper indicates a pointer or user function failure */ + + if (step_status == GSL_EFAULT || step_status == GSL_EBADFUNC) + { + return step_status; + } + + /* Check for stepper internal failure */ + + if (step_status != GSL_SUCCESS) + { + /* Stepper was unable to calculate step. Try decreasing step size. */ + + double h_old = h0; + + h0 *= 0.5; + +#ifdef DEBUG + printf ("-- gsl_odeiv2_evolve_apply h0=%.5e\n", h0); +#endif + + /* Check that an actual decrease in h0 occured and the + suggested h0 will change the time by at least 1 ulp */ + + { + double t_curr = GSL_COERCE_DBL (*t); + double t_next = GSL_COERCE_DBL ((*t) + h0); + + if (fabs (h0) < fabs (h_old) && t_next != t_curr) + { + + /* Step was decreased. Undo step, and try again with new h0. */ + + DBL_MEMCPY (y, e->y0, dydt->dimension); + e->failed_steps++; + goto try_step; + } + else + { +#ifdef DEBUG + printf + ("-- gsl_odeiv2_evolve_apply h0=%.5e, t0=%.5e, step_status=%d\n", + h0, t0, step_status); +#endif + *h = h0; /* notify user of step-size which caused the failure */ + *t = t0; /* restore original t value */ + return step_status; + } + } + } + + e->count++; + e->last_step = h0; + + if (final_step) + { + *t = t1; + } + else + { + *t = t0 + h0; + } + + if (con != NULL) + { + /* Check error and attempt to adjust the step. */ + + double h_old = h0; + + const int hadjust_status + = + gsl_odeiv2_control_hadjust (con, step, y, e->yerr, e->dydt_out, &h0); + + if (hadjust_status == GSL_ODEIV_HADJ_DEC) + { + /* Check that the reported status is correct (i.e. an actual + decrease in h0 occured) and the suggested h0 will change + the time by at least 1 ulp */ + + double t_curr = GSL_COERCE_DBL (*t); + double t_next = GSL_COERCE_DBL ((*t) + h0); + + if (fabs (h0) < fabs (h_old) && t_next != t_curr) + { + /* Step was decreased. Undo step, and try again with new h0. */ + + DBL_MEMCPY (y, e->y0, dydt->dimension); + e->failed_steps++; + goto try_step; + } + else + { + /* Can not obtain required error tolerance, and can not + decrease step-size any further, so give up and return + GSL_FAILURE. + */ + + *h = h0; /* notify user of step-size which caused the failure */ + return GSL_FAILURE; + } + } + } + + /* Suggest step size for next time-step. Change of step size is not + suggested in the final step, because that step can be very + small compared to previous step, to reach t1. + */ + + if (final_step == 0) + { + *h = h0; + } + + return step_status; +} + +/* Evolves the system using the user specified constant step size h. + */ + +int +gsl_odeiv2_evolve_apply_fixed_step (gsl_odeiv2_evolve * e, + gsl_odeiv2_control * con, + gsl_odeiv2_step * step, + const gsl_odeiv2_system * dydt, + double *t, const double h, double y[]) +{ + const double t0 = *t; + int step_status; + + if (e->dimension != step->dimension) + { + GSL_ERROR ("step dimension must match evolution size", GSL_EINVAL); + } + + /* Save y in case of failure in a step */ + + DBL_MEMCPY (e->y0, y, e->dimension); + + /* Calculate initial dydt once if the method can benefit. */ + + if (step->type->can_use_dydt_in) + { + int status = GSL_ODEIV_FN_EVAL (dydt, t0, y, e->dydt_in); + + if (status) + { + return status; + } + } + + if (step->type->can_use_dydt_in) + { + step_status = + gsl_odeiv2_step_apply (step, t0, h, y, e->yerr, e->dydt_in, + e->dydt_out, dydt); + } + else + { + step_status = + gsl_odeiv2_step_apply (step, t0, h, y, e->yerr, NULL, e->dydt_out, + dydt); + } + + /* Return the stepper return value in case of an error */ + + if (step_status != GSL_SUCCESS) + { + return step_status; + } + + if (con != NULL) + { + /* Calculate error level. Fail if error level exceeds desired + error level. */ + + double htemp = h; + + const int hadjust_status + = gsl_odeiv2_control_hadjust (con, step, y, e->yerr, + e->dydt_out, &htemp); + + if (hadjust_status == GSL_ODEIV_HADJ_DEC) + { + DBL_MEMCPY (y, e->y0, dydt->dimension); + e->failed_steps++; + return GSL_FAILURE; + } + } + + /* Step is accepted, update status */ + + e->count++; + e->last_step = h; + *t = t0 + h; + + return GSL_SUCCESS; +} + +int +gsl_odeiv2_evolve_set_driver (gsl_odeiv2_evolve * e, + const gsl_odeiv2_driver * d) +{ + if (d != NULL) + { + e->driver = d; + } + else + { + GSL_ERROR_NULL ("driver pointer is null", GSL_EFAULT); + } + + return GSL_SUCCESS; +} diff --git a/gsl-2.5/ode-initval2/evolve.lo b/gsl-2.5/ode-initval2/evolve.lo new file mode 100644 index 00000000..34fe9524 --- /dev/null +++ b/gsl-2.5/ode-initval2/evolve.lo @@ -0,0 +1,12 @@ +# evolve.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/evolve.o' + +# Name of the non-PIC object +non_pic_object='evolve.o' + diff --git a/gsl-2.5/ode-initval2/gsl_odeiv2.h b/gsl-2.5/ode-initval2/gsl_odeiv2.h new file mode 100644 index 00000000..9bcfbae6 --- /dev/null +++ b/gsl-2.5/ode-initval2/gsl_odeiv2.h @@ -0,0 +1,333 @@ +/* ode-initval/odeiv2.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ +/* Modified by Tuomo Keskitalo */ + +#ifndef __GSL_ODEIV2_H__ +#define __GSL_ODEIV2_H__ + +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS +/* Description of a system of ODEs. + * + * y' = f(t,y) = dydt(t, y) + * + * The system is specified by giving the right-hand-side + * of the equation and possibly a jacobian function. + * + * Some methods require the jacobian function, which calculates + * the matrix dfdy and the vector dfdt. The matrix dfdy conforms + * to the GSL standard, being a continuous range of floating point + * values, in row-order. + * + * As with GSL function objects, user-supplied parameter + * data is also present. + */ + typedef struct +{ + int (*function) (double t, const double y[], double dydt[], void *params); + int (*jacobian) (double t, const double y[], double *dfdy, double dfdt[], + void *params); + size_t dimension; + void *params; +} +gsl_odeiv2_system; + +/* Function evaluation macros */ + +#define GSL_ODEIV_FN_EVAL(S,t,y,f) (*((S)->function))(t,y,f,(S)->params) +#define GSL_ODEIV_JA_EVAL(S,t,y,dfdy,dfdt) (*((S)->jacobian))(t,y,dfdy,dfdt,(S)->params) + +/* Type definitions */ + +typedef struct gsl_odeiv2_step_struct gsl_odeiv2_step; +typedef struct gsl_odeiv2_control_struct gsl_odeiv2_control; +typedef struct gsl_odeiv2_evolve_struct gsl_odeiv2_evolve; +typedef struct gsl_odeiv2_driver_struct gsl_odeiv2_driver; + +/* Stepper object + * + * Opaque object for stepping an ODE system from t to t+h. + * In general the object has some state which facilitates + * iterating the stepping operation. + */ + +typedef struct +{ + const char *name; + int can_use_dydt_in; + int gives_exact_dydt_out; + void *(*alloc) (size_t dim); + int (*apply) (void *state, size_t dim, double t, double h, double y[], + double yerr[], const double dydt_in[], double dydt_out[], + const gsl_odeiv2_system * dydt); + int (*set_driver) (void *state, const gsl_odeiv2_driver * d); + int (*reset) (void *state, size_t dim); + unsigned int (*order) (void *state); + void (*free) (void *state); +} +gsl_odeiv2_step_type; + +struct gsl_odeiv2_step_struct +{ + const gsl_odeiv2_step_type *type; + size_t dimension; + void *state; +}; + +/* Available stepper types */ + +GSL_VAR const gsl_odeiv2_step_type *gsl_odeiv2_step_rk2; +GSL_VAR const gsl_odeiv2_step_type *gsl_odeiv2_step_rk4; +GSL_VAR const gsl_odeiv2_step_type *gsl_odeiv2_step_rkf45; +GSL_VAR const gsl_odeiv2_step_type *gsl_odeiv2_step_rkck; +GSL_VAR const gsl_odeiv2_step_type *gsl_odeiv2_step_rk8pd; +GSL_VAR const gsl_odeiv2_step_type *gsl_odeiv2_step_rk2imp; +GSL_VAR const gsl_odeiv2_step_type *gsl_odeiv2_step_rk4imp; +GSL_VAR const gsl_odeiv2_step_type *gsl_odeiv2_step_bsimp; +GSL_VAR const gsl_odeiv2_step_type *gsl_odeiv2_step_rk1imp; +GSL_VAR const gsl_odeiv2_step_type *gsl_odeiv2_step_msadams; +GSL_VAR const gsl_odeiv2_step_type *gsl_odeiv2_step_msbdf; + +/* Stepper object methods */ + +gsl_odeiv2_step *gsl_odeiv2_step_alloc (const gsl_odeiv2_step_type * T, + size_t dim); +int gsl_odeiv2_step_reset (gsl_odeiv2_step * s); +void gsl_odeiv2_step_free (gsl_odeiv2_step * s); +const char *gsl_odeiv2_step_name (const gsl_odeiv2_step * s); +unsigned int gsl_odeiv2_step_order (const gsl_odeiv2_step * s); +int gsl_odeiv2_step_apply (gsl_odeiv2_step * s, double t, double h, + double y[], double yerr[], const double dydt_in[], + double dydt_out[], const gsl_odeiv2_system * dydt); +int gsl_odeiv2_step_set_driver (gsl_odeiv2_step * s, + const gsl_odeiv2_driver * d); + +/* Step size control object. */ + +typedef struct +{ + const char *name; + void *(*alloc) (void); + int (*init) (void *state, double eps_abs, double eps_rel, double a_y, + double a_dydt); + int (*hadjust) (void *state, size_t dim, unsigned int ord, const double y[], + const double yerr[], const double yp[], double *h); + int (*errlevel) (void *state, const double y, const double dydt, + const double h, const size_t ind, double *errlev); + int (*set_driver) (void *state, const gsl_odeiv2_driver * d); + void (*free) (void *state); +} +gsl_odeiv2_control_type; + +struct gsl_odeiv2_control_struct +{ + const gsl_odeiv2_control_type *type; + void *state; +}; + +/* Possible return values for an hadjust() evolution method */ + +#define GSL_ODEIV_HADJ_INC 1 /* step was increased */ +#define GSL_ODEIV_HADJ_NIL 0 /* step unchanged */ +#define GSL_ODEIV_HADJ_DEC (-1) /* step decreased */ + +/* General step size control methods. + * + * The hadjust() method controls the adjustment of + * step size given the result of a step and the error. + * Valid hadjust() methods must return one of the codes below. + * errlevel function calculates the desired error level D0. + * + * The general data can be used by specializations + * to store state and control their heuristics. + */ + +gsl_odeiv2_control *gsl_odeiv2_control_alloc (const gsl_odeiv2_control_type * + T); +int gsl_odeiv2_control_init (gsl_odeiv2_control * c, double eps_abs, + double eps_rel, double a_y, double a_dydt); +void gsl_odeiv2_control_free (gsl_odeiv2_control * c); +int gsl_odeiv2_control_hadjust (gsl_odeiv2_control * c, gsl_odeiv2_step * s, + const double y[], const double yerr[], + const double dydt[], double *h); +const char *gsl_odeiv2_control_name (const gsl_odeiv2_control * c); +int gsl_odeiv2_control_errlevel (gsl_odeiv2_control * c, const double y, + const double dydt, const double h, + const size_t ind, double *errlev); +int gsl_odeiv2_control_set_driver (gsl_odeiv2_control * c, + const gsl_odeiv2_driver * d); + +/* Available control object constructors. + * + * The standard control object is a four parameter heuristic + * defined as follows: + * D0 = eps_abs + eps_rel * (a_y |y| + a_dydt h |y'|) + * D1 = |yerr| + * q = consistency order of method (q=4 for 4(5) embedded RK) + * S = safety factor (0.9 say) + * + * / (D0/D1)^(1/(q+1)) D0 >= D1 + * h_NEW = S h_OLD * | + * \ (D0/D1)^(1/q) D0 < D1 + * + * This encompasses all the standard error scaling methods. + * + * The y method is the standard method with a_y=1, a_dydt=0. + * The yp method is the standard method with a_y=0, a_dydt=1. + */ + +gsl_odeiv2_control *gsl_odeiv2_control_standard_new (double eps_abs, + double eps_rel, + double a_y, + double a_dydt); +gsl_odeiv2_control *gsl_odeiv2_control_y_new (double eps_abs, double eps_rel); +gsl_odeiv2_control *gsl_odeiv2_control_yp_new (double eps_abs, + double eps_rel); + +/* This controller computes errors using different absolute errors for + * each component + * + * D0 = eps_abs * scale_abs[i] + eps_rel * (a_y |y| + a_dydt h |y'|) + */ + +gsl_odeiv2_control *gsl_odeiv2_control_scaled_new (double eps_abs, + double eps_rel, double a_y, + double a_dydt, + const double scale_abs[], + size_t dim); + +/* Evolution object */ + +struct gsl_odeiv2_evolve_struct +{ + size_t dimension; + double *y0; + double *yerr; + double *dydt_in; + double *dydt_out; + double last_step; + unsigned long int count; + unsigned long int failed_steps; + const gsl_odeiv2_driver *driver; +}; + +/* Evolution object methods */ + +gsl_odeiv2_evolve *gsl_odeiv2_evolve_alloc (size_t dim); +int gsl_odeiv2_evolve_apply (gsl_odeiv2_evolve * e, gsl_odeiv2_control * con, + gsl_odeiv2_step * step, + const gsl_odeiv2_system * dydt, double *t, + double t1, double *h, double y[]); +int gsl_odeiv2_evolve_apply_fixed_step (gsl_odeiv2_evolve * e, + gsl_odeiv2_control * con, + gsl_odeiv2_step * step, + const gsl_odeiv2_system * dydt, + double *t, const double h0, + double y[]); +int gsl_odeiv2_evolve_reset (gsl_odeiv2_evolve * e); +void gsl_odeiv2_evolve_free (gsl_odeiv2_evolve * e); +int gsl_odeiv2_evolve_set_driver (gsl_odeiv2_evolve * e, + const gsl_odeiv2_driver * d); + +/* Driver object + * + * This is a high level wrapper for step, control and + * evolve objects. + */ + +struct gsl_odeiv2_driver_struct +{ + const gsl_odeiv2_system *sys; /* ODE system */ + gsl_odeiv2_step *s; /* stepper object */ + gsl_odeiv2_control *c; /* control object */ + gsl_odeiv2_evolve *e; /* evolve object */ + double h; /* step size */ + double hmin; /* minimum step size allowed */ + double hmax; /* maximum step size allowed */ + unsigned long int n; /* number of steps taken */ + unsigned long int nmax; /* Maximum number of steps allowed */ +}; + +/* Driver object methods */ + +gsl_odeiv2_driver *gsl_odeiv2_driver_alloc_y_new (const gsl_odeiv2_system * + sys, + const gsl_odeiv2_step_type * + T, const double hstart, + const double epsabs, + const double epsrel); +gsl_odeiv2_driver *gsl_odeiv2_driver_alloc_yp_new (const gsl_odeiv2_system * + sys, + const gsl_odeiv2_step_type + * T, const double hstart, + const double epsabs, + const double epsrel); +gsl_odeiv2_driver *gsl_odeiv2_driver_alloc_scaled_new (const gsl_odeiv2_system + * sys, + const + gsl_odeiv2_step_type * + T, const double hstart, + const double epsabs, + const double epsrel, + const double a_y, + const double a_dydt, + const double + scale_abs[]); +gsl_odeiv2_driver *gsl_odeiv2_driver_alloc_standard_new (const + gsl_odeiv2_system * + sys, + const + gsl_odeiv2_step_type + * T, + const double hstart, + const double epsabs, + const double epsrel, + const double a_y, + const double a_dydt); +int gsl_odeiv2_driver_set_hmin (gsl_odeiv2_driver * d, const double hmin); +int gsl_odeiv2_driver_set_hmax (gsl_odeiv2_driver * d, const double hmax); +int gsl_odeiv2_driver_set_nmax (gsl_odeiv2_driver * d, + const unsigned long int nmax); +int gsl_odeiv2_driver_apply (gsl_odeiv2_driver * d, double *t, + const double t1, double y[]); +int gsl_odeiv2_driver_apply_fixed_step (gsl_odeiv2_driver * d, double *t, + const double h, + const unsigned long int n, + double y[]); +int gsl_odeiv2_driver_reset (gsl_odeiv2_driver * d); +int gsl_odeiv2_driver_reset_hstart (gsl_odeiv2_driver * d, const double hstart); +void gsl_odeiv2_driver_free (gsl_odeiv2_driver * state); + +__END_DECLS +#endif /* __GSL_ODEIV2_H__ */ diff --git a/gsl-2.5/ode-initval2/libgslodeiv2.la b/gsl-2.5/ode-initval2/libgslodeiv2.la new file mode 100644 index 00000000..b198b10d --- /dev/null +++ b/gsl-2.5/ode-initval2/libgslodeiv2.la @@ -0,0 +1,41 @@ +# libgslodeiv2.la - a libtool library file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='' + +# Names of this library. +library_names='' + +# The name of the static archive. +old_library='libgslodeiv2.a' + +# Linker flags that can not go in dependency_libs. +inherited_linker_flags='' + +# Libraries that this one depends upon. +dependency_libs=' -lm' + +# Names of additional weak libraries provided by this library +weak_library_names='' + +# Version information for libgslodeiv2. +current= +age= +revision= + +# Is this an already installed library? +installed=no + +# Should we warn about portability when linking against -modules? +shouldnotlink=no + +# Files to dlopen/dlpreopen +dlopen='' +dlpreopen='' + +# Directory that this library needs to be installed in: +libdir='' diff --git a/gsl-2.5/ode-initval2/modnewton1.c b/gsl-2.5/ode-initval2/modnewton1.c new file mode 100644 index 00000000..1e2f9731 --- /dev/null +++ b/gsl-2.5/ode-initval2/modnewton1.c @@ -0,0 +1,426 @@ +/* ode-initval2/modnewton1.c + * + * Copyright (C) 2008, 2009, 2010 Tuomo Keskitalo + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* A modified Newton iteration method for solving non-linear + equations in implicit Runge-Kutta methods. +*/ + +/* References: + + Ascher, U.M., Petzold, L.R., Computer methods for ordinary + differential and differential-algebraic equations, SIAM, + Philadelphia, 1998. ISBN 0898714125, 9780898714128 + + Hairer, E., Wanner, G., Solving Ordinary Differential + Equations II: Stiff and Differential-Algebraic Problems, + Springer, 1996. ISBN 3540604529, 9783540604525 +*/ + +#include +#include +#include +#include +#include +#include +#include +#include + +#include "odeiv_util.h" + +typedef struct +{ + /* iteration matrix I - h A (*) J */ + gsl_matrix *IhAJ; + + /* permutation for LU-decomposition */ + gsl_permutation *p; + + /* difference vector for kth Newton iteration */ + gsl_vector *dYk; + + /* scaled dYk with desired error level */ + gsl_vector *dScal; + + /* current Runge-Kutta points (absolute values) */ + double *Yk; + + /* function values at points Yk */ + double *fYk; + + /* right hand side of Newton iteration formula */ + gsl_vector *rhs; + + /* stopping criterion value from previous step */ + double eeta_prev; +} +modnewton1_state_t; + +static void * +modnewton1_alloc (size_t dim, size_t stage) +{ + modnewton1_state_t *state = + (modnewton1_state_t *) malloc (sizeof (modnewton1_state_t)); + + if (state == 0) + { + GSL_ERROR_NULL ("failed to allocate space for modnewton1_state_t", + GSL_ENOMEM); + } + + state->IhAJ = gsl_matrix_alloc (dim * stage, dim * stage); + + if (state->IhAJ == 0) + { + free (state); + GSL_ERROR_NULL ("failed to allocate space for IhAJ", GSL_ENOMEM); + } + + state->p = gsl_permutation_alloc (dim * stage); + + if (state->p == 0) + { + gsl_matrix_free (state->IhAJ); + free (state); + GSL_ERROR_NULL ("failed to allocate space for p", GSL_ENOMEM); + } + + state->dYk = gsl_vector_alloc (dim * stage); + + if (state->dYk == 0) + { + gsl_permutation_free (state->p); + gsl_matrix_free (state->IhAJ); + free (state); + GSL_ERROR_NULL ("failed to allocate space for dYk", GSL_ENOMEM); + } + + state->dScal = gsl_vector_alloc (dim * stage); + + if (state->dScal == 0) + { + gsl_vector_free (state->dYk); + gsl_permutation_free (state->p); + gsl_matrix_free (state->IhAJ); + free (state); + GSL_ERROR_NULL ("failed to allocate space for dScal", GSL_ENOMEM); + } + + state->Yk = (double *) malloc (dim * stage * sizeof (double)); + + if (state->Yk == 0) + { + gsl_vector_free (state->dScal); + gsl_vector_free (state->dYk); + gsl_permutation_free (state->p); + gsl_matrix_free (state->IhAJ); + free (state); + GSL_ERROR_NULL ("failed to allocate space for Yk", GSL_ENOMEM); + } + + state->fYk = (double *) malloc (dim * stage * sizeof (double)); + + if (state->fYk == 0) + { + free (state->Yk); + gsl_vector_free (state->dScal); + gsl_vector_free (state->dYk); + gsl_permutation_free (state->p); + gsl_matrix_free (state->IhAJ); + free (state); + GSL_ERROR_NULL ("failed to allocate space for Yk", GSL_ENOMEM); + } + + state->rhs = gsl_vector_alloc (dim * stage); + + if (state->rhs == 0) + { + free (state->fYk); + free (state->Yk); + gsl_vector_free (state->dScal); + gsl_vector_free (state->dYk); + gsl_permutation_free (state->p); + gsl_matrix_free (state->IhAJ); + free (state); + GSL_ERROR_NULL ("failed to allocate space for rhs", GSL_ENOMEM); + } + + state->eeta_prev = GSL_DBL_MAX; + + return state; +} + +static int +modnewton1_init (void *vstate, const gsl_matrix * A, + const double h, const gsl_matrix * dfdy, + const gsl_odeiv2_system * sys) +{ + /* Initializes the method by forming the iteration matrix IhAJ + and generating its LU-decomposition + */ + + modnewton1_state_t *state = (modnewton1_state_t *) vstate; + + gsl_matrix *const IhAJ = state->IhAJ; + gsl_permutation *const p = state->p; + + const size_t dim = sys->dimension; + const size_t stage = A->size1; + + state->eeta_prev = GSL_DBL_MAX; + + /* Generate IhAJ */ + + { + size_t i, j, k, m; + + for (i = 0; i < dim; i++) + for (j = 0; j < dim; j++) + for (k = 0; k < stage; k++) + for (m = 0; m < stage; m++) + { + size_t x = dim * k + i; + size_t y = dim * m + j; + + if (x != y) + gsl_matrix_set (IhAJ, x, y, + -h * gsl_matrix_get (A, k, m) * + gsl_matrix_get (dfdy, i, j)); + else + gsl_matrix_set (IhAJ, x, y, + 1.0 - h * gsl_matrix_get (A, k, m) * + gsl_matrix_get (dfdy, i, j)); + } + } + + /* decompose */ + + { + int signum; + int s = gsl_linalg_LU_decomp (IhAJ, p, &signum); + + if (s != GSL_SUCCESS) + return s; + } + + return GSL_SUCCESS; +} + +static int +modnewton1_solve (void *vstate, const gsl_matrix * A, + const double c[], const double t, const double h, + const double y0[], const gsl_odeiv2_system * sys, + double YZ[], const double errlev[]) +{ + /* Solves the non-linear equation system resulting from implicit + Runge-Kutta methods by a modified Newton iteration. The + modified Newton iteration with this problem is stated in the + form + + IhAJ * dYk = rhs + + in which IhAJ is the iteration matrix: IhAJ = (I - hA (*) J) in + which (*) is the Kronecker matrix product (size of IhAJ = + dim*stage, dim*stage), dYk is the Runge-Kutta point (Y) + difference vector for kth Newton iteration: dYk = Y(k+1) - Y(k), + and rhs = Y(k) - y0 - h * sum j=1..stage (a_j * f(Y(k))) + + This function solves dYk by LU-decomposition of IhAJ with partial + pivoting. + */ + + modnewton1_state_t *state = (modnewton1_state_t *) vstate; + + gsl_matrix *const IhAJ = state->IhAJ; + gsl_permutation *const p = state->p; + gsl_vector *const dYk = state->dYk; + double *const Yk = state->Yk; + double *const fYk = state->fYk; + gsl_vector *const rhs = state->rhs; + double *const eeta_prev = &(state->eeta_prev); + gsl_vector *const dScal = state->dScal; + + const size_t dim = sys->dimension; + const size_t stage = A->size1; + + int status = GSL_CONTINUE; /* Convergence status for Newton iteration */ + + /* Set starting values for iteration. Use starting values of Y(k) = + y0. FIXME: Implement better initial guess described in Hairer and + Wanner. + */ + + { + size_t j, m; + + gsl_vector_set_zero (dYk); + + for (j = 0; j < stage; j++) + for (m = 0; m < dim; m++) + Yk[j * dim + m] = y0[m]; + } + + /* Loop modified Newton iterations */ + + { + size_t iter = 0; + size_t j, m, n; + + /* Maximum number of Newton iterations. */ + const size_t max_iter = 7; + + double dScal_norm = 0.0; /* Newton iteration step length */ + double dScal_norm_prev = 0.0; /* Previous dScal_norm */ + + while (status == GSL_CONTINUE && iter < max_iter) + { + iter++; + + /* Update Y(k) and evaluate function */ + + for (j = 0; j < stage; j++) + { + for (m = 0; m < dim; m++) + { + Yk[j * dim + m] += gsl_vector_get (dYk, j * dim + m); + } + + { + int s = GSL_ODEIV_FN_EVAL (sys, t + c[j] * h, &Yk[j * dim], + &fYk[j * dim]); + if (s != GSL_SUCCESS) + { + return s; + } + } + } + + /* Calculate rhs */ + + for (j = 0; j < stage; j++) + for (m = 0; m < dim; m++) + { + double sum = 0; + + for (n = 0; n < stage; n++) + sum += gsl_matrix_get (A, j, n) * fYk[n * dim + m]; + + gsl_vector_set (rhs, j * dim + m, + -1.0 * Yk[j * dim + m] + y0[m] + h * sum); + } + + /* Solve dYk */ + + { + int s = gsl_linalg_LU_solve (IhAJ, p, rhs, dYk); + + if (s != GSL_SUCCESS) + { + return s; + } + } + + /* Evaluate convergence according to method by Hairer and + Wanner, section IV.8. The iteration step is normalized by + desired error level before calculation of the norm, to take + the tolerance on each component of y into account. + */ + + { + /* relative change in two Newton iteration steps */ + double theta_k; + + /* transformation of theta_k */ + double eeta_k = 0.0; + + for (j = 0; j < stage; j++) + for (m = 0; m < dim; m++) + { + gsl_vector_set (dScal, j * dim + m, + gsl_vector_get (dYk, j * dim + m) + / errlev[m]); + } + + dScal_norm_prev = dScal_norm; + dScal_norm = gsl_blas_dnrm2 (dScal); + + theta_k = dScal_norm / dScal_norm_prev; + + if (iter > 1) + { + /* check for increase in step size, which indicates divergence */ + + if (theta_k >= 1.0) + { + return GSL_FAILURE; + } + + eeta_k = theta_k / (1.0 - theta_k); + } + + else + { + eeta_k = pow (GSL_MAX_DBL (*eeta_prev, GSL_DBL_EPSILON), 0.8); + } + + *eeta_prev = eeta_k; + + if (eeta_k * dScal_norm < 1.0) + { + status = GSL_SUCCESS; + } + } + } + } + + /* No convergence reached within allowed iterations */ + + if (status != GSL_SUCCESS) + { + return GSL_FAILURE; + } + + /* Give solution in YZ */ + + else + { + size_t j, m; + + for (j = 0; j < stage; j++) + for (m = 0; m < dim; m++) + YZ[j * dim + m] = + Yk[j * dim + m] + gsl_vector_get (dYk, j * dim + m); + + return status; + } +} + +static void +modnewton1_free (void *vstate) +{ + modnewton1_state_t *state = (modnewton1_state_t *) vstate; + + gsl_vector_free (state->rhs); + free (state->fYk); + free (state->Yk); + gsl_vector_free (state->dScal); + gsl_vector_free (state->dYk); + gsl_permutation_free (state->p); + gsl_matrix_free (state->IhAJ); + free (state); +} diff --git a/gsl-2.5/ode-initval2/msadams.c b/gsl-2.5/ode-initval2/msadams.c new file mode 100644 index 00000000..f52d301a --- /dev/null +++ b/gsl-2.5/ode-initval2/msadams.c @@ -0,0 +1,1327 @@ +/* ode-initval2/msadams.c + * + * Copyright (C) 2009, 2010 Tuomo Keskitalo + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* A variable-coefficient linear multistep Adams method in Nordsieck + form. This stepper uses explicit Adams-Bashforth (predictor) and + implicit Adams-Moulton (corrector) methods in P(EC)^m functional + iteration mode. Method order varies dynamically between 1 and 12. + + References: + + Byrne, G. D., and Hindmarsh, A. C., A Polyalgorithm for the + Numerical Solution of Ordinary Differential Equations, + ACM Trans. Math. Software, 1 (1975), pp. 71-96. + + Brown, P. N., Byrne, G. D., and Hindmarsh, A. C., VODE: A + Variable-coefficient ODE Solver, SIAM J. Sci. Stat. Comput. 10, + (1989), pp. 1038-1051. + + Hindmarsh, A. C., Brown, P. N., Grant, K. E., Lee, S. L., Serban, + R., Shumaker, D. E., and Woodward, C. S., SUNDIALS: Suite of + Nonlinear and Differential/Algebraic Equation Solvers, ACM + Trans. Math. Software 31 (2005), pp. 363-396. + + Note: The algorithms have been adapted for GSL ode-initval2 + framework. +*/ + +#include +#include +#include +#include +#include +#include +#include + +#include "odeiv_util.h" + +/* Maximum order of Adams methods */ +#define MSADAMS_MAX_ORD 12 + +typedef struct +{ + /* Nordsieck history matrix. Includes concatenated + Nordsieck vectors [y_n, h*y_n', (h^2/2!)*y_n'', ..., + (h^ord/ord!)*d^(ord)(y_n)]. Nordsieck vector number i is located + at z[i*dim] (i=0..ord). + */ + double *z; + + double *zbackup; /* backup of Nordsieck matrix */ + double *ytmp; /* work area */ + double *ytmp2; /* work area */ + double *pc; /* product term coefficients */ + double *l; /* polynomial coefficients */ + double *hprev; /* previous step sizes */ + double *hprevbackup; /* backup of hprev */ + double *errlev; /* desired error level of y */ + gsl_vector *abscor; /* absolute y values for correction */ + gsl_vector *relcor; /* relative y values for correction */ + gsl_vector *svec; /* saved abscor & work area */ + gsl_vector *tempvec; /* work area */ + const gsl_odeiv2_driver *driver; /* pointer to gsl_odeiv2_driver object */ + + long int ni; /* stepper call counter */ + size_t ord; /* current order of method */ + size_t ordprev; /* order of previous call */ + size_t ordprevbackup; /* backup of ordprev */ + double tprev; /* t point of previous call */ + size_t ordwait; /* counter for order change */ + size_t ordwaitbackup; /* backup of ordwait */ + size_t failord; /* order of convergence failure */ + double failt; /* t point of convergence failure */ + double ordm1coeff; /* saved order-1 coefficiet */ + double ordp1coeffprev; /* saved order+1 coefficient */ + size_t failcount; /* counter for rejected steps */ +} +msadams_state_t; + +/* Introduce msadams_reset for use in msadams_alloc and _apply */ + +static int msadams_reset (void *, size_t); + +static void * +msadams_alloc (size_t dim) +{ + msadams_state_t *state = + (msadams_state_t *) malloc (sizeof (msadams_state_t)); + + if (state == 0) + { + GSL_ERROR_NULL ("failed to allocate space for msadams_state", + GSL_ENOMEM); + } + + state->z = + (double *) malloc ((MSADAMS_MAX_ORD + 1) * dim * sizeof (double)); + + if (state->z == 0) + { + free (state); + GSL_ERROR_NULL ("failed to allocate space for z", GSL_ENOMEM); + } + + state->zbackup = + (double *) malloc ((MSADAMS_MAX_ORD + 1) * dim * sizeof (double)); + + if (state->zbackup == 0) + { + free (state->z); + free (state); + GSL_ERROR_NULL ("failed to allocate space for zbackup", GSL_ENOMEM); + } + + state->ytmp = (double *) malloc (dim * sizeof (double)); + + if (state->ytmp == 0) + { + free (state->zbackup); + free (state->z); + free (state); + GSL_ERROR_NULL ("failed to allocate space for ytmp", GSL_ENOMEM); + } + + state->ytmp2 = (double *) malloc (dim * sizeof (double)); + + if (state->ytmp2 == 0) + { + free (state->ytmp); + free (state->zbackup); + free (state->z); + free (state); + GSL_ERROR_NULL ("failed to allocate space for ytmp2", GSL_ENOMEM); + } + + state->pc = (double *) malloc ((MSADAMS_MAX_ORD + 1) * sizeof (double)); + + if (state->pc == 0) + { + free (state->ytmp2); + free (state->ytmp); + free (state->zbackup); + free (state->z); + free (state); + GSL_ERROR_NULL ("failed to allocate space for pc", GSL_ENOMEM); + } + + state->l = (double *) malloc ((MSADAMS_MAX_ORD + 1) * sizeof (double)); + + if (state->l == 0) + { + free (state->pc); + free (state->ytmp); + free (state->zbackup); + free (state->z); + free (state); + GSL_ERROR_NULL ("failed to allocate space for l", GSL_ENOMEM); + } + + state->hprev = (double *) malloc (MSADAMS_MAX_ORD * sizeof (double)); + + if (state->hprev == 0) + { + free (state->l); + free (state->pc); + free (state->ytmp2); + free (state->ytmp); + free (state->zbackup); + free (state->z); + free (state); + GSL_ERROR_NULL ("failed to allocate space for hprev", GSL_ENOMEM); + } + + state->hprevbackup = (double *) malloc (MSADAMS_MAX_ORD * sizeof (double)); + + if (state->hprevbackup == 0) + { + free (state->hprev); + free (state->l); + free (state->pc); + free (state->ytmp2); + free (state->ytmp); + free (state->zbackup); + free (state->z); + free (state); + GSL_ERROR_NULL ("failed to allocate space for hprevbackup", GSL_ENOMEM); + } + + state->errlev = (double *) malloc (dim * sizeof (double)); + + if (state->errlev == 0) + { + free (state->hprevbackup); + free (state->hprev); + free (state->l); + free (state->pc); + free (state->ytmp2); + free (state->ytmp); + free (state->zbackup); + free (state->z); + free (state); + GSL_ERROR_NULL ("failed to allocate space for errlev", GSL_ENOMEM); + } + + state->abscor = gsl_vector_alloc (dim); + + if (state->abscor == 0) + { + free (state->errlev); + free (state->hprevbackup); + free (state->hprev); + free (state->l); + free (state->pc); + free (state->ytmp2); + free (state->ytmp); + free (state->zbackup); + free (state->z); + free (state); + GSL_ERROR_NULL ("failed to allocate space for abscor", GSL_ENOMEM); + } + + state->relcor = gsl_vector_alloc (dim); + + if (state->relcor == 0) + { + gsl_vector_free (state->abscor); + free (state->errlev); + free (state->hprevbackup); + free (state->hprev); + free (state->l); + free (state->pc); + free (state->ytmp2); + free (state->ytmp); + free (state->zbackup); + free (state->z); + free (state); + GSL_ERROR_NULL ("failed to allocate space for relcor", GSL_ENOMEM); + } + + state->svec = gsl_vector_alloc (dim); + + if (state->svec == 0) + { + gsl_vector_free (state->relcor); + gsl_vector_free (state->abscor); + free (state->errlev); + free (state->hprevbackup); + free (state->hprev); + free (state->l); + free (state->pc); + free (state->ytmp2); + free (state->ytmp); + free (state->zbackup); + free (state->z); + free (state); + GSL_ERROR_NULL ("failed to allocate space for svec", GSL_ENOMEM); + } + + state->tempvec = gsl_vector_alloc (dim); + + if (state->tempvec == 0) + { + gsl_vector_free (state->svec); + gsl_vector_free (state->relcor); + gsl_vector_free (state->abscor); + free (state->errlev); + free (state->hprevbackup); + free (state->hprev); + free (state->l); + free (state->pc); + free (state->ytmp2); + free (state->ytmp); + free (state->zbackup); + free (state->z); + free (state); + GSL_ERROR_NULL ("failed to allocate space for tempvec", GSL_ENOMEM); + } + + msadams_reset ((void *) state, dim); + + state->driver = NULL; + + return state; +} + +static int +msadams_failurehandler (void *vstate, const size_t dim, const double t) +{ + /* Internal failure handler routine for msadams. Adjusted strategy + for GSL: Decrease order if this is the second time a failure + has occurred at this order and point. + */ + + msadams_state_t *state = (msadams_state_t *) vstate; + + const size_t ord = state->ord; + + if (ord > 1 && (ord - state->ordprev == 0) && + ord == state->failord && t == state->failt) + { + state->ord--; + } + + /* Save information about failure */ + + state->failord = ord; + state->failt = t; + state->ni++; + + /* Force reinitialization if failure took place at lowest + order + */ + + if (ord == 1) + { + msadams_reset (vstate, dim); + } + + return GSL_SUCCESS; +} + +static int +msadams_calccoeffs (const size_t ord, const size_t ordwait, + const double h, const double hprev[], + double pc[], double l[], + double *errcoeff, double *ordm1coeff, + double *ordp1coeff, double *ordp2coeff) +{ + + /* Calculates coefficients (l) of polynomial Lambda, error and + auxiliary order change evaluation coefficients. + */ + + if (ord == 1) + { + l[0] = 1.0; + l[1] = 1.0; + *errcoeff = 0.5; + *ordp1coeff = 1.0; + *ordp2coeff = 12.0; + } + else + { + size_t i, j; + double hsum = h; + double st1 = 0.0; /* sum term coefficients */ + double st2 = 0.0; + + /* Calculate coefficients (pc) of product terms */ + + DBL_ZERO_MEMSET (pc, MSADAMS_MAX_ORD + 1); + + pc[0] = 1.0; + + for (i = 1; i < ord; i++) + { + /* Calculate auxiliary coefficient used in evaluation of + change of order + */ + + if (i == ord - 1 && ordwait == 1) + { + int s = 1; + + *ordm1coeff = 0.0; + + for (j = 0; j < ord - 1; j++) + { + *ordm1coeff += s * pc[j] / (j + 2); + s = -s; + } + + *ordm1coeff = pc[ord - 2] / (ord * (*ordm1coeff)); + } + + for (j = i; j > 0; j--) + { + pc[j] += pc[j - 1] * h / hsum; + } + + hsum += hprev[i - 1]; + } + + /* Calculate sum term 1 for error estimation */ + + { + int s = 1; + + for (i = 0; i < ord; i++) + { + st1 += s * pc[i] / (i + 1.0); + s = -s; + } + } + + /* Calculate sum term 2 for error estimation */ + + { + int s = 1; + + for (i = 0; i < ord; i++) + { + st2 += s * pc[i] / (i + 2.0); + s = -s; + } + } + + /* Calculate the actual polynomial coefficients (l) */ + + DBL_ZERO_MEMSET (l, MSADAMS_MAX_ORD + 1); + + l[0] = 1.0; + + for (i = 1; i < ord + 1; i++) + { + l[i] = pc[i - 1] / (i * st1); + } + +#ifdef DEBUG + { + size_t di; + + printf ("-- calccoeffs l: "); + for (di = 0; di < ord + 1; di++) + { + printf ("%.5e ", l[di]); + } + printf ("\n"); + + printf ("-- calccoeffs pc: "); + for (di = 0; di < ord; di++) + { + printf ("%.5e ", pc[di]); + } + printf ("\n"); + + printf ("-- calccoeffs st1=%.5e, st2=%.5e\n", st1, st2); + } +#endif + + /* Calculate error coefficient */ + + *errcoeff = (h / hsum) * (st2 / st1); + + /* Calculate auxiliary coefficients used in evaluation of change + of order + */ + + if (ordwait < 2) + { + int s = 1; + + *ordp1coeff = hsum / (h * l[ord]); + + *ordp2coeff = 0.0; + + for (i = ord; i > 0; i--) + { + pc[i] += pc[i - 1] * (h / hsum); + } + + for (i = 0; i < ord + 1; i++) + { + *ordp2coeff += s * pc[i] / (i + 2); + s = -s; + } + + *ordp2coeff = (ord + 1) * st1 / (*ordp2coeff); + } + } + +#ifdef DEBUG + printf ("-- calccoeffs ordm1coeff=%.5e ", *ordm1coeff); + printf ("ordp1coeff=%.5e ", *ordp1coeff); + printf ("ordp2coeff=%.5e ", *ordp2coeff); + printf ("errcoeff=%.5e\n", *errcoeff); +#endif + + return GSL_SUCCESS; +} + +static int +msadams_corrector (void *vstate, const gsl_odeiv2_system * sys, + const double t, const double h, const size_t dim, + const double z[], const double errlev[], + const double l[], const double errcoeff, + gsl_vector * abscor, gsl_vector * relcor, + double ytmp[], double ytmp2[]) +{ + /* Calculates the correction step (abscor). Non-linear equation + system is solved by functional iteration. + */ + + size_t mi, i; + const size_t max_iter = 3; /* Maximum number of iterations */ + double convrate = 1.0; /* convergence rate */ + double stepnorm = 0.0; /* norm of correction step */ + double stepnormprev = 0.0; + + /* Evaluate at predicted values */ + + { + int s = GSL_ODEIV_FN_EVAL (sys, t + h, z, ytmp); + + if (s == GSL_EBADFUNC) + { + return s; + } + + if (s != GSL_SUCCESS) + { + msadams_failurehandler (vstate, dim, t); + +#ifdef DEBUG + printf ("-- FAIL at user function evaluation\n"); +#endif + return s; + } + } + + /* Calculate correction step (abscor) */ + + gsl_vector_set_zero (abscor); + + for (mi = 0; mi < max_iter; mi++) + { + const double safety = 0.3; + const double safety2 = 0.1; + + /* Calculate new y values to ytmp2 */ + + for (i = 0; i < dim; i++) + { + ytmp[i] *= h; + ytmp[i] -= z[1 * dim + i]; + ytmp[i] /= l[1]; + ytmp2[i] = z[0 * dim + i] + ytmp[i]; + } + +#ifdef DEBUG + { + size_t di; + printf ("-- dstep: "); + for (di = 0; di < dim; di++) + { + printf ("%.5e ", ytmp[di]); + } + printf ("\n"); + } +#endif + /* Convergence test. Norms used are root-mean-square norms. */ + + for (i = 0; i < dim; i++) + { + gsl_vector_set (relcor, i, + (ytmp[i] - gsl_vector_get (abscor, i)) / errlev[i]); + gsl_vector_set (abscor, i, ytmp[i]); + } + + stepnorm = gsl_blas_dnrm2 (relcor) / sqrt (dim); + + if (mi > 0) + { + convrate = GSL_MAX_DBL (safety * convrate, stepnorm / stepnormprev); + } + else + { + convrate = 1.0; + } + + { + const double convtest = + GSL_MIN_DBL (convrate, 1.0) * stepnorm * errcoeff / safety2; + +#ifdef DEBUG + printf + ("-- func iter loop %d, errcoeff=%.5e, stepnorm =%.5e, convrate = %.5e, convtest = %.5e\n", + (int) mi, errcoeff, stepnorm, convrate, convtest); +#endif + if (convtest <= 1.0) + { + break; + } + } + + /* Check for divergence during iteration */ + { + const double div_const = 2.0; + + if (mi > 1 && stepnorm > div_const * stepnormprev) + { + msadams_failurehandler (vstate, dim, t); + +#ifdef DEBUG + printf ("-- FAIL, diverging functional iteration\n"); +#endif + return GSL_FAILURE; + } + } + + /* Evaluate at new y */ + + { + int s = GSL_ODEIV_FN_EVAL (sys, t + h, ytmp2, ytmp); + + if (s == GSL_EBADFUNC) + { + return s; + } + + if (s != GSL_SUCCESS) + { + msadams_failurehandler (vstate, dim, t); + +#ifdef DEBUG + printf ("-- FAIL at user function evaluation\n"); +#endif + return s; + } + } + + stepnormprev = stepnorm; + } + +#ifdef DEBUG + printf ("-- functional iteration exit at mi=%d\n", (int) mi); +#endif + + /* Handle convergence failure */ + + if (mi == max_iter) + { + msadams_failurehandler (vstate, dim, t); + +#ifdef DEBUG + printf ("-- FAIL, max_iter reached\n"); +#endif + return GSL_FAILURE; + } + + return GSL_SUCCESS; +} + +static int +msadams_eval_order (gsl_vector * abscor, gsl_vector * tempvec, + gsl_vector * svec, const double errcoeff, + const size_t dim, const double errlev[], + const double ordm1coeff, const double ordp1coeff, + const double ordp1coeffprev, const double ordp2coeff, + const double hprev[], + const double h, const double z[], + size_t * ord, size_t * ordwait) +{ + /* Evaluates and executes change in method order (current, current-1 + or current+1). Order which maximizes the step length is selected. + */ + + size_t i; + + /* step size estimates at current order, order-1 and order+1 */ + double ordest = 0.0; + double ordm1est = 0.0; + double ordp1est = 0.0; + + const double safety = 1e-6; + const double bias = 6.0; + const double bias2 = 10.0; + + /* Relative step length estimate for current order */ + + ordest = 1.0 / (pow (bias * gsl_blas_dnrm2 (abscor) / sqrt (dim) + * errcoeff, 1.0 / (*ord + 1)) + safety); + + /* Relative step length estimate for order ord - 1 */ + + if (*ord > 1) + { + for (i = 0; i < dim; i++) + { + gsl_vector_set (tempvec, i, z[*ord * dim + i] / errlev[i]); + } + + ordm1est = 1.0 / (pow (bias * gsl_blas_dnrm2 (tempvec) / sqrt (dim) + / ordm1coeff, 1.0 / (*ord)) + safety); + } + else + { + ordm1est = 0.0; + } + + /* Relative step length estimate for order ord + 1 */ + + if (*ord < MSADAMS_MAX_ORD) + { + const double c = -ordp1coeff / ordp1coeffprev * + pow (h / hprev[1], *ord + 1); + + for (i = 0; i < dim; i++) + { + gsl_vector_set (svec, i, gsl_vector_get (svec, i) * c + + gsl_vector_get (abscor, i)); + } + + ordp1est = 1.0 / (pow (bias2 * gsl_blas_dnrm2 (svec) / sqrt (dim) + / ordp2coeff, 1.0 / (*ord + 2)) + safety); + } + else + { + ordp1est = 0.0; + } + +#ifdef DEBUG + printf + ("-- eval_order ord=%d, ordest=%.5e, ordm1est=%.5e, ordp1est=%.5e\n", + (int) *ord, ordest, ordm1est, ordp1est); +#endif + + /* Choose order that maximises step size and increases step + size markedly compared to current step + */ + + { + const double min_incr = 1.5; + + if (ordm1est > ordest && ordm1est > ordp1est && ordm1est > min_incr) + { + *ord -= 1; +#ifdef DEBUG + printf ("-- eval_order order DECREASED to %d\n", (int) *ord); +#endif + } + + else if (ordp1est > ordest && ordp1est > ordm1est && ordp1est > min_incr) + { + *ord += 1; +#ifdef DEBUG + printf ("-- eval_order order INCREASED to %d\n", (int) *ord); +#endif + } + } + + *ordwait = *ord + 2; + + + return GSL_SUCCESS; +} + + +static int +msadams_apply (void *vstate, size_t dim, double t, double h, + double y[], double yerr[], + const double dydt_in[], double dydt_out[], + const gsl_odeiv2_system * sys) +{ + /* Conducts a step by Adams linear multistep methods. */ + + msadams_state_t *state = (msadams_state_t *) vstate; + + double *const z = state->z; + double *const zbackup = state->zbackup; + double *const ytmp = state->ytmp; + double *const ytmp2 = state->ytmp2; + double *const pc = state->pc; + double *const l = state->l; + double *const hprev = state->hprev; + double *const hprevbackup = state->hprevbackup; + double *const errlev = state->errlev; + gsl_vector *const abscor = state->abscor; + gsl_vector *const relcor = state->relcor; + gsl_vector *const svec = state->svec; + gsl_vector *const tempvec = state->tempvec; + + size_t ord = state->ord; + double ordm1coeff = 0.0; + double ordp1coeff = 0.0; + double ordp2coeff = 0.0; + double errcoeff = 0.0; /* error coefficient */ + + int deltaord; + +#ifdef DEBUG + { + size_t di; + + printf ("msadams_apply: t=%.5e, ord=%d, h=%.5e, y:", t, (int) ord, h); + + for (di = 0; di < dim; di++) + { + printf ("%.5e ", y[di]); + } + printf ("\n"); + } +#endif + + /* Check if t is the same as on previous stepper call (or last + failed call). This means that calculation of previous step failed + or the step was rejected, and therefore previous state will be + restored or the method will be reset. + */ + + if (state->ni > 0 && (t == state->tprev || t == state->failt)) + { + if (state->ni == 1) + { + /* No step has been accepted yet, reset method */ + + msadams_reset (vstate, dim); +#ifdef DEBUG + printf ("-- first step was REJECTED, msadams_reset called\n"); +#endif + } + else + { + /* A succesful step has been saved, restore previous state. */ + + /* If previous step suggests order increase, but the step was + rejected, then do not increase order. + */ + + if (ord > state->ordprev) + { + state->ord = state->ordprev; + ord = state->ord; + } + + /* Restore previous state */ + + DBL_MEMCPY (z, zbackup, (MSADAMS_MAX_ORD + 1) * dim); + DBL_MEMCPY (hprev, hprevbackup, MSADAMS_MAX_ORD); + state->ordprev = state->ordprevbackup; + state->ordwait = state->ordwaitbackup; + +#ifdef DEBUG + printf ("-- previous step was REJECTED, state restored\n"); +#endif + } + + state->failcount++; + + { + const size_t max_failcount = 3; + + /* If step is repeatedly rejected, then reset method */ + + if (state->failcount > max_failcount && state->ni > 1) + { + msadams_reset (vstate, dim); + ord = state->ord; + +#ifdef DEBUG + printf ("-- max_failcount reached, msadams_reset called\n"); +#endif + } + + /* Attempt to decrease order twice is indicative of system stiffness. + Reset method to enable fast recovery. */ + + else if ((int)state->ordprev - (int)ord >= 2) + { + msadams_reset (vstate, dim); + ord = state->ord; + +#ifdef DEBUG + printf ("-- order decreased by two, msadams_reset called\n"); +#endif + } + } + } + else + { + /* The previous step was accepted. Backup current state. */ + + DBL_MEMCPY (zbackup, z, (MSADAMS_MAX_ORD + 1) * dim); + DBL_MEMCPY (hprevbackup, hprev, MSADAMS_MAX_ORD); + state->ordprevbackup = state->ordprev; + state->ordwaitbackup = state->ordwait; + + state->failcount = 0; + +#ifdef DEBUG + if (state->ni > 0) + { + printf ("-- previous step was ACCEPTED, state saved\n"); + } +#endif + } + +#ifdef DEBUG + printf ("-- ord=%d, ni=%ld, ordwait=%d\n", (int) ord, state->ni, + (int) state->ordwait); + printf ("-- ordprev: %d\n", (int) state->ordprev); +#endif + + /* Get desired error levels via gsl_odeiv2_control object through driver + object, which is a requirement for this stepper. + */ + + if (state->driver == NULL) + { + return GSL_EFAULT; + } + else + { + size_t i; + + for (i = 0; i < dim; i++) + { + if (dydt_in != NULL) + { + gsl_odeiv2_control_errlevel (state->driver->c, y[i], + dydt_in[i], h, i, &errlev[i]); + } + else + { + gsl_odeiv2_control_errlevel (state->driver->c, y[i], + 0.0, h, i, &errlev[i]); + } + } + } + +#ifdef DEBUG + { + size_t di; + printf ("-- errlev: "); + for (di = 0; di < dim; di++) + { + printf ("%.5e ", errlev[di]); + } + printf ("\n"); + } +#endif + + /* On first call initialize Nordsieck matrix */ + + if (state->ni == 0) + { + size_t i; + + DBL_ZERO_MEMSET (z, (MSADAMS_MAX_ORD + 1) * dim); + + if (dydt_in != NULL) + { + DBL_MEMCPY (ytmp, dydt_in, dim); + } + else + { + int s = GSL_ODEIV_FN_EVAL (sys, t, y, ytmp); + + if (s != GSL_SUCCESS) + { + return s; + } + } + + DBL_MEMCPY (&z[0 * dim], y, dim); + DBL_MEMCPY (&z[1 * dim], ytmp, dim); + + for (i = 0; i < dim; i++) + { + z[1 * dim + i] *= h; + } + } + + /* Sanity check */ + + deltaord = ord - state->ordprev; + + if (deltaord > 1 || deltaord < -1) + { + printf ("-- order change %d\n", deltaord); + GSL_ERROR_NULL ("msadams_apply too large order change", GSL_ESANITY); + } + + /* Modify Nordsieck matrix if order or step length has been changed */ + + /* If order increased by 1, initialize new Nordsieck vector */ + + if (deltaord == 1) + { + DBL_ZERO_MEMSET (&z[ord * dim], dim); + +#ifdef DEBUG + printf ("-- order increase detected, Nordsieck modified\n"); +#endif + } + + /* If order decreased by 1, adjust Nordsieck matrix */ + + if (deltaord == -1) + { + double hsum = 0.0; + size_t i, j; + + /* Calculate coefficients used in adjustment to l */ + + DBL_ZERO_MEMSET (l, MSADAMS_MAX_ORD + 1); + + l[1] = 1.0; + + for (i = 1; i < ord; i++) + { + hsum += hprev[i - 1]; + + for (j = i + 1; j > 0; j--) + { + l[j] *= hsum / hprev[0]; + l[j] += l[j - 1]; + } + } + + for (i = 1; i < ord; i++) + { + l[i + 1] = (ord + 1) * l[i] / (i + 1); + } + + /* Scale Nordsieck matrix */ + + for (i = 2; i < ord + 1; i++) + for (j = 0; j < dim; j++) + { + z[i * dim + j] += -l[i] * z[(ord + 1) * dim + j]; + } + +#ifdef DEBUG + printf ("-- order decrease detected, Nordsieck modified\n"); +#endif + } + + /* Scale Nordsieck vectors if step size has been changed */ + + if (state->ni > 0 && h != hprev[0]) + { + size_t i, j; + const double hrel = h / hprev[0]; + double coeff = hrel; + + for (i = 1; i < ord + 1; i++) + { + for (j = 0; j < dim; j++) + { + z[i * dim + j] *= coeff; + } + + coeff *= hrel; + } + +#ifdef DEBUG + printf ("-- h != hprev, Nordsieck modified\n"); +#endif + } + + /* Calculate polynomial coefficients (l), error coefficient and + auxiliary coefficients + */ + + msadams_calccoeffs (ord, state->ordwait, h, hprev, pc, l, &errcoeff, + º1coeff, &ordp1coeff, &ordp2coeff); + + /* Carry out the prediction step */ + + { + size_t i, j, k; + + for (i = 1; i < ord + 1; i++) + for (j = ord; j > i - 1; j--) + for (k = 0; k < dim; k++) + { + z[(j - 1) * dim + k] += z[j * dim + k]; + } + +#ifdef DEBUG + { + size_t di; + printf ("-- predicted y: "); + for (di = 0; di < dim; di++) + { + printf ("%.5e ", z[di]); + } + printf ("\n"); + } +#endif + } + + /* Calculate correction step to abscor */ + { + int s; + s = msadams_corrector (vstate, sys, t, h, dim, z, errlev, l, errcoeff, + abscor, relcor, ytmp, ytmp2); + if (s != GSL_SUCCESS) + { + return s; + } + } + + { + /* Add accepted final correction step to Nordsieck matrix */ + + size_t i, j; + + for (i = 0; i < ord + 1; i++) + for (j = 0; j < dim; j++) + { + z[i * dim + j] += l[i] * gsl_vector_get (abscor, j); + } + +#ifdef DEBUG + { + size_t di; + printf ("-- corrected y: "); + for (di = 0; di < dim; di++) + { + printf ("%.5e ", z[di]); + } + printf ("\n"); + } +#endif + + /* Derivatives at output */ + + if (dydt_out != NULL) + { + int s = GSL_ODEIV_FN_EVAL (sys, t + h, z, dydt_out); + + if (s == GSL_EBADFUNC) + { + return s; + } + + if (s != GSL_SUCCESS) + { + msadams_failurehandler (vstate, dim, t); + +#ifdef DEBUG + printf ("-- FAIL at user function evaluation\n"); +#endif + return s; + } + } + + /* Calculate error estimate */ + + for (i = 0; i < dim; i++) + { + yerr[i] = fabs (gsl_vector_get (abscor, i)) * errcoeff; + } + +#ifdef DEBUG + { + size_t di; + printf ("-- yerr: "); + for (di = 0; di < dim; di++) + { + printf ("%.5e ", yerr[di]); + } + printf ("\n"); + } +#endif + + /* Save y values */ + + for (i = 0; i < dim; i++) + { + y[i] = z[0 * dim + i]; + } + } + + /* Scale abscor with errlev for later use in norm calculations */ + { + size_t i; + + for (i = 0; i < dim; i++) + { + gsl_vector_set (abscor, i, gsl_vector_get (abscor, i) / errlev[i]); + } + } + + /* Save items needed for evaluation of order increase on next + call, if needed + */ + + if (state->ordwait == 1 && ord < MSADAMS_MAX_ORD) + { + size_t i; + + state->ordp1coeffprev = ordp1coeff; + state->ordm1coeff = ordm1coeff; + + for (i = 0; i < dim; i++) + { + gsl_vector_set (svec, i, gsl_vector_get (abscor, i)); + } + } + + /* Consider and execute order change for next step */ + + if (state->ordwait == 0) + { + msadams_eval_order (abscor, tempvec, svec, errcoeff, dim, errlev, + state->ordm1coeff, ordp1coeff, + state->ordp1coeffprev, ordp2coeff, + hprev, h, z, &(state->ord), &(state->ordwait)); + } + + /* Save information about current step in state and update counters */ + { + size_t i; + + state->ordprev = ord; + + for (i = MSADAMS_MAX_ORD - 1; i > 0; i--) + { + hprev[i] = hprev[i - 1]; + } + hprev[0] = h; + +#ifdef DEBUG + { + size_t di; + printf ("-- hprev: "); + for (di = 0; di < MSADAMS_MAX_ORD; di++) + { + printf ("%.5e ", hprev[di]); + } + printf ("\n"); + } +#endif + + state->tprev = t; + state->ordwait--; + state->ni++; + } + + return GSL_SUCCESS; +} + +static int +msadams_set_driver (void *vstate, const gsl_odeiv2_driver * d) +{ + msadams_state_t *state = (msadams_state_t *) vstate; + + state->driver = d; + + return GSL_SUCCESS; +} + +static int +msadams_reset (void *vstate, size_t dim) +{ + msadams_state_t *state = (msadams_state_t *) vstate; + + state->ni = 0; + state->ord = 1; + state->ordprev = 1; + state->ordprevbackup = 1; + state->ordwait = 2; + state->ordwaitbackup = 2; + state->failord = 0; + state->failt = GSL_NAN; + state->failcount = 0; + + DBL_ZERO_MEMSET (state->hprev, MSADAMS_MAX_ORD); + DBL_ZERO_MEMSET (state->z, (MSADAMS_MAX_ORD + 1) * dim); + +#ifdef DEBUG + printf ("-- msadams_reset called\n"); +#endif + + return GSL_SUCCESS; +} + +static unsigned int +msadams_order (void *vstate) +{ + msadams_state_t *state = (msadams_state_t *) vstate; + + return state->ord; +} + +static void +msadams_free (void *vstate) +{ + msadams_state_t *state = (msadams_state_t *) vstate; + + gsl_vector_free (state->tempvec); + gsl_vector_free (state->svec); + gsl_vector_free (state->relcor); + gsl_vector_free (state->abscor); + free (state->errlev); + free (state->hprevbackup); + free (state->hprev); + free (state->l); + free (state->pc); + free (state->ytmp2); + free (state->ytmp); + free (state->zbackup); + free (state->z); + free (state); +} + +static const gsl_odeiv2_step_type msadams_type = { + "msadams", /* name */ + 1, /* can use dydt_in? */ + 1, /* gives exact dydt_out? */ + &msadams_alloc, + &msadams_apply, + &msadams_set_driver, + &msadams_reset, + &msadams_order, + &msadams_free +}; + +const gsl_odeiv2_step_type *gsl_odeiv2_step_msadams = &msadams_type; diff --git a/gsl-2.5/ode-initval2/msadams.lo b/gsl-2.5/ode-initval2/msadams.lo new file mode 100644 index 00000000..0d786499 --- /dev/null +++ b/gsl-2.5/ode-initval2/msadams.lo @@ -0,0 +1,12 @@ +# msadams.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/msadams.o' + +# Name of the non-PIC object +non_pic_object='msadams.o' + diff --git a/gsl-2.5/ode-initval2/msbdf.c b/gsl-2.5/ode-initval2/msbdf.c new file mode 100644 index 00000000..e66abc08 --- /dev/null +++ b/gsl-2.5/ode-initval2/msbdf.c @@ -0,0 +1,1808 @@ +/* ode-initval2/msbdf.c + * + * Copyright (C) 2009, 2010 Tuomo Keskitalo + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* A variable-coefficient linear multistep backward differentiation + formula (BDF) method in Nordsieck form. This stepper uses the + explicit BDF formula as predictor and implicit BDF formula as + corrector. A modified Newton iteration method is used to + solve the system of non-linear equations. Method order varies + dynamically between 1 and 5. + + References: + + Byrne, G. D., and Hindmarsh, A. C., A Polyalgorithm for the + Numerical Solution of Ordinary Differential Equations, + ACM Trans. Math. Software, 1 (1975), pp. 71-96. + + Brown, P. N., Byrne, G. D., and Hindmarsh, A. C., VODE: A + Variable-coefficient ODE Solver, SIAM J. Sci. Stat. Comput. 10, + (1989), pp. 1038-1051. + + Hindmarsh, A. C., Brown, P. N., Grant, K. E., Lee, S. L., Serban, + R., Shumaker, D. E., and Woodward, C. S., SUNDIALS: Suite of + Nonlinear and Differential/Algebraic Equation Solvers, ACM + Trans. Math. Software 31 (2005), pp. 363-396. + + Note: The algorithms have been adapted for GSL ode-initval2 + framework. +*/ + +#include +#include +#include +#include +#include +#include +#include +#include + +#include "odeiv_util.h" + +/* Maximum order of BDF methods */ +#define MSBDF_MAX_ORD 5 + +/* Steps until Jacobian evaluation is forced */ +#define MSBDF_JAC_WAIT 50 + +/* Steps until iteration matrix M evaluation is forced */ +#define MSBDF_M_WAIT 20 + +typedef struct +{ + /* Nordsieck history matrix. Includes concatenated + Nordsieck vectors [y_n, h*y_n', (h^2/2!)*y_n'', ..., + (h^ord/ord!)*d^(ord)(y_n)]. Nordsieck vector number i is located + at z[i*dim] (i=0..ord). + */ + double *z; + + double *zbackup; /* backup of Nordsieck matrix */ + double *ytmp; /* work area */ + double *ytmp2; /* work area */ + double *l; /* polynomial coefficients */ + double *hprev; /* previous step sizes */ + double *hprevbackup; /* backup of hprev */ + size_t *ordprev; /* orders of previous calls */ + size_t *ordprevbackup; /* backup of ordprev */ + double *errlev; /* desired error level of y */ + gsl_vector *abscor; /* absolute y values for correction */ + gsl_vector *abscorscaled; /* scaled abscor for order evaluation */ + gsl_vector *relcor; /* relative y values for correction */ + gsl_vector *svec; /* saved abscor & work area */ + gsl_vector *tempvec; /* work area */ + const gsl_odeiv2_driver *driver; /* pointer to gsl_odeiv2_driver object */ + gsl_matrix *dfdy; /* Jacobian */ + double *dfdt; /* storage for time derivative of f */ + gsl_matrix *M; /* Newton iteration matrix */ + gsl_permutation *p; /* permutation for LU decomposition of M */ + gsl_vector *rhs; /* right hand side equations (-G) */ + long int ni; /* stepper call counter */ + size_t ord; /* current order of method */ + double tprev; /* t point of previous call */ + size_t ordwait; /* counter for order change */ + size_t ordwaitbackup; /* backup of ordwait */ + size_t failord; /* order of convergence failure */ + double failt; /* t point of convergence failure */ + double ordp1coeffprev; /* saved order coefficient */ + size_t nJ; /* step counter for Jacobian evaluation */ + size_t nM; /* step counter for update of M */ + double gammaprev; /* gamma of previous call */ + double gammaprevbackup; /* backup of gammaprev */ + size_t failcount; /* counter for rejected steps */ +} +msbdf_state_t; + +/* Introduce msbdf_reset for use in msbdf_alloc and _apply */ + +static int msbdf_reset (void *, size_t); + +static void * +msbdf_alloc (size_t dim) +{ + msbdf_state_t *state = (msbdf_state_t *) malloc (sizeof (msbdf_state_t)); + + if (state == 0) + { + GSL_ERROR_NULL ("failed to allocate space for msbdf_state", GSL_ENOMEM); + } + + state->z = (double *) malloc ((MSBDF_MAX_ORD + 1) * dim * sizeof (double)); + + if (state->z == 0) + { + free (state); + GSL_ERROR_NULL ("failed to allocate space for z", GSL_ENOMEM); + } + + state->zbackup = + (double *) malloc ((MSBDF_MAX_ORD + 1) * dim * sizeof (double)); + + if (state->zbackup == 0) + { + free (state->z); + free (state); + GSL_ERROR_NULL ("failed to allocate space for zbackup", GSL_ENOMEM); + } + + state->ytmp = (double *) malloc (dim * sizeof (double)); + + if (state->ytmp == 0) + { + free (state->zbackup); + free (state->z); + free (state); + GSL_ERROR_NULL ("failed to allocate space for ytmp", GSL_ENOMEM); + } + + state->ytmp2 = (double *) malloc (dim * sizeof (double)); + + if (state->ytmp2 == 0) + { + free (state->ytmp); + free (state->zbackup); + free (state->z); + free (state); + GSL_ERROR_NULL ("failed to allocate space for ytmp2", GSL_ENOMEM); + } + + state->l = (double *) malloc ((MSBDF_MAX_ORD + 1) * sizeof (double)); + + if (state->l == 0) + { + free (state->ytmp); + free (state->zbackup); + free (state->z); + free (state); + GSL_ERROR_NULL ("failed to allocate space for l", GSL_ENOMEM); + } + + state->hprev = (double *) malloc (MSBDF_MAX_ORD * sizeof (double)); + + if (state->hprev == 0) + { + free (state->l); + free (state->ytmp2); + free (state->ytmp); + free (state->zbackup); + free (state->z); + free (state); + GSL_ERROR_NULL ("failed to allocate space for hprev", GSL_ENOMEM); + } + + state->hprevbackup = (double *) malloc (MSBDF_MAX_ORD * sizeof (double)); + + if (state->hprevbackup == 0) + { + free (state->hprev); + free (state->l); + free (state->ytmp2); + free (state->ytmp); + free (state->zbackup); + free (state->z); + free (state); + GSL_ERROR_NULL ("failed to allocate space for hprevbackup", GSL_ENOMEM); + } + + state->ordprev = (size_t *) malloc (MSBDF_MAX_ORD * sizeof (size_t)); + + if (state->ordprev == 0) + { + free (state->hprevbackup); + free (state->hprev); + free (state->l); + free (state->ytmp2); + free (state->ytmp); + free (state->zbackup); + free (state->z); + free (state); + GSL_ERROR_NULL ("failed to allocate space for ordprev", GSL_ENOMEM); + } + + state->ordprevbackup = (size_t *) malloc (MSBDF_MAX_ORD * sizeof (size_t)); + + if (state->ordprevbackup == 0) + { + free (state->ordprev); + free (state->hprevbackup); + free (state->hprev); + free (state->l); + free (state->ytmp2); + free (state->ytmp); + free (state->zbackup); + free (state->z); + free (state); + GSL_ERROR_NULL ("failed to allocate space for ordprevbackup", + GSL_ENOMEM); + } + + state->errlev = (double *) malloc (dim * sizeof (double)); + + if (state->errlev == 0) + { + free (state->ordprevbackup); + free (state->ordprev); + free (state->hprevbackup); + free (state->hprev); + free (state->l); + free (state->ytmp2); + free (state->ytmp); + free (state->zbackup); + free (state->z); + free (state); + GSL_ERROR_NULL ("failed to allocate space for errlev", GSL_ENOMEM); + } + + state->abscor = gsl_vector_alloc (dim); + + if (state->abscor == 0) + { + free (state->errlev); + free (state->ordprevbackup); + free (state->ordprev); + free (state->hprevbackup); + free (state->hprev); + free (state->l); + free (state->ytmp2); + free (state->ytmp); + free (state->zbackup); + free (state->z); + free (state); + GSL_ERROR_NULL ("failed to allocate space for abscor", GSL_ENOMEM); + } + + state->relcor = gsl_vector_alloc (dim); + + if (state->relcor == 0) + { + gsl_vector_free (state->abscor); + free (state->errlev); + free (state->ordprevbackup); + free (state->ordprev); + free (state->hprevbackup); + free (state->hprev); + free (state->l); + free (state->ytmp2); + free (state->ytmp); + free (state->zbackup); + free (state->z); + free (state); + GSL_ERROR_NULL ("failed to allocate space for relcor", GSL_ENOMEM); + } + + state->svec = gsl_vector_alloc (dim); + + if (state->svec == 0) + { + gsl_vector_free (state->relcor); + gsl_vector_free (state->abscor); + free (state->errlev); + free (state->ordprevbackup); + free (state->ordprev); + free (state->hprevbackup); + free (state->hprev); + free (state->l); + free (state->ytmp2); + free (state->ytmp); + free (state->zbackup); + free (state->z); + free (state); + GSL_ERROR_NULL ("failed to allocate space for svec", GSL_ENOMEM); + } + + state->tempvec = gsl_vector_alloc (dim); + + if (state->tempvec == 0) + { + gsl_vector_free (state->svec); + gsl_vector_free (state->relcor); + gsl_vector_free (state->abscor); + free (state->errlev); + free (state->ordprevbackup); + free (state->ordprev); + free (state->hprevbackup); + free (state->hprev); + free (state->l); + free (state->ytmp2); + free (state->ytmp); + free (state->zbackup); + free (state->z); + free (state); + GSL_ERROR_NULL ("failed to allocate space for tempvec", GSL_ENOMEM); + } + + state->dfdy = gsl_matrix_alloc (dim, dim); + + if (state->dfdy == 0) + { + gsl_vector_free (state->tempvec); + gsl_vector_free (state->svec); + gsl_vector_free (state->relcor); + gsl_vector_free (state->abscor); + free (state->errlev); + free (state->ordprevbackup); + free (state->ordprev); + free (state->hprevbackup); + free (state->hprev); + free (state->l); + free (state->ytmp2); + free (state->ytmp); + free (state->zbackup); + free (state->z); + free (state); + GSL_ERROR_NULL ("failed to allocate space for dfdy", GSL_ENOMEM); + } + + state->dfdt = (double *) malloc (dim * sizeof (double)); + + if (state->dfdt == 0) + { + gsl_matrix_free (state->dfdy); + gsl_vector_free (state->tempvec); + gsl_vector_free (state->svec); + gsl_vector_free (state->relcor); + gsl_vector_free (state->abscor); + free (state->errlev); + free (state->ordprevbackup); + free (state->ordprev); + free (state->hprevbackup); + free (state->hprev); + free (state->l); + free (state->ytmp2); + free (state->ytmp); + free (state->zbackup); + free (state->z); + free (state); + GSL_ERROR_NULL ("failed to allocate space for dfdt", GSL_ENOMEM); + } + + state->M = gsl_matrix_alloc (dim, dim); + + if (state->M == 0) + { + free (state->dfdt); + gsl_matrix_free (state->dfdy); + gsl_vector_free (state->tempvec); + gsl_vector_free (state->svec); + gsl_vector_free (state->relcor); + gsl_vector_free (state->abscor); + free (state->errlev); + free (state->ordprevbackup); + free (state->ordprev); + free (state->hprevbackup); + free (state->hprev); + free (state->l); + free (state->ytmp2); + free (state->ytmp); + free (state->zbackup); + free (state->z); + free (state); + GSL_ERROR_NULL ("failed to allocate space for M", GSL_ENOMEM); + } + + state->p = gsl_permutation_alloc (dim); + + if (state->p == 0) + { + gsl_matrix_free (state->M); + free (state->dfdt); + gsl_matrix_free (state->dfdy); + gsl_vector_free (state->tempvec); + gsl_vector_free (state->svec); + gsl_vector_free (state->relcor); + gsl_vector_free (state->abscor); + free (state->errlev); + free (state->ordprevbackup); + free (state->ordprev); + free (state->hprevbackup); + free (state->hprev); + free (state->l); + free (state->ytmp2); + free (state->ytmp); + free (state->zbackup); + free (state->z); + free (state); + GSL_ERROR_NULL ("failed to allocate space for p", GSL_ENOMEM); + } + + state->rhs = gsl_vector_alloc (dim); + + if (state->rhs == 0) + { + gsl_permutation_free (state->p); + gsl_matrix_free (state->M); + free (state->dfdt); + gsl_matrix_free (state->dfdy); + gsl_vector_free (state->tempvec); + gsl_vector_free (state->svec); + gsl_vector_free (state->relcor); + gsl_vector_free (state->abscor); + free (state->errlev); + free (state->ordprevbackup); + free (state->ordprev); + free (state->hprevbackup); + free (state->hprev); + free (state->l); + free (state->ytmp2); + free (state->ytmp); + free (state->zbackup); + free (state->z); + free (state); + GSL_ERROR_NULL ("failed to allocate space for rhs", GSL_ENOMEM); + } + + state->abscorscaled = gsl_vector_alloc (dim); + + if (state->abscorscaled == 0) + { + gsl_vector_free (state->rhs); + gsl_permutation_free (state->p); + gsl_matrix_free (state->M); + free (state->dfdt); + gsl_matrix_free (state->dfdy); + gsl_vector_free (state->tempvec); + gsl_vector_free (state->svec); + gsl_vector_free (state->relcor); + gsl_vector_free (state->abscor); + free (state->errlev); + free (state->ordprevbackup); + free (state->ordprev); + free (state->hprevbackup); + free (state->hprev); + free (state->l); + free (state->ytmp2); + free (state->ytmp); + free (state->zbackup); + free (state->z); + free (state); + GSL_ERROR_NULL ("failed to allocate space for abscorscaled", GSL_ENOMEM); + } + + msbdf_reset ((void *) state, dim); + + state->driver = NULL; + + return state; +} + +static int +msbdf_failurehandler (void *vstate, const size_t dim, const double t) +{ + /* Internal failure handler routine for msbdf. Adjusted strategy + for GSL: Decrease order if this is the second time a failure + has occurred at this order and point. + */ + + msbdf_state_t *state = (msbdf_state_t *) vstate; + + const size_t ord = state->ord; + + if (ord > 1 && (ord - state->ordprev[0] == 0) && + ord == state->failord && t == state->failt) + { + state->ord--; + } + + /* Save information about failure */ + + state->failord = ord; + state->failt = t; + state->ni++; + + /* Force reinitialization if failure took place at lowest + order + */ + + if (ord == 1) + { + msbdf_reset (vstate, dim); + } + + return GSL_SUCCESS; +} + +static int +msbdf_calccoeffs (const size_t ord, const size_t ordwait, + const double h, const double hprev[], + double l[], + double *errcoeff, double *ordm1coeff, + double *ordp1coeff, double *ordp2coeff, double *gamma) +{ + /* Calculates coefficients (l) of polynomial Lambda, error and + auxiliary order change evaluation coefficients. + */ + + if (ord == 1) + { + l[0] = 1.0; + l[1] = 1.0; + *errcoeff = 0.5; + *ordp1coeff = 2.0; + + { + const double hsum = h + hprev[0]; + + const double a5 = -1.5; + const double a6 = -1.0 - h / hsum; + const double c2 = 2.0 / (1.0 - a6 + a5); + + *ordp2coeff = fabs (c2 * (h / hsum) * 3.0 * a5); + } + } + else + { + size_t i, j; + double hsum = h; + double coeff1 = -1.0; + double x; + + /* Calculate the actual polynomial coefficients (l) */ + + DBL_ZERO_MEMSET (l, MSBDF_MAX_ORD + 1); + + l[0] = 1.0; + l[1] = 1.0; + + for (i = 2; i < ord; i++) + { + hsum += hprev[i - 2]; + coeff1 += -1.0 / i; + + for (j = i; j > 0; j--) + { + l[j] += h / hsum * l[j - 1]; + } + } + + coeff1 += -1.0 / ord; + + x = -l[1] - coeff1; + + for (i = ord; i > 0; i--) + { + l[i] += l[i - 1] * x; + } + +#ifdef DEBUG + { + size_t di; + + printf ("-- calccoeffs l: "); + for (di = 0; di < ord + 1; di++) + { + printf ("%.5e ", l[di]); + } + printf ("\n"); + } +#endif + + hsum += hprev[ord - 2]; + + { + const double coeff2 = -l[1] - h / hsum; + const double a1 = 1.0 - coeff2 + coeff1; + const double a2 = 1.0 + ord * a1; + + /* Calculate error coefficient */ + + *errcoeff = fabs (a1 / (coeff1 * a2)); + + /* Calculate auxiliary coefficients used in evaluation of change + of order + */ + + if (ordwait < 2) + { + const double a3 = coeff1 + 1.0 / ord; + const double a4 = coeff2 + h / hsum; + const double c1 = a3 / (1.0 - a4 + a3); + + *ordm1coeff = fabs (c1 / (x / l[ord])); + + *ordp1coeff = fabs (a2 / (l[ord] * (h / hsum) / x)); + + hsum += hprev[ord - 1]; + + { + const double a5 = coeff1 - 1.0 / (ord + 1.0); + const double a6 = coeff2 - h / hsum; + const double c2 = a2 / (1.0 - a6 + a5); + + *ordp2coeff = fabs (c2 * (h / hsum) * (ord + 2) * a5); + } + } + } + } + + *gamma = h / l[1]; + +#ifdef DEBUG + printf ("-- calccoeffs ordm1coeff=%.5e ", *ordm1coeff); + printf ("ordp1coeff=%.5e ", *ordp1coeff); + printf ("ordp2coeff=%.5e ", *ordp2coeff); + printf ("errcoeff=%.5e\n", *errcoeff); +#endif + + return GSL_SUCCESS; +} + +static int +msbdf_update (void *vstate, const size_t dim, gsl_matrix * dfdy, double *dfdt, + const double t, const double *y, const gsl_odeiv2_system * sys, + gsl_matrix * M, gsl_permutation * p, + const size_t iter, size_t * nJ, size_t * nM, + const double tprev, const double failt, + const double gamma, const double gammaprev, const double hratio) +{ + /* Evaluates Jacobian dfdy and updates iteration matrix M + if criteria for update is met. + */ + + /* Jacobian is evaluated + - at first step + - if MSBDF_JAC_WAIT steps have been made without re-evaluation + - in case of a convergence failure if + --- change in gamma is small, or + --- convergence failure resulted in step size decrease + */ + + const double c = 0.2; + const double gammarel = fabs (gamma / gammaprev - 1.0); + + if (*nJ == 0 || *nJ > MSBDF_JAC_WAIT || + (t == failt && (gammarel < c || hratio < 1.0))) + { +#ifdef DEBUG + printf ("-- evaluate jacobian\n"); +#endif + int s = GSL_ODEIV_JA_EVAL (sys, t, y, dfdy->data, dfdt); + + if (s == GSL_EBADFUNC) + { + return s; + } + + if (s != GSL_SUCCESS) + { + msbdf_failurehandler (vstate, dim, t); +#ifdef DEBUG + printf ("-- FAIL at jacobian function evaluation\n"); +#endif + return s; + } + + /* Reset counter */ + + *nJ = 0; + } + + /* Iteration matrix M (and it's LU decomposition) is generated + - at first step + - if MSBDF_M_WAIT steps have been made without an update + - if change in gamma is significant (e.g. change in step size) + - if previous step was rejected + */ + + if (*nM == 0 || *nM > MSBDF_M_WAIT || gammarel >= c || + t == tprev || t == failt) + { +#ifdef DEBUG + printf ("-- update M, gamma=%.5e\n", gamma); +#endif + size_t i; + gsl_matrix_memcpy (M, dfdy); + gsl_matrix_scale (M, -gamma); + + for (i = 0; i < dim; i++) + { + gsl_matrix_set (M, i, i, gsl_matrix_get (M, i, i) + 1.0); + } + + { + int signum; + int s = gsl_linalg_LU_decomp (M, p, &signum); + + if (s != GSL_SUCCESS) + { + return GSL_FAILURE; + } + } + + /* Reset counter */ + + *nM = 0; + } + + return GSL_SUCCESS; +} + +static int +msbdf_corrector (void *vstate, const gsl_odeiv2_system * sys, + const double t, const double h, const size_t dim, + const double z[], const double errlev[], + const double l[], const double errcoeff, + gsl_vector * abscor, gsl_vector * relcor, + double ytmp[], double ytmp2[], + gsl_matrix * dfdy, double dfdt[], gsl_matrix * M, + gsl_permutation * p, gsl_vector * rhs, + size_t * nJ, size_t * nM, + const double tprev, const double failt, + const double gamma, const double gammaprev, + const double hprev0) +{ + /* Calculates the correction step (abscor). Equation + system M = I - gamma * dfdy = -G is solved by Newton iteration. + */ + + size_t mi, i; + const size_t max_iter = 3; /* Maximum number of iterations */ + double convrate = 1.0; /* convergence rate */ + double stepnorm = 0.0; /* norm of correction step */ + double stepnormprev = 0.0; /* previous norm value */ + + /* Evaluate at predicted values */ + + { + int s = GSL_ODEIV_FN_EVAL (sys, t + h, z, ytmp); + + if (s == GSL_EBADFUNC) + { + return s; + } + + if (s != GSL_SUCCESS) + { + msbdf_failurehandler (vstate, dim, t); + +#ifdef DEBUG + printf ("-- FAIL at user function evaluation\n"); +#endif + return s; + } + } + + /* Calculate correction step (abscor) */ + + gsl_vector_set_zero (abscor); + + for (mi = 0; mi < max_iter; mi++) + { + const double safety = 0.3; + const double safety2 = 0.1; + + /* Generate or update Jacobian and/or iteration matrix M if needed */ + + if (mi == 0) + { + int s = msbdf_update (vstate, dim, dfdy, dfdt, t + h, z, + sys, M, p, mi, + nJ, nM, tprev, failt, + gamma, gammaprev, + h / hprev0); + + if (s != GSL_SUCCESS) + { + return s; + } + } + + /* Evaluate the right hand side (-G) */ + + for (i = 0; i < dim; i++) + { + const double r = -1.0 * gsl_vector_get (abscor, i) - + z[1 * dim + i] / l[1] + gamma * ytmp[i]; + + gsl_vector_set (rhs, i, r); + } + + /* Solve system of equations */ + + { + int s = gsl_linalg_LU_solve (M, p, rhs, relcor); + + if (s != GSL_SUCCESS) + { + msbdf_failurehandler (vstate, dim, t); + +#ifdef DEBUG + printf ("-- FAIL at LU_solve\n"); +#endif + return GSL_FAILURE; + } + } + +#ifdef DEBUG + { + size_t di; + printf ("-- dstep: "); + for (di = 0; di < dim; di++) + { + printf ("%.5e ", gsl_vector_get (relcor, di)); + } + printf ("\n"); + } +#endif + + /* Add iteration results */ + + for (i = 0; i < dim; i++) + { + const double r = + gsl_vector_get (abscor, i) + gsl_vector_get (relcor, i); + + gsl_vector_set (abscor, i, r); + + ytmp2[i] = z[i] + r; + + gsl_vector_set (relcor, i, gsl_vector_get (relcor, i) / errlev[i]); + } + +#ifdef DEBUG + { + size_t di; + printf ("-- abscor: "); + for (di = 0; di < dim; di++) + { + printf ("%.5e ", gsl_vector_get (abscor, di)); + } + printf ("\n"); + } +#endif + + /* Convergence test. Norms used are root-mean-square norms. */ + + stepnorm = gsl_blas_dnrm2 (relcor) / sqrt (dim); + + if (mi > 0) + { + convrate = GSL_MAX_DBL (safety * convrate, stepnorm / stepnormprev); + } + else + { + convrate = 1.0; + } + + { + const double convtest = + GSL_MIN_DBL (convrate, 1.0) * stepnorm * errcoeff / safety2; + +#ifdef DEBUG + printf + ("-- newt iter loop %d, errcoeff=%.5e, stepnorm =%.5e, convrate = %.5e, convtest = %.5e\n", + (int) mi, errcoeff, stepnorm, convrate, convtest); +#endif + if (convtest <= 1.0) + { + break; + } + } + + /* Check for divergence during iteration */ + + { + const double div_const = 2.0; + + if (mi > 1 && stepnorm > div_const * stepnormprev) + { + msbdf_failurehandler (vstate, dim, t); + +#ifdef DEBUG + printf ("-- FAIL, diverging Newton iteration\n"); +#endif + return GSL_FAILURE; + } + } + + /* Evaluate at new y */ + + { + int s = GSL_ODEIV_FN_EVAL (sys, t + h, ytmp2, ytmp); + + if (s == GSL_EBADFUNC) + { + return s; + } + + if (s != GSL_SUCCESS) + { + msbdf_failurehandler (vstate, dim, t); + +#ifdef DEBUG + printf ("-- FAIL at user function evaluation\n"); +#endif + return s; + } + } + + stepnormprev = stepnorm; + } + +#ifdef DEBUG + printf ("-- Newton iteration exit at mi=%d\n", (int) mi); +#endif + + /* Handle convergence failure */ + + if (mi == max_iter) + { + msbdf_failurehandler (vstate, dim, t); + +#ifdef DEBUG + printf ("-- FAIL, max_iter reached\n"); +#endif + return GSL_FAILURE; + } + + return GSL_SUCCESS; +} + +static int +msbdf_eval_order (gsl_vector * abscorscaled, gsl_vector * tempvec, + gsl_vector * svec, const double errcoeff, + const size_t dim, const double errlev[], + const double ordm1coeff, const double ordp1coeff, + const double ordp1coeffprev, const double ordp2coeff, + const double hprev[], + const double h, const double z[], + size_t * ord) +{ + /* Evaluates and executes change in method order (current, current-1 + or current+1). Order which maximizes the step length is selected. + */ + + size_t i; + + /* step size estimates at current order, order-1 and order+1 */ + double ordest = 0.0; + double ordm1est = 0.0; + double ordp1est = 0.0; + + const double safety = 1e-6; + const double bias = 6.0; + const double bias2 = 10.0; + const double min_incr = 1.5; + + /* Relative step length estimate for current order */ + + ordest = 1.0 / (pow (bias * gsl_blas_dnrm2 (abscorscaled) / sqrt (dim) + * errcoeff, 1.0 / (*ord + 1)) + safety); + + /* Relative step length estimate for order ord - 1 */ + + if (*ord > 1) + { + for (i = 0; i < dim; i++) + { + gsl_vector_set (tempvec, i, z[*ord * dim + i] / errlev[i]); + } + + ordm1est = 1.0 / (pow (bias * gsl_blas_dnrm2 (tempvec) / sqrt (dim) + / ordm1coeff, 1.0 / (*ord)) + safety); + } + else + { + ordm1est = 0.0; + } + + /* Relative step length estimate for order ord + 1 */ + + if (*ord < MSBDF_MAX_ORD) + { + const double c = -ordp1coeff / ordp1coeffprev * + pow (h / hprev[1], *ord + 1); + + for (i = 0; i < dim; i++) + { + gsl_vector_set (svec, i, gsl_vector_get (svec, i) * c + + gsl_vector_get (abscorscaled, i)); + } + + ordp1est = 1.0 / (pow (bias2 * gsl_blas_dnrm2 (svec) / sqrt (dim) + / ordp2coeff, 1.0 / (*ord + 2)) + safety); + } + else + { + ordp1est = 0.0; + } + +#ifdef DEBUG + printf + ("-- eval_order ord=%d, ordest=%.5e, ordm1est=%.5e, ordp1est=%.5e\n", + (int) *ord, ordest, ordm1est, ordp1est); +#endif + + /* Choose order that maximises step size and increases step + size markedly compared to current step + */ + + if (ordm1est > ordest && ordm1est > ordp1est && ordm1est > min_incr) + { + *ord -= 1; +#ifdef DEBUG + printf ("-- eval_order order DECREASED to %d\n", (int) *ord); +#endif + } + + else if (ordp1est > ordest && ordp1est > ordm1est && ordp1est > min_incr) + { + *ord += 1; +#ifdef DEBUG + printf ("-- eval_order order INCREASED to %d\n", (int) *ord); +#endif + } + + return GSL_SUCCESS; +} + +static int +msbdf_check_no_order_decrease (size_t const ordprev[]) +{ + /* Checks if order has not been decreased according to order history + array. Used in stability enhancement. + */ + + size_t i; + + for (i = 0; i < MSBDF_MAX_ORD - 1; i++) + { + if (ordprev[i + 1] > ordprev[i]) + { + return 0; + } + } + + return 1; +} + +static int +msbdf_check_step_size_decrease (double const hprev[]) +{ + /* Checks if step size has decreased markedly according to + step size history array. Used in stability enhancement. + */ + + size_t i; + double max = fabs (hprev[0]); + const double min = fabs (hprev[0]); + const double decrease_limit = 0.5; + + for (i = 1; i < MSBDF_MAX_ORD; i++) + { + const double h = fabs (hprev[i]); + + if (h > min && h > max) + { + max = h; + } + } + + if (min / max < decrease_limit) + { + return 1; + } + + return 0; +} + +static int +msbdf_apply (void *vstate, size_t dim, double t, double h, + double y[], double yerr[], + const double dydt_in[], double dydt_out[], + const gsl_odeiv2_system * sys) +{ + /* Carries out a step by BDF linear multistep methods. */ + + msbdf_state_t *state = (msbdf_state_t *) vstate; + + double *const z = state->z; + double *const zbackup = state->zbackup; + double *const ytmp = state->ytmp; + double *const ytmp2 = state->ytmp2; + double *const l = state->l; + double *const hprev = state->hprev; + double *const hprevbackup = state->hprevbackup; + size_t *const ordprev = state->ordprev; + size_t *const ordprevbackup = state->ordprevbackup; + double *const errlev = state->errlev; + gsl_vector *const abscor = state->abscor; + gsl_vector *const abscorscaled = state->abscorscaled; + gsl_vector *const relcor = state->relcor; + gsl_vector *const svec = state->svec; + gsl_vector *const tempvec = state->tempvec; + + size_t ord = state->ord; /* order for this step */ + double ordm1coeff = 0.0; + double ordp1coeff = 0.0; + double ordp2coeff = 0.0; + double errcoeff = 0.0; /* error coefficient */ + double gamma = 0.0; /* gamma coefficient */ + + const size_t max_failcount = 3; + size_t i; + +#ifdef DEBUG + { + size_t di; + + printf ("msbdf_apply: t=%.5e, ord=%d, h=%.5e, y:", t, (int) ord, h); + + for (di = 0; di < dim; di++) + { + printf ("%.5e ", y[di]); + } + printf ("\n"); + } +#endif + + /* Check if t is the same as on previous stepper call (or last + failed call). This means that calculation of previous step failed + or the step was rejected, and therefore previous state will be + restored or the method will be reset. + */ + + if (state->ni > 0 && (t == state->tprev || t == state->failt)) + { + if (state->ni == 1) + { + /* No step has been accepted yet, reset method */ + + msbdf_reset (vstate, dim); +#ifdef DEBUG + printf ("-- first step was REJECTED, msbdf_reset called\n"); +#endif + } + else + { + /* A succesful step has been saved, restore previous state. */ + + /* If previous step suggests order increase, but the step was + rejected, then do not increase order. + */ + + if (ord > ordprev[0]) + { + state->ord = ordprev[0]; + ord = state->ord; + } + + /* Restore previous state */ + + DBL_MEMCPY (z, zbackup, (MSBDF_MAX_ORD + 1) * dim); + DBL_MEMCPY (hprev, hprevbackup, MSBDF_MAX_ORD); + + for (i = 0; i < MSBDF_MAX_ORD; i++) + { + ordprev[i] = ordprevbackup[i]; + } + + state->ordwait = state->ordwaitbackup; + state->gammaprev = state->gammaprevbackup; + +#ifdef DEBUG + printf ("-- previous step was REJECTED, state restored\n"); +#endif + } + + /* If step is repeatedly rejected, then reset method */ + + state->failcount++; + + if (state->failcount > max_failcount && state->ni > 1) + { + msbdf_reset (vstate, dim); + ord = state->ord; + +#ifdef DEBUG + printf ("-- max_failcount reached, msbdf_reset called\n"); +#endif + } + } + else + { + /* The previous step was accepted. Backup current state. */ + + DBL_MEMCPY (zbackup, z, (MSBDF_MAX_ORD + 1) * dim); + DBL_MEMCPY (hprevbackup, hprev, MSBDF_MAX_ORD); + + for (i = 0; i < MSBDF_MAX_ORD; i++) + { + ordprevbackup[i] = ordprev[i]; + } + + state->ordwaitbackup = state->ordwait; + state->gammaprevbackup = state->gammaprev; + + state->failcount = 0; + +#ifdef DEBUG + if (state->ni > 0) + { + printf ("-- previous step was ACCEPTED, state saved\n"); + } +#endif + } + +#ifdef DEBUG + printf ("-- ord=%d, ni=%ld, ordwait=%d\n", (int) ord, state->ni, + (int) state->ordwait); + + size_t di; + printf ("-- ordprev: "); + + for (di = 0; di < MSBDF_MAX_ORD; di++) + { + printf ("%d ", (int) ordprev[di]); + } + + printf ("\n"); +#endif + + /* Get desired error levels via gsl_odeiv2_control object through driver + object, which is a requirement for this stepper. + */ + + if (state->driver == NULL) + { + return GSL_EFAULT; + } + else + { + size_t i; + + for (i = 0; i < dim; i++) + { + if (dydt_in != NULL) + { + gsl_odeiv2_control_errlevel (state->driver->c, y[i], + dydt_in[i], h, i, &errlev[i]); + } + else + { + gsl_odeiv2_control_errlevel (state->driver->c, y[i], + 0.0, h, i, &errlev[i]); + } + } + } + +#ifdef DEBUG + { + size_t di; + printf ("-- errlev: "); + for (di = 0; di < dim; di++) + { + printf ("%.5e ", errlev[di]); + } + printf ("\n"); + } +#endif + + /* On first call initialize Nordsieck matrix */ + + if (state->ni == 0) + { + size_t i; + + DBL_ZERO_MEMSET (z, (MSBDF_MAX_ORD + 1) * dim); + + if (dydt_in != NULL) + { + DBL_MEMCPY (ytmp, dydt_in, dim); + } + else + { + int s = GSL_ODEIV_FN_EVAL (sys, t, y, ytmp); + + if (s != GSL_SUCCESS) + { + return s; + } + } + + DBL_MEMCPY (&z[0 * dim], y, dim); + DBL_MEMCPY (&z[1 * dim], ytmp, dim); + + for (i = 0; i < dim; i++) + { + z[1 * dim + i] *= h; + } + } + + /* Stability enhancement heuristic for msbdf: If order > 1 and order + has not been changed, check for decrease in step size, that is + not accompanied by a decrease in method order. This condition may + be indication of BDF method stability problems, a change in ODE + system, or convergence problems in Newton iteration. In all + cases, the strategy is to decrease method order. + */ + +#ifdef DEBUG + printf ("-- check_no_order_decrease %d, check_step_size_decrease %d\n", + msbdf_check_no_order_decrease (ordprev), + msbdf_check_step_size_decrease (hprev)); +#endif + + if (ord > 1 && + ord - ordprev[0] == 0 && + msbdf_check_no_order_decrease (ordprev) && + msbdf_check_step_size_decrease (hprev)) + { + state->ord--; + state->ordwait = ord + 2; + ord = state->ord; + +#ifdef DEBUG + printf ("-- stability enhancement decreased order to %d\n", (int) ord); +#endif + } + + /* Sanity check */ + + { + const int deltaord = ord - ordprev[0]; + + if (deltaord > 1 || deltaord < -1) + { + printf ("-- order change %d\n", deltaord); + GSL_ERROR_NULL ("msbdf_apply too large order change", GSL_ESANITY); + } + + /* Modify Nordsieck matrix if order or step length has been changed */ + + /* If order increased by 1, adjust Nordsieck matrix */ + + if (deltaord == 1) + { + if (ord > 2) + { + size_t i, j; + double hsum = h; + double coeff1 = -1.0; + double coeff2 = 1.0; + double hrelprev = 1.0; + double hrelprod = 1.0; + double hrel = 0.0; + + /* Calculate coefficients used in adjustment to l */ + + DBL_ZERO_MEMSET (l, MSBDF_MAX_ORD + 1); + + l[2] = 1.0; + + for (i = 1; i < ord - 1; i++) + { + hsum += hprev[i]; + hrel = hsum / h; + hrelprod *= hrel; + coeff1 -= 1.0 / (i + 1); + coeff2 += 1.0 / hrel; + + for (j = i + 2; j > 1; j--) + { + l[j] *= hrelprev; + l[j] += l[j - 1]; + } + + hrelprev = hrel; + } + + /* Scale Nordsieck matrix */ + + { + const double c = (-coeff1 - coeff2) / hrelprod; + + for (i = 0; i < dim; i++) + { + z[ord * dim + i] = c * gsl_vector_get (abscor, i); + } + } + for (i = 2; i < ord; i++) + for (j = 0; j < dim; j++) + { + z[i * dim + j] += l[i] * z[ord * dim + j]; + } + } + else + { + /* zero new vector for order incease from 1 to 2 */ + + DBL_ZERO_MEMSET (&z[ord * dim], dim); + } + +#ifdef DEBUG + printf ("-- order increase detected, Nordsieck modified\n"); +#endif + } + + /* If order decreased by 1, adjust Nordsieck matrix */ + + if (deltaord == -1) + { + size_t i, j; + double hsum = 0.0; + + /* Calculate coefficients used in adjustment to l */ + + DBL_ZERO_MEMSET (l, MSBDF_MAX_ORD + 1); + + l[2] = 1.0; + + for (i = 1; i < ord; i++) + { + hsum += hprev[i - 1]; + + for (j = i + 2; j > 1; j--) + { + l[j] *= hsum / h; + l[j] += l[j - 1]; + } + } + + /* Scale Nordsieck matrix */ + + for (i = 2; i < ord + 1; i++) + for (j = 0; j < dim; j++) + { + z[i * dim + j] += -l[i] * z[(ord + 1) * dim + j]; + } + +#ifdef DEBUG + printf ("-- order decrease detected, Nordsieck modified\n"); +#endif + } + + /* Scale Nordsieck vectors if step size has been changed */ + + if (state->ni > 0 && h != hprev[0]) + { + size_t i, j; + const double hrel = h / hprev[0]; + double coeff = hrel; + + for (i = 1; i < ord + 1; i++) + { + for (j = 0; j < dim; j++) + { + z[i * dim + j] *= coeff; + } + + coeff *= hrel; + } + +#ifdef DEBUG + printf ("-- h != hprev, Nordsieck modified\n"); +#endif + } + + /* Calculate polynomial coefficients (l), error coefficient and + auxiliary coefficients + */ + + msbdf_calccoeffs (ord, state->ordwait, h, hprev, l, &errcoeff, + º1coeff, &ordp1coeff, &ordp2coeff, &gamma); + + /* Carry out the prediction step */ + + { + size_t i, j, k; + + for (i = 1; i < ord + 1; i++) + for (j = ord; j > i - 1; j--) + for (k = 0; k < dim; k++) + { + z[(j - 1) * dim + k] += z[j * dim + k]; + } + +#ifdef DEBUG + { + size_t di; + printf ("-- predicted y: "); + for (di = 0; di < dim; di++) + { + printf ("%.5e ", z[di]); + } + printf ("\n"); + } +#endif + } + + /* Calculate correction step to abscor */ + { + int s; + s = msbdf_corrector (vstate, sys, t, h, dim, z, errlev, l, errcoeff, + abscor, relcor, ytmp, ytmp2, + state->dfdy, state->dfdt, state->M, + state->p, state->rhs, + &(state->nJ), &(state->nM), + state->tprev, state->failt, gamma, + state->gammaprev, hprev[0]); + + if (s != GSL_SUCCESS) + { + return s; + } + } + + { + /* Add accepted final correction step to Nordsieck matrix */ + + size_t i, j; + + for (i = 0; i < ord + 1; i++) + for (j = 0; j < dim; j++) + { + z[i * dim + j] += l[i] * gsl_vector_get (abscor, j); + } + +#ifdef DEBUG + { + size_t di; + printf ("---- l: "); + for (di = 0; di < ord + 1; di++) + { + printf ("%.5e ", l[di]); + } + printf ("\n"); + + printf ("-- corrected y: "); + for (di = 0; di < dim; di++) + { + printf ("%.5e ", z[di]); + } + printf ("\n"); + } +#endif + + /* Derivatives at output */ + + if (dydt_out != NULL) + { + int s = GSL_ODEIV_FN_EVAL (sys, t + h, z, dydt_out); + + if (s == GSL_EBADFUNC) + { + return s; + } + + if (s != GSL_SUCCESS) + { + msbdf_failurehandler (vstate, dim, t); + +#ifdef DEBUG + printf ("-- FAIL at user function evaluation\n"); +#endif + return s; + } + } + + /* Calculate error estimate */ + + for (i = 0; i < dim; i++) + { + yerr[i] = fabs (gsl_vector_get (abscor, i)) * errcoeff; + } + +#ifdef DEBUG + { + size_t di; + printf ("-- yerr: "); + for (di = 0; di < dim; di++) + { + printf ("%.5e ", yerr[di]); + } + printf ("\n"); + } +#endif + + /* Save y values */ + + for (i = 0; i < dim; i++) + { + y[i] = z[0 * dim + i]; + } + } + + /* Scale abscor with errlev for later use in norm calculations + in order evaluation in msbdf_eval_order + */ + { + size_t i; + + for (i = 0; i < dim; i++) + { + gsl_vector_set (abscorscaled, i, + gsl_vector_get (abscor, i) / errlev[i]); + } + } + + /* Save items needed for evaluation of order increase on next + call, if needed + */ + + if (state->ordwait == 1 && ord < MSBDF_MAX_ORD) + { + size_t i; + + state->ordp1coeffprev = ordp1coeff; + + for (i = 0; i < dim; i++) + { + gsl_vector_set (svec, i, gsl_vector_get (abscorscaled, i)); + } + } + + /* Consider and execute order change for next step if order is unchanged. */ + + if (state->ordwait == 0) + { + if (ord - ordprev[0] == 0) + { + msbdf_eval_order (abscorscaled, tempvec, svec, errcoeff, dim, errlev, + ordm1coeff, ordp1coeff, + state->ordp1coeffprev, ordp2coeff, + hprev, h, z, &(state->ord)); + + state->ordwait = state->ord + 2; + } + else + { + /* Postpone order evaluation if order has been modified elsewhere */ + + state->ordwait = 2; + } + } + + /* Save information about current step in state and update counters */ + { + size_t i; + + for (i = MSBDF_MAX_ORD - 1; i > 0; i--) + { + hprev[i] = hprev[i - 1]; + ordprev[i] = ordprev[i - 1]; + } + } + + hprev[0] = h; + ordprev[0] = ord; + +#ifdef DEBUG + { + size_t di; + printf ("-- hprev: "); + for (di = 0; di < MSBDF_MAX_ORD; di++) + { + printf ("%.5e ", hprev[di]); + } + printf ("\n"); + } +#endif + + state->tprev = t; + state->ordwait--; + state->ni++; + state->gammaprev = gamma; + + state->nJ++; + state->nM++; + +#ifdef DEBUG + printf ("-- nJ=%d, nM=%d\n", (int) state->nJ, (int) state->nM); +#endif + } + + return GSL_SUCCESS; +} + +static int +msbdf_set_driver (void *vstate, const gsl_odeiv2_driver * d) +{ + msbdf_state_t *state = (msbdf_state_t *) vstate; + + state->driver = d; + + return GSL_SUCCESS; +} + +static int +msbdf_reset (void *vstate, size_t dim) +{ + msbdf_state_t *state = (msbdf_state_t *) vstate; + size_t i; + + state->ni = 0; + state->ord = 1; + state->ordwait = 2; + state->ordwaitbackup = 2; + state->failord = 0; + state->failt = GSL_NAN; + state->tprev = GSL_NAN; + state->gammaprev = 1.0; + state->gammaprevbackup = 1.0; + state->nJ = 0; + state->nM = 0; + state->failcount = 0; + state->ordp1coeffprev = 0.0; + + DBL_ZERO_MEMSET (state->hprev, MSBDF_MAX_ORD); + DBL_ZERO_MEMSET (state->hprevbackup, MSBDF_MAX_ORD); + DBL_ZERO_MEMSET (state->z, (MSBDF_MAX_ORD + 1) * dim); + DBL_ZERO_MEMSET (state->zbackup, (MSBDF_MAX_ORD + 1) * dim); + + for (i = 0; i < MSBDF_MAX_ORD; i++) + { + state->ordprev[i] = 1; + state->ordprevbackup[i] = 1; + } + +#ifdef DEBUG + printf ("-- msbdf_reset called\n"); +#endif + + return GSL_SUCCESS; +} + +static unsigned int +msbdf_order (void *vstate) +{ + msbdf_state_t *state = (msbdf_state_t *) vstate; + + return state->ord; +} + +static void +msbdf_free (void *vstate) +{ + msbdf_state_t *state = (msbdf_state_t *) vstate; + + gsl_vector_free (state->rhs); + gsl_permutation_free (state->p); + gsl_matrix_free (state->M); + free (state->dfdt); + gsl_matrix_free (state->dfdy); + gsl_vector_free (state->tempvec); + gsl_vector_free (state->svec); + gsl_vector_free (state->relcor); + gsl_vector_free (state->abscor); + gsl_vector_free (state->abscorscaled); + free (state->errlev); + free (state->ordprevbackup); + free (state->ordprev); + free (state->hprevbackup); + free (state->hprev); + free (state->l); + free (state->ytmp2); + free (state->ytmp); + free (state->zbackup); + free (state->z); + free (state); +} + +static const gsl_odeiv2_step_type msbdf_type = { + "msbdf", /* name */ + 1, /* can use dydt_in? */ + 1, /* gives exact dydt_out? */ + &msbdf_alloc, + &msbdf_apply, + &msbdf_set_driver, + &msbdf_reset, + &msbdf_order, + &msbdf_free +}; + +const gsl_odeiv2_step_type *gsl_odeiv2_step_msbdf = &msbdf_type; diff --git a/gsl-2.5/ode-initval2/msbdf.lo b/gsl-2.5/ode-initval2/msbdf.lo new file mode 100644 index 00000000..7d5a0197 --- /dev/null +++ b/gsl-2.5/ode-initval2/msbdf.lo @@ -0,0 +1,12 @@ +# msbdf.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/msbdf.o' + +# Name of the non-PIC object +non_pic_object='msbdf.o' + diff --git a/gsl-2.5/ode-initval2/odeiv_util.h b/gsl-2.5/ode-initval2/odeiv_util.h new file mode 100644 index 00000000..a385f207 --- /dev/null +++ b/gsl-2.5/ode-initval2/odeiv_util.h @@ -0,0 +1,17 @@ +#define DBL_MEMCPY(dest,src,n) memcpy((dest),(src),(n)*sizeof(double)) +#define DBL_ZERO_MEMSET(dest,n) memset((dest),0,(n)*sizeof(double)) + +/* Error estimation safety coefficient for methods that use step + * doubling for error estimates. Error estimates are multiplied by + * this constant to ensure that the error of a step is not + * underestimated. + * + * The default safety value of 8.0 ensures 90% of samples lie within + * the error (assuming a Gaussian distribution with prior + * p(sigma) = 1 / sigma). Value of 1.0 conforms to equation + * by Ascher and Petzold (reference: Ascher, U.M., Petzold, L.R., + * Computer methods for ordinary differential and + * differential-algebraic equations, SIAM, Philadelphia, 1998). + */ + +#define ODEIV_ERR_SAFETY 8.0 diff --git a/gsl-2.5/ode-initval2/rk1imp.c b/gsl-2.5/ode-initval2/rk1imp.c new file mode 100644 index 00000000..a0a8b1f2 --- /dev/null +++ b/gsl-2.5/ode-initval2/rk1imp.c @@ -0,0 +1,499 @@ +/* ode-initval2/rk1imp.c + * + * Copyright (C) 2009, 2010 Tuomo Keskitalo + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Implicit Euler a.k.a backward Euler method. */ + +/* Reference: Ascher, U.M., Petzold, L.R., Computer methods for + ordinary differential and differential-algebraic equations, SIAM, + Philadelphia, 1998. +*/ + +#include +#include +#include +#include +#include +#include + +#include "odeiv_util.h" +#include "rksubs.c" +#include "modnewton1.c" + +/* Stage of method */ +#define RK1IMP_STAGE 1 + +typedef struct +{ + gsl_matrix *A; /* Runge-Kutta coefficients */ + double *y_onestep; /* Result with one step */ + double *y_twostep; /* Result with two half steps */ + double *ytmp; /* Temporary work space */ + double *y_save; /* Backup space */ + double *YZ; /* Runge-Kutta points */ + double *fYZ; /* Derivatives at YZ */ + gsl_matrix *dfdy; /* Jacobian matrix */ + double *dfdt; /* time derivative of f */ + modnewton1_state_t *esol; /* nonlinear equation solver */ + double *errlev; /* desired error level of y */ + const gsl_odeiv2_driver *driver; /* pointer to driver object */ +} +rk1imp_state_t; + +static void * +rk1imp_alloc (size_t dim) +{ + rk1imp_state_t *state = (rk1imp_state_t *) malloc (sizeof (rk1imp_state_t)); + + if (state == 0) + { + GSL_ERROR_NULL ("failed to allocate space for rk1imp_state", + GSL_ENOMEM); + } + + state->A = gsl_matrix_alloc (RK1IMP_STAGE, RK1IMP_STAGE); + + if (state->A == 0) + { + free (state); + GSL_ERROR_NULL ("failed to allocate space for A", GSL_ENOMEM); + } + + state->y_onestep = (double *) malloc (dim * sizeof (double)); + + if (state->y_onestep == 0) + { + gsl_matrix_free (state->A); + free (state); + GSL_ERROR_NULL ("failed to allocate space for y_onestep", GSL_ENOMEM); + } + + state->y_twostep = (double *) malloc (dim * sizeof (double)); + + if (state->y_twostep == 0) + { + free (state->y_onestep); + gsl_matrix_free (state->A); + free (state); + GSL_ERROR_NULL ("failed to allocate space for y_onestep", GSL_ENOMEM); + } + + state->ytmp = (double *) malloc (dim * sizeof (double)); + + if (state->ytmp == 0) + { + free (state->y_twostep); + free (state->y_onestep); + gsl_matrix_free (state->A); + free (state); + GSL_ERROR_NULL ("failed to allocate space for ytmp", GSL_ENOMEM); + } + + state->y_save = (double *) malloc (dim * sizeof (double)); + + if (state->y_save == 0) + { + free (state->ytmp); + free (state->y_twostep); + free (state->y_onestep); + gsl_matrix_free (state->A); + free (state); + GSL_ERROR_NULL ("failed to allocate space for y_save", GSL_ENOMEM); + } + + state->YZ = (double *) malloc (dim * RK1IMP_STAGE * sizeof (double)); + + if (state->YZ == 0) + { + free (state->y_save); + free (state->ytmp); + free (state->y_twostep); + free (state->y_onestep); + gsl_matrix_free (state->A); + free (state); + GSL_ERROR_NULL ("failed to allocate space for YZ", GSL_ENOMEM); + } + + state->fYZ = (double *) malloc (dim * RK1IMP_STAGE * sizeof (double)); + + if (state->fYZ == 0) + { + free (state->YZ); + free (state->y_save); + free (state->ytmp); + free (state->y_twostep); + free (state->y_onestep); + gsl_matrix_free (state->A); + free (state); + GSL_ERROR_NULL ("failed to allocate space for fYZ", GSL_ENOMEM); + } + + state->dfdt = (double *) malloc (dim * sizeof (double)); + + if (state->dfdt == 0) + { + free (state->fYZ); + free (state->YZ); + free (state->y_save); + free (state->ytmp); + free (state->y_twostep); + free (state->y_onestep); + gsl_matrix_free (state->A); + free (state); + GSL_ERROR_NULL ("failed to allocate space for dfdt", GSL_ENOMEM); + } + + state->dfdy = gsl_matrix_alloc (dim, dim); + + if (state->dfdy == 0) + { + free (state->dfdt); + free (state->fYZ); + free (state->YZ); + free (state->y_save); + free (state->ytmp); + free (state->y_twostep); + free (state->y_onestep); + gsl_matrix_free (state->A); + free (state); + GSL_ERROR_NULL ("failed to allocate space for dfdy", GSL_ENOMEM); + } + + state->esol = modnewton1_alloc (dim, RK1IMP_STAGE); + + if (state->esol == 0) + { + gsl_matrix_free (state->dfdy); + free (state->dfdt); + free (state->fYZ); + free (state->YZ); + free (state->y_save); + free (state->ytmp); + free (state->y_twostep); + free (state->y_onestep); + gsl_matrix_free (state->A); + free (state); + GSL_ERROR_NULL ("failed to allocate space for esol", GSL_ENOMEM); + } + + state->errlev = (double *) malloc (dim * sizeof (double)); + + if (state->errlev == 0) + { + modnewton1_free (state->esol); + gsl_matrix_free (state->dfdy); + free (state->dfdt); + free (state->fYZ); + free (state->YZ); + free (state->y_save); + free (state->ytmp); + free (state->y_twostep); + free (state->y_onestep); + gsl_matrix_free (state->A); + free (state); + GSL_ERROR_NULL ("failed to allocate space for errlev", GSL_ENOMEM); + } + + state->driver = NULL; + + return state; +} + +static int +rk1imp_apply (void *vstate, size_t dim, double t, double h, + double y[], double yerr[], + const double dydt_in[], double dydt_out[], + const gsl_odeiv2_system * sys) +{ + /* Makes an implicit Euler step with size h and estimates the local + error of the step by step doubling. + */ + + rk1imp_state_t *state = (rk1imp_state_t *) vstate; + + double *const y_onestep = state->y_onestep; + double *const y_twostep = state->y_twostep; + double *const ytmp = state->ytmp; + double *const y_save = state->y_save; + double *const YZ = state->YZ; + double *const fYZ = state->fYZ; + gsl_matrix *const dfdy = state->dfdy; + double *const dfdt = state->dfdt; + double *const errlev = state->errlev; + + const modnewton1_state_t *esol = state->esol; + + /* Runge-Kutta coefficients */ + + gsl_matrix *A = state->A; + const double b[] = { 1.0 }; + const double c[] = { 1.0 }; + gsl_matrix_set (A, 0, 0, 1.0); + + if (esol == NULL) + { + GSL_ERROR ("no non-linear equation solver speficied", GSL_EINVAL); + } + + /* Get desired error levels via gsl_odeiv2_control object through driver + object, which is a requirement for this stepper. + */ + + if (state->driver == NULL) + { + return GSL_EFAULT; + } + else + { + size_t i; + + for (i = 0; i < dim; i++) + { + if (dydt_in != NULL) + { + gsl_odeiv2_control_errlevel (state->driver->c, y[i], + dydt_in[i], h, i, &errlev[i]); + } + else + { + gsl_odeiv2_control_errlevel (state->driver->c, y[i], + 0.0, h, i, &errlev[i]); + } + } + } + + /* Evaluate Jacobian for modnewton1 */ + + { + int s = GSL_ODEIV_JA_EVAL (sys, t, y, dfdy->data, dfdt); + + if (s != GSL_SUCCESS) + { + return s; + } + } + + /* Calculate a single step with size h */ + + { + int s = modnewton1_init ((void *) esol, A, h, dfdy, sys); + + if (s != GSL_SUCCESS) + { + return s; + } + } + + { + int s = modnewton1_solve ((void *) esol, A, c, t, h, y, + sys, YZ, errlev); + + if (s != GSL_SUCCESS) + { + return s; + } + } + + { + int s = GSL_ODEIV_FN_EVAL (sys, t + c[0] * h, YZ, fYZ); + + if (s != GSL_SUCCESS) + { + return s; + } + } + + { + int s = rksubs (y_onestep, h, y, fYZ, b, RK1IMP_STAGE, dim); + + if (s != GSL_SUCCESS) + return s; + } + + /* Error estimation by step doubling */ + + { + int s = modnewton1_init ((void *) esol, A, h / 2.0, dfdy, sys); + + if (s != GSL_SUCCESS) + { + return s; + } + } + + /* 1st half step */ + + { + int s = modnewton1_solve ((void *) esol, A, c, t, h / 2.0, y, + sys, YZ, errlev); + + if (s != GSL_SUCCESS) + { + return s; + } + } + + { + int s = GSL_ODEIV_FN_EVAL (sys, t + c[0] * h / 2.0, YZ, fYZ); + if (s != GSL_SUCCESS) + { + return s; + } + } + + { + int s = rksubs (ytmp, h / 2.0, y, fYZ, b, RK1IMP_STAGE, dim); + + if (s != GSL_SUCCESS) + return s; + } + + /* Save original y values in case of error */ + + DBL_MEMCPY (y_save, y, dim); + + /* 2nd half step */ + + { + int s = modnewton1_solve ((void *) esol, A, c, t + h / 2.0, h / 2.0, + ytmp, sys, YZ, errlev); + + if (s != GSL_SUCCESS) + { + return s; + } + } + + { + int s = GSL_ODEIV_FN_EVAL (sys, t + h / 2.0 + c[0] * h / 2.0, YZ, fYZ); + if (s != GSL_SUCCESS) + { + return s; + } + } + + { + /* Note: rk1imp returns y using the results from two half steps + instead of the single step since the results are freely + available and more precise. + */ + + int s = rksubs (y_twostep, h / 2.0, ytmp, fYZ, b, RK1IMP_STAGE, dim); + + if (s != GSL_SUCCESS) + { + DBL_MEMCPY (y, y_save, dim); + return s; + } + } + + DBL_MEMCPY (y, y_twostep, dim); + + /* Error estimation */ + + { + size_t i; + for (i = 0; i < dim; i++) + { + yerr[i] = ODEIV_ERR_SAFETY * 0.5 * fabs (y_twostep[i] - y_onestep[i]); + } + } + + /* Derivatives at output */ + + if (dydt_out != NULL) + { + int s = GSL_ODEIV_FN_EVAL (sys, t + h, y, dydt_out); + + if (s != GSL_SUCCESS) + { + /* Restore original values */ + DBL_MEMCPY (y, y_save, dim); + + return s; + } + } + + return GSL_SUCCESS; +} + +static int +rk1imp_set_driver (void *vstate, const gsl_odeiv2_driver * d) +{ + rk1imp_state_t *state = (rk1imp_state_t *) vstate; + + state->driver = d; + + return GSL_SUCCESS; +} + +static int +rk1imp_reset (void *vstate, size_t dim) +{ + rk1imp_state_t *state = (rk1imp_state_t *) vstate; + + DBL_ZERO_MEMSET (state->y_onestep, dim); + DBL_ZERO_MEMSET (state->y_twostep, dim); + DBL_ZERO_MEMSET (state->ytmp, dim); + DBL_ZERO_MEMSET (state->y_save, dim); + DBL_ZERO_MEMSET (state->YZ, dim); + DBL_ZERO_MEMSET (state->fYZ, dim); + + return GSL_SUCCESS; +} + +static unsigned int +rk1imp_order (void *vstate) +{ + rk1imp_state_t *state = (rk1imp_state_t *) vstate; + state = 0; /* prevent warnings about unused parameters */ + return 1; +} + +static void +rk1imp_free (void *vstate) +{ + rk1imp_state_t *state = (rk1imp_state_t *) vstate; + + free (state->errlev); + modnewton1_free (state->esol); + gsl_matrix_free (state->dfdy); + free (state->dfdt); + free (state->fYZ); + free (state->YZ); + free (state->y_save); + free (state->ytmp); + free (state->y_twostep); + free (state->y_onestep); + gsl_matrix_free (state->A); + free (state); +} + +static const gsl_odeiv2_step_type rk1imp_type = { + "rk1imp", /* name */ + 1, /* can use dydt_in? */ + 1, /* gives exact dydt_out? */ + &rk1imp_alloc, + &rk1imp_apply, + &rk1imp_set_driver, + &rk1imp_reset, + &rk1imp_order, + &rk1imp_free +}; + +const gsl_odeiv2_step_type *gsl_odeiv2_step_rk1imp = &rk1imp_type; diff --git a/gsl-2.5/ode-initval2/rk1imp.lo b/gsl-2.5/ode-initval2/rk1imp.lo new file mode 100644 index 00000000..9e70e921 --- /dev/null +++ b/gsl-2.5/ode-initval2/rk1imp.lo @@ -0,0 +1,12 @@ +# rk1imp.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/rk1imp.o' + +# Name of the non-PIC object +non_pic_object='rk1imp.o' + diff --git a/gsl-2.5/ode-initval2/rk2.c b/gsl-2.5/ode-initval2/rk2.c new file mode 100644 index 00000000..4d0eaef2 --- /dev/null +++ b/gsl-2.5/ode-initval2/rk2.c @@ -0,0 +1,251 @@ +/* ode-initval/rk2.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Runge-Kutta 2(3), Euler-Cauchy */ + +/* Author: G. Jungman + */ + +/* Reference: Abramowitz & Stegun, section 25.5. Runge-Kutta 2nd (25.5.7) + and 3rd (25.5.8) order methods */ + +#include +#include +#include +#include +#include + +#include "odeiv_util.h" +#include "step_utils.c" + +typedef struct +{ + double *k1; + double *k2; + double *k3; + double *ytmp; +} +rk2_state_t; + +static void * +rk2_alloc (size_t dim) +{ + rk2_state_t *state = (rk2_state_t *) malloc (sizeof (rk2_state_t)); + + if (state == 0) + { + GSL_ERROR_NULL ("failed to allocate space for rk2_state", GSL_ENOMEM); + } + + state->k1 = (double *) malloc (dim * sizeof (double)); + + if (state->k1 == 0) + { + free (state); + GSL_ERROR_NULL ("failed to allocate space for k1", GSL_ENOMEM); + } + + state->k2 = (double *) malloc (dim * sizeof (double)); + + if (state->k2 == 0) + { + free (state->k1); + free (state); + GSL_ERROR_NULL ("failed to allocate space for k2", GSL_ENOMEM); + } + + state->k3 = (double *) malloc (dim * sizeof (double)); + + if (state->k3 == 0) + { + free (state->k2); + free (state->k1); + free (state); + GSL_ERROR_NULL ("failed to allocate space for k3", GSL_ENOMEM); + } + + state->ytmp = (double *) malloc (dim * sizeof (double)); + + if (state->ytmp == 0) + { + free (state->k3); + free (state->k2); + free (state->k1); + free (state); + GSL_ERROR_NULL ("failed to allocate space for ytmp", GSL_ENOMEM); + } + + return state; +} + + +static int +rk2_apply (void *vstate, + size_t dim, + double t, + double h, + double y[], + double yerr[], + const double dydt_in[], + double dydt_out[], const gsl_odeiv2_system * sys) +{ + rk2_state_t *state = (rk2_state_t *) vstate; + + size_t i; + + double *const k1 = state->k1; + double *const k2 = state->k2; + double *const k3 = state->k3; + double *const ytmp = state->ytmp; + + /* k1 step */ + /* k1 = f(t,y) */ + + if (dydt_in != NULL) + { + DBL_MEMCPY (k1, dydt_in, dim); + } + else + { + int s = GSL_ODEIV_FN_EVAL (sys, t, y, k1); + + if (s != GSL_SUCCESS) + { + return s; + } + } + + /* k2 step */ + /* k2 = f(t + 0.5*h, y + 0.5*k1) */ + + for (i = 0; i < dim; i++) + { + ytmp[i] = y[i] + 0.5 * h * k1[i]; + } + + { + int s = GSL_ODEIV_FN_EVAL (sys, t + 0.5 * h, ytmp, k2); + + if (s != GSL_SUCCESS) + { + return s; + } + } + + /* k3 step */ + /* for 3rd order estimates, is used for error estimation + k3 = f(t + h, y - k1 + 2*k2) */ + + for (i = 0; i < dim; i++) + { + ytmp[i] = y[i] + h * (-k1[i] + 2.0 * k2[i]); + } + + { + int s = GSL_ODEIV_FN_EVAL (sys, t + h, ytmp, k3); + + if (s != GSL_SUCCESS) + { + return s; + } + } + + /* final sum */ + + for (i = 0; i < dim; i++) + { + /* Save original values if derivative evaluation below fails */ + ytmp[i] = y[i]; + + { + const double ksum3 = (k1[i] + 4.0 * k2[i] + k3[i]) / 6.0; + y[i] += h * ksum3; + } + } + + /* Derivatives at output */ + + if (dydt_out != NULL) + { + int s = GSL_ODEIV_FN_EVAL (sys, t + h, y, dydt_out); + + if (s != GSL_SUCCESS) + { + /* Restore original values */ + DBL_MEMCPY (y, ytmp, dim); + + return s; + } + } + + /* Error estimation */ + + for (i = 0; i < dim; i++) + { + const double ksum3 = (k1[i] + 4.0 * k2[i] + k3[i]) / 6.0; + yerr[i] = h * (k2[i] - ksum3); + } + + return GSL_SUCCESS; +} + +static int +rk2_reset (void *vstate, size_t dim) +{ + rk2_state_t *state = (rk2_state_t *) vstate; + + DBL_ZERO_MEMSET (state->k1, dim); + DBL_ZERO_MEMSET (state->k2, dim); + DBL_ZERO_MEMSET (state->k3, dim); + DBL_ZERO_MEMSET (state->ytmp, dim); + + return GSL_SUCCESS; +} + +static unsigned int +rk2_order (void *vstate) +{ + rk2_state_t *state = (rk2_state_t *) vstate; + state = 0; /* prevent warnings about unused parameters */ + return 2; +} + +static void +rk2_free (void *vstate) +{ + rk2_state_t *state = (rk2_state_t *) vstate; + free (state->k1); + free (state->k2); + free (state->k3); + free (state->ytmp); + free (state); +} + +static const gsl_odeiv2_step_type rk2_type = { "rk2", /* name */ + 1, /* can use dydt_in */ + 1, /* gives exact dydt_out */ + &rk2_alloc, + &rk2_apply, + &stepper_set_driver_null, + &rk2_reset, + &rk2_order, + &rk2_free +}; + +const gsl_odeiv2_step_type *gsl_odeiv2_step_rk2 = &rk2_type; diff --git a/gsl-2.5/ode-initval2/rk2.lo b/gsl-2.5/ode-initval2/rk2.lo new file mode 100644 index 00000000..a317b099 --- /dev/null +++ b/gsl-2.5/ode-initval2/rk2.lo @@ -0,0 +1,12 @@ +# rk2.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/rk2.o' + +# Name of the non-PIC object +non_pic_object='rk2.o' + diff --git a/gsl-2.5/ode-initval2/rk2imp.c b/gsl-2.5/ode-initval2/rk2imp.c new file mode 100644 index 00000000..e4cddd82 --- /dev/null +++ b/gsl-2.5/ode-initval2/rk2imp.c @@ -0,0 +1,619 @@ +/* ode-initval2/rk2imp.c + * + * Copyright (C) 2009, 2010 Tuomo Keskitalo + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Based on rk2imp.c by Gerard Jungman */ + +/* Runge-Kutta 2, Gaussian implicit. Also known as implicit midpoint + rule. Error estimation is carried out by the step doubling + method. + */ + +/* Reference: Ascher, U.M., Petzold, L.R., Computer methods for + ordinary differential and differential-algebraic equations, SIAM, + Philadelphia, 1998. + */ + +#include +#include +#include +#include +#include +#include + +#include "odeiv_util.h" +#include "rksubs.c" +#include "modnewton1.c" + +/* Stage of method */ +#define RK2IMP_STAGE 1 + +typedef struct +{ + gsl_matrix *A; /* Runge-Kutta coefficients */ + double *y_onestep; /* Result with one step */ + double *y_twostep; /* Result with two half steps */ + double *ytmp; /* Temporary work space */ + double *y_save; /* Backup space */ + double *YZ; /* Runge-Kutta points */ + double *fYZ; /* Derivatives at YZ */ + gsl_matrix *dfdy; /* Jacobian matrix */ + double *dfdt; /* time derivative of f */ + modnewton1_state_t *esol; /* nonlinear equation solver */ + double *errlev; /* desired error level of y */ + const gsl_odeiv2_driver *driver; /* pointer to driver object */ +} +rk2imp_state_t; + +static void * +rk2imp_alloc (size_t dim) +{ + rk2imp_state_t *state = (rk2imp_state_t *) malloc (sizeof (rk2imp_state_t)); + + if (state == 0) + { + GSL_ERROR_NULL ("failed to allocate space for rk2imp_state", + GSL_ENOMEM); + } + + state->A = gsl_matrix_alloc (RK2IMP_STAGE, RK2IMP_STAGE); + + if (state->A == 0) + { + free (state); + GSL_ERROR_NULL ("failed to allocate space for A", GSL_ENOMEM); + } + + state->y_onestep = (double *) malloc (dim * sizeof (double)); + + if (state->y_onestep == 0) + { + gsl_matrix_free (state->A); + free (state); + GSL_ERROR_NULL ("failed to allocate space for y_onestep", GSL_ENOMEM); + } + + state->y_twostep = (double *) malloc (dim * sizeof (double)); + + if (state->y_twostep == 0) + { + free (state->y_onestep); + gsl_matrix_free (state->A); + free (state); + GSL_ERROR_NULL ("failed to allocate space for y_onestep", GSL_ENOMEM); + } + + state->ytmp = (double *) malloc (dim * sizeof (double)); + + if (state->ytmp == 0) + { + free (state->y_twostep); + free (state->y_onestep); + gsl_matrix_free (state->A); + free (state); + GSL_ERROR_NULL ("failed to allocate space for ytmp", GSL_ENOMEM); + } + + state->y_save = (double *) malloc (dim * sizeof (double)); + + if (state->y_save == 0) + { + free (state->ytmp); + free (state->y_twostep); + free (state->y_onestep); + gsl_matrix_free (state->A); + free (state); + GSL_ERROR_NULL ("failed to allocate space for y_save", GSL_ENOMEM); + } + + state->YZ = (double *) malloc (dim * RK2IMP_STAGE * sizeof (double)); + + if (state->YZ == 0) + { + free (state->y_save); + free (state->ytmp); + free (state->y_twostep); + free (state->y_onestep); + gsl_matrix_free (state->A); + free (state); + GSL_ERROR_NULL ("failed to allocate space for YZ", GSL_ENOMEM); + } + + state->fYZ = (double *) malloc (dim * RK2IMP_STAGE * sizeof (double)); + + if (state->fYZ == 0) + { + free (state->YZ); + free (state->y_save); + free (state->ytmp); + free (state->y_twostep); + free (state->y_onestep); + gsl_matrix_free (state->A); + free (state); + GSL_ERROR_NULL ("failed to allocate space for fYZ", GSL_ENOMEM); + } + + state->dfdt = (double *) malloc (dim * sizeof (double)); + + if (state->dfdt == 0) + { + free (state->fYZ); + free (state->YZ); + free (state->y_save); + free (state->ytmp); + free (state->y_twostep); + free (state->y_onestep); + gsl_matrix_free (state->A); + free (state); + GSL_ERROR_NULL ("failed to allocate space for dfdt", GSL_ENOMEM); + } + + state->dfdy = gsl_matrix_alloc (dim, dim); + + if (state->dfdy == 0) + { + free (state->dfdt); + free (state->fYZ); + free (state->YZ); + free (state->y_save); + free (state->ytmp); + free (state->y_twostep); + free (state->y_onestep); + gsl_matrix_free (state->A); + free (state); + GSL_ERROR_NULL ("failed to allocate space for dfdy", GSL_ENOMEM); + } + + state->esol = modnewton1_alloc (dim, RK2IMP_STAGE); + + if (state->esol == 0) + { + gsl_matrix_free (state->dfdy); + free (state->dfdt); + free (state->fYZ); + free (state->YZ); + free (state->y_save); + free (state->ytmp); + free (state->y_twostep); + free (state->y_onestep); + gsl_matrix_free (state->A); + free (state); + GSL_ERROR_NULL ("failed to allocate space for esol", GSL_ENOMEM); + } + + state->errlev = (double *) malloc (dim * sizeof (double)); + + if (state->errlev == 0) + { + modnewton1_free (state->esol); + gsl_matrix_free (state->dfdy); + free (state->dfdt); + free (state->fYZ); + free (state->YZ); + free (state->y_save); + free (state->ytmp); + free (state->y_twostep); + free (state->y_onestep); + gsl_matrix_free (state->A); + free (state); + GSL_ERROR_NULL ("failed to allocate space for errlev", GSL_ENOMEM); + } + + state->driver = NULL; + + return state; +} + +static int +rk2imp_apply (void *vstate, size_t dim, double t, double h, + double y[], double yerr[], + const double dydt_in[], double dydt_out[], + const gsl_odeiv2_system * sys) +{ + /* Makes a Gaussian implicit 4th order Runge-Kutta step with size h + and estimates the local error of the step by step doubling. + */ + + rk2imp_state_t *state = (rk2imp_state_t *) vstate; + + double *const y_onestep = state->y_onestep; + double *const y_twostep = state->y_twostep; + double *const ytmp = state->ytmp; + double *const y_save = state->y_save; + double *const YZ = state->YZ; + double *const fYZ = state->fYZ; + gsl_matrix *const dfdy = state->dfdy; + double *const dfdt = state->dfdt; + double *const errlev = state->errlev; + + const modnewton1_state_t *esol = state->esol; + +#ifdef DEBUG + { + size_t di; + + printf ("rk2imp_apply: t=%.5e, h=%.5e, y:", t, h); + + for (di = 0; di < dim; di++) + { + printf ("%.5e ", y[di]); + } + printf ("\n"); + } +#endif + + /* Runge-Kutta coefficients */ + gsl_matrix *A = state->A; + const double b[] = { 1.0 }; + const double c[] = { 0.5 }; + gsl_matrix_set (A, 0, 0, 0.5); + + if (esol == NULL) + { + GSL_ERROR ("no non-linear equation solver speficied", GSL_EINVAL); + } + + /* Get desired error levels via gsl_odeiv2_control object through driver + object, which is a requirement for this stepper. + */ + + if (state->driver == NULL) + { + return GSL_EFAULT; + } + else + { + size_t i; + + for (i = 0; i < dim; i++) + { + if (dydt_in != NULL) + { + gsl_odeiv2_control_errlevel (state->driver->c, y[i], + dydt_in[i], h, i, &errlev[i]); + } + else + { + gsl_odeiv2_control_errlevel (state->driver->c, y[i], + 0.0, h, i, &errlev[i]); + } + } + } + + /* Evaluate Jacobian for modnewton1 */ + + { +#ifdef DEBUG + printf ("-- evaluate jacobian\n"); +#endif + int s = GSL_ODEIV_JA_EVAL (sys, t, y, dfdy->data, dfdt); + + if (s != GSL_SUCCESS) + { +#ifdef DEBUG + printf ("-- FAIL at jacobian function evaluation\n"); +#endif + return s; + } +#ifdef DEBUG + size_t M; + size_t N; + size_t i; + size_t j; + + M = dfdy->size1; + N = dfdy->size2; + + for (i = 0; i < M; i++) + { + for (j = 0; j < N; j++) + { + double aij = gsl_matrix_get (dfdy, i, j); + printf ("(%3lu,%3lu)[%lu,%lu]: %22.18g\n", M, N, i, j, aij); + } + } +#endif + } + + /* Calculate a single step with size h */ + + { + int s = modnewton1_init ((void *) esol, A, h, dfdy, sys); + + if (s != GSL_SUCCESS) + { + return s; + } + +#ifdef DEBUG + size_t M; + size_t N; + size_t i; + size_t j; + + printf ("-- modnewton1_init IhAJ:\n"); + + M = esol->IhAJ->size1; + N = esol->IhAJ->size2; + + for (i = 0; i < M; i++) + { + for (j = 0; j < N; j++) + { + double aij = gsl_matrix_get (esol->IhAJ, i, j); + printf ("(%3lu,%3lu)[%lu,%lu]: %22.18g\n", M, N, i, j, aij); + } + } + + printf ("-- modnewton1_init p:\n"); + + M = esol->p->size; + + for (i = 0; i < M; i++) + { + double pi = gsl_permutation_get (esol->p, i); + printf ("(%3lu)[%lu]: %22.18g\n", M, i, pi); + } +#endif + } + + { + int s = modnewton1_solve ((void *) esol, A, c, t, h, y, + sys, YZ, errlev); +#ifdef DEBUG + printf ("-- modnewton1_solve s=%d\n", s); +#endif + + if (s != GSL_SUCCESS) + { + return s; + } + } + +#ifdef DEBUG + { + size_t di; + + printf ("YZ:"); + + for (di = 0; di < dim * RK2IMP_STAGE; di++) + { + printf ("%.5e ", YZ[di]); + } + printf ("\n"); + } +#endif + + { + int s = GSL_ODEIV_FN_EVAL (sys, t + c[0] * h, YZ, fYZ); + + if (s != GSL_SUCCESS) + { + return s; + } + } + +#ifdef DEBUG + { + size_t di; + + printf ("fYZ:"); + + for (di = 0; di < dim * RK2IMP_STAGE; di++) + { + printf ("%.5e ", fYZ[di]); + } + printf ("\n"); + } +#endif + + { + int s = rksubs (y_onestep, h, y, fYZ, b, RK2IMP_STAGE, dim); + + if (s != GSL_SUCCESS) + { + return s; + } + } + + /* Error estimation by step doubling */ + + { + int s = modnewton1_init ((void *) esol, A, h / 2.0, dfdy, sys); + + if (s != GSL_SUCCESS) + { + return s; + } + } + + /* 1st half step */ + + { + int s = modnewton1_solve ((void *) esol, A, c, t, h / 2.0, y, + sys, YZ, errlev); + + if (s != GSL_SUCCESS) + return s; + } + + { + int s = GSL_ODEIV_FN_EVAL (sys, t + c[0] * h / 2.0, YZ, fYZ); + + if (s != GSL_SUCCESS) + { + return s; + } + } + + { + int s = rksubs (ytmp, h / 2.0, y, fYZ, b, RK2IMP_STAGE, dim); + + if (s != GSL_SUCCESS) + { + return s; + } + } + + /* Save original y values in case of error */ + + DBL_MEMCPY (y_save, y, dim); + + /* 2nd half step */ + + { + int s = modnewton1_solve ((void *) esol, A, c, t + h / 2.0, h / 2.0, + ytmp, sys, YZ, errlev); + + if (s != GSL_SUCCESS) + { + return s; + } + } + + { + int s = GSL_ODEIV_FN_EVAL (sys, t + h / 2.0 + c[0] * h / 2.0, YZ, fYZ); + if (s != GSL_SUCCESS) + { + return s; + } + } + + { + /* Note: rk2imp returns y using the results from two half steps + instead of the single step since the results are freely + available and more precise. + */ + + int s = rksubs (y_twostep, h / 2.0, ytmp, fYZ, b, RK2IMP_STAGE, dim); + + if (s != GSL_SUCCESS) + { + DBL_MEMCPY (y, y_save, dim); + return s; + } + } + + DBL_MEMCPY (y, y_twostep, dim); + + /* Error estimation */ + + { + size_t i; + for (i = 0; i < dim; i++) + { + yerr[i] = ODEIV_ERR_SAFETY * 0.5 * + fabs (y_twostep[i] - y_onestep[i]) / 3.0; + } + } + +#ifdef DEBUG + { + size_t i; + printf ("-- error estimates: "); + for (i = 0; i < dim; i++) + { + printf ("%.5e ", yerr[i]); + } + printf ("\n"); + } +#endif + + /* Derivatives at output */ + + if (dydt_out != NULL) + { + int s = GSL_ODEIV_FN_EVAL (sys, t + h, y, dydt_out); + + if (s != GSL_SUCCESS) + { + /* Restore original values */ + DBL_MEMCPY (y, y_save, dim); + + return s; + } + } + + return GSL_SUCCESS; +} + +static int +rk2imp_set_driver (void *vstate, const gsl_odeiv2_driver * d) +{ + rk2imp_state_t *state = (rk2imp_state_t *) vstate; + + state->driver = d; + + return GSL_SUCCESS; +} + +static int +rk2imp_reset (void *vstate, size_t dim) +{ + rk2imp_state_t *state = (rk2imp_state_t *) vstate; + + DBL_ZERO_MEMSET (state->y_onestep, dim); + DBL_ZERO_MEMSET (state->y_twostep, dim); + DBL_ZERO_MEMSET (state->ytmp, dim); + DBL_ZERO_MEMSET (state->y_save, dim); + DBL_ZERO_MEMSET (state->YZ, dim); + DBL_ZERO_MEMSET (state->fYZ, dim); + + return GSL_SUCCESS; +} + +static unsigned int +rk2imp_order (void *vstate) +{ + rk2imp_state_t *state = (rk2imp_state_t *) vstate; + state = 0; /* prevent warnings about unused parameters */ + return 2; +} + +static void +rk2imp_free (void *vstate) +{ + rk2imp_state_t *state = (rk2imp_state_t *) vstate; + + free (state->errlev); + modnewton1_free (state->esol); + gsl_matrix_free (state->dfdy); + free (state->dfdt); + free (state->fYZ); + free (state->YZ); + free (state->y_save); + free (state->ytmp); + free (state->y_twostep); + free (state->y_onestep); + gsl_matrix_free (state->A); + free (state); +} + +static const gsl_odeiv2_step_type rk2imp_type = { + "rk2imp", /* name */ + 1, /* can use dydt_in? */ + 1, /* gives exact dydt_out? */ + &rk2imp_alloc, + &rk2imp_apply, + &rk2imp_set_driver, + &rk2imp_reset, + &rk2imp_order, + &rk2imp_free +}; + +const gsl_odeiv2_step_type *gsl_odeiv2_step_rk2imp = &rk2imp_type; diff --git a/gsl-2.5/ode-initval2/rk2imp.lo b/gsl-2.5/ode-initval2/rk2imp.lo new file mode 100644 index 00000000..366c5bc4 --- /dev/null +++ b/gsl-2.5/ode-initval2/rk2imp.lo @@ -0,0 +1,12 @@ +# rk2imp.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/rk2imp.o' + +# Name of the non-PIC object +non_pic_object='rk2imp.o' + diff --git a/gsl-2.5/ode-initval2/rk4.c b/gsl-2.5/ode-initval2/rk4.c new file mode 100644 index 00000000..626ae4e6 --- /dev/null +++ b/gsl-2.5/ode-initval2/rk4.c @@ -0,0 +1,360 @@ +/* ode-initval/rk4.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Runge-Kutta 4th order, Classical */ + +/* Author: G. Jungman + */ + +/* Reference: Abramowitz & Stegun, section 25.5. equation 25.5.10 + + Error estimation by step doubling, see eg. Ascher, U.M., Petzold, + L.R., Computer methods for ordinary differential and + differential-algebraic equations, SIAM, Philadelphia, 1998. +*/ + +#include +#include +#include +#include +#include + +#include "odeiv_util.h" +#include "step_utils.c" + +typedef struct +{ + double *k; + double *k1; + double *y0; + double *ytmp; + double *y_onestep; +} +rk4_state_t; + +static void * +rk4_alloc (size_t dim) +{ + rk4_state_t *state = (rk4_state_t *) malloc (sizeof (rk4_state_t)); + + if (state == 0) + { + GSL_ERROR_NULL ("failed to allocate space for rk4_state", GSL_ENOMEM); + } + + state->k = (double *) malloc (dim * sizeof (double)); + + if (state->k == 0) + { + free (state); + GSL_ERROR_NULL ("failed to allocate space for k", GSL_ENOMEM); + } + + state->k1 = (double *) malloc (dim * sizeof (double)); + + if (state->k1 == 0) + { + free (state->k); + free (state); + GSL_ERROR_NULL ("failed to allocate space for k1", GSL_ENOMEM); + } + + state->y0 = (double *) malloc (dim * sizeof (double)); + + if (state->y0 == 0) + { + free (state->k); + free (state->k1); + free (state); + GSL_ERROR_NULL ("failed to allocate space for y0", GSL_ENOMEM); + } + + state->ytmp = (double *) malloc (dim * sizeof (double)); + + if (state->ytmp == 0) + { + free (state->y0); + free (state->k); + free (state->k1); + free (state); + GSL_ERROR_NULL ("failed to allocate space for ytmp", GSL_ENOMEM); + } + + state->y_onestep = (double *) malloc (dim * sizeof (double)); + + if (state->y_onestep == 0) + { + free (state->ytmp); + free (state->y0); + free (state->k); + free (state->k1); + free (state); + GSL_ERROR_NULL ("failed to allocate space for ytmp", GSL_ENOMEM); + } + + return state; +} + +static int +rk4_step (double *y, const rk4_state_t * state, + const double h, const double t, const size_t dim, + const gsl_odeiv2_system * sys) +{ + /* Makes a Runge-Kutta 4th order advance with step size h. */ + + /* initial values of variables y. */ + const double *y0 = state->y0; + + /* work space */ + double *ytmp = state->ytmp; + + /* Runge-Kutta coefficients. Contains values of coefficient k1 + in the beginning + */ + double *k = state->k; + + size_t i; + + /* k1 step */ + + for (i = 0; i < dim; i++) + { + y[i] += h / 6.0 * k[i]; + ytmp[i] = y0[i] + 0.5 * h * k[i]; + } + + /* k2 step */ + { + int s = GSL_ODEIV_FN_EVAL (sys, t + 0.5 * h, ytmp, k); + + if (s != GSL_SUCCESS) + { + return s; + } + } + + for (i = 0; i < dim; i++) + { + y[i] += h / 3.0 * k[i]; + ytmp[i] = y0[i] + 0.5 * h * k[i]; + } + + /* k3 step */ + { + int s = GSL_ODEIV_FN_EVAL (sys, t + 0.5 * h, ytmp, k); + + if (s != GSL_SUCCESS) + { + return s; + } + } + + for (i = 0; i < dim; i++) + { + y[i] += h / 3.0 * k[i]; + ytmp[i] = y0[i] + h * k[i]; + } + + /* k4 step */ + { + int s = GSL_ODEIV_FN_EVAL (sys, t + h, ytmp, k); + + if (s != GSL_SUCCESS) + { + return s; + } + } + + for (i = 0; i < dim; i++) + { + y[i] += h / 6.0 * k[i]; + } + + return GSL_SUCCESS; +} + + +static int +rk4_apply (void *vstate, + size_t dim, + double t, + double h, + double y[], + double yerr[], + const double dydt_in[], + double dydt_out[], const gsl_odeiv2_system * sys) +{ + rk4_state_t *state = (rk4_state_t *) vstate; + + size_t i; + + double *const k = state->k; + double *const k1 = state->k1; + double *const y0 = state->y0; + double *const y_onestep = state->y_onestep; + + DBL_MEMCPY (y0, y, dim); + + if (dydt_in != NULL) + { + DBL_MEMCPY (k, dydt_in, dim); + } + else + { + int s = GSL_ODEIV_FN_EVAL (sys, t, y0, k); + + if (s != GSL_SUCCESS) + { + return s; + } + } + + /* Error estimation is done by step doubling procedure */ + + /* Save first point derivatives */ + + DBL_MEMCPY (k1, k, dim); + + /* First traverse h with one step (save to y_onestep) */ + + DBL_MEMCPY (y_onestep, y, dim); + + { + int s = rk4_step (y_onestep, state, h, t, dim, sys); + + if (s != GSL_SUCCESS) + { + return s; + } + } + + /* Then with two steps with half step length (save to y) */ + + DBL_MEMCPY (k, k1, dim); + + { + int s = rk4_step (y, state, h / 2.0, t, dim, sys); + + if (s != GSL_SUCCESS) + { + /* Restore original values */ + DBL_MEMCPY (y, y0, dim); + return s; + } + } + + /* Update before second step */ + { + int s = GSL_ODEIV_FN_EVAL (sys, t + h / 2.0, y, k); + + if (s != GSL_SUCCESS) + { + /* Restore original values */ + DBL_MEMCPY (y, y0, dim); + return s; + } + } + + /* Save original y0 to k1 for possible failures */ + DBL_MEMCPY (k1, y0, dim); + + /* Update y0 for second step */ + DBL_MEMCPY (y0, y, dim); + + { + int s = rk4_step (y, state, h / 2.0, t + h / 2.0, dim, sys); + + if (s != GSL_SUCCESS) + { + /* Restore original values */ + DBL_MEMCPY (y, k1, dim); + return s; + } + } + + /* Derivatives at output */ + + if (dydt_out != NULL) + { + int s = GSL_ODEIV_FN_EVAL (sys, t + h, y, dydt_out); + + if (s != GSL_SUCCESS) + { + /* Restore original values */ + DBL_MEMCPY (y, k1, dim); + return s; + } + } + + /* Error estimation */ + + for (i = 0; i < dim; i++) + { + yerr[i] = ODEIV_ERR_SAFETY * 0.5 * (y[i] - y_onestep[i]) / 15.0; + } + + return GSL_SUCCESS; +} + +static int +rk4_reset (void *vstate, size_t dim) +{ + rk4_state_t *state = (rk4_state_t *) vstate; + + DBL_ZERO_MEMSET (state->k, dim); + DBL_ZERO_MEMSET (state->k1, dim); + DBL_ZERO_MEMSET (state->y0, dim); + DBL_ZERO_MEMSET (state->ytmp, dim); + DBL_ZERO_MEMSET (state->y_onestep, dim); + + return GSL_SUCCESS; +} + +static unsigned int +rk4_order (void *vstate) +{ + rk4_state_t *state = (rk4_state_t *) vstate; + state = 0; /* prevent warnings about unused parameters */ + return 4; +} + +static void +rk4_free (void *vstate) +{ + rk4_state_t *state = (rk4_state_t *) vstate; + free (state->k); + free (state->k1); + free (state->y0); + free (state->ytmp); + free (state->y_onestep); + free (state); +} + +static const gsl_odeiv2_step_type rk4_type = { "rk4", /* name */ + 1, /* can use dydt_in */ + 1, /* gives exact dydt_out */ + &rk4_alloc, + &rk4_apply, + &stepper_set_driver_null, + &rk4_reset, + &rk4_order, + &rk4_free +}; + +const gsl_odeiv2_step_type *gsl_odeiv2_step_rk4 = &rk4_type; diff --git a/gsl-2.5/ode-initval2/rk4.lo b/gsl-2.5/ode-initval2/rk4.lo new file mode 100644 index 00000000..a1a59feb --- /dev/null +++ b/gsl-2.5/ode-initval2/rk4.lo @@ -0,0 +1,12 @@ +# rk4.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/rk4.o' + +# Name of the non-PIC object +non_pic_object='rk4.o' + diff --git a/gsl-2.5/ode-initval2/rk4imp.c b/gsl-2.5/ode-initval2/rk4imp.c new file mode 100644 index 00000000..a0038404 --- /dev/null +++ b/gsl-2.5/ode-initval2/rk4imp.c @@ -0,0 +1,532 @@ +/* ode-initval2/rk4imp.c + * + * Copyright (C) 2009, 2010 Tuomo Keskitalo + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Based on rk4imp.c by Gerard Jungman */ + +/* Gaussian implicit 4th order Runge-Kutta method. Error estimation + is carried out by the step doubling method. + */ + +/* References: + + Ascher, U.M., Petzold, L.R., Computer methods for ordinary + differential and differential-algebraic equations, SIAM, + Philadelphia, 1998. ISBN 0898714125, 9780898714128 +*/ + +#include +#include +#include +#include +#include +#include + +#include "odeiv_util.h" +#include "rksubs.c" +#include "modnewton1.c" + +/* Stage of method */ +#define RK4IMP_STAGE 2 + +typedef struct +{ + gsl_matrix *A; /* Runge-Kutta coefficients */ + double *y_onestep; /* Result with one step */ + double *y_twostep; /* Result with two half steps */ + double *ytmp; /* Temporary work space */ + double *y_save; /* Backup space */ + double *YZ; /* Runge-Kutta points */ + double *fYZ; /* Derivatives at YZ */ + gsl_matrix *dfdy; /* Jacobian matrix */ + double *dfdt; /* time derivative of f */ + modnewton1_state_t *esol; /* nonlinear equation solver */ + double *errlev; /* desired error level of y */ + const gsl_odeiv2_driver *driver; /* pointer to driver object */ +} +rk4imp_state_t; + +static void * +rk4imp_alloc (size_t dim) +{ + rk4imp_state_t *state = (rk4imp_state_t *) malloc (sizeof (rk4imp_state_t)); + + if (state == 0) + { + GSL_ERROR_NULL ("failed to allocate space for rk4imp_state", + GSL_ENOMEM); + } + + state->A = gsl_matrix_alloc (RK4IMP_STAGE, RK4IMP_STAGE); + + if (state->A == 0) + { + free (state); + GSL_ERROR_NULL ("failed to allocate space for A", GSL_ENOMEM); + } + + state->y_onestep = (double *) malloc (dim * sizeof (double)); + + if (state->y_onestep == 0) + { + gsl_matrix_free (state->A); + free (state); + GSL_ERROR_NULL ("failed to allocate space for y_onestep", GSL_ENOMEM); + } + + state->y_twostep = (double *) malloc (dim * sizeof (double)); + + if (state->y_twostep == 0) + { + free (state->y_onestep); + gsl_matrix_free (state->A); + free (state); + GSL_ERROR_NULL ("failed to allocate space for y_onestep", GSL_ENOMEM); + } + + state->ytmp = (double *) malloc (dim * sizeof (double)); + + if (state->ytmp == 0) + { + free (state->y_twostep); + free (state->y_onestep); + gsl_matrix_free (state->A); + free (state); + GSL_ERROR_NULL ("failed to allocate space for ytmp", GSL_ENOMEM); + } + + state->y_save = (double *) malloc (dim * sizeof (double)); + + if (state->y_save == 0) + { + free (state->ytmp); + free (state->y_twostep); + free (state->y_onestep); + gsl_matrix_free (state->A); + free (state); + GSL_ERROR_NULL ("failed to allocate space for y_save", GSL_ENOMEM); + } + + state->YZ = (double *) malloc (dim * RK4IMP_STAGE * sizeof (double)); + + if (state->YZ == 0) + { + free (state->y_save); + free (state->ytmp); + free (state->y_twostep); + free (state->y_onestep); + gsl_matrix_free (state->A); + free (state); + GSL_ERROR_NULL ("failed to allocate space for YZ", GSL_ENOMEM); + } + + state->fYZ = (double *) malloc (dim * RK4IMP_STAGE * sizeof (double)); + + if (state->fYZ == 0) + { + free (state->YZ); + free (state->y_save); + free (state->ytmp); + free (state->y_twostep); + free (state->y_onestep); + gsl_matrix_free (state->A); + free (state); + GSL_ERROR_NULL ("failed to allocate space for fYZ", GSL_ENOMEM); + } + + state->dfdt = (double *) malloc (dim * sizeof (double)); + + if (state->dfdt == 0) + { + free (state->fYZ); + free (state->YZ); + free (state->y_save); + free (state->ytmp); + free (state->y_twostep); + free (state->y_onestep); + gsl_matrix_free (state->A); + free (state); + GSL_ERROR_NULL ("failed to allocate space for dfdt", GSL_ENOMEM); + } + + state->dfdy = gsl_matrix_alloc (dim, dim); + + if (state->dfdy == 0) + { + free (state->dfdt); + free (state->fYZ); + free (state->YZ); + free (state->y_save); + free (state->ytmp); + free (state->y_twostep); + free (state->y_onestep); + gsl_matrix_free (state->A); + free (state); + GSL_ERROR_NULL ("failed to allocate space for dfdy", GSL_ENOMEM); + } + + state->esol = modnewton1_alloc (dim, RK4IMP_STAGE); + + if (state->esol == 0) + { + gsl_matrix_free (state->dfdy); + free (state->dfdt); + free (state->fYZ); + free (state->YZ); + free (state->y_save); + free (state->ytmp); + free (state->y_twostep); + free (state->y_onestep); + gsl_matrix_free (state->A); + free (state); + GSL_ERROR_NULL ("failed to allocate space for esol", GSL_ENOMEM); + } + + state->errlev = (double *) malloc (dim * sizeof (double)); + + if (state->errlev == 0) + { + modnewton1_free (state->esol); + gsl_matrix_free (state->dfdy); + free (state->dfdt); + free (state->fYZ); + free (state->YZ); + free (state->y_save); + free (state->ytmp); + free (state->y_twostep); + free (state->y_onestep); + gsl_matrix_free (state->A); + free (state); + GSL_ERROR_NULL ("failed to allocate space for errlev", GSL_ENOMEM); + } + + state->driver = NULL; + + return state; +} + +static int +rk4imp_apply (void *vstate, size_t dim, double t, double h, + double y[], double yerr[], + const double dydt_in[], double dydt_out[], + const gsl_odeiv2_system * sys) +{ + /* Makes a Gaussian implicit 4th order Runge-Kutta with step size h + and estimates the local error of the step. + */ + + rk4imp_state_t *state = (rk4imp_state_t *) vstate; + + double *const y_onestep = state->y_onestep; + double *const y_twostep = state->y_twostep; + double *const ytmp = state->ytmp; + double *const y_save = state->y_save; + double *const YZ = state->YZ; /* Runge-Kutta points */ + double *const fYZ = state->fYZ; + gsl_matrix *const dfdy = state->dfdy; + double *const dfdt = state->dfdt; + double *const errlev = state->errlev; + + const modnewton1_state_t *esol = state->esol; + + /* Runge-Kutta coefficients */ + + gsl_matrix *A = state->A; + + const double b[] = { 0.5, 0.5 }; + const double c[] = { (3.0 - M_SQRT3) / 6.0, (3.0 + M_SQRT3) / 6.0 }; + + gsl_matrix_set (A, 0, 0, 1.0 / 4); + gsl_matrix_set (A, 0, 1, (3 - 2 * sqrt (3)) / 12); + gsl_matrix_set (A, 1, 0, (3 + 2 * sqrt (3)) / 12); + gsl_matrix_set (A, 1, 1, 1.0 / 4); + + if (esol == NULL) + { + GSL_ERROR ("no non-linear equation solver speficied", GSL_EINVAL); + } + + /* Get desired error levels via gsl_odeiv2_control object through driver + object, which is a requirement for this stepper. + */ + + if (state->driver == NULL) + { + return GSL_EFAULT; + } + else + { + size_t i; + + for (i = 0; i < dim; i++) + { + if (dydt_in != NULL) + { + gsl_odeiv2_control_errlevel (state->driver->c, y[i], + dydt_in[i], h, i, &errlev[i]); + } + else + { + gsl_odeiv2_control_errlevel (state->driver->c, y[i], + 0.0, h, i, &errlev[i]); + } + } + } + + /* Evaluate Jacobian for modnewton1 */ + + { + int s = GSL_ODEIV_JA_EVAL (sys, t, y, dfdy->data, dfdt); + + if (s != GSL_SUCCESS) + { + return s; + } + } + + /* Calculate a single step with size h */ + + { + int s = modnewton1_init ((void *) esol, A, h, dfdy, sys); + + if (s != GSL_SUCCESS) + { + return s; + } + } + + { + int s = modnewton1_solve ((void *) esol, A, c, t, h, y, + sys, YZ, errlev); + + if (s != GSL_SUCCESS) + { + return s; + } + } + + { + size_t j; + + for (j = 0; j < RK4IMP_STAGE; j++) + { + int s = + GSL_ODEIV_FN_EVAL (sys, t + c[j] * h, &YZ[j * dim], &fYZ[j * dim]); + + if (s != GSL_SUCCESS) + { + return s; + } + } + } + + { + int s = rksubs (y_onestep, h, y, fYZ, b, RK4IMP_STAGE, dim); + + if (s != GSL_SUCCESS) + { + return s; + } + } + + /* Error estimation by step doubling */ + + { + int s = modnewton1_init ((void *) esol, A, h / 2.0, dfdy, sys); + + if (s != GSL_SUCCESS) + { + return s; + } + } + + /* 1st half step */ + + { + int s = modnewton1_solve ((void *) esol, A, c, t, h / 2.0, y, + sys, YZ, errlev); + + if (s != GSL_SUCCESS) + { + return s; + } + } + + { + size_t j; + + for (j = 0; j < RK4IMP_STAGE; j++) + { + int s = GSL_ODEIV_FN_EVAL (sys, t + c[j] * h / 2.0, &YZ[j * dim], + &fYZ[j * dim]); + if (s != GSL_SUCCESS) + { + return s; + } + } + } + + { + int s = rksubs (ytmp, h / 2.0, y, fYZ, b, RK4IMP_STAGE, dim); + + if (s != GSL_SUCCESS) + return s; + } + + /* Save original y values in case of error */ + + DBL_MEMCPY (y_save, y, dim); + + /* 2nd half step */ + + { + int s = modnewton1_solve ((void *) esol, A, c, t + h / 2.0, h / 2.0, + ytmp, sys, YZ, errlev); + + if (s != GSL_SUCCESS) + { + return s; + } + } + + { + size_t j; + + for (j = 0; j < RK4IMP_STAGE; j++) + { + int s = + GSL_ODEIV_FN_EVAL (sys, t + h / 2.0 + c[j] * h / 2.0, &YZ[j * dim], + &fYZ[j * dim]); + if (s != GSL_SUCCESS) + { + return s; + } + } + } + + { + int s = rksubs (y_twostep, h / 2.0, ytmp, fYZ, b, RK4IMP_STAGE, dim); + + if (s != GSL_SUCCESS) + { + DBL_MEMCPY (y, y_save, dim); + return s; + } + } + + /* Note: rk4imp returns y using the results from two half steps + instead of the single step since the results are freely + available and more precise. + */ + + DBL_MEMCPY (y, y_twostep, dim); + + /* Error estimation */ + + { + size_t i; + for (i = 0; i < dim; i++) + { + yerr[i] = ODEIV_ERR_SAFETY * 0.5 * + fabs (y_twostep[i] - y_onestep[i]) / 15.0; + } + } + + /* Derivatives at output */ + + if (dydt_out != NULL) + { + int s = GSL_ODEIV_FN_EVAL (sys, t + h, y, dydt_out); + + if (s != GSL_SUCCESS) + { + /* Restore original values */ + DBL_MEMCPY (y, y_save, dim); + + return s; + } + } + + return GSL_SUCCESS; +} + +static int +rk4imp_set_driver (void *vstate, const gsl_odeiv2_driver * d) +{ + rk4imp_state_t *state = (rk4imp_state_t *) vstate; + + state->driver = d; + + return GSL_SUCCESS; +} + +static int +rk4imp_reset (void *vstate, size_t dim) +{ + rk4imp_state_t *state = (rk4imp_state_t *) vstate; + + DBL_ZERO_MEMSET (state->y_onestep, dim); + DBL_ZERO_MEMSET (state->y_twostep, dim); + DBL_ZERO_MEMSET (state->ytmp, dim); + DBL_ZERO_MEMSET (state->y_save, dim); + DBL_ZERO_MEMSET (state->YZ, dim * RK4IMP_STAGE); + DBL_ZERO_MEMSET (state->fYZ, dim * RK4IMP_STAGE); + + return GSL_SUCCESS; +} + +static unsigned int +rk4imp_order (void *vstate) +{ + rk4imp_state_t *state = (rk4imp_state_t *) vstate; + state = 0; /* prevent warnings about unused parameters */ + return 4; +} + +static void +rk4imp_free (void *vstate) +{ + rk4imp_state_t *state = (rk4imp_state_t *) vstate; + + free (state->errlev); + modnewton1_free (state->esol); + gsl_matrix_free (state->dfdy); + free (state->dfdt); + free (state->fYZ); + free (state->YZ); + free (state->y_save); + free (state->ytmp); + free (state->y_twostep); + free (state->y_onestep); + gsl_matrix_free (state->A); + free (state); +} + +static const gsl_odeiv2_step_type rk4imp_type = { + "rk4imp", /* name */ + 1, /* can use dydt_in? */ + 1, /* gives exact dydt_out? */ + &rk4imp_alloc, + &rk4imp_apply, + &rk4imp_set_driver, + &rk4imp_reset, + &rk4imp_order, + &rk4imp_free +}; + +const gsl_odeiv2_step_type *gsl_odeiv2_step_rk4imp = &rk4imp_type; diff --git a/gsl-2.5/ode-initval2/rk4imp.lo b/gsl-2.5/ode-initval2/rk4imp.lo new file mode 100644 index 00000000..f048a5b8 --- /dev/null +++ b/gsl-2.5/ode-initval2/rk4imp.lo @@ -0,0 +1,12 @@ +# rk4imp.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/rk4imp.o' + +# Name of the non-PIC object +non_pic_object='rk4imp.o' + diff --git a/gsl-2.5/ode-initval2/rk8pd.c b/gsl-2.5/ode-initval2/rk8pd.c new file mode 100644 index 00000000..5880f141 --- /dev/null +++ b/gsl-2.5/ode-initval2/rk8pd.c @@ -0,0 +1,546 @@ +/* ode-initval2/rk8pd.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Runge-Kutta 8(9), Prince-Dormand + * + * High Order Embedded Runge-Kutta Formulae + * P.J. Prince and J.R. Dormand + * J. Comp. Appl. Math.,7, pp. 67-75, 1981 + */ + +/* Author: G. Jungman + */ +#include +#include +#include +#include +#include + +#include "odeiv_util.h" +#include "step_utils.c" + +/* Prince-Dormand constants */ + +static const double Abar[] = { + 14005451.0 / 335480064.0, + 0.0, + 0.0, + 0.0, + 0.0, + -59238493.0 / 1068277825.0, + 181606767.0 / 758867731.0, + 561292985.0 / 797845732.0, + -1041891430.0 / 1371343529.0, + 760417239.0 / 1151165299.0, + 118820643.0 / 751138087.0, + -528747749.0 / 2220607170.0, + 1.0 / 4.0 +}; + +static const double A[] = { + 13451932.0 / 455176623.0, + 0.0, + 0.0, + 0.0, + 0.0, + -808719846.0 / 976000145.0, + 1757004468.0 / 5645159321.0, + 656045339.0 / 265891186.0, + -3867574721.0 / 1518517206.0, + 465885868.0 / 322736535.0, + 53011238.0 / 667516719.0, + 2.0 / 45.0 +}; + +static const double ah[] = { + 1.0 / 18.0, + 1.0 / 12.0, + 1.0 / 8.0, + 5.0 / 16.0, + 3.0 / 8.0, + 59.0 / 400.0, + 93.0 / 200.0, + 5490023248.0 / 9719169821.0, + 13.0 / 20.0, + 1201146811.0 / 1299019798.0 +}; + +static const double b21 = 1.0 / 18.0; +static const double b3[] = { 1.0 / 48.0, 1.0 / 16.0 }; +static const double b4[] = { 1.0 / 32.0, 0.0, 3.0 / 32.0 }; +static const double b5[] = { 5.0 / 16.0, 0.0, -75.0 / 64.0, 75.0 / 64.0 }; +static const double b6[] = { 3.0 / 80.0, 0.0, 0.0, 3.0 / 16.0, 3.0 / 20.0 }; + +static const double b7[] = { + 29443841.0 / 614563906.0, + 0.0, + 0.0, + 77736538.0 / 692538347.0, + -28693883.0 / 1125000000.0, + 23124283.0 / 1800000000.0 +}; + +static const double b8[] = { + 16016141.0 / 946692911.0, + 0.0, + 0.0, + 61564180.0 / 158732637.0, + 22789713.0 / 633445777.0, + 545815736.0 / 2771057229.0, + -180193667.0 / 1043307555.0 +}; + +static const double b9[] = { + 39632708.0 / 573591083.0, + 0.0, + 0.0, + -433636366.0 / 683701615.0, + -421739975.0 / 2616292301.0, + 100302831.0 / 723423059.0, + 790204164.0 / 839813087.0, + 800635310.0 / 3783071287.0 +}; + +static const double b10[] = { + 246121993.0 / 1340847787.0, + 0.0, + 0.0, + -37695042795.0 / 15268766246.0, + -309121744.0 / 1061227803.0, + -12992083.0 / 490766935.0, + 6005943493.0 / 2108947869.0, + 393006217.0 / 1396673457.0, + 123872331.0 / 1001029789.0 +}; + +static const double b11[] = { + -1028468189.0 / 846180014.0, + 0.0, + 0.0, + 8478235783.0 / 508512852.0, + 1311729495.0 / 1432422823.0, + -10304129995.0 / 1701304382.0, + -48777925059.0 / 3047939560.0, + 15336726248.0 / 1032824649.0, + -45442868181.0 / 3398467696.0, + 3065993473.0 / 597172653.0 +}; + +static const double b12[] = { + 185892177.0 / 718116043.0, + 0.0, + 0.0, + -3185094517.0 / 667107341.0, + -477755414.0 / 1098053517.0, + -703635378.0 / 230739211.0, + 5731566787.0 / 1027545527.0, + 5232866602.0 / 850066563.0, + -4093664535.0 / 808688257.0, + 3962137247.0 / 1805957418.0, + 65686358.0 / 487910083.0 +}; + +static const double b13[] = { + 403863854.0 / 491063109.0, + 0.0, + 0.0, + -5068492393.0 / 434740067.0, + -411421997.0 / 543043805.0, + 652783627.0 / 914296604.0, + 11173962825.0 / 925320556.0, + -13158990841.0 / 6184727034.0, + 3936647629.0 / 1978049680.0, + -160528059.0 / 685178525.0, + 248638103.0 / 1413531060.0, + 0.0 +}; + +typedef struct +{ + double *k[13]; + double *ytmp; + double *y0; +} +rk8pd_state_t; + +static void * +rk8pd_alloc (size_t dim) +{ + rk8pd_state_t *state = (rk8pd_state_t *) malloc (sizeof (rk8pd_state_t)); + int i, j; + + if (state == 0) + { + GSL_ERROR_NULL ("failed to allocate space for rk8pd_state", GSL_ENOMEM); + } + + state->ytmp = (double *) malloc (dim * sizeof (double)); + + if (state->ytmp == 0) + { + free (state); + GSL_ERROR_NULL ("failed to allocate space for ytmp", GSL_ENOMEM); + } + + state->y0 = (double *) malloc (dim * sizeof (double)); + + if (state->y0 == 0) + { + free (state->ytmp); + free (state); + GSL_ERROR_NULL ("failed to allocate space for y0", GSL_ENOMEM); + } + + for (i = 0; i < 13; i++) + { + state->k[i] = (double *) malloc (dim * sizeof (double)); + + if (state->k[i] == 0) + { + for (j = 0; j < i; j++) + { + free (state->k[j]); + } + free (state->y0); + free (state->ytmp); + free (state); + GSL_ERROR_NULL ("failed to allocate space for k's", GSL_ENOMEM); + } + } + + return state; +} + + +static int +rk8pd_apply (void *vstate, + size_t dim, + double t, + double h, + double y[], + double yerr[], + const double dydt_in[], + double dydt_out[], const gsl_odeiv2_system * sys) +{ + rk8pd_state_t *state = (rk8pd_state_t *) vstate; + + size_t i; + + double *const ytmp = state->ytmp; + double *const y0 = state->y0; + /* Note that k1 is stored in state->k[0] due to zero-based indexing */ + double *const k1 = state->k[0]; + double *const k2 = state->k[1]; + double *const k3 = state->k[2]; + double *const k4 = state->k[3]; + double *const k5 = state->k[4]; + double *const k6 = state->k[5]; + double *const k7 = state->k[6]; + double *const k8 = state->k[7]; + double *const k9 = state->k[8]; + double *const k10 = state->k[9]; + double *const k11 = state->k[10]; + double *const k12 = state->k[11]; + double *const k13 = state->k[12]; + + DBL_MEMCPY (y0, y, dim); + + /* k1 step */ + if (dydt_in != NULL) + { + DBL_MEMCPY (k1, dydt_in, dim); + } + else + { + int s = GSL_ODEIV_FN_EVAL (sys, t, y, k1); + + if (s != GSL_SUCCESS) + { + return s; + } + } + + for (i = 0; i < dim; i++) + ytmp[i] = y[i] + b21 * h * k1[i]; + + /* k2 step */ + { + int s = GSL_ODEIV_FN_EVAL (sys, t + ah[0] * h, ytmp, k2); + + if (s != GSL_SUCCESS) + { + return s; + } + } + + for (i = 0; i < dim; i++) + ytmp[i] = y[i] + h * (b3[0] * k1[i] + b3[1] * k2[i]); + + /* k3 step */ + { + int s = GSL_ODEIV_FN_EVAL (sys, t + ah[1] * h, ytmp, k3); + + if (s != GSL_SUCCESS) + { + return s; + } + } + + for (i = 0; i < dim; i++) + ytmp[i] = y[i] + h * (b4[0] * k1[i] + b4[2] * k3[i]); + + /* k4 step */ + { + int s = GSL_ODEIV_FN_EVAL (sys, t + ah[2] * h, ytmp, k4); + + if (s != GSL_SUCCESS) + { + return s; + } + } + + for (i = 0; i < dim; i++) + ytmp[i] = y[i] + h * (b5[0] * k1[i] + b5[2] * k3[i] + b5[3] * k4[i]); + + /* k5 step */ + { + int s = GSL_ODEIV_FN_EVAL (sys, t + ah[3] * h, ytmp, k5); + + if (s != GSL_SUCCESS) + { + return s; + } + } + + for (i = 0; i < dim; i++) + ytmp[i] = y[i] + h * (b6[0] * k1[i] + b6[3] * k4[i] + b6[4] * k5[i]); + + /* k6 step */ + { + int s = GSL_ODEIV_FN_EVAL (sys, t + ah[4] * h, ytmp, k6); + + if (s != GSL_SUCCESS) + { + return s; + } + } + + for (i = 0; i < dim; i++) + ytmp[i] = + y[i] + h * (b7[0] * k1[i] + b7[3] * k4[i] + b7[4] * k5[i] + + b7[5] * k6[i]); + + /* k7 step */ + { + int s = GSL_ODEIV_FN_EVAL (sys, t + ah[5] * h, ytmp, k7); + + if (s != GSL_SUCCESS) + { + return s; + } + } + + for (i = 0; i < dim; i++) + ytmp[i] = + y[i] + h * (b8[0] * k1[i] + b8[3] * k4[i] + b8[4] * k5[i] + + b8[5] * k6[i] + b8[6] * k7[i]); + + /* k8 step */ + { + int s = GSL_ODEIV_FN_EVAL (sys, t + ah[6] * h, ytmp, k8); + + if (s != GSL_SUCCESS) + { + return s; + } + } + + for (i = 0; i < dim; i++) + ytmp[i] = + y[i] + h * (b9[0] * k1[i] + b9[3] * k4[i] + b9[4] * k5[i] + + b9[5] * k6[i] + b9[6] * k7[i] + b9[7] * k8[i]); + + /* k9 step */ + { + int s = GSL_ODEIV_FN_EVAL (sys, t + ah[7] * h, ytmp, k9); + + if (s != GSL_SUCCESS) + { + return s; + } + } + + for (i = 0; i < dim; i++) + ytmp[i] = + y[i] + h * (b10[0] * k1[i] + b10[3] * k4[i] + b10[4] * k5[i] + + b10[5] * k6[i] + b10[6] * k7[i] + b10[7] * k8[i] + + b10[8] * k9[i]); + + /* k10 step */ + { + int s = GSL_ODEIV_FN_EVAL (sys, t + ah[8] * h, ytmp, k10); + + if (s != GSL_SUCCESS) + { + return s; + } + } + + for (i = 0; i < dim; i++) + ytmp[i] = + y[i] + h * (b11[0] * k1[i] + b11[3] * k4[i] + b11[4] * k5[i] + + b11[5] * k6[i] + b11[6] * k7[i] + b11[7] * k8[i] + + b11[8] * k9[i] + b11[9] * k10[i]); + + /* k11 step */ + { + int s = GSL_ODEIV_FN_EVAL (sys, t + ah[9] * h, ytmp, k11); + + if (s != GSL_SUCCESS) + { + return s; + } + } + + for (i = 0; i < dim; i++) + ytmp[i] = + y[i] + h * (b12[0] * k1[i] + b12[3] * k4[i] + b12[4] * k5[i] + + b12[5] * k6[i] + b12[6] * k7[i] + b12[7] * k8[i] + + b12[8] * k9[i] + b12[9] * k10[i] + b12[10] * k11[i]); + + /* k12 step */ + { + int s = GSL_ODEIV_FN_EVAL (sys, t + h, ytmp, k12); + + if (s != GSL_SUCCESS) + { + return s; + } + } + + for (i = 0; i < dim; i++) + ytmp[i] = + y[i] + h * (b13[0] * k1[i] + b13[3] * k4[i] + b13[4] * k5[i] + + b13[5] * k6[i] + b13[6] * k7[i] + b13[7] * k8[i] + + b13[8] * k9[i] + b13[9] * k10[i] + b13[10] * k11[i] + + b13[11] * k12[i]); + + /* k13 step */ + { + int s = GSL_ODEIV_FN_EVAL (sys, t + h, ytmp, k13); + + if (s != GSL_SUCCESS) + { + return s; + } + } + + /* final sum */ + for (i = 0; i < dim; i++) + { + const double ksum8 = + Abar[0] * k1[i] + Abar[5] * k6[i] + Abar[6] * k7[i] + + Abar[7] * k8[i] + Abar[8] * k9[i] + Abar[9] * k10[i] + + Abar[10] * k11[i] + Abar[11] * k12[i] + Abar[12] * k13[i]; + y[i] += h * ksum8; + } + + /* Evaluate dydt_out[]. */ + + if (dydt_out != NULL) + { + int s = GSL_ODEIV_FN_EVAL (sys, t + h, y, dydt_out); + + if (s != GSL_SUCCESS) + { + /* Restore initial values */ + DBL_MEMCPY (y, y0, dim); + return s; + } + } + + /* error estimate */ + for (i = 0; i < dim; i++) + { + const double ksum8 = + Abar[0] * k1[i] + Abar[5] * k6[i] + Abar[6] * k7[i] + + Abar[7] * k8[i] + Abar[8] * k9[i] + Abar[9] * k10[i] + + Abar[10] * k11[i] + Abar[11] * k12[i] + Abar[12] * k13[i]; + const double ksum7 = + A[0] * k1[i] + A[5] * k6[i] + A[6] * k7[i] + A[7] * k8[i] + + A[8] * k9[i] + A[9] * k10[i] + A[10] * k11[i] + A[11] * k12[i]; + yerr[i] = h * (ksum7 - ksum8); + } + + return GSL_SUCCESS; +} + +static int +rk8pd_reset (void *vstate, size_t dim) +{ + rk8pd_state_t *state = (rk8pd_state_t *) vstate; + + int i; + + for (i = 0; i < 13; i++) + { + DBL_ZERO_MEMSET (state->k[i], dim); + } + + DBL_ZERO_MEMSET (state->y0, dim); + DBL_ZERO_MEMSET (state->ytmp, dim); + + return GSL_SUCCESS; +} + +static unsigned int +rk8pd_order (void *vstate) +{ + rk8pd_state_t *state = (rk8pd_state_t *) vstate; + state = 0; /* prevent warnings about unused parameters */ + return 8; +} + +static void +rk8pd_free (void *vstate) +{ + rk8pd_state_t *state = (rk8pd_state_t *) vstate; + int i; + + for (i = 0; i < 13; i++) + { + free (state->k[i]); + } + free (state->y0); + free (state->ytmp); + free (state); +} + +static const gsl_odeiv2_step_type rk8pd_type = { "rk8pd", /* name */ + 1, /* can use dydt_in */ + 1, /* gives exact dydt_out */ + &rk8pd_alloc, + &rk8pd_apply, + &stepper_set_driver_null, + &rk8pd_reset, + &rk8pd_order, + &rk8pd_free +}; + +const gsl_odeiv2_step_type *gsl_odeiv2_step_rk8pd = &rk8pd_type; diff --git a/gsl-2.5/ode-initval2/rk8pd.lo b/gsl-2.5/ode-initval2/rk8pd.lo new file mode 100644 index 00000000..7727e28b --- /dev/null +++ b/gsl-2.5/ode-initval2/rk8pd.lo @@ -0,0 +1,12 @@ +# rk8pd.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/rk8pd.o' + +# Name of the non-PIC object +non_pic_object='rk8pd.o' + diff --git a/gsl-2.5/ode-initval2/rkck.c b/gsl-2.5/ode-initval2/rkck.c new file mode 100644 index 00000000..ef5ce2b3 --- /dev/null +++ b/gsl-2.5/ode-initval2/rkck.c @@ -0,0 +1,377 @@ +/* ode-initval2/rkck.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Runge-Kutta 4(5), Cash-Karp */ + +/* Reference: Cash, J.R., Karp, A.H., ACM Transactions of Mathematical + Software, vol. 16 (1990) 201-222. */ + +/* Author: G. Jungman + */ +#include +#include +#include +#include +#include + +#include "odeiv_util.h" +#include "step_utils.c" + +/* Cash-Karp constants */ +static const double ah[] = { 1.0 / 5.0, 0.3, 3.0 / 5.0, 1.0, 7.0 / 8.0 }; + +static const double b21 = 1.0 / 5.0; +static const double b3[] = { 3.0 / 40.0, 9.0 / 40.0 }; +static const double b4[] = { 0.3, -0.9, 1.2 }; +static const double b5[] = { -11.0 / 54.0, 2.5, -70.0 / 27.0, 35.0 / 27.0 }; + +static const double b6[] = + { 1631.0 / 55296.0, 175.0 / 512.0, 575.0 / 13824.0, 44275.0 / 110592.0, + 253.0 / 4096.0 +}; + +static const double c1 = 37.0 / 378.0; +static const double c3 = 250.0 / 621.0; +static const double c4 = 125.0 / 594.0; +static const double c6 = 512.0 / 1771.0; + +/* These are the differences of fifth and fourth order coefficients + for error estimation */ + +static const double ec[] = { 0.0, + 37.0 / 378.0 - 2825.0 / 27648.0, + 0.0, + 250.0 / 621.0 - 18575.0 / 48384.0, + 125.0 / 594.0 - 13525.0 / 55296.0, + -277.0 / 14336.0, + 512.0 / 1771.0 - 0.25 +}; + +typedef struct +{ + double *k1; + double *k2; + double *k3; + double *k4; + double *k5; + double *k6; + double *y0; + double *ytmp; +} +rkck_state_t; + +static void * +rkck_alloc (size_t dim) +{ + rkck_state_t *state = (rkck_state_t *) malloc (sizeof (rkck_state_t)); + + if (state == 0) + { + GSL_ERROR_NULL ("failed to allocate space for rkck_state", GSL_ENOMEM); + } + + state->k1 = (double *) malloc (dim * sizeof (double)); + + if (state->k1 == 0) + { + free (state); + GSL_ERROR_NULL ("failed to allocate space for k1", GSL_ENOMEM); + } + + state->k2 = (double *) malloc (dim * sizeof (double)); + + if (state->k2 == 0) + { + free (state->k1); + free (state); + GSL_ERROR_NULL ("failed to allocate space for k2", GSL_ENOMEM); + } + + state->k3 = (double *) malloc (dim * sizeof (double)); + + if (state->k3 == 0) + { + free (state->k2); + free (state->k1); + free (state); + GSL_ERROR_NULL ("failed to allocate space for k3", GSL_ENOMEM); + } + + state->k4 = (double *) malloc (dim * sizeof (double)); + + if (state->k4 == 0) + { + free (state->k3); + free (state->k2); + free (state->k1); + free (state); + GSL_ERROR_NULL ("failed to allocate space for k4", GSL_ENOMEM); + } + + state->k5 = (double *) malloc (dim * sizeof (double)); + + if (state->k5 == 0) + { + free (state->k4); + free (state->k3); + free (state->k2); + free (state->k1); + free (state); + GSL_ERROR_NULL ("failed to allocate space for k5", GSL_ENOMEM); + } + + state->k6 = (double *) malloc (dim * sizeof (double)); + + if (state->k6 == 0) + { + free (state->k5); + free (state->k4); + free (state->k3); + free (state->k2); + free (state->k1); + free (state); + GSL_ERROR_NULL ("failed to allocate space for k6", GSL_ENOMEM); + } + + state->y0 = (double *) malloc (dim * sizeof (double)); + + if (state->y0 == 0) + { + free (state->k6); + free (state->k5); + free (state->k4); + free (state->k3); + free (state->k2); + free (state->k1); + free (state); + GSL_ERROR_NULL ("failed to allocate space for y0", GSL_ENOMEM); + } + + state->ytmp = (double *) malloc (dim * sizeof (double)); + + if (state->ytmp == 0) + { + free (state->y0); + free (state->k6); + free (state->k5); + free (state->k4); + free (state->k3); + free (state->k2); + free (state->k1); + free (state); + GSL_ERROR_NULL ("failed to allocate space for ytmp", GSL_ENOMEM); + } + + return state; +} + + +static int +rkck_apply (void *vstate, + size_t dim, + double t, + double h, + double y[], + double yerr[], + const double dydt_in[], + double dydt_out[], const gsl_odeiv2_system * sys) +{ + rkck_state_t *state = (rkck_state_t *) vstate; + + size_t i; + + double *const k1 = state->k1; + double *const k2 = state->k2; + double *const k3 = state->k3; + double *const k4 = state->k4; + double *const k5 = state->k5; + double *const k6 = state->k6; + double *const ytmp = state->ytmp; + double *const y0 = state->y0; + + DBL_MEMCPY (y0, y, dim); + + /* k1 step */ + if (dydt_in != NULL) + { + DBL_MEMCPY (k1, dydt_in, dim); + } + else + { + int s = GSL_ODEIV_FN_EVAL (sys, t, y, k1); + + if (s != GSL_SUCCESS) + { + return s; + } + } + + for (i = 0; i < dim; i++) + ytmp[i] = y[i] + b21 * h * k1[i]; + + /* k2 step */ + { + int s = GSL_ODEIV_FN_EVAL (sys, t + ah[0] * h, ytmp, k2); + + if (s != GSL_SUCCESS) + { + return s; + } + } + + for (i = 0; i < dim; i++) + ytmp[i] = y[i] + h * (b3[0] * k1[i] + b3[1] * k2[i]); + + /* k3 step */ + { + int s = GSL_ODEIV_FN_EVAL (sys, t + ah[1] * h, ytmp, k3); + + if (s != GSL_SUCCESS) + { + return s; + } + } + + for (i = 0; i < dim; i++) + ytmp[i] = y[i] + h * (b4[0] * k1[i] + b4[1] * k2[i] + b4[2] * k3[i]); + + /* k4 step */ + { + int s = GSL_ODEIV_FN_EVAL (sys, t + ah[2] * h, ytmp, k4); + + if (s != GSL_SUCCESS) + { + return s; + } + } + + for (i = 0; i < dim; i++) + ytmp[i] = + y[i] + h * (b5[0] * k1[i] + b5[1] * k2[i] + b5[2] * k3[i] + + b5[3] * k4[i]); + + /* k5 step */ + { + int s = GSL_ODEIV_FN_EVAL (sys, t + ah[3] * h, ytmp, k5); + + if (s != GSL_SUCCESS) + { + return s; + } + } + + for (i = 0; i < dim; i++) + ytmp[i] = + y[i] + h * (b6[0] * k1[i] + b6[1] * k2[i] + b6[2] * k3[i] + + b6[3] * k4[i] + b6[4] * k5[i]); + + /* k6 step and final sum */ + { + int s = GSL_ODEIV_FN_EVAL (sys, t + ah[4] * h, ytmp, k6); + + if (s != GSL_SUCCESS) + { + return s; + } + } + + for (i = 0; i < dim; i++) + { + const double d_i = c1 * k1[i] + c3 * k3[i] + c4 * k4[i] + c6 * k6[i]; + y[i] += h * d_i; + } + + /* Evaluate dydt_out[]. */ + + if (dydt_out != NULL) + { + int s = GSL_ODEIV_FN_EVAL (sys, t + h, y, dydt_out); + + if (s != GSL_SUCCESS) + { + /* Restore initial values */ + DBL_MEMCPY (y, y0, dim); + return s; + } + } + + /* difference between 4th and 5th order */ + for (i = 0; i < dim; i++) + { + yerr[i] = h * (ec[1] * k1[i] + ec[3] * k3[i] + ec[4] * k4[i] + + ec[5] * k5[i] + ec[6] * k6[i]); + } + + return GSL_SUCCESS; +} + + +static int +rkck_reset (void *vstate, size_t dim) +{ + rkck_state_t *state = (rkck_state_t *) vstate; + + DBL_ZERO_MEMSET (state->k1, dim); + DBL_ZERO_MEMSET (state->k2, dim); + DBL_ZERO_MEMSET (state->k3, dim); + DBL_ZERO_MEMSET (state->k4, dim); + DBL_ZERO_MEMSET (state->k5, dim); + DBL_ZERO_MEMSET (state->k6, dim); + DBL_ZERO_MEMSET (state->ytmp, dim); + DBL_ZERO_MEMSET (state->y0, dim); + + return GSL_SUCCESS; +} + +static unsigned int +rkck_order (void *vstate) +{ + rkck_state_t *state = (rkck_state_t *) vstate; + state = 0; /* prevent warnings about unused parameters */ + return 5; /* FIXME: should this be 4? */ +} + +static void +rkck_free (void *vstate) +{ + rkck_state_t *state = (rkck_state_t *) vstate; + + free (state->ytmp); + free (state->y0); + free (state->k6); + free (state->k5); + free (state->k4); + free (state->k3); + free (state->k2); + free (state->k1); + free (state); +} + +static const gsl_odeiv2_step_type rkck_type = { "rkck", /* name */ + 1, /* can use dydt_in */ + 1, /* gives exact dydt_out */ + &rkck_alloc, + &rkck_apply, + &stepper_set_driver_null, + &rkck_reset, + &rkck_order, + &rkck_free +}; + +const gsl_odeiv2_step_type *gsl_odeiv2_step_rkck = &rkck_type; diff --git a/gsl-2.5/ode-initval2/rkck.lo b/gsl-2.5/ode-initval2/rkck.lo new file mode 100644 index 00000000..e9ddbdc5 --- /dev/null +++ b/gsl-2.5/ode-initval2/rkck.lo @@ -0,0 +1,12 @@ +# rkck.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/rkck.o' + +# Name of the non-PIC object +non_pic_object='rkck.o' + diff --git a/gsl-2.5/ode-initval2/rkf45.c b/gsl-2.5/ode-initval2/rkf45.c new file mode 100644 index 00000000..1415055b --- /dev/null +++ b/gsl-2.5/ode-initval2/rkf45.c @@ -0,0 +1,381 @@ +/* ode-initval2/rkf45.c + * + * Copyright (C) 2001, 2004, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Runge-Kutta-Fehlberg 4(5)*/ + +/* Reference eg. Hairer, E., Norsett S.P., Wanner, G. Solving ordinary + differential equations I, Nonstiff Problems, 2nd revised edition, + Springer, 2000. +*/ + +#include +#include +#include +#include +#include + +#include "odeiv_util.h" +#include "step_utils.c" + +/* Runge-Kutta-Fehlberg coefficients. Zero elements left out */ + +static const double ah[] = + { 1.0 / 4.0, 3.0 / 8.0, 12.0 / 13.0, 1.0, 1.0 / 2.0 }; +static const double b3[] = { 3.0 / 32.0, 9.0 / 32.0 }; +static const double b4[] = + { 1932.0 / 2197.0, -7200.0 / 2197.0, 7296.0 / 2197.0 }; +static const double b5[] = + { 8341.0 / 4104.0, -32832.0 / 4104.0, 29440.0 / 4104.0, -845.0 / 4104.0 }; +static const double b6[] = + { -6080.0 / 20520.0, 41040.0 / 20520.0, -28352.0 / 20520.0, + 9295.0 / 20520.0, -5643.0 / 20520.0 +}; + +static const double c1 = 902880.0 / 7618050.0; +static const double c3 = 3953664.0 / 7618050.0; +static const double c4 = 3855735.0 / 7618050.0; +static const double c5 = -1371249.0 / 7618050.0; +static const double c6 = 277020.0 / 7618050.0; + +/* These are the differences of fifth and fourth order coefficients + for error estimation */ + +static const double ec[] = { 0.0, + 1.0 / 360.0, + 0.0, + -128.0 / 4275.0, + -2197.0 / 75240.0, + 1.0 / 50.0, + 2.0 / 55.0 +}; + +typedef struct +{ + double *k1; + double *k2; + double *k3; + double *k4; + double *k5; + double *k6; + double *y0; + double *ytmp; +} +rkf45_state_t; + +static void * +rkf45_alloc (size_t dim) +{ + rkf45_state_t *state = (rkf45_state_t *) malloc (sizeof (rkf45_state_t)); + + if (state == 0) + { + GSL_ERROR_NULL ("failed to allocate space for rkf45_state", GSL_ENOMEM); + } + + state->k1 = (double *) malloc (dim * sizeof (double)); + + if (state->k1 == 0) + { + free (state); + GSL_ERROR_NULL ("failed to allocate space for k1", GSL_ENOMEM); + } + + state->k2 = (double *) malloc (dim * sizeof (double)); + + if (state->k2 == 0) + { + free (state->k1); + free (state); + GSL_ERROR_NULL ("failed to allocate space for k2", GSL_ENOMEM); + } + + state->k3 = (double *) malloc (dim * sizeof (double)); + + if (state->k3 == 0) + { + free (state->k2); + free (state->k1); + free (state); + GSL_ERROR_NULL ("failed to allocate space for k3", GSL_ENOMEM); + } + + state->k4 = (double *) malloc (dim * sizeof (double)); + + if (state->k4 == 0) + { + free (state->k3); + free (state->k2); + free (state->k1); + free (state); + GSL_ERROR_NULL ("failed to allocate space for k4", GSL_ENOMEM); + } + + state->k5 = (double *) malloc (dim * sizeof (double)); + + if (state->k5 == 0) + { + free (state->k4); + free (state->k3); + free (state->k2); + free (state->k1); + free (state); + GSL_ERROR_NULL ("failed to allocate space for k5", GSL_ENOMEM); + } + + state->k6 = (double *) malloc (dim * sizeof (double)); + + if (state->k6 == 0) + { + free (state->k5); + free (state->k4); + free (state->k3); + free (state->k2); + free (state->k1); + free (state); + GSL_ERROR_NULL ("failed to allocate space for k6", GSL_ENOMEM); + } + + state->y0 = (double *) malloc (dim * sizeof (double)); + + if (state->y0 == 0) + { + free (state->k6); + free (state->k5); + free (state->k4); + free (state->k3); + free (state->k2); + free (state->k1); + free (state); + GSL_ERROR_NULL ("failed to allocate space for y0", GSL_ENOMEM); + } + + state->ytmp = (double *) malloc (dim * sizeof (double)); + + if (state->ytmp == 0) + { + free (state->y0); + free (state->k6); + free (state->k5); + free (state->k4); + free (state->k3); + free (state->k2); + free (state->k1); + free (state); + GSL_ERROR_NULL ("failed to allocate space for ytmp", GSL_ENOMEM); + } + + return state; +} + + +static int +rkf45_apply (void *vstate, + size_t dim, + double t, + double h, + double y[], + double yerr[], + const double dydt_in[], + double dydt_out[], const gsl_odeiv2_system * sys) +{ + rkf45_state_t *state = (rkf45_state_t *) vstate; + + size_t i; + + double *const k1 = state->k1; + double *const k2 = state->k2; + double *const k3 = state->k3; + double *const k4 = state->k4; + double *const k5 = state->k5; + double *const k6 = state->k6; + double *const ytmp = state->ytmp; + double *const y0 = state->y0; + + DBL_MEMCPY (y0, y, dim); + + /* k1 step */ + if (dydt_in != NULL) + { + DBL_MEMCPY (k1, dydt_in, dim); + } + else + { + int s = GSL_ODEIV_FN_EVAL (sys, t, y, k1); + + if (s != GSL_SUCCESS) + { + return s; + } + } + + for (i = 0; i < dim; i++) + ytmp[i] = y[i] + ah[0] * h * k1[i]; + + /* k2 step */ + { + int s = GSL_ODEIV_FN_EVAL (sys, t + ah[0] * h, ytmp, k2); + + if (s != GSL_SUCCESS) + { + return s; + } + } + + for (i = 0; i < dim; i++) + ytmp[i] = y[i] + h * (b3[0] * k1[i] + b3[1] * k2[i]); + + /* k3 step */ + { + int s = GSL_ODEIV_FN_EVAL (sys, t + ah[1] * h, ytmp, k3); + + if (s != GSL_SUCCESS) + { + return s; + } + } + + for (i = 0; i < dim; i++) + ytmp[i] = y[i] + h * (b4[0] * k1[i] + b4[1] * k2[i] + b4[2] * k3[i]); + + /* k4 step */ + { + int s = GSL_ODEIV_FN_EVAL (sys, t + ah[2] * h, ytmp, k4); + + if (s != GSL_SUCCESS) + { + return s; + } + } + + for (i = 0; i < dim; i++) + ytmp[i] = + y[i] + h * (b5[0] * k1[i] + b5[1] * k2[i] + b5[2] * k3[i] + + b5[3] * k4[i]); + + /* k5 step */ + { + int s = GSL_ODEIV_FN_EVAL (sys, t + ah[3] * h, ytmp, k5); + + if (s != GSL_SUCCESS) + { + return s; + } + } + + for (i = 0; i < dim; i++) + ytmp[i] = + y[i] + h * (b6[0] * k1[i] + b6[1] * k2[i] + b6[2] * k3[i] + + b6[3] * k4[i] + b6[4] * k5[i]); + + /* k6 step and final sum */ + { + int s = GSL_ODEIV_FN_EVAL (sys, t + ah[4] * h, ytmp, k6); + + if (s != GSL_SUCCESS) + { + return s; + } + } + + for (i = 0; i < dim; i++) + { + const double d_i = + c1 * k1[i] + c3 * k3[i] + c4 * k4[i] + c5 * k5[i] + c6 * k6[i]; + y[i] += h * d_i; + } + + /* Derivatives at output */ + + if (dydt_out != NULL) + { + int s = GSL_ODEIV_FN_EVAL (sys, t + h, y, dydt_out); + + if (s != GSL_SUCCESS) + { + /* Restore initial values */ + DBL_MEMCPY (y, y0, dim); + + return s; + } + } + + /* difference between 4th and 5th order */ + for (i = 0; i < dim; i++) + { + yerr[i] = h * (ec[1] * k1[i] + ec[3] * k3[i] + ec[4] * k4[i] + + ec[5] * k5[i] + ec[6] * k6[i]); + } + + return GSL_SUCCESS; +} + + +static int +rkf45_reset (void *vstate, size_t dim) +{ + rkf45_state_t *state = (rkf45_state_t *) vstate; + + DBL_ZERO_MEMSET (state->k1, dim); + DBL_ZERO_MEMSET (state->k2, dim); + DBL_ZERO_MEMSET (state->k3, dim); + DBL_ZERO_MEMSET (state->k4, dim); + DBL_ZERO_MEMSET (state->k5, dim); + DBL_ZERO_MEMSET (state->k6, dim); + DBL_ZERO_MEMSET (state->ytmp, dim); + DBL_ZERO_MEMSET (state->y0, dim); + + return GSL_SUCCESS; +} + +static unsigned int +rkf45_order (void *vstate) +{ + rkf45_state_t *state = (rkf45_state_t *) vstate; + state = 0; /* prevent warnings about unused parameters */ + return 5; +} + +static void +rkf45_free (void *vstate) +{ + rkf45_state_t *state = (rkf45_state_t *) vstate; + + free (state->ytmp); + free (state->y0); + free (state->k6); + free (state->k5); + free (state->k4); + free (state->k3); + free (state->k2); + free (state->k1); + free (state); +} + +static const gsl_odeiv2_step_type rkf45_type = { "rkf45", /* name */ + 1, /* can use dydt_in */ + 1, /* gives exact dydt_out */ + &rkf45_alloc, + &rkf45_apply, + &stepper_set_driver_null, + &rkf45_reset, + &rkf45_order, + &rkf45_free +}; + +const gsl_odeiv2_step_type *gsl_odeiv2_step_rkf45 = &rkf45_type; diff --git a/gsl-2.5/ode-initval2/rkf45.lo b/gsl-2.5/ode-initval2/rkf45.lo new file mode 100644 index 00000000..c7fdd114 --- /dev/null +++ b/gsl-2.5/ode-initval2/rkf45.lo @@ -0,0 +1,12 @@ +# rkf45.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/rkf45.o' + +# Name of the non-PIC object +non_pic_object='rkf45.o' + diff --git a/gsl-2.5/ode-initval2/rksubs.c b/gsl-2.5/ode-initval2/rksubs.c new file mode 100644 index 00000000..4b6a664c --- /dev/null +++ b/gsl-2.5/ode-initval2/rksubs.c @@ -0,0 +1,52 @@ +/* ode-initval2/rksubs.c + * + * Copyright (C) 2008, 2009, 2010 Tuomo Keskitalo + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +static int +rksubs (double y[], const double h, const double y0[], const double fY[], + const double b[], const size_t stage, const size_t dim) +{ + /* The final substitution step in Runge-Kutta equation: + Calculates new values y by substituting the value of step size + (h), current initial values of y (y0), function f values at + Runge-Kutta points (fY), Runge-Kutta b-coefficients (b) and + method stage (stage) into the equation + + y = y0 + h * sum j=1..stage (b_j * fY_j) + + dim is the number of ODEs. + */ + + size_t i, j; + + for (i = 0; i < dim; i++) + { + y[i] = 0.0; + + for (j = 0; j < stage; j++) + y[i] += b[j] * fY[j * dim + i]; + } + + for (i = 0; i < dim; i++) + { + y[i] *= h; + y[i] += y0[i]; + } + + return GSL_SUCCESS; +} diff --git a/gsl-2.5/ode-initval2/step.c b/gsl-2.5/ode-initval2/step.c new file mode 100644 index 00000000..4c67037b --- /dev/null +++ b/gsl-2.5/ode-initval2/step.c @@ -0,0 +1,104 @@ +/* ode-initval/odeiv.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman + */ +#include +#include +#include +#include + +gsl_odeiv2_step * +gsl_odeiv2_step_alloc (const gsl_odeiv2_step_type * T, size_t dim) +{ + gsl_odeiv2_step *s = (gsl_odeiv2_step *) malloc (sizeof (gsl_odeiv2_step)); + + if (s == 0) + { + GSL_ERROR_NULL ("failed to allocate space for ode struct", GSL_ENOMEM); + }; + + s->type = T; + s->dimension = dim; + + s->state = s->type->alloc (dim); + + if (s->state == 0) + { + free (s); /* exception in constructor, avoid memory leak */ + + GSL_ERROR_NULL ("failed to allocate space for ode state", GSL_ENOMEM); + }; + + return s; +} + +const char * +gsl_odeiv2_step_name (const gsl_odeiv2_step * s) +{ + return s->type->name; +} + +unsigned int +gsl_odeiv2_step_order (const gsl_odeiv2_step * s) +{ + return s->type->order (s->state); +} + +int +gsl_odeiv2_step_apply (gsl_odeiv2_step * s, + double t, + double h, + double y[], + double yerr[], + const double dydt_in[], + double dydt_out[], const gsl_odeiv2_system * dydt) +{ + return s->type->apply (s->state, s->dimension, t, h, y, yerr, dydt_in, + dydt_out, dydt); +} + +int +gsl_odeiv2_step_reset (gsl_odeiv2_step * s) +{ + return s->type->reset (s->state, s->dimension); +} + +void +gsl_odeiv2_step_free (gsl_odeiv2_step * s) +{ + RETURN_IF_NULL (s); + s->type->free (s->state); + free (s); +} + +int +gsl_odeiv2_step_set_driver (gsl_odeiv2_step * s, const gsl_odeiv2_driver * d) +{ + if (d != NULL) + { + s->type->set_driver (s->state, d); + } + else + { + GSL_ERROR_NULL ("driver pointer is null", GSL_EFAULT); + } + + return GSL_SUCCESS; +} diff --git a/gsl-2.5/ode-initval2/step.lo b/gsl-2.5/ode-initval2/step.lo new file mode 100644 index 00000000..a661131b --- /dev/null +++ b/gsl-2.5/ode-initval2/step.lo @@ -0,0 +1,12 @@ +# step.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/step.o' + +# Name of the non-PIC object +non_pic_object='step.o' + diff --git a/gsl-2.5/ode-initval2/step_utils.c b/gsl-2.5/ode-initval2/step_utils.c new file mode 100644 index 00000000..9b71be4e --- /dev/null +++ b/gsl-2.5/ode-initval2/step_utils.c @@ -0,0 +1,27 @@ +/* ode-initval2/step_utils.c + * + * Copyright (C) 2009 Tuomo Keskitalo + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +static int +stepper_set_driver_null (void *vstate, const gsl_odeiv2_driver * d) +{ + /* Dummy set function for those steppers that do not + need pointer to driver object. */ + + return GSL_SUCCESS; +} diff --git a/gsl-2.5/ode-initval2/test b/gsl-2.5/ode-initval2/test new file mode 100755 index 00000000..dd3598e1 --- /dev/null +++ b/gsl-2.5/ode-initval2/test @@ -0,0 +1,228 @@ +#! /bin/sh + +# test - temporary wrapper script for .libs/test +# Generated by libtool (GNU libtool) 2.4.2 +# +# The test program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s/\([`"$\\]\)/\\\1/g' + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command="(cd /home/groups/kipac/chto/package/gsl/gsl-2.5/ode-initval2; LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LIBRARY_PATH; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; LD_LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/fftw/include:/home/users/chto/lib/fftw/lib:/home/users/chto/lib/healpix/lib:/home/users/chto/lib/namaster/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/include:/home/users/chto/cpp/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LD_LIBRARY_PATH; PATH=/share/software/user/open/curl/7.54.0/bin:/share/software/user/open/libressl/2.5.3/bin:/home/users/chto/lib/cfitsio:/home/users/chto/lib/cfitsio/include:/home/users/chto/lib:/home/users/chto/bin/bin:/home/users/chto/bin:/home/users/chto/.texlive/bin/x86_64-linux:/home/groups/kipac/chto/anaconda2/envs/newenv3/bin:/home/users/chto/.local/bin/include:/home/users/chto/.local/bin/lib:/home/users/chto/.local/bin:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/bin64:/share/software/user/open/fftw/3.3.6/bin:/home/groups/kipac/chto/anaconda2/condabin:/share/software/user/restricted/ifort/2019/bin:/share/software/user/open/gsl/2.3/bin:/share/software/user/srcc/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/dell/srvadmin/bin:/opt/dell/srvadmin/iSM/bin:/home/users/chto/bin; export PATH; gcc -g -O2 -o \$progdir/\$file test.o ./.libs/libgslodeiv2.a ../linalg/.libs/libgsllinalg.a ../blas/.libs/libgslblas.a ../cblas/.libs/libgslcblas.so ../matrix/.libs/libgslmatrix.a ../permutation/.libs/libgslpermutation.a ../vector/.libs/libgslvector.a ../block/.libs/libgslblock.a ../complex/.libs/libgslcomplex.a ../ieee-utils/.libs/libgslieeeutils.a ../err/.libs/libgslerr.a ../test/.libs/libgsltest.a ../sys/.libs/libgslsys.a ../utils/.libs/libutils.a -lm -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/cblas/.libs -Wl,-rpath -Wl,/usr/local/lib)" + +# This environment variable determines our operation mode. +if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then + # install mode needs the following variables: + generated_by_libtool_version='2.4.2' + notinst_deplibs=' ../cblas/libgslcblas.la' +else + # When we are sourced in execute mode, $file and $ECHO are already set. + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + file="$0" + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + ECHO="printf %s\\n" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ which is used only on +# windows platforms, and (c) all begin with the string --lt- +# (application programs are unlikely to have options which match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's ../libtool value, followed by no. +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=$0 + shift + for lt_opt + do + case "$lt_opt" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%/[^/]*$%%'` + test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=. + lt_dump_F=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%^.*/%%'` + cat "$lt_dump_D/$lt_dump_F" + exit 0 + ;; + --lt-*) + $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n "$lt_option_debug"; then + echo "test:test:${LINENO}: libtool wrapper (GNU libtool) 2.4.2" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + $ECHO "test:test:${LINENO}: newargv[$lt_dump_args_N]: $lt_arg" + lt_dump_args_N=`expr $lt_dump_args_N + 1` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ + + if test -n "$lt_option_debug"; then + $ECHO "test:test:${LINENO}: newargv[0]: $progdir/$program" 1>&2 + func_lt_dump_args ${1+"$@"} 1>&2 + fi + exec "$progdir/$program" ${1+"$@"} + + $ECHO "$0: cannot exec $program $*" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from $@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case " $* " in + *\ --lt-*) + for lt_wr_arg + do + case $lt_wr_arg in + --lt-*) ;; + *) set x "$@" "$lt_wr_arg"; shift;; + esac + shift + done ;; + esac + func_exec_program_core ${1+"$@"} +} + + # Parse options + func_parse_lt_options "$0" ${1+"$@"} + + # Find the directory that this script lives in. + thisdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + test "x$thisdir" = "x$file" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=`ls -ld "$file" | /usr/bin/sed -n 's/.*-> //p'` + while test -n "$file"; do + destdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + + # If there was a directory component, then change thisdir. + if test "x$destdir" != "x$file"; then + case "$destdir" in + [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;; + *) thisdir="$thisdir/$destdir" ;; + esac + fi + + file=`$ECHO "$file" | /usr/bin/sed 's%^.*/%%'` + file=`ls -ld "$thisdir/$file" | /usr/bin/sed -n 's/.*-> //p'` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no + if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then + # special case for '.' + if test "$thisdir" = "."; then + thisdir=`pwd` + fi + # remove .libs from thisdir + case "$thisdir" in + *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /usr/bin/sed 's%[\\/][^\\/]*$%%'` ;; + .libs ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=`cd "$thisdir" && pwd` + test -n "$absdir" && thisdir="$absdir" + + program=lt-'test' + progdir="$thisdir/.libs" + + if test ! -f "$progdir/$program" || + { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /usr/bin/sed 1q`; \ + test "X$file" != "X$progdir/$program"; }; then + + file="$$-$program" + + if test ! -d "$progdir"; then + mkdir "$progdir" + else + rm -f "$progdir/$file" + fi + + # relink executable if necessary + if test -n "$relink_command"; then + if relink_command_output=`eval $relink_command 2>&1`; then : + else + printf %s\n "$relink_command_output" >&2 + rm -f "$progdir/$file" + exit 1 + fi + fi + + mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null || + { rm -f "$progdir/$program"; + mv -f "$progdir/$file" "$progdir/$program"; } + rm -f "$progdir/$file" + fi + + if test -f "$progdir/$program"; then + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + # Run the actual program with our arguments. + func_exec_program ${1+"$@"} + fi + else + # The program doesn't exist. + $ECHO "$0: error: \`$progdir/$program' does not exist" 1>&2 + $ECHO "This script is just a wrapper for $program." 1>&2 + $ECHO "See the libtool documentation for more information." 1>&2 + exit 1 + fi +fi diff --git a/gsl-2.5/ode-initval2/test-suite.log b/gsl-2.5/ode-initval2/test-suite.log new file mode 100644 index 00000000..d798e265 --- /dev/null +++ b/gsl-2.5/ode-initval2/test-suite.log @@ -0,0 +1,14 @@ +========================================== + gsl 2.5: ode-initval2/test-suite.log +========================================== + +# TOTAL: 1 +# PASS: 1 +# SKIP: 0 +# XFAIL: 0 +# FAIL: 0 +# XPASS: 0 +# ERROR: 0 + +.. contents:: :depth: 2 + diff --git a/gsl-2.5/ode-initval2/test.c b/gsl-2.5/ode-initval2/test.c new file mode 100644 index 00000000..ae87bd0e --- /dev/null +++ b/gsl-2.5/ode-initval2/test.c @@ -0,0 +1,2538 @@ +/* ode-initval/test.c + * + * Copyright (C) 2009, 2010 Tuomo Keskitalo + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Some functions and tests based on test.c by G. Jungman. */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "odeiv_util.h" + +/* Maximum number of ODE equations */ +#define MAXEQ 15 + +/* Maximum number of ODE solvers */ +#define MAXNS 20 + +/* Track number of function and jacobian evaluations in tests + with global variables + */ +int nfe; +int nje; + +/**********************************************************/ +/* ODE test system definitions */ +/**********************************************************/ + +/* RHS for f=2. Solution y = 2 * t + t0 */ + +int +rhs_linear (double t, const double y[], double f[], void *params) +{ + extern int nfe; + nfe += 1; + + f[0] = 2.0; + + return GSL_SUCCESS; +} + +int +jac_linear (double t, const double y[], double *dfdy, double dfdt[], + void *params) +{ + extern int nje; + nje += 1; + + dfdy[0] = 0.0; + dfdt[0] = 0.0; + + return GSL_SUCCESS; +} + +gsl_odeiv2_system rhs_func_lin = { + rhs_linear, + jac_linear, + 1, + 0 +}; + +/* RHS for f=y. Equals y=exp(t) with initial value y(0)=1.0 */ + +int +rhs_exp (double t, const double y[], double f[], void *params) +{ + extern int nfe; + nfe += 1; + + f[0] = y[0]; + + return GSL_SUCCESS; +} + +int +jac_exp (double t, const double y[], double *dfdy, double dfdt[], + void *params) +{ + extern int nje; + nje += 1; + + dfdy[0] = y[0]; + dfdt[0] = 0.0; + + return GSL_SUCCESS; +} + +gsl_odeiv2_system rhs_func_exp = { + rhs_exp, + jac_exp, + 1, + 0 +}; + +int +rhs_sin (double t, const double y[], double f[], void *params) +{ + extern int nfe; + nfe += 1; + + f[0] = -y[1]; + f[1] = y[0]; + + return GSL_SUCCESS; +} + +int +jac_sin (double t, const double y[], double *dfdy, double dfdt[], + void *params) +{ + extern int nje; + nje += 1; + + dfdy[0] = 0.0; + dfdy[1] = -1.0; + dfdy[2] = 1.0; + dfdy[3] = 0.0; + + dfdt[0] = 0.0; + dfdt[1] = 0.0; + + return GSL_SUCCESS; +} + +gsl_odeiv2_system rhs_func_sin = { + rhs_sin, + jac_sin, + 2, + 0 +}; + +/* Sine/cosine with random failures */ + +static int rhs_xsin_reset = 0; +static int jac_xsin_reset = 0; + +int +rhs_xsin (double t, const double y[], double f[], void *params) +{ + static int n = 0, m = 0; + extern int nfe; + nfe += 1; + + if (rhs_xsin_reset) + { + rhs_xsin_reset = 0; + n = 0; + m = 1; + } + n++; + + if (n >= m) + { + m = n * 1.3; + return GSL_EFAILED; + } + + if (n > 40 && n < 65) + { + f[0] = GSL_NAN; + f[1] = GSL_NAN; + return GSL_EFAILED; + } + + f[0] = -y[1]; + f[1] = y[0]; + + return GSL_SUCCESS; +} + +int +jac_xsin (double t, const double y[], double *dfdy, double dfdt[], + void *params) +{ + static int n = 0; + extern int nje; + nje += 1; + + if (jac_xsin_reset) + { + jac_xsin_reset = 0; + n = 0; + } + n++; + + if (n > 50 && n < 55) + { + dfdy[0] = GSL_NAN; + dfdy[1] = GSL_NAN; + dfdy[2] = GSL_NAN; + dfdy[3] = GSL_NAN; + + dfdt[0] = GSL_NAN; + dfdt[1] = GSL_NAN; + return GSL_EFAILED; + } + + dfdy[0] = 0.0; + dfdy[1] = -1.0; + dfdy[2] = 1.0; + dfdy[3] = 0.0; + + dfdt[0] = 0.0; + dfdt[1] = 0.0; + + return GSL_SUCCESS; +} + +gsl_odeiv2_system rhs_func_xsin = { + rhs_xsin, + jac_xsin, + 2, + 0 +}; + +/* RHS for classic stiff example + dy0 / dt = 998 * y0 + 1998 * y1 y0(0) = 1.0 + dy1 / dt = -999 * y0 - 1999 * y1 y1(0) = 0.0 + + solution is + y0 = 2 * exp(-t) - exp(-1000 * t) + y1 = - exp(-t) + exp(-1000 * t) +*/ + +int +rhs_stiff (double t, const double y[], double f[], void *params) +{ + extern int nfe; + nfe += 1; + + f[0] = 998.0 * y[0] + 1998.0 * y[1]; + f[1] = -999.0 * y[0] - 1999.0 * y[1]; + + return GSL_SUCCESS; +} + +int +jac_stiff (double t, const double y[], double *dfdy, double dfdt[], + void *params) +{ + extern int nje; + nje += 1; + + dfdy[0] = 998.0; + dfdy[1] = 1998.0; + dfdy[2] = -999.0; + dfdy[3] = -1999.0; + + dfdt[0] = 0.0; + dfdt[1] = 0.0; + + return GSL_SUCCESS; +} + +gsl_odeiv2_system rhs_func_stiff = { + rhs_stiff, + jac_stiff, + 2, + 0 +}; + +/* Cosine function */ + +int +rhs_cos (double t, const double *y, double *dydt, void *params) +{ + dydt[0] = cos (t); + return GSL_SUCCESS; +} + +int +jac_cos (double t, const double y[], double *dfdy, double dfdt[], + void *params) +{ + dfdy[0] = 0.0; + dfdt[0] = -sin (t); + + return GSL_SUCCESS; +} + +gsl_odeiv2_system rhs_func_cos = { + rhs_cos, + jac_cos, + 1, + 0 +}; + +/* Broken problem for testing numerical problems in user function that + leads to decrease of step size in gsl_odeiv2_evolve below machine + precision. + */ + +int +rhs_broken (double t, const double y[], double f[], void *params) +{ + if (t < 10.0) + { + f[0] = 1.0; + } + + else + { + f[0] = GSL_NAN; + return 123; + } + + return GSL_SUCCESS; +} + +int +jac_broken (double t, const double y[], double *dfdy, double dfdt[], + void *params) +{ + if (t < 10.0) + { + dfdy[0] = 0.0; + dfdt[0] = 0.0; + } + else + { + dfdy[0] = GSL_NAN; + dfdt[0] = GSL_NAN; + return 123; + } + + return GSL_SUCCESS; +} + +gsl_odeiv2_system rhs_func_broken = { + rhs_broken, + jac_broken, + 1, + 0 +}; + +/* Immediate user break (at t > 1.5) test sine system */ + +int +rhs_sin_ub (double t, const double y[], double f[], void *params) +{ + extern int nfe; + nfe += 1; + + f[0] = -y[1]; + f[1] = y[0]; + + if (t > 1.5) + { + return GSL_EBADFUNC; + } + + return GSL_SUCCESS; +} + +int +jac_sin_ub (double t, const double y[], double *dfdy, double dfdt[], + void *params) +{ + extern int nje; + nje += 1; + + dfdy[0] = 0.0; + dfdy[1] = -1.0; + dfdy[2] = 1.0; + dfdy[3] = 0.0; + + dfdt[0] = 0.0; + dfdt[1] = 0.0; + + if (t > 1.5) + { + return GSL_EBADFUNC; + } + + return GSL_SUCCESS; +} + +gsl_odeiv2_system rhs_func_sin_ub = { + rhs_sin_ub, + jac_sin_ub, + 2, + 0 +}; + +/* Badly scaled random function */ + +int +rhs_br (double t, const double *y, double *dydt, void *params) +{ + dydt[0] = (rand () - RAND_MAX / 2) * 2e100; + return GSL_SUCCESS; +} + +int +jac_br (double t, const double y[], double *dfdy, double dfdt[], void *params) +{ + dfdy[0] = (rand () - RAND_MAX / 2) * 2e100; + dfdt[0] = (rand () - RAND_MAX / 2) * 2e100; + + return GSL_SUCCESS; +} + +gsl_odeiv2_system rhs_func_br = { + rhs_br, + jac_br, + 1, + 0 +}; + +/* stepfn and stepfn2 based on testcases from Frank Reininghaus + +*/ + +/* Derivative change at t=0, small derivative */ + +int +rhs_stepfn (double t, const double *y, double *dydt, void *params) +{ + if (t >= 1.0) + dydt[0] = 1; + else + dydt[0] = 0; + + return GSL_SUCCESS; +} + +int +jac_stepfn (double t, const double y[], double *dfdy, double dfdt[], + void *params) +{ + dfdy[0] = 0.0; + dfdt[0] = 0.0; + + return GSL_SUCCESS; +} + +gsl_odeiv2_system rhs_func_stepfn = { + rhs_stepfn, + jac_stepfn, + 1, + 0 +}; + +/* Derivative change at t=0, large derivative */ + +int +rhs_stepfn2 (double t, const double *y, double *dydt, void *params) +{ + if (t >= 0.0) + dydt[0] = 1e300; + else + dydt[0] = 0; + + return GSL_SUCCESS; +} + +gsl_odeiv2_system rhs_func_stepfn2 = { + rhs_stepfn2, + jac_stepfn, + 1, + 0 +}; + +/* Volterra-Lotka predator-prey model + f0 = (a - b * y1) * y0 y0(0) = 2.725 + f1 = (-c + d * y0) * y1 y1(0) = 1.0 + */ + +int +rhs_vl (double t, const double y[], double f[], void *params) +{ + const double a = -1.0; + const double b = -1.0; + const double c = -2.0; + const double d = -1.0; + + extern int nfe; + nfe += 1; + + f[0] = (a - b * y[1]) * y[0]; + f[1] = (-c + d * y[0]) * y[1]; + + return GSL_SUCCESS; +} + +int +jac_vl (double t, const double y[], double *dfdy, double dfdt[], void *params) +{ + const double a = -1.0; + const double b = -1.0; + const double c = -2.0; + const double d = -1.0; + + extern int nje; + nje += 1; + + dfdy[0] = a - b * y[1]; + dfdy[1] = -b * y[0]; + dfdy[2] = d * y[1]; + dfdy[3] = -c + d * y[0]; + + dfdt[0] = 0.0; + dfdt[1] = 0.0; + + return GSL_SUCCESS; +} + +gsl_odeiv2_system rhs_func_vl = { + rhs_vl, + jac_vl, + 2, + 0 +}; + +/* van Der Pol oscillator + f0 = y1 y0(0) = 1.0 + f1 = -y0 + mu * y1 * (1 - y0^2) y1(0) = 0.0 +*/ + +int +rhs_vanderpol (double t, const double y[], double f[], void *params) +{ + const double mu = 10.0; + + extern int nfe; + nfe += 1; + + f[0] = y[1]; + f[1] = -y[0] + mu * y[1] * (1.0 - y[0] * y[0]); + + return GSL_SUCCESS; +} + +int +jac_vanderpol (double t, const double y[], double *dfdy, double dfdt[], + void *params) +{ + const double mu = 10.0; + + extern int nje; + nje += 1; + + dfdy[0] = 0.0; + dfdy[1] = 1.0; + dfdy[2] = -2.0 * mu * y[0] * y[1] - 1.0; + dfdy[3] = mu * (1.0 - y[0] * y[0]); + + dfdt[0] = 0.0; + dfdt[1] = 0.0; + + return GSL_SUCCESS; +} + +gsl_odeiv2_system rhs_func_vanderpol = { + rhs_vanderpol, + jac_vanderpol, + 2, + 0 +}; + +/* Stiff trigonometric example + f0 = -50 * (y0 - cos(t)) y0(0) = 0.0 + */ + +int +rhs_stifftrig (double t, const double y[], double f[], void *params) +{ + extern int nfe; + nfe += 1; + + f[0] = -50 * (y[0] - cos (t)); + + return GSL_SUCCESS; +} + +int +jac_stifftrig (double t, const double y[], double *dfdy, double dfdt[], + void *params) +{ + extern int nje; + nje += 1; + + dfdy[0] = -50; + + dfdt[0] = -50 * sin (t); + + return GSL_SUCCESS; +} + +gsl_odeiv2_system rhs_func_stifftrig = { + rhs_stifftrig, + jac_stifftrig, + 1, + 0 +}; + +/* The Oregonator - chemical Belusov-Zhabotinskii reaction + y0(0) = 1.0, y1(0) = 2.0, y2(0) = 3.0 +*/ + +int +rhs_oregonator (double t, const double y[], double f[], void *params) +{ + const double c1 = 77.27; + const double c2 = 8.375e-6; + const double c3 = 0.161; + + extern int nfe; + nfe += 1; + + f[0] = c1 * (y[1] + y[0] * (1 - c2 * y[0] - y[1])); + f[1] = 1 / c1 * (y[2] - y[1] * (1 + y[0])); + f[2] = c3 * (y[0] - y[2]); + + return GSL_SUCCESS; +} + +int +jac_oregonator (double t, const double y[], double *dfdy, double dfdt[], + void *params) +{ + const double c1 = 77.27; + const double c2 = 8.375e-6; + const double c3 = 0.161; + + extern int nje; + nje += 1; + + dfdy[0] = c1 * (1 - 2 * c2 * y[0] - y[1]); + dfdy[1] = c1 * (1 - y[0]); + dfdy[2] = 0.0; + + dfdy[3] = 1 / c1 * (-y[1]); + dfdy[4] = 1 / c1 * (-1 - y[0]); + dfdy[5] = 1 / c1; + + dfdy[6] = c3; + dfdy[7] = 0.0; + dfdy[8] = -c3; + + dfdt[0] = 0.0; + dfdt[1] = 0.0; + dfdt[2] = 0.0; + + return GSL_SUCCESS; +} + +gsl_odeiv2_system rhs_func_oregonator = { + rhs_oregonator, + jac_oregonator, + 3, + 0 +}; + +/* E5 - a stiff badly scaled chemical problem by Enright, Hull & + Lindberg (1975): Comparing numerical methods for stiff systems of + ODEs. BIT, vol. 15, pp. 10-48. + + f0 = -a * y0 - b * y0 * y2 y0(0) = 1.76e-3 + f1 = a * y0 - m * c * y1 * y2 y1(0) = 0.0 + f2 = a * y0 - b * y0 * y2 - m * c * y1 * y2 + c * y3 y2(0) = 0.0 + f3 = b * y0 * y2 - c * y3 y3(0) = 0.0 + */ + +int +rhs_e5 (double t, const double y[], double f[], void *params) +{ + const double a = 7.89e-10; + const double b = 1.1e7; + const double c = 1.13e3; + const double m = 1.0e6; + + extern int nfe; + nfe += 1; + + f[0] = -a * y[0] - b * y[0] * y[2]; + f[1] = a * y[0] - m * c * y[1] * y[2]; + f[3] = b * y[0] * y[2] - c * y[3]; + f[2] = f[1] - f[3]; + + return GSL_SUCCESS; +} + +int +jac_e5 (double t, const double y[], double *dfdy, double dfdt[], void *params) +{ + const double a = 7.89e-10; + const double b = 1.1e7; + const double c = 1.13e3; + const double m = 1.0e6; + + extern int nje; + nje += 1; + + dfdy[0] = -a - b * y[2]; + dfdy[1] = 0.0; + dfdy[2] = -b * y[0]; + dfdy[3] = 0.0; + + dfdy[4] = a; + dfdy[5] = -m * c * y[2]; + dfdy[6] = -m * c * y[1]; + dfdy[7] = 0.0; + + dfdy[8] = a - b * y[2]; + dfdy[9] = -m * c * y[2]; + dfdy[10] = -b * y[0] - m * c * y[1]; + dfdy[11] = c; + + dfdy[12] = b * y[2]; + dfdy[13] = 0.0; + dfdy[14] = b * y[0]; + dfdy[15] = -c; + + dfdt[0] = 0.0; + dfdt[1] = 0.0; + dfdt[2] = 0.0; + dfdt[3] = 0.0; + + return GSL_SUCCESS; +} + +gsl_odeiv2_system rhs_func_e5 = { + rhs_e5, + jac_e5, + 4, + 0 +}; + +/* Chemical reaction system of H.H. Robertson (1966): The solution of + a set of reaction rate equations. In: J. Walsh, ed.: Numer. + Anal., an Introduction, Academ. Press, pp. 178-182. + + f0 = -a * y0 + b * y1 * y2 y0(0) = 1.0 + f1 = a * y0 - b * y1 * y2 - c * y1^2 y1(0) = 0.0 + f2 = c * y1^2 y2(0) = 0.0 + */ + +int +rhs_robertson (double t, const double y[], double f[], void *params) +{ + const double a = 0.04; + const double b = 1.0e4; + const double c = 3.0e7; + + extern int nfe; + nfe += 1; + + f[0] = -a * y[0] + b * y[1] * y[2]; + f[2] = c * y[1] * y[1]; + f[1] = -f[0] - f[2]; + + return GSL_SUCCESS; +} + +int +jac_robertson (double t, const double y[], double *dfdy, double dfdt[], + void *params) +{ + const double a = 0.04; + const double b = 1.0e4; + const double c = 3.0e7; + + extern int nje; + nje += 1; + + dfdy[0] = -a; + dfdy[1] = b * y[2]; + dfdy[2] = b * y[1]; + + dfdy[3] = a; + dfdy[4] = -b * y[2] - 2 * c * y[1]; + dfdy[5] = -b * y[1]; + + dfdy[6] = 0.0; + dfdy[7] = 2 * c * y[1]; + dfdy[8] = 0.0; + + dfdt[0] = 0.0; + dfdt[1] = 0.0; + dfdt[2] = 0.0; + + return GSL_SUCCESS; +} + +gsl_odeiv2_system rhs_func_robertson = { + rhs_robertson, + jac_robertson, + 3, + 0 +}; + +/* A two-dimensional oscillating Brusselator system. + + f0 = a + y0^2 * y1 - (b + 1) * y0 y0(0) = 1.5 + f1 = b * y0 - y0^2 * y1 y1(0) = 3.0 + */ + +int +rhs_brusselator (double t, const double y[], double f[], void *params) +{ + const double a = 1.0; + const double b = 3.0; + + extern int nfe; + nfe += 1; + + f[0] = a + y[0] * y[0] * y[1] - (b + 1.0) * y[0]; + f[1] = b * y[0] - y[0] * y[0] * y[1]; + + return GSL_SUCCESS; +} + +int +jac_brusselator (double t, const double y[], double *dfdy, double dfdt[], + void *params) +{ + const double b = 3.0; + + extern int nje; + nje += 1; + + dfdy[0] = 2 * y[0] * y[1] - (b + 1.0); + dfdy[1] = y[0] * y[0]; + + dfdy[2] = b - 2 * y[0] * y[1]; + dfdy[3] = -y[0] * y[0]; + + dfdt[0] = 0; + dfdt[1] = 0; + + return GSL_SUCCESS; +} + +gsl_odeiv2_system rhs_func_brusselator = { + rhs_brusselator, + jac_brusselator, + 2, + 0 +}; + +/* Ring Modulator, stiff ODE of dimension 15. + + Reference: Walter M. Lioen, Jacques J.B. de Swart, Test Set for + Initial Value Problem Solvers, Release 2.1 September 1999, + http://ftp.cwi.nl/IVPtestset/software.htm + */ + +#define NRINGMOD 15 + +int +rhs_ringmod (double t, const double y[], double f[], void *params) +{ + const double c = 1.6e-8; + const double cs = 2e-12; + const double cp = 1e-8; + const double r = 25e3; + const double rp = 50e0; + const double lh = 4.45e0; + const double ls1 = 2e-3; + const double ls2 = 5e-4; + const double ls3 = 5e-4; + const double rg1 = 36.3; + const double rg2 = 17.3; + const double rg3 = 17.3; + const double ri = 5e1; + const double rc = 6e2; + const double gamma = 40.67286402e-9; + const double delta = 17.7493332; + const double pi = 3.141592653589793238462643383; + + const double uin1 = 0.5 * sin (2e3 * pi * t); + const double uin2 = 2 * sin (2e4 * pi * t); + const double ud1 = +y[2] - y[4] - y[6] - uin2; + const double ud2 = -y[3] + y[5] - y[6] - uin2; + const double ud3 = +y[3] + y[4] + y[6] + uin2; + const double ud4 = -y[2] - y[5] + y[6] + uin2; + + const double qud1 = gamma * (exp (delta * ud1) - 1.0); + const double qud2 = gamma * (exp (delta * ud2) - 1.0); + const double qud3 = gamma * (exp (delta * ud3) - 1.0); + const double qud4 = gamma * (exp (delta * ud4) - 1.0); + + extern int nfe; + nfe += 1; + + f[0] = (y[7] - 0.5 * y[9] + 0.5 * y[10] + y[13] - y[0] / r) / c; + f[1] = (y[8] - 0.5 * y[11] + 0.5 * y[12] + y[14] - y[1] / r) / c; + f[2] = (y[9] - qud1 + qud4) / cs; + f[3] = (-y[10] + qud2 - qud3) / cs; + f[4] = (y[11] + qud1 - qud3) / cs; + f[5] = (-y[12] - qud2 + qud4) / cs; + f[6] = (-y[6] / rp + qud1 + qud2 - qud3 - qud4) / cp; + f[7] = -y[0] / lh; + f[8] = -y[1] / lh; + f[9] = (0.5 * y[0] - y[2] - rg2 * y[9]) / ls2; + f[10] = (-0.5 * y[0] + y[3] - rg3 * y[10]) / ls3; + f[11] = (0.5 * y[1] - y[4] - rg2 * y[11]) / ls2; + f[12] = (-0.5 * y[1] + y[5] - rg3 * y[12]) / ls3; + f[13] = (-y[0] + uin1 - (ri + rg1) * y[13]) / ls1; + f[14] = (-y[1] - (rc + rg1) * y[14]) / ls1; + + return GSL_SUCCESS; +} + +int +jac_ringmod (double t, const double y[], double *dfdy, double dfdt[], + void *params) +{ + const double c = 1.6e-8; + const double cs = 2e-12; + const double cp = 1e-8; + const double r = 25e3; + const double rp = 50e0; + const double lh = 4.45e0; + const double ls1 = 2e-3; + const double ls2 = 5e-4; + const double ls3 = 5e-4; + const double rg1 = 36.3; + const double rg2 = 17.3; + const double rg3 = 17.3; + const double ri = 5e1; + const double rc = 6e2; + const double gamma = 40.67286402e-9; + const double delta = 17.7493332; + const double pi = 3.141592653589793238462643383; + + const double uin2 = 2 * sin (2e4 * pi * t); + const double ud1 = +y[2] - y[4] - y[6] - uin2; + const double ud2 = -y[3] + y[5] - y[6] - uin2; + const double ud3 = +y[3] + y[4] + y[6] + uin2; + const double ud4 = -y[2] - y[5] + y[6] + uin2; + const double qpud1 = gamma * delta * exp (delta * ud1); + const double qpud2 = gamma * delta * exp (delta * ud2); + const double qpud3 = gamma * delta * exp (delta * ud3); + const double qpud4 = gamma * delta * exp (delta * ud4); + + extern int nje; + size_t i; + + nje += 1; + + for (i = 0; i < NRINGMOD * NRINGMOD; i++) + { + dfdy[i] = 0.0; + } + + + + dfdy[0 * NRINGMOD + 0] = -1 / (c * r); + dfdy[0 * NRINGMOD + 7] = 1 / c; + dfdy[0 * NRINGMOD + 9] = -0.5 / c; + dfdy[0 * NRINGMOD + 10] = -dfdy[0 * NRINGMOD + 9]; + dfdy[0 * NRINGMOD + 13] = dfdy[0 * NRINGMOD + 7]; + dfdy[1 * NRINGMOD + 1] = dfdy[0 * NRINGMOD + 0]; + dfdy[1 * NRINGMOD + 8] = dfdy[0 * NRINGMOD + 7]; + dfdy[1 * NRINGMOD + 11] = dfdy[0 * NRINGMOD + 9]; + dfdy[1 * NRINGMOD + 12] = dfdy[0 * NRINGMOD + 10]; + dfdy[1 * NRINGMOD + 14] = dfdy[0 * NRINGMOD + 13]; + dfdy[2 * NRINGMOD + 2] = (-qpud1 - qpud4) / cs; + dfdy[2 * NRINGMOD + 4] = qpud1 / cs; + dfdy[2 * NRINGMOD + 5] = -qpud4 / cs; + dfdy[2 * NRINGMOD + 6] = (qpud1 + qpud4) / cs; + dfdy[2 * NRINGMOD + 9] = 1 / cs; + dfdy[3 * NRINGMOD + 3] = (-qpud2 - qpud3) / cs; + dfdy[3 * NRINGMOD + 4] = -qpud3 / cs; + dfdy[3 * NRINGMOD + 5] = qpud2 / cs; + dfdy[3 * NRINGMOD + 6] = (-qpud2 - qpud3) / cs; + dfdy[3 * NRINGMOD + 10] = -1 / cs; + dfdy[4 * NRINGMOD + 2] = qpud1 / cs; + dfdy[4 * NRINGMOD + 3] = -qpud3 / cs; + dfdy[4 * NRINGMOD + 4] = (-qpud1 - qpud3) / cs; + dfdy[4 * NRINGMOD + 6] = (-qpud1 - qpud3) / cs; + dfdy[4 * NRINGMOD + 11] = 1 / cs; + dfdy[5 * NRINGMOD + 2] = -qpud4 / cs; + dfdy[5 * NRINGMOD + 3] = qpud2 / cs; + dfdy[5 * NRINGMOD + 5] = (-qpud2 - qpud4) / cs; + dfdy[5 * NRINGMOD + 6] = (qpud2 + qpud4) / cs; + dfdy[5 * NRINGMOD + 12] = -1 / cs; + dfdy[6 * NRINGMOD + 2] = (qpud1 + qpud4) / cp; + dfdy[6 * NRINGMOD + 3] = (-qpud2 - qpud3) / cp; + dfdy[6 * NRINGMOD + 4] = (-qpud1 - qpud3) / cp; + dfdy[6 * NRINGMOD + 5] = (qpud2 + qpud4) / cp; + dfdy[6 * NRINGMOD + 6] = (-qpud1 - qpud2 - qpud3 - qpud4 - 1 / rp) / cp; + dfdy[7 * NRINGMOD + 0] = -1 / lh; + dfdy[8 * NRINGMOD + 1] = dfdy[7 * NRINGMOD + 0]; + dfdy[9 * NRINGMOD + 0] = 0.5 / ls2; + dfdy[9 * NRINGMOD + 2] = -1 / ls2; + dfdy[9 * NRINGMOD + 9] = -rg2 / ls2; + dfdy[10 * NRINGMOD + 0] = -0.5 / ls3; + dfdy[10 * NRINGMOD + 3] = 1 / ls3; + dfdy[10 * NRINGMOD + 10] = -rg3 / ls3; + dfdy[11 * NRINGMOD + 1] = dfdy[9 * NRINGMOD + 0]; + dfdy[11 * NRINGMOD + 4] = dfdy[9 * NRINGMOD + 2]; + dfdy[11 * NRINGMOD + 11] = dfdy[9 * NRINGMOD + 9]; + dfdy[12 * NRINGMOD + 1] = dfdy[10 * NRINGMOD + 0]; + dfdy[12 * NRINGMOD + 5] = dfdy[10 * NRINGMOD + 3]; + dfdy[12 * NRINGMOD + 12] = dfdy[10 * NRINGMOD + 10]; + dfdy[13 * NRINGMOD + 0] = -1 / ls1; + dfdy[13 * NRINGMOD + 13] = -(ri + rg1) / ls1; + dfdy[14 * NRINGMOD + 1] = dfdy[13 * NRINGMOD + 0]; + dfdy[14 * NRINGMOD + 14] = -(rc + rg1) / ls1; + + for (i = 0; i < NRINGMOD; i++) + { + dfdt[i] = 0.0; + } + + return GSL_SUCCESS; +} + +gsl_odeiv2_system rhs_func_ringmod = { + rhs_ringmod, + jac_ringmod, + NRINGMOD, + NULL +}; + + +/**********************************************************/ +/* Functions for carrying out tests */ +/**********************************************************/ + +void +test_odeiv_stepper (const gsl_odeiv2_step_type * T, + const gsl_odeiv2_system * sys, const double h, + const double t, const char desc[], const double ystart[], + const double yfin[], const double relerr) +{ + /* tests stepper T with one fixed length step advance of system sys + and compares the result with given values yfin + */ + + double y[MAXEQ] = { 0.0 }; + double yerr[MAXEQ] = { 0.0 }; + double scale_abs[MAXEQ]; + size_t ne = sys->dimension; + size_t i; + gsl_odeiv2_driver *d; + + for (i = 0; i < MAXEQ; i++) + { + scale_abs[i] = 1.0; + } + + d = gsl_odeiv2_driver_alloc_scaled_new (sys, T, h, relerr, relerr, + 1.0, 0.0, scale_abs); + + DBL_MEMCPY (y, ystart, MAXEQ); + + { + int s = gsl_odeiv2_step_apply (d->s, t, h, y, yerr, 0, 0, sys); + + if (s != GSL_SUCCESS) + { + gsl_test (s, "test_odeiv_stepper: %s step_apply returned %d", desc, + s); + } + } + + for (i = 0; i < ne; i++) + { + gsl_test_rel (y[i], yfin[i], relerr, + "%s %s step(%d)", gsl_odeiv2_step_name (d->s), desc, i); + } + + gsl_odeiv2_driver_free (d); +} + +void +test_stepper (const gsl_odeiv2_step_type * T) +{ + /* Tests stepper T with a step of selected systems */ + + double y[MAXEQ] = { 0.0 }; + double yfin[MAXEQ] = { 0.0 }; + + /* Step length */ + double h; + + /* Required tolerance */ + double err_target; + + /* classic stiff */ + h = 1e-7; + err_target = 1e-4; + y[0] = 1.0; + y[1] = 0.0; + + { + const double e1 = exp (-h); + const double e2 = exp (-1000.0 * h); + yfin[0] = 2.0 * e1 - e2; + yfin[1] = -e1 + e2; + } + + test_odeiv_stepper (T, &rhs_func_stiff, h, 0.0, "classic_stiff", + y, yfin, err_target); + + /* linear */ + h = 1e-1; + err_target = 1e-10; + y[0] = 0.58; + yfin[0] = y[0] + 2 * h; + test_odeiv_stepper (T, &rhs_func_lin, h, 0.0, "linear", + y, yfin, err_target); + + /* exponential */ + h = 1e-4; + err_target = 1e-8; + y[0] = exp (2.7); + yfin[0] = exp (2.7 + h); + test_odeiv_stepper (T, &rhs_func_exp, h, 2.7, "exponential", + y, yfin, err_target); + /* cosine-sine */ + h = 1e-3; + err_target = 1e-6; + y[0] = cos (1.2); + y[1] = sin (1.2); + yfin[0] = cos (1.2 + h); + yfin[1] = sin (1.2 + h); + test_odeiv_stepper (T, &rhs_func_sin, h, 1.2, "cosine-sine", + y, yfin, err_target); +} + +void +test_evolve_system (const gsl_odeiv2_step_type * T, + const gsl_odeiv2_system * sys, + double t0, double t1, double hstart, + double y[], double yfin[], + double err_target, const char *desc) +{ + /* Tests system sys with stepper T. Step length is controlled by + error estimation from the stepper. + */ + + int steps = 0; + size_t i; + + double t = t0; + double h = hstart; + + /* Tolerance factor in testing errors */ + const double factor = 10; + + gsl_odeiv2_driver *d = + gsl_odeiv2_driver_alloc_standard_new (sys, T, h, err_target, err_target, + 1.0, 0.0); + + double *y_orig = (double *) malloc (sys->dimension * sizeof (double)); + + int s = 0; + + extern int nfe, nje; + nfe = 0; + nje = 0; + + while (t < t1) + { + double t_orig = t; + memcpy (y_orig, y, sys->dimension * sizeof (double)); + s = gsl_odeiv2_evolve_apply (d->e, d->c, d->s, sys, &t, t1, &h, y); + +#ifdef DEBUG + printf ("test_evolve_system at: %.5e %.5e %.5e %d\n", t, y[0], y[1], + gsl_odeiv2_step_order (d->s)); +#endif + + if (s != GSL_SUCCESS) + { + /* check that t and y are unchanged */ + gsl_test_abs (t, t_orig, 0.0, "%s t must be restored on failure", + gsl_odeiv2_step_name (d->s)); + + for (i = 0; i < sys->dimension; i++) + { + gsl_test_abs (y[i], y_orig[i], 0.0, + "%s y must be restored on failure", + gsl_odeiv2_step_name (d->s), desc, i); + } + + if (sys != &rhs_func_xsin) + { + /* apart from xsin, other functions should not return errors */ + gsl_test (s, "%s evolve_apply returned %d", + gsl_odeiv2_step_name (d->s), s); + break; + } + } + + if (steps > 100000) + { + gsl_test (GSL_EFAILED, + "%s evolve_apply reached maxiter", + gsl_odeiv2_step_name (d->s)); + break; + } + + steps++; + } + + gsl_test (s, "%s %s [%g,%g], %d steps (nfe %d, nje %d) completed", + gsl_odeiv2_step_name (d->s), desc, t0, t1, steps, nfe, nje); + + /* err_target is target error of one step. Test if stepper has made + larger error than (tolerance factor times) the number of steps + times the err_target. + */ + + for (i = 0; i < sys->dimension; i++) + { + gsl_test_abs (y[i], yfin[i], factor * d->e->count * err_target, + "%s %s evolve(%d)", gsl_odeiv2_step_name (d->s), desc, i); + } + + free (y_orig); + gsl_odeiv2_driver_free (d); +} + +int +sys_driver (const gsl_odeiv2_step_type * T, + const gsl_odeiv2_system * sys, + double t0, double t1, double hstart, + double y[], double epsabs, double epsrel, const char desc[]) +{ + /* This function evolves a system sys with stepper T from t0 to t1. + Step length is varied via error control with possibly different + absolute and relative error tolerances. + */ + + int s = 0; + int steps = 0; + + double t = t0; + double h = hstart; + + gsl_odeiv2_driver *d = + gsl_odeiv2_driver_alloc_standard_new (sys, T, h, epsabs, epsrel, + 1.0, 0.0); + + extern int nfe, nje; + nfe = 0; + nje = 0; + + while (t < t1) + { + s = gsl_odeiv2_evolve_apply (d->e, d->c, d->s, sys, &t, t1, &h, y); + +#ifdef DEBUG + printf ("sys_driver at: %.5e %.5e %.5e %d\n", t, y[0], y[1], + gsl_odeiv2_step_order (d->s)); +#endif + + if (s != GSL_SUCCESS) + { + gsl_test (s, "sys_driver: %s evolve_apply returned %d", + gsl_odeiv2_step_name (d->s), s); + break; + } + + if (steps > 1e7) + { + gsl_test (GSL_EMAXITER, + "sys_driver: %s evolve_apply reached maxiter at t=%g", + gsl_odeiv2_step_name (d->s), t); + s = GSL_EMAXITER; + break; + } + + steps++; + } + + gsl_test (s, "%s %s [%g,%g], %d steps (nfe %d, nje %d) completed", + gsl_odeiv2_step_name (d->s), desc, t0, t1, steps, nfe, nje); + + gsl_odeiv2_driver_free (d); + + return s; +} + +void +test_evolve_linear (const gsl_odeiv2_step_type * T, double h, double err) +{ + /* Test linear evolve */ + + double y[1]; + double yfin[1]; + + y[0] = 1.0; + yfin[0] = 9.0; + test_evolve_system (T, &rhs_func_lin, 0.0, 4.0, h, y, yfin, err, + "linear[0,4]"); +} + +void +test_evolve_exp (const gsl_odeiv2_step_type * T, double h, double err) +{ + /* Test exponential evolve */ + + double y[1]; + double yfin[1]; + + y[0] = 1.0; + yfin[0] = exp (2.0); + test_evolve_system (T, &rhs_func_exp, 0.0, 2.0, h, y, yfin, err, + "exp[0,2]"); +} + +void +test_evolve_sin (const gsl_odeiv2_step_type * T, double h, double err) +{ + /* Test sinusoidal evolve */ + + double y[2]; + double yfin[2]; + + y[0] = 1.0; + y[1] = 0.0; + yfin[0] = cos (2.0); + yfin[1] = sin (2.0); + test_evolve_system (T, &rhs_func_sin, 0.0, 2.0, h, y, yfin, err, + "sine[0,2]"); +} + +void +test_evolve_xsin (const gsl_odeiv2_step_type * T, double h, double err) +{ + /* Test sinusoidal evolve including a failing window */ + + double y[2]; + double yfin[2]; + + y[0] = 1.0; + y[1] = 0.0; + yfin[0] = cos (2.0); + yfin[1] = sin (2.0); + rhs_xsin_reset = 1; + jac_xsin_reset = 1; + test_evolve_system (T, &rhs_func_xsin, 0.0, 2.0, h, y, yfin, err, + "sine[0,2] w/errors"); +} + +void +test_evolve_stiff1 (const gsl_odeiv2_step_type * T, double h, double err) +{ + /* Test classical stiff problem evolve, t=[0,1] */ + + double y[2]; + double yfin[2]; + + y[0] = 1.0; + y[1] = 0.0; + { + double arg = 1.0; + double e1 = exp (-arg); + double e2 = exp (-1000.0 * arg); + yfin[0] = 2.0 * e1 - e2; + yfin[1] = -e1 + e2; + } + test_evolve_system (T, &rhs_func_stiff, 0.0, 1.0, h, y, yfin, err, + "stiff[0,1]"); +} + +void +test_evolve_stiff5 (const gsl_odeiv2_step_type * T, double h, double err) +{ + /* Test classical stiff problem evolve, t=[0,5] */ + + double y[2]; + double yfin[2]; + + y[0] = 1.0; + y[1] = 0.0; + { + double arg = 5.0; + double e1 = exp (-arg); + double e2 = exp (-1000.0 * arg); + yfin[0] = 2.0 * e1 - e2; + yfin[1] = -e1 + e2; + } + test_evolve_system (T, &rhs_func_stiff, 0.0, 5.0, h, y, yfin, err, + "stiff[0,5]"); +} + +void +test_evolve_negative_h (const gsl_odeiv2_step_type * T, double h, double err) +{ + /* Test evolution in negative direction */ + + /* Tolerance factor in testing errors */ + const double factor = 10; + + const gsl_odeiv2_system sys = rhs_func_cos; + + double t = 0; + double t1 = -4.0; + + double y = 0.0; + double yfin = sin (t1); + gsl_odeiv2_driver *d; + + /* Make initial h negative */ + h = -fabs (h); + d = gsl_odeiv2_driver_alloc_standard_new (&sys, T, h, err, err, 1.0, 0.0); + + while (t > t1) + { + int status = gsl_odeiv2_evolve_apply (d->e, d->c, d->s, + &sys, &t, t1, &h, &y); + + if (status != GSL_SUCCESS) + { + gsl_test (status, "%s evolve_apply returned %d for negative h", + gsl_odeiv2_step_name (d->s), status); + break; + } + } + + gsl_test_abs (y, yfin, factor * d->e->count * err, + "%s evolution with negative h", gsl_odeiv2_step_name (d->s)); + + gsl_odeiv2_driver_free (d); +} + +void +test_broken (const gsl_odeiv2_step_type * T, double h, double err) +{ + /* Check for gsl_odeiv2_evolve_apply. The user function fails at + t>=10, which in this test causes step size to decrease below + machine precision and return with a failure code. + */ + + /* Tolerance factor in testing errors */ + const double factor = 10; + + const gsl_odeiv2_system sys = rhs_func_broken; + + gsl_odeiv2_driver *d = gsl_odeiv2_driver_alloc_y_new (&sys, T, h, err, err); + + double t = 0; + double t1 = 100.0; + + double y = 0.0; + const double final_max_h = GSL_DBL_EPSILON; + + int status; + while (t < t1) + { + status = + gsl_odeiv2_evolve_apply (d->e, d->c, d->s, &sys, &t, t1, &h, &y); + + if (status != GSL_SUCCESS) + { + break; + } + } + + gsl_test_abs (h + final_max_h, final_max_h, factor * final_max_h, + "%s test_broken: step size at break point", + gsl_odeiv2_step_name (d->s)); + + gsl_test_abs (t, 10.0, factor * err, + "%s test_broken: point of break", + gsl_odeiv2_step_name (d->s)); + + /* GSL_FAILURE results from stepper failure, 123 from user function */ + + if (status != GSL_FAILURE && status != 123) + { + gsl_test (status, "%s test_broken: evolve return value %d", + gsl_odeiv2_step_name (d->s), status); + } + else + { + gsl_test (GSL_SUCCESS, "%s test_broken: evolve return value %d", + gsl_odeiv2_step_name (d->s), status); + } + + gsl_odeiv2_driver_free (d); +} + +void +test_stepsize_fail (const gsl_odeiv2_step_type * T, double h) +{ + /* Check for gsl_odeiv2_evolve_apply. The user function works + apparently fine (returns GSL_SUCCESS) but is faulty in this case. + gsl_odeiv2_evolve_apply therefore decreases the step-size below + machine precision and therefore stops with GSL_FAILURE. + */ + + /* Error tolerance */ + const double epsabs = 1e-16; + const double epsrel = 1e-6; + + /* Tolerance factor in testing errors */ + const double factor = 10; + + const double final_max_h = GSL_DBL_EPSILON; + const gsl_odeiv2_system sys = rhs_func_br; + + gsl_odeiv2_driver *d = + gsl_odeiv2_driver_alloc_y_new (&sys, T, h, epsabs, epsrel); + + double t = 1.0; + double t1 = 1e5; + double y = 0.0; + int status; + + while (t < t1) + { + status = + gsl_odeiv2_evolve_apply (d->e, d->c, d->s, &sys, &t, t1, &h, &y); + + if (status != GSL_SUCCESS) + { + break; + } + } + + gsl_test_abs (h + final_max_h, final_max_h, factor * final_max_h, + "%s test_stepsize_fail: step size at break point", + gsl_odeiv2_step_name (d->s)); + + gsl_test_abs (t, 1.0, 1e-6, + "%s test_stepsize_fail: point of break", + gsl_odeiv2_step_name (d->s)); + + gsl_test_int (status, GSL_FAILURE, + "%s test_stepsize_fail: evolve return value", + gsl_odeiv2_step_name (d->s)); + + gsl_odeiv2_driver_free (d); +} + +void +test_user_break (const gsl_odeiv2_step_type * T, double h) +{ + /* Tests for user signaled immediate break */ + + const double tol = 1e-8; + + gsl_odeiv2_driver *d = gsl_odeiv2_driver_alloc_y_new (&rhs_func_sin_ub, T, + h, tol, tol); + + double y[] = { 1.0, 0.0 }; + double t = 0.0; + const double t1 = 8.25; + + int s = gsl_odeiv2_driver_apply (d, &t, t1, y); + + gsl_test ((s - GSL_EBADFUNC), "%s test_user_break returned %d", + gsl_odeiv2_step_name (d->s), s); + + gsl_odeiv2_driver_free (d); +} + +void +test_stepfn (const gsl_odeiv2_step_type * T) +{ + /* Test evolve on a small derivative change at t=0 */ + + double epsabs = 1e-16; + double epsrel = 1e-6; + + const gsl_odeiv2_system sys = rhs_func_stepfn; + + double t = 0.0; + double h = 1e-6; + double y = 0.0; + int i = 0; + int status = 0; + + gsl_odeiv2_driver *d = + gsl_odeiv2_driver_alloc_y_new (&sys, T, h, epsabs, epsrel); + + while (t < 2 && i < 1000000) + { + status = + gsl_odeiv2_evolve_apply (d->e, d->c, d->s, &sys, &t, 2, &h, &y); +#ifdef DEBUG + printf ("test_stepfn at: i=%d status=%d t=%g h=%g y=%g\n", + i, status, t, h, y); +#endif + + if (status != GSL_SUCCESS) + break; + + i++; + } + + gsl_test (status, "evolve step function, return value (stepfn/%s): %d", + gsl_odeiv2_step_name (d->s), status); + + gsl_test_abs (t, 2, 1e-16, "evolve step function, t (stepfn/%s)", + gsl_odeiv2_step_name (d->s)); + + gsl_test_rel (y, 1, epsrel, "evolve step function, y (stepfn/%s)", + gsl_odeiv2_step_name (d->s)); + + gsl_odeiv2_driver_free (d); +} + +void +test_stepfn2 (const gsl_odeiv2_step_type * T) +{ + /* Test evolve on a large derivative change at t=0 */ + + double epsabs = 1e-16; + double epsrel = 1e-6; + + const gsl_odeiv2_system sys = rhs_func_stepfn2; + + double t = -1.0; + double h = 1e-6; + double y = 0.0; + + int i = 0; + int status; + const int maxiter = 100000; + + gsl_odeiv2_driver *d = + gsl_odeiv2_driver_alloc_yp_new (&sys, T, h, epsabs, epsrel); + + while (t < 1.0 && i < maxiter) + { + status = + gsl_odeiv2_evolve_apply (d->e, d->c, d->s, &sys, &t, 1.0, &h, &y); +#ifdef DEBUG + printf ("test_stepfn2 at: i=%d status=%d t=%g h=%g y=%g\n", + i, status, t, h, y); +#endif + if (status != GSL_SUCCESS) + break; + + i++; + } + + if (i >= maxiter) + printf ("FAIL: evolve big step function, (stepfn2/%s) reached maxiter\n", + gsl_odeiv2_step_name (d->s)); + + gsl_test_abs (t, 1.0, 1e-16, "evolve big step function, t (stepfn2/%s)", + gsl_odeiv2_step_name (d->s)); + gsl_test_rel (y, 1e300, epsrel, "evolve big step function, y (stepfn2/%s)", + gsl_odeiv2_step_name (d->s)); + + gsl_odeiv2_driver_free (d); +} + +void +test_nonstiff_problems (void) +{ + /* Compares output of non-stiff (or only moderately stiff) problems + with several steppers + */ + + const gsl_odeiv2_step_type *steppers[MAXNS]; + + /* Required error tolerance for each stepper. */ + double err_target[MAXNS]; + + /* initial values for each ode-solver */ + double y[MAXEQ * MAXNS]; + + size_t i, k, p; + + /* Number of problems to test */ +#define CONST_NONSTIFF_NPROB 4 + + /* Problems, their names and number of equations */ + const gsl_odeiv2_system *prob[] = + { &rhs_func_vl, &rhs_func_vanderpol, &rhs_func_stifftrig, + &rhs_func_brusselator + }; + const char *probname[] = + { "volterra-lotka", "vanderpol", "stifftrig", "brusselator" }; + const size_t sd[] = { 2, 2, 1, 2 }; + + /* Integration interval for problems */ + const double start[CONST_NONSTIFF_NPROB] = { 0.0 }; + const double end[] = { 9.0, 100.0, 1.5, 20.0 }; + + const double epsabs = 1e-8; + const double epsrel = 1e-8; + const double initstepsize = 1e-5; + + /* Steppers */ + + steppers[0] = gsl_odeiv2_step_rk4; + err_target[0] = 1e-6; + steppers[1] = gsl_odeiv2_step_rk2; + err_target[1] = 1e-6; + steppers[2] = gsl_odeiv2_step_rkf45; + err_target[2] = 1e-6; + steppers[3] = gsl_odeiv2_step_rkck; + err_target[3] = 1e-6; + steppers[4] = gsl_odeiv2_step_rk8pd; + err_target[4] = 1e-6; + steppers[5] = gsl_odeiv2_step_rk1imp; + err_target[5] = 1e-3; + steppers[6] = gsl_odeiv2_step_rk2imp; + err_target[6] = 1e-5; + steppers[7] = gsl_odeiv2_step_rk4imp; + err_target[7] = 1e-6; + steppers[8] = gsl_odeiv2_step_bsimp; + err_target[8] = 1e-6; + steppers[9] = gsl_odeiv2_step_msadams; + err_target[9] = 1e-5; + steppers[10] = gsl_odeiv2_step_msbdf; + err_target[10] = 1e-5; + steppers[11] = 0; + + /* Loop over problems */ + + for (p = 0; p < CONST_NONSTIFF_NPROB; p++) + { + /* Initialize */ + + for (i = 0; i < MAXNS * MAXEQ; i++) + { + y[i] = 0.0; + } + + for (i = 0; i < MAXNS; i++) + { + switch (p) + { + case 0: + y[i * sd[p]] = 2.725; + y[i * sd[p] + 1] = 1.0; + break; + case 1: + y[i * sd[p]] = 1.0; + y[i * sd[p] + 1] = 0.0; + break; + case 2: + y[i * sd[p]] = 0.0; + break; + case 3: + y[i * sd[p]] = 1.5; + y[i * sd[p] + 1] = 3.0; + break; + default: + gsl_test (GSL_EFAILED, + "test_nonstiff_problems: initialization error\n"); + return; + } + } + + /* Call each solver for the problem */ + + for (i = 0; steppers[i] != 0; i++) + { + int s = sys_driver (steppers[i], prob[p], start[p], end[p], + initstepsize, &y[sd[p] * i], + epsabs, epsrel, probname[p]); + + if (s != GSL_SUCCESS) + { + gsl_test (s, "test_nonstiff_problems %s %s", + steppers[i]->name, probname[p]); + } + } + + /* Compare results */ + + for (i = 1; steppers[i] != 0; i++) + for (k = 0; k < sd[p]; k++) + { + const double val1 = y[k]; + const double val2 = y[sd[p] * i + k]; + gsl_test_rel (val1, val2, + (GSL_MAX (err_target[0], err_target[i])), + "%s/%s %s [%d]", + steppers[0]->name, steppers[i]->name, + probname[p], k); + } + } +} + +void +test_stiff_problems (void) +{ + /* Compares output of stiff problems with several steppers */ + + const gsl_odeiv2_step_type *steppers[MAXNS]; + + /* Required error tolerance for each stepper. */ + double err_target[MAXNS]; + + /* initial values for each ode-solver */ + double y[MAXEQ * MAXNS]; + + size_t i, k, p; + + /* Number of problems to test */ +#define CONST_STIFF_NPROB 3 + + /* Problems, their names and number of equations */ + const gsl_odeiv2_system *prob[] = + { &rhs_func_oregonator, &rhs_func_e5, &rhs_func_robertson }; + const char *probname[] = { "oregonator", "e5", "robertson" }; + const size_t sd[] = { 3, 4, 3 }; + + /* Integration interval for problems */ + const double start[CONST_STIFF_NPROB] = { 0.0 }; + const double end[] = { 360.0, 1e4, 1e4 }; + + const double epsabs = 1e-40; + const double epsrel = 1e-7; + const double initstepsize = 1e-5; + + /* Steppers */ + + steppers[0] = gsl_odeiv2_step_bsimp; + err_target[0] = 1e-6; + steppers[1] = gsl_odeiv2_step_rk1imp; + err_target[1] = 5e-3; + steppers[2] = gsl_odeiv2_step_rk2imp; + err_target[2] = 5e-5; + steppers[3] = gsl_odeiv2_step_rk4imp; + err_target[3] = 5e-5; + steppers[4] = gsl_odeiv2_step_msbdf; + err_target[4] = 1e-4; + steppers[5] = 0; + + /* Loop over problems */ + + for (p = 0; p < CONST_STIFF_NPROB; p++) + { + /* Initialize */ + + for (i = 0; i < MAXNS * MAXEQ; i++) + { + y[i] = 0.0; + } + + for (i = 0; i < MAXNS; i++) + { + switch (p) + { + case 0: + y[i * sd[p]] = 1.0; + y[i * sd[p] + 1] = 2.0; + y[i * sd[p] + 2] = 3.0; + break; + case 1: + y[i * sd[p]] = 1.76e-3; + y[i * sd[p] + 1] = 0.0; + y[i * sd[p] + 2] = 0.0; + y[i * sd[p] + 3] = 0.0; + break; + case 2: + y[i * sd[p]] = 1.0; + y[i * sd[p] + 1] = 0.0; + y[i * sd[p] + 2] = 0.0; + break; + default: + gsl_test (GSL_EFAILED, + "test_stiff_problems: initialization error\n"); + return; + } + } + + /* Call each solver for the problem */ + + for (i = 0; steppers[i] != 0; i++) + { + int s = sys_driver (steppers[i], prob[p], start[p], end[p], + initstepsize, &y[sd[p] * i], + epsabs, epsrel, probname[p]); + + if (s != GSL_SUCCESS) + { + gsl_test (s, "test_stiff_problems %s %s", + steppers[i]->name, probname[p]); + } + } + + /* Compare results */ + + for (i = 1; steppers[i] != 0; i++) + for (k = 0; k < sd[p]; k++) + { + const double val1 = y[k]; + const double val2 = y[sd[p] * i + k]; + gsl_test_rel (val1, val2, + (GSL_MAX (err_target[0], err_target[i])), + "%s/%s %s [%d]", + steppers[0]->name, steppers[i]->name, + probname[p], k); + } + } +} + +void +test_extreme_problems (void) +{ + /* Compares output of numerically particularly demanding problems + with several steppers */ + + const gsl_odeiv2_step_type *steppers[MAXNS]; + + /* Required error tolerance for each stepper. */ + double err_target[MAXNS]; + + /* initial values for each ode-solver */ + double y[MAXEQ * MAXNS]; + + size_t i, k, p; + + /* Number of problems to test */ +#define CONST_EXTREME_NPROB 3 + + /* Problems, their names and number of equations */ + const gsl_odeiv2_system *prob[] = + { &rhs_func_e5, &rhs_func_robertson, &rhs_func_ringmod }; + const char *probname[] = { "e5_bigt", "robertson_bigt", "ringmod" }; + const size_t sd[] = { 4, 3, NRINGMOD }; + + /* Integration interval for problems */ + + const double start[CONST_EXTREME_NPROB] = { 0.0 }; + const double end[CONST_EXTREME_NPROB] = { 1e11, 1e11, 1e-5 }; + + const double epsabs[CONST_EXTREME_NPROB] = + { 1e1 * GSL_DBL_MIN, 1e1 * GSL_DBL_MIN, 1e-12 }; + const double epsrel[CONST_EXTREME_NPROB] = { 1e-12, 1e-12, 1e-12 }; + const double initstepsize[CONST_EXTREME_NPROB] = { 1e-5, 1e-5, 1e-10 }; + + /* Steppers */ + + steppers[0] = gsl_odeiv2_step_bsimp; + err_target[0] = 1e-3; + steppers[1] = gsl_odeiv2_step_msbdf; + err_target[1] = 1e-3; + steppers[2] = 0; + + /* Loop over problems */ + + for (p = 0; p < CONST_EXTREME_NPROB; p++) + { + /* Initialize */ + + for (i = 0; i < MAXNS * MAXEQ; i++) + { + y[i] = 0.0; + } + + for (i = 0; i < MAXNS; i++) + { + switch (p) + { + case 0: + y[i * sd[p]] = 1.76e-3; + y[i * sd[p] + 1] = 0.0; + y[i * sd[p] + 2] = 0.0; + y[i * sd[p] + 3] = 0.0; + break; + case 1: + y[i * sd[p]] = 1.0; + y[i * sd[p] + 1] = 0.0; + y[i * sd[p] + 2] = 0.0; + break; + case 2: + { + size_t j; + for (j = 0; j < NRINGMOD; j++) + { + y[i * sd[p] + j] = 0.0; + } + } + break; + default: + gsl_test (GSL_EFAILED, + "test_extreme_problems: initialization error\n"); + return; + } + } + + /* Call each solver for the problem */ + + for (i = 0; steppers[i] != 0; i++) + { + int s = sys_driver (steppers[i], prob[p], start[p], end[p], + initstepsize[p], &y[sd[p] * i], + epsabs[p], epsrel[p], probname[p]); + + if (s != GSL_SUCCESS) + { + printf ("start=%.5e, initstepsize=%.5e\n", start[p], + initstepsize[p]); + gsl_test (s, "test_extreme_problems %s %s", steppers[i]->name, + probname[p]); + } + } + + /* Compare results */ + + for (i = 1; steppers[i] != 0; i++) + for (k = 0; k < sd[p]; k++) + { + const double val1 = y[k]; + const double val2 = y[sd[p] * i + k]; + gsl_test_rel (val1, val2, + (GSL_MAX (err_target[0], err_target[i])), + "%s/%s %s [%d]", + steppers[0]->name, steppers[i]->name, + probname[p], k); + } + } +} + +void +test_driver (const gsl_odeiv2_step_type * T) +{ + /* Tests for gsl_odeiv2_driver object */ + + int s; + const double tol = 1e-8; + const double hmax = 1e-2; + + double y[] = { 1.0, 0.0 }; + double t = 0.0; + const double tinit = 0.0; + const double t1 = 8.25; + const double t2 = 100; + const double t3 = -2.5; + const size_t minsteps = ceil (t1 / hmax); + const size_t maxsteps = 20; + const double hmin = 1e-10; + + const unsigned long int nfsteps = 100000; + const double hfixed = 0.000025; + + gsl_odeiv2_driver *d = gsl_odeiv2_driver_alloc_y_new (&rhs_func_sin, T, + 1e-3, tol, tol); + gsl_odeiv2_driver_set_hmax (d, hmax); + + s = gsl_odeiv2_driver_apply (d, &t, t1, y); + + if (s != GSL_SUCCESS) + { + gsl_test (s, "%s test_driver apply returned %d", + gsl_odeiv2_step_name (d->s), s); + } + + /* Test that result is correct */ + + gsl_test_rel (y[0], cos (t1), d->n * tol, "%s test_driver y0", + gsl_odeiv2_step_name (d->s)); + gsl_test_rel (y[1], sin (t1), d->n * tol, "%s test_driver y1", + gsl_odeiv2_step_name (d->s)); + + /* Test that maximum step length is obeyed */ + + if (d->n < minsteps) + { + gsl_test (1, "%s test_driver steps %d < minsteps %d \n", + gsl_odeiv2_step_name (d->s), d->n, minsteps); + } + else + { + gsl_test (0, "%s test_driver max step length test", + gsl_odeiv2_step_name (d->s)); + } + + /* Test changing integration direction from forward to backward */ + + gsl_odeiv2_driver_reset_hstart (d, -1e-3); + + s = gsl_odeiv2_driver_apply (d, &t, tinit, y); + + if (s != GSL_SUCCESS) + { + gsl_test (s, "%s test_driver apply returned %d", + gsl_odeiv2_step_name (d->s), s); + } + + gsl_test_rel (y[0], cos (tinit), d->n * tol, + "%s test_driver y0", gsl_odeiv2_step_name (d->s)); + gsl_test_rel (y[1], sin (tinit), d->n * tol, + "%s test_driver y1", gsl_odeiv2_step_name (d->s)); + + gsl_odeiv2_driver_free (d); + + /* Test that maximum number of steps is obeyed */ + + d = gsl_odeiv2_driver_alloc_y_new (&rhs_func_sin, T, 1e-3, tol, tol); + gsl_odeiv2_driver_set_hmax (d, hmax); + gsl_odeiv2_driver_set_nmax (d, maxsteps); + + s = gsl_odeiv2_driver_apply (d, &t, t2, y); + + if (d->n != maxsteps + 1) + { + gsl_test (1, "%s test_driver steps %d, expected %d", + gsl_odeiv2_step_name (d->s), d->n, maxsteps + 1); + } + else + { + gsl_test (0, "%s test_driver max steps test", + gsl_odeiv2_step_name (d->s)); + } + + gsl_odeiv2_driver_free (d); + + /* Test that minimum step length is obeyed */ + + d = gsl_odeiv2_driver_alloc_y_new (&rhs_func_broken, T, 1e-3, tol, tol); + + gsl_odeiv2_driver_set_hmin (d, hmin); + y[0] = 0.0; + t = 0.0; + + s = gsl_odeiv2_driver_apply (d, &t, t2, y); + + if (s != GSL_ENOPROG) + { + gsl_test (1, "%s test_driver min step test returned %d", + gsl_odeiv2_step_name (d->s), s); + } + else + { + gsl_test (0, "%s test_driver min step test", + gsl_odeiv2_step_name (d->s)); + } + + gsl_odeiv2_driver_free (d); + + /* Test negative integration direction */ + + d = gsl_odeiv2_driver_alloc_y_new (&rhs_func_sin, T, -1e-3, tol, tol); + + y[0] = 1.0; + y[1] = 0.0; + t = 2.5; + + s = gsl_odeiv2_driver_apply (d, &t, t3, y); + + { + const double tol = 1e-3; + const double test = fabs (t - t3); + const double val = fabs (sin (-5.0) - y[1]); + + if (test > GSL_DBL_EPSILON) + { + gsl_test (1, + "%s test_driver negative dir diff %e, expected less than %e", + gsl_odeiv2_step_name (d->s), test, GSL_DBL_EPSILON); + } + else if (val > tol) + { + gsl_test (1, + "%s test_driver negative dir val %e, expected less than %e", + gsl_odeiv2_step_name (d->s), val, tol); + } + else + { + gsl_test (s, "%s test_driver negative direction test", + gsl_odeiv2_step_name (d->s)); + } + } + + /* Test driver_apply_fixed_step */ + + gsl_odeiv2_driver_reset_hstart (d, 1e-3); + s = gsl_odeiv2_driver_apply_fixed_step (d, &t, hfixed, nfsteps, y); + + if (s != GSL_SUCCESS) + { + gsl_test (s, "%s test_driver apply_fixed_step returned %d", + gsl_odeiv2_step_name (d->s), s); + } + + { + const double tol = 1e-3; + const double val = fabs (sin (-2.5) - y[1]); + + if (fabs (t) > nfsteps * GSL_DBL_EPSILON) + { + gsl_test (1, + "%s test_driver apply_fixed_step t %e, expected less than %e", + gsl_odeiv2_step_name (d->s), fabs (t), + nfsteps * GSL_DBL_EPSILON); + } + else if (val > tol) + { + gsl_test (1, + "%s test_driver apply_fixed_step val %e, expected less than %e", + gsl_odeiv2_step_name (d->s), val, tol); + } + else + { + gsl_test (s, "%s test_driver apply_fixed_step test", + gsl_odeiv2_step_name (d->s)); + } + } + + gsl_odeiv2_driver_free (d); +} + +void +benchmark_precision (void) +{ + /* Tests steppers with several error tolerances and evaluates their + performance and precision. + */ + + /* Maximum number of tolerances to be tested */ +#define MAXNT 12 + + const gsl_odeiv2_step_type *steppers[MAXNS]; + + /* Required error tolerance for each stepper. */ + double err_target[MAXNS]; + + /* initial values for each ode-solver */ + double y[MAXEQ * MAXNS * MAXNT]; + + /* precise results from e.g. analytical solution */ + double yres[MAXEQ]; + + size_t i, j, k, p; + + /* Number of problems to test */ +#define CONST_BENCHMARK_PRECISION_NPROB 3 + + /* Problems, their names and number of equations */ + const gsl_odeiv2_system *prob[] = + { &rhs_func_sin, &rhs_func_exp, &rhs_func_stiff }; + const char *probname[] = + { "rhs_func_sin", "rhs_func_exp", "rhs_func_stiff" }; + const size_t sd[] = { 2, 1, 2 }; + + /* Integration interval for problems */ + const double start[] = { 0.0, 0.0, 0.0 }; + const double end[] = { 2.4, 8.4, 1.2 }; + + const double epsabs[] = { 1e-4, 1e-6, 1e-8, 1e-10, 1e-12, 1e-14, 0 }; + const double epsrel[] = { 1e-4, 1e-6, 1e-8, 1e-10, 1e-12, 1e-14, 0 }; + const double initstepsize = 1e-5; + + /* number of function and jacobian evaluations */ + extern int nfe, nje; + int nnfe[MAXNS * MAXNT] = { 0.0 }; + int nnje[MAXNS * MAXNT] = { 0.0 }; + + /* Steppers */ + + steppers[0] = gsl_odeiv2_step_rk4; + err_target[0] = 1e-6; + steppers[1] = gsl_odeiv2_step_rk2; + err_target[1] = 1e-6; + steppers[2] = gsl_odeiv2_step_rkf45; + err_target[2] = 1e-6; + steppers[3] = gsl_odeiv2_step_rkck; + err_target[3] = 1e-6; + steppers[4] = gsl_odeiv2_step_rk8pd; + err_target[4] = 1e-6; + steppers[5] = gsl_odeiv2_step_rk1imp; + err_target[5] = 1e-3; + steppers[6] = gsl_odeiv2_step_rk2imp; + err_target[6] = 1e-5; + steppers[7] = gsl_odeiv2_step_rk4imp; + err_target[7] = 1e-6; + steppers[8] = gsl_odeiv2_step_bsimp; + err_target[8] = 1e-6; + steppers[9] = gsl_odeiv2_step_msadams; + err_target[9] = 1e-5; + steppers[10] = gsl_odeiv2_step_msbdf; + err_target[10] = 1e-5; + steppers[11] = 0; + + /* Loop over problems */ + + for (p = 0; p < CONST_BENCHMARK_PRECISION_NPROB; p++) + { + /* Initialize */ + + for (i = 0; i < MAXNS * MAXEQ * MAXNT; i++) + { + y[i] = 0.0; + } + + for (i = 0; i < MAXNS * MAXNT; i++) + { + switch (p) + { + case 0: + y[i * sd[p]] = 1.0; + y[i * sd[p] + 1] = 0.0; + yres[0] = cos (2.4); + yres[1] = sin (2.4); + break; + case 1: + y[i * sd[p]] = 1.0; + yres[0] = exp (8.4); + break; + case 2: + y[i * sd[p]] = 1.0; + y[i * sd[p] + 1] = 0.0; + yres[0] = 2 * exp (-1.2) - exp (-1000 * 1.2); + yres[1] = -exp (-1.2) + exp (-1000 * 1.2); + break; + default: + gsl_test (GSL_EFAILED, + "benchmark_precision: initialization error\n"); + return; + } + } + + /* Call each solver for the problem */ + + for (i = 0; steppers[i] != 0; i++) + for (j = 0; epsrel[j] != 0; j++) + { + int s = sys_driver (steppers[i], prob[p], start[p], end[p], + initstepsize, &y[sd[p] * (j + i * MAXNT)], + epsabs[j], epsrel[j], probname[p]); + + if (s != GSL_SUCCESS) + { + for (k = 0; k < sd[p]; k++) + { + y[sd[p] * (j + i * MAXNT) + k] = GSL_NAN; + } + } + + else + { + nnfe[j + i * MAXNT] = nfe; + nnje[j + i * MAXNT] = nje; + } + } + + /* Print results */ + + printf + ("benchmark_precision: diff = (y_true - y) / y_true with %s\n epsrel: ", + probname[p]); + + for (i = 0; epsrel[i] != 0.0; i++) + { + printf ("%12.0e ", epsrel[i]); + } + + printf ("\n"); + + for (i = 0; steppers[i] != 0; i++) + { + for (k = 0; k < sd[p]; k++) + { + printf ("%8s diff[%d]: ", steppers[i]->name, (int) k); + + for (j = 0; epsrel[j] != 0; j++) + { + const double diff = + (yres[k] - y[sd[p] * (j + i * MAXNT) + k]) / yres[k]; + printf ("%12.5e ", diff); + } + + printf ("\n"); + } + } + + printf ("\n"); + + /* Print number of function/jacobian evaluations */ + + printf + ("benchmark_precision: number of function/jacobian evaluations with %s\n epsrel: ", + probname[p]); + + for (i = 0; epsrel[i] != 0.0; i++) + { + printf ("%12.0e ", epsrel[i]); + } + + printf ("\n"); + + for (i = 0; steppers[i] != 0; i++) + { + printf ("%8s nfe/nje: ", steppers[i]->name); + + for (j = 0; epsrel[j] != 0; j++) + { + printf ("%9d %9d | ", nnfe[j + i * MAXNT], nnje[j + i * MAXNT]); + } + + printf ("\n"); + } + printf ("\n"); + + } +} + +void +test_evolve_temp (const gsl_odeiv2_step_type * T, double h, double err) +{ + /* Temporary test */ + + double y[3]; + double yfin[3]; + + y[0] = 1.0; + y[1] = 0.0; + y[2] = 0.0; + yfin[0] = 0; + yfin[1] = 0; + yfin[2] = 0; + test_evolve_system (T, &rhs_func_stiff, 0.0, 1.0, h, y, yfin, err, "temp"); +} + +/**********************************************************/ +/* Main function */ +/**********************************************************/ + +int +main (void) +{ + + /* Benchmark routine to compare stepper performance */ + /* benchmark_precision(); return 0; */ + + /* Test single problem, for debugging purposes */ + /* test_evolve_temp (gsl_odeiv2_step_msadams, 1e-3, 1e-8); return 0; */ + int i; + + struct ptype + { + const gsl_odeiv2_step_type *type; + double h; + } + p[MAXNS]; + + struct ptype explicit_stepper[MAXNS]; + + p[0].type = gsl_odeiv2_step_rk4; + p[0].h = 1.0e-3; + p[1].type = gsl_odeiv2_step_rk2; + p[1].h = 1.0e-3; + p[2].type = gsl_odeiv2_step_rkf45; + p[2].h = 1.0e-3; + p[3].type = gsl_odeiv2_step_rkck; + p[3].h = 1.0e-3; + p[4].type = gsl_odeiv2_step_rk8pd; + p[4].h = 1.0e-3; + p[5].type = gsl_odeiv2_step_rk1imp; + p[5].h = 1.0e-3; + p[6].type = gsl_odeiv2_step_rk2imp; + p[6].h = 1.0e-3; + p[7].type = gsl_odeiv2_step_rk4imp; + p[7].h = 1.0e-3; + p[8].type = gsl_odeiv2_step_bsimp; + p[8].h = 1.0e-3; + p[9].type = gsl_odeiv2_step_msadams; + p[9].h = 1.0e-3; + p[10].type = gsl_odeiv2_step_msbdf; + p[10].h = 1.0e-3; + p[11].type = 0; + + gsl_ieee_env_setup (); + + /* Basic tests for all steppers */ + + for (i = 0; p[i].type != 0; i++) + { + test_stepper (p[i].type); + test_evolve_linear (p[i].type, p[i].h, 1e-10); + test_evolve_exp (p[i].type, p[i].h, 1e-5); + test_evolve_sin (p[i].type, p[i].h, 1e-8); + test_evolve_xsin (p[i].type, p[i].h, 1e-8); + test_evolve_xsin (p[i].type, 0.1, 1e-8); + test_evolve_stiff1 (p[i].type, p[i].h, 1e-7); + test_evolve_stiff5 (p[i].type, p[i].h, 1e-7); + test_evolve_negative_h (p[i].type, p[i].h, 1e-7); + test_broken (p[i].type, p[i].h, 1e-8); + test_stepsize_fail (p[i].type, p[i].h); + test_user_break (p[i].type, p[i].h); + test_driver (p[i].type); + } + + /* Derivative test for explicit steppers */ + + explicit_stepper[0].type = gsl_odeiv2_step_rk4; + explicit_stepper[0].h = 1.0e-3; + explicit_stepper[1].type = gsl_odeiv2_step_rk2; + explicit_stepper[1].h = 1.0e-3; + explicit_stepper[2].type = gsl_odeiv2_step_rkf45; + explicit_stepper[2].h = 1.0e-3; + explicit_stepper[3].type = gsl_odeiv2_step_rkck; + explicit_stepper[3].h = 1.0e-3; + explicit_stepper[4].type = gsl_odeiv2_step_rk8pd; + explicit_stepper[4].h = 1.0e-3; + explicit_stepper[5].type = gsl_odeiv2_step_msadams; + explicit_stepper[5].h = 1.0e-3; + explicit_stepper[6].type = 0; + + for (i = 0; explicit_stepper[i].type != 0; i++) + { + test_stepfn (explicit_stepper[i].type); + test_stepfn2 (explicit_stepper[i].type); + } + + /* Special tests */ + + test_nonstiff_problems (); + + test_stiff_problems (); + + test_extreme_problems (); + + exit (gsl_test_summary ()); +} diff --git a/gsl-2.5/ode-initval2/test.log b/gsl-2.5/ode-initval2/test.log new file mode 100644 index 00000000..19b87c90 --- /dev/null +++ b/gsl-2.5/ode-initval2/test.log @@ -0,0 +1 @@ +Completed [1151/1151] diff --git a/gsl-2.5/ode-initval2/test.trs b/gsl-2.5/ode-initval2/test.trs new file mode 100644 index 00000000..3f0f396c --- /dev/null +++ b/gsl-2.5/ode-initval2/test.trs @@ -0,0 +1,4 @@ +:test-result: PASS +:global-test-result: PASS +:recheck: no +:copy-in-global-log: no diff --git a/gsl-2.5/permutation/.deps/canonical.Plo b/gsl-2.5/permutation/.deps/canonical.Plo new file mode 100644 index 00000000..b065fc4a --- /dev/null +++ b/gsl-2.5/permutation/.deps/canonical.Plo @@ -0,0 +1,114 @@ +canonical.lo: canonical.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_errno.h /usr/include/stdio.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_types.h ../gsl/gsl_permutation.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_inline.h \ + ../gsl/gsl_check_range.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_permutation.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_check_range.h: diff --git a/gsl-2.5/permutation/.deps/file.Plo b/gsl-2.5/permutation/.deps/file.Plo new file mode 100644 index 00000000..c4cd7037 --- /dev/null +++ b/gsl-2.5/permutation/.deps/file.Plo @@ -0,0 +1,115 @@ +file.lo: file.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdio.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../gsl/gsl_errno.h /usr/include/errno.h \ + /usr/include/bits/errno.h /usr/include/linux/errno.h \ + /usr/include/asm/errno.h /usr/include/asm-generic/errno.h \ + /usr/include/asm-generic/errno-base.h ../gsl/gsl_types.h \ + ../gsl/gsl_permutation.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_inline.h \ + ../gsl/gsl_check_range.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_permutation.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_check_range.h: diff --git a/gsl-2.5/permutation/.deps/init.Plo b/gsl-2.5/permutation/.deps/init.Plo new file mode 100644 index 00000000..d2fb20da --- /dev/null +++ b/gsl-2.5/permutation/.deps/init.Plo @@ -0,0 +1,114 @@ +init.lo: init.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_errno.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_types.h ../gsl/gsl_permutation.h ../gsl/gsl_inline.h \ + ../gsl/gsl_check_range.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_permutation.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_check_range.h: diff --git a/gsl-2.5/permutation/.deps/inline.Plo b/gsl-2.5/permutation/.deps/inline.Plo new file mode 100644 index 00000000..1a66a1d8 --- /dev/null +++ b/gsl-2.5/permutation/.deps/inline.Plo @@ -0,0 +1,116 @@ +inline.lo: inline.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_errno.h /usr/include/stdio.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_types.h ../build.h ../gsl/gsl_permutation.h \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/byteswap.h \ + /usr/include/bits/byteswap-16.h /usr/include/sys/types.h \ + /usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib-float.h \ + ../gsl/gsl_inline.h ../gsl/gsl_check_range.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../build.h: + +../gsl/gsl_permutation.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_check_range.h: diff --git a/gsl-2.5/permutation/.deps/permutation.Plo b/gsl-2.5/permutation/.deps/permutation.Plo new file mode 100644 index 00000000..76b2cbf0 --- /dev/null +++ b/gsl-2.5/permutation/.deps/permutation.Plo @@ -0,0 +1,114 @@ +permutation.lo: permutation.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_errno.h /usr/include/stdio.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_types.h ../gsl/gsl_permutation.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_inline.h \ + ../gsl/gsl_check_range.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_permutation.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_check_range.h: diff --git a/gsl-2.5/permutation/.deps/permute.Plo b/gsl-2.5/permutation/.deps/permute.Plo new file mode 100644 index 00000000..9b55b63f --- /dev/null +++ b/gsl-2.5/permutation/.deps/permute.Plo @@ -0,0 +1,353 @@ +permute.lo: permute.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_errno.h /usr/include/stdio.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_types.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_complex.h \ + ../gsl/gsl_check_range.h ../gsl/gsl_vector_long_double.h \ + ../gsl/gsl_inline.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_permute.h \ + ../gsl/gsl_permute_complex_long_double.h ../gsl/gsl_permutation.h \ + ../gsl/gsl_permute_complex_double.h ../gsl/gsl_permute_complex_float.h \ + ../gsl/gsl_permute_long_double.h ../gsl/gsl_permute_double.h \ + ../gsl/gsl_permute_float.h ../gsl/gsl_permute_ulong.h \ + ../gsl/gsl_permute_long.h ../gsl/gsl_permute_uint.h \ + ../gsl/gsl_permute_int.h ../gsl/gsl_permute_ushort.h \ + ../gsl/gsl_permute_short.h ../gsl/gsl_permute_uchar.h \ + ../gsl/gsl_permute_char.h ../gsl/gsl_permute_vector.h \ + ../gsl/gsl_permute_vector_complex_long_double.h \ + ../gsl/gsl_permute_vector_complex_double.h \ + ../gsl/gsl_permute_vector_complex_float.h \ + ../gsl/gsl_permute_vector_long_double.h \ + ../gsl/gsl_permute_vector_double.h ../gsl/gsl_permute_vector_float.h \ + ../gsl/gsl_permute_vector_ulong.h ../gsl/gsl_permute_vector_long.h \ + ../gsl/gsl_permute_vector_uint.h ../gsl/gsl_permute_vector_int.h \ + ../gsl/gsl_permute_vector_ushort.h ../gsl/gsl_permute_vector_short.h \ + ../gsl/gsl_permute_vector_uchar.h ../gsl/gsl_permute_vector_char.h \ + ../gsl/gsl_permute_matrix.h \ + ../gsl/gsl_permute_matrix_complex_long_double.h \ + ../gsl/gsl_permute_matrix_complex_double.h \ + ../gsl/gsl_permute_matrix_complex_float.h \ + ../gsl/gsl_permute_matrix_long_double.h \ + ../gsl/gsl_permute_matrix_double.h ../gsl/gsl_permute_matrix_float.h \ + ../gsl/gsl_permute_matrix_ulong.h ../gsl/gsl_permute_matrix_long.h \ + ../gsl/gsl_permute_matrix_uint.h ../gsl/gsl_permute_matrix_int.h \ + ../gsl/gsl_permute_matrix_ushort.h ../gsl/gsl_permute_matrix_short.h \ + ../gsl/gsl_permute_matrix_uchar.h ../gsl/gsl_permute_matrix_char.h \ + ../templates_on.h permute_source.c ../templates_off.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_permute.h: + +../gsl/gsl_permute_complex_long_double.h: + +../gsl/gsl_permutation.h: + +../gsl/gsl_permute_complex_double.h: + +../gsl/gsl_permute_complex_float.h: + +../gsl/gsl_permute_long_double.h: + +../gsl/gsl_permute_double.h: + +../gsl/gsl_permute_float.h: + +../gsl/gsl_permute_ulong.h: + +../gsl/gsl_permute_long.h: + +../gsl/gsl_permute_uint.h: + +../gsl/gsl_permute_int.h: + +../gsl/gsl_permute_ushort.h: + +../gsl/gsl_permute_short.h: + +../gsl/gsl_permute_uchar.h: + +../gsl/gsl_permute_char.h: + +../gsl/gsl_permute_vector.h: + +../gsl/gsl_permute_vector_complex_long_double.h: + +../gsl/gsl_permute_vector_complex_double.h: + +../gsl/gsl_permute_vector_complex_float.h: + +../gsl/gsl_permute_vector_long_double.h: + +../gsl/gsl_permute_vector_double.h: + +../gsl/gsl_permute_vector_float.h: + +../gsl/gsl_permute_vector_ulong.h: + +../gsl/gsl_permute_vector_long.h: + +../gsl/gsl_permute_vector_uint.h: + +../gsl/gsl_permute_vector_int.h: + +../gsl/gsl_permute_vector_ushort.h: + +../gsl/gsl_permute_vector_short.h: + +../gsl/gsl_permute_vector_uchar.h: + +../gsl/gsl_permute_vector_char.h: + +../gsl/gsl_permute_matrix.h: + +../gsl/gsl_permute_matrix_complex_long_double.h: + +../gsl/gsl_permute_matrix_complex_double.h: + +../gsl/gsl_permute_matrix_complex_float.h: + +../gsl/gsl_permute_matrix_long_double.h: + +../gsl/gsl_permute_matrix_double.h: + +../gsl/gsl_permute_matrix_float.h: + +../gsl/gsl_permute_matrix_ulong.h: + +../gsl/gsl_permute_matrix_long.h: + +../gsl/gsl_permute_matrix_uint.h: + +../gsl/gsl_permute_matrix_int.h: + +../gsl/gsl_permute_matrix_ushort.h: + +../gsl/gsl_permute_matrix_short.h: + +../gsl/gsl_permute_matrix_uchar.h: + +../gsl/gsl_permute_matrix_char.h: + +../templates_on.h: + +permute_source.c: + +../templates_off.h: diff --git a/gsl-2.5/permutation/.deps/test.Po b/gsl-2.5/permutation/.deps/test.Po new file mode 100644 index 00000000..eef27865 --- /dev/null +++ b/gsl-2.5/permutation/.deps/test.Po @@ -0,0 +1,144 @@ +test.o: test.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_permutation.h ../gsl/gsl_types.h ../gsl/gsl_errno.h \ + /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_inline.h ../gsl/gsl_check_range.h ../gsl/gsl_permute_double.h \ + ../gsl/gsl_test.h ../gsl/gsl_ieee_utils.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_permutation.h: + +../gsl/gsl_types.h: + +../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_permute_double.h: + +../gsl/gsl_test.h: + +../gsl/gsl_ieee_utils.h: diff --git a/gsl-2.5/permutation/.libs/libgslpermutation.la b/gsl-2.5/permutation/.libs/libgslpermutation.la new file mode 120000 index 00000000..423c95f7 --- /dev/null +++ b/gsl-2.5/permutation/.libs/libgslpermutation.la @@ -0,0 +1 @@ +../libgslpermutation.la \ No newline at end of file diff --git a/gsl-2.5/permutation/ChangeLog b/gsl-2.5/permutation/ChangeLog new file mode 100644 index 00000000..c4783872 --- /dev/null +++ b/gsl-2.5/permutation/ChangeLog @@ -0,0 +1,74 @@ +2009-07-09 Brian Gough + + * init.c (gsl_permutation_free): handle NULL argument in free + +2008-07-03 Brian Gough + + * permutation.c: move gsl_permutation_get to inline.c + + * gsl_permutation.h: use new inline declarations + + * inline.c: handle inline functions separately + + * Makefile.am (INCLUDES): use top_srcdir instead of top_builddir + +2003-02-17 Brian Gough + + * canonical.c (gsl_permutation_canonical_to_linear): fixed bug + confusing input and output (swapped pp and qq) + +Sat Apr 6 19:08:40 2002 Brian Gough + + * test.c (main): added tests for canonical representation + functions + + * canonical.c: functions for canonical representations + (Nicolas Darnis) + +Mon Apr 1 17:29:49 2002 Brian Gough + + * permutation.c (gsl_permutation_mul): added function for + combining permutations (Nicolas Darnis) + +Sat Feb 9 18:17:53 2002 Brian Gough + + * permutation.c (gsl_permutation_memcpy): added memcpy function + +Tue Sep 4 17:22:06 2001 Brian Gough + + * added permutations of complex arrays and vectors + + * permute_source.c: added permutations of complex arrays and + vectors + +Sat Dec 30 21:30:16 2000 Brian Gough + + * test.c: added the start of a test program + + * permutation.c: added gsl_permutation_next and + gsl_permutation_prev as in STL, from vattervi@msu.edu + +Mon Apr 24 20:54:03 2000 Brian Gough + + * gsl_permutation.h: renamed gsl_permutation_invert to + gsl_permutation_inverse + +Mon Apr 10 14:31:01 2000 Brian Gough + + * added functions for permuting data and vectors + +Thu Feb 24 17:53:55 2000 Brian Gough + + * permutation.c (gsl_permutation_invert): add an inverse function + for permutations + +Sat Feb 19 12:04:32 2000 Brian Gough + + * permutation.c (gsl_permutation_reverse): changed from return + type int to void, since no errors can occur. + +Fri Feb 18 12:06:13 2000 Brian Gough + + * permutation.c: added valid and reverse methods + (gsl_permutation_reverse): fixed bug in reverse + diff --git a/gsl-2.5/permutation/Makefile b/gsl-2.5/permutation/Makefile new file mode 100644 index 00000000..caeda4c6 --- /dev/null +++ b/gsl-2.5/permutation/Makefile @@ -0,0 +1,1058 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# permutation/Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + + + + +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/gsl +pkgincludedir = $(includedir)/gsl +pkglibdir = $(libdir)/gsl +pkglibexecdir = $(libexecdir)/gsl +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = x86_64-unknown-linux-gnu +host_triplet = x86_64-unknown-linux-gnu +check_PROGRAMS = test$(EXEEXT) +subdir = permutation +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp \ + $(noinst_HEADERS) $(pkginclude_HEADERS) \ + $(top_srcdir)/test-driver ChangeLog +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +libgslpermutation_la_LIBADD = +am_libgslpermutation_la_OBJECTS = init.lo file.lo permutation.lo \ + permute.lo canonical.lo inline.lo +libgslpermutation_la_OBJECTS = $(am_libgslpermutation_la_OBJECTS) +AM_V_lt = $(am__v_lt_$(V)) +am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) +am__v_lt_0 = --silent +am__v_lt_1 = +am_test_OBJECTS = test.$(OBJEXT) +test_OBJECTS = $(am_test_OBJECTS) +test_DEPENDENCIES = libgslpermutation.la ../vector/libgslvector.la \ + ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la \ + ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la \ + ../utils/libutils.la +AM_V_P = $(am__v_P_$(V)) +am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY)) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_$(V)) +am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_$(V)) +am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I. -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_$(V)) +am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_$(V)) +am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libgslpermutation_la_SOURCES) $(test_SOURCES) +DIST_SOURCES = $(libgslpermutation_la_SOURCES) $(test_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(pkgincludedir)" +HEADERS = $(noinst_HEADERS) $(pkginclude_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = .test +LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing aclocal-1.13 +AMTAR = $${TAR-tar} +AM_DEFAULT_VERBOSITY = 1 +AR = ar +AS = as +AUTOCONF = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing autoconf +AUTOHEADER = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing autoheader +AUTOMAKE = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing automake-1.13 +AWK = gawk +CC = gcc +CCDEPMODE = depmode=gcc3 +CFLAGS = -g -O2 +CPP = gcc -E +CPPFLAGS = +CYGPATH_W = echo +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +DLLTOOL = false +DSYMUTIL = +DUMPBIN = +ECHO_C = +ECHO_N = -n +ECHO_T = +EGREP = /usr/bin/grep -E +EXEEXT = +FGREP = /usr/bin/grep -F +GREP = /usr/bin/grep +GSLCBLAS_LDFLAGS = +GSL_CFLAGS = -I${prefix}/include +GSL_LDFLAGS = +GSL_LIBADD = +GSL_LIBM = -lm +GSL_LIBS = -L${exec_prefix}/lib -lgsl +GSL_LT_CBLAS_VERSION = 0:0:0 +GSL_LT_VERSION = 24:0:1 +GSL_MAJOR_VERSION = 2 +GSL_MINOR_VERSION = 5 +HAVE_AIX_IEEE_INTERFACE = +HAVE_DARWIN86_IEEE_INTERFACE = +HAVE_DARWIN_IEEE_INTERFACE = +HAVE_FREEBSD_IEEE_INTERFACE = +HAVE_GNUM68K_IEEE_INTERFACE = +HAVE_GNUPPC_IEEE_INTERFACE = +HAVE_GNUSPARC_IEEE_INTERFACE = +HAVE_GNUX86_IEEE_INTERFACE = +HAVE_HPUX11_IEEE_INTERFACE = +HAVE_HPUX_IEEE_INTERFACE = +HAVE_IRIX_IEEE_INTERFACE = +HAVE_NETBSD_IEEE_INTERFACE = +HAVE_OPENBSD_IEEE_INTERFACE = +HAVE_OS2EMX_IEEE_INTERFACE = +HAVE_SOLARIS_IEEE_INTERFACE = +HAVE_SUNOS4_IEEE_INTERFACE = +HAVE_TRU64_IEEE_INTERFACE = +INSTALL = /usr/bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = $(install_sh) -c -s +LD = /usr/bin/ld -m elf_x86_64 +LDFLAGS = +LIBM = -lm +LIBOBJS = +LIBS = -lm +LIBTOOL = $(SHELL) $(top_builddir)/libtool +LIPO = +LN_S = ln -s +LTLIBOBJS = +MAINT = # +MAKEINFO = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing makeinfo +MANIFEST_TOOL = : +MKDIR_P = /usr/bin/mkdir -p +NM = /usr/bin/nm -B +NMEDIT = +OBJDUMP = objdump +OBJEXT = o +OTOOL = +OTOOL64 = +PACKAGE = gsl +PACKAGE_BUGREPORT = +PACKAGE_NAME = gsl +PACKAGE_STRING = gsl 2.5 +PACKAGE_TARNAME = gsl +PACKAGE_URL = +PACKAGE_VERSION = 2.5 +PATH_SEPARATOR = : +RANLIB = ranlib +SED = /usr/bin/sed +SET_MAKE = +SHELL = /bin/sh +STRIP = strip +VERSION = 2.5 +abs_builddir = /home/groups/kipac/chto/package/gsl/gsl-2.5/permutation +abs_srcdir = /home/groups/kipac/chto/package/gsl/gsl-2.5/permutation +abs_top_builddir = /home/groups/kipac/chto/package/gsl/gsl-2.5 +abs_top_srcdir = /home/groups/kipac/chto/package/gsl/gsl-2.5 +ac_ct_AR = ar +ac_ct_CC = gcc +ac_ct_DUMPBIN = +am__include = include +am__leading_dot = . +am__quote = +am__tar = $${TAR-tar} chof - "$$tardir" +am__untar = $${TAR-tar} xf - +bindir = ${exec_prefix}/bin +build = x86_64-unknown-linux-gnu +build_alias = +build_cpu = x86_64 +build_os = linux-gnu +build_vendor = unknown +builddir = . +datadir = ${datarootdir} +datarootdir = ${prefix}/share +docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} +dvidir = ${docdir} +exec_prefix = ${prefix} +host = x86_64-unknown-linux-gnu +host_alias = +host_cpu = x86_64 +host_os = linux-gnu +host_vendor = unknown +htmldir = ${docdir} +includedir = ${prefix}/include +infodir = ${datarootdir}/info +install_sh = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/install-sh +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +localedir = ${datarootdir}/locale +localstatedir = ${prefix}/var +mandir = ${datarootdir}/man +mkdir_p = $(MKDIR_P) +oldincludedir = /usr/include +pdfdir = ${docdir} +prefix = /home/groups/kipac/chto/package/gsl/gsl_lib +program_transform_name = s,x,x, +psdir = ${docdir} +sbindir = ${exec_prefix}/sbin +sharedstatedir = ${prefix}/com +srcdir = . +sysconfdir = ${prefix}/etc +target_alias = +top_build_prefix = ../ +top_builddir = .. +top_srcdir = .. +noinst_LTLIBRARIES = libgslpermutation.la +pkginclude_HEADERS = gsl_permutation.h gsl_permute.h \ + gsl_permute_char.h gsl_permute_complex_double.h \ + gsl_permute_complex_float.h gsl_permute_complex_long_double.h \ + gsl_permute_double.h gsl_permute_float.h gsl_permute_int.h \ + gsl_permute_long.h gsl_permute_long_double.h \ + gsl_permute_short.h gsl_permute_uchar.h gsl_permute_uint.h \ + gsl_permute_ulong.h gsl_permute_ushort.h gsl_permute_vector.h \ + gsl_permute_vector_char.h gsl_permute_vector_complex_double.h \ + gsl_permute_vector_complex_float.h \ + gsl_permute_vector_complex_long_double.h \ + gsl_permute_vector_double.h gsl_permute_vector_float.h \ + gsl_permute_vector_int.h gsl_permute_vector_long.h \ + gsl_permute_vector_long_double.h gsl_permute_vector_short.h \ + gsl_permute_vector_uchar.h gsl_permute_vector_uint.h \ + gsl_permute_vector_ulong.h gsl_permute_vector_ushort.h \ + gsl_permute_matrix_char.h \ + gsl_permute_matrix_complex_long_double.h gsl_permute_matrix.h \ + gsl_permute_matrix_long.h gsl_permute_matrix_uint.h \ + gsl_permute_matrix_complex_double.h \ + gsl_permute_matrix_double.h gsl_permute_matrix_int.h \ + gsl_permute_matrix_short.h gsl_permute_matrix_ulong.h \ + gsl_permute_matrix_complex_float.h gsl_permute_matrix_float.h \ + gsl_permute_matrix_long_double.h gsl_permute_matrix_uchar.h \ + gsl_permute_matrix_ushort.h +AM_CPPFLAGS = -I$(top_srcdir) +libgslpermutation_la_SOURCES = init.c file.c permutation.c permute.c canonical.c inline.c +noinst_HEADERS = permute_source.c +TESTS = $(check_PROGRAMS) +test_SOURCES = test.c +test_LDADD = libgslpermutation.la ../vector/libgslvector.la ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu permutation/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu permutation/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: # $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): # $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libgslpermutation.la: $(libgslpermutation_la_OBJECTS) $(libgslpermutation_la_DEPENDENCIES) $(EXTRA_libgslpermutation_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(libgslpermutation_la_OBJECTS) $(libgslpermutation_la_LIBADD) $(LIBS) + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) $(EXTRA_test_DEPENDENCIES) + @rm -f test$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_OBJECTS) $(test_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +include ./$(DEPDIR)/canonical.Plo +include ./$(DEPDIR)/file.Plo +include ./$(DEPDIR)/init.Plo +include ./$(DEPDIR)/inline.Plo +include ./$(DEPDIR)/permutation.Plo +include ./$(DEPDIR)/permute.Plo +include ./$(DEPDIR)/test.Po + +.c.o: + $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# $(AM_V_CC)source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(COMPILE) -c $< + +.c.obj: + $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# $(AM_V_CC)source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: + $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +# $(AM_V_CC)source='$<' object='$@' libtool=yes \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-pkgincludeHEADERS: $(pkginclude_HEADERS) + @$(NORMAL_INSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \ + done + +uninstall-pkgincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + else \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_PROGRAMS) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +test.log: test$(EXEEXT) + @p='test$(EXEEXT)'; \ + b='test'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +#.test$(EXEEXT).log: +# @p='$<'; \ +# $(am__set_b); \ +# $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +# --log-file $$b.log --trs-file $$b.trs \ +# $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +# "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-am +all-am: Makefile $(LTLIBRARIES) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(pkgincludedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-pkgincludeHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-pkgincludeHEADERS + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES cscopelist-am ctags ctags-am distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-pkgincludeHEADERS \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + recheck tags tags-am uninstall uninstall-am \ + uninstall-pkgincludeHEADERS + + +#CLEANFILES = test.txt test.dat + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gsl-2.5/permutation/Makefile.am b/gsl-2.5/permutation/Makefile.am new file mode 100644 index 00000000..4c408cdd --- /dev/null +++ b/gsl-2.5/permutation/Makefile.am @@ -0,0 +1,21 @@ +noinst_LTLIBRARIES = libgslpermutation.la + +pkginclude_HEADERS = gsl_permutation.h gsl_permute.h gsl_permute_char.h gsl_permute_complex_double.h gsl_permute_complex_float.h gsl_permute_complex_long_double.h gsl_permute_double.h gsl_permute_float.h gsl_permute_int.h gsl_permute_long.h gsl_permute_long_double.h gsl_permute_short.h gsl_permute_uchar.h gsl_permute_uint.h gsl_permute_ulong.h gsl_permute_ushort.h gsl_permute_vector.h gsl_permute_vector_char.h gsl_permute_vector_complex_double.h gsl_permute_vector_complex_float.h gsl_permute_vector_complex_long_double.h gsl_permute_vector_double.h gsl_permute_vector_float.h gsl_permute_vector_int.h gsl_permute_vector_long.h gsl_permute_vector_long_double.h gsl_permute_vector_short.h gsl_permute_vector_uchar.h gsl_permute_vector_uint.h gsl_permute_vector_ulong.h gsl_permute_vector_ushort.h gsl_permute_matrix_char.h gsl_permute_matrix_complex_long_double.h gsl_permute_matrix.h gsl_permute_matrix_long.h gsl_permute_matrix_uint.h gsl_permute_matrix_complex_double.h gsl_permute_matrix_double.h gsl_permute_matrix_int.h gsl_permute_matrix_short.h gsl_permute_matrix_ulong.h gsl_permute_matrix_complex_float.h gsl_permute_matrix_float.h gsl_permute_matrix_long_double.h gsl_permute_matrix_uchar.h gsl_permute_matrix_ushort.h + +AM_CPPFLAGS = -I$(top_srcdir) + +libgslpermutation_la_SOURCES = init.c file.c permutation.c permute.c canonical.c inline.c + +noinst_HEADERS = permute_source.c + +TESTS = $(check_PROGRAMS) + +check_PROGRAMS = test + +test_SOURCES = test.c + +test_LDADD = libgslpermutation.la ../vector/libgslvector.la ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la + +#CLEANFILES = test.txt test.dat + + diff --git a/gsl-2.5/permutation/Makefile.in b/gsl-2.5/permutation/Makefile.in new file mode 100644 index 00000000..bfdba07c --- /dev/null +++ b/gsl-2.5/permutation/Makefile.in @@ -0,0 +1,1058 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + + +VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +check_PROGRAMS = test$(EXEEXT) +subdir = permutation +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp \ + $(noinst_HEADERS) $(pkginclude_HEADERS) \ + $(top_srcdir)/test-driver ChangeLog +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +libgslpermutation_la_LIBADD = +am_libgslpermutation_la_OBJECTS = init.lo file.lo permutation.lo \ + permute.lo canonical.lo inline.lo +libgslpermutation_la_OBJECTS = $(am_libgslpermutation_la_OBJECTS) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +am_test_OBJECTS = test.$(OBJEXT) +test_OBJECTS = $(am_test_OBJECTS) +test_DEPENDENCIES = libgslpermutation.la ../vector/libgslvector.la \ + ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la \ + ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la \ + ../utils/libutils.la +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libgslpermutation_la_SOURCES) $(test_SOURCES) +DIST_SOURCES = $(libgslpermutation_la_SOURCES) $(test_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(pkgincludedir)" +HEADERS = $(noinst_HEADERS) $(pkginclude_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = @EXEEXT@ .test +LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +GSLCBLAS_LDFLAGS = @GSLCBLAS_LDFLAGS@ +GSL_CFLAGS = @GSL_CFLAGS@ +GSL_LDFLAGS = @GSL_LDFLAGS@ +GSL_LIBADD = @GSL_LIBADD@ +GSL_LIBM = @GSL_LIBM@ +GSL_LIBS = @GSL_LIBS@ +GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ +GSL_LT_VERSION = @GSL_LT_VERSION@ +GSL_MAJOR_VERSION = @GSL_MAJOR_VERSION@ +GSL_MINOR_VERSION = @GSL_MINOR_VERSION@ +HAVE_AIX_IEEE_INTERFACE = @HAVE_AIX_IEEE_INTERFACE@ +HAVE_DARWIN86_IEEE_INTERFACE = @HAVE_DARWIN86_IEEE_INTERFACE@ +HAVE_DARWIN_IEEE_INTERFACE = @HAVE_DARWIN_IEEE_INTERFACE@ +HAVE_FREEBSD_IEEE_INTERFACE = @HAVE_FREEBSD_IEEE_INTERFACE@ +HAVE_GNUM68K_IEEE_INTERFACE = @HAVE_GNUM68K_IEEE_INTERFACE@ +HAVE_GNUPPC_IEEE_INTERFACE = @HAVE_GNUPPC_IEEE_INTERFACE@ +HAVE_GNUSPARC_IEEE_INTERFACE = @HAVE_GNUSPARC_IEEE_INTERFACE@ +HAVE_GNUX86_IEEE_INTERFACE = @HAVE_GNUX86_IEEE_INTERFACE@ +HAVE_HPUX11_IEEE_INTERFACE = @HAVE_HPUX11_IEEE_INTERFACE@ +HAVE_HPUX_IEEE_INTERFACE = @HAVE_HPUX_IEEE_INTERFACE@ +HAVE_IRIX_IEEE_INTERFACE = @HAVE_IRIX_IEEE_INTERFACE@ +HAVE_NETBSD_IEEE_INTERFACE = @HAVE_NETBSD_IEEE_INTERFACE@ +HAVE_OPENBSD_IEEE_INTERFACE = @HAVE_OPENBSD_IEEE_INTERFACE@ +HAVE_OS2EMX_IEEE_INTERFACE = @HAVE_OS2EMX_IEEE_INTERFACE@ +HAVE_SOLARIS_IEEE_INTERFACE = @HAVE_SOLARIS_IEEE_INTERFACE@ +HAVE_SUNOS4_IEEE_INTERFACE = @HAVE_SUNOS4_IEEE_INTERFACE@ +HAVE_TRU64_IEEE_INTERFACE = @HAVE_TRU64_IEEE_INTERFACE@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBM = @LIBM@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +noinst_LTLIBRARIES = libgslpermutation.la +pkginclude_HEADERS = gsl_permutation.h gsl_permute.h \ + gsl_permute_char.h gsl_permute_complex_double.h \ + gsl_permute_complex_float.h gsl_permute_complex_long_double.h \ + gsl_permute_double.h gsl_permute_float.h gsl_permute_int.h \ + gsl_permute_long.h gsl_permute_long_double.h \ + gsl_permute_short.h gsl_permute_uchar.h gsl_permute_uint.h \ + gsl_permute_ulong.h gsl_permute_ushort.h gsl_permute_vector.h \ + gsl_permute_vector_char.h gsl_permute_vector_complex_double.h \ + gsl_permute_vector_complex_float.h \ + gsl_permute_vector_complex_long_double.h \ + gsl_permute_vector_double.h gsl_permute_vector_float.h \ + gsl_permute_vector_int.h gsl_permute_vector_long.h \ + gsl_permute_vector_long_double.h gsl_permute_vector_short.h \ + gsl_permute_vector_uchar.h gsl_permute_vector_uint.h \ + gsl_permute_vector_ulong.h gsl_permute_vector_ushort.h \ + gsl_permute_matrix_char.h \ + gsl_permute_matrix_complex_long_double.h gsl_permute_matrix.h \ + gsl_permute_matrix_long.h gsl_permute_matrix_uint.h \ + gsl_permute_matrix_complex_double.h \ + gsl_permute_matrix_double.h gsl_permute_matrix_int.h \ + gsl_permute_matrix_short.h gsl_permute_matrix_ulong.h \ + gsl_permute_matrix_complex_float.h gsl_permute_matrix_float.h \ + gsl_permute_matrix_long_double.h gsl_permute_matrix_uchar.h \ + gsl_permute_matrix_ushort.h +AM_CPPFLAGS = -I$(top_srcdir) +libgslpermutation_la_SOURCES = init.c file.c permutation.c permute.c canonical.c inline.c +noinst_HEADERS = permute_source.c +TESTS = $(check_PROGRAMS) +test_SOURCES = test.c +test_LDADD = libgslpermutation.la ../vector/libgslvector.la ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu permutation/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu permutation/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libgslpermutation.la: $(libgslpermutation_la_OBJECTS) $(libgslpermutation_la_DEPENDENCIES) $(EXTRA_libgslpermutation_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(libgslpermutation_la_OBJECTS) $(libgslpermutation_la_LIBADD) $(LIBS) + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) $(EXTRA_test_DEPENDENCIES) + @rm -f test$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_OBJECTS) $(test_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/canonical.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/file.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/init.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/inline.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/permutation.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/permute.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test.Po@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-pkgincludeHEADERS: $(pkginclude_HEADERS) + @$(NORMAL_INSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \ + done + +uninstall-pkgincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + else \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_PROGRAMS) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +test.log: test$(EXEEXT) + @p='test$(EXEEXT)'; \ + b='test'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +@am__EXEEXT_TRUE@.test$(EXEEXT).log: +@am__EXEEXT_TRUE@ @p='$<'; \ +@am__EXEEXT_TRUE@ $(am__set_b); \ +@am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +@am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ +@am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +@am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-am +all-am: Makefile $(LTLIBRARIES) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(pkgincludedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-pkgincludeHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-pkgincludeHEADERS + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES cscopelist-am ctags ctags-am distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-pkgincludeHEADERS \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + recheck tags tags-am uninstall uninstall-am \ + uninstall-pkgincludeHEADERS + + +#CLEANFILES = test.txt test.dat + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gsl-2.5/permutation/canonical.c b/gsl-2.5/permutation/canonical.c new file mode 100644 index 00000000..d782f0e3 --- /dev/null +++ b/gsl-2.5/permutation/canonical.c @@ -0,0 +1,194 @@ +/* permutation/permutation.c + * + * Copyright (C) 2001, 2002 Nicolas Darnis + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Modified for GSL by Brian Gough. + * Use in-place algorithms, no need for workspace + * Use conventions for canonical form given in Knuth (opposite of Sedgewick) + */ + +#include +#include +#include + +int +gsl_permutation_linear_to_canonical (gsl_permutation * q, + const gsl_permutation * p) +{ + const size_t n = p->size; + size_t i, k, s; + size_t t = n; + + const size_t *const pp = p->data; + size_t *const qq = q->data; + + if (q->size != p->size) + { + GSL_ERROR ("size of q does not match size of p", GSL_EINVAL); + } + + for (i = 0; i < n; i++) + { + + k = pp[i]; + s = 1; + + while (k > i) + { + k = pp[k]; + s++; + } + + if (k < i) + continue; + + /* Now have k == i, i.e the least in its cycle, and s == cycle length */ + + t -= s; + + qq[t] = i; + + k = pp[i]; + s = 1; + + while (k > i) + { + qq[t + s] = k; + k = pp[k]; + s++; + } + + if (t == 0) + break; + } + + return GSL_SUCCESS; +} + +int +gsl_permutation_canonical_to_linear (gsl_permutation * p, + const gsl_permutation * q) +{ + size_t i, k, kk, first; + const size_t n = p->size; + + size_t *const pp = p->data; + const size_t *const qq = q->data; + + if (q->size != p->size) + { + GSL_ERROR ("size of q does not match size of p", GSL_EINVAL); + } + + for (i = 0; i < n; i++) + { + pp[i] = i; + } + + k = qq[0]; + first = pp[k]; + + for (i = 1; i < n; i++) + { + kk = qq[i]; + + if (kk > first) + { + pp[k] = pp[kk]; + k = kk; + } + else + { + pp[k] = first; + k = kk; + first = pp[kk]; + } + } + + pp[k] = first; + + return GSL_SUCCESS; +} + + +size_t +gsl_permutation_inversions (const gsl_permutation * p) +{ + size_t count = 0; + size_t i, j; + const size_t size = p->size; + + for (i = 0; i < size - 1; i++) + { + for (j = i + 1; j < size; j++) + { + if (p->data[i] > p->data[j]) + { + count++; + } + } + } + + return count; +} + +size_t +gsl_permutation_linear_cycles (const gsl_permutation * p) +{ + size_t i, k; + size_t count = 0; + const size_t size = p->size; + + for (i = 0; i < size; i++) + { + + k = p->data[i]; + + while (k > i) + { + k = p->data[k]; + } + + if (k < i) + continue; + + count++; + } + + return count; +} + +size_t +gsl_permutation_canonical_cycles (const gsl_permutation * p) +{ + size_t i; + size_t count = 1; + size_t min = p->data[0]; + + for (i = 0; i < p->size; i++) + { + if (p->data[i] < min) + { + min = p->data[i]; + count++; + } + } + + return count; +} + diff --git a/gsl-2.5/permutation/canonical.lo b/gsl-2.5/permutation/canonical.lo new file mode 100644 index 00000000..456cfd77 --- /dev/null +++ b/gsl-2.5/permutation/canonical.lo @@ -0,0 +1,12 @@ +# canonical.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/canonical.o' + +# Name of the non-PIC object +non_pic_object='canonical.o' + diff --git a/gsl-2.5/permutation/file.c b/gsl-2.5/permutation/file.c new file mode 100644 index 00000000..bb12fc68 --- /dev/null +++ b/gsl-2.5/permutation/file.c @@ -0,0 +1,113 @@ +/* permutation/file.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include + +#define IN_FORMAT "%lu" + +int +gsl_permutation_fread (FILE * stream, gsl_permutation * p) +{ + size_t n = p->size ; + + size_t * data = p->data ; + + size_t items = fread (data, sizeof (size_t), n, stream); + + if (items != n) + { + GSL_ERROR ("fread failed", GSL_EFAILED); + } + + return GSL_SUCCESS; +} + +int +gsl_permutation_fwrite (FILE * stream, const gsl_permutation * p) +{ + size_t n = p->size ; + + size_t * data = p->data ; + + size_t items = fwrite (data, sizeof (size_t), n, stream); + + if (items != n) + { + GSL_ERROR ("fwrite failed", GSL_EFAILED); + } + + return GSL_SUCCESS; +} + +int +gsl_permutation_fprintf (FILE * stream, const gsl_permutation * p, const char *format) +{ + size_t n = p->size ; + + size_t * data = p->data ; + + size_t i; + + for (i = 0; i < n; i++) + { + int status = fprintf (stream, format, data[i]); + + if (status < 0) + { + GSL_ERROR ("fprintf failed", GSL_EFAILED); + } + } + + return GSL_SUCCESS; +} + +int +gsl_permutation_fscanf (FILE * stream, gsl_permutation * p) +{ + size_t n = p->size ; + + size_t * data = p->data ; + + size_t i; + + for (i = 0; i < n; i++) + { + unsigned long j ; + + /* FIXME: what if size_t != unsigned long ??? + + want read in size_t but have to read in unsigned long to avoid + error from compiler */ + + int status = fscanf (stream, IN_FORMAT, &j); + + if (status != 1) + { + GSL_ERROR ("fscanf failed", GSL_EFAILED); + } + + data[i] = j; + } + + return GSL_SUCCESS; +} + diff --git a/gsl-2.5/permutation/file.lo b/gsl-2.5/permutation/file.lo new file mode 100644 index 00000000..1443af7c --- /dev/null +++ b/gsl-2.5/permutation/file.lo @@ -0,0 +1,12 @@ +# file.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/file.o' + +# Name of the non-PIC object +non_pic_object='file.o' + diff --git a/gsl-2.5/permutation/gsl_permutation.h b/gsl-2.5/permutation/gsl_permutation.h new file mode 100644 index 00000000..10ac0f58 --- /dev/null +++ b/gsl-2.5/permutation/gsl_permutation.h @@ -0,0 +1,100 @@ +/* permutation/gsl_permutation.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2004, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_PERMUTATION_H__ +#define __GSL_PERMUTATION_H__ + +#include +#include +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +struct gsl_permutation_struct +{ + size_t size; + size_t *data; +}; + +typedef struct gsl_permutation_struct gsl_permutation; + +gsl_permutation *gsl_permutation_alloc (const size_t n); +gsl_permutation *gsl_permutation_calloc (const size_t n); +void gsl_permutation_init (gsl_permutation * p); +void gsl_permutation_free (gsl_permutation * p); +int gsl_permutation_memcpy (gsl_permutation * dest, const gsl_permutation * src); + +int gsl_permutation_fread (FILE * stream, gsl_permutation * p); +int gsl_permutation_fwrite (FILE * stream, const gsl_permutation * p); +int gsl_permutation_fscanf (FILE * stream, gsl_permutation * p); +int gsl_permutation_fprintf (FILE * stream, const gsl_permutation * p, const char *format); + +size_t gsl_permutation_size (const gsl_permutation * p); +size_t * gsl_permutation_data (const gsl_permutation * p); + +int gsl_permutation_swap (gsl_permutation * p, const size_t i, const size_t j); + +int gsl_permutation_valid (const gsl_permutation * p); +void gsl_permutation_reverse (gsl_permutation * p); +int gsl_permutation_inverse (gsl_permutation * inv, const gsl_permutation * p); +int gsl_permutation_next (gsl_permutation * p); +int gsl_permutation_prev (gsl_permutation * p); +int gsl_permutation_mul (gsl_permutation * p, const gsl_permutation * pa, const gsl_permutation * pb); + +int gsl_permutation_linear_to_canonical (gsl_permutation * q, const gsl_permutation * p); +int gsl_permutation_canonical_to_linear (gsl_permutation * p, const gsl_permutation * q); + +size_t gsl_permutation_inversions (const gsl_permutation * p); +size_t gsl_permutation_linear_cycles (const gsl_permutation * p); +size_t gsl_permutation_canonical_cycles (const gsl_permutation * q); + +INLINE_DECL size_t gsl_permutation_get (const gsl_permutation * p, const size_t i); + +#ifdef HAVE_INLINE + +INLINE_FUN +size_t +gsl_permutation_get (const gsl_permutation * p, const size_t i) +{ +#if GSL_RANGE_CHECK + if (GSL_RANGE_COND(i >= p->size)) + { + GSL_ERROR_VAL ("index out of range", GSL_EINVAL, 0); + } +#endif + return p->data[i]; +} + +#endif /* HAVE_INLINE */ + +__END_DECLS + +#endif /* __GSL_PERMUTATION_H__ */ diff --git a/gsl-2.5/permutation/gsl_permute.h b/gsl-2.5/permutation/gsl_permute.h new file mode 100644 index 00000000..23f09a6f --- /dev/null +++ b/gsl-2.5/permutation/gsl_permute.h @@ -0,0 +1,24 @@ +#ifndef __GSL_PERMUTE_H__ +#define __GSL_PERMUTE_H__ + +#include +#include +#include + +#include +#include +#include + +#include +#include + +#include +#include + +#include +#include + +#include +#include + +#endif /* __GSL_PERMUTE_H__ */ diff --git a/gsl-2.5/permutation/gsl_permute_char.h b/gsl-2.5/permutation/gsl_permute_char.h new file mode 100644 index 00000000..bf2ebb1d --- /dev/null +++ b/gsl-2.5/permutation/gsl_permute_char.h @@ -0,0 +1,44 @@ +/* permutation/gsl_permute_char.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_PERMUTE_CHAR_H__ +#define __GSL_PERMUTE_CHAR_H__ + +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +int gsl_permute_char (const size_t * p, char * data, const size_t stride, const size_t n); +int gsl_permute_char_inverse (const size_t * p, char * data, const size_t stride, const size_t n); + +__END_DECLS + +#endif /* __GSL_PERMUTE_CHAR_H__ */ diff --git a/gsl-2.5/permutation/gsl_permute_complex_double.h b/gsl-2.5/permutation/gsl_permute_complex_double.h new file mode 100644 index 00000000..c20442b6 --- /dev/null +++ b/gsl-2.5/permutation/gsl_permute_complex_double.h @@ -0,0 +1,45 @@ +/* permutation/gsl_permute_complex_double.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_PERMUTE_COMPLEX_DOUBLE_H__ +#define __GSL_PERMUTE_COMPLEX_DOUBLE_H__ + +#include +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +int gsl_permute_complex (const size_t * p, double * data, const size_t stride, const size_t n); +int gsl_permute_complex_inverse (const size_t * p, double * data, const size_t stride, const size_t n); + +__END_DECLS + +#endif /* __GSL_PERMUTE_COMPLEX_DOUBLE_H__ */ diff --git a/gsl-2.5/permutation/gsl_permute_complex_float.h b/gsl-2.5/permutation/gsl_permute_complex_float.h new file mode 100644 index 00000000..65ee0fe4 --- /dev/null +++ b/gsl-2.5/permutation/gsl_permute_complex_float.h @@ -0,0 +1,45 @@ +/* permutation/gsl_permute_complex_float.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_PERMUTE_COMPLEX_FLOAT_H__ +#define __GSL_PERMUTE_COMPLEX_FLOAT_H__ + +#include +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +int gsl_permute_complex_float (const size_t * p, float * data, const size_t stride, const size_t n); +int gsl_permute_complex_float_inverse (const size_t * p, float * data, const size_t stride, const size_t n); + +__END_DECLS + +#endif /* __GSL_PERMUTE_COMPLEX_FLOAT_H__ */ diff --git a/gsl-2.5/permutation/gsl_permute_complex_long_double.h b/gsl-2.5/permutation/gsl_permute_complex_long_double.h new file mode 100644 index 00000000..4849b15d --- /dev/null +++ b/gsl-2.5/permutation/gsl_permute_complex_long_double.h @@ -0,0 +1,45 @@ +/* permutation/gsl_permute_complex_long_double.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_PERMUTE_COMPLEX_LONG_DOUBLE_H__ +#define __GSL_PERMUTE_COMPLEX_LONG_DOUBLE_H__ + +#include +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +int gsl_permute_complex_long_double (const size_t * p, long double * data, const size_t stride, const size_t n); +int gsl_permute_complex_long_double_inverse (const size_t * p, long double * data, const size_t stride, const size_t n); + +__END_DECLS + +#endif /* __GSL_PERMUTE_COMPLEX_LONG_DOUBLE_H__ */ diff --git a/gsl-2.5/permutation/gsl_permute_double.h b/gsl-2.5/permutation/gsl_permute_double.h new file mode 100644 index 00000000..58be1812 --- /dev/null +++ b/gsl-2.5/permutation/gsl_permute_double.h @@ -0,0 +1,44 @@ +/* permutation/gsl_permute_double.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_PERMUTE_DOUBLE_H__ +#define __GSL_PERMUTE_DOUBLE_H__ + +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +int gsl_permute (const size_t * p, double * data, const size_t stride, const size_t n); +int gsl_permute_inverse (const size_t * p, double * data, const size_t stride, const size_t n); + +__END_DECLS + +#endif /* __GSL_PERMUTE_DOUBLE_H__ */ diff --git a/gsl-2.5/permutation/gsl_permute_float.h b/gsl-2.5/permutation/gsl_permute_float.h new file mode 100644 index 00000000..bc79bd5a --- /dev/null +++ b/gsl-2.5/permutation/gsl_permute_float.h @@ -0,0 +1,44 @@ +/* permutation/gsl_permute_float.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_PERMUTE_FLOAT_H__ +#define __GSL_PERMUTE_FLOAT_H__ + +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +int gsl_permute_float (const size_t * p, float * data, const size_t stride, const size_t n); +int gsl_permute_float_inverse (const size_t * p, float * data, const size_t stride, const size_t n); + +__END_DECLS + +#endif /* __GSL_PERMUTE_FLOAT_H__ */ diff --git a/gsl-2.5/permutation/gsl_permute_int.h b/gsl-2.5/permutation/gsl_permute_int.h new file mode 100644 index 00000000..b6ff5008 --- /dev/null +++ b/gsl-2.5/permutation/gsl_permute_int.h @@ -0,0 +1,44 @@ +/* permutation/gsl_permute_int.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_PERMUTE_INT_H__ +#define __GSL_PERMUTE_INT_H__ + +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +int gsl_permute_int (const size_t * p, int * data, const size_t stride, const size_t n); +int gsl_permute_int_inverse (const size_t * p, int * data, const size_t stride, const size_t n); + +__END_DECLS + +#endif /* __GSL_PERMUTE_INT_H__ */ diff --git a/gsl-2.5/permutation/gsl_permute_long.h b/gsl-2.5/permutation/gsl_permute_long.h new file mode 100644 index 00000000..383294c5 --- /dev/null +++ b/gsl-2.5/permutation/gsl_permute_long.h @@ -0,0 +1,44 @@ +/* permutation/gsl_permute_long.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_PERMUTE_LONG_H__ +#define __GSL_PERMUTE_LONG_H__ + +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +int gsl_permute_long (const size_t * p, long * data, const size_t stride, const size_t n); +int gsl_permute_long_inverse (const size_t * p, long * data, const size_t stride, const size_t n); + +__END_DECLS + +#endif /* __GSL_PERMUTE_LONG_H__ */ diff --git a/gsl-2.5/permutation/gsl_permute_long_double.h b/gsl-2.5/permutation/gsl_permute_long_double.h new file mode 100644 index 00000000..f58e1cd8 --- /dev/null +++ b/gsl-2.5/permutation/gsl_permute_long_double.h @@ -0,0 +1,44 @@ +/* permutation/gsl_permute_long_double.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_PERMUTE_LONG_DOUBLE_H__ +#define __GSL_PERMUTE_LONG_DOUBLE_H__ + +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +int gsl_permute_long_double (const size_t * p, long double * data, const size_t stride, const size_t n); +int gsl_permute_long_double_inverse (const size_t * p, long double * data, const size_t stride, const size_t n); + +__END_DECLS + +#endif /* __GSL_PERMUTE_LONG_DOUBLE_H__ */ diff --git a/gsl-2.5/permutation/gsl_permute_matrix.h b/gsl-2.5/permutation/gsl_permute_matrix.h new file mode 100644 index 00000000..aa8e6721 --- /dev/null +++ b/gsl-2.5/permutation/gsl_permute_matrix.h @@ -0,0 +1,24 @@ +#ifndef __GSL_PERMUTE_MATRIX_H__ +#define __GSL_PERMUTE_MATRIX_H__ + +#include +#include +#include + +#include +#include +#include + +#include +#include + +#include +#include + +#include +#include + +#include +#include + +#endif /* __GSL_PERMUTE_MATRIX_H__ */ diff --git a/gsl-2.5/permutation/gsl_permute_matrix_char.h b/gsl-2.5/permutation/gsl_permute_matrix_char.h new file mode 100644 index 00000000..7ce67aaa --- /dev/null +++ b/gsl-2.5/permutation/gsl_permute_matrix_char.h @@ -0,0 +1,44 @@ +/* permutation/gsl_permute_matrix_char.h + * + * Copyright (C) 2016 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_PERMUTE_MATRIX_CHAR_H__ +#define __GSL_PERMUTE_MATRIX_CHAR_H__ + +#include +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +int gsl_permute_matrix_char (const gsl_permutation * p, gsl_matrix_char * A); + +__END_DECLS + +#endif /* __GSL_PERMUTE_MATRIX_CHAR_H__ */ diff --git a/gsl-2.5/permutation/gsl_permute_matrix_complex_double.h b/gsl-2.5/permutation/gsl_permute_matrix_complex_double.h new file mode 100644 index 00000000..0c047b49 --- /dev/null +++ b/gsl-2.5/permutation/gsl_permute_matrix_complex_double.h @@ -0,0 +1,44 @@ +/* permutation/gsl_permute_matrix_complex_double.h + * + * Copyright (C) 2016 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_PERMUTE_MATRIX_COMPLEX_DOUBLE_H__ +#define __GSL_PERMUTE_MATRIX_COMPLEX_DOUBLE_H__ + +#include +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +int gsl_permute_matrix_complex (const gsl_permutation * p, gsl_matrix_complex * A); + +__END_DECLS + +#endif /* __GSL_PERMUTE_MATRIX_COMPLEX_DOUBLE_H__ */ diff --git a/gsl-2.5/permutation/gsl_permute_matrix_complex_float.h b/gsl-2.5/permutation/gsl_permute_matrix_complex_float.h new file mode 100644 index 00000000..c0a7a94f --- /dev/null +++ b/gsl-2.5/permutation/gsl_permute_matrix_complex_float.h @@ -0,0 +1,44 @@ +/* permutation/gsl_permute_matrix_complex_float.h + * + * Copyright (C) 2016 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_PERMUTE_MATRIX_COMPLEX_FLOAT_H__ +#define __GSL_PERMUTE_MATRIX_COMPLEX_FLOAT_H__ + +#include +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +int gsl_permute_matrix_complex_float (const gsl_permutation * p, gsl_matrix_complex_float * A); + +__END_DECLS + +#endif /* __GSL_PERMUTE_MATRIX_COMPLEX_FLOAT_H__ */ diff --git a/gsl-2.5/permutation/gsl_permute_matrix_complex_long_double.h b/gsl-2.5/permutation/gsl_permute_matrix_complex_long_double.h new file mode 100644 index 00000000..a005e962 --- /dev/null +++ b/gsl-2.5/permutation/gsl_permute_matrix_complex_long_double.h @@ -0,0 +1,44 @@ +/* permutation/gsl_permute_matrix_complex_long_double.h + * + * Copyright (C) 2016 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_PERMUTE_MATRIX_COMPLEX_LONG_DOUBLE_H__ +#define __GSL_PERMUTE_MATRIX_COMPLEX_LONG_DOUBLE_H__ + +#include +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +int gsl_permute_matrix_complex_long_double (const gsl_permutation * p, gsl_matrix_complex_long_double * A); + +__END_DECLS + +#endif /* __GSL_PERMUTE_MATRIX_COMPLEX_LONG_DOUBLE_H__ */ diff --git a/gsl-2.5/permutation/gsl_permute_matrix_double.h b/gsl-2.5/permutation/gsl_permute_matrix_double.h new file mode 100644 index 00000000..2f17bd81 --- /dev/null +++ b/gsl-2.5/permutation/gsl_permute_matrix_double.h @@ -0,0 +1,44 @@ +/* permutation/gsl_permute_matrix_double.h + * + * Copyright (C) 2016 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_PERMUTE_MATRIX_DOUBLE_H__ +#define __GSL_PERMUTE_MATRIX_DOUBLE_H__ + +#include +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +int gsl_permute_matrix (const gsl_permutation * p, gsl_matrix * A); + +__END_DECLS + +#endif /* __GSL_PERMUTE_MATRIX_DOUBLE_H__ */ diff --git a/gsl-2.5/permutation/gsl_permute_matrix_float.h b/gsl-2.5/permutation/gsl_permute_matrix_float.h new file mode 100644 index 00000000..70036226 --- /dev/null +++ b/gsl-2.5/permutation/gsl_permute_matrix_float.h @@ -0,0 +1,44 @@ +/* permutation/gsl_permute_matrix_float.h + * + * Copyright (C) 2016 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_PERMUTE_MATRIX_FLOAT_H__ +#define __GSL_PERMUTE_MATRIX_FLOAT_H__ + +#include +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +int gsl_permute_matrix_float (const gsl_permutation * p, gsl_matrix_float * A); + +__END_DECLS + +#endif /* __GSL_PERMUTE_MATRIX_FLOAT_H__ */ diff --git a/gsl-2.5/permutation/gsl_permute_matrix_int.h b/gsl-2.5/permutation/gsl_permute_matrix_int.h new file mode 100644 index 00000000..27dfea0d --- /dev/null +++ b/gsl-2.5/permutation/gsl_permute_matrix_int.h @@ -0,0 +1,44 @@ +/* permutation/gsl_permute_matrix_int.h + * + * Copyright (C) 2016 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_PERMUTE_MATRIX_INT_H__ +#define __GSL_PERMUTE_MATRIX_INT_H__ + +#include +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +int gsl_permute_matrix_int (const gsl_permutation * p, gsl_matrix_int * A); + +__END_DECLS + +#endif /* __GSL_PERMUTE_MATRIX_INT_H__ */ diff --git a/gsl-2.5/permutation/gsl_permute_matrix_long.h b/gsl-2.5/permutation/gsl_permute_matrix_long.h new file mode 100644 index 00000000..6aaaaf43 --- /dev/null +++ b/gsl-2.5/permutation/gsl_permute_matrix_long.h @@ -0,0 +1,44 @@ +/* permutation/gsl_permute_matrix_long.h + * + * Copyright (C) 2016 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_PERMUTE_MATRIX_LONG_H__ +#define __GSL_PERMUTE_MATRIX_LONG_H__ + +#include +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +int gsl_permute_matrix_long (const gsl_permutation * p, gsl_matrix_long * A); + +__END_DECLS + +#endif /* __GSL_PERMUTE_MATRIX_LONG_H__ */ diff --git a/gsl-2.5/permutation/gsl_permute_matrix_long_double.h b/gsl-2.5/permutation/gsl_permute_matrix_long_double.h new file mode 100644 index 00000000..8a7d28c0 --- /dev/null +++ b/gsl-2.5/permutation/gsl_permute_matrix_long_double.h @@ -0,0 +1,44 @@ +/* permutation/gsl_permute_matrix_long_double.h + * + * Copyright (C) 2016 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_PERMUTE_MATRIX_LONG_DOUBLE_H__ +#define __GSL_PERMUTE_MATRIX_LONG_DOUBLE_H__ + +#include +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +int gsl_permute_matrix_long_double (const gsl_permutation * p, gsl_matrix_long_double * A); + +__END_DECLS + +#endif /* __GSL_PERMUTE_MATRIX_LONG_DOUBLE_H__ */ diff --git a/gsl-2.5/permutation/gsl_permute_matrix_short.h b/gsl-2.5/permutation/gsl_permute_matrix_short.h new file mode 100644 index 00000000..1982305f --- /dev/null +++ b/gsl-2.5/permutation/gsl_permute_matrix_short.h @@ -0,0 +1,44 @@ +/* permutation/gsl_permute_matrix_short.h + * + * Copyright (C) 2016 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_PERMUTE_MATRIX_SHORT_H__ +#define __GSL_PERMUTE_MATRIX_SHORT_H__ + +#include +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +int gsl_permute_matrix_short (const gsl_permutation * p, gsl_matrix_short * A); + +__END_DECLS + +#endif /* __GSL_PERMUTE_MATRIX_SHORT_H__ */ diff --git a/gsl-2.5/permutation/gsl_permute_matrix_uchar.h b/gsl-2.5/permutation/gsl_permute_matrix_uchar.h new file mode 100644 index 00000000..95991bfa --- /dev/null +++ b/gsl-2.5/permutation/gsl_permute_matrix_uchar.h @@ -0,0 +1,44 @@ +/* permutation/gsl_permute_matrix_uchar.h + * + * Copyright (C) 2016 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_PERMUTE_MATRIX_UCHAR_H__ +#define __GSL_PERMUTE_MATRIX_UCHAR_H__ + +#include +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +int gsl_permute_matrix_uchar (const gsl_permutation * p, gsl_matrix_uchar * A); + +__END_DECLS + +#endif /* __GSL_PERMUTE_MATRIX_UCHAR_H__ */ diff --git a/gsl-2.5/permutation/gsl_permute_matrix_uint.h b/gsl-2.5/permutation/gsl_permute_matrix_uint.h new file mode 100644 index 00000000..6497809c --- /dev/null +++ b/gsl-2.5/permutation/gsl_permute_matrix_uint.h @@ -0,0 +1,44 @@ +/* permutation/gsl_permute_matrix_uint.h + * + * Copyright (C) 2016 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_PERMUTE_MATRIX_UINT_H__ +#define __GSL_PERMUTE_MATRIX_UINT_H__ + +#include +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +int gsl_permute_matrix_uint (const gsl_permutation * p, gsl_matrix_uint * A); + +__END_DECLS + +#endif /* __GSL_PERMUTE_MATRIX_UINT_H__ */ diff --git a/gsl-2.5/permutation/gsl_permute_matrix_ulong.h b/gsl-2.5/permutation/gsl_permute_matrix_ulong.h new file mode 100644 index 00000000..5aabc470 --- /dev/null +++ b/gsl-2.5/permutation/gsl_permute_matrix_ulong.h @@ -0,0 +1,44 @@ +/* permutation/gsl_permute_matrix_ulong.h + * + * Copyright (C) 2016 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_PERMUTE_MATRIX_ULONG_H__ +#define __GSL_PERMUTE_MATRIX_ULONG_H__ + +#include +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +int gsl_permute_matrix_ulong (const gsl_permutation * p, gsl_matrix_ulong * A); + +__END_DECLS + +#endif /* __GSL_PERMUTE_MATRIX_ULONG_H__ */ diff --git a/gsl-2.5/permutation/gsl_permute_matrix_ushort.h b/gsl-2.5/permutation/gsl_permute_matrix_ushort.h new file mode 100644 index 00000000..e432ffee --- /dev/null +++ b/gsl-2.5/permutation/gsl_permute_matrix_ushort.h @@ -0,0 +1,44 @@ +/* permutation/gsl_permute_matrix_ushort.h + * + * Copyright (C) 2016 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_PERMUTE_MATRIX_USHORT_H__ +#define __GSL_PERMUTE_MATRIX_USHORT_H__ + +#include +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +int gsl_permute_matrix_ushort (const gsl_permutation * p, gsl_matrix_ushort * A); + +__END_DECLS + +#endif /* __GSL_PERMUTE_MATRIX_USHORT_H__ */ diff --git a/gsl-2.5/permutation/gsl_permute_short.h b/gsl-2.5/permutation/gsl_permute_short.h new file mode 100644 index 00000000..39cf55d6 --- /dev/null +++ b/gsl-2.5/permutation/gsl_permute_short.h @@ -0,0 +1,44 @@ +/* permutation/gsl_permute_short.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_PERMUTE_SHORT_H__ +#define __GSL_PERMUTE_SHORT_H__ + +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +int gsl_permute_short (const size_t * p, short * data, const size_t stride, const size_t n); +int gsl_permute_short_inverse (const size_t * p, short * data, const size_t stride, const size_t n); + +__END_DECLS + +#endif /* __GSL_PERMUTE_SHORT_H__ */ diff --git a/gsl-2.5/permutation/gsl_permute_uchar.h b/gsl-2.5/permutation/gsl_permute_uchar.h new file mode 100644 index 00000000..54bb401b --- /dev/null +++ b/gsl-2.5/permutation/gsl_permute_uchar.h @@ -0,0 +1,44 @@ +/* permutation/gsl_permute_uchar.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_PERMUTE_UCHAR_H__ +#define __GSL_PERMUTE_UCHAR_H__ + +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +int gsl_permute_uchar (const size_t * p, unsigned char * data, const size_t stride, const size_t n); +int gsl_permute_uchar_inverse (const size_t * p, unsigned char * data, const size_t stride, const size_t n); + +__END_DECLS + +#endif /* __GSL_PERMUTE_UCHAR_H__ */ diff --git a/gsl-2.5/permutation/gsl_permute_uint.h b/gsl-2.5/permutation/gsl_permute_uint.h new file mode 100644 index 00000000..8915b7bc --- /dev/null +++ b/gsl-2.5/permutation/gsl_permute_uint.h @@ -0,0 +1,44 @@ +/* permutation/gsl_permute_uint.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_PERMUTE_UINT_H__ +#define __GSL_PERMUTE_UINT_H__ + +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +int gsl_permute_uint (const size_t * p, unsigned int * data, const size_t stride, const size_t n); +int gsl_permute_uint_inverse (const size_t * p, unsigned int * data, const size_t stride, const size_t n); + +__END_DECLS + +#endif /* __GSL_PERMUTE_UINT_H__ */ diff --git a/gsl-2.5/permutation/gsl_permute_ulong.h b/gsl-2.5/permutation/gsl_permute_ulong.h new file mode 100644 index 00000000..0084c506 --- /dev/null +++ b/gsl-2.5/permutation/gsl_permute_ulong.h @@ -0,0 +1,44 @@ +/* permutation/gsl_permute_ulong.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_PERMUTE_ULONG_H__ +#define __GSL_PERMUTE_ULONG_H__ + +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +int gsl_permute_ulong (const size_t * p, unsigned long * data, const size_t stride, const size_t n); +int gsl_permute_ulong_inverse (const size_t * p, unsigned long * data, const size_t stride, const size_t n); + +__END_DECLS + +#endif /* __GSL_PERMUTE_ULONG_H__ */ diff --git a/gsl-2.5/permutation/gsl_permute_ushort.h b/gsl-2.5/permutation/gsl_permute_ushort.h new file mode 100644 index 00000000..eff079a5 --- /dev/null +++ b/gsl-2.5/permutation/gsl_permute_ushort.h @@ -0,0 +1,44 @@ +/* permutation/gsl_permute_ushort.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_PERMUTE_USHORT_H__ +#define __GSL_PERMUTE_USHORT_H__ + +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +int gsl_permute_ushort (const size_t * p, unsigned short * data, const size_t stride, const size_t n); +int gsl_permute_ushort_inverse (const size_t * p, unsigned short * data, const size_t stride, const size_t n); + +__END_DECLS + +#endif /* __GSL_PERMUTE_USHORT_H__ */ diff --git a/gsl-2.5/permutation/gsl_permute_vector.h b/gsl-2.5/permutation/gsl_permute_vector.h new file mode 100644 index 00000000..4369e495 --- /dev/null +++ b/gsl-2.5/permutation/gsl_permute_vector.h @@ -0,0 +1,24 @@ +#ifndef __GSL_PERMUTE_VECTOR_H__ +#define __GSL_PERMUTE_VECTOR_H__ + +#include +#include +#include + +#include +#include +#include + +#include +#include + +#include +#include + +#include +#include + +#include +#include + +#endif /* __GSL_PERMUTE_VECTOR_H__ */ diff --git a/gsl-2.5/permutation/gsl_permute_vector_char.h b/gsl-2.5/permutation/gsl_permute_vector_char.h new file mode 100644 index 00000000..15278edd --- /dev/null +++ b/gsl-2.5/permutation/gsl_permute_vector_char.h @@ -0,0 +1,45 @@ +/* permutation/gsl_permute_vector_char.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_PERMUTE_VECTOR_CHAR_H__ +#define __GSL_PERMUTE_VECTOR_CHAR_H__ + +#include +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +int gsl_permute_vector_char (const gsl_permutation * p, gsl_vector_char * v); +int gsl_permute_vector_char_inverse (const gsl_permutation * p, gsl_vector_char * v); + +__END_DECLS + +#endif /* __GSL_PERMUTE_VECTOR_CHAR_H__ */ diff --git a/gsl-2.5/permutation/gsl_permute_vector_complex_double.h b/gsl-2.5/permutation/gsl_permute_vector_complex_double.h new file mode 100644 index 00000000..60558e21 --- /dev/null +++ b/gsl-2.5/permutation/gsl_permute_vector_complex_double.h @@ -0,0 +1,45 @@ +/* permutation/gsl_permute_vector_complex_double.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_PERMUTE_VECTOR_COMPLEX_DOUBLE_H__ +#define __GSL_PERMUTE_VECTOR_COMPLEX_DOUBLE_H__ + +#include +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +int gsl_permute_vector_complex (const gsl_permutation * p, gsl_vector_complex * v); +int gsl_permute_vector_complex_inverse (const gsl_permutation * p, gsl_vector_complex * v); + +__END_DECLS + +#endif /* __GSL_PERMUTE_VECTOR_COMPLEX_DOUBLE_H__ */ diff --git a/gsl-2.5/permutation/gsl_permute_vector_complex_float.h b/gsl-2.5/permutation/gsl_permute_vector_complex_float.h new file mode 100644 index 00000000..b08696bc --- /dev/null +++ b/gsl-2.5/permutation/gsl_permute_vector_complex_float.h @@ -0,0 +1,45 @@ +/* permutation/gsl_permute_vector_complex_float.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_PERMUTE_VECTOR_COMPLEX_FLOAT_H__ +#define __GSL_PERMUTE_VECTOR_COMPLEX_FLOAT_H__ + +#include +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +int gsl_permute_vector_complex_float (const gsl_permutation * p, gsl_vector_complex_float * v); +int gsl_permute_vector_complex_float_inverse (const gsl_permutation * p, gsl_vector_complex_float * v); + +__END_DECLS + +#endif /* __GSL_PERMUTE_VECTOR_COMPLEX_FLOAT_H__ */ diff --git a/gsl-2.5/permutation/gsl_permute_vector_complex_long_double.h b/gsl-2.5/permutation/gsl_permute_vector_complex_long_double.h new file mode 100644 index 00000000..c19ac25d --- /dev/null +++ b/gsl-2.5/permutation/gsl_permute_vector_complex_long_double.h @@ -0,0 +1,45 @@ +/* permutation/gsl_permute_vector_complex_long_double.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_PERMUTE_VECTOR_COMPLEX_LONG_DOUBLE_H__ +#define __GSL_PERMUTE_VECTOR_COMPLEX_LONG_DOUBLE_H__ + +#include +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +int gsl_permute_vector_complex_long_double (const gsl_permutation * p, gsl_vector_complex_long_double * v); +int gsl_permute_vector_complex_long_double_inverse (const gsl_permutation * p, gsl_vector_complex_long_double * v); + +__END_DECLS + +#endif /* __GSL_PERMUTE_VECTOR_COMPLEX_LONG_DOUBLE_H__ */ diff --git a/gsl-2.5/permutation/gsl_permute_vector_double.h b/gsl-2.5/permutation/gsl_permute_vector_double.h new file mode 100644 index 00000000..65f61674 --- /dev/null +++ b/gsl-2.5/permutation/gsl_permute_vector_double.h @@ -0,0 +1,45 @@ +/* permutation/gsl_permute_vector_double.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_PERMUTE_VECTOR_DOUBLE_H__ +#define __GSL_PERMUTE_VECTOR_DOUBLE_H__ + +#include +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +int gsl_permute_vector (const gsl_permutation * p, gsl_vector * v); +int gsl_permute_vector_inverse (const gsl_permutation * p, gsl_vector * v); + +__END_DECLS + +#endif /* __GSL_PERMUTE_VECTOR_DOUBLE_H__ */ diff --git a/gsl-2.5/permutation/gsl_permute_vector_float.h b/gsl-2.5/permutation/gsl_permute_vector_float.h new file mode 100644 index 00000000..bdd9d1a6 --- /dev/null +++ b/gsl-2.5/permutation/gsl_permute_vector_float.h @@ -0,0 +1,45 @@ +/* permutation/gsl_permute_vector_float.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_PERMUTE_VECTOR_FLOAT_H__ +#define __GSL_PERMUTE_VECTOR_FLOAT_H__ + +#include +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +int gsl_permute_vector_float (const gsl_permutation * p, gsl_vector_float * v); +int gsl_permute_vector_float_inverse (const gsl_permutation * p, gsl_vector_float * v); + +__END_DECLS + +#endif /* __GSL_PERMUTE_VECTOR_FLOAT_H__ */ diff --git a/gsl-2.5/permutation/gsl_permute_vector_int.h b/gsl-2.5/permutation/gsl_permute_vector_int.h new file mode 100644 index 00000000..3316d504 --- /dev/null +++ b/gsl-2.5/permutation/gsl_permute_vector_int.h @@ -0,0 +1,45 @@ +/* permutation/gsl_permute_vector_int.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_PERMUTE_VECTOR_INT_H__ +#define __GSL_PERMUTE_VECTOR_INT_H__ + +#include +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +int gsl_permute_vector_int (const gsl_permutation * p, gsl_vector_int * v); +int gsl_permute_vector_int_inverse (const gsl_permutation * p, gsl_vector_int * v); + +__END_DECLS + +#endif /* __GSL_PERMUTE_VECTOR_INT_H__ */ diff --git a/gsl-2.5/permutation/gsl_permute_vector_long.h b/gsl-2.5/permutation/gsl_permute_vector_long.h new file mode 100644 index 00000000..291f949b --- /dev/null +++ b/gsl-2.5/permutation/gsl_permute_vector_long.h @@ -0,0 +1,45 @@ +/* permutation/gsl_permute_vector_long.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_PERMUTE_VECTOR_LONG_H__ +#define __GSL_PERMUTE_VECTOR_LONG_H__ + +#include +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +int gsl_permute_vector_long (const gsl_permutation * p, gsl_vector_long * v); +int gsl_permute_vector_long_inverse (const gsl_permutation * p, gsl_vector_long * v); + +__END_DECLS + +#endif /* __GSL_PERMUTE_VECTOR_LONG_H__ */ diff --git a/gsl-2.5/permutation/gsl_permute_vector_long_double.h b/gsl-2.5/permutation/gsl_permute_vector_long_double.h new file mode 100644 index 00000000..a6b02960 --- /dev/null +++ b/gsl-2.5/permutation/gsl_permute_vector_long_double.h @@ -0,0 +1,45 @@ +/* permutation/gsl_permute_vector_long_double.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_PERMUTE_VECTOR_LONG_DOUBLE_H__ +#define __GSL_PERMUTE_VECTOR_LONG_DOUBLE_H__ + +#include +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +int gsl_permute_vector_long_double (const gsl_permutation * p, gsl_vector_long_double * v); +int gsl_permute_vector_long_double_inverse (const gsl_permutation * p, gsl_vector_long_double * v); + +__END_DECLS + +#endif /* __GSL_PERMUTE_VECTOR_LONG_DOUBLE_H__ */ diff --git a/gsl-2.5/permutation/gsl_permute_vector_short.h b/gsl-2.5/permutation/gsl_permute_vector_short.h new file mode 100644 index 00000000..cd0dd6b4 --- /dev/null +++ b/gsl-2.5/permutation/gsl_permute_vector_short.h @@ -0,0 +1,45 @@ +/* permutation/gsl_permute_vector_short.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_PERMUTE_VECTOR_SHORT_H__ +#define __GSL_PERMUTE_VECTOR_SHORT_H__ + +#include +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +int gsl_permute_vector_short (const gsl_permutation * p, gsl_vector_short * v); +int gsl_permute_vector_short_inverse (const gsl_permutation * p, gsl_vector_short * v); + +__END_DECLS + +#endif /* __GSL_PERMUTE_VECTOR_SHORT_H__ */ diff --git a/gsl-2.5/permutation/gsl_permute_vector_uchar.h b/gsl-2.5/permutation/gsl_permute_vector_uchar.h new file mode 100644 index 00000000..df069a0a --- /dev/null +++ b/gsl-2.5/permutation/gsl_permute_vector_uchar.h @@ -0,0 +1,45 @@ +/* permutation/gsl_permute_vector_uchar.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_PERMUTE_VECTOR_UCHAR_H__ +#define __GSL_PERMUTE_VECTOR_UCHAR_H__ + +#include +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +int gsl_permute_vector_uchar (const gsl_permutation * p, gsl_vector_uchar * v); +int gsl_permute_vector_uchar_inverse (const gsl_permutation * p, gsl_vector_uchar * v); + +__END_DECLS + +#endif /* __GSL_PERMUTE_VECTOR_UCHAR_H__ */ diff --git a/gsl-2.5/permutation/gsl_permute_vector_uint.h b/gsl-2.5/permutation/gsl_permute_vector_uint.h new file mode 100644 index 00000000..ee5218af --- /dev/null +++ b/gsl-2.5/permutation/gsl_permute_vector_uint.h @@ -0,0 +1,45 @@ +/* permutation/gsl_permute_vector_uint.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_PERMUTE_VECTOR_UINT_H__ +#define __GSL_PERMUTE_VECTOR_UINT_H__ + +#include +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +int gsl_permute_vector_uint (const gsl_permutation * p, gsl_vector_uint * v); +int gsl_permute_vector_uint_inverse (const gsl_permutation * p, gsl_vector_uint * v); + +__END_DECLS + +#endif /* __GSL_PERMUTE_VECTOR_UINT_H__ */ diff --git a/gsl-2.5/permutation/gsl_permute_vector_ulong.h b/gsl-2.5/permutation/gsl_permute_vector_ulong.h new file mode 100644 index 00000000..e536d9a8 --- /dev/null +++ b/gsl-2.5/permutation/gsl_permute_vector_ulong.h @@ -0,0 +1,45 @@ +/* permutation/gsl_permute_vector_ulong.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_PERMUTE_VECTOR_ULONG_H__ +#define __GSL_PERMUTE_VECTOR_ULONG_H__ + +#include +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +int gsl_permute_vector_ulong (const gsl_permutation * p, gsl_vector_ulong * v); +int gsl_permute_vector_ulong_inverse (const gsl_permutation * p, gsl_vector_ulong * v); + +__END_DECLS + +#endif /* __GSL_PERMUTE_VECTOR_ULONG_H__ */ diff --git a/gsl-2.5/permutation/gsl_permute_vector_ushort.h b/gsl-2.5/permutation/gsl_permute_vector_ushort.h new file mode 100644 index 00000000..7533ba00 --- /dev/null +++ b/gsl-2.5/permutation/gsl_permute_vector_ushort.h @@ -0,0 +1,45 @@ +/* permutation/gsl_permute_vector_ushort.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_PERMUTE_VECTOR_USHORT_H__ +#define __GSL_PERMUTE_VECTOR_USHORT_H__ + +#include +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +int gsl_permute_vector_ushort (const gsl_permutation * p, gsl_vector_ushort * v); +int gsl_permute_vector_ushort_inverse (const gsl_permutation * p, gsl_vector_ushort * v); + +__END_DECLS + +#endif /* __GSL_PERMUTE_VECTOR_USHORT_H__ */ diff --git a/gsl-2.5/permutation/init.c b/gsl-2.5/permutation/init.c new file mode 100644 index 00000000..e9873650 --- /dev/null +++ b/gsl-2.5/permutation/init.c @@ -0,0 +1,99 @@ +/* permutation/init.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include + +gsl_permutation * +gsl_permutation_alloc (const size_t n) +{ + gsl_permutation * p; + + if (n == 0) + { + GSL_ERROR_VAL ("permutation length n must be positive integer", + GSL_EDOM, 0); + } + + p = (gsl_permutation *) malloc (sizeof (gsl_permutation)); + + if (p == 0) + { + GSL_ERROR_VAL ("failed to allocate space for permutation struct", + GSL_ENOMEM, 0); + } + + p->data = (size_t *) malloc (n * sizeof (size_t)); + + if (p->data == 0) + { + free (p); /* exception in constructor, avoid memory leak */ + + GSL_ERROR_VAL ("failed to allocate space for permutation data", + GSL_ENOMEM, 0); + } + + p->size = n; + + return p; +} + +gsl_permutation * +gsl_permutation_calloc (const size_t n) +{ + size_t i; + + gsl_permutation * p = gsl_permutation_alloc (n); + + if (p == 0) + return 0; + + /* initialize permutation to identity */ + + for (i = 0; i < n; i++) + { + p->data[i] = i; + } + + return p; +} + +void +gsl_permutation_init (gsl_permutation * p) +{ + const size_t n = p->size ; + size_t i; + + /* initialize permutation to identity */ + + for (i = 0; i < n; i++) + { + p->data[i] = i; + } +} + +void +gsl_permutation_free (gsl_permutation * p) +{ + RETURN_IF_NULL (p); + free (p->data); + free (p); +} diff --git a/gsl-2.5/permutation/init.lo b/gsl-2.5/permutation/init.lo new file mode 100644 index 00000000..c1ea778f --- /dev/null +++ b/gsl-2.5/permutation/init.lo @@ -0,0 +1,12 @@ +# init.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/init.o' + +# Name of the non-PIC object +non_pic_object='init.o' + diff --git a/gsl-2.5/permutation/inline.c b/gsl-2.5/permutation/inline.c new file mode 100644 index 00000000..527576d4 --- /dev/null +++ b/gsl-2.5/permutation/inline.c @@ -0,0 +1,27 @@ +/* permutation/inline.c + * + * Copyright (C) 2008 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include + +/* Compile all the inline functions */ + +#define COMPILE_INLINE_STATIC +#include "build.h" +#include diff --git a/gsl-2.5/permutation/inline.lo b/gsl-2.5/permutation/inline.lo new file mode 100644 index 00000000..c5763370 --- /dev/null +++ b/gsl-2.5/permutation/inline.lo @@ -0,0 +1,12 @@ +# inline.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/inline.o' + +# Name of the non-PIC object +non_pic_object='inline.o' + diff --git a/gsl-2.5/permutation/libgslpermutation.la b/gsl-2.5/permutation/libgslpermutation.la new file mode 100644 index 00000000..91232e5d --- /dev/null +++ b/gsl-2.5/permutation/libgslpermutation.la @@ -0,0 +1,41 @@ +# libgslpermutation.la - a libtool library file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='' + +# Names of this library. +library_names='' + +# The name of the static archive. +old_library='libgslpermutation.a' + +# Linker flags that can not go in dependency_libs. +inherited_linker_flags='' + +# Libraries that this one depends upon. +dependency_libs=' -lm' + +# Names of additional weak libraries provided by this library +weak_library_names='' + +# Version information for libgslpermutation. +current= +age= +revision= + +# Is this an already installed library? +installed=no + +# Should we warn about portability when linking against -modules? +shouldnotlink=no + +# Files to dlopen/dlpreopen +dlopen='' +dlpreopen='' + +# Directory that this library needs to be installed in: +libdir='' diff --git a/gsl-2.5/permutation/permutation.c b/gsl-2.5/permutation/permutation.c new file mode 100644 index 00000000..a699502a --- /dev/null +++ b/gsl-2.5/permutation/permutation.c @@ -0,0 +1,276 @@ +/* permutation/permutation.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include + +size_t +gsl_permutation_size (const gsl_permutation * p) +{ + return p->size ; +} + +size_t * +gsl_permutation_data (const gsl_permutation * p) +{ + return p->data ; +} + +int +gsl_permutation_swap (gsl_permutation * p, const size_t i, const size_t j) +{ + const size_t size = p->size ; + + if (i >= size) + { + GSL_ERROR("first index is out of range", GSL_EINVAL); + } + + if (j >= size) + { + GSL_ERROR("second index is out of range", GSL_EINVAL); + } + + if (i != j) + { + size_t tmp = p->data[i]; + p->data[i] = p->data[j]; + p->data[j] = tmp; + } + + return GSL_SUCCESS; +} + + +int +gsl_permutation_valid (const gsl_permutation * p) +{ + const size_t size = p->size ; + + size_t i, j ; + + for (i = 0; i < size; i++) + { + if (p->data[i] >= size) + { + GSL_ERROR("permutation index outside range", GSL_FAILURE) ; + } + + for (j = 0; j < i; j++) + { + if (p->data[i] == p->data[j]) + { + GSL_ERROR("duplicate permutation index", GSL_FAILURE) ; + } + } + } + + return GSL_SUCCESS; +} + +void +gsl_permutation_reverse (gsl_permutation * p) +{ + const size_t size = p->size ; + + size_t i ; + + for (i = 0; i < (size / 2); i++) + { + size_t j = size - i - 1; + + size_t tmp = p->data[i] ; + p->data[i] = p->data[j] ; + p->data[j] = tmp ; + } +} + +int +gsl_permutation_inverse (gsl_permutation * inv, const gsl_permutation * p) +{ + const size_t size = p->size ; + + size_t i ; + + if (inv->size != size) + { + GSL_ERROR("permutation lengths are not equal", GSL_EBADLEN); + } + + for (i = 0; i < size; i++) + { + inv->data[p->data[i]] = i ; + } + + return GSL_SUCCESS ; +} + +int +gsl_permutation_next (gsl_permutation * p) +{ + /* Replaces p with the next permutation (in the standard lexicographical + * ordering). Returns GSL_FAILURE if there is no next permutation. + */ + const size_t size = p->size; + size_t i, j, k; + + if (size < 2) + { + return GSL_FAILURE; + } + + i = size - 2; + + while ((p->data[i] > p->data[i+1]) && (i != 0)) + { + i--; + } + + if ((i == 0) && (p->data[0] > p->data[1])) + { + return GSL_FAILURE; + } + + k = i + 1; + + for (j = i + 2; j < size; j++ ) + { + if ((p->data[j] > p->data[i]) && (p->data[j] < p->data[k])) + { + k = j; + } + } + + /* swap i and k */ + + { + size_t tmp = p->data[i]; + p->data[i] = p->data[k]; + p->data[k] = tmp; + } + + for (j = i + 1; j <= ((size + i) / 2); j++) + { + size_t tmp = p->data[j]; + p->data[j] = p->data[size + i - j]; + p->data[size + i - j] = tmp; + } + + return GSL_SUCCESS; +} + +int +gsl_permutation_prev (gsl_permutation * p) +{ + const size_t size = p->size; + size_t i, j, k; + + if (size < 2) + { + return GSL_FAILURE; + } + + i = size - 2; + + while ((p->data[i] < p->data[i+1]) && (i != 0)) + { + i--; + } + + if ((i == 0) && (p->data[0] < p->data[1])) + { + return GSL_FAILURE; + } + + k = i + 1; + + for (j = i + 2; j < size; j++ ) + { + if ((p->data[j] < p->data[i]) && (p->data[j] > p->data[k])) + { + k = j; + } + } + + /* swap i and k */ + + { + size_t tmp = p->data[i]; + p->data[i] = p->data[k]; + p->data[k] = tmp; + } + + for (j = i + 1; j <= ((size + i) / 2); j++) + { + size_t tmp = p->data[j]; + p->data[j] = p->data[size + i - j]; + p->data[size + i - j] = tmp; + } + + return GSL_SUCCESS; +} + +int +gsl_permutation_mul (gsl_permutation * p, const gsl_permutation * pa, const gsl_permutation * pb) +{ + size_t i; + const size_t size = p->size; + + if (pa->size != size) + { + GSL_ERROR("size of result does not match size of pa", GSL_EINVAL); + } + + if (pb->size != size) + { + GSL_ERROR("size of result does not match size of pb", GSL_EINVAL); + } + + for (i = 0; i < size; i++) + { + p->data[i] = pb->data[pa->data[i]]; + } + + return GSL_SUCCESS; +} + +int +gsl_permutation_memcpy (gsl_permutation * dest, + const gsl_permutation * src) +{ + const size_t src_size = src->size; + const size_t dest_size = dest->size; + + if (src_size != dest_size) + { + GSL_ERROR ("permutation lengths are not equal", GSL_EBADLEN); + } + + { + size_t j; + + for (j = 0; j < src_size; j++) + { + dest->data[j] = src->data[j]; + } + } + + return GSL_SUCCESS; +} diff --git a/gsl-2.5/permutation/permutation.lo b/gsl-2.5/permutation/permutation.lo new file mode 100644 index 00000000..728049f6 --- /dev/null +++ b/gsl-2.5/permutation/permutation.lo @@ -0,0 +1,12 @@ +# permutation.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/permutation.o' + +# Name of the non-PIC object +non_pic_object='permutation.o' + diff --git a/gsl-2.5/permutation/permute.c b/gsl-2.5/permutation/permute.c new file mode 100644 index 00000000..ac6a8c53 --- /dev/null +++ b/gsl-2.5/permutation/permute.c @@ -0,0 +1,91 @@ +#include +#include +#include +#include +#include +#include +#include + +#define BASE_GSL_COMPLEX_LONG +#include "templates_on.h" +#include "permute_source.c" +#include "templates_off.h" +#undef BASE_GSL_COMPLEX_LONG + +#define BASE_GSL_COMPLEX +#include "templates_on.h" +#include "permute_source.c" +#include "templates_off.h" +#undef BASE_GSL_COMPLEX + +#define BASE_GSL_COMPLEX_FLOAT +#include "templates_on.h" +#include "permute_source.c" +#include "templates_off.h" +#undef BASE_GSL_COMPLEX_FLOAT + +#define BASE_LONG_DOUBLE +#include "templates_on.h" +#include "permute_source.c" +#include "templates_off.h" +#undef BASE_LONG_DOUBLE + +#define BASE_DOUBLE +#include "templates_on.h" +#include "permute_source.c" +#include "templates_off.h" +#undef BASE_DOUBLE + +#define BASE_FLOAT +#include "templates_on.h" +#include "permute_source.c" +#include "templates_off.h" +#undef BASE_FLOAT + +#define BASE_ULONG +#include "templates_on.h" +#include "permute_source.c" +#include "templates_off.h" +#undef BASE_ULONG + +#define BASE_LONG +#include "templates_on.h" +#include "permute_source.c" +#include "templates_off.h" +#undef BASE_LONG + +#define BASE_UINT +#include "templates_on.h" +#include "permute_source.c" +#include "templates_off.h" +#undef BASE_UINT + +#define BASE_INT +#include "templates_on.h" +#include "permute_source.c" +#include "templates_off.h" +#undef BASE_INT + +#define BASE_USHORT +#include "templates_on.h" +#include "permute_source.c" +#include "templates_off.h" +#undef BASE_USHORT + +#define BASE_SHORT +#include "templates_on.h" +#include "permute_source.c" +#include "templates_off.h" +#undef BASE_SHORT + +#define BASE_UCHAR +#include "templates_on.h" +#include "permute_source.c" +#include "templates_off.h" +#undef BASE_UCHAR + +#define BASE_CHAR +#include "templates_on.h" +#include "permute_source.c" +#include "templates_off.h" +#undef BASE_CHAR diff --git a/gsl-2.5/permutation/permute.lo b/gsl-2.5/permutation/permute.lo new file mode 100644 index 00000000..a4a4194c --- /dev/null +++ b/gsl-2.5/permutation/permute.lo @@ -0,0 +1,12 @@ +# permute.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/permute.o' + +# Name of the non-PIC object +non_pic_object='permute.o' + diff --git a/gsl-2.5/permutation/permute_source.c b/gsl-2.5/permutation/permute_source.c new file mode 100644 index 00000000..fb5677bc --- /dev/null +++ b/gsl-2.5/permutation/permute_source.c @@ -0,0 +1,185 @@ +/* permutation/permute_source.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* In-place Permutations + + permute: OUT[i] = IN[perm[i]] i = 0 .. N-1 + invpermute: OUT[perm[i]] = IN[i] i = 0 .. N-1 + + PERM is an index map, i.e. a vector which contains a permutation of + the integers 0 .. N-1. + + From Knuth "Sorting and Searching", Volume 3 (3rd ed), Section 5.2 + Exercise 10 (answers), p 617 + + FIXME: these have not been fully tested. +*/ + +int +TYPE (gsl_permute) (const size_t * p, ATOMIC * data, const size_t stride, const size_t n) +{ + size_t i, k, pk; + + for (i = 0; i < n; i++) + { + k = p[i]; + + while (k > i) + k = p[k]; + + if (k < i) + continue ; + + /* Now have k == i, i.e the least in its cycle */ + + pk = p[k]; + + if (pk == i) + continue ; + + /* shuffle the elements of the cycle */ + + { + unsigned int a; + + ATOMIC t[MULTIPLICITY]; + + for (a = 0; a < MULTIPLICITY; a++) + t[a] = data[i*stride*MULTIPLICITY + a]; + + while (pk != i) + { + for (a = 0; a < MULTIPLICITY; a++) + { + ATOMIC r1 = data[pk*stride*MULTIPLICITY + a]; + data[k*stride*MULTIPLICITY + a] = r1; + } + k = pk; + pk = p[k]; + }; + + for (a = 0; a < MULTIPLICITY; a++) + data[k*stride*MULTIPLICITY + a] = t[a]; + } + } + + return GSL_SUCCESS; +} + +int +FUNCTION (gsl_permute,inverse) (const size_t * p, ATOMIC * data, const size_t stride, const size_t n) +{ + size_t i, k, pk; + + for (i = 0; i < n; i++) + { + k = p[i]; + + while (k > i) + k = p[k]; + + if (k < i) + continue ; + + /* Now have k == i, i.e the least in its cycle */ + + pk = p[k]; + + if (pk == i) + continue ; + + /* shuffle the elements of the cycle in the inverse direction */ + + { + unsigned int a; + + ATOMIC t[MULTIPLICITY]; + + for (a = 0; a < MULTIPLICITY; a++) + t[a] = data[k*stride*MULTIPLICITY+a]; + + while (pk != i) + { + for (a = 0; a < MULTIPLICITY; a++) + { + ATOMIC r1 = data[pk*stride*MULTIPLICITY + a]; + data[pk*stride*MULTIPLICITY + a] = t[a]; + t[a] = r1; + } + + k = pk; + pk = p[k]; + }; + + for (a = 0; a < MULTIPLICITY; a++) + data[pk*stride*MULTIPLICITY+a] = t[a]; + } + } + + return GSL_SUCCESS; +} + + +int +TYPE (gsl_permute_vector) (const gsl_permutation * p, TYPE (gsl_vector) * v) +{ + if (v->size != p->size) + { + GSL_ERROR ("vector and permutation must be the same length", GSL_EBADLEN); + } + + TYPE (gsl_permute) (p->data, v->data, v->stride, v->size) ; + + return GSL_SUCCESS; +} + +int +FUNCTION (gsl_permute_vector,inverse) (const gsl_permutation * p, TYPE (gsl_vector) * v) +{ + if (v->size != p->size) + { + GSL_ERROR ("vector and permutation must be the same length", GSL_EBADLEN); + } + + FUNCTION (gsl_permute,inverse) (p->data, v->data, v->stride, v->size) ; + + return GSL_SUCCESS; +} + +int +TYPE (gsl_permute_matrix) (const gsl_permutation * p, TYPE (gsl_matrix) * A) +{ + if (A->size2 != p->size) + { + GSL_ERROR ("matrix columns and permutation must be the same length", GSL_EBADLEN); + } + else + { + size_t i; + + for (i = 0; i < A->size1; ++i) + { + QUALIFIED_VIEW (gsl_vector, view) r = FUNCTION (gsl_matrix, row) (A, i); + + TYPE (gsl_permute_vector) (p, &r.vector); + } + + return GSL_SUCCESS; + } +} diff --git a/gsl-2.5/permutation/test b/gsl-2.5/permutation/test new file mode 100755 index 00000000..50ebd2f7 Binary files /dev/null and b/gsl-2.5/permutation/test differ diff --git a/gsl-2.5/permutation/test-suite.log b/gsl-2.5/permutation/test-suite.log new file mode 100644 index 00000000..e3290931 --- /dev/null +++ b/gsl-2.5/permutation/test-suite.log @@ -0,0 +1,14 @@ +========================================= + gsl 2.5: permutation/test-suite.log +========================================= + +# TOTAL: 1 +# PASS: 1 +# SKIP: 0 +# XFAIL: 0 +# FAIL: 0 +# XPASS: 0 +# ERROR: 0 + +.. contents:: :depth: 2 + diff --git a/gsl-2.5/permutation/test.c b/gsl-2.5/permutation/test.c new file mode 100644 index 00000000..953512b1 --- /dev/null +++ b/gsl-2.5/permutation/test.c @@ -0,0 +1,300 @@ +/* permutation/test.c + * + * Copyright (C) 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include +#include +#include + +unsigned int p5[120][5] = { + {0, 1, 2, 3, 4}, {0, 1, 2, 4, 3}, {0, 1, 3, 2, 4}, {0, 1, 3, 4, 2}, + {0, 1, 4, 2, 3}, {0, 1, 4, 3, 2}, {0, 2, 1, 3, 4}, {0, 2, 1, 4, 3}, + {0, 2, 3, 1, 4}, {0, 2, 3, 4, 1}, {0, 2, 4, 1, 3}, {0, 2, 4, 3, 1}, + {0, 3, 1, 2, 4}, {0, 3, 1, 4, 2}, {0, 3, 2, 1, 4}, {0, 3, 2, 4, 1}, + {0, 3, 4, 1, 2}, {0, 3, 4, 2, 1}, {0, 4, 1, 2, 3}, {0, 4, 1, 3, 2}, + {0, 4, 2, 1, 3}, {0, 4, 2, 3, 1}, {0, 4, 3, 1, 2}, {0, 4, 3, 2, 1}, + {1, 0, 2, 3, 4}, {1, 0, 2, 4, 3}, {1, 0, 3, 2, 4}, {1, 0, 3, 4, 2}, + {1, 0, 4, 2, 3}, {1, 0, 4, 3, 2}, {1, 2, 0, 3, 4}, {1, 2, 0, 4, 3}, + {1, 2, 3, 0, 4}, {1, 2, 3, 4, 0}, {1, 2, 4, 0, 3}, {1, 2, 4, 3, 0}, + {1, 3, 0, 2, 4}, {1, 3, 0, 4, 2}, {1, 3, 2, 0, 4}, {1, 3, 2, 4, 0}, + {1, 3, 4, 0, 2}, {1, 3, 4, 2, 0}, {1, 4, 0, 2, 3}, {1, 4, 0, 3, 2}, + {1, 4, 2, 0, 3}, {1, 4, 2, 3, 0}, {1, 4, 3, 0, 2}, {1, 4, 3, 2, 0}, + {2, 0, 1, 3, 4}, {2, 0, 1, 4, 3}, {2, 0, 3, 1, 4}, {2, 0, 3, 4, 1}, + {2, 0, 4, 1, 3}, {2, 0, 4, 3, 1}, {2, 1, 0, 3, 4}, {2, 1, 0, 4, 3}, + {2, 1, 3, 0, 4}, {2, 1, 3, 4, 0}, {2, 1, 4, 0, 3}, {2, 1, 4, 3, 0}, + {2, 3, 0, 1, 4}, {2, 3, 0, 4, 1}, {2, 3, 1, 0, 4}, {2, 3, 1, 4, 0}, + {2, 3, 4, 0, 1}, {2, 3, 4, 1, 0}, {2, 4, 0, 1, 3}, {2, 4, 0, 3, 1}, + {2, 4, 1, 0, 3}, {2, 4, 1, 3, 0}, {2, 4, 3, 0, 1}, {2, 4, 3, 1, 0}, + {3, 0, 1, 2, 4}, {3, 0, 1, 4, 2}, {3, 0, 2, 1, 4}, {3, 0, 2, 4, 1}, + {3, 0, 4, 1, 2}, {3, 0, 4, 2, 1}, {3, 1, 0, 2, 4}, {3, 1, 0, 4, 2}, + {3, 1, 2, 0, 4}, {3, 1, 2, 4, 0}, {3, 1, 4, 0, 2}, {3, 1, 4, 2, 0}, + {3, 2, 0, 1, 4}, {3, 2, 0, 4, 1}, {3, 2, 1, 0, 4}, {3, 2, 1, 4, 0}, + {3, 2, 4, 0, 1}, {3, 2, 4, 1, 0}, {3, 4, 0, 1, 2}, {3, 4, 0, 2, 1}, + {3, 4, 1, 0, 2}, {3, 4, 1, 2, 0}, {3, 4, 2, 0, 1}, {3, 4, 2, 1, 0}, + {4, 0, 1, 2, 3}, {4, 0, 1, 3, 2}, {4, 0, 2, 1, 3}, {4, 0, 2, 3, 1}, + {4, 0, 3, 1, 2}, {4, 0, 3, 2, 1}, {4, 1, 0, 2, 3}, {4, 1, 0, 3, 2}, + {4, 1, 2, 0, 3}, {4, 1, 2, 3, 0}, {4, 1, 3, 0, 2}, {4, 1, 3, 2, 0}, + {4, 2, 0, 1, 3}, {4, 2, 0, 3, 1}, {4, 2, 1, 0, 3}, {4, 2, 1, 3, 0}, + {4, 2, 3, 0, 1}, {4, 2, 3, 1, 0}, {4, 3, 0, 1, 2}, {4, 3, 0, 2, 1}, + {4, 3, 1, 0, 2}, {4, 3, 1, 2, 0}, {4, 3, 2, 0, 1}, {4, 3, 2, 1, 0} +} ; + +unsigned int c5[120][5] = { + {4, 3, 2, 1, 0}, {3, 4, 2, 1, 0}, {4, 2, 3, 1, 0}, {2, 3, 4, 1, 0}, + {2, 4, 3, 1, 0}, {3, 2, 4, 1, 0}, {4, 3, 1, 2, 0}, {3, 4, 1, 2, 0}, + {4, 1, 2, 3, 0}, {1, 2, 3, 4, 0}, {1, 2, 4, 3, 0}, {3, 1, 2, 4, 0}, + {4, 1, 3, 2, 0}, {1, 3, 4, 2, 0}, {4, 2, 1, 3, 0}, {2, 1, 3, 4, 0}, + {2, 4, 1, 3, 0}, {1, 3, 2, 4, 0}, {1, 4, 3, 2, 0}, {3, 1, 4, 2, 0}, + {2, 1, 4, 3, 0}, {3, 2, 1, 4, 0}, {1, 4, 2, 3, 0}, {2, 3, 1, 4, 0}, + {4, 3, 2, 0, 1}, {3, 4, 2, 0, 1}, {4, 2, 3, 0, 1}, {2, 3, 4, 0, 1}, + {2, 4, 3, 0, 1}, {3, 2, 4, 0, 1}, {4, 3, 0, 1, 2}, {3, 4, 0, 1, 2}, + {4, 0, 1, 2, 3}, {0, 1, 2, 3, 4}, {0, 1, 2, 4, 3}, {3, 0, 1, 2, 4}, + {4, 0, 1, 3, 2}, {0, 1, 3, 4, 2}, {4, 2, 0, 1, 3}, {2, 0, 1, 3, 4}, + {2, 4, 0, 1, 3}, {0, 1, 3, 2, 4}, {0, 1, 4, 3, 2}, {3, 0, 1, 4, 2}, + {2, 0, 1, 4, 3}, {3, 2, 0, 1, 4}, {0, 1, 4, 2, 3}, {2, 3, 0, 1, 4}, + {4, 3, 0, 2, 1}, {3, 4, 0, 2, 1}, {4, 0, 2, 3, 1}, {0, 2, 3, 4, 1}, + {0, 2, 4, 3, 1}, {3, 0, 2, 4, 1}, {4, 3, 1, 0, 2}, {3, 4, 1, 0, 2}, + {4, 1, 0, 2, 3}, {1, 0, 2, 3, 4}, {1, 0, 2, 4, 3}, {3, 1, 0, 2, 4}, + {4, 1, 3, 0, 2}, {1, 3, 4, 0, 2}, {4, 0, 2, 1, 3}, {0, 2, 1, 3, 4}, + {0, 2, 4, 1, 3}, {1, 3, 0, 2, 4}, {1, 4, 3, 0, 2}, {3, 1, 4, 0, 2}, + {0, 2, 1, 4, 3}, {3, 0, 2, 1, 4}, {1, 4, 0, 2, 3}, {0, 2, 3, 1, 4}, + {4, 0, 3, 2, 1}, {0, 3, 4, 2, 1}, {4, 2, 0, 3, 1}, {2, 0, 3, 4, 1}, + {2, 4, 0, 3, 1}, {0, 3, 2, 4, 1}, {4, 1, 0, 3, 2}, {1, 0, 3, 4, 2}, + {4, 2, 1, 0, 3}, {2, 1, 0, 3, 4}, {2, 4, 1, 0, 3}, {1, 0, 3, 2, 4}, + {4, 0, 3, 1, 2}, {0, 3, 4, 1, 2}, {4, 1, 2, 0, 3}, {1, 2, 0, 3, 4}, + {1, 2, 4, 0, 3}, {0, 3, 1, 2, 4}, {0, 3, 1, 4, 2}, {1, 4, 0, 3, 2}, + {1, 4, 2, 0, 3}, {0, 3, 2, 1, 4}, {2, 1, 4, 0, 3}, {2, 0, 3, 1, 4}, + {0, 4, 3, 2, 1}, {3, 0, 4, 2, 1}, {2, 0, 4, 3, 1}, {3, 2, 0, 4, 1}, + {0, 4, 2, 3, 1}, {2, 3, 0, 4, 1}, {1, 0, 4, 3, 2}, {3, 1, 0, 4, 2}, + {2, 1, 0, 4, 3}, {3, 2, 1, 0, 4}, {1, 0, 4, 2, 3}, {2, 3, 1, 0, 4}, + {0, 4, 3, 1, 2}, {3, 0, 4, 1, 2}, {1, 2, 0, 4, 3}, {3, 1, 2, 0, 4}, + {0, 4, 1, 2, 3}, {1, 2, 3, 0, 4}, {1, 3, 0, 4, 2}, {0, 4, 1, 3, 2}, + {0, 4, 2, 1, 3}, {1, 3, 2, 0, 4}, {2, 0, 4, 1, 3}, {2, 1, 3, 0, 4} +} ; + +unsigned int cycles[120] = { + 5, 4, 4, 3, 3, 4, 4, 3, 3, 2, + 2, 3, 3, 2, 4, 3, 3, 2, 2, 3, + 3, 4, 2, 3, 4, 3, 3, 2, 2, 3, + 3, 2, 2, 1, 1, 2, 2, 1, 3, 2, + 2, 1, 1, 2, 2, 3, 1, 2, 3, 2, + 2, 1, 1, 2, 4, 3, 3, 2, 2, 3, + 3, 2, 2, 1, 1, 2, 2, 3, 1, 2, + 2, 1, 2, 1, 3, 2, 2, 1, 3, 2, + 4, 3, 3, 2, 2, 1, 3, 2, 2, 1, + 1, 2, 2, 1, 3, 2, 1, 2, 2, 3, + 1, 2, 2, 3, 3, 4, 2, 3, 1, 2, + 2, 3, 1, 2, 2, 1, 1, 2, 2, 3 +} ; + +unsigned int inversions[120] = { + 0, 1, 1, 2, 2, 3, 1, 2, 2, 3, + 3, 4, 2, 3, 3, 4, 4, 5, 3, 4, + 4, 5, 5, 6, 1, 2, 2, 3, 3, 4, + 2, 3, 3, 4, 4, 5, 3, 4, 4, 5, + 5, 6, 4, 5, 5, 6, 6, 7, 2, 3, + 3, 4, 4, 5, 3, 4, 4, 5, 5, 6, + 4, 5, 5, 6, 6, 7, 5, 6, 6, 7, + 7, 8, 3, 4, 4, 5, 5, 6, 4, 5, + 5, 6, 6, 7, 5, 6, 6, 7, 7, 8, + 6, 7, 7, 8, 8, 9, 4, 5, 5, 6, + 6, 7, 5, 6, 6, 7, 7, 8, 6, 7, + 7, 8, 8, 9, 7, 8, 8, 9, 9, 10 +} ; + +int +main (void) +{ + gsl_ieee_env_setup (); + + { + int i = 0, j, status = 0; + + gsl_permutation * p ; + + p = gsl_permutation_alloc (5); + + gsl_permutation_init (p); + + do + { + for (j = 0; j < 5; j++) + { + status |= (p->data[j] != p5[i][j]); + } + + i++; + } + while (gsl_permutation_next(p) == GSL_SUCCESS); + + gsl_test(status, "gsl_permutation_next, 5-th order permutation, 120 steps"); + + do + { + i--; + + for (j = 0; j < 5; j++) + { + status |= (p->data[j] != p5[i][j]); + } + } + while (gsl_permutation_prev(p) == GSL_SUCCESS); + + gsl_test(status, "gsl_permutation_prev, 5-th order permutation, 120 steps"); + + gsl_permutation_free (p); + } + +#ifdef JUNK + { + int i; + int status = 0 ; + + gsl_permutation * p1 = gsl_permutation_alloc (5); + gsl_permutation * p2 = gsl_permutation_alloc (5); + gsl_permutation * p = gsl_permutation_alloc (5); + + double v[5] = { 100.0, 101.0, 102.0, 103.0, 104.0 } ; + + gsl_permutation_init (p1); + + do + { + gsl_permutation_init (p2); + + do + { + double x[5], y[5]; + + /* Compute x= p1 p2 v */ + memcpy (x, v, 5 * sizeof(double)); + gsl_permute (p2->data, x, 1, 5); + gsl_permute (p1->data, x, 1, 5); + + /* Compute P= p1 p2, y = P v */ + gsl_permutation_mul (p, p1, p2); + memcpy (y, v, 5 * sizeof(double)); + gsl_permute (p->data, y, 1, 5); + + for (i = 0; i < 5; i++) + { + if (x[i] != y[i]) + status = 1; + } + + if (status == 1) + break; + } + while (gsl_permutation_next(p2) == GSL_SUCCESS); + + if (status == 1) + break; + } + while (gsl_permutation_next(p1) == GSL_SUCCESS); + + gsl_permutation_free (p1); + gsl_permutation_free (p2); + gsl_permutation_free (p); + + gsl_test(status, "gsl_permutation_mul, all 5-th order combinations"); + } +#endif + + /* testing cycles representations */ + { + int i = 0, j, status = 0; + + gsl_permutation * p = gsl_permutation_alloc (5); + + gsl_permutation * plin = gsl_permutation_alloc (5); + gsl_permutation * pcan = gsl_permutation_alloc (5); + + gsl_permutation_init (p); + + do + { + gsl_permutation_memcpy (plin, p); + + for (j = 0; j < 5; j++) + { + pcan->data[j] = 0; + } + + gsl_permutation_linear_to_canonical (pcan, plin); + + for (j = 0; j < 5; j++) + { + status |= (pcan->data[j] != c5[i][j]); + } + + status |= (gsl_permutation_canonical_cycles (pcan) != cycles[i]); + + status |= (gsl_permutation_linear_cycles (plin) != cycles[i]); + + for (j = 0; j < 5; j++) + { + plin->data[j] = 0; + } + + gsl_permutation_canonical_to_linear (plin, pcan); + + for (j = 0; j < 5; j++) + { + status |= (plin->data[j] != p5[i][j]); + } + + i++; + } + while (gsl_permutation_next(p) == GSL_SUCCESS); + + gsl_permutation_free (p); + gsl_permutation_free (plin); + gsl_permutation_free (pcan); + + gsl_test (status, "gsl_permutation canonical conversion, 5-th order permutation, 120 steps"); + } + + /* testing number of inversions */ + { + int i = 0, status = 0; + + gsl_permutation * p = gsl_permutation_alloc (5); + + gsl_permutation_init (p); + + do + { + status |= gsl_permutation_inversions (p) != inversions[i]; + i++; + } + while (gsl_permutation_next(p) == GSL_SUCCESS); + + gsl_permutation_free (p); + + gsl_test (status, "gsl_permutation_inversions, 5-th order permutation, 120 steps"); + } + + + exit (gsl_test_summary()); +} + diff --git a/gsl-2.5/permutation/test.log b/gsl-2.5/permutation/test.log new file mode 100644 index 00000000..c7e848b7 --- /dev/null +++ b/gsl-2.5/permutation/test.log @@ -0,0 +1 @@ +Completed [4/4] diff --git a/gsl-2.5/permutation/test.trs b/gsl-2.5/permutation/test.trs new file mode 100644 index 00000000..3f0f396c --- /dev/null +++ b/gsl-2.5/permutation/test.trs @@ -0,0 +1,4 @@ +:test-result: PASS +:global-test-result: PASS +:recheck: no +:copy-in-global-log: no diff --git a/gsl-2.5/pkgconfig.log b/gsl-2.5/pkgconfig.log new file mode 100644 index 00000000..e69de29b diff --git a/gsl-2.5/pkgconfig.test b/gsl-2.5/pkgconfig.test new file mode 100755 index 00000000..fdf7a242 --- /dev/null +++ b/gsl-2.5/pkgconfig.test @@ -0,0 +1,9 @@ +#!/bin/sh + +set -e +# skip test if we have no pkg-config +pkg-config --version >/dev/null 2>&1 || exit 77 +PKG_CONFIG_PATH=. +export PKG_CONFIG_PATH +pkg-config --define-variable=GSL_CBLAS_LIB=-lfoo --libs gsl | grep 'lfoo' > /dev/null 2>&1 +exit 0 diff --git a/gsl-2.5/pkgconfig.trs b/gsl-2.5/pkgconfig.trs new file mode 100644 index 00000000..3f0f396c --- /dev/null +++ b/gsl-2.5/pkgconfig.trs @@ -0,0 +1,4 @@ +:test-result: PASS +:global-test-result: PASS +:recheck: no +:copy-in-global-log: no diff --git a/gsl-2.5/poly/.deps/dd.Plo b/gsl-2.5/poly/.deps/dd.Plo new file mode 100644 index 00000000..2c50bbcd --- /dev/null +++ b/gsl-2.5/poly/.deps/dd.Plo @@ -0,0 +1,114 @@ +dd.lo: dd.c /usr/include/stdc-predef.h ../config.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_types.h ../gsl/gsl_poly.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_inline.h \ + ../gsl/gsl_complex.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_poly.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_complex.h: diff --git a/gsl-2.5/poly/.deps/deriv.Plo b/gsl-2.5/poly/.deps/deriv.Plo new file mode 100644 index 00000000..4f2fddce --- /dev/null +++ b/gsl-2.5/poly/.deps/deriv.Plo @@ -0,0 +1,114 @@ +deriv.lo: deriv.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_errno.h /usr/include/stdio.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_types.h ../gsl/gsl_poly.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_inline.h \ + ../gsl/gsl_complex.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_poly.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_complex.h: diff --git a/gsl-2.5/poly/.deps/eval.Plo b/gsl-2.5/poly/.deps/eval.Plo new file mode 100644 index 00000000..2e1d925a --- /dev/null +++ b/gsl-2.5/poly/.deps/eval.Plo @@ -0,0 +1,77 @@ +eval.lo: eval.c /usr/include/stdc-predef.h ../config.h ../build.h \ + ../gsl/gsl_poly.h /usr/include/stdlib.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_inline.h \ + ../gsl/gsl_complex.h + +/usr/include/stdc-predef.h: + +../config.h: + +../build.h: + +../gsl/gsl_poly.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_complex.h: diff --git a/gsl-2.5/poly/.deps/solve_cubic.Plo b/gsl-2.5/poly/.deps/solve_cubic.Plo new file mode 100644 index 00000000..1767bd50 --- /dev/null +++ b/gsl-2.5/poly/.deps/solve_cubic.Plo @@ -0,0 +1,138 @@ +solve_cubic.lo: solve_cubic.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_math.h ../gsl/gsl_sys.h \ + ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_poly.h \ + /usr/include/stdlib.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_complex.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_poly.h: + +/usr/include/stdlib.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_complex.h: diff --git a/gsl-2.5/poly/.deps/solve_quadratic.Plo b/gsl-2.5/poly/.deps/solve_quadratic.Plo new file mode 100644 index 00000000..61a86b61 --- /dev/null +++ b/gsl-2.5/poly/.deps/solve_quadratic.Plo @@ -0,0 +1,98 @@ +solve_quadratic.lo: solve_quadratic.c /usr/include/stdc-predef.h \ + ../config.h /usr/include/math.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_poly.h /usr/include/stdlib.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_inline.h \ + ../gsl/gsl_complex.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_poly.h: + +/usr/include/stdlib.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_complex.h: diff --git a/gsl-2.5/poly/.deps/test.Po b/gsl-2.5/poly/.deps/test.Po new file mode 100644 index 00000000..2182d3fa --- /dev/null +++ b/gsl-2.5/poly/.deps/test.Po @@ -0,0 +1,187 @@ +test.o: test.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_test.h \ + ../gsl/gsl_ieee_utils.h /usr/include/stdio.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../gsl/gsl_poly.h ../gsl/gsl_complex.h \ + ../gsl/gsl_heapsort.h ../gsl/gsl_permutation.h ../gsl/gsl_errno.h \ + /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_check_range.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_test.h: + +../gsl/gsl_ieee_utils.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../gsl/gsl_poly.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_heapsort.h: + +../gsl/gsl_permutation.h: + +../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_check_range.h: diff --git a/gsl-2.5/poly/.deps/zsolve.Plo b/gsl-2.5/poly/.deps/zsolve.Plo new file mode 100644 index 00000000..9962b652 --- /dev/null +++ b/gsl-2.5/poly/.deps/zsolve.Plo @@ -0,0 +1,181 @@ +zsolve.lo: zsolve.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h /usr/include/stdlib.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_math.h ../gsl/gsl_sys.h \ + ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_poly.h companion.c balance.c qr.c + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +/usr/include/stdlib.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_poly.h: + +companion.c: + +balance.c: + +qr.c: diff --git a/gsl-2.5/poly/.deps/zsolve_cubic.Plo b/gsl-2.5/poly/.deps/zsolve_cubic.Plo new file mode 100644 index 00000000..fb4de1f4 --- /dev/null +++ b/gsl-2.5/poly/.deps/zsolve_cubic.Plo @@ -0,0 +1,138 @@ +zsolve_cubic.lo: zsolve_cubic.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_math.h ../gsl/gsl_sys.h \ + ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_complex.h \ + ../gsl/gsl_poly.h /usr/include/stdlib.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_poly.h: + +/usr/include/stdlib.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: diff --git a/gsl-2.5/poly/.deps/zsolve_init.Plo b/gsl-2.5/poly/.deps/zsolve_init.Plo new file mode 100644 index 00000000..5ff536be --- /dev/null +++ b/gsl-2.5/poly/.deps/zsolve_init.Plo @@ -0,0 +1,174 @@ +zsolve_init.lo: zsolve_init.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_math.h ../gsl/gsl_sys.h \ + ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_complex.h \ + ../gsl/gsl_poly.h /usr/include/stdlib.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_errno.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_poly.h: + +/usr/include/stdlib.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: diff --git a/gsl-2.5/poly/.deps/zsolve_quadratic.Plo b/gsl-2.5/poly/.deps/zsolve_quadratic.Plo new file mode 100644 index 00000000..757569a3 --- /dev/null +++ b/gsl-2.5/poly/.deps/zsolve_quadratic.Plo @@ -0,0 +1,97 @@ +zsolve_quadratic.lo: zsolve_quadratic.c /usr/include/stdc-predef.h \ + ../config.h /usr/include/math.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_complex.h ../gsl/gsl_poly.h /usr/include/stdlib.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_inline.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_poly.h: + +/usr/include/stdlib.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_inline.h: diff --git a/gsl-2.5/poly/.libs/libgslpoly.la b/gsl-2.5/poly/.libs/libgslpoly.la new file mode 120000 index 00000000..4c051588 --- /dev/null +++ b/gsl-2.5/poly/.libs/libgslpoly.la @@ -0,0 +1 @@ +../libgslpoly.la \ No newline at end of file diff --git a/gsl-2.5/poly/ChangeLog b/gsl-2.5/poly/ChangeLog new file mode 100644 index 00000000..eb8f1c34 --- /dev/null +++ b/gsl-2.5/poly/ChangeLog @@ -0,0 +1,116 @@ +2013-10-13 Rhys Ulerich + + * test.c Update stale names from "gsl_poly_eval_dp" to + "gsl_poly_eval_derivs" in the test log. Thanks to Mark + Jourdain for pointing out the inconsistency. + +2011-04-13 Brian Gough + + * solve_quadratic.c (gsl_poly_solve_quadratic): simplify the case + where b==0 and disc>0 + (gsl_poly_solve_quadratic): delay the evaluation of the + discriminant until it is needed + +2009-07-09 Brian Gough + + * zsolve_init.c (gsl_poly_complex_workspace_free): handle NULL + argument in free + +2009-05-09 Brian Gough + + * zsolve_cubic.c (gsl_poly_complex_solve_cubic): test R2 < Q3 + directly, to avoid argument of acos exceeding 1 due to + extended precision. + + * solve_cubic.c (gsl_poly_solve_cubic): ditto + +2008-07-03 Brian Gough + + * gsl_poly.h: use new inline declarations + + * inline.c: handle inline functions in separate file + + * dd.c: move gsl_poly_dd_eval to inline.c + + * Makefile.am (INCLUDES): use top_srcdir instead of top_builddir + +2008-04-28 Brian Gough + + * dd.c (gsl_poly_dd_taylor): use new descending loop convention + +2007-12-17 Brian Gough + + * eval.c: added functions for complex polynomials + +2005-07-03 Brian Gough + + * test.c (main): added tests for linear case + + * zsolve_quadratic.c (gsl_poly_complex_solve_quadratic): handle + the linear case + + * solve_quadratic.c (gsl_poly_solve_quadratic): handle the linear + case + +2005-05-19 Brian Gough + + * Makefile.am (noinst_HEADERS): removed norm.c (unused) + +Sun Dec 2 22:02:31 2001 Brian Gough + + * dd.c: added divided differences code from Dan, Ho-Jin + +Wed Oct 31 18:42:10 2001 Brian Gough + + * qr.c (qr_companion): increased maximum number of iterations from + 30 to 60 + +Thu Jun 28 11:24:51 2001 Brian Gough + + * test.c (main): fixed a subtle bug in the test where the array + for the complex results was too small by a factor of two + +Mon Apr 30 12:36:08 2001 Brian Gough + + * eval.c (gsl_poly_eval): added eval function from specfunc + +Tue Aug 24 12:02:47 1999 Brian Gough + + * zsolve.c: added general solver using QR method + +1999-08-22 Mark Galassi + + * Makefile.am (libgslpoly_a_SOURCES): for now commented out + zsolve.c, since it has some strange errors that make it look like + it was not committed. + +Tue Aug 17 14:23:47 1999 Brian Gough + + * zsolve_cubic.c (gsl_poly_complex_solve_cubic): compute the + discriminant without division so that it is exact for exact inputs + + * solve_cubic.c (gsl_poly_solve_cubic): compute the discriminant + without division so that it is exact for exact inputs + + * changed the way roots are counted to make all the routines + consistent. Conincident roots are no longer a special case, now + they are made up of separate roots which happen to have the same + values. + + * zsolve_quadratic.c (gsl_poly_complex_solve_quadratic): in the + case of a multiple root set all the returned values r0 = r1 = + root, rather than just setting one and leaving the others + potentially unset. + + * solve_quadratic.c (gsl_poly_solve_quadratic): ditto + +Tue Aug 3 19:36:26 1999 Brian Gough + + * gsl_poly.h: changed all functions to take separate variables for + roots (z0, z1, z2) of variable-length arrays + +Sat Feb 20 12:13:46 1999 Brian Gough + + * split out polynomial root finding algorithms into a new poly/ + directory + diff --git a/gsl-2.5/poly/Makefile b/gsl-2.5/poly/Makefile new file mode 100644 index 00000000..3d9f9d05 --- /dev/null +++ b/gsl-2.5/poly/Makefile @@ -0,0 +1,1036 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# poly/Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + + + + +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/gsl +pkgincludedir = $(includedir)/gsl +pkglibdir = $(libdir)/gsl +pkglibexecdir = $(libexecdir)/gsl +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = x86_64-unknown-linux-gnu +host_triplet = x86_64-unknown-linux-gnu +check_PROGRAMS = test$(EXEEXT) +subdir = poly +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp \ + $(noinst_HEADERS) $(pkginclude_HEADERS) \ + $(top_srcdir)/test-driver ChangeLog TODO +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +libgslpoly_la_LIBADD = +am_libgslpoly_la_OBJECTS = dd.lo eval.lo solve_quadratic.lo \ + solve_cubic.lo zsolve_quadratic.lo zsolve_cubic.lo zsolve.lo \ + zsolve_init.lo deriv.lo +libgslpoly_la_OBJECTS = $(am_libgslpoly_la_OBJECTS) +AM_V_lt = $(am__v_lt_$(V)) +am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) +am__v_lt_0 = --silent +am__v_lt_1 = +am_test_OBJECTS = test.$(OBJEXT) +test_OBJECTS = $(am_test_OBJECTS) +test_DEPENDENCIES = libgslpoly.la ../ieee-utils/libgslieeeutils.la \ + ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la \ + ../utils/libutils.la ../sort/libgslsort.la +AM_V_P = $(am__v_P_$(V)) +am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY)) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_$(V)) +am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_$(V)) +am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I. -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_$(V)) +am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_$(V)) +am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libgslpoly_la_SOURCES) $(test_SOURCES) +DIST_SOURCES = $(libgslpoly_la_SOURCES) $(test_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(pkgincludedir)" +HEADERS = $(noinst_HEADERS) $(pkginclude_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = .test +LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing aclocal-1.13 +AMTAR = $${TAR-tar} +AM_DEFAULT_VERBOSITY = 1 +AR = ar +AS = as +AUTOCONF = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing autoconf +AUTOHEADER = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing autoheader +AUTOMAKE = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing automake-1.13 +AWK = gawk +CC = gcc +CCDEPMODE = depmode=gcc3 +CFLAGS = -g -O2 +CPP = gcc -E +CPPFLAGS = +CYGPATH_W = echo +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +DLLTOOL = false +DSYMUTIL = +DUMPBIN = +ECHO_C = +ECHO_N = -n +ECHO_T = +EGREP = /usr/bin/grep -E +EXEEXT = +FGREP = /usr/bin/grep -F +GREP = /usr/bin/grep +GSLCBLAS_LDFLAGS = +GSL_CFLAGS = -I${prefix}/include +GSL_LDFLAGS = +GSL_LIBADD = +GSL_LIBM = -lm +GSL_LIBS = -L${exec_prefix}/lib -lgsl +GSL_LT_CBLAS_VERSION = 0:0:0 +GSL_LT_VERSION = 24:0:1 +GSL_MAJOR_VERSION = 2 +GSL_MINOR_VERSION = 5 +HAVE_AIX_IEEE_INTERFACE = +HAVE_DARWIN86_IEEE_INTERFACE = +HAVE_DARWIN_IEEE_INTERFACE = +HAVE_FREEBSD_IEEE_INTERFACE = +HAVE_GNUM68K_IEEE_INTERFACE = +HAVE_GNUPPC_IEEE_INTERFACE = +HAVE_GNUSPARC_IEEE_INTERFACE = +HAVE_GNUX86_IEEE_INTERFACE = +HAVE_HPUX11_IEEE_INTERFACE = +HAVE_HPUX_IEEE_INTERFACE = +HAVE_IRIX_IEEE_INTERFACE = +HAVE_NETBSD_IEEE_INTERFACE = +HAVE_OPENBSD_IEEE_INTERFACE = +HAVE_OS2EMX_IEEE_INTERFACE = +HAVE_SOLARIS_IEEE_INTERFACE = +HAVE_SUNOS4_IEEE_INTERFACE = +HAVE_TRU64_IEEE_INTERFACE = +INSTALL = /usr/bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = $(install_sh) -c -s +LD = /usr/bin/ld -m elf_x86_64 +LDFLAGS = +LIBM = -lm +LIBOBJS = +LIBS = -lm +LIBTOOL = $(SHELL) $(top_builddir)/libtool +LIPO = +LN_S = ln -s +LTLIBOBJS = +MAINT = # +MAKEINFO = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing makeinfo +MANIFEST_TOOL = : +MKDIR_P = /usr/bin/mkdir -p +NM = /usr/bin/nm -B +NMEDIT = +OBJDUMP = objdump +OBJEXT = o +OTOOL = +OTOOL64 = +PACKAGE = gsl +PACKAGE_BUGREPORT = +PACKAGE_NAME = gsl +PACKAGE_STRING = gsl 2.5 +PACKAGE_TARNAME = gsl +PACKAGE_URL = +PACKAGE_VERSION = 2.5 +PATH_SEPARATOR = : +RANLIB = ranlib +SED = /usr/bin/sed +SET_MAKE = +SHELL = /bin/sh +STRIP = strip +VERSION = 2.5 +abs_builddir = /home/groups/kipac/chto/package/gsl/gsl-2.5/poly +abs_srcdir = /home/groups/kipac/chto/package/gsl/gsl-2.5/poly +abs_top_builddir = /home/groups/kipac/chto/package/gsl/gsl-2.5 +abs_top_srcdir = /home/groups/kipac/chto/package/gsl/gsl-2.5 +ac_ct_AR = ar +ac_ct_CC = gcc +ac_ct_DUMPBIN = +am__include = include +am__leading_dot = . +am__quote = +am__tar = $${TAR-tar} chof - "$$tardir" +am__untar = $${TAR-tar} xf - +bindir = ${exec_prefix}/bin +build = x86_64-unknown-linux-gnu +build_alias = +build_cpu = x86_64 +build_os = linux-gnu +build_vendor = unknown +builddir = . +datadir = ${datarootdir} +datarootdir = ${prefix}/share +docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} +dvidir = ${docdir} +exec_prefix = ${prefix} +host = x86_64-unknown-linux-gnu +host_alias = +host_cpu = x86_64 +host_os = linux-gnu +host_vendor = unknown +htmldir = ${docdir} +includedir = ${prefix}/include +infodir = ${datarootdir}/info +install_sh = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/install-sh +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +localedir = ${datarootdir}/locale +localstatedir = ${prefix}/var +mandir = ${datarootdir}/man +mkdir_p = $(MKDIR_P) +oldincludedir = /usr/include +pdfdir = ${docdir} +prefix = /home/groups/kipac/chto/package/gsl/gsl_lib +program_transform_name = s,x,x, +psdir = ${docdir} +sbindir = ${exec_prefix}/sbin +sharedstatedir = ${prefix}/com +srcdir = . +sysconfdir = ${prefix}/etc +target_alias = +top_build_prefix = ../ +top_builddir = .. +top_srcdir = .. +noinst_LTLIBRARIES = libgslpoly.la +pkginclude_HEADERS = gsl_poly.h +AM_CPPFLAGS = -I$(top_srcdir) +libgslpoly_la_SOURCES = dd.c eval.c solve_quadratic.c solve_cubic.c zsolve_quadratic.c zsolve_cubic.c zsolve.c zsolve_init.c deriv.c +noinst_HEADERS = balance.c companion.c qr.c +TESTS = $(check_PROGRAMS) +test_SOURCES = test.c +test_LDADD = libgslpoly.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la ../sort/libgslsort.la +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu poly/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu poly/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: # $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): # $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libgslpoly.la: $(libgslpoly_la_OBJECTS) $(libgslpoly_la_DEPENDENCIES) $(EXTRA_libgslpoly_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(libgslpoly_la_OBJECTS) $(libgslpoly_la_LIBADD) $(LIBS) + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) $(EXTRA_test_DEPENDENCIES) + @rm -f test$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_OBJECTS) $(test_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +include ./$(DEPDIR)/dd.Plo +include ./$(DEPDIR)/deriv.Plo +include ./$(DEPDIR)/eval.Plo +include ./$(DEPDIR)/solve_cubic.Plo +include ./$(DEPDIR)/solve_quadratic.Plo +include ./$(DEPDIR)/test.Po +include ./$(DEPDIR)/zsolve.Plo +include ./$(DEPDIR)/zsolve_cubic.Plo +include ./$(DEPDIR)/zsolve_init.Plo +include ./$(DEPDIR)/zsolve_quadratic.Plo + +.c.o: + $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# $(AM_V_CC)source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(COMPILE) -c $< + +.c.obj: + $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# $(AM_V_CC)source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: + $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +# $(AM_V_CC)source='$<' object='$@' libtool=yes \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-pkgincludeHEADERS: $(pkginclude_HEADERS) + @$(NORMAL_INSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \ + done + +uninstall-pkgincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + else \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_PROGRAMS) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +test.log: test$(EXEEXT) + @p='test$(EXEEXT)'; \ + b='test'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +#.test$(EXEEXT).log: +# @p='$<'; \ +# $(am__set_b); \ +# $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +# --log-file $$b.log --trs-file $$b.trs \ +# $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +# "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-am +all-am: Makefile $(LTLIBRARIES) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(pkgincludedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-pkgincludeHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-pkgincludeHEADERS + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES cscopelist-am ctags ctags-am distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-pkgincludeHEADERS \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + recheck tags tags-am uninstall uninstall-am \ + uninstall-pkgincludeHEADERS + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gsl-2.5/poly/Makefile.am b/gsl-2.5/poly/Makefile.am new file mode 100644 index 00000000..f1dae5d8 --- /dev/null +++ b/gsl-2.5/poly/Makefile.am @@ -0,0 +1,17 @@ +noinst_LTLIBRARIES = libgslpoly.la + +pkginclude_HEADERS = gsl_poly.h + +AM_CPPFLAGS = -I$(top_srcdir) + +libgslpoly_la_SOURCES = dd.c eval.c solve_quadratic.c solve_cubic.c zsolve_quadratic.c zsolve_cubic.c zsolve.c zsolve_init.c deriv.c + +noinst_HEADERS = balance.c companion.c qr.c + +TESTS = $(check_PROGRAMS) + +check_PROGRAMS = test + +test_SOURCES = test.c +test_LDADD = libgslpoly.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la ../sort/libgslsort.la + diff --git a/gsl-2.5/poly/Makefile.in b/gsl-2.5/poly/Makefile.in new file mode 100644 index 00000000..feb90002 --- /dev/null +++ b/gsl-2.5/poly/Makefile.in @@ -0,0 +1,1036 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + + +VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +check_PROGRAMS = test$(EXEEXT) +subdir = poly +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp \ + $(noinst_HEADERS) $(pkginclude_HEADERS) \ + $(top_srcdir)/test-driver ChangeLog TODO +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +libgslpoly_la_LIBADD = +am_libgslpoly_la_OBJECTS = dd.lo eval.lo solve_quadratic.lo \ + solve_cubic.lo zsolve_quadratic.lo zsolve_cubic.lo zsolve.lo \ + zsolve_init.lo deriv.lo +libgslpoly_la_OBJECTS = $(am_libgslpoly_la_OBJECTS) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +am_test_OBJECTS = test.$(OBJEXT) +test_OBJECTS = $(am_test_OBJECTS) +test_DEPENDENCIES = libgslpoly.la ../ieee-utils/libgslieeeutils.la \ + ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la \ + ../utils/libutils.la ../sort/libgslsort.la +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libgslpoly_la_SOURCES) $(test_SOURCES) +DIST_SOURCES = $(libgslpoly_la_SOURCES) $(test_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(pkgincludedir)" +HEADERS = $(noinst_HEADERS) $(pkginclude_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = @EXEEXT@ .test +LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +GSLCBLAS_LDFLAGS = @GSLCBLAS_LDFLAGS@ +GSL_CFLAGS = @GSL_CFLAGS@ +GSL_LDFLAGS = @GSL_LDFLAGS@ +GSL_LIBADD = @GSL_LIBADD@ +GSL_LIBM = @GSL_LIBM@ +GSL_LIBS = @GSL_LIBS@ +GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ +GSL_LT_VERSION = @GSL_LT_VERSION@ +GSL_MAJOR_VERSION = @GSL_MAJOR_VERSION@ +GSL_MINOR_VERSION = @GSL_MINOR_VERSION@ +HAVE_AIX_IEEE_INTERFACE = @HAVE_AIX_IEEE_INTERFACE@ +HAVE_DARWIN86_IEEE_INTERFACE = @HAVE_DARWIN86_IEEE_INTERFACE@ +HAVE_DARWIN_IEEE_INTERFACE = @HAVE_DARWIN_IEEE_INTERFACE@ +HAVE_FREEBSD_IEEE_INTERFACE = @HAVE_FREEBSD_IEEE_INTERFACE@ +HAVE_GNUM68K_IEEE_INTERFACE = @HAVE_GNUM68K_IEEE_INTERFACE@ +HAVE_GNUPPC_IEEE_INTERFACE = @HAVE_GNUPPC_IEEE_INTERFACE@ +HAVE_GNUSPARC_IEEE_INTERFACE = @HAVE_GNUSPARC_IEEE_INTERFACE@ +HAVE_GNUX86_IEEE_INTERFACE = @HAVE_GNUX86_IEEE_INTERFACE@ +HAVE_HPUX11_IEEE_INTERFACE = @HAVE_HPUX11_IEEE_INTERFACE@ +HAVE_HPUX_IEEE_INTERFACE = @HAVE_HPUX_IEEE_INTERFACE@ +HAVE_IRIX_IEEE_INTERFACE = @HAVE_IRIX_IEEE_INTERFACE@ +HAVE_NETBSD_IEEE_INTERFACE = @HAVE_NETBSD_IEEE_INTERFACE@ +HAVE_OPENBSD_IEEE_INTERFACE = @HAVE_OPENBSD_IEEE_INTERFACE@ +HAVE_OS2EMX_IEEE_INTERFACE = @HAVE_OS2EMX_IEEE_INTERFACE@ +HAVE_SOLARIS_IEEE_INTERFACE = @HAVE_SOLARIS_IEEE_INTERFACE@ +HAVE_SUNOS4_IEEE_INTERFACE = @HAVE_SUNOS4_IEEE_INTERFACE@ +HAVE_TRU64_IEEE_INTERFACE = @HAVE_TRU64_IEEE_INTERFACE@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBM = @LIBM@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +noinst_LTLIBRARIES = libgslpoly.la +pkginclude_HEADERS = gsl_poly.h +AM_CPPFLAGS = -I$(top_srcdir) +libgslpoly_la_SOURCES = dd.c eval.c solve_quadratic.c solve_cubic.c zsolve_quadratic.c zsolve_cubic.c zsolve.c zsolve_init.c deriv.c +noinst_HEADERS = balance.c companion.c qr.c +TESTS = $(check_PROGRAMS) +test_SOURCES = test.c +test_LDADD = libgslpoly.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la ../sort/libgslsort.la +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu poly/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu poly/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libgslpoly.la: $(libgslpoly_la_OBJECTS) $(libgslpoly_la_DEPENDENCIES) $(EXTRA_libgslpoly_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(libgslpoly_la_OBJECTS) $(libgslpoly_la_LIBADD) $(LIBS) + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) $(EXTRA_test_DEPENDENCIES) + @rm -f test$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_OBJECTS) $(test_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dd.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/deriv.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eval.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/solve_cubic.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/solve_quadratic.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zsolve.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zsolve_cubic.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zsolve_init.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zsolve_quadratic.Plo@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-pkgincludeHEADERS: $(pkginclude_HEADERS) + @$(NORMAL_INSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \ + done + +uninstall-pkgincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + else \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_PROGRAMS) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +test.log: test$(EXEEXT) + @p='test$(EXEEXT)'; \ + b='test'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +@am__EXEEXT_TRUE@.test$(EXEEXT).log: +@am__EXEEXT_TRUE@ @p='$<'; \ +@am__EXEEXT_TRUE@ $(am__set_b); \ +@am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +@am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ +@am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +@am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-am +all-am: Makefile $(LTLIBRARIES) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(pkgincludedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-pkgincludeHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-pkgincludeHEADERS + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES cscopelist-am ctags ctags-am distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-pkgincludeHEADERS \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + recheck tags tags-am uninstall uninstall-am \ + uninstall-pkgincludeHEADERS + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gsl-2.5/poly/TODO b/gsl-2.5/poly/TODO new file mode 100644 index 00000000..db04620b --- /dev/null +++ b/gsl-2.5/poly/TODO @@ -0,0 +1,133 @@ +# -*- org -*- +#+CATEGORY: poly + +* Estimate error on general poly roots using Newton method? Allow for +multiple roots and higher derivatives + +* Newton-Maehly (Newton with implicit deflation) + +* Jenkins-Traub + +* Brian Smith's adaptation of Laguerre's method + +* Hirano's method, SIAM J Num Anal 19 (1982) 793-99 by Murota + +* Carstensen, Petkovic, "On iteration methods without derivatives for +the simultaneous determination of polynomial zeros", J. Comput. Appl. +Math., 45 (1993) 251-267 + +* Investigate this, + + > NA Digest Sunday, July 11, 1999 Volume 99 : Issue 28 + > + > From: Murakami Hiroshi + > Date: Sun, 11 Jul 1999 18:56:54 +0900 (JST) + > Subject: Code for Wilf's Complex Bisection Method + > + > A sample demo source of root finding method for the general complex + > coefficient polynomial is placed to URL . + > It is about 8KB in size and is a tar and gnu-zipped file. + > The algorithm is taken from the following reference: + > HERBERT S.WILF,"A Global Bisection Algorithm for Computing the Zeros + > of Polynomials in the Complex Plane",ACM.vol.25,No.3,July 1978,pp.415-420. + > + > The Wilf's method is the complex plane version of the Sturm bi-section + > method for the real polynomial. And theoretically very interesting. + > For the given complex interval (complex rectilinear region and sides are + > parallel to the x-y axis), the procedure gives the count of the complex + > roots of the polynomial inside the interval. Thus, successive bi-section + > or quad-section of the interval can give the sequence of the shrinking + > intervals containing the root inside to attain the required accuracies. + > The source code is written mostly Fortran77 language, however some + > violations are intensionally left as: 1: The DO-ENDDO loop structure. + > 2: The longer than 6 letter names. 3: The use of under-score letter. + > 4: The use of include statement. + > The code will be placed in the public domain. + > + +* Investigate this + +From: "Steven G. Johnson" +To: help-gsl@gnu.org +Subject: [Help-gsl] (in)accuracy of gsl_poly_complex_solve for repeated + roots? +Date: Sun, 05 Jun 2005 16:25:40 -0400 +Precedence: list +Envelope-to: bjg@network-theory.co.uk + +Hi, I noticed that gsl_poly_complex_solve seems to be surprisingly +inaccurate. For example, if you ask it for the roots of 1 + 4x + 6x^2 + +4x^3 + x^4, which should have x = -1 as a four-fold root (note that the +coefficients and solutions are exactly representable), it gives roots: + +-0.999903+9.66605e-05i +-0.999903-9.66605e-05i +-1.0001+9.66834e-05i +-1.0001-9.66834e-05i + +i.e. it is accurate to only 4 significant digits. (On the other hand, +when I have 4 distinct real roots it seems to be accurate to machine +precision.) + +If this kind of catastrophic accuracy loss is intrinsic to the algorithm +when repeated roots are encountered, please note it in the manual. + +However, I suspect that there may be algorithms to obtain higher +accuracy for multiple roots. I found the below references in a +literature search on the topic, which you may want to look into. (The +first reference can be found online at +http://www.neiu.edu/~zzeng/multroot.htm) + +Cordially, +Steven G. Johnson + +--------------------------------------------------------------------- +Algorithm 835: MULTROOT - a Matlab package for computing polynomial +roots and multiplicities +Zeng, Z. (Dept. of Math., Northeastern Illinois Univ., Chicago, IL, USA) +Source: ACM Transactions on Mathematical Software, v 30, n 2, June 2004, +p 218-36 +ISSN: 0098-3500 CODEN: ACMSCU +Publisher: ACM, USA + +Abstract: MULTROOT is a collection of Matlab modules for accurate +computation of polynomial roots, especially roots with nontrivial +multiplicities. As a blackbox-type software, MULTROOT requires the +polynomial coefficients as the only input, and outputs the computed +roots, multiplicities, backward error, estimated forward error, and the +structure-preserving condition number. The most significant features of +MULTROOT are the multiplicity identification capability and high +accuracy on multiple roots without using multiprecision arithmetic, even +if the polynomial coefficients are inexact. A comprehensive test suite +of polynomials that are collected from the literature is included for +numerical experiments and performance comparison (21 refs.) + +--------------------------------------------------------------------- +Ten methods to bound multiple roots of polynomials +Rump, S.M. (Inst. fur Informatik III, Tech. Univ. Hamburg-Harburg, +Hamburg, Germany) Source: Journal of Computational and Applied +Mathematics, v 156, n 2, 15 July 2003, p 403-32 +ISSN: 0377-0427 CODEN: JCAMDI +Publisher: Elsevier, Netherlands + +Abstract: Given a univariate polynomial P with a k-fold multiple root or +a k-fold root cluster near some z, we discuss nine different methods to +compute a disc near z which either contains exactly or contains at least +k roots of P. Many of the presented methods are known and of those some +are new. We are especially interested in the behavior of methods when +implemented in a rigorous way, that is, when taking into account all +possible effects of rounding errors. In other words, every result shall +be mathematically correct. We display extensive test sets comparing the +methods under different circumstances. Based on the results, we present +a tenth, hybrid method combining five of the previous methods which, for +give z, (i) detects the number k of roots near z and (ii) computes an +including disc with in most cases a radius of the order of the numerical +sensitivity of the root cluster. Therefore, the resulting discs are +numerically nearly optimal + + + +_______________________________________________ +Help-gsl mailing list +Help-gsl@gnu.org +http://lists.gnu.org/mailman/listinfo/help-gsl diff --git a/gsl-2.5/poly/balance.c b/gsl-2.5/poly/balance.c new file mode 100644 index 00000000..9bb6b2d4 --- /dev/null +++ b/gsl-2.5/poly/balance.c @@ -0,0 +1,127 @@ +/* poly/balance.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +static void balance_companion_matrix (double *m, size_t n); + +#define RADIX 2 +#define RADIX2 (RADIX*RADIX) + +static void +balance_companion_matrix (double *m, size_t nc) +{ + int not_converged = 1; + + double row_norm = 0; + double col_norm = 0; + + while (not_converged) + { + size_t i, j; + double g, f, s; + + not_converged = 0; + + for (i = 0; i < nc; i++) + { + /* column norm, excluding the diagonal */ + + if (i != nc - 1) + { + col_norm = fabs (MAT (m, i + 1, i, nc)); + } + else + { + col_norm = 0; + + for (j = 0; j < nc - 1; j++) + { + col_norm += fabs (MAT (m, j, nc - 1, nc)); + } + } + + /* row norm, excluding the diagonal */ + + if (i == 0) + { + row_norm = fabs (MAT (m, 0, nc - 1, nc)); + } + else if (i == nc - 1) + { + row_norm = fabs (MAT (m, i, i - 1, nc)); + } + else + { + row_norm = (fabs (MAT (m, i, i - 1, nc)) + + fabs (MAT (m, i, nc - 1, nc))); + } + + if (col_norm == 0 || row_norm == 0) + { + continue; + } + + g = row_norm / RADIX; + f = 1; + s = col_norm + row_norm; + + while (col_norm < g) + { + f *= RADIX; + col_norm *= RADIX2; + } + + g = row_norm * RADIX; + + while (col_norm > g) + { + f /= RADIX; + col_norm /= RADIX2; + } + + if ((row_norm + col_norm) < 0.95 * s * f) + { + not_converged = 1; + + g = 1 / f; + + if (i == 0) + { + MAT (m, 0, nc - 1, nc) *= g; + } + else + { + MAT (m, i, i - 1, nc) *= g; + MAT (m, i, nc - 1, nc) *= g; + } + + if (i == nc - 1) + { + for (j = 0; j < nc; j++) + { + MAT (m, j, i, nc) *= f; + } + } + else + { + MAT (m, i + 1, i, nc) *= f; + } + } + } + } +} diff --git a/gsl-2.5/poly/companion.c b/gsl-2.5/poly/companion.c new file mode 100644 index 00000000..872cc059 --- /dev/null +++ b/gsl-2.5/poly/companion.c @@ -0,0 +1,36 @@ +/* poly/companion.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +static void set_companion_matrix (const double *a, size_t n, double *m); + +static void +set_companion_matrix (const double *a, size_t nc, double *m) +{ + size_t i, j; + + for (i = 0; i < nc; i++) + for (j = 0; j < nc; j++) + MAT (m, i, j, nc) = 0.0; + + for (i = 1; i < nc; i++) + MAT (m, i, i - 1, nc) = 1.0; + + for (i = 0; i < nc; i++) + MAT (m, i, nc - 1, nc) = -a[i] / a[nc]; +} diff --git a/gsl-2.5/poly/dd.c b/gsl-2.5/poly/dd.c new file mode 100644 index 00000000..73b2bf91 --- /dev/null +++ b/gsl-2.5/poly/dd.c @@ -0,0 +1,140 @@ +/* interpolation/interp_poly.c + * + * Copyright (C) 2001 DAN, HO-JIN + * Copyright (C) 2013 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Modified for standalone use in polynomial directory, B.Gough 2001 */ + +#include +#include +#include + +int +gsl_poly_dd_init (double dd[], const double xa[], const double ya[], + size_t size) +{ + size_t i, j; + + /* Newton's divided differences */ + + dd[0] = ya[0]; + + for (j = size - 1; j >= 1; j--) + { + dd[j] = (ya[j] - ya[j - 1]) / (xa[j] - xa[j - 1]); + } + + for (i = 2; i < size; i++) + { + for (j = size - 1; j >= i; j--) + { + dd[j] = (dd[j] - dd[j - 1]) / (xa[j] - xa[j - i]); + } + } + + return GSL_SUCCESS; +} + +int +gsl_poly_dd_taylor (double c[], double xp, + const double dd[], const double xa[], size_t size, + double w[]) +{ + size_t i, j; + + for (i = 0; i < size; i++) + { + c[i] = 0.0; + w[i] = 0.0; + } + + w[size - 1] = 1.0; + + c[0] = dd[0]; + + for (i = size - 1; i-- > 0;) + { + w[i] = -w[i + 1] * (xa[size - 2 - i] - xp); + + for (j = i + 1; j < size - 1; j++) + { + w[j] = w[j] - w[j + 1] * (xa[size - 2 - i] - xp); + } + + for (j = i; j < size; j++) + { + c[j - i] += w[j] * dd[size - i - 1]; + } + } + + return GSL_SUCCESS; +} + +/* +gsl_poly_dd_hermite_init() + Compute divided difference representation of data +for Hermite polynomial interpolation + +Inputs: dd - (output) array of size 2*size containing + divided differences, dd[k] = f[z_0,z_1,...,z_k] + za - (output) array of size 2*size containing + z values + xa - x data + ya - y data + dya - dy/dx data + size - size of xa,ya,dya arrays + +Return: success +*/ + +int +gsl_poly_dd_hermite_init (double dd[], double za[], const double xa[], const double ya[], + const double dya[], const size_t size) +{ + const size_t N = 2 * size; + size_t i, j; + + /* Hermite divided differences */ + + dd[0] = ya[0]; + + /* compute: dd[j] = f[z_{j-1},z_j] for j \in [1,N-1] */ + for (j = 0; j < size; ++j) + { + za[2*j] = xa[j]; + za[2*j + 1] = xa[j]; + + if (j != 0) + { + dd[2*j] = (ya[j] - ya[j - 1]) / (xa[j] - xa[j - 1]); + dd[2*j - 1] = dya[j - 1]; + } + } + + dd[N - 1] = dya[size - 1]; + + for (i = 2; i < N; i++) + { + for (j = N - 1; j >= i; j--) + { + dd[j] = (dd[j] - dd[j - 1]) / (za[j] - za[j - i]); + } + } + + return GSL_SUCCESS; +} /* gsl_poly_dd_hermite_init() */ diff --git a/gsl-2.5/poly/dd.lo b/gsl-2.5/poly/dd.lo new file mode 100644 index 00000000..a49505b4 --- /dev/null +++ b/gsl-2.5/poly/dd.lo @@ -0,0 +1,12 @@ +# dd.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/dd.o' + +# Name of the non-PIC object +non_pic_object='dd.o' + diff --git a/gsl-2.5/poly/deriv.c b/gsl-2.5/poly/deriv.c new file mode 100644 index 00000000..461a2d45 --- /dev/null +++ b/gsl-2.5/poly/deriv.c @@ -0,0 +1,64 @@ +/* poly/eval.c + * + * Copyright (C) 2009 Marc JOURDAIN + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include + +int +gsl_poly_eval_derivs (const double c[], const size_t lenc, const double x, + double res[], const size_t lenres) +{ + size_t i, n, nmax; + size_t k, l, lmax; + + for (i = 0, n = 0, nmax = 0; i < lenres; i++) + { + if (n < lenc) + { + res[i] = c[lenc - 1]; + nmax = n; + n++; + } + else + res[i] = 0.0; + } + + for (i = 0; i < lenc - 1; i++) + { + k = (lenc - 1) - i; + res[0] = ((x * res[0]) + c[k - 1]); + lmax = (nmax < k) ? nmax : k - 1; + for (l = 1; l <= lmax; l++) + { + res[l] = ((x * res[l]) + res[l - 1]); + } + } + + { + double f = 1.0; + for (i = 2; i <= nmax; i++) + { + f *= i; + res[i] *= f; + } + } + + return GSL_SUCCESS; +} diff --git a/gsl-2.5/poly/deriv.lo b/gsl-2.5/poly/deriv.lo new file mode 100644 index 00000000..825cd7be --- /dev/null +++ b/gsl-2.5/poly/deriv.lo @@ -0,0 +1,12 @@ +# deriv.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/deriv.o' + +# Name of the non-PIC object +non_pic_object='deriv.o' + diff --git a/gsl-2.5/poly/eval.c b/gsl-2.5/poly/eval.c new file mode 100644 index 00000000..8b0437a3 --- /dev/null +++ b/gsl-2.5/poly/eval.c @@ -0,0 +1,27 @@ +/* poly/eval.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * Complex functions Copyright (C) 2007 Frank Reininghaus + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include + +/* Compile all the inline functions */ + +#define COMPILE_INLINE_STATIC +#include "build.h" +#include diff --git a/gsl-2.5/poly/eval.lo b/gsl-2.5/poly/eval.lo new file mode 100644 index 00000000..1ef544a3 --- /dev/null +++ b/gsl-2.5/poly/eval.lo @@ -0,0 +1,12 @@ +# eval.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/eval.o' + +# Name of the non-PIC object +non_pic_object='eval.o' + diff --git a/gsl-2.5/poly/gsl_poly.h b/gsl-2.5/poly/gsl_poly.h new file mode 100644 index 00000000..2352857f --- /dev/null +++ b/gsl-2.5/poly/gsl_poly.h @@ -0,0 +1,183 @@ +/* poly/gsl_poly.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2004, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_POLY_H__ +#define __GSL_POLY_H__ + +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + + +/* Evaluate polynomial + * + * c[0] + c[1] x + c[2] x^2 + ... + c[len-1] x^(len-1) + * + * exceptions: none + */ + +/* real polynomial, real x */ +INLINE_DECL double gsl_poly_eval(const double c[], const int len, const double x); + +/* real polynomial, complex x */ +INLINE_DECL gsl_complex gsl_poly_complex_eval (const double c [], const int len, const gsl_complex z); + +/* complex polynomial, complex x */ +INLINE_DECL gsl_complex gsl_complex_poly_complex_eval (const gsl_complex c [], const int len, const gsl_complex z); + +int gsl_poly_eval_derivs(const double c[], const size_t lenc, const double x, double res[], const size_t lenres); + +#ifdef HAVE_INLINE +INLINE_FUN +double +gsl_poly_eval(const double c[], const int len, const double x) +{ + int i; + double ans = c[len-1]; + for(i=len-1; i>0; i--) ans = c[i-1] + x * ans; + return ans; +} + +INLINE_FUN +gsl_complex +gsl_poly_complex_eval(const double c[], const int len, const gsl_complex z) +{ + int i; + gsl_complex ans; + GSL_SET_COMPLEX (&ans, c[len-1], 0.0); + for(i=len-1; i>0; i--) { + /* The following three lines are equivalent to + ans = gsl_complex_add_real (gsl_complex_mul (z, ans), c[i-1]); + but faster */ + double tmp = c[i-1] + GSL_REAL (z) * GSL_REAL (ans) - GSL_IMAG (z) * GSL_IMAG (ans); + GSL_SET_IMAG (&ans, GSL_IMAG (z) * GSL_REAL (ans) + GSL_REAL (z) * GSL_IMAG (ans)); + GSL_SET_REAL (&ans, tmp); + } + return ans; +} + +INLINE_FUN +gsl_complex +gsl_complex_poly_complex_eval(const gsl_complex c[], const int len, const gsl_complex z) +{ + int i; + gsl_complex ans = c[len-1]; + for(i=len-1; i>0; i--) { + /* The following three lines are equivalent to + ans = gsl_complex_add (c[i-1], gsl_complex_mul (x, ans)); + but faster */ + double tmp = GSL_REAL (c[i-1]) + GSL_REAL (z) * GSL_REAL (ans) - GSL_IMAG (z) * GSL_IMAG (ans); + GSL_SET_IMAG (&ans, GSL_IMAG (c[i-1]) + GSL_IMAG (z) * GSL_REAL (ans) + GSL_REAL (z) * GSL_IMAG (ans)); + GSL_SET_REAL (&ans, tmp); + } + return ans; +} +#endif /* HAVE_INLINE */ + +/* Work with divided-difference polynomials, Abramowitz & Stegun 25.2.26 */ + +int +gsl_poly_dd_init (double dd[], const double x[], const double y[], + size_t size); + +INLINE_DECL double +gsl_poly_dd_eval (const double dd[], const double xa[], const size_t size, const double x); + +#ifdef HAVE_INLINE +INLINE_FUN +double +gsl_poly_dd_eval(const double dd[], const double xa[], const size_t size, const double x) +{ + size_t i; + double y = dd[size - 1]; + for (i = size - 1; i--;) y = dd[i] + (x - xa[i]) * y; + return y; +} +#endif /* HAVE_INLINE */ + + +int +gsl_poly_dd_taylor (double c[], double xp, + const double dd[], const double x[], size_t size, + double w[]); + +int +gsl_poly_dd_hermite_init (double dd[], double z[], const double xa[], const double ya[], + const double dya[], const size_t size); + +/* Solve for real or complex roots of the standard quadratic equation, + * returning the number of real roots. + * + * Roots are returned ordered. + */ +int gsl_poly_solve_quadratic (double a, double b, double c, + double * x0, double * x1); + +int +gsl_poly_complex_solve_quadratic (double a, double b, double c, + gsl_complex * z0, gsl_complex * z1); + + +/* Solve for real roots of the cubic equation + * x^3 + a x^2 + b x + c = 0, returning the + * number of real roots. + * + * Roots are returned ordered. + */ +int gsl_poly_solve_cubic (double a, double b, double c, + double * x0, double * x1, double * x2); + +int +gsl_poly_complex_solve_cubic (double a, double b, double c, + gsl_complex * z0, gsl_complex * z1, + gsl_complex * z2); + + +/* Solve for the complex roots of a general real polynomial */ + +typedef struct +{ + size_t nc ; + double * matrix ; +} +gsl_poly_complex_workspace ; + +gsl_poly_complex_workspace * gsl_poly_complex_workspace_alloc (size_t n); +void gsl_poly_complex_workspace_free (gsl_poly_complex_workspace * w); + +int +gsl_poly_complex_solve (const double * a, size_t n, + gsl_poly_complex_workspace * w, + gsl_complex_packed_ptr z); + +__END_DECLS + +#endif /* __GSL_POLY_H__ */ diff --git a/gsl-2.5/poly/libgslpoly.la b/gsl-2.5/poly/libgslpoly.la new file mode 100644 index 00000000..849cbf8a --- /dev/null +++ b/gsl-2.5/poly/libgslpoly.la @@ -0,0 +1,41 @@ +# libgslpoly.la - a libtool library file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='' + +# Names of this library. +library_names='' + +# The name of the static archive. +old_library='libgslpoly.a' + +# Linker flags that can not go in dependency_libs. +inherited_linker_flags='' + +# Libraries that this one depends upon. +dependency_libs=' -lm' + +# Names of additional weak libraries provided by this library +weak_library_names='' + +# Version information for libgslpoly. +current= +age= +revision= + +# Is this an already installed library? +installed=no + +# Should we warn about portability when linking against -modules? +shouldnotlink=no + +# Files to dlopen/dlpreopen +dlopen='' +dlpreopen='' + +# Directory that this library needs to be installed in: +libdir='' diff --git a/gsl-2.5/poly/qr.c b/gsl-2.5/poly/qr.c new file mode 100644 index 00000000..2d370279 --- /dev/null +++ b/gsl-2.5/poly/qr.c @@ -0,0 +1,245 @@ +/* poly/qr.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +static int qr_companion (double *h, size_t nc, gsl_complex_packed_ptr z); + +static int +qr_companion (double *h, size_t nc, gsl_complex_packed_ptr zroot) +{ + double t = 0.0; + + size_t iterations, e, i, j, k, m; + + double w, x, y, s, z; + + double p = 0, q = 0, r = 0; + + /* FIXME: if p,q,r, are not set to zero then the compiler complains + that they ``might be used uninitialized in this + function''. Looking at the code this does seem possible, so this + should be checked. */ + + int notlast; + + size_t n = nc; + +next_root: + + if (n == 0) + return GSL_SUCCESS ; + + iterations = 0; + +next_iteration: + + for (e = n; e >= 2; e--) + { + double a1 = fabs (FMAT (h, e, e - 1, nc)); + double a2 = fabs (FMAT (h, e - 1, e - 1, nc)); + double a3 = fabs (FMAT (h, e, e, nc)); + + if (a1 <= GSL_DBL_EPSILON * (a2 + a3)) + break; + } + + x = FMAT (h, n, n, nc); + + if (e == n) + { + GSL_SET_COMPLEX_PACKED (zroot, n-1, x + t, 0); /* one real root */ + n--; + goto next_root; + /*continue;*/ + } + + y = FMAT (h, n - 1, n - 1, nc); + w = FMAT (h, n - 1, n, nc) * FMAT (h, n, n - 1, nc); + + if (e == n - 1) + { + p = (y - x) / 2; + q = p * p + w; + y = sqrt (fabs (q)); + + x += t; + + if (q > 0) /* two real roots */ + { + if (p < 0) + y = -y; + y += p; + + GSL_SET_COMPLEX_PACKED (zroot, n-1, x - w / y, 0); + GSL_SET_COMPLEX_PACKED (zroot, n-2, x + y, 0); + } + else + { + GSL_SET_COMPLEX_PACKED (zroot, n-1, x + p, -y); + GSL_SET_COMPLEX_PACKED (zroot, n-2, x + p, y); + } + n -= 2; + + goto next_root; + /*continue;*/ + } + + /* No more roots found yet, do another iteration */ + + if (iterations == 120) /* increased from 30 to 120 */ + { + /* too many iterations - give up! */ + + return GSL_FAILURE ; + } + + if (iterations % 10 == 0 && iterations > 0) + { + /* use an exceptional shift */ + + t += x; + + for (i = 1; i <= n; i++) + { + FMAT (h, i, i, nc) -= x; + } + + s = fabs (FMAT (h, n, n - 1, nc)) + fabs (FMAT (h, n - 1, n - 2, nc)); + y = 0.75 * s; + x = y; + w = -0.4375 * s * s; + } + + iterations++; + + for (m = n - 2; m >= e; m--) + { + double a1, a2, a3; + + z = FMAT (h, m, m, nc); + r = x - z; + s = y - z; + p = FMAT (h, m, m + 1, nc) + (r * s - w) / FMAT (h, m + 1, m, nc); + q = FMAT (h, m + 1, m + 1, nc) - z - r - s; + r = FMAT (h, m + 2, m + 1, nc); + s = fabs (p) + fabs (q) + fabs (r); + p /= s; + q /= s; + r /= s; + + if (m == e) + break; + + a1 = fabs (FMAT (h, m, m - 1, nc)); + a2 = fabs (FMAT (h, m - 1, m - 1, nc)); + a3 = fabs (FMAT (h, m + 1, m + 1, nc)); + + if (a1 * (fabs (q) + fabs (r)) <= GSL_DBL_EPSILON * fabs (p) * (a2 + a3)) + break; + } + + for (i = m + 2; i <= n; i++) + { + FMAT (h, i, i - 2, nc) = 0; + } + + for (i = m + 3; i <= n; i++) + { + FMAT (h, i, i - 3, nc) = 0; + } + + /* double QR step */ + + for (k = m; k <= n - 1; k++) + { + notlast = (k != n - 1); + + if (k != m) + { + p = FMAT (h, k, k - 1, nc); + q = FMAT (h, k + 1, k - 1, nc); + r = notlast ? FMAT (h, k + 2, k - 1, nc) : 0.0; + + x = fabs (p) + fabs (q) + fabs (r); + + if (x == 0) + continue; /* FIXME????? */ + + p /= x; + q /= x; + r /= x; + } + + s = sqrt (p * p + q * q + r * r); + + if (p < 0) + s = -s; + + if (k != m) + { + FMAT (h, k, k - 1, nc) = -s * x; + } + else if (e != m) + { + FMAT (h, k, k - 1, nc) *= -1; + } + + p += s; + x = p / s; + y = q / s; + z = r / s; + q /= p; + r /= p; + + /* do row modifications */ + + for (j = k; j <= n; j++) + { + p = FMAT (h, k, j, nc) + q * FMAT (h, k + 1, j, nc); + + if (notlast) + { + p += r * FMAT (h, k + 2, j, nc); + FMAT (h, k + 2, j, nc) -= p * z; + } + + FMAT (h, k + 1, j, nc) -= p * y; + FMAT (h, k, j, nc) -= p * x; + } + + j = (k + 3 < n) ? (k + 3) : n; + + /* do column modifications */ + + for (i = e; i <= j; i++) + { + p = x * FMAT (h, i, k, nc) + y * FMAT (h, i, k + 1, nc); + + if (notlast) + { + p += z * FMAT (h, i, k + 2, nc); + FMAT (h, i, k + 2, nc) -= p * r; + } + FMAT (h, i, k + 1, nc) -= p * q; + FMAT (h, i, k, nc) -= p; + } + } + + goto next_iteration; +} + diff --git a/gsl-2.5/poly/solve_cubic.c b/gsl-2.5/poly/solve_cubic.c new file mode 100644 index 00000000..e2d8d854 --- /dev/null +++ b/gsl-2.5/poly/solve_cubic.c @@ -0,0 +1,110 @@ +/* poly/solve_cubic.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007, 2009 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* solve_cubic.c - finds the real roots of x^3 + a x^2 + b x + c = 0 */ + +#include +#include +#include +#include + +#define SWAP(a,b) do { double tmp = b ; b = a ; a = tmp ; } while(0) + +int +gsl_poly_solve_cubic (double a, double b, double c, + double *x0, double *x1, double *x2) +{ + double q = (a * a - 3 * b); + double r = (2 * a * a * a - 9 * a * b + 27 * c); + + double Q = q / 9; + double R = r / 54; + + double Q3 = Q * Q * Q; + double R2 = R * R; + + double CR2 = 729 * r * r; + double CQ3 = 2916 * q * q * q; + + if (R == 0 && Q == 0) + { + *x0 = - a / 3 ; + *x1 = - a / 3 ; + *x2 = - a / 3 ; + return 3 ; + } + else if (CR2 == CQ3) + { + /* this test is actually R2 == Q3, written in a form suitable + for exact computation with integers */ + + /* Due to finite precision some double roots may be missed, and + considered to be a pair of complex roots z = x +/- epsilon i + close to the real axis. */ + + double sqrtQ = sqrt (Q); + + if (R > 0) + { + *x0 = -2 * sqrtQ - a / 3; + *x1 = sqrtQ - a / 3; + *x2 = sqrtQ - a / 3; + } + else + { + *x0 = - sqrtQ - a / 3; + *x1 = - sqrtQ - a / 3; + *x2 = 2 * sqrtQ - a / 3; + } + return 3 ; + } + else if (R2 < Q3) + { + double sgnR = (R >= 0 ? 1 : -1); + double ratio = sgnR * sqrt (R2 / Q3); + double theta = acos (ratio); + double norm = -2 * sqrt (Q); + *x0 = norm * cos (theta / 3) - a / 3; + *x1 = norm * cos ((theta + 2.0 * M_PI) / 3) - a / 3; + *x2 = norm * cos ((theta - 2.0 * M_PI) / 3) - a / 3; + + /* Sort *x0, *x1, *x2 into increasing order */ + + if (*x0 > *x1) + SWAP(*x0, *x1) ; + + if (*x1 > *x2) + { + SWAP(*x1, *x2) ; + + if (*x0 > *x1) + SWAP(*x0, *x1) ; + } + + return 3; + } + else + { + double sgnR = (R >= 0 ? 1 : -1); + double A = -sgnR * pow (fabs (R) + sqrt (R2 - Q3), 1.0/3.0); + double B = Q / A ; + *x0 = A + B - a / 3; + return 1; + } +} diff --git a/gsl-2.5/poly/solve_cubic.lo b/gsl-2.5/poly/solve_cubic.lo new file mode 100644 index 00000000..ab2ea23c --- /dev/null +++ b/gsl-2.5/poly/solve_cubic.lo @@ -0,0 +1,12 @@ +# solve_cubic.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/solve_cubic.o' + +# Name of the non-PIC object +non_pic_object='solve_cubic.o' + diff --git a/gsl-2.5/poly/solve_quadratic.c b/gsl-2.5/poly/solve_quadratic.c new file mode 100644 index 00000000..f96d1db8 --- /dev/null +++ b/gsl-2.5/poly/solve_quadratic.c @@ -0,0 +1,87 @@ +/* poly/solve_quadratic.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* solve_quadratic.c - finds the real roots of a x^2 + b x + c = 0 */ + +#include +#include + +#include + +int +gsl_poly_solve_quadratic (double a, double b, double c, + double *x0, double *x1) +{ + if (a == 0) /* Handle linear case */ + { + if (b == 0) + { + return 0; + } + else + { + *x0 = -c / b; + return 1; + }; + } + + { + double disc = b * b - 4 * a * c; + + if (disc > 0) + { + if (b == 0) + { + double r = sqrt (-c / a); + *x0 = -r; + *x1 = r; + } + else + { + double sgnb = (b > 0 ? 1 : -1); + double temp = -0.5 * (b + sgnb * sqrt (disc)); + double r1 = temp / a ; + double r2 = c / temp ; + + if (r1 < r2) + { + *x0 = r1 ; + *x1 = r2 ; + } + else + { + *x0 = r2 ; + *x1 = r1 ; + } + } + return 2; + } + else if (disc == 0) + { + *x0 = -0.5 * b / a ; + *x1 = -0.5 * b / a ; + return 2 ; + } + else + { + return 0; + } + } +} + diff --git a/gsl-2.5/poly/solve_quadratic.lo b/gsl-2.5/poly/solve_quadratic.lo new file mode 100644 index 00000000..cd7bf494 --- /dev/null +++ b/gsl-2.5/poly/solve_quadratic.lo @@ -0,0 +1,12 @@ +# solve_quadratic.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/solve_quadratic.o' + +# Name of the non-PIC object +non_pic_object='solve_quadratic.o' + diff --git a/gsl-2.5/poly/test b/gsl-2.5/poly/test new file mode 100755 index 00000000..455c8ead Binary files /dev/null and b/gsl-2.5/poly/test differ diff --git a/gsl-2.5/poly/test-suite.log b/gsl-2.5/poly/test-suite.log new file mode 100644 index 00000000..f5b36e6c --- /dev/null +++ b/gsl-2.5/poly/test-suite.log @@ -0,0 +1,14 @@ +================================== + gsl 2.5: poly/test-suite.log +================================== + +# TOTAL: 1 +# PASS: 1 +# SKIP: 0 +# XFAIL: 0 +# FAIL: 0 +# XPASS: 0 +# ERROR: 0 + +.. contents:: :depth: 2 + diff --git a/gsl-2.5/poly/test.c b/gsl-2.5/poly/test.c new file mode 100644 index 00000000..f6a7e3fd --- /dev/null +++ b/gsl-2.5/poly/test.c @@ -0,0 +1,680 @@ +/* poly/test.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include +#include + +/* sort by Re(z) then by Im(z) */ +static int +cmp_cplx(const double *a, const double *b) +{ + double r = a[0] - b[0]; + + if (r == 0.0) + { + double t = a[1] - b[1]; + return t < 0.0 ? -1 : t > 0.0 ? 1 : 0; + } + else if (r < 0.0) + return -1; + else + return 1; +} + +int +main (void) +{ + const double eps = 100.0 * GSL_DBL_EPSILON; + + gsl_ieee_env_setup (); + + /* Polynomial evaluation */ + + { + double x, y; + double c[3] = { 1.0, 0.5, 0.3 }; + x = 0.5; + y = gsl_poly_eval (c, 3, x); + gsl_test_rel (y, 1 + 0.5 * x + 0.3 * x * x, eps, + "gsl_poly_eval({1, 0.5, 0.3}, 0.5)"); + } + + { + double x, y; + double d[11] = { 1, -1, 1, -1, 1, -1, 1, -1, 1, -1, 1 }; + x = 1.0; + y = gsl_poly_eval (d, 11, x); + gsl_test_rel (y, 1.0, eps, + "gsl_poly_eval({1,-1, 1, -1, 1, -1, 1, -1, 1, -1, 1}, 1.0)"); + + } + + { + gsl_complex x, y; + double c[1] = {0.3}; + GSL_SET_REAL (&x, 0.75); + GSL_SET_IMAG (&x, 1.2); + y = gsl_poly_complex_eval (c, 1, x); + + gsl_test_rel (GSL_REAL (y), 0.3, eps, "y.real, gsl_poly_complex_eval ({0.3}, 0.75 + 1.2i)"); + gsl_test_rel (GSL_IMAG (y), 0.0, eps, "y.imag, gsl_poly_complex_eval ({0.3}, 0.75 + 1.2i)"); + } + + { + gsl_complex x, y; + double c[4] = {2.1, -1.34, 0.76, 0.45}; + GSL_SET_REAL (&x, 0.49); + GSL_SET_IMAG (&x, 0.95); + y = gsl_poly_complex_eval (c, 4, x); + + gsl_test_rel (GSL_REAL (y), 0.3959143, eps, "y.real, gsl_poly_complex_eval ({2.1, -1.34, 0.76, 0.45}, 0.49 + 0.95i)"); + gsl_test_rel (GSL_IMAG (y), -0.6433305, eps, "y.imag, gsl_poly_complex_eval ({2.1, -1.34, 0.76, 0.45}, 0.49 + 0.95i)"); + } + + { + gsl_complex x, y; + gsl_complex c[1]; + GSL_SET_REAL (&c[0], 0.674); + GSL_SET_IMAG (&c[0], -1.423); + GSL_SET_REAL (&x, -1.44); + GSL_SET_IMAG (&x, 9.55); + y = gsl_complex_poly_complex_eval (c, 1, x); + + gsl_test_rel (GSL_REAL (y), 0.674, eps, "y.real, gsl_complex_poly_complex_eval ({0.674 - 1.423i}, -1.44 + 9.55i)"); + gsl_test_rel (GSL_IMAG (y), -1.423, eps, "y.imag, gsl_complex_poly_complex_eval ({0.674 - 1.423i}, -1.44 + 9.55i)"); + } + + { + gsl_complex x, y; + gsl_complex c[4]; + GSL_SET_REAL (&c[0], -2.31); + GSL_SET_IMAG (&c[0], 0.44); + GSL_SET_REAL (&c[1], 4.21); + GSL_SET_IMAG (&c[1], -3.19); + GSL_SET_REAL (&c[2], 0.93); + GSL_SET_IMAG (&c[2], 1.04); + GSL_SET_REAL (&c[3], -0.42); + GSL_SET_IMAG (&c[3], 0.68); + GSL_SET_REAL (&x, 0.49); + GSL_SET_IMAG (&x, 0.95); + y = gsl_complex_poly_complex_eval (c, 4, x); + + gsl_test_rel (GSL_REAL (y), 1.82462012, eps, "y.real, gsl_complex_poly_complex_eval ({-2.31 + 0.44i, 4.21 - 3.19i, 0.93 + 1.04i, -0.42 + 0.68i}, 0.49 + 0.95i)"); + gsl_test_rel (GSL_IMAG (y), 2.30389412, eps, "y.imag, gsl_complex_poly_complex_eval ({-2.31 + 0.44i, 4.21 - 3.19i, 0.93 + 1.04i, -0.42 + 0.68i}, 0.49 + 0.95i)"); + } + + /* Quadratic */ + + { + double x0, x1; + + int n = gsl_poly_solve_quadratic (4.0, -20.0, 26.0, &x0, &x1); + + gsl_test (n != 0, "gsl_poly_solve_quadratic, no roots, (2x - 5)^2 = -1"); + } + + { + double x0, x1; + + int n = gsl_poly_solve_quadratic (4.0, -20.0, 25.0, &x0, &x1); + + gsl_test (n != 2, "gsl_poly_solve_quadratic, one root, (2x - 5)^2 = 0"); + gsl_test_rel (x0, 2.5, 1e-9, "x0, (2x - 5)^2 = 0"); + gsl_test_rel (x1, 2.5, 1e-9, "x1, (2x - 5)^2 = 0"); + gsl_test (x0 != x1, "x0 == x1, (2x - 5)^2 = 0"); + } + + { + double x0, x1; + + int n = gsl_poly_solve_quadratic (4.0, -20.0, 21.0, &x0, &x1); + + gsl_test (n != 2, "gsl_poly_solve_quadratic, two roots, (2x - 5)^2 = 4"); + gsl_test_rel (x0, 1.5, 1e-9, "x0, (2x - 5)^2 = 4"); + gsl_test_rel (x1, 3.5, 1e-9, "x1, (2x - 5)^2 = 4"); + } + + { + double x0, x1; + + int n = gsl_poly_solve_quadratic (4.0, 7.0, 0.0, &x0, &x1); + + gsl_test (n != 2, "gsl_poly_solve_quadratic, two roots, x(4x + 7) = 0"); + gsl_test_rel (x0, -1.75, 1e-9, "x0, x(4x + 7) = 0"); + gsl_test_rel (x1, 0.0, 1e-9, "x1, x(4x + 7) = 0"); + } + + { + double x0, x1; + + int n = gsl_poly_solve_quadratic (5.0, 0.0, -20.0, &x0, &x1); + + gsl_test (n != 2, + "gsl_poly_solve_quadratic, two roots b = 0, 5 x^2 = 20"); + gsl_test_rel (x0, -2.0, 1e-9, "x0, 5 x^2 = 20"); + gsl_test_rel (x1, 2.0, 1e-9, "x1, 5 x^2 = 20"); + } + + + { + double x0, x1; + + int n = gsl_poly_solve_quadratic (0.0, 3.0, -21.0, &x0, &x1); + + gsl_test (n != 1, + "gsl_poly_solve_quadratic, one root (linear) 3 x - 21 = 0"); + gsl_test_rel (x0, 7.0, 1e-9, "x0, 3x - 21 = 0"); + } + + + { + double x0, x1; + int n = gsl_poly_solve_quadratic (0.0, 0.0, 1.0, &x0, &x1); + + gsl_test (n != 0, + "gsl_poly_solve_quadratic, no roots 1 = 0"); + } + + + /* Cubic */ + + { + double x0, x1, x2; + + int n = gsl_poly_solve_cubic (0.0, 0.0, -27.0, &x0, &x1, &x2); + + gsl_test (n != 1, "gsl_poly_solve_cubic, one root, x^3 = 27"); + gsl_test_rel (x0, 3.0, 1e-9, "x0, x^3 = 27"); + } + + { + double x0, x1, x2; + + int n = gsl_poly_solve_cubic (-51.0, 867.0, -4913.0, &x0, &x1, &x2); + + gsl_test (n != 3, "gsl_poly_solve_cubic, three roots, (x-17)^3=0"); + gsl_test_rel (x0, 17.0, 1e-9, "x0, (x-17)^3=0"); + gsl_test_rel (x1, 17.0, 1e-9, "x1, (x-17)^3=0"); + gsl_test_rel (x2, 17.0, 1e-9, "x2, (x-17)^3=0"); + } + + { + double x0, x1, x2; + + int n = gsl_poly_solve_cubic (-57.0, 1071.0, -6647.0, &x0, &x1, &x2); + + gsl_test (n != 3, + "gsl_poly_solve_cubic, three roots, (x-17)(x-17)(x-23)=0"); + gsl_test_rel (x0, 17.0, 1e-9, "x0, (x-17)(x-17)(x-23)=0"); + gsl_test_rel (x1, 17.0, 1e-9, "x1, (x-17)(x-17)(x-23)=0"); + gsl_test_rel (x2, 23.0, 1e-9, "x2, (x-17)(x-17)(x-23)=0"); + } + + { + double x0, x1, x2; + + int n = gsl_poly_solve_cubic (-11.0, -493.0, +6647.0, &x0, &x1, &x2); + + gsl_test (n != 3, + "gsl_poly_solve_cubic, three roots, (x+23)(x-17)(x-17)=0"); + gsl_test_rel (x0, -23.0, 1e-9, "x0, (x+23)(x-17)(x-17)=0"); + gsl_test_rel (x1, 17.0, 1e-9, "x1, (x+23)(x-17)(x-17)=0"); + gsl_test_rel (x2, 17.0, 1e-9, "x2, (x+23)(x-17)(x-17)=0"); + } + + { + double x0, x1, x2; + + int n = gsl_poly_solve_cubic (-143.0, 5087.0, -50065.0, &x0, &x1, &x2); + + gsl_test (n != 3, + "gsl_poly_solve_cubic, three roots, (x-17)(x-31)(x-95)=0"); + gsl_test_rel (x0, 17.0, 1e-9, "x0, (x-17)(x-31)(x-95)=0"); + gsl_test_rel (x1, 31.0, 1e-9, "x1, (x-17)(x-31)(x-95)=0"); + gsl_test_rel (x2, 95.0, 1e-9, "x2, (x-17)(x-31)(x-95)=0"); + } + + { + double x0, x1, x2; + + int n = gsl_poly_solve_cubic (-109.0, 803.0, 50065.0, &x0, &x1, &x2); + + gsl_test (n != 3, + "gsl_poly_solve_cubic, three roots, (x+17)(x-31)(x-95)=0"); + gsl_test_rel (x0, -17.0, 1e-9, "x0, (x+17)(x-31)(x-95)=0"); + gsl_test_rel (x1, 31.0, 1e-9, "x1, (x+17)(x-31)(x-95)=0"); + gsl_test_rel (x2, 95.0, 1e-9, "x2, (x+17)(x-31)(x-95)=0"); + } + + /* Quadratic with complex roots */ + + { + gsl_complex z0, z1; + + int n = gsl_poly_complex_solve_quadratic (4.0, -20.0, 26.0, &z0, &z1); + + gsl_test (n != 2, + "gsl_poly_complex_solve_quadratic, 2 roots (2x - 5)^2 = -1"); + gsl_test_rel (GSL_REAL (z0), 2.5, 1e-9, "z0.real, (2x - 5)^2 = -1"); + gsl_test_rel (GSL_IMAG (z0), -0.5, 1e-9, "z0.imag, (2x - 5)^2 = -1"); + + gsl_test_rel (GSL_REAL (z1), 2.5, 1e-9, "z1.real, (2x - 5)^2 = -1"); + gsl_test_rel (GSL_IMAG (z1), 0.5, 1e-9, "z1.imag, (2x - 5)^2 = -1"); + } + + { + gsl_complex z0, z1; + + int n = gsl_poly_complex_solve_quadratic (4.0, -20.0, 25.0, &z0, &z1); + + gsl_test (n != 2, + "gsl_poly_complex_solve_quadratic, one root, (2x - 5)^2 = 0"); + gsl_test_rel (GSL_REAL (z0), 2.5, 1e-9, "z0.real, (2x - 5)^2 = 0"); + gsl_test_rel (GSL_IMAG (z0), 0.0, 1e-9, "z0.imag (2x - 5)^2 = 0"); + gsl_test_rel (GSL_REAL (z1), 2.5, 1e-9, "z1.real, (2x - 5)^2 = 0"); + gsl_test_rel (GSL_IMAG (z1), 0.0, 1e-9, "z1.imag (2x - 5)^2 = 0"); + gsl_test (GSL_REAL (z0) != GSL_REAL (z1), + "z0.real == z1.real, (2x - 5)^2 = 0"); + gsl_test (GSL_IMAG (z0) != GSL_IMAG (z1), + "z0.imag == z1.imag, (2x - 5)^2 = 0"); + } + + { + gsl_complex z0, z1; + + int n = gsl_poly_complex_solve_quadratic (4.0, -20.0, 21.0, &z0, &z1); + + gsl_test (n != 2, + "gsl_poly_complex_solve_quadratic, two roots, (2x - 5)^2 = 4"); + gsl_test_rel (GSL_REAL (z0), 1.5, 1e-9, "z0.real, (2x - 5)^2 = 4"); + gsl_test_rel (GSL_IMAG (z0), 0.0, 1e-9, "z0.imag, (2x - 5)^2 = 4"); + gsl_test_rel (GSL_REAL (z1), 3.5, 1e-9, "z1.real, (2x - 5)^2 = 4"); + gsl_test_rel (GSL_IMAG (z1), 0.0, 1e-9, "z1.imag, (2x - 5)^2 = 4"); + } + + { + gsl_complex z0, z1; + + int n = gsl_poly_complex_solve_quadratic (4.0, 7.0, 0.0, &z0, &z1); + + gsl_test (n != 2, + "gsl_poly_complex_solve_quadratic, two roots, x(4x + 7) = 0"); + gsl_test_rel (GSL_REAL (z0), -1.75, 1e-9, "z0.real, x(4x + 7) = 0"); + gsl_test_rel (GSL_IMAG (z0), 0.0, 1e-9, "z0.imag, x(4x + 7) = 0"); + gsl_test_rel (GSL_REAL (z1), 0.0, 1e-9, "z1.real, x(4x + 7) = 0"); + gsl_test_rel (GSL_IMAG (z1), 0.0, 1e-9, "z1.imag, x(4x + 7) = 0"); + } + + { + gsl_complex z0, z1; + + int n = gsl_poly_complex_solve_quadratic (5.0, 0.0, -20.0, &z0, &z1); + + gsl_test (n != 2, + "gsl_poly_complex_solve_quadratic, two roots b = 0, 5 x^2 = 20"); + gsl_test_rel (GSL_REAL (z0), -2.0, 1e-9, "z0.real, 5 x^2 = 20"); + gsl_test_rel (GSL_IMAG (z0), 0.0, 1e-9, "z0.imag, 5 x^2 = 20"); + gsl_test_rel (GSL_REAL (z1), 2.0, 1e-9, "z1.real, 5 x^2 = 20"); + gsl_test_rel (GSL_IMAG (z1), 0.0, 1e-9, "z1.imag, 5 x^2 = 20"); + } + + { + gsl_complex z0, z1; + + int n = gsl_poly_complex_solve_quadratic (5.0, 0.0, 20.0, &z0, &z1); + + gsl_test (n != 2, + "gsl_poly_complex_solve_quadratic, two roots b = 0, 5 x^2 = -20"); + gsl_test_rel (GSL_REAL (z0), 0.0, 1e-9, "z0.real, 5 x^2 = -20"); + gsl_test_rel (GSL_IMAG (z0), -2.0, 1e-9, "z0.imag, 5 x^2 = -20"); + gsl_test_rel (GSL_REAL (z1), 0.0, 1e-9, "z1.real, 5 x^2 = -20"); + gsl_test_rel (GSL_IMAG (z1), 2.0, 1e-9, "z1.imag, 5 x^2 = -20"); + } + + + { + gsl_complex z0, z1; + + int n = gsl_poly_complex_solve_quadratic (0.0, 3.0, -21.0, &z0, &z1); + + gsl_test (n != 1, + "gsl_poly_complex_solve_quadratic, one root (linear) 3 x - 21 = 0"); + + gsl_test_rel (GSL_REAL (z0), 7.0, 1e-9, "z0.real, 3x - 21 = 0"); + gsl_test_rel (GSL_IMAG (z0), 0.0, 1e-9, "z0.imag, 3x - 21 = 0"); + } + + + { + gsl_complex z0, z1; + + int n = gsl_poly_complex_solve_quadratic (0.0, 0.0, 1.0, &z0, &z1); + gsl_test (n != 0, + "gsl_poly_complex_solve_quadratic, no roots 1 = 0"); + } + + + + /* Cubic with complex roots */ + + { + gsl_complex z0, z1, z2; + + int n = gsl_poly_complex_solve_cubic (0.0, 0.0, -27.0, &z0, &z1, &z2); + + gsl_test (n != 3, "gsl_poly_complex_solve_cubic, three root, x^3 = 27"); + gsl_test_rel (GSL_REAL (z0), -1.5, 1e-9, "z0.real, x^3 = 27"); + gsl_test_rel (GSL_IMAG (z0), -1.5 * sqrt (3.0), 1e-9, + "z0.imag, x^3 = 27"); + gsl_test_rel (GSL_REAL (z1), -1.5, 1e-9, "z1.real, x^3 = 27"); + gsl_test_rel (GSL_IMAG (z1), 1.5 * sqrt (3.0), 1e-9, "z1.imag, x^3 = 27"); + gsl_test_rel (GSL_REAL (z2), 3.0, 1e-9, "z2.real, x^3 = 27"); + gsl_test_rel (GSL_IMAG (z2), 0.0, 1e-9, "z2.imag, x^3 = 27"); + } + + { + gsl_complex z0, z1, z2; + + int n = gsl_poly_complex_solve_cubic (-1.0, 1.0, 39.0, &z0, &z1, &z2); + + gsl_test (n != 3, + "gsl_poly_complex_solve_cubic, three root, (x+3)(x^2-4x+13) = 0"); + gsl_test_rel (GSL_REAL (z0), -3.0, 1e-9, "z0.real, (x+3)(x^2+1) = 0"); + gsl_test_rel (GSL_IMAG (z0), 0.0, 1e-9, "z0.imag, (x+3)(x^2+1) = 0"); + gsl_test_rel (GSL_REAL (z1), 2.0, 1e-9, "z1.real, (x+3)(x^2+1) = 0"); + gsl_test_rel (GSL_IMAG (z1), -3.0, 1e-9, "z1.imag, (x+3)(x^2+1) = 0"); + gsl_test_rel (GSL_REAL (z2), 2.0, 1e-9, "z2.real, (x+3)(x^2+1) = 0"); + gsl_test_rel (GSL_IMAG (z2), 3.0, 1e-9, "z2.imag, (x+3)(x^2+1) = 0"); + } + + { + gsl_complex z0, z1, z2; + + int n = + gsl_poly_complex_solve_cubic (-51.0, 867.0, -4913.0, &z0, &z1, &z2); + + gsl_test (n != 3, + "gsl_poly_complex_solve_cubic, three roots, (x-17)^3=0"); + gsl_test_rel (GSL_REAL (z0), 17.0, 1e-9, "z0.real, (x-17)^3=0"); + gsl_test_rel (GSL_IMAG (z0), 0.0, 1e-9, "z0.imag, (x-17)^3=0"); + gsl_test_rel (GSL_REAL (z1), 17.0, 1e-9, "z1.real, (x-17)^3=0"); + gsl_test_rel (GSL_IMAG (z1), 0.0, 1e-9, "z1.imag, (x-17)^3=0"); + gsl_test_rel (GSL_REAL (z2), 17.0, 1e-9, "z2.real, (x-17)^3=0"); + gsl_test_rel (GSL_IMAG (z2), 0.0, 1e-9, "z2.imag, (x-17)^3=0"); + } + + { + gsl_complex z0, z1, z2; + + int n = + gsl_poly_complex_solve_cubic (-57.0, 1071.0, -6647.0, &z0, &z1, &z2); + + gsl_test (n != 3, + "gsl_poly_complex_solve_cubic, three roots, (x-17)(x-17)(x-23)=0"); + gsl_test_rel (GSL_REAL (z0), 17.0, 1e-9, "z0.real, (x-17)(x-17)(x-23)=0"); + gsl_test_rel (GSL_IMAG (z0), 0.0, 1e-9, "z0.imag, (x-17)(x-17)(x-23)=0"); + gsl_test_rel (GSL_REAL (z1), 17.0, 1e-9, "z1.real, (x-17)(x-17)(x-23)=0"); + gsl_test_rel (GSL_IMAG (z1), 0.0, 1e-9, "z1.imag, (x-17)(x-17)(x-23)=0"); + gsl_test_rel (GSL_REAL (z2), 23.0, 1e-9, "z2.real, (x-17)(x-17)(x-23)=0"); + gsl_test_rel (GSL_IMAG (z2), 0.0, 1e-9, "z2.imag, (x-17)(x-17)(x-23)=0"); + } + + { + gsl_complex z0, z1, z2; + + int n = + gsl_poly_complex_solve_cubic (-11.0, -493.0, +6647.0, &z0, &z1, &z2); + + gsl_test (n != 3, + "gsl_poly_complex_solve_cubic, three roots, (x+23)(x-17)(x-17)=0"); + gsl_test_rel (GSL_REAL (z0), -23.0, 1e-9, + "z0.real, (x+23)(x-17)(x-17)=0"); + gsl_test_rel (GSL_IMAG (z0), 0.0, 1e-9, "z0.imag, (x+23)(x-17)(x-17)=0"); + gsl_test_rel (GSL_REAL (z1), 17.0, 1e-9, "z1.real, (x+23)(x-17)(x-17)=0"); + gsl_test_rel (GSL_IMAG (z1), 0.0, 1e-9, "z1.imag, (x+23)(x-17)(x-17)=0"); + gsl_test_rel (GSL_REAL (z2), 17.0, 1e-9, "z2.real, (x+23)(x-17)(x-17)=0"); + gsl_test_rel (GSL_IMAG (z2), 0.0, 1e-9, "z2.imag, (x+23)(x-17)(x-17)=0"); + } + + + { + gsl_complex z0, z1, z2; + + int n = + gsl_poly_complex_solve_cubic (-143.0, 5087.0, -50065.0, &z0, &z1, &z2); + + gsl_test (n != 3, + "gsl_poly_complex_solve_cubic, three roots, (x-17)(x-31)(x-95)=0"); + gsl_test_rel (GSL_REAL (z0), 17.0, 1e-9, "z0.real, (x-17)(x-31)(x-95)=0"); + gsl_test_rel (GSL_IMAG (z0), 0.0, 1e-9, "z0.imag, (x-17)(x-31)(x-95)=0"); + gsl_test_rel (GSL_REAL (z1), 31.0, 1e-9, "z1.real, (x-17)(x-31)(x-95)=0"); + gsl_test_rel (GSL_IMAG (z1), 0.0, 1e-9, "z1.imag, (x-17)(x-31)(x-95)=0"); + gsl_test_rel (GSL_REAL (z2), 95.0, 1e-9, "z2.real, (x-17)(x-31)(x-95)=0"); + gsl_test_rel (GSL_IMAG (z2), 0.0, 1e-9, "z2.imag, (x-17)(x-31)(x-95)=0"); + } + + + { + /* Wilkinson polynomial: y = (x-1)(x-2)(x-3)(x-4)(x-5) */ + + double a[6] = { -120, 274, -225, 85, -15, 1 }; + double z[6*2]; + + gsl_poly_complex_workspace *w = gsl_poly_complex_workspace_alloc (6); + + int status = gsl_poly_complex_solve (a, 6, w, z); + + gsl_poly_complex_workspace_free (w); + + gsl_test (status, + "gsl_poly_complex_solve, 5th-order Wilkinson polynomial"); + gsl_test_rel (z[0], 1.0, 1e-9, "z0.real, 5th-order polynomial"); + gsl_test_rel (z[1], 0.0, 1e-9, "z0.imag, 5th-order polynomial"); + gsl_test_rel (z[2], 2.0, 1e-9, "z1.real, 5th-order polynomial"); + gsl_test_rel (z[3], 0.0, 1e-9, "z1.imag, 5th-order polynomial"); + gsl_test_rel (z[4], 3.0, 1e-9, "z2.real, 5th-order polynomial"); + gsl_test_rel (z[5], 0.0, 1e-9, "z2.imag, 5th-order polynomial"); + gsl_test_rel (z[6], 4.0, 1e-9, "z3.real, 5th-order polynomial"); + gsl_test_rel (z[7], 0.0, 1e-9, "z3.imag, 5th-order polynomial"); + gsl_test_rel (z[8], 5.0, 1e-9, "z4.real, 5th-order polynomial"); + gsl_test_rel (z[9], 0.0, 1e-9, "z4.imag, 5th-order polynomial"); + } + + { + /* : 8-th order polynomial y = x^8 + x^4 + 1 */ + + double a[9] = { 1, 0, 0, 0, 1, 0, 0, 0, 1 }; + double z[8*2]; + + double C = 0.5; + double S = sqrt (3.0) / 2.0; + + gsl_poly_complex_workspace *w = gsl_poly_complex_workspace_alloc (9); + + int status = gsl_poly_complex_solve (a, 9, w, z); + + gsl_poly_complex_workspace_free (w); + + gsl_test (status, "gsl_poly_complex_solve, 8th-order polynomial"); + + gsl_test_rel (z[0], -S, 1e-9, "z0.real, 8th-order polynomial"); + gsl_test_rel (z[1], C, 1e-9, "z0.imag, 8th-order polynomial"); + gsl_test_rel (z[2], -S, 1e-9, "z1.real, 8th-order polynomial"); + gsl_test_rel (z[3], -C, 1e-9, "z1.imag, 8th-order polynomial"); + gsl_test_rel (z[4], -C, 1e-9, "z2.real, 8th-order polynomial"); + gsl_test_rel (z[5], S, 1e-9, "z2.imag, 8th-order polynomial"); + gsl_test_rel (z[6], -C, 1e-9, "z3.real, 8th-order polynomial"); + gsl_test_rel (z[7], -S, 1e-9, "z3.imag, 8th-order polynomial"); + gsl_test_rel (z[8], C, 1e-9, "z4.real, 8th-order polynomial"); + gsl_test_rel (z[9], S, 1e-9, "z4.imag, 8th-order polynomial"); + gsl_test_rel (z[10], C, 1e-9, "z5.real, 8th-order polynomial"); + gsl_test_rel (z[11], -S, 1e-9, "z5.imag, 8th-order polynomial"); + gsl_test_rel (z[12], S, 1e-9, "z6.real, 8th-order polynomial"); + gsl_test_rel (z[13], C, 1e-9, "z6.imag, 8th-order polynomial"); + gsl_test_rel (z[14], S, 1e-9, "z7.real, 8th-order polynomial"); + gsl_test_rel (z[15], -C, 1e-9, "z7.imag, 8th-order polynomial"); + + } + + { + /* 15-th order polynomial y = (x + 1) * (x^10 + x^9 + 2 * x^7 + 4 * x^2 + + 4 * x + 8) * (x - 1)^2 * (x - 2)^2 + + Problem reported by Munagala Ramanath (bug #39055) + */ + + double a[16] = { 32, -48, -8, 28, -8, 16, -16, 12, + -16, 6, 10, -17, 10, 2, -4, 1 }; + double z[16*2]; + + double expected[16*2] = { + -1.6078107423472359, 0.00000000000000000, + -1.3066982484920768, 0.00000000000000000, + -1.0000000000000000, 0.00000000000000000, + -0.65893856175240950, -0.83459757287426684, + -0.65893856175240950, 0.83459757287426684, + -0.070891117403341281, -1.1359249087587791, + -0.070891117403341281, 1.1359249087587791, + 0.57284747839410854, -1.1987808988289705, + 0.57284747839410854, 1.1987808988289705, + 1.0000000000000000, 0.00000000000000000, + 1.0000000000000000, 0.00000000000000000, + 1.1142366961812986, -0.48083981203389980, + 1.1142366961812986, 0.48083981203389980, + 2.0000000000000000, 0.00000000000000000, + 2.0000000000000000, 0.00000000000000000 }; + + int i; + + gsl_poly_complex_workspace *w = gsl_poly_complex_workspace_alloc (16); + + int status = gsl_poly_complex_solve (a, 16, w, z); + + gsl_poly_complex_workspace_free (w); + + gsl_test (status, "gsl_poly_complex_solve, 15th-order polynomial"); + + gsl_heapsort(z, 15, 2 * sizeof(double), (gsl_comparison_fn_t) &cmp_cplx); + + for (i = 0; i<15; i++) + { + gsl_test_rel (z[2*i], expected[2*i], 1e-7, "z%d.real, 15th-order polynomial", i); + gsl_test_rel (z[2*i+1], expected[2*i+1], 1e-7, "z%d.imag, 15th-order polynomial", i); + } + } + + + { + int i; + + double xa[7] = {0.16, 0.97, 1.94, 2.74, 3.58, 3.73, 4.70 }; + double ya[7] = {0.73, 1.11, 1.49, 1.84, 2.30, 2.41, 3.07 }; + + double dd_expected[7] = { 7.30000000000000e-01, + 4.69135802469136e-01, + -4.34737219941284e-02, + 2.68681098870099e-02, + -3.22937056934996e-03, + 6.12763259971375e-03, + -6.45402453527083e-03 }; + + double dd[7], coeff[7], work[7]; + + gsl_poly_dd_init (dd, xa, ya, 7); + + for (i = 0; i < 7; i++) + { + gsl_test_rel (dd[i], dd_expected[i], 1e-10, "divided difference dd[%d]", i); + } + + for (i = 0; i < 7; i++) + { + double y = gsl_poly_dd_eval(dd, xa, 7, xa[i]); + gsl_test_rel (y, ya[i], 1e-10, "divided difference y[%d]", i); + } + + gsl_poly_dd_taylor (coeff, 1.5, dd, xa, 7, work); + + for (i = 0; i < 7; i++) + { + double y = gsl_poly_eval(coeff, 7, xa[i] - 1.5); + gsl_test_rel (y, ya[i], 1e-10, "taylor expansion about 1.5 y[%d]", i); + } + } + + { + size_t i; + double xa[3] = { 1.3, 1.6, 1.9 }; + double ya[3] = { 0.6200860, 0.4554022, 0.2818186 }; + double dya[3] = { -0.5220232, -0.5698959, -0.5811571 }; + + double dd_expected[6] = { 6.200860000000e-01, + -5.220232000000e-01, + -8.974266666667e-02, + 6.636555555556e-02, + 2.666666666662e-03, + -2.774691357989e-03 }; + + double dd[6], za[6], coeff[6], work[6]; + + gsl_poly_dd_hermite_init(dd, za, xa, ya, dya, 3); + + for (i = 0; i < 6; i++) + { + gsl_test_rel (dd[i], dd_expected[i], 1e-10, "hermite divided difference dd[%d]", i); + } + + for (i = 0; i < 3; i++) + { + double y = gsl_poly_dd_eval(dd, za, 6, xa[i]); + gsl_test_rel (y, ya[i], 1e-10, "hermite divided difference y[%d]", i); + } + + for (i = 0; i < 3; i++) + { + gsl_poly_dd_taylor(coeff, xa[i], dd, za, 6, work); + gsl_test_rel (coeff[1], dya[i], 1e-10, "hermite divided difference dy/dx[%d]", i); + } + } + + { + double c[6] = { +1.0, -2.0, +3.0, -4.0, +5.0, -6.0 }; + double dc[6]; + double x; + x = -0.5; + gsl_poly_eval_derivs(c, 6, x, dc, 6); + + gsl_test_rel (dc[0], c[0] + c[1]*x + c[2]*x*x + c[3]*x*x*x + c[4]*x*x*x*x + c[5]*x*x*x*x*x , eps, "gsl_poly_eval_derivs({+1, -2, +3, -4, +5, -6}, 3.75)"); + gsl_test_rel (dc[1], c[1] + 2.0*c[2]*x + 3.0*c[3]*x*x + 4.0*c[4]*x*x*x + 5.0*c[5]*x*x*x*x , eps, "gsl_poly_eval_derivs({+1, -2, +3, -4, +5, -6} deriv 1, -12.375)"); + gsl_test_rel (dc[2], 2.0*c[2] + 3.0*2.0*c[3]*x + 4.0*3.0*c[4]*x*x + 5.0*4.0*c[5]*x*x*x , eps, "gsl_poly_eval_derivs({+1, -2, +3, -4, +5, -6} deriv 2, +48.0)"); + gsl_test_rel (dc[3], 3.0*2.0*c[3] + 4.0*3.0*2.0*c[4]*x + 5.0*4.0*3.0*c[5]*x*x , eps,"gsl_poly_eval_derivs({+1, -2, +3, -4, +5, -6} deriv 3, -174.0)"); + gsl_test_rel (dc[4], 4.0*3.0*2.0*c[4] + 5.0*4.0*3.0*2.0*c[5]*x, eps, "gsl_poly_eval_derivs({+1, -2, +3, -4, +5, -6} deriv 4, +480.0)"); + gsl_test_rel (dc[5], 5.0*4.0*3.0*2.0*c[5] , eps, "gsl_poly_eval_derivs({+1, -2, +3, -4, +5, -6} deriv 5, -720.0)"); + } + + + /* now summarize the results */ + + exit (gsl_test_summary ()); +} diff --git a/gsl-2.5/poly/test.log b/gsl-2.5/poly/test.log new file mode 100644 index 00000000..d8735d17 --- /dev/null +++ b/gsl-2.5/poly/test.log @@ -0,0 +1 @@ +Completed [225/225] diff --git a/gsl-2.5/poly/test.trs b/gsl-2.5/poly/test.trs new file mode 100644 index 00000000..3f0f396c --- /dev/null +++ b/gsl-2.5/poly/test.trs @@ -0,0 +1,4 @@ +:test-result: PASS +:global-test-result: PASS +:recheck: no +:copy-in-global-log: no diff --git a/gsl-2.5/poly/zsolve.c b/gsl-2.5/poly/zsolve.c new file mode 100644 index 00000000..aac231cc --- /dev/null +++ b/gsl-2.5/poly/zsolve.c @@ -0,0 +1,85 @@ +/* poly/zsolve.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* zsolve.c - finds the complex roots of = 0 */ + +#include +#include +#include +#include +#include +#include +#include + +/* C-style matrix elements */ +#define MAT(m,i,j,n) ((m)[(i)*(n) + (j)]) + +/* Fortran-style matrix elements */ +#define FMAT(m,i,j,n) ((m)[((i)-1)*(n) + ((j)-1)]) + +#include "companion.c" +#include "balance.c" +#include "qr.c" + +int +gsl_poly_complex_solve (const double *a, size_t n, + gsl_poly_complex_workspace * w, + gsl_complex_packed_ptr z) +{ + int status; + double *m; + + if (n == 0) + { + GSL_ERROR ("number of terms must be a positive integer", GSL_EINVAL); + } + + if (n == 1) + { + GSL_ERROR ("cannot solve for only one term", GSL_EINVAL); + } + + if (a[n - 1] == 0) + { + GSL_ERROR ("leading term of polynomial must be non-zero", GSL_EINVAL) ; + } + + if (w->nc != n - 1) + { + GSL_ERROR ("size of workspace does not match polynomial", GSL_EINVAL); + } + + m = w->matrix; + + set_companion_matrix (a, n - 1, m); + + balance_companion_matrix (m, n - 1); + + status = qr_companion (m, n - 1, z); + + if (status) + { + GSL_ERROR("root solving qr method failed to converge", GSL_EFAILED); + } + + return GSL_SUCCESS; +} + + + diff --git a/gsl-2.5/poly/zsolve.lo b/gsl-2.5/poly/zsolve.lo new file mode 100644 index 00000000..5a78fecf --- /dev/null +++ b/gsl-2.5/poly/zsolve.lo @@ -0,0 +1,12 @@ +# zsolve.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/zsolve.o' + +# Name of the non-PIC object +non_pic_object='zsolve.o' + diff --git a/gsl-2.5/poly/zsolve_cubic.c b/gsl-2.5/poly/zsolve_cubic.c new file mode 100644 index 00000000..226c1a26 --- /dev/null +++ b/gsl-2.5/poly/zsolve_cubic.c @@ -0,0 +1,153 @@ +/* poly/zsolve_cubic.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007, 2009 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* zsolve_cubic.c - finds the complex roots of x^3 + a x^2 + b x + c = 0 */ + +#include +#include +#include +#include +#include + +#define SWAP(a,b) do { double tmp = b ; b = a ; a = tmp ; } while(0) + +int +gsl_poly_complex_solve_cubic (double a, double b, double c, + gsl_complex *z0, gsl_complex *z1, + gsl_complex *z2) +{ + double q = (a * a - 3 * b); + double r = (2 * a * a * a - 9 * a * b + 27 * c); + + double Q = q / 9; + double R = r / 54; + + double Q3 = Q * Q * Q; + double R2 = R * R; + + double CR2 = 729 * r * r; + double CQ3 = 2916 * q * q * q; + + if (R == 0 && Q == 0) + { + GSL_REAL (*z0) = -a / 3; + GSL_IMAG (*z0) = 0; + GSL_REAL (*z1) = -a / 3; + GSL_IMAG (*z1) = 0; + GSL_REAL (*z2) = -a / 3; + GSL_IMAG (*z2) = 0; + return 3; + } + else if (CR2 == CQ3) + { + /* this test is actually R2 == Q3, written in a form suitable + for exact computation with integers */ + + /* Due to finite precision some double roots may be missed, and + will be considered to be a pair of complex roots z = x +/- + epsilon i close to the real axis. */ + + double sqrtQ = sqrt (Q); + + if (R > 0) + { + GSL_REAL (*z0) = -2 * sqrtQ - a / 3; + GSL_IMAG (*z0) = 0; + GSL_REAL (*z1) = sqrtQ - a / 3; + GSL_IMAG (*z1) = 0; + GSL_REAL (*z2) = sqrtQ - a / 3; + GSL_IMAG (*z2) = 0; + } + else + { + GSL_REAL (*z0) = -sqrtQ - a / 3; + GSL_IMAG (*z0) = 0; + GSL_REAL (*z1) = -sqrtQ - a / 3; + GSL_IMAG (*z1) = 0; + GSL_REAL (*z2) = 2 * sqrtQ - a / 3; + GSL_IMAG (*z2) = 0; + } + return 3; + } + else if (R2 < Q3) + { + double sgnR = (R >= 0 ? 1 : -1); + double ratio = sgnR * sqrt (R2 / Q3); + double theta = acos (ratio); + double norm = -2 * sqrt (Q); + double r0 = norm * cos (theta / 3) - a / 3; + double r1 = norm * cos ((theta + 2.0 * M_PI) / 3) - a / 3; + double r2 = norm * cos ((theta - 2.0 * M_PI) / 3) - a / 3; + + /* Sort r0, r1, r2 into increasing order */ + + if (r0 > r1) + SWAP (r0, r1); + + if (r1 > r2) + { + SWAP (r1, r2); + + if (r0 > r1) + SWAP (r0, r1); + } + + GSL_REAL (*z0) = r0; + GSL_IMAG (*z0) = 0; + + GSL_REAL (*z1) = r1; + GSL_IMAG (*z1) = 0; + + GSL_REAL (*z2) = r2; + GSL_IMAG (*z2) = 0; + + return 3; + } + else + { + double sgnR = (R >= 0 ? 1 : -1); + double A = -sgnR * pow (fabs (R) + sqrt (R2 - Q3), 1.0 / 3.0); + double B = Q / A; + + if (A + B < 0) + { + GSL_REAL (*z0) = A + B - a / 3; + GSL_IMAG (*z0) = 0; + + GSL_REAL (*z1) = -0.5 * (A + B) - a / 3; + GSL_IMAG (*z1) = -(sqrt (3.0) / 2.0) * fabs(A - B); + + GSL_REAL (*z2) = -0.5 * (A + B) - a / 3; + GSL_IMAG (*z2) = (sqrt (3.0) / 2.0) * fabs(A - B); + } + else + { + GSL_REAL (*z0) = -0.5 * (A + B) - a / 3; + GSL_IMAG (*z0) = -(sqrt (3.0) / 2.0) * fabs(A - B); + + GSL_REAL (*z1) = -0.5 * (A + B) - a / 3; + GSL_IMAG (*z1) = (sqrt (3.0) / 2.0) * fabs(A - B); + + GSL_REAL (*z2) = A + B - a / 3; + GSL_IMAG (*z2) = 0; + } + + return 3; + } +} diff --git a/gsl-2.5/poly/zsolve_cubic.lo b/gsl-2.5/poly/zsolve_cubic.lo new file mode 100644 index 00000000..ea2307b6 --- /dev/null +++ b/gsl-2.5/poly/zsolve_cubic.lo @@ -0,0 +1,12 @@ +# zsolve_cubic.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/zsolve_cubic.o' + +# Name of the non-PIC object +non_pic_object='zsolve_cubic.o' + diff --git a/gsl-2.5/poly/zsolve_init.c b/gsl-2.5/poly/zsolve_init.c new file mode 100644 index 00000000..2409c079 --- /dev/null +++ b/gsl-2.5/poly/zsolve_init.c @@ -0,0 +1,70 @@ +/* poly/zsolve_init.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include + +gsl_poly_complex_workspace * +gsl_poly_complex_workspace_alloc (size_t n) +{ + size_t nc ; + + gsl_poly_complex_workspace * w ; + + if (n == 0) + { + GSL_ERROR_VAL ("matrix size n must be positive integer", GSL_EDOM, 0); + } + + w = (gsl_poly_complex_workspace *) + malloc (sizeof(gsl_poly_complex_workspace)); + + if (w == 0) + { + GSL_ERROR_VAL ("failed to allocate space for struct", GSL_ENOMEM, 0); + } + + nc = n - 1; + + w->nc = nc; + + w->matrix = (double *) malloc (nc * nc * sizeof(double)); + + if (w->matrix == 0) + { + free (w) ; /* error in constructor, avoid memory leak */ + + GSL_ERROR_VAL ("failed to allocate space for workspace matrix", + GSL_ENOMEM, 0); + } + + return w ; +} + +void +gsl_poly_complex_workspace_free (gsl_poly_complex_workspace * w) +{ + RETURN_IF_NULL (w); + free(w->matrix) ; + free(w); +} diff --git a/gsl-2.5/poly/zsolve_init.lo b/gsl-2.5/poly/zsolve_init.lo new file mode 100644 index 00000000..241c3b77 --- /dev/null +++ b/gsl-2.5/poly/zsolve_init.lo @@ -0,0 +1,12 @@ +# zsolve_init.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/zsolve_init.o' + +# Name of the non-PIC object +non_pic_object='zsolve_init.o' + diff --git a/gsl-2.5/poly/zsolve_quadratic.c b/gsl-2.5/poly/zsolve_quadratic.c new file mode 100644 index 00000000..886134f7 --- /dev/null +++ b/gsl-2.5/poly/zsolve_quadratic.c @@ -0,0 +1,103 @@ +/* poly/zsolve_quadratic.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* complex_solve_quadratic.c - finds complex roots of a x^2 + b x + c = 0 */ + +#include +#include +#include +#include + +int +gsl_poly_complex_solve_quadratic (double a, double b, double c, + gsl_complex *z0, gsl_complex *z1) +{ + double disc = b * b - 4 * a * c; + + if (a == 0) /* Handle linear case */ + { + if (b == 0) + { + return 0; + } + else + { + GSL_REAL(*z0) = -c / b; + GSL_IMAG(*z0) = 0; + return 1; + }; + } + + if (disc > 0) + { + if (b == 0) + { + double s = fabs (0.5 * sqrt (disc) / a); + GSL_REAL (*z0) = -s; + GSL_IMAG (*z0) = 0; + GSL_REAL (*z1) = s; + GSL_IMAG (*z1) = 0; + } + else + { + double sgnb = (b > 0 ? 1 : -1); + double temp = -0.5 * (b + sgnb * sqrt (disc)); + double r1 = temp / a; + double r2 = c / temp; + + if (r1 < r2) + { + GSL_REAL (*z0) = r1; + GSL_IMAG (*z0) = 0; + GSL_REAL (*z1) = r2; + GSL_IMAG (*z1) = 0; + } + else + { + GSL_REAL (*z0) = r2; + GSL_IMAG (*z0) = 0; + GSL_REAL (*z1) = r1; + GSL_IMAG (*z1) = 0; + } + } + return 2; + } + else if (disc == 0) + { + GSL_REAL (*z0) = -0.5 * b / a; + GSL_IMAG (*z0) = 0; + + GSL_REAL (*z1) = -0.5 * b / a; + GSL_IMAG (*z1) = 0; + + return 2; + } + else + { + double s = fabs (0.5 * sqrt (-disc) / a); + + GSL_REAL (*z0) = -0.5 * b / a; + GSL_IMAG (*z0) = -s; + + GSL_REAL (*z1) = -0.5 * b / a; + GSL_IMAG (*z1) = s; + + return 2; + } +} diff --git a/gsl-2.5/poly/zsolve_quadratic.lo b/gsl-2.5/poly/zsolve_quadratic.lo new file mode 100644 index 00000000..3e7bfe7a --- /dev/null +++ b/gsl-2.5/poly/zsolve_quadratic.lo @@ -0,0 +1,12 @@ +# zsolve_quadratic.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/zsolve_quadratic.o' + +# Name of the non-PIC object +non_pic_object='zsolve_quadratic.o' + diff --git a/gsl-2.5/qrng/.deps/halton.Plo b/gsl-2.5/qrng/.deps/halton.Plo new file mode 100644 index 00000000..ee14e9fa --- /dev/null +++ b/gsl-2.5/qrng/.deps/halton.Plo @@ -0,0 +1,112 @@ +halton.lo: halton.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_qrng.h /usr/include/stdlib.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_types.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_inline.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_qrng.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_types.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_inline.h: diff --git a/gsl-2.5/qrng/.deps/inline.Plo b/gsl-2.5/qrng/.deps/inline.Plo new file mode 100644 index 00000000..ba4b3af1 --- /dev/null +++ b/gsl-2.5/qrng/.deps/inline.Plo @@ -0,0 +1,123 @@ +inline.lo: inline.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/string.h \ + /usr/include/xlocale.h /usr/include/bits/string.h \ + /usr/include/bits/string2.h ../gsl/gsl_errno.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_types.h ../build.h ../gsl/gsl_qrng.h ../gsl/gsl_inline.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string.h: + +/usr/include/bits/string2.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../build.h: + +../gsl/gsl_qrng.h: + +../gsl/gsl_inline.h: diff --git a/gsl-2.5/qrng/.deps/niederreiter-2.Plo b/gsl-2.5/qrng/.deps/niederreiter-2.Plo new file mode 100644 index 00000000..fc6d36a0 --- /dev/null +++ b/gsl-2.5/qrng/.deps/niederreiter-2.Plo @@ -0,0 +1,113 @@ +niederreiter-2.lo: niederreiter-2.c /usr/include/stdc-predef.h \ + ../config.h ../gsl/gsl_qrng.h /usr/include/stdlib.h \ + /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_types.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_inline.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_qrng.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_types.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_inline.h: diff --git a/gsl-2.5/qrng/.deps/qrng.Plo b/gsl-2.5/qrng/.deps/qrng.Plo new file mode 100644 index 00000000..b6fecaa2 --- /dev/null +++ b/gsl-2.5/qrng/.deps/qrng.Plo @@ -0,0 +1,121 @@ +qrng.lo: qrng.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/string.h \ + /usr/include/xlocale.h /usr/include/bits/string.h \ + /usr/include/bits/string2.h ../gsl/gsl_errno.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_types.h ../gsl/gsl_qrng.h ../gsl/gsl_inline.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string.h: + +/usr/include/bits/string2.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_qrng.h: + +../gsl/gsl_inline.h: diff --git a/gsl-2.5/qrng/.deps/reversehalton.Plo b/gsl-2.5/qrng/.deps/reversehalton.Plo new file mode 100644 index 00000000..091c0676 --- /dev/null +++ b/gsl-2.5/qrng/.deps/reversehalton.Plo @@ -0,0 +1,112 @@ +reversehalton.lo: reversehalton.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_qrng.h /usr/include/stdlib.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_types.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_inline.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_qrng.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_types.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_inline.h: diff --git a/gsl-2.5/qrng/.deps/sobol.Plo b/gsl-2.5/qrng/.deps/sobol.Plo new file mode 100644 index 00000000..dac7da27 --- /dev/null +++ b/gsl-2.5/qrng/.deps/sobol.Plo @@ -0,0 +1,112 @@ +sobol.lo: sobol.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_qrng.h /usr/include/stdlib.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_types.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_inline.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_qrng.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_types.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_inline.h: diff --git a/gsl-2.5/qrng/.deps/test.Po b/gsl-2.5/qrng/.deps/test.Po new file mode 100644 index 00000000..b0f4af1a --- /dev/null +++ b/gsl-2.5/qrng/.deps/test.Po @@ -0,0 +1,139 @@ +test.o: test.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_ieee_utils.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../gsl/gsl_qrng.h ../gsl/gsl_types.h \ + ../gsl/gsl_errno.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_inline.h ../gsl/gsl_test.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_ieee_utils.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../gsl/gsl_qrng.h: + +../gsl/gsl_types.h: + +../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_test.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: diff --git a/gsl-2.5/qrng/.libs/libgslqrng.la b/gsl-2.5/qrng/.libs/libgslqrng.la new file mode 120000 index 00000000..3996c840 --- /dev/null +++ b/gsl-2.5/qrng/.libs/libgslqrng.la @@ -0,0 +1 @@ +../libgslqrng.la \ No newline at end of file diff --git a/gsl-2.5/qrng/ChangeLog b/gsl-2.5/qrng/ChangeLog new file mode 100644 index 00000000..4d7b82a9 --- /dev/null +++ b/gsl-2.5/qrng/ChangeLog @@ -0,0 +1,43 @@ +2009-07-09 Brian Gough + + * qrng.c (gsl_qrng_free): handle NULL argument in free + +2008-07-03 Brian Gough + + * qrng.c: moved gsl_qrng_get to inline.c + + * gsl_qrng.h (gsl_qrng_get): new inline declaration + + * inline.c: handle inline functions separately + + * Makefile.am (INCLUDES): use top_srcdir instead of top_builddir + +2008-03-17 Brian Gough + + * reversehalton.c (reversehalton_init): removed unused variable i + + * halton.c (halton_init): removed unused variable i + +2006-04-21 Brian Gough + + * qrng.c gsl_qrng.h: use q instead of r in all prototypes + +2004-05-26 Brian Gough + + * test.c: added for exit() + +2002-11-16 Brian Gough + + * niederreiter-2.c (calculate_cj): clear uninitialized memory + +Mon Apr 22 19:20:05 2002 Brian Gough + + * test.c: output results for each individual test + + * qrng.c (gsl_qrng_init): added missing init function + +Mon Oct 23 19:59:46 2000 Brian Gough + + * qrng.c (gsl_qrng_get): use an array type for the array + arguments, rather than a pointer + diff --git a/gsl-2.5/qrng/Makefile b/gsl-2.5/qrng/Makefile new file mode 100644 index 00000000..b87911e4 --- /dev/null +++ b/gsl-2.5/qrng/Makefile @@ -0,0 +1,1030 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# qrng/Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + + + + +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/gsl +pkgincludedir = $(includedir)/gsl +pkglibdir = $(libdir)/gsl +pkglibexecdir = $(libexecdir)/gsl +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = x86_64-unknown-linux-gnu +host_triplet = x86_64-unknown-linux-gnu +check_PROGRAMS = test$(EXEEXT) +subdir = qrng +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp \ + $(pkginclude_HEADERS) $(top_srcdir)/test-driver ChangeLog TODO +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +libgslqrng_la_LIBADD = +am_libgslqrng_la_OBJECTS = qrng.lo niederreiter-2.lo sobol.lo \ + halton.lo reversehalton.lo inline.lo +libgslqrng_la_OBJECTS = $(am_libgslqrng_la_OBJECTS) +AM_V_lt = $(am__v_lt_$(V)) +am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) +am__v_lt_0 = --silent +am__v_lt_1 = +am_test_OBJECTS = test.$(OBJEXT) +test_OBJECTS = $(am_test_OBJECTS) +test_DEPENDENCIES = libgslqrng.la ../ieee-utils/libgslieeeutils.la \ + ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la \ + ../utils/libutils.la +AM_V_P = $(am__v_P_$(V)) +am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY)) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_$(V)) +am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_$(V)) +am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I. -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_$(V)) +am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_$(V)) +am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libgslqrng_la_SOURCES) $(test_SOURCES) +DIST_SOURCES = $(libgslqrng_la_SOURCES) $(test_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(pkgincludedir)" +HEADERS = $(pkginclude_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = .test +LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing aclocal-1.13 +AMTAR = $${TAR-tar} +AM_DEFAULT_VERBOSITY = 1 +AR = ar +AS = as +AUTOCONF = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing autoconf +AUTOHEADER = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing autoheader +AUTOMAKE = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing automake-1.13 +AWK = gawk +CC = gcc +CCDEPMODE = depmode=gcc3 +CFLAGS = -g -O2 +CPP = gcc -E +CPPFLAGS = +CYGPATH_W = echo +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +DLLTOOL = false +DSYMUTIL = +DUMPBIN = +ECHO_C = +ECHO_N = -n +ECHO_T = +EGREP = /usr/bin/grep -E +EXEEXT = +FGREP = /usr/bin/grep -F +GREP = /usr/bin/grep +GSLCBLAS_LDFLAGS = +GSL_CFLAGS = -I${prefix}/include +GSL_LDFLAGS = +GSL_LIBADD = +GSL_LIBM = -lm +GSL_LIBS = -L${exec_prefix}/lib -lgsl +GSL_LT_CBLAS_VERSION = 0:0:0 +GSL_LT_VERSION = 24:0:1 +GSL_MAJOR_VERSION = 2 +GSL_MINOR_VERSION = 5 +HAVE_AIX_IEEE_INTERFACE = +HAVE_DARWIN86_IEEE_INTERFACE = +HAVE_DARWIN_IEEE_INTERFACE = +HAVE_FREEBSD_IEEE_INTERFACE = +HAVE_GNUM68K_IEEE_INTERFACE = +HAVE_GNUPPC_IEEE_INTERFACE = +HAVE_GNUSPARC_IEEE_INTERFACE = +HAVE_GNUX86_IEEE_INTERFACE = +HAVE_HPUX11_IEEE_INTERFACE = +HAVE_HPUX_IEEE_INTERFACE = +HAVE_IRIX_IEEE_INTERFACE = +HAVE_NETBSD_IEEE_INTERFACE = +HAVE_OPENBSD_IEEE_INTERFACE = +HAVE_OS2EMX_IEEE_INTERFACE = +HAVE_SOLARIS_IEEE_INTERFACE = +HAVE_SUNOS4_IEEE_INTERFACE = +HAVE_TRU64_IEEE_INTERFACE = +INSTALL = /usr/bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = $(install_sh) -c -s +LD = /usr/bin/ld -m elf_x86_64 +LDFLAGS = +LIBM = -lm +LIBOBJS = +LIBS = -lm +LIBTOOL = $(SHELL) $(top_builddir)/libtool +LIPO = +LN_S = ln -s +LTLIBOBJS = +MAINT = # +MAKEINFO = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing makeinfo +MANIFEST_TOOL = : +MKDIR_P = /usr/bin/mkdir -p +NM = /usr/bin/nm -B +NMEDIT = +OBJDUMP = objdump +OBJEXT = o +OTOOL = +OTOOL64 = +PACKAGE = gsl +PACKAGE_BUGREPORT = +PACKAGE_NAME = gsl +PACKAGE_STRING = gsl 2.5 +PACKAGE_TARNAME = gsl +PACKAGE_URL = +PACKAGE_VERSION = 2.5 +PATH_SEPARATOR = : +RANLIB = ranlib +SED = /usr/bin/sed +SET_MAKE = +SHELL = /bin/sh +STRIP = strip +VERSION = 2.5 +abs_builddir = /home/groups/kipac/chto/package/gsl/gsl-2.5/qrng +abs_srcdir = /home/groups/kipac/chto/package/gsl/gsl-2.5/qrng +abs_top_builddir = /home/groups/kipac/chto/package/gsl/gsl-2.5 +abs_top_srcdir = /home/groups/kipac/chto/package/gsl/gsl-2.5 +ac_ct_AR = ar +ac_ct_CC = gcc +ac_ct_DUMPBIN = +am__include = include +am__leading_dot = . +am__quote = +am__tar = $${TAR-tar} chof - "$$tardir" +am__untar = $${TAR-tar} xf - +bindir = ${exec_prefix}/bin +build = x86_64-unknown-linux-gnu +build_alias = +build_cpu = x86_64 +build_os = linux-gnu +build_vendor = unknown +builddir = . +datadir = ${datarootdir} +datarootdir = ${prefix}/share +docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} +dvidir = ${docdir} +exec_prefix = ${prefix} +host = x86_64-unknown-linux-gnu +host_alias = +host_cpu = x86_64 +host_os = linux-gnu +host_vendor = unknown +htmldir = ${docdir} +includedir = ${prefix}/include +infodir = ${datarootdir}/info +install_sh = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/install-sh +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +localedir = ${datarootdir}/locale +localstatedir = ${prefix}/var +mandir = ${datarootdir}/man +mkdir_p = $(MKDIR_P) +oldincludedir = /usr/include +pdfdir = ${docdir} +prefix = /home/groups/kipac/chto/package/gsl/gsl_lib +program_transform_name = s,x,x, +psdir = ${docdir} +sbindir = ${exec_prefix}/sbin +sharedstatedir = ${prefix}/com +srcdir = . +sysconfdir = ${prefix}/etc +target_alias = +top_build_prefix = ../ +top_builddir = .. +top_srcdir = .. +noinst_LTLIBRARIES = libgslqrng.la +pkginclude_HEADERS = gsl_qrng.h +AM_CPPFLAGS = -I$(top_srcdir) +libgslqrng_la_SOURCES = gsl_qrng.h qrng.c niederreiter-2.c sobol.c halton.c reversehalton.c inline.c +TESTS = $(check_PROGRAMS) +test_SOURCES = test.c +test_LDADD = libgslqrng.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu qrng/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu qrng/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: # $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): # $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libgslqrng.la: $(libgslqrng_la_OBJECTS) $(libgslqrng_la_DEPENDENCIES) $(EXTRA_libgslqrng_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(libgslqrng_la_OBJECTS) $(libgslqrng_la_LIBADD) $(LIBS) + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) $(EXTRA_test_DEPENDENCIES) + @rm -f test$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_OBJECTS) $(test_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +include ./$(DEPDIR)/halton.Plo +include ./$(DEPDIR)/inline.Plo +include ./$(DEPDIR)/niederreiter-2.Plo +include ./$(DEPDIR)/qrng.Plo +include ./$(DEPDIR)/reversehalton.Plo +include ./$(DEPDIR)/sobol.Plo +include ./$(DEPDIR)/test.Po + +.c.o: + $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# $(AM_V_CC)source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(COMPILE) -c $< + +.c.obj: + $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# $(AM_V_CC)source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: + $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +# $(AM_V_CC)source='$<' object='$@' libtool=yes \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-pkgincludeHEADERS: $(pkginclude_HEADERS) + @$(NORMAL_INSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \ + done + +uninstall-pkgincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + else \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_PROGRAMS) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +test.log: test$(EXEEXT) + @p='test$(EXEEXT)'; \ + b='test'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +#.test$(EXEEXT).log: +# @p='$<'; \ +# $(am__set_b); \ +# $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +# --log-file $$b.log --trs-file $$b.trs \ +# $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +# "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-am +all-am: Makefile $(LTLIBRARIES) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(pkgincludedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-pkgincludeHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-pkgincludeHEADERS + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES cscopelist-am ctags ctags-am distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-pkgincludeHEADERS \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + recheck tags tags-am uninstall uninstall-am \ + uninstall-pkgincludeHEADERS + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gsl-2.5/qrng/Makefile.am b/gsl-2.5/qrng/Makefile.am new file mode 100644 index 00000000..eb044624 --- /dev/null +++ b/gsl-2.5/qrng/Makefile.am @@ -0,0 +1,14 @@ +noinst_LTLIBRARIES = libgslqrng.la + +pkginclude_HEADERS = gsl_qrng.h + +AM_CPPFLAGS = -I$(top_srcdir) + +libgslqrng_la_SOURCES = gsl_qrng.h qrng.c niederreiter-2.c sobol.c halton.c reversehalton.c inline.c + +TESTS = $(check_PROGRAMS) +check_PROGRAMS = test + +test_SOURCES = test.c +test_LDADD = libgslqrng.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la + diff --git a/gsl-2.5/qrng/Makefile.in b/gsl-2.5/qrng/Makefile.in new file mode 100644 index 00000000..d51e0823 --- /dev/null +++ b/gsl-2.5/qrng/Makefile.in @@ -0,0 +1,1030 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + + +VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +check_PROGRAMS = test$(EXEEXT) +subdir = qrng +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp \ + $(pkginclude_HEADERS) $(top_srcdir)/test-driver ChangeLog TODO +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +libgslqrng_la_LIBADD = +am_libgslqrng_la_OBJECTS = qrng.lo niederreiter-2.lo sobol.lo \ + halton.lo reversehalton.lo inline.lo +libgslqrng_la_OBJECTS = $(am_libgslqrng_la_OBJECTS) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +am_test_OBJECTS = test.$(OBJEXT) +test_OBJECTS = $(am_test_OBJECTS) +test_DEPENDENCIES = libgslqrng.la ../ieee-utils/libgslieeeutils.la \ + ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la \ + ../utils/libutils.la +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libgslqrng_la_SOURCES) $(test_SOURCES) +DIST_SOURCES = $(libgslqrng_la_SOURCES) $(test_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(pkgincludedir)" +HEADERS = $(pkginclude_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = @EXEEXT@ .test +LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +GSLCBLAS_LDFLAGS = @GSLCBLAS_LDFLAGS@ +GSL_CFLAGS = @GSL_CFLAGS@ +GSL_LDFLAGS = @GSL_LDFLAGS@ +GSL_LIBADD = @GSL_LIBADD@ +GSL_LIBM = @GSL_LIBM@ +GSL_LIBS = @GSL_LIBS@ +GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ +GSL_LT_VERSION = @GSL_LT_VERSION@ +GSL_MAJOR_VERSION = @GSL_MAJOR_VERSION@ +GSL_MINOR_VERSION = @GSL_MINOR_VERSION@ +HAVE_AIX_IEEE_INTERFACE = @HAVE_AIX_IEEE_INTERFACE@ +HAVE_DARWIN86_IEEE_INTERFACE = @HAVE_DARWIN86_IEEE_INTERFACE@ +HAVE_DARWIN_IEEE_INTERFACE = @HAVE_DARWIN_IEEE_INTERFACE@ +HAVE_FREEBSD_IEEE_INTERFACE = @HAVE_FREEBSD_IEEE_INTERFACE@ +HAVE_GNUM68K_IEEE_INTERFACE = @HAVE_GNUM68K_IEEE_INTERFACE@ +HAVE_GNUPPC_IEEE_INTERFACE = @HAVE_GNUPPC_IEEE_INTERFACE@ +HAVE_GNUSPARC_IEEE_INTERFACE = @HAVE_GNUSPARC_IEEE_INTERFACE@ +HAVE_GNUX86_IEEE_INTERFACE = @HAVE_GNUX86_IEEE_INTERFACE@ +HAVE_HPUX11_IEEE_INTERFACE = @HAVE_HPUX11_IEEE_INTERFACE@ +HAVE_HPUX_IEEE_INTERFACE = @HAVE_HPUX_IEEE_INTERFACE@ +HAVE_IRIX_IEEE_INTERFACE = @HAVE_IRIX_IEEE_INTERFACE@ +HAVE_NETBSD_IEEE_INTERFACE = @HAVE_NETBSD_IEEE_INTERFACE@ +HAVE_OPENBSD_IEEE_INTERFACE = @HAVE_OPENBSD_IEEE_INTERFACE@ +HAVE_OS2EMX_IEEE_INTERFACE = @HAVE_OS2EMX_IEEE_INTERFACE@ +HAVE_SOLARIS_IEEE_INTERFACE = @HAVE_SOLARIS_IEEE_INTERFACE@ +HAVE_SUNOS4_IEEE_INTERFACE = @HAVE_SUNOS4_IEEE_INTERFACE@ +HAVE_TRU64_IEEE_INTERFACE = @HAVE_TRU64_IEEE_INTERFACE@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBM = @LIBM@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +noinst_LTLIBRARIES = libgslqrng.la +pkginclude_HEADERS = gsl_qrng.h +AM_CPPFLAGS = -I$(top_srcdir) +libgslqrng_la_SOURCES = gsl_qrng.h qrng.c niederreiter-2.c sobol.c halton.c reversehalton.c inline.c +TESTS = $(check_PROGRAMS) +test_SOURCES = test.c +test_LDADD = libgslqrng.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu qrng/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu qrng/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libgslqrng.la: $(libgslqrng_la_OBJECTS) $(libgslqrng_la_DEPENDENCIES) $(EXTRA_libgslqrng_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(libgslqrng_la_OBJECTS) $(libgslqrng_la_LIBADD) $(LIBS) + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) $(EXTRA_test_DEPENDENCIES) + @rm -f test$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_OBJECTS) $(test_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/halton.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/inline.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/niederreiter-2.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/qrng.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/reversehalton.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sobol.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test.Po@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-pkgincludeHEADERS: $(pkginclude_HEADERS) + @$(NORMAL_INSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \ + done + +uninstall-pkgincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + else \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_PROGRAMS) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +test.log: test$(EXEEXT) + @p='test$(EXEEXT)'; \ + b='test'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +@am__EXEEXT_TRUE@.test$(EXEEXT).log: +@am__EXEEXT_TRUE@ @p='$<'; \ +@am__EXEEXT_TRUE@ $(am__set_b); \ +@am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +@am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ +@am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +@am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-am +all-am: Makefile $(LTLIBRARIES) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(pkgincludedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-pkgincludeHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-pkgincludeHEADERS + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES cscopelist-am ctags ctags-am distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-pkgincludeHEADERS \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + recheck tags tags-am uninstall uninstall-am \ + uninstall-pkgincludeHEADERS + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gsl-2.5/qrng/TODO b/gsl-2.5/qrng/TODO new file mode 100644 index 00000000..a62b5cb2 --- /dev/null +++ b/gsl-2.5/qrng/TODO @@ -0,0 +1,13 @@ +# -*- org -*- +#+CATEGORY: qrng + +* Sort out "const" in prototypes, it looks odd since there are consts +for many functions which modify the state. (Applies to both qrng and rng) + +* It would be useful to include functions to generate quasi-random + number distributions (at least the Gaussian distribution)? obviously + the Box-Mueller algorithm cannot be used to maintain the low + discrepancy characteristics of the sequence, there are several + methods suggested in the literature but it isn't at all my field so + I'm not sure which is to be preferred. (DENISON Francis + ) diff --git a/gsl-2.5/qrng/gsl_qrng.h b/gsl-2.5/qrng/gsl_qrng.h new file mode 100644 index 00000000..47de500f --- /dev/null +++ b/gsl-2.5/qrng/gsl_qrng.h @@ -0,0 +1,111 @@ +/* Author: G. Jungman + modifications from O. Teytaud + */ +#ifndef __GSL_QRNG_H__ +#define __GSL_QRNG_H__ + +#include +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + + +/* Once again, more inane C-style OOP... kill me now. */ + +/* Structure describing a type of generator. + */ +typedef struct +{ + const char * name; + unsigned int max_dimension; + size_t (*state_size) (unsigned int dimension); + int (*init_state) (void * state, unsigned int dimension); + int (*get) (void * state, unsigned int dimension, double x[]); +} +gsl_qrng_type; + +/* Structure describing a generator instance of a + * specified type, with generator-specific state info + * and dimension-specific info. + */ +typedef struct +{ + const gsl_qrng_type * type; + unsigned int dimension; + size_t state_size; + void * state; +} +gsl_qrng; + + +/* Supported generator types. + */ +GSL_VAR const gsl_qrng_type * gsl_qrng_niederreiter_2; +GSL_VAR const gsl_qrng_type * gsl_qrng_sobol; +GSL_VAR const gsl_qrng_type * gsl_qrng_halton; +GSL_VAR const gsl_qrng_type * gsl_qrng_reversehalton; + + +/* Allocate and initialize a generator + * of the specified type, in the given + * space dimension. + */ +gsl_qrng * gsl_qrng_alloc (const gsl_qrng_type * T, unsigned int dimension); + + +/* Copy a generator. */ +int gsl_qrng_memcpy (gsl_qrng * dest, const gsl_qrng * src); + + +/* Clone a generator. */ +gsl_qrng * gsl_qrng_clone (const gsl_qrng * q); + + +/* Free a generator. */ +void gsl_qrng_free (gsl_qrng * q); + + +/* Intialize a generator. */ +void gsl_qrng_init (gsl_qrng * q); + + +/* Get the standardized name of the generator. */ +const char * gsl_qrng_name (const gsl_qrng * q); + + +/* ISN'T THIS CONFUSING FOR PEOPLE? + WHAT IF SOMEBODY TRIES TO COPY WITH THIS ??? + */ +size_t gsl_qrng_size (const gsl_qrng * q); + + +void * gsl_qrng_state (const gsl_qrng * q); + + +/* Retrieve next vector in sequence. */ +INLINE_DECL int gsl_qrng_get (const gsl_qrng * q, double x[]); + +#ifdef HAVE_INLINE +INLINE_FUN int gsl_qrng_get (const gsl_qrng * q, double x[]) +{ + return (q->type->get) (q->state, q->dimension, x); +} + +#endif /* HAVE_INLINE */ + + +__END_DECLS + + +#endif /* !__GSL_QRNG_H__ */ diff --git a/gsl-2.5/qrng/halton.c b/gsl-2.5/qrng/halton.c new file mode 100644 index 00000000..54e6cc43 --- /dev/null +++ b/gsl-2.5/qrng/halton.c @@ -0,0 +1,239 @@ +/* Authors: O. Teytaud + * Copyright (C) 2007 O. Teytaud + * (all comments welcome at olivier.teytaud@inria.fr) + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Implementation for Halton generator. See [J.H. Halton, On the + * efficiency of certain quasi-random sequences of points in + * evaluating multi-dimensional integrals Numerische Mathematik, 1960] + */ + +#include +#include + +/* maximum allowed space dimension */ +#define HALTON_MAX_DIMENSION 1229 + +/* prototypes for generator type functions */ +static size_t halton_state_size (unsigned int dimension); +static int halton_init (void *state, unsigned int dimension); +static int halton_get (void *state, unsigned int dimension, double *v); + +/* global Halton generator type object */ +static const gsl_qrng_type halton_type = { + "halton", + HALTON_MAX_DIMENSION, + halton_state_size, + halton_init, + halton_get +}; + +const gsl_qrng_type *gsl_qrng_halton = &halton_type; + +/* prime numbers (thanks to trolltech http://doc.trolltech.com/3.2/primes.html) +*/ +static const int prime_numbers[HALTON_MAX_DIMENSION] = { + 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, + 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, + 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, + 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, + 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, + 233, 239, 241, 251, 257, 263, 269, 271, 277, 281, + 283, 293, 307, 311, 313, 317, 331, 337, 347, 349, + 353, 359, 367, 373, 379, 383, 389, 397, 401, 409, + 419, 421, 431, 433, 439, 443, 449, 457, 461, 463, + 467, 479, 487, 491, 499, 503, 509, 521, 523, 541, + 547, 557, 563, 569, 571, 577, 587, 593, 599, 601, + 607, 613, 617, 619, 631, 641, 643, 647, 653, 659, + 661, 673, 677, 683, 691, 701, 709, 719, 727, 733, + 739, 743, 751, 757, 761, 769, 773, 787, 797, 809, + 811, 821, 823, 827, 829, 839, 853, 857, 859, 863, + 877, 881, 883, 887, 907, 911, 919, 929, 937, 941, + 947, 953, 967, 971, 977, 983, 991, 997, 1009, 1013, + 1019, 1021, 1031, 1033, 1039, 1049, 1051, 1061, 1063, 1069, + 1087, 1091, 1093, 1097, 1103, 1109, 1117, 1123, 1129, 1151, + 1153, 1163, 1171, 1181, 1187, 1193, 1201, 1213, 1217, 1223, + 1229, 1231, 1237, 1249, 1259, 1277, 1279, 1283, 1289, 1291, + 1297, 1301, 1303, 1307, 1319, 1321, 1327, 1361, 1367, 1373, + 1381, 1399, 1409, 1423, 1427, 1429, 1433, 1439, 1447, 1451, + 1453, 1459, 1471, 1481, 1483, 1487, 1489, 1493, 1499, 1511, + 1523, 1531, 1543, 1549, 1553, 1559, 1567, 1571, 1579, 1583, + 1597, 1601, 1607, 1609, 1613, 1619, 1621, 1627, 1637, 1657, + 1663, 1667, 1669, 1693, 1697, 1699, 1709, 1721, 1723, 1733, + 1741, 1747, 1753, 1759, 1777, 1783, 1787, 1789, 1801, 1811, + 1823, 1831, 1847, 1861, 1867, 1871, 1873, 1877, 1879, 1889, + 1901, 1907, 1913, 1931, 1933, 1949, 1951, 1973, 1979, 1987, + 1993, 1997, 1999, 2003, 2011, 2017, 2027, 2029, 2039, 2053, + 2063, 2069, 2081, 2083, 2087, 2089, 2099, 2111, 2113, 2129, + 2131, 2137, 2141, 2143, 2153, 2161, 2179, 2203, 2207, 2213, + 2221, 2237, 2239, 2243, 2251, 2267, 2269, 2273, 2281, 2287, + 2293, 2297, 2309, 2311, 2333, 2339, 2341, 2347, 2351, 2357, + 2371, 2377, 2381, 2383, 2389, 2393, 2399, 2411, 2417, 2423, + 2437, 2441, 2447, 2459, 2467, 2473, 2477, 2503, 2521, 2531, + 2539, 2543, 2549, 2551, 2557, 2579, 2591, 2593, 2609, 2617, + 2621, 2633, 2647, 2657, 2659, 2663, 2671, 2677, 2683, 2687, + 2689, 2693, 2699, 2707, 2711, 2713, 2719, 2729, 2731, 2741, + 2749, 2753, 2767, 2777, 2789, 2791, 2797, 2801, 2803, 2819, + 2833, 2837, 2843, 2851, 2857, 2861, 2879, 2887, 2897, 2903, + 2909, 2917, 2927, 2939, 2953, 2957, 2963, 2969, 2971, 2999, + 3001, 3011, 3019, 3023, 3037, 3041, 3049, 3061, 3067, 3079, + 3083, 3089, 3109, 3119, 3121, 3137, 3163, 3167, 3169, 3181, + 3187, 3191, 3203, 3209, 3217, 3221, 3229, 3251, 3253, 3257, + 3259, 3271, 3299, 3301, 3307, 3313, 3319, 3323, 3329, 3331, + 3343, 3347, 3359, 3361, 3371, 3373, 3389, 3391, 3407, 3413, + 3433, 3449, 3457, 3461, 3463, 3467, 3469, 3491, 3499, 3511, + 3517, 3527, 3529, 3533, 3539, 3541, 3547, 3557, 3559, 3571, + 3581, 3583, 3593, 3607, 3613, 3617, 3623, 3631, 3637, 3643, + 3659, 3671, 3673, 3677, 3691, 3697, 3701, 3709, 3719, 3727, + 3733, 3739, 3761, 3767, 3769, 3779, 3793, 3797, 3803, 3821, + 3823, 3833, 3847, 3851, 3853, 3863, 3877, 3881, 3889, 3907, + 3911, 3917, 3919, 3923, 3929, 3931, 3943, 3947, 3967, 3989, + 4001, 4003, 4007, 4013, 4019, 4021, 4027, 4049, 4051, 4057, + 4073, 4079, 4091, 4093, 4099, 4111, 4127, 4129, 4133, 4139, + 4153, 4157, 4159, 4177, 4201, 4211, 4217, 4219, 4229, 4231, + 4241, 4243, 4253, 4259, 4261, 4271, 4273, 4283, 4289, 4297, + 4327, 4337, 4339, 4349, 4357, 4363, 4373, 4391, 4397, 4409, + 4421, 4423, 4441, 4447, 4451, 4457, 4463, 4481, 4483, 4493, + 4507, 4513, 4517, 4519, 4523, 4547, 4549, 4561, 4567, 4583, + 4591, 4597, 4603, 4621, 4637, 4639, 4643, 4649, 4651, 4657, + 4663, 4673, 4679, 4691, 4703, 4721, 4723, 4729, 4733, 4751, + 4759, 4783, 4787, 4789, 4793, 4799, 4801, 4813, 4817, 4831, + 4861, 4871, 4877, 4889, 4903, 4909, 4919, 4931, 4933, 4937, + 4943, 4951, 4957, 4967, 4969, 4973, 4987, 4993, 4999, 5003, + 5009, 5011, 5021, 5023, 5039, 5051, 5059, 5077, 5081, 5087, + 5099, 5101, 5107, 5113, 5119, 5147, 5153, 5167, 5171, 5179, + 5189, 5197, 5209, 5227, 5231, 5233, 5237, 5261, 5273, 5279, + 5281, 5297, 5303, 5309, 5323, 5333, 5347, 5351, 5381, 5387, + 5393, 5399, 5407, 5413, 5417, 5419, 5431, 5437, 5441, 5443, + 5449, 5471, 5477, 5479, 5483, 5501, 5503, 5507, 5519, 5521, + 5527, 5531, 5557, 5563, 5569, 5573, 5581, 5591, 5623, 5639, + 5641, 5647, 5651, 5653, 5657, 5659, 5669, 5683, 5689, 5693, + 5701, 5711, 5717, 5737, 5741, 5743, 5749, 5779, 5783, 5791, + 5801, 5807, 5813, 5821, 5827, 5839, 5843, 5849, 5851, 5857, + 5861, 5867, 5869, 5879, 5881, 5897, 5903, 5923, 5927, 5939, + 5953, 5981, 5987, 6007, 6011, 6029, 6037, 6043, 6047, 6053, + 6067, 6073, 6079, 6089, 6091, 6101, 6113, 6121, 6131, 6133, + 6143, 6151, 6163, 6173, 6197, 6199, 6203, 6211, 6217, 6221, + 6229, 6247, 6257, 6263, 6269, 6271, 6277, 6287, 6299, 6301, + 6311, 6317, 6323, 6329, 6337, 6343, 6353, 6359, 6361, 6367, + 6373, 6379, 6389, 6397, 6421, 6427, 6449, 6451, 6469, 6473, + 6481, 6491, 6521, 6529, 6547, 6551, 6553, 6563, 6569, 6571, + 6577, 6581, 6599, 6607, 6619, 6637, 6653, 6659, 6661, 6673, + 6679, 6689, 6691, 6701, 6703, 6709, 6719, 6733, 6737, 6761, + 6763, 6779, 6781, 6791, 6793, 6803, 6823, 6827, 6829, 6833, + 6841, 6857, 6863, 6869, 6871, 6883, 6899, 6907, 6911, 6917, + 6947, 6949, 6959, 6961, 6967, 6971, 6977, 6983, 6991, 6997, + 7001, 7013, 7019, 7027, 7039, 7043, 7057, 7069, 7079, 7103, + 7109, 7121, 7127, 7129, 7151, 7159, 7177, 7187, 7193, 7207, + 7211, 7213, 7219, 7229, 7237, 7243, 7247, 7253, 7283, 7297, + 7307, 7309, 7321, 7331, 7333, 7349, 7351, 7369, 7393, 7411, + 7417, 7433, 7451, 7457, 7459, 7477, 7481, 7487, 7489, 7499, + 7507, 7517, 7523, 7529, 7537, 7541, 7547, 7549, 7559, 7561, + 7573, 7577, 7583, 7589, 7591, 7603, 7607, 7621, 7639, 7643, + 7649, 7669, 7673, 7681, 7687, 7691, 7699, 7703, 7717, 7723, + 7727, 7741, 7753, 7757, 7759, 7789, 7793, 7817, 7823, 7829, + 7841, 7853, 7867, 7873, 7877, 7879, 7883, 7901, 7907, 7919, + 7927, 7933, 7937, 7949, 7951, 7963, 7993, 8009, 8011, 8017, + 8039, 8053, 8059, 8069, 8081, 8087, 8089, 8093, 8101, 8111, + 8117, 8123, 8147, 8161, 8167, 8171, 8179, 8191, 8209, 8219, + 8221, 8231, 8233, 8237, 8243, 8263, 8269, 8273, 8287, 8291, + 8293, 8297, 8311, 8317, 8329, 8353, 8363, 8369, 8377, 8387, + 8389, 8419, 8423, 8429, 8431, 8443, 8447, 8461, 8467, 8501, + 8513, 8521, 8527, 8537, 8539, 8543, 8563, 8573, 8581, 8597, + 8599, 8609, 8623, 8627, 8629, 8641, 8647, 8663, 8669, 8677, + 8681, 8689, 8693, 8699, 8707, 8713, 8719, 8731, 8737, 8741, + 8747, 8753, 8761, 8779, 8783, 8803, 8807, 8819, 8821, 8831, + 8837, 8839, 8849, 8861, 8863, 8867, 8887, 8893, 8923, 8929, + 8933, 8941, 8951, 8963, 8969, 8971, 8999, 9001, 9007, 9011, + 9013, 9029, 9041, 9043, 9049, 9059, 9067, 9091, 9103, 9109, + 9127, 9133, 9137, 9151, 9157, 9161, 9173, 9181, 9187, 9199, + 9203, 9209, 9221, 9227, 9239, 9241, 9257, 9277, 9281, 9283, + 9293, 9311, 9319, 9323, 9337, 9341, 9343, 9349, 9371, 9377, + 9391, 9397, 9403, 9413, 9419, 9421, 9431, 9433, 9437, 9439, + 9461, 9463, 9467, 9473, 9479, 9491, 9497, 9511, 9521, 9533, + 9539, 9547, 9551, 9587, 9601, 9613, 9619, 9623, 9629, 9631, + 9643, 9649, 9661, 9677, 9679, 9689, 9697, 9719, 9721, 9733, + 9739, 9743, 9749, 9767, 9769, 9781, 9787, 9791, 9803, 9811, + 9817, 9829, 9833, 9839, 9851, 9857, 9859, 9871, 9883, 9887, + 9901, 9907, 9923, 9929, 9931, 9941, 9949, 9967, 9973 +}; + +/* Halton generator state. + * sequence_count = number of calls with this generator + */ +typedef struct +{ + unsigned int sequence_count; +} +halton_state_t; + +static size_t +halton_state_size (unsigned int dimension) +{ + return sizeof (halton_state_t); +} + +static int +halton_init (void *state, unsigned int dimension) +{ + halton_state_t *h_state = (halton_state_t *) state; + + h_state->sequence_count = 0; + + if (dimension < 1 || dimension > HALTON_MAX_DIMENSION) + { + return GSL_EINVAL; + } + + return GSL_SUCCESS; +} + +static double +vdcorput (int x, int b) +{ + double r = 0.; + double v = 1.; + double binv = 1. / (double) b; + + while (x > 0) + { + v *= binv; + r += v * (double) (x % b); + x /= b; + } + return r; +} + +static int +halton_get (void *state, unsigned int dimension, double *v) +{ + halton_state_t *h_state = (halton_state_t *) state; + unsigned int i; + + if (dimension < 1 || dimension > HALTON_MAX_DIMENSION) + { + return GSL_EINVAL; + } + h_state->sequence_count++; + + for (i = 0; i < dimension; i++) + { + v[i] = vdcorput (h_state->sequence_count, prime_numbers[i]); + } + + return GSL_SUCCESS; +} diff --git a/gsl-2.5/qrng/halton.lo b/gsl-2.5/qrng/halton.lo new file mode 100644 index 00000000..f4aafed3 --- /dev/null +++ b/gsl-2.5/qrng/halton.lo @@ -0,0 +1,12 @@ +# halton.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/halton.o' + +# Name of the non-PIC object +non_pic_object='halton.o' + diff --git a/gsl-2.5/qrng/inline.c b/gsl-2.5/qrng/inline.c new file mode 100644 index 00000000..5b9c8b56 --- /dev/null +++ b/gsl-2.5/qrng/inline.c @@ -0,0 +1,13 @@ +/* Author: G. Jungman + */ +#include +#include +#include +#include + +/* Compile all the inline functions */ + +#define COMPILE_INLINE_STATIC +#include "build.h" +#include + diff --git a/gsl-2.5/qrng/inline.lo b/gsl-2.5/qrng/inline.lo new file mode 100644 index 00000000..c5763370 --- /dev/null +++ b/gsl-2.5/qrng/inline.lo @@ -0,0 +1,12 @@ +# inline.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/inline.o' + +# Name of the non-PIC object +non_pic_object='inline.o' + diff --git a/gsl-2.5/qrng/libgslqrng.la b/gsl-2.5/qrng/libgslqrng.la new file mode 100644 index 00000000..603d4e80 --- /dev/null +++ b/gsl-2.5/qrng/libgslqrng.la @@ -0,0 +1,41 @@ +# libgslqrng.la - a libtool library file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='' + +# Names of this library. +library_names='' + +# The name of the static archive. +old_library='libgslqrng.a' + +# Linker flags that can not go in dependency_libs. +inherited_linker_flags='' + +# Libraries that this one depends upon. +dependency_libs=' -lm' + +# Names of additional weak libraries provided by this library +weak_library_names='' + +# Version information for libgslqrng. +current= +age= +revision= + +# Is this an already installed library? +installed=no + +# Should we warn about portability when linking against -modules? +shouldnotlink=no + +# Files to dlopen/dlpreopen +dlopen='' +dlpreopen='' + +# Directory that this library needs to be installed in: +libdir='' diff --git a/gsl-2.5/qrng/niederreiter-2.c b/gsl-2.5/qrng/niederreiter-2.c new file mode 100644 index 00000000..1a28009f --- /dev/null +++ b/gsl-2.5/qrng/niederreiter-2.c @@ -0,0 +1,353 @@ +/* Author: G. Jungman + */ +/* Implement Niederreiter base 2 generator. + * See: + * Bratley, Fox, Niederreiter, ACM Trans. Model. Comp. Sim. 2, 195 (1992) + */ +#include +#include + + +#define NIED2_CHARACTERISTIC 2 +#define NIED2_BASE 2 + +#define NIED2_MAX_DIMENSION 12 +#define NIED2_MAX_PRIM_DEGREE 5 +#define NIED2_MAX_DEGREE 50 + +#define NIED2_BIT_COUNT 30 +#define NIED2_NBITS (NIED2_BIT_COUNT+1) + +#define MAXV (NIED2_NBITS + NIED2_MAX_DEGREE) + +/* Z_2 field operations */ +#define NIED2_ADD(x,y) (((x)+(y))%2) +#define NIED2_MUL(x,y) (((x)*(y))%2) +#define NIED2_SUB(x,y) NIED2_ADD((x),(y)) + + +static size_t nied2_state_size(unsigned int dimension); +static int nied2_init(void * state, unsigned int dimension); +static int nied2_get(void * state, unsigned int dimension, double * v); + + +static const gsl_qrng_type nied2_type = +{ + "niederreiter-base-2", + NIED2_MAX_DIMENSION, + nied2_state_size, + nied2_init, + nied2_get +}; + +const gsl_qrng_type * gsl_qrng_niederreiter_2 = &nied2_type; + +/* primitive polynomials in binary encoding */ +static const int primitive_poly[NIED2_MAX_DIMENSION+1][NIED2_MAX_PRIM_DEGREE+1] = +{ + { 1, 0, 0, 0, 0, 0 }, /* 1 */ + { 0, 1, 0, 0, 0, 0 }, /* x */ + { 1, 1, 0, 0, 0, 0 }, /* 1 + x */ + { 1, 1, 1, 0, 0, 0 }, /* 1 + x + x^2 */ + { 1, 1, 0, 1, 0, 0 }, /* 1 + x + x^3 */ + { 1, 0, 1, 1, 0, 0 }, /* 1 + x^2 + x^3 */ + { 1, 1, 0, 0, 1, 0 }, /* 1 + x + x^4 */ + { 1, 0, 0, 1, 1, 0 }, /* 1 + x^3 + x^4 */ + { 1, 1, 1, 1, 1, 0 }, /* 1 + x + x^2 + x^3 + x^4 */ + { 1, 0, 1, 0, 0, 1 }, /* 1 + x^2 + x^5 */ + { 1, 0, 0, 1, 0, 1 }, /* 1 + x^3 + x^5 */ + { 1, 1, 1, 1, 0, 1 }, /* 1 + x + x^2 + x^3 + x^5 */ + { 1, 1, 1, 0, 1, 1 } /* 1 + x + x^2 + x^4 + x^5 */ +}; + +/* degrees of primitive polynomials */ +static const int poly_degree[NIED2_MAX_DIMENSION+1] = +{ + 0, 1, 1, 2, 3, 3, 4, 4, 4, 5, 5, 5, 5 +}; + + +typedef struct +{ + unsigned int sequence_count; + int cj[NIED2_NBITS][NIED2_MAX_DIMENSION]; + int nextq[NIED2_MAX_DIMENSION]; +} nied2_state_t; + + +static size_t nied2_state_size(unsigned int dimension) +{ + return sizeof(nied2_state_t); +} + + +/* Multiply polynomials over Z_2. + * Notice use of a temporary vector, + * side-stepping aliasing issues when + * one of inputs is the same as the output + * [especially important in the original fortran version, I guess]. + */ +static void poly_multiply( + const int pa[], int pa_degree, + const int pb[], int pb_degree, + int pc[], int * pc_degree + ) +{ + int j, k; + int pt[NIED2_MAX_DEGREE+1]; + int pt_degree = pa_degree + pb_degree; + + for(k=0; k<=pt_degree; k++) { + int term = 0; + for(j=0; j<=k; j++) { + const int conv_term = NIED2_MUL(pa[k-j], pb[j]); + term = NIED2_ADD(term, conv_term); + } + pt[k] = term; + } + + for(k=0; k<=pt_degree; k++) { + pc[k] = pt[k]; + } + for(k=pt_degree+1; k<=NIED2_MAX_DEGREE; k++) { + pc[k] = 0; + } + + *pc_degree = pt_degree; +} + + +/* Calculate the values of the constants V(J,R) as + * described in BFN section 3.3. + * + * px = appropriate irreducible polynomial for current dimension + * pb = polynomial defined in section 2.3 of BFN. + * pb is modified + */ +static void calculate_v( + const int px[], int px_degree, + int pb[], int * pb_degree, + int v[], int maxv + ) +{ + const int nonzero_element = 1; /* nonzero element of Z_2 */ + const int arbitrary_element = 1; /* arbitray element of Z_2 */ + + /* The polynomial ph is px**(J-1), which is the value of B on arrival. + * In section 3.3, the values of Hi are defined with a minus sign: + * don't forget this if you use them later ! + */ + int ph[NIED2_MAX_DEGREE+1]; + /* int ph_degree = *pb_degree; */ + int bigm = *pb_degree; /* m from section 3.3 */ + int m; /* m from section 2.3 */ + int r, k, kj; + + for(k=0; k<=NIED2_MAX_DEGREE; k++) { + ph[k] = pb[k]; + } + + /* Now multiply B by PX so B becomes PX**J. + * In section 2.3, the values of Bi are defined with a minus sign : + * don't forget this if you use them later ! + */ + poly_multiply(px, px_degree, pb, *pb_degree, pb, pb_degree); + m = *pb_degree; + + /* Now choose a value of Kj as defined in section 3.3. + * We must have 0 <= Kj < E*J = M. + * The limit condition on Kj does not seem very relevant + * in this program. + */ + /* Quoting from BFN: "Our program currently sets each K_q + * equal to eq. This has the effect of setting all unrestricted + * values of v to 1." + * Actually, it sets them to the arbitrary chosen value. + * Whatever. + */ + kj = bigm; + + /* Now choose values of V in accordance with + * the conditions in section 3.3. + */ + for(r=0; r= bigm) { + for(r=kj+1; rcj[r][i_dim] = term; + } + + } +} + + +static int nied2_init(void * state, unsigned int dimension) +{ + nied2_state_t * n_state = (nied2_state_t *) state; + unsigned int i_dim; + + if(dimension < 1 || dimension > NIED2_MAX_DIMENSION) return GSL_EINVAL; + + calculate_cj(n_state, dimension); + + for(i_dim=0; i_dimnextq[i_dim] = 0; + n_state->sequence_count = 0; + + return GSL_SUCCESS; +} + + +static int nied2_get(void * state, unsigned int dimension, double * v) +{ + static const double recip = 1.0/(double)(1U << NIED2_NBITS); /* 2^(-nbits) */ + nied2_state_t * n_state = (nied2_state_t *) state; + int r; + int c; + unsigned int i_dim; + + /* Load the result from the saved state. */ + for(i_dim=0; i_dimnextq[i_dim] * recip; + } + + /* Find the position of the least-significant zero in sequence_count. + * This is the bit that changes in the Gray-code representation as + * the count is advanced. + */ + r = 0; + c = n_state->sequence_count; + while(1) { + if((c % 2) == 1) { + ++r; + c /= 2; + } + else break; + } + + if(r >= NIED2_NBITS) return GSL_EFAILED; /* FIXME: better error code here */ + + /* Calculate the next state. */ + for(i_dim=0; i_dimnextq[i_dim] ^= n_state->cj[r][i_dim]; + } + + n_state->sequence_count++; + + return GSL_SUCCESS; +} diff --git a/gsl-2.5/qrng/niederreiter-2.lo b/gsl-2.5/qrng/niederreiter-2.lo new file mode 100644 index 00000000..77cc21a9 --- /dev/null +++ b/gsl-2.5/qrng/niederreiter-2.lo @@ -0,0 +1,12 @@ +# niederreiter-2.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/niederreiter-2.o' + +# Name of the non-PIC object +non_pic_object='niederreiter-2.o' + diff --git a/gsl-2.5/qrng/qrng.c b/gsl-2.5/qrng/qrng.c new file mode 100644 index 00000000..1f7bdf30 --- /dev/null +++ b/gsl-2.5/qrng/qrng.c @@ -0,0 +1,118 @@ +/* Author: G. Jungman + */ +#include +#include +#include +#include +#include + + +gsl_qrng * +gsl_qrng_alloc (const gsl_qrng_type * T, unsigned int dimension) +{ + + gsl_qrng * q = (gsl_qrng *) malloc (sizeof (gsl_qrng)); + + if (q == 0) + { + GSL_ERROR_VAL ("allocation failed for qrng struct", + GSL_ENOMEM, 0); + }; + + q->dimension = dimension; + q->state_size = T->state_size(dimension); + q->state = malloc (q->state_size); + + if (q->state == 0) + { + free (q); + GSL_ERROR_VAL ("allocation failed for qrng state", + GSL_ENOMEM, 0); + }; + + q->type = T; + + T->init_state(q->state, q->dimension); + + return q; +} + +void +gsl_qrng_init (gsl_qrng * q) +{ + (q->type->init_state) (q->state, q->dimension); +} + +int +gsl_qrng_memcpy (gsl_qrng * dest, const gsl_qrng * src) +{ + if (dest->type != src->type) + { + GSL_ERROR ("generators must be of the same type", GSL_EINVAL); + } + + dest->dimension = src->dimension; + dest->state_size = src->state_size; + memcpy (dest->state, src->state, src->state_size); + + return GSL_SUCCESS; +} + + +gsl_qrng * +gsl_qrng_clone (const gsl_qrng * q) +{ + gsl_qrng * r = (gsl_qrng *) malloc (sizeof (gsl_qrng)); + + if (r == 0) + { + GSL_ERROR_VAL ("failed to allocate space for rng struct", + GSL_ENOMEM, 0); + }; + + r->dimension = q->dimension; + r->state_size = q->state_size; + r->state = malloc (r->state_size); + + if (r->state == 0) + { + free (r); + GSL_ERROR_VAL ("failed to allocate space for rng state", + GSL_ENOMEM, 0); + }; + + r->type = q->type; + + memcpy (r->state, q->state, q->state_size); + + return r; +} + +const char * +gsl_qrng_name (const gsl_qrng * q) +{ + return q->type->name; +} + + +size_t +gsl_qrng_size (const gsl_qrng * q) +{ + return q->state_size; +} + + +void * +gsl_qrng_state (const gsl_qrng * q) +{ + return q->state; +} + + +void +gsl_qrng_free (gsl_qrng * q) +{ + RETURN_IF_NULL (q); + if(q->state != 0) free (q->state); + free (q); +} diff --git a/gsl-2.5/qrng/qrng.lo b/gsl-2.5/qrng/qrng.lo new file mode 100644 index 00000000..dd6225cf --- /dev/null +++ b/gsl-2.5/qrng/qrng.lo @@ -0,0 +1,12 @@ +# qrng.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/qrng.o' + +# Name of the non-PIC object +non_pic_object='qrng.o' + diff --git a/gsl-2.5/qrng/reversehalton.c b/gsl-2.5/qrng/reversehalton.c new file mode 100644 index 00000000..1a566bbd --- /dev/null +++ b/gsl-2.5/qrng/reversehalton.c @@ -0,0 +1,241 @@ +/* Authors: O. Teytaud + * Copyright (C) 2007 O. Teytaud + * (all comments/suggestions welcome at olivier.teytaud@inria.fr) + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Implementation for Halton generator, modified according to the + * following improvement (reverse scrambling): [ B. Vandewoestyne and + * R. Cools, Good permutations for deterministic scrambled Halton + * sequences in terms of L2-discrepancy, Computational and Applied + * Mathematics 189, 2006] + */ + +#include +#include + +/* maximum allowed space dimension */ +#define REVERSEHALTON_MAX_DIMENSION 1229 + +/* prototypes for generator type functions */ +static size_t reversehalton_state_size (unsigned int dimension); +static int reversehalton_init (void *state, unsigned int dimension); +static int reversehalton_get (void *state, unsigned int dimension, double *v); + +/* global Halton generator type object */ +static const gsl_qrng_type reversehalton_type = { + "reversehalton", + REVERSEHALTON_MAX_DIMENSION, + reversehalton_state_size, + reversehalton_init, + reversehalton_get +}; +const gsl_qrng_type *gsl_qrng_reversehalton = &reversehalton_type; + +/* prime numbers (thanks to trolltech http://doc.trolltech.com/3.2/primes.html) + */ + +static const int prime_numbers[REVERSEHALTON_MAX_DIMENSION] = { + 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, + 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, + 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, + 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, + 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, + 233, 239, 241, 251, 257, 263, 269, 271, 277, 281, + 283, 293, 307, 311, 313, 317, 331, 337, 347, 349, + 353, 359, 367, 373, 379, 383, 389, 397, 401, 409, + 419, 421, 431, 433, 439, 443, 449, 457, 461, 463, + 467, 479, 487, 491, 499, 503, 509, 521, 523, 541, + 547, 557, 563, 569, 571, 577, 587, 593, 599, 601, + 607, 613, 617, 619, 631, 641, 643, 647, 653, 659, + 661, 673, 677, 683, 691, 701, 709, 719, 727, 733, + 739, 743, 751, 757, 761, 769, 773, 787, 797, 809, + 811, 821, 823, 827, 829, 839, 853, 857, 859, 863, + 877, 881, 883, 887, 907, 911, 919, 929, 937, 941, + 947, 953, 967, 971, 977, 983, 991, 997, 1009, 1013, + 1019, 1021, 1031, 1033, 1039, 1049, 1051, 1061, 1063, 1069, + 1087, 1091, 1093, 1097, 1103, 1109, 1117, 1123, 1129, 1151, + 1153, 1163, 1171, 1181, 1187, 1193, 1201, 1213, 1217, 1223, + 1229, 1231, 1237, 1249, 1259, 1277, 1279, 1283, 1289, 1291, + 1297, 1301, 1303, 1307, 1319, 1321, 1327, 1361, 1367, 1373, + 1381, 1399, 1409, 1423, 1427, 1429, 1433, 1439, 1447, 1451, + 1453, 1459, 1471, 1481, 1483, 1487, 1489, 1493, 1499, 1511, + 1523, 1531, 1543, 1549, 1553, 1559, 1567, 1571, 1579, 1583, + 1597, 1601, 1607, 1609, 1613, 1619, 1621, 1627, 1637, 1657, + 1663, 1667, 1669, 1693, 1697, 1699, 1709, 1721, 1723, 1733, + 1741, 1747, 1753, 1759, 1777, 1783, 1787, 1789, 1801, 1811, + 1823, 1831, 1847, 1861, 1867, 1871, 1873, 1877, 1879, 1889, + 1901, 1907, 1913, 1931, 1933, 1949, 1951, 1973, 1979, 1987, + 1993, 1997, 1999, 2003, 2011, 2017, 2027, 2029, 2039, 2053, + 2063, 2069, 2081, 2083, 2087, 2089, 2099, 2111, 2113, 2129, + 2131, 2137, 2141, 2143, 2153, 2161, 2179, 2203, 2207, 2213, + 2221, 2237, 2239, 2243, 2251, 2267, 2269, 2273, 2281, 2287, + 2293, 2297, 2309, 2311, 2333, 2339, 2341, 2347, 2351, 2357, + 2371, 2377, 2381, 2383, 2389, 2393, 2399, 2411, 2417, 2423, + 2437, 2441, 2447, 2459, 2467, 2473, 2477, 2503, 2521, 2531, + 2539, 2543, 2549, 2551, 2557, 2579, 2591, 2593, 2609, 2617, + 2621, 2633, 2647, 2657, 2659, 2663, 2671, 2677, 2683, 2687, + 2689, 2693, 2699, 2707, 2711, 2713, 2719, 2729, 2731, 2741, + 2749, 2753, 2767, 2777, 2789, 2791, 2797, 2801, 2803, 2819, + 2833, 2837, 2843, 2851, 2857, 2861, 2879, 2887, 2897, 2903, + 2909, 2917, 2927, 2939, 2953, 2957, 2963, 2969, 2971, 2999, + 3001, 3011, 3019, 3023, 3037, 3041, 3049, 3061, 3067, 3079, + 3083, 3089, 3109, 3119, 3121, 3137, 3163, 3167, 3169, 3181, + 3187, 3191, 3203, 3209, 3217, 3221, 3229, 3251, 3253, 3257, + 3259, 3271, 3299, 3301, 3307, 3313, 3319, 3323, 3329, 3331, + 3343, 3347, 3359, 3361, 3371, 3373, 3389, 3391, 3407, 3413, + 3433, 3449, 3457, 3461, 3463, 3467, 3469, 3491, 3499, 3511, + 3517, 3527, 3529, 3533, 3539, 3541, 3547, 3557, 3559, 3571, + 3581, 3583, 3593, 3607, 3613, 3617, 3623, 3631, 3637, 3643, + 3659, 3671, 3673, 3677, 3691, 3697, 3701, 3709, 3719, 3727, + 3733, 3739, 3761, 3767, 3769, 3779, 3793, 3797, 3803, 3821, + 3823, 3833, 3847, 3851, 3853, 3863, 3877, 3881, 3889, 3907, + 3911, 3917, 3919, 3923, 3929, 3931, 3943, 3947, 3967, 3989, + 4001, 4003, 4007, 4013, 4019, 4021, 4027, 4049, 4051, 4057, + 4073, 4079, 4091, 4093, 4099, 4111, 4127, 4129, 4133, 4139, + 4153, 4157, 4159, 4177, 4201, 4211, 4217, 4219, 4229, 4231, + 4241, 4243, 4253, 4259, 4261, 4271, 4273, 4283, 4289, 4297, + 4327, 4337, 4339, 4349, 4357, 4363, 4373, 4391, 4397, 4409, + 4421, 4423, 4441, 4447, 4451, 4457, 4463, 4481, 4483, 4493, + 4507, 4513, 4517, 4519, 4523, 4547, 4549, 4561, 4567, 4583, + 4591, 4597, 4603, 4621, 4637, 4639, 4643, 4649, 4651, 4657, + 4663, 4673, 4679, 4691, 4703, 4721, 4723, 4729, 4733, 4751, + 4759, 4783, 4787, 4789, 4793, 4799, 4801, 4813, 4817, 4831, + 4861, 4871, 4877, 4889, 4903, 4909, 4919, 4931, 4933, 4937, + 4943, 4951, 4957, 4967, 4969, 4973, 4987, 4993, 4999, 5003, + 5009, 5011, 5021, 5023, 5039, 5051, 5059, 5077, 5081, 5087, + 5099, 5101, 5107, 5113, 5119, 5147, 5153, 5167, 5171, 5179, + 5189, 5197, 5209, 5227, 5231, 5233, 5237, 5261, 5273, 5279, + 5281, 5297, 5303, 5309, 5323, 5333, 5347, 5351, 5381, 5387, + 5393, 5399, 5407, 5413, 5417, 5419, 5431, 5437, 5441, 5443, + 5449, 5471, 5477, 5479, 5483, 5501, 5503, 5507, 5519, 5521, + 5527, 5531, 5557, 5563, 5569, 5573, 5581, 5591, 5623, 5639, + 5641, 5647, 5651, 5653, 5657, 5659, 5669, 5683, 5689, 5693, + 5701, 5711, 5717, 5737, 5741, 5743, 5749, 5779, 5783, 5791, + 5801, 5807, 5813, 5821, 5827, 5839, 5843, 5849, 5851, 5857, + 5861, 5867, 5869, 5879, 5881, 5897, 5903, 5923, 5927, 5939, + 5953, 5981, 5987, 6007, 6011, 6029, 6037, 6043, 6047, 6053, + 6067, 6073, 6079, 6089, 6091, 6101, 6113, 6121, 6131, 6133, + 6143, 6151, 6163, 6173, 6197, 6199, 6203, 6211, 6217, 6221, + 6229, 6247, 6257, 6263, 6269, 6271, 6277, 6287, 6299, 6301, + 6311, 6317, 6323, 6329, 6337, 6343, 6353, 6359, 6361, 6367, + 6373, 6379, 6389, 6397, 6421, 6427, 6449, 6451, 6469, 6473, + 6481, 6491, 6521, 6529, 6547, 6551, 6553, 6563, 6569, 6571, + 6577, 6581, 6599, 6607, 6619, 6637, 6653, 6659, 6661, 6673, + 6679, 6689, 6691, 6701, 6703, 6709, 6719, 6733, 6737, 6761, + 6763, 6779, 6781, 6791, 6793, 6803, 6823, 6827, 6829, 6833, + 6841, 6857, 6863, 6869, 6871, 6883, 6899, 6907, 6911, 6917, + 6947, 6949, 6959, 6961, 6967, 6971, 6977, 6983, 6991, 6997, + 7001, 7013, 7019, 7027, 7039, 7043, 7057, 7069, 7079, 7103, + 7109, 7121, 7127, 7129, 7151, 7159, 7177, 7187, 7193, 7207, + 7211, 7213, 7219, 7229, 7237, 7243, 7247, 7253, 7283, 7297, + 7307, 7309, 7321, 7331, 7333, 7349, 7351, 7369, 7393, 7411, + 7417, 7433, 7451, 7457, 7459, 7477, 7481, 7487, 7489, 7499, + 7507, 7517, 7523, 7529, 7537, 7541, 7547, 7549, 7559, 7561, + 7573, 7577, 7583, 7589, 7591, 7603, 7607, 7621, 7639, 7643, + 7649, 7669, 7673, 7681, 7687, 7691, 7699, 7703, 7717, 7723, + 7727, 7741, 7753, 7757, 7759, 7789, 7793, 7817, 7823, 7829, + 7841, 7853, 7867, 7873, 7877, 7879, 7883, 7901, 7907, 7919, + 7927, 7933, 7937, 7949, 7951, 7963, 7993, 8009, 8011, 8017, + 8039, 8053, 8059, 8069, 8081, 8087, 8089, 8093, 8101, 8111, + 8117, 8123, 8147, 8161, 8167, 8171, 8179, 8191, 8209, 8219, + 8221, 8231, 8233, 8237, 8243, 8263, 8269, 8273, 8287, 8291, + 8293, 8297, 8311, 8317, 8329, 8353, 8363, 8369, 8377, 8387, + 8389, 8419, 8423, 8429, 8431, 8443, 8447, 8461, 8467, 8501, + 8513, 8521, 8527, 8537, 8539, 8543, 8563, 8573, 8581, 8597, + 8599, 8609, 8623, 8627, 8629, 8641, 8647, 8663, 8669, 8677, + 8681, 8689, 8693, 8699, 8707, 8713, 8719, 8731, 8737, 8741, + 8747, 8753, 8761, 8779, 8783, 8803, 8807, 8819, 8821, 8831, + 8837, 8839, 8849, 8861, 8863, 8867, 8887, 8893, 8923, 8929, + 8933, 8941, 8951, 8963, 8969, 8971, 8999, 9001, 9007, 9011, + 9013, 9029, 9041, 9043, 9049, 9059, 9067, 9091, 9103, 9109, + 9127, 9133, 9137, 9151, 9157, 9161, 9173, 9181, 9187, 9199, + 9203, 9209, 9221, 9227, 9239, 9241, 9257, 9277, 9281, 9283, + 9293, 9311, 9319, 9323, 9337, 9341, 9343, 9349, 9371, 9377, + 9391, 9397, 9403, 9413, 9419, 9421, 9431, 9433, 9437, 9439, + 9461, 9463, 9467, 9473, 9479, 9491, 9497, 9511, 9521, 9533, + 9539, 9547, 9551, 9587, 9601, 9613, 9619, 9623, 9629, 9631, + 9643, 9649, 9661, 9677, 9679, 9689, 9697, 9719, 9721, 9733, + 9739, 9743, 9749, 9767, 9769, 9781, 9787, 9791, 9803, 9811, + 9817, 9829, 9833, 9839, 9851, 9857, 9859, 9871, 9883, 9887, + 9901, 9907, 9923, 9929, 9931, 9941, 9949, 9967, 9973 +}; + +/* Halton generator state. + * sequence_count = number of calls with this generator + */ +typedef struct +{ + unsigned int sequence_count; +} +reversehalton_state_t; + +static size_t +reversehalton_state_size (unsigned int dimension) +{ + return sizeof (reversehalton_state_t); +} + +static int +reversehalton_init (void *state, unsigned int dimension) +{ + reversehalton_state_t *h_state = (reversehalton_state_t *) state; + + h_state->sequence_count = 0; + + if (dimension < 1 || dimension > REVERSEHALTON_MAX_DIMENSION) + { + return GSL_EINVAL; + } + + return GSL_SUCCESS; +} + +static double +vdcorput (int x, int b) +{ + double r = 0.; + double v = 1.; + double binv = 1. / (double) b; + + while (x > 0) + { + v *= binv; + r += v * (double) ((x % b == 0) ? 0 : b - (x % b)); + x /= b; + } + return r; +} + +static int +reversehalton_get (void *state, unsigned int dimension, double *v) +{ + reversehalton_state_t *h_state = (reversehalton_state_t *) state; + unsigned int i; + + if (dimension < 1 || dimension > REVERSEHALTON_MAX_DIMENSION) + { + return GSL_EINVAL; + } + h_state->sequence_count++; + + for (i = 0; i < dimension; i++) + { + v[i] = vdcorput (h_state->sequence_count, prime_numbers[i]); + } + + return GSL_SUCCESS; +} diff --git a/gsl-2.5/qrng/reversehalton.lo b/gsl-2.5/qrng/reversehalton.lo new file mode 100644 index 00000000..57f9a6c5 --- /dev/null +++ b/gsl-2.5/qrng/reversehalton.lo @@ -0,0 +1,12 @@ +# reversehalton.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/reversehalton.o' + +# Name of the non-PIC object +non_pic_object='reversehalton.o' + diff --git a/gsl-2.5/qrng/sobol.c b/gsl-2.5/qrng/sobol.c new file mode 100644 index 00000000..51c9baae --- /dev/null +++ b/gsl-2.5/qrng/sobol.c @@ -0,0 +1,231 @@ +/* Author: G. Jungman + */ +/* Implementation for Sobol generator. + * See + * [Bratley+Fox, TOMS 14, 88 (1988)] + * [Antonov+Saleev, USSR Comput. Maths. Math. Phys. 19, 252 (1980)] + */ +#include +#include + + +/* maximum allowed space dimension */ +#define SOBOL_MAX_DIMENSION 40 + +/* bit count; assumes sizeof(int) >= 32-bit */ +#define SOBOL_BIT_COUNT 30 + +/* prototypes for generator type functions */ +static size_t sobol_state_size(unsigned int dimension); +static int sobol_init(void * state, unsigned int dimension); +static int sobol_get(void * state, unsigned int dimension, double * v); + +/* global Sobol generator type object */ +static const gsl_qrng_type sobol_type = +{ + "sobol", + SOBOL_MAX_DIMENSION, + sobol_state_size, + sobol_init, + sobol_get +}; +const gsl_qrng_type * gsl_qrng_sobol = &sobol_type; + + +/* primitive polynomials in binary encoding + */ +static const int primitive_polynomials[SOBOL_MAX_DIMENSION] = +{ + 1, 3, 7, 11, 13, 19, 25, 37, 59, 47, + 61, 55, 41, 67, 97, 91, 109, 103, 115, 131, + 193, 137, 145, 143, 241, 157, 185, 167, 229, 171, + 213, 191, 253, 203, 211, 239, 247, 285, 369, 299 +}; + +/* degrees of the primitive polynomials */ +static const int degree_table[SOBOL_MAX_DIMENSION] = +{ + 0, 1, 2, 3, 3, 4, 4, 5, 5, 5, + 5, 5, 5, 6, 6, 6, 6, 6, 6, 7, + 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 8, 8, 8 +}; + + +/* initial values for direction tables, following + * Bratley+Fox, taken from [Sobol+Levitan, preprint 1976] + */ +static const int v_init[8][SOBOL_MAX_DIMENSION] = +{ + { + 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 + }, + { + 0, 0, 1, 3, 1, 3, 1, 3, 3, 1, + 3, 1, 3, 1, 3, 1, 1, 3, 1, 3, + 1, 3, 1, 3, 3, 1, 3, 1, 3, 1, + 3, 1, 1, 3, 1, 3, 1, 3, 1, 3 + }, + { + 0, 0, 0, 7, 5, 1, 3, 3, 7, 5, + 5, 7, 7, 1, 3, 3, 7, 5, 1, 1, + 5, 3, 3, 1, 7, 5, 1, 3, 3, 7, + 5, 1, 1, 5, 7, 7, 5, 1, 3, 3 + }, + { + 0, 0, 0, 0, 0, 1, 7, 9, 13, 11, + 1, 3, 7, 9, 5, 13, 13, 11, 3, 15, + 5, 3, 15, 7, 9, 13, 9, 1, 11, 7, + 5, 15, 1, 15, 11, 5, 3, 1, 7, 9 + }, + { + 0, 0, 0, 0, 0, 0, 0, 9, 3, 27, + 15, 29, 21, 23, 19, 11, 25, 7, 13, 17, + 1, 25, 29, 3, 31, 11, 5, 23, 27, 19, + 21, 5, 1, 17, 13, 7, 15, 9, 31, 9 + }, + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 37, 33, 7, 5, 11, 39, 63, + 27, 17, 15, 23, 29, 3, 21, 13, 31, 25, + 9, 49, 33, 19, 29, 11, 19, 27, 15, 25 + }, + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, + 33, 115, 41, 79, 17, 29, 119, 75, 73, 105, + 7, 59, 65, 21, 3, 113, 61, 89, 45, 107 + }, + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 7, 23, 39 + } +}; + + +/* Sobol generator state. + * sequence_count = number of calls with this generator + * last_numerator_vec = last generated numerator vector + * last_denominator_inv = 1/denominator for last numerator vector + * v_direction = direction number table + */ +typedef struct +{ + unsigned int sequence_count; + double last_denominator_inv; + int last_numerator_vec[SOBOL_MAX_DIMENSION]; + int v_direction[SOBOL_BIT_COUNT][SOBOL_MAX_DIMENSION]; +} sobol_state_t; + +/* NOTE: I fixed the size for the preliminary implementation. + This could/should be relaxed, as an optimization. + */ + +static size_t sobol_state_size(unsigned int dimension) +{ + return sizeof(sobol_state_t); +} + + +static int sobol_init(void * state, unsigned int dimension) +{ + sobol_state_t * s_state = (sobol_state_t *) state; + unsigned int i_dim; + int j, k; + int ell; + + if(dimension < 1 || dimension > SOBOL_MAX_DIMENSION) { + return GSL_EINVAL; + } + + /* Initialize direction table in dimension 0. */ + for(k=0; kv_direction[k][0] = 1; + + /* Initialize in remaining dimensions. */ + for(i_dim=1; i_dim= 0; k--) { + includ[k] = ((p_i % 2) == 1); + p_i /= 2; + } + + /* Leading elements for dimension i come from v_init[][]. */ + for(j=0; jv_direction[j][i_dim] = v_init[j][i_dim]; + + /* Calculate remaining elements for this dimension, + * as explained in Bratley+Fox, section 2. + */ + for(j=degree_i; jv_direction[j-degree_i][i_dim]; + ell = 1; + for(k=0; kv_direction[j-k-1][i_dim]); + } + s_state->v_direction[j][i_dim] = newv; + } + } + + /* Multiply columns of v by appropriate power of 2. */ + ell = 1; + for(j=SOBOL_BIT_COUNT-1-1; j>=0; j--) { + ell *= 2; + for(i_dim=0; i_dimv_direction[j][i_dim] *= ell; + } + } + + /* 1/(common denominator of the elements in v_direction) */ + s_state->last_denominator_inv = 1.0 /(2.0 * ell); + + /* final setup */ + s_state->sequence_count = 0; + for(i_dim=0; i_dimlast_numerator_vec[i_dim] = 0; + + return GSL_SUCCESS; +} + + +static int sobol_get(void * state, unsigned int dimension, double * v) +{ + sobol_state_t * s_state = (sobol_state_t *) state; + + unsigned int i_dimension; + + /* Find the position of the least-significant zero in count. */ + int ell = 0; + int c = s_state->sequence_count; + while(1) { + ++ell; + if((c % 2) == 1) c /= 2; + else break; + } + + /* Check for exhaustion. */ + if(ell > SOBOL_BIT_COUNT) return GSL_EFAILED; /* FIXME: good return code here */ + + for(i_dimension=0; i_dimensionv_direction[ell-1][i_dimension]; + const int old_numerator_i = s_state->last_numerator_vec[i_dimension]; + const int new_numerator_i = old_numerator_i ^ direction_i; + s_state->last_numerator_vec[i_dimension] = new_numerator_i; + v[i_dimension] = new_numerator_i * s_state->last_denominator_inv; + } + + s_state->sequence_count++; + + return GSL_SUCCESS; +} diff --git a/gsl-2.5/qrng/sobol.lo b/gsl-2.5/qrng/sobol.lo new file mode 100644 index 00000000..6eeeaf08 --- /dev/null +++ b/gsl-2.5/qrng/sobol.lo @@ -0,0 +1,12 @@ +# sobol.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/sobol.o' + +# Name of the non-PIC object +non_pic_object='sobol.o' + diff --git a/gsl-2.5/qrng/test b/gsl-2.5/qrng/test new file mode 100755 index 00000000..c917cf32 Binary files /dev/null and b/gsl-2.5/qrng/test differ diff --git a/gsl-2.5/qrng/test-suite.log b/gsl-2.5/qrng/test-suite.log new file mode 100644 index 00000000..3379cb9c --- /dev/null +++ b/gsl-2.5/qrng/test-suite.log @@ -0,0 +1,14 @@ +================================== + gsl 2.5: qrng/test-suite.log +================================== + +# TOTAL: 1 +# PASS: 1 +# SKIP: 0 +# XFAIL: 0 +# FAIL: 0 +# XPASS: 0 +# ERROR: 0 + +.. contents:: :depth: 2 + diff --git a/gsl-2.5/qrng/test.c b/gsl-2.5/qrng/test.c new file mode 100644 index 00000000..c5ab7cde --- /dev/null +++ b/gsl-2.5/qrng/test.c @@ -0,0 +1,247 @@ +/* Author: G. Jungman (+modifications from O. Teytaud olivier.teytaud@inria.fr) + */ +#include +#include +#include + +#include +#include +#include + +void test_sobol(void) +{ + int status = 0; + double v[3]; + /* int i; */ + + /* test in dimension 2 */ + gsl_qrng * g = gsl_qrng_alloc(gsl_qrng_sobol, 2); + gsl_qrng_get(g, v); + gsl_qrng_get(g, v); + gsl_qrng_get(g, v); + status += ( v[0] != 0.25 || v[1] != 0.75 ); + gsl_qrng_get(g, v); + status += ( v[0] != 0.375 || v[1] != 0.375 ); + gsl_qrng_free(g); + + gsl_test (status, "Sobol d=2"); + + status = 0; + /* test in dimension 3 */ + g = gsl_qrng_alloc(gsl_qrng_sobol, 3); + gsl_qrng_get(g, v); + gsl_qrng_get(g, v); + gsl_qrng_get(g, v); + status += ( v[0] != 0.25 || v[1] != 0.75 || v[2] != 0.25 ); + gsl_qrng_get(g, v); + status += ( v[0] != 0.375 || v[1] != 0.375 || v[2] != 0.625 ); + + gsl_test (status, "Sobol d=3"); + + status = 0; + gsl_qrng_init(g); + gsl_qrng_get(g, v); + gsl_qrng_get(g, v); + gsl_qrng_get(g, v); + status += ( v[0] != 0.25 || v[1] != 0.75 || v[2] != 0.25 ); + gsl_qrng_get(g, v); + status += ( v[0] != 0.375 || v[1] != 0.375 || v[2] != 0.625 ); + gsl_qrng_free(g); + + gsl_test (status, "Sobol d=3 (reinitialized)"); +} + +void test_halton(void) +{ + int status = 0; + double v[1229]; + unsigned int i; + + /* test in dimension 1229 */ + + gsl_qrng * g = gsl_qrng_alloc(gsl_qrng_halton, 1229); + for (i=0;i<30;i++) + gsl_qrng_get(g, v); + gsl_qrng_free(g); + + gsl_test (status, "Halton d=1229"); + status = 0; + + /* test in dimension 2 */ + /*should be + * 0.5 0.333333 + * 0.25 0.666667 + * 0.75 0.111111 + * 0.125 0.444444*/ + g = gsl_qrng_alloc(gsl_qrng_halton, 2); + gsl_qrng_get(g, v); + gsl_qrng_get(g, v); + gsl_qrng_get(g, v); + gsl_test_rel (v[0], 3.0/4.0, 1e-3, "halton(2) k=2 v[0]"); + gsl_test_rel (v[1], 1.0/9.0, 1e-3, "halton(2) k=2 v[1]"); + + gsl_qrng_get(g, v); + gsl_test_rel (v[0], 1.0/8.0, 1e-3, "halton(2) k=3 v[0]"); + gsl_test_rel (v[1], 4.0/9.0, 1e-3, "halton(2) k=3 v[1]"); + + gsl_qrng_free(g); + + /* test in dimension 3 */ + g = gsl_qrng_alloc(gsl_qrng_halton, 3); + gsl_qrng_get(g, v); + gsl_qrng_get(g, v); + gsl_qrng_get(g, v); + gsl_test_rel (v[0], 0.75, 1e-3, "halton(3) k=3 v[0]"); + gsl_test_rel (v[1], 1.0/9.0, 1e-3, "halton(3) k=3 v[1]"); + gsl_test_rel (v[2], 0.6, 1e-3, "halton(3) k=3 v[2]"); + + gsl_qrng_get(g, v); + gsl_test_rel (v[0], 0.125, 1e-3, "halton(3) k=4 v[0]"); + gsl_test_rel (v[1], 4.0/9.0, 1e-3, "halton(3) k=4 v[1]"); + gsl_test_rel (v[2], 0.8, 1e-3, "halton(3) k=4 v[2]"); + + gsl_qrng_init(g); + gsl_qrng_get(g, v); + gsl_qrng_get(g, v); + gsl_qrng_get(g, v); + gsl_test_rel (v[0], 0.75, 1e-3, "halton(3) reinitialized k=3 v[0]"); + gsl_test_rel (v[1], 1.0/9.0, 1e-3, "halton(3) reinitialized k=3 v[1]"); + gsl_test_rel (v[2], 0.6, 1e-3, "halton(3) reinitialized k=3 v[2]"); + + gsl_qrng_get(g, v); + gsl_test_rel (v[0], 0.125, 1e-3, "halton(3) reinitialized k=4 v[0]"); + gsl_test_rel (v[1], 4.0/9.0, 1e-3, "halton(3) reinitialized k=4 v[1]"); + gsl_test_rel (v[2], 0.8, 1e-3, "halton(3) reinitialized k=4 v[2]"); + + gsl_qrng_free(g); +} + +void test_reversehalton(void) +{ + int status = 0; + double v[3]; + + /* test in dimension 2 */ + gsl_qrng * g = gsl_qrng_alloc(gsl_qrng_reversehalton, 2); + gsl_qrng_get(g, v); + gsl_qrng_get(g, v); + gsl_qrng_get(g, v); + /* should be + * 0.5 0.666667 + * 0.25 0.333333 + * 0.75 0.222222 + * 0.125 0.888889*/ + + gsl_test_rel (v[0], 3.0/4.0, 1e-3, "reversehalton(2) k=2 v[0]"); + gsl_test_rel (v[1], 2.0/9.0, 1e-3, "reversehalton(2) k=2 v[1]"); + + gsl_qrng_get(g, v); + gsl_test_rel (v[0], 1.0/8.0, 1e-3, "reversehalton(2) k=2 v[0]"); + gsl_test_rel (v[1], 8.0/9.0, 1e-3, "reversehalton(2) k=2 v[1]"); + + gsl_qrng_free(g); + + + /* test in dimension 3 */ + g = gsl_qrng_alloc(gsl_qrng_reversehalton, 3); + gsl_qrng_get(g, v); + gsl_qrng_get(g, v); + gsl_qrng_get(g, v); + gsl_test_rel (v[0], 0.75, 1e-3, "reversehalton(3) k=3 v[0]"); + gsl_test_rel (v[1], 2.0/9.0, 1e-3, "reversehalton(3) k=3 v[1]"); + gsl_test_rel (v[2], 0.4, 1e-3, "reversehalton(3) k=3 v[2]"); + + gsl_qrng_get(g, v); + gsl_test_rel (v[0], 0.125, 1e-3, "reversehalton(3) k=3 v[0]"); + gsl_test_rel (v[1], 8.0/9.0, 1e-3, "reversehalton(3) k=3 v[1]"); + gsl_test_rel (v[2], 0.2, 1e-3, "reversehalton(3) k=3 v[2]"); + + status = 0; + gsl_qrng_init(g); + gsl_qrng_get(g, v); + gsl_qrng_get(g, v); + gsl_qrng_get(g, v); + gsl_test_rel (v[0], 0.75, 1e-3, "reversehalton(3) reinitialized k=3 v[0]"); + gsl_test_rel (v[1], 2.0/9.0, 1e-3, "reversehalton(3) reinitialized k=3 v[1]"); + gsl_test_rel (v[2], 0.4, 1e-3, "reversehalton(3) reinitialized k=3 v[2]"); + + gsl_qrng_get(g, v); + gsl_test_rel (v[0], 0.125, 1e-3, "reversehalton(3) reinitialized k=3 v[0]"); + gsl_test_rel (v[1], 8.0/9.0, 1e-3, "reversehalton(3) reinitialized k=3 v[1]"); + gsl_test_rel (v[2], 0.2, 1e-3, "reversehalton(3) reinitialized k=3 v[2]"); + + gsl_qrng_free(g); +} + + +void test_nied2(void) +{ + int status = 0; + double v[3]; + /* int i; */ + + /* test in dimension 2 */ + gsl_qrng * g = gsl_qrng_alloc(gsl_qrng_niederreiter_2, 2); + gsl_qrng_get(g, v); + gsl_qrng_get(g, v); + gsl_qrng_get(g, v); + status += ( v[0] != 0.75 || v[1] != 0.25 ); + gsl_qrng_get(g, v); + status += ( v[0] != 0.25 || v[1] != 0.75 ); + gsl_qrng_get(g, v); + gsl_qrng_get(g, v); + gsl_qrng_get(g, v); + status += ( v[0] != 0.625 || v[1] != 0.125 ); + gsl_qrng_free(g); + + gsl_test (status, "Niederreiter d=2"); + + status = 0; + + /* test in dimension 3 */ + g = gsl_qrng_alloc(gsl_qrng_niederreiter_2, 3); + gsl_qrng_get(g, v); + gsl_qrng_get(g, v); + gsl_qrng_get(g, v); + status += ( v[0] != 0.75 || v[1] != 0.25 || v[2] != 0.3125 ); + gsl_qrng_get(g, v); + status += ( v[0] != 0.25 || v[1] != 0.75 || v[2] != 0.5625 ); + gsl_qrng_get(g, v); + gsl_qrng_get(g, v); + gsl_qrng_get(g, v); + status += ( v[0] != 0.625 || v[1] != 0.125 || v[2] != 0.6875 ); + + gsl_test (status, "Niederreiter d=3"); + + status = 0; + + gsl_qrng_init(g); + gsl_qrng_get(g, v); + gsl_qrng_get(g, v); + gsl_qrng_get(g, v); + status += ( v[0] != 0.75 || v[1] != 0.25 || v[2] != 0.3125 ); + gsl_qrng_get(g, v); + status += ( v[0] != 0.25 || v[1] != 0.75 || v[2] != 0.5625 ); + gsl_qrng_get(g, v); + gsl_qrng_get(g, v); + gsl_qrng_get(g, v); + status += ( v[0] != 0.625 || v[1] != 0.125 || v[2] != 0.6875 ); + gsl_qrng_free(g); + + + gsl_test (status, "Niederreiter d=3 (reinitialized)"); +} + + +int main() +{ + + gsl_ieee_env_setup (); + + test_sobol(); + test_halton(); + test_reversehalton(); + test_nied2(); + + exit (gsl_test_summary ()); +} diff --git a/gsl-2.5/qrng/test.log b/gsl-2.5/qrng/test.log new file mode 100644 index 00000000..65cff705 --- /dev/null +++ b/gsl-2.5/qrng/test.log @@ -0,0 +1 @@ +Completed [39/39] diff --git a/gsl-2.5/qrng/test.trs b/gsl-2.5/qrng/test.trs new file mode 100644 index 00000000..3f0f396c --- /dev/null +++ b/gsl-2.5/qrng/test.trs @@ -0,0 +1,4 @@ +:test-result: PASS +:global-test-result: PASS +:recheck: no +:copy-in-global-log: no diff --git a/gsl-2.5/randist/.deps/bernoulli.Plo b/gsl-2.5/randist/.deps/bernoulli.Plo new file mode 100644 index 00000000..feff82d5 --- /dev/null +++ b/gsl-2.5/randist/.deps/bernoulli.Plo @@ -0,0 +1,254 @@ +bernoulli.lo: bernoulli.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_rng.h /usr/include/stdlib.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_types.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_inline.h ../gsl/gsl_randist.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_complex.h \ + ../gsl/gsl_check_range.h ../gsl/gsl_vector_long_double.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_vector_complex.h \ + ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_rng.h: + +/usr/include/stdlib.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_types.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_randist.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: diff --git a/gsl-2.5/randist/.deps/beta.Plo b/gsl-2.5/randist/.deps/beta.Plo new file mode 100644 index 00000000..f0fc92d5 --- /dev/null +++ b/gsl-2.5/randist/.deps/beta.Plo @@ -0,0 +1,297 @@ +beta.lo: beta.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_math.h ../gsl/gsl_sys.h \ + ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_rng.h \ + /usr/include/stdlib.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_errno.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_randist.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_complex.h \ + ../gsl/gsl_check_range.h ../gsl/gsl_vector_long_double.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_vector_complex.h \ + ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_sf_gamma.h ../gsl/gsl_sf_result.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_rng.h: + +/usr/include/stdlib.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_randist.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_sf_gamma.h: + +../gsl/gsl_sf_result.h: diff --git a/gsl-2.5/randist/.deps/bigauss.Plo b/gsl-2.5/randist/.deps/bigauss.Plo new file mode 100644 index 00000000..2c9b3fdc --- /dev/null +++ b/gsl-2.5/randist/.deps/bigauss.Plo @@ -0,0 +1,293 @@ +bigauss.lo: bigauss.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_math.h ../gsl/gsl_sys.h \ + ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_rng.h \ + /usr/include/stdlib.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_errno.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_randist.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_complex.h \ + ../gsl/gsl_check_range.h ../gsl/gsl_vector_long_double.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_vector_complex.h \ + ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_rng.h: + +/usr/include/stdlib.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_randist.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: diff --git a/gsl-2.5/randist/.deps/binomial.Plo b/gsl-2.5/randist/.deps/binomial.Plo new file mode 100644 index 00000000..b1691fdb --- /dev/null +++ b/gsl-2.5/randist/.deps/binomial.Plo @@ -0,0 +1,261 @@ +binomial.lo: binomial.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_rng.h \ + /usr/include/stdlib.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_types.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_inline.h ../gsl/gsl_randist.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_complex.h \ + ../gsl/gsl_check_range.h ../gsl/gsl_vector_long_double.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_vector_complex.h \ + ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_sf_gamma.h ../gsl/gsl_sf_result.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_rng.h: + +/usr/include/stdlib.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_types.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_randist.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_sf_gamma.h: + +../gsl/gsl_sf_result.h: diff --git a/gsl-2.5/randist/.deps/binomial_tpe.Plo b/gsl-2.5/randist/.deps/binomial_tpe.Plo new file mode 100644 index 00000000..35d4c689 --- /dev/null +++ b/gsl-2.5/randist/.deps/binomial_tpe.Plo @@ -0,0 +1,261 @@ +binomial_tpe.lo: binomial_tpe.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_rng.h /usr/include/stdlib.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_types.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_inline.h ../gsl/gsl_randist.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_complex.h \ + ../gsl/gsl_check_range.h ../gsl/gsl_vector_long_double.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_vector_complex.h \ + ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_pow_int.h ../gsl/gsl_sf_gamma.h \ + ../gsl/gsl_sf_result.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_rng.h: + +/usr/include/stdlib.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_types.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_randist.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_sf_gamma.h: + +../gsl/gsl_sf_result.h: diff --git a/gsl-2.5/randist/.deps/cauchy.Plo b/gsl-2.5/randist/.deps/cauchy.Plo new file mode 100644 index 00000000..b16c8a8b --- /dev/null +++ b/gsl-2.5/randist/.deps/cauchy.Plo @@ -0,0 +1,293 @@ +cauchy.lo: cauchy.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_math.h ../gsl/gsl_sys.h \ + ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_rng.h \ + /usr/include/stdlib.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_errno.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_randist.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_complex.h \ + ../gsl/gsl_check_range.h ../gsl/gsl_vector_long_double.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_vector_complex.h \ + ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_rng.h: + +/usr/include/stdlib.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_randist.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: diff --git a/gsl-2.5/randist/.deps/chisq.Plo b/gsl-2.5/randist/.deps/chisq.Plo new file mode 100644 index 00000000..afbf50ae --- /dev/null +++ b/gsl-2.5/randist/.deps/chisq.Plo @@ -0,0 +1,259 @@ +chisq.lo: chisq.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sf_gamma.h \ + ../gsl/gsl_sf_result.h ../gsl/gsl_rng.h /usr/include/stdlib.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_types.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_inline.h ../gsl/gsl_randist.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_complex.h \ + ../gsl/gsl_check_range.h ../gsl/gsl_vector_long_double.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_vector_complex.h \ + ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sf_gamma.h: + +../gsl/gsl_sf_result.h: + +../gsl/gsl_rng.h: + +/usr/include/stdlib.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_types.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_randist.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: diff --git a/gsl-2.5/randist/.deps/dirichlet.Plo b/gsl-2.5/randist/.deps/dirichlet.Plo new file mode 100644 index 00000000..0709bd75 --- /dev/null +++ b/gsl-2.5/randist/.deps/dirichlet.Plo @@ -0,0 +1,297 @@ +dirichlet.lo: dirichlet.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_math.h ../gsl/gsl_sys.h \ + ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_rng.h \ + /usr/include/stdlib.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_errno.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_randist.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_complex.h \ + ../gsl/gsl_check_range.h ../gsl/gsl_vector_long_double.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_vector_complex.h \ + ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_sf_gamma.h ../gsl/gsl_sf_result.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_rng.h: + +/usr/include/stdlib.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_randist.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_sf_gamma.h: + +../gsl/gsl_sf_result.h: diff --git a/gsl-2.5/randist/.deps/discrete.Plo b/gsl-2.5/randist/.deps/discrete.Plo new file mode 100644 index 00000000..ddbfb5a1 --- /dev/null +++ b/gsl-2.5/randist/.deps/discrete.Plo @@ -0,0 +1,255 @@ +discrete.lo: discrete.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdio.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_errno.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_types.h ../gsl/gsl_rng.h ../gsl/gsl_inline.h \ + ../gsl/gsl_randist.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_complex.h \ + ../gsl/gsl_check_range.h ../gsl/gsl_vector_long_double.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_vector_complex.h \ + ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_rng.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_randist.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: diff --git a/gsl-2.5/randist/.deps/erlang.Plo b/gsl-2.5/randist/.deps/erlang.Plo new file mode 100644 index 00000000..911423d0 --- /dev/null +++ b/gsl-2.5/randist/.deps/erlang.Plo @@ -0,0 +1,259 @@ +erlang.lo: erlang.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sf_gamma.h \ + ../gsl/gsl_sf_result.h ../gsl/gsl_rng.h /usr/include/stdlib.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_types.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_inline.h ../gsl/gsl_randist.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_complex.h \ + ../gsl/gsl_check_range.h ../gsl/gsl_vector_long_double.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_vector_complex.h \ + ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sf_gamma.h: + +../gsl/gsl_sf_result.h: + +../gsl/gsl_rng.h: + +/usr/include/stdlib.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_types.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_randist.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: diff --git a/gsl-2.5/randist/.deps/exponential.Plo b/gsl-2.5/randist/.deps/exponential.Plo new file mode 100644 index 00000000..ad19a52e --- /dev/null +++ b/gsl-2.5/randist/.deps/exponential.Plo @@ -0,0 +1,293 @@ +exponential.lo: exponential.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_math.h ../gsl/gsl_sys.h \ + ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_rng.h \ + /usr/include/stdlib.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_errno.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_randist.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_complex.h \ + ../gsl/gsl_check_range.h ../gsl/gsl_vector_long_double.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_vector_complex.h \ + ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_rng.h: + +/usr/include/stdlib.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_randist.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: diff --git a/gsl-2.5/randist/.deps/exppow.Plo b/gsl-2.5/randist/.deps/exppow.Plo new file mode 100644 index 00000000..f74a063a --- /dev/null +++ b/gsl-2.5/randist/.deps/exppow.Plo @@ -0,0 +1,297 @@ +exppow.lo: exppow.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_math.h ../gsl/gsl_sys.h \ + ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_sf_gamma.h \ + ../gsl/gsl_sf_result.h ../gsl/gsl_rng.h /usr/include/stdlib.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_errno.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_randist.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_complex.h \ + ../gsl/gsl_check_range.h ../gsl/gsl_vector_long_double.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_vector_complex.h \ + ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_sf_gamma.h: + +../gsl/gsl_sf_result.h: + +../gsl/gsl_rng.h: + +/usr/include/stdlib.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_randist.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: diff --git a/gsl-2.5/randist/.deps/fdist.Plo b/gsl-2.5/randist/.deps/fdist.Plo new file mode 100644 index 00000000..6faa539f --- /dev/null +++ b/gsl-2.5/randist/.deps/fdist.Plo @@ -0,0 +1,259 @@ +fdist.lo: fdist.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sf_gamma.h \ + ../gsl/gsl_sf_result.h ../gsl/gsl_rng.h /usr/include/stdlib.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_types.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_inline.h ../gsl/gsl_randist.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_complex.h \ + ../gsl/gsl_check_range.h ../gsl/gsl_vector_long_double.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_vector_complex.h \ + ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sf_gamma.h: + +../gsl/gsl_sf_result.h: + +../gsl/gsl_rng.h: + +/usr/include/stdlib.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_types.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_randist.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: diff --git a/gsl-2.5/randist/.deps/flat.Plo b/gsl-2.5/randist/.deps/flat.Plo new file mode 100644 index 00000000..f3371978 --- /dev/null +++ b/gsl-2.5/randist/.deps/flat.Plo @@ -0,0 +1,254 @@ +flat.lo: flat.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_rng.h /usr/include/stdlib.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_types.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_inline.h ../gsl/gsl_randist.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_complex.h \ + ../gsl/gsl_check_range.h ../gsl/gsl_vector_long_double.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_vector_complex.h \ + ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_rng.h: + +/usr/include/stdlib.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_types.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_randist.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: diff --git a/gsl-2.5/randist/.deps/gamma.Plo b/gsl-2.5/randist/.deps/gamma.Plo new file mode 100644 index 00000000..88fda9fc --- /dev/null +++ b/gsl-2.5/randist/.deps/gamma.Plo @@ -0,0 +1,297 @@ +gamma.lo: gamma.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_math.h ../gsl/gsl_sys.h \ + ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_sf_gamma.h \ + ../gsl/gsl_sf_result.h ../gsl/gsl_rng.h /usr/include/stdlib.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_errno.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_randist.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_complex.h \ + ../gsl/gsl_check_range.h ../gsl/gsl_vector_long_double.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_vector_complex.h \ + ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_sf_gamma.h: + +../gsl/gsl_sf_result.h: + +../gsl/gsl_rng.h: + +/usr/include/stdlib.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_randist.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: diff --git a/gsl-2.5/randist/.deps/gauss.Plo b/gsl-2.5/randist/.deps/gauss.Plo new file mode 100644 index 00000000..213e5c6a --- /dev/null +++ b/gsl-2.5/randist/.deps/gauss.Plo @@ -0,0 +1,293 @@ +gauss.lo: gauss.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_math.h ../gsl/gsl_sys.h \ + ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_rng.h \ + /usr/include/stdlib.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_errno.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_randist.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_complex.h \ + ../gsl/gsl_check_range.h ../gsl/gsl_vector_long_double.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_vector_complex.h \ + ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_rng.h: + +/usr/include/stdlib.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_randist.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: diff --git a/gsl-2.5/randist/.deps/gausstail.Plo b/gsl-2.5/randist/.deps/gausstail.Plo new file mode 100644 index 00000000..9925168a --- /dev/null +++ b/gsl-2.5/randist/.deps/gausstail.Plo @@ -0,0 +1,297 @@ +gausstail.lo: gausstail.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_math.h ../gsl/gsl_sys.h \ + ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_rng.h \ + /usr/include/stdlib.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_errno.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_randist.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_complex.h \ + ../gsl/gsl_check_range.h ../gsl/gsl_vector_long_double.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_vector_complex.h \ + ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_sf_erf.h ../gsl/gsl_sf_result.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_rng.h: + +/usr/include/stdlib.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_randist.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_sf_erf.h: + +../gsl/gsl_sf_result.h: diff --git a/gsl-2.5/randist/.deps/gausszig.Plo b/gsl-2.5/randist/.deps/gausszig.Plo new file mode 100644 index 00000000..1bce78f4 --- /dev/null +++ b/gsl-2.5/randist/.deps/gausszig.Plo @@ -0,0 +1,293 @@ +gausszig.lo: gausszig.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_math.h ../gsl/gsl_sys.h \ + ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_rng.h \ + /usr/include/stdlib.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_errno.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_randist.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_complex.h \ + ../gsl/gsl_check_range.h ../gsl/gsl_vector_long_double.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_vector_complex.h \ + ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_rng.h: + +/usr/include/stdlib.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_randist.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: diff --git a/gsl-2.5/randist/.deps/geometric.Plo b/gsl-2.5/randist/.deps/geometric.Plo new file mode 100644 index 00000000..0b47e8dd --- /dev/null +++ b/gsl-2.5/randist/.deps/geometric.Plo @@ -0,0 +1,254 @@ +geometric.lo: geometric.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_rng.h /usr/include/stdlib.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_types.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_inline.h ../gsl/gsl_randist.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_complex.h \ + ../gsl/gsl_check_range.h ../gsl/gsl_vector_long_double.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_vector_complex.h \ + ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_rng.h: + +/usr/include/stdlib.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_types.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_randist.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: diff --git a/gsl-2.5/randist/.deps/gumbel.Plo b/gsl-2.5/randist/.deps/gumbel.Plo new file mode 100644 index 00000000..0cba200b --- /dev/null +++ b/gsl-2.5/randist/.deps/gumbel.Plo @@ -0,0 +1,254 @@ +gumbel.lo: gumbel.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_rng.h /usr/include/stdlib.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_types.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_inline.h ../gsl/gsl_randist.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_complex.h \ + ../gsl/gsl_check_range.h ../gsl/gsl_vector_long_double.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_vector_complex.h \ + ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_rng.h: + +/usr/include/stdlib.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_types.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_randist.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: diff --git a/gsl-2.5/randist/.deps/hyperg.Plo b/gsl-2.5/randist/.deps/hyperg.Plo new file mode 100644 index 00000000..05da088c --- /dev/null +++ b/gsl-2.5/randist/.deps/hyperg.Plo @@ -0,0 +1,258 @@ +hyperg.lo: hyperg.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_rng.h /usr/include/stdlib.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_types.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_inline.h ../gsl/gsl_randist.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_complex.h \ + ../gsl/gsl_check_range.h ../gsl/gsl_vector_long_double.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_vector_complex.h \ + ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_sf_gamma.h ../gsl/gsl_sf_result.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_rng.h: + +/usr/include/stdlib.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_types.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_randist.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_sf_gamma.h: + +../gsl/gsl_sf_result.h: diff --git a/gsl-2.5/randist/.deps/landau.Plo b/gsl-2.5/randist/.deps/landau.Plo new file mode 100644 index 00000000..d563d355 --- /dev/null +++ b/gsl-2.5/randist/.deps/landau.Plo @@ -0,0 +1,254 @@ +landau.lo: landau.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_rng.h /usr/include/stdlib.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_types.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_inline.h ../gsl/gsl_randist.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_complex.h \ + ../gsl/gsl_check_range.h ../gsl/gsl_vector_long_double.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_vector_complex.h \ + ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_rng.h: + +/usr/include/stdlib.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_types.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_randist.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: diff --git a/gsl-2.5/randist/.deps/laplace.Plo b/gsl-2.5/randist/.deps/laplace.Plo new file mode 100644 index 00000000..40478dc4 --- /dev/null +++ b/gsl-2.5/randist/.deps/laplace.Plo @@ -0,0 +1,254 @@ +laplace.lo: laplace.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_rng.h /usr/include/stdlib.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_types.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_inline.h ../gsl/gsl_randist.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_complex.h \ + ../gsl/gsl_check_range.h ../gsl/gsl_vector_long_double.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_vector_complex.h \ + ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_rng.h: + +/usr/include/stdlib.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_types.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_randist.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: diff --git a/gsl-2.5/randist/.deps/levy.Plo b/gsl-2.5/randist/.deps/levy.Plo new file mode 100644 index 00000000..d6496184 --- /dev/null +++ b/gsl-2.5/randist/.deps/levy.Plo @@ -0,0 +1,293 @@ +levy.lo: levy.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_math.h ../gsl/gsl_sys.h \ + ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_rng.h \ + /usr/include/stdlib.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_errno.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_randist.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_complex.h \ + ../gsl/gsl_check_range.h ../gsl/gsl_vector_long_double.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_vector_complex.h \ + ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_rng.h: + +/usr/include/stdlib.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_randist.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: diff --git a/gsl-2.5/randist/.deps/logarithmic.Plo b/gsl-2.5/randist/.deps/logarithmic.Plo new file mode 100644 index 00000000..3eebcdc2 --- /dev/null +++ b/gsl-2.5/randist/.deps/logarithmic.Plo @@ -0,0 +1,254 @@ +logarithmic.lo: logarithmic.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_rng.h /usr/include/stdlib.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_types.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_inline.h ../gsl/gsl_randist.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_complex.h \ + ../gsl/gsl_check_range.h ../gsl/gsl_vector_long_double.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_vector_complex.h \ + ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_rng.h: + +/usr/include/stdlib.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_types.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_randist.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: diff --git a/gsl-2.5/randist/.deps/logistic.Plo b/gsl-2.5/randist/.deps/logistic.Plo new file mode 100644 index 00000000..8c496c27 --- /dev/null +++ b/gsl-2.5/randist/.deps/logistic.Plo @@ -0,0 +1,254 @@ +logistic.lo: logistic.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_rng.h /usr/include/stdlib.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_types.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_inline.h ../gsl/gsl_randist.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_complex.h \ + ../gsl/gsl_check_range.h ../gsl/gsl_vector_long_double.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_vector_complex.h \ + ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_rng.h: + +/usr/include/stdlib.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_types.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_randist.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: diff --git a/gsl-2.5/randist/.deps/lognormal.Plo b/gsl-2.5/randist/.deps/lognormal.Plo new file mode 100644 index 00000000..243b4566 --- /dev/null +++ b/gsl-2.5/randist/.deps/lognormal.Plo @@ -0,0 +1,293 @@ +lognormal.lo: lognormal.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_math.h ../gsl/gsl_sys.h \ + ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_rng.h \ + /usr/include/stdlib.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_errno.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_randist.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_complex.h \ + ../gsl/gsl_check_range.h ../gsl/gsl_vector_long_double.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_vector_complex.h \ + ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_rng.h: + +/usr/include/stdlib.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_randist.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: diff --git a/gsl-2.5/randist/.deps/multinomial.Plo b/gsl-2.5/randist/.deps/multinomial.Plo new file mode 100644 index 00000000..7d794d59 --- /dev/null +++ b/gsl-2.5/randist/.deps/multinomial.Plo @@ -0,0 +1,258 @@ +multinomial.lo: multinomial.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_rng.h /usr/include/stdlib.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_types.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_inline.h ../gsl/gsl_randist.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_complex.h \ + ../gsl/gsl_check_range.h ../gsl/gsl_vector_long_double.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_vector_complex.h \ + ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_sf_gamma.h ../gsl/gsl_sf_result.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_rng.h: + +/usr/include/stdlib.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_types.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_randist.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_sf_gamma.h: + +../gsl/gsl_sf_result.h: diff --git a/gsl-2.5/randist/.deps/mvgauss.Plo b/gsl-2.5/randist/.deps/mvgauss.Plo new file mode 100644 index 00000000..b4d73c99 --- /dev/null +++ b/gsl-2.5/randist/.deps/mvgauss.Plo @@ -0,0 +1,337 @@ +mvgauss.lo: mvgauss.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_math.h ../gsl/gsl_sys.h \ + ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_rng.h \ + /usr/include/stdlib.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_errno.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_randist.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_complex.h \ + ../gsl/gsl_check_range.h ../gsl/gsl_vector_long_double.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_vector_complex.h \ + ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_blas.h ../gsl/gsl_blas_types.h \ + ../gsl/gsl_cblas.h ../gsl/gsl_linalg.h ../gsl/gsl_mode.h \ + ../gsl/gsl_permutation.h ../gsl/gsl_statistics.h \ + ../gsl/gsl_statistics_long_double.h ../gsl/gsl_statistics_double.h \ + ../gsl/gsl_statistics_float.h ../gsl/gsl_statistics_ulong.h \ + ../gsl/gsl_statistics_long.h ../gsl/gsl_statistics_uint.h \ + ../gsl/gsl_statistics_int.h ../gsl/gsl_statistics_ushort.h \ + ../gsl/gsl_statistics_short.h ../gsl/gsl_statistics_uchar.h \ + ../gsl/gsl_statistics_char.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_rng.h: + +/usr/include/stdlib.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_randist.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_blas.h: + +../gsl/gsl_blas_types.h: + +../gsl/gsl_cblas.h: + +../gsl/gsl_linalg.h: + +../gsl/gsl_mode.h: + +../gsl/gsl_permutation.h: + +../gsl/gsl_statistics.h: + +../gsl/gsl_statistics_long_double.h: + +../gsl/gsl_statistics_double.h: + +../gsl/gsl_statistics_float.h: + +../gsl/gsl_statistics_ulong.h: + +../gsl/gsl_statistics_long.h: + +../gsl/gsl_statistics_uint.h: + +../gsl/gsl_statistics_int.h: + +../gsl/gsl_statistics_ushort.h: + +../gsl/gsl_statistics_short.h: + +../gsl/gsl_statistics_uchar.h: + +../gsl/gsl_statistics_char.h: diff --git a/gsl-2.5/randist/.deps/nbinomial.Plo b/gsl-2.5/randist/.deps/nbinomial.Plo new file mode 100644 index 00000000..a56feb20 --- /dev/null +++ b/gsl-2.5/randist/.deps/nbinomial.Plo @@ -0,0 +1,261 @@ +nbinomial.lo: nbinomial.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_rng.h /usr/include/stdlib.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_types.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_inline.h ../gsl/gsl_randist.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_complex.h \ + ../gsl/gsl_check_range.h ../gsl/gsl_vector_long_double.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_vector_complex.h \ + ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_sf_gamma.h ../gsl/gsl_sf_result.h \ + ../gsl/gsl_sys.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_rng.h: + +/usr/include/stdlib.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_types.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_randist.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_sf_gamma.h: + +../gsl/gsl_sf_result.h: + +../gsl/gsl_sys.h: diff --git a/gsl-2.5/randist/.deps/pareto.Plo b/gsl-2.5/randist/.deps/pareto.Plo new file mode 100644 index 00000000..3946b1c6 --- /dev/null +++ b/gsl-2.5/randist/.deps/pareto.Plo @@ -0,0 +1,254 @@ +pareto.lo: pareto.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_rng.h /usr/include/stdlib.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_types.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_inline.h ../gsl/gsl_randist.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_complex.h \ + ../gsl/gsl_check_range.h ../gsl/gsl_vector_long_double.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_vector_complex.h \ + ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_rng.h: + +/usr/include/stdlib.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_types.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_randist.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: diff --git a/gsl-2.5/randist/.deps/pascal.Plo b/gsl-2.5/randist/.deps/pascal.Plo new file mode 100644 index 00000000..cfd4dc84 --- /dev/null +++ b/gsl-2.5/randist/.deps/pascal.Plo @@ -0,0 +1,254 @@ +pascal.lo: pascal.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_rng.h /usr/include/stdlib.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_types.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_inline.h ../gsl/gsl_randist.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_complex.h \ + ../gsl/gsl_check_range.h ../gsl/gsl_vector_long_double.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_vector_complex.h \ + ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_rng.h: + +/usr/include/stdlib.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_types.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_randist.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: diff --git a/gsl-2.5/randist/.deps/poisson.Plo b/gsl-2.5/randist/.deps/poisson.Plo new file mode 100644 index 00000000..ae39cf75 --- /dev/null +++ b/gsl-2.5/randist/.deps/poisson.Plo @@ -0,0 +1,259 @@ +poisson.lo: poisson.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sf_gamma.h \ + ../gsl/gsl_sf_result.h ../gsl/gsl_rng.h /usr/include/stdlib.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_types.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_inline.h ../gsl/gsl_randist.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_complex.h \ + ../gsl/gsl_check_range.h ../gsl/gsl_vector_long_double.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_vector_complex.h \ + ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sf_gamma.h: + +../gsl/gsl_sf_result.h: + +../gsl/gsl_rng.h: + +/usr/include/stdlib.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_types.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_randist.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: diff --git a/gsl-2.5/randist/.deps/rayleigh.Plo b/gsl-2.5/randist/.deps/rayleigh.Plo new file mode 100644 index 00000000..1868acc0 --- /dev/null +++ b/gsl-2.5/randist/.deps/rayleigh.Plo @@ -0,0 +1,254 @@ +rayleigh.lo: rayleigh.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_rng.h /usr/include/stdlib.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_types.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_inline.h ../gsl/gsl_randist.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_complex.h \ + ../gsl/gsl_check_range.h ../gsl/gsl_vector_long_double.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_vector_complex.h \ + ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_rng.h: + +/usr/include/stdlib.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_types.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_randist.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: diff --git a/gsl-2.5/randist/.deps/shuffle.Plo b/gsl-2.5/randist/.deps/shuffle.Plo new file mode 100644 index 00000000..203740c5 --- /dev/null +++ b/gsl-2.5/randist/.deps/shuffle.Plo @@ -0,0 +1,255 @@ +shuffle.lo: shuffle.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_rng.h ../gsl/gsl_types.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_inline.h ../gsl/gsl_randist.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_complex.h \ + ../gsl/gsl_check_range.h ../gsl/gsl_vector_long_double.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_vector_complex.h \ + ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_rng.h: + +../gsl/gsl_types.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_randist.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: diff --git a/gsl-2.5/randist/.deps/sphere.Plo b/gsl-2.5/randist/.deps/sphere.Plo new file mode 100644 index 00000000..58a0108c --- /dev/null +++ b/gsl-2.5/randist/.deps/sphere.Plo @@ -0,0 +1,254 @@ +sphere.lo: sphere.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_rng.h /usr/include/stdlib.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_types.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_inline.h ../gsl/gsl_randist.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_complex.h \ + ../gsl/gsl_check_range.h ../gsl/gsl_vector_long_double.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_vector_complex.h \ + ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_rng.h: + +/usr/include/stdlib.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_types.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_randist.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: diff --git a/gsl-2.5/randist/.deps/tdist.Plo b/gsl-2.5/randist/.deps/tdist.Plo new file mode 100644 index 00000000..a7d85c41 --- /dev/null +++ b/gsl-2.5/randist/.deps/tdist.Plo @@ -0,0 +1,297 @@ +tdist.lo: tdist.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_math.h ../gsl/gsl_sys.h \ + ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_sf_gamma.h \ + ../gsl/gsl_sf_result.h ../gsl/gsl_rng.h /usr/include/stdlib.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_errno.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_randist.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_complex.h \ + ../gsl/gsl_check_range.h ../gsl/gsl_vector_long_double.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_vector_complex.h \ + ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_sf_gamma.h: + +../gsl/gsl_sf_result.h: + +../gsl/gsl_rng.h: + +/usr/include/stdlib.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_randist.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: diff --git a/gsl-2.5/randist/.deps/test.Po b/gsl-2.5/randist/.deps/test.Po new file mode 100644 index 00000000..bf8443fa --- /dev/null +++ b/gsl-2.5/randist/.deps/test.Po @@ -0,0 +1,347 @@ +test.o: test.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdio.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_math.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_randist.h \ + ../gsl/gsl_rng.h ../gsl/gsl_errno.h /usr/include/errno.h \ + /usr/include/bits/errno.h /usr/include/linux/errno.h \ + /usr/include/asm/errno.h /usr/include/asm-generic/errno.h \ + /usr/include/asm-generic/errno-base.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_complex.h \ + ../gsl/gsl_check_range.h ../gsl/gsl_vector_long_double.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_vector_complex.h \ + ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_test.h ../gsl/gsl_ieee_utils.h \ + ../gsl/gsl_integration.h ../gsl/gsl_blas.h ../gsl/gsl_blas_types.h \ + ../gsl/gsl_cblas.h ../gsl/gsl_linalg.h ../gsl/gsl_mode.h \ + ../gsl/gsl_permutation.h ../gsl/gsl_cdf.h ../gsl/gsl_statistics.h \ + ../gsl/gsl_statistics_long_double.h ../gsl/gsl_statistics_double.h \ + ../gsl/gsl_statistics_float.h ../gsl/gsl_statistics_ulong.h \ + ../gsl/gsl_statistics_long.h ../gsl/gsl_statistics_uint.h \ + ../gsl/gsl_statistics_int.h ../gsl/gsl_statistics_ushort.h \ + ../gsl/gsl_statistics_short.h ../gsl/gsl_statistics_uchar.h \ + ../gsl/gsl_statistics_char.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_randist.h: + +../gsl/gsl_rng.h: + +../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_test.h: + +../gsl/gsl_ieee_utils.h: + +../gsl/gsl_integration.h: + +../gsl/gsl_blas.h: + +../gsl/gsl_blas_types.h: + +../gsl/gsl_cblas.h: + +../gsl/gsl_linalg.h: + +../gsl/gsl_mode.h: + +../gsl/gsl_permutation.h: + +../gsl/gsl_cdf.h: + +../gsl/gsl_statistics.h: + +../gsl/gsl_statistics_long_double.h: + +../gsl/gsl_statistics_double.h: + +../gsl/gsl_statistics_float.h: + +../gsl/gsl_statistics_ulong.h: + +../gsl/gsl_statistics_long.h: + +../gsl/gsl_statistics_uint.h: + +../gsl/gsl_statistics_int.h: + +../gsl/gsl_statistics_ushort.h: + +../gsl/gsl_statistics_short.h: + +../gsl/gsl_statistics_uchar.h: + +../gsl/gsl_statistics_char.h: diff --git a/gsl-2.5/randist/.deps/weibull.Plo b/gsl-2.5/randist/.deps/weibull.Plo new file mode 100644 index 00000000..23675345 --- /dev/null +++ b/gsl-2.5/randist/.deps/weibull.Plo @@ -0,0 +1,254 @@ +weibull.lo: weibull.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_rng.h /usr/include/stdlib.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_types.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_inline.h ../gsl/gsl_randist.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_complex.h \ + ../gsl/gsl_check_range.h ../gsl/gsl_vector_long_double.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_vector_complex.h \ + ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_rng.h: + +/usr/include/stdlib.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_types.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_randist.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: diff --git a/gsl-2.5/randist/.deps/wishart.Plo b/gsl-2.5/randist/.deps/wishart.Plo new file mode 100644 index 00000000..89c6c3b1 --- /dev/null +++ b/gsl-2.5/randist/.deps/wishart.Plo @@ -0,0 +1,311 @@ +wishart.lo: wishart.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_math.h ../gsl/gsl_sys.h \ + ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_rng.h \ + /usr/include/stdlib.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_errno.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_randist.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_complex.h \ + ../gsl/gsl_check_range.h ../gsl/gsl_vector_long_double.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_vector_complex.h \ + ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_blas.h ../gsl/gsl_blas_types.h \ + ../gsl/gsl_cblas.h ../gsl/gsl_linalg.h ../gsl/gsl_mode.h \ + ../gsl/gsl_permutation.h ../gsl/gsl_sf_gamma.h ../gsl/gsl_sf_result.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_rng.h: + +/usr/include/stdlib.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_randist.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_blas.h: + +../gsl/gsl_blas_types.h: + +../gsl/gsl_cblas.h: + +../gsl/gsl_linalg.h: + +../gsl/gsl_mode.h: + +../gsl/gsl_permutation.h: + +../gsl/gsl_sf_gamma.h: + +../gsl/gsl_sf_result.h: diff --git a/gsl-2.5/randist/.libs/libgslrandist.la b/gsl-2.5/randist/.libs/libgslrandist.la new file mode 120000 index 00000000..4fa6c77c --- /dev/null +++ b/gsl-2.5/randist/.libs/libgslrandist.la @@ -0,0 +1 @@ +../libgslrandist.la \ No newline at end of file diff --git a/gsl-2.5/randist/.libs/lt-test b/gsl-2.5/randist/.libs/lt-test new file mode 100755 index 00000000..1612bb4e Binary files /dev/null and b/gsl-2.5/randist/.libs/lt-test differ diff --git a/gsl-2.5/randist/.libs/test b/gsl-2.5/randist/.libs/test new file mode 100755 index 00000000..350ec40e Binary files /dev/null and b/gsl-2.5/randist/.libs/test differ diff --git a/gsl-2.5/randist/ChangeLog b/gsl-2.5/randist/ChangeLog new file mode 100644 index 00000000..facc4974 --- /dev/null +++ b/gsl-2.5/randist/ChangeLog @@ -0,0 +1,524 @@ +2012-09-10 Rhys Ulerich + + * nbinomial.c Add include for gsl_sys.h to fix MSVC. + Thanks to Brian Gladman for the suggestion. + +2011-06-05 Brian Gough + + * nbinomial.c (gsl_ran_negative_binomial_pdf): avoid overflow in + exp + +2010-12-14 Brian Gough + + * gamma.c (gamma_frac): avoid potential division by zero, handle + a=0 as a special case + +2010-11-20 Brian Gough + + * chisq.c (gsl_ran_chisq_pdf): handle x=0 as special case + (x=0, nu=2 is also special) + +2010-10-12 Brian Gough + + * test.c (test_binomial_max): added a test case for n larger than + maxint + +2010-07-21 Brian Gough + + * beta.c (gsl_ran_beta_pdf): avoid overflow for x==0 || x==1 and + a>1,b>1 + +2010-03-01 Brian Gough + + * test.c (testPDF): extend the test run if a sample fails on the + first pass. + +2010-02-24 Brian Gough + + * fdist.c (gsl_ran_fdist_pdf): compute log of pdf to avoid + overflow/underflow. + +2009-07-10 Brian Gough + + * exponential.c (gsl_ran_exponential): use log(1-u) to include 0 + in the range of possible outputs + +2009-07-09 Brian Gough + + * discrete.c (gsl_ran_discrete_free): handle NULL argument in free + +2009-05-16 Brian Gough + + * discrete.c (push_stack): replace abort() with an error return + value + (pop_stack): replace abort() with GSL_ERROR + (gsl_ran_discrete_preproc): use g->A as a temporary array to store + the results of the test E[k] + + * test.c (test_gamma_vlarge): added test for a >= UINT_MAX. + + * gamma.c (gsl_ran_gamma_knuth): handle the case a >= UINT_MAX. + +2008-07-03 Brian Gough + + * Makefile.am (INCLUDES): use top_srcdir instead of top_builddir + +2008-02-09 Brian Gough + + * gausszig.c (gsl_ran_gaussian_ziggurat): handle different + generator ranges explicitly + +2007-09-20 Brian Gough + + * multinomial.c (gsl_ran_multinomial_lnpdf): Handle case where + n[k]==0 and p[k]==0 + +2007-08-20 Brian Gough + + * test.c (integrate): perform the integration of the pdf with the + gsl_integration functions for accuracy (needed for dirichlet + distribution) + + * dirichlet.c (ran_dirichlet_small): handle underflow for small + alpha[] values + +2007-02-20 Brian Gough + + * gamma.c (gsl_ran_gamma): avoid an unnecessary function call to + gsl_ran_gamma_mt, since that maps back to gsl_ran_gamma now + +2007-02-14 Brian Gough + + * test.c (testPDF): reduce the test sensitivity to avoid failures + caused by weaknesses in the underlying rng + +2007-01-26 Brian Gough + + * gamma.c (gsl_ran_gamma): the Marsaglia Tsang method is now the + default + (gsl_ran_gamma_knuth): new function name, preserving the original + gsl_ran_gamma + +2006-08-30 Brian Gough + + * discrete.c (gsl_ran_discrete_preproc): use GSL_ENOMEM instead of + ENOMEM + +2006-04-18 Brian Gough + + * gausszig.c (gsl_ran_gaussian_ziggurat): fix prototype const + +2006-03-26 Brian Gough + + * multinomial.c (gsl_ran_multinomial_lnpdf): use gsl_sf_lnfact + instead of gsl_sf_lngamma for an integer argument + +2006-03-17 Brian Gough + + * binomial_tpe.c (gsl_ran_binomial): cast return values to + unsigned + +2006-02-27 Brian Gough + + * beta.c (gsl_ran_beta_pdf): work with logs avoid + underflow/overflow + +2006-02-19 Brian Gough + + * gauss.c (gsl_ran_gaussian): reject case where x=-1 || y=-1 + for true symmetry + (gsl_ran_gaussian_ratio_method): add Leva bounds + + * exppow.c (gsl_ran_exppow): added faster rejection methods + +2006-02-01 Brian Gough + + * gausszig.c: added ziggurat gaussian (Jochen Voss) + +2006-01-20 Brian Gough + + * binomial.c (gsl_ran_binomial_pdf): handle the cases p=0 and p=1 + (gsl_ran_binomial_pdf): use log1p to calculate more accurately + near k=0,p=0 + +2005-08-31 Brian Gough + + * test.c (main): free allocated memory before exit + +2005-08-22 Brian Gough + + * binomial_tpe.c (gsl_ran_binomial): switch to the TPE algorithm + as the default + + * binomial.c (gsl_ran_binomial_knuth): rename the original + binomial function to ..._knuth + +2004-05-30 Brian Gough + + * landau.c (gsl_ran_landau): fix potential array bounds overflow + by extending array. + +2004-04-22 Brian Gough + + * sphere.c (gsl_ran_dir_3d): removed unnecessary check for s==0.0 + +2003-07-25 Brian Gough + + * dirichlet.c: include gsl_sf_gamma.h instead of gsl_sf.h + +2003-07-24 Brian Gough + + * binomial_tpe.c (gsl_ran_binomial_tpe): convert to double to + avoid possible signed/unsigned problems in comparison (ix > n) + (Stirling): removed spurious trailing ; + +2003-05-14 Brian Gough + + * binomial_tpe.c: fast binomial algorithm using TPE method + + * test.c: added the tests for the fast Binomial TPE routine + +2003-02-09 Brian Gough + + * discrete.c (gsl_ran_discrete_preproc): fixed bug reported by + ahoward + +2003-01-25 Brian Gough + + * chisq.c: corrected comments + +2002-12-10 Brian Gough + + * multinomial.c (gsl_ran_multinomial): added multinomial + distribution + + * dirichlet.c (gsl_ran_dirichlet_lnpdf): added logpdf function for + accuracy + +Tue Aug 27 19:08:33 2002 Brian Gough + + * dirichlet.c: added dirichlet distribution + +Sat Aug 18 22:21:07 2001 Brian Gough + + * gsl-randist.c: moved to top-level directory + +Wed Jul 18 12:57:55 2001 Brian Gough + + * landau.c: added Landau distribution from Dave Morrison + +Sat Jun 23 12:30:38 2001 Brian Gough + + * gausstail.c (gsl_ran_gaussian_tail): allow negative values for + the tail cutoff parameter. + +Mon May 21 12:17:07 2001 Brian Gough + + * shuffle.c (gsl_ran_choose): removed void * return value + (gsl_ran_sample): removed void * return value + +Tue Apr 24 17:10:47 2001 Brian Gough + + * bernoulli.c (gsl_ran_bernoulli_pdf): removed unnecessary + reference to gsl_sf.h + +Mon Apr 23 10:25:44 2001 Brian Gough + + * changed calls to old specfunc _impl functions to use new error + handling conventions + +Tue Apr 17 19:57:59 2001 Brian Gough + + * weibull.c (gsl_ran_weibull): changed parameter mu to a, since it + is not the mean + (gsl_ran_weibull_pdf): changed parameter mu to a, since it + is not the mean + + * logistic.c (gsl_ran_logistic): changed parameter mu to a, since it + is not the mean + (gsl_ran_logistic_pdf): changed parameter mu to a, since it + is not the mean + + * laplace.c (gsl_ran_laplace): changed parameter mu to a, since it + is not the mean + (gsl_ran_laplace_pdf): changed parameter mu to a, since it + is not the mean + + * exppow.c (gsl_ran_exppow): changed parameter mu to a, since it + is not the mean + (gsl_ran_exppow_pdf): changed parameter mu to a, since it + is not the mean + + * cauchy.c (gsl_ran_cauchy): changed parameter mu to a, since it + is not the mean + (gsl_ran_cauchy_pdf): changed parameter mu to a, since it + is not the mean + +Tue Feb 20 11:14:00 2001 Brian Gough + + * levy.c: added the skew symmetric routine from Keith Briggs, + changed the definition of the original function to match and not + use mu as a scale parameter. + +2000-10-17 Brian Gough + + * shuffle.c (gsl_ran_shuffle): replaced calls of the form + N*gsl_rng_uniform(r) with the integer form gsl_rng_uniform(r, N) + +Thu Sep 21 18:41:53 2000 Brian Gough + + * pareto.c (gsl_ran_pareto): made arguments and documentation + consistent + +Wed May 10 14:55:43 2000 Brian Gough + + * gsl-randist.c (main): fixed bug for lognormal (it was calling + exppow) Tadhg O'Meara + + * gsl-randist.c (main): print out all the dimensions for dir-nd, + not just the first + +Tue Apr 25 20:45:14 2000 Brian Gough + + * shuffle.c (gsl_ran_sample): lifted the restriction that sampling + with replacement could only be done less than n times for n objects. + +Tue Mar 14 21:31:46 2000 Brian Gough + + * logistic.c (gsl_ran_logistic_pdf): prevent overflow in + computation of pdf for x < 0 + +Thu Oct 7 12:55:40 1999 Brian Gough + + * discrete.c (gsl_ran_discrete_free): removed unreachable code + "return 0"; + +Fri Aug 6 16:02:08 1999 Brian Gough + + * sphere.c (gsl_ran_dir_nd): number of dimensions is now unsigned + (size_t) + + * logarithmic.c (gsl_ran_logarithmic_pdf): removed warning about + passing arg 2 of `pow' as floating rather than integer due to + prototype + +Sun Aug 1 20:29:43 1999 Brian Gough + + * discrete.c: converted to GSL_ERROR macros for error handling + +Tue Jul 27 14:14:38 1999 Brian Gough + + * sphere.c (gsl_ran_dir_3d): use the Knop method only -- it is the + best. + (gsl_ran_dir_2d_trig_method): split out the trig method as an + alternative for those platforms where it is faster + + * bigauss.c: split out the bivariate gaussian into its own source + file + +1999-06-30 Mark Galassi + + * discrete.c: (thanks to Frederick W. Wheeler + ) changed the type stack_t to gsl_stack_t to + avoid a conflict on HPUX. + +Sun Feb 28 20:41:18 1999 Brian Gough + + * gsl-randist.c (main): change cfree() to free(), which is + standard. + + * discrete.c (gsl_ran_discrete_preproc): removed warning, pTotal + is now initialized to zero. + +1999-01-31 James Theiler + * gauss.c added a new function gsl_ran_ugaussian_tail() which + provides random numbers out on the tail of a gaussian. I also + added (but then #ifdef'd out) a second implementation of ordinary + gaussian numbers. This second implementation passes the tests + okay, but it is a touch slower on my home Pentium. + * gsl_randist.h added prototypes + * test.c added tests for new gaussian tail function; also altered + testMoment's ugaussian range (-1,1) value from .68 to a more + accurate value. + * ../doc/random.texi further updated + +1999-01-30 James Theiler + * discrete.c added implementation of Walker's algorithm for + rapidly choosing a random integer k where the k's are distributed + by a user-supplied array of probabilities P[k]. This includes + functions gsl_ran_discrete(), gsl_ran_discrete_preproc(), + gsl_ran_discrete_free(), and gsl_ran_discrete_pdf(). + * gsl_randist.h added definition of structure gsl_ran_discrete_t, + also prototypes of new functions defined in discrete.c + * test.c added tests for gsl_ran_discrete(), also + * test.c made some essentially cosmetic changes: + 1/ redefined FUNC and FUNC2 macros so now output looks like + "test gsl_ran_poisson" instead of "gsl_ran_test_poisson" + 2/ changed names of toplevel tests, eg test_moments->testMoments, + test_pdf->testPDF, etc, to distinguish them from all the individual + functions test_poisson, test_binomial, etc. + hope that's ok. + * ../doc/random.texi updated to reflect the new discrete functions, + as well as the new implementations of the sphere.c routines. + +1999-01-28 James Theiler + * sphere.c modified gsl_ran_dir_3d, to speed it up about 2x + also modified gsl_ran_dir_2d, providing alternative algorithms + (#ifdef'd appropriately). which is faster is machine dependent. + also gsl_ran_dir_nd for n-dimensional direction, using + gaussian random variables, normalized to the unit sphere + also added ref's to Knuth and others describing the algorithms + * gsl_randist.h added gsl_ran_dir_nd() prototype + * gsl-randist.c added dir-nd option + +Tue Dec 15 23:08:57 1998 Brian Gough + + * updated all the functions depending on gsl_sf to use the new + special function interface, based on gsl_sf_result + +Tue Nov 17 17:02:54 1998 Brian Gough + + * added #include to all top-level source files + +1998-11-06 + + * test.c: ensured that M_PI is available by #include + +Wed Sep 16 14:44:08 1998 Brian Gough + + * rayleigh.c: added rayleigh tail distribution + +Sat Sep 12 13:03:19 1998 Brian Gough + + * rayleigh.c: added rayleigh distribution + +Mon Aug 31 James Theiler + + * Makefile.am: added ../utils/libutils.a to some LDADD's + +Mon Aug 17 14:31:55 1998 Brian Gough + + * gsl_randist.h: renamed discrete probability distribution + parameters to use consistent k,n notation (k = sample, n = total, + e.g. p(k) = function(k,n) ) + +Wed Aug 12 14:02:31 1998 Brian Gough + + * lognormal.c: added zeta and sigma (location and scale parameters) + + * logarithmic.c (gsl_ran_logarithmic): added logarithmic distribution + +Mon Aug 10 14:41:15 1998 Brian Gough + + * gsl-randist.c: added random direction functions + + * gamma.c: added the scale paramter for the gamma distribution + +Thu Aug 6 12:19:59 1998 Brian Gough + + * gauss.c (gsl_ran_bivariate_gaussian): added bivariate with + correlations. + + * hyperg.c: renamed variables, fixed bug + +Wed Aug 5 11:21:45 1998 Brian Gough + + * gsl-dist.c: renamed gsl-dist.c to gsl-randist.c, for + consistency + +Tue Aug 4 12:29:17 1998 Brian Gough + + * gsl-dist.c: a program for generating samples from the + distributions + + * levy.c (gsl_ran_levy): take care of special case, a=1 + + * logistic.c: allow scale parameter, mu + + * weibull.c: allow scale parameter, mu + + * pareto.c: allow scale parameter, mu + + * exppow.c: handle the case a<1 using a transformation of the + gamma distribution. + + * gamma.c (gsl_ran_gamma_int): removed the check for + GSL_LOGINIFINITY since underflow can't occur for 32-bit random + numbers in double precision. + +Mon Aug 3 13:09:39 1998 Brian Gough + + * test.c: added tests for shuffle and choose + + * pascal.c: added the Pascal distribution + + * hyperg.c: added the hypergeometric distribution + +Fri Jul 31 12:52:12 1998 Brian Gough + + * gsl_randist.h: renamed gsl_ran_two_sided_exponential to + gsl_ran_laplace + +1998-07-26 Mark Galassi + + * Makefile.am (INCLUDES): added -I$(top_srcdir), since gsl_math.h + is needed, and that is in the top level source directory. This is + necessary for using a separate build directory. + +Tue Jul 14 12:39:30 1998 Brian Gough + + * nbinomial.c: added Negative Binomial distribution + + * bernoulli.c: added Bernoulli distribution + + * poisson.c (gsl_ran_poisson): fixed a serious bug in the unrolled + recursion which led to an incorrect result being returned for the + large t case. This shows the importance of tests that cover all + possible branches!!! + + * erlang.c (gsl_ran_erlang_pdf): renamed mu to a for consistency + +Thu Jul 2 15:47:05 1998 Brian Gough + + * added some extra distributions, lognormal.c gaussian.c + logistic.c pareto.c geometric.c erlang.c chisq.c weibull.c, + although they aren't finished yet + +Wed Jul 1 11:56:06 1998 Brian Gough + + * replace do { u = gsl_rng_uniform(r) } while (u == 0) by a direct + call to gsl_rng_uniform_pos. + +Sun Jun 28 14:21:13 1998 Brian Gough + + * converted everything to work with rng style generators + +Sun Apr 19 19:06:59 1998 Brian Gough + + * made the 'gsl-dist' programs just output a single column of + their random numbers (previously some of the programs printed both + the uniform variate and the transformed number) + + * got rid of the 'bench-' programs. We will have a full testing + suite soon. + + * renamed the installed programs from 'dist' to 'gsl-dist' so that + they don't overwrite anything, e.g. it's possible the user might + have other programs called 'gauss' or 'gamma' installed in + /usr/local + +Sat Mar 21 16:09:16 1998 Brian Gough + + * laplace.c (gsl_ran_laplace): added a Laplace distribution + (two-sided exponential) + + * lorentz.c (gsl_ran_lorentzian): added a Lorentz distribution + +1998-01-30 Mark Galassi + + * Makefile.am (lib_LIBRARIES): now it creates libgslrandist.a so + that we have gaussian and poisson distributions. + diff --git a/gsl-2.5/randist/Makefile b/gsl-2.5/randist/Makefile new file mode 100644 index 00000000..22aca242 --- /dev/null +++ b/gsl-2.5/randist/Makefile @@ -0,0 +1,1076 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# randist/Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + + + + +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/gsl +pkgincludedir = $(includedir)/gsl +pkglibdir = $(libdir)/gsl +pkglibexecdir = $(libexecdir)/gsl +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = x86_64-unknown-linux-gnu +host_triplet = x86_64-unknown-linux-gnu +check_PROGRAMS = test$(EXEEXT) +subdir = randist +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp \ + $(pkginclude_HEADERS) $(top_srcdir)/test-driver ChangeLog TODO +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +libgslrandist_la_LIBADD = +am_libgslrandist_la_OBJECTS = bernoulli.lo beta.lo bigauss.lo \ + binomial.lo cauchy.lo chisq.lo dirichlet.lo discrete.lo \ + erlang.lo exponential.lo exppow.lo fdist.lo flat.lo gamma.lo \ + gauss.lo gausszig.lo gausstail.lo geometric.lo gumbel.lo \ + hyperg.lo laplace.lo levy.lo logarithmic.lo logistic.lo \ + lognormal.lo multinomial.lo mvgauss.lo nbinomial.lo pareto.lo \ + pascal.lo poisson.lo rayleigh.lo shuffle.lo sphere.lo tdist.lo \ + weibull.lo landau.lo binomial_tpe.lo wishart.lo +libgslrandist_la_OBJECTS = $(am_libgslrandist_la_OBJECTS) +AM_V_lt = $(am__v_lt_$(V)) +am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) +am__v_lt_0 = --silent +am__v_lt_1 = +am_test_OBJECTS = test.$(OBJEXT) +test_OBJECTS = $(am_test_OBJECTS) +test_DEPENDENCIES = libgslrandist.la ../rng/libgslrng.la \ + ../cdf/libgslcdf.la ../specfunc/libgslspecfunc.la \ + ../integration/libgslintegration.la \ + ../complex/libgslcomplex.la ../ieee-utils/libgslieeeutils.la \ + ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la \ + ../utils/libutils.la ../statistics/libgslstatistics.la \ + ../sort/libgslsort.la ../linalg/libgsllinalg.la \ + ../blas/libgslblas.la ../cblas/libgslcblas.la \ + ../matrix/libgslmatrix.la ../vector/libgslvector.la \ + ../block/libgslblock.la +AM_V_P = $(am__v_P_$(V)) +am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY)) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_$(V)) +am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_$(V)) +am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I. -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_$(V)) +am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_$(V)) +am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libgslrandist_la_SOURCES) $(test_SOURCES) +DIST_SOURCES = $(libgslrandist_la_SOURCES) $(test_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(pkgincludedir)" +HEADERS = $(pkginclude_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = .test +LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing aclocal-1.13 +AMTAR = $${TAR-tar} +AM_DEFAULT_VERBOSITY = 1 +AR = ar +AS = as +AUTOCONF = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing autoconf +AUTOHEADER = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing autoheader +AUTOMAKE = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing automake-1.13 +AWK = gawk +CC = gcc +CCDEPMODE = depmode=gcc3 +CFLAGS = -g -O2 +CPP = gcc -E +CPPFLAGS = +CYGPATH_W = echo +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +DLLTOOL = false +DSYMUTIL = +DUMPBIN = +ECHO_C = +ECHO_N = -n +ECHO_T = +EGREP = /usr/bin/grep -E +EXEEXT = +FGREP = /usr/bin/grep -F +GREP = /usr/bin/grep +GSLCBLAS_LDFLAGS = +GSL_CFLAGS = -I${prefix}/include +GSL_LDFLAGS = +GSL_LIBADD = +GSL_LIBM = -lm +GSL_LIBS = -L${exec_prefix}/lib -lgsl +GSL_LT_CBLAS_VERSION = 0:0:0 +GSL_LT_VERSION = 24:0:1 +GSL_MAJOR_VERSION = 2 +GSL_MINOR_VERSION = 5 +HAVE_AIX_IEEE_INTERFACE = +HAVE_DARWIN86_IEEE_INTERFACE = +HAVE_DARWIN_IEEE_INTERFACE = +HAVE_FREEBSD_IEEE_INTERFACE = +HAVE_GNUM68K_IEEE_INTERFACE = +HAVE_GNUPPC_IEEE_INTERFACE = +HAVE_GNUSPARC_IEEE_INTERFACE = +HAVE_GNUX86_IEEE_INTERFACE = +HAVE_HPUX11_IEEE_INTERFACE = +HAVE_HPUX_IEEE_INTERFACE = +HAVE_IRIX_IEEE_INTERFACE = +HAVE_NETBSD_IEEE_INTERFACE = +HAVE_OPENBSD_IEEE_INTERFACE = +HAVE_OS2EMX_IEEE_INTERFACE = +HAVE_SOLARIS_IEEE_INTERFACE = +HAVE_SUNOS4_IEEE_INTERFACE = +HAVE_TRU64_IEEE_INTERFACE = +INSTALL = /usr/bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = $(install_sh) -c -s +LD = /usr/bin/ld -m elf_x86_64 +LDFLAGS = +LIBM = -lm +LIBOBJS = +LIBS = -lm +LIBTOOL = $(SHELL) $(top_builddir)/libtool +LIPO = +LN_S = ln -s +LTLIBOBJS = +MAINT = # +MAKEINFO = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing makeinfo +MANIFEST_TOOL = : +MKDIR_P = /usr/bin/mkdir -p +NM = /usr/bin/nm -B +NMEDIT = +OBJDUMP = objdump +OBJEXT = o +OTOOL = +OTOOL64 = +PACKAGE = gsl +PACKAGE_BUGREPORT = +PACKAGE_NAME = gsl +PACKAGE_STRING = gsl 2.5 +PACKAGE_TARNAME = gsl +PACKAGE_URL = +PACKAGE_VERSION = 2.5 +PATH_SEPARATOR = : +RANLIB = ranlib +SED = /usr/bin/sed +SET_MAKE = +SHELL = /bin/sh +STRIP = strip +VERSION = 2.5 +abs_builddir = /home/groups/kipac/chto/package/gsl/gsl-2.5/randist +abs_srcdir = /home/groups/kipac/chto/package/gsl/gsl-2.5/randist +abs_top_builddir = /home/groups/kipac/chto/package/gsl/gsl-2.5 +abs_top_srcdir = /home/groups/kipac/chto/package/gsl/gsl-2.5 +ac_ct_AR = ar +ac_ct_CC = gcc +ac_ct_DUMPBIN = +am__include = include +am__leading_dot = . +am__quote = +am__tar = $${TAR-tar} chof - "$$tardir" +am__untar = $${TAR-tar} xf - +bindir = ${exec_prefix}/bin +build = x86_64-unknown-linux-gnu +build_alias = +build_cpu = x86_64 +build_os = linux-gnu +build_vendor = unknown +builddir = . +datadir = ${datarootdir} +datarootdir = ${prefix}/share +docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} +dvidir = ${docdir} +exec_prefix = ${prefix} +host = x86_64-unknown-linux-gnu +host_alias = +host_cpu = x86_64 +host_os = linux-gnu +host_vendor = unknown +htmldir = ${docdir} +includedir = ${prefix}/include +infodir = ${datarootdir}/info +install_sh = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/install-sh +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +localedir = ${datarootdir}/locale +localstatedir = ${prefix}/var +mandir = ${datarootdir}/man +mkdir_p = $(MKDIR_P) +oldincludedir = /usr/include +pdfdir = ${docdir} +prefix = /home/groups/kipac/chto/package/gsl/gsl_lib +program_transform_name = s,x,x, +psdir = ${docdir} +sbindir = ${exec_prefix}/sbin +sharedstatedir = ${prefix}/com +srcdir = . +sysconfdir = ${prefix}/etc +target_alias = +top_build_prefix = ../ +top_builddir = .. +top_srcdir = .. +noinst_LTLIBRARIES = libgslrandist.la +pkginclude_HEADERS = gsl_randist.h +AM_CPPFLAGS = -I$(top_srcdir) +libgslrandist_la_SOURCES = bernoulli.c beta.c bigauss.c binomial.c cauchy.c chisq.c dirichlet.c discrete.c erlang.c exponential.c exppow.c fdist.c flat.c gamma.c gauss.c gausszig.c gausstail.c geometric.c gumbel.c hyperg.c laplace.c levy.c logarithmic.c logistic.c lognormal.c multinomial.c mvgauss.c nbinomial.c pareto.c pascal.c poisson.c rayleigh.c shuffle.c sphere.c tdist.c weibull.c landau.c binomial_tpe.c wishart.c +TESTS = $(check_PROGRAMS) +test_SOURCES = test.c +test_LDADD = libgslrandist.la ../rng/libgslrng.la ../cdf/libgslcdf.la ../specfunc/libgslspecfunc.la ../integration/libgslintegration.la ../complex/libgslcomplex.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la ../statistics/libgslstatistics.la ../sort/libgslsort.la ../linalg/libgsllinalg.la ../blas/libgslblas.la ../cblas/libgslcblas.la ../matrix/libgslmatrix.la ../vector/libgslvector.la ../block/libgslblock.la +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu randist/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu randist/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: # $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): # $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libgslrandist.la: $(libgslrandist_la_OBJECTS) $(libgslrandist_la_DEPENDENCIES) $(EXTRA_libgslrandist_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(libgslrandist_la_OBJECTS) $(libgslrandist_la_LIBADD) $(LIBS) + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) $(EXTRA_test_DEPENDENCIES) + @rm -f test$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_OBJECTS) $(test_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +include ./$(DEPDIR)/bernoulli.Plo +include ./$(DEPDIR)/beta.Plo +include ./$(DEPDIR)/bigauss.Plo +include ./$(DEPDIR)/binomial.Plo +include ./$(DEPDIR)/binomial_tpe.Plo +include ./$(DEPDIR)/cauchy.Plo +include ./$(DEPDIR)/chisq.Plo +include ./$(DEPDIR)/dirichlet.Plo +include ./$(DEPDIR)/discrete.Plo +include ./$(DEPDIR)/erlang.Plo +include ./$(DEPDIR)/exponential.Plo +include ./$(DEPDIR)/exppow.Plo +include ./$(DEPDIR)/fdist.Plo +include ./$(DEPDIR)/flat.Plo +include ./$(DEPDIR)/gamma.Plo +include ./$(DEPDIR)/gauss.Plo +include ./$(DEPDIR)/gausstail.Plo +include ./$(DEPDIR)/gausszig.Plo +include ./$(DEPDIR)/geometric.Plo +include ./$(DEPDIR)/gumbel.Plo +include ./$(DEPDIR)/hyperg.Plo +include ./$(DEPDIR)/landau.Plo +include ./$(DEPDIR)/laplace.Plo +include ./$(DEPDIR)/levy.Plo +include ./$(DEPDIR)/logarithmic.Plo +include ./$(DEPDIR)/logistic.Plo +include ./$(DEPDIR)/lognormal.Plo +include ./$(DEPDIR)/multinomial.Plo +include ./$(DEPDIR)/mvgauss.Plo +include ./$(DEPDIR)/nbinomial.Plo +include ./$(DEPDIR)/pareto.Plo +include ./$(DEPDIR)/pascal.Plo +include ./$(DEPDIR)/poisson.Plo +include ./$(DEPDIR)/rayleigh.Plo +include ./$(DEPDIR)/shuffle.Plo +include ./$(DEPDIR)/sphere.Plo +include ./$(DEPDIR)/tdist.Plo +include ./$(DEPDIR)/test.Po +include ./$(DEPDIR)/weibull.Plo +include ./$(DEPDIR)/wishart.Plo + +.c.o: + $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# $(AM_V_CC)source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(COMPILE) -c $< + +.c.obj: + $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# $(AM_V_CC)source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: + $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +# $(AM_V_CC)source='$<' object='$@' libtool=yes \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-pkgincludeHEADERS: $(pkginclude_HEADERS) + @$(NORMAL_INSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \ + done + +uninstall-pkgincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + else \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_PROGRAMS) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +test.log: test$(EXEEXT) + @p='test$(EXEEXT)'; \ + b='test'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +#.test$(EXEEXT).log: +# @p='$<'; \ +# $(am__set_b); \ +# $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +# --log-file $$b.log --trs-file $$b.trs \ +# $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +# "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-am +all-am: Makefile $(LTLIBRARIES) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(pkgincludedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-pkgincludeHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-pkgincludeHEADERS + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES cscopelist-am ctags ctags-am distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-pkgincludeHEADERS \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + recheck tags tags-am uninstall uninstall-am \ + uninstall-pkgincludeHEADERS + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gsl-2.5/randist/Makefile.am b/gsl-2.5/randist/Makefile.am new file mode 100644 index 00000000..04822fb1 --- /dev/null +++ b/gsl-2.5/randist/Makefile.am @@ -0,0 +1,16 @@ +noinst_LTLIBRARIES = libgslrandist.la + +pkginclude_HEADERS= gsl_randist.h + +AM_CPPFLAGS = -I$(top_srcdir) + +libgslrandist_la_SOURCES = bernoulli.c beta.c bigauss.c binomial.c cauchy.c chisq.c dirichlet.c discrete.c erlang.c exponential.c exppow.c fdist.c flat.c gamma.c gauss.c gausszig.c gausstail.c geometric.c gumbel.c hyperg.c laplace.c levy.c logarithmic.c logistic.c lognormal.c multinomial.c mvgauss.c nbinomial.c pareto.c pascal.c poisson.c rayleigh.c shuffle.c sphere.c tdist.c weibull.c landau.c binomial_tpe.c wishart.c + +TESTS = $(check_PROGRAMS) + +check_PROGRAMS = test + +test_SOURCES = test.c +test_LDADD = libgslrandist.la ../rng/libgslrng.la ../cdf/libgslcdf.la ../specfunc/libgslspecfunc.la ../integration/libgslintegration.la ../complex/libgslcomplex.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la ../statistics/libgslstatistics.la ../sort/libgslsort.la ../linalg/libgsllinalg.la ../blas/libgslblas.la ../cblas/libgslcblas.la ../matrix/libgslmatrix.la ../vector/libgslvector.la ../block/libgslblock.la + + diff --git a/gsl-2.5/randist/Makefile.in b/gsl-2.5/randist/Makefile.in new file mode 100644 index 00000000..a08b51c9 --- /dev/null +++ b/gsl-2.5/randist/Makefile.in @@ -0,0 +1,1076 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + + +VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +check_PROGRAMS = test$(EXEEXT) +subdir = randist +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp \ + $(pkginclude_HEADERS) $(top_srcdir)/test-driver ChangeLog TODO +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +libgslrandist_la_LIBADD = +am_libgslrandist_la_OBJECTS = bernoulli.lo beta.lo bigauss.lo \ + binomial.lo cauchy.lo chisq.lo dirichlet.lo discrete.lo \ + erlang.lo exponential.lo exppow.lo fdist.lo flat.lo gamma.lo \ + gauss.lo gausszig.lo gausstail.lo geometric.lo gumbel.lo \ + hyperg.lo laplace.lo levy.lo logarithmic.lo logistic.lo \ + lognormal.lo multinomial.lo mvgauss.lo nbinomial.lo pareto.lo \ + pascal.lo poisson.lo rayleigh.lo shuffle.lo sphere.lo tdist.lo \ + weibull.lo landau.lo binomial_tpe.lo wishart.lo +libgslrandist_la_OBJECTS = $(am_libgslrandist_la_OBJECTS) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +am_test_OBJECTS = test.$(OBJEXT) +test_OBJECTS = $(am_test_OBJECTS) +test_DEPENDENCIES = libgslrandist.la ../rng/libgslrng.la \ + ../cdf/libgslcdf.la ../specfunc/libgslspecfunc.la \ + ../integration/libgslintegration.la \ + ../complex/libgslcomplex.la ../ieee-utils/libgslieeeutils.la \ + ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la \ + ../utils/libutils.la ../statistics/libgslstatistics.la \ + ../sort/libgslsort.la ../linalg/libgsllinalg.la \ + ../blas/libgslblas.la ../cblas/libgslcblas.la \ + ../matrix/libgslmatrix.la ../vector/libgslvector.la \ + ../block/libgslblock.la +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libgslrandist_la_SOURCES) $(test_SOURCES) +DIST_SOURCES = $(libgslrandist_la_SOURCES) $(test_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(pkgincludedir)" +HEADERS = $(pkginclude_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = @EXEEXT@ .test +LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +GSLCBLAS_LDFLAGS = @GSLCBLAS_LDFLAGS@ +GSL_CFLAGS = @GSL_CFLAGS@ +GSL_LDFLAGS = @GSL_LDFLAGS@ +GSL_LIBADD = @GSL_LIBADD@ +GSL_LIBM = @GSL_LIBM@ +GSL_LIBS = @GSL_LIBS@ +GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ +GSL_LT_VERSION = @GSL_LT_VERSION@ +GSL_MAJOR_VERSION = @GSL_MAJOR_VERSION@ +GSL_MINOR_VERSION = @GSL_MINOR_VERSION@ +HAVE_AIX_IEEE_INTERFACE = @HAVE_AIX_IEEE_INTERFACE@ +HAVE_DARWIN86_IEEE_INTERFACE = @HAVE_DARWIN86_IEEE_INTERFACE@ +HAVE_DARWIN_IEEE_INTERFACE = @HAVE_DARWIN_IEEE_INTERFACE@ +HAVE_FREEBSD_IEEE_INTERFACE = @HAVE_FREEBSD_IEEE_INTERFACE@ +HAVE_GNUM68K_IEEE_INTERFACE = @HAVE_GNUM68K_IEEE_INTERFACE@ +HAVE_GNUPPC_IEEE_INTERFACE = @HAVE_GNUPPC_IEEE_INTERFACE@ +HAVE_GNUSPARC_IEEE_INTERFACE = @HAVE_GNUSPARC_IEEE_INTERFACE@ +HAVE_GNUX86_IEEE_INTERFACE = @HAVE_GNUX86_IEEE_INTERFACE@ +HAVE_HPUX11_IEEE_INTERFACE = @HAVE_HPUX11_IEEE_INTERFACE@ +HAVE_HPUX_IEEE_INTERFACE = @HAVE_HPUX_IEEE_INTERFACE@ +HAVE_IRIX_IEEE_INTERFACE = @HAVE_IRIX_IEEE_INTERFACE@ +HAVE_NETBSD_IEEE_INTERFACE = @HAVE_NETBSD_IEEE_INTERFACE@ +HAVE_OPENBSD_IEEE_INTERFACE = @HAVE_OPENBSD_IEEE_INTERFACE@ +HAVE_OS2EMX_IEEE_INTERFACE = @HAVE_OS2EMX_IEEE_INTERFACE@ +HAVE_SOLARIS_IEEE_INTERFACE = @HAVE_SOLARIS_IEEE_INTERFACE@ +HAVE_SUNOS4_IEEE_INTERFACE = @HAVE_SUNOS4_IEEE_INTERFACE@ +HAVE_TRU64_IEEE_INTERFACE = @HAVE_TRU64_IEEE_INTERFACE@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBM = @LIBM@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +noinst_LTLIBRARIES = libgslrandist.la +pkginclude_HEADERS = gsl_randist.h +AM_CPPFLAGS = -I$(top_srcdir) +libgslrandist_la_SOURCES = bernoulli.c beta.c bigauss.c binomial.c cauchy.c chisq.c dirichlet.c discrete.c erlang.c exponential.c exppow.c fdist.c flat.c gamma.c gauss.c gausszig.c gausstail.c geometric.c gumbel.c hyperg.c laplace.c levy.c logarithmic.c logistic.c lognormal.c multinomial.c mvgauss.c nbinomial.c pareto.c pascal.c poisson.c rayleigh.c shuffle.c sphere.c tdist.c weibull.c landau.c binomial_tpe.c wishart.c +TESTS = $(check_PROGRAMS) +test_SOURCES = test.c +test_LDADD = libgslrandist.la ../rng/libgslrng.la ../cdf/libgslcdf.la ../specfunc/libgslspecfunc.la ../integration/libgslintegration.la ../complex/libgslcomplex.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la ../statistics/libgslstatistics.la ../sort/libgslsort.la ../linalg/libgsllinalg.la ../blas/libgslblas.la ../cblas/libgslcblas.la ../matrix/libgslmatrix.la ../vector/libgslvector.la ../block/libgslblock.la +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu randist/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu randist/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libgslrandist.la: $(libgslrandist_la_OBJECTS) $(libgslrandist_la_DEPENDENCIES) $(EXTRA_libgslrandist_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(libgslrandist_la_OBJECTS) $(libgslrandist_la_LIBADD) $(LIBS) + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) $(EXTRA_test_DEPENDENCIES) + @rm -f test$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_OBJECTS) $(test_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bernoulli.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/beta.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bigauss.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/binomial.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/binomial_tpe.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cauchy.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chisq.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dirichlet.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/discrete.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/erlang.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/exponential.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/exppow.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fdist.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/flat.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gamma.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gauss.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gausstail.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gausszig.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/geometric.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gumbel.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hyperg.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/landau.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/laplace.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/levy.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/logarithmic.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/logistic.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lognormal.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/multinomial.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mvgauss.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nbinomial.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pareto.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pascal.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/poisson.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rayleigh.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/shuffle.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sphere.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tdist.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/weibull.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wishart.Plo@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-pkgincludeHEADERS: $(pkginclude_HEADERS) + @$(NORMAL_INSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \ + done + +uninstall-pkgincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + else \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_PROGRAMS) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +test.log: test$(EXEEXT) + @p='test$(EXEEXT)'; \ + b='test'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +@am__EXEEXT_TRUE@.test$(EXEEXT).log: +@am__EXEEXT_TRUE@ @p='$<'; \ +@am__EXEEXT_TRUE@ $(am__set_b); \ +@am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +@am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ +@am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +@am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-am +all-am: Makefile $(LTLIBRARIES) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(pkgincludedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-pkgincludeHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-pkgincludeHEADERS + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES cscopelist-am ctags ctags-am distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-pkgincludeHEADERS \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + recheck tags tags-am uninstall uninstall-am \ + uninstall-pkgincludeHEADERS + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gsl-2.5/randist/TODO b/gsl-2.5/randist/TODO new file mode 100644 index 00000000..7e6bd536 --- /dev/null +++ b/gsl-2.5/randist/TODO @@ -0,0 +1,69 @@ +# -*- org -*- +#+CATEGORY: randist + +* ACM Computing Surveys (CSUR) + Volume 39 , Issue 4 (2007) + + Gaussian random number generators + David B. Thomas, Wayne Luk, Philip H.W. Leong, John D. Villasenor + Article No. 11 + + +* add Erlang dist back in? + +* DONE, for mu. + + Note that we need to get rid of mu when it is not the mean. + + From: Brian Gough + To: briggsk@info.bt.co.uk + Cc: gsl-discuss@sourceware.cygnus.com + Subject: Re: Pareto Distribution + Date: Sun, 9 Jul 2000 20:05:03 +0100 (BST) + + Yes, we should adopt the conventions from a standard reference book -- + the existing functions are drawn from a variety of sources, mostly + Devroye's book on Random Variates (which is public domain, but not + available electronically unfortunately). Maybe the three volumes of + Johnson & Kotz on Univariate Distributions would do, for + example. Patches are welcome from anyone who wants sort this out. + + Keith Briggs writes: + > Another thing to think about: some of the other distributions + > have a argument `mu' to the C function which is a parameter + > which is not the mean. This is non-standard and confusing. + > (Also, in the Pareto function, `a' is normally called beta, + > `b' is normally called alpha.) + > + > Keith + > + > +-------------------------------------------------------------------+ + > | Dr. Keith M. Briggs, Complexity Research Group, BT Research Labs. | + > | Adastral Park admin2 pp5, Martlesham Heath, IP5 3RE, Suffolk, UK | + > | Tel. 01473 641 911 Fax. 01473 647 410. Home tel: 01473 625 972 | + > | www.bt.com | personal homepage: www.labs.bt.com/people/briggsk2/ | + > +-------------------------------------------------------------------+ + + +* The exponential power distribution method could be speeded up by +using a rational function approximation for the rejection scaling +parameter. + +* Do something about the possibility of the user providing invalid +parameters (e.g. negative variance etc). Not sure what to do though, +since returning an error code is not possible. Maybe just return zero. + We should return NAN in this case, and for the CDFs. + +* Add the triangular distribution. + +* Look at Marsaglia & Tsang, "The Monte Python Method for generating +random variables", ACM TOMS Vol 24, No 3, p341 + +and the paper on the Ziggurat Method: Journal of Statistical Software, +Volume 05 Issue 08. George Marsaglia and Wai Wan Tsang. "The ziggurat +method for generating random variables" + +* Should 0 be included in distributions such as the exponential +distribution? If we want a consistent behaviour, is it included in +others? Note that 1-gsl_rng_uniform() can have a slight loss of +precision when the random float is small. diff --git a/gsl-2.5/randist/bernoulli.c b/gsl-2.5/randist/bernoulli.c new file mode 100644 index 00000000..c10f5a49 --- /dev/null +++ b/gsl-2.5/randist/bernoulli.c @@ -0,0 +1,61 @@ +/* randist/bernoulli.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 James Theiler, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include + +/* The bernoulli distribution has the form, + + prob(0) = 1-p, prob(1) = p + + */ + +unsigned int +gsl_ran_bernoulli (const gsl_rng * r, double p) +{ + double u = gsl_rng_uniform (r) ; + + if (u < p) + { + return 1 ; + } + else + { + return 0 ; + } +} + +double +gsl_ran_bernoulli_pdf (const unsigned int k, double p) +{ + if (k == 0) + { + return 1 - p ; + } + else if (k == 1) + { + return p ; + } + else + { + return 0 ; + } +} diff --git a/gsl-2.5/randist/bernoulli.lo b/gsl-2.5/randist/bernoulli.lo new file mode 100644 index 00000000..7749fa85 --- /dev/null +++ b/gsl-2.5/randist/bernoulli.lo @@ -0,0 +1,12 @@ +# bernoulli.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/bernoulli.o' + +# Name of the non-PIC object +non_pic_object='bernoulli.o' + diff --git a/gsl-2.5/randist/beta.c b/gsl-2.5/randist/beta.c new file mode 100644 index 00000000..03826f1e --- /dev/null +++ b/gsl-2.5/randist/beta.c @@ -0,0 +1,104 @@ +/* randist/beta.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 James Theiler, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include + +/* The beta distribution has the form + + p(x) dx = (Gamma(a + b)/(Gamma(a) Gamma(b))) x^(a-1) (1-x)^(b-1) dx + + The method used here is the one described in Knuth */ + +double +gsl_ran_beta (const gsl_rng * r, const double a, const double b) +{ + if ( (a <= 1.0) && (b <= 1.0) ) + { + double U, V, X, Y; + while (1) + { + U = gsl_rng_uniform_pos(r); + V = gsl_rng_uniform_pos(r); + X = pow(U, 1.0/a); + Y = pow(V, 1.0/b); + if ((X + Y ) <= 1.0) + { + if (X + Y > 0) + { + return X/ (X + Y); + } + else + { + double logX = log(U)/a; + double logY = log(V)/b; + double logM = logX > logY ? logX: logY; + logX -= logM; + logY -= logM; + return exp(logX - log(exp(logX) + exp(logY))); + } + } + } + } + else + { + double x1 = gsl_ran_gamma (r, a, 1.0); + double x2 = gsl_ran_gamma (r, b, 1.0); + return x1 / (x1 + x2); + } +} + +double +gsl_ran_beta_pdf (const double x, const double a, const double b) +{ + if (x < 0 || x > 1) + { + return 0 ; + } + else + { + double p; + + double gab = gsl_sf_lngamma (a + b); + double ga = gsl_sf_lngamma (a); + double gb = gsl_sf_lngamma (b); + + if (x == 0.0 || x == 1.0) + { + if (a > 1.0 && b > 1.0) + { + p = 0.0; + } + else + { + p = exp (gab - ga - gb) * pow (x, a - 1) * pow (1 - x, b - 1); + } + } + else + { + p = exp (gab - ga - gb + log(x) * (a - 1) + log1p(-x) * (b - 1)); + } + + return p; + } +} diff --git a/gsl-2.5/randist/beta.lo b/gsl-2.5/randist/beta.lo new file mode 100644 index 00000000..57c4ca59 --- /dev/null +++ b/gsl-2.5/randist/beta.lo @@ -0,0 +1,12 @@ +# beta.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/beta.o' + +# Name of the non-PIC object +non_pic_object='beta.o' + diff --git a/gsl-2.5/randist/bigauss.c b/gsl-2.5/randist/bigauss.c new file mode 100644 index 00000000..c23f401b --- /dev/null +++ b/gsl-2.5/randist/bigauss.c @@ -0,0 +1,70 @@ +/* randist/bigauss.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 James Theiler, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include + +/* The Bivariate Gaussian probability distribution is + + p(x,y) dxdy = (1/(2 pi sigma_x sigma_y sqrt(c))) + exp(-((x/sigma_x)^2 + (y/sigma_y)^2 - 2 r (x/sigma_x)(y/sigma_y))/2c) dxdy + + where c = 1-r^2 +*/ + +void +gsl_ran_bivariate_gaussian (const gsl_rng * r, + double sigma_x, double sigma_y, double rho, + double *x, double *y) +{ + double u, v, r2, scale; + + do + { + /* choose x,y in uniform square (-1,-1) to (+1,+1) */ + + u = -1 + 2 * gsl_rng_uniform (r); + v = -1 + 2 * gsl_rng_uniform (r); + + /* see if it is in the unit circle */ + r2 = u * u + v * v; + } + while (r2 > 1.0 || r2 == 0); + + scale = sqrt (-2.0 * log (r2) / r2); + + *x = sigma_x * u * scale; + *y = sigma_y * (rho * u + sqrt(1 - rho*rho) * v) * scale; +} + +double +gsl_ran_bivariate_gaussian_pdf (const double x, const double y, + const double sigma_x, const double sigma_y, + const double rho) +{ + double u = x / sigma_x ; + double v = y / sigma_y ; + double c = 1 - rho*rho ; + double p = (1 / (2 * M_PI * sigma_x * sigma_y * sqrt(c))) + * exp (-(u * u - 2 * rho * u * v + v * v) / (2 * c)); + return p; +} diff --git a/gsl-2.5/randist/bigauss.lo b/gsl-2.5/randist/bigauss.lo new file mode 100644 index 00000000..1b12379b --- /dev/null +++ b/gsl-2.5/randist/bigauss.lo @@ -0,0 +1,12 @@ +# bigauss.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/bigauss.o' + +# Name of the non-PIC object +non_pic_object='bigauss.o' + diff --git a/gsl-2.5/randist/binomial.c b/gsl-2.5/randist/binomial.c new file mode 100644 index 00000000..8a423d26 --- /dev/null +++ b/gsl-2.5/randist/binomial.c @@ -0,0 +1,100 @@ +/* randist/binomial.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 James Theiler, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include + +/* The binomial distribution has the form, + + prob(k) = n!/(k!(n-k)!) * p^k (1-p)^(n-k) for k = 0, 1, ..., n + + This is the algorithm from Knuth */ + +/* Default binomial generator is now in binomial_tpe.c */ + +unsigned int +gsl_ran_binomial_knuth (const gsl_rng * r, double p, unsigned int n) +{ + unsigned int i, a, b, k = 0; + + while (n > 10) /* This parameter is tunable */ + { + double X; + a = 1 + (n / 2); + b = 1 + n - a; + + X = gsl_ran_beta (r, (double) a, (double) b); + + if (X >= p) + { + n = a - 1; + p /= X; + } + else + { + k += a; + n = b - 1; + p = (p - X) / (1 - X); + } + } + + for (i = 0; i < n; i++) + { + double u = gsl_rng_uniform (r); + if (u < p) + k++; + } + + return k; +} + +double +gsl_ran_binomial_pdf (const unsigned int k, const double p, + const unsigned int n) +{ + if (k > n) + { + return 0; + } + else + { + double P; + + if (p == 0) + { + P = (k == 0) ? 1 : 0; + } + else if (p == 1) + { + P = (k == n) ? 1 : 0; + } + else + { + double ln_Cnk = gsl_sf_lnchoose (n, k); + P = ln_Cnk + k * log (p) + (n - k) * log1p (-p); + P = exp (P); + } + + return P; + } +} diff --git a/gsl-2.5/randist/binomial.lo b/gsl-2.5/randist/binomial.lo new file mode 100644 index 00000000..92ea2138 --- /dev/null +++ b/gsl-2.5/randist/binomial.lo @@ -0,0 +1,12 @@ +# binomial.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/binomial.o' + +# Name of the non-PIC object +non_pic_object='binomial.o' + diff --git a/gsl-2.5/randist/binomial_tpe.c b/gsl-2.5/randist/binomial_tpe.c new file mode 100644 index 00000000..d32423cc --- /dev/null +++ b/gsl-2.5/randist/binomial_tpe.c @@ -0,0 +1,381 @@ +/* randist/binomial_tpe.c + * + * Copyright (C) 1996, 2003, 2007 James Theiler, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include + +/* The binomial distribution has the form, + + f(x) = n!/(x!(n-x)!) * p^x (1-p)^(n-x) for integer 0 <= x <= n + = 0 otherwise + + This implementation follows the public domain ranlib function + "ignbin", the bulk of which is the BTPE (Binomial Triangle + Parallelogram Exponential) algorithm introduced in + Kachitvichyanukul and Schmeiser[1]. It has been translated to use + modern C coding standards. + + If n is small and/or p is near 0 or near 1 (specifically, if + n*min(p,1-p) < SMALL_MEAN), then a different algorithm, called + BINV, is used which has an average runtime that scales linearly + with n*min(p,1-p). + + But for larger problems, the BTPE algorithm takes the form of two + functions b(x) and t(x) -- "bottom" and "top" -- for which b(x) < + f(x)/f(M) < t(x), with M = floor(n*p+p). b(x) defines a triangular + region, and t(x) includes a parallelogram and two tails. Details + (including a nice drawing) are in the paper. + + [1] Kachitvichyanukul, V. and Schmeiser, B. W. Binomial Random + Variate Generation. Communications of the ACM, 31, 2 (February, + 1988) 216. + + Note, Bruce Schmeiser (personal communication) points out that if + you want very fast binomial deviates, and you are happy with + approximate results, and/or n and n*p are both large, then you can + just use gaussian estimates: mean=n*p, variance=n*p*(1-p). + + This implementation by James Theiler, April 2003, after obtaining + permission -- and some good advice -- from Drs. Kachitvichyanukul + and Schmeiser to use their code as a starting point, and then doing + a little bit of tweaking. + + Additional polishing for GSL coding standards by Brian Gough. */ + +#define SMALL_MEAN 14 /* If n*p < SMALL_MEAN then use BINV + algorithm. The ranlib + implementation used cutoff=30; but + on my computer 14 works better */ + +#define BINV_CUTOFF 110 /* In BINV, do not permit ix too large */ + +#define FAR_FROM_MEAN 20 /* If ix-n*p is larger than this, then + use the "squeeze" algorithm. + Ranlib used 20, and this seems to + be the best choice on my machine as + well */ + +#define LNFACT(x) gsl_sf_lnfact(x) + +inline static double +Stirling (double y1) +{ + double y2 = y1 * y1; + double s = + (13860.0 - + (462.0 - (132.0 - (99.0 - 140.0 / y2) / y2) / y2) / y2) / y1 / 166320.0; + return s; +} + +unsigned int +gsl_ran_binomial_tpe (const gsl_rng * rng, double p, unsigned int n) +{ + return gsl_ran_binomial (rng, p, n); +} + +unsigned int +gsl_ran_binomial (const gsl_rng * rng, double p, unsigned int n) +{ + int ix; /* return value */ + int flipped = 0; + double q, s, np; + + if (n == 0) + return 0; + + if (p > 0.5) + { + p = 1.0 - p; /* work with small p */ + flipped = 1; + } + + q = 1 - p; + s = p / q; + np = n * p; + + /* Inverse cdf logic for small mean (BINV in K+S) */ + + if (np < SMALL_MEAN) + { + double f0 = gsl_pow_uint (q, n); /* f(x), starting with x=0 */ + + while (1) + { + /* This while(1) loop will almost certainly only loop once; but + * if u=1 to within a few epsilons of machine precision, then it + * is possible for roundoff to prevent the main loop over ix to + * achieve its proper value. following the ranlib implementation, + * we introduce a check for that situation, and when it occurs, + * we just try again. + */ + + double f = f0; + double u = gsl_rng_uniform (rng); + + for (ix = 0; ix <= BINV_CUTOFF; ++ix) + { + if (u < f) + goto Finish; + u -= f; + /* Use recursion f(x+1) = f(x)*[(n-x)/(x+1)]*[p/(1-p)] */ + f *= s * (n - ix) / (ix + 1); + } + + /* It should be the case that the 'goto Finish' was encountered + * before this point was ever reached. But if we have reached + * this point, then roundoff has prevented u from decreasing + * all the way to zero. This can happen only if the initial u + * was very nearly equal to 1, which is a rare situation. In + * that rare situation, we just try again. + * + * Note, following the ranlib implementation, we loop ix only to + * a hardcoded value of SMALL_MEAN_LARGE_N=110; we could have + * looped to n, and 99.99...% of the time it won't matter. This + * choice, I think is a little more robust against the rare + * roundoff error. If n>LARGE_N, then it is technically + * possible for ix>LARGE_N, but it is astronomically rare, and + * if ix is that large, it is more likely due to roundoff than + * probability, so better to nip it at LARGE_N than to take a + * chance that roundoff will somehow conspire to produce an even + * larger (and more improbable) ix. If n= SMALL_MEAN, we invoke the BTPE algorithm */ + + int k; + + double ffm = np + p; /* ffm = n*p+p */ + int m = (int) ffm; /* m = int floor[n*p+p] */ + double fm = m; /* fm = double m; */ + double xm = fm + 0.5; /* xm = half integer mean (tip of triangle) */ + double npq = np * q; /* npq = n*p*q */ + + /* Compute cumulative area of tri, para, exp tails */ + + /* p1: radius of triangle region; since height=1, also: area of region */ + /* p2: p1 + area of parallelogram region */ + /* p3: p2 + area of left tail */ + /* p4: p3 + area of right tail */ + /* pi/p4: probability of i'th area (i=1,2,3,4) */ + + /* Note: magic numbers 2.195, 4.6, 0.134, 20.5, 15.3 */ + /* These magic numbers are not adjustable...at least not easily! */ + + double p1 = floor (2.195 * sqrt (npq) - 4.6 * q) + 0.5; + + /* xl, xr: left and right edges of triangle */ + double xl = xm - p1; + double xr = xm + p1; + + /* Parameter of exponential tails */ + /* Left tail: t(x) = c*exp(-lambda_l*[xl - (x+0.5)]) */ + /* Right tail: t(x) = c*exp(-lambda_r*[(x+0.5) - xr]) */ + + double c = 0.134 + 20.5 / (15.3 + fm); + double p2 = p1 * (1.0 + c + c); + + double al = (ffm - xl) / (ffm - xl * p); + double lambda_l = al * (1.0 + 0.5 * al); + double ar = (xr - ffm) / (xr * q); + double lambda_r = ar * (1.0 + 0.5 * ar); + double p3 = p2 + c / lambda_l; + double p4 = p3 + c / lambda_r; + + double var, accept; + double u, v; /* random variates */ + + TryAgain: + + /* generate random variates, u specifies which region: Tri, Par, Tail */ + u = gsl_rng_uniform (rng) * p4; + v = gsl_rng_uniform (rng); + + if (u <= p1) + { + /* Triangular region */ + ix = (int) (xm - p1 * v + u); + goto Finish; + } + else if (u <= p2) + { + /* Parallelogram region */ + double x = xl + (u - p1) / c; + v = v * c + 1.0 - fabs (x - xm) / p1; + if (v > 1.0 || v <= 0.0) + goto TryAgain; + ix = (int) x; + } + else if (u <= p3) + { + /* Left tail */ + ix = (int) (xl + log (v) / lambda_l); + if (ix < 0) + goto TryAgain; + v *= ((u - p2) * lambda_l); + } + else + { + /* Right tail */ + ix = (int) (xr - log (v) / lambda_r); + if (ix > (double) n) + goto TryAgain; + v *= ((u - p3) * lambda_r); + } + + /* At this point, the goal is to test whether v <= f(x)/f(m) + * + * v <= f(x)/f(m) = (m!(n-m)! / (x!(n-x)!)) * (p/q)^{x-m} + * + */ + + /* Here is a direct test using logarithms. It is a little + * slower than the various "squeezing" computations below, but + * if things are working, it should give exactly the same answer + * (given the same random number seed). */ + +#ifdef DIRECT + var = log (v); + + accept = + LNFACT (m) + LNFACT (n - m) - LNFACT (ix) - LNFACT (n - ix) + + (ix - m) * log (p / q); + +#else /* SQUEEZE METHOD */ + + /* More efficient determination of whether v < f(x)/f(M) */ + + k = abs (ix - m); + + if (k <= FAR_FROM_MEAN) + { + /* + * If ix near m (ie, |ix-m| ix) + { + int i; + for (i = ix + 1; i <= m; i++) + { + f /= (g / i - s); + } + } + + accept = f; + } + else + { + /* If ix is far from the mean m: k=ABS(ix-m) large */ + + var = log (v); + + if (k < npq / 2 - 1) + { + /* "Squeeze" using upper and lower bounds on + * log(f(x)) The squeeze condition was derived + * under the condition k < npq/2-1 */ + double amaxp = + k / npq * ((k * (k / 3.0 + 0.625) + (1.0 / 6.0)) / npq + 0.5); + double ynorm = -(k * k / (2.0 * npq)); + if (var < ynorm - amaxp) + goto Finish; + if (var > ynorm + amaxp) + goto TryAgain; + } + + /* Now, again: do the test log(v) vs. log f(x)/f(M) */ + +#if USE_EXACT + /* This is equivalent to the above, but is a little (~20%) slower */ + /* There are five log's vs three above, maybe that's it? */ + + accept = LNFACT (m) + LNFACT (n - m) + - LNFACT (ix) - LNFACT (n - ix) + (ix - m) * log (p / q); + +#else /* USE STIRLING */ + /* The "#define Stirling" above corresponds to the first five + * terms in asymptoic formula for + * log Gamma (y) - (y-0.5)log(y) + y - 0.5 log(2*pi); + * See Abramowitz and Stegun, eq 6.1.40 + */ + + /* Note below: two Stirling's are added, and two are + * subtracted. In both K+S, and in the ranlib + * implementation, all four are added. I (jt) believe that + * is a mistake -- this has been confirmed by personal + * correspondence w/ Dr. Kachitvichyanukul. Note, however, + * the corrections are so small, that I couldn't find an + * example where it made a difference that could be + * observed, let alone tested. In fact, define'ing Stirling + * to be zero gave identical results!! In practice, alv is + * O(1), ranging 0 to -10 or so, while the Stirling + * correction is typically O(10^{-5}) ...setting the + * correction to zero gives about a 2% performance boost; + * might as well keep it just to be pendantic. */ + + { + double x1 = ix + 1.0; + double w1 = n - ix + 1.0; + double f1 = fm + 1.0; + double z1 = n + 1.0 - fm; + + accept = xm * log (f1 / x1) + (n - m + 0.5) * log (z1 / w1) + + (ix - m) * log (w1 * p / (x1 * q)) + + Stirling (f1) + Stirling (z1) - Stirling (x1) - Stirling (w1); + } +#endif +#endif + } + + + if (var <= accept) + { + goto Finish; + } + else + { + goto TryAgain; + } + } + +Finish: + + return (flipped) ? (n - ix) : (unsigned int)ix; +} diff --git a/gsl-2.5/randist/binomial_tpe.lo b/gsl-2.5/randist/binomial_tpe.lo new file mode 100644 index 00000000..fff95cf3 --- /dev/null +++ b/gsl-2.5/randist/binomial_tpe.lo @@ -0,0 +1,12 @@ +# binomial_tpe.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/binomial_tpe.o' + +# Name of the non-PIC object +non_pic_object='binomial_tpe.o' + diff --git a/gsl-2.5/randist/cauchy.c b/gsl-2.5/randist/cauchy.c new file mode 100644 index 00000000..c5f1a1d6 --- /dev/null +++ b/gsl-2.5/randist/cauchy.c @@ -0,0 +1,51 @@ +/* randist/cauchy.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 James Theiler, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include + +/* The Cauchy probability distribution is + + p(x) dx = (1/(pi a)) (1 + (x/a)^2)^(-1) dx + + It is also known as the Lorentzian probability distribution */ + +double +gsl_ran_cauchy (const gsl_rng * r, const double a) +{ + double u; + do + { + u = gsl_rng_uniform (r); + } + while (u == 0.5); + + return a * tan (M_PI * u); +} + +double +gsl_ran_cauchy_pdf (const double x, const double a) +{ + double u = x / a; + double p = (1 / (M_PI * a)) / (1 + u * u); + return p; +} diff --git a/gsl-2.5/randist/cauchy.lo b/gsl-2.5/randist/cauchy.lo new file mode 100644 index 00000000..94846d8d --- /dev/null +++ b/gsl-2.5/randist/cauchy.lo @@ -0,0 +1,12 @@ +# cauchy.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/cauchy.o' + +# Name of the non-PIC object +non_pic_object='cauchy.o' + diff --git a/gsl-2.5/randist/chisq.c b/gsl-2.5/randist/chisq.c new file mode 100644 index 00000000..aef22ec3 --- /dev/null +++ b/gsl-2.5/randist/chisq.c @@ -0,0 +1,61 @@ +/* randist/chisq.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 James Theiler, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include + +/* The chisq distribution has the form + + p(x) dx = (1/(2*Gamma(nu/2))) (x/2)^(nu/2 - 1) exp(-x/2) dx + + for x = 0 ... +infty */ + +double +gsl_ran_chisq (const gsl_rng * r, const double nu) +{ + double chisq = 2 * gsl_ran_gamma (r, nu / 2, 1.0); + return chisq; +} + +double +gsl_ran_chisq_pdf (const double x, const double nu) +{ + if (x < 0) + { + return 0 ; + } + else + { + if(nu == 2.0) + { + return exp(-x/2.0) / 2.0; + } + else + { + double p; + double lngamma = gsl_sf_lngamma (nu / 2); + + p = exp ((nu / 2 - 1) * log (x/2) - x/2 - lngamma) / 2; + return p; + } + } +} diff --git a/gsl-2.5/randist/chisq.lo b/gsl-2.5/randist/chisq.lo new file mode 100644 index 00000000..667318b6 --- /dev/null +++ b/gsl-2.5/randist/chisq.lo @@ -0,0 +1,12 @@ +# chisq.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/chisq.o' + +# Name of the non-PIC object +non_pic_object='chisq.o' + diff --git a/gsl-2.5/randist/dirichlet.c b/gsl-2.5/randist/dirichlet.c new file mode 100644 index 00000000..b6c7713e --- /dev/null +++ b/gsl-2.5/randist/dirichlet.c @@ -0,0 +1,163 @@ +/* randist/dirichlet.c + * + * Copyright (C) 2007 Brian Gough + * Copyright (C) 2002 Gavin E. Crooks + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include + + +/* The Dirichlet probability distribution of order K-1 is + + p(\theta_1,...,\theta_K) d\theta_1 ... d\theta_K = + (1/Z) \prod_i=1,K \theta_i^{alpha_i - 1} \delta(1 -\sum_i=1,K \theta_i) + + The normalization factor Z can be expressed in terms of gamma functions: + + Z = {\prod_i=1,K \Gamma(\alpha_i)} / {\Gamma( \sum_i=1,K \alpha_i)} + + The K constants, \alpha_1,...,\alpha_K, must be positive. The K parameters, + \theta_1,...,\theta_K are nonnegative and sum to 1. + + The random variates are generated by sampling K values from gamma + distributions with parameters a=\alpha_i, b=1, and renormalizing. + See A.M. Law, W.D. Kelton, Simulation Modeling and Analysis (1991). + + Gavin E. Crooks (2002) +*/ + +static void ran_dirichlet_small (const gsl_rng * r, const size_t K, const double alpha[], double theta[]); + +void +gsl_ran_dirichlet (const gsl_rng * r, const size_t K, + const double alpha[], double theta[]) +{ + size_t i; + double norm = 0.0; + + for (i = 0; i < K; i++) + { + theta[i] = gsl_ran_gamma (r, alpha[i], 1.0); + } + + for (i = 0; i < K; i++) + { + norm += theta[i]; + } + + if (norm < GSL_SQRT_DBL_MIN) /* Handle underflow */ + { + ran_dirichlet_small (r, K, alpha, theta); + return; + } + + for (i = 0; i < K; i++) + { + theta[i] /= norm; + } +} + + +/* When the values of alpha[] are small, scale the variates to avoid + underflow so that the result is not 0/0. Note that the Dirichlet + distribution is defined by a ratio of gamma functions so we can + take out an arbitrary factor to keep the values in the range of + double precision. */ + +static void +ran_dirichlet_small (const gsl_rng * r, const size_t K, + const double alpha[], double theta[]) +{ + size_t i; + double norm = 0.0, umax = 0; + + for (i = 0; i < K; i++) + { + double u = log(gsl_rng_uniform_pos (r)) / alpha[i]; + + theta[i] = u; + + if (u > umax || i == 0) { + umax = u; + } + } + + for (i = 0; i < K; i++) + { + theta[i] = exp(theta[i] - umax); + } + + for (i = 0; i < K; i++) + { + theta[i] = theta[i] * gsl_ran_gamma (r, alpha[i] + 1.0, 1.0); + } + + for (i = 0; i < K; i++) + { + norm += theta[i]; + } + + for (i = 0; i < K; i++) + { + theta[i] /= norm; + } +} + + + + + +double +gsl_ran_dirichlet_pdf (const size_t K, + const double alpha[], const double theta[]) +{ + return exp (gsl_ran_dirichlet_lnpdf (K, alpha, theta)); +} + +double +gsl_ran_dirichlet_lnpdf (const size_t K, + const double alpha[], const double theta[]) +{ + /*We calculate the log of the pdf to minimize the possibility of overflow */ + size_t i; + double log_p = 0.0; + double sum_alpha = 0.0; + + for (i = 0; i < K; i++) + { + log_p += (alpha[i] - 1.0) * log (theta[i]); + } + + for (i = 0; i < K; i++) + { + sum_alpha += alpha[i]; + } + + log_p += gsl_sf_lngamma (sum_alpha); + + for (i = 0; i < K; i++) + { + log_p -= gsl_sf_lngamma (alpha[i]); + } + + return log_p; +} diff --git a/gsl-2.5/randist/dirichlet.lo b/gsl-2.5/randist/dirichlet.lo new file mode 100644 index 00000000..41d8baa2 --- /dev/null +++ b/gsl-2.5/randist/dirichlet.lo @@ -0,0 +1,12 @@ +# dirichlet.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/dirichlet.o' + +# Name of the non-PIC object +non_pic_object='dirichlet.o' + diff --git a/gsl-2.5/randist/discrete.c b/gsl-2.5/randist/discrete.c new file mode 100644 index 00000000..e6261127 --- /dev/null +++ b/gsl-2.5/randist/discrete.c @@ -0,0 +1,406 @@ +/* randist/discrete.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007, 2009 James Theiler, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this library; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* + Random Discrete Events + + Given K discrete events with different probabilities P[k] + produce a value k consistent with its probability. + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 3 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. You should have received + a copy of the GNU General Public License along with this library; if + not, write to the Free Software Foundation, Inc., 51 Franklin Street, + Fifth Floor, Boston, MA 02110-1301, USA. +*/ + +/* + * Based on: Alastair J Walker, An efficient method for generating + * discrete random variables with general distributions, ACM Trans + * Math Soft 3, 253-256 (1977). See also: D. E. Knuth, The Art of + * Computer Programming, Volume 2 (Seminumerical algorithms), 3rd + * edition, Addison-Wesley (1997), p120. + + * Walker's algorithm does some preprocessing, and provides two + * arrays: floating point F[k] and integer A[k]. A value k is chosen + * from 0..K-1 with equal likelihood, and then a uniform random number + * u is compared to F[k]. If it is less than F[k], then k is + * returned. Otherwise, A[k] is returned. + + * Walker's original paper describes an O(K^2) algorithm for setting + * up the F and A arrays. I found this disturbing since I wanted to + * use very large values of K. I'm sure I'm not the first to realize + * this, but in fact the preprocessing can be done in O(K) steps. + + * A figure of merit for the preprocessing is the average value for + * the F[k]'s (that is, SUM_k F[k]/K); this corresponds to the + * probability that k is returned, instead of A[k], thereby saving a + * redirection. Walker's O(K^2) preprocessing will generally improve + * that figure of merit, compared to my cheaper O(K) method; from some + * experiments with a perl script, I get values of around 0.6 for my + * method and just under 0.75 for Walker's. Knuth has pointed out + * that finding _the_ optimum lookup tables, which maximize the + * average F[k], is a combinatorially difficult problem. But any + * valid preprocessing will still provide O(1) time for the call to + * gsl_ran_discrete(). I find that if I artificially set F[k]=1 -- + * ie, better than optimum! -- I get a speedup of maybe 20%, so that's + * the maximum I could expect from the most expensive preprocessing. + * Folding in the difference of 0.6 vs 0.75, I'd estimate that the + * speedup would be less than 10%. + + * I've not implemented it here, but one compromise is to sort the + * probabilities once, and then work from the two ends inward. This + * requires O(K log K), still lots cheaper than O(K^2), and from my + * experiments with the perl script, the figure of merit is within + * about 0.01 for K up to 1000, and no sign of diverging (in fact, + * they seemed to be converging, but it's hard to say with just a + * handful of runs). + + * The O(K) algorithm goes through all the p_k's and decides if they + * are "smalls" or "bigs" according to whether they are less than or + * greater than the mean value 1/K. The indices to the smalls and the + * bigs are put in separate stacks, and then we work through the + * stacks together. For each small, we pair it up with the next big + * in the stack (Walker always wanted to pair up the smallest small + * with the biggest big). The small "borrows" from the big just + * enough to bring the small up to mean. This reduces the size of the + * big, so the (smaller) big is compared again to the mean, and if it + * is smaller, it gets "popped" from the big stack and "pushed" to the + * small stack. Otherwise, it stays put. Since every time we pop a + * small, we are able to deal with it right then and there, and we + * never have to pop more than K smalls, then the algorithm is O(K). + + * This implementation sets up two separate stacks, and allocates K + * elements between them. Since neither stack ever grows, we do an + * extra O(K) pass through the data to determine how many smalls and + * bigs there are to begin with and allocate appropriately. In all + * there are 2*K*sizeof(double) transient bytes of memory that are + * used than returned, and K*(sizeof(int)+sizeof(double)) bytes used + * in the lookup table. + + * Walker spoke of using two random numbers (an integer 0..K-1, and a + * floating point u in [0,1]), but Knuth points out that one can just + * use the integer and fractional parts of K*u where u is in [0,1]. + * In fact, Knuth further notes that taking F'[k]=(k+F[k])/K, one can + * directly compare u to F'[k] without having to explicitly set + * u=K*u-int(K*u). + + * Usage: + + * Starting with an array of probabilities P, initialize and do + * preprocessing with a call to: + + * gsl_rng *r; + * gsl_ran_discrete_t *f; + * f = gsl_ran_discrete_preproc(K,P); + + * Then, whenever a random index 0..K-1 is desired, use + + * k = gsl_ran_discrete(r,f); + + * Note that several different randevent struct's can be + * simultaneously active. + + * Aside: A very clever alternative approach is described in + * Abramowitz and Stegun, p 950, citing: Marsaglia, Random variables + * and computers, Proc Third Prague Conference in Probability Theory, + * 1962. A more accesible reference is: G. Marsaglia, Generating + * discrete random numbers in a computer, Comm ACM 6, 37-38 (1963). + * If anybody is interested, I (jt) have also coded up this version as + * part of another software package. However, I've done some + * comparisons, and the Walker method is both faster and more stingy + * with memory. So, in the end I decided not to include it with the + * GSL package. + + * Written 26 Jan 1999, James Theiler, jt@lanl.gov + * Adapted to GSL, 30 Jan 1999, jt + + */ + +#include +#include /* used for NULL, also fprintf(stderr,...) */ +#include /* used for malloc's */ +#include +#include +#include +#include +#define DEBUG 0 +#define KNUTH_CONVENTION 1 /* Saves a few steps of arithmetic + * in the call to gsl_ran_discrete() + */ + +/*** Begin Stack (this code is used just in this file) ***/ + +/* Stack code converted to use unsigned indices (i.e. s->i == 0 now + means an empty stack, instead of -1), for consistency and to give a + bigger allowable range. BJG */ + +typedef struct { + size_t N; /* max number of elts on stack */ + size_t *v; /* array of values on the stack */ + size_t i; /* index of top of stack */ +} gsl_stack_t; + +static gsl_stack_t * +new_stack(size_t N) { + gsl_stack_t *s; + s = (gsl_stack_t *)malloc(sizeof(gsl_stack_t)); + s->N = N; + s->i = 0; /* indicates stack is empty */ + s->v = (size_t *)malloc(sizeof(size_t)*N); + return s; +} + +static int +push_stack(gsl_stack_t *s, size_t v) +{ + if ((s->i) >= (s->N)) { + return -1; /* stack overflow (shouldn't happen) */ + } + (s->v)[s->i] = v; + s->i += 1; + return 0; +} + +static size_t pop_stack(gsl_stack_t *s) +{ + if ((s->i) == 0) { + GSL_ERROR ("internal error - stack exhausted", GSL_ESANITY); + } + s->i -= 1; + return ((s->v)[s->i]); +} + +static inline size_t size_stack(const gsl_stack_t *s) +{ + return s->i; +} + +static void free_stack(gsl_stack_t *s) +{ + free((char *)(s->v)); + free((char *)s); +} + +/*** End Stack ***/ + + +/*** Begin Walker's Algorithm ***/ + +gsl_ran_discrete_t * +gsl_ran_discrete_preproc(size_t Kevents, const double *ProbArray) +{ + size_t k,b,s; + gsl_ran_discrete_t *g; + size_t nBigs, nSmalls; + gsl_stack_t *Bigs; + gsl_stack_t *Smalls; + double *E; + double pTotal = 0.0, mean, d; + + if (Kevents < 1) { + /* Could probably treat Kevents=1 as a special case */ + + GSL_ERROR_VAL ("number of events must be a positive integer", + GSL_EINVAL, 0); + } + + /* Make sure elements of ProbArray[] are positive. + * Won't enforce that sum is unity; instead will just normalize + */ + + for (k=0; kK = Kevents; + g->F = (double *)malloc(sizeof(double)*Kevents); + g->A = (size_t *)malloc(sizeof(size_t)*Kevents); + + E = (double *)malloc(sizeof(double)*Kevents); + + if (E==NULL) { + GSL_ERROR_VAL ("Cannot allocate memory for randevent", GSL_ENOMEM, 0); + } + + for (k=0; kA[k] to indicate small or large */ + size_t * const which = g->A; + + for (k=0; k 0) { + s = pop_stack(Smalls); + if (size_stack(Bigs) == 0) { + (g->A)[s]=s; + (g->F)[s]=1.0; + continue; + } + b = pop_stack(Bigs); + (g->A)[s]=b; + (g->F)[s]=Kevents*E[s]; +#if DEBUG + fprintf(stderr,"s=%2d, A=%2d, F=%.4f\n",s,(g->A)[s],(g->F)[s]); +#endif + d = mean - E[s]; + E[s] += d; /* now E[s] == mean */ + E[b] -= d; + if (E[b] < mean) { + push_stack(Smalls,b); /* no longer big, join ranks of the small */ + } + else if (E[b] > mean) { + push_stack(Bigs,b); /* still big, put it back where you found it */ + } + else { + /* E[b]==mean implies it is finished too */ + (g->A)[b]=b; + (g->F)[b]=1.0; + } + } + while (size_stack(Bigs) > 0) { + b = pop_stack(Bigs); + (g->A)[b]=b; + (g->F)[b]=1.0; + } + /* Stacks have been emptied, and A and F have been filled */ + + if ( size_stack(Smalls) != 0) { + GSL_ERROR_VAL ("Smalls stack has not been emptied", + GSL_ESANITY, 0 ); + } + +#if 0 + /* if 1, then artificially set all F[k]'s to unity. This will + * give wrong answers, but you'll get them faster. But, not + * that much faster (I get maybe 20%); that's an upper bound + * on what the optimal preprocessing would give. + */ + for (k=0; kF)[k] = 1.0; + } +#endif + +#if KNUTH_CONVENTION + /* For convenience, set F'[k]=(k+F[k])/K */ + /* This saves some arithmetic in gsl_ran_discrete(); I find that + * it doesn't actually make much difference. + */ + for (k=0; kF)[k] += k; + (g->F)[k] /= Kevents; + } +#endif + + free_stack(Bigs); + free_stack(Smalls); + free((char *)E); + + return g; +} + +size_t +gsl_ran_discrete(const gsl_rng *r, const gsl_ran_discrete_t *g) +{ + size_t c=0; + double u,f; + u = gsl_rng_uniform(r); +#if KNUTH_CONVENTION + c = (u*(g->K)); +#else + u *= g->K; + c = u; + u -= c; +#endif + f = (g->F)[c]; + /* fprintf(stderr,"c,f,u: %d %.4f %f\n",c,f,u); */ + if (f == 1.0) return c; + + if (u < f) { + return c; + } + else { + return (g->A)[c]; + } +} + +void gsl_ran_discrete_free(gsl_ran_discrete_t *g) +{ + RETURN_IF_NULL (g); + free((char *)(g->A)); + free((char *)(g->F)); + free((char *)g); +} + +double +gsl_ran_discrete_pdf(size_t k, const gsl_ran_discrete_t *g) +{ + size_t i,K; + double f,p=0; + K= g->K; + if (k>K) return 0; + for (i=0; iF)[i]; +#if KNUTH_CONVENTION + f = K*f-i; +#endif + if (i==k) { + p += f; + } else if (k == (g->A)[i]) { + p += 1.0 - f; + } + } + return p/K; +} diff --git a/gsl-2.5/randist/discrete.lo b/gsl-2.5/randist/discrete.lo new file mode 100644 index 00000000..a27571dc --- /dev/null +++ b/gsl-2.5/randist/discrete.lo @@ -0,0 +1,12 @@ +# discrete.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/discrete.o' + +# Name of the non-PIC object +non_pic_object='discrete.o' + diff --git a/gsl-2.5/randist/erlang.c b/gsl-2.5/randist/erlang.c new file mode 100644 index 00000000..e3635f1f --- /dev/null +++ b/gsl-2.5/randist/erlang.c @@ -0,0 +1,54 @@ +/* randist/erlang.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 James Theiler, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include + +/* The sum of N samples from an exponential distribution gives an + Erlang distribution + + p(x) dx = x^(n-1) exp (-x/a) / ((n-1)!a^n) dx + + for x = 0 ... +infty */ + +double +gsl_ran_erlang (const gsl_rng * r, const double a, const double n) +{ + return gsl_ran_gamma (r, n, a); +} + +double +gsl_ran_erlang_pdf (const double x, const double a, const double n) +{ + if (x <= 0) + { + return 0 ; + } + else + { + double p; + double lngamma = gsl_sf_lngamma (n); + + p = exp ((n - 1) * log (x/a) - x/a - lngamma) / a; + return p; + } +} diff --git a/gsl-2.5/randist/erlang.lo b/gsl-2.5/randist/erlang.lo new file mode 100644 index 00000000..5564ecca --- /dev/null +++ b/gsl-2.5/randist/erlang.lo @@ -0,0 +1,12 @@ +# erlang.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/erlang.o' + +# Name of the non-PIC object +non_pic_object='erlang.o' + diff --git a/gsl-2.5/randist/exponential.c b/gsl-2.5/randist/exponential.c new file mode 100644 index 00000000..e13e1379 --- /dev/null +++ b/gsl-2.5/randist/exponential.c @@ -0,0 +1,53 @@ +/* randist/exponential.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007, 2009 James Theiler, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include + +/* The exponential distribution has the form + + p(x) dx = exp(-x/mu) dx/mu + + for x = 0 ... +infty */ + +double +gsl_ran_exponential (const gsl_rng * r, const double mu) +{ + double u = gsl_rng_uniform (r); + + return -mu * log1p (-u); +} + +double +gsl_ran_exponential_pdf (const double x, const double mu) +{ + if (x < 0) + { + return 0 ; + } + else + { + double p = exp (-x/mu)/mu; + + return p; + } +} diff --git a/gsl-2.5/randist/exponential.lo b/gsl-2.5/randist/exponential.lo new file mode 100644 index 00000000..0d80ec78 --- /dev/null +++ b/gsl-2.5/randist/exponential.lo @@ -0,0 +1,12 @@ +# exponential.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/exponential.o' + +# Name of the non-PIC object +non_pic_object='exponential.o' + diff --git a/gsl-2.5/randist/exppow.c b/gsl-2.5/randist/exppow.c new file mode 100644 index 00000000..f3fce0be --- /dev/null +++ b/gsl-2.5/randist/exppow.c @@ -0,0 +1,122 @@ +/* randist/exppow.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2006, 2007 James Theiler, Brian Gough + * Copyright (C) 2006 Giulio Bottazzi + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include + +/* The exponential power probability distribution is + + p(x) dx = (1/(2 a Gamma(1+1/b))) * exp(-|x/a|^b) dx + + for -infty < x < infty. For b = 1 it reduces to the Laplace + distribution. + + The exponential power distribution is related to the gamma + distribution by E = a * pow(G(1/b),1/b), where E is an exponential + power variate and G is a gamma variate. + + We use this relation for b < 1. For b >=1 we use rejection methods + based on the laplace and gaussian distributions which should be + faster. For b>4 we revert to the gamma method. + + See P. R. Tadikamalla, "Random Sampling from the Exponential Power + Distribution", Journal of the American Statistical Association, + September 1980, Volume 75, Number 371, pages 683-686. + +*/ + +double +gsl_ran_exppow (const gsl_rng * r, const double a, const double b) +{ + if (b < 1 || b > 4) + { + double u = gsl_rng_uniform (r); + double v = gsl_ran_gamma (r, 1 / b, 1.0); + double z = a * pow (v, 1 / b); + + if (u > 0.5) + { + return z; + } + else + { + return -z; + } + } + else if (b == 1) + { + /* Laplace distribution */ + return gsl_ran_laplace (r, a); + } + else if (b < 2) + { + /* Use laplace distribution for rejection method, from Tadikamalla */ + + double x, h, u; + + double B = pow (1 / b, 1 / b); + + do + { + x = gsl_ran_laplace (r, B); + u = gsl_rng_uniform_pos (r); + h = -pow (fabs (x), b) + fabs (x) / B - 1 + (1 / b); + } + while (log (u) > h); + + return a * x; + } + else if (b == 2) + { + /* Gaussian distribution */ + return gsl_ran_gaussian (r, a / sqrt (2.0)); + } + else + { + /* Use gaussian for rejection method, from Tadikamalla */ + + double x, h, u; + + double B = pow (1 / b, 1 / b); + + do + { + x = gsl_ran_gaussian (r, B); + u = gsl_rng_uniform_pos (r); + h = -pow (fabs (x), b) + (x * x) / (2 * B * B) + (1 / b) - 0.5; + } + while (log (u) > h); + + return a * x; + } +} + +double +gsl_ran_exppow_pdf (const double x, const double a, const double b) +{ + double p; + double lngamma = gsl_sf_lngamma (1 + 1 / b); + p = (1 / (2 * a)) * exp (-pow (fabs (x / a), b) - lngamma); + return p; +} diff --git a/gsl-2.5/randist/exppow.lo b/gsl-2.5/randist/exppow.lo new file mode 100644 index 00000000..80c279a2 --- /dev/null +++ b/gsl-2.5/randist/exppow.lo @@ -0,0 +1,12 @@ +# exppow.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/exppow.o' + +# Name of the non-PIC object +non_pic_object='exppow.o' + diff --git a/gsl-2.5/randist/fdist.c b/gsl-2.5/randist/fdist.c new file mode 100644 index 00000000..2aef9e89 --- /dev/null +++ b/gsl-2.5/randist/fdist.c @@ -0,0 +1,68 @@ +/* randist/fdist.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007, 2010 James Theiler, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include + +/* The F distribution has the form + + p(x) dx = (nu1^(nu1/2) nu2^(nu2/2) Gamma((nu1 + nu2)/2) / + Gamma(nu1/2) Gamma(nu2/2)) * + x^(nu1/2 - 1) (nu2 + nu1 * x)^(-nu1/2 -nu2/2) dx + + The method used here is the one described in Knuth */ + +double +gsl_ran_fdist (const gsl_rng * r, const double nu1, const double nu2) +{ + + double Y1 = gsl_ran_gamma (r, nu1 / 2, 2.0); + double Y2 = gsl_ran_gamma (r, nu2 / 2, 2.0); + + double f = (Y1 * nu2) / (Y2 * nu1); + + return f; +} + +double +gsl_ran_fdist_pdf (const double x, const double nu1, const double nu2) +{ + if (x < 0) + { + return 0 ; + } + else + { + double p; + double lglg = (nu1 / 2) * log (nu1) + (nu2 / 2) * log (nu2) ; + + double lg12 = gsl_sf_lngamma ((nu1 + nu2) / 2); + double lg1 = gsl_sf_lngamma (nu1 / 2); + double lg2 = gsl_sf_lngamma (nu2 / 2); + + p = + exp (lglg + lg12 - lg1 - lg2 + (nu1 / 2 - 1) * log (x) - + ((nu1 + nu2) / 2) * log (nu2 + nu1 * x)); + + return p; + } +} diff --git a/gsl-2.5/randist/fdist.lo b/gsl-2.5/randist/fdist.lo new file mode 100644 index 00000000..91d93140 --- /dev/null +++ b/gsl-2.5/randist/fdist.lo @@ -0,0 +1,12 @@ +# fdist.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/fdist.o' + +# Name of the non-PIC object +non_pic_object='fdist.o' + diff --git a/gsl-2.5/randist/flat.c b/gsl-2.5/randist/flat.c new file mode 100644 index 00000000..d81d4149 --- /dev/null +++ b/gsl-2.5/randist/flat.c @@ -0,0 +1,53 @@ +/* randist/flat.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 James Theiler, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include + +/* This is the uniform distribution in the range [a, b) + + p(x) dx = 1/(b-a) dx if a <= x < b + ..... = 0 otherwise + + */ + +double +gsl_ran_flat (const gsl_rng * r, const double a, const double b) +{ + double u = gsl_rng_uniform (r); + + /* A uniform distribution over [a,b) */ + + return a * (1 - u) + b * u; +} + +double +gsl_ran_flat_pdf (double x, const double a, const double b) +{ + if (x < b && x >= a) + { + return 1 / (b - a); + } + else + { + return 0; + } +} diff --git a/gsl-2.5/randist/flat.lo b/gsl-2.5/randist/flat.lo new file mode 100644 index 00000000..71d9ad33 --- /dev/null +++ b/gsl-2.5/randist/flat.lo @@ -0,0 +1,12 @@ +# flat.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/flat.o' + +# Name of the non-PIC object +non_pic_object='flat.o' + diff --git a/gsl-2.5/randist/gamma.c b/gsl-2.5/randist/gamma.c new file mode 100644 index 00000000..3dd350d8 --- /dev/null +++ b/gsl-2.5/randist/gamma.c @@ -0,0 +1,229 @@ +/* randist/gamma.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 James Theiler, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include + +static double gamma_large (const gsl_rng * r, const double a); +static double gamma_frac (const gsl_rng * r, const double a); + +/* The Gamma distribution of order a>0 is defined by: + + p(x) dx = {1 / \Gamma(a) b^a } x^{a-1} e^{-x/b} dx + + for x>0. If X and Y are independent gamma-distributed random + variables of order a1 and a2 with the same scale parameter b, then + X+Y has gamma distribution of order a1+a2. + + The algorithms below are from Knuth, vol 2, 2nd ed, p. 129. */ + +double +gsl_ran_gamma_knuth (const gsl_rng * r, const double a, const double b) +{ + /* assume a > 0 */ + unsigned int na = floor (a); + + if(a >= UINT_MAX) + { + return b * (gamma_large (r, floor (a)) + gamma_frac (r, a - floor (a))); + } + else if (a == na) + { + return b * gsl_ran_gamma_int (r, na); + } + else if (na == 0) + { + return b * gamma_frac (r, a); + } + else + { + return b * (gsl_ran_gamma_int (r, na) + gamma_frac (r, a - na)) ; + } +} + +double +gsl_ran_gamma_int (const gsl_rng * r, const unsigned int a) +{ + if (a < 12) + { + unsigned int i; + double prod = 1; + + for (i = 0; i < a; i++) + { + prod *= gsl_rng_uniform_pos (r); + } + + /* Note: for 12 iterations we are safe against underflow, since + the smallest positive random number is O(2^-32). This means + the smallest possible product is 2^(-12*32) = 10^-116 which + is within the range of double precision. */ + + return -log (prod); + } + else + { + return gamma_large (r, (double) a); + } +} + +static double +gamma_large (const gsl_rng * r, const double a) +{ + /* Works only if a > 1, and is most efficient if a is large + + This algorithm, reported in Knuth, is attributed to Ahrens. A + faster one, we are told, can be found in: J. H. Ahrens and + U. Dieter, Computing 12 (1974) 223-246. */ + + double sqa, x, y, v; + sqa = sqrt (2 * a - 1); + do + { + do + { + y = tan (M_PI * gsl_rng_uniform (r)); + x = sqa * y + a - 1; + } + while (x <= 0); + v = gsl_rng_uniform (r); + } + while (v > (1 + y * y) * exp ((a - 1) * log (x / (a - 1)) - sqa * y)); + + return x; +} + +static double +gamma_frac (const gsl_rng * r, const double a) +{ + /* This is exercise 16 from Knuth; see page 135, and the solution is + on page 551. */ + + double p, q, x, u, v; + + if (a == 0) { + return 0; + } + + p = M_E / (a + M_E); + do + { + u = gsl_rng_uniform (r); + v = gsl_rng_uniform_pos (r); + + if (u < p) + { + x = exp ((1 / a) * log (v)); + q = exp (-x); + } + else + { + x = 1 - log (v); + q = exp ((a - 1) * log (x)); + } + } + while (gsl_rng_uniform (r) >= q); + + return x; +} + +double +gsl_ran_gamma_pdf (const double x, const double a, const double b) +{ + if (x < 0) + { + return 0 ; + } + else if (x == 0) + { + if (a == 1) + return 1/b ; + else + return 0 ; + } + else if (a == 1) + { + return exp(-x/b)/b ; + } + else + { + double p; + double lngamma = gsl_sf_lngamma (a); + p = exp ((a - 1) * log (x/b) - x/b - lngamma)/b; + return p; + } +} + + +/* New version based on Marsaglia and Tsang, "A Simple Method for + * generating gamma variables", ACM Transactions on Mathematical + * Software, Vol 26, No 3 (2000), p363-372. + * + * Implemented by J.D.Lamb@btinternet.com, minor modifications for GSL + * by Brian Gough + */ + +double +gsl_ran_gamma_mt (const gsl_rng * r, const double a, const double b) +{ + return gsl_ran_gamma (r, a, b); +} + +double +gsl_ran_gamma (const gsl_rng * r, const double a, const double b) +{ + /* assume a > 0 */ + + if (a < 1) + { + double u = gsl_rng_uniform_pos (r); + return gsl_ran_gamma (r, 1.0 + a, b) * pow (u, 1.0 / a); + } + + { + double x, v, u; + double d = a - 1.0 / 3.0; + double c = (1.0 / 3.0) / sqrt (d); + + while (1) + { + do + { + x = gsl_ran_gaussian_ziggurat (r, 1.0); + v = 1.0 + c * x; + } + while (v <= 0); + + v = v * v * v; + u = gsl_rng_uniform_pos (r); + + if (u < 1 - 0.0331 * x * x * x * x) + break; + + if (log (u) < 0.5 * x * x + d * (1 - v + log (v))) + break; + } + + return b * d * v; + } +} diff --git a/gsl-2.5/randist/gamma.lo b/gsl-2.5/randist/gamma.lo new file mode 100644 index 00000000..b2747205 --- /dev/null +++ b/gsl-2.5/randist/gamma.lo @@ -0,0 +1,12 @@ +# gamma.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/gamma.o' + +# Name of the non-PIC object +non_pic_object='gamma.o' + diff --git a/gsl-2.5/randist/gauss.c b/gsl-2.5/randist/gauss.c new file mode 100644 index 00000000..1b3442ea --- /dev/null +++ b/gsl-2.5/randist/gauss.c @@ -0,0 +1,143 @@ +/* randist/gauss.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2006, 2007 James Theiler, Brian Gough + * Copyright (C) 2006 Charles Karney + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include + +/* Of the two methods provided below, I think the Polar method is more + * efficient, but only when you are actually producing two random + * deviates. We don't produce two, because then we'd have to save one + * in a static variable for the next call, and that would screws up + * re-entrant or threaded code, so we only produce one. This makes + * the Ratio method suddenly more appealing. + * + * [Added by Charles Karney] We use Leva's implementation of the Ratio + * method which avoids calling log() nearly all the time and makes the + * Ratio method faster than the Polar method (when it produces just one + * result per call). Timing per call (gcc -O2 on 866MHz Pentium, + * average over 10^8 calls) + * + * Polar method: 660 ns + * Ratio method: 368 ns + * + */ + +/* Polar (Box-Mueller) method; See Knuth v2, 3rd ed, p122 */ + +double +gsl_ran_gaussian (const gsl_rng * r, const double sigma) +{ + double x, y, r2; + + do + { + /* choose x,y in uniform square (-1,-1) to (+1,+1) */ + x = -1 + 2 * gsl_rng_uniform_pos (r); + y = -1 + 2 * gsl_rng_uniform_pos (r); + + /* see if it is in the unit circle */ + r2 = x * x + y * y; + } + while (r2 > 1.0 || r2 == 0); + + /* Box-Muller transform */ + return sigma * y * sqrt (-2.0 * log (r2) / r2); +} + +/* Ratio method (Kinderman-Monahan); see Knuth v2, 3rd ed, p130. + * K+M, ACM Trans Math Software 3 (1977) 257-260. + * + * [Added by Charles Karney] This is an implementation of Leva's + * modifications to the original K+M method; see: + * J. L. Leva, ACM Trans Math Software 18 (1992) 449-453 and 454-455. */ + +double +gsl_ran_gaussian_ratio_method (const gsl_rng * r, const double sigma) +{ + double u, v, x, y, Q; + const double s = 0.449871; /* Constants from Leva */ + const double t = -0.386595; + const double a = 0.19600; + const double b = 0.25472; + const double r1 = 0.27597; + const double r2 = 0.27846; + + do /* This loop is executed 1.369 times on average */ + { + /* Generate a point P = (u, v) uniform in a rectangle enclosing + the K+M region v^2 <= - 4 u^2 log(u). */ + + /* u in (0, 1] to avoid singularity at u = 0 */ + u = 1 - gsl_rng_uniform (r); + + /* v is in the asymmetric interval [-0.5, 0.5). However v = -0.5 + is rejected in the last part of the while clause. The + resulting normal deviate is strictly symmetric about 0 + (provided that v is symmetric once v = -0.5 is excluded). */ + v = gsl_rng_uniform (r) - 0.5; + + /* Constant 1.7156 > sqrt(8/e) (for accuracy); but not by too + much (for efficiency). */ + v *= 1.7156; + + /* Compute Leva's quadratic form Q */ + x = u - s; + y = fabs (v) - t; + Q = x * x + y * (a * y - b * x); + + /* Accept P if Q < r1 (Leva) */ + /* Reject P if Q > r2 (Leva) */ + /* Accept if v^2 <= -4 u^2 log(u) (K+M) */ + /* This final test is executed 0.012 times on average. */ + } + while (Q >= r1 && (Q > r2 || v * v > -4 * u * u * log (u))); + + return sigma * (v / u); /* Return slope */ +} + +double +gsl_ran_gaussian_pdf (const double x, const double sigma) +{ + double u = x / fabs (sigma); + double p = (1 / (sqrt (2 * M_PI) * fabs (sigma))) * exp (-u * u / 2); + return p; +} + +double +gsl_ran_ugaussian (const gsl_rng * r) +{ + return gsl_ran_gaussian (r, 1.0); +} + +double +gsl_ran_ugaussian_ratio_method (const gsl_rng * r) +{ + return gsl_ran_gaussian_ratio_method (r, 1.0); +} + +double +gsl_ran_ugaussian_pdf (const double x) +{ + return gsl_ran_gaussian_pdf (x, 1.0); +} + diff --git a/gsl-2.5/randist/gauss.lo b/gsl-2.5/randist/gauss.lo new file mode 100644 index 00000000..85827fe5 --- /dev/null +++ b/gsl-2.5/randist/gauss.lo @@ -0,0 +1,12 @@ +# gauss.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/gauss.o' + +# Name of the non-PIC object +non_pic_object='gauss.o' + diff --git a/gsl-2.5/randist/gausstail.c b/gsl-2.5/randist/gausstail.c new file mode 100644 index 00000000..e7c9ced7 --- /dev/null +++ b/gsl-2.5/randist/gausstail.c @@ -0,0 +1,107 @@ +/* randist/gausstail.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 James Theiler, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include + +double +gsl_ran_gaussian_tail (const gsl_rng * r, const double a, const double sigma) +{ + /* Returns a gaussian random variable larger than a + * This implementation does one-sided upper-tailed deviates. + */ + + double s = a / sigma; + + if (s < 1) + { + /* For small s, use a direct rejection method. The limit s < 1 + can be adjusted to optimise the overall efficiency */ + + double x; + + do + { + x = gsl_ran_gaussian (r, 1.0); + } + while (x < s); + return x * sigma; + } + else + { + /* Use the "supertail" deviates from the last two steps + * of Marsaglia's rectangle-wedge-tail method, as described + * in Knuth, v2, 3rd ed, pp 123-128. (See also exercise 11, p139, + * and the solution, p586.) + */ + + double u, v, x; + + do + { + u = gsl_rng_uniform (r); + do + { + v = gsl_rng_uniform (r); + } + while (v == 0.0); + x = sqrt (s * s - 2 * log (v)); + } + while (x * u > s); + return x * sigma; + } +} + +double +gsl_ran_gaussian_tail_pdf (const double x, const double a, const double sigma) +{ + if (x < a) + { + return 0; + } + else + { + double N, p; + double u = x / sigma ; + + double f = gsl_sf_erfc (a / (sqrt (2.0) * sigma)); + + N = 0.5 * f; + + p = (1 / (N * sqrt (2 * M_PI) * sigma)) * exp (-u * u / 2); + + return p; + } +} + +double +gsl_ran_ugaussian_tail (const gsl_rng * r, const double a) +{ + return gsl_ran_gaussian_tail (r, a, 1.0) ; +} + +double +gsl_ran_ugaussian_tail_pdf (const double x, const double a) +{ + return gsl_ran_gaussian_tail_pdf (x, a, 1.0) ; +} diff --git a/gsl-2.5/randist/gausstail.lo b/gsl-2.5/randist/gausstail.lo new file mode 100644 index 00000000..066e732b --- /dev/null +++ b/gsl-2.5/randist/gausstail.lo @@ -0,0 +1,12 @@ +# gausstail.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/gausstail.o' + +# Name of the non-PIC object +non_pic_object='gausstail.o' + diff --git a/gsl-2.5/randist/gausszig.c b/gsl-2.5/randist/gausszig.c new file mode 100644 index 00000000..7fcd464e --- /dev/null +++ b/gsl-2.5/randist/gausszig.c @@ -0,0 +1,227 @@ +/* gauss.c - gaussian random numbers, using the Ziggurat method + * + * Copyright (C) 2005 Jochen Voss. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this library; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* + * This routine is based on the following article, with a couple of + * modifications which simplify the implementation. + * + * George Marsaglia, Wai Wan Tsang + * The Ziggurat Method for Generating Random Variables + * Journal of Statistical Software, vol. 5 (2000), no. 8 + * http://www.jstatsoft.org/v05/i08/ + * + * The modifications are: + * + * 1) use 128 steps instead of 256 to decrease the amount of static + * data necessary. + * + * 2) use an acceptance sampling from an exponential wedge + * exp(-R*(x-R/2)) for the tail of the base strip to simplify the + * implementation. The area of exponential wedge is used in + * calculating 'v' and the coefficients in ziggurat table, so the + * coefficients differ slightly from those in the Marsaglia and Tsang + * paper. + * + * See also Leong et al, "A Comment on the Implementation of the + * Ziggurat Method", Journal of Statistical Software, vol 5 (2005), no 7. + * + */ + + +#include +#include +#include +#include +#include + +/* position of right-most step */ +#define PARAM_R 3.44428647676 + +/* tabulated values for the heigt of the Ziggurat levels */ +static const double ytab[128] = { + 1, 0.963598623011, 0.936280813353, 0.913041104253, + 0.892278506696, 0.873239356919, 0.855496407634, 0.838778928349, + 0.822902083699, 0.807732738234, 0.793171045519, 0.779139726505, + 0.765577436082, 0.752434456248, 0.739669787677, 0.727249120285, + 0.715143377413, 0.703327646455, 0.691780377035, 0.68048276891, + 0.669418297233, 0.65857233912, 0.647931876189, 0.637485254896, + 0.62722199145, 0.617132611532, 0.607208517467, 0.597441877296, + 0.587825531465, 0.578352913803, 0.569017984198, 0.559815170911, + 0.550739320877, 0.541785656682, 0.532949739145, 0.524227434628, + 0.515614886373, 0.507108489253, 0.498704867478, 0.490400854812, + 0.482193476986, 0.47407993601, 0.466057596125, 0.458123971214, + 0.450276713467, 0.442513603171, 0.434832539473, 0.427231532022, + 0.419708693379, 0.41226223212, 0.404890446548, 0.397591718955, + 0.390364510382, 0.383207355816, 0.376118859788, 0.369097692334, + 0.362142585282, 0.355252328834, 0.348425768415, 0.341661801776, + 0.334959376311, 0.328317486588, 0.321735172063, 0.31521151497, + 0.308745638367, 0.302336704338, 0.29598391232, 0.289686497571, + 0.283443729739, 0.27725491156, 0.271119377649, 0.265036493387, + 0.259005653912, 0.253026283183, 0.247097833139, 0.241219782932, + 0.235391638239, 0.229612930649, 0.223883217122, 0.218202079518, + 0.212569124201, 0.206983981709, 0.201446306496, 0.195955776745, + 0.190512094256, 0.185114984406, 0.179764196185, 0.174459502324, + 0.169200699492, 0.1639876086, 0.158820075195, 0.153697969964, + 0.148621189348, 0.143589656295, 0.138603321143, 0.133662162669, + 0.128766189309, 0.123915440582, 0.119109988745, 0.114349940703, + 0.10963544023, 0.104966670533, 0.100343857232, 0.0957672718266, + 0.0912372357329, 0.0867541250127, 0.082318375932, 0.0779304915295, + 0.0735910494266, 0.0693007111742, 0.065060233529, 0.0608704821745, + 0.056732448584, 0.05264727098, 0.0486162607163, 0.0446409359769, + 0.0407230655415, 0.0368647267386, 0.0330683839378, 0.0293369977411, + 0.0256741818288, 0.0220844372634, 0.0185735200577, 0.0151490552854, + 0.0118216532614, 0.00860719483079, 0.00553245272614, 0.00265435214565 +}; + +/* tabulated values for 2^24 times x[i]/x[i+1], + * used to accept for U*x[i+1]<=x[i] without any floating point operations */ +static const unsigned long ktab[128] = { + 0, 12590644, 14272653, 14988939, + 15384584, 15635009, 15807561, 15933577, + 16029594, 16105155, 16166147, 16216399, + 16258508, 16294295, 16325078, 16351831, + 16375291, 16396026, 16414479, 16431002, + 16445880, 16459343, 16471578, 16482744, + 16492970, 16502368, 16511031, 16519039, + 16526459, 16533352, 16539769, 16545755, + 16551348, 16556584, 16561493, 16566101, + 16570433, 16574511, 16578353, 16581977, + 16585398, 16588629, 16591685, 16594575, + 16597311, 16599901, 16602354, 16604679, + 16606881, 16608968, 16610945, 16612818, + 16614592, 16616272, 16617861, 16619363, + 16620782, 16622121, 16623383, 16624570, + 16625685, 16626730, 16627708, 16628619, + 16629465, 16630248, 16630969, 16631628, + 16632228, 16632768, 16633248, 16633671, + 16634034, 16634340, 16634586, 16634774, + 16634903, 16634972, 16634980, 16634926, + 16634810, 16634628, 16634381, 16634066, + 16633680, 16633222, 16632688, 16632075, + 16631380, 16630598, 16629726, 16628757, + 16627686, 16626507, 16625212, 16623794, + 16622243, 16620548, 16618698, 16616679, + 16614476, 16612071, 16609444, 16606571, + 16603425, 16599973, 16596178, 16591995, + 16587369, 16582237, 16576520, 16570120, + 16562917, 16554758, 16545450, 16534739, + 16522287, 16507638, 16490152, 16468907, + 16442518, 16408804, 16364095, 16301683, + 16207738, 16047994, 15704248, 15472926 +}; + +/* tabulated values of 2^{-24}*x[i] */ +static const double wtab[128] = { + 1.62318314817e-08, 2.16291505214e-08, 2.54246305087e-08, 2.84579525938e-08, + 3.10340022482e-08, 3.33011726243e-08, 3.53439060345e-08, 3.72152672658e-08, + 3.8950989572e-08, 4.05763964764e-08, 4.21101548915e-08, 4.35664624904e-08, + 4.49563968336e-08, 4.62887864029e-08, 4.75707945735e-08, 4.88083237257e-08, + 5.00063025384e-08, 5.11688950428e-08, 5.22996558616e-08, 5.34016475624e-08, + 5.44775307871e-08, 5.55296344581e-08, 5.65600111659e-08, 5.75704813695e-08, + 5.85626690412e-08, 5.95380306862e-08, 6.04978791776e-08, 6.14434034901e-08, + 6.23756851626e-08, 6.32957121259e-08, 6.42043903937e-08, 6.51025540077e-08, + 6.59909735447e-08, 6.68703634341e-08, 6.77413882848e-08, 6.8604668381e-08, + 6.94607844804e-08, 7.03102820203e-08, 7.11536748229e-08, 7.1991448372e-08, + 7.2824062723e-08, 7.36519550992e-08, 7.44755422158e-08, 7.52952223703e-08, + 7.61113773308e-08, 7.69243740467e-08, 7.77345662086e-08, 7.85422956743e-08, + 7.93478937793e-08, 8.01516825471e-08, 8.09539758128e-08, 8.17550802699e-08, + 8.25552964535e-08, 8.33549196661e-08, 8.41542408569e-08, 8.49535474601e-08, + 8.57531242006e-08, 8.65532538723e-08, 8.73542180955e-08, 8.8156298059e-08, + 8.89597752521e-08, 8.97649321908e-08, 9.05720531451e-08, 9.138142487e-08, + 9.21933373471e-08, 9.30080845407e-08, 9.38259651738e-08, 9.46472835298e-08, + 9.54723502847e-08, 9.63014833769e-08, 9.71350089201e-08, 9.79732621669e-08, + 9.88165885297e-08, 9.96653446693e-08, 1.00519899658e-07, 1.0138063623e-07, + 1.02247952126e-07, 1.03122261554e-07, 1.04003996769e-07, 1.04893609795e-07, + 1.05791574313e-07, 1.06698387725e-07, 1.07614573423e-07, 1.08540683296e-07, + 1.09477300508e-07, 1.1042504257e-07, 1.11384564771e-07, 1.12356564007e-07, + 1.13341783071e-07, 1.14341015475e-07, 1.15355110887e-07, 1.16384981291e-07, + 1.17431607977e-07, 1.18496049514e-07, 1.19579450872e-07, 1.20683053909e-07, + 1.21808209468e-07, 1.2295639141e-07, 1.24129212952e-07, 1.25328445797e-07, + 1.26556042658e-07, 1.27814163916e-07, 1.29105209375e-07, 1.30431856341e-07, + 1.31797105598e-07, 1.3320433736e-07, 1.34657379914e-07, 1.36160594606e-07, + 1.37718982103e-07, 1.39338316679e-07, 1.41025317971e-07, 1.42787873535e-07, + 1.44635331499e-07, 1.4657889173e-07, 1.48632138436e-07, 1.50811780719e-07, + 1.53138707402e-07, 1.55639532047e-07, 1.58348931426e-07, 1.61313325908e-07, + 1.64596952856e-07, 1.68292495203e-07, 1.72541128694e-07, 1.77574279496e-07, + 1.83813550477e-07, 1.92166040885e-07, 2.05295471952e-07, 2.22600839893e-07 +}; + + +double +gsl_ran_gaussian_ziggurat (const gsl_rng * r, const double sigma) +{ + unsigned long int i, j; + int sign; + double x, y; + + const unsigned long int range = r->type->max - r->type->min; + const unsigned long int offset = r->type->min; + + while (1) + { + if (range >= 0xFFFFFFFF) + { + unsigned long int k = gsl_rng_get(r) - offset; + i = (k & 0xFF); + j = (k >> 8) & 0xFFFFFF; + } + else if (range >= 0x00FFFFFF) + { + unsigned long int k1 = gsl_rng_get(r) - offset; + unsigned long int k2 = gsl_rng_get(r) - offset; + i = (k1 & 0xFF); + j = (k2 & 0x00FFFFFF); + } + else + { + i = gsl_rng_uniform_int (r, 256); /* choose the step */ + j = gsl_rng_uniform_int (r, 16777216); /* sample from 2^24 */ + } + + sign = (i & 0x80) ? +1 : -1; + i &= 0x7f; + + x = j * wtab[i]; + + if (j < ktab[i]) + break; + + if (i < 127) + { + double y0, y1, U1; + y0 = ytab[i]; + y1 = ytab[i + 1]; + U1 = gsl_rng_uniform (r); + y = y1 + (y0 - y1) * U1; + } + else + { + double U1, U2; + U1 = 1.0 - gsl_rng_uniform (r); + U2 = gsl_rng_uniform (r); + x = PARAM_R - log (U1) / PARAM_R; + y = exp (-PARAM_R * (x - 0.5 * PARAM_R)) * U2; + } + + if (y < exp (-0.5 * x * x)) + break; + } + + return sign * sigma * x; +} diff --git a/gsl-2.5/randist/gausszig.lo b/gsl-2.5/randist/gausszig.lo new file mode 100644 index 00000000..bc8aaa7e --- /dev/null +++ b/gsl-2.5/randist/gausszig.lo @@ -0,0 +1,12 @@ +# gausszig.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/gausszig.o' + +# Name of the non-PIC object +non_pic_object='gausszig.o' + diff --git a/gsl-2.5/randist/geometric.c b/gsl-2.5/randist/geometric.c new file mode 100644 index 00000000..afce6b27 --- /dev/null +++ b/gsl-2.5/randist/geometric.c @@ -0,0 +1,67 @@ +/* randist/geometric.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 James Theiler, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include + +/* Geometric distribution (bernoulli trial with probability p) + + prob(k) = p (1 - p)^(k-1) for n = 1, 2, 3, ... + + It gives the distribution of "waiting times" for an event that + occurs with probability p. */ + +unsigned int +gsl_ran_geometric (const gsl_rng * r, const double p) +{ + double u = gsl_rng_uniform_pos (r); + + unsigned int k; + + if (p == 1) + { + k = 1; + } + else + { + k = log (u) / log (1 - p) + 1; + } + + return k; +} + +double +gsl_ran_geometric_pdf (const unsigned int k, const double p) +{ + if (k == 0) + { + return 0 ; + } + else if (k == 1) + { + return p ; + } + else + { + double P = p * pow (1 - p, k - 1.0); + return P; + } +} diff --git a/gsl-2.5/randist/geometric.lo b/gsl-2.5/randist/geometric.lo new file mode 100644 index 00000000..1be0f0e3 --- /dev/null +++ b/gsl-2.5/randist/geometric.lo @@ -0,0 +1,12 @@ +# geometric.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/geometric.o' + +# Name of the non-PIC object +non_pic_object='geometric.o' + diff --git a/gsl-2.5/randist/gsl_randist.h b/gsl-2.5/randist/gsl_randist.h new file mode 100644 index 00000000..d38ccb36 --- /dev/null +++ b/gsl-2.5/randist/gsl_randist.h @@ -0,0 +1,219 @@ +/* randist/gsl_randist.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 James Theiler, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_RANDIST_H__ +#define __GSL_RANDIST_H__ +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +unsigned int gsl_ran_bernoulli (const gsl_rng * r, double p); +double gsl_ran_bernoulli_pdf (const unsigned int k, double p); + +double gsl_ran_beta (const gsl_rng * r, const double a, const double b); +double gsl_ran_beta_pdf (const double x, const double a, const double b); + +unsigned int gsl_ran_binomial (const gsl_rng * r, double p, unsigned int n); +unsigned int gsl_ran_binomial_knuth (const gsl_rng * r, double p, unsigned int n); +unsigned int gsl_ran_binomial_tpe (const gsl_rng * r, double p, unsigned int n); +double gsl_ran_binomial_pdf (const unsigned int k, const double p, const unsigned int n); + +double gsl_ran_exponential (const gsl_rng * r, const double mu); +double gsl_ran_exponential_pdf (const double x, const double mu); + +double gsl_ran_exppow (const gsl_rng * r, const double a, const double b); +double gsl_ran_exppow_pdf (const double x, const double a, const double b); + +double gsl_ran_cauchy (const gsl_rng * r, const double a); +double gsl_ran_cauchy_pdf (const double x, const double a); + +double gsl_ran_chisq (const gsl_rng * r, const double nu); +double gsl_ran_chisq_pdf (const double x, const double nu); + +void gsl_ran_dirichlet (const gsl_rng * r, const size_t K, const double alpha[], double theta[]); +double gsl_ran_dirichlet_pdf (const size_t K, const double alpha[], const double theta[]); +double gsl_ran_dirichlet_lnpdf (const size_t K, const double alpha[], const double theta[]); + +double gsl_ran_erlang (const gsl_rng * r, const double a, const double n); +double gsl_ran_erlang_pdf (const double x, const double a, const double n); + +double gsl_ran_fdist (const gsl_rng * r, const double nu1, const double nu2); +double gsl_ran_fdist_pdf (const double x, const double nu1, const double nu2); + +double gsl_ran_flat (const gsl_rng * r, const double a, const double b); +double gsl_ran_flat_pdf (double x, const double a, const double b); + +double gsl_ran_gamma (const gsl_rng * r, const double a, const double b); +double gsl_ran_gamma_int (const gsl_rng * r, const unsigned int a); +double gsl_ran_gamma_pdf (const double x, const double a, const double b); +double gsl_ran_gamma_mt (const gsl_rng * r, const double a, const double b); +double gsl_ran_gamma_knuth (const gsl_rng * r, const double a, const double b); + +double gsl_ran_gaussian (const gsl_rng * r, const double sigma); +double gsl_ran_gaussian_ratio_method (const gsl_rng * r, const double sigma); +double gsl_ran_gaussian_ziggurat (const gsl_rng * r, const double sigma); +double gsl_ran_gaussian_pdf (const double x, const double sigma); + +double gsl_ran_ugaussian (const gsl_rng * r); +double gsl_ran_ugaussian_ratio_method (const gsl_rng * r); +double gsl_ran_ugaussian_pdf (const double x); + +double gsl_ran_gaussian_tail (const gsl_rng * r, const double a, const double sigma); +double gsl_ran_gaussian_tail_pdf (const double x, const double a, const double sigma); + +double gsl_ran_ugaussian_tail (const gsl_rng * r, const double a); +double gsl_ran_ugaussian_tail_pdf (const double x, const double a); + +void gsl_ran_bivariate_gaussian (const gsl_rng * r, double sigma_x, double sigma_y, double rho, double *x, double *y); +double gsl_ran_bivariate_gaussian_pdf (const double x, const double y, const double sigma_x, const double sigma_y, const double rho); + +int gsl_ran_multivariate_gaussian (const gsl_rng * r, const gsl_vector * mu, const gsl_matrix * L, gsl_vector * result); +int gsl_ran_multivariate_gaussian_log_pdf (const gsl_vector * x, + const gsl_vector * mu, + const gsl_matrix * L, + double * result, + gsl_vector * work); +int gsl_ran_multivariate_gaussian_pdf (const gsl_vector * x, + const gsl_vector * mu, + const gsl_matrix * L, + double * result, + gsl_vector * work); +int gsl_ran_multivariate_gaussian_mean (const gsl_matrix * X, gsl_vector * mu_hat); +int gsl_ran_multivariate_gaussian_vcov (const gsl_matrix * X, gsl_matrix * sigma_hat); + +int gsl_ran_wishart (const gsl_rng * r, + const double df, + const gsl_matrix * L, + gsl_matrix * result, + gsl_matrix * work); +int gsl_ran_wishart_log_pdf (const gsl_matrix * X, + const gsl_matrix * L_X, + const double df, + const gsl_matrix * L, + double * result, + gsl_matrix * work); +int gsl_ran_wishart_pdf (const gsl_matrix * X, + const gsl_matrix * L_X, + const double df, + const gsl_matrix * L, + double * result, + gsl_matrix * work); + +double gsl_ran_landau (const gsl_rng * r); +double gsl_ran_landau_pdf (const double x); + +unsigned int gsl_ran_geometric (const gsl_rng * r, const double p); +double gsl_ran_geometric_pdf (const unsigned int k, const double p); + +unsigned int gsl_ran_hypergeometric (const gsl_rng * r, unsigned int n1, unsigned int n2, unsigned int t); +double gsl_ran_hypergeometric_pdf (const unsigned int k, const unsigned int n1, const unsigned int n2, unsigned int t); + +double gsl_ran_gumbel1 (const gsl_rng * r, const double a, const double b); +double gsl_ran_gumbel1_pdf (const double x, const double a, const double b); + +double gsl_ran_gumbel2 (const gsl_rng * r, const double a, const double b); +double gsl_ran_gumbel2_pdf (const double x, const double a, const double b); + +double gsl_ran_logistic (const gsl_rng * r, const double a); +double gsl_ran_logistic_pdf (const double x, const double a); + +double gsl_ran_lognormal (const gsl_rng * r, const double zeta, const double sigma); +double gsl_ran_lognormal_pdf (const double x, const double zeta, const double sigma); + +unsigned int gsl_ran_logarithmic (const gsl_rng * r, const double p); +double gsl_ran_logarithmic_pdf (const unsigned int k, const double p); + +void gsl_ran_multinomial (const gsl_rng * r, const size_t K, + const unsigned int N, const double p[], + unsigned int n[] ); +double gsl_ran_multinomial_pdf (const size_t K, + const double p[], const unsigned int n[] ); +double gsl_ran_multinomial_lnpdf (const size_t K, + const double p[], const unsigned int n[] ); + + +unsigned int gsl_ran_negative_binomial (const gsl_rng * r, double p, double n); +double gsl_ran_negative_binomial_pdf (const unsigned int k, const double p, double n); + +unsigned int gsl_ran_pascal (const gsl_rng * r, double p, unsigned int n); +double gsl_ran_pascal_pdf (const unsigned int k, const double p, unsigned int n); + +double gsl_ran_pareto (const gsl_rng * r, double a, const double b); +double gsl_ran_pareto_pdf (const double x, const double a, const double b); + +unsigned int gsl_ran_poisson (const gsl_rng * r, double mu); +void gsl_ran_poisson_array (const gsl_rng * r, size_t n, unsigned int array[], + double mu); +double gsl_ran_poisson_pdf (const unsigned int k, const double mu); + +double gsl_ran_rayleigh (const gsl_rng * r, const double sigma); +double gsl_ran_rayleigh_pdf (const double x, const double sigma); + +double gsl_ran_rayleigh_tail (const gsl_rng * r, const double a, const double sigma); +double gsl_ran_rayleigh_tail_pdf (const double x, const double a, const double sigma); + +double gsl_ran_tdist (const gsl_rng * r, const double nu); +double gsl_ran_tdist_pdf (const double x, const double nu); + +double gsl_ran_laplace (const gsl_rng * r, const double a); +double gsl_ran_laplace_pdf (const double x, const double a); + +double gsl_ran_levy (const gsl_rng * r, const double c, const double alpha); +double gsl_ran_levy_skew (const gsl_rng * r, const double c, const double alpha, const double beta); + +double gsl_ran_weibull (const gsl_rng * r, const double a, const double b); +double gsl_ran_weibull_pdf (const double x, const double a, const double b); + +void gsl_ran_dir_2d (const gsl_rng * r, double * x, double * y); +void gsl_ran_dir_2d_trig_method (const gsl_rng * r, double * x, double * y); +void gsl_ran_dir_3d (const gsl_rng * r, double * x, double * y, double * z); +void gsl_ran_dir_nd (const gsl_rng * r, size_t n, double * x); + +void gsl_ran_shuffle (const gsl_rng * r, void * base, size_t nmembm, size_t size); +int gsl_ran_choose (const gsl_rng * r, void * dest, size_t k, void * src, size_t n, size_t size) ; +void gsl_ran_sample (const gsl_rng * r, void * dest, size_t k, void * src, size_t n, size_t size) ; + + +typedef struct { /* struct for Walker algorithm */ + size_t K; + size_t *A; + double *F; +} gsl_ran_discrete_t; + +gsl_ran_discrete_t * gsl_ran_discrete_preproc (size_t K, const double *P); +void gsl_ran_discrete_free(gsl_ran_discrete_t *g); +size_t gsl_ran_discrete (const gsl_rng *r, const gsl_ran_discrete_t *g); +double gsl_ran_discrete_pdf (size_t k, const gsl_ran_discrete_t *g); + + +__END_DECLS + +#endif /* __GSL_RANDIST_H__ */ diff --git a/gsl-2.5/randist/gumbel.c b/gsl-2.5/randist/gumbel.c new file mode 100644 index 00000000..8ec9c567 --- /dev/null +++ b/gsl-2.5/randist/gumbel.c @@ -0,0 +1,78 @@ +/* randist/gumbel.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 James Theiler, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include + +/* The Type I Gumbel distribution has the form, + + p(x) dx = a b exp(-(b exp(-ax) + ax)) dx + + and the Type II Gumbel distribution has the form, + + p(x) dx = b a x^-(a+1) exp(-b x^-a)) dx + + */ + +double +gsl_ran_gumbel1 (const gsl_rng * r, const double a, const double b) +{ + double x = gsl_rng_uniform_pos (r); + + double z = (log(b) - log(-log(x))) / a; + + return z; +} + +double +gsl_ran_gumbel1_pdf (const double x, const double a, const double b) +{ + double p = a * b * exp (-(b * exp(-a * x) + a * x)); + return p; +} + +double +gsl_ran_gumbel2 (const gsl_rng * r, const double a, const double b) +{ + double x = gsl_rng_uniform_pos (r); + + double z = pow(-b / log(x), 1/a); + + return z; +} + +double +gsl_ran_gumbel2_pdf (const double x, const double a, const double b) +{ + if (x <= 0) + { + return 0 ; + } + else + { + double p = b * a * pow(x,-(a+1)) * exp (-b * pow(x, -a)); + return p; + } +} + + + + diff --git a/gsl-2.5/randist/gumbel.lo b/gsl-2.5/randist/gumbel.lo new file mode 100644 index 00000000..6e646539 --- /dev/null +++ b/gsl-2.5/randist/gumbel.lo @@ -0,0 +1,12 @@ +# gumbel.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/gumbel.o' + +# Name of the non-PIC object +non_pic_object='gumbel.o' + diff --git a/gsl-2.5/randist/hyperg.c b/gsl-2.5/randist/hyperg.c new file mode 100644 index 00000000..46b74047 --- /dev/null +++ b/gsl-2.5/randist/hyperg.c @@ -0,0 +1,124 @@ +/* randist/hyperg.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 James Theiler, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include + +/* The hypergeometric distribution has the form, + + prob(k) = choose(n1,t) choose(n2, t-k) / choose(n1+n2,t) + + where choose(a,b) = a!/(b!(a-b)!) + + n1 + n2 is the total population (tagged plus untagged) + n1 is the tagged population + t is the number of samples taken (without replacement) + k is the number of tagged samples found + +*/ + +unsigned int +gsl_ran_hypergeometric (const gsl_rng * r, unsigned int n1, unsigned int n2, + unsigned int t) +{ + const unsigned int n = n1 + n2; + + unsigned int i = 0; + unsigned int a = n1; + unsigned int b = n1 + n2; + unsigned int k = 0; + + if (t > n) + { + t = n ; + } + + if (t < n / 2) + { + for (i = 0 ; i < t ; i++) + { + double u = gsl_rng_uniform(r) ; + + if (b * u < a) + { + k++ ; + if (k == n1) + return k ; + a-- ; + } + b-- ; + } + return k; + } + else + { + for (i = 0 ; i < n - t ; i++) + { + double u = gsl_rng_uniform(r) ; + + if (b * u < a) + { + k++ ; + if (k == n1) + return n1 - k ; + a-- ; + } + b-- ; + } + return n1 - k; + } + + +} + +double +gsl_ran_hypergeometric_pdf (const unsigned int k, + const unsigned int n1, + const unsigned int n2, + unsigned int t) +{ + if (t > n1 + n2) + { + t = n1 + n2 ; + } + + if (k > n1 || k > t) + { + return 0 ; + } + else if (t > n2 && k + n2 < t ) + { + return 0 ; + } + else + { + double p; + + double c1 = gsl_sf_lnchoose(n1,k); + double c2 = gsl_sf_lnchoose(n2,t-k); + double c3 = gsl_sf_lnchoose(n1+n2,t); + + p = exp(c1 + c2 - c3) ; + + return p; + } +} diff --git a/gsl-2.5/randist/hyperg.lo b/gsl-2.5/randist/hyperg.lo new file mode 100644 index 00000000..6a90451c --- /dev/null +++ b/gsl-2.5/randist/hyperg.lo @@ -0,0 +1,12 @@ +# hyperg.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/hyperg.o' + +# Name of the non-PIC object +non_pic_object='hyperg.o' + diff --git a/gsl-2.5/randist/landau.c b/gsl-2.5/randist/landau.c new file mode 100644 index 00000000..3a5966c5 --- /dev/null +++ b/gsl-2.5/randist/landau.c @@ -0,0 +1,565 @@ +/* randist/landau.c + * + * Copyright (C) 2001, 2004 David Morrison + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Adapted from the CERN library routines DENLAN, RANLAN, and DISLAN + * as described in http://consult.cern.ch/shortwrups/g110/top.html. + * Original author: K.S. K\"olbig. + * + * The distribution is given by the complex path integral, + * + * p(x) = (1/(2 pi i)) \int_{c-i\inf}^{c+i\inf} ds exp(s log(s) + x s) + * + * which can be converted into a real integral over [0,+\inf] + * + * p(x) = (1/pi) \int_0^\inf dt \exp(-t log(t) - x t) sin(pi t) + * + */ + +#include +#include +#include +#include + +double +gsl_ran_landau_pdf(const double x) +{ + static double P1[5] = + { + 0.4259894875E0, -0.1249762550E0, 0.3984243700E-1, + -0.6298287635E-2, 0.1511162253E-2 + }; + static double P2[5] = + { + 0.1788541609E0, 0.1173957403E0, 0.1488850518E-1, + -0.1394989411E-2, 0.1283617211E-3 + }; + static double P3[5] = + { + 0.1788544503E0, 0.9359161662E-1, 0.6325387654E-2, + 0.6611667319E-4, -0.2031049101E-5 + }; + static double P4[5] = + { + 0.9874054407E0, 0.1186723273E3, 0.8492794360E3, + -0.7437792444E3, 0.4270262186E3 + }; + static double P5[5] = + { + 0.1003675074E1, 0.1675702434E3, 0.4789711289E4, + 0.2121786767E5, -0.2232494910E5 + }; + static double P6[5] = + { + 0.1000827619E1, 0.6649143136E3, 0.6297292665E5, + 0.4755546998E6, -0.5743609109E7 + }; + + static double Q1[5] = + { + 1.0, -0.3388260629E0, 0.9594393323E-1, + -0.1608042283E-1, 0.3778942063E-2 + }; + static double Q2[5] = + { + 1.0, 0.7428795082E0, 0.3153932961E0, + 0.6694219548E-1, 0.8790609714E-2 + }; + static double Q3[5] = + { + 1.0, 0.6097809921E0, 0.2560616665E0, + 0.4746722384E-1, 0.6957301675E-2 + }; + static double Q4[5] = + { + 1.0, 0.1068615961E3, 0.3376496214E3, + 0.2016712389E4, 0.1597063511E4 + }; + static double Q5[5] = + { + 1.0, 0.1569424537E3, 0.3745310488E4, + 0.9834698876E4, 0.6692428357E5 + }; + static double Q6[5] = + { + 1.0, 0.6514101098E3, 0.5697473333E5, + 0.1659174725E6, -0.2815759939E7 + }; + + static double A1[3] = + { + 0.4166666667E-1, -0.1996527778E-1, 0.2709538966E-1 + }; + static double A2[2] = + { + -0.1845568670E1, -0.4284640743E1 + }; + + double U, V, DENLAN; + + V = x; + if (V < -5.5) + { + U = exp(V + 1.0); + DENLAN = 0.3989422803 * (exp( -1 / U) / sqrt(U)) * + (1 + (A1[0] + (A1[1] + A1[2] * U) * U) * U); + } + else if (V < -1) + { + U = exp( -V - 1); + DENLAN = exp( -U) * sqrt(U) * + (P1[0] + (P1[1] + (P1[2] + (P1[3] + P1[4] * V) * V) * V) * V) / + (Q1[0] + (Q1[1] + (Q1[2] + (Q1[3] + Q1[4] * V) * V) * V) * V); + } + else if (V < 1) + { + DENLAN = (P2[0] + (P2[1] + (P2[2] + (P2[3] + P2[4] * V) * V) * V) * V) / + (Q2[0] + (Q2[1] + (Q2[2] + (Q2[3] + Q2[4] * V) * V) * V) * V); + } + else if (V < 5) + { + DENLAN = (P3[0] + (P3[1] + (P3[2] + (P3[3] + P3[4] * V) * V) * V) * V) / + (Q3[0] + (Q3[1] + (Q3[2] + (Q3[3] + Q3[4] * V) * V) * V) * V); + } + else if (V < 12) + { + U = 1 / V; + DENLAN = U * U * + (P4[0] + (P4[1] + (P4[2] + (P4[3] + P4[4] * U) * U) * U) * U) / + (Q4[0] + (Q4[1] + (Q4[2] + (Q4[3] + Q4[4] * U) * U) * U) * U); + } + else if (V < 50) + { + U = 1 / V; + DENLAN = U * U * + (P5[0] + (P5[1] + (P5[2] + (P5[3] + P5[4] * U) * U) * U) * U) / + (Q5[0] + (Q5[1] + (Q5[2] + (Q5[3] + Q5[4] * U) * U) * U) * U); + } + else if (V < 300) + { + U = 1 / V; + DENLAN = U * U * + (P6[0] + (P6[1] + (P6[2] + (P6[3] + P6[4] * U) * U) * U) * U) / + (Q6[0] + (Q6[1] + (Q6[2] + (Q6[3] + Q6[4] * U) * U) * U) * U); + } + else + { + U = 1 / (V - V * log(V) / (V + 1)); + DENLAN = U * U * (1 + (A2[0] + A2[1] * U) * U); + } + + return DENLAN; +} + +#if 0 /* Not needed yet */ +/* This function is a translation from the original Fortran of the + * CERN library routine DISLAN, the integral from -inf to x of the + * Landau p.d.f. + */ +static +double +gsl_ran_landau_dislan(const double x) +{ + static double P1[5] = + { + 0.2514091491E0, -0.6250580444E-1, + 0.1458381230E-1, -0.2108817737E-2, + 0.7411247290E-3 + }; + + static double P2[4] = + { + 0.2868328584E0, 0.3564363231E0, + 0.1523518695E0, 0.2251304883E-1 + }; + + static double P3[4] = + { + 0.2868329066E0, 0.3003828436E0, + 0.9950951941E-1, 0.8733827185E-2 + }; + + static double P4[4] = + { + 0.1000351630E1, 0.4503592498E1, + 0.1085883880E2, 0.7536052269E1 + }; + + static double P5[4] = + { + 0.1000006517E1, 0.4909414111E2, + 0.8505544753E2, 0.1532153455E3 + }; + + static double P6[4] = + { + 0.1000000983E1, 0.1329868456E3, + 0.9162149244E3, -0.9605054274E3 + }; + + static double Q1[5] = + { + 1.0, -0.5571175625E-2, + 0.6225310236E-1, -0.3137378427E-2, + 0.1931496439E-2 + }; + + static double Q2[4] = + { + 1.0, 0.6191136137E0, + 0.1720721448E0, 0.2278594771E-1 + }; + + static double Q3[4] = + { + 1.0, 0.4237190502E0, + 0.1095631512E0, 0.8693851567E-2 + }; + + static double Q4[4] = + { + 1.0, 0.5539969678E1, + 0.1933581111E2, 0.2721321508E2 + }; + + static double Q5[4] = + { + 1.0, 0.5009928881E2, + 0.1399819104E3, 0.4200002909E3 + }; + + static double Q6[4] = + { + 1.0, 0.1339887843E3, + 0.1055990413E4, 0.5532224619E3 + }; + + static double A1[3] = + { + -0.4583333333E0, 0.6675347222E0, -0.1641741416E1 + }; + + static double A2[3] = + { + 1.0, -0.4227843351E0, -0.2043403138E1 + }; + + double U, V, DISLAN; + + V = x; + if (V < -5.5) + { + U = exp(V + 1); + DISLAN = 0.3989422803 * exp( -1 / U) * sqrt(U) * + (1 + (A1[0] + (A1[1] + A1[2] * U) * U) * U); + } + else if (V < -1) + { + U = exp( -V - 1); + DISLAN = (exp( -U) / sqrt(U)) * + (P1[0] + (P1[1] + (P1[2] + (P1[3] + P1[4] * V) * V) * V) * V) / + (Q1[0] + (Q1[1] + (Q1[2] + (Q1[3] + Q1[4] * V) * V) * V) * V); + } + else if (V < 1) + { + DISLAN = (P2[0] + (P2[1] + (P2[2] + P2[3] * V) * V) * V) / + (Q2[0] + (Q2[1] + (Q2[2] + Q2[3] * V) * V) * V); + } + else if (V < 4) + { + DISLAN = (P3[0] + (P3[1] + (P3[2] + P3[3] * V) * V) * V) / + (Q3[0] + (Q3[1] + (Q3[2] + Q3[3] * V) * V) * V); + } + else if (V < 12) + { + U = 1 / V; + DISLAN = (P4[0] + (P4[1] + (P4[2] + P4[3] * U) * U) * U) / + (Q4[0] + (Q4[1] + (Q4[2] + Q4[3] * U) * U) * U); + } + else if (V < 50) + { + U = 1 / V; + DISLAN = (P5[0] + (P5[1] + (P5[2] + P5[3] * U) * U) * U) / + (Q5[0] + (Q5[1] + (Q5[2] + Q5[3] * U) * U) * U); + } + else if (V < 300) + { + U = 1 / V; + DISLAN = (P6[0] + (P6[1] + (P6[2] + P6[3] * U) * U) * U) / + (Q6[0] + (Q6[1] + (Q6[2] + Q6[3] * U) * U) * U); + } + else + { + U = 1 / (V - V * log(V) / (V + 1)); + DISLAN = 1 - (A2[0] + (A2[1] + A2[2] * U) * U) * U; + } + + return DISLAN; +} +#endif + +double +gsl_ran_landau(const gsl_rng * r) +{ + static double F[983] = + { + 0.0000000, /* Add empty element [0] to account for difference + between C and Fortran convention for lower bound. */ + 00.000000, 00.000000, 00.000000, 00.000000, 00.000000, + -2.244733, -2.204365, -2.168163, -2.135219, -2.104898, + -2.076740, -2.050397, -2.025605, -2.002150, -1.979866, + -1.958612, -1.938275, -1.918760, -1.899984, -1.881879, + -1.864385, -1.847451, -1.831030, -1.815083, -1.799574, + -1.784473, -1.769751, -1.755383, -1.741346, -1.727620, + -1.714187, -1.701029, -1.688130, -1.675477, -1.663057, + -1.650858, -1.638868, -1.627078, -1.615477, -1.604058, + -1.592811, -1.581729, -1.570806, -1.560034, -1.549407, + -1.538919, -1.528565, -1.518339, -1.508237, -1.498254, + -1.488386, -1.478628, -1.468976, -1.459428, -1.449979, + -1.440626, -1.431365, -1.422195, -1.413111, -1.404112, + -1.395194, -1.386356, -1.377594, -1.368906, -1.360291, + -1.351746, -1.343269, -1.334859, -1.326512, -1.318229, + -1.310006, -1.301843, -1.293737, -1.285688, -1.277693, + -1.269752, -1.261863, -1.254024, -1.246235, -1.238494, + -1.230800, -1.223153, -1.215550, -1.207990, -1.200474, + -1.192999, -1.185566, -1.178172, -1.170817, -1.163500, + -1.156220, -1.148977, -1.141770, -1.134598, -1.127459, + -1.120354, -1.113282, -1.106242, -1.099233, -1.092255, + -1.085306, -1.078388, -1.071498, -1.064636, -1.057802, + -1.050996, -1.044215, -1.037461, -1.030733, -1.024029, + -1.017350, -1.010695, -1.004064, -0.997456, -0.990871, + -0.984308, -0.977767, -0.971247, -0.964749, -0.958271, + -0.951813, -0.945375, -0.938957, -0.932558, -0.926178, + -0.919816, -0.913472, -0.907146, -0.900838, -0.894547, + -0.888272, -0.882014, -0.875773, -0.869547, -0.863337, + -0.857142, -0.850963, -0.844798, -0.838648, -0.832512, + -0.826390, -0.820282, -0.814187, -0.808106, -0.802038, + -0.795982, -0.789940, -0.783909, -0.777891, -0.771884, + -0.765889, -0.759906, -0.753934, -0.747973, -0.742023, + -0.736084, -0.730155, -0.724237, -0.718328, -0.712429, + -0.706541, -0.700661, -0.694791, -0.688931, -0.683079, + -0.677236, -0.671402, -0.665576, -0.659759, -0.653950, + -0.648149, -0.642356, -0.636570, -0.630793, -0.625022, + -0.619259, -0.613503, -0.607754, -0.602012, -0.596276, + -0.590548, -0.584825, -0.579109, -0.573399, -0.567695, + -0.561997, -0.556305, -0.550618, -0.544937, -0.539262, + -0.533592, -0.527926, -0.522266, -0.516611, -0.510961, + -0.505315, -0.499674, -0.494037, -0.488405, -0.482777, + -0.477153, -0.471533, -0.465917, -0.460305, -0.454697, + -0.449092, -0.443491, -0.437893, -0.432299, -0.426707, + -0.421119, -0.415534, -0.409951, -0.404372, -0.398795, + -0.393221, -0.387649, -0.382080, -0.376513, -0.370949, + -0.365387, -0.359826, -0.354268, -0.348712, -0.343157, + -0.337604, -0.332053, -0.326503, -0.320955, -0.315408, + -0.309863, -0.304318, -0.298775, -0.293233, -0.287692, + -0.282152, -0.276613, -0.271074, -0.265536, -0.259999, + -0.254462, -0.248926, -0.243389, -0.237854, -0.232318, + -0.226783, -0.221247, -0.215712, -0.210176, -0.204641, + -0.199105, -0.193568, -0.188032, -0.182495, -0.176957, + -0.171419, -0.165880, -0.160341, -0.154800, -0.149259, + -0.143717, -0.138173, -0.132629, -0.127083, -0.121537, + -0.115989, -0.110439, -0.104889, -0.099336, -0.093782, + -0.088227, -0.082670, -0.077111, -0.071550, -0.065987, + -0.060423, -0.054856, -0.049288, -0.043717, -0.038144, + -0.032569, -0.026991, -0.021411, -0.015828, -0.010243, + -0.004656, 00.000934, 00.006527, 00.012123, 00.017722, + 00.023323, 00.028928, 00.034535, 00.040146, 00.045759, + 00.051376, 00.056997, 00.062620, 00.068247, 00.073877, + 00.079511, 00.085149, 00.090790, 00.096435, 00.102083, + 00.107736, 00.113392, 00.119052, 00.124716, 00.130385, + 00.136057, 00.141734, 00.147414, 00.153100, 00.158789, + 00.164483, 00.170181, 00.175884, 00.181592, 00.187304, + 00.193021, 00.198743, 00.204469, 00.210201, 00.215937, + 00.221678, 00.227425, 00.233177, 00.238933, 00.244696, + 00.250463, 00.256236, 00.262014, 00.267798, 00.273587, + 00.279382, 00.285183, 00.290989, 00.296801, 00.302619, + 00.308443, 00.314273, 00.320109, 00.325951, 00.331799, + 00.337654, 00.343515, 00.349382, 00.355255, 00.361135, + 00.367022, 00.372915, 00.378815, 00.384721, 00.390634, + 00.396554, 00.402481, 00.408415, 00.414356, 00.420304, + 00.426260, 00.432222, 00.438192, 00.444169, 00.450153, + 00.456145, 00.462144, 00.468151, 00.474166, 00.480188, + 00.486218, 00.492256, 00.498302, 00.504356, 00.510418, + 00.516488, 00.522566, 00.528653, 00.534747, 00.540850, + 00.546962, 00.553082, 00.559210, 00.565347, 00.571493, + 00.577648, 00.583811, 00.589983, 00.596164, 00.602355, + 00.608554, 00.614762, 00.620980, 00.627207, 00.633444, + 00.639689, 00.645945, 00.652210, 00.658484, 00.664768, + 00.671062, 00.677366, 00.683680, 00.690004, 00.696338, + 00.702682, 00.709036, 00.715400, 00.721775, 00.728160, + 00.734556, 00.740963, 00.747379, 00.753807, 00.760246, + 00.766695, 00.773155, 00.779627, 00.786109, 00.792603, + 00.799107, 00.805624, 00.812151, 00.818690, 00.825241, + 00.831803, 00.838377, 00.844962, 00.851560, 00.858170, + 00.864791, 00.871425, 00.878071, 00.884729, 00.891399, + 00.898082, 00.904778, 00.911486, 00.918206, 00.924940, + 00.931686, 00.938446, 00.945218, 00.952003, 00.958802, + 00.965614, 00.972439, 00.979278, 00.986130, 00.992996, + 00.999875, 01.006769, 01.013676, 01.020597, 01.027533, + 01.034482, 01.041446, 01.048424, 01.055417, 01.062424, + 01.069446, 01.076482, 01.083534, 01.090600, 01.097681, + 01.104778, 01.111889, 01.119016, 01.126159, 01.133316, + 01.140490, 01.147679, 01.154884, 01.162105, 01.169342, + 01.176595, 01.183864, 01.191149, 01.198451, 01.205770, + 01.213105, 01.220457, 01.227826, 01.235211, 01.242614, + 01.250034, 01.257471, 01.264926, 01.272398, 01.279888, + 01.287395, 01.294921, 01.302464, 01.310026, 01.317605, + 01.325203, 01.332819, 01.340454, 01.348108, 01.355780, + 01.363472, 01.371182, 01.378912, 01.386660, 01.394429, + 01.402216, 01.410024, 01.417851, 01.425698, 01.433565, + 01.441453, 01.449360, 01.457288, 01.465237, 01.473206, + 01.481196, 01.489208, 01.497240, 01.505293, 01.513368, + 01.521465, 01.529583, 01.537723, 01.545885, 01.554068, + 01.562275, 01.570503, 01.578754, 01.587028, 01.595325, + 01.603644, 01.611987, 01.620353, 01.628743, 01.637156, + 01.645593, 01.654053, 01.662538, 01.671047, 01.679581, + 01.688139, 01.696721, 01.705329, 01.713961, 01.722619, + 01.731303, 01.740011, 01.748746, 01.757506, 01.766293, + 01.775106, 01.783945, 01.792810, 01.801703, 01.810623, + 01.819569, 01.828543, 01.837545, 01.846574, 01.855631, + 01.864717, 01.873830, 01.882972, 01.892143, 01.901343, + 01.910572, 01.919830, 01.929117, 01.938434, 01.947781, + 01.957158, 01.966566, 01.976004, 01.985473, 01.994972, + 02.004503, 02.014065, 02.023659, 02.033285, 02.042943, + 02.052633, 02.062355, 02.072110, 02.081899, 02.091720, + 02.101575, 02.111464, 02.121386, 02.131343, 02.141334, + 02.151360, 02.161421, 02.171517, 02.181648, 02.191815, + 02.202018, 02.212257, 02.222533, 02.232845, 02.243195, + 02.253582, 02.264006, 02.274468, 02.284968, 02.295507, + 02.306084, 02.316701, 02.327356, 02.338051, 02.348786, + 02.359562, 02.370377, 02.381234, 02.392131, 02.403070, + 02.414051, 02.425073, 02.436138, 02.447246, 02.458397, + 02.469591, 02.480828, 02.492110, 02.503436, 02.514807, + 02.526222, 02.537684, 02.549190, 02.560743, 02.572343, + 02.583989, 02.595682, 02.607423, 02.619212, 02.631050, + 02.642936, 02.654871, 02.666855, 02.678890, 02.690975, + 02.703110, 02.715297, 02.727535, 02.739825, 02.752168, + 02.764563, 02.777012, 02.789514, 02.802070, 02.814681, + 02.827347, 02.840069, 02.852846, 02.865680, 02.878570, + 02.891518, 02.904524, 02.917588, 02.930712, 02.943894, + 02.957136, 02.970439, 02.983802, 02.997227, 03.010714, + 03.024263, 03.037875, 03.051551, 03.065290, 03.079095, + 03.092965, 03.106900, 03.120902, 03.134971, 03.149107, + 03.163312, 03.177585, 03.191928, 03.206340, 03.220824, + 03.235378, 03.250005, 03.264704, 03.279477, 03.294323, + 03.309244, 03.324240, 03.339312, 03.354461, 03.369687, + 03.384992, 03.400375, 03.415838, 03.431381, 03.447005, + 03.462711, 03.478500, 03.494372, 03.510328, 03.526370, + 03.542497, 03.558711, 03.575012, 03.591402, 03.607881, + 03.624450, 03.641111, 03.657863, 03.674708, 03.691646, + 03.708680, 03.725809, 03.743034, 03.760357, 03.777779, + 03.795300, 03.812921, 03.830645, 03.848470, 03.866400, + 03.884434, 03.902574, 03.920821, 03.939176, 03.957640, + 03.976215, 03.994901, 04.013699, 04.032612, 04.051639, + 04.070783, 04.090045, 04.109425, 04.128925, 04.148547, + 04.168292, 04.188160, 04.208154, 04.228275, 04.248524, + 04.268903, 04.289413, 04.310056, 04.330832, 04.351745, + 04.372794, 04.393982, 04.415310, 04.436781, 04.458395, + 04.480154, 04.502060, 04.524114, 04.546319, 04.568676, + 04.591187, 04.613854, 04.636678, 04.659662, 04.682807, + 04.706116, 04.729590, 04.753231, 04.777041, 04.801024, + 04.825179, 04.849511, 04.874020, 04.898710, 04.923582, + 04.948639, 04.973883, 04.999316, 05.024942, 05.050761, + 05.076778, 05.102993, 05.129411, 05.156034, 05.182864, + 05.209903, 05.237156, 05.264625, 05.292312, 05.320220, + 05.348354, 05.376714, 05.405306, 05.434131, 05.463193, + 05.492496, 05.522042, 05.551836, 05.581880, 05.612178, + 05.642734, 05.673552, 05.704634, 05.735986, 05.767610, + 05.799512, 05.831694, 05.864161, 05.896918, 05.929968, + 05.963316, 05.996967, 06.030925, 06.065194, 06.099780, + 06.134687, 06.169921, 06.205486, 06.241387, 06.277630, + 06.314220, 06.351163, 06.388465, 06.426130, 06.464166, + 06.502578, 06.541371, 06.580553, 06.620130, 06.660109, + 06.700495, 06.741297, 06.782520, 06.824173, 06.866262, + 06.908795, 06.951780, 06.995225, 07.039137, 07.083525, + 07.128398, 07.173764, 07.219632, 07.266011, 07.312910, + 07.360339, 07.408308, 07.456827, 07.505905, 07.555554, + 07.605785, 07.656608, 07.708035, 07.760077, 07.812747, + 07.866057, 07.920019, 07.974647, 08.029953, 08.085952, + 08.142657, 08.200083, 08.258245, 08.317158, 08.376837, + 08.437300, 08.498562, 08.560641, 08.623554, 08.687319, + 08.751955, 08.817481, 08.883916, 08.951282, 09.019600, + 09.088889, 09.159174, 09.230477, 09.302822, 09.376233, + 09.450735, 09.526355, 09.603118, 09.681054, 09.760191, + 09.840558, 09.922186, 10.005107, 10.089353, 10.174959, + 10.261958, 10.350389, 10.440287, 10.531693, 10.624646, + 10.719188, 10.815362, 10.913214, 11.012789, 11.114137, + 11.217307, 11.322352, 11.429325, 11.538283, 11.649285, + 11.762390, 11.877664, 11.995170, 12.114979, 12.237161, + 12.361791, 12.488946, 12.618708, 12.751161, 12.886394, + 13.024498, 13.165570, 13.309711, 13.457026, 13.607625, + 13.761625, 13.919145, 14.080314, 14.245263, 14.414134, + 14.587072, 14.764233, 14.945778, 15.131877, 15.322712, + 15.518470, 15.719353, 15.925570, 16.137345, 16.354912, + 16.578520, 16.808433, 17.044929, 17.288305, 17.538873, + 17.796967, 18.062943, 18.337176, 18.620068, 18.912049, + 19.213574, 19.525133, 19.847249, 20.180480, 20.525429, + 20.882738, 21.253102, 21.637266, 22.036036, 22.450278, + 22.880933, 23.329017, 23.795634, 24.281981, 24.789364, + 25.319207, 25.873062, 26.452634, 27.059789, 27.696581, + 28.365274, 29.068370, 29.808638, 30.589157, 31.413354, + 32.285060, 33.208568, 34.188705, 35.230920, 36.341388, + 37.527131, 38.796172, 40.157721, 41.622399, 43.202525, + 44.912465, 46.769077, 48.792279, 51.005773, 53.437996, + 56.123356, 59.103894 + }; + double X, U, V, RANLAN; + int I; + + X = gsl_rng_uniform_pos(r); + U = 1000.0 * X; + I = U; + U = U - I; + + if (I >= 70 && I <= 800) + { + RANLAN = F[I] + U * (F[I + 1] - F[I]); + } + else if (I >= 7 && I <= 980) + { + RANLAN = F[I] + + U * (F[I + 1] - F[I] + - 0.25 * (1 - U) * (F[I + 2] - F[I + 1] - F[I] + F[I - 1])); + } + else if (I < 7) + { + V = log(X); + U = 1 / V; + RANLAN = ((0.99858950 + (3.45213058E1 + 1.70854528E1 * U) * U) / + (1 + (3.41760202E1 + 4.01244582 * U) * U)) * + ( -log( -0.91893853 - V) - 1); + } + else + { + U = 1 - X; + V = U * U; + if (X <= 0.999) + { + RANLAN = (1.00060006 + 2.63991156E2 * U + 4.37320068E3 * V) / + ((1 + 2.57368075E2 * U + 3.41448018E3 * V) * U); + } + else + { + RANLAN = (1.00001538 + 6.07514119E3 * U + 7.34266409E5 * V) / + ((1 + 6.06511919E3 * U + 6.94021044E5 * V) * U); + } + } + + return RANLAN; +} + diff --git a/gsl-2.5/randist/landau.lo b/gsl-2.5/randist/landau.lo new file mode 100644 index 00000000..0760c72e --- /dev/null +++ b/gsl-2.5/randist/landau.lo @@ -0,0 +1,12 @@ +# landau.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/landau.o' + +# Name of the non-PIC object +non_pic_object='landau.o' + diff --git a/gsl-2.5/randist/laplace.c b/gsl-2.5/randist/laplace.c new file mode 100644 index 00000000..659ac0a6 --- /dev/null +++ b/gsl-2.5/randist/laplace.c @@ -0,0 +1,57 @@ +/* randist/laplace.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 James Theiler, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include + +/* The two-sided exponential probability distribution is + + p(x) dx = (1/(2 a)) * exp(-|x/a|) dx + + for -infty < x < infty. It is also known as the Laplace distribution. */ + +double +gsl_ran_laplace (const gsl_rng * r, const double a) +{ + double u; + do + { + u = 2 * gsl_rng_uniform (r) - 1.0; + } + while (u == 0.0); + + if (u < 0) + { + return a * log (-u); + } + else + { + return -a * log (u); + } +} + +double +gsl_ran_laplace_pdf (const double x, const double a) +{ + double p = (1/(2*a)) * exp (-fabs (x)/a); + return p; +} + diff --git a/gsl-2.5/randist/laplace.lo b/gsl-2.5/randist/laplace.lo new file mode 100644 index 00000000..bac12935 --- /dev/null +++ b/gsl-2.5/randist/laplace.lo @@ -0,0 +1,12 @@ +# laplace.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/laplace.o' + +# Name of the non-PIC object +non_pic_object='laplace.o' + diff --git a/gsl-2.5/randist/levy.c b/gsl-2.5/randist/levy.c new file mode 100644 index 00000000..44b1d098 --- /dev/null +++ b/gsl-2.5/randist/levy.c @@ -0,0 +1,136 @@ +/* randist/levy.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 James Theiler, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include + +/* The stable Levy probability distributions have the form + + p(x) dx = (1/(2 pi)) \int dt exp(- it x - |c t|^alpha) + + with 0 < alpha <= 2. + + For alpha = 1, we get the Cauchy distribution + For alpha = 2, we get the Gaussian distribution with sigma = sqrt(2) c. + + Fromn Chapter 5 of Bratley, Fox and Schrage "A Guide to + Simulation". The original reference given there is, + + J.M. Chambers, C.L. Mallows and B. W. Stuck. "A method for + simulating stable random variates". Journal of the American + Statistical Association, JASA 71 340-344 (1976). + + */ + +double +gsl_ran_levy (const gsl_rng * r, const double c, const double alpha) +{ + double u, v, t, s; + + u = M_PI * (gsl_rng_uniform_pos (r) - 0.5); + + if (alpha == 1) /* cauchy case */ + { + t = tan (u); + return c * t; + } + + do + { + v = gsl_ran_exponential (r, 1.0); + } + while (v == 0); + + if (alpha == 2) /* gaussian case */ + { + t = 2 * sin (u) * sqrt(v); + return c * t; + } + + /* general case */ + + t = sin (alpha * u) / pow (cos (u), 1 / alpha); + s = pow (cos ((1 - alpha) * u) / v, (1 - alpha) / alpha); + + return c * t * s; +} + + +/* The following routine for the skew-symmetric case was provided by + Keith Briggs. + + The stable Levy probability distributions have the form + + 2*pi* p(x) dx + + = \int dt exp(mu*i*t-|sigma*t|^alpha*(1-i*beta*sign(t)*tan(pi*alpha/2))) for alpha!=1 + = \int dt exp(mu*i*t-|sigma*t|^alpha*(1+i*beta*sign(t)*2/pi*log(|t|))) for alpha==1 + + with 00. + + For beta=0, sigma=c, mu=0, we get gsl_ran_levy above. + + For alpha = 1, beta=0, we get the Lorentz distribution + For alpha = 2, beta=0, we get the Gaussian distribution + + See A. Weron and R. Weron: Computer simulation of Lvy alpha-stable + variables and processes, preprint Technical University of Wroclaw. + http://www.im.pwr.wroc.pl/~hugo/Publications.html + +*/ + +double +gsl_ran_levy_skew (const gsl_rng * r, const double c, + const double alpha, const double beta) +{ + double V, W, X; + + if (beta == 0) /* symmetric case */ + { + return gsl_ran_levy (r, c, alpha); + } + + V = M_PI * (gsl_rng_uniform_pos (r) - 0.5); + + do + { + W = gsl_ran_exponential (r, 1.0); + } + while (W == 0); + + if (alpha == 1) + { + X = ((M_PI_2 + beta * V) * tan (V) - + beta * log (M_PI_2 * W * cos (V) / (M_PI_2 + beta * V))) / M_PI_2; + return c * (X + beta * log (c) / M_PI_2); + } + else + { + double t = beta * tan (M_PI_2 * alpha); + double B = atan (t) / alpha; + double S = pow (1 + t * t, 1/(2 * alpha)); + + X = S * sin (alpha * (V + B)) / pow (cos (V), 1 / alpha) + * pow (cos (V - alpha * (V + B)) / W, (1 - alpha) / alpha); + return c * X; + } +} diff --git a/gsl-2.5/randist/levy.lo b/gsl-2.5/randist/levy.lo new file mode 100644 index 00000000..fb391480 --- /dev/null +++ b/gsl-2.5/randist/levy.lo @@ -0,0 +1,12 @@ +# levy.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/levy.o' + +# Name of the non-PIC object +non_pic_object='levy.o' + diff --git a/gsl-2.5/randist/libgslrandist.la b/gsl-2.5/randist/libgslrandist.la new file mode 100644 index 00000000..6641cc7a --- /dev/null +++ b/gsl-2.5/randist/libgslrandist.la @@ -0,0 +1,41 @@ +# libgslrandist.la - a libtool library file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='' + +# Names of this library. +library_names='' + +# The name of the static archive. +old_library='libgslrandist.a' + +# Linker flags that can not go in dependency_libs. +inherited_linker_flags='' + +# Libraries that this one depends upon. +dependency_libs=' -lm' + +# Names of additional weak libraries provided by this library +weak_library_names='' + +# Version information for libgslrandist. +current= +age= +revision= + +# Is this an already installed library? +installed=no + +# Should we warn about portability when linking against -modules? +shouldnotlink=no + +# Files to dlopen/dlpreopen +dlopen='' +dlpreopen='' + +# Directory that this library needs to be installed in: +libdir='' diff --git a/gsl-2.5/randist/logarithmic.c b/gsl-2.5/randist/logarithmic.c new file mode 100644 index 00000000..d474af07 --- /dev/null +++ b/gsl-2.5/randist/logarithmic.c @@ -0,0 +1,76 @@ +/* randist/logarithmic.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 James Theiler, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include + +/* Logarithmic distribution + + prob(n) = p^n / (n log(1/(1-p)) for n = 1, 2, 3, ... + + We use Kemp's second accelerated generator, from Luc Devroye's book + on "Non-Uniform Random Variate Generation", Springer */ + +unsigned int +gsl_ran_logarithmic (const gsl_rng * r, const double p) +{ + double c = log (1-p) ; + + double v = gsl_rng_uniform_pos (r); + + if (v >= p) + { + return 1 ; + } + else + { + double u = gsl_rng_uniform_pos (r); + double q = 1 - exp (c * u); + + if (v <= q*q) + { + double x = 1 + log(v)/log(q) ; + return x ; + } + else if (v <= q) + { + return 2; + } + else + { + return 1 ; + } + } +} + +double +gsl_ran_logarithmic_pdf (const unsigned int k, const double p) +{ + if (k == 0) + { + return 0 ; + } + else + { + double P = pow(p, (double)k) / (double) k / log(1/(1-p)) ; + return P; + } +} diff --git a/gsl-2.5/randist/logarithmic.lo b/gsl-2.5/randist/logarithmic.lo new file mode 100644 index 00000000..dffc72b0 --- /dev/null +++ b/gsl-2.5/randist/logarithmic.lo @@ -0,0 +1,12 @@ +# logarithmic.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/logarithmic.o' + +# Name of the non-PIC object +non_pic_object='logarithmic.o' + diff --git a/gsl-2.5/randist/logistic.c b/gsl-2.5/randist/logistic.c new file mode 100644 index 00000000..c1e05d4f --- /dev/null +++ b/gsl-2.5/randist/logistic.c @@ -0,0 +1,53 @@ +/* randist/logistic.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 James Theiler, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include + +/* The logistic distribution has the form, + + p(x) dx = (1/a) exp(-x/a) / (1 + exp(-x/a))^2 dx + + for -infty < x < infty */ + +double +gsl_ran_logistic (const gsl_rng * r, const double a) +{ + double x, z; + + do + { + x = gsl_rng_uniform_pos (r); + } + while (x == 1); + + z = log (x / (1 - x)); + + return a * z; +} + +double +gsl_ran_logistic_pdf (const double x, const double a) +{ + double u = exp (-fabs(x)/a); + double p = u / (fabs(a) * (1 + u) * (1 + u)); + return p; +} diff --git a/gsl-2.5/randist/logistic.lo b/gsl-2.5/randist/logistic.lo new file mode 100644 index 00000000..421d83ee --- /dev/null +++ b/gsl-2.5/randist/logistic.lo @@ -0,0 +1,12 @@ +# logistic.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/logistic.o' + +# Name of the non-PIC object +non_pic_object='logistic.o' + diff --git a/gsl-2.5/randist/lognormal.c b/gsl-2.5/randist/lognormal.c new file mode 100644 index 00000000..5e3db0ec --- /dev/null +++ b/gsl-2.5/randist/lognormal.c @@ -0,0 +1,70 @@ +/* randist/lognormal.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 James Theiler, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include + +/* The lognormal distribution has the form + + p(x) dx = 1/(x * sqrt(2 pi sigma^2)) exp(-(ln(x) - zeta)^2/2 sigma^2) dx + + for x > 0. Lognormal random numbers are the exponentials of + gaussian random numbers */ + +double +gsl_ran_lognormal (const gsl_rng * r, const double zeta, const double sigma) +{ + double u, v, r2, normal, z; + + do + { + /* choose x,y in uniform square (-1,-1) to (+1,+1) */ + + u = -1 + 2 * gsl_rng_uniform (r); + v = -1 + 2 * gsl_rng_uniform (r); + + /* see if it is in the unit circle */ + r2 = u * u + v * v; + } + while (r2 > 1.0 || r2 == 0); + + normal = u * sqrt (-2.0 * log (r2) / r2); + + z = exp (sigma * normal + zeta); + + return z; +} + +double +gsl_ran_lognormal_pdf (const double x, const double zeta, const double sigma) +{ + if (x <= 0) + { + return 0 ; + } + else + { + double u = (log (x) - zeta)/sigma; + double p = 1 / (x * fabs(sigma) * sqrt (2 * M_PI)) * exp (-(u * u) /2); + return p; + } +} diff --git a/gsl-2.5/randist/lognormal.lo b/gsl-2.5/randist/lognormal.lo new file mode 100644 index 00000000..944a03cd --- /dev/null +++ b/gsl-2.5/randist/lognormal.lo @@ -0,0 +1,12 @@ +# lognormal.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/lognormal.o' + +# Name of the non-PIC object +non_pic_object='lognormal.o' + diff --git a/gsl-2.5/randist/multinomial.c b/gsl-2.5/randist/multinomial.c new file mode 100644 index 00000000..a4a3a1f3 --- /dev/null +++ b/gsl-2.5/randist/multinomial.c @@ -0,0 +1,121 @@ +/* randist/multinomial.c + * + * Copyright (C) 2002 Gavin E. Crooks + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include + +/* The multinomial distribution has the form + + N! n_1 n_2 n_K + prob(n_1, n_2, ... n_K) = -------------------- p_1 p_2 ... p_K + (n_1! n_2! ... n_K!) + + where n_1, n_2, ... n_K are nonnegative integers, sum_{k=1,K} n_k = N, + and p = (p_1, p_2, ..., p_K) is a probability distribution. + + Random variates are generated using the conditional binomial method. + This scales well with N and does not require a setup step. + + Ref: + C.S. David, The computer generation of multinomial random variates, + Comp. Stat. Data Anal. 16 (1993) 205-217 +*/ + +void +gsl_ran_multinomial (const gsl_rng * r, const size_t K, + const unsigned int N, const double p[], unsigned int n[]) +{ + size_t k; + double norm = 0.0; + double sum_p = 0.0; + + unsigned int sum_n = 0; + + /* p[k] may contain non-negative weights that do not sum to 1.0. + * Even a probability distribution will not exactly sum to 1.0 + * due to rounding errors. + */ + + for (k = 0; k < K; k++) + { + norm += p[k]; + } + + for (k = 0; k < K; k++) + { + if (p[k] > 0.0) + { + n[k] = gsl_ran_binomial (r, p[k] / (norm - sum_p), N - sum_n); + } + else + { + n[k] = 0; + } + + sum_p += p[k]; + sum_n += n[k]; + } + +} + + +double +gsl_ran_multinomial_pdf (const size_t K, + const double p[], const unsigned int n[]) +{ + return exp (gsl_ran_multinomial_lnpdf (K, p, n)); +} + + +double +gsl_ran_multinomial_lnpdf (const size_t K, + const double p[], const unsigned int n[]) +{ + size_t k; + unsigned int N = 0; + double log_pdf = 0.0; + double norm = 0.0; + + for (k = 0; k < K; k++) + { + N += n[k]; + } + + for (k = 0; k < K; k++) + { + norm += p[k]; + } + + log_pdf = gsl_sf_lnfact (N); + + for (k = 0; k < K; k++) + { + /* Handle case where n[k]==0 and p[k]==0 */ + + if (n[k] > 0) + { + log_pdf += log (p[k] / norm) * n[k] - gsl_sf_lnfact (n[k]); + } + } + + return log_pdf; +} diff --git a/gsl-2.5/randist/multinomial.lo b/gsl-2.5/randist/multinomial.lo new file mode 100644 index 00000000..ce9f6405 --- /dev/null +++ b/gsl-2.5/randist/multinomial.lo @@ -0,0 +1,12 @@ +# multinomial.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/multinomial.o' + +# Name of the non-PIC object +non_pic_object='multinomial.o' + diff --git a/gsl-2.5/randist/mvgauss.c b/gsl-2.5/randist/mvgauss.c new file mode 100644 index 00000000..917429f4 --- /dev/null +++ b/gsl-2.5/randist/mvgauss.c @@ -0,0 +1,242 @@ +/* randist/mvgauss.c + * + * Copyright (C) 2016 Timothée Flutre, Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +static int multivar_vcov (const double data[], size_t d, size_t tda, size_t n, + double vcov[], size_t tda2); + +/* Generate a random vector from a multivariate Gaussian distribution using + * the Cholesky decomposition of the variance-covariance matrix, following + * "Computational Statistics" from Gentle (2009), section 7.4. + * + * mu mean vector (dimension d) + * L matrix resulting from the Cholesky decomposition of + * variance-covariance matrix Sigma = L L^T (dimension d x d) + * result output vector (dimension d) + */ +int +gsl_ran_multivariate_gaussian (const gsl_rng * r, + const gsl_vector * mu, + const gsl_matrix * L, + gsl_vector * result) +{ + const size_t M = L->size1; + const size_t N = L->size2; + + if (M != N) + { + GSL_ERROR("requires square matrix", GSL_ENOTSQR); + } + else if (mu->size != M) + { + GSL_ERROR("incompatible dimension of mean vector with variance-covariance matrix", GSL_EBADLEN); + } + else if (result->size != M) + { + GSL_ERROR("incompatible dimension of result vector", GSL_EBADLEN); + } + else + { + size_t i; + + for (i = 0; i < M; ++i) + gsl_vector_set(result, i, gsl_ran_ugaussian(r)); + + gsl_blas_dtrmv(CblasLower, CblasNoTrans, CblasNonUnit, L, result); + gsl_vector_add(result, mu); + + return GSL_SUCCESS; + } +} + +/* Compute the log of the probability density function at a given quantile + * vector for a multivariate Gaussian distribution using the Cholesky + * decomposition of the variance-covariance matrix. + * + * x vector of quantiles (dimension d) + * mu mean vector (dimension d) + * L matrix resulting from the Cholesky decomposition of + * variance-covariance matrix Sigma = L L^T (dimension d x d) + * result output of the density (dimension 1) + * work vector used for intermediate computations (dimension d) + */ +int +gsl_ran_multivariate_gaussian_log_pdf (const gsl_vector * x, + const gsl_vector * mu, + const gsl_matrix * L, + double * result, + gsl_vector * work) +{ + const size_t M = L->size1; + const size_t N = L->size2; + + if (M != N) + { + GSL_ERROR("requires square matrix", GSL_ENOTSQR); + } + else if (mu->size != M) + { + GSL_ERROR("incompatible dimension of mean vector with variance-covariance matrix", GSL_EBADLEN); + } + else if (x->size != M) + { + GSL_ERROR("incompatible dimension of quantile vector", GSL_EBADLEN); + } + else if (work->size != M) + { + GSL_ERROR("incompatible dimension of work vector", GSL_EBADLEN); + } + else + { + size_t i; + double quadForm; /* (x - mu)' Sigma^{-1} (x - mu) */ + double logSqrtDetSigma; /* log [ sqrt(|Sigma|) ] */ + + /* compute: work = x - mu */ + for (i = 0; i < M; ++i) + { + double xi = gsl_vector_get(x, i); + double mui = gsl_vector_get(mu, i); + gsl_vector_set(work, i, xi - mui); + } + + /* compute: work = L^{-1} * (x - mu) */ + gsl_blas_dtrsv(CblasLower, CblasNoTrans, CblasNonUnit, L, work); + + /* compute: quadForm = (x - mu)' Sigma^{-1} (x - mu) */ + gsl_blas_ddot(work, work, &quadForm); + + /* compute: log [ sqrt(|Sigma|) ] = sum_i log L_{ii} */ + logSqrtDetSigma = 0.0; + for (i = 0; i < M; ++i) + { + double Lii = gsl_matrix_get(L, i, i); + logSqrtDetSigma += log(Lii); + } + + *result = -0.5*quadForm - logSqrtDetSigma - 0.5*M*log(2.0*M_PI); + + return GSL_SUCCESS; + } +} + +int +gsl_ran_multivariate_gaussian_pdf (const gsl_vector * x, + const gsl_vector * mu, + const gsl_matrix * L, + double * result, + gsl_vector * work) +{ + double logpdf; + int status = gsl_ran_multivariate_gaussian_log_pdf(x, mu, L, &logpdf, work); + + if (status == GSL_SUCCESS) + *result = exp(logpdf); + + return status; +} + +/* Compute the maximum-likelihood estimate of the mean vector of samples + * from a multivariate Gaussian distribution. + * + * Example from R (GPL): http://www.r-project.org/ + * (samples <- matrix(c(4.348817, 2.995049, -3.793431, 4.711934, 1.190864, -1.357363), nrow=3, ncol=2)) + * colMeans(samples) # 1.183478 1.515145 + */ +int +gsl_ran_multivariate_gaussian_mean (const gsl_matrix * X, gsl_vector * mu_hat) +{ + const size_t M = X->size1; + const size_t N = X->size2; + + if (N != mu_hat->size) + { + GSL_ERROR("mu_hat vector has wrong size", GSL_EBADLEN); + } + else + { + size_t j; + + for (j = 0; j < N; ++j) + { + gsl_vector_const_view c = gsl_matrix_const_column(X, j); + double mean = gsl_stats_mean(c.vector.data, c.vector.stride, M); + gsl_vector_set(mu_hat, j, mean); + } + + return GSL_SUCCESS; + } +} + +/* Compute the maximum-likelihood estimate of the variance-covariance matrix + * of samples from a multivariate Gaussian distribution. + */ +int +gsl_ran_multivariate_gaussian_vcov (const gsl_matrix * X, gsl_matrix * sigma_hat) +{ + const size_t M = X->size1; + const size_t N = X->size2; + + if (sigma_hat->size1 != sigma_hat->size2) + { + GSL_ERROR("sigma_hat must be a square matrix", GSL_ENOTSQR); + } + else if (N != sigma_hat->size1) + { + GSL_ERROR("sigma_hat does not match X matrix dimensions", GSL_EBADLEN); + } + else + { + return multivar_vcov (X->data, N, X->tda, M, sigma_hat->data, sigma_hat->tda); + } +} + +/* Example from R (GPL): http://www.r-project.org/ + * (samples <- matrix(c(4.348817, 2.995049, -3.793431, 4.711934, 1.190864, -1.357363), nrow=3, ncol=2)) + * cov(samples) # 19.03539 11.91384 \n 11.91384 9.28796 + */ +static int +multivar_vcov (const double data[], size_t d, size_t tda, size_t n, + double vcov[], size_t tda2) +{ + size_t j1 = 0, j2 = 0; + + for (j1 = 0; j1 < d; ++j1) + { + vcov[j1 * tda2 + j1] = gsl_stats_variance(&(data[j1]), tda, n); + for (j2 = j1 + 1; j2 < d; ++j2) + { + vcov[j1 * tda2 + j2] = gsl_stats_covariance(&(data[j1]), tda, + &(data[j2]), tda, n); + vcov[j2 * tda2 + j1] = vcov[j1 * tda2 + j2]; + } + } + + return GSL_SUCCESS; +} diff --git a/gsl-2.5/randist/mvgauss.lo b/gsl-2.5/randist/mvgauss.lo new file mode 100644 index 00000000..a592d700 --- /dev/null +++ b/gsl-2.5/randist/mvgauss.lo @@ -0,0 +1,12 @@ +# mvgauss.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/mvgauss.o' + +# Name of the non-PIC object +non_pic_object='mvgauss.o' + diff --git a/gsl-2.5/randist/nbinomial.c b/gsl-2.5/randist/nbinomial.c new file mode 100644 index 00000000..81dd46d1 --- /dev/null +++ b/gsl-2.5/randist/nbinomial.c @@ -0,0 +1,55 @@ +/* randist/nbinomial.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 James Theiler, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include + +/* The negative binomial distribution has the form, + + prob(k) = Gamma(n + k)/(Gamma(n) Gamma(k + 1)) p^n (1-p)^k + + for k = 0, 1, ... . Note that n does not have to be an integer. + + This is the Leger's algorithm (given in the answers in Knuth) */ + +unsigned int +gsl_ran_negative_binomial (const gsl_rng * r, double p, double n) +{ + double X = gsl_ran_gamma (r, n, 1.0) ; + unsigned int k = gsl_ran_poisson (r, X*(1-p)/p) ; + return k ; +} + +double +gsl_ran_negative_binomial_pdf (const unsigned int k, const double p, double n) +{ + double P; + + double f = gsl_sf_lngamma (k + n) ; + double a = gsl_sf_lngamma (n) ; + double b = gsl_sf_lngamma (k + 1.0) ; + + P = exp(f - a - b + n * log(p) + k * log1p(-p)); + + return P; +} diff --git a/gsl-2.5/randist/nbinomial.lo b/gsl-2.5/randist/nbinomial.lo new file mode 100644 index 00000000..585418a9 --- /dev/null +++ b/gsl-2.5/randist/nbinomial.lo @@ -0,0 +1,12 @@ +# nbinomial.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/nbinomial.o' + +# Name of the non-PIC object +non_pic_object='nbinomial.o' + diff --git a/gsl-2.5/randist/pareto.c b/gsl-2.5/randist/pareto.c new file mode 100644 index 00000000..9d031bab --- /dev/null +++ b/gsl-2.5/randist/pareto.c @@ -0,0 +1,54 @@ +/* randist/pareto.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 James Theiler, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include + +/* The Pareto distribution has the form, + + p(x) dx = (a/b) / (x/b)^(a+1) dx for x >= b + + */ + +double +gsl_ran_pareto (const gsl_rng * r, double a, const double b) +{ + double x = gsl_rng_uniform_pos (r); + + double z = pow (x, -1 / a); + + return b * z; +} + +double +gsl_ran_pareto_pdf (const double x, const double a, const double b) +{ + if (x >= b) + { + double p = (a/b) / pow (x/b, a + 1); + return p; + } + else + { + return 0; + } +} + diff --git a/gsl-2.5/randist/pareto.lo b/gsl-2.5/randist/pareto.lo new file mode 100644 index 00000000..fff89a49 --- /dev/null +++ b/gsl-2.5/randist/pareto.lo @@ -0,0 +1,12 @@ +# pareto.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/pareto.o' + +# Name of the non-PIC object +non_pic_object='pareto.o' + diff --git a/gsl-2.5/randist/pascal.c b/gsl-2.5/randist/pascal.c new file mode 100644 index 00000000..38a25a42 --- /dev/null +++ b/gsl-2.5/randist/pascal.c @@ -0,0 +1,50 @@ +/* randist/pascal.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 James Theiler, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include + +/* The Pascal distribution is a negative binomial with valued integer n + + prob(k) = (n - 1 + k)!/(n!(k - 1)!) * p^n (1-p)^k for k = 0, 1, ..., n + + */ + +unsigned int +gsl_ran_pascal (const gsl_rng * r, double p, unsigned int n) +{ + /* This is a separate interface for the pascal distribution so that + it can be optimized differently from the negative binomial in + future. + + e.g. if n < 10 it might be faster to generate the Pascal + distributions as the sum of geometric variates directly. */ + + unsigned int k = gsl_ran_negative_binomial (r, p, (double) n); + return k; +} + +double +gsl_ran_pascal_pdf (const unsigned int k, const double p, unsigned int n) +{ + double P = gsl_ran_negative_binomial_pdf (k, p, (double) n); + return P; +} diff --git a/gsl-2.5/randist/pascal.lo b/gsl-2.5/randist/pascal.lo new file mode 100644 index 00000000..6cd27713 --- /dev/null +++ b/gsl-2.5/randist/pascal.lo @@ -0,0 +1,12 @@ +# pascal.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/pascal.o' + +# Name of the non-PIC object +non_pic_object='pascal.o' + diff --git a/gsl-2.5/randist/poisson.c b/gsl-2.5/randist/poisson.c new file mode 100644 index 00000000..b28e29c9 --- /dev/null +++ b/gsl-2.5/randist/poisson.c @@ -0,0 +1,93 @@ +/* randist/poisson.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 James Theiler, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include + +/* The poisson distribution has the form + + p(n) = (mu^n / n!) exp(-mu) + + for n = 0, 1, 2, ... . The method used here is the one from Knuth. */ + +unsigned int +gsl_ran_poisson (const gsl_rng * r, double mu) +{ + double emu; + double prod = 1.0; + unsigned int k = 0; + + while (mu > 10) + { + unsigned int m = mu * (7.0 / 8.0); + + double X = gsl_ran_gamma_int (r, m); + + if (X >= mu) + { + return k + gsl_ran_binomial (r, mu / X, m - 1); + } + else + { + k += m; + mu -= X; + } + } + + /* This following method works well when mu is small */ + + emu = exp (-mu); + + do + { + prod *= gsl_rng_uniform (r); + k++; + } + while (prod > emu); + + return k - 1; + +} + +void +gsl_ran_poisson_array (const gsl_rng * r, size_t n, unsigned int array[], + double mu) +{ + size_t i; + + for (i = 0; i < n; i++) + { + array[i] = gsl_ran_poisson (r, mu); + } + + return; +} + +double +gsl_ran_poisson_pdf (const unsigned int k, const double mu) +{ + double p; + double lf = gsl_sf_lnfact (k); + + p = exp (log (mu) * k - lf - mu); + return p; +} diff --git a/gsl-2.5/randist/poisson.lo b/gsl-2.5/randist/poisson.lo new file mode 100644 index 00000000..a11ecd96 --- /dev/null +++ b/gsl-2.5/randist/poisson.lo @@ -0,0 +1,12 @@ +# poisson.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/poisson.o' + +# Name of the non-PIC object +non_pic_object='poisson.o' + diff --git a/gsl-2.5/randist/rayleigh.c b/gsl-2.5/randist/rayleigh.c new file mode 100644 index 00000000..c7c93046 --- /dev/null +++ b/gsl-2.5/randist/rayleigh.c @@ -0,0 +1,85 @@ +/* randist/rayleigh.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 James Theiler, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include + +/* The Rayleigh distribution has the form + + p(x) dx = (x / sigma^2) exp(-x^2/(2 sigma^2)) dx + + for x = 0 ... +infty */ + +double +gsl_ran_rayleigh (const gsl_rng * r, const double sigma) +{ + double u = gsl_rng_uniform_pos (r); + + return sigma * sqrt(-2.0 * log (u)); +} + +double +gsl_ran_rayleigh_pdf (const double x, const double sigma) +{ + if (x < 0) + { + return 0 ; + } + else + { + double u = x / sigma ; + double p = (u / sigma) * exp(-u * u / 2.0) ; + + return p; + } +} + +/* The Rayleigh tail distribution has the form + + p(x) dx = (x / sigma^2) exp((a^2 - x^2)/(2 sigma^2)) dx + + for x = a ... +infty */ + +double +gsl_ran_rayleigh_tail (const gsl_rng * r, const double a, const double sigma) +{ + double u = gsl_rng_uniform_pos (r); + + return sqrt(a * a - 2.0 * sigma * sigma * log (u)); +} + +double +gsl_ran_rayleigh_tail_pdf (const double x, const double a, const double sigma) +{ + if (x < a) + { + return 0 ; + } + else + { + double u = x / sigma ; + double v = a / sigma ; + + double p = (u / sigma) * exp((v + u) * (v - u) / 2.0) ; + + return p; + } +} diff --git a/gsl-2.5/randist/rayleigh.lo b/gsl-2.5/randist/rayleigh.lo new file mode 100644 index 00000000..5c670837 --- /dev/null +++ b/gsl-2.5/randist/rayleigh.lo @@ -0,0 +1,12 @@ +# rayleigh.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/rayleigh.o' + +# Name of the non-PIC object +non_pic_object='rayleigh.o' + diff --git a/gsl-2.5/randist/shuffle.c b/gsl-2.5/randist/shuffle.c new file mode 100644 index 00000000..1e45420a --- /dev/null +++ b/gsl-2.5/randist/shuffle.c @@ -0,0 +1,124 @@ +/* randist/shuffle.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 James Theiler, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include + +/* Inline swap and copy functions for moving objects around */ + +static inline +void swap (void * base, size_t size, size_t i, size_t j) +{ + register char * a = size * i + (char *) base ; + register char * b = size * j + (char *) base ; + register size_t s = size ; + + if (i == j) + return ; + + do + { + char tmp = *a; + *a++ = *b; + *b++ = tmp; + } + while (--s > 0); +} + +static inline void +copy (void * dest, size_t i, void * src, size_t j, size_t size) +{ + register char * a = size * i + (char *) dest ; + register char * b = size * j + (char *) src ; + register size_t s = size ; + + do + { + *a++ = *b++; + } + while (--s > 0); +} + +/* Randomly permute (shuffle) N indices + + Supply an array x[N] with nmemb members, each of size size and on + return it will be shuffled into a random order. The algorithm is + from Knuth, SemiNumerical Algorithms, v2, p139, who cites Moses and + Oakford, and Durstenfeld */ + +void +gsl_ran_shuffle (const gsl_rng * r, void * base, size_t n, size_t size) +{ + size_t i ; + + for (i = n - 1; i > 0; i--) + { + size_t j = gsl_rng_uniform_int(r, i+1); /* originally (i + 1) * gsl_rng_uniform (r) */ + + swap (base, size, i, j) ; + } +} + +int +gsl_ran_choose (const gsl_rng * r, void * dest, size_t k, void * src, + size_t n, size_t size) +{ + size_t i, j = 0; + + /* Choose k out of n items, return an array x[] of the k items. + These items will prevserve the relative order of the original + input -- you can use shuffle() to randomize the output if you + wish */ + + if (k > n) + { + GSL_ERROR ("k is greater than n, cannot sample more than n items", + GSL_EINVAL) ; + } + + for (i = 0; i < n && j < k; i++) + { + if ((n - i) * gsl_rng_uniform (r) < k - j) + { + copy (dest, j, src, i, size) ; + j++ ; + } + } + + return GSL_SUCCESS; +} + +void +gsl_ran_sample (const gsl_rng * r, void * dest, size_t k, void * src, + size_t n, size_t size) +{ + size_t i, j = 0; + + /* Choose k out of n items, with replacement */ + + for (i = 0; i < k; i++) + { + j = gsl_rng_uniform_int (r, n); /* originally n * gsl_rng_uniform (r) */ + + copy (dest, i, src, j, size) ; + } +} diff --git a/gsl-2.5/randist/shuffle.lo b/gsl-2.5/randist/shuffle.lo new file mode 100644 index 00000000..a5c93756 --- /dev/null +++ b/gsl-2.5/randist/shuffle.lo @@ -0,0 +1,12 @@ +# shuffle.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/shuffle.o' + +# Name of the non-PIC object +non_pic_object='shuffle.o' + diff --git a/gsl-2.5/randist/sphere.c b/gsl-2.5/randist/sphere.c new file mode 100644 index 00000000..a93615e6 --- /dev/null +++ b/gsl-2.5/randist/sphere.c @@ -0,0 +1,119 @@ +/* randist/sphere.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2004, 2007 James Theiler, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include + +void +gsl_ran_dir_2d (const gsl_rng * r, double *x, double *y) +{ + /* This method avoids trig, but it does take an average of 8/pi = + * 2.55 calls to the RNG, instead of one for the direct + * trigonometric method. */ + + double u, v, s; + do + { + u = -1 + 2 * gsl_rng_uniform (r); + v = -1 + 2 * gsl_rng_uniform (r); + s = u * u + v * v; + } + while (s > 1.0 || s == 0.0); + + /* This is the Von Neumann trick. See Knuth, v2, 3rd ed, p140 + * (exercise 23). Note, no sin, cos, or sqrt ! */ + + *x = (u * u - v * v) / s; + *y = 2 * u * v / s; + + /* Here is the more straightforward approach, + * s = sqrt (s); *x = u / s; *y = v / s; + * It has fewer total operations, but one of them is a sqrt */ +} + +void +gsl_ran_dir_2d_trig_method (const gsl_rng * r, double *x, double *y) +{ + /* This is the obvious solution... */ + /* It ain't clever, but since sin/cos are often hardware accelerated, + * it can be faster -- it is on my home Pentium -- than von Neumann's + * solution, or slower -- as it is on my Sun Sparc 20 at work + */ + double t = 6.2831853071795864 * gsl_rng_uniform (r); /* 2*PI */ + *x = cos (t); + *y = sin (t); +} + +void +gsl_ran_dir_3d (const gsl_rng * r, double *x, double *y, double *z) +{ + double s, a; + + /* This is a variant of the algorithm for computing a random point + * on the unit sphere; the algorithm is suggested in Knuth, v2, + * 3rd ed, p136; and attributed to Robert E Knop, CACM, 13 (1970), + * 326. + */ + + /* Begin with the polar method for getting x,y inside a unit circle + */ + do + { + *x = -1 + 2 * gsl_rng_uniform (r); + *y = -1 + 2 * gsl_rng_uniform (r); + s = (*x) * (*x) + (*y) * (*y); + } + while (s > 1.0); + + *z = -1 + 2 * s; /* z uniformly distributed from -1 to 1 */ + a = 2 * sqrt (1 - s); /* factor to adjust x,y so that x^2+y^2 + * is equal to 1-z^2 */ + *x *= a; + *y *= a; +} + +void +gsl_ran_dir_nd (const gsl_rng * r, size_t n, double *x) +{ + double d; + size_t i; + /* See Knuth, v2, 3rd ed, p135-136. The method is attributed to + * G. W. Brown, in Modern Mathematics for the Engineer (1956). + * The idea is that gaussians G(x) have the property that + * G(x)G(y)G(z)G(...) is radially symmetric, a function only + * r = sqrt(x^2+y^2+...) + */ + d = 0; + do + { + for (i = 0; i < n; ++i) + { + x[i] = gsl_ran_gaussian (r, 1.0); + d += x[i] * x[i]; + } + } + while (d == 0); + d = sqrt (d); + for (i = 0; i < n; ++i) + { + x[i] /= d; + } +} diff --git a/gsl-2.5/randist/sphere.lo b/gsl-2.5/randist/sphere.lo new file mode 100644 index 00000000..40fa3abb --- /dev/null +++ b/gsl-2.5/randist/sphere.lo @@ -0,0 +1,12 @@ +# sphere.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/sphere.o' + +# Name of the non-PIC object +non_pic_object='sphere.o' + diff --git a/gsl-2.5/randist/tdist.c b/gsl-2.5/randist/tdist.c new file mode 100644 index 00000000..f2543701 --- /dev/null +++ b/gsl-2.5/randist/tdist.c @@ -0,0 +1,80 @@ +/* randist/tdist.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 James Theiler, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include + +/* The t-distribution has the form + + p(x) dx = (Gamma((nu + 1)/2)/(sqrt(pi nu) Gamma(nu/2)) + * (1 + (x^2)/nu)^-((nu + 1)/2) dx + + The method used here is the one described in Knuth */ + +double +gsl_ran_tdist (const gsl_rng * r, const double nu) +{ + if (nu <= 2) + { + double Y1 = gsl_ran_ugaussian (r); + double Y2 = gsl_ran_chisq (r, nu); + + double t = Y1 / sqrt (Y2 / nu); + + return t; + } + else + { + double Y1, Y2, Z, t; + do + { + Y1 = gsl_ran_ugaussian (r); + Y2 = gsl_ran_exponential (r, 1 / (nu/2 - 1)); + + Z = Y1 * Y1 / (nu - 2); + } + while (1 - Z < 0 || exp (-Y2 - Z) > (1 - Z)); + + /* Note that there is a typo in Knuth's formula, the line below + is taken from the original paper of Marsaglia, Mathematics of + Computation, 34 (1980), p 234-256 */ + + t = Y1 / sqrt ((1 - 2 / nu) * (1 - Z)); + return t; + } +} + +double +gsl_ran_tdist_pdf (const double x, const double nu) +{ + double p; + + double lg1 = gsl_sf_lngamma (nu / 2); + double lg2 = gsl_sf_lngamma ((nu + 1) / 2); + + p = ((exp (lg2 - lg1) / sqrt (M_PI * nu)) + * pow ((1 + x * x / nu), -(nu + 1) / 2)); + return p; +} + + diff --git a/gsl-2.5/randist/tdist.lo b/gsl-2.5/randist/tdist.lo new file mode 100644 index 00000000..12599eb5 --- /dev/null +++ b/gsl-2.5/randist/tdist.lo @@ -0,0 +1,12 @@ +# tdist.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/tdist.o' + +# Name of the non-PIC object +non_pic_object='tdist.o' + diff --git a/gsl-2.5/randist/test b/gsl-2.5/randist/test new file mode 100755 index 00000000..73f0efb1 --- /dev/null +++ b/gsl-2.5/randist/test @@ -0,0 +1,228 @@ +#! /bin/sh + +# test - temporary wrapper script for .libs/test +# Generated by libtool (GNU libtool) 2.4.2 +# +# The test program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s/\([`"$\\]\)/\\\1/g' + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command="(cd /home/groups/kipac/chto/package/gsl/gsl-2.5/randist; LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LIBRARY_PATH; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; LD_LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/fftw/include:/home/users/chto/lib/fftw/lib:/home/users/chto/lib/healpix/lib:/home/users/chto/lib/namaster/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/include:/home/users/chto/cpp/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LD_LIBRARY_PATH; PATH=/share/software/user/open/curl/7.54.0/bin:/share/software/user/open/libressl/2.5.3/bin:/home/users/chto/lib/cfitsio:/home/users/chto/lib/cfitsio/include:/home/users/chto/lib:/home/users/chto/bin/bin:/home/users/chto/bin:/home/users/chto/.texlive/bin/x86_64-linux:/home/groups/kipac/chto/anaconda2/envs/newenv3/bin:/home/users/chto/.local/bin/include:/home/users/chto/.local/bin/lib:/home/users/chto/.local/bin:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/bin64:/share/software/user/open/fftw/3.3.6/bin:/home/groups/kipac/chto/anaconda2/condabin:/share/software/user/restricted/ifort/2019/bin:/share/software/user/open/gsl/2.3/bin:/share/software/user/srcc/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/dell/srvadmin/bin:/opt/dell/srvadmin/iSM/bin:/home/users/chto/bin; export PATH; gcc -g -O2 -o \$progdir/\$file test.o ./.libs/libgslrandist.a ../rng/.libs/libgslrng.a ../cdf/.libs/libgslcdf.a ../specfunc/.libs/libgslspecfunc.a ../integration/.libs/libgslintegration.a ../complex/.libs/libgslcomplex.a ../ieee-utils/.libs/libgslieeeutils.a ../err/.libs/libgslerr.a ../test/.libs/libgsltest.a ../sys/.libs/libgslsys.a ../utils/.libs/libutils.a ../statistics/.libs/libgslstatistics.a ../sort/.libs/libgslsort.a ../linalg/.libs/libgsllinalg.a ../blas/.libs/libgslblas.a ../cblas/.libs/libgslcblas.so ../matrix/.libs/libgslmatrix.a ../vector/.libs/libgslvector.a ../block/.libs/libgslblock.a -lm -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/cblas/.libs -Wl,-rpath -Wl,/usr/local/lib)" + +# This environment variable determines our operation mode. +if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then + # install mode needs the following variables: + generated_by_libtool_version='2.4.2' + notinst_deplibs=' ../cblas/libgslcblas.la' +else + # When we are sourced in execute mode, $file and $ECHO are already set. + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + file="$0" + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + ECHO="printf %s\\n" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ which is used only on +# windows platforms, and (c) all begin with the string --lt- +# (application programs are unlikely to have options which match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's ../libtool value, followed by no. +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=$0 + shift + for lt_opt + do + case "$lt_opt" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%/[^/]*$%%'` + test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=. + lt_dump_F=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%^.*/%%'` + cat "$lt_dump_D/$lt_dump_F" + exit 0 + ;; + --lt-*) + $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n "$lt_option_debug"; then + echo "test:test:${LINENO}: libtool wrapper (GNU libtool) 2.4.2" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + $ECHO "test:test:${LINENO}: newargv[$lt_dump_args_N]: $lt_arg" + lt_dump_args_N=`expr $lt_dump_args_N + 1` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ + + if test -n "$lt_option_debug"; then + $ECHO "test:test:${LINENO}: newargv[0]: $progdir/$program" 1>&2 + func_lt_dump_args ${1+"$@"} 1>&2 + fi + exec "$progdir/$program" ${1+"$@"} + + $ECHO "$0: cannot exec $program $*" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from $@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case " $* " in + *\ --lt-*) + for lt_wr_arg + do + case $lt_wr_arg in + --lt-*) ;; + *) set x "$@" "$lt_wr_arg"; shift;; + esac + shift + done ;; + esac + func_exec_program_core ${1+"$@"} +} + + # Parse options + func_parse_lt_options "$0" ${1+"$@"} + + # Find the directory that this script lives in. + thisdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + test "x$thisdir" = "x$file" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=`ls -ld "$file" | /usr/bin/sed -n 's/.*-> //p'` + while test -n "$file"; do + destdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + + # If there was a directory component, then change thisdir. + if test "x$destdir" != "x$file"; then + case "$destdir" in + [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;; + *) thisdir="$thisdir/$destdir" ;; + esac + fi + + file=`$ECHO "$file" | /usr/bin/sed 's%^.*/%%'` + file=`ls -ld "$thisdir/$file" | /usr/bin/sed -n 's/.*-> //p'` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no + if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then + # special case for '.' + if test "$thisdir" = "."; then + thisdir=`pwd` + fi + # remove .libs from thisdir + case "$thisdir" in + *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /usr/bin/sed 's%[\\/][^\\/]*$%%'` ;; + .libs ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=`cd "$thisdir" && pwd` + test -n "$absdir" && thisdir="$absdir" + + program=lt-'test' + progdir="$thisdir/.libs" + + if test ! -f "$progdir/$program" || + { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /usr/bin/sed 1q`; \ + test "X$file" != "X$progdir/$program"; }; then + + file="$$-$program" + + if test ! -d "$progdir"; then + mkdir "$progdir" + else + rm -f "$progdir/$file" + fi + + # relink executable if necessary + if test -n "$relink_command"; then + if relink_command_output=`eval $relink_command 2>&1`; then : + else + printf %s\n "$relink_command_output" >&2 + rm -f "$progdir/$file" + exit 1 + fi + fi + + mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null || + { rm -f "$progdir/$program"; + mv -f "$progdir/$file" "$progdir/$program"; } + rm -f "$progdir/$file" + fi + + if test -f "$progdir/$program"; then + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + # Run the actual program with our arguments. + func_exec_program ${1+"$@"} + fi + else + # The program doesn't exist. + $ECHO "$0: error: \`$progdir/$program' does not exist" 1>&2 + $ECHO "This script is just a wrapper for $program." 1>&2 + $ECHO "See the libtool documentation for more information." 1>&2 + exit 1 + fi +fi diff --git a/gsl-2.5/randist/test-suite.log b/gsl-2.5/randist/test-suite.log new file mode 100644 index 00000000..39511f5d --- /dev/null +++ b/gsl-2.5/randist/test-suite.log @@ -0,0 +1,14 @@ +===================================== + gsl 2.5: randist/test-suite.log +===================================== + +# TOTAL: 1 +# PASS: 1 +# SKIP: 0 +# XFAIL: 0 +# FAIL: 0 +# XPASS: 0 +# ERROR: 0 + +.. contents:: :depth: 2 + diff --git a/gsl-2.5/randist/test.c b/gsl-2.5/randist/test.c new file mode 100644 index 00000000..c841f8b9 --- /dev/null +++ b/gsl-2.5/randist/test.c @@ -0,0 +1,2500 @@ +/* randist/test.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007, 2010 James Theiler, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define N 100000 + +/* Convient test dimension for multivariant distributions */ +#define MULTI_DIM 10 + + +void testMoments (double (*f) (void), const char *name, + double a, double b, double p); +void testPDF (double (*f) (void), double (*pdf) (double), const char *name); +void testDiscretePDF (double (*f) (void), double (*pdf) (unsigned int), + const char *name); + +void test_shuffle (void); +void test_choose (void); +double test_beta (void); +double test_beta_pdf (double x); +double test_bernoulli (void); +double test_bernoulli_pdf (unsigned int n); + +double test_binomial (void); +double test_binomial_pdf (unsigned int n); +double test_binomial_large (void); +double test_binomial_large_pdf (unsigned int n); +double test_binomial_huge (void); +double test_binomial_huge_pdf (unsigned int n); +double test_binomial_max (void); +double test_binomial_max_pdf (unsigned int n); +double test_binomial0 (void); +double test_binomial0_pdf (unsigned int n); +double test_binomial1 (void); +double test_binomial1_pdf (unsigned int n); + + + +double test_binomial_knuth (void); +double test_binomial_knuth_pdf (unsigned int n); +double test_binomial_large_knuth (void); +double test_binomial_large_knuth_pdf (unsigned int n); +double test_binomial_huge_knuth (void); +double test_binomial_huge_knuth_pdf (unsigned int n); + +double test_cauchy (void); +double test_cauchy_pdf (double x); +double test_chisq (void); +double test_chisq_pdf (double x); +double test_chisqnu2 (void); +double test_chisqnu2_pdf (double x); +double test_dirichlet (void); +double test_dirichlet_pdf (double x); +double test_dirichlet_small (void); +double test_dirichlet_small_pdf (double x); +void test_dirichlet_moments (void); +double test_discrete1 (void); +double test_discrete1_pdf (unsigned int n); +double test_discrete2 (void); +double test_discrete2_pdf (unsigned int n); +double test_discrete3 (void); +double test_discrete3_pdf (unsigned int n); +double test_erlang (void); +double test_erlang_pdf (double x); +double test_exponential (void); +double test_exponential_pdf (double x); +double test_exppow0 (void); +double test_exppow0_pdf (double x); +double test_exppow1 (void); +double test_exppow1_pdf (double x); +double test_exppow1a (void); +double test_exppow1a_pdf (double x); +double test_exppow2 (void); +double test_exppow2_pdf (double x); +double test_exppow2a (void); +double test_exppow2a_pdf (double x); +double test_exppow2b (void); +double test_exppow2b_pdf (double x); +double test_fdist (void); +double test_fdist_pdf (double x); +double test_fdist_large (void); +double test_fdist_large_pdf (double x); +double test_flat (void); +double test_flat_pdf (double x); +double test_gamma (void); +double test_gamma_pdf (double x); +double test_gamma1 (void); +double test_gamma1_pdf (double x); +double test_gamma_int (void); +double test_gamma_int_pdf (double x); +double test_gamma_large (void); +double test_gamma_large_pdf (double x); +double test_gamma_vlarge (void); +double test_gamma_vlarge_pdf (double x); +double test_gamma_small (void); +double test_gamma_small_pdf (double x); +double test_gamma_mt (void); +double test_gamma_mt_pdf (double x); +double test_gamma_mt1 (void); +double test_gamma_mt1_pdf (double x); +double test_gamma_mt_int (void); +double test_gamma_mt_int_pdf (double x); +double test_gamma_mt_large (void); +double test_gamma_mt_large_pdf (double x); +double test_gamma_mt_small (void); +double test_gamma_mt_small_pdf (double x); +double test_gamma_knuth_vlarge (void); +double test_gamma_knuth_vlarge_pdf (double x); +double test_gaussian (void); +double test_gaussian_pdf (double x); +double test_gaussian_ratio_method (void); +double test_gaussian_ratio_method_pdf (double x); +double test_gaussian_ziggurat (void); +double test_gaussian_ziggurat_pdf (double x); +double test_gaussian_tail (void); +double test_gaussian_tail_pdf (double x); +double test_gaussian_tail1 (void); +double test_gaussian_tail1_pdf (double x); +double test_gaussian_tail2 (void); +double test_gaussian_tail2_pdf (double x); +double test_ugaussian (void); +double test_ugaussian_pdf (double x); +double test_ugaussian_ratio_method (void); +double test_ugaussian_ratio_method_pdf (double x); +double test_ugaussian_tail (void); +double test_ugaussian_tail_pdf (double x); +double test_bivariate_gaussian1 (void); +double test_bivariate_gaussian1_pdf (double x); +double test_bivariate_gaussian2 (void); +double test_bivariate_gaussian2_pdf (double x); +double test_bivariate_gaussian3 (void); +double test_bivariate_gaussian3_pdf (double x); +double test_bivariate_gaussian4 (void); +double test_bivariate_gaussian4_pdf (double x); +void test_multivariate_gaussian_log_pdf (void); +void test_multivariate_gaussian_pdf (void); +void test_multivariate_gaussian (void); +void test_wishart_log_pdf (void); +void test_wishart_pdf (void); +void test_wishart (void); +double test_gumbel1 (void); +double test_gumbel1_pdf (double x); +double test_gumbel2 (void); +double test_gumbel2_pdf (double x); +double test_geometric (void); +double test_geometric_pdf (unsigned int x); +double test_geometric1 (void); +double test_geometric1_pdf (unsigned int x); +double test_hypergeometric1 (void); +double test_hypergeometric1_pdf (unsigned int x); +double test_hypergeometric2 (void); +double test_hypergeometric2_pdf (unsigned int x); +double test_hypergeometric3 (void); +double test_hypergeometric3_pdf (unsigned int x); +double test_hypergeometric4 (void); +double test_hypergeometric4_pdf (unsigned int x); +double test_hypergeometric5 (void); +double test_hypergeometric5_pdf (unsigned int x); +double test_hypergeometric6 (void); +double test_hypergeometric6_pdf (unsigned int x); +double test_landau (void); +double test_landau_pdf (double x); +double test_levy1 (void); +double test_levy1_pdf (double x); +double test_levy2 (void); +double test_levy2_pdf (double x); +double test_levy1a (void); +double test_levy1a_pdf (double x); +double test_levy2a (void); +double test_levy2a_pdf (double x); +double test_levy_skew1 (void); +double test_levy_skew1_pdf (double x); +double test_levy_skew2 (void); +double test_levy_skew2_pdf (double x); +double test_levy_skew1a (void); +double test_levy_skew1a_pdf (double x); +double test_levy_skew2a (void); +double test_levy_skew2a_pdf (double x); +double test_levy_skew1b (void); +double test_levy_skew1b_pdf (double x); +double test_levy_skew2b (void); +double test_levy_skew2b_pdf (double x); +double test_logistic (void); +double test_logistic_pdf (double x); +double test_lognormal (void); +double test_lognormal_pdf (double x); +double test_logarithmic (void); +double test_logarithmic_pdf (unsigned int n); +double test_multinomial (void); +double test_multinomial_pdf (unsigned int n); +double test_multinomial_large (void); +double test_multinomial_large_pdf (unsigned int n); +void test_multinomial_moments (void); +double test_negative_binomial (void); +double test_negative_binomial_pdf (unsigned int n); +double test_pascal (void); +double test_pascal_pdf (unsigned int n); +double test_pareto (void); +double test_pareto_pdf (double x); +double test_poisson (void); +double test_poisson_pdf (unsigned int x); +double test_poisson_large (void); +double test_poisson_large_pdf (unsigned int x); +double test_dir2d (void); +double test_dir2d_pdf (double x); +double test_dir2d_trig_method (void); +double test_dir2d_trig_method_pdf (double x); +double test_dir3dxy (void); +double test_dir3dxy_pdf (double x); +double test_dir3dyz (void); +double test_dir3dyz_pdf (double x); +double test_dir3dzx (void); +double test_dir3dzx_pdf (double x); +double test_rayleigh (void); +double test_rayleigh_pdf (double x); +double test_rayleigh_tail (void); +double test_rayleigh_tail_pdf (double x); +double test_tdist1 (void); +double test_tdist1_pdf (double x); +double test_tdist2 (void); +double test_tdist2_pdf (double x); +double test_laplace (void); +double test_laplace_pdf (double x); +double test_weibull (void); +double test_weibull_pdf (double x); +double test_weibull1 (void); +double test_weibull1_pdf (double x); + +gsl_rng *r_global; + +static gsl_ran_discrete_t *g1 = NULL; +static gsl_ran_discrete_t *g2 = NULL; +static gsl_ran_discrete_t *g3 = NULL; + +int +main (void) +{ + gsl_ieee_env_setup (); + + gsl_rng_env_setup (); + r_global = gsl_rng_alloc (gsl_rng_default); + +#define FUNC(x) test_ ## x, "test gsl_ran_" #x +#define FUNC2(x) test_ ## x, test_ ## x ## _pdf, "test gsl_ran_" #x + + test_shuffle (); + test_choose (); + + testMoments (FUNC (ugaussian), 0.0, 100.0, 0.5); + testMoments (FUNC (ugaussian), -1.0, 1.0, 0.6826895); + testMoments (FUNC (ugaussian), 3.0, 3.5, 0.0011172689); + testMoments (FUNC (ugaussian_tail), 3.0, 3.5, 0.0011172689 / 0.0013498981); + testMoments (FUNC (exponential), 0.0, 1.0, 1 - exp (-0.5)); + testMoments (FUNC (cauchy), 0.0, 10000.0, 0.5); + + testMoments (FUNC (discrete1), -0.5, 0.5, 0.59); + testMoments (FUNC (discrete1), 0.5, 1.5, 0.40); + testMoments (FUNC (discrete1), 1.5, 3.5, 0.01); + + testMoments (FUNC (discrete2), -0.5, 0.5, 1.0/45.0 ); + testMoments (FUNC (discrete2), 8.5, 9.5, 0 ); + + testMoments (FUNC (discrete3), -0.5, 0.5, 0.05 ); + testMoments (FUNC (discrete3), 0.5, 1.5, 0.05 ); + testMoments (FUNC (discrete3), -0.5, 9.5, 0.5 ); + + test_dirichlet_moments (); + test_multinomial_moments (); + + testPDF (FUNC2 (beta)); + testPDF (FUNC2 (cauchy)); + testPDF (FUNC2 (chisq)); + testPDF (FUNC2 (chisqnu2)); + testPDF (FUNC2 (dirichlet)); + testPDF (FUNC2 (dirichlet_small)); + testPDF (FUNC2 (erlang)); + testPDF (FUNC2 (exponential)); + + testPDF (FUNC2 (exppow0)); + testPDF (FUNC2 (exppow1)); + testPDF (FUNC2 (exppow1a)); + testPDF (FUNC2 (exppow2)); + testPDF (FUNC2 (exppow2a)); + testPDF (FUNC2 (exppow2b)); + + testPDF (FUNC2 (fdist)); + testPDF (FUNC2 (fdist_large)); + testPDF (FUNC2 (flat)); + testPDF (FUNC2 (gamma)); + testPDF (FUNC2 (gamma1)); + testPDF (FUNC2 (gamma_int)); + testPDF (FUNC2 (gamma_large)); + testPDF (FUNC2 (gamma_vlarge)); + testPDF (FUNC2 (gamma_knuth_vlarge)); + testPDF (FUNC2 (gamma_small)); + testPDF (FUNC2 (gamma_mt)); + testPDF (FUNC2 (gamma_mt1)); + testPDF (FUNC2 (gamma_mt_int)); + testPDF (FUNC2 (gamma_mt_large)); + testPDF (FUNC2 (gamma_mt_small)); + testPDF (FUNC2 (gaussian)); + testPDF (FUNC2 (gaussian_ratio_method)); + testPDF (FUNC2 (gaussian_ziggurat)); + testPDF (FUNC2 (ugaussian)); + testPDF (FUNC2 (ugaussian_ratio_method)); + testPDF (FUNC2 (gaussian_tail)); + testPDF (FUNC2 (gaussian_tail1)); + testPDF (FUNC2 (gaussian_tail2)); + testPDF (FUNC2 (ugaussian_tail)); + + testPDF (FUNC2 (bivariate_gaussian1)); + testPDF (FUNC2 (bivariate_gaussian2)); + testPDF (FUNC2 (bivariate_gaussian3)); + testPDF (FUNC2 (bivariate_gaussian4)); + + test_multivariate_gaussian_log_pdf (); + test_multivariate_gaussian_pdf (); + test_multivariate_gaussian (); + + test_wishart_log_pdf (); + test_wishart_pdf (); + test_wishart (); + + testPDF (FUNC2 (gumbel1)); + testPDF (FUNC2 (gumbel2)); + testPDF (FUNC2 (landau)); + testPDF (FUNC2 (levy1)); + testPDF (FUNC2 (levy2)); + testPDF (FUNC2 (levy1a)); + testPDF (FUNC2 (levy2a)); + testPDF (FUNC2 (levy_skew1)); + testPDF (FUNC2 (levy_skew2)); + testPDF (FUNC2 (levy_skew1a)); + testPDF (FUNC2 (levy_skew2a)); + testPDF (FUNC2 (levy_skew1b)); + testPDF (FUNC2 (levy_skew2b)); + testPDF (FUNC2 (logistic)); + testPDF (FUNC2 (lognormal)); + testPDF (FUNC2 (pareto)); + testPDF (FUNC2 (rayleigh)); + testPDF (FUNC2 (rayleigh_tail)); + testPDF (FUNC2 (tdist1)); + testPDF (FUNC2 (tdist2)); + testPDF (FUNC2 (laplace)); + testPDF (FUNC2 (weibull)); + testPDF (FUNC2 (weibull1)); + + testPDF (FUNC2 (dir2d)); + testPDF (FUNC2 (dir2d_trig_method)); + testPDF (FUNC2 (dir3dxy)); + testPDF (FUNC2 (dir3dyz)); + testPDF (FUNC2 (dir3dzx)); + + testDiscretePDF (FUNC2 (discrete1)); + testDiscretePDF (FUNC2 (discrete2)); + testDiscretePDF (FUNC2 (discrete3)); + testDiscretePDF (FUNC2 (poisson)); + testDiscretePDF (FUNC2 (poisson_large)); + testDiscretePDF (FUNC2 (bernoulli)); + testDiscretePDF (FUNC2 (binomial)); + testDiscretePDF (FUNC2 (binomial0)); + testDiscretePDF (FUNC2 (binomial1)); + testDiscretePDF (FUNC2 (binomial_knuth)); + testDiscretePDF (FUNC2 (binomial_large)); + testDiscretePDF (FUNC2 (binomial_large_knuth)); + testDiscretePDF (FUNC2 (binomial_huge)); + testDiscretePDF (FUNC2 (binomial_huge_knuth)); + testDiscretePDF (FUNC2 (binomial_max)); + testDiscretePDF (FUNC2 (geometric)); + testDiscretePDF (FUNC2 (geometric1)); + testDiscretePDF (FUNC2 (hypergeometric1)); + testDiscretePDF (FUNC2 (hypergeometric2)); + testDiscretePDF (FUNC2 (hypergeometric3)); + testDiscretePDF (FUNC2 (hypergeometric4)); + testDiscretePDF (FUNC2 (hypergeometric5)); + testDiscretePDF (FUNC2 (hypergeometric6)); + testDiscretePDF (FUNC2 (logarithmic)); + testDiscretePDF (FUNC2 (multinomial)); + testDiscretePDF (FUNC2 (multinomial_large)); + testDiscretePDF (FUNC2 (negative_binomial)); + testDiscretePDF (FUNC2 (pascal)); + + gsl_rng_free (r_global); + gsl_ran_discrete_free (g1); + gsl_ran_discrete_free (g2); + gsl_ran_discrete_free (g3); + + exit (gsl_test_summary ()); +} + +void +test_shuffle (void) +{ + double count[10][10]; + int x[10] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; + int i, j, status = 0; + + for (i = 0; i < 10; i++) + { + for (j = 0; j < 10; j++) + { + count[i][j] = 0; + } + } + + for (i = 0; i < N; i++) + { + for (j = 0; j < 10; j++) + x[j] = j; + + gsl_ran_shuffle (r_global, x, 10, sizeof (int)); + + for (j = 0; j < 10; j++) + count[x[j]][j]++; + } + + for (i = 0; i < 10; i++) + { + for (j = 0; j < 10; j++) + { + double expected = N / 10.0; + double d = fabs (count[i][j] - expected); + double sigma = d / sqrt (expected); + if (sigma > 5 && d > 1) + { + status = 1; + gsl_test (status, + "gsl_ran_shuffle %d,%d (%g observed vs %g expected)", + i, j, count[i][j] / N, 0.1); + } + } + } + + gsl_test (status, "gsl_ran_shuffle on {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}"); + +} + +void +test_choose (void) +{ + double count[10]; + int x[10] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; + int y[3] = { 0, 1, 2 }; + int i, j, status = 0; + + for (i = 0; i < 10; i++) + { + count[i] = 0; + } + + for (i = 0; i < N; i++) + { + for (j = 0; j < 10; j++) + x[j] = j; + + gsl_ran_choose (r_global, y, 3, x, 10, sizeof (int)); + + for (j = 0; j < 3; j++) + count[y[j]]++; + } + + for (i = 0; i < 10; i++) + { + double expected = 3.0 * N / 10.0; + double d = fabs (count[i] - expected); + double sigma = d / sqrt (expected); + if (sigma > 5 && d > 1) + { + status = 1; + gsl_test (status, + "gsl_ran_choose %d (%g observed vs %g expected)", + i, count[i] / N, 0.1); + } + } + + gsl_test (status, "gsl_ran_choose (3) on {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}"); + +} + + + + +void +testMoments (double (*f) (void), const char *name, + double a, double b, double p) +{ + int i; + double count = 0, expected, sigma; + int status; + + for (i = 0; i < N; i++) + { + double r = f (); + if (r < b && r > a) + count++; + } + + expected = p * N; + sigma = (expected > 0) ? fabs (count - expected) / sqrt (expected) : fabs(count - expected); + + status = (sigma > 3); + + gsl_test (status, "%s [%g,%g] (%g observed vs %g expected)", + name, a, b, count / N, p); +} + +#define BINS 100 + +typedef double pdf_func(double); + +/* Keep track of invalid values during integration */ +static int pdf_errors = 0; +static double pdf_errval = 0.0; + +double +wrapper_function (double x, void *params) +{ + pdf_func * pdf = (pdf_func *)params; + double P = pdf(x); + if (!gsl_finite(P)) { + pdf_errors++; + pdf_errval = P; + P = 0; /* skip invalid value now, but return pdf_errval at the end */ + } + return P; +} + +double +integrate (pdf_func * pdf, double a, double b) +{ + double result, abserr; + size_t n = 1000; + gsl_function f; + gsl_integration_workspace * w = gsl_integration_workspace_alloc (n); + f.function = &wrapper_function; + f.params = (void *)pdf; + pdf_errors = 0; + gsl_integration_qags (&f, a, b, 1e-16, 1e-4, n, w, &result, &abserr); + gsl_integration_workspace_free (w); + if (pdf_errors) return pdf_errval; + return result; +} + + +void +testPDF (double (*f) (void), double (*pdf) (double), const char *name) +{ + double count[BINS], edge[BINS], p[BINS]; + double a = -5.0, b = +5.0; + double dx = (b - a) / BINS; + double bin; + double total = 0, mean; + int i, j, status = 0, status_i = 0, attempts = 0; + long int n0 = 0, n = N; + + for (i = 0; i < BINS; i++) + { + /* Compute the integral of p(x) from x to x+dx */ + + double x = a + i * dx; + + if (fabs (x) < 1e-10) /* hit the origin exactly */ + x = 0.0; + + p[i] = integrate (pdf, x, x+dx); + } + + + for (i = 0; i < BINS; i++) + { + count[i] = 0; + edge[i] = 0; + } + + trial: + attempts++; + + for (i = n0; i < n; i++) + { + double r = f (); + total += r; + + if (r < b && r > a) + { + double u = (r - a) / dx; + double f = modf(u, &bin); + j = (int)bin; + + if (f == 0) + edge[j]++; + else + count[j]++; + } + } + + /* Sort out where the hits on the edges should go */ + + for (i = 0; i < BINS; i++) + { + /* If the bin above is empty, its lower edge hits belong in the + lower bin */ + + if (i + 1 < BINS && count[i+1] == 0) { + count[i] += edge[i+1]; + edge[i+1] = 0; + } + + count[i] += edge[i]; + edge[i] = 0; + } + + mean = (total / n); + + status = !gsl_finite(mean); + if (status) { + gsl_test (status, "%s, finite mean, observed %g", name, mean); + return; + } + + for (i = 0; i < BINS; i++) + { + double x = a + i * dx; + double d = fabs (count[i] - n * p[i]); + if (!gsl_finite(p[i])) + { + status_i = 1; + } + else if (p[i] != 0) + { + double s = d / sqrt (n * p[i]); + status_i = (s > 5) && (d > 2); + } + else + { + status_i = (count[i] != 0); + } + + /* Extend the sample if there is an outlier on the first attempt + to avoid spurious failures when running large numbers of tests. */ + if (status_i && attempts < 50) + { + n0 = n; + n = 2.0*n; + goto trial; + } + + status |= status_i; + if (status_i) + gsl_test (status_i, "%s [%g,%g) (%g/%d=%g observed vs %g expected)", + name, x, x + dx, count[i], n, count[i] / n, p[i]); + } + + if (status == 0) + gsl_test (status, "%s, sampling against pdf over range [%g,%g) ", + name, a, b); +} + +void +testDiscretePDF (double (*f) (void), double (*pdf) (unsigned int), + const char *name) +{ + double count[BINS], p[BINS]; + unsigned int i; + int status = 0, status_i = 0; + + for (i = 0; i < BINS; i++) + count[i] = 0; + + for (i = 0; i < N; i++) + { + int r = (int) (f ()); + if (r >= 0 && r < BINS) + count[r]++; + } + + for (i = 0; i < BINS; i++) + p[i] = pdf (i); + + for (i = 0; i < BINS; i++) + { + double d = fabs (count[i] - N * p[i]); + if (p[i] != 0) + { + double s = d / sqrt (N * p[i]); + status_i = (s > 5) && (d > 1); + } + else + { + status_i = (count[i] != 0); + } + status |= status_i; + if (status_i) + gsl_test (status_i, "%s i=%d (%g observed vs %g expected)", + name, i, count[i] / N, p[i]); + } + + if (status == 0) + gsl_test (status, "%s, sampling against pdf over range [%d,%d) ", + name, 0, BINS); +} + + + +double +test_beta (void) +{ + return gsl_ran_beta (r_global, 2.0, 3.0); +} + +double +test_beta_pdf (double x) +{ + return gsl_ran_beta_pdf (x, 2.0, 3.0); +} + +double +test_bernoulli (void) +{ + return gsl_ran_bernoulli (r_global, 0.3); +} + +double +test_bernoulli_pdf (unsigned int n) +{ + return gsl_ran_bernoulli_pdf (n, 0.3); +} + +double +test_binomial (void) +{ + return gsl_ran_binomial (r_global, 0.3, 5); +} + +double +test_binomial_pdf (unsigned int n) +{ + return gsl_ran_binomial_pdf (n, 0.3, 5); +} + +double +test_binomial0 (void) +{ + return gsl_ran_binomial (r_global, 0, 8); +} + +double +test_binomial0_pdf (unsigned int n) +{ + return gsl_ran_binomial_pdf (n, 0, 8); +} + +double +test_binomial1 (void) +{ + return gsl_ran_binomial (r_global, 1, 8); +} + +double +test_binomial1_pdf (unsigned int n) +{ + return gsl_ran_binomial_pdf (n, 1, 8); +} + +double +test_binomial_knuth (void) +{ + return gsl_ran_binomial_knuth (r_global, 0.3, 5); +} + +double +test_binomial_knuth_pdf (unsigned int n) +{ + return gsl_ran_binomial_pdf (n, 0.3, 5); +} + + +double +test_binomial_large (void) +{ + return gsl_ran_binomial (r_global, 0.3, 55); +} + +double +test_binomial_large_pdf (unsigned int n) +{ + return gsl_ran_binomial_pdf (n, 0.3, 55); +} + +double +test_binomial_large_knuth (void) +{ + return gsl_ran_binomial_knuth (r_global, 0.3, 55); +} + +double +test_binomial_large_knuth_pdf (unsigned int n) +{ + return gsl_ran_binomial_pdf (n, 0.3, 55); +} + + +double +test_binomial_huge (void) +{ + return gsl_ran_binomial (r_global, 0.3, 5500); +} + +double +test_binomial_huge_pdf (unsigned int n) +{ + return gsl_ran_binomial_pdf (n, 0.3, 5500); +} + +double +test_binomial_huge_knuth (void) +{ + return gsl_ran_binomial_knuth (r_global, 0.3, 5500); +} + +double +test_binomial_huge_knuth_pdf (unsigned int n) +{ + return gsl_ran_binomial_pdf (n, 0.3, 5500); +} + +double +test_binomial_max (void) +{ + return gsl_ran_binomial (r_global, 1e-8, 1<<31); +} + +double +test_binomial_max_pdf (unsigned int n) +{ + return gsl_ran_binomial_pdf (n, 1e-8, 1<<31); +} + +double +test_cauchy (void) +{ + return gsl_ran_cauchy (r_global, 2.0); +} + +double +test_cauchy_pdf (double x) +{ + return gsl_ran_cauchy_pdf (x, 2.0); +} + +double +test_chisq (void) +{ + return gsl_ran_chisq (r_global, 13.0); +} + +double +test_chisq_pdf (double x) +{ + return gsl_ran_chisq_pdf (x, 13.0); +} + +double +test_chisqnu2 (void) +{ + return gsl_ran_chisq (r_global, 2.0); +} + +double +test_chisqnu2_pdf (double x) +{ + return gsl_ran_chisq_pdf (x, 2.0); +} + + +double +test_dir2d (void) +{ + double x = 0, y = 0, theta; + gsl_ran_dir_2d (r_global, &x, &y); + theta = atan2 (x, y); + return theta; +} + +double +test_dir2d_pdf (double x) +{ + if (x > -M_PI && x <= M_PI) + { + return 1 / (2 * M_PI); + } + else + { + return 0; + } +} + +double +test_dir2d_trig_method (void) +{ + double x = 0, y = 0, theta; + gsl_ran_dir_2d_trig_method (r_global, &x, &y); + theta = atan2 (x, y); + return theta; +} + +double +test_dir2d_trig_method_pdf (double x) +{ + if (x > -M_PI && x <= M_PI) + { + return 1 / (2 * M_PI); + } + else + { + return 0; + } +} + +double +test_dir3dxy (void) +{ + double x = 0, y = 0, z = 0, theta; + gsl_ran_dir_3d (r_global, &x, &y, &z); + theta = atan2 (x, y); + return theta; +} + +double +test_dir3dxy_pdf (double x) +{ + if (x > -M_PI && x <= M_PI) + { + return 1 / (2 * M_PI); + } + else + { + return 0; + } +} + +double +test_dir3dyz (void) +{ + double x = 0, y = 0, z = 0, theta; + gsl_ran_dir_3d (r_global, &x, &y, &z); + theta = atan2 (y, z); + return theta; +} + +double +test_dir3dyz_pdf (double x) +{ + if (x > -M_PI && x <= M_PI) + { + return 1 / (2 * M_PI); + } + else + { + return 0; + } +} + +double +test_dir3dzx (void) +{ + double x = 0, y = 0, z = 0, theta; + gsl_ran_dir_3d (r_global, &x, &y, &z); + theta = atan2 (z, x); + return theta; +} + +double +test_dir3dzx_pdf (double x) +{ + if (x > -M_PI && x <= M_PI) + { + return 1 / (2 * M_PI); + } + else + { + return 0; + } +} + +double +test_dirichlet (void) +{ + /* This is a bit of a lame test, since when K=2, the Dirichlet distribution + becomes a beta distribution */ + size_t K = 2; + double alpha[2] = { 2.5, 5.0 }; + double theta[2] = { 0.0, 0.0 }; + + gsl_ran_dirichlet (r_global, K, alpha, theta); + + return theta[0]; +} + +double +test_dirichlet_pdf (double x) +{ + size_t K = 2; + double alpha[2] = { 2.5, 5.0 }; + double theta[2]; + + if (x <= 0.0 || x >= 1.0) + return 0.0; /* Out of range */ + + theta[0] = x; + theta[1] = 1.0 - x; + + return gsl_ran_dirichlet_pdf (K, alpha, theta); +} + + +double +test_dirichlet_small (void) +{ + size_t K = 2; + double alpha[2] = { 2.5e-3, 5.0e-3}; + double theta[2] = { 0.0, 0.0 }; + + gsl_ran_dirichlet (r_global, K, alpha, theta); + + return theta[0]; +} + +double +test_dirichlet_small_pdf (double x) +{ + size_t K = 2; + double alpha[2] = { 2.5e-3, 5.0e-3 }; + double theta[2]; + + if (x <= 0.0 || x >= 1.0) + return 0.0; /* Out of range */ + + theta[0] = x; + theta[1] = 1.0 - x; + + return gsl_ran_dirichlet_pdf (K, alpha, theta); +} + + +/* Check that the observed means of the Dirichlet variables are + within reasonable statistical errors of their correct values. */ + +#define DIRICHLET_K 10 + +void +test_dirichlet_moments (void) +{ + double alpha[DIRICHLET_K]; + double theta[DIRICHLET_K]; + double theta_sum[DIRICHLET_K]; + + double alpha_sum = 0.0; + double mean, obs_mean, sd, sigma; + int status, k, n; + + for (k = 0; k < DIRICHLET_K; k++) + { + alpha[k] = gsl_ran_exponential (r_global, 0.1); + alpha_sum += alpha[k]; + theta_sum[k] = 0.0; + } + + for (n = 0; n < N; n++) + { + gsl_ran_dirichlet (r_global, DIRICHLET_K, alpha, theta); + for (k = 0; k < DIRICHLET_K; k++) + theta_sum[k] += theta[k]; + } + + for (k = 0; k < DIRICHLET_K; k++) + { + mean = alpha[k] / alpha_sum; + sd = + sqrt ((alpha[k] * (1. - alpha[k] / alpha_sum)) / + (alpha_sum * (alpha_sum + 1.))); + obs_mean = theta_sum[k] / N; + sigma = sqrt ((double) N) * fabs (mean - obs_mean) / sd; + + status = (sigma > 3.0); + + gsl_test (status, + "test gsl_ran_dirichlet: mean (%g observed vs %g expected)", + obs_mean, mean); + } +} + + +/* Check that the observed means of the multinomial variables are + within reasonable statistical errors of their correct values. */ + +void +test_multinomial_moments (void) +{ + const unsigned int sum_n = 100; + + const double p[MULTI_DIM] ={ 0.2, 0.20, 0.17, 0.14, 0.12, + 0.07, 0.05, 0.02, 0.02, 0.01 }; + + unsigned int x[MULTI_DIM]; + double x_sum[MULTI_DIM]; + + double mean, obs_mean, sd, sigma; + int status, k, n; + + for (k = 0; k < MULTI_DIM; k++) + x_sum[k] =0.0; + + for (n = 0; n < N; n++) + { + gsl_ran_multinomial (r_global, MULTI_DIM, sum_n, p, x); + for (k = 0; k < MULTI_DIM; k++) + x_sum[k] += x[k]; + } + + for (k = 0; k < MULTI_DIM; k++) + { + mean = p[k] * sum_n; + sd = p[k] * (1.-p[k]) * sum_n; + + obs_mean = x_sum[k] / N; + sigma = sqrt ((double) N) * fabs (mean - obs_mean) / sd; + + status = (sigma > 3.0); + + gsl_test (status, + "test gsl_ran_multinomial: mean (%g observed vs %g expected)", + obs_mean, mean); + } +} + + +double +test_discrete1 (void) +{ + static double P[3] = { 0.59, 0.4, 0.01 }; + if (g1 == NULL) + { + g1 = gsl_ran_discrete_preproc (3, P); + } + return gsl_ran_discrete (r_global, g1); +} + +double +test_discrete1_pdf (unsigned int n) +{ + return gsl_ran_discrete_pdf ((size_t) n, g1); +} + +double +test_discrete2 (void) +{ + static double P[10] = { 1, 9, 3, 4, 5, 8, 6, 7, 2, 0 }; + if (g2 == NULL) + { + g2 = gsl_ran_discrete_preproc (10, P); + } + return gsl_ran_discrete (r_global, g2); +} + +double +test_discrete2_pdf (unsigned int n) +{ + return gsl_ran_discrete_pdf ((size_t) n, g2); +} +double +test_discrete3 (void) +{ + static double P[20]; + if (g3 == NULL) + { int i; + for (i=0; i<20; ++i) P[i]=1.0/20; + g3 = gsl_ran_discrete_preproc (20, P); + } + return gsl_ran_discrete (r_global, g3); +} + +double +test_discrete3_pdf (unsigned int n) +{ + return gsl_ran_discrete_pdf ((size_t) n, g3); +} + + +double +test_erlang (void) +{ + return gsl_ran_erlang (r_global, 3.0, 4.0); +} + +double +test_erlang_pdf (double x) +{ + return gsl_ran_erlang_pdf (x, 3.0, 4.0); +} + +double +test_exponential (void) +{ + return gsl_ran_exponential (r_global, 2.0); +} + +double +test_exponential_pdf (double x) +{ + return gsl_ran_exponential_pdf (x, 2.0); +} + +double +test_exppow0 (void) +{ + return gsl_ran_exppow (r_global, 3.7, 0.3); +} + +double +test_exppow0_pdf (double x) +{ + return gsl_ran_exppow_pdf (x, 3.7, 0.3); +} + +double +test_exppow1 (void) +{ + return gsl_ran_exppow (r_global, 3.7, 1.0); +} + +double +test_exppow1_pdf (double x) +{ + return gsl_ran_exppow_pdf (x, 3.7, 1.0); +} + +double +test_exppow1a (void) +{ + return gsl_ran_exppow (r_global, 3.7, 1.9); +} + +double +test_exppow1a_pdf (double x) +{ + return gsl_ran_exppow_pdf (x, 3.7, 1.9); +} + +double +test_exppow2 (void) +{ + return gsl_ran_exppow (r_global, 3.7, 2.0); +} + +double +test_exppow2_pdf (double x) +{ + return gsl_ran_exppow_pdf (x, 3.7, 2.0); +} + + +double +test_exppow2a (void) +{ + return gsl_ran_exppow (r_global, 3.7, 3.5); +} + +double +test_exppow2a_pdf (double x) +{ + return gsl_ran_exppow_pdf (x, 3.7, 3.5); +} + +double +test_exppow2b (void) +{ + return gsl_ran_exppow (r_global, 3.7, 7.5); +} + +double +test_exppow2b_pdf (double x) +{ + return gsl_ran_exppow_pdf (x, 3.7, 7.5); +} + +double +test_fdist (void) +{ + return gsl_ran_fdist (r_global, 3.0, 4.0); +} + +double +test_fdist_pdf (double x) +{ + return gsl_ran_fdist_pdf (x, 3.0, 4.0); +} + +/* Test case for bug #28500: overflow in gsl_ran_fdist_pdf */ + +double +test_fdist_large (void) +{ + return gsl_ran_fdist (r_global, 8.0, 249.0); +} + +double +test_fdist_large_pdf (double x) +{ + return gsl_ran_fdist_pdf (x, 8.0, 249.0); +} + +double +test_flat (void) +{ + return gsl_ran_flat (r_global, 3.0, 4.0); +} + +double +test_flat_pdf (double x) +{ + return gsl_ran_flat_pdf (x, 3.0, 4.0); +} + +double +test_gamma (void) +{ + return gsl_ran_gamma (r_global, 2.5, 2.17); +} + +double +test_gamma_pdf (double x) +{ + return gsl_ran_gamma_pdf (x, 2.5, 2.17); +} + +double +test_gamma1 (void) +{ + return gsl_ran_gamma (r_global, 1.0, 2.17); +} + +double +test_gamma1_pdf (double x) +{ + return gsl_ran_gamma_pdf (x, 1.0, 2.17); +} + + +double +test_gamma_int (void) +{ + return gsl_ran_gamma (r_global, 10.0, 2.17); +} + +double +test_gamma_int_pdf (double x) +{ + return gsl_ran_gamma_pdf (x, 10.0, 2.17); +} + + +double +test_gamma_large (void) +{ + return gsl_ran_gamma (r_global, 20.0, 2.17); +} + +double +test_gamma_large_pdf (double x) +{ + return gsl_ran_gamma_pdf (x, 20.0, 2.17); +} + +double +test_gamma_small (void) +{ + return gsl_ran_gamma (r_global, 0.92, 2.17); +} + +double +test_gamma_small_pdf (double x) +{ + return gsl_ran_gamma_pdf (x, 0.92, 2.17); +} + +double +test_gamma_vlarge (void) +{ + /* Scale the distribution to get it into the range [-5,5] */ + double c = 2.71828181565; + double b = 6.32899304917e-10; + double d = 1e4; + return (gsl_ran_gamma (r_global, 4294967296.0, b) - c) * d; +} + +double +test_gamma_vlarge_pdf (double x) +{ + double c = 2.71828181565; + double b = 6.32899304917e-10; + double d = 1e4; + return gsl_ran_gamma_pdf ((x / d) + c, 4294967296.0, b) / d; +} + +double +test_gamma_mt (void) +{ + return gsl_ran_gamma_mt (r_global, 2.5, 2.17); +} + +double +test_gamma_mt_pdf (double x) +{ + return gsl_ran_gamma_pdf (x, 2.5, 2.17); +} + +double +test_gamma_mt1 (void) +{ + return gsl_ran_gamma_mt (r_global, 1.0, 2.17); +} + +double +test_gamma_mt1_pdf (double x) +{ + return gsl_ran_gamma_pdf (x, 1.0, 2.17); +} + + +double +test_gamma_mt_int (void) +{ + return gsl_ran_gamma_mt (r_global, 10.0, 2.17); +} + +double +test_gamma_mt_int_pdf (double x) +{ + return gsl_ran_gamma_pdf (x, 10.0, 2.17); +} + + +double +test_gamma_mt_large (void) +{ + return gsl_ran_gamma_mt (r_global, 20.0, 2.17); +} + +double +test_gamma_mt_large_pdf (double x) +{ + return gsl_ran_gamma_pdf (x, 20.0, 2.17); +} + + +double +test_gamma_mt_small (void) +{ + return gsl_ran_gamma_mt (r_global, 0.92, 2.17); +} + +double +test_gamma_mt_small_pdf (double x) +{ + return gsl_ran_gamma_pdf (x, 0.92, 2.17); +} + + +double +test_gamma_knuth_vlarge (void) +{ + /* Scale the distribution to get it into the range [-5,5] */ + double c = 2.71828181565; + double b = 6.32899304917e-10; + double d = 1e4; + return (gsl_ran_gamma_knuth (r_global, 4294967296.0, b) - c) * d; +} + +double +test_gamma_knuth_vlarge_pdf (double x) +{ + double c = 2.71828181565; + double b = 6.32899304917e-10; + double d = 1e4; + return gsl_ran_gamma_pdf ((x / d) + c, 4294967296.0, b) / d; +} + +double +test_gaussian (void) +{ + return gsl_ran_gaussian (r_global, 3.0); +} + +double +test_gaussian_pdf (double x) +{ + return gsl_ran_gaussian_pdf (x, 3.0); +} + +double +test_gaussian_ratio_method (void) +{ + return gsl_ran_gaussian_ratio_method (r_global, 3.0); +} + +double +test_gaussian_ratio_method_pdf (double x) +{ + return gsl_ran_gaussian_pdf (x, 3.0); +} + +double +test_gaussian_ziggurat (void) +{ + return gsl_ran_gaussian_ziggurat (r_global, 3.12); +} + +double +test_gaussian_ziggurat_pdf (double x) +{ + return gsl_ran_gaussian_pdf (x, 3.12); +} + +double +test_gaussian_tail (void) +{ + return gsl_ran_gaussian_tail (r_global, 1.7, 0.25); +} + +double +test_gaussian_tail_pdf (double x) +{ + return gsl_ran_gaussian_tail_pdf (x, 1.7, 0.25); +} + +double +test_gaussian_tail1 (void) +{ + return gsl_ran_gaussian_tail (r_global, -1.7, 5.0); +} + +double +test_gaussian_tail1_pdf (double x) +{ + return gsl_ran_gaussian_tail_pdf (x, -1.7, 5.0); +} + +double +test_gaussian_tail2 (void) +{ + return gsl_ran_gaussian_tail (r_global, 0.1, 2.0); +} + +double +test_gaussian_tail2_pdf (double x) +{ + return gsl_ran_gaussian_tail_pdf (x, 0.1, 2.0); +} + + +double +test_ugaussian (void) +{ + return gsl_ran_ugaussian (r_global); +} + +double +test_ugaussian_pdf (double x) +{ + return gsl_ran_ugaussian_pdf (x); +} + +double +test_ugaussian_ratio_method (void) +{ + return gsl_ran_ugaussian_ratio_method (r_global); +} + +double +test_ugaussian_ratio_method_pdf (double x) +{ + return gsl_ran_ugaussian_pdf (x); +} + +double +test_ugaussian_tail (void) +{ + return gsl_ran_ugaussian_tail (r_global, 3.0); +} + +double +test_ugaussian_tail_pdf (double x) +{ + return gsl_ran_ugaussian_tail_pdf (x, 3.0); +} + +double +test_bivariate_gaussian1 (void) +{ + double x = 0, y = 0; + gsl_ran_bivariate_gaussian (r_global, 3.0, 2.0, 0.3, &x, &y); + return x; +} + +double +test_bivariate_gaussian1_pdf (double x) +{ + return gsl_ran_gaussian_pdf (x, 3.0); +} + +double +test_bivariate_gaussian2 (void) +{ + double x = 0, y = 0; + gsl_ran_bivariate_gaussian (r_global, 3.0, 2.0, 0.3, &x, &y); + return y; +} + +double +test_bivariate_gaussian2_pdf (double y) +{ + int i, n = 10; + double sum = 0; + double a = -10, b = 10, dx = (b - a) / n; + for (i = 0; i < n; i++) + { + double x = a + i * dx; + sum += gsl_ran_bivariate_gaussian_pdf (x, y, 3.0, 2.0, 0.3) * dx; + } + return sum; +} + + +double +test_bivariate_gaussian3 (void) +{ + double x = 0, y = 0; + gsl_ran_bivariate_gaussian (r_global, 3.0, 2.0, 0.3, &x, &y); + return x + y; +} + +double +test_bivariate_gaussian3_pdf (double x) +{ + double sx = 3.0, sy = 2.0, r = 0.3; + double su = (sx + r * sy); + double sv = sy * sqrt (1 - r * r); + double sigma = sqrt (su * su + sv * sv); + + return gsl_ran_gaussian_pdf (x, sigma); +} + +double +test_bivariate_gaussian4 (void) +{ + double x = 0, y = 0; + gsl_ran_bivariate_gaussian (r_global, 3.0, 2.0, -0.5, &x, &y); + return x + y; +} + +double +test_bivariate_gaussian4_pdf (double x) +{ + double sx = 3.0, sy = 2.0, r = -0.5; + double su = (sx + r * sy); + double sv = sy * sqrt (1 - r * r); + double sigma = sqrt (su * su + sv * sv); + + return gsl_ran_gaussian_pdf (x, sigma); +} + +/* Examples from R (GPL): http://www.r-project.org/ + * library(mvtnorm); packageVersion("mvtnorm") # 1.0.5 + * mu <- c(1, 2) + * Sigma <- matrix(c(4,2, 2,3), ncol=2) + * x <- c(0, 0) + * sprintf("%.15f", dmvnorm(x=x, mean=mu, sigma=Sigma, log=TRUE)) # -3.565097837249263 + */ +void +test_multivariate_gaussian_log_pdf (void) +{ + size_t d = 2; + const double exp_res = -3.565097837249263; + double obs_res; + gsl_vector * mu = gsl_vector_calloc(d); + gsl_matrix * Sigma = gsl_matrix_calloc(d, d); + gsl_matrix * L = gsl_matrix_calloc(d, d); + gsl_vector * x = gsl_vector_calloc(d); + gsl_vector * work = gsl_vector_calloc(d); + + gsl_vector_set(mu, 0, 1); + gsl_vector_set(mu, 1, 2); + + gsl_matrix_set(Sigma, 0, 0, 4); + gsl_matrix_set(Sigma, 1, 1, 3); + gsl_matrix_set(Sigma, 0, 1, 2); + gsl_matrix_set(Sigma, 1, 0, 2); + + gsl_matrix_memcpy(L, Sigma); + gsl_linalg_cholesky_decomp1(L); + + gsl_ran_multivariate_gaussian_log_pdf(x, mu, L, &obs_res, work); + gsl_test_rel(obs_res, exp_res, 1.0e-10, "gsl_ran_multivariate_gaussian_log_pdf"); + + gsl_vector_free(mu); + gsl_matrix_free(Sigma); + gsl_matrix_free(L); + gsl_vector_free(x); + gsl_vector_free(work); +} + +/* Examples from R (GPL): http://www.r-project.org/ + * library(mvtnorm); packageVersion("mvtnorm") # 1.0.5 + * mu <- c(1, 2) + * Sigma <- matrix(c(4,2, 2,3), ncol=2) + * x <- c(0, 0) + * sprintf("%.15f", dmvnorm(x=x, mean=mu, sigma=Sigma, log=FALSE)) # 0.028294217120391 + */ +void +test_multivariate_gaussian_pdf (void) +{ + size_t d = 2; + const double exp_res = 0.028294217120391; + double obs_res = 0; + gsl_vector * mu = gsl_vector_calloc(d); + gsl_matrix * Sigma = gsl_matrix_calloc(d, d); + gsl_matrix * L = gsl_matrix_calloc(d, d); + gsl_vector * x = gsl_vector_calloc(d); + gsl_vector * work = gsl_vector_calloc(d); + + gsl_vector_set(mu, 0, 1); + gsl_vector_set(mu, 1, 2); + + gsl_matrix_set(Sigma, 0, 0, 4); + gsl_matrix_set(Sigma, 1, 1, 3); + gsl_matrix_set(Sigma, 0, 1, 2); + gsl_matrix_set(Sigma, 1, 0, 2); + + gsl_matrix_memcpy(L, Sigma); + gsl_linalg_cholesky_decomp1(L); + + gsl_ran_multivariate_gaussian_pdf(x, mu, L, &obs_res, work); + gsl_test_rel(obs_res, exp_res, 1.0e-10, "gsl_ran_multivariate_gaussian_pdf"); + + gsl_vector_free(mu); + gsl_matrix_free(Sigma); + gsl_matrix_free(L); + gsl_vector_free(x); + gsl_vector_free(work); +} + +/* Draw N random vectors according to a given MVN(mu,Sigma). Then, check that + * one can't reject the null hypothesis that the sample mean is equal to + * the true mean, using Hotelling's test statistic at 95% confidence level. + * Details in "Applied Multivariate Statistical Analysis" by Johnson & Wichern + * (2001), section 5, page 212. + */ +void +test_multivariate_gaussian (void) +{ + size_t d = 2, i = 0; + int status = 0; + double T2 = 0, threshold = 0, alpha = 0.05, pvalue = 0; + gsl_vector * mu = gsl_vector_calloc(d); + gsl_matrix * Sigma = gsl_matrix_calloc(d, d); + gsl_matrix * L = gsl_matrix_calloc(d, d); + gsl_vector * sample = gsl_vector_calloc(d); + gsl_matrix * samples = gsl_matrix_calloc(N, d); + gsl_vector * mu_hat = gsl_vector_calloc(d); + gsl_matrix * Sigma_hat = gsl_matrix_calloc(d, d); + gsl_vector * mu_hat_ctr = gsl_vector_calloc(d); + gsl_matrix * Sigma_hat_inv = gsl_matrix_calloc(d, d); + gsl_vector * tmp = gsl_vector_calloc(d); + + /* set the true values of parameters mu and Sigma */ + gsl_vector_set(mu, 0, 1); + gsl_vector_set(mu, 1, 2); + gsl_matrix_set(Sigma, 0, 0, 4); + gsl_matrix_set(Sigma, 1, 1, 3); + gsl_matrix_set(Sigma, 0, 1, 2); + gsl_matrix_set(Sigma, 1, 0, 2); + + /* draw N random vectors */ + gsl_matrix_memcpy(L, Sigma); + gsl_linalg_cholesky_decomp1(L); + for (i = 0; i < N; ++i) { + gsl_ran_multivariate_gaussian(r_global, mu, L, sample); + gsl_matrix_set_row(samples, i, sample); + } + + /* compute the maximum-likelihood estimates */ + gsl_ran_multivariate_gaussian_mean (samples, mu_hat); + gsl_ran_multivariate_gaussian_vcov (samples, Sigma_hat); + + /* compute Hotelling's test statistic: + T^2 = n (hat{mu} - mu)' hat{Sigma}^-1 (hat{mu} - mu) */ + gsl_vector_memcpy(mu_hat_ctr, mu_hat); + gsl_vector_sub(mu_hat_ctr, mu); + gsl_matrix_memcpy(Sigma_hat_inv, Sigma_hat); + gsl_linalg_cholesky_decomp1(Sigma_hat_inv); + gsl_linalg_cholesky_invert(Sigma_hat_inv); + gsl_blas_dgemv(CblasNoTrans, 1, Sigma_hat_inv, mu_hat_ctr, 0, tmp); + gsl_blas_ddot(mu_hat_ctr, tmp, &T2); + T2 *= N; + + /* test if the null hypothesis (hat{mu} = mu) can be rejected + at the alpha level*/ + threshold = (N-1) * d / (double)(N-d) * gsl_cdf_fdist_Pinv(1-alpha, d, N-d); + status = (T2 > threshold); + gsl_test(status, + "test gsl_ran_multivariate_gaussian: T2 %f < %f", + T2, threshold); + pvalue = gsl_cdf_fdist_Q(T2, d, N-d); + status = (pvalue < alpha); + gsl_test(status, + "test gsl_ran_multivariate_gaussian: p value %f > %f", + pvalue, alpha); + + gsl_vector_free(mu); + gsl_matrix_free(Sigma); + gsl_matrix_free(L); + gsl_vector_free(sample); + gsl_matrix_free(samples); + gsl_vector_free(mu_hat); + gsl_matrix_free(Sigma_hat); + gsl_vector_free(mu_hat_ctr); + gsl_matrix_free(Sigma_hat_inv); + gsl_vector_free(tmp); +} + + +/* Examples from R (GPL): http://www.r-project.org/ + * R> version$version.string # R version 3.4.1 (2017-06-30) + * R> library(MCMCpack); packageVersion("MCMCpack") # 1.3.9 + * R> df <- 3 + * R> V <- matrix(data=c(1, 0.3, 0.3, 1), nrow=2, ncol=2) + * R> X <- matrix(data=c(2.213322, 1.453357, 1.453357, 3.285779), nrow=2, ncol=2) + * R> sprintf("%.15f", log(dwish(W=X, v=df, S=V))) # -4.931913612377813 + */ +void +test_wishart_log_pdf (void) +{ + size_t d = 2; + const double df = 3, exp_res = -4.931913612377813; + double obs_res; + gsl_matrix * V = gsl_matrix_calloc(d, d); + gsl_matrix * L = gsl_matrix_calloc(d, d); + gsl_matrix * X = gsl_matrix_calloc(d, d); + gsl_matrix * L_X = gsl_matrix_calloc(d, d); + gsl_matrix * work = gsl_matrix_calloc(d, d); + + gsl_matrix_set(V, 0, 0, 1); + gsl_matrix_set(V, 1, 1, 1); + gsl_matrix_set(V, 0, 1, 0.3); + gsl_matrix_set(V, 1, 0, 0.3); + + gsl_matrix_memcpy(L, V); + gsl_linalg_cholesky_decomp1(L); + + gsl_matrix_set(X, 0, 0, 2.213322); + gsl_matrix_set(X, 1, 1, 3.285779); + gsl_matrix_set(X, 0, 1, 1.453357); + gsl_matrix_set(X, 1, 0, 1.453357); + + gsl_matrix_memcpy(L_X, X); + gsl_linalg_cholesky_decomp1(L_X); + + gsl_ran_wishart_log_pdf(X, L_X, df, L, &obs_res, work); + gsl_test_rel(obs_res, exp_res, 1.0e-10, "gsl_ran_wishart_log_pdf"); + + gsl_matrix_free(V); + gsl_matrix_free(L); + gsl_matrix_free(X); + gsl_matrix_free(L_X); + gsl_matrix_free(work); +} + + +/* Examples from R (GPL): http://www.r-project.org/ + * R> version$version.string # R version 3.4.1 (2017-06-30) + * R> library(MCMCpack); packageVersion("MCMCpack") # 1.3.9 + * R> df <- 3 + * R> V <- matrix(data=c(1, 0.3, 0.3, 1), nrow=2, ncol=2) + * R> X <- matrix(data=c(2.213322, 1.453357, 1.453357, 3.285779), nrow=2, ncol=2) + * R> sprintf("%.15f", dwish(W=X, v=df, S=V)) # 0.007212687778224 + */ +void +test_wishart_pdf (void) +{ + size_t d = 2; + const double df = 3, exp_res = 0.007212687778224; + double obs_res; + gsl_matrix * V = gsl_matrix_calloc(d, d); + gsl_matrix * L = gsl_matrix_calloc(d, d); + gsl_matrix * X = gsl_matrix_calloc(d, d); + gsl_matrix * L_X = gsl_matrix_calloc(d, d); + gsl_matrix * work = gsl_matrix_calloc(d, d); + + gsl_matrix_set(V, 0, 0, 1); + gsl_matrix_set(V, 1, 1, 1); + gsl_matrix_set(V, 0, 1, 0.3); + gsl_matrix_set(V, 1, 0, 0.3); + + gsl_matrix_memcpy(L, V); + gsl_linalg_cholesky_decomp1(L); + + gsl_matrix_set(X, 0, 0, 2.213322); + gsl_matrix_set(X, 1, 1, 3.285779); + gsl_matrix_set(X, 0, 1, 1.453357); + gsl_matrix_set(X, 1, 0, 1.453357); + + gsl_matrix_memcpy(L_X, X); + gsl_linalg_cholesky_decomp1(L_X); + + gsl_ran_wishart_pdf(X, L_X, df, L, &obs_res, work); + gsl_test_rel(obs_res, exp_res, 1.0e-10, "gsl_ran_wishart_pdf"); + + gsl_matrix_free(V); + gsl_matrix_free(L); + gsl_matrix_free(X); + gsl_matrix_free(L_X); + gsl_matrix_free(work); +} + + +/* Draw N random "matrices" according to a W_d(df,V) with d=1 and V=1, + * and check that their mean and variance are close enough to those of + * a Chi-squared(df), respectively df and 2df. + */ +void +test_wishart (void) +{ + size_t d = 1, i, j; + double df[5] = {1, 3, 5, 7, 9}, mean_wishart, var_wishart; + int status; + gsl_matrix * V = gsl_matrix_calloc(d, d); + gsl_matrix * L = gsl_matrix_calloc(d, d); + gsl_matrix * sample_wishart = gsl_matrix_calloc(d, d); + gsl_matrix * work = gsl_matrix_calloc(d, d); + gsl_vector * samples_wishart = gsl_vector_calloc(N); + + gsl_matrix_set(V, 0, 0, 1.0); + gsl_matrix_memcpy(L, V); + gsl_linalg_cholesky_decomp1(L); + + for (j = 0; j < 5; ++j) { /* for loop over df */ + + /* draw N random variables from W(df,V) */ + for (i = 0; i < N; ++i) { + status = gsl_ran_wishart(r_global, df[j], L, sample_wishart, work); + gsl_vector_set(samples_wishart, i, gsl_matrix_get(sample_wishart, 0, 0)); + } + + /* compute their mean and variance */ + mean_wishart = gsl_stats_mean(samples_wishart->data, + samples_wishart->stride, N); + var_wishart = gsl_stats_variance_m(samples_wishart->data, + samples_wishart->stride, + N, mean_wishart); + + /* check */ + gsl_test_rel(mean_wishart, df[j], 1.0e-1, "gsl_ran_wishart, mean"); + gsl_test_rel(var_wishart, 2*df[j], 1.0e-1, "gsl_ran_wishart, var"); + + } /* end of for loop over df */ + + gsl_matrix_free(V); + gsl_matrix_free(L); + gsl_matrix_free(sample_wishart); + gsl_matrix_free(work); + gsl_vector_free(samples_wishart); +} + + +double +test_geometric (void) +{ + return gsl_ran_geometric (r_global, 0.5); +} + +double +test_geometric_pdf (unsigned int n) +{ + return gsl_ran_geometric_pdf (n, 0.5); +} + +double +test_geometric1 (void) +{ + return gsl_ran_geometric (r_global, 1.0); +} + +double +test_geometric1_pdf (unsigned int n) +{ + return gsl_ran_geometric_pdf (n, 1.0); +} + +double +test_hypergeometric1 (void) +{ + return gsl_ran_hypergeometric (r_global, 5, 7, 4); +} + +double +test_hypergeometric1_pdf (unsigned int n) +{ + return gsl_ran_hypergeometric_pdf (n, 5, 7, 4); +} + + +double +test_hypergeometric2 (void) +{ + return gsl_ran_hypergeometric (r_global, 5, 7, 11); +} + +double +test_hypergeometric2_pdf (unsigned int n) +{ + return gsl_ran_hypergeometric_pdf (n, 5, 7, 11); +} + +double +test_hypergeometric3 (void) +{ + return gsl_ran_hypergeometric (r_global, 5, 7, 1); +} + +double +test_hypergeometric3_pdf (unsigned int n) +{ + return gsl_ran_hypergeometric_pdf (n, 5, 7, 1); +} + +double +test_hypergeometric4 (void) +{ + return gsl_ran_hypergeometric (r_global, 5, 7, 20); +} + +double +test_hypergeometric4_pdf (unsigned int n) +{ + return gsl_ran_hypergeometric_pdf (n, 5, 7, 20); +} + +double +test_hypergeometric5 (void) +{ + return gsl_ran_hypergeometric (r_global, 2, 7, 5); +} + +double +test_hypergeometric5_pdf (unsigned int n) +{ + return gsl_ran_hypergeometric_pdf (n, 2, 7, 5); +} + + +double +test_hypergeometric6 (void) +{ + return gsl_ran_hypergeometric (r_global, 2, 10, 3); +} + +double +test_hypergeometric6_pdf (unsigned int n) +{ + return gsl_ran_hypergeometric_pdf (n, 2, 10, 3); +} + + + + +double +test_gumbel1 (void) +{ + return gsl_ran_gumbel1 (r_global, 3.12, 4.56); +} + +double +test_gumbel1_pdf (double x) +{ + return gsl_ran_gumbel1_pdf (x, 3.12, 4.56); +} + +double +test_gumbel2 (void) +{ + return gsl_ran_gumbel2 (r_global, 3.12, 4.56); +} + +double +test_gumbel2_pdf (double x) +{ + return gsl_ran_gumbel2_pdf (x, 3.12, 4.56); +} + +double +test_landau (void) +{ + return gsl_ran_landau (r_global); +} + +double +test_landau_pdf (double x) +{ + return gsl_ran_landau_pdf (x); +} + +double +test_levy1 (void) +{ + return gsl_ran_levy (r_global, 5.0, 1.0); +} + +double +test_levy1_pdf (double x) +{ + return gsl_ran_cauchy_pdf (x, 5.0); +} + +double +test_levy2 (void) +{ + return gsl_ran_levy (r_global, 5.0, 2.0); +} + +double +test_levy2_pdf (double x) +{ + return gsl_ran_gaussian_pdf (x, sqrt (2.0) * 5.0); +} + +double +test_levy1a (void) +{ + return gsl_ran_levy (r_global, 5.0, 1.01); +} + +double +test_levy1a_pdf (double x) +{ + return gsl_ran_cauchy_pdf (x, 5.0); +} + +double +test_levy2a (void) +{ + return gsl_ran_levy (r_global, 5.0, 1.99); +} + +double +test_levy2a_pdf (double x) +{ + return gsl_ran_gaussian_pdf (x, sqrt (2.0) * 5.0); +} + + +double +test_levy_skew1 (void) +{ + return gsl_ran_levy_skew (r_global, 5.0, 1.0, 0.0); +} + +double +test_levy_skew1_pdf (double x) +{ + return gsl_ran_cauchy_pdf (x, 5.0); +} + +double +test_levy_skew2 (void) +{ + return gsl_ran_levy_skew (r_global, 5.0, 2.0, 0.0); +} + +double +test_levy_skew2_pdf (double x) +{ + return gsl_ran_gaussian_pdf (x, sqrt (2.0) * 5.0); +} + +double +test_levy_skew1a (void) +{ + return gsl_ran_levy_skew (r_global, 5.0, 1.01, 0.0); +} + +double +test_levy_skew1a_pdf (double x) +{ + return gsl_ran_cauchy_pdf (x, 5.0); +} + +double +test_levy_skew2a (void) +{ + return gsl_ran_levy_skew (r_global, 5.0, 1.99, 0.0); +} + +double +test_levy_skew2a_pdf (double x) +{ + return gsl_ran_gaussian_pdf (x, sqrt (2.0) * 5.0); +} + +double +test_levy_skew1b (void) +{ + return gsl_ran_levy_skew (r_global, 5.0, 1.01, 0.001); +} + +double +test_levy_skew1b_pdf (double x) +{ + return gsl_ran_cauchy_pdf (x, 5.0); +} + +double +test_levy_skew2b (void) +{ + return gsl_ran_levy_skew (r_global, 5.0, 1.99, 0.001); +} + +double +test_levy_skew2b_pdf (double x) +{ + return gsl_ran_gaussian_pdf (x, sqrt (2.0) * 5.0); +} + + +double +test_logistic (void) +{ + return gsl_ran_logistic (r_global, 3.1); +} + +double +test_logistic_pdf (double x) +{ + return gsl_ran_logistic_pdf (x, 3.1); +} + +double +test_logarithmic (void) +{ + return gsl_ran_logarithmic (r_global, 0.4); +} + +double +test_logarithmic_pdf (unsigned int n) +{ + return gsl_ran_logarithmic_pdf (n, 0.4); +} + + +double +test_lognormal (void) +{ + return gsl_ran_lognormal (r_global, 2.7, 1.3); +} + +double +test_lognormal_pdf (double x) +{ + return gsl_ran_lognormal_pdf (x, 2.7, 1.3); +} + +double +test_multinomial (void) +{ + const size_t K = 3; + const unsigned int sum_n = BINS; + unsigned int n[3]; + /* Test use of weights instead of probabilities. */ + const double p[] = { 2., 7., 1.}; + + gsl_ran_multinomial ( r_global, K, sum_n, p, n); + + return n[0]; +} + +double +test_multinomial_pdf (unsigned int n_0) +{ + /* The margional distribution of just 1 variate is binomial. */ + size_t K = 2; + /* Test use of weights instead of probabilities */ + double p[] = { 0.4, 1.6}; + const unsigned int sum_n = BINS; + unsigned int n[2]; + + n[0] = n_0; + n[1] =sum_n - n_0; + + return gsl_ran_multinomial_pdf (K, p, n); +} + + +double +test_multinomial_large (void) +{ + const unsigned int sum_n = BINS; + unsigned int n[MULTI_DIM]; + const double p[MULTI_DIM] = { 0.2, 0.20, 0.17, 0.14, 0.12, + 0.07, 0.05, 0.04, 0.01, 0.00 }; + + gsl_ran_multinomial ( r_global, MULTI_DIM, sum_n, p, n); + + return n[0]; +} + +double +test_multinomial_large_pdf (unsigned int n_0) +{ + return test_multinomial_pdf(n_0); +} + +double +test_negative_binomial (void) +{ + return gsl_ran_negative_binomial (r_global, 0.3, 20.0); +} + +double +test_negative_binomial_pdf (unsigned int n) +{ + return gsl_ran_negative_binomial_pdf (n, 0.3, 20.0); +} + +double +test_pascal (void) +{ + return gsl_ran_pascal (r_global, 0.8, 3); +} + +double +test_pascal_pdf (unsigned int n) +{ + return gsl_ran_pascal_pdf (n, 0.8, 3); +} + + +double +test_pareto (void) +{ + return gsl_ran_pareto (r_global, 1.9, 2.75); +} + +double +test_pareto_pdf (double x) +{ + return gsl_ran_pareto_pdf (x, 1.9, 2.75); +} + +double +test_rayleigh (void) +{ + return gsl_ran_rayleigh (r_global, 1.9); +} + +double +test_rayleigh_pdf (double x) +{ + return gsl_ran_rayleigh_pdf (x, 1.9); +} + +double +test_rayleigh_tail (void) +{ + return gsl_ran_rayleigh_tail (r_global, 2.7, 1.9); +} + +double +test_rayleigh_tail_pdf (double x) +{ + return gsl_ran_rayleigh_tail_pdf (x, 2.7, 1.9); +} + + +double +test_poisson (void) +{ + return gsl_ran_poisson (r_global, 5.0); +} + +double +test_poisson_pdf (unsigned int n) +{ + return gsl_ran_poisson_pdf (n, 5.0); +} + +double +test_poisson_large (void) +{ + return gsl_ran_poisson (r_global, 30.0); +} + +double +test_poisson_large_pdf (unsigned int n) +{ + return gsl_ran_poisson_pdf (n, 30.0); +} + + +double +test_tdist1 (void) +{ + return gsl_ran_tdist (r_global, 1.75); +} + +double +test_tdist1_pdf (double x) +{ + return gsl_ran_tdist_pdf (x, 1.75); +} + +double +test_tdist2 (void) +{ + return gsl_ran_tdist (r_global, 12.75); +} + +double +test_tdist2_pdf (double x) +{ + return gsl_ran_tdist_pdf (x, 12.75); +} + + +double +test_laplace (void) +{ + return gsl_ran_laplace (r_global, 2.75); +} + +double +test_laplace_pdf (double x) +{ + return gsl_ran_laplace_pdf (x, 2.75); +} + +double +test_weibull (void) +{ + return gsl_ran_weibull (r_global, 3.14, 2.75); +} + +double +test_weibull_pdf (double x) +{ + return gsl_ran_weibull_pdf (x, 3.14, 2.75); +} + + +double +test_weibull1 (void) +{ + return gsl_ran_weibull (r_global, 2.97, 1.0); +} + +double +test_weibull1_pdf (double x) +{ + return gsl_ran_weibull_pdf (x, 2.97, 1.0); +} diff --git a/gsl-2.5/randist/test.log b/gsl-2.5/randist/test.log new file mode 100644 index 00000000..c2913fa1 --- /dev/null +++ b/gsl-2.5/randist/test.log @@ -0,0 +1 @@ +Completed [150/150] diff --git a/gsl-2.5/randist/test.trs b/gsl-2.5/randist/test.trs new file mode 100644 index 00000000..3f0f396c --- /dev/null +++ b/gsl-2.5/randist/test.trs @@ -0,0 +1,4 @@ +:test-result: PASS +:global-test-result: PASS +:recheck: no +:copy-in-global-log: no diff --git a/gsl-2.5/randist/weibull.c b/gsl-2.5/randist/weibull.c new file mode 100644 index 00000000..b1494ef3 --- /dev/null +++ b/gsl-2.5/randist/weibull.c @@ -0,0 +1,64 @@ +/* randist/weibull.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 James Theiler, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include + +/* The Weibull distribution has the form, + + p(x) dx = (b/a) (x/a)^(b-1) exp(-(x/a)^b) dx + + */ + +double +gsl_ran_weibull (const gsl_rng * r, const double a, const double b) +{ + double x = gsl_rng_uniform_pos (r); + + double z = pow (-log (x), 1 / b); + + return a * z; +} + +double +gsl_ran_weibull_pdf (const double x, const double a, const double b) +{ + if (x < 0) + { + return 0 ; + } + else if (x == 0) + { + if (b == 1) + return 1/a ; + else + return 0 ; + } + else if (b == 1) + { + return exp(-x/a)/a ; + } + else + { + double p = (b/a) * exp (-pow (x/a, b) + (b - 1) * log (x/a)); + return p; + } +} diff --git a/gsl-2.5/randist/weibull.lo b/gsl-2.5/randist/weibull.lo new file mode 100644 index 00000000..90dcc5a6 --- /dev/null +++ b/gsl-2.5/randist/weibull.lo @@ -0,0 +1,12 @@ +# weibull.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/weibull.o' + +# Name of the non-PIC object +non_pic_object='weibull.o' + diff --git a/gsl-2.5/randist/wishart.c b/gsl-2.5/randist/wishart.c new file mode 100644 index 00000000..70facdf4 --- /dev/null +++ b/gsl-2.5/randist/wishart.c @@ -0,0 +1,220 @@ +/* randist/wishart.c + * + * Copyright (C) 2017 Timothée Flutre + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +/* Generate a random matrix from a Wishart distribution using the Bartlett + * decomposition, following Smith and Hocking, Journal of the Royal Statistical + * Society. Series C (Applied Statistics), Vol. 21, No. 3 (1972), pp. 341-345. + * + * df degrees of freedom + * L matrix resulting from the Cholesky decomposition of + * the scale matrix V = L L^T (dimension d x d) + * result output matrix (dimension d x d) + * work matrix used for intermediate computations (dimension d x d) + */ +int +gsl_ran_wishart (const gsl_rng * r, + const double df, + const gsl_matrix * L, + gsl_matrix * result, + gsl_matrix * work) +{ + if (L->size1 != L->size2) + { + GSL_ERROR("L should be a square matrix", GSL_ENOTSQR); + } + else if (result->size1 != result->size2) + { + GSL_ERROR("result should be a square matrix", GSL_ENOTSQR); + } + else if (work->size1 != work->size2) + { + GSL_ERROR("work should be a square matrix", GSL_ENOTSQR); + } + else if (result->size1 != L->size1) + { + GSL_ERROR("incompatible dimensions of result matrix", GSL_EBADLEN); + } + else if (work->size1 != L->size1) + { + GSL_ERROR("incompatible dimensions of work matrix", GSL_EBADLEN); + } + else if (df <= L->size1 - 1) + { + GSL_ERROR("incompatible degrees of freedom", GSL_EDOM); + } + else + { + /* result: X = L A A^T L^T */ + + size_t d = L->size1, i, j; + + /* insure the upper part of A is zero before filling its lower part */ + gsl_matrix_set_zero(work); + for (i = 0; i < d; ++i) + { + gsl_matrix_set(work, i, i, sqrt(gsl_ran_chisq(r, df - i))); + + for (j = 0; j < i; ++j) + { + gsl_matrix_set(work, i, j, gsl_ran_ugaussian(r)); + } + } + + /* compute L * A */ + gsl_blas_dtrmm(CblasLeft, CblasLower, CblasNoTrans, CblasNonUnit, 1.0, + L, work); + + /* compute (L * A) * (L * A)^T */ + gsl_blas_dsyrk(CblasUpper, CblasNoTrans, 1.0, work, 0.0, result); + for (i = 0; i < d; ++i) + { + for (j = 0; j < i; ++j) + { + gsl_matrix_set(result, i, j, gsl_matrix_get(result, j, i)); + } + } + + return GSL_SUCCESS; + } +} + +/* Compute the log of the probability density function at a given quantile + * matrix for a Wishart distribution using the Cholesky decomposition of the + * scale matrix. + * + * X quantile matrix at which to evaluate the PDF (dimension d x d) + * L_X matrix resulting from the Cholesky decomposition of + * of the quantile matrix at which to evaluate the PDF + * X = L_X L_X^T (dimension d x d) + * df degrees of freedom + * L matrix resulting from the Cholesky decomposition of + * the scale matrix V = L L^T (dimension d x d) + * result output of the density (dimension 1) + * work matrix used for intermediate computations (dimension d x d) + */ +int +gsl_ran_wishart_log_pdf (const gsl_matrix * X, + const gsl_matrix * L_X, + const double df, + const gsl_matrix * L, + double * result, + gsl_matrix * work) +{ + if (L->size1 != L->size2) + { + GSL_ERROR("L should be a square matrix", GSL_ENOTSQR); + } + else if (X->size1 != X->size2) + { + GSL_ERROR("X should be a square matrix", GSL_ENOTSQR); + } + else if (L_X->size1 != L_X->size2) + { + GSL_ERROR("L_X should be a square matrix", GSL_ENOTSQR); + } + else if (X->size1 != L->size1) + { + GSL_ERROR("incompatible dimensions of X matrix", GSL_EBADLEN); + } + else if (L_X->size1 != L->size1) + { + GSL_ERROR("incompatible dimensions of L_X matrix", GSL_EBADLEN); + } + else if (df <= L->size1 - 1) + { + GSL_ERROR("incompatible degrees of freedom", GSL_EDOM); + } + else + { + size_t d = L->size1, i; + int status; + double log_mv_Ga, log_det_V, log_det_X, tr_Vinv_X; + + /* compute the log of the multivariate Gamma */ + log_mv_Ga = d * (d-1) * 0.25 * log(M_PI); + for (i = 0; i < d; ++i) + { + log_mv_Ga += gsl_sf_lngamma((df - i + 1) * 0.5); + } + + /* compute the log of the determinant of the scale matrix */ + log_det_V = log(gsl_matrix_get(L, 0, 0)); + for (i = 1; i < d; ++i) + { + log_det_V += log(gsl_matrix_get(L, i, i)); + } + log_det_V = 2 * log_det_V; + + /* compute the log of the determinant of the quantile matrix */ + log_det_X = log(gsl_matrix_get(L_X, 0, 0)); + for (i = 1; i < d; ++i) + { + log_det_X += log(gsl_matrix_get(L_X, i, i)); + } + log_det_X = 2 * log_det_X; + + /* compute the trace of V^(-1) X */ + status = gsl_linalg_cholesky_solve_mat(L, X, work); + if (status) + return status; + tr_Vinv_X = gsl_matrix_get(work, 0, 0); + for (i = 1; i < d; ++i) + { + tr_Vinv_X += gsl_matrix_get(work, i, i); + } + + /* add all to get the log of the PDF */ + *result = - (0.5 * df * d) * log(2.0) + - (0.5 * df) * log_det_V + - log_mv_Ga + + 0.5 * (df - d - 1) * log_det_X + - 0.5 * tr_Vinv_X; + + return GSL_SUCCESS; + } +} + +int +gsl_ran_wishart_pdf (const gsl_matrix * X, + const gsl_matrix * L_X, + const double df, + const gsl_matrix * L, + double * result, + gsl_matrix * work) +{ + double logpdf; + int status = gsl_ran_wishart_log_pdf(X, L_X, df, L, &logpdf, work); + + if (status == GSL_SUCCESS) + *result = exp(logpdf); + + return status; +} diff --git a/gsl-2.5/randist/wishart.lo b/gsl-2.5/randist/wishart.lo new file mode 100644 index 00000000..b7a9001b --- /dev/null +++ b/gsl-2.5/randist/wishart.lo @@ -0,0 +1,12 @@ +# wishart.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/wishart.o' + +# Name of the non-PIC object +non_pic_object='wishart.o' + diff --git a/gsl-2.5/rng/.deps/borosh13.Plo b/gsl-2.5/rng/.deps/borosh13.Plo new file mode 100644 index 00000000..15bd29bf --- /dev/null +++ b/gsl-2.5/rng/.deps/borosh13.Plo @@ -0,0 +1,112 @@ +borosh13.lo: borosh13.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_rng.h ../gsl/gsl_types.h \ + ../gsl/gsl_errno.h /usr/include/stdio.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_inline.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_rng.h: + +../gsl/gsl_types.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_inline.h: diff --git a/gsl-2.5/rng/.deps/cmrg.Plo b/gsl-2.5/rng/.deps/cmrg.Plo new file mode 100644 index 00000000..ae62238d --- /dev/null +++ b/gsl-2.5/rng/.deps/cmrg.Plo @@ -0,0 +1,112 @@ +cmrg.lo: cmrg.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_rng.h ../gsl/gsl_types.h \ + ../gsl/gsl_errno.h /usr/include/stdio.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_inline.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_rng.h: + +../gsl/gsl_types.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_inline.h: diff --git a/gsl-2.5/rng/.deps/coveyou.Plo b/gsl-2.5/rng/.deps/coveyou.Plo new file mode 100644 index 00000000..a2f66b41 --- /dev/null +++ b/gsl-2.5/rng/.deps/coveyou.Plo @@ -0,0 +1,112 @@ +coveyou.lo: coveyou.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_rng.h ../gsl/gsl_types.h \ + ../gsl/gsl_errno.h /usr/include/stdio.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_inline.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_rng.h: + +../gsl/gsl_types.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_inline.h: diff --git a/gsl-2.5/rng/.deps/default.Plo b/gsl-2.5/rng/.deps/default.Plo new file mode 100644 index 00000000..fa3dd7bc --- /dev/null +++ b/gsl-2.5/rng/.deps/default.Plo @@ -0,0 +1,121 @@ +default.lo: default.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/string.h /usr/include/xlocale.h \ + /usr/include/bits/string.h /usr/include/bits/string2.h ../gsl/gsl_rng.h \ + ../gsl/gsl_types.h ../gsl/gsl_errno.h /usr/include/errno.h \ + /usr/include/bits/errno.h /usr/include/linux/errno.h \ + /usr/include/asm/errno.h /usr/include/asm-generic/errno.h \ + /usr/include/asm-generic/errno-base.h ../gsl/gsl_inline.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string.h: + +/usr/include/bits/string2.h: + +../gsl/gsl_rng.h: + +../gsl/gsl_types.h: + +../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_inline.h: diff --git a/gsl-2.5/rng/.deps/file.Plo b/gsl-2.5/rng/.deps/file.Plo new file mode 100644 index 00000000..c1634e3f --- /dev/null +++ b/gsl-2.5/rng/.deps/file.Plo @@ -0,0 +1,112 @@ +file.lo: file.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdio.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../gsl/gsl_errno.h /usr/include/errno.h \ + /usr/include/bits/errno.h /usr/include/linux/errno.h \ + /usr/include/asm/errno.h /usr/include/asm-generic/errno.h \ + /usr/include/asm-generic/errno-base.h ../gsl/gsl_types.h \ + ../gsl/gsl_rng.h /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/byteswap.h \ + /usr/include/bits/byteswap-16.h /usr/include/sys/types.h \ + /usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib-float.h \ + ../gsl/gsl_inline.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_rng.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_inline.h: diff --git a/gsl-2.5/rng/.deps/fishman18.Plo b/gsl-2.5/rng/.deps/fishman18.Plo new file mode 100644 index 00000000..4b216fd1 --- /dev/null +++ b/gsl-2.5/rng/.deps/fishman18.Plo @@ -0,0 +1,114 @@ +fishman18.lo: fishman18.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_rng.h ../gsl/gsl_types.h \ + ../gsl/gsl_errno.h /usr/include/stdio.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_inline.h schrage.c + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_rng.h: + +../gsl/gsl_types.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_inline.h: + +schrage.c: diff --git a/gsl-2.5/rng/.deps/fishman20.Plo b/gsl-2.5/rng/.deps/fishman20.Plo new file mode 100644 index 00000000..2c2fa04b --- /dev/null +++ b/gsl-2.5/rng/.deps/fishman20.Plo @@ -0,0 +1,112 @@ +fishman20.lo: fishman20.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_rng.h ../gsl/gsl_types.h \ + ../gsl/gsl_errno.h /usr/include/stdio.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_inline.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_rng.h: + +../gsl/gsl_types.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_inline.h: diff --git a/gsl-2.5/rng/.deps/fishman2x.Plo b/gsl-2.5/rng/.deps/fishman2x.Plo new file mode 100644 index 00000000..9f7e3567 --- /dev/null +++ b/gsl-2.5/rng/.deps/fishman2x.Plo @@ -0,0 +1,112 @@ +fishman2x.lo: fishman2x.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_rng.h ../gsl/gsl_types.h \ + ../gsl/gsl_errno.h /usr/include/stdio.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_inline.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_rng.h: + +../gsl/gsl_types.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_inline.h: diff --git a/gsl-2.5/rng/.deps/gfsr4.Plo b/gsl-2.5/rng/.deps/gfsr4.Plo new file mode 100644 index 00000000..097c78f3 --- /dev/null +++ b/gsl-2.5/rng/.deps/gfsr4.Plo @@ -0,0 +1,112 @@ +gfsr4.lo: gfsr4.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_rng.h ../gsl/gsl_types.h \ + ../gsl/gsl_errno.h /usr/include/stdio.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_inline.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_rng.h: + +../gsl/gsl_types.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_inline.h: diff --git a/gsl-2.5/rng/.deps/inline.Plo b/gsl-2.5/rng/.deps/inline.Plo new file mode 100644 index 00000000..f4591d34 --- /dev/null +++ b/gsl-2.5/rng/.deps/inline.Plo @@ -0,0 +1,123 @@ +inline.lo: inline.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/string.h /usr/include/xlocale.h \ + /usr/include/bits/string.h /usr/include/bits/string2.h \ + ../gsl/gsl_errno.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_types.h ../build.h ../gsl/gsl_rng.h ../gsl/gsl_inline.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string.h: + +/usr/include/bits/string2.h: + +../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../build.h: + +../gsl/gsl_rng.h: + +../gsl/gsl_inline.h: diff --git a/gsl-2.5/rng/.deps/knuthran.Plo b/gsl-2.5/rng/.deps/knuthran.Plo new file mode 100644 index 00000000..c39f49e0 --- /dev/null +++ b/gsl-2.5/rng/.deps/knuthran.Plo @@ -0,0 +1,112 @@ +knuthran.lo: knuthran.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_rng.h ../gsl/gsl_types.h \ + ../gsl/gsl_errno.h /usr/include/stdio.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_inline.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_rng.h: + +../gsl/gsl_types.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_inline.h: diff --git a/gsl-2.5/rng/.deps/knuthran2.Plo b/gsl-2.5/rng/.deps/knuthran2.Plo new file mode 100644 index 00000000..1bb6d577 --- /dev/null +++ b/gsl-2.5/rng/.deps/knuthran2.Plo @@ -0,0 +1,114 @@ +knuthran2.lo: knuthran2.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_rng.h ../gsl/gsl_types.h \ + ../gsl/gsl_errno.h /usr/include/stdio.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_inline.h schrage.c + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_rng.h: + +../gsl/gsl_types.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_inline.h: + +schrage.c: diff --git a/gsl-2.5/rng/.deps/knuthran2002.Plo b/gsl-2.5/rng/.deps/knuthran2002.Plo new file mode 100644 index 00000000..f1558723 --- /dev/null +++ b/gsl-2.5/rng/.deps/knuthran2002.Plo @@ -0,0 +1,112 @@ +knuthran2002.lo: knuthran2002.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_rng.h ../gsl/gsl_types.h \ + ../gsl/gsl_errno.h /usr/include/stdio.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_inline.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_rng.h: + +../gsl/gsl_types.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_inline.h: diff --git a/gsl-2.5/rng/.deps/lecuyer21.Plo b/gsl-2.5/rng/.deps/lecuyer21.Plo new file mode 100644 index 00000000..e4b34457 --- /dev/null +++ b/gsl-2.5/rng/.deps/lecuyer21.Plo @@ -0,0 +1,112 @@ +lecuyer21.lo: lecuyer21.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_rng.h ../gsl/gsl_types.h \ + ../gsl/gsl_errno.h /usr/include/stdio.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_inline.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_rng.h: + +../gsl/gsl_types.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_inline.h: diff --git a/gsl-2.5/rng/.deps/minstd.Plo b/gsl-2.5/rng/.deps/minstd.Plo new file mode 100644 index 00000000..dfad9150 --- /dev/null +++ b/gsl-2.5/rng/.deps/minstd.Plo @@ -0,0 +1,112 @@ +minstd.lo: minstd.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_rng.h ../gsl/gsl_types.h \ + ../gsl/gsl_errno.h /usr/include/stdio.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_inline.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_rng.h: + +../gsl/gsl_types.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_inline.h: diff --git a/gsl-2.5/rng/.deps/mrg.Plo b/gsl-2.5/rng/.deps/mrg.Plo new file mode 100644 index 00000000..0c012d3a --- /dev/null +++ b/gsl-2.5/rng/.deps/mrg.Plo @@ -0,0 +1,112 @@ +mrg.lo: mrg.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_rng.h ../gsl/gsl_types.h \ + ../gsl/gsl_errno.h /usr/include/stdio.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_inline.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_rng.h: + +../gsl/gsl_types.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_inline.h: diff --git a/gsl-2.5/rng/.deps/mt.Plo b/gsl-2.5/rng/.deps/mt.Plo new file mode 100644 index 00000000..810c317e --- /dev/null +++ b/gsl-2.5/rng/.deps/mt.Plo @@ -0,0 +1,112 @@ +mt.lo: mt.c /usr/include/stdc-predef.h ../config.h /usr/include/stdlib.h \ + /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_rng.h ../gsl/gsl_types.h \ + ../gsl/gsl_errno.h /usr/include/stdio.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_inline.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_rng.h: + +../gsl/gsl_types.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_inline.h: diff --git a/gsl-2.5/rng/.deps/r250.Plo b/gsl-2.5/rng/.deps/r250.Plo new file mode 100644 index 00000000..c077707e --- /dev/null +++ b/gsl-2.5/rng/.deps/r250.Plo @@ -0,0 +1,112 @@ +r250.lo: r250.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_rng.h ../gsl/gsl_types.h \ + ../gsl/gsl_errno.h /usr/include/stdio.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_inline.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_rng.h: + +../gsl/gsl_types.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_inline.h: diff --git a/gsl-2.5/rng/.deps/ran0.Plo b/gsl-2.5/rng/.deps/ran0.Plo new file mode 100644 index 00000000..071d6d7c --- /dev/null +++ b/gsl-2.5/rng/.deps/ran0.Plo @@ -0,0 +1,111 @@ +ran0.lo: ran0.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_errno.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_types.h ../gsl/gsl_rng.h ../gsl/gsl_inline.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_rng.h: + +../gsl/gsl_inline.h: diff --git a/gsl-2.5/rng/.deps/ran1.Plo b/gsl-2.5/rng/.deps/ran1.Plo new file mode 100644 index 00000000..fc17d101 --- /dev/null +++ b/gsl-2.5/rng/.deps/ran1.Plo @@ -0,0 +1,112 @@ +ran1.lo: ran1.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_rng.h ../gsl/gsl_types.h \ + ../gsl/gsl_errno.h /usr/include/stdio.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_inline.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_rng.h: + +../gsl/gsl_types.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_inline.h: diff --git a/gsl-2.5/rng/.deps/ran2.Plo b/gsl-2.5/rng/.deps/ran2.Plo new file mode 100644 index 00000000..06dfa761 --- /dev/null +++ b/gsl-2.5/rng/.deps/ran2.Plo @@ -0,0 +1,112 @@ +ran2.lo: ran2.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_rng.h ../gsl/gsl_types.h \ + ../gsl/gsl_errno.h /usr/include/stdio.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_inline.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_rng.h: + +../gsl/gsl_types.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_inline.h: diff --git a/gsl-2.5/rng/.deps/ran3.Plo b/gsl-2.5/rng/.deps/ran3.Plo new file mode 100644 index 00000000..8bc7288d --- /dev/null +++ b/gsl-2.5/rng/.deps/ran3.Plo @@ -0,0 +1,112 @@ +ran3.lo: ran3.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_rng.h ../gsl/gsl_types.h \ + ../gsl/gsl_errno.h /usr/include/stdio.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_inline.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_rng.h: + +../gsl/gsl_types.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_inline.h: diff --git a/gsl-2.5/rng/.deps/rand.Plo b/gsl-2.5/rng/.deps/rand.Plo new file mode 100644 index 00000000..90d576d5 --- /dev/null +++ b/gsl-2.5/rng/.deps/rand.Plo @@ -0,0 +1,112 @@ +rand.lo: rand.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_rng.h ../gsl/gsl_types.h \ + ../gsl/gsl_errno.h /usr/include/stdio.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_inline.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_rng.h: + +../gsl/gsl_types.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_inline.h: diff --git a/gsl-2.5/rng/.deps/rand48.Plo b/gsl-2.5/rng/.deps/rand48.Plo new file mode 100644 index 00000000..32e7006b --- /dev/null +++ b/gsl-2.5/rng/.deps/rand48.Plo @@ -0,0 +1,136 @@ +rand48.lo: rand48.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h /usr/include/stdlib.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_sys.h ../gsl/gsl_rng.h \ + ../gsl/gsl_types.h ../gsl/gsl_errno.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_inline.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +/usr/include/stdlib.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_rng.h: + +../gsl/gsl_types.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_inline.h: diff --git a/gsl-2.5/rng/.deps/random.Plo b/gsl-2.5/rng/.deps/random.Plo new file mode 100644 index 00000000..d3379188 --- /dev/null +++ b/gsl-2.5/rng/.deps/random.Plo @@ -0,0 +1,112 @@ +random.lo: random.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_rng.h ../gsl/gsl_types.h \ + ../gsl/gsl_errno.h /usr/include/stdio.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_inline.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_rng.h: + +../gsl/gsl_types.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_inline.h: diff --git a/gsl-2.5/rng/.deps/randu.Plo b/gsl-2.5/rng/.deps/randu.Plo new file mode 100644 index 00000000..dcd4b182 --- /dev/null +++ b/gsl-2.5/rng/.deps/randu.Plo @@ -0,0 +1,112 @@ +randu.lo: randu.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_rng.h ../gsl/gsl_types.h \ + ../gsl/gsl_errno.h /usr/include/stdio.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_inline.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_rng.h: + +../gsl/gsl_types.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_inline.h: diff --git a/gsl-2.5/rng/.deps/ranf.Plo b/gsl-2.5/rng/.deps/ranf.Plo new file mode 100644 index 00000000..e6eead6a --- /dev/null +++ b/gsl-2.5/rng/.deps/ranf.Plo @@ -0,0 +1,136 @@ +ranf.lo: ranf.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h /usr/include/stdlib.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_rng.h ../gsl/gsl_types.h \ + ../gsl/gsl_errno.h /usr/include/stdio.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_inline.h ../gsl/gsl_sys.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +/usr/include/stdlib.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_rng.h: + +../gsl/gsl_types.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_sys.h: diff --git a/gsl-2.5/rng/.deps/ranlux.Plo b/gsl-2.5/rng/.deps/ranlux.Plo new file mode 100644 index 00000000..6a5b106d --- /dev/null +++ b/gsl-2.5/rng/.deps/ranlux.Plo @@ -0,0 +1,112 @@ +ranlux.lo: ranlux.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_rng.h ../gsl/gsl_types.h \ + ../gsl/gsl_errno.h /usr/include/stdio.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_inline.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_rng.h: + +../gsl/gsl_types.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_inline.h: diff --git a/gsl-2.5/rng/.deps/ranlxd.Plo b/gsl-2.5/rng/.deps/ranlxd.Plo new file mode 100644 index 00000000..b592a42d --- /dev/null +++ b/gsl-2.5/rng/.deps/ranlxd.Plo @@ -0,0 +1,112 @@ +ranlxd.lo: ranlxd.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_rng.h ../gsl/gsl_types.h \ + ../gsl/gsl_errno.h /usr/include/stdio.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_inline.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_rng.h: + +../gsl/gsl_types.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_inline.h: diff --git a/gsl-2.5/rng/.deps/ranlxs.Plo b/gsl-2.5/rng/.deps/ranlxs.Plo new file mode 100644 index 00000000..bfa550fe --- /dev/null +++ b/gsl-2.5/rng/.deps/ranlxs.Plo @@ -0,0 +1,112 @@ +ranlxs.lo: ranlxs.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_rng.h ../gsl/gsl_types.h \ + ../gsl/gsl_errno.h /usr/include/stdio.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_inline.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_rng.h: + +../gsl/gsl_types.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_inline.h: diff --git a/gsl-2.5/rng/.deps/ranmar.Plo b/gsl-2.5/rng/.deps/ranmar.Plo new file mode 100644 index 00000000..cd5ab8b7 --- /dev/null +++ b/gsl-2.5/rng/.deps/ranmar.Plo @@ -0,0 +1,112 @@ +ranmar.lo: ranmar.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_rng.h ../gsl/gsl_types.h \ + ../gsl/gsl_errno.h /usr/include/stdio.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_inline.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_rng.h: + +../gsl/gsl_types.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_inline.h: diff --git a/gsl-2.5/rng/.deps/rng.Plo b/gsl-2.5/rng/.deps/rng.Plo new file mode 100644 index 00000000..58f85aaf --- /dev/null +++ b/gsl-2.5/rng/.deps/rng.Plo @@ -0,0 +1,121 @@ +rng.lo: rng.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/string.h /usr/include/xlocale.h \ + /usr/include/bits/string.h /usr/include/bits/string2.h \ + ../gsl/gsl_errno.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_types.h ../gsl/gsl_rng.h ../gsl/gsl_inline.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string.h: + +/usr/include/bits/string2.h: + +../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_rng.h: + +../gsl/gsl_inline.h: diff --git a/gsl-2.5/rng/.deps/slatec.Plo b/gsl-2.5/rng/.deps/slatec.Plo new file mode 100644 index 00000000..d9488067 --- /dev/null +++ b/gsl-2.5/rng/.deps/slatec.Plo @@ -0,0 +1,112 @@ +slatec.lo: slatec.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_rng.h ../gsl/gsl_types.h \ + ../gsl/gsl_errno.h /usr/include/stdio.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_inline.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_rng.h: + +../gsl/gsl_types.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_inline.h: diff --git a/gsl-2.5/rng/.deps/taus.Plo b/gsl-2.5/rng/.deps/taus.Plo new file mode 100644 index 00000000..9df87711 --- /dev/null +++ b/gsl-2.5/rng/.deps/taus.Plo @@ -0,0 +1,112 @@ +taus.lo: taus.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_rng.h ../gsl/gsl_types.h \ + ../gsl/gsl_errno.h /usr/include/stdio.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_inline.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_rng.h: + +../gsl/gsl_types.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_inline.h: diff --git a/gsl-2.5/rng/.deps/taus113.Plo b/gsl-2.5/rng/.deps/taus113.Plo new file mode 100644 index 00000000..84cb30b3 --- /dev/null +++ b/gsl-2.5/rng/.deps/taus113.Plo @@ -0,0 +1,112 @@ +taus113.lo: taus113.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_rng.h ../gsl/gsl_types.h \ + ../gsl/gsl_errno.h /usr/include/stdio.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_inline.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_rng.h: + +../gsl/gsl_types.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_inline.h: diff --git a/gsl-2.5/rng/.deps/test.Po b/gsl-2.5/rng/.deps/test.Po new file mode 100644 index 00000000..778a6ef2 --- /dev/null +++ b/gsl-2.5/rng/.deps/test.Po @@ -0,0 +1,139 @@ +test.o: test.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_rng.h ../gsl/gsl_types.h ../gsl/gsl_errno.h \ + /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_inline.h ../gsl/gsl_test.h ../gsl/gsl_ieee_utils.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_rng.h: + +../gsl/gsl_types.h: + +../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_test.h: + +../gsl/gsl_ieee_utils.h: diff --git a/gsl-2.5/rng/.deps/transputer.Plo b/gsl-2.5/rng/.deps/transputer.Plo new file mode 100644 index 00000000..51148543 --- /dev/null +++ b/gsl-2.5/rng/.deps/transputer.Plo @@ -0,0 +1,112 @@ +transputer.lo: transputer.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_rng.h ../gsl/gsl_types.h \ + ../gsl/gsl_errno.h /usr/include/stdio.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_inline.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_rng.h: + +../gsl/gsl_types.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_inline.h: diff --git a/gsl-2.5/rng/.deps/tt.Plo b/gsl-2.5/rng/.deps/tt.Plo new file mode 100644 index 00000000..3d3754b0 --- /dev/null +++ b/gsl-2.5/rng/.deps/tt.Plo @@ -0,0 +1,112 @@ +tt.lo: tt.c /usr/include/stdc-predef.h ../config.h /usr/include/stdlib.h \ + /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_rng.h ../gsl/gsl_types.h \ + ../gsl/gsl_errno.h /usr/include/stdio.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_inline.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_rng.h: + +../gsl/gsl_types.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_inline.h: diff --git a/gsl-2.5/rng/.deps/types.Plo b/gsl-2.5/rng/.deps/types.Plo new file mode 100644 index 00000000..0b31d13a --- /dev/null +++ b/gsl-2.5/rng/.deps/types.Plo @@ -0,0 +1,112 @@ +types.lo: types.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_rng.h ../gsl/gsl_types.h \ + ../gsl/gsl_errno.h /usr/include/stdio.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_inline.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_rng.h: + +../gsl/gsl_types.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_inline.h: diff --git a/gsl-2.5/rng/.deps/uni.Plo b/gsl-2.5/rng/.deps/uni.Plo new file mode 100644 index 00000000..bd1993ab --- /dev/null +++ b/gsl-2.5/rng/.deps/uni.Plo @@ -0,0 +1,112 @@ +uni.lo: uni.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_rng.h ../gsl/gsl_types.h \ + ../gsl/gsl_errno.h /usr/include/stdio.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_inline.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_rng.h: + +../gsl/gsl_types.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_inline.h: diff --git a/gsl-2.5/rng/.deps/uni32.Plo b/gsl-2.5/rng/.deps/uni32.Plo new file mode 100644 index 00000000..fe036486 --- /dev/null +++ b/gsl-2.5/rng/.deps/uni32.Plo @@ -0,0 +1,112 @@ +uni32.lo: uni32.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_rng.h ../gsl/gsl_types.h \ + ../gsl/gsl_errno.h /usr/include/stdio.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_inline.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_rng.h: + +../gsl/gsl_types.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_inline.h: diff --git a/gsl-2.5/rng/.deps/vax.Plo b/gsl-2.5/rng/.deps/vax.Plo new file mode 100644 index 00000000..7623c011 --- /dev/null +++ b/gsl-2.5/rng/.deps/vax.Plo @@ -0,0 +1,112 @@ +vax.lo: vax.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_rng.h ../gsl/gsl_types.h \ + ../gsl/gsl_errno.h /usr/include/stdio.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_inline.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_rng.h: + +../gsl/gsl_types.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_inline.h: diff --git a/gsl-2.5/rng/.deps/waterman14.Plo b/gsl-2.5/rng/.deps/waterman14.Plo new file mode 100644 index 00000000..627c109e --- /dev/null +++ b/gsl-2.5/rng/.deps/waterman14.Plo @@ -0,0 +1,112 @@ +waterman14.lo: waterman14.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_rng.h ../gsl/gsl_types.h \ + ../gsl/gsl_errno.h /usr/include/stdio.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_inline.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_rng.h: + +../gsl/gsl_types.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_inline.h: diff --git a/gsl-2.5/rng/.deps/zuf.Plo b/gsl-2.5/rng/.deps/zuf.Plo new file mode 100644 index 00000000..cc1e1947 --- /dev/null +++ b/gsl-2.5/rng/.deps/zuf.Plo @@ -0,0 +1,112 @@ +zuf.lo: zuf.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_rng.h ../gsl/gsl_types.h \ + ../gsl/gsl_errno.h /usr/include/stdio.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_inline.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_rng.h: + +../gsl/gsl_types.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_inline.h: diff --git a/gsl-2.5/rng/.libs/libgslrng.la b/gsl-2.5/rng/.libs/libgslrng.la new file mode 120000 index 00000000..ea8bfac9 --- /dev/null +++ b/gsl-2.5/rng/.libs/libgslrng.la @@ -0,0 +1 @@ +../libgslrng.la \ No newline at end of file diff --git a/gsl-2.5/rng/ChangeLog b/gsl-2.5/rng/ChangeLog new file mode 100644 index 00000000..8e79fcaf --- /dev/null +++ b/gsl-2.5/rng/ChangeLog @@ -0,0 +1,409 @@ +2012-09-10 Rhys Ulerich + + * ranf.c Add include for gsl_sys.h to fix MSVC build. + Thanks to Brian Gladman for the suggestion. + +2011-04-28 Brian Gough + + * ranlxs.c (ranlxs_set_lux): enforce maximum seed of + 2^31-1 (0x7FFFFFFF) for ranlxs + +2010-01-07 Brian Gough + + * ran3.c (ran3_set): added a check for negative j + +2009-07-09 Brian Gough + + * rng.c (gsl_rng_free): handle NULL argument in free + +2008-10-13 Brian Gough + + * file.c: added (char *) to allow compilation with C++ compiler + +2008-07-03 Brian Gough + + * rng.c: moved inline functions to inline.c + + * gsl_rng.h: use new inline declarations + + * inline.c: handle inline functions separately + + * Makefile.am (INCLUDES): use top_srcdir instead of top_builddir + +2007-01-28 Brian Gough + + * knuthran2002.c: added revised version from 9th printing + +2007-01-04 Brian Gough + + * default.c (gsl_rng_env_setup): send newline to stderr not stdout + +2006-04-13 Brian Gough + + * default.c (gsl_rng_env_setup): print a newline after list of + generators in error message + +2006-03-16 Brian Gough + + * test.c (main): added taus2 test + +2006-02-19 Brian Gough + + * rng.c: added note about why range=max-min not max-min+1 + +2005-12-16 Brian Gough + + * rng.c (gsl_rng_uniform_int): catch the case n = 0 and return an + error + +2003-07-23 Brian Gough + + * file.c: added fwrite/fread functions + +2003-06-12 Brian Gough + + * Makefile.am: removed benchmark programs from default build + +2003-06-02 Brian Gough + + * waterman14.c: increased RAND_MIN to 1 + + * lecuyer21.c: corrections to RAND_MIN, RAND_MAX, floating point + denominator and seeding modulus + + * fishman20.c (ran_get): use schrage multiplication to avoid + overflow + + * coveyou.c: corrected value of RAND_MIN to 1 and RAND_MAX to 2^32-1 + + * borosh13.c: increased RAND_MIN to 1 + + * knuthran2.c (ran_get): use schrage multiplication to avoid + overflow in intermediate results + + * fishman2x.c (ran_get): use schrage multiplication to avoid + overflow in intermediate results + + * fishman18.c (ran_get): use schrage multiplication to avoid + overflow in intermediate results + + * schrage.c (schrage): utility functions for multiplication of + long integers + + * test.c (main): updated incorrect test values for + gsl_rng_fishman18 gsl_rng_fishman2x gsl_rng_knuthran2 + +Mon Nov 25 19:27:10 2002 Brian Gough + + * taus.c (taus2_set): fixed bug in seeding for s3 (test should be + for s3<16, not s3<8) + +Sun Nov 3 14:40:43 2002 Brian Gough + + * taus.c (taus2_set): fixed bug in seeding for s2 < 8 + +Mon Jun 17 21:04:10 2002 Brian Gough + + * mt.c (mt_set): ensure state counter mti is initialised by + seeding routine + +Wed May 29 21:52:11 2002 Brian Gough + + * randu.c: removed unused variable m + +Tue May 7 22:34:52 2002 Brian Gough + + * mt.c (mt_1999_set): updated seeding procedure according to new + release of MT19937 from the original authors. + +Fri Apr 26 21:17:05 2002 Brian Gough + + * taus.c (taus2_set): added alternate seeding procedure as + described in erratum to P.L'Ecuyer's paper. + +Wed Apr 17 19:37:49 2002 Brian Gough + + * test.c (main): added missing test for gsl_rng_mt19937_1998 + + * gsl_rng.h: added missing declaration for gsl_rng_mt19937_1998 + +Sun Dec 2 15:45:24 2001 Brian Gough + + * Added new generators borosh13, coveyou, fishman18, fishman20, + fishman2x, knuthran, knuthran2, lecuyer21, waterman14 from Knuth's + Seminumerical Algorithms 3rd Ed. Implemented by Carlo Perassi. + + * gfsr4.c (gfsr4_get_double): increased divisor for double to + 2^32, avoids generating exact result of 1.0 as specified in the + documentation + +Mon Sep 3 10:32:01 2001 Brian Gough + + * mt.c (mt_1998_set): renamed macro to avoid duplicate definition + +Fri Aug 31 17:49:37 2001 Brian Gough + + * mt.c (mt_1998_set): added the original (buggy) MT19937 seeding + routine as mt19937_1998 for compatibility. + +Wed May 2 15:35:38 2001 Brian Gough + + * ran1.c (ran1_get_double): use float constants for comparison + for compatibility with original Numerical Recipes routines + + * ran2.c (ran2_get_double): ditto + +Fri Apr 27 18:47:07 2001 Brian Gough + + * types.c (gsl_rng_types_setup): added void to make prototype + valid in ansi c + +Mon Apr 16 20:03:07 2001 Brian Gough + + * default.c (gsl_rng_env_setup): removed spurious argument to + fprintf + +Tue Jan 23 13:24:26 2001 Brian Gough + + * types.c (gsl_rng_types_setup): provide a function that returns a + list of all the generator types + + * default.c (gsl_rng_env_setup): get the list of generators from a + function rather than having a list in the code itself. Display a + list of the valid generators if the user provides an incorrect one. + +Fri Dec 8 20:30:58 2000 Brian Gough + + * ranlxs.c: renamed internal function ranlxs_set_impl to + ranlxs_set + + * ranlxd.c: renamed internal function ranlxd_set_impl to + ranlxd_set + + * ranlux.c: renamed internal function ranlux_set_impl to + ranlux_set + + * random.c: renamed internal function random_get_impl function to + random_get + +Sat Jul 29 14:29:54 2000 Brian Gough + + * test.c (main): updated test value for MT19937 for new seeding + procedure + + * mt.c: The seeding procedure has been updated to match the 10/99 + release of MT19937. + +Wed Mar 8 16:04:34 2000 Brian Gough + + * rng.c (gsl_rng_memcpy): generators must now be of the same type + for a copy from one to the other to work. + +Thu Feb 24 16:41:48 2000 Brian Gough + + * ran3.c (ran3_set): initialize unused zeroth element of state to + zero for consistency. + +Mon Feb 14 13:28:26 2000 Brian Gough + + * made all internal functions static + +Mon Dec 6 16:21:05 1999 Brian Gough + + * test.c (main): rewrote the tests to loop over all the generators + +Wed Aug 11 20:57:10 1999 Brian Gough + + * ranlxd.c, ranlxs.c: added ranlxd and ranlxs, second generation + RANLUX generators from Martin Luescher. + +Mon Mar 1 21:12:28 1999 Brian Gough + + * test.c (rng_parallel_state_test): added some extra tests to fill + a few holes in the net + + * gsl_rng.h: moved static class information (max, min, etc) out of + the instance data. Originally I avoided this because of the + overhead of the extra indirection (r->type->get vs r->get) for + every get function call, but that turns out to be only about 10% + at worst so it's worth the slight speed cost to make the code + safer. + +Tue Nov 17 17:09:31 1998 Brian Gough + + * gfsr4.c: added #include which was missing + +1998-11-04 + + * ranf.c: fix portability problems on alpha, by ensuring that + shorts are correctly promoted to longs at the appropriate points + + * rand48.c: fix portability problems by ensuring that shorts are + correctly promoted to longs at the appropriate points + + * rng-dump.c (main): write out file correctly by using chars + instead of unsigned long ints, since these can vary in size on + different architectures + +Wed Oct 28 15:02:22 1998 Brian Gough + + * rng.c: added #include to get prototype for memcpy + +Mon Sep 14 20:53:09 1998 Brian Gough + + * default.c (gsl_rng_env_setup): added gfsr4 + +1998-09-10 James Theiler + + * gfsr4.c: added new random number generator + + * Makefile.am: added gfsr4.c to SOURCES list + + * gsl_rng.h: added gfsr4 + + * test.c: added gfsr4 + + * benchmark.c: added gfsr4 + +Mon Aug 10 22:12:13 1998 Brian Gough + + * rng-dump.c: program to write out 3 million random numbers, + suitable for testing with DIEHARD. + +Tue Aug 4 19:51:57 1998 Brian Gough + + * default.c (gsl_rng_env_setup): send default/enviroment output to + stderr + +Mon Aug 3 18:25:52 1998 Brian Gough + + * mt.c: made constants static since they shouldn't be exported, + added some speed improvements from Cokus' code (not all of them + since they seemed to use more registers than available on the + pentium). + +Thu Jul 9 13:56:20 1998 Brian Gough + + * slatec.c: renamed cmlib.c to slatec.c + + * transputer.c: renamed tds.c to transputer.c so the name is a bit + more obvious + + * random.c: renamed random0 functions to random8, since obviously + we can't have 0 bytes of state + + * default.c (gsl_rng_env_setup): made gsl_rng_mt19937 the default + generator + +Wed Jul 8 17:06:54 1998 Brian Gough + + * added random() functions. There are three(!) versions: the + original BSD, linux libc5 (had a typo in the multiplier, but got + installed on millions of machines so is now a defacto standard) + and GNU glibc2 (fixes the typo and has an improved seeding + procedure) + +Sun Jul 5 15:59:29 1998 Brian Gough + + * rand.c: renamed rand.c to cmlib.c and bsdrand.c to rand.c. + + * ranf.c: added CRAY RANF, 48 bit generator + + * rand48.c: added the standard unix rand48() + + * changed all the routines to allow an additional callback for + returning doubles. Now we can implement numerical recipes with its + non-standard checks on the floating point results and also access + the full state for getting 48-bit doubles out of rand48. + +Sat Jul 4 11:14:49 1998 Brian Gough + + * ranmar.c: added the RANMAR generator + + * tds.c: added the INMOS Transputer RNG + + * test.c (rng_min_test): added a test for RAND_MIN, to make sure + none of the generators go below it. Statistically the test is not + much good since it's very unlikely that an off-by-one error would + show up unless we ran the test for > 4 billion numbers. However, + the test might detect a gross error like a typo in RAND_MIN or a + degeneracy 0,0,0,... for a multiplicative generator. + + * uni.c: fixed RAND_MAX here too + + * uni32.c: fixed RAND_MAX to m1-1, not m1 (since it's modulo m1 so + m1 can't occur, only m1-1) + +Fri Jul 3 15:55:34 1998 Brian Gough + + * rng.c (gsl_rng_uniform_gt0_lt1): added a function which returns + numbers in the range (0,1), i.e. excluding 0.0 and 1.0 + + * renamed bad_randu.c to randu.c + + * renamed bad_rand.c to bsdrand.c + +Mon Jun 29 18:11:08 1998 Brian Gough + + * added implementations of the numerical recipes algorithms ran0, + ran1, ran2, ran3 + +Sun Jun 28 11:51:48 1998 Brian Gough + + * gsl_rng.h: added gsl_rng_uniform_pos which guarantees positive + numbers, (0,1] + + * added a RAND_MIN entry to the gsl_rng/gsl_rng_type structs + + * gsl_rng.h: renamed gsl_rng_get_uni to gsl_rng_uniform + +Wed Jun 24 12:10:23 1998 Brian Gough + + * gsl_rng.h: added inline versions of gsl_rng_get and + gsl_rng_get_uni + + * benchmark.c: added a simple benchmark program to measure rng's + per second + + * test.c (N2): reduced the number of tests from 1 million to 100k + to speed things up a bit + + * changed the generic seeding algorithm to s -> (69069*s) & + 0xFFFFFFFF which covers all 32 bits. + +Sun Jun 21 23:24:36 1998 Brian Gough + + * added the MT19937 and TT880 mersenne prime generators + +Sat Jun 20 13:58:40 1998 Brian Gough + + * ensured that 32 bit quantities are defined as 'long', as + required by ANSI. On a 16 bit platform 'int' is usually just 16 + bits. + + * ranlux.c: added the RANLUX generator + +Fri Jun 19 11:12:06 1998 Brian Gough + + * removed the gsl- prefix from generator name strings + +Thu Jun 18 12:17:16 1998 Brian Gough + + * test.c: added a 10000 iteration check for cmrg + + * got rid of init_state values. It's simpler to generate them + directly from the seed, the cost of creating an rng is not usually + a big deal. + + * rng.c: eliminated the gsl_rng_internal struct since it was not + really necessary + +Wed Jun 17 17:31:27 1998 Brian Gough + + * minstd.c: added Park and Millers MINSTD generator + +Thu Jun 11 18:08:40 1998 Brian Gough + + * this will be an alternate, thread-safe interface to the random + number generators. + diff --git a/gsl-2.5/rng/Makefile b/gsl-2.5/rng/Makefile new file mode 100644 index 00000000..80c81e7a --- /dev/null +++ b/gsl-2.5/rng/Makefile @@ -0,0 +1,1082 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# rng/Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + + + + +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/gsl +pkgincludedir = $(includedir)/gsl +pkglibdir = $(libdir)/gsl +pkglibexecdir = $(libexecdir)/gsl +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = x86_64-unknown-linux-gnu +host_triplet = x86_64-unknown-linux-gnu +check_PROGRAMS = test$(EXEEXT) +subdir = rng +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp \ + $(noinst_HEADERS) $(pkginclude_HEADERS) \ + $(top_srcdir)/test-driver ChangeLog TODO +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +libgslrng_la_LIBADD = +am_libgslrng_la_OBJECTS = borosh13.lo cmrg.lo coveyou.lo default.lo \ + file.lo fishman18.lo fishman20.lo fishman2x.lo gfsr4.lo \ + knuthran2.lo knuthran.lo knuthran2002.lo lecuyer21.lo \ + minstd.lo mrg.lo mt.lo r250.lo ran0.lo ran1.lo ran2.lo ran3.lo \ + rand48.lo rand.lo random.lo randu.lo ranf.lo ranlux.lo \ + ranlxd.lo ranlxs.lo ranmar.lo rng.lo slatec.lo taus.lo \ + taus113.lo transputer.lo tt.lo types.lo uni32.lo uni.lo vax.lo \ + waterman14.lo zuf.lo inline.lo +libgslrng_la_OBJECTS = $(am_libgslrng_la_OBJECTS) +AM_V_lt = $(am__v_lt_$(V)) +am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) +am__v_lt_0 = --silent +am__v_lt_1 = +am_test_OBJECTS = test.$(OBJEXT) +test_OBJECTS = $(am_test_OBJECTS) +test_DEPENDENCIES = libgslrng.la ../ieee-utils/libgslieeeutils.la \ + ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la \ + ../utils/libutils.la +AM_V_P = $(am__v_P_$(V)) +am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY)) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_$(V)) +am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_$(V)) +am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I. -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_$(V)) +am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_$(V)) +am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libgslrng_la_SOURCES) $(test_SOURCES) +DIST_SOURCES = $(libgslrng_la_SOURCES) $(test_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(pkgincludedir)" +HEADERS = $(noinst_HEADERS) $(pkginclude_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = .test +LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing aclocal-1.13 +AMTAR = $${TAR-tar} +AM_DEFAULT_VERBOSITY = 1 +AR = ar +AS = as +AUTOCONF = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing autoconf +AUTOHEADER = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing autoheader +AUTOMAKE = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing automake-1.13 +AWK = gawk +CC = gcc +CCDEPMODE = depmode=gcc3 +CFLAGS = -g -O2 +CPP = gcc -E +CPPFLAGS = +CYGPATH_W = echo +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +DLLTOOL = false +DSYMUTIL = +DUMPBIN = +ECHO_C = +ECHO_N = -n +ECHO_T = +EGREP = /usr/bin/grep -E +EXEEXT = +FGREP = /usr/bin/grep -F +GREP = /usr/bin/grep +GSLCBLAS_LDFLAGS = +GSL_CFLAGS = -I${prefix}/include +GSL_LDFLAGS = +GSL_LIBADD = +GSL_LIBM = -lm +GSL_LIBS = -L${exec_prefix}/lib -lgsl +GSL_LT_CBLAS_VERSION = 0:0:0 +GSL_LT_VERSION = 24:0:1 +GSL_MAJOR_VERSION = 2 +GSL_MINOR_VERSION = 5 +HAVE_AIX_IEEE_INTERFACE = +HAVE_DARWIN86_IEEE_INTERFACE = +HAVE_DARWIN_IEEE_INTERFACE = +HAVE_FREEBSD_IEEE_INTERFACE = +HAVE_GNUM68K_IEEE_INTERFACE = +HAVE_GNUPPC_IEEE_INTERFACE = +HAVE_GNUSPARC_IEEE_INTERFACE = +HAVE_GNUX86_IEEE_INTERFACE = +HAVE_HPUX11_IEEE_INTERFACE = +HAVE_HPUX_IEEE_INTERFACE = +HAVE_IRIX_IEEE_INTERFACE = +HAVE_NETBSD_IEEE_INTERFACE = +HAVE_OPENBSD_IEEE_INTERFACE = +HAVE_OS2EMX_IEEE_INTERFACE = +HAVE_SOLARIS_IEEE_INTERFACE = +HAVE_SUNOS4_IEEE_INTERFACE = +HAVE_TRU64_IEEE_INTERFACE = +INSTALL = /usr/bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = $(install_sh) -c -s +LD = /usr/bin/ld -m elf_x86_64 +LDFLAGS = +LIBM = -lm +LIBOBJS = +LIBS = -lm +LIBTOOL = $(SHELL) $(top_builddir)/libtool +LIPO = +LN_S = ln -s +LTLIBOBJS = +MAINT = # +MAKEINFO = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing makeinfo +MANIFEST_TOOL = : +MKDIR_P = /usr/bin/mkdir -p +NM = /usr/bin/nm -B +NMEDIT = +OBJDUMP = objdump +OBJEXT = o +OTOOL = +OTOOL64 = +PACKAGE = gsl +PACKAGE_BUGREPORT = +PACKAGE_NAME = gsl +PACKAGE_STRING = gsl 2.5 +PACKAGE_TARNAME = gsl +PACKAGE_URL = +PACKAGE_VERSION = 2.5 +PATH_SEPARATOR = : +RANLIB = ranlib +SED = /usr/bin/sed +SET_MAKE = +SHELL = /bin/sh +STRIP = strip +VERSION = 2.5 +abs_builddir = /home/groups/kipac/chto/package/gsl/gsl-2.5/rng +abs_srcdir = /home/groups/kipac/chto/package/gsl/gsl-2.5/rng +abs_top_builddir = /home/groups/kipac/chto/package/gsl/gsl-2.5 +abs_top_srcdir = /home/groups/kipac/chto/package/gsl/gsl-2.5 +ac_ct_AR = ar +ac_ct_CC = gcc +ac_ct_DUMPBIN = +am__include = include +am__leading_dot = . +am__quote = +am__tar = $${TAR-tar} chof - "$$tardir" +am__untar = $${TAR-tar} xf - +bindir = ${exec_prefix}/bin +build = x86_64-unknown-linux-gnu +build_alias = +build_cpu = x86_64 +build_os = linux-gnu +build_vendor = unknown +builddir = . +datadir = ${datarootdir} +datarootdir = ${prefix}/share +docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} +dvidir = ${docdir} +exec_prefix = ${prefix} +host = x86_64-unknown-linux-gnu +host_alias = +host_cpu = x86_64 +host_os = linux-gnu +host_vendor = unknown +htmldir = ${docdir} +includedir = ${prefix}/include +infodir = ${datarootdir}/info +install_sh = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/install-sh +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +localedir = ${datarootdir}/locale +localstatedir = ${prefix}/var +mandir = ${datarootdir}/man +mkdir_p = $(MKDIR_P) +oldincludedir = /usr/include +pdfdir = ${docdir} +prefix = /home/groups/kipac/chto/package/gsl/gsl_lib +program_transform_name = s,x,x, +psdir = ${docdir} +sbindir = ${exec_prefix}/sbin +sharedstatedir = ${prefix}/com +srcdir = . +sysconfdir = ${prefix}/etc +target_alias = +top_build_prefix = ../ +top_builddir = .. +top_srcdir = .. +noinst_LTLIBRARIES = libgslrng.la +pkginclude_HEADERS = gsl_rng.h +AM_CPPFLAGS = -I$(top_srcdir) +libgslrng_la_SOURCES = borosh13.c cmrg.c coveyou.c default.c file.c fishman18.c fishman20.c fishman2x.c gfsr4.c knuthran2.c knuthran.c knuthran2002.c lecuyer21.c minstd.c mrg.c mt.c r250.c ran0.c ran1.c ran2.c ran3.c rand48.c rand.c random.c randu.c ranf.c ranlux.c ranlxd.c ranlxs.c ranmar.c rng.c slatec.c taus.c taus113.c transputer.c tt.c types.c uni32.c uni.c vax.c waterman14.c zuf.c inline.c +CLEANFILES = test.dat +noinst_HEADERS = schrage.c +test_SOURCES = test.c +test_LDADD = libgslrng.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la +TESTS = $(check_PROGRAMS) +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu rng/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu rng/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: # $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): # $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libgslrng.la: $(libgslrng_la_OBJECTS) $(libgslrng_la_DEPENDENCIES) $(EXTRA_libgslrng_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(libgslrng_la_OBJECTS) $(libgslrng_la_LIBADD) $(LIBS) + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) $(EXTRA_test_DEPENDENCIES) + @rm -f test$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_OBJECTS) $(test_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +include ./$(DEPDIR)/borosh13.Plo +include ./$(DEPDIR)/cmrg.Plo +include ./$(DEPDIR)/coveyou.Plo +include ./$(DEPDIR)/default.Plo +include ./$(DEPDIR)/file.Plo +include ./$(DEPDIR)/fishman18.Plo +include ./$(DEPDIR)/fishman20.Plo +include ./$(DEPDIR)/fishman2x.Plo +include ./$(DEPDIR)/gfsr4.Plo +include ./$(DEPDIR)/inline.Plo +include ./$(DEPDIR)/knuthran.Plo +include ./$(DEPDIR)/knuthran2.Plo +include ./$(DEPDIR)/knuthran2002.Plo +include ./$(DEPDIR)/lecuyer21.Plo +include ./$(DEPDIR)/minstd.Plo +include ./$(DEPDIR)/mrg.Plo +include ./$(DEPDIR)/mt.Plo +include ./$(DEPDIR)/r250.Plo +include ./$(DEPDIR)/ran0.Plo +include ./$(DEPDIR)/ran1.Plo +include ./$(DEPDIR)/ran2.Plo +include ./$(DEPDIR)/ran3.Plo +include ./$(DEPDIR)/rand.Plo +include ./$(DEPDIR)/rand48.Plo +include ./$(DEPDIR)/random.Plo +include ./$(DEPDIR)/randu.Plo +include ./$(DEPDIR)/ranf.Plo +include ./$(DEPDIR)/ranlux.Plo +include ./$(DEPDIR)/ranlxd.Plo +include ./$(DEPDIR)/ranlxs.Plo +include ./$(DEPDIR)/ranmar.Plo +include ./$(DEPDIR)/rng.Plo +include ./$(DEPDIR)/slatec.Plo +include ./$(DEPDIR)/taus.Plo +include ./$(DEPDIR)/taus113.Plo +include ./$(DEPDIR)/test.Po +include ./$(DEPDIR)/transputer.Plo +include ./$(DEPDIR)/tt.Plo +include ./$(DEPDIR)/types.Plo +include ./$(DEPDIR)/uni.Plo +include ./$(DEPDIR)/uni32.Plo +include ./$(DEPDIR)/vax.Plo +include ./$(DEPDIR)/waterman14.Plo +include ./$(DEPDIR)/zuf.Plo + +.c.o: + $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# $(AM_V_CC)source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(COMPILE) -c $< + +.c.obj: + $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# $(AM_V_CC)source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: + $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +# $(AM_V_CC)source='$<' object='$@' libtool=yes \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-pkgincludeHEADERS: $(pkginclude_HEADERS) + @$(NORMAL_INSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \ + done + +uninstall-pkgincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + else \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_PROGRAMS) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +test.log: test$(EXEEXT) + @p='test$(EXEEXT)'; \ + b='test'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +#.test$(EXEEXT).log: +# @p='$<'; \ +# $(am__set_b); \ +# $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +# --log-file $$b.log --trs-file $$b.trs \ +# $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +# "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-am +all-am: Makefile $(LTLIBRARIES) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(pkgincludedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-pkgincludeHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-pkgincludeHEADERS + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES cscopelist-am ctags ctags-am distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-pkgincludeHEADERS \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + recheck tags tags-am uninstall uninstall-am \ + uninstall-pkgincludeHEADERS + + +# benchmark_SOURCES = benchmark.c +# benchmark_LDADD = libgslrng.la ../err/libgslerr.la ../utils/libutils.la +# rng_dump_SOURCES = rng-dump.c +# rng_dump_LDADD = libgslrng.la ../err/libgslerr.la ../utils/libutils.la + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gsl-2.5/rng/Makefile.am b/gsl-2.5/rng/Makefile.am new file mode 100644 index 00000000..b0c6b8cc --- /dev/null +++ b/gsl-2.5/rng/Makefile.am @@ -0,0 +1,22 @@ +noinst_LTLIBRARIES = libgslrng.la + +pkginclude_HEADERS = gsl_rng.h + +AM_CPPFLAGS = -I$(top_srcdir) + +libgslrng_la_SOURCES = borosh13.c cmrg.c coveyou.c default.c file.c fishman18.c fishman20.c fishman2x.c gfsr4.c knuthran2.c knuthran.c knuthran2002.c lecuyer21.c minstd.c mrg.c mt.c r250.c ran0.c ran1.c ran2.c ran3.c rand48.c rand.c random.c randu.c ranf.c ranlux.c ranlxd.c ranlxs.c ranmar.c rng.c slatec.c taus.c taus113.c transputer.c tt.c types.c uni32.c uni.c vax.c waterman14.c zuf.c inline.c + +CLEANFILES = test.dat + +noinst_HEADERS = schrage.c + +test_SOURCES = test.c +test_LDADD = libgslrng.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la + +TESTS = $(check_PROGRAMS) +check_PROGRAMS = test + +# benchmark_SOURCES = benchmark.c +# benchmark_LDADD = libgslrng.la ../err/libgslerr.la ../utils/libutils.la +# rng_dump_SOURCES = rng-dump.c +# rng_dump_LDADD = libgslrng.la ../err/libgslerr.la ../utils/libutils.la diff --git a/gsl-2.5/rng/Makefile.in b/gsl-2.5/rng/Makefile.in new file mode 100644 index 00000000..097533e5 --- /dev/null +++ b/gsl-2.5/rng/Makefile.in @@ -0,0 +1,1082 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + + +VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +check_PROGRAMS = test$(EXEEXT) +subdir = rng +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp \ + $(noinst_HEADERS) $(pkginclude_HEADERS) \ + $(top_srcdir)/test-driver ChangeLog TODO +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +libgslrng_la_LIBADD = +am_libgslrng_la_OBJECTS = borosh13.lo cmrg.lo coveyou.lo default.lo \ + file.lo fishman18.lo fishman20.lo fishman2x.lo gfsr4.lo \ + knuthran2.lo knuthran.lo knuthran2002.lo lecuyer21.lo \ + minstd.lo mrg.lo mt.lo r250.lo ran0.lo ran1.lo ran2.lo ran3.lo \ + rand48.lo rand.lo random.lo randu.lo ranf.lo ranlux.lo \ + ranlxd.lo ranlxs.lo ranmar.lo rng.lo slatec.lo taus.lo \ + taus113.lo transputer.lo tt.lo types.lo uni32.lo uni.lo vax.lo \ + waterman14.lo zuf.lo inline.lo +libgslrng_la_OBJECTS = $(am_libgslrng_la_OBJECTS) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +am_test_OBJECTS = test.$(OBJEXT) +test_OBJECTS = $(am_test_OBJECTS) +test_DEPENDENCIES = libgslrng.la ../ieee-utils/libgslieeeutils.la \ + ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la \ + ../utils/libutils.la +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libgslrng_la_SOURCES) $(test_SOURCES) +DIST_SOURCES = $(libgslrng_la_SOURCES) $(test_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(pkgincludedir)" +HEADERS = $(noinst_HEADERS) $(pkginclude_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = @EXEEXT@ .test +LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +GSLCBLAS_LDFLAGS = @GSLCBLAS_LDFLAGS@ +GSL_CFLAGS = @GSL_CFLAGS@ +GSL_LDFLAGS = @GSL_LDFLAGS@ +GSL_LIBADD = @GSL_LIBADD@ +GSL_LIBM = @GSL_LIBM@ +GSL_LIBS = @GSL_LIBS@ +GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ +GSL_LT_VERSION = @GSL_LT_VERSION@ +GSL_MAJOR_VERSION = @GSL_MAJOR_VERSION@ +GSL_MINOR_VERSION = @GSL_MINOR_VERSION@ +HAVE_AIX_IEEE_INTERFACE = @HAVE_AIX_IEEE_INTERFACE@ +HAVE_DARWIN86_IEEE_INTERFACE = @HAVE_DARWIN86_IEEE_INTERFACE@ +HAVE_DARWIN_IEEE_INTERFACE = @HAVE_DARWIN_IEEE_INTERFACE@ +HAVE_FREEBSD_IEEE_INTERFACE = @HAVE_FREEBSD_IEEE_INTERFACE@ +HAVE_GNUM68K_IEEE_INTERFACE = @HAVE_GNUM68K_IEEE_INTERFACE@ +HAVE_GNUPPC_IEEE_INTERFACE = @HAVE_GNUPPC_IEEE_INTERFACE@ +HAVE_GNUSPARC_IEEE_INTERFACE = @HAVE_GNUSPARC_IEEE_INTERFACE@ +HAVE_GNUX86_IEEE_INTERFACE = @HAVE_GNUX86_IEEE_INTERFACE@ +HAVE_HPUX11_IEEE_INTERFACE = @HAVE_HPUX11_IEEE_INTERFACE@ +HAVE_HPUX_IEEE_INTERFACE = @HAVE_HPUX_IEEE_INTERFACE@ +HAVE_IRIX_IEEE_INTERFACE = @HAVE_IRIX_IEEE_INTERFACE@ +HAVE_NETBSD_IEEE_INTERFACE = @HAVE_NETBSD_IEEE_INTERFACE@ +HAVE_OPENBSD_IEEE_INTERFACE = @HAVE_OPENBSD_IEEE_INTERFACE@ +HAVE_OS2EMX_IEEE_INTERFACE = @HAVE_OS2EMX_IEEE_INTERFACE@ +HAVE_SOLARIS_IEEE_INTERFACE = @HAVE_SOLARIS_IEEE_INTERFACE@ +HAVE_SUNOS4_IEEE_INTERFACE = @HAVE_SUNOS4_IEEE_INTERFACE@ +HAVE_TRU64_IEEE_INTERFACE = @HAVE_TRU64_IEEE_INTERFACE@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBM = @LIBM@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +noinst_LTLIBRARIES = libgslrng.la +pkginclude_HEADERS = gsl_rng.h +AM_CPPFLAGS = -I$(top_srcdir) +libgslrng_la_SOURCES = borosh13.c cmrg.c coveyou.c default.c file.c fishman18.c fishman20.c fishman2x.c gfsr4.c knuthran2.c knuthran.c knuthran2002.c lecuyer21.c minstd.c mrg.c mt.c r250.c ran0.c ran1.c ran2.c ran3.c rand48.c rand.c random.c randu.c ranf.c ranlux.c ranlxd.c ranlxs.c ranmar.c rng.c slatec.c taus.c taus113.c transputer.c tt.c types.c uni32.c uni.c vax.c waterman14.c zuf.c inline.c +CLEANFILES = test.dat +noinst_HEADERS = schrage.c +test_SOURCES = test.c +test_LDADD = libgslrng.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la +TESTS = $(check_PROGRAMS) +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu rng/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu rng/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libgslrng.la: $(libgslrng_la_OBJECTS) $(libgslrng_la_DEPENDENCIES) $(EXTRA_libgslrng_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(libgslrng_la_OBJECTS) $(libgslrng_la_LIBADD) $(LIBS) + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) $(EXTRA_test_DEPENDENCIES) + @rm -f test$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_OBJECTS) $(test_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/borosh13.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cmrg.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/coveyou.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/default.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/file.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fishman18.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fishman20.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fishman2x.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gfsr4.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/inline.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/knuthran.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/knuthran2.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/knuthran2002.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lecuyer21.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/minstd.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mrg.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mt.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/r250.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ran0.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ran1.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ran2.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ran3.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rand.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rand48.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/random.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/randu.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ranf.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ranlux.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ranlxd.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ranlxs.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ranmar.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rng.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/slatec.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/taus.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/taus113.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/transputer.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tt.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/types.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/uni.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/uni32.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vax.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/waterman14.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zuf.Plo@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-pkgincludeHEADERS: $(pkginclude_HEADERS) + @$(NORMAL_INSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \ + done + +uninstall-pkgincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + else \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_PROGRAMS) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +test.log: test$(EXEEXT) + @p='test$(EXEEXT)'; \ + b='test'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +@am__EXEEXT_TRUE@.test$(EXEEXT).log: +@am__EXEEXT_TRUE@ @p='$<'; \ +@am__EXEEXT_TRUE@ $(am__set_b); \ +@am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +@am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ +@am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +@am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-am +all-am: Makefile $(LTLIBRARIES) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(pkgincludedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-pkgincludeHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-pkgincludeHEADERS + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES cscopelist-am ctags ctags-am distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-pkgincludeHEADERS \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + recheck tags tags-am uninstall uninstall-am \ + uninstall-pkgincludeHEADERS + + +# benchmark_SOURCES = benchmark.c +# benchmark_LDADD = libgslrng.la ../err/libgslerr.la ../utils/libutils.la +# rng_dump_SOURCES = rng-dump.c +# rng_dump_LDADD = libgslrng.la ../err/libgslerr.la ../utils/libutils.la + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gsl-2.5/rng/TODO b/gsl-2.5/rng/TODO new file mode 100644 index 00000000..aeea95e8 --- /dev/null +++ b/gsl-2.5/rng/TODO @@ -0,0 +1,100 @@ +# -*- org -*- +#+CATEGORY: rng + +* gfsr: for consistency (Charles A. Wemple). Make this change in 2.0 + + 127a142 +> state->nd = i-1; +133,134c148,149 +< for (i=0; i<32; ++i) { +< int k=7+i*3; +--- +> for (i=0; i<32; i++) { +> int k=7*i+3; +141d155 +< state->nd = i; + + +* Sort out "const" in prototypes, it looks odd since there are consts +for many functions which modify the state. (Applies to both qrng and rng) + +* New 64 bit generators in "Tables of 64-bit Mersenne Twisters", +Takuji Nishimura, ACM Transactions on Modeling and Computer +Simulation, Volumen 10, No 4, October 2000, p 348--357 + +* Need to run tests over the space of seeds, in addition to serial +tests (DIEHARD) for the default seed. The congruences used for +seeding will give poor initial vectors for some seed values, e.g. 2^n. +Improve the seeding procedure by using a high-quality generator +(e.g. hash functions, md5 or sha) to generate the initial vectors. +Even if this is moderately expensive it is worthwhile since the +seeding is usually a one-off cost at program initialization, and the +results of all subsequent calls to the generator depend on it. The +GSFR4 generator is particularly likely to benefit from this procedure. + +* Add SWNS generator Phys.Rev.E 50 (2) p. 1607-1615 (1994), Phys.Rev.E +60 (6), p.7626-7628 (1999) + +* Add get_array type methods which can provide optimized versions of +each function (?). We should offer the possibility of eliminating +function call overhead -- there are various possible ways to implement +it. + +* Add ISAAC generator (??) + +* Add (A)RC4 and hash based random number generators MD5, SHA. This +should give crypto quality randomness, and guarantee different +sequences for each seed. Make the state (seed, count) where count +increments on each call of the generator. Implement count as a big +integer stored in separate unsigned integers so that the period is +sufficiently long (e.g. 2^64 or 2^96). The generator would return +HASH(seed, count) on each call. + +* Check that RANLXS will work on machines with non-standard width of +float/dbl (original has checks for DBL_MANT_DIG ..) + +* mention more clearly why not all Cokus used (or recheck MT pages for +improvements) + +* run the DIEHARD tests on all the generators, especially the ones we +are listing as "Simulation Quality" -- some of those are a bit old and +might fail one or two diehard tests. + +* Add NAG, missing, gave up! + CDC 48-bit missing + +* Check out the bug fix to mrand48 that was made in glibc2, pr757 + +* Check out the following paper, + + On the anomaly of ran1() in Monte Carlo pricing of financial + derivatives; Akira Tajima , Syoiti Ninomiya , and Shu Tezuka ; Winter + simulation , 1996, Page 360, from ACM + +* The following papers have been published, I think we refer to them +(or could do), + + Pierre L'Ecuyer, "Tables of Linear Congruential Generators of different + size and good lattice structure", Mathematics of Computation, Vol 68, + No 225, Jan 1999, p249-260 + + Pierre L'Ecuyer, "Tables of Maximally equidistributed combined LSFR + generators", ibid, p261-270 + +* Look at this paper: I. Vattulainen, "Framework for testing random numbers + in parallel calculations", Phys. Rev. E, 59, 6, June 1999, p7200 + +---------------------------------------------------------------------- +DONE + +x1. Improve the seeding for routines that use the LCG seed generator. +It can only generate 130,000 different initial states. We should +change it to provide 2^31 different initial states (this will also +prevent the high bits being zero). DONE - we now use a 32-bit +generator. + +x8. Get the macros from the faster MT19937 generator and use them. We +need to make MT be the fastest of the simulation quality generators if +it is the default. DONE. It didn't improve the speed on other +platforms, so I just used the tricks which also worked on the pentium +(e.g. changing mag[x&1] to x&1 ? mag[1] : mag[0]) diff --git a/gsl-2.5/rng/borosh13.c b/gsl-2.5/rng/borosh13.c new file mode 100644 index 00000000..02f4dce2 --- /dev/null +++ b/gsl-2.5/rng/borosh13.c @@ -0,0 +1,92 @@ +/* rng/borosh13.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 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* + * This generator is taken from + * + * Donald E. Knuth + * The Art of Computer Programming + * Volume 2 + * Third Edition + * Addison-Wesley + * Page 106-108 + * + * It is called "Borosh - Niederreiter" + * + * This implementation copyright (C) 2001 Carlo Perassi and + * (C) 2003 Heiko Bauke. + */ + +#include +#include +#include + +#define AA 1812433253UL +#define MM 0xffffffffUL /* 2 ^ 32 - 1 */ + +static inline unsigned long int ran_get (void *vstate); +static double ran_get_double (void *vstate); +static void ran_set (void *state, unsigned long int s); + +typedef struct +{ + unsigned long int x; +} +ran_state_t; + +static inline unsigned long int +ran_get (void *vstate) +{ + ran_state_t *state = (ran_state_t *) vstate; + + state->x = (AA * state->x) & MM; + + return state->x; +} + +static double +ran_get_double (void *vstate) +{ + ran_state_t *state = (ran_state_t *) vstate; + + return ran_get (state) / 4294967296.0; +} + +static void +ran_set (void *vstate, unsigned long int s) +{ + ran_state_t *state = (ran_state_t *) vstate; + + if (s == 0) + s = 1; /* default seed is 1 */ + + state->x = s & MM; + + return; +} + +static const gsl_rng_type ran_type = { + "borosh13", /* name */ + MM, /* RAND_MAX */ + 1, /* RAND_MIN */ + sizeof (ran_state_t), + &ran_set, + &ran_get, + &ran_get_double +}; + +const gsl_rng_type *gsl_rng_borosh13 = &ran_type; diff --git a/gsl-2.5/rng/borosh13.lo b/gsl-2.5/rng/borosh13.lo new file mode 100644 index 00000000..e73a04d3 --- /dev/null +++ b/gsl-2.5/rng/borosh13.lo @@ -0,0 +1,12 @@ +# borosh13.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/borosh13.o' + +# Name of the non-PIC object +non_pic_object='borosh13.o' + diff --git a/gsl-2.5/rng/cmrg.c b/gsl-2.5/rng/cmrg.c new file mode 100644 index 00000000..5137cd72 --- /dev/null +++ b/gsl-2.5/rng/cmrg.c @@ -0,0 +1,197 @@ +/* rng/cmrg.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 James Theiler, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include + +/* This is a combined multiple recursive generator. The sequence is, + + z_n = (x_n - y_n) mod m1 + + where the two underlying generators x and y are, + + x_n = (a_{1} x_{n-1} + a_{2} x_{n-2} + a_{3} x_{n-3}) mod m1 + y_n = (b_{1} y_{n-1} + b_{2} y_{n-2} + b_{3} y_{n-3}) mod m2 + + with coefficients a11 ... a23, + + a_{1} = 0, a_{2} = 63308, a_{3} = -183326 + b_{1} = 86098, b_{2} = 0, b_{3} = -539608 + + and moduli m1, m2, + + m1 = 2^31 - 1 = 2147483647 + m2 = 2^31 - 2000169 = 2145483479 + + We initialize the generator with + + x_1 = s_1 MOD m1, x_2 = s_2 MOD m1, x_3 = s_3 MOD m1 + y_1 = s_4 MOD m2, y_2 = s_5 MOD m2, y_3 = s_6 MOD m2 + + where s_n = (69069 * s_{n-1}) mod 2^32 and s_0 = s is the + user-supplied seed. + + NOTE: According to the paper the initial values for x_n must lie in + the range 0 <= x_n <= (m1 - 1) and the initial values for y_n must + lie in the range 0 <= y_n <= (m2 - 1), with at least one non-zero + value -- our seeding procedure satisfies these constraints. + + We then use 7 iterations of the generator to "warm up" the internal + state. + + The theoretical value of z_{10008} is 719452880. The subscript 10008 + means (1) seed the generator with s=1, (2) do the seven warm-up + iterations that are part of the seeding process, (3) then do 10000 + actual iterations. + + The period of this generator is about 2^205. + + From: P. L'Ecuyer, "Combined Multiple Recursive Random Number + Generators," Operations Research, 44, 5 (1996), 816--822. + + This is available on the net from L'Ecuyer's home page, + + http://www.iro.umontreal.ca/~lecuyer/myftp/papers/combmrg.ps + ftp://ftp.iro.umontreal.ca/pub/simulation/lecuyer/papers/combmrg.ps */ + +static inline unsigned long int cmrg_get (void *vstate); +static double cmrg_get_double (void *vstate); +static void cmrg_set (void *state, unsigned long int s); + +static const long int m1 = 2147483647, m2 = 2145483479; + +static const long int a2 = 63308, qa2 = 33921, ra2 = 12979; +static const long int a3 = -183326, qa3 = 11714, ra3 = 2883; +static const long int b1 = 86098, qb1 = 24919, rb1 = 7417; +static const long int b3 = -539608, qb3 = 3976, rb3 = 2071; + +typedef struct + { + long int x1, x2, x3; /* first component */ + long int y1, y2, y3; /* second component */ + } +cmrg_state_t; + +static inline unsigned long int +cmrg_get (void *vstate) +{ + cmrg_state_t *state = (cmrg_state_t *) vstate; + + /* Component 1 */ + + { + long int h3 = state->x3 / qa3; + long int p3 = -a3 * (state->x3 - h3 * qa3) - h3 * ra3; + + long int h2 = state->x2 / qa2; + long int p2 = a2 * (state->x2 - h2 * qa2) - h2 * ra2; + + if (p3 < 0) + p3 += m1; + if (p2 < 0) + p2 += m1; + + state->x3 = state->x2; + state->x2 = state->x1; + state->x1 = p2 - p3; + if (state->x1 < 0) + state->x1 += m1; + } + + /* Component 2 */ + + { + long int h3 = state->y3 / qb3; + long int p3 = -b3 * (state->y3 - h3 * qb3) - h3 * rb3; + + long int h1 = state->y1 / qb1; + long int p1 = b1 * (state->y1 - h1 * qb1) - h1 * rb1; + + if (p3 < 0) + p3 += m2; + if (p1 < 0) + p1 += m2; + + state->y3 = state->y2; + state->y2 = state->y1; + state->y1 = p1 - p3; + if (state->y1 < 0) + state->y1 += m2; + } + + if (state->x1 < state->y1) + return (state->x1 - state->y1 + m1); + else + return (state->x1 - state->y1); +} + +static double +cmrg_get_double (void *vstate) +{ + return cmrg_get (vstate) / 2147483647.0 ; +} + + +static void +cmrg_set (void *vstate, unsigned long int s) +{ + /* An entirely adhoc way of seeding! This does **not** come from + L'Ecuyer et al */ + + cmrg_state_t *state = (cmrg_state_t *) vstate; + + if (s == 0) + s = 1; /* default seed is 1 */ + +#define LCG(n) ((69069 * n) & 0xffffffffUL) + s = LCG (s); + state->x1 = s % m1; + s = LCG (s); + state->x2 = s % m1; + s = LCG (s); + state->x3 = s % m1; + + s = LCG (s); + state->y1 = s % m2; + s = LCG (s); + state->y2 = s % m2; + s = LCG (s); + state->y3 = s % m2; + + /* "warm it up" */ + cmrg_get (state); + cmrg_get (state); + cmrg_get (state); + cmrg_get (state); + cmrg_get (state); + cmrg_get (state); + cmrg_get (state); +} + +static const gsl_rng_type cmrg_type = +{"cmrg", /* name */ + 2147483646, /* RAND_MAX */ + 0, /* RAND_MIN */ + sizeof (cmrg_state_t), + &cmrg_set, + &cmrg_get, + &cmrg_get_double}; + +const gsl_rng_type *gsl_rng_cmrg = &cmrg_type; diff --git a/gsl-2.5/rng/cmrg.lo b/gsl-2.5/rng/cmrg.lo new file mode 100644 index 00000000..3553e10a --- /dev/null +++ b/gsl-2.5/rng/cmrg.lo @@ -0,0 +1,12 @@ +# cmrg.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/cmrg.o' + +# Name of the non-PIC object +non_pic_object='cmrg.o' + diff --git a/gsl-2.5/rng/coveyou.c b/gsl-2.5/rng/coveyou.c new file mode 100644 index 00000000..2f73aee1 --- /dev/null +++ b/gsl-2.5/rng/coveyou.c @@ -0,0 +1,92 @@ +/* rng/coveyou.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 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* + * This generator is taken from + * + * Donald E. Knuth + * The Art of Computer Programming + * Volume 2 + * Third Edition + * Addison-Wesley + * Section 3.2.2 + * + * This implementation copyright (C) 2001 Carlo Perassi + * and (C) 2003 Heiko Bauke. + * Carlo Perassi reorganized the code to use the rng framework of GSL. + */ + +#include +#include +#include + +#define MM 0xffffffffUL /* 2 ^ 32 - 1 */ + +static inline unsigned long int ran_get (void *vstate); +static double ran_get_double (void *vstate); +static void ran_set (void *state, unsigned long int s); + +typedef struct +{ + unsigned long int x; +} +ran_state_t; + +static inline unsigned long int +ran_get (void *vstate) +{ + ran_state_t *state = (ran_state_t *) vstate; + + state->x = (state->x * (state->x + 1)) & MM; + + return state->x; +} + +static double +ran_get_double (void *vstate) +{ + ran_state_t *state = (ran_state_t *) vstate; + + return ran_get (state) / 4294967296.0; +} + +static void +ran_set (void *vstate, unsigned long int s) +{ + ran_state_t *state = (ran_state_t *) vstate; + + unsigned long int diff = ((s % 4UL) - 2UL) % MM; + + if (diff) + state->x = (s - diff) & MM; + else + state->x = s & MM; + + return; +} + +static const gsl_rng_type ran_type = { + "coveyou", /* name */ + MM-1, /* RAND_MAX */ + 2, /* RAND_MIN */ + sizeof (ran_state_t), + &ran_set, + &ran_get, + &ran_get_double +}; + +const gsl_rng_type *gsl_rng_coveyou = &ran_type; diff --git a/gsl-2.5/rng/coveyou.lo b/gsl-2.5/rng/coveyou.lo new file mode 100644 index 00000000..ef1c7a9b --- /dev/null +++ b/gsl-2.5/rng/coveyou.lo @@ -0,0 +1,12 @@ +# coveyou.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/coveyou.o' + +# Name of the non-PIC object +non_pic_object='coveyou.o' + diff --git a/gsl-2.5/rng/default.c b/gsl-2.5/rng/default.c new file mode 100644 index 00000000..4b0f80d8 --- /dev/null +++ b/gsl-2.5/rng/default.c @@ -0,0 +1,93 @@ +/* rng/default.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 James Theiler, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include + +/* The initial defaults are defined in the file mt.c, so we can get + access to the static parts of the default generator. */ + +const gsl_rng_type * +gsl_rng_env_setup (void) +{ + unsigned long int seed = 0; + const char *p = getenv ("GSL_RNG_TYPE"); + + if (p) + { + const gsl_rng_type **t, **t0 = gsl_rng_types_setup (); + + gsl_rng_default = 0; + + /* check GSL_RNG_TYPE against the names of all the generators */ + + for (t = t0; *t != 0; t++) + { + if (strcmp (p, (*t)->name) == 0) + { + gsl_rng_default = *t; + break; + } + } + + if (gsl_rng_default == 0) + { + int i = 0; + + fprintf (stderr, "GSL_RNG_TYPE=%s not recognized\n", p); + fprintf (stderr, "Valid generator types are:\n"); + + for (t = t0; *t != 0; t++) + { + fprintf (stderr, " %18s", (*t)->name); + + if ((++i) % 4 == 0) + { + fputc ('\n', stderr); + } + } + + fputc ('\n', stderr); + + GSL_ERROR_VAL ("unknown generator", GSL_EINVAL, 0); + } + + fprintf (stderr, "GSL_RNG_TYPE=%s\n", gsl_rng_default->name); + } + else + { + gsl_rng_default = gsl_rng_mt19937; + } + + p = getenv ("GSL_RNG_SEED"); + + if (p) + { + seed = strtoul (p, 0, 0); + fprintf (stderr, "GSL_RNG_SEED=%lu\n", seed); + }; + + gsl_rng_default_seed = seed; + + return gsl_rng_default; +} diff --git a/gsl-2.5/rng/default.lo b/gsl-2.5/rng/default.lo new file mode 100644 index 00000000..8a03e246 --- /dev/null +++ b/gsl-2.5/rng/default.lo @@ -0,0 +1,12 @@ +# default.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/default.o' + +# Name of the non-PIC object +non_pic_object='default.o' + diff --git a/gsl-2.5/rng/file.c b/gsl-2.5/rng/file.c new file mode 100644 index 00000000..a0b86567 --- /dev/null +++ b/gsl-2.5/rng/file.c @@ -0,0 +1,57 @@ +/* rng/file.c + * + * Copyright (C) 2003 Olaf Lenz + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include + +int +gsl_rng_fread (FILE * stream, gsl_rng * r) +{ + size_t n = r->type->size ; + + char * state = (char *)r->state; + + size_t items = fread (state, 1, n, stream); + + if (items != n) + { + GSL_ERROR ("fread failed", GSL_EFAILED); + } + + return GSL_SUCCESS; +} + +int +gsl_rng_fwrite (FILE * stream, const gsl_rng * r) +{ + size_t n = r->type->size ; + + char * state = (char *)r->state; + + size_t items = fwrite (state, 1, n, stream); + + if (items != n) + { + GSL_ERROR ("fwrite failed", GSL_EFAILED); + } + + return GSL_SUCCESS; +} diff --git a/gsl-2.5/rng/file.lo b/gsl-2.5/rng/file.lo new file mode 100644 index 00000000..1443af7c --- /dev/null +++ b/gsl-2.5/rng/file.lo @@ -0,0 +1,12 @@ +# file.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/file.o' + +# Name of the non-PIC object +non_pic_object='file.o' + diff --git a/gsl-2.5/rng/fishman18.c b/gsl-2.5/rng/fishman18.c new file mode 100644 index 00000000..42ef3df2 --- /dev/null +++ b/gsl-2.5/rng/fishman18.c @@ -0,0 +1,95 @@ +/* rng/fishman18.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 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* + * This generator is taken from + * + * Donald E. Knuth + * The Art of Computer Programming + * Volume 2 + * Third Edition + * Addison-Wesley + * Page 106-108 + * + * It is called "Fishman - Moore III". + * + * This implementation copyright (C) 2001 Carlo Perassi + * and (C) 2003 Heiko Bauke. + */ + +#include +#include +#include + +#include "schrage.c" + +#define AA 62089911UL +#define MM 0x7fffffffUL /* 2 ^ 31 - 1 */ +#define CEIL_SQRT_MM 46341UL /* ceil(sqrt(2 ^ 31 - 1)) */ + +static inline unsigned long int ran_get (void *vstate); +static double ran_get_double (void *vstate); +static void ran_set (void *state, unsigned long int s); + +typedef struct +{ + unsigned long int x; +} +ran_state_t; + +static inline unsigned long int +ran_get (void *vstate) +{ + ran_state_t *state = (ran_state_t *) vstate; + + state->x = schrage_mult (AA, state->x, MM, CEIL_SQRT_MM); + + return state->x; +} + +static double +ran_get_double (void *vstate) +{ + ran_state_t *state = (ran_state_t *) vstate; + + return ran_get (state) / 2147483647.0; +} + +static void +ran_set (void *vstate, unsigned long int s) +{ + ran_state_t *state = (ran_state_t *) vstate; + + if ((s % MM) == 0) + s = 1; /* default seed is 1 */ + + state->x = s % MM; + + return; +} + +static const gsl_rng_type ran_type = { + "fishman18", /* name */ + MM - 1, /* RAND_MAX */ + 1, /* RAND_MIN */ + sizeof (ran_state_t), + &ran_set, + &ran_get, + &ran_get_double +}; + +const gsl_rng_type *gsl_rng_fishman18 = &ran_type; diff --git a/gsl-2.5/rng/fishman18.lo b/gsl-2.5/rng/fishman18.lo new file mode 100644 index 00000000..67977687 --- /dev/null +++ b/gsl-2.5/rng/fishman18.lo @@ -0,0 +1,12 @@ +# fishman18.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/fishman18.o' + +# Name of the non-PIC object +non_pic_object='fishman18.o' + diff --git a/gsl-2.5/rng/fishman20.c b/gsl-2.5/rng/fishman20.c new file mode 100644 index 00000000..025bec32 --- /dev/null +++ b/gsl-2.5/rng/fishman20.c @@ -0,0 +1,103 @@ +/* rng/fishman20.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 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* + * This generator is taken from + * + * Donald E. Knuth + * The Art of Computer Programming + * Volume 2 + * Third Edition + * Addison-Wesley + * Page 108 + * + * It is called "Fishman" + * + * This implementation copyright (C) 2001 Carlo Perassi + * and (C) 2003 Heiko Bauke. + */ + +#include +#include +#include + +static inline unsigned long int ran_get (void *vstate); +static double ran_get_double (void *vstate); +static void ran_set (void *state, unsigned long int s); + +static const long int m = 2147483647, a = 48271, q = 44488, r = 3399; + +typedef struct +{ + unsigned long int x; +} +ran_state_t; + +static inline unsigned long int +ran_get (void *vstate) +{ + ran_state_t *state = (ran_state_t *) vstate; + + const unsigned long int x = state->x; + + const long int h = x / q; + const long int t = a * (x - h * q) - h * r; + + if (t < 0) + { + state->x = t + m; + } + else + { + state->x = t; + } + + return state->x; +} + +static double +ran_get_double (void *vstate) +{ + ran_state_t *state = (ran_state_t *) vstate; + + return ran_get (state) / 2147483647.0; +} + +static void +ran_set (void *vstate, unsigned long int s) +{ + ran_state_t *state = (ran_state_t *) vstate; + + if ((s%m) == 0) + s = 1; /* default seed is 1 */ + + state->x = s & m; + + return; +} + +static const gsl_rng_type ran_type = { + "fishman20", /* name */ + 2147483646, /* RAND_MAX */ + 1, /* RAND_MIN */ + sizeof (ran_state_t), + &ran_set, + &ran_get, + &ran_get_double +}; + +const gsl_rng_type *gsl_rng_fishman20 = &ran_type; diff --git a/gsl-2.5/rng/fishman20.lo b/gsl-2.5/rng/fishman20.lo new file mode 100644 index 00000000..a9530853 --- /dev/null +++ b/gsl-2.5/rng/fishman20.lo @@ -0,0 +1,12 @@ +# fishman20.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/fishman20.o' + +# Name of the non-PIC object +non_pic_object='fishman20.o' + diff --git a/gsl-2.5/rng/fishman2x.c b/gsl-2.5/rng/fishman2x.c new file mode 100644 index 00000000..fb3c97c2 --- /dev/null +++ b/gsl-2.5/rng/fishman2x.c @@ -0,0 +1,121 @@ +/* rng/fishman2x.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 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* + * This generator is taken from + * + * Donald E. Knuth + * The Art of Computer Programming + * Volume 2 + * Third Edition + * Addison-Wesley + * Page 108 + * + * It is called "Fishman - L'Ecuyer" + * + * This implementation copyright (C) 2001 Carlo Perassi + * and (C) 2003 Heiko Bauke. + */ + +#include +#include +#include + +/* Fishman */ +#define AAA_F 48271UL +#define MMM_F 0x7fffffffUL /* 2 ^ 31 - 1 */ +#define QQQ_F 44488UL +#define RRR_F 3399UL + +/* L'Ecuyer */ +#define AAA_L 40692UL +#define MMM_L 0x7fffff07UL /* 2 ^ 31 - 249 */ +#define QQQ_L 52774UL +#define RRR_L 3791UL + +static inline unsigned long int ran_get (void *vstate); +static double ran_get_double (void *vstate); +static void ran_set (void *state, unsigned long int s); + +typedef struct +{ + unsigned long int x; + unsigned long int y; + unsigned long int z; +} +ran_state_t; + +static inline unsigned long int +ran_get (void *vstate) +{ + ran_state_t *state = (ran_state_t *) vstate; + + long int y, r; + + r = RRR_F * (state->x / QQQ_F); + y = AAA_F * (state->x % QQQ_F) - r; + if (y < 0) + y += MMM_F; + state->x = y; + + r = RRR_L * (state->y / QQQ_L); + y = AAA_L * (state->y % QQQ_L) - r; + if (y < 0) + y += MMM_L; + state->y = y; + + state->z = (state->x > state->y) ? (state->x - state->y) : + MMM_F + state->x - state->y; + + return state->z; +} + +static double +ran_get_double (void *vstate) +{ + ran_state_t *state = (ran_state_t *) vstate; + + return ran_get (state) / 2147483647.0; +} + +static void +ran_set (void *vstate, unsigned long int s) +{ + ran_state_t *state = (ran_state_t *) vstate; + + if ((s % MMM_F) == 0 || (s % MMM_L) == 0) + s = 1; /* default seed is 1 */ + + state->x = s % MMM_F; + state->y = s % MMM_L; + state->z = (state->x > state->y) ? (state->x - state->y) : + MMM_F + state->x - state->y; + + return; +} + +static const gsl_rng_type ran_type = { + "fishman2x", /* name */ + MMM_F - 1, /* RAND_MAX */ + 0, /* RAND_MIN */ + sizeof (ran_state_t), + &ran_set, + &ran_get, + &ran_get_double +}; + +const gsl_rng_type *gsl_rng_fishman2x = &ran_type; diff --git a/gsl-2.5/rng/fishman2x.lo b/gsl-2.5/rng/fishman2x.lo new file mode 100644 index 00000000..c4bc372a --- /dev/null +++ b/gsl-2.5/rng/fishman2x.lo @@ -0,0 +1,12 @@ +# fishman2x.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/fishman2x.o' + +# Name of the non-PIC object +non_pic_object='fishman2x.o' + diff --git a/gsl-2.5/rng/gfsr4.c b/gsl-2.5/rng/gfsr4.c new file mode 100644 index 00000000..e5bf88d7 --- /dev/null +++ b/gsl-2.5/rng/gfsr4.c @@ -0,0 +1,165 @@ +/* This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 3 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. You should have received + a copy of the GNU General Public License along with this library; if + not, write to the Free Software Foundation, Inc., 51 Franklin Street, + Fifth Floor, Boston, MA 02110-1301, USA. + + From Robert M. Ziff, "Four-tap shift-register-sequence + random-number generators," Computers in Physics 12(4), Jul/Aug + 1998, pp 385-392. A generalized feedback shift-register (GFSR) + is basically an xor-sum of particular past lagged values. A + four-tap register looks like: + ra[nd] = ra[nd-A] ^ ra[nd-B] ^ ra[nd-C] ^ ra[nd-D] + + Ziff notes that "it is now widely known" that two-tap registers + have serious flaws, the most obvious one being the three-point + correlation that comes from the defn of the generator. Nice + mathematical properties can be derived for GFSR's, and numerics + bears out the claim that 4-tap GFSR's with appropriately chosen + offsets are as random as can be measured, using the author's test. + + This implementation uses the values suggested the the author's + example on p392, but altered to fit the GSL framework. The "state" + is 2^14 longs, or 64Kbytes; 2^14 is the smallest power of two that + is larger than D, the largest offset. We really only need a state + with the last D values, but by going to a power of two, we can do a + masking operation instead of a modulo, and this is presumably + faster, though I haven't actually tried it. The article actually + suggested a short/fast hack: + + #define RandomInteger (++nd, ra[nd&M]=ra[(nd-A)&M]\ + ^ra[(nd-B)&M]^ra[(nd-C)&M]^ra[(nd-D)&M]) + + so that (as long as you've defined nd,ra[M+1]), then you ca do things + like: 'if (RandomInteger < p) {...}'. + + Note that n&M varies from 0 to M, *including* M, so that the + array has to be of size M+1. Since M+1 is a power of two, n&M + is a potentially quicker implementation of the equivalent n%(M+1). + + This implementation copyright (C) 1998 James Theiler, based on + the example mt.c in the GSL, as implemented by Brian Gough. +*/ + +#include +#include +#include + +static inline unsigned long int gfsr4_get (void *vstate); +static double gfsr4_get_double (void *vstate); +static void gfsr4_set (void *state, unsigned long int s); + +/* Magic numbers */ +#define A 471 +#define B 1586 +#define C 6988 +#define D 9689 +#define M 16383 /* = 2^14-1 */ +/* #define M 0x0003fff */ + +typedef struct + { + int nd; + unsigned long ra[M+1]; + } +gfsr4_state_t; + +static inline unsigned long +gfsr4_get (void *vstate) +{ + gfsr4_state_t *state = (gfsr4_state_t *) vstate; + + state->nd = ((state->nd)+1)&M; + return state->ra[(state->nd)] = + state->ra[((state->nd)+(M+1-A))&M]^ + state->ra[((state->nd)+(M+1-B))&M]^ + state->ra[((state->nd)+(M+1-C))&M]^ + state->ra[((state->nd)+(M+1-D))&M]; + +} + +static double +gfsr4_get_double (void * vstate) +{ + return gfsr4_get (vstate) / 4294967296.0 ; +} + +static void +gfsr4_set (void *vstate, unsigned long int s) +{ + gfsr4_state_t *state = (gfsr4_state_t *) vstate; + int i, j; + /* Masks for turning on the diagonal bit and turning off the + leftmost bits */ + unsigned long int msb = 0x80000000UL; + unsigned long int mask = 0xffffffffUL; + + if (s == 0) + s = 4357; /* the default seed is 4357 */ + + /* We use the congruence s_{n+1} = (69069*s_n) mod 2^32 to + initialize the state. This works because ANSI-C unsigned long + integer arithmetic is automatically modulo 2^32 (or a higher + power of two), so we can safely ignore overflow. */ + +#define LCG(n) ((69069 * n) & 0xffffffffUL) + + /* Brian Gough suggests this to avoid low-order bit correlations */ + for (i = 0; i <= M; i++) + { + unsigned long t = 0 ; + unsigned long bit = msb ; + for (j = 0; j < 32; j++) + { + s = LCG(s) ; + if (s & msb) + t |= bit ; + bit >>= 1 ; + } + state->ra[i] = t ; + } + + /* Perform the "orthogonalization" of the matrix */ + /* Based on the orthogonalization used in r250, as suggested initially + * by Kirkpatrick and Stoll, and pointed out to me by Brian Gough + */ + + /* BJG: note that this orthogonalisation doesn't have any effect + here because the the initial 6695 elements do not participate in + the calculation. For practical purposes this orthogonalisation + is somewhat irrelevant, because the probability of the original + sequence being degenerate should be exponentially small. */ + + for (i=0; i<32; ++i) { + int k=7+i*3; + state->ra[k] &= mask; /* Turn off bits left of the diagonal */ + state->ra[k] |= msb; /* Turn on the diagonal bit */ + mask >>= 1; + msb >>= 1; + } + + state->nd = i; +} + +static const gsl_rng_type gfsr4_type = +{"gfsr4", /* name */ + 0xffffffffUL, /* RAND_MAX */ + 0, /* RAND_MIN */ + sizeof (gfsr4_state_t), + &gfsr4_set, + &gfsr4_get, + &gfsr4_get_double}; + +const gsl_rng_type *gsl_rng_gfsr4 = &gfsr4_type; + + + + + diff --git a/gsl-2.5/rng/gfsr4.lo b/gsl-2.5/rng/gfsr4.lo new file mode 100644 index 00000000..dd080109 --- /dev/null +++ b/gsl-2.5/rng/gfsr4.lo @@ -0,0 +1,12 @@ +# gfsr4.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/gfsr4.o' + +# Name of the non-PIC object +non_pic_object='gfsr4.o' + diff --git a/gsl-2.5/rng/gsl_rng.h b/gsl-2.5/rng/gsl_rng.h new file mode 100644 index 00000000..4ec55911 --- /dev/null +++ b/gsl-2.5/rng/gsl_rng.h @@ -0,0 +1,217 @@ +/* rng/gsl_rng.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2004, 2007 James Theiler, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_RNG_H__ +#define __GSL_RNG_H__ +#include +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +typedef struct + { + const char *name; + unsigned long int max; + unsigned long int min; + size_t size; + void (*set) (void *state, unsigned long int seed); + unsigned long int (*get) (void *state); + double (*get_double) (void *state); + } +gsl_rng_type; + +typedef struct + { + const gsl_rng_type * type; + void *state; + } +gsl_rng; + + +/* These structs also need to appear in default.c so you can select + them via the environment variable GSL_RNG_TYPE */ + +GSL_VAR const gsl_rng_type *gsl_rng_borosh13; +GSL_VAR const gsl_rng_type *gsl_rng_coveyou; +GSL_VAR const gsl_rng_type *gsl_rng_cmrg; +GSL_VAR const gsl_rng_type *gsl_rng_fishman18; +GSL_VAR const gsl_rng_type *gsl_rng_fishman20; +GSL_VAR const gsl_rng_type *gsl_rng_fishman2x; +GSL_VAR const gsl_rng_type *gsl_rng_gfsr4; +GSL_VAR const gsl_rng_type *gsl_rng_knuthran; +GSL_VAR const gsl_rng_type *gsl_rng_knuthran2; +GSL_VAR const gsl_rng_type *gsl_rng_knuthran2002; +GSL_VAR const gsl_rng_type *gsl_rng_lecuyer21; +GSL_VAR const gsl_rng_type *gsl_rng_minstd; +GSL_VAR const gsl_rng_type *gsl_rng_mrg; +GSL_VAR const gsl_rng_type *gsl_rng_mt19937; +GSL_VAR const gsl_rng_type *gsl_rng_mt19937_1999; +GSL_VAR const gsl_rng_type *gsl_rng_mt19937_1998; +GSL_VAR const gsl_rng_type *gsl_rng_r250; +GSL_VAR const gsl_rng_type *gsl_rng_ran0; +GSL_VAR const gsl_rng_type *gsl_rng_ran1; +GSL_VAR const gsl_rng_type *gsl_rng_ran2; +GSL_VAR const gsl_rng_type *gsl_rng_ran3; +GSL_VAR const gsl_rng_type *gsl_rng_rand; +GSL_VAR const gsl_rng_type *gsl_rng_rand48; +GSL_VAR const gsl_rng_type *gsl_rng_random128_bsd; +GSL_VAR const gsl_rng_type *gsl_rng_random128_glibc2; +GSL_VAR const gsl_rng_type *gsl_rng_random128_libc5; +GSL_VAR const gsl_rng_type *gsl_rng_random256_bsd; +GSL_VAR const gsl_rng_type *gsl_rng_random256_glibc2; +GSL_VAR const gsl_rng_type *gsl_rng_random256_libc5; +GSL_VAR const gsl_rng_type *gsl_rng_random32_bsd; +GSL_VAR const gsl_rng_type *gsl_rng_random32_glibc2; +GSL_VAR const gsl_rng_type *gsl_rng_random32_libc5; +GSL_VAR const gsl_rng_type *gsl_rng_random64_bsd; +GSL_VAR const gsl_rng_type *gsl_rng_random64_glibc2; +GSL_VAR const gsl_rng_type *gsl_rng_random64_libc5; +GSL_VAR const gsl_rng_type *gsl_rng_random8_bsd; +GSL_VAR const gsl_rng_type *gsl_rng_random8_glibc2; +GSL_VAR const gsl_rng_type *gsl_rng_random8_libc5; +GSL_VAR const gsl_rng_type *gsl_rng_random_bsd; +GSL_VAR const gsl_rng_type *gsl_rng_random_glibc2; +GSL_VAR const gsl_rng_type *gsl_rng_random_libc5; +GSL_VAR const gsl_rng_type *gsl_rng_randu; +GSL_VAR const gsl_rng_type *gsl_rng_ranf; +GSL_VAR const gsl_rng_type *gsl_rng_ranlux; +GSL_VAR const gsl_rng_type *gsl_rng_ranlux389; +GSL_VAR const gsl_rng_type *gsl_rng_ranlxd1; +GSL_VAR const gsl_rng_type *gsl_rng_ranlxd2; +GSL_VAR const gsl_rng_type *gsl_rng_ranlxs0; +GSL_VAR const gsl_rng_type *gsl_rng_ranlxs1; +GSL_VAR const gsl_rng_type *gsl_rng_ranlxs2; +GSL_VAR const gsl_rng_type *gsl_rng_ranmar; +GSL_VAR const gsl_rng_type *gsl_rng_slatec; +GSL_VAR const gsl_rng_type *gsl_rng_taus; +GSL_VAR const gsl_rng_type *gsl_rng_taus2; +GSL_VAR const gsl_rng_type *gsl_rng_taus113; +GSL_VAR const gsl_rng_type *gsl_rng_transputer; +GSL_VAR const gsl_rng_type *gsl_rng_tt800; +GSL_VAR const gsl_rng_type *gsl_rng_uni; +GSL_VAR const gsl_rng_type *gsl_rng_uni32; +GSL_VAR const gsl_rng_type *gsl_rng_vax; +GSL_VAR const gsl_rng_type *gsl_rng_waterman14; +GSL_VAR const gsl_rng_type *gsl_rng_zuf; + +const gsl_rng_type ** gsl_rng_types_setup(void); + +GSL_VAR const gsl_rng_type *gsl_rng_default; +GSL_VAR unsigned long int gsl_rng_default_seed; + +gsl_rng *gsl_rng_alloc (const gsl_rng_type * T); +int gsl_rng_memcpy (gsl_rng * dest, const gsl_rng * src); +gsl_rng *gsl_rng_clone (const gsl_rng * r); + +void gsl_rng_free (gsl_rng * r); + +void gsl_rng_set (const gsl_rng * r, unsigned long int seed); +unsigned long int gsl_rng_max (const gsl_rng * r); +unsigned long int gsl_rng_min (const gsl_rng * r); +const char *gsl_rng_name (const gsl_rng * r); + +int gsl_rng_fread (FILE * stream, gsl_rng * r); +int gsl_rng_fwrite (FILE * stream, const gsl_rng * r); + +size_t gsl_rng_size (const gsl_rng * r); +void * gsl_rng_state (const gsl_rng * r); + +void gsl_rng_print_state (const gsl_rng * r); + +const gsl_rng_type * gsl_rng_env_setup (void); + +INLINE_DECL unsigned long int gsl_rng_get (const gsl_rng * r); +INLINE_DECL double gsl_rng_uniform (const gsl_rng * r); +INLINE_DECL double gsl_rng_uniform_pos (const gsl_rng * r); +INLINE_DECL unsigned long int gsl_rng_uniform_int (const gsl_rng * r, unsigned long int n); + +#ifdef HAVE_INLINE + +INLINE_FUN unsigned long int +gsl_rng_get (const gsl_rng * r) +{ + return (r->type->get) (r->state); +} + +INLINE_FUN double +gsl_rng_uniform (const gsl_rng * r) +{ + return (r->type->get_double) (r->state); +} + +INLINE_FUN double +gsl_rng_uniform_pos (const gsl_rng * r) +{ + double x ; + do + { + x = (r->type->get_double) (r->state) ; + } + while (x == 0) ; + + return x ; +} + +/* Note: to avoid integer overflow in (range+1) we work with scale = + range/n = (max-min)/n rather than scale=(max-min+1)/n, this reduces + efficiency slightly but avoids having to check for the out of range + value. Note that range is typically O(2^32) so the addition of 1 + is negligible in most usage. */ + +INLINE_FUN unsigned long int +gsl_rng_uniform_int (const gsl_rng * r, unsigned long int n) +{ + unsigned long int offset = r->type->min; + unsigned long int range = r->type->max - offset; + unsigned long int scale; + unsigned long int k; + + if (n > range || n == 0) + { + GSL_ERROR_VAL ("invalid n, either 0 or exceeds maximum value of generator", + GSL_EINVAL, 0) ; + } + + scale = range / n; + + do + { + k = (((r->type->get) (r->state)) - offset) / scale; + } + while (k >= n); + + return k; +} +#endif /* HAVE_INLINE */ + +__END_DECLS + +#endif /* __GSL_RNG_H__ */ diff --git a/gsl-2.5/rng/inline.c b/gsl-2.5/rng/inline.c new file mode 100644 index 00000000..56bbf907 --- /dev/null +++ b/gsl-2.5/rng/inline.c @@ -0,0 +1,30 @@ +/* rng/inline.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 James Theiler, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include + +/* Compile all the inline functions */ + +#define COMPILE_INLINE_STATIC +#include "build.h" +#include diff --git a/gsl-2.5/rng/inline.lo b/gsl-2.5/rng/inline.lo new file mode 100644 index 00000000..c5763370 --- /dev/null +++ b/gsl-2.5/rng/inline.lo @@ -0,0 +1,12 @@ +# inline.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/inline.o' + +# Name of the non-PIC object +non_pic_object='inline.o' + diff --git a/gsl-2.5/rng/knuthran.c b/gsl-2.5/rng/knuthran.c new file mode 100644 index 00000000..c51fc095 --- /dev/null +++ b/gsl-2.5/rng/knuthran.c @@ -0,0 +1,177 @@ +/* rng/knuthran.c + * + * Copyright (C) 2001, 2007 Brian Gough, Carlo Perassi + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* + * This generator is taken from + * + * Donald E. Knuth + * The Art of Computer Programming + * Volume 2 + * Third Edition + * Addison-Wesley + * Section 3.6 + * + * The comments are taken from the book + * Our comments are signed + */ + +#include +#include +#include + +#define BUFLEN 2009 /* [Brian]: length of the buffer aa[] */ +#define KK 100 /* the long lag */ +#define LL 37 /* the short lag */ +#define MM (1L << 30) /* the modulus */ +#define TT 70 /* guaranteed separation between streams */ + +#define evenize(x) ((x) & (MM - 2)) /* make x even */ +#define is_odd(x) ((x) & 1) /* the units bit of x */ +#define mod_diff(x, y) (((x) - (y)) & (MM - 1)) /* (x - y) mod MM */ + +static inline void ran_array (unsigned long int aa[], unsigned int n, + unsigned long int ran_x[]); +static inline unsigned long int ran_get (void *vstate); +static double ran_get_double (void *vstate); +static void ran_set (void *state, unsigned long int s); + +typedef struct +{ + unsigned int i; + unsigned long int aa[BUFLEN]; /* [Carlo]: I can't pass n to ran_array like + Knuth does */ + unsigned long int ran_x[KK]; /* the generator state */ +} +ran_state_t; + +static inline void +ran_array (unsigned long int aa[], unsigned int n, unsigned long int ran_x[]) +{ + unsigned int i; + unsigned int j; + + for (j = 0; j < KK; j++) + aa[j] = ran_x[j]; + + for (; j < n; j++) + aa[j] = mod_diff (aa[j - KK], aa[j - LL]); + + for (i = 0; i < LL; i++, j++) + ran_x[i] = mod_diff (aa[j - KK], aa[j - LL]); + + for (; i < KK; i++, j++) + ran_x[i] = mod_diff (aa[j - KK], ran_x[i - LL]); +} + +static inline unsigned long int +ran_get (void *vstate) +{ + ran_state_t *state = (ran_state_t *) vstate; + + unsigned int i = state->i; + + if (i == 0) + { + /* fill buffer with new random numbers */ + ran_array (state->aa, BUFLEN, state->ran_x); + } + + state->i = (i + 1) % BUFLEN; + + return state->aa[i]; +} + +static double +ran_get_double (void *vstate) +{ + ran_state_t *state = (ran_state_t *) vstate; + + return ran_get (state) / 1073741824.0; /* [Carlo]: RAND_MAX + 1 */ +} + +static void +ran_set (void *vstate, unsigned long int s) +{ + ran_state_t *state = (ran_state_t *) vstate; + + long x[KK + KK - 1]; /* the preparation buffer */ + + register int j; + register int t; + register long ss = evenize (s + 2); + + for (j = 0; j < KK; j++) + { + x[j] = ss; /* bootstrap the buffer */ + ss <<= 1; + if (ss >= MM) /* cyclic shift 29 bits */ + ss -= MM - 2; + } + for (; j < KK + KK - 1; j++) + x[j] = 0; + x[1]++; /* make x[1] (and only x[1]) odd */ + ss = s & (MM - 1); + t = TT - 1; + while (t) + { + for (j = KK - 1; j > 0; j--) /* square */ + x[j + j] = x[j]; + for (j = KK + KK - 2; j > KK - LL; j -= 2) + x[KK + KK - 1 - j] = evenize (x[j]); + for (j = KK + KK - 2; j >= KK; j--) + if (is_odd (x[j])) + { + x[j - (KK - LL)] = mod_diff (x[j - (KK - LL)], x[j]); + x[j - KK] = mod_diff (x[j - KK], x[j]); + } + if (is_odd (ss)) + { /* multiply by "z" */ + for (j = KK; j > 0; j--) + x[j] = x[j - 1]; + x[0] = x[KK]; /* shift the buffer cyclically */ + if (is_odd (x[KK])) + x[LL] = mod_diff (x[LL], x[KK]); + } + if (ss) + ss >>= 1; + else + t--; + } + + state->i = 0; + + for (j = 0; j < LL; j++) + state->ran_x[j + KK - LL] = x[j]; + for (; j < KK; j++) + state->ran_x[j - LL] = x[j]; + + return; +} + +static const gsl_rng_type ran_type = { + "knuthran", /* name */ + 0x3fffffffUL, /* RAND_MAX *//* [Carlo]: (2 ^ 30) - 1 */ + 0, /* RAND_MIN */ + sizeof (ran_state_t), + &ran_set, + &ran_get, + &ran_get_double +}; + +const gsl_rng_type *gsl_rng_knuthran = &ran_type; diff --git a/gsl-2.5/rng/knuthran.lo b/gsl-2.5/rng/knuthran.lo new file mode 100644 index 00000000..bca75379 --- /dev/null +++ b/gsl-2.5/rng/knuthran.lo @@ -0,0 +1,12 @@ +# knuthran.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/knuthran.o' + +# Name of the non-PIC object +non_pic_object='knuthran.o' + diff --git a/gsl-2.5/rng/knuthran2.c b/gsl-2.5/rng/knuthran2.c new file mode 100644 index 00000000..6835672e --- /dev/null +++ b/gsl-2.5/rng/knuthran2.c @@ -0,0 +1,103 @@ +/* rng/knuthran2.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 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* + * This generator is taken from + * + * Donald E. Knuth + * The Art of Computer Programming + * Volume 2 + * Third Edition + * Addison-Wesley + * Page 108 + * + * This implementation copyright (C) 2001 Carlo Perassi + * and (C) 2003 Heiko Bauke. + */ + +#include +#include +#include + +#include "schrage.c" + +#define AA1 271828183UL +#define AA2 1833324378UL /* = -314159269 mod (2 ^ 31 -1) */ +#define MM 0x7fffffffUL /* 2 ^ 31 - 1 */ +#define CEIL_SQRT_MM 46341UL /* sqrt(2 ^ 31 - 1) */ + +static inline unsigned long int ran_get (void *vstate); +static double ran_get_double (void *vstate); +static void ran_set (void *state, unsigned long int s); + +typedef struct +{ + unsigned long int x0; + unsigned long int x1; +} +ran_state_t; + +static inline unsigned long int +ran_get (void *vstate) +{ + ran_state_t *state = (ran_state_t *) vstate; + + const unsigned long int xtmp = state->x1; + state->x1 = schrage_mult (AA1, state->x1, MM, CEIL_SQRT_MM) + + schrage_mult (AA2, state->x0, MM, CEIL_SQRT_MM); + + if (state->x1 >= MM) + state->x1 -= MM; + + state->x0 = xtmp; + + return state->x1; +} + +static double +ran_get_double (void *vstate) +{ + ran_state_t *state = (ran_state_t *) vstate; + + return ran_get (state) / 2147483647.0; +} + +static void +ran_set (void *vstate, unsigned long int s) +{ + ran_state_t *state = (ran_state_t *) vstate; + + if ((s % MM) == 0) + s = 1; /* default seed is 1 */ + + state->x0 = s % MM; + state->x1 = s % MM; + + return; +} + +static const gsl_rng_type ran_type = { + "knuthran2", /* name */ + MM - 1L, /* RAND_MAX */ + 0, /* RAND_MIN */ + sizeof (ran_state_t), + &ran_set, + &ran_get, + &ran_get_double +}; + +const gsl_rng_type *gsl_rng_knuthran2 = &ran_type; diff --git a/gsl-2.5/rng/knuthran2.lo b/gsl-2.5/rng/knuthran2.lo new file mode 100644 index 00000000..cba27f29 --- /dev/null +++ b/gsl-2.5/rng/knuthran2.lo @@ -0,0 +1,12 @@ +# knuthran2.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/knuthran2.o' + +# Name of the non-PIC object +non_pic_object='knuthran2.o' + diff --git a/gsl-2.5/rng/knuthran2002.c b/gsl-2.5/rng/knuthran2002.c new file mode 100644 index 00000000..a09c2dbc --- /dev/null +++ b/gsl-2.5/rng/knuthran2002.c @@ -0,0 +1,189 @@ +/* rng/knuthran2002.c + * + * Copyright (C) 2007 Brian Gough + * Copyright (C) 2001, 2007 Brian Gough, Carlo Perassi + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* + * This generator is taken from + * + * Donald E. Knuth, The Art of Computer Programming, Volume 2, Section 3.6 + * Third Edition, Addison-Wesley, + * + * The modifications introduced in the 9th printing (2002) are + * included here; there's no backwards compatibility with the + * original. [ see http://www-cs-faculty.stanford.edu/~knuth/taocp.html ] + * + */ + +#include +#include +#include + +#define BUFLEN 1009 /* length of the buffer aa[] */ +#define KK 100 /* the long lag */ +#define LL 37 /* the short lag */ +#define MM (1L << 30) /* the modulus */ +#define TT 70 /* guaranteed separation between streams */ + +#define is_odd(x) ((x) & 1) /* the units bit of x */ +#define mod_diff(x, y) (((x) - (y)) & (MM - 1)) /* (x - y) mod MM */ + +static inline void ran_array (long int aa[], unsigned int n, + long int ran_x[]); +static inline unsigned long int ran_get (void *vstate); +static double ran_get_double (void *vstate); +static void ran_set (void *state, unsigned long int s); + +typedef struct +{ + unsigned int i; + long int aa[BUFLEN]; + long int ran_x[KK]; /* the generator state */ +} +ran_state_t; + +static inline void +ran_array (long int aa[], unsigned int n, long int ran_x[]) +{ + unsigned int i; + unsigned int j; + + for (j = 0; j < KK; j++) + aa[j] = ran_x[j]; + + for (; j < n; j++) + aa[j] = mod_diff (aa[j - KK], aa[j - LL]); + + for (i = 0; i < LL; i++, j++) + ran_x[i] = mod_diff (aa[j - KK], aa[j - LL]); + + for (; i < KK; i++, j++) + ran_x[i] = mod_diff (aa[j - KK], ran_x[i - LL]); +} + +static inline unsigned long int +ran_get (void *vstate) +{ + ran_state_t *state = (ran_state_t *) vstate; + + unsigned int i = state->i; + unsigned long int v; + + if (i == 0) + { + /* fill buffer with new random numbers */ + ran_array (state->aa, BUFLEN, state->ran_x); + } + + v = state->aa[i]; + + state->i = (i + 1) % KK; + + return v; +} + +static double +ran_get_double (void *vstate) +{ + ran_state_t *state = (ran_state_t *) vstate; + + return ran_get (state) / 1073741824.0; /* RAND_MAX + 1 */ +} + +static void +ran_set (void *vstate, unsigned long int s) +{ + ran_state_t *state = (ran_state_t *) vstate; + + long x[KK + KK - 1]; /* the preparation buffer */ + + register int j; + register int t; + register long ss; + + if (s == 0 ) + s = 314159; /* default seed used by Knuth */ + + ss = (s + 2)&(MM-2); + + for (j = 0; j < KK; j++) + { + x[j] = ss; /* bootstrap the buffer */ + ss <<= 1; + if (ss >= MM) /* cyclic shift 29 bits */ + ss -= MM - 2; + } + x[1]++; /* make x[1] (and only x[1]) odd */ + + ss = s & (MM - 1); + t = TT - 1; + while (t) + { + for (j = KK - 1; j > 0; j--) /* square */ + { + x[j + j] = x[j]; + x[j + j - 1] = 0; + } + + for (j = KK + KK - 2; j >= KK; j--) + { + x[j - (KK - LL)] = mod_diff (x[j - (KK - LL)], x[j]); + x[j - KK] = mod_diff (x[j - KK], x[j]); + } + + if (is_odd (ss)) + { /* multiply by "z" */ + for (j = KK; j > 0; j--) + { + x[j] = x[j - 1]; + } + x[0] = x[KK]; /* shift the buffer cyclically */ + x[LL] = mod_diff (x[LL], x[KK]); + } + + if (ss) + ss >>= 1; + else + t--; + } + + for (j = 0; j < LL; j++) + state->ran_x[j + KK - LL] = x[j]; + for (; j < KK; j++) + state->ran_x[j - LL] = x[j]; + + + for (j = 0; j< 10; j++) + ran_array(x, KK+KK-1, state->ran_x); /* warm things up */ + + state->i = 0; + + return; +} + +static const gsl_rng_type ran_type = { + "knuthran2002", /* name */ + 0x3fffffffUL, /* RAND_MAX = (2 ^ 30) - 1 */ + 0, /* RAND_MIN */ + sizeof (ran_state_t), + &ran_set, + &ran_get, + &ran_get_double +}; + +const gsl_rng_type *gsl_rng_knuthran2002 = &ran_type; diff --git a/gsl-2.5/rng/knuthran2002.lo b/gsl-2.5/rng/knuthran2002.lo new file mode 100644 index 00000000..930f1c14 --- /dev/null +++ b/gsl-2.5/rng/knuthran2002.lo @@ -0,0 +1,12 @@ +# knuthran2002.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/knuthran2002.o' + +# Name of the non-PIC object +non_pic_object='knuthran2002.o' + diff --git a/gsl-2.5/rng/lecuyer21.c b/gsl-2.5/rng/lecuyer21.c new file mode 100644 index 00000000..b54055ee --- /dev/null +++ b/gsl-2.5/rng/lecuyer21.c @@ -0,0 +1,99 @@ +/* rng/lecuyer21.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 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* + * This generator is taken from + * + * Donald E. Knuth + * The Art of Computer Programming + * Volume 2 + * Third Edition + * Addison-Wesley + * Page 108 + * + * This implementation copyright (C) 2001 Brian Gough, Carlo Perassi + * and (C) 2003 Heiko Bauke. + */ + +#include +#include +#include + +#define AAA 40692 +#define MMM 2147483399UL +#define QQQ 52774 +#define RRR 3791 + +static inline unsigned long int ran_get (void *vstate); +static double ran_get_double (void *vstate); +static void ran_set (void *state, unsigned long int s); + +typedef struct +{ + unsigned long int x; +} +ran_state_t; + +static inline unsigned long int +ran_get (void *vstate) +{ + ran_state_t *state = (ran_state_t *) vstate; + + long int y = state->x; + long int r = RRR * (y / QQQ); + + y = AAA * (y % QQQ) - r; + if (y < 0) + y += MMM; + + state->x = y; + + return state->x; +} + +static double +ran_get_double (void *vstate) +{ + ran_state_t *state = (ran_state_t *) vstate; + + return ran_get (state) / 2147483399.0; +} + +static void +ran_set (void *vstate, unsigned long int s) +{ + ran_state_t *state = (ran_state_t *) vstate; + + if ((s%MMM) == 0) + s = 1; /* default seed is 1 */ + + state->x = s % MMM; + + return; +} + +static const gsl_rng_type ran_type = { + "lecuyer21", /* name */ + MMM-1, /* RAND_MAX */ + 1, /* RAND_MIN */ + sizeof (ran_state_t), + &ran_set, + &ran_get, + &ran_get_double +}; + +const gsl_rng_type *gsl_rng_lecuyer21 = &ran_type; diff --git a/gsl-2.5/rng/lecuyer21.lo b/gsl-2.5/rng/lecuyer21.lo new file mode 100644 index 00000000..9b0af9da --- /dev/null +++ b/gsl-2.5/rng/lecuyer21.lo @@ -0,0 +1,12 @@ +# lecuyer21.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/lecuyer21.o' + +# Name of the non-PIC object +non_pic_object='lecuyer21.o' + diff --git a/gsl-2.5/rng/libgslrng.la b/gsl-2.5/rng/libgslrng.la new file mode 100644 index 00000000..80043049 --- /dev/null +++ b/gsl-2.5/rng/libgslrng.la @@ -0,0 +1,41 @@ +# libgslrng.la - a libtool library file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='' + +# Names of this library. +library_names='' + +# The name of the static archive. +old_library='libgslrng.a' + +# Linker flags that can not go in dependency_libs. +inherited_linker_flags='' + +# Libraries that this one depends upon. +dependency_libs=' -lm' + +# Names of additional weak libraries provided by this library +weak_library_names='' + +# Version information for libgslrng. +current= +age= +revision= + +# Is this an already installed library? +installed=no + +# Should we warn about portability when linking against -modules? +shouldnotlink=no + +# Files to dlopen/dlpreopen +dlopen='' +dlpreopen='' + +# Directory that this library needs to be installed in: +libdir='' diff --git a/gsl-2.5/rng/minstd.c b/gsl-2.5/rng/minstd.c new file mode 100644 index 00000000..feb0a95b --- /dev/null +++ b/gsl-2.5/rng/minstd.c @@ -0,0 +1,109 @@ +/* rng/minstd.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 James Theiler, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include + +/* MINSTD is Park and Miller's minimal standard generator (i.e. it's + not particularly good). + + The sequence is + + x_{n+1} = (a x_n) mod m + + with a = 16807 and m = 2^31 - 1 = 2147483647. The seed specifies + the initial value, x_1. + + The theoretical value of x_{10001} is 1043618065, starting with a + seed of x_1 = 1. + + The period of this generator is 2^31. + + It is used as the RNUN subroutine in the IMSL Library and the RAND + function in MATLAB. The generator is sometimes known by the acronym + "GGL" (I'm not sure what that stands for). + + From: Park and Miller, "Random Number Generators: Good ones are + hard to find" Communications of the ACM, October 1988, Volume 31, + No 10, pages 1192-1201. */ + +static inline unsigned long int minstd_get (void *vstate); +static double minstd_get_double (void *vstate); +static void minstd_set (void *state, unsigned long int s); + +static const long int m = 2147483647, a = 16807, q = 127773, r = 2836; + +typedef struct + { + unsigned long int x; + } +minstd_state_t; + +static inline unsigned long int +minstd_get (void *vstate) +{ + minstd_state_t *state = (minstd_state_t *) vstate; + + const unsigned long int x = state->x; + + const long int h = x / q; + const long int t = a * (x - h * q) - h * r; + + if (t < 0) + { + state->x = t + m; + } + else + { + state->x = t; + } + + return state->x; +} + +static double +minstd_get_double (void *vstate) +{ + return minstd_get (vstate) / 2147483647.0; +} + +static void +minstd_set (void *vstate, unsigned long int s) +{ + minstd_state_t *state = (minstd_state_t *) vstate; + + if (s == 0) + s = 1; /* default seed is 1 */ + + state->x = s; + + return; +} + +static const gsl_rng_type minstd_type = +{"minstd", /* name */ + 2147483646, /* RAND_MAX */ + 1, /* RAND_MIN */ + sizeof (minstd_state_t), + &minstd_set, + &minstd_get, + &minstd_get_double}; + +const gsl_rng_type *gsl_rng_minstd = &minstd_type; diff --git a/gsl-2.5/rng/minstd.lo b/gsl-2.5/rng/minstd.lo new file mode 100644 index 00000000..1cb69cf0 --- /dev/null +++ b/gsl-2.5/rng/minstd.lo @@ -0,0 +1,12 @@ +# minstd.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/minstd.o' + +# Name of the non-PIC object +non_pic_object='minstd.o' + diff --git a/gsl-2.5/rng/mrg.c b/gsl-2.5/rng/mrg.c new file mode 100644 index 00000000..666ac022 --- /dev/null +++ b/gsl-2.5/rng/mrg.c @@ -0,0 +1,149 @@ +/* rng/mrg.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 James Theiler, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include + +/* This is a fifth-order multiple recursive generator. The sequence is, + + x_n = (a_1 x_{n-1} + a_5 x_{n-5}) mod m + + with a_1 = 107374182, a_2 = a_3 = a_4 = 0, a_5 = 104480 and m = 2^31-1. + + We initialize the generator with x_n = s_n MOD m for n = 1..5, + where s_n = (69069 * s_{n-1}) mod 2^32, and s_0 = s is the + user-supplied seed. + + NOTE: According to the paper the seeds must lie in the range [0, + 2^31 - 2] with at least one non-zero value -- our seeding procedure + satisfies these constraints. + + We then use 6 iterations of the generator to "warm up" the internal + state. + + With this initialization procedure the theoretical value of + z_{10006} is 2064828650 for s = 1. The subscript 10006 means (1) + seed the generator with s = 1, (2) do the 6 warm-up iterations + that are part of the seeding process, (3) then do 10000 actual + iterations. + + The period of this generator is about 2^155. + + From: P. L'Ecuyer, F. Blouin, and R. Coutre, "A search for good + multiple recursive random number generators", ACM Transactions on + Modeling and Computer Simulation 3, 87-98 (1993). */ + +static inline unsigned long int mrg_get (void *vstate); +static double mrg_get_double (void *vstate); +static void mrg_set (void *state, unsigned long int s); + +static const long int m = 2147483647; +static const long int a1 = 107374182, q1 = 20, r1 = 7; +static const long int a5 = 104480, q5 = 20554, r5 = 1727; + +typedef struct + { + long int x1, x2, x3, x4, x5; + } +mrg_state_t; + +static inline unsigned long int +mrg_get (void *vstate) +{ + mrg_state_t *state = (mrg_state_t *) vstate; + + long int p1, h1, p5, h5; + + h5 = state->x5 / q5; + p5 = a5 * (state->x5 - h5 * q5) - h5 * r5; + if (p5 > 0) + p5 -= m; + + h1 = state->x1 / q1; + p1 = a1 * (state->x1 - h1 * q1) - h1 * r1; + if (p1 < 0) + p1 += m; + + state->x5 = state->x4; + state->x4 = state->x3; + state->x3 = state->x2; + state->x2 = state->x1; + + state->x1 = p1 + p5; + + if (state->x1 < 0) + state->x1 += m; + + return state->x1; +} + +static double +mrg_get_double (void *vstate) +{ + return mrg_get (vstate) / 2147483647.0 ; +} + + +static void +mrg_set (void *vstate, unsigned long int s) +{ + /* An entirely adhoc way of seeding! This does **not** come from + L'Ecuyer et al */ + + mrg_state_t *state = (mrg_state_t *) vstate; + + if (s == 0) + s = 1; /* default seed is 1 */ + +#define LCG(n) ((69069 * n) & 0xffffffffUL) + s = LCG (s); + state->x1 = s % m; + s = LCG (s); + state->x2 = s % m; + s = LCG (s); + state->x3 = s % m; + s = LCG (s); + state->x4 = s % m; + s = LCG (s); + state->x5 = s % m; + + /* "warm it up" with at least 5 calls to go through + all the x values */ + + mrg_get (state); + mrg_get (state); + mrg_get (state); + mrg_get (state); + mrg_get (state); + mrg_get (state); + + return; +} + +static const gsl_rng_type mrg_type = +{"mrg", /* name */ + 2147483646, /* RAND_MAX */ + 0, /* RAND_MIN */ + sizeof (mrg_state_t), + &mrg_set, + &mrg_get, + &mrg_get_double}; + +const gsl_rng_type *gsl_rng_mrg = &mrg_type; diff --git a/gsl-2.5/rng/mrg.lo b/gsl-2.5/rng/mrg.lo new file mode 100644 index 00000000..4f0177e5 --- /dev/null +++ b/gsl-2.5/rng/mrg.lo @@ -0,0 +1,12 @@ +# mrg.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/mrg.o' + +# Name of the non-PIC object +non_pic_object='mrg.o' + diff --git a/gsl-2.5/rng/mt.c b/gsl-2.5/rng/mt.c new file mode 100644 index 00000000..68b4afb9 --- /dev/null +++ b/gsl-2.5/rng/mt.c @@ -0,0 +1,241 @@ +/* This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 3 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. You should have received + a copy of the GNU General Public License along with this library; if + not, write to the Free Software Foundation, Inc., 51 Franklin Street, + Fifth Floor, Boston, MA 02110-1301, USA. + + Original implementation was copyright (C) 1997 Makoto Matsumoto and + Takuji Nishimura. Coded by Takuji Nishimura, considering the + suggestions by Topher Cooper and Marc Rieffel in July-Aug. 1997, "A + C-program for MT19937: Integer version (1998/4/6)" + + This implementation copyright (C) 1998 Brian Gough. I reorganized + the code to use the module framework of GSL. The license on this + implementation was changed from LGPL to GPL, following paragraph 3 + of the LGPL, version 2. + + Update: + + The seeding procedure has been updated to match the 10/99 release + of MT19937. + + Update: + + The seeding procedure has been updated again to match the 2002 + release of MT19937 + + The original code included the comment: "When you use this, send an + email to: matumoto@math.keio.ac.jp with an appropriate reference to + your work". + + Makoto Matsumoto has a web page with more information about the + generator, http://www.math.keio.ac.jp/~matumoto/emt.html. + + The paper below has details of the algorithm. + + From: Makoto Matsumoto and Takuji Nishimura, "Mersenne Twister: A + 623-dimensionally equidistributerd uniform pseudorandom number + generator". ACM Transactions on Modeling and Computer Simulation, + Vol. 8, No. 1 (Jan. 1998), Pages 3-30 + + You can obtain the paper directly from Makoto Matsumoto's web page. + + The period of this generator is 2^{19937} - 1. + +*/ + +#include +#include +#include + +static inline unsigned long int mt_get (void *vstate); +static double mt_get_double (void *vstate); +static void mt_set (void *state, unsigned long int s); + +#define N 624 /* Period parameters */ +#define M 397 + +/* most significant w-r bits */ +static const unsigned long UPPER_MASK = 0x80000000UL; + +/* least significant r bits */ +static const unsigned long LOWER_MASK = 0x7fffffffUL; + +typedef struct + { + unsigned long mt[N]; + int mti; + } +mt_state_t; + +static inline unsigned long +mt_get (void *vstate) +{ + mt_state_t *state = (mt_state_t *) vstate; + + unsigned long k ; + unsigned long int *const mt = state->mt; + +#define MAGIC(y) (((y)&0x1) ? 0x9908b0dfUL : 0) + + if (state->mti >= N) + { /* generate N words at one time */ + int kk; + + for (kk = 0; kk < N - M; kk++) + { + unsigned long y = (mt[kk] & UPPER_MASK) | (mt[kk + 1] & LOWER_MASK); + mt[kk] = mt[kk + M] ^ (y >> 1) ^ MAGIC(y); + } + for (; kk < N - 1; kk++) + { + unsigned long y = (mt[kk] & UPPER_MASK) | (mt[kk + 1] & LOWER_MASK); + mt[kk] = mt[kk + (M - N)] ^ (y >> 1) ^ MAGIC(y); + } + + { + unsigned long y = (mt[N - 1] & UPPER_MASK) | (mt[0] & LOWER_MASK); + mt[N - 1] = mt[M - 1] ^ (y >> 1) ^ MAGIC(y); + } + + state->mti = 0; + } + + /* Tempering */ + + k = mt[state->mti]; + k ^= (k >> 11); + k ^= (k << 7) & 0x9d2c5680UL; + k ^= (k << 15) & 0xefc60000UL; + k ^= (k >> 18); + + state->mti++; + + return k; +} + +static double +mt_get_double (void * vstate) +{ + return mt_get (vstate) / 4294967296.0 ; +} + +static void +mt_set (void *vstate, unsigned long int s) +{ + mt_state_t *state = (mt_state_t *) vstate; + int i; + + if (s == 0) + s = 4357; /* the default seed is 4357 */ + + state->mt[0]= s & 0xffffffffUL; + + for (i = 1; i < N; i++) + { + /* See Knuth's "Art of Computer Programming" Vol. 2, 3rd + Ed. p.106 for multiplier. */ + + state->mt[i] = + (1812433253UL * (state->mt[i-1] ^ (state->mt[i-1] >> 30)) + i); + + state->mt[i] &= 0xffffffffUL; + } + + state->mti = i; +} + +static void +mt_1999_set (void *vstate, unsigned long int s) +{ + mt_state_t *state = (mt_state_t *) vstate; + int i; + + if (s == 0) + s = 4357; /* the default seed is 4357 */ + + /* This is the October 1999 version of the seeding procedure. It + was updated by the original developers to avoid the periodicity + in the simple congruence originally used. + + Note that an ANSI-C unsigned long integer arithmetic is + automatically modulo 2^32 (or a higher power of two), so we can + safely ignore overflow. */ + +#define LCG(x) ((69069 * x) + 1) &0xffffffffUL + + for (i = 0; i < N; i++) + { + state->mt[i] = s & 0xffff0000UL; + s = LCG(s); + state->mt[i] |= (s &0xffff0000UL) >> 16; + s = LCG(s); + } + + state->mti = i; +} + +/* This is the original version of the seeding procedure, no longer + used but available for compatibility with the original MT19937. */ + +static void +mt_1998_set (void *vstate, unsigned long int s) +{ + mt_state_t *state = (mt_state_t *) vstate; + int i; + + if (s == 0) + s = 4357; /* the default seed is 4357 */ + + state->mt[0] = s & 0xffffffffUL; + +#define LCG1998(n) ((69069 * n) & 0xffffffffUL) + + for (i = 1; i < N; i++) + state->mt[i] = LCG1998 (state->mt[i - 1]); + + state->mti = i; +} + +static const gsl_rng_type mt_type = +{"mt19937", /* name */ + 0xffffffffUL, /* RAND_MAX */ + 0, /* RAND_MIN */ + sizeof (mt_state_t), + &mt_set, + &mt_get, + &mt_get_double}; + +static const gsl_rng_type mt_1999_type = +{"mt19937_1999", /* name */ + 0xffffffffUL, /* RAND_MAX */ + 0, /* RAND_MIN */ + sizeof (mt_state_t), + &mt_1999_set, + &mt_get, + &mt_get_double}; + +static const gsl_rng_type mt_1998_type = +{"mt19937_1998", /* name */ + 0xffffffffUL, /* RAND_MAX */ + 0, /* RAND_MIN */ + sizeof (mt_state_t), + &mt_1998_set, + &mt_get, + &mt_get_double}; + +const gsl_rng_type *gsl_rng_mt19937 = &mt_type; +const gsl_rng_type *gsl_rng_mt19937_1999 = &mt_1999_type; +const gsl_rng_type *gsl_rng_mt19937_1998 = &mt_1998_type; + +/* MT19937 is the default generator, so define that here too */ + +const gsl_rng_type *gsl_rng_default = &mt_type; +unsigned long int gsl_rng_default_seed = 0; diff --git a/gsl-2.5/rng/mt.lo b/gsl-2.5/rng/mt.lo new file mode 100644 index 00000000..2742f906 --- /dev/null +++ b/gsl-2.5/rng/mt.lo @@ -0,0 +1,12 @@ +# mt.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/mt.o' + +# Name of the non-PIC object +non_pic_object='mt.o' + diff --git a/gsl-2.5/rng/r250.c b/gsl-2.5/rng/r250.c new file mode 100644 index 00000000..9274d6b0 --- /dev/null +++ b/gsl-2.5/rng/r250.c @@ -0,0 +1,172 @@ +/* rng/r250.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 James Theiler, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include + +/* This is a shift-register random number generator. The sequence is + + x_n = x_{n-103} ^ x_{n-250} ("^" means XOR) + + defined on 32-bit words. + + BJG: Note that this implementation actually uses the sequence, x_n + = x_{n-147} ^ x_{n-250} which generates the outputs in + time-reversed order but is otherwise completely equivalent. + + The first 250 elements x_1 .. x_250 are first initialized as x_n = + s_n, where s_n = (69069*s_{n-1}) mod 2^32 and s_0=s is the + user-supplied seed. To ensure that the sequence does not lie on a + subspace we force 32 of the entries to be linearly independent. We + take the 32 elements x[3], x[10], x[17], x[24], ..., 213 and apply + the following operations, + + x[3] &= 11111111111111111111111111111111 + x[3] |= 10000000000000000000000000000000 + x[10] &= 01111111111111111111111111111111 + x[10] |= 01000000000000000000000000000000 + x[17] &= 00111111111111111111111111111111 + x[17] |= 00100000000000000000000000000000 + .... ... + x[206] &= 00000000000000000000000000000111 + x[206] |= 00000000000000000000000000000100 + x[213] &= 00000000000000000000000000000011 + x[213] |= 00000000000000000000000000000010 + x[220] &= 00000000000000000000000000000001 + x[220] |= 00000000000000000000000000000001 + + i.e. if we consider the bits of the 32 elements as forming a 32x32 + array then we are setting the diagonal bits of the array to one and + masking the lower triangle below the diagonal to zero. + + With this initialization procedure the theoretical value of + x_{10001} is 1100653588 for s = 1 (Actually I got this by running + the original code). The subscript 10001 means (1) seed the + generator with s = 1 and then do 10000 actual iterations. + + The period of this generator is about 2^250. + + The algorithm works for any number of bits. It is implemented here + for 32 bits. + + From: S. Kirkpatrick and E. Stoll, "A very fast shift-register + sequence random number generator", Journal of Computational Physics, + 40, 517-526 (1981). */ + +static inline unsigned long int r250_get (void *vstate); +static double r250_get_double (void *vstate); +static void r250_set (void *state, unsigned long int s); + +typedef struct + { + int i; + unsigned long x[250]; + } +r250_state_t; + +static inline unsigned long int +r250_get (void *vstate) +{ + r250_state_t *state = (r250_state_t *) vstate; + unsigned long int k; + int j; + + int i = state->i; + + if (i >= 147) + { + j = i - 147; + } + else + { + j = i + 103; + } + + k = state->x[i] ^ state->x[j]; + state->x[i] = k; + + if (i >= 249) + { + state->i = 0; + } + else + { + state->i = i + 1; + } + + return k; +} + +static double +r250_get_double (void *vstate) +{ + return r250_get (vstate) / 4294967296.0 ; +} + +static void +r250_set (void *vstate, unsigned long int s) +{ + r250_state_t *state = (r250_state_t *) vstate; + + int i; + + if (s == 0) + s = 1; /* default seed is 1 */ + + state->i = 0; + +#define LCG(n) ((69069 * n) & 0xffffffffUL) + + for (i = 0; i < 250; i++) /* Fill the buffer */ + { + s = LCG (s); + state->x[i] = s; + } + + { + /* Masks for turning on the diagonal bit and turning off the + leftmost bits */ + + unsigned long int msb = 0x80000000UL; + unsigned long int mask = 0xffffffffUL; + + for (i = 0; i < 32; i++) + { + int k = 7 * i + 3; /* Select a word to operate on */ + state->x[k] &= mask; /* Turn off bits left of the diagonal */ + state->x[k] |= msb; /* Turn on the diagonal bit */ + mask >>= 1; + msb >>= 1; + } + } + + return; +} + +static const gsl_rng_type r250_type = +{"r250", /* name */ + 0xffffffffUL, /* RAND_MAX */ + 0, /* RAND_MIN */ + sizeof (r250_state_t), + &r250_set, + &r250_get, + &r250_get_double}; + +const gsl_rng_type *gsl_rng_r250 = &r250_type; diff --git a/gsl-2.5/rng/r250.lo b/gsl-2.5/rng/r250.lo new file mode 100644 index 00000000..890610cd --- /dev/null +++ b/gsl-2.5/rng/r250.lo @@ -0,0 +1,12 @@ +# r250.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/r250.o' + +# Name of the non-PIC object +non_pic_object='r250.o' + diff --git a/gsl-2.5/rng/ran0.c b/gsl-2.5/rng/ran0.c new file mode 100644 index 00000000..029274ff --- /dev/null +++ b/gsl-2.5/rng/ran0.c @@ -0,0 +1,100 @@ +/* rng/ran0.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 James Theiler, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include + +/* This is an implementation of the algorithm used in Numerical + Recipe's ran0 generator. It is the same as MINSTD with an XOR mask + of 123459876 on the seed. + + The period of this generator is 2^31. + + Note, if you choose a seed of 123459876 it would give a degenerate + series 0,0,0,0, ... I've made that into an error. */ + +static inline unsigned long int ran0_get (void *vstate); +static double ran0_get_double (void *vstate); +static void ran0_set (void *state, unsigned long int s); + +static const long int m = 2147483647, a = 16807, q = 127773, r = 2836; +static const unsigned long int mask = 123459876; + +typedef struct + { + unsigned long int x; + } +ran0_state_t; + +static inline unsigned long int +ran0_get (void *vstate) +{ + ran0_state_t *state = (ran0_state_t *) vstate; + + const unsigned long int x = state->x; + + const long int h = x / q; + const long int t = a * (x - h * q) - h * r; + + if (t < 0) + { + state->x = t + m; + } + else + { + state->x = t; + } + + return state->x; +} + +static double +ran0_get_double (void *vstate) +{ + return ran0_get (vstate) / 2147483647.0 ; +} + +static void +ran0_set (void *vstate, unsigned long int s) +{ + ran0_state_t *state = (ran0_state_t *) vstate; + + if (s == mask) + { + GSL_ERROR_VOID ("ran0 should not use seed == mask", + GSL_EINVAL); + } + + state->x = s ^ mask; + + return; +} + +static const gsl_rng_type ran0_type = +{"ran0", /* name */ + 2147483646, /* RAND_MAX */ + 1, /* RAND_MIN */ + sizeof (ran0_state_t), + &ran0_set, + &ran0_get, + &ran0_get_double}; + +const gsl_rng_type *gsl_rng_ran0 = &ran0_type; diff --git a/gsl-2.5/rng/ran0.lo b/gsl-2.5/rng/ran0.lo new file mode 100644 index 00000000..112e9e82 --- /dev/null +++ b/gsl-2.5/rng/ran0.lo @@ -0,0 +1,12 @@ +# ran0.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/ran0.o' + +# Name of the non-PIC object +non_pic_object='ran0.o' + diff --git a/gsl-2.5/rng/ran1.c b/gsl-2.5/rng/ran1.c new file mode 100644 index 00000000..fd002e98 --- /dev/null +++ b/gsl-2.5/rng/ran1.c @@ -0,0 +1,130 @@ +/* rng/ran1.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 James Theiler, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include + +/* This is an implementation of the algorithm used in Numerical + Recipe's ran1 generator. It is MINSTD with a 32-element + shuffle-box. */ + +static inline unsigned long int ran1_get (void *vstate); +static double ran1_get_double (void *vstate); +static void ran1_set (void *state, unsigned long int s); + +static const long int m = 2147483647, a = 16807, q = 127773, r = 2836; + +#define N_SHUFFLE 32 +#define N_DIV (1 + 2147483646/N_SHUFFLE) + +typedef struct + { + unsigned long int x; + unsigned long int n; + unsigned long int shuffle[N_SHUFFLE]; + } +ran1_state_t; + +static inline unsigned long int +ran1_get (void *vstate) +{ + ran1_state_t *state = (ran1_state_t *) vstate; + + const unsigned long int x = state->x; + + const long int h = x / q; + const long int t = a * (x - h * q) - h * r; + + if (t < 0) + { + state->x = t + m; + } + else + { + state->x = t; + } + + { + unsigned long int j = state->n / N_DIV; + state->n = state->shuffle[j]; + state->shuffle[j] = state->x; + } + + return state->n; +} + +static double +ran1_get_double (void *vstate) +{ + float x_max = 1 - 1.2e-7f ; /* Numerical Recipes version of 1-FLT_EPS */ + + float x = ran1_get (vstate) / 2147483647.0f ; + + if (x > x_max) + return x_max ; + + return x ; +} + + +static void +ran1_set (void *vstate, unsigned long int s) +{ + ran1_state_t *state = (ran1_state_t *) vstate; + int i; + + if (s == 0) + s = 1; /* default seed is 1 */ + + for (i = 0; i < 8; i++) + { + long int h = s / q; + long int t = a * (s - h * q) - h * r; + if (t < 0) + t += m; + s = t; + } + + for (i = N_SHUFFLE - 1; i >= 0; i--) + { + long int h = s / q; + long int t = a * (s - h * q) - h * r; + if (t < 0) + t += m; + s = t; + state->shuffle[i] = s; + } + + state->x = s; + state->n = s; + + return; +} + +static const gsl_rng_type ran1_type = +{"ran1", /* name */ + 2147483646, /* RAND_MAX */ + 1, /* RAND_MIN */ + sizeof (ran1_state_t), + &ran1_set, + &ran1_get, + &ran1_get_double}; + +const gsl_rng_type *gsl_rng_ran1 = &ran1_type; diff --git a/gsl-2.5/rng/ran1.lo b/gsl-2.5/rng/ran1.lo new file mode 100644 index 00000000..9595809b --- /dev/null +++ b/gsl-2.5/rng/ran1.lo @@ -0,0 +1,12 @@ +# ran1.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/ran1.o' + +# Name of the non-PIC object +non_pic_object='ran1.o' + diff --git a/gsl-2.5/rng/ran2.c b/gsl-2.5/rng/ran2.c new file mode 100644 index 00000000..a9855231 --- /dev/null +++ b/gsl-2.5/rng/ran2.c @@ -0,0 +1,146 @@ +/* rng/ran2.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 James Theiler, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include + +/* This is an implementation of the algorithm used in Numerical + Recipe's ran2 generator. It is a L'Ecuyer combined recursive + generator with a 32-element shuffle-box. + + As far as I can tell, in general the effects of adding a shuffle + box cannot be proven theoretically, so the period of this generator + is unknown. + + The period of the underlying combined generator is O(2^60). */ + +static inline unsigned long int ran2_get (void *vstate); +static double ran2_get_double (void *vstate); +static void ran2_set (void *state, unsigned long int s); + +static const long int m1 = 2147483563, a1 = 40014, q1 = 53668, r1 = 12211; +static const long int m2 = 2147483399, a2 = 40692, q2 = 52774, r2 = 3791; + +#define N_SHUFFLE 32 +#define N_DIV (1 + 2147483562/N_SHUFFLE) + +typedef struct + { + unsigned long int x; + unsigned long int y; + unsigned long int n; + unsigned long int shuffle[N_SHUFFLE]; + } +ran2_state_t; + +static inline unsigned long int +ran2_get (void *vstate) +{ + ran2_state_t *state = (ran2_state_t *) vstate; + + const unsigned long int x = state->x; + const unsigned long int y = state->y; + + long int h1 = x / q1; + long int t1 = a1 * (x - h1 * q1) - h1 * r1; + + long int h2 = y / q2; + long int t2 = a2 * (y - h2 * q2) - h2 * r2; + + if (t1 < 0) + t1 += m1; + + if (t2 < 0) + t2 += m2; + + state->x = t1; + state->y = t2; + + { + unsigned long int j = state->n / N_DIV; + long int delta = state->shuffle[j] - t2; + if (delta < 1) + delta += m1 - 1; + state->n = delta; + state->shuffle[j] = t1; + } + + return state->n; +} + +static double +ran2_get_double (void *vstate) +{ + float x_max = 1 - 1.2e-7f ; /* Numerical Recipes version of 1-FLT_EPS */ + + float x = ran2_get (vstate) / 2147483563.0f ; + + if (x > x_max) + return x_max ; + + return x ; +} + +static void +ran2_set (void *vstate, unsigned long int s) +{ + ran2_state_t *state = (ran2_state_t *) vstate; + int i; + + if (s == 0) + s = 1; /* default seed is 1 */ + + state->y = s; + + for (i = 0; i < 8; i++) + { + long int h = s / q1; + long int t = a1 * (s - h * q1) - h * r1; + if (t < 0) + t += m1; + s = t; + } + + for (i = N_SHUFFLE - 1; i >= 0; i--) + { + long int h = s / q1; + long int t = a1 * (s - h * q1) - h * r1; + if (t < 0) + t += m1; + s = t; + state->shuffle[i] = s; + } + + state->x = s; + state->n = s; + + return; +} + +static const gsl_rng_type ran2_type = +{"ran2", /* name */ + 2147483562, /* RAND_MAX */ + 1, /* RAND_MIN */ + sizeof (ran2_state_t), + &ran2_set, + &ran2_get, + &ran2_get_double}; + +const gsl_rng_type *gsl_rng_ran2 = &ran2_type; diff --git a/gsl-2.5/rng/ran2.lo b/gsl-2.5/rng/ran2.lo new file mode 100644 index 00000000..58a30ef0 --- /dev/null +++ b/gsl-2.5/rng/ran2.lo @@ -0,0 +1,12 @@ +# ran2.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/ran2.o' + +# Name of the non-PIC object +non_pic_object='ran2.o' + diff --git a/gsl-2.5/rng/ran3.c b/gsl-2.5/rng/ran3.c new file mode 100644 index 00000000..d855d254 --- /dev/null +++ b/gsl-2.5/rng/ran3.c @@ -0,0 +1,135 @@ +/* rng/ran3.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007, 2010 James Theiler, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include + +/* This is an implementation of the algorithm used in Knuths's + subtractive generator, with the Numerical Recipe's ran3 paramters. + It is a subtractive lagged fibonnaci generator. */ + +static inline unsigned long int ran3_get (void *vstate); +static double ran3_get_double (void *vstate); +static void ran3_set (void *state, unsigned long int s); + +#define M_BIG 1000000000 +#define M_SEED 161803398 + +typedef struct + { + unsigned int x; + unsigned int y; + unsigned long int buffer[56]; + } +ran3_state_t; + +static inline unsigned long int +ran3_get (void *vstate) +{ + ran3_state_t *state = (ran3_state_t *) vstate; + long int j; + + state->x++; + + if (state->x == 56) + state->x = 1; + + state->y++; + + if (state->y == 56) + state->y = 1; + + j = state->buffer[state->x] - state->buffer[state->y]; + + if (j < 0) + j += M_BIG; + + state->buffer[state->x] = j; + + return j; +} + +static double +ran3_get_double (void *vstate) +{ + return ran3_get (vstate) / (double) M_BIG ; +} + +static void +ran3_set (void *vstate, unsigned long int s) +{ + ran3_state_t *state = (ran3_state_t *) vstate; + int i, i1; + long int j, k; + + if (s == 0) + s = 1; /* default seed is 1 */ + + j = (M_SEED - s) % M_BIG; + + /* Avoid potential problem with negative values */ + if (j < 0) j += M_BIG; + + /* the zeroth element is never used, but we initialize it for + consistency between states */ + + state->buffer[0] = 0; + + state->buffer[55] = j; + + k = 1; + for (i = 1; i < 55; i++) + { + int n = (21 * i) % 55; + state->buffer[n] = k; + k = j - k; + if (k < 0) + k += M_BIG; + j = state->buffer[n]; + + } + + for (i1 = 0; i1 < 4; i1++) + { + for (i = 1; i < 56; i++) + { + long int t = state->buffer[i] - state->buffer[1 + (i + 30) % 55]; + if (t < 0) + t += M_BIG; + state->buffer[i] = t; + } + } + + state->x = 0; + state->y = 31; + + return; +} + +static const gsl_rng_type ran3_type = +{"ran3", /* name */ + M_BIG, /* RAND_MAX */ + 0, /* RAND_MIN */ + sizeof (ran3_state_t), + &ran3_set, + &ran3_get, + &ran3_get_double}; + +const gsl_rng_type *gsl_rng_ran3 = &ran3_type; diff --git a/gsl-2.5/rng/ran3.lo b/gsl-2.5/rng/ran3.lo new file mode 100644 index 00000000..7b513d5f --- /dev/null +++ b/gsl-2.5/rng/ran3.lo @@ -0,0 +1,12 @@ +# ran3.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/ran3.o' + +# Name of the non-PIC object +non_pic_object='ran3.o' + diff --git a/gsl-2.5/rng/rand.c b/gsl-2.5/rng/rand.c new file mode 100644 index 00000000..1f2a0269 --- /dev/null +++ b/gsl-2.5/rng/rand.c @@ -0,0 +1,85 @@ +/* rng/rand.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 James Theiler, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include + +/* This is the old BSD rand() generator. The sequence is + + x_{n+1} = (a x_n + c) mod m + + with a = 1103515245, c = 12345 and m = 2^31 = 2147483648. The seed + specifies the initial value, x_1. + + The theoretical value of x_{10001} is 1910041713. + + The period of this generator is 2^31. + + The rand() generator is not very good -- the low bits of successive + numbers are correlated. */ + +static inline unsigned long int rand_get (void *vstate); +static double rand_get_double (void *vstate); +static void rand_set (void *state, unsigned long int s); + +typedef struct + { + unsigned long int x; + } +rand_state_t; + +static inline unsigned long int +rand_get (void *vstate) +{ + rand_state_t *state = (rand_state_t *) vstate; + + /* The following line relies on unsigned 32-bit arithmetic */ + + state->x = (1103515245 * state->x + 12345) & 0x7fffffffUL; + + return state->x; +} + +static double +rand_get_double (void *vstate) +{ + return rand_get (vstate) / 2147483648.0 ; +} + +static void +rand_set (void *vstate, unsigned long int s) +{ + rand_state_t *state = (rand_state_t *) vstate; + + state->x = s; + + return; +} + +static const gsl_rng_type rand_type = +{"rand", /* name */ + 0x7fffffffUL, /* RAND_MAX */ + 0, /* RAND_MIN */ + sizeof (rand_state_t), + &rand_set, + &rand_get, + &rand_get_double}; + +const gsl_rng_type *gsl_rng_rand = &rand_type; diff --git a/gsl-2.5/rng/rand.lo b/gsl-2.5/rng/rand.lo new file mode 100644 index 00000000..d1dbbc20 --- /dev/null +++ b/gsl-2.5/rng/rand.lo @@ -0,0 +1,12 @@ +# rand.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/rand.o' + +# Name of the non-PIC object +non_pic_object='rand.o' + diff --git a/gsl-2.5/rng/rand48.c b/gsl-2.5/rng/rand48.c new file mode 100644 index 00000000..efb19935 --- /dev/null +++ b/gsl-2.5/rng/rand48.c @@ -0,0 +1,143 @@ +/* rng/rand48.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 James Theiler, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include + +/* This is the Unix rand48() generator. The generator returns the + upper 32 bits from each term of the sequence, + + x_{n+1} = (a x_n + c) mod m + + using 48-bit unsigned arithmetic, with a = 0x5DEECE66D , c = 0xB + and m = 2^48. The seed specifies the upper 32 bits of the initial + value, x_1, with the lower 16 bits set to 0x330E. + + The theoretical value of x_{10001} is 244131582646046. + + The period of this generator is ? FIXME (probably around 2^48). */ + +static inline void rand48_advance (void *vstate); +static unsigned long int rand48_get (void *vstate); +static double rand48_get_double (void *vstate); +static void rand48_set (void *state, unsigned long int s); + +static const unsigned short int a0 = 0xE66D ; +static const unsigned short int a1 = 0xDEEC ; +static const unsigned short int a2 = 0x0005 ; + +static const unsigned short int c0 = 0x000B ; + +typedef struct + { + unsigned short int x0, x1, x2; + } +rand48_state_t; + +static inline void +rand48_advance (void *vstate) +{ + rand48_state_t *state = (rand48_state_t *) vstate; + + /* work with unsigned long ints throughout to get correct integer + promotions of any unsigned short ints */ + + const unsigned long int x0 = (unsigned long int) state->x0 ; + const unsigned long int x1 = (unsigned long int) state->x1 ; + const unsigned long int x2 = (unsigned long int) state->x2 ; + + unsigned long int a ; + + a = a0 * x0 + c0 ; + state->x0 = (a & 0xFFFF) ; + + a >>= 16 ; + + /* although the next line may overflow we only need the top 16 bits + in the following stage, so it does not matter */ + + a += a0 * x1 + a1 * x0 ; + state->x1 = (a & 0xFFFF) ; + + a >>= 16 ; + a += a0 * x2 + a1 * x1 + a2 * x0 ; + state->x2 = (a & 0xFFFF) ; +} + +static unsigned long int +rand48_get (void *vstate) +{ + unsigned long int x1, x2; + + rand48_state_t *state = (rand48_state_t *) vstate; + rand48_advance (state) ; + + x2 = (unsigned long int) state->x2; + x1 = (unsigned long int) state->x1; + + return (x2 << 16) + x1; +} + +static double +rand48_get_double (void * vstate) +{ + rand48_state_t *state = (rand48_state_t *) vstate; + + rand48_advance (state) ; + + return (ldexp((double) state->x2, -16) + + ldexp((double) state->x1, -32) + + ldexp((double) state->x0, -48)) ; +} + +static void +rand48_set (void *vstate, unsigned long int s) +{ + rand48_state_t *state = (rand48_state_t *) vstate; + + if (s == 0) /* default seed */ + { + state->x0 = 0x330E ; + state->x1 = 0xABCD ; + state->x2 = 0x1234 ; + } + else + { + state->x0 = 0x330E ; + state->x1 = s & 0xFFFF ; + state->x2 = (s >> 16) & 0xFFFF ; + } + + return; +} + +static const gsl_rng_type rand48_type = +{"rand48", /* name */ + 0xffffffffUL, /* RAND_MAX */ + 0, /* RAND_MIN */ + sizeof (rand48_state_t), + &rand48_set, + &rand48_get, + &rand48_get_double +}; + +const gsl_rng_type *gsl_rng_rand48 = &rand48_type; diff --git a/gsl-2.5/rng/rand48.lo b/gsl-2.5/rng/rand48.lo new file mode 100644 index 00000000..7687b376 --- /dev/null +++ b/gsl-2.5/rng/rand48.lo @@ -0,0 +1,12 @@ +# rand48.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/rand48.o' + +# Name of the non-PIC object +non_pic_object='rand48.o' + diff --git a/gsl-2.5/rng/random.c b/gsl-2.5/rng/random.c new file mode 100644 index 00000000..b292eb3d --- /dev/null +++ b/gsl-2.5/rng/random.c @@ -0,0 +1,656 @@ +/* rng/random.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 James Theiler, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include + +/* This file provides support for random() generators. There are three + versions in widespread use today, + + - The original BSD version, e.g. on SunOS 4.1 and FreeBSD. + + - The Linux libc5 version, which is differs from the BSD version in + its seeding procedure, possibly due to the introduction of a typo + in the multiplier. + + - The GNU glibc2 version, which has a new (and better) seeding + procedure. + + They all produce different numbers, due to the different seeding + algorithms, but the algorithm for the generator is the same in each + case. + + */ + +static inline long int random_get (int * i, int * j, int n, long int * x); + +static inline unsigned long int random8_get (void *vstate); +static inline unsigned long int random32_get (void *vstate); +static inline unsigned long int random64_get (void *vstate); +static inline unsigned long int random128_get (void *vstate); +static inline unsigned long int random256_get (void *vstate); + +static double random8_get_double (void *vstate); +static double random32_get_double (void *vstate); +static double random64_get_double (void *vstate); +static double random128_get_double (void *vstate); +static double random256_get_double (void *vstate); + +static void random8_glibc2_set (void *state, unsigned long int s); +static void random32_glibc2_set (void *state, unsigned long int s); +static void random64_glibc2_set (void *state, unsigned long int s); +static void random128_glibc2_set (void *state, unsigned long int s); +static void random256_glibc2_set (void *state, unsigned long int s); + +static void random8_libc5_set (void *state, unsigned long int s); +static void random32_libc5_set (void *state, unsigned long int s); +static void random64_libc5_set (void *state, unsigned long int s); +static void random128_libc5_set (void *state, unsigned long int s); +static void random256_libc5_set (void *state, unsigned long int s); + +static void random8_bsd_set (void *state, unsigned long int s); +static void random32_bsd_set (void *state, unsigned long int s); +static void random64_bsd_set (void *state, unsigned long int s); +static void random128_bsd_set (void *state, unsigned long int s); +static void random256_bsd_set (void *state, unsigned long int s); + +static void bsd_initialize (long int * x, int n, unsigned long int s); +static void libc5_initialize (long int * x, int n, unsigned long int s); +static void glibc2_initialize (long int * x, int n, unsigned long int s); + +typedef struct + { + long int x; + } +random8_state_t; + +typedef struct + { + int i, j; + long int x[7]; + } +random32_state_t; + +typedef struct + { + int i, j; + long int x[15]; + } +random64_state_t; + +typedef struct + { + int i, j; + long int x[31]; + } +random128_state_t; + +typedef struct + { + int i, j; + long int x[63]; + } +random256_state_t; + +static inline unsigned long int +random8_get (void *vstate) +{ + random8_state_t *state = (random8_state_t *) vstate; + + state->x = (1103515245 * state->x + 12345) & 0x7fffffffUL; + return state->x; +} + +static inline long int +random_get (int * i, int * j, int n, long int * x) +{ + long int k ; + + x[*i] += x[*j] ; + k = (x[*i] >> 1) & 0x7FFFFFFF ; + + (*i)++ ; + if (*i == n) + *i = 0 ; + + (*j)++ ; + if (*j == n) + *j = 0 ; + + return k ; +} + +static inline unsigned long int +random32_get (void *vstate) +{ + random32_state_t *state = (random32_state_t *) vstate; + unsigned long int k = random_get (&state->i, &state->j, 7, state->x) ; + return k ; +} + +static inline unsigned long int +random64_get (void *vstate) +{ + random64_state_t *state = (random64_state_t *) vstate; + long int k = random_get (&state->i, &state->j, 15, state->x) ; + return k ; +} + +static inline unsigned long int +random128_get (void *vstate) +{ + random128_state_t *state = (random128_state_t *) vstate; + unsigned long int k = random_get (&state->i, &state->j, 31, state->x) ; + return k ; +} + +static inline unsigned long int +random256_get (void *vstate) +{ + random256_state_t *state = (random256_state_t *) vstate; + long int k = random_get (&state->i, &state->j, 63, state->x) ; + return k ; +} + +static double +random8_get_double (void *vstate) +{ + return random8_get (vstate) / 2147483648.0 ; +} + +static double +random32_get_double (void *vstate) +{ + return random32_get (vstate) / 2147483648.0 ; +} + +static double +random64_get_double (void *vstate) +{ + return random64_get (vstate) / 2147483648.0 ; +} + +static double +random128_get_double (void *vstate) +{ + return random128_get (vstate) / 2147483648.0 ; +} + +static double +random256_get_double (void *vstate) +{ + return random256_get (vstate) / 2147483648.0 ; +} + +static void +random8_bsd_set (void *vstate, unsigned long int s) +{ + random8_state_t *state = (random8_state_t *) vstate; + + if (s == 0) + s = 1; + + state->x = s; +} + +static void +random32_bsd_set (void *vstate, unsigned long int s) +{ + random32_state_t *state = (random32_state_t *) vstate; + int i; + + bsd_initialize (state->x, 7, s) ; + + state->i = 3; + state->j = 0; + + for (i = 0 ; i < 10 * 7 ; i++) + random32_get (state) ; +} + +static void +random64_bsd_set (void *vstate, unsigned long int s) +{ + random64_state_t *state = (random64_state_t *) vstate; + int i; + + bsd_initialize (state->x, 15, s) ; + + state->i = 1; + state->j = 0; + + for (i = 0 ; i < 10 * 15 ; i++) + random64_get (state) ; +} + +static void +random128_bsd_set (void *vstate, unsigned long int s) +{ + random128_state_t *state = (random128_state_t *) vstate; + int i; + + bsd_initialize (state->x, 31, s) ; + + state->i = 3; + state->j = 0; + + for (i = 0 ; i < 10 * 31 ; i++) + random128_get (state) ; +} + +static void +random256_bsd_set (void *vstate, unsigned long int s) +{ + random256_state_t *state = (random256_state_t *) vstate; + int i; + + bsd_initialize (state->x, 63, s) ; + + state->i = 1; + state->j = 0; + + for (i = 0 ; i < 10 * 63 ; i++) + random256_get (state) ; +} + +static void +bsd_initialize (long int * x, int n, unsigned long int s) +{ + int i; + + if (s == 0) + s = 1 ; + + x[0] = s; + + for (i = 1 ; i < n ; i++) + x[i] = 1103515245 * x[i-1] + 12345 ; +} + +static void +libc5_initialize (long int * x, int n, unsigned long int s) +{ + int i; + + if (s == 0) + s = 1 ; + + x[0] = s; + + for (i = 1 ; i < n ; i++) + x[i] = 1103515145 * x[i-1] + 12345 ; +} + +static void +glibc2_initialize (long int * x, int n, unsigned long int s) +{ + int i; + + if (s == 0) + s = 1 ; + + x[0] = s; + + for (i = 1 ; i < n ; i++) + { + const long int h = s / 127773; + const long int t = 16807 * (s - h * 127773) - h * 2836; + if (t < 0) + { + s = t + 2147483647 ; + } + else + { + s = t ; + } + + x[i] = s ; + } +} + +static void +random8_glibc2_set (void *vstate, unsigned long int s) +{ + random8_state_t *state = (random8_state_t *) vstate; + + if (s == 0) + s = 1; + + state->x = s; +} + +static void +random32_glibc2_set (void *vstate, unsigned long int s) +{ + random32_state_t *state = (random32_state_t *) vstate; + int i; + + glibc2_initialize (state->x, 7, s) ; + + state->i = 3; + state->j = 0; + + for (i = 0 ; i < 10 * 7 ; i++) + random32_get (state) ; +} + +static void +random64_glibc2_set (void *vstate, unsigned long int s) +{ + random64_state_t *state = (random64_state_t *) vstate; + int i; + + glibc2_initialize (state->x, 15, s) ; + + state->i = 1; + state->j = 0; + + for (i = 0 ; i < 10 * 15 ; i++) + random64_get (state) ; +} + +static void +random128_glibc2_set (void *vstate, unsigned long int s) +{ + random128_state_t *state = (random128_state_t *) vstate; + int i; + + glibc2_initialize (state->x, 31, s) ; + + state->i = 3; + state->j = 0; + + for (i = 0 ; i < 10 * 31 ; i++) + random128_get (state) ; +} + +static void +random256_glibc2_set (void *vstate, unsigned long int s) +{ + random256_state_t *state = (random256_state_t *) vstate; + int i; + + glibc2_initialize (state->x, 63, s) ; + + state->i = 1; + state->j = 0; + + for (i = 0 ; i < 10 * 63 ; i++) + random256_get (state) ; +} + + +static void +random8_libc5_set (void *vstate, unsigned long int s) +{ + random8_state_t *state = (random8_state_t *) vstate; + + if (s == 0) + s = 1; + + state->x = s; +} + +static void +random32_libc5_set (void *vstate, unsigned long int s) +{ + random32_state_t *state = (random32_state_t *) vstate; + int i; + + libc5_initialize (state->x, 7, s) ; + + state->i = 3; + state->j = 0; + + for (i = 0 ; i < 10 * 7 ; i++) + random32_get (state) ; +} + +static void +random64_libc5_set (void *vstate, unsigned long int s) +{ + random64_state_t *state = (random64_state_t *) vstate; + int i; + + libc5_initialize (state->x, 15, s) ; + + state->i = 1; + state->j = 0; + + for (i = 0 ; i < 10 * 15 ; i++) + random64_get (state) ; +} + +static void +random128_libc5_set (void *vstate, unsigned long int s) +{ + random128_state_t *state = (random128_state_t *) vstate; + int i; + + libc5_initialize (state->x, 31, s) ; + + state->i = 3; + state->j = 0; + + for (i = 0 ; i < 10 * 31 ; i++) + random128_get (state) ; +} + +static void +random256_libc5_set (void *vstate, unsigned long int s) +{ + random256_state_t *state = (random256_state_t *) vstate; + int i; + + libc5_initialize (state->x, 63, s) ; + + state->i = 1; + state->j = 0; + + for (i = 0 ; i < 10 * 63 ; i++) + random256_get (state) ; +} + +static const gsl_rng_type random_glibc2_type = +{"random-glibc2", /* name */ + 0x7fffffffUL, /* RAND_MAX */ + 0, /* RAND_MIN */ + sizeof (random128_state_t), + &random128_glibc2_set, + &random128_get, + &random128_get_double}; + +static const gsl_rng_type random8_glibc2_type = +{"random8-glibc2", /* name */ + 0x7fffffffUL, /* RAND_MAX */ + 0, /* RAND_MIN */ + sizeof (random8_state_t), + &random8_glibc2_set, + &random8_get, + &random8_get_double}; + +static const gsl_rng_type random32_glibc2_type = +{"random32-glibc2", /* name */ + 0x7fffffffUL, /* RAND_MAX */ + 0, /* RAND_MIN */ + sizeof (random32_state_t), + &random32_glibc2_set, + &random32_get, + &random32_get_double}; + +static const gsl_rng_type random64_glibc2_type = +{"random64-glibc2", /* name */ + 0x7fffffffUL, /* RAND_MAX */ + 0, /* RAND_MIN */ + sizeof (random64_state_t), + &random64_glibc2_set, + &random64_get, + &random64_get_double}; + +static const gsl_rng_type random128_glibc2_type = +{"random128-glibc2", /* name */ + 0x7fffffffUL, /* RAND_MAX */ + 0, /* RAND_MIN */ + sizeof (random128_state_t), + &random128_glibc2_set, + &random128_get, + &random128_get_double}; + +static const gsl_rng_type random256_glibc2_type = +{"random256-glibc2", /* name */ + 0x7fffffffUL, /* RAND_MAX */ + 0, /* RAND_MIN */ + sizeof (random256_state_t), + &random256_glibc2_set, + &random256_get, + &random256_get_double}; + +static const gsl_rng_type random_libc5_type = +{"random-libc5", /* name */ + 0x7fffffffUL, /* RAND_MAX */ + 0, /* RAND_MIN */ + sizeof (random128_state_t), + &random128_libc5_set, + &random128_get, + &random128_get_double}; + +static const gsl_rng_type random8_libc5_type = +{"random8-libc5", /* name */ + 0x7fffffffUL, /* RAND_MAX */ + 0, /* RAND_MIN */ + sizeof (random8_state_t), + &random8_libc5_set, + &random8_get, + &random8_get_double}; + +static const gsl_rng_type random32_libc5_type = +{"random32-libc5", /* name */ + 0x7fffffffUL, /* RAND_MAX */ + 0, /* RAND_MIN */ + sizeof (random32_state_t), + &random32_libc5_set, + &random32_get, + &random32_get_double}; + +static const gsl_rng_type random64_libc5_type = +{"random64-libc5", /* name */ + 0x7fffffffUL, /* RAND_MAX */ + 0, /* RAND_MIN */ + sizeof (random64_state_t), + &random64_libc5_set, + &random64_get, + &random64_get_double}; + +static const gsl_rng_type random128_libc5_type = +{"random128-libc5", /* name */ + 0x7fffffffUL, /* RAND_MAX */ + 0, /* RAND_MIN */ + sizeof (random128_state_t), + &random128_libc5_set, + &random128_get, + &random128_get_double}; + +static const gsl_rng_type random256_libc5_type = +{"random256-libc5", /* name */ + 0x7fffffffUL, /* RAND_MAX */ + 0, /* RAND_MIN */ + sizeof (random256_state_t), + &random256_libc5_set, + &random256_get, + &random256_get_double}; + +static const gsl_rng_type random_bsd_type = +{"random-bsd", /* name */ + 0x7fffffffUL, /* RAND_MAX */ + 0, /* RAND_MIN */ + sizeof (random128_state_t), + &random128_bsd_set, + &random128_get, + &random128_get_double}; + +static const gsl_rng_type random8_bsd_type = +{"random8-bsd", /* name */ + 0x7fffffffUL, /* RAND_MAX */ + 0, /* RAND_MIN */ + sizeof (random8_state_t), + &random8_bsd_set, + &random8_get, + &random8_get_double}; + +static const gsl_rng_type random32_bsd_type = +{"random32-bsd", /* name */ + 0x7fffffffUL, /* RAND_MAX */ + 0, /* RAND_MIN */ + sizeof (random32_state_t), + &random32_bsd_set, + &random32_get, + &random32_get_double}; + +static const gsl_rng_type random64_bsd_type = +{"random64-bsd", /* name */ + 0x7fffffffUL, /* RAND_MAX */ + 0, /* RAND_MIN */ + sizeof (random64_state_t), + &random64_bsd_set, + &random64_get, + &random64_get_double}; + +static const gsl_rng_type random128_bsd_type = +{"random128-bsd", /* name */ + 0x7fffffffUL, /* RAND_MAX */ + 0, /* RAND_MIN */ + sizeof (random128_state_t), + &random128_bsd_set, + &random128_get, + &random128_get_double}; + +static const gsl_rng_type random256_bsd_type = +{"random256-bsd", /* name */ + 0x7fffffffUL, /* RAND_MAX */ + 0, /* RAND_MIN */ + sizeof (random256_state_t), + &random256_bsd_set, + &random256_get, + &random256_get_double}; + +const gsl_rng_type *gsl_rng_random_libc5 = &random_libc5_type; +const gsl_rng_type *gsl_rng_random8_libc5 = &random8_libc5_type; +const gsl_rng_type *gsl_rng_random32_libc5 = &random32_libc5_type; +const gsl_rng_type *gsl_rng_random64_libc5 = &random64_libc5_type; +const gsl_rng_type *gsl_rng_random128_libc5 = &random128_libc5_type; +const gsl_rng_type *gsl_rng_random256_libc5 = &random256_libc5_type; + +const gsl_rng_type *gsl_rng_random_glibc2 = &random_glibc2_type; +const gsl_rng_type *gsl_rng_random8_glibc2 = &random8_glibc2_type; +const gsl_rng_type *gsl_rng_random32_glibc2 = &random32_glibc2_type; +const gsl_rng_type *gsl_rng_random64_glibc2 = &random64_glibc2_type; +const gsl_rng_type *gsl_rng_random128_glibc2 = &random128_glibc2_type; +const gsl_rng_type *gsl_rng_random256_glibc2 = &random256_glibc2_type; + +const gsl_rng_type *gsl_rng_random_bsd = &random_bsd_type; +const gsl_rng_type *gsl_rng_random8_bsd = &random8_bsd_type; +const gsl_rng_type *gsl_rng_random32_bsd = &random32_bsd_type; +const gsl_rng_type *gsl_rng_random64_bsd = &random64_bsd_type; +const gsl_rng_type *gsl_rng_random128_bsd = &random128_bsd_type; +const gsl_rng_type *gsl_rng_random256_bsd = &random256_bsd_type; + + + + diff --git a/gsl-2.5/rng/random.lo b/gsl-2.5/rng/random.lo new file mode 100644 index 00000000..b2515df0 --- /dev/null +++ b/gsl-2.5/rng/random.lo @@ -0,0 +1,12 @@ +# random.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/random.o' + +# Name of the non-PIC object +non_pic_object='random.o' + diff --git a/gsl-2.5/rng/randu.c b/gsl-2.5/rng/randu.c new file mode 100644 index 00000000..420aa387 --- /dev/null +++ b/gsl-2.5/rng/randu.c @@ -0,0 +1,95 @@ +/* rng/randu.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 James Theiler, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include + +/* This is a reincarnation of the infamously bad RANDU generator. + The sequence is, + + x_{n+1} = (a x_n) mod m + + with a = 65539 and m = 2^31 = 2147483648. The seed specifies + the initial value, x_1. + + The theoretical value of x_{10001} is 1623524161. + + The period of this generator is 2^29. + + Note: Knuth describes this generator as "really horrible". + + From: Park and Miller, "Random Number Generators: Good ones are + hard to find" Communications of the ACM, October 1988, Volume 31, + No 10, pages 1192-1201. */ + +static inline unsigned long int randu_get (void *vstate); +static double randu_get_double (void *vstate); +static void randu_set (void *state, unsigned long int s); + +static const long int a = 65539; +/* static const unsigned long int m = 2147483648UL; */ + +typedef struct + { + unsigned long int x; + } +randu_state_t; + +static inline unsigned long int +randu_get (void *vstate) +{ + randu_state_t *state = (randu_state_t *) vstate; + + /* The following line relies on unsigned 32-bit arithmetic */ + + state->x = (a * state->x) & 0x7fffffffUL; + + return state->x; +} + +static double +randu_get_double (void *vstate) +{ + return randu_get (vstate) / 2147483648.0 ; +} + +static void +randu_set (void *vstate, unsigned long int s) +{ + randu_state_t *state = (randu_state_t *) vstate; + + if (s == 0) + s = 1; /* default seed is 1 */ + + state->x = s; + + return; +} + +static const gsl_rng_type randu_type = +{"randu", /* name */ + 0x7fffffffUL, /* RAND_MAX */ + 1, /* RAND_MIN */ + sizeof (randu_state_t), + &randu_set, + &randu_get, + &randu_get_double}; + +const gsl_rng_type *gsl_rng_randu = &randu_type; diff --git a/gsl-2.5/rng/randu.lo b/gsl-2.5/rng/randu.lo new file mode 100644 index 00000000..3b3b5404 --- /dev/null +++ b/gsl-2.5/rng/randu.lo @@ -0,0 +1,12 @@ +# randu.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/randu.o' + +# Name of the non-PIC object +non_pic_object='randu.o' + diff --git a/gsl-2.5/rng/ranf.c b/gsl-2.5/rng/ranf.c new file mode 100644 index 00000000..a35fdcac --- /dev/null +++ b/gsl-2.5/rng/ranf.c @@ -0,0 +1,162 @@ +/* rng/ranf.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 James Theiler, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include + +/* This is the CRAY RANF generator. The generator returns the + upper 32 bits from each term of the sequence, + + x_{n+1} = (a x_n) mod m + + using 48-bit unsigned arithmetic, with a = 0x2875A2E7B175 and m = + 2^48. The seed specifies the lower 32 bits of the initial value, + x_1, with the lowest bit set (to prevent the seed taking an even + value), and the upper 16 bits set to 0. + + There is a subtlety in the implementation of the seed. The initial + state is put one step back by multiplying by the modular inverse of + a mod m. This is done for compatibility with the original CRAY + implementation. + + Note, you can only seed the generator with integers up to 2^32, + while the CRAY uses wide integers which can cover all 2^48 states + of the generator. + + The theoretical value of x_{10001} is 141091827447341. + + The period of this generator is 2^{46}. */ + +static inline void ranf_advance (void *vstate); +static unsigned long int ranf_get (void *vstate); +static double ranf_get_double (void *vstate); +static void ranf_set (void *state, unsigned long int s); + +static const unsigned short int a0 = 0xB175 ; +static const unsigned short int a1 = 0xA2E7 ; +static const unsigned short int a2 = 0x2875 ; + +typedef struct + { + unsigned short int x0, x1, x2; + } +ranf_state_t; + +static inline void +ranf_advance (void *vstate) +{ + ranf_state_t *state = (ranf_state_t *) vstate; + + const unsigned long int x0 = (unsigned long int) state->x0 ; + const unsigned long int x1 = (unsigned long int) state->x1 ; + const unsigned long int x2 = (unsigned long int) state->x2 ; + + unsigned long int r ; + + r = a0 * x0 ; + state->x0 = (r & 0xFFFF) ; + + r >>= 16 ; + r += a0 * x1 + a1 * x0 ; + state->x1 = (r & 0xFFFF) ; + + r >>= 16 ; + r += a0 * x2 + a1 * x1 + a2 * x0 ; + state->x2 = (r & 0xFFFF) ; +} + +static unsigned long int +ranf_get (void *vstate) +{ + unsigned long int x1, x2; + + ranf_state_t *state = (ranf_state_t *) vstate; + ranf_advance (state) ; + + x1 = (unsigned long int) state->x1; + x2 = (unsigned long int) state->x2; + + return (x2 << 16) + x1; +} + +static double +ranf_get_double (void * vstate) +{ + ranf_state_t *state = (ranf_state_t *) vstate; + + ranf_advance (state) ; + + return (ldexp((double) state->x2, -16) + + ldexp((double) state->x1, -32) + + ldexp((double) state->x0, -48)) ; +} + +static void +ranf_set (void *vstate, unsigned long int s) +{ + ranf_state_t *state = (ranf_state_t *) vstate; + + unsigned short int x0, x1, x2 ; + unsigned long int r ; + + unsigned long int b0 = 0xD6DD ; + unsigned long int b1 = 0xB894 ; + unsigned long int b2 = 0x5CEE ; + + if (s == 0) /* default seed */ + { + x0 = 0x9CD1 ; + x1 = 0x53FC ; + x2 = 0x9482 ; + } + else + { + x0 = (s | 1) & 0xFFFF ; + x1 = s >> 16 & 0xFFFF ; + x2 = 0 ; + } + + r = b0 * x0 ; + state->x0 = (r & 0xFFFF) ; + + r >>= 16 ; + r += b0 * x1 + b1 * x0 ; + state->x1 = (r & 0xFFFF) ; + + r >>= 16 ; + r += b0 * x2 + b1 * x1 + b2 * x0 ; + state->x2 = (r & 0xFFFF) ; + + return; +} + +static const gsl_rng_type ranf_type = +{"ranf", /* name */ + 0xffffffffUL, /* RAND_MAX */ + 0, /* RAND_MIN */ + sizeof (ranf_state_t), + &ranf_set, + &ranf_get, + &ranf_get_double +}; + +const gsl_rng_type *gsl_rng_ranf = &ranf_type; diff --git a/gsl-2.5/rng/ranf.lo b/gsl-2.5/rng/ranf.lo new file mode 100644 index 00000000..1f24f2a6 --- /dev/null +++ b/gsl-2.5/rng/ranf.lo @@ -0,0 +1,12 @@ +# ranf.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/ranf.o' + +# Name of the non-PIC object +non_pic_object='ranf.o' + diff --git a/gsl-2.5/rng/ranlux.c b/gsl-2.5/rng/ranlux.c new file mode 100644 index 00000000..2bd77065 --- /dev/null +++ b/gsl-2.5/rng/ranlux.c @@ -0,0 +1,222 @@ +/* rng/ranlux.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 James Theiler, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include + +/* This is a lagged fibonacci generator with skipping developed by Luescher. + The sequence is a series of 24-bit integers, x_n, + + x_n = d_n + b_n + + where d_n = x_{n-10} - x_{n-24} - c_{n-1}, b_n = 0 if d_n >= 0 and + b_n = 2^24 if d_n < 0, c_n = 0 if d_n >= 0 and c_n = 1 if d_n < 0, + where after 24 samples a group of p integers are "skipped", to + reduce correlations. By default p = 199, but can be increased to + 365. + + The period of the generator is around 10^171. + + From: M. Luescher, "A portable high-quality random number generator + for lattice field theory calculations", Computer Physics + Communications, 79 (1994) 100-110. + + Available on the net as hep-lat/9309020 at http://xxx.lanl.gov/ + + See also, + + F. James, "RANLUX: A Fortran implementation of the high-quality + pseudo-random number generator of Luscher", Computer Physics + Communications, 79 (1994) 111-114 + + Kenneth G. Hamilton, F. James, "Acceleration of RANLUX", Computer + Physics Communications, 101 (1997) 241-248 + + Kenneth G. Hamilton, "Assembler RANLUX for PCs", Computer Physics + Communications, 101 (1997) 249-253 */ + +static inline unsigned long int ranlux_get (void *vstate); +static double ranlux_get_double (void *vstate); +static void ranlux_set_lux (void *state, unsigned long int s, unsigned int luxury); +static void ranlux_set (void *state, unsigned long int s); +static void ranlux389_set (void *state, unsigned long int s); + +static const unsigned long int mask_lo = 0x00ffffffUL; /* 2^24 - 1 */ +static const unsigned long int mask_hi = ~0x00ffffffUL; +static const unsigned long int two24 = 16777216; /* 2^24 */ + +typedef struct + { + unsigned int i; + unsigned int j; + unsigned int n; + unsigned int skip; + unsigned int carry; + unsigned long int u[24]; + } +ranlux_state_t; + +static inline unsigned long int increment_state (ranlux_state_t * state); + +static inline unsigned long int +increment_state (ranlux_state_t * state) +{ + unsigned int i = state->i; + unsigned int j = state->j; + long int delta = state->u[j] - state->u[i] - state->carry; + + if (delta & mask_hi) + { + state->carry = 1; + delta &= mask_lo; + } + else + { + state->carry = 0; + } + + state->u[i] = delta; + + if (i == 0) + { + i = 23; + } + else + { + i--; + } + + state->i = i; + + if (j == 0) + { + j = 23; + } + else + { + j--; + } + + state->j = j; + + return delta; +} + +static inline unsigned long int +ranlux_get (void *vstate) +{ + ranlux_state_t *state = (ranlux_state_t *) vstate; + const unsigned int skip = state->skip; + unsigned long int r = increment_state (state); + + state->n++; + + if (state->n == 24) + { + unsigned int i; + state->n = 0; + for (i = 0; i < skip; i++) + increment_state (state); + } + + return r; +} + +static double +ranlux_get_double (void *vstate) +{ + return ranlux_get (vstate) / 16777216.0; +} + +static void +ranlux_set_lux (void *vstate, unsigned long int s, unsigned int luxury) +{ + ranlux_state_t *state = (ranlux_state_t *) vstate; + int i; + + long int seed; + + if (s == 0) + s = 314159265; /* default seed is 314159265 */ + + seed = s; + + /* This is the initialization algorithm of F. James, widely in use + for RANLUX. */ + + for (i = 0; i < 24; i++) + { + unsigned long int k = seed / 53668; + seed = 40014 * (seed - k * 53668) - k * 12211; + if (seed < 0) + { + seed += 2147483563; + } + state->u[i] = seed % two24; + } + + state->i = 23; + state->j = 9; + state->n = 0; + state->skip = luxury - 24; + + if (state->u[23] & mask_hi) + { + state->carry = 1; + } + else + { + state->carry = 0; + } +} + +static void +ranlux_set (void *vstate, unsigned long int s) +{ + ranlux_set_lux (vstate, s, 223); +} + +static void +ranlux389_set (void *vstate, unsigned long int s) +{ + ranlux_set_lux (vstate, s, 389); +} + + +static const gsl_rng_type ranlux_type = +{"ranlux", /* name */ + 0x00ffffffUL, /* RAND_MAX */ + 0, /* RAND_MIN */ + sizeof (ranlux_state_t), + &ranlux_set, + &ranlux_get, + &ranlux_get_double}; + +static const gsl_rng_type ranlux389_type = +{"ranlux389", /* name */ + 0x00ffffffUL, /* RAND_MAX */ + 0, /* RAND_MIN */ + sizeof (ranlux_state_t), + &ranlux389_set, + &ranlux_get, + &ranlux_get_double}; + +const gsl_rng_type *gsl_rng_ranlux = &ranlux_type; +const gsl_rng_type *gsl_rng_ranlux389 = &ranlux389_type; diff --git a/gsl-2.5/rng/ranlux.lo b/gsl-2.5/rng/ranlux.lo new file mode 100644 index 00000000..9f60e16d --- /dev/null +++ b/gsl-2.5/rng/ranlux.lo @@ -0,0 +1,12 @@ +# ranlux.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/ranlux.o' + +# Name of the non-PIC object +non_pic_object='ranlux.o' + diff --git a/gsl-2.5/rng/ranlxd.c b/gsl-2.5/rng/ranlxd.c new file mode 100644 index 00000000..af01f6fe --- /dev/null +++ b/gsl-2.5/rng/ranlxd.c @@ -0,0 +1,249 @@ +/* rng/ranlxd.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 James Theiler, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include + +/* This is an implementation of Martin Luescher's second generation + double-precision (48-bit) version of the RANLUX generator. + + Thanks to Martin Luescher for providing information on this + generator. + +*/ + +static inline unsigned long int ranlxd_get (void *vstate); +static double ranlxd_get_double (void *vstate); +static void ranlxd_set_lux (void *state, unsigned long int s, unsigned int luxury); +static void ranlxd1_set (void *state, unsigned long int s); +static void ranlxd2_set (void *state, unsigned long int s); + +static const int next[12] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 0}; + +static const double one_bit = 1.0 / 281474976710656.0; /* 1/2^48 */ + +#define RANLUX_STEP(x1,x2,i1,i2,i3) \ + x1=xdbl[i1] - xdbl[i2]; \ + if (x2 < 0) \ + { \ + x1-=one_bit; \ + x2+=1; \ + } \ + xdbl[i3]=x2 + +typedef struct + { + double xdbl[12]; + double carry; + unsigned int ir; + unsigned int jr; + unsigned int ir_old; + unsigned int pr; + } +ranlxd_state_t; + +static inline void increment_state (ranlxd_state_t * state); + +static inline void +increment_state (ranlxd_state_t * state) +{ + int k, kmax; + double y1, y2, y3; + + double *xdbl = state->xdbl; + double carry = state->carry; + unsigned int ir = state->ir; + unsigned int jr = state->jr; + + for (k = 0; ir > 0; ++k) + { + y1 = xdbl[jr] - xdbl[ir]; + y2 = y1 - carry; + if (y2 < 0) + { + carry = one_bit; + y2 += 1; + } + else + { + carry = 0; + } + xdbl[ir] = y2; + ir = next[ir]; + jr = next[jr]; + } + + kmax = state->pr - 12; + + for (; k <= kmax; k += 12) + { + y1 = xdbl[7] - xdbl[0]; + y1 -= carry; + + RANLUX_STEP (y2, y1, 8, 1, 0); + RANLUX_STEP (y3, y2, 9, 2, 1); + RANLUX_STEP (y1, y3, 10, 3, 2); + RANLUX_STEP (y2, y1, 11, 4, 3); + RANLUX_STEP (y3, y2, 0, 5, 4); + RANLUX_STEP (y1, y3, 1, 6, 5); + RANLUX_STEP (y2, y1, 2, 7, 6); + RANLUX_STEP (y3, y2, 3, 8, 7); + RANLUX_STEP (y1, y3, 4, 9, 8); + RANLUX_STEP (y2, y1, 5, 10, 9); + RANLUX_STEP (y3, y2, 6, 11, 10); + + if (y3 < 0) + { + carry = one_bit; + y3 += 1; + } + else + { + carry = 0; + } + xdbl[11] = y3; + } + + kmax = state->pr; + + for (; k < kmax; ++k) + { + y1 = xdbl[jr] - xdbl[ir]; + y2 = y1 - carry; + if (y2 < 0) + { + carry = one_bit; + y2 += 1; + } + else + { + carry = 0; + } + xdbl[ir] = y2; + ir = next[ir]; + jr = next[jr]; + } + state->ir = ir; + state->ir_old = ir; + state->jr = jr; + state->carry = carry; +} + +static inline unsigned long int +ranlxd_get (void *vstate) +{ + return ranlxd_get_double (vstate) * 4294967296.0; /* 2^32 */ +} + +static double +ranlxd_get_double (void *vstate) +{ + ranlxd_state_t *state = (ranlxd_state_t *) vstate; + + int ir = state->ir; + + state->ir = next[ir]; + + if (state->ir == state->ir_old) + increment_state (state); + + return state->xdbl[state->ir]; +} + +static void +ranlxd_set_lux (void *vstate, unsigned long int s, unsigned int luxury) +{ + ranlxd_state_t *state = (ranlxd_state_t *) vstate; + + int ibit, jbit, i, k, l, xbit[31]; + double x, y; + + long int seed; + + if (s == 0) + s = 1; /* default seed is 1 */ + + seed = s; + + i = seed & 0xFFFFFFFFUL; + + for (k = 0; k < 31; ++k) + { + xbit[k] = i % 2; + i /= 2; + } + + ibit = 0; + jbit = 18; + + for (k = 0; k < 12; ++k) + { + x = 0; + + for (l = 1; l <= 48; ++l) + { + y = (double) ((xbit[ibit] + 1) % 2); + x += x + y; + xbit[ibit] = (xbit[ibit] + xbit[jbit]) % 2; + ibit = (ibit + 1) % 31; + jbit = (jbit + 1) % 31; + } + state->xdbl[k] = one_bit * x; + } + + state->carry = 0; + state->ir = 11; + state->jr = 7; + state->ir_old = 0; + state->pr = luxury; +} + +static void +ranlxd1_set (void *vstate, unsigned long int s) +{ + ranlxd_set_lux (vstate, s, 202); +} + +static void +ranlxd2_set (void *vstate, unsigned long int s) +{ + ranlxd_set_lux (vstate, s, 397); +} + +static const gsl_rng_type ranlxd1_type = +{"ranlxd1", /* name */ + 0xffffffffUL, /* RAND_MAX */ + 0, /* RAND_MIN */ + sizeof (ranlxd_state_t), + &ranlxd1_set, + &ranlxd_get, + &ranlxd_get_double}; + +static const gsl_rng_type ranlxd2_type = +{"ranlxd2", /* name */ + 0xffffffffUL, /* RAND_MAX */ + 0, /* RAND_MIN */ + sizeof (ranlxd_state_t), + &ranlxd2_set, + &ranlxd_get, + &ranlxd_get_double}; + +const gsl_rng_type *gsl_rng_ranlxd1 = &ranlxd1_type; +const gsl_rng_type *gsl_rng_ranlxd2 = &ranlxd2_type; diff --git a/gsl-2.5/rng/ranlxd.lo b/gsl-2.5/rng/ranlxd.lo new file mode 100644 index 00000000..f685e794 --- /dev/null +++ b/gsl-2.5/rng/ranlxd.lo @@ -0,0 +1,12 @@ +# ranlxd.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/ranlxd.o' + +# Name of the non-PIC object +non_pic_object='ranlxd.o' + diff --git a/gsl-2.5/rng/ranlxs.c b/gsl-2.5/rng/ranlxs.c new file mode 100644 index 00000000..a88ce772 --- /dev/null +++ b/gsl-2.5/rng/ranlxs.c @@ -0,0 +1,302 @@ +/* rng/ranlxs.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 James Theiler, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include + +/* This is an implementation of M. Luescher's second generation + version of the RANLUX generator. + + Thanks to Martin Luescher for providing information on this + generator. + + */ + +static unsigned long int ranlxs_get (void *vstate); +static inline double ranlxs_get_double (void *vstate); +static void ranlxs_set_lux (void *state, unsigned long int s, unsigned int luxury); +static void ranlxs0_set (void *state, unsigned long int s); +static void ranlxs1_set (void *state, unsigned long int s); +static void ranlxs2_set (void *state, unsigned long int s); + +static const int next[12] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 0}; +static const int snext[24] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, + 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 0}; + +static const double sbase = 16777216.0; /* 2^24 */ +static const double sone_bit = 1.0 / 16777216.0; /* 1/2^24 */ +static const double one_bit = 1.0 / 281474976710656.0; /* 1/2^48 */ + +static const double shift = 268435456.0; /* 2^28 */ + +#define RANLUX_STEP(x1,x2,i1,i2,i3) \ + x1=xdbl[i1] - xdbl[i2]; \ + if (x2 < 0) \ + { \ + x1-=one_bit; \ + x2+=1; \ + } \ + xdbl[i3]=x2 + +typedef struct + { + double xdbl[12], ydbl[12]; /* doubles first so they are 8-byte aligned */ + double carry; + float xflt[24]; + unsigned int ir; + unsigned int jr; + unsigned int is; + unsigned int is_old; + unsigned int pr; + } +ranlxs_state_t; + +static void increment_state (ranlxs_state_t * state); + +static void +increment_state (ranlxs_state_t * state) +{ + int k, kmax, m; + double x, y1, y2, y3; + + float *xflt = state->xflt; + double *xdbl = state->xdbl; + double *ydbl = state->ydbl; + double carry = state->carry; + unsigned int ir = state->ir; + unsigned int jr = state->jr; + + for (k = 0; ir > 0; ++k) + { + y1 = xdbl[jr] - xdbl[ir]; + y2 = y1 - carry; + if (y2 < 0) + { + carry = one_bit; + y2 += 1; + } + else + { + carry = 0; + } + xdbl[ir] = y2; + ir = next[ir]; + jr = next[jr]; + } + + kmax = state->pr - 12; + + for (; k <= kmax; k += 12) + { + y1 = xdbl[7] - xdbl[0]; + y1 -= carry; + + RANLUX_STEP (y2, y1, 8, 1, 0); + RANLUX_STEP (y3, y2, 9, 2, 1); + RANLUX_STEP (y1, y3, 10, 3, 2); + RANLUX_STEP (y2, y1, 11, 4, 3); + RANLUX_STEP (y3, y2, 0, 5, 4); + RANLUX_STEP (y1, y3, 1, 6, 5); + RANLUX_STEP (y2, y1, 2, 7, 6); + RANLUX_STEP (y3, y2, 3, 8, 7); + RANLUX_STEP (y1, y3, 4, 9, 8); + RANLUX_STEP (y2, y1, 5, 10, 9); + RANLUX_STEP (y3, y2, 6, 11, 10); + + if (y3 < 0) + { + carry = one_bit; + y3 += 1; + } + else + { + carry = 0; + } + xdbl[11] = y3; + } + + kmax = state->pr; + + for (; k < kmax; ++k) + { + y1 = xdbl[jr] - xdbl[ir]; + y2 = y1 - carry; + if (y2 < 0) + { + carry = one_bit; + y2 += 1; + } + else + { + carry = 0; + } + xdbl[ir] = y2; + ydbl[ir] = y2 + shift; + ir = next[ir]; + jr = next[jr]; + } + + ydbl[ir] = xdbl[ir] + shift; + + for (k = next[ir]; k > 0;) + { + ydbl[k] = xdbl[k] + shift; + k = next[k]; + } + + for (k = 0, m = 0; k < 12; ++k) + { + x = xdbl[k]; + y2 = ydbl[k] - shift; + if (y2 > x) + y2 -= sone_bit; + y1 = (x - y2) * sbase; + + xflt[m++] = (float) y1; + xflt[m++] = (float) y2; + } + + state->ir = ir; + state->is = 2 * ir; + state->is_old = 2 * ir; + state->jr = jr; + state->carry = carry; +} + + +static inline double +ranlxs_get_double (void *vstate) +{ + ranlxs_state_t *state = (ranlxs_state_t *) vstate; + + const unsigned int is = snext[state->is]; + + state->is = is; + + if (is == state->is_old) + increment_state (state); + + return state->xflt[state->is]; +} + +static unsigned long int +ranlxs_get (void *vstate) +{ + return ranlxs_get_double (vstate) * 16777216.0; /* 2^24 */ +} + +static void +ranlxs_set_lux (void *vstate, unsigned long int s, unsigned int luxury) +{ + ranlxs_state_t *state = (ranlxs_state_t *) vstate; + + int ibit, jbit, i, k, m, xbit[31]; + double x, y; + + long int seed; + + if (s == 0) + s = 1; /* default seed is 1 */ + + seed = s; + + i = seed & 0x7FFFFFFFUL; /* Allowed seeds for ranlxs are 0 .. 2^31-1 */ + + for (k = 0; k < 31; ++k) + { + xbit[k] = i % 2; + i /= 2; + } + + ibit = 0; + jbit = 18; + + for (k = 0; k < 12; ++k) + { + x = 0; + + for (m = 1; m <= 48; ++m) + { + y = (double) xbit[ibit]; + x += x + y; + xbit[ibit] = (xbit[ibit] + xbit[jbit]) % 2; + ibit = (ibit + 1) % 31; + jbit = (jbit + 1) % 31; + } + state->xdbl[k] = one_bit * x; + } + + state->carry = 0; + state->ir = 0; + state->jr = 7; + state->is = 23; + state->is_old = 0; + state->pr = luxury; +} + +static void +ranlxs0_set (void *vstate, unsigned long int s) +{ + ranlxs_set_lux (vstate, s, 109); +} + +void +ranlxs1_set (void *vstate, unsigned long int s) +{ + ranlxs_set_lux (vstate, s, 202); +} + +static void +ranlxs2_set (void *vstate, unsigned long int s) +{ + ranlxs_set_lux (vstate, s, 397); +} + + +static const gsl_rng_type ranlxs0_type = +{"ranlxs0", /* name */ + 0x00ffffffUL, /* RAND_MAX */ + 0, /* RAND_MIN */ + sizeof (ranlxs_state_t), + &ranlxs0_set, + &ranlxs_get, + &ranlxs_get_double}; + +static const gsl_rng_type ranlxs1_type = +{"ranlxs1", /* name */ + 0x00ffffffUL, /* RAND_MAX */ + 0, /* RAND_MIN */ + sizeof (ranlxs_state_t), + &ranlxs1_set, + &ranlxs_get, + &ranlxs_get_double}; + +static const gsl_rng_type ranlxs2_type = +{"ranlxs2", /* name */ + 0x00ffffffUL, /* RAND_MAX */ + 0, /* RAND_MIN */ + sizeof (ranlxs_state_t), + &ranlxs2_set, + &ranlxs_get, + &ranlxs_get_double}; + +const gsl_rng_type *gsl_rng_ranlxs0 = &ranlxs0_type; +const gsl_rng_type *gsl_rng_ranlxs1 = &ranlxs1_type; +const gsl_rng_type *gsl_rng_ranlxs2 = &ranlxs2_type; diff --git a/gsl-2.5/rng/ranlxs.lo b/gsl-2.5/rng/ranlxs.lo new file mode 100644 index 00000000..6dba6849 --- /dev/null +++ b/gsl-2.5/rng/ranlxs.lo @@ -0,0 +1,12 @@ +# ranlxs.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/ranlxs.o' + +# Name of the non-PIC object +non_pic_object='ranlxs.o' + diff --git a/gsl-2.5/rng/ranmar.c b/gsl-2.5/rng/ranmar.c new file mode 100644 index 00000000..61a07d89 --- /dev/null +++ b/gsl-2.5/rng/ranmar.c @@ -0,0 +1,173 @@ +/* rng/ranmar.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 James Theiler, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include + +/* This is the RANMAR lagged fibonacci generator of Marsaglia, Zaman + and Tsang. The sequence is a series of 24-bit integers, x_n, + + x_n = (y_n - c_n + 2^24) mod 2^24 + + where, + + y_n = (y_{n-97) - y_{n-33} + 2^24) mod 2^24 + c_n = (c_{n-1} - 7654321 + 2^24 - 3) mod (2^24 - 3) + + The period of this generator is 2^144. + + The generator provides about 900 million different subsequences + each of length O(10^30). Thus each seed up to 900,000,000 gives an + independent sequence. + + Although it was good in its day this generator now has known + statistical defects and has been superseded by RANLUX. + + From: F. James, "A Review of Pseudorandom number generators", + Computer Physics Communications 60, 329 (1990). + + G. Marsaglia, A. Zaman and W.W. Tsang, Stat. Prob. Lett. 9, 35 (1990) */ + +static inline unsigned long int ranmar_get (void *vstate); +static double ranmar_get_double (void *vstate); +static void ranmar_set (void *state, unsigned long int s); + +static const unsigned long int two24 = 16777216; /* 2^24 */ + +typedef struct + { + unsigned int i; + unsigned int j; + long int carry; + unsigned long int u[97]; + } +ranmar_state_t; + +static inline unsigned long int +ranmar_get (void *vstate) +{ + ranmar_state_t *state = (ranmar_state_t *) vstate; + + unsigned int i = state->i; + unsigned int j = state->j; + long int carry = state->carry; + + long int delta = state->u[i] - state->u[j]; + + if (delta < 0) + delta += two24 ; + + state->u[i] = delta; + + if (i == 0) + { + i = 96; + } + else + { + i--; + } + + state->i = i; + + if (j == 0) + { + j = 96; + } + else + { + j--; + } + + state->j = j; + + carry += - 7654321 ; + + if (carry < 0) + carry += two24 - 3; + + state->carry = carry ; + + delta += - carry ; + + if (delta < 0) + delta += two24 ; + + return delta; +} + +static double +ranmar_get_double (void *vstate) +{ + return ranmar_get (vstate) / 16777216.0 ; +} + +static void +ranmar_set (void *vstate, unsigned long int s) +{ + ranmar_state_t *state = (ranmar_state_t *) vstate; + + unsigned long int ij = s / 30082 ; + unsigned long int kl = s % 30082 ; + + int i = (ij / 177) % 177 + 2 ; + int j = (ij % 177) + 2 ; + int k = (kl / 169) % 178 + 1 ; + int l = (kl % 169) ; + + int a, b; + + for (a = 0; a < 97; a++) + { + unsigned long int sum = 0 ; + unsigned long int t = two24 ; + + for (b = 0; b < 24; b++) + { + unsigned long int m = (((i * j) % 179) * k) % 179 ; + i = j ; + j = k ; + k = m ; + l = (53 * l + 1) % 169 ; + t >>= 1 ; + + if ((l * m) % 64 >= 32) + sum += t ; + } + + state->u[a] = sum ; + } + + state->i = 96; + state->j = 32; + state->carry = 362436 ; + +} + +static const gsl_rng_type ranmar_type = +{"ranmar", /* name */ + 0x00ffffffUL, /* RAND_MAX */ + 0, /* RAND_MIN */ + sizeof (ranmar_state_t), + &ranmar_set, + &ranmar_get, + &ranmar_get_double}; + +const gsl_rng_type *gsl_rng_ranmar = &ranmar_type; diff --git a/gsl-2.5/rng/ranmar.lo b/gsl-2.5/rng/ranmar.lo new file mode 100644 index 00000000..690ad9d5 --- /dev/null +++ b/gsl-2.5/rng/ranmar.lo @@ -0,0 +1,12 @@ +# ranmar.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/ranmar.o' + +# Name of the non-PIC object +non_pic_object='ranmar.o' + diff --git a/gsl-2.5/rng/rng.c b/gsl-2.5/rng/rng.c new file mode 100644 index 00000000..db5c04eb --- /dev/null +++ b/gsl-2.5/rng/rng.c @@ -0,0 +1,154 @@ +/* rng/rng.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 James Theiler, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include + +gsl_rng * +gsl_rng_alloc (const gsl_rng_type * T) +{ + + gsl_rng *r = (gsl_rng *) malloc (sizeof (gsl_rng)); + + if (r == 0) + { + GSL_ERROR_VAL ("failed to allocate space for rng struct", + GSL_ENOMEM, 0); + }; + + r->state = calloc (1, T->size); + + if (r->state == 0) + { + free (r); /* exception in constructor, avoid memory leak */ + + GSL_ERROR_VAL ("failed to allocate space for rng state", + GSL_ENOMEM, 0); + }; + + r->type = T; + + gsl_rng_set (r, gsl_rng_default_seed); /* seed the generator */ + + return r; +} + +int +gsl_rng_memcpy (gsl_rng * dest, const gsl_rng * src) +{ + if (dest->type != src->type) + { + GSL_ERROR ("generators must be of the same type", GSL_EINVAL); + } + + memcpy (dest->state, src->state, src->type->size); + + return GSL_SUCCESS; +} + +gsl_rng * +gsl_rng_clone (const gsl_rng * q) +{ + gsl_rng *r = (gsl_rng *) malloc (sizeof (gsl_rng)); + + if (r == 0) + { + GSL_ERROR_VAL ("failed to allocate space for rng struct", + GSL_ENOMEM, 0); + }; + + r->state = malloc (q->type->size); + + if (r->state == 0) + { + free (r); /* exception in constructor, avoid memory leak */ + + GSL_ERROR_VAL ("failed to allocate space for rng state", + GSL_ENOMEM, 0); + }; + + r->type = q->type; + + memcpy (r->state, q->state, q->type->size); + + return r; +} + +void +gsl_rng_set (const gsl_rng * r, unsigned long int seed) +{ + (r->type->set) (r->state, seed); +} + +unsigned long int +gsl_rng_max (const gsl_rng * r) +{ + return r->type->max; +} + +unsigned long int +gsl_rng_min (const gsl_rng * r) +{ + return r->type->min; +} + +const char * +gsl_rng_name (const gsl_rng * r) +{ + return r->type->name; +} + +size_t +gsl_rng_size (const gsl_rng * r) +{ + return r->type->size; +} + +void * +gsl_rng_state (const gsl_rng * r) +{ + return r->state; +} + +void +gsl_rng_print_state (const gsl_rng * r) +{ + size_t i; + unsigned char *p = (unsigned char *) (r->state); + const size_t n = r->type->size; + + for (i = 0; i < n; i++) + { + /* FIXME: we're assuming that a char is 8 bits */ + printf ("%.2x", *(p + i)); + } + +} + +void +gsl_rng_free (gsl_rng * r) +{ + RETURN_IF_NULL (r); + free (r->state); + free (r); +} diff --git a/gsl-2.5/rng/rng.lo b/gsl-2.5/rng/rng.lo new file mode 100644 index 00000000..01c0a312 --- /dev/null +++ b/gsl-2.5/rng/rng.lo @@ -0,0 +1,12 @@ +# rng.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/rng.o' + +# Name of the non-PIC object +non_pic_object='rng.o' + diff --git a/gsl-2.5/rng/schrage.c b/gsl-2.5/rng/schrage.c new file mode 100644 index 00000000..bfc685b5 --- /dev/null +++ b/gsl-2.5/rng/schrage.c @@ -0,0 +1,51 @@ +/* rng/schrage.c + * Copyright (C) 2003 Carlo Perassi and Heiko Bauke. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +static inline unsigned long int +schrage (unsigned long int a, unsigned long int b, unsigned long int m) +{ + /* This is a modified version of Schrage's method. It ensures that no + * overflow or underflow occurs even if a=ceil(sqrt(m)). Usual + * Schrage's method works only until a=floor(sqrt(m)). + */ + unsigned long int q, t; + if (a == 0UL) + return 0UL; + q = m / a; + t = 2 * m - (m % a) * (b / q); + if (t >= m) + t -= m; + t += a * (b % q); + return (t >= m) ? (t - m) : t; +} + +static inline unsigned long int +schrage_mult (unsigned long int a, unsigned long int b, + unsigned long int m, + unsigned long int sqrtm) +{ + /* To multiply a and b use Schrage's method 3 times. + * represent a in base ceil(sqrt(m)) a = a1*ceil(sqrt(m)) + a0 + * a*b = (a1*ceil(sqrt(m)) + a0)*b = a1*ceil(sqrt(m))*b + a0*b + */ + unsigned long int t0 = schrage (sqrtm, b, m); + unsigned long int t1 = schrage (a / sqrtm, t0, m); + unsigned long int t2 = schrage (a % sqrtm, b, m); + unsigned long int t = t1 + t2; + return (t >= m) ? (t - m) : t; +} diff --git a/gsl-2.5/rng/slatec.c b/gsl-2.5/rng/slatec.c new file mode 100644 index 00000000..53e78f79 --- /dev/null +++ b/gsl-2.5/rng/slatec.c @@ -0,0 +1,205 @@ +/* rng/slatec.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 James Theiler, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/** + +* ====================================================================== +* NIST Guide to Available Math Software. +* Source for module RAND from package CMLIB. +* Retrieved from TIBER on Fri Oct 11 11:43:42 1996. +* ====================================================================== + FUNCTION RAND(R) +C***BEGIN PROLOGUE RAND +C***DATE WRITTEN 770401 (YYMMDD) +C***REVISION DATE 820801 (YYMMDD) +C***CATEGORY NO. L6A21 +C***KEYWORDS RANDOM NUMBER,SPECIAL FUNCTION,UNIFORM +C***AUTHOR FULLERTON, W., (LANL) +C***PURPOSE Generates a uniformly distributed random number. +C***DESCRIPTION +C +C This pseudo-random number generator is portable among a wide +C variety of computers. RAND(R) undoubtedly is not as good as many +C readily available installation dependent versions, and so this +C routine is not recommended for widespread usage. Its redeeming +C feature is that the exact same random numbers (to within final round- +C off error) can be generated from machine to machine. Thus, programs +C that make use of random numbers can be easily transported to and +C checked in a new environment. +C The random numbers are generated by the linear congruential +C method described, e.g., by Knuth in Seminumerical Methods (p.9), +C Addison-Wesley, 1969. Given the I-th number of a pseudo-random +C sequence, the I+1 -st number is generated from +C X(I+1) = (A*X(I) + C) MOD M, +C where here M = 2**22 = 4194304, C = 1731 and several suitable values +C of the multiplier A are discussed below. Both the multiplier A and +C random number X are represented in double precision as two 11-bit +C words. The constants are chosen so that the period is the maximum +C possible, 4194304. +C In order that the same numbers be generated from machine to +C machine, it is necessary that 23-bit integers be reducible modulo +C 2**11 exactly, that 23-bit integers be added exactly, and that 11-bit +C integers be multiplied exactly. Furthermore, if the restart option +C is used (where R is between 0 and 1), then the product R*2**22 = +C R*4194304 must be correct to the nearest integer. +C The first four random numbers should be .0004127026, +C .6750836372, .1614754200, and .9086198807. The tenth random number +C is .5527787209, and the hundredth is .3600893021 . The thousandth +C number should be .2176990509 . +C In order to generate several effectively independent sequences +C with the same generator, it is necessary to know the random number +C for several widely spaced calls. The I-th random number times 2**22, +C where I=K*P/8 and P is the period of the sequence (P = 2**22), is +C still of the form L*P/8. In particular we find the I-th random +C number multiplied by 2**22 is given by +C I = 0 1*P/8 2*P/8 3*P/8 4*P/8 5*P/8 6*P/8 7*P/8 8*P/8 +C RAND= 0 5*P/8 2*P/8 7*P/8 4*P/8 1*P/8 6*P/8 3*P/8 0 +C Thus the 4*P/8 = 2097152 random number is 2097152/2**22. +C Several multipliers have been subjected to the spectral test +C (see Knuth, p. 82). Four suitable multipliers roughly in order of +C goodness according to the spectral test are +C 3146757 = 1536*2048 + 1029 = 2**21 + 2**20 + 2**10 + 5 +C 2098181 = 1024*2048 + 1029 = 2**21 + 2**10 + 5 +C 3146245 = 1536*2048 + 517 = 2**21 + 2**20 + 2**9 + 5 +C 2776669 = 1355*2048 + 1629 = 5**9 + 7**7 + 1 +C +C In the table below LOG10(NU(I)) gives roughly the number of +C random decimal digits in the random numbers considered I at a time. +C C is the primary measure of goodness. In both cases bigger is better. +C +C LOG10 NU(I) C(I) +C A I=2 I=3 I=4 I=5 I=2 I=3 I=4 I=5 +C +C 3146757 3.3 2.0 1.6 1.3 3.1 1.3 4.6 2.6 +C 2098181 3.3 2.0 1.6 1.2 3.2 1.3 4.6 1.7 +C 3146245 3.3 2.2 1.5 1.1 3.2 4.2 1.1 0.4 +C 2776669 3.3 2.1 1.6 1.3 2.5 2.0 1.9 2.6 +C Best +C Possible 3.3 2.3 1.7 1.4 3.6 5.9 9.7 14.9 +C +C Input Argument -- +C R If R=0., the next random number of the sequence is generated. +C If R .LT. 0., the last generated number will be returned for +C possible use in a restart procedure. +C If R .GT. 0., the sequence of random numbers will start with +C the seed R mod 1. This seed is also returned as the value of +C RAND provided the arithmetic is done exactly. +C +C Output Value -- +C RAND a pseudo-random number between 0. and 1. +C***REFERENCES (NONE) +C***ROUTINES CALLED (NONE) +C***END PROLOGUE RAND + DATA IA1, IA0, IA1MA0 /1536, 1029, 507/ + DATA IC /1731/ + DATA IX1, IX0 /0, 0/ +C***FIRST EXECUTABLE STATEMENT RAND + IF (R.LT.0.) GO TO 10 + IF (R.GT.0.) GO TO 20 +C +C A*X = 2**22*IA1*IX1 + 2**11*(IA1*IX1 + (IA1-IA0)*(IX0-IX1) +C + IA0*IX0) + IA0*IX0 +C + IY0 = IA0*IX0 + IY1 = IA1*IX1 + IA1MA0*(IX0-IX1) + IY0 + IY0 = IY0 + IC + IX0 = MOD (IY0, 2048) + IY1 = IY1 + (IY0-IX0)/2048 + IX1 = MOD (IY1, 2048) +C + 10 RAND = IX1*2048 + IX0 + RAND = RAND / 4194304. + RETURN +C + 20 IX1 = AMOD(R,1.)*4194304. + 0.5 + IX0 = MOD (IX1, 2048) + IX1 = (IX1-IX0)/2048 + GO TO 10 +C + END + + **/ + +#include +#include +#include + +static inline unsigned long int slatec_get (void *vstate); +static double slatec_get_double (void *vstate); +static void slatec_set (void *state, unsigned long int s); + +typedef struct + { + long int x0, x1; + } +slatec_state_t; + +static const long P = 4194304; +static const long a1 = 1536; +static const long a0 = 1029; +static const long a1ma0 = 507; +static const long c = 1731; + +static inline unsigned long int +slatec_get (void *vstate) +{ + long y0, y1; + slatec_state_t *state = (slatec_state_t *) vstate; + + y0 = a0 * state->x0; + y1 = a1 * state->x1 + a1ma0 * (state->x0 - state->x1) + y0; + y0 = y0 + c; + state->x0 = y0 % 2048; + y1 = y1 + (y0 - state->x0) / 2048; + state->x1 = y1 % 2048; + + return state->x1 * 2048 + state->x0; +} + +static double +slatec_get_double (void *vstate) +{ + return slatec_get (vstate) / 4194304.0 ; +} + +static void +slatec_set (void *vstate, unsigned long int s) +{ + slatec_state_t *state = (slatec_state_t *) vstate; + + /* Only eight seeds are permitted. This is pretty limiting, but + at least we are guaranteed that the eight sequences are different */ + + s = s % 8; + s *= P / 8; + + state->x0 = s % 2048; + state->x1 = (s - state->x0) / 2048; +} + +static const gsl_rng_type slatec_type = +{"slatec", /* name */ + 4194303, /* RAND_MAX */ + 0, /* RAND_MIN */ + sizeof (slatec_state_t), + &slatec_set, + &slatec_get, + &slatec_get_double}; + +const gsl_rng_type *gsl_rng_slatec = &slatec_type; diff --git a/gsl-2.5/rng/slatec.lo b/gsl-2.5/rng/slatec.lo new file mode 100644 index 00000000..c99b077b --- /dev/null +++ b/gsl-2.5/rng/slatec.lo @@ -0,0 +1,12 @@ +# slatec.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/slatec.o' + +# Name of the non-PIC object +non_pic_object='slatec.o' + diff --git a/gsl-2.5/rng/taus.c b/gsl-2.5/rng/taus.c new file mode 100644 index 00000000..290c00d9 --- /dev/null +++ b/gsl-2.5/rng/taus.c @@ -0,0 +1,184 @@ +/* rng/taus.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 James Theiler, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include + +/* This is a maximally equidistributed combined Tausworthe + generator. The sequence is, + + x_n = (s1_n ^ s2_n ^ s3_n) + + s1_{n+1} = (((s1_n & 4294967294) <<12) ^ (((s1_n <<13) ^ s1_n) >>19)) + s2_{n+1} = (((s2_n & 4294967288) << 4) ^ (((s2_n << 2) ^ s2_n) >>25)) + s3_{n+1} = (((s3_n & 4294967280) <<17) ^ (((s3_n << 3) ^ s3_n) >>11)) + + computed modulo 2^32. In the three formulas above '^' means + exclusive-or (C-notation), not exponentiation. Note that the + algorithm relies on the properties of 32-bit unsigned integers (it + is formally defined on bit-vectors of length 32). I have added a + bitmask to make it work on 64 bit machines. + + We initialize the generator with s1_1 .. s3_1 = s_n MOD m, where + s_n = (69069 * s_{n-1}) mod 2^32, and s_0 = s is the user-supplied + seed. + + The theoretical value of x_{10007} is 2733957125. The subscript + 10007 means (1) seed the generator with s=1 (2) do six warm-up + iterations, (3) then do 10000 actual iterations. + + The period of this generator is about 2^88. + + From: P. L'Ecuyer, "Maximally Equidistributed Combined Tausworthe + Generators", Mathematics of Computation, 65, 213 (1996), 203--213. + + This is available on the net from L'Ecuyer's home page, + + http://www.iro.umontreal.ca/~lecuyer/myftp/papers/tausme.ps + ftp://ftp.iro.umontreal.ca/pub/simulation/lecuyer/papers/tausme.ps + + Update: April 2002 + + There is an erratum in the paper "Tables of Maximally + Equidistributed Combined LFSR Generators", Mathematics of + Computation, 68, 225 (1999), 261--269: + http://www.iro.umontreal.ca/~lecuyer/myftp/papers/tausme2.ps + + ... the k_j most significant bits of z_j must be non- + zero, for each j. (Note: this restriction also applies to the + computer code given in [4], but was mistakenly not mentioned in + that paper.) + + This affects the seeding procedure by imposing the requirement + s1 > 1, s2 > 7, s3 > 15. + + The generator taus2 has been added to satisfy this requirement. + The original taus generator is unchanged. + + Update: November 2002 + + There was a bug in the correction to the seeding procedure for s2. + It affected the following seeds 254679140 1264751179 1519430319 + 2274823218 2529502358 3284895257 3539574397 (s2 < 8). + +*/ + +static inline unsigned long int taus_get (void *vstate); +static double taus_get_double (void *vstate); +static void taus_set (void *state, unsigned long int s); + +typedef struct + { + unsigned long int s1, s2, s3; + } +taus_state_t; + +static inline unsigned long +taus_get (void *vstate) +{ + taus_state_t *state = (taus_state_t *) vstate; + +#define MASK 0xffffffffUL +#define TAUSWORTHE(s,a,b,c,d) (((s &c) <>b) + + state->s1 = TAUSWORTHE (state->s1, 13, 19, 4294967294UL, 12); + state->s2 = TAUSWORTHE (state->s2, 2, 25, 4294967288UL, 4); + state->s3 = TAUSWORTHE (state->s3, 3, 11, 4294967280UL, 17); + + return (state->s1 ^ state->s2 ^ state->s3); +} + +static double +taus_get_double (void *vstate) +{ + return taus_get (vstate) / 4294967296.0 ; +} + +static void +taus_set (void *vstate, unsigned long int s) +{ + taus_state_t *state = (taus_state_t *) vstate; + + if (s == 0) + s = 1; /* default seed is 1 */ + +#define LCG(n) ((69069 * n) & 0xffffffffUL) + state->s1 = LCG (s); + state->s2 = LCG (state->s1); + state->s3 = LCG (state->s2); + + /* "warm it up" */ + taus_get (state); + taus_get (state); + taus_get (state); + taus_get (state); + taus_get (state); + taus_get (state); + return; +} + +static void +taus2_set (void *vstate, unsigned long int s) +{ + taus_state_t *state = (taus_state_t *) vstate; + + if (s == 0) + s = 1; /* default seed is 1 */ + +#define LCG(n) ((69069 * n) & 0xffffffffUL) + state->s1 = LCG (s); + if (state->s1 < 2) state->s1 += 2UL; + state->s2 = LCG (state->s1); + if (state->s2 < 8) state->s2 += 8UL; + state->s3 = LCG (state->s2); + if (state->s3 < 16) state->s3 += 16UL; + + /* "warm it up" */ + taus_get (state); + taus_get (state); + taus_get (state); + taus_get (state); + taus_get (state); + taus_get (state); + return; +} + + +static const gsl_rng_type taus_type = +{"taus", /* name */ + 0xffffffffUL, /* RAND_MAX */ + 0, /* RAND_MIN */ + sizeof (taus_state_t), + &taus_set, + &taus_get, + &taus_get_double}; + +const gsl_rng_type *gsl_rng_taus = &taus_type; + +static const gsl_rng_type taus2_type = +{"taus2", /* name */ + 0xffffffffUL, /* RAND_MAX */ + 0, /* RAND_MIN */ + sizeof (taus_state_t), + &taus2_set, + &taus_get, + &taus_get_double}; + +const gsl_rng_type *gsl_rng_taus2 = &taus2_type; diff --git a/gsl-2.5/rng/taus.lo b/gsl-2.5/rng/taus.lo new file mode 100644 index 00000000..70f122f1 --- /dev/null +++ b/gsl-2.5/rng/taus.lo @@ -0,0 +1,12 @@ +# taus.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/taus.o' + +# Name of the non-PIC object +non_pic_object='taus.o' + diff --git a/gsl-2.5/rng/taus113.c b/gsl-2.5/rng/taus113.c new file mode 100644 index 00000000..04da6a89 --- /dev/null +++ b/gsl-2.5/rng/taus113.c @@ -0,0 +1,168 @@ +/* rng/taus113.c + * Copyright (C) 2002 Atakan Gurkan + * Based on the file taus.c which has the notice + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 James Theiler, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* This is a maximally equidistributed combined, collision free + Tausworthe generator, with a period ~2^{113}. The sequence is, + + x_n = (z1_n ^ z2_n ^ z3_n ^ z4_n) + + b = (((z1_n << 6) ^ z1_n) >> 13) + z1_{n+1} = (((z1_n & 4294967294) << 18) ^ b) + b = (((z2_n << 2) ^ z2_n) >> 27) + z2_{n+1} = (((z2_n & 4294967288) << 2) ^ b) + b = (((z3_n << 13) ^ z3_n) >> 21) + z3_{n+1} = (((z3_n & 4294967280) << 7) ^ b) + b = (((z4_n << 3) ^ z4_n) >> 12) + z4_{n+1} = (((z4_n & 4294967168) << 13) ^ b) + + computed modulo 2^32. In the formulas above '^' means exclusive-or + (C-notation), not exponentiation. + The algorithm is for 32-bit integers, hence a bitmask is used to clear + all but least significant 32 bits, after left shifts, to make the code + work on architectures where integers are 64-bit. + + The generator is initialized with + zi = (69069 * z{i+1}) MOD 2^32 where z0 is the seed provided + During initialization a check is done to make sure that the initial seeds + have a required number of their most significant bits set. + After this, the state is passed through the RNG 10 times to ensure the + state satisfies a recurrence relation. + + References: + P. L'Ecuyer, "Tables of Maximally-Equidistributed Combined LFSR Generators", + Mathematics of Computation, 68, 225 (1999), 261--269. + http://www.iro.umontreal.ca/~lecuyer/myftp/papers/tausme2.ps + P. L'Ecuyer, "Maximally Equidistributed Combined Tausworthe Generators", + Mathematics of Computation, 65, 213 (1996), 203--213. + http://www.iro.umontreal.ca/~lecuyer/myftp/papers/tausme.ps + the online version of the latter contains corrections to the print version. +*/ + +#include +#include +#include + +#define LCG(n) ((69069UL * n) & 0xffffffffUL) +#define MASK 0xffffffffUL + +static inline unsigned long int taus113_get (void *vstate); +static double taus113_get_double (void *vstate); +static void taus113_set (void *state, unsigned long int s); + +typedef struct +{ + unsigned long int z1, z2, z3, z4; +} +taus113_state_t; + +static inline unsigned long +taus113_get (void *vstate) +{ + taus113_state_t *state = (taus113_state_t *) vstate; + unsigned long b1, b2, b3, b4; + + b1 = ((((state->z1 << 6UL) & MASK) ^ state->z1) >> 13UL); + state->z1 = ((((state->z1 & 4294967294UL) << 18UL) & MASK) ^ b1); + + b2 = ((((state->z2 << 2UL) & MASK) ^ state->z2) >> 27UL); + state->z2 = ((((state->z2 & 4294967288UL) << 2UL) & MASK) ^ b2); + + b3 = ((((state->z3 << 13UL) & MASK) ^ state->z3) >> 21UL); + state->z3 = ((((state->z3 & 4294967280UL) << 7UL) & MASK) ^ b3); + + b4 = ((((state->z4 << 3UL) & MASK) ^ state->z4) >> 12UL); + state->z4 = ((((state->z4 & 4294967168UL) << 13UL) & MASK) ^ b4); + + return (state->z1 ^ state->z2 ^ state->z3 ^ state->z4); + +} + +static double +taus113_get_double (void *vstate) +{ + return taus113_get (vstate) / 4294967296.0; +} + +static void +taus113_set (void *vstate, unsigned long int s) +{ + taus113_state_t *state = (taus113_state_t *) vstate; + + if (!s) + s = 1UL; /* default seed is 1 */ + + state->z1 = LCG (s); + if (state->z1 < 2UL) + state->z1 += 2UL; + state->z2 = LCG (state->z1); + if (state->z2 < 8UL) + state->z2 += 8UL; + state->z3 = LCG (state->z2); + if (state->z3 < 16UL) + state->z3 += 16UL; + state->z4 = LCG (state->z3); + if (state->z4 < 128UL) + state->z4 += 128UL; + + /* Calling RNG ten times to satify recurrence condition */ + taus113_get (state); + taus113_get (state); + taus113_get (state); + taus113_get (state); + taus113_get (state); + taus113_get (state); + taus113_get (state); + taus113_get (state); + taus113_get (state); + taus113_get (state); + + return; +} + +static const gsl_rng_type taus113_type = { + "taus113", /* name */ + 0xffffffffUL, /* RAND_MAX */ + 0, /* RAND_MIN */ + sizeof (taus113_state_t), + &taus113_set, + &taus113_get, + &taus113_get_double +}; + +const gsl_rng_type *gsl_rng_taus113 = &taus113_type; + + +/* Rules for analytic calculations using GNU Emacs Calc: + (used to find the values for the test program) + + [ LCG(n) := n * 69069 mod (2^32) ] + + [ b1(x) := rsh(xor(lsh(x, 6), x), 13), + q1(x) := xor(lsh(and(x, 4294967294), 18), b1(x)), + b2(x) := rsh(xor(lsh(x, 2), x), 27), + q2(x) := xor(lsh(and(x, 4294967288), 2), b2(x)), + b3(x) := rsh(xor(lsh(x, 13), x), 21), + q3(x) := xor(lsh(and(x, 4294967280), 7), b3(x)), + b4(x) := rsh(xor(lsh(x, 3), x), 12), + q4(x) := xor(lsh(and(x, 4294967168), 13), b4(x)) + ] + + [ S([z1,z2,z3,z4]) := [q1(z1), q2(z2), q3(z3), q4(z4)] ] +*/ diff --git a/gsl-2.5/rng/taus113.lo b/gsl-2.5/rng/taus113.lo new file mode 100644 index 00000000..9c28c3e4 --- /dev/null +++ b/gsl-2.5/rng/taus113.lo @@ -0,0 +1,12 @@ +# taus113.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/taus113.o' + +# Name of the non-PIC object +non_pic_object='taus113.o' + diff --git a/gsl-2.5/rng/test b/gsl-2.5/rng/test new file mode 100755 index 00000000..fad5425c Binary files /dev/null and b/gsl-2.5/rng/test differ diff --git a/gsl-2.5/rng/test-suite.log b/gsl-2.5/rng/test-suite.log new file mode 100644 index 00000000..928af129 --- /dev/null +++ b/gsl-2.5/rng/test-suite.log @@ -0,0 +1,14 @@ +================================= + gsl 2.5: rng/test-suite.log +================================= + +# TOTAL: 1 +# PASS: 1 +# SKIP: 0 +# XFAIL: 0 +# FAIL: 0 +# XPASS: 0 +# ERROR: 0 + +.. contents:: :depth: 2 + diff --git a/gsl-2.5/rng/test.c b/gsl-2.5/rng/test.c new file mode 100644 index 00000000..f82ad1ae --- /dev/null +++ b/gsl-2.5/rng/test.c @@ -0,0 +1,675 @@ +/* rng/test.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 James Theiler, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include +#include + +void rng_test (const gsl_rng_type * T, unsigned long int seed, unsigned int n, + unsigned long int result); +void rng_float_test (const gsl_rng_type * T); +void generic_rng_test (const gsl_rng_type * T); +void rng_state_test (const gsl_rng_type * T); +void rng_parallel_state_test (const gsl_rng_type * T); +void rng_read_write_test (const gsl_rng_type * T); +int rng_max_test (gsl_rng * r, unsigned long int *kmax, unsigned long int ran_max) ; +int rng_min_test (gsl_rng * r, unsigned long int *kmin, unsigned long int ran_min, unsigned long int ran_max) ; +int rng_sum_test (gsl_rng * r, double *sigma); +int rng_bin_test (gsl_rng * r, double *sigma); +void rng_seed_test (const gsl_rng_type * T); + +#define N 10000 +#define N2 200000 + +int +main (void) +{ + const gsl_rng_type ** rngs = gsl_rng_types_setup(); /* get all rng types */ + + const gsl_rng_type ** r ; + + gsl_ieee_env_setup (); + + gsl_rng_env_setup (); + + /* specific tests of known results for 10000 iterations with seed = 1 */ + + rng_test (gsl_rng_rand, 1, 10000, 1910041713); + rng_test (gsl_rng_randu, 1, 10000, 1623524161); + rng_test (gsl_rng_cmrg, 1, 10000, 719452880); + rng_test (gsl_rng_minstd, 1, 10000, 1043618065); + rng_test (gsl_rng_mrg, 1, 10000, 2064828650); + rng_test (gsl_rng_taus, 1, 10000, 2733957125UL); + rng_test (gsl_rng_taus2, 1, 10000, 2733957125UL); + rng_test (gsl_rng_taus113, 1, 1000, 1925420673UL); + rng_test (gsl_rng_transputer, 1, 10000, 1244127297UL); + rng_test (gsl_rng_vax, 1, 10000, 3051034865UL); + + /* Borosh13 test value from PARI: (1812433253^10000)%(2^32) */ + rng_test (gsl_rng_borosh13, 1, 10000, 2513433025UL); + + /* Fishman18 test value from PARI: (62089911^10000)%(2^31-1) */ + rng_test (gsl_rng_fishman18, 1, 10000, 330402013UL); + + /* Fishman2x test value from PARI: + ((48271^10000)%(2^31-1) - (40692^10000)%(2^31-249))%(2^31-1) */ + rng_test (gsl_rng_fishman2x, 1, 10000, 540133597UL); + + /* Knuthran2 test value from PARI: + { xn1=1; xn2=1; for (n=1,10000, + xn = (271828183*xn1 - 314159269*xn2)%(2^31-1); + xn2=xn1; xn1=xn; print(xn); ) } */ + rng_test (gsl_rng_knuthran2, 1, 10000, 1084477620UL); + + /* Knuthran test value taken from p188 in Knuth Vol 2. 3rd Ed */ + rng_test (gsl_rng_knuthran, 310952, 1009 * 2009 + 1, 461390032); + + /* Knuthran improved test value from Knuth's source */ + rng_test (gsl_rng_knuthran2002, 310952, 1, 708622036); + rng_test (gsl_rng_knuthran2002, 310952, 2, 1005450560); + rng_test (gsl_rng_knuthran2002, 310952, 100 * 2009 + 1, 995235265); + rng_test (gsl_rng_knuthran2002, 310952, 1009 * 2009 + 1, 704987132); + + /* Lecuyer21 test value from PARI: (40692^10000)%(2^31-249) */ + rng_test (gsl_rng_lecuyer21, 1, 10000, 2006618587UL); + + /* Waterman14 test value from PARI: (1566083941^10000)%(2^32) */ + rng_test (gsl_rng_waterman14, 1, 10000, 3776680385UL); + + /* specific tests of known results for 10000 iterations with seed = 6 */ + + /* Coveyou test value from PARI: + x=6; for(n=1,10000,x=(x*(x+1))%(2^32);print(x);) */ + + rng_test (gsl_rng_coveyou, 6, 10000, 1416754246UL); + + /* Fishman20 test value from PARI: (6*48271^10000)%(2^31-1) */ + rng_test (gsl_rng_fishman20, 6, 10000, 248127575UL); + + /* FIXME: the ranlux tests below were made by running the fortran code and + getting the expected value from that. An analytic calculation + would be preferable. */ + + rng_test (gsl_rng_ranlux, 314159265, 10000, 12077992); + rng_test (gsl_rng_ranlux389, 314159265, 10000, 165942); + + rng_test (gsl_rng_ranlxs0, 1, 10000, 11904320); + /* 0.709552764892578125 * ldexp(1.0,24) */ + + rng_test (gsl_rng_ranlxs1, 1, 10000, 8734328); + /* 0.520606517791748047 * ldexp(1.0,24) */ + + rng_test (gsl_rng_ranlxs2, 1, 10000, 6843140); + /* 0.407882928848266602 * ldexp(1.0,24) */ + + rng_test (gsl_rng_ranlxd1, 1, 10000, 1998227290UL); + /* 0.465248546261094020 * ldexp(1.0,32) */ + + rng_test (gsl_rng_ranlxd2, 1, 10000, 3949287736UL); + /* 0.919515205581550532 * ldexp(1.0,32) */ + + /* FIXME: the tests below were made by running the original code in + the ../random directory and getting the expected value from + that. An analytic calculation would be preferable. */ + + rng_test (gsl_rng_slatec, 1, 10000, 45776); + rng_test (gsl_rng_uni, 1, 10000, 9214); + rng_test (gsl_rng_uni32, 1, 10000, 1155229825); + rng_test (gsl_rng_zuf, 1, 10000, 3970); + + /* The tests below were made by running the original code and + getting the expected value from that. An analytic calculation + would be preferable. */ + + rng_test (gsl_rng_r250, 1, 10000, 1100653588); + rng_test (gsl_rng_mt19937, 4357, 1000, 1186927261); + rng_test (gsl_rng_mt19937_1999, 4357, 1000, 1030650439); + rng_test (gsl_rng_mt19937_1998, 4357, 1000, 1309179303); + rng_test (gsl_rng_tt800, 0, 10000, 2856609219UL); + + rng_test (gsl_rng_ran0, 0, 10000, 1115320064); + rng_test (gsl_rng_ran1, 0, 10000, 1491066076); + rng_test (gsl_rng_ran2, 0, 10000, 1701364455); + rng_test (gsl_rng_ran3, 0, 10000, 186340785); + + rng_test (gsl_rng_ranmar, 1, 10000, 14428370); + + rng_test (gsl_rng_rand48, 0, 10000, 0xDE095043UL); + rng_test (gsl_rng_rand48, 1, 10000, 0xEDA54977UL); + + rng_test (gsl_rng_random_glibc2, 0, 10000, 1908609430); + rng_test (gsl_rng_random8_glibc2, 0, 10000, 1910041713); + rng_test (gsl_rng_random32_glibc2, 0, 10000, 1587395585); + rng_test (gsl_rng_random64_glibc2, 0, 10000, 52848624); + rng_test (gsl_rng_random128_glibc2, 0, 10000, 1908609430); + rng_test (gsl_rng_random256_glibc2, 0, 10000, 179943260); + + rng_test (gsl_rng_random_bsd, 0, 10000, 1457025928); + rng_test (gsl_rng_random8_bsd, 0, 10000, 1910041713); + rng_test (gsl_rng_random32_bsd, 0, 10000, 1663114331); + rng_test (gsl_rng_random64_bsd, 0, 10000, 864469165); + rng_test (gsl_rng_random128_bsd, 0, 10000, 1457025928); + rng_test (gsl_rng_random256_bsd, 0, 10000, 1216357476); + + rng_test (gsl_rng_random_libc5, 0, 10000, 428084942); + rng_test (gsl_rng_random8_libc5, 0, 10000, 1910041713); + rng_test (gsl_rng_random32_libc5, 0, 10000, 1967452027); + rng_test (gsl_rng_random64_libc5, 0, 10000, 2106639801); + rng_test (gsl_rng_random128_libc5, 0, 10000, 428084942); + rng_test (gsl_rng_random256_libc5, 0, 10000, 116367984); + + rng_test (gsl_rng_ranf, 0, 10000, 2152890433UL); + rng_test (gsl_rng_ranf, 2, 10000, 339327233); + + /* Test constant relationship between int and double functions */ + + for (r = rngs ; *r != 0; r++) + rng_float_test (*r); + + /* Test save/restore functions */ + + for (r = rngs ; *r != 0; r++) + rng_state_test (*r); + + for (r = rngs ; *r != 0; r++) + rng_parallel_state_test (*r); + + for (r = rngs ; *r != 0; r++) + rng_read_write_test (*r); + + /* generic statistical tests (these are just to make sure that we + don't get any crazy results back from the generator, i.e. they + aren't a test of the algorithm, just the implementation) */ + + for (r = rngs ; *r != 0; r++) + generic_rng_test (*r); + +#ifdef TEST_SEEDS + rng_seed_test (gsl_rng_mt19937); + rng_seed_test (gsl_rng_ranlxs0); + rng_seed_test (gsl_rng_ranlxs1); + rng_seed_test (gsl_rng_ranlxs2); + + rng_seed_test (gsl_rng_ranlxd1); + rng_seed_test (gsl_rng_ranlxd2); + rng_seed_test (gsl_rng_ranlux); + rng_seed_test (gsl_rng_ranlux389); + + rng_seed_test (gsl_rng_cmrg); + rng_seed_test (gsl_rng_mrg); + rng_seed_test (gsl_rng_taus); + rng_seed_test (gsl_rng_taus2); + + rng_seed_test (gsl_rng_gfsr4); +#endif + + exit (gsl_test_summary ()); +} + + +void +rng_test (const gsl_rng_type * T, unsigned long int seed, unsigned int n, + unsigned long int result) +{ + gsl_rng *r = gsl_rng_alloc (T); + unsigned int i; + unsigned long int k = 0; + int status; + + if (seed != 0) + { + gsl_rng_set (r, seed); + } + + for (i = 0; i < n; i++) + { + k = gsl_rng_get (r); + } + + status = (k != result); + gsl_test (status, "%s, %u steps (%u observed vs %u expected)", + gsl_rng_name (r), n, k, result); + + gsl_rng_free (r); +} + +void +rng_float_test (const gsl_rng_type * T) +{ + gsl_rng *ri = gsl_rng_alloc (T); + gsl_rng *rf = gsl_rng_alloc (T); + + double u, c ; + unsigned int i; + unsigned long int k = 0; + int status = 0 ; + + do + { + k = gsl_rng_get (ri); + u = gsl_rng_get (rf); + } + while (k == 0) ; + + c = k / u ; + for (i = 0; i < N2; i++) + { + k = gsl_rng_get (ri); + u = gsl_rng_get (rf); + if (c*k != u) + { + status = 1 ; + break ; + } + } + + gsl_test (status, "%s, ratio of int to double (%g observed vs %g expected)", + gsl_rng_name (ri), c, k/u); + + gsl_rng_free (ri); + gsl_rng_free (rf); +} + + +void +rng_state_test (const gsl_rng_type * T) +{ + unsigned long int test_a[N], test_b[N]; + + int i; + + gsl_rng *r = gsl_rng_alloc (T); + gsl_rng *r_save = gsl_rng_alloc (T); + + for (i = 0; i < N; ++i) + { + gsl_rng_get (r); /* throw away N iterations */ + } + + gsl_rng_memcpy (r_save, r); /* save the intermediate state */ + + for (i = 0; i < N; ++i) + { + test_a[i] = gsl_rng_get (r); + } + + gsl_rng_memcpy (r, r_save); /* restore the intermediate state */ + gsl_rng_free (r_save); + + for (i = 0; i < N; ++i) + { + test_b[i] = gsl_rng_get (r); + } + + { + int status = 0; + for (i = 0; i < N; ++i) + { + status |= (test_b[i] != test_a[i]); + } + gsl_test (status, "%s, random number state consistency", + gsl_rng_name (r)); + } + + gsl_rng_free (r); +} + + +void +rng_parallel_state_test (const gsl_rng_type * T) +{ + unsigned long int test_a[N], test_b[N]; + unsigned long int test_c[N], test_d[N]; + double test_e[N], test_f[N]; + + int i; + + gsl_rng *r1 = gsl_rng_alloc (T); + gsl_rng *r2 = gsl_rng_alloc (T); + + for (i = 0; i < N; ++i) + { + gsl_rng_get (r1); /* throw away N iterations */ + } + + gsl_rng_memcpy (r2, r1); /* save the intermediate state */ + + for (i = 0; i < N; ++i) + { + /* check that there is no hidden state intermixed between r1 and r2 */ + test_a[i] = gsl_rng_get (r1); + test_b[i] = gsl_rng_get (r2); + test_c[i] = gsl_rng_uniform_int (r1, 1234); + test_d[i] = gsl_rng_uniform_int (r2, 1234); + test_e[i] = gsl_rng_uniform (r1); + test_f[i] = gsl_rng_uniform (r2); + } + + { + int status = 0; + for (i = 0; i < N; ++i) + { + status |= (test_b[i] != test_a[i]); + status |= (test_c[i] != test_d[i]); + status |= (test_e[i] != test_f[i]); + } + gsl_test (status, "%s, parallel random number state consistency", + gsl_rng_name (r1)); + } + + gsl_rng_free (r1); + gsl_rng_free (r2); + +} + +void +rng_read_write_test (const gsl_rng_type * T) +{ + unsigned long int test_a[N], test_b[N]; + + int i; + + gsl_rng *r = gsl_rng_alloc (T); + + for (i = 0; i < N; ++i) + { + gsl_rng_get (r); /* throw away N iterations */ + } + + { /* save the state to a binary file */ + FILE *f = fopen("test.dat", "wb"); + gsl_rng_fwrite(f, r); + fclose(f); + } + + for (i = 0; i < N; ++i) + { + test_a[i] = gsl_rng_get (r); + } + + { /* read the state from a binary file */ + FILE *f = fopen("test.dat", "rb"); + gsl_rng_fread(f, r); + fclose(f); + } + + for (i = 0; i < N; ++i) + { + test_b[i] = gsl_rng_get (r); + } + + { + int status = 0; + for (i = 0; i < N; ++i) + { + status |= (test_b[i] != test_a[i]); + } + gsl_test (status, "%s, random number generator read and write", + gsl_rng_name (r)); + } + + gsl_rng_free (r); +} + +void +generic_rng_test (const gsl_rng_type * T) +{ + gsl_rng *r = gsl_rng_alloc (T); + const char *name = gsl_rng_name (r); + unsigned long int kmax = 0, kmin = 1000; + double sigma = 0; + const unsigned long int ran_max = gsl_rng_max (r); + const unsigned long int ran_min = gsl_rng_min (r); + + int status = rng_max_test (r, &kmax, ran_max); + + gsl_test (status, + "%s, observed vs theoretical maximum (%lu vs %lu)", + name, kmax, ran_max); + + status = rng_min_test (r, &kmin, ran_min, ran_max); + + gsl_test (status, + "%s, observed vs theoretical minimum (%lu vs %lu)", + name, kmin, ran_min); + + status = rng_sum_test (r, &sigma); + + gsl_test (status, + "%s, sum test within acceptable sigma (observed %.2g sigma)", + name, sigma); + + status = rng_bin_test (r, &sigma); + + gsl_test (status, + "%s, bin test within acceptable chisq (observed %.2g sigma)", + name, sigma); + + gsl_rng_set (r, 1); /* set seed to 1 */ + status = rng_max_test (r, &kmax, ran_max); + + gsl_rng_set (r, 1); /* set seed to 1 */ + status |= rng_min_test (r, &kmin, ran_min, ran_max); + + gsl_rng_set (r, 1); /* set seed to 1 */ + status |= rng_sum_test (r, &sigma); + + gsl_test (status, "%s, max, min and sum tests for seed=1", name); + + gsl_rng_set (r, 12345); /* set seed to a "typical" value */ + status = rng_max_test (r, &kmax, ran_max); + + gsl_rng_set (r, 12345); /* set seed to a "typical" value */ + status |= rng_min_test (r, &kmin, ran_min, ran_max); + + gsl_rng_set (r, 12345); /* set seed to a "typical" value */ + status |= rng_sum_test (r, &sigma); + + gsl_test (status, "%s, max, min and sum tests for non-default seeds", name); + + gsl_rng_free (r); +} + +int +rng_max_test (gsl_rng * r, unsigned long int *kmax, unsigned long int ran_max) +{ + unsigned long int actual_uncovered; + double expect_uncovered; + int status; + unsigned long int max = 0; + int i; + + for (i = 0; i < N2; ++i) + { + unsigned long int k = gsl_rng_get (r); + if (k > max) + max = k; + } + + *kmax = max; + + actual_uncovered = ran_max - max; + expect_uncovered = (double) ran_max / (double) N2; + + status = (max > ran_max) || (actual_uncovered > 7 * expect_uncovered) ; + + return status; +} + +int +rng_min_test (gsl_rng * r, unsigned long int *kmin, + unsigned long int ran_min, unsigned long int ran_max) +{ + unsigned long int actual_uncovered; + double expect_uncovered; + int status; + unsigned long int min = 1000000000UL; + int i; + + for (i = 0; i < N2; ++i) + { + unsigned long int k = gsl_rng_get (r); + if (k < min) + min = k; + } + + *kmin = min; + + actual_uncovered = min - ran_min; + expect_uncovered = (double) ran_max / (double) N2; + + status = (min < ran_min) || (actual_uncovered > 7 * expect_uncovered); + + return status; +} + +int +rng_sum_test (gsl_rng * r, double *sigma) +{ + double sum = 0; + int i, status; + + for (i = 0; i < N2; ++i) + { + double x = gsl_rng_uniform (r) - 0.5; + sum += x; + } + + sum /= N2; + + /* expect the average to have a variance of 1/(12 n) */ + + *sigma = sum * sqrt (12.0 * N2); + + /* more than 3 sigma is an error (increased to 3.1 to avoid false alarms) */ + + status = (fabs (*sigma) > 3.1 || fabs(*sigma) < 0.003); + + if (status) { + fprintf(stderr,"sum=%g, sigma=%g\n",sum,*sigma); + } + + return status; +} + +#define BINS 17 +#define EXTRA 10 +int +rng_bin_test (gsl_rng * r, double *sigma) +{ + int count[BINS+EXTRA]; + double chisq = 0; + int i, status; + + for (i = 0; i < BINS+EXTRA; i++) + count[i] = 0 ; + + + for (i = 0; i < N2; i++) + { + int j = gsl_rng_uniform_int (r, BINS); + count[j]++ ; + } + + chisq = 0 ; + for (i = 0; i < BINS; i++) + { + double x = (double)N2/(double)BINS ; + double d = (count[i] - x) ; + chisq += (d*d) / x; + } + + *sigma = sqrt(chisq/BINS) ; + + /* more than 3 sigma is an error */ + + status = (fabs (*sigma) > 3 || fabs(*sigma) < 0.003); + + for (i = BINS; i < BINS+EXTRA; i++) + { + if (count[i] != 0) + { + status = 1 ; + gsl_test (status, + "%s, wrote outside range in bin test " + "(%d observed vs %d expected)", + gsl_rng_name(r), i, BINS - 1); + } + } + + return status; +} + +int +rng_sanity_test (gsl_rng * r) +{ + double sum = 0, sigma; + int i, status = 0; + + for (i = 0; i < N2; ++i) + { + double x = gsl_rng_uniform (r); + sum += x; + if (x < 0.0 || x > 1.0) { + fprintf(stderr,"x=%g out of range\n", x); + return 1; + } + } + + sum /= N2; + + /* expect the average to have a variance of 1/(12 n) */ + + sigma = (sum - 0.5)* sqrt (12.0 * N2); + + /* more than 5 sigma is an error */ + + status = (fabs (sigma) > 5 || fabs(sigma) < 0.0001); + + if (status) { + fprintf(stderr,"sum=%g, sigma=%g\n",sum,sigma); + } + + return status; +} + +void +rng_seed_test (const gsl_rng_type * T) +{ + gsl_rng *r = gsl_rng_alloc (T); + const char *name = gsl_rng_name (r); + unsigned long int i; + int j; + int status; + + for (i = 0xFFFFFFFFUL ; i > 0; i >>= 1) { + for (j = 1; j >= -1 ; j--) { + unsigned long int seed = i + j; + if (j > 0 && seed < i) continue; + gsl_rng_set (r, seed); + status = rng_sanity_test (r); + if (status) + gsl_test (status, "%s, sanity tests for seed = %#lx", name, seed); + } + } +} diff --git a/gsl-2.5/rng/test.dat b/gsl-2.5/rng/test.dat new file mode 100644 index 00000000..a7865b59 Binary files /dev/null and b/gsl-2.5/rng/test.dat differ diff --git a/gsl-2.5/rng/test.log b/gsl-2.5/rng/test.log new file mode 100644 index 00000000..b2061d2f --- /dev/null +++ b/gsl-2.5/rng/test.log @@ -0,0 +1 @@ +Completed [686/686] diff --git a/gsl-2.5/rng/test.trs b/gsl-2.5/rng/test.trs new file mode 100644 index 00000000..3f0f396c --- /dev/null +++ b/gsl-2.5/rng/test.trs @@ -0,0 +1,4 @@ +:test-result: PASS +:global-test-result: PASS +:recheck: no +:copy-in-global-log: no diff --git a/gsl-2.5/rng/transputer.c b/gsl-2.5/rng/transputer.c new file mode 100644 index 00000000..a2c422ab --- /dev/null +++ b/gsl-2.5/rng/transputer.c @@ -0,0 +1,83 @@ +/* rng/transputer.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 James Theiler, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include + +/* This is the INMOS Transputer Development System generator. The sequence is, + + x_{n+1} = (a x_n) mod m + + with a = 1664525 and m = 2^32. The seed specifies the initial + value, x_1. + + The theoretical value of x_{10001} is 1244127297. + + The period of this generator is 2^30. */ + +static inline unsigned long int transputer_get (void *vstate); +static double transputer_get_double (void *vstate); +static void transputer_set (void *state, unsigned long int s); + +typedef struct + { + unsigned long int x; + } +transputer_state_t; + +static unsigned long int +transputer_get (void *vstate) +{ + transputer_state_t *state = (transputer_state_t *) vstate; + + state->x = (1664525 * state->x) & 0xffffffffUL; + + return state->x; +} + +static double +transputer_get_double (void *vstate) +{ + return transputer_get (vstate) / 4294967296.0 ; +} + +static void +transputer_set (void *vstate, unsigned long int s) +{ + transputer_state_t *state = (transputer_state_t *) vstate; + + if (s == 0) + s = 1 ; /* default seed is 1. */ + + state->x = s; + + return; +} + +static const gsl_rng_type transputer_type = +{"transputer", /* name */ + 0xffffffffUL, /* RAND_MAX */ + 1, /* RAND_MIN */ + sizeof (transputer_state_t), + &transputer_set, + &transputer_get, + &transputer_get_double}; + +const gsl_rng_type *gsl_rng_transputer = &transputer_type; diff --git a/gsl-2.5/rng/transputer.lo b/gsl-2.5/rng/transputer.lo new file mode 100644 index 00000000..bf61c254 --- /dev/null +++ b/gsl-2.5/rng/transputer.lo @@ -0,0 +1,12 @@ +# transputer.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/transputer.o' + +# Name of the non-PIC object +non_pic_object='transputer.o' + diff --git a/gsl-2.5/rng/tt.c b/gsl-2.5/rng/tt.c new file mode 100644 index 00000000..e5d4f558 --- /dev/null +++ b/gsl-2.5/rng/tt.c @@ -0,0 +1,143 @@ +/* rng/tt.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 James Theiler, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include + +/* This is the TT800 twisted GSFR generator for 32 bit integers. It + has been superceded by MT19937 (mt.c). The period is 2^800. + + This implementation is based on tt800.c, July 8th 1996 version by + M. Matsumoto, email: matumoto@math.keio.ac.jp + + From: Makoto Matsumoto and Yoshiharu Kurita, "Twisted GFSR + Generators II", ACM Transactions on Modelling and Computer + Simulation, Vol. 4, No. 3, 1994, pages 254-266. */ + +static inline unsigned long int tt_get (void *vstate); +static double tt_get_double (void *vstate); +static void tt_set (void *state, unsigned long int s); + +#define N 25 +#define M 7 + +typedef struct + { + int n; + unsigned long int x[N]; + } +tt_state_t; + +static inline unsigned long int +tt_get (void *vstate) +{ + tt_state_t *state = (tt_state_t *) vstate; + + /* this is the magic vector, a */ + + const unsigned long mag01[2] = + {0x00000000, 0x8ebfd028UL}; + unsigned long int y; + unsigned long int *const x = state->x; + int n = state->n; + + if (n >= N) + { + int i; + for (i = 0; i < N - M; i++) + { + x[i] = x[i + M] ^ (x[i] >> 1) ^ mag01[x[i] % 2]; + } + for (; i < N; i++) + { + x[i] = x[i + (M - N)] ^ (x[i] >> 1) ^ mag01[x[i] % 2]; + }; + n = 0; + } + + y = x[n]; + y ^= (y << 7) & 0x2b5b2500UL; /* s and b, magic vectors */ + y ^= (y << 15) & 0xdb8b0000UL; /* t and c, magic vectors */ + y &= 0xffffffffUL; /* you may delete this line if word size = 32 */ + + /* The following line was added by Makoto Matsumoto in the 1996 + version to improve lower bit's correlation. Delete this line + to use the code published in 1994. */ + + y ^= (y >> 16); /* added to the 1994 version */ + + state->n = n + 1; + + return y; +} + +static double +tt_get_double (void * vstate) +{ + return tt_get (vstate) / 4294967296.0 ; +} + +static void +tt_set (void *vstate, unsigned long int s) +{ + tt_state_t *state = (tt_state_t *) vstate; + + const tt_state_t init_state = + {0, + {0x95f24dabUL, 0x0b685215UL, 0xe76ccae7UL, + 0xaf3ec239UL, 0x715fad23UL, 0x24a590adUL, + 0x69e4b5efUL, 0xbf456141UL, 0x96bc1b7bUL, + 0xa7bdf825UL, 0xc1de75b7UL, 0x8858a9c9UL, + 0x2da87693UL, 0xb657f9ddUL, 0xffdc8a9fUL, + 0x8121da71UL, 0x8b823ecbUL, 0x885d05f5UL, + 0x4e20cd47UL, 0x5a9ad5d9UL, 0x512c0c03UL, + 0xea857ccdUL, 0x4cc1d30fUL, 0x8891a8a1UL, + 0xa6b7aadbUL}}; + + + if (s == 0) /* default seed is given explicitly in the original code */ + { + *state = init_state; + } + else + { + int i; + + state->n = 0; + + state->x[0] = s & 0xffffffffUL; + + for (i = 1; i < N; i++) + state->x[i] = (69069 * state->x[i - 1]) & 0xffffffffUL; + } + + return; +} + +static const gsl_rng_type tt_type = +{"tt800", /* name */ + 0xffffffffUL, /* RAND_MAX */ + 0, /* RAND_MIN */ + sizeof (tt_state_t), + &tt_set, + &tt_get, + &tt_get_double}; + +const gsl_rng_type *gsl_rng_tt800 = &tt_type; diff --git a/gsl-2.5/rng/tt.lo b/gsl-2.5/rng/tt.lo new file mode 100644 index 00000000..e0dd4ff8 --- /dev/null +++ b/gsl-2.5/rng/tt.lo @@ -0,0 +1,12 @@ +# tt.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/tt.o' + +# Name of the non-PIC object +non_pic_object='tt.o' + diff --git a/gsl-2.5/rng/types.c b/gsl-2.5/rng/types.c new file mode 100644 index 00000000..071edcf6 --- /dev/null +++ b/gsl-2.5/rng/types.c @@ -0,0 +1,101 @@ +/* rng/types.c + * + * Copyright (C) 2001, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include + +#define N 100 + +const gsl_rng_type * gsl_rng_generator_types[N]; + +#define ADD(t) {if (i==N) abort(); gsl_rng_generator_types[i] = (t); i++; }; + +const gsl_rng_type ** +gsl_rng_types_setup (void) +{ + int i = 0; + + ADD(gsl_rng_borosh13); + ADD(gsl_rng_cmrg); + ADD(gsl_rng_coveyou); + ADD(gsl_rng_fishman18); + ADD(gsl_rng_fishman20); + ADD(gsl_rng_fishman2x); + ADD(gsl_rng_gfsr4); + ADD(gsl_rng_knuthran); + ADD(gsl_rng_knuthran2); + ADD(gsl_rng_knuthran2002); + ADD(gsl_rng_lecuyer21); + ADD(gsl_rng_minstd); + ADD(gsl_rng_mrg); + ADD(gsl_rng_mt19937); + ADD(gsl_rng_mt19937_1999); + ADD(gsl_rng_mt19937_1998); + ADD(gsl_rng_r250); + ADD(gsl_rng_ran0); + ADD(gsl_rng_ran1); + ADD(gsl_rng_ran2); + ADD(gsl_rng_ran3); + ADD(gsl_rng_rand); + ADD(gsl_rng_rand48); + ADD(gsl_rng_random128_bsd); + ADD(gsl_rng_random128_glibc2); + ADD(gsl_rng_random128_libc5); + ADD(gsl_rng_random256_bsd); + ADD(gsl_rng_random256_glibc2); + ADD(gsl_rng_random256_libc5); + ADD(gsl_rng_random32_bsd); + ADD(gsl_rng_random32_glibc2); + ADD(gsl_rng_random32_libc5); + ADD(gsl_rng_random64_bsd); + ADD(gsl_rng_random64_glibc2); + ADD(gsl_rng_random64_libc5); + ADD(gsl_rng_random8_bsd); + ADD(gsl_rng_random8_glibc2); + ADD(gsl_rng_random8_libc5); + ADD(gsl_rng_random_bsd); + ADD(gsl_rng_random_glibc2); + ADD(gsl_rng_random_libc5); + ADD(gsl_rng_randu); + ADD(gsl_rng_ranf); + ADD(gsl_rng_ranlux); + ADD(gsl_rng_ranlux389); + ADD(gsl_rng_ranlxd1); + ADD(gsl_rng_ranlxd2); + ADD(gsl_rng_ranlxs0); + ADD(gsl_rng_ranlxs1); + ADD(gsl_rng_ranlxs2); + ADD(gsl_rng_ranmar); + ADD(gsl_rng_slatec); + ADD(gsl_rng_taus); + ADD(gsl_rng_taus2); + ADD(gsl_rng_taus113); + ADD(gsl_rng_transputer); + ADD(gsl_rng_tt800); + ADD(gsl_rng_uni); + ADD(gsl_rng_uni32); + ADD(gsl_rng_vax); + ADD(gsl_rng_waterman14); + ADD(gsl_rng_zuf); + ADD(0); + + return gsl_rng_generator_types; +} + diff --git a/gsl-2.5/rng/types.lo b/gsl-2.5/rng/types.lo new file mode 100644 index 00000000..da1e6f80 --- /dev/null +++ b/gsl-2.5/rng/types.lo @@ -0,0 +1,12 @@ +# types.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/types.o' + +# Name of the non-PIC object +non_pic_object='types.o' + diff --git a/gsl-2.5/rng/uni.c b/gsl-2.5/rng/uni.c new file mode 100644 index 00000000..a3fcc69c --- /dev/null +++ b/gsl-2.5/rng/uni.c @@ -0,0 +1,201 @@ +/* rng/uni.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 James Theiler, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/** + This is a lagged Fibonacci generator which supposedly excellent + statistical properties (I do not concur) + + I got it from the net and translated into C. + +* ====================================================================== +* NIST Guide to Available Math Software. +* Fullsource for module UNI from package CMLIB. +* Retrieved from CAMSUN on Tue Oct 8 14:04:10 1996. +* ====================================================================== + +C***BEGIN PROLOGUE UNI +C***DATE WRITTEN 810915 +C***REVISION DATE 830805 +C***CATEGORY NO. L6A21 +C***KEYWORDS RANDOM NUMBERS, UNIFORM RANDOM NUMBERS +C***AUTHOR BLUE, JAMES, SCIENTIFIC COMPUTING DIVISION, NBS +C KAHANER, DAVID, SCIENTIFIC COMPUTING DIVISION, NBS +C MARSAGLIA, GEORGE, COMPUTER SCIENCE DEPT., WASH STATE UNIV +C +C***PURPOSE THIS ROUTINE GENERATES QUASI UNIFORM RANDOM NUMBERS ON [0,1 +C AND CAN BE USED ON ANY COMPUTER WITH WHICH ALLOWS INTEGERS +C AT LEAST AS LARGE AS 32767. +C***DESCRIPTION +C +C THIS ROUTINE GENERATES QUASI UNIFORM RANDOM NUMBERS ON THE INTER +C [0,1). IT CAN BE USED WITH ANY COMPUTER WHICH ALLOWS +C INTEGERS AT LEAST AS LARGE AS 32767. +C +C +C USE +C FIRST TIME.... +C Z = UNI(JD) +C HERE JD IS ANY N O N - Z E R O INTEGER. +C THIS CAUSES INITIALIZATION OF THE PROGRAM +C AND THE FIRST RANDOM NUMBER TO BE RETURNED AS Z. +C SUBSEQUENT TIMES... +C Z = UNI(0) +C CAUSES THE NEXT RANDOM NUMBER TO BE RETURNED AS Z. +C +C +C.................................................................. +C NOTE: USERS WHO WISH TO TRANSPORT THIS PROGRAM FROM ONE COMPUTER +C TO ANOTHER SHOULD READ THE FOLLOWING INFORMATION..... +C +C MACHINE DEPENDENCIES... +C MDIG = A LOWER BOUND ON THE NUMBER OF BINARY DIGITS AVAILABLE +C FOR REPRESENTING INTEGERS, INCLUDING THE SIGN BIT. +C THIS VALUE MUST BE AT LEAST 16, BUT MAY BE INCREASED +C IN LINE WITH REMARK A BELOW. +C +C REMARKS... +C A. THIS PROGRAM CAN BE USED IN TWO WAYS: +C (1) TO OBTAIN REPEATABLE RESULTS ON DIFFERENT COMPUTERS, +C SET 'MDIG' TO THE SMALLEST OF ITS VALUES ON EACH, OR, +C (2) TO ALLOW THE LONGEST SEQUENCE OF RANDOM NUMBERS TO BE +C GENERATED WITHOUT CYCLING (REPEATING) SET 'MDIG' TO THE +C LARGEST POSSIBLE VALUE. +C B. THE SEQUENCE OF NUMBERS GENERATED DEPENDS ON THE INITIAL +C INPUT 'JD' AS WELL AS THE VALUE OF 'MDIG'. +C IF MDIG=16 ONE SHOULD FIND THAT + Editors Note: set the seed using 152 in order to get uni(305) + -jt +C THE FIRST EVALUATION +C Z=UNI(305) GIVES Z=.027832881... +C THE SECOND EVALUATION +C Z=UNI(0) GIVES Z=.56102176... +C THE THIRD EVALUATION +C Z=UNI(0) GIVES Z=.41456343... +C THE THOUSANDTH EVALUATION +C Z=UNI(0) GIVES Z=.19797357... +C +C***REFERENCES MARSAGLIA G., "COMMENTS ON THE PERFECT UNIFORM RANDOM +C NUMBER GENERATOR", UNPUBLISHED NOTES, WASH S. U. +C***ROUTINES CALLED I1MACH,XERROR +C***END PROLOGUE UNI + + **/ + +#include +#include +#include + +static inline unsigned long int uni_get (void *vstate); +static double uni_get_double (void *vstate); +static void uni_set (void *state, unsigned long int s); + +static const unsigned int MDIG = 16; /* Machine digits in int */ +static const unsigned int m1 = 32767; /* 2^(MDIG-1) - 1 */ +static const unsigned int m2 = 256; /* 2^(MDIG/2) */ + +typedef struct + { + int i, j; + unsigned long m[17]; + } +uni_state_t; + +static inline unsigned long +uni_get (void *vstate) +{ + uni_state_t *state = (uni_state_t *) vstate; + const int i = state->i; + const int j = state->j; + + /* important k not be unsigned */ + long k = state->m[i] - state->m[j]; + + if (k < 0) + k += m1; + state->m[j] = k; + + if (i == 0) + { + state->i = 16; + } + else + { + (state->i)--; + } + + if (j == 0) + { + state->j = 16; + } + else + { + (state->j)--; + } + + return k; +} + +static double +uni_get_double (void *vstate) +{ + return uni_get (vstate) / 32767.0 ; +} + +static void +uni_set (void *vstate, unsigned long int s) +{ + unsigned int i, seed, k0, k1, j0, j1; + + uni_state_t *state = (uni_state_t *) vstate; + + /* For this routine, the seeding is very elaborate! */ + /* A flaw in this approach is that seeds 1,2 give exactly the + same random number sequence! */ + + s = 2 * s + 1; /* enforce seed be odd */ + seed = (s < m1 ? s : m1); /* seed should be less than m1 */ + + k0 = 9069 % m2; + k1 = 9069 / m2; + j0 = seed % m2; + j1 = seed / m2; + + for (i = 0; i < 17; ++i) + { + seed = j0 * k0; + j1 = (seed / m2 + j0 * k1 + j1 * k0) % (m2 / 2); + j0 = seed % m2; + state->m[i] = j0 + m2 * j1; + } + state->i = 4; + state->j = 16; + + return; +} + +static const gsl_rng_type uni_type = +{"uni", /* name */ + 32766, /* RAND_MAX */ + 0, /* RAND_MIN */ + sizeof (uni_state_t), + &uni_set, + &uni_get, + &uni_get_double}; + +const gsl_rng_type *gsl_rng_uni = &uni_type; diff --git a/gsl-2.5/rng/uni.lo b/gsl-2.5/rng/uni.lo new file mode 100644 index 00000000..9e814c11 --- /dev/null +++ b/gsl-2.5/rng/uni.lo @@ -0,0 +1,12 @@ +# uni.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/uni.o' + +# Name of the non-PIC object +non_pic_object='uni.o' + diff --git a/gsl-2.5/rng/uni32.c b/gsl-2.5/rng/uni32.c new file mode 100644 index 00000000..35f69065 --- /dev/null +++ b/gsl-2.5/rng/uni32.c @@ -0,0 +1,203 @@ +/* rng/uni32.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 James Theiler, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/** + This is a lagged Fibonacci generator which supposedly excellent + statistical properties (I do not concur) + + I got it from the net and translated into C. + +* ====================================================================== +* NIST Guide to Available Math Software. +* Fullsource for module UNI from package CMLIB. +* Retrieved from CAMSUN on Tue Oct 8 14:04:10 1996. +* ====================================================================== + +C***BEGIN PROLOGUE UNI +C***DATE WRITTEN 810915 +C***REVISION DATE 830805 +C***CATEGORY NO. L6A21 +C***KEYWORDS RANDOM NUMBERS, UNIFORM RANDOM NUMBERS +C***AUTHOR BLUE, JAMES, SCIENTIFIC COMPUTING DIVISION, NBS +C KAHANER, DAVID, SCIENTIFIC COMPUTING DIVISION, NBS +C MARSAGLIA, GEORGE, COMPUTER SCIENCE DEPT., WASH STATE UNIV +C +C***PURPOSE THIS ROUTINE GENERATES QUASI UNIFORM RANDOM NUMBERS ON [0,1 +C AND CAN BE USED ON ANY COMPUTER WITH WHICH ALLOWS INTEGERS +C AT LEAST AS LARGE AS 32767. +C***DESCRIPTION +C +C THIS ROUTINE GENERATES QUASI UNIFORM RANDOM NUMBERS ON THE INTER +C [0,1). IT CAN BE USED WITH ANY COMPUTER WHICH ALLOWS +C INTEGERS AT LEAST AS LARGE AS 32767. +C +C +C USE +C FIRST TIME.... +C Z = UNI(JD) +C HERE JD IS ANY N O N - Z E R O INTEGER. +C THIS CAUSES INITIALIZATION OF THE PROGRAM +C AND THE FIRST RANDOM NUMBER TO BE RETURNED AS Z. +C SUBSEQUENT TIMES... +C Z = UNI(0) +C CAUSES THE NEXT RANDOM NUMBER TO BE RETURNED AS Z. +C +C +C.................................................................. +C NOTE: USERS WHO WISH TO TRANSPORT THIS PROGRAM FROM ONE COMPUTER +C TO ANOTHER SHOULD READ THE FOLLOWING INFORMATION..... +C +C MACHINE DEPENDENCIES... +C MDIG = A LOWER BOUND ON THE NUMBER OF BINARY DIGITS AVAILABLE +C FOR REPRESENTING INTEGERS, INCLUDING THE SIGN BIT. +C THIS VALUE MUST BE AT LEAST 16, BUT MAY BE INCREASED +C IN LINE WITH REMARK A BELOW. +C +C REMARKS... +C A. THIS PROGRAM CAN BE USED IN TWO WAYS: +C (1) TO OBTAIN REPEATABLE RESULTS ON DIFFERENT COMPUTERS, +C SET 'MDIG' TO THE SMALLEST OF ITS VALUES ON EACH, OR, +C (2) TO ALLOW THE LONGEST SEQUENCE OF RANDOM NUMBERS TO BE +C GENERATED WITHOUT CYCLING (REPEATING) SET 'MDIG' TO THE +C LARGEST POSSIBLE VALUE. +C B. THE SEQUENCE OF NUMBERS GENERATED DEPENDS ON THE INITIAL +C INPUT 'JD' AS WELL AS THE VALUE OF 'MDIG'. +C IF MDIG=16 ONE SHOULD FIND THAT + Editors Note: set the seed using 152 in order to get uni(305) + -jt +C THE FIRST EVALUATION +C Z=UNI(305) GIVES Z=.027832881... +C THE SECOND EVALUATION +C Z=UNI(0) GIVES Z=.56102176... +C THE THIRD EVALUATION +C Z=UNI(0) GIVES Z=.41456343... +C THE THOUSANDTH EVALUATION +C Z=UNI(0) GIVES Z=.19797357... +C +C***REFERENCES MARSAGLIA G., "COMMENTS ON THE PERFECT UNIFORM RANDOM +C NUMBER GENERATOR", UNPUBLISHED NOTES, WASH S. U. +C***ROUTINES CALLED I1MACH,XERROR +C***END PROLOGUE UNI + + **/ + +#include +#include +#include + +static inline unsigned long int uni32_get (void *vstate); +static double uni32_get_double (void *vstate); +static void uni32_set (void *state, unsigned long int s); + +static const unsigned long int MDIG = 32; /* Machine digits in int */ +static const unsigned long int m1 = 2147483647; /* 2^(MDIG-1) - 1 */ +static const unsigned long int m2 = 65536; /* 2^(MDIG/2) */ + +typedef struct + { + int i, j; + unsigned long m[17]; + } +uni32_state_t; + +static inline unsigned long +uni32_get (void *vstate) +{ + uni32_state_t *state = (uni32_state_t *) vstate; + const long int i = state->i; + const long int j = state->j; + + /* important k not be unsigned */ + long int k = state->m[i] - state->m[j]; + + if (k < 0) + k += m1; + state->m[j] = k; + + if (i == 0) + { + state->i = 16; + } + else + { + (state->i)--; + } + + if (j == 0) + { + state->j = 16; + } + else + { + (state->j)--; + } + + return k; +} + +static double +uni32_get_double (void *vstate) +{ + return uni32_get (vstate) / 2147483647.0 ; +} + +static void +uni32_set (void *vstate, unsigned long int s) +{ + long int seed, k0, k1, j0, j1; + int i; + + uni32_state_t *state = (uni32_state_t *) vstate; + + /* For this routine, the seeding is very elaborate! */ + /* A flaw in this approach is that seeds 1,2 give exactly the + same random number sequence! */ + + /*s = 2*s+1; *//* enforce seed be odd */ + seed = (s < m1 ? s : m1); /* seed should be less than m1 */ + seed -= (seed % 2 == 0 ? 1 : 0); + + k0 = 9069 % m2; + k1 = 9069 / m2; + j0 = seed % m2; + j1 = seed / m2; + + for (i = 0; i < 17; i++) + { + seed = j0 * k0; + j1 = (seed / m2 + j0 * k1 + j1 * k0) % (m2 / 2); + j0 = seed % m2; + state->m[i] = j0 + m2 * j1; + } + state->i = 4; + state->j = 16; + + return; +} + +static const gsl_rng_type uni32_type = +{"uni32", /* name */ + 2147483646, /* RAND_MAX */ + 0, /* RAND_MIN */ + sizeof (uni32_state_t), + &uni32_set, + &uni32_get, + &uni32_get_double}; + +const gsl_rng_type *gsl_rng_uni32 = &uni32_type; diff --git a/gsl-2.5/rng/uni32.lo b/gsl-2.5/rng/uni32.lo new file mode 100644 index 00000000..322b6cbf --- /dev/null +++ b/gsl-2.5/rng/uni32.lo @@ -0,0 +1,12 @@ +# uni32.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/uni32.o' + +# Name of the non-PIC object +non_pic_object='uni32.o' + diff --git a/gsl-2.5/rng/vax.c b/gsl-2.5/rng/vax.c new file mode 100644 index 00000000..98c05f75 --- /dev/null +++ b/gsl-2.5/rng/vax.c @@ -0,0 +1,83 @@ +/* rng/vax.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 James Theiler, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include + +/* This is the old vax generator MTH$RANDOM. The sequence is, + + x_{n+1} = (a x_n + c) mod m + + with a = 69069, c = 1 and m = 2^32. The seed specifies the initial + value, x_1. + + The theoretical value of x_{10001} is 3051034865. + + The period of this generator is 2^32. */ + +static inline unsigned long int vax_get (void *vstate); +static double vax_get_double (void *vstate); +static void vax_set (void *state, unsigned long int s); + +typedef struct + { + unsigned long int x; + } +vax_state_t; + +static inline unsigned long int +vax_get (void *vstate) +{ + vax_state_t *state = (vax_state_t *) vstate; + + state->x = (69069 * state->x + 1) & 0xffffffffUL; + + return state->x; +} + +static double +vax_get_double (void *vstate) +{ + return vax_get (vstate) / 4294967296.0 ; +} + +static void +vax_set (void *vstate, unsigned long int s) +{ + vax_state_t *state = (vax_state_t *) vstate; + + /* default seed is 0. The constant term c stops the series from + collapsing to 0,0,0,0,0,... */ + + state->x = s; + + return; +} + +static const gsl_rng_type vax_type = +{"vax", /* name */ + 0xffffffffUL, /* RAND_MAX */ + 0, /* RAND_MIN */ + sizeof (vax_state_t), + &vax_set, + &vax_get, + &vax_get_double}; + +const gsl_rng_type *gsl_rng_vax = &vax_type; diff --git a/gsl-2.5/rng/vax.lo b/gsl-2.5/rng/vax.lo new file mode 100644 index 00000000..741ae1bd --- /dev/null +++ b/gsl-2.5/rng/vax.lo @@ -0,0 +1,12 @@ +# vax.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/vax.o' + +# Name of the non-PIC object +non_pic_object='vax.o' + diff --git a/gsl-2.5/rng/waterman14.c b/gsl-2.5/rng/waterman14.c new file mode 100644 index 00000000..3300fb8b --- /dev/null +++ b/gsl-2.5/rng/waterman14.c @@ -0,0 +1,92 @@ +/* rng/waterman14.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 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* + * This generator is taken from + * + * Donald E. Knuth + * The Art of Computer Programming + * Volume 2 + * Third Edition + * Addison-Wesley + * Page 106-108 + * + * It is called "Waterman". + * + * This implementation copyright (C) 2001 Carlo Perassi + * and (C) 2003 Heiko Bauke. + */ + +#include +#include +#include + +#define AA 1566083941UL +#define MM 0xffffffffUL /* 2 ^ 32 - 1 */ + +static inline unsigned long int ran_get (void *vstate); +static double ran_get_double (void *vstate); +static void ran_set (void *state, unsigned long int s); + +typedef struct +{ + unsigned long int x; +} +ran_state_t; + +static inline unsigned long int +ran_get (void *vstate) +{ + ran_state_t *state = (ran_state_t *) vstate; + + state->x = (AA * state->x) & MM; + + return state->x; +} + +static double +ran_get_double (void *vstate) +{ + ran_state_t *state = (ran_state_t *) vstate; + + return ran_get (state) / 4294967296.0; +} + +static void +ran_set (void *vstate, unsigned long int s) +{ + ran_state_t *state = (ran_state_t *) vstate; + + if (s == 0) + s = 1; /* default seed is 1 */ + + state->x = s & MM; + + return; +} + +static const gsl_rng_type ran_type = { + "waterman14", /* name */ + MM, /* RAND_MAX */ + 1, /* RAND_MIN */ + sizeof (ran_state_t), + &ran_set, + &ran_get, + &ran_get_double +}; + +const gsl_rng_type *gsl_rng_waterman14 = &ran_type; diff --git a/gsl-2.5/rng/waterman14.lo b/gsl-2.5/rng/waterman14.lo new file mode 100644 index 00000000..4343c187 --- /dev/null +++ b/gsl-2.5/rng/waterman14.lo @@ -0,0 +1,12 @@ +# waterman14.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/waterman14.o' + +# Name of the non-PIC object +non_pic_object='waterman14.o' + diff --git a/gsl-2.5/rng/zuf.c b/gsl-2.5/rng/zuf.c new file mode 100644 index 00000000..f9b5f2f2 --- /dev/null +++ b/gsl-2.5/rng/zuf.c @@ -0,0 +1,141 @@ +/* rng/zuf.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 James Theiler, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include + +/* It is crucial that m == n-273 mod 607 at all times; + For speed of execution, however, this is never enforced. + Instead is is set in the initializer: note 607-273=334 + Note also that the state.u[607] is not initialized */ + +static inline unsigned long int zuf_get (void *vstate); +static double zuf_get_double (void *vstate); +static void zuf_set (void *state, unsigned long int s); + +static const unsigned long int zuf_randmax = 16777216; /* 2^24 */ + +typedef struct + { + int n; + unsigned long int u[607]; + } +zuf_state_t; + +/* The zufall package was implemented with float's, which is to say 24 + bits of precision. Since I'm using long's instead, my RANDMAX + reflects this. */ + +static inline unsigned long int +zuf_get (void *vstate) +{ + zuf_state_t *state = (zuf_state_t *) vstate; + const int n = state->n; + const int m = (n - 273 + 607) % 607; + unsigned long int t = state->u[n] + state->u[m]; + + while (t > zuf_randmax) + t -= zuf_randmax; + + state->u[n] = t; + + if (n == 606) + { + state->n = 0; + } + else + { + state->n = n + 1; + } + + return t; +} + +static double +zuf_get_double (void *vstate) +{ + return zuf_get (vstate) / 16777216.0 ; +} + +static void +zuf_set (void *vstate, unsigned long int s) +{ + /* A very elaborate seeding procedure is provided with the + zufall package; this is virtually a copy of that procedure */ + + /* Initialized data */ + + long int kl = 9373; + long int ij = 1802; + + /* Local variables */ + long int i, j, k, l, m; + double x, y; + long int ii, jj; + + zuf_state_t *state = (zuf_state_t *) vstate; + + state->n = 0; + +/* generates initial seed buffer by linear congruential */ +/* method. Taken from Marsaglia, FSU report FSU-SCRI-87-50 */ +/* variable seed should be 0 < seed <31328 */ + + if (s == 0) + s = 1802; /* default seed is 1802 */ + + ij = s; + + i = ij / 177 % 177 + 2; + j = ij % 177 + 2; + k = kl / 169 % 178 + 1; + l = kl % 169; + for (ii = 0; ii < 607; ++ii) + { + x = 0.0; + y = 0.5; + /* 24 bits?? */ + for (jj = 1; jj <= 24; ++jj) + { + m = i * j % 179 * k % 179; + i = j; + j = k; + k = m; + l = (l * 53 + 1) % 169; + if (l * m % 64 >= 32) + { + x += y; + } + y *= 0.5; + } + state->u[ii] = (unsigned long int) (x * zuf_randmax); + } +} + +static const gsl_rng_type zuf_type = +{"zuf", /* name */ + 0x00ffffffUL, /* RAND_MAX */ + 0, /* RAND_MIN */ + sizeof (zuf_state_t), + &zuf_set, + &zuf_get, + &zuf_get_double}; + +const gsl_rng_type *gsl_rng_zuf = &zuf_type; diff --git a/gsl-2.5/rng/zuf.lo b/gsl-2.5/rng/zuf.lo new file mode 100644 index 00000000..a71841c8 --- /dev/null +++ b/gsl-2.5/rng/zuf.lo @@ -0,0 +1,12 @@ +# zuf.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/zuf.o' + +# Name of the non-PIC object +non_pic_object='zuf.o' + diff --git a/gsl-2.5/roots/.deps/bisection.Plo b/gsl-2.5/roots/.deps/bisection.Plo new file mode 100644 index 00000000..55d6890b --- /dev/null +++ b/gsl-2.5/roots/.deps/bisection.Plo @@ -0,0 +1,174 @@ +bisection.lo: bisection.c /usr/include/stdc-predef.h ../config.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/byteswap.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/bits/byteswap-16.h /usr/include/sys/types.h \ + /usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib-float.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h ../gsl/gsl_math.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h ../gsl/gsl_precision.h ../gsl/gsl_types.h \ + ../gsl/gsl_nan.h ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h \ + ../gsl/gsl_errno.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_roots.h roots.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_roots.h: + +roots.h: diff --git a/gsl-2.5/roots/.deps/brent.Plo b/gsl-2.5/roots/.deps/brent.Plo new file mode 100644 index 00000000..ecb13d9c --- /dev/null +++ b/gsl-2.5/roots/.deps/brent.Plo @@ -0,0 +1,174 @@ +brent.lo: brent.c /usr/include/stdc-predef.h ../config.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/byteswap.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/bits/byteswap-16.h /usr/include/sys/types.h \ + /usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib-float.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h ../gsl/gsl_math.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h ../gsl/gsl_precision.h ../gsl/gsl_types.h \ + ../gsl/gsl_nan.h ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h \ + ../gsl/gsl_errno.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_roots.h roots.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_roots.h: + +roots.h: diff --git a/gsl-2.5/roots/.deps/convergence.Plo b/gsl-2.5/roots/.deps/convergence.Plo new file mode 100644 index 00000000..3c99c409 --- /dev/null +++ b/gsl-2.5/roots/.deps/convergence.Plo @@ -0,0 +1,172 @@ +convergence.lo: convergence.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_math.h /usr/include/math.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_roots.h /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/byteswap.h \ + /usr/include/bits/byteswap-16.h /usr/include/sys/types.h \ + /usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib-float.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_roots.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: diff --git a/gsl-2.5/roots/.deps/falsepos.Plo b/gsl-2.5/roots/.deps/falsepos.Plo new file mode 100644 index 00000000..d52030fe --- /dev/null +++ b/gsl-2.5/roots/.deps/falsepos.Plo @@ -0,0 +1,174 @@ +falsepos.lo: falsepos.c /usr/include/stdc-predef.h ../config.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/byteswap.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/bits/byteswap-16.h /usr/include/sys/types.h \ + /usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib-float.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h ../gsl/gsl_math.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h ../gsl/gsl_precision.h ../gsl/gsl_types.h \ + ../gsl/gsl_nan.h ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h \ + ../gsl/gsl_errno.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_roots.h roots.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_roots.h: + +roots.h: diff --git a/gsl-2.5/roots/.deps/fdfsolver.Plo b/gsl-2.5/roots/.deps/fdfsolver.Plo new file mode 100644 index 00000000..6f424c44 --- /dev/null +++ b/gsl-2.5/roots/.deps/fdfsolver.Plo @@ -0,0 +1,183 @@ +fdfsolver.lo: fdfsolver.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/string.h \ + /usr/include/xlocale.h /usr/include/bits/string.h \ + /usr/include/bits/string2.h ../gsl/gsl_errno.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_types.h ../gsl/gsl_roots.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_nan.h ../gsl/gsl_pow_int.h \ + ../gsl/gsl_minmax.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string.h: + +/usr/include/bits/string2.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_roots.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: diff --git a/gsl-2.5/roots/.deps/fsolver.Plo b/gsl-2.5/roots/.deps/fsolver.Plo new file mode 100644 index 00000000..bec6f72b --- /dev/null +++ b/gsl-2.5/roots/.deps/fsolver.Plo @@ -0,0 +1,183 @@ +fsolver.lo: fsolver.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/string.h \ + /usr/include/xlocale.h /usr/include/bits/string.h \ + /usr/include/bits/string2.h ../gsl/gsl_errno.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_types.h ../gsl/gsl_roots.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_nan.h ../gsl/gsl_pow_int.h \ + ../gsl/gsl_minmax.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string.h: + +/usr/include/bits/string2.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_roots.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: diff --git a/gsl-2.5/roots/.deps/newton.Plo b/gsl-2.5/roots/.deps/newton.Plo new file mode 100644 index 00000000..561a8eb3 --- /dev/null +++ b/gsl-2.5/roots/.deps/newton.Plo @@ -0,0 +1,174 @@ +newton.lo: newton.c /usr/include/stdc-predef.h ../config.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/byteswap.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/bits/byteswap-16.h /usr/include/sys/types.h \ + /usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib-float.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h ../gsl/gsl_math.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h ../gsl/gsl_precision.h ../gsl/gsl_types.h \ + ../gsl/gsl_nan.h ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h \ + ../gsl/gsl_errno.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_roots.h roots.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_roots.h: + +roots.h: diff --git a/gsl-2.5/roots/.deps/secant.Plo b/gsl-2.5/roots/.deps/secant.Plo new file mode 100644 index 00000000..a6636789 --- /dev/null +++ b/gsl-2.5/roots/.deps/secant.Plo @@ -0,0 +1,174 @@ +secant.lo: secant.c /usr/include/stdc-predef.h ../config.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/byteswap.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/bits/byteswap-16.h /usr/include/sys/types.h \ + /usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib-float.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h ../gsl/gsl_math.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h ../gsl/gsl_precision.h ../gsl/gsl_types.h \ + ../gsl/gsl_nan.h ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h \ + ../gsl/gsl_errno.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_roots.h roots.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_roots.h: + +roots.h: diff --git a/gsl-2.5/roots/.deps/steffenson.Plo b/gsl-2.5/roots/.deps/steffenson.Plo new file mode 100644 index 00000000..20da672f --- /dev/null +++ b/gsl-2.5/roots/.deps/steffenson.Plo @@ -0,0 +1,174 @@ +steffenson.lo: steffenson.c /usr/include/stdc-predef.h ../config.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/byteswap.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/bits/byteswap-16.h /usr/include/sys/types.h \ + /usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib-float.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h ../gsl/gsl_math.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h ../gsl/gsl_precision.h ../gsl/gsl_types.h \ + ../gsl/gsl_nan.h ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h \ + ../gsl/gsl_errno.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_roots.h roots.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_roots.h: + +roots.h: diff --git a/gsl-2.5/roots/.deps/test.Po b/gsl-2.5/roots/.deps/test.Po new file mode 100644 index 00000000..bf79447d --- /dev/null +++ b/gsl-2.5/roots/.deps/test.Po @@ -0,0 +1,181 @@ +test.o: test.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_test.h \ + ../gsl/gsl_roots.h ../gsl/gsl_errno.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_ieee_utils.h roots.h test.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_test.h: + +../gsl/gsl_roots.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_ieee_utils.h: + +roots.h: + +test.h: diff --git a/gsl-2.5/roots/.deps/test_funcs.Po b/gsl-2.5/roots/.deps/test_funcs.Po new file mode 100644 index 00000000..e456d768 --- /dev/null +++ b/gsl-2.5/roots/.deps/test_funcs.Po @@ -0,0 +1,137 @@ +test_funcs.o: test_funcs.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h /usr/include/stdlib.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_math.h ../gsl/gsl_sys.h \ + ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_roots.h test.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +/usr/include/stdlib.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_roots.h: + +test.h: diff --git a/gsl-2.5/roots/.libs/libgslroots.la b/gsl-2.5/roots/.libs/libgslroots.la new file mode 120000 index 00000000..f0b33648 --- /dev/null +++ b/gsl-2.5/roots/.libs/libgslroots.la @@ -0,0 +1 @@ +../libgslroots.la \ No newline at end of file diff --git a/gsl-2.5/roots/ChangeLog b/gsl-2.5/roots/ChangeLog new file mode 100644 index 00000000..8c1a56e6 --- /dev/null +++ b/gsl-2.5/roots/ChangeLog @@ -0,0 +1,181 @@ +2009-07-09 Brian Gough + + * fsolver.c (gsl_root_fsolver_free): handle NULL argument in free + + * fdfsolver.c (gsl_root_fdfsolver_free): handle NULL argument in + free + +2008-07-03 Brian Gough + + * Makefile.am (INCLUDES): use top_srcdir instead of top_builddir + +2007-07-30 Brian Gough + + * newton.c (newton_iterate): use gsl_finite instead of finite + + * roots.h (SAFE_FUNC_CALL): use gsl_finite instead of finite + + * secant.c (secant_iterate): use gsl_finite instead of finite + + * steffenson.c (steffenson_iterate): use gsl_finite instead of + finite + +2007-01-04 Brian Gough + + * convergence.c (gsl_root_test_delta): added termination + alternative condition x1==x0 + +2005-03-02 Brian Gough + + * steffenson.c (steffenson_iterate): improved wording of error messages + + * secant.c (secant_iterate): improved wording of error messages + + * roots.h (SAFE_FUNC_CALL): improved wording of error message + + * newton.c (newton_iterate): improved wording of error messages + + * utility.c: removed, not needed any more + +Sun Jul 15 17:53:48 2001 Brian Gough + + * removed interval type + +Sun May 6 14:26:59 2001 Brian Gough + + * test.c: removed tests for macros, which are now in sys/. + +Mon Apr 16 20:17:04 2001 Brian Gough + + * fsolver.c (gsl_root_fsolver_alloc): removed unnecessary status + variable + +Sun Feb 18 15:35:25 2001 Brian Gough + + * fdfsolver.c fsolver.c: changed so that the solver _alloc + function no longer calls _set, the user must do that separately. + +Wed May 17 11:37:15 2000 Brian Gough + + * test_macros.c (test_macros): use GSL_POSINF and GSL_NAN macros + instead of 1/0 and 0/0 + +Mon Feb 14 13:05:30 2000 Brian Gough + + * removed definition of isinf macro (no longer needed) + + * made all internal functions static + +Wed Nov 3 11:59:35 1999 Brian Gough + + * fixed test failures + + * test.c (main): added a call to gsl_ieee_env_setup for testing + + * test_roots.c: increased the maximum number of iterations to 150 + so that the tests still work on the difficult cases. + + * steffenson.c (steffenson_iterate): add a check to avoid division + by zero + +Sat Oct 16 19:43:14 1999 Brian Gough + + * removed GSL_ROOT_EPSILON_BUFFER, not needed anymore + +Wed Jul 21 18:47:01 1999 Brian Gough + + * gsl_roots.h, convergence.c: changed order of relative and + absolute errors to make them the same as quadpack routines + (abs,rel) + +Wed Jul 21 16:30:56 1999 Brian Gough + + * brent.c (brent_iterate): fixed bug where bounding interval could + be incorrect and not include root. + +Mon Mar 1 15:38:06 1999 Brian Gough + + * moved static class data out of gsl_root_fsolver and + gsl_root_fdfsolver and into gsl_root_fsolver_type and + gsl_root_fdfsolver_type + + +Mon Mar 1 15:38:06 1999 Brian Gough + + * renamed f_solver to fsolver and fdf_solver to fdfsolver, since + these look neater + +Sun Feb 28 21:11:21 1999 Brian Gough + + * rewrote the root finding functions in an iterative framework + +Tue Nov 17 16:47:09 1998 Brian Gough + + * secant.c, falsepos.c newton.c: added gsl_math.h to included + headers to import GSL_MAX and GSL_MIN + +Mon Nov 9 21:21:45 1998 Brian Gough + + * roots.h: got rid of local MAX(a,b) and MIN(a,b) definitions + since they are now in config.h + +Wed Nov 4 16:08:32 1998 Brian Gough + + * test.c (test_brent): allow the brent tests to run for more + iterations since they take longer on the pathological cases. + + * brent.c (gsl_root_brent): on each iteration keep track of + current best estimates of the root and the bounds so that they are + returned to the user if the function exits prematurely. + + clean up the brent algorithm based on remarks in the original + paper + +Mon Oct 26 16:31:21 1998 Brian Gough + + * in all routines with upper and lower bounds if a root is found + exactly then the bracket is collapsed onto the root instead of + being untouched. + +Thu Oct 15 13:59:30 1998 Brian Gough + + * bisection.c, falsepos.c, secant.c: reordered the tests so that + the minimum number of function evaluations are performed when + there is an early exit due to one of the supplied limits lying on + a root. + +Fri Aug 21 14:48:13 1998 Brian Gough + + * test.c: clean up of tests to get rid of warnings + +Thu Aug 20 10:21:15 1998 Brian Gough + + * roots.h (_WITHIN_TOL): added extra parens in macro definition, + for safety + + * falsepos.c (gsl_root_falsepos): removed test for absolute + equality and replaced by a flag indicating which variables + changed. + + * test.c (main): simplified the tests, removed command line + arguments (can use the debugger to select which ones to run) + +Mon Jun 15 22:22:54 1998 Brian Gough + + * started to eliminate void * arguments for function types (they + are not a good idea and can easily be specified) + +1998-02-09 Mark Galassi + + * test.c (main): added an extra argument so that the $(srcdir) can + be passed along when "make check" is run in a separate build + directory. + + * test-macros, test-secant, test-bisection, test-newton, + test-falsepos: modified these to use build and source directories + explicitly. Now "make check" in a separate build directory works. + +1998-02-02 Mark Galassi + + * Makefile.am (TESTS): added $(srcdir) before these scripts, since + the TESTS target picks things from the build directory. diff --git a/gsl-2.5/roots/Makefile b/gsl-2.5/roots/Makefile new file mode 100644 index 00000000..be9b3c28 --- /dev/null +++ b/gsl-2.5/roots/Makefile @@ -0,0 +1,1039 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# roots/Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + + +# -*-makefile-*- + + + +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/gsl +pkgincludedir = $(includedir)/gsl +pkglibdir = $(libdir)/gsl +pkglibexecdir = $(libexecdir)/gsl +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = x86_64-unknown-linux-gnu +host_triplet = x86_64-unknown-linux-gnu +check_PROGRAMS = test$(EXEEXT) +subdir = roots +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp \ + $(noinst_HEADERS) $(pkginclude_HEADERS) \ + $(top_srcdir)/test-driver ChangeLog TODO +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +libgslroots_la_LIBADD = +am_libgslroots_la_OBJECTS = bisection.lo brent.lo falsepos.lo \ + newton.lo secant.lo steffenson.lo convergence.lo fsolver.lo \ + fdfsolver.lo +libgslroots_la_OBJECTS = $(am_libgslroots_la_OBJECTS) +AM_V_lt = $(am__v_lt_$(V)) +am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) +am__v_lt_0 = --silent +am__v_lt_1 = +am_test_OBJECTS = test.$(OBJEXT) test_funcs.$(OBJEXT) +test_OBJECTS = $(am_test_OBJECTS) +test_DEPENDENCIES = libgslroots.la ../ieee-utils/libgslieeeutils.la \ + ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la \ + ../utils/libutils.la +AM_V_P = $(am__v_P_$(V)) +am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY)) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_$(V)) +am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_$(V)) +am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I. -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_$(V)) +am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_$(V)) +am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libgslroots_la_SOURCES) $(test_SOURCES) +DIST_SOURCES = $(libgslroots_la_SOURCES) $(test_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(pkgincludedir)" +HEADERS = $(noinst_HEADERS) $(pkginclude_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = .test +LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing aclocal-1.13 +AMTAR = $${TAR-tar} +AM_DEFAULT_VERBOSITY = 1 +AR = ar +AS = as +AUTOCONF = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing autoconf +AUTOHEADER = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing autoheader +AUTOMAKE = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing automake-1.13 +AWK = gawk +CC = gcc +CCDEPMODE = depmode=gcc3 +CFLAGS = -g -O2 +CPP = gcc -E +CPPFLAGS = +CYGPATH_W = echo +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +DLLTOOL = false +DSYMUTIL = +DUMPBIN = +ECHO_C = +ECHO_N = -n +ECHO_T = +EGREP = /usr/bin/grep -E +EXEEXT = +FGREP = /usr/bin/grep -F +GREP = /usr/bin/grep +GSLCBLAS_LDFLAGS = +GSL_CFLAGS = -I${prefix}/include +GSL_LDFLAGS = +GSL_LIBADD = +GSL_LIBM = -lm +GSL_LIBS = -L${exec_prefix}/lib -lgsl +GSL_LT_CBLAS_VERSION = 0:0:0 +GSL_LT_VERSION = 24:0:1 +GSL_MAJOR_VERSION = 2 +GSL_MINOR_VERSION = 5 +HAVE_AIX_IEEE_INTERFACE = +HAVE_DARWIN86_IEEE_INTERFACE = +HAVE_DARWIN_IEEE_INTERFACE = +HAVE_FREEBSD_IEEE_INTERFACE = +HAVE_GNUM68K_IEEE_INTERFACE = +HAVE_GNUPPC_IEEE_INTERFACE = +HAVE_GNUSPARC_IEEE_INTERFACE = +HAVE_GNUX86_IEEE_INTERFACE = +HAVE_HPUX11_IEEE_INTERFACE = +HAVE_HPUX_IEEE_INTERFACE = +HAVE_IRIX_IEEE_INTERFACE = +HAVE_NETBSD_IEEE_INTERFACE = +HAVE_OPENBSD_IEEE_INTERFACE = +HAVE_OS2EMX_IEEE_INTERFACE = +HAVE_SOLARIS_IEEE_INTERFACE = +HAVE_SUNOS4_IEEE_INTERFACE = +HAVE_TRU64_IEEE_INTERFACE = +INSTALL = /usr/bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = $(install_sh) -c -s +LD = /usr/bin/ld -m elf_x86_64 +LDFLAGS = +LIBM = -lm +LIBOBJS = +LIBS = -lm +LIBTOOL = $(SHELL) $(top_builddir)/libtool +LIPO = +LN_S = ln -s +LTLIBOBJS = +MAINT = # +MAKEINFO = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing makeinfo +MANIFEST_TOOL = : +MKDIR_P = /usr/bin/mkdir -p +NM = /usr/bin/nm -B +NMEDIT = +OBJDUMP = objdump +OBJEXT = o +OTOOL = +OTOOL64 = +PACKAGE = gsl +PACKAGE_BUGREPORT = +PACKAGE_NAME = gsl +PACKAGE_STRING = gsl 2.5 +PACKAGE_TARNAME = gsl +PACKAGE_URL = +PACKAGE_VERSION = 2.5 +PATH_SEPARATOR = : +RANLIB = ranlib +SED = /usr/bin/sed +SET_MAKE = +SHELL = /bin/sh +STRIP = strip +VERSION = 2.5 +abs_builddir = /home/groups/kipac/chto/package/gsl/gsl-2.5/roots +abs_srcdir = /home/groups/kipac/chto/package/gsl/gsl-2.5/roots +abs_top_builddir = /home/groups/kipac/chto/package/gsl/gsl-2.5 +abs_top_srcdir = /home/groups/kipac/chto/package/gsl/gsl-2.5 +ac_ct_AR = ar +ac_ct_CC = gcc +ac_ct_DUMPBIN = +am__include = include +am__leading_dot = . +am__quote = +am__tar = $${TAR-tar} chof - "$$tardir" +am__untar = $${TAR-tar} xf - +bindir = ${exec_prefix}/bin +build = x86_64-unknown-linux-gnu +build_alias = +build_cpu = x86_64 +build_os = linux-gnu +build_vendor = unknown +builddir = . +datadir = ${datarootdir} +datarootdir = ${prefix}/share +docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} +dvidir = ${docdir} +exec_prefix = ${prefix} +host = x86_64-unknown-linux-gnu +host_alias = +host_cpu = x86_64 +host_os = linux-gnu +host_vendor = unknown +htmldir = ${docdir} +includedir = ${prefix}/include +infodir = ${datarootdir}/info +install_sh = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/install-sh +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +localedir = ${datarootdir}/locale +localstatedir = ${prefix}/var +mandir = ${datarootdir}/man +mkdir_p = $(MKDIR_P) +oldincludedir = /usr/include +pdfdir = ${docdir} +prefix = /home/groups/kipac/chto/package/gsl/gsl_lib +program_transform_name = s,x,x, +psdir = ${docdir} +sbindir = ${exec_prefix}/sbin +sharedstatedir = ${prefix}/com +srcdir = . +sysconfdir = ${prefix}/etc +target_alias = +top_build_prefix = ../ +top_builddir = .. +top_srcdir = .. +noinst_LTLIBRARIES = libgslroots.la +pkginclude_HEADERS = gsl_roots.h +noinst_HEADERS = roots.h +AM_CPPFLAGS = -I$(top_srcdir) +libgslroots_la_SOURCES = bisection.c brent.c falsepos.c newton.c secant.c steffenson.c convergence.c fsolver.c fdfsolver.c +TESTS = $(check_PROGRAMS) +test_SOURCES = test.c test_funcs.c test.h +test_LDADD = libgslroots.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu roots/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu roots/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: # $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): # $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libgslroots.la: $(libgslroots_la_OBJECTS) $(libgslroots_la_DEPENDENCIES) $(EXTRA_libgslroots_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(libgslroots_la_OBJECTS) $(libgslroots_la_LIBADD) $(LIBS) + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) $(EXTRA_test_DEPENDENCIES) + @rm -f test$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_OBJECTS) $(test_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +include ./$(DEPDIR)/bisection.Plo +include ./$(DEPDIR)/brent.Plo +include ./$(DEPDIR)/convergence.Plo +include ./$(DEPDIR)/falsepos.Plo +include ./$(DEPDIR)/fdfsolver.Plo +include ./$(DEPDIR)/fsolver.Plo +include ./$(DEPDIR)/newton.Plo +include ./$(DEPDIR)/secant.Plo +include ./$(DEPDIR)/steffenson.Plo +include ./$(DEPDIR)/test.Po +include ./$(DEPDIR)/test_funcs.Po + +.c.o: + $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# $(AM_V_CC)source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(COMPILE) -c $< + +.c.obj: + $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# $(AM_V_CC)source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: + $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +# $(AM_V_CC)source='$<' object='$@' libtool=yes \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-pkgincludeHEADERS: $(pkginclude_HEADERS) + @$(NORMAL_INSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \ + done + +uninstall-pkgincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + else \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_PROGRAMS) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +test.log: test$(EXEEXT) + @p='test$(EXEEXT)'; \ + b='test'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +#.test$(EXEEXT).log: +# @p='$<'; \ +# $(am__set_b); \ +# $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +# --log-file $$b.log --trs-file $$b.trs \ +# $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +# "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-am +all-am: Makefile $(LTLIBRARIES) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(pkgincludedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-pkgincludeHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-pkgincludeHEADERS + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES cscopelist-am ctags ctags-am distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-pkgincludeHEADERS \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + recheck tags tags-am uninstall uninstall-am \ + uninstall-pkgincludeHEADERS + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gsl-2.5/roots/Makefile.am b/gsl-2.5/roots/Makefile.am new file mode 100644 index 00000000..89ef7e77 --- /dev/null +++ b/gsl-2.5/roots/Makefile.am @@ -0,0 +1,19 @@ +# -*-makefile-*- + +noinst_LTLIBRARIES = libgslroots.la + +pkginclude_HEADERS = gsl_roots.h + +noinst_HEADERS = roots.h + +AM_CPPFLAGS = -I$(top_srcdir) + +libgslroots_la_SOURCES = bisection.c brent.c falsepos.c newton.c secant.c steffenson.c convergence.c fsolver.c fdfsolver.c + +check_PROGRAMS = test + +TESTS = $(check_PROGRAMS) + +test_SOURCES = test.c test_funcs.c test.h +test_LDADD = libgslroots.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la + diff --git a/gsl-2.5/roots/Makefile.in b/gsl-2.5/roots/Makefile.in new file mode 100644 index 00000000..32679fb6 --- /dev/null +++ b/gsl-2.5/roots/Makefile.in @@ -0,0 +1,1039 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# -*-makefile-*- + + +VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +check_PROGRAMS = test$(EXEEXT) +subdir = roots +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp \ + $(noinst_HEADERS) $(pkginclude_HEADERS) \ + $(top_srcdir)/test-driver ChangeLog TODO +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +libgslroots_la_LIBADD = +am_libgslroots_la_OBJECTS = bisection.lo brent.lo falsepos.lo \ + newton.lo secant.lo steffenson.lo convergence.lo fsolver.lo \ + fdfsolver.lo +libgslroots_la_OBJECTS = $(am_libgslroots_la_OBJECTS) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +am_test_OBJECTS = test.$(OBJEXT) test_funcs.$(OBJEXT) +test_OBJECTS = $(am_test_OBJECTS) +test_DEPENDENCIES = libgslroots.la ../ieee-utils/libgslieeeutils.la \ + ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la \ + ../utils/libutils.la +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libgslroots_la_SOURCES) $(test_SOURCES) +DIST_SOURCES = $(libgslroots_la_SOURCES) $(test_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(pkgincludedir)" +HEADERS = $(noinst_HEADERS) $(pkginclude_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = @EXEEXT@ .test +LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +GSLCBLAS_LDFLAGS = @GSLCBLAS_LDFLAGS@ +GSL_CFLAGS = @GSL_CFLAGS@ +GSL_LDFLAGS = @GSL_LDFLAGS@ +GSL_LIBADD = @GSL_LIBADD@ +GSL_LIBM = @GSL_LIBM@ +GSL_LIBS = @GSL_LIBS@ +GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ +GSL_LT_VERSION = @GSL_LT_VERSION@ +GSL_MAJOR_VERSION = @GSL_MAJOR_VERSION@ +GSL_MINOR_VERSION = @GSL_MINOR_VERSION@ +HAVE_AIX_IEEE_INTERFACE = @HAVE_AIX_IEEE_INTERFACE@ +HAVE_DARWIN86_IEEE_INTERFACE = @HAVE_DARWIN86_IEEE_INTERFACE@ +HAVE_DARWIN_IEEE_INTERFACE = @HAVE_DARWIN_IEEE_INTERFACE@ +HAVE_FREEBSD_IEEE_INTERFACE = @HAVE_FREEBSD_IEEE_INTERFACE@ +HAVE_GNUM68K_IEEE_INTERFACE = @HAVE_GNUM68K_IEEE_INTERFACE@ +HAVE_GNUPPC_IEEE_INTERFACE = @HAVE_GNUPPC_IEEE_INTERFACE@ +HAVE_GNUSPARC_IEEE_INTERFACE = @HAVE_GNUSPARC_IEEE_INTERFACE@ +HAVE_GNUX86_IEEE_INTERFACE = @HAVE_GNUX86_IEEE_INTERFACE@ +HAVE_HPUX11_IEEE_INTERFACE = @HAVE_HPUX11_IEEE_INTERFACE@ +HAVE_HPUX_IEEE_INTERFACE = @HAVE_HPUX_IEEE_INTERFACE@ +HAVE_IRIX_IEEE_INTERFACE = @HAVE_IRIX_IEEE_INTERFACE@ +HAVE_NETBSD_IEEE_INTERFACE = @HAVE_NETBSD_IEEE_INTERFACE@ +HAVE_OPENBSD_IEEE_INTERFACE = @HAVE_OPENBSD_IEEE_INTERFACE@ +HAVE_OS2EMX_IEEE_INTERFACE = @HAVE_OS2EMX_IEEE_INTERFACE@ +HAVE_SOLARIS_IEEE_INTERFACE = @HAVE_SOLARIS_IEEE_INTERFACE@ +HAVE_SUNOS4_IEEE_INTERFACE = @HAVE_SUNOS4_IEEE_INTERFACE@ +HAVE_TRU64_IEEE_INTERFACE = @HAVE_TRU64_IEEE_INTERFACE@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBM = @LIBM@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +noinst_LTLIBRARIES = libgslroots.la +pkginclude_HEADERS = gsl_roots.h +noinst_HEADERS = roots.h +AM_CPPFLAGS = -I$(top_srcdir) +libgslroots_la_SOURCES = bisection.c brent.c falsepos.c newton.c secant.c steffenson.c convergence.c fsolver.c fdfsolver.c +TESTS = $(check_PROGRAMS) +test_SOURCES = test.c test_funcs.c test.h +test_LDADD = libgslroots.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu roots/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu roots/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libgslroots.la: $(libgslroots_la_OBJECTS) $(libgslroots_la_DEPENDENCIES) $(EXTRA_libgslroots_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(libgslroots_la_OBJECTS) $(libgslroots_la_LIBADD) $(LIBS) + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) $(EXTRA_test_DEPENDENCIES) + @rm -f test$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_OBJECTS) $(test_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bisection.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/brent.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/convergence.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/falsepos.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fdfsolver.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fsolver.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/newton.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/secant.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/steffenson.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_funcs.Po@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-pkgincludeHEADERS: $(pkginclude_HEADERS) + @$(NORMAL_INSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \ + done + +uninstall-pkgincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + else \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_PROGRAMS) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +test.log: test$(EXEEXT) + @p='test$(EXEEXT)'; \ + b='test'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +@am__EXEEXT_TRUE@.test$(EXEEXT).log: +@am__EXEEXT_TRUE@ @p='$<'; \ +@am__EXEEXT_TRUE@ $(am__set_b); \ +@am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +@am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ +@am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +@am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-am +all-am: Makefile $(LTLIBRARIES) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(pkgincludedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-pkgincludeHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-pkgincludeHEADERS + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES cscopelist-am ctags ctags-am distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-pkgincludeHEADERS \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + recheck tags tags-am uninstall uninstall-am \ + uninstall-pkgincludeHEADERS + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gsl-2.5/roots/TODO b/gsl-2.5/roots/TODO new file mode 100644 index 00000000..6adc8d48 --- /dev/null +++ b/gsl-2.5/roots/TODO @@ -0,0 +1,12 @@ +# -*- org -*- +#+CATEGORY: roots + +* Add an inline version of the iterate method for speed? Perhaps not, +the time taken for each iteration surely dominated by the convergence +test. + +* Numerical derivatives? Maybe have a function to manufacture an fdf +from an f and optionally a df. (We'll need to approximate the +derivative if it is not provided; this is something which should be +done outside the root finding package.) + diff --git a/gsl-2.5/roots/bisection.c b/gsl-2.5/roots/bisection.c new file mode 100644 index 00000000..9665b736 --- /dev/null +++ b/gsl-2.5/roots/bisection.c @@ -0,0 +1,134 @@ +/* roots/bisection.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Reid Priedhorsky, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + + +/* bisection.c -- bisection root finding algorithm */ + +#include + +#include +#include +#include +#include +#include + +#include +#include +#include + +#include "roots.h" + +typedef struct + { + double f_lower, f_upper; + } +bisection_state_t; + +static int bisection_init (void * vstate, gsl_function * f, double * root, double x_lower, double x_upper); +static int bisection_iterate (void * vstate, gsl_function * f, double * root, double * x_lower, double * x_upper); + +static int +bisection_init (void * vstate, gsl_function * f, double * root, double x_lower, double x_upper) +{ + bisection_state_t * state = (bisection_state_t *) vstate; + + double f_lower, f_upper ; + + *root = 0.5 * (x_lower + x_upper) ; + + SAFE_FUNC_CALL (f, x_lower, &f_lower); + SAFE_FUNC_CALL (f, x_upper, &f_upper); + + state->f_lower = f_lower; + state->f_upper = f_upper; + + if ((f_lower < 0.0 && f_upper < 0.0) || (f_lower > 0.0 && f_upper > 0.0)) + { + GSL_ERROR ("endpoints do not straddle y=0", GSL_EINVAL); + } + + return GSL_SUCCESS; + +} + +static int +bisection_iterate (void * vstate, gsl_function * f, double * root, double * x_lower, double * x_upper) +{ + bisection_state_t * state = (bisection_state_t *) vstate; + + double x_bisect, f_bisect; + + const double x_left = *x_lower ; + const double x_right = *x_upper ; + + const double f_lower = state->f_lower; + const double f_upper = state->f_upper; + + if (f_lower == 0.0) + { + *root = x_left ; + *x_upper = x_left; + return GSL_SUCCESS; + } + + if (f_upper == 0.0) + { + *root = x_right ; + *x_lower = x_right; + return GSL_SUCCESS; + } + + x_bisect = (x_left + x_right) / 2.0; + + SAFE_FUNC_CALL (f, x_bisect, &f_bisect); + + if (f_bisect == 0.0) + { + *root = x_bisect; + *x_lower = x_bisect; + *x_upper = x_bisect; + return GSL_SUCCESS; + } + + /* Discard the half of the interval which doesn't contain the root. */ + + if ((f_lower > 0.0 && f_bisect < 0.0) || (f_lower < 0.0 && f_bisect > 0.0)) + { + *root = 0.5 * (x_left + x_bisect) ; + *x_upper = x_bisect; + state->f_upper = f_bisect; + } + else + { + *root = 0.5 * (x_bisect + x_right) ; + *x_lower = x_bisect; + state->f_lower = f_bisect; + } + + return GSL_SUCCESS; +} + + +static const gsl_root_fsolver_type bisection_type = +{"bisection", /* name */ + sizeof (bisection_state_t), + &bisection_init, + &bisection_iterate}; + +const gsl_root_fsolver_type * gsl_root_fsolver_bisection = &bisection_type; diff --git a/gsl-2.5/roots/bisection.lo b/gsl-2.5/roots/bisection.lo new file mode 100644 index 00000000..91d26f44 --- /dev/null +++ b/gsl-2.5/roots/bisection.lo @@ -0,0 +1,12 @@ +# bisection.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/bisection.o' + +# Name of the non-PIC object +non_pic_object='bisection.o' + diff --git a/gsl-2.5/roots/brent.c b/gsl-2.5/roots/brent.c new file mode 100644 index 00000000..4f0c9cd3 --- /dev/null +++ b/gsl-2.5/roots/brent.c @@ -0,0 +1,244 @@ +/* roots/brent.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Reid Priedhorsky, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* brent.c -- brent root finding algorithm */ + +#include + +#include +#include +#include +#include +#include + +#include +#include +#include + +#include "roots.h" + + +typedef struct + { + double a, b, c, d, e; + double fa, fb, fc; + } +brent_state_t; + +static int brent_init (void * vstate, gsl_function * f, double * root, double x_lower, double x_upper); +static int brent_iterate (void * vstate, gsl_function * f, double * root, double * x_lower, double * x_upper); + + +static int +brent_init (void * vstate, gsl_function * f, double * root, double x_lower, double x_upper) +{ + brent_state_t * state = (brent_state_t *) vstate; + + double f_lower, f_upper ; + + *root = 0.5 * (x_lower + x_upper) ; + + SAFE_FUNC_CALL (f, x_lower, &f_lower); + SAFE_FUNC_CALL (f, x_upper, &f_upper); + + state->a = x_lower; + state->fa = f_lower; + + state->b = x_upper; + state->fb = f_upper; + + state->c = x_upper; + state->fc = f_upper; + + state->d = x_upper - x_lower ; + state->e = x_upper - x_lower ; + + if ((f_lower < 0.0 && f_upper < 0.0) || (f_lower > 0.0 && f_upper > 0.0)) + { + GSL_ERROR ("endpoints do not straddle y=0", GSL_EINVAL); + } + + return GSL_SUCCESS; + +} + +static int +brent_iterate (void * vstate, gsl_function * f, double * root, double * x_lower, double * x_upper) +{ + brent_state_t * state = (brent_state_t *) vstate; + + double tol, m; + + int ac_equal = 0; + + double a = state->a, b = state->b, c = state->c; + double fa = state->fa, fb = state->fb, fc = state->fc; + double d = state->d, e = state->e; + + if ((fb < 0 && fc < 0) || (fb > 0 && fc > 0)) + { + ac_equal = 1; + c = a; + fc = fa; + d = b - a; + e = b - a; + } + + if (fabs (fc) < fabs (fb)) + { + ac_equal = 1; + a = b; + b = c; + c = a; + fa = fb; + fb = fc; + fc = fa; + } + + tol = 0.5 * GSL_DBL_EPSILON * fabs (b); + m = 0.5 * (c - b); + + if (fb == 0) + { + *root = b; + *x_lower = b; + *x_upper = b; + + return GSL_SUCCESS; + } + + if (fabs (m) <= tol) + { + *root = b; + + if (b < c) + { + *x_lower = b; + *x_upper = c; + } + else + { + *x_lower = c; + *x_upper = b; + } + + return GSL_SUCCESS; + } + + if (fabs (e) < tol || fabs (fa) <= fabs (fb)) + { + d = m; /* use bisection */ + e = m; + } + else + { + double p, q, r; /* use inverse cubic interpolation */ + double s = fb / fa; + + if (ac_equal) + { + p = 2 * m * s; + q = 1 - s; + } + else + { + q = fa / fc; + r = fb / fc; + p = s * (2 * m * q * (q - r) - (b - a) * (r - 1)); + q = (q - 1) * (r - 1) * (s - 1); + } + + if (p > 0) + { + q = -q; + } + else + { + p = -p; + } + + if (2 * p < GSL_MIN (3 * m * q - fabs (tol * q), fabs (e * q))) + { + e = d; + d = p / q; + } + else + { + /* interpolation failed, fall back to bisection */ + + d = m; + e = m; + } + } + + a = b; + fa = fb; + + if (fabs (d) > tol) + { + b += d; + } + else + { + b += (m > 0 ? +tol : -tol); + } + + SAFE_FUNC_CALL (f, b, &fb); + + state->a = a ; + state->b = b ; + state->c = c ; + state->d = d ; + state->e = e ; + state->fa = fa ; + state->fb = fb ; + state->fc = fc ; + + /* Update the best estimate of the root and bounds on each + iteration */ + + *root = b; + + if ((fb < 0 && fc < 0) || (fb > 0 && fc > 0)) + { + c = a; + } + + if (b < c) + { + *x_lower = b; + *x_upper = c; + } + else + { + *x_lower = c; + *x_upper = b; + } + + return GSL_SUCCESS ; +} + + +static const gsl_root_fsolver_type brent_type = +{"brent", /* name */ + sizeof (brent_state_t), + &brent_init, + &brent_iterate}; + +const gsl_root_fsolver_type * gsl_root_fsolver_brent = &brent_type; diff --git a/gsl-2.5/roots/brent.lo b/gsl-2.5/roots/brent.lo new file mode 100644 index 00000000..a0e956ef --- /dev/null +++ b/gsl-2.5/roots/brent.lo @@ -0,0 +1,12 @@ +# brent.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/brent.o' + +# Name of the non-PIC object +non_pic_object='brent.o' + diff --git a/gsl-2.5/roots/convergence.c b/gsl-2.5/roots/convergence.c new file mode 100644 index 00000000..2b1b4740 --- /dev/null +++ b/gsl-2.5/roots/convergence.c @@ -0,0 +1,87 @@ +/* roots/convergence.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Reid Priedhorsky, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include + +int +gsl_root_test_interval (double x_lower, double x_upper, double epsabs, double epsrel) +{ + const double abs_lower = fabs(x_lower) ; + const double abs_upper = fabs(x_upper) ; + + double min_abs, tolerance; + + if (epsrel < 0.0) + GSL_ERROR ("relative tolerance is negative", GSL_EBADTOL); + + if (epsabs < 0.0) + GSL_ERROR ("absolute tolerance is negative", GSL_EBADTOL); + + if (x_lower > x_upper) + GSL_ERROR ("lower bound larger than upper bound", GSL_EINVAL); + + if ((x_lower > 0.0 && x_upper > 0.0) || (x_lower < 0.0 && x_upper < 0.0)) + { + min_abs = GSL_MIN_DBL(abs_lower, abs_upper) ; + } + else + { + min_abs = 0; + } + + tolerance = epsabs + epsrel * min_abs ; + + if (fabs(x_upper - x_lower) < tolerance) + return GSL_SUCCESS; + + return GSL_CONTINUE ; +} + +int +gsl_root_test_delta (double x1, double x0, double epsabs, double epsrel) +{ + const double tolerance = epsabs + epsrel * fabs(x1) ; + + if (epsrel < 0.0) + GSL_ERROR ("relative tolerance is negative", GSL_EBADTOL); + + if (epsabs < 0.0) + GSL_ERROR ("absolute tolerance is negative", GSL_EBADTOL); + + if (fabs(x1 - x0) < tolerance || x1 == x0) + return GSL_SUCCESS; + + return GSL_CONTINUE ; +} + +int +gsl_root_test_residual (double f, double epsabs) +{ + if (epsabs < 0.0) + GSL_ERROR ("absolute tolerance is negative", GSL_EBADTOL); + + if (fabs(f) < epsabs) + return GSL_SUCCESS; + + return GSL_CONTINUE ; +} + diff --git a/gsl-2.5/roots/convergence.lo b/gsl-2.5/roots/convergence.lo new file mode 100644 index 00000000..a5468a8d --- /dev/null +++ b/gsl-2.5/roots/convergence.lo @@ -0,0 +1,12 @@ +# convergence.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/convergence.o' + +# Name of the non-PIC object +non_pic_object='convergence.o' + diff --git a/gsl-2.5/roots/falsepos.c b/gsl-2.5/roots/falsepos.c new file mode 100644 index 00000000..f6cda5c8 --- /dev/null +++ b/gsl-2.5/roots/falsepos.c @@ -0,0 +1,178 @@ +/* roots/falsepos.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Reid Priedhorsky, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* falsepos.c -- falsepos root finding algorithm + + The false position algorithm uses bracketing by linear interpolation. + + If a linear interpolation step would decrease the size of the + bracket by less than a bisection step would then the algorithm + takes a bisection step instead. + + The last linear interpolation estimate of the root is used. If a + bisection step causes it to fall outside the brackets then it is + replaced by the bisection estimate (x_upper + x_lower)/2. + +*/ + +#include + +#include +#include +#include +#include +#include + +#include +#include +#include + +#include "roots.h" + +typedef struct + { + double f_lower, f_upper; + } +falsepos_state_t; + +static int falsepos_init (void * vstate, gsl_function * f, double * root, double x_lower, double x_upper); +static int falsepos_iterate (void * vstate, gsl_function * f, double * root, double * x_lower, double * x_upper); + +static int +falsepos_init (void * vstate, gsl_function * f, double * root, double x_lower, double x_upper) +{ + falsepos_state_t * state = (falsepos_state_t *) vstate; + + double f_lower, f_upper ; + + *root = 0.5 * (x_lower + x_upper); + + SAFE_FUNC_CALL (f, x_lower, &f_lower); + SAFE_FUNC_CALL (f, x_upper, &f_upper); + + state->f_lower = f_lower; + state->f_upper = f_upper; + + if ((f_lower < 0.0 && f_upper < 0.0) || (f_lower > 0.0 && f_upper > 0.0)) + { + GSL_ERROR ("endpoints do not straddle y=0", GSL_EINVAL); + } + + return GSL_SUCCESS; + +} + +static int +falsepos_iterate (void * vstate, gsl_function * f, double * root, double * x_lower, double * x_upper) +{ + falsepos_state_t * state = (falsepos_state_t *) vstate; + + double x_linear, f_linear; + double x_bisect, f_bisect; + + double x_left = *x_lower ; + double x_right = *x_upper ; + + double f_lower = state->f_lower; + double f_upper = state->f_upper; + + double w ; + + if (f_lower == 0.0) + { + *root = x_left ; + *x_upper = x_left; + return GSL_SUCCESS; + } + + if (f_upper == 0.0) + { + *root = x_right ; + *x_lower = x_right; + return GSL_SUCCESS; + } + + /* Draw a line between f(*lower_bound) and f(*upper_bound) and + note where it crosses the X axis; that's where we will + split the interval. */ + + x_linear = x_right - (f_upper * (x_left - x_right) / (f_lower - f_upper)); + + SAFE_FUNC_CALL (f, x_linear, &f_linear); + + if (f_linear == 0.0) + { + *root = x_linear; + *x_lower = x_linear; + *x_upper = x_linear; + return GSL_SUCCESS; + } + + /* Discard the half of the interval which doesn't contain the root. */ + + if ((f_lower > 0.0 && f_linear < 0.0) || (f_lower < 0.0 && f_linear > 0.0)) + { + *root = x_linear ; + *x_upper = x_linear; + state->f_upper = f_linear; + w = x_linear - x_left ; + } + else + { + *root = x_linear ; + *x_lower = x_linear; + state->f_lower = f_linear; + w = x_right - x_linear; + } + + if (w < 0.5 * (x_right - x_left)) + { + return GSL_SUCCESS ; + } + + x_bisect = 0.5 * (x_left + x_right); + + SAFE_FUNC_CALL (f, x_bisect, &f_bisect); + + if ((f_lower > 0.0 && f_bisect < 0.0) || (f_lower < 0.0 && f_bisect > 0.0)) + { + *x_upper = x_bisect; + state->f_upper = f_bisect; + if (*root > x_bisect) + *root = 0.5 * (x_left + x_bisect) ; + } + else + { + *x_lower = x_bisect; + state->f_lower = f_bisect; + if (*root < x_bisect) + *root = 0.5 * (x_bisect + x_right) ; + } + + return GSL_SUCCESS; +} + + +static const gsl_root_fsolver_type falsepos_type = +{"falsepos", /* name */ + sizeof (falsepos_state_t), + &falsepos_init, + &falsepos_iterate}; + +const gsl_root_fsolver_type * gsl_root_fsolver_falsepos = &falsepos_type; diff --git a/gsl-2.5/roots/falsepos.lo b/gsl-2.5/roots/falsepos.lo new file mode 100644 index 00000000..9a8d8559 --- /dev/null +++ b/gsl-2.5/roots/falsepos.lo @@ -0,0 +1,12 @@ +# falsepos.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/falsepos.o' + +# Name of the non-PIC object +non_pic_object='falsepos.o' + diff --git a/gsl-2.5/roots/fdfsolver.c b/gsl-2.5/roots/fdfsolver.c new file mode 100644 index 00000000..cfd95355 --- /dev/null +++ b/gsl-2.5/roots/fdfsolver.c @@ -0,0 +1,89 @@ +/* roots/fdfsolver.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Reid Priedhorsky, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include + +gsl_root_fdfsolver * +gsl_root_fdfsolver_alloc (const gsl_root_fdfsolver_type * T) +{ + + gsl_root_fdfsolver * s = (gsl_root_fdfsolver *) malloc (sizeof (gsl_root_fdfsolver)); + + if (s == 0) + { + GSL_ERROR_VAL ("failed to allocate space for root solver struct", + GSL_ENOMEM, 0); + }; + + s->state = malloc (T->size); + + if (s->state == 0) + { + free (s); /* exception in constructor, avoid memory leak */ + + GSL_ERROR_VAL ("failed to allocate space for root solver state", + GSL_ENOMEM, 0); + }; + + s->type = T ; + s->fdf = NULL; + + return s; +} + +int +gsl_root_fdfsolver_set (gsl_root_fdfsolver * s, gsl_function_fdf * f, double root) +{ + s->fdf = f; + s->root = root; + + return (s->type->set) (s->state, s->fdf, &(s->root)); +} + +int +gsl_root_fdfsolver_iterate (gsl_root_fdfsolver * s) +{ + return (s->type->iterate) (s->state, s->fdf, &(s->root)); +} + +void +gsl_root_fdfsolver_free (gsl_root_fdfsolver * s) +{ + RETURN_IF_NULL (s); + free (s->state); + free (s); +} + +const char * +gsl_root_fdfsolver_name (const gsl_root_fdfsolver * s) +{ + return s->type->name; +} + +double +gsl_root_fdfsolver_root (const gsl_root_fdfsolver * s) +{ + return s->root; +} + + diff --git a/gsl-2.5/roots/fdfsolver.lo b/gsl-2.5/roots/fdfsolver.lo new file mode 100644 index 00000000..8d98782b --- /dev/null +++ b/gsl-2.5/roots/fdfsolver.lo @@ -0,0 +1,12 @@ +# fdfsolver.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/fdfsolver.o' + +# Name of the non-PIC object +non_pic_object='fdfsolver.o' + diff --git a/gsl-2.5/roots/fsolver.c b/gsl-2.5/roots/fsolver.c new file mode 100644 index 00000000..8f586bb6 --- /dev/null +++ b/gsl-2.5/roots/fsolver.c @@ -0,0 +1,108 @@ +/* roots/fsolver.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Reid Priedhorsky, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include + +gsl_root_fsolver * +gsl_root_fsolver_alloc (const gsl_root_fsolver_type * T) +{ + gsl_root_fsolver * s = (gsl_root_fsolver *) malloc (sizeof (gsl_root_fsolver)); + + if (s == 0) + { + GSL_ERROR_VAL ("failed to allocate space for root solver struct", + GSL_ENOMEM, 0); + }; + + s->state = malloc (T->size); + + if (s->state == 0) + { + free (s); /* exception in constructor, avoid memory leak */ + + GSL_ERROR_VAL ("failed to allocate space for root solver state", + GSL_ENOMEM, 0); + }; + + s->type = T ; + s->function = NULL ; + + return s; +} + +int +gsl_root_fsolver_set (gsl_root_fsolver * s, gsl_function * f, double x_lower, double x_upper) +{ + if (x_lower > x_upper) + { + GSL_ERROR ("invalid interval (lower > upper)", GSL_EINVAL); + } + + s->function = f; + s->root = 0.5 * (x_lower + x_upper); /* initial estimate */ + s->x_lower = x_lower; + s->x_upper = x_upper; + + return (s->type->set) (s->state, s->function, &(s->root), x_lower, x_upper); +} + +int +gsl_root_fsolver_iterate (gsl_root_fsolver * s) +{ + return (s->type->iterate) (s->state, + s->function, &(s->root), + &(s->x_lower), &(s->x_upper)); +} + +void +gsl_root_fsolver_free (gsl_root_fsolver * s) +{ + RETURN_IF_NULL (s); + free (s->state); + free (s); +} + +const char * +gsl_root_fsolver_name (const gsl_root_fsolver * s) +{ + return s->type->name; +} + +double +gsl_root_fsolver_root (const gsl_root_fsolver * s) +{ + return s->root; +} + +double +gsl_root_fsolver_x_lower (const gsl_root_fsolver * s) +{ + return s->x_lower; +} + +double +gsl_root_fsolver_x_upper (const gsl_root_fsolver * s) +{ + return s->x_upper; +} + diff --git a/gsl-2.5/roots/fsolver.lo b/gsl-2.5/roots/fsolver.lo new file mode 100644 index 00000000..01f433d3 --- /dev/null +++ b/gsl-2.5/roots/fsolver.lo @@ -0,0 +1,12 @@ +# fsolver.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/fsolver.o' + +# Name of the non-PIC object +non_pic_object='fsolver.o' + diff --git a/gsl-2.5/roots/gsl_roots.h b/gsl-2.5/roots/gsl_roots.h new file mode 100644 index 00000000..46e45870 --- /dev/null +++ b/gsl-2.5/roots/gsl_roots.h @@ -0,0 +1,127 @@ +/* roots/gsl_roots.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Reid Priedhorsky, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_ROOTS_H__ +#define __GSL_ROOTS_H__ + +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +typedef struct + { + const char *name; + size_t size; + int (*set) (void *state, gsl_function * f, double * root, double x_lower, double x_upper); + int (*iterate) (void *state, gsl_function * f, double * root, double * x_lower, double * x_upper); + } +gsl_root_fsolver_type; + +typedef struct + { + const gsl_root_fsolver_type * type; + gsl_function * function ; + double root ; + double x_lower; + double x_upper; + void *state; + } +gsl_root_fsolver; + +typedef struct + { + const char *name; + size_t size; + int (*set) (void *state, gsl_function_fdf * f, double * root); + int (*iterate) (void *state, gsl_function_fdf * f, double * root); + } +gsl_root_fdfsolver_type; + +typedef struct + { + const gsl_root_fdfsolver_type * type; + gsl_function_fdf * fdf ; + double root ; + void *state; + } +gsl_root_fdfsolver; + +gsl_root_fsolver * +gsl_root_fsolver_alloc (const gsl_root_fsolver_type * T); +void gsl_root_fsolver_free (gsl_root_fsolver * s); + +int gsl_root_fsolver_set (gsl_root_fsolver * s, + gsl_function * f, + double x_lower, double x_upper); + +int gsl_root_fsolver_iterate (gsl_root_fsolver * s); + +const char * gsl_root_fsolver_name (const gsl_root_fsolver * s); +double gsl_root_fsolver_root (const gsl_root_fsolver * s); +double gsl_root_fsolver_x_lower (const gsl_root_fsolver * s); +double gsl_root_fsolver_x_upper (const gsl_root_fsolver * s); + + +gsl_root_fdfsolver * +gsl_root_fdfsolver_alloc (const gsl_root_fdfsolver_type * T); + +int +gsl_root_fdfsolver_set (gsl_root_fdfsolver * s, + gsl_function_fdf * fdf, double root); + +int +gsl_root_fdfsolver_iterate (gsl_root_fdfsolver * s); + +void +gsl_root_fdfsolver_free (gsl_root_fdfsolver * s); + +const char * gsl_root_fdfsolver_name (const gsl_root_fdfsolver * s); +double gsl_root_fdfsolver_root (const gsl_root_fdfsolver * s); + +int +gsl_root_test_interval (double x_lower, double x_upper, double epsabs, double epsrel); + +int +gsl_root_test_residual (double f, double epsabs); + +int +gsl_root_test_delta (double x1, double x0, double epsabs, double epsrel); + +GSL_VAR const gsl_root_fsolver_type * gsl_root_fsolver_bisection; +GSL_VAR const gsl_root_fsolver_type * gsl_root_fsolver_brent; +GSL_VAR const gsl_root_fsolver_type * gsl_root_fsolver_falsepos; +GSL_VAR const gsl_root_fdfsolver_type * gsl_root_fdfsolver_newton; +GSL_VAR const gsl_root_fdfsolver_type * gsl_root_fdfsolver_secant; +GSL_VAR const gsl_root_fdfsolver_type * gsl_root_fdfsolver_steffenson; + +__END_DECLS + +#endif /* __GSL_ROOTS_H__ */ diff --git a/gsl-2.5/roots/libgslroots.la b/gsl-2.5/roots/libgslroots.la new file mode 100644 index 00000000..da938960 --- /dev/null +++ b/gsl-2.5/roots/libgslroots.la @@ -0,0 +1,41 @@ +# libgslroots.la - a libtool library file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='' + +# Names of this library. +library_names='' + +# The name of the static archive. +old_library='libgslroots.a' + +# Linker flags that can not go in dependency_libs. +inherited_linker_flags='' + +# Libraries that this one depends upon. +dependency_libs=' -lm' + +# Names of additional weak libraries provided by this library +weak_library_names='' + +# Version information for libgslroots. +current= +age= +revision= + +# Is this an already installed library? +installed=no + +# Should we warn about portability when linking against -modules? +shouldnotlink=no + +# Files to dlopen/dlpreopen +dlopen='' +dlpreopen='' + +# Directory that this library needs to be installed in: +libdir='' diff --git a/gsl-2.5/roots/newton.c b/gsl-2.5/roots/newton.c new file mode 100644 index 00000000..add5e01c --- /dev/null +++ b/gsl-2.5/roots/newton.c @@ -0,0 +1,106 @@ +/* roots/newton.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Reid Priedhorsky, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* newton.c -- newton root finding algorithm + + This is the classical Newton-Raphson iteration. + + x[i+1] = x[i] - f(x[i])/f'(x[i]) + +*/ + +#include + +#include +#include +#include +#include +#include + +#include +#include +#include + +#include "roots.h" + +typedef struct + { + double f, df; + } +newton_state_t; + +static int newton_init (void * vstate, gsl_function_fdf * fdf, double * root); +static int newton_iterate (void * vstate, gsl_function_fdf * fdf, double * root); + +static int +newton_init (void * vstate, gsl_function_fdf * fdf, double * root) +{ + newton_state_t * state = (newton_state_t *) vstate; + + const double x = *root ; + + state->f = GSL_FN_FDF_EVAL_F (fdf, x); + state->df = GSL_FN_FDF_EVAL_DF (fdf, x) ; + + return GSL_SUCCESS; + +} + +static int +newton_iterate (void * vstate, gsl_function_fdf * fdf, double * root) +{ + newton_state_t * state = (newton_state_t *) vstate; + + double root_new, f_new, df_new; + + if (state->df == 0.0) + { + GSL_ERROR("derivative is zero", GSL_EZERODIV); + } + + root_new = *root - (state->f / state->df); + + *root = root_new ; + + GSL_FN_FDF_EVAL_F_DF(fdf, root_new, &f_new, &df_new); + + state->f = f_new ; + state->df = df_new ; + + if (!gsl_finite(f_new)) + { + GSL_ERROR ("function value is not finite", GSL_EBADFUNC); + } + + if (!gsl_finite (df_new)) + { + GSL_ERROR ("derivative value is not finite", GSL_EBADFUNC); + } + + return GSL_SUCCESS; +} + + +static const gsl_root_fdfsolver_type newton_type = +{"newton", /* name */ + sizeof (newton_state_t), + &newton_init, + &newton_iterate}; + +const gsl_root_fdfsolver_type * gsl_root_fdfsolver_newton = &newton_type; diff --git a/gsl-2.5/roots/newton.lo b/gsl-2.5/roots/newton.lo new file mode 100644 index 00000000..37f29ae8 --- /dev/null +++ b/gsl-2.5/roots/newton.lo @@ -0,0 +1,12 @@ +# newton.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/newton.o' + +# Name of the non-PIC object +non_pic_object='newton.o' + diff --git a/gsl-2.5/roots/roots.h b/gsl-2.5/roots/roots.h new file mode 100644 index 00000000..b869655e --- /dev/null +++ b/gsl-2.5/roots/roots.h @@ -0,0 +1,37 @@ +/* roots/roots.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Reid Priedhorsky, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* roots.h -- declarations for internal root finding and RF support stuff. */ + +#ifndef __ROOTS_H__ +#define __ROOTS_H__ + +/* Call the pointed-to function with argument x, put its result in y, and + return an error if the function value is Inf/Nan. */ + +#define SAFE_FUNC_CALL(f, x, yp) \ +do { \ + *yp = GSL_FN_EVAL(f,x); \ + if (!gsl_finite(*yp)) \ + GSL_ERROR("function value is not finite", GSL_EBADFUNC); \ +} while (0) + +#endif /* __ROOTS_H__ */ + + diff --git a/gsl-2.5/roots/secant.c b/gsl-2.5/roots/secant.c new file mode 100644 index 00000000..ce1118dd --- /dev/null +++ b/gsl-2.5/roots/secant.c @@ -0,0 +1,122 @@ +/* roots/secant.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Reid Priedhorsky, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* secant.c -- secant root finding algorithm + + The secant algorithm is a variant of the Newton algorithm with the + derivative term replaced by a numerical estimate from the last two + function evaluations. + + x[i+1] = x[i] - f(x[i]) / f'_est + + where f'_est = (f(x[i]) - f(x[i-1])) / (x[i] - x[i-1]) + + The exact derivative is used for the initial value of f'_est. + +*/ + +#include + +#include +#include +#include +#include +#include + +#include +#include +#include + +#include "roots.h" + +typedef struct + { + double f; + double df; + } +secant_state_t; + +static int secant_init (void * vstate, gsl_function_fdf * fdf, double * root); +static int secant_iterate (void * vstate, gsl_function_fdf * fdf, double * root); + +static int +secant_init (void * vstate, gsl_function_fdf * fdf, double * root) +{ + secant_state_t * state = (secant_state_t *) vstate; + + const double x = *root; + + GSL_FN_FDF_EVAL_F_DF (fdf, x, &(state->f), &(state->df)); + + return GSL_SUCCESS; + +} + +static int +secant_iterate (void * vstate, gsl_function_fdf * fdf, double * root) +{ + secant_state_t * state = (secant_state_t *) vstate; + + const double x = *root ; + const double f = state->f; + const double df = state->df; + + double x_new, f_new, df_new; + + if(f == 0.0) + { + return GSL_SUCCESS; + } + + if(df == 0.0) + { + GSL_ERROR("derivative is zero", GSL_EZERODIV); + } + + x_new = x - (f / df); + + f_new = GSL_FN_FDF_EVAL_F(fdf, x_new) ; + df_new = df * ((f - f_new) / f); + + *root = x_new ; + + state->f = f_new ; + state->df = df_new ; + + if (!gsl_finite (f_new)) + { + GSL_ERROR ("function value is not finite", GSL_EBADFUNC); + } + + if (!gsl_finite (df_new)) + { + GSL_ERROR ("derivative value is not finite", GSL_EBADFUNC); + } + + return GSL_SUCCESS; +} + + +static const gsl_root_fdfsolver_type secant_type = +{"secant", /* name */ + sizeof (secant_state_t), + &secant_init, + &secant_iterate}; + +const gsl_root_fdfsolver_type * gsl_root_fdfsolver_secant = &secant_type; diff --git a/gsl-2.5/roots/secant.lo b/gsl-2.5/roots/secant.lo new file mode 100644 index 00000000..941cafd1 --- /dev/null +++ b/gsl-2.5/roots/secant.lo @@ -0,0 +1,12 @@ +# secant.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/secant.o' + +# Name of the non-PIC object +non_pic_object='secant.o' + diff --git a/gsl-2.5/roots/steffenson.c b/gsl-2.5/roots/steffenson.c new file mode 100644 index 00000000..cef77cff --- /dev/null +++ b/gsl-2.5/roots/steffenson.c @@ -0,0 +1,144 @@ +/* roots/steffenson.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Reid Priedhorsky, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* steffenson.c -- steffenson root finding algorithm + + This is Newton's method with an Aitken "delta-squared" + acceleration of the iterates. This can improve the convergence on + multiple roots where the ordinary Newton algorithm is slow. + + x[i+1] = x[i] - f(x[i]) / f'(x[i]) + + x_accelerated[i] = x[i] - (x[i+1] - x[i])**2 / (x[i+2] - 2*x[i+1] + x[i]) + + We can only use the accelerated estimate after three iterations, + and use the unaccelerated value until then. + + */ + +#include + +#include +#include +#include +#include +#include + +#include +#include +#include + +#include "roots.h" + +typedef struct + { + double f, df; + double x; + double x_1; + double x_2; + int count; + } +steffenson_state_t; + +static int steffenson_init (void * vstate, gsl_function_fdf * fdf, double * root); +static int steffenson_iterate (void * vstate, gsl_function_fdf * fdf, double * root); + +static int +steffenson_init (void * vstate, gsl_function_fdf * fdf, double * root) +{ + steffenson_state_t * state = (steffenson_state_t *) vstate; + + const double x = *root ; + + state->f = GSL_FN_FDF_EVAL_F (fdf, x); + state->df = GSL_FN_FDF_EVAL_DF (fdf, x) ; + + state->x = x; + state->x_1 = 0.0; + state->x_2 = 0.0; + + state->count = 1; + + return GSL_SUCCESS; + +} + +static int +steffenson_iterate (void * vstate, gsl_function_fdf * fdf, double * root) +{ + steffenson_state_t * state = (steffenson_state_t *) vstate; + + double x_new, f_new, df_new; + + double x_1 = state->x_1 ; + double x = state->x ; + + if (state->df == 0.0) + { + GSL_ERROR("derivative is zero", GSL_EZERODIV); + } + + x_new = x - (state->f / state->df); + + GSL_FN_FDF_EVAL_F_DF(fdf, x_new, &f_new, &df_new); + + state->x_2 = x_1 ; + state->x_1 = x ; + state->x = x_new; + + state->f = f_new ; + state->df = df_new ; + + if (!gsl_finite (f_new)) + { + GSL_ERROR ("function value is not finite", GSL_EBADFUNC); + } + + if (state->count < 3) + { + *root = x_new ; + state->count++ ; + } + else + { + double u = (x - x_1) ; + double v = (x_new - 2 * x + x_1); + + if (v == 0) + *root = x_new; /* avoid division by zero */ + else + *root = x_1 - u * u / v ; /* accelerated value */ + } + + if (!gsl_finite (df_new)) + { + GSL_ERROR ("derivative value is not finite", GSL_EBADFUNC); + } + + return GSL_SUCCESS; +} + + +static const gsl_root_fdfsolver_type steffenson_type = +{"steffenson", /* name */ + sizeof (steffenson_state_t), + &steffenson_init, + &steffenson_iterate}; + +const gsl_root_fdfsolver_type * gsl_root_fdfsolver_steffenson = &steffenson_type; diff --git a/gsl-2.5/roots/steffenson.lo b/gsl-2.5/roots/steffenson.lo new file mode 100644 index 00000000..10299537 --- /dev/null +++ b/gsl-2.5/roots/steffenson.lo @@ -0,0 +1,12 @@ +# steffenson.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/steffenson.o' + +# Name of the non-PIC object +non_pic_object='steffenson.o' + diff --git a/gsl-2.5/roots/test b/gsl-2.5/roots/test new file mode 100755 index 00000000..8de11cea Binary files /dev/null and b/gsl-2.5/roots/test differ diff --git a/gsl-2.5/roots/test-suite.log b/gsl-2.5/roots/test-suite.log new file mode 100644 index 00000000..957a4338 --- /dev/null +++ b/gsl-2.5/roots/test-suite.log @@ -0,0 +1,14 @@ +=================================== + gsl 2.5: roots/test-suite.log +=================================== + +# TOTAL: 1 +# PASS: 1 +# SKIP: 0 +# XFAIL: 0 +# FAIL: 0 +# XPASS: 0 +# ERROR: 0 + +.. contents:: :depth: 2 + diff --git a/gsl-2.5/roots/test.c b/gsl-2.5/roots/test.c new file mode 100644 index 00000000..e27294f7 --- /dev/null +++ b/gsl-2.5/roots/test.c @@ -0,0 +1,317 @@ +/* roots/test.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Reid Priedhorsky, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include +#include + +#include "roots.h" +#include "test.h" + +/* stopping parameters */ +const double EPSREL = (10 * GSL_DBL_EPSILON); +const double EPSABS = (10 * GSL_DBL_EPSILON); +const unsigned int MAX_ITERATIONS = 150; + +void my_error_handler (const char *reason, const char *file, + int line, int err); + +#define WITHIN_TOL(a, b, epsrel, epsabs) \ + ((fabs((a) - (b)) < (epsrel) * GSL_MIN(fabs(a), fabs(b)) + (epsabs))) + +int +main (void) +{ + gsl_function F_sin, F_cos, F_func1, F_func2, F_func3, F_func4, + F_func5, F_func6; + + gsl_function_fdf FDF_sin, FDF_cos, FDF_func1, FDF_func2, FDF_func3, FDF_func4, + FDF_func5, FDF_func6, FDF_func7; + + const gsl_root_fsolver_type * fsolver[4] ; + const gsl_root_fdfsolver_type * fdfsolver[4] ; + + const gsl_root_fsolver_type ** T; + const gsl_root_fdfsolver_type ** S; + + gsl_ieee_env_setup(); + + fsolver[0] = gsl_root_fsolver_bisection; + fsolver[1] = gsl_root_fsolver_brent; + fsolver[2] = gsl_root_fsolver_falsepos; + fsolver[3] = 0; + + fdfsolver[0] = gsl_root_fdfsolver_newton; + fdfsolver[1] = gsl_root_fdfsolver_secant; + fdfsolver[2] = gsl_root_fdfsolver_steffenson; + fdfsolver[3] = 0; + + F_sin = create_function (sin_f) ; + F_cos = create_function (cos_f) ; + F_func1 = create_function (func1) ; + F_func2 = create_function (func2) ; + F_func3 = create_function (func3) ; + F_func4 = create_function (func4) ; + F_func5 = create_function (func5) ; + F_func6 = create_function (func6) ; + + FDF_sin = create_fdf (sin_f, sin_df, sin_fdf) ; + FDF_cos = create_fdf (cos_f, cos_df, cos_fdf) ; + FDF_func1 = create_fdf (func1, func1_df, func1_fdf) ; + FDF_func2 = create_fdf (func2, func2_df, func2_fdf) ; + FDF_func3 = create_fdf (func3, func3_df, func3_fdf) ; + FDF_func4 = create_fdf (func4, func4_df, func4_fdf) ; + FDF_func5 = create_fdf (func5, func5_df, func5_fdf) ; + FDF_func6 = create_fdf (func6, func6_df, func6_fdf) ; + FDF_func7 = create_fdf(func7, func7_df, func7_fdf) ; + + gsl_set_error_handler (&my_error_handler); + + for (T = fsolver ; *T != 0 ; T++) + { + test_f (*T, "sin(x) [3, 4]", &F_sin, 3.0, 4.0, M_PI); + test_f (*T, "sin(x) [-4, -3]", &F_sin, -4.0, -3.0, -M_PI); + test_f (*T, "sin(x) [-1/3, 1]", &F_sin, -1.0 / 3.0, 1.0, 0.0); + test_f (*T, "cos(x) [0, 3]", &F_cos, 0.0, 3.0, M_PI / 2.0); + test_f (*T, "cos(x) [-3, 0]", &F_cos, -3.0, 0.0, -M_PI / 2.0); + test_f (*T, "x^20 - 1 [0.1, 2]", &F_func1, 0.1, 2.0, 1.0); + test_f (*T, "sqrt(|x|)*sgn(x)", &F_func2, -1.0 / 3.0, 1.0, 0.0); + test_f (*T, "x^2 - 1e-8 [0, 1]", &F_func3, 0.0, 1.0, sqrt (1e-8)); + test_f (*T, "x exp(-x) [-1/3, 2]", &F_func4, -1.0 / 3.0, 2.0, 0.0); + test_f (*T, "(x - 1)^7 [0.9995, 1.0002]", &F_func6, 0.9995, 1.0002, 1.0); + + test_f_e (*T, "invalid range check [4, 0]", &F_sin, 4.0, 0.0, M_PI); + test_f_e (*T, "invalid range check [1, 1]", &F_sin, 1.0, 1.0, M_PI); + test_f_e (*T, "invalid range check [0.1, 0.2]", &F_sin, 0.1, 0.2, M_PI); + } + + for (S = fdfsolver ; *S != 0 ; S++) + { + test_fdf (*S,"sin(x) {3.4}", &FDF_sin, 3.4, M_PI); + test_fdf (*S,"sin(x) {-3.3}", &FDF_sin, -3.3, -M_PI); + test_fdf (*S,"sin(x) {0.5}", &FDF_sin, 0.5, 0.0); + test_fdf (*S,"cos(x) {0.6}", &FDF_cos, 0.6, M_PI / 2.0); + test_fdf (*S,"cos(x) {-2.5}", &FDF_cos, -2.5, -M_PI / 2.0); + test_fdf (*S,"x^{20} - 1 {0.9}", &FDF_func1, 0.9, 1.0); + test_fdf (*S,"x^{20} - 1 {1.1}", &FDF_func1, 1.1, 1.0); + test_fdf (*S,"sqrt(|x|)*sgn(x) {1.001}", &FDF_func2, 0.001, 0.0); + test_fdf (*S,"x^2 - 1e-8 {1}", &FDF_func3, 1.0, sqrt (1e-8)); + test_fdf (*S,"x exp(-x) {-2}", &FDF_func4, -2.0, 0.0); + test_fdf_e (*S,"max iterations x -> +Inf, x exp(-x) {2}", &FDF_func4, 2.0, 0.0); + test_fdf_e (*S,"max iterations x -> -Inf, 1/(1 + exp(-x)) {0}", &FDF_func5, 0.0, 0.0); + test_fdf(*S, "-pi * x + e {1.5}", &FDF_func7, 1.5, M_E / M_PI); + } + + test_fdf (gsl_root_fdfsolver_steffenson, + "(x - 1)^7 {0.9}", &FDF_func6, 0.9, 1.0); + + /* now summarize the results */ + + exit (gsl_test_summary ()); +} + + +/* Using gsl_root_bisection, find the root of the function pointed to by f, + using the interval [lower_bound, upper_bound]. Check if f succeeded and + that it was accurate enough. */ + +void +test_f (const gsl_root_fsolver_type * T, const char * description, gsl_function *f, + double lower_bound, double upper_bound, double correct_root) +{ + int status; + size_t iterations = 0; + double r, a, b; + double x_lower, x_upper; + gsl_root_fsolver * s; + + x_lower = lower_bound; + x_upper = upper_bound; + + s = gsl_root_fsolver_alloc(T); + gsl_root_fsolver_set(s, f, x_lower, x_upper) ; + + do + { + iterations++ ; + + gsl_root_fsolver_iterate (s); + + r = gsl_root_fsolver_root(s); + + a = gsl_root_fsolver_x_lower(s); + b = gsl_root_fsolver_x_upper(s); + + if (a > b) + gsl_test (GSL_FAILURE, "interval is invalid (%g,%g)", a, b); + + if (r < a || r > b) + gsl_test (GSL_FAILURE, "r lies outside interval %g (%g,%g)", r, a, b); + + status = gsl_root_test_interval (a,b, EPSABS, EPSREL); + } + while (status == GSL_CONTINUE && iterations < MAX_ITERATIONS); + + + gsl_test (status, "%s, %s (%g obs vs %g expected) ", + gsl_root_fsolver_name(s), description, + gsl_root_fsolver_root(s), correct_root); + + if (iterations == MAX_ITERATIONS) + { + gsl_test (GSL_FAILURE, "exceeded maximum number of iterations"); + } + + /* check the validity of the returned result */ + + if (!WITHIN_TOL (r, correct_root, EPSREL, EPSABS)) + { + gsl_test (GSL_FAILURE, "incorrect precision (%g obs vs %g expected)", + r, correct_root); + + } + + gsl_root_fsolver_free(s); +} + +void +test_f_e (const gsl_root_fsolver_type * T, + const char * description, gsl_function *f, + double lower_bound, double upper_bound, double correct_root) +{ + int status; + size_t iterations = 0; + double x_lower, x_upper; + gsl_root_fsolver * s; + + x_lower = lower_bound; + x_upper = upper_bound; + + s = gsl_root_fsolver_alloc(T); + status = gsl_root_fsolver_set(s, f, x_lower, x_upper) ; + + gsl_test (status != GSL_EINVAL, "%s (set), %s", T->name, description); + + if (status == GSL_EINVAL) + { + gsl_root_fsolver_free(s); + return ; + } + + do + { + iterations++ ; + gsl_root_fsolver_iterate (s); + x_lower = gsl_root_fsolver_x_lower(s); + x_upper = gsl_root_fsolver_x_lower(s); + status = gsl_root_test_interval (x_lower, x_upper, + EPSABS, EPSREL); + } + while (status == GSL_CONTINUE && iterations < MAX_ITERATIONS); + + gsl_test (!status, "%s, %s", gsl_root_fsolver_name(s), description, + gsl_root_fsolver_root(s) - correct_root); + + gsl_root_fsolver_free(s); +} + +void +test_fdf (const gsl_root_fdfsolver_type * T, const char * description, + gsl_function_fdf *fdf, double root, double correct_root) +{ + int status; + size_t iterations = 0; + double prev = 0 ; + + gsl_root_fdfsolver * s = gsl_root_fdfsolver_alloc(T); + gsl_root_fdfsolver_set (s, fdf, root) ; + + do + { + iterations++ ; + prev = gsl_root_fdfsolver_root(s); + gsl_root_fdfsolver_iterate (s); + status = gsl_root_test_delta(gsl_root_fdfsolver_root(s), prev, + EPSABS, EPSREL); + } + while (status == GSL_CONTINUE && iterations < MAX_ITERATIONS); + + gsl_test (status, "%s, %s (%g obs vs %g expected) ", + gsl_root_fdfsolver_name(s), description, + gsl_root_fdfsolver_root(s), correct_root); + + if (iterations == MAX_ITERATIONS) + { + gsl_test (GSL_FAILURE, "exceeded maximum number of iterations"); + } + + /* check the validity of the returned result */ + + if (!WITHIN_TOL (gsl_root_fdfsolver_root(s), correct_root, + EPSREL, EPSABS)) + { + gsl_test (GSL_FAILURE, "incorrect precision (%g obs vs %g expected)", + gsl_root_fdfsolver_root(s), correct_root); + + } + gsl_root_fdfsolver_free(s); +} + +void +test_fdf_e (const gsl_root_fdfsolver_type * T, + const char * description, gsl_function_fdf *fdf, + double root, double correct_root) +{ + int status; + size_t iterations = 0; + double prev = 0 ; + + gsl_root_fdfsolver * s = gsl_root_fdfsolver_alloc(T); + status = gsl_root_fdfsolver_set (s, fdf, root) ; + + gsl_test (status, "%s (set), %s", T->name, description); + + do + { + iterations++ ; + prev = gsl_root_fdfsolver_root(s); + gsl_root_fdfsolver_iterate (s); + status = gsl_root_test_delta(gsl_root_fdfsolver_root(s), prev, + EPSABS, EPSREL); + } + while (status == GSL_CONTINUE && iterations < MAX_ITERATIONS); + + gsl_test (!status, "%s, %s", gsl_root_fdfsolver_name(s), + description, gsl_root_fdfsolver_root(s) - correct_root); + gsl_root_fdfsolver_free(s); +} + +void +my_error_handler (const char *reason, const char *file, int line, int err) +{ + if (0) + printf ("(caught [%s:%d: %s (%d)])\n", file, line, reason, err); +} + + + diff --git a/gsl-2.5/roots/test.h b/gsl-2.5/roots/test.h new file mode 100644 index 00000000..83bc5d6c --- /dev/null +++ b/gsl-2.5/roots/test.h @@ -0,0 +1,138 @@ +/* roots/test.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Reid Priedhorsky, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +gsl_function create_function (double (*f)(double, void *)) ; +gsl_function_fdf create_fdf (double (*f)(double, void *), + double (*df)(double, void *), + void (*fdf)(double, void *, double *, double *)); + +void + test_macros (void); + +void + test_roots (void); + +void + test_poly (void); + +void +test_f (const gsl_root_fsolver_type * T, + const char * description, gsl_function *f, + double lower_bound, double upper_bound, double correct_root); + +void +test_f_e (const gsl_root_fsolver_type * T, const char * description, + gsl_function *f, + double lower_bound, double upper_bound, double correct_root); + +void +test_fdf (const gsl_root_fdfsolver_type * T, const char * description, + gsl_function_fdf *fdf, double root, double correct_root); + +void +test_fdf_e (const gsl_root_fdfsolver_type * T, const char * description, + gsl_function_fdf *fdf, double root, double correct_root); + + +void + usage (void); + +void + error_handler (const char *reason, const char *file, int line); + +double + func1 (double x, void * p); + +double + func1_df (double x, void * p); + +void + func1_fdf (double x, void * p, double *y, double *yprime); + +double + func2 (double x, void * p); + +double + func2_df (double x, void * p); + +void + func2_fdf (double x, void * p, double *y, double *yprime); + +double + func3 (double x, void * p); + +double + func3_df (double x, void * p); + +void + func3_fdf (double x, void * p, double *y, double *yprime); + +double + func4 (double x, void * p); + +double + func4_df (double x, void * p); + +void + func4_fdf (double x, void * p, double *y, double *yprime); + +double + func5 (double x, void * p); + +double + func5_df (double x, void * p); + +void + func5_fdf (double x, void * p, double *y, double *yprime); + +double + func6 (double x, void * p); + +double + func6_df (double x, void * p); + +void + func6_fdf (double x, void * p, double *y, double *yprime); + +double + sin_f (double x, void * p); + +double + sin_df (double x, void * p); + +void + sin_fdf (double x, void * p, double *y, double *yprime); + +double + cos_f (double x, void * p); + +double + cos_df (double x, void * p); + +void + cos_fdf (double x, void * p, double *y, double *yprime); + +double +func7(double x, void * p); + +double +func7_df(double x, void * p); + +void +func7_fdf(double x, void * p, double *y, double *yprime); diff --git a/gsl-2.5/roots/test.log b/gsl-2.5/roots/test.log new file mode 100644 index 00000000..725978c1 --- /dev/null +++ b/gsl-2.5/roots/test.log @@ -0,0 +1 @@ +Completed [85/85] diff --git a/gsl-2.5/roots/test.trs b/gsl-2.5/roots/test.trs new file mode 100644 index 00000000..3f0f396c --- /dev/null +++ b/gsl-2.5/roots/test.trs @@ -0,0 +1,4 @@ +:test-result: PASS +:global-test-result: PASS +:recheck: no +:copy-in-global-log: no diff --git a/gsl-2.5/roots/test_funcs.c b/gsl-2.5/roots/test_funcs.c new file mode 100644 index 00000000..6a602e74 --- /dev/null +++ b/gsl-2.5/roots/test_funcs.c @@ -0,0 +1,248 @@ +/* roots/test_funcs.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Reid Priedhorsky, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include + +#include "test.h" + +gsl_function create_function (double (*f)(double, void *)) +{ + gsl_function F ; + F.function = f; + F.params = 0; + return F ; +} + +gsl_function_fdf create_fdf (double (*f)(double, void *), + double (*df)(double, void *), + void (*fdf)(double, void *, double *, double *)) +{ + gsl_function_fdf FDF ; + FDF.f = f ; + FDF.df = df ; + FDF.fdf = fdf ; + FDF.params = 0 ; + return FDF ; +} + +/* f(x) = x^{20} - 1 */ +/* f'(x) = 20x^{19} */ +/* zero at x = 1 or -1 */ + +double +func1 (double x, void *p) +{ + return pow (x, 20.0) - 1; +} + +double +func1_df (double x, void * p) +{ + return 20.0 * pow (x, 19.0); +} + +void +func1_fdf (double x, void * p, double *y, double *yprime) +{ + *y = func1 (x, p); + *yprime = 20.0 * pow (x, 19.0); +} + +/* f(x) = sqrt(abs(x))*sgn(x) */ +/* f'(x) = 1 / sqrt(abs(x) */ +/* zero at x = 0 */ +double +func2 (double x, void * p) +{ + double delta; + + if (x > 0) + delta = 1.0; + else if (x < 0) + delta = -1.0; + else + delta = 0.0; + + return sqrt (fabs (x)) * delta; +} + +double +func2_df (double x, void * p) +{ + return 1 / sqrt (fabs (x)); +} + +void +func2_fdf (double x, void * p, double *y, double *yprime) +{ + *y = func2 (x, p); + *yprime = 1 / sqrt (fabs (x)); +} + + +/* f(x) = x^2 - 1e-8 */ +/* f'(x) = 2x */ +/* zero at x = sqrt(1e-8) or -sqrt(1e-8) */ +double +func3 (double x, void * p) +{ + return pow (x, 2.0) - 1e-8; +} + +double +func3_df (double x, void * p) +{ + return 2 * x; +} + +void +func3_fdf (double x, void * p, double *y, double *yprime) +{ + *y = func3 (x, p); + *yprime = 2 * x; +} + +/* f(x) = x exp(-x) */ +/* f'(x) = exp(-x) - x exp(-x) */ +/* zero at x = 0 */ +double +func4 (double x, void * p) +{ + return x * exp (-x); +} + +double +func4_df (double x, void * p) +{ + return exp (-x) - x * exp (-x); +} + +void +func4_fdf (double x, void * p, double *y, double *yprime) +{ + *y = func4 (x, p); + *yprime = exp (-x) - x * exp (-x); +} + +/* f(x) = 1/(1+exp(x)) */ +/* f'(x) = -exp(x) / (1 + exp(x))^2 */ +/* no roots! */ +double +func5 (double x, void * p) +{ + return 1 / (1 + exp (x)); +} + +double +func5_df (double x, void * p) +{ + return -exp (x) / pow (1 + exp (x), 2.0); +} + +void +func5_fdf (double x, void * p, double *y, double *yprime) +{ + *y = func5 (x, p); + *yprime = -exp (x) / pow (1 + exp (x), 2.0); +} + +/* f(x) = (x - 1)^7 */ +/* f'(x) = 7 * (x - 1)^6 */ +/* zero at x = 1 */ +double +func6 (double x, void * p) +{ + return pow (x - 1, 7.0); +} + +double +func6_df (double x, void * p) +{ + return 7.0 * pow (x - 1, 6.0); +} + +void +func6_fdf (double x, void * p, double *y, double *yprime) +{ + *y = func6 (x, p); + *yprime = 7.0 * pow (x - 1, 6.0); +} + +/* sin(x) packaged up nicely. */ +double +sin_f (double x, void * p) +{ + return sin (x); +} + +double +sin_df (double x, void * p) +{ + return cos (x); +} + +void +sin_fdf (double x, void * p, double *y, double *yprime) +{ + *y = sin (x); + *yprime = cos (x); +} + +/* cos(x) packaged up nicely. */ +double +cos_f (double x, void * p) +{ + return cos (x); +} + +double +cos_df (double x, void * p) +{ + return -sin (x); +} + +void +cos_fdf (double x, void * p, double *y, double *yprime) +{ + *y = cos (x); + *yprime = -sin (x); +} + +/* linear function to test that solvers exit correctly + when entered with an exact root */ + +double func7(double x, void * p) +{ + return -M_PI * x + M_E; +} + +double func7_df(double x, void * p) +{ + return -M_PI; +} + +void func7_fdf(double x, void * p, double *f, double *df) +{ + *f = func7(x, p); + *df = func7_df(x, p); +} diff --git a/gsl-2.5/rstat/.deps/rquantile.Plo b/gsl-2.5/rstat/.deps/rquantile.Plo new file mode 100644 index 00000000..83a01f8b --- /dev/null +++ b/gsl-2.5/rstat/.deps/rquantile.Plo @@ -0,0 +1,236 @@ +rquantile.lo: rquantile.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_math.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_sort.h \ + ../gsl/gsl_sort_long_double.h ../gsl/gsl_errno.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_permutation.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_sort_double.h ../gsl/gsl_sort_float.h ../gsl/gsl_sort_ulong.h \ + ../gsl/gsl_sort_long.h ../gsl/gsl_sort_uint.h ../gsl/gsl_sort_int.h \ + ../gsl/gsl_sort_ushort.h ../gsl/gsl_sort_short.h ../gsl/gsl_sort_uchar.h \ + ../gsl/gsl_sort_char.h ../gsl/gsl_statistics.h \ + ../gsl/gsl_statistics_long_double.h ../gsl/gsl_statistics_double.h \ + ../gsl/gsl_statistics_float.h ../gsl/gsl_statistics_ulong.h \ + ../gsl/gsl_statistics_long.h ../gsl/gsl_statistics_uint.h \ + ../gsl/gsl_statistics_int.h ../gsl/gsl_statistics_ushort.h \ + ../gsl/gsl_statistics_short.h ../gsl/gsl_statistics_uchar.h \ + ../gsl/gsl_statistics_char.h ../gsl/gsl_rstat.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_sort.h: + +../gsl/gsl_sort_long_double.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_permutation.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_sort_double.h: + +../gsl/gsl_sort_float.h: + +../gsl/gsl_sort_ulong.h: + +../gsl/gsl_sort_long.h: + +../gsl/gsl_sort_uint.h: + +../gsl/gsl_sort_int.h: + +../gsl/gsl_sort_ushort.h: + +../gsl/gsl_sort_short.h: + +../gsl/gsl_sort_uchar.h: + +../gsl/gsl_sort_char.h: + +../gsl/gsl_statistics.h: + +../gsl/gsl_statistics_long_double.h: + +../gsl/gsl_statistics_double.h: + +../gsl/gsl_statistics_float.h: + +../gsl/gsl_statistics_ulong.h: + +../gsl/gsl_statistics_long.h: + +../gsl/gsl_statistics_uint.h: + +../gsl/gsl_statistics_int.h: + +../gsl/gsl_statistics_ushort.h: + +../gsl/gsl_statistics_short.h: + +../gsl/gsl_statistics_uchar.h: + +../gsl/gsl_statistics_char.h: + +../gsl/gsl_rstat.h: diff --git a/gsl-2.5/rstat/.deps/rstat.Plo b/gsl-2.5/rstat/.deps/rstat.Plo new file mode 100644 index 00000000..efbd504a --- /dev/null +++ b/gsl-2.5/rstat/.deps/rstat.Plo @@ -0,0 +1,174 @@ +rstat.lo: rstat.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_math.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_rstat.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_rstat.h: diff --git a/gsl-2.5/rstat/.deps/test.Po b/gsl-2.5/rstat/.deps/test.Po new file mode 100644 index 00000000..b31528f7 --- /dev/null +++ b/gsl-2.5/rstat/.deps/test.Po @@ -0,0 +1,370 @@ +test.o: test.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + /usr/include/string.h /usr/include/xlocale.h /usr/include/bits/string.h \ + /usr/include/bits/string2.h ../gsl/gsl_math.h ../gsl/gsl_sys.h \ + ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_rstat.h \ + ../gsl/gsl_sort.h ../gsl/gsl_sort_long_double.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_permutation.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_sort_double.h ../gsl/gsl_sort_float.h ../gsl/gsl_sort_ulong.h \ + ../gsl/gsl_sort_long.h ../gsl/gsl_sort_uint.h ../gsl/gsl_sort_int.h \ + ../gsl/gsl_sort_ushort.h ../gsl/gsl_sort_short.h ../gsl/gsl_sort_uchar.h \ + ../gsl/gsl_sort_char.h ../gsl/gsl_statistics.h \ + ../gsl/gsl_statistics_long_double.h ../gsl/gsl_statistics_double.h \ + ../gsl/gsl_statistics_float.h ../gsl/gsl_statistics_ulong.h \ + ../gsl/gsl_statistics_long.h ../gsl/gsl_statistics_uint.h \ + ../gsl/gsl_statistics_int.h ../gsl/gsl_statistics_ushort.h \ + ../gsl/gsl_statistics_short.h ../gsl/gsl_statistics_uchar.h \ + ../gsl/gsl_statistics_char.h ../gsl/gsl_test.h ../gsl/gsl_rng.h \ + ../gsl/gsl_randist.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_complex.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_ieee_utils.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string.h: + +/usr/include/bits/string2.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_rstat.h: + +../gsl/gsl_sort.h: + +../gsl/gsl_sort_long_double.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_permutation.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_sort_double.h: + +../gsl/gsl_sort_float.h: + +../gsl/gsl_sort_ulong.h: + +../gsl/gsl_sort_long.h: + +../gsl/gsl_sort_uint.h: + +../gsl/gsl_sort_int.h: + +../gsl/gsl_sort_ushort.h: + +../gsl/gsl_sort_short.h: + +../gsl/gsl_sort_uchar.h: + +../gsl/gsl_sort_char.h: + +../gsl/gsl_statistics.h: + +../gsl/gsl_statistics_long_double.h: + +../gsl/gsl_statistics_double.h: + +../gsl/gsl_statistics_float.h: + +../gsl/gsl_statistics_ulong.h: + +../gsl/gsl_statistics_long.h: + +../gsl/gsl_statistics_uint.h: + +../gsl/gsl_statistics_int.h: + +../gsl/gsl_statistics_ushort.h: + +../gsl/gsl_statistics_short.h: + +../gsl/gsl_statistics_uchar.h: + +../gsl/gsl_statistics_char.h: + +../gsl/gsl_test.h: + +../gsl/gsl_rng.h: + +../gsl/gsl_randist.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_ieee_utils.h: diff --git a/gsl-2.5/rstat/.libs/libgslrstat.la b/gsl-2.5/rstat/.libs/libgslrstat.la new file mode 120000 index 00000000..86944514 --- /dev/null +++ b/gsl-2.5/rstat/.libs/libgslrstat.la @@ -0,0 +1 @@ +../libgslrstat.la \ No newline at end of file diff --git a/gsl-2.5/rstat/Makefile b/gsl-2.5/rstat/Makefile new file mode 100644 index 00000000..860e095c --- /dev/null +++ b/gsl-2.5/rstat/Makefile @@ -0,0 +1,1028 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# rstat/Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + + + + +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/gsl +pkgincludedir = $(includedir)/gsl +pkglibdir = $(libdir)/gsl +pkglibexecdir = $(libexecdir)/gsl +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = x86_64-unknown-linux-gnu +host_triplet = x86_64-unknown-linux-gnu +check_PROGRAMS = test$(EXEEXT) +subdir = rstat +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp \ + $(pkginclude_HEADERS) $(top_srcdir)/test-driver +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +libgslrstat_la_LIBADD = +am_libgslrstat_la_OBJECTS = rstat.lo rquantile.lo +libgslrstat_la_OBJECTS = $(am_libgslrstat_la_OBJECTS) +AM_V_lt = $(am__v_lt_$(V)) +am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) +am__v_lt_0 = --silent +am__v_lt_1 = +am_test_OBJECTS = test.$(OBJEXT) +test_OBJECTS = $(am_test_OBJECTS) +test_DEPENDENCIES = libgslrstat.la ../statistics/libgslstatistics.la \ + ../sort/libgslsort.la ../ieee-utils/libgslieeeutils.la \ + ../randist/libgslrandist.la ../rng/libgslrng.la \ + ../specfunc/libgslspecfunc.la ../complex/libgslcomplex.la \ + ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la \ + ../utils/libutils.la ../vector/libgslvector.la +AM_V_P = $(am__v_P_$(V)) +am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY)) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_$(V)) +am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_$(V)) +am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I. -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_$(V)) +am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_$(V)) +am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libgslrstat_la_SOURCES) $(test_SOURCES) +DIST_SOURCES = $(libgslrstat_la_SOURCES) $(test_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(pkgincludedir)" +HEADERS = $(pkginclude_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = .test +LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing aclocal-1.13 +AMTAR = $${TAR-tar} +AM_DEFAULT_VERBOSITY = 1 +AR = ar +AS = as +AUTOCONF = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing autoconf +AUTOHEADER = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing autoheader +AUTOMAKE = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing automake-1.13 +AWK = gawk +CC = gcc +CCDEPMODE = depmode=gcc3 +CFLAGS = -g -O2 +CPP = gcc -E +CPPFLAGS = +CYGPATH_W = echo +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +DLLTOOL = false +DSYMUTIL = +DUMPBIN = +ECHO_C = +ECHO_N = -n +ECHO_T = +EGREP = /usr/bin/grep -E +EXEEXT = +FGREP = /usr/bin/grep -F +GREP = /usr/bin/grep +GSLCBLAS_LDFLAGS = +GSL_CFLAGS = -I${prefix}/include +GSL_LDFLAGS = +GSL_LIBADD = +GSL_LIBM = -lm +GSL_LIBS = -L${exec_prefix}/lib -lgsl +GSL_LT_CBLAS_VERSION = 0:0:0 +GSL_LT_VERSION = 24:0:1 +GSL_MAJOR_VERSION = 2 +GSL_MINOR_VERSION = 5 +HAVE_AIX_IEEE_INTERFACE = +HAVE_DARWIN86_IEEE_INTERFACE = +HAVE_DARWIN_IEEE_INTERFACE = +HAVE_FREEBSD_IEEE_INTERFACE = +HAVE_GNUM68K_IEEE_INTERFACE = +HAVE_GNUPPC_IEEE_INTERFACE = +HAVE_GNUSPARC_IEEE_INTERFACE = +HAVE_GNUX86_IEEE_INTERFACE = +HAVE_HPUX11_IEEE_INTERFACE = +HAVE_HPUX_IEEE_INTERFACE = +HAVE_IRIX_IEEE_INTERFACE = +HAVE_NETBSD_IEEE_INTERFACE = +HAVE_OPENBSD_IEEE_INTERFACE = +HAVE_OS2EMX_IEEE_INTERFACE = +HAVE_SOLARIS_IEEE_INTERFACE = +HAVE_SUNOS4_IEEE_INTERFACE = +HAVE_TRU64_IEEE_INTERFACE = +INSTALL = /usr/bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = $(install_sh) -c -s +LD = /usr/bin/ld -m elf_x86_64 +LDFLAGS = +LIBM = -lm +LIBOBJS = +LIBS = -lm +LIBTOOL = $(SHELL) $(top_builddir)/libtool +LIPO = +LN_S = ln -s +LTLIBOBJS = +MAINT = # +MAKEINFO = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing makeinfo +MANIFEST_TOOL = : +MKDIR_P = /usr/bin/mkdir -p +NM = /usr/bin/nm -B +NMEDIT = +OBJDUMP = objdump +OBJEXT = o +OTOOL = +OTOOL64 = +PACKAGE = gsl +PACKAGE_BUGREPORT = +PACKAGE_NAME = gsl +PACKAGE_STRING = gsl 2.5 +PACKAGE_TARNAME = gsl +PACKAGE_URL = +PACKAGE_VERSION = 2.5 +PATH_SEPARATOR = : +RANLIB = ranlib +SED = /usr/bin/sed +SET_MAKE = +SHELL = /bin/sh +STRIP = strip +VERSION = 2.5 +abs_builddir = /home/groups/kipac/chto/package/gsl/gsl-2.5/rstat +abs_srcdir = /home/groups/kipac/chto/package/gsl/gsl-2.5/rstat +abs_top_builddir = /home/groups/kipac/chto/package/gsl/gsl-2.5 +abs_top_srcdir = /home/groups/kipac/chto/package/gsl/gsl-2.5 +ac_ct_AR = ar +ac_ct_CC = gcc +ac_ct_DUMPBIN = +am__include = include +am__leading_dot = . +am__quote = +am__tar = $${TAR-tar} chof - "$$tardir" +am__untar = $${TAR-tar} xf - +bindir = ${exec_prefix}/bin +build = x86_64-unknown-linux-gnu +build_alias = +build_cpu = x86_64 +build_os = linux-gnu +build_vendor = unknown +builddir = . +datadir = ${datarootdir} +datarootdir = ${prefix}/share +docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} +dvidir = ${docdir} +exec_prefix = ${prefix} +host = x86_64-unknown-linux-gnu +host_alias = +host_cpu = x86_64 +host_os = linux-gnu +host_vendor = unknown +htmldir = ${docdir} +includedir = ${prefix}/include +infodir = ${datarootdir}/info +install_sh = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/install-sh +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +localedir = ${datarootdir}/locale +localstatedir = ${prefix}/var +mandir = ${datarootdir}/man +mkdir_p = $(MKDIR_P) +oldincludedir = /usr/include +pdfdir = ${docdir} +prefix = /home/groups/kipac/chto/package/gsl/gsl_lib +program_transform_name = s,x,x, +psdir = ${docdir} +sbindir = ${exec_prefix}/sbin +sharedstatedir = ${prefix}/com +srcdir = . +sysconfdir = ${prefix}/etc +target_alias = +top_build_prefix = ../ +top_builddir = .. +top_srcdir = .. +noinst_LTLIBRARIES = libgslrstat.la +pkginclude_HEADERS = gsl_rstat.h +AM_CPPFLAGS = -I$(top_srcdir) +libgslrstat_la_SOURCES = rstat.c rquantile.c +TESTS = $(check_PROGRAMS) +test_SOURCES = test.c +test_LDADD = libgslrstat.la ../statistics/libgslstatistics.la ../sort/libgslsort.la ../ieee-utils/libgslieeeutils.la ../randist/libgslrandist.la ../rng/libgslrng.la ../specfunc/libgslspecfunc.la ../complex/libgslcomplex.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la ../vector/libgslvector.la +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu rstat/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu rstat/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: # $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): # $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libgslrstat.la: $(libgslrstat_la_OBJECTS) $(libgslrstat_la_DEPENDENCIES) $(EXTRA_libgslrstat_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(libgslrstat_la_OBJECTS) $(libgslrstat_la_LIBADD) $(LIBS) + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) $(EXTRA_test_DEPENDENCIES) + @rm -f test$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_OBJECTS) $(test_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +include ./$(DEPDIR)/rquantile.Plo +include ./$(DEPDIR)/rstat.Plo +include ./$(DEPDIR)/test.Po + +.c.o: + $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# $(AM_V_CC)source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(COMPILE) -c $< + +.c.obj: + $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# $(AM_V_CC)source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: + $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +# $(AM_V_CC)source='$<' object='$@' libtool=yes \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-pkgincludeHEADERS: $(pkginclude_HEADERS) + @$(NORMAL_INSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \ + done + +uninstall-pkgincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + else \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_PROGRAMS) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +test.log: test$(EXEEXT) + @p='test$(EXEEXT)'; \ + b='test'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +#.test$(EXEEXT).log: +# @p='$<'; \ +# $(am__set_b); \ +# $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +# --log-file $$b.log --trs-file $$b.trs \ +# $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +# "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-am +all-am: Makefile $(LTLIBRARIES) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(pkgincludedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-pkgincludeHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-pkgincludeHEADERS + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES cscopelist-am ctags ctags-am distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-pkgincludeHEADERS \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + recheck tags tags-am uninstall uninstall-am \ + uninstall-pkgincludeHEADERS + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gsl-2.5/rstat/Makefile.am b/gsl-2.5/rstat/Makefile.am new file mode 100644 index 00000000..85db2013 --- /dev/null +++ b/gsl-2.5/rstat/Makefile.am @@ -0,0 +1,15 @@ +noinst_LTLIBRARIES = libgslrstat.la + +pkginclude_HEADERS = gsl_rstat.h + +AM_CPPFLAGS = -I$(top_srcdir) + +libgslrstat_la_SOURCES = rstat.c rquantile.c + +check_PROGRAMS = test +TESTS = $(check_PROGRAMS) + +test_SOURCES = test.c +test_LDADD = libgslrstat.la ../statistics/libgslstatistics.la ../sort/libgslsort.la ../ieee-utils/libgslieeeutils.la ../randist/libgslrandist.la ../rng/libgslrng.la ../specfunc/libgslspecfunc.la ../complex/libgslcomplex.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la ../vector/libgslvector.la + + diff --git a/gsl-2.5/rstat/Makefile.in b/gsl-2.5/rstat/Makefile.in new file mode 100644 index 00000000..3a6bfc00 --- /dev/null +++ b/gsl-2.5/rstat/Makefile.in @@ -0,0 +1,1028 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + + +VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +check_PROGRAMS = test$(EXEEXT) +subdir = rstat +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp \ + $(pkginclude_HEADERS) $(top_srcdir)/test-driver +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +libgslrstat_la_LIBADD = +am_libgslrstat_la_OBJECTS = rstat.lo rquantile.lo +libgslrstat_la_OBJECTS = $(am_libgslrstat_la_OBJECTS) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +am_test_OBJECTS = test.$(OBJEXT) +test_OBJECTS = $(am_test_OBJECTS) +test_DEPENDENCIES = libgslrstat.la ../statistics/libgslstatistics.la \ + ../sort/libgslsort.la ../ieee-utils/libgslieeeutils.la \ + ../randist/libgslrandist.la ../rng/libgslrng.la \ + ../specfunc/libgslspecfunc.la ../complex/libgslcomplex.la \ + ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la \ + ../utils/libutils.la ../vector/libgslvector.la +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libgslrstat_la_SOURCES) $(test_SOURCES) +DIST_SOURCES = $(libgslrstat_la_SOURCES) $(test_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(pkgincludedir)" +HEADERS = $(pkginclude_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = @EXEEXT@ .test +LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +GSLCBLAS_LDFLAGS = @GSLCBLAS_LDFLAGS@ +GSL_CFLAGS = @GSL_CFLAGS@ +GSL_LDFLAGS = @GSL_LDFLAGS@ +GSL_LIBADD = @GSL_LIBADD@ +GSL_LIBM = @GSL_LIBM@ +GSL_LIBS = @GSL_LIBS@ +GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ +GSL_LT_VERSION = @GSL_LT_VERSION@ +GSL_MAJOR_VERSION = @GSL_MAJOR_VERSION@ +GSL_MINOR_VERSION = @GSL_MINOR_VERSION@ +HAVE_AIX_IEEE_INTERFACE = @HAVE_AIX_IEEE_INTERFACE@ +HAVE_DARWIN86_IEEE_INTERFACE = @HAVE_DARWIN86_IEEE_INTERFACE@ +HAVE_DARWIN_IEEE_INTERFACE = @HAVE_DARWIN_IEEE_INTERFACE@ +HAVE_FREEBSD_IEEE_INTERFACE = @HAVE_FREEBSD_IEEE_INTERFACE@ +HAVE_GNUM68K_IEEE_INTERFACE = @HAVE_GNUM68K_IEEE_INTERFACE@ +HAVE_GNUPPC_IEEE_INTERFACE = @HAVE_GNUPPC_IEEE_INTERFACE@ +HAVE_GNUSPARC_IEEE_INTERFACE = @HAVE_GNUSPARC_IEEE_INTERFACE@ +HAVE_GNUX86_IEEE_INTERFACE = @HAVE_GNUX86_IEEE_INTERFACE@ +HAVE_HPUX11_IEEE_INTERFACE = @HAVE_HPUX11_IEEE_INTERFACE@ +HAVE_HPUX_IEEE_INTERFACE = @HAVE_HPUX_IEEE_INTERFACE@ +HAVE_IRIX_IEEE_INTERFACE = @HAVE_IRIX_IEEE_INTERFACE@ +HAVE_NETBSD_IEEE_INTERFACE = @HAVE_NETBSD_IEEE_INTERFACE@ +HAVE_OPENBSD_IEEE_INTERFACE = @HAVE_OPENBSD_IEEE_INTERFACE@ +HAVE_OS2EMX_IEEE_INTERFACE = @HAVE_OS2EMX_IEEE_INTERFACE@ +HAVE_SOLARIS_IEEE_INTERFACE = @HAVE_SOLARIS_IEEE_INTERFACE@ +HAVE_SUNOS4_IEEE_INTERFACE = @HAVE_SUNOS4_IEEE_INTERFACE@ +HAVE_TRU64_IEEE_INTERFACE = @HAVE_TRU64_IEEE_INTERFACE@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBM = @LIBM@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +noinst_LTLIBRARIES = libgslrstat.la +pkginclude_HEADERS = gsl_rstat.h +AM_CPPFLAGS = -I$(top_srcdir) +libgslrstat_la_SOURCES = rstat.c rquantile.c +TESTS = $(check_PROGRAMS) +test_SOURCES = test.c +test_LDADD = libgslrstat.la ../statistics/libgslstatistics.la ../sort/libgslsort.la ../ieee-utils/libgslieeeutils.la ../randist/libgslrandist.la ../rng/libgslrng.la ../specfunc/libgslspecfunc.la ../complex/libgslcomplex.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la ../vector/libgslvector.la +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu rstat/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu rstat/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libgslrstat.la: $(libgslrstat_la_OBJECTS) $(libgslrstat_la_DEPENDENCIES) $(EXTRA_libgslrstat_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(libgslrstat_la_OBJECTS) $(libgslrstat_la_LIBADD) $(LIBS) + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) $(EXTRA_test_DEPENDENCIES) + @rm -f test$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_OBJECTS) $(test_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rquantile.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rstat.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test.Po@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-pkgincludeHEADERS: $(pkginclude_HEADERS) + @$(NORMAL_INSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \ + done + +uninstall-pkgincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + else \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_PROGRAMS) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +test.log: test$(EXEEXT) + @p='test$(EXEEXT)'; \ + b='test'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +@am__EXEEXT_TRUE@.test$(EXEEXT).log: +@am__EXEEXT_TRUE@ @p='$<'; \ +@am__EXEEXT_TRUE@ $(am__set_b); \ +@am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +@am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ +@am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +@am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-am +all-am: Makefile $(LTLIBRARIES) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(pkgincludedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-pkgincludeHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-pkgincludeHEADERS + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES cscopelist-am ctags ctags-am distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-pkgincludeHEADERS \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + recheck tags tags-am uninstall uninstall-am \ + uninstall-pkgincludeHEADERS + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gsl-2.5/rstat/gsl_rstat.h b/gsl-2.5/rstat/gsl_rstat.h new file mode 100644 index 00000000..f2aab6b1 --- /dev/null +++ b/gsl-2.5/rstat/gsl_rstat.h @@ -0,0 +1,81 @@ +/* rstat/gsl_rstat.h + * + * Copyright (C) 2015 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_RSTAT_H__ +#define __GSL_RSTAT_H__ + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +typedef struct +{ + double p; /* p-quantile */ + double q[5]; /* heights q_i */ + int npos[5]; /* positions n_i */ + double np[5]; /* desired positions n_i' */ + double dnp[5]; /* increments dn_i' */ + size_t n; /* number of data added */ +} gsl_rstat_quantile_workspace; + +gsl_rstat_quantile_workspace *gsl_rstat_quantile_alloc(const double p); +void gsl_rstat_quantile_free(gsl_rstat_quantile_workspace *w); +int gsl_rstat_quantile_reset(gsl_rstat_quantile_workspace *w); +int gsl_rstat_quantile_add(const double x, gsl_rstat_quantile_workspace *w); +double gsl_rstat_quantile_get(gsl_rstat_quantile_workspace *w); + +typedef struct +{ + double min; /* minimum value added */ + double max; /* maximum value added */ + double mean; /* current mean */ + double M2; /* M_k = sum_{i=1..n} [ x_i - mean_n ]^k */ + double M3; + double M4; + size_t n; /* number of data points added */ + gsl_rstat_quantile_workspace *median_workspace_p; /* median workspace */ +} gsl_rstat_workspace; + +gsl_rstat_workspace *gsl_rstat_alloc(void); +void gsl_rstat_free(gsl_rstat_workspace *w); +size_t gsl_rstat_n(const gsl_rstat_workspace *w); +int gsl_rstat_add(const double x, gsl_rstat_workspace *w); +double gsl_rstat_min(const gsl_rstat_workspace *w); +double gsl_rstat_max(const gsl_rstat_workspace *w); +double gsl_rstat_mean(const gsl_rstat_workspace *w); +double gsl_rstat_variance(const gsl_rstat_workspace *w); +double gsl_rstat_sd(const gsl_rstat_workspace *w); +double gsl_rstat_rms(const gsl_rstat_workspace *w); +double gsl_rstat_sd_mean(const gsl_rstat_workspace *w); +double gsl_rstat_median(gsl_rstat_workspace *w); +double gsl_rstat_skew(const gsl_rstat_workspace *w); +double gsl_rstat_kurtosis(const gsl_rstat_workspace *w); +int gsl_rstat_reset(gsl_rstat_workspace *w); + +__END_DECLS + +#endif /* __GSL_RSTAT_H__ */ diff --git a/gsl-2.5/rstat/libgslrstat.la b/gsl-2.5/rstat/libgslrstat.la new file mode 100644 index 00000000..d062d022 --- /dev/null +++ b/gsl-2.5/rstat/libgslrstat.la @@ -0,0 +1,41 @@ +# libgslrstat.la - a libtool library file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='' + +# Names of this library. +library_names='' + +# The name of the static archive. +old_library='libgslrstat.a' + +# Linker flags that can not go in dependency_libs. +inherited_linker_flags='' + +# Libraries that this one depends upon. +dependency_libs=' -lm' + +# Names of additional weak libraries provided by this library +weak_library_names='' + +# Version information for libgslrstat. +current= +age= +revision= + +# Is this an already installed library? +installed=no + +# Should we warn about portability when linking against -modules? +shouldnotlink=no + +# Files to dlopen/dlpreopen +dlopen='' +dlpreopen='' + +# Directory that this library needs to be installed in: +libdir='' diff --git a/gsl-2.5/rstat/rquantile.c b/gsl-2.5/rstat/rquantile.c new file mode 100644 index 00000000..0c4e84ad --- /dev/null +++ b/gsl-2.5/rstat/rquantile.c @@ -0,0 +1,207 @@ +/* rstat/rquantile.c + * + * Copyright (C) 2015 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include +#include + +/* + * Running quantile calculation based on the paper + * + * [1] R. Jain and I. Chlamtac, "The P^2 algorithm for dynamic + * calculation of quantiles and histograms without storing + * observations", Communications of the ACM, October 1985 + */ + +static double calc_psq(const double qp1, const double q, const double qm1, + const double d, const double np1, const double n, const double nm1); + +gsl_rstat_quantile_workspace * +gsl_rstat_quantile_alloc(const double p) +{ + gsl_rstat_quantile_workspace *w; + + w = calloc(1, sizeof(gsl_rstat_quantile_workspace)); + if (w == 0) + { + GSL_ERROR_NULL ("failed to allocate space for workspace", GSL_ENOMEM); + } + + w->p = p; + + gsl_rstat_quantile_reset(w); + + return w; +} /* gsl_rstat_quantile_alloc() */ + +void +gsl_rstat_quantile_free(gsl_rstat_quantile_workspace *w) +{ + free(w); +} /* gsl_rstat_quantile_free() */ + +int +gsl_rstat_quantile_reset(gsl_rstat_quantile_workspace *w) +{ + const double p = w->p; + size_t i; + + /* initialize positions n */ + for (i = 0; i < 5; ++i) + w->npos[i] = i + 1; + + /* initialize n' */ + w->np[0] = 1.0; + w->np[1] = 1.0 + 2.0 * p; + w->np[2] = 1.0 + 4.0 * p; + w->np[3] = 3.0 + 2.0 * p; + w->np[4] = 5.0; + + /* initialize dn' */ + w->dnp[0] = 0.0; + w->dnp[1] = 0.5 * p; + w->dnp[2] = p; + w->dnp[3] = 0.5 * (1.0 + p); + w->dnp[4] = 1.0; + + w->n = 0; + + return GSL_SUCCESS; +} + +int +gsl_rstat_quantile_add(const double x, gsl_rstat_quantile_workspace *w) +{ + if (w->n < 5) + { + w->q[w->n] = x; + } + else + { + int i; + int k = -1; + + if (w->n == 5) + { + /* initialization: sort the first five heights */ + gsl_sort(w->q, 1, w->n); + } + + /* step B1: find k such that q_k <= x < q_{k+1} */ + if (x < w->q[0]) + { + w->q[0] = x; + k = 0; + } + else if (x >= w->q[4]) + { + w->q[4] = x; + k = 3; + } + else + { + for (i = 0; i <= 3; ++i) + { + if (w->q[i] <= x && x < w->q[i + 1]) + { + k = i; + break; + } + } + } + + if (k < 0) + { + /* we could get here if x is nan */ + GSL_ERROR ("invalid input argument x", GSL_EINVAL); + } + + /* step B2(a): update n_i */ + for (i = k + 1; i <= 4; ++i) + ++(w->npos[i]); + + /* step B2(b): update n_i' */ + for (i = 0; i < 5; ++i) + w->np[i] += w->dnp[i]; + + /* step B3: update heights */ + for (i = 1; i <= 3; ++i) + { + double ni = (double) w->npos[i]; + double d = w->np[i] - ni; + + if ((d >= 1.0 && (w->npos[i + 1] - w->npos[i] > 1)) || + (d <= -1.0 && (w->npos[i - 1] - w->npos[i] < -1))) + { + int dsign = (d > 0.0) ? 1 : -1; + double qp1 = w->q[i + 1]; + double qi = w->q[i]; + double qm1 = w->q[i - 1]; + double np1 = (double) w->npos[i + 1]; + double nm1 = (double) w->npos[i - 1]; + double qp = calc_psq(qp1, qi, qm1, (double) dsign, + np1, ni, nm1); + + if (qm1 < qp && qp < qp1) + w->q[i] = qp; + else + { + /* use linear formula */ + w->q[i] += dsign * (w->q[i + dsign] - qi) / ((double) w->npos[i + dsign] - ni); + } + + w->npos[i] += dsign; + } + } + } + + ++(w->n); + + return GSL_SUCCESS; +} /* gsl_rstat_quantile_add() */ + +double +gsl_rstat_quantile_get(gsl_rstat_quantile_workspace *w) +{ + if (w->n >= 5) + { + return w->q[2]; + } + else + { + /* not yet initialized */ + gsl_sort(w->q, 1, w->n); + return gsl_stats_quantile_from_sorted_data(w->q, 1, w->n, w->p); + } +} /* gsl_rstat_quantile_get() */ + +static double +calc_psq(const double qp1, const double q, const double qm1, + const double d, const double np1, const double n, const double nm1) +{ + double outer = d / (np1 - nm1); + double inner_left = (n - nm1 + d) * (qp1 - q) / (np1 - n); + double inner_right = (np1 - n - d) * (q - qm1) / (n - nm1); + + return q + outer * (inner_left + inner_right); +} /* calc_psq() */ diff --git a/gsl-2.5/rstat/rquantile.lo b/gsl-2.5/rstat/rquantile.lo new file mode 100644 index 00000000..65fe14a8 --- /dev/null +++ b/gsl-2.5/rstat/rquantile.lo @@ -0,0 +1,12 @@ +# rquantile.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/rquantile.o' + +# Name of the non-PIC object +non_pic_object='rquantile.o' + diff --git a/gsl-2.5/rstat/rstat.c b/gsl-2.5/rstat/rstat.c new file mode 100644 index 00000000..08086228 --- /dev/null +++ b/gsl-2.5/rstat/rstat.c @@ -0,0 +1,221 @@ +/* rstat/rstat.c + * + * Copyright (C) 2015 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include + +gsl_rstat_workspace * +gsl_rstat_alloc(void) +{ + gsl_rstat_workspace *w; + + w = calloc(1, sizeof(gsl_rstat_workspace)); + + if (w == 0) + { + GSL_ERROR_NULL ("failed to allocate space for workspace", GSL_ENOMEM); + } + + w->median_workspace_p = gsl_rstat_quantile_alloc(0.5); + + if (w->median_workspace_p == 0) + { + GSL_ERROR_NULL ("failed to allocate space for median workspace", + GSL_ENOMEM); + } + + gsl_rstat_reset(w); + + return w; +} /* gsl_rstat_alloc() */ + +void +gsl_rstat_free(gsl_rstat_workspace *w) +{ + if (w->median_workspace_p) + gsl_rstat_quantile_free(w->median_workspace_p); + + free(w); +} /* gsl_rstat_free() */ + +size_t +gsl_rstat_n(const gsl_rstat_workspace *w) +{ + return w->n; +} /* gsl_rstat_n() */ + +/* add a data point to the running totals */ +int +gsl_rstat_add(const double x, gsl_rstat_workspace *w) +{ + double delta = x - w->mean; + double delta_n, delta_nsq, term1, n; + + /* update min and max */ + if (w->n == 0) + { + w->min = x; + w->max = x; + } + else + { + if (x < w->min) + w->min = x; + if (x > w->max) + w->max = x; + } + + /* update mean and variance */ + n = (double) ++(w->n); + delta_n = delta / n; + delta_nsq = delta_n * delta_n; + term1 = delta * delta_n * (n - 1.0); + w->mean += delta_n; + w->M4 += term1 * delta_nsq * (n * n - 3.0 * n + 3.0) + + 6.0 * delta_nsq * w->M2 - 4.0 * delta_n * w->M3; + w->M3 += term1 * delta_n * (n - 2.0) - 3.0 * delta_n * w->M2; + w->M2 += term1; + + /* update median */ + gsl_rstat_quantile_add(x, w->median_workspace_p); + + return GSL_SUCCESS; +} /* gsl_rstat_add() */ + +double +gsl_rstat_min(const gsl_rstat_workspace *w) +{ + return w->min; +} /* gsl_rstat_min() */ + +double +gsl_rstat_max(const gsl_rstat_workspace *w) +{ + return w->max; +} /* gsl_rstat_max() */ + +double +gsl_rstat_mean(const gsl_rstat_workspace *w) +{ + return w->mean; +} /* gsl_rstat_mean() */ + +double +gsl_rstat_variance(const gsl_rstat_workspace *w) +{ + if (w->n > 1) + { + double n = (double) w->n; + return (w->M2 / (n - 1.0)); + } + else + return 0.0; +} /* gsl_rstat_variance() */ + +double +gsl_rstat_sd(const gsl_rstat_workspace *w) +{ + double var = gsl_rstat_variance(w); + + return (sqrt(var)); +} /* gsl_rstat_sd() */ + +double +gsl_rstat_rms(const gsl_rstat_workspace *w) +{ + double rms = 0.0; + + if (w->n > 0) + { + double mean = gsl_rstat_mean(w); + double sigma = gsl_rstat_sd(w); + double n = (double) w->n; + double a = sqrt((n - 1.0) / n); + rms = gsl_hypot(mean, a * sigma); + } + + return rms; +} + +/* standard deviation of the mean: sigma / sqrt(n) */ +double +gsl_rstat_sd_mean(const gsl_rstat_workspace *w) +{ + if (w->n > 0) + { + double sd = gsl_rstat_sd(w); + return (sd / sqrt((double) w->n)); + } + else + return 0.0; +} /* gsl_rstat_sd_mean() */ + +double +gsl_rstat_median(gsl_rstat_workspace *w) +{ + return gsl_rstat_quantile_get(w->median_workspace_p); +} + +double +gsl_rstat_skew(const gsl_rstat_workspace *w) +{ + if (w->n > 0) + { + double n = (double) w->n; + double fac = pow(n - 1.0, 1.5) / n; + return ((fac * w->M3) / pow(w->M2, 1.5)); + } + else + return 0.0; +} /* gsl_rstat_skew() */ + +double +gsl_rstat_kurtosis(const gsl_rstat_workspace *w) +{ + if (w->n > 0) + { + double n = (double) w->n; + double fac = ((n - 1.0) / n) * (n - 1.0); + return ((fac * w->M4) / (w->M2 * w->M2) - 3.0); + } + else + return 0.0; +} /* gsl_rstat_kurtosis() */ + +int +gsl_rstat_reset(gsl_rstat_workspace *w) +{ + int status; + + w->min = 0.0; + w->max = 0.0; + w->mean = 0.0; + w->M2 = 0.0; + w->M3 = 0.0; + w->M4 = 0.0; + w->n = 0; + + status = gsl_rstat_quantile_reset(w->median_workspace_p); + + return status; +} /* gsl_rstat_reset() */ diff --git a/gsl-2.5/rstat/rstat.lo b/gsl-2.5/rstat/rstat.lo new file mode 100644 index 00000000..bf266cb4 --- /dev/null +++ b/gsl-2.5/rstat/rstat.lo @@ -0,0 +1,12 @@ +# rstat.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/rstat.o' + +# Name of the non-PIC object +non_pic_object='rstat.o' + diff --git a/gsl-2.5/rstat/test b/gsl-2.5/rstat/test new file mode 100755 index 00000000..08f068cf Binary files /dev/null and b/gsl-2.5/rstat/test differ diff --git a/gsl-2.5/rstat/test-suite.log b/gsl-2.5/rstat/test-suite.log new file mode 100644 index 00000000..e3cdd8c9 --- /dev/null +++ b/gsl-2.5/rstat/test-suite.log @@ -0,0 +1,14 @@ +=================================== + gsl 2.5: rstat/test-suite.log +=================================== + +# TOTAL: 1 +# PASS: 1 +# SKIP: 0 +# XFAIL: 0 +# FAIL: 0 +# XPASS: 0 +# ERROR: 0 + +.. contents:: :depth: 2 + diff --git a/gsl-2.5/rstat/test.c b/gsl-2.5/rstat/test.c new file mode 100644 index 00000000..23d7b416 --- /dev/null +++ b/gsl-2.5/rstat/test.c @@ -0,0 +1,218 @@ +/* rstat/test.c + * + * Copyright (C) 2015 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +double * +random_data(const size_t n, gsl_rng *r) +{ + size_t i; + double *data = malloc(n * sizeof(double)); + + for (i = 0; i < n; ++i) + data[i] = gsl_rng_uniform(r); + + return data; +} + +void +test_basic(const size_t n, const double data[], const double tol) +{ + gsl_rstat_workspace *rstat_workspace_p = gsl_rstat_alloc(); + const double expected_mean = gsl_stats_mean(data, 1, n); + const double expected_var = gsl_stats_variance(data, 1, n); + const double expected_sd = gsl_stats_sd(data, 1, n); + const double expected_sd_mean = expected_sd / sqrt((double) n); + const double expected_skew = gsl_stats_skew(data, 1, n); + const double expected_kurtosis = gsl_stats_kurtosis(data, 1, n); + double expected_rms = 0.0; + double mean, var, sd, sd_mean, rms, skew, kurtosis; + size_t i, num; + int status; + + /* compute expected rms */ + for (i = 0; i < n; ++i) + expected_rms += data[i] * data[i]; + + expected_rms = sqrt(expected_rms / n); + + /* add data to rstat workspace */ + for (i = 0; i < n; ++i) + gsl_rstat_add(data[i], rstat_workspace_p); + + mean = gsl_rstat_mean(rstat_workspace_p); + var = gsl_rstat_variance(rstat_workspace_p); + sd = gsl_rstat_sd(rstat_workspace_p); + sd_mean = gsl_rstat_sd_mean(rstat_workspace_p); + rms = gsl_rstat_rms(rstat_workspace_p); + skew = gsl_rstat_skew(rstat_workspace_p); + kurtosis = gsl_rstat_kurtosis(rstat_workspace_p); + num = gsl_rstat_n(rstat_workspace_p); + + gsl_test_int(num, n, "n n=%zu" , n); + gsl_test_rel(mean, expected_mean, tol, "mean n=%zu", n); + gsl_test_rel(var, expected_var, tol, "variance n=%zu", n); + gsl_test_rel(sd, expected_sd, tol, "stddev n=%zu", n); + gsl_test_rel(sd_mean, expected_sd_mean, tol, "stddev_mean n=%zu", n); + gsl_test_rel(rms, expected_rms, tol, "rms n=%zu", n); + gsl_test_rel(skew, expected_skew, tol, "skew n=%zu", n); + gsl_test_rel(kurtosis, expected_kurtosis, tol, "kurtosis n=%zu", n); + + status = gsl_rstat_reset(rstat_workspace_p); + gsl_test_int(status, GSL_SUCCESS, "rstat returned success"); + num = gsl_rstat_n(rstat_workspace_p); + + gsl_test_int(num, 0, "n n=%zu" , n); + + gsl_rstat_free(rstat_workspace_p); +} + +void +test_quantile(const double p, const double data[], const size_t n, + const double expected, const double tol, const char *desc) +{ + gsl_rstat_quantile_workspace *w = gsl_rstat_quantile_alloc(p); + double result; + size_t i; + + for (i = 0; i < n; ++i) + gsl_rstat_quantile_add(data[i], w); + + result = gsl_rstat_quantile_get(w); + + if (fabs(expected) < 1.0e-4) + gsl_test_abs(result, expected, tol, "%s p=%g", desc, p); + else + gsl_test_rel(result, expected, tol, "%s p=%g", desc, p); + + gsl_rstat_quantile_free(w); +} + +int +main() +{ + gsl_rng *r = gsl_rng_alloc(gsl_rng_default); + const double tol1 = 1.0e-8; + const double tol2 = 1.0e-3; + + gsl_ieee_env_setup(); + + { + const size_t N = 2000000; + double *data = random_data(N, r); + double data2[] = { 4.0, 7.0, 13.0, 16.0, -5.0 }; + size_t i; + + test_basic(2, data, tol1); + test_basic(100, data, tol1); + test_basic(1000, data, tol1); + test_basic(10000, data, tol1); + test_basic(50000, data, tol1); + test_basic(80000, data, tol1); + test_basic(1500000, data, tol1); + test_basic(2000000, data, tol1); + + for (i = 0; i < 5; ++i) + data2[i] += 1.0e9; + + test_basic(5, data2, tol1); + + free(data); + } + + { + /* dataset from Jain and Chlamtac paper */ + const size_t n_jain = 20; + const double data_jain[] = { 0.02, 0.15, 0.74, 3.39, 0.83, + 22.37, 10.15, 15.43, 38.62, 15.92, + 34.60, 10.28, 1.47, 0.40, 0.05, + 11.39, 0.27, 0.42, 0.09, 11.37 }; + double expected_jain = 4.44063435326; + + test_quantile(0.5, data_jain, n_jain, expected_jain, tol1, "jain"); + } + + { + size_t n = 1000000; + double *data = malloc(n * sizeof(double)); + double *sorted_data = malloc(n * sizeof(double)); + gsl_rstat_workspace *rstat_workspace_p = gsl_rstat_alloc(); + double p; + size_t i; + + for (i = 0; i < n; ++i) + { + data[i] = gsl_ran_gaussian_tail(r, 1.3, 1.0); + gsl_rstat_add(data[i], rstat_workspace_p); + } + + memcpy(sorted_data, data, n * sizeof(double)); + gsl_sort(sorted_data, 1, n); + + /* test quantile calculation */ + for (p = 0.1; p <= 0.9; p += 0.1) + { + double expected = gsl_stats_quantile_from_sorted_data(sorted_data, 1, n, p); + test_quantile(p, data, n, expected, tol2, "gauss"); + } + + /* test mean, variance */ + { + const double expected_mean = gsl_stats_mean(data, 1, n); + const double expected_var = gsl_stats_variance(data, 1, n); + const double expected_sd = gsl_stats_sd(data, 1, n); + const double expected_skew = gsl_stats_skew(data, 1, n); + const double expected_kurtosis = gsl_stats_kurtosis(data, 1, n); + const double expected_median = gsl_stats_quantile_from_sorted_data(sorted_data, 1, n, 0.5); + + const double mean = gsl_rstat_mean(rstat_workspace_p); + const double var = gsl_rstat_variance(rstat_workspace_p); + const double sd = gsl_rstat_sd(rstat_workspace_p); + const double skew = gsl_rstat_skew(rstat_workspace_p); + const double kurtosis = gsl_rstat_kurtosis(rstat_workspace_p); + const double median = gsl_rstat_median(rstat_workspace_p); + + gsl_test_rel(mean, expected_mean, tol1, "mean"); + gsl_test_rel(var, expected_var, tol1, "variance"); + gsl_test_rel(sd, expected_sd, tol1, "stddev"); + gsl_test_rel(skew, expected_skew, tol1, "skew"); + gsl_test_rel(kurtosis, expected_kurtosis, tol1, "kurtosis"); + gsl_test_abs(median, expected_median, tol2, "median"); + } + + free(data); + free(sorted_data); + gsl_rstat_free(rstat_workspace_p); + } + + gsl_rng_free(r); + + exit (gsl_test_summary()); +} diff --git a/gsl-2.5/rstat/test.log b/gsl-2.5/rstat/test.log new file mode 100644 index 00000000..24a1f70c --- /dev/null +++ b/gsl-2.5/rstat/test.log @@ -0,0 +1 @@ +Completed [106/106] diff --git a/gsl-2.5/rstat/test.trs b/gsl-2.5/rstat/test.trs new file mode 100644 index 00000000..3f0f396c --- /dev/null +++ b/gsl-2.5/rstat/test.trs @@ -0,0 +1,4 @@ +:test-result: PASS +:global-test-result: PASS +:recheck: no +:copy-in-global-log: no diff --git a/gsl-2.5/siman/.deps/siman.Plo b/gsl-2.5/siman/.deps/siman.Plo new file mode 100644 index 00000000..802e7436 --- /dev/null +++ b/gsl-2.5/siman/.deps/siman.Plo @@ -0,0 +1,173 @@ +siman.lo: siman.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdio.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/byteswap.h \ + /usr/include/bits/byteswap-16.h /usr/include/sys/types.h \ + /usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib-float.h \ + /usr/include/string.h /usr/include/xlocale.h /usr/include/bits/string.h \ + /usr/include/bits/string2.h /usr/include/assert.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h ../gsl/gsl_rng.h \ + ../gsl/gsl_types.h ../gsl/gsl_errno.h /usr/include/errno.h \ + /usr/include/bits/errno.h /usr/include/linux/errno.h \ + /usr/include/asm/errno.h /usr/include/asm-generic/errno.h \ + /usr/include/asm-generic/errno-base.h ../gsl/gsl_inline.h \ + ../gsl/gsl_siman.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string.h: + +/usr/include/bits/string2.h: + +/usr/include/assert.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_rng.h: + +../gsl/gsl_types.h: + +../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_siman.h: diff --git a/gsl-2.5/siman/.deps/siman_tsp.Po b/gsl-2.5/siman/.deps/siman_tsp.Po new file mode 100644 index 00000000..c41bb901 --- /dev/null +++ b/gsl-2.5/siman/.deps/siman_tsp.Po @@ -0,0 +1,188 @@ +siman_tsp.o: siman_tsp.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h /usr/include/string.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/xlocale.h /usr/include/bits/string.h \ + /usr/include/bits/string2.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/byteswap.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/bits/byteswap-16.h /usr/include/stdlib.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../gsl/gsl_math.h ../gsl/gsl_sys.h \ + ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_rng.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_errno.h /usr/include/errno.h \ + /usr/include/bits/errno.h /usr/include/linux/errno.h \ + /usr/include/asm/errno.h /usr/include/asm-generic/errno.h \ + /usr/include/asm-generic/errno-base.h ../gsl/gsl_siman.h \ + ../gsl/gsl_ieee_utils.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +/usr/include/string.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string.h: + +/usr/include/bits/string2.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/stdlib.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_rng.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_siman.h: + +../gsl/gsl_ieee_utils.h: diff --git a/gsl-2.5/siman/.deps/test.Po b/gsl-2.5/siman/.deps/test.Po new file mode 100644 index 00000000..c91868bb --- /dev/null +++ b/gsl-2.5/siman/.deps/test.Po @@ -0,0 +1,151 @@ +test.o: test.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/string.h \ + /usr/include/xlocale.h /usr/include/bits/string.h \ + /usr/include/bits/string2.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_test.h ../gsl/gsl_rng.h ../gsl/gsl_types.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_inline.h ../gsl/gsl_siman.h ../gsl/gsl_ieee_utils.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string.h: + +/usr/include/bits/string2.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_test.h: + +../gsl/gsl_rng.h: + +../gsl/gsl_types.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_siman.h: + +../gsl/gsl_ieee_utils.h: diff --git a/gsl-2.5/siman/.libs/libgslsiman.la b/gsl-2.5/siman/.libs/libgslsiman.la new file mode 120000 index 00000000..f319d6a7 --- /dev/null +++ b/gsl-2.5/siman/.libs/libgslsiman.la @@ -0,0 +1 @@ +../libgslsiman.la \ No newline at end of file diff --git a/gsl-2.5/siman/ChangeLog b/gsl-2.5/siman/ChangeLog new file mode 100644 index 00000000..8c311fcb --- /dev/null +++ b/gsl-2.5/siman/ChangeLog @@ -0,0 +1,129 @@ +2008-07-03 Brian Gough + + * Makefile.am (INCLUDES): use top_srcdir instead of top_builddir + +2007-05-30 Brian Gough + + * siman.c (boltzmann): moved safe_exp into boltzmann + (copy_state): put all copying into one function + +2006-03-08 Brian Gough + + * test.c (square): removed inline since it causes problems with + some compilers + +2005-11-14 Brian Gough + + * siman.c (safe_exp): added a safe_exp function to avoid underflow + for large uphill steps + +2003-03-31 Brian Gough + + * siman.c (gsl_siman_solve): avoid reevaluation for best_E + (gsl_siman_solve): loop over param.iters_fixed_T not + params.n_tries + (gsl_siman_solve): initialise energy at start + +Sat Aug 3 20:32:38 2002 Brian Gough + + * siman.c (gsl_siman_solve): fix acceptance criterion to match + documentation (Peter S. Christopher) + +Thu Jun 13 20:57:00 2002 Brian Gough + + * siman.c (gsl_siman_solve): keep track of the best result + +2002-02-07 Mark Galassi + + * siman.c (gsl_siman_solve): bug fix in the destructor for x and + new_x which was being called on &x and &new_x instead of x and + new_x; thanks to Karsten Howes + +Thu Jul 12 21:50:07 2001 Brian Gough + + * gsl_siman.h: changed renamed gsl_Efunc_t to gsl_siman_Efunc_t, + in accordance with namespace conventions + +2000-12-15 Mark Galassi + + * siman.c (gsl_siman_solve): reversed a small change I had made + earlier and went back to taking Boltzmann-conditional steps when + the new energy is equal to the previous one. This allows you to + move around if you are stuck on a plateau. + + * gsl_siman.h, siman.c, siman_test.c, siman_tsp.c, test.c: changed + the siman_solve API to allow for more general search spaces. The + problem was that we assumed that points in the search space were + data structures that were allocated in continguous memory, so they + could not be linked structures. I replaced the malloc(), memcpy() + and free() calls with copy_constructor(), copyfunc() and + copy_destructor() functions. The user passes these functions, + which means that siman_solve() now takes three more arguments of + type gsl_siman_copy_t, gsl_siman_copy_construct_t and + gsl_siman_destroy_t. If these arguments are NULL (and all three + of them have to be NULL together), the traditional memcpy() + approach is used. + +1999-02-14 Mark Galassi + + * minor fixes. + +Tue Nov 17 17:22:14 1998 Brian Gough + + * added #include to all top-level source files + +Sun Nov 8 20:40:28 1998 Brian Gough + + * siman_tsp.c: clean up for make strict + +1998-11-06 + + * test.c: added prototype for memcpy using #include + + * siman_test.c: added prototype for memcpy using #include + +Wed Oct 28 15:06:58 1998 Brian Gough + + * siman.c: added #include for memcpy + +Thu Aug 20 12:22:28 1998 Brian Gough + + * siman.c: use (char *) judiciously to avoid warnings about void + pointer arithmetic (see randist/shuffle.c for similar examples) + + * siman_test.c: perform several tests, using the exact answer as + the comparison value, rather than checking for stationarity. + +Sun Jun 28 14:11:04 1998 Brian Gough + + * Converted to work with rng-style random number generators + + * gsl_siman.h: gsl_siman_step_t type functions now take a gsl_rng + random number generator as their first argument + + * siman.c (gsl_siman_solve): Now takes a gsl_rng random number + generator as the first argument + +Fri Jun 19 11:17:24 1998 Brian Gough + + * siman.c (gsl_siman_solve_many): changed the variable 'throw' to + 'u' (for uniform-random-number) so that we can compile with c++ + where throw is a reserved word. + +Sat May 23 13:59:55 1998 Brian Gough + + * siman.c: made the solving functions deterministic by removing + the random seed, gsl_ran_seed(time(0L)). When the function is + non-deterministic it is hard to debug and test (about 1 time in 20 + the test would fail due to the randomness). We can let the user do + the seeding if they need that. + +1998-02-09 Mark Galassi + + * siman_test_driver.sh (LAST_ENERGY): fixed a typo; the tests now + report well when they converge. + +1998-01-30 Mark Galassi + + * siman_test_driver.sh, Makefile.am (TESTS): added a test driver + so that now "make check" does something interesting. diff --git a/gsl-2.5/siman/Makefile b/gsl-2.5/siman/Makefile new file mode 100644 index 00000000..db5352ff --- /dev/null +++ b/gsl-2.5/siman/Makefile @@ -0,0 +1,1053 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# siman/Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + + + + + +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/gsl +pkgincludedir = $(includedir)/gsl +pkglibdir = $(libdir)/gsl +pkglibexecdir = $(libexecdir)/gsl +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = x86_64-unknown-linux-gnu +host_triplet = x86_64-unknown-linux-gnu +check_PROGRAMS = test$(EXEEXT) +noinst_PROGRAMS = siman_tsp$(EXEEXT) +subdir = siman +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp \ + $(pkginclude_HEADERS) $(top_srcdir)/test-driver ChangeLog TODO +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +libgslsiman_la_LIBADD = +am_libgslsiman_la_OBJECTS = siman.lo +libgslsiman_la_OBJECTS = $(am_libgslsiman_la_OBJECTS) +AM_V_lt = $(am__v_lt_$(V)) +am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) +am__v_lt_0 = --silent +am__v_lt_1 = +PROGRAMS = $(noinst_PROGRAMS) +am_siman_tsp_OBJECTS = siman_tsp.$(OBJEXT) +siman_tsp_OBJECTS = $(am_siman_tsp_OBJECTS) +siman_tsp_DEPENDENCIES = libgslsiman.la ../rng/libgslrng.la \ + ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la \ + ../sys/libgslsys.la ../utils/libutils.la +am_test_OBJECTS = test.$(OBJEXT) +test_OBJECTS = $(am_test_OBJECTS) +test_DEPENDENCIES = libgslsiman.la ../rng/libgslrng.la \ + ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la \ + ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la +AM_V_P = $(am__v_P_$(V)) +am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY)) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_$(V)) +am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_$(V)) +am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I. -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_$(V)) +am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_$(V)) +am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libgslsiman_la_SOURCES) $(siman_tsp_SOURCES) \ + $(test_SOURCES) +DIST_SOURCES = $(libgslsiman_la_SOURCES) $(siman_tsp_SOURCES) \ + $(test_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(pkgincludedir)" +HEADERS = $(pkginclude_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = .test +LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing aclocal-1.13 +AMTAR = $${TAR-tar} +AM_DEFAULT_VERBOSITY = 1 +AR = ar +AS = as +AUTOCONF = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing autoconf +AUTOHEADER = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing autoheader +AUTOMAKE = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing automake-1.13 +AWK = gawk +CC = gcc +CCDEPMODE = depmode=gcc3 +CFLAGS = -g -O2 +CPP = gcc -E +CPPFLAGS = +CYGPATH_W = echo +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +DLLTOOL = false +DSYMUTIL = +DUMPBIN = +ECHO_C = +ECHO_N = -n +ECHO_T = +EGREP = /usr/bin/grep -E +EXEEXT = +FGREP = /usr/bin/grep -F +GREP = /usr/bin/grep +GSLCBLAS_LDFLAGS = +GSL_CFLAGS = -I${prefix}/include +GSL_LDFLAGS = +GSL_LIBADD = +GSL_LIBM = -lm +GSL_LIBS = -L${exec_prefix}/lib -lgsl +GSL_LT_CBLAS_VERSION = 0:0:0 +GSL_LT_VERSION = 24:0:1 +GSL_MAJOR_VERSION = 2 +GSL_MINOR_VERSION = 5 +HAVE_AIX_IEEE_INTERFACE = +HAVE_DARWIN86_IEEE_INTERFACE = +HAVE_DARWIN_IEEE_INTERFACE = +HAVE_FREEBSD_IEEE_INTERFACE = +HAVE_GNUM68K_IEEE_INTERFACE = +HAVE_GNUPPC_IEEE_INTERFACE = +HAVE_GNUSPARC_IEEE_INTERFACE = +HAVE_GNUX86_IEEE_INTERFACE = +HAVE_HPUX11_IEEE_INTERFACE = +HAVE_HPUX_IEEE_INTERFACE = +HAVE_IRIX_IEEE_INTERFACE = +HAVE_NETBSD_IEEE_INTERFACE = +HAVE_OPENBSD_IEEE_INTERFACE = +HAVE_OS2EMX_IEEE_INTERFACE = +HAVE_SOLARIS_IEEE_INTERFACE = +HAVE_SUNOS4_IEEE_INTERFACE = +HAVE_TRU64_IEEE_INTERFACE = +INSTALL = /usr/bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = $(install_sh) -c -s +LD = /usr/bin/ld -m elf_x86_64 +LDFLAGS = +LIBM = -lm +LIBOBJS = +LIBS = -lm +LIBTOOL = $(SHELL) $(top_builddir)/libtool +LIPO = +LN_S = ln -s +LTLIBOBJS = +MAINT = # +MAKEINFO = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing makeinfo +MANIFEST_TOOL = : +MKDIR_P = /usr/bin/mkdir -p +NM = /usr/bin/nm -B +NMEDIT = +OBJDUMP = objdump +OBJEXT = o +OTOOL = +OTOOL64 = +PACKAGE = gsl +PACKAGE_BUGREPORT = +PACKAGE_NAME = gsl +PACKAGE_STRING = gsl 2.5 +PACKAGE_TARNAME = gsl +PACKAGE_URL = +PACKAGE_VERSION = 2.5 +PATH_SEPARATOR = : +RANLIB = ranlib +SED = /usr/bin/sed +SET_MAKE = +SHELL = /bin/sh +STRIP = strip +VERSION = 2.5 +abs_builddir = /home/groups/kipac/chto/package/gsl/gsl-2.5/siman +abs_srcdir = /home/groups/kipac/chto/package/gsl/gsl-2.5/siman +abs_top_builddir = /home/groups/kipac/chto/package/gsl/gsl-2.5 +abs_top_srcdir = /home/groups/kipac/chto/package/gsl/gsl-2.5 +ac_ct_AR = ar +ac_ct_CC = gcc +ac_ct_DUMPBIN = +am__include = include +am__leading_dot = . +am__quote = +am__tar = $${TAR-tar} chof - "$$tardir" +am__untar = $${TAR-tar} xf - +bindir = ${exec_prefix}/bin +build = x86_64-unknown-linux-gnu +build_alias = +build_cpu = x86_64 +build_os = linux-gnu +build_vendor = unknown +builddir = . +datadir = ${datarootdir} +datarootdir = ${prefix}/share +docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} +dvidir = ${docdir} +exec_prefix = ${prefix} +host = x86_64-unknown-linux-gnu +host_alias = +host_cpu = x86_64 +host_os = linux-gnu +host_vendor = unknown +htmldir = ${docdir} +includedir = ${prefix}/include +infodir = ${datarootdir}/info +install_sh = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/install-sh +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +localedir = ${datarootdir}/locale +localstatedir = ${prefix}/var +mandir = ${datarootdir}/man +mkdir_p = $(MKDIR_P) +oldincludedir = /usr/include +pdfdir = ${docdir} +prefix = /home/groups/kipac/chto/package/gsl/gsl_lib +program_transform_name = s,x,x, +psdir = ${docdir} +sbindir = ${exec_prefix}/sbin +sharedstatedir = ${prefix}/com +srcdir = . +sysconfdir = ${prefix}/etc +target_alias = +top_build_prefix = ../ +top_builddir = .. +top_srcdir = .. +noinst_LTLIBRARIES = libgslsiman.la +TESTS = $(check_PROGRAMS) +EXTRA_DIST = siman_test_driver.sh +test_SOURCES = test.c +test_LDADD = libgslsiman.la ../rng/libgslrng.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la +siman_tsp_SOURCES = siman_tsp.c +siman_tsp_LDADD = libgslsiman.la ../rng/libgslrng.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../sys/libgslsys.la ../utils/libutils.la +CLEANFILES = siman_test.out +libgslsiman_la_SOURCES = siman.c +pkginclude_HEADERS = gsl_siman.h +AM_CPPFLAGS = -I$(top_srcdir) +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu siman/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu siman/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: # $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): # $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libgslsiman.la: $(libgslsiman_la_OBJECTS) $(libgslsiman_la_DEPENDENCIES) $(EXTRA_libgslsiman_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(libgslsiman_la_OBJECTS) $(libgslsiman_la_LIBADD) $(LIBS) + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +clean-noinstPROGRAMS: + @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +siman_tsp$(EXEEXT): $(siman_tsp_OBJECTS) $(siman_tsp_DEPENDENCIES) $(EXTRA_siman_tsp_DEPENDENCIES) + @rm -f siman_tsp$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(siman_tsp_OBJECTS) $(siman_tsp_LDADD) $(LIBS) + +test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) $(EXTRA_test_DEPENDENCIES) + @rm -f test$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_OBJECTS) $(test_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +include ./$(DEPDIR)/siman.Plo +include ./$(DEPDIR)/siman_tsp.Po +include ./$(DEPDIR)/test.Po + +.c.o: + $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# $(AM_V_CC)source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(COMPILE) -c $< + +.c.obj: + $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# $(AM_V_CC)source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: + $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +# $(AM_V_CC)source='$<' object='$@' libtool=yes \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-pkgincludeHEADERS: $(pkginclude_HEADERS) + @$(NORMAL_INSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \ + done + +uninstall-pkgincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + else \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_PROGRAMS) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +test.log: test$(EXEEXT) + @p='test$(EXEEXT)'; \ + b='test'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +#.test$(EXEEXT).log: +# @p='$<'; \ +# $(am__set_b); \ +# $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +# --log-file $$b.log --trs-file $$b.trs \ +# $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +# "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-am +all-am: Makefile $(LTLIBRARIES) $(PROGRAMS) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(pkgincludedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES clean-noinstPROGRAMS mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-pkgincludeHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-pkgincludeHEADERS + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES clean-noinstPROGRAMS cscopelist-am \ + ctags ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-pkgincludeHEADERS install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am recheck tags tags-am uninstall \ + uninstall-am uninstall-pkgincludeHEADERS + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gsl-2.5/siman/Makefile.am b/gsl-2.5/siman/Makefile.am new file mode 100644 index 00000000..71738939 --- /dev/null +++ b/gsl-2.5/siman/Makefile.am @@ -0,0 +1,21 @@ +## Process this file with automake to produce Makefile.in + +check_PROGRAMS = test +noinst_PROGRAMS = siman_tsp +noinst_LTLIBRARIES = libgslsiman.la + +TESTS = $(check_PROGRAMS) +EXTRA_DIST = siman_test_driver.sh + +test_SOURCES = test.c +test_LDADD = libgslsiman.la ../rng/libgslrng.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la + +siman_tsp_SOURCES = siman_tsp.c +siman_tsp_LDADD = libgslsiman.la ../rng/libgslrng.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../sys/libgslsys.la ../utils/libutils.la + +CLEANFILES = siman_test.out + +libgslsiman_la_SOURCES = siman.c +pkginclude_HEADERS = gsl_siman.h + +AM_CPPFLAGS = -I$(top_srcdir) diff --git a/gsl-2.5/siman/Makefile.in b/gsl-2.5/siman/Makefile.in new file mode 100644 index 00000000..0416e5f2 --- /dev/null +++ b/gsl-2.5/siman/Makefile.in @@ -0,0 +1,1053 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + + + +VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +check_PROGRAMS = test$(EXEEXT) +noinst_PROGRAMS = siman_tsp$(EXEEXT) +subdir = siman +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp \ + $(pkginclude_HEADERS) $(top_srcdir)/test-driver ChangeLog TODO +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +libgslsiman_la_LIBADD = +am_libgslsiman_la_OBJECTS = siman.lo +libgslsiman_la_OBJECTS = $(am_libgslsiman_la_OBJECTS) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +PROGRAMS = $(noinst_PROGRAMS) +am_siman_tsp_OBJECTS = siman_tsp.$(OBJEXT) +siman_tsp_OBJECTS = $(am_siman_tsp_OBJECTS) +siman_tsp_DEPENDENCIES = libgslsiman.la ../rng/libgslrng.la \ + ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la \ + ../sys/libgslsys.la ../utils/libutils.la +am_test_OBJECTS = test.$(OBJEXT) +test_OBJECTS = $(am_test_OBJECTS) +test_DEPENDENCIES = libgslsiman.la ../rng/libgslrng.la \ + ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la \ + ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libgslsiman_la_SOURCES) $(siman_tsp_SOURCES) \ + $(test_SOURCES) +DIST_SOURCES = $(libgslsiman_la_SOURCES) $(siman_tsp_SOURCES) \ + $(test_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(pkgincludedir)" +HEADERS = $(pkginclude_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = @EXEEXT@ .test +LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +GSLCBLAS_LDFLAGS = @GSLCBLAS_LDFLAGS@ +GSL_CFLAGS = @GSL_CFLAGS@ +GSL_LDFLAGS = @GSL_LDFLAGS@ +GSL_LIBADD = @GSL_LIBADD@ +GSL_LIBM = @GSL_LIBM@ +GSL_LIBS = @GSL_LIBS@ +GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ +GSL_LT_VERSION = @GSL_LT_VERSION@ +GSL_MAJOR_VERSION = @GSL_MAJOR_VERSION@ +GSL_MINOR_VERSION = @GSL_MINOR_VERSION@ +HAVE_AIX_IEEE_INTERFACE = @HAVE_AIX_IEEE_INTERFACE@ +HAVE_DARWIN86_IEEE_INTERFACE = @HAVE_DARWIN86_IEEE_INTERFACE@ +HAVE_DARWIN_IEEE_INTERFACE = @HAVE_DARWIN_IEEE_INTERFACE@ +HAVE_FREEBSD_IEEE_INTERFACE = @HAVE_FREEBSD_IEEE_INTERFACE@ +HAVE_GNUM68K_IEEE_INTERFACE = @HAVE_GNUM68K_IEEE_INTERFACE@ +HAVE_GNUPPC_IEEE_INTERFACE = @HAVE_GNUPPC_IEEE_INTERFACE@ +HAVE_GNUSPARC_IEEE_INTERFACE = @HAVE_GNUSPARC_IEEE_INTERFACE@ +HAVE_GNUX86_IEEE_INTERFACE = @HAVE_GNUX86_IEEE_INTERFACE@ +HAVE_HPUX11_IEEE_INTERFACE = @HAVE_HPUX11_IEEE_INTERFACE@ +HAVE_HPUX_IEEE_INTERFACE = @HAVE_HPUX_IEEE_INTERFACE@ +HAVE_IRIX_IEEE_INTERFACE = @HAVE_IRIX_IEEE_INTERFACE@ +HAVE_NETBSD_IEEE_INTERFACE = @HAVE_NETBSD_IEEE_INTERFACE@ +HAVE_OPENBSD_IEEE_INTERFACE = @HAVE_OPENBSD_IEEE_INTERFACE@ +HAVE_OS2EMX_IEEE_INTERFACE = @HAVE_OS2EMX_IEEE_INTERFACE@ +HAVE_SOLARIS_IEEE_INTERFACE = @HAVE_SOLARIS_IEEE_INTERFACE@ +HAVE_SUNOS4_IEEE_INTERFACE = @HAVE_SUNOS4_IEEE_INTERFACE@ +HAVE_TRU64_IEEE_INTERFACE = @HAVE_TRU64_IEEE_INTERFACE@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBM = @LIBM@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +noinst_LTLIBRARIES = libgslsiman.la +TESTS = $(check_PROGRAMS) +EXTRA_DIST = siman_test_driver.sh +test_SOURCES = test.c +test_LDADD = libgslsiman.la ../rng/libgslrng.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la +siman_tsp_SOURCES = siman_tsp.c +siman_tsp_LDADD = libgslsiman.la ../rng/libgslrng.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../sys/libgslsys.la ../utils/libutils.la +CLEANFILES = siman_test.out +libgslsiman_la_SOURCES = siman.c +pkginclude_HEADERS = gsl_siman.h +AM_CPPFLAGS = -I$(top_srcdir) +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu siman/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu siman/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libgslsiman.la: $(libgslsiman_la_OBJECTS) $(libgslsiman_la_DEPENDENCIES) $(EXTRA_libgslsiman_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(libgslsiman_la_OBJECTS) $(libgslsiman_la_LIBADD) $(LIBS) + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +clean-noinstPROGRAMS: + @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +siman_tsp$(EXEEXT): $(siman_tsp_OBJECTS) $(siman_tsp_DEPENDENCIES) $(EXTRA_siman_tsp_DEPENDENCIES) + @rm -f siman_tsp$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(siman_tsp_OBJECTS) $(siman_tsp_LDADD) $(LIBS) + +test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) $(EXTRA_test_DEPENDENCIES) + @rm -f test$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_OBJECTS) $(test_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/siman.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/siman_tsp.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test.Po@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-pkgincludeHEADERS: $(pkginclude_HEADERS) + @$(NORMAL_INSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \ + done + +uninstall-pkgincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + else \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_PROGRAMS) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +test.log: test$(EXEEXT) + @p='test$(EXEEXT)'; \ + b='test'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +@am__EXEEXT_TRUE@.test$(EXEEXT).log: +@am__EXEEXT_TRUE@ @p='$<'; \ +@am__EXEEXT_TRUE@ $(am__set_b); \ +@am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +@am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ +@am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +@am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-am +all-am: Makefile $(LTLIBRARIES) $(PROGRAMS) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(pkgincludedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES clean-noinstPROGRAMS mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-pkgincludeHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-pkgincludeHEADERS + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES clean-noinstPROGRAMS cscopelist-am \ + ctags ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-pkgincludeHEADERS install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am recheck tags tags-am uninstall \ + uninstall-am uninstall-pkgincludeHEADERS + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gsl-2.5/siman/TODO b/gsl-2.5/siman/TODO new file mode 100644 index 00000000..86ad467a --- /dev/null +++ b/gsl-2.5/siman/TODO @@ -0,0 +1,9 @@ +# -*- org -*- +#+CATEGORY: siman + +* Reorganize siman interfaces to allow iterative use. + +* Maybe the routines can be made to work with pointers instead of structs + so that only pointer manipulation is done by the siman algorithm and + there is no need for malloc. A call would look something like + siman(&start,&result, ...) diff --git a/gsl-2.5/siman/gsl_siman.h b/gsl-2.5/siman/gsl_siman.h new file mode 100644 index 00000000..a16f7c7c --- /dev/null +++ b/gsl-2.5/siman/gsl_siman.h @@ -0,0 +1,82 @@ +/* siman/gsl_siman.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Mark Galassi + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_SIMAN_H__ +#define __GSL_SIMAN_H__ +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +/* types for the function pointers passed to gsl_siman_solve */ + +typedef double (*gsl_siman_Efunc_t) (void *xp); +typedef void (*gsl_siman_step_t) (const gsl_rng *r, void *xp, double step_size); +typedef double (*gsl_siman_metric_t) (void *xp, void *yp); +typedef void (*gsl_siman_print_t) (void *xp); +typedef void (*gsl_siman_copy_t) (void *source, void *dest); +typedef void * (*gsl_siman_copy_construct_t) (void *xp); +typedef void (*gsl_siman_destroy_t) (void *xp); + +/* this structure contains all the information needed to structure the + search, beyond the energy function, the step function and the + initial guess. */ + +typedef struct { + int n_tries; /* how many points to try for each step */ + int iters_fixed_T; /* how many iterations at each temperature? */ + double step_size; /* max step size in the random walk */ + /* the following parameters are for the Boltzmann distribution */ + double k, t_initial, mu_t, t_min; +} gsl_siman_params_t; + +/* prototype for the workhorse function */ + +void gsl_siman_solve(const gsl_rng * r, + void *x0_p, gsl_siman_Efunc_t Ef, + gsl_siman_step_t take_step, + gsl_siman_metric_t distance, + gsl_siman_print_t print_position, + gsl_siman_copy_t copyfunc, + gsl_siman_copy_construct_t copy_constructor, + gsl_siman_destroy_t destructor, + size_t element_size, + gsl_siman_params_t params); + +void +gsl_siman_solve_many (const gsl_rng * r, void *x0_p, gsl_siman_Efunc_t Ef, + gsl_siman_step_t take_step, + gsl_siman_metric_t distance, + gsl_siman_print_t print_position, + size_t element_size, + gsl_siman_params_t params); + +__END_DECLS + +#endif /* __GSL_SIMAN_H__ */ diff --git a/gsl-2.5/siman/libgslsiman.la b/gsl-2.5/siman/libgslsiman.la new file mode 100644 index 00000000..93681b76 --- /dev/null +++ b/gsl-2.5/siman/libgslsiman.la @@ -0,0 +1,41 @@ +# libgslsiman.la - a libtool library file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='' + +# Names of this library. +library_names='' + +# The name of the static archive. +old_library='libgslsiman.a' + +# Linker flags that can not go in dependency_libs. +inherited_linker_flags='' + +# Libraries that this one depends upon. +dependency_libs=' -lm' + +# Names of additional weak libraries provided by this library +weak_library_names='' + +# Version information for libgslsiman. +current= +age= +revision= + +# Is this an already installed library? +installed=no + +# Should we warn about portability when linking against -modules? +shouldnotlink=no + +# Files to dlopen/dlpreopen +dlopen='' +dlpreopen='' + +# Directory that this library needs to be installed in: +libdir='' diff --git a/gsl-2.5/siman/siman.c b/gsl-2.5/siman/siman.c new file mode 100644 index 00000000..65b9177f --- /dev/null +++ b/gsl-2.5/siman/siman.c @@ -0,0 +1,273 @@ +/* siman/siman.c + * + * Copyright (C) 2007 Brian Gough + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Mark Galassi + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +static inline double +boltzmann(double E, double new_E, double T, gsl_siman_params_t *params) +{ + double x = -(new_E - E) / (params->k * T); + /* avoid underflow errors for large uphill steps */ + return (x < GSL_LOG_DBL_MIN) ? 0.0 : exp(x); +} + +static inline void +copy_state(void *src, void *dst, size_t size, gsl_siman_copy_t copyfunc) +{ + if (copyfunc) { + copyfunc(src, dst); + } else { + memcpy(dst, src, size); + } +} + +/* implementation of a basic simulated annealing algorithm */ + +void +gsl_siman_solve (const gsl_rng * r, void *x0_p, gsl_siman_Efunc_t Ef, + gsl_siman_step_t take_step, + gsl_siman_metric_t distance, + gsl_siman_print_t print_position, + gsl_siman_copy_t copyfunc, + gsl_siman_copy_construct_t copy_constructor, + gsl_siman_destroy_t destructor, + size_t element_size, + gsl_siman_params_t params) +{ + void *x, *new_x, *best_x; + double E, new_E, best_E; + int i; + double T, T_factor; + int n_evals = 1, n_iter = 0, n_accepts, n_rejects, n_eless; + + /* this function requires that either the dynamic functions (copy, + copy_constructor and destrcutor) are passed, or that an element + size is given */ + assert((copyfunc != NULL && copy_constructor != NULL && destructor != NULL) + || (element_size != 0)); + + distance = 0 ; /* This parameter is not currently used */ + E = Ef(x0_p); + + if (copyfunc) { + x = copy_constructor(x0_p); + new_x = copy_constructor(x0_p); + best_x = copy_constructor(x0_p); + } else { + x = (void *) malloc (element_size); + memcpy (x, x0_p, element_size); + new_x = (void *) malloc (element_size); + best_x = (void *) malloc (element_size); + memcpy (best_x, x0_p, element_size); + } + + best_E = E; + + T = params.t_initial; + T_factor = 1.0 / params.mu_t; + + if (print_position) { + printf ("#-iter #-evals temperature position energy\n"); + } + + while (1) { + + n_accepts = 0; + n_rejects = 0; + n_eless = 0; + + for (i = 0; i < params.iters_fixed_T; ++i) { + + copy_state(x, new_x, element_size, copyfunc); + + take_step (r, new_x, params.step_size); + new_E = Ef (new_x); + + if(new_E <= best_E){ + if (copyfunc) { + copyfunc(new_x,best_x); + } else { + memcpy (best_x, new_x, element_size); + } + best_E=new_E; + } + + ++n_evals; /* keep track of Ef() evaluations */ + /* now take the crucial step: see if the new point is accepted + or not, as determined by the boltzmann probability */ + if (new_E < E) { + + if (new_E < best_E) { + copy_state(new_x, best_x, element_size, copyfunc); + best_E = new_E; + } + + /* yay! take a step */ + copy_state(new_x, x, element_size, copyfunc); + E = new_E; + ++n_eless; + + } else if (gsl_rng_uniform(r) < boltzmann(E, new_E, T, ¶ms)) { + /* yay! take a step */ + copy_state(new_x, x, element_size, copyfunc); + E = new_E; + ++n_accepts; + + } else { + ++n_rejects; + } + } + + if (print_position) { + /* see if we need to print stuff as we go */ + /* printf("%5d %12g %5d %3d %3d %3d", n_iter, T, n_evals, */ + /* 100*n_eless/n_steps, 100*n_accepts/n_steps, */ + /* 100*n_rejects/n_steps); */ + printf ("%5d %7d %12g", n_iter, n_evals, T); + print_position (x); + printf (" %12g %12g\n", E, best_E); + } + + /* apply the cooling schedule to the temperature */ + /* FIXME: I should also introduce a cooling schedule for the iters */ + T *= T_factor; + ++n_iter; + if (T < params.t_min) { + break; + } + } + + /* at the end, copy the result onto the initial point, so we pass it + back to the caller */ + copy_state(best_x, x0_p, element_size, copyfunc); + + if (copyfunc) { + destructor(x); + destructor(new_x); + destructor(best_x); + } else { + free (x); + free (new_x); + free (best_x); + } +} + +/* implementation of a simulated annealing algorithm with many tries */ + +void +gsl_siman_solve_many (const gsl_rng * r, void *x0_p, gsl_siman_Efunc_t Ef, + gsl_siman_step_t take_step, + gsl_siman_metric_t distance, + gsl_siman_print_t print_position, + size_t element_size, + gsl_siman_params_t params) +{ + /* the new set of trial points, and their energies and probabilities */ + void *x, *new_x; + double *energies, *probs, *sum_probs; + double Ex; /* energy of the chosen point */ + double T, T_factor; /* the temperature and a step multiplier */ + int i; + double u; /* throw the die to choose a new "x" */ + int n_iter; + + if (print_position) { + printf ("#-iter temperature position"); + printf (" delta_pos energy\n"); + } + + x = (void *) malloc (params.n_tries * element_size); + new_x = (void *) malloc (params.n_tries * element_size); + energies = (double *) malloc (params.n_tries * sizeof (double)); + probs = (double *) malloc (params.n_tries * sizeof (double)); + sum_probs = (double *) malloc (params.n_tries * sizeof (double)); + + T = params.t_initial; + T_factor = 1.0 / params.mu_t; + + memcpy (x, x0_p, element_size); + + n_iter = 0; + while (1) + { + Ex = Ef (x); + for (i = 0; i < params.n_tries - 1; ++i) + { /* only go to N_TRIES-2 */ + /* center the new_x[] around x, then pass it to take_step() */ + sum_probs[i] = 0; + memcpy ((char *)new_x + i * element_size, x, element_size); + take_step (r, (char *)new_x + i * element_size, params.step_size); + energies[i] = Ef ((char *)new_x + i * element_size); + probs[i] = boltzmann(Ex, energies[i], T, ¶ms); + } + /* now add in the old value of "x", so it is a contendor */ + memcpy ((char *)new_x + (params.n_tries - 1) * element_size, x, element_size); + energies[params.n_tries - 1] = Ex; + probs[params.n_tries - 1] = boltzmann(Ex, energies[i], T, ¶ms); + + /* now throw biased die to see which new_x[i] we choose */ + sum_probs[0] = probs[0]; + for (i = 1; i < params.n_tries; ++i) + { + sum_probs[i] = sum_probs[i - 1] + probs[i]; + } + u = gsl_rng_uniform (r) * sum_probs[params.n_tries - 1]; + for (i = 0; i < params.n_tries; ++i) + { + if (u < sum_probs[i]) + { + memcpy (x, (char *) new_x + i * element_size, element_size); + break; + } + } + if (print_position) + { + printf ("%5d\t%12g\t", n_iter, T); + print_position (x); + printf ("\t%12g\t%12g\n", distance (x, x0_p), Ex); + } + T *= T_factor; + ++n_iter; + if (T < params.t_min) + { + break; + } + } + + /* now return the value via x0_p */ + memcpy (x0_p, x, element_size); + + /* printf("the result is: %g (E=%g)\n", x, Ex); */ + + free (x); + free (new_x); + free (energies); + free (probs); + free (sum_probs); +} diff --git a/gsl-2.5/siman/siman.lo b/gsl-2.5/siman/siman.lo new file mode 100644 index 00000000..a1f7838c --- /dev/null +++ b/gsl-2.5/siman/siman.lo @@ -0,0 +1,12 @@ +# siman.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/siman.o' + +# Name of the non-PIC object +non_pic_object='siman.o' + diff --git a/gsl-2.5/siman/siman_test_driver.sh b/gsl-2.5/siman/siman_test_driver.sh new file mode 100755 index 00000000..21b393cc --- /dev/null +++ b/gsl-2.5/siman/siman_test_driver.sh @@ -0,0 +1,22 @@ +#! /bin/sh + +# assume good result from tests; increment it if any test fails +EXIT_STATUS=0 + +for seed in "" 12345 ; +do +./siman_test > siman_test.out 2>&1 +SECOND_LAST_ENERGY=`tail -2 siman_test.out1 | head -1 | awk '{print $4}'` +LAST_ENERGY=`tail -1 siman_test.out1 | awk '{print $4}'` +# echo " " $SECOND_LAST_ENERGY $LAST_ENERGY +if [ $SECOND_LAST_ENERGY = $LAST_ENERGY ]; +then + echo -n "PASS: " +else + echo -n "FAIL: " + EXIT_STATUS=`expr $EXIT_STATUS + 1` +fi +echo "simulated annealing test (travelling salesman problem) seed=${seed:-default}" +done + +exit $EXIT_STATUS diff --git a/gsl-2.5/siman/siman_tsp b/gsl-2.5/siman/siman_tsp new file mode 100755 index 00000000..ac04a888 Binary files /dev/null and b/gsl-2.5/siman/siman_tsp differ diff --git a/gsl-2.5/siman/siman_tsp.c b/gsl-2.5/siman/siman_tsp.c new file mode 100644 index 00000000..7bd26c6e --- /dev/null +++ b/gsl-2.5/siman/siman_tsp.c @@ -0,0 +1,329 @@ +/* siman/siman_tsp.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Mark Galassi + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include +#include +#include + +/* set up parameters for this simulated annealing run */ + +#define N_TRIES 200 /* how many points do we try before stepping */ +#define ITERS_FIXED_T 2000 /* how many iterations for each T? */ +#define STEP_SIZE 1.0 /* max step size in random walk */ +#define K 1.0 /* Boltzmann constant */ +#define T_INITIAL 5000.0 /* initial temperature */ +#define MU_T 1.002 /* damping factor for temperature */ +#define T_MIN 5.0e-1 + +gsl_siman_params_t params = {N_TRIES, ITERS_FIXED_T, STEP_SIZE, + K, T_INITIAL, MU_T, T_MIN}; + +struct s_tsp_city { + const char * name; + double lat, longitude; /* coordinates */ +}; +typedef struct s_tsp_city Stsp_city; + +void prepare_distance_matrix(void); +void exhaustive_search(void); +void print_distance_matrix(void); +double city_distance(Stsp_city c1, Stsp_city c2); +double Etsp(void *xp); +double Mtsp(void *xp, void *yp); +void Stsp(const gsl_rng * r, void *xp, double step_size); +void Ptsp(void *xp); + +/* in this table, latitude and longitude are obtained from the US + Census Bureau, at http://www.census.gov/cgi-bin/gazetteer */ + +Stsp_city cities[] = {{"Santa Fe", 35.68, 105.95}, + {"Phoenix", 33.54, 112.07}, + {"Albuquerque", 35.12, 106.62}, + {"Clovis", 34.41, 103.20}, + {"Durango", 37.29, 107.87}, + {"Dallas", 32.79, 96.77}, + {"Tesuque", 35.77, 105.92}, + {"Grants", 35.15, 107.84}, + {"Los Alamos", 35.89, 106.28}, + {"Las Cruces", 32.34, 106.76}, + {"Cortez", 37.35, 108.58}, + {"Gallup", 35.52, 108.74}}; + +#define N_CITIES (sizeof(cities)/sizeof(Stsp_city)) + +double distance_matrix[N_CITIES][N_CITIES]; + +/* distance between two cities */ +double city_distance(Stsp_city c1, Stsp_city c2) +{ + const double earth_radius = 6375.000; /* 6000KM approximately */ + /* sin and cos of lat and long; must convert to radians */ + double sla1 = sin(c1.lat*M_PI/180), cla1 = cos(c1.lat*M_PI/180), + slo1 = sin(c1.longitude*M_PI/180), clo1 = cos(c1.longitude*M_PI/180); + double sla2 = sin(c2.lat*M_PI/180), cla2 = cos(c2.lat*M_PI/180), + slo2 = sin(c2.longitude*M_PI/180), clo2 = cos(c2.longitude*M_PI/180); + + double x1 = cla1*clo1; + double x2 = cla2*clo2; + + double y1 = cla1*slo1; + double y2 = cla2*slo2; + + double z1 = sla1; + double z2 = sla2; + + double dot_product = x1*x2 + y1*y2 + z1*z2; + + double angle = acos(dot_product); + + /* distance is the angle (in radians) times the earth radius */ + return angle*earth_radius; +} + +/* energy for the travelling salesman problem */ +double Etsp(void *xp) +{ + /* an array of N_CITIES integers describing the order */ + int *route = (int *) xp; + double E = 0; + unsigned int i; + + for (i = 0; i < N_CITIES; ++i) { + /* use the distance_matrix to optimize this calculation; it had + better be allocated!! */ + E += distance_matrix[route[i]][route[(i + 1) % N_CITIES]]; + } + + return E; +} + +double Mtsp(void *xp, void *yp) +{ + int *route1 = (int *) xp, *route2 = (int *) yp; + double distance = 0; + unsigned int i; + + for (i = 0; i < N_CITIES; ++i) { + distance += ((route1[i] == route2[i]) ? 0 : 1); + } + + return distance; +} + +/* take a step through the TSP space */ +void Stsp(const gsl_rng * r, void *xp, double step_size) +{ + int x1, x2, dummy; + int *route = (int *) xp; + + step_size = 0 ; /* prevent warnings about unused parameter */ + + /* pick the two cities to swap in the matrix; we leave the first + city fixed */ + x1 = (gsl_rng_get (r) % (N_CITIES-1)) + 1; + do { + x2 = (gsl_rng_get (r) % (N_CITIES-1)) + 1; + } while (x2 == x1); + + dummy = route[x1]; + route[x1] = route[x2]; + route[x2] = dummy; +} + +void Ptsp(void *xp) +{ + unsigned int i; + int *route = (int *) xp; + printf(" ["); + for (i = 0; i < N_CITIES; ++i) { + printf(" %d ", route[i]); + } + printf("] "); +} + +int main(void) +{ + int x_initial[N_CITIES]; + unsigned int i; + + const gsl_rng * r = gsl_rng_alloc (gsl_rng_env_setup()) ; + + gsl_ieee_env_setup (); + + prepare_distance_matrix(); + + /* set up a trivial initial route */ + printf("# initial order of cities:\n"); + for (i = 0; i < N_CITIES; ++i) { + printf("# \"%s\"\n", cities[i].name); + x_initial[i] = i; + } + + printf("# distance matrix is:\n"); + print_distance_matrix(); + + printf("# initial coordinates of cities (longitude and latitude)\n"); + /* this can be plotted with */ + /* ./siman_tsp > hhh ; grep city_coord hhh | awk '{print $2 " " $3}' | xyplot -ps -d "xy" > c.eps */ + for (i = 0; i < N_CITIES+1; ++i) { + printf("###initial_city_coord: %g %g \"%s\"\n", + -cities[x_initial[i % N_CITIES]].longitude, + cities[x_initial[i % N_CITIES]].lat, + cities[x_initial[i % N_CITIES]].name); + } + +/* exhaustive_search(); */ + + gsl_siman_solve(r, x_initial, Etsp, Stsp, Mtsp, Ptsp, NULL, NULL, NULL, + N_CITIES*sizeof(int), params); + + printf("# final order of cities:\n"); + for (i = 0; i < N_CITIES; ++i) { + printf("# \"%s\"\n", cities[x_initial[i]].name); + } + + printf("# final coordinates of cities (longitude and latitude)\n"); + /* this can be plotted with */ + /* ./siman_tsp > hhh ; grep city_coord hhh | awk '{print $2 " " $3}' | xyplot -ps -d "xy" > c.eps */ + for (i = 0; i < N_CITIES+1; ++i) { + printf("###final_city_coord: %g %g %s\n", + -cities[x_initial[i % N_CITIES]].longitude, + cities[x_initial[i % N_CITIES]].lat, + cities[x_initial[i % N_CITIES]].name); + } + + printf("# "); + fflush(stdout); +#if 0 + system("date"); +#endif /* 0 */ + fflush(stdout); + + return 0; +} + +void prepare_distance_matrix() +{ + unsigned int i, j; + double dist; + + for (i = 0; i < N_CITIES; ++i) { + for (j = 0; j < N_CITIES; ++j) { + if (i == j) { + dist = 0; + } else { + dist = city_distance(cities[i], cities[j]); + } + distance_matrix[i][j] = dist; + } + } +} + +void print_distance_matrix() +{ + unsigned int i, j; + + for (i = 0; i < N_CITIES; ++i) { + printf("# "); + for (j = 0; j < N_CITIES; ++j) { + printf("%15.8f ", distance_matrix[i][j]); + } + printf("\n"); + } +} + +/* [only works for 12] search the entire space for solutions */ +static double best_E = 1.0e100, second_E = 1.0e100, third_E = 1.0e100; +static int best_route[N_CITIES]; +static int second_route[N_CITIES]; +static int third_route[N_CITIES]; +static void do_all_perms(int *route, int n); + +void exhaustive_search() +{ + static int initial_route[N_CITIES] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}; + printf("\n# "); + fflush(stdout); +#if 0 + system("date"); +#endif + fflush(stdout); + do_all_perms(initial_route, 1); + printf("\n# "); + fflush(stdout); +#if 0 + system("date"); +#endif /* 0 */ + fflush(stdout); + + printf("# exhaustive best route: "); + Ptsp(best_route); + printf("\n# its energy is: %g\n", best_E); + + printf("# exhaustive second_best route: "); + Ptsp(second_route); + printf("\n# its energy is: %g\n", second_E); + + printf("# exhaustive third_best route: "); + Ptsp(third_route); + printf("\n# its energy is: %g\n", third_E); +} + +/* James Theiler's recursive algorithm for generating all routes */ +static void do_all_perms(int *route, int n) +{ + if (n == (N_CITIES-1)) { + /* do it! calculate the energy/cost for that route */ + double E; + E = Etsp(route); /* TSP energy function */ + /* now save the best 3 energies and routes */ + if (E < best_E) { + third_E = second_E; + memcpy(third_route, second_route, N_CITIES*sizeof(*route)); + second_E = best_E; + memcpy(second_route, best_route, N_CITIES*sizeof(*route)); + best_E = E; + memcpy(best_route, route, N_CITIES*sizeof(*route)); + } else if (E < second_E) { + third_E = second_E; + memcpy(third_route, second_route, N_CITIES*sizeof(*route)); + second_E = E; + memcpy(second_route, route, N_CITIES*sizeof(*route)); + } else if (E < third_E) { + third_E = E; + memcpy(route, third_route, N_CITIES*sizeof(*route)); + } + } else { + int new_route[N_CITIES]; + unsigned int j; + int swap_tmp; + memcpy(new_route, route, N_CITIES*sizeof(*route)); + for (j = n; j < N_CITIES; ++j) { + swap_tmp = new_route[j]; + new_route[j] = new_route[n]; + new_route[n] = swap_tmp; + do_all_perms(new_route, n+1); + } + } +} diff --git a/gsl-2.5/siman/test b/gsl-2.5/siman/test new file mode 100755 index 00000000..8e20ab42 Binary files /dev/null and b/gsl-2.5/siman/test differ diff --git a/gsl-2.5/siman/test-suite.log b/gsl-2.5/siman/test-suite.log new file mode 100644 index 00000000..aa06e3d2 --- /dev/null +++ b/gsl-2.5/siman/test-suite.log @@ -0,0 +1,14 @@ +=================================== + gsl 2.5: siman/test-suite.log +=================================== + +# TOTAL: 1 +# PASS: 1 +# SKIP: 0 +# XFAIL: 0 +# FAIL: 0 +# XPASS: 0 +# ERROR: 0 + +.. contents:: :depth: 2 + diff --git a/gsl-2.5/siman/test.c b/gsl-2.5/siman/test.c new file mode 100644 index 00000000..e7c5e02a --- /dev/null +++ b/gsl-2.5/siman/test.c @@ -0,0 +1,162 @@ +/* siman/test.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Mark Galassi + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/* set up parameters for this simulated annealing run */ +#define N_TRIES 200 /* how many points do we try before stepping */ +#define ITERS_FIXED_T 1000 /* how many iterations for each T? */ +#define STEP_SIZE 1.0 /* max step size in random walk */ +#define K 1.0 /* Boltzmann constant */ +#define T_INITIAL 0.008 /* initial temperature */ +#define MU_T 1.003 /* damping factor for temperature */ +#define T_MIN 2.0e-6 + +gsl_siman_params_t params = {N_TRIES, ITERS_FIXED_T, STEP_SIZE, + K, T_INITIAL, MU_T, T_MIN}; + +double square (double x) ; +double square (double x) { return x * x ; } + +double E1(void *xp); +double M1(void *xp, void *yp); +void S1(const gsl_rng * r, void *xp, double step_size); +void P1(void *xp); + +/* now some functions to test in one dimension */ +double E1(void *xp) +{ + double x = * ((double *) xp); + + return exp(-square(x-1))*sin(8*x) - exp(-square(x-1000))*0.89; +} + +double M1(void *xp, void *yp) +{ + double x = *((double *) xp); + double y = *((double *) yp); + + return fabs(x - y); +} + +void S1(const gsl_rng * r, void *xp, double step_size) +{ + double old_x = *((double *) xp); + double new_x; + + new_x = gsl_rng_uniform(r)*2*step_size - step_size + old_x; + + memcpy(xp, &new_x, sizeof(new_x)); +} + +void P1(void *xp) +{ + printf(" %12g ", *((double *) xp)); +} + +int main(void) +{ + double x_min = 1.36312999455315182 ; + double x ; + + gsl_rng * r = gsl_rng_alloc (gsl_rng_env_setup()) ; + + gsl_ieee_env_setup (); + + /* The function tested here has multiple mimima. + The global minimum is at x = 1.36312999, (f = -0.87287) + There is a local minimum at x = 0.60146196, (f = -0.84893) */ + + x = -10.0 ; + gsl_siman_solve(r, &x, E1, S1, M1, NULL, NULL, NULL, NULL, + sizeof(double), params); + gsl_test_rel(x, x_min, 1e-3, "f(x)= exp(-(x-1)^2) sin(8x), x0=-10") ; + + x = +10.0 ; + gsl_siman_solve(r, &x, E1, S1, M1, NULL, NULL, NULL, NULL, + sizeof(double), params); + gsl_test_rel(x, x_min, 1e-3, "f(x)= exp(-(x-1)^2) sin(8x), x0=10") ; + + /* Start at the false minimum */ + + x = +0.6 ; + gsl_siman_solve(r, &x, E1, S1, M1, NULL, NULL, NULL, NULL, + sizeof(double), params); + gsl_test_rel(x, x_min, 1e-3, "f(x)= exp(-(x-1)^2) sin(8x), x0=0.6") ; + + x = +0.5 ; + gsl_siman_solve(r, &x, E1, S1, M1, NULL, NULL, NULL, NULL, + sizeof(double), params); + gsl_test_rel(x, x_min, 1e-3, "f(x)= exp(-(x-1)^2) sin(8x), x0=0.5") ; + + x = +0.4 ; + gsl_siman_solve(r, &x, E1, S1, M1, NULL, NULL, NULL, NULL, + sizeof(double), params); + gsl_test_rel(x, x_min, 1e-3, "f(x)= exp(-(x-1)^2) sin(8x), x0=0.4") ; + + gsl_rng_free(r); + exit (gsl_test_summary ()); + +#ifdef JUNK + x0.D1 = 12.0; + printf("#one dimensional problem, x0 = %f\n", x0.D1); + gsl_siman_Usolve(r, &x0, test_E_1D, test_step_1D, distance_1D, + print_pos_1D, params); + + + x0.D2[0] = 12.0; + x0.D2[1] = 5.5; + printf("#two dimensional problem, (x0,y0) = (%f,%f)\n", + x0.D2[0], x0.D2[1]); + gsl_siman_Usolve(r, &x0, test_E_2D, test_step_2D, distance_2D, + print_pos_2D, params); + + x0.D3[0] = 12.2; + x0.D3[1] = 5.5; + x0.D3[2] = -15.5; + printf("#three dimensional problem, (x0,y0,z0) = (%f,%f,%f)\n", + x0.D3[0], x0.D3[1], x0.D3[2]); + gsl_siman_Usolve(r, &x0, test_E_3D, test_step_3D, distance_3D, + print_pos_3D, params); + + x0.D2[0] = 12.2; + x0.D2[1] = 5.5; + + gsl_siman_solve(r, &x0, test_E_2D, test_step_2D, distance_2D, print_pos_2D, params); + + x0.D3[0] = 12.2; + x0.D3[1] = 5.5; + x0.D3[2] = -15.5; + + gsl_siman_solve(r, &x0, test_E_3D, test_step_3D, distance_3D, print_pos_3D, params); + + return 0; +#endif +} + + + diff --git a/gsl-2.5/siman/test.log b/gsl-2.5/siman/test.log new file mode 100644 index 00000000..d168cec4 --- /dev/null +++ b/gsl-2.5/siman/test.log @@ -0,0 +1 @@ +Completed [5/5] diff --git a/gsl-2.5/siman/test.trs b/gsl-2.5/siman/test.trs new file mode 100644 index 00000000..3f0f396c --- /dev/null +++ b/gsl-2.5/siman/test.trs @@ -0,0 +1,4 @@ +:test-result: PASS +:global-test-result: PASS +:recheck: no +:copy-in-global-log: no diff --git a/gsl-2.5/sort/.deps/sort.Plo b/gsl-2.5/sort/.deps/sort.Plo new file mode 100644 index 00000000..9eaef2a9 --- /dev/null +++ b/gsl-2.5/sort/.deps/sort.Plo @@ -0,0 +1,117 @@ +sort.lo: sort.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_heapsort.h \ + ../gsl/gsl_permutation.h ../gsl/gsl_types.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_inline.h ../gsl/gsl_check_range.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_heapsort.h: + +../gsl/gsl_permutation.h: + +../gsl/gsl_types.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_check_range.h: diff --git a/gsl-2.5/sort/.deps/sortind.Plo b/gsl-2.5/sort/.deps/sortind.Plo new file mode 100644 index 00000000..5c4692fc --- /dev/null +++ b/gsl-2.5/sort/.deps/sortind.Plo @@ -0,0 +1,117 @@ +sortind.lo: sortind.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_heapsort.h \ + ../gsl/gsl_permutation.h ../gsl/gsl_types.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_inline.h ../gsl/gsl_check_range.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_heapsort.h: + +../gsl/gsl_permutation.h: + +../gsl/gsl_types.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_check_range.h: diff --git a/gsl-2.5/sort/.deps/sortvec.Plo b/gsl-2.5/sort/.deps/sortvec.Plo new file mode 100644 index 00000000..9dab8a29 --- /dev/null +++ b/gsl-2.5/sort/.deps/sortvec.Plo @@ -0,0 +1,256 @@ +sortvec.lo: sortvec.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_errno.h /usr/include/stdio.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_types.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_complex.h \ + ../gsl/gsl_check_range.h ../gsl/gsl_vector_long_double.h \ + ../gsl/gsl_inline.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_sort.h ../gsl/gsl_sort_long_double.h \ + ../gsl/gsl_permutation.h ../gsl/gsl_sort_double.h \ + ../gsl/gsl_sort_float.h ../gsl/gsl_sort_ulong.h ../gsl/gsl_sort_long.h \ + ../gsl/gsl_sort_uint.h ../gsl/gsl_sort_int.h ../gsl/gsl_sort_ushort.h \ + ../gsl/gsl_sort_short.h ../gsl/gsl_sort_uchar.h ../gsl/gsl_sort_char.h \ + ../gsl/gsl_sort_vector.h ../gsl/gsl_sort_vector_long_double.h \ + ../gsl/gsl_sort_vector_double.h ../gsl/gsl_sort_vector_float.h \ + ../gsl/gsl_sort_vector_ulong.h ../gsl/gsl_sort_vector_long.h \ + ../gsl/gsl_sort_vector_uint.h ../gsl/gsl_sort_vector_int.h \ + ../gsl/gsl_sort_vector_ushort.h ../gsl/gsl_sort_vector_short.h \ + ../gsl/gsl_sort_vector_uchar.h ../gsl/gsl_sort_vector_char.h \ + ../templates_on.h sortvec_source.c ../templates_off.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_sort.h: + +../gsl/gsl_sort_long_double.h: + +../gsl/gsl_permutation.h: + +../gsl/gsl_sort_double.h: + +../gsl/gsl_sort_float.h: + +../gsl/gsl_sort_ulong.h: + +../gsl/gsl_sort_long.h: + +../gsl/gsl_sort_uint.h: + +../gsl/gsl_sort_int.h: + +../gsl/gsl_sort_ushort.h: + +../gsl/gsl_sort_short.h: + +../gsl/gsl_sort_uchar.h: + +../gsl/gsl_sort_char.h: + +../gsl/gsl_sort_vector.h: + +../gsl/gsl_sort_vector_long_double.h: + +../gsl/gsl_sort_vector_double.h: + +../gsl/gsl_sort_vector_float.h: + +../gsl/gsl_sort_vector_ulong.h: + +../gsl/gsl_sort_vector_long.h: + +../gsl/gsl_sort_vector_uint.h: + +../gsl/gsl_sort_vector_int.h: + +../gsl/gsl_sort_vector_ushort.h: + +../gsl/gsl_sort_vector_short.h: + +../gsl/gsl_sort_vector_uchar.h: + +../gsl/gsl_sort_vector_char.h: + +../templates_on.h: + +sortvec_source.c: + +../templates_off.h: diff --git a/gsl-2.5/sort/.deps/sortvecind.Plo b/gsl-2.5/sort/.deps/sortvecind.Plo new file mode 100644 index 00000000..f267eacf --- /dev/null +++ b/gsl-2.5/sort/.deps/sortvecind.Plo @@ -0,0 +1,256 @@ +sortvecind.lo: sortvecind.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_errno.h /usr/include/stdio.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_types.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_complex.h \ + ../gsl/gsl_check_range.h ../gsl/gsl_vector_long_double.h \ + ../gsl/gsl_inline.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_sort.h ../gsl/gsl_sort_long_double.h \ + ../gsl/gsl_permutation.h ../gsl/gsl_sort_double.h \ + ../gsl/gsl_sort_float.h ../gsl/gsl_sort_ulong.h ../gsl/gsl_sort_long.h \ + ../gsl/gsl_sort_uint.h ../gsl/gsl_sort_int.h ../gsl/gsl_sort_ushort.h \ + ../gsl/gsl_sort_short.h ../gsl/gsl_sort_uchar.h ../gsl/gsl_sort_char.h \ + ../gsl/gsl_sort_vector.h ../gsl/gsl_sort_vector_long_double.h \ + ../gsl/gsl_sort_vector_double.h ../gsl/gsl_sort_vector_float.h \ + ../gsl/gsl_sort_vector_ulong.h ../gsl/gsl_sort_vector_long.h \ + ../gsl/gsl_sort_vector_uint.h ../gsl/gsl_sort_vector_int.h \ + ../gsl/gsl_sort_vector_ushort.h ../gsl/gsl_sort_vector_short.h \ + ../gsl/gsl_sort_vector_uchar.h ../gsl/gsl_sort_vector_char.h \ + ../templates_on.h sortvecind_source.c ../templates_off.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_sort.h: + +../gsl/gsl_sort_long_double.h: + +../gsl/gsl_permutation.h: + +../gsl/gsl_sort_double.h: + +../gsl/gsl_sort_float.h: + +../gsl/gsl_sort_ulong.h: + +../gsl/gsl_sort_long.h: + +../gsl/gsl_sort_uint.h: + +../gsl/gsl_sort_int.h: + +../gsl/gsl_sort_ushort.h: + +../gsl/gsl_sort_short.h: + +../gsl/gsl_sort_uchar.h: + +../gsl/gsl_sort_char.h: + +../gsl/gsl_sort_vector.h: + +../gsl/gsl_sort_vector_long_double.h: + +../gsl/gsl_sort_vector_double.h: + +../gsl/gsl_sort_vector_float.h: + +../gsl/gsl_sort_vector_ulong.h: + +../gsl/gsl_sort_vector_long.h: + +../gsl/gsl_sort_vector_uint.h: + +../gsl/gsl_sort_vector_int.h: + +../gsl/gsl_sort_vector_ushort.h: + +../gsl/gsl_sort_vector_short.h: + +../gsl/gsl_sort_vector_uchar.h: + +../gsl/gsl_sort_vector_char.h: + +../templates_on.h: + +sortvecind_source.c: + +../templates_off.h: diff --git a/gsl-2.5/sort/.deps/subset.Plo b/gsl-2.5/sort/.deps/subset.Plo new file mode 100644 index 00000000..b982cf47 --- /dev/null +++ b/gsl-2.5/sort/.deps/subset.Plo @@ -0,0 +1,256 @@ +subset.lo: subset.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_errno.h /usr/include/stdio.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_types.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_complex.h \ + ../gsl/gsl_check_range.h ../gsl/gsl_vector_long_double.h \ + ../gsl/gsl_inline.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_sort.h ../gsl/gsl_sort_long_double.h \ + ../gsl/gsl_permutation.h ../gsl/gsl_sort_double.h \ + ../gsl/gsl_sort_float.h ../gsl/gsl_sort_ulong.h ../gsl/gsl_sort_long.h \ + ../gsl/gsl_sort_uint.h ../gsl/gsl_sort_int.h ../gsl/gsl_sort_ushort.h \ + ../gsl/gsl_sort_short.h ../gsl/gsl_sort_uchar.h ../gsl/gsl_sort_char.h \ + ../gsl/gsl_sort_vector.h ../gsl/gsl_sort_vector_long_double.h \ + ../gsl/gsl_sort_vector_double.h ../gsl/gsl_sort_vector_float.h \ + ../gsl/gsl_sort_vector_ulong.h ../gsl/gsl_sort_vector_long.h \ + ../gsl/gsl_sort_vector_uint.h ../gsl/gsl_sort_vector_int.h \ + ../gsl/gsl_sort_vector_ushort.h ../gsl/gsl_sort_vector_short.h \ + ../gsl/gsl_sort_vector_uchar.h ../gsl/gsl_sort_vector_char.h \ + ../templates_on.h subset_source.c ../templates_off.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_sort.h: + +../gsl/gsl_sort_long_double.h: + +../gsl/gsl_permutation.h: + +../gsl/gsl_sort_double.h: + +../gsl/gsl_sort_float.h: + +../gsl/gsl_sort_ulong.h: + +../gsl/gsl_sort_long.h: + +../gsl/gsl_sort_uint.h: + +../gsl/gsl_sort_int.h: + +../gsl/gsl_sort_ushort.h: + +../gsl/gsl_sort_short.h: + +../gsl/gsl_sort_uchar.h: + +../gsl/gsl_sort_char.h: + +../gsl/gsl_sort_vector.h: + +../gsl/gsl_sort_vector_long_double.h: + +../gsl/gsl_sort_vector_double.h: + +../gsl/gsl_sort_vector_float.h: + +../gsl/gsl_sort_vector_ulong.h: + +../gsl/gsl_sort_vector_long.h: + +../gsl/gsl_sort_vector_uint.h: + +../gsl/gsl_sort_vector_int.h: + +../gsl/gsl_sort_vector_ushort.h: + +../gsl/gsl_sort_vector_short.h: + +../gsl/gsl_sort_vector_uchar.h: + +../gsl/gsl_sort_vector_char.h: + +../templates_on.h: + +subset_source.c: + +../templates_off.h: diff --git a/gsl-2.5/sort/.deps/subsetind.Plo b/gsl-2.5/sort/.deps/subsetind.Plo new file mode 100644 index 00000000..f02924cd --- /dev/null +++ b/gsl-2.5/sort/.deps/subsetind.Plo @@ -0,0 +1,256 @@ +subsetind.lo: subsetind.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_errno.h /usr/include/stdio.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_types.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_complex.h \ + ../gsl/gsl_check_range.h ../gsl/gsl_vector_long_double.h \ + ../gsl/gsl_inline.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_sort.h ../gsl/gsl_sort_long_double.h \ + ../gsl/gsl_permutation.h ../gsl/gsl_sort_double.h \ + ../gsl/gsl_sort_float.h ../gsl/gsl_sort_ulong.h ../gsl/gsl_sort_long.h \ + ../gsl/gsl_sort_uint.h ../gsl/gsl_sort_int.h ../gsl/gsl_sort_ushort.h \ + ../gsl/gsl_sort_short.h ../gsl/gsl_sort_uchar.h ../gsl/gsl_sort_char.h \ + ../gsl/gsl_sort_vector.h ../gsl/gsl_sort_vector_long_double.h \ + ../gsl/gsl_sort_vector_double.h ../gsl/gsl_sort_vector_float.h \ + ../gsl/gsl_sort_vector_ulong.h ../gsl/gsl_sort_vector_long.h \ + ../gsl/gsl_sort_vector_uint.h ../gsl/gsl_sort_vector_int.h \ + ../gsl/gsl_sort_vector_ushort.h ../gsl/gsl_sort_vector_short.h \ + ../gsl/gsl_sort_vector_uchar.h ../gsl/gsl_sort_vector_char.h \ + ../templates_on.h subsetind_source.c ../templates_off.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_sort.h: + +../gsl/gsl_sort_long_double.h: + +../gsl/gsl_permutation.h: + +../gsl/gsl_sort_double.h: + +../gsl/gsl_sort_float.h: + +../gsl/gsl_sort_ulong.h: + +../gsl/gsl_sort_long.h: + +../gsl/gsl_sort_uint.h: + +../gsl/gsl_sort_int.h: + +../gsl/gsl_sort_ushort.h: + +../gsl/gsl_sort_short.h: + +../gsl/gsl_sort_uchar.h: + +../gsl/gsl_sort_char.h: + +../gsl/gsl_sort_vector.h: + +../gsl/gsl_sort_vector_long_double.h: + +../gsl/gsl_sort_vector_double.h: + +../gsl/gsl_sort_vector_float.h: + +../gsl/gsl_sort_vector_ulong.h: + +../gsl/gsl_sort_vector_long.h: + +../gsl/gsl_sort_vector_uint.h: + +../gsl/gsl_sort_vector_int.h: + +../gsl/gsl_sort_vector_ushort.h: + +../gsl/gsl_sort_vector_short.h: + +../gsl/gsl_sort_vector_uchar.h: + +../gsl/gsl_sort_vector_char.h: + +../templates_on.h: + +subsetind_source.c: + +../templates_off.h: diff --git a/gsl-2.5/sort/.deps/test.Po b/gsl-2.5/sort/.deps/test.Po new file mode 100644 index 00000000..bf80af05 --- /dev/null +++ b/gsl-2.5/sort/.deps/test.Po @@ -0,0 +1,304 @@ +test.o: test.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdio.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_test.h ../gsl/gsl_heapsort.h ../gsl/gsl_permutation.h \ + ../gsl/gsl_check_range.h ../gsl/gsl_sort.h ../gsl/gsl_sort_long_double.h \ + ../gsl/gsl_sort_double.h ../gsl/gsl_sort_float.h ../gsl/gsl_sort_ulong.h \ + ../gsl/gsl_sort_long.h ../gsl/gsl_sort_uint.h ../gsl/gsl_sort_int.h \ + ../gsl/gsl_sort_ushort.h ../gsl/gsl_sort_short.h ../gsl/gsl_sort_uchar.h \ + ../gsl/gsl_sort_char.h ../gsl/gsl_sort_vector.h \ + ../gsl/gsl_sort_vector_long_double.h ../gsl/gsl_vector_long_double.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_sort_vector_double.h \ + ../gsl/gsl_vector_double.h ../gsl/gsl_block_double.h \ + ../gsl/gsl_sort_vector_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_sort_vector_ulong.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_sort_vector_long.h ../gsl/gsl_vector_long.h \ + ../gsl/gsl_block_long.h ../gsl/gsl_sort_vector_uint.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h \ + ../gsl/gsl_sort_vector_int.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_sort_vector_ushort.h \ + ../gsl/gsl_vector_ushort.h ../gsl/gsl_block_ushort.h \ + ../gsl/gsl_sort_vector_short.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_sort_vector_uchar.h \ + ../gsl/gsl_vector_uchar.h ../gsl/gsl_block_uchar.h \ + ../gsl/gsl_sort_vector_char.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_ieee_utils.h test_heapsort.c \ + ../templates_on.h test_source.c ../templates_off.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_test.h: + +../gsl/gsl_heapsort.h: + +../gsl/gsl_permutation.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_sort.h: + +../gsl/gsl_sort_long_double.h: + +../gsl/gsl_sort_double.h: + +../gsl/gsl_sort_float.h: + +../gsl/gsl_sort_ulong.h: + +../gsl/gsl_sort_long.h: + +../gsl/gsl_sort_uint.h: + +../gsl/gsl_sort_int.h: + +../gsl/gsl_sort_ushort.h: + +../gsl/gsl_sort_short.h: + +../gsl/gsl_sort_uchar.h: + +../gsl/gsl_sort_char.h: + +../gsl/gsl_sort_vector.h: + +../gsl/gsl_sort_vector_long_double.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_sort_vector_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_sort_vector_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_sort_vector_ulong.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_sort_vector_long.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_sort_vector_uint.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_sort_vector_int.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_sort_vector_ushort.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_sort_vector_short.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_sort_vector_uchar.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_sort_vector_char.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_ieee_utils.h: + +test_heapsort.c: + +../templates_on.h: + +test_source.c: + +../templates_off.h: diff --git a/gsl-2.5/sort/.libs/libgslsort.la b/gsl-2.5/sort/.libs/libgslsort.la new file mode 120000 index 00000000..4bc80efe --- /dev/null +++ b/gsl-2.5/sort/.libs/libgslsort.la @@ -0,0 +1 @@ +../libgslsort.la \ No newline at end of file diff --git a/gsl-2.5/sort/ChangeLog b/gsl-2.5/sort/ChangeLog new file mode 100644 index 00000000..8fd17441 --- /dev/null +++ b/gsl-2.5/sort/ChangeLog @@ -0,0 +1,66 @@ +2008-07-03 Brian Gough + + * Makefile.am (INCLUDES): use top_srcdir instead of top_builddir + +2008-02-09 Brian Gough + + * test_source.c: prevent signed overflow in tests + +2005-08-31 Brian Gough + + * test_source.c: free index memory as well + +2005-04-08 Brian Gough + + * sortvecind_source.c sortvec_source.c: write tests in such a way + as to avoid an infinite loop if nan, by always comparing in the + same direction (note that nan < x and nan > x are both false) + +Tue Jun 26 12:06:58 2001 Brian Gough + + * subset_source. subsetind_source.c: make prototypes match header + file + +Sun Jan 21 18:36:04 2001 Brian Gough + + * subset.c, subsetind.c: added functions for selecting subsets + (k-th smallest or largest values) + +Mon Mar 13 13:57:33 2000 Brian Gough + + * sortind.c (gsl_heapsort_index): changed to use an array of + size_t's directly instead of gsl_permutation + +Mon Feb 28 20:30:06 2000 Brian Gough + + * renamed gsl_sort to gsl_heapsort, since this is more meaningful + and gsl_sort, gsl_sort_float, ... is now used for sorting of + arrays. + + * added support for sorting of arrays, without going through a + gsl_vector object (gsl_sort_vector is now implemented in terms of + these functions) + +Sat Feb 26 14:47:36 2000 Brian Gough + + * added support for indirect sorting of objects + + * fixed bug in indirect sorting from use of BASE type instead of + size_t for index. + + * reorganized directory + +Fri Feb 25 19:30:08 2000 Brian Gough + + * sortind_source.c: changed return type of indirect sort to int, + to allow error return code in case where permutation and vector + sizes do not match + +Sat Feb 19 12:18:28 2000 Brian Gough + + * sortind_source.c: added indirect sorting + +Fri Feb 18 10:48:24 2000 Brian Gough + + * initial GPL sources from Thomas Walter + diff --git a/gsl-2.5/sort/Makefile b/gsl-2.5/sort/Makefile new file mode 100644 index 00000000..bc94252b --- /dev/null +++ b/gsl-2.5/sort/Makefile @@ -0,0 +1,1033 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# sort/Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + + + + +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/gsl +pkgincludedir = $(includedir)/gsl +pkglibdir = $(libdir)/gsl +pkglibexecdir = $(libexecdir)/gsl +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = x86_64-unknown-linux-gnu +host_triplet = x86_64-unknown-linux-gnu +check_PROGRAMS = test$(EXEEXT) +subdir = sort +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp \ + $(noinst_HEADERS) $(pkginclude_HEADERS) \ + $(top_srcdir)/test-driver ChangeLog TODO +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +libgslsort_la_LIBADD = +am_libgslsort_la_OBJECTS = sort.lo sortind.lo sortvec.lo sortvecind.lo \ + subset.lo subsetind.lo +libgslsort_la_OBJECTS = $(am_libgslsort_la_OBJECTS) +AM_V_lt = $(am__v_lt_$(V)) +am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) +am__v_lt_0 = --silent +am__v_lt_1 = +am_test_OBJECTS = test.$(OBJEXT) +test_OBJECTS = $(am_test_OBJECTS) +test_DEPENDENCIES = libgslsort.la ../permutation/libgslpermutation.la \ + ../vector/libgslvector.la ../block/libgslblock.la \ + ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la \ + ../test/libgsltest.la ../sys/libgslsys.la +AM_V_P = $(am__v_P_$(V)) +am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY)) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_$(V)) +am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_$(V)) +am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I. -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_$(V)) +am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_$(V)) +am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libgslsort_la_SOURCES) $(test_SOURCES) +DIST_SOURCES = $(libgslsort_la_SOURCES) $(test_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(pkgincludedir)" +HEADERS = $(noinst_HEADERS) $(pkginclude_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = .test +LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing aclocal-1.13 +AMTAR = $${TAR-tar} +AM_DEFAULT_VERBOSITY = 1 +AR = ar +AS = as +AUTOCONF = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing autoconf +AUTOHEADER = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing autoheader +AUTOMAKE = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing automake-1.13 +AWK = gawk +CC = gcc +CCDEPMODE = depmode=gcc3 +CFLAGS = -g -O2 +CPP = gcc -E +CPPFLAGS = +CYGPATH_W = echo +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +DLLTOOL = false +DSYMUTIL = +DUMPBIN = +ECHO_C = +ECHO_N = -n +ECHO_T = +EGREP = /usr/bin/grep -E +EXEEXT = +FGREP = /usr/bin/grep -F +GREP = /usr/bin/grep +GSLCBLAS_LDFLAGS = +GSL_CFLAGS = -I${prefix}/include +GSL_LDFLAGS = +GSL_LIBADD = +GSL_LIBM = -lm +GSL_LIBS = -L${exec_prefix}/lib -lgsl +GSL_LT_CBLAS_VERSION = 0:0:0 +GSL_LT_VERSION = 24:0:1 +GSL_MAJOR_VERSION = 2 +GSL_MINOR_VERSION = 5 +HAVE_AIX_IEEE_INTERFACE = +HAVE_DARWIN86_IEEE_INTERFACE = +HAVE_DARWIN_IEEE_INTERFACE = +HAVE_FREEBSD_IEEE_INTERFACE = +HAVE_GNUM68K_IEEE_INTERFACE = +HAVE_GNUPPC_IEEE_INTERFACE = +HAVE_GNUSPARC_IEEE_INTERFACE = +HAVE_GNUX86_IEEE_INTERFACE = +HAVE_HPUX11_IEEE_INTERFACE = +HAVE_HPUX_IEEE_INTERFACE = +HAVE_IRIX_IEEE_INTERFACE = +HAVE_NETBSD_IEEE_INTERFACE = +HAVE_OPENBSD_IEEE_INTERFACE = +HAVE_OS2EMX_IEEE_INTERFACE = +HAVE_SOLARIS_IEEE_INTERFACE = +HAVE_SUNOS4_IEEE_INTERFACE = +HAVE_TRU64_IEEE_INTERFACE = +INSTALL = /usr/bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = $(install_sh) -c -s +LD = /usr/bin/ld -m elf_x86_64 +LDFLAGS = +LIBM = -lm +LIBOBJS = +LIBS = -lm +LIBTOOL = $(SHELL) $(top_builddir)/libtool +LIPO = +LN_S = ln -s +LTLIBOBJS = +MAINT = # +MAKEINFO = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing makeinfo +MANIFEST_TOOL = : +MKDIR_P = /usr/bin/mkdir -p +NM = /usr/bin/nm -B +NMEDIT = +OBJDUMP = objdump +OBJEXT = o +OTOOL = +OTOOL64 = +PACKAGE = gsl +PACKAGE_BUGREPORT = +PACKAGE_NAME = gsl +PACKAGE_STRING = gsl 2.5 +PACKAGE_TARNAME = gsl +PACKAGE_URL = +PACKAGE_VERSION = 2.5 +PATH_SEPARATOR = : +RANLIB = ranlib +SED = /usr/bin/sed +SET_MAKE = +SHELL = /bin/sh +STRIP = strip +VERSION = 2.5 +abs_builddir = /home/groups/kipac/chto/package/gsl/gsl-2.5/sort +abs_srcdir = /home/groups/kipac/chto/package/gsl/gsl-2.5/sort +abs_top_builddir = /home/groups/kipac/chto/package/gsl/gsl-2.5 +abs_top_srcdir = /home/groups/kipac/chto/package/gsl/gsl-2.5 +ac_ct_AR = ar +ac_ct_CC = gcc +ac_ct_DUMPBIN = +am__include = include +am__leading_dot = . +am__quote = +am__tar = $${TAR-tar} chof - "$$tardir" +am__untar = $${TAR-tar} xf - +bindir = ${exec_prefix}/bin +build = x86_64-unknown-linux-gnu +build_alias = +build_cpu = x86_64 +build_os = linux-gnu +build_vendor = unknown +builddir = . +datadir = ${datarootdir} +datarootdir = ${prefix}/share +docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} +dvidir = ${docdir} +exec_prefix = ${prefix} +host = x86_64-unknown-linux-gnu +host_alias = +host_cpu = x86_64 +host_os = linux-gnu +host_vendor = unknown +htmldir = ${docdir} +includedir = ${prefix}/include +infodir = ${datarootdir}/info +install_sh = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/install-sh +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +localedir = ${datarootdir}/locale +localstatedir = ${prefix}/var +mandir = ${datarootdir}/man +mkdir_p = $(MKDIR_P) +oldincludedir = /usr/include +pdfdir = ${docdir} +prefix = /home/groups/kipac/chto/package/gsl/gsl_lib +program_transform_name = s,x,x, +psdir = ${docdir} +sbindir = ${exec_prefix}/sbin +sharedstatedir = ${prefix}/com +srcdir = . +sysconfdir = ${prefix}/etc +target_alias = +top_build_prefix = ../ +top_builddir = .. +top_srcdir = .. +noinst_LTLIBRARIES = libgslsort.la +pkginclude_HEADERS = gsl_heapsort.h gsl_sort.h gsl_sort_char.h gsl_sort_double.h gsl_sort_float.h gsl_sort_int.h gsl_sort_long.h gsl_sort_long_double.h gsl_sort_short.h gsl_sort_uchar.h gsl_sort_uint.h gsl_sort_ulong.h gsl_sort_ushort.h gsl_sort_vector.h gsl_sort_vector_char.h gsl_sort_vector_double.h gsl_sort_vector_float.h gsl_sort_vector_int.h gsl_sort_vector_long.h gsl_sort_vector_long_double.h gsl_sort_vector_short.h gsl_sort_vector_uchar.h gsl_sort_vector_uint.h gsl_sort_vector_ulong.h gsl_sort_vector_ushort.h +AM_CPPFLAGS = -I$(top_srcdir) +libgslsort_la_SOURCES = sort.c sortind.c sortvec.c sortvecind.c subset.c subsetind.c +noinst_HEADERS = sortvec_source.c sortvecind_source.c subset_source.c subsetind_source.c test_source.c test_heapsort.c +TESTS = $(check_PROGRAMS) +test_SOURCES = test.c +test_LDADD = libgslsort.la ../permutation/libgslpermutation.la ../vector/libgslvector.la ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu sort/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu sort/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: # $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): # $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libgslsort.la: $(libgslsort_la_OBJECTS) $(libgslsort_la_DEPENDENCIES) $(EXTRA_libgslsort_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(libgslsort_la_OBJECTS) $(libgslsort_la_LIBADD) $(LIBS) + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) $(EXTRA_test_DEPENDENCIES) + @rm -f test$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_OBJECTS) $(test_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +include ./$(DEPDIR)/sort.Plo +include ./$(DEPDIR)/sortind.Plo +include ./$(DEPDIR)/sortvec.Plo +include ./$(DEPDIR)/sortvecind.Plo +include ./$(DEPDIR)/subset.Plo +include ./$(DEPDIR)/subsetind.Plo +include ./$(DEPDIR)/test.Po + +.c.o: + $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# $(AM_V_CC)source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(COMPILE) -c $< + +.c.obj: + $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# $(AM_V_CC)source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: + $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +# $(AM_V_CC)source='$<' object='$@' libtool=yes \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-pkgincludeHEADERS: $(pkginclude_HEADERS) + @$(NORMAL_INSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \ + done + +uninstall-pkgincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + else \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_PROGRAMS) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +test.log: test$(EXEEXT) + @p='test$(EXEEXT)'; \ + b='test'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +#.test$(EXEEXT).log: +# @p='$<'; \ +# $(am__set_b); \ +# $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +# --log-file $$b.log --trs-file $$b.trs \ +# $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +# "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-am +all-am: Makefile $(LTLIBRARIES) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(pkgincludedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-pkgincludeHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-pkgincludeHEADERS + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES cscopelist-am ctags ctags-am distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-pkgincludeHEADERS \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + recheck tags tags-am uninstall uninstall-am \ + uninstall-pkgincludeHEADERS + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gsl-2.5/sort/Makefile.am b/gsl-2.5/sort/Makefile.am new file mode 100644 index 00000000..56eef2e6 --- /dev/null +++ b/gsl-2.5/sort/Makefile.am @@ -0,0 +1,16 @@ +noinst_LTLIBRARIES = libgslsort.la + +pkginclude_HEADERS = gsl_heapsort.h gsl_sort.h gsl_sort_char.h gsl_sort_double.h gsl_sort_float.h gsl_sort_int.h gsl_sort_long.h gsl_sort_long_double.h gsl_sort_short.h gsl_sort_uchar.h gsl_sort_uint.h gsl_sort_ulong.h gsl_sort_ushort.h gsl_sort_vector.h gsl_sort_vector_char.h gsl_sort_vector_double.h gsl_sort_vector_float.h gsl_sort_vector_int.h gsl_sort_vector_long.h gsl_sort_vector_long_double.h gsl_sort_vector_short.h gsl_sort_vector_uchar.h gsl_sort_vector_uint.h gsl_sort_vector_ulong.h gsl_sort_vector_ushort.h + +AM_CPPFLAGS = -I$(top_srcdir) + +libgslsort_la_SOURCES = sort.c sortind.c sortvec.c sortvecind.c subset.c subsetind.c +noinst_HEADERS = sortvec_source.c sortvecind_source.c subset_source.c subsetind_source.c test_source.c test_heapsort.c + +TESTS = $(check_PROGRAMS) + +check_PROGRAMS = test + +test_SOURCES = test.c +test_LDADD = libgslsort.la ../permutation/libgslpermutation.la ../vector/libgslvector.la ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la + diff --git a/gsl-2.5/sort/Makefile.in b/gsl-2.5/sort/Makefile.in new file mode 100644 index 00000000..7cddbd8e --- /dev/null +++ b/gsl-2.5/sort/Makefile.in @@ -0,0 +1,1033 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + + +VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +check_PROGRAMS = test$(EXEEXT) +subdir = sort +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp \ + $(noinst_HEADERS) $(pkginclude_HEADERS) \ + $(top_srcdir)/test-driver ChangeLog TODO +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +libgslsort_la_LIBADD = +am_libgslsort_la_OBJECTS = sort.lo sortind.lo sortvec.lo sortvecind.lo \ + subset.lo subsetind.lo +libgslsort_la_OBJECTS = $(am_libgslsort_la_OBJECTS) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +am_test_OBJECTS = test.$(OBJEXT) +test_OBJECTS = $(am_test_OBJECTS) +test_DEPENDENCIES = libgslsort.la ../permutation/libgslpermutation.la \ + ../vector/libgslvector.la ../block/libgslblock.la \ + ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la \ + ../test/libgsltest.la ../sys/libgslsys.la +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libgslsort_la_SOURCES) $(test_SOURCES) +DIST_SOURCES = $(libgslsort_la_SOURCES) $(test_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(pkgincludedir)" +HEADERS = $(noinst_HEADERS) $(pkginclude_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = @EXEEXT@ .test +LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +GSLCBLAS_LDFLAGS = @GSLCBLAS_LDFLAGS@ +GSL_CFLAGS = @GSL_CFLAGS@ +GSL_LDFLAGS = @GSL_LDFLAGS@ +GSL_LIBADD = @GSL_LIBADD@ +GSL_LIBM = @GSL_LIBM@ +GSL_LIBS = @GSL_LIBS@ +GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ +GSL_LT_VERSION = @GSL_LT_VERSION@ +GSL_MAJOR_VERSION = @GSL_MAJOR_VERSION@ +GSL_MINOR_VERSION = @GSL_MINOR_VERSION@ +HAVE_AIX_IEEE_INTERFACE = @HAVE_AIX_IEEE_INTERFACE@ +HAVE_DARWIN86_IEEE_INTERFACE = @HAVE_DARWIN86_IEEE_INTERFACE@ +HAVE_DARWIN_IEEE_INTERFACE = @HAVE_DARWIN_IEEE_INTERFACE@ +HAVE_FREEBSD_IEEE_INTERFACE = @HAVE_FREEBSD_IEEE_INTERFACE@ +HAVE_GNUM68K_IEEE_INTERFACE = @HAVE_GNUM68K_IEEE_INTERFACE@ +HAVE_GNUPPC_IEEE_INTERFACE = @HAVE_GNUPPC_IEEE_INTERFACE@ +HAVE_GNUSPARC_IEEE_INTERFACE = @HAVE_GNUSPARC_IEEE_INTERFACE@ +HAVE_GNUX86_IEEE_INTERFACE = @HAVE_GNUX86_IEEE_INTERFACE@ +HAVE_HPUX11_IEEE_INTERFACE = @HAVE_HPUX11_IEEE_INTERFACE@ +HAVE_HPUX_IEEE_INTERFACE = @HAVE_HPUX_IEEE_INTERFACE@ +HAVE_IRIX_IEEE_INTERFACE = @HAVE_IRIX_IEEE_INTERFACE@ +HAVE_NETBSD_IEEE_INTERFACE = @HAVE_NETBSD_IEEE_INTERFACE@ +HAVE_OPENBSD_IEEE_INTERFACE = @HAVE_OPENBSD_IEEE_INTERFACE@ +HAVE_OS2EMX_IEEE_INTERFACE = @HAVE_OS2EMX_IEEE_INTERFACE@ +HAVE_SOLARIS_IEEE_INTERFACE = @HAVE_SOLARIS_IEEE_INTERFACE@ +HAVE_SUNOS4_IEEE_INTERFACE = @HAVE_SUNOS4_IEEE_INTERFACE@ +HAVE_TRU64_IEEE_INTERFACE = @HAVE_TRU64_IEEE_INTERFACE@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBM = @LIBM@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +noinst_LTLIBRARIES = libgslsort.la +pkginclude_HEADERS = gsl_heapsort.h gsl_sort.h gsl_sort_char.h gsl_sort_double.h gsl_sort_float.h gsl_sort_int.h gsl_sort_long.h gsl_sort_long_double.h gsl_sort_short.h gsl_sort_uchar.h gsl_sort_uint.h gsl_sort_ulong.h gsl_sort_ushort.h gsl_sort_vector.h gsl_sort_vector_char.h gsl_sort_vector_double.h gsl_sort_vector_float.h gsl_sort_vector_int.h gsl_sort_vector_long.h gsl_sort_vector_long_double.h gsl_sort_vector_short.h gsl_sort_vector_uchar.h gsl_sort_vector_uint.h gsl_sort_vector_ulong.h gsl_sort_vector_ushort.h +AM_CPPFLAGS = -I$(top_srcdir) +libgslsort_la_SOURCES = sort.c sortind.c sortvec.c sortvecind.c subset.c subsetind.c +noinst_HEADERS = sortvec_source.c sortvecind_source.c subset_source.c subsetind_source.c test_source.c test_heapsort.c +TESTS = $(check_PROGRAMS) +test_SOURCES = test.c +test_LDADD = libgslsort.la ../permutation/libgslpermutation.la ../vector/libgslvector.la ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu sort/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu sort/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libgslsort.la: $(libgslsort_la_OBJECTS) $(libgslsort_la_DEPENDENCIES) $(EXTRA_libgslsort_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(libgslsort_la_OBJECTS) $(libgslsort_la_LIBADD) $(LIBS) + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) $(EXTRA_test_DEPENDENCIES) + @rm -f test$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_OBJECTS) $(test_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sort.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sortind.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sortvec.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sortvecind.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/subset.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/subsetind.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test.Po@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-pkgincludeHEADERS: $(pkginclude_HEADERS) + @$(NORMAL_INSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \ + done + +uninstall-pkgincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + else \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_PROGRAMS) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +test.log: test$(EXEEXT) + @p='test$(EXEEXT)'; \ + b='test'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +@am__EXEEXT_TRUE@.test$(EXEEXT).log: +@am__EXEEXT_TRUE@ @p='$<'; \ +@am__EXEEXT_TRUE@ $(am__set_b); \ +@am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +@am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ +@am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +@am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-am +all-am: Makefile $(LTLIBRARIES) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(pkgincludedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-pkgincludeHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-pkgincludeHEADERS + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES cscopelist-am ctags ctags-am distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-pkgincludeHEADERS \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + recheck tags tags-am uninstall uninstall-am \ + uninstall-pkgincludeHEADERS + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gsl-2.5/sort/TODO b/gsl-2.5/sort/TODO new file mode 100644 index 00000000..a336c1e2 --- /dev/null +++ b/gsl-2.5/sort/TODO @@ -0,0 +1,39 @@ +# -*- org -*- +#+CATEGORY: sort + +* Routines for selecting the k largest or smallest values could use +heapsort for speed O(N log k) rather than insertion O(N k). + +* Sorting of complex arrarys without using additional memory. We try +to avoid allocating memory internally in GSL, so internally computing +the magnitudes and storing them in a temporary array is undesirable. + +Obviously a complex array can be sorted using sqrt(x*x + y*y) <=> +sqrt(u*u + v*v) (written in a numerically stable way) for every +comparison, but this may be unacceptably slow. Maybe not? It is just a +constant factor. The square roots could sometimes be avoided by +optimization, + + (x,y) = (MAX(|x|,|y|), MIN(|x|,|y|)) + (u,v) = (MAX(|u|,|v|), MIN(|u|,|v|)) + + if (x < u/sqrt(2)) /* This part is optional optimization */ + return -1 + if (x > u*sqrt(2)) + return +1 + + if (x == 0 && u == 0) ... + if (x == 0) ... + if (u == 0) ... + + t = u*sqrt((1+(v/u)^2)/(1+(y/x)^2)) + + if (x < t) + return -1 + if (x > t) + return +1 + else + return 0 + +but this does depend on the data having sufficient range for the +optimization to be worthwhile, otherwise it is an extra cost. diff --git a/gsl-2.5/sort/gsl_heapsort.h b/gsl-2.5/sort/gsl_heapsort.h new file mode 100644 index 00000000..213fae1e --- /dev/null +++ b/gsl-2.5/sort/gsl_heapsort.h @@ -0,0 +1,44 @@ +/* sort/gsl_heapsort.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Thomas Walter, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_HEAPSORT_H__ +#define __GSL_HEAPSORT_H__ + +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +typedef int (*gsl_comparison_fn_t) (const void *, const void *); + +void gsl_heapsort (void * array, size_t count, size_t size, gsl_comparison_fn_t compare); +int gsl_heapsort_index (size_t * p, const void * array, size_t count, size_t size, gsl_comparison_fn_t compare); + +__END_DECLS + +#endif /* __GSL_HEAPSORT_H__ */ diff --git a/gsl-2.5/sort/gsl_sort.h b/gsl-2.5/sort/gsl_sort.h new file mode 100644 index 00000000..b1496c2e --- /dev/null +++ b/gsl-2.5/sort/gsl_sort.h @@ -0,0 +1,20 @@ +#ifndef __GSL_SORT_H__ +#define __GSL_SORT_H__ + +#include +#include +#include + +#include +#include + +#include +#include + +#include +#include + +#include +#include + +#endif /* __GSL_SORT_H__ */ diff --git a/gsl-2.5/sort/gsl_sort_char.h b/gsl-2.5/sort/gsl_sort_char.h new file mode 100644 index 00000000..a4bf3514 --- /dev/null +++ b/gsl-2.5/sort/gsl_sort_char.h @@ -0,0 +1,51 @@ +/* sort/gsl_sort_char.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Thomas Walter, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_SORT_CHAR_H__ +#define __GSL_SORT_CHAR_H__ + +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +void gsl_sort_char (char * data, const size_t stride, const size_t n); +void gsl_sort2_char (char * data1, const size_t stride1, char * data2, const size_t stride2, const size_t n); +void gsl_sort_char_index (size_t * p, const char * data, const size_t stride, const size_t n); + +int gsl_sort_char_smallest (char * dest, const size_t k, const char * src, const size_t stride, const size_t n); +int gsl_sort_char_smallest_index (size_t * p, const size_t k, const char * src, const size_t stride, const size_t n); + +int gsl_sort_char_largest (char * dest, const size_t k, const char * src, const size_t stride, const size_t n); +int gsl_sort_char_largest_index (size_t * p, const size_t k, const char * src, const size_t stride, const size_t n); + +__END_DECLS + +#endif /* __GSL_SORT_CHAR_H__ */ diff --git a/gsl-2.5/sort/gsl_sort_double.h b/gsl-2.5/sort/gsl_sort_double.h new file mode 100644 index 00000000..3f67f43d --- /dev/null +++ b/gsl-2.5/sort/gsl_sort_double.h @@ -0,0 +1,51 @@ +/* sort/gsl_sort_double.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Thomas Walter, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_SORT_DOUBLE_H__ +#define __GSL_SORT_DOUBLE_H__ + +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +void gsl_sort (double * data, const size_t stride, const size_t n); +void gsl_sort2 (double * data1, const size_t stride1, double * data2, const size_t stride2, const size_t n); +void gsl_sort_index (size_t * p, const double * data, const size_t stride, const size_t n); + +int gsl_sort_smallest (double * dest, const size_t k, const double * src, const size_t stride, const size_t n); +int gsl_sort_smallest_index (size_t * p, const size_t k, const double * src, const size_t stride, const size_t n); + +int gsl_sort_largest (double * dest, const size_t k, const double * src, const size_t stride, const size_t n); +int gsl_sort_largest_index (size_t * p, const size_t k, const double * src, const size_t stride, const size_t n); + +__END_DECLS + +#endif /* __GSL_SORT_DOUBLE_H__ */ diff --git a/gsl-2.5/sort/gsl_sort_float.h b/gsl-2.5/sort/gsl_sort_float.h new file mode 100644 index 00000000..505a1c6b --- /dev/null +++ b/gsl-2.5/sort/gsl_sort_float.h @@ -0,0 +1,51 @@ +/* sort/gsl_sort_float.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Thomas Walter, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_SORT_FLOAT_H__ +#define __GSL_SORT_FLOAT_H__ + +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +void gsl_sort_float (float * data, const size_t stride, const size_t n); +void gsl_sort2_float (float * data1, const size_t stride1, float * data2, const size_t stride2, const size_t n); +void gsl_sort_float_index (size_t * p, const float * data, const size_t stride, const size_t n); + +int gsl_sort_float_smallest (float * dest, const size_t k, const float * src, const size_t stride, const size_t n); +int gsl_sort_float_smallest_index (size_t * p, const size_t k, const float * src, const size_t stride, const size_t n); + +int gsl_sort_float_largest (float * dest, const size_t k, const float * src, const size_t stride, const size_t n); +int gsl_sort_float_largest_index (size_t * p, const size_t k, const float * src, const size_t stride, const size_t n); + +__END_DECLS + +#endif /* __GSL_SORT_FLOAT_H__ */ diff --git a/gsl-2.5/sort/gsl_sort_int.h b/gsl-2.5/sort/gsl_sort_int.h new file mode 100644 index 00000000..7aa8d385 --- /dev/null +++ b/gsl-2.5/sort/gsl_sort_int.h @@ -0,0 +1,51 @@ +/* sort/gsl_sort_int.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Thomas Walter, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_SORT_INT_H__ +#define __GSL_SORT_INT_H__ + +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +void gsl_sort_int (int * data, const size_t stride, const size_t n); +void gsl_sort2_int (int * data1, const size_t stride1, int * data2, const size_t stride2, const size_t n); +void gsl_sort_int_index (size_t * p, const int * data, const size_t stride, const size_t n); + +int gsl_sort_int_smallest (int * dest, const size_t k, const int * src, const size_t stride, const size_t n); +int gsl_sort_int_smallest_index (size_t * p, const size_t k, const int * src, const size_t stride, const size_t n); + +int gsl_sort_int_largest (int * dest, const size_t k, const int * src, const size_t stride, const size_t n); +int gsl_sort_int_largest_index (size_t * p, const size_t k, const int * src, const size_t stride, const size_t n); + +__END_DECLS + +#endif /* __GSL_SORT_INT_H__ */ diff --git a/gsl-2.5/sort/gsl_sort_long.h b/gsl-2.5/sort/gsl_sort_long.h new file mode 100644 index 00000000..7f4d6892 --- /dev/null +++ b/gsl-2.5/sort/gsl_sort_long.h @@ -0,0 +1,51 @@ +/* sort/gsl_sort_long.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Thomas Walter, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_SORT_LONG_H__ +#define __GSL_SORT_LONG_H__ + +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +void gsl_sort_long (long * data, const size_t stride, const size_t n); +void gsl_sort2_long (long * data1, const size_t stride1, long * data2, const size_t stride2, const size_t n); +void gsl_sort_long_index (size_t * p, const long * data, const size_t stride, const size_t n); + +int gsl_sort_long_smallest (long * dest, const size_t k, const long * src, const size_t stride, const size_t n); +int gsl_sort_long_smallest_index (size_t * p, const size_t k, const long * src, const size_t stride, const size_t n); + +int gsl_sort_long_largest (long * dest, const size_t k, const long * src, const size_t stride, const size_t n); +int gsl_sort_long_largest_index (size_t * p, const size_t k, const long * src, const size_t stride, const size_t n); + +__END_DECLS + +#endif /* __GSL_SORT_LONG_H__ */ diff --git a/gsl-2.5/sort/gsl_sort_long_double.h b/gsl-2.5/sort/gsl_sort_long_double.h new file mode 100644 index 00000000..164fd231 --- /dev/null +++ b/gsl-2.5/sort/gsl_sort_long_double.h @@ -0,0 +1,51 @@ +/* sort/gsl_sort_long_double.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Thomas Walter, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_SORT_LONG_DOUBLE_H__ +#define __GSL_SORT_LONG_DOUBLE_H__ + +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +void gsl_sort_long_double (long double * data, const size_t stride, const size_t n); +void gsl_sort2_long_double (long double * data1, const size_t stride1, long double * data2, const size_t stride2, const size_t n); +void gsl_sort_long_double_index (size_t * p, const long double * data, const size_t stride, const size_t n); + +int gsl_sort_long_double_smallest (long double * dest, const size_t k, const long double * src, const size_t stride, const size_t n); +int gsl_sort_long_double_smallest_index (size_t * p, const size_t k, const long double * src, const size_t stride, const size_t n); + +int gsl_sort_long_double_largest (long double * dest, const size_t k, const long double * src, const size_t stride, const size_t n); +int gsl_sort_long_double_largest_index (size_t * p, const size_t k, const long double * src, const size_t stride, const size_t n); + +__END_DECLS + +#endif /* __GSL_SORT_LONG_DOUBLE_H__ */ diff --git a/gsl-2.5/sort/gsl_sort_short.h b/gsl-2.5/sort/gsl_sort_short.h new file mode 100644 index 00000000..4626e9e2 --- /dev/null +++ b/gsl-2.5/sort/gsl_sort_short.h @@ -0,0 +1,51 @@ +/* sort/gsl_sort_short.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Thomas Walter, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_SORT_SHORT_H__ +#define __GSL_SORT_SHORT_H__ + +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +void gsl_sort_short (short * data, const size_t stride, const size_t n); +void gsl_sort2_short (short * data1, const size_t stride1, short * data2, const size_t stride2, const size_t n); +void gsl_sort_short_index (size_t * p, const short * data, const size_t stride, const size_t n); + +int gsl_sort_short_smallest (short * dest, const size_t k, const short * src, const size_t stride, const size_t n); +int gsl_sort_short_smallest_index (size_t * p, const size_t k, const short * src, const size_t stride, const size_t n); + +int gsl_sort_short_largest (short * dest, const size_t k, const short * src, const size_t stride, const size_t n); +int gsl_sort_short_largest_index (size_t * p, const size_t k, const short * src, const size_t stride, const size_t n); + +__END_DECLS + +#endif /* __GSL_SORT_SHORT_H__ */ diff --git a/gsl-2.5/sort/gsl_sort_uchar.h b/gsl-2.5/sort/gsl_sort_uchar.h new file mode 100644 index 00000000..6cd511d5 --- /dev/null +++ b/gsl-2.5/sort/gsl_sort_uchar.h @@ -0,0 +1,51 @@ +/* sort/gsl_sort_uchar.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Thomas Walter, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_SORT_UCHAR_H__ +#define __GSL_SORT_UCHAR_H__ + +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +void gsl_sort_uchar (unsigned char * data, const size_t stride, const size_t n); +void gsl_sort2_uchar (unsigned char * data1, const size_t stride1, unsigned char * data2, const size_t stride2, const size_t n); +void gsl_sort_uchar_index (size_t * p, const unsigned char * data, const size_t stride, const size_t n); + +int gsl_sort_uchar_smallest (unsigned char * dest, const size_t k, const unsigned char * src, const size_t stride, const size_t n); +int gsl_sort_uchar_smallest_index (size_t * p, const size_t k, const unsigned char * src, const size_t stride, const size_t n); + +int gsl_sort_uchar_largest (unsigned char * dest, const size_t k, const unsigned char * src, const size_t stride, const size_t n); +int gsl_sort_uchar_largest_index (size_t * p, const size_t k, const unsigned char * src, const size_t stride, const size_t n); + +__END_DECLS + +#endif /* __GSL_SORT_UCHAR_H__ */ diff --git a/gsl-2.5/sort/gsl_sort_uint.h b/gsl-2.5/sort/gsl_sort_uint.h new file mode 100644 index 00000000..639e596f --- /dev/null +++ b/gsl-2.5/sort/gsl_sort_uint.h @@ -0,0 +1,51 @@ +/* sort/gsl_sort_uint.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Thomas Walter, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_SORT_UINT_H__ +#define __GSL_SORT_UINT_H__ + +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +void gsl_sort_uint (unsigned int * data, const size_t stride, const size_t n); +void gsl_sort2_uint (unsigned int * data1, const size_t stride1, unsigned int * data2, const size_t stride2, const size_t n); +void gsl_sort_uint_index (size_t * p, const unsigned int * data, const size_t stride, const size_t n); + +int gsl_sort_uint_smallest (unsigned int * dest, const size_t k, const unsigned int * src, const size_t stride, const size_t n); +int gsl_sort_uint_smallest_index (size_t * p, const size_t k, const unsigned int * src, const size_t stride, const size_t n); + +int gsl_sort_uint_largest (unsigned int * dest, const size_t k, const unsigned int * src, const size_t stride, const size_t n); +int gsl_sort_uint_largest_index (size_t * p, const size_t k, const unsigned int * src, const size_t stride, const size_t n); + +__END_DECLS + +#endif /* __GSL_SORT_UINT_H__ */ diff --git a/gsl-2.5/sort/gsl_sort_ulong.h b/gsl-2.5/sort/gsl_sort_ulong.h new file mode 100644 index 00000000..4f8e41d4 --- /dev/null +++ b/gsl-2.5/sort/gsl_sort_ulong.h @@ -0,0 +1,51 @@ +/* sort/gsl_sort_ulong.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Thomas Walter, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_SORT_ULONG_H__ +#define __GSL_SORT_ULONG_H__ + +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +void gsl_sort_ulong (unsigned long * data, const size_t stride, const size_t n); +void gsl_sort2_ulong (unsigned long * data1, const size_t stride1, unsigned long * data2, const size_t stride2, const size_t n); +void gsl_sort_ulong_index (size_t * p, const unsigned long * data, const size_t stride, const size_t n); + +int gsl_sort_ulong_smallest (unsigned long * dest, const size_t k, const unsigned long * src, const size_t stride, const size_t n); +int gsl_sort_ulong_smallest_index (size_t * p, const size_t k, const unsigned long * src, const size_t stride, const size_t n); + +int gsl_sort_ulong_largest (unsigned long * dest, const size_t k, const unsigned long * src, const size_t stride, const size_t n); +int gsl_sort_ulong_largest_index (size_t * p, const size_t k, const unsigned long * src, const size_t stride, const size_t n); + +__END_DECLS + +#endif /* __GSL_SORT_ULONG_H__ */ diff --git a/gsl-2.5/sort/gsl_sort_ushort.h b/gsl-2.5/sort/gsl_sort_ushort.h new file mode 100644 index 00000000..6da3d107 --- /dev/null +++ b/gsl-2.5/sort/gsl_sort_ushort.h @@ -0,0 +1,51 @@ +/* sort/gsl_sort_ushort.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Thomas Walter, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_SORT_USHORT_H__ +#define __GSL_SORT_USHORT_H__ + +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +void gsl_sort_ushort (unsigned short * data, const size_t stride, const size_t n); +void gsl_sort2_ushort (unsigned short * data1, const size_t stride1, unsigned short * data2, const size_t stride2, const size_t n); +void gsl_sort_ushort_index (size_t * p, const unsigned short * data, const size_t stride, const size_t n); + +int gsl_sort_ushort_smallest (unsigned short * dest, const size_t k, const unsigned short * src, const size_t stride, const size_t n); +int gsl_sort_ushort_smallest_index (size_t * p, const size_t k, const unsigned short * src, const size_t stride, const size_t n); + +int gsl_sort_ushort_largest (unsigned short * dest, const size_t k, const unsigned short * src, const size_t stride, const size_t n); +int gsl_sort_ushort_largest_index (size_t * p, const size_t k, const unsigned short * src, const size_t stride, const size_t n); + +__END_DECLS + +#endif /* __GSL_SORT_USHORT_H__ */ diff --git a/gsl-2.5/sort/gsl_sort_vector.h b/gsl-2.5/sort/gsl_sort_vector.h new file mode 100644 index 00000000..d65a9ee9 --- /dev/null +++ b/gsl-2.5/sort/gsl_sort_vector.h @@ -0,0 +1,20 @@ +#ifndef __GSL_SORT_VECTOR_H__ +#define __GSL_SORT_VECTOR_H__ + +#include +#include +#include + +#include +#include + +#include +#include + +#include +#include + +#include +#include + +#endif /* __GSL_SORT_VECTOR_H__ */ diff --git a/gsl-2.5/sort/gsl_sort_vector_char.h b/gsl-2.5/sort/gsl_sort_vector_char.h new file mode 100644 index 00000000..39721fbd --- /dev/null +++ b/gsl-2.5/sort/gsl_sort_vector_char.h @@ -0,0 +1,52 @@ +/* sort/gsl_sort_vector_char.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Thomas Walter, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_SORT_VECTOR_CHAR_H__ +#define __GSL_SORT_VECTOR_CHAR_H__ + +#include +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +void gsl_sort_vector_char (gsl_vector_char * v); +void gsl_sort_vector2_char (gsl_vector_char * v1, gsl_vector_char * v2); +int gsl_sort_vector_char_index (gsl_permutation * p, const gsl_vector_char * v); + +int gsl_sort_vector_char_smallest (char * dest, const size_t k, const gsl_vector_char * v); +int gsl_sort_vector_char_largest (char * dest, const size_t k, const gsl_vector_char * v); + +int gsl_sort_vector_char_smallest_index (size_t * p, const size_t k, const gsl_vector_char * v); +int gsl_sort_vector_char_largest_index (size_t * p, const size_t k, const gsl_vector_char * v); + +__END_DECLS + +#endif /* __GSL_SORT_VECTOR_CHAR_H__ */ diff --git a/gsl-2.5/sort/gsl_sort_vector_double.h b/gsl-2.5/sort/gsl_sort_vector_double.h new file mode 100644 index 00000000..f60a7447 --- /dev/null +++ b/gsl-2.5/sort/gsl_sort_vector_double.h @@ -0,0 +1,52 @@ +/* sort/gsl_sort_vector_double.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Thomas Walter, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_SORT_VECTOR_DOUBLE_H__ +#define __GSL_SORT_VECTOR_DOUBLE_H__ + +#include +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +void gsl_sort_vector (gsl_vector * v); +void gsl_sort_vector2 (gsl_vector * v1, gsl_vector * v2); +int gsl_sort_vector_index (gsl_permutation * p, const gsl_vector * v); + +int gsl_sort_vector_smallest (double * dest, const size_t k, const gsl_vector * v); +int gsl_sort_vector_largest (double * dest, const size_t k, const gsl_vector * v); + +int gsl_sort_vector_smallest_index (size_t * p, const size_t k, const gsl_vector * v); +int gsl_sort_vector_largest_index (size_t * p, const size_t k, const gsl_vector * v); + +__END_DECLS + +#endif /* __GSL_SORT_VECTOR_DOUBLE_H__ */ diff --git a/gsl-2.5/sort/gsl_sort_vector_float.h b/gsl-2.5/sort/gsl_sort_vector_float.h new file mode 100644 index 00000000..fe035c3a --- /dev/null +++ b/gsl-2.5/sort/gsl_sort_vector_float.h @@ -0,0 +1,52 @@ +/* sort/gsl_sort_vector_float.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Thomas Walter, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_SORT_VECTOR_FLOAT_H__ +#define __GSL_SORT_VECTOR_FLOAT_H__ + +#include +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +void gsl_sort_vector_float (gsl_vector_float * v); +void gsl_sort_vector2_float (gsl_vector_float * v1, gsl_vector_float * v2); +int gsl_sort_vector_float_index (gsl_permutation * p, const gsl_vector_float * v); + +int gsl_sort_vector_float_smallest (float * dest, const size_t k, const gsl_vector_float * v); +int gsl_sort_vector_float_largest (float * dest, const size_t k, const gsl_vector_float * v); + +int gsl_sort_vector_float_smallest_index (size_t * p, const size_t k, const gsl_vector_float * v); +int gsl_sort_vector_float_largest_index (size_t * p, const size_t k, const gsl_vector_float * v); + +__END_DECLS + +#endif /* __GSL_SORT_VECTOR_FLOAT_H__ */ diff --git a/gsl-2.5/sort/gsl_sort_vector_int.h b/gsl-2.5/sort/gsl_sort_vector_int.h new file mode 100644 index 00000000..3179bca1 --- /dev/null +++ b/gsl-2.5/sort/gsl_sort_vector_int.h @@ -0,0 +1,52 @@ +/* sort/gsl_sort_vector_int.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Thomas Walter, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_SORT_VECTOR_INT_H__ +#define __GSL_SORT_VECTOR_INT_H__ + +#include +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +void gsl_sort_vector_int (gsl_vector_int * v); +void gsl_sort_vector2_int (gsl_vector_int * v1, gsl_vector_int * v2); +int gsl_sort_vector_int_index (gsl_permutation * p, const gsl_vector_int * v); + +int gsl_sort_vector_int_smallest (int * dest, const size_t k, const gsl_vector_int * v); +int gsl_sort_vector_int_largest (int * dest, const size_t k, const gsl_vector_int * v); + +int gsl_sort_vector_int_smallest_index (size_t * p, const size_t k, const gsl_vector_int * v); +int gsl_sort_vector_int_largest_index (size_t * p, const size_t k, const gsl_vector_int * v); + +__END_DECLS + +#endif /* __GSL_SORT_VECTOR_INT_H__ */ diff --git a/gsl-2.5/sort/gsl_sort_vector_long.h b/gsl-2.5/sort/gsl_sort_vector_long.h new file mode 100644 index 00000000..41eebeca --- /dev/null +++ b/gsl-2.5/sort/gsl_sort_vector_long.h @@ -0,0 +1,52 @@ +/* sort/gsl_sort_vector_long.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Thomas Walter, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_SORT_VECTOR_LONG_H__ +#define __GSL_SORT_VECTOR_LONG_H__ + +#include +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +void gsl_sort_vector_long (gsl_vector_long * v); +void gsl_sort_vector2_long (gsl_vector_long * v1, gsl_vector_long * v2); +int gsl_sort_vector_long_index (gsl_permutation * p, const gsl_vector_long * v); + +int gsl_sort_vector_long_smallest (long * dest, const size_t k, const gsl_vector_long * v); +int gsl_sort_vector_long_largest (long * dest, const size_t k, const gsl_vector_long * v); + +int gsl_sort_vector_long_smallest_index (size_t * p, const size_t k, const gsl_vector_long * v); +int gsl_sort_vector_long_largest_index (size_t * p, const size_t k, const gsl_vector_long * v); + +__END_DECLS + +#endif /* __GSL_SORT_VECTOR_LONG_H__ */ diff --git a/gsl-2.5/sort/gsl_sort_vector_long_double.h b/gsl-2.5/sort/gsl_sort_vector_long_double.h new file mode 100644 index 00000000..4409d061 --- /dev/null +++ b/gsl-2.5/sort/gsl_sort_vector_long_double.h @@ -0,0 +1,52 @@ +/* sort/gsl_sort_vector_long_double.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Thomas Walter, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_SORT_VECTOR_LONG_DOUBLE_H__ +#define __GSL_SORT_VECTOR_LONG_DOUBLE_H__ + +#include +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +void gsl_sort_vector_long_double (gsl_vector_long_double * v); +void gsl_sort_vector2_long_double (gsl_vector_long_double * v1, gsl_vector_long_double * v2); +int gsl_sort_vector_long_double_index (gsl_permutation * p, const gsl_vector_long_double * v); + +int gsl_sort_vector_long_double_smallest (long double * dest, const size_t k, const gsl_vector_long_double * v); +int gsl_sort_vector_long_double_largest (long double * dest, const size_t k, const gsl_vector_long_double * v); + +int gsl_sort_vector_long_double_smallest_index (size_t * p, const size_t k, const gsl_vector_long_double * v); +int gsl_sort_vector_long_double_largest_index (size_t * p, const size_t k, const gsl_vector_long_double * v); + +__END_DECLS + +#endif /* __GSL_SORT_VECTOR_LONG_DOUBLE_H__ */ diff --git a/gsl-2.5/sort/gsl_sort_vector_short.h b/gsl-2.5/sort/gsl_sort_vector_short.h new file mode 100644 index 00000000..f25e8695 --- /dev/null +++ b/gsl-2.5/sort/gsl_sort_vector_short.h @@ -0,0 +1,52 @@ +/* sort/gsl_sort_vector_short.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Thomas Walter, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_SORT_VECTOR_SHORT_H__ +#define __GSL_SORT_VECTOR_SHORT_H__ + +#include +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +void gsl_sort_vector_short (gsl_vector_short * v); +void gsl_sort_vector2_short (gsl_vector_short * v1, gsl_vector_short * v2); +int gsl_sort_vector_short_index (gsl_permutation * p, const gsl_vector_short * v); + +int gsl_sort_vector_short_smallest (short * dest, const size_t k, const gsl_vector_short * v); +int gsl_sort_vector_short_largest (short * dest, const size_t k, const gsl_vector_short * v); + +int gsl_sort_vector_short_smallest_index (size_t * p, const size_t k, const gsl_vector_short * v); +int gsl_sort_vector_short_largest_index (size_t * p, const size_t k, const gsl_vector_short * v); + +__END_DECLS + +#endif /* __GSL_SORT_VECTOR_SHORT_H__ */ diff --git a/gsl-2.5/sort/gsl_sort_vector_uchar.h b/gsl-2.5/sort/gsl_sort_vector_uchar.h new file mode 100644 index 00000000..edc34085 --- /dev/null +++ b/gsl-2.5/sort/gsl_sort_vector_uchar.h @@ -0,0 +1,52 @@ +/* sort/gsl_sort_vector_uchar.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Thomas Walter, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_SORT_VECTOR_UCHAR_H__ +#define __GSL_SORT_VECTOR_UCHAR_H__ + +#include +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +void gsl_sort_vector_uchar (gsl_vector_uchar * v); +void gsl_sort_vector2_uchar (gsl_vector_uchar * v1, gsl_vector_uchar * v2); +int gsl_sort_vector_uchar_index (gsl_permutation * p, const gsl_vector_uchar * v); + +int gsl_sort_vector_uchar_smallest (unsigned char * dest, const size_t k, const gsl_vector_uchar * v); +int gsl_sort_vector_uchar_largest (unsigned char * dest, const size_t k, const gsl_vector_uchar * v); + +int gsl_sort_vector_uchar_smallest_index (size_t * p, const size_t k, const gsl_vector_uchar * v); +int gsl_sort_vector_uchar_largest_index (size_t * p, const size_t k, const gsl_vector_uchar * v); + +__END_DECLS + +#endif /* __GSL_SORT_VECTOR_UCHAR_H__ */ diff --git a/gsl-2.5/sort/gsl_sort_vector_uint.h b/gsl-2.5/sort/gsl_sort_vector_uint.h new file mode 100644 index 00000000..6e45b845 --- /dev/null +++ b/gsl-2.5/sort/gsl_sort_vector_uint.h @@ -0,0 +1,52 @@ +/* sort/gsl_sort_vector_uint.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Thomas Walter, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_SORT_VECTOR_UINT_H__ +#define __GSL_SORT_VECTOR_UINT_H__ + +#include +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +void gsl_sort_vector_uint (gsl_vector_uint * v); +void gsl_sort_vector2_uint (gsl_vector_uint * v1, gsl_vector_uint * v2); +int gsl_sort_vector_uint_index (gsl_permutation * p, const gsl_vector_uint * v); + +int gsl_sort_vector_uint_smallest (unsigned int * dest, const size_t k, const gsl_vector_uint * v); +int gsl_sort_vector_uint_largest (unsigned int * dest, const size_t k, const gsl_vector_uint * v); + +int gsl_sort_vector_uint_smallest_index (size_t * p, const size_t k, const gsl_vector_uint * v); +int gsl_sort_vector_uint_largest_index (size_t * p, const size_t k, const gsl_vector_uint * v); + +__END_DECLS + +#endif /* __GSL_SORT_VECTOR_UINT_H__ */ diff --git a/gsl-2.5/sort/gsl_sort_vector_ulong.h b/gsl-2.5/sort/gsl_sort_vector_ulong.h new file mode 100644 index 00000000..e6510575 --- /dev/null +++ b/gsl-2.5/sort/gsl_sort_vector_ulong.h @@ -0,0 +1,52 @@ +/* sort/gsl_sort_vector_ulong.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Thomas Walter, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_SORT_VECTOR_ULONG_H__ +#define __GSL_SORT_VECTOR_ULONG_H__ + +#include +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +void gsl_sort_vector_ulong (gsl_vector_ulong * v); +void gsl_sort_vector2_ulong (gsl_vector_ulong * v1, gsl_vector_ulong * v2); +int gsl_sort_vector_ulong_index (gsl_permutation * p, const gsl_vector_ulong * v); + +int gsl_sort_vector_ulong_smallest (unsigned long * dest, const size_t k, const gsl_vector_ulong * v); +int gsl_sort_vector_ulong_largest (unsigned long * dest, const size_t k, const gsl_vector_ulong * v); + +int gsl_sort_vector_ulong_smallest_index (size_t * p, const size_t k, const gsl_vector_ulong * v); +int gsl_sort_vector_ulong_largest_index (size_t * p, const size_t k, const gsl_vector_ulong * v); + +__END_DECLS + +#endif /* __GSL_SORT_VECTOR_ULONG_H__ */ diff --git a/gsl-2.5/sort/gsl_sort_vector_ushort.h b/gsl-2.5/sort/gsl_sort_vector_ushort.h new file mode 100644 index 00000000..09eb0bd1 --- /dev/null +++ b/gsl-2.5/sort/gsl_sort_vector_ushort.h @@ -0,0 +1,52 @@ +/* sort/gsl_sort_vector_ushort.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Thomas Walter, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_SORT_VECTOR_USHORT_H__ +#define __GSL_SORT_VECTOR_USHORT_H__ + +#include +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +void gsl_sort_vector_ushort (gsl_vector_ushort * v); +void gsl_sort_vector2_ushort (gsl_vector_ushort * v1, gsl_vector_ushort * v2); +int gsl_sort_vector_ushort_index (gsl_permutation * p, const gsl_vector_ushort * v); + +int gsl_sort_vector_ushort_smallest (unsigned short * dest, const size_t k, const gsl_vector_ushort * v); +int gsl_sort_vector_ushort_largest (unsigned short * dest, const size_t k, const gsl_vector_ushort * v); + +int gsl_sort_vector_ushort_smallest_index (size_t * p, const size_t k, const gsl_vector_ushort * v); +int gsl_sort_vector_ushort_largest_index (size_t * p, const size_t k, const gsl_vector_ushort * v); + +__END_DECLS + +#endif /* __GSL_SORT_VECTOR_USHORT_H__ */ diff --git a/gsl-2.5/sort/libgslsort.la b/gsl-2.5/sort/libgslsort.la new file mode 100644 index 00000000..fab83819 --- /dev/null +++ b/gsl-2.5/sort/libgslsort.la @@ -0,0 +1,41 @@ +# libgslsort.la - a libtool library file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='' + +# Names of this library. +library_names='' + +# The name of the static archive. +old_library='libgslsort.a' + +# Linker flags that can not go in dependency_libs. +inherited_linker_flags='' + +# Libraries that this one depends upon. +dependency_libs=' -lm' + +# Names of additional weak libraries provided by this library +weak_library_names='' + +# Version information for libgslsort. +current= +age= +revision= + +# Is this an already installed library? +installed=no + +# Should we warn about portability when linking against -modules? +shouldnotlink=no + +# Files to dlopen/dlpreopen +dlopen='' +dlpreopen='' + +# Directory that this library needs to be installed in: +libdir='' diff --git a/gsl-2.5/sort/sort.c b/gsl-2.5/sort/sort.c new file mode 100644 index 00000000..8eee12d6 --- /dev/null +++ b/gsl-2.5/sort/sort.c @@ -0,0 +1,114 @@ +/* + * Implement Heap sort -- direct and indirect sorting + * Based on descriptions in Sedgewick "Algorithms in C" + * + * Copyright (C) 1999 Thomas Walter + * + * 18 February 2000: Modified for GSL by Brian Gough + * + * This is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 3, or (at your option) any + * later version. + * + * This source 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. + */ + +#include +#include +#include + +static inline void swap (void *base, size_t size, size_t i, size_t j); +static inline void downheap (void *data, const size_t size, const size_t N, size_t k, gsl_comparison_fn_t compare); + +/* Inline swap function for moving objects around */ + +static inline void +swap (void *base, size_t size, size_t i, size_t j) +{ + register char *a = size * i + (char *) base; + register char *b = size * j + (char *) base; + register size_t s = size; + + if (i == j) + return; + + do + { + char tmp = *a; + *a++ = *b; + *b++ = tmp; + } + while (--s > 0); +} + +#define CMP(data,size,j,k) (compare((char *)(data) + (size) * (j), (char *)(data) + (size) * (k))) + +static inline void +downheap (void *data, const size_t size, const size_t N, size_t k, gsl_comparison_fn_t compare) +{ + while (k <= N / 2) + { + size_t j = 2 * k; + + if (j < N && CMP (data, size, j, j + 1) < 0) + { + j++; + } + + if (CMP (data, size, k, j) < 0) + { + swap (data, size, j, k); + } + else + { + break; + } + + k = j; + } +} + +void +gsl_heapsort (void *data, size_t count, size_t size, gsl_comparison_fn_t compare) +{ + /* Sort the array in ascending order. This is a true inplace + algorithm with N log N operations. Worst case (an already sorted + array) is something like 20% slower */ + + size_t N; + size_t k; + + if (count == 0) + { + return; /* No data to sort */ + } + + /* We have n_data elements, last element is at 'n_data-1', first at + '0' Set N to the last element number. */ + + N = count - 1; + + k = N / 2; + k++; /* Compensate the first use of 'k--' */ + do + { + k--; + downheap (data, size, N, k, compare); + } + while (k > 0); + + while (N > 0) + { + /* first swap the elements */ + swap (data, size, 0, N); + + /* then process the heap */ + N--; + + downheap (data, size, N, 0, compare); + } +} diff --git a/gsl-2.5/sort/sort.lo b/gsl-2.5/sort/sort.lo new file mode 100644 index 00000000..b306ad25 --- /dev/null +++ b/gsl-2.5/sort/sort.lo @@ -0,0 +1,12 @@ +# sort.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/sort.o' + +# Name of the non-PIC object +non_pic_object='sort.o' + diff --git a/gsl-2.5/sort/sortind.c b/gsl-2.5/sort/sortind.c new file mode 100644 index 00000000..de0fecdd --- /dev/null +++ b/gsl-2.5/sort/sortind.c @@ -0,0 +1,101 @@ +/* + * Implement Heap sort -- direct and indirect sorting + * Based on descriptions in Sedgewick "Algorithms in C" + * Copyright (C) 1999 Thomas Walter + * + * 18 February 2000: Modified for GSL by Brian Gough + * + * This is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 3, or (at your option) any + * later version. + * + * This source 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. + */ + +#include +#include +#include + +static inline void downheap (size_t * p, const void *data, const size_t size, const size_t N, size_t k, gsl_comparison_fn_t compare); + +#define CMP(data,size,j,k) (compare((const char *)(data) + (size) * (j), (const char *)(data) + (size) * (k))) + +static inline void +downheap (size_t * p, const void *data, const size_t size, const size_t N, size_t k, gsl_comparison_fn_t compare) +{ + const size_t pki = p[k]; + + while (k <= N / 2) + { + size_t j = 2 * k; + + if (j < N && CMP (data, size, p[j], p[j + 1]) < 0) + { + j++; + } + + if (CMP (data, size, pki, p[j]) >= 0) + { + break; + } + + p[k] = p[j]; + + k = j; + } + + p[k] = pki; +} + +int +gsl_heapsort_index (size_t * p, const void *data, size_t count, size_t size, gsl_comparison_fn_t compare) +{ + /* Sort the array in ascending order. This is a true inplace + algorithm with N log N operations. Worst case (an already sorted + array) is something like 20% slower */ + + size_t i, k, N; + + if (count == 0) + { + return GSL_SUCCESS; /* No data to sort */ + } + + for (i = 0; i < count; i++) + { + p[i] = i ; /* set permutation to identity */ + } + + /* We have n_data elements, last element is at 'n_data-1', first at + '0' Set N to the last element number. */ + + N = count - 1; + + k = N / 2; + k++; /* Compensate the first use of 'k--' */ + do + { + k--; + downheap (p, data, size, N, k, compare); + } + while (k > 0); + + while (N > 0) + { + /* first swap the elements */ + size_t tmp = p[0]; + p[0] = p[N]; + p[N] = tmp; + + /* then process the heap */ + N--; + + downheap (p, data, size, N, 0, compare); + } + + return GSL_SUCCESS; +} diff --git a/gsl-2.5/sort/sortind.lo b/gsl-2.5/sort/sortind.lo new file mode 100644 index 00000000..57fa9b00 --- /dev/null +++ b/gsl-2.5/sort/sortind.lo @@ -0,0 +1,12 @@ +# sortind.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/sortind.o' + +# Name of the non-PIC object +non_pic_object='sortind.o' + diff --git a/gsl-2.5/sort/sortvec.c b/gsl-2.5/sort/sortvec.c new file mode 100644 index 00000000..182a9f59 --- /dev/null +++ b/gsl-2.5/sort/sortvec.c @@ -0,0 +1,90 @@ +/* + * Implement Heap sort -- direct and indirect sorting + * Based on descriptions in Sedgewick "Algorithms in C" + * + * Copyright (C) 1999 Thomas Walter + * + * 18 February 2000: Modified for GSL by Brian Gough + * + * This is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 3, or (at your option) any + * later version. + * + * This source 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. + */ + +#include +#include +#include +#include +#include + +#define BASE_LONG_DOUBLE +#include "templates_on.h" +#include "sortvec_source.c" +#include "templates_off.h" +#undef BASE_LONG_DOUBLE + +#define BASE_DOUBLE +#include "templates_on.h" +#include "sortvec_source.c" +#include "templates_off.h" +#undef BASE_DOUBLE + +#define BASE_FLOAT +#include "templates_on.h" +#include "sortvec_source.c" +#include "templates_off.h" +#undef BASE_FLOAT + +#define BASE_ULONG +#include "templates_on.h" +#include "sortvec_source.c" +#include "templates_off.h" +#undef BASE_ULONG + +#define BASE_LONG +#include "templates_on.h" +#include "sortvec_source.c" +#include "templates_off.h" +#undef BASE_LONG + +#define BASE_UINT +#include "templates_on.h" +#include "sortvec_source.c" +#include "templates_off.h" +#undef BASE_UINT + +#define BASE_INT +#include "templates_on.h" +#include "sortvec_source.c" +#include "templates_off.h" +#undef BASE_INT + +#define BASE_USHORT +#include "templates_on.h" +#include "sortvec_source.c" +#include "templates_off.h" +#undef BASE_USHORT + +#define BASE_SHORT +#include "templates_on.h" +#include "sortvec_source.c" +#include "templates_off.h" +#undef BASE_SHORT + +#define BASE_UCHAR +#include "templates_on.h" +#include "sortvec_source.c" +#include "templates_off.h" +#undef BASE_UCHAR + +#define BASE_CHAR +#include "templates_on.h" +#include "sortvec_source.c" +#include "templates_off.h" +#undef BASE_CHAR diff --git a/gsl-2.5/sort/sortvec.lo b/gsl-2.5/sort/sortvec.lo new file mode 100644 index 00000000..0e1af7b5 --- /dev/null +++ b/gsl-2.5/sort/sortvec.lo @@ -0,0 +1,12 @@ +# sortvec.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/sortvec.o' + +# Name of the non-PIC object +non_pic_object='sortvec.o' + diff --git a/gsl-2.5/sort/sortvec_source.c b/gsl-2.5/sort/sortvec_source.c new file mode 100644 index 00000000..6e429a1d --- /dev/null +++ b/gsl-2.5/sort/sortvec_source.c @@ -0,0 +1,174 @@ +/* + * Implement Heap sort -- direct and indirect sorting + * Based on descriptions in Sedgewick "Algorithms in C" + * + * Copyright (C) 1999 Thomas Walter + * + * 18 February 2000: Modified for GSL by Brian Gough + * + * This is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 3, or (at your option) any + * later version. + * + * This source 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. + */ + +static inline void FUNCTION (my, downheap) (BASE * data, const size_t stride, const size_t N, size_t k); +static inline void FUNCTION (my, downheap2) (BASE * data1, const size_t stride1, BASE * data2, const size_t stride2, const size_t N, size_t k); + +static inline void +FUNCTION (my, downheap) (BASE * data, const size_t stride, const size_t N, size_t k) +{ + BASE v = data[k * stride]; + + while (k <= N / 2) + { + size_t j = 2 * k; + + if (j < N && data[j * stride] < data[(j + 1) * stride]) + { + j++; + } + + if (!(v < data[j * stride])) /* avoid infinite loop if nan */ + { + break; + } + + data[k * stride] = data[j * stride]; + + k = j; + } + + data[k * stride] = v; +} + +static inline void +FUNCTION (my, downheap2) (BASE * data1, const size_t stride1, BASE * data2, const size_t stride2, const size_t N, size_t k) +{ + BASE v1 = data1[k * stride1]; + BASE v2 = data2[k * stride2]; + + while (k <= N / 2) + { + size_t j = 2 * k; + + if (j < N && data1[j * stride1] < data1[(j + 1) * stride1]) + { + j++; + } + + if (!(v1 < data1[j * stride1])) /* avoid infinite loop if nan */ + { + break; + } + + data1[k * stride1] = data1[j * stride1]; + data2[k * stride2] = data2[j * stride2]; + + k = j; + } + + data1[k * stride1] = v1; + data2[k * stride2] = v2; +} + +void +TYPE (gsl_sort) (BASE * data, const size_t stride, const size_t n) +{ + size_t N; + size_t k; + + if (n == 0) + { + return; /* No data to sort */ + } + + /* We have n_data elements, last element is at 'n_data-1', first at + '0' Set N to the last element number. */ + + N = n - 1; + + k = N / 2; + k++; /* Compensate the first use of 'k--' */ + do + { + k--; + FUNCTION (my, downheap) (data, stride, N, k); + } + while (k > 0); + + while (N > 0) + { + /* first swap the elements */ + BASE tmp = data[0 * stride]; + data[0 * stride] = data[N * stride]; + data[N * stride] = tmp; + + /* then process the heap */ + N--; + + FUNCTION (my, downheap) (data, stride, N, 0); + } +} + +void +TYPE (gsl_sort_vector) (TYPE (gsl_vector) * v) +{ + TYPE (gsl_sort) (v->data, v->stride, v->size) ; +} + +void +TYPE (gsl_sort2) (BASE * data1, const size_t stride1, BASE * data2, const size_t stride2, const size_t n) +{ + size_t N; + size_t k; + + if (n == 0) + { + return; /* No data to sort */ + } + + /* We have n_data elements, last element is at 'n_data-1', first at + '0' Set N to the last element number. */ + + N = n - 1; + + k = N / 2; + k++; /* Compensate the first use of 'k--' */ + do + { + k--; + FUNCTION (my, downheap2) (data1, stride1, data2, stride2, N, k); + } + while (k > 0); + + while (N > 0) + { + /* first swap the elements */ + BASE tmp; + + tmp = data1[0 * stride1]; + data1[0 * stride1] = data1[N * stride1]; + data1[N * stride1] = tmp; + + tmp = data2[0 * stride2]; + data2[0 * stride2] = data2[N * stride2]; + data2[N * stride2] = tmp; + + /* then process the heap */ + N--; + + FUNCTION (my, downheap2) (data1, stride1, data2, stride2, N, 0); + } +} + +void +TYPE (gsl_sort_vector2) (TYPE (gsl_vector) * v1, TYPE (gsl_vector) * v2) +{ + TYPE (gsl_sort2) (v1->data, v1->stride, v2->data, v2->stride, v1->size) ; +} diff --git a/gsl-2.5/sort/sortvecind.c b/gsl-2.5/sort/sortvecind.c new file mode 100644 index 00000000..aa1aa8a7 --- /dev/null +++ b/gsl-2.5/sort/sortvecind.c @@ -0,0 +1,90 @@ +/* + * Implement Heap sort -- direct and indirect sorting + * Based on descriptions in Sedgewick "Algorithms in C" + * + * Copyright (C) 1999 Thomas Walter + * + * 18 February 2000: Modified for GSL by Brian Gough + * + * This is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 3, or (at your option) any + * later version. + * + * This source 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. + */ + +#include +#include +#include +#include +#include + +#define BASE_LONG_DOUBLE +#include "templates_on.h" +#include "sortvecind_source.c" +#include "templates_off.h" +#undef BASE_LONG_DOUBLE + +#define BASE_DOUBLE +#include "templates_on.h" +#include "sortvecind_source.c" +#include "templates_off.h" +#undef BASE_DOUBLE + +#define BASE_FLOAT +#include "templates_on.h" +#include "sortvecind_source.c" +#include "templates_off.h" +#undef BASE_FLOAT + +#define BASE_ULONG +#include "templates_on.h" +#include "sortvecind_source.c" +#include "templates_off.h" +#undef BASE_ULONG + +#define BASE_LONG +#include "templates_on.h" +#include "sortvecind_source.c" +#include "templates_off.h" +#undef BASE_LONG + +#define BASE_UINT +#include "templates_on.h" +#include "sortvecind_source.c" +#include "templates_off.h" +#undef BASE_UINT + +#define BASE_INT +#include "templates_on.h" +#include "sortvecind_source.c" +#include "templates_off.h" +#undef BASE_INT + +#define BASE_USHORT +#include "templates_on.h" +#include "sortvecind_source.c" +#include "templates_off.h" +#undef BASE_USHORT + +#define BASE_SHORT +#include "templates_on.h" +#include "sortvecind_source.c" +#include "templates_off.h" +#undef BASE_SHORT + +#define BASE_UCHAR +#include "templates_on.h" +#include "sortvecind_source.c" +#include "templates_off.h" +#undef BASE_UCHAR + +#define BASE_CHAR +#include "templates_on.h" +#include "sortvecind_source.c" +#include "templates_off.h" +#undef BASE_CHAR diff --git a/gsl-2.5/sort/sortvecind.lo b/gsl-2.5/sort/sortvecind.lo new file mode 100644 index 00000000..56a87060 --- /dev/null +++ b/gsl-2.5/sort/sortvecind.lo @@ -0,0 +1,12 @@ +# sortvecind.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/sortvecind.o' + +# Name of the non-PIC object +non_pic_object='sortvecind.o' + diff --git a/gsl-2.5/sort/sortvecind_source.c b/gsl-2.5/sort/sortvecind_source.c new file mode 100644 index 00000000..9b4dfd08 --- /dev/null +++ b/gsl-2.5/sort/sortvecind_source.c @@ -0,0 +1,106 @@ +/* + * Implement Heap sort -- direct and indirect sorting + * Based on descriptions in Sedgewick "Algorithms in C" + * + * Copyright (C) 1999 Thomas Walter + * + * 18 February 2000: Modified for GSL by Brian Gough + * + * This is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 3, or (at your option) any + * later version. + * + * This source 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. + */ + +static inline void FUNCTION (index, downheap) (size_t * p, const BASE * data, const size_t stride, const size_t N, size_t k); + +static inline void +FUNCTION (index, downheap) (size_t * p, const BASE * data, const size_t stride, const size_t N, size_t k) +{ + const size_t pki = p[k]; + + while (k <= N / 2) + { + size_t j = 2 * k; + + if (j < N && data[p[j] * stride] < data[p[j + 1] * stride]) + { + j++; + } + + if (!(data[pki * stride] < data[p[j] * stride])) /* avoid infinite loop if nan */ + { + break; + } + + p[k] = p[j]; + + k = j; + } + + p[k] = pki; +} + +void +FUNCTION (gsl_sort, index) (size_t * p, const BASE * data, const size_t stride, const size_t n) +{ + size_t N; + size_t i, k; + + if (n == 0) + { + return; /* No data to sort */ + } + + /* set permutation to identity */ + + for (i = 0 ; i < n ; i++) + { + p[i] = i ; + } + + /* We have n_data elements, last element is at 'n_data-1', first at + '0' Set N to the last element number. */ + + N = n - 1; + + k = N / 2; + k++; /* Compensate the first use of 'k--' */ + do + { + k--; + FUNCTION (index, downheap) (p, data, stride, N, k); + } + while (k > 0); + + while (N > 0) + { + /* first swap the elements */ + size_t tmp = p[0]; + p[0] = p[N]; + p[N] = tmp; + + /* then process the heap */ + N--; + + FUNCTION (index, downheap) (p, data, stride, N, 0); + } +} + +int +FUNCTION (gsl_sort_vector, index) (gsl_permutation * permutation, const TYPE (gsl_vector) * v) +{ + if (permutation->size != v->size) + { + GSL_ERROR ("permutation and vector lengths are not equal", GSL_EBADLEN); + } + + FUNCTION (gsl_sort, index) (permutation->data, v->data, v->stride, v->size) ; + + return GSL_SUCCESS ; +} diff --git a/gsl-2.5/sort/subset.c b/gsl-2.5/sort/subset.c new file mode 100644 index 00000000..4b2f33c0 --- /dev/null +++ b/gsl-2.5/sort/subset.c @@ -0,0 +1,86 @@ +/* sort/subset.c + * + * Copyright (C) 2001, 2007 Brian Gough + * + * This is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 3, or (at your option) any + * later version. + * + * This source 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. + */ + +#include +#include +#include +#include +#include + +#define BASE_LONG_DOUBLE +#include "templates_on.h" +#include "subset_source.c" +#include "templates_off.h" +#undef BASE_LONG_DOUBLE + +#define BASE_DOUBLE +#include "templates_on.h" +#include "subset_source.c" +#include "templates_off.h" +#undef BASE_DOUBLE + +#define BASE_FLOAT +#include "templates_on.h" +#include "subset_source.c" +#include "templates_off.h" +#undef BASE_FLOAT + +#define BASE_ULONG +#include "templates_on.h" +#include "subset_source.c" +#include "templates_off.h" +#undef BASE_ULONG + +#define BASE_LONG +#include "templates_on.h" +#include "subset_source.c" +#include "templates_off.h" +#undef BASE_LONG + +#define BASE_UINT +#include "templates_on.h" +#include "subset_source.c" +#include "templates_off.h" +#undef BASE_UINT + +#define BASE_INT +#include "templates_on.h" +#include "subset_source.c" +#include "templates_off.h" +#undef BASE_INT + +#define BASE_USHORT +#include "templates_on.h" +#include "subset_source.c" +#include "templates_off.h" +#undef BASE_USHORT + +#define BASE_SHORT +#include "templates_on.h" +#include "subset_source.c" +#include "templates_off.h" +#undef BASE_SHORT + +#define BASE_UCHAR +#include "templates_on.h" +#include "subset_source.c" +#include "templates_off.h" +#undef BASE_UCHAR + +#define BASE_CHAR +#include "templates_on.h" +#include "subset_source.c" +#include "templates_off.h" +#undef BASE_CHAR diff --git a/gsl-2.5/sort/subset.lo b/gsl-2.5/sort/subset.lo new file mode 100644 index 00000000..9ccb7410 --- /dev/null +++ b/gsl-2.5/sort/subset.lo @@ -0,0 +1,12 @@ +# subset.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/subset.o' + +# Name of the non-PIC object +non_pic_object='subset.o' + diff --git a/gsl-2.5/sort/subset_source.c b/gsl-2.5/sort/subset_source.c new file mode 100644 index 00000000..a4f6f688 --- /dev/null +++ b/gsl-2.5/sort/subset_source.c @@ -0,0 +1,146 @@ +/* sort/subset_source.c + * + * Copyright (C) 1999,2000,2001 Thomas Walter, Brian Gough + * + * This is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 3, or (at your option) any + * later version. + * + * This source 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. + */ + +/* find the k-th smallest elements of the vector data, in ascending order */ + +int +FUNCTION (gsl_sort, smallest) (BASE * dest, const size_t k, + const BASE * src, const size_t stride, + const size_t n) +{ + size_t i, j; + BASE xbound; + + if (k > n) + { + GSL_ERROR ("subset length k exceeds vector length n", GSL_EINVAL); + } + + if (k == 0 || n == 0) + { + return GSL_SUCCESS; + } + + /* take the first element */ + + j = 1; + xbound = src[0 * stride]; + dest[0] = xbound; + + /* examine the remaining elements */ + + for (i = 1; i < n; i++) + { + size_t i1; + + BASE xi = src[i * stride]; + + if (j < k) + { + j++; + } + else if (xi >= xbound) + { + continue; + } + + for (i1 = j - 1; i1 > 0 ; i1--) + { + if (xi > dest[i1 - 1]) + break; + + dest[i1] = dest[i1 - 1]; + } + + dest[i1] = xi; + + xbound = dest[j-1]; + } + + return GSL_SUCCESS; +} + + +int +FUNCTION (gsl_sort_vector,smallest) (BASE * dest, const size_t k, + const TYPE (gsl_vector) * v) +{ + return FUNCTION (gsl_sort, smallest) (dest, k, v->data, v->stride, v->size); +} + +int +FUNCTION (gsl_sort, largest) (BASE * dest, const size_t k, + const BASE * src, const size_t stride, + const size_t n) +{ + size_t i, j; + BASE xbound; + + if (k > n) + { + GSL_ERROR ("subset length k exceeds vector length n", GSL_EINVAL); + } + + if (k == 0 || n == 0) + { + return GSL_SUCCESS; + } + + /* take the first element */ + + j = 1; + xbound = src[0 * stride]; + dest[0] = xbound; + + /* examine the remaining elements */ + + for (i = 1; i < n; i++) + { + size_t i1; + + BASE xi = src[i * stride]; + + if (j < k) + { + j++; + } + else if (xi <= xbound) + { + continue; + } + + for (i1 = j - 1; i1 > 0 ; i1--) + { + if (xi < dest[i1 - 1]) + break; + + dest[i1] = dest[i1 - 1]; + } + + dest[i1] = xi; + + xbound = dest[j-1]; + } + + return GSL_SUCCESS; +} + + +int +FUNCTION (gsl_sort_vector,largest) (BASE * dest, const size_t k, + const TYPE (gsl_vector) * v) +{ + return FUNCTION (gsl_sort, largest) (dest, k, v->data, v->stride, v->size); +} diff --git a/gsl-2.5/sort/subsetind.c b/gsl-2.5/sort/subsetind.c new file mode 100644 index 00000000..c8874f50 --- /dev/null +++ b/gsl-2.5/sort/subsetind.c @@ -0,0 +1,86 @@ +/* sort/subsetind.c + * + * Copyright (C) 2001, 2007 Brian Gough + * + * This is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 3, or (at your option) any + * later version. + * + * This source 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. + */ + +#include +#include +#include +#include +#include + +#define BASE_LONG_DOUBLE +#include "templates_on.h" +#include "subsetind_source.c" +#include "templates_off.h" +#undef BASE_LONG_DOUBLE + +#define BASE_DOUBLE +#include "templates_on.h" +#include "subsetind_source.c" +#include "templates_off.h" +#undef BASE_DOUBLE + +#define BASE_FLOAT +#include "templates_on.h" +#include "subsetind_source.c" +#include "templates_off.h" +#undef BASE_FLOAT + +#define BASE_ULONG +#include "templates_on.h" +#include "subsetind_source.c" +#include "templates_off.h" +#undef BASE_ULONG + +#define BASE_LONG +#include "templates_on.h" +#include "subsetind_source.c" +#include "templates_off.h" +#undef BASE_LONG + +#define BASE_UINT +#include "templates_on.h" +#include "subsetind_source.c" +#include "templates_off.h" +#undef BASE_UINT + +#define BASE_INT +#include "templates_on.h" +#include "subsetind_source.c" +#include "templates_off.h" +#undef BASE_INT + +#define BASE_USHORT +#include "templates_on.h" +#include "subsetind_source.c" +#include "templates_off.h" +#undef BASE_USHORT + +#define BASE_SHORT +#include "templates_on.h" +#include "subsetind_source.c" +#include "templates_off.h" +#undef BASE_SHORT + +#define BASE_UCHAR +#include "templates_on.h" +#include "subsetind_source.c" +#include "templates_off.h" +#undef BASE_UCHAR + +#define BASE_CHAR +#include "templates_on.h" +#include "subsetind_source.c" +#include "templates_off.h" +#undef BASE_CHAR diff --git a/gsl-2.5/sort/subsetind.lo b/gsl-2.5/sort/subsetind.lo new file mode 100644 index 00000000..eb702699 --- /dev/null +++ b/gsl-2.5/sort/subsetind.lo @@ -0,0 +1,12 @@ +# subsetind.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/subsetind.o' + +# Name of the non-PIC object +non_pic_object='subsetind.o' + diff --git a/gsl-2.5/sort/subsetind_source.c b/gsl-2.5/sort/subsetind_source.c new file mode 100644 index 00000000..ebe745d0 --- /dev/null +++ b/gsl-2.5/sort/subsetind_source.c @@ -0,0 +1,146 @@ +/* sort/subsetind_source.c + * + * Copyright (C) 1999,2000,2001 Thomas Walter, Brian Gough + * + * This is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 3, or (at your option) any + * later version. + * + * This source 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. + */ + +/* find the k-th smallest elements of the vector data, in ascending order */ + +int +FUNCTION (gsl_sort, smallest_index) (size_t * p, const size_t k, + const BASE * src, const size_t stride, + const size_t n) +{ + size_t i, j; + BASE xbound; + + if (k > n) + { + GSL_ERROR ("subset length k exceeds vector length n", GSL_EINVAL); + } + + if (k == 0 || n == 0) + { + return GSL_SUCCESS; + } + + /* take the first element */ + + j = 1; + xbound = src[0 * stride]; + p[0] = 0; + + /* examine the remaining elements */ + + for (i = 1; i < n; i++) + { + size_t i1; + + BASE xi = src[i * stride]; + + if (j < k) + { + j++; + } + else if (xi >= xbound) + { + continue; + } + + for (i1 = j - 1; i1 > 0 ; i1--) + { + if (xi > src[p[i1 - 1] * stride]) + break; + + p[i1] = p[i1 - 1]; + } + + p[i1] = i; + + xbound = src[p[j-1] * stride]; + } + + return GSL_SUCCESS; +} + + +int +FUNCTION (gsl_sort_vector,smallest_index) (size_t * p, const size_t k, + const TYPE (gsl_vector) * v) +{ + return FUNCTION (gsl_sort, smallest_index) (p, k, v->data, v->stride, v->size); +} + +int +FUNCTION (gsl_sort, largest_index) (size_t * p, const size_t k, + const BASE * src, const size_t stride, + const size_t n) +{ + size_t i, j; + BASE xbound; + + if (k > n) + { + GSL_ERROR ("subset length k exceeds vector length n", GSL_EINVAL); + } + + if (k == 0 || n == 0) + { + return GSL_SUCCESS; + } + + /* take the first element */ + + j = 1; + xbound = src[0 * stride]; + p[0] = 0; + + /* examine the remaining elements */ + + for (i = 1; i < n; i++) + { + size_t i1; + + BASE xi = src[i * stride]; + + if (j < k) + { + j++; + } + else if (xi <= xbound) + { + continue; + } + + for (i1 = j - 1; i1 > 0 ; i1--) + { + if (xi < src[stride * p[i1 - 1]]) + break; + + p[i1] = p[i1 - 1]; + } + + p[i1] = i; + + xbound = src[stride * p[j-1]]; + } + + return GSL_SUCCESS; +} + + +int +FUNCTION (gsl_sort_vector,largest_index) (size_t * p, const size_t k, + const TYPE (gsl_vector) * v) +{ + return FUNCTION (gsl_sort, largest_index) (p, k, v->data, v->stride, v->size); +} diff --git a/gsl-2.5/sort/test b/gsl-2.5/sort/test new file mode 100755 index 00000000..32c1ecde Binary files /dev/null and b/gsl-2.5/sort/test differ diff --git a/gsl-2.5/sort/test-suite.log b/gsl-2.5/sort/test-suite.log new file mode 100644 index 00000000..2665465c --- /dev/null +++ b/gsl-2.5/sort/test-suite.log @@ -0,0 +1,14 @@ +================================== + gsl 2.5: sort/test-suite.log +================================== + +# TOTAL: 1 +# PASS: 1 +# SKIP: 0 +# XFAIL: 0 +# FAIL: 0 +# XPASS: 0 +# ERROR: 0 + +.. contents:: :depth: 2 + diff --git a/gsl-2.5/sort/test.c b/gsl-2.5/sort/test.c new file mode 100644 index 00000000..945e76fb --- /dev/null +++ b/gsl-2.5/sort/test.c @@ -0,0 +1,140 @@ +/* sort/test.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Thomas Walter, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +size_t urand (size_t); + +#include "test_heapsort.c" + +#define BASE_LONG_DOUBLE +#include "templates_on.h" +#include "test_source.c" +#include "templates_off.h" +#undef BASE_LONG_DOUBLE + +#define BASE_DOUBLE +#include "templates_on.h" +#include "test_source.c" +#include "templates_off.h" +#undef BASE_DOUBLE + +#define BASE_FLOAT +#include "templates_on.h" +#include "test_source.c" +#include "templates_off.h" +#undef BASE_FLOAT + +#define BASE_ULONG +#include "templates_on.h" +#include "test_source.c" +#include "templates_off.h" +#undef BASE_ULONG + +#define BASE_LONG +#include "templates_on.h" +#include "test_source.c" +#include "templates_off.h" +#undef BASE_LONG + +#define BASE_UINT +#include "templates_on.h" +#include "test_source.c" +#include "templates_off.h" +#undef BASE_UINT + +#define BASE_INT +#include "templates_on.h" +#include "test_source.c" +#include "templates_off.h" +#undef BASE_INT + +#define BASE_USHORT +#include "templates_on.h" +#include "test_source.c" +#include "templates_off.h" +#undef BASE_USHORT + +#define BASE_SHORT +#include "templates_on.h" +#include "test_source.c" +#include "templates_off.h" +#undef BASE_SHORT + +#define BASE_UCHAR +#include "templates_on.h" +#include "test_source.c" +#include "templates_off.h" +#undef BASE_UCHAR + +#define BASE_CHAR +#include "templates_on.h" +#include "test_source.c" +#include "templates_off.h" +#undef BASE_CHAR + +int +main (void) +{ + size_t i, s; + + gsl_ieee_env_setup (); + + /* Test for lengths of 1 ... 31, then 32, 64, 128, 256, ... */ + + for (i = 1; i < 1024; i = (i < 32) ? i + 1 : 2 * i) + test_heapsort (i); + + for (i = 1; i < 1024; i = (i < 32) ? i + 1 : 2 * i) + { + for (s = 1; s < 4; s++) + { + test_sort_vector (i, s); + test_sort_vector_float (i, s); + test_sort_vector_long_double (i, s); + test_sort_vector_ulong (i, s); + test_sort_vector_long (i, s); + test_sort_vector_uint (i, s); + test_sort_vector_int (i, s); + test_sort_vector_ushort (i, s); + test_sort_vector_short (i, s); + test_sort_vector_uchar (i, s); + test_sort_vector_char (i, s); + } + } + + exit (gsl_test_summary ()); +} + +size_t +urand (size_t N) +{ + static unsigned long int x = 1; + x = (1103515245 * x + 12345) & 0x7fffffffUL; + return (size_t) ((x / 2147483648.0) * N); +} diff --git a/gsl-2.5/sort/test.log b/gsl-2.5/sort/test.log new file mode 100644 index 00000000..a57dbcae --- /dev/null +++ b/gsl-2.5/sort/test.log @@ -0,0 +1 @@ +Completed [26352/26352] diff --git a/gsl-2.5/sort/test.trs b/gsl-2.5/sort/test.trs new file mode 100644 index 00000000..3f0f396c --- /dev/null +++ b/gsl-2.5/sort/test.trs @@ -0,0 +1,4 @@ +:test-result: PASS +:global-test-result: PASS +:recheck: no +:copy-in-global-log: no diff --git a/gsl-2.5/sort/test_heapsort.c b/gsl-2.5/sort/test_heapsort.c new file mode 100644 index 00000000..3f8bfbfe --- /dev/null +++ b/gsl-2.5/sort/test_heapsort.c @@ -0,0 +1,183 @@ +/* sort/test_heapsort.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Thomas Walter, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +int cmp_dbl (const void *a, const void *b); +void test_heapsort (size_t N); +void initialize (double *data, size_t N); +void cpy (double *dest, double *src, size_t N); +void randomize (double *data, size_t n); +void reverse (double *data, size_t N); +int check (double *data, double *orig, size_t N); +int pcheck (size_t * p, double *data, double *orig, size_t N); + +void +test_heapsort (size_t N) +{ + int status; + + double *orig = (double *) malloc (N * sizeof (double)); + double *data = (double *) malloc (N * sizeof (double)); + size_t *p = (size_t *) malloc (N * sizeof(size_t)); + + initialize (orig, N); + + /* Already sorted */ + cpy (data, orig, N); + + status = gsl_heapsort_index (p, data, N, sizeof (double), (gsl_comparison_fn_t) & cmp_dbl); + status |= pcheck (p, data, orig, N); + gsl_test (status, "indexing array, n = %u, ordered", N); + + gsl_heapsort (data, N, sizeof (double), (gsl_comparison_fn_t) & cmp_dbl); + status = check (data, orig, N); + + gsl_test (status, "sorting, array, n = %u, ordered", N); + + /* Reverse the data */ + + cpy (data, orig, N); + reverse (data, N); + + status = gsl_heapsort_index (p, data, N, sizeof (double), (gsl_comparison_fn_t) & cmp_dbl); + status |= pcheck (p, data, orig, N); + gsl_test (status, "indexing array, n = %u, reversed", N); + + gsl_heapsort (data, N, sizeof (double), (gsl_comparison_fn_t) & cmp_dbl); + status = check (data, orig, N); + + gsl_test (status, "sorting, array, n = %u, reversed", N); + + /* Perform some shuffling */ + + cpy (data, orig, N); + randomize (data, N); + + status = gsl_heapsort_index (p, data, N, sizeof (double), (gsl_comparison_fn_t) & cmp_dbl); + status |= pcheck (p, data, orig, N); + gsl_test (status, "indexing array, n = %u, randomized", N); + + gsl_heapsort (data, N, sizeof (double), (gsl_comparison_fn_t) & cmp_dbl); + status = check (data, orig, N); + + gsl_test (status, "sorting, array, n = %u, randomized", N); + + free (orig); + free (data); + free (p); +} + +void +initialize (double *data, size_t N) +{ + size_t i; + + for (i = 0; i < N; i++) + { + data[i] = i; + } +} + +void +cpy (double *dest, double *src, size_t N) +{ + size_t i; + + for (i = 0; i < N; i++) + { + dest[i] = src[i]; + } +} + +void +randomize (double *data, size_t N) +{ + size_t i; + + for (i = 0; i < N; i++) + { + size_t j = urand (N); + double tmp = data[i]; + data[i] = data[j]; + data[j] = tmp; + } +} + +void +reverse (double *data, size_t N) +{ + size_t i; + + for (i = 0; i < N / 2; i++) + { + size_t j = N - i - 1; + + { + double tmp = data[i]; + data[i] = data[j]; + data[j] = tmp; + } + } +} + +int +check (double *data, double *orig, size_t N) +{ + size_t i; + + for (i = 0; i < N; i++) + { + if (data[i] != orig[i]) + { + return GSL_FAILURE; + } + } + + return GSL_SUCCESS; +} + +int +pcheck (size_t * p, double *data, double *orig, size_t N) +{ + size_t i; + + for (i = 0; i < N; i++) + { + if (data[p[i]] != orig[i]) + { + return GSL_FAILURE; + } + } + + return GSL_SUCCESS; +} + + + +int +cmp_dbl (const void *a, const void *b) +{ + const double x = *(const double *) a; + const double y = *(const double *) b; + if (x > y) + return 1; + if (x == y) + return 0; + else + return -1; +} diff --git a/gsl-2.5/sort/test_source.c b/gsl-2.5/sort/test_source.c new file mode 100644 index 00000000..3e6525e2 --- /dev/null +++ b/gsl-2.5/sort/test_source.c @@ -0,0 +1,323 @@ +/* sort/test_source.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Thomas Walter, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +void TYPE (test_sort_vector) (size_t N, size_t stride); +void FUNCTION (my, initialize) (TYPE (gsl_vector) * v); +void FUNCTION (my, randomize) (TYPE (gsl_vector) * v); +int FUNCTION (my, check) (TYPE (gsl_vector) * data, TYPE (gsl_vector) * orig); +int FUNCTION (my, pcheck) (gsl_permutation * p, TYPE (gsl_vector) * data, TYPE (gsl_vector) * orig); +int FUNCTION (my, scheck) (BASE * x, size_t k, TYPE (gsl_vector) * data); +int FUNCTION (my, lcheck) (BASE * x, size_t k, TYPE (gsl_vector) * data); +int FUNCTION (my, sicheck) (size_t * p, size_t k, gsl_permutation * perm, + TYPE (gsl_vector) * data); +int FUNCTION (my, licheck) (size_t * p, size_t k, gsl_permutation * perm, + TYPE (gsl_vector) * data); + +void +TYPE (test_sort_vector) (size_t N, size_t stride) +{ + int status; + size_t k = N/2; + + TYPE (gsl_block) * b1 = FUNCTION (gsl_block, calloc) (N * stride); + TYPE (gsl_block) * b2 = FUNCTION (gsl_block, calloc) (N * stride); + TYPE (gsl_block) * b3 = FUNCTION (gsl_block, calloc) (N * stride); + + TYPE (gsl_vector) * orig = FUNCTION (gsl_vector, alloc_from_block) (b1, 0, N, stride); + TYPE (gsl_vector) * data = FUNCTION (gsl_vector, alloc_from_block) (b2, 0, N, stride); + TYPE (gsl_vector) * data2 = FUNCTION (gsl_vector, alloc_from_block) (b3, 0, N, stride); + + BASE * small = (BASE *)malloc(k * sizeof(BASE)); + BASE * large = (BASE *)malloc(k * sizeof(BASE)); + size_t * index = (size_t *)malloc(k * sizeof(size_t)); + + gsl_permutation *p = gsl_permutation_alloc (N); + + FUNCTION (my, initialize) (orig); + + /* Already sorted */ + FUNCTION (gsl_vector, memcpy) (data, orig); + + status = FUNCTION (gsl_sort_vector, index) (p, data); + status |= FUNCTION (my, pcheck) (p, data, orig); + gsl_test (status, "indexing " NAME (gsl_vector) ", n = %u, stride = %u, ordered", N, stride); + + TYPE (gsl_sort_vector) (data); + status = FUNCTION (my, check) (data, orig); + gsl_test (status, "sorting, " NAME (gsl_vector) ", n = %u, stride = %u, ordered", N, stride); + + FUNCTION (gsl_sort_vector, smallest) (small, k, data); + status = FUNCTION (my, scheck) (small, k, orig); + gsl_test (status, "smallest, " NAME (gsl_vector) ", n = %u, stride = %u, ordered", N, stride); + + FUNCTION (gsl_sort_vector, largest) (large, k, data); + status = FUNCTION (my, lcheck) (large, k, orig); + gsl_test (status, "largest, " NAME (gsl_vector) ", n = %u, stride = %u, ordered", N, stride); + + FUNCTION (gsl_sort_vector, smallest_index) (index, k, data); + status = FUNCTION (my, sicheck) (index, k, p, data); + gsl_test (status, "smallest index, " NAME (gsl_vector) ", n = %u, stride = %u, ordered", N, stride); + + FUNCTION (gsl_sort_vector, largest_index) (index, k, data); + status = FUNCTION (my, licheck) (index, k, p, data); + gsl_test (status, "largest index, " NAME (gsl_vector) ", n = %u, stride = %u, ordered", N, stride); + + /* Reverse the data */ + + FUNCTION (gsl_vector, memcpy) (data, orig); + FUNCTION (gsl_vector, reverse) (data); + + status = FUNCTION (gsl_sort_vector, index) (p, data); + status |= FUNCTION (my, pcheck) (p, data, orig); + gsl_test (status, "indexing " NAME (gsl_vector) ", n = %u, stride = %u, reversed", N, stride); + + TYPE (gsl_sort_vector) (data); + status = FUNCTION (my, check) (data, orig); + gsl_test (status, "sorting, " NAME (gsl_vector) ", n = %u, stride = %u, reversed", N, stride); + + FUNCTION (gsl_vector, memcpy) (data, orig); + FUNCTION (gsl_vector, reverse) (data); + FUNCTION (gsl_vector, memcpy) (data2, data); + + TYPE (gsl_sort_vector2) (data, data2); + status = FUNCTION (my, check) (data, orig); + gsl_test (status, "sorting2, " NAME (gsl_vector) ", n = %u, stride = %u, reversed data", N, stride); + status = FUNCTION (my, check) (data2, orig); + gsl_test (status, "sorting2, " NAME (gsl_vector) ", n = %u, stride = %u, reversed data2", N, stride); + + FUNCTION (gsl_vector, memcpy) (data, orig); + FUNCTION (gsl_vector, reverse) (data); + + FUNCTION (gsl_sort_vector, smallest) (small, k, data); + status = FUNCTION (my, scheck) (small, k, orig); + gsl_test (status, "smallest, " NAME (gsl_vector) ", n = %u, stride = %u, reversed", N, stride); + + FUNCTION (gsl_sort_vector, largest) (large, k, data); + status = FUNCTION (my, lcheck) (large, k, orig); + gsl_test (status, "largest, " NAME (gsl_vector) ", n = %u, stride = %u, reversed", N, stride); + + FUNCTION (gsl_sort_vector, smallest_index) (index, k, data); + status = FUNCTION (my, sicheck) (index, k, p, data); + gsl_test (status, "smallest index, " NAME (gsl_vector) ", n = %u, stride = %u, reversed", N, stride); + + FUNCTION (gsl_sort_vector, largest_index) (index, k, data); + status = FUNCTION (my, licheck) (index, k, p, data); + gsl_test (status, "largest index, " NAME (gsl_vector) ", n = %u, stride = %u, reversed", N, stride); + + /* Perform some shuffling */ + + FUNCTION (gsl_vector, memcpy) (data, orig); + FUNCTION (my, randomize) (data); + FUNCTION (gsl_vector, memcpy) (data2, data); + + TYPE (gsl_sort_vector2) (data, data2); + status = FUNCTION (my, check) (data, orig); + gsl_test (status, "sorting2, " NAME (gsl_vector) ", n = %u, stride = %u, randomized data", N, stride); + status = FUNCTION (my, check) (data2, orig); + gsl_test (status, "sorting2, " NAME (gsl_vector) ", n = %u, stride = %u, randomized data2", N, stride); + + FUNCTION (gsl_vector, memcpy) (data, orig); + FUNCTION (my, randomize) (data); + FUNCTION (gsl_vector, memcpy) (data2, data); + + status = FUNCTION (gsl_sort_vector, index) (p, data); + status |= FUNCTION (my, pcheck) (p, data, orig); + gsl_test (status, "indexing " NAME (gsl_vector) ", n = %u, stride = %u, randomized", N, stride); + + TYPE (gsl_sort_vector) (data); + status = FUNCTION (my, check) (data, orig); + gsl_test (status, "sorting, " NAME (gsl_vector) ", n = %u, stride = %u, randomized", N, stride); + + FUNCTION (gsl_vector, memcpy) (data, data2); + + FUNCTION (gsl_sort_vector, smallest) (small, k, data); + status = FUNCTION (my, scheck) (small, k, orig); + gsl_test (status, "smallest, " NAME (gsl_vector) ", n = %u, stride = %u, randomized", N, stride); + + FUNCTION (gsl_sort_vector, largest) (large, k, data); + status = FUNCTION (my, lcheck) (large, k, orig); + gsl_test (status, "largest, " NAME (gsl_vector) ", n = %u, stride = %u, randomized", N, stride); + + FUNCTION (gsl_sort_vector, smallest_index) (index, k, data); + status = FUNCTION (my, sicheck) (index, k, p, data); + gsl_test (status, "smallest index, " NAME (gsl_vector) ", n = %u, stride = %u, randomized", N, stride); + + FUNCTION (gsl_sort_vector, largest_index) (index, k, data); + status = FUNCTION (my, licheck) (index, k, p, data); + gsl_test (status, "largest index, " NAME (gsl_vector) ", n = %u, stride = %u, randomized", N, stride); + + FUNCTION (gsl_vector, free) (orig); + FUNCTION (gsl_vector, free) (data); + FUNCTION (gsl_vector, free) (data2); + FUNCTION (gsl_block, free) (b1); + FUNCTION (gsl_block, free) (b2); + FUNCTION (gsl_block, free) (b3); + gsl_permutation_free (p); + free (small); + free (large); + free (index); +} + + +void +FUNCTION (my, initialize) (TYPE (gsl_vector) * v) +{ + size_t i; + ATOMIC k = 0; + volatile ATOMIC kk; + + /* Must be sorted initially */ + + for (i = 0; i < v->size; i++) + { + kk = k; + k++; + /* Prevent overflow */ + if (k < kk) k = kk; + FUNCTION (gsl_vector, set) (v, i, k); + } +} + +void +FUNCTION (my, randomize) (TYPE (gsl_vector) * v) +{ + size_t i; + + for (i = 0; i < v->size; i++) + { + size_t j = urand (v->size); + FUNCTION (gsl_vector, swap_elements) (v, i, j); + } +} + +int +FUNCTION (my, check) (TYPE (gsl_vector) * data, TYPE (gsl_vector) * orig) +{ + size_t i; + + for (i = 0; i < data->size; i++) + { + if (FUNCTION (gsl_vector, get) (data, i) != FUNCTION (gsl_vector, get) (orig, i)) + { +#if DUMP_ERROR + size_t j; + for (j = 0 ; j < data->size; j++) { + printf("%u: " OUT_FORMAT " " OUT_FORMAT " %c\n", j, + FUNCTION (gsl_vector, get) (data, j), + FUNCTION (gsl_vector, get) (orig, j), + (i == j) ? '*' : ' '); + } +#endif + + return GSL_FAILURE; + } + } + + return GSL_SUCCESS; +} + +int +FUNCTION (my, pcheck) (gsl_permutation * p, TYPE (gsl_vector) * data, TYPE (gsl_vector) * orig) +{ + size_t i; + + for (i = 0; i < p->size; i++) + { + if (FUNCTION (gsl_vector, get) (data, p->data[i]) != FUNCTION (gsl_vector, get) (orig, i)) + { + return GSL_FAILURE; + } + } + + return GSL_SUCCESS; +} + +int +FUNCTION (my, scheck) (BASE * x, size_t k, TYPE (gsl_vector) * data) +{ + size_t i; + + for (i = 0; i < k; i++) + { + if (x[i] != FUNCTION (gsl_vector, get) (data, i)) + { + return GSL_FAILURE; + } + } + + return GSL_SUCCESS; +} + + + +int +FUNCTION (my, lcheck) (BASE * x, size_t k, TYPE (gsl_vector) * data) +{ + size_t i; + + for (i = 0; i < k; i++) + { + if (x[i] != FUNCTION (gsl_vector, get) (data, data->size - i - 1)) + { + return GSL_FAILURE; + } + } + + return GSL_SUCCESS; +} + + +int +FUNCTION (my, sicheck) (size_t * p1, size_t k, gsl_permutation * p, + TYPE (gsl_vector) * data) +{ + size_t i; + + for (i = 0; i < k; i++) + { + if (FUNCTION(gsl_vector,get)(data,p1[i]) + != FUNCTION(gsl_vector,get)(data, p->data[i])) + { + return GSL_FAILURE; + } + } + + return GSL_SUCCESS; +} + +int +FUNCTION (my, licheck) (size_t * p1, size_t k, gsl_permutation * p, + TYPE (gsl_vector) * data) +{ + size_t i; + + for (i = 0; i < k; i++) + { + if (FUNCTION(gsl_vector,get)(data,p1[i]) + != FUNCTION(gsl_vector,get)(data, p->data[p->size - i - 1])) + { + return GSL_FAILURE; + } + } + + return GSL_SUCCESS; +} + + + diff --git a/gsl-2.5/spblas/.deps/spdgemm.Plo b/gsl-2.5/spblas/.deps/spdgemm.Plo new file mode 100644 index 00000000..19eeedc8 --- /dev/null +++ b/gsl-2.5/spblas/.deps/spdgemm.Plo @@ -0,0 +1,300 @@ +spdgemm.lo: spdgemm.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_spmatrix.h ../gsl/gsl_math.h ../gsl/gsl_sys.h \ + ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_spblas.h ../gsl/gsl_blas.h \ + ../gsl/gsl_blas_types.h ../gsl/gsl_cblas.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_spmatrix.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_spblas.h: + +../gsl/gsl_blas.h: + +../gsl/gsl_blas_types.h: + +../gsl/gsl_cblas.h: diff --git a/gsl-2.5/spblas/.deps/spdgemv.Plo b/gsl-2.5/spblas/.deps/spdgemv.Plo new file mode 100644 index 00000000..7df763ad --- /dev/null +++ b/gsl-2.5/spblas/.deps/spdgemv.Plo @@ -0,0 +1,300 @@ +spdgemv.lo: spdgemv.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_math.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_spmatrix.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_spblas.h ../gsl/gsl_blas.h \ + ../gsl/gsl_blas_types.h ../gsl/gsl_cblas.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_spmatrix.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_spblas.h: + +../gsl/gsl_blas.h: + +../gsl/gsl_blas_types.h: + +../gsl/gsl_cblas.h: diff --git a/gsl-2.5/spblas/.deps/test.Po b/gsl-2.5/spblas/.deps/test.Po new file mode 100644 index 00000000..baf0965e --- /dev/null +++ b/gsl-2.5/spblas/.deps/test.Po @@ -0,0 +1,308 @@ +test.o: test.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_math.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_randist.h ../gsl/gsl_rng.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_complex.h \ + ../gsl/gsl_check_range.h ../gsl/gsl_vector_long_double.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_vector_complex.h \ + ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_test.h ../gsl/gsl_blas.h \ + ../gsl/gsl_blas_types.h ../gsl/gsl_cblas.h ../gsl/gsl_spmatrix.h \ + ../gsl/gsl_spblas.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_randist.h: + +../gsl/gsl_rng.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_test.h: + +../gsl/gsl_blas.h: + +../gsl/gsl_blas_types.h: + +../gsl/gsl_cblas.h: + +../gsl/gsl_spmatrix.h: + +../gsl/gsl_spblas.h: diff --git a/gsl-2.5/spblas/.libs/libgslspblas.la b/gsl-2.5/spblas/.libs/libgslspblas.la new file mode 120000 index 00000000..6f6407d2 --- /dev/null +++ b/gsl-2.5/spblas/.libs/libgslspblas.la @@ -0,0 +1 @@ +../libgslspblas.la \ No newline at end of file diff --git a/gsl-2.5/spblas/.libs/lt-test b/gsl-2.5/spblas/.libs/lt-test new file mode 100755 index 00000000..c2d262b0 Binary files /dev/null and b/gsl-2.5/spblas/.libs/lt-test differ diff --git a/gsl-2.5/spblas/.libs/test b/gsl-2.5/spblas/.libs/test new file mode 100755 index 00000000..b0546a77 Binary files /dev/null and b/gsl-2.5/spblas/.libs/test differ diff --git a/gsl-2.5/spblas/Makefile b/gsl-2.5/spblas/Makefile new file mode 100644 index 00000000..17b7fd9c --- /dev/null +++ b/gsl-2.5/spblas/Makefile @@ -0,0 +1,1028 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# spblas/Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + + + + +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/gsl +pkgincludedir = $(includedir)/gsl +pkglibdir = $(libdir)/gsl +pkglibexecdir = $(libexecdir)/gsl +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = x86_64-unknown-linux-gnu +host_triplet = x86_64-unknown-linux-gnu +check_PROGRAMS = test$(EXEEXT) +subdir = spblas +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp \ + $(pkginclude_HEADERS) $(top_srcdir)/test-driver +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +libgslspblas_la_LIBADD = +am_libgslspblas_la_OBJECTS = spdgemm.lo spdgemv.lo +libgslspblas_la_OBJECTS = $(am_libgslspblas_la_OBJECTS) +AM_V_lt = $(am__v_lt_$(V)) +am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) +am__v_lt_0 = --silent +am__v_lt_1 = +am_test_OBJECTS = test.$(OBJEXT) +test_OBJECTS = $(am_test_OBJECTS) +test_DEPENDENCIES = libgslspblas.la ../spmatrix/libgslspmatrix.la \ + ../test/libgsltest.la ../blas/libgslblas.la \ + ../cblas/libgslcblas.la ../matrix/libgslmatrix.la \ + ../vector/libgslvector.la ../block/libgslblock.la \ + ../sys/libgslsys.la ../err/libgslerr.la ../utils/libutils.la \ + ../rng/libgslrng.la +AM_V_P = $(am__v_P_$(V)) +am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY)) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_$(V)) +am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_$(V)) +am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I. -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_$(V)) +am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_$(V)) +am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libgslspblas_la_SOURCES) $(test_SOURCES) +DIST_SOURCES = $(libgslspblas_la_SOURCES) $(test_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(pkgincludedir)" +HEADERS = $(pkginclude_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = .test +LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing aclocal-1.13 +AMTAR = $${TAR-tar} +AM_DEFAULT_VERBOSITY = 1 +AR = ar +AS = as +AUTOCONF = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing autoconf +AUTOHEADER = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing autoheader +AUTOMAKE = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing automake-1.13 +AWK = gawk +CC = gcc +CCDEPMODE = depmode=gcc3 +CFLAGS = -g -O2 +CPP = gcc -E +CPPFLAGS = +CYGPATH_W = echo +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +DLLTOOL = false +DSYMUTIL = +DUMPBIN = +ECHO_C = +ECHO_N = -n +ECHO_T = +EGREP = /usr/bin/grep -E +EXEEXT = +FGREP = /usr/bin/grep -F +GREP = /usr/bin/grep +GSLCBLAS_LDFLAGS = +GSL_CFLAGS = -I${prefix}/include +GSL_LDFLAGS = +GSL_LIBADD = +GSL_LIBM = -lm +GSL_LIBS = -L${exec_prefix}/lib -lgsl +GSL_LT_CBLAS_VERSION = 0:0:0 +GSL_LT_VERSION = 24:0:1 +GSL_MAJOR_VERSION = 2 +GSL_MINOR_VERSION = 5 +HAVE_AIX_IEEE_INTERFACE = +HAVE_DARWIN86_IEEE_INTERFACE = +HAVE_DARWIN_IEEE_INTERFACE = +HAVE_FREEBSD_IEEE_INTERFACE = +HAVE_GNUM68K_IEEE_INTERFACE = +HAVE_GNUPPC_IEEE_INTERFACE = +HAVE_GNUSPARC_IEEE_INTERFACE = +HAVE_GNUX86_IEEE_INTERFACE = +HAVE_HPUX11_IEEE_INTERFACE = +HAVE_HPUX_IEEE_INTERFACE = +HAVE_IRIX_IEEE_INTERFACE = +HAVE_NETBSD_IEEE_INTERFACE = +HAVE_OPENBSD_IEEE_INTERFACE = +HAVE_OS2EMX_IEEE_INTERFACE = +HAVE_SOLARIS_IEEE_INTERFACE = +HAVE_SUNOS4_IEEE_INTERFACE = +HAVE_TRU64_IEEE_INTERFACE = +INSTALL = /usr/bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = $(install_sh) -c -s +LD = /usr/bin/ld -m elf_x86_64 +LDFLAGS = +LIBM = -lm +LIBOBJS = +LIBS = -lm +LIBTOOL = $(SHELL) $(top_builddir)/libtool +LIPO = +LN_S = ln -s +LTLIBOBJS = +MAINT = # +MAKEINFO = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing makeinfo +MANIFEST_TOOL = : +MKDIR_P = /usr/bin/mkdir -p +NM = /usr/bin/nm -B +NMEDIT = +OBJDUMP = objdump +OBJEXT = o +OTOOL = +OTOOL64 = +PACKAGE = gsl +PACKAGE_BUGREPORT = +PACKAGE_NAME = gsl +PACKAGE_STRING = gsl 2.5 +PACKAGE_TARNAME = gsl +PACKAGE_URL = +PACKAGE_VERSION = 2.5 +PATH_SEPARATOR = : +RANLIB = ranlib +SED = /usr/bin/sed +SET_MAKE = +SHELL = /bin/sh +STRIP = strip +VERSION = 2.5 +abs_builddir = /home/groups/kipac/chto/package/gsl/gsl-2.5/spblas +abs_srcdir = /home/groups/kipac/chto/package/gsl/gsl-2.5/spblas +abs_top_builddir = /home/groups/kipac/chto/package/gsl/gsl-2.5 +abs_top_srcdir = /home/groups/kipac/chto/package/gsl/gsl-2.5 +ac_ct_AR = ar +ac_ct_CC = gcc +ac_ct_DUMPBIN = +am__include = include +am__leading_dot = . +am__quote = +am__tar = $${TAR-tar} chof - "$$tardir" +am__untar = $${TAR-tar} xf - +bindir = ${exec_prefix}/bin +build = x86_64-unknown-linux-gnu +build_alias = +build_cpu = x86_64 +build_os = linux-gnu +build_vendor = unknown +builddir = . +datadir = ${datarootdir} +datarootdir = ${prefix}/share +docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} +dvidir = ${docdir} +exec_prefix = ${prefix} +host = x86_64-unknown-linux-gnu +host_alias = +host_cpu = x86_64 +host_os = linux-gnu +host_vendor = unknown +htmldir = ${docdir} +includedir = ${prefix}/include +infodir = ${datarootdir}/info +install_sh = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/install-sh +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +localedir = ${datarootdir}/locale +localstatedir = ${prefix}/var +mandir = ${datarootdir}/man +mkdir_p = $(MKDIR_P) +oldincludedir = /usr/include +pdfdir = ${docdir} +prefix = /home/groups/kipac/chto/package/gsl/gsl_lib +program_transform_name = s,x,x, +psdir = ${docdir} +sbindir = ${exec_prefix}/sbin +sharedstatedir = ${prefix}/com +srcdir = . +sysconfdir = ${prefix}/etc +target_alias = +top_build_prefix = ../ +top_builddir = .. +top_srcdir = .. +noinst_LTLIBRARIES = libgslspblas.la +pkginclude_HEADERS = gsl_spblas.h +libgslspblas_la_SOURCES = spdgemm.c spdgemv.c +AM_CPPFLAGS = -I$(top_srcdir) +TESTS = $(check_PROGRAMS) +test_LDADD = libgslspblas.la ../spmatrix/libgslspmatrix.la ../test/libgsltest.la ../blas/libgslblas.la ../cblas/libgslcblas.la ../matrix/libgslmatrix.la ../vector/libgslvector.la ../block/libgslblock.la ../sys/libgslsys.la ../err/libgslerr.la ../utils/libutils.la ../rng/libgslrng.la +test_SOURCES = test.c +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu spblas/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu spblas/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: # $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): # $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libgslspblas.la: $(libgslspblas_la_OBJECTS) $(libgslspblas_la_DEPENDENCIES) $(EXTRA_libgslspblas_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(libgslspblas_la_OBJECTS) $(libgslspblas_la_LIBADD) $(LIBS) + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) $(EXTRA_test_DEPENDENCIES) + @rm -f test$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_OBJECTS) $(test_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +include ./$(DEPDIR)/spdgemm.Plo +include ./$(DEPDIR)/spdgemv.Plo +include ./$(DEPDIR)/test.Po + +.c.o: + $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# $(AM_V_CC)source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(COMPILE) -c $< + +.c.obj: + $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# $(AM_V_CC)source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: + $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +# $(AM_V_CC)source='$<' object='$@' libtool=yes \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-pkgincludeHEADERS: $(pkginclude_HEADERS) + @$(NORMAL_INSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \ + done + +uninstall-pkgincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + else \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_PROGRAMS) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +test.log: test$(EXEEXT) + @p='test$(EXEEXT)'; \ + b='test'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +#.test$(EXEEXT).log: +# @p='$<'; \ +# $(am__set_b); \ +# $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +# --log-file $$b.log --trs-file $$b.trs \ +# $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +# "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-am +all-am: Makefile $(LTLIBRARIES) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(pkgincludedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-pkgincludeHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-pkgincludeHEADERS + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES cscopelist-am ctags ctags-am distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-pkgincludeHEADERS \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + recheck tags tags-am uninstall uninstall-am \ + uninstall-pkgincludeHEADERS + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gsl-2.5/spblas/Makefile.am b/gsl-2.5/spblas/Makefile.am new file mode 100644 index 00000000..9b717316 --- /dev/null +++ b/gsl-2.5/spblas/Makefile.am @@ -0,0 +1,15 @@ +noinst_LTLIBRARIES = libgslspblas.la + +check_PROGRAMS = test + +pkginclude_HEADERS = gsl_spblas.h + +libgslspblas_la_SOURCES = spdgemm.c spdgemv.c + +AM_CPPFLAGS = -I$(top_srcdir) + +TESTS = $(check_PROGRAMS) + +test_LDADD = libgslspblas.la ../spmatrix/libgslspmatrix.la ../test/libgsltest.la ../blas/libgslblas.la ../cblas/libgslcblas.la ../matrix/libgslmatrix.la ../vector/libgslvector.la ../block/libgslblock.la ../sys/libgslsys.la ../err/libgslerr.la ../utils/libutils.la ../rng/libgslrng.la + +test_SOURCES = test.c diff --git a/gsl-2.5/spblas/Makefile.in b/gsl-2.5/spblas/Makefile.in new file mode 100644 index 00000000..af6de669 --- /dev/null +++ b/gsl-2.5/spblas/Makefile.in @@ -0,0 +1,1028 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + + +VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +check_PROGRAMS = test$(EXEEXT) +subdir = spblas +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp \ + $(pkginclude_HEADERS) $(top_srcdir)/test-driver +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +libgslspblas_la_LIBADD = +am_libgslspblas_la_OBJECTS = spdgemm.lo spdgemv.lo +libgslspblas_la_OBJECTS = $(am_libgslspblas_la_OBJECTS) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +am_test_OBJECTS = test.$(OBJEXT) +test_OBJECTS = $(am_test_OBJECTS) +test_DEPENDENCIES = libgslspblas.la ../spmatrix/libgslspmatrix.la \ + ../test/libgsltest.la ../blas/libgslblas.la \ + ../cblas/libgslcblas.la ../matrix/libgslmatrix.la \ + ../vector/libgslvector.la ../block/libgslblock.la \ + ../sys/libgslsys.la ../err/libgslerr.la ../utils/libutils.la \ + ../rng/libgslrng.la +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libgslspblas_la_SOURCES) $(test_SOURCES) +DIST_SOURCES = $(libgslspblas_la_SOURCES) $(test_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(pkgincludedir)" +HEADERS = $(pkginclude_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = @EXEEXT@ .test +LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +GSLCBLAS_LDFLAGS = @GSLCBLAS_LDFLAGS@ +GSL_CFLAGS = @GSL_CFLAGS@ +GSL_LDFLAGS = @GSL_LDFLAGS@ +GSL_LIBADD = @GSL_LIBADD@ +GSL_LIBM = @GSL_LIBM@ +GSL_LIBS = @GSL_LIBS@ +GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ +GSL_LT_VERSION = @GSL_LT_VERSION@ +GSL_MAJOR_VERSION = @GSL_MAJOR_VERSION@ +GSL_MINOR_VERSION = @GSL_MINOR_VERSION@ +HAVE_AIX_IEEE_INTERFACE = @HAVE_AIX_IEEE_INTERFACE@ +HAVE_DARWIN86_IEEE_INTERFACE = @HAVE_DARWIN86_IEEE_INTERFACE@ +HAVE_DARWIN_IEEE_INTERFACE = @HAVE_DARWIN_IEEE_INTERFACE@ +HAVE_FREEBSD_IEEE_INTERFACE = @HAVE_FREEBSD_IEEE_INTERFACE@ +HAVE_GNUM68K_IEEE_INTERFACE = @HAVE_GNUM68K_IEEE_INTERFACE@ +HAVE_GNUPPC_IEEE_INTERFACE = @HAVE_GNUPPC_IEEE_INTERFACE@ +HAVE_GNUSPARC_IEEE_INTERFACE = @HAVE_GNUSPARC_IEEE_INTERFACE@ +HAVE_GNUX86_IEEE_INTERFACE = @HAVE_GNUX86_IEEE_INTERFACE@ +HAVE_HPUX11_IEEE_INTERFACE = @HAVE_HPUX11_IEEE_INTERFACE@ +HAVE_HPUX_IEEE_INTERFACE = @HAVE_HPUX_IEEE_INTERFACE@ +HAVE_IRIX_IEEE_INTERFACE = @HAVE_IRIX_IEEE_INTERFACE@ +HAVE_NETBSD_IEEE_INTERFACE = @HAVE_NETBSD_IEEE_INTERFACE@ +HAVE_OPENBSD_IEEE_INTERFACE = @HAVE_OPENBSD_IEEE_INTERFACE@ +HAVE_OS2EMX_IEEE_INTERFACE = @HAVE_OS2EMX_IEEE_INTERFACE@ +HAVE_SOLARIS_IEEE_INTERFACE = @HAVE_SOLARIS_IEEE_INTERFACE@ +HAVE_SUNOS4_IEEE_INTERFACE = @HAVE_SUNOS4_IEEE_INTERFACE@ +HAVE_TRU64_IEEE_INTERFACE = @HAVE_TRU64_IEEE_INTERFACE@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBM = @LIBM@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +noinst_LTLIBRARIES = libgslspblas.la +pkginclude_HEADERS = gsl_spblas.h +libgslspblas_la_SOURCES = spdgemm.c spdgemv.c +AM_CPPFLAGS = -I$(top_srcdir) +TESTS = $(check_PROGRAMS) +test_LDADD = libgslspblas.la ../spmatrix/libgslspmatrix.la ../test/libgsltest.la ../blas/libgslblas.la ../cblas/libgslcblas.la ../matrix/libgslmatrix.la ../vector/libgslvector.la ../block/libgslblock.la ../sys/libgslsys.la ../err/libgslerr.la ../utils/libutils.la ../rng/libgslrng.la +test_SOURCES = test.c +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu spblas/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu spblas/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libgslspblas.la: $(libgslspblas_la_OBJECTS) $(libgslspblas_la_DEPENDENCIES) $(EXTRA_libgslspblas_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(libgslspblas_la_OBJECTS) $(libgslspblas_la_LIBADD) $(LIBS) + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) $(EXTRA_test_DEPENDENCIES) + @rm -f test$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_OBJECTS) $(test_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/spdgemm.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/spdgemv.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test.Po@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-pkgincludeHEADERS: $(pkginclude_HEADERS) + @$(NORMAL_INSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \ + done + +uninstall-pkgincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + else \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_PROGRAMS) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +test.log: test$(EXEEXT) + @p='test$(EXEEXT)'; \ + b='test'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +@am__EXEEXT_TRUE@.test$(EXEEXT).log: +@am__EXEEXT_TRUE@ @p='$<'; \ +@am__EXEEXT_TRUE@ $(am__set_b); \ +@am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +@am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ +@am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +@am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-am +all-am: Makefile $(LTLIBRARIES) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(pkgincludedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-pkgincludeHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-pkgincludeHEADERS + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES cscopelist-am ctags ctags-am distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-pkgincludeHEADERS \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + recheck tags tags-am uninstall uninstall-am \ + uninstall-pkgincludeHEADERS + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gsl-2.5/spblas/gsl_spblas.h b/gsl-2.5/spblas/gsl_spblas.h new file mode 100644 index 00000000..9d66088f --- /dev/null +++ b/gsl-2.5/spblas/gsl_spblas.h @@ -0,0 +1,58 @@ +/* gsl_spblas.h + * + * Copyright (C) 2012-2014 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_SPBLAS_H__ +#define __GSL_SPBLAS_H__ + +#include + +#include +#include +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +/* + * Prototypes + */ + +int gsl_spblas_dgemv(const CBLAS_TRANSPOSE_t TransA, const double alpha, + const gsl_spmatrix *A, const gsl_vector *x, + const double beta, gsl_vector *y); +int gsl_spblas_dgemm(const double alpha, const gsl_spmatrix *A, + const gsl_spmatrix *B, gsl_spmatrix *C); +size_t gsl_spblas_scatter(const gsl_spmatrix *A, const size_t j, + const double alpha, size_t *w, double *x, + const size_t mark, gsl_spmatrix *C, size_t nz); + +__END_DECLS + +#endif /* __GSL_SPBLAS_H__ */ diff --git a/gsl-2.5/spblas/libgslspblas.la b/gsl-2.5/spblas/libgslspblas.la new file mode 100644 index 00000000..6a6005f5 --- /dev/null +++ b/gsl-2.5/spblas/libgslspblas.la @@ -0,0 +1,41 @@ +# libgslspblas.la - a libtool library file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='' + +# Names of this library. +library_names='' + +# The name of the static archive. +old_library='libgslspblas.a' + +# Linker flags that can not go in dependency_libs. +inherited_linker_flags='' + +# Libraries that this one depends upon. +dependency_libs=' -lm' + +# Names of additional weak libraries provided by this library +weak_library_names='' + +# Version information for libgslspblas. +current= +age= +revision= + +# Is this an already installed library? +installed=no + +# Should we warn about portability when linking against -modules? +shouldnotlink=no + +# Files to dlopen/dlpreopen +dlopen='' +dlpreopen='' + +# Directory that this library needs to be installed in: +libdir='' diff --git a/gsl-2.5/spblas/spdgemm.c b/gsl-2.5/spblas/spdgemm.c new file mode 100644 index 00000000..a58b25c4 --- /dev/null +++ b/gsl-2.5/spblas/spdgemm.c @@ -0,0 +1,182 @@ +/* spdgemm.c + * + * Copyright (C) 2014 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include + +/* +gsl_spblas_dgemm() + Multiply two sparse matrices + +Inputs: alpha - scalar factor + A - sparse matrix + B - sparse matrix + C - (output) C = alpha * A * B + +Return: success or error + +Notes: +1) based on CSparse routine cs_multiply +*/ + +int +gsl_spblas_dgemm(const double alpha, const gsl_spmatrix *A, + const gsl_spmatrix *B, gsl_spmatrix *C) +{ + if (A->size2 != B->size1 || A->size1 != C->size1 || B->size2 != C->size2) + { + GSL_ERROR("matrix dimensions do not match", GSL_EBADLEN); + } + else if (A->sptype != B->sptype || A->sptype != C->sptype) + { + GSL_ERROR("matrix storage formats do not match", GSL_EINVAL); + } + else if (!GSL_SPMATRIX_ISCCS(A)) + { + GSL_ERROR("compressed column format required", GSL_EINVAL); + } + else + { + int status = GSL_SUCCESS; + const size_t M = A->size1; + const size_t N = B->size2; + size_t *Bi = B->i; + size_t *Bp = B->p; + double *Bd = B->data; + size_t *w = (size_t *) A->work; /* workspace of length M */ + double *x = (double *) C->work; /* workspace of length M */ + size_t *Cp, *Ci; + double *Cd; + size_t j, p; + size_t nz = 0; + + if (C->nzmax < A->nz + B->nz) + { + status = gsl_spmatrix_realloc(A->nz + B->nz, C); + if (status) + { + GSL_ERROR("unable to realloc matrix C", status); + } + } + + /* initialize workspace to 0 */ + for (j = 0; j < M; ++j) + w[j] = 0; + + Cp = C->p; + Ci = C->i; + Cd = C->data; + + for (j = 0; j < N; ++j) + { + if (nz + M > C->nzmax) + { + status = gsl_spmatrix_realloc(2 * C->nzmax + M, C); + if (status) + { + GSL_ERROR("unable to realloc matrix C", status); + } + + /* these pointers could have changed due to reallocation */ + Ci = C->i; + Cd = C->data; + } + + Cp[j] = nz; /* column j of C starts here */ + + for (p = Bp[j]; p < Bp[j + 1]; ++p) + { + nz = gsl_spblas_scatter(A, Bi[p], Bd[p], w, x, j + 1, C, nz); + } + + for (p = Cp[j]; p < nz; ++p) + Cd[p] = x[Ci[p]]; + } + + Cp[N] = nz; + C->nz = nz; + + /* scale by alpha */ + gsl_spmatrix_scale(C, alpha); + + return status; + } +} /* gsl_spblas_dgemm() */ + +/* +gsl_spblas_scatter() + + Keep a running total x -> x + alpha*A(:,j) for adding matrices together in CCS, +which will eventually be stored in C(:,j) + + When a new non-zero element with row index i is found, update C->i with +the row index. C->data is updated only by the calling function after all +matrices have been added via this function. + +Inputs: A - sparse matrix m-by-n + j - column index + alpha - scalar factor + w - keeps track which rows of column j have been added to C; + initialize to 0 prior to first call + x - column vector of length m + mark - + C - output matrix whose jth column will be added to A(:,j) + nz - (input/output) number of non-zeros in matrix C + +Notes: +1) This function is designed to be called successively when adding multiple +matrices together. Column j of C is stored contiguously as per CCS but not +necessarily in order - ie: the row indices C->i may not be in ascending order. + +2) based on CSparse routine cs_scatter +*/ + +size_t +gsl_spblas_scatter(const gsl_spmatrix *A, const size_t j, const double alpha, + size_t *w, double *x, const size_t mark, gsl_spmatrix *C, + size_t nz) +{ + size_t p; + size_t *Ai = A->i; + size_t *Ap = A->p; + double *Ad = A->data; + size_t *Ci = C->i; + + for (p = Ap[j]; p < Ap[j + 1]; ++p) + { + size_t i = Ai[p]; /* A(i,j) is nonzero */ + + if (w[i] < mark) /* check if row i has been stored in column j yet */ + { + w[i] = mark; /* i is new entry in column j */ + Ci[nz++] = i; /* add i to pattern of C(:,j) */ + x[i] = alpha * Ad[p]; /* x(i) = alpha * A(i,j) */ + } + else /* this (i,j) exists in C from a previous call */ + { + x[i] += alpha * Ad[p]; /* add alpha*A(i,j) to C(i,j) */ + } + } + + return (nz) ; +} /* gsl_spblas_scatter() */ diff --git a/gsl-2.5/spblas/spdgemm.lo b/gsl-2.5/spblas/spdgemm.lo new file mode 100644 index 00000000..54420bb8 --- /dev/null +++ b/gsl-2.5/spblas/spdgemm.lo @@ -0,0 +1,12 @@ +# spdgemm.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/spdgemm.o' + +# Name of the non-PIC object +non_pic_object='spdgemm.o' + diff --git a/gsl-2.5/spblas/spdgemv.c b/gsl-2.5/spblas/spdgemv.c new file mode 100644 index 00000000..cadb57c3 --- /dev/null +++ b/gsl-2.5/spblas/spdgemv.c @@ -0,0 +1,166 @@ +/* spdgemv.c + * + * Copyright (C) 2012-2014 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +/* +gsl_spblas_dgemv() + Multiply a sparse matrix and a vector + +Inputs: alpha - scalar factor + A - sparse matrix + x - dense vector + beta - scalar factor + y - (input/output) dense vector + +Return: y = alpha*op(A)*x + beta*y +*/ + +int +gsl_spblas_dgemv(const CBLAS_TRANSPOSE_t TransA, const double alpha, + const gsl_spmatrix *A, const gsl_vector *x, + const double beta, gsl_vector *y) +{ + const size_t M = A->size1; + const size_t N = A->size2; + + if ((TransA == CblasNoTrans && N != x->size) || + (TransA == CblasTrans && M != x->size)) + { + GSL_ERROR("invalid length of x vector", GSL_EBADLEN); + } + else if ((TransA == CblasNoTrans && M != y->size) || + (TransA == CblasTrans && N != y->size)) + { + GSL_ERROR("invalid length of y vector", GSL_EBADLEN); + } + else + { + size_t j, p; + size_t incX, incY; + size_t lenX, lenY; + double *X, *Y; + double *Ad; + size_t *Ap, *Ai, *Aj; + + if (TransA == CblasNoTrans) + { + lenX = N; + lenY = M; + } + else + { + lenX = M; + lenY = N; + } + + /* form y := beta*y */ + + Y = y->data; + incY = y->stride; + + if (beta == 0.0) + { + size_t jy = 0; + for (j = 0; j < lenY; ++j) + { + Y[jy] = 0.0; + jy += incY; + } + } + else if (beta != 1.0) + { + size_t jy = 0; + for (j = 0; j < lenY; ++j) + { + Y[jy] *= beta; + jy += incY; + } + } + + if (alpha == 0.0) + return GSL_SUCCESS; + + /* form y := alpha*op(A)*x + y */ + Ap = A->p; + Ad = A->data; + X = x->data; + incX = x->stride; + + if ((GSL_SPMATRIX_ISCCS(A) && (TransA == CblasNoTrans)) || + (GSL_SPMATRIX_ISCRS(A) && (TransA == CblasTrans))) + { + Ai = A->i; + + for (j = 0; j < lenX; ++j) + { + for (p = Ap[j]; p < Ap[j + 1]; ++p) + { + Y[Ai[p] * incY] += alpha * Ad[p] * X[j * incX]; + } + } + } + else if ((GSL_SPMATRIX_ISCCS(A) && (TransA == CblasTrans)) || + (GSL_SPMATRIX_ISCRS(A) && (TransA == CblasNoTrans))) + { + Ai = A->i; + + for (j = 0; j < lenY; ++j) + { + for (p = Ap[j]; p < Ap[j + 1]; ++p) + { + Y[j * incY] += alpha * Ad[p] * X[Ai[p] * incX]; + } + } + } + else if (GSL_SPMATRIX_ISTRIPLET(A)) + { + if (TransA == CblasNoTrans) + { + Ai = A->i; + Aj = A->p; + } + else + { + Ai = A->p; + Aj = A->i; + } + + for (p = 0; p < A->nz; ++p) + { + Y[Ai[p] * incY] += alpha * Ad[p] * X[Aj[p] * incX]; + } + } + else + { + GSL_ERROR("unsupported matrix type", GSL_EINVAL); + } + + return GSL_SUCCESS; + } +} /* gsl_spblas_dgemv() */ diff --git a/gsl-2.5/spblas/spdgemv.lo b/gsl-2.5/spblas/spdgemv.lo new file mode 100644 index 00000000..95925cd7 --- /dev/null +++ b/gsl-2.5/spblas/spdgemv.lo @@ -0,0 +1,12 @@ +# spdgemv.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/spdgemv.o' + +# Name of the non-PIC object +non_pic_object='spdgemv.o' + diff --git a/gsl-2.5/spblas/test b/gsl-2.5/spblas/test new file mode 100755 index 00000000..4fea895d --- /dev/null +++ b/gsl-2.5/spblas/test @@ -0,0 +1,228 @@ +#! /bin/sh + +# test - temporary wrapper script for .libs/test +# Generated by libtool (GNU libtool) 2.4.2 +# +# The test program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s/\([`"$\\]\)/\\\1/g' + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command="(cd /home/groups/kipac/chto/package/gsl/gsl-2.5/spblas; LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LIBRARY_PATH; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; LD_LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/fftw/include:/home/users/chto/lib/fftw/lib:/home/users/chto/lib/healpix/lib:/home/users/chto/lib/namaster/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/include:/home/users/chto/cpp/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LD_LIBRARY_PATH; PATH=/share/software/user/open/curl/7.54.0/bin:/share/software/user/open/libressl/2.5.3/bin:/home/users/chto/lib/cfitsio:/home/users/chto/lib/cfitsio/include:/home/users/chto/lib:/home/users/chto/bin/bin:/home/users/chto/bin:/home/users/chto/.texlive/bin/x86_64-linux:/home/groups/kipac/chto/anaconda2/envs/newenv3/bin:/home/users/chto/.local/bin/include:/home/users/chto/.local/bin/lib:/home/users/chto/.local/bin:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/bin64:/share/software/user/open/fftw/3.3.6/bin:/home/groups/kipac/chto/anaconda2/condabin:/share/software/user/restricted/ifort/2019/bin:/share/software/user/open/gsl/2.3/bin:/share/software/user/srcc/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/dell/srvadmin/bin:/opt/dell/srvadmin/iSM/bin:/home/users/chto/bin; export PATH; gcc -g -O2 -o \$progdir/\$file test.o ./.libs/libgslspblas.a ../spmatrix/.libs/libgslspmatrix.a ../test/.libs/libgsltest.a ../blas/.libs/libgslblas.a ../cblas/.libs/libgslcblas.so ../matrix/.libs/libgslmatrix.a ../vector/.libs/libgslvector.a ../block/.libs/libgslblock.a ../sys/.libs/libgslsys.a ../err/.libs/libgslerr.a ../utils/.libs/libutils.a ../rng/.libs/libgslrng.a -lm -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/cblas/.libs -Wl,-rpath -Wl,/usr/local/lib)" + +# This environment variable determines our operation mode. +if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then + # install mode needs the following variables: + generated_by_libtool_version='2.4.2' + notinst_deplibs=' ../cblas/libgslcblas.la' +else + # When we are sourced in execute mode, $file and $ECHO are already set. + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + file="$0" + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + ECHO="printf %s\\n" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ which is used only on +# windows platforms, and (c) all begin with the string --lt- +# (application programs are unlikely to have options which match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's ../libtool value, followed by no. +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=$0 + shift + for lt_opt + do + case "$lt_opt" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%/[^/]*$%%'` + test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=. + lt_dump_F=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%^.*/%%'` + cat "$lt_dump_D/$lt_dump_F" + exit 0 + ;; + --lt-*) + $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n "$lt_option_debug"; then + echo "test:test:${LINENO}: libtool wrapper (GNU libtool) 2.4.2" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + $ECHO "test:test:${LINENO}: newargv[$lt_dump_args_N]: $lt_arg" + lt_dump_args_N=`expr $lt_dump_args_N + 1` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ + + if test -n "$lt_option_debug"; then + $ECHO "test:test:${LINENO}: newargv[0]: $progdir/$program" 1>&2 + func_lt_dump_args ${1+"$@"} 1>&2 + fi + exec "$progdir/$program" ${1+"$@"} + + $ECHO "$0: cannot exec $program $*" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from $@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case " $* " in + *\ --lt-*) + for lt_wr_arg + do + case $lt_wr_arg in + --lt-*) ;; + *) set x "$@" "$lt_wr_arg"; shift;; + esac + shift + done ;; + esac + func_exec_program_core ${1+"$@"} +} + + # Parse options + func_parse_lt_options "$0" ${1+"$@"} + + # Find the directory that this script lives in. + thisdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + test "x$thisdir" = "x$file" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=`ls -ld "$file" | /usr/bin/sed -n 's/.*-> //p'` + while test -n "$file"; do + destdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + + # If there was a directory component, then change thisdir. + if test "x$destdir" != "x$file"; then + case "$destdir" in + [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;; + *) thisdir="$thisdir/$destdir" ;; + esac + fi + + file=`$ECHO "$file" | /usr/bin/sed 's%^.*/%%'` + file=`ls -ld "$thisdir/$file" | /usr/bin/sed -n 's/.*-> //p'` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no + if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then + # special case for '.' + if test "$thisdir" = "."; then + thisdir=`pwd` + fi + # remove .libs from thisdir + case "$thisdir" in + *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /usr/bin/sed 's%[\\/][^\\/]*$%%'` ;; + .libs ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=`cd "$thisdir" && pwd` + test -n "$absdir" && thisdir="$absdir" + + program=lt-'test' + progdir="$thisdir/.libs" + + if test ! -f "$progdir/$program" || + { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /usr/bin/sed 1q`; \ + test "X$file" != "X$progdir/$program"; }; then + + file="$$-$program" + + if test ! -d "$progdir"; then + mkdir "$progdir" + else + rm -f "$progdir/$file" + fi + + # relink executable if necessary + if test -n "$relink_command"; then + if relink_command_output=`eval $relink_command 2>&1`; then : + else + printf %s\n "$relink_command_output" >&2 + rm -f "$progdir/$file" + exit 1 + fi + fi + + mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null || + { rm -f "$progdir/$program"; + mv -f "$progdir/$file" "$progdir/$program"; } + rm -f "$progdir/$file" + fi + + if test -f "$progdir/$program"; then + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + # Run the actual program with our arguments. + func_exec_program ${1+"$@"} + fi + else + # The program doesn't exist. + $ECHO "$0: error: \`$progdir/$program' does not exist" 1>&2 + $ECHO "This script is just a wrapper for $program." 1>&2 + $ECHO "See the libtool documentation for more information." 1>&2 + exit 1 + fi +fi diff --git a/gsl-2.5/spblas/test-suite.log b/gsl-2.5/spblas/test-suite.log new file mode 100644 index 00000000..49e0edf0 --- /dev/null +++ b/gsl-2.5/spblas/test-suite.log @@ -0,0 +1,14 @@ +==================================== + gsl 2.5: spblas/test-suite.log +==================================== + +# TOTAL: 1 +# PASS: 1 +# SKIP: 0 +# XFAIL: 0 +# FAIL: 0 +# XPASS: 0 +# ERROR: 0 + +.. contents:: :depth: 2 + diff --git a/gsl-2.5/spblas/test.c b/gsl-2.5/spblas/test.c new file mode 100644 index 00000000..0c2637db --- /dev/null +++ b/gsl-2.5/spblas/test.c @@ -0,0 +1,262 @@ +/* test.c + * + * Copyright (C) 2012-2014 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/* +create_random_sparse() + Create a random sparse matrix with approximately +M*N*density non-zero entries + +Inputs: M - number of rows + N - number of columns + density - sparse density \in [0,1] + 0 = no non-zero entries + 1 = all m*n entries are filled + r - random number generator + +Return: pointer to sparse matrix in triplet format (must be freed by caller) + +Notes: +1) non-zero matrix entries are uniformly distributed in [0,1] +*/ + +static gsl_spmatrix * +create_random_sparse(const size_t M, const size_t N, const double density, + const gsl_rng *r) +{ + size_t nnzwanted = (size_t) floor(M * N * GSL_MIN(density, 1.0)); + gsl_spmatrix *m = gsl_spmatrix_alloc_nzmax(M, N, + nnzwanted, + GSL_SPMATRIX_TRIPLET); + + while (gsl_spmatrix_nnz(m) < nnzwanted) + { + /* generate a random row and column */ + size_t i = gsl_rng_uniform(r) * M; + size_t j = gsl_rng_uniform(r) * N; + + /* generate random m_{ij} and add it */ + double x = gsl_rng_uniform(r); + gsl_spmatrix_set(m, i, j, x); + } + + return m; +} /* create_random_sparse() */ + +static void +create_random_vector(gsl_vector *v, const gsl_rng *r) +{ + size_t i; + + for (i = 0; i < v->size; ++i) + { + double x = gsl_rng_uniform(r); + gsl_vector_set(v, i, x); + } +} /* create_random_vector() */ + +static int +test_vectors(gsl_vector *observed, gsl_vector *expected, const double tol, + const char *str) +{ + int s = 0; + size_t N = observed->size; + size_t i; + + for (i = 0; i < N; ++i) + { + double x_obs = gsl_vector_get(observed, i); + double x_exp = gsl_vector_get(expected, i); + + gsl_test_rel(x_obs, x_exp, tol, "N=%zu i=%zu %s", N, i, str); + } + + return s; +} /* test_vectors() */ + +static void +test_dgemv(const size_t N, const size_t M, const double alpha, + const double beta, const CBLAS_TRANSPOSE_t TransA, + const gsl_rng *r) +{ + gsl_spmatrix *A = create_random_sparse(M, N, 0.2, r); + gsl_spmatrix *B, *C; + gsl_matrix *A_dense = gsl_matrix_alloc(M, N); + gsl_vector *x, *y, *y_gsl, *y_sp; + size_t lenX, lenY; + + if (TransA == CblasNoTrans) + { + lenX = N; + lenY = M; + } + else + { + lenX = M; + lenY = N; + } + + x = gsl_vector_alloc(lenX); + y = gsl_vector_alloc(lenY); + y_gsl = gsl_vector_alloc(lenY); + y_sp = gsl_vector_alloc(lenY); + + /* create random dense vectors */ + create_random_vector(x, r); + create_random_vector(y, r); + + /* copy A into A_dense */ + gsl_spmatrix_sp2d(A_dense, A); + + gsl_vector_memcpy(y_gsl, y); + gsl_vector_memcpy(y_sp, y); + + /* compute y = alpha*op(A)*x + beta*y0 with gsl */ + gsl_blas_dgemv(TransA, alpha, A_dense, x, beta, y_gsl); + + /* compute y = alpha*op(A)*x + beta*y0 with spblas/triplet */ + gsl_spblas_dgemv(TransA, alpha, A, x, beta, y_sp); + + /* test y_sp = y_gsl */ + test_vectors(y_sp, y_gsl, 1.0e-10, "test_dgemv: triplet format"); + + /* compute y = alpha*op(A)*x + beta*y0 with spblas/CCS */ + B = gsl_spmatrix_ccs(A); + gsl_vector_memcpy(y_sp, y); + gsl_spblas_dgemv(TransA, alpha, B, x, beta, y_sp); + + /* test y_sp = y_gsl */ + test_vectors(y_sp, y_gsl, 1.0e-10, "test_dgemv: CCS format"); + + /* compute y = alpha*op(A)*x + beta*y0 with spblas/CRS */ + C = gsl_spmatrix_crs(A); + gsl_vector_memcpy(y_sp, y); + gsl_spblas_dgemv(TransA, alpha, C, x, beta, y_sp); + + /* test y_sp = y_gsl */ + test_vectors(y_sp, y_gsl, 1.0e-10, "test_dgemv: CRS format"); + + gsl_spmatrix_free(A); + gsl_spmatrix_free(B); + gsl_spmatrix_free(C); + gsl_matrix_free(A_dense); + gsl_vector_free(x); + gsl_vector_free(y); + gsl_vector_free(y_gsl); + gsl_vector_free(y_sp); +} /* test_dgemv() */ + +static void +test_dgemm(const double alpha, const size_t M, const size_t N, + const gsl_rng *r) +{ + const size_t max = GSL_MAX(M, N); + size_t i, j, k; + gsl_matrix *A_dense = gsl_matrix_alloc(M, max); + gsl_matrix *B_dense = gsl_matrix_alloc(max, N); + gsl_matrix *C_dense = gsl_matrix_alloc(M, N); + gsl_spmatrix *C = gsl_spmatrix_alloc_nzmax(M, N, 1, GSL_SPMATRIX_CCS); + + for (k = 1; k <= max; ++k) + { + gsl_matrix_view Ad = gsl_matrix_submatrix(A_dense, 0, 0, M, k); + gsl_matrix_view Bd = gsl_matrix_submatrix(B_dense, 0, 0, k, N); + gsl_spmatrix *TA = create_random_sparse(M, k, 0.2, r); + gsl_spmatrix *TB = create_random_sparse(k, N, 0.2, r); + gsl_spmatrix *A = gsl_spmatrix_ccs(TA); + gsl_spmatrix *B = gsl_spmatrix_ccs(TB); + + gsl_spmatrix_set_zero(C); + gsl_spblas_dgemm(alpha, A, B, C); + + /* make dense matrices and use standard dgemm to multiply them */ + gsl_spmatrix_sp2d(&Ad.matrix, TA); + gsl_spmatrix_sp2d(&Bd.matrix, TB); + gsl_blas_dgemm(CblasNoTrans, CblasNoTrans, alpha, &Ad.matrix, + &Bd.matrix, 0.0, C_dense); + + /* compare C and C_dense */ + for (i = 0; i < M; ++i) + { + for (j = 0; j < N; ++j) + { + double Cij = gsl_spmatrix_get(C, i, j); + double Dij = gsl_matrix_get(C_dense, i, j); + + gsl_test_rel(Cij, Dij, 1.0e-12, "test_dgemm: _dgemm"); + } + } + + gsl_spmatrix_free(TA); + gsl_spmatrix_free(TB); + gsl_spmatrix_free(A); + gsl_spmatrix_free(B); + } + + gsl_spmatrix_free(C); + gsl_matrix_free(A_dense); + gsl_matrix_free(B_dense); + gsl_matrix_free(C_dense); +} /* test_dgemm() */ + +int +main() +{ + const size_t N_max = 40; + size_t m, n; + gsl_rng *r = gsl_rng_alloc(gsl_rng_default); + + for (m = 1; m <= N_max; ++m) + { + for (n = 1; n <= N_max; ++n) + { + test_dgemv(m, n, 1.0, 0.0, CblasNoTrans, r); + test_dgemv(m, n, 1.0, 0.0, CblasTrans, r); + + test_dgemv(m, n, 2.4, -0.5, CblasNoTrans, r); + test_dgemv(m, n, 2.4, -0.5, CblasTrans, r); + + test_dgemv(m, n, 0.1, 10.0, CblasNoTrans, r); + test_dgemv(m, n, 0.1, 10.0, CblasTrans, r); + } + } + + test_dgemm(1.0, 10, 10, r); + test_dgemm(2.3, 20, 15, r); + test_dgemm(1.8, 12, 30, r); + test_dgemm(0.4, 45, 35, r); + + gsl_rng_free(r); + + exit (gsl_test_summary()); +} /* main() */ diff --git a/gsl-2.5/spblas/test.log b/gsl-2.5/spblas/test.log new file mode 100644 index 00000000..b0200ad4 --- /dev/null +++ b/gsl-2.5/spblas/test.log @@ -0,0 +1 @@ +Completed [679075/679075] diff --git a/gsl-2.5/spblas/test.trs b/gsl-2.5/spblas/test.trs new file mode 100644 index 00000000..3f0f396c --- /dev/null +++ b/gsl-2.5/spblas/test.trs @@ -0,0 +1,4 @@ +:test-result: PASS +:global-test-result: PASS +:recheck: no +:copy-in-global-log: no diff --git a/gsl-2.5/specfunc/.deps/airy.Plo b/gsl-2.5/specfunc/.deps/airy.Plo new file mode 100644 index 00000000..e73acae7 --- /dev/null +++ b/gsl-2.5/specfunc/.deps/airy.Plo @@ -0,0 +1,148 @@ +airy.lo: airy.c /usr/include/stdc-predef.h ../config.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_sf_trig.h ../gsl/gsl_sf_result.h ../gsl/gsl_sf_airy.h \ + ../gsl/gsl_mode.h error.h check.h chebyshev.h cheb_eval_mode.c eval.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_sf_trig.h: + +../gsl/gsl_sf_result.h: + +../gsl/gsl_sf_airy.h: + +../gsl/gsl_mode.h: + +error.h: + +check.h: + +chebyshev.h: + +cheb_eval_mode.c: + +eval.h: diff --git a/gsl-2.5/specfunc/.deps/airy_der.Plo b/gsl-2.5/specfunc/.deps/airy_der.Plo new file mode 100644 index 00000000..49200074 --- /dev/null +++ b/gsl-2.5/specfunc/.deps/airy_der.Plo @@ -0,0 +1,146 @@ +airy_der.lo: airy_der.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_math.h /usr/include/math.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_sf_exp.h ../gsl/gsl_sf_result.h ../gsl/gsl_sf_airy.h \ + ../gsl/gsl_mode.h error.h chebyshev.h cheb_eval_mode.c eval.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_sf_exp.h: + +../gsl/gsl_sf_result.h: + +../gsl/gsl_sf_airy.h: + +../gsl/gsl_mode.h: + +error.h: + +chebyshev.h: + +cheb_eval_mode.c: + +eval.h: diff --git a/gsl-2.5/specfunc/.deps/airy_zero.Plo b/gsl-2.5/specfunc/.deps/airy_zero.Plo new file mode 100644 index 00000000..448a63fe --- /dev/null +++ b/gsl-2.5/specfunc/.deps/airy_zero.Plo @@ -0,0 +1,140 @@ +airy_zero.lo: airy_zero.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_math.h /usr/include/math.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_sf_airy.h ../gsl/gsl_mode.h ../gsl/gsl_sf_result.h error.h \ + eval.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_sf_airy.h: + +../gsl/gsl_mode.h: + +../gsl/gsl_sf_result.h: + +error.h: + +eval.h: diff --git a/gsl-2.5/specfunc/.deps/atanint.Plo b/gsl-2.5/specfunc/.deps/atanint.Plo new file mode 100644 index 00000000..dbf61c89 --- /dev/null +++ b/gsl-2.5/specfunc/.deps/atanint.Plo @@ -0,0 +1,142 @@ +atanint.lo: atanint.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_math.h /usr/include/math.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_mode.h ../gsl/gsl_sf_expint.h ../gsl/gsl_sf_result.h \ + chebyshev.h cheb_eval.c eval.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_mode.h: + +../gsl/gsl_sf_expint.h: + +../gsl/gsl_sf_result.h: + +chebyshev.h: + +cheb_eval.c: + +eval.h: diff --git a/gsl-2.5/specfunc/.deps/bessel.Plo b/gsl-2.5/specfunc/.deps/bessel.Plo new file mode 100644 index 00000000..2808768d --- /dev/null +++ b/gsl-2.5/specfunc/.deps/bessel.Plo @@ -0,0 +1,156 @@ +bessel.lo: bessel.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_math.h /usr/include/math.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_sf_airy.h ../gsl/gsl_mode.h ../gsl/gsl_sf_result.h \ + ../gsl/gsl_sf_elementary.h ../gsl/gsl_sf_exp.h ../gsl/gsl_sf_gamma.h \ + ../gsl/gsl_sf_trig.h error.h bessel_amp_phase.h chebyshev.h \ + bessel_temme.h bessel.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_sf_airy.h: + +../gsl/gsl_mode.h: + +../gsl/gsl_sf_result.h: + +../gsl/gsl_sf_elementary.h: + +../gsl/gsl_sf_exp.h: + +../gsl/gsl_sf_gamma.h: + +../gsl/gsl_sf_trig.h: + +error.h: + +bessel_amp_phase.h: + +chebyshev.h: + +bessel_temme.h: + +bessel.h: diff --git a/gsl-2.5/specfunc/.deps/bessel_I0.Plo b/gsl-2.5/specfunc/.deps/bessel_I0.Plo new file mode 100644 index 00000000..b49f9a2c --- /dev/null +++ b/gsl-2.5/specfunc/.deps/bessel_I0.Plo @@ -0,0 +1,186 @@ +bessel_I0.lo: bessel_I0.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_math.h /usr/include/math.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_sf_bessel.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_mode.h \ + ../gsl/gsl_sf_result.h error.h chebyshev.h cheb_eval.c eval.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_sf_bessel.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_mode.h: + +../gsl/gsl_sf_result.h: + +error.h: + +chebyshev.h: + +cheb_eval.c: + +eval.h: diff --git a/gsl-2.5/specfunc/.deps/bessel_I1.Plo b/gsl-2.5/specfunc/.deps/bessel_I1.Plo new file mode 100644 index 00000000..fc5e65e5 --- /dev/null +++ b/gsl-2.5/specfunc/.deps/bessel_I1.Plo @@ -0,0 +1,186 @@ +bessel_I1.lo: bessel_I1.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_math.h /usr/include/math.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_sf_bessel.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_mode.h \ + ../gsl/gsl_sf_result.h error.h chebyshev.h cheb_eval.c eval.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_sf_bessel.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_mode.h: + +../gsl/gsl_sf_result.h: + +error.h: + +chebyshev.h: + +cheb_eval.c: + +eval.h: diff --git a/gsl-2.5/specfunc/.deps/bessel_In.Plo b/gsl-2.5/specfunc/.deps/bessel_In.Plo new file mode 100644 index 00000000..b8a76f3f --- /dev/null +++ b/gsl-2.5/specfunc/.deps/bessel_In.Plo @@ -0,0 +1,184 @@ +bessel_In.lo: bessel_In.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_math.h /usr/include/math.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_sf_bessel.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_mode.h \ + ../gsl/gsl_sf_result.h error.h bessel.h eval.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_sf_bessel.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_mode.h: + +../gsl/gsl_sf_result.h: + +error.h: + +bessel.h: + +eval.h: diff --git a/gsl-2.5/specfunc/.deps/bessel_Inu.Plo b/gsl-2.5/specfunc/.deps/bessel_Inu.Plo new file mode 100644 index 00000000..ccafffd1 --- /dev/null +++ b/gsl-2.5/specfunc/.deps/bessel_Inu.Plo @@ -0,0 +1,191 @@ +bessel_Inu.lo: bessel_Inu.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_math.h /usr/include/math.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_sf_exp.h ../gsl/gsl_sf_result.h ../gsl/gsl_sf_gamma.h \ + ../gsl/gsl_sf_bessel.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_mode.h error.h bessel.h \ + bessel_temme.h eval.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_sf_exp.h: + +../gsl/gsl_sf_result.h: + +../gsl/gsl_sf_gamma.h: + +../gsl/gsl_sf_bessel.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_mode.h: + +error.h: + +bessel.h: + +bessel_temme.h: + +eval.h: diff --git a/gsl-2.5/specfunc/.deps/bessel_J0.Plo b/gsl-2.5/specfunc/.deps/bessel_J0.Plo new file mode 100644 index 00000000..a3c764cc --- /dev/null +++ b/gsl-2.5/specfunc/.deps/bessel_J0.Plo @@ -0,0 +1,191 @@ +bessel_J0.lo: bessel_J0.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_math.h /usr/include/math.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_mode.h bessel.h ../gsl/gsl_sf_result.h bessel_amp_phase.h \ + chebyshev.h ../gsl/gsl_sf_trig.h ../gsl/gsl_sf_bessel.h \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/byteswap.h \ + /usr/include/bits/byteswap-16.h /usr/include/sys/types.h \ + /usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib-float.h cheb_eval.c \ + eval.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_mode.h: + +bessel.h: + +../gsl/gsl_sf_result.h: + +bessel_amp_phase.h: + +chebyshev.h: + +../gsl/gsl_sf_trig.h: + +../gsl/gsl_sf_bessel.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +cheb_eval.c: + +eval.h: diff --git a/gsl-2.5/specfunc/.deps/bessel_J1.Plo b/gsl-2.5/specfunc/.deps/bessel_J1.Plo new file mode 100644 index 00000000..2ab84b1c --- /dev/null +++ b/gsl-2.5/specfunc/.deps/bessel_J1.Plo @@ -0,0 +1,192 @@ +bessel_J1.lo: bessel_J1.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_math.h /usr/include/math.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_sf_trig.h ../gsl/gsl_sf_result.h ../gsl/gsl_sf_bessel.h \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/byteswap.h \ + /usr/include/bits/byteswap-16.h /usr/include/sys/types.h \ + /usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib-float.h ../gsl/gsl_mode.h \ + error.h bessel.h bessel_amp_phase.h chebyshev.h cheb_eval.c eval.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_sf_trig.h: + +../gsl/gsl_sf_result.h: + +../gsl/gsl_sf_bessel.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_mode.h: + +error.h: + +bessel.h: + +bessel_amp_phase.h: + +chebyshev.h: + +cheb_eval.c: + +eval.h: diff --git a/gsl-2.5/specfunc/.deps/bessel_Jn.Plo b/gsl-2.5/specfunc/.deps/bessel_Jn.Plo new file mode 100644 index 00000000..6cb57a04 --- /dev/null +++ b/gsl-2.5/specfunc/.deps/bessel_Jn.Plo @@ -0,0 +1,191 @@ +bessel_Jn.lo: bessel_Jn.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_math.h /usr/include/math.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_sf_pow_int.h ../gsl/gsl_sf_result.h bessel.h \ + bessel_amp_phase.h chebyshev.h bessel_olver.h ../gsl/gsl_sf_bessel.h \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/byteswap.h \ + /usr/include/bits/byteswap-16.h /usr/include/sys/types.h \ + /usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib-float.h ../gsl/gsl_mode.h \ + eval.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_sf_pow_int.h: + +../gsl/gsl_sf_result.h: + +bessel.h: + +bessel_amp_phase.h: + +chebyshev.h: + +bessel_olver.h: + +../gsl/gsl_sf_bessel.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_mode.h: + +eval.h: diff --git a/gsl-2.5/specfunc/.deps/bessel_Jnu.Plo b/gsl-2.5/specfunc/.deps/bessel_Jnu.Plo new file mode 100644 index 00000000..df29ea47 --- /dev/null +++ b/gsl-2.5/specfunc/.deps/bessel_Jnu.Plo @@ -0,0 +1,191 @@ +bessel_Jnu.lo: bessel_Jnu.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_math.h /usr/include/math.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_sf_bessel.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_mode.h \ + ../gsl/gsl_sf_result.h ../gsl/gsl_sf_sincos_pi.h error.h bessel.h \ + bessel_olver.h bessel_temme.h eval.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_sf_bessel.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_mode.h: + +../gsl/gsl_sf_result.h: + +../gsl/gsl_sf_sincos_pi.h: + +error.h: + +bessel.h: + +bessel_olver.h: + +bessel_temme.h: + +eval.h: diff --git a/gsl-2.5/specfunc/.deps/bessel_K0.Plo b/gsl-2.5/specfunc/.deps/bessel_K0.Plo new file mode 100644 index 00000000..49611520 --- /dev/null +++ b/gsl-2.5/specfunc/.deps/bessel_K0.Plo @@ -0,0 +1,193 @@ +bessel_K0.lo: bessel_K0.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_math.h /usr/include/math.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_poly.h /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/byteswap.h \ + /usr/include/bits/byteswap-16.h /usr/include/sys/types.h \ + /usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib-float.h \ + ../gsl/gsl_complex.h ../gsl/gsl_sf_exp.h ../gsl/gsl_sf_result.h \ + ../gsl/gsl_sf_bessel.h ../gsl/gsl_mode.h error.h chebyshev.h cheb_eval.c \ + eval.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_poly.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_sf_exp.h: + +../gsl/gsl_sf_result.h: + +../gsl/gsl_sf_bessel.h: + +../gsl/gsl_mode.h: + +error.h: + +chebyshev.h: + +cheb_eval.c: + +eval.h: diff --git a/gsl-2.5/specfunc/.deps/bessel_K1.Plo b/gsl-2.5/specfunc/.deps/bessel_K1.Plo new file mode 100644 index 00000000..eea54357 --- /dev/null +++ b/gsl-2.5/specfunc/.deps/bessel_K1.Plo @@ -0,0 +1,193 @@ +bessel_K1.lo: bessel_K1.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_math.h /usr/include/math.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_poly.h /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/byteswap.h \ + /usr/include/bits/byteswap-16.h /usr/include/sys/types.h \ + /usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib-float.h \ + ../gsl/gsl_complex.h ../gsl/gsl_sf_exp.h ../gsl/gsl_sf_result.h \ + ../gsl/gsl_sf_bessel.h ../gsl/gsl_mode.h error.h chebyshev.h cheb_eval.c \ + eval.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_poly.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_sf_exp.h: + +../gsl/gsl_sf_result.h: + +../gsl/gsl_sf_bessel.h: + +../gsl/gsl_mode.h: + +error.h: + +chebyshev.h: + +cheb_eval.c: + +eval.h: diff --git a/gsl-2.5/specfunc/.deps/bessel_Kn.Plo b/gsl-2.5/specfunc/.deps/bessel_Kn.Plo new file mode 100644 index 00000000..8ea741e3 --- /dev/null +++ b/gsl-2.5/specfunc/.deps/bessel_Kn.Plo @@ -0,0 +1,189 @@ +bessel_Kn.lo: bessel_Kn.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_math.h /usr/include/math.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_sf_gamma.h ../gsl/gsl_sf_result.h ../gsl/gsl_sf_psi.h \ + ../gsl/gsl_sf_bessel.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_mode.h error.h bessel.h \ + eval.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_sf_gamma.h: + +../gsl/gsl_sf_result.h: + +../gsl/gsl_sf_psi.h: + +../gsl/gsl_sf_bessel.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_mode.h: + +error.h: + +bessel.h: + +eval.h: diff --git a/gsl-2.5/specfunc/.deps/bessel_Knu.Plo b/gsl-2.5/specfunc/.deps/bessel_Knu.Plo new file mode 100644 index 00000000..61c31f1b --- /dev/null +++ b/gsl-2.5/specfunc/.deps/bessel_Knu.Plo @@ -0,0 +1,191 @@ +bessel_Knu.lo: bessel_Knu.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_math.h /usr/include/math.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_sf_exp.h ../gsl/gsl_sf_result.h ../gsl/gsl_sf_gamma.h \ + ../gsl/gsl_sf_bessel.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_mode.h error.h bessel.h \ + bessel_temme.h eval.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_sf_exp.h: + +../gsl/gsl_sf_result.h: + +../gsl/gsl_sf_gamma.h: + +../gsl/gsl_sf_bessel.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_mode.h: + +error.h: + +bessel.h: + +bessel_temme.h: + +eval.h: diff --git a/gsl-2.5/specfunc/.deps/bessel_Y0.Plo b/gsl-2.5/specfunc/.deps/bessel_Y0.Plo new file mode 100644 index 00000000..38655491 --- /dev/null +++ b/gsl-2.5/specfunc/.deps/bessel_Y0.Plo @@ -0,0 +1,192 @@ +bessel_Y0.lo: bessel_Y0.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_math.h /usr/include/math.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_sf_trig.h ../gsl/gsl_sf_result.h ../gsl/gsl_sf_bessel.h \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/byteswap.h \ + /usr/include/bits/byteswap-16.h /usr/include/sys/types.h \ + /usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib-float.h ../gsl/gsl_mode.h \ + error.h bessel.h bessel_amp_phase.h chebyshev.h cheb_eval.c eval.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_sf_trig.h: + +../gsl/gsl_sf_result.h: + +../gsl/gsl_sf_bessel.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_mode.h: + +error.h: + +bessel.h: + +bessel_amp_phase.h: + +chebyshev.h: + +cheb_eval.c: + +eval.h: diff --git a/gsl-2.5/specfunc/.deps/bessel_Y1.Plo b/gsl-2.5/specfunc/.deps/bessel_Y1.Plo new file mode 100644 index 00000000..aff09b65 --- /dev/null +++ b/gsl-2.5/specfunc/.deps/bessel_Y1.Plo @@ -0,0 +1,192 @@ +bessel_Y1.lo: bessel_Y1.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_math.h /usr/include/math.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_sf_trig.h ../gsl/gsl_sf_result.h ../gsl/gsl_sf_bessel.h \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/byteswap.h \ + /usr/include/bits/byteswap-16.h /usr/include/sys/types.h \ + /usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib-float.h ../gsl/gsl_mode.h \ + error.h bessel.h bessel_amp_phase.h chebyshev.h cheb_eval.c eval.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_sf_trig.h: + +../gsl/gsl_sf_result.h: + +../gsl/gsl_sf_bessel.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_mode.h: + +error.h: + +bessel.h: + +bessel_amp_phase.h: + +chebyshev.h: + +cheb_eval.c: + +eval.h: diff --git a/gsl-2.5/specfunc/.deps/bessel_Yn.Plo b/gsl-2.5/specfunc/.deps/bessel_Yn.Plo new file mode 100644 index 00000000..c2c8bbbb --- /dev/null +++ b/gsl-2.5/specfunc/.deps/bessel_Yn.Plo @@ -0,0 +1,195 @@ +bessel_Yn.lo: bessel_Yn.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_math.h /usr/include/math.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_sf_gamma.h ../gsl/gsl_sf_result.h ../gsl/gsl_sf_psi.h \ + ../gsl/gsl_sf_bessel.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_mode.h error.h bessel.h \ + bessel_amp_phase.h chebyshev.h bessel_olver.h eval.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_sf_gamma.h: + +../gsl/gsl_sf_result.h: + +../gsl/gsl_sf_psi.h: + +../gsl/gsl_sf_bessel.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_mode.h: + +error.h: + +bessel.h: + +bessel_amp_phase.h: + +chebyshev.h: + +bessel_olver.h: + +eval.h: diff --git a/gsl-2.5/specfunc/.deps/bessel_Ynu.Plo b/gsl-2.5/specfunc/.deps/bessel_Ynu.Plo new file mode 100644 index 00000000..5f1e44aa --- /dev/null +++ b/gsl-2.5/specfunc/.deps/bessel_Ynu.Plo @@ -0,0 +1,191 @@ +bessel_Ynu.lo: bessel_Ynu.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_math.h /usr/include/math.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_sf_bessel.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_mode.h \ + ../gsl/gsl_sf_result.h ../gsl/gsl_sf_sincos_pi.h error.h bessel.h \ + bessel_olver.h bessel_temme.h eval.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_sf_bessel.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_mode.h: + +../gsl/gsl_sf_result.h: + +../gsl/gsl_sf_sincos_pi.h: + +error.h: + +bessel.h: + +bessel_olver.h: + +bessel_temme.h: + +eval.h: diff --git a/gsl-2.5/specfunc/.deps/bessel_amp_phase.Plo b/gsl-2.5/specfunc/.deps/bessel_amp_phase.Plo new file mode 100644 index 00000000..d6e385cd --- /dev/null +++ b/gsl-2.5/specfunc/.deps/bessel_amp_phase.Plo @@ -0,0 +1,183 @@ +bessel_amp_phase.lo: bessel_amp_phase.c /usr/include/stdc-predef.h \ + ../config.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_sf_bessel.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_mode.h \ + ../gsl/gsl_sf_result.h bessel_amp_phase.h chebyshev.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_sf_bessel.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_mode.h: + +../gsl/gsl_sf_result.h: + +bessel_amp_phase.h: + +chebyshev.h: diff --git a/gsl-2.5/specfunc/.deps/bessel_i.Plo b/gsl-2.5/specfunc/.deps/bessel_i.Plo new file mode 100644 index 00000000..c6e37e44 --- /dev/null +++ b/gsl-2.5/specfunc/.deps/bessel_i.Plo @@ -0,0 +1,186 @@ +bessel_i.lo: bessel_i.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_math.h /usr/include/math.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_sf_pow_int.h ../gsl/gsl_sf_result.h ../gsl/gsl_sf_bessel.h \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/byteswap.h \ + /usr/include/bits/byteswap-16.h /usr/include/sys/types.h \ + /usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib-float.h ../gsl/gsl_mode.h \ + error.h bessel.h eval.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_sf_pow_int.h: + +../gsl/gsl_sf_result.h: + +../gsl/gsl_sf_bessel.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_mode.h: + +error.h: + +bessel.h: + +eval.h: diff --git a/gsl-2.5/specfunc/.deps/bessel_j.Plo b/gsl-2.5/specfunc/.deps/bessel_j.Plo new file mode 100644 index 00000000..dc315df9 --- /dev/null +++ b/gsl-2.5/specfunc/.deps/bessel_j.Plo @@ -0,0 +1,191 @@ +bessel_j.lo: bessel_j.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_math.h /usr/include/math.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_sf_pow_int.h ../gsl/gsl_sf_result.h ../gsl/gsl_sf_trig.h \ + ../gsl/gsl_sf_bessel.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_mode.h error.h bessel.h \ + bessel_olver.h eval.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_sf_pow_int.h: + +../gsl/gsl_sf_result.h: + +../gsl/gsl_sf_trig.h: + +../gsl/gsl_sf_bessel.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_mode.h: + +error.h: + +bessel.h: + +bessel_olver.h: + +eval.h: diff --git a/gsl-2.5/specfunc/.deps/bessel_k.Plo b/gsl-2.5/specfunc/.deps/bessel_k.Plo new file mode 100644 index 00000000..880d6c22 --- /dev/null +++ b/gsl-2.5/specfunc/.deps/bessel_k.Plo @@ -0,0 +1,191 @@ +bessel_k.lo: bessel_k.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_math.h /usr/include/math.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_sf_pow_int.h ../gsl/gsl_sf_result.h ../gsl/gsl_sf_gamma.h \ + ../gsl/gsl_sf_bessel.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_mode.h error.h check.h \ + bessel.h eval.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_sf_pow_int.h: + +../gsl/gsl_sf_result.h: + +../gsl/gsl_sf_gamma.h: + +../gsl/gsl_sf_bessel.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_mode.h: + +error.h: + +check.h: + +bessel.h: + +eval.h: diff --git a/gsl-2.5/specfunc/.deps/bessel_olver.Plo b/gsl-2.5/specfunc/.deps/bessel_olver.Plo new file mode 100644 index 00000000..68d4206e --- /dev/null +++ b/gsl-2.5/specfunc/.deps/bessel_olver.Plo @@ -0,0 +1,146 @@ +bessel_olver.lo: bessel_olver.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_math.h /usr/include/math.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_sf_airy.h ../gsl/gsl_mode.h ../gsl/gsl_sf_result.h error.h \ + bessel.h bessel_olver.h chebyshev.h cheb_eval.c + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_sf_airy.h: + +../gsl/gsl_mode.h: + +../gsl/gsl_sf_result.h: + +error.h: + +bessel.h: + +bessel_olver.h: + +chebyshev.h: + +cheb_eval.c: diff --git a/gsl-2.5/specfunc/.deps/bessel_sequence.Plo b/gsl-2.5/specfunc/.deps/bessel_sequence.Plo new file mode 100644 index 00000000..4fde25d4 --- /dev/null +++ b/gsl-2.5/specfunc/.deps/bessel_sequence.Plo @@ -0,0 +1,179 @@ +bessel_sequence.lo: bessel_sequence.c /usr/include/stdc-predef.h \ + ../config.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_sf_bessel.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_mode.h \ + ../gsl/gsl_sf_result.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_sf_bessel.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_mode.h: + +../gsl/gsl_sf_result.h: diff --git a/gsl-2.5/specfunc/.deps/bessel_temme.Plo b/gsl-2.5/specfunc/.deps/bessel_temme.Plo new file mode 100644 index 00000000..b674be5e --- /dev/null +++ b/gsl-2.5/specfunc/.deps/bessel_temme.Plo @@ -0,0 +1,140 @@ +bessel_temme.lo: bessel_temme.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_math.h /usr/include/math.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_mode.h bessel_temme.h ../gsl/gsl_sf_result.h chebyshev.h \ + cheb_eval.c + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_mode.h: + +bessel_temme.h: + +../gsl/gsl_sf_result.h: + +chebyshev.h: + +cheb_eval.c: diff --git a/gsl-2.5/specfunc/.deps/bessel_y.Plo b/gsl-2.5/specfunc/.deps/bessel_y.Plo new file mode 100644 index 00000000..fe5e3d76 --- /dev/null +++ b/gsl-2.5/specfunc/.deps/bessel_y.Plo @@ -0,0 +1,193 @@ +bessel_y.lo: bessel_y.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_math.h /usr/include/math.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_sf_pow_int.h ../gsl/gsl_sf_result.h ../gsl/gsl_sf_gamma.h \ + ../gsl/gsl_sf_trig.h ../gsl/gsl_sf_bessel.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_mode.h error.h bessel.h \ + bessel_olver.h eval.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_sf_pow_int.h: + +../gsl/gsl_sf_result.h: + +../gsl/gsl_sf_gamma.h: + +../gsl/gsl_sf_trig.h: + +../gsl/gsl_sf_bessel.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_mode.h: + +error.h: + +bessel.h: + +bessel_olver.h: + +eval.h: diff --git a/gsl-2.5/specfunc/.deps/bessel_zero.Plo b/gsl-2.5/specfunc/.deps/bessel_zero.Plo new file mode 100644 index 00000000..cf43333b --- /dev/null +++ b/gsl-2.5/specfunc/.deps/bessel_zero.Plo @@ -0,0 +1,188 @@ +bessel_zero.lo: bessel_zero.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_math.h /usr/include/math.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_sf_airy.h ../gsl/gsl_mode.h ../gsl/gsl_sf_result.h \ + ../gsl/gsl_sf_pow_int.h ../gsl/gsl_sf_bessel.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h error.h bessel_olver.h eval.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_sf_airy.h: + +../gsl/gsl_mode.h: + +../gsl/gsl_sf_result.h: + +../gsl/gsl_sf_pow_int.h: + +../gsl/gsl_sf_bessel.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +error.h: + +bessel_olver.h: + +eval.h: diff --git a/gsl-2.5/specfunc/.deps/beta.Plo b/gsl-2.5/specfunc/.deps/beta.Plo new file mode 100644 index 00000000..46a0a8ea --- /dev/null +++ b/gsl-2.5/specfunc/.deps/beta.Plo @@ -0,0 +1,144 @@ +beta.lo: beta.c /usr/include/stdc-predef.h ../config.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_sf_exp.h ../gsl/gsl_sf_result.h ../gsl/gsl_sf_log.h \ + ../gsl/gsl_sf_psi.h ../gsl/gsl_sf_gamma.h error.h eval.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_sf_exp.h: + +../gsl/gsl_sf_result.h: + +../gsl/gsl_sf_log.h: + +../gsl/gsl_sf_psi.h: + +../gsl/gsl_sf_gamma.h: + +error.h: + +eval.h: diff --git a/gsl-2.5/specfunc/.deps/beta_inc.Plo b/gsl-2.5/specfunc/.deps/beta_inc.Plo new file mode 100644 index 00000000..a07e0615 --- /dev/null +++ b/gsl-2.5/specfunc/.deps/beta_inc.Plo @@ -0,0 +1,146 @@ +beta_inc.lo: beta_inc.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_math.h /usr/include/math.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_sf_log.h ../gsl/gsl_sf_result.h ../gsl/gsl_sf_exp.h \ + ../gsl/gsl_sf_gamma.h ../gsl/gsl_sf_hyperg.h error.h check.h eval.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_sf_log.h: + +../gsl/gsl_sf_result.h: + +../gsl/gsl_sf_exp.h: + +../gsl/gsl_sf_gamma.h: + +../gsl/gsl_sf_hyperg.h: + +error.h: + +check.h: + +eval.h: diff --git a/gsl-2.5/specfunc/.deps/clausen.Plo b/gsl-2.5/specfunc/.deps/clausen.Plo new file mode 100644 index 00000000..029c4a84 --- /dev/null +++ b/gsl-2.5/specfunc/.deps/clausen.Plo @@ -0,0 +1,142 @@ +clausen.lo: clausen.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_math.h /usr/include/math.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_sf_trig.h ../gsl/gsl_sf_result.h ../gsl/gsl_sf_clausen.h \ + chebyshev.h cheb_eval.c eval.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_sf_trig.h: + +../gsl/gsl_sf_result.h: + +../gsl/gsl_sf_clausen.h: + +chebyshev.h: + +cheb_eval.c: + +eval.h: diff --git a/gsl-2.5/specfunc/.deps/coulomb.Plo b/gsl-2.5/specfunc/.deps/coulomb.Plo new file mode 100644 index 00000000..3bcd3dad --- /dev/null +++ b/gsl-2.5/specfunc/.deps/coulomb.Plo @@ -0,0 +1,149 @@ +coulomb.lo: coulomb.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_math.h /usr/include/math.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_sf_exp.h ../gsl/gsl_sf_result.h ../gsl/gsl_sf_psi.h \ + ../gsl/gsl_sf_airy.h ../gsl/gsl_mode.h ../gsl/gsl_sf_pow_int.h \ + ../gsl/gsl_sf_gamma.h ../gsl/gsl_sf_coulomb.h error.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_sf_exp.h: + +../gsl/gsl_sf_result.h: + +../gsl/gsl_sf_psi.h: + +../gsl/gsl_sf_airy.h: + +../gsl/gsl_mode.h: + +../gsl/gsl_sf_pow_int.h: + +../gsl/gsl_sf_gamma.h: + +../gsl/gsl_sf_coulomb.h: + +error.h: diff --git a/gsl-2.5/specfunc/.deps/coulomb_bound.Plo b/gsl-2.5/specfunc/.deps/coulomb_bound.Plo new file mode 100644 index 00000000..6fef273a --- /dev/null +++ b/gsl-2.5/specfunc/.deps/coulomb_bound.Plo @@ -0,0 +1,151 @@ +coulomb_bound.lo: coulomb_bound.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_math.h /usr/include/math.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_sf_exp.h ../gsl/gsl_sf_result.h ../gsl/gsl_sf_gamma.h \ + ../gsl/gsl_sf_pow_int.h ../gsl/gsl_sf_laguerre.h ../gsl/gsl_sf_coulomb.h \ + ../gsl/gsl_mode.h error.h check.h eval.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_sf_exp.h: + +../gsl/gsl_sf_result.h: + +../gsl/gsl_sf_gamma.h: + +../gsl/gsl_sf_pow_int.h: + +../gsl/gsl_sf_laguerre.h: + +../gsl/gsl_sf_coulomb.h: + +../gsl/gsl_mode.h: + +error.h: + +check.h: + +eval.h: diff --git a/gsl-2.5/specfunc/.deps/coupling.Plo b/gsl-2.5/specfunc/.deps/coupling.Plo new file mode 100644 index 00000000..0f66ee72 --- /dev/null +++ b/gsl-2.5/specfunc/.deps/coupling.Plo @@ -0,0 +1,184 @@ +coupling.lo: coupling.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_sf_gamma.h ../gsl/gsl_sf_result.h ../gsl/gsl_sf_coupling.h \ + ../gsl/gsl_sf_exp.h error.h eval.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_sf_gamma.h: + +../gsl/gsl_sf_result.h: + +../gsl/gsl_sf_coupling.h: + +../gsl/gsl_sf_exp.h: + +error.h: + +eval.h: diff --git a/gsl-2.5/specfunc/.deps/dawson.Plo b/gsl-2.5/specfunc/.deps/dawson.Plo new file mode 100644 index 00000000..1354d153 --- /dev/null +++ b/gsl-2.5/specfunc/.deps/dawson.Plo @@ -0,0 +1,142 @@ +dawson.lo: dawson.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_math.h /usr/include/math.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_sf_dawson.h ../gsl/gsl_sf_result.h error.h chebyshev.h \ + cheb_eval.c eval.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_sf_dawson.h: + +../gsl/gsl_sf_result.h: + +error.h: + +chebyshev.h: + +cheb_eval.c: + +eval.h: diff --git a/gsl-2.5/specfunc/.deps/debye.Plo b/gsl-2.5/specfunc/.deps/debye.Plo new file mode 100644 index 00000000..529cd2e2 --- /dev/null +++ b/gsl-2.5/specfunc/.deps/debye.Plo @@ -0,0 +1,144 @@ +debye.lo: debye.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_math.h /usr/include/math.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_sf_debye.h ../gsl/gsl_sf_result.h error.h check.h chebyshev.h \ + cheb_eval.c eval.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_sf_debye.h: + +../gsl/gsl_sf_result.h: + +error.h: + +check.h: + +chebyshev.h: + +cheb_eval.c: + +eval.h: diff --git a/gsl-2.5/specfunc/.deps/dilog.Plo b/gsl-2.5/specfunc/.deps/dilog.Plo new file mode 100644 index 00000000..27b73449 --- /dev/null +++ b/gsl-2.5/specfunc/.deps/dilog.Plo @@ -0,0 +1,142 @@ +dilog.lo: dilog.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_math.h /usr/include/math.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_sf_clausen.h ../gsl/gsl_sf_result.h ../gsl/gsl_sf_trig.h \ + ../gsl/gsl_sf_log.h ../gsl/gsl_sf_dilog.h eval.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_sf_clausen.h: + +../gsl/gsl_sf_result.h: + +../gsl/gsl_sf_trig.h: + +../gsl/gsl_sf_log.h: + +../gsl/gsl_sf_dilog.h: + +eval.h: diff --git a/gsl-2.5/specfunc/.deps/elementary.Plo b/gsl-2.5/specfunc/.deps/elementary.Plo new file mode 100644 index 00000000..352f9bcf --- /dev/null +++ b/gsl-2.5/specfunc/.deps/elementary.Plo @@ -0,0 +1,139 @@ +elementary.lo: elementary.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_math.h /usr/include/math.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_sf_elementary.h ../gsl/gsl_sf_result.h error.h check.h eval.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_sf_elementary.h: + +../gsl/gsl_sf_result.h: + +error.h: + +check.h: + +eval.h: diff --git a/gsl-2.5/specfunc/.deps/ellint.Plo b/gsl-2.5/specfunc/.deps/ellint.Plo new file mode 100644 index 00000000..ace69b33 --- /dev/null +++ b/gsl-2.5/specfunc/.deps/ellint.Plo @@ -0,0 +1,140 @@ +ellint.lo: ellint.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_math.h /usr/include/math.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_sf_ellint.h ../gsl/gsl_mode.h ../gsl/gsl_sf_result.h error.h \ + eval.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_sf_ellint.h: + +../gsl/gsl_mode.h: + +../gsl/gsl_sf_result.h: + +error.h: + +eval.h: diff --git a/gsl-2.5/specfunc/.deps/elljac.Plo b/gsl-2.5/specfunc/.deps/elljac.Plo new file mode 100644 index 00000000..86069dd7 --- /dev/null +++ b/gsl-2.5/specfunc/.deps/elljac.Plo @@ -0,0 +1,135 @@ +elljac.lo: elljac.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_math.h /usr/include/math.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_sf_pow_int.h ../gsl/gsl_sf_result.h ../gsl/gsl_sf_elljac.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_sf_pow_int.h: + +../gsl/gsl_sf_result.h: + +../gsl/gsl_sf_elljac.h: diff --git a/gsl-2.5/specfunc/.deps/erfc.Plo b/gsl-2.5/specfunc/.deps/erfc.Plo new file mode 100644 index 00000000..30849e47 --- /dev/null +++ b/gsl-2.5/specfunc/.deps/erfc.Plo @@ -0,0 +1,144 @@ +erfc.lo: erfc.c /usr/include/stdc-predef.h ../config.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_sf_exp.h ../gsl/gsl_sf_result.h ../gsl/gsl_sf_erf.h check.h \ + chebyshev.h cheb_eval.c eval.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_sf_exp.h: + +../gsl/gsl_sf_result.h: + +../gsl/gsl_sf_erf.h: + +check.h: + +chebyshev.h: + +cheb_eval.c: + +eval.h: diff --git a/gsl-2.5/specfunc/.deps/exp.Plo b/gsl-2.5/specfunc/.deps/exp.Plo new file mode 100644 index 00000000..b907a79d --- /dev/null +++ b/gsl-2.5/specfunc/.deps/exp.Plo @@ -0,0 +1,140 @@ +exp.lo: exp.c /usr/include/stdc-predef.h ../config.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_sf_gamma.h ../gsl/gsl_sf_result.h ../gsl/gsl_sf_exp.h error.h \ + eval.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_sf_gamma.h: + +../gsl/gsl_sf_result.h: + +../gsl/gsl_sf_exp.h: + +error.h: + +eval.h: diff --git a/gsl-2.5/specfunc/.deps/expint.Plo b/gsl-2.5/specfunc/.deps/expint.Plo new file mode 100644 index 00000000..24d27347 --- /dev/null +++ b/gsl-2.5/specfunc/.deps/expint.Plo @@ -0,0 +1,146 @@ +expint.lo: expint.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_math.h /usr/include/math.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_sf_expint.h ../gsl/gsl_sf_result.h ../gsl/gsl_sf_gamma.h \ + error.h check.h chebyshev.h cheb_eval.c eval.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_sf_expint.h: + +../gsl/gsl_sf_result.h: + +../gsl/gsl_sf_gamma.h: + +error.h: + +check.h: + +chebyshev.h: + +cheb_eval.c: + +eval.h: diff --git a/gsl-2.5/specfunc/.deps/expint3.Plo b/gsl-2.5/specfunc/.deps/expint3.Plo new file mode 100644 index 00000000..2f725da2 --- /dev/null +++ b/gsl-2.5/specfunc/.deps/expint3.Plo @@ -0,0 +1,142 @@ +expint3.lo: expint3.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_math.h /usr/include/math.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_sf_expint.h ../gsl/gsl_sf_result.h error.h chebyshev.h \ + cheb_eval.c eval.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_sf_expint.h: + +../gsl/gsl_sf_result.h: + +error.h: + +chebyshev.h: + +cheb_eval.c: + +eval.h: diff --git a/gsl-2.5/specfunc/.deps/fermi_dirac.Plo b/gsl-2.5/specfunc/.deps/fermi_dirac.Plo new file mode 100644 index 00000000..110270e4 --- /dev/null +++ b/gsl-2.5/specfunc/.deps/fermi_dirac.Plo @@ -0,0 +1,153 @@ +fermi_dirac.lo: fermi_dirac.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_math.h /usr/include/math.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_sf_exp.h ../gsl/gsl_sf_result.h ../gsl/gsl_sf_gamma.h \ + ../gsl/gsl_sf_hyperg.h ../gsl/gsl_sf_pow_int.h ../gsl/gsl_sf_zeta.h \ + ../gsl/gsl_sf_fermi_dirac.h error.h chebyshev.h cheb_eval.c eval.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_sf_exp.h: + +../gsl/gsl_sf_result.h: + +../gsl/gsl_sf_gamma.h: + +../gsl/gsl_sf_hyperg.h: + +../gsl/gsl_sf_pow_int.h: + +../gsl/gsl_sf_zeta.h: + +../gsl/gsl_sf_fermi_dirac.h: + +error.h: + +chebyshev.h: + +cheb_eval.c: + +eval.h: diff --git a/gsl-2.5/specfunc/.deps/gamma.Plo b/gsl-2.5/specfunc/.deps/gamma.Plo new file mode 100644 index 00000000..acd5d74d --- /dev/null +++ b/gsl-2.5/specfunc/.deps/gamma.Plo @@ -0,0 +1,153 @@ +gamma.lo: gamma.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_math.h /usr/include/math.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_sf_exp.h ../gsl/gsl_sf_result.h ../gsl/gsl_sf_log.h \ + ../gsl/gsl_sf_psi.h ../gsl/gsl_sf_trig.h ../gsl/gsl_sf_gamma.h error.h \ + check.h chebyshev.h cheb_eval.c eval.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_sf_exp.h: + +../gsl/gsl_sf_result.h: + +../gsl/gsl_sf_log.h: + +../gsl/gsl_sf_psi.h: + +../gsl/gsl_sf_trig.h: + +../gsl/gsl_sf_gamma.h: + +error.h: + +check.h: + +chebyshev.h: + +cheb_eval.c: + +eval.h: diff --git a/gsl-2.5/specfunc/.deps/gamma_inc.Plo b/gsl-2.5/specfunc/.deps/gamma_inc.Plo new file mode 100644 index 00000000..7ca2f4c1 --- /dev/null +++ b/gsl-2.5/specfunc/.deps/gamma_inc.Plo @@ -0,0 +1,147 @@ +gamma_inc.lo: gamma_inc.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_math.h /usr/include/math.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_sf_erf.h ../gsl/gsl_sf_result.h ../gsl/gsl_sf_exp.h \ + ../gsl/gsl_sf_log.h ../gsl/gsl_sf_gamma.h ../gsl/gsl_sf_expint.h error.h \ + eval.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_sf_erf.h: + +../gsl/gsl_sf_result.h: + +../gsl/gsl_sf_exp.h: + +../gsl/gsl_sf_log.h: + +../gsl/gsl_sf_gamma.h: + +../gsl/gsl_sf_expint.h: + +error.h: + +eval.h: diff --git a/gsl-2.5/specfunc/.deps/gegenbauer.Plo b/gsl-2.5/specfunc/.deps/gegenbauer.Plo new file mode 100644 index 00000000..2b4823ee --- /dev/null +++ b/gsl-2.5/specfunc/.deps/gegenbauer.Plo @@ -0,0 +1,137 @@ +gegenbauer.lo: gegenbauer.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_math.h /usr/include/math.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_sf_gegenbauer.h ../gsl/gsl_sf_result.h error.h eval.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_sf_gegenbauer.h: + +../gsl/gsl_sf_result.h: + +error.h: + +eval.h: diff --git a/gsl-2.5/specfunc/.deps/hermite.Plo b/gsl-2.5/specfunc/.deps/hermite.Plo new file mode 100644 index 00000000..67078d36 --- /dev/null +++ b/gsl-2.5/specfunc/.deps/hermite.Plo @@ -0,0 +1,146 @@ +hermite.lo: hermite.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_errno.h /usr/include/stdio.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_types.h ../gsl/gsl_sf_airy.h ../gsl/gsl_mode.h \ + ../gsl/gsl_inline.h ../gsl/gsl_sf_result.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_nan.h ../gsl/gsl_pow_int.h \ + ../gsl/gsl_minmax.h ../gsl/gsl_sf_pow_int.h ../gsl/gsl_sf_gamma.h \ + ../gsl/gsl_sf_hermite.h error.h eval.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_sf_airy.h: + +../gsl/gsl_mode.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_sf_result.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_sf_pow_int.h: + +../gsl/gsl_sf_gamma.h: + +../gsl/gsl_sf_hermite.h: + +error.h: + +eval.h: diff --git a/gsl-2.5/specfunc/.deps/hyperg.Plo b/gsl-2.5/specfunc/.deps/hyperg.Plo new file mode 100644 index 00000000..7cbf8113 --- /dev/null +++ b/gsl-2.5/specfunc/.deps/hyperg.Plo @@ -0,0 +1,140 @@ +hyperg.lo: hyperg.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_math.h /usr/include/math.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_sf_exp.h ../gsl/gsl_sf_result.h ../gsl/gsl_sf_gamma.h error.h \ + hyperg.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_sf_exp.h: + +../gsl/gsl_sf_result.h: + +../gsl/gsl_sf_gamma.h: + +error.h: + +hyperg.h: diff --git a/gsl-2.5/specfunc/.deps/hyperg_0F1.Plo b/gsl-2.5/specfunc/.deps/hyperg_0F1.Plo new file mode 100644 index 00000000..b3017715 --- /dev/null +++ b/gsl-2.5/specfunc/.deps/hyperg_0F1.Plo @@ -0,0 +1,189 @@ +hyperg_0F1.lo: hyperg_0F1.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_math.h /usr/include/math.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_sf_exp.h ../gsl/gsl_sf_result.h ../gsl/gsl_sf_gamma.h \ + ../gsl/gsl_sf_bessel.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_mode.h \ + ../gsl/gsl_sf_hyperg.h error.h eval.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_sf_exp.h: + +../gsl/gsl_sf_result.h: + +../gsl/gsl_sf_gamma.h: + +../gsl/gsl_sf_bessel.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_mode.h: + +../gsl/gsl_sf_hyperg.h: + +error.h: + +eval.h: diff --git a/gsl-2.5/specfunc/.deps/hyperg_1F1.Plo b/gsl-2.5/specfunc/.deps/hyperg_1F1.Plo new file mode 100644 index 00000000..906361cf --- /dev/null +++ b/gsl-2.5/specfunc/.deps/hyperg_1F1.Plo @@ -0,0 +1,195 @@ +hyperg_1F1.lo: hyperg_1F1.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_math.h /usr/include/math.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_sf_elementary.h ../gsl/gsl_sf_result.h ../gsl/gsl_sf_exp.h \ + ../gsl/gsl_sf_bessel.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_mode.h ../gsl/gsl_sf_gamma.h \ + ../gsl/gsl_sf_laguerre.h ../gsl/gsl_sf_hyperg.h error.h hyperg.h eval.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_sf_elementary.h: + +../gsl/gsl_sf_result.h: + +../gsl/gsl_sf_exp.h: + +../gsl/gsl_sf_bessel.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_mode.h: + +../gsl/gsl_sf_gamma.h: + +../gsl/gsl_sf_laguerre.h: + +../gsl/gsl_sf_hyperg.h: + +error.h: + +hyperg.h: + +eval.h: diff --git a/gsl-2.5/specfunc/.deps/hyperg_2F0.Plo b/gsl-2.5/specfunc/.deps/hyperg_2F0.Plo new file mode 100644 index 00000000..05c64c40 --- /dev/null +++ b/gsl-2.5/specfunc/.deps/hyperg_2F0.Plo @@ -0,0 +1,139 @@ +hyperg_2F0.lo: hyperg_2F0.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_math.h /usr/include/math.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_sf_hyperg.h ../gsl/gsl_sf_result.h error.h hyperg.h eval.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_sf_hyperg.h: + +../gsl/gsl_sf_result.h: + +error.h: + +hyperg.h: + +eval.h: diff --git a/gsl-2.5/specfunc/.deps/hyperg_2F1.Plo b/gsl-2.5/specfunc/.deps/hyperg_2F1.Plo new file mode 100644 index 00000000..8938a3bf --- /dev/null +++ b/gsl-2.5/specfunc/.deps/hyperg_2F1.Plo @@ -0,0 +1,147 @@ +hyperg_2F1.lo: hyperg_2F1.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_math.h /usr/include/math.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_sf_exp.h ../gsl/gsl_sf_result.h ../gsl/gsl_sf_pow_int.h \ + ../gsl/gsl_sf_gamma.h ../gsl/gsl_sf_psi.h ../gsl/gsl_sf_hyperg.h error.h \ + eval.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_sf_exp.h: + +../gsl/gsl_sf_result.h: + +../gsl/gsl_sf_pow_int.h: + +../gsl/gsl_sf_gamma.h: + +../gsl/gsl_sf_psi.h: + +../gsl/gsl_sf_hyperg.h: + +error.h: + +eval.h: diff --git a/gsl-2.5/specfunc/.deps/hyperg_U.Plo b/gsl-2.5/specfunc/.deps/hyperg_U.Plo new file mode 100644 index 00000000..064a3a18 --- /dev/null +++ b/gsl-2.5/specfunc/.deps/hyperg_U.Plo @@ -0,0 +1,196 @@ +hyperg_U.lo: hyperg_U.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_math.h /usr/include/math.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_sf_exp.h ../gsl/gsl_sf_result.h ../gsl/gsl_sf_gamma.h \ + ../gsl/gsl_sf_bessel.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_mode.h \ + ../gsl/gsl_sf_laguerre.h ../gsl/gsl_sf_pow_int.h ../gsl/gsl_sf_hyperg.h \ + error.h hyperg.h eval.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_sf_exp.h: + +../gsl/gsl_sf_result.h: + +../gsl/gsl_sf_gamma.h: + +../gsl/gsl_sf_bessel.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_mode.h: + +../gsl/gsl_sf_laguerre.h: + +../gsl/gsl_sf_pow_int.h: + +../gsl/gsl_sf_hyperg.h: + +error.h: + +hyperg.h: + +eval.h: diff --git a/gsl-2.5/specfunc/.deps/laguerre.Plo b/gsl-2.5/specfunc/.deps/laguerre.Plo new file mode 100644 index 00000000..3298f989 --- /dev/null +++ b/gsl-2.5/specfunc/.deps/laguerre.Plo @@ -0,0 +1,142 @@ +laguerre.lo: laguerre.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_math.h /usr/include/math.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_sf_exp.h ../gsl/gsl_sf_result.h ../gsl/gsl_sf_gamma.h \ + ../gsl/gsl_sf_laguerre.h error.h eval.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_sf_exp.h: + +../gsl/gsl_sf_result.h: + +../gsl/gsl_sf_gamma.h: + +../gsl/gsl_sf_laguerre.h: + +error.h: + +eval.h: diff --git a/gsl-2.5/specfunc/.deps/lambert.Plo b/gsl-2.5/specfunc/.deps/lambert.Plo new file mode 100644 index 00000000..fd7fe7d4 --- /dev/null +++ b/gsl-2.5/specfunc/.deps/lambert.Plo @@ -0,0 +1,135 @@ +lambert.lo: lambert.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_math.h ../gsl/gsl_sys.h \ + ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_sf_lambert.h ../gsl/gsl_sf_result.h eval.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_sf_lambert.h: + +../gsl/gsl_sf_result.h: + +eval.h: diff --git a/gsl-2.5/specfunc/.deps/legendre_H3d.Plo b/gsl-2.5/specfunc/.deps/legendre_H3d.Plo new file mode 100644 index 00000000..3b3c4ed6 --- /dev/null +++ b/gsl-2.5/specfunc/.deps/legendre_H3d.Plo @@ -0,0 +1,146 @@ +legendre_H3d.lo: legendre_H3d.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_math.h /usr/include/math.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_sf_exp.h ../gsl/gsl_sf_result.h ../gsl/gsl_sf_gamma.h \ + ../gsl/gsl_sf_trig.h ../gsl/gsl_sf_legendre.h error.h legendre.h eval.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_sf_exp.h: + +../gsl/gsl_sf_result.h: + +../gsl/gsl_sf_gamma.h: + +../gsl/gsl_sf_trig.h: + +../gsl/gsl_sf_legendre.h: + +error.h: + +legendre.h: + +eval.h: diff --git a/gsl-2.5/specfunc/.deps/legendre_P.Plo b/gsl-2.5/specfunc/.deps/legendre_P.Plo new file mode 100644 index 00000000..6abfdef7 --- /dev/null +++ b/gsl-2.5/specfunc/.deps/legendre_P.Plo @@ -0,0 +1,177 @@ +legendre_P.lo: legendre_P.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_sf_legendre.h ../gsl/gsl_sf_result.h legendre_source.c + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_sf_legendre.h: + +../gsl/gsl_sf_result.h: + +legendre_source.c: diff --git a/gsl-2.5/specfunc/.deps/legendre_Qn.Plo b/gsl-2.5/specfunc/.deps/legendre_Qn.Plo new file mode 100644 index 00000000..b436517e --- /dev/null +++ b/gsl-2.5/specfunc/.deps/legendre_Qn.Plo @@ -0,0 +1,191 @@ +legendre_Qn.lo: legendre_Qn.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_math.h /usr/include/math.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_sf_bessel.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_mode.h \ + ../gsl/gsl_sf_result.h ../gsl/gsl_sf_elementary.h ../gsl/gsl_sf_exp.h \ + ../gsl/gsl_sf_pow_int.h ../gsl/gsl_sf_legendre.h error.h eval.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_sf_bessel.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_mode.h: + +../gsl/gsl_sf_result.h: + +../gsl/gsl_sf_elementary.h: + +../gsl/gsl_sf_exp.h: + +../gsl/gsl_sf_pow_int.h: + +../gsl/gsl_sf_legendre.h: + +error.h: + +eval.h: diff --git a/gsl-2.5/specfunc/.deps/legendre_con.Plo b/gsl-2.5/specfunc/.deps/legendre_con.Plo new file mode 100644 index 00000000..a0a924cf --- /dev/null +++ b/gsl-2.5/specfunc/.deps/legendre_con.Plo @@ -0,0 +1,205 @@ +legendre_con.lo: legendre_con.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_math.h /usr/include/math.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_poly.h /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/byteswap.h \ + /usr/include/bits/byteswap-16.h /usr/include/sys/types.h \ + /usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib-float.h \ + ../gsl/gsl_complex.h ../gsl/gsl_sf_exp.h ../gsl/gsl_sf_result.h \ + ../gsl/gsl_sf_trig.h ../gsl/gsl_sf_gamma.h ../gsl/gsl_sf_ellint.h \ + ../gsl/gsl_mode.h ../gsl/gsl_sf_pow_int.h ../gsl/gsl_sf_bessel.h \ + ../gsl/gsl_sf_hyperg.h ../gsl/gsl_sf_legendre.h error.h legendre.h \ + eval.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_poly.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_sf_exp.h: + +../gsl/gsl_sf_result.h: + +../gsl/gsl_sf_trig.h: + +../gsl/gsl_sf_gamma.h: + +../gsl/gsl_sf_ellint.h: + +../gsl/gsl_mode.h: + +../gsl/gsl_sf_pow_int.h: + +../gsl/gsl_sf_bessel.h: + +../gsl/gsl_sf_hyperg.h: + +../gsl/gsl_sf_legendre.h: + +error.h: + +legendre.h: + +eval.h: diff --git a/gsl-2.5/specfunc/.deps/legendre_poly.Plo b/gsl-2.5/specfunc/.deps/legendre_poly.Plo new file mode 100644 index 00000000..fada6ce4 --- /dev/null +++ b/gsl-2.5/specfunc/.deps/legendre_poly.Plo @@ -0,0 +1,194 @@ +legendre_poly.lo: legendre_poly.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_math.h /usr/include/math.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_sf_bessel.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_mode.h \ + ../gsl/gsl_sf_result.h ../gsl/gsl_sf_exp.h ../gsl/gsl_sf_gamma.h \ + ../gsl/gsl_sf_log.h ../gsl/gsl_sf_pow_int.h ../gsl/gsl_sf_legendre.h \ + error.h eval.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_sf_bessel.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_mode.h: + +../gsl/gsl_sf_result.h: + +../gsl/gsl_sf_exp.h: + +../gsl/gsl_sf_gamma.h: + +../gsl/gsl_sf_log.h: + +../gsl/gsl_sf_pow_int.h: + +../gsl/gsl_sf_legendre.h: + +error.h: + +eval.h: diff --git a/gsl-2.5/specfunc/.deps/log.Plo b/gsl-2.5/specfunc/.deps/log.Plo new file mode 100644 index 00000000..58f55226 --- /dev/null +++ b/gsl-2.5/specfunc/.deps/log.Plo @@ -0,0 +1,142 @@ +log.lo: log.c /usr/include/stdc-predef.h ../config.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_sf_log.h ../gsl/gsl_sf_result.h error.h chebyshev.h \ + cheb_eval.c eval.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_sf_log.h: + +../gsl/gsl_sf_result.h: + +error.h: + +chebyshev.h: + +cheb_eval.c: + +eval.h: diff --git a/gsl-2.5/specfunc/.deps/mathieu_angfunc.Plo b/gsl-2.5/specfunc/.deps/mathieu_angfunc.Plo new file mode 100644 index 00000000..7b7da7ed --- /dev/null +++ b/gsl-2.5/specfunc/.deps/mathieu_angfunc.Plo @@ -0,0 +1,298 @@ +mathieu_angfunc.lo: mathieu_angfunc.c /usr/include/stdc-predef.h \ + ../config.h /usr/include/stdlib.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_math.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_sf_mathieu.h \ + ../gsl/gsl_sf_result.h ../gsl/gsl_eigen.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_errno.h \ + /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h eval.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_sf_mathieu.h: + +../gsl/gsl_sf_result.h: + +../gsl/gsl_eigen.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +eval.h: diff --git a/gsl-2.5/specfunc/.deps/mathieu_charv.Plo b/gsl-2.5/specfunc/.deps/mathieu_charv.Plo new file mode 100644 index 00000000..e7231934 --- /dev/null +++ b/gsl-2.5/specfunc/.deps/mathieu_charv.Plo @@ -0,0 +1,298 @@ +mathieu_charv.lo: mathieu_charv.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_math.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_eigen.h \ + ../gsl/gsl_vector.h ../gsl/gsl_vector_complex_long_double.h \ + ../gsl/gsl_errno.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_sf_mathieu.h ../gsl/gsl_sf_result.h \ + eval.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_eigen.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_sf_mathieu.h: + +../gsl/gsl_sf_result.h: + +eval.h: diff --git a/gsl-2.5/specfunc/.deps/mathieu_coeff.Plo b/gsl-2.5/specfunc/.deps/mathieu_coeff.Plo new file mode 100644 index 00000000..e060014b --- /dev/null +++ b/gsl-2.5/specfunc/.deps/mathieu_coeff.Plo @@ -0,0 +1,257 @@ +mathieu_coeff.lo: mathieu_coeff.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sf_mathieu.h ../gsl/gsl_sf_result.h ../gsl/gsl_eigen.h \ + ../gsl/gsl_vector.h ../gsl/gsl_vector_complex_long_double.h \ + ../gsl/gsl_types.h ../gsl/gsl_errno.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_inline.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_vector_complex.h \ + ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sf_mathieu.h: + +../gsl/gsl_sf_result.h: + +../gsl/gsl_eigen.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_types.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: diff --git a/gsl-2.5/specfunc/.deps/mathieu_radfunc.Plo b/gsl-2.5/specfunc/.deps/mathieu_radfunc.Plo new file mode 100644 index 00000000..02f7ad1e --- /dev/null +++ b/gsl-2.5/specfunc/.deps/mathieu_radfunc.Plo @@ -0,0 +1,374 @@ +mathieu_radfunc.lo: mathieu_radfunc.c /usr/include/stdc-predef.h \ + ../config.h /usr/include/stdlib.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_math.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_sf.h \ + ../gsl/gsl_sf_result.h ../gsl/gsl_sf_airy.h ../gsl/gsl_mode.h \ + ../gsl/gsl_sf_bessel.h ../gsl/gsl_sf_clausen.h ../gsl/gsl_sf_coupling.h \ + ../gsl/gsl_sf_coulomb.h ../gsl/gsl_sf_dawson.h ../gsl/gsl_sf_debye.h \ + ../gsl/gsl_sf_dilog.h ../gsl/gsl_sf_elementary.h ../gsl/gsl_sf_ellint.h \ + ../gsl/gsl_sf_elljac.h ../gsl/gsl_sf_erf.h ../gsl/gsl_sf_exp.h \ + ../gsl/gsl_sf_expint.h ../gsl/gsl_sf_fermi_dirac.h ../gsl/gsl_sf_gamma.h \ + ../gsl/gsl_sf_gegenbauer.h ../gsl/gsl_sf_hermite.h \ + ../gsl/gsl_sf_hyperg.h ../gsl/gsl_sf_laguerre.h ../gsl/gsl_sf_lambert.h \ + ../gsl/gsl_sf_legendre.h ../gsl/gsl_sf_log.h ../gsl/gsl_sf_mathieu.h \ + ../gsl/gsl_eigen.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_sf_pow_int.h ../gsl/gsl_sf_psi.h \ + ../gsl/gsl_sf_sincos_pi.h ../gsl/gsl_sf_synchrotron.h \ + ../gsl/gsl_sf_transport.h ../gsl/gsl_sf_trig.h ../gsl/gsl_sf_zeta.h \ + eval.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_sf.h: + +../gsl/gsl_sf_result.h: + +../gsl/gsl_sf_airy.h: + +../gsl/gsl_mode.h: + +../gsl/gsl_sf_bessel.h: + +../gsl/gsl_sf_clausen.h: + +../gsl/gsl_sf_coupling.h: + +../gsl/gsl_sf_coulomb.h: + +../gsl/gsl_sf_dawson.h: + +../gsl/gsl_sf_debye.h: + +../gsl/gsl_sf_dilog.h: + +../gsl/gsl_sf_elementary.h: + +../gsl/gsl_sf_ellint.h: + +../gsl/gsl_sf_elljac.h: + +../gsl/gsl_sf_erf.h: + +../gsl/gsl_sf_exp.h: + +../gsl/gsl_sf_expint.h: + +../gsl/gsl_sf_fermi_dirac.h: + +../gsl/gsl_sf_gamma.h: + +../gsl/gsl_sf_gegenbauer.h: + +../gsl/gsl_sf_hermite.h: + +../gsl/gsl_sf_hyperg.h: + +../gsl/gsl_sf_laguerre.h: + +../gsl/gsl_sf_lambert.h: + +../gsl/gsl_sf_legendre.h: + +../gsl/gsl_sf_log.h: + +../gsl/gsl_sf_mathieu.h: + +../gsl/gsl_eigen.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_sf_pow_int.h: + +../gsl/gsl_sf_psi.h: + +../gsl/gsl_sf_sincos_pi.h: + +../gsl/gsl_sf_synchrotron.h: + +../gsl/gsl_sf_transport.h: + +../gsl/gsl_sf_trig.h: + +../gsl/gsl_sf_zeta.h: + +eval.h: diff --git a/gsl-2.5/specfunc/.deps/mathieu_workspace.Plo b/gsl-2.5/specfunc/.deps/mathieu_workspace.Plo new file mode 100644 index 00000000..4f1b4ba1 --- /dev/null +++ b/gsl-2.5/specfunc/.deps/mathieu_workspace.Plo @@ -0,0 +1,295 @@ +mathieu_workspace.lo: mathieu_workspace.c /usr/include/stdc-predef.h \ + ../config.h /usr/include/stdlib.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_sf_mathieu.h ../gsl/gsl_sf_result.h ../gsl/gsl_eigen.h \ + ../gsl/gsl_vector.h ../gsl/gsl_vector_complex_long_double.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_sf_mathieu.h: + +../gsl/gsl_sf_result.h: + +../gsl/gsl_eigen.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: diff --git a/gsl-2.5/specfunc/.deps/poch.Plo b/gsl-2.5/specfunc/.deps/poch.Plo new file mode 100644 index 00000000..d63e3c2d --- /dev/null +++ b/gsl-2.5/specfunc/.deps/poch.Plo @@ -0,0 +1,147 @@ +poch.lo: poch.c /usr/include/stdc-predef.h ../config.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_sf_exp.h ../gsl/gsl_sf_result.h ../gsl/gsl_sf_log.h \ + ../gsl/gsl_sf_pow_int.h ../gsl/gsl_sf_psi.h ../gsl/gsl_sf_gamma.h \ + error.h eval.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_sf_exp.h: + +../gsl/gsl_sf_result.h: + +../gsl/gsl_sf_log.h: + +../gsl/gsl_sf_pow_int.h: + +../gsl/gsl_sf_psi.h: + +../gsl/gsl_sf_gamma.h: + +error.h: + +eval.h: diff --git a/gsl-2.5/specfunc/.deps/pow_int.Plo b/gsl-2.5/specfunc/.deps/pow_int.Plo new file mode 100644 index 00000000..413b6138 --- /dev/null +++ b/gsl-2.5/specfunc/.deps/pow_int.Plo @@ -0,0 +1,135 @@ +pow_int.lo: pow_int.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_math.h /usr/include/math.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_sf_pow_int.h ../gsl/gsl_sf_result.h eval.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_sf_pow_int.h: + +../gsl/gsl_sf_result.h: + +eval.h: diff --git a/gsl-2.5/specfunc/.deps/psi.Plo b/gsl-2.5/specfunc/.deps/psi.Plo new file mode 100644 index 00000000..26b29c45 --- /dev/null +++ b/gsl-2.5/specfunc/.deps/psi.Plo @@ -0,0 +1,153 @@ +psi.lo: psi.c /usr/include/stdc-predef.h ../config.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_sf_exp.h ../gsl/gsl_sf_result.h ../gsl/gsl_sf_gamma.h \ + ../gsl/gsl_sf_zeta.h ../gsl/gsl_sf_psi.h ../gsl/gsl_complex_math.h \ + ../gsl/gsl_complex.h error.h chebyshev.h cheb_eval.c eval.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_sf_exp.h: + +../gsl/gsl_sf_result.h: + +../gsl/gsl_sf_gamma.h: + +../gsl/gsl_sf_zeta.h: + +../gsl/gsl_sf_psi.h: + +../gsl/gsl_complex_math.h: + +../gsl/gsl_complex.h: + +error.h: + +chebyshev.h: + +cheb_eval.c: + +eval.h: diff --git a/gsl-2.5/specfunc/.deps/result.Plo b/gsl-2.5/specfunc/.deps/result.Plo new file mode 100644 index 00000000..2e7856db --- /dev/null +++ b/gsl-2.5/specfunc/.deps/result.Plo @@ -0,0 +1,133 @@ +result.lo: result.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_math.h /usr/include/math.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_sf_exp.h ../gsl/gsl_sf_result.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_sf_exp.h: + +../gsl/gsl_sf_result.h: diff --git a/gsl-2.5/specfunc/.deps/shint.Plo b/gsl-2.5/specfunc/.deps/shint.Plo new file mode 100644 index 00000000..e81099c1 --- /dev/null +++ b/gsl-2.5/specfunc/.deps/shint.Plo @@ -0,0 +1,142 @@ +shint.lo: shint.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_math.h /usr/include/math.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_sf_expint.h ../gsl/gsl_sf_result.h error.h chebyshev.h \ + cheb_eval.c eval.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_sf_expint.h: + +../gsl/gsl_sf_result.h: + +error.h: + +chebyshev.h: + +cheb_eval.c: + +eval.h: diff --git a/gsl-2.5/specfunc/.deps/sincos_pi.Plo b/gsl-2.5/specfunc/.deps/sincos_pi.Plo new file mode 100644 index 00000000..2aeef99f --- /dev/null +++ b/gsl-2.5/specfunc/.deps/sincos_pi.Plo @@ -0,0 +1,135 @@ +sincos_pi.lo: sincos_pi.c /usr/include/stdc-predef.h /usr/include/math.h \ + /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_math.h ../gsl/gsl_sys.h \ + ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_sf_trig.h \ + ../gsl/gsl_sf_result.h ../gsl/gsl_errno.h /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_sf_sincos_pi.h eval.h + +/usr/include/stdc-predef.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_sf_trig.h: + +../gsl/gsl_sf_result.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_sf_sincos_pi.h: + +eval.h: diff --git a/gsl-2.5/specfunc/.deps/sinint.Plo b/gsl-2.5/specfunc/.deps/sinint.Plo new file mode 100644 index 00000000..059b9a3b --- /dev/null +++ b/gsl-2.5/specfunc/.deps/sinint.Plo @@ -0,0 +1,144 @@ +sinint.lo: sinint.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_math.h /usr/include/math.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_sf_trig.h ../gsl/gsl_sf_result.h ../gsl/gsl_sf_expint.h \ + error.h chebyshev.h cheb_eval.c eval.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_sf_trig.h: + +../gsl/gsl_sf_result.h: + +../gsl/gsl_sf_expint.h: + +error.h: + +chebyshev.h: + +cheb_eval.c: + +eval.h: diff --git a/gsl-2.5/specfunc/.deps/synchrotron.Plo b/gsl-2.5/specfunc/.deps/synchrotron.Plo new file mode 100644 index 00000000..c85e5bce --- /dev/null +++ b/gsl-2.5/specfunc/.deps/synchrotron.Plo @@ -0,0 +1,146 @@ +synchrotron.lo: synchrotron.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_math.h /usr/include/math.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_sf_exp.h ../gsl/gsl_sf_result.h ../gsl/gsl_sf_pow_int.h \ + ../gsl/gsl_sf_synchrotron.h error.h chebyshev.h cheb_eval.c eval.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_sf_exp.h: + +../gsl/gsl_sf_result.h: + +../gsl/gsl_sf_pow_int.h: + +../gsl/gsl_sf_synchrotron.h: + +error.h: + +chebyshev.h: + +cheb_eval.c: + +eval.h: diff --git a/gsl-2.5/specfunc/.deps/test_airy.Po b/gsl-2.5/specfunc/.deps/test_airy.Po new file mode 100644 index 00000000..45b491fe --- /dev/null +++ b/gsl-2.5/specfunc/.deps/test_airy.Po @@ -0,0 +1,375 @@ +test_airy.o: test_airy.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_test.h ../gsl/gsl_sf.h ../gsl/gsl_sf_result.h \ + ../gsl/gsl_sf_airy.h ../gsl/gsl_mode.h ../gsl/gsl_inline.h \ + ../gsl/gsl_sf_bessel.h /usr/include/stdlib.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_precision.h \ + ../gsl/gsl_types.h ../gsl/gsl_sf_clausen.h ../gsl/gsl_sf_coupling.h \ + ../gsl/gsl_sf_coulomb.h ../gsl/gsl_sf_dawson.h ../gsl/gsl_sf_debye.h \ + ../gsl/gsl_sf_dilog.h ../gsl/gsl_sf_elementary.h ../gsl/gsl_sf_ellint.h \ + ../gsl/gsl_sf_elljac.h ../gsl/gsl_sf_erf.h ../gsl/gsl_sf_exp.h \ + ../gsl/gsl_sf_expint.h ../gsl/gsl_sf_fermi_dirac.h ../gsl/gsl_sf_gamma.h \ + ../gsl/gsl_sf_gegenbauer.h ../gsl/gsl_sf_hermite.h \ + ../gsl/gsl_sf_hyperg.h ../gsl/gsl_sf_laguerre.h ../gsl/gsl_sf_lambert.h \ + ../gsl/gsl_sf_legendre.h ../gsl/gsl_sf_log.h ../gsl/gsl_sf_mathieu.h \ + ../gsl/gsl_eigen.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_sf_pow_int.h ../gsl/gsl_sf_psi.h \ + ../gsl/gsl_sf_sincos_pi.h ../gsl/gsl_sf_synchrotron.h \ + ../gsl/gsl_sf_transport.h ../gsl/gsl_sf_trig.h ../gsl/gsl_sf_zeta.h \ + test_sf.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_test.h: + +../gsl/gsl_sf.h: + +../gsl/gsl_sf_result.h: + +../gsl/gsl_sf_airy.h: + +../gsl/gsl_mode.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_sf_bessel.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_sf_clausen.h: + +../gsl/gsl_sf_coupling.h: + +../gsl/gsl_sf_coulomb.h: + +../gsl/gsl_sf_dawson.h: + +../gsl/gsl_sf_debye.h: + +../gsl/gsl_sf_dilog.h: + +../gsl/gsl_sf_elementary.h: + +../gsl/gsl_sf_ellint.h: + +../gsl/gsl_sf_elljac.h: + +../gsl/gsl_sf_erf.h: + +../gsl/gsl_sf_exp.h: + +../gsl/gsl_sf_expint.h: + +../gsl/gsl_sf_fermi_dirac.h: + +../gsl/gsl_sf_gamma.h: + +../gsl/gsl_sf_gegenbauer.h: + +../gsl/gsl_sf_hermite.h: + +../gsl/gsl_sf_hyperg.h: + +../gsl/gsl_sf_laguerre.h: + +../gsl/gsl_sf_lambert.h: + +../gsl/gsl_sf_legendre.h: + +../gsl/gsl_sf_log.h: + +../gsl/gsl_sf_mathieu.h: + +../gsl/gsl_eigen.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_sf_pow_int.h: + +../gsl/gsl_sf_psi.h: + +../gsl/gsl_sf_sincos_pi.h: + +../gsl/gsl_sf_synchrotron.h: + +../gsl/gsl_sf_transport.h: + +../gsl/gsl_sf_trig.h: + +../gsl/gsl_sf_zeta.h: + +test_sf.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: diff --git a/gsl-2.5/specfunc/.deps/test_bessel.Po b/gsl-2.5/specfunc/.deps/test_bessel.Po new file mode 100644 index 00000000..84a49bde --- /dev/null +++ b/gsl-2.5/specfunc/.deps/test_bessel.Po @@ -0,0 +1,375 @@ +test_bessel.o: test_bessel.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_test.h ../gsl/gsl_sf.h ../gsl/gsl_sf_result.h \ + ../gsl/gsl_sf_airy.h ../gsl/gsl_mode.h ../gsl/gsl_inline.h \ + ../gsl/gsl_sf_bessel.h /usr/include/stdlib.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_precision.h \ + ../gsl/gsl_types.h ../gsl/gsl_sf_clausen.h ../gsl/gsl_sf_coupling.h \ + ../gsl/gsl_sf_coulomb.h ../gsl/gsl_sf_dawson.h ../gsl/gsl_sf_debye.h \ + ../gsl/gsl_sf_dilog.h ../gsl/gsl_sf_elementary.h ../gsl/gsl_sf_ellint.h \ + ../gsl/gsl_sf_elljac.h ../gsl/gsl_sf_erf.h ../gsl/gsl_sf_exp.h \ + ../gsl/gsl_sf_expint.h ../gsl/gsl_sf_fermi_dirac.h ../gsl/gsl_sf_gamma.h \ + ../gsl/gsl_sf_gegenbauer.h ../gsl/gsl_sf_hermite.h \ + ../gsl/gsl_sf_hyperg.h ../gsl/gsl_sf_laguerre.h ../gsl/gsl_sf_lambert.h \ + ../gsl/gsl_sf_legendre.h ../gsl/gsl_sf_log.h ../gsl/gsl_sf_mathieu.h \ + ../gsl/gsl_eigen.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_sf_pow_int.h ../gsl/gsl_sf_psi.h \ + ../gsl/gsl_sf_sincos_pi.h ../gsl/gsl_sf_synchrotron.h \ + ../gsl/gsl_sf_transport.h ../gsl/gsl_sf_trig.h ../gsl/gsl_sf_zeta.h \ + test_sf.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_test.h: + +../gsl/gsl_sf.h: + +../gsl/gsl_sf_result.h: + +../gsl/gsl_sf_airy.h: + +../gsl/gsl_mode.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_sf_bessel.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_sf_clausen.h: + +../gsl/gsl_sf_coupling.h: + +../gsl/gsl_sf_coulomb.h: + +../gsl/gsl_sf_dawson.h: + +../gsl/gsl_sf_debye.h: + +../gsl/gsl_sf_dilog.h: + +../gsl/gsl_sf_elementary.h: + +../gsl/gsl_sf_ellint.h: + +../gsl/gsl_sf_elljac.h: + +../gsl/gsl_sf_erf.h: + +../gsl/gsl_sf_exp.h: + +../gsl/gsl_sf_expint.h: + +../gsl/gsl_sf_fermi_dirac.h: + +../gsl/gsl_sf_gamma.h: + +../gsl/gsl_sf_gegenbauer.h: + +../gsl/gsl_sf_hermite.h: + +../gsl/gsl_sf_hyperg.h: + +../gsl/gsl_sf_laguerre.h: + +../gsl/gsl_sf_lambert.h: + +../gsl/gsl_sf_legendre.h: + +../gsl/gsl_sf_log.h: + +../gsl/gsl_sf_mathieu.h: + +../gsl/gsl_eigen.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_sf_pow_int.h: + +../gsl/gsl_sf_psi.h: + +../gsl/gsl_sf_sincos_pi.h: + +../gsl/gsl_sf_synchrotron.h: + +../gsl/gsl_sf_transport.h: + +../gsl/gsl_sf_trig.h: + +../gsl/gsl_sf_zeta.h: + +test_sf.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: diff --git a/gsl-2.5/specfunc/.deps/test_coulomb.Po b/gsl-2.5/specfunc/.deps/test_coulomb.Po new file mode 100644 index 00000000..5eba1435 --- /dev/null +++ b/gsl-2.5/specfunc/.deps/test_coulomb.Po @@ -0,0 +1,375 @@ +test_coulomb.o: test_coulomb.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_test.h ../gsl/gsl_sf.h ../gsl/gsl_sf_result.h \ + ../gsl/gsl_sf_airy.h ../gsl/gsl_mode.h ../gsl/gsl_inline.h \ + ../gsl/gsl_sf_bessel.h /usr/include/stdlib.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_precision.h \ + ../gsl/gsl_types.h ../gsl/gsl_sf_clausen.h ../gsl/gsl_sf_coupling.h \ + ../gsl/gsl_sf_coulomb.h ../gsl/gsl_sf_dawson.h ../gsl/gsl_sf_debye.h \ + ../gsl/gsl_sf_dilog.h ../gsl/gsl_sf_elementary.h ../gsl/gsl_sf_ellint.h \ + ../gsl/gsl_sf_elljac.h ../gsl/gsl_sf_erf.h ../gsl/gsl_sf_exp.h \ + ../gsl/gsl_sf_expint.h ../gsl/gsl_sf_fermi_dirac.h ../gsl/gsl_sf_gamma.h \ + ../gsl/gsl_sf_gegenbauer.h ../gsl/gsl_sf_hermite.h \ + ../gsl/gsl_sf_hyperg.h ../gsl/gsl_sf_laguerre.h ../gsl/gsl_sf_lambert.h \ + ../gsl/gsl_sf_legendre.h ../gsl/gsl_sf_log.h ../gsl/gsl_sf_mathieu.h \ + ../gsl/gsl_eigen.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_sf_pow_int.h ../gsl/gsl_sf_psi.h \ + ../gsl/gsl_sf_sincos_pi.h ../gsl/gsl_sf_synchrotron.h \ + ../gsl/gsl_sf_transport.h ../gsl/gsl_sf_trig.h ../gsl/gsl_sf_zeta.h \ + test_sf.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_test.h: + +../gsl/gsl_sf.h: + +../gsl/gsl_sf_result.h: + +../gsl/gsl_sf_airy.h: + +../gsl/gsl_mode.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_sf_bessel.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_sf_clausen.h: + +../gsl/gsl_sf_coupling.h: + +../gsl/gsl_sf_coulomb.h: + +../gsl/gsl_sf_dawson.h: + +../gsl/gsl_sf_debye.h: + +../gsl/gsl_sf_dilog.h: + +../gsl/gsl_sf_elementary.h: + +../gsl/gsl_sf_ellint.h: + +../gsl/gsl_sf_elljac.h: + +../gsl/gsl_sf_erf.h: + +../gsl/gsl_sf_exp.h: + +../gsl/gsl_sf_expint.h: + +../gsl/gsl_sf_fermi_dirac.h: + +../gsl/gsl_sf_gamma.h: + +../gsl/gsl_sf_gegenbauer.h: + +../gsl/gsl_sf_hermite.h: + +../gsl/gsl_sf_hyperg.h: + +../gsl/gsl_sf_laguerre.h: + +../gsl/gsl_sf_lambert.h: + +../gsl/gsl_sf_legendre.h: + +../gsl/gsl_sf_log.h: + +../gsl/gsl_sf_mathieu.h: + +../gsl/gsl_eigen.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_sf_pow_int.h: + +../gsl/gsl_sf_psi.h: + +../gsl/gsl_sf_sincos_pi.h: + +../gsl/gsl_sf_synchrotron.h: + +../gsl/gsl_sf_transport.h: + +../gsl/gsl_sf_trig.h: + +../gsl/gsl_sf_zeta.h: + +test_sf.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: diff --git a/gsl-2.5/specfunc/.deps/test_dilog.Po b/gsl-2.5/specfunc/.deps/test_dilog.Po new file mode 100644 index 00000000..aafaf67d --- /dev/null +++ b/gsl-2.5/specfunc/.deps/test_dilog.Po @@ -0,0 +1,375 @@ +test_dilog.o: test_dilog.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_test.h ../gsl/gsl_sf.h ../gsl/gsl_sf_result.h \ + ../gsl/gsl_sf_airy.h ../gsl/gsl_mode.h ../gsl/gsl_inline.h \ + ../gsl/gsl_sf_bessel.h /usr/include/stdlib.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_precision.h \ + ../gsl/gsl_types.h ../gsl/gsl_sf_clausen.h ../gsl/gsl_sf_coupling.h \ + ../gsl/gsl_sf_coulomb.h ../gsl/gsl_sf_dawson.h ../gsl/gsl_sf_debye.h \ + ../gsl/gsl_sf_dilog.h ../gsl/gsl_sf_elementary.h ../gsl/gsl_sf_ellint.h \ + ../gsl/gsl_sf_elljac.h ../gsl/gsl_sf_erf.h ../gsl/gsl_sf_exp.h \ + ../gsl/gsl_sf_expint.h ../gsl/gsl_sf_fermi_dirac.h ../gsl/gsl_sf_gamma.h \ + ../gsl/gsl_sf_gegenbauer.h ../gsl/gsl_sf_hermite.h \ + ../gsl/gsl_sf_hyperg.h ../gsl/gsl_sf_laguerre.h ../gsl/gsl_sf_lambert.h \ + ../gsl/gsl_sf_legendre.h ../gsl/gsl_sf_log.h ../gsl/gsl_sf_mathieu.h \ + ../gsl/gsl_eigen.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_sf_pow_int.h ../gsl/gsl_sf_psi.h \ + ../gsl/gsl_sf_sincos_pi.h ../gsl/gsl_sf_synchrotron.h \ + ../gsl/gsl_sf_transport.h ../gsl/gsl_sf_trig.h ../gsl/gsl_sf_zeta.h \ + test_sf.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_test.h: + +../gsl/gsl_sf.h: + +../gsl/gsl_sf_result.h: + +../gsl/gsl_sf_airy.h: + +../gsl/gsl_mode.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_sf_bessel.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_sf_clausen.h: + +../gsl/gsl_sf_coupling.h: + +../gsl/gsl_sf_coulomb.h: + +../gsl/gsl_sf_dawson.h: + +../gsl/gsl_sf_debye.h: + +../gsl/gsl_sf_dilog.h: + +../gsl/gsl_sf_elementary.h: + +../gsl/gsl_sf_ellint.h: + +../gsl/gsl_sf_elljac.h: + +../gsl/gsl_sf_erf.h: + +../gsl/gsl_sf_exp.h: + +../gsl/gsl_sf_expint.h: + +../gsl/gsl_sf_fermi_dirac.h: + +../gsl/gsl_sf_gamma.h: + +../gsl/gsl_sf_gegenbauer.h: + +../gsl/gsl_sf_hermite.h: + +../gsl/gsl_sf_hyperg.h: + +../gsl/gsl_sf_laguerre.h: + +../gsl/gsl_sf_lambert.h: + +../gsl/gsl_sf_legendre.h: + +../gsl/gsl_sf_log.h: + +../gsl/gsl_sf_mathieu.h: + +../gsl/gsl_eigen.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_sf_pow_int.h: + +../gsl/gsl_sf_psi.h: + +../gsl/gsl_sf_sincos_pi.h: + +../gsl/gsl_sf_synchrotron.h: + +../gsl/gsl_sf_transport.h: + +../gsl/gsl_sf_trig.h: + +../gsl/gsl_sf_zeta.h: + +test_sf.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: diff --git a/gsl-2.5/specfunc/.deps/test_gamma.Po b/gsl-2.5/specfunc/.deps/test_gamma.Po new file mode 100644 index 00000000..d1465a2a --- /dev/null +++ b/gsl-2.5/specfunc/.deps/test_gamma.Po @@ -0,0 +1,375 @@ +test_gamma.o: test_gamma.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_test.h ../gsl/gsl_sf.h ../gsl/gsl_sf_result.h \ + ../gsl/gsl_sf_airy.h ../gsl/gsl_mode.h ../gsl/gsl_inline.h \ + ../gsl/gsl_sf_bessel.h /usr/include/stdlib.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_precision.h \ + ../gsl/gsl_types.h ../gsl/gsl_sf_clausen.h ../gsl/gsl_sf_coupling.h \ + ../gsl/gsl_sf_coulomb.h ../gsl/gsl_sf_dawson.h ../gsl/gsl_sf_debye.h \ + ../gsl/gsl_sf_dilog.h ../gsl/gsl_sf_elementary.h ../gsl/gsl_sf_ellint.h \ + ../gsl/gsl_sf_elljac.h ../gsl/gsl_sf_erf.h ../gsl/gsl_sf_exp.h \ + ../gsl/gsl_sf_expint.h ../gsl/gsl_sf_fermi_dirac.h ../gsl/gsl_sf_gamma.h \ + ../gsl/gsl_sf_gegenbauer.h ../gsl/gsl_sf_hermite.h \ + ../gsl/gsl_sf_hyperg.h ../gsl/gsl_sf_laguerre.h ../gsl/gsl_sf_lambert.h \ + ../gsl/gsl_sf_legendre.h ../gsl/gsl_sf_log.h ../gsl/gsl_sf_mathieu.h \ + ../gsl/gsl_eigen.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_sf_pow_int.h ../gsl/gsl_sf_psi.h \ + ../gsl/gsl_sf_sincos_pi.h ../gsl/gsl_sf_synchrotron.h \ + ../gsl/gsl_sf_transport.h ../gsl/gsl_sf_trig.h ../gsl/gsl_sf_zeta.h \ + test_sf.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_test.h: + +../gsl/gsl_sf.h: + +../gsl/gsl_sf_result.h: + +../gsl/gsl_sf_airy.h: + +../gsl/gsl_mode.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_sf_bessel.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_sf_clausen.h: + +../gsl/gsl_sf_coupling.h: + +../gsl/gsl_sf_coulomb.h: + +../gsl/gsl_sf_dawson.h: + +../gsl/gsl_sf_debye.h: + +../gsl/gsl_sf_dilog.h: + +../gsl/gsl_sf_elementary.h: + +../gsl/gsl_sf_ellint.h: + +../gsl/gsl_sf_elljac.h: + +../gsl/gsl_sf_erf.h: + +../gsl/gsl_sf_exp.h: + +../gsl/gsl_sf_expint.h: + +../gsl/gsl_sf_fermi_dirac.h: + +../gsl/gsl_sf_gamma.h: + +../gsl/gsl_sf_gegenbauer.h: + +../gsl/gsl_sf_hermite.h: + +../gsl/gsl_sf_hyperg.h: + +../gsl/gsl_sf_laguerre.h: + +../gsl/gsl_sf_lambert.h: + +../gsl/gsl_sf_legendre.h: + +../gsl/gsl_sf_log.h: + +../gsl/gsl_sf_mathieu.h: + +../gsl/gsl_eigen.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_sf_pow_int.h: + +../gsl/gsl_sf_psi.h: + +../gsl/gsl_sf_sincos_pi.h: + +../gsl/gsl_sf_synchrotron.h: + +../gsl/gsl_sf_transport.h: + +../gsl/gsl_sf_trig.h: + +../gsl/gsl_sf_zeta.h: + +test_sf.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: diff --git a/gsl-2.5/specfunc/.deps/test_hermite.Po b/gsl-2.5/specfunc/.deps/test_hermite.Po new file mode 100644 index 00000000..e6840f1d --- /dev/null +++ b/gsl-2.5/specfunc/.deps/test_hermite.Po @@ -0,0 +1,375 @@ +test_hermite.o: test_hermite.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_math.h /usr/include/math.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_test.h \ + ../gsl/gsl_sf.h ../gsl/gsl_sf_result.h ../gsl/gsl_sf_airy.h \ + ../gsl/gsl_mode.h ../gsl/gsl_sf_bessel.h /usr/include/stdlib.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_sf_clausen.h \ + ../gsl/gsl_sf_coupling.h ../gsl/gsl_sf_coulomb.h ../gsl/gsl_sf_dawson.h \ + ../gsl/gsl_sf_debye.h ../gsl/gsl_sf_dilog.h ../gsl/gsl_sf_elementary.h \ + ../gsl/gsl_sf_ellint.h ../gsl/gsl_sf_elljac.h ../gsl/gsl_sf_erf.h \ + ../gsl/gsl_sf_exp.h ../gsl/gsl_sf_expint.h ../gsl/gsl_sf_fermi_dirac.h \ + ../gsl/gsl_sf_gamma.h ../gsl/gsl_sf_gegenbauer.h ../gsl/gsl_sf_hermite.h \ + ../gsl/gsl_sf_hyperg.h ../gsl/gsl_sf_laguerre.h ../gsl/gsl_sf_lambert.h \ + ../gsl/gsl_sf_legendre.h ../gsl/gsl_sf_log.h ../gsl/gsl_sf_mathieu.h \ + ../gsl/gsl_eigen.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_sf_pow_int.h ../gsl/gsl_sf_psi.h \ + ../gsl/gsl_sf_sincos_pi.h ../gsl/gsl_sf_synchrotron.h \ + ../gsl/gsl_sf_transport.h ../gsl/gsl_sf_trig.h ../gsl/gsl_sf_zeta.h \ + test_sf.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_test.h: + +../gsl/gsl_sf.h: + +../gsl/gsl_sf_result.h: + +../gsl/gsl_sf_airy.h: + +../gsl/gsl_mode.h: + +../gsl/gsl_sf_bessel.h: + +/usr/include/stdlib.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_sf_clausen.h: + +../gsl/gsl_sf_coupling.h: + +../gsl/gsl_sf_coulomb.h: + +../gsl/gsl_sf_dawson.h: + +../gsl/gsl_sf_debye.h: + +../gsl/gsl_sf_dilog.h: + +../gsl/gsl_sf_elementary.h: + +../gsl/gsl_sf_ellint.h: + +../gsl/gsl_sf_elljac.h: + +../gsl/gsl_sf_erf.h: + +../gsl/gsl_sf_exp.h: + +../gsl/gsl_sf_expint.h: + +../gsl/gsl_sf_fermi_dirac.h: + +../gsl/gsl_sf_gamma.h: + +../gsl/gsl_sf_gegenbauer.h: + +../gsl/gsl_sf_hermite.h: + +../gsl/gsl_sf_hyperg.h: + +../gsl/gsl_sf_laguerre.h: + +../gsl/gsl_sf_lambert.h: + +../gsl/gsl_sf_legendre.h: + +../gsl/gsl_sf_log.h: + +../gsl/gsl_sf_mathieu.h: + +../gsl/gsl_eigen.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_sf_pow_int.h: + +../gsl/gsl_sf_psi.h: + +../gsl/gsl_sf_sincos_pi.h: + +../gsl/gsl_sf_synchrotron.h: + +../gsl/gsl_sf_transport.h: + +../gsl/gsl_sf_trig.h: + +../gsl/gsl_sf_zeta.h: + +test_sf.h: diff --git a/gsl-2.5/specfunc/.deps/test_hyperg.Po b/gsl-2.5/specfunc/.deps/test_hyperg.Po new file mode 100644 index 00000000..a5233a7e --- /dev/null +++ b/gsl-2.5/specfunc/.deps/test_hyperg.Po @@ -0,0 +1,375 @@ +test_hyperg.o: test_hyperg.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_test.h ../gsl/gsl_sf.h ../gsl/gsl_sf_result.h \ + ../gsl/gsl_sf_airy.h ../gsl/gsl_mode.h ../gsl/gsl_inline.h \ + ../gsl/gsl_sf_bessel.h /usr/include/stdlib.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_precision.h \ + ../gsl/gsl_types.h ../gsl/gsl_sf_clausen.h ../gsl/gsl_sf_coupling.h \ + ../gsl/gsl_sf_coulomb.h ../gsl/gsl_sf_dawson.h ../gsl/gsl_sf_debye.h \ + ../gsl/gsl_sf_dilog.h ../gsl/gsl_sf_elementary.h ../gsl/gsl_sf_ellint.h \ + ../gsl/gsl_sf_elljac.h ../gsl/gsl_sf_erf.h ../gsl/gsl_sf_exp.h \ + ../gsl/gsl_sf_expint.h ../gsl/gsl_sf_fermi_dirac.h ../gsl/gsl_sf_gamma.h \ + ../gsl/gsl_sf_gegenbauer.h ../gsl/gsl_sf_hermite.h \ + ../gsl/gsl_sf_hyperg.h ../gsl/gsl_sf_laguerre.h ../gsl/gsl_sf_lambert.h \ + ../gsl/gsl_sf_legendre.h ../gsl/gsl_sf_log.h ../gsl/gsl_sf_mathieu.h \ + ../gsl/gsl_eigen.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_sf_pow_int.h ../gsl/gsl_sf_psi.h \ + ../gsl/gsl_sf_sincos_pi.h ../gsl/gsl_sf_synchrotron.h \ + ../gsl/gsl_sf_transport.h ../gsl/gsl_sf_trig.h ../gsl/gsl_sf_zeta.h \ + test_sf.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_test.h: + +../gsl/gsl_sf.h: + +../gsl/gsl_sf_result.h: + +../gsl/gsl_sf_airy.h: + +../gsl/gsl_mode.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_sf_bessel.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_sf_clausen.h: + +../gsl/gsl_sf_coupling.h: + +../gsl/gsl_sf_coulomb.h: + +../gsl/gsl_sf_dawson.h: + +../gsl/gsl_sf_debye.h: + +../gsl/gsl_sf_dilog.h: + +../gsl/gsl_sf_elementary.h: + +../gsl/gsl_sf_ellint.h: + +../gsl/gsl_sf_elljac.h: + +../gsl/gsl_sf_erf.h: + +../gsl/gsl_sf_exp.h: + +../gsl/gsl_sf_expint.h: + +../gsl/gsl_sf_fermi_dirac.h: + +../gsl/gsl_sf_gamma.h: + +../gsl/gsl_sf_gegenbauer.h: + +../gsl/gsl_sf_hermite.h: + +../gsl/gsl_sf_hyperg.h: + +../gsl/gsl_sf_laguerre.h: + +../gsl/gsl_sf_lambert.h: + +../gsl/gsl_sf_legendre.h: + +../gsl/gsl_sf_log.h: + +../gsl/gsl_sf_mathieu.h: + +../gsl/gsl_eigen.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_sf_pow_int.h: + +../gsl/gsl_sf_psi.h: + +../gsl/gsl_sf_sincos_pi.h: + +../gsl/gsl_sf_synchrotron.h: + +../gsl/gsl_sf_transport.h: + +../gsl/gsl_sf_trig.h: + +../gsl/gsl_sf_zeta.h: + +test_sf.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: diff --git a/gsl-2.5/specfunc/.deps/test_legendre.Po b/gsl-2.5/specfunc/.deps/test_legendre.Po new file mode 100644 index 00000000..7f3fe605 --- /dev/null +++ b/gsl-2.5/specfunc/.deps/test_legendre.Po @@ -0,0 +1,375 @@ +test_legendre.o: test_legendre.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_test.h ../gsl/gsl_sf.h ../gsl/gsl_sf_result.h \ + ../gsl/gsl_sf_airy.h ../gsl/gsl_mode.h ../gsl/gsl_inline.h \ + ../gsl/gsl_sf_bessel.h /usr/include/stdlib.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_precision.h \ + ../gsl/gsl_types.h ../gsl/gsl_sf_clausen.h ../gsl/gsl_sf_coupling.h \ + ../gsl/gsl_sf_coulomb.h ../gsl/gsl_sf_dawson.h ../gsl/gsl_sf_debye.h \ + ../gsl/gsl_sf_dilog.h ../gsl/gsl_sf_elementary.h ../gsl/gsl_sf_ellint.h \ + ../gsl/gsl_sf_elljac.h ../gsl/gsl_sf_erf.h ../gsl/gsl_sf_exp.h \ + ../gsl/gsl_sf_expint.h ../gsl/gsl_sf_fermi_dirac.h ../gsl/gsl_sf_gamma.h \ + ../gsl/gsl_sf_gegenbauer.h ../gsl/gsl_sf_hermite.h \ + ../gsl/gsl_sf_hyperg.h ../gsl/gsl_sf_laguerre.h ../gsl/gsl_sf_lambert.h \ + ../gsl/gsl_sf_legendre.h ../gsl/gsl_sf_log.h ../gsl/gsl_sf_mathieu.h \ + ../gsl/gsl_eigen.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_sf_pow_int.h ../gsl/gsl_sf_psi.h \ + ../gsl/gsl_sf_sincos_pi.h ../gsl/gsl_sf_synchrotron.h \ + ../gsl/gsl_sf_transport.h ../gsl/gsl_sf_trig.h ../gsl/gsl_sf_zeta.h \ + test_sf.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_test.h: + +../gsl/gsl_sf.h: + +../gsl/gsl_sf_result.h: + +../gsl/gsl_sf_airy.h: + +../gsl/gsl_mode.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_sf_bessel.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_sf_clausen.h: + +../gsl/gsl_sf_coupling.h: + +../gsl/gsl_sf_coulomb.h: + +../gsl/gsl_sf_dawson.h: + +../gsl/gsl_sf_debye.h: + +../gsl/gsl_sf_dilog.h: + +../gsl/gsl_sf_elementary.h: + +../gsl/gsl_sf_ellint.h: + +../gsl/gsl_sf_elljac.h: + +../gsl/gsl_sf_erf.h: + +../gsl/gsl_sf_exp.h: + +../gsl/gsl_sf_expint.h: + +../gsl/gsl_sf_fermi_dirac.h: + +../gsl/gsl_sf_gamma.h: + +../gsl/gsl_sf_gegenbauer.h: + +../gsl/gsl_sf_hermite.h: + +../gsl/gsl_sf_hyperg.h: + +../gsl/gsl_sf_laguerre.h: + +../gsl/gsl_sf_lambert.h: + +../gsl/gsl_sf_legendre.h: + +../gsl/gsl_sf_log.h: + +../gsl/gsl_sf_mathieu.h: + +../gsl/gsl_eigen.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_sf_pow_int.h: + +../gsl/gsl_sf_psi.h: + +../gsl/gsl_sf_sincos_pi.h: + +../gsl/gsl_sf_synchrotron.h: + +../gsl/gsl_sf_transport.h: + +../gsl/gsl_sf_trig.h: + +../gsl/gsl_sf_zeta.h: + +test_sf.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: diff --git a/gsl-2.5/specfunc/.deps/test_mathieu.Po b/gsl-2.5/specfunc/.deps/test_mathieu.Po new file mode 100644 index 00000000..7f629863 --- /dev/null +++ b/gsl-2.5/specfunc/.deps/test_mathieu.Po @@ -0,0 +1,373 @@ +test_mathieu.o: test_mathieu.c /usr/include/stdc-predef.h \ + ../gsl/gsl_test.h ../gsl/gsl_sf.h ../gsl/gsl_sf_result.h \ + ../gsl/gsl_sf_airy.h ../gsl/gsl_mode.h ../gsl/gsl_inline.h \ + ../gsl/gsl_sf_bessel.h /usr/include/stdlib.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_precision.h \ + ../gsl/gsl_types.h ../gsl/gsl_sf_clausen.h ../gsl/gsl_sf_coupling.h \ + ../gsl/gsl_sf_coulomb.h ../gsl/gsl_sf_dawson.h ../gsl/gsl_sf_debye.h \ + ../gsl/gsl_sf_dilog.h ../gsl/gsl_sf_elementary.h ../gsl/gsl_sf_ellint.h \ + ../gsl/gsl_sf_elljac.h ../gsl/gsl_sf_erf.h ../gsl/gsl_sf_exp.h \ + ../gsl/gsl_sf_expint.h ../gsl/gsl_sf_fermi_dirac.h ../gsl/gsl_sf_gamma.h \ + ../gsl/gsl_sf_gegenbauer.h ../gsl/gsl_sf_hermite.h \ + ../gsl/gsl_sf_hyperg.h ../gsl/gsl_sf_laguerre.h ../gsl/gsl_sf_lambert.h \ + ../gsl/gsl_sf_legendre.h ../gsl/gsl_sf_log.h ../gsl/gsl_sf_mathieu.h \ + ../gsl/gsl_eigen.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_sf_pow_int.h ../gsl/gsl_sf_psi.h \ + ../gsl/gsl_sf_sincos_pi.h ../gsl/gsl_sf_synchrotron.h \ + ../gsl/gsl_sf_transport.h ../gsl/gsl_sf_trig.h ../gsl/gsl_sf_zeta.h \ + test_sf.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h + +/usr/include/stdc-predef.h: + +../gsl/gsl_test.h: + +../gsl/gsl_sf.h: + +../gsl/gsl_sf_result.h: + +../gsl/gsl_sf_airy.h: + +../gsl/gsl_mode.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_sf_bessel.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_sf_clausen.h: + +../gsl/gsl_sf_coupling.h: + +../gsl/gsl_sf_coulomb.h: + +../gsl/gsl_sf_dawson.h: + +../gsl/gsl_sf_debye.h: + +../gsl/gsl_sf_dilog.h: + +../gsl/gsl_sf_elementary.h: + +../gsl/gsl_sf_ellint.h: + +../gsl/gsl_sf_elljac.h: + +../gsl/gsl_sf_erf.h: + +../gsl/gsl_sf_exp.h: + +../gsl/gsl_sf_expint.h: + +../gsl/gsl_sf_fermi_dirac.h: + +../gsl/gsl_sf_gamma.h: + +../gsl/gsl_sf_gegenbauer.h: + +../gsl/gsl_sf_hermite.h: + +../gsl/gsl_sf_hyperg.h: + +../gsl/gsl_sf_laguerre.h: + +../gsl/gsl_sf_lambert.h: + +../gsl/gsl_sf_legendre.h: + +../gsl/gsl_sf_log.h: + +../gsl/gsl_sf_mathieu.h: + +../gsl/gsl_eigen.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_sf_pow_int.h: + +../gsl/gsl_sf_psi.h: + +../gsl/gsl_sf_sincos_pi.h: + +../gsl/gsl_sf_synchrotron.h: + +../gsl/gsl_sf_transport.h: + +../gsl/gsl_sf_trig.h: + +../gsl/gsl_sf_zeta.h: + +test_sf.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: diff --git a/gsl-2.5/specfunc/.deps/test_sf.Po b/gsl-2.5/specfunc/.deps/test_sf.Po new file mode 100644 index 00000000..977384a4 --- /dev/null +++ b/gsl-2.5/specfunc/.deps/test_sf.Po @@ -0,0 +1,388 @@ +test_sf.o: test_sf.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdio.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/string.h \ + /usr/include/xlocale.h /usr/include/bits/string.h \ + /usr/include/bits/string2.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_ieee_utils.h ../gsl/gsl_test.h ../gsl/gsl_sf.h \ + ../gsl/gsl_sf_result.h ../gsl/gsl_sf_airy.h ../gsl/gsl_mode.h \ + ../gsl/gsl_sf_bessel.h ../gsl/gsl_sf_clausen.h ../gsl/gsl_sf_coupling.h \ + ../gsl/gsl_sf_coulomb.h ../gsl/gsl_sf_dawson.h ../gsl/gsl_sf_debye.h \ + ../gsl/gsl_sf_dilog.h ../gsl/gsl_sf_elementary.h ../gsl/gsl_sf_ellint.h \ + ../gsl/gsl_sf_elljac.h ../gsl/gsl_sf_erf.h ../gsl/gsl_sf_exp.h \ + ../gsl/gsl_sf_expint.h ../gsl/gsl_sf_fermi_dirac.h ../gsl/gsl_sf_gamma.h \ + ../gsl/gsl_sf_gegenbauer.h ../gsl/gsl_sf_hermite.h \ + ../gsl/gsl_sf_hyperg.h ../gsl/gsl_sf_laguerre.h ../gsl/gsl_sf_lambert.h \ + ../gsl/gsl_sf_legendre.h ../gsl/gsl_sf_log.h ../gsl/gsl_sf_mathieu.h \ + ../gsl/gsl_eigen.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_complex.h \ + ../gsl/gsl_check_range.h ../gsl/gsl_vector_long_double.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_vector_complex.h \ + ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_sf_pow_int.h ../gsl/gsl_sf_psi.h \ + ../gsl/gsl_sf_sincos_pi.h ../gsl/gsl_sf_synchrotron.h \ + ../gsl/gsl_sf_transport.h ../gsl/gsl_sf_trig.h ../gsl/gsl_sf_zeta.h \ + test_sf.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string.h: + +/usr/include/bits/string2.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_ieee_utils.h: + +../gsl/gsl_test.h: + +../gsl/gsl_sf.h: + +../gsl/gsl_sf_result.h: + +../gsl/gsl_sf_airy.h: + +../gsl/gsl_mode.h: + +../gsl/gsl_sf_bessel.h: + +../gsl/gsl_sf_clausen.h: + +../gsl/gsl_sf_coupling.h: + +../gsl/gsl_sf_coulomb.h: + +../gsl/gsl_sf_dawson.h: + +../gsl/gsl_sf_debye.h: + +../gsl/gsl_sf_dilog.h: + +../gsl/gsl_sf_elementary.h: + +../gsl/gsl_sf_ellint.h: + +../gsl/gsl_sf_elljac.h: + +../gsl/gsl_sf_erf.h: + +../gsl/gsl_sf_exp.h: + +../gsl/gsl_sf_expint.h: + +../gsl/gsl_sf_fermi_dirac.h: + +../gsl/gsl_sf_gamma.h: + +../gsl/gsl_sf_gegenbauer.h: + +../gsl/gsl_sf_hermite.h: + +../gsl/gsl_sf_hyperg.h: + +../gsl/gsl_sf_laguerre.h: + +../gsl/gsl_sf_lambert.h: + +../gsl/gsl_sf_legendre.h: + +../gsl/gsl_sf_log.h: + +../gsl/gsl_sf_mathieu.h: + +../gsl/gsl_eigen.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_sf_pow_int.h: + +../gsl/gsl_sf_psi.h: + +../gsl/gsl_sf_sincos_pi.h: + +../gsl/gsl_sf_synchrotron.h: + +../gsl/gsl_sf_transport.h: + +../gsl/gsl_sf_trig.h: + +../gsl/gsl_sf_zeta.h: + +test_sf.h: diff --git a/gsl-2.5/specfunc/.deps/test_sincos_pi.Po b/gsl-2.5/specfunc/.deps/test_sincos_pi.Po new file mode 100644 index 00000000..37a8fcb5 --- /dev/null +++ b/gsl-2.5/specfunc/.deps/test_sincos_pi.Po @@ -0,0 +1,388 @@ +test_sincos_pi.o: test_sincos_pi.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdio.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/string.h \ + /usr/include/xlocale.h /usr/include/bits/string.h \ + /usr/include/bits/string2.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_ieee_utils.h ../gsl/gsl_test.h ../gsl/gsl_sf.h \ + ../gsl/gsl_sf_result.h ../gsl/gsl_sf_airy.h ../gsl/gsl_mode.h \ + ../gsl/gsl_sf_bessel.h ../gsl/gsl_sf_clausen.h ../gsl/gsl_sf_coupling.h \ + ../gsl/gsl_sf_coulomb.h ../gsl/gsl_sf_dawson.h ../gsl/gsl_sf_debye.h \ + ../gsl/gsl_sf_dilog.h ../gsl/gsl_sf_elementary.h ../gsl/gsl_sf_ellint.h \ + ../gsl/gsl_sf_elljac.h ../gsl/gsl_sf_erf.h ../gsl/gsl_sf_exp.h \ + ../gsl/gsl_sf_expint.h ../gsl/gsl_sf_fermi_dirac.h ../gsl/gsl_sf_gamma.h \ + ../gsl/gsl_sf_gegenbauer.h ../gsl/gsl_sf_hermite.h \ + ../gsl/gsl_sf_hyperg.h ../gsl/gsl_sf_laguerre.h ../gsl/gsl_sf_lambert.h \ + ../gsl/gsl_sf_legendre.h ../gsl/gsl_sf_log.h ../gsl/gsl_sf_mathieu.h \ + ../gsl/gsl_eigen.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_complex.h \ + ../gsl/gsl_check_range.h ../gsl/gsl_vector_long_double.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_vector_complex.h \ + ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_sf_pow_int.h ../gsl/gsl_sf_psi.h \ + ../gsl/gsl_sf_sincos_pi.h ../gsl/gsl_sf_synchrotron.h \ + ../gsl/gsl_sf_transport.h ../gsl/gsl_sf_trig.h ../gsl/gsl_sf_zeta.h \ + test_sf.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string.h: + +/usr/include/bits/string2.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_ieee_utils.h: + +../gsl/gsl_test.h: + +../gsl/gsl_sf.h: + +../gsl/gsl_sf_result.h: + +../gsl/gsl_sf_airy.h: + +../gsl/gsl_mode.h: + +../gsl/gsl_sf_bessel.h: + +../gsl/gsl_sf_clausen.h: + +../gsl/gsl_sf_coupling.h: + +../gsl/gsl_sf_coulomb.h: + +../gsl/gsl_sf_dawson.h: + +../gsl/gsl_sf_debye.h: + +../gsl/gsl_sf_dilog.h: + +../gsl/gsl_sf_elementary.h: + +../gsl/gsl_sf_ellint.h: + +../gsl/gsl_sf_elljac.h: + +../gsl/gsl_sf_erf.h: + +../gsl/gsl_sf_exp.h: + +../gsl/gsl_sf_expint.h: + +../gsl/gsl_sf_fermi_dirac.h: + +../gsl/gsl_sf_gamma.h: + +../gsl/gsl_sf_gegenbauer.h: + +../gsl/gsl_sf_hermite.h: + +../gsl/gsl_sf_hyperg.h: + +../gsl/gsl_sf_laguerre.h: + +../gsl/gsl_sf_lambert.h: + +../gsl/gsl_sf_legendre.h: + +../gsl/gsl_sf_log.h: + +../gsl/gsl_sf_mathieu.h: + +../gsl/gsl_eigen.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_sf_pow_int.h: + +../gsl/gsl_sf_psi.h: + +../gsl/gsl_sf_sincos_pi.h: + +../gsl/gsl_sf_synchrotron.h: + +../gsl/gsl_sf_transport.h: + +../gsl/gsl_sf_trig.h: + +../gsl/gsl_sf_zeta.h: + +test_sf.h: diff --git a/gsl-2.5/specfunc/.deps/transport.Plo b/gsl-2.5/specfunc/.deps/transport.Plo new file mode 100644 index 00000000..180e3fd7 --- /dev/null +++ b/gsl-2.5/specfunc/.deps/transport.Plo @@ -0,0 +1,144 @@ +transport.lo: transport.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_math.h /usr/include/math.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_sf_transport.h ../gsl/gsl_sf_result.h error.h check.h \ + chebyshev.h cheb_eval.c eval.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_sf_transport.h: + +../gsl/gsl_sf_result.h: + +error.h: + +check.h: + +chebyshev.h: + +cheb_eval.c: + +eval.h: diff --git a/gsl-2.5/specfunc/.deps/trig.Plo b/gsl-2.5/specfunc/.deps/trig.Plo new file mode 100644 index 00000000..6a443a59 --- /dev/null +++ b/gsl-2.5/specfunc/.deps/trig.Plo @@ -0,0 +1,144 @@ +trig.lo: trig.c /usr/include/stdc-predef.h ../config.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_sf_log.h ../gsl/gsl_sf_result.h ../gsl/gsl_sf_trig.h error.h \ + chebyshev.h cheb_eval.c eval.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_sf_log.h: + +../gsl/gsl_sf_result.h: + +../gsl/gsl_sf_trig.h: + +error.h: + +chebyshev.h: + +cheb_eval.c: + +eval.h: diff --git a/gsl-2.5/specfunc/.deps/zeta.Plo b/gsl-2.5/specfunc/.deps/zeta.Plo new file mode 100644 index 00000000..3f81e897 --- /dev/null +++ b/gsl-2.5/specfunc/.deps/zeta.Plo @@ -0,0 +1,151 @@ +zeta.lo: zeta.c /usr/include/stdc-predef.h ../config.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_sf_elementary.h ../gsl/gsl_sf_result.h ../gsl/gsl_sf_exp.h \ + ../gsl/gsl_sf_gamma.h ../gsl/gsl_sf_pow_int.h ../gsl/gsl_sf_zeta.h \ + error.h chebyshev.h cheb_eval.c eval.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_sf_elementary.h: + +../gsl/gsl_sf_result.h: + +../gsl/gsl_sf_exp.h: + +../gsl/gsl_sf_gamma.h: + +../gsl/gsl_sf_pow_int.h: + +../gsl/gsl_sf_zeta.h: + +error.h: + +chebyshev.h: + +cheb_eval.c: + +eval.h: diff --git a/gsl-2.5/specfunc/.libs/libgslspecfunc.la b/gsl-2.5/specfunc/.libs/libgslspecfunc.la new file mode 120000 index 00000000..f2bf63fc --- /dev/null +++ b/gsl-2.5/specfunc/.libs/libgslspecfunc.la @@ -0,0 +1 @@ +../libgslspecfunc.la \ No newline at end of file diff --git a/gsl-2.5/specfunc/.libs/lt-test b/gsl-2.5/specfunc/.libs/lt-test new file mode 100755 index 00000000..17d1ade6 Binary files /dev/null and b/gsl-2.5/specfunc/.libs/lt-test differ diff --git a/gsl-2.5/specfunc/.libs/test b/gsl-2.5/specfunc/.libs/test new file mode 100755 index 00000000..3439da60 Binary files /dev/null and b/gsl-2.5/specfunc/.libs/test differ diff --git a/gsl-2.5/specfunc/ChangeLog b/gsl-2.5/specfunc/ChangeLog new file mode 100644 index 00000000..5a17ba3e --- /dev/null +++ b/gsl-2.5/specfunc/ChangeLog @@ -0,0 +1,832 @@ +2011-10-10 Rhys Ulerich + + * hyperg_U.c (gsl_sf_hyperg_U_int_e,gsl_sf_hyperg_U_e): + Always initialize the gsl_sf_result_e10 instances. + Thanks to Victor Zverovich for the bug report and patch. + +2011-10-10 Brian Gough + + * coupling.c (gsl_sf_coupling_3j_e): compute 3j factors using logs + to allow larger range + +2011-09-20 Brian Gough + + * coupling.c (triangle_selection_fails): extend triangle selection + to handle all permutations + (gsl_sf_coupling_3j_e): special case for (ja jb jc; 0 0 0) = 0 + when ja+jb+jc=odd + +2011-08-10 Brian Gough + + * mathieu_radfunc.c (gsl_sf_mathieu_Mc): set odd functions to zero + for order=0, initialise fn to zero before use + +2011-07-21 Brian Gough + + * mathieu_angfunc.c (gsl_sf_mathieu_se_array): handle the case + where q=0 + +2011-07-15 Brian Gough + + * trig.c (gsl_sf_lncosh_e): handle x symmetrically for middle + region + +2010-11-11 Brian Gough + + * ellint.c (gsl_sf_ellint_RC_e, gsl_sf_ellint_RD_e) + (gsl_sf_ellint_RF_e, gsl_sf_ellint_RJ_e): introduce a limit of + 10000 iterations to avoid infinite loops + + * bessel_Knu.c (gsl_sf_bessel_Knu_scaled_e10_e): alternative + version of Knu_scaled function to allow greater range for + gsl_sf_bessel_lnKnu_e. + +2010-10-29 Brian Gough + + * hyperg_U.c (hyperg_U_small_a_bgt0): corrected result->err for + case where a==0.0 + +2010-08-31 Brian Gough + + * beta_inc.c (gsl_sf_beta_inc_e): ignore underflow error when term + is subtracted from 1 + +2010-08-27 Brian Gough + + * hyperg_2F1.c (gsl_sf_hyperg_2F1_e): use ap and bp consistently + in large c and large b cases, previously mixed a,b and ap,bp. + +2010-04-15 Brian Gough + + * atanint.c (gsl_sf_atanint_e): added missing term 1/ax for large x + +2010-02-25 Brian Gough + + * hyperg_U.c (hyperg_U_negx): handle the case where x<0 + +2010-01-23 Brian Gough + + * hyperg_1F1.c (gsl_sf_hyperg_1F1_e): use Kummer transformation + for larger range of x when b>a and a<0 + +2009-07-17 Brian Gough + + * hyperg_U.c (hyperg_U_series): use a rearrangement of the factor + in front of the series to avoid incorrect termination when the + the leading term is zero. + +2009-07-16 Brian Gough + + * poch.c (gsl_sf_lnpoch_sgn_e): handle negative and zero values of + a, e.g. where gamma(a) and/or gamma(a+x) is infinite + (gsl_sf_poch_e): handle the case where lnpoch_sgn returns + GSL_NEGINF when the Pochhammer ratio is zero. + + * test_gamma.c (test_gamma): added tests for poch(a,x) with + negative arguments + +2009-07-12 Brian Gough + + * hyperg_U.c (hyperg_U_int_bge1): avoid using the series when + 1+a-b is zero or a negative integer. + +2009-07-11 Brian Gough + + * hyperg_U.c (gsl_sf_hyperg_U_int_e10_e, gsl_sf_hyperg_U_e10_e) + (hyperg_U_origin, hyperg_U_int_origin): added special case for + U(a,b,z=0). + +2009-07-09 Brian Gough + + * mathieu_workspace.c (gsl_sf_mathieu_free): handle NULL argument + in free + +2009-05-13 Brian Gough + + * hyperg_2F1.c (gsl_sf_hyperg_2F1_e): fix condition on a and b + when c is a negative integer (either a or b must cause + cancellation of the series) + +2009-01-14 Brian Gough + + * mathieu_workspace.c (gsl_sf_mathieu_alloc): increase number of + terms + + * mathieu_charv.c (gsl_sf_mathieu_a): increase number of terms + (gsl_sf_mathieu_b): increase number of terms + +2008-12-04 Brian Gough + + * gamma_inc.c (gamma_inc_D): propagate cancellation error + in (x-a)/x for x close to a + +2008-12-03 Brian Gough + + * exp.c (exprel_n_CF): changed N to double, to allow non-integer + usage for gamma_inc, double error factor to allow for two + parameters in recurrence. + (gsl_sf_exprel_n_CF_e): exported function to allow calls to + exprel_n_CF + + * gamma_inc.c (gamma_inc_P_series): improved convergence condition + using estimate of the remainder of the series, added continued + fraction as a fallback, increased nmax to 10000 + +2008-08-26 Brian Gough + + * ellint.c (gsl_sf_ellint_Kcomp_e): corrected taylor expansion for + k close to 1. + +2008-07-03 Brian Gough + + * Makefile.am (INCLUDES): use top_srcdir instead of top_builddir + +2008-06-27 Brian Gough + + * legendre_poly.c (gsl_sf_legendre_array_size): removed inline + version of this function in gsl_sf_legendre.h + +2008-03-17 Brian Gough + + * hyperg_2F1.c (gsl_sf_hyperg_2F1_e): replace duplicate error + check on stat3 by stat4 + +2008-03-15 Brian Gough + + * bessel.c (gsl_sf_bessel_Jnu_asympx_e): use full asymptotic + series + +2008-03-14 Brian Gough + + * bessel_j.c (gsl_sf_bessel_jl_e): increase error estimate by + factor of 2 + +2008-02-09 Brian Gough + + * exp.c (gsl_sf_exp_e10_e): only use exponent e10 when standard + exp() is out of range + (gsl_sf_exp_mult_e10_e): add full set of error terms + +2008-01-10 Brian Gough + + * hyperg_2F1.c (gsl_sf_hyperg_2F1_e): handle case of x==1 + +2007-10-25 Brian Gough + + * bessel.c (gsl_sf_bessel_J_CF1): handle underflow by rescaling in + recurrence + +2007-09-13 Brian Gough + + * ellint.c (gsl_sf_ellint_Pcomp_e): remove test for n <1, no + restriction needed + +2007-09-10 Brian Gough + + * expint.c (gsl_sf_expint_En_e): added for support En(x) + (gsl_sf_expint_En_scaled_e): added for support En(x) scaled + + * gamma_inc.c (gamma_inc_CF): include finite precision of log term + +2007-08-30 Brian Gough + + * psi.c (psi_complex_rhp): accumulate error, to allow for + cancellation effects + + * beta.c (gsl_sf_lnbeta_sgn_e): added missing factor of 2 for + error. + +2007-08-27 Brian Gough + + * beta_inc.c (gsl_sf_beta_inc_e): handle cases where a<=0 or b<=0 + +2007-04-27 Brian Gough + + * lambert.c (halley_iteration): increase tolerance to prevent + exceeding max iters due to finite precision + +2007-04-04 Brian Gough + + * laguerre.c (gsl_sf_laguerre_n_e): use recursion for a=0 in + addition to a>0 + +2007-02-17 Brian Gough + + * log.c (gsl_sf_log_e): removed HIDE_INLINE_STATIC + + * exp.c (gsl_sf_exp_e): removed HIDE_INLINE_STATIC + +2007-02-14 Brian Gough + + * mathieu_charv.c: made solve_cubic static + +2007-02-12 Brian Gough + + * mathieu_charv.c (figi): ensure that e[ii] is set when + e2[ii]==0.0 and there is no error condition, as per the original + eispack routine + +2007-02-09 Brian Gough + + * ellint.c (gsl_sf_ellint_F_e): do argument reduction for phi>pi/2 + (gsl_sf_ellint_E_e): do argument reduction for phi>pi/2 + (gsl_sf_ellint_P_e): do argument reduction for phi>pi/2 + (gsl_sf_ellint_D_e): do argument reduction for phi>pi/2 + (gsl_sf_ellint_Dcomp_e): added complete D integral + (gsl_sf_ellint_Pcomp_e): added complete P integral + +2007-01-31 Brian Gough + + * beta.c (gsl_sf_lnbeta_sgn_e): added to support calculations with + negative a,b + (gsl_sf_lnbeta_e): rewritten in terms of gsl_sf_lnbeta_sgn_e + (gsl_sf_beta_e): handle negative a,b + + * gamma.c (gsl_sf_lngamma_sgn_e): make error calculations an exact + copy of gsl_sf_lngamma_e (these functions could be merged to avoid + duplication) + +2007-01-29 Brian Gough + + * test_legendre.c (test_legendre): added extra test cases for + underflow + +2007-01-26 Brian Gough + + * expint.c (expint_E2_impl): handle x==0.0 as a special case + (expint_E2_impl): corrected error term + + * gsl_sf_log.h: removed inline version of log + + * gsl_sf_exp.h: removed inline version of exp + +2007-01-23 Brian Gough + + * hyperg_1F1.c (hyperg_1F1_1_series): increase accuracy by factor + of 4 in sum, tighter convergence condition, increase error + estimate to allow for accumulated roundoff + (hyperg_1F1_1): use series when |x| > |b| + (gsl_sf_hyperg_1F1_e): only use Kummer when |x| < 100 otherwise + exponential takes extreme value + + * hyperg.c (gsl_sf_hyperg_1F1_series_e): allow 10000 iterations in + series to extend valid range + (gsl_sf_hyperg_1F1_series_e): increase accuracy by factor of 4 in + sum, tighter convergence condition + +2007-01-19 Brian Gough + + * laguerre.c (laguerre_large_n): use the second term in the + asymptotic expansion from Slater, p.73. + +2007-01-17 Brian Gough + + * hyperg_1F1.c (hyperg_1F1_largebx): asymptotic expansion for + large b and x, with |x|<|b| from Slater 4.3.7 + (hyperg_1F1_1): use new asymptotic expansion for |x|<|b| + (hyperg_1F1_small_a_bgt0): use new asymptotic expansion for |x|<|b| + (hyperg_1F1_renorm_b0): add neglected terms in expansion for AS13.3.7 + +2007-01-14 Brian Gough + + * legendre_poly.c (gsl_sf_legendre_sphPlm_e): added explicit + computation of error term to allow for case when final term is + zero. + +2007-01-12 Brian Gough + + * trig.c (gsl_sf_angle_restrict_symm_err_e): compute edge cases + more reliably, return NaN when total loss of precision + (gsl_sf_angle_restrict_pos_err_e): as above + + * legendre_poly.c (gsl_sf_legendre_Pl_e): improve error estimate + for large l by including rounding error at each step of recurrence + +2006-10-03 Brian Gough + + * poch.c (gsl_sf_lnpoch_e, gsl_sf_lnpoch_sgn_e): corrected + result->val to 0.0 for x==0, previously returned incorrect value + 1.0 + +2006-09-24 Brian Gough + + * laguerre.c (laguerre_large_n): work with small angles to avoid + cancellation error, computer angular reduction exactly for integer + eta. + +2006-09-22 Brian Gough + + * zeta.c (gsl_sf_zeta_e): make sin_term exactly zero for negative + even integers + (gsl_sf_zetam1_int_e): return value is -1 for zetam1_int with + negative even integers + +2006-03-26 Brian Gough + + * fermi_dirac.c (fd_neg): initialize s to zero (avoid spurious + warning from compiler) + +2006-02-23 Brian Gough + + * coulomb.c (gsl_sf_coulomb_wave_FG_e): fixed sign of F_lam_min, + covers case when k_lam_G is nonzero and F_lam_min and F_lam differ + in sign. + +2006-01-21 Brian Gough + + * synchrotron.c (gsl_sf_synchrotron_1_e): added first order + correction term for the taylor expansion + (gsl_sf_synchrotron_2_e): added first order correction term for + the taylor expansion + +2006-01-20 Brian Gough + + * bessel_j.c (gsl_sf_bessel_jl_e): limit the use of + gsl_sf_bessel_Jnu_asympx_e to the range x>100*l*l to satisfy + the requirement x>>l*l in the asymptotic expansion + + * bessel_In.c (gsl_sf_bessel_In_scaled_e): limit the use of + gsl_sf_bessel_I_CF1_ser to the region where the continued + converges with the allowed 20000 terms (|x|<1e7) + +2005-12-20 Brian Gough + + * debye.c (gsl_sf_debye_5_e, gsl_sf_debye_6_e): added n=5,6 + (R. J. Mathar) + +2005-11-15 Brian Gough + + * dilog.c (dilog_xge0): fix calculation of error estimate + +2005-08-04 Brian Gough + + * coulomb.c (gsl_sf_coulomb_wave_sphF_array): fix warning about + variable shadowing for k + +2005-07-29 Brian Gough + + * gamma_inc.c (gsl_sf_gamma_inc_Q_e): use continued fraction close + to peak of the integrand x > a - sqrt(a) + +2005-07-28 Brian Gough + + * elljac.c (gsl_sf_elljac_e): use separate iterations to avoid + division by zero, new algorithm from Bulirsch avoids inverse trig + functions. + +2005-07-03 Brian Gough + + * legendre_poly.c (gsl_sf_legendre_sphPlm_e): compute exponential + internally to avoid underflow error when calling gsl_sf_exp_err + +2005-07-02 Brian Gough + + * bessel_i.c (gsl_sf_bessel_il_scaled_array): handle x==0 as a + special case + + * bessel_k.c (gsl_sf_bessel_kl_scaled_array): added lmax==0 as a + special case + + * bessel_y.c (gsl_sf_bessel_yl_array): added lmax==0 as a special + case + + * transport.c (gsl_sf_transport_2_e): improve error estimate for + small x + +2005-06-26 Brian Gough + + * test_sf.c (test_jac): added tests over the full period for + elljac functions + +2005-05-23 Brian Gough + + * test_bessel.c (test_bessel): added test for steed(99,1,...) + + * legendre_H3d.c (legendre_H3d_CF1): use hypot + (legendre_H3d_CF1_ser): use hypot + (gsl_sf_legendre_H3d_e): use hypot + (gsl_sf_legendre_H3d_e): use hypot + (gsl_sf_legendre_H3d_array): use hypot + + * dilog.c (dilogc_unitdisk): use hypot + + * coulomb.c (gsl_sf_coulomb_CL_array): use hypot + (coulomb_F_recur): use hypot + (coulomb_G_recur): use hypot + (coulomb_jwkb): use hypot + (gsl_sf_coulomb_wave_F_array): use hypot + (gsl_sf_coulomb_wave_FG_array): use hypot + (gsl_sf_coulomb_wave_FGp_array): use hypot + + * bessel_j.c (gsl_sf_bessel_jl_steed_array): use hypot + + * bessel.c (gsl_sf_bessel_Inu_scaled_asymp_unif_e): use hypot + (gsl_sf_bessel_Knu_scaled_asymp_unif_e): use hypot + +2005-03-02 Brian Gough + + * coulomb_bound.c (gsl_sf_hydrogenicR_e): don't check for + underflow when function is known to be zero (e.g. r=0 l>0 or at + zeroes of the laguerre polynomial). + +2004-12-29 Brian Gough + + * dilog.c (gsl_sf_complex_dilog_e): use const consistently in + arguments of declaration and definition + (gsl_sf_complex_dilog_xy_e): as above + +2004-12-26 Brian Gough + + * gamma_inc.c (gamma_inc_D): improve error estimate for case of + u=x/a to include cancellation errors and only use it when x < 0.5*a + since the cancellation errors are significant for x/a ~ 1 + +2004-12-23 Brian Gough + + * gsl_sf_coupling.h: fixed declaration to + gsl_sf_coupling_6j_INCORRECT instead of + gsl_sf_coupling_INCORRECT_6j + +2004-11-12 Brian Gough + + * psi.c (gsl_sf_psi_1): added missing function definition + gsl_sf_psi_1 + +2004-10-11 Brian Gough + + * expint.c (gsl_sf_expint_Ei_scaled): fixed call to incorrect + function gsl_sf_expint_Ei_e + +2004-06-03 Brian Gough + + * psi.c (psi_n_xg0): added missing return type int + +2003-11-30 Brian Gough + + * gsl_sf_log.h: added missing headers for inline functions + +2003-08-11 Brian Gough + + * test_sf.c: added preprocessor definitions TEST_FACTOR and + TEST_SIGMA to allow larger tolerances on released versions (to + reduce the number of spurious bug reports). + +2003-07-24 Brian Gough + + * gamma.c (gsl_sf_choose_e): declare k as unsigned int instead of + int + (gsl_sf_gamma_e): avoid shadowed declaration of sgn + + * bessel_sequence.c (gsl_sf_bessel_sequence_Jnu_e): declare i as + size_t instead of int + +2003-06-11 Brian Gough + + * coupling.c (gsl_sf_coupling_6j_INCORRECT_e): fixed typo in test + for two_jf < 0 + (gsl_sf_coupling_6j_e): moved the implementation from the + INCORRECT function into the correct function + +2003-06-05 Brian Gough + + * test_sf.c (test_coupling): added some regression tests for + coupling functions + +2003-06-02 Brian Gough + + * gamma_inc.c (gamma_inc_D): handle x10 as a special case + +2003-04-18 Brian Gough + + * gamma.c (gsl_sf_gammainv_e): handle any singularities in + gamma(x) up front and return zero directly + +2003-04-12 Brian Gough + + * psi.c: changed value of psi(1,1) in table psi_1_table to be + positive ((-)^2 * 1! * zeta(2)), in accordance with Abramowitz & + Stegun 6.4.2. + +2003-04-08 G. Jungman + + * erfc.c, gsl_sf_erf.h: added gsl_sf_hazard_e() and + gsl_sf_hazard() functions + +2003-04-07 G. Jungman + + * gamma_inc.c, gsl_sf_gamma.h: added gsl_sf_gamma_inc_e() and + gsl_sf_gamma_inc(), implmentations of the non-normalized incomplete + gamma function + +2003-03-09 Brian Gough + + * gsl_sf_legendre.h: added missing const to formal parameter on + gsl_sf_legendre_sphPlm_deriv_array + +2003-01-25 Brian Gough + + * test_gamma.c (test_gamma): added a test for + gamma_inc_P(10,1e-16) (BUG#12) + +Sat Sep 7 15:56:15 2002 Brian Gough + + * test_sf.h (TEST_FACTOR): include an overall factor in the test + tolerances, otherwise there are too many bug reports for minor + failures. + +Sun Sep 1 17:34:27 2002 Brian Gough + + * test_legendre.c (test_legendre): increased tolerance on test + +Sat Jul 13 23:11:37 2002 Brian Gough + + * ellint.c (gsl_sf_ellint_Kcomp_e): improved error estimate to + take cancellation of y=1-k^2 into account near k=1 + +Sun Jul 7 21:39:12 2002 Brian Gough + + * test_bessel.c (test_bessel): increased tolerance on test of + bessel_Jn_array + +Tue May 28 21:04:29 2002 Brian Gough + + * psi.c (gsl_sf_psi_1piy_e): changed log(y) to log(ay) since + function is even and can be extended to negative y + +Mon Jan 28 19:02:42 2002 Brian Gough + + * gamma_inc.c (gamma_inc_Q_CF): express 'small' constant in terms + of GSL_DBL_EPSILON + (gamma_inc_Q_CF): patch for more reliable series from Hans Plesser + +Sat Jan 26 17:33:29 2002 Brian Gough + + * test_gamma.c (test_gamma): increased tolerance on a test + + * test_hyperg.c (test_hyperg): increased tolerance on a couple of + tests + +Fri Jan 18 15:12:30 2002 Brian Gough + + * test_airy.c (test_airy): increased tolerance on test + +Tue Jan 8 14:31:04 2002 Brian Gough + + * test_legendre.c (test_legendre): increased tolerance by one + level on _array tests + + * hyperg_1F1.c (hyperg_1F1_small_a_bgt0): fix branch for a==1 + +Fri Dec 7 12:38:40 2001 Brian Gough + + * laguerre.c (laguerre_n_cp): catch internal error, not global + error + + * error.h (INTERNAL_OVERFLOW_ERROR): added internal error macros + which do not call the error handler. + +Wed Dec 5 19:25:26 2001 Brian Gough + + * gamma.c (gamma_xgthalf): return gamma(x) exactly when x is an + integer + + * hyperg_1F1.c (hyperg_1F1_ab_posint): fix bug in recurrence + initialisation, as done for hyperg_1F1_ab_pos + +Thu Oct 18 11:37:25 2001 Brian Gough + + * coulomb.c (gsl_sf_coulomb_CL_array): renamed from + gsl_sf_coulomb_CL_list for consistency + +Sat Oct 13 15:55:56 2001 Brian Gough + + * cheb_eval.c (cheb_eval_e): keep track of cancellation error to + prevent underestimates of total error. + +Fri Oct 12 16:39:27 2001 Brian Gough + + * test_hyperg.c (test_hyperg): increased tolerance from TOL0 to + TOL1 on one test to allow it to pass under different optimizations + +Thu Oct 11 14:21:34 2001 Brian Gough + + * gegenbauer.c (gsl_sf_gegenpoly_n_e): initialize variable gk to + zero to avoid warning + + * bessel_i.c (gsl_sf_bessel_il_scaled_e): initialize variable + iellm1 to zero to avoid warning + + * bessel_Jnu.c (gsl_sf_bessel_Jnu_e): initialize variable Ynp1 to + zero to avoid warning + + * legendre_poly.c (gsl_sf_legendre_sphPlm_e): initialize variables + p_ell, y_ell to zero to avoid warning + +Thu Sep 6 10:38:51 2001 Brian Gough + + * clausen.c: added missing initialiser to cheb_series struct + + * pow_int.c (gsl_sf_pow_int_e): handle the case x == 0, n < 0 + + * legendre_poly.c (gsl_sf_legendre_array_size): added missing + static version of this inline function + +Wed Aug 15 20:18:43 2001 Brian Gough + + * hyperg_1F1.c (hyperg_1F1_ab_pos): fix bug in recurrence + initialisation + (hyperg_1F1_ab_neg): if all else fails, try the series. + +Wed Aug 8 19:55:34 2001 Brian Gough + + * test_sf.c (test_coupling): used analytic expressions for the + exact values to problems with insufficient precision + +Thu Jul 12 15:25:04 2001 Brian Gough + + * test_legendre.c (test_legendre): corrected tests to use exact + floating point arguments near singularities. + + * legendre_Qn.c (gsl_sf_legendre_Q0_e): removed unnecessary error + terms that I added + (gsl_sf_legendre_Q1_e): removed unnecessary error terms that I + added + +Wed Jul 11 16:06:45 2001 Brian Gough + + * error.h: moved domain, overflow and underflow errors into + macros, return Nan for domain error, Inf for overflow. + +Tue Jul 10 22:00:55 2001 Brian Gough + + * erfc.c (gsl_sf_log_erfc_e): introduce an additional log(erfc) + branch to prevent loss of accuracy for small x + + * test_sf.c (test_zeta): increased tolerance on zeta function test + to take into account differences in rounding + +2001-07-10 Brian Gough + + * legendre_Qn.c (gsl_sf_legendre_Q0_e): use (log1p(x) - log1p(-x)) + instead of log((1+x)/(1-x)), for accuracy + (gsl_sf_legendre_Q1_e): use (log1p(x) - log1p(-x)) instead of + log((1+x)/(1-x)), for accuracy + (gsl_sf_legendre_Q0_e): improve error estimate near singular + points + (gsl_sf_legendre_Q1_e): improve error estimate near singular + points + (gsl_sf_legendre_Q0_e): fixed incorrect factor of 2 in asymptotic + expansion + + * check.h (CHECK_UNDERFLOW): provide macro for checking results + for underflow + +Fri Jul 6 20:16:19 2001 Brian Gough + + * zeta.c (riemann_zeta1m_slt0): added a function to compute + zeta(1-s) without loss of accuracy for s near zero, as used by the + reflection formula. This fixes a bug in the accuracy of results + of zeta(-x) for small x, where loss of precision previously + occurred by evaluating 1-x. + +2001-07-06 Brian Gough + + * bessel_I0.c (gsl_sf_bessel_I0_scaled_e): added missing scaling + factor of exp(-x) for case x<2sqrt(epsilon) + +Thu Jul 5 16:16:13 2001 Brian Gough + + * erfc.c (gsl_sf_erfc_e): corrected case of -10 + + * eval.h (EVAL_DOUBLE): avoid returning the status value as a + numerical result + +2001-06-28 Brian Gough + + * elementary.c (gsl_sf_multiply_e): use GSL_COERCE_DBL macro to + deal with extended register problem + + * coupling.c: include stdlib.h for prototype of abs() + +Wed Jun 27 21:20:22 2001 Brian Gough + + * test_sf.c (test_fermidirac): increased tolerance on test of + gsl_sf_fermi_dirac_int(9,500) by factor of two to allow for MSVC + +Tue Jun 26 12:10:17 2001 Brian Gough + + * gsl_sf_gamma.h: added const to prototype, to match function + definition + +Sun May 6 13:01:01 2001 Brian Gough + + * test_sf.c: initialize message_buff to null string to prevent + random segmentation faults + + * test_sf.h: simplified test macros to reduce stack usage + +Mon Apr 30 12:38:15 2001 Brian Gough + + * airy_zero.c bessel_zero.c: zeros are now counted using an + unsigned int + + * poly.c: moved poly_eval function into poly/ directory + +Wed Apr 25 17:28:48 2001 Brian Gough + + * trig.c (gsl_sf_polar_to_rect): dropped _e from polar/rect + conversion functions + +Tue Apr 24 17:05:22 2001 Brian Gough + + * split out chebyshev functions into their own cheb/ directory, + leaving behind an internal cheb struct and cheb evaluation + function. + +Mon Apr 23 10:21:06 2001 Brian Gough + + * changed tests for EFAULT into a commented-out macro, since + EFAULT should only apply to invalid non-null pointers, but it + might be useful to keep the tests around for debugging in this + directory. + + * unified error handling conventions to _e for error handling + functions and no suffix for plain functions, so _impl functions + are no longer needed. + +1999-08-02 Mark Galassi + + * fermi_dirac.c: took out the use of some "const int" constants + which were being used to size arrays, since this is not portable + (thanks to Bernd Petrovitsch for pointing + this out). + +1999-01-02 Mark Galassi + + * trig.c (gsl_sf_rect_to_polar_impl): introduced an #ifdef + HAVE_HYPOT for systems that do not have the hypot() routine. + +Sun Feb 14 20:59:50 1999 Brian Gough + + * Makefile.am (include_HEADERS): added gsl_sf_result.h + +1998-12-05 Mark Galassi + + * Makefile.am: t-erf.c was commented out, which is a problem + (pointed out by automake-1.3b). Moved the commented-out t-erf.c + line to the end of the long list of files. + + * legendre_poly.c (gsl_sf_legendre_Pl_impl): + * legendre_con.c (gsl_sf_conicalP_xgt1_neg_mu_largetau_impl): + added an ugly fix to the invocation of gsl_sf_bessel_Jn_impl() to + give it two bogus arguments so that it builds. I hope Jerry fixes + it up soon! + + * gsl_sf_airy.h: added an include of gsl_precision.h so that + gsl_prec_t is defined. + +Tue Nov 17 17:29:31 1998 Brian Gough + + * added #include to all top-level source files + + * chebyshev.c (gsl_sf_cheb_eval_n): changed local gslMIN and + gslMAX to the standard GSL_MIN and GSL_MAX macros + +Tue Aug 18 13:36:15 1998 Brian Gough + + * coulomb.c (C0sq): changed to using gsl_sf_expm1_impl instead of + expm1, since the latter is a GNU extension. + +Mon Aug 3 14:43:16 1998 Brian Gough + + * bessel_amp_phase.h: undefined consts are now declared extern + +Mon Jul 13 12:40:27 1998 Brian Gough + + * gamma.c: changed all the factorial functions to take unsigned + int arguments, since negative values are not allowed. + (gsl_sf_choose): fixed off by one error in call to factorial. + +Sun Jul 12 13:21:41 1998 Brian Gough + + * gsl_sf_legendre.h, gsl_sf_poly.h, gsl_sf_pow_int.h: added + HAVE_INLINE around some inline definitions in the header files + + * gamma.c: implemented the natural versions of gsl_sf_lnchoose and + gsl_sf_choose. + +Wed Apr 15 21:27:48 1998 Brian Gough + + * added the return code as the second argument of GSL_WARNING, so + we can filter on the error number or output a standard message for + each one. + +1998-02-02 Mark Galassi + + * Makefile.am (include_HEADERS): added gsl_specfunc.h so it gets + into the distribution. + (INCLUDES): added -I$(top_srcdir) so that bessel.c can find + gsl_math.h diff --git a/gsl-2.5/specfunc/Makefile b/gsl-2.5/specfunc/Makefile new file mode 100644 index 00000000..a10af879 --- /dev/null +++ b/gsl-2.5/specfunc/Makefile @@ -0,0 +1,1144 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# specfunc/Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + + + + +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/gsl +pkgincludedir = $(includedir)/gsl +pkglibdir = $(libdir)/gsl +pkglibexecdir = $(libexecdir)/gsl +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = x86_64-unknown-linux-gnu +host_triplet = x86_64-unknown-linux-gnu +check_PROGRAMS = test$(EXEEXT) +subdir = specfunc +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp \ + $(noinst_HEADERS) $(pkginclude_HEADERS) \ + $(top_srcdir)/test-driver ChangeLog TODO +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +libgslspecfunc_la_LIBADD = +am_libgslspecfunc_la_OBJECTS = airy.lo airy_der.lo airy_zero.lo \ + atanint.lo bessel.lo bessel_I0.lo bessel_I1.lo bessel_In.lo \ + bessel_Inu.lo bessel_J0.lo bessel_J1.lo bessel_Jn.lo \ + bessel_Jnu.lo bessel_K0.lo bessel_K1.lo bessel_Kn.lo \ + bessel_Knu.lo bessel_Y0.lo bessel_Y1.lo bessel_Yn.lo \ + bessel_Ynu.lo bessel_amp_phase.lo bessel_i.lo bessel_j.lo \ + bessel_k.lo bessel_olver.lo bessel_temme.lo bessel_y.lo \ + bessel_zero.lo bessel_sequence.lo beta.lo beta_inc.lo \ + clausen.lo coulomb.lo coupling.lo coulomb_bound.lo dawson.lo \ + debye.lo dilog.lo elementary.lo ellint.lo elljac.lo erfc.lo \ + exp.lo expint.lo expint3.lo fermi_dirac.lo gegenbauer.lo \ + gamma.lo gamma_inc.lo hermite.lo hyperg_0F1.lo hyperg_2F0.lo \ + hyperg_1F1.lo hyperg_2F1.lo hyperg_U.lo hyperg.lo laguerre.lo \ + lambert.lo legendre_H3d.lo legendre_P.lo legendre_Qn.lo \ + legendre_con.lo legendre_poly.lo log.lo mathieu_angfunc.lo \ + mathieu_charv.lo mathieu_coeff.lo mathieu_radfunc.lo \ + mathieu_workspace.lo poch.lo pow_int.lo psi.lo result.lo \ + shint.lo sincos_pi.lo sinint.lo synchrotron.lo transport.lo \ + trig.lo zeta.lo +libgslspecfunc_la_OBJECTS = $(am_libgslspecfunc_la_OBJECTS) +AM_V_lt = $(am__v_lt_$(V)) +am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) +am__v_lt_0 = --silent +am__v_lt_1 = +am_test_OBJECTS = test_sf.$(OBJEXT) test_airy.$(OBJEXT) \ + test_bessel.$(OBJEXT) test_coulomb.$(OBJEXT) \ + test_dilog.$(OBJEXT) test_gamma.$(OBJEXT) \ + test_hermite.$(OBJEXT) test_hyperg.$(OBJEXT) \ + test_legendre.$(OBJEXT) test_mathieu.$(OBJEXT) \ + test_sincos_pi.$(OBJEXT) +test_OBJECTS = $(am_test_OBJECTS) +test_DEPENDENCIES = libgslspecfunc.la ../eigen/libgsleigen.la \ + ../linalg/libgsllinalg.la ../sort/libgslsort.la \ + ../matrix/libgslmatrix.la ../vector/libgslvector.la \ + ../blas/libgslblas.la ../cblas/libgslcblas.la \ + ../block/libgslblock.la ../complex/libgslcomplex.la \ + ../poly/libgslpoly.la ../ieee-utils/libgslieeeutils.la \ + ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la \ + ../utils/libutils.la +AM_V_P = $(am__v_P_$(V)) +am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY)) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_$(V)) +am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_$(V)) +am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I. -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_$(V)) +am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_$(V)) +am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libgslspecfunc_la_SOURCES) $(test_SOURCES) +DIST_SOURCES = $(libgslspecfunc_la_SOURCES) $(test_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(pkgincludedir)" +HEADERS = $(noinst_HEADERS) $(pkginclude_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = .test +LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing aclocal-1.13 +AMTAR = $${TAR-tar} +AM_DEFAULT_VERBOSITY = 1 +AR = ar +AS = as +AUTOCONF = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing autoconf +AUTOHEADER = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing autoheader +AUTOMAKE = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing automake-1.13 +AWK = gawk +CC = gcc +CCDEPMODE = depmode=gcc3 +CFLAGS = -g -O2 +CPP = gcc -E +CPPFLAGS = +CYGPATH_W = echo +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +DLLTOOL = false +DSYMUTIL = +DUMPBIN = +ECHO_C = +ECHO_N = -n +ECHO_T = +EGREP = /usr/bin/grep -E +EXEEXT = +FGREP = /usr/bin/grep -F +GREP = /usr/bin/grep +GSLCBLAS_LDFLAGS = +GSL_CFLAGS = -I${prefix}/include +GSL_LDFLAGS = +GSL_LIBADD = +GSL_LIBM = -lm +GSL_LIBS = -L${exec_prefix}/lib -lgsl +GSL_LT_CBLAS_VERSION = 0:0:0 +GSL_LT_VERSION = 24:0:1 +GSL_MAJOR_VERSION = 2 +GSL_MINOR_VERSION = 5 +HAVE_AIX_IEEE_INTERFACE = +HAVE_DARWIN86_IEEE_INTERFACE = +HAVE_DARWIN_IEEE_INTERFACE = +HAVE_FREEBSD_IEEE_INTERFACE = +HAVE_GNUM68K_IEEE_INTERFACE = +HAVE_GNUPPC_IEEE_INTERFACE = +HAVE_GNUSPARC_IEEE_INTERFACE = +HAVE_GNUX86_IEEE_INTERFACE = +HAVE_HPUX11_IEEE_INTERFACE = +HAVE_HPUX_IEEE_INTERFACE = +HAVE_IRIX_IEEE_INTERFACE = +HAVE_NETBSD_IEEE_INTERFACE = +HAVE_OPENBSD_IEEE_INTERFACE = +HAVE_OS2EMX_IEEE_INTERFACE = +HAVE_SOLARIS_IEEE_INTERFACE = +HAVE_SUNOS4_IEEE_INTERFACE = +HAVE_TRU64_IEEE_INTERFACE = +INSTALL = /usr/bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = $(install_sh) -c -s +LD = /usr/bin/ld -m elf_x86_64 +LDFLAGS = +LIBM = -lm +LIBOBJS = +LIBS = -lm +LIBTOOL = $(SHELL) $(top_builddir)/libtool +LIPO = +LN_S = ln -s +LTLIBOBJS = +MAINT = # +MAKEINFO = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing makeinfo +MANIFEST_TOOL = : +MKDIR_P = /usr/bin/mkdir -p +NM = /usr/bin/nm -B +NMEDIT = +OBJDUMP = objdump +OBJEXT = o +OTOOL = +OTOOL64 = +PACKAGE = gsl +PACKAGE_BUGREPORT = +PACKAGE_NAME = gsl +PACKAGE_STRING = gsl 2.5 +PACKAGE_TARNAME = gsl +PACKAGE_URL = +PACKAGE_VERSION = 2.5 +PATH_SEPARATOR = : +RANLIB = ranlib +SED = /usr/bin/sed +SET_MAKE = +SHELL = /bin/sh +STRIP = strip +VERSION = 2.5 +abs_builddir = /home/groups/kipac/chto/package/gsl/gsl-2.5/specfunc +abs_srcdir = /home/groups/kipac/chto/package/gsl/gsl-2.5/specfunc +abs_top_builddir = /home/groups/kipac/chto/package/gsl/gsl-2.5 +abs_top_srcdir = /home/groups/kipac/chto/package/gsl/gsl-2.5 +ac_ct_AR = ar +ac_ct_CC = gcc +ac_ct_DUMPBIN = +am__include = include +am__leading_dot = . +am__quote = +am__tar = $${TAR-tar} chof - "$$tardir" +am__untar = $${TAR-tar} xf - +bindir = ${exec_prefix}/bin +build = x86_64-unknown-linux-gnu +build_alias = +build_cpu = x86_64 +build_os = linux-gnu +build_vendor = unknown +builddir = . +datadir = ${datarootdir} +datarootdir = ${prefix}/share +docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} +dvidir = ${docdir} +exec_prefix = ${prefix} +host = x86_64-unknown-linux-gnu +host_alias = +host_cpu = x86_64 +host_os = linux-gnu +host_vendor = unknown +htmldir = ${docdir} +includedir = ${prefix}/include +infodir = ${datarootdir}/info +install_sh = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/install-sh +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +localedir = ${datarootdir}/locale +localstatedir = ${prefix}/var +mandir = ${datarootdir}/man +mkdir_p = $(MKDIR_P) +oldincludedir = /usr/include +pdfdir = ${docdir} +prefix = /home/groups/kipac/chto/package/gsl/gsl_lib +program_transform_name = s,x,x, +psdir = ${docdir} +sbindir = ${exec_prefix}/sbin +sharedstatedir = ${prefix}/com +srcdir = . +sysconfdir = ${prefix}/etc +target_alias = +top_build_prefix = ../ +top_builddir = .. +top_srcdir = .. +noinst_LTLIBRARIES = libgslspecfunc.la +pkginclude_HEADERS = gsl_sf.h gsl_sf_airy.h gsl_sf_bessel.h gsl_sf_clausen.h gsl_sf_coulomb.h gsl_sf_coupling.h gsl_sf_dawson.h gsl_sf_debye.h gsl_sf_dilog.h gsl_sf_elementary.h gsl_sf_ellint.h gsl_sf_elljac.h gsl_sf_erf.h gsl_sf_exp.h gsl_sf_expint.h gsl_sf_fermi_dirac.h gsl_sf_gamma.h gsl_sf_gegenbauer.h gsl_sf_hermite.h gsl_sf_hyperg.h gsl_sf_laguerre.h gsl_sf_lambert.h gsl_sf_legendre.h gsl_sf_log.h gsl_sf_mathieu.h gsl_sf_pow_int.h gsl_sf_psi.h gsl_sf_result.h gsl_sf_sincos_pi.h gsl_sf_synchrotron.h gsl_sf_transport.h gsl_sf_trig.h gsl_sf_zeta.h gsl_specfunc.h +noinst_HEADERS = bessel_amp_phase.h bessel_olver.h bessel_temme.h bessel.h hyperg.h legendre.h eval.h chebyshev.h cheb_eval.c cheb_eval_mode.c check.h error.h legendre_source.c +AM_CPPFLAGS = -I$(top_srcdir) +libgslspecfunc_la_SOURCES = airy.c airy_der.c airy_zero.c atanint.c bessel.c bessel.h bessel_I0.c bessel_I1.c bessel_In.c bessel_Inu.c bessel_J0.c bessel_J1.c bessel_Jn.c bessel_Jnu.c bessel_K0.c bessel_K1.c bessel_Kn.c bessel_Knu.c bessel_Y0.c bessel_Y1.c bessel_Yn.c bessel_Ynu.c bessel_amp_phase.c bessel_amp_phase.h bessel_i.c bessel_j.c bessel_k.c bessel_olver.c bessel_temme.c bessel_y.c bessel_zero.c bessel_sequence.c beta.c beta_inc.c clausen.c coulomb.c coupling.c coulomb_bound.c dawson.c debye.c dilog.c elementary.c ellint.c elljac.c erfc.c exp.c expint.c expint3.c fermi_dirac.c gegenbauer.c gamma.c gamma_inc.c hermite.c hyperg_0F1.c hyperg_2F0.c hyperg_1F1.c hyperg_2F1.c hyperg_U.c hyperg.c laguerre.c lambert.c legendre_H3d.c legendre_P.c legendre_Qn.c legendre_con.c legendre_poly.c log.c mathieu_angfunc.c mathieu_charv.c mathieu_coeff.c mathieu_radfunc.c mathieu_workspace.c poch.c pow_int.c psi.c recurse.h result.c shint.c sincos_pi.c sinint.c synchrotron.c transport.c trig.c zeta.c +TESTS = $(check_PROGRAMS) +test_LDADD = libgslspecfunc.la ../eigen/libgsleigen.la ../linalg/libgsllinalg.la ../sort/libgslsort.la ../matrix/libgslmatrix.la ../vector/libgslvector.la ../blas/libgslblas.la ../cblas/libgslcblas.la ../block/libgslblock.la ../complex/libgslcomplex.la ../poly/libgslpoly.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la +test_SOURCES = test_sf.c test_sf.h test_airy.c test_bessel.c test_coulomb.c test_dilog.c test_gamma.c test_hermite.c test_hyperg.c test_legendre.c test_mathieu.c test_sincos_pi.c +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu specfunc/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu specfunc/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: # $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): # $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libgslspecfunc.la: $(libgslspecfunc_la_OBJECTS) $(libgslspecfunc_la_DEPENDENCIES) $(EXTRA_libgslspecfunc_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(libgslspecfunc_la_OBJECTS) $(libgslspecfunc_la_LIBADD) $(LIBS) + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) $(EXTRA_test_DEPENDENCIES) + @rm -f test$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_OBJECTS) $(test_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +include ./$(DEPDIR)/airy.Plo +include ./$(DEPDIR)/airy_der.Plo +include ./$(DEPDIR)/airy_zero.Plo +include ./$(DEPDIR)/atanint.Plo +include ./$(DEPDIR)/bessel.Plo +include ./$(DEPDIR)/bessel_I0.Plo +include ./$(DEPDIR)/bessel_I1.Plo +include ./$(DEPDIR)/bessel_In.Plo +include ./$(DEPDIR)/bessel_Inu.Plo +include ./$(DEPDIR)/bessel_J0.Plo +include ./$(DEPDIR)/bessel_J1.Plo +include ./$(DEPDIR)/bessel_Jn.Plo +include ./$(DEPDIR)/bessel_Jnu.Plo +include ./$(DEPDIR)/bessel_K0.Plo +include ./$(DEPDIR)/bessel_K1.Plo +include ./$(DEPDIR)/bessel_Kn.Plo +include ./$(DEPDIR)/bessel_Knu.Plo +include ./$(DEPDIR)/bessel_Y0.Plo +include ./$(DEPDIR)/bessel_Y1.Plo +include ./$(DEPDIR)/bessel_Yn.Plo +include ./$(DEPDIR)/bessel_Ynu.Plo +include ./$(DEPDIR)/bessel_amp_phase.Plo +include ./$(DEPDIR)/bessel_i.Plo +include ./$(DEPDIR)/bessel_j.Plo +include ./$(DEPDIR)/bessel_k.Plo +include ./$(DEPDIR)/bessel_olver.Plo +include ./$(DEPDIR)/bessel_sequence.Plo +include ./$(DEPDIR)/bessel_temme.Plo +include ./$(DEPDIR)/bessel_y.Plo +include ./$(DEPDIR)/bessel_zero.Plo +include ./$(DEPDIR)/beta.Plo +include ./$(DEPDIR)/beta_inc.Plo +include ./$(DEPDIR)/clausen.Plo +include ./$(DEPDIR)/coulomb.Plo +include ./$(DEPDIR)/coulomb_bound.Plo +include ./$(DEPDIR)/coupling.Plo +include ./$(DEPDIR)/dawson.Plo +include ./$(DEPDIR)/debye.Plo +include ./$(DEPDIR)/dilog.Plo +include ./$(DEPDIR)/elementary.Plo +include ./$(DEPDIR)/ellint.Plo +include ./$(DEPDIR)/elljac.Plo +include ./$(DEPDIR)/erfc.Plo +include ./$(DEPDIR)/exp.Plo +include ./$(DEPDIR)/expint.Plo +include ./$(DEPDIR)/expint3.Plo +include ./$(DEPDIR)/fermi_dirac.Plo +include ./$(DEPDIR)/gamma.Plo +include ./$(DEPDIR)/gamma_inc.Plo +include ./$(DEPDIR)/gegenbauer.Plo +include ./$(DEPDIR)/hermite.Plo +include ./$(DEPDIR)/hyperg.Plo +include ./$(DEPDIR)/hyperg_0F1.Plo +include ./$(DEPDIR)/hyperg_1F1.Plo +include ./$(DEPDIR)/hyperg_2F0.Plo +include ./$(DEPDIR)/hyperg_2F1.Plo +include ./$(DEPDIR)/hyperg_U.Plo +include ./$(DEPDIR)/laguerre.Plo +include ./$(DEPDIR)/lambert.Plo +include ./$(DEPDIR)/legendre_H3d.Plo +include ./$(DEPDIR)/legendre_P.Plo +include ./$(DEPDIR)/legendre_Qn.Plo +include ./$(DEPDIR)/legendre_con.Plo +include ./$(DEPDIR)/legendre_poly.Plo +include ./$(DEPDIR)/log.Plo +include ./$(DEPDIR)/mathieu_angfunc.Plo +include ./$(DEPDIR)/mathieu_charv.Plo +include ./$(DEPDIR)/mathieu_coeff.Plo +include ./$(DEPDIR)/mathieu_radfunc.Plo +include ./$(DEPDIR)/mathieu_workspace.Plo +include ./$(DEPDIR)/poch.Plo +include ./$(DEPDIR)/pow_int.Plo +include ./$(DEPDIR)/psi.Plo +include ./$(DEPDIR)/result.Plo +include ./$(DEPDIR)/shint.Plo +include ./$(DEPDIR)/sincos_pi.Plo +include ./$(DEPDIR)/sinint.Plo +include ./$(DEPDIR)/synchrotron.Plo +include ./$(DEPDIR)/test_airy.Po +include ./$(DEPDIR)/test_bessel.Po +include ./$(DEPDIR)/test_coulomb.Po +include ./$(DEPDIR)/test_dilog.Po +include ./$(DEPDIR)/test_gamma.Po +include ./$(DEPDIR)/test_hermite.Po +include ./$(DEPDIR)/test_hyperg.Po +include ./$(DEPDIR)/test_legendre.Po +include ./$(DEPDIR)/test_mathieu.Po +include ./$(DEPDIR)/test_sf.Po +include ./$(DEPDIR)/test_sincos_pi.Po +include ./$(DEPDIR)/transport.Plo +include ./$(DEPDIR)/trig.Plo +include ./$(DEPDIR)/zeta.Plo + +.c.o: + $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# $(AM_V_CC)source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(COMPILE) -c $< + +.c.obj: + $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# $(AM_V_CC)source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: + $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +# $(AM_V_CC)source='$<' object='$@' libtool=yes \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-pkgincludeHEADERS: $(pkginclude_HEADERS) + @$(NORMAL_INSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \ + done + +uninstall-pkgincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + else \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_PROGRAMS) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +test.log: test$(EXEEXT) + @p='test$(EXEEXT)'; \ + b='test'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +#.test$(EXEEXT).log: +# @p='$<'; \ +# $(am__set_b); \ +# $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +# --log-file $$b.log --trs-file $$b.trs \ +# $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +# "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-am +all-am: Makefile $(LTLIBRARIES) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(pkgincludedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-pkgincludeHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-pkgincludeHEADERS + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES cscopelist-am ctags ctags-am distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-pkgincludeHEADERS \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + recheck tags tags-am uninstall uninstall-am \ + uninstall-pkgincludeHEADERS + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gsl-2.5/specfunc/Makefile.am b/gsl-2.5/specfunc/Makefile.am new file mode 100644 index 00000000..fb901a1a --- /dev/null +++ b/gsl-2.5/specfunc/Makefile.am @@ -0,0 +1,19 @@ +noinst_LTLIBRARIES = libgslspecfunc.la + +pkginclude_HEADERS = gsl_sf.h gsl_sf_airy.h gsl_sf_bessel.h gsl_sf_clausen.h gsl_sf_coulomb.h gsl_sf_coupling.h gsl_sf_dawson.h gsl_sf_debye.h gsl_sf_dilog.h gsl_sf_elementary.h gsl_sf_ellint.h gsl_sf_elljac.h gsl_sf_erf.h gsl_sf_exp.h gsl_sf_expint.h gsl_sf_fermi_dirac.h gsl_sf_gamma.h gsl_sf_gegenbauer.h gsl_sf_hermite.h gsl_sf_hyperg.h gsl_sf_laguerre.h gsl_sf_lambert.h gsl_sf_legendre.h gsl_sf_log.h gsl_sf_mathieu.h gsl_sf_pow_int.h gsl_sf_psi.h gsl_sf_result.h gsl_sf_sincos_pi.h gsl_sf_synchrotron.h gsl_sf_transport.h gsl_sf_trig.h gsl_sf_zeta.h gsl_specfunc.h + +noinst_HEADERS = bessel_amp_phase.h bessel_olver.h bessel_temme.h bessel.h hyperg.h legendre.h eval.h chebyshev.h cheb_eval.c cheb_eval_mode.c check.h error.h legendre_source.c + +AM_CPPFLAGS = -I$(top_srcdir) + +libgslspecfunc_la_SOURCES = airy.c airy_der.c airy_zero.c atanint.c bessel.c bessel.h bessel_I0.c bessel_I1.c bessel_In.c bessel_Inu.c bessel_J0.c bessel_J1.c bessel_Jn.c bessel_Jnu.c bessel_K0.c bessel_K1.c bessel_Kn.c bessel_Knu.c bessel_Y0.c bessel_Y1.c bessel_Yn.c bessel_Ynu.c bessel_amp_phase.c bessel_amp_phase.h bessel_i.c bessel_j.c bessel_k.c bessel_olver.c bessel_temme.c bessel_y.c bessel_zero.c bessel_sequence.c beta.c beta_inc.c clausen.c coulomb.c coupling.c coulomb_bound.c dawson.c debye.c dilog.c elementary.c ellint.c elljac.c erfc.c exp.c expint.c expint3.c fermi_dirac.c gegenbauer.c gamma.c gamma_inc.c hermite.c hyperg_0F1.c hyperg_2F0.c hyperg_1F1.c hyperg_2F1.c hyperg_U.c hyperg.c laguerre.c lambert.c legendre_H3d.c legendre_P.c legendre_Qn.c legendre_con.c legendre_poly.c log.c mathieu_angfunc.c mathieu_charv.c mathieu_coeff.c mathieu_radfunc.c mathieu_workspace.c poch.c pow_int.c psi.c recurse.h result.c shint.c sincos_pi.c sinint.c synchrotron.c transport.c trig.c zeta.c + +TESTS = $(check_PROGRAMS) + +check_PROGRAMS = test + +test_LDADD = libgslspecfunc.la ../eigen/libgsleigen.la ../linalg/libgsllinalg.la ../sort/libgslsort.la ../matrix/libgslmatrix.la ../vector/libgslvector.la ../blas/libgslblas.la ../cblas/libgslcblas.la ../block/libgslblock.la ../complex/libgslcomplex.la ../poly/libgslpoly.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la + +test_SOURCES = test_sf.c test_sf.h test_airy.c test_bessel.c test_coulomb.c test_dilog.c test_gamma.c test_hermite.c test_hyperg.c test_legendre.c test_mathieu.c test_sincos_pi.c + + diff --git a/gsl-2.5/specfunc/Makefile.in b/gsl-2.5/specfunc/Makefile.in new file mode 100644 index 00000000..14d8bd15 --- /dev/null +++ b/gsl-2.5/specfunc/Makefile.in @@ -0,0 +1,1144 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + + +VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +check_PROGRAMS = test$(EXEEXT) +subdir = specfunc +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp \ + $(noinst_HEADERS) $(pkginclude_HEADERS) \ + $(top_srcdir)/test-driver ChangeLog TODO +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +libgslspecfunc_la_LIBADD = +am_libgslspecfunc_la_OBJECTS = airy.lo airy_der.lo airy_zero.lo \ + atanint.lo bessel.lo bessel_I0.lo bessel_I1.lo bessel_In.lo \ + bessel_Inu.lo bessel_J0.lo bessel_J1.lo bessel_Jn.lo \ + bessel_Jnu.lo bessel_K0.lo bessel_K1.lo bessel_Kn.lo \ + bessel_Knu.lo bessel_Y0.lo bessel_Y1.lo bessel_Yn.lo \ + bessel_Ynu.lo bessel_amp_phase.lo bessel_i.lo bessel_j.lo \ + bessel_k.lo bessel_olver.lo bessel_temme.lo bessel_y.lo \ + bessel_zero.lo bessel_sequence.lo beta.lo beta_inc.lo \ + clausen.lo coulomb.lo coupling.lo coulomb_bound.lo dawson.lo \ + debye.lo dilog.lo elementary.lo ellint.lo elljac.lo erfc.lo \ + exp.lo expint.lo expint3.lo fermi_dirac.lo gegenbauer.lo \ + gamma.lo gamma_inc.lo hermite.lo hyperg_0F1.lo hyperg_2F0.lo \ + hyperg_1F1.lo hyperg_2F1.lo hyperg_U.lo hyperg.lo laguerre.lo \ + lambert.lo legendre_H3d.lo legendre_P.lo legendre_Qn.lo \ + legendre_con.lo legendre_poly.lo log.lo mathieu_angfunc.lo \ + mathieu_charv.lo mathieu_coeff.lo mathieu_radfunc.lo \ + mathieu_workspace.lo poch.lo pow_int.lo psi.lo result.lo \ + shint.lo sincos_pi.lo sinint.lo synchrotron.lo transport.lo \ + trig.lo zeta.lo +libgslspecfunc_la_OBJECTS = $(am_libgslspecfunc_la_OBJECTS) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +am_test_OBJECTS = test_sf.$(OBJEXT) test_airy.$(OBJEXT) \ + test_bessel.$(OBJEXT) test_coulomb.$(OBJEXT) \ + test_dilog.$(OBJEXT) test_gamma.$(OBJEXT) \ + test_hermite.$(OBJEXT) test_hyperg.$(OBJEXT) \ + test_legendre.$(OBJEXT) test_mathieu.$(OBJEXT) \ + test_sincos_pi.$(OBJEXT) +test_OBJECTS = $(am_test_OBJECTS) +test_DEPENDENCIES = libgslspecfunc.la ../eigen/libgsleigen.la \ + ../linalg/libgsllinalg.la ../sort/libgslsort.la \ + ../matrix/libgslmatrix.la ../vector/libgslvector.la \ + ../blas/libgslblas.la ../cblas/libgslcblas.la \ + ../block/libgslblock.la ../complex/libgslcomplex.la \ + ../poly/libgslpoly.la ../ieee-utils/libgslieeeutils.la \ + ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la \ + ../utils/libutils.la +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libgslspecfunc_la_SOURCES) $(test_SOURCES) +DIST_SOURCES = $(libgslspecfunc_la_SOURCES) $(test_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(pkgincludedir)" +HEADERS = $(noinst_HEADERS) $(pkginclude_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = @EXEEXT@ .test +LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +GSLCBLAS_LDFLAGS = @GSLCBLAS_LDFLAGS@ +GSL_CFLAGS = @GSL_CFLAGS@ +GSL_LDFLAGS = @GSL_LDFLAGS@ +GSL_LIBADD = @GSL_LIBADD@ +GSL_LIBM = @GSL_LIBM@ +GSL_LIBS = @GSL_LIBS@ +GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ +GSL_LT_VERSION = @GSL_LT_VERSION@ +GSL_MAJOR_VERSION = @GSL_MAJOR_VERSION@ +GSL_MINOR_VERSION = @GSL_MINOR_VERSION@ +HAVE_AIX_IEEE_INTERFACE = @HAVE_AIX_IEEE_INTERFACE@ +HAVE_DARWIN86_IEEE_INTERFACE = @HAVE_DARWIN86_IEEE_INTERFACE@ +HAVE_DARWIN_IEEE_INTERFACE = @HAVE_DARWIN_IEEE_INTERFACE@ +HAVE_FREEBSD_IEEE_INTERFACE = @HAVE_FREEBSD_IEEE_INTERFACE@ +HAVE_GNUM68K_IEEE_INTERFACE = @HAVE_GNUM68K_IEEE_INTERFACE@ +HAVE_GNUPPC_IEEE_INTERFACE = @HAVE_GNUPPC_IEEE_INTERFACE@ +HAVE_GNUSPARC_IEEE_INTERFACE = @HAVE_GNUSPARC_IEEE_INTERFACE@ +HAVE_GNUX86_IEEE_INTERFACE = @HAVE_GNUX86_IEEE_INTERFACE@ +HAVE_HPUX11_IEEE_INTERFACE = @HAVE_HPUX11_IEEE_INTERFACE@ +HAVE_HPUX_IEEE_INTERFACE = @HAVE_HPUX_IEEE_INTERFACE@ +HAVE_IRIX_IEEE_INTERFACE = @HAVE_IRIX_IEEE_INTERFACE@ +HAVE_NETBSD_IEEE_INTERFACE = @HAVE_NETBSD_IEEE_INTERFACE@ +HAVE_OPENBSD_IEEE_INTERFACE = @HAVE_OPENBSD_IEEE_INTERFACE@ +HAVE_OS2EMX_IEEE_INTERFACE = @HAVE_OS2EMX_IEEE_INTERFACE@ +HAVE_SOLARIS_IEEE_INTERFACE = @HAVE_SOLARIS_IEEE_INTERFACE@ +HAVE_SUNOS4_IEEE_INTERFACE = @HAVE_SUNOS4_IEEE_INTERFACE@ +HAVE_TRU64_IEEE_INTERFACE = @HAVE_TRU64_IEEE_INTERFACE@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBM = @LIBM@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +noinst_LTLIBRARIES = libgslspecfunc.la +pkginclude_HEADERS = gsl_sf.h gsl_sf_airy.h gsl_sf_bessel.h gsl_sf_clausen.h gsl_sf_coulomb.h gsl_sf_coupling.h gsl_sf_dawson.h gsl_sf_debye.h gsl_sf_dilog.h gsl_sf_elementary.h gsl_sf_ellint.h gsl_sf_elljac.h gsl_sf_erf.h gsl_sf_exp.h gsl_sf_expint.h gsl_sf_fermi_dirac.h gsl_sf_gamma.h gsl_sf_gegenbauer.h gsl_sf_hermite.h gsl_sf_hyperg.h gsl_sf_laguerre.h gsl_sf_lambert.h gsl_sf_legendre.h gsl_sf_log.h gsl_sf_mathieu.h gsl_sf_pow_int.h gsl_sf_psi.h gsl_sf_result.h gsl_sf_sincos_pi.h gsl_sf_synchrotron.h gsl_sf_transport.h gsl_sf_trig.h gsl_sf_zeta.h gsl_specfunc.h +noinst_HEADERS = bessel_amp_phase.h bessel_olver.h bessel_temme.h bessel.h hyperg.h legendre.h eval.h chebyshev.h cheb_eval.c cheb_eval_mode.c check.h error.h legendre_source.c +AM_CPPFLAGS = -I$(top_srcdir) +libgslspecfunc_la_SOURCES = airy.c airy_der.c airy_zero.c atanint.c bessel.c bessel.h bessel_I0.c bessel_I1.c bessel_In.c bessel_Inu.c bessel_J0.c bessel_J1.c bessel_Jn.c bessel_Jnu.c bessel_K0.c bessel_K1.c bessel_Kn.c bessel_Knu.c bessel_Y0.c bessel_Y1.c bessel_Yn.c bessel_Ynu.c bessel_amp_phase.c bessel_amp_phase.h bessel_i.c bessel_j.c bessel_k.c bessel_olver.c bessel_temme.c bessel_y.c bessel_zero.c bessel_sequence.c beta.c beta_inc.c clausen.c coulomb.c coupling.c coulomb_bound.c dawson.c debye.c dilog.c elementary.c ellint.c elljac.c erfc.c exp.c expint.c expint3.c fermi_dirac.c gegenbauer.c gamma.c gamma_inc.c hermite.c hyperg_0F1.c hyperg_2F0.c hyperg_1F1.c hyperg_2F1.c hyperg_U.c hyperg.c laguerre.c lambert.c legendre_H3d.c legendre_P.c legendre_Qn.c legendre_con.c legendre_poly.c log.c mathieu_angfunc.c mathieu_charv.c mathieu_coeff.c mathieu_radfunc.c mathieu_workspace.c poch.c pow_int.c psi.c recurse.h result.c shint.c sincos_pi.c sinint.c synchrotron.c transport.c trig.c zeta.c +TESTS = $(check_PROGRAMS) +test_LDADD = libgslspecfunc.la ../eigen/libgsleigen.la ../linalg/libgsllinalg.la ../sort/libgslsort.la ../matrix/libgslmatrix.la ../vector/libgslvector.la ../blas/libgslblas.la ../cblas/libgslcblas.la ../block/libgslblock.la ../complex/libgslcomplex.la ../poly/libgslpoly.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la +test_SOURCES = test_sf.c test_sf.h test_airy.c test_bessel.c test_coulomb.c test_dilog.c test_gamma.c test_hermite.c test_hyperg.c test_legendre.c test_mathieu.c test_sincos_pi.c +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu specfunc/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu specfunc/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libgslspecfunc.la: $(libgslspecfunc_la_OBJECTS) $(libgslspecfunc_la_DEPENDENCIES) $(EXTRA_libgslspecfunc_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(libgslspecfunc_la_OBJECTS) $(libgslspecfunc_la_LIBADD) $(LIBS) + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) $(EXTRA_test_DEPENDENCIES) + @rm -f test$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_OBJECTS) $(test_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/airy.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/airy_der.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/airy_zero.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/atanint.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bessel.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bessel_I0.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bessel_I1.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bessel_In.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bessel_Inu.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bessel_J0.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bessel_J1.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bessel_Jn.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bessel_Jnu.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bessel_K0.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bessel_K1.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bessel_Kn.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bessel_Knu.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bessel_Y0.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bessel_Y1.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bessel_Yn.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bessel_Ynu.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bessel_amp_phase.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bessel_i.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bessel_j.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bessel_k.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bessel_olver.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bessel_sequence.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bessel_temme.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bessel_y.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bessel_zero.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/beta.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/beta_inc.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/clausen.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/coulomb.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/coulomb_bound.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/coupling.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dawson.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/debye.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dilog.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elementary.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ellint.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elljac.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/erfc.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/exp.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/expint.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/expint3.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fermi_dirac.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gamma.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gamma_inc.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gegenbauer.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hermite.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hyperg.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hyperg_0F1.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hyperg_1F1.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hyperg_2F0.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hyperg_2F1.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hyperg_U.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/laguerre.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lambert.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/legendre_H3d.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/legendre_P.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/legendre_Qn.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/legendre_con.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/legendre_poly.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/log.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mathieu_angfunc.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mathieu_charv.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mathieu_coeff.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mathieu_radfunc.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mathieu_workspace.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/poch.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pow_int.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/psi.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/result.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/shint.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sincos_pi.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sinint.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/synchrotron.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_airy.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_bessel.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_coulomb.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_dilog.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_gamma.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_hermite.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_hyperg.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_legendre.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_mathieu.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_sf.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_sincos_pi.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/transport.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/trig.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zeta.Plo@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-pkgincludeHEADERS: $(pkginclude_HEADERS) + @$(NORMAL_INSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \ + done + +uninstall-pkgincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + else \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_PROGRAMS) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +test.log: test$(EXEEXT) + @p='test$(EXEEXT)'; \ + b='test'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +@am__EXEEXT_TRUE@.test$(EXEEXT).log: +@am__EXEEXT_TRUE@ @p='$<'; \ +@am__EXEEXT_TRUE@ $(am__set_b); \ +@am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +@am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ +@am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +@am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-am +all-am: Makefile $(LTLIBRARIES) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(pkgincludedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-pkgincludeHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-pkgincludeHEADERS + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES cscopelist-am ctags ctags-am distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-pkgincludeHEADERS \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + recheck tags tags-am uninstall uninstall-am \ + uninstall-pkgincludeHEADERS + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gsl-2.5/specfunc/TODO b/gsl-2.5/specfunc/TODO new file mode 100644 index 00000000..9e48f694 --- /dev/null +++ b/gsl-2.5/specfunc/TODO @@ -0,0 +1,678 @@ +# -*- org -*- +#+CATEGORY: specfunc + +* Complex hypergeometric function 1F1 + +* Could probably return immediately for exact zeros in 3j,6j,9j +functions. Easiest to implement for 3j. + + Note from Serge Winitzki : + + The package "matpack" (www.matpack.de) includes many special functions, + also the 3j symbols. They refer to some quite complicated numerical + methods using recursion relations to get the right answers for large + momenta, and to 1975-1976 papers by Schulten and Gordon for the + description of the algorithms. The papers can be downloaded for free at + http://www.ks.uiuc.edu/Publications/Papers/ + + http://www.ks.uiuc.edu/Publications/Papers/abstract.cgi?tbcode=SCHU76B + http://www.ks.uiuc.edu/Publications/Papers/abstract.cgi?tbcode=SCHU75A + http://www.ks.uiuc.edu/Publications/Papers/abstract.cgi?tbcode=SCHU75 + +* add Fresnel Integrals to specfunc. See TOMS 723 + 2 subsequent +errata. + +* make mode variables consistent in specfunc -- some seem to be +unnecessary from performance point of view since the speed difference +is negligible. + +* From: "Alexander Babansky" +To: "Brian Gough" +Subject: Re: gsl-1.2 +Date: Sun, 3 Nov 2002 14:15:15 -0500 + +Hi Brian, +May I suggest you to add another function to gsl-1.2 ? +It's a modified Ei(x) function: + +Em(x)=exp(-x)*Ei(x); + +As u might know, Ei(x) raises as e^x on the negative interval. +Therefore, Ei(100) is very very large. +But Ei(100)*exp(-100) = 0.010; + +Unfortunately, if u try x=800 u'll get overflow in Ei(800). +but Ei(800)*exp(-800) should be around 0.0001; + +Modified function Em(x) is used in cos, sin integrals such as: +int_0^\infinity dx sin(bx)/(x^2+z^2)=(1/2z)*(Em(bz)-Em(-bz)); + +int_0^\infinity dx x cos(bx)/(x^2+z^2)=(1/2)*(Em(bz)+Em(-bz)); + +One of possible ways to add it to the library is: +Em(x) = - PV int_0^\infinity e^(-t)/(t+x) dt + +Sincerely, +Alex + +DONE: Wed Nov 6 13:06:42 MST 2002 [GJ] + + +---------------------------------------------------------------------- + +The following should be finished before a 1.0 level release. + +* Implement the conicalP_sph_reg() functions. + DONE: Fri Nov 6 23:33:53 MST 1998 [GJ] + +* Irregular (Q) Legendre functions, at least + the integer order ones. More general cases + can probably wait. + DONE: Sat Nov 7 15:47:35 MST 1998 [GJ] + +* Make hyperg_1F1() work right. + This is the last remaining source of test failures. + The problem is with an unstable recursion in certain cases. + Look for the recursion with the variable named "start_pair"; + this is stupid hack to keep track of when the recursion + result is going the wrong way for awhile by remembering the + minimum value. An error estimate is amde from that. But it + is just a hack. Somethign must be done abou that case. + +* Clean-up Coulomb wave functions. This does not + mean completing a fully controlled low-energy + evaluation, which is a larger project. + DONE: Sun May 16 13:49:47 MDT 1999 [GJ] + +* Clean-up the Fermi-Dirac code. The full Fermi-Dirac + functions can probably wait until a later release, + but we should have at least the common j = integer and + j = 1/2-integer cases for the 1.0 release. These + are not too hard. + DONE: Sat Nov 7 19:46:27 MST 1998 [GJ] + +* Go over the tests and make sure nothing is left out. + +* Sanitize all the error-checking, error-estimation, + algorithm tuning, etc. + +* Fill out our scorecard, working from Lozier's + "Software Needs in Special Functions" paper. + +* Final Seal of Approval + This section has itself gone through several + revisions (sigh), proving that the notion of + done-ness is ill-defined. So it is worth + stating the criteria for done-ness explicitly: + o interfaces stabilized + o error-estimation in place + o all deprecated constructs removed + o passes tests + + + - airy.c + INTERFACES: + ERRORESTIM: + DEPRECATED: + PASSTESTS: + + - airy_der.c + INTERFACES: + ERRORESTIM: + DEPRECATED: + PASSTESTS: + + - airy_zero.c + INTERFACES: + ERRORESTIM: + DEPRECATED: + PASSTESTS: + + - atanint.c + INTERFACES: + ERRORESTIM: + DEPRECATED: + PASSTESTS: + + - bessel.c + INTERFACES: + ERRORESTIM: + DEPRECATED: + PASSTESTS: + + - bessel_I0.c + INTERFACES: + ERRORESTIM: + DEPRECATED: + PASSTESTS: + + - bessel_I1.c + INTERFACES: + ERRORESTIM: + DEPRECATED: + PASSTESTS: + + - bessel_In.c + INTERFACES: + ERRORESTIM: + DEPRECATED: + PASSTESTS: + + - bessel_Inu.c + INTERFACES: + ERRORESTIM: + DEPRECATED: + PASSTESTS: + + - bessel_J0.c + INTERFACES: + ERRORESTIM: + DEPRECATED: + PASSTESTS: + + - bessel_J1.c + INTERFACES: + ERRORESTIM: + DEPRECATED: + PASSTESTS: + + - bessel_Jn.c + INTERFACES: + ERRORESTIM: + DEPRECATED: + PASSTESTS: + + - bessel_Jnu.c + INTERFACES: + ERRORESTIM: + DEPRECATED: + PASSTESTS: + + - bessel_K0.c + INTERFACES: + ERRORESTIM: + DEPRECATED: + PASSTESTS: + + - bessel_K1.c + INTERFACES: + ERRORESTIM: + DEPRECATED: + PASSTESTS: + + - bessel_Kn.c + INTERFACES: + ERRORESTIM: + DEPRECATED: + PASSTESTS: + + - bessel_Knu.c + INTERFACES: + ERRORESTIM: + DEPRECATED: + PASSTESTS: + + - bessel_Y0.c + INTERFACES: + ERRORESTIM: + DEPRECATED: + PASSTESTS: + + - bessel_Y1.c + INTERFACES: + ERRORESTIM: + DEPRECATED: + PASSTESTS: + + - bessel_Yn.c + INTERFACES: + ERRORESTIM: + DEPRECATED: + PASSTESTS: + + - bessel_Ynu.c + INTERFACES: + ERRORESTIM: + DEPRECATED: + PASSTESTS: + + - bessel_amp_phase.c + INTERFACES: + ERRORESTIM: + DEPRECATED: + PASSTESTS: + + - bessel_i.c + INTERFACES: + ERRORESTIM: + DEPRECATED: + PASSTESTS: + + - bessel_j.c + INTERFACES: + ERRORESTIM: + DEPRECATED: + PASSTESTS: + + - bessel_k.c + INTERFACES: + ERRORESTIM: + DEPRECATED: + PASSTESTS: + + - bessel_olver.c + INTERFACES: + ERRORESTIM: + DEPRECATED: + PASSTESTS: + + - bessel_sequence.c + INTERFACES: + ERRORESTIM: + DEPRECATED: + PASSTESTS: + + - bessel_temme.c + INTERFACES: + ERRORESTIM: + DEPRECATED: + PASSTESTS: + + - bessel_y.c + INTERFACES: + ERRORESTIM: + DEPRECATED: + PASSTESTS: + + - bessel_zero.c + INTERFACES: + ERRORESTIM: + DEPRECATED: + PASSTESTS: + + - beta.c + INTERFACES: + ERRORESTIM: + DEPRECATED: + PASSTESTS: + + - chebyshev.c + INTERFACES: + ERRORESTIM: + DEPRECATED: + PASSTESTS: + + - clausen.c + INTERFACES: + ERRORESTIM: + DEPRECATED: + PASSTESTS: + + - coulomb.c + INTERFACES: + ERRORESTIM: + DEPRECATED: + PASSTESTS: + + - coulomb_bound.c + INTERFACES: + ERRORESTIM: + DEPRECATED: + PASSTESTS: + + - coupling.c + INTERFACES: + ERRORESTIM: + DEPRECATED: + PASSTESTS: + + - dawson.c + INTERFACES: + ERRORESTIM: + DEPRECATED: + PASSTESTS: + + - debye.c + INTERFACES: + ERRORESTIM: + DEPRECATED: + PASSTESTS: + + - dilog.c + INTERFACES: + ERRORESTIM: + DEPRECATED: + PASSTESTS: + + - elementary.c + INTERFACES: + ERRORESTIM: + DEPRECATED: + PASSTESTS: + + - ellint.c + INTERFACES: + ERRORESTIM: + DEPRECATED: + PASSTESTS: + + - elljac.c + INTERFACES: + ERRORESTIM: + DEPRECATED: + PASSTESTS: + + - erfc.c + INTERFACES: + ERRORESTIM: + DEPRECATED: + PASSTESTS: + + - exp.c + INTERFACES: + ERRORESTIM: + DEPRECATED: + PASSTESTS: + + - expint.c + INTERFACES: + ERRORESTIM: + DEPRECATED: + PASSTESTS: + + - expint3.c + INTERFACES: + ERRORESTIM: + DEPRECATED: + PASSTESTS: + + - fermi_dirac.c + INTERFACES: + ERRORESTIM: + DEPRECATED: + PASSTESTS: + + - gamma.c + INTERFACES: + ERRORESTIM: + DEPRECATED: + PASSTESTS: + + - gamma_inc.c + INTERFACES: + ERRORESTIM: + DEPRECATED: + PASSTESTS: + + - gegenbauer.c + INTERFACES: + ERRORESTIM: + DEPRECATED: + PASSTESTS: + + - hyperg.c + INTERFACES: + ERRORESTIM: + DEPRECATED: + PASSTESTS: + + - hyperg_0F1.c + INTERFACES: + ERRORESTIM: + DEPRECATED: + PASSTESTS: + + - hyperg_1F1.c + + - hyperg_2F0.c + INTERFACES: + ERRORESTIM: + DEPRECATED: + PASSTESTS: + + - hyperg_2F1.c + INTERFACES: + ERRORESTIM: + DEPRECATED: + PASSTESTS: + + - hyperg_U.c + INTERFACES: + ERRORESTIM: + DEPRECATED: + PASSTESTS: + + - laguerre.c + INTERFACES: + ERRORESTIM: + DEPRECATED: + PASSTESTS: + + - legendre_H3d.c + INTERFACES: + ERRORESTIM: + DEPRECATED: + PASSTESTS: + + - legendre_Qn.c + INTERFACES: + ERRORESTIM: + DEPRECATED: + PASSTESTS: + + - legendre_con.c + INTERFACES: + ERRORESTIM: + DEPRECATED: + PASSTESTS: + + - legendre_poly.c + INTERFACES: + ERRORESTIM: + DEPRECATED: + PASSTESTS: + + - log.c + INTERFACES: + ERRORESTIM: + DEPRECATED: + PASSTESTS: + + - poch.c + INTERFACES: + ERRORESTIM: + DEPRECATED: + PASSTESTS: + + - poly.c + INTERFACES: + ERRORESTIM: + DEPRECATED: + PASSTESTS: + + - pow_int.c + INTERFACES: + ERRORESTIM: + DEPRECATED: + PASSTESTS: + + - psi.c + INTERFACES: + ERRORESTIM: + DEPRECATED: + PASSTESTS: + + - result.c + INTERFACES: + ERRORESTIM: + DEPRECATED: + PASSTESTS: + + - shint.c + INTERFACES: + ERRORESTIM: + DEPRECATED: + PASSTESTS: + + - sinint.c + INTERFACES: + ERRORESTIM: + DEPRECATED: + PASSTESTS: + + - synchrotron.c + INTERFACES: + ERRORESTIM: + DEPRECATED: + PASSTESTS: + + - transport.c + INTERFACES: + ERRORESTIM: + DEPRECATED: + PASSTESTS: + + - trig.c + INTERFACES: + ERRORESTIM: + DEPRECATED: + PASSTESTS: + + - zeta.c + INTERFACES: + ERRORESTIM: + DEPRECATED: + PASSTESTS: + + + +---------------------------------------------------------------------- + +The following are important but probably will +not see completion before a 1.0 level release. + +* Incomplete Fermi-Dirac functions. + Other Fermi-Dirac functions, including the + generic 1/2-integer case, which was not done. + +* Implement the low-energy regime for the Coulomb + wave functions. This is fairly well understood in + the recent literature but will require some + detailed work. Specifically this means creating + a drop-in replacement for coulomb_jwkb() which + is controlled and extensible. + +* General Legendre functions (at least on the cut). + This subsumes the toroidal functions, so we need not + consider those separately. SLATEC code exists (originally + due to Olver+Smith). + +* Characterize the algorithms. A significant fraction of + the code is home-grown and it should be reviewed by + other parties. + + +---------------------------------------------------------------------- + +The following are extra features which need not +be implemented for a version 1.0 release. + +* Spheroidal wave functions. + +* Mathieu functions. + +* Weierstrass elliptic functions. + + +---------------------------------------------------------------------- + +Improve accuracy of ERF + +NNTP-Posting-Date: Thu, 11 Sep 2003 07:41:42 -0500 +From: "George Marsaglia" +Newsgroups: comp.lang.c +References: +Subject: Re: When (32-bit) double precision isn't precise enough +Date: Thu, 11 Sep 2003 08:41:40 -0400 +X-Priority: 3 +X-MSMail-Priority: Normal +X-Newsreader: Microsoft Outlook Express 6.00.2800.1158 +X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1165 +Message-ID: +Lines: 265 +NNTP-Posting-Host: 68.35.247.101 +X-Trace: sv3-4YY+jkhhdeQvGKAREa99vDBFHJoKVqVBdUTSuRxA71OwlgxX0uUFnKYs54FlnUs0Xb6BRngKigkd75d!tKin8l8rAQKylaP+4vzTI3AO33bivOw1lKDZUUtXe4lUMW1qn+goUp/Pfksstg== +X-Complaints-To: abuse@comcast.net +X-DMCA-Complaints-To: dmca@comcast.net +X-Abuse-and-DMCA-Info: Please be sure to forward a copy of ALL headers +X-Abuse-and-DMCA-Info: Otherwise we will be unable to process your complaint properly +X-Postfilter: 1.1 + + +Why most of those who deal with the normal integral in probability +theory are still stuck with the historical baggage of the error function +is a puzzle to me, as is the poor quality of the results one gets from +standard library implementations of erf(). (One of the most common + is based on ALGORITHM AS66, APPL. STATIST.(1973) Vol.22, .424 by HILL, + which gives only 6-8 digit accuracy). + +Here is a listing of my method: + +/* +Marsaglia Complementary Normal Distribution Function + cPhi(x) = integral from x to infinity of exp(-.5*t^2)/sqrt(2*pi), x<15 + 15-digit accuracy for x<15, returns 0 for x>15. +#include +*/ + +double cPhi(double x){ +long double v[]={0.,.65567954241879847154L, +.42136922928805447322L,.30459029871010329573L, +.23665238291356067062L,.19280810471531576488L, +.16237766089686746182L,.14010418345305024160L, +.12313196325793229628L,.10978728257830829123L, +.99028596471731921395e-1L,.90175675501064682280e-1L, +.82766286501369177252e-1L,.76475761016248502993e-1L, +.71069580538852107091e-1L,.66374235823250173591e-1L}; +long double h,a,b,z,t,sum,pwr; +int i,j; + if(x>15.) return (0.); + if(x<-15.) return (1.); + j=fabs(x)+1.; + z=j; + h=fabs(x)-z; + a=v[j]; + b=z*a-1.; + pwr=1.; + sum=a+h*b; + for(i=2;i<60;i+=2){ + a=(a+z*b)/i; + b=(b+z*a)/(i+1); + pwr=pwr*h*h; + t=sum; + sum=sum+pwr*(a+h*b); + if(sum==t) break; } + sum=sum*exp(-.5*x*x-.91893853320467274178L); + if(x<0.) sum=1.-sum; + return ((double) sum); + } +*/ + end of listing +*/ + +The method is based on defining phi(x)=exp(-x^2)/sqrt(2pi) and + + R(x)=cPhi(x)/phi(x). + +The function R(x) is well-behaved and terms of its Taylor +series are readily obtained by a two-term recursion. With an accurate +representation of R(x) at ,say, x=0,1,2,...,15, a simple evaluation +of the Taylor series at intermediate points provides up to +15 digits of accuracy. +An article describing the method will be in the new version of +my Diehard CDROM. A new version of the Diehard tests +of randomness (but not yet the new DVDROM) is at + http://www.csis.hku.hk/~diehard/ + + + George Marsaglia \ No newline at end of file diff --git a/gsl-2.5/specfunc/airy.c b/gsl-2.5/specfunc/airy.c new file mode 100644 index 00000000..18b78107 --- /dev/null +++ b/gsl-2.5/specfunc/airy.c @@ -0,0 +1,869 @@ +/* specfunc/airy.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ + +#include +#include +#include +#include +#include + +#include "error.h" +#include "check.h" + +#include "chebyshev.h" +#include "cheb_eval_mode.c" + +/*-*-*-*-*-*-*-*-*-*-*-* Private Section *-*-*-*-*-*-*-*-*-*-*-*/ + + +/* chebyshev expansions for Airy modulus and phase + based on SLATEC r9aimp() + + Series for AM21 on the interval -1.25000D-01 to 0. + with weighted error 2.89E-17 + log weighted error 16.54 + significant figures required 14.15 + decimal places required 17.34 + + Series for ATH1 on the interval -1.25000D-01 to 0. + with weighted error 2.53E-17 + log weighted error 16.60 + significant figures required 15.15 + decimal places required 17.38 + + Series for AM22 on the interval -1.00000D+00 to -1.25000D-01 + with weighted error 2.99E-17 + log weighted error 16.52 + significant figures required 14.57 + decimal places required 17.28 + + Series for ATH2 on the interval -1.00000D+00 to -1.25000D-01 + with weighted error 2.57E-17 + log weighted error 16.59 + significant figures required 15.07 + decimal places required 17.34 +*/ + +static double am21_data[37] = { + 0.0065809191761485, + 0.0023675984685722, + 0.0001324741670371, + 0.0000157600904043, + 0.0000027529702663, + 0.0000006102679017, + 0.0000001595088468, + 0.0000000471033947, + 0.0000000152933871, + 0.0000000053590722, + 0.0000000020000910, + 0.0000000007872292, + 0.0000000003243103, + 0.0000000001390106, + 0.0000000000617011, + 0.0000000000282491, + 0.0000000000132979, + 0.0000000000064188, + 0.0000000000031697, + 0.0000000000015981, + 0.0000000000008213, + 0.0000000000004296, + 0.0000000000002284, + 0.0000000000001232, + 0.0000000000000675, + 0.0000000000000374, + 0.0000000000000210, + 0.0000000000000119, + 0.0000000000000068, + 0.0000000000000039, + 0.0000000000000023, + 0.0000000000000013, + 0.0000000000000008, + 0.0000000000000005, + 0.0000000000000003, + 0.0000000000000001, + 0.0000000000000001 +}; +static cheb_series am21_cs = { + am21_data, + 36, + -1, 1, + 20 +}; + +static double ath1_data[36] = { + -0.07125837815669365, + -0.00590471979831451, + -0.00012114544069499, + -0.00000988608542270, + -0.00000138084097352, + -0.00000026142640172, + -0.00000006050432589, + -0.00000001618436223, + -0.00000000483464911, + -0.00000000157655272, + -0.00000000055231518, + -0.00000000020545441, + -0.00000000008043412, + -0.00000000003291252, + -0.00000000001399875, + -0.00000000000616151, + -0.00000000000279614, + -0.00000000000130428, + -0.00000000000062373, + -0.00000000000030512, + -0.00000000000015239, + -0.00000000000007758, + -0.00000000000004020, + -0.00000000000002117, + -0.00000000000001132, + -0.00000000000000614, + -0.00000000000000337, + -0.00000000000000188, + -0.00000000000000105, + -0.00000000000000060, + -0.00000000000000034, + -0.00000000000000020, + -0.00000000000000011, + -0.00000000000000007, + -0.00000000000000004, + -0.00000000000000002 +}; +static cheb_series ath1_cs = { + ath1_data, + 35, + -1, 1, + 15 +}; + +static double am22_data[33] = { + -0.01562844480625341, + 0.00778336445239681, + 0.00086705777047718, + 0.00015696627315611, + 0.00003563962571432, + 0.00000924598335425, + 0.00000262110161850, + 0.00000079188221651, + 0.00000025104152792, + 0.00000008265223206, + 0.00000002805711662, + 0.00000000976821090, + 0.00000000347407923, + 0.00000000125828132, + 0.00000000046298826, + 0.00000000017272825, + 0.00000000006523192, + 0.00000000002490471, + 0.00000000000960156, + 0.00000000000373448, + 0.00000000000146417, + 0.00000000000057826, + 0.00000000000022991, + 0.00000000000009197, + 0.00000000000003700, + 0.00000000000001496, + 0.00000000000000608, + 0.00000000000000248, + 0.00000000000000101, + 0.00000000000000041, + 0.00000000000000017, + 0.00000000000000007, + 0.00000000000000002 +}; +static cheb_series am22_cs = { + am22_data, + 32, + -1, 1, + 15 +}; + +static double ath2_data[32] = { + 0.00440527345871877, + -0.03042919452318455, + -0.00138565328377179, + -0.00018044439089549, + -0.00003380847108327, + -0.00000767818353522, + -0.00000196783944371, + -0.00000054837271158, + -0.00000016254615505, + -0.00000005053049981, + -0.00000001631580701, + -0.00000000543420411, + -0.00000000185739855, + -0.00000000064895120, + -0.00000000023105948, + -0.00000000008363282, + -0.00000000003071196, + -0.00000000001142367, + -0.00000000000429811, + -0.00000000000163389, + -0.00000000000062693, + -0.00000000000024260, + -0.00000000000009461, + -0.00000000000003716, + -0.00000000000001469, + -0.00000000000000584, + -0.00000000000000233, + -0.00000000000000093, + -0.00000000000000037, + -0.00000000000000015, + -0.00000000000000006, + -0.00000000000000002 +}; +static cheb_series ath2_cs = { + ath2_data, + 31, + -1, 1, + 16 +}; + + +/* Airy modulus and phase for x < -1 */ +static +int +airy_mod_phase(const double x, gsl_mode_t mode, gsl_sf_result * mod, gsl_sf_result * phase) +{ + gsl_sf_result result_m; + gsl_sf_result result_p; + double m, p; + double sqx; + + if(x < -2.0) { + double z = 16.0/(x*x*x) + 1.0; + cheb_eval_mode_e(&am21_cs, z, mode, &result_m); + cheb_eval_mode_e(&ath1_cs, z, mode, &result_p); + } + else if(x <= -1.0) { + double z = (16.0/(x*x*x) + 9.0)/7.0; + cheb_eval_mode_e(&am22_cs, z, mode, &result_m); + cheb_eval_mode_e(&ath2_cs, z, mode, &result_p); + } + else { + mod->val = 0.0; + mod->err = 0.0; + phase->val = 0.0; + phase->err = 0.0; + GSL_ERROR ("x is greater than 1.0", GSL_EDOM); + } + + m = 0.3125 + result_m.val; + p = -0.625 + result_p.val; + + sqx = sqrt(-x); + + mod->val = sqrt(m/sqx); + mod->err = fabs(mod->val) * (GSL_DBL_EPSILON + fabs(result_m.err/result_m.val)); + phase->val = M_PI_4 - x*sqx * p; + phase->err = fabs(phase->val) * (GSL_DBL_EPSILON + fabs(result_p.err/result_p.val)); + + return GSL_SUCCESS; +} + + + +/* Chebyshev series for Ai(x) with x in [-1,1] + based on SLATEC ai(x) + + series for aif on the interval -1.00000d+00 to 1.00000d+00 + with weighted error 1.09e-19 + log weighted error 18.96 + significant figures required 17.76 + decimal places required 19.44 + + series for aig on the interval -1.00000d+00 to 1.00000d+00 + with weighted error 1.51e-17 + log weighted error 16.82 + significant figures required 15.19 + decimal places required 17.27 + */ +static double ai_data_f[9] = { + -0.03797135849666999750, + 0.05919188853726363857, + 0.00098629280577279975, + 0.00000684884381907656, + 0.00000002594202596219, + 0.00000000006176612774, + 0.00000000000010092454, + 0.00000000000000012014, + 0.00000000000000000010 +}; +static cheb_series aif_cs = { + ai_data_f, + 8, + -1, 1, + 8 +}; + +static double ai_data_g[8] = { + 0.01815236558116127, + 0.02157256316601076, + 0.00025678356987483, + 0.00000142652141197, + 0.00000000457211492, + 0.00000000000952517, + 0.00000000000001392, + 0.00000000000000001 +}; +static cheb_series aig_cs = { + ai_data_g, + 7, + -1, 1, + 7 +}; + + +/* Chebvyshev series for Bi(x) with x in [-1,1] + based on SLATEC bi(x) + + series for bif on the interval -1.00000d+00 to 1.00000d+00 + with weighted error 1.88e-19 + log weighted error 18.72 + significant figures required 17.74 + decimal places required 19.20 + + series for big on the interval -1.00000d+00 to 1.00000d+00 + with weighted error 2.61e-17 + log weighted error 16.58 + significant figures required 15.17 + decimal places required 17.03 + */ +static double data_bif[9] = { + -0.01673021647198664948, + 0.10252335834249445610, + 0.00170830925073815165, + 0.00001186254546774468, + 0.00000004493290701779, + 0.00000000010698207143, + 0.00000000000017480643, + 0.00000000000000020810, + 0.00000000000000000018 +}; +static cheb_series bif_cs = { + data_bif, + 8, + -1, 1, + 8 +}; + +static double data_big[8] = { + 0.02246622324857452, + 0.03736477545301955, + 0.00044476218957212, + 0.00000247080756363, + 0.00000000791913533, + 0.00000000001649807, + 0.00000000000002411, + 0.00000000000000002 +}; +static cheb_series big_cs = { + data_big, + 7, + -1, 1, + 7 +}; + + +/* Chebyshev series for Bi(x) with x in [1,8] + based on SLATEC bi(x) + */ +static double data_bif2[10] = { + 0.0998457269381604100, + 0.4786249778630055380, + 0.0251552119604330118, + 0.0005820693885232645, + 0.0000074997659644377, + 0.0000000613460287034, + 0.0000000003462753885, + 0.0000000000014288910, + 0.0000000000000044962, + 0.0000000000000000111 +}; +static cheb_series bif2_cs = { + data_bif2, + 9, + -1, 1, + 9 +}; + +static double data_big2[10] = { + 0.033305662145514340, + 0.161309215123197068, + 0.0063190073096134286, + 0.0001187904568162517, + 0.0000013045345886200, + 0.0000000093741259955, + 0.0000000000474580188, + 0.0000000000001783107, + 0.0000000000000005167, + 0.0000000000000000011 +}; +static cheb_series big2_cs = { + data_big2, + 9, + -1, 1, + 9 +}; + + +/* chebyshev for Ai(x) asymptotic factor + based on SLATEC aie() + + Series for AIP on the interval 0. to 1.00000D+00 + with weighted error 5.10E-17 + log weighted error 16.29 + significant figures required 14.41 + decimal places required 17.06 + + [GJ] Sun Apr 19 18:14:31 EDT 1998 + There was something wrong with these coefficients. I was getting + errors after 3 or 4 digits. So I recomputed this table. Now I get + double precision agreement with Mathematica. But it does not seem + possible that the small differences here would account for the + original discrepancy. There must have been something wrong with my + original usage... +*/ +static double data_aip[36] = { + -0.0187519297793867540198, + -0.0091443848250055004725, + 0.0009010457337825074652, + -0.0001394184127221491507, + 0.0000273815815785209370, + -0.0000062750421119959424, + 0.0000016064844184831521, + -0.0000004476392158510354, + 0.0000001334635874651668, + -0.0000000420735334263215, + 0.0000000139021990246364, + -0.0000000047831848068048, + 0.0000000017047897907465, + -0.0000000006268389576018, + 0.0000000002369824276612, + -0.0000000000918641139267, + 0.0000000000364278543037, + -0.0000000000147475551725, + 0.0000000000060851006556, + -0.0000000000025552772234, + 0.0000000000010906187250, + -0.0000000000004725870319, + 0.0000000000002076969064, + -0.0000000000000924976214, + 0.0000000000000417096723, + -0.0000000000000190299093, + 0.0000000000000087790676, + -0.0000000000000040927557, + 0.0000000000000019271068, + -0.0000000000000009160199, + 0.0000000000000004393567, + -0.0000000000000002125503, + 0.0000000000000001036735, + -0.0000000000000000509642, + 0.0000000000000000252377, + -0.0000000000000000125793 +/* + -.0187519297793868 + -.0091443848250055, + .0009010457337825, + -.0001394184127221, + .0000273815815785, + -.0000062750421119, + .0000016064844184, + -.0000004476392158, + .0000001334635874, + -.0000000420735334, + .0000000139021990, + -.0000000047831848, + .0000000017047897, + -.0000000006268389, + .0000000002369824, + -.0000000000918641, + .0000000000364278, + -.0000000000147475, + .0000000000060851, + -.0000000000025552, + .0000000000010906, + -.0000000000004725, + .0000000000002076, + -.0000000000000924, + .0000000000000417, + -.0000000000000190, + .0000000000000087, + -.0000000000000040, + .0000000000000019, + -.0000000000000009, + .0000000000000004, + -.0000000000000002, + .0000000000000001, + -.0000000000000000 +*/ +}; +static cheb_series aip_cs = { + data_aip, + 35, + -1, 1, + 17 +}; + + +/* chebyshev for Bi(x) asymptotic factor + based on SLATEC bie() + + Series for BIP on the interval 1.25000D-01 to 3.53553D-01 + with weighted error 1.91E-17 + log weighted error 16.72 + significant figures required 15.35 + decimal places required 17.41 + + Series for BIP2 on the interval 0. to 1.25000D-01 + with weighted error 1.05E-18 + log weighted error 17.98 + significant figures required 16.74 + decimal places required 18.71 +*/ +static double data_bip[24] = { + -0.08322047477943447, + 0.01146118927371174, + 0.00042896440718911, + -0.00014906639379950, + -0.00001307659726787, + 0.00000632759839610, + -0.00000042226696982, + -0.00000019147186298, + 0.00000006453106284, + -0.00000000784485467, + -0.00000000096077216, + 0.00000000070004713, + -0.00000000017731789, + 0.00000000002272089, + 0.00000000000165404, + -0.00000000000185171, + 0.00000000000059576, + -0.00000000000012194, + 0.00000000000001334, + 0.00000000000000172, + -0.00000000000000145, + 0.00000000000000049, + -0.00000000000000011, + 0.00000000000000001 +}; +static cheb_series bip_cs = { + data_bip, + 23, + -1, 1, + 14 +}; + +static double data_bip2[29] = { + -0.113596737585988679, + 0.0041381473947881595, + 0.0001353470622119332, + 0.0000104273166530153, + 0.0000013474954767849, + 0.0000001696537405438, + -0.0000000100965008656, + -0.0000000167291194937, + -0.0000000045815364485, + 0.0000000003736681366, + 0.0000000005766930320, + 0.0000000000621812650, + -0.0000000000632941202, + -0.0000000000149150479, + 0.0000000000078896213, + 0.0000000000024960513, + -0.0000000000012130075, + -0.0000000000003740493, + 0.0000000000002237727, + 0.0000000000000474902, + -0.0000000000000452616, + -0.0000000000000030172, + 0.0000000000000091058, + -0.0000000000000009814, + -0.0000000000000016429, + 0.0000000000000005533, + 0.0000000000000002175, + -0.0000000000000001737, + -0.0000000000000000010 +}; +static cheb_series bip2_cs = { + data_bip2, + 28, + -1, 1, + 10 +}; + + +/* assumes x >= 1.0 */ +inline static int +airy_aie(const double x, gsl_mode_t mode, gsl_sf_result * result) +{ + double sqx = sqrt(x); + double z = 2.0/(x*sqx) - 1.0; + double y = sqrt(sqx); + gsl_sf_result result_c; + cheb_eval_mode_e(&aip_cs, z, mode, &result_c); + result->val = (0.28125 + result_c.val)/y; + result->err = result_c.err/y + GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; +} + +/* assumes x >= 2.0 */ +static int airy_bie(const double x, gsl_mode_t mode, gsl_sf_result * result) +{ + const double ATR = 8.7506905708484345; + const double BTR = -2.0938363213560543; + + if(x < 4.0) { + double sqx = sqrt(x); + double z = ATR/(x*sqx) + BTR; + double y = sqrt(sqx); + gsl_sf_result result_c; + cheb_eval_mode_e(&bip_cs, z, mode, &result_c); + result->val = (0.625 + result_c.val)/y; + result->err = result_c.err/y + GSL_DBL_EPSILON * fabs(result->val); + } + else { + double sqx = sqrt(x); + double z = 16.0/(x*sqx) - 1.0; + double y = sqrt(sqx); + gsl_sf_result result_c; + cheb_eval_mode_e(&bip2_cs, z, mode, &result_c); + result->val = (0.625 + result_c.val)/y; + result->err = result_c.err/y + GSL_DBL_EPSILON * fabs(result->val); + } + + return GSL_SUCCESS; +} + + +/*-*-*-*-*-*-*-*-*-*-*-* Functions with Error Codes *-*-*-*-*-*-*-*-*-*-*-*/ + +int +gsl_sf_airy_Ai_e(const double x, const gsl_mode_t mode, gsl_sf_result * result) +{ + /* CHECK_POINTER(result) */ + + if(x < -1.0) { + gsl_sf_result mod; + gsl_sf_result theta; + gsl_sf_result cos_result; + int stat_mp = airy_mod_phase(x, mode, &mod, &theta); + int stat_cos = gsl_sf_cos_err_e(theta.val, theta.err, &cos_result); + result->val = mod.val * cos_result.val; + result->err = fabs(mod.val * cos_result.err) + fabs(cos_result.val * mod.err); + result->err += GSL_DBL_EPSILON * fabs(result->val); + return GSL_ERROR_SELECT_2(stat_mp, stat_cos); + } + else if(x <= 1.0) { + const double z = x*x*x; + gsl_sf_result result_c0; + gsl_sf_result result_c1; + cheb_eval_mode_e(&aif_cs, z, mode, &result_c0); + cheb_eval_mode_e(&aig_cs, z, mode, &result_c1); + result->val = 0.375 + (result_c0.val - x*(0.25 + result_c1.val)); + result->err = result_c0.err + fabs(x*result_c1.err); + result->err += GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else { + double x32 = x * sqrt(x); + double s = exp(-2.0*x32/3.0); + gsl_sf_result result_aie; + int stat_aie = airy_aie(x, mode, &result_aie); + result->val = result_aie.val * s; + result->err = result_aie.err * s + result->val * x32 * GSL_DBL_EPSILON; + result->err += GSL_DBL_EPSILON * fabs(result->val); + CHECK_UNDERFLOW(result); + return stat_aie; + } +} + + +int +gsl_sf_airy_Ai_scaled_e(const double x, gsl_mode_t mode, gsl_sf_result * result) +{ + /* CHECK_POINTER(result) */ + + if(x < -1.0) { + gsl_sf_result mod; + gsl_sf_result theta; + gsl_sf_result cos_result; + int stat_mp = airy_mod_phase(x, mode, &mod, &theta); + int stat_cos = gsl_sf_cos_err_e(theta.val, theta.err, &cos_result); + result->val = mod.val * cos_result.val; + result->err = fabs(mod.val * cos_result.err) + fabs(cos_result.val * mod.err); + result->err += GSL_DBL_EPSILON * fabs(result->val); + return GSL_ERROR_SELECT_2(stat_mp, stat_cos); + } + else if(x <= 1.0) { + const double z = x*x*x; + gsl_sf_result result_c0; + gsl_sf_result result_c1; + cheb_eval_mode_e(&aif_cs, z, mode, &result_c0); + cheb_eval_mode_e(&aig_cs, z, mode, &result_c1); + result->val = 0.375 + (result_c0.val - x*(0.25 + result_c1.val)); + result->err = result_c0.err + fabs(x*result_c1.err); + result->err += GSL_DBL_EPSILON * fabs(result->val); + + if(x > 0.0) { + const double scale = exp(2.0/3.0 * sqrt(z)); + result->val *= scale; + result->err *= scale; + } + + return GSL_SUCCESS; + } + else { + return airy_aie(x, mode, result); + } +} + + +int gsl_sf_airy_Bi_e(const double x, gsl_mode_t mode, gsl_sf_result * result) +{ + /* CHECK_POINTER(result) */ + if(x < -1.0) { + gsl_sf_result mod; + gsl_sf_result theta; + gsl_sf_result sin_result; + int stat_mp = airy_mod_phase(x, mode, &mod, &theta); + int stat_sin = gsl_sf_sin_err_e(theta.val, theta.err, &sin_result); + result->val = mod.val * sin_result.val; + result->err = fabs(mod.val * sin_result.err) + fabs(sin_result.val * mod.err); + result->err += GSL_DBL_EPSILON * fabs(result->val); + return GSL_ERROR_SELECT_2(stat_mp, stat_sin); + } + else if(x < 1.0) { + const double z = x*x*x; + gsl_sf_result result_c0; + gsl_sf_result result_c1; + cheb_eval_mode_e(&bif_cs, z, mode, &result_c0); + cheb_eval_mode_e(&big_cs, z, mode, &result_c1); + result->val = 0.625 + result_c0.val + x*(0.4375 + result_c1.val); + result->err = result_c0.err + fabs(x * result_c1.err); + result->err += GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else if(x <= 2.0) { + const double z = (2.0*x*x*x - 9.0)/7.0; + gsl_sf_result result_c0; + gsl_sf_result result_c1; + cheb_eval_mode_e(&bif2_cs, z, mode, &result_c0); + cheb_eval_mode_e(&big2_cs, z, mode, &result_c1); + result->val = 1.125 + result_c0.val + x*(0.625 + result_c1.val); + result->err = result_c0.err + fabs(x * result_c1.err); + result->err += GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else { + const double y = 2.0*x*sqrt(x)/3.0; + const double s = exp(y); + + if(y > GSL_LOG_DBL_MAX - 1.0) { + OVERFLOW_ERROR(result); + } + else { + gsl_sf_result result_bie; + int stat_bie = airy_bie(x, mode, &result_bie); + result->val = result_bie.val * s; + result->err = result_bie.err * s + fabs(1.5*y * (GSL_DBL_EPSILON * result->val)); + result->err += GSL_DBL_EPSILON * fabs(result->val); + return stat_bie; + } + } +} + + +int +gsl_sf_airy_Bi_scaled_e(const double x, gsl_mode_t mode, gsl_sf_result * result) +{ + /* CHECK_POINTER(result) */ + + if(x < -1.0) { + gsl_sf_result mod; + gsl_sf_result theta; + gsl_sf_result sin_result; + int stat_mp = airy_mod_phase(x, mode, &mod, &theta); + int stat_sin = gsl_sf_sin_err_e(theta.val, theta.err, &sin_result); + result->val = mod.val * sin_result.val; + result->err = fabs(mod.val * sin_result.err) + fabs(sin_result.val * mod.err); + result->err += GSL_DBL_EPSILON * fabs(result->val); + return GSL_ERROR_SELECT_2(stat_mp, stat_sin); + } + else if(x < 1.0) { + const double z = x*x*x; + gsl_sf_result result_c0; + gsl_sf_result result_c1; + cheb_eval_mode_e(&bif_cs, z, mode, &result_c0); + cheb_eval_mode_e(&big_cs, z, mode, &result_c1); + result->val = 0.625 + result_c0.val + x*(0.4375 + result_c1.val); + result->err = result_c0.err + fabs(x * result_c1.err); + result->err += GSL_DBL_EPSILON * fabs(result->val); + if(x > 0.0) { + const double scale = exp(-2.0/3.0 * sqrt(z)); + result->val *= scale; + result->err *= scale; + } + return GSL_SUCCESS; + } + else if(x <= 2.0) { + const double x3 = x*x*x; + const double z = (2.0*x3 - 9.0)/7.0; + const double s = exp(-2.0/3.0 * sqrt(x3)); + gsl_sf_result result_c0; + gsl_sf_result result_c1; + cheb_eval_mode_e(&bif2_cs, z, mode, &result_c0); + cheb_eval_mode_e(&big2_cs, z, mode, &result_c1); + result->val = s * (1.125 + result_c0.val + x*(0.625 + result_c1.val)); + result->err = s * (result_c0.err + fabs(x * result_c1.err)); + result->err += GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else { + return airy_bie(x, mode, result); + } +} + + +/*-*-*-*-*-*-*-*-*-* Functions w/ Natural Prototypes *-*-*-*-*-*-*-*-*-*-*/ + +#include "eval.h" + +double gsl_sf_airy_Ai(const double x, gsl_mode_t mode) +{ + EVAL_RESULT(gsl_sf_airy_Ai_e(x, mode, &result)); +} + +double gsl_sf_airy_Ai_scaled(const double x, gsl_mode_t mode) +{ + EVAL_RESULT(gsl_sf_airy_Ai_scaled_e(x, mode, &result)); +} + +double gsl_sf_airy_Bi(const double x, gsl_mode_t mode) +{ + EVAL_RESULT(gsl_sf_airy_Bi_e(x, mode, &result)); +} + +double gsl_sf_airy_Bi_scaled(const double x, gsl_mode_t mode) +{ + EVAL_RESULT(gsl_sf_airy_Bi_scaled_e(x, mode, &result)); +} + + diff --git a/gsl-2.5/specfunc/airy.lo b/gsl-2.5/specfunc/airy.lo new file mode 100644 index 00000000..3497803d --- /dev/null +++ b/gsl-2.5/specfunc/airy.lo @@ -0,0 +1,12 @@ +# airy.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/airy.o' + +# Name of the non-PIC object +non_pic_object='airy.o' + diff --git a/gsl-2.5/specfunc/airy_der.c b/gsl-2.5/specfunc/airy_der.c new file mode 100644 index 00000000..45a1c1b7 --- /dev/null +++ b/gsl-2.5/specfunc/airy_der.c @@ -0,0 +1,886 @@ +/* specfunc/airy_der.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ + +#include +#include +#include +#include +#include + +#include "error.h" + +#include "chebyshev.h" +#include "cheb_eval_mode.c" + +/*-*-*-*-*-*-*-*-*-*-*-* Private Section *-*-*-*-*-*-*-*-*-*-*-*/ + + +/* based on SLATEC aide.f, bide.f, aid.f, bid.f, r9admp.f */ + +/* + series for aif on the interval -1.00000e+00 to 1.00000e+00 + with weighted error 5.22e-18 + log weighted error 17.28 + significant figures required 16.01 + decimal places required 17.73 +*/ +static double aif_data[8] = { + 0.10527461226531408809, + 0.01183613628152997844, + 0.00012328104173225664, + 0.00000062261225638140, + 0.00000000185298887844, + 0.00000000000363328873, + 0.00000000000000504622, + 0.00000000000000000522 +}; +static cheb_series aif_cs = { + aif_data, + 7, + -1, 1, + 7 +}; + +/* + series for aig on the interval -1.00000e+00 to 1.00000e+00 + with weighted error 3.14e-19 + log weighted error 18.50 + significant figures required 17.44 + decimal places required 18.98 +*/ +static double aig_data[9] = { + 0.021233878150918666852, + 0.086315930335214406752, + 0.001797594720383231358, + 0.000014265499875550693, + 0.000000059437995283683, + 0.000000000152403366479, + 0.000000000000264587660, + 0.000000000000000331562, + 0.000000000000000000314 +}; +static cheb_series aig_cs = { + aig_data, + 8, + -1, 1, + 8 +}; + +/* + series for aip2 on the interval 0.00000e+00 to 1.25000e-01 + with weighted error 2.15e-17 + log weighted error 16.67 + significant figures required 14.27 + decimal places required 17.26 +*/ +static double aip2_data[15] = { + 0.0065457691989713757, + 0.0023833724120774592, + -0.0000430700770220586, + 0.0000015629125858629, + -0.0000000815417186163, + 0.0000000054103738057, + -0.0000000004284130883, + 0.0000000000389497963, + -0.0000000000039623161, + 0.0000000000004428184, + -0.0000000000000536297, + 0.0000000000000069650, + -0.0000000000000009620, + 0.0000000000000001403, + -0.0000000000000000215 +}; +static cheb_series aip2_cs = { + aip2_data, + 14, + -1, 1, + 9 +}; + +/* + series for aip1 on the interval 1.25000e-01 to 1.00000e+00 + with weighted error 2.60e-17 + log weighted error 16.58 + significant figures required 14.91 + decimal places required 17.28 +*/ +static double aip1_data[25] = { + 0.0358865097808301538, + 0.0114668575627764899, + -0.0007592073583861400, + 0.0000869517610893841, + -0.0000128237294298592, + 0.0000022062695681038, + -0.0000004222295185921, + 0.0000000874686415726, + -0.0000000192773588418, + 0.0000000044668460054, + -0.0000000010790108052, + 0.0000000002700029447, + -0.0000000000696480108, + 0.0000000000184489907, + -0.0000000000050027817, + 0.0000000000013852243, + -0.0000000000003908218, + 0.0000000000001121536, + -0.0000000000000326862, + 0.0000000000000096619, + -0.0000000000000028935, + 0.0000000000000008770, + -0.0000000000000002688, + 0.0000000000000000832, + -0.0000000000000000260 +}; +static cheb_series aip1_cs = { + aip1_data, + 24, + -1, 1, + 14 +}; + + +/* + series for bif on the interval -1.00000e+00 to 1.00000e+00 + with weighted error 9.05e-18 + log weighted error 17.04 + significant figures required 15.83 + decimal places required 17.49 +*/ +static double bif_data[8] = { + 0.1153536790828570243, + 0.0205007894049192875, + 0.0002135290278902876, + 0.0000010783960614677, + 0.0000000032094708833, + 0.0000000000062930407, + 0.0000000000000087403, + 0.0000000000000000090 +}; +static cheb_series bif_cs = { + bif_data, + 7, + -1, 1, + 7 +}; + +/* + series for big on the interval -1.00000e+00 to 1.00000e+00 + with weighted error 5.44e-19 + log weighted error 18.26 + significant figures required 17.46 + decimal places required 18.74 +*/ +static double big_data[9] = { + -0.097196440416443537390, + 0.149503576843167066571, + 0.003113525387121326042, + 0.000024708570579821297, + 0.000000102949627731379, + 0.000000000263970373987, + 0.000000000000458279271, + 0.000000000000000574283, + 0.000000000000000000544 +}; +static cheb_series big_cs = { + big_data, + 8, + -1, 1, + 8 +}; + +/* + series for bif2 on the interval 1.00000e+00 to 8.00000e+00 + with weighted error 3.82e-19 + log weighted error 18.42 + significant figures required 17.68 + decimal places required 18.92 +*/ +static double bif2_data[10] = { + 0.323493987603522033521, + 0.086297871535563559139, + 0.002994025552655397426, + 0.000051430528364661637, + 0.000000525840250036811, + 0.000000003561751373958, + 0.000000000017146864007, + 0.000000000000061663520, + 0.000000000000000171911, + 0.000000000000000000382 +}; +static cheb_series bif2_cs = { + bif2_data, + 9, + -1, 1, + 9 +}; + +/* + series for big2 on the interval 1.00000e+00 to 8.00000e+00 + with weighted error 3.35e-17 + log weighted error 16.48 + significant figures required 16.52 + decimal places required 16.98 +*/ +static double big2_data[10] = { + 1.6062999463621294578, + 0.7449088819876088652, + 0.0470138738610277380, + 0.0012284422062548239, + 0.0000173222412256624, + 0.0000001521901652368, + 0.0000000009113560249, + 0.0000000000039547918, + 0.0000000000000130017, + 0.0000000000000000335 +}; +static cheb_series big2_cs = { + big2_data, + 9, + -1, 1, + 9 +}; + +/* + series for bip2 on the interval 0.00000e+00 to 1.25000e-01 + with weighted error 2.07e-18 + log weighted error 17.69 + significant figures required 16.51 + decimal places required 18.42 +*/ +static double bip2_data[29] = { + -0.13269705443526630495, + -0.00568443626045977481, + -0.00015643601119611610, + -0.00001136737203679562, + -0.00000143464350991284, + -0.00000018098531185164, + 0.00000000926177343611, + 0.00000001710005490721, + 0.00000000476698163504, + -0.00000000035195022023, + -0.00000000058890614316, + -0.00000000006678499608, + 0.00000000006395565102, + 0.00000000001554529427, + -0.00000000000792397000, + -0.00000000000258326243, + 0.00000000000121655048, + 0.00000000000038707207, + -0.00000000000022487045, + -0.00000000000004953477, + 0.00000000000004563782, + 0.00000000000000332998, + -0.00000000000000921750, + 0.00000000000000094157, + 0.00000000000000167154, + -0.00000000000000055134, + -0.00000000000000022369, + 0.00000000000000017487, + 0.00000000000000000207 +}; +static cheb_series bip2_cs = { + bip2_data, + 28, + -1, 1, + 14 +}; + +/* + series for bip1 on the interval 1.25000e-01 to 3.53553e-01 + with weighted error 1.86e-17 + log weighted error 16.73 + significant figures required 15.67 + decimal places required 17.42 +*/ +static double bip1_data[24] = { + -0.1729187351079553719, + -0.0149358492984694364, + -0.0005471104951678566, + 0.0001537966292958408, + 0.0000154353476192179, + -0.0000065434113851906, + 0.0000003728082407879, + 0.0000002072078388189, + -0.0000000658173336470, + 0.0000000074926746354, + 0.0000000011101336884, + -0.0000000007265140553, + 0.0000000001782723560, + -0.0000000000217346352, + -0.0000000000020302035, + 0.0000000000019311827, + -0.0000000000006044953, + 0.0000000000001209450, + -0.0000000000000125109, + -0.0000000000000019917, + 0.0000000000000015154, + -0.0000000000000004977, + 0.0000000000000001155, + -0.0000000000000000186 +}; +static cheb_series bip1_cs = { + bip1_data, + 23, + -1, 1, + 13 +}; + +/* + series for an22 on the interval -1.00000e+00 to -1.25000e-01 + with weighted error 3.30e-17 + log weighted error 16.48 + significant figures required 14.95 + decimal places required 17.24 +*/ +static double an22_data[33] = { + 0.0537418629629794329, + -0.0126661435859883193, + -0.0011924334106593007, + -0.0002032327627275655, + -0.0000446468963075164, + -0.0000113359036053123, + -0.0000031641352378546, + -0.0000009446708886149, + -0.0000002966562236472, + -0.0000000969118892024, + -0.0000000326822538653, + -0.0000000113144618964, + -0.0000000040042691002, + -0.0000000014440333684, + -0.0000000005292853746, + -0.0000000001967763374, + -0.0000000000740800096, + -0.0000000000282016314, + -0.0000000000108440066, + -0.0000000000042074801, + -0.0000000000016459150, + -0.0000000000006486827, + -0.0000000000002574095, + -0.0000000000001027889, + -0.0000000000000412846, + -0.0000000000000166711, + -0.0000000000000067657, + -0.0000000000000027585, + -0.0000000000000011296, + -0.0000000000000004645, + -0.0000000000000001917, + -0.0000000000000000794, + -0.0000000000000000330 +}; +static cheb_series an22_cs = { + an22_data, + 32, + -1, 1, + 18 +}; + +/* + series for an21 on the interval -1.25000e-01 to -1.56250e-02 + with weighted error 3.43e-17 + log weighted error 16.47 + significant figures required 14.48 + decimal places required 17.16 +*/ +static double an21_data[24] = { + 0.0198313155263169394, + -0.0029376249067087533, + -0.0001136260695958196, + -0.0000100554451087156, + -0.0000013048787116563, + -0.0000002123881993151, + -0.0000000402270833384, + -0.0000000084996745953, + -0.0000000019514839426, + -0.0000000004783865344, + -0.0000000001236733992, + -0.0000000000334137486, + -0.0000000000093702824, + -0.0000000000027130128, + -0.0000000000008075954, + -0.0000000000002463214, + -0.0000000000000767656, + -0.0000000000000243883, + -0.0000000000000078831, + -0.0000000000000025882, + -0.0000000000000008619, + -0.0000000000000002908, + -0.0000000000000000993, + -0.0000000000000000343 +}; +static cheb_series an21_cs = { + an21_data, + 23, + -1, 1, + 12 +}; + +/* + series for an20 on the interval -1.56250e-02 to 0.00000e+00 + with weighted error 4.41e-17 + log weighted error 16.36 + significant figures required 14.16 + decimal places required 16.96 +*/ +static double an20_data[16] = { + 0.0126732217145738027, + -0.0005212847072615621, + -0.0000052672111140370, + -0.0000001628202185026, + -0.0000000090991442687, + -0.0000000007438647126, + -0.0000000000795494752, + -0.0000000000104050944, + -0.0000000000015932426, + -0.0000000000002770648, + -0.0000000000000535343, + -0.0000000000000113062, + -0.0000000000000025772, + -0.0000000000000006278, + -0.0000000000000001621, + -0.0000000000000000441 +}; +static cheb_series an20_cs = { + an20_data, + 15, + -1, 1, + 8 +}; + +/* + series for aph2 on the interval -1.00000e+00 to -1.25000e-01 + with weighted error 2.94e-17 + log weighted error 16.53 + significant figures required 15.58 + decimal places required 17.28 +*/ +static double aph2_data[32] = { + -0.2057088719781465107, + 0.0422196961357771922, + 0.0020482560511207275, + 0.0002607800735165006, + 0.0000474824268004729, + 0.0000105102756431612, + 0.0000026353534014668, + 0.0000007208824863499, + 0.0000002103236664473, + 0.0000000644975634555, + 0.0000000205802377264, + 0.0000000067836273921, + 0.0000000022974015284, + 0.0000000007961306765, + 0.0000000002813860610, + 0.0000000001011749057, + 0.0000000000369306738, + 0.0000000000136615066, + 0.0000000000051142751, + 0.0000000000019351689, + 0.0000000000007393607, + 0.0000000000002849792, + 0.0000000000001107281, + 0.0000000000000433412, + 0.0000000000000170801, + 0.0000000000000067733, + 0.0000000000000027017, + 0.0000000000000010835, + 0.0000000000000004367, + 0.0000000000000001769, + 0.0000000000000000719, + 0.0000000000000000294 +}; +static cheb_series aph2_cs = { + aph2_data, + 31, + -1, 1, + 16 +}; + +/* + series for aph1 on the interval -1.25000e-01 to -1.56250e-02 + with weighted error 6.38e-17 + log weighted error 16.20 + significant figures required 14.91 + decimal places required 16.87 +*/ +static double aph1_data[22] = { + -0.1024172908077571694, + 0.0071697275146591248, + 0.0001209959363122329, + 0.0000073361512841220, + 0.0000007535382954272, + 0.0000001041478171741, + 0.0000000174358728519, + 0.0000000033399795033, + 0.0000000007073075174, + 0.0000000001619187515, + 0.0000000000394539982, + 0.0000000000101192282, + 0.0000000000027092778, + 0.0000000000007523806, + 0.0000000000002156369, + 0.0000000000000635283, + 0.0000000000000191757, + 0.0000000000000059143, + 0.0000000000000018597, + 0.0000000000000005950, + 0.0000000000000001934, + 0.0000000000000000638 +}; +static cheb_series aph1_cs = { + aph1_data, + 21, + -1, 1, + 10 +}; + +/* + series for aph0 on the interval -1.56250e-02 to 0.00000e+00 + with weighted error 2.29e-17 + log weighted error 16.64 + significant figures required 15.27 + decimal places required 17.23 +*/ +static double aph0_data[15] = { + -0.0855849241130933257, + 0.0011214378867065261, + 0.0000042721029353664, + 0.0000000817607381483, + 0.0000000033907645000, + 0.0000000002253264423, + 0.0000000000206284209, + 0.0000000000023858763, + 0.0000000000003301618, + 0.0000000000000527010, + 0.0000000000000094555, + 0.0000000000000018709, + 0.0000000000000004024, + 0.0000000000000000930, + 0.0000000000000000229 +}; +static cheb_series aph0_cs = { + aph0_data, + 14, + -1, 1, + 7 +}; + + +static +int +airy_deriv_mod_phase(const double x, gsl_mode_t mode, + gsl_sf_result * ampl, gsl_sf_result * phi) +{ + const double pi34 = 2.356194490192344928847; + gsl_sf_result result_a; + gsl_sf_result result_p; + double a, p; + double sqx; + + if(x <= -4.0) { + double z = 128.0/(x*x*x) + 1.0; + cheb_eval_mode_e(&an20_cs, z, mode, &result_a); + cheb_eval_mode_e(&aph0_cs, z, mode, &result_p); + } + else if(x <= -2.0) { + double z = (128.0/(x*x*x) + 9.0) / 7.0; + cheb_eval_mode_e(&an21_cs, z, mode, &result_a); + cheb_eval_mode_e(&aph1_cs, z, mode, &result_p); + } + else if(x <= -1.0) { + double z = (16.0/(x*x*x) + 9.0) / 7.0; + cheb_eval_mode_e(&an22_cs, z, mode, &result_a); + cheb_eval_mode_e(&aph2_cs, z, mode, &result_p); + } + else { + ampl->val = 0.0; + ampl->err = 0.0; + phi->val = 0.0; + phi->err = 0.0; + GSL_ERROR ("x is greater than 1.0", GSL_EDOM); + } + + a = 0.3125 + result_a.val; + p = -0.625 + result_p.val; + + sqx = sqrt(-x); + + ampl->val = sqrt(a * sqx); + ampl->err = fabs(ampl->val) * (GSL_DBL_EPSILON + fabs(result_a.err/result_a.val)); + phi->val = pi34 - x * sqx * p; + phi->err = fabs(phi->val) * (GSL_DBL_EPSILON + fabs(result_p.err/result_p.val)); + + return GSL_SUCCESS; +} + + +/*-*-*-*-*-*-*-*-*-*-*-* Functions with Error Codes *-*-*-*-*-*-*-*-*-*-*-*/ + +int +gsl_sf_airy_Ai_deriv_scaled_e(const double x, gsl_mode_t mode, gsl_sf_result * result) +{ + /* CHECK_POINTER(result) */ + + if(x < -1.0) { + gsl_sf_result a; + gsl_sf_result p; + int status_ap = airy_deriv_mod_phase(x, mode, &a, &p); + double c = cos(p.val); + result->val = a.val * c; + result->err = fabs(result->val * p.err) + fabs(c * a.err); + result->err += GSL_DBL_EPSILON * fabs(result->val); + return status_ap; + } + else if(x <= 1.0) { + const double x3 = x*x*x; + const double x2 = x*x; + gsl_sf_result result_c0; + gsl_sf_result result_c1; + cheb_eval_mode_e(&aif_cs, x3, mode, &result_c0); + cheb_eval_mode_e(&aig_cs, x3, mode, &result_c1); + + result->val = (x2*(0.125 + result_c0.val) - result_c1.val) - 0.25; + result->err = fabs(x2*result_c0.val) + result_c1.err; + result->err += GSL_DBL_EPSILON * fabs(result->val); + + if(x > GSL_ROOT3_DBL_EPSILON*GSL_ROOT3_DBL_EPSILON) { + /* scale only if x is positive */ + double s = exp(2.0*x*sqrt(x)/3.0); + result->val *= s; + result->err *= s; + } + + return GSL_SUCCESS; + } + else if(x <= 4.0) { + const double sqrtx = sqrt(x); + const double z = (16.0/(x*sqrtx) - 9.0)/7.0; + const double s = sqrt(sqrtx); + gsl_sf_result result_c0; + cheb_eval_mode_e(&aip1_cs, z, mode, &result_c0); + result->val = -(0.28125 + result_c0.val) * s; + result->err = result_c0.err * s; + result->err += GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else { + const double sqrtx = sqrt(x); + const double z = 16.0/(x*sqrtx) - 1.0; + const double s = sqrt(sqrtx); + gsl_sf_result result_c0; + cheb_eval_mode_e(&aip2_cs, z, mode, &result_c0); + result->val = -(0.28125 + result_c0.val) * s; + result->err = result_c0.err * s; + result->err += GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } +} + + +int +gsl_sf_airy_Ai_deriv_e(const double x, gsl_mode_t mode, gsl_sf_result * result) +{ + /* CHECK_POINTER(result) */ + + if(x < -1.0) { + gsl_sf_result a; + gsl_sf_result p; + int status_ap = airy_deriv_mod_phase(x, mode, &a, &p); + double c = cos(p.val); + result->val = a.val * c; + result->err = fabs(result->val * p.err) + fabs(c * a.err); + result->err += GSL_DBL_EPSILON * fabs(result->val); + return status_ap; + } + else if(x < 1.0) { + const double x3 = x*x*x; + gsl_sf_result result_c1; + gsl_sf_result result_c2; + cheb_eval_mode_e(&aif_cs, x3, mode, &result_c1); + cheb_eval_mode_e(&aig_cs, x3, mode, &result_c2); + result->val = (x*x*(0.125 + result_c1.val) - result_c2.val) - 0.25; + result->err = fabs(x*x*result_c1.err) + result_c2.err; + result->err += GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else if(x*x*x < 9.0/4.0 * GSL_LOG_DBL_MIN*GSL_LOG_DBL_MIN) { + gsl_sf_result result_aps; + const double arg = -2.0*x*sqrt(x)/3.0; + const int stat_a = gsl_sf_airy_Ai_deriv_scaled_e(x, mode, &result_aps); + const int stat_e = gsl_sf_exp_mult_err_e(arg, 1.5*fabs(arg*GSL_DBL_EPSILON), + result_aps.val, result_aps.err, + result); + return GSL_ERROR_SELECT_2(stat_e, stat_a); + } + else { + UNDERFLOW_ERROR(result); + } +} + + +int +gsl_sf_airy_Bi_deriv_scaled_e(const double x, gsl_mode_t mode, gsl_sf_result * result) +{ + const double atr = 8.7506905708484345; /* 16./(sqrt(8)-1) */ + const double btr = -2.0938363213560543; /* -(sqrt(8)+1)/(sqrt(8)-1) */ + + /* CHECK_POINTER(result) */ + + if(x < -1.0) { + gsl_sf_result a; + gsl_sf_result p; + int status_ap = airy_deriv_mod_phase(x, mode, &a, &p); + double s = sin(p.val); + result->val = a.val * s; + result->err = fabs(result->val * p.err) + fabs(s * a.err); + result->err += GSL_DBL_EPSILON * fabs(result->val); + return status_ap; + } + else if(x < 1.0) { + const double x3 = x*x*x; + const double x2 = x*x; + gsl_sf_result result_c1; + gsl_sf_result result_c2; + cheb_eval_mode_e(&bif_cs, x3, mode, &result_c1); + cheb_eval_mode_e(&big_cs, x3, mode, &result_c2); + result->val = x2 * (result_c1.val + 0.25) + result_c2.val + 0.5; + result->err = x2 * result_c1.err + result_c2.err; + result->err += GSL_DBL_EPSILON * fabs(result->val); + + if(x > GSL_ROOT3_DBL_EPSILON*GSL_ROOT3_DBL_EPSILON) { + /* scale only if x is positive */ + const double s = exp(-2.0*x*sqrt(x)/3.0); + result->val *= s; + result->err *= s; + } + + return GSL_SUCCESS; + } + else if(x < 2.0) { + const double z = (2.0*x*x*x - 9.0) / 7.0; + const double s = exp(-2.0*x*sqrt(x)/3.0); + gsl_sf_result result_c0; + gsl_sf_result result_c1; + cheb_eval_mode_e(&bif2_cs, z, mode, &result_c0); + cheb_eval_mode_e(&big2_cs, z, mode, &result_c1); + result->val = s * (x*x * (0.25 + result_c0.val) + 0.5 + result_c1.val); + result->err = s * (x*x * result_c0.err + result_c1.err); + result->err += GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else if(x < 4.0) { + const double sqrtx = sqrt(x); + const double z = atr/(x*sqrtx) + btr; + const double s = sqrt(sqrtx); + gsl_sf_result result_c0; + cheb_eval_mode_e(&bip1_cs, z, mode, &result_c0); + result->val = s * (0.625 + result_c0.val); + result->err = s * result_c0.err; + result->err += GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else { + const double sqrtx = sqrt(x); + const double z = 16.0/(x*sqrtx) - 1.0; + const double s = sqrt(sqrtx); + gsl_sf_result result_c0; + cheb_eval_mode_e(&bip2_cs, z, mode, &result_c0); + result->val = s * (0.625 + result_c0.val); + result->err = s * result_c0.err; + result->err += GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } +} + + +int +gsl_sf_airy_Bi_deriv_e(const double x, gsl_mode_t mode, gsl_sf_result * result) +{ + /* CHECK_POINTER(result) */ + + if(x < -1.0) { + gsl_sf_result a; + gsl_sf_result p; + int status_ap = airy_deriv_mod_phase(x, mode, &a, &p); + double s = sin(p.val); + result->val = a.val * s; + result->err = fabs(result->val * p.err) + fabs(s * a.err); + result->err += GSL_DBL_EPSILON * fabs(result->val); + return status_ap; + } + else if(x < 1.0) { + const double x3 = x*x*x; + const double x2 = x*x; + gsl_sf_result result_c1; + gsl_sf_result result_c2; + cheb_eval_mode_e(&bif_cs, x3, mode, &result_c1); + cheb_eval_mode_e(&big_cs, x3, mode, &result_c2); + result->val = x2 * (result_c1.val + 0.25) + result_c2.val + 0.5; + result->err = x2 * result_c1.err + result_c2.err; + result->err += GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else if(x < 2.0) { + const double z = (2.0*x*x*x - 9.0) / 7.0; + gsl_sf_result result_c1; + gsl_sf_result result_c2; + cheb_eval_mode_e(&bif2_cs, z, mode, &result_c1); + cheb_eval_mode_e(&big2_cs, z, mode, &result_c2); + result->val = x*x * (result_c1.val + 0.25) + result_c2.val + 0.5; + result->err = x*x * result_c1.err + result_c2.err; + result->err += GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else if(x < GSL_ROOT3_DBL_MAX*GSL_ROOT3_DBL_MAX) { + gsl_sf_result result_bps; + const double arg = 2.0*(x*sqrt(x)/3.0); + int stat_b = gsl_sf_airy_Bi_deriv_scaled_e(x, mode, &result_bps); + int stat_e = gsl_sf_exp_mult_err_e(arg, 1.5*fabs(arg*GSL_DBL_EPSILON), + result_bps.val, result_bps.err, + result); + return GSL_ERROR_SELECT_2(stat_e, stat_b); + } + else { + OVERFLOW_ERROR(result); + } +} + +/*-*-*-*-*-*-*-*-*-* Functions w/ Natural Prototypes *-*-*-*-*-*-*-*-*-*-*/ + +#include "eval.h" + +double gsl_sf_airy_Ai_deriv_scaled(const double x, gsl_mode_t mode) +{ + EVAL_RESULT(gsl_sf_airy_Ai_deriv_scaled_e(x, mode, &result)); +} + +double gsl_sf_airy_Ai_deriv(const double x, gsl_mode_t mode) +{ + EVAL_RESULT(gsl_sf_airy_Ai_deriv_e(x, mode, &result)); +} + +double gsl_sf_airy_Bi_deriv_scaled(const double x, gsl_mode_t mode) +{ + EVAL_RESULT(gsl_sf_airy_Bi_deriv_scaled_e(x, mode, &result)); +} + +double gsl_sf_airy_Bi_deriv(const double x, gsl_mode_t mode) +{ + EVAL_RESULT(gsl_sf_airy_Bi_deriv_e(x, mode, &result)); +} diff --git a/gsl-2.5/specfunc/airy_der.lo b/gsl-2.5/specfunc/airy_der.lo new file mode 100644 index 00000000..9619a611 --- /dev/null +++ b/gsl-2.5/specfunc/airy_der.lo @@ -0,0 +1,12 @@ +# airy_der.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/airy_der.o' + +# Name of the non-PIC object +non_pic_object='airy_der.o' + diff --git a/gsl-2.5/specfunc/airy_zero.c b/gsl-2.5/specfunc/airy_zero.c new file mode 100644 index 00000000..16dc0ea5 --- /dev/null +++ b/gsl-2.5/specfunc/airy_zero.c @@ -0,0 +1,546 @@ +/* specfunc/airy_zero.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ + +#include +#include +#include +#include + +#include "error.h" + +static const double zero_Ai[] = { + 0, + -2.3381074104597670385, + -4.087949444130970617, + -5.520559828095551059, + -6.786708090071758999, + -7.944133587120853123, + -9.022650853340980380, + -10.04017434155808593, + -11.00852430373326289, + -11.93601556323626252, + -12.82877675286575720, + -13.69148903521071793, + -14.52782995177533498, + -15.34075513597799686, + -16.13268515694577144, + -16.90563399742994263, + -17.661300105697057509, + -18.401132599207115416, + -19.126380474246952144, + -19.838129891721499701, + -20.537332907677566360, + -21.224829943642096955, + -21.901367595585130707, + -22.567612917496502831, + -23.224165001121681061, + -23.871564455535918567, + -24.510301236589677490, + -25.140821166148963748, + -25.763531400982756459, + -26.378805052137232374, + -26.986985111606367686, + -27.588387809882444812, + -28.183305502632644923, + -28.772009165237435382, + -29.354750558766287963, + -29.931764119086555913, + -30.503268611418505287, + -31.069468585183755604, + -31.63055565801265934, + -32.18670965295205069, + -32.73809960900026913, + -33.28488468190140188, + -33.82721494950865194, + -34.36523213386365906, + -34.89907025034531210, + -35.42885619274788846, + -35.95471026189862926, + -36.47674664437480896, + -36.99507384699450161, + -37.50979509200501613, + -38.02100867725525443, + -38.52880830509424882, + -39.03328338327251391, + -39.53451930072301805, + -40.03259768075417603, + -40.52759661388971821, + -41.01959087233248966, + -41.50865210780525018, + -41.99484903432643004, + -42.47824759730839188, + -42.95891113021656009, + -43.43690049989685412, + -43.91227424156370168, + -44.38508868433939023, + -44.85539806814583243, + -45.32325465267043011, + -45.78870881905730086, + -46.25180916491254629, + -46.71260259315651633, + -47.17113439520631705, + -47.62744832892739292, + -48.08158669175325711, + -48.53359038933679845, + -48.98349900006458366, + -49.43135083573678341, + -49.87718299868941729, + -50.32103143561221860, + -50.76293098829428522, + -51.20291544151056412, + -51.64101756824489758, + -52.07726917242964943, + -52.51170112936766183, + -52.94434342398931824, + -53.37522518708567514, + -53.80437472964785717, + -54.23181957543308298, + -54.65758649186871111, + -55.08170151939748312, + -55.50418999935962251, + -55.92507660050055598, + -56.34438534418670066, + -56.76213962840595327, + -57.17836225062417808, + -57.59307542956407782, + -58.00630082596830627, + -58.41805956240450934, + -58.82837224216613231, + -59.23725896731927534, + -59.64473935594259360, + -60.05083255860419805, + -60.45555727411669871 +}; +static const size_t size_zero_Ai = sizeof(zero_Ai)/sizeof(double); + + +static const double zero_Bi[] = { + 0, + -1.173713222709127925, + -3.271093302836352716, + -4.830737841662015933, + -6.169852128310251260, + -7.376762079367763714, + -8.491948846509388013, + -9.538194379346238887, + -10.52991350670535792, + -11.47695355127877944, + -12.38641713858273875, + -13.26363952294180555, + -14.11275680906865779, + -14.93705741215416404, + -15.739210351190482771, + -16.521419550634379054, + -17.285531624581242533, + -18.033113287225001572, + -18.765508284480081041, + -19.483880132989234014, + -20.189244785396202420, + -20.882495994193175768, + -21.564425284712977653, + -22.235737881803385167, + -22.897065554219793474, + -23.548977079642448269, + -24.191986850649000086, + -24.826562012152892172, + -25.453128427085131994, + -26.072075698466804494, + -26.683761425120990449, + -27.288514830076298204, + -27.886639871735962459, + -28.478417925678661737, + -29.064110107777650305, + -29.643959295918396591, + -30.218191897047274645, + -30.787019397921766297, + -31.350639731255585371, + -31.90923848358456965, + -32.46298996683685318, + -33.01205817205683814, + -33.55659762084006113, + -34.09675412765602851, + -34.63266548426775468, + -35.16446207582101720, + -35.69226743681080479, + -36.21619875398748222, + -36.73636732230120657, + -37.25287895916828697, + -37.76583438165180116, + -38.27532955056003997, + -38.78145598496327279, + -39.28430105019802461, + -39.78394822205711298, + -40.28047732954369150, + -40.77396477829068148, + -41.26448375650675678, + -41.75210442510106287, + -42.23689409345656643, + -42.71891738216253539, + -43.19823637387693118, + -43.67491075336673948, + -44.14899793766617113, + -44.62055319719727274, + -45.08962976861312825, + -45.55627896004907928, + -46.02055024940102076, + -46.48249137619078661, + -46.94214842752602207, + -47.39956591861496210, + -47.85478686825452176, + -48.30785286967246692, + -48.75880415707066192, + -49.20767966818603897, + -49.65451710315861501, + -50.09935297997125482, + -50.54222268670364757, + -50.98316053082286586, + -51.42219978571468262, + -51.85937273464332870, + -52.29471071231240525, + -52.72824414418606069, + -53.16000258371716397, + -53.59001474761792882, + -54.01830854929815828, + -54.44491113058688729, + -54.86984889184461534, + -55.29314752056546491, + -55.71483201856140365, + -56.13492672781406761, + -56.55345535507366411, + -56.97044099527886475, + -57.38590615386647834, + -57.79987276803497897, + -58.21236222702161974, + -58.62339539144885603, + -59.03299261179210306, + -59.44117374601743460, + -59.84795817643466996, + -60.25336482580837088 +}; +static const size_t size_zero_Bi = sizeof(zero_Bi)/sizeof(double); + + +static const double zero_Aip[] = { + 0, + -1.018792971647471089, + -3.248197582179836738, + -4.820099211178735639, + -6.163307355639486822, + -7.372177255047770177, + -8.488486734019722133, + -9.535449052433547471, + -10.52766039695740728, + -11.47505663348024529, + -12.384788371845747325, + -13.262218961665210382, + -14.111501970462995282, + -14.935937196720517467, + -15.738201373692538303, + -16.520503825433793542, + -17.284695050216437357, + -18.032344622504393395, + -18.764798437665954740, + -19.483221656567231178, + -20.188631509463373154, + -20.881922755516737701, + -21.563887723198974958, + -22.235232285348913331, + -22.896588738874619001, + -23.548526295928801574, + -24.191559709526353841, + -24.826156425921155001, + -25.452742561777649948, + -26.071707935173912515, + -26.683410328322449767, + -27.288179121523985029, + -27.886318408768461192, + -28.478109683102278108, + -29.063814162638199090, + -29.643674814632015921, + -30.217918124468574603, + -30.786755648012502519, + -31.350385379083034671, + -31.90899295843046320, + -32.46275274623847982, + -33.01182877663428709, + -33.55637560978942190, + -34.09653909480913771, + -34.63245705463586589, + -35.16425990255340758, + -35.69207119851046870, + -36.21600815233519918, + -36.73618207994680321, + -37.25269881785414827, + -37.76565910053887108, + -38.27515890473087933, + -38.78128976408036876, + -39.28413905729859644, + -39.78379027246823278, + -40.28032324990371935, + -40.77381440566486637, + -41.26433693758643383, + -41.75196101547722703, + -42.23675395695976012, + -42.71878039026198233, + -43.19810240513270670, + -43.67477969292950869, + -44.14886967681966886, + -44.62042763293925724, + -45.08950680327102630, + -45.55615850092696446, + -46.02043220845493728, + -46.48237566972975615, + -46.94203497593635633, + -47.39945464610575493, + -47.85467770262241617, + -48.30774574208398774, + -48.75869900186057804, + -49.20757642267037247, + -49.65441570746105074, + -50.09925337686182515, + -50.54212482144867502, + -50.98306435104524282, + -51.42210524126365311, + -51.85927977747301469, + -52.29461929636838876, + -52.72815422529939506, + -53.15991411950524351, + -53.58992769739169611, + -54.01822287397517367, + -54.44482679260982599, + -54.86976585510479430, + -55.29306575033103518, + -55.71475148140987392, + -56.13484739156885235, + -56.55337718874437424, + -56.97036396900508167, + -57.38583023886477265, + -57.79979793654895377, + -58.21228845227477578, + -58.62332264760009139, + -59.03292087389367419, + -59.44110298997521892, + -59.84788837897058171, + -60.25329596442479317 +}; +static const size_t size_zero_Aip = sizeof(zero_Aip)/sizeof(double); + + +static const double zero_Bip[] = { + 0, + -2.294439682614123247, + -4.073155089071828216, + -5.512395729663599496, + -6.781294445990305390, + -7.940178689168578927, + -9.019583358794239067, + -10.037696334908545802, + -11.006462667712289940, + -11.934261645014844663, + -12.827258309177217640, + -13.690155826835049101, + -14.526645763485711410, + -15.339693082242404109, + -16.131724782385900578, + -16.904759411889649958, + -17.660498743114976102, + -18.400394367181703280, + -19.125697156412638066, + -19.837494718415910503, + -20.536740241453273980, + -21.224275044889266569, + -21.900846445139208281, + -22.567122080497200470, + -23.223701521208962116, + -23.871125771677973595, + -24.509885117016242729, + -25.140425655367878908, + -25.763154776913454319, + -26.378445791146615697, + -26.986641859775034987, + -27.588059359225600573, + -28.182990771292975456, + -28.771707180886056250, + -29.354460444612957224, + -29.931485082026055160, + -30.502999931936645516, + -31.069209608721234058, + -31.63030578754333679, + -32.18646834257807369, + -32.73786635840274752, + -33.28465903151424981, + -33.82699647630635587, + -34.36502044767239631, + -34.89886499060196419, + -35.42865702564380962, + -35.95451687785511190, + -36.47655875580547918, + -36.99489118631672770, + -37.50961740986809593, + -38.02083574095788210 +}; +static const size_t size_zero_Bip = sizeof(zero_Bip)/sizeof(double); + + + +/* [Abramowitz+Stegun, 10.4.105] */ +static double +zero_f(double z) +{ + const double pre = pow(z, 2.0/3.0); + const double zi2 = 1.0/(z*z); + const double zi4 = zi2 * zi2; + const double t1 = 5.0/48.0 * zi2; + const double t2 = -5.0/36.0 * zi4; + const double t3 = 77125.0/82944.0 * zi4 * zi2; + const double t4 = -108056875.0/6967296.0 * zi4 * zi4; + return pre * (1.0 + t1 + t2 + t3 + t4); + +} +static double +zero_g(double z) +{ + const double pre = pow(z, 2.0/3.0); + const double zi2 = 1.0/(z*z); + const double zi4 = zi2 * zi2; + const double t1 = -7.0/48.0 * zi2; + const double t2 = 35.0/288.0 * zi4; + const double t3 = -181223.0/207360.0 * zi4 * zi2; + const double t4 = 18683371.0/1244160.0 * zi4 * zi4; + return pre * (1.0 + t1 + t2 + t3 + t4); +} + + + +int +gsl_sf_airy_zero_Ai_e(unsigned int s, gsl_sf_result * result) +{ + /* CHECK_POINTER(result) */ + + if(s < 1) { + DOMAIN_ERROR_MSG("s is less than 1", result); + } + else if(s < size_zero_Ai) { + result->val = zero_Ai[s]; + result->err = GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else { + const double z = 3.0*M_PI/8.0 * (4.0*s - 1.0); + const double f = zero_f(z); + result->val = -f; + result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } +} + + +int +gsl_sf_airy_zero_Bi_e(unsigned int s, gsl_sf_result * result) +{ + /* CHECK_POINTER(result) */ + + if(s < 1) { + DOMAIN_ERROR_MSG("s is less than 1", result); + } + else if(s < size_zero_Bi) { + result->val = zero_Bi[s]; + result->err = GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else { + const double z = 3.0*M_PI/8.0 * (4.0*s - 3.0); + const double f = zero_f(z); + result->val = -f; + result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } +} + + +int +gsl_sf_airy_zero_Ai_deriv_e(unsigned int s, gsl_sf_result * result) +{ + /* CHECK_POINTER(result) */ + + if(s < 1) { + DOMAIN_ERROR_MSG("s is less than 1", result); + } + else if(s < size_zero_Aip) { + result->val = zero_Aip[s]; + result->err = GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else { + const double z = 3.0*M_PI/8.0 * (4.0*s - 3.0); + const double g = zero_g(z); + result->val = -g; + result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } +} + + +int +gsl_sf_airy_zero_Bi_deriv_e(unsigned int s, gsl_sf_result * result) +{ + /* CHECK_POINTER(result) */ + + if(s < 1) { + DOMAIN_ERROR_MSG("s is less than 1", result); + } + else if(s < size_zero_Bip) { + result->val = zero_Bip[s]; + result->err = GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else { + const double z = 3.0*M_PI/8.0 * (4.0*s - 1.0); + const double g = zero_g(z); + result->val = -g; + result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } +} + +/*-*-*-*-*-*-*-*-*-* Functions w/ Natural Prototypes *-*-*-*-*-*-*-*-*-*-*/ + +#include "eval.h" + +double gsl_sf_airy_zero_Ai(unsigned int s) +{ + EVAL_RESULT(gsl_sf_airy_zero_Ai_e(s, &result)); +} + +double gsl_sf_airy_zero_Bi(unsigned int s) +{ + EVAL_RESULT(gsl_sf_airy_zero_Bi_e(s, &result)); +} + +double gsl_sf_airy_zero_Ai_deriv(unsigned int s) +{ + EVAL_RESULT(gsl_sf_airy_zero_Ai_deriv_e(s, &result)); +} + +double gsl_sf_airy_zero_Bi_deriv(unsigned int s) +{ + EVAL_RESULT(gsl_sf_airy_zero_Bi_deriv_e(s, &result)); +} diff --git a/gsl-2.5/specfunc/airy_zero.lo b/gsl-2.5/specfunc/airy_zero.lo new file mode 100644 index 00000000..1ad19602 --- /dev/null +++ b/gsl-2.5/specfunc/airy_zero.lo @@ -0,0 +1,12 @@ +# airy_zero.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/airy_zero.o' + +# Name of the non-PIC object +non_pic_object='airy_zero.o' + diff --git a/gsl-2.5/specfunc/atanint.c b/gsl-2.5/specfunc/atanint.c new file mode 100644 index 00000000..166c4f8d --- /dev/null +++ b/gsl-2.5/specfunc/atanint.c @@ -0,0 +1,115 @@ +/* specfunc/atanint.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ + +#include +#include +#include +#include +#include + +#include "chebyshev.h" +#include "cheb_eval.c" + + +static double atanint_data[21] = { + 1.91040361296235937512, + -0.4176351437656746940e-01, + 0.275392550786367434e-02, + -0.25051809526248881e-03, + 0.2666981285121171e-04, + -0.311890514107001e-05, + 0.38833853132249e-06, + -0.5057274584964e-07, + 0.681225282949e-08, + -0.94212561654e-09, + 0.13307878816e-09, + -0.1912678075e-10, + 0.278912620e-11, + -0.41174820e-12, + 0.6142987e-13, + -0.924929e-14, + 0.140387e-14, + -0.21460e-15, + 0.3301e-16, + -0.511e-17, + 0.79e-18, +}; +static cheb_series atanint_cs = { + atanint_data, + 20, + -1, 1, + 10 +}; + + +/*-*-*-*-*-*-*-*-*-*-*-* Functions with Error Codes *-*-*-*-*-*-*-*-*-*-*/ + +int +gsl_sf_atanint_e(const double x, gsl_sf_result * result) +{ + const double ax = fabs(x); + const double sgn = GSL_SIGN(x); + + /* CHECK_POINTER(result) */ + + if(ax == 0.0) { + result->val = 0.0; + result->err = 0.0; + return GSL_SUCCESS; + } + else if(ax < 0.5*GSL_SQRT_DBL_EPSILON) { + result->val = x; + result->err = 0.0; + return GSL_SUCCESS; + } + else if(ax <= 1.0) { + const double t = 2.0 * (x*x - 0.5); + gsl_sf_result result_c; + cheb_eval_e(&atanint_cs, t, &result_c); + result->val = x * result_c.val; + result->err = x * result_c.err; + result->err += GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else if(ax < 1.0/GSL_SQRT_DBL_EPSILON) { + const double t = 2.0 * (1.0/(x*x) - 0.5); + gsl_sf_result result_c; + cheb_eval_e(&atanint_cs, t, &result_c); + result->val = sgn * (0.5*M_PI*log(ax) + result_c.val/ax); + result->err = result_c.err/ax + fabs(result->val*GSL_DBL_EPSILON); + result->err += GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else { + result->val = sgn * (0.5*M_PI*log(ax) + 1.0 / ax); + result->err = 2.0 * fabs(result->val * GSL_DBL_EPSILON); + return GSL_SUCCESS; + } +} + +/*-*-*-*-*-*-*-*-*-* Functions w/ Natural Prototypes *-*-*-*-*-*-*-*-*-*-*/ + +#include "eval.h" + +double gsl_sf_atanint(const double x) +{ + EVAL_RESULT(gsl_sf_atanint_e(x, &result)); +} diff --git a/gsl-2.5/specfunc/atanint.lo b/gsl-2.5/specfunc/atanint.lo new file mode 100644 index 00000000..7c2b4854 --- /dev/null +++ b/gsl-2.5/specfunc/atanint.lo @@ -0,0 +1,12 @@ +# atanint.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/atanint.o' + +# Name of the non-PIC object +non_pic_object='atanint.o' + diff --git a/gsl-2.5/specfunc/bessel.c b/gsl-2.5/specfunc/bessel.c new file mode 100644 index 00000000..361657a6 --- /dev/null +++ b/gsl-2.5/specfunc/bessel.c @@ -0,0 +1,983 @@ +/* specfunc/bessel.c + * + * Copyright (C) 1996,1997,1998,1999,2000,2001,2002,2003 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ +/* Miscellaneous support functions for Bessel function evaluations. + */ +#include +#include +#include +#include +#include +#include +#include +#include + +#include "error.h" + +#include "bessel_amp_phase.h" +#include "bessel_temme.h" +#include "bessel.h" + +#define CubeRoot2_ 1.25992104989487316476721060728 + + + +/* Debye functions [Abramowitz+Stegun, 9.3.9-10] */ + +inline static double +debye_u1(const double * tpow) +{ + return (3.0*tpow[1] - 5.0*tpow[3])/24.0; +} + +inline static double +debye_u2(const double * tpow) +{ + return (81.0*tpow[2] - 462.0*tpow[4] + 385.0*tpow[6])/1152.0; +} + +inline +static double debye_u3(const double * tpow) +{ + return (30375.0*tpow[3] - 369603.0*tpow[5] + 765765.0*tpow[7] - 425425.0*tpow[9])/414720.0; +} + +inline +static double debye_u4(const double * tpow) +{ + return (4465125.0*tpow[4] - 94121676.0*tpow[6] + 349922430.0*tpow[8] - + 446185740.0*tpow[10] + 185910725.0*tpow[12])/39813120.0; +} + +inline +static double debye_u5(const double * tpow) +{ + return (1519035525.0*tpow[5] - 49286948607.0*tpow[7] + + 284499769554.0*tpow[9] - 614135872350.0*tpow[11] + + 566098157625.0*tpow[13] - 188699385875.0*tpow[15])/6688604160.0; +} + +#if 0 +inline +static double debye_u6(const double * tpow) +{ + return (2757049477875.0*tpow[6] - 127577298354750.0*tpow[8] + + 1050760774457901.0*tpow[10] - 3369032068261860.0*tpow[12] + + 5104696716244125.0*tpow[14] - 3685299006138750.0*tpow[16] + + 1023694168371875.0*tpow[18])/4815794995200.0; +} +#endif + + +/*-*-*-*-*-*-*-*-*-*-*-* Functions with Error Codes *-*-*-*-*-*-*-*-*-*-*-*/ + +int +gsl_sf_bessel_IJ_taylor_e(const double nu, const double x, + const int sign, + const int kmax, + const double threshold, + gsl_sf_result * result + ) +{ + /* CHECK_POINTER(result) */ + + if(nu < 0.0 || x < 0.0) { + DOMAIN_ERROR(result); + } + else if(x == 0.0) { + if(nu == 0.0) { + result->val = 1.0; + result->err = 0.0; + } + else { + result->val = 0.0; + result->err = 0.0; + } + return GSL_SUCCESS; + } + else { + gsl_sf_result prefactor; /* (x/2)^nu / Gamma(nu+1) */ + gsl_sf_result sum; + + int stat_pre; + int stat_sum; + int stat_mul; + + if(nu == 0.0) { + prefactor.val = 1.0; + prefactor.err = 0.0; + stat_pre = GSL_SUCCESS; + } + else if(nu < INT_MAX-1) { + /* Separate the integer part and use + * y^nu / Gamma(nu+1) = y^N /N! y^f / (N+1)_f, + * to control the error. + */ + const int N = (int)floor(nu + 0.5); + const double f = nu - N; + gsl_sf_result poch_factor; + gsl_sf_result tc_factor; + const int stat_poch = gsl_sf_poch_e(N+1.0, f, &poch_factor); + const int stat_tc = gsl_sf_taylorcoeff_e(N, 0.5*x, &tc_factor); + const double p = pow(0.5*x,f); + prefactor.val = tc_factor.val * p / poch_factor.val; + prefactor.err = tc_factor.err * p / poch_factor.val; + prefactor.err += fabs(prefactor.val) / poch_factor.val * poch_factor.err; + prefactor.err += 2.0 * GSL_DBL_EPSILON * fabs(prefactor.val); + stat_pre = GSL_ERROR_SELECT_2(stat_tc, stat_poch); + } + else { + gsl_sf_result lg; + const int stat_lg = gsl_sf_lngamma_e(nu+1.0, &lg); + const double term1 = nu*log(0.5*x); + const double term2 = lg.val; + const double ln_pre = term1 - term2; + const double ln_pre_err = GSL_DBL_EPSILON * (fabs(term1)+fabs(term2)) + lg.err; + const int stat_ex = gsl_sf_exp_err_e(ln_pre, ln_pre_err, &prefactor); + stat_pre = GSL_ERROR_SELECT_2(stat_ex, stat_lg); + } + + /* Evaluate the sum. + * [Abramowitz+Stegun, 9.1.10] + * [Abramowitz+Stegun, 9.6.7] + */ + { + const double y = sign * 0.25 * x*x; + double sumk = 1.0; + double term = 1.0; + int k; + + for(k=1; k<=kmax; k++) { + term *= y/((nu+k)*k); + sumk += term; + if(fabs(term/sumk) < threshold) break; + } + + sum.val = sumk; + sum.err = threshold * fabs(sumk); + + stat_sum = ( k >= kmax ? GSL_EMAXITER : GSL_SUCCESS ); + } + + stat_mul = gsl_sf_multiply_err_e(prefactor.val, prefactor.err, + sum.val, sum.err, + result); + + return GSL_ERROR_SELECT_3(stat_mul, stat_pre, stat_sum); + } +} + + +/* Hankel's Asymptotic Expansion - A&S 9.2.5 + * + * x >> nu*nu+1 + * error ~ O( ((nu*nu+1)/x)^4 ) + * + * empirical error analysis: + * choose GSL_ROOT4_MACH_EPS * x > (nu*nu + 1) + * + * This is not especially useful. When the argument gets + * large enough for this to apply, the cos() and sin() + * start loosing digits. However, this seems inevitable + * for this particular method. + * + * Wed Jun 25 14:39:38 MDT 2003 [GJ] + * This function was inconsistent since the Q term did not + * go to relative order eps^2. That's why the error estimate + * originally given was screwy (it didn't make sense that the + * "empirical" error was coming out O(eps^3)). + * With Q to proper order, the error is O(eps^4). + * + * Sat Mar 15 05:16:18 GMT 2008 [BG] + * Extended to use additional terms in the series to gain + * higher accuracy. + * + */ + +int +gsl_sf_bessel_Jnu_asympx_e(const double nu, const double x, gsl_sf_result * result) +{ + double mu = 4.0*nu*nu; + double chi = x - (0.5*nu + 0.25)*M_PI; + + double P = 0.0; + double Q = 0.0; + + double k = 0, t = 1; + int convP, convQ; + + do + { + t *= (k == 0) ? 1 : -(mu - (2*k-1)*(2*k-1)) / (k * (8 * x)); + convP = fabs(t) < GSL_DBL_EPSILON * fabs(P); + P += t; + + k++; + + t *= (mu - (2*k-1)*(2*k-1)) / (k * (8 * x)); + convQ = fabs(t) < GSL_DBL_EPSILON * fabs(Q); + Q += t; + + /* To preserve the consistency of the series we need to exit + when P and Q have the same number of terms */ + + if (convP && convQ && k > (nu / 2)) + break; + + k++; + } + while (k < 1000); + + { + double pre = sqrt(2.0/(M_PI*x)); + double c = cos(chi); + double s = sin(chi); + + result->val = pre * (c*P - s*Q); + result->err = pre * GSL_DBL_EPSILON * (fabs(c*P) + fabs(s*Q) + fabs(t)) * (1 + fabs(x)); + /* NB: final term accounts for phase error with large x */ + } + + return GSL_SUCCESS; +} + + +/* x >> nu*nu+1 + */ +int +gsl_sf_bessel_Ynu_asympx_e(const double nu, const double x, gsl_sf_result * result) +{ + double ampl; + double theta; + double alpha = x; + double beta = -0.5*nu*M_PI; + int stat_a = gsl_sf_bessel_asymp_Mnu_e(nu, x, &l); + int stat_t = gsl_sf_bessel_asymp_thetanu_corr_e(nu, x, &theta); + double sin_alpha = sin(alpha); + double cos_alpha = cos(alpha); + double sin_chi = sin(beta + theta); + double cos_chi = cos(beta + theta); + double sin_term = sin_alpha * cos_chi + sin_chi * cos_alpha; + double sin_term_mag = fabs(sin_alpha * cos_chi) + fabs(sin_chi * cos_alpha); + result->val = ampl * sin_term; + result->err = fabs(ampl) * GSL_DBL_EPSILON * sin_term_mag; + result->err += fabs(result->val) * 2.0 * GSL_DBL_EPSILON; + + if(fabs(alpha) > 1.0/GSL_DBL_EPSILON) { + result->err *= 0.5 * fabs(alpha); + } + else if(fabs(alpha) > 1.0/GSL_SQRT_DBL_EPSILON) { + result->err *= 256.0 * fabs(alpha) * GSL_SQRT_DBL_EPSILON; + } + + return GSL_ERROR_SELECT_2(stat_t, stat_a); +} + + +/* x >> nu*nu+1 + */ +int +gsl_sf_bessel_Inu_scaled_asympx_e(const double nu, const double x, gsl_sf_result * result) +{ + double mu = 4.0*nu*nu; + double mum1 = mu-1.0; + double mum9 = mu-9.0; + double pre = 1.0/sqrt(2.0*M_PI*x); + double r = mu/x; + result->val = pre * (1.0 - mum1/(8.0*x) + mum1*mum9/(128.0*x*x)); + result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val) + pre * fabs(0.1*r*r*r); + return GSL_SUCCESS; +} + +/* x >> nu*nu+1 + */ +int +gsl_sf_bessel_Knu_scaled_asympx_e(const double nu, const double x, gsl_sf_result * result) +{ + double mu = 4.0*nu*nu; + double mum1 = mu-1.0; + double mum9 = mu-9.0; + double pre = sqrt(M_PI/(2.0*x)); + double r = nu/x; + result->val = pre * (1.0 + mum1/(8.0*x) + mum1*mum9/(128.0*x*x)); + result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val) + pre * fabs(0.1*r*r*r); + return GSL_SUCCESS; +} + + +/* nu -> Inf; uniform in x > 0 [Abramowitz+Stegun, 9.7.7] + * + * error: + * The error has the form u_N(t)/nu^N where 0 <= t <= 1. + * It is not hard to show that |u_N(t)| is small for such t. + * We have N=6 here, and |u_6(t)| < 0.025, so the error is clearly + * bounded by 0.025/nu^6. This gives the asymptotic bound on nu + * seen below as nu ~ 100. For general MACH_EPS it will be + * nu > 0.5 / MACH_EPS^(1/6) + * When t is small, the bound is even better because |u_N(t)| vanishes + * as t->0. In fact u_N(t) ~ C t^N as t->0, with C ~= 0.1. + * We write + * err_N <= min(0.025, C(1/(1+(x/nu)^2))^3) / nu^6 + * therefore + * min(0.29/nu^2, 0.5/(nu^2+x^2)) < MACH_EPS^{1/3} + * and this is the general form. + * + * empirical error analysis, assuming 14 digit requirement: + * choose x > 50.000 nu ==> nu > 3 + * choose x > 10.000 nu ==> nu > 15 + * choose x > 2.000 nu ==> nu > 50 + * choose x > 1.000 nu ==> nu > 75 + * choose x > 0.500 nu ==> nu > 80 + * choose x > 0.100 nu ==> nu > 83 + * + * This makes sense. For x << nu, the error will be of the form u_N(1)/nu^N, + * since the polynomial term will be evaluated near t=1, so the bound + * on nu will become constant for small x. Furthermore, increasing x with + * nu fixed will decrease the error. + */ +int +gsl_sf_bessel_Inu_scaled_asymp_unif_e(const double nu, const double x, gsl_sf_result * result) +{ + int i; + double z = x/nu; + double root_term = hypot(1.0,z); + double pre = 1.0/sqrt(2.0*M_PI*nu * root_term); + double eta = root_term + log(z/(1.0+root_term)); + double ex_arg = ( z < 1.0/GSL_ROOT3_DBL_EPSILON ? nu*(-z + eta) : -0.5*nu/z*(1.0 - 1.0/(12.0*z*z)) ); + gsl_sf_result ex_result; + int stat_ex = gsl_sf_exp_e(ex_arg, &ex_result); + if(stat_ex == GSL_SUCCESS) { + double t = 1.0/root_term; + double sum; + double tpow[16]; + tpow[0] = 1.0; + for(i=1; i<16; i++) tpow[i] = t * tpow[i-1]; + sum = 1.0 + debye_u1(tpow)/nu + debye_u2(tpow)/(nu*nu) + debye_u3(tpow)/(nu*nu*nu) + + debye_u4(tpow)/(nu*nu*nu*nu) + debye_u5(tpow)/(nu*nu*nu*nu*nu); + result->val = pre * ex_result.val * sum; + result->err = pre * ex_result.val / (nu*nu*nu*nu*nu*nu); + result->err += pre * ex_result.err * fabs(sum); + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else { + result->val = 0.0; + result->err = 0.0; + return stat_ex; + } +} + + +/* nu -> Inf; uniform in x > 0 [Abramowitz+Stegun, 9.7.8] + * + * error: + * identical to that above for Inu_scaled + */ +int +gsl_sf_bessel_Knu_scaled_asymp_unif_e(const double nu, const double x, gsl_sf_result * result) +{ + int i; + double z = x/nu; + double root_term = hypot(1.0,z); + double pre = sqrt(M_PI/(2.0*nu*root_term)); + double eta = root_term + log(z/(1.0+root_term)); + double ex_arg = ( z < 1.0/GSL_ROOT3_DBL_EPSILON ? nu*(z - eta) : 0.5*nu/z*(1.0 + 1.0/(12.0*z*z)) ); + gsl_sf_result ex_result; + int stat_ex = gsl_sf_exp_e(ex_arg, &ex_result); + if(stat_ex == GSL_SUCCESS) { + double t = 1.0/root_term; + double sum; + double tpow[16]; + tpow[0] = 1.0; + for(i=1; i<16; i++) tpow[i] = t * tpow[i-1]; + sum = 1.0 - debye_u1(tpow)/nu + debye_u2(tpow)/(nu*nu) - debye_u3(tpow)/(nu*nu*nu) + + debye_u4(tpow)/(nu*nu*nu*nu) - debye_u5(tpow)/(nu*nu*nu*nu*nu); + result->val = pre * ex_result.val * sum; + result->err = pre * ex_result.err * fabs(sum); + result->err += pre * ex_result.val / (nu*nu*nu*nu*nu*nu); + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else { + result->val = 0.0; + result->err = 0.0; + return stat_ex; + } +} + + +/* Evaluate J_mu(x),J_{mu+1}(x) and Y_mu(x),Y_{mu+1}(x) for |mu| < 1/2 + */ +int +gsl_sf_bessel_JY_mu_restricted(const double mu, const double x, + gsl_sf_result * Jmu, gsl_sf_result * Jmup1, + gsl_sf_result * Ymu, gsl_sf_result * Ymup1) +{ + /* CHECK_POINTER(Jmu) */ + /* CHECK_POINTER(Jmup1) */ + /* CHECK_POINTER(Ymu) */ + /* CHECK_POINTER(Ymup1) */ + + if(x < 0.0 || fabs(mu) > 0.5) { + Jmu->val = 0.0; + Jmu->err = 0.0; + Jmup1->val = 0.0; + Jmup1->err = 0.0; + Ymu->val = 0.0; + Ymu->err = 0.0; + Ymup1->val = 0.0; + Ymup1->err = 0.0; + GSL_ERROR ("error", GSL_EDOM); + } + else if(x == 0.0) { + if(mu == 0.0) { + Jmu->val = 1.0; + Jmu->err = 0.0; + } + else { + Jmu->val = 0.0; + Jmu->err = 0.0; + } + Jmup1->val = 0.0; + Jmup1->err = 0.0; + Ymu->val = 0.0; + Ymu->err = 0.0; + Ymup1->val = 0.0; + Ymup1->err = 0.0; + GSL_ERROR ("error", GSL_EDOM); + } + else { + int stat_Y; + int stat_J; + + if(x < 2.0) { + /* Use Taylor series for J and the Temme series for Y. + * The Taylor series for J requires nu > 0, so we shift + * up one and use the recursion relation to get Jmu, in + * case mu < 0. + */ + gsl_sf_result Jmup2; + int stat_J1 = gsl_sf_bessel_IJ_taylor_e(mu+1.0, x, -1, 100, GSL_DBL_EPSILON, Jmup1); + int stat_J2 = gsl_sf_bessel_IJ_taylor_e(mu+2.0, x, -1, 100, GSL_DBL_EPSILON, &Jmup2); + double c = 2.0*(mu+1.0)/x; + Jmu->val = c * Jmup1->val - Jmup2.val; + Jmu->err = c * Jmup1->err + Jmup2.err; + Jmu->err += 2.0 * GSL_DBL_EPSILON * fabs(Jmu->val); + stat_J = GSL_ERROR_SELECT_2(stat_J1, stat_J2); + stat_Y = gsl_sf_bessel_Y_temme(mu, x, Ymu, Ymup1); + return GSL_ERROR_SELECT_2(stat_J, stat_Y); + } + else if(x < 1000.0) { + double P, Q; + double J_ratio; + double J_sgn; + const int stat_CF1 = gsl_sf_bessel_J_CF1(mu, x, &J_ratio, &J_sgn); + const int stat_CF2 = gsl_sf_bessel_JY_steed_CF2(mu, x, &P, &Q); + double Jprime_J_ratio = mu/x - J_ratio; + double gamma = (P - Jprime_J_ratio)/Q; + Jmu->val = J_sgn * sqrt(2.0/(M_PI*x) / (Q + gamma*(P-Jprime_J_ratio))); + Jmu->err = 4.0 * GSL_DBL_EPSILON * fabs(Jmu->val); + Jmup1->val = J_ratio * Jmu->val; + Jmup1->err = fabs(J_ratio) * Jmu->err; + Ymu->val = gamma * Jmu->val; + Ymu->err = fabs(gamma) * Jmu->err; + Ymup1->val = Ymu->val * (mu/x - P - Q/gamma); + Ymup1->err = Ymu->err * fabs(mu/x - P - Q/gamma) + 4.0*GSL_DBL_EPSILON*fabs(Ymup1->val); + return GSL_ERROR_SELECT_2(stat_CF1, stat_CF2); + } + else { + /* Use asymptotics for large argument. + */ + const int stat_J0 = gsl_sf_bessel_Jnu_asympx_e(mu, x, Jmu); + const int stat_J1 = gsl_sf_bessel_Jnu_asympx_e(mu+1.0, x, Jmup1); + const int stat_Y0 = gsl_sf_bessel_Ynu_asympx_e(mu, x, Ymu); + const int stat_Y1 = gsl_sf_bessel_Ynu_asympx_e(mu+1.0, x, Ymup1); + stat_J = GSL_ERROR_SELECT_2(stat_J0, stat_J1); + stat_Y = GSL_ERROR_SELECT_2(stat_Y0, stat_Y1); + return GSL_ERROR_SELECT_2(stat_J, stat_Y); + } + } +} + + +int +gsl_sf_bessel_J_CF1(const double nu, const double x, + double * ratio, double * sgn) +{ + const double RECUR_BIG = GSL_SQRT_DBL_MAX; + const double RECUR_SMALL = GSL_SQRT_DBL_MIN; + const int maxiter = 10000; + int n = 1; + double Anm2 = 1.0; + double Bnm2 = 0.0; + double Anm1 = 0.0; + double Bnm1 = 1.0; + double a1 = x/(2.0*(nu+1.0)); + double An = Anm1 + a1*Anm2; + double Bn = Bnm1 + a1*Bnm2; + double an; + double fn = An/Bn; + double dn = a1; + double s = 1.0; + + while(n < maxiter) { + double old_fn; + double del; + n++; + Anm2 = Anm1; + Bnm2 = Bnm1; + Anm1 = An; + Bnm1 = Bn; + an = -x*x/(4.0*(nu+n-1.0)*(nu+n)); + An = Anm1 + an*Anm2; + Bn = Bnm1 + an*Bnm2; + + if(fabs(An) > RECUR_BIG || fabs(Bn) > RECUR_BIG) { + An /= RECUR_BIG; + Bn /= RECUR_BIG; + Anm1 /= RECUR_BIG; + Bnm1 /= RECUR_BIG; + Anm2 /= RECUR_BIG; + } else if(fabs(An) < RECUR_SMALL || fabs(Bn) < RECUR_SMALL) { + An /= RECUR_SMALL; + Bn /= RECUR_SMALL; + Anm1 /= RECUR_SMALL; + Bnm1 /= RECUR_SMALL; + Anm2 /= RECUR_SMALL; + Bnm2 /= RECUR_SMALL; + } + + old_fn = fn; + fn = An/Bn; + del = old_fn/fn; + + dn = 1.0 / (2.0*(nu+n)/x - dn); + if(dn < 0.0) s = -s; + + if(fabs(del - 1.0) < 2.0*GSL_DBL_EPSILON) break; + } + + /* FIXME: we should return an error term here as well, because the + error from this recurrence affects the overall error estimate. */ + + *ratio = fn; + *sgn = s; + + if(n >= maxiter) + GSL_ERROR ("error", GSL_EMAXITER); + else + return GSL_SUCCESS; +} + + + +/* Evaluate the continued fraction CF1 for J_{nu+1}/J_nu + * using Gautschi (Euler) equivalent series. + * This exhibits an annoying problem because the + * a_k are not positive definite (in fact they are all negative). + * There are cases when rho_k blows up. Example: nu=1,x=4. + */ +#if 0 +int +gsl_sf_bessel_J_CF1_ser(const double nu, const double x, + double * ratio, double * sgn) +{ + const int maxk = 20000; + double tk = 1.0; + double sum = 1.0; + double rhok = 0.0; + double dk = 0.0; + double s = 1.0; + int k; + + for(k=1; k 2 is a good cutoff. + * Also requires |nu| < 1/2. + */ +int +gsl_sf_bessel_K_scaled_steed_temme_CF2(const double nu, const double x, + double * K_nu, double * K_nup1, + double * Kp_nu) +{ + const int maxiter = 10000; + + int i = 1; + double bi = 2.0*(1.0 + x); + double di = 1.0/bi; + double delhi = di; + double hi = di; + + double qi = 0.0; + double qip1 = 1.0; + + double ai = -(0.25 - nu*nu); + double a1 = ai; + double ci = -ai; + double Qi = -ai; + + double s = 1.0 + Qi*delhi; + + for(i=2; i<=maxiter; i++) { + double dels; + double tmp; + ai -= 2.0*(i-1); + ci = -ai*ci/i; + tmp = (qi - bi*qip1)/ai; + qi = qip1; + qip1 = tmp; + Qi += ci*qip1; + bi += 2.0; + di = 1.0/(bi + ai*di); + delhi = (bi*di - 1.0) * delhi; + hi += delhi; + dels = Qi*delhi; + s += dels; + if(fabs(dels/s) < GSL_DBL_EPSILON) break; + } + + hi *= -a1; + + *K_nu = sqrt(M_PI/(2.0*x)) / s; + *K_nup1 = *K_nu * (nu + x + 0.5 - hi)/x; + *Kp_nu = - *K_nup1 + nu/x * *K_nu; + if(i == maxiter) + GSL_ERROR ("error", GSL_EMAXITER); + else + return GSL_SUCCESS; +} + + +int gsl_sf_bessel_cos_pi4_e(double y, double eps, gsl_sf_result * result) +{ + const double sy = sin(y); + const double cy = cos(y); + const double s = sy + cy; + const double d = sy - cy; + const double abs_sum = fabs(cy) + fabs(sy); + double seps; + double ceps; + if(fabs(eps) < GSL_ROOT5_DBL_EPSILON) { + const double e2 = eps*eps; + seps = eps * (1.0 - e2/6.0 * (1.0 - e2/20.0)); + ceps = 1.0 - e2/2.0 * (1.0 - e2/12.0); + } + else { + seps = sin(eps); + ceps = cos(eps); + } + result->val = (ceps * s - seps * d)/ M_SQRT2; + result->err = 2.0 * GSL_DBL_EPSILON * (fabs(ceps) + fabs(seps)) * abs_sum / M_SQRT2; + + /* Try to account for error in evaluation of sin(y), cos(y). + * This is a little sticky because we don't really know + * how the library routines are doing their argument reduction. + * However, we will make a reasonable guess. + * FIXME ? + */ + if(y > 1.0/GSL_DBL_EPSILON) { + result->err *= 0.5 * y; + } + else if(y > 1.0/GSL_SQRT_DBL_EPSILON) { + result->err *= 256.0 * y * GSL_SQRT_DBL_EPSILON; + } + + return GSL_SUCCESS; +} + + +int gsl_sf_bessel_sin_pi4_e(double y, double eps, gsl_sf_result * result) +{ + const double sy = sin(y); + const double cy = cos(y); + const double s = sy + cy; + const double d = sy - cy; + const double abs_sum = fabs(cy) + fabs(sy); + double seps; + double ceps; + if(fabs(eps) < GSL_ROOT5_DBL_EPSILON) { + const double e2 = eps*eps; + seps = eps * (1.0 - e2/6.0 * (1.0 - e2/20.0)); + ceps = 1.0 - e2/2.0 * (1.0 - e2/12.0); + } + else { + seps = sin(eps); + ceps = cos(eps); + } + result->val = (ceps * d + seps * s)/ M_SQRT2; + result->err = 2.0 * GSL_DBL_EPSILON * (fabs(ceps) + fabs(seps)) * abs_sum / M_SQRT2; + + /* Try to account for error in evaluation of sin(y), cos(y). + * See above. + * FIXME ? + */ + if(y > 1.0/GSL_DBL_EPSILON) { + result->err *= 0.5 * y; + } + else if(y > 1.0/GSL_SQRT_DBL_EPSILON) { + result->err *= 256.0 * y * GSL_SQRT_DBL_EPSILON; + } + + return GSL_SUCCESS; +} + + +/************************************************************************ + * * + Asymptotic approximations 8.11.5, 8.12.5, and 8.42.7 from + G.N.Watson, A Treatise on the Theory of Bessel Functions, + 2nd Edition (Cambridge University Press, 1944). + Higher terms in expansion for x near l given by + Airey in Phil. Mag. 31, 520 (1916). + + This approximation is accurate to near 0.1% at the boundaries + between the asymptotic regions; well away from the boundaries + the accuracy is better than 10^{-5}. + * * + ************************************************************************/ +#if 0 +double besselJ_meissel(double nu, double x) +{ + double beta = pow(nu, 0.325); + double result; + + /* Fitted matching points. */ + double llimit = 1.1 * beta; + double ulimit = 1.3 * beta; + + double nu2 = nu * nu; + + if (nu < 5. && x < 1.) + { + /* Small argument and order. Use a Taylor expansion. */ + int k; + double xo2 = 0.5 * x; + double gamfactor = pow(nu,nu) * exp(-nu) * sqrt(nu * 2. * M_PI) + * (1. + 1./(12.*nu) + 1./(288.*nu*nu)); + double prefactor = pow(xo2, nu) / gamfactor; + double C[5]; + + C[0] = 1.; + C[1] = -C[0] / (nu+1.); + C[2] = -C[1] / (2.*(nu+2.)); + C[3] = -C[2] / (3.*(nu+3.)); + C[4] = -C[3] / (4.*(nu+4.)); + + result = 0.; + for(k=0; k<5; k++) + result += C[k] * pow(xo2, 2.*k); + + result *= prefactor; + } + else if(x < nu - llimit) + { + /* Small x region: x << l. */ + double z = x / nu; + double z2 = z*z; + double rtomz2 = sqrt(1.-z2); + double omz2_2 = (1.-z2)*(1.-z2); + + /* Calculate Meissel exponent. */ + double term1 = 1./(24.*nu) * ((2.+3.*z2)/((1.-z2)*rtomz2) -2.); + double term2 = - z2*(4. + z2)/(16.*nu2*(1.-z2)*omz2_2); + double V_nu = term1 + term2; + + /* Calculate the harmless prefactor. */ + double sterlingsum = 1. + 1./(12.*nu) + 1./(288*nu2); + double harmless = 1. / (sqrt(rtomz2*2.*M_PI*nu) * sterlingsum); + + /* Calculate the logarithm of the nu dependent prefactor. */ + double ln_nupre = rtomz2 + log(z) - log(1. + rtomz2); + + result = harmless * exp(nu*ln_nupre - V_nu); + } + else if(x < nu + ulimit) + { + /* Intermediate region 1: x near nu. */ + double eps = 1.-nu/x; + double eps_x = eps * x; + double eps_x_2 = eps_x * eps_x; + double xo6 = x/6.; + double B[6]; + static double gam[6] = {2.67894, 1.35412, 1., 0.89298, 0.902745, 1.}; + static double sf[6] = {0.866025, 0.866025, 0., -0.866025, -0.866025, 0.}; + + /* Some terms are identically zero, because sf[] can be zero. + * Some terms do not appear in the result. + */ + B[0] = 1.; + B[1] = eps_x; + /* B[2] = 0.5 * eps_x_2 - 1./20.; */ + B[3] = eps_x * (eps_x_2/6. - 1./15.); + B[4] = eps_x_2 * (eps_x_2 - 1.)/24. + 1./280.; + /* B[5] = eps_x * (eps_x_2*(0.5*eps_x_2 - 1.)/60. + 43./8400.); */ + + result = B[0] * gam[0] * sf[0] / pow(xo6, 1./3.); + result += B[1] * gam[1] * sf[1] / pow(xo6, 2./3.); + result += B[3] * gam[3] * sf[3] / pow(xo6, 4./3.); + result += B[4] * gam[4] * sf[4] / pow(xo6, 5./3.); + + result /= (3.*M_PI); + } + else + { + /* Region of very large argument. Use expansion + * for x>>l, and we need not be very exacting. + */ + double secb = x/nu; + double sec2b= secb*secb; + + double cotb = 1./sqrt(sec2b-1.); /* cotb=cot(beta) */ + + double beta = acos(nu/x); + double trigarg = nu/cotb - nu*beta - 0.25 * M_PI; + + double cot3b = cotb * cotb * cotb; + double cot6b = cot3b * cot3b; + + double sum1, sum2, expterm, prefactor, trigcos; + + sum1 = 2.0 + 3.0 * sec2b; + trigarg -= sum1 * cot3b / (24.0 * nu); + + trigcos = cos(trigarg); + + sum2 = 4.0 + sec2b; + expterm = sum2 * sec2b * cot6b / (16.0 * nu2); + + expterm = exp(-expterm); + prefactor = sqrt(2. * cotb / (nu * M_PI)); + + result = prefactor * expterm * trigcos; + } + + return result; +} +#endif diff --git a/gsl-2.5/specfunc/bessel.h b/gsl-2.5/specfunc/bessel.h new file mode 100644 index 00000000..b8a708ee --- /dev/null +++ b/gsl-2.5/specfunc/bessel.h @@ -0,0 +1,95 @@ +/* specfunc/bessel.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ + +#ifndef _BESSEL_H_ +#define _BESSEL_H_ + +#include + + +/* Taylor expansion for J_nu(x) or I_nu(x) + * sign = -1 ==> Jnu + * sign = +1 ==> Inu + */ +int gsl_sf_bessel_IJ_taylor_e(const double nu, const double x, + const int sign, + const int kmax, + const double threshold, + gsl_sf_result * result + ); + +int gsl_sf_bessel_Jnu_asympx_e(const double nu, const double x, gsl_sf_result * result); +int gsl_sf_bessel_Ynu_asympx_e(const double nu, const double x, gsl_sf_result * result); + +int gsl_sf_bessel_Jnupos_e(const double nu, const double x, gsl_sf_result * result); +int gsl_sf_bessel_Ynupos_e(const double nu, const double x, gsl_sf_result * result); + +int gsl_sf_bessel_Inu_scaled_asympx_e(const double nu, const double x, gsl_sf_result * result); +int gsl_sf_bessel_Knu_scaled_asympx_e(const double nu, const double x, gsl_sf_result * result); + +int gsl_sf_bessel_Inu_scaled_asymp_unif_e(const double nu, const double x, gsl_sf_result * result); +int gsl_sf_bessel_Knu_scaled_asymp_unif_e(const double nu, const double x, gsl_sf_result * result); + + +/* ratio = J_{nu+1}(x) / J_nu(x) + * sgn = sgn(J_nu(x)) + */ +int +gsl_sf_bessel_J_CF1(const double nu, const double x, double * ratio, double * sgn); + + +/* ratio = I_{nu+1}(x) / I_nu(x) + */ +int +gsl_sf_bessel_I_CF1_ser(const double nu, const double x, double * ratio); + + +/* Evaluate the Steed method continued fraction CF2 for + * + * (J' + i Y')/(J + i Y) := P + i Q + */ +int +gsl_sf_bessel_JY_steed_CF2(const double nu, const double x, + double * P, double * Q); + + +int +gsl_sf_bessel_JY_mu_restricted(const double mu, const double x, + gsl_sf_result * Jmu, gsl_sf_result * Jmup1, + gsl_sf_result * Ymu, gsl_sf_result * Ymup1); + + +int +gsl_sf_bessel_K_scaled_steed_temme_CF2(const double nu, const double x, + double * K_nu, double * K_nup1, + double * Kp_nu); + + +/* These are of use in calculating the oscillating + * Bessel functions. + * cos(y - pi/4 + eps) + * sin(y - pi/4 + eps) + */ +int gsl_sf_bessel_cos_pi4_e(double y, double eps, gsl_sf_result * result); +int gsl_sf_bessel_sin_pi4_e(double y, double eps, gsl_sf_result * result); + + +#endif /* !_BESSEL_H_ */ diff --git a/gsl-2.5/specfunc/bessel.lo b/gsl-2.5/specfunc/bessel.lo new file mode 100644 index 00000000..9b6d0555 --- /dev/null +++ b/gsl-2.5/specfunc/bessel.lo @@ -0,0 +1,12 @@ +# bessel.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/bessel.o' + +# Name of the non-PIC object +non_pic_object='bessel.o' + diff --git a/gsl-2.5/specfunc/bessel_I0.c b/gsl-2.5/specfunc/bessel_I0.c new file mode 100644 index 00000000..8e1be8b7 --- /dev/null +++ b/gsl-2.5/specfunc/bessel_I0.c @@ -0,0 +1,232 @@ +/* specfunc/bessel_I0.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ + +#include +#include +#include +#include + +#include "error.h" + +#include "chebyshev.h" +#include "cheb_eval.c" + +/*-*-*-*-*-*-*-*-*-*-*-* Private Section *-*-*-*-*-*-*-*-*-*-*-*/ + + +/* based on SLATEC besi0 */ + +/* chebyshev expansions + + series for bi0 on the interval 0. to 9.00000d+00 + with weighted error 2.46e-18 + log weighted error 17.61 + significant figures required 17.90 + decimal places required 18.15 + + series for ai0 on the interval 1.25000d-01 to 3.33333d-01 + with weighted error 7.87e-17 + log weighted error 16.10 + significant figures required 14.69 + decimal places required 16.76 + + + series for ai02 on the interval 0. to 1.25000d-01 + with weighted error 3.79e-17 + log weighted error 16.42 + significant figures required 14.86 + decimal places required 17.09 +*/ + +static double bi0_data[12] = { + -.07660547252839144951, + 1.92733795399380827000, + .22826445869203013390, + .01304891466707290428, + .00043442709008164874, + .00000942265768600193, + .00000014340062895106, + .00000000161384906966, + .00000000001396650044, + .00000000000009579451, + .00000000000000053339, + .00000000000000000245 +}; +static cheb_series bi0_cs = { + bi0_data, + 11, + -1, 1, + 11 +}; + +static double ai0_data[21] = { + .07575994494023796, + .00759138081082334, + .00041531313389237, + .00001070076463439, + -.00000790117997921, + -.00000078261435014, + .00000027838499429, + .00000000825247260, + -.00000001204463945, + .00000000155964859, + .00000000022925563, + -.00000000011916228, + .00000000001757854, + .00000000000112822, + -.00000000000114684, + .00000000000027155, + -.00000000000002415, + -.00000000000000608, + .00000000000000314, + -.00000000000000071, + .00000000000000007 +}; +static cheb_series ai0_cs = { + ai0_data, + 20, + -1, 1, + 13 +}; + +static double ai02_data[22] = { + .05449041101410882, + .00336911647825569, + .00006889758346918, + .00000289137052082, + .00000020489185893, + .00000002266668991, + .00000000339623203, + .00000000049406022, + .00000000001188914, + -.00000000003149915, + -.00000000001321580, + -.00000000000179419, + .00000000000071801, + .00000000000038529, + .00000000000001539, + -.00000000000004151, + -.00000000000000954, + .00000000000000382, + .00000000000000176, + -.00000000000000034, + -.00000000000000027, + .00000000000000003 +}; +static cheb_series ai02_cs = { + ai02_data, + 21, + -1, 1, + 11 +}; + + +/*-*-*-*-*-*-*-*-*-*-*-* Functions with Error Codes *-*-*-*-*-*-*-*-*-*-*-*/ + +int gsl_sf_bessel_I0_scaled_e(const double x, gsl_sf_result * result) +{ + double y = fabs(x); + + /* CHECK_POINTER(result) */ + + if(y < 2.0 * GSL_SQRT_DBL_EPSILON) { + result->val = 1.0 - y; + result->err = 0.5*y*y; + return GSL_SUCCESS; + } + else if(y <= 3.0) { + const double ey = exp(-y); + gsl_sf_result c; + cheb_eval_e(&bi0_cs, y*y/4.5-1.0, &c); + result->val = ey * (2.75 + c.val); + result->err = GSL_DBL_EPSILON * fabs(result->val) + ey * c.err; + return GSL_SUCCESS; + } + else if(y <= 8.0) { + const double sy = sqrt(y); + gsl_sf_result c; + cheb_eval_e(&ai0_cs, (48.0/y-11.0)/5.0, &c); + result->val = (0.375 + c.val) / sy; + result->err = 2.0 * GSL_DBL_EPSILON * (0.375 + fabs(c.val)) / sy; + result->err += c.err / sy; + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else { + const double sy = sqrt(y); + gsl_sf_result c; + cheb_eval_e(&ai02_cs, 16.0/y-1.0, &c); + result->val = (0.375 + c.val) / sy; + result->err = 2.0 * GSL_DBL_EPSILON * (0.375 + fabs(c.val)) / sy; + result->err += c.err / sy; + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } +} + + +int gsl_sf_bessel_I0_e(const double x, gsl_sf_result * result) +{ + double y = fabs(x); + + /* CHECK_POINTER(result) */ + + if(y < 2.0 * GSL_SQRT_DBL_EPSILON) { + result->val = 1.0; + result->err = 0.5*y*y; + return GSL_SUCCESS; + } + else if(y <= 3.0) { + gsl_sf_result c; + cheb_eval_e(&bi0_cs, y*y/4.5-1.0, &c); + result->val = 2.75 + c.val; + result->err = GSL_DBL_EPSILON * (2.75 + fabs(c.val)); + result->err += c.err; + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else if(y < GSL_LOG_DBL_MAX - 1.0) { + const double ey = exp(y); + gsl_sf_result b_scaled; + gsl_sf_bessel_I0_scaled_e(x, &b_scaled); + result->val = ey * b_scaled.val; + result->err = ey * b_scaled.err + y*GSL_DBL_EPSILON*fabs(result->val); + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else { + OVERFLOW_ERROR(result); + } +} + +/*-*-*-*-*-*-*-*-*-* Functions w/ Natural Prototypes *-*-*-*-*-*-*-*-*-*-*/ + +#include "eval.h" + +double gsl_sf_bessel_I0_scaled(const double x) +{ + EVAL_RESULT(gsl_sf_bessel_I0_scaled_e(x, &result); ) +} + +double gsl_sf_bessel_I0(const double x) +{ + EVAL_RESULT(gsl_sf_bessel_I0_e(x, &result); ) +} diff --git a/gsl-2.5/specfunc/bessel_I0.lo b/gsl-2.5/specfunc/bessel_I0.lo new file mode 100644 index 00000000..6f909a3f --- /dev/null +++ b/gsl-2.5/specfunc/bessel_I0.lo @@ -0,0 +1,12 @@ +# bessel_I0.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/bessel_I0.o' + +# Name of the non-PIC object +non_pic_object='bessel_I0.o' + diff --git a/gsl-2.5/specfunc/bessel_I1.c b/gsl-2.5/specfunc/bessel_I1.c new file mode 100644 index 00000000..b5d30fd3 --- /dev/null +++ b/gsl-2.5/specfunc/bessel_I1.c @@ -0,0 +1,258 @@ +/* specfunc/bessel_I1.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ + +#include +#include +#include +#include + +#include "error.h" + +#include "chebyshev.h" +#include "cheb_eval.c" + +#define ROOT_EIGHT (2.0*M_SQRT2) + + +/*-*-*-*-*-*-*-*-*-*-*-* Private Section *-*-*-*-*-*-*-*-*-*-*-*/ + +/* based on SLATEC besi1(), besi1e() */ + +/* chebyshev expansions + + series for bi1 on the interval 0. to 9.00000d+00 + with weighted error 2.40e-17 + log weighted error 16.62 + significant figures required 16.23 + decimal places required 17.14 + + series for ai1 on the interval 1.25000d-01 to 3.33333d-01 + with weighted error 6.98e-17 + log weighted error 16.16 + significant figures required 14.53 + decimal places required 16.82 + + series for ai12 on the interval 0. to 1.25000d-01 + with weighted error 3.55e-17 + log weighted error 16.45 + significant figures required 14.69 + decimal places required 17.12 +*/ + +static double bi1_data[11] = { + -0.001971713261099859, + 0.407348876675464810, + 0.034838994299959456, + 0.001545394556300123, + 0.000041888521098377, + 0.000000764902676483, + 0.000000010042493924, + 0.000000000099322077, + 0.000000000000766380, + 0.000000000000004741, + 0.000000000000000024 +}; +static cheb_series bi1_cs = { + bi1_data, + 10, + -1, 1, + 10 +}; + +static double ai1_data[21] = { + -0.02846744181881479, + -0.01922953231443221, + -0.00061151858579437, + -0.00002069971253350, + 0.00000858561914581, + 0.00000104949824671, + -0.00000029183389184, + -0.00000001559378146, + 0.00000001318012367, + -0.00000000144842341, + -0.00000000029085122, + 0.00000000012663889, + -0.00000000001664947, + -0.00000000000166665, + 0.00000000000124260, + -0.00000000000027315, + 0.00000000000002023, + 0.00000000000000730, + -0.00000000000000333, + 0.00000000000000071, + -0.00000000000000006 +}; +static cheb_series ai1_cs = { + ai1_data, + 20, + -1, 1, + 11 +}; + +static double ai12_data[22] = { + 0.02857623501828014, + -0.00976109749136147, + -0.00011058893876263, + -0.00000388256480887, + -0.00000025122362377, + -0.00000002631468847, + -0.00000000383538039, + -0.00000000055897433, + -0.00000000001897495, + 0.00000000003252602, + 0.00000000001412580, + 0.00000000000203564, + -0.00000000000071985, + -0.00000000000040836, + -0.00000000000002101, + 0.00000000000004273, + 0.00000000000001041, + -0.00000000000000382, + -0.00000000000000186, + 0.00000000000000033, + 0.00000000000000028, + -0.00000000000000003 +}; +static cheb_series ai12_cs = { + ai12_data, + 21, + -1, 1, + 9 +}; + + +/*-*-*-*-*-*-*-*-*-*-*-* Functions with Error Codes *-*-*-*-*-*-*-*-*-*-*-*/ + +int gsl_sf_bessel_I1_scaled_e(const double x, gsl_sf_result * result) +{ + const double xmin = 2.0 * GSL_DBL_MIN; + const double x_small = ROOT_EIGHT * GSL_SQRT_DBL_EPSILON; + const double y = fabs(x); + + /* CHECK_POINTER(result) */ + + if(y == 0.0) { + result->val = 0.0; + result->err = 0.0; + return GSL_SUCCESS; + } + else if(y < xmin) { + UNDERFLOW_ERROR(result); + } + else if(y < x_small) { + result->val = 0.5*x; + result->err = 0.0; + return GSL_SUCCESS; + } + else if(y <= 3.0) { + const double ey = exp(-y); + gsl_sf_result c; + cheb_eval_e(&bi1_cs, y*y/4.5-1.0, &c); + result->val = x * ey * (0.875 + c.val); + result->err = ey * c.err + y * GSL_DBL_EPSILON * fabs(result->val); + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else if(y <= 8.0) { + const double sy = sqrt(y); + gsl_sf_result c; + double b; + double s; + cheb_eval_e(&ai1_cs, (48.0/y-11.0)/5.0, &c); + b = (0.375 + c.val) / sy; + s = (x > 0.0 ? 1.0 : -1.0); + result->val = s * b; + result->err = c.err / sy; + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else { + const double sy = sqrt(y); + gsl_sf_result c; + double b; + double s; + cheb_eval_e(&ai12_cs, 16.0/y-1.0, &c); + b = (0.375 + c.val) / sy; + s = (x > 0.0 ? 1.0 : -1.0); + result->val = s * b; + result->err = c.err / sy; + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } +} + + +int gsl_sf_bessel_I1_e(const double x, gsl_sf_result * result) +{ + const double xmin = 2.0 * GSL_DBL_MIN; + const double x_small = ROOT_EIGHT * GSL_SQRT_DBL_EPSILON; + const double y = fabs(x); + + /* CHECK_POINTER(result) */ + + if(y == 0.0) { + result->val = 0.0; + result->err = 0.0; + return GSL_SUCCESS; + } + else if(y < xmin) { + UNDERFLOW_ERROR(result); + } + else if(y < x_small) { + result->val = 0.5*x; + result->err = 0.0; + return GSL_SUCCESS; + } + else if(y <= 3.0) { + gsl_sf_result c; + cheb_eval_e(&bi1_cs, y*y/4.5-1.0, &c); + result->val = x * (0.875 + c.val); + result->err = y * c.err; + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else if(y < GSL_LOG_DBL_MAX) { + const double ey = exp(y); + gsl_sf_result I1_scaled; + gsl_sf_bessel_I1_scaled_e(x, &I1_scaled); + result->val = ey * I1_scaled.val; + result->err = ey * I1_scaled.err + y * GSL_DBL_EPSILON * fabs(result->val); + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else { + OVERFLOW_ERROR(result); + } +} + +/*-*-*-*-*-*-*-*-*-* Functions w/ Natural Prototypes *-*-*-*-*-*-*-*-*-*-*/ + +#include "eval.h" + +double gsl_sf_bessel_I1_scaled(const double x) +{ + EVAL_RESULT(gsl_sf_bessel_I1_scaled_e(x, &result)); +} + +double gsl_sf_bessel_I1(const double x) +{ + EVAL_RESULT(gsl_sf_bessel_I1_e(x, &result)); +} diff --git a/gsl-2.5/specfunc/bessel_I1.lo b/gsl-2.5/specfunc/bessel_I1.lo new file mode 100644 index 00000000..31f46fa0 --- /dev/null +++ b/gsl-2.5/specfunc/bessel_I1.lo @@ -0,0 +1,12 @@ +# bessel_I1.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/bessel_I1.o' + +# Name of the non-PIC object +non_pic_object='bessel_I1.o' + diff --git a/gsl-2.5/specfunc/bessel_In.c b/gsl-2.5/specfunc/bessel_In.c new file mode 100644 index 00000000..74da5fc5 --- /dev/null +++ b/gsl-2.5/specfunc/bessel_In.c @@ -0,0 +1,225 @@ +/* specfunc/bessel_In.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ + +#include +#include +#include +#include + +#include "error.h" + +#include "bessel.h" + +/*-*-*-*-*-*-*-*-*-*-*-* Functions with Error Codes *-*-*-*-*-*-*-*-*-*-*-*/ + + +int +gsl_sf_bessel_In_scaled_e(int n, const double x, gsl_sf_result * result) +{ + const double ax = fabs(x); + + n = abs(n); /* I(-n, z) = I(n, z) */ + + /* CHECK_POINTER(result) */ + + if(n == 0) { + return gsl_sf_bessel_I0_scaled_e(x, result); + } + else if(n == 1) { + return gsl_sf_bessel_I1_scaled_e(x, result); + } + else if(x == 0.0) { + result->val = 0.0; + result->err = 0.0; + return GSL_SUCCESS; + } + else if(x*x < 10.0*(n+1.0)/M_E) { + gsl_sf_result t; + double ex = exp(-ax); + int stat_In = gsl_sf_bessel_IJ_taylor_e((double)n, ax, 1, 50, GSL_DBL_EPSILON, &t); + result->val = t.val * ex; + result->err = t.err * ex; + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + if(x < 0.0 && GSL_IS_ODD(n)) result->val = -result->val; + return stat_In; + } + else if(n < 150 && ax < 1e7) { + gsl_sf_result I0_scaled; + int stat_I0 = gsl_sf_bessel_I0_scaled_e(ax, &I0_scaled); + double rat; + int stat_CF1 = gsl_sf_bessel_I_CF1_ser((double)n, ax, &rat); + double Ikp1 = rat * GSL_SQRT_DBL_MIN; + double Ik = GSL_SQRT_DBL_MIN; + double Ikm1; + int k; + for(k=n; k >= 1; k--) { + Ikm1 = Ikp1 + 2.0*k/ax * Ik; + Ikp1 = Ik; + Ik = Ikm1; + } + result->val = I0_scaled.val * (GSL_SQRT_DBL_MIN / Ik); + result->err = I0_scaled.err * (GSL_SQRT_DBL_MIN / Ik); + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + if(x < 0.0 && GSL_IS_ODD(n)) result->val = -result->val; + return GSL_ERROR_SELECT_2(stat_I0, stat_CF1); + } + else if( GSL_MIN( 0.29/(n*n), 0.5/(n*n + x*x) ) < 0.5*GSL_ROOT3_DBL_EPSILON) { + int stat_as = gsl_sf_bessel_Inu_scaled_asymp_unif_e((double)n, ax, result); + if(x < 0.0 && GSL_IS_ODD(n)) result->val = -result->val; + return stat_as; + } + else { + const int nhi = 2 + (int) (1.2 / GSL_ROOT6_DBL_EPSILON); + gsl_sf_result r_Ikp1; + gsl_sf_result r_Ik; + int stat_a1 = gsl_sf_bessel_Inu_scaled_asymp_unif_e(nhi+1.0, ax, &r_Ikp1); + int stat_a2 = gsl_sf_bessel_Inu_scaled_asymp_unif_e((double)nhi, ax, &r_Ik); + double Ikp1 = r_Ikp1.val; + double Ik = r_Ik.val; + double Ikm1; + int k; + for(k=nhi; k > n; k--) { + Ikm1 = Ikp1 + 2.0*k/ax * Ik; + Ikp1 = Ik; + Ik = Ikm1; + } + result->val = Ik; + result->err = Ik * (r_Ikp1.err/r_Ikp1.val + r_Ik.err/r_Ik.val); + if(x < 0.0 && GSL_IS_ODD(n)) result->val = -result->val; + return GSL_ERROR_SELECT_2(stat_a1, stat_a2); + } +} + + +int +gsl_sf_bessel_In_scaled_array(const int nmin, const int nmax, const double x, double * result_array) +{ + /* CHECK_POINTER(result_array) */ + + if(nmax < nmin || nmin < 0) { + int j; + for(j=0; j<=nmax-nmin; j++) result_array[j] = 0.0; + GSL_ERROR ("domain error", GSL_EDOM); + } + else if(x == 0.0) { + int j; + for(j=0; j<=nmax-nmin; j++) result_array[j] = 0.0; + if(nmin == 0) result_array[0] = 1.0; + return GSL_SUCCESS; + } + else if(nmax == 0) { + gsl_sf_result I0_scaled; + int stat = gsl_sf_bessel_I0_scaled_e(x, &I0_scaled); + result_array[0] = I0_scaled.val; + return stat; + } + else { + const double ax = fabs(x); + const double two_over_x = 2.0/ax; + + /* starting values */ + gsl_sf_result r_Inp1; + gsl_sf_result r_In; + int stat_0 = gsl_sf_bessel_In_scaled_e(nmax+1, ax, &r_Inp1); + int stat_1 = gsl_sf_bessel_In_scaled_e(nmax, ax, &r_In); + double Inp1 = r_Inp1.val; + double In = r_In.val; + double Inm1; + int n; + + for(n=nmax; n>=nmin; n--) { + result_array[n-nmin] = In; + Inm1 = Inp1 + n * two_over_x * In; + Inp1 = In; + In = Inm1; + } + + /* deal with signs */ + if(x < 0.0) { + for(n=nmin; n<=nmax; n++) { + if(GSL_IS_ODD(n)) result_array[n-nmin] = -result_array[n-nmin]; + } + } + + return GSL_ERROR_SELECT_2(stat_0, stat_1); + } +} + + +int +gsl_sf_bessel_In_e(const int n_in, const double x, gsl_sf_result * result) +{ + const double ax = fabs(x); + const int n = abs(n_in); /* I(-n, z) = I(n, z) */ + gsl_sf_result In_scaled; + const int stat_In_scaled = gsl_sf_bessel_In_scaled_e(n, ax, &In_scaled); + + /* In_scaled is always less than 1, + * so this overflow check is conservative. + */ + if(ax > GSL_LOG_DBL_MAX - 1.0) { + OVERFLOW_ERROR(result); + } + else { + const double ex = exp(ax); + result->val = ex * In_scaled.val; + result->err = ex * In_scaled.err; + result->err += ax * GSL_DBL_EPSILON * fabs(result->val); + if(x < 0.0 && GSL_IS_ODD(n)) result->val = -result->val; + return stat_In_scaled; + } +} + + +int +gsl_sf_bessel_In_array(const int nmin, const int nmax, const double x, double * result_array) +{ + double ax = fabs(x); + + /* CHECK_POINTER(result_array) */ + + if(ax > GSL_LOG_DBL_MAX - 1.0) { + int j; + for(j=0; j<=nmax-nmin; j++) result_array[j] = 0.0; /* FIXME: should be Inf */ + GSL_ERROR ("overflow", GSL_EOVRFLW); + } + else { + int j; + double eax = exp(ax); + int status = gsl_sf_bessel_In_scaled_array(nmin, nmax, x, result_array); + for(j=0; j<=nmax-nmin; j++) result_array[j] *= eax; + return status; + } +} + +/*-*-*-*-*-*-*-*-*-* Functions w/ Natural Prototypes *-*-*-*-*-*-*-*-*-*-*/ + +#include "eval.h" + +double gsl_sf_bessel_In_scaled(const int n, const double x) +{ + EVAL_RESULT(gsl_sf_bessel_In_scaled_e(n, x, &result)); +} + +double gsl_sf_bessel_In(const int n, const double x) +{ + EVAL_RESULT(gsl_sf_bessel_In_e(n, x, &result)); +} diff --git a/gsl-2.5/specfunc/bessel_In.lo b/gsl-2.5/specfunc/bessel_In.lo new file mode 100644 index 00000000..d21a4472 --- /dev/null +++ b/gsl-2.5/specfunc/bessel_In.lo @@ -0,0 +1,12 @@ +# bessel_In.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/bessel_In.o' + +# Name of the non-PIC object +non_pic_object='bessel_In.o' + diff --git a/gsl-2.5/specfunc/bessel_Inu.c b/gsl-2.5/specfunc/bessel_Inu.c new file mode 100644 index 00000000..b3a1a9e1 --- /dev/null +++ b/gsl-2.5/specfunc/bessel_Inu.c @@ -0,0 +1,122 @@ +/* specfunc/bessel_Inu.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ + +#include +#include +#include +#include +#include +#include + +#include "error.h" + +#include "bessel.h" +#include "bessel_temme.h" + + +/*-*-*-*-*-*-*-*-*-*-*-* Functions with Error Codes *-*-*-*-*-*-*-*-*-*-*-*/ + +int +gsl_sf_bessel_Inu_scaled_e(double nu, double x, gsl_sf_result * result) +{ + /* CHECK_POINTER(result) */ + + if(x < 0.0 || nu < 0.0) { + DOMAIN_ERROR(result); + } + else if(x*x < 10.0*(nu+1.0)) { + gsl_sf_result b; + double ex = exp(-x); + int stat = gsl_sf_bessel_IJ_taylor_e(nu, x, 1, 100, GSL_DBL_EPSILON, &b); + result->val = b.val * ex; + result->err = b.err * ex; + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return stat; + } + else if(0.5/(nu*nu + x*x) < GSL_ROOT3_DBL_EPSILON) { + return gsl_sf_bessel_Inu_scaled_asymp_unif_e(nu, x, result); + } + else { + int N = (int)(nu + 0.5); + double mu = nu - N; /* -1/2 <= mu <= 1/2 */ + double K_mu, K_mup1, Kp_mu; + double K_nu, K_nup1, K_num1; + double I_nu_ratio; + int stat_Irat; + int stat_Kmu; + int n; + + /* obtain K_mu, K_mup1 */ + if(x < 2.0) { + stat_Kmu = gsl_sf_bessel_K_scaled_temme(mu, x, &K_mu, &K_mup1, &Kp_mu); + } + else { + stat_Kmu = gsl_sf_bessel_K_scaled_steed_temme_CF2(mu, x, &K_mu, &K_mup1, &Kp_mu); + } + + /* recurse forward to obtain K_num1, K_nu */ + K_nu = K_mu; + K_nup1 = K_mup1; + + for(n=0; nval = 1.0/(x * (K_nup1 + I_nu_ratio * K_nu)); + result->err = GSL_DBL_EPSILON * (0.5*N + 2.0) * fabs(result->val); + + return GSL_ERROR_SELECT_2(stat_Kmu, stat_Irat); + } +} + + +int +gsl_sf_bessel_Inu_e(double nu, double x, gsl_sf_result * result) +{ + gsl_sf_result b; + int stat_I = gsl_sf_bessel_Inu_scaled_e(nu, x, &b); + int stat_e = gsl_sf_exp_mult_err_e(x, fabs(x*GSL_DBL_EPSILON), + b.val, b.err, + result); + return GSL_ERROR_SELECT_2(stat_e, stat_I); +} + + +/*-*-*-*-*-*-*-*-*-* Functions w/ Natural Prototypes *-*-*-*-*-*-*-*-*-*-*/ + +#include "eval.h" + +double gsl_sf_bessel_Inu_scaled(double nu, double x) +{ + EVAL_RESULT(gsl_sf_bessel_Inu_scaled_e(nu, x, &result)); +} + + +double gsl_sf_bessel_Inu(double nu, double x) +{ + EVAL_RESULT(gsl_sf_bessel_Inu_e(nu, x, &result)); +} diff --git a/gsl-2.5/specfunc/bessel_Inu.lo b/gsl-2.5/specfunc/bessel_Inu.lo new file mode 100644 index 00000000..735867e6 --- /dev/null +++ b/gsl-2.5/specfunc/bessel_Inu.lo @@ -0,0 +1,12 @@ +# bessel_Inu.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/bessel_Inu.o' + +# Name of the non-PIC object +non_pic_object='bessel_Inu.o' + diff --git a/gsl-2.5/specfunc/bessel_J0.c b/gsl-2.5/specfunc/bessel_J0.c new file mode 100644 index 00000000..a0fc5810 --- /dev/null +++ b/gsl-2.5/specfunc/bessel_J0.c @@ -0,0 +1,111 @@ +/* specfunc/bessel_J0.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ + +#include +#include +#include +#include +#include "bessel.h" +#include "bessel_amp_phase.h" +#include +#include + +#include "cheb_eval.c" + +/*-*-*-*-*-*-*-*-*-*-*-* Private Section *-*-*-*-*-*-*-*-*-*-*-*/ + + +/* based on SLATEC besj0, 1977 version, w. fullerton */ + +/* chebyshev expansions for Bessel functions + + series for bj0 on the interval 0. to 1.60000d+01 + with weighted error 7.47e-18 + log weighted error 17.13 + significant figures required 16.98 + decimal places required 17.68 + +*/ + +static double bj0_data[13] = { + 0.100254161968939137, + -0.665223007764405132, + 0.248983703498281314, + -0.0332527231700357697, + 0.0023114179304694015, + -0.0000991127741995080, + 0.0000028916708643998, + -0.0000000612108586630, + 0.0000000009838650793, + -0.0000000000124235515, + 0.0000000000001265433, + -0.0000000000000010619, + 0.0000000000000000074, +}; +static cheb_series bj0_cs = { + bj0_data, + 12, + -1, 1, + 9 +}; + + +/*-*-*-*-*-*-*-*-*-*-*-* Functions with Error Codes *-*-*-*-*-*-*-*-*-*-*-*/ + +int gsl_sf_bessel_J0_e(const double x, gsl_sf_result * result) +{ + double y = fabs(x); + + /* CHECK_POINTER(result) */ + + if(y < 2.0*GSL_SQRT_DBL_EPSILON) { + result->val = 1.0; + result->err = y*y; + return GSL_SUCCESS; + } + else if(y <= 4.0) { + return cheb_eval_e(&bj0_cs, 0.125*y*y - 1.0, result); + } + else { + const double z = 32.0/(y*y) - 1.0; + gsl_sf_result ca; + gsl_sf_result ct; + gsl_sf_result cp; + const int stat_ca = cheb_eval_e(&_gsl_sf_bessel_amp_phase_bm0_cs, z, &ca); + const int stat_ct = cheb_eval_e(&_gsl_sf_bessel_amp_phase_bth0_cs, z, &ct); + const int stat_cp = gsl_sf_bessel_cos_pi4_e(y, ct.val/y, &cp); + const double sqrty = sqrt(y); + const double ampl = (0.75 + ca.val) / sqrty; + result->val = ampl * cp.val; + result->err = fabs(cp.val) * ca.err/sqrty + fabs(ampl) * cp.err; + result->err += GSL_DBL_EPSILON * fabs(result->val); + return GSL_ERROR_SELECT_3(stat_ca, stat_ct, stat_cp); + } +} + +/*-*-*-*-*-*-*-*-*-* Functions w/ Natural Prototypes *-*-*-*-*-*-*-*-*-*-*/ + +#include "eval.h" + +double gsl_sf_bessel_J0(const double x) +{ + EVAL_RESULT(gsl_sf_bessel_J0_e(x, &result)); +} diff --git a/gsl-2.5/specfunc/bessel_J0.lo b/gsl-2.5/specfunc/bessel_J0.lo new file mode 100644 index 00000000..69037f11 --- /dev/null +++ b/gsl-2.5/specfunc/bessel_J0.lo @@ -0,0 +1,12 @@ +# bessel_J0.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/bessel_J0.o' + +# Name of the non-PIC object +non_pic_object='bessel_J0.o' + diff --git a/gsl-2.5/specfunc/bessel_J1.c b/gsl-2.5/specfunc/bessel_J1.c new file mode 100644 index 00000000..e38c30b6 --- /dev/null +++ b/gsl-2.5/specfunc/bessel_J1.c @@ -0,0 +1,128 @@ +/* specfunc/bessel_J1.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ + +#include +#include +#include +#include +#include + +#include "error.h" + +#include "bessel.h" +#include "bessel_amp_phase.h" +#include "cheb_eval.c" + +#define ROOT_EIGHT (2.0*M_SQRT2) + +/*-*-*-*-*-*-*-*-*-*-*-* Private Section *-*-*-*-*-*-*-*-*-*-*-*/ + + +/* based on SLATEC besj1, 1983 version, w. fullerton */ + +/* chebyshev expansions + + series for bj1 on the interval 0. to 1.60000d+01 + with weighted error 4.48e-17 + log weighted error 16.35 + significant figures required 15.77 + decimal places required 16.89 + +*/ +static double bj1_data[12] = { + -0.11726141513332787, + -0.25361521830790640, + 0.050127080984469569, + -0.004631514809625081, + 0.000247996229415914, + -0.000008678948686278, + 0.000000214293917143, + -0.000000003936093079, + 0.000000000055911823, + -0.000000000000632761, + 0.000000000000005840, + -0.000000000000000044, +}; +static cheb_series bj1_cs = { + bj1_data, + 11, + -1, 1, + 8 +}; + + +/*-*-*-*-*-*-*-*-*-*-*-* Functions with Error Codes *-*-*-*-*-*-*-*-*-*-*-*/ + +int gsl_sf_bessel_J1_e(const double x, gsl_sf_result * result) +{ + double y = fabs(x); + + /* CHECK_POINTER(result) */ + + if(y == 0.0) { + result->val = 0.0; + result->err = 0.0; + return GSL_SUCCESS; + } + else if(y < 2.0*GSL_DBL_MIN) { + UNDERFLOW_ERROR(result); + } + else if(y < ROOT_EIGHT * GSL_SQRT_DBL_EPSILON) { + result->val = 0.5*x; + result->err = 0.0; + return GSL_SUCCESS; + } + else if(y < 4.0) { + gsl_sf_result c; + cheb_eval_e(&bj1_cs, 0.125*y*y-1.0, &c); + result->val = x * (0.25 + c.val); + result->err = fabs(x * c.err); + return GSL_SUCCESS; + } + else { + /* Because the leading term in the phase is y, + * which we assume is exactly known, the error + * in the cos() evaluation is bounded. + */ + const double z = 32.0/(y*y) - 1.0; + gsl_sf_result ca; + gsl_sf_result ct; + gsl_sf_result sp; + const int stat_ca = cheb_eval_e(&_gsl_sf_bessel_amp_phase_bm1_cs, z, &ca); + const int stat_ct = cheb_eval_e(&_gsl_sf_bessel_amp_phase_bth1_cs, z, &ct); + const int stat_sp = gsl_sf_bessel_sin_pi4_e(y, ct.val/y, &sp); + const double sqrty = sqrt(y); + const double ampl = (0.75 + ca.val) / sqrty; + result->val = (x < 0.0 ? -ampl : ampl) * sp.val; + result->err = fabs(sp.val) * ca.err/sqrty + fabs(ampl) * sp.err; + result->err += GSL_DBL_EPSILON * fabs(result->val); + return GSL_ERROR_SELECT_3(stat_ca, stat_ct, stat_sp); + } +} + +/*-*-*-*-*-*-*-*-*-* Functions w/ Natural Prototypes *-*-*-*-*-*-*-*-*-*-*/ + +#include "eval.h" + +double gsl_sf_bessel_J1(const double x) +{ + EVAL_RESULT(gsl_sf_bessel_J1_e(x, &result)); +} diff --git a/gsl-2.5/specfunc/bessel_J1.lo b/gsl-2.5/specfunc/bessel_J1.lo new file mode 100644 index 00000000..a4483247 --- /dev/null +++ b/gsl-2.5/specfunc/bessel_J1.lo @@ -0,0 +1,12 @@ +# bessel_J1.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/bessel_J1.o' + +# Name of the non-PIC object +non_pic_object='bessel_J1.o' + diff --git a/gsl-2.5/specfunc/bessel_Jn.c b/gsl-2.5/specfunc/bessel_Jn.c new file mode 100644 index 00000000..3d5c9581 --- /dev/null +++ b/gsl-2.5/specfunc/bessel_Jn.c @@ -0,0 +1,199 @@ +/* specfunc/bessel_Jn.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ + +#include +#include +#include +#include +#include "bessel.h" +#include "bessel_amp_phase.h" +#include "bessel_olver.h" +#include + + + +/*-*-*-*-*-*-*-*-*-*-*-* Functions with Error Codes *-*-*-*-*-*-*-*-*-*-*-*/ + + +int gsl_sf_bessel_Jn_e(int n, double x, gsl_sf_result * result) +{ + int sign = 1; + + if(n < 0) { + /* reduce to case n >= 0 */ + n = -n; + if(GSL_IS_ODD(n)) sign = -sign; + } + + if(x < 0.0) { + /* reduce to case x >= 0. */ + x = -x; + if(GSL_IS_ODD(n)) sign = -sign; + } + + /* CHECK_POINTER(result) */ + + if(n == 0) { + gsl_sf_result b0; + int stat_J0 = gsl_sf_bessel_J0_e(x, &b0); + result->val = sign * b0.val; + result->err = b0.err; + return stat_J0; + } + else if(n == 1) { + gsl_sf_result b1; + int stat_J1 = gsl_sf_bessel_J1_e(x, &b1); + result->val = sign * b1.val; + result->err = b1.err; + return stat_J1; + } + else { + if(x == 0.0) { + result->val = 0.0; + result->err = 0.0; + return GSL_SUCCESS; + } + else if(x*x < 10.0*(n+1.0)*GSL_ROOT5_DBL_EPSILON) { + gsl_sf_result b; + int status = gsl_sf_bessel_IJ_taylor_e((double)n, x, -1, 50, GSL_DBL_EPSILON, &b); + result->val = sign * b.val; + result->err = b.err; + result->err += GSL_DBL_EPSILON * fabs(result->val); + return status; + } + else if(GSL_ROOT4_DBL_EPSILON * x > (n*n+1.0)) { + int status = gsl_sf_bessel_Jnu_asympx_e((double)n, x, result); + result->val *= sign; + return status; + } + else if(n > 50) { + int status = gsl_sf_bessel_Jnu_asymp_Olver_e((double)n, x, result); + result->val *= sign; + return status; + } + else if(x > 1000.0) + { + /* We need this to avoid feeding large x to CF1; note that + * due to the above check, we know that n <= 50. + */ + int status = gsl_sf_bessel_Jnu_asympx_e((double)n, x, result); + result->val *= sign; + return status; + } + else { + double ans; + double err; + double ratio; + double sgn; + int stat_b; + int stat_CF1 = gsl_sf_bessel_J_CF1((double)n, x, &ratio, &sgn); + + /* backward recurrence */ + double Jkp1 = GSL_SQRT_DBL_MIN * ratio; + double Jk = GSL_SQRT_DBL_MIN; + double Jkm1; + int k; + + for(k=n; k>0; k--) { + Jkm1 = 2.0*k/x * Jk - Jkp1; + Jkp1 = Jk; + Jk = Jkm1; + } + + if(fabs(Jkp1) > fabs(Jk)) { + gsl_sf_result b1; + stat_b = gsl_sf_bessel_J1_e(x, &b1); + ans = b1.val/Jkp1 * GSL_SQRT_DBL_MIN; + err = b1.err/Jkp1 * GSL_SQRT_DBL_MIN; + } + else { + gsl_sf_result b0; + stat_b = gsl_sf_bessel_J0_e(x, &b0); + ans = b0.val/Jk * GSL_SQRT_DBL_MIN; + err = b0.err/Jk * GSL_SQRT_DBL_MIN; + } + + result->val = sign * ans; + result->err = fabs(err); + return GSL_ERROR_SELECT_2(stat_CF1, stat_b); + } + } +} + + +int +gsl_sf_bessel_Jn_array(int nmin, int nmax, double x, double * result_array) +{ + /* CHECK_POINTER(result_array) */ + + if(nmin < 0 || nmax < nmin) { + int n; + for(n=nmax; n>=nmin; n--) { + result_array[n-nmin] = 0.0; + } + GSL_ERROR ("domain error", GSL_EDOM); + } + else if(x == 0.0) { + int n; + for(n=nmax; n>=nmin; n--) { + result_array[n-nmin] = 0.0; + } + if(nmin == 0) result_array[0] = 1.0; + return GSL_SUCCESS; + } + else { + gsl_sf_result r_Jnp1; + gsl_sf_result r_Jn; + int stat_np1 = gsl_sf_bessel_Jn_e(nmax+1, x, &r_Jnp1); + int stat_n = gsl_sf_bessel_Jn_e(nmax, x, &r_Jn); + int stat = GSL_ERROR_SELECT_2(stat_np1, stat_n); + + double Jnp1 = r_Jnp1.val; + double Jn = r_Jn.val; + double Jnm1; + int n; + + if(stat == GSL_SUCCESS) { + for(n=nmax; n>=nmin; n--) { + result_array[n-nmin] = Jn; + Jnm1 = -Jnp1 + 2.0*n/x * Jn; + Jnp1 = Jn; + Jn = Jnm1; + } + } + else { + for(n=nmax; n>=nmin; n--) { + result_array[n-nmin] = 0.0; + } + } + + return stat; + } +} + +/*-*-*-*-*-*-*-*-*-* Functions w/ Natural Prototypes *-*-*-*-*-*-*-*-*-*-*/ + +#include "eval.h" + +double gsl_sf_bessel_Jn(const int n, const double x) +{ + EVAL_RESULT(gsl_sf_bessel_Jn_e(n, x, &result)); +} diff --git a/gsl-2.5/specfunc/bessel_Jn.lo b/gsl-2.5/specfunc/bessel_Jn.lo new file mode 100644 index 00000000..808e1cd3 --- /dev/null +++ b/gsl-2.5/specfunc/bessel_Jn.lo @@ -0,0 +1,12 @@ +# bessel_Jn.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/bessel_Jn.o' + +# Name of the non-PIC object +non_pic_object='bessel_Jn.o' + diff --git a/gsl-2.5/specfunc/bessel_Jnu.c b/gsl-2.5/specfunc/bessel_Jnu.c new file mode 100644 index 00000000..aa219bd9 --- /dev/null +++ b/gsl-2.5/specfunc/bessel_Jnu.c @@ -0,0 +1,212 @@ +/* specfunc/bessel_Jnu.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman, 2017 Konrad Griessinger + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ + +#include +#include +#include +#include +#include + +#include "error.h" + +#include "bessel.h" +#include "bessel_olver.h" +#include "bessel_temme.h" + + +/* Evaluate at large enough nu to apply asymptotic + * results and apply backward recurrence. + */ +#if 0 +static +int +bessel_J_recur_asymp(const double nu, const double x, + gsl_sf_result * Jnu, gsl_sf_result * Jnup1) +{ + const double nu_cut = 25.0; + int n; + int steps = ceil(nu_cut - nu) + 1; + + gsl_sf_result r_Jnp1; + gsl_sf_result r_Jn; + int stat_O1 = gsl_sf_bessel_Jnu_asymp_Olver_e(nu + steps + 1.0, x, &r_Jnp1); + int stat_O2 = gsl_sf_bessel_Jnu_asymp_Olver_e(nu + steps, x, &r_Jn); + double r_fe = fabs(r_Jnp1.err/r_Jnp1.val) + fabs(r_Jn.err/r_Jn.val); + double Jnp1 = r_Jnp1.val; + double Jn = r_Jn.val; + double Jnm1; + double Jnp1_save; + + for(n=steps; n>0; n--) { + Jnm1 = 2.0*(nu+n)/x * Jn - Jnp1; + Jnp1 = Jn; + Jnp1_save = Jn; + Jn = Jnm1; + } + + Jnu->val = Jn; + Jnu->err = (r_fe + GSL_DBL_EPSILON * (steps + 1.0)) * fabs(Jn); + Jnup1->val = Jnp1_save; + Jnup1->err = (r_fe + GSL_DBL_EPSILON * (steps + 1.0)) * fabs(Jnp1_save); + + return GSL_ERROR_SELECT_2(stat_O1, stat_O2); +} +#endif + + +/*-*-*-*-*-*-*-*-*-*-*-* Functions with Error Codes *-*-*-*-*-*-*-*-*-*-*-*/ + +int +gsl_sf_bessel_Jnupos_e(const double nu, const double x, gsl_sf_result * result) +{ + /* CHECK_POINTER(result) */ + + if(x == 0.0) { + if(nu == 0.0) { + result->val = 1.0; + result->err = 0.0; + } + else { + result->val = 0.0; + result->err = 0.0; + } + return GSL_SUCCESS; + } + else if(x*x < 10.0*(nu+1.0)) { + return gsl_sf_bessel_IJ_taylor_e(nu, x, -1, 100, GSL_DBL_EPSILON, result); + } + else if(nu > 50.0) { + return gsl_sf_bessel_Jnu_asymp_Olver_e(nu, x, result); + } + else if(x > 1000.0) + { + /* We need this to avoid feeding large x to CF1; note that + * due to the above check, we know that n <= 50. See similar + * block in bessel_Jn.c. + */ + return gsl_sf_bessel_Jnu_asympx_e(nu, x, result); + } + else { + /* -1/2 <= mu <= 1/2 */ + int N = (int)(nu + 0.5); + double mu = nu - N; + + /* Determine the J ratio at nu. + */ + double Jnup1_Jnu; + double sgn_Jnu; + const int stat_CF1 = gsl_sf_bessel_J_CF1(nu, x, &Jnup1_Jnu, &sgn_Jnu); + + if(x < 2.0) { + /* Determine Y_mu, Y_mup1 directly and recurse forward to nu. + * Then use the CF1 information to solve for J_nu and J_nup1. + */ + gsl_sf_result Y_mu, Y_mup1; + const int stat_mu = gsl_sf_bessel_Y_temme(mu, x, &Y_mu, &Y_mup1); + + double Ynm1 = Y_mu.val; + double Yn = Y_mup1.val; + double Ynp1 = 0.0; + int n; + for(n=1; nval = 2.0/(M_PI*x) / (Jnup1_Jnu*Yn - Ynp1); + result->err = GSL_DBL_EPSILON * (N + 2.0) * fabs(result->val); + return GSL_ERROR_SELECT_2(stat_mu, stat_CF1); + } + else { + /* Recurse backward from nu to mu, determining the J ratio + * at mu. Use this together with a Steed method CF2 to + * determine the actual J_mu, and thus obtain the normalization. + */ + double Jmu; + double Jmup1_Jmu; + double sgn_Jmu; + double Jmuprime_Jmu; + double P, Q; + const int stat_CF2 = gsl_sf_bessel_JY_steed_CF2(mu, x, &P, &Q); + double gamma; + + double Jnp1 = sgn_Jnu * GSL_SQRT_DBL_MIN * Jnup1_Jnu; + double Jn = sgn_Jnu * GSL_SQRT_DBL_MIN; + double Jnm1; + int n; + for(n=N; n>0; n--) { + Jnm1 = 2.0*(mu+n)/x * Jn - Jnp1; + Jnp1 = Jn; + Jn = Jnm1; + } + Jmup1_Jmu = Jnp1/Jn; + sgn_Jmu = GSL_SIGN(Jn); + Jmuprime_Jmu = mu/x - Jmup1_Jmu; + + gamma = (P - Jmuprime_Jmu)/Q; + Jmu = sgn_Jmu * sqrt(2.0/(M_PI*x) / (Q + gamma*(P-Jmuprime_Jmu))); + + result->val = Jmu * (sgn_Jnu * GSL_SQRT_DBL_MIN) / Jn; + result->err = 2.0 * GSL_DBL_EPSILON * (N + 2.0) * fabs(result->val); + + return GSL_ERROR_SELECT_2(stat_CF2, stat_CF1); + } + } +} + +int +gsl_sf_bessel_Jnu_e(const double nu, const double x, gsl_sf_result * result) +{ + /* CHECK_POINTER(result) */ + + if(x <= 0.0) { + DOMAIN_ERROR(result); + } + else if (nu < 0.0) { + int Jstatus = gsl_sf_bessel_Jnupos_e(-nu, x, result); + double Jval = result->val; + double Jerr = result->err; + int Ystatus = gsl_sf_bessel_Ynupos_e(-nu, x, result); + double Yval = result->val; + double Yerr = result->err; + /* double s = sin(M_PI*nu), c = cos(M_PI*nu); */ + int sinstatus = gsl_sf_sin_pi_e(nu, result); + double s = result->val; + double serr = result->err; + int cosstatus = gsl_sf_cos_pi_e(nu, result); + double c = result->val; + double cerr = result->err; + result->val = s*Yval + c*Jval; + result->err = fabs(c*Yerr) + fabs(s*Jerr) + fabs(cerr*Yval) + fabs(serr*Jval); + return GSL_ERROR_SELECT_4(Jstatus, Ystatus, sinstatus, cosstatus); + } + else return gsl_sf_bessel_Jnupos_e(nu, x, result); +} + +/*-*-*-*-*-*-*-*-*-* Functions w/ Natural Prototypes *-*-*-*-*-*-*-*-*-*-*/ + +#include "eval.h" + +double gsl_sf_bessel_Jnu(const double nu, const double x) +{ + EVAL_RESULT(gsl_sf_bessel_Jnu_e(nu, x, &result)); +} diff --git a/gsl-2.5/specfunc/bessel_Jnu.lo b/gsl-2.5/specfunc/bessel_Jnu.lo new file mode 100644 index 00000000..7dc8e159 --- /dev/null +++ b/gsl-2.5/specfunc/bessel_Jnu.lo @@ -0,0 +1,12 @@ +# bessel_Jnu.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/bessel_Jnu.o' + +# Name of the non-PIC object +non_pic_object='bessel_Jnu.o' + diff --git a/gsl-2.5/specfunc/bessel_K0.c b/gsl-2.5/specfunc/bessel_K0.c new file mode 100644 index 00000000..127fcb9e --- /dev/null +++ b/gsl-2.5/specfunc/bessel_K0.c @@ -0,0 +1,207 @@ +/* specfunc/bessel_K0.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * Copyright (C) 2016 Pavel Holoborodko, Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ + +#include +#include +#include +#include +#include +#include + +#include "error.h" + +#include "chebyshev.h" +#include "cheb_eval.c" + +/*-*-*-*-*-*-*-*-*-*-*-* Private Section *-*-*-*-*-*-*-*-*-*-*-*/ + +/* + Minimax rational approximation for [0,1), peak relative error = 2.04*GSL_DBL_EPSILON. + Source: http://www.advanpix.com/?p=3812 +*/ +static double k0_poly[8] = { + 1.1593151565841244842077226e-01, + 2.7898287891460317300886539e-01, + 2.5248929932161220559969776e-02, + 8.4603509072136578707676406e-04, + 1.4914719243067801775856150e-05, + 1.6271068931224552553548933e-07, + 1.2082660336282566759313543e-09, + 6.6117104672254184399933971e-12 +}; + +static double i0_poly[7] = { + 1.0000000000000000044974165e+00, + 2.4999999999999822316775454e-01, + 2.7777777777892149148858521e-02, + 1.7361111083544590676709592e-03, + 6.9444476047072424198677755e-05, + 1.9288265756466775034067979e-06, + 3.9908220583262192851839992e-08 +}; + +/* + Chebyshev expansion for [1,8], peak relative error = 1.28*GSL_DBL_EPSILON. + Source: Pavel Holoborodko. +*/ +static double ak0_data[24] = { + -3.28737867094650101e-02, + -4.49369057710236880e-02, + +2.98149992004308095e-03, + -3.03693649396187920e-04, + +3.91085569307646836e-05, + -5.86872422399215952e-06, + +9.82873709937322009e-07, + -1.78978645055651171e-07, + +3.48332306845240957e-08, + -7.15909210462546599e-09, + +1.54019930048919494e-09, + -3.44555485579194210e-10, + +7.97356101783753023e-11, + -1.90090968913069735e-11, + +4.65295609304114621e-12, + -1.16614287433470780e-12, + +2.98554375218596891e-13, + -7.79276979512292169e-14, + +2.07027467168948402e-14, + -5.58987860393825313e-15, + +1.53202965950646914e-15, + -4.25737536712188186e-16, + +1.19840238501357389e-16, + -3.41407346762502397e-17 +}; + +static cheb_series ak0_cs = { + ak0_data, + 23, + -1, 1, + 10 +}; + +/* + Chebyshev expansion for [8,inf), peak relative error = 1.25*GSL_DBL_EPSILON. + Source: SLATEC/dbsk0e.f +*/ +static double ak02_data[14] = { + -.1201869826307592240E-1, + -.9174852691025695311E-2, + +.1444550931775005821E-3, + -.4013614175435709729E-5, + +.1567831810852310673E-6, + -.7770110438521737710E-8, + +.4611182576179717883E-9, + -.3158592997860565771E-10, + +.2435018039365041128E-11, + -.2074331387398347898E-12, + +.1925787280589917085E-13, + -.1927554805838956104E-14, + +.2062198029197818278E-15, + -.2341685117579242403E-16 +}; + +static cheb_series ak02_cs = { + ak02_data, + 13, + -1, 1, + 8 +}; + + +/*-*-*-*-*-*-*-*-*-*-*-* Functions with Error Codes *-*-*-*-*-*-*-*-*-*-*-*/ + +int gsl_sf_bessel_K0_scaled_e(const double x, gsl_sf_result * result) +{ + /* CHECK_POINTER(result) */ + + if(x <= 0.0) { + DOMAIN_ERROR(result); + } + else if(x < 1.0) { + const double lx = log(x); + const double ex = exp(x); + const double x2 = x*x; + result->val = ex * (gsl_poly_eval(k0_poly,8,x2)-lx*(1.0+0.25*x2*gsl_poly_eval(i0_poly,7,0.25*x2))); + result->err = ex * (1.6+fabs(lx)*0.6) * GSL_DBL_EPSILON; + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else if(x <= 8.0) { + const double sx = sqrt(x); + gsl_sf_result c; + cheb_eval_e(&ak0_cs, (16.0/x-9.0)/7.0, &c); + result->val = (1.203125 + c.val) / sx; /* 1.203125 = 77/64 */ + result->err = c.err / sx; + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else { + const double sx = sqrt(x); + gsl_sf_result c; + cheb_eval_e(&ak02_cs, 16.0/x-1.0, &c); + result->val = (1.25 + c.val) / sx; + result->err = (c.err + GSL_DBL_EPSILON) / sx; + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } +} + + +int gsl_sf_bessel_K0_e(const double x, gsl_sf_result * result) +{ + /* CHECK_POINTER(result) */ + + if(x <= 0.0) { + DOMAIN_ERROR(result); + } + else if(x < 1.0) { + const double lx = log(x); + const double x2 = x*x; + result->val = gsl_poly_eval(k0_poly,8,x2)-lx*(1.0+0.25*x2*gsl_poly_eval(i0_poly,7,0.25*x2)); + result->err = (1.6+fabs(lx)*0.6) * GSL_DBL_EPSILON; + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else { + gsl_sf_result K0_scaled; + int stat_K0 = gsl_sf_bessel_K0_scaled_e(x, &K0_scaled); + int stat_e = gsl_sf_exp_mult_err_e(-x, GSL_DBL_EPSILON*fabs(x), + K0_scaled.val, K0_scaled.err, + result); + return GSL_ERROR_SELECT_2(stat_e, stat_K0); + } +} + + +/*-*-*-*-*-*-*-*-*-* Functions w/ Natural Prototypes *-*-*-*-*-*-*-*-*-*-*/ + +#include "eval.h" + +double gsl_sf_bessel_K0_scaled(const double x) +{ + EVAL_RESULT(gsl_sf_bessel_K0_scaled_e(x, &result)); +} + +double gsl_sf_bessel_K0(const double x) +{ + EVAL_RESULT(gsl_sf_bessel_K0_e(x, &result)); +} + diff --git a/gsl-2.5/specfunc/bessel_K0.lo b/gsl-2.5/specfunc/bessel_K0.lo new file mode 100644 index 00000000..926662c7 --- /dev/null +++ b/gsl-2.5/specfunc/bessel_K0.lo @@ -0,0 +1,12 @@ +# bessel_K0.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/bessel_K0.o' + +# Name of the non-PIC object +non_pic_object='bessel_K0.o' + diff --git a/gsl-2.5/specfunc/bessel_K1.c b/gsl-2.5/specfunc/bessel_K1.c new file mode 100644 index 00000000..0c2369c0 --- /dev/null +++ b/gsl-2.5/specfunc/bessel_K1.c @@ -0,0 +1,217 @@ +/* specfunc/bessel_K1.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * Copyright (C) 2016 Pavel Holoborodko, Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ + +#include +#include +#include +#include +#include +#include + +#include "error.h" + +#include "chebyshev.h" +#include "cheb_eval.c" + +/*-*-*-*-*-*-*-*-*-*-*-* Private Section *-*-*-*-*-*-*-*-*-*-*-*/ + +/* + Minimax rational approximation for [0,1), peak relative error = 1.83*GSL_DBL_EPSILON. + Source: http://www.advanpix.com/?p=3987 +*/ +static double k1_poly[9] = { + -3.0796575782920622440538935e-01, + -8.5370719728650778045782736e-02, + -4.6421827664715603298154971e-03, + -1.1253607036630425931072996e-04, + -1.5592887702110907110292728e-06, + -1.4030163679125934402498239e-08, + -8.8718998640336832196558868e-11, + -4.1614323580221539328960335e-13, + -1.5261293392975541707230366e-15 +}; + +static double i1_poly[7] = { + 8.3333333333333325191635191e-02, + 6.9444444444467956461838830e-03, + 3.4722222211230452695165215e-04, + 1.1574075952009842696580084e-05, + 2.7555870002088181016676934e-07, + 4.9724386164128529514040614e-09 +}; + +/* + Chebyshev expansion for [1,8], peak relative error = 1.28*GSL_DBL_EPSILON. + Source: Pavel Holoborodko. +*/ +static double ak1_data[25] = { + +2.07996868001418246e-01, + +1.62581565017881476e-01, + -5.87070423518863640e-03, + +4.95021520115789501e-04, + -5.78958347598556986e-05, + +8.18614610209334726e-06, + -1.31604832009487277e-06, + +2.32546031520101213e-07, + -4.42206518311557987e-08, + +8.92163994883100361e-09, + -1.89046270526983427e-09, + +4.17568808108504702e-10, + -9.55912361791375794e-11, + +2.25769353153867758e-11, + -5.48128000211158482e-12, + +1.36386122546441926e-12, + -3.46936690565986409e-13, + +9.00354564415705942e-14, + -2.37950577776254432e-14, + +6.39447503964025336e-15, + -1.74498363492322044e-15, + +4.82994547989290473e-16, + -1.35460927805445606e-16, + +3.84604274446777234e-17, + -1.10456856122581316e-17 +}; + +static cheb_series ak1_cs = { + ak1_data, + 24, + -1, 1, + 9 +}; + +/* + Chebyshev expansion for [8,inf), peak relative error = 1.25*GSL_DBL_EPSILON. + Source: SLATEC/dbsk1e.f +*/ +static double ak12_data[14] = { + +.637930834373900104E-1, + +.283288781304972094E-1, + -.247537067390525035E-3, + +.577197245160724882E-5, + -.206893921953654830E-6, + +.973998344138180418E-8, + -.558533614038062498E-9, + +.373299663404618524E-10, + -.282505196102322545E-11, + +.237201900248414417E-12, + -.217667738799175398E-13, + +.215791416161603245E-14, + -.229019693071826928E-15, + +.258288572982327496E-16 +}; + +static cheb_series ak12_cs = { + ak12_data, + 13, + -1, 1, + 7 +}; + + +/*-*-*-*-*-*-*-*-*-*-*-* Functions with Error Codes *-*-*-*-*-*-*-*-*-*-*-*/ + +int gsl_sf_bessel_K1_scaled_e(const double x, gsl_sf_result * result) +{ + /* CHECK_POINTER(result) */ + + if(x <= 0.0) { + DOMAIN_ERROR(result); + } + else if(x < 2.0*GSL_DBL_MIN) { + OVERFLOW_ERROR(result); + } + else if(x < 1.0) { + const double lx = log(x); + const double ex = exp(x); + const double x2 = x*x; + const double t = 0.25*x2; + const double i1 = 0.5 * x * (1.0 + t * (0.5 + t * gsl_poly_eval(i1_poly,6,t))); + result->val = ex * (x2 * gsl_poly_eval(k1_poly,9,x2) + x * lx * i1 + 1) / x; + result->err = ex * (1.6+fabs(lx)*0.6) * GSL_DBL_EPSILON; + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else if(x <= 8.0) { + const double sx = sqrt(x); + gsl_sf_result c; + cheb_eval_e(&ak1_cs, (16.0/x-9.0)/7.0, &c); + result->val = (1.375 + c.val) / sx; /* 1.375 = 11/8 */ + result->err = c.err / sx; + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else { + const double sx = sqrt(x); + gsl_sf_result c; + cheb_eval_e(&ak12_cs, 16.0/x-1.0, &c); + result->val = (1.25 + c.val) / sx; + result->err = c.err / sx; + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } +} + + +int gsl_sf_bessel_K1_e(const double x, gsl_sf_result * result) +{ + /* CHECK_POINTER(result) */ + + if(x <= 0.0) { + DOMAIN_ERROR(result); + } + else if(x < 2.0*GSL_DBL_MIN) { + OVERFLOW_ERROR(result); + } + else if(x < 1.0) { + const double lx = log(x); + const double x2 = x*x; + const double t = 0.25*x2; + const double i1 = 0.5 * x * (1.0 + t * (0.5 + t * gsl_poly_eval(i1_poly,6,t))); + result->val = (x2 * gsl_poly_eval(k1_poly,9,x2) + x * lx * i1 + 1) / x; + result->err = (1.6+fabs(lx)*0.6) * GSL_DBL_EPSILON; + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else { + gsl_sf_result K1_scaled; + int stat_K1 = gsl_sf_bessel_K1_scaled_e(x, &K1_scaled); + int stat_e = gsl_sf_exp_mult_err_e(-x, 0.0, + K1_scaled.val, K1_scaled.err, + result); + result->err = fabs(result->val) * (GSL_DBL_EPSILON*fabs(x) + K1_scaled.err/K1_scaled.val); + return GSL_ERROR_SELECT_2(stat_e, stat_K1); + } +} + +/*-*-*-*-*-*-*-*-*-* Functions w/ Natural Prototypes *-*-*-*-*-*-*-*-*-*-*/ + +#include "eval.h" + +double gsl_sf_bessel_K1_scaled(const double x) +{ + EVAL_RESULT(gsl_sf_bessel_K1_scaled_e(x, &result)); +} + +double gsl_sf_bessel_K1(const double x) +{ + EVAL_RESULT(gsl_sf_bessel_K1_e(x, &result)); +} diff --git a/gsl-2.5/specfunc/bessel_K1.lo b/gsl-2.5/specfunc/bessel_K1.lo new file mode 100644 index 00000000..e0997583 --- /dev/null +++ b/gsl-2.5/specfunc/bessel_K1.lo @@ -0,0 +1,12 @@ +# bessel_K1.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/bessel_K1.o' + +# Name of the non-PIC object +non_pic_object='bessel_K1.o' + diff --git a/gsl-2.5/specfunc/bessel_Kn.c b/gsl-2.5/specfunc/bessel_Kn.c new file mode 100644 index 00000000..2ccf460d --- /dev/null +++ b/gsl-2.5/specfunc/bessel_Kn.c @@ -0,0 +1,240 @@ +/* specfunc/bessel_Kn.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ + +#include +#include +#include +#include +#include +#include + +#include "error.h" + +#include "bessel.h" + +/*-*-*-*-*-*-*-*-*-*-*-* Private Section *-*-*-*-*-*-*-*-*-*-*-*/ + +/* [Abramowitz+Stegun, 9.6.11] + * assumes n >= 1 + */ +static +int +bessel_Kn_scaled_small_x(const int n, const double x, gsl_sf_result * result) +{ + int k; + double y = 0.25 * x * x; + double ln_x_2 = log(0.5*x); + double ex = exp(x); + gsl_sf_result ln_nm1_fact; + double k_term; + double term1, sum1, ln_pre1; + double term2, sum2, pre2; + + gsl_sf_lnfact_e((unsigned int)(n-1), &ln_nm1_fact); + + ln_pre1 = -n*ln_x_2 + ln_nm1_fact.val; + if(ln_pre1 > GSL_LOG_DBL_MAX - 3.0) GSL_ERROR ("error", GSL_EOVRFLW); + + sum1 = 1.0; + k_term = 1.0; + for(k=1; k<=n-1; k++) { + k_term *= -y/(k * (n-k)); + sum1 += k_term; + } + term1 = 0.5 * exp(ln_pre1) * sum1; + + pre2 = 0.5 * exp(n*ln_x_2); + if(pre2 > 0.0) { + const int KMAX = 20; + gsl_sf_result psi_n; + gsl_sf_result npk_fact; + double yk = 1.0; + double k_fact = 1.0; + double psi_kp1 = -M_EULER; + double psi_npkp1; + gsl_sf_psi_int_e(n, &psi_n); + gsl_sf_fact_e((unsigned int)n, &npk_fact); + psi_npkp1 = psi_n.val + 1.0/n; + sum2 = (psi_kp1 + psi_npkp1 - 2.0*ln_x_2)/npk_fact.val; + for(k=1; kval = ex * (term1 + term2); + result->err = ex * GSL_DBL_EPSILON * (fabs(ln_pre1)*fabs(term1) + fabs(term2)); + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + + return GSL_SUCCESS; +} + + +/*-*-*-*-*-*-*-*-*-*-*-* Functions with Error Codes *-*-*-*-*-*-*-*-*-*-*-*/ + +int gsl_sf_bessel_Kn_scaled_e(int n, const double x, gsl_sf_result * result) +{ + n = abs(n); /* K(-n, z) = K(n, z) */ + + /* CHECK_POINTER(result) */ + + if(x <= 0.0) { + DOMAIN_ERROR(result); + } + else if(n == 0) { + return gsl_sf_bessel_K0_scaled_e(x, result); + } + else if(n == 1) { + return gsl_sf_bessel_K1_scaled_e(x, result); + } + else if(x <= 5.0) { + return bessel_Kn_scaled_small_x(n, x, result); + } + else if(GSL_ROOT3_DBL_EPSILON * x > 0.25 * (n*n + 1)) { + return gsl_sf_bessel_Knu_scaled_asympx_e((double)n, x, result); + } + else if(GSL_MIN(0.29/(n*n), 0.5/(n*n + x*x)) < GSL_ROOT3_DBL_EPSILON) { + return gsl_sf_bessel_Knu_scaled_asymp_unif_e((double)n, x, result); + } + else { + /* Upward recurrence. [Gradshteyn + Ryzhik, 8.471.1] */ + double two_over_x = 2.0/x; + gsl_sf_result r_b_jm1; + gsl_sf_result r_b_j; + int stat_0 = gsl_sf_bessel_K0_scaled_e(x, &r_b_jm1); + int stat_1 = gsl_sf_bessel_K1_scaled_e(x, &r_b_j); + double b_jm1 = r_b_jm1.val; + double b_j = r_b_j.val; + double b_jp1; + int j; + + for(j=1; jval = b_j; + result->err = n * (fabs(b_j) * (fabs(r_b_jm1.err/r_b_jm1.val) + fabs(r_b_j.err/r_b_j.val))); + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + + return GSL_ERROR_SELECT_2(stat_0, stat_1); + } +} + + +int gsl_sf_bessel_Kn_e(const int n, const double x, gsl_sf_result * result) +{ + const int status = gsl_sf_bessel_Kn_scaled_e(n, x, result); + const double ex = exp(-x); + result->val *= ex; + result->err *= ex; + result->err += x * GSL_DBL_EPSILON * fabs(result->val); + return status; +} + + +int gsl_sf_bessel_Kn_scaled_array(const int nmin, const int nmax, const double x, double * result_array) +{ + /* CHECK_POINTER(result_array) */ + + if(nmin < 0 || nmax < nmin || x <= 0.0) { + int j; + for(j=0; j<=nmax-nmin; j++) result_array[j] = 0.0; + GSL_ERROR ("domain error", GSL_EDOM); + } + else if(nmax == 0) { + gsl_sf_result b; + int stat = gsl_sf_bessel_K0_scaled_e(x, &b); + result_array[0] = b.val; + return stat; + } + else { + double two_over_x = 2.0/x; + gsl_sf_result r_Knm1; + gsl_sf_result r_Kn; + int stat_0 = gsl_sf_bessel_Kn_scaled_e(nmin, x, &r_Knm1); + int stat_1 = gsl_sf_bessel_Kn_scaled_e(nmin+1, x, &r_Kn); + int stat = GSL_ERROR_SELECT_2(stat_0, stat_1); + double Knp1; + double Kn = r_Kn.val; + double Knm1 = r_Knm1.val; + int n; + + for(n=nmin+1; n<=nmax+1; n++) { + if(Knm1 < GSL_DBL_MAX) { + result_array[n-1-nmin] = Knm1; + Knp1 = Knm1 + n * two_over_x * Kn; + Knm1 = Kn; + Kn = Knp1; + } + else { + /* Overflow. Set the rest of the elements to + * zero and bug out. + * FIXME: Note: this relies on the convention + * that the test x < DBL_MIN fails for x not + * a number. This may be only an IEEE convention, + * so the portability is unclear. + */ + int j; + for(j=n; j<=nmax+1; j++) result_array[j-1-nmin] = 0.0; + GSL_ERROR ("overflow", GSL_EOVRFLW); + } + } + + return stat; + } +} + + +int +gsl_sf_bessel_Kn_array(const int nmin, const int nmax, const double x, double * result_array) +{ + int status = gsl_sf_bessel_Kn_scaled_array(nmin, nmax, x, result_array); + double ex = exp(-x); + int i; + for(i=0; i<=nmax-nmin; i++) result_array[i] *= ex; + return status; +} + + +/*-*-*-*-*-*-*-*-*-* Functions w/ Natural Prototypes *-*-*-*-*-*-*-*-*-*-*/ + +#include "eval.h" + +double gsl_sf_bessel_Kn_scaled(const int n, const double x) +{ + EVAL_RESULT(gsl_sf_bessel_Kn_scaled_e(n, x, &result)); +} + +double gsl_sf_bessel_Kn(const int n, const double x) +{ + EVAL_RESULT(gsl_sf_bessel_Kn_e(n, x, &result)); +} diff --git a/gsl-2.5/specfunc/bessel_Kn.lo b/gsl-2.5/specfunc/bessel_Kn.lo new file mode 100644 index 00000000..1ce45ba2 --- /dev/null +++ b/gsl-2.5/specfunc/bessel_Kn.lo @@ -0,0 +1,12 @@ +# bessel_Kn.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/bessel_Kn.o' + +# Name of the non-PIC object +non_pic_object='bessel_Kn.o' + diff --git a/gsl-2.5/specfunc/bessel_Knu.c b/gsl-2.5/specfunc/bessel_Knu.c new file mode 100644 index 00000000..8d2642d9 --- /dev/null +++ b/gsl-2.5/specfunc/bessel_Knu.c @@ -0,0 +1,189 @@ +/* specfunc/bessel_Knu.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ + +#include +#include +#include +#include +#include +#include + +#include "error.h" + +#include "bessel.h" +#include "bessel_temme.h" + +/*-*-*-*-*-*-*-*-*-*-*-* Functions with Error Codes *-*-*-*-*-*-*-*-*-*-*-*/ + +int +gsl_sf_bessel_Knu_scaled_e(const double nu, const double x, gsl_sf_result * result) +{ + /* CHECK_POINTER(result) */ + + if(x <= 0.0 || nu < 0.0) { + DOMAIN_ERROR(result); + } + else { + gsl_sf_result_e10 result_e10; + int status = gsl_sf_bessel_Knu_scaled_e10_e(nu, x, &result_e10); + int status2 = gsl_sf_result_smash_e(&result_e10, result); + return GSL_ERROR_SELECT_2(status, status2); + } +} + +int +gsl_sf_bessel_Knu_scaled_e10_e(const double nu, const double x, gsl_sf_result_e10 * result) +{ + /* CHECK_POINTER(result) */ + + if(x <= 0.0 || nu < 0.0) { + DOMAIN_ERROR_E10(result); + } + else { + int N = (int)(nu + 0.5); + double mu = nu - N; /* -1/2 <= mu <= 1/2 */ + double K_mu, K_mup1, Kp_mu; + double K_nu, K_nup1, K_num1; + int n, e10 = 0; + + if(x < 2.0) { + gsl_sf_bessel_K_scaled_temme(mu, x, &K_mu, &K_mup1, &Kp_mu); + } + else { + gsl_sf_bessel_K_scaled_steed_temme_CF2(mu, x, &K_mu, &K_mup1, &Kp_mu); + } + + /* recurse forward to obtain K_num1, K_nu */ + K_nu = K_mu; + K_nup1 = K_mup1; + + for(n=0; n GSL_SQRT_DBL_MAX) { + double p = floor(log(fabs(K_nu))/M_LN10); + double factor = pow(10.0, p); + K_num1 /= factor; + K_nu /= factor; + e10 += p; + }; + K_nup1 = 2.0*(mu+n+1)/x * K_nu + K_num1; + } + + result->val = K_nu; + result->err = 2.0 * GSL_DBL_EPSILON * (N + 4.0) * fabs(result->val); + result->e10 = e10; + return GSL_SUCCESS; + } +} + + +int +gsl_sf_bessel_Knu_e(const double nu, const double x, gsl_sf_result * result) +{ + gsl_sf_result b; + int stat_K = gsl_sf_bessel_Knu_scaled_e(nu, x, &b); + int stat_e = gsl_sf_exp_mult_err_e(-x, 0.0, b.val, b.err, result); + return GSL_ERROR_SELECT_2(stat_e, stat_K); +} + + +int +gsl_sf_bessel_lnKnu_e(const double nu, const double x, gsl_sf_result * result) +{ + /* CHECK_POINTER(result) */ + + if(x <= 0.0 || nu < 0.0) { + DOMAIN_ERROR(result); + } + else if(nu == 0.0) { + gsl_sf_result K_scaled; + /* This cannot underflow, and + * it will not throw GSL_EDOM + * since that is already checked. + */ + gsl_sf_bessel_K0_scaled_e(x, &K_scaled); + result->val = -x + log(fabs(K_scaled.val)); + result->err = GSL_DBL_EPSILON * fabs(x) + fabs(K_scaled.err/K_scaled.val); + result->err += GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else if(x < 2.0 && nu > 1.0) { + /* Make use of the inequality + * Knu(x) <= 1/2 (2/x)^nu Gamma(nu), + * which follows from the integral representation + * [Abramowitz+Stegun, 9.6.23 (2)]. With this + * we decide whether or not there is an overflow + * problem because x is small. + */ + double ln_bound; + gsl_sf_result lg_nu; + gsl_sf_lngamma_e(nu, &lg_nu); + ln_bound = -M_LN2 - nu*log(0.5*x) + lg_nu.val; + if(ln_bound > GSL_LOG_DBL_MAX - 20.0) { + /* x must be very small or nu very large (or both). + */ + double xi = 0.25*x*x; + double sum = 1.0 - xi/(nu-1.0); + if(nu > 2.0) sum += (xi/(nu-1.0)) * (xi/(nu-2.0)); + result->val = ln_bound + log(sum); + result->err = lg_nu.err; + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + /* can drop-through here */ + } + + + { + /* We passed the above tests, so no problem. + * Evaluate as usual. Note the possible drop-through + * in the above code! + */ + gsl_sf_result_e10 K_scaled; + int status = gsl_sf_bessel_Knu_scaled_e10_e(nu, x, &K_scaled); + result->val = -x + log(fabs(K_scaled.val)) + K_scaled.e10 * M_LN10; + result->err = GSL_DBL_EPSILON * fabs(x) + fabs(K_scaled.err/K_scaled.val); + result->err += GSL_DBL_EPSILON * fabs(result->val); + return status; + } +} + + +/*-*-*-*-*-*-*-*-*-* Functions w/ Natural Prototypes *-*-*-*-*-*-*-*-*-*-*/ + +#include "eval.h" + +double gsl_sf_bessel_Knu_scaled(const double nu, const double x) +{ + EVAL_RESULT(gsl_sf_bessel_Knu_scaled_e(nu, x, &result)); +} + +double gsl_sf_bessel_Knu(const double nu, const double x) +{ + EVAL_RESULT(gsl_sf_bessel_Knu_e(nu, x, &result)); +} + +double gsl_sf_bessel_lnKnu(const double nu, const double x) +{ + EVAL_RESULT(gsl_sf_bessel_lnKnu_e(nu, x, &result)); +} diff --git a/gsl-2.5/specfunc/bessel_Knu.lo b/gsl-2.5/specfunc/bessel_Knu.lo new file mode 100644 index 00000000..c4a3ec4a --- /dev/null +++ b/gsl-2.5/specfunc/bessel_Knu.lo @@ -0,0 +1,12 @@ +# bessel_Knu.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/bessel_Knu.o' + +# Name of the non-PIC object +non_pic_object='bessel_Knu.o' + diff --git a/gsl-2.5/specfunc/bessel_Y0.c b/gsl-2.5/specfunc/bessel_Y0.c new file mode 100644 index 00000000..f4b46736 --- /dev/null +++ b/gsl-2.5/specfunc/bessel_Y0.c @@ -0,0 +1,122 @@ +/* specfunc/bessel_Y0.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ + +#include +#include +#include +#include +#include + +#include "error.h" + +#include "bessel.h" +#include "bessel_amp_phase.h" +#include "cheb_eval.c" + +/*-*-*-*-*-*-*-*-*-*-*-* Private Section *-*-*-*-*-*-*-*-*-*-*-*/ + +/* based on SLATEC besy0, 1980 version, w. fullerton */ + +/* chebyshev expansions + + series for by0 on the interval 0. to 1.60000d+01 + with weighted error 1.20e-17 + log weighted error 16.92 + significant figures required 16.15 + decimal places required 17.48 +*/ + +static double by0_data[13] = { + -0.011277839392865573, + -0.128345237560420350, + -0.104378847997942490, + 0.023662749183969695, + -0.002090391647700486, + 0.000103975453939057, + -0.000003369747162423, + 0.000000077293842676, + -0.000000001324976772, + 0.000000000017648232, + -0.000000000000188105, + 0.000000000000001641, + -0.000000000000000011 +}; +static cheb_series by0_cs = { + by0_data, + 12, + -1, 1, + 8 +}; + + +/*-*-*-*-*-*-*-*-*-*-*-* Functions with Error Codes *-*-*-*-*-*-*-*-*-*-*-*/ + +int gsl_sf_bessel_Y0_e(const double x, gsl_sf_result * result) +{ + const double two_over_pi = 2.0/M_PI; + const double xmax = 1.0/GSL_DBL_EPSILON; + + /* CHECK_POINTER(result) */ + + if (x <= 0.0) { + DOMAIN_ERROR(result); + } + else if(x < 4.0) { + gsl_sf_result J0; + gsl_sf_result c; + int stat_J0 = gsl_sf_bessel_J0_e(x, &J0); + cheb_eval_e(&by0_cs, 0.125*x*x-1.0, &c); + result->val = two_over_pi*(-M_LN2 + log(x))*J0.val + 0.375 + c.val; + result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val) + c.err; + return stat_J0; + } + else if(x < xmax) { + /* Leading behaviour of phase is x, which is exact, + * so the error is bounded. + */ + const double z = 32.0/(x*x) - 1.0; + gsl_sf_result c1; + gsl_sf_result c2; + gsl_sf_result sp; + const int stat_c1 = cheb_eval_e(&_gsl_sf_bessel_amp_phase_bm0_cs, z, &c1); + const int stat_c2 = cheb_eval_e(&_gsl_sf_bessel_amp_phase_bth0_cs, z, &c2); + const int stat_sp = gsl_sf_bessel_sin_pi4_e(x, c2.val/x, &sp); + const double sqrtx = sqrt(x); + const double ampl = (0.75 + c1.val) / sqrtx; + result->val = ampl * sp.val; + result->err = fabs(sp.val) * c1.err/sqrtx + fabs(ampl) * sp.err; + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_ERROR_SELECT_3(stat_sp, stat_c1, stat_c2); + } + else { + UNDERFLOW_ERROR(result); + } +} + + +/*-*-*-*-*-*-*-*-*-* Functions w/ Natural Prototypes *-*-*-*-*-*-*-*-*-*-*/ + +#include "eval.h" + +double gsl_sf_bessel_Y0(const double x) +{ + EVAL_RESULT(gsl_sf_bessel_Y0_e(x, &result)); +} diff --git a/gsl-2.5/specfunc/bessel_Y0.lo b/gsl-2.5/specfunc/bessel_Y0.lo new file mode 100644 index 00000000..c12b447e --- /dev/null +++ b/gsl-2.5/specfunc/bessel_Y0.lo @@ -0,0 +1,12 @@ +# bessel_Y0.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/bessel_Y0.o' + +# Name of the non-PIC object +non_pic_object='bessel_Y0.o' + diff --git a/gsl-2.5/specfunc/bessel_Y1.c b/gsl-2.5/specfunc/bessel_Y1.c new file mode 100644 index 00000000..41bb743e --- /dev/null +++ b/gsl-2.5/specfunc/bessel_Y1.c @@ -0,0 +1,137 @@ +/* specfunc/bessel_Y1.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ + +#include +#include +#include +#include +#include + +#include "error.h" + +#include "bessel.h" +#include "bessel_amp_phase.h" +#include "cheb_eval.c" + +/*-*-*-*-*-*-*-*-*-*-*-* Private Section *-*-*-*-*-*-*-*-*-*-*-*/ + +/* based on SLATEC besy1, 1977 version, w. fullerton */ + +/* chebyshev expansions + + series for by1 on the interval 0. to 1.60000d+01 + with weighted error 1.87e-18 + log weighted error 17.73 + significant figures required 17.83 + decimal places required 18.30 +*/ + +static double by1_data[14] = { + 0.03208047100611908629, + 1.262707897433500450, + 0.00649996189992317500, + -0.08936164528860504117, + 0.01325088122175709545, + -0.00089790591196483523, + 0.00003647361487958306, + -0.00000100137438166600, + 0.00000001994539657390, + -0.00000000030230656018, + 0.00000000000360987815, + -0.00000000000003487488, + 0.00000000000000027838, + -0.00000000000000000186 +}; +static cheb_series by1_cs = { + by1_data, + 13, + -1, 1, + 10 +}; + + +/*-*-*-*-*-*-*-*-*-*-*-* Functions with Error Codes *-*-*-*-*-*-*-*-*-*-*-*/ + +int gsl_sf_bessel_Y1_e(const double x, gsl_sf_result * result) +{ + const double two_over_pi = 2.0/M_PI; + const double xmin = 1.571*GSL_DBL_MIN; /*exp ( amax1(alog(r1mach(1)), -alog(r1mach(2)))+.01) */ + const double x_small = 2.0 * GSL_SQRT_DBL_EPSILON; + const double xmax = 1.0/GSL_DBL_EPSILON; + + /* CHECK_POINTER(result) */ + + if(x <= 0.0) { + DOMAIN_ERROR(result); + } + else if(x < xmin) { + OVERFLOW_ERROR(result); + } + else if(x < x_small) { + const double lnterm = log(0.5*x); + gsl_sf_result J1; + gsl_sf_result c; + int status = gsl_sf_bessel_J1_e(x, &J1); + cheb_eval_e(&by1_cs, -1.0, &c); + result->val = two_over_pi * lnterm * J1.val + (0.5 + c.val)/x; + result->err = fabs(lnterm) * (fabs(GSL_DBL_EPSILON * J1.val) + J1.err) + c.err/x; + return status; + } + else if(x < 4.0) { + const double lnterm = log(0.5*x); + int status; + gsl_sf_result J1; + gsl_sf_result c; + cheb_eval_e(&by1_cs, 0.125*x*x-1.0, &c); + status = gsl_sf_bessel_J1_e(x, &J1); + result->val = two_over_pi * lnterm * J1.val + (0.5 + c.val)/x; + result->err = fabs(lnterm) * (fabs(GSL_DBL_EPSILON * J1.val) + J1.err) + c.err/x; + return status; + } + else if(x < xmax) { + const double z = 32.0/(x*x) - 1.0; + gsl_sf_result ca; + gsl_sf_result ct; + gsl_sf_result cp; + const int stat_ca = cheb_eval_e(&_gsl_sf_bessel_amp_phase_bm1_cs, z, &ca); + const int stat_ct = cheb_eval_e(&_gsl_sf_bessel_amp_phase_bth1_cs, z, &ct); + const int stat_cp = gsl_sf_bessel_cos_pi4_e(x, ct.val/x, &cp); + const double sqrtx = sqrt(x); + const double ampl = (0.75 + ca.val) / sqrtx; + result->val = -ampl * cp.val; + result->err = fabs(cp.val) * ca.err/sqrtx + fabs(ampl) * cp.err; + result->err += GSL_DBL_EPSILON * fabs(result->val); + return GSL_ERROR_SELECT_3(stat_ca, stat_ct, stat_cp); + } + else { + UNDERFLOW_ERROR(result); + } +} + + +/*-*-*-*-*-*-*-*-*-* Functions w/ Natural Prototypes *-*-*-*-*-*-*-*-*-*-*/ + +#include "eval.h" + +double gsl_sf_bessel_Y1(const double x) +{ + EVAL_RESULT(gsl_sf_bessel_Y1_e(x, &result)); +} diff --git a/gsl-2.5/specfunc/bessel_Y1.lo b/gsl-2.5/specfunc/bessel_Y1.lo new file mode 100644 index 00000000..bfa273ad --- /dev/null +++ b/gsl-2.5/specfunc/bessel_Y1.lo @@ -0,0 +1,12 @@ +# bessel_Y1.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/bessel_Y1.o' + +# Name of the non-PIC object +non_pic_object='bessel_Y1.o' + diff --git a/gsl-2.5/specfunc/bessel_Yn.c b/gsl-2.5/specfunc/bessel_Yn.c new file mode 100644 index 00000000..3dc1a99b --- /dev/null +++ b/gsl-2.5/specfunc/bessel_Yn.c @@ -0,0 +1,217 @@ +/* specfunc/bessel_Yn.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ + +#include +#include +#include +#include +#include +#include + +#include "error.h" + +#include "bessel.h" +#include "bessel_amp_phase.h" +#include "bessel_olver.h" + +/*-*-*-*-*-*-*-*-*-*-*-* Private Section *-*-*-*-*-*-*-*-*-*-*-*/ + +/* assumes n >= 1 */ +static int bessel_Yn_small_x(const int n, const double x, gsl_sf_result * result) +{ + int k; + double y = 0.25 * x * x; + double ln_x_2 = log(0.5*x); + gsl_sf_result ln_nm1_fact; + double k_term; + double term1, sum1, ln_pre1; + double term2, sum2, pre2; + + gsl_sf_lnfact_e((unsigned int)(n-1), &ln_nm1_fact); + + ln_pre1 = -n*ln_x_2 + ln_nm1_fact.val; + if(ln_pre1 > GSL_LOG_DBL_MAX - 3.0) GSL_ERROR ("error", GSL_EOVRFLW); + + sum1 = 1.0; + k_term = 1.0; + for(k=1; k<=n-1; k++) { + k_term *= y/(k * (n-k)); + sum1 += k_term; + } + term1 = -exp(ln_pre1) * sum1 / M_PI; + + pre2 = -exp(n*ln_x_2) / M_PI; + if(fabs(pre2) > 0.0) { + const int KMAX = 20; + gsl_sf_result psi_n; + gsl_sf_result npk_fact; + double yk = 1.0; + double k_fact = 1.0; + double psi_kp1 = -M_EULER; + double psi_npkp1; + gsl_sf_psi_int_e(n, &psi_n); + gsl_sf_fact_e((unsigned int)n, &npk_fact); + psi_npkp1 = psi_n.val + 1.0/n; + sum2 = (psi_kp1 + psi_npkp1 - 2.0*ln_x_2)/npk_fact.val; + for(k=1; kval = term1 + term2; + result->err = GSL_DBL_EPSILON * (fabs(ln_pre1)*fabs(term1) + fabs(term2)); + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + + return GSL_SUCCESS; +} + + +/*-*-*-*-*-*-*-*-*-*-*-* Functions with Error Codes *-*-*-*-*-*-*-*-*-*-*-*/ + + +int +gsl_sf_bessel_Yn_e(int n, const double x, gsl_sf_result * result) +{ + int sign = 1; + + if(n < 0) { + /* reduce to case n >= 0 */ + n = -n; + if(GSL_IS_ODD(n)) sign = -1; + } + + /* CHECK_POINTER(result) */ + + if(n == 0) { + int status = gsl_sf_bessel_Y0_e(x, result); + result->val *= sign; + return status; + } + else if(n == 1) { + int status = gsl_sf_bessel_Y1_e(x, result); + result->val *= sign; + return status; + } + else { + if(x <= 0.0) { + DOMAIN_ERROR(result); + } + if(x < 5.0) { + int status = bessel_Yn_small_x(n, x, result); + result->val *= sign; + return status; + } + else if(GSL_ROOT3_DBL_EPSILON * x > (n*n + 1.0)) { + int status = gsl_sf_bessel_Ynu_asympx_e((double)n, x, result); + result->val *= sign; + return status; + } + else if(n > 50) { + int status = gsl_sf_bessel_Ynu_asymp_Olver_e((double)n, x, result); + result->val *= sign; + return status; + } + else { + double two_over_x = 2.0/x; + gsl_sf_result r_by; + gsl_sf_result r_bym; + int stat_1 = gsl_sf_bessel_Y1_e(x, &r_by); + int stat_0 = gsl_sf_bessel_Y0_e(x, &r_bym); + double bym = r_bym.val; + double by = r_by.val; + double byp; + int j; + + for(j=1; jval = sign * by; + result->err = fabs(result->val) * (fabs(r_by.err/r_by.val) + fabs(r_bym.err/r_bym.val)); + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + + return GSL_ERROR_SELECT_2(stat_1, stat_0); + } + } +} + + +int +gsl_sf_bessel_Yn_array(const int nmin, const int nmax, const double x, double * result_array) +{ + /* CHECK_POINTER(result_array) */ + + if(nmin < 0 || nmax < nmin || x <= 0.0) { + int j; + for(j=0; j<=nmax-nmin; j++) result_array[j] = 0.0; + GSL_ERROR ("error", GSL_EDOM); + } + else { + gsl_sf_result r_Ynm1; + gsl_sf_result r_Yn; + int stat_nm1 = gsl_sf_bessel_Yn_e(nmin, x, &r_Ynm1); + int stat_n = gsl_sf_bessel_Yn_e(nmin+1, x, &r_Yn); + double Ynp1; + double Yn = r_Yn.val; + double Ynm1 = r_Ynm1.val; + int n; + + int stat = GSL_ERROR_SELECT_2(stat_nm1, stat_n); + + if(stat == GSL_SUCCESS) { + for(n=nmin+1; n<=nmax+1; n++) { + result_array[n-nmin-1] = Ynm1; + Ynp1 = -Ynm1 + 2.0*n/x * Yn; + Ynm1 = Yn; + Yn = Ynp1; + } + } + else { + for(n=nmin; n<=nmax; n++) { + result_array[n-nmin] = 0.0; + } + } + + return stat; + } +} + + +/*-*-*-*-*-*-*-*-*-* Functions w/ Natural Prototypes *-*-*-*-*-*-*-*-*-*-*/ + +#include "eval.h" + +double gsl_sf_bessel_Yn(const int n, const double x) +{ + EVAL_RESULT(gsl_sf_bessel_Yn_e(n, x, &result)); +} + diff --git a/gsl-2.5/specfunc/bessel_Yn.lo b/gsl-2.5/specfunc/bessel_Yn.lo new file mode 100644 index 00000000..5334d905 --- /dev/null +++ b/gsl-2.5/specfunc/bessel_Yn.lo @@ -0,0 +1,12 @@ +# bessel_Yn.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/bessel_Yn.o' + +# Name of the non-PIC object +non_pic_object='bessel_Yn.o' + diff --git a/gsl-2.5/specfunc/bessel_Ynu.c b/gsl-2.5/specfunc/bessel_Ynu.c new file mode 100644 index 00000000..51f82f43 --- /dev/null +++ b/gsl-2.5/specfunc/bessel_Ynu.c @@ -0,0 +1,156 @@ +/* specfunc/bessel_Ynu.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman, 2017 Konrad Griessinger + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ + +#include +#include +#include +#include +#include + +#include "error.h" + +#include "bessel.h" +#include "bessel_olver.h" +#include "bessel_temme.h" + +/* Perform forward recurrence for Y_nu(x) and Y'_nu(x) + * + * Y_{nu+1} = nu/x Y_nu - Y'_nu + * Y'_{nu+1} = -(nu+1)/x Y_{nu+1} + Y_nu + */ +#if 0 +static +int +bessel_Y_recur(const double nu_min, const double x, const int kmax, + const double Y_start, const double Yp_start, + double * Y_end, double * Yp_end) +{ + double x_inv = 1.0/x; + double nu = nu_min; + double Y_nu = Y_start; + double Yp_nu = Yp_start; + int k; + + for(k=1; k<=kmax; k++) { + double nuox = nu*x_inv; + double Y_nu_save = Y_nu; + Y_nu = -Yp_nu + nuox * Y_nu; + Yp_nu = Y_nu_save - (nuox+x_inv) * Y_nu; + nu += 1.0; + } + *Y_end = Y_nu; + *Yp_end = Yp_nu; + return GSL_SUCCESS; +} +#endif + + +/*-*-*-*-*-*-*-*-*-*-*-* Functions with Error Codes *-*-*-*-*-*-*-*-*-*-*-*/ + +int +gsl_sf_bessel_Ynupos_e(double nu, double x, gsl_sf_result * result) +{ + /* CHECK_POINTER(result) */ + if(nu > 50.0) { + return gsl_sf_bessel_Ynu_asymp_Olver_e(nu, x, result); + } + else { + /* -1/2 <= mu <= 1/2 */ + int N = (int)(nu + 0.5); + double mu = nu - N; + + gsl_sf_result Y_mu, Y_mup1; + int stat_mu; + double Ynm1; + double Yn; + double Ynp1; + int n; + + if(x < 2.0) { + /* Determine Ymu, Ymup1 directly. This is really + * an optimization since this case could as well + * be handled by a call to gsl_sf_bessel_JY_mu_restricted(), + * as below. + */ + stat_mu = gsl_sf_bessel_Y_temme(mu, x, &Y_mu, &Y_mup1); + } + else { + /* Determine Ymu, Ymup1 and Jmu, Jmup1. + */ + gsl_sf_result J_mu, J_mup1; + stat_mu = gsl_sf_bessel_JY_mu_restricted(mu, x, &J_mu, &J_mup1, &Y_mu, &Y_mup1); + } + + /* Forward recursion to get Ynu, Ynup1. + */ + Ynm1 = Y_mu.val; + Yn = Y_mup1.val; + for(n=1; n<=N; n++) { + Ynp1 = 2.0*(mu+n)/x * Yn - Ynm1; + Ynm1 = Yn; + Yn = Ynp1; + } + + result->val = Ynm1; /* Y_nu */ + result->err = (N + 1.0) * fabs(Ynm1) * (fabs(Y_mu.err/Y_mu.val) + fabs(Y_mup1.err/Y_mup1.val)); + result->err += 2.0 * GSL_DBL_EPSILON * fabs(Ynm1); + + return stat_mu; + } +} + +int +gsl_sf_bessel_Ynu_e(double nu, double x, gsl_sf_result * result) +{ + /* CHECK_POINTER(result) */ + + if(x <= 0.0) { + DOMAIN_ERROR(result); + } + else if (nu < 0.0) { + int Jstatus = gsl_sf_bessel_Jnupos_e(-nu, x, result); + double Jval = result->val; + double Jerr = result->err; + int Ystatus = gsl_sf_bessel_Ynupos_e(-nu, x, result); + double Yval = result->val; + double Yerr = result->err; + /* double s = sin(M_PI*nu), c = cos(M_PI*nu); */ + int sinstatus = gsl_sf_sin_pi_e(nu, result); + double s = result->val; + double serr = result->err; + int cosstatus = gsl_sf_cos_pi_e(nu, result); + double c = result->val; + double cerr = result->err; + result->val = c*Yval - s*Jval; + result->err = fabs(c*Yerr) + fabs(s*Jerr) + fabs(cerr*Yval) + fabs(serr*Jval); + return GSL_ERROR_SELECT_4(Jstatus, Ystatus, sinstatus, cosstatus); + } + else return gsl_sf_bessel_Ynupos_e(nu, x, result); +} + +/*-*-*-*-*-*-*-*-*-* Functions w/ Natural Prototypes *-*-*-*-*-*-*-*-*-*-*/ + +#include "eval.h" + +double gsl_sf_bessel_Ynu(const double nu, const double x) +{ + EVAL_RESULT(gsl_sf_bessel_Ynu_e(nu, x, &result)); +} diff --git a/gsl-2.5/specfunc/bessel_Ynu.lo b/gsl-2.5/specfunc/bessel_Ynu.lo new file mode 100644 index 00000000..c17b319b --- /dev/null +++ b/gsl-2.5/specfunc/bessel_Ynu.lo @@ -0,0 +1,12 @@ +# bessel_Ynu.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/bessel_Ynu.o' + +# Name of the non-PIC object +non_pic_object='bessel_Ynu.o' + diff --git a/gsl-2.5/specfunc/bessel_amp_phase.c b/gsl-2.5/specfunc/bessel_amp_phase.c new file mode 100644 index 00000000..43b6940d --- /dev/null +++ b/gsl-2.5/specfunc/bessel_amp_phase.c @@ -0,0 +1,188 @@ +/* specfunc/bessel_amp_phase.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ + +#include + +#include +#include +#include +#include "bessel_amp_phase.h" + +/* chebyshev expansions for amplitude and phase + functions used in bessel evaluations + + These are the same for J0,Y0 and for J1,Y1, so + they sit outside those functions. +*/ + +static double bm0_data[21] = { + 0.09284961637381644, + -0.00142987707403484, + 0.00002830579271257, + -0.00000143300611424, + 0.00000012028628046, + -0.00000001397113013, + 0.00000000204076188, + -0.00000000035399669, + 0.00000000007024759, + -0.00000000001554107, + 0.00000000000376226, + -0.00000000000098282, + 0.00000000000027408, + -0.00000000000008091, + 0.00000000000002511, + -0.00000000000000814, + 0.00000000000000275, + -0.00000000000000096, + 0.00000000000000034, + -0.00000000000000012, + 0.00000000000000004 +}; +const cheb_series _gsl_sf_bessel_amp_phase_bm0_cs = { + bm0_data, + 20, + -1, 1, + 10 +}; + +static double bth0_data[24] = { + -0.24639163774300119, + 0.001737098307508963, + -0.000062183633402968, + 0.000004368050165742, + -0.000000456093019869, + 0.000000062197400101, + -0.000000010300442889, + 0.000000001979526776, + -0.000000000428198396, + 0.000000000102035840, + -0.000000000026363898, + 0.000000000007297935, + -0.000000000002144188, + 0.000000000000663693, + -0.000000000000215126, + 0.000000000000072659, + -0.000000000000025465, + 0.000000000000009229, + -0.000000000000003448, + 0.000000000000001325, + -0.000000000000000522, + 0.000000000000000210, + -0.000000000000000087, + 0.000000000000000036 +}; +const cheb_series _gsl_sf_bessel_amp_phase_bth0_cs = { + bth0_data, + 23, + -1, 1, + 12 +}; + + +static double bm1_data[21] = { + 0.1047362510931285, + 0.00442443893702345, + -0.00005661639504035, + 0.00000231349417339, + -0.00000017377182007, + 0.00000001893209930, + -0.00000000265416023, + 0.00000000044740209, + -0.00000000008691795, + 0.00000000001891492, + -0.00000000000451884, + 0.00000000000116765, + -0.00000000000032265, + 0.00000000000009450, + -0.00000000000002913, + 0.00000000000000939, + -0.00000000000000315, + 0.00000000000000109, + -0.00000000000000039, + 0.00000000000000014, + -0.00000000000000005, +}; +const cheb_series _gsl_sf_bessel_amp_phase_bm1_cs = { + bm1_data, + 20, + -1, 1, + 10 +}; + +static double bth1_data[24] = { + 0.74060141026313850, + -0.004571755659637690, + 0.000119818510964326, + -0.000006964561891648, + 0.000000655495621447, + -0.000000084066228945, + 0.000000013376886564, + -0.000000002499565654, + 0.000000000529495100, + -0.000000000124135944, + 0.000000000031656485, + -0.000000000008668640, + 0.000000000002523758, + -0.000000000000775085, + 0.000000000000249527, + -0.000000000000083773, + 0.000000000000029205, + -0.000000000000010534, + 0.000000000000003919, + -0.000000000000001500, + 0.000000000000000589, + -0.000000000000000237, + 0.000000000000000097, + -0.000000000000000040, +}; +const cheb_series _gsl_sf_bessel_amp_phase_bth1_cs = { + bth1_data, + 23, + -1, 1, + 12 +}; + + +int +gsl_sf_bessel_asymp_Mnu_e(const double nu, const double x, double * result) +{ + const double r = 2.0*nu/x; + const double r2 = r*r; + const double x2 = x*x; + const double term1 = (r2-1.0/x2)/8.0; + const double term2 = (r2-1.0/x2)*(r2-9.0/x2)*3.0/128.0; + const double Mnu2_c = 2.0/(M_PI) * (1.0 + term1 + term2); + *result = sqrt(Mnu2_c)/sqrt(x); /* will never underflow this way */ + return GSL_SUCCESS; +} + + +int +gsl_sf_bessel_asymp_thetanu_corr_e(const double nu, const double x, double * result) +{ + const double r = 2.0*nu/x; + const double r2 = r*r; + const double x2 = x*x; + const double term1 = x*(r2 - 1.0/x2)/8.0; + const double term2 = x*(r2 - 1.0/x2)*(r2 - 25.0/x2)/384.0; + *result = (-0.25*M_PI + term1 + term2); + return GSL_SUCCESS; +} diff --git a/gsl-2.5/specfunc/bessel_amp_phase.h b/gsl-2.5/specfunc/bessel_amp_phase.h new file mode 100644 index 00000000..189d8866 --- /dev/null +++ b/gsl-2.5/specfunc/bessel_amp_phase.h @@ -0,0 +1,45 @@ +/* specfunc/bessel_amp_phase.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ + +#ifndef _BESSEL_AMP_PHASE_H_ +#define _BESSEL_AMP_PHASE_H_ + + +#include "chebyshev.h" + +extern const cheb_series _gsl_sf_bessel_amp_phase_bm0_cs; +extern const cheb_series _gsl_sf_bessel_amp_phase_bth0_cs; + +extern const cheb_series _gsl_sf_bessel_amp_phase_bm1_cs; +extern const cheb_series _gsl_sf_bessel_amp_phase_bth1_cs; + + +/* large argument expansions [Abramowitz+Stegun, 9.2.28-29] + * + * thetanu_corr = thetanu - x + 1/2 nu Pi + * + * assumes x > 0 + */ +int gsl_sf_bessel_asymp_Mnu_e(const double nu, const double x, double * result); +int gsl_sf_bessel_asymp_thetanu_corr_e(const double nu, const double x, double * result); /* w/o x term */ + + +#endif /* !_BESSEL_AMP_PHASE_H_ */ diff --git a/gsl-2.5/specfunc/bessel_amp_phase.lo b/gsl-2.5/specfunc/bessel_amp_phase.lo new file mode 100644 index 00000000..3ad21d14 --- /dev/null +++ b/gsl-2.5/specfunc/bessel_amp_phase.lo @@ -0,0 +1,12 @@ +# bessel_amp_phase.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/bessel_amp_phase.o' + +# Name of the non-PIC object +non_pic_object='bessel_amp_phase.o' + diff --git a/gsl-2.5/specfunc/bessel_i.c b/gsl-2.5/specfunc/bessel_i.c new file mode 100644 index 00000000..e888e3a5 --- /dev/null +++ b/gsl-2.5/specfunc/bessel_i.c @@ -0,0 +1,329 @@ +/* specfunc/bessel_i.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ + +#include +#include +#include +#include +#include + +#include "error.h" + +#include "bessel.h" + + +/* i_{l+1}/i_l + */ +static +int +bessel_il_CF1(const int l, const double x, const double threshold, double * ratio) +{ + const int kmax = 2000; + double tk = 1.0; + double sum = 1.0; + double rhok = 0.0; + int k; + + for(k=1; k<=kmax; k++) { + double ak = (x/(2.0*l+1.0+2.0*k)) * (x/(2.0*l+3.0+2.0*k)); + rhok = -ak*(1.0 + rhok)/(1.0 + ak*(1.0 + rhok)); + tk *= rhok; + sum += tk; + if(fabs(tk/sum) < threshold) break; + } + + *ratio = x/(2.0*l+3.0) * sum; + + if(k == kmax) + GSL_ERROR ("error", GSL_EMAXITER); + else + return GSL_SUCCESS; +} + + +/*-*-*-*-*-*-*-*-*-*-*-* Functions with Error Codes *-*-*-*-*-*-*-*-*-*-*-*/ + +int gsl_sf_bessel_i0_scaled_e(const double x, gsl_sf_result * result) +{ + double ax = fabs(x); + + /* CHECK_POINTER(result) */ + + if(x == 0.0) { + result->val = 1.0; + result->err = 0.0; + return GSL_SUCCESS; + } + else if(ax < 0.2) { + const double eax = exp(-ax); + const double y = ax*ax; + const double c1 = 1.0/6.0; + const double c2 = 1.0/120.0; + const double c3 = 1.0/5040.0; + const double c4 = 1.0/362880.0; + const double c5 = 1.0/39916800.0; + const double sum = 1.0 + y*(c1 + y*(c2 + y*(c3 + y*(c4 + y*c5)))); + result->val = eax * sum; + result->err = 2.0 * GSL_DBL_EPSILON * result->val; + } + else if(ax < -0.5*GSL_LOG_DBL_EPSILON) { + result->val = (1.0 - exp(-2.0*ax))/(2.0*ax); + result->err = 2.0 * GSL_DBL_EPSILON * result->val; + } + else { + result->val = 1.0/(2.0*ax); + result->err = 2.0 * GSL_DBL_EPSILON * result->val; + } + return GSL_SUCCESS; +} + + +int gsl_sf_bessel_i1_scaled_e(const double x, gsl_sf_result * result) +{ + double ax = fabs(x); + + /* CHECK_POINTER(result) */ + + if(x == 0.0) { + result->val = 0.0; + result->err = 0.0; + return GSL_SUCCESS; + } + else if(ax < 3.0*GSL_DBL_MIN) { + UNDERFLOW_ERROR(result); + } + else if(ax < 0.25) { + const double eax = exp(-ax); + const double y = x*x; + const double c1 = 1.0/10.0; + const double c2 = 1.0/280.0; + const double c3 = 1.0/15120.0; + const double c4 = 1.0/1330560.0; + const double c5 = 1.0/172972800.0; + const double sum = 1.0 + y*(c1 + y*(c2 + y*(c3 + y*(c4 + y*c5)))); + result->val = eax * x/3.0 * sum; + result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else { + double ex = exp(-2.0*ax); + result->val = 0.5 * (ax*(1.0+ex) - (1.0-ex)) / (ax*ax); + result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val); + if(x < 0.0) result->val = -result->val; + return GSL_SUCCESS; + } +} + + +int gsl_sf_bessel_i2_scaled_e(const double x, gsl_sf_result * result) +{ + double ax = fabs(x); + + /* CHECK_POINTER(result) */ + + if(x == 0.0) { + result->val = 0.0; + result->err = 0.0; + return GSL_SUCCESS; + } + else if(ax < 4.0*GSL_SQRT_DBL_MIN) { + UNDERFLOW_ERROR(result); + } + else if(ax < 0.25) { + const double y = x*x; + const double c1 = 1.0/14.0; + const double c2 = 1.0/504.0; + const double c3 = 1.0/33264.0; + const double c4 = 1.0/3459456.0; + const double c5 = 1.0/518918400.0; + const double sum = 1.0 + y*(c1 + y*(c2 + y*(c3 + y*(c4 + y*c5)))); + const double pre = exp(-ax) * x*x/15.0; + result->val = pre * sum; + result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else { + double ex = exp(-2.0*ax); + double x2 = x*x; + result->val = 0.5 * ((3.0+x2)*(1.0-ex) - 3.0*ax*(1.0+ex))/(ax*ax*ax); + result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } +} + + +int gsl_sf_bessel_il_scaled_e(const int l, double x, gsl_sf_result * result) +{ + double sgn = 1.0; + double ax = fabs(x); + + if(x < 0.0) { + /* i_l(-x) = (-1)^l i_l(x) */ + sgn = ( GSL_IS_ODD(l) ? -1.0 : 1.0 ); + x = -x; + } + + if(l < 0) { + DOMAIN_ERROR(result); + } + else if(x == 0.0) { + result->val = ( l == 0 ? 1.0 : 0.0 ); + result->err = 0.0; + return GSL_SUCCESS; + } + else if(l == 0) { + gsl_sf_result il; + int stat_il = gsl_sf_bessel_i0_scaled_e(x, &il); + result->val = sgn * il.val; + result->err = il.err; + return stat_il; + } + else if(l == 1) { + gsl_sf_result il; + int stat_il = gsl_sf_bessel_i1_scaled_e(x, &il); + result->val = sgn * il.val; + result->err = il.err; + return stat_il; + } + else if(l == 2) { + gsl_sf_result il; + int stat_il = gsl_sf_bessel_i2_scaled_e(x, &il); + result->val = sgn * il.val; + result->err = il.err; + return stat_il; + } + else if(x*x < 10.0*(l+1.5)/M_E) { + gsl_sf_result b; + int stat = gsl_sf_bessel_IJ_taylor_e(l+0.5, x, 1, 50, GSL_DBL_EPSILON, &b); + double pre = exp(-ax) * sqrt((0.5*M_PI)/x); + result->val = sgn * pre * b.val; + result->err = pre * b.err; + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return stat; + } + else if(l < 150) { + gsl_sf_result i0_scaled; + int stat_i0 = gsl_sf_bessel_i0_scaled_e(ax, &i0_scaled); + double rat; + int stat_CF1 = bessel_il_CF1(l, ax, GSL_DBL_EPSILON, &rat); + double iellp1 = rat * GSL_SQRT_DBL_MIN; + double iell = GSL_SQRT_DBL_MIN; + double iellm1; + int ell; + for(ell = l; ell >= 1; ell--) { + iellm1 = iellp1 + (2*ell + 1)/x * iell; + iellp1 = iell; + iell = iellm1; + } + result->val = sgn * i0_scaled.val * (GSL_SQRT_DBL_MIN / iell); + result->err = i0_scaled.err * (GSL_SQRT_DBL_MIN / iell); + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_ERROR_SELECT_2(stat_i0, stat_CF1); + } + else if(GSL_MIN(0.29/(l*l+1.0), 0.5/(l*l+1.0+x*x)) < 0.5*GSL_ROOT3_DBL_EPSILON) { + int status = gsl_sf_bessel_Inu_scaled_asymp_unif_e(l + 0.5, x, result); + double pre = sqrt((0.5*M_PI)/x); + result->val *= sgn * pre; + result->err *= pre; + return status; + } + else { + /* recurse down from safe values */ + double rt_term = sqrt((0.5*M_PI)/x); + const int LMAX = 2 + (int) (1.2 / GSL_ROOT6_DBL_EPSILON); + gsl_sf_result r_iellp1; + gsl_sf_result r_iell; + int stat_a1 = gsl_sf_bessel_Inu_scaled_asymp_unif_e(LMAX + 1 + 0.5, x, &r_iellp1); + int stat_a2 = gsl_sf_bessel_Inu_scaled_asymp_unif_e(LMAX + 0.5, x, &r_iell); + double iellp1 = r_iellp1.val; + double iell = r_iell.val; + double iellm1 = 0.0; + int ell; + iellp1 *= rt_term; + iell *= rt_term; + for(ell = LMAX; ell >= l+1; ell--) { + iellm1 = iellp1 + (2*ell + 1)/x * iell; + iellp1 = iell; + iell = iellm1; + } + result->val = sgn * iellm1; + result->err = fabs(result->val)*(GSL_DBL_EPSILON + fabs(r_iellp1.err/r_iellp1.val) + fabs(r_iell.err/r_iell.val)); + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + + return GSL_ERROR_SELECT_2(stat_a1, stat_a2); + } +} + + +int gsl_sf_bessel_il_scaled_array(const int lmax, const double x, double * result_array) +{ + if(x == 0.0) { + int ell; + result_array[0] = 1.0; + for (ell = lmax; ell >= 1; ell--) { + result_array[ell] = 0.0; + }; + return GSL_SUCCESS; + } else { + int ell; + gsl_sf_result r_iellp1; + gsl_sf_result r_iell; + int stat_0 = gsl_sf_bessel_il_scaled_e(lmax+1, x, &r_iellp1); + int stat_1 = gsl_sf_bessel_il_scaled_e(lmax, x, &r_iell); + double iellp1 = r_iellp1.val; + double iell = r_iell.val; + double iellm1; + result_array[lmax] = iell; + for(ell = lmax; ell >= 1; ell--) { + iellm1 = iellp1 + (2*ell + 1)/x * iell; + iellp1 = iell; + iell = iellm1; + result_array[ell-1] = iellm1; + } + return GSL_ERROR_SELECT_2(stat_0, stat_1); + } +} + + +/*-*-*-*-*-*-*-*-*-* Functions w/ Natural Prototypes *-*-*-*-*-*-*-*-*-*-*/ + +#include "eval.h" + +double gsl_sf_bessel_i0_scaled(const double x) +{ + EVAL_RESULT(gsl_sf_bessel_i0_scaled_e(x, &result)); +} + +double gsl_sf_bessel_i1_scaled(const double x) +{ + EVAL_RESULT(gsl_sf_bessel_i1_scaled_e(x, &result)); +} + +double gsl_sf_bessel_i2_scaled(const double x) +{ + EVAL_RESULT(gsl_sf_bessel_i2_scaled_e(x, &result)); +} + +double gsl_sf_bessel_il_scaled(const int l, const double x) +{ + EVAL_RESULT(gsl_sf_bessel_il_scaled_e(l, x, &result)); +} + diff --git a/gsl-2.5/specfunc/bessel_i.lo b/gsl-2.5/specfunc/bessel_i.lo new file mode 100644 index 00000000..1bab08ee --- /dev/null +++ b/gsl-2.5/specfunc/bessel_i.lo @@ -0,0 +1,12 @@ +# bessel_i.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/bessel_i.o' + +# Name of the non-PIC object +non_pic_object='bessel_i.o' + diff --git a/gsl-2.5/specfunc/bessel_j.c b/gsl-2.5/specfunc/bessel_j.c new file mode 100644 index 00000000..ef02dd9f --- /dev/null +++ b/gsl-2.5/specfunc/bessel_j.c @@ -0,0 +1,401 @@ +/* specfunc/bessel_j.c + * + * Copyright (C) 1996,1997,1998,1999,2000,2001,2002,2003 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ + +#include +#include +#include +#include +#include +#include + +#include "error.h" + +#include "bessel.h" +#include "bessel_olver.h" + +/*-*-*-*-*-*-*-*-*-*-*-* Functions with Error Codes *-*-*-*-*-*-*-*-*-*-*-*/ + +int gsl_sf_bessel_j0_e(const double x, gsl_sf_result * result) +{ + double ax = fabs(x); + + /* CHECK_POINTER(result) */ + + if(ax < 0.5) { + const double y = x*x; + const double c1 = -1.0/6.0; + const double c2 = 1.0/120.0; + const double c3 = -1.0/5040.0; + const double c4 = 1.0/362880.0; + const double c5 = -1.0/39916800.0; + const double c6 = 1.0/6227020800.0; + result->val = 1.0 + y*(c1 + y*(c2 + y*(c3 + y*(c4 + y*(c5 + y*c6))))); + result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else { + result->val = sin(x) / x; + result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } +} + + +int gsl_sf_bessel_j1_e(const double x, gsl_sf_result * result) +{ + double ax = fabs(x); + + /* CHECK_POINTER(result) */ + + if(x == 0.0) { + result->val = 0.0; + result->err = 0.0; + return GSL_SUCCESS; + } + else if(ax < 3.1*GSL_DBL_MIN) { + UNDERFLOW_ERROR(result); + } + else if(ax < 0.25) { + const double y = x*x; + const double c1 = -1.0/10.0; + const double c2 = 1.0/280.0; + const double c3 = -1.0/15120.0; + const double c4 = 1.0/1330560.0; + const double c5 = -1.0/172972800.0; + const double sum = 1.0 + y*(c1 + y*(c2 + y*(c3 + y*(c4 + y*c5)))); + result->val = x/3.0 * sum; + result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else { + const double cos_x = cos(x); + const double sin_x = sin(x); + result->val = (sin_x/x - cos_x)/x; + result->err = 2.0 * GSL_DBL_EPSILON * (fabs(sin_x/(x*x)) + fabs(cos_x/x)); + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } +} + + +int gsl_sf_bessel_j2_e(const double x, gsl_sf_result * result) +{ + double ax = fabs(x); + + /* CHECK_POINTER(result) */ + + if(x == 0.0) { + result->val = 0.0; + result->err = 0.0; + return GSL_SUCCESS; + } + else if(ax < 4.0*GSL_SQRT_DBL_MIN) { + UNDERFLOW_ERROR(result); + } + else if(ax < 1.3) { + const double y = x*x; + const double c1 = -1.0/14.0; + const double c2 = 1.0/504.0; + const double c3 = -1.0/33264.0; + const double c4 = 1.0/3459456.0; + const double c5 = -1.0/518918400; + const double c6 = 1.0/105859353600.0; + const double c7 = -1.0/28158588057600.0; + const double c8 = 1.0/9461285587353600.0; + const double c9 = -1.0/3916972233164390400.0; + const double sum = 1.0+y*(c1+y*(c2+y*(c3+y*(c4+y*(c5+y*(c6+y*(c7+y*(c8+y*c9)))))))); + result->val = y/15.0 * sum; + result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else { + /* bug #45730: switch from gsl_sf_{cos,sin} to cos/sin to fix large inputs */ +#if 0 + gsl_sf_result cos_result; + gsl_sf_result sin_result; + const int stat_cos = gsl_sf_cos_e(x, &cos_result); + const int stat_sin = gsl_sf_sin_e(x, &sin_result); + const double cos_x = cos_result.val; + const double sin_x = sin_result.val; + const double f = (3.0/(x*x) - 1.0); + result->val = (f * sin_x - 3.0*cos_x/x)/x; + result->err = fabs(f * sin_result.err/x) + fabs((3.0*cos_result.err/x)/x); + result->err += 2.0 * GSL_DBL_EPSILON * (fabs(f*sin_x/x) + 3.0*fabs(cos_x/(x*x))); + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_ERROR_SELECT_2(stat_cos, stat_sin); +#else + const double cos_x = cos(x); + const double sin_x = sin(x); + const double f = (3.0/(x*x) - 1.0); + result->val = (f * sin_x - 3.0*cos_x/x)/x; + result->err = 2.0 * GSL_DBL_EPSILON * (fabs(f*sin_x/x) + 3.0*fabs(cos_x/(x*x))); + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + /*return GSL_ERROR_SELECT_2(stat_cos, stat_sin);*/ + return GSL_SUCCESS; +#endif + } +} + + +int +gsl_sf_bessel_jl_e(const int l, const double x, gsl_sf_result * result) +{ + if(l < 0 || x < 0.0) { + DOMAIN_ERROR(result); + } + else if(x == 0.0) { + result->val = ( l > 0 ? 0.0 : 1.0 ); + result->err = 0.0; + return GSL_SUCCESS; + } + else if(l == 0) { + return gsl_sf_bessel_j0_e(x, result); + } + else if(l == 1) { + return gsl_sf_bessel_j1_e(x, result); + } + else if(l == 2) { + return gsl_sf_bessel_j2_e(x, result); + } + else if(x*x < 10.0*(l+0.5)/M_E) { + gsl_sf_result b; + int status = gsl_sf_bessel_IJ_taylor_e(l+0.5, x, -1, 50, GSL_DBL_EPSILON, &b); + double pre = sqrt((0.5*M_PI)/x); + result->val = pre * b.val; + result->err = pre * b.err; + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return status; + } + else if(GSL_ROOT4_DBL_EPSILON * x > (l*l + l + 1.0)) { + gsl_sf_result b; + int status = gsl_sf_bessel_Jnu_asympx_e(l + 0.5, x, &b); + double pre = sqrt((0.5*M_PI)/x); + result->val = pre * b.val; + result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val) + pre * b.err; + return status; + } + else if(l > 1.0/GSL_ROOT6_DBL_EPSILON) { + gsl_sf_result b; + int status = gsl_sf_bessel_Jnu_asymp_Olver_e(l + 0.5, x, &b); + double pre = sqrt((0.5*M_PI)/x); + result->val = pre * b.val; + result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val) + pre * b.err; + return status; + } + else if(x > 1000.0 && x > l*l) + { + /* We need this path to avoid feeding large x to CF1 below; */ + gsl_sf_result b; + int status = gsl_sf_bessel_Jnu_asympx_e(l + 0.5, x, &b); + double pre = sqrt((0.5*M_PI)/x); + result->val = pre * b.val; + result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val) + pre * b.err; + return status; + } + else { + double sgn; + double ratio; + /* The CF1 call will hit 10000 iterations for x > 10000 + l */ + int stat_CF1 = gsl_sf_bessel_J_CF1(l+0.5, x, &ratio, &sgn); + const double BESSEL_J_SMALL = GSL_DBL_MIN / GSL_DBL_EPSILON; + double jellp1 = BESSEL_J_SMALL * ratio; + double jell = BESSEL_J_SMALL; + double jellm1; + int ell; + for(ell = l; ell > 0; ell--) { + jellm1 = -jellp1 + (2*ell + 1)/x * jell; + jellp1 = jell; + jell = jellm1; + } + + if(fabs(jell) > fabs(jellp1)) { + gsl_sf_result j0_result; + int stat_j0 = gsl_sf_bessel_j0_e(x, &j0_result); + double pre = BESSEL_J_SMALL / jell; + result->val = j0_result.val * pre; + result->err = j0_result.err * fabs(pre); + result->err += 4.0 * GSL_DBL_EPSILON * (0.5*l + 1.0) * fabs(result->val); + return GSL_ERROR_SELECT_2(stat_j0, stat_CF1); + } + else { + gsl_sf_result j1_result; + int stat_j1 = gsl_sf_bessel_j1_e(x, &j1_result); + double pre = BESSEL_J_SMALL / jellp1; + result->val = j1_result.val * pre; + result->err = j1_result.err * fabs(pre); + result->err += 4.0 * GSL_DBL_EPSILON * (0.5*l + 1.0) * fabs(result->val); + return GSL_ERROR_SELECT_2(stat_j1, stat_CF1); + } + } +} + + +int +gsl_sf_bessel_jl_array(const int lmax, const double x, double * result_array) +{ + /* CHECK_POINTER(result_array) */ + + if(lmax < 0 || x < 0.0) { + int j; + for(j=0; j<=lmax; j++) result_array[j] = 0.0; + GSL_ERROR ("error", GSL_EDOM); + } + else if(x == 0.0) { + int j; + for(j=1; j<=lmax; j++) result_array[j] = 0.0; + result_array[0] = 1.0; + return GSL_SUCCESS; + } + else { + gsl_sf_result r_jellp1; + gsl_sf_result r_jell; + int stat_0 = gsl_sf_bessel_jl_e(lmax+1, x, &r_jellp1); + int stat_1 = gsl_sf_bessel_jl_e(lmax, x, &r_jell); + double jellp1 = r_jellp1.val; + double jell = r_jell.val; + double jellm1; + int ell; + + result_array[lmax] = jell; + for(ell = lmax; ell >= 1; ell--) { + jellm1 = -jellp1 + (2*ell + 1)/x * jell; + jellp1 = jell; + jell = jellm1; + result_array[ell-1] = jellm1; + } + + return GSL_ERROR_SELECT_2(stat_0, stat_1); + } +} + + +int gsl_sf_bessel_jl_steed_array(const int lmax, const double x, double * jl_x) +{ + /* CHECK_POINTER(jl_x) */ + + if(lmax < 0 || x < 0.0) { + int j; + for(j=0; j<=lmax; j++) jl_x[j] = 0.0; + GSL_ERROR ("error", GSL_EDOM); + } + else if(x == 0.0) { + int j; + for(j=1; j<=lmax; j++) jl_x[j] = 0.0; + jl_x[0] = 1.0; + return GSL_SUCCESS; + } + else if(x < 2.0*GSL_ROOT4_DBL_EPSILON) { + /* first two terms of Taylor series */ + double inv_fact = 1.0; /* 1/(1 3 5 ... (2l+1)) */ + double x_l = 1.0; /* x^l */ + int l; + for(l=0; l<=lmax; l++) { + jl_x[l] = x_l * inv_fact; + jl_x[l] *= 1.0 - 0.5*x*x/(2.0*l+3.0); + inv_fact /= 2.0*l+3.0; + x_l *= x; + } + return GSL_SUCCESS; + } + else { + /* Steed/Barnett algorithm [Comp. Phys. Comm. 21, 297 (1981)] */ + double x_inv = 1.0/x; + double W = 2.0*x_inv; + double F = 1.0; + double FP = (lmax+1.0) * x_inv; + double B = 2.0*FP + x_inv; + double end = B + 20000.0*W; + double D = 1.0/B; + double del = -D; + + FP += del; + + /* continued fraction */ + do { + B += W; + D = 1.0/(B-D); + del *= (B*D - 1.); + FP += del; + if(D < 0.0) F = -F; + if(B > end) { + GSL_ERROR ("error", GSL_EMAXITER); + } + } + while(fabs(del) >= fabs(FP) * GSL_DBL_EPSILON); + + FP *= F; + + if(lmax > 0) { + /* downward recursion */ + double XP2 = FP; + double PL = lmax * x_inv; + int L = lmax; + int LP; + jl_x[lmax] = F; + for(LP = 1; LP<=lmax; LP++) { + jl_x[L-1] = PL * jl_x[L] + XP2; + FP = PL*jl_x[L-1] - jl_x[L]; + XP2 = FP; + PL -= x_inv; + --L; + } + F = jl_x[0]; + } + + /* normalization */ + W = x_inv / hypot(FP, F); + jl_x[0] = W*F; + if(lmax > 0) { + int L; + for(L=1; L<=lmax; L++) { + jl_x[L] *= W; + } + } + + return GSL_SUCCESS; + } +} + + +/*-*-*-*-*-*-*-*-*-* Functions w/ Natural Prototypes *-*-*-*-*-*-*-*-*-*-*/ + +#include "eval.h" + +double gsl_sf_bessel_j0(const double x) +{ + EVAL_RESULT(gsl_sf_bessel_j0_e(x, &result)); +} + +double gsl_sf_bessel_j1(const double x) +{ + EVAL_RESULT(gsl_sf_bessel_j1_e(x, &result)); +} + +double gsl_sf_bessel_j2(const double x) +{ + EVAL_RESULT(gsl_sf_bessel_j2_e(x, &result)); +} + +double gsl_sf_bessel_jl(const int l, const double x) +{ + EVAL_RESULT(gsl_sf_bessel_jl_e(l, x, &result)); +} + diff --git a/gsl-2.5/specfunc/bessel_j.lo b/gsl-2.5/specfunc/bessel_j.lo new file mode 100644 index 00000000..5b05680d --- /dev/null +++ b/gsl-2.5/specfunc/bessel_j.lo @@ -0,0 +1,12 @@ +# bessel_j.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/bessel_j.o' + +# Name of the non-PIC object +non_pic_object='bessel_j.o' + diff --git a/gsl-2.5/specfunc/bessel_k.c b/gsl-2.5/specfunc/bessel_k.c new file mode 100644 index 00000000..d206c035 --- /dev/null +++ b/gsl-2.5/specfunc/bessel_k.c @@ -0,0 +1,248 @@ +/* specfunc/bessel_k.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ + +#include +#include +#include +#include +#include +#include + +#include "error.h" +#include "check.h" + +#include "bessel.h" + +/*-*-*-*-*-*-*-*-*-*-*-* Private Section *-*-*-*-*-*-*-*-*-*-*-*/ + +/* [Abramowitz+Stegun, 10.2.4 + 10.2.6] + * with lmax=15, precision ~ 15D for x < 3 + * + * assumes l >= 1 + */ +static int bessel_kl_scaled_small_x(int l, const double x, gsl_sf_result * result) +{ + gsl_sf_result num_fact; + double den = gsl_sf_pow_int(x, l+1); + int stat_df = gsl_sf_doublefact_e((unsigned int) (2*l-1), &num_fact); + + if(stat_df != GSL_SUCCESS || den == 0.0) { + OVERFLOW_ERROR(result); + } + else { + const int lmax = 50; + gsl_sf_result ipos_term; + double ineg_term; + double sgn = (GSL_IS_ODD(l) ? -1.0 : 1.0); + double ex = exp(x); + double t = 0.5*x*x; + double sum = 1.0; + double t_coeff = 1.0; + double t_power = 1.0; + double delta; + int stat_il; + int i; + + for(i=1; ival = -sgn * 0.5*M_PI * (ex*ipos_term.val - ineg_term); + result->val *= ex; + result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return stat_il; + } +} + + +/*-*-*-*-*-*-*-*-*-*-*-* Functions with Error Codes *-*-*-*-*-*-*-*-*-*-*-*/ + +int gsl_sf_bessel_k0_scaled_e(const double x, gsl_sf_result * result) +{ + /* CHECK_POINTER(result) */ + + if(x <= 0.0) { + DOMAIN_ERROR(result); + } + else { + result->val = M_PI/(2.0*x); + result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val); + CHECK_UNDERFLOW(result); + return GSL_SUCCESS; + } +} + + +int gsl_sf_bessel_k1_scaled_e(const double x, gsl_sf_result * result) +{ + /* CHECK_POINTER(result) */ + + if(x <= 0.0) { + DOMAIN_ERROR(result); + } + else if(x < (M_SQRTPI+1.0)/(M_SQRT2*GSL_SQRT_DBL_MAX)) { + OVERFLOW_ERROR(result); + } + else { + result->val = M_PI/(2.0*x) * (1.0 + 1.0/x); + result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val); + CHECK_UNDERFLOW(result); + return GSL_SUCCESS; + } +} + + +int gsl_sf_bessel_k2_scaled_e(const double x, gsl_sf_result * result) +{ + /* CHECK_POINTER(result) */ + + if(x <= 0.0) { + DOMAIN_ERROR(result); + } + else if(x < 2.0/GSL_ROOT3_DBL_MAX) { + OVERFLOW_ERROR(result); + } + else { + result->val = M_PI/(2.0*x) * (1.0 + 3.0/x * (1.0 + 1.0/x)); + result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val); + CHECK_UNDERFLOW(result); + return GSL_SUCCESS; + } +} + + +int gsl_sf_bessel_kl_scaled_e(int l, const double x, gsl_sf_result * result) +{ + if(l < 0 || x <= 0.0) { + DOMAIN_ERROR(result); + } + else if(l == 0) { + return gsl_sf_bessel_k0_scaled_e(x, result); + } + else if(l == 1) { + return gsl_sf_bessel_k1_scaled_e(x, result); + } + else if(l == 2) { + return gsl_sf_bessel_k2_scaled_e(x, result); + } + else if(x < 3.0) { + return bessel_kl_scaled_small_x(l, x, result); + } + else if(GSL_ROOT3_DBL_EPSILON * x > (l*l + l + 1)) { + int status = gsl_sf_bessel_Knu_scaled_asympx_e(l + 0.5, x, result); + double pre = sqrt((0.5*M_PI)/x); + result->val *= pre; + result->err *= pre; + return status; + } + else if(GSL_MIN(0.29/(l*l+1.0), 0.5/(l*l+1.0+x*x)) < GSL_ROOT3_DBL_EPSILON) { + int status = gsl_sf_bessel_Knu_scaled_asymp_unif_e(l + 0.5, x, result); + double pre = sqrt((0.5*M_PI)/x); + result->val *= pre; + result->err *= pre; + return status; + } + else { + /* recurse upward */ + gsl_sf_result r_bk; + gsl_sf_result r_bkm; + int stat_1 = gsl_sf_bessel_k1_scaled_e(x, &r_bk); + int stat_0 = gsl_sf_bessel_k0_scaled_e(x, &r_bkm); + double bkp; + double bk = r_bk.val; + double bkm = r_bkm.val; + int j; + for(j=1; jval = bk; + result->err = fabs(bk) * (fabs(r_bk.err/r_bk.val) + fabs(r_bkm.err/r_bkm.val)); + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + + return GSL_ERROR_SELECT_2(stat_1, stat_0); + } +} + +int +gsl_sf_bessel_kl_scaled_array(const int lmax, const double x, double * result_array) +{ + if(lmax < 0 || x <= 0.0) { + GSL_ERROR("domain error", GSL_EDOM); + } else if (lmax == 0) { + gsl_sf_result result; + int stat = gsl_sf_bessel_k0_scaled_e(x, &result); + result_array[0] = result.val; + return stat; + } else { + int ell; + double kellp1, kell, kellm1; + gsl_sf_result r_kell; + gsl_sf_result r_kellm1; + gsl_sf_bessel_k1_scaled_e(x, &r_kell); + gsl_sf_bessel_k0_scaled_e(x, &r_kellm1); + kell = r_kell.val; + kellm1 = r_kellm1.val; + result_array[0] = kellm1; + result_array[1] = kell; + for(ell = 1; ell < lmax; ell++) { + kellp1 = (2*ell+1)/x * kell + kellm1; + result_array[ell+1] = kellp1; + kellm1 = kell; + kell = kellp1; + } + return GSL_SUCCESS; + } +} + + +/*-*-*-*-*-*-*-*-*-* Functions w/ Natural Prototypes *-*-*-*-*-*-*-*-*-*-*/ + +#include "eval.h" + +double gsl_sf_bessel_k0_scaled(const double x) +{ + EVAL_RESULT(gsl_sf_bessel_k0_scaled_e(x, &result)); +} + +double gsl_sf_bessel_k1_scaled(const double x) +{ + EVAL_RESULT(gsl_sf_bessel_k1_scaled_e(x, &result)); +} + +double gsl_sf_bessel_k2_scaled(const double x) +{ + EVAL_RESULT(gsl_sf_bessel_k2_scaled_e(x, &result)); +} + +double gsl_sf_bessel_kl_scaled(const int l, const double x) +{ + EVAL_RESULT(gsl_sf_bessel_kl_scaled_e(l, x, &result)); +} + + diff --git a/gsl-2.5/specfunc/bessel_k.lo b/gsl-2.5/specfunc/bessel_k.lo new file mode 100644 index 00000000..ad710fe3 --- /dev/null +++ b/gsl-2.5/specfunc/bessel_k.lo @@ -0,0 +1,12 @@ +# bessel_k.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/bessel_k.o' + +# Name of the non-PIC object +non_pic_object='bessel_k.o' + diff --git a/gsl-2.5/specfunc/bessel_olver.c b/gsl-2.5/specfunc/bessel_olver.c new file mode 100644 index 00000000..949c0987 --- /dev/null +++ b/gsl-2.5/specfunc/bessel_olver.c @@ -0,0 +1,982 @@ +/* specfunc/bessel_olver.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ + +#include +#include +#include +#include + +#include "error.h" + +#include "bessel.h" +#include "bessel_olver.h" + +#include "chebyshev.h" +#include "cheb_eval.c" + +/* fit for f(x) = zofmzeta((x+1)/2), 0 <= mzeta <= 1 */ +static double zofmzeta_a_data[20] = { + 2.9332563730829348990, + 0.4896518224847036624, + 0.0228637617355380860, + -0.0001715731377284693, + -0.0000105927538148751, + 1.0595602530419e-6, + -4.68016051691e-8, + 5.8310020e-12, + 1.766537581e-10, + -1.45034640e-11, + 4.357772e-13, + 4.60971e-14, + -2.57571e-14, + 2.26468e-14, + -2.22053e-14, + 2.08593e-14, + -1.84454e-14, + 1.50150e-14, + -1.06506e-14, + 5.5375e-15 +}; +static cheb_series zofmzeta_a_cs = { + zofmzeta_a_data, + 19, + -1,1, + 8 +}; + + +/* fit for f(x) = zofmzeta((9x+11)/2), 1 <= mzeta <= 10 */ +static double zofmzeta_b_data[30] = { + 22.40725276466303489, + 10.39808258825165581, + 1.092050144486018425, + -0.071111274777921604, + 0.008990125336059704, + -0.001201950338088875, + 0.000106686807968315, + 0.000017406491576830, + -0.000014946669657805, + 6.189984487752e-6, + -2.049466715178e-6, + 5.87189458020e-7, + -1.46077514157e-7, + 2.9803936132e-8, + -3.817692108e-9, + -4.66980416e-10, + 5.83860334e-10, + -2.78825299e-10, + 1.01682688e-10, + -3.1209928e-11, + 8.111122e-12, + -1.663986e-12, + 1.81364e-13, + 5.3414e-14, + -4.7234e-14, + 2.1689e-14, + -7.815e-15, + 2.371e-15, + -6.04e-16, + 1.20e-16 +}; +static cheb_series zofmzeta_b_cs = { + zofmzeta_b_data, + 29, + -1,1, + 15 +}; + + +/* fit for f(x) = zofmzeta(mz(x))/mz(x)^(3/2), + * mz(x) = (2/(x+1))^(2/3) 10 + * 10 <= mzeta <= Inf + */ +static double zofmzeta_c_data[11] = { + 1.3824761227122911500, + 0.0244856101686774245, + -0.0000842866496282540, + 1.4656076569771e-6, + -3.14874099476e-8, + 7.561134833e-10, + -1.94531643e-11, + 5.245878e-13, + -1.46380e-14, + 4.192e-16, + -1.23e-17 +}; +static cheb_series zofmzeta_c_cs = { + zofmzeta_c_data, + 10, + -1,1, + 6 +}; + + +/* Invert [Abramowitz+Stegun, 9.3.39]. + * Assumes minus_zeta >= 0. + */ +double +gsl_sf_bessel_Olver_zofmzeta(double minus_zeta) +{ + if(minus_zeta < 1.0) { + const double x = 2.0*minus_zeta - 1.0; + gsl_sf_result c; + cheb_eval_e(&zofmzeta_a_cs, x, &c); + return c.val; + } + else if(minus_zeta < 10.0) { + const double x = (2.0*minus_zeta - 11.0)/9.0; + gsl_sf_result c; + cheb_eval_e(&zofmzeta_b_cs, x, &c); + return c.val; + } + else { + const double TEN_32 = 31.62277660168379332; /* 10^(3/2) */ + const double p = pow(minus_zeta, 3.0/2.0); + const double x = 2.0*TEN_32/p - 1.0; + gsl_sf_result c; + cheb_eval_e(&zofmzeta_c_cs, x, &c); + return c.val * p; + } +} + + +/* Chebyshev fit for f(x) = z(x)^6 A_3(z(x)), z(x) = 22/(10(x+1)) */ +static double A3_gt1_data[31] = { + -0.123783199829515294670493131190, + 0.104636462534700704670877382304, + -0.067500816575851826744877535903, + 0.035563362418888483652711005520, + -0.0160738524035979408472979609051, + 0.0064497878252851092073278056238, + -0.00235408261133449663958121821593, + 0.00079545702851302155411892534965, + -0.00025214920745855079895784825637, + 0.00007574004596069392921153301833, + -0.00002172917966339623434407978263, + 5.9914810727868915476543145465e-06, + -1.5958781571808992162953719817e-06, + 4.1232986512903717525448312012e-07, + -1.0369725993417659101913919101e-07, + 2.5457982304266541145999235022e-08, + -6.1161715053791743082427422443e-09, + 1.4409346199138658887871461320e-09, + -3.3350445956255561668232014995e-10, + 7.5950686572918996453336138108e-11, + -1.7042296334409430377389900278e-11, + 3.7723525020626230919721640081e-12, + -8.2460237635733980528416501227e-13, + 1.7816961527997797696251868875e-13, + -3.8084101506541792942694560802e-14, + 8.0593669930916099079755351563e-15, + -1.6896565961641739017452636964e-15, + 3.5115651805888443184822853595e-16, + -7.2384771938569255638904297651e-17, + 1.4806598977677176106283840244e-17, + -3.0069285750787303634897997963e-18 +}; +static cheb_series A3_gt1_cs = { + A3_gt1_data, + 30, + -1,1, + 17 +}; + +/* chebyshev expansion for f(x) = z(x)^8 A_4(z(x)), z(x) = 12/(5(x+1)) */ +static double A4_gt1_data[30] = { + 1.15309329391198493586724229008, + -1.01812701728669338904729927846, + 0.71964022270555684403652781941, + -0.42359963977172689685150061355, + 0.215024488759339557817435404261, + -0.096751915348145944032096342479, + 0.039413982058824310099856035361, + -0.014775225692561697963781115014, + 0.005162114514159370516947823271, + -0.00169783446445524322560925166335, + 0.00052995667873006847211519193478, + -0.00015802027574996477115667974856, + 0.000045254366680989687988902825193, + -0.000012503722965474638015488600967, + 3.3457656998119148699124716204e-06, + -8.6981575241150758412492331833e-07, + 2.2030895484325645640823940625e-07, + -5.4493369492600677068285936533e-08, + 1.3190457281724829107139385556e-08, + -3.1301560183377379158951191769e-09, + 7.2937802527123344842593076131e-10, + -1.6712080137945140407348940109e-10, + 3.7700053248213600430503521194e-11, + -8.3824538848817227637828899571e-12, + 1.8388741910049766865274037194e-12, + -3.9835919980753778560117573063e-13, + 8.5288827136546615604290389711e-14, + -1.8060227869114416998653266836e-14, + 3.7849342199690728470461022877e-15, + -7.8552867468122209577151823365e-16 +}; +static cheb_series A4_gt1_cs = { + A4_gt1_data, + 17, /* 29, */ + -1, 1, + 17 +}; + +/* Chebyshev fit for f(x) = z(x)^3 B_2(z(x)), z(x) = 12/(5(x+1)) */ +static double B2_gt1_data[40] = { + 0.00118587147272683864479328868589, + 0.00034820459990648274622193981840, + -0.00030411304425639768103075864567, + 0.00002812066284012343531484682886, + 0.00004493525295901613184489898748, + -0.00003037629997093072196779489677, + 0.00001125979647123875721949743970, + -2.4832533969517775991951008218e-06, + -9.9003813640537799587086928278e-08, + 4.9259859656183110299492296029e-07, + -3.7644120964426705960749504975e-07, + 2.2887828521334625189639122509e-07, + -1.3202687370822203731489855050e-07, + 7.7019669092537400811434860763e-08, + -4.6589706973010511603890144294e-08, + 2.9396476233013923711978522963e-08, + -1.9293230611988282919101954538e-08, + 1.3099107013728717842406906896e-08, + -9.1509111940885962831104149355e-09, + 6.5483472971925614347299375295e-09, + -4.7831253582139967461241674569e-09, + 3.5562625457426178152760148639e-09, + -2.6853389444008414186916562103e-09, + 2.0554738667134200145781857289e-09, + -1.5923172019517426277886522758e-09, + 1.2465923213464381457319481498e-09, + -9.8494846881180588507969988989e-10, + 7.8438674499372126663957464312e-10, + -6.2877567918342950225937136855e-10, + 5.0662318868755257959686944117e-10, + -4.0962270881243451160378710952e-10, + 3.3168684677374908553161911299e-10, + -2.6829406619847450633596163305e-10, + 2.1603988122184568375561077873e-10, + -1.7232373309560278402012124481e-10, + 1.3512709089611470626617830434e-10, + -1.0285354732538663013167579792e-10, + 7.4211345443901713467637018423e-11, + -4.8124980266864320351456993068e-11, + 2.3666534694476306077416831958e-11 +}; +static cheb_series B2_gt1_cs = { + B2_gt1_data, + 39, + -1, 1, + 30 +}; + + +/* Chebyshev fit for f(x) = z(x)^6 B_3(z(x)), z(x) = 12/(5(x+1)) */ +static double B3_gt1_data[30] = { + -0.0102445379362695740863663926486, + 0.0036618484329295342954730801917, + 0.0026154252498599303282569321117, + -0.0036187389410353156728771706336, + 0.0021878564157692275944613452462, + -0.0008219952303590803584426516821, + 0.0001281773889155631494321316520, + 0.0001000944653368032985720548637, + -0.0001288293344663774273453147788, + 0.00010136264202696513867821487205, + -0.00007000275849659556221916572733, + 0.00004694886396757430431607955146, + -0.00003190003869717837686356945696, + 0.00002231453668447775219665947479, + -0.00001611102197712439539300336438, + 0.00001196634424990735214466633513, + -9.0986920398931223804111374679e-06, + 7.0492613694235423068926562567e-06, + -5.5425216624642184684300615394e-06, + 4.4071884714230296614449244106e-06, + -3.5328595506791663127928952625e-06, + 2.84594975572077091520522824686e-06, + -2.29592697828824392391071619788e-06, + 1.84714740375289956396370322228e-06, + -1.47383331248116454652025598620e-06, + 1.15687781098593231076084710267e-06, + -8.8174688524627071175315084910e-07, + 6.3705856964426840441434605593e-07, + -4.1358791499961929237755474814e-07, + 2.0354151158738819867477996807e-07 +}; +static cheb_series B3_gt1_cs = { + B3_gt1_data, + 29, + -1, 1, + 29 +}; + + +/* Chebyshev fit for f(x) = z(x) B_2(z(x)), z(x) = 2(x+1)/5 */ +static double B2_lt1_data[40] = { + 0.00073681565841337130021924199490, + 0.00033803599647571227535304316937, + -0.00008251723219239754024210552679, + -0.00003390879948656432545900779710, + 0.00001961398056848881816694014889, + -2.35593745904151401624656805567e-06, + -1.79055017080406086541563835433e-06, + 1.33129571185610681090725934031e-06, + -5.38879444715436544130673956170e-07, + 1.49603056041381416881299945557e-07, + -1.83377228267274327911131293091e-08, + -1.33191430762944336526965187651e-08, + 1.60642096463700438411396889489e-08, + -1.28932576330421806740136816643e-08, + 9.6169275086179165484403221944e-09, + -7.1818502280703532276832887290e-09, + 5.4744009217215145730697754561e-09, + -4.2680446690508456935030086136e-09, + 3.3941665009266174865683284781e-09, + -2.7440714072221673882163135170e-09, + 2.2488361522108255229193038962e-09, + -1.8638240716608748862087923337e-09, + 1.5592350940805373500866440401e-09, + -1.3145743937732330609242633070e-09, + 1.1153716777215047842790244968e-09, + -9.5117576805266622854647303110e-10, + 8.1428799553234876296804561100e-10, + -6.9893770813548773664326279169e-10, + 6.0073113636087448745018831981e-10, + -5.1627434258513453901420776514e-10, + 4.4290993195074905891788459756e-10, + -3.7852978599966867611179315200e-10, + 3.2143959338863177145307610452e-10, + -2.7025926680620777594992221143e-10, + 2.2384857772457918539228234321e-10, + -1.8125071664276678046551271701e-10, + 1.4164870008713668767293008546e-10, + -1.0433101857132782485813325981e-10, + 6.8663910168392483929411418190e-11, + -3.4068313177952244040559740439e-11 +}; +static cheb_series B2_lt1_cs = { + B2_lt1_data, + 39, + -1, 1, + 39 +}; + + +/* Chebyshev fit for f(x) = B_3(2(x+1)/5) */ +static double B3_lt1_data[40] = { + -0.00137160820526992057354001614451, + -0.00025474937951101049982680561302, + 0.00024762975547895881652073467771, + 0.00005229657281480196749313930265, + -0.00007488354272621512385016593760, + 0.00001416880012891046449980449746, + 0.00001528986060172183690742576230, + -0.00001668672297078590514293325326, + 0.00001061765189536459018739585094, + -5.8220577442406209989680801335e-06, + 3.3322423743855900506302033234e-06, + -2.23292405803003860894449897815e-06, + 1.74816651036678291794777245325e-06, + -1.49581306041395051804547535093e-06, + 1.32759146107893129050610165582e-06, + -1.19376077392564467408373553343e-06, + 1.07878303863211630544654040875e-06, + -9.7743335011819134006676476250e-07, + 8.8729318903693324226127054792e-07, + -8.0671146292125665050876015280e-07, + 7.3432860378667354971042255937e-07, + -6.6897926072697370325310483359e-07, + 6.0966619703735610352576581485e-07, + -5.5554095284507959561958605420e-07, + 5.0588335673197236002812826526e-07, + -4.6008146297767601862670079590e-07, + 4.1761348515688145911438168306e-07, + -3.7803230006989446874174476515e-07, + 3.4095248501364300041684648230e-07, + -3.0603959751354749520615015472e-07, + 2.7300134179365690589640458993e-07, + -2.4158028250762304756044254231e-07, + 2.1154781038298751985689113868e-07, + -1.8269911328756771201465223313e-07, + 1.5484895085808513749026173074e-07, + -1.2782806851555809369226440495e-07, + 1.0148011725394892565174207341e-07, + -7.5658969771439627809239950461e-08, + 5.0226342286491286957075289622e-08, + -2.5049645660259882970547555831e-08 +}; +static cheb_series B3_lt1_cs = { + B3_lt1_data, + 39, + -1, 1, + 39 +}; + + +/* Chebyshev fit for f(x) = A_3(9(x+1)/20) */ +static double A3_lt1_data[40] = { + -0.00017982561472134418587634980117, + -0.00036558603837525275836608884064, + -0.00002819398055929628850294406363, + 0.00016704539863875736769812786067, + -0.00007098969970347674307623044850, + -8.4470843942344237748899879940e-06, + 0.0000273413090343147765148014327150, + -0.0000199073838489821681991178018081, + 0.0000100004176278235088881096950105, + -3.9739852013143676487867902026e-06, + 1.2265357766449574306882693267e-06, + -1.88755584306424047416914864854e-07, + -1.37482206060161206336523452036e-07, + 2.10326379301853336795686477738e-07, + -2.05583778245412633433934301948e-07, + 1.82377384812654863038691147988e-07, + -1.58130247846381041027699152436e-07, + 1.36966982725588978654041029615e-07, + -1.19250280944620257443805710485e-07, + 1.04477169029350256435316644493e-07, + -9.2064832489437534542041040184e-08, + 8.1523798290458784610230199344e-08, + -7.2471794980050867512294061891e-08, + 6.4614432955971132569968860233e-08, + -5.7724095125560946811081322985e-08, + 5.1623107567436835158110947901e-08, + -4.6171250746798606260216486042e-08, + 4.1256621998650164023254101585e-08, + -3.6788925543159819135102047082e-08, + 3.2694499457951844422299750661e-08, + -2.89125899697964696586521743928e-08, + 2.53925288725374047626589488217e-08, + -2.20915707933726481321465184207e-08, + 1.89732166352720474944407102940e-08, + -1.60058977893259856012119939554e-08, + 1.31619294542205876946742394494e-08, + -1.04166651771938038563454275883e-08, + 7.7478015858156185064152078434e-09, + -5.1347942579352613057675111787e-09, + 2.5583541594586723967261504321e-09 +}; +static cheb_series A3_lt1_cs = { + A3_lt1_data, + 39, + -1, 1, + 39 +}; + +/* chebyshev fit for f(x) = A_4(2(x+1)/5) */ +static double A4_lt1_data[30] = { + 0.00009054703770051610946958226736, + 0.00033066000498098017589672988293, + 0.00019737453734363989127226073272, + -0.00015490809725932037720034762889, + -0.00004514948935538730085479280454, + 0.00007976881782603940889444573924, + -0.00003314566154544740986264993251, + -1.88212148790135672249935711657e-06, + 0.0000114788756505519986352882940648, + -9.2263039911196207101468331210e-06, + 5.1401128250377780476084336340e-06, + -2.38418218951722002658891397905e-06, + 1.00664292214481531598338960828e-06, + -4.23224678096490060264249970540e-07, + 2.00132031535793489976535190025e-07, + -1.18689501178886741400633921047e-07, + 8.7819524319114212999768013738e-08, + -7.3964150324206644900787216386e-08, + 6.5780431507637165113885884236e-08, + -5.9651053193022652369837650411e-08, + 5.4447762662767276209052293773e-08, + -4.9802057381568863702541294988e-08, + 4.5571368194694340198117635845e-08, + -4.1682117173547642845382848197e-08, + 3.8084701352766049815367147717e-08, + -3.4740302885185237434662649907e-08, + 3.1616557064701510611273692060e-08, + -2.8685739487689556252374879267e-08, + 2.5923752117132254429002796600e-08, + -2.3309428552190587304662883477e-08 +}; +static cheb_series A4_lt1_cs = { + A4_lt1_data, + 29, + -1, 1, + 29 +}; + + +static double olver_B0(double z, double abs_zeta) +{ + if(z < 0.98) { + const double t = 1.0/sqrt(1.0-z*z); + return -5.0/(48.0*abs_zeta*abs_zeta) + t*(-3.0 + 5.0*t*t)/(24.0*sqrt(abs_zeta)); + } + else if(z < 1.02) { + const double a = 1.0-z; + const double c0 = 0.0179988721413553309252458658183; + const double c1 = 0.0111992982212877614645974276203; + const double c2 = 0.0059404069786014304317781160605; + const double c3 = 0.0028676724516390040844556450173; + const double c4 = 0.0012339189052567271708525111185; + const double c5 = 0.0004169250674535178764734660248; + const double c6 = 0.0000330173385085949806952777365; + const double c7 = -0.0001318076238578203009990106425; + const double c8 = -0.0001906870370050847239813945647; + return c0 + a*(c1 + a*(c2 + a*(c3 + a*(c4 + a*(c5 + a*(c6 + a*(c7 + a*c8))))))); + } + else { + const double t = 1.0/(z*sqrt(1.0 - 1.0/(z*z))); + return -5.0/(48.0*abs_zeta*abs_zeta) + t*(3.0 + 5.0*t*t)/(24.0*sqrt(abs_zeta)); + } +} + + +static double olver_B1(double z, double abs_zeta) +{ + if(z < 0.88) { + const double t = 1.0/sqrt(1.0-z*z); + const double t2 = t*t; + const double rz = sqrt(abs_zeta); + const double z32 = rz*rz*rz; + const double z92 = z32*z32*z32; + const double term1 = t*t*t * (30375.0 - 369603.0*t2 + 765765.0*t2*t2 - 425425.0*t2*t2*t2)/414720.0; + const double term2 = 85085.0/(663552.0*z92); + const double term3 = 385.0/110592.*t*(3.0-5.0*t2)/(abs_zeta*abs_zeta*abs_zeta); + const double term4 = 5.0/55296.0*t2*(81.0 - 462.0*t2 + 385.0*t2*t2)/z32; + return -(term1 + term2 + term3 + term4)/rz; + } + else if(z < 1.12) { + const double a = 1.0-z; + const double c0 = -0.00149282953213429172050073403334; + const double c1 = -0.00175640941909277865678308358128; + const double c2 = -0.00113346148874174912576929663517; + const double c3 = -0.00034691090981382974689396961817; + const double c4 = 0.00022752516104839243675693256916; + const double c5 = 0.00051764145724244846447294636552; + const double c6 = 0.00058906174858194233998714243010; + const double c7 = 0.00053485514521888073087240392846; + const double c8 = 0.00042891792986220150647633418796; + const double c9 = 0.00031639765900613633260381972850; + const double c10 = 0.00021908147678699592975840749194; + return c0+a*(c1+a*(c2+a*(c3+a*(c4+a*(c5+a*(c6+a*(c7+a*(c8+a*(c9+a*c10))))))))); + } + else { + const double t = 1.0/(z*sqrt(1.0 - 1.0/(z*z))); + const double t2 = t*t; + const double rz = sqrt(abs_zeta); + const double z32 = rz*rz*rz; + const double z92 = z32*z32*z32; + const double term1 = -t2*t * (30375.0 + 369603.0*t2 + 765765.0*t2*t2 + 425425.0*t2*t2*t2)/414720.0; + const double term2 = 85085.0/(663552.0*z92); + const double term3 = -385.0/110592.0*t*(3.0+5.0*t2)/(abs_zeta*abs_zeta*abs_zeta); + const double term4 = 5.0/55296.0*t2*(81.0 + 462.0*t2 + 385.0*t2*t2)/z32; + return (term1 + term2 + term3 + term4)/rz; + } +} + + +static double olver_B2(double z, double abs_zeta) +{ + if(z < 0.8) { + const double x = 5.0*z/2.0 - 1.0; + gsl_sf_result c; + cheb_eval_e(&B2_lt1_cs, x, &c); + return c.val / z; + } + else if(z <= 1.2) { + const double a = 1.0-z; + const double c0 = 0.00055221307672129279005986982501; + const double c1 = 0.00089586516310476929281129228969; + const double c2 = 0.00067015003441569770883539158863; + const double c3 = 0.00010166263361949045682945811828; + const double c4 = -0.00044086345133806887291336488582; + const double c5 = -0.00073963081508788743392883072523; + const double c6 = -0.00076745494377839561259903887331; + const double c7 = -0.00060829038106040362291568012663; + const double c8 = -0.00037128707528893496121336168683; + const double c9 = -0.00014116325105702609866850307176; + return c0+a*(c1+a*(c2+a*(c3+a*(c4+a*(c5+a*(c6+a*(c7+a*(c8+a*c9)))))))); + } + else { + const double zi = 1.0/z; + const double x = 12.0/5.0 * zi - 1.0; + gsl_sf_result c; + cheb_eval_e(&B2_gt1_cs, x, &c); + return c.val * zi*zi*zi; + } +} + + +static double olver_B3(double z, double abs_zeta) +{ + if(z < 0.8) { + const double x = 5.0*z/2.0 - 1.0; + gsl_sf_result c; + cheb_eval_e(&B3_lt1_cs, x, &c); + return c.val; + } + else if(z < 1.2) { + const double a = 1.0-z; + const double c0 = -0.00047461779655995980754441833105; + const double c1 = -0.00095572913429464297452176811898; + const double c2 = -0.00080369634512082892655558133973; + const double c3 = -0.00000727921669154784138080600339; + const double c4 = 0.00093162500331581345235746518994; + const double c5 = 0.00149848796913751497227188612403; + const double c6 = 0.00148406039675949727870390426462; + return c0 + a*(c1 + a*(c2 + a*(c3 + a*(c4 + a*(c5 + a*c6))))); + } + else { + const double x = 12.0/(5.0*z) - 1.0; + const double zi2 = 1.0/(z*z); + gsl_sf_result c; + cheb_eval_e(&B3_gt1_cs, x, &c); + return c.val * zi2*zi2*zi2; + } +} + + +static double olver_A1(double z, double abs_zeta, double * err) +{ + if(z < 0.98) { + double t = 1.0/sqrt(1.0-z*z); + double rz = sqrt(abs_zeta); + double t2 = t*t; + double term1 = t2*(81.0 - 462.0*t2 + 385.0*t2*t2)/1152.0; + double term2 = -455.0/(4608.0*abs_zeta*abs_zeta*abs_zeta); + double term3 = 7.0*t*(-3.0 + 5.0*t2)/(1152.0*rz*rz*rz); + *err = 2.0 * GSL_DBL_EPSILON * (fabs(term1) + fabs(term2) + fabs(term3)); + return term1 + term2 + term3; + } + else if(z < 1.02) { + const double a = 1.0-z; + const double c0 = -0.00444444444444444444444444444444; + const double c1 = -0.00184415584415584415584415584416; + const double c2 = 0.00056812076812076812076812076812; + const double c3 = 0.00168137865661675185484709294233; + const double c4 = 0.00186744042139000122193399504324; + const double c5 = 0.00161330105833747826430066790326; + const double c6 = 0.00123177312220625816558607537838; + const double c7 = 0.00087334711007377573881689318421; + const double c8 = 0.00059004942455353250141217015410; + const double sum = c0+a*(c1+a*(c2+a*(c3+a*(c4+a*(c5+a*(c6+a*(c7+a*c8))))))); + *err = 2.0 * GSL_DBL_EPSILON * fabs(sum); + return sum; + } + else { + const double t = 1.0/(z*sqrt(1.0 - 1.0/(z*z))); + const double rz = sqrt(abs_zeta); + const double t2 = t*t; + const double term1 = -t2*(81.0 + 462.0*t2 + 385.0*t2*t2)/1152.0; + const double term2 = 455.0/(4608.0*abs_zeta*abs_zeta*abs_zeta); + const double term3 = -7.0*t*(3.0 + 5.0*t2)/(1152.0*rz*rz*rz); + *err = 2.0 * GSL_DBL_EPSILON * (fabs(term1) + fabs(term2) + fabs(term3)); + return term1 + term2 + term3; + } +} + + +static double olver_A2(double z, double abs_zeta) +{ + if(z < 0.88) { + double t = 1.0/sqrt(1.0-z*z); + double t2 = t*t; + double t4 = t2*t2; + double t6 = t4*t2; + double t8 = t4*t4; + double rz = sqrt(abs_zeta); + double z3 = abs_zeta*abs_zeta*abs_zeta; + double z32 = rz*rz*rz; + double z92 = z3*z32; + double term1 = t4*(4465125.0 - 94121676.0*t2 + 349922430.0*t4 - 446185740.0*t6 + 185910725.0*t8)/39813120.0; + double term2 = -40415375.0/(127401984.0*z3*z3); + double term3 = -95095.0/15925248.0*t*(3.0-5.0*t2)/z92; + double term4 = -455.0/5308416.0 *t2*(81.0 - 462.0*t2 + 385.0*t4)/z3; + double term5 = -7.0/19906560.0*t*t2*(30375.0 - 369603.0*t2 + 765765.0*t4 - 425425.0*t6)/z32; + return term1 + term2 + term3 + term4 + term5; + } + else if(z < 1.12) { + double a = 1.0-z; + const double c0 = 0.000693735541354588973636592684210; + const double c1 = 0.000464483490365843307019777608010; + const double c2 = -0.000289036254605598132482570468291; + const double c3 = -0.000874764943953712638574497548110; + const double c4 = -0.001029716376139865629968584679350; + const double c5 = -0.000836857329713810600584714031650; + const double c6 = -0.000488910893527218954998270124540; + const double c7 = -0.000144236747940817220502256810151; + const double c8 = 0.000114363800986163478038576460325; + const double c9 = 0.000266806881492777536223944807117; + const double c10 = -0.011975517576151069627471048587000; + return c0+a*(c1+a*(c2+a*(c3+a*(c4+a*(c5+a*(c6+a*(c7+a*(c8+a*(c9+a*c10))))))))); + } + else { + const double t = 1.0/(z*sqrt(1.0 - 1.0/(z*z))); + const double t2 = t*t; + const double t4 = t2*t2; + const double t6 = t4*t2; + const double t8 = t4*t4; + const double rz = sqrt(abs_zeta); + const double z3 = abs_zeta*abs_zeta*abs_zeta; + const double z32 = rz*rz*rz; + const double z92 = z3*z32; + const double term1 = t4*(4465125.0 + 94121676.0*t2 + 349922430.0*t4 + 446185740.0*t6 + 185910725.0*t8)/39813120.0; + const double term2 = -40415375.0/(127401984.0*z3*z3); + const double term3 = 95095.0/15925248.0*t*(3.0+5.0*t2)/z92; + const double term4 = -455.0/5308416.0 *t2*(81.0 + 462.0*t2 + 385.0*t4)/z3; + const double term5 = 7.0/19906560.0*t*t2*(30375.0 + 369603.0*t2 + 765765.0*t4 + 425425.0*t6)/z32; + return term1 + term2 + term3 + term4 + term5; + } +} + + +static double olver_A3(double z, double abs_zeta) +{ + if(z < 0.9) { + const double x = 20.0*z/9.0 - 1.0; + gsl_sf_result c; + cheb_eval_e(&A3_lt1_cs, x, &c); + return c.val; + } + else if(z < 1.1) { + double a = 1.0-z; + const double c0 = -0.000354211971457743840771125759200; + const double c1 = -0.000312322527890318832782774881353; + const double c2 = 0.000277947465383133980329617631915; + const double c3 = 0.000919803044747966977054155192400; + const double c4 = 0.001147600388275977640983696906320; + const double c5 = 0.000869239326123625742931772044544; + const double c6 = 0.000287392257282507334785281718027; + return c0 + a*(c1 + a*(c2 + a*(c3 + a*(c4 + a*(c5 + a*c6))))); + } + else { + const double x = 11.0/(5.0*z) - 1.0; + const double zi2 = 1.0/(z*z); + gsl_sf_result c; + cheb_eval_e(&A3_gt1_cs, x, &c); + return c.val * zi2*zi2*zi2; + } +} + + +static double olver_A4(double z, double abs_zeta) +{ + if(z < 0.8) { + const double x = 5.0*z/2.0 - 1.0; + gsl_sf_result c; + cheb_eval_e(&A4_lt1_cs, x, &c); + return c.val; + } + else if(z < 1.2) { + double a = 1.0-z; + const double c0 = 0.00037819419920177291402661228437; + const double c1 = 0.00040494390552363233477213857527; + const double c2 = -0.00045764735528936113047289344569; + const double c3 = -0.00165361044229650225813161341879; + const double c4 = -0.00217527517983360049717137015539; + const double c5 = -0.00152003287866490735107772795537; + return c0 + a*(c1 + a*(c2 + a*(c3 + a*(c4 + a*c5)))); + } + else { + const double x = 12.0/(5.0*z) - 1.0; + const double zi2 = 1.0/(z*z); + gsl_sf_result c; + cheb_eval_e(&A4_gt1_cs, x, &c); + return c.val * zi2*zi2*zi2*zi2; + } +} + +inline +static double olver_Asum(double nu, double z, double abs_zeta, double * err) +{ + double nu2 = nu*nu; + double A1_err; + double A1 = olver_A1(z, abs_zeta, &A1_err); + double A2 = olver_A2(z, abs_zeta); + double A3 = olver_A3(z, abs_zeta); + double A4 = olver_A4(z, abs_zeta); + *err = A1_err/nu2 + GSL_DBL_EPSILON; + return 1.0 + A1/nu2 + A2/(nu2*nu2) + A3/(nu2*nu2*nu2) + A4/(nu2*nu2*nu2*nu2); +} + +inline +static double olver_Bsum(double nu, double z, double abs_zeta) +{ + double nu2 = nu*nu; + double B0 = olver_B0(z, abs_zeta); + double B1 = olver_B1(z, abs_zeta); + double B2 = olver_B2(z, abs_zeta); + double B3 = olver_B3(z, abs_zeta); + return B0 + B1/nu2 + B2/(nu2*nu2) + B3/(nu2*nu2*nu2*nu2); +} + + +/* uniform asymptotic, nu -> Inf, [Abramowitz+Stegun, 9.3.35] + * + * error: + * nu = 2: uniformly good to > 6D + * nu = 5: uniformly good to > 8D + * nu = 10: uniformly good to > 10D + * nu = 20: uniformly good to > 13D + * + */ +int gsl_sf_bessel_Jnu_asymp_Olver_e(double nu, double x, gsl_sf_result * result) +{ + /* CHECK_POINTER(result) */ + + if(x <= 0.0 || nu <= 0.0) { + DOMAIN_ERROR(result); + } + else { + double zeta, abs_zeta; + double arg; + double pre; + double asum, bsum, asum_err; + gsl_sf_result ai; + gsl_sf_result aip; + double z = x/nu; + double crnu = pow(nu, 1.0/3.0); + double nu3 = nu*nu*nu; + double nu11 = nu3*nu3*nu3*nu*nu; + int stat_a, stat_ap; + + if(fabs(1.0-z) < 0.02) { + const double a = 1.0-z; + const double c0 = 1.25992104989487316476721060728; + const double c1 = 0.37797631496846194943016318218; + const double c2 = 0.230385563409348235843147082474; + const double c3 = 0.165909603649648694839821892031; + const double c4 = 0.12931387086451008907; + const double c5 = 0.10568046188858133991; + const double c6 = 0.08916997952268186978; + const double c7 = 0.07700014900618802456; + pre = c0 + a*(c1 + a*(c2 + a*(c3 + a*(c4 + a*(c5 + a*(c6 + a*c7)))))); + zeta = a * pre; + pre = sqrt(2.0*sqrt(pre/(1.0+z))); + abs_zeta = fabs(zeta); + } + else if(z < 1.0) { + double rt = sqrt(1.0 - z*z); + abs_zeta = pow(1.5*(log((1.0+rt)/z) - rt), 2.0/3.0); + zeta = abs_zeta; + pre = sqrt(2.0*sqrt(abs_zeta/(rt*rt))); + } + else { + /* z > 1 */ + double rt = z * sqrt(1.0 - 1.0/(z*z)); + abs_zeta = pow(1.5*(rt - acos(1.0/z)), 2.0/3.0); + zeta = -abs_zeta; + pre = sqrt(2.0*sqrt(abs_zeta/(rt*rt))); + } + + asum = olver_Asum(nu, z, abs_zeta, &asum_err); + bsum = olver_Bsum(nu, z, abs_zeta); + + arg = crnu*crnu * zeta; + stat_a = gsl_sf_airy_Ai_e(arg, GSL_MODE_DEFAULT, &ai); + stat_ap = gsl_sf_airy_Ai_deriv_e(arg, GSL_MODE_DEFAULT, &aip); + + result->val = pre * (ai.val*asum/crnu + aip.val*bsum/(nu*crnu*crnu)); + result->err = pre * (ai.err * fabs(asum/crnu)); + result->err += pre * fabs(ai.val) * asum_err / crnu; + result->err += pre * fabs(ai.val * asum) / (crnu*nu11); + result->err += 8.0 * GSL_DBL_EPSILON * fabs(result->val); + + return GSL_ERROR_SELECT_2(stat_a, stat_ap); + } +} + + +/* uniform asymptotic, nu -> Inf, [Abramowitz+Stegun, 9.3.36] + * + * error: + * nu = 2: uniformly good to > 6D + * nu = 5: uniformly good to > 8D + * nu = 10: uniformly good to > 10D + * nu = 20: uniformly good to > 13D + */ +int gsl_sf_bessel_Ynu_asymp_Olver_e(double nu, double x, gsl_sf_result * result) +{ + /* CHECK_POINTER(result) */ + + if(x <= 0.0 || nu <= 0.0) { + DOMAIN_ERROR(result); + } + else { + double zeta, abs_zeta; + double arg; + double pre; + double asum, bsum, asum_err; + gsl_sf_result bi; + gsl_sf_result bip; + double z = x/nu; + double crnu = pow(nu, 1.0/3.0); + double nu3 = nu*nu*nu; + double nu11 = nu3*nu3*nu3*nu*nu; + int stat_b, stat_d; + + if(fabs(1.0-z) < 0.02) { + const double a = 1.0-z; + const double c0 = 1.25992104989487316476721060728; + const double c1 = 0.37797631496846194943016318218; + const double c2 = 0.230385563409348235843147082474; + const double c3 = 0.165909603649648694839821892031; + const double c4 = 0.12931387086451008907; + const double c5 = 0.10568046188858133991; + const double c6 = 0.08916997952268186978; + const double c7 = 0.07700014900618802456; + pre = c0 + a*(c1 + a*(c2 + a*(c3 + a*(c4 + a*(c5 + a*(c6 + a*c7)))))); + zeta = a * pre; + pre = sqrt(2.0*sqrt(pre/(1.0+z))); + abs_zeta = fabs(zeta); + } + else if(z < 1.0) { + double rt = sqrt(1.0 - z*z); + abs_zeta = pow(1.5*(log((1.0+rt)/z) - rt), 2.0/3.0); + zeta = abs_zeta; + pre = sqrt(2.0*sqrt(abs_zeta/(rt*rt))); + } + else { + /* z > 1 */ + double rt = z * sqrt(1.0 - 1.0/(z*z)); + double ac = acos(1.0/z); + abs_zeta = pow(1.5*(rt - ac), 2.0/3.0); + zeta = -abs_zeta; + pre = sqrt(2.0*sqrt(abs_zeta)/rt); + } + + asum = olver_Asum(nu, z, abs_zeta, &asum_err); + bsum = olver_Bsum(nu, z, abs_zeta); + + arg = crnu*crnu * zeta; + stat_b = gsl_sf_airy_Bi_e(arg, GSL_MODE_DEFAULT, &bi); + stat_d = gsl_sf_airy_Bi_deriv_e(arg, GSL_MODE_DEFAULT, &bip); + + result->val = -pre * (bi.val*asum/crnu + bip.val*bsum/(nu*crnu*crnu)); + result->err = pre * (bi.err * fabs(asum/crnu)); + result->err += pre * fabs(bi.val) * asum_err / crnu; + result->err += pre * fabs(bi.val*asum) / (crnu*nu11); + result->err += 8.0 * GSL_DBL_EPSILON * fabs(result->val); + + return GSL_ERROR_SELECT_2(stat_b, stat_d); + } +} diff --git a/gsl-2.5/specfunc/bessel_olver.h b/gsl-2.5/specfunc/bessel_olver.h new file mode 100644 index 00000000..3693fc4d --- /dev/null +++ b/gsl-2.5/specfunc/bessel_olver.h @@ -0,0 +1,33 @@ +/* specfunc/bessel_olver.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ + +#ifndef BESSEL_OLVER_H_ +#define BESSEL_OLVER_H_ + +#include + +int gsl_sf_bessel_Jnu_asymp_Olver_e(double nu, double x, gsl_sf_result * result); +int gsl_sf_bessel_Ynu_asymp_Olver_e(double nu, double x, gsl_sf_result * result); + +double gsl_sf_bessel_Olver_zofmzeta(double minus_zeta); + + +#endif /* !BESSEL_OLVER_H_ */ diff --git a/gsl-2.5/specfunc/bessel_olver.lo b/gsl-2.5/specfunc/bessel_olver.lo new file mode 100644 index 00000000..c5a023ab --- /dev/null +++ b/gsl-2.5/specfunc/bessel_olver.lo @@ -0,0 +1,12 @@ +# bessel_olver.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/bessel_olver.o' + +# Name of the non-PIC object +non_pic_object='bessel_olver.o' + diff --git a/gsl-2.5/specfunc/bessel_sequence.c b/gsl-2.5/specfunc/bessel_sequence.c new file mode 100644 index 00000000..fcd3cc66 --- /dev/null +++ b/gsl-2.5/specfunc/bessel_sequence.c @@ -0,0 +1,154 @@ +/* specfunc/bessel_sequence.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ + +#include +#include +#include +#include + + +#define DYDX_p(p,u,x) (-(p)/(x) + (((nu)*(nu))/((x)*(x))-1.0)*(u)) +#define DYDX_u(p,u,x) (p) + +static int +rk_step(double nu, double x, double dx, double * Jp, double * J) +{ + double p_0 = *Jp; + double u_0 = *J; + + double p_1 = dx * DYDX_p(p_0, u_0, x); + double u_1 = dx * DYDX_u(p_0, u_0, x); + + double p_2 = dx * DYDX_p(p_0 + 0.5*p_1, u_0 + 0.5*u_1, x + 0.5*dx); + double u_2 = dx * DYDX_u(p_0 + 0.5*p_1, u_0 + 0.5*u_1, x + 0.5*dx); + + double p_3 = dx * DYDX_p(p_0 + 0.5*p_2, u_0 + 0.5*u_2, x + 0.5*dx); + double u_3 = dx * DYDX_u(p_0 + 0.5*p_2, u_0 + 0.5*u_2, x + 0.5*dx); + + double p_4 = dx * DYDX_p(p_0 + p_3, u_0 + u_3, x + dx); + double u_4 = dx * DYDX_u(p_0 + p_3, u_0 + u_3, x + dx); + + *Jp = p_0 + p_1/6.0 + p_2/3.0 + p_3/3.0 + p_4/6.0; + *J = u_0 + u_1/6.0 + u_2/3.0 + u_3/3.0 + u_4/6.0; + + return GSL_SUCCESS; +} + + +int +gsl_sf_bessel_sequence_Jnu_e(double nu, gsl_mode_t mode, size_t size, double * v) +{ + /* CHECK_POINTER(v) */ + + if(nu < 0.0) { + GSL_ERROR ("domain error", GSL_EDOM); + } + else if(size == 0) { + GSL_ERROR ("error", GSL_EINVAL); + } + else { + const gsl_prec_t goal = GSL_MODE_PREC(mode); + const double dx_array[] = { 0.001, 0.03, 0.1 }; /* double, single, approx */ + const double dx_nominal = dx_array[goal]; + + const int cnu = (int) ceil(nu); + const double nu13 = pow(nu,1.0/3.0); + const double smalls[] = { 0.01, 0.02, 0.4, 0.7, 1.3, 2.0, 2.5, 3.2, 3.5, 4.5, 6.0 }; + const double x_small = ( nu >= 10.0 ? nu - nu13 : smalls[cnu] ); + + gsl_sf_result J0, J1; + double Jp, J; + double x; + size_t i = 0; + + /* Calculate the first point. */ + x = v[0]; + gsl_sf_bessel_Jnu_e(nu, x, &J0); + v[0] = J0.val; + ++i; + + /* Step over the idiot case where the + * first point was actually zero. + */ + if(x == 0.0) { + if(v[1] <= x) { + /* Strict ordering failure. */ + GSL_ERROR ("error", GSL_EFAILED); + } + x = v[1]; + gsl_sf_bessel_Jnu_e(nu, x, &J0); + v[1] = J0.val; + ++i; + } + + /* Calculate directly as long as the argument + * is small. This is necessary because the + * integration is not very good there. + */ + while(v[i] < x_small && i < size) { + if(v[i] <= x) { + /* Strict ordering failure. */ + GSL_ERROR ("error", GSL_EFAILED); + } + x = v[i]; + gsl_sf_bessel_Jnu_e(nu, x, &J0); + v[i] = J0.val; + ++i; + } + + /* At this point we are ready to integrate. + * The value of x is the last calculated + * point, which has the value J0; v[i] is + * the next point we need to calculate. We + * calculate nu+1 at x as well to get + * the derivative, then we go forward. + */ + gsl_sf_bessel_Jnu_e(nu+1.0, x, &J1); + J = J0.val; + Jp = -J1.val + nu/x * J0.val; + + while(i < size) { + const double dv = v[i] - x; + const int Nd = (int) ceil(dv/dx_nominal); + const double dx = dv / Nd; + double xj; + int j; + + if(v[i] <= x) { + /* Strict ordering failure. */ + GSL_ERROR ("error", GSL_EFAILED); + } + + /* Integrate over interval up to next sample point. + */ + for(j=0, xj=x; j 0. + */ +#include +#include +#include +#include +#include "bessel_temme.h" + +#include "chebyshev.h" +#include "cheb_eval.c" + +/* nu = (x+1)/4, -1val = -sum0; + Ynu->err = (2.0 + 0.5*k) * GSL_DBL_EPSILON * fabs(Ynu->val); + Ynup1->val = -sum1 * 2.0/x; + Ynup1->err = (2.0 + 0.5*k) * GSL_DBL_EPSILON * fabs(Ynup1->val); + + stat_iter = ( k >= max_iter ? GSL_EMAXITER : GSL_SUCCESS ); + return GSL_ERROR_SELECT_2(stat_iter, stat_g); +} + + +int +gsl_sf_bessel_K_scaled_temme(const double nu, const double x, + double * K_nu, double * K_nup1, double * Kp_nu) +{ + const int max_iter = 15000; + + const double half_x = 0.5 * x; + const double ln_half_x = log(half_x); + const double half_x_nu = exp(nu*ln_half_x); + const double pi_nu = M_PI * nu; + const double sigma = -nu * ln_half_x; + const double sinrat = (fabs(pi_nu) < GSL_DBL_EPSILON ? 1.0 : pi_nu/sin(pi_nu)); + const double sinhrat = (fabs(sigma) < GSL_DBL_EPSILON ? 1.0 : sinh(sigma)/sigma); + const double ex = exp(x); + + double sum0, sum1; + double fk, pk, qk, hk, ck; + int k = 0; + int stat_iter; + + double g_1pnu, g_1mnu, g1, g2; + int stat_g = gsl_sf_temme_gamma(nu, &g_1pnu, &g_1mnu, &g1, &g2); + + fk = sinrat * (cosh(sigma)*g1 - sinhrat*ln_half_x*g2); + pk = 0.5/half_x_nu * g_1pnu; + qk = 0.5*half_x_nu * g_1mnu; + hk = pk; + ck = 1.0; + sum0 = fk; + sum1 = hk; + while(k < max_iter) { + double del0; + double del1; + k++; + fk = (k*fk + pk + qk)/(k*k-nu*nu); + ck *= half_x*half_x/k; + pk /= (k - nu); + qk /= (k + nu); + hk = -k*fk + pk; + del0 = ck * fk; + del1 = ck * hk; + sum0 += del0; + sum1 += del1; + if(fabs(del0) < 0.5*fabs(sum0)*GSL_DBL_EPSILON) break; + } + + *K_nu = sum0 * ex; + *K_nup1 = sum1 * 2.0/x * ex; + *Kp_nu = - *K_nup1 + nu/x * *K_nu; + + stat_iter = ( k == max_iter ? GSL_EMAXITER : GSL_SUCCESS ); + return GSL_ERROR_SELECT_2(stat_iter, stat_g); +} diff --git a/gsl-2.5/specfunc/bessel_temme.h b/gsl-2.5/specfunc/bessel_temme.h new file mode 100644 index 00000000..e1e04f37 --- /dev/null +++ b/gsl-2.5/specfunc/bessel_temme.h @@ -0,0 +1,38 @@ +/* specfunc/bessel_temme.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ + +#ifndef BESSEL_TEMME_H_ +#define BESSEL_TEMME_H_ + +#include + + +int +gsl_sf_bessel_Y_temme(const double nu, const double x, + gsl_sf_result * Y_nu, + gsl_sf_result * Y_nup1); + +int +gsl_sf_bessel_K_scaled_temme(const double nu, const double x, + double * K_nu, double * K_nup1, double * Kp_nu); + + +#endif /* !BESSEL_TEMME_H_ */ diff --git a/gsl-2.5/specfunc/bessel_temme.lo b/gsl-2.5/specfunc/bessel_temme.lo new file mode 100644 index 00000000..e8153d3b --- /dev/null +++ b/gsl-2.5/specfunc/bessel_temme.lo @@ -0,0 +1,12 @@ +# bessel_temme.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/bessel_temme.o' + +# Name of the non-PIC object +non_pic_object='bessel_temme.o' + diff --git a/gsl-2.5/specfunc/bessel_y.c b/gsl-2.5/specfunc/bessel_y.c new file mode 100644 index 00000000..4800545b --- /dev/null +++ b/gsl-2.5/specfunc/bessel_y.c @@ -0,0 +1,292 @@ +/* specfunc/bessel_y.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ + +#include +#include +#include +#include +#include +#include +#include + +#include "error.h" + +#include "bessel.h" +#include "bessel_olver.h" + +/*-*-*-*-*-*-*-*-*-*-*-* Private Section *-*-*-*-*-*-*-*-*-*-*-*/ + +/* [Abramowitz+Stegun, 10.1.3] + * with lmax=15, precision ~ 15D for x < 3 + * + * checked OK [GJ] Wed May 13 15:41:25 MDT 1998 + */ +static int bessel_yl_small_x(int l, const double x, gsl_sf_result * result) +{ + gsl_sf_result num_fact; + double den = gsl_sf_pow_int(x, l+1); + int stat_df = gsl_sf_doublefact_e(2*l-1, &num_fact); + + if(stat_df != GSL_SUCCESS || den == 0.0) { + OVERFLOW_ERROR(result); + } + else { + const int lmax = 200; + double t = -0.5*x*x; + double sum = 1.0; + double t_coeff = 1.0; + double t_power = 1.0; + double delta; + int i; + for(i=1; i<=lmax; i++) { + t_coeff /= i*(2*(i-l) - 1); + t_power *= t; + delta = t_power*t_coeff; + sum += delta; + if(fabs(delta/sum) < 0.5*GSL_DBL_EPSILON) break; + } + result->val = -num_fact.val/den * sum; + result->err = GSL_DBL_EPSILON * fabs(result->val); + + return GSL_SUCCESS; + } +} + + +/*-*-*-*-*-*-*-*-*-*-*-* Functions with Error Codes *-*-*-*-*-*-*-*-*-*-*-*/ + + +int gsl_sf_bessel_y0_e(const double x, gsl_sf_result * result) +{ + /* CHECK_POINTER(result) */ + + if(x <= 0.0) { + DOMAIN_ERROR(result); + } + else if(1.0/GSL_DBL_MAX > 0.0 && x < 1.0/GSL_DBL_MAX) { + OVERFLOW_ERROR(result); + } + else { + gsl_sf_result cos_result; + const int stat = gsl_sf_cos_e(x, &cos_result); + result->val = -cos_result.val/x; + result->err = fabs(cos_result.err/x); + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return stat; + } +} + + +int gsl_sf_bessel_y1_e(const double x, gsl_sf_result * result) +{ + /* CHECK_POINTER(result) */ + + if(x <= 0.0) { + DOMAIN_ERROR(result); + } + else if(x < 1.0/GSL_SQRT_DBL_MAX) { + OVERFLOW_ERROR(result); + } + else if(x < 0.25) { + const double y = x*x; + const double c1 = 1.0/2.0; + const double c2 = -1.0/8.0; + const double c3 = 1.0/144.0; + const double c4 = -1.0/5760.0; + const double c5 = 1.0/403200.0; + const double c6 = -1.0/43545600.0; + const double sum = 1.0 + y*(c1 + y*(c2 + y*(c3 + y*(c4 + y*(c5 + y*c6))))); + result->val = -sum/y; + result->err = GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else { + gsl_sf_result cos_result; + gsl_sf_result sin_result; + const int stat_cos = gsl_sf_cos_e(x, &cos_result); + const int stat_sin = gsl_sf_sin_e(x, &sin_result); + const double cx = cos_result.val; + const double sx = sin_result.val; + result->val = -(cx/x + sx)/x; + result->err = (fabs(cos_result.err/x) + sin_result.err)/fabs(x); + result->err += GSL_DBL_EPSILON * (fabs(sx/x) + fabs(cx/(x*x))); + return GSL_ERROR_SELECT_2(stat_cos, stat_sin); + } +} + + +int gsl_sf_bessel_y2_e(const double x, gsl_sf_result * result) +{ + /* CHECK_POINTER(result) */ + + if(x <= 0.0) { + DOMAIN_ERROR(result); + } + else if(x < 1.0/GSL_ROOT3_DBL_MAX) { + OVERFLOW_ERROR(result); + } + else if(x < 0.5) { + const double y = x*x; + const double c1 = 1.0/6.0; + const double c2 = 1.0/24.0; + const double c3 = -1.0/144.0; + const double c4 = 1.0/3456.0; + const double c5 = -1.0/172800.0; + const double c6 = 1.0/14515200.0; + const double c7 = -1.0/1828915200.0; + const double sum = 1.0 + y*(c1 + y*(c2 + y*(c3 + y*(c4 + y*(c5 + y*(c6 + y*c7)))))); + result->val = -3.0/(x*x*x) * sum; + result->err = GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else { + gsl_sf_result cos_result; + gsl_sf_result sin_result; + const int stat_cos = gsl_sf_cos_e(x, &cos_result); + const int stat_sin = gsl_sf_sin_e(x, &sin_result); + const double sx = sin_result.val; + const double cx = cos_result.val; + const double a = 3.0/(x*x); + result->val = (1.0 - a)/x * cx - a * sx; + result->err = cos_result.err * fabs((1.0 - a)/x) + sin_result.err * fabs(a); + result->err += GSL_DBL_EPSILON * (fabs(cx/x) + fabs(sx/(x*x))); + return GSL_ERROR_SELECT_2(stat_cos, stat_sin); + } +} + + +int gsl_sf_bessel_yl_e(int l, const double x, gsl_sf_result * result) +{ + /* CHECK_POINTER(result) */ + + if(l < 0 || x <= 0.0) { + DOMAIN_ERROR(result); + } + else if(l == 0) { + return gsl_sf_bessel_y0_e(x, result); + } + else if(l == 1) { + return gsl_sf_bessel_y1_e(x, result); + } + else if(l == 2) { + return gsl_sf_bessel_y2_e(x, result); + } + else if(x < 3.0) { + return bessel_yl_small_x(l, x, result); + } + else if(GSL_ROOT3_DBL_EPSILON * x > (l*l + l + 1.0)) { + int status = gsl_sf_bessel_Ynu_asympx_e(l + 0.5, x, result); + double pre = sqrt((0.5*M_PI)/x); + result->val *= pre; + result->err *= pre; + return status; + } + else if(l > 40) { + int status = gsl_sf_bessel_Ynu_asymp_Olver_e(l + 0.5, x, result); + double pre = sqrt((0.5*M_PI)/x); + result->val *= pre; + result->err *= pre; + return status; + } + else { + /* recurse upward */ + gsl_sf_result r_by; + gsl_sf_result r_bym; + int stat_1 = gsl_sf_bessel_y1_e(x, &r_by); + int stat_0 = gsl_sf_bessel_y0_e(x, &r_bym); + double bym = r_bym.val; + double by = r_by.val; + double byp; + int j; + for(j=1; jval = by; + result->err = fabs(result->val) * (GSL_DBL_EPSILON + fabs(r_by.err/r_by.val) + fabs(r_bym.err/r_bym.val)); + + return GSL_ERROR_SELECT_2(stat_1, stat_0); + } +} + + +int gsl_sf_bessel_yl_array(const int lmax, const double x, double * result_array) +{ + /* CHECK_POINTER(result_array) */ + + if(lmax < 0 || x <= 0.0) { + GSL_ERROR ("error", GSL_EDOM); + } else if (lmax == 0) { + gsl_sf_result result; + int stat = gsl_sf_bessel_y0_e(x, &result); + result_array[0] = result.val; + return stat; + } else { + gsl_sf_result r_yell; + gsl_sf_result r_yellm1; + int stat_1 = gsl_sf_bessel_y1_e(x, &r_yell); + int stat_0 = gsl_sf_bessel_y0_e(x, &r_yellm1); + double yellp1; + double yell = r_yell.val; + double yellm1 = r_yellm1.val; + int ell; + + result_array[0] = yellm1; + result_array[1] = yell; + + for(ell = 1; ell < lmax; ell++) { + yellp1 = (2*ell+1)/x * yell - yellm1; + result_array[ell+1] = yellp1; + yellm1 = yell; + yell = yellp1; + } + + return GSL_ERROR_SELECT_2(stat_0, stat_1); + } +} + + +/*-*-*-*-*-*-*-*-*-* Functions w/ Natural Prototypes *-*-*-*-*-*-*-*-*-*-*/ + +#include "eval.h" + +double gsl_sf_bessel_y0(const double x) +{ + EVAL_RESULT(gsl_sf_bessel_y0_e(x, &result)); +} + +double gsl_sf_bessel_y1(const double x) +{ + EVAL_RESULT(gsl_sf_bessel_y1_e(x, &result)); +} + +double gsl_sf_bessel_y2(const double x) +{ + EVAL_RESULT(gsl_sf_bessel_y2_e(x, &result)); +} + +double gsl_sf_bessel_yl(const int l, const double x) +{ + EVAL_RESULT(gsl_sf_bessel_yl_e(l, x, &result)); +} + + diff --git a/gsl-2.5/specfunc/bessel_y.lo b/gsl-2.5/specfunc/bessel_y.lo new file mode 100644 index 00000000..3b92e53c --- /dev/null +++ b/gsl-2.5/specfunc/bessel_y.lo @@ -0,0 +1,12 @@ +# bessel_y.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/bessel_y.o' + +# Name of the non-PIC object +non_pic_object='bessel_y.o' + diff --git a/gsl-2.5/specfunc/bessel_zero.c b/gsl-2.5/specfunc/bessel_zero.c new file mode 100644 index 00000000..14d557a9 --- /dev/null +++ b/gsl-2.5/specfunc/bessel_zero.c @@ -0,0 +1,1219 @@ +/* specfunc/bessel_zero.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ + +#include +#include +#include +#include +#include +#include + +#include "error.h" + +#include "bessel_olver.h" + +/* For Chebyshev expansions of the roots as functions of nu, + * see [G. Nemeth, Mathematical Approximation of Special Functions]. + * This gives the fits for all nu and s <= 10. + * I made the fits for other values of s myself [GJ]. + */ + +/* Chebyshev expansion: j_{nu,1} = c_k T_k*(nu/2), nu <= 2 */ +static const double coef_jnu1_a[] = { + 3.801775243633476, + 1.360704737511120, + -0.030707710261106, + 0.004526823746202, + -0.000808682832134, + 0.000159218792489, + -0.000033225189761, + 0.000007205599763, + -0.000001606110397, + 0.000000365439424, + -0.000000084498039, + 0.000000019793815, + -0.000000004687054, + 0.000000001120052, + -0.000000000269767, + 0.000000000065420, + -0.000000000015961, + 0.000000000003914, + -0.000000000000965, + 0.000000000000239, + -0.000000000000059, + 0.000000000000015, + -0.000000000000004, + 0.000000000000001 +}; + + +/* Chebyshev expansion: j_{nu,1} = nu c_k T_k*((2/nu)^(2/3)), nu >= 2 */ +static const double coef_jnu1_b[] = { + 1.735063412537096, + 0.784478100951978, + 0.048881473180370, + -0.000578279783021, + -0.000038984957864, + 0.000005758297879, + -0.000000327583229, + -0.000000003853878, + 0.000000002284653, + -0.000000000153079, + -0.000000000000895, + 0.000000000000283, + 0.000000000000043, + 0.000000000000010, + -0.000000000000003 +}; + + +/* Chebyshev expansion: j_{nu,2} = c_k T_k*(nu/2), nu <= 2 */ +static const double coef_jnu2_a[] = { + 6.992370244046161, + 1.446379282056534, + -0.023458616207293, + 0.002172149448700, + -0.000246262775620, + 0.000030990180959, + -0.000004154183047, + 0.000000580766328, + -0.000000083648175, + 0.000000012317355, + -0.000000001844887, + 0.000000000280076, + -0.000000000042986, + 0.000000000006658, + -0.000000000001039, + 0.000000000000163, + -0.000000000000026, + 0.000000000000004, + -0.000000000000001 +}; + + +/* Chebyshev expansion: j_{nu,2} = nu c_k T_k*((2/nu)^(2/3)), nu >= 2 */ +static const double coef_jnu2_b[] = { + 2.465611864263400, + 1.607952988471069, + 0.138758034431497, + -0.003687791182054, + -0.000051276007868, + 0.000045113570749, + -0.000007579172152, + 0.000000736469208, + -0.000000011118527, + -0.000000011919884, + 0.000000002696788, + -0.000000000314488, + 0.000000000008124, + 0.000000000005211, + -0.000000000001292, + 0.000000000000158, + -0.000000000000004, + -0.000000000000003, + 0.000000000000001 +}; + + +/* Chebyshev expansion: j_{nu,3} = c_k T_k*(nu/3), nu <= 3 */ +static const double coef_jnu3_a[] = { + 10.869647065239236, + 2.177524286141710, + -0.034822817125293, + 0.003167249102413, + -0.000353960349344, + 0.000044039086085, + -0.000005851380981, + 0.000000812575483, + -0.000000116463617, + 0.000000017091246, + -0.000000002554376, + 0.000000000387335, + -0.000000000059428, + 0.000000000009207, + -0.000000000001438, + 0.000000000000226, + -0.000000000000036, + 0.000000000000006, + -0.000000000000001 +}; + + +/* Chebyshev expansion: j_{nu,3} = nu c_k T_k*((3/nu)^(2/3)), nu >= 3 */ +static const double coef_jnu3_b[] = { + 2.522816775173244, + 1.673199424973720, + 0.146431617506314, + -0.004049001763912, + -0.000039517767244, + 0.000048781729288, + -0.000008729705695, + 0.000000928737310, + -0.000000028388244, + -0.000000012927432, + 0.000000003441008, + -0.000000000471695, + 0.000000000025590, + 0.000000000005502, + -0.000000000001881, + 0.000000000000295, + -0.000000000000020, + -0.000000000000003, + 0.000000000000001 +}; + + +/* Chebyshev expansion: j_{nu,4} = c_k T_k*(nu/4), nu <= 4 */ +static const double coef_jnu4_a[] = { + 14.750310252773009, + 2.908010932941708, + -0.046093293420315, + 0.004147172321412, + -0.000459092310473, + 0.000056646951906, + -0.000007472351546, + 0.000001031210065, + -0.000000147008137, + 0.000000021475218, + -0.000000003197208, + 0.000000000483249, + -0.000000000073946, + 0.000000000011431, + -0.000000000001782, + 0.000000000000280, + -0.000000000000044, + 0.000000000000007, + -0.000000000000001 +}; + + +/* Chebyshev expansion: j_{nu,4} = nu c_k T_k*((4/nu)^(2/3)), nu >= 4 */ +static const double coef_jnu4_b[] = { + 2.551681323117914, + 1.706177978336572, + 0.150357658406131, + -0.004234001378590, + -0.000033854229898, + 0.000050763551485, + -0.000009337464057, + 0.000001029717834, + -0.000000037474196, + -0.000000013450153, + 0.000000003836180, + -0.000000000557404, + 0.000000000035748, + 0.000000000005487, + -0.000000000002187, + 0.000000000000374, + -0.000000000000031, + -0.000000000000003, + 0.000000000000001 +}; + + + +/* Chebyshev expansion: j_{nu,5} = c_k T_k*(nu/5), nu <= 5 */ +static const double coef_jnu5_a[] = { + 18.632261081028211, + 3.638249012596966, + -0.057329705998828, + 0.005121709126820, + -0.000563325259487, + 0.000069100826174, + -0.000009066603030, + 0.000001245181383, + -0.000000176737282, + 0.000000025716695, + -0.000000003815184, + 0.000000000574839, + -0.000000000087715, + 0.000000000013526, + -0.000000000002104, + 0.000000000000330, + -0.000000000000052, + 0.000000000000008, + -0.000000000000001 +}; + + +/* Chebyshev expansion: j_{nu,5} = nu c_k T_k*((5/nu)^(2/3)), nu >= 5 */ +/* FIXME: There is something wrong with this fit, in about the + * 9th or 10th decimal place. + */ +static const double coef_jnu5_b[] = { + 2.569079487591442, + 1.726073360882134, + 0.152740776809531, + -0.004346449660148, + -0.000030512461856, + 0.000052000821080, + -0.000009713343981, + 0.000001091997863, + -0.000000043061707, + -0.000000013779413, + 0.000000004082870, + -0.000000000611259, + 0.000000000042242, + 0.000000000005448, + -0.000000000002377, + 0.000000000000424, + -0.000000000000038, + -0.000000000000002, + 0.000000000000002 +}; + + +/* Chebyshev expansion: j_{nu,6} = c_k T_k*(nu/6), nu <= 6 */ +static const double coef_jnu6_a[] = { + 22.514836143374042, + 4.368367257557198, + -0.068550155285562, + 0.006093776505822, + -0.000667152784957, + 0.000081486022398, + -0.000010649011647, + 0.000001457089679, + -0.000000206105082, + 0.000000029894724, + -0.000000004422012, + 0.000000000664471, + -0.000000000101140, + 0.000000000015561, + -0.000000000002416, + 0.000000000000378, + -0.000000000000060, + 0.000000000000009, + -0.000000000000002 +}; + + +/* Chebyshev expansion: j_{nu,6} = nu c_k T_k*((6/nu)^(2/3)), nu >= 6 */ +static const double coef_jnu6_b[] = { + 2.580710285494837, + 1.739380728566154, + 0.154340696401691, + -0.004422028860168, + -0.000028305272624, + 0.000052845975269, + -0.000009968794373, + 0.000001134252926, + -0.000000046841241, + -0.000000014007555, + 0.000000004251816, + -0.000000000648213, + 0.000000000046728, + 0.000000000005414, + -0.000000000002508, + 0.000000000000459, + -0.000000000000043, + -0.000000000000002, + 0.000000000000002 +}; + + +/* Chebyshev expansion: j_{nu,7} = c_k T_k*(nu/7), nu <= 7 */ +static const double coef_jnu7_a[] = { + 26.397760539730869, + 5.098418721711790, + -0.079761896398948, + 0.007064521280487, + -0.000770766522482, + 0.000093835449636, + -0.000012225308542, + 0.000001667939800, + -0.000000235288157, + 0.000000034040347, + -0.000000005023142, + 0.000000000753101, + -0.000000000114389, + 0.000000000017564, + -0.000000000002722, + 0.000000000000425, + -0.000000000000067, + 0.000000000000011, + -0.000000000000002 +}; + + +/* Chebyshev expansion: j_{nu,7} = nu c_k T_k*((7/nu)^(2/3)), nu >= 7 */ +static const double coef_jnu7_b[] = { + 2.589033335856773, + 1.748907007612678, + 0.155488900387653, + -0.004476317805688, + -0.000026737952924, + 0.000053459680946, + -0.000010153699240, + 0.000001164804272, + -0.000000049566917, + -0.000000014175403, + 0.000000004374840, + -0.000000000675135, + 0.000000000050004, + 0.000000000005387, + -0.000000000002603, + 0.000000000000485, + -0.000000000000047, + -0.000000000000002, + 0.000000000000002 +}; + + +/* Chebyshev expansion: j_{nu,8} = c_k T_k*(nu/8), nu <= 8 */ +static const double coef_jnu8_a[] = { + 30.280900001606662, + 5.828429205461221, + -0.090968381181069, + 0.008034479731033, + -0.000874254899080, + 0.000106164151611, + -0.000013798098749, + 0.000001878187386, + -0.000000264366627, + 0.000000038167685, + -0.000000005621060, + 0.000000000841165, + -0.000000000127538, + 0.000000000019550, + -0.000000000003025, + 0.000000000000472, + -0.000000000000074, + 0.000000000000012, + -0.000000000000002 +}; + + +/* Chebyshev expansion: j_{nu,8} = nu c_k T_k*((8/nu)^(2/3)), nu >= 8 */ +static const double coef_jnu8_b[] = { + 2.595283877150078, + 1.756063044986928, + 0.156352972371030, + -0.004517201896761, + -0.000025567187878, + 0.000053925472558, + -0.000010293734486, + 0.000001187923085, + -0.000000051625122, + -0.000000014304212, + 0.000000004468450, + -0.000000000695620, + 0.000000000052500, + 0.000000000005367, + -0.000000000002676, + 0.000000000000505, + -0.000000000000050, + -0.000000000000002, + 0.000000000000002 +}; + + +/* Chebyshev expansion: j_{nu,9} = c_k T_k*(nu/9), nu <= 9 */ +static const double coef_jnu9_a[] = { + 34.164181213238386, + 6.558412747925228, + -0.102171455365016, + 0.009003934361201, + -0.000977663914535, + 0.000118479876579, + -0.000015368714220, + 0.000002088064285, + -0.000000293381154, + 0.000000042283900, + -0.000000006217033, + 0.000000000928887, + -0.000000000140627, + 0.000000000021526, + -0.000000000003326, + 0.000000000000518, + -0.000000000000081, + 0.000000000000013, + -0.000000000000002 +}; + + +/* Chebyshev expansion: j_{nu,9} = nu c_k T_k*((9/nu)^(2/3)), nu >= 9 */ +static const double coef_jnu9_b[] = { + 2.600150240905079, + 1.761635491694032, + 0.157026743724010, + -0.004549100368716, + -0.000024659248617, + 0.000054291035068, + -0.000010403464334, + 0.000001206027524, + -0.000000053234089, + -0.000000014406241, + 0.000000004542078, + -0.000000000711728, + 0.000000000054464, + 0.000000000005350, + -0.000000000002733, + 0.000000000000521, + -0.000000000000052, + -0.000000000000002, + 0.000000000000002 +}; + + +/* Chebyshev expansion: j_{nu,10} = c_k T_k*(nu/10), nu <= 10 */ +static const double coef_jnu10_a[] = { + 38.047560766184647, + 7.288377637926008, + -0.113372193277897, + 0.009973047509098, + -0.001081019701335, + 0.000130786983847, + -0.000016937898538, + 0.000002297699179, + -0.000000322354218, + 0.000000046392941, + -0.000000006811759, + 0.000000001016395, + -0.000000000153677, + 0.000000000023486, + -0.000000000003616, + 0.000000000000561, + -0.000000000000095, + 0.000000000000027, + -0.000000000000013, + 0.000000000000005 +}; + + +/* Chebyshev expansion: j_{nu,10} = nu c_k T_k*((10/nu)^(2/3)), nu >= 10 */ +static const double coef_jnu10_b[] = { + 2.604046346867949, + 1.766097596481182, + 0.157566834446511, + -0.004574682244089, + -0.000023934500688, + 0.000054585558231, + -0.000010491765415, + 0.000001220589364, + -0.000000054526331, + -0.000000014489078, + 0.000000004601510, + -0.000000000724727, + 0.000000000056049, + 0.000000000005337, + -0.000000000002779, + 0.000000000000533, + -0.000000000000054, + -0.000000000000002, + 0.000000000000002 +}; + + +/* Chebyshev expansion: j_{nu,11} = c_k T_k*(nu/22), nu <= 22 */ +static const double coef_jnu11_a[] = { + 49.5054081076848637, + 15.33692279367165101, + -0.33677234163517130, + 0.04623235772920729, + -0.00781084960665093, + 0.00147217395434708, + -0.00029695043846867, + 0.00006273356860235, + -0.00001370575125628, + 3.07171282012e-6, + -7.0235041249e-7, + 1.6320559339e-7, + -3.843117306e-8, + 9.15083800e-9, + -2.19957642e-9, + 5.3301703e-10, + -1.3007541e-10, + 3.193827e-11, + -7.88605e-12, + 1.95918e-12, + -4.9020e-13, + 1.2207e-13, + -2.820e-14, + 5.25e-15, + -1.88e-15, + 2.80e-15, + -2.45e-15 +}; + + +/* Chebyshev expansion: j_{nu,12} = c_k T_k*(nu/24), nu <= 24 */ +static const double coef_jnu12_a[] = { + 54.0787833216641519, + 16.7336367772863598, + -0.36718411124537953, + 0.05035523375053820, + -0.00849884978867533, + 0.00160027692813434, + -0.00032248114889921, + 0.00006806354127199, + -0.00001485665901339, + 3.32668783672e-6, + -7.5998952729e-7, + 1.7644939709e-7, + -4.151538210e-8, + 9.87722772e-9, + -2.37230133e-9, + 5.7442875e-10, + -1.4007767e-10, + 3.437166e-11, + -8.48215e-12, + 2.10554e-12, + -5.2623e-13, + 1.3189e-13, + -3.175e-14, + 5.73e-15, + 5.6e-16, + -8.7e-16, + -6.5e-16 +}; + + +/* Chebyshev expansion: j_{nu,13} = c_k T_k*(nu/26), nu <= 26 */ +static const double coef_jnu13_a[] = { + 58.6521941921708890, + 18.1303398137970284, + -0.39759381380126650, + 0.05447765240465494, + -0.00918674227679980, + 0.00172835361420579, + -0.00034800528297612, + 0.00007339183835188, + -0.00001600713368099, + 3.58154960392e-6, + -8.1759873497e-7, + 1.8968523220e-7, + -4.459745253e-8, + 1.060304419e-8, + -2.54487624e-9, + 6.1580214e-10, + -1.5006751e-10, + 3.679707e-11, + -9.07159e-12, + 2.24713e-12, + -5.5943e-13, + 1.4069e-13, + -3.679e-14, + 1.119e-14, + -4.99e-15, + 3.43e-15, + -2.85e-15, + 2.3e-15, + -1.7e-15, + 8.7e-16 +}; + + +/* Chebyshev expansion: j_{nu,14} = c_k T_k*(nu/28), nu <= 28 */ +static const double coef_jnu14_a[] = { + 63.2256329577315566, + 19.5270342832914901, + -0.42800190567884337, + 0.05859971627729398, + -0.00987455163523582, + 0.00185641011402081, + -0.00037352439419968, + 0.00007871886257265, + -0.00001715728110045, + 3.83632624437e-6, + -8.7518558668e-7, + 2.0291515353e-7, + -4.767795233e-8, + 1.132844415e-8, + -2.71734219e-9, + 6.5714886e-10, + -1.6005342e-10, + 3.922557e-11, + -9.66637e-12, + 2.39379e-12, + -5.9541e-13, + 1.4868e-13, + -3.726e-14, + 9.37e-15, + -2.36e-15, + 6.0e-16 +}; + + +/* Chebyshev expansion: j_{nu,15} = c_k T_k*(nu/30), nu <= 30 */ +static const double coef_jnu15_a[] = { + 67.7990939565631635, + 20.9237219226859859, + -0.45840871823085836, + 0.06272149946755639, + -0.01056229551143042, + 0.00198445078693100, + -0.00039903958650729, + 0.00008404489865469, + -0.00001830717574922, + 4.09103745566e-6, + -9.3275533309e-7, + 2.1614056403e-7, + -5.075725222e-8, + 1.205352081e-8, + -2.88971837e-9, + 6.9846848e-10, + -1.7002946e-10, + 4.164941e-11, + -1.025859e-11, + 2.53921e-12, + -6.3128e-13, + 1.5757e-13, + -3.947e-14, + 9.92e-15, + -2.50e-15, + 6.3e-16 +}; + + +/* Chebyshev expansion: j_{nu,16} = c_k T_k*(nu/32), nu <= 32 */ +static const double coef_jnu16_a[] = { + 72.3725729616724770, + 22.32040402918608585, + -0.48881449782358690, + 0.06684305681828766, + -0.01124998690363398, + 0.00211247882775445, + -0.00042455166484632, + 0.00008937015316346, + -0.00001945687139551, + 4.34569739281e-6, + -9.9031173548e-7, + 2.2936247195e-7, + -5.383562595e-8, + 1.277835103e-8, + -3.06202860e-9, + 7.3977037e-10, + -1.8000071e-10, + 4.407196e-11, + -1.085046e-11, + 2.68453e-12, + -6.6712e-13, + 1.6644e-13, + -4.168e-14, + 1.047e-14, + -2.64e-15, + 6.7e-16 +}; + + +/* Chebyshev expansion: j_{nu,17} = c_k T_k*(nu/34), nu <= 34 */ +static const double coef_jnu17_a[] = { + 76.9460667535209549, + 23.71708159112252670, + -0.51921943142405352, + 0.07096442978067622, + -0.01193763559341369, + 0.00224049662974902, + -0.00045006122941781, + 0.00009469477941684, + -0.00002060640777107, + 4.60031647195e-6, + -1.04785755046e-6, + 2.4258161247e-7, + -5.691327087e-8, + 1.350298805e-8, + -3.23428733e-9, + 7.8105847e-10, + -1.8996825e-10, + 4.649350e-11, + -1.144205e-11, + 2.82979e-12, + -7.0294e-13, + 1.7531e-13, + -4.388e-14, + 1.102e-14, + -2.78e-15, + 7.0e-16 +}; + + +/* Chebyshev expansion: j_{nu,18} = c_k T_k*(nu/36), nu <= 36 */ +static const double coef_jnu18_a[] = { + 81.5195728368096659, + 25.11375537470259305, + -0.54962366347317668, + 0.07508565026117689, + -0.01262524908033818, + 0.00236850602019778, + -0.00047556873651929, + 0.00010001889347161, + -0.00002175581482429, + 4.85490251239e-6, + -1.10539483940e-6, + 2.5579853343e-7, + -5.999033352e-8, + 1.422747129e-8, + -3.40650521e-9, + 8.2233565e-10, + -1.9993286e-10, + 4.891426e-11, + -1.203343e-11, + 2.97498e-12, + -7.3875e-13, + 1.8418e-13, + -4.608e-14, + 1.157e-14, + -2.91e-15, + 7.4e-16 +}; + + +/* Chebyshev expansion: j_{nu,19} = c_k T_k*(nu/38), nu <= 38 */ +static const double coef_jnu19_a[] = { + 86.0930892477047512, + 26.51042598308271729, + -0.58002730731948358, + 0.07920674321589394, + -0.01331283320930301, + 0.00249650841778073, + -0.00050107453900793, + 0.00010534258471335, + -0.00002290511552874, + 5.10946148897e-6, + -1.16292517157e-6, + 2.6901365037e-7, + -6.306692473e-8, + 1.495183048e-8, + -3.57869025e-9, + 8.6360410e-10, + -2.0989514e-10, + 5.133439e-11, + -1.262465e-11, + 3.12013e-12, + -7.7455e-13, + 1.9304e-13, + -4.829e-14, + 1.212e-14, + -3.05e-15, + 7.7e-16 +}; + + +/* Chebyshev expansion: j_{nu,20} = c_k T_k*(nu/40), nu <= 40 */ +static const double coef_jnu20_a[] = { + 90.6666144195163770, + 27.9070938975436823, + -0.61043045315390591, + 0.08332772844325554, + -0.01400039260208282, + 0.00262450494035660, + -0.00052657891389470, + 0.00011066592304919, + -0.00002405432778364, + 5.36399803946e-6, + -1.22044976064e-6, + 2.8222728362e-7, + -6.614312964e-8, + 1.567608839e-8, + -3.75084856e-9, + 9.0486546e-10, + -2.1985553e-10, + 5.375401e-11, + -1.321572e-11, + 3.26524e-12, + -8.1033e-13, + 2.0190e-13, + -5.049e-14, + 1.267e-14, + -3.19e-15, + 8.0e-16, + -2.0e-16 +}; + + +static const double * coef_jnu_a[] = { + 0, + coef_jnu1_a, + coef_jnu2_a, + coef_jnu3_a, + coef_jnu4_a, + coef_jnu5_a, + coef_jnu6_a, + coef_jnu7_a, + coef_jnu8_a, + coef_jnu9_a, + coef_jnu10_a, + coef_jnu11_a, + coef_jnu12_a, + coef_jnu13_a, + coef_jnu14_a, + coef_jnu15_a, + coef_jnu16_a, + coef_jnu17_a, + coef_jnu18_a, + coef_jnu19_a, + coef_jnu20_a +}; + +static const size_t size_jnu_a[] = { + 0, + sizeof(coef_jnu1_a)/sizeof(double), + sizeof(coef_jnu2_a)/sizeof(double), + sizeof(coef_jnu3_a)/sizeof(double), + sizeof(coef_jnu4_a)/sizeof(double), + sizeof(coef_jnu5_a)/sizeof(double), + sizeof(coef_jnu6_a)/sizeof(double), + sizeof(coef_jnu7_a)/sizeof(double), + sizeof(coef_jnu8_a)/sizeof(double), + sizeof(coef_jnu9_a)/sizeof(double), + sizeof(coef_jnu10_a)/sizeof(double), + sizeof(coef_jnu11_a)/sizeof(double), + sizeof(coef_jnu12_a)/sizeof(double), + sizeof(coef_jnu13_a)/sizeof(double), + sizeof(coef_jnu14_a)/sizeof(double), + sizeof(coef_jnu15_a)/sizeof(double), + sizeof(coef_jnu16_a)/sizeof(double), + sizeof(coef_jnu17_a)/sizeof(double), + sizeof(coef_jnu18_a)/sizeof(double), + sizeof(coef_jnu19_a)/sizeof(double), + sizeof(coef_jnu20_a)/sizeof(double) +}; + + +static const double * coef_jnu_b[] = { + 0, + coef_jnu1_b, + coef_jnu2_b, + coef_jnu3_b, + coef_jnu4_b, + coef_jnu5_b, + coef_jnu6_b, + coef_jnu7_b, + coef_jnu8_b, + coef_jnu9_b, + coef_jnu10_b +}; + +static const size_t size_jnu_b[] = { + 0, + sizeof(coef_jnu1_b)/sizeof(double), + sizeof(coef_jnu2_b)/sizeof(double), + sizeof(coef_jnu3_b)/sizeof(double), + sizeof(coef_jnu4_b)/sizeof(double), + sizeof(coef_jnu5_b)/sizeof(double), + sizeof(coef_jnu6_b)/sizeof(double), + sizeof(coef_jnu7_b)/sizeof(double), + sizeof(coef_jnu8_b)/sizeof(double), + sizeof(coef_jnu9_b)/sizeof(double), + sizeof(coef_jnu10_b)/sizeof(double) +}; + + + +/* Evaluate Clenshaw recurrence for + * a T* Chebyshev series. + * sizeof(c) = N+1 + */ +static double +clenshaw(const double * c, int N, double u) +{ + double B_np1 = 0.0; + double B_n = c[N]; + double B_nm1; + int n; + for(n=N; n>0; n--) { + B_nm1 = 2.0*(2.0*u-1.0) * B_n - B_np1 + c[n-1]; + B_np1 = B_n; + B_n = B_nm1; + } + return B_n - (2.0*u-1.0)*B_np1; +} + + + +/* correction terms to leading McMahon expansion + * [Abramowitz+Stegun 9.5.12] + * [Olver, Royal Society Math. Tables, v. 7] + * We factor out a beta, so that this is a multiplicative + * correction: + * j_{nu,s} = beta(s,nu) * mcmahon_correction(nu, beta(s,nu)) + * macmahon_correction --> 1 as s --> Inf + */ +static double +mcmahon_correction(const double mu, const double beta) +{ + const double eb = 8.0*beta; + const double ebsq = eb*eb; + + if(mu < GSL_DBL_EPSILON) { + /* Prevent division by zero below. */ + const double term1 = 1.0/ebsq; + const double term2 = -4.0*31.0/(3*ebsq*ebsq); + const double term3 = 32.0*3779.0/(15.0*ebsq*ebsq*ebsq); + const double term4 = -64.0*6277237.0/(105.0*ebsq*ebsq*ebsq*ebsq); + const double term5 = 512.0*2092163573.0/(315.0*ebsq*ebsq*ebsq*ebsq*ebsq); + return 1.0 + 8.0*(term1 + term2 + term3 + term4 + term5); + } + else { + /* Here we do things in terms of 1/mu, which + * is purely to prevent overflow in the very + * unlikely case that mu is really big. + */ + const double mi = 1.0/mu; + const double r = mu/ebsq; + const double n2 = 4.0/3.0 * (7.0 - 31.0*mi); + const double n3 = 32.0/15.0 * (83.0 + (-982.0 + 3779.0*mi)*mi); + const double n4 = 64.0/105.0 * (6949.0 + (-153855.0 + (1585743.0 - 6277237.0*mi)*mi)*mi); + const double n5 = 512.0/315.0 * (70197.0 + (-2479316.0 + (48010494.0 + (-512062548.0 + 2092163573.0*mi)*mi)*mi)*mi); + const double n6 = 2048.0/3465.0 * (5592657.0 + (-287149133.0 + (8903961290.0 + (-179289628602.0 + (1982611456181.0 - 8249725736393.0*mi)*mi)*mi)*mi)*mi); + const double term1 = (1.0 - mi) * r; + const double term2 = term1 * n2 * r; + const double term3 = term1 * n3 * r*r; + const double term4 = term1 * n4 * r*r*r; + const double term5 = term1 * n5 * r*r*r*r; + const double term6 = term1 * n6 * r*r*r*r*r; + return 1.0 - 8.0*(term1 + term2 + term3 + term4 + term5 + term6); + } +} + + +/* Assumes z >= 1.0 */ +static double +olver_b0(double z, double minus_zeta) +{ + if(z < 1.02) { + const double a = 1.0-z; + const double c0 = 0.0179988721413553309252458658183; + const double c1 = 0.0111992982212877614645974276203; + const double c2 = 0.0059404069786014304317781160605; + const double c3 = 0.0028676724516390040844556450173; + const double c4 = 0.0012339189052567271708525111185; + const double c5 = 0.0004169250674535178764734660248; + const double c6 = 0.0000330173385085949806952777365; + const double c7 = -0.0001318076238578203009990106425; + const double c8 = -0.0001906870370050847239813945647; + return c0 + a*(c1 + a*(c2 + a*(c3 + a*(c4 + a*(c5 + a*(c6 + a*(c7 + a*c8))))))); + } + else { + const double abs_zeta = minus_zeta; + const double t = 1.0/(z*sqrt(1.0 - 1.0/(z*z))); + return -5.0/(48.0*abs_zeta*abs_zeta) + t*(3.0 + 5.0*t*t)/(24.0*sqrt(abs_zeta)); + } +} + + +inline +static double +olver_f1(double z, double minus_zeta) +{ + const double b0 = olver_b0(z, minus_zeta); + const double h2 = sqrt(4.0*minus_zeta/(z*z-1.0)); /* FIXME */ + return 0.5 * z * h2 * b0; +} + + +int +gsl_sf_bessel_zero_J0_e(unsigned int s, gsl_sf_result * result) +{ + /* CHECK_POINTER(result) */ + + if(s == 0){ + result->val = 0.0; + result->err = 0.0; + GSL_ERROR ("error", GSL_EINVAL); + } + else { + /* See [F. Lether, J. Comp. Appl .Math. 67, 167 (1996)]. */ + + static const double P[] = { 1567450796.0/12539606369.0, + 8903660.0/2365861.0, + 10747040.0/536751.0, + 17590991.0/1696654.0 + }; + static const double Q[] = { 1.0, + 29354255.0/954518.0, + 76900001.0/431847.0, + 67237052.0/442411.0 + }; + + const double beta = (s - 0.25) * M_PI; + const double bi2 = 1.0/(beta*beta); + const double R33num = P[0] + bi2 * (P[1] + bi2 * (P[2] + P[3] * bi2)); + const double R33den = Q[0] + bi2 * (Q[1] + bi2 * (Q[2] + Q[3] * bi2)); + const double R33 = R33num/R33den; + result->val = beta + R33/beta; + result->err = fabs(3.0e-15 * result->val); + return GSL_SUCCESS; + } +} + + +int +gsl_sf_bessel_zero_J1_e(unsigned int s, gsl_sf_result * result) +{ + /* CHECK_POINTER(result) */ + + if(s == 0) { + result->val = 0.0; + result->err = 0.0; + return GSL_SUCCESS; + } + else { + /* See [M. Branders et al., J. Comp. Phys. 42, 403 (1981)]. */ + + static const double a[] = { -0.362804405737084, + 0.120341279038597, + 0.439454547101171e-01, + 0.159340088474713e-02 + }; + static const double b[] = { 1.0, + -0.325641790801361, + -0.117453445968927, + -0.424906902601794e-02 + }; + + const double beta = (s + 0.25) * M_PI; + const double bi2 = 1.0/(beta*beta); + const double Rnum = a[3] + bi2 * (a[2] + bi2 * (a[1] + bi2 * a[0])); + const double Rden = b[3] + bi2 * (b[2] + bi2 * (b[1] + bi2 * b[0])); + const double R = Rnum/Rden; + result->val = beta * (1.0 + R*bi2); + result->err = fabs(2.0e-14 * result->val); + return GSL_SUCCESS; + } +} + + +int +gsl_sf_bessel_zero_Jnu_e(double nu, unsigned int s, gsl_sf_result * result) +{ + /* CHECK_POINTER(result) */ + + if(nu <= -1.0) { + DOMAIN_ERROR(result); + } + else if(s == 0) { + result->val = 0.0; + result->err = 0.0; + if (nu == 0.0) { + GSL_ERROR ("no zero-th root for nu = 0.0", GSL_EINVAL); + } + return GSL_SUCCESS; + } + else if(nu < 0.0) { + /* This can be done, I'm just lazy now. */ + result->val = 0.0; + result->err = 0.0; + GSL_ERROR("unimplemented", GSL_EUNIMPL); + } + else if(s == 1) { + /* Chebyshev fits for the first positive zero. + * For some reason Nemeth made this different from the others. + */ + if(nu < 2.0) { + const double * c = coef_jnu_a[s]; + const size_t L = size_jnu_a[s]; + const double arg = nu/2.0; + const double chb = clenshaw(c, L-1, arg); + result->val = chb; + result->err = 2.0e-15 * result->val; + } + else { + const double * c = coef_jnu_b[s]; + const size_t L = size_jnu_b[s]; + const double arg = pow(2.0/nu, 2.0/3.0); + const double chb = clenshaw(c, L-1, arg); + result->val = nu * chb; + result->err = 2.0e-15 * result->val; + } + return GSL_SUCCESS; + } + else if(s <= 10) { + /* Chebyshev fits for the first 10 positive zeros. */ + if(nu < s) { + const double * c = coef_jnu_a[s]; + const size_t L = size_jnu_a[s]; + const double arg = nu/s; + const double chb = clenshaw(c, L-1, arg); + result->val = chb; + result->err = 2.0e-15 * result->val; + } + else { + const double * c = coef_jnu_b[s]; + const size_t L = size_jnu_b[s]; + const double arg = pow(s/nu, 2.0/3.0); + const double chb = clenshaw(c, L-1, arg); + result->val = nu * chb; + result->err = 2.0e-15 * result->val; + + /* FIXME: truth in advertising for the screwed up + * s = 5 fit. Need to fix that. + */ + if(s == 5) { + result->err *= 5.0e+06; + } + } + return GSL_SUCCESS; + } + else if(s > 0.5*nu && s <= 20) { + /* Chebyshev fits for 10 < s <= 20. */ + const double * c = coef_jnu_a[s]; + const size_t L = size_jnu_a[s]; + const double arg = nu/(2.0*s); + const double chb = clenshaw(c, L-1, arg); + result->val = chb; + result->err = 4.0e-15 * chb; + return GSL_SUCCESS; + } + else if(s > 2.0 * nu) { + /* McMahon expansion if s is large compared to nu. */ + const double beta = (s + 0.5*nu - 0.25) * M_PI; + const double mc = mcmahon_correction(4.0*nu*nu, beta); + gsl_sf_result rat12; + gsl_sf_pow_int_e(nu/beta, 14, &rat12); + result->val = beta * mc; + result->err = 4.0 * fabs(beta) * rat12.val; + result->err += 4.0 * fabs(GSL_DBL_EPSILON * result->val); + return GSL_SUCCESS; + } + else { + /* Olver uniform asymptotic. */ + gsl_sf_result as; + const int stat_as = gsl_sf_airy_zero_Ai_e(s, &as); + const double minus_zeta = -pow(nu,-2.0/3.0) * as.val; + const double z = gsl_sf_bessel_Olver_zofmzeta(minus_zeta); + const double f1 = olver_f1(z, minus_zeta); + result->val = nu * (z + f1/(nu*nu)); + result->err = 0.001/(nu*nu*nu); + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return stat_as; + } +} + + +/*-*-*-*-*-*-*-*-*-* Functions w/ Natural Prototypes *-*-*-*-*-*-*-*-*-*-*/ + +#include "eval.h" + +double gsl_sf_bessel_zero_J0(unsigned int s) +{ + EVAL_RESULT(gsl_sf_bessel_zero_J0_e(s, &result)); +} + +double gsl_sf_bessel_zero_J1(unsigned int s) +{ + EVAL_RESULT(gsl_sf_bessel_zero_J1_e(s, &result)); +} + +double gsl_sf_bessel_zero_Jnu(double nu, unsigned int s) +{ + EVAL_RESULT(gsl_sf_bessel_zero_Jnu_e(nu, s, &result)); +} diff --git a/gsl-2.5/specfunc/bessel_zero.lo b/gsl-2.5/specfunc/bessel_zero.lo new file mode 100644 index 00000000..4fcd1ac6 --- /dev/null +++ b/gsl-2.5/specfunc/bessel_zero.lo @@ -0,0 +1,12 @@ +# bessel_zero.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/bessel_zero.o' + +# Name of the non-PIC object +non_pic_object='bessel_zero.o' + diff --git a/gsl-2.5/specfunc/beta.c b/gsl-2.5/specfunc/beta.c new file mode 100644 index 00000000..69251454 --- /dev/null +++ b/gsl-2.5/specfunc/beta.c @@ -0,0 +1,169 @@ +/* specfunc/beta.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ + +#include +#include +#include +#include +#include +#include +#include + +#include "error.h" + +static double +isnegint (const double x) +{ + return (x < 0) && (x == floor(x)); +} + +int +gsl_sf_lnbeta_e(const double x, const double y, gsl_sf_result * result) +{ + double sgn; + int status = gsl_sf_lnbeta_sgn_e(x,y,result,&sgn); + if (sgn == -1) { + DOMAIN_ERROR(result); + } + return status; +} + +int +gsl_sf_lnbeta_sgn_e(const double x, const double y, gsl_sf_result * result, double * sgn) +{ + /* CHECK_POINTER(result) */ + + if(x == 0.0 || y == 0.0) { + *sgn = 0.0; + DOMAIN_ERROR(result); + } else if (isnegint(x) || isnegint(y)) { + *sgn = 0.0; + DOMAIN_ERROR(result); /* not defined for negative integers */ + } + + /* See if we can handle the postive case with min/max < 0.2 */ + + if (x > 0 && y > 0) { + const double max = GSL_MAX(x,y); + const double min = GSL_MIN(x,y); + const double rat = min/max; + + if(rat < 0.2) { + /* min << max, so be careful + * with the subtraction + */ + double lnpre_val; + double lnpre_err; + double lnpow_val; + double lnpow_err; + double t1, t2, t3; + gsl_sf_result lnopr; + gsl_sf_result gsx, gsy, gsxy; + gsl_sf_gammastar_e(x, &gsx); + gsl_sf_gammastar_e(y, &gsy); + gsl_sf_gammastar_e(x+y, &gsxy); + gsl_sf_log_1plusx_e(rat, &lnopr); + lnpre_val = log(gsx.val*gsy.val/gsxy.val * M_SQRT2*M_SQRTPI); + lnpre_err = gsx.err/gsx.val + gsy.err/gsy.val + gsxy.err/gsxy.val; + t1 = min*log(rat); + t2 = 0.5*log(min); + t3 = (x+y-0.5)*lnopr.val; + lnpow_val = t1 - t2 - t3; + lnpow_err = GSL_DBL_EPSILON * (fabs(t1) + fabs(t2) + fabs(t3)); + lnpow_err += fabs(x+y-0.5) * lnopr.err; + result->val = lnpre_val + lnpow_val; + result->err = lnpre_err + lnpow_err; + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + *sgn = 1.0; + return GSL_SUCCESS; + } + } + + /* General case - Fallback */ + { + gsl_sf_result lgx, lgy, lgxy; + double sgx, sgy, sgxy, xy = x+y; + int stat_gx = gsl_sf_lngamma_sgn_e(x, &lgx, &sgx); + int stat_gy = gsl_sf_lngamma_sgn_e(y, &lgy, &sgy); + int stat_gxy = gsl_sf_lngamma_sgn_e(xy, &lgxy, &sgxy); + *sgn = sgx * sgy * sgxy; + result->val = lgx.val + lgy.val - lgxy.val; + result->err = lgx.err + lgy.err + lgxy.err; + result->err += 2.0 * GSL_DBL_EPSILON * (fabs(lgx.val) + fabs(lgy.val) + fabs(lgxy.val)); + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_ERROR_SELECT_3(stat_gx, stat_gy, stat_gxy); + } +} + + +int +gsl_sf_beta_e(const double x, const double y, gsl_sf_result * result) +{ + if((x > 0 && y > 0) && x < 50.0 && y < 50.0) { + /* Handle the easy case */ + gsl_sf_result gx, gy, gxy; + gsl_sf_gamma_e(x, &gx); + gsl_sf_gamma_e(y, &gy); + gsl_sf_gamma_e(x+y, &gxy); + result->val = (gx.val*gy.val)/gxy.val; + result->err = gx.err * fabs(gy.val/gxy.val); + result->err += gy.err * fabs(gx.val/gxy.val); + result->err += fabs((gx.val*gy.val)/(gxy.val*gxy.val)) * gxy.err; + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else if (isnegint(x) || isnegint(y)) { + DOMAIN_ERROR(result); + } else if (isnegint(x+y)) { /* infinity in the denominator */ + result->val = 0.0; + result->err = 0.0; + return GSL_SUCCESS; + } else { + gsl_sf_result lb; + double sgn; + int stat_lb = gsl_sf_lnbeta_sgn_e(x, y, &lb, &sgn); + if(stat_lb == GSL_SUCCESS) { + int status = gsl_sf_exp_err_e(lb.val, lb.err, result); + result->val *= sgn; + return status; + } + else { + result->val = 0.0; + result->err = 0.0; + return stat_lb; + } + } +} + + +/*-*-*-*-*-*-*-*-*-* Functions w/ Natural Prototypes *-*-*-*-*-*-*-*-*-*-*/ + +#include "eval.h" + +double gsl_sf_lnbeta(const double x, const double y) +{ + EVAL_RESULT(gsl_sf_lnbeta_e(x, y, &result)); +} + +double gsl_sf_beta(const double x, const double y) +{ + EVAL_RESULT(gsl_sf_beta_e(x, y, &result)); +} diff --git a/gsl-2.5/specfunc/beta.lo b/gsl-2.5/specfunc/beta.lo new file mode 100644 index 00000000..57c4ca59 --- /dev/null +++ b/gsl-2.5/specfunc/beta.lo @@ -0,0 +1,12 @@ +# beta.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/beta.o' + +# Name of the non-PIC object +non_pic_object='beta.o' + diff --git a/gsl-2.5/specfunc/beta_inc.c b/gsl-2.5/specfunc/beta_inc.c new file mode 100644 index 00000000..836574e1 --- /dev/null +++ b/gsl-2.5/specfunc/beta_inc.c @@ -0,0 +1,210 @@ +/* specfunc/beta_inc.c + * + * Copyright (C) 2007 Brian Gough + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ + +#include +#include +#include +#include +#include +#include +#include + +#include "error.h" +#include "check.h" + +static double +isnegint (const double x) +{ + return (x < 0) && (x == floor(x)); +} + +static +int +beta_cont_frac( + const double a, + const double b, + const double x, + gsl_sf_result * result + ) +{ + const unsigned int max_iter = 512; /* control iterations */ + const double cutoff = 2.0 * GSL_DBL_MIN; /* control the zero cutoff */ + unsigned int iter_count = 0; + double cf; + + /* standard initialization for continued fraction */ + double num_term = 1.0; + double den_term = 1.0 - (a+b)*x/(a+1.0); + if (fabs(den_term) < cutoff) den_term = cutoff; + den_term = 1.0/den_term; + cf = den_term; + + while(iter_count < max_iter) { + const int k = iter_count + 1; + double coeff = k*(b-k)*x/(((a-1.0)+2*k)*(a+2*k)); + double delta_frac; + + /* first step */ + den_term = 1.0 + coeff*den_term; + num_term = 1.0 + coeff/num_term; + if(fabs(den_term) < cutoff) den_term = cutoff; + if(fabs(num_term) < cutoff) num_term = cutoff; + den_term = 1.0/den_term; + + delta_frac = den_term * num_term; + cf *= delta_frac; + + coeff = -(a+k)*(a+b+k)*x/((a+2*k)*(a+2*k+1.0)); + + /* second step */ + den_term = 1.0 + coeff*den_term; + num_term = 1.0 + coeff/num_term; + if(fabs(den_term) < cutoff) den_term = cutoff; + if(fabs(num_term) < cutoff) num_term = cutoff; + den_term = 1.0/den_term; + + delta_frac = den_term*num_term; + cf *= delta_frac; + + if(fabs(delta_frac-1.0) < 2.0*GSL_DBL_EPSILON) break; + + ++iter_count; + } + + result->val = cf; + result->err = iter_count * 4.0 * GSL_DBL_EPSILON * fabs(cf); + + if(iter_count >= max_iter) + GSL_ERROR ("error", GSL_EMAXITER); + else + return GSL_SUCCESS; +} + + + +/*-*-*-*-*-*-*-*-*-*-*-* Functions with Error Codes *-*-*-*-*-*-*-*-*-*-*-*/ + +int +gsl_sf_beta_inc_e( + const double a, + const double b, + const double x, + gsl_sf_result * result + ) +{ + if(x < 0.0 || x > 1.0) { + DOMAIN_ERROR(result); + } else if (isnegint(a) || isnegint(b)) { + DOMAIN_ERROR(result); + } else if (isnegint(a+b)) { + DOMAIN_ERROR(result); + } else if(x == 0.0) { + result->val = 0.0; + result->err = 0.0; + return GSL_SUCCESS; + } + else if(x == 1.0) { + result->val = 1.0; + result->err = 0.0; + return GSL_SUCCESS; + } else if (a <= 0 || b <= 0) { + gsl_sf_result f, beta; + int stat; + const int stat_f = gsl_sf_hyperg_2F1_e(a, 1-b, a+1, x, &f); + const int stat_beta = gsl_sf_beta_e(a, b, &beta); + double prefactor = (pow(x, a) / a); + result->val = prefactor * f.val / beta.val; + result->err = fabs(prefactor) * f.err/ fabs(beta.val) + fabs(result->val/beta.val) * beta.err; + + stat = GSL_ERROR_SELECT_2(stat_f, stat_beta); + if(stat == GSL_SUCCESS) { + CHECK_UNDERFLOW(result); + } + return stat; + } else { + gsl_sf_result ln_beta; + gsl_sf_result ln_x; + gsl_sf_result ln_1mx; + gsl_sf_result prefactor; + const int stat_ln_beta = gsl_sf_lnbeta_e(a, b, &ln_beta); + const int stat_ln_1mx = gsl_sf_log_1plusx_e(-x, &ln_1mx); + const int stat_ln_x = gsl_sf_log_e(x, &ln_x); + const int stat_ln = GSL_ERROR_SELECT_3(stat_ln_beta, stat_ln_1mx, stat_ln_x); + + const double ln_pre_val = -ln_beta.val + a * ln_x.val + b * ln_1mx.val; + const double ln_pre_err = ln_beta.err + fabs(a*ln_x.err) + fabs(b*ln_1mx.err); + const int stat_exp = gsl_sf_exp_err_e(ln_pre_val, ln_pre_err, &prefactor); + + if(stat_ln != GSL_SUCCESS) { + result->val = 0.0; + result->err = 0.0; + GSL_ERROR ("error", GSL_ESANITY); + } + + if(x < (a + 1.0)/(a+b+2.0)) { + /* Apply continued fraction directly. */ + gsl_sf_result cf; + const int stat_cf = beta_cont_frac(a, b, x, &cf); + int stat; + result->val = prefactor.val * cf.val / a; + result->err = (fabs(prefactor.err * cf.val) + fabs(prefactor.val * cf.err))/a; + + stat = GSL_ERROR_SELECT_2(stat_exp, stat_cf); + if(stat == GSL_SUCCESS) { + CHECK_UNDERFLOW(result); + } + return stat; + } + else { + /* Apply continued fraction after hypergeometric transformation. */ + gsl_sf_result cf; + const int stat_cf = beta_cont_frac(b, a, 1.0-x, &cf); + int stat; + const double term = prefactor.val * cf.val / b; + result->val = 1.0 - term; + result->err = fabs(prefactor.err * cf.val)/b; + result->err += fabs(prefactor.val * cf.err)/b; + result->err += 2.0 * GSL_DBL_EPSILON * (1.0 + fabs(term)); + /* since the prefactor term is subtracted from 1 we need to + ignore underflow */ + if (stat_exp != GSL_EUNDRFLW) { + stat = GSL_ERROR_SELECT_2(stat_exp, stat_cf); + } else { + stat = stat_cf; + }; + if(stat == GSL_SUCCESS) { + CHECK_UNDERFLOW(result); + } + return stat; + } + } +} + + +/*-*-*-*-*-*-*-*-*-* Functions w/ Natural Prototypes *-*-*-*-*-*-*-*-*-*-*/ + +#include "eval.h" + +double gsl_sf_beta_inc(const double a, const double b, const double x) +{ + EVAL_RESULT(gsl_sf_beta_inc_e(a, b, x, &result)); +} diff --git a/gsl-2.5/specfunc/beta_inc.lo b/gsl-2.5/specfunc/beta_inc.lo new file mode 100644 index 00000000..b6302f19 --- /dev/null +++ b/gsl-2.5/specfunc/beta_inc.lo @@ -0,0 +1,12 @@ +# beta_inc.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/beta_inc.o' + +# Name of the non-PIC object +non_pic_object='beta_inc.o' + diff --git a/gsl-2.5/specfunc/cheb_eval.c b/gsl-2.5/specfunc/cheb_eval.c new file mode 100644 index 00000000..a659ecba --- /dev/null +++ b/gsl-2.5/specfunc/cheb_eval.c @@ -0,0 +1,34 @@ + +static inline int +cheb_eval_e(const cheb_series * cs, + const double x, + gsl_sf_result * result) +{ + int j; + double d = 0.0; + double dd = 0.0; + + double y = (2.0*x - cs->a - cs->b) / (cs->b - cs->a); + double y2 = 2.0 * y; + + double e = 0.0; + + for(j = cs->order; j>=1; j--) { + double temp = d; + d = y2*d - dd + cs->c[j]; + e += fabs(y2*temp) + fabs(dd) + fabs(cs->c[j]); + dd = temp; + } + + { + double temp = d; + d = y*d - dd + 0.5 * cs->c[0]; + e += fabs(y*temp) + fabs(dd) + 0.5 * fabs(cs->c[0]); + } + + result->val = d; + result->err = GSL_DBL_EPSILON * e + fabs(cs->c[cs->order]); + + return GSL_SUCCESS; +} + diff --git a/gsl-2.5/specfunc/cheb_eval_mode.c b/gsl-2.5/specfunc/cheb_eval_mode.c new file mode 100644 index 00000000..80127ded --- /dev/null +++ b/gsl-2.5/specfunc/cheb_eval_mode.c @@ -0,0 +1,30 @@ +static inline int +cheb_eval_mode_e(const cheb_series * cs, + const double x, + gsl_mode_t mode, + gsl_sf_result * result) +{ + int j; + double d = 0.0; + double dd = 0.0; + + double y = (2.*x - cs->a - cs->b) / (cs->b - cs->a); + double y2 = 2.0 * y; + + int eval_order; + + if(GSL_MODE_PREC(mode) == GSL_PREC_DOUBLE) + eval_order = cs->order; + else + eval_order = cs->order_sp; + + for(j = eval_order; j>=1; j--) { + double temp = d; + d = y2*d - dd + cs->c[j]; + dd = temp; + } + + result->val = y*d - dd + 0.5 * cs->c[0]; + result->err = GSL_DBL_EPSILON * fabs(result->val) + fabs(cs->c[eval_order]); + return GSL_SUCCESS; +} diff --git a/gsl-2.5/specfunc/chebyshev.h b/gsl-2.5/specfunc/chebyshev.h new file mode 100644 index 00000000..2d93ec71 --- /dev/null +++ b/gsl-2.5/specfunc/chebyshev.h @@ -0,0 +1,31 @@ +/* specfunc/chebyshev.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* data for a Chebyshev series over a given interval */ + +struct cheb_series_struct { + double * c; /* coefficients */ + int order; /* order of expansion */ + double a; /* lower interval point */ + double b; /* upper interval point */ + int order_sp; /* effective single precision order */ +}; +typedef struct cheb_series_struct cheb_series; + + diff --git a/gsl-2.5/specfunc/check.h b/gsl-2.5/specfunc/check.h new file mode 100644 index 00000000..df6eee68 --- /dev/null +++ b/gsl-2.5/specfunc/check.h @@ -0,0 +1,3 @@ +/* check for underflow */ + +#define CHECK_UNDERFLOW(r) if (fabs((r)->val) < GSL_DBL_MIN) GSL_ERROR("underflow", GSL_EUNDRFLW); diff --git a/gsl-2.5/specfunc/clausen.c b/gsl-2.5/specfunc/clausen.c new file mode 100644 index 00000000..ebaebbd6 --- /dev/null +++ b/gsl-2.5/specfunc/clausen.c @@ -0,0 +1,111 @@ +/* specfunc/clausen.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ + +#include +#include +#include +#include +#include + +#include "chebyshev.h" +#include "cheb_eval.c" + +static double aclaus_data[15] = { + 2.142694363766688447e+00, + 0.723324281221257925e-01, + 0.101642475021151164e-02, + 0.3245250328531645e-04, + 0.133315187571472e-05, + 0.6213240591653e-07, + 0.313004135337e-08, + 0.16635723056e-09, + 0.919659293e-11, + 0.52400462e-12, + 0.3058040e-13, + 0.18197e-14, + 0.1100e-15, + 0.68e-17, + 0.4e-18 +}; +static cheb_series aclaus_cs = { + aclaus_data, + 14, + -1, 1, + 8 /* FIXME: this is a guess, correct value needed here BJG */ +}; + + +/*-*-*-*-*-*-*-*-*-*-*-* Functions with Error Codes *-*-*-*-*-*-*-*-*-*-*-*/ + +int gsl_sf_clausen_e(double x, gsl_sf_result *result) +{ + const double x_cut = M_PI * GSL_SQRT_DBL_EPSILON; + + double sgn = 1.0; + int status_red; + + if(x < 0.0) { + x = -x; + sgn = -1.0; + } + + /* Argument reduction to [0, 2pi) */ + status_red = gsl_sf_angle_restrict_pos_e(&x); + + /* Further reduction to [0,pi) */ + if(x > M_PI) { + /* simulated extra precision: 2PI = p0 + p1 */ + const double p0 = 6.28125; + const double p1 = 0.19353071795864769253e-02; + x = (p0 - x) + p1; + sgn = -sgn; + } + + if(x == 0.0) { + result->val = 0.0; + result->err = 0.0; + } + else if(x < x_cut) { + result->val = x * (1.0 - log(x)); + result->err = x * GSL_DBL_EPSILON; + } + else { + const double t = 2.0*(x*x / (M_PI*M_PI) - 0.5); + gsl_sf_result result_c; + cheb_eval_e(&aclaus_cs, t, &result_c); + result->val = x * (result_c.val - log(x)); + result->err = x * (result_c.err + GSL_DBL_EPSILON); + } + + result->val *= sgn; + + return status_red; +} + + +/*-*-*-*-*-*-*-*-*-* Functions w/ Natural Prototypes *-*-*-*-*-*-*-*-*-*-*/ + +#include "eval.h" + +double gsl_sf_clausen(const double x) +{ + EVAL_RESULT(gsl_sf_clausen_e(x, &result)); +} diff --git a/gsl-2.5/specfunc/clausen.lo b/gsl-2.5/specfunc/clausen.lo new file mode 100644 index 00000000..4ff519ca --- /dev/null +++ b/gsl-2.5/specfunc/clausen.lo @@ -0,0 +1,12 @@ +# clausen.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/clausen.o' + +# Name of the non-PIC object +non_pic_object='clausen.o' + diff --git a/gsl-2.5/specfunc/coulomb.c b/gsl-2.5/specfunc/coulomb.c new file mode 100644 index 00000000..2e0ac7c7 --- /dev/null +++ b/gsl-2.5/specfunc/coulomb.c @@ -0,0 +1,1417 @@ +/* specfunc/coulomb.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ + +/* Evaluation of Coulomb wave functions F_L(eta, x), G_L(eta, x), + * and their derivatives. A combination of Steed's method, asymptotic + * results, and power series. + * + * Steed's method: + * [Barnett, CPC 21, 297 (1981)] + * Power series and other methods: + * [Biedenharn et al., PR 97, 542 (1954)] + * [Bardin et al., CPC 3, 73 (1972)] + * [Abad+Sesma, CPC 71, 110 (1992)] + */ +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "error.h" + +/* the L=0 normalization constant + * [Abramowitz+Stegun 14.1.8] + */ +static +double +C0sq(double eta) +{ + double twopieta = 2.0*M_PI*eta; + + if(fabs(eta) < GSL_DBL_EPSILON) { + return 1.0; + } + else if(twopieta > GSL_LOG_DBL_MAX) { + return 0.0; + } + else { + gsl_sf_result scale; + gsl_sf_expm1_e(twopieta, &scale); + return twopieta/scale.val; + } +} + + +/* the full definition of C_L(eta) for any valid L and eta + * [Abramowitz and Stegun 14.1.7] + * This depends on the complex gamma function. For large + * arguments the phase of the complex gamma function is not + * very accurately determined. However the modulus is, and that + * is all that we need to calculate C_L. + * + * This is not valid for L <= -3/2 or L = -1. + */ +static +int +CLeta(double L, double eta, gsl_sf_result * result) +{ + gsl_sf_result ln1; /* log of numerator Gamma function */ + gsl_sf_result ln2; /* log of denominator Gamma function */ + double sgn = 1.0; + double arg_val, arg_err; + + if(fabs(eta/(L+1.0)) < GSL_DBL_EPSILON) { + gsl_sf_lngamma_e(L+1.0, &ln1); + } + else { + gsl_sf_result p1; /* phase of numerator Gamma -- not used */ + gsl_sf_lngamma_complex_e(L+1.0, eta, &ln1, &p1); /* should be ok */ + } + + gsl_sf_lngamma_e(2.0*(L+1.0), &ln2); + if(L < -1.0) sgn = -sgn; + + arg_val = L*M_LN2 - 0.5*eta*M_PI + ln1.val - ln2.val; + arg_err = ln1.err + ln2.err; + arg_err += GSL_DBL_EPSILON * (fabs(L*M_LN2) + fabs(0.5*eta*M_PI)); + return gsl_sf_exp_err_e(arg_val, arg_err, result); +} + + +int +gsl_sf_coulomb_CL_e(double lam, double eta, gsl_sf_result * result) +{ + /* CHECK_POINTER(result) */ + + if(lam <= -1.0) { + DOMAIN_ERROR(result); + } + else if(fabs(lam) < GSL_DBL_EPSILON) { + /* saves a calculation of complex_lngamma(), otherwise not necessary */ + result->val = sqrt(C0sq(eta)); + result->err = 2.0 * GSL_DBL_EPSILON * result->val; + return GSL_SUCCESS; + } + else { + return CLeta(lam, eta, result); + } +} + + +/* cl[0] .. cl[kmax] = C_{lam_min}(eta) .. C_{lam_min+kmax}(eta) + */ +int +gsl_sf_coulomb_CL_array(double lam_min, int kmax, double eta, double * cl) +{ + int k; + gsl_sf_result cl_0; + gsl_sf_coulomb_CL_e(lam_min, eta, &cl_0); + cl[0] = cl_0.val; + + for(k=1; k<=kmax; k++) { + double L = lam_min + k; + cl[k] = cl[k-1] * hypot(L, eta)/(L*(2.0*L+1.0)); + } + + return GSL_SUCCESS; +} + + +/* Evaluate the series for Phi_L(eta,x) and Phi_L*(eta,x) + * [Abramowitz+Stegun 14.1.5] + * [Abramowitz+Stegun 14.1.13] + * + * The sequence of coefficients A_k^L is + * manifestly well-controlled for L >= -1/2 + * and eta < 10. + * + * This makes sense since this is the region + * away from threshold, and you expect + * the evaluation to become easier as you + * get farther from threshold. + * + * Empirically, this is quite well-behaved for + * L >= -1/2 + * eta < 10 + * x < 10 + */ +#if 0 +static +int +coulomb_Phi_series(const double lam, const double eta, const double x, + double * result, double * result_star) +{ + int kmin = 5; + int kmax = 200; + int k; + double Akm2 = 1.0; + double Akm1 = eta/(lam+1.0); + double Ak; + + double xpow = x; + double sum = Akm2 + Akm1*x; + double sump = (lam+1.0)*Akm2 + (lam+2.0)*Akm1*x; + double prev_abs_del = fabs(Akm1*x); + double prev_abs_del_p = (lam+2.0) * prev_abs_del; + + for(k=2; k kmin + ) break; + + /* We need to keep track of the previous delta because when + * eta is near zero the odd terms of the sum are very small + * and this could lead to premature termination. + */ + prev_abs_del = abs_del; + prev_abs_del_p = abs_del_p; + + Akm2 = Akm1; + Akm1 = Ak; + } + + *result = sum; + *result_star = sump; + + if(k==kmax) { + GSL_ERROR ("error", GSL_EMAXITER); + } + else { + return GSL_SUCCESS; + } +} +#endif /* 0 */ + + +/* Determine the connection phase, phi_lambda. + * See coulomb_FG_series() below. We have + * to be careful about sin(phi)->0. Note that + * there is an underflow condition for large + * positive eta in any case. + */ +static +int +coulomb_connection(const double lam, const double eta, + double * cos_phi, double * sin_phi) +{ + if(eta > -GSL_LOG_DBL_MIN/2.0*M_PI-1.0) { + *cos_phi = 1.0; + *sin_phi = 0.0; + GSL_ERROR ("error", GSL_EUNDRFLW); + } + else if(eta > -GSL_LOG_DBL_EPSILON/(4.0*M_PI)) { + const double eps = 2.0 * exp(-2.0*M_PI*eta); + const double tpl = tan(M_PI * lam); + const double dth = eps * tpl / (tpl*tpl + 1.0); + *cos_phi = -1.0 + 0.5 * dth*dth; + *sin_phi = -dth; + return GSL_SUCCESS; + } + else { + double X = tanh(M_PI * eta) / tan(M_PI * lam); + double phi = -atan(X) - (lam + 0.5) * M_PI; + *cos_phi = cos(phi); + *sin_phi = sin(phi); + return GSL_SUCCESS; + } +} + + +/* Evaluate the Frobenius series for F_lam(eta,x) and G_lam(eta,x). + * Homegrown algebra. Evaluates the series for F_{lam} and + * F_{-lam-1}, then uses + * G_{lam} = (F_{lam} cos(phi) - F_{-lam-1}) / sin(phi) + * where + * phi = Arg[Gamma[1+lam+I eta]] - Arg[Gamma[-lam + I eta]] - (lam+1/2)Pi + * = Arg[Sin[Pi(-lam+I eta)] - (lam+1/2)Pi + * = atan2(-cos(lam Pi)sinh(eta Pi), -sin(lam Pi)cosh(eta Pi)) - (lam+1/2)Pi + * + * = -atan(X) - (lam+1/2) Pi, X = tanh(eta Pi)/tan(lam Pi) + * + * Not appropriate for lam <= -1/2, lam = 0, or lam >= 1/2. + */ +static +int +coulomb_FG_series(const double lam, const double eta, const double x, + gsl_sf_result * F, gsl_sf_result * G) +{ + const int max_iter = 800; + gsl_sf_result ClamA; + gsl_sf_result ClamB; + int stat_A = CLeta(lam, eta, &ClamA); + int stat_B = CLeta(-lam-1.0, eta, &ClamB); + const double tlp1 = 2.0*lam + 1.0; + const double pow_x = pow(x, lam); + double cos_phi_lam; + double sin_phi_lam; + + double uA_mm2 = 1.0; /* uA sum is for F_{lam} */ + double uA_mm1 = x*eta/(lam+1.0); + double uA_m; + double uB_mm2 = 1.0; /* uB sum is for F_{-lam-1} */ + double uB_mm1 = -x*eta/lam; + double uB_m; + double A_sum = uA_mm2 + uA_mm1; + double B_sum = uB_mm2 + uB_mm1; + double A_abs_del_prev = fabs(A_sum); + double B_abs_del_prev = fabs(B_sum); + gsl_sf_result FA, FB; + int m = 2; + + int stat_conn = coulomb_connection(lam, eta, &cos_phi_lam, &sin_phi_lam); + + if(stat_conn == GSL_EUNDRFLW) { + F->val = 0.0; /* FIXME: should this be set to Inf too like G? */ + F->err = 0.0; + OVERFLOW_ERROR(G); + } + + while(m < max_iter) { + double abs_dA; + double abs_dB; + uA_m = x*(2.0*eta*uA_mm1 - x*uA_mm2)/(m*(m+tlp1)); + uB_m = x*(2.0*eta*uB_mm1 - x*uB_mm2)/(m*(m-tlp1)); + A_sum += uA_m; + B_sum += uB_m; + abs_dA = fabs(uA_m); + abs_dB = fabs(uB_m); + if(m > 15) { + /* Don't bother checking until we have gone out a little ways; + * a minor optimization. Also make sure to check both the + * current and the previous increment because the odd and even + * terms of the sum can have very different behaviour, depending + * on the value of eta. + */ + double max_abs_dA = GSL_MAX(abs_dA, A_abs_del_prev); + double max_abs_dB = GSL_MAX(abs_dB, B_abs_del_prev); + double abs_A = fabs(A_sum); + double abs_B = fabs(B_sum); + if( max_abs_dA/(max_abs_dA + abs_A) < 4.0*GSL_DBL_EPSILON + && max_abs_dB/(max_abs_dB + abs_B) < 4.0*GSL_DBL_EPSILON + ) break; + } + A_abs_del_prev = abs_dA; + B_abs_del_prev = abs_dB; + uA_mm2 = uA_mm1; + uA_mm1 = uA_m; + uB_mm2 = uB_mm1; + uB_mm1 = uB_m; + m++; + } + + FA.val = A_sum * ClamA.val * pow_x * x; + FA.err = fabs(A_sum) * ClamA.err * pow_x * x + 2.0*GSL_DBL_EPSILON*fabs(FA.val); + FB.val = B_sum * ClamB.val / pow_x; + FB.err = fabs(B_sum) * ClamB.err / pow_x + 2.0*GSL_DBL_EPSILON*fabs(FB.val); + + F->val = FA.val; + F->err = FA.err; + + G->val = (FA.val * cos_phi_lam - FB.val)/sin_phi_lam; + G->err = (FA.err * fabs(cos_phi_lam) + FB.err)/fabs(sin_phi_lam); + + if(m >= max_iter) + GSL_ERROR ("error", GSL_EMAXITER); + else + return GSL_ERROR_SELECT_2(stat_A, stat_B); +} + + +/* Evaluate the Frobenius series for F_0(eta,x) and G_0(eta,x). + * See [Bardin et al., CPC 3, 73 (1972), (14)-(17)]; + * note the misprint in (17): nu_0=1 is correct, not nu_0=0. + */ +static +int +coulomb_FG0_series(const double eta, const double x, + gsl_sf_result * F, gsl_sf_result * G) +{ + const int max_iter = 800; + const double x2 = x*x; + const double tex = 2.0*eta*x; + gsl_sf_result C0; + int stat_CL = CLeta(0.0, eta, &C0); + gsl_sf_result r1pie; + int psi_stat = gsl_sf_psi_1piy_e(eta, &r1pie); + double u_mm2 = 0.0; /* u_0 */ + double u_mm1 = x; /* u_1 */ + double u_m; + double v_mm2 = 1.0; /* nu_0 */ + double v_mm1 = tex*(2.0*M_EULER-1.0+r1pie.val); /* nu_1 */ + double v_m; + double u_sum = u_mm2 + u_mm1; + double v_sum = v_mm2 + v_mm1; + double u_abs_del_prev = fabs(u_sum); + double v_abs_del_prev = fabs(v_sum); + int m = 2; + double u_sum_err = 2.0 * GSL_DBL_EPSILON * fabs(u_sum); + double v_sum_err = 2.0 * GSL_DBL_EPSILON * fabs(v_sum); + double ln2x = log(2.0*x); + + while(m < max_iter) { + double abs_du; + double abs_dv; + double m_mm1 = m*(m-1.0); + u_m = (tex*u_mm1 - x2*u_mm2)/m_mm1; + v_m = (tex*v_mm1 - x2*v_mm2 - 2.0*eta*(2*m-1)*u_m)/m_mm1; + u_sum += u_m; + v_sum += v_m; + abs_du = fabs(u_m); + abs_dv = fabs(v_m); + u_sum_err += 2.0 * GSL_DBL_EPSILON * abs_du; + v_sum_err += 2.0 * GSL_DBL_EPSILON * abs_dv; + if(m > 15) { + /* Don't bother checking until we have gone out a little ways; + * a minor optimization. Also make sure to check both the + * current and the previous increment because the odd and even + * terms of the sum can have very different behaviour, depending + * on the value of eta. + */ + double max_abs_du = GSL_MAX(abs_du, u_abs_del_prev); + double max_abs_dv = GSL_MAX(abs_dv, v_abs_del_prev); + double abs_u = fabs(u_sum); + double abs_v = fabs(v_sum); + if( max_abs_du/(max_abs_du + abs_u) < 40.0*GSL_DBL_EPSILON + && max_abs_dv/(max_abs_dv + abs_v) < 40.0*GSL_DBL_EPSILON + ) break; + } + u_abs_del_prev = abs_du; + v_abs_del_prev = abs_dv; + u_mm2 = u_mm1; + u_mm1 = u_m; + v_mm2 = v_mm1; + v_mm1 = v_m; + m++; + } + + F->val = C0.val * u_sum; + F->err = C0.err * fabs(u_sum); + F->err += fabs(C0.val) * u_sum_err; + F->err += 2.0 * GSL_DBL_EPSILON * fabs(F->val); + + G->val = (v_sum + 2.0*eta*u_sum * ln2x) / C0.val; + G->err = (fabs(v_sum) + fabs(2.0*eta*u_sum * ln2x)) / fabs(C0.val) * fabs(C0.err/C0.val); + G->err += (v_sum_err + fabs(2.0*eta*u_sum_err*ln2x)) / fabs(C0.val); + G->err += 2.0 * GSL_DBL_EPSILON * fabs(G->val); + + if(m == max_iter) + GSL_ERROR ("error", GSL_EMAXITER); + else + return GSL_ERROR_SELECT_2(psi_stat, stat_CL); +} + + +/* Evaluate the Frobenius series for F_{-1/2}(eta,x) and G_{-1/2}(eta,x). + * Homegrown algebra. + */ +static +int +coulomb_FGmhalf_series(const double eta, const double x, + gsl_sf_result * F, gsl_sf_result * G) +{ + const int max_iter = 800; + const double rx = sqrt(x); + const double x2 = x*x; + const double tex = 2.0*eta*x; + gsl_sf_result Cmhalf; + int stat_CL = CLeta(-0.5, eta, &Cmhalf); + double u_mm2 = 1.0; /* u_0 */ + double u_mm1 = tex * u_mm2; /* u_1 */ + double u_m; + double v_mm2, v_mm1, v_m; + double f_sum, g_sum; + double tmp1; + gsl_sf_result rpsi_1pe; + gsl_sf_result rpsi_1p2e; + int m = 2; + + gsl_sf_psi_1piy_e(eta, &rpsi_1pe); + gsl_sf_psi_1piy_e(2.0*eta, &rpsi_1p2e); + + v_mm2 = 2.0*M_EULER - M_LN2 - rpsi_1pe.val + 2.0*rpsi_1p2e.val; + v_mm1 = tex*(v_mm2 - 2.0*u_mm2); + + f_sum = u_mm2 + u_mm1; + g_sum = v_mm2 + v_mm1; + + while(m < max_iter) { + double m2 = m*m; + u_m = (tex*u_mm1 - x2*u_mm2)/m2; + v_m = (tex*v_mm1 - x2*v_mm2 - 2.0*m*u_m)/m2; + f_sum += u_m; + g_sum += v_m; + if( f_sum != 0.0 + && g_sum != 0.0 + && (fabs(u_m/f_sum) + fabs(v_m/g_sum) < 10.0*GSL_DBL_EPSILON)) break; + u_mm2 = u_mm1; + u_mm1 = u_m; + v_mm2 = v_mm1; + v_mm1 = v_m; + m++; + } + + F->val = Cmhalf.val * rx * f_sum; + F->err = Cmhalf.err * fabs(rx * f_sum) + 2.0*GSL_DBL_EPSILON*fabs(F->val); + + tmp1 = f_sum*log(x); + G->val = -rx*(tmp1 + g_sum)/Cmhalf.val; + G->err = fabs(rx)*(fabs(tmp1) + fabs(g_sum))/fabs(Cmhalf.val) * fabs(Cmhalf.err/Cmhalf.val); + + if(m == max_iter) + GSL_ERROR ("error", GSL_EMAXITER); + else + return stat_CL; +} + + +/* Evolve the backwards recurrence for F,F'. + * + * F_{lam-1} = (S_lam F_lam + F_lam') / R_lam + * F_{lam-1}' = (S_lam F_{lam-1} - R_lam F_lam) + * where + * R_lam = sqrt(1 + (eta/lam)^2) + * S_lam = lam/x + eta/lam + * + */ +static +int +coulomb_F_recur(double lam_min, int kmax, + double eta, double x, + double F_lam_max, double Fp_lam_max, + double * F_lam_min, double * Fp_lam_min + ) +{ + double x_inv = 1.0/x; + double fcl = F_lam_max; + double fpl = Fp_lam_max; + double lam_max = lam_min + kmax; + double lam = lam_max; + int k; + + for(k=kmax-1; k>=0; k--) { + double el = eta/lam; + double rl = hypot(1.0, el); + double sl = el + lam*x_inv; + double fc_lm1; + fc_lm1 = (fcl*sl + fpl)/rl; + fpl = fc_lm1*sl - fcl*rl; + fcl = fc_lm1; + lam -= 1.0; + } + + *F_lam_min = fcl; + *Fp_lam_min = fpl; + return GSL_SUCCESS; +} + + +/* Evolve the forward recurrence for G,G'. + * + * G_{lam+1} = (S_lam G_lam - G_lam')/R_lam + * G_{lam+1}' = R_{lam+1} G_lam - S_lam G_{lam+1} + * + * where S_lam and R_lam are as above in the F recursion. + */ +static +int +coulomb_G_recur(const double lam_min, const int kmax, + const double eta, const double x, + const double G_lam_min, const double Gp_lam_min, + double * G_lam_max, double * Gp_lam_max + ) +{ + double x_inv = 1.0/x; + double gcl = G_lam_min; + double gpl = Gp_lam_min; + double lam = lam_min + 1.0; + int k; + + for(k=1; k<=kmax; k++) { + double el = eta/lam; + double rl = hypot(1.0, el); + double sl = el + lam*x_inv; + double gcl1 = (sl*gcl - gpl)/rl; + gpl = rl*gcl - sl*gcl1; + gcl = gcl1; + lam += 1.0; + } + + *G_lam_max = gcl; + *Gp_lam_max = gpl; + return GSL_SUCCESS; +} + + +/* Evaluate the first continued fraction, giving + * the ratio F'/F at the upper lambda value. + * We also determine the sign of F at that point, + * since it is the sign of the last denominator + * in the continued fraction. + */ +static +int +coulomb_CF1(double lambda, + double eta, double x, + double * fcl_sign, + double * result, + int * count + ) +{ + const double CF1_small = 1.e-30; + const double CF1_abort = 1.0e+05; + const double CF1_acc = 2.0*GSL_DBL_EPSILON; + const double x_inv = 1.0/x; + const double px = lambda + 1.0 + CF1_abort; + + double pk = lambda + 1.0; + double F = eta/pk + pk*x_inv; + double D, C; + double df; + + *fcl_sign = 1.0; + *count = 0; + + if(fabs(F) < CF1_small) F = CF1_small; + D = 0.0; + C = F; + + do { + double pk1 = pk + 1.0; + double ek = eta / pk; + double rk2 = 1.0 + ek*ek; + double tk = (pk + pk1)*(x_inv + ek/pk1); + D = tk - rk2 * D; + C = tk - rk2 / C; + if(fabs(C) < CF1_small) C = CF1_small; + if(fabs(D) < CF1_small) D = CF1_small; + D = 1.0/D; + df = D * C; + F = F * df; + if(D < 0.0) { + /* sign of result depends on sign of denominator */ + *fcl_sign = - *fcl_sign; + } + pk = pk1; + if( pk > px ) { + *result = F; + GSL_ERROR ("error", GSL_ERUNAWAY); + } + ++(*count); + } + while(fabs(df-1.0) > CF1_acc); + + *result = F; + return GSL_SUCCESS; +} + + +#if 0 +static +int +old_coulomb_CF1(const double lambda, + double eta, double x, + double * fcl_sign, + double * result + ) +{ + const double CF1_abort = 1.e5; + const double CF1_acc = 10.0*GSL_DBL_EPSILON; + const double x_inv = 1.0/x; + const double px = lambda + 1.0 + CF1_abort; + + double pk = lambda + 1.0; + + double D; + double df; + + double F; + double p; + double pk1; + double ek; + + double fcl = 1.0; + + double tk; + + while(1) { + ek = eta/pk; + F = (ek + pk*x_inv)*fcl + (fcl - 1.0)*x_inv; + pk1 = pk + 1.0; + if(fabs(eta*x + pk*pk1) > CF1_acc) break; + fcl = (1.0 + ek*ek)/(1.0 + eta*eta/(pk1*pk1)); + pk = 2.0 + pk; + } + + D = 1.0/((pk + pk1)*(x_inv + ek/pk1)); + df = -fcl*(1.0 + ek*ek)*D; + + if(fcl != 1.0) fcl = -1.0; + if(D < 0.0) fcl = -fcl; + + F = F + df; + + p = 1.0; + do { + pk = pk1; + pk1 = pk + 1.0; + ek = eta / pk; + tk = (pk + pk1)*(x_inv + ek/pk1); + D = tk - D*(1.0+ek*ek); + if(fabs(D) < sqrt(CF1_acc)) { + p += 1.0; + if(p > 2.0) { + printf("HELP............\n"); + } + } + D = 1.0/D; + if(D < 0.0) { + /* sign of result depends on sign of denominator */ + fcl = -fcl; + } + df = df*(D*tk - 1.0); + F = F + df; + if( pk > px ) { + GSL_ERROR ("error", GSL_ERUNAWAY); + } + } + while(fabs(df) > fabs(F)*CF1_acc); + + *fcl_sign = fcl; + *result = F; + return GSL_SUCCESS; +} +#endif /* 0 */ + + +/* Evaluate the second continued fraction to + * obtain the ratio + * (G' + i F')/(G + i F) := P + i Q + * at the specified lambda value. + */ +static +int +coulomb_CF2(const double lambda, const double eta, const double x, + double * result_P, double * result_Q, int * count + ) +{ + int status = GSL_SUCCESS; + + const double CF2_acc = 4.0*GSL_DBL_EPSILON; + const double CF2_abort = 2.0e+05; + + const double wi = 2.0*eta; + const double x_inv = 1.0/x; + const double e2mm1 = eta*eta + lambda*(lambda + 1.0); + + double ar = -e2mm1; + double ai = eta; + + double br = 2.0*(x - eta); + double bi = 2.0; + + double dr = br/(br*br + bi*bi); + double di = -bi/(br*br + bi*bi); + + double dp = -x_inv*(ar*di + ai*dr); + double dq = x_inv*(ar*dr - ai*di); + + double A, B, C, D; + + double pk = 0.0; + double P = 0.0; + double Q = 1.0 - eta*x_inv; + + *count = 0; + + do { + P += dp; + Q += dq; + pk += 2.0; + ar += pk; + ai += wi; + bi += 2.0; + D = ar*dr - ai*di + br; + di = ai*dr + ar*di + bi; + C = 1.0/(D*D + di*di); + dr = C*D; + di = -C*di; + A = br*dr - bi*di - 1.; + B = bi*dr + br*di; + C = dp*A - dq*B; + dq = dp*B + dq*A; + dp = C; + if(pk > CF2_abort) { + status = GSL_ERUNAWAY; + break; + } + ++(*count); + } + while(fabs(dp)+fabs(dq) > (fabs(P)+fabs(Q))*CF2_acc); + + if(Q < CF2_abort*GSL_DBL_EPSILON*fabs(P)) { + status = GSL_ELOSS; + } + + *result_P = P; + *result_Q = Q; + return status; +} + + +/* WKB evaluation of F, G. Assumes 0 < x < turning point. + * Overflows are trapped, GSL_EOVRFLW is signalled, + * and an exponent is returned such that: + * + * result_F = fjwkb * exp(-exponent) + * result_G = gjwkb * exp( exponent) + * + * See [Biedenharn et al. Phys. Rev. 97, 542-554 (1955), Section IV] + * + * Unfortunately, this is not very accurate in general. The + * test cases typically have 3-4 digits of precision. One could + * argue that this is ok for general use because, for instance, + * F is exponentially small in this region and so the absolute + * accuracy is still roughly acceptable. But it would be better + * to have a systematic method for improving the precision. See + * the Abad+Sesma method discussion below. + */ +static +int +coulomb_jwkb(const double lam, const double eta, const double x, + gsl_sf_result * fjwkb, gsl_sf_result * gjwkb, + double * exponent) +{ + const double llp1 = lam*(lam+1.0) + 6.0/35.0; + const double llp1_eff = GSL_MAX(llp1, 0.0); + const double rho_ghalf = sqrt(x*(2.0*eta - x) + llp1_eff); + const double sinh_arg = sqrt(llp1_eff/(eta*eta+llp1_eff)) * rho_ghalf / x; + const double sinh_inv = log(sinh_arg + hypot(1.0,sinh_arg)); + + const double phi = fabs(rho_ghalf - eta*atan2(rho_ghalf,x-eta) - sqrt(llp1_eff) * sinh_inv); + + const double zeta_half = pow(3.0*phi/2.0, 1.0/3.0); + const double prefactor = sqrt(M_PI*phi*x/(6.0 * rho_ghalf)); + + double F = prefactor * 3.0/zeta_half; + double G = prefactor * 3.0/zeta_half; /* Note the sqrt(3) from Bi normalization */ + double F_exp; + double G_exp; + + const double airy_scale_exp = phi; + gsl_sf_result ai; + gsl_sf_result bi; + gsl_sf_airy_Ai_scaled_e(zeta_half*zeta_half, GSL_MODE_DEFAULT, &ai); + gsl_sf_airy_Bi_scaled_e(zeta_half*zeta_half, GSL_MODE_DEFAULT, &bi); + F *= ai.val; + G *= bi.val; + F_exp = log(F) - airy_scale_exp; + G_exp = log(G) + airy_scale_exp; + + if(G_exp >= GSL_LOG_DBL_MAX) { + fjwkb->val = F; + gjwkb->val = G; + fjwkb->err = 1.0e-3 * fabs(F); /* FIXME: real error here ... could be smaller */ + gjwkb->err = 1.0e-3 * fabs(G); + *exponent = airy_scale_exp; + GSL_ERROR ("error", GSL_EOVRFLW); + } + else { + fjwkb->val = exp(F_exp); + gjwkb->val = exp(G_exp); + fjwkb->err = 1.0e-3 * fabs(fjwkb->val); + gjwkb->err = 1.0e-3 * fabs(gjwkb->val); + *exponent = 0.0; + return GSL_SUCCESS; + } +} + + +/* Asymptotic evaluation of F and G below the minimal turning point. + * + * This is meant to be a drop-in replacement for coulomb_jwkb(). + * It uses the expressions in [Abad+Sesma]. This requires some + * work because I am not sure where it is valid. They mumble + * something about |x| < |lam|^(-1/2) or 8|eta x| > lam when |x| < 1. + * This seems true, but I thought the result was based on a uniform + * expansion and could be controlled by simply using more terms. + */ +#if 0 +static +int +coulomb_AS_xlt2eta(const double lam, const double eta, const double x, + gsl_sf_result * f_AS, gsl_sf_result * g_AS, + double * exponent) +{ + /* no time to do this now... */ +} +#endif /* 0 */ + + + +/*-*-*-*-*-*-*-*-*-*-*-* Functions with Error Codes *-*-*-*-*-*-*-*-*-*-*-*/ + +int +gsl_sf_coulomb_wave_FG_e(const double eta, const double x, + const double lam_F, + const int k_lam_G, /* lam_G = lam_F - k_lam_G */ + gsl_sf_result * F, gsl_sf_result * Fp, + gsl_sf_result * G, gsl_sf_result * Gp, + double * exp_F, double * exp_G) +{ + const double lam_G = lam_F - k_lam_G; + + if(x < 0.0 || lam_F <= -0.5 || lam_G <= -0.5) { + GSL_SF_RESULT_SET(F, 0.0, 0.0); + GSL_SF_RESULT_SET(Fp, 0.0, 0.0); + GSL_SF_RESULT_SET(G, 0.0, 0.0); + GSL_SF_RESULT_SET(Gp, 0.0, 0.0); + *exp_F = 0.0; + *exp_G = 0.0; + GSL_ERROR ("domain error", GSL_EDOM); + } + else if(x == 0.0) { + gsl_sf_result C0; + CLeta(0.0, eta, &C0); + GSL_SF_RESULT_SET(F, 0.0, 0.0); + GSL_SF_RESULT_SET(Fp, 0.0, 0.0); + GSL_SF_RESULT_SET(G, 0.0, 0.0); /* FIXME: should be Inf */ + GSL_SF_RESULT_SET(Gp, 0.0, 0.0); /* FIXME: should be Inf */ + *exp_F = 0.0; + *exp_G = 0.0; + if(lam_F == 0.0){ + GSL_SF_RESULT_SET(Fp, C0.val, C0.err); + } + if(lam_G == 0.0) { + GSL_SF_RESULT_SET(Gp, 1.0/C0.val, fabs(C0.err/C0.val)/fabs(C0.val)); + } + GSL_ERROR ("domain error", GSL_EDOM); + /* After all, since we are asking for G, this is a domain error... */ + } + else if(x < 1.2 && 2.0*M_PI*eta < 0.9*(-GSL_LOG_DBL_MIN) && fabs(eta*x) < 10.0) { + /* Reduce to a small lambda value and use the series + * representations for F and G. We cannot allow eta to + * be large and positive because the connection formula + * for G_lam is badly behaved due to an underflow in sin(phi_lam) + * [see coulomb_FG_series() and coulomb_connection() above]. + * Note that large negative eta is ok however. + */ + const double SMALL = GSL_SQRT_DBL_EPSILON; + const int N = (int)(lam_F + 0.5); + const int span = GSL_MAX(k_lam_G, N); + const double lam_min = lam_F - N; /* -1/2 <= lam_min < 1/2 */ + double F_lam_F, Fp_lam_F; + double G_lam_G, Gp_lam_G; + double F_lam_F_err, Fp_lam_F_err; + double Fp_over_F_lam_F; + double F_sign_lam_F; + double F_lam_min_unnorm, Fp_lam_min_unnorm; + double Fp_over_F_lam_min; + gsl_sf_result F_lam_min; + gsl_sf_result G_lam_min, Gp_lam_min; + double F_scale; + double Gerr_frac; + double F_scale_frac_err; + double F_unnorm_frac_err; + + /* Determine F'/F at lam_F. */ + int CF1_count; + int stat_CF1 = coulomb_CF1(lam_F, eta, x, &F_sign_lam_F, &Fp_over_F_lam_F, &CF1_count); + + int stat_ser; + int stat_Fr; + int stat_Gr; + + /* Recurse down with unnormalized F,F' values. */ + F_lam_F = SMALL; + Fp_lam_F = Fp_over_F_lam_F * F_lam_F; + if(span != 0) { + stat_Fr = coulomb_F_recur(lam_min, span, eta, x, + F_lam_F, Fp_lam_F, + &F_lam_min_unnorm, &Fp_lam_min_unnorm + ); + } + else { + F_lam_min_unnorm = F_lam_F; + Fp_lam_min_unnorm = Fp_lam_F; + stat_Fr = GSL_SUCCESS; + } + + /* Determine F and G at lam_min. */ + if(lam_min == -0.5) { + stat_ser = coulomb_FGmhalf_series(eta, x, &F_lam_min, &G_lam_min); + } + else if(lam_min == 0.0) { + stat_ser = coulomb_FG0_series(eta, x, &F_lam_min, &G_lam_min); + } + else if(lam_min == 0.5) { + /* This cannot happen. */ + F->val = F_lam_F; + F->err = 2.0 * GSL_DBL_EPSILON * fabs(F->val); + Fp->val = Fp_lam_F; + Fp->err = 2.0 * GSL_DBL_EPSILON * fabs(Fp->val); + G->val = G_lam_G; + G->err = 2.0 * GSL_DBL_EPSILON * fabs(G->val); + Gp->val = Gp_lam_G; + Gp->err = 2.0 * GSL_DBL_EPSILON * fabs(Gp->val); + *exp_F = 0.0; + *exp_G = 0.0; + GSL_ERROR ("error", GSL_ESANITY); + } + else { + stat_ser = coulomb_FG_series(lam_min, eta, x, &F_lam_min, &G_lam_min); + } + + /* Determine remaining quantities. */ + Fp_over_F_lam_min = Fp_lam_min_unnorm / F_lam_min_unnorm; + Gp_lam_min.val = Fp_over_F_lam_min*G_lam_min.val - 1.0/F_lam_min.val; + Gp_lam_min.err = fabs(Fp_over_F_lam_min)*G_lam_min.err; + Gp_lam_min.err += fabs(1.0/F_lam_min.val) * fabs(F_lam_min.err/F_lam_min.val); + F_scale = F_lam_min.val / F_lam_min_unnorm; + + /* Apply scale to the original F,F' values. */ + F_scale_frac_err = fabs(F_lam_min.err/F_lam_min.val); + F_unnorm_frac_err = 2.0*GSL_DBL_EPSILON*(CF1_count+span+1); + F_lam_F *= F_scale; + F_lam_F_err = fabs(F_lam_F) * (F_unnorm_frac_err + F_scale_frac_err); + Fp_lam_F *= F_scale; + Fp_lam_F_err = fabs(Fp_lam_F) * (F_unnorm_frac_err + F_scale_frac_err); + + /* Recurse up to get the required G,G' values. */ + stat_Gr = coulomb_G_recur(lam_min, GSL_MAX(N-k_lam_G,0), eta, x, + G_lam_min.val, Gp_lam_min.val, + &G_lam_G, &Gp_lam_G + ); + + F->val = F_lam_F; + F->err = F_lam_F_err; + F->err += 2.0 * GSL_DBL_EPSILON * fabs(F_lam_F); + + Fp->val = Fp_lam_F; + Fp->err = Fp_lam_F_err; + Fp->err += 2.0 * GSL_DBL_EPSILON * fabs(Fp_lam_F); + + Gerr_frac = fabs(G_lam_min.err/G_lam_min.val) + fabs(Gp_lam_min.err/Gp_lam_min.val); + + G->val = G_lam_G; + G->err = Gerr_frac * fabs(G_lam_G); + G->err += 2.0 * (CF1_count+1) * GSL_DBL_EPSILON * fabs(G->val); + + Gp->val = Gp_lam_G; + Gp->err = Gerr_frac * fabs(Gp->val); + Gp->err += 2.0 * (CF1_count+1) * GSL_DBL_EPSILON * fabs(Gp->val); + + *exp_F = 0.0; + *exp_G = 0.0; + + return GSL_ERROR_SELECT_4(stat_ser, stat_CF1, stat_Fr, stat_Gr); + } + else if(x < 2.0*eta) { + /* Use WKB approximation to obtain F and G at the two + * lambda values, and use the Wronskian and the + * continued fractions for F'/F to obtain F' and G'. + */ + gsl_sf_result F_lam_F, G_lam_F; + gsl_sf_result F_lam_G, G_lam_G; + double exp_lam_F, exp_lam_G; + int stat_lam_F; + int stat_lam_G; + int stat_CF1_lam_F; + int stat_CF1_lam_G; + int CF1_count; + double Fp_over_F_lam_F; + double Fp_over_F_lam_G; + double F_sign_lam_F; + double F_sign_lam_G; + + stat_lam_F = coulomb_jwkb(lam_F, eta, x, &F_lam_F, &G_lam_F, &exp_lam_F); + if(k_lam_G == 0) { + stat_lam_G = stat_lam_F; + F_lam_G = F_lam_F; + G_lam_G = G_lam_F; + exp_lam_G = exp_lam_F; + } + else { + stat_lam_G = coulomb_jwkb(lam_G, eta, x, &F_lam_G, &G_lam_G, &exp_lam_G); + } + + stat_CF1_lam_F = coulomb_CF1(lam_F, eta, x, &F_sign_lam_F, &Fp_over_F_lam_F, &CF1_count); + if(k_lam_G == 0) { + stat_CF1_lam_G = stat_CF1_lam_F; + F_sign_lam_G = F_sign_lam_F; + Fp_over_F_lam_G = Fp_over_F_lam_F; + } + else { + stat_CF1_lam_G = coulomb_CF1(lam_G, eta, x, &F_sign_lam_G, &Fp_over_F_lam_G, &CF1_count); + } + + F->val = F_lam_F.val; + F->err = F_lam_F.err; + + G->val = G_lam_G.val; + G->err = G_lam_G.err; + + Fp->val = Fp_over_F_lam_F * F_lam_F.val; + Fp->err = fabs(Fp_over_F_lam_F) * F_lam_F.err; + Fp->err += 2.0*GSL_DBL_EPSILON*fabs(Fp->val); + + Gp->val = Fp_over_F_lam_G * G_lam_G.val - 1.0/F_lam_G.val; + Gp->err = fabs(Fp_over_F_lam_G) * G_lam_G.err; + Gp->err += fabs(1.0/F_lam_G.val) * fabs(F_lam_G.err/F_lam_G.val); + + *exp_F = exp_lam_F; + *exp_G = exp_lam_G; + + if(stat_lam_F == GSL_EOVRFLW || stat_lam_G == GSL_EOVRFLW) { + GSL_ERROR ("overflow", GSL_EOVRFLW); + } + else { + return GSL_ERROR_SELECT_2(stat_lam_F, stat_lam_G); + } + } + else { + /* x > 2 eta, so we know that we can find a lambda value such + * that x is above the turning point. We do this, evaluate + * using Steed's method at that oscillatory point, then + * use recursion on F and G to obtain the required values. + * + * lam_0 = a value of lambda such that x is below the turning point + * lam_min = minimum of lam_0 and the requested lam_G, since + * we must go at least as low as lam_G + */ + const double SMALL = GSL_SQRT_DBL_EPSILON; + const double C = sqrt(1.0 + 4.0*x*(x-2.0*eta)); + const int N = ceil(lam_F - C + 0.5); + const double lam_0 = lam_F - GSL_MAX(N, 0); + const double lam_min = GSL_MIN(lam_0, lam_G); + double F_lam_F, Fp_lam_F; + double G_lam_G, Gp_lam_G; + double F_lam_min_unnorm, Fp_lam_min_unnorm; + double F_lam_min, Fp_lam_min; + double G_lam_min, Gp_lam_min; + double Fp_over_F_lam_F; + double Fp_over_F_lam_min; + double F_sign_lam_F, F_sign_lam_min; + double P_lam_min, Q_lam_min; + double alpha; + double gamma; + double F_scale; + + int CF1_count; + int CF2_count; + int stat_CF1 = coulomb_CF1(lam_F, eta, x, &F_sign_lam_F, &Fp_over_F_lam_F, &CF1_count); + int stat_CF2; + int stat_Fr; + int stat_Gr; + + int F_recur_count; + int G_recur_count; + + double err_amplify; + + F_lam_F = F_sign_lam_F * SMALL; /* unnormalized */ + Fp_lam_F = Fp_over_F_lam_F * F_lam_F; + + /* Backward recurrence to get F,Fp at lam_min */ + F_recur_count = GSL_MAX(k_lam_G, N); + stat_Fr = coulomb_F_recur(lam_min, F_recur_count, eta, x, + F_lam_F, Fp_lam_F, + &F_lam_min_unnorm, &Fp_lam_min_unnorm + ); + Fp_over_F_lam_min = Fp_lam_min_unnorm / F_lam_min_unnorm; + + /* Steed evaluation to complete evaluation of F,Fp,G,Gp at lam_min */ + stat_CF2 = coulomb_CF2(lam_min, eta, x, &P_lam_min, &Q_lam_min, &CF2_count); + alpha = Fp_over_F_lam_min - P_lam_min; + gamma = alpha/Q_lam_min; + + F_sign_lam_min = GSL_SIGN(F_lam_min_unnorm) ; + + F_lam_min = F_sign_lam_min / sqrt(alpha*alpha/Q_lam_min + Q_lam_min); + Fp_lam_min = Fp_over_F_lam_min * F_lam_min; + G_lam_min = gamma * F_lam_min; + Gp_lam_min = (P_lam_min * gamma - Q_lam_min) * F_lam_min; + + /* Apply scale to values of F,Fp at lam_F (the top). */ + F_scale = F_lam_min / F_lam_min_unnorm; + F_lam_F *= F_scale; + Fp_lam_F *= F_scale; + + /* Forward recurrence to get G,Gp at lam_G (the top). */ + G_recur_count = GSL_MAX(N-k_lam_G,0); + stat_Gr = coulomb_G_recur(lam_min, G_recur_count, eta, x, + G_lam_min, Gp_lam_min, + &G_lam_G, &Gp_lam_G + ); + + err_amplify = CF1_count + CF2_count + F_recur_count + G_recur_count + 1; + + F->val = F_lam_F; + F->err = 8.0*err_amplify*GSL_DBL_EPSILON * fabs(F->val); + + Fp->val = Fp_lam_F; + Fp->err = 8.0*err_amplify*GSL_DBL_EPSILON * fabs(Fp->val); + + G->val = G_lam_G; + G->err = 8.0*err_amplify*GSL_DBL_EPSILON * fabs(G->val); + + Gp->val = Gp_lam_G; + Gp->err = 8.0*err_amplify*GSL_DBL_EPSILON * fabs(Gp->val); + + *exp_F = 0.0; + *exp_G = 0.0; + + return GSL_ERROR_SELECT_4(stat_CF1, stat_CF2, stat_Fr, stat_Gr); + } +} + + +int +gsl_sf_coulomb_wave_F_array(double lam_min, int kmax, + double eta, double x, + double * fc_array, + double * F_exp) +{ + if(x == 0.0) { + int k; + *F_exp = 0.0; + for(k=0; k<=kmax; k++) { + fc_array[k] = 0.0; + } + if(lam_min == 0.0){ + gsl_sf_result f_0; + CLeta(0.0, eta, &f_0); + fc_array[0] = f_0.val; + } + return GSL_SUCCESS; + } + else { + const double x_inv = 1.0/x; + const double lam_max = lam_min + kmax; + gsl_sf_result F, Fp; + gsl_sf_result G, Gp; + double G_exp; + + int stat_FG = gsl_sf_coulomb_wave_FG_e(eta, x, lam_max, 0, + &F, &Fp, &G, &Gp, F_exp, &G_exp); + + double fcl = F.val; + double fpl = Fp.val; + double lam = lam_max; + int k; + + fc_array[kmax] = F.val; + + for(k=kmax-1; k>=0; k--) { + double el = eta/lam; + double rl = hypot(1.0, el); + double sl = el + lam*x_inv; + double fc_lm1 = (fcl*sl + fpl)/rl; + fc_array[k] = fc_lm1; + fpl = fc_lm1*sl - fcl*rl; + fcl = fc_lm1; + lam -= 1.0; + } + + return stat_FG; + } +} + + +int +gsl_sf_coulomb_wave_FG_array(double lam_min, int kmax, + double eta, double x, + double * fc_array, double * gc_array, + double * F_exp, double * G_exp) +{ + const double x_inv = 1.0/x; + const double lam_max = lam_min + kmax; + gsl_sf_result F, Fp; + gsl_sf_result G, Gp; + + int stat_FG = gsl_sf_coulomb_wave_FG_e(eta, x, lam_max, kmax, + &F, &Fp, &G, &Gp, F_exp, G_exp); + + double fcl = F.val; + double fpl = Fp.val; + double lam = lam_max; + int k; + + double gcl, gpl; + + fc_array[kmax] = F.val; + + for(k=kmax-1; k>=0; k--) { + double el = eta/lam; + double rl = hypot(1.0, el); + double sl = el + lam*x_inv; + double fc_lm1; + fc_lm1 = (fcl*sl + fpl)/rl; + fc_array[k] = fc_lm1; + fpl = fc_lm1*sl - fcl*rl; + fcl = fc_lm1; + lam -= 1.0; + } + + gcl = G.val; + gpl = Gp.val; + lam = lam_min + 1.0; + + gc_array[0] = G.val; + + for(k=1; k<=kmax; k++) { + double el = eta/lam; + double rl = hypot(1.0, el); + double sl = el + lam*x_inv; + double gcl1 = (sl*gcl - gpl)/rl; + gc_array[k] = gcl1; + gpl = rl*gcl - sl*gcl1; + gcl = gcl1; + lam += 1.0; + } + + return stat_FG; +} + + +int +gsl_sf_coulomb_wave_FGp_array(double lam_min, int kmax, + double eta, double x, + double * fc_array, double * fcp_array, + double * gc_array, double * gcp_array, + double * F_exp, double * G_exp) + +{ + const double x_inv = 1.0/x; + const double lam_max = lam_min + kmax; + gsl_sf_result F, Fp; + gsl_sf_result G, Gp; + + int stat_FG = gsl_sf_coulomb_wave_FG_e(eta, x, lam_max, kmax, + &F, &Fp, &G, &Gp, F_exp, G_exp); + + double fcl = F.val; + double fpl = Fp.val; + double lam = lam_max; + int k; + + double gcl, gpl; + + fc_array[kmax] = F.val; + fcp_array[kmax] = Fp.val; + + for(k=kmax-1; k>=0; k--) { + double el = eta/lam; + double rl = hypot(1.0, el); + double sl = el + lam*x_inv; + double fc_lm1; + fc_lm1 = (fcl*sl + fpl)/rl; + fc_array[k] = fc_lm1; + fpl = fc_lm1*sl - fcl*rl; + fcp_array[k] = fpl; + fcl = fc_lm1; + lam -= 1.0; + } + + gcl = G.val; + gpl = Gp.val; + lam = lam_min + 1.0; + + gc_array[0] = G.val; + gcp_array[0] = Gp.val; + + for(k=1; k<=kmax; k++) { + double el = eta/lam; + double rl = hypot(1.0, el); + double sl = el + lam*x_inv; + double gcl1 = (sl*gcl - gpl)/rl; + gc_array[k] = gcl1; + gpl = rl*gcl - sl*gcl1; + gcp_array[k] = gpl; + gcl = gcl1; + lam += 1.0; + } + + return stat_FG; +} + + +int +gsl_sf_coulomb_wave_sphF_array(double lam_min, int kmax, + double eta, double x, + double * fc_array, + double * F_exp) +{ + if(x < 0.0 || lam_min < -0.5) { + GSL_ERROR ("domain error", GSL_EDOM); + } + else if(x < 10.0/GSL_DBL_MAX) { + int k; + for(k=0; k<=kmax; k++) { + fc_array[k] = 0.0; + } + if(lam_min == 0.0) { + fc_array[0] = sqrt(C0sq(eta)); + } + *F_exp = 0.0; + if(x == 0.0) + return GSL_SUCCESS; + else + GSL_ERROR ("underflow", GSL_EUNDRFLW); + } + else { + int k; + int stat_F = gsl_sf_coulomb_wave_F_array(lam_min, kmax, + eta, x, + fc_array, + F_exp); + + for(k=0; k<=kmax; k++) { + fc_array[k] = fc_array[k] / x; + } + return stat_F; + } +} + + diff --git a/gsl-2.5/specfunc/coulomb.lo b/gsl-2.5/specfunc/coulomb.lo new file mode 100644 index 00000000..adab6f36 --- /dev/null +++ b/gsl-2.5/specfunc/coulomb.lo @@ -0,0 +1,12 @@ +# coulomb.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/coulomb.o' + +# Name of the non-PIC object +non_pic_object='coulomb.o' + diff --git a/gsl-2.5/specfunc/coulomb_bound.c b/gsl-2.5/specfunc/coulomb_bound.c new file mode 100644 index 00000000..097d0ba8 --- /dev/null +++ b/gsl-2.5/specfunc/coulomb_bound.c @@ -0,0 +1,120 @@ +/* specfunc/coulomb_bound.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ + +#include +#include +#include +#include +#include +#include +#include +#include + +#include "error.h" +#include "check.h" + +/* normalization for hydrogenic wave functions */ +static +int +R_norm(const int n, const int l, const double Z, gsl_sf_result * result) +{ + double A = 2.0*Z/n; + double pre = sqrt(A*A*A /(2.0*n)); + gsl_sf_result ln_a, ln_b; + gsl_sf_result ex; + int stat_a = gsl_sf_lnfact_e(n+l, &ln_a); + int stat_b = gsl_sf_lnfact_e(n-l-1, &ln_b); + double diff_val = 0.5*(ln_b.val - ln_a.val); + double diff_err = 0.5*(ln_b.err + ln_a.err) + GSL_DBL_EPSILON * fabs(diff_val); + int stat_e = gsl_sf_exp_err_e(diff_val, diff_err, &ex); + result->val = pre * ex.val; + result->err = pre * ex.err; + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_ERROR_SELECT_3(stat_e, stat_a, stat_b); +} + + +/*-*-*-*-*-*-*-*-*-*-*-* Functions with Error Codes *-*-*-*-*-*-*-*-*-*-*-*/ + +int +gsl_sf_hydrogenicR_1_e(const double Z, const double r, gsl_sf_result * result) +{ + if(Z > 0.0 && r >= 0.0) { + double A = 2.0*Z; + double norm = A*sqrt(Z); + double ea = exp(-Z*r); + result->val = norm*ea; + result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val) * fabs(Z*r); + CHECK_UNDERFLOW(result); + return GSL_SUCCESS; + } + else { + DOMAIN_ERROR(result); + } +} + + +int +gsl_sf_hydrogenicR_e(const int n, const int l, + const double Z, const double r, + gsl_sf_result * result) +{ + if(n < 1 || l > n-1 || Z <= 0.0 || r < 0.0) { + DOMAIN_ERROR(result); + } + else { + double A = 2.0*Z/n; + gsl_sf_result norm; + int stat_norm = R_norm(n, l, Z, &norm); + double rho = A*r; + double ea = exp(-0.5*rho); + double pp = gsl_sf_pow_int(rho, l); + gsl_sf_result lag; + int stat_lag = gsl_sf_laguerre_n_e(n-l-1, 2*l+1, rho, &lag); + double W_val = norm.val * ea * pp; + double W_err = norm.err * ea * pp; + W_err += norm.val * ((0.5*rho + 1.0) * GSL_DBL_EPSILON) * ea * pp; + W_err += norm.val * ea * ((l+1.0) * GSL_DBL_EPSILON) * pp; + result->val = W_val * lag.val; + result->err = W_val * lag.err + W_err * fabs(lag.val); + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + if ((l == 0 || (r > 0 && l > 0)) && lag.val != 0.0 + && stat_lag == GSL_SUCCESS && stat_norm == GSL_SUCCESS) { + CHECK_UNDERFLOW(result); + }; + return GSL_ERROR_SELECT_2(stat_lag, stat_norm); + } +} + +/*-*-*-*-*-*-*-*-*-* Functions w/ Natural Prototypes *-*-*-*-*-*-*-*-*-*-*/ + +#include "eval.h" + +double gsl_sf_hydrogenicR_1(const double Z, const double r) +{ + EVAL_RESULT(gsl_sf_hydrogenicR_1_e(Z, r, &result)); +} + + +double gsl_sf_hydrogenicR(const int n, const int l, const double Z, const double r) +{ + EVAL_RESULT(gsl_sf_hydrogenicR_e(n, l, Z, r, &result)); +} diff --git a/gsl-2.5/specfunc/coulomb_bound.lo b/gsl-2.5/specfunc/coulomb_bound.lo new file mode 100644 index 00000000..d8d1f0fd --- /dev/null +++ b/gsl-2.5/specfunc/coulomb_bound.lo @@ -0,0 +1,12 @@ +# coulomb_bound.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/coulomb_bound.o' + +# Name of the non-PIC object +non_pic_object='coulomb_bound.o' + diff --git a/gsl-2.5/specfunc/coupling.c b/gsl-2.5/specfunc/coupling.c new file mode 100644 index 00000000..04ada736 --- /dev/null +++ b/gsl-2.5/specfunc/coupling.c @@ -0,0 +1,460 @@ +/* specfunc/coupling.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ + +#include +#include +#include +#include +#include +#include +#include + +#include "error.h" + +inline +static +int locMax3(const int a, const int b, const int c) +{ + int d = GSL_MAX(a, b); + return GSL_MAX(d, c); +} + +inline +static +int locMin3(const int a, const int b, const int c) +{ + int d = GSL_MIN(a, b); + return GSL_MIN(d, c); +} + +inline +static +int locMin5(const int a, const int b, const int c, const int d, const int e) +{ + int f = GSL_MIN(a, b); + int g = GSL_MIN(c, d); + int h = GSL_MIN(f, g); + return GSL_MIN(e, h); +} + + +/* See: [Thompson, Atlas for Computing Mathematical Functions] */ + +static +int +delta(int ta, int tb, int tc, gsl_sf_result * d) +{ + gsl_sf_result f1, f2, f3, f4; + int status = 0; + status += gsl_sf_fact_e((ta + tb - tc)/2, &f1); + status += gsl_sf_fact_e((ta + tc - tb)/2, &f2); + status += gsl_sf_fact_e((tb + tc - ta)/2, &f3); + status += gsl_sf_fact_e((ta + tb + tc)/2 + 1, &f4); + if(status != 0) { + OVERFLOW_ERROR(d); + } + d->val = f1.val * f2.val * f3.val / f4.val; + d->err = 4.0 * GSL_DBL_EPSILON * fabs(d->val); + return GSL_SUCCESS; +} + + +static +int +triangle_selection_fails(int two_ja, int two_jb, int two_jc) +{ + /* + * enough to check the triangle condition for one spin vs. the other two + */ + return ( (two_jb < abs(two_ja - two_jc)) || (two_jb > two_ja + two_jc) || + GSL_IS_ODD(two_ja + two_jb + two_jc) ); +} + + +static +int +m_selection_fails(int two_ja, int two_jb, int two_jc, + int two_ma, int two_mb, int two_mc) +{ + return ( + abs(two_ma) > two_ja + || abs(two_mb) > two_jb + || abs(two_mc) > two_jc + || GSL_IS_ODD(two_ja + two_ma) + || GSL_IS_ODD(two_jb + two_mb) + || GSL_IS_ODD(two_jc + two_mc) + || (two_ma + two_mb + two_mc) != 0 + ); +} + + +/*-*-*-*-*-*-*-*-*-*-*-* Functions with Error Codes *-*-*-*-*-*-*-*-*-*-*-*/ + + +int +gsl_sf_coupling_3j_e (int two_ja, int two_jb, int two_jc, + int two_ma, int two_mb, int two_mc, + gsl_sf_result * result) +{ + /* CHECK_POINTER(result) */ + + if(two_ja < 0 || two_jb < 0 || two_jc < 0) { + DOMAIN_ERROR(result); + } + else if ( triangle_selection_fails(two_ja, two_jb, two_jc) + || m_selection_fails(two_ja, two_jb, two_jc, two_ma, two_mb, two_mc) + ) { + result->val = 0.0; + result->err = 0.0; + return GSL_SUCCESS; + } + else if ( two_ma == 0 && two_mb == 0 && two_mc == 0 + && ((two_ja + two_jb + two_jc) % 4 == 2) ) { + /* Special case for (ja jb jc; 0 0 0) = 0 when ja+jb+jc=odd */ + result->val = 0.0; + result->err = 0.0; + return GSL_SUCCESS; + } + else { + int jca = (-two_ja + two_jb + two_jc) / 2, + jcb = ( two_ja - two_jb + two_jc) / 2, + jcc = ( two_ja + two_jb - two_jc) / 2, + jmma = ( two_ja - two_ma) / 2, + jmmb = ( two_jb - two_mb) / 2, + jmmc = ( two_jc - two_mc) / 2, + jpma = ( two_ja + two_ma) / 2, + jpmb = ( two_jb + two_mb) / 2, + jpmc = ( two_jc + two_mc) / 2, + jsum = ( two_ja + two_jb + two_jc) / 2, + kmin = locMax3 (0, jpmb - jmmc, jmma - jpmc), + kmax = locMin3 (jcc, jmma, jpmb), + k, sign = GSL_IS_ODD (kmin - jpma + jmmb) ? -1 : 1, + status = 0; + double sum_pos = 0.0, sum_neg = 0.0, sum_err = 0.0; + gsl_sf_result bc1, bc2, bc3, bcn1, bcn2, bcd1, bcd2, bcd3, bcd4, term, lnorm; + + status += gsl_sf_lnchoose_e (two_ja, jcc , &bcn1); + status += gsl_sf_lnchoose_e (two_jb, jcc , &bcn2); + status += gsl_sf_lnchoose_e (jsum+1, jcc , &bcd1); + status += gsl_sf_lnchoose_e (two_ja, jmma, &bcd2); + status += gsl_sf_lnchoose_e (two_jb, jmmb, &bcd3); + status += gsl_sf_lnchoose_e (two_jc, jpmc, &bcd4); + + lnorm.val = 0.5 * (bcn1.val + bcn2.val - bcd1.val - bcd2.val - bcd3.val + - bcd4.val - log(two_jc + 1.0)); + lnorm.err = 0.5 * (bcn1.err + bcn2.err + bcd1.err + bcd2.err + bcd3.err + + bcd4.err + GSL_DBL_EPSILON * log(two_jc + 1.0)); + + for (k = kmin; k <= kmax; k++) { + status += gsl_sf_lnchoose_e (jcc, k, &bc1); + status += gsl_sf_lnchoose_e (jcb, jmma - k, &bc2); + status += gsl_sf_lnchoose_e (jca, jpmb - k, &bc3); + status += gsl_sf_exp_err_e(bc1.val + bc2.val + bc3.val + lnorm.val, + bc1.err + bc2.err + bc3.err + lnorm.err, + &term); + + if (status != 0) { + OVERFLOW_ERROR (result); + } + + if (sign < 0) { + sum_neg += term.val; + } else { + sum_pos += term.val; + } + + sum_err += term.err; + + sign = -sign; + } + + result->val = sum_pos - sum_neg; + result->err = sum_err; + result->err += 2.0 * GSL_DBL_EPSILON * (sum_pos + sum_neg); + result->err += 2.0 * GSL_DBL_EPSILON * (kmax - kmin) * fabs(result->val); + + return GSL_SUCCESS; + } +} + +#ifndef GSL_DISABLE_DEPRECATED + +int +gsl_sf_coupling_6j_INCORRECT_e(int two_ja, int two_jb, int two_jc, + int two_jd, int two_je, int two_jf, + gsl_sf_result * result) +{ + return gsl_sf_coupling_6j_e(two_ja, two_jb, two_je, two_jd, two_jc, two_jf, result); +} + +#endif + + +int +gsl_sf_coupling_6j_e(int two_ja, int two_jb, int two_jc, + int two_jd, int two_je, int two_jf, + gsl_sf_result * result) +{ + /* CHECK_POINTER(result) */ + + if( two_ja < 0 || two_jb < 0 || two_jc < 0 + || two_jd < 0 || two_je < 0 || two_jf < 0 + ) { + DOMAIN_ERROR(result); + } + else if( triangle_selection_fails(two_ja, two_jb, two_jc) + || triangle_selection_fails(two_ja, two_je, two_jf) + || triangle_selection_fails(two_jb, two_jd, two_jf) + || triangle_selection_fails(two_je, two_jd, two_jc) + ) { + result->val = 0.0; + result->err = 0.0; + return GSL_SUCCESS; + } + else { + gsl_sf_result n1; + gsl_sf_result d1, d2, d3, d4, d5, d6; + double norm; + int tk, tkmin, tkmax; + double phase; + double sum_pos = 0.0; + double sum_neg = 0.0; + double sumsq_err = 0.0; + int status = 0; + status += delta(two_ja, two_jb, two_jc, &d1); + status += delta(two_ja, two_je, two_jf, &d2); + status += delta(two_jb, two_jd, two_jf, &d3); + status += delta(two_je, two_jd, two_jc, &d4); + if(status != GSL_SUCCESS) { + OVERFLOW_ERROR(result); + } + norm = sqrt(d1.val) * sqrt(d2.val) * sqrt(d3.val) * sqrt(d4.val); + + tkmin = locMax3(0, + two_ja + two_jd - two_jc - two_jf, + two_jb + two_je - two_jc - two_jf); + + tkmax = locMin5(two_ja + two_jb + two_je + two_jd + 2, + two_ja + two_jb - two_jc, + two_je + two_jd - two_jc, + two_ja + two_je - two_jf, + two_jb + two_jd - two_jf); + + phase = GSL_IS_ODD((two_ja + two_jb + two_je + two_jd + tkmin)/2) + ? -1.0 + : 1.0; + + for(tk=tkmin; tk<=tkmax; tk += 2) { + double term; + double term_err; + gsl_sf_result den_1, den_2; + gsl_sf_result d1_a, d1_b; + status = 0; + + status += gsl_sf_fact_e((two_ja + two_jb + two_je + two_jd - tk)/2 + 1, &n1); + status += gsl_sf_fact_e(tk/2, &d1_a); + status += gsl_sf_fact_e((two_jc + two_jf - two_ja - two_jd + tk)/2, &d1_b); + status += gsl_sf_fact_e((two_jc + two_jf - two_jb - two_je + tk)/2, &d2); + status += gsl_sf_fact_e((two_ja + two_jb - two_jc - tk)/2, &d3); + status += gsl_sf_fact_e((two_je + two_jd - two_jc - tk)/2, &d4); + status += gsl_sf_fact_e((two_ja + two_je - two_jf - tk)/2, &d5); + status += gsl_sf_fact_e((two_jb + two_jd - two_jf - tk)/2, &d6); + + if(status != GSL_SUCCESS) { + OVERFLOW_ERROR(result); + } + + d1.val = d1_a.val * d1_b.val; + d1.err = d1_a.err * fabs(d1_b.val) + fabs(d1_a.val) * d1_b.err; + + den_1.val = d1.val*d2.val*d3.val; + den_1.err = d1.err * fabs(d2.val*d3.val); + den_1.err += d2.err * fabs(d1.val*d3.val); + den_1.err += d3.err * fabs(d1.val*d2.val); + + den_2.val = d4.val*d5.val*d6.val; + den_2.err = d4.err * fabs(d5.val*d6.val); + den_2.err += d5.err * fabs(d4.val*d6.val); + den_2.err += d6.err * fabs(d4.val*d5.val); + + term = phase * n1.val / den_1.val / den_2.val; + phase = -phase; + term_err = n1.err / fabs(den_1.val) / fabs(den_2.val); + term_err += fabs(term / den_1.val) * den_1.err; + term_err += fabs(term / den_2.val) * den_2.err; + + if(term >= 0.0) { + sum_pos += norm*term; + } + else { + sum_neg -= norm*term; + } + + sumsq_err += norm*norm * term_err*term_err; + } + + result->val = sum_pos - sum_neg; + result->err = 2.0 * GSL_DBL_EPSILON * (sum_pos + sum_neg); + result->err += sqrt(sumsq_err / (0.5*(tkmax-tkmin)+1.0)); + result->err += 2.0 * GSL_DBL_EPSILON * (tkmax - tkmin + 2.0) * fabs(result->val); + + return GSL_SUCCESS; + } +} + + +int +gsl_sf_coupling_RacahW_e(int two_ja, int two_jb, int two_jc, + int two_jd, int two_je, int two_jf, + gsl_sf_result * result) +{ + int status = gsl_sf_coupling_6j_e(two_ja, two_jb, two_je, two_jd, two_jc, two_jf, result); + int phase_sum = (two_ja + two_jb + two_jc + two_jd)/2; + result->val *= ( GSL_IS_ODD(phase_sum) ? -1.0 : 1.0 ); + return status; +} + + +int +gsl_sf_coupling_9j_e(int two_ja, int two_jb, int two_jc, + int two_jd, int two_je, int two_jf, + int two_jg, int two_jh, int two_ji, + gsl_sf_result * result) +{ + /* CHECK_POINTER(result) */ + + if( two_ja < 0 || two_jb < 0 || two_jc < 0 + || two_jd < 0 || two_je < 0 || two_jf < 0 + || two_jg < 0 || two_jh < 0 || two_ji < 0 + ) { + DOMAIN_ERROR(result); + } + else if( triangle_selection_fails(two_ja, two_jb, two_jc) + || triangle_selection_fails(two_jd, two_je, two_jf) + || triangle_selection_fails(two_jg, two_jh, two_ji) + || triangle_selection_fails(two_ja, two_jd, two_jg) + || triangle_selection_fails(two_jb, two_je, two_jh) + || triangle_selection_fails(two_jc, two_jf, two_ji) + ) { + result->val = 0.0; + result->err = 0.0; + return GSL_SUCCESS; + } + else { + int tk; + int tkmin = locMax3(abs(two_ja-two_ji), abs(two_jh-two_jd), abs(two_jb-two_jf)); + int tkmax = locMin3(two_ja + two_ji, two_jh + two_jd, two_jb + two_jf); + double sum_pos = 0.0; + double sum_neg = 0.0; + double sumsq_err = 0.0; + double phase; + for(tk=tkmin; tk<=tkmax; tk += 2) { + gsl_sf_result s1, s2, s3; + double term; + double term_err; + int status = 0; + + status += gsl_sf_coupling_6j_e(two_ja, two_ji, tk, two_jh, two_jd, two_jg, &s1); + status += gsl_sf_coupling_6j_e(two_jb, two_jf, tk, two_jd, two_jh, two_je, &s2); + status += gsl_sf_coupling_6j_e(two_ja, two_ji, tk, two_jf, two_jb, two_jc, &s3); + + if(status != GSL_SUCCESS) { + OVERFLOW_ERROR(result); + } + term = s1.val * s2.val * s3.val; + term_err = s1.err * fabs(s2.val*s3.val); + term_err += s2.err * fabs(s1.val*s3.val); + term_err += s3.err * fabs(s1.val*s2.val); + + if(term >= 0.0) { + sum_pos += (tk + 1) * term; + } + else { + sum_neg -= (tk + 1) * term; + } + + sumsq_err += ((tk+1) * term_err) * ((tk+1) * term_err); + } + + phase = GSL_IS_ODD(tkmin) ? -1.0 : 1.0; + + result->val = phase * (sum_pos - sum_neg); + result->err = 2.0 * GSL_DBL_EPSILON * (sum_pos + sum_neg); + result->err += sqrt(sumsq_err / (0.5*(tkmax-tkmin)+1.0)); + result->err += 2.0 * GSL_DBL_EPSILON * (tkmax-tkmin + 2.0) * fabs(result->val); + + return GSL_SUCCESS; + } +} + + +/*-*-*-*-*-*-*-*-*-* Functions w/ Natural Prototypes *-*-*-*-*-*-*-*-*-*-*/ + +#include "eval.h" + +double gsl_sf_coupling_3j(int two_ja, int two_jb, int two_jc, + int two_ma, int two_mb, int two_mc) +{ + EVAL_RESULT(gsl_sf_coupling_3j_e(two_ja, two_jb, two_jc, + two_ma, two_mb, two_mc, + &result)); +} + +#ifndef GSL_DISABLE_DEPRECATED + +double gsl_sf_coupling_6j_INCORRECT(int two_ja, int two_jb, int two_jc, + int two_jd, int two_je, int two_jf) +{ + EVAL_RESULT(gsl_sf_coupling_6j_INCORRECT_e(two_ja, two_jb, two_jc, + two_jd, two_je, two_jf, + &result)); +} + +#endif + + +double gsl_sf_coupling_6j(int two_ja, int two_jb, int two_jc, + int two_jd, int two_je, int two_jf) +{ + EVAL_RESULT(gsl_sf_coupling_6j_e(two_ja, two_jb, two_jc, + two_jd, two_je, two_jf, + &result)); +} + + +double gsl_sf_coupling_RacahW(int two_ja, int two_jb, int two_jc, + int two_jd, int two_je, int two_jf) +{ + EVAL_RESULT(gsl_sf_coupling_RacahW_e(two_ja, two_jb, two_jc, + two_jd, two_je, two_jf, + &result)); +} + + +double gsl_sf_coupling_9j(int two_ja, int two_jb, int two_jc, + int two_jd, int two_je, int two_jf, + int two_jg, int two_jh, int two_ji) +{ + EVAL_RESULT(gsl_sf_coupling_9j_e(two_ja, two_jb, two_jc, + two_jd, two_je, two_jf, + two_jg, two_jh, two_ji, + &result)); +} diff --git a/gsl-2.5/specfunc/coupling.lo b/gsl-2.5/specfunc/coupling.lo new file mode 100644 index 00000000..b3cf145b --- /dev/null +++ b/gsl-2.5/specfunc/coupling.lo @@ -0,0 +1,12 @@ +# coupling.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/coupling.o' + +# Name of the non-PIC object +non_pic_object='coupling.o' + diff --git a/gsl-2.5/specfunc/dawson.c b/gsl-2.5/specfunc/dawson.c new file mode 100644 index 00000000..478ab6e9 --- /dev/null +++ b/gsl-2.5/specfunc/dawson.c @@ -0,0 +1,281 @@ +/* specfunc/dawson.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ + +#include +#include +#include +#include + +#include "error.h" +#include "chebyshev.h" +#include "cheb_eval.c" + +/* Based on ddaws.f, Fullerton, W., (LANL) */ + + +/* Chebyshev expansions + + Series for DAW on the interval 0. to 1.00000E+00 + with weighted error 8.95E-32 + log weighted error 31.05 + significant figures required 30.41 + decimal places required 31.71 + + Series for DAW2 on the interval 0. to 1.60000E+01 + with weighted error 1.61E-32 + log weighted error 31.79 + significant figures required 31.40 + decimal places required 32.62 + + Series for DAWA on the interval 0. to 6.25000E-02 + with weighted error 1.97E-32 + log weighted error 31.71 + significant figures required 29.79 + decimal places required 32.64 +*/ +static double daw_data[21] = { + -0.6351734375145949201065127736293e-02, + -0.2294071479677386939899824125866e+00, + 0.2213050093908476441683979161786e-01, + -0.1549265453892985046743057753375e-02, + 0.8497327715684917456777542948066e-04, + -0.3828266270972014924994099521309e-05, + 0.1462854806250163197757148949539e-06, + -0.4851982381825991798846715425114e-08, + 0.1421463577759139790347568183304e-09, + -0.3728836087920596525335493054088e-11, + 0.8854942961778203370194565231369e-13, + -0.1920757131350206355421648417493e-14, + 0.3834325867246327588241074439253e-16, + -0.7089154168175881633584099327999e-18, + 0.1220552135889457674416901120000e-19, + -0.1966204826605348760299451733333e-21, + 0.2975845541376597189113173333333e-23, + -0.4247069514800596951039999999999e-25, + 0.5734270767391742798506666666666e-27, + -0.7345836823178450261333333333333e-29, + 0.8951937667516552533333333333333e-31 +}; +static cheb_series daw_cs = { + daw_data, + 15, /* 20, */ + -1, 1, + 9 +}; + +static double daw2_data[45] = { + -0.56886544105215527114160533733674e-01, + -0.31811346996168131279322878048822e+00, + 0.20873845413642236789741580198858e+00, + -0.12475409913779131214073498314784e+00, + 0.67869305186676777092847516423676e-01, + -0.33659144895270939503068230966587e-01, + 0.15260781271987971743682460381640e-01, + -0.63483709625962148230586094788535e-02, + 0.24326740920748520596865966109343e-02, + -0.86219541491065032038526983549637e-03, + 0.28376573336321625302857636538295e-03, + -0.87057549874170423699396581464335e-04, + 0.24986849985481658331800044137276e-04, + -0.67319286764160294344603050339520e-05, + 0.17078578785573543710504524047844e-05, + -0.40917551226475381271896592490038e-06, + 0.92828292216755773260751785312273e-07, + -0.19991403610147617829845096332198e-07, + 0.40963490644082195241210487868917e-08, + -0.80032409540993168075706781753561e-09, + 0.14938503128761465059143225550110e-09, + -0.26687999885622329284924651063339e-10, + 0.45712216985159458151405617724103e-11, + -0.75187305222043565872243727326771e-12, + 0.11893100052629681879029828987302e-12, + -0.18116907933852346973490318263084e-13, + 0.26611733684358969193001612199626e-14, + -0.37738863052129419795444109905930e-15, + 0.51727953789087172679680082229329e-16, + -0.68603684084077500979419564670102e-17, + 0.88123751354161071806469337321745e-18, + -0.10974248249996606292106299624652e-18, + 0.13261199326367178513595545891635e-19, + -0.15562732768137380785488776571562e-20, + 0.17751425583655720607833415570773e-21, + -0.19695006967006578384953608765439e-22, + 0.21270074896998699661924010120533e-23, + -0.22375398124627973794182113962666e-24, + 0.22942768578582348946971383125333e-25, + -0.22943788846552928693329592319999e-26, + 0.22391702100592453618342297600000e-27, + -0.21338230616608897703678225066666e-28, + 0.19866196585123531518028458666666e-29, + -0.18079295866694391771955199999999e-30, + 0.16090686015283030305450666666666e-31 +}; +static cheb_series daw2_cs = { + daw2_data, + 32, /* 44, */ + -1, 1, + 21 +}; + +static double dawa_data[75] = { + 0.1690485637765703755422637438849e-01, + 0.8683252278406957990536107850768e-02, + 0.2424864042417715453277703459889e-03, + 0.1261182399572690001651949240377e-04, + 0.1066453314636176955705691125906e-05, + 0.1358159794790727611348424505728e-06, + 0.2171042356577298398904312744743e-07, + 0.2867010501805295270343676804813e-08, + -0.1901336393035820112282492378024e-09, + -0.3097780484395201125532065774268e-09, + -0.1029414876057509247398132286413e-09, + -0.6260356459459576150417587283121e-11, + 0.8563132497446451216262303166276e-11, + 0.3033045148075659292976266276257e-11, + -0.2523618306809291372630886938826e-12, + -0.4210604795440664513175461934510e-12, + -0.4431140826646238312143429452036e-13, + 0.4911210272841205205940037065117e-13, + 0.1235856242283903407076477954739e-13, + -0.5788733199016569246955765071069e-14, + -0.2282723294807358620978183957030e-14, + 0.7637149411014126476312362917590e-15, + 0.3851546883566811728777594002095e-15, + -0.1199932056928290592803237283045e-15, + -0.6313439150094572347334270285250e-16, + 0.2239559965972975375254912790237e-16, + 0.9987925830076495995132891200749e-17, + -0.4681068274322495334536246507252e-17, + -0.1436303644349721337241628751534e-17, + 0.1020822731410541112977908032130e-17, + 0.1538908873136092072837389822372e-18, + -0.2189157877645793888894790926056e-18, + 0.2156879197938651750392359152517e-20, + 0.4370219827442449851134792557395e-19, + -0.8234581460977207241098927905177e-20, + -0.7498648721256466222903202835420e-20, + 0.3282536720735671610957612930039e-20, + 0.8858064309503921116076561515151e-21, + -0.9185087111727002988094460531485e-21, + 0.2978962223788748988314166045791e-22, + 0.1972132136618471883159505468041e-21, + -0.5974775596362906638089584995117e-22, + -0.2834410031503850965443825182441e-22, + 0.2209560791131554514777150489012e-22, + -0.5439955741897144300079480307711e-25, + -0.5213549243294848668017136696470e-23, + 0.1702350556813114199065671499076e-23, + 0.6917400860836148343022185660197e-24, + -0.6540941793002752512239445125802e-24, + 0.6093576580439328960371824654636e-25, + 0.1408070432905187461501945080272e-24, + -0.6785886121054846331167674943755e-25, + -0.9799732036214295711741583102225e-26, + 0.2121244903099041332598960939160e-25, + -0.5954455022548790938238802154487e-26, + -0.3093088861875470177838847232049e-26, + 0.2854389216344524682400691986104e-26, + -0.3951289447379305566023477271811e-27, + -0.5906000648607628478116840894453e-27, + 0.3670236964668687003647889980609e-27, + -0.4839958238042276256598303038941e-29, + -0.9799265984210443869597404017022e-28, + 0.4684773732612130606158908804300e-28, + 0.5030877696993461051647667603155e-29, + -0.1547395051706028239247552068295e-28, + 0.6112180185086419243976005662714e-29, + 0.1357913399124811650343602736158e-29, + -0.2417687752768673088385304299044e-29, + 0.8369074582074298945292887587291e-30, + 0.2665413042788979165838319401566e-30, + -0.3811653692354890336935691003712e-30, + 0.1230054721884951464371706872585e-30, + 0.4622506399041493508805536929983e-31, + -0.6120087296881677722911435593001e-31, + 0.1966024640193164686956230217896e-31 +}; +static cheb_series dawa_cs = { + dawa_data, + 34, /* 74, */ + -1, 1, + 12 +}; + + +/*-*-*-*-*-*-*-*-*-*-*-* Functions with Error Codes *-*-*-*-*-*-*-*-*-*-*-*/ + +int +gsl_sf_dawson_e(double x, gsl_sf_result * result) +{ + const double xsml = 1.225 * GSL_SQRT_DBL_EPSILON; + const double xbig = 1.0/(M_SQRT2*GSL_SQRT_DBL_EPSILON); + const double xmax = 0.1 * GSL_DBL_MAX; + + const double y = fabs(x); + + if(y < xsml) { + result->val = x; + result->err = 0.0; + return GSL_SUCCESS; + } + else if(y < 1.0) { + gsl_sf_result result_c; + cheb_eval_e(&daw_cs, 2.0*y*y - 1.0, &result_c); + result->val = x * (0.75 + result_c.val); + result->err = y * result_c.err; + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else if(y < 4.0) { + gsl_sf_result result_c; + cheb_eval_e(&daw2_cs, 0.125*y*y - 1.0, &result_c); + result->val = x * (0.25 + result_c.val); + result->err = y * result_c.err; + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else if(y < xbig) { + gsl_sf_result result_c; + cheb_eval_e(&dawa_cs, 32.0/(y*y) - 1.0, &result_c); + result->val = (0.5 + result_c.val) / x; + result->err = result_c.err / y; + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else if(y < xmax) { + result->val = 0.5/x; + result->err = 2.0 * GSL_DBL_EPSILON * result->val; + return GSL_SUCCESS; + } + else { + UNDERFLOW_ERROR(result); + } +} + + +/*-*-*-*-*-*-*-*-*-* Functions w/ Natural Prototypes *-*-*-*-*-*-*-*-*-*-*/ + +#include "eval.h" + +double gsl_sf_dawson(double x) +{ + EVAL_RESULT(gsl_sf_dawson_e(x, &result)); +} diff --git a/gsl-2.5/specfunc/dawson.lo b/gsl-2.5/specfunc/dawson.lo new file mode 100644 index 00000000..15678165 --- /dev/null +++ b/gsl-2.5/specfunc/dawson.lo @@ -0,0 +1,12 @@ +# dawson.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/dawson.o' + +# Name of the non-PIC object +non_pic_object='dawson.o' + diff --git a/gsl-2.5/specfunc/debye.c b/gsl-2.5/specfunc/debye.c new file mode 100644 index 00000000..02af95cb --- /dev/null +++ b/gsl-2.5/specfunc/debye.c @@ -0,0 +1,566 @@ +/* specfunc/debye.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ +/* augmented to n=5 and 6 2005-11-08 by R. J. Mathar, http://www.strw.leidenuniv.nl/~mathar */ + +#include +#include +#include +#include + +#include "error.h" +#include "check.h" + +#include "chebyshev.h" +#include "cheb_eval.c" + +static double adeb1_data[17] = { + 2.4006597190381410194, + 0.1937213042189360089, + -0.62329124554895770e-02, + 0.3511174770206480e-03, + -0.228222466701231e-04, + 0.15805467875030e-05, + -0.1135378197072e-06, + 0.83583361188e-08, + -0.6264424787e-09, + 0.476033489e-10, + -0.36574154e-11, + 0.2835431e-12, + -0.221473e-13, + 0.17409e-14, + -0.1376e-15, + 0.109e-16, + -0.9e-18 +}; +static cheb_series adeb1_cs = { + adeb1_data, + 16, + -1.0, 1.0, + 9 +}; + +static double adeb2_data[18] = { + 2.5943810232570770282, + 0.2863357204530719834, + -0.102062656158046713e-01, + 0.6049109775346844e-03, + -0.405257658950210e-04, + 0.28633826328811e-05, + -0.2086394303065e-06, + 0.155237875826e-07, + -0.11731280087e-08, + 0.897358589e-10, + -0.69317614e-11, + 0.5398057e-12, + -0.423241e-13, + 0.33378e-14, + -0.2645e-15, + 0.211e-16, + -0.17e-17, + 0.1e-18 +}; +static cheb_series adeb2_cs = { + adeb2_data, + 17, + -1.0, 1.0, + 10 +}; + +static double adeb3_data[17] = { + 2.707737068327440945, + 0.340068135211091751, + -0.12945150184440869e-01, + 0.7963755380173816e-03, + -0.546360009590824e-04, + 0.39243019598805e-05, + -0.2894032823539e-06, + 0.217317613962e-07, + -0.16542099950e-08, + 0.1272796189e-09, + -0.987963460e-11, + 0.7725074e-12, + -0.607797e-13, + 0.48076e-14, + -0.3820e-15, + 0.305e-16, + -0.24e-17 +}; +static cheb_series adeb3_cs = { + adeb3_data, + 16, + -1.0, 1.0, + 10 +}; + +static double adeb4_data[17] = { + 2.781869415020523460, + 0.374976783526892863, + -0.14940907399031583e-01, + 0.945679811437042e-03, + -0.66132916138933e-04, + 0.4815632982144e-05, + -0.3588083958759e-06, + 0.271601187416e-07, + -0.20807099122e-08, + 0.1609383869e-09, + -0.125470979e-10, + 0.9847265e-12, + -0.777237e-13, + 0.61648e-14, + -0.4911e-15, + 0.393e-16, + -0.32e-17 +}; +static cheb_series adeb4_cs = { + adeb4_data, + 16, + -1.0, 1.0, + 10 +}; + +static double adeb5_data[17] = { + 2.8340269546834530149, + 0.3994098857106266445, + -0.164566764773099646e-1, + 0.10652138340664541e-2, + -0.756730374875418e-4, + 0.55745985240273e-5, + -0.4190692330918e-6, + 0.319456143678e-7, + -0.24613318171e-8, + 0.1912801633e-9, + -0.149720049e-10, + 0.11790312e-11, + -0.933329e-13, + 0.74218e-14, + -0.5925e-15, + 0.475e-16, + -0.39e-17 +}; +static cheb_series adeb5_cs = { + adeb5_data, + 16, + -1.0, 1.0, + 10 +}; + +static double adeb6_data[17] = { + 2.8726727134130122113, + 0.4174375352339027746, + -0.176453849354067873e-1, + 0.11629852733494556e-2, + -0.837118027357117e-4, + 0.62283611596189e-5, + -0.4718644465636e-6, + 0.361950397806e-7, + -0.28030368010e-8, + 0.2187681983e-9, + -0.171857387e-10, + 0.13575809e-11, + -0.1077580e-12, + 0.85893e-14, + -0.6872e-15, + 0.552e-16, + -0.44e-17 +}; +static cheb_series adeb6_cs = { + adeb6_data, + 16, + -1.0, 1.0, + 10 +}; + + +/*-*-*-*-*-*-*-*-*-*-*-* Functions with Error Codes *-*-*-*-*-*-*-*-*-*-*-*/ + +int gsl_sf_debye_1_e(const double x, gsl_sf_result * result) +{ + const double val_infinity = 1.64493406684822644; + const double xcut = -GSL_LOG_DBL_MIN; + + /* CHECK_POINTER(result) */ + + if(x < 0.0) { + DOMAIN_ERROR(result); + } + else if(x < 2.0*GSL_SQRT_DBL_EPSILON) { + result->val = 1.0 - 0.25*x + x*x/36.0; + result->err = GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else if(x <= 4.0) { + const double t = x*x/8.0 - 1.0; + gsl_sf_result c; + cheb_eval_e(&adeb1_cs, t, &c); + result->val = c.val - 0.25 * x; + result->err = c.err + 0.25 * x * GSL_DBL_EPSILON; + return GSL_SUCCESS; + } + else if(x < -(M_LN2 + GSL_LOG_DBL_EPSILON)) { + const int nexp = floor(xcut/x); + const double ex = exp(-x); + double sum = 0.0; + double xk = nexp * x; + double rk = nexp; + int i; + for(i=nexp; i>=1; i--) { + sum *= ex; + sum += (1.0 + 1.0/xk)/rk; + rk -= 1.0; + xk -= x; + } + result->val = val_infinity/x - sum*ex; + result->err = GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else if(x < xcut) { + result->val = (val_infinity - exp(-x)*(x+1.0)) / x; + result->err = GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else { + result->val = val_infinity/x; + result->err = GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } +} + + +int gsl_sf_debye_2_e(const double x, gsl_sf_result * result) +{ + const double val_infinity = 4.80822761263837714; + const double xcut = -GSL_LOG_DBL_MIN; + + /* CHECK_POINTER(result) */ + + if(x < 0.0) { + DOMAIN_ERROR(result); + } + else if(x < 2.0*M_SQRT2*GSL_SQRT_DBL_EPSILON) { + result->val = 1.0 - x/3.0 + x*x/24.0; + result->err = GSL_DBL_EPSILON * result->val; + return GSL_SUCCESS; + } + else if(x <= 4.0) { + const double t = x*x/8.0 - 1.0; + gsl_sf_result c; + cheb_eval_e(&adeb2_cs, t, &c); + result->val = c.val - x/3.0; + result->err = c.err + GSL_DBL_EPSILON * x/3.0; + return GSL_SUCCESS; + } + else if(x < -(M_LN2 + GSL_LOG_DBL_EPSILON)) { + const int nexp = floor(xcut/x); + const double ex = exp(-x); + double xk = nexp * x; + double rk = nexp; + double sum = 0.0; + int i; + for(i=nexp; i>=1; i--) { + sum *= ex; + sum += (1.0 + 2.0/xk + 2.0/(xk*xk)) / rk; + rk -= 1.0; + xk -= x; + } + result->val = val_infinity/(x*x) - 2.0 * sum * ex; + result->err = GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else if(x < xcut) { + const double x2 = x*x; + const double sum = 2.0 + 2.0*x + x2; + result->val = (val_infinity - 2.0 * sum * exp(-x)) / x2; + result->err = GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else { + result->val = (val_infinity/x)/x; + result->err = GSL_DBL_EPSILON * result->val; + CHECK_UNDERFLOW(result); + return GSL_SUCCESS; + } +} + + +int gsl_sf_debye_3_e(const double x, gsl_sf_result * result) +{ + const double val_infinity = 19.4818182068004875; + const double xcut = -GSL_LOG_DBL_MIN; + + /* CHECK_POINTER(result) */ + + if(x < 0.0) { + DOMAIN_ERROR(result); + } + else if(x < 2.0*M_SQRT2*GSL_SQRT_DBL_EPSILON) { + result->val = 1.0 - 3.0*x/8.0 + x*x/20.0; + result->err = GSL_DBL_EPSILON * result->val; + return GSL_SUCCESS; + } + else if(x <= 4.0) { + const double t = x*x/8.0 - 1.0; + gsl_sf_result c; + cheb_eval_e(&adeb3_cs, t, &c); + result->val = c.val - 0.375*x; + result->err = c.err + GSL_DBL_EPSILON * 0.375*x; + return GSL_SUCCESS; + } + else if(x < -(M_LN2 + GSL_LOG_DBL_EPSILON)) { + const int nexp = floor(xcut/x); + const double ex = exp(-x); + double xk = nexp * x; + double rk = nexp; + double sum = 0.0; + int i; + for(i=nexp; i>=1; i--) { + double xk_inv = 1.0/xk; + sum *= ex; + sum += (((6.0*xk_inv + 6.0)*xk_inv + 3.0)*xk_inv + 1.0) / rk; + rk -= 1.0; + xk -= x; + } + result->val = val_infinity/(x*x*x) - 3.0 * sum * ex; + result->err = GSL_DBL_EPSILON * result->val; + return GSL_SUCCESS; + } + else if(x < xcut) { + const double x3 = x*x*x; + const double sum = 6.0 + 6.0*x + 3.0*x*x + x3; + result->val = (val_infinity - 3.0 * sum * exp(-x)) / x3; + result->err = GSL_DBL_EPSILON * result->val; + return GSL_SUCCESS; + } + else { + result->val = ((val_infinity/x)/x)/x; + result->err = GSL_DBL_EPSILON * result->val; + CHECK_UNDERFLOW(result); + return GSL_SUCCESS; + } +} + + +int gsl_sf_debye_4_e(const double x, gsl_sf_result * result) +{ + const double val_infinity = 99.5450644937635129; + const double xcut = -GSL_LOG_DBL_MIN; + + /* CHECK_POINTER(result) */ + + if(x < 0.0) { + DOMAIN_ERROR(result); + } + else if(x < 2.0*M_SQRT2*GSL_SQRT_DBL_EPSILON) { + result->val = 1.0 - 2.0*x/5.0 + x*x/18.0; + result->err = GSL_DBL_EPSILON * result->val; + return GSL_SUCCESS; + } + else if(x <= 4.0) { + const double t = x*x/8.0 - 1.0; + gsl_sf_result c; + cheb_eval_e(&adeb4_cs, t, &c); + result->val = c.val - 2.0*x/5.0; + result->err = c.err + GSL_DBL_EPSILON * 2.0*x/5.0; + return GSL_SUCCESS; + } + else if(x < -(M_LN2 + GSL_LOG_DBL_EPSILON)) { + const int nexp = floor(xcut/x); + const double ex = exp(-x); + double xk = nexp * x; + double rk = nexp; + double sum = 0.0; + int i; + for(i=nexp; i>=1; i--) { + double xk_inv = 1.0/xk; + sum *= ex; + sum += ((((24.0*xk_inv + 24.0)*xk_inv + 12.0)*xk_inv + 4.0)*xk_inv + 1.0) / rk; + rk -= 1.0; + xk -= x; + } + result->val = val_infinity/(x*x*x*x) - 4.0 * sum * ex; + result->err = GSL_DBL_EPSILON * result->val; + return GSL_SUCCESS; + } + else if(x < xcut) { + const double x2 = x*x; + const double x4 = x2*x2; + const double sum = 24.0 + 24.0*x + 12.0*x2 + 4.0*x2*x + x4; + result->val = (val_infinity - 4.0 * sum * exp(-x)) / x4; + result->err = GSL_DBL_EPSILON * result->val; + return GSL_SUCCESS; + } + else { + result->val = (((val_infinity/x)/x)/x)/x; + result->err = GSL_DBL_EPSILON * result->val; + CHECK_UNDERFLOW(result); + return GSL_SUCCESS; + } +} + +int gsl_sf_debye_5_e(const double x, gsl_sf_result * result) +{ + const double val_infinity = 610.405837190669483828710757875 ; + const double xcut = -GSL_LOG_DBL_MIN; + + /* CHECK_POINTER(result) */ + + if(x < 0.0) { + DOMAIN_ERROR(result); + } + else if(x < 2.0*M_SQRT2*GSL_SQRT_DBL_EPSILON) { + result->val = 1.0 - 5.0*x/12.0 + 5.0*x*x/84.0; + result->err = GSL_DBL_EPSILON * result->val; + return GSL_SUCCESS; + } + else if(x <= 4.0) { + const double t = x*x/8.0 - 1.0; + gsl_sf_result c; + cheb_eval_e(&adeb5_cs, t, &c); + result->val = c.val - 5.0*x/12.0; + result->err = c.err + GSL_DBL_EPSILON * 5.0*x/12.0; + return GSL_SUCCESS; + } + else if(x < -(M_LN2 + GSL_LOG_DBL_EPSILON)) { + const int nexp = floor(xcut/x); + const double ex = exp(-x); + double xk = nexp * x; + double rk = nexp; + double sum = 0.0; + int i; + for(i=nexp; i>=1; i--) { + double xk_inv = 1.0/xk; + sum *= ex; + sum += (((((120.0*xk_inv + 120.0)*xk_inv + 60.0)*xk_inv + 20.0)*xk_inv + 5.0)*xk_inv+ 1.0) / rk; + rk -= 1.0; + xk -= x; + } + result->val = val_infinity/(x*x*x*x*x) - 5.0 * sum * ex; + result->err = GSL_DBL_EPSILON * result->val; + return GSL_SUCCESS; + } + else if(x < xcut) { + const double x2 = x*x; + const double x4 = x2*x2; + const double x5 = x4*x; + const double sum = 120.0 + 120.0*x + 60.0*x2 + 20.0*x2*x + 5.0*x4 + x5; + result->val = (val_infinity - 5.0 * sum * exp(-x)) / x5; + result->err = GSL_DBL_EPSILON * result->val; + return GSL_SUCCESS; + } + else { + result->val = ((((val_infinity/x)/x)/x)/x)/x; + result->err = GSL_DBL_EPSILON * result->val; + CHECK_UNDERFLOW(result); + return GSL_SUCCESS; + } +} + +int gsl_sf_debye_6_e(const double x, gsl_sf_result * result) +{ + const double val_infinity = 4356.06887828990661194792541535 ; + const double xcut = -GSL_LOG_DBL_MIN; + + /* CHECK_POINTER(result) */ + + if(x < 0.0) { + DOMAIN_ERROR(result); + } + else if(x < 2.0*M_SQRT2*GSL_SQRT_DBL_EPSILON) { + result->val = 1.0 - 3.0*x/7.0 + x*x/16.0; + result->err = GSL_DBL_EPSILON * result->val; + return GSL_SUCCESS; + } + else if(x <= 4.0) { + const double t = x*x/8.0 - 1.0; + gsl_sf_result c; + cheb_eval_e(&adeb6_cs, t, &c); + result->val = c.val - 3.0*x/7.0; + result->err = c.err + GSL_DBL_EPSILON * 3.0*x/7.0; + return GSL_SUCCESS; + } + else if(x < -(M_LN2 + GSL_LOG_DBL_EPSILON)) { + const int nexp = floor(xcut/x); + const double ex = exp(-x); + double xk = nexp * x; + double rk = nexp; + double sum = 0.0; + int i; + for(i=nexp; i>=1; i--) { + double xk_inv = 1.0/xk; + sum *= ex; + sum += ((((((720.0*xk_inv + 720.0)*xk_inv + 360.0)*xk_inv + 120.0)*xk_inv + 30.0)*xk_inv+ 6.0)*xk_inv+ 1.0) / rk; + rk -= 1.0; + xk -= x; + } + result->val = val_infinity/(x*x*x*x*x*x) - 6.0 * sum * ex; + result->err = GSL_DBL_EPSILON * result->val; + return GSL_SUCCESS; + } + else if(x < xcut) { + const double x2 = x*x; + const double x4 = x2*x2; + const double x6 = x4*x2; + const double sum = 720.0 + 720.0*x + 360.0*x2 + 120.0*x2*x + 30.0*x4 + 6.0*x4*x +x6 ; + result->val = (val_infinity - 6.0 * sum * exp(-x)) / x6; + result->err = GSL_DBL_EPSILON * result->val; + return GSL_SUCCESS; + } + else { + result->val = (((((val_infinity/x)/x)/x)/x)/x)/x ; + result->err = GSL_DBL_EPSILON * result->val; + CHECK_UNDERFLOW(result); + return GSL_SUCCESS; + } +} + + +/*-*-*-*-*-*-*-*-*-* Functions w/ Natural Prototypes *-*-*-*-*-*-*-*-*-*-*/ + +#include "eval.h" + +double gsl_sf_debye_1(const double x) +{ + EVAL_RESULT(gsl_sf_debye_1_e(x, &result)); +} + +double gsl_sf_debye_2(const double x) +{ + EVAL_RESULT(gsl_sf_debye_2_e(x, &result)); +} + +double gsl_sf_debye_3(const double x) +{ + EVAL_RESULT(gsl_sf_debye_3_e(x, &result)); +} + +double gsl_sf_debye_4(const double x) +{ + EVAL_RESULT(gsl_sf_debye_4_e(x, &result)); +} + +double gsl_sf_debye_5(const double x) +{ + EVAL_RESULT(gsl_sf_debye_5_e(x, &result)); +} + +double gsl_sf_debye_6(const double x) +{ + EVAL_RESULT(gsl_sf_debye_6_e(x, &result)); +} diff --git a/gsl-2.5/specfunc/debye.lo b/gsl-2.5/specfunc/debye.lo new file mode 100644 index 00000000..5b0697ad --- /dev/null +++ b/gsl-2.5/specfunc/debye.lo @@ -0,0 +1,12 @@ +# debye.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/debye.o' + +# Name of the non-PIC object +non_pic_object='debye.o' + diff --git a/gsl-2.5/specfunc/dilog.c b/gsl-2.5/specfunc/dilog.c new file mode 100644 index 00000000..15586ef0 --- /dev/null +++ b/gsl-2.5/specfunc/dilog.c @@ -0,0 +1,662 @@ +/* specfunc/dilog.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2004 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ + +#include +#include +#include +#include +#include +#include +#include + + +/* Evaluate series for real dilog(x) + * Sum[ x^k / k^2, {k,1,Infinity}] + * + * Converges rapidly for |x| < 1/2. + */ +static +int +dilog_series_1(const double x, gsl_sf_result * result) +{ + const int kmax = 1000; + double sum = x; + double term = x; + int k; + for(k=2; kval = sum; + result->err = 2.0 * fabs(term); + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + + if(k == kmax) + GSL_ERROR ("error", GSL_EMAXITER); + else + return GSL_SUCCESS; +} + + +/* Compute the associated series + * + * sum_{k=1}{infty} r^k / (k^2 (k+1)) + * + * This is a series which appears in the one-step accelerated + * method, which splits out one elementary function from the + * full definition of Li_2(x). See below. + */ +static int +series_2(double r, gsl_sf_result * result) +{ + static const int kmax = 100; + double rk = r; + double sum = 0.5 * r; + int k; + for(k=2; k<10; k++) + { + double ds; + rk *= r; + ds = rk/(k*k*(k+1.0)); + sum += ds; + } + for(; kval = sum; + result->err = 2.0 * kmax * GSL_DBL_EPSILON * fabs(sum); + + return GSL_SUCCESS; +} + + +/* Compute Li_2(x) using the accelerated series representation. + * + * Li_2(x) = 1 + (1-x)ln(1-x)/x + series_2(x) + * + * assumes: -1 < x < 1 + */ +static int +dilog_series_2(double x, gsl_sf_result * result) +{ + const int stat_s3 = series_2(x, result); + double t; + if(x > 0.01) + t = (1.0 - x) * log(1.0-x) / x; + else + { + static const double c3 = 1.0/3.0; + static const double c4 = 1.0/4.0; + static const double c5 = 1.0/5.0; + static const double c6 = 1.0/6.0; + static const double c7 = 1.0/7.0; + static const double c8 = 1.0/8.0; + const double t68 = c6 + x*(c7 + x*c8); + const double t38 = c3 + x *(c4 + x *(c5 + x * t68)); + t = (x - 1.0) * (1.0 + x*(0.5 + x*t38)); + } + result->val += 1.0 + t; + result->err += 2.0 * GSL_DBL_EPSILON * fabs(t); + return stat_s3; +} + + +/* Calculates Li_2(x) for real x. Assumes x >= 0.0. + */ +static +int +dilog_xge0(const double x, gsl_sf_result * result) +{ + if(x > 2.0) { + gsl_sf_result ser; + const int stat_ser = dilog_series_2(1.0/x, &ser); + const double log_x = log(x); + const double t1 = M_PI*M_PI/3.0; + const double t2 = ser.val; + const double t3 = 0.5*log_x*log_x; + result->val = t1 - t2 - t3; + result->err = GSL_DBL_EPSILON * fabs(log_x) + ser.err; + result->err += GSL_DBL_EPSILON * (fabs(t1) + fabs(t2) + fabs(t3)); + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return stat_ser; + } + else if(x > 1.01) { + gsl_sf_result ser; + const int stat_ser = dilog_series_2(1.0 - 1.0/x, &ser); + const double log_x = log(x); + const double log_term = log_x * (log(1.0-1.0/x) + 0.5*log_x); + const double t1 = M_PI*M_PI/6.0; + const double t2 = ser.val; + const double t3 = log_term; + result->val = t1 + t2 - t3; + result->err = GSL_DBL_EPSILON * fabs(log_x) + ser.err; + result->err += GSL_DBL_EPSILON * (fabs(t1) + fabs(t2) + fabs(t3)); + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return stat_ser; + } + else if(x > 1.0) { + /* series around x = 1.0 */ + const double eps = x - 1.0; + const double lne = log(eps); + const double c0 = M_PI*M_PI/6.0; + const double c1 = 1.0 - lne; + const double c2 = -(1.0 - 2.0*lne)/4.0; + const double c3 = (1.0 - 3.0*lne)/9.0; + const double c4 = -(1.0 - 4.0*lne)/16.0; + const double c5 = (1.0 - 5.0*lne)/25.0; + const double c6 = -(1.0 - 6.0*lne)/36.0; + const double c7 = (1.0 - 7.0*lne)/49.0; + const double c8 = -(1.0 - 8.0*lne)/64.0; + result->val = c0+eps*(c1+eps*(c2+eps*(c3+eps*(c4+eps*(c5+eps*(c6+eps*(c7+eps*c8))))))); + result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else if(x == 1.0) { + result->val = M_PI*M_PI/6.0; + result->err = 2.0 * GSL_DBL_EPSILON * M_PI*M_PI/6.0; + return GSL_SUCCESS; + } + else if(x > 0.5) { + gsl_sf_result ser; + const int stat_ser = dilog_series_2(1.0-x, &ser); + const double log_x = log(x); + const double t1 = M_PI*M_PI/6.0; + const double t2 = ser.val; + const double t3 = log_x*log(1.0-x); + result->val = t1 - t2 - t3; + result->err = GSL_DBL_EPSILON * fabs(log_x) + ser.err; + result->err += GSL_DBL_EPSILON * (fabs(t1) + fabs(t2) + fabs(t3)); + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return stat_ser; + } + else if(x > 0.25) { + return dilog_series_2(x, result); + } + else if(x > 0.0) { + return dilog_series_1(x, result); + } + else { + /* x == 0.0 */ + result->val = 0.0; + result->err = 0.0; + return GSL_SUCCESS; + } +} + + +/* Evaluate the series representation for Li2(z): + * + * Li2(z) = Sum[ |z|^k / k^2 Exp[i k arg(z)], {k,1,Infinity}] + * |z| = r + * arg(z) = theta + * + * Assumes 0 < r < 1. + * It is used only for small r. + */ +static +int +dilogc_series_1( + const double r, + const double x, + const double y, + gsl_sf_result * real_result, + gsl_sf_result * imag_result + ) +{ + const double cos_theta = x/r; + const double sin_theta = y/r; + const double alpha = 1.0 - cos_theta; + const double beta = sin_theta; + double ck = cos_theta; + double sk = sin_theta; + double rk = r; + double real_sum = r*ck; + double imag_sum = r*sk; + const int kmax = 50 + (int)(22.0/(-log(r))); /* tuned for double-precision */ + int k; + for(k=2; kval = real_sum; + real_result->err = 2.0 * kmax * GSL_DBL_EPSILON * fabs(real_sum); + imag_result->val = imag_sum; + imag_result->err = 2.0 * kmax * GSL_DBL_EPSILON * fabs(imag_sum); + + return GSL_SUCCESS; +} + + +/* Compute + * + * sum_{k=1}{infty} z^k / (k^2 (k+1)) + * + * This is a series which appears in the one-step accelerated + * method, which splits out one elementary function from the + * full definition of Li_2. + */ +static int +series_2_c( + double r, + double x, + double y, + gsl_sf_result * sum_re, + gsl_sf_result * sum_im + ) +{ + const double cos_theta = x/r; + const double sin_theta = y/r; + const double alpha = 1.0 - cos_theta; + const double beta = sin_theta; + double ck = cos_theta; + double sk = sin_theta; + double rk = r; + double real_sum = 0.5 * r*ck; + double imag_sum = 0.5 * r*sk; + const int kmax = 30 + (int)(18.0/(-log(r))); /* tuned for double-precision */ + int k; + for(k=2; kval = real_sum; + sum_re->err = 2.0 * kmax * GSL_DBL_EPSILON * fabs(real_sum); + sum_im->val = imag_sum; + sum_im->err = 2.0 * kmax * GSL_DBL_EPSILON * fabs(imag_sum); + + return GSL_SUCCESS; +} + + +/* Compute Li_2(z) using the one-step accelerated series. + * + * Li_2(z) = 1 + (1-z)ln(1-z)/z + series_2_c(z) + * + * z = r exp(i theta) + * assumes: r < 1 + * assumes: r > epsilon, so that we take no special care with log(1-z) + */ +static +int +dilogc_series_2( + const double r, + const double x, + const double y, + gsl_sf_result * real_dl, + gsl_sf_result * imag_dl + ) +{ + if(r == 0.0) + { + real_dl->val = 0.0; + imag_dl->val = 0.0; + real_dl->err = 0.0; + imag_dl->err = 0.0; + return GSL_SUCCESS; + } + else + { + gsl_sf_result sum_re; + gsl_sf_result sum_im; + const int stat_s3 = series_2_c(r, x, y, &sum_re, &sum_im); + + /* t = ln(1-z)/z */ + gsl_sf_result ln_omz_r; + gsl_sf_result ln_omz_theta; + const int stat_log = gsl_sf_complex_log_e(1.0-x, -y, &ln_omz_r, &ln_omz_theta); + const double t_x = ( ln_omz_r.val * x + ln_omz_theta.val * y)/(r*r); + const double t_y = (-ln_omz_r.val * y + ln_omz_theta.val * x)/(r*r); + + /* r = (1-z) ln(1-z)/z */ + const double r_x = (1.0 - x) * t_x + y * t_y; + const double r_y = (1.0 - x) * t_y - y * t_x; + + real_dl->val = sum_re.val + r_x + 1.0; + imag_dl->val = sum_im.val + r_y; + real_dl->err = sum_re.err + 2.0*GSL_DBL_EPSILON*(fabs(real_dl->val) + fabs(r_x)); + imag_dl->err = sum_im.err + 2.0*GSL_DBL_EPSILON*(fabs(imag_dl->val) + fabs(r_y)); + return GSL_ERROR_SELECT_2(stat_s3, stat_log); + } +} + + +/* Evaluate a series for Li_2(z) when |z| is near 1. + * This is uniformly good away from z=1. + * + * Li_2(z) = Sum[ a^n/n! H_n(theta), {n, 0, Infinity}] + * + * where + * H_n(theta) = Sum[ e^(i m theta) m^n / m^2, {m, 1, Infinity}] + * a = ln(r) + * + * H_0(t) = Gl_2(t) + i Cl_2(t) + * H_1(t) = 1/2 ln(2(1-c)) + I atan2(-s, 1-c) + * H_2(t) = -1/2 + I/2 s/(1-c) + * H_3(t) = -1/2 /(1-c) + * H_4(t) = -I/2 s/(1-c)^2 + * H_5(t) = 1/2 (2 + c)/(1-c)^2 + * H_6(t) = I/2 s/(1-c)^5 (8(1-c) - s^2 (3 + c)) + */ +static +int +dilogc_series_3( + const double r, + const double x, + const double y, + gsl_sf_result * real_result, + gsl_sf_result * imag_result + ) +{ + const double theta = atan2(y, x); + const double cos_theta = x/r; + const double sin_theta = y/r; + const double a = log(r); + const double omc = 1.0 - cos_theta; + const double omc2 = omc*omc; + double H_re[7]; + double H_im[7]; + double an, nfact; + double sum_re, sum_im; + gsl_sf_result Him0; + int n; + + H_re[0] = M_PI*M_PI/6.0 + 0.25*(theta*theta - 2.0*M_PI*fabs(theta)); + gsl_sf_clausen_e(theta, &Him0); + H_im[0] = Him0.val; + + H_re[1] = -0.5*log(2.0*omc); + H_im[1] = -atan2(-sin_theta, omc); + + H_re[2] = -0.5; + H_im[2] = 0.5 * sin_theta/omc; + + H_re[3] = -0.5/omc; + H_im[3] = 0.0; + + H_re[4] = 0.0; + H_im[4] = -0.5*sin_theta/omc2; + + H_re[5] = 0.5 * (2.0 + cos_theta)/omc2; + H_im[5] = 0.0; + + H_re[6] = 0.0; + H_im[6] = 0.5 * sin_theta/(omc2*omc2*omc) * (8.0*omc - sin_theta*sin_theta*(3.0 + cos_theta)); + + sum_re = H_re[0]; + sum_im = H_im[0]; + an = 1.0; + nfact = 1.0; + for(n=1; n<=6; n++) { + double t; + an *= a; + nfact *= n; + t = an/nfact; + sum_re += t * H_re[n]; + sum_im += t * H_im[n]; + } + + real_result->val = sum_re; + real_result->err = 2.0 * 6.0 * GSL_DBL_EPSILON * fabs(sum_re) + fabs(an/nfact); + imag_result->val = sum_im; + imag_result->err = 2.0 * 6.0 * GSL_DBL_EPSILON * fabs(sum_im) + Him0.err + fabs(an/nfact); + + return GSL_SUCCESS; +} + + +/* Calculate complex dilogarithm Li_2(z) in the fundamental region, + * which we take to be the intersection of the unit disk with the + * half-space x < MAGIC_SPLIT_VALUE. It turns out that 0.732 is a + * nice choice for MAGIC_SPLIT_VALUE since then points mapped out + * of the x > MAGIC_SPLIT_VALUE region and into another part of the + * unit disk are bounded in radius by MAGIC_SPLIT_VALUE itself. + * + * If |z| < 0.98 we use a direct series summation. Otherwise z is very + * near the unit circle, and the series_2 expansion is used; see above. + * Because the fundamental region is bounded away from z = 1, this + * works well. + */ +static +int +dilogc_fundamental(double r, double x, double y, gsl_sf_result * real_dl, gsl_sf_result * imag_dl) +{ + if(r > 0.98) + return dilogc_series_3(r, x, y, real_dl, imag_dl); + else if(r > 0.25) + return dilogc_series_2(r, x, y, real_dl, imag_dl); + else + return dilogc_series_1(r, x, y, real_dl, imag_dl); +} + + +/* Compute Li_2(z) for z in the unit disk, |z| < 1. If z is outside + * the fundamental region, which means that it is too close to z = 1, + * then it is reflected into the fundamental region using the identity + * + * Li2(z) = -Li2(1-z) + zeta(2) - ln(z) ln(1-z). + */ +static +int +dilogc_unitdisk(double x, double y, gsl_sf_result * real_dl, gsl_sf_result * imag_dl) +{ + static const double MAGIC_SPLIT_VALUE = 0.732; + static const double zeta2 = M_PI*M_PI/6.0; + const double r = hypot(x, y); + + if(x > MAGIC_SPLIT_VALUE) + { + /* Reflect away from z = 1 if we are too close. The magic value + * insures that the reflected value of the radius satisfies the + * related inequality r_tmp < MAGIC_SPLIT_VALUE. + */ + const double x_tmp = 1.0 - x; + const double y_tmp = - y; + const double r_tmp = hypot(x_tmp, y_tmp); + /* const double cos_theta_tmp = x_tmp/r_tmp; */ + /* const double sin_theta_tmp = y_tmp/r_tmp; */ + + gsl_sf_result result_re_tmp; + gsl_sf_result result_im_tmp; + + const int stat_dilog = dilogc_fundamental(r_tmp, x_tmp, y_tmp, &result_re_tmp, &result_im_tmp); + + const double lnz = log(r); /* log(|z|) */ + const double lnomz = log(r_tmp); /* log(|1-z|) */ + const double argz = atan2(y, x); /* arg(z) assuming principal branch */ + const double argomz = atan2(y_tmp, x_tmp); /* arg(1-z) */ + real_dl->val = -result_re_tmp.val + zeta2 - lnz*lnomz + argz*argomz; + real_dl->err = result_re_tmp.err; + real_dl->err += 2.0 * GSL_DBL_EPSILON * (zeta2 + fabs(lnz*lnomz) + fabs(argz*argomz)); + imag_dl->val = -result_im_tmp.val - argz*lnomz - argomz*lnz; + imag_dl->err = result_im_tmp.err; + imag_dl->err += 2.0 * GSL_DBL_EPSILON * (fabs(argz*lnomz) + fabs(argomz*lnz)); + + return stat_dilog; + } + else + { + return dilogc_fundamental(r, x, y, real_dl, imag_dl); + } +} + + + +/*-*-*-*-*-*-*-*-*-*-*-* Functions with Error Codes *-*-*-*-*-*-*-*-*-*-*-*/ + + +int +gsl_sf_dilog_e(const double x, gsl_sf_result * result) +{ + if(x >= 0.0) { + return dilog_xge0(x, result); + } + else { + gsl_sf_result d1, d2; + int stat_d1 = dilog_xge0( -x, &d1); + int stat_d2 = dilog_xge0(x*x, &d2); + result->val = -d1.val + 0.5 * d2.val; + result->err = d1.err + 0.5 * d2.err; + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_ERROR_SELECT_2(stat_d1, stat_d2); + } +} + + +int +gsl_sf_complex_dilog_xy_e( + const double x, + const double y, + gsl_sf_result * real_dl, + gsl_sf_result * imag_dl + ) +{ + const double zeta2 = M_PI*M_PI/6.0; + const double r2 = x*x + y*y; + + if(y == 0.0) + { + if(x >= 1.0) + { + imag_dl->val = -M_PI * log(x); + imag_dl->err = 2.0 * GSL_DBL_EPSILON * fabs(imag_dl->val); + } + else + { + imag_dl->val = 0.0; + imag_dl->err = 0.0; + } + return gsl_sf_dilog_e(x, real_dl); + } + else if(fabs(r2 - 1.0) < GSL_DBL_EPSILON) + { + /* Lewin A.2.4.1 and A.2.4.2 */ + + const double theta = atan2(y, x); + const double term1 = theta*theta/4.0; + const double term2 = M_PI*fabs(theta)/2.0; + real_dl->val = zeta2 + term1 - term2; + real_dl->err = 2.0 * GSL_DBL_EPSILON * (zeta2 + term1 + term2); + return gsl_sf_clausen_e(theta, imag_dl); + } + else if(r2 < 1.0) + { + return dilogc_unitdisk(x, y, real_dl, imag_dl); + } + else + { + /* Reduce argument to unit disk. */ + const double r = sqrt(r2); + const double x_tmp = x/r2; + const double y_tmp = -y/r2; + /* const double r_tmp = 1.0/r; */ + gsl_sf_result result_re_tmp, result_im_tmp; + + const int stat_dilog = + dilogc_unitdisk(x_tmp, y_tmp, &result_re_tmp, &result_im_tmp); + + /* Unwind the inversion. + * + * Li_2(z) + Li_2(1/z) = -zeta(2) - 1/2 ln(-z)^2 + */ + const double theta = atan2(y, x); + const double theta_abs = fabs(theta); + const double theta_sgn = ( theta < 0.0 ? -1.0 : 1.0 ); + const double ln_minusz_re = log(r); + const double ln_minusz_im = theta_sgn * (theta_abs - M_PI); + const double lmz2_re = ln_minusz_re*ln_minusz_re - ln_minusz_im*ln_minusz_im; + const double lmz2_im = 2.0*ln_minusz_re*ln_minusz_im; + real_dl->val = -result_re_tmp.val - 0.5 * lmz2_re - zeta2; + real_dl->err = result_re_tmp.err + 2.0*GSL_DBL_EPSILON*(0.5 * fabs(lmz2_re) + zeta2); + imag_dl->val = -result_im_tmp.val - 0.5 * lmz2_im; + imag_dl->err = result_im_tmp.err + 2.0*GSL_DBL_EPSILON*fabs(lmz2_im); + return stat_dilog; + } +} + + +int +gsl_sf_complex_dilog_e( + const double r, + const double theta, + gsl_sf_result * real_dl, + gsl_sf_result * imag_dl + ) +{ + const double cos_theta = cos(theta); + const double sin_theta = sin(theta); + const double x = r * cos_theta; + const double y = r * sin_theta; + return gsl_sf_complex_dilog_xy_e(x, y, real_dl, imag_dl); +} + + +int +gsl_sf_complex_spence_xy_e( + const double x, + const double y, + gsl_sf_result * real_sp, + gsl_sf_result * imag_sp + ) +{ + const double oms_x = 1.0 - x; + const double oms_y = - y; + return gsl_sf_complex_dilog_xy_e(oms_x, oms_y, real_sp, imag_sp); +} + + + +/*-*-*-*-*-*-*-*-*-* Functions w/ Natural Prototypes *-*-*-*-*-*-*-*-*-*-*/ + +#include "eval.h" + +double gsl_sf_dilog(const double x) +{ + EVAL_RESULT(gsl_sf_dilog_e(x, &result)); +} diff --git a/gsl-2.5/specfunc/dilog.lo b/gsl-2.5/specfunc/dilog.lo new file mode 100644 index 00000000..ddea24b2 --- /dev/null +++ b/gsl-2.5/specfunc/dilog.lo @@ -0,0 +1,12 @@ +# dilog.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/dilog.o' + +# Name of the non-PIC object +non_pic_object='dilog.o' + diff --git a/gsl-2.5/specfunc/elementary.c b/gsl-2.5/specfunc/elementary.c new file mode 100644 index 00000000..38eaa013 --- /dev/null +++ b/gsl-2.5/specfunc/elementary.c @@ -0,0 +1,86 @@ +/* specfunc/elementary.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ + +#include +#include +#include +#include + +#include "error.h" +#include "check.h" + +int +gsl_sf_multiply_e(const double x, const double y, gsl_sf_result * result) +{ + const double ax = fabs(x); + const double ay = fabs(y); + + if(x == 0.0 || y == 0.0) { + /* It is necessary to eliminate this immediately. + */ + result->val = 0.0; + result->err = 0.0; + return GSL_SUCCESS; + } + else if((ax <= 1.0 && ay >= 1.0) || (ay <= 1.0 && ax >= 1.0)) { + /* Straddling 1.0 is always safe. + */ + result->val = x*y; + result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else { + const double f = 1.0 - 2.0 * GSL_DBL_EPSILON; + const double min = GSL_MIN_DBL(fabs(x), fabs(y)); + const double max = GSL_MAX_DBL(fabs(x), fabs(y)); + if(max < 0.9 * GSL_SQRT_DBL_MAX || min < (f * DBL_MAX)/max) { + result->val = GSL_COERCE_DBL(x*y); + result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val); + CHECK_UNDERFLOW(result); + return GSL_SUCCESS; + } + else { + OVERFLOW_ERROR(result); + } + } +} + + +int +gsl_sf_multiply_err_e(const double x, const double dx, + const double y, const double dy, + gsl_sf_result * result) +{ + int status = gsl_sf_multiply_e(x, y, result); + result->err += fabs(dx*y) + fabs(dy*x); + return status; +} + + +/*-*-*-*-*-*-*-*-*-* Functions w/ Natural Prototypes *-*-*-*-*-*-*-*-*-*-*/ + +#include "eval.h" + +double gsl_sf_multiply(const double x, const double y) +{ + EVAL_RESULT(gsl_sf_multiply_e(x, y, &result)); +} + diff --git a/gsl-2.5/specfunc/elementary.lo b/gsl-2.5/specfunc/elementary.lo new file mode 100644 index 00000000..8704d7dd --- /dev/null +++ b/gsl-2.5/specfunc/elementary.lo @@ -0,0 +1,12 @@ +# elementary.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/elementary.o' + +# Name of the non-PIC object +non_pic_object='elementary.o' + diff --git a/gsl-2.5/specfunc/ellint.c b/gsl-2.5/specfunc/ellint.c new file mode 100644 index 00000000..7e10e2a6 --- /dev/null +++ b/gsl-2.5/specfunc/ellint.c @@ -0,0 +1,651 @@ +/* specfunc/ellint.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ + +#include +#include +#include +#include +#include + +#include "error.h" + +/*-*-*-*-*-*-*-*-*-*-*-* Private Section *-*-*-*-*-*-*-*-*-*-*-*/ + +inline +static double locMAX3(double x, double y, double z) +{ + double xy = GSL_MAX(x, y); + return GSL_MAX(xy, z); +} + +inline +static double locMAX4(double x, double y, double z, double w) +{ + double xy = GSL_MAX(x, y); + double xyz = GSL_MAX(xy, z); + return GSL_MAX(xyz, w); +} + + +/*-*-*-*-*-*-*-*-*-*-*-* Functions with Error Codes *-*-*-*-*-*-*-*-*-*-*-*/ + + +/* based on Carlson's algorithms: + [B. C. Carlson Numer. Math. 33, 1 (1979)] + + see also: + [B.C. Carlson, Special Functions of Applied Mathematics (1977)] + */ + +/* According to Carlson's algorithm, the errtol parameter + typically effects the relative error in the following way: + + relative error < 16 errtol^6 / (1 - 2 errtol) + + errtol precision + ------ ---------- + 0.001 1.0e-17 + 0.003 2.0e-14 + 0.01 2.0e-11 + 0.03 2.0e-8 + 0.1 2.0e-5 +*/ + + +int +gsl_sf_ellint_RC_e(double x, double y, gsl_mode_t mode, gsl_sf_result * result) +{ + const double lolim = 5.0 * GSL_DBL_MIN; + const double uplim = 0.2 * GSL_DBL_MAX; + const gsl_prec_t goal = GSL_MODE_PREC(mode); + const double errtol = ( goal == GSL_PREC_DOUBLE ? 0.001 : 0.03 ); + const double prec = gsl_prec_eps[goal]; + const int nmax = 10000; + + if(x < 0.0 || y < 0.0 || x + y < lolim) { + DOMAIN_ERROR(result); + } + else if(GSL_MAX(x, y) < uplim) { + const double c1 = 1.0 / 7.0; + const double c2 = 9.0 / 22.0; + double xn = x; + double yn = y; + double mu, sn, lamda, s; + int n = 0; + while(1) { + mu = (xn + yn + yn) / 3.0; + sn = (yn + mu) / mu - 2.0; + if (fabs(sn) < errtol) break; + lamda = 2.0 * sqrt(xn) * sqrt(yn) + yn; + xn = (xn + lamda) * 0.25; + yn = (yn + lamda) * 0.25; + n++; + if(n==nmax) { + MAXITER_ERROR (result); + } + } + s = sn * sn * (0.3 + sn * (c1 + sn * (0.375 + sn * c2))); + result->val = (1.0 + s) / sqrt(mu); + result->err = prec * fabs(result->val); + return GSL_SUCCESS; + } + else { + DOMAIN_ERROR(result); + } +} + + +int +gsl_sf_ellint_RD_e(double x, double y, double z, gsl_mode_t mode, gsl_sf_result * result) +{ + const gsl_prec_t goal = GSL_MODE_PREC(mode); + const double errtol = ( goal == GSL_PREC_DOUBLE ? 0.001 : 0.03 ); + const double prec = gsl_prec_eps[goal]; + const double lolim = 2.0/pow(GSL_DBL_MAX, 2.0/3.0); + const double uplim = pow(0.1*errtol/GSL_DBL_MIN, 2.0/3.0); + const int nmax = 10000; + + if(GSL_MIN(x,y) < 0.0 || GSL_MIN(x+y,z) < lolim) { + DOMAIN_ERROR(result); + } + else if(locMAX3(x,y,z) < uplim) { + const double c1 = 3.0 / 14.0; + const double c2 = 1.0 / 6.0; + const double c3 = 9.0 / 22.0; + const double c4 = 3.0 / 26.0; + double xn = x; + double yn = y; + double zn = z; + double sigma = 0.0; + double power4 = 1.0; + double ea, eb, ec, ed, ef, s1, s2; + double mu, xndev, yndev, zndev; + int n = 0; + while(1) { + double xnroot, ynroot, znroot, lamda; + double epslon; + mu = (xn + yn + 3.0 * zn) * 0.2; + xndev = (mu - xn) / mu; + yndev = (mu - yn) / mu; + zndev = (mu - zn) / mu; + epslon = locMAX3(fabs(xndev), fabs(yndev), fabs(zndev)); + if (epslon < errtol) break; + xnroot = sqrt(xn); + ynroot = sqrt(yn); + znroot = sqrt(zn); + lamda = xnroot * (ynroot + znroot) + ynroot * znroot; + sigma += power4 / (znroot * (zn + lamda)); + power4 *= 0.25; + xn = (xn + lamda) * 0.25; + yn = (yn + lamda) * 0.25; + zn = (zn + lamda) * 0.25; + n++; + if(n==nmax) { + MAXITER_ERROR (result); + } + } + ea = xndev * yndev; + eb = zndev * zndev; + ec = ea - eb; + ed = ea - 6.0 * eb; + ef = ed + ec + ec; + s1 = ed * (- c1 + 0.25 * c3 * ed - 1.5 * c4 * zndev * ef); + s2 = zndev * (c2 * ef + zndev * (- c3 * ec + zndev * c4 * ea)); + result->val = 3.0 * sigma + power4 * (1.0 + s1 + s2) / (mu * sqrt(mu)); + result->err = prec * fabs(result->val); + return GSL_SUCCESS; + } + else { + DOMAIN_ERROR(result); + } +} + + +int +gsl_sf_ellint_RF_e(double x, double y, double z, gsl_mode_t mode, gsl_sf_result * result) +{ + const double lolim = 5.0 * GSL_DBL_MIN; + const double uplim = 0.2 * GSL_DBL_MAX; + const gsl_prec_t goal = GSL_MODE_PREC(mode); + const double errtol = ( goal == GSL_PREC_DOUBLE ? 0.001 : 0.03 ); + const double prec = gsl_prec_eps[goal]; + const int nmax = 10000; + + if(x < 0.0 || y < 0.0 || z < 0.0) { + DOMAIN_ERROR(result); + } + else if(x+y < lolim || x+z < lolim || y+z < lolim) { + DOMAIN_ERROR(result); + } + else if(locMAX3(x,y,z) < uplim) { + const double c1 = 1.0 / 24.0; + const double c2 = 3.0 / 44.0; + const double c3 = 1.0 / 14.0; + double xn = x; + double yn = y; + double zn = z; + double mu, xndev, yndev, zndev, e2, e3, s; + int n = 0; + while(1) { + double epslon, lamda; + double xnroot, ynroot, znroot; + mu = (xn + yn + zn) / 3.0; + xndev = 2.0 - (mu + xn) / mu; + yndev = 2.0 - (mu + yn) / mu; + zndev = 2.0 - (mu + zn) / mu; + epslon = locMAX3(fabs(xndev), fabs(yndev), fabs(zndev)); + if (epslon < errtol) break; + xnroot = sqrt(xn); + ynroot = sqrt(yn); + znroot = sqrt(zn); + lamda = xnroot * (ynroot + znroot) + ynroot * znroot; + xn = (xn + lamda) * 0.25; + yn = (yn + lamda) * 0.25; + zn = (zn + lamda) * 0.25; + n++; + if(n==nmax) { + MAXITER_ERROR (result); + } + } + e2 = xndev * yndev - zndev * zndev; + e3 = xndev * yndev * zndev; + s = 1.0 + (c1 * e2 - 0.1 - c2 * e3) * e2 + c3 * e3; + result->val = s / sqrt(mu); + result->err = prec * fabs(result->val); + return GSL_SUCCESS; + } + else { + DOMAIN_ERROR(result); + } +} + + +int +gsl_sf_ellint_RJ_e(double x, double y, double z, double p, gsl_mode_t mode, gsl_sf_result * result) +{ + const gsl_prec_t goal = GSL_MODE_PREC(mode); + const double errtol = ( goal == GSL_PREC_DOUBLE ? 0.001 : 0.03 ); + const double prec = gsl_prec_eps[goal]; + const double lolim = pow(5.0 * GSL_DBL_MIN, 1.0/3.0); + const double uplim = 0.3 * pow(0.2 * GSL_DBL_MAX, 1.0/3.0); + const int nmax = 10000; + + if(x < 0.0 || y < 0.0 || z < 0.0) { + DOMAIN_ERROR(result); + } + else if(x + y < lolim || x + z < lolim || y + z < lolim || p < lolim) { + DOMAIN_ERROR(result); + } + else if(locMAX4(x,y,z,p) < uplim) { + const double c1 = 3.0 / 14.0; + const double c2 = 1.0 / 3.0; + const double c3 = 3.0 / 22.0; + const double c4 = 3.0 / 26.0; + double xn = x; + double yn = y; + double zn = z; + double pn = p; + double sigma = 0.0; + double power4 = 1.0; + double mu, xndev, yndev, zndev, pndev; + double ea, eb, ec, e2, e3, s1, s2, s3; + int n = 0; + while(1) { + double xnroot, ynroot, znroot; + double lamda, alfa, beta; + double epslon; + gsl_sf_result rcresult; + int rcstatus; + mu = (xn + yn + zn + pn + pn) * 0.2; + xndev = (mu - xn) / mu; + yndev = (mu - yn) / mu; + zndev = (mu - zn) / mu; + pndev = (mu - pn) / mu; + epslon = locMAX4(fabs(xndev), fabs(yndev), fabs(zndev), fabs(pndev)); + if(epslon < errtol) break; + xnroot = sqrt(xn); + ynroot = sqrt(yn); + znroot = sqrt(zn); + lamda = xnroot * (ynroot + znroot) + ynroot * znroot; + alfa = pn * (xnroot + ynroot + znroot) + xnroot * ynroot * znroot; + alfa = alfa * alfa; + beta = pn * (pn + lamda) * (pn + lamda); + rcstatus = gsl_sf_ellint_RC_e(alfa, beta, mode, &rcresult); + if(rcstatus != GSL_SUCCESS) { + result->val = 0.0; + result->err = 0.0; + return rcstatus; + } + sigma += power4 * rcresult.val; + power4 *= 0.25; + xn = (xn + lamda) * 0.25; + yn = (yn + lamda) * 0.25; + zn = (zn + lamda) * 0.25; + pn = (pn + lamda) * 0.25; + n++; + if(n==nmax) { + MAXITER_ERROR (result); + } + } + + ea = xndev * (yndev + zndev) + yndev * zndev; + eb = xndev * yndev * zndev; + ec = pndev * pndev; + e2 = ea - 3.0 * ec; + e3 = eb + 2.0 * pndev * (ea - ec); + s1 = 1.0 + e2 * (- c1 + 0.75 * c3 * e2 - 1.5 * c4 * e3); + s2 = eb * (0.5 * c2 + pndev * (- c3 - c3 + pndev * c4)); + s3 = pndev * ea * (c2 - pndev * c3) - c2 * pndev * ec; + result->val = 3.0 * sigma + power4 * (s1 + s2 + s3) / (mu * sqrt(mu)); + result->err = prec * fabs(result->val); + return GSL_SUCCESS; + } + else { + DOMAIN_ERROR(result); + } +} + + +/* [Carlson, Numer. Math. 33 (1979) 1, (4.1)] */ +int +gsl_sf_ellint_F_e(double phi, double k, gsl_mode_t mode, gsl_sf_result * result) +{ + /* Angular reduction to -pi/2 < phi < pi/2 (we should really use an + exact reduction but this will have to do for now) BJG */ + + double nc = floor(phi/M_PI + 0.5); + double phi_red = phi - nc * M_PI; + phi = phi_red; + + { + double sin_phi = sin(phi); + double sin2_phi = sin_phi*sin_phi; + double x = 1.0 - sin2_phi; + double y = 1.0 - k*k*sin2_phi; + gsl_sf_result rf; + int status = gsl_sf_ellint_RF_e(x, y, 1.0, mode, &rf); + result->val = sin_phi * rf.val; + result->err = GSL_DBL_EPSILON * fabs(result->val) + fabs(sin_phi*rf.err); + if (nc == 0) { + return status; + } else { + gsl_sf_result rk; /* add extra terms from periodicity */ + const int rkstatus = gsl_sf_ellint_Kcomp_e(k, mode, &rk); + result->val += 2*nc*rk.val; + result->err += 2*fabs(nc)*rk.err; + return GSL_ERROR_SELECT_2(status, rkstatus); + } + } +} + + +/* [Carlson, Numer. Math. 33 (1979) 1, (4.2)] */ +int +gsl_sf_ellint_E_e(double phi, double k, gsl_mode_t mode, gsl_sf_result * result) +{ + /* Angular reduction to -pi/2 < phi < pi/2 (we should really use an + exact reduction but this will have to do for now) BJG */ + + double nc = floor(phi/M_PI + 0.5); + double phi_red = phi - nc * M_PI; + phi = phi_red; + + { + const double sin_phi = sin(phi); + const double sin2_phi = sin_phi * sin_phi; + const double x = 1.0 - sin2_phi; + const double y = 1.0 - k*k*sin2_phi; + + if(x < GSL_DBL_EPSILON) { + gsl_sf_result re; + const int status = gsl_sf_ellint_Ecomp_e(k, mode, &re); + /* could use A&S 17.4.14 to improve the value below */ + result->val = 2*nc*re.val + GSL_SIGN(sin_phi) * re.val; + result->err = 2*fabs(nc)*re.err + re.err; + return status; + } + else { + gsl_sf_result rf, rd; + const double sin3_phi = sin2_phi * sin_phi; + const int rfstatus = gsl_sf_ellint_RF_e(x, y, 1.0, mode, &rf); + const int rdstatus = gsl_sf_ellint_RD_e(x, y, 1.0, mode, &rd); + result->val = sin_phi * rf.val - k*k/3.0 * sin3_phi * rd.val; + result->err = GSL_DBL_EPSILON * fabs(sin_phi * rf.val); + result->err += fabs(sin_phi*rf.err); + result->err += k*k/3.0 * GSL_DBL_EPSILON * fabs(sin3_phi * rd.val); + result->err += k*k/3.0 * fabs(sin3_phi*rd.err); + if (nc == 0) { + return GSL_ERROR_SELECT_2(rfstatus, rdstatus); + } else { + gsl_sf_result re; /* add extra terms from periodicity */ + const int restatus = gsl_sf_ellint_Ecomp_e(k, mode, &re); + result->val += 2*nc*re.val; + result->err += 2*fabs(nc)*re.err; + return GSL_ERROR_SELECT_3(rfstatus, rdstatus, restatus); + } + } + } +} + + +/* [Carlson, Numer. Math. 33 (1979) 1, (4.3)] */ +int +gsl_sf_ellint_P_e(double phi, double k, double n, gsl_mode_t mode, gsl_sf_result * result) +{ + /* Angular reduction to -pi/2 < phi < pi/2 (we should really use an + exact reduction but this will have to do for now) BJG */ + + double nc = floor(phi/M_PI + 0.5); + double phi_red = phi - nc * M_PI; + phi = phi_red; + + /* FIXME: need to handle the case of small x, as for E,F */ + + { + const double sin_phi = sin(phi); + const double sin2_phi = sin_phi * sin_phi; + const double sin3_phi = sin2_phi * sin_phi; + const double x = 1.0 - sin2_phi; + const double y = 1.0 - k*k*sin2_phi; + gsl_sf_result rf; + gsl_sf_result rj; + const int rfstatus = gsl_sf_ellint_RF_e(x, y, 1.0, mode, &rf); + const int rjstatus = gsl_sf_ellint_RJ_e(x, y, 1.0, 1.0 + n*sin2_phi, mode, &rj); + result->val = sin_phi * rf.val - n/3.0*sin3_phi * rj.val; + result->err = GSL_DBL_EPSILON * fabs(sin_phi * rf.val); + result->err += fabs(sin_phi * rf.err); + result->err += n/3.0 * GSL_DBL_EPSILON * fabs(sin3_phi*rj.val); + result->err += n/3.0 * fabs(sin3_phi*rj.err); + if (nc == 0) { + return GSL_ERROR_SELECT_2(rfstatus, rjstatus); + } else { + gsl_sf_result rp; /* add extra terms from periodicity */ + const int rpstatus = gsl_sf_ellint_Pcomp_e(k, n, mode, &rp); + result->val += 2*nc*rp.val; + result->err += 2*fabs(nc)*rp.err; + return GSL_ERROR_SELECT_3(rfstatus, rjstatus, rpstatus); + } + } +} + + +/* [Carlson, Numer. Math. 33 (1979) 1, (4.4)] */ +int +gsl_sf_ellint_D_e(double phi, double k, gsl_mode_t mode, gsl_sf_result * result) +{ + /* Angular reduction to -pi/2 < phi < pi/2 (we should really use an + exact reduction but this will have to do for now) BJG */ + + double nc = floor(phi/M_PI + 0.5); + double phi_red = phi - nc * M_PI; + phi = phi_red; + + /* FIXME: need to handle the case of small x, as for E,F */ + { + const double sin_phi = sin(phi); + const double sin2_phi = sin_phi * sin_phi; + const double sin3_phi = sin2_phi * sin_phi; + const double x = 1.0 - sin2_phi; + const double y = 1.0 - k*k*sin2_phi; + gsl_sf_result rd; + const int status = gsl_sf_ellint_RD_e(x, y, 1.0, mode, &rd); + result->val = sin3_phi/3.0 * rd.val; + result->err = GSL_DBL_EPSILON * fabs(result->val) + fabs(sin3_phi/3.0 * rd.err); + if (nc == 0) { + return status; + } else { + gsl_sf_result rd; /* add extra terms from periodicity */ + const int rdstatus = gsl_sf_ellint_Dcomp_e(k, mode, &rd); + result->val += 2*nc*rd.val; + result->err += 2*fabs(nc)*rd.err; + return GSL_ERROR_SELECT_2(status, rdstatus); + } + } +} + +int +gsl_sf_ellint_Dcomp_e(double k, gsl_mode_t mode, gsl_sf_result * result) +{ + if(k*k >= 1.0) { + DOMAIN_ERROR(result); + } else { + const double y = 1.0 - k*k; /* FIXME: still need to handle k~=~1 */ + gsl_sf_result rd; + const int status = gsl_sf_ellint_RD_e(0.0, y, 1.0, mode, &rd); + result->val = (1.0/3.0) * rd.val; + result->err = GSL_DBL_EPSILON * fabs(result->val) + fabs(1.0/3.0 * rd.err); + return status; + } +} + + +/* [Carlson, Numer. Math. 33 (1979) 1, (4.5)] */ +int +gsl_sf_ellint_Kcomp_e(double k, gsl_mode_t mode, gsl_sf_result * result) +{ + if(k*k >= 1.0) { + DOMAIN_ERROR(result); + } + else if(k*k >= 1.0 - GSL_SQRT_DBL_EPSILON) { + /* [Abramowitz+Stegun, 17.3.34] */ + const double y = 1.0 - k*k; + const double a[] = { 1.38629436112, 0.09666344259, 0.03590092383 }; + const double b[] = { 0.5, 0.12498593597, 0.06880248576 }; + const double ta = a[0] + y*(a[1] + y*a[2]); + const double tb = -log(y) * (b[0] + y*(b[1] + y*b[2])); + result->val = ta + tb; + result->err = 2.0 * GSL_DBL_EPSILON * (fabs(result->val) + fabs(k/y)); + return GSL_SUCCESS; + } + else { + /* This was previously computed as, + + return gsl_sf_ellint_RF_e(0.0, 1.0 - k*k, 1.0, mode, result); + + but this underestimated the total error for small k, since the + argument y=1-k^2 is not exact (there is an absolute error of + GSL_DBL_EPSILON near y=0 due to cancellation in the subtraction). + Taking the singular behavior of -log(y) above gives an error + of 0.5*epsilon/y near y=0. (BJG) */ + + double y = 1.0 - k*k; + int status = gsl_sf_ellint_RF_e(0.0, y, 1.0, mode, result); + result->err += 0.5 * GSL_DBL_EPSILON / y; + return status ; + } +} + + +/* [Carlson, Numer. Math. 33 (1979) 1, (4.6)] */ +int +gsl_sf_ellint_Ecomp_e(double k, gsl_mode_t mode, gsl_sf_result * result) +{ + if(k*k >= 1.0) { + DOMAIN_ERROR(result); + } + else if(k*k >= 1.0 - GSL_SQRT_DBL_EPSILON) { + /* [Abramowitz+Stegun, 17.3.36] */ + const double y = 1.0 - k*k; + const double a[] = { 0.44325141463, 0.06260601220, 0.04757383546 }; + const double b[] = { 0.24998368310, 0.09200180037, 0.04069697526 }; + const double ta = 1.0 + y*(a[0] + y*(a[1] + a[2]*y)); + const double tb = -y*log(y) * (b[0] + y*(b[1] + b[2]*y)); + result->val = ta + tb; + result->err = 2.0 * GSL_DBL_EPSILON * result->val; + return GSL_SUCCESS; + } + else { + gsl_sf_result rf; + gsl_sf_result rd; + const double y = 1.0 - k*k; + const int rfstatus = gsl_sf_ellint_RF_e(0.0, y, 1.0, mode, &rf); + const int rdstatus = gsl_sf_ellint_RD_e(0.0, y, 1.0, mode, &rd); + result->val = rf.val - k*k/3.0 * rd.val; + result->err = rf.err + k*k/3.0 * rd.err; + return GSL_ERROR_SELECT_2(rfstatus, rdstatus); + } +} + +/* [Carlson, Numer. Math. 33 (1979) 1, (4.3) phi=pi/2] */ +int +gsl_sf_ellint_Pcomp_e(double k, double n, gsl_mode_t mode, gsl_sf_result * result) +{ + if(k*k >= 1.0) { + DOMAIN_ERROR(result); + } + /* FIXME: need to handle k ~=~ 1 cancellations */ + else { + gsl_sf_result rf; + gsl_sf_result rj; + const double y = 1.0 - k*k; + const int rfstatus = gsl_sf_ellint_RF_e(0.0, y, 1.0, mode, &rf); + const int rjstatus = gsl_sf_ellint_RJ_e(0.0, y, 1.0, 1.0 + n, mode, &rj); + result->val = rf.val - (n/3.0) * rj.val; + result->err = rf.err + fabs(n/3.0) * rj.err; + return GSL_ERROR_SELECT_2(rfstatus, rjstatus); + } +} + + + +/*-*-*-*-*-*-*-*-*-* Functions w/ Natural Prototypes *-*-*-*-*-*-*-*-*-*-*/ + +#include "eval.h" + +double gsl_sf_ellint_Kcomp(double k, gsl_mode_t mode) +{ + EVAL_RESULT(gsl_sf_ellint_Kcomp_e(k, mode, &result)); +} + +double gsl_sf_ellint_Ecomp(double k, gsl_mode_t mode) +{ + EVAL_RESULT(gsl_sf_ellint_Ecomp_e(k, mode, &result)); +} + +double gsl_sf_ellint_Pcomp(double k, double n, gsl_mode_t mode) +{ + EVAL_RESULT(gsl_sf_ellint_Pcomp_e(k, n, mode, &result)); +} + +double gsl_sf_ellint_Dcomp(double k, gsl_mode_t mode) +{ + EVAL_RESULT(gsl_sf_ellint_Dcomp_e(k, mode, &result)); +} + +double gsl_sf_ellint_F(double phi, double k, gsl_mode_t mode) +{ + EVAL_RESULT(gsl_sf_ellint_F_e(phi, k, mode, &result)); +} + +double gsl_sf_ellint_E(double phi, double k, gsl_mode_t mode) +{ + EVAL_RESULT(gsl_sf_ellint_E_e(phi, k, mode, &result)); +} + +double gsl_sf_ellint_P(double phi, double k, double n, gsl_mode_t mode) +{ + EVAL_RESULT(gsl_sf_ellint_P_e(phi, k, n, mode, &result)); +} + +double gsl_sf_ellint_D(double phi, double k, gsl_mode_t mode) +{ + EVAL_RESULT(gsl_sf_ellint_D_e(phi, k, mode, &result)); +} + +double gsl_sf_ellint_RC(double x, double y, gsl_mode_t mode) +{ + EVAL_RESULT(gsl_sf_ellint_RC_e(x, y, mode, &result)); +} + +double gsl_sf_ellint_RD(double x, double y, double z, gsl_mode_t mode) +{ + EVAL_RESULT(gsl_sf_ellint_RD_e(x, y, z, mode, &result)); +} + +double gsl_sf_ellint_RF(double x, double y, double z, gsl_mode_t mode) +{ + EVAL_RESULT(gsl_sf_ellint_RF_e(x, y, z, mode, &result)); +} + +double gsl_sf_ellint_RJ(double x, double y, double z, double p, gsl_mode_t mode) +{ + EVAL_RESULT(gsl_sf_ellint_RJ_e(x, y, z, p, mode, &result)); +} diff --git a/gsl-2.5/specfunc/ellint.lo b/gsl-2.5/specfunc/ellint.lo new file mode 100644 index 00000000..6bf00dee --- /dev/null +++ b/gsl-2.5/specfunc/ellint.lo @@ -0,0 +1,12 @@ +# ellint.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/ellint.o' + +# Name of the non-PIC object +non_pic_object='ellint.o' + diff --git a/gsl-2.5/specfunc/elljac.c b/gsl-2.5/specfunc/elljac.c new file mode 100644 index 00000000..340306e4 --- /dev/null +++ b/gsl-2.5/specfunc/elljac.c @@ -0,0 +1,128 @@ +/* specfunc/elljac.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ + +#include +#include +#include +#include +#include + + +/* GJ: See [Thompson, Atlas for Computing Mathematical Functions] */ + +/* BJG 2005-07: New algorithm based on Algorithm 5 from Numerische + Mathematik 7, 78-90 (1965) "Numerical Calculation of Elliptic + Integrals and Elliptic Functions" R. Bulirsch. + + Minor tweak is to avoid division by zero when sin(x u_l) = 0 by + computing reflected values sn(K-u) cn(K-u) dn(K-u) and using + transformation from Abramowitz & Stegun table 16.8 column "K-u"*/ + +int +gsl_sf_elljac_e(double u, double m, double * sn, double * cn, double * dn) +{ + if(fabs(m) > 1.0) { + *sn = 0.0; + *cn = 0.0; + *dn = 0.0; + GSL_ERROR ("|m| > 1.0", GSL_EDOM); + } + else if(fabs(m) < 2.0*GSL_DBL_EPSILON) { + *sn = sin(u); + *cn = cos(u); + *dn = 1.0; + return GSL_SUCCESS; + } + else if(fabs(m - 1.0) < 2.0*GSL_DBL_EPSILON) { + *sn = tanh(u); + *cn = 1.0/cosh(u); + *dn = *cn; + return GSL_SUCCESS; + } + else { + int status = GSL_SUCCESS; + const int N = 16; + double mu[16]; + double nu[16]; + double c[16]; + double d[16]; + double sin_umu, cos_umu, t, r; + int n = 0; + + mu[0] = 1.0; + nu[0] = sqrt(1.0 - m); + + while( fabs(mu[n] - nu[n]) > 4.0 * GSL_DBL_EPSILON * fabs(mu[n]+nu[n])) { + mu[n+1] = 0.5 * (mu[n] + nu[n]); + nu[n+1] = sqrt(mu[n] * nu[n]); + ++n; + if(n >= N - 1) { + status = GSL_EMAXITER; + break; + } + } + + sin_umu = sin(u * mu[n]); + cos_umu = cos(u * mu[n]); + + /* Since sin(u*mu(n)) can be zero we switch to computing sn(K-u), + cn(K-u), dn(K-u) when |sin| < |cos| */ + + if (fabs(sin_umu) < fabs(cos_umu)) + { + t = sin_umu / cos_umu; + + c[n] = mu[n] * t; + d[n] = 1.0; + + while(n > 0) { + n--; + c[n] = d[n+1] * c[n+1]; + r = (c[n+1] * c[n+1]) / mu[n+1]; + d[n] = (r + nu[n]) / (r + mu[n]); + } + + *dn = sqrt(1.0-m) / d[n]; + *cn = (*dn) * GSL_SIGN(cos_umu) / gsl_hypot(1.0, c[n]); + *sn = (*cn) * c[n] /sqrt(1.0-m); + } + else + { + t = cos_umu / sin_umu; + + c[n] = mu[n] * t; + d[n] = 1.0; + + while(n > 0) { + --n; + c[n] = d[n+1] * c[n+1]; + r = (c[n+1] * c[n+1]) / mu[n+1]; + d[n] = (r + nu[n]) / (r + mu[n]); + } + + *dn = d[n]; + *sn = GSL_SIGN(sin_umu) / gsl_hypot(1.0, c[n]); + *cn = c[n] * (*sn); + } + + return status; + } +} diff --git a/gsl-2.5/specfunc/elljac.lo b/gsl-2.5/specfunc/elljac.lo new file mode 100644 index 00000000..5239b23e --- /dev/null +++ b/gsl-2.5/specfunc/elljac.lo @@ -0,0 +1,12 @@ +# elljac.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/elljac.o' + +# Name of the non-PIC object +non_pic_object='elljac.o' + diff --git a/gsl-2.5/specfunc/erfc.c b/gsl-2.5/specfunc/erfc.c new file mode 100644 index 00000000..819dbb02 --- /dev/null +++ b/gsl-2.5/specfunc/erfc.c @@ -0,0 +1,465 @@ +/* specfunc/erfc.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: J. Theiler (modifications by G. Jungman) */ + +/* + * See Hart et al, Computer Approximations, John Wiley and Sons, New York (1968) + * (This applies only to the erfc8 stuff, which is the part + * of the original code that survives. I have replaced much of + * the other stuff with Chebyshev fits. These are simpler and + * more precise than the original approximations. [GJ]) + */ +#include +#include +#include +#include +#include + +#include "check.h" + +#include "chebyshev.h" +#include "cheb_eval.c" + +#define LogRootPi_ 0.57236494292470008706 + + +static double erfc8_sum(double x) +{ + /* estimates erfc(x) valid for 8 < x < 100 */ + /* This is based on index 5725 in Hart et al */ + + static double P[] = { + 2.97886562639399288862, + 7.409740605964741794425, + 6.1602098531096305440906, + 5.019049726784267463450058, + 1.275366644729965952479585264, + 0.5641895835477550741253201704 + }; + static double Q[] = { + 3.3690752069827527677, + 9.608965327192787870698, + 17.08144074746600431571095, + 12.0489519278551290360340491, + 9.396034016235054150430579648, + 2.260528520767326969591866945, + 1.0 + }; + double num=0.0, den=0.0; + int i; + + num = P[5]; + for (i=4; i>=0; --i) { + num = x*num + P[i]; + } + den = Q[6]; + for (i=5; i>=0; --i) { + den = x*den + Q[i]; + } + + return num/den; +} + +inline +static double erfc8(double x) +{ + double e; + e = erfc8_sum(x); + e *= exp(-x*x); + return e; +} + +inline +static double log_erfc8(double x) +{ + double e; + e = erfc8_sum(x); + e = log(e) - x*x; + return e; +} + +#if 0 +/* Abramowitz+Stegun, 7.2.14 */ +static double erfcasympsum(double x) +{ + int i; + double e = 1.; + double coef = 1.; + for (i=1; i<5; ++i) { + /* coef *= -(2*i-1)/(2*x*x); ??? [GJ] */ + coef *= -(2*i+1)/(i*(4*x*x*x*x)); + e += coef; + /* + if (fabs(coef) < 1.0e-15) break; + if (fabs(coef) > 1.0e10) break; + + [GJ]: These tests are not useful. This function is only + used below. Took them out; they gum up the pipeline. + */ + } + return e; +} +#endif /* 0 */ + + +/* Abramowitz+Stegun, 7.1.5 */ +static int erfseries(double x, gsl_sf_result * result) +{ + double coef = x; + double e = coef; + double del; + int k; + for (k=1; k<30; ++k) { + coef *= -x*x/k; + del = coef/(2.0*k+1.0); + e += del; + } + result->val = 2.0 / M_SQRTPI * e; + result->err = 2.0 / M_SQRTPI * (fabs(del) + GSL_DBL_EPSILON); + return GSL_SUCCESS; +} + + +/* Chebyshev fit for erfc((t+1)/2), -1 < t < 1 + */ +static double erfc_xlt1_data[20] = { + 1.06073416421769980345174155056, + -0.42582445804381043569204735291, + 0.04955262679620434040357683080, + 0.00449293488768382749558001242, + -0.00129194104658496953494224761, + -0.00001836389292149396270416979, + 0.00002211114704099526291538556, + -5.23337485234257134673693179020e-7, + -2.78184788833537885382530989578e-7, + 1.41158092748813114560316684249e-8, + 2.72571296330561699984539141865e-9, + -2.06343904872070629406401492476e-10, + -2.14273991996785367924201401812e-11, + 2.22990255539358204580285098119e-12, + 1.36250074650698280575807934155e-13, + -1.95144010922293091898995913038e-14, + -6.85627169231704599442806370690e-16, + 1.44506492869699938239521607493e-16, + 2.45935306460536488037576200030e-18, + -9.29599561220523396007359328540e-19 +}; +static cheb_series erfc_xlt1_cs = { + erfc_xlt1_data, + 19, + -1, 1, + 12 +}; + +/* Chebyshev fit for erfc(x) exp(x^2), 1 < x < 5, x = 2t + 3, -1 < t < 1 + */ +static double erfc_x15_data[25] = { + 0.44045832024338111077637466616, + -0.143958836762168335790826895326, + 0.044786499817939267247056666937, + -0.013343124200271211203618353102, + 0.003824682739750469767692372556, + -0.001058699227195126547306482530, + 0.000283859419210073742736310108, + -0.000073906170662206760483959432, + 0.000018725312521489179015872934, + -4.62530981164919445131297264430e-6, + 1.11558657244432857487884006422e-6, + -2.63098662650834130067808832725e-7, + 6.07462122724551777372119408710e-8, + -1.37460865539865444777251011793e-8, + 3.05157051905475145520096717210e-9, + -6.65174789720310713757307724790e-10, + 1.42483346273207784489792999706e-10, + -3.00141127395323902092018744545e-11, + 6.22171792645348091472914001250e-12, + -1.26994639225668496876152836555e-12, + 2.55385883033257575402681845385e-13, + -5.06258237507038698392265499770e-14, + 9.89705409478327321641264227110e-15, + -1.90685978789192181051961024995e-15, + 3.50826648032737849245113757340e-16 +}; +static cheb_series erfc_x15_cs = { + erfc_x15_data, + 24, + -1, 1, + 16 +}; + +/* Chebyshev fit for erfc(x) x exp(x^2), 5 < x < 10, x = (5t + 15)/2, -1 < t < 1 + */ +static double erfc_x510_data[20] = { + 1.11684990123545698684297865808, + 0.003736240359381998520654927536, + -0.000916623948045470238763619870, + 0.000199094325044940833965078819, + -0.000040276384918650072591781859, + 7.76515264697061049477127605790e-6, + -1.44464794206689070402099225301e-6, + 2.61311930343463958393485241947e-7, + -4.61833026634844152345304095560e-8, + 8.00253111512943601598732144340e-9, + -1.36291114862793031395712122089e-9, + 2.28570483090160869607683087722e-10, + -3.78022521563251805044056974560e-11, + 6.17253683874528285729910462130e-12, + -9.96019290955316888445830597430e-13, + 1.58953143706980770269506726000e-13, + -2.51045971047162509999527428316e-14, + 3.92607828989125810013581287560e-15, + -6.07970619384160374392535453420e-16, + 9.12600607264794717315507477670e-17 +}; +static cheb_series erfc_x510_cs = { + erfc_x510_data, + 19, + -1, 1, + 12 +}; + +#if 0 +inline +static double +erfc_asymptotic(double x) +{ + return exp(-x*x)/x * erfcasympsum(x) / M_SQRTPI; +} +inline +static double +log_erfc_asymptotic(double x) +{ + return log(erfcasympsum(x)/x) - x*x - LogRootPi_; +} +#endif /* 0 */ + + +/*-*-*-*-*-*-*-*-*-*-*-* Functions with Error Codes *-*-*-*-*-*-*-*-*-*-*-*/ + +int gsl_sf_erfc_e(double x, gsl_sf_result * result) +{ + const double ax = fabs(x); + double e_val, e_err; + + /* CHECK_POINTER(result) */ + + if(ax <= 1.0) { + double t = 2.0*ax - 1.0; + gsl_sf_result c; + cheb_eval_e(&erfc_xlt1_cs, t, &c); + e_val = c.val; + e_err = c.err; + } + else if(ax <= 5.0) { + double ex2 = exp(-x*x); + double t = 0.5*(ax-3.0); + gsl_sf_result c; + cheb_eval_e(&erfc_x15_cs, t, &c); + e_val = ex2 * c.val; + e_err = ex2 * (c.err + 2.0*fabs(x)*GSL_DBL_EPSILON); + } + else if(ax < 10.0) { + double exterm = exp(-x*x) / ax; + double t = (2.0*ax - 15.0)/5.0; + gsl_sf_result c; + cheb_eval_e(&erfc_x510_cs, t, &c); + e_val = exterm * c.val; + e_err = exterm * (c.err + 2.0*fabs(x)*GSL_DBL_EPSILON + GSL_DBL_EPSILON); + } + else { + e_val = erfc8(ax); + e_err = (x*x + 1.0) * GSL_DBL_EPSILON * fabs(e_val); + } + + if(x < 0.0) { + result->val = 2.0 - e_val; + result->err = e_err; + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + } + else { + result->val = e_val; + result->err = e_err; + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + } + + return GSL_SUCCESS; +} + + +int gsl_sf_log_erfc_e(double x, gsl_sf_result * result) +{ + /* CHECK_POINTER(result) */ + + if(x*x < 10.0*GSL_ROOT6_DBL_EPSILON) { + const double y = x / M_SQRTPI; + /* series for -1/2 Log[Erfc[Sqrt[Pi] y]] */ + const double c3 = (4.0 - M_PI)/3.0; + const double c4 = 2.0*(1.0 - M_PI/3.0); + const double c5 = -0.001829764677455021; /* (96.0 - 40.0*M_PI + 3.0*M_PI*M_PI)/30.0 */ + const double c6 = 0.02629651521057465; /* 2.0*(120.0 - 60.0*M_PI + 7.0*M_PI*M_PI)/45.0 */ + const double c7 = -0.01621575378835404; + const double c8 = 0.00125993961762116; + const double c9 = 0.00556964649138; + const double c10 = -0.0045563339802; + const double c11 = 0.0009461589032; + const double c12 = 0.0013200243174; + const double c13 = -0.00142906; + const double c14 = 0.00048204; + double series = c8 + y*(c9 + y*(c10 + y*(c11 + y*(c12 + y*(c13 + c14*y))))); + series = y*(1.0 + y*(1.0 + y*(c3 + y*(c4 + y*(c5 + y*(c6 + y*(c7 + y*series))))))); + result->val = -2.0 * series; + result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + /* + don't like use of log1p(); added above series stuff for small x instead, should be ok [GJ] + else if (fabs(x) < 1.0) { + gsl_sf_result result_erf; + gsl_sf_erf_e(x, &result_erf); + result->val = log1p(-result_erf.val); + result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + */ + else if(x > 8.0) { + result->val = log_erfc8(x); + result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else { + gsl_sf_result result_erfc; + gsl_sf_erfc_e(x, &result_erfc); + result->val = log(result_erfc.val); + result->err = fabs(result_erfc.err / result_erfc.val); + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } +} + + +int gsl_sf_erf_e(double x, gsl_sf_result * result) +{ + /* CHECK_POINTER(result) */ + + if(fabs(x) < 1.0) { + return erfseries(x, result); + } + else { + gsl_sf_result result_erfc; + gsl_sf_erfc_e(x, &result_erfc); + result->val = 1.0 - result_erfc.val; + result->err = result_erfc.err; + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } +} + + +int gsl_sf_erf_Z_e(double x, gsl_sf_result * result) +{ + /* CHECK_POINTER(result) */ + + { + const double ex2 = exp(-x*x/2.0); + result->val = ex2 / (M_SQRT2 * M_SQRTPI); + result->err = fabs(x * result->val) * GSL_DBL_EPSILON; + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + CHECK_UNDERFLOW(result); + return GSL_SUCCESS; + } +} + + +int gsl_sf_erf_Q_e(double x, gsl_sf_result * result) +{ + /* CHECK_POINTER(result) */ + + { + gsl_sf_result result_erfc; + int stat = gsl_sf_erfc_e(x/M_SQRT2, &result_erfc); + result->val = 0.5 * result_erfc.val; + result->err = 0.5 * result_erfc.err; + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return stat; + } +} + + +int gsl_sf_hazard_e(double x, gsl_sf_result * result) +{ + if(x < 25.0) + { + gsl_sf_result result_ln_erfc; + const int stat_l = gsl_sf_log_erfc_e(x/M_SQRT2, &result_ln_erfc); + const double lnc = -0.22579135264472743236; /* ln(sqrt(2/pi)) */ + const double arg = lnc - 0.5*x*x - result_ln_erfc.val; + const int stat_e = gsl_sf_exp_e(arg, result); + result->err += 3.0 * (1.0 + fabs(x)) * GSL_DBL_EPSILON * fabs(result->val); + result->err += fabs(result_ln_erfc.err * result->val); + return GSL_ERROR_SELECT_2(stat_l, stat_e); + } + else + { + const double ix2 = 1.0/(x*x); + const double corrB = 1.0 - 9.0*ix2 * (1.0 - 11.0*ix2); + const double corrM = 1.0 - 5.0*ix2 * (1.0 - 7.0*ix2 * corrB); + const double corrT = 1.0 - ix2 * (1.0 - 3.0*ix2*corrM); + result->val = x / corrT; + result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } +} + + + +/*-*-*-*-*-*-*-*-*-* Functions w/ Natural Prototypes *-*-*-*-*-*-*-*-*-*-*/ + +#include "eval.h" + +double gsl_sf_erfc(double x) +{ + EVAL_RESULT(gsl_sf_erfc_e(x, &result)); +} + +double gsl_sf_log_erfc(double x) +{ + EVAL_RESULT(gsl_sf_log_erfc_e(x, &result)); +} + +double gsl_sf_erf(double x) +{ + EVAL_RESULT(gsl_sf_erf_e(x, &result)); +} + +double gsl_sf_erf_Z(double x) +{ + EVAL_RESULT(gsl_sf_erf_Z_e(x, &result)); +} + +double gsl_sf_erf_Q(double x) +{ + EVAL_RESULT(gsl_sf_erf_Q_e(x, &result)); +} + +double gsl_sf_hazard(double x) +{ + EVAL_RESULT(gsl_sf_hazard_e(x, &result)); +} + diff --git a/gsl-2.5/specfunc/erfc.lo b/gsl-2.5/specfunc/erfc.lo new file mode 100644 index 00000000..e08cf1ba --- /dev/null +++ b/gsl-2.5/specfunc/erfc.lo @@ -0,0 +1,12 @@ +# erfc.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/erfc.o' + +# Name of the non-PIC object +non_pic_object='erfc.o' + diff --git a/gsl-2.5/specfunc/error.h b/gsl-2.5/specfunc/error.h new file mode 100644 index 00000000..9f049af3 --- /dev/null +++ b/gsl-2.5/specfunc/error.h @@ -0,0 +1,25 @@ +#define OVERFLOW_ERROR(result) do { (result)->val = GSL_POSINF; (result)->err = GSL_POSINF; GSL_ERROR ("overflow", GSL_EOVRFLW); } while(0) + +#define UNDERFLOW_ERROR(result) do { (result)->val = 0.0; (result)->err = GSL_DBL_MIN; GSL_ERROR ("underflow", GSL_EUNDRFLW); } while(0) + +#define INTERNAL_OVERFLOW_ERROR(result) do { (result)->val = GSL_POSINF; (result)->err = GSL_POSINF; return GSL_EOVRFLW; } while(0) + +#define INTERNAL_UNDERFLOW_ERROR(result) do { (result)->val = 0.0; (result)->err = GSL_DBL_MIN; return GSL_EUNDRFLW; } while(0) + +#define DOMAIN_ERROR(result) do { (result)->val = GSL_NAN; (result)->err = GSL_NAN; GSL_ERROR ("domain error", GSL_EDOM); } while(0) + +#define DOMAIN_ERROR_MSG(msg, result) do { (result)->val = GSL_NAN; (result)->err = GSL_NAN; GSL_ERROR ((msg), GSL_EDOM); } while(0) + +#define DOMAIN_ERROR_E10(result) do { (result)->val = GSL_NAN; (result)->err = GSL_NAN; (result)->e10 = 0 ; GSL_ERROR ("domain error", GSL_EDOM); } while(0) + +#define OVERFLOW_ERROR_E10(result) do { (result)->val = GSL_POSINF; (result)->err = GSL_POSINF; (result)->e10 = 0; GSL_ERROR ("overflow", GSL_EOVRFLW); } while(0) +#define UNDERFLOW_ERROR_E10(result) do { (result)->val = 0.0; (result)->err = GSL_DBL_MIN; (result)->e10 = 0; GSL_ERROR ("underflow", GSL_EUNDRFLW); } while(0) + + +#define OVERFLOW_ERROR_2(r1,r2) do { (r1)->val = GSL_POSINF; (r1)->err = GSL_POSINF; (r2)->val = GSL_POSINF ; (r2)->err=GSL_POSINF; GSL_ERROR ("overflow", GSL_EOVRFLW); } while(0) + +#define UNDERFLOW_ERROR_2(r1,r2) do { (r1)->val = 0.0; (r1)->err = GSL_DBL_MIN; (r2)->val = 0.0 ; (r2)->err = GSL_DBL_MIN; GSL_ERROR ("underflow", GSL_EUNDRFLW); } while(0) + +#define DOMAIN_ERROR_2(r1,r2) do { (r1)->val = GSL_NAN; (r1)->err = GSL_NAN; (r2)->val = GSL_NAN; (r2)->err = GSL_NAN; GSL_ERROR ("domain error", GSL_EDOM); } while(0) + +#define MAXITER_ERROR(result) do { (result)->val = GSL_NAN; (result)->err = GSL_NAN; GSL_ERROR ("too many iterations error", GSL_EMAXITER); } while(0) diff --git a/gsl-2.5/specfunc/eval.h b/gsl-2.5/specfunc/eval.h new file mode 100644 index 00000000..00ddfed3 --- /dev/null +++ b/gsl-2.5/specfunc/eval.h @@ -0,0 +1,17 @@ +/* evaluate a function discarding the status value in a modifiable way */ + +#define EVAL_RESULT(fn) \ + gsl_sf_result result; \ + int status = fn; \ + if (status != GSL_SUCCESS) { \ + GSL_ERROR_VAL(#fn, status, result.val); \ + } ; \ + return result.val; + +#define EVAL_DOUBLE(fn) \ + int status = fn; \ + if (status != GSL_SUCCESS) { \ + GSL_ERROR_VAL(#fn, status, result); \ + } ; \ + return result; + diff --git a/gsl-2.5/specfunc/exp.c b/gsl-2.5/specfunc/exp.c new file mode 100644 index 00000000..3045b252 --- /dev/null +++ b/gsl-2.5/specfunc/exp.c @@ -0,0 +1,614 @@ +/* specfunc/exp.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ + +#include +#include +#include +#include +#include + +#include "error.h" + +/* Evaluate the continued fraction for exprel. + * [Abramowitz+Stegun, 4.2.41] + */ +static +int +exprel_n_CF(const double N, const double x, gsl_sf_result * result) +{ + const double RECUR_BIG = GSL_SQRT_DBL_MAX; + const int maxiter = 5000; + int n = 1; + double Anm2 = 1.0; + double Bnm2 = 0.0; + double Anm1 = 0.0; + double Bnm1 = 1.0; + double a1 = 1.0; + double b1 = 1.0; + double a2 = -x; + double b2 = N+1; + double an, bn; + + double fn; + + double An = b1*Anm1 + a1*Anm2; /* A1 */ + double Bn = b1*Bnm1 + a1*Bnm2; /* B1 */ + + /* One explicit step, before we get to the main pattern. */ + n++; + Anm2 = Anm1; + Bnm2 = Bnm1; + Anm1 = An; + Bnm1 = Bn; + An = b2*Anm1 + a2*Anm2; /* A2 */ + Bn = b2*Bnm1 + a2*Bnm2; /* B2 */ + + fn = An/Bn; + + while(n < maxiter) { + double old_fn; + double del; + n++; + Anm2 = Anm1; + Bnm2 = Bnm1; + Anm1 = An; + Bnm1 = Bn; + an = ( GSL_IS_ODD(n) ? ((n-1)/2)*x : -(N+(n/2)-1)*x ); + bn = N + n - 1; + An = bn*Anm1 + an*Anm2; + Bn = bn*Bnm1 + an*Bnm2; + + if(fabs(An) > RECUR_BIG || fabs(Bn) > RECUR_BIG) { + An /= RECUR_BIG; + Bn /= RECUR_BIG; + Anm1 /= RECUR_BIG; + Bnm1 /= RECUR_BIG; + Anm2 /= RECUR_BIG; + Bnm2 /= RECUR_BIG; + } + + old_fn = fn; + fn = An/Bn; + del = old_fn/fn; + + if(fabs(del - 1.0) < 2.0*GSL_DBL_EPSILON) break; + } + + result->val = fn; + result->err = 4.0*(n+1.0)*GSL_DBL_EPSILON*fabs(fn); + + if(n == maxiter) + GSL_ERROR ("error", GSL_EMAXITER); + else + return GSL_SUCCESS; +} + + +/*-*-*-*-*-*-*-*-*-*-*-* Functions with Error Codes *-*-*-*-*-*-*-*-*-*-*-*/ + +int gsl_sf_exp_e(const double x, gsl_sf_result * result) +{ + if(x > GSL_LOG_DBL_MAX) { + OVERFLOW_ERROR(result); + } + else if(x < GSL_LOG_DBL_MIN) { + UNDERFLOW_ERROR(result); + } + else { + result->val = exp(x); + result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } +} + +int gsl_sf_exp_e10_e(const double x, gsl_sf_result_e10 * result) +{ + if(x > INT_MAX-1) { + OVERFLOW_ERROR_E10(result); + } + else if(x < INT_MIN+1) { + UNDERFLOW_ERROR_E10(result); + } + else { + const int N = (x > GSL_LOG_DBL_MAX || x < GSL_LOG_DBL_MIN) ? (int) floor(x/M_LN10) : 0; + result->val = exp(x-N*M_LN10); + result->err = 2.0 * (fabs(x)+1.0) * GSL_DBL_EPSILON * fabs(result->val); + result->e10 = N; + return GSL_SUCCESS; + } +} + + +int gsl_sf_exp_mult_e(const double x, const double y, gsl_sf_result * result) +{ + const double ay = fabs(y); + + if(y == 0.0) { + result->val = 0.0; + result->err = 0.0; + return GSL_SUCCESS; + } + else if( ( x < 0.5*GSL_LOG_DBL_MAX && x > 0.5*GSL_LOG_DBL_MIN) + && (ay < 0.8*GSL_SQRT_DBL_MAX && ay > 1.2*GSL_SQRT_DBL_MIN) + ) { + const double ex = exp(x); + result->val = y * ex; + result->err = (2.0 + fabs(x)) * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else { + const double ly = log(ay); + const double lnr = x + ly; + + if(lnr > GSL_LOG_DBL_MAX - 0.01) { + OVERFLOW_ERROR(result); + } + else if(lnr < GSL_LOG_DBL_MIN + 0.01) { + UNDERFLOW_ERROR(result); + } + else { + const double sy = GSL_SIGN(y); + const double M = floor(x); + const double N = floor(ly); + const double a = x - M; + const double b = ly - N; + const double berr = 2.0 * GSL_DBL_EPSILON * (fabs(ly) + fabs(N)); + result->val = sy * exp(M+N) * exp(a+b); + result->err = berr * fabs(result->val); + result->err += 2.0 * GSL_DBL_EPSILON * (M + N + 1.0) * fabs(result->val); + return GSL_SUCCESS; + } + } +} + + +int gsl_sf_exp_mult_e10_e(const double x, const double y, gsl_sf_result_e10 * result) +{ + const double ay = fabs(y); + + if(y == 0.0) { + result->val = 0.0; + result->err = 0.0; + result->e10 = 0; + return GSL_SUCCESS; + } + else if( ( x < 0.5*GSL_LOG_DBL_MAX && x > 0.5*GSL_LOG_DBL_MIN) + && (ay < 0.8*GSL_SQRT_DBL_MAX && ay > 1.2*GSL_SQRT_DBL_MIN) + ) { + const double ex = exp(x); + result->val = y * ex; + result->err = (2.0 + fabs(x)) * GSL_DBL_EPSILON * fabs(result->val); + result->e10 = 0; + return GSL_SUCCESS; + } + else { + const double ly = log(ay); + const double l10_val = (x + ly)/M_LN10; + + if(l10_val > INT_MAX-1) { + OVERFLOW_ERROR_E10(result); + } + else if(l10_val < INT_MIN+1) { + UNDERFLOW_ERROR_E10(result); + } + else { + const double sy = GSL_SIGN(y); + const int N = (int) floor(l10_val); + const double arg_val = (l10_val - N) * M_LN10; + const double arg_err = 2.0 * GSL_DBL_EPSILON * (fabs(x) + fabs(ly) + M_LN10*fabs(N)); + + result->val = sy * exp(arg_val); + result->err = arg_err * fabs(result->val); + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + result->e10 = N; + + return GSL_SUCCESS; + } + } +} + + +int gsl_sf_exp_mult_err_e(const double x, const double dx, + const double y, const double dy, + gsl_sf_result * result) +{ + const double ay = fabs(y); + + if(y == 0.0) { + result->val = 0.0; + result->err = fabs(dy * exp(x)); + return GSL_SUCCESS; + } + else if( ( x < 0.5*GSL_LOG_DBL_MAX && x > 0.5*GSL_LOG_DBL_MIN) + && (ay < 0.8*GSL_SQRT_DBL_MAX && ay > 1.2*GSL_SQRT_DBL_MIN) + ) { + double ex = exp(x); + result->val = y * ex; + result->err = ex * (fabs(dy) + fabs(y*dx)); + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else { + const double ly = log(ay); + const double lnr = x + ly; + + if(lnr > GSL_LOG_DBL_MAX - 0.01) { + OVERFLOW_ERROR(result); + } + else if(lnr < GSL_LOG_DBL_MIN + 0.01) { + UNDERFLOW_ERROR(result); + } + else { + const double sy = GSL_SIGN(y); + const double M = floor(x); + const double N = floor(ly); + const double a = x - M; + const double b = ly - N; + const double eMN = exp(M+N); + const double eab = exp(a+b); + result->val = sy * eMN * eab; + result->err = eMN * eab * 2.0*GSL_DBL_EPSILON; + result->err += eMN * eab * fabs(dy/y); + result->err += eMN * eab * fabs(dx); + return GSL_SUCCESS; + } + } +} + + +int gsl_sf_exp_mult_err_e10_e(const double x, const double dx, + const double y, const double dy, + gsl_sf_result_e10 * result) +{ + const double ay = fabs(y); + + if(y == 0.0) { + result->val = 0.0; + result->err = fabs(dy * exp(x)); + result->e10 = 0; + return GSL_SUCCESS; + } + else if( ( x < 0.5*GSL_LOG_DBL_MAX && x > 0.5*GSL_LOG_DBL_MIN) + && (ay < 0.8*GSL_SQRT_DBL_MAX && ay > 1.2*GSL_SQRT_DBL_MIN) + ) { + const double ex = exp(x); + result->val = y * ex; + result->err = ex * (fabs(dy) + fabs(y*dx)); + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + result->e10 = 0; + return GSL_SUCCESS; + } + else { + const double ly = log(ay); + const double l10_val = (x + ly)/M_LN10; + + if(l10_val > INT_MAX-1) { + OVERFLOW_ERROR_E10(result); + } + else if(l10_val < INT_MIN+1) { + UNDERFLOW_ERROR_E10(result); + } + else { + const double sy = GSL_SIGN(y); + const int N = (int) floor(l10_val); + const double arg_val = (l10_val - N) * M_LN10; + const double arg_err = dy/fabs(y) + dx + 2.0*GSL_DBL_EPSILON*fabs(arg_val); + + result->val = sy * exp(arg_val); + result->err = arg_err * fabs(result->val); + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + result->e10 = N; + + return GSL_SUCCESS; + } + } +} + + +int gsl_sf_expm1_e(const double x, gsl_sf_result * result) +{ + const double cut = 0.002; + + if(x < GSL_LOG_DBL_MIN) { + result->val = -1.0; + result->err = GSL_DBL_EPSILON; + return GSL_SUCCESS; + } + else if(x < -cut) { + result->val = exp(x) - 1.0; + result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else if(x < cut) { + result->val = x * (1.0 + 0.5*x*(1.0 + x/3.0*(1.0 + 0.25*x*(1.0 + 0.2*x)))); + result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else if(x < GSL_LOG_DBL_MAX) { + result->val = exp(x) - 1.0; + result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else { + OVERFLOW_ERROR(result); + } +} + + +int gsl_sf_exprel_e(const double x, gsl_sf_result * result) +{ + const double cut = 0.002; + + if(x < GSL_LOG_DBL_MIN) { + result->val = -1.0/x; + result->err = GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else if(x < -cut) { + result->val = (exp(x) - 1.0)/x; + result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else if(x < cut) { + result->val = (1.0 + 0.5*x*(1.0 + x/3.0*(1.0 + 0.25*x*(1.0 + 0.2*x)))); + result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else if(x < GSL_LOG_DBL_MAX) { + result->val = (exp(x) - 1.0)/x; + result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else { + OVERFLOW_ERROR(result); + } +} + + +int gsl_sf_exprel_2_e(double x, gsl_sf_result * result) +{ + const double cut = 0.002; + + if(x < GSL_LOG_DBL_MIN) { + result->val = -2.0/x*(1.0 + 1.0/x); + result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else if(x < -cut) { + result->val = 2.0*(exp(x) - 1.0 - x)/(x*x); + result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else if(x < cut) { + result->val = (1.0 + 1.0/3.0*x*(1.0 + 0.25*x*(1.0 + 0.2*x*(1.0 + 1.0/6.0*x)))); + result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else if(x < GSL_LOG_DBL_MAX) { + result->val = 2.0*(exp(x) - 1.0 - x)/(x*x); + result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else { + OVERFLOW_ERROR(result); + } +} + + +int +gsl_sf_exprel_n_CF_e(const double N, const double x, gsl_sf_result * result) +{ + return exprel_n_CF(N, x, result); +} + +int +gsl_sf_exprel_n_e(const int N, const double x, gsl_sf_result * result) +{ + if(N < 0) { + DOMAIN_ERROR(result); + } + else if(x == 0.0) { + result->val = 1.0; + result->err = 0.0; + return GSL_SUCCESS; + } + else if(fabs(x) < GSL_ROOT3_DBL_EPSILON * N) { + result->val = 1.0 + x/(N+1) * (1.0 + x/(N+2)); + result->err = 2.0 * GSL_DBL_EPSILON; + return GSL_SUCCESS; + } + else if(N == 0) { + return gsl_sf_exp_e(x, result); + } + else if(N == 1) { + return gsl_sf_exprel_e(x, result); + } + else if(N == 2) { + return gsl_sf_exprel_2_e(x, result); + } + else { + if(x > N && (-x + N*(1.0 + log(x/N)) < GSL_LOG_DBL_EPSILON)) { + /* x is much larger than n. + * Ignore polynomial part, so + * exprel_N(x) ~= e^x N!/x^N + */ + gsl_sf_result lnf_N; + double lnr_val; + double lnr_err; + double lnterm; + gsl_sf_lnfact_e(N, &lnf_N); + lnterm = N*log(x); + lnr_val = x + lnf_N.val - lnterm; + lnr_err = GSL_DBL_EPSILON * (fabs(x) + fabs(lnf_N.val) + fabs(lnterm)); + lnr_err += lnf_N.err; + return gsl_sf_exp_err_e(lnr_val, lnr_err, result); + } + else if(x > N) { + /* Write the identity + * exprel_n(x) = e^x n! / x^n (1 - Gamma[n,x]/Gamma[n]) + * then use the asymptotic expansion + * Gamma[n,x] ~ x^(n-1) e^(-x) (1 + (n-1)/x + (n-1)(n-2)/x^2 + ...) + */ + double ln_x = log(x); + gsl_sf_result lnf_N; + double lg_N; + double lnpre_val; + double lnpre_err; + gsl_sf_lnfact_e(N, &lnf_N); /* log(N!) */ + lg_N = lnf_N.val - log(N); /* log(Gamma(N)) */ + lnpre_val = x + lnf_N.val - N*ln_x; + lnpre_err = GSL_DBL_EPSILON * (fabs(x) + fabs(lnf_N.val) + fabs(N*ln_x)); + lnpre_err += lnf_N.err; + if(lnpre_val < GSL_LOG_DBL_MAX - 5.0) { + int stat_eG; + gsl_sf_result bigG_ratio; + gsl_sf_result pre; + int stat_ex = gsl_sf_exp_err_e(lnpre_val, lnpre_err, &pre); + double ln_bigG_ratio_pre = -x + (N-1)*ln_x - lg_N; + double bigGsum = 1.0; + double term = 1.0; + int k; + for(k=1; kval = pre.val * (1.0 - bigG_ratio.val); + result->err = pre.val * (2.0*GSL_DBL_EPSILON + bigG_ratio.err); + result->err += pre.err * fabs(1.0 - bigG_ratio.val); + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return stat_ex; + } + else { + result->val = 0.0; + result->err = 0.0; + return stat_eG; + } + } + else { + OVERFLOW_ERROR(result); + } + } + else if(x > -10.0*N) { + return exprel_n_CF(N, x, result); + } + else { + /* x -> -Inf asymptotic: + * exprel_n(x) ~ e^x n!/x^n - n/x (1 + (n-1)/x + (n-1)(n-2)/x + ...) + * ~ - n/x (1 + (n-1)/x + (n-1)(n-2)/x + ...) + */ + double sum = 1.0; + double term = 1.0; + int k; + for(k=1; kval = -N/x * sum; + result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + } +} + + +int +gsl_sf_exp_err_e(const double x, const double dx, gsl_sf_result * result) +{ + const double adx = fabs(dx); + + /* CHECK_POINTER(result) */ + + if(x + adx > GSL_LOG_DBL_MAX) { + OVERFLOW_ERROR(result); + } + else if(x - adx < GSL_LOG_DBL_MIN) { + UNDERFLOW_ERROR(result); + } + else { + const double ex = exp(x); + const double edx = exp(adx); + result->val = ex; + result->err = ex * GSL_MAX_DBL(GSL_DBL_EPSILON, edx - 1.0/edx); + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } +} + + +int +gsl_sf_exp_err_e10_e(const double x, const double dx, gsl_sf_result_e10 * result) +{ + const double adx = fabs(dx); + + /* CHECK_POINTER(result) */ + + if(x + adx > INT_MAX - 1) { + OVERFLOW_ERROR_E10(result); + } + else if(x - adx < INT_MIN + 1) { + UNDERFLOW_ERROR_E10(result); + } + else { + const int N = (int)floor(x/M_LN10); + const double ex = exp(x-N*M_LN10); + result->val = ex; + result->err = ex * (2.0 * GSL_DBL_EPSILON * (fabs(x) + 1.0) + adx); + result->e10 = N; + return GSL_SUCCESS; + } +} + + +/*-*-*-*-*-*-*-*-*-* Functions w/ Natural Prototypes *-*-*-*-*-*-*-*-*-*-*/ + +#include "eval.h" + +double gsl_sf_exp(const double x) +{ + EVAL_RESULT(gsl_sf_exp_e(x, &result)); +} + +double gsl_sf_exp_mult(const double x, const double y) +{ + EVAL_RESULT(gsl_sf_exp_mult_e(x, y, &result)); +} + +double gsl_sf_expm1(const double x) +{ + EVAL_RESULT(gsl_sf_expm1_e(x, &result)); +} + +double gsl_sf_exprel(const double x) +{ + EVAL_RESULT(gsl_sf_exprel_e(x, &result)); +} + +double gsl_sf_exprel_2(const double x) +{ + EVAL_RESULT(gsl_sf_exprel_2_e(x, &result)); +} + +double gsl_sf_exprel_n(const int n, const double x) +{ + EVAL_RESULT(gsl_sf_exprel_n_e(n, x, &result)); +} diff --git a/gsl-2.5/specfunc/exp.lo b/gsl-2.5/specfunc/exp.lo new file mode 100644 index 00000000..57f14002 --- /dev/null +++ b/gsl-2.5/specfunc/exp.lo @@ -0,0 +1,12 @@ +# exp.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/exp.o' + +# Name of the non-PIC object +non_pic_object='exp.o' + diff --git a/gsl-2.5/specfunc/expint.c b/gsl-2.5/specfunc/expint.c new file mode 100644 index 00000000..c8b25531 --- /dev/null +++ b/gsl-2.5/specfunc/expint.c @@ -0,0 +1,581 @@ +/* specfunc/expint.c + * + * Copyright (C) 2007 Brian Gough + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ + +#include +#include +#include +#include +#include + +#include "error.h" +#include "check.h" + +#include "chebyshev.h" +#include "cheb_eval.c" + +/*-*-*-*-*-*-*-*-*-*-*-* Private Section *-*-*-*-*-*-*-*-*-*-*-*/ + +/* + Chebyshev expansions: based on SLATEC e1.f, W. Fullerton + + Series for AE11 on the interval -1.00000D-01 to 0. + with weighted error 1.76E-17 + log weighted error 16.75 + significant figures required 15.70 + decimal places required 17.55 + + + Series for AE12 on the interval -2.50000D-01 to -1.00000D-01 + with weighted error 5.83E-17 + log weighted error 16.23 + significant figures required 15.76 + decimal places required 16.93 + + + Series for E11 on the interval -4.00000D+00 to -1.00000D+00 + with weighted error 1.08E-18 + log weighted error 17.97 + significant figures required 19.02 + decimal places required 18.61 + + + Series for E12 on the interval -1.00000D+00 to 1.00000D+00 + with weighted error 3.15E-18 + log weighted error 17.50 + approx significant figures required 15.8 + decimal places required 18.10 + + + Series for AE13 on the interval 2.50000D-01 to 1.00000D+00 + with weighted error 2.34E-17 + log weighted error 16.63 + significant figures required 16.14 + decimal places required 17.33 + + + Series for AE14 on the interval 0. to 2.50000D-01 + with weighted error 5.41E-17 + log weighted error 16.27 + significant figures required 15.38 + decimal places required 16.97 +*/ + +static double AE11_data[39] = { + 0.121503239716065790, + -0.065088778513550150, + 0.004897651357459670, + -0.000649237843027216, + 0.000093840434587471, + 0.000000420236380882, + -0.000008113374735904, + 0.000002804247688663, + 0.000000056487164441, + -0.000000344809174450, + 0.000000058209273578, + 0.000000038711426349, + -0.000000012453235014, + -0.000000005118504888, + 0.000000002148771527, + 0.000000000868459898, + -0.000000000343650105, + -0.000000000179796603, + 0.000000000047442060, + 0.000000000040423282, + -0.000000000003543928, + -0.000000000008853444, + -0.000000000000960151, + 0.000000000001692921, + 0.000000000000607990, + -0.000000000000224338, + -0.000000000000200327, + -0.000000000000006246, + 0.000000000000045571, + 0.000000000000016383, + -0.000000000000005561, + -0.000000000000006074, + -0.000000000000000862, + 0.000000000000001223, + 0.000000000000000716, + -0.000000000000000024, + -0.000000000000000201, + -0.000000000000000082, + 0.000000000000000017 +}; +static cheb_series AE11_cs = { + AE11_data, + 38, + -1, 1, + 20 +}; + +static double AE12_data[25] = { + 0.582417495134726740, + -0.158348850905782750, + -0.006764275590323141, + 0.005125843950185725, + 0.000435232492169391, + -0.000143613366305483, + -0.000041801320556301, + -0.000002713395758640, + 0.000001151381913647, + 0.000000420650022012, + 0.000000066581901391, + 0.000000000662143777, + -0.000000002844104870, + -0.000000000940724197, + -0.000000000177476602, + -0.000000000015830222, + 0.000000000002905732, + 0.000000000001769356, + 0.000000000000492735, + 0.000000000000093709, + 0.000000000000010707, + -0.000000000000000537, + -0.000000000000000716, + -0.000000000000000244, + -0.000000000000000058 +}; +static cheb_series AE12_cs = { + AE12_data, + 24, + -1, 1, + 15 +}; + +static double E11_data[19] = { + -16.11346165557149402600, + 7.79407277874268027690, + -1.95540581886314195070, + 0.37337293866277945612, + -0.05692503191092901938, + 0.00721107776966009185, + -0.00078104901449841593, + 0.00007388093356262168, + -0.00000620286187580820, + 0.00000046816002303176, + -0.00000003209288853329, + 0.00000000201519974874, + -0.00000000011673686816, + 0.00000000000627627066, + -0.00000000000031481541, + 0.00000000000001479904, + -0.00000000000000065457, + 0.00000000000000002733, + -0.00000000000000000108 +}; +static cheb_series E11_cs = { + E11_data, + 18, + -1, 1, + 13 +}; + +static double E12_data[16] = { + -0.03739021479220279500, + 0.04272398606220957700, + -0.13031820798497005440, + 0.01441912402469889073, + -0.00134617078051068022, + 0.00010731029253063780, + -0.00000742999951611943, + 0.00000045377325690753, + -0.00000002476417211390, + 0.00000000122076581374, + -0.00000000005485141480, + 0.00000000000226362142, + -0.00000000000008635897, + 0.00000000000000306291, + -0.00000000000000010148, + 0.00000000000000000315 +}; +static cheb_series E12_cs = { + E12_data, + 15, + -1, 1, + 10 +}; + +static double AE13_data[25] = { + -0.605773246640603460, + -0.112535243483660900, + 0.013432266247902779, + -0.001926845187381145, + 0.000309118337720603, + -0.000053564132129618, + 0.000009827812880247, + -0.000001885368984916, + 0.000000374943193568, + -0.000000076823455870, + 0.000000016143270567, + -0.000000003466802211, + 0.000000000758754209, + -0.000000000168864333, + 0.000000000038145706, + -0.000000000008733026, + 0.000000000002023672, + -0.000000000000474132, + 0.000000000000112211, + -0.000000000000026804, + 0.000000000000006457, + -0.000000000000001568, + 0.000000000000000383, + -0.000000000000000094, + 0.000000000000000023 +}; +static cheb_series AE13_cs = { + AE13_data, + 24, + -1, 1, + 15 +}; + +static double AE14_data[26] = { + -0.18929180007530170, + -0.08648117855259871, + 0.00722410154374659, + -0.00080975594575573, + 0.00010999134432661, + -0.00001717332998937, + 0.00000298562751447, + -0.00000056596491457, + 0.00000011526808397, + -0.00000002495030440, + 0.00000000569232420, + -0.00000000135995766, + 0.00000000033846628, + -0.00000000008737853, + 0.00000000002331588, + -0.00000000000641148, + 0.00000000000181224, + -0.00000000000052538, + 0.00000000000015592, + -0.00000000000004729, + 0.00000000000001463, + -0.00000000000000461, + 0.00000000000000148, + -0.00000000000000048, + 0.00000000000000016, + -0.00000000000000005 +}; +static cheb_series AE14_cs = { + AE14_data, + 25, + -1, 1, + 13 +}; + + + +/* implementation for E1, allowing for scaling by exp(x) */ +static +int expint_E1_impl(const double x, gsl_sf_result * result, const int scale) +{ + const double xmaxt = -GSL_LOG_DBL_MIN; /* XMAXT = -LOG (R1MACH(1)) */ + const double xmax = xmaxt - log(xmaxt); /* XMAX = XMAXT - LOG(XMAXT) */ + + /* CHECK_POINTER(result) */ + + if(x < -xmax && !scale) { + OVERFLOW_ERROR(result); + } + else if(x <= -10.0) { + const double s = 1.0/x * ( scale ? 1.0 : exp(-x) ); + gsl_sf_result result_c; + cheb_eval_e(&AE11_cs, 20.0/x+1.0, &result_c); + result->val = s * (1.0 + result_c.val); + result->err = s * result_c.err; + result->err += 2.0 * GSL_DBL_EPSILON * (fabs(x) + 1.0) * fabs(result->val); + return GSL_SUCCESS; + } + else if(x <= -4.0) { + const double s = 1.0/x * ( scale ? 1.0 : exp(-x) ); + gsl_sf_result result_c; + cheb_eval_e(&AE12_cs, (40.0/x+7.0)/3.0, &result_c); + result->val = s * (1.0 + result_c.val); + result->err = s * result_c.err; + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else if(x <= -1.0) { + const double ln_term = -log(fabs(x)); + const double scale_factor = ( scale ? exp(x) : 1.0 ); + gsl_sf_result result_c; + cheb_eval_e(&E11_cs, (2.0*x+5.0)/3.0, &result_c); + result->val = scale_factor * (ln_term + result_c.val); + result->err = scale_factor * (result_c.err + GSL_DBL_EPSILON * fabs(ln_term)); + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else if(x == 0.0) { + DOMAIN_ERROR(result); + } + else if(x <= 1.0) { + const double ln_term = -log(fabs(x)); + const double scale_factor = ( scale ? exp(x) : 1.0 ); + gsl_sf_result result_c; + cheb_eval_e(&E12_cs, x, &result_c); + result->val = scale_factor * (ln_term - 0.6875 + x + result_c.val); + result->err = scale_factor * (result_c.err + GSL_DBL_EPSILON * fabs(ln_term)); + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else if(x <= 4.0) { + const double s = 1.0/x * ( scale ? 1.0 : exp(-x) ); + gsl_sf_result result_c; + cheb_eval_e(&AE13_cs, (8.0/x-5.0)/3.0, &result_c); + result->val = s * (1.0 + result_c.val); + result->err = s * result_c.err; + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else if(x <= xmax || scale) { + const double s = 1.0/x * ( scale ? 1.0 : exp(-x) ); + gsl_sf_result result_c; + cheb_eval_e(&AE14_cs, 8.0/x-1.0, &result_c); + result->val = s * (1.0 + result_c.val); + result->err = s * (GSL_DBL_EPSILON + result_c.err); + result->err += 2.0 * (x + 1.0) * GSL_DBL_EPSILON * fabs(result->val); + if(result->val == 0.0) + UNDERFLOW_ERROR(result); + else + return GSL_SUCCESS; + } + else { + UNDERFLOW_ERROR(result); + } +} + + +static +int expint_E2_impl(const double x, gsl_sf_result * result, const int scale) +{ + const double xmaxt = -GSL_LOG_DBL_MIN; + const double xmax = xmaxt - log(xmaxt); + + /* CHECK_POINTER(result) */ + + if(x < -xmax && !scale) { + OVERFLOW_ERROR(result); + } + else if (x == 0.0) { + result->val = 1.0; + result->err = 0.0; + return GSL_SUCCESS; + } else if(x < 100.0) { + const double ex = ( scale ? 1.0 : exp(-x) ); + gsl_sf_result result_E1; + int stat_E1 = expint_E1_impl(x, &result_E1, scale); + result->val = ex - x*result_E1.val; + result->err = GSL_DBL_EPSILON*ex + fabs(x) * result_E1.err; + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return stat_E1; + } + else if(x < xmax || scale) { + const double s = ( scale ? 1.0 : exp(-x) ); + const double c1 = -2.0; + const double c2 = 6.0; + const double c3 = -24.0; + const double c4 = 120.0; + const double c5 = -720.0; + const double c6 = 5040.0; + const double c7 = -40320.0; + const double c8 = 362880.0; + const double c9 = -3628800.0; + const double c10 = 39916800.0; + const double c11 = -479001600.0; + const double c12 = 6227020800.0; + const double c13 = -87178291200.0; + const double y = 1.0/x; + const double sum6 = c6+y*(c7+y*(c8+y*(c9+y*(c10+y*(c11+y*(c12+y*c13)))))); + const double sum = y*(c1+y*(c2+y*(c3+y*(c4+y*(c5+y*sum6))))); + result->val = s * (1.0 + sum)/x; + result->err = 2.0 * (x + 1.0) * GSL_DBL_EPSILON * result->val; + if(result->val == 0.0) + UNDERFLOW_ERROR(result); + else + return GSL_SUCCESS; + } + else { + UNDERFLOW_ERROR(result); + } +} + +static +int expint_En_impl(const int n, const double x, gsl_sf_result * result, const int scale) +{ + if (n < 0) { + DOMAIN_ERROR(result); + } else if (n == 0) { + if (x == 0) { + DOMAIN_ERROR(result); + } else { + result->val = (scale ? 1.0 : exp(-x)) / x; + result->err = 2 * GSL_DBL_EPSILON * fabs(result->val); + CHECK_UNDERFLOW(result); + return GSL_SUCCESS; + } + } else if (n == 1) { + return expint_E1_impl(x, result, scale); + } else if (n == 2) { + return expint_E2_impl(x, result, scale); + } else { + if(x < 0) { + DOMAIN_ERROR(result); + } + if (x == 0) { + result->val = (scale ? exp(x) : 1 ) * (1/(n-1.0)); + result->err = 2 * GSL_DBL_EPSILON * fabs(result->val); + CHECK_UNDERFLOW(result); + return GSL_SUCCESS; + } else { + gsl_sf_result result_g; + double prefactor = pow(x, n-1); + int status = gsl_sf_gamma_inc_e (1-n, x, &result_g); + double scale_factor = ( scale ? exp(x) : 1.0 ); + result->val = scale_factor * prefactor * result_g.val; + result->err = 2 * GSL_DBL_EPSILON * fabs(result->val); + result->err += 2 * fabs(scale_factor * prefactor * result_g.err); + if (status == GSL_SUCCESS) CHECK_UNDERFLOW(result); + return status; + } + } +} + +/*-*-*-*-*-*-*-*-*-*-*-* Functions with Error Codes *-*-*-*-*-*-*-*-*-*-*-*/ + + +int gsl_sf_expint_E1_e(const double x, gsl_sf_result * result) +{ + return expint_E1_impl(x, result, 0); +} + + +int gsl_sf_expint_E1_scaled_e(const double x, gsl_sf_result * result) +{ + return expint_E1_impl(x, result, 1); +} + + +int gsl_sf_expint_E2_e(const double x, gsl_sf_result * result) +{ + return expint_E2_impl(x, result, 0); +} + + +int gsl_sf_expint_E2_scaled_e(const double x, gsl_sf_result * result) +{ + return expint_E2_impl(x, result, 1); +} + +int gsl_sf_expint_En_e(const int n, const double x, gsl_sf_result * result) +{ + return expint_En_impl(n, x, result, 0); +} + + +int gsl_sf_expint_En_scaled_e(const int n, const double x, gsl_sf_result * result) +{ + return expint_En_impl(n, x, result, 1); +} + + +int gsl_sf_expint_Ei_e(const double x, gsl_sf_result * result) +{ + /* CHECK_POINTER(result) */ + + { + int status = gsl_sf_expint_E1_e(-x, result); + result->val = -result->val; + return status; + } +} + + +int gsl_sf_expint_Ei_scaled_e(const double x, gsl_sf_result * result) +{ + /* CHECK_POINTER(result) */ + + { + int status = gsl_sf_expint_E1_scaled_e(-x, result); + result->val = -result->val; + return status; + } +} + + +#if 0 +static double recurse_En(int n, double x, double E1) +{ + int i; + double En = E1; + double ex = exp(-x); + for(i=2; i<=n; i++) { + En = 1./(i-1) * (ex - x * En); + } + return En; +} +#endif + + +/*-*-*-*-*-*-*-*-*-* Functions w/ Natural Prototypes *-*-*-*-*-*-*-*-*-*-*/ + +#include "eval.h" + +double gsl_sf_expint_E1(const double x) +{ + EVAL_RESULT(gsl_sf_expint_E1_e(x, &result)); +} + +double gsl_sf_expint_E1_scaled(const double x) +{ + EVAL_RESULT(gsl_sf_expint_E1_scaled_e(x, &result)); +} + +double gsl_sf_expint_E2(const double x) +{ + EVAL_RESULT(gsl_sf_expint_E2_e(x, &result)); +} + +double gsl_sf_expint_E2_scaled(const double x) +{ + EVAL_RESULT(gsl_sf_expint_E2_scaled_e(x, &result)); +} + +double gsl_sf_expint_En(const int n, const double x) +{ + EVAL_RESULT(gsl_sf_expint_En_e(n, x, &result)); +} + +double gsl_sf_expint_En_scaled(const int n, const double x) +{ + EVAL_RESULT(gsl_sf_expint_En_scaled_e(n, x, &result)); +} + +double gsl_sf_expint_Ei(const double x) +{ + EVAL_RESULT(gsl_sf_expint_Ei_e(x, &result)); +} + +double gsl_sf_expint_Ei_scaled(const double x) +{ + EVAL_RESULT(gsl_sf_expint_Ei_scaled_e(x, &result)); +} diff --git a/gsl-2.5/specfunc/expint.lo b/gsl-2.5/specfunc/expint.lo new file mode 100644 index 00000000..ead38c93 --- /dev/null +++ b/gsl-2.5/specfunc/expint.lo @@ -0,0 +1,12 @@ +# expint.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/expint.o' + +# Name of the non-PIC object +non_pic_object='expint.o' + diff --git a/gsl-2.5/specfunc/expint3.c b/gsl-2.5/specfunc/expint3.c new file mode 100644 index 00000000..91bb7e07 --- /dev/null +++ b/gsl-2.5/specfunc/expint3.c @@ -0,0 +1,146 @@ +/* specfunc/expint3.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ + +#include +#include +#include +#include + +#include "error.h" + +#include "chebyshev.h" +#include "cheb_eval.c" + +static double expint3_data[24] = { + 1.269198414221126014, + -0.248846446384140982, + 0.80526220717231041e-01, + -0.25772733251968330e-01, + 0.7599878873073774e-02, + -0.2030695581940405e-02, + 0.490834586699330e-03, + -0.107682239142021e-03, + 0.21551726264290e-04, + -0.3956705137384e-05, + 0.6699240933896e-06, + -0.105132180807e-06, + 0.15362580199e-07, + -0.20990960364e-08, + 0.2692109538e-09, + -0.325195242e-10, + 0.37114816e-11, + -0.4013652e-12, + 0.412334e-13, + -0.40338e-14, + 0.3766e-15, + -0.336e-16, + 0.29e-17, + -0.2e-18 +}; +static cheb_series expint3_cs = { + expint3_data, + 23, + -1.0, 1.0, + 15 +}; + +static double expint3a_data[23] = { + 1.9270464955068273729, + -0.349293565204813805e-01, + 0.14503383718983009e-02, + -0.8925336718327903e-04, + 0.70542392191184e-05, + -0.6671727454761e-06, + 0.724267589982e-07, + -0.87825825606e-08, + 0.11672234428e-08, + -0.1676631281e-09, + 0.257550158e-10, + -0.41957888e-11, + 0.7201041e-12, + -0.1294906e-12, + 0.24287e-13, + -0.47331e-14, + 0.95531e-15, + -0.1991e-15, + 0.428e-16, + -0.94e-17, + 0.21e-17, + -0.5e-18, + 0.1e-18 +}; +static cheb_series expint3a_cs = { + expint3a_data, + 22, + -1.0, 1.0, + 10 +}; + + +/*-*-*-*-*-*-*-*-*-*-*-* Functions with Error Codes *-*-*-*-*-*-*-*-*-*-*-*/ + +int gsl_sf_expint_3_e(const double x, gsl_sf_result * result) +{ + const double val_infinity = 0.892979511569249211; + + /* CHECK_POINTER(result) */ + + if(x < 0.0) { + DOMAIN_ERROR(result); + } + else if(x < 1.6*GSL_ROOT3_DBL_EPSILON) { + result->val = x; + result->err = 0.0; + return GSL_SUCCESS; + } + else if(x <= 2.0) { + const double t = x*x*x/4.0 - 1.0; + gsl_sf_result result_c; + cheb_eval_e(&expint3_cs, t, &result_c); + result->val = x * result_c.val; + result->err = x * result_c.err; + return GSL_SUCCESS; + } + else if(x < pow(-GSL_LOG_DBL_EPSILON, 1.0/3.0)) { + const double t = 16.0/(x*x*x) - 1.0; + const double s = exp(-x*x*x)/(3.0*x*x); + gsl_sf_result result_c; + cheb_eval_e(&expint3a_cs, t, &result_c); + result->val = val_infinity - result_c.val * s; + result->err = val_infinity * GSL_DBL_EPSILON + s * result_c.err; + return GSL_SUCCESS; + } + else { + result->val = val_infinity; + result->err = val_infinity * GSL_DBL_EPSILON; + return GSL_SUCCESS; + } +} + + +/*-*-*-*-*-*-*-*-*-* Functions w/ Natural Prototypes *-*-*-*-*-*-*-*-*-*-*/ + +#include "eval.h" + +double gsl_sf_expint_3(double x) +{ + EVAL_RESULT(gsl_sf_expint_3_e(x, &result)); +} diff --git a/gsl-2.5/specfunc/expint3.lo b/gsl-2.5/specfunc/expint3.lo new file mode 100644 index 00000000..a3dd848e --- /dev/null +++ b/gsl-2.5/specfunc/expint3.lo @@ -0,0 +1,12 @@ +# expint3.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/expint3.o' + +# Name of the non-PIC object +non_pic_object='expint3.o' + diff --git a/gsl-2.5/specfunc/fermi_dirac.c b/gsl-2.5/specfunc/fermi_dirac.c new file mode 100644 index 00000000..81beff43 --- /dev/null +++ b/gsl-2.5/specfunc/fermi_dirac.c @@ -0,0 +1,1633 @@ +/* specfunc/fermi_dirac.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "error.h" + +#include "chebyshev.h" +#include "cheb_eval.c" + +#define locEPS (1000.0*GSL_DBL_EPSILON) + + +/* Chebyshev fit for F_{1}(t); -1 < t < 1, -1 < x < 1 + */ +static double fd_1_a_data[22] = { + 1.8949340668482264365, + 0.7237719066890052793, + 0.1250000000000000000, + 0.0101065196435973942, + 0.0, + -0.0000600615242174119, + 0.0, + 6.816528764623e-7, + 0.0, + -9.5895779195e-9, + 0.0, + 1.515104135e-10, + 0.0, + -2.5785616e-12, + 0.0, + 4.62270e-14, + 0.0, + -8.612e-16, + 0.0, + 1.65e-17, + 0.0, + -3.e-19 +}; +static cheb_series fd_1_a_cs = { + fd_1_a_data, + 21, + -1, 1, + 12 +}; + + +/* Chebyshev fit for F_{1}(3/2(t+1) + 1); -1 < t < 1, 1 < x < 4 + */ +static double fd_1_b_data[22] = { + 10.409136795234611872, + 3.899445098225161947, + 0.513510935510521222, + 0.010618736770218426, + -0.001584468020659694, + 0.000146139297161640, + -1.408095734499e-6, + -2.177993899484e-6, + 3.91423660640e-7, + -2.3860262660e-8, + -4.138309573e-9, + 1.283965236e-9, + -1.39695990e-10, + -4.907743e-12, + 4.399878e-12, + -7.17291e-13, + 2.4320e-14, + 1.4230e-14, + -3.446e-15, + 2.93e-16, + 3.7e-17, + -1.6e-17 +}; +static cheb_series fd_1_b_cs = { + fd_1_b_data, + 21, + -1, 1, + 11 +}; + + +/* Chebyshev fit for F_{1}(3(t+1) + 4); -1 < t < 1, 4 < x < 10 + */ +static double fd_1_c_data[23] = { + 56.78099449124299762, + 21.00718468237668011, + 2.24592457063193457, + 0.00173793640425994, + -0.00058716468739423, + 0.00016306958492437, + -0.00003817425583020, + 7.64527252009e-6, + -1.31348500162e-6, + 1.9000646056e-7, + -2.141328223e-8, + 1.23906372e-9, + 2.1848049e-10, + -1.0134282e-10, + 2.484728e-11, + -4.73067e-12, + 7.3555e-13, + -8.740e-14, + 4.85e-15, + 1.23e-15, + -5.6e-16, + 1.4e-16, + -3.e-17 +}; +static cheb_series fd_1_c_cs = { + fd_1_c_data, + 22, + -1, 1, + 13 +}; + + +/* Chebyshev fit for F_{1}(x) / x^2 + * 10 < x < 30 + * -1 < t < 1 + * t = 1/10 (x-10) - 1 = x/10 - 2 + * x = 10(t+2) + */ +static double fd_1_d_data[30] = { + 1.0126626021151374442, + -0.0063312525536433793, + 0.0024837319237084326, + -0.0008764333697726109, + 0.0002913344438921266, + -0.0000931877907705692, + 0.0000290151342040275, + -8.8548707259955e-6, + 2.6603474114517e-6, + -7.891415690452e-7, + 2.315730237195e-7, + -6.73179452963e-8, + 1.94048035606e-8, + -5.5507129189e-9, + 1.5766090896e-9, + -4.449310875e-10, + 1.248292745e-10, + -3.48392894e-11, + 9.6791550e-12, + -2.6786240e-12, + 7.388852e-13, + -2.032828e-13, + 5.58115e-14, + -1.52987e-14, + 4.1886e-15, + -1.1458e-15, + 3.132e-16, + -8.56e-17, + 2.33e-17, + -5.9e-18 +}; +static cheb_series fd_1_d_cs = { + fd_1_d_data, + 29, + -1, 1, + 14 +}; + + +/* Chebyshev fit for F_{1}(x) / x^2 + * 30 < x < Inf + * -1 < t < 1 + * t = 60/x - 1 + * x = 60/(t+1) + */ +static double fd_1_e_data[10] = { + 1.0013707783890401683, + 0.0009138522593601060, + 0.0002284630648400133, + -1.57e-17, + -1.27e-17, + -9.7e-18, + -6.9e-18, + -4.6e-18, + -2.9e-18, + -1.7e-18 +}; +static cheb_series fd_1_e_cs = { + fd_1_e_data, + 9, + -1, 1, + 4 +}; + + +/* Chebyshev fit for F_{2}(t); -1 < t < 1, -1 < x < 1 + */ +static double fd_2_a_data[21] = { + 2.1573661917148458336, + 0.8849670334241132182, + 0.1784163467613519713, + 0.0208333333333333333, + 0.0012708226459768508, + 0.0, + -5.0619314244895e-6, + 0.0, + 4.32026533989e-8, + 0.0, + -4.870544166e-10, + 0.0, + 6.4203740e-12, + 0.0, + -9.37424e-14, + 0.0, + 1.4715e-15, + 0.0, + -2.44e-17, + 0.0, + 4.e-19 +}; +static cheb_series fd_2_a_cs = { + fd_2_a_data, + 20, + -1, 1, + 12 +}; + + +/* Chebyshev fit for F_{2}(3/2(t+1) + 1); -1 < t < 1, 1 < x < 4 + */ +static double fd_2_b_data[22] = { + 16.508258811798623599, + 7.421719394793067988, + 1.458309885545603821, + 0.128773850882795229, + 0.001963612026198147, + -0.000237458988738779, + 0.000018539661382641, + -1.92805649479e-7, + -2.01950028452e-7, + 3.2963497518e-8, + -1.885817092e-9, + -2.72632744e-10, + 8.0554561e-11, + -8.313223e-12, + -2.24489e-13, + 2.18778e-13, + -3.4290e-14, + 1.225e-15, + 5.81e-16, + -1.37e-16, + 1.2e-17, + 1.e-18 +}; +static cheb_series fd_2_b_cs = { + fd_2_b_data, + 21, + -1, 1, + 12 +}; + + +/* Chebyshev fit for F_{1}(3(t+1) + 4); -1 < t < 1, 4 < x < 10 + */ +static double fd_2_c_data[20] = { + 168.87129776686440711, + 81.80260488091659458, + 15.75408505947931513, + 1.12325586765966440, + 0.00059057505725084, + -0.00016469712946921, + 0.00003885607810107, + -7.89873660613e-6, + 1.39786238616e-6, + -2.1534528656e-7, + 2.831510953e-8, + -2.94978583e-9, + 1.6755082e-10, + 2.234229e-11, + -1.035130e-11, + 2.41117e-12, + -4.3531e-13, + 6.447e-14, + -7.39e-15, + 4.3e-16 +}; +static cheb_series fd_2_c_cs = { + fd_2_c_data, + 19, + -1, 1, + 12 +}; + + +/* Chebyshev fit for F_{1}(x) / x^3 + * 10 < x < 30 + * -1 < t < 1 + * t = 1/10 (x-10) - 1 = x/10 - 2 + * x = 10(t+2) + */ +static double fd_2_d_data[30] = { + 0.3459960518965277589, + -0.00633136397691958024, + 0.00248382959047594408, + -0.00087651191884005114, + 0.00029139255351719932, + -0.00009322746111846199, + 0.00002904021914564786, + -8.86962264810663e-6, + 2.66844972574613e-6, + -7.9331564996004e-7, + 2.3359868615516e-7, + -6.824790880436e-8, + 1.981036528154e-8, + -5.71940426300e-9, + 1.64379426579e-9, + -4.7064937566e-10, + 1.3432614122e-10, + -3.823400534e-11, + 1.085771994e-11, + -3.07727465e-12, + 8.7064848e-13, + -2.4595431e-13, + 6.938531e-14, + -1.954939e-14, + 5.50162e-15, + -1.54657e-15, + 4.3429e-16, + -1.2178e-16, + 3.394e-17, + -8.81e-18 +}; +static cheb_series fd_2_d_cs = { + fd_2_d_data, + 29, + -1, 1, + 14 +}; + + +/* Chebyshev fit for F_{2}(x) / x^3 + * 30 < x < Inf + * -1 < t < 1 + * t = 60/x - 1 + * x = 60/(t+1) + */ +static double fd_2_e_data[4] = { + 0.3347041117223735227, + 0.00091385225936012645, + 0.00022846306484003205, + 5.2e-19 +}; +static cheb_series fd_2_e_cs = { + fd_2_e_data, + 3, + -1, 1, + 3 +}; + + +/* Chebyshev fit for F_{-1/2}(t); -1 < t < 1, -1 < x < 1 + */ +static double fd_mhalf_a_data[20] = { + 1.2663290042859741974, + 0.3697876251911153071, + 0.0278131011214405055, + -0.0033332848565672007, + -0.0004438108265412038, + 0.0000616495177243839, + 8.7589611449897e-6, + -1.2622936986172e-6, + -1.837464037221e-7, + 2.69495091400e-8, + 3.9760866257e-9, + -5.894468795e-10, + -8.77321638e-11, + 1.31016571e-11, + 1.9621619e-12, + -2.945887e-13, + -4.43234e-14, + 6.6816e-15, + 1.0084e-15, + -1.561e-16 +}; +static cheb_series fd_mhalf_a_cs = { + fd_mhalf_a_data, + 19, + -1, 1, + 12 +}; + + +/* Chebyshev fit for F_{-1/2}(3/2(t+1) + 1); -1 < t < 1, 1 < x < 4 + */ +static double fd_mhalf_b_data[20] = { + 3.270796131942071484, + 0.5809004935853417887, + -0.0299313438794694987, + -0.0013287935412612198, + 0.0009910221228704198, + -0.0001690954939688554, + 6.5955849946915e-6, + 3.5953966033618e-6, + -9.430672023181e-7, + 8.75773958291e-8, + 1.06247652607e-8, + -4.9587006215e-9, + 7.160432795e-10, + 4.5072219e-12, + -2.3695425e-11, + 4.9122208e-12, + -2.905277e-13, + -9.59291e-14, + 3.00028e-14, + -3.4970e-15 +}; +static cheb_series fd_mhalf_b_cs = { + fd_mhalf_b_data, + 19, + -1, 1, + 12 +}; + + +/* Chebyshev fit for F_{-1/2}(3(t+1) + 4); -1 < t < 1, 4 < x < 10 + */ +static double fd_mhalf_c_data[25] = { + 5.828283273430595507, + 0.677521118293264655, + -0.043946248736481554, + 0.005825595781828244, + -0.000864858907380668, + 0.000110017890076539, + -6.973305225404e-6, + -1.716267414672e-6, + 8.59811582041e-7, + -2.33066786976e-7, + 4.8503191159e-8, + -8.130620247e-9, + 1.021068250e-9, + -5.3188423e-11, + -1.9430559e-11, + 8.750506e-12, + -2.324897e-12, + 4.83102e-13, + -8.1207e-14, + 1.0132e-14, + -4.64e-16, + -2.24e-16, + 9.7e-17, + -2.6e-17, + 5.e-18 +}; +static cheb_series fd_mhalf_c_cs = { + fd_mhalf_c_data, + 24, + -1, 1, + 13 +}; + + +/* Chebyshev fit for F_{-1/2}(x) / x^(1/2) + * 10 < x < 30 + * -1 < t < 1 + * t = 1/10 (x-10) - 1 = x/10 - 2 + */ +static double fd_mhalf_d_data[30] = { + 2.2530744202862438709, + 0.0018745152720114692, + -0.0007550198497498903, + 0.0002759818676644382, + -0.0000959406283465913, + 0.0000324056855537065, + -0.0000107462396145761, + 3.5126865219224e-6, + -1.1313072730092e-6, + 3.577454162766e-7, + -1.104926666238e-7, + 3.31304165692e-8, + -9.5837381008e-9, + 2.6575790141e-9, + -7.015201447e-10, + 1.747111336e-10, + -4.04909605e-11, + 8.5104999e-12, + -1.5261885e-12, + 1.876851e-13, + 1.00574e-14, + -1.82002e-14, + 8.6634e-15, + -3.2058e-15, + 1.0572e-15, + -3.259e-16, + 9.60e-17, + -2.74e-17, + 7.6e-18, + -1.9e-18 +}; +static cheb_series fd_mhalf_d_cs = { + fd_mhalf_d_data, + 29, + -1, 1, + 15 +}; + + +/* Chebyshev fit for F_{1/2}(t); -1 < t < 1, -1 < x < 1 + */ +static double fd_half_a_data[23] = { + 1.7177138871306189157, + 0.6192579515822668460, + 0.0932802275119206269, + 0.0047094853246636182, + -0.0004243667967864481, + -0.0000452569787686193, + 5.2426509519168e-6, + 6.387648249080e-7, + -8.05777004848e-8, + -1.04290272415e-8, + 1.3769478010e-9, + 1.847190359e-10, + -2.51061890e-11, + -3.4497818e-12, + 4.784373e-13, + 6.68828e-14, + -9.4147e-15, + -1.3333e-15, + 1.898e-16, + 2.72e-17, + -3.9e-18, + -6.e-19, + 1.e-19 +}; +static cheb_series fd_half_a_cs = { + fd_half_a_data, + 22, + -1, 1, + 11 +}; + + +/* Chebyshev fit for F_{1/2}(3/2(t+1) + 1); -1 < t < 1, 1 < x < 4 + */ +static double fd_half_b_data[20] = { + 7.651013792074984027, + 2.475545606866155737, + 0.218335982672476128, + -0.007730591500584980, + -0.000217443383867318, + 0.000147663980681359, + -0.000021586361321527, + 8.07712735394e-7, + 3.28858050706e-7, + -7.9474330632e-8, + 6.940207234e-9, + 6.75594681e-10, + -3.10200490e-10, + 4.2677233e-11, + -2.1696e-14, + -1.170245e-12, + 2.34757e-13, + -1.4139e-14, + -3.864e-15, + 1.202e-15 +}; +static cheb_series fd_half_b_cs = { + fd_half_b_data, + 19, + -1, 1, + 12 +}; + + +/* Chebyshev fit for F_{1/2}(3(t+1) + 4); -1 < t < 1, 4 < x < 10 + */ +static double fd_half_c_data[23] = { + 29.584339348839816528, + 8.808344283250615592, + 0.503771641883577308, + -0.021540694914550443, + 0.002143341709406890, + -0.000257365680646579, + 0.000027933539372803, + -1.678525030167e-6, + -2.78100117693e-7, + 1.35218065147e-7, + -3.3740425009e-8, + 6.474834942e-9, + -1.009678978e-9, + 1.20057555e-10, + -6.636314e-12, + -1.710566e-12, + 7.75069e-13, + -1.97973e-13, + 3.9414e-14, + -6.374e-15, + 7.77e-16, + -4.0e-17, + -1.4e-17 +}; +static cheb_series fd_half_c_cs = { + fd_half_c_data, + 22, + -1, 1, + 13 +}; + + +/* Chebyshev fit for F_{1/2}(x) / x^(3/2) + * 10 < x < 30 + * -1 < t < 1 + * t = 1/10 (x-10) - 1 = x/10 - 2 + */ +static double fd_half_d_data[30] = { + 1.5116909434145508537, + -0.0036043405371630468, + 0.0014207743256393359, + -0.0005045399052400260, + 0.0001690758006957347, + -0.0000546305872688307, + 0.0000172223228484571, + -5.3352603788706e-6, + 1.6315287543662e-6, + -4.939021084898e-7, + 1.482515450316e-7, + -4.41552276226e-8, + 1.30503160961e-8, + -3.8262599802e-9, + 1.1123226976e-9, + -3.204765534e-10, + 9.14870489e-11, + -2.58778946e-11, + 7.2550731e-12, + -2.0172226e-12, + 5.566891e-13, + -1.526247e-13, + 4.16121e-14, + -1.12933e-14, + 3.0537e-15, + -8.234e-16, + 2.215e-16, + -5.95e-17, + 1.59e-17, + -4.0e-18 +}; +static cheb_series fd_half_d_cs = { + fd_half_d_data, + 29, + -1, 1, + 15 +}; + + + +/* Chebyshev fit for F_{3/2}(t); -1 < t < 1, -1 < x < 1 + */ +static double fd_3half_a_data[20] = { + 2.0404775940601704976, + 0.8122168298093491444, + 0.1536371165644008069, + 0.0156174323847845125, + 0.0005943427879290297, + -0.0000429609447738365, + -3.8246452994606e-6, + 3.802306180287e-7, + 4.05746157593e-8, + -4.5530360159e-9, + -5.306873139e-10, + 6.37297268e-11, + 7.8403674e-12, + -9.840241e-13, + -1.255952e-13, + 1.62617e-14, + 2.1318e-15, + -2.825e-16, + -3.78e-17, + 5.1e-18 +}; +static cheb_series fd_3half_a_cs = { + fd_3half_a_data, + 19, + -1, 1, + 11 +}; + + +/* Chebyshev fit for F_{3/2}(3/2(t+1) + 1); -1 < t < 1, 1 < x < 4 + */ +static double fd_3half_b_data[22] = { + 13.403206654624176674, + 5.574508357051880924, + 0.931228574387527769, + 0.054638356514085862, + -0.001477172902737439, + -0.000029378553381869, + 0.000018357033493246, + -2.348059218454e-6, + 8.3173787440e-8, + 2.6826486956e-8, + -6.011244398e-9, + 4.94345981e-10, + 3.9557340e-11, + -1.7894930e-11, + 2.348972e-12, + -1.2823e-14, + -5.4192e-14, + 1.0527e-14, + -6.39e-16, + -1.47e-16, + 4.5e-17, + -5.e-18 +}; +static cheb_series fd_3half_b_cs = { + fd_3half_b_data, + 21, + -1, 1, + 12 +}; + + +/* Chebyshev fit for F_{3/2}(3(t+1) + 4); -1 < t < 1, 4 < x < 10 + */ +static double fd_3half_c_data[21] = { + 101.03685253378877642, + 43.62085156043435883, + 6.62241373362387453, + 0.25081415008708521, + -0.00798124846271395, + 0.00063462245101023, + -0.00006392178890410, + 6.04535131939e-6, + -3.4007683037e-7, + -4.072661545e-8, + 1.931148453e-8, + -4.46328355e-9, + 7.9434717e-10, + -1.1573569e-10, + 1.304658e-11, + -7.4114e-13, + -1.4181e-13, + 6.491e-14, + -1.597e-14, + 3.05e-15, + -4.8e-16 +}; +static cheb_series fd_3half_c_cs = { + fd_3half_c_data, + 20, + -1, 1, + 12 +}; + + +/* Chebyshev fit for F_{3/2}(x) / x^(5/2) + * 10 < x < 30 + * -1 < t < 1 + * t = 1/10 (x-10) - 1 = x/10 - 2 + */ +static double fd_3half_d_data[25] = { + 0.6160645215171852381, + -0.0071239478492671463, + 0.0027906866139659846, + -0.0009829521424317718, + 0.0003260229808519545, + -0.0001040160912910890, + 0.0000322931223232439, + -9.8243506588102e-6, + 2.9420132351277e-6, + -8.699154670418e-7, + 2.545460071999e-7, + -7.38305056331e-8, + 2.12545670310e-8, + -6.0796532462e-9, + 1.7294556741e-9, + -4.896540687e-10, + 1.380786037e-10, + -3.88057305e-11, + 1.08753212e-11, + -3.0407308e-12, + 8.485626e-13, + -2.364275e-13, + 6.57636e-14, + -1.81807e-14, + 4.6884e-15 +}; +static cheb_series fd_3half_d_cs = { + fd_3half_d_data, + 24, + -1, 1, + 16 +}; + + +/* Goano's modification of the Levin-u implementation. + * This is a simplification of the original WHIZ algorithm. + * See [Fessler et al., ACM Toms 9, 346 (1983)]. + */ +static +int +fd_whiz(const double term, const int iterm, + double * qnum, double * qden, + double * result, double * s) +{ + if(iterm == 0) *s = 0.0; + + *s += term; + + qden[iterm] = 1.0/(term*(iterm+1.0)*(iterm+1.0)); + qnum[iterm] = *s * qden[iterm]; + + if(iterm > 0) { + double factor = 1.0; + double ratio = iterm/(iterm+1.0); + int j; + for(j=iterm-1; j>=0; j--) { + double c = factor * (j+1.0) / (iterm+1.0); + factor *= ratio; + qden[j] = qden[j+1] - c * qden[j]; + qnum[j] = qnum[j+1] - c * qnum[j]; + } + } + + *result = qnum[0] / qden[0]; + return GSL_SUCCESS; +} + + +/* Handle case of integer j <= -2. + */ +static +int +fd_nint(const int j, const double x, gsl_sf_result * result) +{ +/* const int nsize = 100 + 1; */ + enum { + nsize = 100+1 + }; + double qcoeff[nsize]; + + if(j >= -1) { + result->val = 0.0; + result->err = 0.0; + GSL_ERROR ("error", GSL_ESANITY); + } + else if(j < -(nsize)) { + result->val = 0.0; + result->err = 0.0; + GSL_ERROR ("error", GSL_EUNIMPL); + } + else { + double a, p, f; + int i, k; + int n = -(j+1); + + qcoeff[1] = 1.0; + + for(k=2; k<=n; k++) { + qcoeff[k] = -qcoeff[k-1]; + for(i=k-1; i>=2; i--) { + qcoeff[i] = i*qcoeff[i] - (k-(i-1))*qcoeff[i-1]; + } + } + + if(x >= 0.0) { + a = exp(-x); + f = qcoeff[1]; + for(i=2; i<=n; i++) { + f = f*a + qcoeff[i]; + } + } + else { + a = exp(x); + f = qcoeff[n]; + for(i=n-1; i>=1; i--) { + f = f*a + qcoeff[i]; + } + } + + p = gsl_sf_pow_int(1.0+a, j); + result->val = f*a*p; + result->err = 3.0 * GSL_DBL_EPSILON * fabs(f*a*p); + return GSL_SUCCESS; + } +} + + +/* x < 0 + */ +static +int +fd_neg(const double j, const double x, gsl_sf_result * result) +{ + enum { + itmax = 100, + qsize = 100+1 + }; +/* const int itmax = 100; */ +/* const int qsize = 100 + 1; */ + double qnum[qsize], qden[qsize]; + + if(x < GSL_LOG_DBL_MIN) { + result->val = 0.0; + result->err = 0.0; + return GSL_SUCCESS; + } + else if(x < -1.0 && x < -fabs(j+1.0)) { + /* Simple series implementation. Avoid the + * complexity and extra work of the series + * acceleration method below. + */ + double ex = exp(x); + double term = ex; + double sum = term; + int n; + for(n=2; n<100; n++) { + double rat = (n-1.0)/n; + double p = pow(rat, j+1.0); + term *= -ex * p; + sum += term; + if(fabs(term/sum) < GSL_DBL_EPSILON) break; + } + result->val = sum; + result->err = 2.0 * GSL_DBL_EPSILON * fabs(sum); + return GSL_SUCCESS; + } + else { + double s = 0.0; + double xn = x; + double ex = -exp(x); + double enx = -ex; + double f = 0.0; + double f_previous; + int jterm; + for(jterm=0; jterm<=itmax; jterm++) { + double p = pow(jterm+1.0, j+1.0); + double term = enx/p; + f_previous = f; + fd_whiz(term, jterm, qnum, qden, &f, &s); + xn += x; + if(fabs(f-f_previous) < fabs(f)*2.0*GSL_DBL_EPSILON || xn < GSL_LOG_DBL_MIN) break; + enx *= ex; + } + + result->val = f; + result->err = fabs(f-f_previous); + result->err += 2.0 * GSL_DBL_EPSILON * fabs(f); + + if(jterm == itmax) + GSL_ERROR ("error", GSL_EMAXITER); + else + return GSL_SUCCESS; + } +} + + +/* asymptotic expansion + * j + 2.0 > 0.0 + */ +static +int +fd_asymp(const double j, const double x, gsl_sf_result * result) +{ + const int j_integer = ( fabs(j - floor(j+0.5)) < 100.0*GSL_DBL_EPSILON ); + const int itmax = 200; + gsl_sf_result lg; + int stat_lg = gsl_sf_lngamma_e(j + 2.0, &lg); + double seqn_val = 0.5; + double seqn_err = 0.0; + double xm2 = (1.0/x)/x; + double xgam = 1.0; + double add = GSL_DBL_MAX; + double cos_term; + double ln_x; + double ex_term_1; + double ex_term_2; + gsl_sf_result fneg; + gsl_sf_result ex_arg; + gsl_sf_result ex; + int stat_fneg; + int stat_e; + int n; + for(n=1; n<=itmax; n++) { + double add_previous = add; + gsl_sf_result eta; + gsl_sf_eta_int_e(2*n, &eta); + xgam = xgam * xm2 * (j + 1.0 - (2*n-2)) * (j + 1.0 - (2*n-1)); + add = eta.val * xgam; + if(!j_integer && fabs(add) > fabs(add_previous)) break; + if(fabs(add/seqn_val) < GSL_DBL_EPSILON) break; + seqn_val += add; + seqn_err += 2.0 * GSL_DBL_EPSILON * fabs(add); + } + seqn_err += fabs(add); + + stat_fneg = fd_neg(j, -x, &fneg); + ln_x = log(x); + ex_term_1 = (j+1.0)*ln_x; + ex_term_2 = lg.val; + ex_arg.val = ex_term_1 - ex_term_2; /*(j+1.0)*ln_x - lg.val; */ + ex_arg.err = GSL_DBL_EPSILON*(fabs(ex_term_1) + fabs(ex_term_2)) + lg.err; + stat_e = gsl_sf_exp_err_e(ex_arg.val, ex_arg.err, &ex); + cos_term = cos(j*M_PI); + result->val = cos_term * fneg.val + 2.0 * seqn_val * ex.val; + result->err = fabs(2.0 * ex.err * seqn_val); + result->err += fabs(2.0 * ex.val * seqn_err); + result->err += fabs(cos_term) * fneg.err; + result->err += 4.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_ERROR_SELECT_3(stat_e, stat_fneg, stat_lg); +} + + +/* Series evaluation for small x, generic j. + * [Goano (8)] + */ +#if 0 +static +int +fd_series(const double j, const double x, double * result) +{ + const int nmax = 1000; + int n; + double sum = 0.0; + double prev; + double pow_factor = 1.0; + double eta_factor; + gsl_sf_eta_e(j + 1.0, &eta_factor); + prev = pow_factor * eta_factor; + sum += prev; + for(n=1; n 0, integer j > 0; x < Pi. + * [Goano (8)] + */ +static +int +fd_series_int(const int j, const double x, gsl_sf_result * result) +{ + int n; + double sum = 0.0; + double del; + double pow_factor = 1.0; + gsl_sf_result eta_factor; + gsl_sf_eta_int_e(j + 1, &eta_factor); + del = pow_factor * eta_factor.val; + sum += del; + + /* Sum terms where the argument + * of eta() is positive. + */ + for(n=1; n<=j+2; n++) { + gsl_sf_eta_int_e(j+1-n, &eta_factor); + pow_factor *= x/n; + del = pow_factor * eta_factor.val; + sum += del; + if(fabs(del/sum) < GSL_DBL_EPSILON) break; + } + + /* Now sum the terms where eta() is negative. + * The argument of eta() must be odd as well, + * so it is convenient to transform the series + * as follows: + * + * Sum[ eta(j+1-n) x^n / n!, {n,j+4,Infinity}] + * = x^j / j! Sum[ eta(1-2m) x^(2m) j! / (2m+j)! , {m,2,Infinity}] + * + * We do not need to do this sum if j is large enough. + */ + if(j < 32) { + int m; + gsl_sf_result jfact; + double sum2; + double pre2; + + gsl_sf_fact_e((unsigned int)j, &jfact); + pre2 = gsl_sf_pow_int(x, j) / jfact.val; + + gsl_sf_eta_int_e(-3, &eta_factor); + pow_factor = x*x*x*x / ((j+4)*(j+3)*(j+2)*(j+1)); + sum2 = eta_factor.val * pow_factor; + + for(m=3; m<24; m++) { + gsl_sf_eta_int_e(1-2*m, &eta_factor); + pow_factor *= x*x / ((j+2*m)*(j+2*m-1)); + sum2 += eta_factor.val * pow_factor; + } + + sum += pre2 * sum2; + } + + result->val = sum; + result->err = 2.0 * GSL_DBL_EPSILON * fabs(sum); + + return GSL_SUCCESS; +} + + +/* series of hypergeometric functions for integer j > 0, x > 0 + * [Goano (7)] + */ +static +int +fd_UMseries_int(const int j, const double x, gsl_sf_result * result) +{ + const int nmax = 2000; + double pre; + double lnpre_val; + double lnpre_err; + double sum_even_val = 1.0; + double sum_even_err = 0.0; + double sum_odd_val = 0.0; + double sum_odd_err = 0.0; + int stat_sum; + int stat_e; + int stat_h = GSL_SUCCESS; + int n; + + if(x < 500.0 && j < 80) { + double p = gsl_sf_pow_int(x, j+1); + gsl_sf_result g; + gsl_sf_fact_e(j+1, &g); /* Gamma(j+2) */ + lnpre_val = 0.0; + lnpre_err = 0.0; + pre = p/g.val; + } + else { + double lnx = log(x); + gsl_sf_result lg; + gsl_sf_lngamma_e(j + 2.0, &lg); + lnpre_val = (j+1.0)*lnx - lg.val; + lnpre_err = 2.0 * GSL_DBL_EPSILON * fabs((j+1.0)*lnx) + lg.err; + pre = 1.0; + } + + /* Add up the odd terms of the sum. + */ + for(n=1; n= nmax ? GSL_EMAXITER : GSL_SUCCESS ); + stat_e = gsl_sf_exp_mult_err_e(lnpre_val, lnpre_err, + pre*(sum_even_val + sum_odd_val), + pre*(sum_even_err + sum_odd_err), + result); + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + + return GSL_ERROR_SELECT_3(stat_e, stat_h, stat_sum); +} + + +/*-*-*-*-*-*-*-*-*-*-*-* Functions with Error Codes *-*-*-*-*-*-*-*-*-*-*-*/ + +/* [Goano (4)] */ +int gsl_sf_fermi_dirac_m1_e(const double x, gsl_sf_result * result) +{ + if(x < GSL_LOG_DBL_MIN) { + UNDERFLOW_ERROR(result); + } + else if(x < 0.0) { + const double ex = exp(x); + result->val = ex/(1.0+ex); + result->err = 2.0 * (fabs(x) + 1.0) * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else { + double ex = exp(-x); + result->val = 1.0/(1.0 + ex); + result->err = 2.0 * GSL_DBL_EPSILON * (x + 1.0) * ex; + return GSL_SUCCESS; + } +} + + +/* [Goano (3)] */ +int gsl_sf_fermi_dirac_0_e(const double x, gsl_sf_result * result) +{ + if(x < GSL_LOG_DBL_MIN) { + UNDERFLOW_ERROR(result); + } + else if(x < -5.0) { + double ex = exp(x); + double ser = 1.0 - ex*(0.5 - ex*(1.0/3.0 - ex*(1.0/4.0 - ex*(1.0/5.0 - ex/6.0)))); + result->val = ex * ser; + result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else if(x < 10.0) { + result->val = log(1.0 + exp(x)); + result->err = fabs(x * GSL_DBL_EPSILON); + return GSL_SUCCESS; + } + else { + double ex = exp(-x); + result->val = x + ex * (1.0 - 0.5*ex + ex*ex/3.0 - ex*ex*ex/4.0); + result->err = (x + ex) * GSL_DBL_EPSILON; + return GSL_SUCCESS; + } +} + + +int gsl_sf_fermi_dirac_1_e(const double x, gsl_sf_result * result) +{ + if(x < GSL_LOG_DBL_MIN) { + UNDERFLOW_ERROR(result); + } + else if(x < -1.0) { + /* series [Goano (6)] + */ + double ex = exp(x); + double term = ex; + double sum = term; + int n; + for(n=2; n<100 ; n++) { + double rat = (n-1.0)/n; + term *= -ex * rat * rat; + sum += term; + if(fabs(term/sum) < GSL_DBL_EPSILON) break; + } + result->val = sum; + result->err = 2.0 * fabs(sum) * GSL_DBL_EPSILON; + return GSL_SUCCESS; + } + else if(x < 1.0) { + return cheb_eval_e(&fd_1_a_cs, x, result); + } + else if(x < 4.0) { + double t = 2.0/3.0*(x-1.0) - 1.0; + return cheb_eval_e(&fd_1_b_cs, t, result); + } + else if(x < 10.0) { + double t = 1.0/3.0*(x-4.0) - 1.0; + return cheb_eval_e(&fd_1_c_cs, t, result); + } + else if(x < 30.0) { + double t = 0.1*x - 2.0; + gsl_sf_result c; + cheb_eval_e(&fd_1_d_cs, t, &c); + result->val = c.val * x*x; + result->err = c.err * x*x + GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else if(x < 1.0/GSL_SQRT_DBL_EPSILON) { + double t = 60.0/x - 1.0; + gsl_sf_result c; + cheb_eval_e(&fd_1_e_cs, t, &c); + result->val = c.val * x*x; + result->err = c.err * x*x + GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else if(x < GSL_SQRT_DBL_MAX) { + result->val = 0.5 * x*x; + result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else { + OVERFLOW_ERROR(result); + } +} + + +int gsl_sf_fermi_dirac_2_e(const double x, gsl_sf_result * result) +{ + if(x < GSL_LOG_DBL_MIN) { + UNDERFLOW_ERROR(result); + } + else if(x < -1.0) { + /* series [Goano (6)] + */ + double ex = exp(x); + double term = ex; + double sum = term; + int n; + for(n=2; n<100 ; n++) { + double rat = (n-1.0)/n; + term *= -ex * rat * rat * rat; + sum += term; + if(fabs(term/sum) < GSL_DBL_EPSILON) break; + } + result->val = sum; + result->err = 2.0 * GSL_DBL_EPSILON * fabs(sum); + return GSL_SUCCESS; + } + else if(x < 1.0) { + return cheb_eval_e(&fd_2_a_cs, x, result); + } + else if(x < 4.0) { + double t = 2.0/3.0*(x-1.0) - 1.0; + return cheb_eval_e(&fd_2_b_cs, t, result); + } + else if(x < 10.0) { + double t = 1.0/3.0*(x-4.0) - 1.0; + return cheb_eval_e(&fd_2_c_cs, t, result); + } + else if(x < 30.0) { + double t = 0.1*x - 2.0; + gsl_sf_result c; + cheb_eval_e(&fd_2_d_cs, t, &c); + result->val = c.val * x*x*x; + result->err = c.err * x*x*x + 3.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else if(x < 1.0/GSL_ROOT3_DBL_EPSILON) { + double t = 60.0/x - 1.0; + gsl_sf_result c; + cheb_eval_e(&fd_2_e_cs, t, &c); + result->val = c.val * x*x*x; + result->err = c.err * x*x*x + 3.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else if(x < GSL_ROOT3_DBL_MAX) { + result->val = 1.0/6.0 * x*x*x; + result->err = 3.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else { + OVERFLOW_ERROR(result); + } +} + + +int gsl_sf_fermi_dirac_int_e(const int j, const double x, gsl_sf_result * result) +{ + if(j < -1) { + return fd_nint(j, x, result); + } + else if (j == -1) { + return gsl_sf_fermi_dirac_m1_e(x, result); + } + else if(j == 0) { + return gsl_sf_fermi_dirac_0_e(x, result); + } + else if(j == 1) { + return gsl_sf_fermi_dirac_1_e(x, result); + } + else if(j == 2) { + return gsl_sf_fermi_dirac_2_e(x, result); + } + else if(x < 0.0) { + return fd_neg(j, x, result); + } + else if(x == 0.0) { + return gsl_sf_eta_int_e(j+1, result); + } + else if(x < 1.5) { + return fd_series_int(j, x, result); + } + else { + gsl_sf_result fasymp; + int stat_asymp = fd_asymp(j, x, &fasymp); + + if(stat_asymp == GSL_SUCCESS) { + result->val = fasymp.val; + result->err = fasymp.err; + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return stat_asymp; + } + else { + return fd_UMseries_int(j, x, result); + } + } +} + + +int gsl_sf_fermi_dirac_mhalf_e(const double x, gsl_sf_result * result) +{ + if(x < GSL_LOG_DBL_MIN) { + UNDERFLOW_ERROR(result); + } + else if(x < -1.0) { + /* series [Goano (6)] + */ + double ex = exp(x); + double term = ex; + double sum = term; + int n; + for(n=2; n<200 ; n++) { + double rat = (n-1.0)/n; + term *= -ex * sqrt(rat); + sum += term; + if(fabs(term/sum) < GSL_DBL_EPSILON) break; + } + result->val = sum; + result->err = 2.0 * fabs(sum) * GSL_DBL_EPSILON; + return GSL_SUCCESS; + } + else if(x < 1.0) { + return cheb_eval_e(&fd_mhalf_a_cs, x, result); + } + else if(x < 4.0) { + double t = 2.0/3.0*(x-1.0) - 1.0; + return cheb_eval_e(&fd_mhalf_b_cs, t, result); + } + else if(x < 10.0) { + double t = 1.0/3.0*(x-4.0) - 1.0; + return cheb_eval_e(&fd_mhalf_c_cs, t, result); + } + else if(x < 30.0) { + double rtx = sqrt(x); + double t = 0.1*x - 2.0; + gsl_sf_result c; + cheb_eval_e(&fd_mhalf_d_cs, t, &c); + result->val = c.val * rtx; + result->err = c.err * rtx + 0.5 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else { + return fd_asymp(-0.5, x, result); + } +} + + +int gsl_sf_fermi_dirac_half_e(const double x, gsl_sf_result * result) +{ + if(x < GSL_LOG_DBL_MIN) { + UNDERFLOW_ERROR(result); + } + else if(x < -1.0) { + /* series [Goano (6)] + */ + double ex = exp(x); + double term = ex; + double sum = term; + int n; + for(n=2; n<100 ; n++) { + double rat = (n-1.0)/n; + term *= -ex * rat * sqrt(rat); + sum += term; + if(fabs(term/sum) < GSL_DBL_EPSILON) break; + } + result->val = sum; + result->err = 2.0 * fabs(sum) * GSL_DBL_EPSILON; + return GSL_SUCCESS; + } + else if(x < 1.0) { + return cheb_eval_e(&fd_half_a_cs, x, result); + } + else if(x < 4.0) { + double t = 2.0/3.0*(x-1.0) - 1.0; + return cheb_eval_e(&fd_half_b_cs, t, result); + } + else if(x < 10.0) { + double t = 1.0/3.0*(x-4.0) - 1.0; + return cheb_eval_e(&fd_half_c_cs, t, result); + } + else if(x < 30.0) { + double x32 = x*sqrt(x); + double t = 0.1*x - 2.0; + gsl_sf_result c; + cheb_eval_e(&fd_half_d_cs, t, &c); + result->val = c.val * x32; + result->err = c.err * x32 + 1.5 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else { + return fd_asymp(0.5, x, result); + } +} + + +int gsl_sf_fermi_dirac_3half_e(const double x, gsl_sf_result * result) +{ + if(x < GSL_LOG_DBL_MIN) { + UNDERFLOW_ERROR(result); + } + else if(x < -1.0) { + /* series [Goano (6)] + */ + double ex = exp(x); + double term = ex; + double sum = term; + int n; + for(n=2; n<100 ; n++) { + double rat = (n-1.0)/n; + term *= -ex * rat * rat * sqrt(rat); + sum += term; + if(fabs(term/sum) < GSL_DBL_EPSILON) break; + } + result->val = sum; + result->err = 2.0 * fabs(sum) * GSL_DBL_EPSILON; + return GSL_SUCCESS; + } + else if(x < 1.0) { + return cheb_eval_e(&fd_3half_a_cs, x, result); + } + else if(x < 4.0) { + double t = 2.0/3.0*(x-1.0) - 1.0; + return cheb_eval_e(&fd_3half_b_cs, t, result); + } + else if(x < 10.0) { + double t = 1.0/3.0*(x-4.0) - 1.0; + return cheb_eval_e(&fd_3half_c_cs, t, result); + } + else if(x < 30.0) { + double x52 = x*x*sqrt(x); + double t = 0.1*x - 2.0; + gsl_sf_result c; + cheb_eval_e(&fd_3half_d_cs, t, &c); + result->val = c.val * x52; + result->err = c.err * x52 + 2.5 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else { + return fd_asymp(1.5, x, result); + } +} + +/* [Goano p. 222] */ +int gsl_sf_fermi_dirac_inc_0_e(const double x, const double b, gsl_sf_result * result) +{ + if(b < 0.0) { + DOMAIN_ERROR(result); + } + else { + double arg = b - x; + gsl_sf_result f0; + int status = gsl_sf_fermi_dirac_0_e(arg, &f0); + result->val = f0.val - arg; + result->err = f0.err + GSL_DBL_EPSILON * (fabs(x) + fabs(b)); + return status; + } +} + + + +/*-*-*-*-*-*-*-*-*-* Functions w/ Natural Prototypes *-*-*-*-*-*-*-*-*-*-*/ + +#include "eval.h" + +double gsl_sf_fermi_dirac_m1(const double x) +{ + EVAL_RESULT(gsl_sf_fermi_dirac_m1_e(x, &result)); +} + +double gsl_sf_fermi_dirac_0(const double x) +{ + EVAL_RESULT(gsl_sf_fermi_dirac_0_e(x, &result)); +} + +double gsl_sf_fermi_dirac_1(const double x) +{ + EVAL_RESULT(gsl_sf_fermi_dirac_1_e(x, &result)); +} + +double gsl_sf_fermi_dirac_2(const double x) +{ + EVAL_RESULT(gsl_sf_fermi_dirac_2_e(x, &result)); +} + +double gsl_sf_fermi_dirac_int(const int j, const double x) +{ + EVAL_RESULT(gsl_sf_fermi_dirac_int_e(j, x, &result)); +} + +double gsl_sf_fermi_dirac_mhalf(const double x) +{ + EVAL_RESULT(gsl_sf_fermi_dirac_mhalf_e(x, &result)); +} + +double gsl_sf_fermi_dirac_half(const double x) +{ + EVAL_RESULT(gsl_sf_fermi_dirac_half_e(x, &result)); +} + +double gsl_sf_fermi_dirac_3half(const double x) +{ + EVAL_RESULT(gsl_sf_fermi_dirac_3half_e(x, &result)); +} + +double gsl_sf_fermi_dirac_inc_0(const double x, const double b) +{ + EVAL_RESULT(gsl_sf_fermi_dirac_inc_0_e(x, b, &result)); +} diff --git a/gsl-2.5/specfunc/fermi_dirac.lo b/gsl-2.5/specfunc/fermi_dirac.lo new file mode 100644 index 00000000..35c31030 --- /dev/null +++ b/gsl-2.5/specfunc/fermi_dirac.lo @@ -0,0 +1,12 @@ +# fermi_dirac.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/fermi_dirac.o' + +# Name of the non-PIC object +non_pic_object='fermi_dirac.o' + diff --git a/gsl-2.5/specfunc/gamma.c b/gsl-2.5/specfunc/gamma.c new file mode 100644 index 00000000..8ec22c83 --- /dev/null +++ b/gsl-2.5/specfunc/gamma.c @@ -0,0 +1,1685 @@ +/* specfunc/gamma.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ + +#include +#include +#include +#include +#include +#include +#include +#include + +#include "error.h" +#include "check.h" + +#include "chebyshev.h" +#include "cheb_eval.c" + +#define LogRootTwoPi_ 0.9189385332046727418 + + +/*-*-*-*-*-*-*-*-*-*-*-* Private Section *-*-*-*-*-*-*-*-*-*-*-*/ + +static struct {int n; double f; long i; } fact_table[GSL_SF_FACT_NMAX + 1] = { + { 0, 1.0, 1L }, + { 1, 1.0, 1L }, + { 2, 2.0, 2L }, + { 3, 6.0, 6L }, + { 4, 24.0, 24L }, + { 5, 120.0, 120L }, + { 6, 720.0, 720L }, + { 7, 5040.0, 5040L }, + { 8, 40320.0, 40320L }, + + { 9, 362880.0, 362880L }, + { 10, 3628800.0, 3628800L }, + { 11, 39916800.0, 39916800L }, + { 12, 479001600.0, 479001600L }, + + { 13, 6227020800.0, 0 }, + { 14, 87178291200.0, 0 }, + { 15, 1307674368000.0, 0 }, + { 16, 20922789888000.0, 0 }, + { 17, 355687428096000.0, 0 }, + { 18, 6402373705728000.0, 0 }, + { 19, 121645100408832000.0, 0 }, + { 20, 2432902008176640000.0, 0 }, + { 21, 51090942171709440000.0, 0 }, + { 22, 1124000727777607680000.0, 0 }, + { 23, 25852016738884976640000.0, 0 }, + { 24, 620448401733239439360000.0, 0 }, + { 25, 15511210043330985984000000.0, 0 }, + { 26, 403291461126605635584000000.0, 0 }, + { 27, 10888869450418352160768000000.0, 0 }, + { 28, 304888344611713860501504000000.0, 0 }, + { 29, 8841761993739701954543616000000.0, 0 }, + { 30, 265252859812191058636308480000000.0, 0 }, + { 31, 8222838654177922817725562880000000.0, 0 }, + { 32, 263130836933693530167218012160000000.0, 0 }, + { 33, 8683317618811886495518194401280000000.0, 0 }, + { 34, 2.95232799039604140847618609644e38, 0 }, + { 35, 1.03331479663861449296666513375e40, 0 }, + { 36, 3.71993326789901217467999448151e41, 0 }, + { 37, 1.37637530912263450463159795816e43, 0 }, + { 38, 5.23022617466601111760007224100e44, 0 }, + { 39, 2.03978820811974433586402817399e46, 0 }, + { 40, 8.15915283247897734345611269600e47, 0 }, + { 41, 3.34525266131638071081700620534e49, 0 }, + { 42, 1.40500611775287989854314260624e51, 0 }, + { 43, 6.04152630633738356373551320685e52, 0 }, + { 44, 2.65827157478844876804362581101e54, 0 }, + { 45, 1.19622220865480194561963161496e56, 0 }, + { 46, 5.50262215981208894985030542880e57, 0 }, + { 47, 2.58623241511168180642964355154e59, 0 }, + { 48, 1.24139155925360726708622890474e61, 0 }, + { 49, 6.08281864034267560872252163321e62, 0 }, + { 50, 3.04140932017133780436126081661e64, 0 }, + { 51, 1.55111875328738228022424301647e66, 0 }, + { 52, 8.06581751709438785716606368564e67, 0 }, + { 53, 4.27488328406002556429801375339e69, 0 }, + { 54, 2.30843697339241380472092742683e71, 0 }, + { 55, 1.26964033536582759259651008476e73, 0 }, + { 56, 7.10998587804863451854045647464e74, 0 }, + { 57, 4.05269195048772167556806019054e76, 0 }, + { 58, 2.35056133128287857182947491052e78, 0 }, + { 59, 1.38683118545689835737939019720e80, 0 }, + { 60, 8.32098711274139014427634118320e81, 0 }, + { 61, 5.07580213877224798800856812177e83, 0 }, + { 62, 3.14699732603879375256531223550e85, 0 }, + { 63, 1.982608315404440064116146708360e87, 0 }, + { 64, 1.268869321858841641034333893350e89, 0 }, + { 65, 8.247650592082470666723170306800e90, 0 }, + { 66, 5.443449390774430640037292402480e92, 0 }, + { 67, 3.647111091818868528824985909660e94, 0 }, + { 68, 2.480035542436830599600990418570e96, 0 }, + { 69, 1.711224524281413113724683388810e98, 0 }, + { 70, 1.197857166996989179607278372170e100, 0 }, + { 71, 8.504785885678623175211676442400e101, 0 }, + { 72, 6.123445837688608686152407038530e103, 0 }, + { 73, 4.470115461512684340891257138130e105, 0 }, + { 74, 3.307885441519386412259530282210e107, 0 }, + { 75, 2.480914081139539809194647711660e109, 0 }, + { 76, 1.885494701666050254987932260860e111, 0 }, + { 77, 1.451830920282858696340707840860e113, 0 }, + { 78, 1.132428117820629783145752115870e115, 0 }, + { 79, 8.946182130782975286851441715400e116, 0 }, + { 80, 7.156945704626380229481153372320e118, 0 }, + { 81, 5.797126020747367985879734231580e120, 0 }, + { 82, 4.753643337012841748421382069890e122, 0 }, + { 83, 3.945523969720658651189747118010e124, 0 }, + { 84, 3.314240134565353266999387579130e126, 0 }, + { 85, 2.817104114380550276949479442260e128, 0 }, + { 86, 2.422709538367273238176552320340e130, 0 }, + { 87, 2.107757298379527717213600518700e132, 0 }, + { 88, 1.854826422573984391147968456460e134, 0 }, + { 89, 1.650795516090846108121691926250e136, 0 }, + { 90, 1.485715964481761497309522733620e138, 0 }, + { 91, 1.352001527678402962551665687590e140, 0 }, + { 92, 1.243841405464130725547532432590e142, 0 }, + { 93, 1.156772507081641574759205162310e144, 0 }, + { 94, 1.087366156656743080273652852570e146, 0 }, + { 95, 1.032997848823905926259970209940e148, 0 }, + { 96, 9.916779348709496892095714015400e149, 0 }, + { 97, 9.619275968248211985332842594960e151, 0 }, + { 98, 9.426890448883247745626185743100e153, 0 }, + { 99, 9.332621544394415268169923885600e155, 0 }, + { 100, 9.33262154439441526816992388563e157, 0 }, + { 101, 9.42594775983835942085162312450e159, 0 }, + { 102, 9.61446671503512660926865558700e161, 0 }, + { 103, 9.90290071648618040754671525458e163, 0 }, + { 104, 1.02990167451456276238485838648e166, 0 }, + { 105, 1.08139675824029090050410130580e168, 0 }, + { 106, 1.146280563734708354534347384148e170, 0 }, + { 107, 1.226520203196137939351751701040e172, 0 }, + { 108, 1.324641819451828974499891837120e174, 0 }, + { 109, 1.443859583202493582204882102460e176, 0 }, + { 110, 1.588245541522742940425370312710e178, 0 }, + { 111, 1.762952551090244663872161047110e180, 0 }, + { 112, 1.974506857221074023536820372760e182, 0 }, + { 113, 2.231192748659813646596607021220e184, 0 }, + { 114, 2.543559733472187557120132004190e186, 0 }, + { 115, 2.925093693493015690688151804820e188, 0 }, + { 116, 3.393108684451898201198256093590e190, 0 }, + { 117, 3.96993716080872089540195962950e192, 0 }, + { 118, 4.68452584975429065657431236281e194, 0 }, + { 119, 5.57458576120760588132343171174e196, 0 }, + { 120, 6.68950291344912705758811805409e198, 0 }, + { 121, 8.09429852527344373968162284545e200, 0 }, + { 122, 9.87504420083360136241157987140e202, 0 }, + { 123, 1.21463043670253296757662432419e205, 0 }, + { 124, 1.50614174151114087979501416199e207, 0 }, + { 125, 1.88267717688892609974376770249e209, 0 }, + { 126, 2.37217324288004688567714730514e211, 0 }, + { 127, 3.01266001845765954480997707753e213, 0 }, + { 128, 3.85620482362580421735677065923e215, 0 }, + { 129, 4.97450422247728744039023415041e217, 0 }, + { 130, 6.46685548922047367250730439554e219, 0 }, + { 131, 8.47158069087882051098456875820e221, 0 }, + { 132, 1.11824865119600430744996307608e224, 0 }, + { 133, 1.48727070609068572890845089118e226, 0 }, + { 134, 1.99294274616151887673732419418e228, 0 }, + { 135, 2.69047270731805048359538766215e230, 0 }, + { 136, 3.65904288195254865768972722052e232, 0 }, + { 137, 5.01288874827499166103492629211e234, 0 }, + { 138, 6.91778647261948849222819828311e236, 0 }, + { 139, 9.61572319694108900419719561353e238, 0 }, + { 140, 1.34620124757175246058760738589e241, 0 }, + { 141, 1.89814375907617096942852641411e243, 0 }, + { 142, 2.69536413788816277658850750804e245, 0 }, + { 143, 3.85437071718007277052156573649e247, 0 }, + { 144, 5.55029383273930478955105466055e249, 0 }, + { 145, 8.04792605747199194484902925780e251, 0 }, + { 146, 1.17499720439091082394795827164e254, 0 }, + { 147, 1.72724589045463891120349865931e256, 0 }, + { 148, 2.55632391787286558858117801578e258, 0 }, + { 149, 3.80892263763056972698595524351e260, 0 }, + { 150, 5.71338395644585459047893286526e262, 0 }, + { 151, 8.62720977423324043162318862650e264, 0 }, + { 152, 1.31133588568345254560672467123e267, 0 }, + { 153, 2.00634390509568239477828874699e269, 0 }, + { 154, 3.08976961384735088795856467036e271, 0 }, + { 155, 4.78914290146339387633577523906e273, 0 }, + { 156, 7.47106292628289444708380937294e275, 0 }, + { 157, 1.17295687942641442819215807155e278, 0 }, + { 158, 1.85327186949373479654360975305e280, 0 }, + { 159, 2.94670227249503832650433950735e282, 0 }, + { 160, 4.71472363599206132240694321176e284, 0 }, + { 161, 7.59070505394721872907517857094e286, 0 }, + { 162, 1.22969421873944943411017892849e289, 0 }, + { 163, 2.00440157654530257759959165344e291, 0 }, + { 164, 3.28721858553429622726333031164e293, 0 }, + { 165, 5.42391066613158877498449501421e295, 0 }, + { 166, 9.00369170577843736647426172359e297, 0 }, + { 167, 1.50361651486499904020120170784e300, 0 }, + { 168, 2.52607574497319838753801886917e302, 0 }, + { 169, 4.26906800900470527493925188890e304, 0 }, + { 170, 7.25741561530799896739672821113e306, 0 }, + + /* + { 171, 1.24101807021766782342484052410e309, 0 }, + { 172, 2.13455108077438865629072570146e311, 0 }, + { 173, 3.69277336973969237538295546352e313, 0 }, + { 174, 6.42542566334706473316634250653e315, 0 }, + { 175, 1.12444949108573632830410993864e318, 0 }, + { 176, 1.97903110431089593781523349201e320, 0 }, + { 177, 3.50288505463028580993296328086e322, 0 }, + { 178, 6.23513539724190874168067463993e324, 0 }, + { 179, 1.11608923610630166476084076055e327, 0 }, + { 180, 2.00896062499134299656951336898e329, 0 }, + { 181, 3.63621873123433082379081919786e331, 0 }, + { 182, 6.61791809084648209929929094011e333, 0 }, + { 183, 1.21107901062490622417177024204e336, 0 }, + { 184, 2.22838537954982745247605724535e338, 0 }, + { 185, 4.12251295216718078708070590390e340, 0 }, + { 186, 7.66787409103095626397011298130e342, 0 }, + { 187, 1.43389245502278882136241112750e345, 0 }, + { 188, 2.69571781544284298416133291969e347, 0 }, + { 189, 5.09490667118697324006491921822e349, 0 }, + { 190, 9.68032267525524915612334651460e351, 0 }, + { 191, 1.84894163097375258881955918429e354, 0 }, + { 192, 3.54996793146960497053355363384e356, 0 }, + { 193, 6.85143810773633759312975851330e358, 0 }, + { 194, 1.32917899290084949306717315158e361, 0 }, + { 195, 2.59189903615665651148098764559e363, 0 }, + { 196, 5.08012211086704676250273578535e365, 0 }, + { 197, 1.00078405584080821221303894971e368, 0 }, + { 198, 1.98155243056480026018181712043e370, 0 }, + { 199, 3.94328933682395251776181606966e372, 0 }, + { 200, 7.88657867364790503552363213932e374, 0 } + */ +}; + +static struct {int n; double f; long i; } doub_fact_table[GSL_SF_DOUBLEFACT_NMAX + 1] = { + { 0, 1.000000000000000000000000000, 1L }, + { 1, 1.000000000000000000000000000, 1L }, + { 2, 2.000000000000000000000000000, 2L }, + { 3, 3.000000000000000000000000000, 3L }, + { 4, 8.000000000000000000000000000, 8L }, + { 5, 15.00000000000000000000000000, 15L }, + { 6, 48.00000000000000000000000000, 48L }, + { 7, 105.0000000000000000000000000, 105L }, + { 8, 384.0000000000000000000000000, 384L }, + { 9, 945.0000000000000000000000000, 945L }, + { 10, 3840.000000000000000000000000, 3840L }, + { 11, 10395.00000000000000000000000, 10395L }, + { 12, 46080.00000000000000000000000, 46080L }, + { 13, 135135.0000000000000000000000, 135135L }, + { 14, 645120.00000000000000000000000, 645120L }, + { 15, 2.02702500000000000000000000000e6, 2027025L }, + { 16, 1.03219200000000000000000000000e7, 10321920L }, + { 17, 3.4459425000000000000000000000e7, 34459425L }, + { 18, 1.85794560000000000000000000000e8, 185794560L }, + { 19, 6.5472907500000000000000000000e8, 0 }, + { 20, 3.7158912000000000000000000000e9, 0 }, + { 21, 1.37493105750000000000000000000e10, 0 }, + { 22, 8.1749606400000000000000000000e10, 0 }, + { 23, 3.1623414322500000000000000000e11, 0 }, + { 24, 1.96199055360000000000000000000e12, 0 }, + { 25, 7.9058535806250000000000000000e12, 0 }, + { 26, 5.1011754393600000000000000000e13, 0 }, + { 27, 2.13458046676875000000000000000e14, 0 }, + { 28, 1.42832912302080000000000000000e15, 0 }, + { 29, 6.1902833536293750000000000000e15, 0 }, + { 30, 4.2849873690624000000000000000e16, 0 }, + { 31, 1.91898783962510625000000000000e17, 0 }, + { 32, 1.37119595809996800000000000000e18, 0 }, + { 33, 6.3326598707628506250000000000e18, 0 }, + { 34, 4.6620662575398912000000000000e19, 0 }, + { 35, 2.21643095476699771875000000000e20, 0 }, + { 36, 1.67834385271436083200000000000e21, 0 }, + { 37, 8.2007945326378915593750000000e21, 0 }, + { 38, 6.3777066403145711616000000000e22, 0 }, + { 39, 3.1983098677287777081562500000e23, 0 }, + { 40, 2.55108265612582846464000000000e24, 0 }, + { 41, 1.31130704576879886034406250000e25, 0 }, + { 42, 1.07145471557284795514880000000e26, 0 }, + { 43, 5.6386202968058350994794687500e26, 0 }, + { 44, 4.7144007485205310026547200000e27, 0 }, + { 45, 2.53737913356262579476576093750e28, 0 }, + { 46, 2.16862434431944426122117120000e29, 0 }, + { 47, 1.19256819277443412353990764062e30, 0 }, + { 48, 1.04093968527333324538616217600e31, 0 }, + { 49, 5.8435841445947272053455474391e31, 0 }, + { 50, 5.2046984263666662269308108800e32, 0 }, + { 51, 2.98022791374331087472622919392e33, 0 }, + { 52, 2.70644318171066643800402165760e34, 0 }, + { 53, 1.57952079428395476360490147278e35, 0 }, + { 54, 1.46147931812375987652217169510e36, 0 }, + { 55, 8.6873643685617511998269581003e36, 0 }, + { 56, 8.1842841814930553085241614926e37, 0 }, + { 57, 4.9517976900801981839013661172e38, 0 }, + { 58, 4.7468848252659720789440136657e39, 0 }, + { 59, 2.92156063714731692850180600912e40, 0 }, + { 60, 2.84813089515958324736640819942e41, 0 }, + { 61, 1.78215198865986332638610166557e42, 0 }, + { 62, 1.76584115499894161336717308364e43, 0 }, + { 63, 1.12275575285571389562324404931e44, 0 }, + { 64, 1.13013833919932263255499077353e45, 0 }, + { 65, 7.2979123935621403215510863205e45, 0 }, + { 66, 7.4589130387155293748629391053e46, 0 }, + { 67, 4.8896013036866340154392278347e47, 0 }, + { 68, 5.0720608663265599749067985916e48, 0 }, + { 69, 3.3738248995437774706530672060e49, 0 }, + { 70, 3.5504426064285919824347590141e50, 0 }, + { 71, 2.39541567867608200416367771623e51, 0 }, + { 72, 2.55631867662858622735302649017e52, 0 }, + { 73, 1.74865344543353986303948473285e53, 0 }, + { 74, 1.89167582070515380824123960272e54, 0 }, + { 75, 1.31149008407515489727961354964e55, 0 }, + { 76, 1.43767362373591689426334209807e56, 0 }, + { 77, 1.00984736473786927090530243322e57, 0 }, + { 78, 1.12138542651401517752540683649e58, 0 }, + { 79, 7.9777941814291672401518892225e58, 0 }, + { 80, 8.9710834121121214202032546920e59, 0 }, + { 81, 6.4620132869576254645230302702e60, 0 }, + { 82, 7.3562883979319395645666688474e61, 0 }, + { 83, 5.3634710281748291355541151243e62, 0 }, + { 84, 6.1792822542628292342360018318e63, 0 }, + { 85, 4.5589503739486047652209978556e64, 0 }, + { 86, 5.3141827386660331414429615754e65, 0 }, + { 87, 3.9662868253352861457422681344e66, 0 }, + { 88, 4.6764808100261091644698061863e67, 0 }, + { 89, 3.5299952745484046697106186396e68, 0 }, + { 90, 4.2088327290234982480228255677e69, 0 }, + { 91, 3.2122956998390482494366629620e70, 0 }, + { 92, 3.8721261107016183881809995223e71, 0 }, + { 93, 2.98743500085031487197609655470e72, 0 }, + { 94, 3.6397985440595212848901395509e73, 0 }, + { 95, 2.83806325080779912837729172696e74, 0 }, + { 96, 3.4942066022971404334945339689e75, 0 }, + { 97, 2.75292135328356515452597297515e76, 0 }, + { 98, 3.4243224702511976248246432895e77, 0 }, + { 99, 2.72539213975072950298071324540e78, 0 }, + { 100, 3.4243224702511976248246432895e79, 0 }, + { 101, 2.75264606114823679801052037785e80, 0 }, + { 102, 3.4928089196562215773211361553e81, 0 }, + { 103, 2.83522544298268390195083598919e82, 0 }, + { 104, 3.6325212764424704404139816015e83, 0 }, + { 105, 2.97698671513181809704837778865e84, 0 }, + { 106, 3.8504725530290186668388204976e85, 0 }, + { 107, 3.1853757851910453638417642339e86, 0 }, + { 108, 4.1585103572713401601859261374e87, 0 }, + { 109, 3.4720596058582394465875230149e88, 0 }, + { 110, 4.5743613929984741762045187512e89, 0 }, + { 111, 3.8539861625026457857121505465e90, 0 }, + { 112, 5.1232847601582910773490610013e91, 0 }, + { 113, 4.3550043636279897378547301176e92, 0 }, + { 114, 5.8405446265804518281779295415e93, 0 }, + { 115, 5.0082550181721881985329396352e94, 0 }, + { 116, 6.7750317668333241206863982681e95, 0 }, + { 117, 5.8596583712614601922835393732e96, 0 }, + { 118, 7.9945374848633224624099499564e97, 0 }, + { 119, 6.9729934618011376288174118541e98, 0 }, + { 120, 9.5934449818359869548919399477e99, 0 }, + { 121, 8.4373220887793765308690683435e100, 0 }, + { 122, 1.17040028778399040849681667362e102, 0 }, + { 123, 1.03779061691986331329689540625e103, 0 }, + { 124, 1.45129635685214810653605267528e104, 0 }, + { 125, 1.29723827114982914162111925781e105, 0 }, + { 126, 1.82863340963370661423542637086e106, 0 }, + { 127, 1.64749260436028300985882145742e107, 0 }, + { 128, 2.34065076433114446622134575470e108, 0 }, + { 129, 2.12526545962476508271787968008e109, 0 }, + { 130, 3.04284599363048780608774948111e110, 0 }, + { 131, 2.78409775210844225836042238090e111, 0 }, + { 132, 4.0165567115922439040358293151e112, 0 }, + { 133, 3.7028500103042282036193617666e113, 0 }, + { 134, 5.3821859935336068314080112822e114, 0 }, + { 135, 4.9988475139107080748861383849e115, 0 }, + { 136, 7.3197729512057052907148953438e116, 0 }, + { 137, 6.8484210940576700625940095873e117, 0 }, + { 138, 1.01012866726638733011865555744e119, 0 }, + { 139, 9.5193053207401613870056733264e119, 0 }, + { 140, 1.41418013417294226216611778042e121, 0 }, + { 141, 1.34222205022436275556779993902e122, 0 }, + { 142, 2.00813579052557801227588724819e123, 0 }, + { 143, 1.91937753182083874046195391280e124, 0 }, + { 144, 2.89171553835683233767727763739e125, 0 }, + { 145, 2.78309742114021617366983317355e126, 0 }, + { 146, 4.2219046860009752130088253506e127, 0 }, + { 147, 4.0911532090761177752946547651e128, 0 }, + { 148, 6.2484189352814433152530615189e129, 0 }, + { 149, 6.0958182815234154851890356000e130, 0 }, + { 150, 9.3726284029221649728795922783e131, 0 }, + { 151, 9.2046856051003573826354437561e132, 0 }, + { 152, 1.42463951724416907587769802630e134, 0 }, + { 153, 1.40831689758035467954322289468e135, 0 }, + { 154, 2.19394485655602037685165496051e136, 0 }, + { 155, 2.18289119124954975329199548675e137, 0 }, + { 156, 3.4225539762273917878885817384e138, 0 }, + { 157, 3.4271391702617931126684329142e139, 0 }, + { 158, 5.4076352824392790248639591467e140, 0 }, + { 159, 5.4491512807162510491428083336e141, 0 }, + { 160, 8.6522164519028464397823346347e142, 0 }, + { 161, 8.7731335619531641891199214170e143, 0 }, + { 162, 1.40165906520826112324473821082e145, 0 }, + { 163, 1.43002077059836576282654719098e146, 0 }, + { 164, 2.29872086694154824212137066574e147, 0 }, + { 165, 2.35953427148730350866380286512e148, 0 }, + { 166, 3.8158766391229700819214753051e149, 0 }, + { 167, 3.9404222333837968594685507847e150, 0 }, + { 168, 6.4106727537265897376280785126e151, 0 }, + { 169, 6.6593135744186166925018508262e152, 0 }, + { 170, 1.08981436813352025539677334714e154, 0 }, + { 171, 1.13874262122558345441781649128e155, 0 }, + { 172, 1.87448071318965483928245015709e156, 0 }, + { 173, 1.97002473472025937614282252992e157, 0 }, + { 174, 3.2615964409499994203514632733e158, 0 }, + { 175, 3.4475432857604539082499394274e159, 0 }, + { 176, 5.7404097360719989798185753611e160, 0 }, + { 177, 6.1021516157960034176023927864e161, 0 }, + { 178, 1.02179293302081581840770641427e163, 0 }, + { 179, 1.09228513922748461175082830877e164, 0 }, + { 180, 1.83922727943746847313387154568e165, 0 }, + { 181, 1.97703610200174714726899923887e166, 0 }, + { 182, 3.3473936485761926211036462131e167, 0 }, + { 183, 3.6179760666631972795022686071e168, 0 }, + { 184, 6.1592043133801944228307090322e169, 0 }, + { 185, 6.6932557233269149670791969232e170, 0 }, + { 186, 1.14561200228871616264651187999e172, 0 }, + { 187, 1.25163882026213309884380982464e173, 0 }, + { 188, 2.15375056430278638577544233437e174, 0 }, + { 189, 2.36559737029543155681480056857e175, 0 }, + { 190, 4.0921260721752941329733404353e176, 0 }, + { 191, 4.5182909772642742735162690860e177, 0 }, + { 192, 7.8568820585765647353088136358e178, 0 }, + { 193, 8.7203015861200493478863993359e179, 0 }, + { 194, 1.52423511936385355864990984535e181, 0 }, + { 195, 1.70045880929340962283784787050e182, 0 }, + { 196, 2.98750083395315297495382329688e183, 0 }, + { 197, 3.3499038543080169569905603049e184, 0 }, + { 198, 5.9152516512272428904085701278e185, 0 }, + { 199, 6.6663086700729537444112150067e186, 0 }, + { 200, 1.18305033024544857808171402556e188, 0 }, + { 201, 1.33992804268466370262665421635e189, 0 }, + { 202, 2.38976166709580612772506233164e190, 0 }, + { 203, 2.72005392664986731633210805920e191, 0 }, + { 204, 4.8751138008754445005591271565e192, 0 }, + { 205, 5.5761105496322279984808215214e193, 0 }, + { 206, 1.00427344298034156711518019425e195, 0 }, + { 207, 1.15425488377387119568553005492e196, 0 }, + { 208, 2.08888876139911045959957480403e197, 0 }, + { 209, 2.41239270708739079898275781478e198, 0 }, + { 210, 4.3866663989381319651591070885e199, 0 }, + { 211, 5.0901486119543945858536189892e200, 0 }, + { 212, 9.2997327657488397661373070276e201, 0 }, + { 213, 1.08420165434628604678682084470e203, 0 }, + { 214, 1.99014281187025170995338370390e204, 0 }, + { 215, 2.33103355684451500059166481610e205, 0 }, + { 216, 4.2987084736397436934993088004e206, 0 }, + { 217, 5.0583428183525975512839126509e207, 0 }, + { 218, 9.3711844725346412518284931849e208, 0 }, + { 219, 1.10777707721921886373117687056e210, 0 }, + { 220, 2.06166058395762107540226850068e211, 0 }, + { 221, 2.44818734065447368884590088393e212, 0 }, + { 222, 4.5768864963859187873930360715e213, 0 }, + { 223, 5.4594577696594763261263589712e214, 0 }, + { 224, 1.02522257519044580837604008002e216, 0 }, + { 225, 1.22837799817338217337843076851e217, 0 }, + { 226, 2.31700301993040752692985058084e218, 0 }, + { 227, 2.78841805585357753356903784452e219, 0 }, + { 228, 5.2827668854413291614000593243e220, 0 }, + { 229, 6.3854773479046925518730966640e221, 0 }, + { 230, 1.21503638365150570712201364459e223, 0 }, + { 231, 1.47504526736598397948268532937e224, 0 }, + { 232, 2.81888441007149324052307165546e225, 0 }, + { 233, 3.4368554729627426721946568174e226, 0 }, + { 234, 6.5961895195672941828239876738e227, 0 }, + { 235, 8.0766103614624452796574435210e228, 0 }, + { 236, 1.55670072661788142714646109101e230, 0 }, + { 237, 1.91415665566659953127881411447e231, 0 }, + { 238, 3.7049477293505577966085773966e232, 0 }, + { 239, 4.5748344070431728797563657336e233, 0 }, + { 240, 8.8918745504413387118605857518e234, 0 }, + { 241, 1.10253509209740466402128414180e236, 0 }, + { 242, 2.15183364120680396827026175195e237, 0 }, + { 243, 2.67916027379669333357172046456e238, 0 }, + { 244, 5.2504740845446016825794386748e239, 0 }, + { 245, 6.5639426708018986672507151382e240, 0 }, + { 246, 1.29161662479797201391454191399e242, 0 }, + { 247, 1.62129383968806897081092663913e243, 0 }, + { 248, 3.2032092294989705945080639467e244, 0 }, + { 249, 4.0370216608232917373192073314e245, 0 }, + { 250, 8.0080230737474264862701598667e246, 0 }, + { 251, 1.01329243686664622606712104019e248, 0 }, + { 252, 2.01802181458435147454008028642e249, 0 }, + { 253, 2.56362986527261495194981623168e250, 0 }, + { 254, 5.1257754090442527453318039275e251, 0 }, + { 255, 6.5372561564451681274720313908e252, 0 }, + { 256, 1.31219850471532870280494180544e254, 0 }, + { 257, 1.68007483220640820876031206743e255, 0 }, + { 258, 3.3854721421655480532367498580e256, 0 }, + { 259, 4.3513938154145972606892082546e257, 0 }, + { 260, 8.8022275696304249384155496309e258, 0 }, + { 261, 1.13571378582320988503988335446e260, 0 }, + { 262, 2.30618362324317133386487400329e261, 0 }, + { 263, 2.98692725671504199765489322224e262, 0 }, + { 264, 6.0883247653619723214032673687e263, 0 }, + { 265, 7.9153572302948612937854670389e264, 0 }, + { 266, 1.61949438758628463749326912007e266, 0 }, + { 267, 2.11340038048872796544071969939e267, 0 }, + { 268, 4.3402449587312428284819612418e268, 0 }, + { 269, 5.6850470235146782270355359914e269, 0 }, + { 270, 1.17186613885743556369012953528e271, 0 }, + { 271, 1.54064774337247779952663025366e272, 0 }, + { 272, 3.1874758976922247332371523360e273, 0 }, + { 273, 4.2059683394068643927077005925e274, 0 }, + { 274, 8.7336839596766957690697974006e275, 0 }, + { 275, 1.15664129333688770799461766294e277, 0 }, + { 276, 2.41049677287076803226326408256e278, 0 }, + { 277, 3.2038963825431789511450909263e279, 0 }, + { 278, 6.7011810285807351296918741495e280, 0 }, + { 279, 8.9388709072954692736948036845e281, 0 }, + { 280, 1.87633068800260583631372476186e283, 0 }, + { 281, 2.51182272495002686590823983534e284, 0 }, + { 282, 5.2912525401673484584047038284e285, 0 }, + { 283, 7.1084583116085760305203187340e286, 0 }, + { 284, 1.50271572140752696218693588728e288, 0 }, + { 285, 2.02591061880844416869829083919e289, 0 }, + { 286, 4.2977669632255271118546366376e290, 0 }, + { 287, 5.8143634759802347641640947085e291, 0 }, + { 288, 1.23775688540895180821413535163e293, 0 }, + { 289, 1.68035104455828784684342337075e294, 0 }, + { 290, 3.5894949676859602438209925197e295, 0 }, + { 291, 4.8898215396646176343143620089e296, 0 }, + { 292, 1.04813253056430039119572981576e298, 0 }, + { 293, 1.43271771112173296685410806860e299, 0 }, + { 294, 3.08150963985904315011544565835e300, 0 }, + { 295, 4.2265172478091122522196188024e301, 0 }, + { 296, 9.1212685339827677243417191487e302, 0 }, + { 297, 1.25527562259930633890922678431e304, 0 }, + /* + { 298, 2.71813802312686478185383230631e305, 0 }, + { 299, 3.7532741115719259533385880851e306, 0 }, + { 300, 8.1544140693805943455614969189e307, } + */ +}; + + +/* Chebyshev coefficients for Gamma*(3/4(t+1)+1/2), -1val = (zr+0.5)*log1_r.val - zi*log1_i.val - (zr+7.5) + LogRootTwoPi_ + logAg_r.val; + yi->val = zi*log1_r.val + (zr+0.5)*log1_i.val - zi + logAg_i.val; + yr->err = 4.0 * GSL_DBL_EPSILON * fabs(yr->val); + yi->err = 4.0 * GSL_DBL_EPSILON * fabs(yi->val); + yi_tmp_val = yi->val; + yi_tmp_err = yi->err; + gsl_sf_angle_restrict_symm_err_e(yi_tmp_val, yi); + yi->err += yi_tmp_err; + return GSL_SUCCESS; +} + + +/* Lanczos method for real x > 0; + * gamma=7, truncated at 1/(z+8) + * [J. SIAM Numer. Anal, Ser. B, 1 (1964) 86] + */ +static +int +lngamma_lanczos(double x, gsl_sf_result * result) +{ + int k; + double Ag; + double term1, term2; + + x -= 1.0; /* Lanczos writes z! instead of Gamma(z) */ + + Ag = lanczos_7_c[0]; + for(k=1; k<=8; k++) { Ag += lanczos_7_c[k]/(x+k); } + + /* (x+0.5)*log(x+7.5) - (x+7.5) + LogRootTwoPi_ + log(Ag(x)) */ + term1 = (x+0.5)*log((x+7.5)/M_E); + term2 = LogRootTwoPi_ + log(Ag); + result->val = term1 + (term2 - 7.0); + result->err = 2.0 * GSL_DBL_EPSILON * (fabs(term1) + fabs(term2) + 7.0); + result->err += GSL_DBL_EPSILON * fabs(result->val); + + return GSL_SUCCESS; +} + +/* x = eps near zero + * gives double-precision for |eps| < 0.02 + */ +static +int +lngamma_sgn_0(double eps, gsl_sf_result * lng, double * sgn) +{ + /* calculate series for g(eps) = Gamma(eps) eps - 1/(1+eps) - eps/2 */ + const double c1 = -0.07721566490153286061; + const double c2 = -0.01094400467202744461; + const double c3 = 0.09252092391911371098; + const double c4 = -0.01827191316559981266; + const double c5 = 0.01800493109685479790; + const double c6 = -0.00685088537872380685; + const double c7 = 0.00399823955756846603; + const double c8 = -0.00189430621687107802; + const double c9 = 0.00097473237804513221; + const double c10 = -0.00048434392722255893; + const double g6 = c6+eps*(c7+eps*(c8 + eps*(c9 + eps*c10))); + const double g = eps*(c1+eps*(c2+eps*(c3+eps*(c4+eps*(c5+eps*g6))))); + + /* calculate Gamma(eps) eps, a positive quantity */ + const double gee = g + 1.0/(1.0+eps) + 0.5*eps; + + lng->val = log(gee/fabs(eps)); + lng->err = 4.0 * GSL_DBL_EPSILON * fabs(lng->val); + *sgn = GSL_SIGN(eps); + + return GSL_SUCCESS; +} + + +/* x near a negative integer + * Calculates sign as well as log(|gamma(x)|). + * x = -N + eps + * assumes N >= 1 + */ +static +int +lngamma_sgn_sing(int N, double eps, gsl_sf_result * lng, double * sgn) +{ + if(eps == 0.0) { + lng->val = 0.0; + lng->err = 0.0; + *sgn = 0.0; + GSL_ERROR ("error", GSL_EDOM); + } + else if(N == 1) { + /* calculate series for + * g = eps gamma(-1+eps) + 1 + eps/2 (1+3eps)/(1-eps^2) + * double-precision for |eps| < 0.02 + */ + const double c0 = 0.07721566490153286061; + const double c1 = 0.08815966957356030521; + const double c2 = -0.00436125434555340577; + const double c3 = 0.01391065882004640689; + const double c4 = -0.00409427227680839100; + const double c5 = 0.00275661310191541584; + const double c6 = -0.00124162645565305019; + const double c7 = 0.00065267976121802783; + const double c8 = -0.00032205261682710437; + const double c9 = 0.00016229131039545456; + const double g5 = c5 + eps*(c6 + eps*(c7 + eps*(c8 + eps*c9))); + const double g = eps*(c0 + eps*(c1 + eps*(c2 + eps*(c3 + eps*(c4 + eps*g5))))); + + /* calculate eps gamma(-1+eps), a negative quantity */ + const double gam_e = g - 1.0 - 0.5*eps*(1.0+3.0*eps)/(1.0 - eps*eps); + + lng->val = log(fabs(gam_e)/fabs(eps)); + lng->err = 2.0 * GSL_DBL_EPSILON * fabs(lng->val); + *sgn = ( eps > 0.0 ? -1.0 : 1.0 ); + return GSL_SUCCESS; + } + else { + double g; + + /* series for sin(Pi(N+1-eps))/(Pi eps) modulo the sign + * double-precision for |eps| < 0.02 + */ + const double cs1 = -1.6449340668482264365; + const double cs2 = 0.8117424252833536436; + const double cs3 = -0.1907518241220842137; + const double cs4 = 0.0261478478176548005; + const double cs5 = -0.0023460810354558236; + const double e2 = eps*eps; + const double sin_ser = 1.0 + e2*(cs1+e2*(cs2+e2*(cs3+e2*(cs4+e2*cs5)))); + + /* calculate series for ln(gamma(1+N-eps)) + * double-precision for |eps| < 0.02 + */ + double aeps = fabs(eps); + double c1, c2, c3, c4, c5, c6, c7; + double lng_ser; + gsl_sf_result c0; + gsl_sf_result psi_0; + gsl_sf_result psi_1; + gsl_sf_result psi_2; + gsl_sf_result psi_3; + gsl_sf_result psi_4; + gsl_sf_result psi_5; + gsl_sf_result psi_6; + psi_2.val = 0.0; + psi_3.val = 0.0; + psi_4.val = 0.0; + psi_5.val = 0.0; + psi_6.val = 0.0; + gsl_sf_lnfact_e(N, &c0); + gsl_sf_psi_int_e(N+1, &psi_0); + gsl_sf_psi_1_int_e(N+1, &psi_1); + if(aeps > 0.00001) gsl_sf_psi_n_e(2, N+1.0, &psi_2); + if(aeps > 0.0002) gsl_sf_psi_n_e(3, N+1.0, &psi_3); + if(aeps > 0.001) gsl_sf_psi_n_e(4, N+1.0, &psi_4); + if(aeps > 0.005) gsl_sf_psi_n_e(5, N+1.0, &psi_5); + if(aeps > 0.01) gsl_sf_psi_n_e(6, N+1.0, &psi_6); + c1 = psi_0.val; + c2 = psi_1.val/2.0; + c3 = psi_2.val/6.0; + c4 = psi_3.val/24.0; + c5 = psi_4.val/120.0; + c6 = psi_5.val/720.0; + c7 = psi_6.val/5040.0; + lng_ser = c0.val-eps*(c1-eps*(c2-eps*(c3-eps*(c4-eps*(c5-eps*(c6-eps*c7)))))); + + /* calculate + * g = ln(|eps gamma(-N+eps)|) + * = -ln(gamma(1+N-eps)) + ln(|eps Pi/sin(Pi(N+1+eps))|) + */ + g = -lng_ser - log(sin_ser); + + lng->val = g - log(fabs(eps)); + lng->err = c0.err + 2.0 * GSL_DBL_EPSILON * (fabs(g) + fabs(lng->val)); + + *sgn = ( GSL_IS_ODD(N) ? -1.0 : 1.0 ) * ( eps > 0.0 ? 1.0 : -1.0 ); + + return GSL_SUCCESS; + } +} + + +/* This gets bad near the negative half axis. However, this + * region can be avoided by use of the reflection formula, as usual. + * Only the first two terms of the series are kept. + */ +#if 0 +static +int +lngamma_complex_stirling(const double zr, const double zi, double * lg_r, double * arg) +{ + double re_zinv, im_zinv; + double re_zinv2, im_zinv2; + double re_zinv3, im_zinv3; + double re_zhlnz, im_zhlnz; + double r, lnr, theta; + gsl_sf_complex_log_e(zr, zi, &lnr, &theta); /* z = r e^{i theta} */ + r = exp(lnr); + re_zinv = (zr/r)/r; + im_zinv = -(zi/r)/r; + re_zinv2 = re_zinv*re_zinv - im_zinv*im_zinv; + re_zinv2 = 2.0*re_zinv*im_zinv; + re_zinv3 = re_zinv2*re_zinv - im_zinv2*im_zinv; + re_zinv3 = re_zinv2*im_zinv + im_zinv2*re_zinv; + re_zhlnz = (zr - 0.5)*lnr - zi*theta; + im_zhlnz = zi*lnr + zr*theta; + *lg_r = re_zhlnz - zr + 0.5*(M_LN2+M_LNPI) + re_zinv/12.0 - re_zinv3/360.0; + *arg = im_zhlnz - zi + 1.0/12.0*im_zinv - im_zinv3/360.0; + return GSL_SUCCESS; +} +#endif /* 0 */ + + +inline +static +int +lngamma_1_pade(const double eps, gsl_sf_result * result) +{ + /* Use (2,2) Pade for Log[Gamma[1+eps]]/eps + * plus a correction series. + */ + const double n1 = -1.0017419282349508699871138440; + const double n2 = 1.7364839209922879823280541733; + const double d1 = 1.2433006018858751556055436011; + const double d2 = 5.0456274100274010152489597514; + const double num = (eps + n1) * (eps + n2); + const double den = (eps + d1) * (eps + d2); + const double pade = 2.0816265188662692474880210318 * num / den; + const double c0 = 0.004785324257581753; + const double c1 = -0.01192457083645441; + const double c2 = 0.01931961413960498; + const double c3 = -0.02594027398725020; + const double c4 = 0.03141928755021455; + const double eps5 = eps*eps*eps*eps*eps; + const double corr = eps5 * (c0 + eps*(c1 + eps*(c2 + eps*(c3 + c4*eps)))); + result->val = eps * (pade + corr); + result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; +} + +inline +static +int +lngamma_2_pade(const double eps, gsl_sf_result * result) +{ + /* Use (2,2) Pade for Log[Gamma[2+eps]]/eps + * plus a correction series. + */ + const double n1 = 1.000895834786669227164446568; + const double n2 = 4.209376735287755081642901277; + const double d1 = 2.618851904903217274682578255; + const double d2 = 10.85766559900983515322922936; + const double num = (eps + n1) * (eps + n2); + const double den = (eps + d1) * (eps + d2); + const double pade = 2.85337998765781918463568869 * num/den; + const double c0 = 0.0001139406357036744; + const double c1 = -0.0001365435269792533; + const double c2 = 0.0001067287169183665; + const double c3 = -0.0000693271800931282; + const double c4 = 0.0000407220927867950; + const double eps5 = eps*eps*eps*eps*eps; + const double corr = eps5 * (c0 + eps*(c1 + eps*(c2 + eps*(c3 + c4*eps)))); + result->val = eps * (pade + corr); + result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; +} + + +/* series for gammastar(x) + * double-precision for x > 10.0 + */ +static +int +gammastar_ser(const double x, gsl_sf_result * result) +{ + /* Use the Stirling series for the correction to Log(Gamma(x)), + * which is better behaved and easier to compute than the + * regular Stirling series for Gamma(x). + */ + const double y = 1.0/(x*x); + const double c0 = 1.0/12.0; + const double c1 = -1.0/360.0; + const double c2 = 1.0/1260.0; + const double c3 = -1.0/1680.0; + const double c4 = 1.0/1188.0; + const double c5 = -691.0/360360.0; + const double c6 = 1.0/156.0; + const double c7 = -3617.0/122400.0; + const double ser = c0 + y*(c1 + y*(c2 + y*(c3 + y*(c4 + y*(c5 + y*(c6 + y*c7)))))); + result->val = exp(ser/x); + result->err = 2.0 * GSL_DBL_EPSILON * result->val * GSL_MAX_DBL(1.0, ser/x); + return GSL_SUCCESS; +} + + +/* Chebyshev expansion for log(gamma(x)/gamma(8)) + * 5 < x < 10 + * -1 < t < 1 + */ +static double gamma_5_10_data[24] = { + -1.5285594096661578881275075214, + 4.8259152300595906319768555035, + 0.2277712320977614992970601978, + -0.0138867665685617873604917300, + 0.0012704876495201082588139723, + -0.0001393841240254993658962470, + 0.0000169709242992322702260663, + -2.2108528820210580075775889168e-06, + 3.0196602854202309805163918716e-07, + -4.2705675000079118380587357358e-08, + 6.2026423818051402794663551945e-09, + -9.1993973208880910416311405656e-10, + 1.3875551258028145778301211638e-10, + -2.1218861491906788718519522978e-11, + 3.2821736040381439555133562600e-12, + -5.1260001009953791220611135264e-13, + 8.0713532554874636696982146610e-14, + -1.2798522376569209083811628061e-14, + 2.0417711600852502310258808643e-15, + -3.2745239502992355776882614137e-16, + 5.2759418422036579482120897453e-17, + -8.5354147151695233960425725513e-18, + 1.3858639703888078291599886143e-18, + -2.2574398807738626571560124396e-19 +}; +static const cheb_series gamma_5_10_cs = { + gamma_5_10_data, + 23, + -1, 1, + 11 +}; + + +/* gamma(x) for x >= 1/2 + * assumes x >= 1/2 + */ +static +int +gamma_xgthalf(const double x, gsl_sf_result * result) +{ + /* CHECK_POINTER(result) */ + + if(x == 0.5) { + result->val = 1.77245385090551602729817; + result->err = GSL_DBL_EPSILON * result->val; + return GSL_SUCCESS; + } else if (x <= (GSL_SF_FACT_NMAX + 1.0) && x == floor(x)) { + int n = (int) floor (x); + result->val = fact_table[n - 1].f; + result->err = GSL_DBL_EPSILON * result->val; + return GSL_SUCCESS; + } + else if(fabs(x - 1.0) < 0.01) { + /* Use series for Gamma[1+eps] - 1/(1+eps). + */ + const double eps = x - 1.0; + const double c1 = 0.4227843350984671394; + const double c2 = -0.01094400467202744461; + const double c3 = 0.09252092391911371098; + const double c4 = -0.018271913165599812664; + const double c5 = 0.018004931096854797895; + const double c6 = -0.006850885378723806846; + const double c7 = 0.003998239557568466030; + result->val = 1.0/x + eps*(c1+eps*(c2+eps*(c3+eps*(c4+eps*(c5+eps*(c6+eps*c7)))))); + result->err = GSL_DBL_EPSILON; + return GSL_SUCCESS; + } + else if(fabs(x - 2.0) < 0.01) { + /* Use series for Gamma[1 + eps]. + */ + const double eps = x - 2.0; + const double c1 = 0.4227843350984671394; + const double c2 = 0.4118403304264396948; + const double c3 = 0.08157691924708626638; + const double c4 = 0.07424901075351389832; + const double c5 = -0.00026698206874501476832; + const double c6 = 0.011154045718130991049; + const double c7 = -0.002852645821155340816; + const double c8 = 0.0021039333406973880085; + result->val = 1.0 + eps*(c1+eps*(c2+eps*(c3+eps*(c4+eps*(c5+eps*(c6+eps*(c7+eps*c8))))))); + result->err = GSL_DBL_EPSILON; + return GSL_SUCCESS; + } + else if(x < 5.0) { + /* Exponentiating the logarithm is fine, as + * long as the exponential is not so large + * that it greatly amplifies the error. + */ + gsl_sf_result lg; + lngamma_lanczos(x, &lg); + result->val = exp(lg.val); + result->err = result->val * (lg.err + 2.0 * GSL_DBL_EPSILON); + return GSL_SUCCESS; + } + else if(x < 10.0) { + /* This is a sticky area. The logarithm + * is too large and the gammastar series + * is not good. + */ + const double gamma_8 = 5040.0; + const double t = (2.0*x - 15.0)/5.0; + gsl_sf_result c; + cheb_eval_e(&gamma_5_10_cs, t, &c); + result->val = exp(c.val) * gamma_8; + result->err = result->val * c.err; + result->err += 2.0 * GSL_DBL_EPSILON * result->val; + return GSL_SUCCESS; + } + else if(x < GSL_SF_GAMMA_XMAX) { + /* We do not want to exponentiate the logarithm + * if x is large because of the inevitable + * inflation of the error. So we carefully + * use pow() and exp() with exact quantities. + */ + double p = pow(x, 0.5*x); + double e = exp(-x); + double q = (p * e) * p; + double pre = M_SQRT2 * M_SQRTPI * q/sqrt(x); + gsl_sf_result gstar; + int stat_gs = gammastar_ser(x, &gstar); + result->val = pre * gstar.val; + result->err = (x + 2.5) * GSL_DBL_EPSILON * result->val; + return stat_gs; + } + else { + OVERFLOW_ERROR(result); + } +} + + +/*-*-*-*-*-*-*-*-*-*-*-* Functions with Error Codes *-*-*-*-*-*-*-*-*-*-*-*/ + + +int gsl_sf_lngamma_e(double x, gsl_sf_result * result) +{ + /* CHECK_POINTER(result) */ + + if(fabs(x - 1.0) < 0.01) { + /* Note that we must amplify the errors + * from the Pade evaluations because of + * the way we must pass the argument, i.e. + * writing (1-x) is a loss of precision + * when x is near 1. + */ + int stat = lngamma_1_pade(x - 1.0, result); + result->err *= 1.0/(GSL_DBL_EPSILON + fabs(x - 1.0)); + return stat; + } + else if(fabs(x - 2.0) < 0.01) { + int stat = lngamma_2_pade(x - 2.0, result); + result->err *= 1.0/(GSL_DBL_EPSILON + fabs(x - 2.0)); + return stat; + } + else if(x >= 0.5) { + return lngamma_lanczos(x, result); + } + else if(x == 0.0) { + DOMAIN_ERROR(result); + } + else if(fabs(x) < 0.02) { + double sgn; + return lngamma_sgn_0(x, result, &sgn); + } + else if(x > -0.5/(GSL_DBL_EPSILON*M_PI)) { + /* Try to extract a fractional + * part from x. + */ + double z = 1.0 - x; + double s = sin(M_PI*z); + double as = fabs(s); + if(s == 0.0) { + DOMAIN_ERROR(result); + } + else if(as < M_PI*0.015) { + /* x is near a negative integer, -N */ + if(x < INT_MIN + 2.0) { + result->val = 0.0; + result->err = 0.0; + GSL_ERROR ("error", GSL_EROUND); + } + else { + int N = -(int)(x - 0.5); + double eps = x + N; + double sgn; + return lngamma_sgn_sing(N, eps, result, &sgn); + } + } + else { + gsl_sf_result lg_z; + lngamma_lanczos(z, &lg_z); + result->val = M_LNPI - (log(as) + lg_z.val); + result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val) + lg_z.err; + return GSL_SUCCESS; + } + } + else { + /* |x| was too large to extract any fractional part */ + result->val = 0.0; + result->err = 0.0; + GSL_ERROR ("error", GSL_EROUND); + } +} + + +int gsl_sf_lngamma_sgn_e(double x, gsl_sf_result * result_lg, double * sgn) +{ + if(fabs(x - 1.0) < 0.01) { + int stat = lngamma_1_pade(x - 1.0, result_lg); + result_lg->err *= 1.0/(GSL_DBL_EPSILON + fabs(x - 1.0)); + *sgn = 1.0; + return stat; + } + else if(fabs(x - 2.0) < 0.01) { + int stat = lngamma_2_pade(x - 2.0, result_lg); + result_lg->err *= 1.0/(GSL_DBL_EPSILON + fabs(x - 2.0)); + *sgn = 1.0; + return stat; + } + else if(x >= 0.5) { + *sgn = 1.0; + return lngamma_lanczos(x, result_lg); + } + else if(x == 0.0) { + *sgn = 0.0; + DOMAIN_ERROR(result_lg); + } + else if(fabs(x) < 0.02) { + return lngamma_sgn_0(x, result_lg, sgn); + } + else if(x > -0.5/(GSL_DBL_EPSILON*M_PI)) { + /* Try to extract a fractional + * part from x. + */ + double z = 1.0 - x; + double s = sin(M_PI*x); + double as = fabs(s); + if(s == 0.0) { + *sgn = 0.0; + DOMAIN_ERROR(result_lg); + } + else if(as < M_PI*0.015) { + /* x is near a negative integer, -N */ + if(x < INT_MIN + 2.0) { + result_lg->val = 0.0; + result_lg->err = 0.0; + *sgn = 0.0; + GSL_ERROR ("error", GSL_EROUND); + } + else { + int N = -(int)(x - 0.5); + double eps = x + N; + return lngamma_sgn_sing(N, eps, result_lg, sgn); + } + } + else { + gsl_sf_result lg_z; + lngamma_lanczos(z, &lg_z); + *sgn = (s > 0.0 ? 1.0 : -1.0); + result_lg->val = M_LNPI - (log(as) + lg_z.val); + result_lg->err = 2.0 * GSL_DBL_EPSILON * fabs(result_lg->val) + lg_z.err; + return GSL_SUCCESS; + } + } + else { + /* |x| was too large to extract any fractional part */ + result_lg->val = 0.0; + result_lg->err = 0.0; + *sgn = 0.0; + GSL_ERROR ("x too large to extract fraction part", GSL_EROUND); + } +} + + +int +gsl_sf_gamma_e(const double x, gsl_sf_result * result) +{ + if(x < 0.5) { + int rint_x = (int)floor(x+0.5); + double f_x = x - rint_x; + double sgn_gamma = ( GSL_IS_EVEN(rint_x) ? 1.0 : -1.0 ); + double sin_term = sgn_gamma * sin(M_PI * f_x) / M_PI; + + if(sin_term == 0.0) { + DOMAIN_ERROR(result); + } + else if(x > -169.0) { + gsl_sf_result g; + gamma_xgthalf(1.0-x, &g); + if(fabs(sin_term) * g.val * GSL_DBL_MIN < 1.0) { + result->val = 1.0/(sin_term * g.val); + result->err = fabs(g.err/g.val) * fabs(result->val); + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else { + UNDERFLOW_ERROR(result); + } + } + else { + /* It is hard to control it here. + * We can only exponentiate the + * logarithm and eat the loss of + * precision. + */ + gsl_sf_result lng; + double sgn; + int stat_lng = gsl_sf_lngamma_sgn_e(x, &lng, &sgn); + int stat_e = gsl_sf_exp_mult_err_e(lng.val, lng.err, sgn, 0.0, result); + return GSL_ERROR_SELECT_2(stat_e, stat_lng); + } + } + else { + return gamma_xgthalf(x, result); + } +} + + +int +gsl_sf_gammastar_e(const double x, gsl_sf_result * result) +{ + /* CHECK_POINTER(result) */ + + if(x <= 0.0) { + DOMAIN_ERROR(result); + } + else if(x < 0.5) { + gsl_sf_result lg; + const int stat_lg = gsl_sf_lngamma_e(x, &lg); + const double lx = log(x); + const double c = 0.5*(M_LN2+M_LNPI); + const double lnr_val = lg.val - (x-0.5)*lx + x - c; + const double lnr_err = lg.err + 2.0 * GSL_DBL_EPSILON *((x+0.5)*fabs(lx) + c); + const int stat_e = gsl_sf_exp_err_e(lnr_val, lnr_err, result); + return GSL_ERROR_SELECT_2(stat_lg, stat_e); + } + else if(x < 2.0) { + const double t = 4.0/3.0*(x-0.5) - 1.0; + return cheb_eval_e(&gstar_a_cs, t, result); + } + else if(x < 10.0) { + const double t = 0.25*(x-2.0) - 1.0; + gsl_sf_result c; + cheb_eval_e(&gstar_b_cs, t, &c); + result->val = c.val/(x*x) + 1.0 + 1.0/(12.0*x); + result->err = c.err/(x*x); + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else if(x < 1.0/GSL_ROOT4_DBL_EPSILON) { + return gammastar_ser(x, result); + } + else if(x < 1.0/GSL_DBL_EPSILON) { + /* Use Stirling formula for Gamma(x). + */ + const double xi = 1.0/x; + result->val = 1.0 + xi/12.0*(1.0 + xi/24.0*(1.0 - xi*(139.0/180.0 + 571.0/8640.0*xi))); + result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else { + result->val = 1.0; + result->err = 1.0/x; + return GSL_SUCCESS; + } +} + + +int +gsl_sf_gammainv_e(const double x, gsl_sf_result * result) +{ + /* CHECK_POINTER(result) */ + + if (x <= 0.0 && x == floor(x)) { /* negative integer */ + result->val = 0.0; + result->err = 0.0; + return GSL_SUCCESS; + } else if(x < 0.5) { + gsl_sf_result lng; + double sgn; + int stat_lng = gsl_sf_lngamma_sgn_e(x, &lng, &sgn); + if(stat_lng == GSL_EDOM) { + result->val = 0.0; + result->err = 0.0; + return GSL_SUCCESS; + } + else if(stat_lng != GSL_SUCCESS) { + result->val = 0.0; + result->err = 0.0; + return stat_lng; + } + else { + return gsl_sf_exp_mult_err_e(-lng.val, lng.err, sgn, 0.0, result); + } + } + else { + gsl_sf_result g; + int stat_g = gamma_xgthalf(x, &g); + if(stat_g == GSL_EOVRFLW) { + UNDERFLOW_ERROR(result); + } + else { + result->val = 1.0/g.val; + result->err = fabs(g.err/g.val) * fabs(result->val); + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + CHECK_UNDERFLOW(result); + return GSL_SUCCESS; + } + } +} + + +int +gsl_sf_lngamma_complex_e(double zr, double zi, gsl_sf_result * lnr, gsl_sf_result * arg) +{ + if(zr <= 0.5) { + /* Transform to right half plane using reflection; + * in fact we do a little better by stopping at 1/2. + */ + double x = 1.0-zr; + double y = -zi; + gsl_sf_result a, b; + gsl_sf_result lnsin_r, lnsin_i; + + int stat_l = lngamma_lanczos_complex(x, y, &a, &b); + int stat_s = gsl_sf_complex_logsin_e(M_PI*zr, M_PI*zi, &lnsin_r, &lnsin_i); + + if(stat_s == GSL_SUCCESS) { + int stat_r; + lnr->val = M_LNPI - lnsin_r.val - a.val; + lnr->err = lnsin_r.err + a.err + 2.0 * GSL_DBL_EPSILON * fabs(lnr->val); + arg->val = -lnsin_i.val - b.val; + arg->err = lnsin_i.err + b.err + 2.0 * GSL_DBL_EPSILON * fabs(arg->val); + stat_r = gsl_sf_angle_restrict_symm_e(&(arg->val)); + return GSL_ERROR_SELECT_2(stat_r, stat_l); + } + else { + DOMAIN_ERROR_2(lnr,arg); + } + } + else { + /* otherwise plain vanilla Lanczos */ + return lngamma_lanczos_complex(zr, zi, lnr, arg); + } +} + + +int gsl_sf_taylorcoeff_e(const int n, const double x, gsl_sf_result * result) +{ + /* CHECK_POINTER(result) */ + + if(x < 0.0 || n < 0) { + DOMAIN_ERROR(result); + } + else if(n == 0) { + result->val = 1.0; + result->err = 0.0; + return GSL_SUCCESS; + } + else if(n == 1) { + result->val = x; + result->err = 0.0; + return GSL_SUCCESS; + } + else if(x == 0.0) { + result->val = 0.0; + result->err = 0.0; + return GSL_SUCCESS; + } + else { + const double log2pi = M_LNPI + M_LN2; + const double ln_test = n*(log(x)+1.0) + 1.0 - (n+0.5)*log(n+1.0) + 0.5*log2pi; + + if(ln_test < GSL_LOG_DBL_MIN+1.0) { + UNDERFLOW_ERROR(result); + } + else if(ln_test > GSL_LOG_DBL_MAX-1.0) { + OVERFLOW_ERROR(result); + } + else { + double product = 1.0; + int k; + for(k=1; k<=n; k++) { + product *= (x/k); + } + result->val = product; + result->err = n * GSL_DBL_EPSILON * product; + CHECK_UNDERFLOW(result); + return GSL_SUCCESS; + } + } +} + + +int gsl_sf_fact_e(const unsigned int n, gsl_sf_result * result) +{ + /* CHECK_POINTER(result) */ + + if(n < 18) { + result->val = fact_table[n].f; + result->err = 0.0; + return GSL_SUCCESS; + } + else if(n <= GSL_SF_FACT_NMAX){ + result->val = fact_table[n].f; + result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else { + OVERFLOW_ERROR(result); + } +} + + +int gsl_sf_doublefact_e(const unsigned int n, gsl_sf_result * result) +{ + /* CHECK_POINTER(result) */ + + if(n < 26) { + result->val = doub_fact_table[n].f; + result->err = 0.0; + return GSL_SUCCESS; + } + else if(n <= GSL_SF_DOUBLEFACT_NMAX){ + result->val = doub_fact_table[n].f; + result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else { + OVERFLOW_ERROR(result); + } +} + + +int gsl_sf_lnfact_e(const unsigned int n, gsl_sf_result * result) +{ + /* CHECK_POINTER(result) */ + + if(n <= GSL_SF_FACT_NMAX){ + result->val = log(fact_table[n].f); + result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else { + gsl_sf_lngamma_e(n+1.0, result); + return GSL_SUCCESS; + } +} + + +int gsl_sf_lndoublefact_e(const unsigned int n, gsl_sf_result * result) +{ + /* CHECK_POINTER(result) */ + + if(n <= GSL_SF_DOUBLEFACT_NMAX){ + result->val = log(doub_fact_table[n].f); + result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else if(GSL_IS_ODD(n)) { + gsl_sf_result lg; + gsl_sf_lngamma_e(0.5*(n+2.0), &lg); + result->val = 0.5*(n+1.0) * M_LN2 - 0.5*M_LNPI + lg.val; + result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val) + lg.err; + return GSL_SUCCESS; + } + else { + gsl_sf_result lg; + gsl_sf_lngamma_e(0.5*n+1.0, &lg); + result->val = 0.5*n*M_LN2 + lg.val; + result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val) + lg.err; + return GSL_SUCCESS; + } +} + + +int gsl_sf_lnchoose_e(unsigned int n, unsigned int m, gsl_sf_result * result) +{ + /* CHECK_POINTER(result) */ + + if(m > n) { + DOMAIN_ERROR(result); + } + else if(m == n || m == 0) { + result->val = 0.0; + result->err = 0.0; + return GSL_SUCCESS; + } + else { + gsl_sf_result nf; + gsl_sf_result mf; + gsl_sf_result nmmf; + if(m*2 > n) m = n-m; + gsl_sf_lnfact_e(n, &nf); + gsl_sf_lnfact_e(m, &mf); + gsl_sf_lnfact_e(n-m, &nmmf); + result->val = nf.val - mf.val - nmmf.val; + result->err = nf.err + mf.err + nmmf.err; + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } +} + + +int gsl_sf_choose_e(unsigned int n, unsigned int m, gsl_sf_result * result) +{ + if(m > n) { + DOMAIN_ERROR(result); + } + else if(m == n || m == 0) { + result->val = 1.0; + result->err = 0.0; + return GSL_SUCCESS; + } + else if (n <= GSL_SF_FACT_NMAX) { + result->val = (fact_table[n].f / fact_table[m].f) / fact_table[n-m].f; + result->err = 6.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } else { + if(m*2 < n) m = n-m; + + if (n - m < 64) /* compute product for a manageable number of terms */ + { + double prod = 1.0; + unsigned int k; + + for(k=n; k>=m+1; k--) { + double tk = (double)k / (double)(k-m); + if(tk > GSL_DBL_MAX/prod) { + OVERFLOW_ERROR(result); + } + prod *= tk; + } + result->val = prod; + result->err = 2.0 * GSL_DBL_EPSILON * prod * fabs(n-m); + return GSL_SUCCESS; + } + else + { + gsl_sf_result lc; + const int stat_lc = gsl_sf_lnchoose_e (n, m, &lc); + const int stat_e = gsl_sf_exp_err_e(lc.val, lc.err, result); + return GSL_ERROR_SELECT_2(stat_lc, stat_e); + } + } +} + + +/*-*-*-*-*-*-*-*-*-* Functions w/ Natural Prototypes *-*-*-*-*-*-*-*-*-*-*/ + +#include "eval.h" + +double gsl_sf_fact(const unsigned int n) +{ + EVAL_RESULT(gsl_sf_fact_e(n, &result)); +} + +double gsl_sf_lnfact(const unsigned int n) +{ + EVAL_RESULT(gsl_sf_lnfact_e(n, &result)); +} + +double gsl_sf_doublefact(const unsigned int n) +{ + EVAL_RESULT(gsl_sf_doublefact_e(n, &result)); +} + +double gsl_sf_lndoublefact(const unsigned int n) +{ + EVAL_RESULT(gsl_sf_lndoublefact_e(n, &result)); +} + +double gsl_sf_lngamma(const double x) +{ + EVAL_RESULT(gsl_sf_lngamma_e(x, &result)); +} + +double gsl_sf_gamma(const double x) +{ + EVAL_RESULT(gsl_sf_gamma_e(x, &result)); +} + +double gsl_sf_gammastar(const double x) +{ + EVAL_RESULT(gsl_sf_gammastar_e(x, &result)); +} + +double gsl_sf_gammainv(const double x) +{ + EVAL_RESULT(gsl_sf_gammainv_e(x, &result)); +} + +double gsl_sf_taylorcoeff(const int n, const double x) +{ + EVAL_RESULT(gsl_sf_taylorcoeff_e(n, x, &result)); +} + +double gsl_sf_choose(unsigned int n, unsigned int m) +{ + EVAL_RESULT(gsl_sf_choose_e(n, m, &result)); +} + +double gsl_sf_lnchoose(unsigned int n, unsigned int m) +{ + EVAL_RESULT(gsl_sf_lnchoose_e(n, m, &result)); +} diff --git a/gsl-2.5/specfunc/gamma.lo b/gsl-2.5/specfunc/gamma.lo new file mode 100644 index 00000000..b2747205 --- /dev/null +++ b/gsl-2.5/specfunc/gamma.lo @@ -0,0 +1,12 @@ +# gamma.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/gamma.o' + +# Name of the non-PIC object +non_pic_object='gamma.o' + diff --git a/gsl-2.5/specfunc/gamma_inc.c b/gsl-2.5/specfunc/gamma_inc.c new file mode 100644 index 00000000..99027516 --- /dev/null +++ b/gsl-2.5/specfunc/gamma_inc.c @@ -0,0 +1,721 @@ +/* specfunc/gamma_inc.c + * + * Copyright (C) 2007 Brian Gough + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ + +#include +#include +#include +#include +#include +#include +#include +#include + +#include "error.h" + +/* The dominant part, + * D(a,x) := x^a e^(-x) / Gamma(a+1) + */ +static +int +gamma_inc_D(const double a, const double x, gsl_sf_result * result) +{ + if(a < 10.0) { + double lnr; + gsl_sf_result lg; + gsl_sf_lngamma_e(a+1.0, &lg); + lnr = a * log(x) - x - lg.val; + result->val = exp(lnr); + result->err = 2.0 * GSL_DBL_EPSILON * (fabs(lnr) + 1.0) * fabs(result->val); + return GSL_SUCCESS; + } + else { + gsl_sf_result gstar; + gsl_sf_result ln_term; + double term1; + if (x < 0.5*a) { + double u = x/a; + double ln_u = log(u); + ln_term.val = ln_u - u + 1.0; + ln_term.err = (fabs(ln_u) + fabs(u) + 1.0) * GSL_DBL_EPSILON; + } else { + double mu = (x-a)/a; + gsl_sf_log_1plusx_mx_e(mu, &ln_term); /* log(1+mu) - mu */ + /* Propagate cancellation error from x-a, since the absolute + error of mu=x-a is DBL_EPSILON */ + ln_term.err += GSL_DBL_EPSILON * fabs(mu); + }; + gsl_sf_gammastar_e(a, &gstar); + term1 = exp(a*ln_term.val)/sqrt(2.0*M_PI*a); + result->val = term1/gstar.val; + result->err = 2.0 * GSL_DBL_EPSILON * (fabs(a*ln_term.val) + 1.0) * fabs(result->val); + /* Include propagated error from log term */ + result->err += fabs(a) * ln_term.err * fabs(result->val); + result->err += gstar.err/fabs(gstar.val) * fabs(result->val); + return GSL_SUCCESS; + } + +} + + +/* P series representation. + */ +static +int +gamma_inc_P_series(const double a, const double x, gsl_sf_result * result) +{ + const int nmax = 10000; + + gsl_sf_result D; + int stat_D = gamma_inc_D(a, x, &D); + + /* Approximating the terms of the series using Stirling's + approximation gives t_n = (x/a)^n * exp(-n(n+1)/(2a)), so the + convergence condition is n^2 / (2a) + (1-(x/a) + (1/2a)) n >> + -log(GSL_DBL_EPS) if we want t_n < O(1e-16) t_0. The condition + below detects cases where the minimum value of n is > 5000 */ + + if (x > 0.995 * a && a > 1e5) { /* Difficult case: try continued fraction */ + gsl_sf_result cf_res; + int status = gsl_sf_exprel_n_CF_e(a, x, &cf_res); + result->val = D.val * cf_res.val; + result->err = fabs(D.val * cf_res.err) + fabs(D.err * cf_res.val); + return status; + } + + /* Series would require excessive number of terms */ + + if (x > (a + nmax)) { + GSL_ERROR ("gamma_inc_P_series x>>a exceeds range", GSL_EMAXITER); + } + + /* Normal case: sum the series */ + + { + double sum = 1.0; + double term = 1.0; + double remainder; + int n; + + /* Handle lower part of the series where t_n is increasing, |x| > a+n */ + + int nlow = (x > a) ? (x - a): 0; + + for(n=1; n < nlow; n++) { + term *= x/(a+n); + sum += term; + } + + /* Handle upper part of the series where t_n is decreasing, |x| < a+n */ + + for (/* n = previous n */ ; nval = D.val * sum; + result->err = D.err * fabs(sum) + fabs(D.val * remainder); + result->err += (1.0 + n) * GSL_DBL_EPSILON * fabs(result->val); + + if(n == nmax && fabs(remainder/sum) > GSL_SQRT_DBL_EPSILON) + GSL_ERROR ("gamma_inc_P_series failed to converge", GSL_EMAXITER); + else + return stat_D; + } +} + + +/* Q large x asymptotic + */ +static +int +gamma_inc_Q_large_x(const double a, const double x, gsl_sf_result * result) +{ + const int nmax = 5000; + + gsl_sf_result D; + const int stat_D = gamma_inc_D(a, x, &D); + + double sum = 1.0; + double term = 1.0; + double last = 1.0; + int n; + for(n=1; n 1.0) break; + if(fabs(term/sum) < GSL_DBL_EPSILON) break; + sum += term; + last = term; + } + + result->val = D.val * (a/x) * sum; + result->err = D.err * fabs((a/x) * sum); + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + + if(n == nmax) + GSL_ERROR ("error in large x asymptotic", GSL_EMAXITER); + else + return stat_D; +} + + +/* Uniform asymptotic for x near a, a and x large. + * See [Temme, p. 285] + */ +static +int +gamma_inc_Q_asymp_unif(const double a, const double x, gsl_sf_result * result) +{ + const double rta = sqrt(a); + const double eps = (x-a)/a; + + gsl_sf_result ln_term; + const int stat_ln = gsl_sf_log_1plusx_mx_e(eps, &ln_term); /* log(1+eps) - eps */ + const double eta = GSL_SIGN(eps) * sqrt(-2.0*ln_term.val); + + gsl_sf_result erfc; + + double R; + double c0, c1; + + /* This used to say erfc(eta*M_SQRT2*rta), which is wrong. + * The sqrt(2) is in the denominator. Oops. + * Fixed: [GJ] Mon Nov 15 13:25:32 MST 2004 + */ + gsl_sf_erfc_e(eta*rta/M_SQRT2, &erfc); + + if(fabs(eps) < GSL_ROOT5_DBL_EPSILON) { + c0 = -1.0/3.0 + eps*(1.0/12.0 - eps*(23.0/540.0 - eps*(353.0/12960.0 - eps*589.0/30240.0))); + c1 = -1.0/540.0 - eps/288.0; + } + else { + const double rt_term = sqrt(-2.0 * ln_term.val/(eps*eps)); + const double lam = x/a; + c0 = (1.0 - 1.0/rt_term)/eps; + c1 = -(eta*eta*eta * (lam*lam + 10.0*lam + 1.0) - 12.0 * eps*eps*eps) / (12.0 * eta*eta*eta*eps*eps*eps); + } + + R = exp(-0.5*a*eta*eta)/(M_SQRT2*M_SQRTPI*rta) * (c0 + c1/a); + + result->val = 0.5 * erfc.val + R; + result->err = GSL_DBL_EPSILON * fabs(R * 0.5 * a*eta*eta) + 0.5 * erfc.err; + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + + return stat_ln; +} + + +/* Continued fraction which occurs in evaluation + * of Q(a,x) or Gamma(a,x). + * + * 1 (1-a)/x 1/x (2-a)/x 2/x (3-a)/x + * F(a,x) = ---- ------- ----- -------- ----- -------- ... + * 1 + 1 + 1 + 1 + 1 + 1 + + * + * Hans E. Plesser, 2002-01-22 (hans dot plesser at itf dot nlh dot no). + * + * Split out from gamma_inc_Q_CF() by GJ [Tue Apr 1 13:16:41 MST 2003]. + * See gamma_inc_Q_CF() below. + * + */ +static int +gamma_inc_F_CF(const double a, const double x, gsl_sf_result * result) +{ + const int nmax = 5000; + const double small = gsl_pow_3 (GSL_DBL_EPSILON); + + double hn = 1.0; /* convergent */ + double Cn = 1.0 / small; + double Dn = 1.0; + int n; + + /* n == 1 has a_1, b_1, b_0 independent of a,x, + so that has been done by hand */ + for ( n = 2 ; n < nmax ; n++ ) + { + double an; + double delta; + + if(GSL_IS_ODD(n)) + an = 0.5*(n-1)/x; + else + an = (0.5*n-a)/x; + + Dn = 1.0 + an * Dn; + if ( fabs(Dn) < small ) + Dn = small; + Cn = 1.0 + an/Cn; + if ( fabs(Cn) < small ) + Cn = small; + Dn = 1.0 / Dn; + delta = Cn * Dn; + hn *= delta; + if(fabs(delta-1.0) < GSL_DBL_EPSILON) break; + } + + result->val = hn; + result->err = 2.0*GSL_DBL_EPSILON * fabs(hn); + result->err += GSL_DBL_EPSILON * (2.0 + 0.5*n) * fabs(result->val); + + if(n == nmax) + GSL_ERROR ("error in CF for F(a,x)", GSL_EMAXITER); + else + return GSL_SUCCESS; +} + + +/* Continued fraction for Q. + * + * Q(a,x) = D(a,x) a/x F(a,x) + * + * Hans E. Plesser, 2002-01-22 (hans dot plesser at itf dot nlh dot no): + * + * Since the Gautschi equivalent series method for CF evaluation may lead + * to singularities, I have replaced it with the modified Lentz algorithm + * given in + * + * I J Thompson and A R Barnett + * Coulomb and Bessel Functions of Complex Arguments and Order + * J Computational Physics 64:490-509 (1986) + * + * In consequence, gamma_inc_Q_CF_protected() is now obsolete and has been + * removed. + * + * Identification of terms between the above equation for F(a, x) and + * the first equation in the appendix of Thompson&Barnett is as follows: + * + * b_0 = 0, b_n = 1 for all n > 0 + * + * a_1 = 1 + * a_n = (n/2-a)/x for n even + * a_n = (n-1)/(2x) for n odd + * + */ +static +int +gamma_inc_Q_CF(const double a, const double x, gsl_sf_result * result) +{ + gsl_sf_result D; + gsl_sf_result F; + const int stat_D = gamma_inc_D(a, x, &D); + const int stat_F = gamma_inc_F_CF(a, x, &F); + + result->val = D.val * (a/x) * F.val; + result->err = D.err * fabs((a/x) * F.val) + fabs(D.val * a/x * F.err); + + return GSL_ERROR_SELECT_2(stat_F, stat_D); +} + + +/* Useful for small a and x. Handles the subtraction analytically. + */ +static +int +gamma_inc_Q_series(const double a, const double x, gsl_sf_result * result) +{ + double term1; /* 1 - x^a/Gamma(a+1) */ + double sum; /* 1 + (a+1)/(a+2)(-x)/2! + (a+1)/(a+3)(-x)^2/3! + ... */ + int stat_sum; + double term2; /* a temporary variable used at the end */ + + { + /* Evaluate series for 1 - x^a/Gamma(a+1), small a + */ + const double pg21 = -2.404113806319188570799476; /* PolyGamma[2,1] */ + const double lnx = log(x); + const double el = M_EULER+lnx; + const double c1 = -el; + const double c2 = M_PI*M_PI/12.0 - 0.5*el*el; + const double c3 = el*(M_PI*M_PI/12.0 - el*el/6.0) + pg21/6.0; + const double c4 = -0.04166666666666666667 + * (-1.758243446661483480 + lnx) + * (-0.764428657272716373 + lnx) + * ( 0.723980571623507657 + lnx) + * ( 4.107554191916823640 + lnx); + const double c5 = -0.0083333333333333333 + * (-2.06563396085715900 + lnx) + * (-1.28459889470864700 + lnx) + * (-0.27583535756454143 + lnx) + * ( 1.33677371336239618 + lnx) + * ( 5.17537282427561550 + lnx); + const double c6 = -0.0013888888888888889 + * (-2.30814336454783200 + lnx) + * (-1.65846557706987300 + lnx) + * (-0.88768082560020400 + lnx) + * ( 0.17043847751371778 + lnx) + * ( 1.92135970115863890 + lnx) + * ( 6.22578557795474900 + lnx); + const double c7 = -0.00019841269841269841 + * (-2.5078657901291800 + lnx) + * (-1.9478900888958200 + lnx) + * (-1.3194837322612730 + lnx) + * (-0.5281322700249279 + lnx) + * ( 0.5913834939078759 + lnx) + * ( 2.4876819633378140 + lnx) + * ( 7.2648160783762400 + lnx); + const double c8 = -0.00002480158730158730 + * (-2.677341544966400 + lnx) + * (-2.182810448271700 + lnx) + * (-1.649350342277400 + lnx) + * (-1.014099048290790 + lnx) + * (-0.191366955370652 + lnx) + * ( 0.995403817918724 + lnx) + * ( 3.041323283529310 + lnx) + * ( 8.295966556941250 + lnx); + const double c9 = -2.75573192239859e-6 + * (-2.8243487670469080 + lnx) + * (-2.3798494322701120 + lnx) + * (-1.9143674728689960 + lnx) + * (-1.3814529102920370 + lnx) + * (-0.7294312810261694 + lnx) + * ( 0.1299079285269565 + lnx) + * ( 1.3873333251885240 + lnx) + * ( 3.5857258865210760 + lnx) + * ( 9.3214237073814600 + lnx); + const double c10 = -2.75573192239859e-7 + * (-2.9540329644556910 + lnx) + * (-2.5491366926991850 + lnx) + * (-2.1348279229279880 + lnx) + * (-1.6741881076349450 + lnx) + * (-1.1325949616098420 + lnx) + * (-0.4590034650618494 + lnx) + * ( 0.4399352987435699 + lnx) + * ( 1.7702236517651670 + lnx) + * ( 4.1231539047474080 + lnx) + * ( 10.342627908148680 + lnx); + + term1 = a*(c1+a*(c2+a*(c3+a*(c4+a*(c5+a*(c6+a*(c7+a*(c8+a*(c9+a*c10))))))))); + } + + { + /* Evaluate the sum. + */ + const int nmax = 5000; + double t = 1.0; + int n; + sum = 1.0; + + for(n=1; nval = term1 + term2; + result->err = GSL_DBL_EPSILON * (fabs(term1) + 2.0*fabs(term2)); + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return stat_sum; +} + + +/* series for small a and x, but not defined for a == 0 */ +static int +gamma_inc_series(double a, double x, gsl_sf_result * result) +{ + gsl_sf_result Q; + gsl_sf_result G; + const int stat_Q = gamma_inc_Q_series(a, x, &Q); + const int stat_G = gsl_sf_gamma_e(a, &G); + result->val = Q.val * G.val; + result->err = fabs(Q.val * G.err) + fabs(Q.err * G.val); + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + + return GSL_ERROR_SELECT_2(stat_Q, stat_G); +} + + +static int +gamma_inc_a_gt_0(double a, double x, gsl_sf_result * result) +{ + /* x > 0 and a > 0; use result for Q */ + gsl_sf_result Q; + gsl_sf_result G; + const int stat_Q = gsl_sf_gamma_inc_Q_e(a, x, &Q); + const int stat_G = gsl_sf_gamma_e(a, &G); + + result->val = G.val * Q.val; + result->err = fabs(G.val * Q.err) + fabs(G.err * Q.val); + result->err += 2.0*GSL_DBL_EPSILON * fabs(result->val); + + return GSL_ERROR_SELECT_2(stat_G, stat_Q); +} + + +static int +gamma_inc_CF(double a, double x, gsl_sf_result * result) +{ + gsl_sf_result F; + gsl_sf_result pre; + const double am1lgx = (a-1.0)*log(x); + const int stat_F = gamma_inc_F_CF(a, x, &F); + const int stat_E = gsl_sf_exp_err_e(am1lgx - x, GSL_DBL_EPSILON*fabs(am1lgx), &pre); + + result->val = F.val * pre.val; + result->err = fabs(F.err * pre.val) + fabs(F.val * pre.err); + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + + return GSL_ERROR_SELECT_2(stat_F, stat_E); +} + + +/* evaluate Gamma(0,x), x > 0 */ +#define GAMMA_INC_A_0(x, result) gsl_sf_expint_E1_e(x, result) + + +/*-*-*-*-*-*-*-*-*-*-*-* Functions with Error Codes *-*-*-*-*-*-*-*-*-*-*-*/ + +int +gsl_sf_gamma_inc_Q_e(const double a, const double x, gsl_sf_result * result) +{ + if(a < 0.0 || x < 0.0) { + DOMAIN_ERROR(result); + } + else if(x == 0.0) { + result->val = 1.0; + result->err = 0.0; + return GSL_SUCCESS; + } + else if(a == 0.0) + { + result->val = 0.0; + result->err = 0.0; + return GSL_SUCCESS; + } + else if(x <= 0.5*a) { + /* If the series is quick, do that. It is + * robust and simple. + */ + gsl_sf_result P; + int stat_P = gamma_inc_P_series(a, x, &P); + result->val = 1.0 - P.val; + result->err = P.err; + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return stat_P; + } + else if(a >= 1.0e+06 && (x-a)*(x-a) < a) { + /* Then try the difficult asymptotic regime. + * This is the only way to do this region. + */ + return gamma_inc_Q_asymp_unif(a, x, result); + } + else if(a < 0.2 && x < 5.0) { + /* Cancellations at small a must be handled + * analytically; x should not be too big + * either since the series terms grow + * with x and log(x). + */ + return gamma_inc_Q_series(a, x, result); + } + else if(a <= x) { + if(x <= 1.0e+06) { + /* Continued fraction is excellent for x >~ a. + * We do not let x be too large when x > a since + * it is somewhat pointless to try this there; + * the function is rapidly decreasing for + * x large and x > a, and it will just + * underflow in that region anyway. We + * catch that case in the standard + * large-x method. + */ + return gamma_inc_Q_CF(a, x, result); + } + else { + return gamma_inc_Q_large_x(a, x, result); + } + } + else { + if(x > a - sqrt(a)) { + /* Continued fraction again. The convergence + * is a little slower here, but that is fine. + * We have to trade that off against the slow + * convergence of the series, which is the + * only other option. + */ + return gamma_inc_Q_CF(a, x, result); + } + else { + gsl_sf_result P; + int stat_P = gamma_inc_P_series(a, x, &P); + result->val = 1.0 - P.val; + result->err = P.err; + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return stat_P; + } + } +} + + +int +gsl_sf_gamma_inc_P_e(const double a, const double x, gsl_sf_result * result) +{ + if(a <= 0.0 || x < 0.0) { + DOMAIN_ERROR(result); + } + else if(x == 0.0) { + result->val = 0.0; + result->err = 0.0; + return GSL_SUCCESS; + } + else if(x < 20.0 || x < 0.5*a) { + /* Do the easy series cases. Robust and quick. + */ + return gamma_inc_P_series(a, x, result); + } + else if(a > 1.0e+06 && (x-a)*(x-a) < a) { + /* Crossover region. Note that Q and P are + * roughly the same order of magnitude here, + * so the subtraction is stable. + */ + gsl_sf_result Q; + int stat_Q = gamma_inc_Q_asymp_unif(a, x, &Q); + result->val = 1.0 - Q.val; + result->err = Q.err; + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return stat_Q; + } + else if(a <= x) { + /* Q <~ P in this area, so the + * subtractions are stable. + */ + gsl_sf_result Q; + int stat_Q; + if(a > 0.2*x) { + stat_Q = gamma_inc_Q_CF(a, x, &Q); + } + else { + stat_Q = gamma_inc_Q_large_x(a, x, &Q); + } + result->val = 1.0 - Q.val; + result->err = Q.err; + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return stat_Q; + } + else { + if((x-a)*(x-a) < a) { + /* This condition is meant to insure + * that Q is not very close to 1, + * so the subtraction is stable. + */ + gsl_sf_result Q; + int stat_Q = gamma_inc_Q_CF(a, x, &Q); + result->val = 1.0 - Q.val; + result->err = Q.err; + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return stat_Q; + } + else { + return gamma_inc_P_series(a, x, result); + } + } +} + + +int +gsl_sf_gamma_inc_e(const double a, const double x, gsl_sf_result * result) +{ + if(x < 0.0) { + DOMAIN_ERROR(result); + } + else if(x == 0.0) { + return gsl_sf_gamma_e(a, result); + } + else if(a == 0.0) + { + return GAMMA_INC_A_0(x, result); + } + else if(a > 0.0) + { + return gamma_inc_a_gt_0(a, x, result); + } + else if(x > 0.25) + { + /* continued fraction seems to fail for x too small; otherwise + it is ok, independent of the value of |x/a|, because of the + non-oscillation in the expansion, i.e. the CF is + un-conditionally convergent for a < 0 and x > 0 + */ + return gamma_inc_CF(a, x, result); + } + else if(fabs(a) < 0.5) + { + return gamma_inc_series(a, x, result); + } + else + { + /* a = fa + da; da >= 0 */ + const double fa = floor(a); + const double da = a - fa; + + gsl_sf_result g_da; + const int stat_g_da = ( da > 0.0 ? gamma_inc_a_gt_0(da, x, &g_da) + : GAMMA_INC_A_0(x, &g_da)); + + double alpha = da; + double gax = g_da.val; + + /* Gamma(alpha-1,x) = 1/(alpha-1) (Gamma(a,x) - x^(alpha-1) e^-x) */ + do + { + const double shift = exp(-x + (alpha-1.0)*log(x)); + gax = (gax - shift) / (alpha - 1.0); + alpha -= 1.0; + } while(alpha > a); + + result->val = gax; + result->err = 2.0*(1.0 + fabs(a))*GSL_DBL_EPSILON*fabs(gax); + return stat_g_da; + } + +} + + +/*-*-*-*-*-*-*-*-*-* Functions w/ Natural Prototypes *-*-*-*-*-*-*-*-*-*-*/ + +#include "eval.h" + +double gsl_sf_gamma_inc_P(const double a, const double x) +{ + EVAL_RESULT(gsl_sf_gamma_inc_P_e(a, x, &result)); +} + +double gsl_sf_gamma_inc_Q(const double a, const double x) +{ + EVAL_RESULT(gsl_sf_gamma_inc_Q_e(a, x, &result)); +} + +double gsl_sf_gamma_inc(const double a, const double x) +{ + EVAL_RESULT(gsl_sf_gamma_inc_e(a, x, &result)); +} diff --git a/gsl-2.5/specfunc/gamma_inc.lo b/gsl-2.5/specfunc/gamma_inc.lo new file mode 100644 index 00000000..5d43e397 --- /dev/null +++ b/gsl-2.5/specfunc/gamma_inc.lo @@ -0,0 +1,12 @@ +# gamma_inc.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/gamma_inc.o' + +# Name of the non-PIC object +non_pic_object='gamma_inc.o' + diff --git a/gsl-2.5/specfunc/gegenbauer.c b/gsl-2.5/specfunc/gegenbauer.c new file mode 100644 index 00000000..3e0ce221 --- /dev/null +++ b/gsl-2.5/specfunc/gegenbauer.c @@ -0,0 +1,194 @@ +/* specfunc/gegenbauer.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ + +#include +#include +#include +#include + +#include "error.h" + +/* See: [Thompson, Atlas for Computing Mathematical Functions] */ + + +int +gsl_sf_gegenpoly_1_e(double lambda, double x, gsl_sf_result * result) +{ + /* CHECK_POINTER(result) */ + + if(lambda == 0.0) { + result->val = 2.0*x; + result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else { + result->val = 2.0*lambda*x; + result->err = 4.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } +} + +int +gsl_sf_gegenpoly_2_e(double lambda, double x, gsl_sf_result * result) +{ + /* CHECK_POINTER(result) */ + + if(lambda == 0.0) { + const double txx = 2.0*x*x; + result->val = -1.0 + txx; + result->err = 2.0 * GSL_DBL_EPSILON * fabs(txx); + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else { + result->val = lambda*(-1.0 + 2.0*(1.0+lambda)*x*x); + result->err = GSL_DBL_EPSILON * (2.0 * fabs(result->val) + fabs(lambda)); + return GSL_SUCCESS; + } +} + +int +gsl_sf_gegenpoly_3_e(double lambda, double x, gsl_sf_result * result) +{ + /* CHECK_POINTER(result) */ + + if(lambda == 0.0) { + result->val = x*(-2.0 + 4.0/3.0*x*x); + result->err = GSL_DBL_EPSILON * (2.0 * fabs(result->val) + fabs(x)); + return GSL_SUCCESS; + } + else { + double c = 4.0 + lambda*(6.0 + 2.0*lambda); + result->val = 2.0*lambda * x * ( -1.0 - lambda + c*x*x/3.0 ); + result->err = GSL_DBL_EPSILON * (2.0 * fabs(result->val) + fabs(lambda * x)); + return GSL_SUCCESS; + } +} + + +int +gsl_sf_gegenpoly_n_e(int n, double lambda, double x, gsl_sf_result * result) +{ + /* CHECK_POINTER(result) */ + + if(lambda <= -0.5 || n < 0) { + DOMAIN_ERROR(result); + } + else if(n == 0) { + result->val = 1.0; + result->err = 0.0; + return GSL_SUCCESS; + } + else if(n == 1) { + return gsl_sf_gegenpoly_1_e(lambda, x, result); + } + else if(n == 2) { + return gsl_sf_gegenpoly_2_e(lambda, x, result); + } + else if(n == 3) { + return gsl_sf_gegenpoly_3_e(lambda, x, result); + } + else { + if(lambda == 0.0 && (x >= -1.0 && x <= 1.0)) { + /* 2 T_n(x)/n */ + const double z = n * acos(x); + result->val = 2.0 * cos(z) / n; + result->err = 2.0 * GSL_DBL_EPSILON * fabs(z * result->val); + return GSL_SUCCESS; + } + else { + int k; + gsl_sf_result g2; + gsl_sf_result g3; + int stat_g2 = gsl_sf_gegenpoly_2_e(lambda, x, &g2); + int stat_g3 = gsl_sf_gegenpoly_3_e(lambda, x, &g3); + int stat_g = GSL_ERROR_SELECT_2(stat_g2, stat_g3); + double gkm2 = g2.val; + double gkm1 = g3.val; + double gk = 0.0; + for(k=4; k<=n; k++) { + gk = (2.0*(k+lambda-1.0)*x*gkm1 - (k+2.0*lambda-2.0)*gkm2) / k; + gkm2 = gkm1; + gkm1 = gk; + } + result->val = gk; + result->err = 2.0 * GSL_DBL_EPSILON * 0.5 * n * fabs(gk); + return stat_g; + } + } +} + + +int +gsl_sf_gegenpoly_array(int nmax, double lambda, double x, double * result_array) +{ + int k; + + /* CHECK_POINTER(result_array) */ + + if(lambda <= -0.5 || nmax < 0) { + GSL_ERROR("domain error", GSL_EDOM); + } + + /* n == 0 */ + result_array[0] = 1.0; + if(nmax == 0) return GSL_SUCCESS; + + /* n == 1 */ + if(lambda == 0.0) + result_array[1] = 2.0*x; + else + result_array[1] = 2.0*lambda*x; + + /* n <= nmax */ + for(k=2; k<=nmax; k++) { + double term1 = 2.0*(k+lambda-1.0) * x * result_array[k-1]; + double term2 = (k+2.0*lambda-2.0) * result_array[k-2]; + result_array[k] = (term1 - term2) / k; + } + + return GSL_SUCCESS; +} + + +/*-*-*-*-*-*-*-*-*-* Functions w/ Natural Prototypes *-*-*-*-*-*-*-*-*-*-*/ + +#include "eval.h" + +double gsl_sf_gegenpoly_1(double lambda, double x) +{ + EVAL_RESULT(gsl_sf_gegenpoly_1_e(lambda, x, &result)); +} + +double gsl_sf_gegenpoly_2(double lambda, double x) +{ + EVAL_RESULT(gsl_sf_gegenpoly_2_e(lambda, x, &result)); +} + +double gsl_sf_gegenpoly_3(double lambda, double x) +{ + EVAL_RESULT(gsl_sf_gegenpoly_3_e(lambda, x, &result)); +} + +double gsl_sf_gegenpoly_n(int n, double lambda, double x) +{ + EVAL_RESULT(gsl_sf_gegenpoly_n_e(n, lambda, x, &result)); +} diff --git a/gsl-2.5/specfunc/gegenbauer.lo b/gsl-2.5/specfunc/gegenbauer.lo new file mode 100644 index 00000000..a7ed3517 --- /dev/null +++ b/gsl-2.5/specfunc/gegenbauer.lo @@ -0,0 +1,12 @@ +# gegenbauer.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/gegenbauer.o' + +# Name of the non-PIC object +non_pic_object='gegenbauer.o' + diff --git a/gsl-2.5/specfunc/gsl_sf.h b/gsl-2.5/specfunc/gsl_sf.h new file mode 100644 index 00000000..cb9cafd2 --- /dev/null +++ b/gsl-2.5/specfunc/gsl_sf.h @@ -0,0 +1,41 @@ +/* Author: G. Jungman */ + +#ifndef __GSL_SF_H__ +#define __GSL_SF_H__ + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#endif /* __GSL_SF_H__ */ diff --git a/gsl-2.5/specfunc/gsl_sf_airy.h b/gsl-2.5/specfunc/gsl_sf_airy.h new file mode 100644 index 00000000..70333830 --- /dev/null +++ b/gsl-2.5/specfunc/gsl_sf_airy.h @@ -0,0 +1,139 @@ +/* specfunc/gsl_sf_airy.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ + +#ifndef __GSL_SF_AIRY_H__ +#define __GSL_SF_AIRY_H__ + +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + + +/* Airy function Ai(x) + * + * exceptions: GSL_EUNDRFLW + */ +int gsl_sf_airy_Ai_e(const double x, const gsl_mode_t mode, gsl_sf_result * result); +double gsl_sf_airy_Ai(const double x, gsl_mode_t mode); + + +/* Airy function Bi(x) + * + * exceptions: GSL_EOVRFLW + */ +int gsl_sf_airy_Bi_e(const double x, gsl_mode_t mode, gsl_sf_result * result); +double gsl_sf_airy_Bi(const double x, gsl_mode_t mode); + + +/* scaled Ai(x): + * Ai(x) x < 0 + * exp(+2/3 x^{3/2}) Ai(x) x > 0 + * + * exceptions: none + */ +int gsl_sf_airy_Ai_scaled_e(const double x, gsl_mode_t mode, gsl_sf_result * result); +double gsl_sf_airy_Ai_scaled(const double x, gsl_mode_t mode); + + +/* scaled Bi(x): + * Bi(x) x < 0 + * exp(-2/3 x^{3/2}) Bi(x) x > 0 + * + * exceptions: none + */ +int gsl_sf_airy_Bi_scaled_e(const double x, gsl_mode_t mode, gsl_sf_result * result); +double gsl_sf_airy_Bi_scaled(const double x, gsl_mode_t mode); + + +/* derivative Ai'(x) + * + * exceptions: GSL_EUNDRFLW + */ +int gsl_sf_airy_Ai_deriv_e(const double x, gsl_mode_t mode, gsl_sf_result * result); +double gsl_sf_airy_Ai_deriv(const double x, gsl_mode_t mode); + + +/* derivative Bi'(x) + * + * exceptions: GSL_EOVRFLW + */ +int gsl_sf_airy_Bi_deriv_e(const double x, gsl_mode_t mode, gsl_sf_result * result); +double gsl_sf_airy_Bi_deriv(const double x, gsl_mode_t mode); + + +/* scaled derivative Ai'(x): + * Ai'(x) x < 0 + * exp(+2/3 x^{3/2}) Ai'(x) x > 0 + * + * exceptions: none + */ +int gsl_sf_airy_Ai_deriv_scaled_e(const double x, gsl_mode_t mode, gsl_sf_result * result); +double gsl_sf_airy_Ai_deriv_scaled(const double x, gsl_mode_t mode); + + +/* scaled derivative: + * Bi'(x) x < 0 + * exp(-2/3 x^{3/2}) Bi'(x) x > 0 + * + * exceptions: none + */ +int gsl_sf_airy_Bi_deriv_scaled_e(const double x, gsl_mode_t mode, gsl_sf_result * result); +double gsl_sf_airy_Bi_deriv_scaled(const double x, gsl_mode_t mode); + + +/* Zeros of Ai(x) + */ +int gsl_sf_airy_zero_Ai_e(unsigned int s, gsl_sf_result * result); +double gsl_sf_airy_zero_Ai(unsigned int s); + + +/* Zeros of Bi(x) + */ +int gsl_sf_airy_zero_Bi_e(unsigned int s, gsl_sf_result * result); +double gsl_sf_airy_zero_Bi(unsigned int s); + + +/* Zeros of Ai'(x) + */ +int gsl_sf_airy_zero_Ai_deriv_e(unsigned int s, gsl_sf_result * result); +double gsl_sf_airy_zero_Ai_deriv(unsigned int s); + + +/* Zeros of Bi'(x) + */ +int gsl_sf_airy_zero_Bi_deriv_e(unsigned int s, gsl_sf_result * result); +double gsl_sf_airy_zero_Bi_deriv(unsigned int s); + + +__END_DECLS + +#endif /* __GSL_SF_AIRY_H__ */ diff --git a/gsl-2.5/specfunc/gsl_sf_bessel.h b/gsl-2.5/specfunc/gsl_sf_bessel.h new file mode 100644 index 00000000..d72957ae --- /dev/null +++ b/gsl-2.5/specfunc/gsl_sf_bessel.h @@ -0,0 +1,549 @@ +/* specfunc/gsl_sf_bessel.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ + +#ifndef __GSL_SF_BESSEL_H__ +#define __GSL_SF_BESSEL_H__ + +#include +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + + +/* Regular Bessel Function J_0(x) + * + * exceptions: none + */ +int gsl_sf_bessel_J0_e(const double x, gsl_sf_result * result); +double gsl_sf_bessel_J0(const double x); + + +/* Regular Bessel Function J_1(x) + * + * exceptions: GSL_EUNDRFLW + */ +int gsl_sf_bessel_J1_e(const double x, gsl_sf_result * result); +double gsl_sf_bessel_J1(const double x); + + +/* Regular Bessel Function J_n(x) + * + * exceptions: GSL_EUNDRFLW + */ +int gsl_sf_bessel_Jn_e(int n, double x, gsl_sf_result * result); +double gsl_sf_bessel_Jn(const int n, const double x); + + +/* Regular Bessel Function J_n(x), nmin <= n <= nmax + * + * exceptions: GSL_EDOM, GSL_EUNDRFLW + */ +int gsl_sf_bessel_Jn_array(int nmin, int nmax, double x, double * result_array); + + +/* Irregular Bessel function Y_0(x) + * + * x > 0.0 + * exceptions: GSL_EDOM, GSL_EUNDRFLW + */ +int gsl_sf_bessel_Y0_e(const double x, gsl_sf_result * result); +double gsl_sf_bessel_Y0(const double x); + + +/* Irregular Bessel function Y_1(x) + * + * x > 0.0 + * exceptions: GSL_EDOM, GSL_EOVRFLW, GSL_EUNDRFLW + */ +int gsl_sf_bessel_Y1_e(const double x, gsl_sf_result * result); +double gsl_sf_bessel_Y1(const double x); + + +/* Irregular Bessel function Y_n(x) + * + * x > 0.0 + * exceptions: GSL_EDOM, GSL_EOVRFLW, GSL_EUNDRFLW + */ +int gsl_sf_bessel_Yn_e(int n,const double x, gsl_sf_result * result); +double gsl_sf_bessel_Yn(const int n,const double x); + + +/* Irregular Bessel function Y_n(x), nmin <= n <= nmax + * + * x > 0.0 + * exceptions: GSL_EDOM, GSL_EOVRFLW, GSL_EUNDRFLW + */ +int gsl_sf_bessel_Yn_array(const int nmin, const int nmax, const double x, double * result_array); + + +/* Regular modified Bessel function I_0(x) + * + * exceptions: GSL_EOVRFLW + */ +int gsl_sf_bessel_I0_e(const double x, gsl_sf_result * result); +double gsl_sf_bessel_I0(const double x); + + +/* Regular modified Bessel function I_1(x) + * + * exceptions: GSL_EOVRFLW, GSL_EUNDRFLW + */ +int gsl_sf_bessel_I1_e(const double x, gsl_sf_result * result); +double gsl_sf_bessel_I1(const double x); + + +/* Regular modified Bessel function I_n(x) + * + * exceptions: GSL_EOVRFLW, GSL_EUNDRFLW + */ +int gsl_sf_bessel_In_e(const int n, const double x, gsl_sf_result * result); +double gsl_sf_bessel_In(const int n, const double x); + + +/* Regular modified Bessel function I_n(x) for n=nmin,...,nmax + * + * nmin >=0, nmax >= nmin + * exceptions: GSL_EDOM, GSL_EOVRFLW, GSL_EUNDRFLW + */ +int gsl_sf_bessel_In_array(const int nmin, const int nmax, const double x, double * result_array); + + +/* Scaled regular modified Bessel function + * exp(-|x|) I_0(x) + * + * exceptions: none + */ +int gsl_sf_bessel_I0_scaled_e(const double x, gsl_sf_result * result); +double gsl_sf_bessel_I0_scaled(const double x); + + +/* Scaled regular modified Bessel function + * exp(-|x|) I_1(x) + * + * exceptions: GSL_EUNDRFLW + */ +int gsl_sf_bessel_I1_scaled_e(const double x, gsl_sf_result * result); +double gsl_sf_bessel_I1_scaled(const double x); + + +/* Scaled regular modified Bessel function + * exp(-|x|) I_n(x) + * + * exceptions: GSL_EUNDRFLW + */ +int gsl_sf_bessel_In_scaled_e(int n, const double x, gsl_sf_result * result); +double gsl_sf_bessel_In_scaled(const int n, const double x); + + +/* Scaled regular modified Bessel function + * exp(-|x|) I_n(x) for n=nmin,...,nmax + * + * nmin >=0, nmax >= nmin + * exceptions: GSL_EUNDRFLW + */ +int gsl_sf_bessel_In_scaled_array(const int nmin, const int nmax, const double x, double * result_array); + + +/* Irregular modified Bessel function K_0(x) + * + * x > 0.0 + * exceptions: GSL_EDOM, GSL_EUNDRFLW + */ +int gsl_sf_bessel_K0_e(const double x, gsl_sf_result * result); +double gsl_sf_bessel_K0(const double x); + + +/* Irregular modified Bessel function K_1(x) + * + * x > 0.0 + * exceptions: GSL_EDOM, GSL_EOVRFLW, GSL_EUNDRFLW + */ +int gsl_sf_bessel_K1_e(const double x, gsl_sf_result * result); +double gsl_sf_bessel_K1(const double x); + + +/* Irregular modified Bessel function K_n(x) + * + * x > 0.0 + * exceptions: GSL_EDOM, GSL_EOVRFLW, GSL_EUNDRFLW + */ +int gsl_sf_bessel_Kn_e(const int n, const double x, gsl_sf_result * result); +double gsl_sf_bessel_Kn(const int n, const double x); + + +/* Irregular modified Bessel function K_n(x) for n=nmin,...,nmax + * + * x > 0.0, nmin >=0, nmax >= nmin + * exceptions: GSL_EDOM, GSL_EOVRFLW, GSL_EUNDRFLW + */ +int gsl_sf_bessel_Kn_array(const int nmin, const int nmax, const double x, double * result_array); + + +/* Scaled irregular modified Bessel function + * exp(x) K_0(x) + * + * x > 0.0 + * exceptions: GSL_EDOM + */ +int gsl_sf_bessel_K0_scaled_e(const double x, gsl_sf_result * result); +double gsl_sf_bessel_K0_scaled(const double x); + + +/* Scaled irregular modified Bessel function + * exp(x) K_1(x) + * + * x > 0.0 + * exceptions: GSL_EDOM, GSL_EUNDRFLW + */ +int gsl_sf_bessel_K1_scaled_e(const double x, gsl_sf_result * result); +double gsl_sf_bessel_K1_scaled(const double x); + + +/* Scaled irregular modified Bessel function + * exp(x) K_n(x) + * + * x > 0.0 + * exceptions: GSL_EDOM, GSL_EUNDRFLW + */ +int gsl_sf_bessel_Kn_scaled_e(int n, const double x, gsl_sf_result * result); +double gsl_sf_bessel_Kn_scaled(const int n, const double x); + + +/* Scaled irregular modified Bessel function exp(x) K_n(x) for n=nmin,...,nmax + * + * x > 0.0, nmin >=0, nmax >= nmin + * exceptions: GSL_EDOM, GSL_EUNDRFLW + */ +int gsl_sf_bessel_Kn_scaled_array(const int nmin, const int nmax, const double x, double * result_array); + + +/* Regular spherical Bessel function j_0(x) = sin(x)/x + * + * exceptions: none + */ +int gsl_sf_bessel_j0_e(const double x, gsl_sf_result * result); +double gsl_sf_bessel_j0(const double x); + + +/* Regular spherical Bessel function j_1(x) = (sin(x)/x - cos(x))/x + * + * exceptions: GSL_EUNDRFLW + */ +int gsl_sf_bessel_j1_e(const double x, gsl_sf_result * result); +double gsl_sf_bessel_j1(const double x); + + +/* Regular spherical Bessel function j_2(x) = ((3/x^2 - 1)sin(x) - 3cos(x)/x)/x + * + * exceptions: GSL_EUNDRFLW + */ +int gsl_sf_bessel_j2_e(const double x, gsl_sf_result * result); +double gsl_sf_bessel_j2(const double x); + + +/* Regular spherical Bessel function j_l(x) + * + * l >= 0, x >= 0.0 + * exceptions: GSL_EDOM, GSL_EUNDRFLW + */ +int gsl_sf_bessel_jl_e(const int l, const double x, gsl_sf_result * result); +double gsl_sf_bessel_jl(const int l, const double x); + + +/* Regular spherical Bessel function j_l(x) for l=0,1,...,lmax + * + * exceptions: GSL_EDOM, GSL_EUNDRFLW + */ +int gsl_sf_bessel_jl_array(const int lmax, const double x, double * result_array); + + +/* Regular spherical Bessel function j_l(x) for l=0,1,...,lmax + * Uses Steed's method. + * + * exceptions: GSL_EDOM, GSL_EUNDRFLW + */ +int gsl_sf_bessel_jl_steed_array(const int lmax, const double x, double * jl_x_array); + + +/* Irregular spherical Bessel function y_0(x) + * + * exceptions: none + */ +int gsl_sf_bessel_y0_e(const double x, gsl_sf_result * result); +double gsl_sf_bessel_y0(const double x); + + +/* Irregular spherical Bessel function y_1(x) + * + * exceptions: GSL_EUNDRFLW + */ +int gsl_sf_bessel_y1_e(const double x, gsl_sf_result * result); +double gsl_sf_bessel_y1(const double x); + + +/* Irregular spherical Bessel function y_2(x) + * + * exceptions: GSL_EUNDRFLW + */ +int gsl_sf_bessel_y2_e(const double x, gsl_sf_result * result); +double gsl_sf_bessel_y2(const double x); + + +/* Irregular spherical Bessel function y_l(x) + * + * exceptions: GSL_EUNDRFLW + */ +int gsl_sf_bessel_yl_e(int l, const double x, gsl_sf_result * result); +double gsl_sf_bessel_yl(const int l, const double x); + + +/* Irregular spherical Bessel function y_l(x) for l=0,1,...,lmax + * + * exceptions: GSL_EUNDRFLW + */ +int gsl_sf_bessel_yl_array(const int lmax, const double x, double * result_array); + + +/* Regular scaled modified spherical Bessel function + * + * Exp[-|x|] i_0(x) + * + * exceptions: none + */ +int gsl_sf_bessel_i0_scaled_e(const double x, gsl_sf_result * result); +double gsl_sf_bessel_i0_scaled(const double x); + + +/* Regular scaled modified spherical Bessel function + * + * Exp[-|x|] i_1(x) + * + * exceptions: GSL_EUNDRFLW + */ +int gsl_sf_bessel_i1_scaled_e(const double x, gsl_sf_result * result); +double gsl_sf_bessel_i1_scaled(const double x); + + +/* Regular scaled modified spherical Bessel function + * + * Exp[-|x|] i_2(x) + * + * exceptions: GSL_EUNDRFLW + */ +int gsl_sf_bessel_i2_scaled_e(const double x, gsl_sf_result * result); +double gsl_sf_bessel_i2_scaled(const double x); + + +/* Regular scaled modified spherical Bessel functions + * + * Exp[-|x|] i_l(x) + * + * i_l(x) = Sqrt[Pi/(2x)] BesselI[l+1/2,x] + * + * l >= 0 + * exceptions: GSL_EDOM, GSL_EUNDRFLW + */ +int gsl_sf_bessel_il_scaled_e(const int l, double x, gsl_sf_result * result); +double gsl_sf_bessel_il_scaled(const int l, const double x); + + +/* Regular scaled modified spherical Bessel functions + * + * Exp[-|x|] i_l(x) + * for l=0,1,...,lmax + * + * exceptions: GSL_EUNDRFLW + */ +int gsl_sf_bessel_il_scaled_array(const int lmax, const double x, double * result_array); + + +/* Irregular scaled modified spherical Bessel function + * Exp[x] k_0(x) + * + * x > 0.0 + * exceptions: GSL_EDOM, GSL_EUNDRFLW + */ +int gsl_sf_bessel_k0_scaled_e(const double x, gsl_sf_result * result); +double gsl_sf_bessel_k0_scaled(const double x); + + +/* Irregular modified spherical Bessel function + * Exp[x] k_1(x) + * + * x > 0.0 + * exceptions: GSL_EDOM, GSL_EUNDRFLW, GSL_EOVRFLW + */ +int gsl_sf_bessel_k1_scaled_e(const double x, gsl_sf_result * result); +double gsl_sf_bessel_k1_scaled(const double x); + + +/* Irregular modified spherical Bessel function + * Exp[x] k_2(x) + * + * x > 0.0 + * exceptions: GSL_EDOM, GSL_EUNDRFLW, GSL_EOVRFLW + */ +int gsl_sf_bessel_k2_scaled_e(const double x, gsl_sf_result * result); +double gsl_sf_bessel_k2_scaled(const double x); + + +/* Irregular modified spherical Bessel function + * Exp[x] k_l[x] + * + * k_l(x) = Sqrt[Pi/(2x)] BesselK[l+1/2,x] + * + * exceptions: GSL_EDOM, GSL_EUNDRFLW + */ +int gsl_sf_bessel_kl_scaled_e(int l, const double x, gsl_sf_result * result); +double gsl_sf_bessel_kl_scaled(const int l, const double x); + + +/* Irregular scaled modified spherical Bessel function + * Exp[x] k_l(x) + * + * for l=0,1,...,lmax + * exceptions: GSL_EDOM, GSL_EUNDRFLW + */ +int gsl_sf_bessel_kl_scaled_array(const int lmax, const double x, double * result_array); + + +/* Regular cylindrical Bessel function J_nu(x) + * + * exceptions: GSL_EDOM, GSL_EUNDRFLW + */ +int gsl_sf_bessel_Jnu_e(const double nu, const double x, gsl_sf_result * result); +double gsl_sf_bessel_Jnu(const double nu, const double x); + + +/* Irregular cylindrical Bessel function Y_nu(x) + * + * exceptions: + */ +int gsl_sf_bessel_Ynu_e(double nu, double x, gsl_sf_result * result); +double gsl_sf_bessel_Ynu(const double nu, const double x); + + +/* Regular cylindrical Bessel function J_nu(x) + * evaluated at a series of x values. The array + * contains the x values. They are assumed to be + * strictly ordered and positive. The array is + * over-written with the values of J_nu(x_i). + * + * exceptions: GSL_EDOM, GSL_EINVAL + */ +int gsl_sf_bessel_sequence_Jnu_e(double nu, gsl_mode_t mode, size_t size, double * v); + + +/* Scaled modified cylindrical Bessel functions + * + * Exp[-|x|] BesselI[nu, x] + * x >= 0, nu >= 0 + * + * exceptions: GSL_EDOM + */ +int gsl_sf_bessel_Inu_scaled_e(double nu, double x, gsl_sf_result * result); +double gsl_sf_bessel_Inu_scaled(double nu, double x); + + +/* Modified cylindrical Bessel functions + * + * BesselI[nu, x] + * x >= 0, nu >= 0 + * + * exceptions: GSL_EDOM, GSL_EOVRFLW + */ +int gsl_sf_bessel_Inu_e(double nu, double x, gsl_sf_result * result); +double gsl_sf_bessel_Inu(double nu, double x); + + +/* Scaled modified cylindrical Bessel functions + * + * Exp[+|x|] BesselK[nu, x] + * x > 0, nu >= 0 + * + * exceptions: GSL_EDOM + */ +int gsl_sf_bessel_Knu_scaled_e(const double nu, const double x, gsl_sf_result * result); +double gsl_sf_bessel_Knu_scaled(const double nu, const double x); + +int gsl_sf_bessel_Knu_scaled_e10_e(const double nu, const double x, gsl_sf_result_e10 * result); + +/* Modified cylindrical Bessel functions + * + * BesselK[nu, x] + * x > 0, nu >= 0 + * + * exceptions: GSL_EDOM, GSL_EUNDRFLW + */ +int gsl_sf_bessel_Knu_e(const double nu, const double x, gsl_sf_result * result); +double gsl_sf_bessel_Knu(const double nu, const double x); + + +/* Logarithm of modified cylindrical Bessel functions. + * + * Log[BesselK[nu, x]] + * x > 0, nu >= 0 + * + * exceptions: GSL_EDOM + */ +int gsl_sf_bessel_lnKnu_e(const double nu, const double x, gsl_sf_result * result); +double gsl_sf_bessel_lnKnu(const double nu, const double x); + + +/* s'th positive zero of the Bessel function J_0(x). + * + * exceptions: + */ +int gsl_sf_bessel_zero_J0_e(unsigned int s, gsl_sf_result * result); +double gsl_sf_bessel_zero_J0(unsigned int s); + + +/* s'th positive zero of the Bessel function J_1(x). + * + * exceptions: + */ +int gsl_sf_bessel_zero_J1_e(unsigned int s, gsl_sf_result * result); +double gsl_sf_bessel_zero_J1(unsigned int s); + + +/* s'th positive zero of the Bessel function J_nu(x). + * + * exceptions: + */ +int gsl_sf_bessel_zero_Jnu_e(double nu, unsigned int s, gsl_sf_result * result); +double gsl_sf_bessel_zero_Jnu(double nu, unsigned int s); + + +__END_DECLS + +#endif /* __GSL_SF_BESSEL_H__ */ diff --git a/gsl-2.5/specfunc/gsl_sf_clausen.h b/gsl-2.5/specfunc/gsl_sf_clausen.h new file mode 100644 index 00000000..8e4ccd24 --- /dev/null +++ b/gsl-2.5/specfunc/gsl_sf_clausen.h @@ -0,0 +1,52 @@ +/* specfunc/gsl_sf_clausen.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ + +#ifndef __GSL_SF_CLAUSEN_H__ +#define __GSL_SF_CLAUSEN_H__ + +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + + +/* Calculate the Clausen integral: + * Cl_2(x) := Integrate[-Log[2 Sin[t/2]], {t,0,x}] + * + * Relation to dilogarithm: + * Cl_2(theta) = Im[ Li_2(e^(i theta)) ] + */ +int gsl_sf_clausen_e(double x, gsl_sf_result * result); +double gsl_sf_clausen(const double x); + + +__END_DECLS + +#endif /* __GSL_SF_CLAUSEN_H__ */ diff --git a/gsl-2.5/specfunc/gsl_sf_coulomb.h b/gsl-2.5/specfunc/gsl_sf_coulomb.h new file mode 100644 index 00000000..764a5714 --- /dev/null +++ b/gsl-2.5/specfunc/gsl_sf_coulomb.h @@ -0,0 +1,128 @@ +/* specfunc/gsl_sf_coulomb.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ + +#ifndef __GSL_SF_COULOMB_H__ +#define __GSL_SF_COULOMB_H__ + +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + + +/* Normalized hydrogenic bound states, radial dependence. */ + +/* R_1 := 2Z sqrt(Z) exp(-Z r) + */ +int gsl_sf_hydrogenicR_1_e(const double Z, const double r, gsl_sf_result * result); +double gsl_sf_hydrogenicR_1(const double Z, const double r); + +/* R_n := norm exp(-Z r/n) (2Z/n)^l Laguerre[n-l-1, 2l+1, 2Z/n r] + * + * normalization such that psi(n,l,r) = R_n Y_{lm} + */ +int gsl_sf_hydrogenicR_e(const int n, const int l, const double Z, const double r, gsl_sf_result * result); +double gsl_sf_hydrogenicR(const int n, const int l, const double Z, const double r); + + +/* Coulomb wave functions F_{lam_F}(eta,x), G_{lam_G}(eta,x) + * and their derivatives; lam_G := lam_F - k_lam_G + * + * lam_F, lam_G > -0.5 + * x > 0.0 + * + * Conventions of Abramowitz+Stegun. + * + * Because there can be a large dynamic range of values, + * overflows are handled gracefully. If an overflow occurs, + * GSL_EOVRFLW is signalled and exponent(s) are returned + * through exp_F, exp_G. These are such that + * + * F_L(eta,x) = fc[k_L] * exp(exp_F) + * G_L(eta,x) = gc[k_L] * exp(exp_G) + * F_L'(eta,x) = fcp[k_L] * exp(exp_F) + * G_L'(eta,x) = gcp[k_L] * exp(exp_G) + */ +int +gsl_sf_coulomb_wave_FG_e(const double eta, const double x, + const double lam_F, + const int k_lam_G, + gsl_sf_result * F, gsl_sf_result * Fp, + gsl_sf_result * G, gsl_sf_result * Gp, + double * exp_F, double * exp_G); + + +/* F_L(eta,x) as array */ +int gsl_sf_coulomb_wave_F_array( + double lam_min, int kmax, + double eta, double x, + double * fc_array, + double * F_exponent + ); + +/* F_L(eta,x), G_L(eta,x) as arrays */ +int gsl_sf_coulomb_wave_FG_array(double lam_min, int kmax, + double eta, double x, + double * fc_array, double * gc_array, + double * F_exponent, + double * G_exponent + ); + +/* F_L(eta,x), G_L(eta,x), F'_L(eta,x), G'_L(eta,x) as arrays */ +int gsl_sf_coulomb_wave_FGp_array(double lam_min, int kmax, + double eta, double x, + double * fc_array, double * fcp_array, + double * gc_array, double * gcp_array, + double * F_exponent, + double * G_exponent + ); + +/* Coulomb wave function divided by the argument, + * F(eta, x)/x. This is the function which reduces to + * spherical Bessel functions in the limit eta->0. + */ +int gsl_sf_coulomb_wave_sphF_array(double lam_min, int kmax, + double eta, double x, + double * fc_array, + double * F_exponent + ); + + +/* Coulomb wave function normalization constant. + * [Abramowitz+Stegun 14.1.8, 14.1.9] + */ +int gsl_sf_coulomb_CL_e(double L, double eta, gsl_sf_result * result); +int gsl_sf_coulomb_CL_array(double Lmin, int kmax, double eta, double * cl); + + +__END_DECLS + +#endif /* __GSL_SF_COULOMB_H__ */ diff --git a/gsl-2.5/specfunc/gsl_sf_coupling.h b/gsl-2.5/specfunc/gsl_sf_coupling.h new file mode 100644 index 00000000..c46b9f58 --- /dev/null +++ b/gsl-2.5/specfunc/gsl_sf_coupling.h @@ -0,0 +1,125 @@ +/* specfunc/gsl_sf_coupling.h + * + * Copyright (C) 1996,1997,1998,1999,2000,2001,2002 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ + +#ifndef __GSL_SF_COUPLING_H__ +#define __GSL_SF_COUPLING_H__ + +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + + +/* 3j Symbols: / ja jb jc \ + * \ ma mb mc / + * + * exceptions: GSL_EDOM, GSL_EOVRFLW + */ +int gsl_sf_coupling_3j_e(int two_ja, int two_jb, int two_jc, + int two_ma, int two_mb, int two_mc, + gsl_sf_result * result + ); +double gsl_sf_coupling_3j(int two_ja, int two_jb, int two_jc, + int two_ma, int two_mb, int two_mc + ); + + +/* 6j Symbols: / ja jb jc \ + * \ jd je jf / + * + * exceptions: GSL_EDOM, GSL_EOVRFLW + */ +int gsl_sf_coupling_6j_e(int two_ja, int two_jb, int two_jc, + int two_jd, int two_je, int two_jf, + gsl_sf_result * result + ); +double gsl_sf_coupling_6j(int two_ja, int two_jb, int two_jc, + int two_jd, int two_je, int two_jf + ); + +/* Racah W coefficients: + * + * W(a b c d; e f) = (-1)^{a+b+c+d} / a b e \ + * \ d c f / + * + * exceptions: GSL_EDOM, GSL_EOVRFLW + */ +int gsl_sf_coupling_RacahW_e(int two_ja, int two_jb, int two_jc, + int two_jd, int two_je, int two_jf, + gsl_sf_result * result + ); +double gsl_sf_coupling_RacahW(int two_ja, int two_jb, int two_jc, + int two_jd, int two_je, int two_jf + ); + + +/* 9j Symbols: / ja jb jc \ + * | jd je jf | + * \ jg jh ji / + * + * exceptions: GSL_EDOM, GSL_EOVRFLW + */ +int gsl_sf_coupling_9j_e(int two_ja, int two_jb, int two_jc, + int two_jd, int two_je, int two_jf, + int two_jg, int two_jh, int two_ji, + gsl_sf_result * result + ); +double gsl_sf_coupling_9j(int two_ja, int two_jb, int two_jc, + int two_jd, int two_je, int two_jf, + int two_jg, int two_jh, int two_ji + ); + + +/* INCORRECT version of 6j Symbols: + * This function actually calculates + * / ja jb je \ + * \ jd jc jf / + * It represents the original implementation, + * which had the above permutation of the + * arguments. This was wrong and confusing, + * and I had to fix it. Sorry for the trouble. + * [GJ] Tue Nov 26 12:53:39 MST 2002 + * + * exceptions: GSL_EDOM, GSL_EOVRFLW + */ +#ifndef GSL_DISABLE_DEPRECATED +int gsl_sf_coupling_6j_INCORRECT_e(int two_ja, int two_jb, int two_jc, + int two_jd, int two_je, int two_jf, + gsl_sf_result * result + ); +double gsl_sf_coupling_6j_INCORRECT(int two_ja, int two_jb, int two_jc, + int two_jd, int two_je, int two_jf + ); +#endif /* !GSL_DISABLE_DEPRECATED */ + + +__END_DECLS + +#endif /* __GSL_SF_COUPLING_H__ */ diff --git a/gsl-2.5/specfunc/gsl_sf_dawson.h b/gsl-2.5/specfunc/gsl_sf_dawson.h new file mode 100644 index 00000000..7c11f9f4 --- /dev/null +++ b/gsl-2.5/specfunc/gsl_sf_dawson.h @@ -0,0 +1,52 @@ +/* specfunc/gsl_sf_dawson.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ + +#ifndef __GSL_SF_DAWSON_H__ +#define __GSL_SF_DAWSON_H__ + +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + + +/* Dawson's integral: + * + * Exp[-x^2] Integral[ Exp[t^2], {t,0,x}] + * + * exceptions: GSL_EUNDRFLW; + */ +int gsl_sf_dawson_e(double x, gsl_sf_result * result); +double gsl_sf_dawson(double x); + + +__END_DECLS + +#endif /* __GSL_SF_DAWSON_H__ */ diff --git a/gsl-2.5/specfunc/gsl_sf_debye.h b/gsl-2.5/specfunc/gsl_sf_debye.h new file mode 100644 index 00000000..bc732b17 --- /dev/null +++ b/gsl-2.5/specfunc/gsl_sf_debye.h @@ -0,0 +1,91 @@ +/* specfunc/gsl_sf_debye.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ +/* augmented by D_5(x) and D_6(x) by Richard J. Mathar, 2005-11-08 */ + +#ifndef __GSL_SF_DEBYE_H__ +#define __GSL_SF_DEBYE_H__ + +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + + +/* D_n(x) := n/x^n Integrate[t^n/(e^t - 1), {t,0,x}] */ + +/* D_1(x) + * + * exceptions: GSL_EDOM + */ +int gsl_sf_debye_1_e(const double x, gsl_sf_result * result); +double gsl_sf_debye_1(const double x); + + +/* D_2(x) + * + * exceptions: GSL_EDOM, GSL_EUNDRFLW + */ +int gsl_sf_debye_2_e(const double x, gsl_sf_result * result); +double gsl_sf_debye_2(const double x); + + +/* D_3(x) + * + * exceptions: GSL_EDOM, GSL_EUNDRFLW + */ +int gsl_sf_debye_3_e(const double x, gsl_sf_result * result); +double gsl_sf_debye_3(const double x); + + +/* D_4(x) + * + * exceptions: GSL_EDOM, GSL_EUNDRFLW + */ +int gsl_sf_debye_4_e(const double x, gsl_sf_result * result); +double gsl_sf_debye_4(const double x); + +/* D_5(x) + * + * exceptions: GSL_EDOM, GSL_EUNDRFLW + */ +int gsl_sf_debye_5_e(const double x, gsl_sf_result * result); +double gsl_sf_debye_5(const double x); + +/* D_6(x) + * + * exceptions: GSL_EDOM, GSL_EUNDRFLW + */ +int gsl_sf_debye_6_e(const double x, gsl_sf_result * result); +double gsl_sf_debye_6(const double x); + + +__END_DECLS + +#endif /* __GSL_SF_DEBYE_H__ */ diff --git a/gsl-2.5/specfunc/gsl_sf_dilog.h b/gsl-2.5/specfunc/gsl_sf_dilog.h new file mode 100644 index 00000000..79b2b76f --- /dev/null +++ b/gsl-2.5/specfunc/gsl_sf_dilog.h @@ -0,0 +1,130 @@ +/* specfunc/gsl_sf_dilog.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2004 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ + +#ifndef __GSL_SF_DILOG_H__ +#define __GSL_SF_DILOG_H__ + +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + + +/* Real part of DiLogarithm(x), for real argument. + * In Lewin's notation, this is Li_2(x). + * + * Li_2(x) = - Re[ Integrate[ Log[1-s] / s, {s, 0, x}] ] + * + * The function in the complex plane has a branch point + * at z = 1; we place the cut in the conventional way, + * on [1, +infty). This means that the value for real x > 1 + * is a matter of definition; however, this choice does not + * affect the real part and so is not relevant to the + * interpretation of this implemented function. + */ +int gsl_sf_dilog_e(const double x, gsl_sf_result * result); +double gsl_sf_dilog(const double x); + + +/* DiLogarithm(z), for complex argument z = x + i y. + * Computes the principal branch. + * + * Recall that the branch cut is on the real axis with x > 1. + * The imaginary part of the computed value on the cut is given + * by -Pi*log(x), which is the limiting value taken approaching + * from y < 0. This is a conventional choice, though there is no + * true standardized choice. + * + * Note that there is no canonical way to lift the defining + * contour to the full Riemann surface because of the appearance + * of a "hidden branch point" at z = 0 on non-principal sheets. + * Experts will know the simple algebraic prescription for + * obtaining the sheet they want; non-experts will not want + * to know anything about it. This is why GSL chooses to compute + * only on the principal branch. + */ +int +gsl_sf_complex_dilog_xy_e( + const double x, + const double y, + gsl_sf_result * result_re, + gsl_sf_result * result_im + ); + + + +/* DiLogarithm(z), for complex argument z = r Exp[i theta]. + * Computes the principal branch, thereby assuming an + * implicit reduction of theta to the range (-2 pi, 2 pi). + * + * If theta is identically zero, the imaginary part is computed + * as if approaching from y > 0. For other values of theta no + * special consideration is given, since it is assumed that + * no other machine representations of multiples of pi will + * produce y = 0 precisely. This assumption depends on some + * subtle properties of the machine arithmetic, such as + * correct rounding and monotonicity of the underlying + * implementation of sin() and cos(). + * + * This function is ok, but the interface is confusing since + * it makes it appear that the branch structure is resolved. + * Furthermore the handling of values close to the branch + * cut is subtle. Perhap this interface should be deprecated. + */ +int +gsl_sf_complex_dilog_e( + const double r, + const double theta, + gsl_sf_result * result_re, + gsl_sf_result * result_im + ); + + + +/* Spence integral; spence(s) := Li_2(1-s) + * + * This function has a branch point at 0; we place the + * cut on (-infty,0). Because of our choice for the value + * of Li_2(z) on the cut, spence(s) is continuous as + * s approaches the cut from above. In other words, + * we define spence(x) = spence(x + i 0+). + */ +int +gsl_sf_complex_spence_xy_e( + const double x, + const double y, + gsl_sf_result * real_sp, + gsl_sf_result * imag_sp + ); + + +__END_DECLS + +#endif /* __GSL_SF_DILOG_H__ */ diff --git a/gsl-2.5/specfunc/gsl_sf_elementary.h b/gsl-2.5/specfunc/gsl_sf_elementary.h new file mode 100644 index 00000000..467bfdaa --- /dev/null +++ b/gsl-2.5/specfunc/gsl_sf_elementary.h @@ -0,0 +1,57 @@ +/* specfunc/gsl_sf_elementary.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ + +/* Miscellaneous elementary functions and operations. + */ +#ifndef __GSL_SF_ELEMENTARY_H__ +#define __GSL_SF_ELEMENTARY_H__ + +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + + +/* Multiplication. + * + * exceptions: GSL_EOVRFLW, GSL_EUNDRFLW + */ +int gsl_sf_multiply_e(const double x, const double y, gsl_sf_result * result); +double gsl_sf_multiply(const double x, const double y); + + +/* Multiplication of quantities with associated errors. + */ +int gsl_sf_multiply_err_e(const double x, const double dx, const double y, const double dy, gsl_sf_result * result); + + +__END_DECLS + +#endif /* __GSL_SF_ELEMENTARY_H__ */ diff --git a/gsl-2.5/specfunc/gsl_sf_ellint.h b/gsl-2.5/specfunc/gsl_sf_ellint.h new file mode 100644 index 00000000..7f68f0e2 --- /dev/null +++ b/gsl-2.5/specfunc/gsl_sf_ellint.h @@ -0,0 +1,112 @@ +/* specfunc/gsl_sf_ellint.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ + +#ifndef __GSL_SF_ELLINT_H__ +#define __GSL_SF_ELLINT_H__ + +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + + +/* Legendre form of complete elliptic integrals + * + * K(k) = Integral[1/Sqrt[1 - k^2 Sin[t]^2], {t, 0, Pi/2}] + * E(k) = Integral[ Sqrt[1 - k^2 Sin[t]^2], {t, 0, Pi/2}] + * + * exceptions: GSL_EDOM + */ +int gsl_sf_ellint_Kcomp_e(double k, gsl_mode_t mode, gsl_sf_result * result); +double gsl_sf_ellint_Kcomp(double k, gsl_mode_t mode); + +int gsl_sf_ellint_Ecomp_e(double k, gsl_mode_t mode, gsl_sf_result * result); +double gsl_sf_ellint_Ecomp(double k, gsl_mode_t mode); + +int gsl_sf_ellint_Pcomp_e(double k, double n, gsl_mode_t mode, gsl_sf_result * result); +double gsl_sf_ellint_Pcomp(double k, double n, gsl_mode_t mode); + +int gsl_sf_ellint_Dcomp_e(double k, gsl_mode_t mode, gsl_sf_result * result); +double gsl_sf_ellint_Dcomp(double k, gsl_mode_t mode); + + +/* Legendre form of incomplete elliptic integrals + * + * F(phi,k) = Integral[1/Sqrt[1 - k^2 Sin[t]^2], {t, 0, phi}] + * E(phi,k) = Integral[ Sqrt[1 - k^2 Sin[t]^2], {t, 0, phi}] + * P(phi,k,n) = Integral[(1 + n Sin[t]^2)^(-1)/Sqrt[1 - k^2 Sin[t]^2], {t, 0, phi}] + * D(phi,k,n) = R_D(1-Sin[phi]^2, 1-k^2 Sin[phi]^2, 1.0) + * + * F: [Carlson, Numerische Mathematik 33 (1979) 1, (4.1)] + * E: [Carlson, ", (4.2)] + * P: [Carlson, ", (4.3)] + * D: [Carlson, ", (4.4)] + * + * exceptions: GSL_EDOM + */ +int gsl_sf_ellint_F_e(double phi, double k, gsl_mode_t mode, gsl_sf_result * result); +double gsl_sf_ellint_F(double phi, double k, gsl_mode_t mode); + +int gsl_sf_ellint_E_e(double phi, double k, gsl_mode_t mode, gsl_sf_result * result); +double gsl_sf_ellint_E(double phi, double k, gsl_mode_t mode); + +int gsl_sf_ellint_P_e(double phi, double k, double n, gsl_mode_t mode, gsl_sf_result * result); +double gsl_sf_ellint_P(double phi, double k, double n, gsl_mode_t mode); + +int gsl_sf_ellint_D_e(double phi, double k, gsl_mode_t mode, gsl_sf_result * result); +double gsl_sf_ellint_D(double phi, double k, gsl_mode_t mode); + + +/* Carlson's symmetric basis of functions + * + * RC(x,y) = 1/2 Integral[(t+x)^(-1/2) (t+y)^(-1)], {t,0,Inf}] + * RD(x,y,z) = 3/2 Integral[(t+x)^(-1/2) (t+y)^(-1/2) (t+z)^(-3/2), {t,0,Inf}] + * RF(x,y,z) = 1/2 Integral[(t+x)^(-1/2) (t+y)^(-1/2) (t+z)^(-1/2), {t,0,Inf}] + * RJ(x,y,z,p) = 3/2 Integral[(t+x)^(-1/2) (t+y)^(-1/2) (t+z)^(-1/2) (t+p)^(-1), {t,0,Inf}] + * + * exceptions: GSL_EDOM + */ +int gsl_sf_ellint_RC_e(double x, double y, gsl_mode_t mode, gsl_sf_result * result); +double gsl_sf_ellint_RC(double x, double y, gsl_mode_t mode); + +int gsl_sf_ellint_RD_e(double x, double y, double z, gsl_mode_t mode, gsl_sf_result * result); +double gsl_sf_ellint_RD(double x, double y, double z, gsl_mode_t mode); + +int gsl_sf_ellint_RF_e(double x, double y, double z, gsl_mode_t mode, gsl_sf_result * result); +double gsl_sf_ellint_RF(double x, double y, double z, gsl_mode_t mode); + +int gsl_sf_ellint_RJ_e(double x, double y, double z, double p, gsl_mode_t mode, gsl_sf_result * result); +double gsl_sf_ellint_RJ(double x, double y, double z, double p, gsl_mode_t mode); + + +__END_DECLS + +#endif /* __GSL_SF_ELLINT_H__ */ diff --git a/gsl-2.5/specfunc/gsl_sf_elljac.h b/gsl-2.5/specfunc/gsl_sf_elljac.h new file mode 100644 index 00000000..7f804a5c --- /dev/null +++ b/gsl-2.5/specfunc/gsl_sf_elljac.h @@ -0,0 +1,48 @@ +/* specfunc/gsl_sf_elljac.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ + +#ifndef __GSL_SF_ELLJAC_H__ +#define __GSL_SF_ELLJAC_H__ + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + + +/* Jacobian elliptic functions sn, dn, cn, + * by descending Landen transformations + * + * exceptions: GSL_EDOM + */ +int gsl_sf_elljac_e(double u, double m, double * sn, double * cn, double * dn); + + +__END_DECLS + +#endif /* __GSL_SF_ELLJAC_H__ */ diff --git a/gsl-2.5/specfunc/gsl_sf_erf.h b/gsl-2.5/specfunc/gsl_sf_erf.h new file mode 100644 index 00000000..a196d0df --- /dev/null +++ b/gsl-2.5/specfunc/gsl_sf_erf.h @@ -0,0 +1,91 @@ +/* specfunc/gsl_sf_erf.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ + +#ifndef __GSL_SF_ERF_H__ +#define __GSL_SF_ERF_H__ + +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + + +/* Complementary Error Function + * erfc(x) := 2/Sqrt[Pi] Integrate[Exp[-t^2], {t,x,Infinity}] + * + * exceptions: none + */ +int gsl_sf_erfc_e(double x, gsl_sf_result * result); +double gsl_sf_erfc(double x); + + +/* Log Complementary Error Function + * + * exceptions: none + */ +int gsl_sf_log_erfc_e(double x, gsl_sf_result * result); +double gsl_sf_log_erfc(double x); + + +/* Error Function + * erf(x) := 2/Sqrt[Pi] Integrate[Exp[-t^2], {t,0,x}] + * + * exceptions: none + */ +int gsl_sf_erf_e(double x, gsl_sf_result * result); +double gsl_sf_erf(double x); + + +/* Probability functions: + * Z(x) : Abramowitz+Stegun 26.2.1 + * Q(x) : Abramowitz+Stegun 26.2.3 + * + * exceptions: none + */ +int gsl_sf_erf_Z_e(double x, gsl_sf_result * result); +int gsl_sf_erf_Q_e(double x, gsl_sf_result * result); +double gsl_sf_erf_Z(double x); +double gsl_sf_erf_Q(double x); + + +/* Hazard function, also known as the inverse Mill's ratio. + * + * H(x) := Z(x)/Q(x) + * = Sqrt[2/Pi] Exp[-x^2 / 2] / Erfc[x/Sqrt[2]] + * + * exceptions: GSL_EUNDRFLW + */ +int gsl_sf_hazard_e(double x, gsl_sf_result * result); +double gsl_sf_hazard(double x); + + +__END_DECLS + +#endif /* __GSL_SF_ERF_H__ */ diff --git a/gsl-2.5/specfunc/gsl_sf_exp.h b/gsl-2.5/specfunc/gsl_sf_exp.h new file mode 100644 index 00000000..8f8aff76 --- /dev/null +++ b/gsl-2.5/specfunc/gsl_sf_exp.h @@ -0,0 +1,134 @@ +/* specfunc/gsl_sf_exp.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2004 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ + +#ifndef __GSL_SF_EXP_H__ +#define __GSL_SF_EXP_H__ + +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +/* Provide an exp() function with GSL semantics, + * i.e. with proper error checking, etc. + * + * exceptions: GSL_EOVRFLW, GSL_EUNDRFLW + */ +int gsl_sf_exp_e(const double x, gsl_sf_result * result); +double gsl_sf_exp(const double x); + + +/* Exp(x) + * + * exceptions: GSL_EOVRFLW, GSL_EUNDRFLW + */ +int gsl_sf_exp_e10_e(const double x, gsl_sf_result_e10 * result); + + +/* Exponentiate and multiply by a given factor: y * Exp(x) + * + * exceptions: GSL_EOVRFLW, GSL_EUNDRFLW + */ +int gsl_sf_exp_mult_e(const double x, const double y, gsl_sf_result * result); +double gsl_sf_exp_mult(const double x, const double y); + + +/* Exponentiate and multiply by a given factor: y * Exp(x) + * + * exceptions: GSL_EOVRFLW, GSL_EUNDRFLW + */ +int gsl_sf_exp_mult_e10_e(const double x, const double y, gsl_sf_result_e10 * result); + + +/* exp(x)-1 + * + * exceptions: GSL_EOVRFLW + */ +int gsl_sf_expm1_e(const double x, gsl_sf_result * result); +double gsl_sf_expm1(const double x); + + +/* (exp(x)-1)/x = 1 + x/2 + x^2/(2*3) + x^3/(2*3*4) + ... + * + * exceptions: GSL_EOVRFLW + */ +int gsl_sf_exprel_e(const double x, gsl_sf_result * result); +double gsl_sf_exprel(const double x); + + +/* 2(exp(x)-1-x)/x^2 = 1 + x/3 + x^2/(3*4) + x^3/(3*4*5) + ... + * + * exceptions: GSL_EOVRFLW + */ +int gsl_sf_exprel_2_e(double x, gsl_sf_result * result); +double gsl_sf_exprel_2(const double x); + + +/* Similarly for the N-th generalization of + * the above. The so-called N-relative exponential + * + * exprel_N(x) = N!/x^N (exp(x) - Sum[x^k/k!, {k,0,N-1}]) + * = 1 + x/(N+1) + x^2/((N+1)(N+2)) + ... + * = 1F1(1,1+N,x) + */ +int gsl_sf_exprel_n_e(const int n, const double x, gsl_sf_result * result); +double gsl_sf_exprel_n(const int n, const double x); + +int gsl_sf_exprel_n_CF_e(const double n, const double x, gsl_sf_result * result); + + +/* Exponentiate a quantity with an associated error. + */ +int gsl_sf_exp_err_e(const double x, const double dx, gsl_sf_result * result); + +/* Exponentiate a quantity with an associated error. + */ +int gsl_sf_exp_err_e10_e(const double x, const double dx, gsl_sf_result_e10 * result); + + +/* Exponentiate and multiply by a given factor: y * Exp(x), + * for quantities with associated errors. + * + * exceptions: GSL_EOVRFLW, GSL_EUNDRFLW + */ +int gsl_sf_exp_mult_err_e(const double x, const double dx, const double y, const double dy, gsl_sf_result * result); + + +/* Exponentiate and multiply by a given factor: y * Exp(x), + * for quantities with associated errors. + * + * exceptions: GSL_EOVRFLW, GSL_EUNDRFLW + */ +int gsl_sf_exp_mult_err_e10_e(const double x, const double dx, const double y, const double dy, gsl_sf_result_e10 * result); + +__END_DECLS + +#endif /* __GSL_SF_EXP_H__ */ diff --git a/gsl-2.5/specfunc/gsl_sf_expint.h b/gsl-2.5/specfunc/gsl_sf_expint.h new file mode 100644 index 00000000..4005f72a --- /dev/null +++ b/gsl-2.5/specfunc/gsl_sf_expint.h @@ -0,0 +1,167 @@ +/* specfunc/gsl_sf_expint.h + * + * Copyright (C) 2007 Brian Gough + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ + +#ifndef __GSL_SF_EXPINT_H__ +#define __GSL_SF_EXPINT_H__ + +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + + +/* E_1(x) := Re[ Integrate[ Exp[-xt]/t, {t,1,Infinity}] ] + * + * x != 0.0 + * exceptions: GSL_EDOM, GSL_EOVRFLW, GSL_EUNDRFLW + */ +int gsl_sf_expint_E1_e(const double x, gsl_sf_result * result); +double gsl_sf_expint_E1(const double x); + + +/* E_2(x) := Re[ Integrate[ Exp[-xt]/t^2, {t,1,Infinity}] ] + * + * x != 0.0 + * exceptions: GSL_EDOM, GSL_EOVRFLW, GSL_EUNDRFLW + */ +int gsl_sf_expint_E2_e(const double x, gsl_sf_result * result); +double gsl_sf_expint_E2(const double x); + + +/* E_n(x) := Re[ Integrate[ Exp[-xt]/t^n, {t,1,Infinity}] ] + * + * x != 0.0 + * exceptions: GSL_EDOM, GSL_EOVRFLW, GSL_EUNDRFLW + */ +int gsl_sf_expint_En_e(const int n, const double x, gsl_sf_result * result); +double gsl_sf_expint_En(const int n, const double x); + + +/* E_1_scaled(x) := exp(x) E_1(x) + * + * x != 0.0 + * exceptions: GSL_EDOM, GSL_EOVRFLW, GSL_EUNDRFLW + */ +int gsl_sf_expint_E1_scaled_e(const double x, gsl_sf_result * result); +double gsl_sf_expint_E1_scaled(const double x); + + +/* E_2_scaled(x) := exp(x) E_2(x) + * + * x != 0.0 + * exceptions: GSL_EDOM, GSL_EOVRFLW, GSL_EUNDRFLW + */ +int gsl_sf_expint_E2_scaled_e(const double x, gsl_sf_result * result); +double gsl_sf_expint_E2_scaled(const double x); + +/* E_n_scaled(x) := exp(x) E_n(x) + * + * x != 0.0 + * exceptions: GSL_EDOM, GSL_EOVRFLW, GSL_EUNDRFLW + */ +int gsl_sf_expint_En_scaled_e(const int n, const double x, gsl_sf_result * result); +double gsl_sf_expint_En_scaled(const int n, const double x); + + +/* Ei(x) := - PV Integrate[ Exp[-t]/t, {t,-x,Infinity}] + * := PV Integrate[ Exp[t]/t, {t,-Infinity,x}] + * + * x != 0.0 + * exceptions: GSL_EDOM, GSL_EOVRFLW, GSL_EUNDRFLW + */ +int gsl_sf_expint_Ei_e(const double x, gsl_sf_result * result); +double gsl_sf_expint_Ei(const double x); + + +/* Ei_scaled(x) := exp(-x) Ei(x) + * + * x != 0.0 + * exceptions: GSL_EDOM, GSL_EOVRFLW, GSL_EUNDRFLW + */ +int gsl_sf_expint_Ei_scaled_e(const double x, gsl_sf_result * result); +double gsl_sf_expint_Ei_scaled(const double x); + + +/* Shi(x) := Integrate[ Sinh[t]/t, {t,0,x}] + * + * exceptions: GSL_EOVRFLW, GSL_EUNDRFLW + */ +int gsl_sf_Shi_e(const double x, gsl_sf_result * result); +double gsl_sf_Shi(const double x); + + +/* Chi(x) := Re[ M_EULER + log(x) + Integrate[(Cosh[t]-1)/t, {t,0,x}] ] + * + * x != 0.0 + * exceptions: GSL_EDOM, GSL_EOVRFLW, GSL_EUNDRFLW + */ +int gsl_sf_Chi_e(const double x, gsl_sf_result * result); +double gsl_sf_Chi(const double x); + + +/* Ei_3(x) := Integral[ Exp[-t^3], {t,0,x}] + * + * x >= 0.0 + * exceptions: GSL_EDOM + */ +int gsl_sf_expint_3_e(const double x, gsl_sf_result * result); +double gsl_sf_expint_3(double x); + + +/* Si(x) := Integrate[ Sin[t]/t, {t,0,x}] + * + * exceptions: none + */ +int gsl_sf_Si_e(const double x, gsl_sf_result * result); +double gsl_sf_Si(const double x); + + +/* Ci(x) := -Integrate[ Cos[t]/t, {t,x,Infinity}] + * + * x > 0.0 + * exceptions: GSL_EDOM + */ +int gsl_sf_Ci_e(const double x, gsl_sf_result * result); +double gsl_sf_Ci(const double x); + + +/* AtanInt(x) := Integral[ Arctan[t]/t, {t,0,x}] + * + * + * exceptions: + */ +int gsl_sf_atanint_e(const double x, gsl_sf_result * result); +double gsl_sf_atanint(const double x); + + +__END_DECLS + +#endif /* __GSL_SF_EXPINT_H__ */ diff --git a/gsl-2.5/specfunc/gsl_sf_fermi_dirac.h b/gsl-2.5/specfunc/gsl_sf_fermi_dirac.h new file mode 100644 index 00000000..8f708cd2 --- /dev/null +++ b/gsl-2.5/specfunc/gsl_sf_fermi_dirac.h @@ -0,0 +1,126 @@ +/* specfunc/gsl_sf_fermi_dirac.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ + +#ifndef __GSL_SF_FERMI_DIRAC_H__ +#define __GSL_SF_FERMI_DIRAC_H__ + +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + + +/* Complete Fermi-Dirac Integrals: + * + * F_j(x) := 1/Gamma[j+1] Integral[ t^j /(Exp[t-x] + 1), {t,0,Infinity}] + * + * + * Incomplete Fermi-Dirac Integrals: + * + * F_j(x,b) := 1/Gamma[j+1] Integral[ t^j /(Exp[t-x] + 1), {t,b,Infinity}] + */ + + +/* Complete integral F_{-1}(x) = e^x / (1 + e^x) + * + * exceptions: GSL_EUNDRFLW + */ +int gsl_sf_fermi_dirac_m1_e(const double x, gsl_sf_result * result); +double gsl_sf_fermi_dirac_m1(const double x); + + +/* Complete integral F_0(x) = ln(1 + e^x) + * + * exceptions: GSL_EUNDRFLW + */ +int gsl_sf_fermi_dirac_0_e(const double x, gsl_sf_result * result); +double gsl_sf_fermi_dirac_0(const double x); + + +/* Complete integral F_1(x) + * + * exceptions: GSL_EUNDRFLW, GSL_EOVRFLW + */ +int gsl_sf_fermi_dirac_1_e(const double x, gsl_sf_result * result); +double gsl_sf_fermi_dirac_1(const double x); + + +/* Complete integral F_2(x) + * + * exceptions: GSL_EUNDRFLW, GSL_EOVRFLW + */ +int gsl_sf_fermi_dirac_2_e(const double x, gsl_sf_result * result); +double gsl_sf_fermi_dirac_2(const double x); + + +/* Complete integral F_j(x) + * for integer j + * + * exceptions: GSL_EUNDRFLW, GSL_EOVRFLW + */ +int gsl_sf_fermi_dirac_int_e(const int j, const double x, gsl_sf_result * result); +double gsl_sf_fermi_dirac_int(const int j, const double x); + + +/* Complete integral F_{-1/2}(x) + * + * exceptions: GSL_EUNDRFLW, GSL_EOVRFLW + */ +int gsl_sf_fermi_dirac_mhalf_e(const double x, gsl_sf_result * result); +double gsl_sf_fermi_dirac_mhalf(const double x); + + +/* Complete integral F_{1/2}(x) + * + * exceptions: GSL_EUNDRFLW, GSL_EOVRFLW + */ +int gsl_sf_fermi_dirac_half_e(const double x, gsl_sf_result * result); +double gsl_sf_fermi_dirac_half(const double x); + + +/* Complete integral F_{3/2}(x) + * + * exceptions: GSL_EUNDRFLW, GSL_EOVRFLW + */ +int gsl_sf_fermi_dirac_3half_e(const double x, gsl_sf_result * result); +double gsl_sf_fermi_dirac_3half(const double x); + + +/* Incomplete integral F_0(x,b) = ln(1 + e^(b-x)) - (b-x) + * + * exceptions: GSL_EUNDRFLW, GSL_EDOM + */ +int gsl_sf_fermi_dirac_inc_0_e(const double x, const double b, gsl_sf_result * result); +double gsl_sf_fermi_dirac_inc_0(const double x, const double b); + + +__END_DECLS + +#endif /* __GSL_SF_FERMI_DIRAC_H__ */ diff --git a/gsl-2.5/specfunc/gsl_sf_gamma.h b/gsl-2.5/specfunc/gsl_sf_gamma.h new file mode 100644 index 00000000..d5e867ba --- /dev/null +++ b/gsl-2.5/specfunc/gsl_sf_gamma.h @@ -0,0 +1,293 @@ +/* specfunc/gsl_sf_gamma.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ + +#ifndef __GSL_SF_GAMMA_H__ +#define __GSL_SF_GAMMA_H__ + +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + + +/* Log[Gamma(x)], x not a negative integer + * Uses real Lanczos method. + * Returns the real part of Log[Gamma[x]] when x < 0, + * i.e. Log[|Gamma[x]|]. + * + * exceptions: GSL_EDOM, GSL_EROUND + */ +int gsl_sf_lngamma_e(double x, gsl_sf_result * result); +double gsl_sf_lngamma(const double x); + + +/* Log[Gamma(x)], x not a negative integer + * Uses real Lanczos method. Determines + * the sign of Gamma[x] as well as Log[|Gamma[x]|] for x < 0. + * So Gamma[x] = sgn * Exp[result_lg]. + * + * exceptions: GSL_EDOM, GSL_EROUND + */ +int gsl_sf_lngamma_sgn_e(double x, gsl_sf_result * result_lg, double *sgn); + + +/* Gamma(x), x not a negative integer + * Uses real Lanczos method. + * + * exceptions: GSL_EDOM, GSL_EOVRFLW, GSL_EROUND + */ +int gsl_sf_gamma_e(const double x, gsl_sf_result * result); +double gsl_sf_gamma(const double x); + + +/* Regulated Gamma Function, x > 0 + * Gamma^*(x) = Gamma(x)/(Sqrt[2Pi] x^(x-1/2) exp(-x)) + * = (1 + 1/(12x) + ...), x->Inf + * A useful suggestion of Temme. + * + * exceptions: GSL_EDOM + */ +int gsl_sf_gammastar_e(const double x, gsl_sf_result * result); +double gsl_sf_gammastar(const double x); + + +/* 1/Gamma(x) + * Uses real Lanczos method. + * + * exceptions: GSL_EUNDRFLW, GSL_EROUND + */ +int gsl_sf_gammainv_e(const double x, gsl_sf_result * result); +double gsl_sf_gammainv(const double x); + + +/* Log[Gamma(z)] for z complex, z not a negative integer + * Uses complex Lanczos method. Note that the phase part (arg) + * is not well-determined when |z| is very large, due + * to inevitable roundoff in restricting to (-Pi,Pi]. + * This will raise the GSL_ELOSS exception when it occurs. + * The absolute value part (lnr), however, never suffers. + * + * Calculates: + * lnr = log|Gamma(z)| + * arg = arg(Gamma(z)) in (-Pi, Pi] + * + * exceptions: GSL_EDOM, GSL_ELOSS + */ +int gsl_sf_lngamma_complex_e(double zr, double zi, gsl_sf_result * lnr, gsl_sf_result * arg); + + +/* x^n / n! + * + * x >= 0.0, n >= 0 + * exceptions: GSL_EDOM, GSL_EOVRFLW, GSL_EUNDRFLW + */ +int gsl_sf_taylorcoeff_e(const int n, const double x, gsl_sf_result * result); +double gsl_sf_taylorcoeff(const int n, const double x); + + +/* n! + * + * exceptions: GSL_EDOM, GSL_EOVRFLW + */ +int gsl_sf_fact_e(const unsigned int n, gsl_sf_result * result); +double gsl_sf_fact(const unsigned int n); + + +/* n!! = n(n-2)(n-4) ... + * + * exceptions: GSL_EDOM, GSL_EOVRFLW + */ +int gsl_sf_doublefact_e(const unsigned int n, gsl_sf_result * result); +double gsl_sf_doublefact(const unsigned int n); + + +/* log(n!) + * Faster than ln(Gamma(n+1)) for n < 170; defers for larger n. + * + * exceptions: none + */ +int gsl_sf_lnfact_e(const unsigned int n, gsl_sf_result * result); +double gsl_sf_lnfact(const unsigned int n); + + +/* log(n!!) + * + * exceptions: none + */ +int gsl_sf_lndoublefact_e(const unsigned int n, gsl_sf_result * result); +double gsl_sf_lndoublefact(const unsigned int n); + + +/* log(n choose m) + * + * exceptions: GSL_EDOM + */ +int gsl_sf_lnchoose_e(unsigned int n, unsigned int m, gsl_sf_result * result); +double gsl_sf_lnchoose(unsigned int n, unsigned int m); + + +/* n choose m + * + * exceptions: GSL_EDOM, GSL_EOVRFLW + */ +int gsl_sf_choose_e(unsigned int n, unsigned int m, gsl_sf_result * result); +double gsl_sf_choose(unsigned int n, unsigned int m); + + +/* Logarithm of Pochhammer (Apell) symbol + * log( (a)_x ) + * where (a)_x := Gamma[a + x]/Gamma[a] + * + * a > 0, a+x > 0 + * + * exceptions: GSL_EDOM + */ +int gsl_sf_lnpoch_e(const double a, const double x, gsl_sf_result * result); +double gsl_sf_lnpoch(const double a, const double x); + + +/* Logarithm of Pochhammer (Apell) symbol, with sign information. + * result = log( |(a)_x| ) + * sgn = sgn( (a)_x ) + * where (a)_x := Gamma[a + x]/Gamma[a] + * + * a != neg integer, a+x != neg integer + * + * exceptions: GSL_EDOM + */ +int gsl_sf_lnpoch_sgn_e(const double a, const double x, gsl_sf_result * result, double * sgn); + + +/* Pochhammer (Apell) symbol + * (a)_x := Gamma[a + x]/Gamma[x] + * + * a != neg integer, a+x != neg integer + * + * exceptions: GSL_EDOM, GSL_EOVRFLW + */ +int gsl_sf_poch_e(const double a, const double x, gsl_sf_result * result); +double gsl_sf_poch(const double a, const double x); + + +/* Relative Pochhammer (Apell) symbol + * ((a,x) - 1)/x + * where (a,x) = (a)_x := Gamma[a + x]/Gamma[a] + * + * exceptions: GSL_EDOM + */ +int gsl_sf_pochrel_e(const double a, const double x, gsl_sf_result * result); +double gsl_sf_pochrel(const double a, const double x); + + +/* Normalized Incomplete Gamma Function + * + * Q(a,x) = 1/Gamma(a) Integral[ t^(a-1) e^(-t), {t,x,Infinity} ] + * + * a >= 0, x >= 0 + * Q(a,0) := 1 + * Q(0,x) := 0, x != 0 + * + * exceptions: GSL_EDOM + */ +int gsl_sf_gamma_inc_Q_e(const double a, const double x, gsl_sf_result * result); +double gsl_sf_gamma_inc_Q(const double a, const double x); + + +/* Complementary Normalized Incomplete Gamma Function + * + * P(a,x) = 1/Gamma(a) Integral[ t^(a-1) e^(-t), {t,0,x} ] + * + * a > 0, x >= 0 + * + * exceptions: GSL_EDOM + */ +int gsl_sf_gamma_inc_P_e(const double a, const double x, gsl_sf_result * result); +double gsl_sf_gamma_inc_P(const double a, const double x); + + +/* Non-normalized Incomplete Gamma Function + * + * Gamma(a,x) := Integral[ t^(a-1) e^(-t), {t,x,Infinity} ] + * + * x >= 0.0 + * Gamma(a, 0) := Gamma(a) + * + * exceptions: GSL_EDOM + */ +int gsl_sf_gamma_inc_e(const double a, const double x, gsl_sf_result * result); +double gsl_sf_gamma_inc(const double a, const double x); + + +/* Logarithm of Beta Function + * Log[B(a,b)] + * + * a > 0, b > 0 + * exceptions: GSL_EDOM + */ +int gsl_sf_lnbeta_e(const double a, const double b, gsl_sf_result * result); +double gsl_sf_lnbeta(const double a, const double b); + +int gsl_sf_lnbeta_sgn_e(const double x, const double y, gsl_sf_result * result, double * sgn); + + +/* Beta Function + * B(a,b) + * + * a > 0, b > 0 + * exceptions: GSL_EDOM, GSL_EOVRFLW, GSL_EUNDRFLW + */ +int gsl_sf_beta_e(const double a, const double b, gsl_sf_result * result); +double gsl_sf_beta(const double a, const double b); + + +/* Normalized Incomplete Beta Function + * B_x(a,b)/B(a,b) + * + * a > 0, b > 0, 0 <= x <= 1 + * exceptions: GSL_EDOM, GSL_EUNDRFLW + */ +int gsl_sf_beta_inc_e(const double a, const double b, const double x, gsl_sf_result * result); +double gsl_sf_beta_inc(const double a, const double b, const double x); + + +/* The maximum x such that gamma(x) is not + * considered an overflow. + */ +#define GSL_SF_GAMMA_XMAX 171.0 + +/* The maximum n such that gsl_sf_fact(n) does not give an overflow. */ +#define GSL_SF_FACT_NMAX 170 + +/* The maximum n such that gsl_sf_doublefact(n) does not give an overflow. */ +#define GSL_SF_DOUBLEFACT_NMAX 297 + +__END_DECLS + +#endif /* __GSL_SF_GAMMA_H__ */ diff --git a/gsl-2.5/specfunc/gsl_sf_gegenbauer.h b/gsl-2.5/specfunc/gsl_sf_gegenbauer.h new file mode 100644 index 00000000..bf41d218 --- /dev/null +++ b/gsl-2.5/specfunc/gsl_sf_gegenbauer.h @@ -0,0 +1,73 @@ +/* specfunc/gsl_sf_gegenbauer.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ + +#ifndef __GSL_SF_GEGENBAUER_H__ +#define __GSL_SF_GEGENBAUER_H__ + +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + + +/* Evaluate Gegenbauer polynomials + * using explicit representations. + * + * exceptions: none + */ +int gsl_sf_gegenpoly_1_e(double lambda, double x, gsl_sf_result * result); +int gsl_sf_gegenpoly_2_e(double lambda, double x, gsl_sf_result * result); +int gsl_sf_gegenpoly_3_e(double lambda, double x, gsl_sf_result * result); +double gsl_sf_gegenpoly_1(double lambda, double x); +double gsl_sf_gegenpoly_2(double lambda, double x); +double gsl_sf_gegenpoly_3(double lambda, double x); + + +/* Evaluate Gegenbauer polynomials. + * + * lambda > -1/2, n >= 0 + * exceptions: GSL_EDOM + */ +int gsl_sf_gegenpoly_n_e(int n, double lambda, double x, gsl_sf_result * result); +double gsl_sf_gegenpoly_n(int n, double lambda, double x); + + +/* Calculate array of Gegenbauer polynomials + * for n = (0, 1, 2, ... nmax) + * + * lambda > -1/2, nmax >= 0 + * exceptions: GSL_EDOM + */ +int gsl_sf_gegenpoly_array(int nmax, double lambda, double x, double * result_array); + + +__END_DECLS + +#endif /* __GSL_SF_GEGENBAUER_H__ */ diff --git a/gsl-2.5/specfunc/gsl_sf_hermite.h b/gsl-2.5/specfunc/gsl_sf_hermite.h new file mode 100644 index 00000000..2e36d9e3 --- /dev/null +++ b/gsl-2.5/specfunc/gsl_sf_hermite.h @@ -0,0 +1,75 @@ +/* gsl_sf_hermite.h + * + * Copyright (C) 2011-2014 Konrad Griessinger + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/*----------------------------------------------------------------------* + * (konradg(at)gmx.net) * + *----------------------------------------------------------------------*/ + +#ifndef __GSL_SF_HERMITE_H__ +#define __GSL_SF_HERMITE_H__ + +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +int gsl_sf_hermite_prob_e(const int n, const double x, gsl_sf_result * result); +double gsl_sf_hermite_prob(const int n, const double x); +int gsl_sf_hermite_prob_der_e(const int m, const int n, const double x, gsl_sf_result * result); +double gsl_sf_hermite_prob_der(const int m, const int n, const double x); +int gsl_sf_hermite_phys_e(const int n, const double x, gsl_sf_result * result); +double gsl_sf_hermite_phys(const int n, const double x); +int gsl_sf_hermite_phys_der_e(const int m, const int n, const double x, gsl_sf_result * result); +double gsl_sf_hermite_phys_der(const int m, const int n, const double x); +int gsl_sf_hermite_func_e(const int n, const double x, gsl_sf_result * result); +double gsl_sf_hermite_func(const int n, const double x); +int gsl_sf_hermite_prob_array(const int nmax, const double x, double * result_array); +int gsl_sf_hermite_prob_array_der(const int m, const int nmax, const double x, double * result_array); +int gsl_sf_hermite_prob_der_array(const int mmax, const int n, const double x, double * result_array); +int gsl_sf_hermite_prob_series_e(const int n, const double x, const double * a, gsl_sf_result * result); +double gsl_sf_hermite_prob_series(const int n, const double x, const double * a); +int gsl_sf_hermite_phys_array(const int nmax, const double x, double * result_array); +int gsl_sf_hermite_phys_array_der(const int m, const int nmax, const double x, double * result_array); +int gsl_sf_hermite_phys_der_array(const int mmax, const int n, const double x, double * result_array); +int gsl_sf_hermite_phys_series_e(const int n, const double x, const double * a, gsl_sf_result * result); +double gsl_sf_hermite_phys_series(const int n, const double x, const double * a); +int gsl_sf_hermite_func_array(const int nmax, const double x, double * result_array); +int gsl_sf_hermite_func_series_e(const int n, const double x, const double * a, gsl_sf_result * result); +double gsl_sf_hermite_func_series(const int n, const double x, const double * a); +int gsl_sf_hermite_func_der_e(const int m, const int n, const double x, gsl_sf_result * result); +double gsl_sf_hermite_func_der(const int m, const int n, const double x); +int gsl_sf_hermite_prob_zero_e(const int n, const int s, gsl_sf_result * result); +double gsl_sf_hermite_prob_zero(const int n, const int s); +int gsl_sf_hermite_phys_zero_e(const int n, const int s, gsl_sf_result * result); +double gsl_sf_hermite_phys_zero(const int n, const int s); +int gsl_sf_hermite_func_zero_e(const int n, const int s, gsl_sf_result * result); +double gsl_sf_hermite_func_zero(const int n, const int s); + +__END_DECLS + +#endif /* __GSL_SF_HERMITE_H__ */ diff --git a/gsl-2.5/specfunc/gsl_sf_hyperg.h b/gsl-2.5/specfunc/gsl_sf_hyperg.h new file mode 100644 index 00000000..8366b88d --- /dev/null +++ b/gsl-2.5/specfunc/gsl_sf_hyperg.h @@ -0,0 +1,154 @@ +/* specfunc/gsl_sf_hyperg.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ + +#ifndef __GSL_SF_HYPERG_H__ +#define __GSL_SF_HYPERG_H__ + +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + + +/* Hypergeometric function related to Bessel functions + * 0F1[c,x] = + * Gamma[c] x^(1/2(1-c)) I_{c-1}(2 Sqrt[x]) + * Gamma[c] (-x)^(1/2(1-c)) J_{c-1}(2 Sqrt[-x]) + * + * exceptions: GSL_EOVRFLW, GSL_EUNDRFLW + */ +int gsl_sf_hyperg_0F1_e(double c, double x, gsl_sf_result * result); +double gsl_sf_hyperg_0F1(const double c, const double x); + + +/* Confluent hypergeometric function for integer parameters. + * 1F1[m,n,x] = M(m,n,x) + * + * exceptions: + */ +int gsl_sf_hyperg_1F1_int_e(const int m, const int n, const double x, gsl_sf_result * result); +double gsl_sf_hyperg_1F1_int(const int m, const int n, double x); + + +/* Confluent hypergeometric function. + * 1F1[a,b,x] = M(a,b,x) + * + * exceptions: + */ +int gsl_sf_hyperg_1F1_e(const double a, const double b, const double x, gsl_sf_result * result); +double gsl_sf_hyperg_1F1(double a, double b, double x); + + +/* Confluent hypergeometric function for integer parameters. + * U(m,n,x) + * + * exceptions: + */ +int gsl_sf_hyperg_U_int_e(const int m, const int n, const double x, gsl_sf_result * result); +double gsl_sf_hyperg_U_int(const int m, const int n, const double x); + + +/* Confluent hypergeometric function for integer parameters. + * U(m,n,x) + * + * exceptions: + */ +int gsl_sf_hyperg_U_int_e10_e(const int m, const int n, const double x, gsl_sf_result_e10 * result); + + +/* Confluent hypergeometric function. + * U(a,b,x) + * + * exceptions: + */ +int gsl_sf_hyperg_U_e(const double a, const double b, const double x, gsl_sf_result * result); +double gsl_sf_hyperg_U(const double a, const double b, const double x); + + +/* Confluent hypergeometric function. + * U(a,b,x) + * + * exceptions: + */ +int gsl_sf_hyperg_U_e10_e(const double a, const double b, const double x, gsl_sf_result_e10 * result); + + +/* Gauss hypergeometric function 2F1[a,b,c,x] + * |x| < 1 + * + * exceptions: + */ +int gsl_sf_hyperg_2F1_e(double a, double b, const double c, const double x, gsl_sf_result * result); +double gsl_sf_hyperg_2F1(double a, double b, double c, double x); + + +/* Gauss hypergeometric function + * 2F1[aR + I aI, aR - I aI, c, x] + * |x| < 1 + * + * exceptions: + */ +int gsl_sf_hyperg_2F1_conj_e(const double aR, const double aI, const double c, const double x, gsl_sf_result * result); +double gsl_sf_hyperg_2F1_conj(double aR, double aI, double c, double x); + + +/* Renormalized Gauss hypergeometric function + * 2F1[a,b,c,x] / Gamma[c] + * |x| < 1 + * + * exceptions: + */ +int gsl_sf_hyperg_2F1_renorm_e(const double a, const double b, const double c, const double x, gsl_sf_result * result); +double gsl_sf_hyperg_2F1_renorm(double a, double b, double c, double x); + + +/* Renormalized Gauss hypergeometric function + * 2F1[aR + I aI, aR - I aI, c, x] / Gamma[c] + * |x| < 1 + * + * exceptions: + */ +int gsl_sf_hyperg_2F1_conj_renorm_e(const double aR, const double aI, const double c, const double x, gsl_sf_result * result); +double gsl_sf_hyperg_2F1_conj_renorm(double aR, double aI, double c, double x); + + +/* Mysterious hypergeometric function. The series representation + * is a divergent hypergeometric series. However, for x < 0 we + * have 2F0(a,b,x) = (-1/x)^a U(a,1+a-b,-1/x) + * + * exceptions: GSL_EDOM + */ +int gsl_sf_hyperg_2F0_e(const double a, const double b, const double x, gsl_sf_result * result); +double gsl_sf_hyperg_2F0(const double a, const double b, const double x); + + +__END_DECLS + +#endif /* __GSL_SF_HYPERG_H__ */ diff --git a/gsl-2.5/specfunc/gsl_sf_laguerre.h b/gsl-2.5/specfunc/gsl_sf_laguerre.h new file mode 100644 index 00000000..0d7f1c37 --- /dev/null +++ b/gsl-2.5/specfunc/gsl_sf_laguerre.h @@ -0,0 +1,68 @@ +/* specfunc/gsl_sf_laguerre.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ + +#ifndef __GSL_SF_LAGUERRE_H__ +#define __GSL_SF_LAGUERRE_H__ + +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + + +/* L^a_n(x) = (a+1)_n / n! 1F1(-n,a+1,x) */ + + +/* Evaluate generalized Laguerre polynomials + * using explicit representations. + * + * exceptions: none + */ +int gsl_sf_laguerre_1_e(const double a, const double x, gsl_sf_result * result); +int gsl_sf_laguerre_2_e(const double a, const double x, gsl_sf_result * result); +int gsl_sf_laguerre_3_e(const double a, const double x, gsl_sf_result * result); +double gsl_sf_laguerre_1(double a, double x); +double gsl_sf_laguerre_2(double a, double x); +double gsl_sf_laguerre_3(double a, double x); + + +/* Evaluate generalized Laguerre polynomials. + * + * a > -1.0 + * n >= 0 + * exceptions: GSL_EDOM + */ +int gsl_sf_laguerre_n_e(const int n, const double a, const double x, gsl_sf_result * result); +double gsl_sf_laguerre_n(int n, double a, double x); + + +__END_DECLS + +#endif /* __GSL_SF_LAGUERRE_H__ */ diff --git a/gsl-2.5/specfunc/gsl_sf_lambert.h b/gsl-2.5/specfunc/gsl_sf_lambert.h new file mode 100644 index 00000000..53b70a3a --- /dev/null +++ b/gsl-2.5/specfunc/gsl_sf_lambert.h @@ -0,0 +1,69 @@ +/* specfunc/gsl_sf_lambert.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ + +#ifndef __GSL_SF_LAMBERT_H__ +#define __GSL_SF_LAMBERT_H__ + +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + + +/* Lambert's Function W_0(x) + * + * W_0(x) is the principal branch of the + * implicit function defined by W e^W = x. + * + * -1/E < x < \infty + * + * exceptions: GSL_EMAXITER; + */ +int gsl_sf_lambert_W0_e(double x, gsl_sf_result * result); +double gsl_sf_lambert_W0(double x); + + +/* Lambert's Function W_{-1}(x) + * + * W_{-1}(x) is the second real branch of the + * implicit function defined by W e^W = x. + * It agrees with W_0(x) when x >= 0. + * + * -1/E < x < \infty + * + * exceptions: GSL_MAXITER; + */ +int gsl_sf_lambert_Wm1_e(double x, gsl_sf_result * result); +double gsl_sf_lambert_Wm1(double x); + + +__END_DECLS + +#endif /* __GSL_SF_LAMBERT_H__ */ diff --git a/gsl-2.5/specfunc/gsl_sf_legendre.h b/gsl-2.5/specfunc/gsl_sf_legendre.h new file mode 100644 index 00000000..a7a4b070 --- /dev/null +++ b/gsl-2.5/specfunc/gsl_sf_legendre.h @@ -0,0 +1,375 @@ +/* specfunc/gsl_sf_legendre.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2004 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ + +#ifndef __GSL_SF_LEGENDRE_H__ +#define __GSL_SF_LEGENDRE_H__ + +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + + +/* P_l(x) l >= 0; |x| <= 1 + * + * exceptions: GSL_EDOM + */ +int gsl_sf_legendre_Pl_e(const int l, const double x, gsl_sf_result * result); +double gsl_sf_legendre_Pl(const int l, const double x); + + +/* P_l(x) for l=0,...,lmax; |x| <= 1 + * + * exceptions: GSL_EDOM + */ +int gsl_sf_legendre_Pl_array( + const int lmax, const double x, + double * result_array + ); + + +/* P_l(x) and P_l'(x) for l=0,...,lmax; |x| <= 1 + * + * exceptions: GSL_EDOM + */ +int gsl_sf_legendre_Pl_deriv_array( + const int lmax, const double x, + double * result_array, + double * result_deriv_array + ); + + +/* P_l(x), l=1,2,3 + * + * exceptions: none + */ +int gsl_sf_legendre_P1_e(double x, gsl_sf_result * result); +int gsl_sf_legendre_P2_e(double x, gsl_sf_result * result); +int gsl_sf_legendre_P3_e(double x, gsl_sf_result * result); +double gsl_sf_legendre_P1(const double x); +double gsl_sf_legendre_P2(const double x); +double gsl_sf_legendre_P3(const double x); + + +/* Q_0(x), x > -1, x != 1 + * + * exceptions: GSL_EDOM + */ +int gsl_sf_legendre_Q0_e(const double x, gsl_sf_result * result); +double gsl_sf_legendre_Q0(const double x); + + +/* Q_1(x), x > -1, x != 1 + * + * exceptions: GSL_EDOM + */ +int gsl_sf_legendre_Q1_e(const double x, gsl_sf_result * result); +double gsl_sf_legendre_Q1(const double x); + + +/* Q_l(x), x > -1, x != 1, l >= 0 + * + * exceptions: GSL_EDOM + */ +int gsl_sf_legendre_Ql_e(const int l, const double x, gsl_sf_result * result); +double gsl_sf_legendre_Ql(const int l, const double x); + + +/* P_l^m(x) m >= 0; l >= m; |x| <= 1.0 + * + * Note that this function grows combinatorially with l. + * Therefore we can easily generate an overflow for l larger + * than about 150. + * + * There is no trouble for small m, but when m and l are both large, + * then there will be trouble. Rather than allow overflows, these + * functions refuse to calculate when they can sense that l and m are + * too big. + * + * If you really want to calculate a spherical harmonic, then DO NOT + * use this. Instead use legendre_sphPlm() below, which uses a similar + * recursion, but with the normalized functions. + * + * exceptions: GSL_EDOM, GSL_EOVRFLW + */ +int gsl_sf_legendre_Plm_e(const int l, const int m, const double x, gsl_sf_result * result); +double gsl_sf_legendre_Plm(const int l, const int m, const double x); + + +/* P_l^m(x) m >= 0; l >= m; |x| <= 1.0 + * l=|m|,...,lmax + * + * exceptions: GSL_EDOM, GSL_EOVRFLW + */ +int gsl_sf_legendre_Plm_array( + const int lmax, const int m, const double x, + double * result_array + ); + + +/* P_l^m(x) and d(P_l^m(x))/dx; m >= 0; lmax >= m; |x| <= 1.0 + * l=|m|,...,lmax + * + * exceptions: GSL_EDOM, GSL_EOVRFLW + */ +int gsl_sf_legendre_Plm_deriv_array( + const int lmax, const int m, const double x, + double * result_array, + double * result_deriv_array + ); + + +/* P_l^m(x), normalized properly for use in spherical harmonics + * m >= 0; l >= m; |x| <= 1.0 + * + * There is no overflow problem, as there is for the + * standard normalization of P_l^m(x). + * + * Specifically, it returns: + * + * sqrt((2l+1)/(4pi)) sqrt((l-m)!/(l+m)!) P_l^m(x) + * + * exceptions: GSL_EDOM + */ +int gsl_sf_legendre_sphPlm_e(const int l, int m, const double x, gsl_sf_result * result); +double gsl_sf_legendre_sphPlm(const int l, const int m, const double x); + + +/* sphPlm(l,m,x) values + * m >= 0; l >= m; |x| <= 1.0 + * l=|m|,...,lmax + * + * exceptions: GSL_EDOM + */ +int gsl_sf_legendre_sphPlm_array( + const int lmax, int m, const double x, + double * result_array + ); + + +/* sphPlm(l,m,x) and d(sphPlm(l,m,x))/dx values + * m >= 0; l >= m; |x| <= 1.0 + * l=|m|,...,lmax + * + * exceptions: GSL_EDOM + */ +int gsl_sf_legendre_sphPlm_deriv_array( + const int lmax, const int m, const double x, + double * result_array, + double * result_deriv_array + ); + + + +/* size of result_array[] needed for the array versions of Plm + * (lmax - m + 1) + */ +int gsl_sf_legendre_array_size(const int lmax, const int m); + +/* Irregular Spherical Conical Function + * P^{1/2}_{-1/2 + I lambda}(x) + * + * x > -1.0 + * exceptions: GSL_EDOM + */ +int gsl_sf_conicalP_half_e(const double lambda, const double x, gsl_sf_result * result); +double gsl_sf_conicalP_half(const double lambda, const double x); + + +/* Regular Spherical Conical Function + * P^{-1/2}_{-1/2 + I lambda}(x) + * + * x > -1.0 + * exceptions: GSL_EDOM + */ +int gsl_sf_conicalP_mhalf_e(const double lambda, const double x, gsl_sf_result * result); +double gsl_sf_conicalP_mhalf(const double lambda, const double x); + + +/* Conical Function + * P^{0}_{-1/2 + I lambda}(x) + * + * x > -1.0 + * exceptions: GSL_EDOM + */ +int gsl_sf_conicalP_0_e(const double lambda, const double x, gsl_sf_result * result); +double gsl_sf_conicalP_0(const double lambda, const double x); + + +/* Conical Function + * P^{1}_{-1/2 + I lambda}(x) + * + * x > -1.0 + * exceptions: GSL_EDOM + */ +int gsl_sf_conicalP_1_e(const double lambda, const double x, gsl_sf_result * result); +double gsl_sf_conicalP_1(const double lambda, const double x); + + +/* Regular Spherical Conical Function + * P^{-1/2-l}_{-1/2 + I lambda}(x) + * + * x > -1.0, l >= -1 + * exceptions: GSL_EDOM + */ +int gsl_sf_conicalP_sph_reg_e(const int l, const double lambda, const double x, gsl_sf_result * result); +double gsl_sf_conicalP_sph_reg(const int l, const double lambda, const double x); + + +/* Regular Cylindrical Conical Function + * P^{-m}_{-1/2 + I lambda}(x) + * + * x > -1.0, m >= -1 + * exceptions: GSL_EDOM + */ +int gsl_sf_conicalP_cyl_reg_e(const int m, const double lambda, const double x, gsl_sf_result * result); +double gsl_sf_conicalP_cyl_reg(const int m, const double lambda, const double x); + + +/* The following spherical functions are specializations + * of Legendre functions which give the regular eigenfunctions + * of the Laplacian on a 3-dimensional hyperbolic space. + * Of particular interest is the flat limit, which is + * Flat-Lim := {lambda->Inf, eta->0, lambda*eta fixed}. + */ + +/* Zeroth radial eigenfunction of the Laplacian on the + * 3-dimensional hyperbolic space. + * + * legendre_H3d_0(lambda,eta) := sin(lambda*eta)/(lambda*sinh(eta)) + * + * Normalization: + * Flat-Lim legendre_H3d_0(lambda,eta) = j_0(lambda*eta) + * + * eta >= 0.0 + * exceptions: GSL_EDOM + */ +int gsl_sf_legendre_H3d_0_e(const double lambda, const double eta, gsl_sf_result * result); +double gsl_sf_legendre_H3d_0(const double lambda, const double eta); + + +/* First radial eigenfunction of the Laplacian on the + * 3-dimensional hyperbolic space. + * + * legendre_H3d_1(lambda,eta) := + * 1/sqrt(lambda^2 + 1) sin(lam eta)/(lam sinh(eta)) + * (coth(eta) - lambda cot(lambda*eta)) + * + * Normalization: + * Flat-Lim legendre_H3d_1(lambda,eta) = j_1(lambda*eta) + * + * eta >= 0.0 + * exceptions: GSL_EDOM + */ +int gsl_sf_legendre_H3d_1_e(const double lambda, const double eta, gsl_sf_result * result); +double gsl_sf_legendre_H3d_1(const double lambda, const double eta); + + +/* l'th radial eigenfunction of the Laplacian on the + * 3-dimensional hyperbolic space. + * + * Normalization: + * Flat-Lim legendre_H3d_l(l,lambda,eta) = j_l(lambda*eta) + * + * eta >= 0.0, l >= 0 + * exceptions: GSL_EDOM + */ +int gsl_sf_legendre_H3d_e(const int l, const double lambda, const double eta, gsl_sf_result * result); +double gsl_sf_legendre_H3d(const int l, const double lambda, const double eta); + + +/* Array of H3d(ell), 0 <= ell <= lmax + */ +int gsl_sf_legendre_H3d_array(const int lmax, const double lambda, const double eta, double * result_array); + +/* associated legendre P_{lm} routines */ + +typedef enum +{ + GSL_SF_LEGENDRE_SCHMIDT, + GSL_SF_LEGENDRE_SPHARM, + GSL_SF_LEGENDRE_FULL, + GSL_SF_LEGENDRE_NONE +} gsl_sf_legendre_t; + +int gsl_sf_legendre_array(const gsl_sf_legendre_t norm, + const size_t lmax, const double x, + double result_array[]); +int gsl_sf_legendre_array_e(const gsl_sf_legendre_t norm, + const size_t lmax, const double x, + const double csphase, + double result_array[]); +int gsl_sf_legendre_deriv_array(const gsl_sf_legendre_t norm, + const size_t lmax, const double x, + double result_array[], + double result_deriv_array[]); +int gsl_sf_legendre_deriv_array_e(const gsl_sf_legendre_t norm, + const size_t lmax, const double x, + const double csphase, + double result_array[], + double result_deriv_array[]); +int gsl_sf_legendre_deriv_alt_array(const gsl_sf_legendre_t norm, + const size_t lmax, const double x, + double result_array[], + double result_deriv_array[]); +int gsl_sf_legendre_deriv_alt_array_e(const gsl_sf_legendre_t norm, + const size_t lmax, const double x, + const double csphase, + double result_array[], + double result_deriv_array[]); +int gsl_sf_legendre_deriv2_array(const gsl_sf_legendre_t norm, + const size_t lmax, const double x, + double result_array[], + double result_deriv_array[], + double result_deriv2_array[]); +int gsl_sf_legendre_deriv2_array_e(const gsl_sf_legendre_t norm, + const size_t lmax, const double x, + const double csphase, + double result_array[], + double result_deriv_array[], + double result_deriv2_array[]); +int gsl_sf_legendre_deriv2_alt_array(const gsl_sf_legendre_t norm, + const size_t lmax, const double x, + double result_array[], + double result_deriv_array[], + double result_deriv2_array[]); +int gsl_sf_legendre_deriv2_alt_array_e(const gsl_sf_legendre_t norm, + const size_t lmax, const double x, + const double csphase, + double result_array[], + double result_deriv_array[], + double result_deriv2_array[]); +size_t gsl_sf_legendre_array_n(const size_t lmax); +size_t gsl_sf_legendre_array_index(const size_t l, const size_t m); +size_t gsl_sf_legendre_nlm(const size_t lmax); + +__END_DECLS + +#endif /* __GSL_SF_LEGENDRE_H__ */ diff --git a/gsl-2.5/specfunc/gsl_sf_log.h b/gsl-2.5/specfunc/gsl_sf_log.h new file mode 100644 index 00000000..92aa6857 --- /dev/null +++ b/gsl-2.5/specfunc/gsl_sf_log.h @@ -0,0 +1,82 @@ +/* specfunc/gsl_sf_log.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2004 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ + +#ifndef __GSL_SF_LOG_H__ +#define __GSL_SF_LOG_H__ + +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + + +/* Provide a logarithm function with GSL semantics. + * + * exceptions: GSL_EDOM + */ +int gsl_sf_log_e(const double x, gsl_sf_result * result); +double gsl_sf_log(const double x); + + +/* Log(|x|) + * + * exceptions: GSL_EDOM + */ +int gsl_sf_log_abs_e(const double x, gsl_sf_result * result); +double gsl_sf_log_abs(const double x); + + +/* Complex Logarithm + * exp(lnr + I theta) = zr + I zi + * Returns argument in [-pi,pi]. + * + * exceptions: GSL_EDOM + */ +int gsl_sf_complex_log_e(const double zr, const double zi, gsl_sf_result * lnr, gsl_sf_result * theta); + + +/* Log(1 + x) + * + * exceptions: GSL_EDOM + */ +int gsl_sf_log_1plusx_e(const double x, gsl_sf_result * result); +double gsl_sf_log_1plusx(const double x); + + +/* Log(1 + x) - x + * + * exceptions: GSL_EDOM + */ +int gsl_sf_log_1plusx_mx_e(const double x, gsl_sf_result * result); +double gsl_sf_log_1plusx_mx(const double x); + +__END_DECLS + +#endif /* __GSL_SF_LOG_H__ */ diff --git a/gsl-2.5/specfunc/gsl_sf_mathieu.h b/gsl-2.5/specfunc/gsl_sf_mathieu.h new file mode 100644 index 00000000..8dc8d14e --- /dev/null +++ b/gsl-2.5/specfunc/gsl_sf_mathieu.h @@ -0,0 +1,113 @@ +/* specfunc/gsl_sf_mathieu.h + * + * Copyright (C) 2002 Lowell Johnson + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +/* Author: L. Johnson */ + +#ifndef __GSL_SF_MATHIEU_H__ +#define __GSL_SF_MATHIEU_H__ + +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +#define GSL_SF_MATHIEU_COEFF 100 + +typedef struct +{ + size_t size; + size_t even_order; + size_t odd_order; + int extra_values; + double qa; /* allow for caching of results: not implemented yet */ + double qb; /* allow for caching of results: not implemented yet */ + double *aa; + double *bb; + double *dd; + double *ee; + double *tt; + double *e2; + double *zz; + gsl_vector *eval; + gsl_matrix *evec; + gsl_eigen_symmv_workspace *wmat; +} gsl_sf_mathieu_workspace; + + +/* Compute an array of characteristic (eigen) values from the recurrence + matrices for the Mathieu equations. */ +int gsl_sf_mathieu_a_array(int order_min, int order_max, double qq, gsl_sf_mathieu_workspace *work, double result_array[]); +int gsl_sf_mathieu_b_array(int order_min, int order_max, double qq, gsl_sf_mathieu_workspace *work, double result_array[]); + +/* Compute the characteristic value for a Mathieu function of order n and + type ntype. */ +int gsl_sf_mathieu_a_e(int order, double qq, gsl_sf_result *result); +double gsl_sf_mathieu_a(int order, double qq); +int gsl_sf_mathieu_b_e(int order, double qq, gsl_sf_result *result); +double gsl_sf_mathieu_b(int order, double qq); + +/* Compute the Fourier coefficients for a Mathieu function. */ +int gsl_sf_mathieu_a_coeff(int order, double qq, double aa, double coeff[]); +int gsl_sf_mathieu_b_coeff(int order, double qq, double aa, double coeff[]); + +/* Allocate computational storage space for eigenvalue solution. */ +gsl_sf_mathieu_workspace *gsl_sf_mathieu_alloc(const size_t nn, + const double qq); +void gsl_sf_mathieu_free(gsl_sf_mathieu_workspace *workspace); + +/* Compute an angular Mathieu function. */ +int gsl_sf_mathieu_ce_e(int order, double qq, double zz, gsl_sf_result *result); +double gsl_sf_mathieu_ce(int order, double qq, double zz); +int gsl_sf_mathieu_se_e(int order, double qq, double zz, gsl_sf_result *result); +double gsl_sf_mathieu_se(int order, double qq, double zz); +int gsl_sf_mathieu_ce_array(int nmin, int nmax, double qq, double zz, + gsl_sf_mathieu_workspace *work, + double result_array[]); +int gsl_sf_mathieu_se_array(int nmin, int nmax, double qq, double zz, + gsl_sf_mathieu_workspace *work, + double result_array[]); + +/* Compute a radial Mathieu function. */ +int gsl_sf_mathieu_Mc_e(int kind, int order, double qq, double zz, + gsl_sf_result *result); +double gsl_sf_mathieu_Mc(int kind, int order, double qq, double zz); +int gsl_sf_mathieu_Ms_e(int kind, int order, double qq, double zz, + gsl_sf_result *result); +double gsl_sf_mathieu_Ms(int kind, int order, double qq, double zz); +int gsl_sf_mathieu_Mc_array(int kind, int nmin, int nmax, double qq, + double zz, gsl_sf_mathieu_workspace *work, + double result_array[]); +int gsl_sf_mathieu_Ms_array(int kind, int nmin, int nmax, double qq, + double zz, gsl_sf_mathieu_workspace *work, + double result_array[]); + + +__END_DECLS + +#endif /* !__GSL_SF_MATHIEU_H__ */ diff --git a/gsl-2.5/specfunc/gsl_sf_pow_int.h b/gsl-2.5/specfunc/gsl_sf_pow_int.h new file mode 100644 index 00000000..e535d572 --- /dev/null +++ b/gsl-2.5/specfunc/gsl_sf_pow_int.h @@ -0,0 +1,49 @@ +/* specfunc/gsl_sf_pow_int.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ + +#ifndef __GSL_SF_POW_INT_H__ +#define __GSL_SF_POW_INT_H__ + +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + + +/* Calculate x^n. + * Does not check for overflow/underflow. + */ +int gsl_sf_pow_int_e(double x, int n, gsl_sf_result * result); +double gsl_sf_pow_int(const double x, const int n); + + +__END_DECLS + +#endif /* __GSL_SF_POW_INT_H__ */ diff --git a/gsl-2.5/specfunc/gsl_sf_psi.h b/gsl-2.5/specfunc/gsl_sf_psi.h new file mode 100644 index 00000000..ec611790 --- /dev/null +++ b/gsl-2.5/specfunc/gsl_sf_psi.h @@ -0,0 +1,113 @@ +/* specfunc/gsl_sf_psi.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2004 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ + +#ifndef __GSL_SF_PSI_H__ +#define __GSL_SF_PSI_H__ + +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + + +/* Poly-Gamma Functions + * + * psi(m,x) := (d/dx)^m psi(0,x) = (d/dx)^{m+1} log(gamma(x)) + */ + + +/* Di-Gamma Function psi(n) = psi(0,n) + * + * n > 0 + * exceptions: GSL_EDOM + */ +int gsl_sf_psi_int_e(const int n, gsl_sf_result * result); +double gsl_sf_psi_int(const int n); + + +/* Di-Gamma Function psi(x) = psi(0, x) + * + * x != 0.0, -1.0, -2.0, ... + * exceptions: GSL_EDOM, GSL_ELOSS + */ +int gsl_sf_psi_e(const double x, gsl_sf_result * result); +double gsl_sf_psi(const double x); + + +/* Di-Gamma Function Re[psi(1 + I y)] + * + * exceptions: none + */ +int gsl_sf_psi_1piy_e(const double y, gsl_sf_result * result); +double gsl_sf_psi_1piy(const double y); + + +/* Di-Gamma Function psi(z) for general complex argument z = x + iy + * + * exceptions: GSL_EDOM + */ +int gsl_sf_complex_psi_e( + const double x, + const double y, + gsl_sf_result * result_re, + gsl_sf_result * result_im + ); + + +/* Tri-Gamma Function psi^(1)(n) + * + * n > 0 + * exceptions: GSL_EDOM + */ +int gsl_sf_psi_1_int_e(const int n, gsl_sf_result * result); +double gsl_sf_psi_1_int(const int n); + + +/* Tri-Gamma Function psi^(1)(x) + * + * x != 0.0, -1.0, -2.0, ... + * exceptions: GSL_EDOM, GSL_ELOSS + */ +int gsl_sf_psi_1_e(const double x, gsl_sf_result * result); +double gsl_sf_psi_1(const double x); + + +/* Poly-Gamma Function psi^(n)(x) + * + * n >= 0, x > 0.0 + * exceptions: GSL_EDOM + */ +int gsl_sf_psi_n_e(const int n, const double x, gsl_sf_result * result); +double gsl_sf_psi_n(const int n, const double x); + + +__END_DECLS + +#endif /* __GSL_SF_PSI_H__ */ diff --git a/gsl-2.5/specfunc/gsl_sf_result.h b/gsl-2.5/specfunc/gsl_sf_result.h new file mode 100644 index 00000000..512bad7c --- /dev/null +++ b/gsl-2.5/specfunc/gsl_sf_result.h @@ -0,0 +1,59 @@ +/* specfunc/gsl_sf_result.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ + +#ifndef __GSL_SF_RESULT_H__ +#define __GSL_SF_RESULT_H__ + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +struct gsl_sf_result_struct { + double val; + double err; +}; +typedef struct gsl_sf_result_struct gsl_sf_result; + +#define GSL_SF_RESULT_SET(r,v,e) do { (r)->val=(v); (r)->err=(e); } while(0) + + +struct gsl_sf_result_e10_struct { + double val; + double err; + int e10; +}; +typedef struct gsl_sf_result_e10_struct gsl_sf_result_e10; + + +int gsl_sf_result_smash_e(const gsl_sf_result_e10 * re, gsl_sf_result * r); + + +__END_DECLS + +#endif /* __GSL_SF_RESULT_H__ */ diff --git a/gsl-2.5/specfunc/gsl_sf_sincos_pi.h b/gsl-2.5/specfunc/gsl_sf_sincos_pi.h new file mode 100644 index 00000000..62fafbe1 --- /dev/null +++ b/gsl-2.5/specfunc/gsl_sf_sincos_pi.h @@ -0,0 +1,57 @@ +/* specfunc/gsl_sf_sincos_pi.h + * + * Copyright (C) 2017 Konrad Griessinger + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman, K. Griessinger */ + +#ifndef __GSL_SF_SINCOS_PI_H__ +#define __GSL_SF_SINCOS_PI_H__ + +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + + +/* sin_pi(x) with GSL semantics. This is actually important + * because we want to control the error estimate, and trying + * to guess the error for the standard library implementation + * every time it is used would be a little goofy. + */ +int gsl_sf_sin_pi_e(double x, gsl_sf_result * result); +double gsl_sf_sin_pi(const double x); + + +/* cos_pi(x) with GSL semantics. + */ +int gsl_sf_cos_pi_e(double x, gsl_sf_result * result); +double gsl_sf_cos_pi(const double x); + + +__END_DECLS + +#endif /* __GSL_SF_SINCOS_PI_H__ */ diff --git a/gsl-2.5/specfunc/gsl_sf_synchrotron.h b/gsl-2.5/specfunc/gsl_sf_synchrotron.h new file mode 100644 index 00000000..26028c89 --- /dev/null +++ b/gsl-2.5/specfunc/gsl_sf_synchrotron.h @@ -0,0 +1,60 @@ +/* specfunc/gsl_sf_synchrotron.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ + +#ifndef __GSL_SF_SYNCHROTRON_H__ +#define __GSL_SF_SYNCHROTRON_H__ + +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + + +/* First synchrotron function: + * synchrotron_1(x) = x Integral[ K_{5/3}(t), {t, x, Infinity}] + * + * exceptions: GSL_EDOM, GSL_EUNDRFLW + */ +int gsl_sf_synchrotron_1_e(const double x, gsl_sf_result * result); +double gsl_sf_synchrotron_1(const double x); + + +/* Second synchroton function: + * synchrotron_2(x) = x * K_{2/3}(x) + * + * exceptions: GSL_EDOM, GSL_EUNDRFLW + */ +int gsl_sf_synchrotron_2_e(const double x, gsl_sf_result * result); +double gsl_sf_synchrotron_2(const double x); + + +__END_DECLS + +#endif /* __GSL_SF_SYNCHROTRON_H__ */ diff --git a/gsl-2.5/specfunc/gsl_sf_transport.h b/gsl-2.5/specfunc/gsl_sf_transport.h new file mode 100644 index 00000000..c0fd7fc2 --- /dev/null +++ b/gsl-2.5/specfunc/gsl_sf_transport.h @@ -0,0 +1,78 @@ +/* specfunc/gsl_sf_transport.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ + +#ifndef __GSL_SF_TRANSPORT_H__ +#define __GSL_SF_TRANSPORT_H__ + +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + + +/* Transport function: + * J(n,x) := Integral[ t^n e^t /(e^t - 1)^2, {t,0,x}] + */ + +/* J(2,x) + * + * exceptions: GSL_EDOM + */ +int gsl_sf_transport_2_e(const double x, gsl_sf_result * result); +double gsl_sf_transport_2(const double x); + + +/* J(3,x) + * + * exceptions: GSL_EDOM, GSL_EUNDRFLW + */ +int gsl_sf_transport_3_e(const double x, gsl_sf_result * result); +double gsl_sf_transport_3(const double x); + + +/* J(4,x) + * + * exceptions: GSL_EDOM, GSL_EUNDRFLW + */ +int gsl_sf_transport_4_e(const double x, gsl_sf_result * result); +double gsl_sf_transport_4(const double x); + + +/* J(5,x) + * + * exceptions: GSL_EDOM, GSL_EUNDRFLW + */ +int gsl_sf_transport_5_e(const double x, gsl_sf_result * result); +double gsl_sf_transport_5(const double x); + + +__END_DECLS + +#endif /* __GSL_SF_TRANSPORT_H__ */ diff --git a/gsl-2.5/specfunc/gsl_sf_trig.h b/gsl-2.5/specfunc/gsl_sf_trig.h new file mode 100644 index 00000000..e2c5722d --- /dev/null +++ b/gsl-2.5/specfunc/gsl_sf_trig.h @@ -0,0 +1,152 @@ +/* specfunc/gsl_sf_trig.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ + +#ifndef __GSL_SF_TRIG_H__ +#define __GSL_SF_TRIG_H__ + +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + + +/* Sin(x) with GSL semantics. This is actually important + * because we want to control the error estimate, and trying + * to guess the error for the standard library implementation + * every time it is used would be a little goofy. + */ +int gsl_sf_sin_e(double x, gsl_sf_result * result); +double gsl_sf_sin(const double x); + + +/* Cos(x) with GSL semantics. + */ +int gsl_sf_cos_e(double x, gsl_sf_result * result); +double gsl_sf_cos(const double x); + + +/* Hypot(x,y) with GSL semantics. + */ +int gsl_sf_hypot_e(const double x, const double y, gsl_sf_result * result); +double gsl_sf_hypot(const double x, const double y); + + +/* Sin(z) for complex z + * + * exceptions: GSL_EOVRFLW + */ +int gsl_sf_complex_sin_e(const double zr, const double zi, gsl_sf_result * szr, gsl_sf_result * szi); + + +/* Cos(z) for complex z + * + * exceptions: GSL_EOVRFLW + */ +int gsl_sf_complex_cos_e(const double zr, const double zi, gsl_sf_result * czr, gsl_sf_result * czi); + + +/* Log(Sin(z)) for complex z + * + * exceptions: GSL_EDOM, GSL_ELOSS + */ +int gsl_sf_complex_logsin_e(const double zr, const double zi, gsl_sf_result * lszr, gsl_sf_result * lszi); + + +/* Sinc(x) = sin(pi x) / (pi x) + * + * exceptions: none + */ +int gsl_sf_sinc_e(double x, gsl_sf_result * result); +double gsl_sf_sinc(const double x); + + +/* Log(Sinh(x)), x > 0 + * + * exceptions: GSL_EDOM + */ +int gsl_sf_lnsinh_e(const double x, gsl_sf_result * result); +double gsl_sf_lnsinh(const double x); + + +/* Log(Cosh(x)) + * + * exceptions: none + */ +int gsl_sf_lncosh_e(const double x, gsl_sf_result * result); +double gsl_sf_lncosh(const double x); + + +/* Convert polar to rectlinear coordinates. + * + * exceptions: GSL_ELOSS + */ +int gsl_sf_polar_to_rect(const double r, const double theta, gsl_sf_result * x, gsl_sf_result * y); + +/* Convert rectilinear to polar coordinates. + * return argument in range [-pi, pi] + * + * exceptions: GSL_EDOM + */ +int gsl_sf_rect_to_polar(const double x, const double y, gsl_sf_result * r, gsl_sf_result * theta); + +/* Sin(x) for quantity with an associated error. + */ +int gsl_sf_sin_err_e(const double x, const double dx, gsl_sf_result * result); + + +/* Cos(x) for quantity with an associated error. + */ +int gsl_sf_cos_err_e(const double x, const double dx, gsl_sf_result * result); + + +/* Force an angle to lie in the range (-pi,pi]. + * + * exceptions: GSL_ELOSS + */ +int gsl_sf_angle_restrict_symm_e(double * theta); +double gsl_sf_angle_restrict_symm(const double theta); + + +/* Force an angle to lie in the range [0, 2pi) + * + * exceptions: GSL_ELOSS + */ +int gsl_sf_angle_restrict_pos_e(double * theta); +double gsl_sf_angle_restrict_pos(const double theta); + + +int gsl_sf_angle_restrict_symm_err_e(const double theta, gsl_sf_result * result); + +int gsl_sf_angle_restrict_pos_err_e(const double theta, gsl_sf_result * result); + + +__END_DECLS + +#endif /* __GSL_SF_TRIG_H__ */ diff --git a/gsl-2.5/specfunc/gsl_sf_zeta.h b/gsl-2.5/specfunc/gsl_sf_zeta.h new file mode 100644 index 00000000..2d7fad0a --- /dev/null +++ b/gsl-2.5/specfunc/gsl_sf_zeta.h @@ -0,0 +1,112 @@ +/* specfunc/gsl_sf_zeta.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2004 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ + +#ifndef __GSL_SF_ZETA_H__ +#define __GSL_SF_ZETA_H__ + +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + + +/* Riemann Zeta Function + * zeta(n) = Sum[ k^(-n), {k,1,Infinity} ] + * + * n=integer, n != 1 + * exceptions: GSL_EDOM, GSL_EOVRFLW + */ +int gsl_sf_zeta_int_e(const int n, gsl_sf_result * result); +double gsl_sf_zeta_int(const int n); + + +/* Riemann Zeta Function + * zeta(x) = Sum[ k^(-s), {k,1,Infinity} ], s != 1.0 + * + * s != 1.0 + * exceptions: GSL_EDOM, GSL_EOVRFLW + */ +int gsl_sf_zeta_e(const double s, gsl_sf_result * result); +double gsl_sf_zeta(const double s); + + +/* Riemann Zeta Function minus 1 + * useful for evaluating the fractional part + * of Riemann zeta for large argument + * + * s != 1.0 + * exceptions: GSL_EDOM, GSL_EOVRFLW + */ +int gsl_sf_zetam1_e(const double s, gsl_sf_result * result); +double gsl_sf_zetam1(const double s); + + +/* Riemann Zeta Function minus 1 for integer arg + * useful for evaluating the fractional part + * of Riemann zeta for large argument + * + * s != 1.0 + * exceptions: GSL_EDOM, GSL_EOVRFLW + */ +int gsl_sf_zetam1_int_e(const int s, gsl_sf_result * result); +double gsl_sf_zetam1_int(const int s); + + +/* Hurwitz Zeta Function + * zeta(s,q) = Sum[ (k+q)^(-s), {k,0,Infinity} ] + * + * s > 1.0, q > 0.0 + * exceptions: GSL_EDOM, GSL_EUNDRFLW, GSL_EOVRFLW + */ +int gsl_sf_hzeta_e(const double s, const double q, gsl_sf_result * result); +double gsl_sf_hzeta(const double s, const double q); + + +/* Eta Function + * eta(n) = (1-2^(1-n)) zeta(n) + * + * exceptions: GSL_EUNDRFLW, GSL_EOVRFLW + */ +int gsl_sf_eta_int_e(int n, gsl_sf_result * result); +double gsl_sf_eta_int(const int n); + + +/* Eta Function + * eta(s) = (1-2^(1-s)) zeta(s) + * + * exceptions: GSL_EUNDRFLW, GSL_EOVRFLW + */ +int gsl_sf_eta_e(const double s, gsl_sf_result * result); +double gsl_sf_eta(const double s); + + +__END_DECLS + +#endif /* __GSL_SF_ZETA_H__ */ diff --git a/gsl-2.5/specfunc/gsl_specfunc.h b/gsl-2.5/specfunc/gsl_specfunc.h new file mode 100644 index 00000000..e07b5aa0 --- /dev/null +++ b/gsl-2.5/specfunc/gsl_specfunc.h @@ -0,0 +1,10 @@ +/* Author: G. Jungman */ + + +/* Convenience header */ +#ifndef __GSL_SPECFUNC_H__ +#define __GSL_SPECFUNC_H__ + +#include + +#endif /* __GSL_SPECFUNC_H__ */ diff --git a/gsl-2.5/specfunc/hermite.c b/gsl-2.5/specfunc/hermite.c new file mode 100644 index 00000000..cbf5503b --- /dev/null +++ b/gsl-2.5/specfunc/hermite.c @@ -0,0 +1,1789 @@ +/* specfunc/hermite.c + * + * Copyright (C) 2011, 2012, 2013, 2014 Konrad Griessinger + * (konradg(at)gmx.net) + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/*----------------------------------------------------------------------* + * "The purpose of computing is insight, not numbers." - R.W. Hamming * + * Hermite polynomials, Hermite functions * + * and their respective arbitrary derivatives * + *----------------------------------------------------------------------*/ + +/* TODO: + * - array functions for derivatives of Hermite functions + * - asymptotic approximation for derivatives of Hermite functions + * - refine existing asymptotic approximations, especially around x=sqrt(2*n+1) or x=sqrt(2*n+1)*sqrt(2), respectively + */ + +#include +#include +#include +#include +#include +#include +#include + +#include "error.h" +#include "eval.h" + +#define pow2(n) (gsl_sf_pow_int(2,n)) + +/* Evaluates the probabilists' Hermite polynomial of order n at position x using upward recurrence. */ +static int +gsl_sf_hermite_prob_iter_e(const int n, const double x, gsl_sf_result * result) +{ + result->val = 0.; + result->err = 0.; + + if(n < 0) { + DOMAIN_ERROR(result); + } + else if(n == 0) { + result->val = 1.; + result->err = 0.; + return GSL_SUCCESS; + } + else if(n == 1) { + result->val = x; + result->err = 0.; + return GSL_SUCCESS; + } + else if(x == 0.){ + if(GSL_IS_ODD(n)){ + result->val = 0.; + result->err = 0.; + return GSL_SUCCESS; + } + else{ + if(n < 301){ + /* + double f; + int j; + f = (GSL_IS_ODD(n/2)?-1.:1.); + for(j=1; j < n; j+=2) { + f*=j; + } + result->val = f; + result->err = 0.; + */ + if(n < 297){ + gsl_sf_doublefact_e(n-1, result); + (GSL_IS_ODD(n/2)?result->val = -result->val:1.); + } + else if (n == 298){ + result->val = (GSL_IS_ODD(n/2)?-1.:1.)*1.25527562259930633890922678431e304; + result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val); + } + else{ + result->val = (GSL_IS_ODD(n/2)?-1.:1.)*3.7532741115719259533385880851e306; + result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val); + } + } + else{ + result->val = (GSL_IS_ODD(n/2)?GSL_NEGINF:GSL_POSINF); + result->err = GSL_POSINF; + } + return GSL_SUCCESS; + } + } +/* + else if(x*x < 4.0*n && n > 100000) { + // asymptotic formula + double f = 1.0; + int j; + if(GSL_IS_ODD(n)) { + f=gsl_sf_fact((n-1)/2)*gsl_sf_pow_int(2,n/2)*M_SQRT2/M_SQRTPI; + } + else { + for(j=1; j < n; j+=2) { + f*=j; + } + } + return f*exp(x*x/4)*cos(x*sqrt(n)-(n%4)*M_PI_2)/sqrt(sqrt(1-x*x/4.0/n)); + // return f*exp(x*x/4)*cos(x*sqrt(n)-n*M_PI_2)/sqrt(sqrt(1-x*x/4.0/n)); + } +*/ + else{ + /* upward recurrence: He_{n+1} = x He_n - n He_{n-1} */ + + double p_n0 = 1.0; /* He_0(x) */ + double p_n1 = x; /* He_1(x) */ + double p_n = p_n1; + + double e_n0 = GSL_DBL_EPSILON; + double e_n1 = fabs(x)*GSL_DBL_EPSILON; + double e_n = e_n1; + + int j=0, c=0; + + for(j=1; j <= n-1; j++){ + if (gsl_isnan(p_n) == 1){ + break; + } + p_n = x*p_n1-j*p_n0; + p_n0 = p_n1; + p_n1 = p_n; + + e_n = (fabs(x)*e_n1+j*e_n0); + e_n0 = e_n1; + e_n1 = e_n; + + while(( GSL_MIN(fabs(p_n0),fabs(p_n1)) > 2.0*GSL_SQRT_DBL_MIN ) && ( GSL_MAX(fabs(p_n0),fabs(p_n1)) > GSL_SQRT_DBL_MAX )){ + p_n0 *= 0.5; + p_n1 *= 0.5; + p_n = p_n1; + e_n0 *= 0.5; + e_n1 *= 0.5; + e_n = e_n1; + c++; + } + + while(( ( ( fabs(p_n0) < GSL_SQRT_DBL_MIN ) && ( p_n0 != 0) ) || ( ( fabs(p_n1) < GSL_SQRT_DBL_MIN ) && ( p_n1 != 0) ) ) && ( GSL_MAX(fabs(p_n0),fabs(p_n1)) < 0.5*GSL_SQRT_DBL_MAX )){ + p_n0 *= 2.0; + p_n1 *= 2.0; + p_n = p_n1; + e_n0 *= 2.0; + e_n1 *= 2.0; + e_n = e_n1; + c--; + } + } + + /* + // check to see that the correct values are computed, even when overflow strikes in the end; works, thus very large results are accessible by determining mantissa and exponent separately + double lg2 = 0.30102999566398119521467838; + double ln10 = 2.3025850929940456840179914546843642076011014886; + printf("res= %g\n", p_n*pow(10.,((lg2*c)-((long)(lg2*c)))) ); + printf("res= %g * 10^(%ld)\n", p_n*pow(10.,((lg2*c)-((long)(lg2*c))))/pow(10.,((long)(log(fabs(p_n*pow(10.,((lg2*c)-((long)(lg2*c))))))/ln10))), ((long)(log(fabs(p_n*pow(10.,((lg2*c)-((long)(lg2*c))))))/ln10))+((long)(lg2*c)) ); + */ + + result->val = pow2(c)*p_n; + result->err = pow2(c)*e_n + fabs(result->val)*GSL_DBL_EPSILON; + /* result->err = e_n + n*fabs(p_n)*GSL_DBL_EPSILON; + no idea, where the factor n came from => removed + */ + + if (gsl_isnan(result->val) != 1){ + return GSL_SUCCESS; + } + else{ + return GSL_ERANGE; + } + } +} + +/* Approximatively evaluates the probabilists' Hermite polynomial of order n at position x. + * An approximation depending on the x-range (see Szego, Gabor (1939, 1958, 1967), Orthogonal Polynomials, American Mathematical Society) is used. */ +static int +gsl_sf_hermite_prob_appr_e(const int n, const double x, gsl_sf_result * result) +{ + /* Plancherel-Rotach approximation (note: Szego defines the Airy function differently!) */ + const double aizero1 = -2.3381074104597670384891972524467; /* first zero of the Airy function Ai */ + double z = fabs(x)*M_SQRT1_2; + double f = 1.; + int j; + for(j=1; j <= n; j++) { + f*=sqrt(j); + } + if (z < sqrt(2*n+1.)+aizero1/M_SQRT2/pow(n,1/6.)){ + double phi = acos(z/sqrt(2*n+1.)); + result->val = f*(GSL_IS_ODD(n)&&(x<0.)?-1.:1.)*pow(2./n,0.25)/sqrt(M_SQRTPI*sin(phi))*sin(M_PI*0.75+(0.5*n+0.25)*(sin(2*phi)-2*phi))*exp(0.5*z*z); + result->err = 2. * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else if (z > sqrt(2*n+1.)-aizero1/M_SQRT2/pow(n,1/6.)){ + double phi = acosh(z/sqrt(2*n+1.)); + result->val = f*(GSL_IS_ODD(n)&&(x<0.)?-1.:1.)*pow(n,-0.25)/M_SQRT2/sqrt(M_SQRT2*M_SQRTPI*sinh(phi))*exp((0.5*n+0.25)*(2*phi-sinh(2*phi)))*exp(0.5*z*z); + result->err = 2. * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else{ + gsl_sf_result Ai; + gsl_sf_airy_Ai_e((z-sqrt(2*n+1.))*M_SQRT2*pow(n,1/6.),0,&Ai); + result->val = f*(GSL_IS_ODD(n)&&(x<0.)?-1.:1.)*sqrt(M_SQRTPI*M_SQRT2)*pow(n,-1/12.)*Ai.val*exp(0.5*z*z); + result->err = f*sqrt(M_SQRTPI*M_SQRT2)*pow(n,-1/12.)*Ai.err*exp(0.5*z*z) + GSL_DBL_EPSILON*fabs(result->val); + return GSL_SUCCESS; + } +} + +/* Evaluates the probabilists' Hermite polynomial of order n at position x. + * For small n upward recurrence is employed, while for large n and NaNs from the iteration an approximation depending on the x-range (see Szego, Gabor (1939, 1958, 1967), Orthogonal Polynomials, American Mathematical Society) is used. */ +int +gsl_sf_hermite_prob_e(const int n, const double x, gsl_sf_result * result) +{ + if( (x==0. || n<=100000) && (gsl_sf_hermite_prob_iter_e(n,x,result)==GSL_SUCCESS) ){ + return GSL_SUCCESS; + } + else{ + return gsl_sf_hermite_prob_appr_e(n,x,result); + } +} + +double gsl_sf_hermite_prob(const int n, const double x) +{ + EVAL_RESULT(gsl_sf_hermite_prob_e(n, x, &result)); +} + +/* Evaluates the m-th derivative of the probabilists' Hermite polynomial of order n at position x. + * The direct formula He^{(m)}_n = n!/(n-m)!*He_{n-m}(x) (where He_j(x) is the j-th probabilists' Hermite polynomial and He^{(m)}_j(x) its m-th derivative) is employed. */ +int +gsl_sf_hermite_prob_der_e(const int m, const int n, const double x, gsl_sf_result * result) +{ + if(n < 0 || m < 0) { + DOMAIN_ERROR(result); + } + else if(n < m) { + result->val = 0.; + result->err = 0.; + return GSL_SUCCESS; + } + else{ + double f = gsl_sf_choose(n,m)*gsl_sf_fact(m); + gsl_sf_result He; + gsl_sf_hermite_prob_e(n-m,x,&He); + result->val = He.val*f; + result->err = He.err*f + GSL_DBL_EPSILON*fabs(result->val); + return GSL_SUCCESS; + } +} + +double +gsl_sf_hermite_prob_der(const int m, const int n, const double x) +{ + EVAL_RESULT(gsl_sf_hermite_prob_der_e(m, n, x, &result)); +} + +/* Evaluates the physicists' Hermite polynomial of order n at position x. + * For small n upward recurrence is employed, while for large n and NaNs from the iteration an approximation depending on the x-range (see Szego, Gabor (1939, 1958, 1967), Orthogonal Polynomials, American Mathematical Society) is used. */ +int +gsl_sf_hermite_phys_e(const int n, const double x, gsl_sf_result * result) +{ + result->val = 0.; + result->err = 0.; + + if(n < 0) { + DOMAIN_ERROR(result); + } + else if(n == 0) { + result->val = 1.; + result->err = 0.; + return GSL_SUCCESS; + } + else if(n == 1) { + result->val = 2.0*x; + result->err = 0.; + return GSL_SUCCESS; + } + else if(x == 0.){ + if(GSL_IS_ODD(n)){ + result->val = 0.; + result->err = 0.; + return GSL_SUCCESS; + } + else{ + if(n < 269){ + double f = pow2(n/2); + gsl_sf_doublefact_e(n-1, result); + result->val *= f; + result->err *= f; + (GSL_IS_ODD(n/2)?result->val = -result->val:1.); + /* + double f; + int j; + f = (GSL_IS_ODD(n/2)?-1.:1.); + for(j=1; j < n; j+=2) { + f*=2*j; + } + result->val = f; + result->err = 0.; + */ + } + else{ + result->val = (GSL_IS_ODD(n/2)?GSL_NEGINF:GSL_POSINF); + result->err = GSL_POSINF; + } + return GSL_SUCCESS; + } + } + /* + else if(x*x < 2.0*n && n > 100000) { + // asymptotic formula + double f = 1.0; + int j; + if(GSL_IS_ODD(n)) { + f=gsl_sf_fact((n-1)/2)*gsl_sf_pow_int(2,n)/M_SQRTPI; + } + else { + for(j=1; j < n; j+=2) { + f*=j; + } + f*=gsl_sf_pow_int(2,n/2); + } + return f*exp(x*x/2)*cos(x*sqrt(2.0*n)-(n%4)*M_PI_2)/sqrt(sqrt(1-x*x/2.0/n)); + // return f*exp(x*x/2)*cos(x*sqrt(2.0*n)-n*M_PI_2)/sqrt(sqrt(1-x*x/2.0/n)); + } + */ + else if (n <= 100000){ + /* upward recurrence: H_{n+1} = 2x H_n - 2j H_{n-1} */ + + double p_n0 = 1.0; /* H_0(x) */ + double p_n1 = 2.0*x; /* H_1(x) */ + double p_n = p_n1; + + double e_n0 = GSL_DBL_EPSILON; + double e_n1 = 2.*fabs(x)*GSL_DBL_EPSILON; + double e_n = e_n1; + + int j=0, c=0; + + for(j=1; j <= n-1; j++){ + if (gsl_isnan(p_n) == 1){ + break; + } + p_n = 2.0*x*p_n1-2.0*j*p_n0; + p_n0 = p_n1; + p_n1 = p_n; + + e_n = 2.*(fabs(x)*e_n1+j*e_n0); + e_n0 = e_n1; + e_n1 = e_n; + + while(( GSL_MIN(fabs(p_n0),fabs(p_n1)) > 2.0*GSL_SQRT_DBL_MIN ) && ( GSL_MAX(fabs(p_n0),fabs(p_n1)) > GSL_SQRT_DBL_MAX )){ + p_n0 *= 0.5; + p_n1 *= 0.5; + p_n = p_n1; + e_n0 *= 0.5; + e_n1 *= 0.5; + e_n = e_n1; + c++; + } + + while(( ( ( fabs(p_n0) < GSL_SQRT_DBL_MIN ) && ( p_n0 != 0) ) || ( ( fabs(p_n1) < GSL_SQRT_DBL_MIN ) && ( p_n1 != 0) ) ) && ( GSL_MAX(fabs(p_n0),fabs(p_n1)) < 0.5*GSL_SQRT_DBL_MAX )){ + p_n0 *= 2.0; + p_n1 *= 2.0; + p_n = p_n1; + e_n0 *= 2.0; + e_n1 *= 2.0; + e_n = e_n1; + c--; + } + } + + result->val = pow2(c)*p_n; + result->err = pow2(c)*e_n + fabs(result->val)*GSL_DBL_EPSILON; + /* result->err = e_n + n*fabs(p_n)*GSL_DBL_EPSILON; + no idea, where the factor n came from => removed */ + if (gsl_isnan(result->val) != 1){ + return GSL_SUCCESS; + } + } + + /* the following condition is implied by the logic above */ + { + /* Plancherel-Rotach approximation (note: Szego defines the Airy function differently!) */ + const double aizero1 = -2.3381074104597670384891972524467; /* first zero of the Airy function Ai */ + double z = fabs(x); + double f = 1.; + int j; + for(j=1; j <= n; j++) { + f*=sqrt(j); + } + if (z < sqrt(2*n+1.)+aizero1/M_SQRT2/pow(n,1/6.)){ + double phi = acos(z/sqrt(2*n+1.)); + result->val = f*(GSL_IS_ODD(n)&&(x<0.)?-1.:1.)*(GSL_IS_ODD(n)?M_SQRT2:1.)*pow2(n/2)*pow(2./n,0.25)/sqrt(M_SQRTPI*sin(phi))*sin(M_PI*0.75+(0.5*n+0.25)*(sin(2*phi)-2*phi))*exp(0.5*z*z); + result->err = 2. * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else if (z > sqrt(2*n+1.)-aizero1/M_SQRT2/pow(n,1/6.)){ + double phi = acosh(z/sqrt(2*n+1.)); + result->val = f*(GSL_IS_ODD(n)&&(x<0.)?-1.:1.)*(GSL_IS_ODD(n)?1.:M_SQRT1_2)*pow2(n/2)*pow(n,-0.25)/sqrt(M_SQRT2*M_SQRTPI*sinh(phi))*exp((0.5*n+0.25)*(2*phi-sinh(2*phi)))*exp(0.5*z*z); + result->err = 2. * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else{ + gsl_sf_result Ai; + gsl_sf_airy_Ai_e((z-sqrt(2*n+1.))*M_SQRT2*pow(n,1/6.),0,&Ai); + result->val = f*(GSL_IS_ODD(n)&&(x<0.)?-1.:1.)*(GSL_IS_ODD(n)?M_SQRT2:1.)*sqrt(M_SQRTPI*M_SQRT2)*pow2(n/2)*pow(n,-1/12.)*Ai.val*exp(0.5*z*z); + result->err = f*(GSL_IS_ODD(n)?M_SQRT2:1.)*pow2(n/2)*sqrt(M_SQRTPI*M_SQRT2)*pow(n,-1/12.)*Ai.err*exp(0.5*z*z) + GSL_DBL_EPSILON*fabs(result->val); + return GSL_SUCCESS; + } + } +} + +double +gsl_sf_hermite_phys(const int n, const double x) +{ + EVAL_RESULT(gsl_sf_hermite_phys_e(n, x, &result)); +} + +/* Evaluates the m-th derivative of the physicists' Hermite polynomial of order n at position x. + * The direct formula H^{(m)}_n = 2**m*n!/(n-m)!*H_{n-m}(x) (where H_j(x) is the j-th physicists' Hermite polynomial and H^{(m)}_j(x) its m-th derivative) is employed. */ +int +gsl_sf_hermite_phys_der_e(const int m, const int n, const double x, gsl_sf_result * result) +{ + if(n < 0 || m < 0) { + DOMAIN_ERROR(result); + } + else if(n < m) { + result->val = 0.; + result->err = 0.; + return GSL_SUCCESS; + } + else{ + double f = gsl_sf_choose(n,m)*gsl_sf_fact(m)*pow2(m); + gsl_sf_result H; + gsl_sf_hermite_phys_e(n-m,x,&H); + result->val = H.val*f; + result->err = H.err*f + GSL_DBL_EPSILON*fabs(result->val); + return GSL_SUCCESS; + } +} + +double +gsl_sf_hermite_phys_der(const int m, const int n, const double x) +{ + EVAL_RESULT(gsl_sf_hermite_phys_der_e(m, n, x, &result)); +} + +/* Evaluates the Hermite function of order n at position x. + * For large n an approximation depending on the x-range (see Szego, Gabor (1939, 1958, 1967), Orthogonal Polynomials, American Mathematical Society) is used, while for small n the direct formula via the probabilists' Hermite polynomial is applied. */ +int +gsl_sf_hermite_func_e(const int n, const double x, gsl_sf_result * result) +{ + /* + if (x*x < 2.0*n && n > 100000){ + // asymptotic formula + double f = 1.0; + int j; + // return f*exp(x*x/4)*cos(x*sqrt(n)-n*M_PI_2)/sqrt(sqrt(1-x*x/4.0/n)); + return cos(x*sqrt(2.0*n)-(n%4)*M_PI_2)/sqrt(sqrt(0.5*n/M_PI*(1-0.5*x*x/n)))/M_PI; + } + */ + if (n < 0){ + DOMAIN_ERROR(result); + } + else if(n == 0 && x != 0.) { + result->val = exp(-0.5*x*x)/sqrt(M_SQRTPI); + result->err = GSL_DBL_EPSILON*fabs(result->val); + return GSL_SUCCESS; + } + else if(n == 1 && x != 0.) { + result->val = M_SQRT2*x*exp(-0.5*x*x)/sqrt(M_SQRTPI); + result->err = GSL_DBL_EPSILON*fabs(result->val); + return GSL_SUCCESS; + } + else if (x == 0.){ + if (GSL_IS_ODD(n)){ + result->val = 0.; + result->err = 0.; + return GSL_SUCCESS; + } + else{ + double f; + int j; + f = (GSL_IS_ODD(n/2)?-1.:1.); + for(j=1; j < n; j+=2) { + f*=sqrt(j/(j+1.)); + } + result->val = f/sqrt(M_SQRTPI); + result->err = GSL_DBL_EPSILON*fabs(result->val); + return GSL_SUCCESS; + } + } + else if (n <= 100000){ + double f = exp(-0.5*x*x)/sqrt(M_SQRTPI*gsl_sf_fact(n)); + gsl_sf_result He; + gsl_sf_hermite_prob_iter_e(n,M_SQRT2*x,&He); + result->val = He.val*f; + result->err = He.err*f + GSL_DBL_EPSILON*fabs(result->val); + if (gsl_isnan(result->val) != 1 && f > GSL_DBL_MIN && gsl_finite(He.val) == 1){ + return GSL_SUCCESS; + } + } + + /* upward recurrence: Psi_{n+1} = sqrt(2/(n+1))*x Psi_n - sqrt(n/(n+1)) Psi_{n-1} */ + + { + double tw = exp(-x*x*0.5/n); /* "twiddle factor" (in the spirit of FFT) */ + double p_n0 = tw/sqrt(M_SQRTPI); /* Psi_0(x) */ + double p_n1 = p_n0*M_SQRT2*x; /* Psi_1(x) */ + double p_n = p_n1; + double e_n0 = p_n0*GSL_DBL_EPSILON; + double e_n1 = p_n1*GSL_DBL_EPSILON; + double e_n = e_n1; + + int j; + + int c = 0; + for (j=1;j 2.0*GSL_SQRT_DBL_MIN ) && ( GSL_MAX(fabs(p_n0),fabs(p_n1)) > GSL_SQRT_DBL_MAX )){ + p_n0 *= 0.5; + p_n1 *= 0.5; + p_n = p_n1; + e_n0 *= 0.5; + e_n1 *= 0.5; + e_n = e_n1; + c++; + } + + while(( ( ( fabs(p_n0) < GSL_SQRT_DBL_MIN ) && ( p_n0 != 0) ) || ( ( fabs(p_n1) < GSL_SQRT_DBL_MIN ) && ( p_n1 != 0) ) ) && ( GSL_MAX(fabs(p_n0),fabs(p_n1)) < 0.5*GSL_SQRT_DBL_MAX )){ + p_n0 = p_n0*2; + p_n1 = p_n1*2; + p_n = p_n1; + e_n0 = e_n0*2; + e_n1 = e_n1*2; + e_n = e_n1; + c--; + } + } + + result->val = p_n*pow2(c); + result->err = n*fabs(result->val)*GSL_DBL_EPSILON; + + if (gsl_isnan(result->val) != 1){ + return GSL_SUCCESS; + } + + { + /* Plancherel-Rotach approximation (note: Szego defines the Airy function differently!) */ + const double aizero1 = -2.3381074104597670384891972524467; /* first zero of the Airy function Ai */ + double z = fabs(x); + if (z < sqrt(2*n+1.)+aizero1/M_SQRT2/pow(n,1/6.)){ + double phi = acos(z/sqrt(2*n+1.)); + result->val = (GSL_IS_ODD(n)&&(x<0.)?-1.:1.)*pow(2./n,0.25)/M_SQRTPI/sqrt(sin(phi))*sin(M_PI*0.75+(0.5*n+0.25)*(sin(2*phi)-2*phi)); + result->err = 2. * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else if (z > sqrt(2*n+1.)-aizero1/M_SQRT2/pow(n,1/6.)){ + double phi = acosh(z/sqrt(2*n+1.)); + result->val = (GSL_IS_ODD(n)&&(x<0.)?-1.:1.)*pow(n,-0.25)/ +2/M_SQRTPI/sqrt(sinh(phi)/M_SQRT2)*exp((0.5*n+0.25)*(2*phi-sinh(2*phi))); + result->err = 2. * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else{ + gsl_sf_result Ai; + gsl_sf_airy_Ai_e((z-sqrt(2*n+1.))*M_SQRT2*pow(n,1/6.),0,&Ai); + result->val = (GSL_IS_ODD(n)&&(x<0.)?-1.:1.)*sqrt(M_SQRT2)*pow(n,-1/12.)*Ai.val; + result->err = sqrt(M_SQRT2)*pow(n,-1/12.)*Ai.err + GSL_DBL_EPSILON*fabs(result->val); + return GSL_SUCCESS; + } + } + } +} + +double +gsl_sf_hermite_func(const int n, const double x) +{ + EVAL_RESULT(gsl_sf_hermite_func_e(n, x, &result)); +} + +/* Evaluates all probabilists' Hermite polynomials up to order nmax at position x. The results are stored in result_array. + * Since all polynomial orders are needed, upward recurrence is employed. */ +int +gsl_sf_hermite_prob_array(const int nmax, const double x, double * result_array) +{ + if(nmax < 0) { + GSL_ERROR ("domain error", GSL_EDOM); + } + else if(nmax == 0) { + result_array[0] = 1.0; + return GSL_SUCCESS; + } + else if(nmax == 1) { + result_array[0] = 1.0; + result_array[1] = x; + return GSL_SUCCESS; + } + else { + /* upward recurrence: He_{n+1} = x He_n - n He_{n-1} */ + + double p_n0 = 1.0; /* He_0(x) */ + double p_n1 = x; /* He_1(x) */ + double p_n = p_n1; + int j=0, c=0; + + result_array[0] = 1.0; + result_array[1] = x; + + for(j=1; j <= nmax-1; j++){ + p_n = x*p_n1-j*p_n0; + p_n0 = p_n1; + p_n1 = p_n; + + while(( GSL_MIN(fabs(p_n0),fabs(p_n1)) > 2.0*GSL_SQRT_DBL_MIN ) && ( GSL_MAX(fabs(p_n0),fabs(p_n1)) > GSL_SQRT_DBL_MAX )){ + p_n0 *= 0.5; + p_n1 *= 0.5; + p_n = p_n1; + c++; + } + + while(( ( ( fabs(p_n0) < GSL_SQRT_DBL_MIN ) && ( p_n0 != 0) ) || ( ( fabs(p_n1) < GSL_SQRT_DBL_MIN ) && ( p_n1 != 0) ) ) && ( GSL_MAX(fabs(p_n0),fabs(p_n1)) < 0.5*GSL_SQRT_DBL_MAX )){ + p_n0 *= 2.0; + p_n1 *= 2.0; + p_n = p_n1; + c--; + } + + result_array[j+1] = pow2(c)*p_n; + } + + return GSL_SUCCESS; + } +} + + +/* Evaluates the m-th derivative of all probabilists' Hermite polynomials up to order nmax at position x. The results are stored in result_array. + * Since all polynomial orders are needed, upward recurrence is employed. */ + +int +gsl_sf_hermite_prob_array_der(const int m, const int nmax, const double x, double * result_array) +{ + if(nmax < 0 || m < 0) { + GSL_ERROR ("domain error", GSL_EDOM); + } + else if(m == 0) { + gsl_sf_hermite_prob_array(nmax, x, result_array); + return GSL_SUCCESS; + } + else if(nmax < m) { + int j; + for(j=0; j <= nmax; j++){ + result_array[j] = 0.0; + } + return GSL_SUCCESS; + } + else if(nmax == m) { + int j; + for(j=0; j < m; j++){ + result_array[j] = 0.0; + } + result_array[nmax] = gsl_sf_fact(m); + return GSL_SUCCESS; + } + else if(nmax == m+1) { + int j; + for(j=0; j < m; j++){ + result_array[j] = 0.0; + } + result_array[nmax-1] = gsl_sf_fact(m); + result_array[nmax] = result_array[nmax-1]*(m+1)*x; + return GSL_SUCCESS; + } + else { + /* upward recurrence: He^{(m)}_{n+1} = (n+1)/(n-m+1)*(x He^{(m)}_n - n He^{(m)}_{n-1}) */ + + double p_n0 = gsl_sf_fact(m); /* He^{(m)}_{m}(x) */ + double p_n1 = p_n0*(m+1)*x; /* He^{(m)}_{m+1}(x) */ + double p_n = p_n1; + int j=0, c=0; + + for(j=0; j < m; j++){ + result_array[j] = 0.0; + } + + result_array[m] = p_n0; + result_array[m+1] = p_n1; + + for(j=m+1; j <= nmax-1; j++){ + p_n = (x*p_n1-j*p_n0)*(j+1)/(j-m+1); + p_n0 = p_n1; + p_n1 = p_n; + + while(( GSL_MIN(fabs(p_n0),fabs(p_n1)) > 2.0*GSL_SQRT_DBL_MIN ) && ( GSL_MAX(fabs(p_n0),fabs(p_n1)) > GSL_SQRT_DBL_MAX )){ + p_n0 *= 0.5; + p_n1 *= 0.5; + p_n = p_n1; + c++; + } + + while(( ( ( fabs(p_n0) < GSL_SQRT_DBL_MIN ) && ( p_n0 != 0) ) || ( ( fabs(p_n1) < GSL_SQRT_DBL_MIN ) && ( p_n1 != 0) ) ) && ( GSL_MAX(fabs(p_n0),fabs(p_n1)) < 0.5*GSL_SQRT_DBL_MAX )){ + p_n0 *= 2.0; + p_n1 *= 2.0; + p_n = p_n1; + c--; + } + + result_array[j+1] = pow2(c)*p_n; + } + + return GSL_SUCCESS; + } +} + +/* Evaluates all derivatives (starting from 0) up to the mmax-th derivative of the probabilists' Hermite polynomial of order n at position x. The results are stored in result_array. + * Since all polynomial orders are needed, upward recurrence is employed. */ + +int +gsl_sf_hermite_prob_der_array(const int mmax, const int n, const double x, double * result_array) +{ + if(n < 0 || mmax < 0) { + GSL_ERROR ("domain error", GSL_EDOM); + } + else if(n == 0) { + int j; + result_array[0] = 1.0; + for(j=1; j <= mmax; j++){ + result_array[j] = 0.0; + } + return GSL_SUCCESS; + } + else if(n == 1 && mmax > 0) { + int j; + result_array[0] = x; + result_array[1] = 1.0; + for(j=2; j <= mmax; j++){ + result_array[j] = 0.0; + } + return GSL_SUCCESS; + } + else if( mmax == 0) { + result_array[0] = gsl_sf_hermite_prob(n,x); + return GSL_SUCCESS; + } + else if( mmax == 1) { + result_array[0] = gsl_sf_hermite_prob(n,x); + result_array[1] = n*gsl_sf_hermite_prob(n-1,x); + return GSL_SUCCESS; + } + else { + /* upward recurrence */ + + int k = GSL_MAX_INT(0,n-mmax); + /* Getting a bit lazy here... */ + double p_n0 = gsl_sf_hermite_prob(k,x); /* He_k(x) */ + double p_n1 = gsl_sf_hermite_prob(k+1,x); /* He_{k+1}(x) */ + double p_n = p_n1; + int j=0, c=0; + + for(j=n+1; j <= mmax; j++){ + result_array[j] = 0.0; + } + + result_array[GSL_MIN_INT(n,mmax)] = p_n0; + result_array[GSL_MIN_INT(n,mmax)-1] = p_n1; + + for(j=GSL_MIN_INT(mmax,n)-1; j > 0; j--){ + k++; + p_n = x*p_n1-k*p_n0; + p_n0 = p_n1; + p_n1 = p_n; + + while(( GSL_MIN(fabs(p_n0),fabs(p_n1)) > 2.0*GSL_SQRT_DBL_MIN ) && ( GSL_MAX(fabs(p_n0),fabs(p_n1)) > GSL_SQRT_DBL_MAX )){ + p_n0 *= 0.5; + p_n1 *= 0.5; + p_n = p_n1; + c++; + } + + while(( ( ( fabs(p_n0) < GSL_SQRT_DBL_MIN ) && ( p_n0 != 0) ) || ( ( fabs(p_n1) < GSL_SQRT_DBL_MIN ) && ( p_n1 != 0) ) ) && ( GSL_MAX(fabs(p_n0),fabs(p_n1)) < 0.5*GSL_SQRT_DBL_MAX )){ + p_n0 *= 2.0; + p_n1 *= 2.0; + p_n = p_n1; + c--; + } + + result_array[j-1] = pow2(c)*p_n; + } + + p_n = 1.0; + for(j=1; j <= GSL_MIN_INT(n,mmax); j++){ + p_n = p_n*(n-j+1); + result_array[j] = p_n*result_array[j]; + } + + return GSL_SUCCESS; + } +} + +/* Evaluates the series sum_{j=0}^n a_j*He_j(x) with He_j being the j-th probabilists' Hermite polynomial. + * For improved numerical stability the Clenshaw algorithm (Clenshaw, C. W. (July 1955). "A note on the summation of Chebyshev series". Mathematical Tables and other Aids to Computation 9 (51): 118–110.) adapted to probabilists' Hermite polynomials is used. */ + +int +gsl_sf_hermite_prob_series_e(const int n, const double x, const double * a, gsl_sf_result * result) +{ + if(n < 0) { + DOMAIN_ERROR(result); + } + else if(n == 0) { + result->val = a[0]; + result->err = 0.; + return GSL_SUCCESS; + } + else if(n == 1) { + result->val = a[0]+a[1]*x; + result->err = 2.*GSL_DBL_EPSILON * (fabs(a[0]) + fabs(a[1]*x)) ; + return GSL_SUCCESS; + } + else { + /* downward recurrence: b_n = a_n + x b_{n+1} - (n+1) b_{n+2} */ + + double b0 = 0.; + double b1 = 0.; + double btmp = 0.; + + double e0 = 0.; + double e1 = 0.; + double etmp = e1; + + int j; + + for(j=n; j >= 0; j--){ + btmp = b0; + b0 = a[j]+x*b0-(j+1)*b1; + b1 = btmp; + + etmp = e0; + e0 = (GSL_DBL_EPSILON*fabs(a[j])+fabs(x)*e0+(j+1)*e1); + e1 = etmp; + } + + result->val = b0; + result->err = e0 + fabs(b0)*GSL_DBL_EPSILON; + return GSL_SUCCESS; + } +} + +double +gsl_sf_hermite_prob_series(const int n, const double x, const double * a) +{ + EVAL_RESULT(gsl_sf_hermite_prob_series_e(n, x, a, &result)); +} + +/* Evaluates all physicists' Hermite polynomials up to order nmax at position x. The results are stored in result_array. + * Since all polynomial orders are needed, upward recurrence is employed. */ +int +gsl_sf_hermite_phys_array(const int nmax, const double x, double * result_array) +{ + if(nmax < 0) { + GSL_ERROR ("domain error", GSL_EDOM); + } + else if(nmax == 0) { + result_array[0] = 1.0; + return GSL_SUCCESS; + } + else if(nmax == 1) { + result_array[0] = 1.0; + result_array[1] = 2.0*x; + return GSL_SUCCESS; + } + else { + /* upward recurrence: H_{n+1} = 2x H_n - 2n H_{n-1} */ + + double p_n0 = 1.0; /* H_0(x) */ + double p_n1 = 2.0*x; /* H_1(x) */ + double p_n = p_n1; + int j=0, c=0; + + result_array[0] = 1.0; + result_array[1] = 2.0*x; + + for(j=1; j <= nmax-1; j++){ + p_n = 2.0*x*p_n1-2.0*j*p_n0; + p_n0 = p_n1; + p_n1 = p_n; + + while(( GSL_MIN(fabs(p_n0),fabs(p_n1)) > 2.0*GSL_SQRT_DBL_MIN ) && ( GSL_MAX(fabs(p_n0),fabs(p_n1)) > GSL_SQRT_DBL_MAX )){ + p_n0 *= 0.5; + p_n1 *= 0.5; + p_n = p_n1; + c++; + } + + while(( ( ( fabs(p_n0) < GSL_SQRT_DBL_MIN ) && ( p_n0 != 0) ) || ( ( fabs(p_n1) < GSL_SQRT_DBL_MIN ) && ( p_n1 != 0) ) ) && ( GSL_MAX(fabs(p_n0),fabs(p_n1)) < 0.5*GSL_SQRT_DBL_MAX )){ + p_n0 *= 2.0; + p_n1 *= 2.0; + p_n = p_n1; + c--; + } + + result_array[j+1] = pow2(c)*p_n; + } + + return GSL_SUCCESS; + } +} + + +/* Evaluates the m-th derivative of all physicists' Hermite polynomials up to order nmax at position x. The results are stored in result_array. + * Since all polynomial orders are needed, upward recurrence is employed. */ +int +gsl_sf_hermite_phys_array_der(const int m, const int nmax, const double x, double * result_array) +{ + if(nmax < 0 || m < 0) { + GSL_ERROR ("domain error", GSL_EDOM); + } + else if(m == 0) { + gsl_sf_hermite_phys_array(nmax, x, result_array); + return GSL_SUCCESS; + } + else if(nmax < m) { + int j; + for(j=0; j <= nmax; j++){ + result_array[j] = 0.0; + } + return GSL_SUCCESS; + } + else if(nmax == m) { + int j; + for(j=0; j < m; j++){ + result_array[j] = 0.0; + } + result_array[nmax] = pow2(m)*gsl_sf_fact(m); + return GSL_SUCCESS; + } + else if(nmax == m+1) { + int j; + for(j=0; j < m; j++){ + result_array[j] = 0.0; + } + result_array[nmax-1] = pow2(m)*gsl_sf_fact(m); + result_array[nmax] = result_array[nmax-1]*2*(m+1)*x; + return GSL_SUCCESS; + } + else { + /* upward recurrence: H^{(m)}_{n+1} = 2(n+1)/(n-m+1)*(x H^{(m)}_n - n H^{(m)}_{n-1}) */ + + double p_n0 = pow2(m)*gsl_sf_fact(m); /* H^{(m)}_{m}(x) */ + double p_n1 = p_n0*2*(m+1)*x; /* H^{(m)}_{m+1}(x) */ + double p_n = p_n1; + int j=0, c=0; + + for(j=0; j < m; j++){ + result_array[j] = 0.0; + } + + result_array[m] = p_n0; + result_array[m+1] = p_n1; + + for(j=m+1; j <= nmax-1; j++){ + p_n = (x*p_n1-j*p_n0)*2*(j+1)/(j-m+1); + p_n0 = p_n1; + p_n1 = p_n; + + while(( GSL_MIN(fabs(p_n0),fabs(p_n1)) > 2.0*GSL_SQRT_DBL_MIN ) && ( GSL_MAX(fabs(p_n0),fabs(p_n1)) > GSL_SQRT_DBL_MAX )){ + p_n0 *= 0.5; + p_n1 *= 0.5; + p_n = p_n1; + c++; + } + + while(( ( ( fabs(p_n0) < GSL_SQRT_DBL_MIN ) && ( p_n0 != 0) ) || ( ( fabs(p_n1) < GSL_SQRT_DBL_MIN ) && ( p_n1 != 0) ) ) && ( GSL_MAX(fabs(p_n0),fabs(p_n1)) < 0.5*GSL_SQRT_DBL_MAX )){ + p_n0 *= 2.0; + p_n1 *= 2.0; + p_n = p_n1; + c--; + } + + result_array[j+1] = pow2(c)*p_n; + } + + return GSL_SUCCESS; + } +} + + +/* Evaluates all derivatives (starting from 0) up to the mmax-th derivative of the physicists' Hermite polynomial of order n at position x. The results are stored in result_array. + * Since all polynomial orders are needed, upward recurrence is employed. */ +int +gsl_sf_hermite_phys_der_array(const int mmax, const int n, const double x, double * result_array) +{ + if(n < 0 || mmax < 0) { + GSL_ERROR ("domain error", GSL_EDOM); + } + else if(n == 0) { + int j; + result_array[0] = 1.0; + for(j=1; j <= mmax; j++){ + result_array[j] = 0.0; + } + return GSL_SUCCESS; + } + else if(n == 1 && mmax > 0) { + int j; + result_array[0] = 2*x; + result_array[1] = 1.0; + for(j=2; j <= mmax; j++){ + result_array[j] = 0.0; + } + return GSL_SUCCESS; + } + else if( mmax == 0) { + result_array[0] = gsl_sf_hermite_phys(n,x); + return GSL_SUCCESS; + } + else if( mmax == 1) { + result_array[0] = gsl_sf_hermite_phys(n,x); + result_array[1] = 2*n*gsl_sf_hermite_phys(n-1,x); + return GSL_SUCCESS; + } + else { + /* upward recurrence */ + + int k = GSL_MAX_INT(0,n-mmax); + /* Getting a bit lazy here... */ + double p_n0 = gsl_sf_hermite_phys(k,x); /* H_k(x) */ + double p_n1 = gsl_sf_hermite_phys(k+1,x); /* H_{k+1}(x) */ + double p_n = p_n1; + int j=0, c=0; + + for(j=n+1; j <= mmax; j++){ + result_array[j] = 0.0; + } + + result_array[GSL_MIN_INT(n,mmax)] = p_n0; + result_array[GSL_MIN_INT(n,mmax)-1] = p_n1; + + for(j=GSL_MIN_INT(mmax,n)-1; j > 0; j--){ + k++; + p_n = 2*x*p_n1-2*k*p_n0; + p_n0 = p_n1; + p_n1 = p_n; + + while(( GSL_MIN(fabs(p_n0),fabs(p_n1)) > 2.0*GSL_SQRT_DBL_MIN ) && ( GSL_MAX(fabs(p_n0),fabs(p_n1)) > GSL_SQRT_DBL_MAX )){ + p_n0 *= 0.5; + p_n1 *= 0.5; + p_n = p_n1; + c++; + } + + while(( ( ( fabs(p_n0) < GSL_SQRT_DBL_MIN ) && ( p_n0 != 0) ) || ( ( fabs(p_n1) < GSL_SQRT_DBL_MIN ) && ( p_n1 != 0) ) ) && ( GSL_MAX(fabs(p_n0),fabs(p_n1)) < 0.5*GSL_SQRT_DBL_MAX )){ + p_n0 *= 2.0; + p_n1 *= 2.0; + p_n = p_n1; + c--; + } + + result_array[j-1] = pow2(c)*p_n; + } + + p_n = 1.0; + for(j=1; j <= GSL_MIN_INT(n,mmax); j++){ + p_n = p_n*(n-j+1)*2; + result_array[j] = p_n*result_array[j]; + } + + return GSL_SUCCESS; + } +} + + +/* Evaluates the series sum_{j=0}^n a_j*H_j(x) with H_j being the j-th physicists' Hermite polynomial. + * For improved numerical stability the Clenshaw algorithm (Clenshaw, C. W. (July 1955). "A note on the summation of Chebyshev series". Mathematical Tables and other Aids to Computation 9 (51): 118–110.) adapted to physicists' Hermite polynomials is used. */ +int +gsl_sf_hermite_phys_series_e(const int n, const double x, const double * a, gsl_sf_result * result) +{ + if(n < 0) { + DOMAIN_ERROR(result); + } + else if(n == 0) { + result->val = a[0]; + result->err = 0.; + return GSL_SUCCESS; + } + else if(n == 1) { + result->val = a[0]+a[1]*2.*x; + result->err = 2.*GSL_DBL_EPSILON * (fabs(a[0]) + fabs(a[1]*2.*x)) ; + return GSL_SUCCESS; + } + else { + /* downward recurrence: b_n = a_n + 2x b_{n+1} - 2(n+1) b_{n+2} */ + + double b0 = 0.; + double b1 = 0.; + double btmp = 0.; + + double e0 = 0.; + double e1 = 0.; + double etmp = e1; + + int j; + + for(j=n; j >= 0; j--){ + btmp = b0; + b0 = a[j]+2.*x*b0-2.*(j+1)*b1; + b1 = btmp; + + etmp = e0; + e0 = (GSL_DBL_EPSILON*fabs(a[j])+fabs(2.*x)*e0+2.*(j+1)*e1); + e1 = etmp; + } + + result->val = b0; + result->err = e0 + fabs(b0)*GSL_DBL_EPSILON; + return GSL_SUCCESS; + } +} + +double +gsl_sf_hermite_phys_series(const int n, const double x, const double * a) +{ + EVAL_RESULT(gsl_sf_hermite_phys_series_e(n, x, a, &result)); +} + + +/* Evaluates all Hermite functions up to order nmax at position x. The results are stored in result_array. + * Since all polynomial orders are needed, upward recurrence is employed. */ +int +gsl_sf_hermite_func_array(const int nmax, const double x, double * result_array) +{ + if(nmax < 0) { + GSL_ERROR ("domain error", GSL_EDOM); + } + else if(nmax == 0) { + result_array[0] = exp(-0.5*x*x)/sqrt(M_SQRTPI); + return GSL_SUCCESS; + } + else if(nmax == 1) { + result_array[0] = exp(-0.5*x*x)/sqrt(M_SQRTPI); + result_array[1] = result_array[0]*M_SQRT2*x; + return GSL_SUCCESS; + } + else { + /* upward recurrence: Psi_{n+1} = sqrt(2/(n+1))*x Psi_n - sqrt(n/(n+1)) Psi_{n-1} */ + + double p_n0 = exp(-0.5*x*x)/sqrt(M_SQRTPI); /* Psi_0(x) */ + double p_n1 = p_n0*M_SQRT2*x; /* Psi_1(x) */ + double p_n = p_n1; + int j=0, c=0; + + result_array[0] = p_n0; + result_array[1] = p_n1; + + for (j=1;j<=nmax-1;j++) + { + p_n=(M_SQRT2*x*p_n1-sqrt(j)*p_n0)/sqrt(j+1.); + p_n0=p_n1; + p_n1=p_n; + + while(( GSL_MIN(fabs(p_n0),fabs(p_n1)) > 2.0*GSL_SQRT_DBL_MIN ) && ( GSL_MAX(fabs(p_n0),fabs(p_n1)) > GSL_SQRT_DBL_MAX )){ + p_n0 *= 0.5; + p_n1 *= 0.5; + p_n = p_n1; + c++; + } + + while(( ( ( fabs(p_n0) < GSL_SQRT_DBL_MIN ) && ( p_n0 != 0) ) || ( ( fabs(p_n1) < GSL_SQRT_DBL_MIN ) && ( p_n1 != 0) ) ) && ( GSL_MAX(fabs(p_n0),fabs(p_n1)) < 0.5*GSL_SQRT_DBL_MAX )){ + p_n0 *= 2.0; + p_n1 *= 2.0; + p_n = p_n1; + c--; + } + + result_array[j+1] = pow2(c)*p_n; + } + + return GSL_SUCCESS; + } +} + +/* Evaluates the series sum_{j=0}^n a_j*Psi_j(x) with Psi_j being the j-th Hermite function. + * For improved numerical stability the Clenshaw algorithm (Clenshaw, C. W. (July 1955). "A note on the summation of Chebyshev series". Mathematical Tables and other Aids to Computation 9 (51): 118–110.) adapted to Hermite functions is used. */ + +int +gsl_sf_hermite_func_series_e(const int n, const double x, const double * a, gsl_sf_result * result) +{ + if(n < 0) { + DOMAIN_ERROR(result); + } + else if(n == 0) { + result->val = a[0]*exp(-0.5*x*x)/sqrt(M_SQRTPI); + result->err = GSL_DBL_EPSILON*fabs(result->val); + return GSL_SUCCESS; + } + else if(n == 1) { + result->val = (a[0]+a[1]*M_SQRT2*x)*exp(-0.5*x*x)/sqrt(M_SQRTPI); + result->err = 2.*GSL_DBL_EPSILON*(fabs(a[0])+fabs(a[1]*M_SQRT2*x))*exp(-0.5*x*x)/sqrt(M_SQRTPI); + return GSL_SUCCESS; + } + else { + /* downward recurrence: b_n = a_n + sqrt(2/(n+1))*x b_{n+1} - sqrt((n+1)/(n+2)) b_{n+2} */ + + double b0 = 0.; + double b1 = 0.; + double btmp = 0.; + + double e0 = 0.; + double e1 = 0.; + double etmp = e1; + + int j; + + for(j=n; j >= 0; j--){ + btmp = b0; + b0 = a[j]+sqrt(2./(j+1))*x*b0-sqrt((j+1.)/(j+2.))*b1; + b1 = btmp; + + etmp = e0; + e0 = (GSL_DBL_EPSILON*fabs(a[j])+sqrt(2./(j+1))*fabs(x)*e0+sqrt((j+1.)/(j+2.))*e1); + e1 = etmp; + } + + result->val = b0*exp(-0.5*x*x)/sqrt(M_SQRTPI); + result->err = e0 + fabs(result->val)*GSL_DBL_EPSILON; + return GSL_SUCCESS; + } +} + +double +gsl_sf_hermite_func_series(const int n, const double x, const double * a) +{ + EVAL_RESULT(gsl_sf_hermite_func_series_e(n, x, a, &result)); +} + + +/* Evaluates the m-th derivative of the Hermite function of order n at position x. + * A summation including upward recurrences is used. */ +int +gsl_sf_hermite_func_der_e(const int m, const int n, const double x, gsl_sf_result * result) +{ + /* FIXME: asymptotic formula! */ + if(m < 0 || n < 0) { + DOMAIN_ERROR(result); + } + else if(m == 0){ + return gsl_sf_hermite_func_e(n,x,result); + } + else{ + int j=0, c=0; + double r,er,b; + double h0 = 1.; + double h1 = x; + double eh0 = GSL_DBL_EPSILON; + double eh1 = GSL_DBL_EPSILON; + double p0 = 1.; + double p1 = M_SQRT2*x; + double ep0 = GSL_DBL_EPSILON; + double ep1 = M_SQRT2*GSL_DBL_EPSILON; + double f = 1.; + for (j=GSL_MAX_INT(1,n-m+1);j<=n;j++) + { + f *= sqrt(2.*j); + } + if (m>n) + { + f = (GSL_IS_ODD(m-n)?-f:f); + for (j=0;j 2.0*GSL_SQRT_DBL_MIN ) && ( GSL_MAX(fabs(h0),fabs(h1)) > GSL_SQRT_DBL_MAX )){ + h0 *= 0.5; + h1 *= 0.5; + eh0 *= 0.5; + eh1 *= 0.5; + c++; + } + + while(( ( (fabs(h0) < GSL_SQRT_DBL_MIN) && (h0 != 0) ) || ( (fabs(h1) < GSL_SQRT_DBL_MIN) && (h1 != 0) ) ) && ( GSL_MAX(fabs(h0),fabs(h1)) < 0.5*GSL_SQRT_DBL_MAX )){ + h0 *= 2.0; + h1 *= 2.0; + eh0 *= 2.0; + eh1 *= 2.0; + c--; + } + + } + h0 *= pow2(c); + h1 *= pow2(c); + eh0 *= pow2(c); + eh1 *= pow2(c); + + b = 0.; + c = 0; + for (j=1;j<=n-m;j++) + { + b = (M_SQRT2*x*p1-sqrt(j)*p0)/sqrt(j+1.); + p0 = p1; + p1 = b; + + b = (M_SQRT2*fabs(x)*ep1+sqrt(j)*ep0)/sqrt(j+1.); + ep0 = ep1; + ep1 = b; + + while(( GSL_MIN(fabs(p0),fabs(p1)) > 2.0*GSL_SQRT_DBL_MIN ) && ( GSL_MAX(fabs(p0),fabs(p1)) > GSL_SQRT_DBL_MAX )){ + p0 *= 0.5; + p1 *= 0.5; + ep0 *= 0.5; + ep1 *= 0.5; + c++; + } + + while(( ( (fabs(p0) < GSL_SQRT_DBL_MIN) && (p0 != 0) ) || ( (fabs(p1) < GSL_SQRT_DBL_MIN) && (p1 != 0) ) ) && ( GSL_MAX(fabs(p0),fabs(p1)) < 0.5*GSL_SQRT_DBL_MAX )){ + p0 = p0*2; + p1 = p1*2; + ep0 = ep0*2; + ep1 = ep1*2; + c--; + } + + } + p0 *= pow2(c); + p1 *= pow2(c); + ep0 *= pow2(c); + ep1 *= pow2(c); + + c = 0; + b = 0.; + r = 0.; + er = 0.; + for (j=GSL_MAX_INT(0,m-n);j<=m;j++) + { + r += f*h0*p0; + er += eh0*fabs(f*p0)+ep0*fabs(f*h0)+GSL_DBL_EPSILON*fabs(f*h0*p0); + + b = x*h1-(j+1.)*h0; + h0 = h1; + h1 = b; + + b = 0.5*(fabs(x)*eh1+(j+1.)*eh0); + eh0 = eh1; + eh1 = b; + + b = (M_SQRT2*x*p1-sqrt(n-m+j+1.)*p0)/sqrt(n-m+j+2.); + p0 = p1; + p1 = b; + + b = 0.5*(M_SQRT2*fabs(x)*ep1+sqrt(n-m+j+1.)*ep0)/sqrt(n-m+j+2.); + ep0 = ep1; + ep1 = b; + + f *= -(m-j)/(j+1.)/sqrt(n-m+j+1.)*M_SQRT1_2; + + while(( (fabs(h0) > 2.0*GSL_SQRT_DBL_MIN) && (fabs(h1) > 2.0*GSL_SQRT_DBL_MIN) && (fabs(p0) > 2.0*GSL_SQRT_DBL_MIN) && (fabs(p1) > 2.0*GSL_SQRT_DBL_MIN) && (fabs(r) > 4.0*GSL_SQRT_DBL_MIN) ) && ( (fabs(h0) > GSL_SQRT_DBL_MAX) || (fabs(h1) > GSL_SQRT_DBL_MAX) || (fabs(p0) > GSL_SQRT_DBL_MAX) || (fabs(p1) > GSL_SQRT_DBL_MAX) || (fabs(r) > GSL_SQRT_DBL_MAX) )){ + h0 *= 0.5; + h1 *= 0.5; + eh0 *= 0.5; + eh1 *= 0.5; + p0 *= 0.5; + p1 *= 0.5; + ep0 *= 0.5; + ep1 *= 0.5; + r *= 0.25; + er *= 0.25; + c++; + } + + while(( ( (fabs(h0) < GSL_SQRT_DBL_MIN) && (h0 != 0) ) || ( (fabs(h1) < GSL_SQRT_DBL_MIN) && (h1 != 0) ) || ( (fabs(p0) < GSL_SQRT_DBL_MIN) && (p0 != 0) ) || ( (fabs(p1) < GSL_SQRT_DBL_MIN) && (p1 != 0) ) || ( (fabs(r) < GSL_SQRT_DBL_MIN) && (r != 0) ) ) && ( (fabs(h0) < 0.5*GSL_SQRT_DBL_MAX) && (fabs(h1) < 0.5*GSL_SQRT_DBL_MAX) && (fabs(p0) < 0.5*GSL_SQRT_DBL_MAX) && (fabs(p1) < 0.5*GSL_SQRT_DBL_MAX) && (fabs(r) < 0.25*GSL_SQRT_DBL_MAX) )){ + p0 *= 2.0; + p1 *= 2.0; + ep0 *= 2.0; + ep1 *= 2.0; + h0 *= 2.0; + h1 *= 2.0; + eh0 *= 2.0; + eh1 *= 2.0; + r *= 4.0; + er *= 4.0; + c--; + } + + } + + r *= pow2(2*c); + er *= pow2(2*c); + result->val = r*exp(-0.5*x*x)/sqrt(M_SQRTPI); + result->err = er*fabs(exp(-0.5*x*x)/sqrt(M_SQRTPI)) + GSL_DBL_EPSILON*fabs(result->val); + return GSL_SUCCESS; + } +} + +double +gsl_sf_hermite_func_der(const int m, const int n, const double x) +{ + EVAL_RESULT(gsl_sf_hermite_func_der_e(m, n, x, &result)); +} + +static double +H_zero_init(const int n, const int k) +{ + double p = 1., x = 1., y = 1.; + if (k == 1 && n > 50) { + x = (GSL_IS_ODD(n)?1./sqrt((n-1)/6.):1./sqrt(0.5*n)); + } + else { + p = -0.7937005259840997373758528196*gsl_sf_airy_zero_Ai(n/2-k+1); + x = sqrt(2*n+1.); + y = pow(2*n+1.,1/6.); + x = x - p/y - 0.1*p*p/(x*y*y) + (9/280. - p*p*p*11/350.)/(x*x*x) + (p*277/12600. - gsl_sf_pow_int(p,4)*823/63000.)/gsl_sf_pow_int(x,4)/y; + } + p = acos(x/sqrt(2*n+1.)); + y = M_PI*(-2*(n/2-k)-1.5)/(n+0.5); + if(gsl_fcmp(y,sin(2.*p)-2*p,GSL_SQRT_DBL_EPSILON)==0) return x; /* initial approx sufficiently accurate */ + if (y > -GSL_DBL_EPSILON) return sqrt(2*n+1.); + if (p < GSL_DBL_EPSILON) p = GSL_DBL_EPSILON; + if (p > M_PI_2) p = M_PI_2; + if (sin(2.*p)-2*p > y){ + x = GSL_MAX((sin(2.*p)-2*p-y)/4.,GSL_SQRT_DBL_EPSILON); + do{ + x *= 2.; + p += x; + } while (sin(2.*p)-2*p > y); + } + do { + x = p; + p -= (sin(2.*p)-2.*p-y)/(2.*cos(2.*p)-2.); + if (p<0.||p>M_PI_2) p = M_PI_2; + } while (gsl_fcmp(x,p,100*GSL_DBL_EPSILON)!=0); + return sqrt(2*n+1.)*cos(p); +} + + +/* lookup table for the positive zeros of the probabilists' Hermite polynomials of order 3 through 20 */ +static double He_zero_tab[99] = { + 1.73205080756887729352744634151, + 0.741963784302725857648513596726, + 2.33441421833897723931751226721, + 1.35562617997426586583052129087, + 2.85697001387280565416230426401, + 0.616706590192594152193686099399, + 1.88917587775371067550566789858, + 3.32425743355211895236183546247, + 1.154405394739968127239597758838, + 2.36675941073454128861885646856, + 3.75043971772574225630392202571, + 0.539079811351375108072461918694, + 1.63651904243510799922544657297, + 2.80248586128754169911301080618, + 4.14454718612589433206019783917, + 1.023255663789132524828148225810, + 2.07684797867783010652215614374, + 3.20542900285646994336567590292, + 4.51274586339978266756667884317, + 0.484935707515497653046233483105, + 1.46598909439115818325066466416, + 2.48432584163895458087625118368, + 3.58182348355192692277623675546, + 4.85946282833231215015516494660, + 0.928868997381063940144111999584, + 1.87603502015484584534137013967, + 2.86512316064364499771968407254, + 3.93616660712997692868589612142, + 5.18800122437487094818666404539, + 0.444403001944138945299732445510, + 1.34037519715161672153112945211, + 2.25946445100079912386492979448, + 3.22370982877009747166319001956, + 4.27182584793228172295999293076, + 5.50090170446774760081221630899, + 0.856679493519450033897376121795, + 1.72541837958823916151095838741, + 2.62068997343221478063807762201, + 3.56344438028163409162493844661, + 4.59139844893652062705231872720, + 5.80016725238650030586450565322, + 0.412590457954601838167454145167, + 1.24268895548546417895063983219, + 2.08834474570194417097139675101, + 2.96303657983866750254927123447, + 3.88692457505976938384755016476, + 4.89693639734556468372449782879, + 6.08740954690129132226890147034, + 0.799129068324547999424888414207, + 1.60671006902872973652322479373, + 2.43243682700975804116311571682, + 3.28908242439876638890856229770, + 4.19620771126901565957404160583, + 5.19009359130478119946445431715, + 6.36394788882983831771116094427, + 0.386760604500557347721047189801, + 1.16382910055496477419336819907, + 1.95198034571633346449212362880, + 2.76024504763070161684598142269, + 3.60087362417154828824902745506, + 4.49295530252001124266582263095, + 5.47222570594934308841242925805, + 6.63087819839312848022981922233, + 0.751842600703896170737870774614, + 1.50988330779674075905491513417, + 2.28101944025298889535537879396, + 3.07379717532819355851658337833, + 3.90006571719800990903311840097, + 4.77853158962998382710540812497, + 5.74446007865940618125547815768, + 6.88912243989533223256205432938, + 0.365245755507697595916901619097, + 1.09839551809150122773848360538, + 1.83977992150864548966395498992, + 2.59583368891124032910545091458, + 3.37473653577809099529779309480, + 4.18802023162940370448450911428, + 5.05407268544273984538327527397, + 6.00774591135959752029303858752, + 7.13946484914647887560975631213, + 0.712085044042379940413609979021, + 1.42887667607837287134157901452, + 2.15550276131693514033871248449, + 2.89805127651575312007902775275, + 3.66441654745063847665304033851, + 4.46587262683103133615452574019, + 5.32053637733603803162823765939, + 6.26289115651325170419416064557, + 7.38257902403043186766326977122, + 0.346964157081355927973322447164, + 1.04294534880275103146136681143, + 1.74524732081412671493067861704, + 2.45866361117236775131735057433, + 3.18901481655338941485371744116, + 3.94396735065731626033176813604, + 4.73458133404605534390170946748, + 5.57873880589320115268040332802, + 6.51059015701365448636289263918, + 7.61904854167975829138128156060 +}; + +/* Computes the s-th zero the probabilists' Hermite polynomial of order n. +A Newton iteration using a continued fraction representation adapted from [E.T. Whittaker (1914), On the continued fractions which represent the functions of Hermite and other functions defined by differential equations, Proceedings of the Edinburgh Mathematical Society, 32, 65-74] is performed with the initial approximation from [Arpad Elbert and Martin E. Muldoon, Approximations for zeros of Hermite functions, pp. 117-126 in D. Dominici and R. S. Maier, eds, "Special Functions and Orthogonal Polynomials", Contemporary Mathematics, vol 471 (2008)] refined via the bisection method. */ +int +gsl_sf_hermite_prob_zero_e(const int n, const int s, gsl_sf_result * result) +{ + if(n <= 0 || s < 0 || s > n/2) { + DOMAIN_ERROR(result); + } + else if(s == 0) { + if (GSL_IS_ODD(n) == 1) { + result->val = 0.; + result->err = 0.; + return GSL_SUCCESS; + } + else { + DOMAIN_ERROR(result); + } + } + else if(n == 2) { + result->val = 1.; + result->err = 0.; + return GSL_SUCCESS; + } + else if(n < 21) { + result->val = He_zero_tab[(GSL_IS_ODD(n)?n/2:0)+((n/2)*(n/2-1))+s-2]; + result->err = GSL_DBL_EPSILON*(result->val); + return GSL_SUCCESS; + } + else { + double d = 1., x = 1., x0 = 1.; + int j; + x = H_zero_init(n,s) * M_SQRT2; + do { + x0 = x; + d = 0.; + for (j=1; jval = x; + result->err = 2*GSL_DBL_EPSILON*x + fabs(x-x0); + return GSL_SUCCESS; + } +} + +double +gsl_sf_hermite_prob_zero(const int n, const int s) +{ + EVAL_RESULT(gsl_sf_hermite_prob_zero_e(n, s, &result)); +} + +/* lookup table for the positive zeros of the physicists' Hermite polynomials of order 3 through 20 */ +static double H_zero_tab[99] = { + 1.22474487139158904909864203735, + 0.524647623275290317884060253835, + 1.65068012388578455588334111112, + 0.958572464613818507112770593893, + 2.02018287045608563292872408814, + 0.436077411927616508679215948251, + 1.335849074013696949714895282970, + 2.35060497367449222283392198706, + 0.816287882858964663038710959027, + 1.67355162876747144503180139830, + 2.65196135683523349244708200652, + 0.381186990207322116854718885584, + 1.157193712446780194720765779063, + 1.98165675669584292585463063977, + 2.93063742025724401922350270524, + 0.723551018752837573322639864579, + 1.46855328921666793166701573925, + 2.26658058453184311180209693284, + 3.19099320178152760723004779538, + 0.342901327223704608789165025557, + 1.03661082978951365417749191676, + 1.75668364929988177345140122011, + 2.53273167423278979640896079775, + 3.43615911883773760332672549432, + 0.656809566882099765024611575383, + 1.32655708449493285594973473558, + 2.02594801582575533516591283121, + 2.78329009978165177083671870152, + 3.66847084655958251845837146485, + 0.314240376254359111276611634095, + 0.947788391240163743704578131060, + 1.59768263515260479670966277090, + 2.27950708050105990018772856942, + 3.02063702512088977171067937518, + 3.88972489786978191927164274724, + 0.605763879171060113080537108602, + 1.22005503659074842622205526637, + 1.85310765160151214200350644316, + 2.51973568567823788343040913628, + 3.24660897837240998812205115236, + 4.10133759617863964117891508007, + 0.291745510672562078446113075799, + 0.878713787329399416114679311861, + 1.47668273114114087058350654421, + 2.09518325850771681573497272630, + 2.74847072498540256862499852415, + 3.46265693360227055020891736115, + 4.30444857047363181262129810037, + 0.565069583255575748526020337198, + 1.13611558521092066631913490556, + 1.71999257518648893241583152515, + 2.32573248617385774545404479449, + 2.96716692790560324848896036355, + 3.66995037340445253472922383312, + 4.49999070730939155366438053053, + 0.273481046138152452158280401965, + 0.822951449144655892582454496734, + 1.38025853919888079637208966969, + 1.95178799091625397743465541496, + 2.54620215784748136215932870545, + 3.17699916197995602681399455926, + 3.86944790486012269871942409801, + 4.68873893930581836468849864875, + 0.531633001342654731349086553718, + 1.06764872574345055363045773799, + 1.61292431422123133311288254454, + 2.17350282666662081927537907149, + 2.75776291570388873092640349574, + 3.37893209114149408338327069289, + 4.06194667587547430689245559698, + 4.87134519367440308834927655662, + 0.258267750519096759258116098711, + 0.776682919267411661316659462284, + 1.30092085838961736566626555439, + 1.83553160426162889225383944409, + 2.38629908916668600026459301424, + 2.96137750553160684477863254906, + 3.57376906848626607950067599377, + 4.24811787356812646302342016090, + 5.04836400887446676837203757885, + 0.503520163423888209373811765050, + 1.01036838713431135136859873726, + 1.52417061939353303183354859367, + 2.04923170985061937575050838669, + 2.59113378979454256492128084112, + 3.15784881834760228184318034120, + 3.76218735196402009751489394104, + 4.42853280660377943723498532226, + 5.22027169053748216460967142500, + 0.245340708300901249903836530634, + 0.737473728545394358705605144252, + 1.23407621539532300788581834696, + 1.73853771211658620678086566214, + 2.25497400208927552308233334473, + 2.78880605842813048052503375640, + 3.34785456738321632691492452300, + 3.94476404011562521037562880052, + 4.60368244955074427307767524898, + 5.38748089001123286201690041068 +}; + +/* Computes the s-th zero the physicists' Hermite polynomial of order n, thus also the s-th zero of the Hermite function of order n. +A Newton iteration using a continued fraction representation adapted from [E.T. Whittaker (1914), On the continued fractions which represent the functions of Hermite and other functions defined by differential equations, Proceedings of the Edinburgh Mathematical Society, 32, 65-74] is performed with the initial approximation from [Arpad Elbert and Martin E. Muldoon, Approximations for zeros of Hermite functions, pp. 117-126 in D. Dominici and R. S. Maier, eds, "Special Functions and Orthogonal Polynomials", Contemporary Mathematics, vol 471 (2008)] refined via the bisection method. */ +int +gsl_sf_hermite_phys_zero_e(const int n, const int s, gsl_sf_result * result) +{ + if(n <= 0 || s < 0 || s > n/2) { + DOMAIN_ERROR(result); + } + else if(s == 0) { + if (GSL_IS_ODD(n) == 1) { + result->val = 0.; + result->err = 0.; + return GSL_SUCCESS; + } + else { + DOMAIN_ERROR(result); + } + } + else if(n == 2) { + result->val = M_SQRT1_2; + result->err = 0.; + return GSL_SUCCESS; + } + else if(n < 21) { + result->val = H_zero_tab[(GSL_IS_ODD(n)?n/2:0)+((n/2)*(n/2-1))+s-2]; + result->err = GSL_DBL_EPSILON*(result->val); + return GSL_SUCCESS; + } + else { + double d = 1., x = 1., x0 = 1.; + int j; + x = H_zero_init(n,s); + do { + x0 = x; + d = 0.; + for (j=1; jval = x; + result->err = 2*GSL_DBL_EPSILON*x + fabs(x-x0); + return GSL_SUCCESS; + } +} + +double +gsl_sf_hermite_phys_zero(const int n, const int s) +{ + EVAL_RESULT(gsl_sf_hermite_phys_zero_e(n, s, &result)); +} + +int +gsl_sf_hermite_func_zero_e(const int n, const int s, gsl_sf_result * result) +{ + return gsl_sf_hermite_phys_zero_e(n, s, result); +} + +double +gsl_sf_hermite_func_zero(const int n, const int s) +{ + EVAL_RESULT(gsl_sf_hermite_func_zero_e(n, s, &result)); +} diff --git a/gsl-2.5/specfunc/hermite.lo b/gsl-2.5/specfunc/hermite.lo new file mode 100644 index 00000000..f1f3f9e0 --- /dev/null +++ b/gsl-2.5/specfunc/hermite.lo @@ -0,0 +1,12 @@ +# hermite.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/hermite.o' + +# Name of the non-PIC object +non_pic_object='hermite.o' + diff --git a/gsl-2.5/specfunc/hyperg.c b/gsl-2.5/specfunc/hyperg.c new file mode 100644 index 00000000..7188e9a1 --- /dev/null +++ b/gsl-2.5/specfunc/hyperg.c @@ -0,0 +1,291 @@ +/* specfunc/hyperg.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ + +/* Miscellaneous implementations of use + * for evaluation of hypergeometric functions. + */ +#include +#include +#include +#include +#include + +#include "error.h" +#include "hyperg.h" + +#define SUM_LARGE (1.0e-5*GSL_DBL_MAX) + + +int +gsl_sf_hyperg_1F1_series_e(const double a, const double b, const double x, + gsl_sf_result * result + ) +{ + double an = a; + double bn = b; + double n = 1.0; + double del = 1.0; + double abs_del = 1.0; + double max_abs_del = 1.0; + double sum_val = 1.0; + double sum_err = 0.0; + + while(abs_del/fabs(sum_val) > 0.25*GSL_DBL_EPSILON) { + double u, abs_u; + + if(bn == 0.0) { + DOMAIN_ERROR(result); + } + + if(an == 0.0) { + result->val = sum_val; + result->err = sum_err; + result->err += 2.0 * GSL_DBL_EPSILON * n * fabs(sum_val); + return GSL_SUCCESS; + } + + if (n > 10000.0) { + result->val = sum_val; + result->err = sum_err; + GSL_ERROR ("hypergeometric series failed to converge", GSL_EFAILED); + } + + u = x * (an/(bn*n)); + abs_u = fabs(u); + if(abs_u > 1.0 && max_abs_del > GSL_DBL_MAX/abs_u) { + result->val = sum_val; + result->err = fabs(sum_val); + GSL_ERROR ("overflow", GSL_EOVRFLW); + } + del *= u; + sum_val += del; + if(fabs(sum_val) > SUM_LARGE) { + result->val = sum_val; + result->err = fabs(sum_val); + GSL_ERROR ("overflow", GSL_EOVRFLW); + } + + abs_del = fabs(del); + max_abs_del = GSL_MAX_DBL(abs_del, max_abs_del); + sum_err += 2.0*GSL_DBL_EPSILON*abs_del; + + an += 1.0; + bn += 1.0; + n += 1.0; + } + + result->val = sum_val; + result->err = sum_err; + result->err += abs_del; + result->err += 2.0 * GSL_DBL_EPSILON * n * fabs(sum_val); + + return GSL_SUCCESS; +} + + +int +gsl_sf_hyperg_1F1_large_b_e(const double a, const double b, const double x, gsl_sf_result * result) +{ + if(fabs(x/b) < 1.0) { + const double u = x/b; + const double v = 1.0/(1.0-u); + const double pre = pow(v,a); + const double uv = u*v; + const double uv2 = uv*uv; + const double t1 = a*(a+1.0)/(2.0*b)*uv2; + const double t2a = a*(a+1.0)/(24.0*b*b)*uv2; + const double t2b = 12.0 + 16.0*(a+2.0)*uv + 3.0*(a+2.0)*(a+3.0)*uv2; + const double t2 = t2a*t2b; + result->val = pre * (1.0 - t1 + t2); + result->err = pre * GSL_DBL_EPSILON * (1.0 + fabs(t1) + fabs(t2)); + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else { + DOMAIN_ERROR(result); + } +} + + +int +gsl_sf_hyperg_U_large_b_e(const double a, const double b, const double x, + gsl_sf_result * result, + double * ln_multiplier + ) +{ + double N = floor(b); /* b = N + eps */ + double eps = b - N; + + if(fabs(eps) < GSL_SQRT_DBL_EPSILON) { + double lnpre_val; + double lnpre_err; + gsl_sf_result M; + if(b > 1.0) { + double tmp = (1.0-b)*log(x); + gsl_sf_result lg_bm1; + gsl_sf_result lg_a; + gsl_sf_lngamma_e(b-1.0, &lg_bm1); + gsl_sf_lngamma_e(a, &lg_a); + lnpre_val = tmp + x + lg_bm1.val - lg_a.val; + lnpre_err = lg_bm1.err + lg_a.err + GSL_DBL_EPSILON * (fabs(x) + fabs(tmp)); + gsl_sf_hyperg_1F1_large_b_e(1.0-a, 2.0-b, -x, &M); + } + else { + gsl_sf_result lg_1mb; + gsl_sf_result lg_1pamb; + gsl_sf_lngamma_e(1.0-b, &lg_1mb); + gsl_sf_lngamma_e(1.0+a-b, &lg_1pamb); + lnpre_val = lg_1mb.val - lg_1pamb.val; + lnpre_err = lg_1mb.err + lg_1pamb.err; + gsl_sf_hyperg_1F1_large_b_e(a, b, x, &M); + } + + if(lnpre_val > GSL_LOG_DBL_MAX-10.0) { + result->val = M.val; + result->err = M.err; + *ln_multiplier = lnpre_val; + GSL_ERROR ("overflow", GSL_EOVRFLW); + } + else { + gsl_sf_result epre; + int stat_e = gsl_sf_exp_err_e(lnpre_val, lnpre_err, &epre); + result->val = epre.val * M.val; + result->err = epre.val * M.err + epre.err * fabs(M.val); + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + *ln_multiplier = 0.0; + return stat_e; + } + } + else { + double omb_lnx = (1.0-b)*log(x); + gsl_sf_result lg_1mb; double sgn_1mb; + gsl_sf_result lg_1pamb; double sgn_1pamb; + gsl_sf_result lg_bm1; double sgn_bm1; + gsl_sf_result lg_a; double sgn_a; + gsl_sf_result M1, M2; + double lnpre1_val, lnpre2_val; + double lnpre1_err, lnpre2_err; + double sgpre1, sgpre2; + gsl_sf_hyperg_1F1_large_b_e( a, b, x, &M1); + gsl_sf_hyperg_1F1_large_b_e(1.0-a, 2.0-b, x, &M2); + + gsl_sf_lngamma_sgn_e(1.0-b, &lg_1mb, &sgn_1mb); + gsl_sf_lngamma_sgn_e(1.0+a-b, &lg_1pamb, &sgn_1pamb); + + gsl_sf_lngamma_sgn_e(b-1.0, &lg_bm1, &sgn_bm1); + gsl_sf_lngamma_sgn_e(a, &lg_a, &sgn_a); + + lnpre1_val = lg_1mb.val - lg_1pamb.val; + lnpre1_err = lg_1mb.err + lg_1pamb.err; + lnpre2_val = lg_bm1.val - lg_a.val - omb_lnx - x; + lnpre2_err = lg_bm1.err + lg_a.err + GSL_DBL_EPSILON * (fabs(omb_lnx)+fabs(x)); + sgpre1 = sgn_1mb * sgn_1pamb; + sgpre2 = sgn_bm1 * sgn_a; + + if(lnpre1_val > GSL_LOG_DBL_MAX-10.0 || lnpre2_val > GSL_LOG_DBL_MAX-10.0) { + double max_lnpre_val = GSL_MAX(lnpre1_val,lnpre2_val); + double max_lnpre_err = GSL_MAX(lnpre1_err,lnpre2_err); + double lp1 = lnpre1_val - max_lnpre_val; + double lp2 = lnpre2_val - max_lnpre_val; + double t1 = sgpre1*exp(lp1); + double t2 = sgpre2*exp(lp2); + result->val = t1*M1.val + t2*M2.val; + result->err = fabs(t1)*M1.err + fabs(t2)*M2.err; + result->err += GSL_DBL_EPSILON * exp(max_lnpre_err) * (fabs(t1*M1.val) + fabs(t2*M2.val)); + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + *ln_multiplier = max_lnpre_val; + GSL_ERROR ("overflow", GSL_EOVRFLW); + } + else { + double t1 = sgpre1*exp(lnpre1_val); + double t2 = sgpre2*exp(lnpre2_val); + result->val = t1*M1.val + t2*M2.val; + result->err = fabs(t1) * M1.err + fabs(t2)*M2.err; + result->err += GSL_DBL_EPSILON * (exp(lnpre1_err)*fabs(t1*M1.val) + exp(lnpre2_err)*fabs(t2*M2.val)); + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + *ln_multiplier = 0.0; + return GSL_SUCCESS; + } + } +} + + + +/* [Carlson, p.109] says the error in truncating this asymptotic series + * is less than the absolute value of the first neglected term. + * + * A termination argument is provided, so that the series will + * be summed at most up to n=n_trunc. If n_trunc is set negative, + * then the series is summed until it appears to start diverging. + */ +int +gsl_sf_hyperg_2F0_series_e(const double a, const double b, const double x, + int n_trunc, + gsl_sf_result * result + ) +{ + const int maxiter = 2000; + double an = a; + double bn = b; + double n = 1.0; + double sum = 1.0; + double del = 1.0; + double abs_del = 1.0; + double max_abs_del = 1.0; + double last_abs_del = 1.0; + + while(abs_del/fabs(sum) > GSL_DBL_EPSILON && n < maxiter) { + + double u = an * (bn/n * x); + double abs_u = fabs(u); + + if(abs_u > 1.0 && (max_abs_del > GSL_DBL_MAX/abs_u)) { + result->val = sum; + result->err = fabs(sum); + GSL_ERROR ("overflow", GSL_EOVRFLW); + } + + del *= u; + sum += del; + + abs_del = fabs(del); + + if(abs_del > last_abs_del) break; /* series is probably starting to grow */ + + last_abs_del = abs_del; + max_abs_del = GSL_MAX(abs_del, max_abs_del); + + an += 1.0; + bn += 1.0; + n += 1.0; + + if(an == 0.0 || bn == 0.0) break; /* series terminated */ + + if(n_trunc >= 0 && n >= n_trunc) break; /* reached requested timeout */ + } + + result->val = sum; + result->err = GSL_DBL_EPSILON * n + abs_del; + if(n >= maxiter) + GSL_ERROR ("error", GSL_EMAXITER); + else + return GSL_SUCCESS; +} diff --git a/gsl-2.5/specfunc/hyperg.h b/gsl-2.5/specfunc/hyperg.h new file mode 100644 index 00000000..37d11b04 --- /dev/null +++ b/gsl-2.5/specfunc/hyperg.h @@ -0,0 +1,78 @@ +/* specfunc/hyperg.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ + +/* Miscellaneous implementations of use + * for evaluation of hypergeometric functions. + */ +#ifndef _HYPERG_H_ +#define _HYPERG_H_ + +#include + + +/* Direct implementation of 1F1 series. + */ +int +gsl_sf_hyperg_1F1_series_e(const double a, const double b, const double x, gsl_sf_result * result); + + +/* Implementation of the 1F1 related to the + * incomplete gamma function: 1F1(1,b,x), b >= 1. + */ +int +gsl_sf_hyperg_1F1_1_e(double b, double x, gsl_sf_result * result); + + +/* 1F1(1,b,x) for integer b >= 1 + */ +int +gsl_sf_hyperg_1F1_1_int_e(int b, double x, gsl_sf_result * result); + + +/* Implementation of large b asymptotic. + * [Bateman v. I, 6.13.3 (18)] + * [Luke, The Special Functions and Their Approximations v. I, p. 129, 4.8 (4)] + * + * a^2 << b, |x|/|b| < 1 - delta + */ +int +gsl_sf_hyperg_1F1_large_b_e(const double a, const double b, const double x, gsl_sf_result * result); + + +/* Implementation of large b asymptotic. + * + * Assumes a > 0 is small, x > 0, and |x|<|b|. + */ +int +gsl_sf_hyperg_U_large_b_e(const double a, const double b, const double x, + gsl_sf_result * result, + double * ln_multiplier + ); + + +/* Implementation of 2F0 asymptotic series. + */ +int +gsl_sf_hyperg_2F0_series_e(const double a, const double b, const double x, int n_trunc, + gsl_sf_result * result); + + +#endif /* !_HYPERG_H_ */ diff --git a/gsl-2.5/specfunc/hyperg.lo b/gsl-2.5/specfunc/hyperg.lo new file mode 100644 index 00000000..6a90451c --- /dev/null +++ b/gsl-2.5/specfunc/hyperg.lo @@ -0,0 +1,12 @@ +# hyperg.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/hyperg.o' + +# Name of the non-PIC object +non_pic_object='hyperg.o' + diff --git a/gsl-2.5/specfunc/hyperg_0F1.c b/gsl-2.5/specfunc/hyperg_0F1.c new file mode 100644 index 00000000..9461bad7 --- /dev/null +++ b/gsl-2.5/specfunc/hyperg_0F1.c @@ -0,0 +1,178 @@ +/* specfunc/hyperg_0F1.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ + +#include +#include +#include +#include +#include +#include +#include + +#include "error.h" + +#define locEPS (1000.0*GSL_DBL_EPSILON) + + +/* Evaluate bessel_I(nu, x), allowing nu < 0. + * This is fine here because we do not not allow + * nu to be a negative integer. + * x > 0. + */ +static +int +hyperg_0F1_bessel_I(const double nu, const double x, gsl_sf_result * result) +{ + if(x > GSL_LOG_DBL_MAX) { + OVERFLOW_ERROR(result); + } + + if(nu < 0.0) { + const double anu = -nu; + const double s = 2.0/M_PI * sin(anu*M_PI); + const double ex = exp(x); + gsl_sf_result I; + gsl_sf_result K; + int stat_I = gsl_sf_bessel_Inu_scaled_e(anu, x, &I); + int stat_K = gsl_sf_bessel_Knu_scaled_e(anu, x, &K); + result->val = ex * I.val + s * (K.val / ex); + result->err = ex * I.err + fabs(s * K.err/ex); + result->err += fabs(s * (K.val/ex)) * GSL_DBL_EPSILON * anu * M_PI; + return GSL_ERROR_SELECT_2(stat_K, stat_I); + } + else { + const double ex = exp(x); + gsl_sf_result I; + int stat_I = gsl_sf_bessel_Inu_scaled_e(nu, x, &I); + result->val = ex * I.val; + result->err = ex * I.err + GSL_DBL_EPSILON * fabs(result->val); + return stat_I; + } +} + + +/* Evaluate bessel_J(nu, x), allowing nu < 0. + * This is fine here because we do not not allow + * nu to be a negative integer. + * x > 0. + */ +static +int +hyperg_0F1_bessel_J(const double nu, const double x, gsl_sf_result * result) +{ + if(nu < 0.0) { + const double anu = -nu; + const double s = sin(anu*M_PI); + const double c = cos(anu*M_PI); + gsl_sf_result J; + gsl_sf_result Y; + int stat_J = gsl_sf_bessel_Jnu_e(anu, x, &J); + int stat_Y = gsl_sf_bessel_Ynu_e(anu, x, &Y); + result->val = c * J.val - s * Y.val; + result->err = fabs(c * J.err) + fabs(s * Y.err); + result->err += fabs(anu * M_PI) * GSL_DBL_EPSILON * fabs(J.val + Y.val); + return GSL_ERROR_SELECT_2(stat_Y, stat_J); + } + else { + return gsl_sf_bessel_Jnu_e(nu, x, result); + } +} + + +/*-*-*-*-*-*-*-*-*-*-*-* Functions with Error Codes *-*-*-*-*-*-*-*-*-*-*-*/ + +int +gsl_sf_hyperg_0F1_e(double c, double x, gsl_sf_result * result) +{ + const double rintc = floor(c + 0.5); + const int c_neg_integer = (c < 0.0 && fabs(c - rintc) < locEPS); + + /* CHECK_POINTER(result) */ + + if(c == 0.0 || c_neg_integer) { + DOMAIN_ERROR(result); + } + else if(x < 0.0) { + gsl_sf_result Jcm1; + gsl_sf_result lg_c; + double sgn; + int stat_g = gsl_sf_lngamma_sgn_e(c, &lg_c, &sgn); + int stat_J = hyperg_0F1_bessel_J(c-1.0, 2.0*sqrt(-x), &Jcm1); + if(stat_g != GSL_SUCCESS) { + result->val = 0.0; + result->err = 0.0; + return stat_g; + } + else if(Jcm1.val == 0.0) { + result->val = 0.0; + result->err = 0.0; + return stat_J; + } + else { + const double tl = log(-x)*0.5*(1.0-c); + double ln_pre_val = lg_c.val + tl; + double ln_pre_err = lg_c.err + 2.0 * GSL_DBL_EPSILON * fabs(tl); + return gsl_sf_exp_mult_err_e(ln_pre_val, ln_pre_err, + sgn*Jcm1.val, Jcm1.err, + result); + } + } + else if(x == 0.0) { + result->val = 1.0; + result->err = 1.0; + return GSL_SUCCESS; + } + else { + gsl_sf_result Icm1; + gsl_sf_result lg_c; + double sgn; + int stat_g = gsl_sf_lngamma_sgn_e(c, &lg_c, &sgn); + int stat_I = hyperg_0F1_bessel_I(c-1.0, 2.0*sqrt(x), &Icm1); + if(stat_g != GSL_SUCCESS) { + result->val = 0.0; + result->err = 0.0; + return stat_g; + } + else if(Icm1.val == 0.0) { + result->val = 0.0; + result->err = 0.0; + return stat_I; + } + else { + const double tl = log(x)*0.5*(1.0-c); + const double ln_pre_val = lg_c.val + tl; + const double ln_pre_err = lg_c.err + 2.0 * GSL_DBL_EPSILON * fabs(tl); + return gsl_sf_exp_mult_err_e(ln_pre_val, ln_pre_err, + sgn*Icm1.val, Icm1.err, + result); + } + } +} + + +/*-*-*-*-*-*-*-*-*-* Functions w/ Natural Prototypes *-*-*-*-*-*-*-*-*-*-*/ + +#include "eval.h" + +double gsl_sf_hyperg_0F1(const double c, const double x) +{ + EVAL_RESULT(gsl_sf_hyperg_0F1_e(c, x, &result)); +} diff --git a/gsl-2.5/specfunc/hyperg_0F1.lo b/gsl-2.5/specfunc/hyperg_0F1.lo new file mode 100644 index 00000000..b907712e --- /dev/null +++ b/gsl-2.5/specfunc/hyperg_0F1.lo @@ -0,0 +1,12 @@ +# hyperg_0F1.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/hyperg_0F1.o' + +# Name of the non-PIC object +non_pic_object='hyperg_0F1.o' + diff --git a/gsl-2.5/specfunc/hyperg_1F1.c b/gsl-2.5/specfunc/hyperg_1F1.c new file mode 100644 index 00000000..28856c7e --- /dev/null +++ b/gsl-2.5/specfunc/hyperg_1F1.c @@ -0,0 +1,2065 @@ +/* specfunc/hyperg_1F1.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * Copyright (C) 2010 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "error.h" +#include "hyperg.h" + +#define _1F1_INT_THRESHOLD (100.0*GSL_DBL_EPSILON) + + +/* Asymptotic result for 1F1(a, b, x) x -> -Infinity. + * Assumes b-a != neg integer and b != neg integer. + */ +static +int +hyperg_1F1_asymp_negx(const double a, const double b, const double x, + gsl_sf_result * result) +{ + gsl_sf_result lg_b; + gsl_sf_result lg_bma; + double sgn_b; + double sgn_bma; + + int stat_b = gsl_sf_lngamma_sgn_e(b, &lg_b, &sgn_b); + int stat_bma = gsl_sf_lngamma_sgn_e(b-a, &lg_bma, &sgn_bma); + + if(stat_b == GSL_SUCCESS && stat_bma == GSL_SUCCESS) { + gsl_sf_result F; + int stat_F = gsl_sf_hyperg_2F0_series_e(a, 1.0+a-b, -1.0/x, -1, &F); + if(F.val != 0) { + double ln_term_val = a*log(-x); + double ln_term_err = 2.0 * GSL_DBL_EPSILON * (fabs(a) + fabs(ln_term_val)); + double ln_pre_val = lg_b.val - lg_bma.val - ln_term_val; + double ln_pre_err = lg_b.err + lg_bma.err + ln_term_err; + int stat_e = gsl_sf_exp_mult_err_e(ln_pre_val, ln_pre_err, + sgn_bma*sgn_b*F.val, F.err, + result); + return GSL_ERROR_SELECT_2(stat_e, stat_F); + } + else { + result->val = 0.0; + result->err = 0.0; + return stat_F; + } + } + else { + DOMAIN_ERROR(result); + } +} + + +/* Asymptotic result for 1F1(a, b, x) x -> +Infinity + * Assumes b != neg integer and a != neg integer + */ +static +int +hyperg_1F1_asymp_posx(const double a, const double b, const double x, + gsl_sf_result * result) +{ + gsl_sf_result lg_b; + gsl_sf_result lg_a; + double sgn_b; + double sgn_a; + + int stat_b = gsl_sf_lngamma_sgn_e(b, &lg_b, &sgn_b); + int stat_a = gsl_sf_lngamma_sgn_e(a, &lg_a, &sgn_a); + + if(stat_a == GSL_SUCCESS && stat_b == GSL_SUCCESS) { + gsl_sf_result F; + int stat_F = gsl_sf_hyperg_2F0_series_e(b-a, 1.0-a, 1.0/x, -1, &F); + if(stat_F == GSL_SUCCESS && F.val != 0) { + double lnx = log(x); + double ln_term_val = (a-b)*lnx; + double ln_term_err = 2.0 * GSL_DBL_EPSILON * (fabs(a) + fabs(b)) * fabs(lnx) + + 2.0 * GSL_DBL_EPSILON * fabs(a-b); + double ln_pre_val = lg_b.val - lg_a.val + ln_term_val + x; + double ln_pre_err = lg_b.err + lg_a.err + ln_term_err + 2.0 * GSL_DBL_EPSILON * fabs(x); + int stat_e = gsl_sf_exp_mult_err_e(ln_pre_val, ln_pre_err, + sgn_a*sgn_b*F.val, F.err, + result); + return GSL_ERROR_SELECT_2(stat_e, stat_F); + } + else { + result->val = 0.0; + result->err = 0.0; + return stat_F; + } + } + else { + DOMAIN_ERROR(result); + } +} + +/* Asymptotic result from Slater 4.3.7 + * + * To get the general series, write M(a,b,x) as + * + * M(a,b,x)=sum ((a)_n/(b)_n) (x^n / n!) + * + * and expand (b)_n in inverse powers of b as follows + * + * -log(1/(b)_n) = sum_(k=0)^(n-1) log(b+k) + * = n log(b) + sum_(k=0)^(n-1) log(1+k/b) + * + * Do a taylor expansion of the log in 1/b and sum the resulting terms + * using the standard algebraic formulas for finite sums of powers of + * k. This should then give + * + * M(a,b,x) = sum_(n=0)^(inf) (a_n/n!) (x/b)^n * (1 - n(n-1)/(2b) + * + (n-1)n(n+1)(3n-2)/(24b^2) + ... + * + * which can be summed explicitly. The trick for summing it is to take + * derivatives of sum_(i=0)^(inf) a_n*y^n/n! = (1-y)^(-a); + * + * [BJG 16/01/2007] + */ + +static +int +hyperg_1F1_largebx(const double a, const double b, const double x, gsl_sf_result * result) +{ + double y = x/b; + double f = exp(-a*log1p(-y)); + double t1 = -((a*(a+1.0))/(2*b))*pow((y/(1.0-y)),2.0); + double t2 = (1/(24*b*b))*((a*(a+1)*y*y)/pow(1-y,4))*(12+8*(2*a+1)*y+(3*a*a-a-2)*y*y); + double t3 = (-1/(48*b*b*b*pow(1-y,6)))*a*((a + 1)*((y*((a + 1)*(a*(y*(y*((y*(a - 2) + 16)*(a - 1)) + 72)) + 96)) + 24)*pow(y, 2))); + result->val = f * (1 + t1 + t2 + t3); + result->err = 2*fabs(f*t3) + 2*GSL_DBL_EPSILON*fabs(result->val); + return GSL_SUCCESS; +} + +/* Asymptotic result for x < 2b-4a, 2b-4a large. + * [Abramowitz+Stegun, 13.5.21] + * + * assumes 0 <= x/(2b-4a) <= 1 + */ +static +int +hyperg_1F1_large2bm4a(const double a, const double b, const double x, gsl_sf_result * result) +{ + double eta = 2.0*b - 4.0*a; + double cos2th = x/eta; + double sin2th = 1.0 - cos2th; + double th = acos(sqrt(cos2th)); + double pre_h = 0.25*M_PI*M_PI*eta*eta*cos2th*sin2th; + gsl_sf_result lg_b; + int stat_lg = gsl_sf_lngamma_e(b, &lg_b); + double t1 = 0.5*(1.0-b)*log(0.25*x*eta); + double t2 = 0.25*log(pre_h); + double lnpre_val = lg_b.val + 0.5*x + t1 - t2; + double lnpre_err = lg_b.err + 2.0 * GSL_DBL_EPSILON * (fabs(0.5*x) + fabs(t1) + fabs(t2)); +#if SMALL_ANGLE + const double eps = asin(sqrt(cos2th)); /* theta = pi/2 - eps */ + double s1 = (fmod(a, 1.0) == 0.0) ? 0.0 : sin(a*M_PI); + double eta_reduc = (fmod(eta + 1, 4.0) == 0.0) ? 0.0 : fmod(eta + 1, 8.0); + double phi1 = 0.25*eta_reduc*M_PI; + double phi2 = 0.25*eta*(2*eps + sin(2.0*eps)); + double s2 = sin(phi1 - phi2); +#else + double s1 = sin(a*M_PI); + double s2 = sin(0.25*eta*(2.0*th - sin(2.0*th)) + 0.25*M_PI); +#endif + double ser_val = s1 + s2; + double ser_err = 2.0 * GSL_DBL_EPSILON * (fabs(s1) + fabs(s2)); + int stat_e = gsl_sf_exp_mult_err_e(lnpre_val, lnpre_err, + ser_val, ser_err, + result); + return GSL_ERROR_SELECT_2(stat_e, stat_lg); +} + + +/* Luke's rational approximation. + * See [Luke, Algorithms for the Computation of Mathematical Functions, p.182] + * + * Like the case of the 2F1 rational approximations, these are + * probably guaranteed to converge for x < 0, barring gross + * numerical instability in the pre-asymptotic regime. + */ +static +int +hyperg_1F1_luke(const double a, const double c, const double xin, + gsl_sf_result * result) +{ + const double RECUR_BIG = 1.0e+50; + const int nmax = 5000; + int n = 3; + const double x = -xin; + const double x3 = x*x*x; + const double t0 = a/c; + const double t1 = (a+1.0)/(2.0*c); + const double t2 = (a+2.0)/(2.0*(c+1.0)); + double F = 1.0; + double prec; + + double Bnm3 = 1.0; /* B0 */ + double Bnm2 = 1.0 + t1 * x; /* B1 */ + double Bnm1 = 1.0 + t2 * x * (1.0 + t1/3.0 * x); /* B2 */ + + double Anm3 = 1.0; /* A0 */ + double Anm2 = Bnm2 - t0 * x; /* A1 */ + double Anm1 = Bnm1 - t0*(1.0 + t2*x)*x + t0 * t1 * (c/(c+1.0)) * x*x; /* A2 */ + + while(1) { + double npam1 = n + a - 1; + double npcm1 = n + c - 1; + double npam2 = n + a - 2; + double npcm2 = n + c - 2; + double tnm1 = 2*n - 1; + double tnm3 = 2*n - 3; + double tnm5 = 2*n - 5; + double F1 = (n-a-2) / (2*tnm3*npcm1); + double F2 = (n+a)*npam1 / (4*tnm1*tnm3*npcm2*npcm1); + double F3 = -npam2*npam1*(n-a-2) / (8*tnm3*tnm3*tnm5*(n+c-3)*npcm2*npcm1); + double E = -npam1*(n-c-1) / (2*tnm3*npcm2*npcm1); + + double An = (1.0+F1*x)*Anm1 + (E + F2*x)*x*Anm2 + F3*x3*Anm3; + double Bn = (1.0+F1*x)*Bnm1 + (E + F2*x)*x*Bnm2 + F3*x3*Bnm3; + double r = An/Bn; + + prec = fabs((F - r)/F); + F = r; + + if(prec < GSL_DBL_EPSILON || n > nmax) break; + + if(fabs(An) > RECUR_BIG || fabs(Bn) > RECUR_BIG) { + An /= RECUR_BIG; + Bn /= RECUR_BIG; + Anm1 /= RECUR_BIG; + Bnm1 /= RECUR_BIG; + Anm2 /= RECUR_BIG; + Bnm2 /= RECUR_BIG; + Anm3 /= RECUR_BIG; + Bnm3 /= RECUR_BIG; + } + else if(fabs(An) < 1.0/RECUR_BIG || fabs(Bn) < 1.0/RECUR_BIG) { + An *= RECUR_BIG; + Bn *= RECUR_BIG; + Anm1 *= RECUR_BIG; + Bnm1 *= RECUR_BIG; + Anm2 *= RECUR_BIG; + Bnm2 *= RECUR_BIG; + Anm3 *= RECUR_BIG; + Bnm3 *= RECUR_BIG; + } + + n++; + Bnm3 = Bnm2; + Bnm2 = Bnm1; + Bnm1 = Bn; + Anm3 = Anm2; + Anm2 = Anm1; + Anm1 = An; + } + + result->val = F; + result->err = 2.0 * fabs(F * prec); + result->err += 2.0 * GSL_DBL_EPSILON * (n-1.0) * fabs(F); + + return GSL_SUCCESS; +} + +/* Series for 1F1(1,b,x) + * b > 0 + */ +static +int +hyperg_1F1_1_series(const double b, const double x, gsl_sf_result * result) +{ + double sum_val = 1.0; + double sum_err = 0.0; + double term = 1.0; + double n = 1.0; + while(fabs(term/sum_val) > 0.25*GSL_DBL_EPSILON) { + term *= x/(b+n-1); + sum_val += term; + sum_err += 8.0*GSL_DBL_EPSILON*fabs(term) + GSL_DBL_EPSILON*fabs(sum_val); + n += 1.0; + } + result->val = sum_val; + result->err = sum_err; + result->err += 2.0 * fabs(term); + return GSL_SUCCESS; +} + + +/* 1F1(1,b,x) + * b >= 1, b integer + */ +static +int +hyperg_1F1_1_int(const int b, const double x, gsl_sf_result * result) +{ + if(b < 1) { + DOMAIN_ERROR(result); + } + else if(b == 1) { + return gsl_sf_exp_e(x, result); + } + else if(b == 2) { + return gsl_sf_exprel_e(x, result); + } + else if(b == 3) { + return gsl_sf_exprel_2_e(x, result); + } + else { + return gsl_sf_exprel_n_e(b-1, x, result); + } +} + + +/* 1F1(1,b,x) + * b >=1, b real + * + * checked OK: [GJ] Thu Oct 1 16:46:35 MDT 1998 + */ +static +int +hyperg_1F1_1(const double b, const double x, gsl_sf_result * result) +{ + double ax = fabs(x); + double ib = floor(b + 0.1); + + if(b < 1.0) { + DOMAIN_ERROR(result); + } + else if(b == 1.0) { + return gsl_sf_exp_e(x, result); + } + else if(b >= 1.4*ax) { + return hyperg_1F1_1_series(b, x, result); + } + else if(fabs(b - ib) < _1F1_INT_THRESHOLD && ib < INT_MAX) { + return hyperg_1F1_1_int((int)ib, x, result); + } + else if(x > 0.0) { + if(x > 100.0 && b < 0.75*x) { + return hyperg_1F1_asymp_posx(1.0, b, x, result); + } + else if(b < 1.0e+05) { + /* Recurse backward on b, from a + * chosen offset point. For x > 0, + * which holds here, this should + * be a stable direction. + */ + const double off = ceil(1.4*x-b) + 1.0; + double bp = b + off; + gsl_sf_result M; + int stat_s = hyperg_1F1_1_series(bp, x, &M); + const double err_rat = M.err / fabs(M.val); + while(bp > b+0.1) { + /* M(1,b-1) = x/(b-1) M(1,b) + 1 */ + bp -= 1.0; + M.val = 1.0 + x/bp * M.val; + } + result->val = M.val; + result->err = err_rat * fabs(M.val); + result->err += 2.0 * GSL_DBL_EPSILON * (fabs(off)+1.0) * fabs(M.val); + return stat_s; + } else if (fabs(x) < fabs(b) && fabs(x) < sqrt(fabs(b)) * fabs(b-x)) { + return hyperg_1F1_largebx(1.0, b, x, result); + } else if (fabs(x) > fabs(b)) { + return hyperg_1F1_1_series(b, x, result); + } else { + return hyperg_1F1_large2bm4a(1.0, b, x, result); + } + } + else { + /* x <= 0 and b not large compared to |x| + */ + if(ax < 10.0 && b < 10.0) { + return hyperg_1F1_1_series(b, x, result); + } + else if(ax >= 100.0 && GSL_MAX_DBL(fabs(2.0-b),1.0) < 0.99*ax) { + return hyperg_1F1_asymp_negx(1.0, b, x, result); + } + else { + return hyperg_1F1_luke(1.0, b, x, result); + } + } +} + + +/* 1F1(a,b,x)/Gamma(b) for b->0 + * [limit of Abramowitz+Stegun 13.3.7] + */ +static +int +hyperg_1F1_renorm_b0(const double a, const double x, gsl_sf_result * result) +{ + double eta = a*x; + if(eta > 0.0) { + double root_eta = sqrt(eta); + gsl_sf_result I1_scaled; + int stat_I = gsl_sf_bessel_I1_scaled_e(2.0*root_eta, &I1_scaled); + if(I1_scaled.val <= 0.0) { + result->val = 0.0; + result->err = 0.0; + return GSL_ERROR_SELECT_2(stat_I, GSL_EDOM); + } + else { + /* Note that 13.3.7 contains higher terms which are zeroth order + in b. These make a non-negligible contribution to the sum. + With the first correction term, the I1 above is replaced by + I1 + (2/3)*a*(x/(4a))**(3/2)*I2(2*root_eta). We will add + this as part of the result and error estimate. */ + + const double corr1 =(2.0/3.0)*a*pow(x/(4.0*a),1.5)*gsl_sf_bessel_In_scaled(2, 2.0*root_eta) + ; + const double lnr_val = 0.5*x + 0.5*log(eta) + fabs(2.0*root_eta) + log(I1_scaled.val+corr1); + const double lnr_err = GSL_DBL_EPSILON * (1.5*fabs(x) + 1.0) + fabs((I1_scaled.err+corr1)/I1_scaled.val); + return gsl_sf_exp_err_e(lnr_val, lnr_err, result); + } + } + else if(eta == 0.0) { + result->val = 0.0; + result->err = 0.0; + return GSL_SUCCESS; + } + else { + /* eta < 0 */ + double root_eta = sqrt(-eta); + gsl_sf_result J1; + int stat_J = gsl_sf_bessel_J1_e(2.0*root_eta, &J1); + if(J1.val <= 0.0) { + result->val = 0.0; + result->err = 0.0; + return GSL_ERROR_SELECT_2(stat_J, GSL_EDOM); + } + else { + const double t1 = 0.5*x; + const double t2 = 0.5*log(-eta); + const double t3 = fabs(x); + const double t4 = log(J1.val); + const double lnr_val = t1 + t2 + t3 + t4; + const double lnr_err = GSL_DBL_EPSILON * (1.5*fabs(x) + 1.0) + fabs(J1.err/J1.val); + gsl_sf_result ex; + int stat_e = gsl_sf_exp_err_e(lnr_val, lnr_err, &ex); + result->val = -ex.val; + result->err = ex.err; + return stat_e; + } + } + +} + + +/* 1F1'(a,b,x)/1F1(a,b,x) + * Uses Gautschi's version of the CF. + * [Gautschi, Math. Comp. 31, 994 (1977)] + * + * Supposedly this suffers from the "anomalous convergence" + * problem when b < x. I have seen anomalous convergence + * in several of the continued fractions associated with + * 1F1(a,b,x). This particular CF formulation seems stable + * for b > x. However, it does display a painful artifact + * of the anomalous convergence; the convergence plateaus + * unless b >>> x. For example, even for b=1000, x=1, this + * method locks onto a ratio which is only good to about + * 4 digits. Apparently the rest of the digits are hiding + * way out on the plateau, but finite-precision lossage + * means you will never get them. + */ +#if 0 +static +int +hyperg_1F1_CF1_p(const double a, const double b, const double x, double * result) +{ + const double RECUR_BIG = GSL_SQRT_DBL_MAX; + const int maxiter = 5000; + int n = 1; + double Anm2 = 1.0; + double Bnm2 = 0.0; + double Anm1 = 0.0; + double Bnm1 = 1.0; + double a1 = 1.0; + double b1 = 1.0; + double An = b1*Anm1 + a1*Anm2; + double Bn = b1*Bnm1 + a1*Bnm2; + double an, bn; + double fn = An/Bn; + + while(n < maxiter) { + double old_fn; + double del; + n++; + Anm2 = Anm1; + Bnm2 = Bnm1; + Anm1 = An; + Bnm1 = Bn; + an = (a+n)*x/((b-x+n-1)*(b-x+n)); + bn = 1.0; + An = bn*Anm1 + an*Anm2; + Bn = bn*Bnm1 + an*Bnm2; + + if(fabs(An) > RECUR_BIG || fabs(Bn) > RECUR_BIG) { + An /= RECUR_BIG; + Bn /= RECUR_BIG; + Anm1 /= RECUR_BIG; + Bnm1 /= RECUR_BIG; + Anm2 /= RECUR_BIG; + Bnm2 /= RECUR_BIG; + } + + old_fn = fn; + fn = An/Bn; + del = old_fn/fn; + + if(fabs(del - 1.0) < 10.0*GSL_DBL_EPSILON) break; + } + + *result = a/(b-x) * fn; + + if(n == maxiter) + GSL_ERROR ("error", GSL_EMAXITER); + else + return GSL_SUCCESS; +} +#endif /* 0 */ + + +/* 1F1'(a,b,x)/1F1(a,b,x) + * Uses Gautschi's series transformation of the + * continued fraction. This is apparently the best + * method for getting this ratio in the stable region. + * The convergence is monotone and supergeometric + * when b > x. + * Assumes a >= -1. + */ +static +int +hyperg_1F1_CF1_p_ser(const double a, const double b, const double x, double * result) +{ + if(a == 0.0) { + *result = 0.0; + return GSL_SUCCESS; + } + else { + const int maxiter = 5000; + double sum = 1.0; + double pk = 1.0; + double rhok = 0.0; + int k; + for(k=1; k RECUR_BIG || fabs(Bn) > RECUR_BIG) { + An /= RECUR_BIG; + Bn /= RECUR_BIG; + Anm1 /= RECUR_BIG; + Bnm1 /= RECUR_BIG; + Anm2 /= RECUR_BIG; + Bnm2 /= RECUR_BIG; + } + + old_fn = fn; + fn = An/Bn; + del = old_fn/fn; + + if(fabs(del - 1.0) < 10.0*GSL_DBL_EPSILON) break; + } + + *result = fn; + if(n == maxiter) + GSL_ERROR ("error", GSL_EMAXITER); + else + return GSL_SUCCESS; +} +#endif /* 0 */ + + +/* 1F1(a,b+1,x)/1F1(a,b,x) + * + * This seemed to suffer from "anomalous convergence". + * However, I have no theory for this recurrence. + */ +#if 0 +static +int +hyperg_1F1_CF1_b(const double a, const double b, const double x, double * result) +{ + const double RECUR_BIG = GSL_SQRT_DBL_MAX; + const int maxiter = 5000; + int n = 1; + double Anm2 = 1.0; + double Bnm2 = 0.0; + double Anm1 = 0.0; + double Bnm1 = 1.0; + double a1 = b + 1.0; + double b1 = (b + 1.0) * (b - x); + double An = b1*Anm1 + a1*Anm2; + double Bn = b1*Bnm1 + a1*Bnm2; + double an, bn; + double fn = An/Bn; + + while(n < maxiter) { + double old_fn; + double del; + n++; + Anm2 = Anm1; + Bnm2 = Bnm1; + Anm1 = An; + Bnm1 = Bn; + an = (b + n) * (b + n - 1.0 - a) * x; + bn = (b + n) * (b + n - 1.0 - x); + An = bn*Anm1 + an*Anm2; + Bn = bn*Bnm1 + an*Bnm2; + + if(fabs(An) > RECUR_BIG || fabs(Bn) > RECUR_BIG) { + An /= RECUR_BIG; + Bn /= RECUR_BIG; + Anm1 /= RECUR_BIG; + Bnm1 /= RECUR_BIG; + Anm2 /= RECUR_BIG; + Bnm2 /= RECUR_BIG; + } + + old_fn = fn; + fn = An/Bn; + del = old_fn/fn; + + if(fabs(del - 1.0) < 10.0*GSL_DBL_EPSILON) break; + } + + *result = fn; + if(n == maxiter) + GSL_ERROR ("error", GSL_EMAXITER); + else + return GSL_SUCCESS; +} +#endif /* 0 */ + + +/* 1F1(a,b,x) + * |a| <= 1, b > 0 + */ +static +int +hyperg_1F1_small_a_bgt0(const double a, const double b, const double x, gsl_sf_result * result) +{ + const double bma = b-a; + const double oma = 1.0-a; + const double ap1mb = 1.0+a-b; + const double abs_bma = fabs(bma); + const double abs_oma = fabs(oma); + const double abs_ap1mb = fabs(ap1mb); + + const double ax = fabs(x); + + if(a == 0.0) { + result->val = 1.0; + result->err = 0.0; + return GSL_SUCCESS; + } + else if(a == 1.0 && b >= 1.0) { + return hyperg_1F1_1(b, x, result); + } + else if(a == -1.0) { + result->val = 1.0 + a/b * x; + result->err = GSL_DBL_EPSILON * (1.0 + fabs(a/b * x)); + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else if(b >= 1.4*ax) { + return gsl_sf_hyperg_1F1_series_e(a, b, x, result); + } + else if(x > 0.0) { + if(x > 100.0 && abs_bma*abs_oma < 0.5*x) { + return hyperg_1F1_asymp_posx(a, b, x, result); + } + else if(b < 5.0e+06) { + /* Recurse backward on b from + * a suitably high point. + */ + const double b_del = ceil(1.4*x-b) + 1.0; + double bp = b + b_del; + gsl_sf_result r_Mbp1; + gsl_sf_result r_Mb; + double Mbp1; + double Mb; + double Mbm1; + int stat_0 = gsl_sf_hyperg_1F1_series_e(a, bp+1.0, x, &r_Mbp1); + int stat_1 = gsl_sf_hyperg_1F1_series_e(a, bp, x, &r_Mb); + const double err_rat = fabs(r_Mbp1.err/r_Mbp1.val) + fabs(r_Mb.err/r_Mb.val); + Mbp1 = r_Mbp1.val; + Mb = r_Mb.val; + while(bp > b+0.1) { + /* Do backward recursion. */ + Mbm1 = ((x+bp-1.0)*Mb - x*(bp-a)/bp*Mbp1)/(bp-1.0); + bp -= 1.0; + Mbp1 = Mb; + Mb = Mbm1; + } + result->val = Mb; + result->err = err_rat * (fabs(b_del)+1.0) * fabs(Mb); + result->err += 2.0 * GSL_DBL_EPSILON * fabs(Mb); + return GSL_ERROR_SELECT_2(stat_0, stat_1); + } + else if (fabs(x) < fabs(b) && fabs(a*x) < sqrt(fabs(b)) * fabs(b-x)) { + return hyperg_1F1_largebx(a, b, x, result); + } else { + return hyperg_1F1_large2bm4a(a, b, x, result); + } + } + else { + /* x < 0 and b not large compared to |x| + */ + if(ax < 10.0 && b < 10.0) { + return gsl_sf_hyperg_1F1_series_e(a, b, x, result); + } + else if(ax >= 100.0 && GSL_MAX(abs_ap1mb,1.0) < 0.99*ax) { + return hyperg_1F1_asymp_negx(a, b, x, result); + } + else { + return hyperg_1F1_luke(a, b, x, result); + } + } +} + + +/* 1F1(b+eps,b,x) + * |eps|<=1, b > 0 + */ +static +int +hyperg_1F1_beps_bgt0(const double eps, const double b, const double x, gsl_sf_result * result) +{ + if(b > fabs(x) && fabs(eps) < GSL_SQRT_DBL_EPSILON) { + /* If b-a is very small and x/b is not too large we can + * use this explicit approximation. + * + * 1F1(b+eps,b,x) = exp(ax/b) (1 - eps x^2 (v2 + v3 x + ...) + ...) + * + * v2 = a/(2b^2(b+1)) + * v3 = a(b-2a)/(3b^3(b+1)(b+2)) + * ... + * + * See [Luke, Mathematical Functions and Their Approximations, p.292] + * + * This cannot be used for b near a negative integer or zero. + * Also, if x/b is large the deviation from exp(x) behaviour grows. + */ + double a = b + eps; + gsl_sf_result exab; + int stat_e = gsl_sf_exp_e(a*x/b, &exab); + double v2 = a/(2.0*b*b*(b+1.0)); + double v3 = a*(b-2.0*a)/(3.0*b*b*b*(b+1.0)*(b+2.0)); + double v = v2 + v3 * x; + double f = (1.0 - eps*x*x*v); + result->val = exab.val * f; + result->err = exab.err * fabs(f); + result->err += fabs(exab.val) * GSL_DBL_EPSILON * (1.0 + fabs(eps*x*x*v)); + result->err += 4.0 * GSL_DBL_EPSILON * fabs(result->val); + return stat_e; + } + else { + /* Otherwise use a Kummer transformation to reduce + * it to the small a case. + */ + gsl_sf_result Kummer_1F1; + int stat_K = hyperg_1F1_small_a_bgt0(-eps, b, -x, &Kummer_1F1); + if(Kummer_1F1.val != 0.0) { + int stat_e = gsl_sf_exp_mult_err_e(x, 2.0*GSL_DBL_EPSILON*fabs(x), + Kummer_1F1.val, Kummer_1F1.err, + result); + return GSL_ERROR_SELECT_2(stat_e, stat_K); + } + else { + result->val = 0.0; + result->err = 0.0; + return stat_K; + } + } +} + + +/* 1F1(a,2a,x) = Gamma(a + 1/2) E(x) (|x|/4)^(-a+1/2) scaled_I(a-1/2,|x|/2) + * + * E(x) = exp(x) x > 0 + * = 1 x < 0 + * + * a >= 1/2 + */ +static +int +hyperg_1F1_beq2a_pos(const double a, const double x, gsl_sf_result * result) +{ + if(x == 0.0) { + result->val = 1.0; + result->err = 0.0; + return GSL_SUCCESS; + } + else { + gsl_sf_result I; + int stat_I = gsl_sf_bessel_Inu_scaled_e(a-0.5, 0.5*fabs(x), &I); + gsl_sf_result lg; + int stat_g = gsl_sf_lngamma_e(a + 0.5, &lg); + double ln_term = (0.5-a)*log(0.25*fabs(x)); + double lnpre_val = lg.val + GSL_MAX_DBL(x,0.0) + ln_term; + double lnpre_err = lg.err + GSL_DBL_EPSILON * (fabs(ln_term) + fabs(x)); + int stat_e = gsl_sf_exp_mult_err_e(lnpre_val, lnpre_err, + I.val, I.err, + result); + return GSL_ERROR_SELECT_3(stat_e, stat_g, stat_I); + } +} + + +/* Determine middle parts of diagonal recursion along b=2a + * from two endpoints, i.e. + * + * given: M(a,b) and M(a+1,b+2) + * get: M(a+1,b+1) and M(a,b+1) + */ +#if 0 +inline +static +int +hyperg_1F1_diag_step(const double a, const double b, const double x, + const double Mab, const double Map1bp2, + double * Map1bp1, double * Mabp1) +{ + if(a == b) { + *Map1bp1 = Mab; + *Mabp1 = Mab - x/(b+1.0) * Map1bp2; + } + else { + *Map1bp1 = Mab - x * (a-b)/(b*(b+1.0)) * Map1bp2; + *Mabp1 = (a * *Map1bp1 - b * Mab)/(a-b); + } + return GSL_SUCCESS; +} +#endif /* 0 */ + + +/* Determine endpoint of diagonal recursion. + * + * given: M(a,b) and M(a+1,b+2) + * get: M(a+1,b) and M(a+1,b+1) + */ +#if 0 +inline +static +int +hyperg_1F1_diag_end_step(const double a, const double b, const double x, + const double Mab, const double Map1bp2, + double * Map1b, double * Map1bp1) +{ + *Map1bp1 = Mab - x * (a-b)/(b*(b+1.0)) * Map1bp2; + *Map1b = Mab + x/b * *Map1bp1; + return GSL_SUCCESS; +} +#endif /* 0 */ + + +/* Handle the case of a and b both positive integers. + * Assumes a > 0 and b > 0. + */ +static +int +hyperg_1F1_ab_posint(const int a, const int b, const double x, gsl_sf_result * result) +{ + double ax = fabs(x); + + if(a == b) { + return gsl_sf_exp_e(x, result); /* 1F1(a,a,x) */ + } + else if(a == 1) { + return gsl_sf_exprel_n_e(b-1, x, result); /* 1F1(1,b,x) */ + } + else if(b == a + 1) { + gsl_sf_result K; + int stat_K = gsl_sf_exprel_n_e(a, -x, &K); /* 1F1(1,1+a,-x) */ + int stat_e = gsl_sf_exp_mult_err_e(x, 2.0 * GSL_DBL_EPSILON * fabs(x), + K.val, K.err, + result); + return GSL_ERROR_SELECT_2(stat_e, stat_K); + } + else if(a == b + 1) { + gsl_sf_result ex; + int stat_e = gsl_sf_exp_e(x, &ex); + result->val = ex.val * (1.0 + x/b); + result->err = ex.err * (1.0 + x/b); + result->err += ex.val * GSL_DBL_EPSILON * (1.0 + fabs(x/b)); + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return stat_e; + } + else if(a == b + 2) { + gsl_sf_result ex; + int stat_e = gsl_sf_exp_e(x, &ex); + double poly = (1.0 + x/b*(2.0 + x/(b+1.0))); + result->val = ex.val * poly; + result->err = ex.err * fabs(poly); + result->err += ex.val * GSL_DBL_EPSILON * (1.0 + fabs(x/b) * (2.0 + fabs(x/(b+1.0)))); + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return stat_e; + } + else if(b == 2*a) { + return hyperg_1F1_beq2a_pos(a, x, result); /* 1F1(a,2a,x) */ + } + else if( ( b < 10 && a < 10 && ax < 5.0 ) + || ( b > a*ax ) + || ( b > a && ax < 5.0 ) + ) { + return gsl_sf_hyperg_1F1_series_e(a, b, x, result); + } + else if(b > a && b >= 2*a + x) { + /* Use the Gautschi CF series, then + * recurse backward to a=0 for normalization. + * This will work for either sign of x. + */ + double rap; + int stat_CF1 = hyperg_1F1_CF1_p_ser(a, b, x, &rap); + double ra = 1.0 + x/a * rap; + double Ma = GSL_SQRT_DBL_MIN; + double Map1 = ra * Ma; + double Mnp1 = Map1; + double Mn = Ma; + double Mnm1; + int n; + for(n=a; n>0; n--) { + Mnm1 = (n * Mnp1 - (2*n-b+x) * Mn) / (b-n); + Mnp1 = Mn; + Mn = Mnm1; + } + result->val = Ma/Mn; + result->err = 2.0 * GSL_DBL_EPSILON * (fabs(a) + 1.0) * fabs(Ma/Mn); + return stat_CF1; + } + else if(b > a && b < 2*a + x && b > x) { + /* Use the Gautschi series representation of + * the continued fraction. Then recurse forward + * to the a=b line for normalization. This will + * work for either sign of x, although we do need + * to check for b > x, for when x is positive. + */ + double rap; + int stat_CF1 = hyperg_1F1_CF1_p_ser(a, b, x, &rap); + double ra = 1.0 + x/a * rap; + gsl_sf_result ex; + int stat_ex; + + double Ma = GSL_SQRT_DBL_MIN; + double Map1 = ra * Ma; + double Mnm1 = Ma; + double Mn = Map1; + double Mnp1; + int n; + for(n=a+1; nval = ex.val * Ma/Mn; + result->err = ex.err * fabs(Ma/Mn); + result->err += 4.0 * GSL_DBL_EPSILON * (fabs(b-a)+1.0) * fabs(result->val); + return GSL_ERROR_SELECT_2(stat_ex, stat_CF1); + } + else if(x >= 0.0) { + + if(b < a) { + /* The point b,b is below the b=2a+x line. + * Forward recursion on a from b,b+1 is possible. + * Note that a > b + 1 as well, since we already tried a = b + 1. + */ + if(x + log(fabs(x/b)) < GSL_LOG_DBL_MAX-2.0) { + double ex = exp(x); + int n; + double Mnm1 = ex; /* 1F1(b,b,x) */ + double Mn = ex * (1.0 + x/b); /* 1F1(b+1,b,x) */ + double Mnp1; + for(n=b+1; nval = Mn; + result->err = (x + 1.0) * GSL_DBL_EPSILON * fabs(Mn); + result->err *= fabs(a-b)+1.0; + return GSL_SUCCESS; + } + else { + OVERFLOW_ERROR(result); + } + } + else { + /* b > a + * b < 2a + x + * b <= x (otherwise we would have finished above) + * + * Gautschi anomalous convergence region. However, we can + * recurse forward all the way from a=0,1 because we are + * always underneath the b=2a+x line. + */ + gsl_sf_result r_Mn; + double Mnm1 = 1.0; /* 1F1(0,b,x) */ + double Mn; /* 1F1(1,b,x) */ + double Mnp1; + int n; + gsl_sf_exprel_n_e(b-1, x, &r_Mn); + Mn = r_Mn.val; + for(n=1; nval = Mn; + result->err = fabs(Mn) * (1.0 + fabs(a)) * fabs(r_Mn.err / r_Mn.val); + result->err += 2.0 * GSL_DBL_EPSILON * fabs(Mn); + return GSL_SUCCESS; + } + } + else { + /* x < 0 + * b < a (otherwise we would have tripped one of the above) + */ + + if(a <= 0.5*(b-x) || a >= -x) { + /* Gautschi continued fraction is in the anomalous region, + * so we must find another way. We recurse down in b, + * from the a=b line. + */ + double ex = exp(x); + double Manp1 = ex; + double Man = ex * (1.0 + x/(a-1.0)); + double Manm1; + int n; + for(n=a-1; n>b; n--) { + Manm1 = (-n*(1-n-x)*Man - x*(n-a)*Manp1)/(n*(n-1.0)); + Manp1 = Man; + Man = Manm1; + } + result->val = Man; + result->err = (fabs(x) + 1.0) * GSL_DBL_EPSILON * fabs(Man); + result->err *= fabs(b-a)+1.0; + return GSL_SUCCESS; + } + else { + /* Pick a0 such that b ~= 2a0 + x, then + * recurse down in b from a0,a0 to determine + * the values near the line b=2a+x. Then recurse + * forward on a from a0. + */ + int a0 = (int) ceil(0.5*(b-x)); + double Ma0b; /* M(a0,b) */ + double Ma0bp1; /* M(a0,b+1) */ + double Ma0p1b; /* M(a0+1,b) */ + double Mnm1; + double Mn; + double Mnp1; + int n; + { + double ex = exp(x); + double Ma0np1 = ex; + double Ma0n = ex * (1.0 + x/(a0-1.0)); + double Ma0nm1; + for(n=a0-1; n>b; n--) { + Ma0nm1 = (-n*(1-n-x)*Ma0n - x*(n-a0)*Ma0np1)/(n*(n-1.0)); + Ma0np1 = Ma0n; + Ma0n = Ma0nm1; + } + Ma0bp1 = Ma0np1; + Ma0b = Ma0n; + Ma0p1b = (b*(a0+x)*Ma0b + x*(a0-b)*Ma0bp1)/(a0*b); + } + + /* Initialise the recurrence correctly BJG */ + + if (a0 >= a) + { + Mn = Ma0b; + } + else if (a0 + 1>= a) + { + Mn = Ma0p1b; + } + else + { + Mnm1 = Ma0b; + Mn = Ma0p1b; + + for(n=a0+1; nval = Mn; + result->err = (fabs(x) + 1.0) * GSL_DBL_EPSILON * fabs(Mn); + result->err *= fabs(b-a)+1.0; + return GSL_SUCCESS; + } + } +} + + +/* Evaluate a <= 0, a integer, cases directly. (Polynomial; Horner) + * When the terms are all positive, this + * must work. We will assume this here. + */ +static +int +hyperg_1F1_a_negint_poly(const int a, const double b, const double x, gsl_sf_result * result) +{ + if(a == 0) { + result->val = 1.0; + result->err = 1.0; + return GSL_SUCCESS; + } + else { + int N = -a; + double poly = 1.0; + int k; + for(k=N-1; k>=0; k--) { + double t = (a+k)/(b+k) * (x/(k+1)); + double r = t + 1.0/poly; + if(r > 0.9*GSL_DBL_MAX/poly) { + OVERFLOW_ERROR(result); + } + else { + poly *= r; /* P_n = 1 + t_n P_{n-1} */ + } + } + result->val = poly; + result->err = 2.0 * (sqrt(N) + 1.0) * GSL_DBL_EPSILON * fabs(poly); + return GSL_SUCCESS; + } +} + + +/* Evaluate negative integer a case by relation + * to Laguerre polynomials. This is more general than + * the direct polynomial evaluation, but is safe + * for all values of x. + * + * 1F1(-n,b,x) = n!/(b)_n Laguerre[n,b-1,x] + * = n B(b,n) Laguerre[n,b-1,x] + * + * assumes b is not a negative integer + */ +static +int +hyperg_1F1_a_negint_lag(const int a, const double b, const double x, gsl_sf_result * result) +{ + const int n = -a; + + gsl_sf_result lag; + const int stat_l = gsl_sf_laguerre_n_e(n, b-1.0, x, &lag); + if(b < 0.0) { + gsl_sf_result lnfact; + gsl_sf_result lng1; + gsl_sf_result lng2; + double s1, s2; + const int stat_f = gsl_sf_lnfact_e(n, &lnfact); + const int stat_g1 = gsl_sf_lngamma_sgn_e(b + n, &lng1, &s1); + const int stat_g2 = gsl_sf_lngamma_sgn_e(b, &lng2, &s2); + const double lnpre_val = lnfact.val - (lng1.val - lng2.val); + const double lnpre_err = lnfact.err + lng1.err + lng2.err + + 2.0 * GSL_DBL_EPSILON * fabs(lnpre_val); + const int stat_e = gsl_sf_exp_mult_err_e(lnpre_val, lnpre_err, + s1*s2*lag.val, lag.err, + result); + return GSL_ERROR_SELECT_5(stat_e, stat_l, stat_g1, stat_g2, stat_f); + } + else { + gsl_sf_result lnbeta; + gsl_sf_lnbeta_e(b, n, &lnbeta); + if(fabs(lnbeta.val) < 0.1) { + /* As we have noted, when B(x,y) is near 1, + * evaluating log(B(x,y)) is not accurate. + * Instead we evaluate B(x,y) directly. + */ + const double ln_term_val = log(1.25*n); + const double ln_term_err = 2.0 * GSL_DBL_EPSILON * ln_term_val; + gsl_sf_result beta; + int stat_b = gsl_sf_beta_e(b, n, &beta); + int stat_e = gsl_sf_exp_mult_err_e(ln_term_val, ln_term_err, + lag.val, lag.err, + result); + result->val *= beta.val/1.25; + result->err *= beta.val/1.25; + return GSL_ERROR_SELECT_3(stat_e, stat_l, stat_b); + } + else { + /* B(x,y) was not near 1, so it is safe to use + * the logarithmic values. + */ + const double ln_n = log(n); + const double ln_term_val = lnbeta.val + ln_n; + const double ln_term_err = lnbeta.err + 2.0 * GSL_DBL_EPSILON * fabs(ln_n); + int stat_e = gsl_sf_exp_mult_err_e(ln_term_val, ln_term_err, + lag.val, lag.err, + result); + return GSL_ERROR_SELECT_2(stat_e, stat_l); + } + } +} + + +/* Handle negative integer a case for x > 0 and + * generic b. + * + * Combine [Abramowitz+Stegun, 13.6.9 + 13.6.27] + * M(-n,b,x) = (-1)^n / (b)_n U(-n,b,x) = n! / (b)_n Laguerre^(b-1)_n(x) + */ +#if 0 +static +int +hyperg_1F1_a_negint_U(const int a, const double b, const double x, gsl_sf_result * result) +{ + const int n = -a; + const double sgn = ( GSL_IS_ODD(n) ? -1.0 : 1.0 ); + double sgpoch; + gsl_sf_result lnpoch; + gsl_sf_result U; + const int stat_p = gsl_sf_lnpoch_sgn_e(b, n, &lnpoch, &sgpoch); + const int stat_U = gsl_sf_hyperg_U_e(-n, b, x, &U); + const int stat_e = gsl_sf_exp_mult_err_e(-lnpoch.val, lnpoch.err, + sgn * sgpoch * U.val, U.err, + result); + return GSL_ERROR_SELECT_3(stat_e, stat_U, stat_p); +} +#endif + + +/* Assumes a <= -1, b <= -1, and b <= a. + */ +static +int +hyperg_1F1_ab_negint(const int a, const int b, const double x, gsl_sf_result * result) +{ + if(x == 0.0) { + result->val = 1.0; + result->err = 0.0; + return GSL_SUCCESS; + } + else if(x > 0.0) { + return hyperg_1F1_a_negint_poly(a, b, x, result); + } + else { + /* Apply a Kummer transformation to make x > 0 so + * we can evaluate the polynomial safely. Of course, + * this assumes b <= a, which must be true for + * a<0 and b<0, since otherwise the thing is undefined. + */ + gsl_sf_result K; + int stat_K = hyperg_1F1_a_negint_poly(b-a, b, -x, &K); + int stat_e = gsl_sf_exp_mult_err_e(x, 2.0 * GSL_DBL_EPSILON * fabs(x), + K.val, K.err, + result); + return GSL_ERROR_SELECT_2(stat_e, stat_K); + } +} + + +/* [Abramowitz+Stegun, 13.1.3] + * + * M(a,b,x) = Gamma(1+a-b)/Gamma(2-b) x^(1-b) * + * { Gamma(b)/Gamma(a) M(1+a-b,2-b,x) - (b-1) U(1+a-b,2-b,x) } + * + * b not an integer >= 2 + * a-b not a negative integer + */ +static +int +hyperg_1F1_U(const double a, const double b, const double x, gsl_sf_result * result) +{ + const double bp = 2.0 - b; + const double ap = a - b + 1.0; + + gsl_sf_result lg_ap, lg_bp; + double sg_ap; + int stat_lg0 = gsl_sf_lngamma_sgn_e(ap, &lg_ap, &sg_ap); + int stat_lg1 = gsl_sf_lngamma_e(bp, &lg_bp); + int stat_lg2 = GSL_ERROR_SELECT_2(stat_lg0, stat_lg1); + double t1 = (bp-1.0) * log(x); + double lnpre_val = lg_ap.val - lg_bp.val + t1; + double lnpre_err = lg_ap.err + lg_bp.err + 2.0 * GSL_DBL_EPSILON * fabs(t1); + + gsl_sf_result lg_2mbp, lg_1papmbp; + double sg_2mbp, sg_1papmbp; + int stat_lg3 = gsl_sf_lngamma_sgn_e(2.0-bp, &lg_2mbp, &sg_2mbp); + int stat_lg4 = gsl_sf_lngamma_sgn_e(1.0+ap-bp, &lg_1papmbp, &sg_1papmbp); + int stat_lg5 = GSL_ERROR_SELECT_2(stat_lg3, stat_lg4); + double lnc1_val = lg_2mbp.val - lg_1papmbp.val; + double lnc1_err = lg_2mbp.err + lg_1papmbp.err + + GSL_DBL_EPSILON * (fabs(lg_2mbp.val) + fabs(lg_1papmbp.val)); + + gsl_sf_result M; + gsl_sf_result_e10 U; + int stat_F = gsl_sf_hyperg_1F1_e(ap, bp, x, &M); + int stat_U = gsl_sf_hyperg_U_e10_e(ap, bp, x, &U); + int stat_FU = GSL_ERROR_SELECT_2(stat_F, stat_U); + + gsl_sf_result_e10 term_M; + int stat_e0 = gsl_sf_exp_mult_err_e10_e(lnc1_val, lnc1_err, + sg_2mbp*sg_1papmbp*M.val, M.err, + &term_M); + + const double ombp = 1.0 - bp; + const double Uee_val = U.e10*M_LN10; + const double Uee_err = 2.0 * GSL_DBL_EPSILON * fabs(Uee_val); + const double Mee_val = term_M.e10*M_LN10; + const double Mee_err = 2.0 * GSL_DBL_EPSILON * fabs(Mee_val); + int stat_e1; + + /* Do a little dance with the exponential prefactors + * to avoid overflows in intermediate results. + */ + if(Uee_val > Mee_val) { + const double factorM_val = exp(Mee_val-Uee_val); + const double factorM_err = 2.0 * GSL_DBL_EPSILON * (fabs(Mee_val-Uee_val)+1.0) * factorM_val; + const double inner_val = term_M.val*factorM_val - ombp*U.val; + const double inner_err = + term_M.err*factorM_val + fabs(ombp) * U.err + + fabs(term_M.val) * factorM_err + + GSL_DBL_EPSILON * (fabs(term_M.val*factorM_val) + fabs(ombp*U.val)); + stat_e1 = gsl_sf_exp_mult_err_e(lnpre_val+Uee_val, lnpre_err+Uee_err, + sg_ap*inner_val, inner_err, + result); + } + else { + const double factorU_val = exp(Uee_val - Mee_val); + const double factorU_err = 2.0 * GSL_DBL_EPSILON * (fabs(Mee_val-Uee_val)+1.0) * factorU_val; + const double inner_val = term_M.val - ombp*factorU_val*U.val; + const double inner_err = + term_M.err + fabs(ombp*factorU_val*U.err) + + fabs(ombp*factorU_err*U.val) + + GSL_DBL_EPSILON * (fabs(term_M.val) + fabs(ombp*factorU_val*U.val)); + stat_e1 = gsl_sf_exp_mult_err_e(lnpre_val+Mee_val, lnpre_err+Mee_err, + sg_ap*inner_val, inner_err, + result); + } + + return GSL_ERROR_SELECT_5(stat_e1, stat_e0, stat_FU, stat_lg5, stat_lg2); +} + + +/* Handle case of generic positive a, b. + * Assumes b-a is not a negative integer. + */ +static +int +hyperg_1F1_ab_pos(const double a, const double b, + const double x, + gsl_sf_result * result) +{ + const double ax = fabs(x); + + if( ( b < 10.0 && a < 10.0 && ax < 5.0 ) + || ( b > a*ax ) + || ( b > a && ax < 5.0 ) + ) { + return gsl_sf_hyperg_1F1_series_e(a, b, x, result); + } + else if( x < -100.0 + && GSL_MAX_DBL(fabs(a),1.0)*GSL_MAX_DBL(fabs(1.0+a-b),1.0) < 0.7*fabs(x) + ) { + /* Large negative x asymptotic. + */ + return hyperg_1F1_asymp_negx(a, b, x, result); + } + else if( x > 100.0 + && GSL_MAX_DBL(fabs(b-a),1.0)*GSL_MAX_DBL(fabs(1.0-a),1.0) < 0.7*fabs(x) + ) { + /* Large positive x asymptotic. + */ + return hyperg_1F1_asymp_posx(a, b, x, result); + } + else if(fabs(b-a) <= 1.0) { + /* Directly handle b near a. + */ + return hyperg_1F1_beps_bgt0(a-b, b, x, result); /* a = b + eps */ + } + + else if(b > a && b >= 2*a + x) { + /* Use the Gautschi CF series, then + * recurse backward to a near 0 for normalization. + * This will work for either sign of x. + */ + double rap; + int stat_CF1 = hyperg_1F1_CF1_p_ser(a, b, x, &rap); + double ra = 1.0 + x/a * rap; + + double Ma = GSL_SQRT_DBL_MIN; + double Map1 = ra * Ma; + double Mnp1 = Map1; + double Mn = Ma; + double Mnm1; + gsl_sf_result Mn_true; + int stat_Mt; + double n; + for(n=a; n>0.5; n -= 1.0) { + Mnm1 = (n * Mnp1 - (2.0*n-b+x) * Mn) / (b-n); + Mnp1 = Mn; + Mn = Mnm1; + } + + stat_Mt = hyperg_1F1_small_a_bgt0(n, b, x, &Mn_true); + + result->val = (Ma/Mn) * Mn_true.val; + result->err = fabs(Ma/Mn) * Mn_true.err; + result->err += 2.0 * GSL_DBL_EPSILON * (fabs(a)+1.0) * fabs(result->val); + return GSL_ERROR_SELECT_2(stat_Mt, stat_CF1); + } + else if(b > a && b < 2*a + x && b > x) { + /* Use the Gautschi series representation of + * the continued fraction. Then recurse forward + * to near the a=b line for normalization. This will + * work for either sign of x, although we do need + * to check for b > x, which is relevant when x is positive. + */ + gsl_sf_result Mn_true; + int stat_Mt; + double rap; + int stat_CF1 = hyperg_1F1_CF1_p_ser(a, b, x, &rap); + double ra = 1.0 + x/a * rap; + double Ma = GSL_SQRT_DBL_MIN; + double Mnm1 = Ma; + double Mn = ra * Mnm1; + double Mnp1; + double n; + for(n=a+1.0; nval = Ma/Mn * Mn_true.val; + result->err = fabs(Ma/Mn) * Mn_true.err; + result->err += 2.0 * GSL_DBL_EPSILON * (fabs(b-a)+1.0) * fabs(result->val); + return GSL_ERROR_SELECT_2(stat_Mt, stat_CF1); + } + else if(x >= 0.0) { + + if(b < a) { + /* Forward recursion on a from a=b+eps-1,b+eps. + */ + double N = floor(a-b); + double eps = a - b - N; + gsl_sf_result r_M0; + gsl_sf_result r_M1; + int stat_0 = hyperg_1F1_beps_bgt0(eps-1.0, b, x, &r_M0); + int stat_1 = hyperg_1F1_beps_bgt0(eps, b, x, &r_M1); + double M0 = r_M0.val; + double M1 = r_M1.val; + + double Mam1 = M0; + double Ma = M1; + double Map1; + double ap; + double start_pair = fabs(M0) + fabs(M1); + double minim_pair = GSL_DBL_MAX; + double pair_ratio; + double rat_0 = fabs(r_M0.err/r_M0.val); + double rat_1 = fabs(r_M1.err/r_M1.val); + for(ap=b+eps; apval = Ma; + result->err = 2.0 * (rat_0 + rat_1 + GSL_DBL_EPSILON) * (fabs(b-a)+1.0) * fabs(Ma); + result->err += 2.0 * (rat_0 + rat_1) * pair_ratio*pair_ratio * fabs(Ma); + result->err += 2.0 * GSL_DBL_EPSILON * fabs(Ma); + return GSL_ERROR_SELECT_2(stat_0, stat_1); + } + else { + /* b > a + * b < 2a + x + * b <= x + * + * Recurse forward on a from a=eps,eps+1. + */ + double eps = a - floor(a); + gsl_sf_result r_Mnm1; + gsl_sf_result r_Mn; + int stat_0 = hyperg_1F1_small_a_bgt0(eps, b, x, &r_Mnm1); + int stat_1 = hyperg_1F1_small_a_bgt0(eps+1.0, b, x, &r_Mn); + double Mnm1 = r_Mnm1.val; + double Mn = r_Mn.val; + double Mnp1; + + double n; + double start_pair = fabs(Mn) + fabs(Mnm1); + double minim_pair = GSL_DBL_MAX; + double pair_ratio; + double rat_0 = fabs(r_Mnm1.err/r_Mnm1.val); + double rat_1 = fabs(r_Mn.err/r_Mn.val); + for(n=eps+1.0; nval = Mn; + result->err = 2.0 * (rat_0 + rat_1 + GSL_DBL_EPSILON) * (fabs(a)+1.0) * fabs(Mn); + result->err += 2.0 * (rat_0 + rat_1) * pair_ratio*pair_ratio * fabs(Mn); + result->err += 2.0 * GSL_DBL_EPSILON * fabs(Mn); + return GSL_ERROR_SELECT_2(stat_0, stat_1); + } + } + else { + /* x < 0 + * b < a + */ + + if(a <= 0.5*(b-x) || a >= -x) { + /* Recurse down in b, from near the a=b line, b=a+eps,a+eps-1. + */ + double N = floor(a - b); + double eps = 1.0 + N - a + b; + gsl_sf_result r_Manp1; + gsl_sf_result r_Man; + int stat_0 = hyperg_1F1_beps_bgt0(-eps, a+eps, x, &r_Manp1); + int stat_1 = hyperg_1F1_beps_bgt0(1.0-eps, a+eps-1.0, x, &r_Man); + double Manp1 = r_Manp1.val; + double Man = r_Man.val; + double Manm1; + + double n; + double start_pair = fabs(Manp1) + fabs(Man); + double minim_pair = GSL_DBL_MAX; + double pair_ratio; + double rat_0 = fabs(r_Manp1.err/r_Manp1.val); + double rat_1 = fabs(r_Man.err/r_Man.val); + for(n=a+eps-1.0; n>b+0.1; n -= 1.0) { + Manm1 = (-n*(1-n-x)*Man - x*(n-a)*Manp1)/(n*(n-1.0)); + Manp1 = Man; + Man = Manm1; + minim_pair = GSL_MIN_DBL(fabs(Manp1) + fabs(Man), minim_pair); + } + + /* FIXME: this is a nasty little hack; there is some + (transient?) instability in this recurrence for some + values. I can tell when it happens, which is when + this pair_ratio is large. But I do not know how to + measure the error in terms of it. I guessed quadratic + below, but it is probably worse than that. + */ + pair_ratio = start_pair/minim_pair; + result->val = Man; + result->err = 2.0 * (rat_0 + rat_1 + GSL_DBL_EPSILON) * (fabs(b-a)+1.0) * fabs(Man); + result->err *= pair_ratio*pair_ratio + 1.0; + return GSL_ERROR_SELECT_2(stat_0, stat_1); + } + else { + /* Pick a0 such that b ~= 2a0 + x, then + * recurse down in b from a0,a0 to determine + * the values near the line b=2a+x. Then recurse + * forward on a from a0. + */ + double epsa = a - floor(a); + double a0 = floor(0.5*(b-x)) + epsa; + double N = floor(a0 - b); + double epsb = 1.0 + N - a0 + b; + double Ma0b; + double Ma0bp1; + double Ma0p1b; + int stat_a0; + double Mnm1; + double Mn; + double Mnp1; + double n; + double err_rat; + { + gsl_sf_result r_Ma0np1; + gsl_sf_result r_Ma0n; + int stat_0 = hyperg_1F1_beps_bgt0(-epsb, a0+epsb, x, &r_Ma0np1); + int stat_1 = hyperg_1F1_beps_bgt0(1.0-epsb, a0+epsb-1.0, x, &r_Ma0n); + double Ma0np1 = r_Ma0np1.val; + double Ma0n = r_Ma0n.val; + double Ma0nm1; + + err_rat = fabs(r_Ma0np1.err/r_Ma0np1.val) + fabs(r_Ma0n.err/r_Ma0n.val); + + for(n=a0+epsb-1.0; n>b+0.1; n -= 1.0) { + Ma0nm1 = (-n*(1-n-x)*Ma0n - x*(n-a0)*Ma0np1)/(n*(n-1.0)); + Ma0np1 = Ma0n; + Ma0n = Ma0nm1; + } + Ma0bp1 = Ma0np1; + Ma0b = Ma0n; + Ma0p1b = (b*(a0+x)*Ma0b+x*(a0-b)*Ma0bp1)/(a0*b); /* right-down hook */ + stat_a0 = GSL_ERROR_SELECT_2(stat_0, stat_1); + } + + + /* Initialise the recurrence correctly BJG */ + + if (a0 >= a - 0.1) + { + Mn = Ma0b; + } + else if (a0 + 1>= a - 0.1) + { + Mn = Ma0p1b; + } + else + { + Mnm1 = Ma0b; + Mn = Ma0p1b; + + for(n=a0+1.0; nval = Mn; + result->err = (err_rat + GSL_DBL_EPSILON) * (fabs(b-a)+1.0) * fabs(Mn); + return stat_a0; + } + } +} + + +/* Assumes b != integer + * Assumes a != integer when x > 0 + * Assumes b-a != neg integer when x < 0 + */ +static +int +hyperg_1F1_ab_neg(const double a, const double b, const double x, + gsl_sf_result * result) +{ + const double bma = b - a; + const double abs_x = fabs(x); + const double abs_a = fabs(a); + const double abs_b = fabs(b); + const double size_a = GSL_MAX(abs_a, 1.0); + const double size_b = GSL_MAX(abs_b, 1.0); + const int bma_integer = ( bma - floor(bma+0.5) < _1F1_INT_THRESHOLD ); + + if( (abs_a < 10.0 && abs_b < 10.0 && abs_x < 5.0) + || (b > 0.8*GSL_MAX(fabs(a),1.0)*fabs(x)) + ) { + return gsl_sf_hyperg_1F1_series_e(a, b, x, result); + } + else if( x > 0.0 + && size_b > size_a + && size_a*log(M_E*x/size_b) < GSL_LOG_DBL_EPSILON+7.0 + ) { + /* Series terms are positive definite up until + * there is a sign change. But by then the + * terms are small due to the last condition. + */ + return gsl_sf_hyperg_1F1_series_e(a, b, x, result); + } + else if( (abs_x < 5.0 && fabs(bma) < 10.0 && abs_b < 10.0) + || (b > 0.8*GSL_MAX_DBL(fabs(bma),1.0)*abs_x) + ) { + /* Use Kummer transformation to render series safe. + */ + gsl_sf_result Kummer_1F1; + int stat_K = gsl_sf_hyperg_1F1_series_e(bma, b, -x, &Kummer_1F1); + int stat_e = gsl_sf_exp_mult_err_e(x, GSL_DBL_EPSILON * fabs(x), + Kummer_1F1.val, Kummer_1F1.err, + result); + return GSL_ERROR_SELECT_2(stat_e, stat_K); + } + else if( x < -30.0 + && GSL_MAX_DBL(fabs(a),1.0)*GSL_MAX_DBL(fabs(1.0+a-b),1.0) < 0.99*fabs(x) + ) { + /* Large negative x asymptotic. + * Note that we do not check if b-a is a negative integer. + */ + return hyperg_1F1_asymp_negx(a, b, x, result); + } + else if( x > 100.0 + && GSL_MAX_DBL(fabs(bma),1.0)*GSL_MAX_DBL(fabs(1.0-a),1.0) < 0.99*fabs(x) + ) { + /* Large positive x asymptotic. + * Note that we do not check if a is a negative integer. + */ + return hyperg_1F1_asymp_posx(a, b, x, result); + } + else if(x > 0.0 && !(bma_integer && bma > 0.0)) { + return hyperg_1F1_U(a, b, x, result); + } + else { + /* FIXME: if all else fails, try the series... BJG */ + if (x < 0.0) { + /* Apply Kummer Transformation */ + int status = gsl_sf_hyperg_1F1_series_e(b-a, b, -x, result); + double K_factor = exp(x); + result->val *= K_factor; + result->err *= K_factor; + return status; + } else { + int status = gsl_sf_hyperg_1F1_series_e(a, b, x, result); + return status; + } + + /* Sadness... */ + /* result->val = 0.0; */ + /* result->err = 0.0; */ + /* GSL_ERROR ("error", GSL_EUNIMPL); */ + } +} + + +/*-*-*-*-*-*-*-*-*-*-*-* Functions with Error Codes *-*-*-*-*-*-*-*-*-*-*-*/ + +int +gsl_sf_hyperg_1F1_int_e(const int a, const int b, const double x, gsl_sf_result * result) +{ + /* CHECK_POINTER(result) */ + + if(x == 0.0) { + result->val = 1.0; + result->err = 0.0; + return GSL_SUCCESS; + } + else if(a == b) { + return gsl_sf_exp_e(x, result); + } + else if(b == 0) { + DOMAIN_ERROR(result); + } + else if(a == 0) { + result->val = 1.0; + result->err = 0.0; + return GSL_SUCCESS; + } + else if(b < 0 && (a < b || a > 0)) { + /* Standard domain error due to singularity. */ + DOMAIN_ERROR(result); + } + else if(x > 100.0 && GSL_MAX_DBL(1.0,fabs(b-a))*GSL_MAX_DBL(1.0,fabs(1-a)) < 0.5 * x) { + /* x -> +Inf asymptotic */ + return hyperg_1F1_asymp_posx(a, b, x, result); + } + else if(x < -100.0 && GSL_MAX_DBL(1.0,fabs(a))*GSL_MAX_DBL(1.0,fabs(1+a-b)) < 0.5 * fabs(x)) { + /* x -> -Inf asymptotic */ + return hyperg_1F1_asymp_negx(a, b, x, result); + } + else if(a < 0 && b < 0) { + return hyperg_1F1_ab_negint(a, b, x, result); + } + else if(a < 0 && b > 0) { + /* Use Kummer to reduce it to the positive integer case. + * Note that b > a, strictly, since we already trapped b = a. + */ + gsl_sf_result Kummer_1F1; + int stat_K = hyperg_1F1_ab_posint(b-a, b, -x, &Kummer_1F1); + int stat_e = gsl_sf_exp_mult_err_e(x, GSL_DBL_EPSILON * fabs(x), + Kummer_1F1.val, Kummer_1F1.err, + result); + return GSL_ERROR_SELECT_2(stat_e, stat_K); + } + else { + /* a > 0 and b > 0 */ + return hyperg_1F1_ab_posint(a, b, x, result); + } +} + + +int +gsl_sf_hyperg_1F1_e(const double a, const double b, const double x, + gsl_sf_result * result + ) +{ + const double bma = b - a; + const double rinta = floor(a + 0.5); + const double rintb = floor(b + 0.5); + const double rintbma = floor(bma + 0.5); + const int a_integer = ( fabs(a-rinta) < _1F1_INT_THRESHOLD && rinta > INT_MIN && rinta < INT_MAX ); + const int b_integer = ( fabs(b-rintb) < _1F1_INT_THRESHOLD && rintb > INT_MIN && rintb < INT_MAX ); + const int bma_integer = ( fabs(bma-rintbma) < _1F1_INT_THRESHOLD && rintbma > INT_MIN && rintbma < INT_MAX ); + const int b_neg_integer = ( b < -0.1 && b_integer ); + const int a_neg_integer = ( a < -0.1 && a_integer ); + const int bma_neg_integer = ( bma < -0.1 && bma_integer ); + + /* CHECK_POINTER(result) */ + + if(x == 0.0) { + /* Testing for this before testing a and b + * is somewhat arbitrary. The result is that + * we have 1F1(a,0,0) = 1. + */ + result->val = 1.0; + result->err = 0.0; + return GSL_SUCCESS; + } + else if(b == 0.0) { + DOMAIN_ERROR(result); + } + else if(a == 0.0) { + result->val = 1.0; + result->err = 0.0; + return GSL_SUCCESS; + } + else if(a == b) { + /* case: a==b; exp(x) + * It's good to test exact equality now. + * We also test approximate equality later. + */ + return gsl_sf_exp_e(x, result); + } else if(fabs(b) < _1F1_INT_THRESHOLD && fabs(a) < _1F1_INT_THRESHOLD) { + /* a and b near zero: 1 + a/b (exp(x)-1) + */ + + /* Note that neither a nor b is zero, since + * we eliminated that with the above tests. + */ + + gsl_sf_result exm1; + int stat_e = gsl_sf_expm1_e(x, &exm1); + double sa = ( a > 0.0 ? 1.0 : -1.0 ); + double sb = ( b > 0.0 ? 1.0 : -1.0 ); + double lnab = log(fabs(a/b)); /* safe */ + gsl_sf_result hx; + int stat_hx = gsl_sf_exp_mult_err_e(lnab, GSL_DBL_EPSILON * fabs(lnab), + sa * sb * exm1.val, exm1.err, + &hx); + result->val = (hx.val == GSL_DBL_MAX ? hx.val : 1.0 + hx.val); /* FIXME: excessive paranoia ? what is DBL_MAX+1 ?*/ + result->err = hx.err; + return GSL_ERROR_SELECT_2(stat_hx, stat_e); + } else if (fabs(b) < _1F1_INT_THRESHOLD && fabs(x*a) < 1) { + /* b near zero and a not near zero + */ + const double m_arg = 1.0/(0.5*b); + gsl_sf_result F_renorm; + int stat_F = hyperg_1F1_renorm_b0(a, x, &F_renorm); + int stat_m = gsl_sf_multiply_err_e(m_arg, 2.0 * GSL_DBL_EPSILON * m_arg, + 0.5*F_renorm.val, 0.5*F_renorm.err, + result); + return GSL_ERROR_SELECT_2(stat_m, stat_F); + } + else if(a_integer && b_integer) { + /* Check for reduction to the integer case. + * Relies on the arbitrary "near an integer" test. + */ + return gsl_sf_hyperg_1F1_int_e((int)rinta, (int)rintb, x, result); + } + else if(b_neg_integer && !(a_neg_integer && a > b)) { + /* Standard domain error due to + * uncancelled singularity. + */ + DOMAIN_ERROR(result); + } + else if(a_neg_integer) { + return hyperg_1F1_a_negint_lag((int)rinta, b, x, result); + } + else if(b > 0.0) { + if(-1.0 <= a && a <= 1.0) { + /* Handle small a explicitly. + */ + return hyperg_1F1_small_a_bgt0(a, b, x, result); + } + else if(bma_neg_integer) { + /* Catch this now, to avoid problems in the + * generic evaluation code. + */ + gsl_sf_result Kummer_1F1; + int stat_K = hyperg_1F1_a_negint_lag((int)rintbma, b, -x, &Kummer_1F1); + int stat_e = gsl_sf_exp_mult_err_e(x, GSL_DBL_EPSILON * fabs(x), + Kummer_1F1.val, Kummer_1F1.err, + result); + return GSL_ERROR_SELECT_2(stat_e, stat_K); + } + else if(a < 0.0 && fabs(x) < 2*GSL_LOG_DBL_MAX) { + /* Use Kummer to reduce it to the generic positive case. + * Note that b > a, strictly, since we already trapped b = a. + * Also b-(b-a)=a, and a is not a negative integer here, + * so the generic evaluation is safe. + */ + gsl_sf_result Kummer_1F1; + int stat_K = hyperg_1F1_ab_pos(b-a, b, -x, &Kummer_1F1); + int stat_e = gsl_sf_exp_mult_err_e(x, GSL_DBL_EPSILON * fabs(x), + Kummer_1F1.val, Kummer_1F1.err, + result); + return GSL_ERROR_SELECT_2(stat_e, stat_K); + } + else if (a > 0) { + /* a > 0.0 */ + return hyperg_1F1_ab_pos(a, b, x, result); + } else { + return gsl_sf_hyperg_1F1_series_e(a, b, x, result); + } + } + else { + /* b < 0.0 */ + + if(bma_neg_integer && x < 0.0) { + /* Handle this now to prevent problems + * in the generic evaluation. + */ + gsl_sf_result K; + int stat_K; + int stat_e; + if(a < 0.0) { + /* Kummer transformed version of safe polynomial. + * The condition a < 0 is equivalent to b < b-a, + * which is the condition required for the series + * to be positive definite here. + */ + stat_K = hyperg_1F1_a_negint_poly((int)rintbma, b, -x, &K); + } + else { + /* Generic eval for negative integer a. */ + stat_K = hyperg_1F1_a_negint_lag((int)rintbma, b, -x, &K); + } + stat_e = gsl_sf_exp_mult_err_e(x, GSL_DBL_EPSILON * fabs(x), + K.val, K.err, + result); + return GSL_ERROR_SELECT_2(stat_e, stat_K); + } + else if(a > 0.0) { + /* Use Kummer to reduce it to the generic negative case. + */ + gsl_sf_result K; + int stat_K = hyperg_1F1_ab_neg(b-a, b, -x, &K); + int stat_e = gsl_sf_exp_mult_err_e(x, GSL_DBL_EPSILON * fabs(x), + K.val, K.err, + result); + return GSL_ERROR_SELECT_2(stat_e, stat_K); + } + else { + return hyperg_1F1_ab_neg(a, b, x, result); + } + } +} + + + +#if 0 + /* Luke in the canonical case. + */ + if(x < 0.0 && !a_neg_integer && !bma_neg_integer) { + double prec; + return hyperg_1F1_luke(a, b, x, result, &prec); + } + + + /* Luke with Kummer transformation. + */ + if(x > 0.0 && !a_neg_integer && !bma_neg_integer) { + double prec; + double Kummer_1F1; + double ex; + int stat_F = hyperg_1F1_luke(b-a, b, -x, &Kummer_1F1, &prec); + int stat_e = gsl_sf_exp_e(x, &ex); + if(stat_F == GSL_SUCCESS && stat_e == GSL_SUCCESS) { + double lnr = log(fabs(Kummer_1F1)) + x; + if(lnr < GSL_LOG_DBL_MAX) { + *result = ex * Kummer_1F1; + return GSL_SUCCESS; + } + else { + *result = GSL_POSINF; + GSL_ERROR ("overflow", GSL_EOVRFLW); + } + } + else if(stat_F != GSL_SUCCESS) { + *result = 0.0; + return stat_F; + } + else { + *result = 0.0; + return stat_e; + } + } +#endif + + + +/*-*-*-*-*-*-*-*-*-* Functions w/ Natural Prototypes *-*-*-*-*-*-*-*-*-*-*/ + +#include "eval.h" + +double gsl_sf_hyperg_1F1_int(const int m, const int n, double x) +{ + EVAL_RESULT(gsl_sf_hyperg_1F1_int_e(m, n, x, &result)); +} + +double gsl_sf_hyperg_1F1(double a, double b, double x) +{ + EVAL_RESULT(gsl_sf_hyperg_1F1_e(a, b, x, &result)); +} diff --git a/gsl-2.5/specfunc/hyperg_1F1.lo b/gsl-2.5/specfunc/hyperg_1F1.lo new file mode 100644 index 00000000..b1753af4 --- /dev/null +++ b/gsl-2.5/specfunc/hyperg_1F1.lo @@ -0,0 +1,12 @@ +# hyperg_1F1.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/hyperg_1F1.o' + +# Name of the non-PIC object +non_pic_object='hyperg_1F1.o' + diff --git a/gsl-2.5/specfunc/hyperg_2F0.c b/gsl-2.5/specfunc/hyperg_2F0.c new file mode 100644 index 00000000..69c37368 --- /dev/null +++ b/gsl-2.5/specfunc/hyperg_2F0.c @@ -0,0 +1,63 @@ +/* specfunc/hyperg_2F0.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ + +#include +#include +#include +#include + +#include "error.h" +#include "hyperg.h" + +int +gsl_sf_hyperg_2F0_e(const double a, const double b, const double x, gsl_sf_result * result) +{ + if(x < 0.0) { + /* Use "definition" 2F0(a,b,x) = (-1/x)^a U(a,1+a-b,-1/x). + */ + gsl_sf_result U; + double pre = pow(-1.0/x, a); + int stat_U = gsl_sf_hyperg_U_e(a, 1.0+a-b, -1.0/x, &U); + result->val = pre * U.val; + result->err = GSL_DBL_EPSILON * fabs(result->val) + pre * U.err; + return stat_U; + } + else if(x == 0.0) { + result->val = 1.0; + result->err = 0.0; + return GSL_SUCCESS; + } + else { + /* Use asymptotic series. ?? + */ + /* return hyperg_2F0_series(a, b, x, -1, result, &prec); */ + DOMAIN_ERROR(result); + } +} + +/*-*-*-*-*-*-*-*-*-* Functions w/ Natural Prototypes *-*-*-*-*-*-*-*-*-*-*/ + +#include "eval.h" + +double gsl_sf_hyperg_2F0(const double a, const double b, const double x) +{ + EVAL_RESULT(gsl_sf_hyperg_2F0_e(a, b, x, &result)); +} diff --git a/gsl-2.5/specfunc/hyperg_2F0.lo b/gsl-2.5/specfunc/hyperg_2F0.lo new file mode 100644 index 00000000..efc382ca --- /dev/null +++ b/gsl-2.5/specfunc/hyperg_2F0.lo @@ -0,0 +1,12 @@ +# hyperg_2F0.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/hyperg_2F0.o' + +# Name of the non-PIC object +non_pic_object='hyperg_2F0.o' + diff --git a/gsl-2.5/specfunc/hyperg_2F1.c b/gsl-2.5/specfunc/hyperg_2F1.c new file mode 100644 index 00000000..761554f1 --- /dev/null +++ b/gsl-2.5/specfunc/hyperg_2F1.c @@ -0,0 +1,964 @@ +/* specfunc/hyperg_2F1.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2004 Gerard Jungman + * Copyright (C) 2009 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ + +#include +#include +#include +#include +#include +#include +#include +#include + +#include "error.h" + +#define locEPS (1000.0*GSL_DBL_EPSILON) + + +/* Assumes c != negative integer. + */ +static int +hyperg_2F1_series(const double a, const double b, const double c, + const double x, + gsl_sf_result * result + ) +{ + double sum_pos = 1.0; + double sum_neg = 0.0; + double del_pos = 1.0; + double del_neg = 0.0; + double del = 1.0; + double del_prev; + double k = 0.0; + int i = 0; + + if(fabs(c) < GSL_DBL_EPSILON) { + result->val = 0.0; /* FIXME: ?? */ + result->err = 1.0; + GSL_ERROR ("error", GSL_EDOM); + } + + do { + if(++i > 30000) { + result->val = sum_pos - sum_neg; + result->err = del_pos + del_neg; + result->err += 2.0 * GSL_DBL_EPSILON * (sum_pos + sum_neg); + result->err += 2.0 * GSL_DBL_EPSILON * (2.0*sqrt(k)+1.0) * fabs(result->val); + GSL_ERROR ("error", GSL_EMAXITER); + } + del_prev = del; + del *= (a+k)*(b+k) * x / ((c+k) * (k+1.0)); /* Gauss series */ + + if(del > 0.0) { + del_pos = del; + sum_pos += del; + } + else if(del == 0.0) { + /* Exact termination (a or b was a negative integer). + */ + del_pos = 0.0; + del_neg = 0.0; + break; + } + else { + del_neg = -del; + sum_neg -= del; + } + + /* + * This stopping criteria is taken from the thesis + * "Computation of Hypergeometic Functions" by J. Pearson, pg. 31 + * (http://people.maths.ox.ac.uk/porterm/research/pearson_final.pdf) + * and fixes bug #45926 + */ + if (fabs(del_prev / (sum_pos - sum_neg)) < GSL_DBL_EPSILON && + fabs(del / (sum_pos - sum_neg)) < GSL_DBL_EPSILON) + break; + + k += 1.0; + } while(fabs((del_pos + del_neg)/(sum_pos-sum_neg)) > GSL_DBL_EPSILON); + + result->val = sum_pos - sum_neg; + result->err = del_pos + del_neg; + result->err += 2.0 * GSL_DBL_EPSILON * (sum_pos + sum_neg); + result->err += 2.0 * GSL_DBL_EPSILON * (2.0*sqrt(k) + 1.0) * fabs(result->val); + + return GSL_SUCCESS; +} + + +/* a = aR + i aI, b = aR - i aI */ +static +int +hyperg_2F1_conj_series(const double aR, const double aI, const double c, + double x, + gsl_sf_result * result) +{ + if(c == 0.0) { + result->val = 0.0; /* FIXME: should be Inf */ + result->err = 0.0; + GSL_ERROR ("error", GSL_EDOM); + } + else { + double sum_pos = 1.0; + double sum_neg = 0.0; + double del_pos = 1.0; + double del_neg = 0.0; + double del = 1.0; + double k = 0.0; + do { + del *= ((aR+k)*(aR+k) + aI*aI)/((k+1.0)*(c+k)) * x; + + if(del >= 0.0) { + del_pos = del; + sum_pos += del; + } + else { + del_neg = -del; + sum_neg -= del; + } + + if(k > 30000) { + result->val = sum_pos - sum_neg; + result->err = del_pos + del_neg; + result->err += 2.0 * GSL_DBL_EPSILON * (sum_pos + sum_neg); + result->err += 2.0 * GSL_DBL_EPSILON * (2.0*sqrt(k)+1.0) * fabs(result->val); + GSL_ERROR ("error", GSL_EMAXITER); + } + + k += 1.0; + } while(fabs((del_pos + del_neg)/(sum_pos - sum_neg)) > GSL_DBL_EPSILON); + + result->val = sum_pos - sum_neg; + result->err = del_pos + del_neg; + result->err += 2.0 * GSL_DBL_EPSILON * (sum_pos + sum_neg); + result->err += 2.0 * GSL_DBL_EPSILON * (2.0*sqrt(k) + 1.0) * fabs(result->val); + + return GSL_SUCCESS; + } +} + + +/* Luke's rational approximation. The most accesible + * discussion is in [Kolbig, CPC 23, 51 (1981)]. + * The convergence is supposedly guaranteed for x < 0. + * You have to read Luke's books to see this and other + * results. Unfortunately, the stability is not so + * clear to me, although it seems very efficient when + * it works. + */ +static +int +hyperg_2F1_luke(const double a, const double b, const double c, + const double xin, + gsl_sf_result * result) +{ + int stat_iter; + const double RECUR_BIG = 1.0e+50; + const int nmax = 20000; + int n = 3; + const double x = -xin; + const double x3 = x*x*x; + const double t0 = a*b/c; + const double t1 = (a+1.0)*(b+1.0)/(2.0*c); + const double t2 = (a+2.0)*(b+2.0)/(2.0*(c+1.0)); + double F = 1.0; + double prec; + + double Bnm3 = 1.0; /* B0 */ + double Bnm2 = 1.0 + t1 * x; /* B1 */ + double Bnm1 = 1.0 + t2 * x * (1.0 + t1/3.0 * x); /* B2 */ + + double Anm3 = 1.0; /* A0 */ + double Anm2 = Bnm2 - t0 * x; /* A1 */ + double Anm1 = Bnm1 - t0*(1.0 + t2*x)*x + t0 * t1 * (c/(c+1.0)) * x*x; /* A2 */ + + while(1) { + double npam1 = n + a - 1; + double npbm1 = n + b - 1; + double npcm1 = n + c - 1; + double npam2 = n + a - 2; + double npbm2 = n + b - 2; + double npcm2 = n + c - 2; + double tnm1 = 2*n - 1; + double tnm3 = 2*n - 3; + double tnm5 = 2*n - 5; + double n2 = n*n; + double F1 = (3.0*n2 + (a+b-6)*n + 2 - a*b - 2*(a+b)) / (2*tnm3*npcm1); + double F2 = -(3.0*n2 - (a+b+6)*n + 2 - a*b)*npam1*npbm1/(4*tnm1*tnm3*npcm2*npcm1); + double F3 = (npam2*npam1*npbm2*npbm1*(n-a-2)*(n-b-2)) / (8*tnm3*tnm3*tnm5*(n+c-3)*npcm2*npcm1); + double E = -npam1*npbm1*(n-c-1) / (2*tnm3*npcm2*npcm1); + + double An = (1.0+F1*x)*Anm1 + (E + F2*x)*x*Anm2 + F3*x3*Anm3; + double Bn = (1.0+F1*x)*Bnm1 + (E + F2*x)*x*Bnm2 + F3*x3*Bnm3; + double r = An/Bn; + + prec = fabs((F - r)/F); + F = r; + + if(prec < GSL_DBL_EPSILON || n > nmax) break; + + if(fabs(An) > RECUR_BIG || fabs(Bn) > RECUR_BIG) { + An /= RECUR_BIG; + Bn /= RECUR_BIG; + Anm1 /= RECUR_BIG; + Bnm1 /= RECUR_BIG; + Anm2 /= RECUR_BIG; + Bnm2 /= RECUR_BIG; + Anm3 /= RECUR_BIG; + Bnm3 /= RECUR_BIG; + } + else if(fabs(An) < 1.0/RECUR_BIG || fabs(Bn) < 1.0/RECUR_BIG) { + An *= RECUR_BIG; + Bn *= RECUR_BIG; + Anm1 *= RECUR_BIG; + Bnm1 *= RECUR_BIG; + Anm2 *= RECUR_BIG; + Bnm2 *= RECUR_BIG; + Anm3 *= RECUR_BIG; + Bnm3 *= RECUR_BIG; + } + + n++; + Bnm3 = Bnm2; + Bnm2 = Bnm1; + Bnm1 = Bn; + Anm3 = Anm2; + Anm2 = Anm1; + Anm1 = An; + } + + result->val = F; + result->err = 2.0 * fabs(prec * F); + result->err += 2.0 * GSL_DBL_EPSILON * (n+1.0) * fabs(F); + + /* FIXME: just a hack: there's a lot of shit going on here */ + result->err *= 8.0 * (fabs(a) + fabs(b) + 1.0); + + stat_iter = (n >= nmax ? GSL_EMAXITER : GSL_SUCCESS ); + + return stat_iter; +} + + +/* Luke's rational approximation for the + * case a = aR + i aI, b = aR - i aI. + */ +static +int +hyperg_2F1_conj_luke(const double aR, const double aI, const double c, + const double xin, + gsl_sf_result * result) +{ + int stat_iter; + const double RECUR_BIG = 1.0e+50; + const int nmax = 10000; + int n = 3; + const double x = -xin; + const double x3 = x*x*x; + const double atimesb = aR*aR + aI*aI; + const double apb = 2.0*aR; + const double t0 = atimesb/c; + const double t1 = (atimesb + apb + 1.0)/(2.0*c); + const double t2 = (atimesb + 2.0*apb + 4.0)/(2.0*(c+1.0)); + double F = 1.0; + double prec; + + double Bnm3 = 1.0; /* B0 */ + double Bnm2 = 1.0 + t1 * x; /* B1 */ + double Bnm1 = 1.0 + t2 * x * (1.0 + t1/3.0 * x); /* B2 */ + + double Anm3 = 1.0; /* A0 */ + double Anm2 = Bnm2 - t0 * x; /* A1 */ + double Anm1 = Bnm1 - t0*(1.0 + t2*x)*x + t0 * t1 * (c/(c+1.0)) * x*x; /* A2 */ + + while(1) { + double nm1 = n - 1; + double nm2 = n - 2; + double npam1_npbm1 = atimesb + nm1*apb + nm1*nm1; + double npam2_npbm2 = atimesb + nm2*apb + nm2*nm2; + double npcm1 = nm1 + c; + double npcm2 = nm2 + c; + double tnm1 = 2*n - 1; + double tnm3 = 2*n - 3; + double tnm5 = 2*n - 5; + double n2 = n*n; + double F1 = (3.0*n2 + (apb-6)*n + 2 - atimesb - 2*apb) / (2*tnm3*npcm1); + double F2 = -(3.0*n2 - (apb+6)*n + 2 - atimesb)*npam1_npbm1/(4*tnm1*tnm3*npcm2*npcm1); + double F3 = (npam2_npbm2*npam1_npbm1*(nm2*nm2 - nm2*apb + atimesb)) / (8*tnm3*tnm3*tnm5*(n+c-3)*npcm2*npcm1); + double E = -npam1_npbm1*(n-c-1) / (2*tnm3*npcm2*npcm1); + + double An = (1.0+F1*x)*Anm1 + (E + F2*x)*x*Anm2 + F3*x3*Anm3; + double Bn = (1.0+F1*x)*Bnm1 + (E + F2*x)*x*Bnm2 + F3*x3*Bnm3; + double r = An/Bn; + + prec = fabs(F - r)/fabs(F); + F = r; + + if(prec < GSL_DBL_EPSILON || n > nmax) break; + + if(fabs(An) > RECUR_BIG || fabs(Bn) > RECUR_BIG) { + An /= RECUR_BIG; + Bn /= RECUR_BIG; + Anm1 /= RECUR_BIG; + Bnm1 /= RECUR_BIG; + Anm2 /= RECUR_BIG; + Bnm2 /= RECUR_BIG; + Anm3 /= RECUR_BIG; + Bnm3 /= RECUR_BIG; + } + else if(fabs(An) < 1.0/RECUR_BIG || fabs(Bn) < 1.0/RECUR_BIG) { + An *= RECUR_BIG; + Bn *= RECUR_BIG; + Anm1 *= RECUR_BIG; + Bnm1 *= RECUR_BIG; + Anm2 *= RECUR_BIG; + Bnm2 *= RECUR_BIG; + Anm3 *= RECUR_BIG; + Bnm3 *= RECUR_BIG; + } + + n++; + Bnm3 = Bnm2; + Bnm2 = Bnm1; + Bnm1 = Bn; + Anm3 = Anm2; + Anm2 = Anm1; + Anm1 = An; + } + + result->val = F; + result->err = 2.0 * fabs(prec * F); + result->err += 2.0 * GSL_DBL_EPSILON * (n+1.0) * fabs(F); + + /* FIXME: see above */ + result->err *= 8.0 * (fabs(aR) + fabs(aI) + 1.0); + + stat_iter = (n >= nmax ? GSL_EMAXITER : GSL_SUCCESS ); + + return stat_iter; +} + + +/* Do the reflection described in [Moshier, p. 334]. + * Assumes a,b,c != neg integer. + */ +static +int +hyperg_2F1_reflect(const double a, const double b, const double c, + const double x, gsl_sf_result * result) +{ + const double d = c - a - b; + const int intd = floor(d+0.5); + const int d_integer = ( fabs(d - intd) < locEPS ); + + if(d_integer) { + const double ln_omx = log(1.0 - x); + const double ad = fabs(d); + int stat_F2 = GSL_SUCCESS; + double sgn_2; + gsl_sf_result F1; + gsl_sf_result F2; + double d1, d2; + gsl_sf_result lng_c; + gsl_sf_result lng_ad2; + gsl_sf_result lng_bd2; + int stat_c; + int stat_ad2; + int stat_bd2; + + if(d >= 0.0) { + d1 = d; + d2 = 0.0; + } + else { + d1 = 0.0; + d2 = d; + } + + stat_ad2 = gsl_sf_lngamma_e(a+d2, &lng_ad2); + stat_bd2 = gsl_sf_lngamma_e(b+d2, &lng_bd2); + stat_c = gsl_sf_lngamma_e(c, &lng_c); + + /* Evaluate F1. + */ + if(ad < GSL_DBL_EPSILON) { + /* d = 0 */ + F1.val = 0.0; + F1.err = 0.0; + } + else { + gsl_sf_result lng_ad; + gsl_sf_result lng_ad1; + gsl_sf_result lng_bd1; + int stat_ad = gsl_sf_lngamma_e(ad, &lng_ad); + int stat_ad1 = gsl_sf_lngamma_e(a+d1, &lng_ad1); + int stat_bd1 = gsl_sf_lngamma_e(b+d1, &lng_bd1); + + if(stat_ad1 == GSL_SUCCESS && stat_bd1 == GSL_SUCCESS && stat_ad == GSL_SUCCESS) { + /* Gamma functions in the denominator are ok. + * Proceed with evaluation. + */ + int i; + double sum1 = 1.0; + double term = 1.0; + double ln_pre1_val = lng_ad.val + lng_c.val + d2*ln_omx - lng_ad1.val - lng_bd1.val; + double ln_pre1_err = lng_ad.err + lng_c.err + lng_ad1.err + lng_bd1.err + GSL_DBL_EPSILON * fabs(ln_pre1_val); + int stat_e; + + /* Do F1 sum. + */ + for(i=1; ival = 0.0; + result->err = 0.0; + GSL_ERROR ("error", GSL_EOVRFLW); + } + } + stat_F2 = GSL_ERROR_SELECT_2(stat_F2, stat_dall); + } + else { + /* Gamma functions in the denominator not ok. + * So the F2 term is zero. + */ + F2.val = 0.0; + F2.err = 0.0; + } /* end F2 evaluation */ + + sgn_2 = ( GSL_IS_ODD(intd) ? -1.0 : 1.0 ); + result->val = F1.val + sgn_2 * F2.val; + result->err = F1.err + F2. err; + result->err += 2.0 * GSL_DBL_EPSILON * (fabs(F1.val) + fabs(F2.val)); + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return stat_F2; + } + else { + /* d not an integer */ + + gsl_sf_result pre1, pre2; + double sgn1, sgn2; + gsl_sf_result F1, F2; + int status_F1, status_F2; + + /* These gamma functions appear in the denominator, so we + * catch their harmless domain errors and set the terms to zero. + */ + gsl_sf_result ln_g1ca, ln_g1cb, ln_g2a, ln_g2b; + double sgn_g1ca, sgn_g1cb, sgn_g2a, sgn_g2b; + int stat_1ca = gsl_sf_lngamma_sgn_e(c-a, &ln_g1ca, &sgn_g1ca); + int stat_1cb = gsl_sf_lngamma_sgn_e(c-b, &ln_g1cb, &sgn_g1cb); + int stat_2a = gsl_sf_lngamma_sgn_e(a, &ln_g2a, &sgn_g2a); + int stat_2b = gsl_sf_lngamma_sgn_e(b, &ln_g2b, &sgn_g2b); + int ok1 = (stat_1ca == GSL_SUCCESS && stat_1cb == GSL_SUCCESS); + int ok2 = (stat_2a == GSL_SUCCESS && stat_2b == GSL_SUCCESS); + + gsl_sf_result ln_gc, ln_gd, ln_gmd; + double sgn_gc, sgn_gd, sgn_gmd; + gsl_sf_lngamma_sgn_e( c, &ln_gc, &sgn_gc); + gsl_sf_lngamma_sgn_e( d, &ln_gd, &sgn_gd); + gsl_sf_lngamma_sgn_e(-d, &ln_gmd, &sgn_gmd); + + sgn1 = sgn_gc * sgn_gd * sgn_g1ca * sgn_g1cb; + sgn2 = sgn_gc * sgn_gmd * sgn_g2a * sgn_g2b; + + if(ok1 && ok2) { + double ln_pre1_val = ln_gc.val + ln_gd.val - ln_g1ca.val - ln_g1cb.val; + double ln_pre2_val = ln_gc.val + ln_gmd.val - ln_g2a.val - ln_g2b.val + d*log(1.0-x); + double ln_pre1_err = ln_gc.err + ln_gd.err + ln_g1ca.err + ln_g1cb.err; + double ln_pre2_err = ln_gc.err + ln_gmd.err + ln_g2a.err + ln_g2b.err; + if(ln_pre1_val < GSL_LOG_DBL_MAX && ln_pre2_val < GSL_LOG_DBL_MAX) { + gsl_sf_exp_err_e(ln_pre1_val, ln_pre1_err, &pre1); + gsl_sf_exp_err_e(ln_pre2_val, ln_pre2_err, &pre2); + pre1.val *= sgn1; + pre2.val *= sgn2; + } + else { + OVERFLOW_ERROR(result); + } + } + else if(ok1 && !ok2) { + double ln_pre1_val = ln_gc.val + ln_gd.val - ln_g1ca.val - ln_g1cb.val; + double ln_pre1_err = ln_gc.err + ln_gd.err + ln_g1ca.err + ln_g1cb.err; + if(ln_pre1_val < GSL_LOG_DBL_MAX) { + gsl_sf_exp_err_e(ln_pre1_val, ln_pre1_err, &pre1); + pre1.val *= sgn1; + pre2.val = 0.0; + pre2.err = 0.0; + } + else { + OVERFLOW_ERROR(result); + } + } + else if(!ok1 && ok2) { + double ln_pre2_val = ln_gc.val + ln_gmd.val - ln_g2a.val - ln_g2b.val + d*log(1.0-x); + double ln_pre2_err = ln_gc.err + ln_gmd.err + ln_g2a.err + ln_g2b.err; + if(ln_pre2_val < GSL_LOG_DBL_MAX) { + pre1.val = 0.0; + pre1.err = 0.0; + gsl_sf_exp_err_e(ln_pre2_val, ln_pre2_err, &pre2); + pre2.val *= sgn2; + } + else { + OVERFLOW_ERROR(result); + } + } + else { + pre1.val = 0.0; + pre2.val = 0.0; + UNDERFLOW_ERROR(result); + } + + status_F1 = hyperg_2F1_series( a, b, 1.0-d, 1.0-x, &F1); + status_F2 = hyperg_2F1_series(c-a, c-b, 1.0+d, 1.0-x, &F2); + + result->val = pre1.val*F1.val + pre2.val*F2.val; + result->err = fabs(pre1.val*F1.err) + fabs(pre2.val*F2.err); + result->err += fabs(pre1.err*F1.val) + fabs(pre2.err*F2.val); + result->err += 2.0 * GSL_DBL_EPSILON * (fabs(pre1.val*F1.val) + fabs(pre2.val*F2.val)); + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + + if (status_F1) + return status_F1; + + if (status_F2) + return status_F2; + + return GSL_SUCCESS; + } +} + + +static int pow_omx(const double x, const double p, gsl_sf_result * result) +{ + double ln_omx; + double ln_result; + if(fabs(x) < GSL_ROOT5_DBL_EPSILON) { + ln_omx = -x*(1.0 + x*(1.0/2.0 + x*(1.0/3.0 + x/4.0 + x*x/5.0))); + } + else { + ln_omx = log(1.0-x); + } + ln_result = p * ln_omx; + return gsl_sf_exp_err_e(ln_result, GSL_DBL_EPSILON * fabs(ln_result), result); +} + + +/*-*-*-*-*-*-*-*-*-*-*-* Functions with Error Codes *-*-*-*-*-*-*-*-*-*-*-*/ + +int +gsl_sf_hyperg_2F1_e(double a, double b, const double c, + const double x, + gsl_sf_result * result) +{ + const double d = c - a - b; + const double rinta = floor(a + 0.5); + const double rintb = floor(b + 0.5); + const double rintc = floor(c + 0.5); + const int a_neg_integer = ( a < 0.0 && fabs(a - rinta) < locEPS ); + const int b_neg_integer = ( b < 0.0 && fabs(b - rintb) < locEPS ); + const int c_neg_integer = ( c < 0.0 && fabs(c - rintc) < locEPS ); + + result->val = 0.0; + result->err = 0.0; + + /* Handle x == 1.0 RJM */ + + if (fabs (x - 1.0) < locEPS && (c - a - b) > 0 && c != 0 && !c_neg_integer) { + gsl_sf_result lngamc, lngamcab, lngamca, lngamcb; + double lngamc_sgn, lngamca_sgn, lngamcb_sgn; + int status; + int stat1 = gsl_sf_lngamma_sgn_e (c, &lngamc, &lngamc_sgn); + int stat2 = gsl_sf_lngamma_e (c - a - b, &lngamcab); + int stat3 = gsl_sf_lngamma_sgn_e (c - a, &lngamca, &lngamca_sgn); + int stat4 = gsl_sf_lngamma_sgn_e (c - b, &lngamcb, &lngamcb_sgn); + + if (stat1 != GSL_SUCCESS || stat2 != GSL_SUCCESS + || stat3 != GSL_SUCCESS || stat4 != GSL_SUCCESS) + { + DOMAIN_ERROR (result); + } + + status = + gsl_sf_exp_err_e (lngamc.val + lngamcab.val - lngamca.val - lngamcb.val, + lngamc.err + lngamcab.err + lngamca.err + lngamcb.err, + result); + + result->val *= lngamc_sgn / (lngamca_sgn * lngamcb_sgn); + return status; + } + + if(x < -1.0 || 1.0 <= x) { + DOMAIN_ERROR(result); + } + + if(c_neg_integer) { + /* If c is a negative integer, then either a or b must be a + negative integer of smaller magnitude than c to ensure + cancellation of the series. */ + if(! (a_neg_integer && a > c + 0.1) && ! (b_neg_integer && b > c + 0.1)) { + DOMAIN_ERROR(result); + } + } + + if(fabs(c-b) < locEPS || fabs(c-a) < locEPS) { + return pow_omx(x, d, result); /* (1-x)^(c-a-b) */ + } + + if(a >= 0.0 && b >= 0.0 && c >=0.0 && x >= 0.0 && x < 0.995) { + /* Series has all positive definite + * terms and x is not close to 1. + */ + return hyperg_2F1_series(a, b, c, x, result); + } + + if(fabs(a) < 10.0 && fabs(b) < 10.0) { + /* a and b are not too large, so we attempt + * variations on the series summation. + */ + if(a_neg_integer) { + return hyperg_2F1_series(rinta, b, c, x, result); + } + if(b_neg_integer) { + return hyperg_2F1_series(a, rintb, c, x, result); + } + + if(x < -0.25) { + return hyperg_2F1_luke(a, b, c, x, result); + } + else if(x < 0.5) { + return hyperg_2F1_series(a, b, c, x, result); + } + else { + if(fabs(c) > 10.0) { + return hyperg_2F1_series(a, b, c, x, result); + } + else { + return hyperg_2F1_reflect(a, b, c, x, result); + } + } + } + else { + /* Either a or b or both large. + * Introduce some new variables ap,bp so that bp is + * the larger in magnitude. + */ + double ap, bp; + if(fabs(a) > fabs(b)) { + bp = a; + ap = b; + } + else { + bp = b; + ap = a; + } + + if(x < 0.0) { + /* What the hell, maybe Luke will converge. + */ + return hyperg_2F1_luke(a, b, c, x, result); + } + + if(GSL_MAX_DBL(fabs(ap),1.0)*fabs(bp)*fabs(x) < 2.0*fabs(c)) { + /* If c is large enough or x is small enough, + * we can attempt the series anyway. + */ + return hyperg_2F1_series(a, b, c, x, result); + } + + if(fabs(bp*bp*x*x) < 0.001*fabs(bp) && fabs(ap) < 10.0) { + /* The famous but nearly worthless "large b" asymptotic. + */ + int stat = gsl_sf_hyperg_1F1_e(ap, c, bp*x, result); + result->err = 0.001 * fabs(result->val); + return stat; + } + + /* We give up. */ + result->val = 0.0; + result->err = 0.0; + GSL_ERROR ("error", GSL_EUNIMPL); + } +} + + +int +gsl_sf_hyperg_2F1_conj_e(const double aR, const double aI, const double c, + const double x, + gsl_sf_result * result) +{ + const double ax = fabs(x); + const double rintc = floor(c + 0.5); + const int c_neg_integer = ( c < 0.0 && fabs(c - rintc) < locEPS ); + + result->val = 0.0; + result->err = 0.0; + + if(ax >= 1.0 || c_neg_integer || c == 0.0) { + DOMAIN_ERROR(result); + } + + if( (ax < 0.25 && fabs(aR) < 20.0 && fabs(aI) < 20.0) + || (c > 0.0 && x > 0.0) + ) { + return hyperg_2F1_conj_series(aR, aI, c, x, result); + } + else if(fabs(aR) < 10.0 && fabs(aI) < 10.0) { + if(x < -0.25) { + return hyperg_2F1_conj_luke(aR, aI, c, x, result); + } + else { + return hyperg_2F1_conj_series(aR, aI, c, x, result); + } + } + else { + if(x < 0.0) { + /* What the hell, maybe Luke will converge. + */ + return hyperg_2F1_conj_luke(aR, aI, c, x, result); + } + + /* Give up. */ + result->val = 0.0; + result->err = 0.0; + GSL_ERROR ("error", GSL_EUNIMPL); + } +} + + +int +gsl_sf_hyperg_2F1_renorm_e(const double a, const double b, const double c, + const double x, + gsl_sf_result * result + ) +{ + const double rinta = floor(a + 0.5); + const double rintb = floor(b + 0.5); + const double rintc = floor(c + 0.5); + const int a_neg_integer = ( a < 0.0 && fabs(a - rinta) < locEPS ); + const int b_neg_integer = ( b < 0.0 && fabs(b - rintb) < locEPS ); + const int c_neg_integer = ( c < 0.0 && fabs(c - rintc) < locEPS ); + + if(c_neg_integer) { + if((a_neg_integer && a > c+0.1) || (b_neg_integer && b > c+0.1)) { + /* 2F1 terminates early */ + result->val = 0.0; + result->err = 0.0; + return GSL_SUCCESS; + } + else { + /* 2F1 does not terminate early enough, so something survives */ + /* [Abramowitz+Stegun, 15.1.2] */ + gsl_sf_result g1, g2, g3, g4, g5; + double s1, s2, s3, s4, s5; + int stat = 0; + stat += gsl_sf_lngamma_sgn_e(a-c+1, &g1, &s1); + stat += gsl_sf_lngamma_sgn_e(b-c+1, &g2, &s2); + stat += gsl_sf_lngamma_sgn_e(a, &g3, &s3); + stat += gsl_sf_lngamma_sgn_e(b, &g4, &s4); + stat += gsl_sf_lngamma_sgn_e(-c+2, &g5, &s5); + if(stat != 0) { + DOMAIN_ERROR(result); + } + else { + gsl_sf_result F; + int stat_F = gsl_sf_hyperg_2F1_e(a-c+1, b-c+1, -c+2, x, &F); + double ln_pre_val = g1.val + g2.val - g3.val - g4.val - g5.val; + double ln_pre_err = g1.err + g2.err + g3.err + g4.err + g5.err; + double sg = s1 * s2 * s3 * s4 * s5; + int stat_e = gsl_sf_exp_mult_err_e(ln_pre_val, ln_pre_err, + sg * F.val, F.err, + result); + return GSL_ERROR_SELECT_2(stat_e, stat_F); + } + } + } + else { + /* generic c */ + gsl_sf_result F; + gsl_sf_result lng; + double sgn; + int stat_g = gsl_sf_lngamma_sgn_e(c, &lng, &sgn); + int stat_F = gsl_sf_hyperg_2F1_e(a, b, c, x, &F); + int stat_e = gsl_sf_exp_mult_err_e(-lng.val, lng.err, + sgn*F.val, F.err, + result); + return GSL_ERROR_SELECT_3(stat_e, stat_F, stat_g); + } +} + + +int +gsl_sf_hyperg_2F1_conj_renorm_e(const double aR, const double aI, const double c, + const double x, + gsl_sf_result * result + ) +{ + const double rintc = floor(c + 0.5); + const double rinta = floor(aR + 0.5); + const int a_neg_integer = ( aR < 0.0 && fabs(aR-rinta) < locEPS && aI == 0.0); + const int c_neg_integer = ( c < 0.0 && fabs(c - rintc) < locEPS ); + + if(c_neg_integer) { + if(a_neg_integer && aR > c+0.1) { + /* 2F1 terminates early */ + result->val = 0.0; + result->err = 0.0; + return GSL_SUCCESS; + } + else { + /* 2F1 does not terminate early enough, so something survives */ + /* [Abramowitz+Stegun, 15.1.2] */ + gsl_sf_result g1, g2; + gsl_sf_result g3; + gsl_sf_result a1, a2; + int stat = 0; + stat += gsl_sf_lngamma_complex_e(aR-c+1, aI, &g1, &a1); + stat += gsl_sf_lngamma_complex_e(aR, aI, &g2, &a2); + stat += gsl_sf_lngamma_e(-c+2.0, &g3); + if(stat != 0) { + DOMAIN_ERROR(result); + } + else { + gsl_sf_result F; + int stat_F = gsl_sf_hyperg_2F1_conj_e(aR-c+1, aI, -c+2, x, &F); + double ln_pre_val = 2.0*(g1.val - g2.val) - g3.val; + double ln_pre_err = 2.0 * (g1.err + g2.err) + g3.err; + int stat_e = gsl_sf_exp_mult_err_e(ln_pre_val, ln_pre_err, + F.val, F.err, + result); + return GSL_ERROR_SELECT_2(stat_e, stat_F); + } + } + } + else { + /* generic c */ + gsl_sf_result F; + gsl_sf_result lng; + double sgn; + int stat_g = gsl_sf_lngamma_sgn_e(c, &lng, &sgn); + int stat_F = gsl_sf_hyperg_2F1_conj_e(aR, aI, c, x, &F); + int stat_e = gsl_sf_exp_mult_err_e(-lng.val, lng.err, + sgn*F.val, F.err, + result); + return GSL_ERROR_SELECT_3(stat_e, stat_F, stat_g); + } +} + + +/*-*-*-*-*-*-*-*-*-* Functions w/ Natural Prototypes *-*-*-*-*-*-*-*-*-*-*/ + +#include "eval.h" + +double gsl_sf_hyperg_2F1(double a, double b, double c, double x) +{ + EVAL_RESULT(gsl_sf_hyperg_2F1_e(a, b, c, x, &result)); +} + +double gsl_sf_hyperg_2F1_conj(double aR, double aI, double c, double x) +{ + EVAL_RESULT(gsl_sf_hyperg_2F1_conj_e(aR, aI, c, x, &result)); +} + +double gsl_sf_hyperg_2F1_renorm(double a, double b, double c, double x) +{ + EVAL_RESULT(gsl_sf_hyperg_2F1_renorm_e(a, b, c, x, &result)); +} + +double gsl_sf_hyperg_2F1_conj_renorm(double aR, double aI, double c, double x) +{ + EVAL_RESULT(gsl_sf_hyperg_2F1_conj_renorm_e(aR, aI, c, x, &result)); +} diff --git a/gsl-2.5/specfunc/hyperg_2F1.lo b/gsl-2.5/specfunc/hyperg_2F1.lo new file mode 100644 index 00000000..4530ff69 --- /dev/null +++ b/gsl-2.5/specfunc/hyperg_2F1.lo @@ -0,0 +1,12 @@ +# hyperg_2F1.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/hyperg_2F1.o' + +# Name of the non-PIC object +non_pic_object='hyperg_2F1.o' + diff --git a/gsl-2.5/specfunc/hyperg_U.c b/gsl-2.5/specfunc/hyperg_U.c new file mode 100644 index 00000000..fb85a72d --- /dev/null +++ b/gsl-2.5/specfunc/hyperg_U.c @@ -0,0 +1,1787 @@ +/* specfunc/hyperg_U.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * Copyright (C) 2009, 2010 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "error.h" +#include "hyperg.h" + +#define INT_THRESHOLD (1000.0*GSL_DBL_EPSILON) + +#define SERIES_EVAL_OK(a,b,x) ((fabs(a) < 5 && b < 5 && x < 2.0) || (fabs(a) < 10 && b < 10 && x < 1.0)) + +#define ASYMP_EVAL_OK(a,b,x) (GSL_MAX_DBL(fabs(a),1.0)*GSL_MAX_DBL(fabs(1.0+a-b),1.0) < 0.99*fabs(x)) + +/* Log[U(a,2a,x)] + * [Abramowitz+stegun, 13.6.21] + * Assumes x > 0, a > 1/2. + */ +static +int +hyperg_lnU_beq2a(const double a, const double x, gsl_sf_result * result) +{ + const double lx = log(x); + const double nu = a - 0.5; + const double lnpre = 0.5*(x - M_LNPI) - nu*lx; + gsl_sf_result lnK; + gsl_sf_bessel_lnKnu_e(nu, 0.5*x, &lnK); + result->val = lnpre + lnK.val; + result->err = 2.0 * GSL_DBL_EPSILON * (fabs(0.5*x) + 0.5*M_LNPI + fabs(nu*lx)); + result->err += lnK.err; + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; +} + + +/* Evaluate u_{N+1}/u_N by Steed's continued fraction method. + * + * u_N := Gamma[a+N]/Gamma[a] U(a + N, b, x) + * + * u_{N+1}/u_N = (a+N) U(a+N+1,b,x)/U(a+N,b,x) + */ +static +int +hyperg_U_CF1(const double a, const double b, const int N, const double x, + double * result, int * count) +{ + const double RECUR_BIG = GSL_SQRT_DBL_MAX; + const int maxiter = 20000; + int n = 1; + double Anm2 = 1.0; + double Bnm2 = 0.0; + double Anm1 = 0.0; + double Bnm1 = 1.0; + double a1 = -(a + N); + double b1 = (b - 2.0*a - x - 2.0*(N+1)); + double An = b1*Anm1 + a1*Anm2; + double Bn = b1*Bnm1 + a1*Bnm2; + double an, bn; + double fn = An/Bn; + + while(n < maxiter) { + double old_fn; + double del; + n++; + Anm2 = Anm1; + Bnm2 = Bnm1; + Anm1 = An; + Bnm1 = Bn; + an = -(a + N + n - b)*(a + N + n - 1.0); + bn = (b - 2.0*a - x - 2.0*(N+n)); + An = bn*Anm1 + an*Anm2; + Bn = bn*Bnm1 + an*Bnm2; + + if(fabs(An) > RECUR_BIG || fabs(Bn) > RECUR_BIG) { + An /= RECUR_BIG; + Bn /= RECUR_BIG; + Anm1 /= RECUR_BIG; + Bnm1 /= RECUR_BIG; + Anm2 /= RECUR_BIG; + Bnm2 /= RECUR_BIG; + } + + old_fn = fn; + fn = An/Bn; + del = old_fn/fn; + + if(fabs(del - 1.0) < 10.0*GSL_DBL_EPSILON) break; + } + + *result = fn; + *count = n; + + if(n == maxiter) + GSL_ERROR ("error", GSL_EMAXITER); + else + return GSL_SUCCESS; +} + + +/* Large x asymptotic for x^a U(a,b,x) + * Based on SLATEC D9CHU() [W. Fullerton] + * + * Uses a rational approximation due to Luke. + * See [Luke, Algorithms for the Computation of Special Functions, p. 252] + * [Luke, Utilitas Math. (1977)] + * + * z^a U(a,b,z) ~ 2F0(a,1+a-b,-1/z) + * + * This assumes that a is not a negative integer and + * that 1+a-b is not a negative integer. If one of them + * is, then the 2F0 actually terminates, the above + * relation is an equality, and the sum should be + * evaluated directly [see below]. + */ +static +int +d9chu(const double a, const double b, const double x, gsl_sf_result * result) +{ + const double EPS = 8.0 * GSL_DBL_EPSILON; /* EPS = 4.0D0*D1MACH(4) */ + const int maxiter = 500; + double aa[4], bb[4]; + int i; + + double bp = 1.0 + a - b; + double ab = a*bp; + double ct2 = 2.0 * (x - ab); + double sab = a + bp; + + double ct3 = sab + 1.0 + ab; + double anbn = ct3 + sab + 3.0; + double ct1 = 1.0 + 2.0*x/anbn; + + bb[0] = 1.0; + aa[0] = 1.0; + + bb[1] = 1.0 + 2.0*x/ct3; + aa[1] = 1.0 + ct2/ct3; + + bb[2] = 1.0 + 6.0*ct1*x/ct3; + aa[2] = 1.0 + 6.0*ab/anbn + 3.0*ct1*ct2/ct3; + + for(i=4; ival = aa[3]/bb[3]; + result->err = 8.0 * GSL_DBL_EPSILON * fabs(result->val); + + if(i == maxiter) { + GSL_ERROR ("error", GSL_EMAXITER); + } + else { + return GSL_SUCCESS; + } +} + + +/* Evaluate asymptotic for z^a U(a,b,z) ~ 2F0(a,1+a-b,-1/z) + * We check for termination of the 2F0 as a special case. + * Assumes x > 0. + * Also assumes a,b are not too large compared to x. + */ +static +int +hyperg_zaU_asymp(const double a, const double b, const double x, gsl_sf_result *result) +{ + const double ap = a; + const double bp = 1.0 + a - b; + const double rintap = floor(ap + 0.5); + const double rintbp = floor(bp + 0.5); + const int ap_neg_int = ( ap < 0.0 && fabs(ap - rintap) < INT_THRESHOLD ); + const int bp_neg_int = ( bp < 0.0 && fabs(bp - rintbp) < INT_THRESHOLD ); + + if(ap_neg_int || bp_neg_int) { + /* Evaluate 2F0 polynomial. + */ + double mxi = -1.0/x; + double nmax = -(int)(GSL_MIN(ap,bp) - 0.1); + double tn = 1.0; + double sum = 1.0; + double n = 1.0; + double sum_err = 0.0; + while(n <= nmax) { + double apn = (ap+n-1.0); + double bpn = (bp+n-1.0); + tn *= ((apn/n)*mxi)*bpn; + sum += tn; + sum_err += 2.0 * GSL_DBL_EPSILON * fabs(tn); + n += 1.0; + } + result->val = sum; + result->err = sum_err; + result->err += 2.0 * GSL_DBL_EPSILON * (fabs(nmax)+1.0) * fabs(sum); + return GSL_SUCCESS; + } + else { + return d9chu(a,b,x,result); + } +} + + +/* Evaluate finite sum which appears below. + */ +static +int +hyperg_U_finite_sum(int N, double a, double b, double x, double xeps, + gsl_sf_result * result) +{ + int i; + double sum_val; + double sum_err; + + if(N <= 0) { + double t_val = 1.0; + double t_err = 0.0; + gsl_sf_result poch; + int stat_poch; + + sum_val = 1.0; + sum_err = 0.0; + for(i=1; i<= -N; i++) { + const double xi1 = i - 1; + const double mult = (a+xi1)*x/((b+xi1)*(xi1+1.0)); + t_val *= mult; + t_err += fabs(mult) * t_err + fabs(t_val) * 8.0 * 2.0 * GSL_DBL_EPSILON; + sum_val += t_val; + sum_err += t_err; + } + + stat_poch = gsl_sf_poch_e(1.0+a-b, -a, &poch); + + result->val = sum_val * poch.val; + result->err = fabs(sum_val) * poch.err + sum_err * fabs(poch.val); + result->err += fabs(poch.val) * (fabs(N) + 2.0) * GSL_DBL_EPSILON * fabs(sum_val); + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + result->err *= 2.0; /* FIXME: fudge factor... why is the error estimate too small? */ + return stat_poch; + } + else { + const int M = N - 2; + if(M < 0) { + result->val = 0.0; + result->err = 0.0; + return GSL_SUCCESS; + } + else { + gsl_sf_result gbm1; + gsl_sf_result gamr; + int stat_gbm1; + int stat_gamr; + double t_val = 1.0; + double t_err = 0.0; + + sum_val = 1.0; + sum_err = 0.0; + for(i=1; i<=M; i++) { + const double mult = (a-b+i)*x/((1.0-b+i)*i); + t_val *= mult; + t_err += t_err * fabs(mult) + fabs(t_val) * 8.0 * 2.0 * GSL_DBL_EPSILON; + sum_val += t_val; + sum_err += t_err; + } + + stat_gbm1 = gsl_sf_gamma_e(b-1.0, &gbm1); + stat_gamr = gsl_sf_gammainv_e(a, &gamr); + + if(stat_gbm1 == GSL_SUCCESS) { + gsl_sf_result powx1N; + int stat_p = gsl_sf_pow_int_e(x, 1-N, &powx1N); + double pe_val = powx1N.val * xeps; + double pe_err = powx1N.err * fabs(xeps) + 2.0 * GSL_DBL_EPSILON * fabs(pe_val); + double coeff_val = gbm1.val * gamr.val * pe_val; + double coeff_err = gbm1.err * fabs(gamr.val * pe_val) + + gamr.err * fabs(gbm1.val * pe_val) + + fabs(gbm1.val * gamr.val) * pe_err + + 2.0 * GSL_DBL_EPSILON * fabs(coeff_val); + + result->val = sum_val * coeff_val; + result->err = fabs(sum_val) * coeff_err + sum_err * fabs(coeff_val); + result->err += 2.0 * GSL_DBL_EPSILON * (M+2.0) * fabs(result->val); + result->err *= 2.0; /* FIXME: fudge factor... why is the error estimate too small? */ + return stat_p; + } + else { + result->val = 0.0; + result->err = 0.0; + return stat_gbm1; + } + } + } +} + + +/* Evaluate infinite sum which appears below. + */ +static +int +hyperg_U_infinite_sum_stable(int N, double a, double bint, double b, double beps, double x, double xeps, gsl_sf_result sum, + gsl_sf_result * result) +{ + const double EPS = 2.0 * GSL_DBL_EPSILON; /* EPS = D1MACH(3) */ + + int istrt = ( N < 1 ? 1-N : 0 ); + double xi = istrt; + + gsl_sf_result gamr; + gsl_sf_result powx; + int stat_gamr = gsl_sf_gammainv_e(1.0+a-b, &gamr); + int stat_powx = gsl_sf_pow_int_e(x, istrt, &powx); + double sarg = beps*M_PI; + double sfact = ( sarg != 0.0 ? sarg/sin(sarg) : 1.0 ); + double factor_val = sfact * ( GSL_IS_ODD(N) ? -1.0 : 1.0 ) * gamr.val * powx.val; + double factor_err = fabs(gamr.val) * powx.err + fabs(powx.val) * gamr.err + + 2.0 * GSL_DBL_EPSILON * fabs(factor_val); + + gsl_sf_result pochai; + gsl_sf_result gamri1; + gsl_sf_result gamrni; + int stat_pochai = gsl_sf_poch_e(a, xi, &pochai); + int stat_gamri1 = gsl_sf_gammainv_e(xi + 1.0, &gamri1); + int stat_gamrni = gsl_sf_gammainv_e(bint + xi, &gamrni); + int stat_gam123 = GSL_ERROR_SELECT_3(stat_gamr, stat_gamri1, stat_gamrni); + int stat_gamall = GSL_ERROR_SELECT_3(stat_gam123, stat_pochai, stat_powx); + + gsl_sf_result pochaxibeps; + gsl_sf_result gamrxi1beps; + int stat_pochaxibeps = gsl_sf_poch_e(a, xi-beps, &pochaxibeps); + int stat_gamrxi1beps = gsl_sf_gammainv_e(xi + 1.0 - beps, &gamrxi1beps); + + int stat_all = GSL_ERROR_SELECT_3(stat_gamall, stat_pochaxibeps, stat_gamrxi1beps); + + double b0_val = factor_val * pochaxibeps.val * gamrni.val * gamrxi1beps.val; + double b0_err = fabs(factor_val * pochaxibeps.val * gamrni.val) * gamrxi1beps.err + + fabs(factor_val * pochaxibeps.val * gamrxi1beps.val) * gamrni.err + + fabs(factor_val * gamrni.val * gamrxi1beps.val) * pochaxibeps.err + + fabs(pochaxibeps.val * gamrni.val * gamrxi1beps.val) * factor_err + + 2.0 * GSL_DBL_EPSILON * fabs(b0_val); + + /* + C X**(-BEPS) IS VERY DIFFERENT FROM 1.0, SO THE + C STRAIGHTFORWARD FORMULATION IS STABLE. + */ + int i; + double dchu_val; + double dchu_err; + double t_val; + double t_err; + gsl_sf_result dgamrbxi; + int stat_dgamrbxi = gsl_sf_gammainv_e(b+xi, &dgamrbxi); + double a0_val = factor_val * pochai.val * dgamrbxi.val * gamri1.val / beps; + double a0_err = fabs(factor_val * pochai.val * dgamrbxi.val / beps) * gamri1.err + + fabs(factor_val * pochai.val * gamri1.val / beps) * dgamrbxi.err + + fabs(factor_val * dgamrbxi.val * gamri1.val / beps) * pochai.err + + fabs(pochai.val * dgamrbxi.val * gamri1.val / beps) * factor_err + + 2.0 * GSL_DBL_EPSILON * fabs(a0_val); + stat_all = GSL_ERROR_SELECT_2(stat_all, stat_dgamrbxi); + + b0_val = xeps * b0_val / beps; + b0_err = fabs(xeps / beps) * b0_err + 4.0 * GSL_DBL_EPSILON * fabs(b0_val); + dchu_val = sum.val + a0_val - b0_val; + dchu_err = sum.err + a0_err + b0_err + + 2.0 * GSL_DBL_EPSILON * (fabs(sum.val) + fabs(a0_val) + fabs(b0_val)); + + for(i=1; i<2000; i++) { + double xi = istrt + i; + double xi1 = istrt + i - 1; + double a0_multiplier = (a+xi1)*x/((b+xi1)*xi); + double b0_multiplier = (a+xi1-beps)*x/((bint+xi1)*(xi-beps)); + a0_val *= a0_multiplier; + a0_err += fabs(a0_multiplier) * a0_err; + b0_val *= b0_multiplier; + b0_err += fabs(b0_multiplier) * b0_err; + t_val = a0_val - b0_val; + t_err = a0_err + b0_err; + dchu_val += t_val; + dchu_err += t_err; + if(fabs(t_val) < EPS*fabs(dchu_val)) break; + } + + result->val = dchu_val; + result->err = 2.0 * dchu_err; + result->err += 2.0 * fabs(t_val); + result->err += 4.0 * GSL_DBL_EPSILON * (i+2.0) * fabs(dchu_val); + result->err *= 2.0; /* FIXME: fudge factor */ + + if(i >= 2000) { + GSL_ERROR ("error", GSL_EMAXITER); + } + else { + return stat_all; + } +} + +static +int +hyperg_U_infinite_sum_simple(int N, double a, double bint, double b, double beps, double x, double xeps, gsl_sf_result sum, + gsl_sf_result * result) +{ + const double EPS = 2.0 * GSL_DBL_EPSILON; /* EPS = D1MACH(3) */ + + int istrt = ( N < 1 ? 1-N : 0 ); + double xi = istrt; + + gsl_sf_result powx; + int stat_powx = gsl_sf_pow_int_e(x, istrt, &powx); + double sarg = beps*M_PI; + double sfact = ( sarg != 0.0 ? sarg/sin(sarg) : 1.0 ); + double factor_val = sfact * ( GSL_IS_ODD(N) ? -1.0 : 1.0 ) * powx.val; + double factor_err = fabs(powx.err) + 2.0 * GSL_DBL_EPSILON * fabs(factor_val); + + gsl_sf_result pochai; + gsl_sf_result gamri1; + gsl_sf_result gamrni; + int stat_pochai = gsl_sf_poch_e(a, xi, &pochai); + int stat_gamri1 = gsl_sf_gammainv_e(xi + 1.0, &gamri1); + int stat_gamrni = gsl_sf_gammainv_e(bint + xi, &gamrni); + int stat_gam123 = GSL_ERROR_SELECT_2(stat_gamri1, stat_gamrni); + int stat_gamall = GSL_ERROR_SELECT_3(stat_gam123, stat_pochai, stat_powx); + + gsl_sf_result pochaxibeps; + gsl_sf_result gamrxi1beps; + int stat_pochaxibeps = gsl_sf_poch_e(a, xi-beps, &pochaxibeps); + int stat_gamrxi1beps = gsl_sf_gammainv_e(xi + 1.0 - beps, &gamrxi1beps); + + int stat_all = GSL_ERROR_SELECT_3(stat_gamall, stat_pochaxibeps, stat_gamrxi1beps); + + double X = sfact * ( GSL_IS_ODD(N) ? -1.0 : 1.0 ) * powx.val * gsl_sf_poch(1 + a - b, xi - 1 + b - beps) * gsl_sf_gammainv(a); + + double b0_val = X * gamrni.val * gamrxi1beps.val; + double b0_err = fabs(factor_val * pochaxibeps.val * gamrni.val) * gamrxi1beps.err + + fabs(factor_val * pochaxibeps.val * gamrxi1beps.val) * gamrni.err + + fabs(factor_val * gamrni.val * gamrxi1beps.val) * pochaxibeps.err + + fabs(pochaxibeps.val * gamrni.val * gamrxi1beps.val) * factor_err + + 2.0 * GSL_DBL_EPSILON * fabs(b0_val); + + /* + C X**(-BEPS) IS VERY DIFFERENT FROM 1.0, SO THE + C STRAIGHTFORWARD FORMULATION IS STABLE. + */ + int i; + double dchu_val; + double dchu_err; + double t_val; + double t_err; + gsl_sf_result gamr; + gsl_sf_result dgamrbxi; + int stat_gamr = gsl_sf_gammainv_e(1.0+a-b, &gamr); + int stat_dgamrbxi = gsl_sf_gammainv_e(b+xi, &dgamrbxi); + double a0_val = factor_val * gamr.val * pochai.val * dgamrbxi.val * gamri1.val / beps; + double a0_err = fabs(factor_val * pochai.val * dgamrbxi.val * gamri1.val / beps) * gamr.err + + fabs(factor_val * gamr.val * dgamrbxi.val * gamri1.val / beps) * pochai.err + + fabs(factor_val * gamr.val * pochai.val * gamri1.val / beps) * dgamrbxi.err + + fabs(factor_val * gamr.val * pochai.val * dgamrbxi.val / beps) * gamri1.err + + fabs(pochai.val * gamr.val * dgamrbxi.val * gamri1.val / beps) * factor_err + + 2.0 * GSL_DBL_EPSILON * fabs(a0_val); + stat_all = GSL_ERROR_SELECT_3(stat_all, stat_gamr, stat_dgamrbxi); + + b0_val = xeps * b0_val / beps; + b0_err = fabs(xeps / beps) * b0_err + 4.0 * GSL_DBL_EPSILON * fabs(b0_val); + dchu_val = sum.val + a0_val - b0_val; + dchu_err = sum.err + a0_err + b0_err + + 2.0 * GSL_DBL_EPSILON * (fabs(sum.val) + fabs(a0_val) + fabs(b0_val)); + for(i=1; i<2000; i++) { + double xi = istrt + i; + double xi1 = istrt + i - 1; + double a0_multiplier = (a+xi1)*x/((b+xi1)*xi); + double b0_multiplier = (a+xi1-beps)*x/((bint+xi1)*(xi-beps)); + a0_val *= a0_multiplier; + a0_err += fabs(a0_multiplier) * a0_err; + b0_val *= b0_multiplier; + b0_err += fabs(b0_multiplier) * b0_err; + t_val = a0_val - b0_val; + t_err = a0_err + b0_err; + dchu_val += t_val; + dchu_err += t_err; + if(!gsl_finite(t_val) || fabs(t_val) < EPS*fabs(dchu_val)) break; + } + + result->val = dchu_val; + result->err = 2.0 * dchu_err; + result->err += 2.0 * fabs(t_val); + result->err += 4.0 * GSL_DBL_EPSILON * (i+2.0) * fabs(dchu_val); + result->err *= 2.0; /* FIXME: fudge factor */ + + if(i >= 2000) { + GSL_ERROR ("error", GSL_EMAXITER); + } + else { + return stat_all; + } +} + + +static +int +hyperg_U_infinite_sum_improved(int N, double a, double bint, double b, double beps, double x, double xeps, gsl_sf_result sum, + gsl_sf_result * result) +{ + const double EPS = 2.0 * GSL_DBL_EPSILON; /* EPS = D1MACH(3) */ + const double lnx = log(x); + + int istrt = ( N < 1 ? 1-N : 0 ); + double xi = istrt; + + gsl_sf_result gamr; + gsl_sf_result powx; + int stat_gamr = gsl_sf_gammainv_e(1.0+a-b, &gamr); + int stat_powx = gsl_sf_pow_int_e(x, istrt, &powx); + double sarg = beps*M_PI; + double sfact = ( sarg != 0.0 ? sarg/sin(sarg) : 1.0 ); + double factor_val = sfact * ( GSL_IS_ODD(N) ? -1.0 : 1.0 ) * gamr.val * powx.val; + double factor_err = fabs(gamr.val) * powx.err + fabs(powx.val) * gamr.err + + 2.0 * GSL_DBL_EPSILON * fabs(factor_val); + + gsl_sf_result pochai; + gsl_sf_result gamri1; + gsl_sf_result gamrni; + int stat_pochai = gsl_sf_poch_e(a, xi, &pochai); + int stat_gamri1 = gsl_sf_gammainv_e(xi + 1.0, &gamri1); + int stat_gamrni = gsl_sf_gammainv_e(bint + xi, &gamrni); + int stat_gam123 = GSL_ERROR_SELECT_3(stat_gamr, stat_gamri1, stat_gamrni); + int stat_gamall = GSL_ERROR_SELECT_3(stat_gam123, stat_pochai, stat_powx); + + gsl_sf_result pochaxibeps; + gsl_sf_result gamrxi1beps; + int stat_pochaxibeps = gsl_sf_poch_e(a, xi-beps, &pochaxibeps); + int stat_gamrxi1beps = gsl_sf_gammainv_e(xi + 1.0 - beps, &gamrxi1beps); + + int stat_all = GSL_ERROR_SELECT_3(stat_gamall, stat_pochaxibeps, stat_gamrxi1beps); + + double b0_val = factor_val * pochaxibeps.val * gamrni.val * gamrxi1beps.val; + double b0_err = fabs(factor_val * pochaxibeps.val * gamrni.val) * gamrxi1beps.err + + fabs(factor_val * pochaxibeps.val * gamrxi1beps.val) * gamrni.err + + fabs(factor_val * gamrni.val * gamrxi1beps.val) * pochaxibeps.err + + fabs(pochaxibeps.val * gamrni.val * gamrxi1beps.val) * factor_err + + 2.0 * GSL_DBL_EPSILON * fabs(b0_val); + + /* + C X**(-BEPS) IS CLOSE TO 1.0D0, SO WE MUST BE + C CAREFUL IN EVALUATING THE DIFFERENCES. + */ + int i; + gsl_sf_result pch1ai; + gsl_sf_result pch1i; + gsl_sf_result poch1bxibeps; + int stat_pch1ai = gsl_sf_pochrel_e(a + xi, -beps, &pch1ai); + int stat_pch1i = gsl_sf_pochrel_e(xi + 1.0 - beps, beps, &pch1i); + int stat_poch1bxibeps = gsl_sf_pochrel_e(b+xi, -beps, &poch1bxibeps); + double c0_t1_val = beps*pch1ai.val*pch1i.val; + double c0_t1_err = fabs(beps) * fabs(pch1ai.val) * pch1i.err + + fabs(beps) * fabs(pch1i.val) * pch1ai.err + + 2.0 * GSL_DBL_EPSILON * fabs(c0_t1_val); + double c0_t2_val = -poch1bxibeps.val + pch1ai.val - pch1i.val + c0_t1_val; + double c0_t2_err = poch1bxibeps.err + pch1ai.err + pch1i.err + c0_t1_err + + 2.0 * GSL_DBL_EPSILON * fabs(c0_t2_val); + double c0_val = factor_val * pochai.val * gamrni.val * gamri1.val * c0_t2_val; + double c0_err = fabs(factor_val * pochai.val * gamrni.val * gamri1.val) * c0_t2_err + + fabs(factor_val * pochai.val * gamrni.val * c0_t2_val) * gamri1.err + + fabs(factor_val * pochai.val * gamri1.val * c0_t2_val) * gamrni.err + + fabs(factor_val * gamrni.val * gamri1.val * c0_t2_val) * pochai.err + + fabs(pochai.val * gamrni.val * gamri1.val * c0_t2_val) * factor_err + + 2.0 * GSL_DBL_EPSILON * fabs(c0_val); + /* + C XEPS1 = (1.0 - X**(-BEPS))/BEPS = (X**(-BEPS) - 1.0)/(-BEPS) + */ + gsl_sf_result dexprl; + int stat_dexprl = gsl_sf_exprel_e(-beps*lnx, &dexprl); + double xeps1_val = lnx * dexprl.val; + double xeps1_err = 2.0 * GSL_DBL_EPSILON * (1.0 + fabs(beps*lnx)) * fabs(dexprl.val) + + fabs(lnx) * dexprl.err + + 2.0 * GSL_DBL_EPSILON * fabs(xeps1_val); + double dchu_val = sum.val + c0_val + xeps1_val*b0_val; + double dchu_err = sum.err + c0_err + + fabs(xeps1_val)*b0_err + xeps1_err * fabs(b0_val) + + fabs(b0_val*lnx)*dexprl.err + + 2.0 * GSL_DBL_EPSILON * (fabs(sum.val) + fabs(c0_val) + fabs(xeps1_val*b0_val)); + double xn = N; + double t_val; + double t_err; + + stat_all = GSL_ERROR_SELECT_5(stat_all, stat_dexprl, stat_poch1bxibeps, stat_pch1i, stat_pch1ai); + + for(i=1; i<2000; i++) { + const double xi = istrt + i; + const double xi1 = istrt + i - 1; + const double tmp = (a-1.0)*(xn+2.0*xi-1.0) + xi*(xi-beps); + const double b0_multiplier = (a+xi1-beps)*x/((xn+xi1)*(xi-beps)); + const double c0_multiplier_1 = (a+xi1)*x/((b+xi1)*xi); + const double c0_multiplier_2 = tmp / (xi*(b+xi1)*(a+xi1-beps)); + b0_val *= b0_multiplier; + b0_err += fabs(b0_multiplier) * b0_err + fabs(b0_val) * 8.0 * 2.0 * GSL_DBL_EPSILON; + c0_val = c0_multiplier_1 * c0_val - c0_multiplier_2 * b0_val; + c0_err = fabs(c0_multiplier_1) * c0_err + + fabs(c0_multiplier_2) * b0_err + + fabs(c0_val) * 8.0 * 2.0 * GSL_DBL_EPSILON + + fabs(b0_val * c0_multiplier_2) * 16.0 * 2.0 * GSL_DBL_EPSILON; + t_val = c0_val + xeps1_val*b0_val; + t_err = c0_err + fabs(xeps1_val)*b0_err; + t_err += fabs(b0_val*lnx) * dexprl.err; + t_err += fabs(b0_val)*xeps1_err; + dchu_val += t_val; + dchu_err += t_err; + if(fabs(t_val) < EPS*fabs(dchu_val)) break; + } + + result->val = dchu_val; + result->err = 2.0 * dchu_err; + result->err += 2.0 * fabs(t_val); + result->err += 4.0 * GSL_DBL_EPSILON * (i+2.0) * fabs(dchu_val); + result->err *= 2.0; /* FIXME: fudge factor */ + + if(i >= 2000) { + GSL_ERROR ("error", GSL_EMAXITER); + } + else { + return stat_all; + } +} + +/* Based on SLATEC DCHU() [W. Fullerton] + * Assumes x > 0. + * This is just a series summation method, and + * it is not good for large a. + * + * I patched up the window for 1+a-b near zero. [GJ] + */ +static +int +hyperg_U_series(const double a, const double b, const double x, gsl_sf_result * result) +{ + const double SQRT_EPS = M_SQRT2 * GSL_SQRT_DBL_EPSILON; +double bint = ( b < 0.0 ? ceil(b-0.5) : floor(b+0.5) ); + double beps = b - bint; + double a_beps = a - beps; + double r_a_beps = floor(a_beps + 0.5); + double a_beps_int = ( fabs(a_beps - r_a_beps) < INT_THRESHOLD ); +/* double a_b_1 = a-b+1; + double r_a_b_1 = floor(a_b_1+0.5); + double r_a_b_1_int = (fabs(a_b_1-r_a_b_1)< INT_THRESHOLD); + Check for (a-beps) being a member of -N; N being 0,1,... */ + if (a_beps_int && a_beps <= 0) + { beps=beps - 1 + floor(a_beps);bint=bint + 1 - floor(a_beps); + } + + if(fabs(1.0 + a - b) < SQRT_EPS) { + /* Original Comment: ALGORITHM IS BAD WHEN 1+A-B IS NEAR ZERO FOR SMALL X + */ + /* We can however do the following: + * U(a,b,x) = U(a,a+1,x) when 1+a-b=0 + * and U(a,a+1,x) = x^(-a). + */ + double lnr = -a * log(x); + int stat_e = gsl_sf_exp_e(lnr, result); + result->err += 2.0 * SQRT_EPS * fabs(result->val); + return stat_e; + } + else { + int N = (int) bint; + + double lnx = log(x); + double xeps = exp(-beps*lnx); + + /* Evaluate finite sum. + */ + gsl_sf_result sum; + int stat_sum = hyperg_U_finite_sum(N, a, b, x, xeps, &sum); + int stat_inf; + + /* Evaluate infinite sum. */ + if(fabs(xeps-1.0) > 0.5 ) { + stat_inf = hyperg_U_infinite_sum_stable(N, a, bint, b, beps, x, xeps, sum, result); + } else if (1+a-b < 0 && 1+a-b==floor(1+a-b) && beps != 0) { + stat_inf = hyperg_U_infinite_sum_simple(N, a, bint, b, beps, x, xeps, sum, result); + } else { + stat_inf = hyperg_U_infinite_sum_improved(N, a, bint, b, beps, x, xeps, sum, result); + } + + return GSL_ERROR_SELECT_2(stat_sum, stat_inf); + + } +} + + + +/* Assumes b > 0 and x > 0. + */ +static +int +hyperg_U_small_ab(const double a, const double b, const double x, gsl_sf_result * result) +{ + if(a == -1.0) { + /* U(-1,c+1,x) = Laguerre[c,0,x] = -b + x + */ + result->val = -b + x; + result->err = 2.0 * GSL_DBL_EPSILON * (fabs(b) + fabs(x)); + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else if(a == 0.0) { + /* U(0,c+1,x) = Laguerre[c,0,x] = 1 + */ + result->val = 1.0; + result->err = 0.0; + return GSL_SUCCESS; + } + else if(ASYMP_EVAL_OK(a,b,x)) { + double p = pow(x, -a); + gsl_sf_result asymp; + int stat_asymp = hyperg_zaU_asymp(a, b, x, &asymp); + result->val = asymp.val * p; + result->err = asymp.err * p; + result->err += fabs(asymp.val) * GSL_DBL_EPSILON * fabs(a) * p; + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return stat_asymp; + } + else { + return hyperg_U_series(a, b, x, result); + } +} + + +/* Assumes b > 0 and x > 0. + */ +static +int +hyperg_U_small_a_bgt0(const double a, const double b, const double x, + gsl_sf_result * result, + double * ln_multiplier + ) +{ + if(a == 0.0) { + result->val = 1.0; + result->err = 0.0; + *ln_multiplier = 0.0; + return GSL_SUCCESS; + } + else if( (b > 5000.0 && x < 0.90 * fabs(b)) + || (b > 500.0 && x < 0.50 * fabs(b)) + ) { + int stat = gsl_sf_hyperg_U_large_b_e(a, b, x, result, ln_multiplier); + if(stat == GSL_EOVRFLW) + return GSL_SUCCESS; + else + return stat; + } + else if(b > 15.0) { + /* Recurse up from b near 1. + */ + double eps = b - floor(b); + double b0 = 1.0 + eps; + gsl_sf_result r_Ubm1; + gsl_sf_result r_Ub; + int stat_0 = hyperg_U_small_ab(a, b0, x, &r_Ubm1); + int stat_1 = hyperg_U_small_ab(a, b0+1.0, x, &r_Ub); + double Ubm1 = r_Ubm1.val; + double Ub = r_Ub.val; + double Ubp1; + double bp; + + for(bp = b0+1.0; bpval = Ub; + result->err = (fabs(r_Ubm1.err/r_Ubm1.val) + fabs(r_Ub.err/r_Ub.val)) * fabs(Ub); + result->err += 2.0 * GSL_DBL_EPSILON * (fabs(b-b0)+1.0) * fabs(Ub); + *ln_multiplier = 0.0; + return GSL_ERROR_SELECT_2(stat_0, stat_1); + } + else { + *ln_multiplier = 0.0; + return hyperg_U_small_ab(a, b, x, result); + } +} + + +/* We use this to keep track of large + * dynamic ranges in the recursions. + * This can be important because sometimes + * we want to calculate a very large and + * a very small number and the answer is + * the product, of order 1. This happens, + * for instance, when we apply a Kummer + * transform to make b positive and + * both x and b are large. + */ +#define RESCALE_2(u0,u1,factor,count) \ +do { \ + double au0 = fabs(u0); \ + if(au0 > factor) { \ + u0 /= factor; \ + u1 /= factor; \ + count++; \ + } \ + else if(au0 < 1.0/factor) { \ + u0 *= factor; \ + u1 *= factor; \ + count--; \ + } \ +} while (0) + + +/* Specialization to b >= 1, for integer parameters. + * Assumes x > 0. + */ +static +int +hyperg_U_int_bge1(const int a, const int b, const double x, + gsl_sf_result_e10 * result) +{ + if(a == 0) { + result->val = 1.0; + result->err = 0.0; + result->e10 = 0; + return GSL_SUCCESS; + } + else if(a == -1) { + result->val = -b + x; + result->err = 2.0 * GSL_DBL_EPSILON * (fabs(b) + fabs(x)); + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + result->e10 = 0; + return GSL_SUCCESS; + } + else if(b == a + 1) { + /* U(a,a+1,x) = x^(-a) + */ + return gsl_sf_exp_e10_e(-a*log(x), result); + } + else if(ASYMP_EVAL_OK(a,b,x)) { + const double ln_pre_val = -a*log(x); + const double ln_pre_err = 2.0 * GSL_DBL_EPSILON * fabs(ln_pre_val); + gsl_sf_result asymp; + int stat_asymp = hyperg_zaU_asymp(a, b, x, &asymp); + int stat_e = gsl_sf_exp_mult_err_e10_e(ln_pre_val, ln_pre_err, + asymp.val, asymp.err, + result); + return GSL_ERROR_SELECT_2(stat_e, stat_asymp); + } + else if(SERIES_EVAL_OK(a,b,x) && 1 + a - b > 0) { + gsl_sf_result ser; + const int stat_ser = hyperg_U_series(a, b, x, &ser); + result->val = ser.val; + result->err = ser.err; + result->e10 = 0; + return stat_ser; + } + else if(a < 0) { + /* Recurse backward from a = -1,0. + */ + int scale_count = 0; + const double scale_factor = GSL_SQRT_DBL_MAX; + gsl_sf_result lnm; + gsl_sf_result y; + double lnscale; + double Uap1 = 1.0; /* U(0,b,x) */ + double Ua = -b + x; /* U(-1,b,x) */ + double Uam1; + int ap; + + for(ap=-1; ap>a; ap--) { + Uam1 = ap*(b-ap-1.0)*Uap1 + (x+2.0*ap-b)*Ua; + Uap1 = Ua; + Ua = Uam1; + RESCALE_2(Ua,Uap1,scale_factor,scale_count); + } + + lnscale = log(scale_factor); + lnm.val = scale_count*lnscale; + lnm.err = 2.0 * GSL_DBL_EPSILON * fabs(lnm.val); + y.val = Ua; + y.err = 4.0 * GSL_DBL_EPSILON * (fabs(a)+1.0) * fabs(Ua); + return gsl_sf_exp_mult_err_e10_e(lnm.val, lnm.err, y.val, y.err, result); + } + else if(b >= 2.0*a + x) { + /* Recurse forward from a = 0,1. + */ + int scale_count = 0; + const double scale_factor = GSL_SQRT_DBL_MAX; + gsl_sf_result r_Ua; + gsl_sf_result lnm; + gsl_sf_result y; + double lnscale; + double lm; + int stat_1 = hyperg_U_small_a_bgt0(1.0, b, x, &r_Ua, &lm); /* U(1,b,x) */ + int stat_e; + double Uam1 = 1.0; /* U(0,b,x) */ + double Ua = r_Ua.val; + double Uap1; + int ap; + + Uam1 *= exp(-lm); + + for(ap=1; apa_target; ap--) { + Uam1 = -((b-2.0*ap-x)*Ua + ap*(1.0+ap-b)*Uap1); + Uap1 = Ua; + Ua = Uam1; + RESCALE_2(Ua,Uap1,scale_factor,scale_count); + } + + if(Ua == 0.0) { + result->val = 0.0; + result->err = 0.0; + result->e10 = 0; + GSL_ERROR ("error", GSL_EZERODIV); + } + else { + double lnscl = -scale_count*log(scale_factor); + double lnpre_val = lnU_target + lnscl; + double lnpre_err = 2.0 * GSL_DBL_EPSILON * (fabs(lnU_target) + fabs(lnscl)); + double oUa_err = 2.0 * (fabs(a_target-a) + CF1_count + 1.0) * GSL_DBL_EPSILON * fabs(1.0/Ua); + int stat_e = gsl_sf_exp_mult_err_e10_e(lnpre_val, lnpre_err, + 1.0/Ua, oUa_err, + result); + return GSL_ERROR_SELECT_2(stat_e, stat_CF1); + } + } + else { + /* Recurse backward to near the b=2a+x line, then + * determine normalization by either direct evaluation + * or by a forward recursion. The direct evaluation + * is needed when x is small (which is precisely + * when it is easy to do). + */ + const double scale_factor = GSL_SQRT_DBL_MAX; + int scale_count_for = 0; + int scale_count_bck = 0; + int a0 = 1; + int a1 = a0 + ceil(0.5*(b-x) - a0); + double Ua1_bck_val; + double Ua1_bck_err; + double Ua1_for_val; + double Ua1_for_err; + int stat_for; + int stat_bck; + gsl_sf_result lm_for; + + { + /* Recurse back to determine U(a1,b), sans normalization. + */ + double ru; + int CF1_count; + int stat_CF1 = hyperg_U_CF1(a, b, 0, x, &ru, &CF1_count); + double Ua = 1.0; + double Uap1 = ru/a * Ua; + double Uam1; + int ap; + for(ap=a; ap>a1; ap--) { + Uam1 = -((b-2.0*ap-x)*Ua + ap*(1.0+ap-b)*Uap1); + Uap1 = Ua; + Ua = Uam1; + RESCALE_2(Ua,Uap1,scale_factor,scale_count_bck); + } + Ua1_bck_val = Ua; + Ua1_bck_err = 2.0 * GSL_DBL_EPSILON * (fabs(a1-a)+CF1_count+1.0) * fabs(Ua); + stat_bck = stat_CF1; + } + + if(b == 2*a1 && a1 > 1) { + /* This can happen when x is small, which is + * precisely when we need to be careful with + * this evaluation. + */ + hyperg_lnU_beq2a((double)a1, x, &lm_for); + Ua1_for_val = 1.0; + Ua1_for_err = 0.0; + stat_for = GSL_SUCCESS; + } + else if(b == 2*a1 - 1 && a1 > 1) { + /* Similar to the above. Happens when x is small. + * Use + * U(a,2a-1) = (x U(a,2a) - U(a-1,2(a-1))) / (2a - 2) + */ + gsl_sf_result lnU00, lnU12; + gsl_sf_result U00, U12; + hyperg_lnU_beq2a(a1-1.0, x, &lnU00); + hyperg_lnU_beq2a(a1, x, &lnU12); + if(lnU00.val > lnU12.val) { + lm_for.val = lnU00.val; + lm_for.err = lnU00.err; + U00.val = 1.0; + U00.err = 0.0; + gsl_sf_exp_err_e(lnU12.val - lm_for.val, lnU12.err + lm_for.err, &U12); + } + else { + lm_for.val = lnU12.val; + lm_for.err = lnU12.err; + U12.val = 1.0; + U12.err = 0.0; + gsl_sf_exp_err_e(lnU00.val - lm_for.val, lnU00.err + lm_for.err, &U00); + } + Ua1_for_val = (x * U12.val - U00.val) / (2.0*a1 - 2.0); + Ua1_for_err = (fabs(x)*U12.err + U00.err) / fabs(2.0*a1 - 2.0); + Ua1_for_err += 2.0 * GSL_DBL_EPSILON * fabs(Ua1_for_val); + stat_for = GSL_SUCCESS; + } + else { + /* Recurse forward to determine U(a1,b) with + * absolute normalization. + */ + gsl_sf_result r_Ua; + double Uam1 = 1.0; /* U(a0-1,b,x) = U(0,b,x) */ + double Ua; + double Uap1; + int ap; + double lm_for_local; + stat_for = hyperg_U_small_a_bgt0(a0, b, x, &r_Ua, &lm_for_local); /* U(1,b,x) */ + Ua = r_Ua.val; + Uam1 *= exp(-lm_for_local); + lm_for.val = lm_for_local; + lm_for.err = 0.0; + + for(ap=a0; apval = 0.0; + result->err = 0.0; + result->e10 = 0; + GSL_ERROR ("error", GSL_EZERODIV); + } + else if(Ua1_for_val == 0.0) { + /* Should never happen. */ + UNDERFLOW_ERROR_E10(result); + } + else { + double lns = (scale_count_for - scale_count_bck)*log(scale_factor); + double ln_for_val = log(fabs(Ua1_for_val)); + double ln_for_err = GSL_DBL_EPSILON + fabs(Ua1_for_err/Ua1_for_val); + double ln_bck_val = log(fabs(Ua1_bck_val)); + double ln_bck_err = GSL_DBL_EPSILON + fabs(Ua1_bck_err/Ua1_bck_val); + double lnr_val = lm_for.val + ln_for_val - ln_bck_val + lns; + double lnr_err = lm_for.err + ln_for_err + ln_bck_err + + 2.0 * GSL_DBL_EPSILON * (fabs(lm_for.val) + fabs(ln_for_val) + fabs(ln_bck_val) + fabs(lns)); + double sgn = GSL_SIGN(Ua1_for_val) * GSL_SIGN(Ua1_bck_val); + int stat_e = gsl_sf_exp_err_e10_e(lnr_val, lnr_err, result); + result->val *= sgn; + return GSL_ERROR_SELECT_3(stat_e, stat_bck, stat_for); + } + } + } +} + + +/* Handle b >= 1 for generic a,b values. + */ +static +int +hyperg_U_bge1(const double a, const double b, const double x, + gsl_sf_result_e10 * result) +{ + const double rinta = floor(a+0.5); + const int a_neg_integer = (a < 0.0 && fabs(a - rinta) < INT_THRESHOLD); + + if(a == 0.0) { + result->val = 1.0; + result->err = 0.0; + result->e10 = 0; + return GSL_SUCCESS; + } + else if(a_neg_integer && fabs(rinta) < INT_MAX) { + /* U(-n,b,x) = (-1)^n n! Laguerre[n,b-1,x] + */ + const int n = -(int)rinta; + const double sgn = (GSL_IS_ODD(n) ? -1.0 : 1.0); + gsl_sf_result lnfact; + gsl_sf_result L; + const int stat_L = gsl_sf_laguerre_n_e(n, b-1.0, x, &L); + gsl_sf_lnfact_e(n, &lnfact); + { + const int stat_e = gsl_sf_exp_mult_err_e10_e(lnfact.val, lnfact.err, + sgn*L.val, L.err, + result); + return GSL_ERROR_SELECT_2(stat_e, stat_L); + } + } + else if(ASYMP_EVAL_OK(a,b,x)) { + const double ln_pre_val = -a*log(x); + const double ln_pre_err = 2.0 * GSL_DBL_EPSILON * fabs(ln_pre_val); + gsl_sf_result asymp; + int stat_asymp = hyperg_zaU_asymp(a, b, x, &asymp); + int stat_e = gsl_sf_exp_mult_err_e10_e(ln_pre_val, ln_pre_err, + asymp.val, asymp.err, + result); + return GSL_ERROR_SELECT_2(stat_e, stat_asymp); + } + else if(fabs(a) <= 1.0) { + gsl_sf_result rU; + double ln_multiplier; + int stat_U = hyperg_U_small_a_bgt0(a, b, x, &rU, &ln_multiplier); + int stat_e = gsl_sf_exp_mult_err_e10_e(ln_multiplier, 2.0*GSL_DBL_EPSILON*fabs(ln_multiplier), rU.val, rU.err, result); + return GSL_ERROR_SELECT_2(stat_U, stat_e); + } + else if(SERIES_EVAL_OK(a,b,x)) { + gsl_sf_result ser; + const int stat_ser = hyperg_U_series(a, b, x, &ser); + result->val = ser.val; + result->err = ser.err; + result->e10 = 0; + return stat_ser; + } + else if(a < 0.0) { + /* Recurse backward on a and then upward on b. + */ + const double scale_factor = GSL_SQRT_DBL_MAX; + const double a0 = a - floor(a) - 1.0; + const double b0 = b - floor(b) + 1.0; + int scale_count = 0; + double lm_0, lm_1; + double lm_max; + gsl_sf_result r_Uap1; + gsl_sf_result r_Ua; + int stat_0 = hyperg_U_small_a_bgt0(a0+1.0, b0, x, &r_Uap1, &lm_0); + int stat_1 = hyperg_U_small_a_bgt0(a0, b0, x, &r_Ua, &lm_1); + int stat_e; + double Uap1 = r_Uap1.val; + double Ua = r_Ua.val; + double Uam1; + double ap; + lm_max = GSL_MAX(lm_0, lm_1); + Uap1 *= exp(lm_0-lm_max); + Ua *= exp(lm_1-lm_max); + + /* Downward recursion on a. + */ + for(ap=a0; ap>a+0.1; ap -= 1.0) { + Uam1 = ap*(b0-ap-1.0)*Uap1 + (x+2.0*ap-b0)*Ua; + Uap1 = Ua; + Ua = Uam1; + RESCALE_2(Ua,Uap1,scale_factor,scale_count); + } + + if(b < 2.0) { + /* b == b0, so no recursion necessary + */ + const double lnscale = log(scale_factor); + gsl_sf_result lnm; + gsl_sf_result y; + lnm.val = lm_max + scale_count * lnscale; + lnm.err = 2.0 * GSL_DBL_EPSILON * (fabs(lm_max) + scale_count * fabs(lnscale)); + y.val = Ua; + y.err = fabs(r_Uap1.err/r_Uap1.val) * fabs(Ua); + y.err += fabs(r_Ua.err/r_Ua.val) * fabs(Ua); + y.err += 2.0 * GSL_DBL_EPSILON * (fabs(a-a0) + 1.0) * fabs(Ua); + y.err *= fabs(lm_0-lm_max) + 1.0; + y.err *= fabs(lm_1-lm_max) + 1.0; + stat_e = gsl_sf_exp_mult_err_e10_e(lnm.val, lnm.err, y.val, y.err, result); + } + else { + /* Upward recursion on b. + */ + const double err_mult = fabs(b-b0) + fabs(a-a0) + 1.0; + const double lnscale = log(scale_factor); + gsl_sf_result lnm; + gsl_sf_result y; + + double Ubm1 = Ua; /* U(a,b0) */ + double Ub = (a*(b0-a-1.0)*Uap1 + (a+x)*Ua)/x; /* U(a,b0+1) */ + double Ubp1; + double bp; + for(bp=b0+1.0; bp= 2*a + x) { + /* Recurse forward from a near zero. + * Note that we cannot cross the singularity at + * the line b=a+1, because the only way we could + * be in that little wedge is if a < 1. But we + * have already dealt with the small a case. + */ + int scale_count = 0; + const double a0 = a - floor(a); + const double scale_factor = GSL_SQRT_DBL_MAX; + double lnscale; + double lm_0, lm_1, lm_max; + gsl_sf_result r_Uam1; + gsl_sf_result r_Ua; + int stat_0 = hyperg_U_small_a_bgt0(a0-1.0, b, x, &r_Uam1, &lm_0); + int stat_1 = hyperg_U_small_a_bgt0(a0, b, x, &r_Ua, &lm_1); + int stat_e; + gsl_sf_result lnm; + gsl_sf_result y; + double Uam1 = r_Uam1.val; + double Ua = r_Ua.val; + double Uap1; + double ap; + lm_max = GSL_MAX(lm_0, lm_1); + Uam1 *= exp(lm_0-lm_max); + Ua *= exp(lm_1-lm_max); + + for(ap=a0; apa0+0.1; ap -= 1.0) { + Uam1 = -((b-2.0*ap-x)*Ua + ap*(1.0+ap-b)*Uap1); + Uap1 = Ua; + Ua = Uam1; + RESCALE_2(Ua,Uap1,scale_factor,scale_count); + } + + stat_U0 = hyperg_U_small_a_bgt0(a0, b, x, &U0, &lm_0); + + lnscale = log(scale_factor); + lnm.val = lm_0 - scale_count * lnscale; + lnm.err = 2.0 * GSL_DBL_EPSILON * (fabs(lm_0) + fabs(scale_count * lnscale)); + y.val = GSL_SQRT_DBL_MIN*(U0.val/Ua); + y.err = GSL_SQRT_DBL_MIN*(U0.err/fabs(Ua)); + y.err += 2.0 * GSL_DBL_EPSILON * (fabs(a0-a) + CF1_count + 1.0) * fabs(y.val); + stat_e = gsl_sf_exp_mult_err_e10_e(lnm.val, lnm.err, y.val, y.err, result); + return GSL_ERROR_SELECT_3(stat_e, stat_U0, stat_CF1); + } + else { + /* Recurse backward to near the b=2a+x line, then + * forward from a near zero to get the normalization. + */ + int scale_count_for = 0; + int scale_count_bck = 0; + const double scale_factor = GSL_SQRT_DBL_MAX; + const double eps = a - floor(a); + const double a0 = ( eps == 0.0 ? 1.0 : eps ); + const double a1 = a0 + ceil(0.5*(b-x) - a0); + gsl_sf_result lnm; + gsl_sf_result y; + double lm_for; + double lnscale; + double Ua1_bck; + double Ua1_for; + int stat_for; + int stat_bck; + int stat_e; + int CF1_count; + + { + /* Recurse back to determine U(a1,b), sans normalization. + */ + double Uap1; + double Ua; + double Uam1; + double ap; + double ru; + double r; + int stat_CF1 = hyperg_U_CF1(a, b, 0, x, &ru, &CF1_count); + r = ru/a; + Ua = GSL_SQRT_DBL_MIN; + Uap1 = r * Ua; + for(ap=a; ap>a1+0.1; ap -= 1.0) { + Uam1 = -((b-2.0*ap-x)*Ua + ap*(1.0+ap-b)*Uap1); + Uap1 = Ua; + Ua = Uam1; + RESCALE_2(Ua,Uap1,scale_factor,scale_count_bck); + } + Ua1_bck = Ua; + stat_bck = stat_CF1; + } + { + /* Recurse forward to determine U(a1,b) with + * absolute normalization. + */ + gsl_sf_result r_Uam1; + gsl_sf_result r_Ua; + double lm_0, lm_1; + int stat_0 = hyperg_U_small_a_bgt0(a0-1.0, b, x, &r_Uam1, &lm_0); + int stat_1 = hyperg_U_small_a_bgt0(a0, b, x, &r_Ua, &lm_1); + double Uam1 = r_Uam1.val; + double Ua = r_Ua.val; + double Uap1; + double ap; + + lm_for = GSL_MAX(lm_0, lm_1); + Uam1 *= exp(lm_0 - lm_for); + Ua *= exp(lm_1 - lm_for); + + for(ap=a0; apval = factor * r1.val * r2.val; + result->err = fabs(factor) * (r1.err + r2.err); + result->e10 = 0; + + return GSL_ERROR_SELECT_2(stat_1, stat_2); +} + +static int +hyperg_U_int_origin (const int a, const int b, gsl_sf_result_e10 * result) +{ + return hyperg_U_origin (a, b, result); +} + +/* Calculate U(a,b,x) for x < 0 + + Abramowitz and Stegun formula 13.1.3 + + U(a,b,x) = (gamma(1-b)/gamma(1+a-b)) M(a,b,x) + - z^(1-b) (gamma(1-b)/gamma(a)) M(1+a-b,2-b,x) + + can be transformed into + + U(a,b,x) = poch(1+a-b,-a) M(a,b,x) + + z^(1-b) poch(a,-(1+a-b)) M(1+a-b,2-b,x) + + using the reflection formula 6.1.17 and the definition of + Poch(a,b)=gamma(a+b)/gamma(a). Our poch function already handles + the special cases of ratios of gamma functions with negative + integer argument. + + Note that U(a,b,x) is complex in general for x<0 due to the term + x^(1-b), but is real when + + 1) b is an integer + + 4) a is zero or a negative integer so x^(1-b)/gamma(a) is zero. + + For integer b U(a,b,x) is defined as the limit beta->b U(a,beta,x). + This makes the situation slightly more complicated. + +*/ + +static int +hyperg_U_negx (const double a, const double b, const double x, gsl_sf_result_e10 * result) +{ + gsl_sf_result r1, r2; + int stat_1, stat_2, status; + int a_int = (a == floor(a)); + int b_int = (b == floor(b)); + + double T1 = 0, T1_err = 0, T2 = 0, T2_err = 0; + + /* Compute the first term poch(1+a-b) M(a,b,x) */ + + if (b_int && b <= 0 && !(a_int && a <= 0 && a >= b)) + { + /* Need to handle first term as + + lim_{beta->b} poch(1+a-beta,-a) M(a,beta,x) + + due to pole in M(a,b,x) for b == 0 or -ve integer + + We skip this case when a is zero or a negative integer and + a>=b because the hypergeometric series terminates before any + singular terms + */ + + /* FIXME: TO BE IMPLEMENTED ! */ + result->val = GSL_NAN; result->err = GSL_NAN; + GSL_ERROR("limit case integer b <= 0 unimplemented", GSL_EUNIMPL); + } + else + { + stat_1 = gsl_sf_poch_e(1+a-b,-a,&r1); + status = stat_1; + + if (r1.val != 0.0) + { + gsl_sf_result Mr1; + int stat_Mr1 = gsl_sf_hyperg_1F1_e (a, b, x, &Mr1); + status = GSL_ERROR_SELECT_2(status, stat_Mr1); + + T1 = Mr1.val * r1.val; + T1_err = 2.0 * GSL_DBL_EPSILON * fabs(T1) + + fabs(Mr1.err * r1.val) + fabs(Mr1.val * r1.err) ; + } + } + + + /* Compute the second term z^(1-b) poch(a,-(1+a-b)) M(1+a-b,2-b,x) */ + + if (b_int && b >= 2 && !(a_int && a <= (b - 2))) + { + /* Need to handle second term as a limit due to pole in + M(1+a-b,2-b,x). + + We skip this case when a is integer and a <= b-2 because the + hypergeometric series terminates before any singular terms + */ + + /* FIXME: TO BE IMPLEMENTED ! */ + result->val = GSL_NAN; result->err = GSL_NAN; + GSL_ERROR("limit case integer b >= 2 unimplemented", GSL_EUNIMPL); + } + else + { + if (a_int && a <= 0 && (b >= 1)) + { + r2.val = 0; + r2.err = 0; + } + else + { + stat_2 = gsl_sf_poch_e(a,-(1+a-b),&r2); + status = GSL_ERROR_SELECT_2(status, stat_2); + } + + if (r2.val != 0.0) + { + gsl_sf_result Mr2; + int stat_Mr2 = gsl_sf_hyperg_1F1_e (1+a-b, 2-b, x, &Mr2); + T2 = Mr2.val * r2.val; + T2_err = 2.0 * GSL_DBL_EPSILON * fabs(T2) + + fabs(Mr2.err * r2.val) + fabs(Mr2.val * r2.err); + status = GSL_ERROR_SELECT_2(status, stat_Mr2); + + if (T2 != 0.0) + { + double x1mb = pow(x, 1-b); + T2 = x1mb * T2; + T2_err = fabs(x1mb) * T2_err; + } + } + } + + result->val = (T1 + T2); + result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val) + (T1_err + T2_err); + result->e10 = 0; + + return status; +} + +static int +hyperg_U_int_negx (const int a, const int b, const double x, gsl_sf_result_e10 * result) +{ +/* Looking at the tests it seems that everything is handled correctly by hyperg_U_negx +except aval = res_tem; + result->err = res_tem_err; + return status; + } + else + { + return hyperg_U_negx (a, b, x, result); + } +} + + +/*-*-*-*-*-*-*-*-*-*-*-* Functions with Error Codes *-*-*-*-*-*-*-*-*-*-*-*/ + + +int +gsl_sf_hyperg_U_int_e10_e(const int a, const int b, const double x, + gsl_sf_result_e10 * result) +{ + /* CHECK_POINTER(result) */ + + if(x == 0.0 && b >= 1) { + DOMAIN_ERROR_E10(result); + } + else if (x == 0.0) { + return hyperg_U_int_origin (a, b, result); + } else if (x < 0.0) { + return hyperg_U_int_negx (a, b, x, result); + } + else { + if(b >= 1) { + return hyperg_U_int_bge1(a, b, x, result); + } + else { + /* Use the reflection formula + * U(a,b,x) = x^(1-b) U(1+a-b,2-b,x) + */ + gsl_sf_result_e10 U; + double ln_x = log(x); + int ap = 1 + a - b; + int bp = 2 - b; + int stat_e; + int stat_U = hyperg_U_int_bge1(ap, bp, x, &U); + double ln_pre_val = (1.0-b)*ln_x; + double ln_pre_err = 2.0 * GSL_DBL_EPSILON * (fabs(b)+1.0) * fabs(ln_x); + ln_pre_err += 2.0 * GSL_DBL_EPSILON * fabs(1.0-b); /* error in log(x) */ + stat_e = gsl_sf_exp_mult_err_e10_e(ln_pre_val + U.e10*M_LN10, ln_pre_err, + U.val, U.err, + result); + return GSL_ERROR_SELECT_2(stat_e, stat_U); + } + } +} + + +int +gsl_sf_hyperg_U_e10_e(const double a, const double b, const double x, + gsl_sf_result_e10 * result) +{ + const double rinta = floor(a + 0.5); + const double rintb = floor(b + 0.5); + const int a_integer = ( fabs(a - rinta) < INT_THRESHOLD ); + const int b_integer = ( fabs(b - rintb) < INT_THRESHOLD ); + + /* CHECK_POINTER(result) */ + + if(x == 0.0 && b >= 1) { + DOMAIN_ERROR_E10(result); + } + else if(a == 0.0) { + result->val = 1.0; + result->err = 0.0; + result->e10 = 0; + return GSL_SUCCESS; + } + else if (x == 0.0) { + return hyperg_U_origin (a, b, result); + } + else if(a_integer && b == a + 1) +/* This is DLMF 13.6.4 */ + { + gsl_sf_result powx1N_1; + gsl_sf_pow_int_e(x, -a, &powx1N_1); + result->val = powx1N_1.val; + result->err = powx1N_1.err; + result->e10 = 0; + return GSL_SUCCESS; + + } + else if(a_integer && b_integer) { + return gsl_sf_hyperg_U_int_e10_e(rinta, rintb, x, result); + } + else if (x < 0.0) { + return hyperg_U_negx (a, b, x, result); + } + else { + if(b >= 1.0) { + /* Use b >= 1 function. + */ + return hyperg_U_bge1(a, b, x, result); + } + else { + /* Use the reflection formula + * U(a,b,x) = x^(1-b) U(1+a-b,2-b,x) + */ + const double lnx = log(x); + const double ln_pre_val = (1.0-b)*lnx; + const double ln_pre_err = fabs(lnx) * 2.0 * GSL_DBL_EPSILON * (1.0 + fabs(b)); + const double ap = 1.0 + a - b; + const double bp = 2.0 - b; + gsl_sf_result_e10 U; + int stat_U = hyperg_U_bge1(ap, bp, x, &U); + int stat_e = gsl_sf_exp_mult_err_e10_e(ln_pre_val + U.e10*M_LN10, ln_pre_err, + U.val, U.err, + result); + return GSL_ERROR_SELECT_2(stat_e, stat_U); + } + } +} + + +int +gsl_sf_hyperg_U_int_e(const int a, const int b, const double x, gsl_sf_result * result) +{ + gsl_sf_result_e10 re = {0, 0, 0}; + int stat_U = gsl_sf_hyperg_U_int_e10_e(a, b, x, &re); + int stat_c = gsl_sf_result_smash_e(&re, result); + return GSL_ERROR_SELECT_2(stat_c, stat_U); +} + + +int +gsl_sf_hyperg_U_e(const double a, const double b, const double x, gsl_sf_result * result) +{ + gsl_sf_result_e10 re = {0, 0, 0}; + int stat_U = gsl_sf_hyperg_U_e10_e(a, b, x, &re); + int stat_c = gsl_sf_result_smash_e(&re, result); + return GSL_ERROR_SELECT_2(stat_c, stat_U); +} + + +/*-*-*-*-*-*-*-*-*-* Functions w/ Natural Prototypes *-*-*-*-*-*-*-*-*-*-*/ + +#include "eval.h" + +double gsl_sf_hyperg_U_int(const int a, const int b, const double x) +{ + EVAL_RESULT(gsl_sf_hyperg_U_int_e(a, b, x, &result)); +} + +double gsl_sf_hyperg_U(const double a, const double b, const double x) +{ + EVAL_RESULT(gsl_sf_hyperg_U_e(a, b, x, &result)); +} diff --git a/gsl-2.5/specfunc/hyperg_U.lo b/gsl-2.5/specfunc/hyperg_U.lo new file mode 100644 index 00000000..b1060556 --- /dev/null +++ b/gsl-2.5/specfunc/hyperg_U.lo @@ -0,0 +1,12 @@ +# hyperg_U.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/hyperg_U.o' + +# Name of the non-PIC object +non_pic_object='hyperg_U.o' + diff --git a/gsl-2.5/specfunc/laguerre.c b/gsl-2.5/specfunc/laguerre.c new file mode 100644 index 00000000..8fb08a78 --- /dev/null +++ b/gsl-2.5/specfunc/laguerre.c @@ -0,0 +1,335 @@ +/* specfunc/laguerre.c + * + * Copyright (C) 2007 Brian Gough + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ + +#include +#include +#include +#include +#include +#include + +#include "error.h" + +/*-*-*-*-*-*-*-*-*-*-*-* Private Section *-*-*-*-*-*-*-*-*-*-*-*/ + + +/* based on the large 2b-4a asymptotic for 1F1 + * [Abramowitz+Stegun, 13.5.21] + * L^a_n(x) = (a+1)_n / n! 1F1(-n,a+1,x) + * + * The second term (ser_term2) is from Slater,"The Confluent + * Hypergeometric Function" p.73. I think there may be an error in + * the first term of the expression given there, comparing with AS + * 13.5.21 (cf sin(a\pi+\Theta) vs sin(a\pi) + sin(\Theta)) - but the + * second term appears correct. + * + */ +static +int +laguerre_large_n(const int n, const double alpha, const double x, + gsl_sf_result * result) +{ + const double a = -n; + const double b = alpha + 1.0; + const double eta = 2.0*b - 4.0*a; + const double cos2th = x/eta; + const double sin2th = 1.0 - cos2th; + const double eps = asin(sqrt(cos2th)); /* theta = pi/2 - eps */ + const double pre_h = 0.25*M_PI*M_PI*eta*eta*cos2th*sin2th; + gsl_sf_result lg_b; + gsl_sf_result lnfact; + int stat_lg = gsl_sf_lngamma_e(b+n, &lg_b); + int stat_lf = gsl_sf_lnfact_e(n, &lnfact); + double pre_term1 = 0.5*(1.0-b)*log(0.25*x*eta); + double pre_term2 = 0.25*log(pre_h); + double lnpre_val = lg_b.val - lnfact.val + 0.5*x + pre_term1 - pre_term2; + double lnpre_err = lg_b.err + lnfact.err + GSL_DBL_EPSILON * (fabs(pre_term1)+fabs(pre_term2)); + + double phi1 = 0.25*eta*(2*eps + sin(2.0*eps)); + double ser_term1 = -sin(phi1); + + double A1 = (1.0/12.0)*(5.0/(4.0*sin2th)+(3.0*b*b-6.0*b+2.0)*sin2th - 1.0); + double ser_term2 = -A1 * cos(phi1)/(0.25*eta*sin(2.0*eps)); + + double ser_val = ser_term1 + ser_term2; + double ser_err = ser_term2*ser_term2 + GSL_DBL_EPSILON * (fabs(ser_term1) + fabs(ser_term2)); + int stat_e = gsl_sf_exp_mult_err_e(lnpre_val, lnpre_err, ser_val, ser_err, result); + result->err += 2.0 * GSL_SQRT_DBL_EPSILON * fabs(result->val); + return GSL_ERROR_SELECT_3(stat_e, stat_lf, stat_lg); +} + + +/* Evaluate polynomial based on confluent hypergeometric representation. + * + * L^a_n(x) = (a+1)_n / n! 1F1(-n,a+1,x) + * + * assumes n > 0 and a != negative integer greater than -n + */ +static +int +laguerre_n_cp(const int n, const double a, const double x, gsl_sf_result * result) +{ + gsl_sf_result lnfact; + gsl_sf_result lg1; + gsl_sf_result lg2; + double s1, s2; + int stat_f = gsl_sf_lnfact_e(n, &lnfact); + int stat_g1 = gsl_sf_lngamma_sgn_e(a+1.0+n, &lg1, &s1); + int stat_g2 = gsl_sf_lngamma_sgn_e(a+1.0, &lg2, &s2); + double poly_1F1_val = 1.0; + double poly_1F1_err = 0.0; + int stat_e; + int k; + + double lnpre_val = (lg1.val - lg2.val) - lnfact.val; + double lnpre_err = lg1.err + lg2.err + lnfact.err + 2.0 * GSL_DBL_EPSILON * fabs(lnpre_val); + + for(k=n-1; k>=0; k--) { + double t = (-n+k)/(a+1.0+k) * (x/(k+1)); + double r = t + 1.0/poly_1F1_val; + if(r > 0.9*GSL_DBL_MAX/poly_1F1_val) { + /* internal error only, don't call the error handler */ + INTERNAL_OVERFLOW_ERROR(result); + } + else { + /* Collect the Horner terms. */ + poly_1F1_val = 1.0 + t * poly_1F1_val; + poly_1F1_err += GSL_DBL_EPSILON + fabs(t) * poly_1F1_err; + } + } + + stat_e = gsl_sf_exp_mult_err_e(lnpre_val, lnpre_err, + poly_1F1_val, poly_1F1_err, + result); + + return GSL_ERROR_SELECT_4(stat_e, stat_f, stat_g1, stat_g2); +} + + +/* Evaluate the polynomial based on the confluent hypergeometric + * function in a safe way, with no restriction on the arguments. + * + * assumes x != 0 + */ +static +int +laguerre_n_poly_safe(const int n, const double a, const double x, gsl_sf_result * result) +{ + const double b = a + 1.0; + const double mx = -x; + const double tc_sgn = (x < 0.0 ? 1.0 : (GSL_IS_ODD(n) ? -1.0 : 1.0)); + gsl_sf_result tc; + int stat_tc = gsl_sf_taylorcoeff_e(n, fabs(x), &tc); + + if(stat_tc == GSL_SUCCESS) { + double term = tc.val * tc_sgn; + double sum_val = term; + double sum_err = tc.err; + int k; + for(k=n-1; k>=0; k--) { + term *= ((b+k)/(n-k))*(k+1.0)/mx; + sum_val += term; + sum_err += 4.0 * GSL_DBL_EPSILON * fabs(term); + } + result->val = sum_val; + result->err = sum_err + 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else if(stat_tc == GSL_EOVRFLW) { + result->val = 0.0; /* FIXME: should be Inf */ + result->err = 0.0; + return stat_tc; + } + else { + result->val = 0.0; + result->err = 0.0; + return stat_tc; + } +} + + + +/*-*-*-*-*-*-*-*-*-*-*-* Functions with Error Codes *-*-*-*-*-*-*-*-*-*-*/ + +int +gsl_sf_laguerre_1_e(const double a, const double x, gsl_sf_result * result) +{ + /* CHECK_POINTER(result) */ + + { + result->val = 1.0 + a - x; + result->err = 2.0 * GSL_DBL_EPSILON * (1.0 + fabs(a) + fabs(x)); + return GSL_SUCCESS; + } +} + +int +gsl_sf_laguerre_2_e(const double a, const double x, gsl_sf_result * result) +{ + /* CHECK_POINTER(result) */ + + if(a == -2.0) { + result->val = 0.5*x*x; + result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else { + double c0 = 0.5 * (2.0+a)*(1.0+a); + double c1 = -(2.0+a); + double c2 = -0.5/(2.0+a); + result->val = c0 + c1*x*(1.0 + c2*x); + result->err = 2.0 * GSL_DBL_EPSILON * (fabs(c0) + 2.0 * fabs(c1*x) * (1.0 + 2.0 * fabs(c2*x))); + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } +} + +int +gsl_sf_laguerre_3_e(const double a, const double x, gsl_sf_result * result) +{ + /* CHECK_POINTER(result) */ + + if(a == -2.0) { + double x2_6 = x*x/6.0; + result->val = x2_6 * (3.0 - x); + result->err = x2_6 * (3.0 + fabs(x)) * 2.0 * GSL_DBL_EPSILON; + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else if(a == -3.0) { + result->val = -x*x/6.0; + result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else { + double c0 = (3.0+a)*(2.0+a)*(1.0+a) / 6.0; + double c1 = -c0 * 3.0 / (1.0+a); + double c2 = -1.0/(2.0+a); + double c3 = -1.0/(3.0*(3.0+a)); + result->val = c0 + c1*x*(1.0 + c2*x*(1.0 + c3*x)); + result->err = 1.0 + 2.0 * fabs(c3*x); + result->err = 1.0 + 2.0 * fabs(c2*x) * result->err; + result->err = 2.0 * GSL_DBL_EPSILON * (fabs(c0) + 2.0 * fabs(c1*x) * result->err); + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } +} + + +int gsl_sf_laguerre_n_e(const int n, const double a, const double x, + gsl_sf_result * result) +{ + /* CHECK_POINTER(result) */ + + if(n < 0) { + DOMAIN_ERROR(result); + } + else if(n == 0) { + result->val = 1.0; + result->err = 0.0; + return GSL_SUCCESS; + } + else if(n == 1) { + result->val = 1.0 + a - x; + result->err = 2.0 * GSL_DBL_EPSILON * (1.0 + fabs(a) + fabs(x)); + return GSL_SUCCESS; + } + else if(x == 0.0) { + double product = a + 1.0; + int k; + for(k=2; k<=n; k++) { + product *= (a + k)/k; + } + result->val = product; + result->err = 2.0 * (n + 1.0) * GSL_DBL_EPSILON * fabs(product) + GSL_DBL_EPSILON; + return GSL_SUCCESS; + } + else if(x < 0.0 && a > -1.0) { + /* In this case all the terms in the polynomial + * are of the same sign. Note that this also + * catches overflows correctly. + */ + return laguerre_n_cp(n, a, x, result); + } + else if(n < 5 || (x > 0.0 && a < -n-1)) { + /* Either the polynomial will not lose too much accuracy + * or all the terms are negative. In any case, + * the error estimate here is good. We try both + * explicit summation methods, as they have different + * characteristics. One may underflow/overflow while the + * other does not. + */ + if(laguerre_n_cp(n, a, x, result) == GSL_SUCCESS) + return GSL_SUCCESS; + else + return laguerre_n_poly_safe(n, a, x, result); + } + else if(n > 1.0e+07 && x > 0.0 && a > -1.0 && x < 2.0*(a+1.0)+4.0*n) { + return laguerre_large_n(n, a, x, result); + } + else if(a >= 0.0 || (x > 0.0 && a < -n-1)) { + gsl_sf_result lg2; + int stat_lg2 = gsl_sf_laguerre_2_e(a, x, &lg2); + double Lkm1 = 1.0 + a - x; + double Lk = lg2.val; + double Lkp1; + int k; + + for(k=2; kval = Lk; + result->err = (fabs(lg2.err/lg2.val) + GSL_DBL_EPSILON) * n * fabs(Lk); + return stat_lg2; + } + else { + /* Despair... or magic? */ + return laguerre_n_poly_safe(n, a, x, result); + } +} + + +/*-*-*-*-*-*-*-*-*-* Functions w/ Natural Prototypes *-*-*-*-*-*-*-*-*-*-*/ + +#include "eval.h" + +double gsl_sf_laguerre_1(double a, double x) +{ + EVAL_RESULT(gsl_sf_laguerre_1_e(a, x, &result)); +} + +double gsl_sf_laguerre_2(double a, double x) +{ + EVAL_RESULT(gsl_sf_laguerre_2_e(a, x, &result)); +} + +double gsl_sf_laguerre_3(double a, double x) +{ + EVAL_RESULT(gsl_sf_laguerre_3_e(a, x, &result)); +} + +double gsl_sf_laguerre_n(int n, double a, double x) +{ + EVAL_RESULT(gsl_sf_laguerre_n_e(n, a, x, &result)); +} diff --git a/gsl-2.5/specfunc/laguerre.lo b/gsl-2.5/specfunc/laguerre.lo new file mode 100644 index 00000000..ae5fe82c --- /dev/null +++ b/gsl-2.5/specfunc/laguerre.lo @@ -0,0 +1,12 @@ +# laguerre.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/laguerre.o' + +# Name of the non-PIC object +non_pic_object='laguerre.o' + diff --git a/gsl-2.5/specfunc/lambert.c b/gsl-2.5/specfunc/lambert.c new file mode 100644 index 00000000..606f8492 --- /dev/null +++ b/gsl-2.5/specfunc/lambert.c @@ -0,0 +1,231 @@ +/* specfunc/lambert.c + * + * Copyright (C) 2007 Brian Gough + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ + +#include +#include +#include +#include +#include + +/* Started with code donated by K. Briggs; added + * error estimates, GSL foo, and minor tweaks. + * Some Lambert-ology from + * [Corless, Gonnet, Hare, and Jeffrey, "On Lambert's W Function".] + */ + + +/* Halley iteration (eqn. 5.12, Corless et al) */ +static int +halley_iteration( + double x, + double w_initial, + unsigned int max_iters, + gsl_sf_result * result + ) +{ + double w = w_initial; + unsigned int i; + + for(i=0; i 0) { + t = (t/p)/e; /* Newton iteration */ + } else { + t /= e*p - 0.5*(p + 1.0)*t/p; /* Halley iteration */ + }; + + w -= t; + + tol = 10 * GSL_DBL_EPSILON * GSL_MAX_DBL(fabs(w), 1.0/(fabs(p)*e)); + + if(fabs(t) < tol) + { + result->val = w; + result->err = 2.0*tol; + return GSL_SUCCESS; + } + } + + /* should never get here */ + result->val = w; + result->err = fabs(w); + return GSL_EMAXITER; +} + + +/* series which appears for q near zero; + * only the argument is different for the different branches + */ +static double +series_eval(double r) +{ + static const double c[12] = { + -1.0, + 2.331643981597124203363536062168, + -1.812187885639363490240191647568, + 1.936631114492359755363277457668, + -2.353551201881614516821543561516, + 3.066858901050631912893148922704, + -4.175335600258177138854984177460, + 5.858023729874774148815053846119, + -8.401032217523977370984161688514, + 12.250753501314460424, + -18.100697012472442755, + 27.029044799010561650 + }; + const double t_8 = c[8] + r*(c[9] + r*(c[10] + r*c[11])); + const double t_5 = c[5] + r*(c[6] + r*(c[7] + r*t_8)); + const double t_1 = c[1] + r*(c[2] + r*(c[3] + r*(c[4] + r*t_5))); + return c[0] + r*t_1; +} + + +/*-*-*-*-*-*-*-*-*-*-*-* Functions with Error Codes *-*-*-*-*-*-*-*-*-*-*-*/ + +int +gsl_sf_lambert_W0_e(double x, gsl_sf_result * result) +{ + const double one_over_E = 1.0/M_E; + const double q = x + one_over_E; + + if(x == 0.0) { + result->val = 0.0; + result->err = 0.0; + return GSL_SUCCESS; + } + else if(q < 0.0) { + /* Strictly speaking this is an error. But because of the + * arithmetic operation connecting x and q, I am a little + * lenient in case of some epsilon overshoot. The following + * answer is quite accurate in that case. Anyway, we have + * to return GSL_EDOM. + */ + result->val = -1.0; + result->err = sqrt(-q); + return GSL_EDOM; + } + else if(q == 0.0) { + result->val = -1.0; + result->err = GSL_DBL_EPSILON; /* cannot error is zero, maybe q == 0 by "accident" */ + return GSL_SUCCESS; + } + else if(q < 1.0e-03) { + /* series near -1/E in sqrt(q) */ + const double r = sqrt(q); + result->val = series_eval(r); + result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else { + static const unsigned int MAX_ITERS = 10; + double w; + + if (x < 1.0) { + /* obtain initial approximation from series near x=0; + * no need for extra care, since the Halley iteration + * converges nicely on this branch + */ + const double p = sqrt(2.0 * M_E * q); + w = -1.0 + p*(1.0 + p*(-1.0/3.0 + p*11.0/72.0)); + } + else { + /* obtain initial approximation from rough asymptotic */ + w = log(x); + if(x > 3.0) w -= log(w); + } + + return halley_iteration(x, w, MAX_ITERS, result); + } +} + + +int +gsl_sf_lambert_Wm1_e(double x, gsl_sf_result * result) +{ + if(x > 0.0) { + return gsl_sf_lambert_W0_e(x, result); + } + else if(x == 0.0) { + result->val = 0.0; + result->err = 0.0; + return GSL_SUCCESS; + } + else { + static const unsigned int MAX_ITERS = 32; + const double one_over_E = 1.0/M_E; + const double q = x + one_over_E; + double w; + + if (q < 0.0) { + /* As in the W0 branch above, return some reasonable answer anyway. */ + result->val = -1.0; + result->err = sqrt(-q); + return GSL_EDOM; + } + + if(x < -1.0e-6) { + /* Obtain initial approximation from series about q = 0, + * as long as we're not very close to x = 0. + * Use full series and try to bail out if q is too small, + * since the Halley iteration has bad convergence properties + * in finite arithmetic for q very small, because the + * increment alternates and p is near zero. + */ + const double r = -sqrt(q); + w = series_eval(r); + if(q < 3.0e-3) { + /* this approximation is good enough */ + result->val = w; + result->err = 5.0 * GSL_DBL_EPSILON * fabs(w); + return GSL_SUCCESS; + } + } + else { + /* Obtain initial approximation from asymptotic near zero. */ + const double L_1 = log(-x); + const double L_2 = log(-L_1); + w = L_1 - L_2 + L_2/L_1; + } + + return halley_iteration(x, w, MAX_ITERS, result); + } +} + + +/*-*-*-*-*-*-*-*-*-* Functions w/ Natural Prototypes *-*-*-*-*-*-*-*-*-*-*/ + +#include "eval.h" + +double gsl_sf_lambert_W0(double x) +{ + EVAL_RESULT(gsl_sf_lambert_W0_e(x, &result)); +} + +double gsl_sf_lambert_Wm1(double x) +{ + EVAL_RESULT(gsl_sf_lambert_Wm1_e(x, &result)); +} diff --git a/gsl-2.5/specfunc/lambert.lo b/gsl-2.5/specfunc/lambert.lo new file mode 100644 index 00000000..c776f0cb --- /dev/null +++ b/gsl-2.5/specfunc/lambert.lo @@ -0,0 +1,12 @@ +# lambert.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/lambert.o' + +# Name of the non-PIC object +non_pic_object='lambert.o' + diff --git a/gsl-2.5/specfunc/legendre.h b/gsl-2.5/specfunc/legendre.h new file mode 100644 index 00000000..5d34560c --- /dev/null +++ b/gsl-2.5/specfunc/legendre.h @@ -0,0 +1,72 @@ +/* specfunc/legendre.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ + +/* Declare private but non-local support functions + * used in various Legendre function evaluations. + */ + +#include + + +/* Large negative mu asymptotic + * P^{-mu}_{-1/2 + I tau}, mu -> Inf + * |x| < 1 + */ +int +gsl_sf_conicalP_xlt1_large_neg_mu_e(double mu, double tau, double x, + gsl_sf_result * result, double * ln_multiplier); + + +/* Large tau uniform asymptotics + * P^{-mu}_{-1/2 + I tau}, tau -> Inf + * 1 < x + */ +int +gsl_sf_conicalP_xgt1_neg_mu_largetau_e(const double mu, const double tau, + const double x, double acosh_x, + gsl_sf_result * result, double * ln_multiplier); + + +/* Large tau uniform asymptotics + * P^{-mu}_{-1/2 + I tau}, tau -> Inf + * -1 < x < 1 + */ +int +gsl_sf_conicalP_xlt1_neg_mu_largetau_e(const double mu, const double tau, + const double x, const double acos_x, + gsl_sf_result * result, double * ln_multiplier); + + +/* P^{mu}_{-1/2 + I tau} + * x->Inf + * + * * This is effective to precision EPS for + * + * (mu^2 + tau^2)/((1 + tau^2)^(1/2) x^2) < EPS^{1/3} + * + * since it goes only to a fixed order, based on the + * representation in terms of hypegeometric functions + * of argument 1/x^2. + * [Zhurina+Karmazina, (3.8)] + */ +int +gsl_sf_conicalP_large_x_e(const double mu, const double tau, const double x, + gsl_sf_result * result, double * ln_multiplier); diff --git a/gsl-2.5/specfunc/legendre_H3d.c b/gsl-2.5/specfunc/legendre_H3d.c new file mode 100644 index 00000000..8b58423d --- /dev/null +++ b/gsl-2.5/specfunc/legendre_H3d.c @@ -0,0 +1,568 @@ +/* specfunc/legendre_H3d.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ + +#include +#include +#include +#include +#include +#include +#include + +#include "error.h" + +#include "legendre.h" + +/* See [Abbott+Schaefer, Ap.J. 308, 546 (1986)] for + * enough details to follow what is happening here. + */ + + +/* Logarithm of normalization factor, Log[N(ell,lambda)]. + * N(ell,lambda) = Product[ lambda^2 + n^2, {n,0,ell} ] + * = |Gamma(ell + 1 + I lambda)|^2 lambda sinh(Pi lambda) / Pi + * Assumes ell >= 0. + */ +static +int +legendre_H3d_lnnorm(const int ell, const double lambda, double * result) +{ + double abs_lam = fabs(lambda); + + if(abs_lam == 0.0) { + *result = 0.0; + GSL_ERROR ("error", GSL_EDOM); + } + else if(lambda > (ell + 1.0)/GSL_ROOT3_DBL_EPSILON) { + /* There is a cancellation between the sinh(Pi lambda) + * term and the log(gamma(ell + 1 + i lambda) in the + * result below, so we show some care and save some digits. + * Note that the above guarantees that lambda is large, + * since ell >= 0. We use Stirling and a simple expansion + * of sinh. + */ + double rat = (ell+1.0)/lambda; + double ln_lam2ell2 = 2.0*log(lambda) + log(1.0 + rat*rat); + double lg_corrected = -2.0*(ell+1.0) + M_LNPI + (ell+0.5)*ln_lam2ell2 + 1.0/(288.0*lambda*lambda); + double angle_terms = lambda * 2.0 * rat * (1.0 - rat*rat/3.0); + *result = log(abs_lam) + lg_corrected + angle_terms - M_LNPI; + return GSL_SUCCESS; + } + else { + gsl_sf_result lg_r; + gsl_sf_result lg_theta; + gsl_sf_result ln_sinh; + gsl_sf_lngamma_complex_e(ell+1.0, lambda, &lg_r, &lg_theta); + gsl_sf_lnsinh_e(M_PI * abs_lam, &ln_sinh); + *result = log(abs_lam) + ln_sinh.val + 2.0*lg_r.val - M_LNPI; + return GSL_SUCCESS; + } +} + + +/* Calculate series for small eta*lambda. + * Assumes eta > 0, lambda != 0. + * + * This is just the defining hypergeometric for the Legendre function. + * + * P^{mu}_{-1/2 + I lam}(z) = 1/Gamma(l+3/2) ((z+1)/(z-1)^(mu/2) + * 2F1(1/2 - I lam, 1/2 + I lam; l+3/2; (1-z)/2) + * We use + * z = cosh(eta) + * (z-1)/2 = sinh^2(eta/2) + * + * And recall + * H3d = sqrt(Pi Norm /(2 lam^2 sinh(eta))) P^{-l-1/2}_{-1/2 + I lam}(cosh(eta)) + */ +static +int +legendre_H3d_series(const int ell, const double lambda, const double eta, + gsl_sf_result * result) +{ + const int nmax = 5000; + const double shheta = sinh(0.5*eta); + const double ln_zp1 = M_LN2 + log(1.0 + shheta*shheta); + const double ln_zm1 = M_LN2 + 2.0*log(shheta); + const double zeta = -shheta*shheta; + gsl_sf_result lg_lp32; + double term = 1.0; + double sum = 1.0; + double sum_err = 0.0; + gsl_sf_result lnsheta; + double lnN; + double lnpre_val, lnpre_err, lnprepow; + int stat_e; + int n; + + gsl_sf_lngamma_e(ell + 3.0/2.0, &lg_lp32); + gsl_sf_lnsinh_e(eta, &lnsheta); + legendre_H3d_lnnorm(ell, lambda, &lnN); + lnprepow = 0.5*(ell + 0.5) * (ln_zm1 - ln_zp1); + lnpre_val = lnprepow + 0.5*(lnN + M_LNPI - M_LN2 - lnsheta.val) - lg_lp32.val - log(fabs(lambda)); + lnpre_err = lnsheta.err + lg_lp32.err + GSL_DBL_EPSILON * fabs(lnpre_val); + lnpre_err += 2.0*GSL_DBL_EPSILON * (fabs(lnN) + M_LNPI + M_LN2); + lnpre_err += 2.0*GSL_DBL_EPSILON * (0.5*(ell + 0.5) * (fabs(ln_zm1) + fabs(ln_zp1))); + for(n=1; n RECUR_BIG || fabs(Bn) > RECUR_BIG) { + An /= RECUR_BIG; + Bn /= RECUR_BIG; + Anm1 /= RECUR_BIG; + Bnm1 /= RECUR_BIG; + Anm2 /= RECUR_BIG; + Bnm2 /= RECUR_BIG; + } + + old_fn = fn; + fn = An/Bn; + del = old_fn/fn; + + if(fabs(del - 1.0) < 4.0*GSL_DBL_EPSILON) break; + } + + result->val = fn; + result->err = 2.0 * GSL_DBL_EPSILON * (sqrt(n)+1.0) * fabs(fn); + + if(n >= maxiter) + GSL_ERROR ("error", GSL_EMAXITER); + else + return GSL_SUCCESS; +} +#endif /* 0 */ + + +/* Evaluate legendre_H3d(ell+1)/legendre_H3d(ell) + * by continued fraction. Use the Gautschi (Euler) + * equivalent series. + */ + /* FIXME: Maybe we have to worry about this. The a_k are + * not positive and there can be a blow-up. It happened + * for J_nu once or twice. Then we should probably use + * the method above. + */ +static +int +legendre_H3d_CF1_ser(const int ell, const double lambda, const double coth_eta, + gsl_sf_result * result) +{ + const double pre = hypot(lambda, ell+1.0)/((2.0*ell+3)*coth_eta); + const int maxk = 20000; + double tk = 1.0; + double sum = 1.0; + double rhok = 0.0; + double sum_err = 0.0; + int k; + + for(k=1; kval = pre * sum; + result->err = fabs(pre * tk); + result->err += fabs(pre * sum_err); + result->err += 4.0 * GSL_DBL_EPSILON * fabs(result->val); + + if(k >= maxk) + GSL_ERROR ("error", GSL_EMAXITER); + else + return GSL_SUCCESS; +} + + + +/*-*-*-*-*-*-*-*-*-*-*-* Functions with Error Codes *-*-*-*-*-*-*-*-*-*-*-*/ + +int +gsl_sf_legendre_H3d_0_e(const double lambda, const double eta, gsl_sf_result * result) +{ + /* CHECK_POINTER(result) */ + + if(eta < 0.0) { + DOMAIN_ERROR(result); + } + else if(eta == 0.0 || lambda == 0.0) { + result->val = 1.0; + result->err = 0.0; + return GSL_SUCCESS; + } + else { + const double lam_eta = lambda * eta; + gsl_sf_result s; + gsl_sf_sin_err_e(lam_eta, 2.0*GSL_DBL_EPSILON * fabs(lam_eta), &s); + if(eta > -0.5*GSL_LOG_DBL_EPSILON) { + double f = 2.0 / lambda * exp(-eta); + result->val = f * s.val; + result->err = fabs(f * s.val) * (fabs(eta) + 1.0) * GSL_DBL_EPSILON; + result->err += fabs(f) * s.err; + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + } + else { + double f = 1.0/(lambda*sinh(eta)); + result->val = f * s.val; + result->err = fabs(f * s.val) * (fabs(eta) + 1.0) * GSL_DBL_EPSILON; + result->err += fabs(f) * s.err; + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + } + return GSL_SUCCESS; + } +} + + +int +gsl_sf_legendre_H3d_1_e(const double lambda, const double eta, gsl_sf_result * result) +{ + const double xi = fabs(eta*lambda); + const double lsq = lambda*lambda; + const double lsqp1 = lsq + 1.0; + + /* CHECK_POINTER(result) */ + + if(eta < 0.0) { + DOMAIN_ERROR(result); + } + else if(eta == 0.0 || lambda == 0.0) { + result->val = 0.0; + result->err = 0.0; + return GSL_SUCCESS; + } + else if(xi < GSL_ROOT5_DBL_EPSILON && eta < GSL_ROOT5_DBL_EPSILON) { + double etasq = eta*eta; + double xisq = xi*xi; + double term1 = (etasq + xisq)/3.0; + double term2 = -(2.0*etasq*etasq + 5.0*etasq*xisq + 3.0*xisq*xisq)/90.0; + double sinh_term = 1.0 - eta*eta/6.0 * (1.0 - 7.0/60.0*eta*eta); + double pre = sinh_term/sqrt(lsqp1) / eta; + result->val = pre * (term1 + term2); + result->err = pre * GSL_DBL_EPSILON * (fabs(term1) + fabs(term2)); + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else { + double sin_term; /* Sin(xi)/xi */ + double cos_term; /* Cos(xi) */ + double coth_term; /* eta/Tanh(eta) */ + double sinh_term; /* eta/Sinh(eta) */ + double sin_term_err; + double cos_term_err; + double t1; + double pre_val; + double pre_err; + double term1; + double term2; + if(xi < GSL_ROOT5_DBL_EPSILON) { + sin_term = 1.0 - xi*xi/6.0 * (1.0 - xi*xi/20.0); + cos_term = 1.0 - 0.5*xi*xi * (1.0 - xi*xi/12.0); + sin_term_err = GSL_DBL_EPSILON; + cos_term_err = GSL_DBL_EPSILON; + } + else { + gsl_sf_result sin_xi_result; + gsl_sf_result cos_xi_result; + gsl_sf_sin_e(xi, &sin_xi_result); + gsl_sf_cos_e(xi, &cos_xi_result); + sin_term = sin_xi_result.val/xi; + cos_term = cos_xi_result.val; + sin_term_err = sin_xi_result.err/fabs(xi); + cos_term_err = cos_xi_result.err; + } + if(eta < GSL_ROOT5_DBL_EPSILON) { + coth_term = 1.0 + eta*eta/3.0 * (1.0 - eta*eta/15.0); + sinh_term = 1.0 - eta*eta/6.0 * (1.0 - 7.0/60.0*eta*eta); + } + else { + coth_term = eta/tanh(eta); + sinh_term = eta/sinh(eta); + } + t1 = sqrt(lsqp1) * eta; + pre_val = sinh_term/t1; + pre_err = 2.0 * GSL_DBL_EPSILON * fabs(pre_val); + term1 = sin_term*coth_term; + term2 = cos_term; + result->val = pre_val * (term1 - term2); + result->err = pre_err * fabs(term1 - term2); + result->err += pre_val * (sin_term_err * coth_term + cos_term_err); + result->err += pre_val * fabs(term1-term2) * (fabs(eta) + 1.0) * GSL_DBL_EPSILON; + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } +} + + +int +gsl_sf_legendre_H3d_e(const int ell, const double lambda, const double eta, + gsl_sf_result * result) +{ + const double abs_lam = fabs(lambda); + const double lsq = abs_lam*abs_lam; + const double xi = abs_lam * eta; + const double cosh_eta = cosh(eta); + + /* CHECK_POINTER(result) */ + + if(eta < 0.0) { + DOMAIN_ERROR(result); + } + else if(eta > GSL_LOG_DBL_MAX) { + /* cosh(eta) is too big. */ + OVERFLOW_ERROR(result); + } + else if(ell == 0) { + return gsl_sf_legendre_H3d_0_e(lambda, eta, result); + } + else if(ell == 1) { + return gsl_sf_legendre_H3d_1_e(lambda, eta, result); + } + else if(eta == 0.0) { + result->val = 0.0; + result->err = 0.0; + return GSL_SUCCESS; + } + else if(xi < 1.0) { + return legendre_H3d_series(ell, lambda, eta, result); + } + else if((ell*ell+lsq)/sqrt(1.0+lsq)/(cosh_eta*cosh_eta) < 5.0*GSL_ROOT3_DBL_EPSILON) { + /* Large argument. + */ + gsl_sf_result P; + double lm; + int stat_P = gsl_sf_conicalP_large_x_e(-ell-0.5, lambda, cosh_eta, &P, &lm); + if(P.val == 0.0) { + result->val = 0.0; + result->err = 0.0; + return stat_P; + } + else { + double lnN; + gsl_sf_result lnsh; + double ln_abslam; + double lnpre_val, lnpre_err; + int stat_e; + gsl_sf_lnsinh_e(eta, &lnsh); + legendre_H3d_lnnorm(ell, lambda, &lnN); + ln_abslam = log(abs_lam); + lnpre_val = 0.5*(M_LNPI + lnN - M_LN2 - lnsh.val) - ln_abslam; + lnpre_err = lnsh.err; + lnpre_err += 2.0 * GSL_DBL_EPSILON * (0.5*(M_LNPI + M_LN2 + fabs(lnN)) + fabs(ln_abslam)); + lnpre_err += 2.0 * GSL_DBL_EPSILON * fabs(lnpre_val); + stat_e = gsl_sf_exp_mult_err_e(lnpre_val + lm, lnpre_err, P.val, P.err, result); + return GSL_ERROR_SELECT_2(stat_e, stat_P); + } + } + else if(abs_lam > 1000.0*ell*ell) { + /* Large degree. + */ + gsl_sf_result P; + double lm; + int stat_P = gsl_sf_conicalP_xgt1_neg_mu_largetau_e(ell+0.5, + lambda, + cosh_eta, eta, + &P, &lm); + if(P.val == 0.0) { + result->val = 0.0; + result->err = 0.0; + return stat_P; + } + else { + double lnN; + gsl_sf_result lnsh; + double ln_abslam; + double lnpre_val, lnpre_err; + int stat_e; + gsl_sf_lnsinh_e(eta, &lnsh); + legendre_H3d_lnnorm(ell, lambda, &lnN); + ln_abslam = log(abs_lam); + lnpre_val = 0.5*(M_LNPI + lnN - M_LN2 - lnsh.val) - ln_abslam; + lnpre_err = lnsh.err; + lnpre_err += GSL_DBL_EPSILON * (0.5*(M_LNPI + M_LN2 + fabs(lnN)) + fabs(ln_abslam)); + lnpre_err += 2.0 * GSL_DBL_EPSILON * fabs(lnpre_val); + stat_e = gsl_sf_exp_mult_err_e(lnpre_val + lm, lnpre_err, P.val, P.err, result); + return GSL_ERROR_SELECT_2(stat_e, stat_P); + } + } + else { + /* Backward recurrence. + */ + const double coth_eta = 1.0/tanh(eta); + const double coth_err_mult = fabs(eta) + 1.0; + gsl_sf_result rH; + int stat_CF1 = legendre_H3d_CF1_ser(ell, lambda, coth_eta, &rH); + double Hlm1; + double Hl = GSL_SQRT_DBL_MIN; + double Hlp1 = rH.val * Hl; + int lp; + for(lp=ell; lp>0; lp--) { + double root_term_0 = hypot(lambda,lp); + double root_term_1 = hypot(lambda,lp+1.0); + Hlm1 = ((2.0*lp + 1.0)*coth_eta*Hl - root_term_1 * Hlp1)/root_term_0; + Hlp1 = Hl; + Hl = Hlm1; + } + + if(fabs(Hl) > fabs(Hlp1)) { + gsl_sf_result H0; + int stat_H0 = gsl_sf_legendre_H3d_0_e(lambda, eta, &H0); + result->val = GSL_SQRT_DBL_MIN/Hl * H0.val; + result->err = GSL_SQRT_DBL_MIN/fabs(Hl) * H0.err; + result->err += fabs(rH.err/rH.val) * (ell+1.0) * coth_err_mult * fabs(result->val); + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_ERROR_SELECT_2(stat_H0, stat_CF1); + } + else { + gsl_sf_result H1; + int stat_H1 = gsl_sf_legendre_H3d_1_e(lambda, eta, &H1); + result->val = GSL_SQRT_DBL_MIN/Hlp1 * H1.val; + result->err = GSL_SQRT_DBL_MIN/fabs(Hlp1) * H1.err; + result->err += fabs(rH.err/rH.val) * (ell+1.0) * coth_err_mult * fabs(result->val); + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_ERROR_SELECT_2(stat_H1, stat_CF1); + } + } +} + + +int +gsl_sf_legendre_H3d_array(const int lmax, const double lambda, const double eta, double * result_array) +{ + /* CHECK_POINTER(result_array) */ + + if(eta < 0.0 || lmax < 0) { + int ell; + for(ell=0; ell<=lmax; ell++) result_array[ell] = 0.0; + GSL_ERROR ("domain error", GSL_EDOM); + } + else if(eta > GSL_LOG_DBL_MAX) { + /* cosh(eta) is too big. */ + int ell; + for(ell=0; ell<=lmax; ell++) result_array[ell] = 0.0; + GSL_ERROR ("overflow", GSL_EOVRFLW); + } + else if(lmax == 0) { + gsl_sf_result H0; + int stat = gsl_sf_legendre_H3d_e(0, lambda, eta, &H0); + result_array[0] = H0.val; + return stat; + } + else { + /* Not the most efficient method. But what the hell... it's simple. + */ + gsl_sf_result r_Hlp1; + gsl_sf_result r_Hl; + int stat_lmax = gsl_sf_legendre_H3d_e(lmax, lambda, eta, &r_Hlp1); + int stat_lmaxm1 = gsl_sf_legendre_H3d_e(lmax-1, lambda, eta, &r_Hl); + int stat_max = GSL_ERROR_SELECT_2(stat_lmax, stat_lmaxm1); + + const double coth_eta = 1.0/tanh(eta); + int stat_recursion = GSL_SUCCESS; + double Hlp1 = r_Hlp1.val; + double Hl = r_Hl.val; + double Hlm1; + int ell; + + result_array[lmax] = Hlp1; + result_array[lmax-1] = Hl; + + for(ell=lmax-1; ell>0; ell--) { + double root_term_0 = hypot(lambda,ell); + double root_term_1 = hypot(lambda,ell+1.0); + Hlm1 = ((2.0*ell + 1.0)*coth_eta*Hl - root_term_1 * Hlp1)/root_term_0; + result_array[ell-1] = Hlm1; + if(!(Hlm1 < GSL_DBL_MAX)) stat_recursion = GSL_EOVRFLW; + Hlp1 = Hl; + Hl = Hlm1; + } + + return GSL_ERROR_SELECT_2(stat_recursion, stat_max); + } +} + + +/*-*-*-*-*-*-*-*-*-* Functions w/ Natural Prototypes *-*-*-*-*-*-*-*-*-*-*/ + +#include "eval.h" + +double gsl_sf_legendre_H3d_0(const double lambda, const double eta) +{ + EVAL_RESULT(gsl_sf_legendre_H3d_0_e(lambda, eta, &result)); +} + +double gsl_sf_legendre_H3d_1(const double lambda, const double eta) +{ + EVAL_RESULT(gsl_sf_legendre_H3d_1_e(lambda, eta, &result)); +} + +double gsl_sf_legendre_H3d(const int l, const double lambda, const double eta) +{ + EVAL_RESULT(gsl_sf_legendre_H3d_e(l, lambda, eta, &result)); +} diff --git a/gsl-2.5/specfunc/legendre_H3d.lo b/gsl-2.5/specfunc/legendre_H3d.lo new file mode 100644 index 00000000..e5a75637 --- /dev/null +++ b/gsl-2.5/specfunc/legendre_H3d.lo @@ -0,0 +1,12 @@ +# legendre_H3d.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/legendre_H3d.o' + +# Name of the non-PIC object +non_pic_object='legendre_H3d.o' + diff --git a/gsl-2.5/specfunc/legendre_P.c b/gsl-2.5/specfunc/legendre_P.c new file mode 100644 index 00000000..45e26fa2 --- /dev/null +++ b/gsl-2.5/specfunc/legendre_P.c @@ -0,0 +1,114 @@ +/* specfunc/legendre_P.c + * + * Copyright (C) 2009-2013 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include + +/* + * The routines in this module compute associated Legendre functions + * (ALFs) up to order and degree 2700, using the method described + * in + * + * [1] S. A. Holmes and W. E. Featherstone, A unified approach + * to the Clenshaw summation and the recursive computation of very + * high degree and order normalised associated Legendre functions, + * Journal of Geodesy, 76, pg. 279-299, 2002. + * + * Further information on ALFs can be found in + * + * [2] Abramowitz and Stegun, Handbook of Mathematical Functions, + * Chapter 8, 1972. + */ + +static void legendre_sqrts(const size_t lmax, double *array); + +#define LEGENDRE +#include "legendre_source.c" +#undef LEGENDRE + +#define LEGENDRE_DERIV +#include "legendre_source.c" +#undef LEGENDRE_DERIV + +#define LEGENDRE_DERIV_ALT +#include "legendre_source.c" +#undef LEGENDRE_DERIV_ALT + +#define LEGENDRE_DERIV2 +#include "legendre_source.c" +#undef LEGENDRE_DERIV2 + +#define LEGENDRE_DERIV2_ALT +#include "legendre_source.c" +#undef LEGENDRE_DERIV2_ALT + +/* number of P_{lm} functions for a given lmax */ +size_t +gsl_sf_legendre_nlm(const size_t lmax) +{ + return ((lmax + 1) * (lmax + 2) / 2); +} + +/* +gsl_sf_legendre_array_n() + This routine returns the minimum result_array[] size needed +for a given lmax +*/ + +size_t +gsl_sf_legendre_array_n(const size_t lmax) +{ + size_t nlm = gsl_sf_legendre_nlm(lmax); + size_t nsqrt = 2 * lmax + 2; /* extra room to precompute sqrt factors */ + + return (nlm + nsqrt); +} /* gsl_sf_legendre_array_n() */ + +/* +gsl_sf_legendre_array_index() +This routine computes the index into a result_array[] corresponding +to a given (l,m) +*/ + +size_t +gsl_sf_legendre_array_index(const size_t l, const size_t m) +{ + return (l * (l + 1) / 2 + m); +} /* gsl_sf_legendre_array_index() */ + +/********************************************************* + * INTERNAL ROUTINES * + *********************************************************/ + +/* +legendre_sqrts() + Precompute square root factors needed for Legendre recurrence. +On output, array[i] = sqrt(i) +*/ + +static void +legendre_sqrts(const size_t lmax, double *array) +{ + size_t l; + for (l = 0; l <= 2 * lmax + 1; ++l) + array[l] = sqrt((double) l); +} diff --git a/gsl-2.5/specfunc/legendre_P.lo b/gsl-2.5/specfunc/legendre_P.lo new file mode 100644 index 00000000..50692bf7 --- /dev/null +++ b/gsl-2.5/specfunc/legendre_P.lo @@ -0,0 +1,12 @@ +# legendre_P.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/legendre_P.o' + +# Name of the non-PIC object +non_pic_object='legendre_P.o' + diff --git a/gsl-2.5/specfunc/legendre_Qn.c b/gsl-2.5/specfunc/legendre_Qn.c new file mode 100644 index 00000000..54edcbcf --- /dev/null +++ b/gsl-2.5/specfunc/legendre_Qn.c @@ -0,0 +1,366 @@ +/* specfunc/legendre_Qn.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ + +#include +#include +#include +#include +#include +#include +#include +#include + +#include "error.h" + +/* Evaluate f_{ell+1}/f_ell + * f_ell := Q^{b}_{a+ell}(x) + * x > 1 + */ +static +int +legendreQ_CF1_xgt1(int ell, double a, double b, double x, double * result) +{ + const double RECUR_BIG = GSL_SQRT_DBL_MAX; + const int maxiter = 5000; + int n = 1; + double Anm2 = 1.0; + double Bnm2 = 0.0; + double Anm1 = 0.0; + double Bnm1 = 1.0; + double a1 = ell + 1.0 + a + b; + double b1 = (2.0*(ell+1.0+a) + 1.0) * x; + double An = b1*Anm1 + a1*Anm2; + double Bn = b1*Bnm1 + a1*Bnm2; + double an, bn; + double fn = An/Bn; + + while(n < maxiter) { + double old_fn; + double del; + double lna; + n++; + Anm2 = Anm1; + Bnm2 = Bnm1; + Anm1 = An; + Bnm1 = Bn; + lna = ell + n + a; + an = b*b - lna*lna; + bn = (2.0*lna + 1.0) * x; + An = bn*Anm1 + an*Anm2; + Bn = bn*Bnm1 + an*Bnm2; + + if(fabs(An) > RECUR_BIG || fabs(Bn) > RECUR_BIG) { + An /= RECUR_BIG; + Bn /= RECUR_BIG; + Anm1 /= RECUR_BIG; + Bnm1 /= RECUR_BIG; + Anm2 /= RECUR_BIG; + Bnm2 /= RECUR_BIG; + } + + old_fn = fn; + fn = An/Bn; + del = old_fn/fn; + + if(fabs(del - 1.0) < 4.0*GSL_DBL_EPSILON) break; + } + + *result = fn; + + if(n == maxiter) + GSL_ERROR ("error", GSL_EMAXITER); + else + return GSL_SUCCESS; +} + + +/* Uniform asymptotic for Q_l(x). + * Assumes x > -1.0 and x != 1.0. + * Discards second order and higher terms. + */ +static +int +legendre_Ql_asymp_unif(const double ell, const double x, gsl_sf_result * result) +{ + if(x < 1.0) { + double u = ell + 0.5; + double th = acos(x); + gsl_sf_result Y0, Y1; + int stat_Y0, stat_Y1; + int stat_m; + double pre; + double B00; + double sum; + + /* B00 = 1/8 (1 - th cot(th) / th^2 + * pre = sqrt(th/sin(th)) + */ + if(th < GSL_ROOT4_DBL_EPSILON) { + B00 = (1.0 + th*th/15.0)/24.0; + pre = 1.0 + th*th/12.0; + } + else { + double sin_th = sqrt(1.0 - x*x); + double cot_th = x / sin_th; + B00 = 1.0/8.0 * (1.0 - th * cot_th) / (th*th); + pre = sqrt(th/sin_th); + } + + stat_Y0 = gsl_sf_bessel_Y0_e(u*th, &Y0); + stat_Y1 = gsl_sf_bessel_Y1_e(u*th, &Y1); + + sum = -0.5*M_PI * (Y0.val + th/u * Y1.val * B00); + + stat_m = gsl_sf_multiply_e(pre, sum, result); + result->err += 0.5*M_PI * fabs(pre) * (Y0.err + fabs(th/u*B00)*Y1.err); + result->err += GSL_DBL_EPSILON * fabs(result->val); + + return GSL_ERROR_SELECT_3(stat_m, stat_Y0, stat_Y1); + } + else { + double u = ell + 0.5; + double xi = acosh(x); + gsl_sf_result K0_scaled, K1_scaled; + int stat_K0, stat_K1; + int stat_e; + double pre; + double B00; + double sum; + + /* B00 = -1/8 (1 - xi coth(xi) / xi^2 + * pre = sqrt(xi/sinh(xi)) + */ + if(xi < GSL_ROOT4_DBL_EPSILON) { + B00 = (1.0-xi*xi/15.0)/24.0; + pre = 1.0 - xi*xi/12.0; + } + else { + double sinh_xi = sqrt(x*x - 1.0); + double coth_xi = x / sinh_xi; + B00 = -1.0/8.0 * (1.0 - xi * coth_xi) / (xi*xi); + pre = sqrt(xi/sinh_xi); + } + + stat_K0 = gsl_sf_bessel_K0_scaled_e(u*xi, &K0_scaled); + stat_K1 = gsl_sf_bessel_K1_scaled_e(u*xi, &K1_scaled); + + sum = K0_scaled.val - xi/u * K1_scaled.val * B00; + + stat_e = gsl_sf_exp_mult_e(-u*xi, pre * sum, result); + result->err = GSL_DBL_EPSILON * fabs(result->val) * fabs(u*xi); + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + + return GSL_ERROR_SELECT_3(stat_e, stat_K0, stat_K1); + } +} + + + +/*-*-*-*-*-*-*-*-*-*-*-* Functions with Error Codes *-*-*-*-*-*-*-*-*-*-*-*/ + +int +gsl_sf_legendre_Q0_e(const double x, gsl_sf_result * result) +{ + /* CHECK_POINTER(result) */ + + if(x <= -1.0 || x == 1.0) { + DOMAIN_ERROR(result); + } + else if(x*x < GSL_ROOT6_DBL_EPSILON) { /* |x| <~ 0.05 */ + const double c3 = 1.0/3.0; + const double c5 = 1.0/5.0; + const double c7 = 1.0/7.0; + const double c9 = 1.0/9.0; + const double c11 = 1.0/11.0; + const double y = x * x; + const double series = 1.0 + y*(c3 + y*(c5 + y*(c7 + y*(c9 + y*c11)))); + result->val = x * series; + result->err = 2.0 * GSL_DBL_EPSILON * fabs(x); + return GSL_SUCCESS; + } + else if(x < 1.0) { + result->val = 0.5 * log((1.0+x)/(1.0-x)); + result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else if(x < 10.0) { + result->val = 0.5 * log((x+1.0)/(x-1.0)); + result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else if(x*GSL_DBL_MIN < 2.0) { + const double y = 1.0/(x*x); + const double c1 = 1.0/3.0; + const double c2 = 1.0/5.0; + const double c3 = 1.0/7.0; + const double c4 = 1.0/9.0; + const double c5 = 1.0/11.0; + const double c6 = 1.0/13.0; + const double c7 = 1.0/15.0; + result->val = (1.0/x) * (1.0 + y*(c1 + y*(c2 + y*(c3 + y*(c4 + y*(c5 + y*(c6 + y*c7))))))); + result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else { + UNDERFLOW_ERROR(result); + } +} + + +int +gsl_sf_legendre_Q1_e(const double x, gsl_sf_result * result) +{ + /* CHECK_POINTER(result) */ + + if(x <= -1.0 || x == 1.0) { + DOMAIN_ERROR(result); + } + else if(x*x < GSL_ROOT6_DBL_EPSILON) { /* |x| <~ 0.05 */ + const double c3 = 1.0/3.0; + const double c5 = 1.0/5.0; + const double c7 = 1.0/7.0; + const double c9 = 1.0/9.0; + const double c11 = 1.0/11.0; + const double y = x * x; + const double series = 1.0 + y*(c3 + y*(c5 + y*(c7 + y*(c9 + y*c11)))); + result->val = x * x * series - 1.0; + result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else if(x < 1.0){ + result->val = 0.5 * x * (log((1.0+x)/(1.0-x))) - 1.0; + result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else if(x < 6.0) { + result->val = 0.5 * x * log((x+1.0)/(x-1.0)) - 1.0; + result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else if(x*GSL_SQRT_DBL_MIN < 0.99/M_SQRT3) { + const double y = 1/(x*x); + const double c1 = 3.0/5.0; + const double c2 = 3.0/7.0; + const double c3 = 3.0/9.0; + const double c4 = 3.0/11.0; + const double c5 = 3.0/13.0; + const double c6 = 3.0/15.0; + const double c7 = 3.0/17.0; + const double c8 = 3.0/19.0; + const double sum = 1.0 + y*(c1 + y*(c2 + y*(c3 + y*(c4 + y*(c5 + y*(c6 + y*(c7 + y*c8))))))); + result->val = sum / (3.0*x*x); + result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else { + UNDERFLOW_ERROR(result); + } +} + + +int +gsl_sf_legendre_Ql_e(const int l, const double x, gsl_sf_result * result) +{ + /* CHECK_POINTER(result) */ + + if(x <= -1.0 || x == 1.0 || l < 0) { + DOMAIN_ERROR(result); + } + else if(l == 0) { + return gsl_sf_legendre_Q0_e(x, result); + } + else if(l == 1) { + return gsl_sf_legendre_Q1_e(x, result); + } + else if(l > 100000) { + return legendre_Ql_asymp_unif(l, x, result); + } + else if(x < 1.0){ + /* Forward recurrence. + */ + gsl_sf_result Q0, Q1; + int stat_Q0 = gsl_sf_legendre_Q0_e(x, &Q0); + int stat_Q1 = gsl_sf_legendre_Q1_e(x, &Q1); + double Qellm1 = Q0.val; + double Qell = Q1.val; + double Qellp1; + int ell; + for(ell=1; ellval = Qell; + result->err = GSL_DBL_EPSILON * l * fabs(result->val); + return GSL_ERROR_SELECT_2(stat_Q0, stat_Q1); + } + else { + /* x > 1.0 */ + + double rat; + int stat_CF1 = legendreQ_CF1_xgt1(l, 0.0, 0.0, x, &rat); + int stat_Q; + double Qellp1 = rat * GSL_SQRT_DBL_MIN; + double Qell = GSL_SQRT_DBL_MIN; + double Qellm1; + int ell; + for(ell=l; ell>0; ell--) { + Qellm1 = (x * (2.0*ell + 1.0) * Qell - (ell+1.0) * Qellp1) / ell; + Qellp1 = Qell; + Qell = Qellm1; + } + + if(fabs(Qell) > fabs(Qellp1)) { + gsl_sf_result Q0; + stat_Q = gsl_sf_legendre_Q0_e(x, &Q0); + result->val = GSL_SQRT_DBL_MIN * Q0.val / Qell; + result->err = l * GSL_DBL_EPSILON * fabs(result->val); + } + else { + gsl_sf_result Q1; + stat_Q = gsl_sf_legendre_Q1_e(x, &Q1); + result->val = GSL_SQRT_DBL_MIN * Q1.val / Qellp1; + result->err = l * GSL_DBL_EPSILON * fabs(result->val); + } + + return GSL_ERROR_SELECT_2(stat_Q, stat_CF1); + } +} + + +/*-*-*-*-*-*-*-*-*-* Functions w/ Natural Prototypes *-*-*-*-*-*-*-*-*-*-*/ + +#include "eval.h" + +double gsl_sf_legendre_Q0(const double x) +{ + EVAL_RESULT(gsl_sf_legendre_Q0_e(x, &result)); +} + +double gsl_sf_legendre_Q1(const double x) +{ + EVAL_RESULT(gsl_sf_legendre_Q1_e(x, &result)); +} + +double gsl_sf_legendre_Ql(const int l, const double x) +{ + EVAL_RESULT(gsl_sf_legendre_Ql_e(l, x, &result)); +} diff --git a/gsl-2.5/specfunc/legendre_Qn.lo b/gsl-2.5/specfunc/legendre_Qn.lo new file mode 100644 index 00000000..fe853054 --- /dev/null +++ b/gsl-2.5/specfunc/legendre_Qn.lo @@ -0,0 +1,12 @@ +# legendre_Qn.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/legendre_Qn.o' + +# Name of the non-PIC object +non_pic_object='legendre_Qn.o' + diff --git a/gsl-2.5/specfunc/legendre_con.c b/gsl-2.5/specfunc/legendre_con.c new file mode 100644 index 00000000..85dee57b --- /dev/null +++ b/gsl-2.5/specfunc/legendre_con.c @@ -0,0 +1,1374 @@ +/* specfunc/legendre_con.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * Copyright (C) 2010 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "error.h" +#include "legendre.h" + +#define Root_2OverPi_ 0.797884560802865355879892 +#define locEPS (1000.0*GSL_DBL_EPSILON) + + +/*-*-*-*-*-*-*-*-*-*-*-* Private Section *-*-*-*-*-*-*-*-*-*-*-*/ + + +#define RECURSE_LARGE (1.0e-5*GSL_DBL_MAX) +#define RECURSE_SMALL (1.0e+5*GSL_DBL_MIN) + + +/* Continued fraction for f_{ell+1}/f_ell + * f_ell := P^{-mu-ell}_{-1/2 + I tau}(x), x < 1.0 + * + * Uses standard CF method from Temme's book. + */ +static +int +conicalP_negmu_xlt1_CF1(const double mu, const int ell, const double tau, + const double x, gsl_sf_result * result) +{ + const double RECUR_BIG = GSL_SQRT_DBL_MAX; + const int maxiter = 5000; + int n = 1; + double xi = x/(sqrt(1.0-x)*sqrt(1.0+x)); + double Anm2 = 1.0; + double Bnm2 = 0.0; + double Anm1 = 0.0; + double Bnm1 = 1.0; + double a1 = 1.0; + double b1 = 2.0*(mu + ell + 1.0) * xi; + double An = b1*Anm1 + a1*Anm2; + double Bn = b1*Bnm1 + a1*Bnm2; + double an, bn; + double fn = An/Bn; + + while(n < maxiter) { + double old_fn; + double del; + n++; + Anm2 = Anm1; + Bnm2 = Bnm1; + Anm1 = An; + Bnm1 = Bn; + an = tau*tau + (mu - 0.5 + ell + n)*(mu - 0.5 + ell + n); + bn = 2.0*(ell + mu + n) * xi; + An = bn*Anm1 + an*Anm2; + Bn = bn*Bnm1 + an*Bnm2; + + if(fabs(An) > RECUR_BIG || fabs(Bn) > RECUR_BIG) { + An /= RECUR_BIG; + Bn /= RECUR_BIG; + Anm1 /= RECUR_BIG; + Bnm1 /= RECUR_BIG; + Anm2 /= RECUR_BIG; + Bnm2 /= RECUR_BIG; + } + + old_fn = fn; + fn = An/Bn; + del = old_fn/fn; + + if(fabs(del - 1.0) < 2.0*GSL_DBL_EPSILON) break; + } + + result->val = fn; + result->err = 4.0 * GSL_DBL_EPSILON * (sqrt(n) + 1.0) * fabs(fn); + + if(n >= maxiter) + GSL_ERROR ("error", GSL_EMAXITER); + else + return GSL_SUCCESS; +} + + +/* Continued fraction for f_{ell+1}/f_ell + * f_ell := P^{-mu-ell}_{-1/2 + I tau}(x), x >= 1.0 + * + * Uses Gautschi (Euler) equivalent series. + */ +static +int +conicalP_negmu_xgt1_CF1(const double mu, const int ell, const double tau, + const double x, gsl_sf_result * result) +{ + const int maxk = 20000; + const double gamma = 1.0-1.0/(x*x); + const double pre = sqrt(x-1.0)*sqrt(x+1.0) / (x*(2.0*(ell+mu+1.0))); + double tk = 1.0; + double sum = 1.0; + double rhok = 0.0; + int k; + + for(k=1; kval = pre * sum; + result->err = fabs(pre * tk); + result->err += 2.0 * GSL_DBL_EPSILON * (sqrt(k) + 1.0) * fabs(pre*sum); + + if(k >= maxk) + GSL_ERROR ("error", GSL_EMAXITER); + else + return GSL_SUCCESS; +} + + +/* Implementation of large negative mu asymptotic + * [Dunster, Proc. Roy. Soc. Edinburgh 119A, 311 (1991), p. 326] + */ + +inline +static double olver_U1(double beta2, double p) +{ + return (p-1.0)/(24.0*(1.0+beta2)) * (3.0 + beta2*(2.0 + 5.0*p*(1.0+p))); +} + +inline +static double olver_U2(double beta2, double p) +{ + double beta4 = beta2*beta2; + double p2 = p*p; + double poly1 = 4.0*beta4 + 84.0*beta2 - 63.0; + double poly2 = 16.0*beta4 + 90.0*beta2 - 81.0; + double poly3 = beta2*p2*(97.0*beta2 - 432.0 + 77.0*p*(beta2-6.0) - 385.0*beta2*p2*(1.0 + p)); + return (1.0-p)/(1152.0*(1.0+beta2)) * (poly1 + poly2 + poly3); +} + +static const double U3c1[] = { -1307.0, -1647.0, 3375.0, 3675.0 }; +static const double U3c2[] = { 29366.0, 35835.0, -252360.0, -272630.0, + 276810.0, 290499.0 }; +static const double U3c3[] = { -29748.0, -8840.0, 1725295.0, 1767025.0, + -7313470.0, -754778.0, 6309875.0, 6480045.0 }; +static const double U3c4[] = { 2696.0, -16740.0, -524250.0, -183975.0, + 14670540.0, 14172939.0, -48206730.0, -48461985.0, + 36756720.0, 37182145.0 }; +static const double U3c5[] = { 9136.0, 22480.0, 12760.0, + -252480.0, -4662165.0, -1705341.0, + 92370135.0, 86244015.0, -263678415.0, + -260275015.0, 185910725.0, 185910725.0 }; + +#if 0 +static double olver_U3(double beta2, double p) +{ + double beta4 = beta2*beta2; + double beta6 = beta4*beta2; + double opb2s = (1.0+beta2)*(1.0+beta2); + double den = 39813120.0 * opb2s*opb2s; + double poly1 = gsl_poly_eval(U3c1, 4, p); + double poly2 = gsl_poly_eval(U3c2, 6, p); + double poly3 = gsl_poly_eval(U3c3, 8, p); + double poly4 = gsl_poly_eval(U3c4, 10, p); + double poly5 = gsl_poly_eval(U3c5, 12, p); + + return (p-1.0)*( 1215.0*poly1 + 324.0*beta2*poly2 + + 54.0*beta4*poly3 + 12.0*beta6*poly4 + + beta4*beta4*poly5 + ) / den; +} +#endif /* 0 */ + + +/* Large negative mu asymptotic + * P^{-mu}_{-1/2 + I tau}, mu -> Inf + * |x| < 1 + * + * [Dunster, Proc. Roy. Soc. Edinburgh 119A, 311 (1991), p. 326] + */ +int +gsl_sf_conicalP_xlt1_large_neg_mu_e(double mu, double tau, double x, + gsl_sf_result * result, double * ln_multiplier) +{ + double beta = tau/mu; + double beta2 = beta*beta; + double S = beta * acos((1.0-beta2)/(1.0+beta2)); + double p = x/sqrt(beta2*(1.0-x*x) + 1.0); + gsl_sf_result lg_mup1; + int lg_stat = gsl_sf_lngamma_e(mu+1.0, &lg_mup1); + double ln_pre_1 = 0.5*mu*(S - log(1.0+beta2) + log((1.0-p)/(1.0+p))) - lg_mup1.val; + double ln_pre_2 = -0.25 * log(1.0 + beta2*(1.0-x)); + double ln_pre_3 = -tau * atan(p*beta); + double ln_pre = ln_pre_1 + ln_pre_2 + ln_pre_3; + double sum = 1.0 - olver_U1(beta2, p)/mu + olver_U2(beta2, p)/(mu*mu); + + if(sum == 0.0) { + result->val = 0.0; + result->err = 0.0; + *ln_multiplier = 0.0; + return GSL_SUCCESS; + } + else { + int stat_e = gsl_sf_exp_mult_e(ln_pre, sum, result); + if(stat_e != GSL_SUCCESS) { + result->val = sum; + result->err = 2.0 * GSL_DBL_EPSILON * fabs(sum); + *ln_multiplier = ln_pre; + } + else { + *ln_multiplier = 0.0; + } + return lg_stat; + } +} + + +/* Implementation of large tau asymptotic + * + * A_n^{-mu}, B_n^{-mu} [Olver, p.465, 469] + */ + +inline +static double olver_B0_xi(double mu, double xi) +{ + return (1.0 - 4.0*mu*mu)/(8.0*xi) * (1.0/tanh(xi) - 1.0/xi); +} + +static double olver_A1_xi(double mu, double xi, double x) +{ + double B = olver_B0_xi(mu, xi); + double psi; + if(fabs(x - 1.0) < GSL_ROOT4_DBL_EPSILON) { + double y = x - 1.0; + double s = -1.0/3.0 + y*(2.0/15.0 - y *(61.0/945.0 - 452.0/14175.0*y)); + psi = (4.0*mu*mu - 1.0)/16.0 * s; + } + else { + psi = (4.0*mu*mu - 1.0)/16.0 * (1.0/(x*x-1.0) - 1.0/(xi*xi)); + } + return 0.5*xi*xi*B*B + (mu+0.5)*B - psi + mu/6.0*(0.25 - mu*mu); +} + +inline +static double olver_B0_th(double mu, double theta) +{ + return -(1.0 - 4.0*mu*mu)/(8.0*theta) * (1.0/tan(theta) - 1.0/theta); +} + +static double olver_A1_th(double mu, double theta, double x) +{ + double B = olver_B0_th(mu, theta); + double psi; + if(fabs(x - 1.0) < GSL_ROOT4_DBL_EPSILON) { + double y = 1.0 - x; + double s = -1.0/3.0 + y*(2.0/15.0 - y *(61.0/945.0 - 452.0/14175.0*y)); + psi = (4.0*mu*mu - 1.0)/16.0 * s; + } + else { + psi = (4.0*mu*mu - 1.0)/16.0 * (1.0/(x*x-1.0) + 1.0/(theta*theta)); + } + return -0.5*theta*theta*B*B + (mu+0.5)*B - psi + mu/6.0*(0.25 - mu*mu); +} + + +/* Large tau uniform asymptotics + * P^{-mu}_{-1/2 + I tau} + * 1 < x + * tau -> Inf + * [Olver, p. 469] + */ +int +gsl_sf_conicalP_xgt1_neg_mu_largetau_e(const double mu, const double tau, + const double x, double acosh_x, + gsl_sf_result * result, double * ln_multiplier) +{ + double xi = acosh_x; + double ln_xi_pre; + double ln_pre; + double sumA, sumB, sum; + double arg; + gsl_sf_result J_mup1; + gsl_sf_result J_mu; + double J_mum1; + + if(xi < GSL_ROOT4_DBL_EPSILON) { + ln_xi_pre = -xi*xi/6.0; /* log(1.0 - xi*xi/6.0) */ + } + else { + gsl_sf_result lnshxi; + gsl_sf_lnsinh_e(xi, &lnshxi); + ln_xi_pre = log(xi) - lnshxi.val; /* log(xi/sinh(xi) */ + } + + ln_pre = 0.5*ln_xi_pre - mu*log(tau); + + arg = tau*xi; + + gsl_sf_bessel_Jnu_e(mu + 1.0, arg, &J_mup1); + gsl_sf_bessel_Jnu_e(mu, arg, &J_mu); + J_mum1 = -J_mup1.val + 2.0*mu/arg*J_mu.val; /* careful of mu < 1 */ + + sumA = 1.0 - olver_A1_xi(-mu, xi, x)/(tau*tau); + sumB = olver_B0_xi(-mu, xi); + sum = J_mu.val * sumA - xi/tau * J_mum1 * sumB; + + if(sum == 0.0) { + result->val = 0.0; + result->err = 0.0; + *ln_multiplier = 0.0; + return GSL_SUCCESS; + } + else { + int stat_e = gsl_sf_exp_mult_e(ln_pre, sum, result); + if(stat_e != GSL_SUCCESS) { + result->val = sum; + result->err = 2.0 * GSL_DBL_EPSILON * fabs(sum); + *ln_multiplier = ln_pre; + } + else { + *ln_multiplier = 0.0; + } + return GSL_SUCCESS; + } +} + + +/* Large tau uniform asymptotics + * P^{-mu}_{-1/2 + I tau} + * -1 < x < 1 + * tau -> Inf + * [Olver, p. 473] + */ +int +gsl_sf_conicalP_xlt1_neg_mu_largetau_e(const double mu, const double tau, + const double x, const double acos_x, + gsl_sf_result * result, double * ln_multiplier) +{ + double theta = acos_x; + double ln_th_pre; + double ln_pre; + double sumA, sumB, sum, sumerr; + double arg; + gsl_sf_result I_mup1, I_mu; + double I_mum1; + + if(theta < GSL_ROOT4_DBL_EPSILON) { + ln_th_pre = theta*theta/6.0; /* log(1.0 + theta*theta/6.0) */ + } + else { + ln_th_pre = log(theta/sin(theta)); + } + + ln_pre = 0.5 * ln_th_pre - mu * log(tau); + + arg = tau*theta; + gsl_sf_bessel_Inu_e(mu + 1.0, arg, &I_mup1); + gsl_sf_bessel_Inu_e(mu, arg, &I_mu); + I_mum1 = I_mup1.val + 2.0*mu/arg * I_mu.val; /* careful of mu < 1 */ + + sumA = 1.0 - olver_A1_th(-mu, theta, x)/(tau*tau); + sumB = olver_B0_th(-mu, theta); + sum = I_mu.val * sumA - theta/tau * I_mum1 * sumB; + sumerr = fabs(I_mu.err * sumA); + sumerr += fabs(I_mup1.err * theta/tau * sumB); + sumerr += fabs(I_mu.err * theta/tau * sumB * 2.0 * mu/arg); + + if(sum == 0.0) { + result->val = 0.0; + result->err = 0.0; + *ln_multiplier = 0.0; + return GSL_SUCCESS; + } + else { + int stat_e = gsl_sf_exp_mult_e(ln_pre, sum, result); + if(stat_e != GSL_SUCCESS) { + result->val = sum; + result->err = sumerr; + result->err += GSL_DBL_EPSILON * fabs(sum); + *ln_multiplier = ln_pre; + } + else { + *ln_multiplier = 0.0; + } + return GSL_SUCCESS; + } +} + + +/* Hypergeometric function which appears in the + * large x expansion below: + * + * 2F1(1/4 - mu/2 - I tau/2, 3/4 - mu/2 - I tau/2, 1 - I tau, y) + * + * Note that for the usage below y = 1/x^2; + */ +static +int +conicalP_hyperg_large_x(const double mu, const double tau, const double y, + double * reF, double * imF) +{ + const int kmax = 1000; + const double re_a = 0.25 - 0.5*mu; + const double re_b = 0.75 - 0.5*mu; + const double re_c = 1.0; + const double im_a = -0.5*tau; + const double im_b = -0.5*tau; + const double im_c = -tau; + + double re_sum = 1.0; + double im_sum = 0.0; + double re_term = 1.0; + double im_term = 0.0; + int k; + + for(k=1; k<=kmax; k++) { + double re_ak = re_a + k - 1.0; + double re_bk = re_b + k - 1.0; + double re_ck = re_c + k - 1.0; + double im_ak = im_a; + double im_bk = im_b; + double im_ck = im_c; + double den = re_ck*re_ck + im_ck*im_ck; + double re_multiplier = ((re_ak*re_bk - im_ak*im_bk)*re_ck + im_ck*(im_ak*re_bk + re_ak*im_bk)) / den; + double im_multiplier = ((im_ak*re_bk + re_ak*im_bk)*re_ck - im_ck*(re_ak*re_bk - im_ak*im_bk)) / den; + double re_tmp = re_multiplier*re_term - im_multiplier*im_term; + double im_tmp = im_multiplier*re_term + re_multiplier*im_term; + double asum = fabs(re_sum) + fabs(im_sum); + re_term = y/k * re_tmp; + im_term = y/k * im_tmp; + if(fabs(re_term/asum) < GSL_DBL_EPSILON && fabs(im_term/asum) < GSL_DBL_EPSILON) break; + re_sum += re_term; + im_sum += im_term; + } + + *reF = re_sum; + *imF = im_sum; + + if(k == kmax) + GSL_ERROR ("error", GSL_EMAXITER); + else + return GSL_SUCCESS; +} + + +/* P^{mu}_{-1/2 + I tau} + * x->Inf + */ +int +gsl_sf_conicalP_large_x_e(const double mu, const double tau, const double x, + gsl_sf_result * result, double * ln_multiplier) +{ + /* 2F1 term + */ + double y = ( x < 0.5*GSL_SQRT_DBL_MAX ? 1.0/(x*x) : 0.0 ); + double reF, imF; + int stat_F = conicalP_hyperg_large_x(mu, tau, y, &reF, &imF); + + /* f = Gamma(+i tau)/Gamma(1/2 - mu + i tau) + * FIXME: shift so it's better for tau-> 0 + */ + gsl_sf_result lgr_num, lgth_num; + gsl_sf_result lgr_den, lgth_den; + int stat_gn = gsl_sf_lngamma_complex_e(0.0,tau,&lgr_num,&lgth_num); + int stat_gd = gsl_sf_lngamma_complex_e(0.5-mu,tau,&lgr_den,&lgth_den); + + double angle = lgth_num.val - lgth_den.val + atan2(imF,reF); + + double lnx = log(x); + double lnxp1 = log(x+1.0); + double lnxm1 = log(x-1.0); + double lnpre_const = 0.5*M_LN2 - 0.5*M_LNPI; + double lnpre_comm = (mu-0.5)*lnx - 0.5*mu*(lnxp1 + lnxm1); + double lnpre_err = GSL_DBL_EPSILON * (0.5*M_LN2 + 0.5*M_LNPI) + + GSL_DBL_EPSILON * fabs((mu-0.5)*lnx) + + GSL_DBL_EPSILON * fabs(0.5*mu)*(fabs(lnxp1)+fabs(lnxm1)); + + /* result = pre*|F|*|f| * cos(angle - tau * (log(x)+M_LN2)) + */ + gsl_sf_result cos_result; + int stat_cos = gsl_sf_cos_e(angle + tau*(log(x) + M_LN2), &cos_result); + int status = GSL_ERROR_SELECT_4(stat_cos, stat_gd, stat_gn, stat_F); + if(cos_result.val == 0.0) { + result->val = 0.0; + result->err = 0.0; + return status; + } + else { + double lnFf_val = 0.5*log(reF*reF+imF*imF) + lgr_num.val - lgr_den.val; + double lnFf_err = lgr_num.err + lgr_den.err + GSL_DBL_EPSILON * fabs(lnFf_val); + double lnnoc_val = lnpre_const + lnpre_comm + lnFf_val; + double lnnoc_err = lnpre_err + lnFf_err + GSL_DBL_EPSILON * fabs(lnnoc_val); + int stat_e = gsl_sf_exp_mult_err_e(lnnoc_val, lnnoc_err, + cos_result.val, cos_result.err, + result); + if(stat_e == GSL_SUCCESS) { + *ln_multiplier = 0.0; + } + else { + result->val = cos_result.val; + result->err = cos_result.err; + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + *ln_multiplier = lnnoc_val; + } + return status; + } +} + + +/* P^{mu}_{-1/2 + I tau} first hypergeometric representation + * -1 < x < 1 + * This is more effective for |x| small, however it will work w/o + * reservation for any x < 0 because everything is positive + * definite in that case. + * + * [Kolbig, (3)] (note typo in args of gamma functions) + * [Bateman, (22)] (correct form) + */ +static +int +conicalP_xlt1_hyperg_A(double mu, double tau, double x, gsl_sf_result * result) +{ + double x2 = x*x; + double err_amp = 1.0 + 1.0/(GSL_DBL_EPSILON + fabs(1.0-fabs(x))); + double pre_val = M_SQRTPI / pow(0.5*sqrt(1-x2), mu); + double pre_err = err_amp * GSL_DBL_EPSILON * (fabs(mu)+1.0) * fabs(pre_val) ; + gsl_sf_result ln_g1, ln_g2, arg_g1, arg_g2; + gsl_sf_result F1, F2; + gsl_sf_result pre1, pre2; + double t1_val, t1_err; + double t2_val, t2_err; + + int stat_F1 = gsl_sf_hyperg_2F1_conj_e(0.25 - 0.5*mu, 0.5*tau, 0.5, x2, &F1); + int stat_F2 = gsl_sf_hyperg_2F1_conj_e(0.75 - 0.5*mu, 0.5*tau, 1.5, x2, &F2); + int status = GSL_ERROR_SELECT_2(stat_F1, stat_F2); + + gsl_sf_lngamma_complex_e(0.75 - 0.5*mu, -0.5*tau, &ln_g1, &arg_g1); + gsl_sf_lngamma_complex_e(0.25 - 0.5*mu, -0.5*tau, &ln_g2, &arg_g2); + + gsl_sf_exp_err_e(-2.0*ln_g1.val, 2.0*ln_g1.err, &pre1); + gsl_sf_exp_err_e(-2.0*ln_g2.val, 2.0*ln_g2.err, &pre2); + pre2.val *= -2.0*x; + pre2.err *= 2.0*fabs(x); + pre2.err += GSL_DBL_EPSILON * fabs(pre2.val); + + t1_val = pre1.val * F1.val; + t1_err = fabs(pre1.val) * F1.err + pre1.err * fabs(F1.val); + t2_val = pre2.val * F2.val; + t2_err = fabs(pre2.val) * F2.err + pre2.err * fabs(F2.val); + + result->val = pre_val * (t1_val + t2_val); + result->err = pre_val * (t1_err + t2_err); + result->err += pre_err * fabs(t1_val + t2_val); + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + + return status; +} + + +/* P^{mu}_{-1/2 + I tau} + * defining hypergeometric representation + * [Abramowitz+Stegun, 8.1.2] + * 1 < x < 3 + * effective for x near 1 + * + */ +#if 0 +static +int +conicalP_def_hyperg(double mu, double tau, double x, double * result) +{ + double F; + int stat_F = gsl_sf_hyperg_2F1_conj_renorm_e(0.5, tau, 1.0-mu, 0.5*(1.0-x), &F); + *result = pow((x+1.0)/(x-1.0), 0.5*mu) * F; + return stat_F; +} +#endif /* 0 */ + + +/* P^{mu}_{-1/2 + I tau} second hypergeometric representation + * [Zhurina+Karmazina, (3.1)] + * -1 < x < 3 + * effective for x near 1 + * + */ +#if 0 +static +int +conicalP_xnear1_hyperg_C(double mu, double tau, double x, double * result) +{ + double ln_pre, arg_pre; + double ln_g1, arg_g1; + double ln_g2, arg_g2; + double F; + + int stat_F = gsl_sf_hyperg_2F1_conj_renorm_e(0.5+mu, tau, 1.0+mu, 0.5*(1.0-x), &F); + + gsl_sf_lngamma_complex_e(0.5+mu, tau, &ln_g1, &arg_g1); + gsl_sf_lngamma_complex_e(0.5-mu, tau, &ln_g2, &arg_g2); + + ln_pre = mu*M_LN2 - 0.5*mu*log(fabs(x*x-1.0)) + ln_g1 - ln_g2; + arg_pre = arg_g1 - arg_g2; + + *result = exp(ln_pre) * F; + return stat_F; +} +#endif /* 0 */ + + +/* V0, V1 from Kolbig, m = 0 + */ +static +int +conicalP_0_V(const double t, const double f, const double tau, const double sgn, + double * V0, double * V1) +{ + double C[8]; + double T[8]; + double H[8]; + double V[12]; + int i; + T[0] = 1.0; + H[0] = 1.0; + V[0] = 1.0; + for(i=1; i<=7; i++) { + T[i] = T[i-1] * t; + H[i] = H[i-1] * (t*f); + } + for(i=1; i<=11; i++) { + V[i] = V[i-1] * tau; + } + + C[0] = 1.0; + C[1] = (H[1]-1.0)/(8.0*T[1]); + C[2] = (9.0*H[2] + 6.0*H[1] - 15.0 - sgn*8.0*T[2])/(128.0*T[2]); + C[3] = 5.0*(15.0*H[3] + 27.0*H[2] + 21.0*H[1] - 63.0 - sgn*T[2]*(16.0*H[1]+24.0))/(1024.0*T[3]); + C[4] = 7.0*(525.0*H[4] + 1500.0*H[3] + 2430.0*H[2] + 1980.0*H[1] - 6435.0 + + 192.0*T[4] - sgn*T[2]*(720.0*H[2]+1600.0*H[1]+2160.0) + ) / (32768.0*T[4]); + C[5] = 21.0*(2835.0*H[5] + 11025.0*H[4] + 24750.0*H[3] + 38610.0*H[2] + + 32175.0*H[1] - 109395.0 + T[4]*(1984.0*H[1]+4032.0) + - sgn*T[2]*(4800.0*H[3]+15120.0*H[2]+26400.0*H[1]+34320.0) + ) / (262144.0*T[5]); + C[6] = 11.0*(218295.0*H[6] + 1071630.0*H[5] + 3009825.0*H[4] + 6142500.0*H[3] + + 9398025.0*H[2] + 7936110.0*H[1] - 27776385.0 + + T[4]*(254016.0*H[2]+749952.0*H[1]+1100736.0) + - sgn*T[2]*(441000.0*H[4] + 1814400.0*H[3] + 4127760.0*H[2] + + 6552000.0*H[1] + 8353800.0 + 31232.0*T[4] + ) + ) / (4194304.0*T[6]); + + *V0 = C[0] + (-4.0*C[3]/T[1]+C[4])/V[4] + + (-192.0*C[5]/T[3]+144.0*C[6]/T[2])/V[8] + + sgn * (-C[2]/V[2] + + (-24.0*C[4]/T[2]+12.0*C[5]/T[1]-C[6])/V[6] + + (-1920.0*C[6]/T[4])/V[10] + ); + *V1 = C[1]/V[1] + (8.0*(C[3]/T[2]-C[4]/T[1])+C[5])/V[5] + + (384.0*C[5]/T[4] - 768.0*C[6]/T[3])/V[9] + + sgn * ((2.0*C[2]/T[1]-C[3])/V[3] + + (48.0*C[4]/T[3]-72.0*C[5]/T[2] + 18.0*C[6]/T[1])/V[7] + + (3840.0*C[6]/T[5])/V[11] + ); + + return GSL_SUCCESS; +} + + +/* V0, V1 from Kolbig, m = 1 + */ +static +int +conicalP_1_V(const double t, const double f, const double tau, const double sgn, + double * V0, double * V1) +{ + double Cm1; + double C[8]; + double T[8]; + double H[8]; + double V[12]; + int i; + T[0] = 1.0; + H[0] = 1.0; + V[0] = 1.0; + for(i=1; i<=7; i++) { + T[i] = T[i-1] * t; + H[i] = H[i-1] * (t*f); + } + for(i=1; i<=11; i++) { + V[i] = V[i-1] * tau; + } + + Cm1 = -1.0; + C[0] = 3.0*(1.0-H[1])/(8.0*T[1]); + C[1] = (-15.0*H[2]+6.0*H[1]+9.0+sgn*8.0*T[2])/(128.0*T[2]); + C[2] = 3.0*(-35.0*H[3] - 15.0*H[2] + 15.0*H[1] + 35.0 + sgn*T[2]*(32.0*H[1]+8.0))/(1024.0*T[3]); + C[3] = (-4725.0*H[4] - 6300.0*H[3] - 3150.0*H[2] + 3780.0*H[1] + 10395.0 + -1216.0*T[4] + sgn*T[2]*(6000.0*H[2]+5760.0*H[1]+1680.0)) / (32768.0*T[4]); + C[4] = 7.0*(-10395.0*H[5] - 23625.0*H[4] - 28350.0*H[3] - 14850.0*H[2] + +19305.0*H[1] + 57915.0 - T[4]*(6336.0*H[1]+6080.0) + + sgn*T[2]*(16800.0*H[3] + 30000.0*H[2] + 25920.0*H[1] + 7920.0) + ) / (262144.0*T[5]); + C[5] = (-2837835.0*H[6] - 9168390.0*H[5] - 16372125.0*H[4] - 18918900*H[3] + -10135125.0*H[2] + 13783770.0*H[1] + 43648605.0 + -T[4]*(3044160.0*H[2] + 5588352.0*H[1] + 4213440.0) + +sgn*T[2]*(5556600.0*H[4] + 14817600.0*H[3] + 20790000.0*H[2] + + 17297280.0*H[1] + 5405400.0 + 323072.0*T[4] + ) + ) / (4194304.0*T[6]); + C[6] = 0.0; + + *V0 = C[0] + (-4.0*C[3]/T[1]+C[4])/V[4] + + (-192.0*C[5]/T[3]+144.0*C[6]/T[2])/V[8] + + sgn * (-C[2]/V[2] + + (-24.0*C[4]/T[2]+12.0*C[5]/T[1]-C[6])/V[6] + ); + *V1 = C[1]/V[1] + (8.0*(C[3]/T[2]-C[4]/T[1])+C[5])/V[5] + + (384.0*C[5]/T[4] - 768.0*C[6]/T[3])/V[9] + + sgn * (Cm1*V[1] + (2.0*C[2]/T[1]-C[3])/V[3] + + (48.0*C[4]/T[3]-72.0*C[5]/T[2] + 18.0*C[6]/T[1])/V[7] + ); + + return GSL_SUCCESS; +} + + + +/*-*-*-*-*-*-*-*-*-*-*-* Functions with Error Codes *-*-*-*-*-*-*-*-*-*-*-*/ + +/* P^0_{-1/2 + I lambda} + */ +int +gsl_sf_conicalP_0_e(const double lambda, const double x, gsl_sf_result * result) +{ + /* CHECK_POINTER(result) */ + + if(x <= -1.0) { + DOMAIN_ERROR(result); + } + else if(x == 1.0) { + result->val = 1.0; + result->err = 0.0; + return GSL_SUCCESS; + } + else if(lambda == 0.0) { + gsl_sf_result K; + int stat_K; + if(x < 1.0) { + const double th = acos(x); + const double s = sin(0.5*th); + stat_K = gsl_sf_ellint_Kcomp_e(s, GSL_MODE_DEFAULT, &K); + result->val = 2.0/M_PI * K.val; + result->err = 2.0/M_PI * K.err; + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return stat_K; + } + else { + const double xi = acosh(x); + const double c = cosh(0.5*xi); + const double t = tanh(0.5*xi); + stat_K = gsl_sf_ellint_Kcomp_e(t, GSL_MODE_DEFAULT, &K); + result->val = 2.0/M_PI / c * K.val; + result->err = 2.0/M_PI / c * K.err; + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return stat_K; + } + } + else if( (x <= 0.0 && lambda < 1000.0) + || (x < 0.1 && lambda < 17.0) + || (x < 0.2 && lambda < 5.0 ) + ) { + return conicalP_xlt1_hyperg_A(0.0, lambda, x, result); + } + else if( (x <= 0.2 && lambda < 17.0) + || (x <= 1.5 && lambda < 20.0) + ) { + return gsl_sf_hyperg_2F1_conj_e(0.5, lambda, 1.0, (1.0-x)/2, result); + } + else if(1.5 < x && lambda < GSL_MAX(x,20.0)) { + gsl_sf_result P; + double lm; + int stat_P = gsl_sf_conicalP_large_x_e(0.0, lambda, x, + &P, &lm + ); + int stat_e = gsl_sf_exp_mult_err_e(lm, 2.0*GSL_DBL_EPSILON * fabs(lm), + P.val, P.err, + result); + return GSL_ERROR_SELECT_2(stat_e, stat_P); + } + else { + double V0, V1; + if(x < 1.0) { + double th = acos(x); + double sth = sqrt(1.0-x*x); /* sin(th) */ + gsl_sf_result I0, I1; + int stat_I0 = gsl_sf_bessel_I0_scaled_e(th * lambda, &I0); + int stat_I1 = gsl_sf_bessel_I1_scaled_e(th * lambda, &I1); + int stat_I = GSL_ERROR_SELECT_2(stat_I0, stat_I1); + int stat_V = conicalP_0_V(th, x/sth, lambda, -1.0, &V0, &V1); + double bessterm = V0 * I0.val + V1 * I1.val; + double besserr = fabs(V0) * I0.err + fabs(V1) * I1.err; + double arg1 = th*lambda; + double sqts = sqrt(th/sth); + int stat_e = gsl_sf_exp_mult_err_e(arg1, 4.0 * GSL_DBL_EPSILON * fabs(arg1), + sqts * bessterm, sqts * besserr, + result); + return GSL_ERROR_SELECT_3(stat_e, stat_V, stat_I); + } + else { + double sh = sqrt(x-1.0)*sqrt(x+1.0); /* sinh(xi) */ + double xi = log(x + sh); /* xi = acosh(x) */ + gsl_sf_result J0, J1; + int stat_J0 = gsl_sf_bessel_J0_e(xi * lambda, &J0); + int stat_J1 = gsl_sf_bessel_J1_e(xi * lambda, &J1); + int stat_J = GSL_ERROR_SELECT_2(stat_J0, stat_J1); + int stat_V = conicalP_0_V(xi, x/sh, lambda, 1.0, &V0, &V1); + double bessterm = V0 * J0.val + V1 * J1.val; + double besserr = fabs(V0) * J0.err + fabs(V1) * J1.err; + double pre_val = sqrt(xi/sh); + double pre_err = 2.0 * fabs(pre_val); + result->val = pre_val * bessterm; + result->err = pre_val * besserr; + result->err += pre_err * fabs(bessterm); + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_ERROR_SELECT_2(stat_V, stat_J); + } + } +} + + +/* P^1_{-1/2 + I lambda} + */ +int +gsl_sf_conicalP_1_e(const double lambda, const double x, gsl_sf_result * result) +{ + /* CHECK_POINTER(result) */ + + if(x <= -1.0) { + DOMAIN_ERROR(result); + } + else if(lambda == 0.0) { + gsl_sf_result K, E; + int stat_K, stat_E; + if(x == 1.0) { + result->val = 0.0; + result->err = 0.0; + return GSL_SUCCESS; + } + else if(x < 1.0) { + if(1.0-x < GSL_SQRT_DBL_EPSILON) { + double err_amp = GSL_MAX_DBL(1.0, 1.0/(GSL_DBL_EPSILON + fabs(1.0-x))); + result->val = 0.25/M_SQRT2 * sqrt(1.0-x) * (1.0 + 5.0/16.0 * (1.0-x)); + result->err = err_amp * 3.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else { + const double th = acos(x); + const double s = sin(0.5*th); + const double c2 = 1.0 - s*s; + const double sth = sin(th); + const double pre = 2.0/(M_PI*sth); + stat_K = gsl_sf_ellint_Kcomp_e(s, GSL_MODE_DEFAULT, &K); + stat_E = gsl_sf_ellint_Ecomp_e(s, GSL_MODE_DEFAULT, &E); + result->val = pre * (E.val - c2 * K.val); + result->err = pre * (E.err + fabs(c2) * K.err); + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_ERROR_SELECT_2(stat_K, stat_E); + } + } + else { + if(x-1.0 < GSL_SQRT_DBL_EPSILON) { + double err_amp = GSL_MAX_DBL(1.0, 1.0/(GSL_DBL_EPSILON + fabs(1.0-x))); + result->val = -0.25/M_SQRT2 * sqrt(x-1.0) * (1.0 - 5.0/16.0 * (x-1.0)); + result->err = err_amp * 3.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else { + const double xi = acosh(x); + const double c = cosh(0.5*xi); + const double t = tanh(0.5*xi); + const double sxi = sinh(xi); + const double pre = 2.0/(M_PI*sxi) * c; + stat_K = gsl_sf_ellint_Kcomp_e(t, GSL_MODE_DEFAULT, &K); + stat_E = gsl_sf_ellint_Ecomp_e(t, GSL_MODE_DEFAULT, &E); + result->val = pre * (E.val - K.val); + result->err = pre * (E.err + K.err); + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_ERROR_SELECT_2(stat_K, stat_E); + } + } + } + else if( (x <= 0.0 && lambda < 1000.0) + || (x < 0.1 && lambda < 17.0) + || (x < 0.2 && lambda < 5.0 ) + ) { + return conicalP_xlt1_hyperg_A(1.0, lambda, x, result); + } + else if( (x <= 0.2 && lambda < 17.0) + || (x < 1.5 && lambda < 20.0) + ) { + const double arg = fabs(x*x - 1.0); + const double sgn = GSL_SIGN(1.0 - x); + const double pre = 0.5*(lambda*lambda + 0.25) * sgn * sqrt(arg); + gsl_sf_result F; + int stat_F = gsl_sf_hyperg_2F1_conj_e(1.5, lambda, 2.0, (1.0-x)/2, &F); + result->val = pre * F.val; + result->err = fabs(pre) * F.err; + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return stat_F; + } + else if(1.5 <= x && lambda < GSL_MAX(x,20.0)) { + gsl_sf_result P; + double lm; + int stat_P = gsl_sf_conicalP_large_x_e(1.0, lambda, x, + &P, &lm + ); + int stat_e = gsl_sf_exp_mult_err_e(lm, 2.0 * GSL_DBL_EPSILON * fabs(lm), + P.val, P.err, + result); + return GSL_ERROR_SELECT_2(stat_e, stat_P); + } + else { + double V0, V1; + if(x < 1.0) { + const double sqrt_1mx = sqrt(1.0 - x); + const double sqrt_1px = sqrt(1.0 + x); + const double th = acos(x); + const double sth = sqrt_1mx * sqrt_1px; /* sin(th) */ + gsl_sf_result I0, I1; + int stat_I0 = gsl_sf_bessel_I0_scaled_e(th * lambda, &I0); + int stat_I1 = gsl_sf_bessel_I1_scaled_e(th * lambda, &I1); + int stat_I = GSL_ERROR_SELECT_2(stat_I0, stat_I1); + int stat_V = conicalP_1_V(th, x/sth, lambda, -1.0, &V0, &V1); + double bessterm = V0 * I0.val + V1 * I1.val; + double besserr = fabs(V0) * I0.err + fabs(V1) * I1.err + + 2.0 * GSL_DBL_EPSILON * fabs(V0 * I0.val) + + 2.0 * GSL_DBL_EPSILON * fabs(V1 * I1.val); + double arg1 = th * lambda; + double sqts = sqrt(th/sth); + int stat_e = gsl_sf_exp_mult_err_e(arg1, 2.0 * GSL_DBL_EPSILON * fabs(arg1), + sqts * bessterm, sqts * besserr, + result); + result->err *= 1.0/sqrt_1mx; + return GSL_ERROR_SELECT_3(stat_e, stat_V, stat_I); + } + else { + const double sqrt_xm1 = sqrt(x - 1.0); + const double sqrt_xp1 = sqrt(x + 1.0); + const double sh = sqrt_xm1 * sqrt_xp1; /* sinh(xi) */ + const double xi = log(x + sh); /* xi = acosh(x) */ + const double xi_lam = xi * lambda; + gsl_sf_result J0, J1; + const int stat_J0 = gsl_sf_bessel_J0_e(xi_lam, &J0); + const int stat_J1 = gsl_sf_bessel_J1_e(xi_lam, &J1); + const int stat_J = GSL_ERROR_SELECT_2(stat_J0, stat_J1); + const int stat_V = conicalP_1_V(xi, x/sh, lambda, 1.0, &V0, &V1); + const double bessterm = V0 * J0.val + V1 * J1.val; + const double besserr = fabs(V0) * J0.err + fabs(V1) * J1.err + + 512.0 * 2.0 * GSL_DBL_EPSILON * fabs(V0 * J0.val) + + 512.0 * 2.0 * GSL_DBL_EPSILON * fabs(V1 * J1.val) + + GSL_DBL_EPSILON * fabs(xi_lam * V0 * J1.val) + + GSL_DBL_EPSILON * fabs(xi_lam * V1 * J0.val); + const double pre = sqrt(xi/sh); + result->val = pre * bessterm; + result->err = pre * besserr * sqrt_xp1 / sqrt_xm1; + result->err += 4.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_ERROR_SELECT_2(stat_V, stat_J); + } + } +} + + +/* P^{1/2}_{-1/2 + I lambda} (x) + * [Abramowitz+Stegun 8.6.8, 8.6.12] + * checked OK [GJ] Fri May 8 12:24:36 MDT 1998 + */ +int gsl_sf_conicalP_half_e(const double lambda, const double x, + gsl_sf_result * result + ) +{ + /* CHECK_POINTER(result) */ + + if(x <= -1.0) { + DOMAIN_ERROR(result); + } + else if(x < 1.0) { + double err_amp = 1.0 + 1.0/(GSL_DBL_EPSILON + fabs(1.0-fabs(x))); + double ac = acos(x); + double den = sqrt(sqrt(1.0-x)*sqrt(1.0+x)); + result->val = Root_2OverPi_ / den * cosh(ac * lambda); + result->err = err_amp * 3.0 * GSL_DBL_EPSILON * fabs(result->val); + result->err *= fabs(ac * lambda) + 1.0; + return GSL_SUCCESS; + } + else if(x == 1.0) { + result->val = 0.0; + result->err = 0.0; + return GSL_SUCCESS; + } + else { + /* x > 1 */ + double err_amp = 1.0 + 1.0/(GSL_DBL_EPSILON + fabs(1.0-fabs(x))); + double sq_term = sqrt(x-1.0)*sqrt(x+1.0); + double ln_term = log(x + sq_term); + double den = sqrt(sq_term); + double carg_val = lambda * ln_term; + double carg_err = 2.0 * GSL_DBL_EPSILON * fabs(carg_val); + gsl_sf_result cos_result; + int stat_cos = gsl_sf_cos_err_e(carg_val, carg_err, &cos_result); + result->val = Root_2OverPi_ / den * cos_result.val; + result->err = err_amp * Root_2OverPi_ / den * cos_result.err; + result->err += 4.0 * GSL_DBL_EPSILON * fabs(result->val); + return stat_cos; + } +} + + +/* P^{-1/2}_{-1/2 + I lambda} (x) + * [Abramowitz+Stegun 8.6.9, 8.6.14] + * checked OK [GJ] Fri May 8 12:24:43 MDT 1998 + */ +int gsl_sf_conicalP_mhalf_e(const double lambda, const double x, gsl_sf_result * result) +{ + /* CHECK_POINTER(result) */ + + if(x <= -1.0) { + DOMAIN_ERROR(result); + } + else if(x < 1.0) { + double ac = acos(x); + double den = sqrt(sqrt(1.0-x)*sqrt(1.0+x)); + double arg = ac * lambda; + double err_amp = 1.0 + 1.0/(GSL_DBL_EPSILON + fabs(1.0-fabs(x))); + if(fabs(arg) < GSL_SQRT_DBL_EPSILON) { + result->val = Root_2OverPi_ / den * ac; + result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val); + result->err *= err_amp; + } + else { + result->val = Root_2OverPi_ / (den*lambda) * sinh(arg); + result->err = GSL_DBL_EPSILON * (fabs(arg)+1.0) * fabs(result->val); + result->err *= err_amp; + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + } + return GSL_SUCCESS; + } + else if(x == 1.0) { + result->val = 0.0; + result->err = 0.0; + return GSL_SUCCESS; + } + else { + /* x > 1 */ + double sq_term = sqrt(x-1.0)*sqrt(x+1.0); + double ln_term = log(x + sq_term); + double den = sqrt(sq_term); + double arg_val = lambda * ln_term; + double arg_err = 2.0 * GSL_DBL_EPSILON * fabs(arg_val); + if(arg_val < GSL_SQRT_DBL_EPSILON) { + result->val = Root_2OverPi_ / den * ln_term; + result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else { + gsl_sf_result sin_result; + int stat_sin = gsl_sf_sin_err_e(arg_val, arg_err, &sin_result); + result->val = Root_2OverPi_ / (den*lambda) * sin_result.val; + result->err = Root_2OverPi_ / fabs(den*lambda) * sin_result.err; + result->err += 3.0 * GSL_DBL_EPSILON * fabs(result->val); + return stat_sin; + } + } +} + + +int gsl_sf_conicalP_sph_reg_e(const int l, const double lambda, + const double x, + gsl_sf_result * result + ) +{ + /* CHECK_POINTER(result) */ + + if(x <= -1.0 || l < -1) { + DOMAIN_ERROR(result); + } + else if(l == -1) { + return gsl_sf_conicalP_half_e(lambda, x, result); + } + else if(l == 0) { + return gsl_sf_conicalP_mhalf_e(lambda, x, result); + } + else if(x == 1.0) { + result->val = 0.0; + result->err = 0.0; + return GSL_SUCCESS; + } + else if(x < 0.0) { + double c = 1.0/sqrt(1.0-x*x); + gsl_sf_result r_Pellm1; + gsl_sf_result r_Pell; + int stat_0 = gsl_sf_conicalP_half_e(lambda, x, &r_Pellm1); /* P^( 1/2) */ + int stat_1 = gsl_sf_conicalP_mhalf_e(lambda, x, &r_Pell); /* P^(-1/2) */ + int stat_P = GSL_ERROR_SELECT_2(stat_0, stat_1); + double Pellm1 = r_Pellm1.val; + double Pell = r_Pell.val; + double Pellp1; + int ell; + + for(ell=0; ellval = Pell; + result->err = (0.5*l + 1.0) * GSL_DBL_EPSILON * fabs(Pell); + result->err += GSL_DBL_EPSILON * l * fabs(result->val); + return stat_P; + } + else if(x < 1.0) { + const double xi = x/(sqrt(1.0-x)*sqrt(1.0+x)); + gsl_sf_result rat; + gsl_sf_result Phf; + int stat_CF1 = conicalP_negmu_xlt1_CF1(0.5, l, lambda, x, &rat); + int stat_Phf = gsl_sf_conicalP_half_e(lambda, x, &Phf); + double Pellp1 = rat.val * GSL_SQRT_DBL_MIN; + double Pell = GSL_SQRT_DBL_MIN; + double Pellm1; + int ell; + + for(ell=l; ell>=0; ell--) { + double d = (ell+1.0)*(ell+1.0) + lambda*lambda; + Pellm1 = (2.0*ell+1.0)*xi * Pell + d * Pellp1; + Pellp1 = Pell; + Pell = Pellm1; + } + + result->val = GSL_SQRT_DBL_MIN * Phf.val / Pell; + result->err = GSL_SQRT_DBL_MIN * Phf.err / fabs(Pell); + result->err += fabs(rat.err/rat.val) * (l + 1.0) * fabs(result->val); + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + + return GSL_ERROR_SELECT_2(stat_Phf, stat_CF1); + } + else if(x == 1.0) { + result->val = 0.0; + result->err = 0.0; + return GSL_SUCCESS; + } + else { + /* x > 1.0 */ + + const double xi = x/sqrt((x-1.0)*(x+1.0)); + gsl_sf_result rat; + int stat_CF1 = conicalP_negmu_xgt1_CF1(0.5, l, lambda, x, &rat); + int stat_P; + double Pellp1 = rat.val * GSL_SQRT_DBL_MIN; + double Pell = GSL_SQRT_DBL_MIN; + double Pellm1; + int ell; + + for(ell=l; ell>=0; ell--) { + double d = (ell+1.0)*(ell+1.0) + lambda*lambda; + Pellm1 = (2.0*ell+1.0)*xi * Pell - d * Pellp1; + Pellp1 = Pell; + Pell = Pellm1; + } + + if(fabs(Pell) > fabs(Pellp1)){ + gsl_sf_result Phf; + stat_P = gsl_sf_conicalP_half_e(lambda, x, &Phf); + result->val = GSL_SQRT_DBL_MIN * Phf.val / Pell; + result->err = 2.0 * GSL_SQRT_DBL_MIN * Phf.err / fabs(Pell); + result->err += 2.0 * fabs(rat.err/rat.val) * (l + 1.0) * fabs(result->val); + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + } + else { + gsl_sf_result Pmhf; + stat_P = gsl_sf_conicalP_mhalf_e(lambda, x, &Pmhf); + result->val = GSL_SQRT_DBL_MIN * Pmhf.val / Pellp1; + result->err = 2.0 * GSL_SQRT_DBL_MIN * Pmhf.err / fabs(Pellp1); + result->err += 2.0 * fabs(rat.err/rat.val) * (l + 1.0) * fabs(result->val); + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + } + + return GSL_ERROR_SELECT_2(stat_P, stat_CF1); + } +} + + +int gsl_sf_conicalP_cyl_reg_e(const int m, const double lambda, + const double x, + gsl_sf_result * result + ) +{ + /* CHECK_POINTER(result) */ + + if(x <= -1.0 || m < -1) { + DOMAIN_ERROR(result); + } + else if(m == -1) { + return gsl_sf_conicalP_1_e(lambda, x, result); + } + else if(m == 0) { + return gsl_sf_conicalP_0_e(lambda, x, result); + } + else if(x == 1.0) { + result->val = 0.0; + result->err = 0.0; + return GSL_SUCCESS; + } + else if(x < 0.0) { + double c = 1.0/sqrt(1.0-x*x); + gsl_sf_result r_Pkm1; + gsl_sf_result r_Pk; + int stat_0 = gsl_sf_conicalP_1_e(lambda, x, &r_Pkm1); /* P^1 */ + int stat_1 = gsl_sf_conicalP_0_e(lambda, x, &r_Pk); /* P^0 */ + int stat_P = GSL_ERROR_SELECT_2(stat_0, stat_1); + double Pkm1 = r_Pkm1.val; + double Pk = r_Pk.val; + double Pkp1; + int k; + + for(k=0; kval = Pk; + result->err = (m + 2.0) * GSL_DBL_EPSILON * fabs(Pk); + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + + return stat_P; + } + else if(x < 1.0) { + const double xi = x/(sqrt(1.0-x)*sqrt(1.0+x)); + gsl_sf_result rat; + gsl_sf_result P0; + int stat_CF1 = conicalP_negmu_xlt1_CF1(0.0, m, lambda, x, &rat); + int stat_P0 = gsl_sf_conicalP_0_e(lambda, x, &P0); + double Pkp1 = rat.val * GSL_SQRT_DBL_MIN; + double Pk = GSL_SQRT_DBL_MIN; + double Pkm1; + int k; + + for(k=m; k>0; k--) { + double d = (k+0.5)*(k+0.5) + lambda*lambda; + Pkm1 = 2.0*k*xi * Pk + d * Pkp1; + Pkp1 = Pk; + Pk = Pkm1; + } + + result->val = GSL_SQRT_DBL_MIN * P0.val / Pk; + result->err = 2.0 * GSL_SQRT_DBL_MIN * P0.err / fabs(Pk); + result->err += 2.0 * fabs(rat.err/rat.val) * (m + 1.0) * fabs(result->val); + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + + return GSL_ERROR_SELECT_2(stat_P0, stat_CF1); + } + else if(x == 1.0) { + result->val = 0.0; + result->err = 0.0; + return GSL_SUCCESS; + } + else { + /* x > 1.0 */ + + const double xi = x/sqrt((x-1.0)*(x+1.0)); + gsl_sf_result rat; + int stat_CF1 = conicalP_negmu_xgt1_CF1(0.0, m, lambda, x, &rat); + int stat_P; + double Pkp1 = rat.val * GSL_SQRT_DBL_MIN; + double Pk = GSL_SQRT_DBL_MIN; + double Pkm1; + int k; + + for(k=m; k>-1; k--) { + double d = (k+0.5)*(k+0.5) + lambda*lambda; + Pkm1 = 2.0*k*xi * Pk - d * Pkp1; + Pkp1 = Pk; + Pk = Pkm1; + } + + if(fabs(Pk) > fabs(Pkp1)){ + gsl_sf_result P1; + stat_P = gsl_sf_conicalP_1_e(lambda, x, &P1); + result->val = GSL_SQRT_DBL_MIN * P1.val / Pk; + result->err = 2.0 * GSL_SQRT_DBL_MIN * P1.err / fabs(Pk); + result->err += 2.0 * fabs(rat.err/rat.val) * (m+2.0) * fabs(result->val); + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + } + else { + gsl_sf_result P0; + stat_P = gsl_sf_conicalP_0_e(lambda, x, &P0); + result->val = GSL_SQRT_DBL_MIN * P0.val / Pkp1; + result->err = 2.0 * GSL_SQRT_DBL_MIN * P0.err / fabs(Pkp1); + result->err += 2.0 * fabs(rat.err/rat.val) * (m+2.0) * fabs(result->val); + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + } + + return GSL_ERROR_SELECT_2(stat_P, stat_CF1); + } +} + + +/*-*-*-*-*-*-*-*-*-* Functions w/ Natural Prototypes *-*-*-*-*-*-*-*-*-*-*/ + +#include "eval.h" + +double gsl_sf_conicalP_0(const double lambda, const double x) +{ + EVAL_RESULT(gsl_sf_conicalP_0_e(lambda, x, &result)); +} + +double gsl_sf_conicalP_1(const double lambda, const double x) +{ + EVAL_RESULT(gsl_sf_conicalP_1_e(lambda, x, &result)); +} + +double gsl_sf_conicalP_half(const double lambda, const double x) +{ + EVAL_RESULT(gsl_sf_conicalP_half_e(lambda, x, &result)); +} + +double gsl_sf_conicalP_mhalf(const double lambda, const double x) +{ + EVAL_RESULT(gsl_sf_conicalP_mhalf_e(lambda, x, &result)); +} + +double gsl_sf_conicalP_sph_reg(const int l, const double lambda, const double x) +{ + EVAL_RESULT(gsl_sf_conicalP_sph_reg_e(l, lambda, x, &result)); +} + +double gsl_sf_conicalP_cyl_reg(const int m, const double lambda, const double x) +{ + EVAL_RESULT(gsl_sf_conicalP_cyl_reg_e(m, lambda, x, &result)); +} diff --git a/gsl-2.5/specfunc/legendre_con.lo b/gsl-2.5/specfunc/legendre_con.lo new file mode 100644 index 00000000..c9a01797 --- /dev/null +++ b/gsl-2.5/specfunc/legendre_con.lo @@ -0,0 +1,12 @@ +# legendre_con.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/legendre_con.o' + +# Name of the non-PIC object +non_pic_object='legendre_con.o' + diff --git a/gsl-2.5/specfunc/legendre_poly.c b/gsl-2.5/specfunc/legendre_poly.c new file mode 100644 index 00000000..688089ba --- /dev/null +++ b/gsl-2.5/specfunc/legendre_poly.c @@ -0,0 +1,777 @@ +/* specfunc/legendre_poly.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "error.h" + + + +/* Calculate P_m^m(x) from the analytic result: + * P_m^m(x) = (-1)^m (2m-1)!! (1-x^2)^(m/2) , m > 0 + * = 1 , m = 0 + */ +static double legendre_Pmm(int m, double x) +{ + if(m == 0) + { + return 1.0; + } + else + { + double p_mm = 1.0; + double root_factor = sqrt(1.0-x)*sqrt(1.0+x); + double fact_coeff = 1.0; + int i; + for(i=1; i<=m; i++) + { + p_mm *= -fact_coeff * root_factor; + fact_coeff += 2.0; + } + return p_mm; + } +} + + + +/*-*-*-*-*-*-*-*-*-*-*-* Functions with Error Codes *-*-*-*-*-*-*-*-*-*-*-*/ + +int +gsl_sf_legendre_P1_e(double x, gsl_sf_result * result) +{ + /* CHECK_POINTER(result) */ + + { + result->val = x; + result->err = 0.0; + return GSL_SUCCESS; + } +} + +int +gsl_sf_legendre_P2_e(double x, gsl_sf_result * result) +{ + /* CHECK_POINTER(result) */ + + { + result->val = 0.5*(3.0*x*x - 1.0); + result->err = GSL_DBL_EPSILON * (fabs(3.0*x*x) + 1.0); + return GSL_SUCCESS; + } +} + +int +gsl_sf_legendre_P3_e(double x, gsl_sf_result * result) +{ + /* CHECK_POINTER(result) */ + + { + result->val = 0.5*x*(5.0*x*x - 3.0); + result->err = GSL_DBL_EPSILON * (fabs(result->val) + 0.5 * fabs(x) * (fabs(5.0*x*x) + 3.0)); + return GSL_SUCCESS; + } +} + + +int +gsl_sf_legendre_Pl_e(const int l, const double x, gsl_sf_result * result) +{ + /* CHECK_POINTER(result) */ + + if(l < 0 || x < -1.0 || x > 1.0) { + DOMAIN_ERROR(result); + } + else if(l == 0) { + result->val = 1.0; + result->err = 0.0; + return GSL_SUCCESS; + } + else if(l == 1) { + result->val = x; + result->err = 0.0; + return GSL_SUCCESS; + } + else if(l == 2) { + result->val = 0.5 * (3.0*x*x - 1.0); + result->err = GSL_DBL_EPSILON * (fabs(3.0*x*x) + 1.0); + /*result->err = 3.0 * GSL_DBL_EPSILON * fabs(result->val); + removed this old bogus estimate [GJ] + */ + return GSL_SUCCESS; + } + else if(x == 1.0) { + result->val = 1.0; + result->err = 0.0; + return GSL_SUCCESS; + } + else if(x == -1.0) { + result->val = ( GSL_IS_ODD(l) ? -1.0 : 1.0 ); + result->err = 0.0; + return GSL_SUCCESS; + } + else if(l < 100000) { + /* upward recurrence: l P_l = (2l-1) z P_{l-1} - (l-1) P_{l-2} */ + + double p_ellm2 = 1.0; /* P_0(x) */ + double p_ellm1 = x; /* P_1(x) */ + double p_ell = p_ellm1; + + double e_ellm2 = GSL_DBL_EPSILON; + double e_ellm1 = fabs(x)*GSL_DBL_EPSILON; + double e_ell = e_ellm1; + + int ell; + + for(ell=2; ell <= l; ell++){ + p_ell = (x*(2*ell-1)*p_ellm1 - (ell-1)*p_ellm2) / ell; + p_ellm2 = p_ellm1; + p_ellm1 = p_ell; + + e_ell = 0.5*(fabs(x)*(2*ell-1.0) * e_ellm1 + (ell-1.0)*e_ellm2)/ell; + e_ellm2 = e_ellm1; + e_ellm1 = e_ell; + } + + result->val = p_ell; + result->err = e_ell + l*fabs(p_ell)*GSL_DBL_EPSILON; + return GSL_SUCCESS; + } + else { + /* Asymptotic expansion. + * [Olver, p. 473] + */ + double u = l + 0.5; + double th = acos(x); + gsl_sf_result J0; + gsl_sf_result Jm1; + int stat_J0 = gsl_sf_bessel_J0_e(u*th, &J0); + int stat_Jm1 = gsl_sf_bessel_Jn_e(-1, u*th, &Jm1); + double pre; + double B00; + double c1; + + /* B00 = 1/8 (1 - th cot(th) / th^2 + * pre = sqrt(th/sin(th)) + */ + if(th < GSL_ROOT4_DBL_EPSILON) { + B00 = (1.0 + th*th/15.0)/24.0; + pre = 1.0 + th*th/12.0; + } + else { + double sin_th = sqrt(1.0 - x*x); + double cot_th = x / sin_th; + B00 = 1.0/8.0 * (1.0 - th * cot_th) / (th*th); + pre = sqrt(th/sin_th); + } + + c1 = th/u * B00; + + result->val = pre * (J0.val + c1 * Jm1.val); + result->err = pre * (J0.err + fabs(c1) * Jm1.err); + result->err += GSL_SQRT_DBL_EPSILON * fabs(result->val); + + return GSL_ERROR_SELECT_2(stat_J0, stat_Jm1); + } +} + + +int +gsl_sf_legendre_Pl_array(const int lmax, const double x, double * result_array) +{ + /* CHECK_POINTER(result_array) */ + + if(lmax < 0 || x < -1.0 || x > 1.0) { + GSL_ERROR ("domain error", GSL_EDOM); + } + else if(lmax == 0) { + result_array[0] = 1.0; + return GSL_SUCCESS; + } + else if(lmax == 1) { + result_array[0] = 1.0; + result_array[1] = x; + return GSL_SUCCESS; + } + else { + /* upward recurrence: l P_l = (2l-1) z P_{l-1} - (l-1) P_{l-2} */ + + double p_ellm2 = 1.0; /* P_0(x) */ + double p_ellm1 = x; /* P_1(x) */ + double p_ell = p_ellm1; + int ell; + + result_array[0] = 1.0; + result_array[1] = x; + + for(ell=2; ell <= lmax; ell++){ + p_ell = (x*(2*ell-1)*p_ellm1 - (ell-1)*p_ellm2) / ell; + p_ellm2 = p_ellm1; + p_ellm1 = p_ell; + result_array[ell] = p_ell; + } + + return GSL_SUCCESS; + } +} + + +int +gsl_sf_legendre_Pl_deriv_array(const int lmax, const double x, double * result_array, double * result_deriv_array) +{ + int stat_array = gsl_sf_legendre_Pl_array(lmax, x, result_array); + + if(lmax >= 0) result_deriv_array[0] = 0.0; + if(lmax >= 1) result_deriv_array[1] = 1.0; + + if(stat_array == GSL_SUCCESS) + { + int ell; + + if(fabs(x - 1.0)*(lmax+1.0)*(lmax+1.0) < GSL_SQRT_DBL_EPSILON) + { + /* x is near 1 */ + for(ell = 2; ell <= lmax; ell++) + { + const double pre = 0.5 * ell * (ell+1.0); + result_deriv_array[ell] = pre * (1.0 - 0.25 * (1.0-x) * (ell+2.0)*(ell-1.0)); + } + } + else if(fabs(x + 1.0)*(lmax+1.0)*(lmax+1.0) < GSL_SQRT_DBL_EPSILON) + { + /* x is near -1 */ + for(ell = 2; ell <= lmax; ell++) + { + const double sgn = ( GSL_IS_ODD(ell) ? 1.0 : -1.0 ); /* derivative is odd in x for even ell */ + const double pre = sgn * 0.5 * ell * (ell+1.0); + result_deriv_array[ell] = pre * (1.0 - 0.25 * (1.0+x) * (ell+2.0)*(ell-1.0)); + } + } + else + { + const double diff_a = 1.0 + x; + const double diff_b = 1.0 - x; + for(ell = 2; ell <= lmax; ell++) + { + result_deriv_array[ell] = - ell * (x * result_array[ell] - result_array[ell-1]) / (diff_a * diff_b); + } + } + + return GSL_SUCCESS; + } + else + { + return stat_array; + } +} + +int +gsl_sf_legendre_Plm_e(const int l, const int m, const double x, gsl_sf_result * result) +{ + /* If l is large and m is large, then we have to worry + * about overflow. Calculate an approximate exponent which + * measures the normalization of this thing. + */ + const double dif = l-m; + const double sum = l+m; + const double t_d = ( dif == 0.0 ? 0.0 : 0.5 * dif * (log(dif)-1.0) ); + const double t_s = ( dif == 0.0 ? 0.0 : 0.5 * sum * (log(sum)-1.0) ); + const double exp_check = 0.5 * log(2.0*l+1.0) + t_d - t_s; + + /* CHECK_POINTER(result) */ + + if(m < 0 || l < m || x < -1.0 || x > 1.0) { + DOMAIN_ERROR(result); + } + else if(exp_check < GSL_LOG_DBL_MIN + 10.0){ + /* Bail out. */ + OVERFLOW_ERROR(result); + } + else { + /* Account for the error due to the + * representation of 1-x. + */ + const double err_amp = 1.0 / (GSL_DBL_EPSILON + fabs(1.0-fabs(x))); + + /* P_m^m(x) and P_{m+1}^m(x) */ + double p_mm = legendre_Pmm(m, x); + double p_mmp1 = x * (2*m + 1) * p_mm; + + if(l == m){ + result->val = p_mm; + result->err = err_amp * 2.0 * GSL_DBL_EPSILON * fabs(p_mm); + return GSL_SUCCESS; + } + else if(l == m + 1) { + result->val = p_mmp1; + result->err = err_amp * 2.0 * GSL_DBL_EPSILON * fabs(p_mmp1); + return GSL_SUCCESS; + } + else{ + /* upward recurrence: (l-m) P(l,m) = (2l-1) z P(l-1,m) - (l+m-1) P(l-2,m) + * start at P(m,m), P(m+1,m) + */ + + double p_ellm2 = p_mm; + double p_ellm1 = p_mmp1; + double p_ell = 0.0; + int ell; + + for(ell=m+2; ell <= l; ell++){ + p_ell = (x*(2*ell-1)*p_ellm1 - (ell+m-1)*p_ellm2) / (ell-m); + p_ellm2 = p_ellm1; + p_ellm1 = p_ell; + } + + result->val = p_ell; + result->err = err_amp * (0.5*(l-m) + 1.0) * GSL_DBL_EPSILON * fabs(p_ell); + + return GSL_SUCCESS; + } + } +} + +int +gsl_sf_legendre_sphPlm_e(const int l, int m, const double x, gsl_sf_result * result) +{ + /* CHECK_POINTER(result) */ + + if(m < 0 || l < m || x < -1.0 || x > 1.0) { + DOMAIN_ERROR(result); + } + else if(m == 0) { + gsl_sf_result P; + int stat_P = gsl_sf_legendre_Pl_e(l, x, &P); + double pre = sqrt((2.0*l + 1.0)/(4.0*M_PI)); + result->val = pre * P.val; + result->err = pre * P.err; + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return stat_P; + } + else if(x == 1.0 || x == -1.0) { + /* m > 0 here */ + result->val = 0.0; + result->err = 0.0; + return GSL_SUCCESS; + } + else { + /* m > 0 and |x| < 1 here */ + + /* Starting value for recursion. + * Y_m^m(x) = sqrt( (2m+1)/(4pi m) gamma(m+1/2)/gamma(m) ) (-1)^m (1-x^2)^(m/2) / pi^(1/4) + */ + gsl_sf_result lncirc; + gsl_sf_result lnpoch; + double lnpre_val; + double lnpre_err; + gsl_sf_result ex_pre; + double sr; + const double sgn = ( GSL_IS_ODD(m) ? -1.0 : 1.0); + const double y_mmp1_factor = x * sqrt(2.0*m + 3.0); + double y_mm, y_mm_err; + double y_mmp1, y_mmp1_err; + gsl_sf_log_1plusx_e(-x*x, &lncirc); + gsl_sf_lnpoch_e(m, 0.5, &lnpoch); /* Gamma(m+1/2)/Gamma(m) */ + lnpre_val = -0.25*M_LNPI + 0.5 * (lnpoch.val + m*lncirc.val); + lnpre_err = 0.25*M_LNPI*GSL_DBL_EPSILON + 0.5 * (lnpoch.err + fabs(m)*lncirc.err); + /* Compute exp(ln_pre) with error term, avoiding call to gsl_sf_exp_err BJG */ + ex_pre.val = exp(lnpre_val); + ex_pre.err = 2.0*(sinh(lnpre_err) + GSL_DBL_EPSILON)*ex_pre.val; + sr = sqrt((2.0+1.0/m)/(4.0*M_PI)); + y_mm = sgn * sr * ex_pre.val; + y_mm_err = 2.0 * GSL_DBL_EPSILON * fabs(y_mm) + sr * ex_pre.err; + y_mm_err *= 1.0 + 1.0/(GSL_DBL_EPSILON + fabs(1.0-x)); + y_mmp1 = y_mmp1_factor * y_mm; + y_mmp1_err=fabs(y_mmp1_factor) * y_mm_err; + + if(l == m){ + result->val = y_mm; + result->err = y_mm_err; + result->err += 2.0 * GSL_DBL_EPSILON * fabs(y_mm); + return GSL_SUCCESS; + } + else if(l == m + 1) { + result->val = y_mmp1; + result->err = y_mmp1_err; + result->err += 2.0 * GSL_DBL_EPSILON * fabs(y_mmp1); + return GSL_SUCCESS; + } + else{ + double y_ell = 0.0; + double y_ell_err = 0.0; + int ell; + + /* Compute Y_l^m, l > m+1, upward recursion on l. */ + for(ell=m+2; ell <= l; ell++){ + const double rat1 = (double)(ell-m)/(double)(ell+m); + const double rat2 = (ell-m-1.0)/(ell+m-1.0); + const double factor1 = sqrt(rat1*(2.0*ell+1.0)*(2.0*ell-1.0)); + const double factor2 = sqrt(rat1*rat2*(2.0*ell+1.0)/(2.0*ell-3.0)); + y_ell = (x*y_mmp1*factor1 - (ell+m-1.0)*y_mm*factor2) / (ell-m); + y_mm = y_mmp1; + y_mmp1 = y_ell; + + y_ell_err = 0.5*(fabs(x*factor1)*y_mmp1_err + fabs((ell+m-1.0)*factor2)*y_mm_err) / fabs(ell-m); + y_mm_err = y_mmp1_err; + y_mmp1_err = y_ell_err; + } + + result->val = y_ell; + result->err = y_ell_err + (0.5*(l-m) + 1.0) * GSL_DBL_EPSILON * fabs(y_ell); + + return GSL_SUCCESS; + } + } +} + +#ifndef GSL_DISABLE_DEPRECATED + +int +gsl_sf_legendre_Plm_array(const int lmax, const int m, const double x, double * result_array) +{ + /* If l is large and m is large, then we have to worry + * about overflow. Calculate an approximate exponent which + * measures the normalization of this thing. + */ + const double dif = lmax-m; + const double sum = lmax+m; + const double t_d = ( dif == 0.0 ? 0.0 : 0.5 * dif * (log(dif)-1.0) ); + const double t_s = ( dif == 0.0 ? 0.0 : 0.5 * sum * (log(sum)-1.0) ); + const double exp_check = 0.5 * log(2.0*lmax+1.0) + t_d - t_s; + + /* CHECK_POINTER(result_array) */ + + if(m < 0 || lmax < m || x < -1.0 || x > 1.0) { + GSL_ERROR ("domain error", GSL_EDOM); + } + else if(m > 0 && (x == 1.0 || x == -1.0)) { + int ell; + for(ell=m; ell<=lmax; ell++) result_array[ell-m] = 0.0; + return GSL_SUCCESS; + } + else if(exp_check < GSL_LOG_DBL_MIN + 10.0){ + /* Bail out. */ + GSL_ERROR ("overflow", GSL_EOVRFLW); + } + else { + double p_mm = legendre_Pmm(m, x); + double p_mmp1 = x * (2.0*m + 1.0) * p_mm; + + if(lmax == m){ + result_array[0] = p_mm; + return GSL_SUCCESS; + } + else if(lmax == m + 1) { + result_array[0] = p_mm; + result_array[1] = p_mmp1; + return GSL_SUCCESS; + } + else { + double p_ellm2 = p_mm; + double p_ellm1 = p_mmp1; + double p_ell = 0.0; + int ell; + + result_array[0] = p_mm; + result_array[1] = p_mmp1; + + for(ell=m+2; ell <= lmax; ell++){ + p_ell = (x*(2.0*ell-1.0)*p_ellm1 - (ell+m-1)*p_ellm2) / (ell-m); + p_ellm2 = p_ellm1; + p_ellm1 = p_ell; + result_array[ell-m] = p_ell; + } + + return GSL_SUCCESS; + } + } +} + +int +gsl_sf_legendre_Plm_deriv_array( + const int lmax, const int m, const double x, + double * result_array, + double * result_deriv_array) +{ + if(m < 0 || m > lmax) + { + GSL_ERROR("m < 0 or m > lmax", GSL_EDOM); + } + else if(m == 0) + { + /* It is better to do m=0 this way, so we can more easily + * trap the divergent case which can occur when m == 1. + */ + return gsl_sf_legendre_Pl_deriv_array(lmax, x, result_array, result_deriv_array); + } + else + { + int stat_array = gsl_sf_legendre_Plm_array(lmax, m, x, result_array); + + if(stat_array == GSL_SUCCESS) + { + int ell; + + if(m == 1 && (1.0 - fabs(x) < GSL_DBL_EPSILON)) + { + /* This divergence is real and comes from the cusp-like + * behaviour for m = 1. For example, P[1,1] = - Sqrt[1-x^2]. + */ + GSL_ERROR("divergence near |x| = 1.0 since m = 1", GSL_EOVRFLW); + } + else if(m == 2 && (1.0 - fabs(x) < GSL_DBL_EPSILON)) + { + /* m = 2 gives a finite nonzero result for |x| near 1 */ + if(fabs(x - 1.0) < GSL_DBL_EPSILON) + { + for(ell = m; ell <= lmax; ell++) result_deriv_array[ell-m] = -0.25 * x * (ell - 1.0)*ell*(ell+1.0)*(ell+2.0); + } + else if(fabs(x + 1.0) < GSL_DBL_EPSILON) + { + for(ell = m; ell <= lmax; ell++) + { + const double sgn = ( GSL_IS_ODD(ell) ? 1.0 : -1.0 ); + result_deriv_array[ell-m] = -0.25 * sgn * x * (ell - 1.0)*ell*(ell+1.0)*(ell+2.0); + } + } + return GSL_SUCCESS; + } + else + { + /* m > 2 is easier to deal with since the endpoints always vanish */ + if(1.0 - fabs(x) < GSL_DBL_EPSILON) + { + for(ell = m; ell <= lmax; ell++) result_deriv_array[ell-m] = 0.0; + return GSL_SUCCESS; + } + else + { + const double diff_a = 1.0 + x; + const double diff_b = 1.0 - x; + result_deriv_array[0] = - m * x / (diff_a * diff_b) * result_array[0]; + if(lmax-m >= 1) result_deriv_array[1] = (2.0 * m + 1.0) * (x * result_deriv_array[0] + result_array[0]); + for(ell = m+2; ell <= lmax; ell++) + { + result_deriv_array[ell-m] = - (ell * x * result_array[ell-m] - (ell+m) * result_array[ell-1-m]) / (diff_a * diff_b); + } + return GSL_SUCCESS; + } + } + } + else + { + return stat_array; + } + } +} + +int +gsl_sf_legendre_sphPlm_array(const int lmax, int m, const double x, double * result_array) +{ + /* CHECK_POINTER(result_array) */ + + if(m < 0 || lmax < m || x < -1.0 || x > 1.0) { + GSL_ERROR ("error", GSL_EDOM); + } + else if(m > 0 && (x == 1.0 || x == -1.0)) { + int ell; + for(ell=m; ell<=lmax; ell++) result_array[ell-m] = 0.0; + return GSL_SUCCESS; + } + else { + double y_mm; + double y_mmp1; + + if(m == 0) { + y_mm = 0.5/M_SQRTPI; /* Y00 = 1/sqrt(4pi) */ + y_mmp1 = x * M_SQRT3 * y_mm; + } + else { + /* |x| < 1 here */ + + gsl_sf_result lncirc; + gsl_sf_result lnpoch; + double lnpre; + const double sgn = ( GSL_IS_ODD(m) ? -1.0 : 1.0); + gsl_sf_log_1plusx_e(-x*x, &lncirc); + gsl_sf_lnpoch_e(m, 0.5, &lnpoch); /* Gamma(m+1/2)/Gamma(m) */ + lnpre = -0.25*M_LNPI + 0.5 * (lnpoch.val + m*lncirc.val); + y_mm = sqrt((2.0+1.0/m)/(4.0*M_PI)) * sgn * exp(lnpre); + y_mmp1 = x * sqrt(2.0*m + 3.0) * y_mm; + } + + if(lmax == m){ + result_array[0] = y_mm; + return GSL_SUCCESS; + } + else if(lmax == m + 1) { + result_array[0] = y_mm; + result_array[1] = y_mmp1; + return GSL_SUCCESS; + } + else{ + double y_ell; + int ell; + + result_array[0] = y_mm; + result_array[1] = y_mmp1; + + /* Compute Y_l^m, l > m+1, upward recursion on l. */ + for(ell=m+2; ell <= lmax; ell++){ + const double rat1 = (double)(ell-m)/(double)(ell+m); + const double rat2 = (ell-m-1.0)/(ell+m-1.0); + const double factor1 = sqrt(rat1*(2*ell+1)*(2*ell-1)); + const double factor2 = sqrt(rat1*rat2*(2*ell+1)/(2*ell-3)); + y_ell = (x*y_mmp1*factor1 - (ell+m-1)*y_mm*factor2) / (ell-m); + y_mm = y_mmp1; + y_mmp1 = y_ell; + result_array[ell-m] = y_ell; + } + } + + return GSL_SUCCESS; + } +} + + +int +gsl_sf_legendre_sphPlm_deriv_array( + const int lmax, const int m, const double x, + double * result_array, + double * result_deriv_array) +{ + if(m < 0 || lmax < m || x < -1.0 || x > 1.0) + { + GSL_ERROR ("domain", GSL_EDOM); + } + else if(m == 0) + { + /* m = 0 is easy to trap */ + const int stat_array = gsl_sf_legendre_Pl_deriv_array(lmax, x, result_array, result_deriv_array); + int ell; + for(ell = 0; ell <= lmax; ell++) + { + const double prefactor = sqrt((2.0 * ell + 1.0)/(4.0*M_PI)); + result_array[ell] *= prefactor; + result_deriv_array[ell] *= prefactor; + } + return stat_array; + } + else if(m == 1) + { + /* Trapping m = 1 is necessary because of the possible divergence. + * Recall that this divergence is handled properly in ..._Plm_deriv_array(), + * and the scaling factor is not large for small m, so we just scale. + */ + const int stat_array = gsl_sf_legendre_Plm_deriv_array(lmax, m, x, result_array, result_deriv_array); + int ell; + for(ell = 1; ell <= lmax; ell++) + { + const double prefactor = sqrt((2.0 * ell + 1.0)/(ell + 1.0) / (4.0*M_PI*ell)); + result_array[ell-1] *= prefactor; + result_deriv_array[ell-1] *= prefactor; + } + return stat_array; + } + else + { + /* as for the derivative of P_lm, everything is regular for m >= 2 */ + + int stat_array = gsl_sf_legendre_sphPlm_array(lmax, m, x, result_array); + + if(stat_array == GSL_SUCCESS) + { + int ell; + + if(1.0 - fabs(x) < GSL_DBL_EPSILON) + { + for(ell = m; ell <= lmax; ell++) result_deriv_array[ell-m] = 0.0; + return GSL_SUCCESS; + } + else + { + const double diff_a = 1.0 + x; + const double diff_b = 1.0 - x; + result_deriv_array[0] = - m * x / (diff_a * diff_b) * result_array[0]; + if(lmax-m >= 1) result_deriv_array[1] = sqrt(2.0 * m + 3.0) * (x * result_deriv_array[0] + result_array[0]); + for(ell = m+2; ell <= lmax; ell++) + { + const double c1 = sqrt(((2.0*ell+1.0)/(2.0*ell-1.0)) * ((double)(ell-m)/(double)(ell+m))); + result_deriv_array[ell-m] = - (ell * x * result_array[ell-m] - c1 * (ell+m) * result_array[ell-1-m]) / (diff_a * diff_b); + } + return GSL_SUCCESS; + } + } + else + { + return stat_array; + } + } +} + +int +gsl_sf_legendre_array_size(const int lmax, const int m) +{ + return lmax-m+1; +} + +#endif /* !GSL_DISABLE_DEPRECATED */ + +/*-*-*-*-*-*-*-*-*-* Functions w/ Natural Prototypes *-*-*-*-*-*-*-*-*-*-*/ + +#include "eval.h" + +double gsl_sf_legendre_P1(const double x) +{ + EVAL_RESULT(gsl_sf_legendre_P1_e(x, &result)); +} + +double gsl_sf_legendre_P2(const double x) +{ + EVAL_RESULT(gsl_sf_legendre_P2_e(x, &result)); +} + +double gsl_sf_legendre_P3(const double x) +{ + EVAL_RESULT(gsl_sf_legendre_P3_e(x, &result)); +} + +double gsl_sf_legendre_Pl(const int l, const double x) +{ + EVAL_RESULT(gsl_sf_legendre_Pl_e(l, x, &result)); +} + +double gsl_sf_legendre_Plm(const int l, const int m, const double x) +{ + EVAL_RESULT(gsl_sf_legendre_Plm_e(l, m, x, &result)); +} + +double gsl_sf_legendre_sphPlm(const int l, const int m, const double x) +{ + EVAL_RESULT(gsl_sf_legendre_sphPlm_e(l, m, x, &result)); +} diff --git a/gsl-2.5/specfunc/legendre_poly.lo b/gsl-2.5/specfunc/legendre_poly.lo new file mode 100644 index 00000000..0738e2dd --- /dev/null +++ b/gsl-2.5/specfunc/legendre_poly.lo @@ -0,0 +1,12 @@ +# legendre_poly.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/legendre_poly.o' + +# Name of the non-PIC object +non_pic_object='legendre_poly.o' + diff --git a/gsl-2.5/specfunc/legendre_source.c b/gsl-2.5/specfunc/legendre_source.c new file mode 100644 index 00000000..d01ccf6f --- /dev/null +++ b/gsl-2.5/specfunc/legendre_source.c @@ -0,0 +1,599 @@ +/* specfunc/legendre_source.c + * + * Copyright (C) 2009-2013 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* define various macros for functions below */ + +#define CONCAT2x(a,b) a ## _ ## b +#define CONCAT3x(a,b,c) a ## _ ## b ## _ ## c + +#if defined(LEGENDRE) +#define FUNCTION(dir,name) CONCAT2x(dir,name) +#define OUTPUT result_array +#define OUTPUT_ARG double result_array[] + +#elif defined(LEGENDRE_DERIV) +#define FUNCTION(dir,name) CONCAT3x(dir,deriv,name) +#define OUTPUT result_array, result_deriv_array +#define OUTPUT_ARG double result_array[], double result_deriv_array[] + +#elif defined(LEGENDRE_DERIV_ALT) +#define FUNCTION(dir,name) CONCAT3x(dir,deriv_alt,name) +#define OUTPUT result_array, result_deriv_array +#define OUTPUT_ARG double result_array[], double result_deriv_array[] +#define LEGENDRE_DERIV + +#elif defined(LEGENDRE_DERIV2) +#define FUNCTION(dir,name) CONCAT3x(dir,deriv2,name) +#define OUTPUT result_array, result_deriv_array, result_deriv2_array +#define OUTPUT_ARG double result_array[], double result_deriv_array[], double result_deriv2_array[] +#define LEGENDRE_DERIV + +#elif defined(LEGENDRE_DERIV2_ALT) +#define FUNCTION(dir,name) CONCAT3x(dir,deriv2_alt,name) +#define OUTPUT result_array, result_deriv_array, result_deriv2_array +#define OUTPUT_ARG double result_array[], double result_deriv_array[], double result_deriv2_array[] +#define LEGENDRE_DERIV +#define LEGENDRE_DERIV2 +#define LEGENDRE_DERIV_ALT + +#endif + +static int FUNCTION (legendre, array_schmidt_e) +(const size_t lmax, const double x, const double csphase, OUTPUT_ARG); +static int FUNCTION(legendre, array_none_e) +(const size_t lmax, const double x, const double csphase, OUTPUT_ARG); + +/* +gsl_sf_legendre_array() + +Inputs: norm - normlization type + lmax - maximum degree + x - input argument + result_array - (output) normalized P_{lm} + result_deriv_array - (output) normalized P'_{lm} + result_deriv2_array - (output) normalized P''_{lm} +*/ + +int +FUNCTION (gsl_sf_legendre, array) +(const gsl_sf_legendre_t norm, const size_t lmax, const double x, + OUTPUT_ARG) +{ + int s = FUNCTION (gsl_sf_legendre, array_e)(norm, lmax, x, 1.0, OUTPUT); + return s; +} + +/* +gsl_sf_legendre_array_e() + +Inputs: norm - normlization type + lmax - maximum degree + x - input argument + csphase - Condon-Shortley phase + result_array - (output) normalized P_{lm} + result_deriv_array - (output) normalized P'_{lm} + result_deriv2_array - (output) normalized P''_{lm} +*/ + +int +FUNCTION (gsl_sf_legendre, array_e) +(const gsl_sf_legendre_t norm, const size_t lmax, const double x, + const double csphase, OUTPUT_ARG) +{ + int s; + const size_t nlm = gsl_sf_legendre_nlm(lmax); +#if !defined(LEGENDRE_DERIV_ALT) + size_t i; +#if defined(LEGENDRE_DERIV) || defined(LEGENDRE_DERIV2) + const double u = sqrt((1.0 - x) * (1.0 + x)); + const double uinv = 1.0 / u; +#endif +#if defined(LEGENDRE_DERIV2) + const double uinv2 = uinv * uinv; +#endif +#endif + double fac1 = 0.0, fac2 = 0.0; /* normalization factors */ + + if (norm == GSL_SF_LEGENDRE_NONE) + { + /* compute P_{lm}(x) */ + s = FUNCTION(legendre,array_none_e)(lmax, x, csphase, OUTPUT); + } + else + { + /* compute S_{lm}(x) */ + s = FUNCTION(legendre,array_schmidt_e)(lmax, x, csphase, OUTPUT); + } + +#if !defined(LEGENDRE_DERIV_ALT) + /* scale derivative arrays to recover P'(x) and P''(x) */ + for (i = 0; i < nlm; ++i) + { +#if defined(LEGENDRE_DERIV2) + double dp = result_deriv_array[i]; + double d2p = result_deriv2_array[i]; + + result_deriv2_array[i] = (d2p - x * uinv * dp) * uinv2; +#endif +#if defined(LEGENDRE_DERIV) + result_deriv_array[i] *= -uinv; +#endif + } +#endif + + /* apply scaling for requested normalization */ + if (norm == GSL_SF_LEGENDRE_SCHMIDT || norm == GSL_SF_LEGENDRE_NONE) + { + return s; + } + else if (norm == GSL_SF_LEGENDRE_SPHARM) + { + fac1 = 1.0 / sqrt(4.0 * M_PI); + fac2 = 1.0 / sqrt(8.0 * M_PI); + } + else if (norm == GSL_SF_LEGENDRE_FULL) + { + fac1 = 1.0 / sqrt(2.0); + fac2 = 1.0 / sqrt(4.0); + } + + /* + * common code for different normalizations + * P_{l0} = fac1 * sqrt(2l + 1) * S_{l0} + * P_{lm} = fac2 * sqrt(2l + 1) * S_{lm}, m > 0 + */ + { + size_t l, m; + size_t twoellp1 = 1; /* 2l + 1 */ + double *sqrts = &(result_array[nlm]); + + for (l = 0; l <= lmax; ++l) + { + result_array[gsl_sf_legendre_array_index(l, 0)] *= + sqrts[twoellp1] * fac1; +#if defined(LEGENDRE_DERIV) + result_deriv_array[gsl_sf_legendre_array_index(l, 0)] *= + sqrts[twoellp1] * fac1; +#endif +#if defined(LEGENDRE_DERIV2) + result_deriv2_array[gsl_sf_legendre_array_index(l, 0)] *= + sqrts[twoellp1] * fac1; +#endif + + for (m = 1; m <= l; ++m) + { + result_array[gsl_sf_legendre_array_index(l, m)] *= + sqrts[twoellp1] * fac2; +#if defined(LEGENDRE_DERIV) + result_deriv_array[gsl_sf_legendre_array_index(l, m)] *= + sqrts[twoellp1] * fac2; +#endif +#if defined(LEGENDRE_DERIV2) + result_deriv2_array[gsl_sf_legendre_array_index(l, m)] *= + sqrts[twoellp1] * fac2; +#endif + } + + twoellp1 += 2; + } + } + + return s; +} + +/* +legendre,array_schmidt_e() + This routine computes Schmidt semi-normalized associated +Legendre polynomials and their first and second derivatives. + +Inputs: lmax - maximum order + x - legendre argument in [-1,1] + csphase - -1.0 to include CS phase (-1)^m, + 1.0 to not include + result_array - (output) where to store P_{lm}(x) values + result_deriv_array - (output) where to store + d/dtheta P_{lm}(x) values + result_deriv2_array - (output) where to store + d^2/dtheta^2 P_{lm}(x) values +*/ + +static int +FUNCTION(legendre, array_schmidt_e) +(const size_t lmax, const double x, const double csphase, OUTPUT_ARG) +{ + if (x > 1.0 || x < -1.0) + { + GSL_ERROR("x is outside [-1,1]", GSL_EDOM); + } +#if defined(LEGENDRE_DERIV) || defined(LEGENDRE_DERIV2) + else if (fabs(x) == 1.0) + { + GSL_ERROR("x cannot equal 1 or -1 for derivative computation", GSL_EDOM); + } +#endif + else if (csphase != 1.0 && csphase != -1.0) + { + GSL_ERROR("csphase has invalid value", GSL_EDOM); + } + else + { + const double eps = 1.0e-280; + const double u = sqrt((1.0 - x) * (1.0 + x)); /* sin(theta) */ +#if defined(LEGENDRE_DERIV) + const double uinv = 1.0 / u; +#endif +#if defined(LEGENDRE_DERIV2) + const double uinv2 = 1.0 / u / u; +#endif +#if defined(LEGENDRE_DERIV) || defined(LEGENDRE_DERIV2) + const double xbyu = x * uinv; /* x / u */ +#endif + size_t l, m; + size_t k, idxmm; + double plm, /* eps * S(l,m) / u^m */ + pmm; /* eps * S(m,m) / u^m */ + double rescalem; + double pm1, /* S(l-1,m) */ + pm2; /* S(l-2,m) */ + size_t nlm = gsl_sf_legendre_nlm(lmax); + double *sqrts = &(result_array[nlm]); + + /* precompute square root factors for recurrence */ + legendre_sqrts(lmax, sqrts); + + /* initial values S(0,0) and S(1,0) */ + pm2 = 1.0; /* S(0,0) */ + pm1 = x; /* S(1,0) */ + + result_array[0] = pm2; +#if defined(LEGENDRE_DERIV) + result_deriv_array[0] = 0.0; +#endif +#if defined(LEGENDRE_DERIV2) + result_deriv2_array[0] = 0.0; +#endif + + if (lmax == 0) + return GSL_SUCCESS; + + result_array[1] = pm1; +#if defined(LEGENDRE_DERIV) + result_deriv_array[1] = -u; +#endif +#if defined(LEGENDRE_DERIV2) + result_deriv2_array[1] = -x; +#endif + + /* Compute S(l,0) for l=2..lmax, no scaling required */ + + k = 1; /* idx(1,0) */ + for (l = 2; l <= lmax; ++l) + { + double linv = 1.0 / (double)l; + + k += l; /* idx(l,m) = idx(l-1,m) + l */ + + plm = (2.0 - linv) * x * pm1 - (1.0 - linv) * pm2; + result_array[k] = plm; +#if defined(LEGENDRE_DERIV) + result_deriv_array[k] = uinv * l * (x * plm - pm1); +#endif +#if defined(LEGENDRE_DERIV2) + result_deriv2_array[k] = -(double) l * (l + 1.0) * plm - + xbyu * result_deriv_array[k]; +#endif + pm2 = pm1; + pm1 = plm; + } + + /* Compute S(m,m), S(m+1,m) and S(l,m) */ + + /* + * pi_m = Prod_{i=2}^m sqrt[ (2m - 1) / (2m) ] + * but pi_1 = 1.0, so initialize to sqrt(2) so that + * the first m = 1 iteration of the loop will reset it + * to 1.0. Starting with m = 2 it will begin accumulating + * the correct terms. + * + * pmm = S(m,m) * eps / u^m = pi_m + */ + pmm = sqrt(2.0) * eps; + + rescalem = 1.0 / eps; + idxmm = 0; /* tracks idx(m,m), initialize to idx(0,0) */ + + for (m = 1; m < lmax; ++m) + { + /* rescalem = u^m / eps */ + rescalem *= u; + + /* + * compute: + * S(m,m) = u * sqrt((2m - 1) / (2m)) S(m-1,m-1) = u^m * pi_m + * d_t S(m,m) = m * x / u * S(m,m) + */ + + idxmm += m + 1; /* idx(m,m) = idx(m-1,m-1) + m + 1 */ + pmm *= csphase * sqrts[2 * m - 1] / sqrts[2 * m]; /* S(m,m) * eps / u^m */ + result_array[idxmm] = pmm * rescalem; +#if defined(LEGENDRE_DERIV) + result_deriv_array[idxmm] = m * xbyu * result_array[idxmm]; +#endif +#if defined(LEGENDRE_DERIV2) + result_deriv2_array[idxmm] = + m * (uinv2 * m - (m + 1.0)) * result_array[idxmm] - + xbyu * result_deriv_array[idxmm]; +#endif + pm2 = pmm; + + /* + * compute: + * S(m+1,m) = sqrt(2 * m + 1) * x * S(m,m) + * d_t S(m+1,m) = 1/u * ((m+1)*x*S(m+1,m) - sqrt(2*m+1)*S(m,m)) + */ + + k = idxmm + m + 1; /* idx(m+1,m) = idx(m,m) + m + 1 */ + pm1 = x * sqrts[2 * m + 1] * pm2; + result_array[k] = pm1 * rescalem; +#if defined(LEGENDRE_DERIV) + result_deriv_array[k] = + uinv * ((m + 1.0) * x * result_array[k] - + sqrts[2 * m + 1] * result_array[idxmm]); +#endif +#if defined(LEGENDRE_DERIV2) + result_deriv2_array[k] = + (m * m * uinv2 - (m + 1.0) * (m + 2.0)) * result_array[k] - + xbyu * result_deriv_array[k]; +#endif + + /* compute S(l,m) for l=m+2...lmax */ + for (l = m + 2; l <= lmax; ++l) + { + k += l; /* idx(l,m) = idx(l-1,m) + l */ + plm = + (2*l - 1) / sqrts[l + m] / sqrts[l - m] * x * pm1 - + sqrts[l - m - 1] * sqrts[l + m - 1] / + sqrts[l + m] / sqrts[l - m] * pm2; + result_array[k] = plm * rescalem; +#if defined(LEGENDRE_DERIV) + result_deriv_array[k] = + uinv * (l * x * result_array[k] - + sqrts[l + m] * sqrts[l - m] * result_array[k - l]); +#endif +#if defined(LEGENDRE_DERIV2) + result_deriv2_array[k] = + (m * m * uinv2 - l * (l + 1.0)) * result_array[k] - + xbyu * result_deriv_array[k]; +#endif + pm2 = pm1; + pm1 = plm; + } + } /* for (m = 1; m < lmax; ++m) */ + + /* compute S(lmax,lmax) */ + + rescalem *= u; + idxmm += m + 1; /* idx(lmax,lmax) */ + pmm *= csphase * sqrts[2 * lmax - 1] / sqrts[2 * lmax]; + result_array[idxmm] = pmm * rescalem; +#if defined(LEGENDRE_DERIV) + result_deriv_array[idxmm] = lmax * xbyu * result_array[idxmm]; +#endif +#if defined(LEGENDRE_DERIV2) + result_deriv2_array[idxmm] = + lmax * (uinv2 * lmax - (lmax + 1.0)) * result_array[idxmm] - + xbyu * result_deriv_array[idxmm]; +#endif + + return GSL_SUCCESS; + } +} + +/* +legendre_array_none_e() + This routine computes unnormalized associated Legendre polynomials +and their derivatives. + +Inputs: lmax - maximum order + x - legendre argument in [-1,1] + csphase - -1.0 to include CS phase (-1)^m, + 1.0 to not include + result_array - (output) where to store P_{lm}(x) values + result_deriv_array - (output) where to store + d/dtheta P_{lm}(x) values + result_deriv2_array - (output) where to store + d^2/dtheta^2 P_{lm}(x) values +*/ + +static int +FUNCTION(legendre, array_none_e) +(const size_t lmax, const double x, const double csphase, OUTPUT_ARG) +{ + if (x > 1.0 || x < -1.0) + { + GSL_ERROR("x is outside [-1,1]", GSL_EDOM); + } +#if defined(LEGENDRE_DERIV) || defined(LEGENDRE_DERIV2) + else if (fabs(x) == 1.0) + { + GSL_ERROR("x cannot equal 1 or -1 for derivative computation", GSL_EDOM); + } +#endif + else if (csphase != 1.0 && csphase != -1.0) + { + GSL_ERROR("csphase has invalid value", GSL_EDOM); + } + else + { + const double u = sqrt((1.0 - x) * (1.0 + x)); /* sin(theta) */ +#if defined(LEGENDRE_DERIV) + const double uinv = 1.0 / u; +#endif +#if defined(LEGENDRE_DERIV2) + const double uinv2 = 1.0 / u / u; +#endif +#if defined(LEGENDRE_DERIV) || defined(LEGENDRE_DERIV2) + const double xbyu = x * uinv; /* x / u */ +#endif + size_t l, m; + size_t k, idxmm; + double plm, pmm; + double pm1, /* P(l-1,m) */ + pm2; /* P(l-2,m) */ + double twomm1; /* 2*m - 1 */ + + /* initial values P(0,0) and P(1,0) */ + + pm2 = 1.0; /* P(0,0) */ + pm1 = x; /* P(1,0) */ + + result_array[0] = pm2; +#if defined(LEGENDRE_DERIV) + result_deriv_array[0] = 0.0; +#endif +#if defined(LEGENDRE_DERIV2) + result_deriv2_array[0] = 0.0; +#endif + + if (lmax == 0) + return 0; + + result_array[1] = pm1; +#if defined(LEGENDRE_DERIV) + result_deriv_array[1] = -u; +#endif +#if defined(LEGENDRE_DERIV2) + result_deriv2_array[1] = -x; +#endif + + /* Compute P(l,0) */ + + k = 1; + for (l = 2; l <= lmax; ++l) + { + k += l; + plm = ((2*l - 1) * x * pm1 - (l - 1) * pm2) / (double) l; + result_array[k] = plm; +#if defined(LEGENDRE_DERIV) + result_deriv_array[k] = -(double)l * (pm1 - x * plm) * uinv; +#endif +#if defined(LEGENDRE_DERIV2) + result_deriv2_array[k] = -(double) l * (l + 1.0) * plm - + xbyu * result_deriv_array[k]; +#endif + pm2 = pm1; + pm1 = plm; + } + + /* Compute P(m,m), P(m+1,m) and P(l,m) */ + + pmm = 1.0; + twomm1 = -1.0; /* 2 * m - 1 */ + + idxmm = 0; /* tracks idx(m,m), initialize to idx(0,0) */ + + for (m = 1; m <= lmax - 1; ++m) + { + /* + * compute + * + * P(m,m) = u * (2m - 1) P(m-1,m-1) + * and + * dP(m,m)/dtheta = m * x * P(m,m) / u + */ + idxmm += m + 1; + twomm1 += 2.0; + pmm *= csphase * u * twomm1; + result_array[idxmm] = pmm; +#if defined(LEGENDRE_DERIV) + result_deriv_array[idxmm] = m * xbyu * pmm; +#endif +#if defined(LEGENDRE_DERIV2) + result_deriv2_array[idxmm] = + m * (uinv2 * m - (m + 1.0)) * result_array[idxmm] - + xbyu * result_deriv_array[idxmm]; +#endif + pm2 = pmm; + + /* + * compute + * + * P(m+1,m) = (2 * m + 1) * x * P(m,m) + * and + * dP(m+1,m)/dt = -[(2*m + 1) * P(m,m) - (m+1) * x * P(m+1,m)]/u + */ + k = idxmm + m + 1; + pm1 = x * pmm * (2*m + 1); + result_array[k] = pm1; +#if defined(LEGENDRE_DERIV) + result_deriv_array[k] = -uinv * ((2*m + 1) * pmm - (m + 1) * x * pm1); +#endif +#if defined(LEGENDRE_DERIV2) + result_deriv2_array[k] = + (m * m * uinv2 - (m + 1.0) * (m + 2.0)) * result_array[k] - + xbyu * result_deriv_array[k]; +#endif + + /* compute P(l,m) */ + for (l = m + 2; l <= lmax; ++l) + { + k += l; + plm = ((2*l - 1) * x * pm1 - (l + m - 1) * pm2) / + (double) (l - m); + result_array[k] = plm; +#if defined(LEGENDRE_DERIV) + result_deriv_array[k] = -uinv * ((l + m) * pm1 - l * x * plm); +#endif +#if defined(LEGENDRE_DERIV2) + result_deriv2_array[k] = + (m * m * uinv2 - l * (l + 1.0)) * result_array[k] - + xbyu * result_deriv_array[k]; +#endif + pm2 = pm1; + pm1 = plm; + } + } /* for (m = 1; m <= lmax - 1; ++m) */ + + /* compute P(lmax,lmax) */ + + idxmm += m + 1; + twomm1 += 2.0; + pmm *= csphase * u * twomm1; + result_array[idxmm] = pmm; +#if defined(LEGENDRE_DERIV) + result_deriv_array[idxmm] = lmax * x * pmm * uinv; +#endif +#if defined(LEGENDRE_DERIV2) + result_deriv2_array[idxmm] = + lmax * (uinv2 * lmax - (lmax + 1.0)) * result_array[idxmm] - + xbyu * result_deriv_array[idxmm]; +#endif + + return GSL_SUCCESS; + } +} /* legendre_array_none_e() */ + +#undef FUNCTION +#undef CONCAT2x +#undef CONCAT3x +#undef OUTPUT +#undef OUTPUT_ARG +#undef LEGENDRE_DERIV +#undef LEGENDRE_DERIV2 +#undef LEGENDRE_DERIV_ALT diff --git a/gsl-2.5/specfunc/libgslspecfunc.la b/gsl-2.5/specfunc/libgslspecfunc.la new file mode 100644 index 00000000..e4019c2e --- /dev/null +++ b/gsl-2.5/specfunc/libgslspecfunc.la @@ -0,0 +1,41 @@ +# libgslspecfunc.la - a libtool library file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='' + +# Names of this library. +library_names='' + +# The name of the static archive. +old_library='libgslspecfunc.a' + +# Linker flags that can not go in dependency_libs. +inherited_linker_flags='' + +# Libraries that this one depends upon. +dependency_libs=' -lm' + +# Names of additional weak libraries provided by this library +weak_library_names='' + +# Version information for libgslspecfunc. +current= +age= +revision= + +# Is this an already installed library? +installed=no + +# Should we warn about portability when linking against -modules? +shouldnotlink=no + +# Files to dlopen/dlpreopen +dlopen='' +dlpreopen='' + +# Directory that this library needs to be installed in: +libdir='' diff --git a/gsl-2.5/specfunc/log.c b/gsl-2.5/specfunc/log.c new file mode 100644 index 00000000..bf83f026 --- /dev/null +++ b/gsl-2.5/specfunc/log.c @@ -0,0 +1,266 @@ +/* specfunc/log.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ + +#include +#include +#include +#include + +#include "error.h" + +#include "chebyshev.h" +#include "cheb_eval.c" + +/*-*-*-*-*-*-*-*-*-*-*-* Private Section *-*-*-*-*-*-*-*-*-*-*-*/ + +/* Chebyshev expansion for log(1 + x(t))/x(t) + * + * x(t) = (4t-1)/(2(4-t)) + * t(x) = (8x+1)/(2(x+2)) + * -1/2 < x < 1/2 + * -1 < t < 1 + */ +static double lopx_data[21] = { + 2.16647910664395270521272590407, + -0.28565398551049742084877469679, + 0.01517767255690553732382488171, + -0.00200215904941415466274422081, + 0.00019211375164056698287947962, + -0.00002553258886105542567601400, + 2.9004512660400621301999384544e-06, + -3.8873813517057343800270917900e-07, + 4.7743678729400456026672697926e-08, + -6.4501969776090319441714445454e-09, + 8.2751976628812389601561347296e-10, + -1.1260499376492049411710290413e-10, + 1.4844576692270934446023686322e-11, + -2.0328515972462118942821556033e-12, + 2.7291231220549214896095654769e-13, + -3.7581977830387938294437434651e-14, + 5.1107345870861673561462339876e-15, + -7.0722150011433276578323272272e-16, + 9.7089758328248469219003866867e-17, + -1.3492637457521938883731579510e-17, + 1.8657327910677296608121390705e-18 +}; +static cheb_series lopx_cs = { + lopx_data, + 20, + -1, 1, + 10 +}; + +/* Chebyshev expansion for (log(1 + x(t)) - x(t))/x(t)^2 + * + * x(t) = (4t-1)/(2(4-t)) + * t(x) = (8x+1)/(2(x+2)) + * -1/2 < x < 1/2 + * -1 < t < 1 + */ +static double lopxmx_data[20] = { + -1.12100231323744103373737274541, + 0.19553462773379386241549597019, + -0.01467470453808083971825344956, + 0.00166678250474365477643629067, + -0.00018543356147700369785746902, + 0.00002280154021771635036301071, + -2.8031253116633521699214134172e-06, + 3.5936568872522162983669541401e-07, + -4.6241857041062060284381167925e-08, + 6.0822637459403991012451054971e-09, + -8.0339824424815790302621320732e-10, + 1.0751718277499375044851551587e-10, + -1.4445310914224613448759230882e-11, + 1.9573912180610336168921438426e-12, + -2.6614436796793061741564104510e-13, + 3.6402634315269586532158344584e-14, + -4.9937495922755006545809120531e-15, + 6.8802890218846809524646902703e-16, + -9.5034129794804273611403251480e-17, + 1.3170135013050997157326965813e-17 +}; +static cheb_series lopxmx_cs = { + lopxmx_data, + 19, + -1, 1, + 9 +}; + + +/*-*-*-*-*-*-*-*-*-*-*-* Functions with Error Codes *-*-*-*-*-*-*-*-*-*-*-*/ + +int +gsl_sf_log_e(const double x, gsl_sf_result * result) +{ + /* CHECK_POINTER(result) */ + + if(x <= 0.0) { + DOMAIN_ERROR(result); + } + else { + result->val = log(x); + result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } +} + + +int +gsl_sf_log_abs_e(const double x, gsl_sf_result * result) +{ + /* CHECK_POINTER(result) */ + + if(x == 0.0) { + DOMAIN_ERROR(result); + } + else { + result->val = log(fabs(x)); + result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } +} + +int +gsl_sf_complex_log_e(const double zr, const double zi, gsl_sf_result * lnr, gsl_sf_result * theta) +{ + /* CHECK_POINTER(lnr) */ + /* CHECK_POINTER(theta) */ + + if(zr != 0.0 || zi != 0.0) { + const double ax = fabs(zr); + const double ay = fabs(zi); + const double min = GSL_MIN(ax, ay); + const double max = GSL_MAX(ax, ay); + lnr->val = log(max) + 0.5 * log(1.0 + (min/max)*(min/max)); + lnr->err = 2.0 * GSL_DBL_EPSILON * fabs(lnr->val); + theta->val = atan2(zi, zr); + theta->err = GSL_DBL_EPSILON * fabs(lnr->val); + return GSL_SUCCESS; + } + else { + DOMAIN_ERROR_2(lnr, theta); + } +} + + +int +gsl_sf_log_1plusx_e(const double x, gsl_sf_result * result) +{ + /* CHECK_POINTER(result) */ + + if(x <= -1.0) { + DOMAIN_ERROR(result); + } + else if(fabs(x) < GSL_ROOT6_DBL_EPSILON) { + const double c1 = -0.5; + const double c2 = 1.0/3.0; + const double c3 = -1.0/4.0; + const double c4 = 1.0/5.0; + const double c5 = -1.0/6.0; + const double c6 = 1.0/7.0; + const double c7 = -1.0/8.0; + const double c8 = 1.0/9.0; + const double c9 = -1.0/10.0; + const double t = c5 + x*(c6 + x*(c7 + x*(c8 + x*c9))); + result->val = x * (1.0 + x*(c1 + x*(c2 + x*(c3 + x*(c4 + x*t))))); + result->err = GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else if(fabs(x) < 0.5) { + double t = 0.5*(8.0*x + 1.0)/(x+2.0); + gsl_sf_result c; + cheb_eval_e(&lopx_cs, t, &c); + result->val = x * c.val; + result->err = fabs(x * c.err); + return GSL_SUCCESS; + } + else { + result->val = log(1.0 + x); + result->err = GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } +} + + +int +gsl_sf_log_1plusx_mx_e(const double x, gsl_sf_result * result) +{ + /* CHECK_POINTER(result) */ + + if(x <= -1.0) { + DOMAIN_ERROR(result); + } + else if(fabs(x) < GSL_ROOT5_DBL_EPSILON) { + const double c1 = -0.5; + const double c2 = 1.0/3.0; + const double c3 = -1.0/4.0; + const double c4 = 1.0/5.0; + const double c5 = -1.0/6.0; + const double c6 = 1.0/7.0; + const double c7 = -1.0/8.0; + const double c8 = 1.0/9.0; + const double c9 = -1.0/10.0; + const double t = c5 + x*(c6 + x*(c7 + x*(c8 + x*c9))); + result->val = x*x * (c1 + x*(c2 + x*(c3 + x*(c4 + x*t)))); + result->err = GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else if(fabs(x) < 0.5) { + double t = 0.5*(8.0*x + 1.0)/(x+2.0); + gsl_sf_result c; + cheb_eval_e(&lopxmx_cs, t, &c); + result->val = x*x * c.val; + result->err = x*x * c.err; + return GSL_SUCCESS; + } + else { + const double lterm = log(1.0 + x); + result->val = lterm - x; + result->err = GSL_DBL_EPSILON * (fabs(lterm) + fabs(x)); + return GSL_SUCCESS; + } +} + + + +/*-*-*-*-*-*-*-*-*-* Functions w/ Natural Prototypes *-*-*-*-*-*-*-*-*-*-*/ + +#include "eval.h" + +double gsl_sf_log(const double x) +{ + EVAL_RESULT(gsl_sf_log_e(x, &result)); +} + +double gsl_sf_log_abs(const double x) +{ + EVAL_RESULT(gsl_sf_log_abs_e(x, &result)); +} + +double gsl_sf_log_1plusx(const double x) +{ + EVAL_RESULT(gsl_sf_log_1plusx_e(x, &result)); +} + +double gsl_sf_log_1plusx_mx(const double x) +{ + EVAL_RESULT(gsl_sf_log_1plusx_mx_e(x, &result)); +} diff --git a/gsl-2.5/specfunc/log.lo b/gsl-2.5/specfunc/log.lo new file mode 100644 index 00000000..f0a53ed6 --- /dev/null +++ b/gsl-2.5/specfunc/log.lo @@ -0,0 +1,12 @@ +# log.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/log.o' + +# Name of the non-PIC object +non_pic_object='log.o' + diff --git a/gsl-2.5/specfunc/mathieu_angfunc.c b/gsl-2.5/specfunc/mathieu_angfunc.c new file mode 100644 index 00000000..10727e11 --- /dev/null +++ b/gsl-2.5/specfunc/mathieu_angfunc.c @@ -0,0 +1,365 @@ +/* specfunc/mathieu_angfunc.c + * + * Copyright (C) 2002 Lowell Johnson + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +/* Author: L. Johnson */ + +#include +#include +#include +#include +#include +#include + + +int gsl_sf_mathieu_ce_e(int order, double qq, double zz, gsl_sf_result *result) +{ + int even_odd, ii, status; + double coeff[GSL_SF_MATHIEU_COEFF], norm, fn, factor; + gsl_sf_result aa; + + + norm = 0.0; + even_odd = 0; + if (order % 2 != 0) + even_odd = 1; + + /* Handle the trivial case where q = 0. */ + if (qq == 0.0) + { + norm = 1.0; + if (order == 0) + norm = sqrt(2.0); + + fn = cos(order*zz)/norm; + + result->val = fn; + result->err = 2.0*GSL_DBL_EPSILON; + factor = fabs(fn); + if (factor > 1.0) + result->err *= factor; + + return GSL_SUCCESS; + } + + /* Use symmetry characteristics of the functions to handle cases with + negative order. */ + if (order < 0) + order *= -1; + + /* Compute the characteristic value. */ + status = gsl_sf_mathieu_a_e(order, qq, &aa); + if (status != GSL_SUCCESS) + { + return status; + } + + /* Compute the series coefficients. */ + status = gsl_sf_mathieu_a_coeff(order, qq, aa.val, coeff); + if (status != GSL_SUCCESS) + { + return status; + } + + if (even_odd == 0) + { + fn = 0.0; + norm = coeff[0]*coeff[0]; + for (ii=0; iival = fn; + result->err = 2.0*GSL_DBL_EPSILON; + factor = fabs(fn); + if (factor > 1.0) + result->err *= factor; + + return GSL_SUCCESS; +} + + +int gsl_sf_mathieu_se_e(int order, double qq, double zz, gsl_sf_result *result) +{ + int even_odd, ii, status; + double coeff[GSL_SF_MATHIEU_COEFF], norm, fn, factor; + gsl_sf_result aa; + + + norm = 0.0; + even_odd = 0; + if (order % 2 != 0) + even_odd = 1; + + /* Handle the trivial cases where order = 0 and/or q = 0. */ + if (order == 0) + { + result->val = 0.0; + result->err = 0.0; + return GSL_SUCCESS; + } + + if (qq == 0.0) + { + norm = 1.0; + fn = sin(order*zz); + + result->val = fn; + result->err = 2.0*GSL_DBL_EPSILON; + factor = fabs(fn); + if (factor > 1.0) + result->err *= factor; + + return GSL_SUCCESS; + } + + /* Use symmetry characteristics of the functions to handle cases with + negative order. */ + if (order < 0) + order *= -1; + + /* Compute the characteristic value. */ + status = gsl_sf_mathieu_b_e(order, qq, &aa); + if (status != GSL_SUCCESS) + { + return status; + } + + /* Compute the series coefficients. */ + status = gsl_sf_mathieu_b_coeff(order, qq, aa.val, coeff); + if (status != GSL_SUCCESS) + { + return status; + } + + if (even_odd == 0) + { + fn = 0.0; + for (ii=0; iival = fn; + result->err = 2.0*GSL_DBL_EPSILON; + factor = fabs(fn); + if (factor > 1.0) + result->err *= factor; + + return GSL_SUCCESS; +} + + +int gsl_sf_mathieu_ce_array(int nmin, int nmax, double qq, double zz, + gsl_sf_mathieu_workspace *work, + double result_array[]) +{ + int even_odd, order, ii, jj, status; + double coeff[GSL_SF_MATHIEU_COEFF], *aa = work->aa, norm; + + + /* Initialize the result array to zeroes. */ + for (ii=0; iisize < (unsigned int)nmax) + { + GSL_ERROR("Work space not large enough", GSL_EINVAL); + } + + if (nmin < 0 || nmax < nmin) + { + GSL_ERROR("domain error", GSL_EDOM); + } + + /* Compute all of the eigenvalues up to nmax. */ + gsl_sf_mathieu_a_array(0, nmax, qq, work, aa); + + for (ii=0, order=nmin; order<=nmax; ii++, order++) + { + norm = 0.0; + even_odd = 0; + if (order % 2 != 0) + even_odd = 1; + + /* Handle the trivial case where q = 0. */ + if (qq == 0.0) + { + norm = 1.0; + if (order == 0) + norm = sqrt(2.0); + + result_array[ii] = cos(order*zz)/norm; + + continue; + } + + /* Compute the series coefficients. */ + status = gsl_sf_mathieu_a_coeff(order, qq, aa[order], coeff); + if (status != GSL_SUCCESS) + return status; + + if (even_odd == 0) + { + norm = coeff[0]*coeff[0]; + for (jj=0; jjbb, norm; + + + /* Initialize the result array to zeroes. */ + for (ii=0; iisize < (unsigned int)nmax) + { + GSL_ERROR("Work space not large enough", GSL_EINVAL); + } + + if (nmin < 0 || nmax < nmin) + { + GSL_ERROR("domain error", GSL_EDOM); + } + + /* Compute all of the eigenvalues up to nmax. */ + gsl_sf_mathieu_b_array(0, nmax, qq, work, bb); + + for (ii=0, order=nmin; order<=nmax; ii++, order++) + { + norm = 0.0; + even_odd = 0; + if (order % 2 != 0) + even_odd = 1; + + /* Handle the trivial cases where order = 0 and/or q = 0. */ + if (order == 0) + { + norm = 1.0; + result_array[ii] = 0.0; + continue; + } + + if (qq == 0.0) + { + norm = 1.0; + result_array[ii] = sin(order*zz); + + continue; + } + + /* Compute the series coefficients. */ + status = gsl_sf_mathieu_b_coeff(order, qq, bb[order], coeff); + if (status != GSL_SUCCESS) + { + return status; + } + + if (even_odd == 0) + { + for (jj=0; jj +#include +#include +#include +#include +#include +#include +#include + + +/* prototypes */ +static double solve_cubic(double c2, double c1, double c0); + + +static double ceer(int order, double qq, double aa, int nterms) +{ + + double term, term1; + int ii, n1; + + + if (order == 0) + term = 0.0; + else + { + term = 2.0*qq*qq/aa; + + if (order != 2) + { + n1 = order/2 - 1; + + for (ii=0; ii= 0) + { + double t1 = rr + sqrt(ww); + ss = fabs(t1)/t1*pow(fabs(t1), 1/3.); + t1 = rr - sqrt(ww); + tt = fabs(t1)/t1*pow(fabs(t1), 1/3.); + } + else + { + double theta = acos(rr/sqrt(-qq*qq*qq)); + ss = 2*sqrt(-qq)*cos((theta + 4*M_PI)/3.); + tt = 0.0; + } + + return (ss + tt - c2/3); +} + + +/* Compute an initial approximation for the characteristic value. */ +static double approx_c(int order, double qq) +{ + double approx; + double c0, c1, c2; + + + if (order < 0) + { + GSL_ERROR_VAL("Undefined order for Mathieu function", GSL_EINVAL, 0.0); + } + + switch (order) + { + case 0: + if (qq <= 4) + return (2 - sqrt(4 + 2*qq*qq)); /* Eqn. 31 */ + else + return asymptotic(order, qq); + break; + + case 1: + if (qq <= 4) + return (5 + 0.5*(qq - sqrt(5*qq*qq - 16*qq + 64))); /* Eqn. 32 */ + else + return asymptotic(order, qq); + break; + + case 2: + if (qq <= 3) + { + c2 = -8.0; /* Eqn. 33 */ + c1 = -48 - 3*qq*qq; + c0 = 20*qq*qq; + } + else + return asymptotic(order, qq); + break; + + case 3: + if (qq <= 6.25) + { + c2 = -qq - 8; /* Eqn. 34 */ + c1 = 16*qq - 128 - 2*qq*qq; + c0 = qq*qq*(qq + 8); + } + else + return asymptotic(order, qq); + break; + + default: + if (order < 70) + { + if (1.7*order > 2*sqrt(qq)) + { + /* Eqn. 30 */ + double n2 = (double)(order*order); + double n22 = (double)((n2 - 1)*(n2 - 1)); + double q2 = qq*qq; + double q4 = q2*q2; + approx = n2 + 0.5*q2/(n2 - 1); + approx += (5*n2 + 7)*q4/(32*n22*(n2 - 1)*(n2 - 4)); + approx += (9*n2*n2 + 58*n2 + 29)*q4*q2/ + (64*n22*n22*(n2 - 1)*(n2 - 4)*(n2 - 9)); + if (1.4*order < 2*sqrt(qq)) + { + approx += asymptotic(order, qq); + approx *= 0.5; + } + } + else + approx = asymptotic(order, qq); + + return approx; + } + else + return order*order; + } + + /* Solve the cubic x^3 + c2*x^2 + c1*x + c0 = 0 */ + approx = solve_cubic(c2, c1, c0); + + if ( approx < 0 && sqrt(qq) > 0.1*order ) + return asymptotic(order-1, qq); + else + return (order*order + fabs(approx)); +} + + +static double approx_s(int order, double qq) +{ + double approx; + double c0, c1, c2; + + + if (order < 1) + { + GSL_ERROR_VAL("Undefined order for Mathieu function", GSL_EINVAL, 0.0); + } + + switch (order) + { + case 1: + if (qq <= 4) + return (5 - 0.5*(qq + sqrt(5*qq*qq + 16*qq + 64))); /* Eqn. 35 */ + else + return asymptotic(order-1, qq); + break; + + case 2: + if (qq <= 5) + return (10 - sqrt(36 + qq*qq)); /* Eqn. 36 */ + else + return asymptotic(order-1, qq); + break; + + case 3: + if (qq <= 6.25) + { + c2 = qq - 8; /* Eqn. 37 */ + c1 = -128 - 16*qq - 2*qq*qq; + c0 = qq*qq*(8 - qq); + } + else + return asymptotic(order-1, qq); + break; + + default: + if (order < 70) + { + if (1.7*order > 2*sqrt(qq)) + { + /* Eqn. 30 */ + double n2 = (double)(order*order); + double n22 = (double)((n2 - 1)*(n2 - 1)); + double q2 = qq*qq; + double q4 = q2*q2; + approx = n2 + 0.5*q2/(n2 - 1); + approx += (5*n2 + 7)*q4/(32*n22*(n2 - 1)*(n2 - 4)); + approx += (9*n2*n2 + 58*n2 + 29)*q4*q2/ + (64*n22*n22*(n2 - 1)*(n2 - 4)*(n2 - 9)); + if (1.4*order < 2*sqrt(qq)) + { + approx += asymptotic(order-1, qq); + approx *= 0.5; + } + } + else + approx = asymptotic(order-1, qq); + + return approx; + } + else + return order*order; + } + + /* Solve the cubic x^3 + c2*x^2 + c1*x + c0 = 0 */ + approx = solve_cubic(c2, c1, c0); + + if ( approx < 0 && sqrt(qq) > 0.1*order ) + return asymptotic(order-1, qq); + else + return (order*order + fabs(approx)); +} + + +int gsl_sf_mathieu_a_e(int order, double qq, gsl_sf_result *result) +{ + int even_odd, nterms = 50, ii, counter = 0, maxcount = 1000; + int dir = 0; /* step direction for new search */ + double a1, a2, fa, fa1, dela, aa_orig, da = 0.025, aa; + double aa_approx; /* current approximation for solution */ + + + even_odd = 0; + if (order % 2 != 0) + even_odd = 1; + + /* If the argument is 0, then the coefficient is simply the square of + the order. */ + if (qq == 0) + { + result->val = order*order; + result->err = 0.0; + return GSL_SUCCESS; + } + + /* Use symmetry characteristics of the functions to handle cases with + negative order and/or argument q. See Abramowitz & Stegun, 20.8.3. */ + if (order < 0) + order *= -1; + if (qq < 0.0) + { + if (even_odd == 0) + return gsl_sf_mathieu_a_e(order, -qq, result); + else + return gsl_sf_mathieu_b_e(order, -qq, result); + } + + /* Compute an initial approximation for the characteristic value. */ + aa_approx = approx_c(order, qq); + + /* Save the original approximation for later comparison. */ + aa_orig = aa = aa_approx; + + /* Loop as long as the final value is not near the approximate value + (with a max limit to avoid potential infinite loop). */ + while (counter < maxcount) + { + a1 = aa + 0.001; + ii = 0; + if (even_odd == 0) + fa1 = ceer(order, qq, a1, nterms); + else + fa1 = ceor(order, qq, a1, nterms); + + for (;;) + { + if (even_odd == 0) + fa = ceer(order, qq, aa, nterms); + else + fa = ceor(order, qq, aa, nterms); + + a2 = a1; + a1 = aa; + + if (fa == fa1) + { + result->err = GSL_DBL_EPSILON; + break; + } + aa -= (aa - a2)/(fa - fa1)*fa; + dela = fabs(aa - a2); + if (dela < GSL_DBL_EPSILON) + { + result->err = GSL_DBL_EPSILON; + break; + } + if (ii > 40) + { + result->err = dela; + break; + } + fa1 = fa; + ii++; + } + + /* If the solution found is not near the original approximation, + tweak the approximate value, and try again. */ + if (fabs(aa - aa_orig) > (3 + 0.01*order*fabs(aa_orig)) || + (order > 10 && fabs(aa - aa_orig) > 1.5*order)) + { + counter++; + if (counter == maxcount) + { + result->err = fabs(aa - aa_orig); + break; + } + if (aa > aa_orig) + { + if (dir == 1) + da /= 2; + dir = -1; + } + else + { + if (dir == -1) + da /= 2; + dir = 1; + } + aa_approx += dir*da*counter; + aa = aa_approx; + + continue; + } + else + break; + } + + result->val = aa; + + /* If we went through the maximum number of retries and still didn't + find the solution, let us know. */ + if (counter == maxcount) + { + GSL_ERROR("Wrong characteristic Mathieu value", GSL_EFAILED); + } + + return GSL_SUCCESS; +} + + +int gsl_sf_mathieu_b_e(int order, double qq, gsl_sf_result *result) +{ + int even_odd, nterms = 50, ii, counter = 0, maxcount = 1000; + int dir = 0; /* step direction for new search */ + double a1, a2, fa, fa1, dela, aa_orig, da = 0.025, aa; + double aa_approx; /* current approximation for solution */ + + + even_odd = 0; + if (order % 2 != 0) + even_odd = 1; + + /* The order cannot be 0. */ + if (order == 0) + { + GSL_ERROR("Characteristic value undefined for order 0", GSL_EFAILED); + } + + /* If the argument is 0, then the coefficient is simply the square of + the order. */ + if (qq == 0) + { + result->val = order*order; + result->err = 0.0; + return GSL_SUCCESS; + } + + /* Use symmetry characteristics of the functions to handle cases with + negative order and/or argument q. See Abramowitz & Stegun, 20.8.3. */ + if (order < 0) + order *= -1; + if (qq < 0.0) + { + if (even_odd == 0) + return gsl_sf_mathieu_b_e(order, -qq, result); + else + return gsl_sf_mathieu_a_e(order, -qq, result); + } + + /* Compute an initial approximation for the characteristic value. */ + aa_approx = approx_s(order, qq); + + /* Save the original approximation for later comparison. */ + aa_orig = aa = aa_approx; + + /* Loop as long as the final value is not near the approximate value + (with a max limit to avoid potential infinite loop). */ + while (counter < maxcount) + { + a1 = aa + 0.001; + ii = 0; + if (even_odd == 0) + fa1 = seer(order, qq, a1, nterms); + else + fa1 = seor(order, qq, a1, nterms); + + for (;;) + { + if (even_odd == 0) + fa = seer(order, qq, aa, nterms); + else + fa = seor(order, qq, aa, nterms); + + a2 = a1; + a1 = aa; + + if (fa == fa1) + { + result->err = GSL_DBL_EPSILON; + break; + } + aa -= (aa - a2)/(fa - fa1)*fa; + dela = fabs(aa - a2); + if (dela < 1e-18) + { + result->err = GSL_DBL_EPSILON; + break; + } + if (ii > 40) + { + result->err = dela; + break; + } + fa1 = fa; + ii++; + } + + /* If the solution found is not near the original approximation, + tweak the approximate value, and try again. */ + if (fabs(aa - aa_orig) > (3 + 0.01*order*fabs(aa_orig)) || + (order > 10 && fabs(aa - aa_orig) > 1.5*order)) + { + counter++; + if (counter == maxcount) + { + result->err = fabs(aa - aa_orig); + break; + } + if (aa > aa_orig) + { + if (dir == 1) + da /= 2; + dir = -1; + } + else + { + if (dir == -1) + da /= 2; + dir = 1; + } + aa_approx += dir*da*counter; + aa = aa_approx; + + continue; + } + else + break; + } + + result->val = aa; + + /* If we went through the maximum number of retries and still didn't + find the solution, let us know. */ + if (counter == maxcount) + { + GSL_ERROR("Wrong characteristic Mathieu value", GSL_EFAILED); + } + + return GSL_SUCCESS; +} + + +/* Eigenvalue solutions for characteristic values below. */ + + +/* figi.c converted from EISPACK Fortran FIGI.F. + * + * given a nonsymmetric tridiagonal matrix such that the products + * of corresponding pairs of off-diagonal elements are all + * non-negative, this subroutine reduces it to a symmetric + * tridiagonal matrix with the same eigenvalues. if, further, + * a zero product only occurs when both factors are zero, + * the reduced matrix is similar to the original matrix. + * + * on input + * + * n is the order of the matrix. + * + * t contains the input matrix. its subdiagonal is + * stored in the last n-1 positions of the first column, + * its diagonal in the n positions of the second column, + * and its superdiagonal in the first n-1 positions of + * the third column. t(1,1) and t(n,3) are arbitrary. + * + * on output + * + * t is unaltered. + * + * d contains the diagonal elements of the symmetric matrix. + * + * e contains the subdiagonal elements of the symmetric + * matrix in its last n-1 positions. e(1) is not set. + * + * e2 contains the squares of the corresponding elements of e. + * e2 may coincide with e if the squares are not needed. + * + * ierr is set to + * zero for normal return, + * n+i if t(i,1)*t(i-1,3) is negative, + * -(3*n+i) if t(i,1)*t(i-1,3) is zero with one factor + * non-zero. in this case, the eigenvectors of + * the symmetric matrix are not simply related + * to those of t and should not be sought. + * + * questions and comments should be directed to burton s. garbow, + * mathematics and computer science div, argonne national laboratory + * + * this version dated august 1983. + */ +static int figi(int nn, double *tt, double *dd, double *ee, + double *e2) +{ + int ii; + + for (ii=0; iieven_order, odd_order = work->odd_order, + extra_values = work->extra_values, ii, jj; + int status; + double *tt = work->tt, *dd = work->dd, *ee = work->ee, *e2 = work->e2, + *zz = work->zz, *aa = work->aa; + gsl_matrix_view mat, evec; + gsl_vector_view eval; + gsl_eigen_symmv_workspace *wmat = work->wmat; + + if (order_max > work->size || order_max <= order_min || order_min < 0) + { + GSL_ERROR ("invalid range [order_min,order_max]", GSL_EINVAL); + } + + /* Convert the nonsymmetric tridiagonal matrix to a symmetric tridiagonal + form. */ + + tt[0] = 0.0; + tt[1] = 0.0; + tt[2] = qq; + for (ii=1; iieval, 0, even_order); + evec = gsl_matrix_submatrix(work->evec, 0, 0, even_order, even_order); + gsl_eigen_symmv(&mat.matrix, &eval.vector, &evec.matrix, wmat); + gsl_eigen_symmv_sort(&eval.vector, &evec.matrix, GSL_EIGEN_SORT_VAL_ASC); + + for (ii=0; iieval, 0, odd_order); + evec = gsl_matrix_submatrix(work->evec, 0, 0, odd_order, odd_order); + gsl_eigen_symmv(&mat.matrix, &eval.vector, &evec.matrix, wmat); + gsl_eigen_symmv_sort(&eval.vector, &evec.matrix, GSL_EIGEN_SORT_VAL_ASC); + + for (ii=0; iieven_order-1, odd_order = work->odd_order, + extra_values = work->extra_values, ii, jj; + double *zz = work->zz, *bb = work->bb; + gsl_matrix_view mat, evec; + gsl_vector_view eval; + gsl_eigen_symmv_workspace *wmat = work->wmat; + + if (order_max > work->size || order_max <= order_min || order_min < 0) + { + GSL_ERROR ("invalid range [order_min,order_max]", GSL_EINVAL); + } + + /* Fill the period \pi matrix. */ + for (ii=0; iieval, 0, even_order); + evec = gsl_matrix_submatrix(work->evec, 0, 0, even_order, even_order); + gsl_eigen_symmv(&mat.matrix, &eval.vector, &evec.matrix, wmat); + gsl_eigen_symmv_sort(&eval.vector, &evec.matrix, GSL_EIGEN_SORT_VAL_ASC); + + bb[0] = 0.0; + for (ii=0; iieval, 0, odd_order); + evec = gsl_matrix_submatrix(work->evec, 0, 0, odd_order, odd_order); + gsl_eigen_symmv(&mat.matrix, &eval.vector, &evec.matrix, wmat); + gsl_eigen_symmv_sort(&eval.vector, &evec.matrix, GSL_EIGEN_SORT_VAL_ASC); + + for (ii=0; ii +#include +#include +#include + + +/***************************************************************************** + * backward_recurse + * + * Purpose: + ****************************************************************************/ +static void backward_recurse_c(double aa, double qq, double xx, double *ff, + double *gx, int even_odd, int ni) +{ + int ii, nn; + double g1; + + + g1 = *gx; + ff[ni] = xx; + + if (even_odd == 0) + { + for (ii=0; ii GSL_SF_MATHIEU_COEFF) + return GSL_FAILURE; + + /* Handle the trivial case where q = 0. */ + if (qq == 0.0) + { + for (ii=0; ii GSL_SF_MATHIEU_COEFF) + return GSL_FAILURE; + + /* Handle the trivial case where q = 0. */ + if (qq == 0.0) + { + for (ii=0; ii +#include +#include +#include +#include +#include + + +int gsl_sf_mathieu_Mc_e(int kind, int order, double qq, double zz, + gsl_sf_result *result) +{ + int even_odd, kk, mm, status; + double maxerr = 1e-14, amax, pi = M_PI, fn, factor; + double coeff[GSL_SF_MATHIEU_COEFF], fc; + double j1c, z2c, j1pc, z2pc; + double u1, u2; + gsl_sf_result aa; + + + /* Check for out of bounds parameters. */ + if (qq <= 0.0) + { + GSL_ERROR("q must be greater than zero", GSL_EINVAL); + } + if (kind < 1 || kind > 2) + { + GSL_ERROR("kind must be 1 or 2", GSL_EINVAL); + } + + mm = 0; + amax = 0.0; + fn = 0.0; + u1 = sqrt(qq)*exp(-1.0*zz); + u2 = sqrt(qq)*exp(zz); + + even_odd = 0; + if (order % 2 != 0) + even_odd = 1; + + /* Compute the characteristic value. */ + status = gsl_sf_mathieu_a_e(order, qq, &aa); + if (status != GSL_SUCCESS) + { + return status; + } + + /* Compute the series coefficients. */ + status = gsl_sf_mathieu_a_coeff(order, qq, aa.val, coeff); + if (status != GSL_SUCCESS) + { + return status; + } + + if (even_odd == 0) + { + for (kk=0; kkval = fn; + result->err = 2.0*GSL_DBL_EPSILON; + factor = fabs(fn); + if (factor > 1.0) + result->err *= factor; + + return GSL_SUCCESS; +} + + +int gsl_sf_mathieu_Ms_e(int kind, int order, double qq, double zz, + gsl_sf_result *result) +{ + int even_odd, kk, mm, status; + double maxerr = 1e-14, amax, pi = M_PI, fn, factor; + double coeff[GSL_SF_MATHIEU_COEFF], fc; + double j1c, z2c, j1mc, z2mc, j1pc, z2pc; + double u1, u2; + gsl_sf_result aa; + + + /* Check for out of bounds parameters. */ + if (qq <= 0.0) + { + GSL_ERROR("q must be greater than zero", GSL_EINVAL); + } + if (kind < 1 || kind > 2) + { + GSL_ERROR("kind must be 1 or 2", GSL_EINVAL); + } + + /* Handle the trivial cases where order = 0. */ + if (order == 0) + { + result->val = 0.0; + result->err = 0.0; + return GSL_SUCCESS; + } + + mm = 0; + amax = 0.0; + fn = 0.0; + u1 = sqrt(qq)*exp(-1.0*zz); + u2 = sqrt(qq)*exp(zz); + + even_odd = 0; + if (order % 2 != 0) + even_odd = 1; + + /* Compute the characteristic value. */ + status = gsl_sf_mathieu_b_e(order, qq, &aa); + if (status != GSL_SUCCESS) + { + return status; + } + + /* Compute the series coefficients. */ + status = gsl_sf_mathieu_b_coeff(order, qq, aa.val, coeff); + if (status != GSL_SUCCESS) + { + return status; + } + + if (even_odd == 0) + { + for (kk=0; kkval = fn; + result->err = 2.0*GSL_DBL_EPSILON; + factor = fabs(fn); + if (factor > 1.0) + result->err *= factor; + + return GSL_SUCCESS; +} + + +int gsl_sf_mathieu_Mc_array(int kind, int nmin, int nmax, double qq, + double zz, gsl_sf_mathieu_workspace *work, + double result_array[]) +{ + int even_odd, order, ii, kk, mm, status; + double maxerr = 1e-14, amax, pi = M_PI, fn; + double coeff[GSL_SF_MATHIEU_COEFF], fc; + double j1c, z2c, j1pc, z2pc; + double u1, u2; + double *aa = work->aa; + + + /* Initialize the result array to zeroes. */ + for (ii=0; ii 2) + { + GSL_ERROR("kind must be 1 or 2", GSL_EINVAL); + } + + mm = 0; + amax = 0.0; + u1 = sqrt(qq)*exp(-1.0*zz); + u2 = sqrt(qq)*exp(zz); + + /* Compute all eigenvalues up to nmax. */ + gsl_sf_mathieu_a_array(0, nmax, qq, work, aa); + + for (ii=0, order=nmin; order<=nmax; ii++, order++) + { + fn = 0.0; + even_odd = 0; + if (order % 2 != 0) + even_odd = 1; + + /* Compute the series coefficients. */ + status = gsl_sf_mathieu_a_coeff(order, qq, aa[order], coeff); + if (status != GSL_SUCCESS) + { + return status; + } + + if (even_odd == 0) + { + for (kk=0; kkbb; + + + /* Initialize the result array to zeroes. */ + for (ii=0; ii 2) + { + GSL_ERROR("kind must be 1 or 2", GSL_EINVAL); + } + + mm = 0; + amax = 0.0; + u1 = sqrt(qq)*exp(-1.0*zz); + u2 = sqrt(qq)*exp(zz); + + /* Compute all eigenvalues up to nmax. */ + gsl_sf_mathieu_b_array(0, nmax, qq, work, bb); + + for (ii=0, order=nmin; order<=nmax; ii++, order++) + { + fn = 0.0; + even_odd = 0; + if (order % 2 != 0) + even_odd = 1; + + /* Handle the trivial cases where order = 0. */ + if (order == 0) + { + result_array[ii] = 0.0; + continue; + } + + /* Compute the series coefficients. */ + status = gsl_sf_mathieu_b_coeff(order, qq, bb[order], coeff); + if (status != GSL_SUCCESS) + { + return status; + } + + if (even_odd == 0) + { + for (kk=0; kk +#include +#include +#include +#include + + +gsl_sf_mathieu_workspace *gsl_sf_mathieu_alloc(const size_t nn, + const double qq) +{ + gsl_sf_mathieu_workspace *workspace; + unsigned int even_order = nn/2 + 1, odd_order = (nn + 1)/2, + extra_values; + + /* Compute the maximum number of extra terms required for 10^-18 root + accuracy for a given value of q (contributed by Brian Gladman). */ + extra_values = (int)(2.1*pow(fabs(qq), 0.37)) + 9; + extra_values += 20; /* additional fudge */ + + if (nn + 1 == 0) + { + GSL_ERROR_NULL("matrix dimension must be positive integer", GSL_EINVAL); + } + + workspace = + (gsl_sf_mathieu_workspace *)malloc(sizeof(gsl_sf_mathieu_workspace)); + if (workspace == NULL) + { + GSL_ERROR_NULL("failed to allocate space for workspace", GSL_ENOMEM); + } + + /* Extend matrices to ensure accuracy. */ + even_order += extra_values; + odd_order += extra_values; + + workspace->size = nn; + workspace->even_order = even_order; + workspace->odd_order = odd_order; + workspace->extra_values = extra_values; + + /* Allocate space for the characteristic values. */ + workspace->aa = (double *)malloc((nn+1)*sizeof(double)); + if (workspace->aa == NULL) + { + free(workspace); + GSL_ERROR_NULL("Error allocating memory for characteristic a values", + GSL_ENOMEM); + } + + workspace->bb = (double *)malloc((nn+1)*sizeof(double)); + if (workspace->bb == NULL) + { + free(workspace->aa); + free(workspace); + GSL_ERROR_NULL("Error allocating memory for characteristic b values", + GSL_ENOMEM); + } + + /* Since even_order is always >= odd_order, dimension the arrays for + even_order. */ + + workspace->dd = (double *)malloc(even_order*sizeof(double)); + if (workspace->dd == NULL) + { + free(workspace->aa); + free(workspace->bb); + free(workspace); + GSL_ERROR_NULL("failed to allocate space for diagonal", GSL_ENOMEM); + } + + workspace->ee = (double *)malloc(even_order*sizeof(double)); + if (workspace->ee == NULL) + { + free(workspace->dd); + free(workspace->aa); + free(workspace->bb); + free(workspace); + GSL_ERROR_NULL("failed to allocate space for diagonal", GSL_ENOMEM); + } + + workspace->tt = (double *)malloc(3*even_order*sizeof(double)); + if (workspace->tt == NULL) + { + free(workspace->ee); + free(workspace->dd); + free(workspace->aa); + free(workspace->bb); + free(workspace); + GSL_ERROR_NULL("failed to allocate space for diagonal", GSL_ENOMEM); + } + + workspace->e2 = (double *)malloc(even_order*sizeof(double)); + if (workspace->e2 == NULL) + { + free(workspace->tt); + free(workspace->ee); + free(workspace->dd); + free(workspace->aa); + free(workspace->bb); + free(workspace); + GSL_ERROR_NULL("failed to allocate space for diagonal", GSL_ENOMEM); + } + + workspace->zz = (double *)malloc(even_order*even_order*sizeof(double)); + if (workspace->zz == NULL) + { + free(workspace->e2); + free(workspace->tt); + free(workspace->ee); + free(workspace->dd); + free(workspace->aa); + free(workspace->bb); + free(workspace); + GSL_ERROR_NULL("failed to allocate space for diagonal", GSL_ENOMEM); + } + + workspace->eval = gsl_vector_alloc(even_order); + + if (workspace->eval == NULL) + { + free(workspace->zz); + free(workspace->e2); + free(workspace->tt); + free(workspace->ee); + free(workspace->dd); + free(workspace->aa); + free(workspace->bb); + free(workspace); + GSL_ERROR_NULL("failed to allocate space for eval", GSL_ENOMEM); + } + + workspace->evec = gsl_matrix_alloc(even_order, even_order); + + if (workspace->evec == NULL) + { + gsl_vector_free (workspace->eval); + free(workspace->zz); + free(workspace->e2); + free(workspace->tt); + free(workspace->ee); + free(workspace->dd); + free(workspace->aa); + free(workspace->bb); + free(workspace); + GSL_ERROR_NULL("failed to allocate space for evec", GSL_ENOMEM); + } + + workspace->wmat = gsl_eigen_symmv_alloc(even_order); + + if (workspace->wmat == NULL) + { + gsl_matrix_free (workspace->evec); + gsl_vector_free (workspace->eval); + free(workspace->zz); + free(workspace->e2); + free(workspace->tt); + free(workspace->ee); + free(workspace->dd); + free(workspace->aa); + free(workspace->bb); + free(workspace); + GSL_ERROR_NULL("failed to allocate space for wmat", GSL_ENOMEM); + } + + return workspace; +} + + +void gsl_sf_mathieu_free(gsl_sf_mathieu_workspace *workspace) +{ + RETURN_IF_NULL (workspace); + gsl_vector_free(workspace->eval); + gsl_matrix_free(workspace->evec); + gsl_eigen_symmv_free(workspace->wmat); + free(workspace->aa); + free(workspace->bb); + free(workspace->dd); + free(workspace->ee); + free(workspace->tt); + free(workspace->e2); + free(workspace->zz); + free(workspace); +} diff --git a/gsl-2.5/specfunc/mathieu_workspace.lo b/gsl-2.5/specfunc/mathieu_workspace.lo new file mode 100644 index 00000000..77442b82 --- /dev/null +++ b/gsl-2.5/specfunc/mathieu_workspace.lo @@ -0,0 +1,12 @@ +# mathieu_workspace.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/mathieu_workspace.o' + +# Name of the non-PIC object +non_pic_object='mathieu_workspace.o' + diff --git a/gsl-2.5/specfunc/poch.c b/gsl-2.5/specfunc/poch.c new file mode 100644 index 00000000..75fdba6c --- /dev/null +++ b/gsl-2.5/specfunc/poch.c @@ -0,0 +1,465 @@ +/* specfunc/poch.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * Copyright (C) 2009 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ + +#include +#include +#include +#include +#include +#include +#include +#include + +#include "error.h" + +static const double bern[21] = { + 0.0 /* no element 0 */, + +0.833333333333333333333333333333333e-01, + -0.138888888888888888888888888888888e-02, + +0.330687830687830687830687830687830e-04, + -0.826719576719576719576719576719576e-06, + +0.208767569878680989792100903212014e-07, + -0.528419013868749318484768220217955e-09, + +0.133825365306846788328269809751291e-10, + -0.338968029632258286683019539124944e-12, + +0.858606205627784456413590545042562e-14, + -0.217486869855806187304151642386591e-15, + +0.550900282836022951520265260890225e-17, + -0.139544646858125233407076862640635e-18, + +0.353470703962946747169322997780379e-20, + -0.895351742703754685040261131811274e-22, + +0.226795245233768306031095073886816e-23, + -0.574472439520264523834847971943400e-24, + +0.145517247561486490186626486727132e-26, + -0.368599494066531017818178247990866e-28, + +0.933673425709504467203255515278562e-30, + -0.236502241570062993455963519636983e-31 +}; + + +/* ((a)_x - 1)/x in the "small x" region where + * cancellation must be controlled. + * + * Based on SLATEC DPOCH1(). + */ +/* +C When ABS(X) is so small that substantial cancellation will occur if +C the straightforward formula is used, we use an expansion due +C to Fields and discussed by Y. L. Luke, The Special Functions and Their +C Approximations, Vol. 1, Academic Press, 1969, page 34. +C +C The ratio POCH(A,X) = GAMMA(A+X)/GAMMA(A) is written by Luke as +C (A+(X-1)/2)**X * polynomial in (A+(X-1)/2)**(-2) . +C In order to maintain significance in POCH1, we write for positive a +C (A+(X-1)/2)**X = EXP(X*LOG(A+(X-1)/2)) = EXP(Q) +C = 1.0 + Q*EXPREL(Q) . +C Likewise the polynomial is written +C POLY = 1.0 + X*POLY1(A,X) . +C Thus, +C POCH1(A,X) = (POCH(A,X) - 1) / X +C = EXPREL(Q)*(Q/X + Q*POLY1(A,X)) + POLY1(A,X) +C +*/ +static +int +pochrel_smallx(const double a, const double x, gsl_sf_result * result) +{ + /* + SQTBIG = 1.0D0/SQRT(24.0D0*D1MACH(1)) + ALNEPS = LOG(D1MACH(3)) + */ + const double SQTBIG = 1.0/(2.0*M_SQRT2*M_SQRT3*GSL_SQRT_DBL_MIN); + const double ALNEPS = GSL_LOG_DBL_EPSILON - M_LN2; + + if(x == 0.0) { + return gsl_sf_psi_e(a, result); + } + else { + const double bp = ( (a < -0.5) ? 1.0-a-x : a ); + const int incr = ( (bp < 10.0) ? 11.0-bp : 0 ); + const double b = bp + incr; + double dpoch1; + gsl_sf_result dexprl; + int stat_dexprl; + int i; + + double var = b + 0.5*(x-1.0); + double alnvar = log(var); + double q = x*alnvar; + + double poly1 = 0.0; + + if(var < SQTBIG) { + const int nterms = (int)(-0.5*ALNEPS/alnvar + 1.0); + const double var2 = (1.0/var)/var; + const double rho = 0.5 * (x + 1.0); + double term = var2; + double gbern[24]; + int k, j; + + gbern[1] = 1.0; + gbern[2] = -rho/12.0; + poly1 = gbern[2] * term; + + if(nterms > 20) { + /* NTERMS IS TOO BIG, MAYBE D1MACH(3) IS BAD */ + /* nterms = 20; */ + result->val = 0.0; + result->err = 0.0; + GSL_ERROR ("error", GSL_ESANITY); + } + + for(k=2; k<=nterms; k++) { + double gbk = 0.0; + for(j=1; j<=k; j++) { + gbk += bern[k-j+1]*gbern[j]; + } + gbern[k+1] = -rho*gbk/k; + + term *= (2*k-2-x)*(2*k-1-x)*var2; + poly1 += gbern[k+1]*term; + } + } + + stat_dexprl = gsl_sf_expm1_e(q, &dexprl); + if(stat_dexprl != GSL_SUCCESS) { + result->val = 0.0; + result->err = 0.0; + return stat_dexprl; + } + dexprl.val = dexprl.val/q; + poly1 *= (x - 1.0); + dpoch1 = dexprl.val * (alnvar + q * poly1) + poly1; + + for(i=incr-1; i >= 0; i--) { + /* + C WE HAVE DPOCH1(B,X), BUT BP IS SMALL, SO WE USE BACKWARDS RECURSION + C TO OBTAIN DPOCH1(BP,X). + */ + double binv = 1.0/(bp+i); + dpoch1 = (dpoch1 - binv) / (1.0 + x*binv); + } + + if(bp == a) { + result->val = dpoch1; + result->err = 2.0 * GSL_DBL_EPSILON * (fabs(incr) + 1.0) * fabs(result->val); + return GSL_SUCCESS; + } + else { + /* + C WE HAVE DPOCH1(BP,X), BUT A IS LT -0.5. WE THEREFORE USE A + C REFLECTION FORMULA TO OBTAIN DPOCH1(A,X). + */ + double sinpxx = sin(M_PI*x)/x; + double sinpx2 = sin(0.5*M_PI*x); + double t1 = sinpxx/tan(M_PI*b); + double t2 = 2.0*sinpx2*(sinpx2/x); + double trig = t1 - t2; + result->val = dpoch1 * (1.0 + x*trig) + trig; + result->err = (fabs(dpoch1*x) + 1.0) * GSL_DBL_EPSILON * (fabs(t1) + fabs(t2)); + result->err += 2.0 * GSL_DBL_EPSILON * (fabs(incr) + 1.0) * fabs(result->val); + return GSL_SUCCESS; + } + } +} + + +/* Assumes a>0 and a+x>0. + */ +static +int +lnpoch_pos(const double a, const double x, gsl_sf_result * result) +{ + double absx = fabs(x); + + if(absx > 0.1*a || absx*log(GSL_MAX_DBL(a,2.0)) > 0.1) { + if(a < GSL_SF_GAMMA_XMAX && a+x < GSL_SF_GAMMA_XMAX) { + /* If we can do it by calculating the gamma functions + * directly, then that will be more accurate than + * doing the subtraction of the logs. + */ + gsl_sf_result g1; + gsl_sf_result g2; + gsl_sf_gammainv_e(a, &g1); + gsl_sf_gammainv_e(a+x, &g2); + result->val = -log(g2.val/g1.val); + result->err = g1.err/fabs(g1.val) + g2.err/fabs(g2.val); + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else { + /* Otherwise we must do the subtraction. + */ + gsl_sf_result lg1; + gsl_sf_result lg2; + int stat_1 = gsl_sf_lngamma_e(a, &lg1); + int stat_2 = gsl_sf_lngamma_e(a+x, &lg2); + result->val = lg2.val - lg1.val; + result->err = lg2.err + lg1.err; + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_ERROR_SELECT_2(stat_1, stat_2); + } + } + else if(absx < 0.1*a && a > 15.0) { + /* Be careful about the implied subtraction. + * Note that both a+x and and a must be + * large here since a is not small + * and x is not relatively large. + * So we calculate using Stirling for Log[Gamma(z)]. + * + * Log[Gamma(a+x)/Gamma(a)] = x(Log[a]-1) + (x+a-1/2)Log[1+x/a] + * + (1/(1+eps) - 1) / (12 a) + * - (1/(1+eps)^3 - 1) / (360 a^3) + * + (1/(1+eps)^5 - 1) / (1260 a^5) + * - (1/(1+eps)^7 - 1) / (1680 a^7) + * + ... + */ + const double eps = x/a; + const double den = 1.0 + eps; + const double d3 = den*den*den; + const double d5 = d3*den*den; + const double d7 = d5*den*den; + const double c1 = -eps/den; + const double c3 = -eps*(3.0+eps*(3.0+eps))/d3; + const double c5 = -eps*(5.0+eps*(10.0+eps*(10.0+eps*(5.0+eps))))/d5; + const double c7 = -eps*(7.0+eps*(21.0+eps*(35.0+eps*(35.0+eps*(21.0+eps*(7.0+eps))))))/d7; + const double p8 = gsl_sf_pow_int(1.0+eps,8); + const double c8 = 1.0/p8 - 1.0; /* these need not */ + const double c9 = 1.0/(p8*(1.0+eps)) - 1.0; /* be very accurate */ + const double a4 = a*a*a*a; + const double a6 = a4*a*a; + const double ser_1 = c1 + c3/(30.0*a*a) + c5/(105.0*a4) + c7/(140.0*a6); + const double ser_2 = c8/(99.0*a6*a*a) - 691.0/360360.0 * c9/(a6*a4); + const double ser = (ser_1 + ser_2)/ (12.0*a); + + double term1 = x * log(a/M_E); + double term2; + gsl_sf_result ln_1peps; + gsl_sf_log_1plusx_e(eps, &ln_1peps); /* log(1 + x/a) */ + term2 = (x + a - 0.5) * ln_1peps.val; + + result->val = term1 + term2 + ser; + result->err = GSL_DBL_EPSILON*fabs(term1); + result->err += fabs((x + a - 0.5)*ln_1peps.err); + result->err += fabs(ln_1peps.val) * GSL_DBL_EPSILON * (fabs(x) + fabs(a) + 0.5); + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else { + gsl_sf_result poch_rel; + int stat_p = pochrel_smallx(a, x, &poch_rel); + double eps = x*poch_rel.val; + int stat_e = gsl_sf_log_1plusx_e(eps, result); + result->err = 2.0 * fabs(x * poch_rel.err / (1.0 + eps)); + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_ERROR_SELECT_2(stat_e, stat_p); + } +} + + +/*-*-*-*-*-*-*-*-*-*-*-* Functions with Error Codes *-*-*-*-*-*-*-*-*-*-*-*/ + +int +gsl_sf_lnpoch_e(const double a, const double x, gsl_sf_result * result) +{ + /* CHECK_POINTER(result) */ + + if(a <= 0.0 || a+x <= 0.0) { + DOMAIN_ERROR(result); + } + else if(x == 0.0) { + result->val = 0.0; + result->err = 0.0; + return GSL_SUCCESS; + } + else { + return lnpoch_pos(a, x, result); + } +} + + +int +gsl_sf_lnpoch_sgn_e(const double a, const double x, + gsl_sf_result * result, double * sgn) +{ + if(x == 0.0) { + *sgn = 1.0; + result->val = 0.0; + result->err = 0.0; + return GSL_SUCCESS; + } + else if(a > 0.0 && a+x > 0.0) { + *sgn = 1.0; + return lnpoch_pos(a, x, result); + } + else if (a <= 0 && a == floor(a)) { + /* Special cases for infinite denominator Gamma(a) */ + if (a + x < 0 && x == floor(x)) { + /* Handle the case where both a and a+x are negative integers. */ + gsl_sf_result result_pos; + /* Use the reflection formula AMS6.1.17 + poch(-a,-x) = (-1)^x (a/(a+x)) 1/poch(a,x) */ + int stat = lnpoch_pos (-a, -x, &result_pos); + double f = log (a / (a + x)); + double s = (fmod(x, 2) == 0) ? 1 : -1; + result->val = f - result_pos.val; + result->err = result_pos.err + 2.0 * GSL_DBL_EPSILON * f; + *sgn = s; + return stat; + } else if (a + x == 0) { + /* Handle a+x = 0 i.e. Gamma(0)/Gamma(a) */ + /* poch (-a,a) == (-1)^a Gamma(a+1) */ + int stat = gsl_sf_lngamma_sgn_e (-a + 1, result, sgn); + double s = (fmod(-a, 2) == 0) ? 1 : -1; + *sgn *= s; + return stat; + } else { + /* Handle finite numerator, Gamma(a+x) for a+x != 0 or neg int */ + result->val = GSL_NEGINF; + result->err = 0.0; + *sgn = 1; + return GSL_SUCCESS; + } + } else if(a < 0.0 && a+x < 0.0) { + /* Reduce to positive case using reflection. + */ + double sin_1 = sin(M_PI * (1.0 - a)); + double sin_2 = sin(M_PI * (1.0 - a - x)); + if(sin_1 == 0.0 || sin_2 == 0.0) { + *sgn = 0.0; + DOMAIN_ERROR(result); + } + else { + gsl_sf_result lnp_pos; + int stat_pp = lnpoch_pos(1.0-a, -x, &lnp_pos); + double lnterm = log(fabs(sin_1/sin_2)); + result->val = lnterm - lnp_pos.val; + result->err = lnp_pos.err; + result->err += 2.0 * GSL_DBL_EPSILON * (fabs(1.0-a) + fabs(1.0-a-x)) * fabs(lnterm); + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + *sgn = GSL_SIGN(sin_1*sin_2); + return stat_pp; + } + } + else { + /* Evaluate gamma ratio directly. + */ + gsl_sf_result lg_apn; + gsl_sf_result lg_a; + double s_apn, s_a; + int stat_apn = gsl_sf_lngamma_sgn_e(a+x, &lg_apn, &s_apn); + int stat_a = gsl_sf_lngamma_sgn_e(a, &lg_a, &s_a); + if(stat_apn == GSL_SUCCESS && stat_a == GSL_SUCCESS) { + result->val = lg_apn.val - lg_a.val; + result->err = lg_apn.err + lg_a.err; + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + *sgn = s_a * s_apn; + return GSL_SUCCESS; + } + else if(stat_apn == GSL_EDOM || stat_a == GSL_EDOM){ + *sgn = 0.0; + DOMAIN_ERROR(result); + } + else { + result->val = 0.0; + result->err = 0.0; + *sgn = 0.0; + return GSL_FAILURE; + } + } +} + + +int +gsl_sf_poch_e(const double a, const double x, gsl_sf_result * result) +{ + /* CHECK_POINTER(result) */ + + if(x == 0.0) { + result->val = 1.0; + result->err = 0.0; + return GSL_SUCCESS; + } else { + gsl_sf_result lnpoch; + double sgn; + int stat_lnpoch = gsl_sf_lnpoch_sgn_e(a, x, &lnpoch, &sgn); + if (lnpoch.val == GSL_NEGINF) { + result->val = 0; + result->err = 0; + return stat_lnpoch; + } else { + int stat_exp = gsl_sf_exp_err_e(lnpoch.val, lnpoch.err, result); + result->val *= sgn; + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_ERROR_SELECT_2(stat_exp, stat_lnpoch); + } + } +} + + +int +gsl_sf_pochrel_e(const double a, const double x, gsl_sf_result * result) +{ + const double absx = fabs(x); + const double absa = fabs(a); + + /* CHECK_POINTER(result) */ + + if(absx > 0.1*absa || absx*log(GSL_MAX(absa,2.0)) > 0.1) { + gsl_sf_result lnpoch; + double sgn; + int stat_poch = gsl_sf_lnpoch_sgn_e(a, x, &lnpoch, &sgn); + if(lnpoch.val > GSL_LOG_DBL_MAX) { + OVERFLOW_ERROR(result); + } + else { + const double el = exp(lnpoch.val); + result->val = (sgn*el - 1.0)/x; + result->err = fabs(result->val) * (lnpoch.err + 2.0 * GSL_DBL_EPSILON); + result->err += 2.0 * GSL_DBL_EPSILON * (fabs(sgn*el) + 1.0) / fabs(x); + return stat_poch; + } + } + else { + return pochrel_smallx(a, x, result); + } +} + + +/*-*-*-*-*-*-*-*-*-* Functions w/ Natural Prototypes *-*-*-*-*-*-*-*-*-*-*/ + +#include "eval.h" + +double gsl_sf_lnpoch(const double a, const double x) +{ + EVAL_RESULT(gsl_sf_lnpoch_e(a, x, &result)); +} + +double gsl_sf_poch(const double a, const double x) +{ + EVAL_RESULT(gsl_sf_poch_e(a, x, &result)); +} + +double gsl_sf_pochrel(const double a, const double x) +{ + EVAL_RESULT(gsl_sf_pochrel_e(a, x, &result)); +} diff --git a/gsl-2.5/specfunc/poch.lo b/gsl-2.5/specfunc/poch.lo new file mode 100644 index 00000000..f4b97f85 --- /dev/null +++ b/gsl-2.5/specfunc/poch.lo @@ -0,0 +1,12 @@ +# poch.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/poch.o' + +# Name of the non-PIC object +non_pic_object='poch.o' + diff --git a/gsl-2.5/specfunc/pow_int.c b/gsl-2.5/specfunc/pow_int.c new file mode 100644 index 00000000..a81d8ebc --- /dev/null +++ b/gsl-2.5/specfunc/pow_int.c @@ -0,0 +1,74 @@ +/* specfunc/pow_int.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ + +#include +#include +#include +#include + + +/*-*-*-*-*-*-*-*-*-*-*-* Functions w/ Error handling *-*-*-*-*-*-*-*-*-*-*-*/ + +int gsl_sf_pow_int_e(double x, int n, gsl_sf_result * result) +{ + double value = 1.0; + int count = 0; + + /* CHECK_POINTER(result) */ + + + if(n < 0) { + n = -n; + + if(x == 0.0) { + double u = 1.0 / x; + result->val = (n % 2) ? u : (u * u) ; /* correct sign of infinity */ + result->err = GSL_POSINF; + GSL_ERROR ("overflow", GSL_EOVRFLW); + } + + x = 1.0/x; + } + + /* repeated squaring method + * returns 0.0^0 = 1.0, so continuous in x + */ + do { + if(GSL_IS_ODD(n)) value *= x; + n >>= 1; + x *= x; + ++count; + } while (n); + + result->val = value; + result->err = 2.0 * GSL_DBL_EPSILON * (count + 1.0) * fabs(value); + + return GSL_SUCCESS; +} + +/*-*-*-*-*-*-*-*-*-* Functions w/ Natural Prototypes *-*-*-*-*-*-*-*-*-*-*/ + +#include "eval.h" + +double gsl_sf_pow_int(const double x, const int n) +{ + EVAL_RESULT(gsl_sf_pow_int_e(x, n, &result)); +} diff --git a/gsl-2.5/specfunc/pow_int.lo b/gsl-2.5/specfunc/pow_int.lo new file mode 100644 index 00000000..e1ea758c --- /dev/null +++ b/gsl-2.5/specfunc/pow_int.lo @@ -0,0 +1,12 @@ +# pow_int.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/pow_int.o' + +# Name of the non-PIC object +non_pic_object='pow_int.o' + diff --git a/gsl-2.5/specfunc/psi.c b/gsl-2.5/specfunc/psi.c new file mode 100644 index 00000000..546ec773 --- /dev/null +++ b/gsl-2.5/specfunc/psi.c @@ -0,0 +1,866 @@ +/* specfunc/psi.c + * + * Copyright (C) 2007 Brian Gough + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2004, 2005, 2006 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ + +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#include "error.h" + +#include "chebyshev.h" +#include "cheb_eval.c" + +/*-*-*-*-*-*-*-*-*-*-*-* Private Section *-*-*-*-*-*-*-*-*-*-*-*/ + + +/* Chebyshev fit for f(y) = Re(Psi(1+Iy)) + M_EULER - y^2/(1+y^2) - y^2/(2(4+y^2)) + * 1 < y < 10 + * ==> + * y(x) = (9x + 11)/2, -1 < x < 1 + * x(y) = (2y - 11)/9 + * + * g(x) := f(y(x)) + */ +static double r1py_data[] = { + 1.59888328244976954803168395603, + 0.67905625353213463845115658455, + -0.068485802980122530009506482524, + -0.005788184183095866792008831182, + 0.008511258167108615980419855648, + -0.004042656134699693434334556409, + 0.001352328406159402601778462956, + -0.000311646563930660566674525382, + 0.000018507563785249135437219139, + 0.000028348705427529850296492146, + -0.000019487536014574535567541960, + 8.0709788710834469408621587335e-06, + -2.2983564321340518037060346561e-06, + 3.0506629599604749843855962658e-07, + 1.3042238632418364610774284846e-07, + -1.2308657181048950589464690208e-07, + 5.7710855710682427240667414345e-08, + -1.8275559342450963966092636354e-08, + 3.1020471300626589420759518930e-09, + 6.8989327480593812470039430640e-10, + -8.7182290258923059852334818997e-10, + 4.4069147710243611798213548777e-10, + -1.4727311099198535963467200277e-10, + 2.7589682523262644748825844248e-11, + 4.1871826756975856411554363568e-12, + -6.5673460487260087541400767340e-12, + 3.4487900886723214020103638000e-12, + -1.1807251417448690607973794078e-12, + 2.3798314343969589258709315574e-13, + 2.1663630410818831824259465821e-15 +}; +static cheb_series r1py_cs = { + r1py_data, + 29, + -1,1, + 18 +}; + + +/* Chebyshev fits from SLATEC code for psi(x) + + Series for PSI on the interval 0. to 1.00000D+00 + with weighted error 2.03E-17 + log weighted error 16.69 + significant figures required 16.39 + decimal places required 17.37 + + Series for APSI on the interval 0. to 2.50000D-01 + with weighted error 5.54E-17 + log weighted error 16.26 + significant figures required 14.42 + decimal places required 16.86 + +*/ + +static double psics_data[23] = { + -.038057080835217922, + .491415393029387130, + -.056815747821244730, + .008357821225914313, + -.001333232857994342, + .000220313287069308, + -.000037040238178456, + .000006283793654854, + -.000001071263908506, + .000000183128394654, + -.000000031353509361, + .000000005372808776, + -.000000000921168141, + .000000000157981265, + -.000000000027098646, + .000000000004648722, + -.000000000000797527, + .000000000000136827, + -.000000000000023475, + .000000000000004027, + -.000000000000000691, + .000000000000000118, + -.000000000000000020 +}; +static cheb_series psi_cs = { + psics_data, + 22, + -1, 1, + 17 +}; + +static double apsics_data[16] = { + -.0204749044678185, + -.0101801271534859, + .0000559718725387, + -.0000012917176570, + .0000000572858606, + -.0000000038213539, + .0000000003397434, + -.0000000000374838, + .0000000000048990, + -.0000000000007344, + .0000000000001233, + -.0000000000000228, + .0000000000000045, + -.0000000000000009, + .0000000000000002, + -.0000000000000000 +}; +static cheb_series apsi_cs = { + apsics_data, + 15, + -1, 1, + 9 +}; + +#define PSI_TABLE_NMAX 100 +static double psi_table[PSI_TABLE_NMAX+1] = { + 0.0, /* Infinity */ /* psi(0) */ + -M_EULER, /* psi(1) */ + 0.42278433509846713939348790992, /* ... */ + 0.92278433509846713939348790992, + 1.25611766843180047272682124325, + 1.50611766843180047272682124325, + 1.70611766843180047272682124325, + 1.87278433509846713939348790992, + 2.01564147795560999653634505277, + 2.14064147795560999653634505277, + 2.25175258906672110764745616389, + 2.35175258906672110764745616389, + 2.44266167997581201673836525479, + 2.52599501330914535007169858813, + 2.60291809023222227314862166505, + 2.67434666166079370172005023648, + 2.74101332832746036838671690315, + 2.80351332832746036838671690315, + 2.86233685773922507426906984432, + 2.91789241329478062982462539988, + 2.97052399224214905087725697883, + 3.02052399224214905087725697883, + 3.06814303986119666992487602645, + 3.11359758531574212447033057190, + 3.15707584618530734186163491973, + 3.1987425128519740085283015864, + 3.2387425128519740085283015864, + 3.2772040513135124700667631249, + 3.3142410883505495071038001619, + 3.3499553740648352213895144476, + 3.3844381326855248765619282407, + 3.4177714660188582098952615740, + 3.4500295305349872421533260902, + 3.4812795305349872421533260902, + 3.5115825608380175451836291205, + 3.5409943255438998981248055911, + 3.5695657541153284695533770196, + 3.5973435318931062473311547974, + 3.6243705589201332743581818244, + 3.6506863483938174848844976139, + 3.6763273740348431259101386396, + 3.7013273740348431259101386396, + 3.7257176179372821503003825420, + 3.7495271417468059598241920658, + 3.7727829557002943319172153216, + 3.7955102284275670591899425943, + 3.8177324506497892814121648166, + 3.8394715810845718901078169905, + 3.8607481768292527411716467777, + 3.8815815101625860745049801110, + 3.9019896734278921969539597029, + 3.9219896734278921969539597029, + 3.9415975165651470989147440166, + 3.9608282857959163296839747858, + 3.9796962103242182164764276160, + 3.9982147288427367349949461345, + 4.0163965470245549168131279527, + 4.0342536898816977739559850956, + 4.0517975495308205809735289552, + 4.0690389288411654085597358518, + 4.0859880813835382899156680552, + 4.1026547480502049565823347218, + 4.1190481906731557762544658694, + 4.1351772229312202923834981274, + 4.1510502388042361653993711433, + 4.1666752388042361653993711433, + 4.1820598541888515500147557587, + 4.1972113693403667015299072739, + 4.2121367424746950597388624977, + 4.2268426248276362362094507330, + 4.2413353784508246420065521823, + 4.2556210927365389277208378966, + 4.2697055997787924488475984600, + 4.2835944886676813377364873489, + 4.2972931188046676391063503626, + 4.3108066323181811526198638761, + 4.3241399656515144859531972094, + 4.3372978603883565912163551041, + 4.3502848733753695782293421171, + 4.3631053861958823987421626300, + 4.3757636140439836645649474401, + 4.3882636140439836645649474401, + 4.4006092930563293435772931191, + 4.4128044150075488557724150703, + 4.4248526077786331931218126607, + 4.4367573696833950978837174226, + 4.4485220755657480390601880108, + 4.4601499825424922251066996387, + 4.4716442354160554434975042364, + 4.4830078717796918071338678728, + 4.4942438268358715824147667492, + 4.5053549379469826935258778603, + 4.5163439489359936825368668713, + 4.5272135141533849868846929582, + 4.5379662023254279976373811303, + 4.5486045001977684231692960239, + 4.5591308159872421073798223397, + 4.5695474826539087740464890064, + 4.5798567610044242379640147796, + 4.5900608426370772991885045755, + 4.6001618527380874001986055856 +}; + + +#define PSI_1_TABLE_NMAX 100 +static double psi_1_table[PSI_1_TABLE_NMAX+1] = { + 0.0, /* Infinity */ /* psi(1,0) */ + M_PI*M_PI/6.0, /* psi(1,1) */ + 0.644934066848226436472415, /* ... */ + 0.394934066848226436472415, + 0.2838229557371153253613041, + 0.2213229557371153253613041, + 0.1813229557371153253613041, + 0.1535451779593375475835263, + 0.1331370146940314251345467, + 0.1175120146940314251345467, + 0.1051663356816857461222010, + 0.0951663356816857461222010, + 0.0869018728717683907503002, + 0.0799574284273239463058557, + 0.0740402686640103368384001, + 0.0689382278476838062261552, + 0.0644937834032393617817108, + 0.0605875334032393617817108, + 0.0571273257907826143768665, + 0.0540409060376961946237801, + 0.0512708229352031198315363, + 0.0487708229352031198315363, + 0.0465032492390579951149830, + 0.0444371335365786562720078, + 0.0425467743683366902984728, + 0.0408106632572255791873617, + 0.0392106632572255791873617, + 0.0377313733163971768204978, + 0.0363596312039143235969038, + 0.0350841209998326909438426, + 0.0338950603577399442137594, + 0.0327839492466288331026483, + 0.0317433665203020901265817, + 0.03076680402030209012658168, + 0.02984853037475571730748159, + 0.02898347847164153045627052, + 0.02816715194102928555831133, + 0.02739554700275768062003973, + 0.02666508681283803124093089, + 0.02597256603721476254286995, + 0.02531510384129102815759710, + 0.02469010384129102815759710, + 0.02409521984367056414807896, + 0.02352832641963428296894063, + 0.02298749353699501850166102, + 0.02247096461137518379091722, + 0.02197713745088135663042339, + 0.02150454765882086513703965, + 0.02105185413233829383780923, + 0.02061782635456051606003145, + 0.02020133322669712580597065, + 0.01980133322669712580597065, + 0.01941686571420193164987683, + 0.01904704322899483105816086, + 0.01869104465298913508094477, + 0.01834810912486842177504628, + 0.01801753061247172756017024, + 0.01769865306145131939690494, + 0.01739086605006319997554452, + 0.01709360088954001329302371, + 0.01680632711763538818529605, + 0.01652854933985761040751827, + 0.01625980437882562975715546, + 0.01599965869724394401313881, + 0.01574770606433893015574400, + 0.01550356543933893015574400, + 0.01526687904880638577704578, + 0.01503731063741979257227076, + 0.01481454387422086185273411, + 0.01459828089844231513993134, + 0.01438824099085987447620523, + 0.01418415935820681325171544, + 0.01398578601958352422176106, + 0.01379288478501562298719316, + 0.01360523231738567365335942, + 0.01342261726990576130858221, + 0.01324483949212798353080444, + 0.01307170929822216635628920, + 0.01290304679189732236910755, + 0.01273868124291638877278934, + 0.01257845051066194236996928, + 0.01242220051066194236996928, + 0.01226978472038606978956995, + 0.01212106372098095378719041, + 0.01197590477193174490346273, + 0.01183418141592267460867815, + 0.01169577311142440471248438, + 0.01156056489076458859566448, + 0.01142844704164317229232189, + 0.01129931481023821361463594, + 0.01117306812421372175754719, + 0.01104961133409026496742374, + 0.01092885297157366069257770, + 0.01081070552355853781923177, + 0.01069508522063334415522437, + 0.01058191183901270133041676, + 0.01047110851491297833872701, + 0.01036260157046853389428257, + 0.01025632035036012704977199, /* ... */ + 0.01015219706839427948625679, /* psi(1,99) */ + 0.01005016666333357139524567 /* psi(1,100) */ +}; + + +/* digamma for x both positive and negative; we do both + * cases here because of the way we use even/odd parts + * of the function + */ +static int +psi_x(const double x, gsl_sf_result * result) +{ + const double y = fabs(x); + + if(x == 0.0 || x == -1.0 || x == -2.0) { + DOMAIN_ERROR(result); + } + else if(y >= 2.0) { + const double t = 8.0/(y*y)-1.0; + gsl_sf_result result_c; + cheb_eval_e(&apsi_cs, t, &result_c); + if(x < 0.0) { + const double s = sin(M_PI*x); + const double c = cos(M_PI*x); + if(fabs(s) < 2.0*GSL_SQRT_DBL_MIN) { + DOMAIN_ERROR(result); + } + else { + result->val = log(y) - 0.5/x + result_c.val - M_PI * c/s; + result->err = M_PI*fabs(x)*GSL_DBL_EPSILON/(s*s); + result->err += result_c.err; + result->err += GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + } + else { + result->val = log(y) - 0.5/x + result_c.val; + result->err = result_c.err; + result->err += GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + } + else { /* -2 < x < 2 */ + gsl_sf_result result_c; + + if(x < -1.0) { /* x = -2 + v */ + const double v = x + 2.0; + const double t1 = 1.0/x; + const double t2 = 1.0/(x+1.0); + const double t3 = 1.0/v; + cheb_eval_e(&psi_cs, 2.0*v-1.0, &result_c); + + result->val = -(t1 + t2 + t3) + result_c.val; + result->err = GSL_DBL_EPSILON * (fabs(t1) + fabs(x/(t2*t2)) + fabs(x/(t3*t3))); + result->err += result_c.err; + result->err += GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else if(x < 0.0) { /* x = -1 + v */ + const double v = x + 1.0; + const double t1 = 1.0/x; + const double t2 = 1.0/v; + cheb_eval_e(&psi_cs, 2.0*v-1.0, &result_c); + + result->val = -(t1 + t2) + result_c.val; + result->err = GSL_DBL_EPSILON * (fabs(t1) + fabs(x/(t2*t2))); + result->err += result_c.err; + result->err += GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else if(x < 1.0) { /* x = v */ + const double t1 = 1.0/x; + cheb_eval_e(&psi_cs, 2.0*x-1.0, &result_c); + + result->val = -t1 + result_c.val; + result->err = GSL_DBL_EPSILON * t1; + result->err += result_c.err; + result->err += GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else { /* x = 1 + v */ + const double v = x - 1.0; + return cheb_eval_e(&psi_cs, 2.0*v-1.0, result); + } + } +} + + +/* psi(z) for large |z| in the right half-plane; [Abramowitz + Stegun, 6.3.18] */ +static +gsl_complex +psi_complex_asymp(gsl_complex z) +{ + /* coefficients in the asymptotic expansion for large z; + * let w = z^(-2) and write the expression in the form + * + * ln(z) - 1/(2z) - 1/12 w (1 + c1 w + c2 w + c3 w + ... ) + */ + static const double c1 = -0.1; + static const double c2 = 1.0/21.0; + static const double c3 = -0.05; + + gsl_complex zi = gsl_complex_inverse(z); + gsl_complex w = gsl_complex_mul(zi, zi); + gsl_complex cs; + + /* Horner method evaluation of term in parentheses */ + gsl_complex sum; + sum = gsl_complex_mul_real(w, c3/c2); + sum = gsl_complex_add_real(sum, 1.0); + sum = gsl_complex_mul_real(sum, c2/c1); + sum = gsl_complex_mul(sum, w); + sum = gsl_complex_add_real(sum, 1.0); + sum = gsl_complex_mul_real(sum, c1); + sum = gsl_complex_mul(sum, w); + sum = gsl_complex_add_real(sum, 1.0); + + /* correction added to log(z) */ + cs = gsl_complex_mul(sum, w); + cs = gsl_complex_mul_real(cs, -1.0/12.0); + cs = gsl_complex_add(cs, gsl_complex_mul_real(zi, -0.5)); + + return gsl_complex_add(gsl_complex_log(z), cs); +} + + + +/* psi(z) for complex z in the right half-plane */ +static int +psi_complex_rhp( + gsl_complex z, + gsl_sf_result * result_re, + gsl_sf_result * result_im + ) +{ + int n_recurse = 0; + int i; + gsl_complex a; + + if(GSL_REAL(z) == 0.0 && GSL_IMAG(z) == 0.0) + { + result_re->val = 0.0; + result_im->val = 0.0; + result_re->err = 0.0; + result_im->err = 0.0; + return GSL_EDOM; + } + + /* compute the number of recurrences to apply */ + if(GSL_REAL(z) < 20.0 && fabs(GSL_IMAG(z)) < 20.0) + { + const double sp = sqrt(20.0 + GSL_IMAG(z)); + const double sn = sqrt(20.0 - GSL_IMAG(z)); + const double rhs = sp*sn - GSL_REAL(z); + if(rhs > 0.0) n_recurse = ceil(rhs); + } + + /* compute asymptotic at the large value z + n_recurse */ + a = psi_complex_asymp(gsl_complex_add_real(z, n_recurse)); + + result_re->err = 2.0 * GSL_DBL_EPSILON * fabs(GSL_REAL(a)); + result_im->err = 2.0 * GSL_DBL_EPSILON * fabs(GSL_IMAG(a)); + + /* descend recursively, if necessary */ + for(i = n_recurse; i >= 1; --i) + { + gsl_complex zn = gsl_complex_add_real(z, i - 1.0); + gsl_complex zn_inverse = gsl_complex_inverse(zn); + a = gsl_complex_sub(a, zn_inverse); + + /* accumulate the error, to catch cancellations */ + result_re->err += 2.0 * GSL_DBL_EPSILON * fabs(GSL_REAL(zn_inverse)); + result_im->err += 2.0 * GSL_DBL_EPSILON * fabs(GSL_IMAG(zn_inverse)); + } + + result_re->val = GSL_REAL(a); + result_im->val = GSL_IMAG(a); + + result_re->err += 2.0 * GSL_DBL_EPSILON * fabs(result_re->val); + result_im->err += 2.0 * GSL_DBL_EPSILON * fabs(result_im->val); + + return GSL_SUCCESS; +} + + + +/* generic polygamma; assumes n >= 0 and x > 0 + */ +static int +psi_n_xg0(const int n, const double x, gsl_sf_result * result) +{ + if(n == 0) { + return gsl_sf_psi_e(x, result); + } + else { + /* Abramowitz + Stegun 6.4.10 */ + gsl_sf_result ln_nf; + gsl_sf_result hzeta; + int stat_hz = gsl_sf_hzeta_e(n+1.0, x, &hzeta); + int stat_nf = gsl_sf_lnfact_e((unsigned int) n, &ln_nf); + int stat_e = gsl_sf_exp_mult_err_e(ln_nf.val, ln_nf.err, + hzeta.val, hzeta.err, + result); + if(GSL_IS_EVEN(n)) result->val = -result->val; + return GSL_ERROR_SELECT_3(stat_e, stat_nf, stat_hz); + } +} + + + +/*-*-*-*-*-*-*-*-*-*-*-* Functions with Error Codes *-*-*-*-*-*-*-*-*-*-*-*/ + +int gsl_sf_psi_int_e(const int n, gsl_sf_result * result) +{ + /* CHECK_POINTER(result) */ + + if(n <= 0) { + DOMAIN_ERROR(result); + } + else if(n <= PSI_TABLE_NMAX) { + result->val = psi_table[n]; + result->err = GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else { + /* Abramowitz+Stegun 6.3.18 */ + const double c2 = -1.0/12.0; + const double c3 = 1.0/120.0; + const double c4 = -1.0/252.0; + const double c5 = 1.0/240.0; + const double ni2 = (1.0/n)*(1.0/n); + const double ser = ni2 * (c2 + ni2 * (c3 + ni2 * (c4 + ni2*c5))); + result->val = log(n) - 0.5/n + ser; + result->err = GSL_DBL_EPSILON * (fabs(log(n)) + fabs(0.5/n) + fabs(ser)); + result->err += GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } +} + + +int gsl_sf_psi_e(const double x, gsl_sf_result * result) +{ + /* CHECK_POINTER(result) */ + return psi_x(x, result); +} + + +int +gsl_sf_psi_1piy_e(const double y, gsl_sf_result * result) +{ + const double ay = fabs(y); + + /* CHECK_POINTER(result) */ + + if(ay > 1000.0) { + /* [Abramowitz+Stegun, 6.3.19] */ + const double yi2 = 1.0/(ay*ay); + const double lny = log(ay); + const double sum = yi2 * (1.0/12.0 + 1.0/120.0 * yi2 + 1.0/252.0 * yi2*yi2); + result->val = lny + sum; + result->err = 2.0 * GSL_DBL_EPSILON * (fabs(lny) + fabs(sum)); + return GSL_SUCCESS; + } + else if(ay > 10.0) { + /* [Abramowitz+Stegun, 6.3.19] */ + const double yi2 = 1.0/(ay*ay); + const double lny = log(ay); + const double sum = yi2 * (1.0/12.0 + + yi2 * (1.0/120.0 + + yi2 * (1.0/252.0 + + yi2 * (1.0/240.0 + + yi2 * (1.0/132.0 + 691.0/32760.0 * yi2))))); + result->val = lny + sum; + result->err = 2.0 * GSL_DBL_EPSILON * (fabs(lny) + fabs(sum)); + return GSL_SUCCESS; + } + else if(ay > 1.0){ + const double y2 = ay*ay; + const double x = (2.0*ay - 11.0)/9.0; + const double v = y2*(1.0/(1.0+y2) + 0.5/(4.0+y2)); + gsl_sf_result result_c; + cheb_eval_e(&r1py_cs, x, &result_c); + result->val = result_c.val - M_EULER + v; + result->err = result_c.err; + result->err += 2.0 * GSL_DBL_EPSILON * (fabs(v) + M_EULER + fabs(result_c.val)); + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + result->err *= 5.0; /* FIXME: losing a digit somewhere... maybe at x=... ? */ + return GSL_SUCCESS; + } + else { + /* [Abramowitz+Stegun, 6.3.17] + * + * -M_EULER + y^2 Sum[1/n 1/(n^2 + y^2), {n,1,M}] + * + Sum[1/n^3, {n,M+1,Infinity}] + * - y^2 Sum[1/n^5, {n,M+1,Infinity}] + * + y^4 Sum[1/n^7, {n,M+1,Infinity}] + * - y^6 Sum[1/n^9, {n,M+1,Infinity}] + * + O(y^8) + * + * We take M=50 for at least 15 digit precision. + */ + const int M = 50; + const double y2 = y*y; + const double c0 = 0.00019603999466879846570; + const double c2 = 3.8426659205114376860e-08; + const double c4 = 1.0041592839497643554e-11; + const double c6 = 2.9516743763500191289e-15; + const double p = c0 + y2 *(-c2 + y2*(c4 - y2*c6)); + double sum = 0.0; + double v; + + int n; + for(n=1; n<=M; n++) { + sum += 1.0/(n * (n*n + y*y)); + } + + v = y2 * (sum + p); + result->val = -M_EULER + v; + result->err = GSL_DBL_EPSILON * (M_EULER + fabs(v)); + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } +} + + +int gsl_sf_psi_1_int_e(const int n, gsl_sf_result * result) +{ + /* CHECK_POINTER(result) */ + if(n <= 0) { + DOMAIN_ERROR(result); + } + else if(n <= PSI_1_TABLE_NMAX) { + result->val = psi_1_table[n]; + result->err = GSL_DBL_EPSILON * result->val; + return GSL_SUCCESS; + } + else { + /* Abramowitz+Stegun 6.4.12 + * double-precision for n > 100 + */ + const double c0 = -1.0/30.0; + const double c1 = 1.0/42.0; + const double c2 = -1.0/30.0; + const double ni2 = (1.0/n)*(1.0/n); + const double ser = ni2*ni2 * (c0 + ni2*(c1 + c2*ni2)); + result->val = (1.0 + 0.5/n + 1.0/(6.0*n*n) + ser) / n; + result->err = GSL_DBL_EPSILON * result->val; + return GSL_SUCCESS; + } +} + + +int gsl_sf_psi_1_e(const double x, gsl_sf_result * result) +{ + /* CHECK_POINTER(result) */ + + if(x == 0.0 || x == -1.0 || x == -2.0) { + DOMAIN_ERROR(result); + } + else if(x > 0.0) + { + return psi_n_xg0(1, x, result); + } + else if(x > -5.0) + { + /* Abramowitz + Stegun 6.4.6 */ + int M = -floor(x); + double fx = x + M; + double sum = 0.0; + int m; + + if(fx == 0.0) + DOMAIN_ERROR(result); + + for(m = 0; m < M; ++m) + sum += 1.0/((x+m)*(x+m)); + + { + int stat_psi = psi_n_xg0(1, fx, result); + result->val += sum; + result->err += M * GSL_DBL_EPSILON * sum; + return stat_psi; + } + } + else + { + /* Abramowitz + Stegun 6.4.7 */ + const double sin_px = sin(M_PI * x); + const double d = M_PI*M_PI/(sin_px*sin_px); + gsl_sf_result r; + int stat_psi = psi_n_xg0(1, 1.0-x, &r); + result->val = d - r.val; + result->err = r.err + 2.0*GSL_DBL_EPSILON*d; + return stat_psi; + } +} + + +int gsl_sf_psi_n_e(const int n, const double x, gsl_sf_result * result) +{ + /* CHECK_POINTER(result) */ + + if(n == 0) + { + return gsl_sf_psi_e(x, result); + } + else if(n == 1) + { + return gsl_sf_psi_1_e(x, result); + } + else if(n < 0 || x <= 0.0) { + DOMAIN_ERROR(result); + } + else { + gsl_sf_result ln_nf; + gsl_sf_result hzeta; + int stat_hz = gsl_sf_hzeta_e(n+1.0, x, &hzeta); + int stat_nf = gsl_sf_lnfact_e((unsigned int) n, &ln_nf); + int stat_e = gsl_sf_exp_mult_err_e(ln_nf.val, ln_nf.err, + hzeta.val, hzeta.err, + result); + if(GSL_IS_EVEN(n)) result->val = -result->val; + return GSL_ERROR_SELECT_3(stat_e, stat_nf, stat_hz); + } +} + + +int +gsl_sf_complex_psi_e( + const double x, + const double y, + gsl_sf_result * result_re, + gsl_sf_result * result_im + ) +{ + if(x >= 0.0) + { + gsl_complex z = gsl_complex_rect(x, y); + return psi_complex_rhp(z, result_re, result_im); + } + else + { + /* reflection formula [Abramowitz+Stegun, 6.3.7] */ + gsl_complex z = gsl_complex_rect(x, y); + gsl_complex omz = gsl_complex_rect(1.0 - x, -y); + gsl_complex zpi = gsl_complex_mul_real(z, M_PI); + gsl_complex cotzpi = gsl_complex_cot(zpi); + int ret_val = psi_complex_rhp(omz, result_re, result_im); + + if(GSL_IS_REAL(GSL_REAL(cotzpi)) && GSL_IS_REAL(GSL_IMAG(cotzpi))) + { + result_re->val -= M_PI * GSL_REAL(cotzpi); + result_im->val -= M_PI * GSL_IMAG(cotzpi); + return ret_val; + } + else + { + GSL_ERROR("singularity", GSL_EDOM); + } + } +} + + + +/*-*-*-*-*-*-*-*-*-* Functions w/ Natural Prototypes *-*-*-*-*-*-*-*-*-*-*/ + +#include "eval.h" + +double gsl_sf_psi_int(const int n) +{ + EVAL_RESULT(gsl_sf_psi_int_e(n, &result)); +} + +double gsl_sf_psi(const double x) +{ + EVAL_RESULT(gsl_sf_psi_e(x, &result)); +} + +double gsl_sf_psi_1piy(const double x) +{ + EVAL_RESULT(gsl_sf_psi_1piy_e(x, &result)); +} + +double gsl_sf_psi_1_int(const int n) +{ + EVAL_RESULT(gsl_sf_psi_1_int_e(n, &result)); +} + +double gsl_sf_psi_1(const double x) +{ + EVAL_RESULT(gsl_sf_psi_1_e(x, &result)); +} + +double gsl_sf_psi_n(const int n, const double x) +{ + EVAL_RESULT(gsl_sf_psi_n_e(n, x, &result)); +} diff --git a/gsl-2.5/specfunc/psi.lo b/gsl-2.5/specfunc/psi.lo new file mode 100644 index 00000000..172ae37a --- /dev/null +++ b/gsl-2.5/specfunc/psi.lo @@ -0,0 +1,12 @@ +# psi.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/psi.o' + +# Name of the non-PIC object +non_pic_object='psi.o' + diff --git a/gsl-2.5/specfunc/recurse.h b/gsl-2.5/specfunc/recurse.h new file mode 100644 index 00000000..207e5c80 --- /dev/null +++ b/gsl-2.5/specfunc/recurse.h @@ -0,0 +1,125 @@ +/* specfunc/recurse.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ + +#ifndef _RECURSE_H_ +#define _RECURSE_H_ + +#define CONCAT(a,b) a ## _ ## b + + +/* n_max >= n_min + 2 + * f[n+1] + a[n] f[n] + b[n] f[n-1] = 0 + * + * Trivial forward recurrence. + */ +#define GEN_RECURSE_FORWARD_SIMPLE(func) \ +int CONCAT(recurse_forward_simple, func) ( \ + const int n_max, const int n_min, \ + const double parameters[], \ + const double f_n_min, \ + const double f_n_min_p1, \ + double * f, \ + double * f_n_max \ + ) \ +{ \ + int n; \ + \ + if(f == 0) { \ + double f2 = f_n_min; \ + double f1 = f_n_min_p1; \ + double f0; \ + for(n=n_min+2; n<=n_max; n++) { \ + f0 = -REC_COEFF_A(n-1,parameters) * f1 - REC_COEFF_B(n-1, parameters) * f2; \ + f2 = f1; \ + f1 = f0; \ + } \ + *f_n_max = f0; \ + } \ + else { \ + f[n_min] = f_n_min; \ + f[n_min + 1] = f_n_min_p1; \ + for(n=n_min+2; n<=n_max; n++) { \ + f[n] = -REC_COEFF_A(n-1,parameters) * f[n-1] - REC_COEFF_B(n-1, parameters) * f[n-2]; \ + } \ + *f_n_max = f[n_max]; \ + } \ + \ + return GSL_SUCCESS; \ +} \ + + +/* n_start >= n_max >= n_min + * f[n+1] + a[n] f[n] + b[n] f[n-1] = 0 + * + * Generate the minimal solution of the above recursion relation, + * with the simplest form of the normalization condition, f[n_min] given. + * [Gautschi, SIAM Rev. 9, 24 (1967); (3.9) with s[n]=0] + */ +#define GEN_RECURSE_BACKWARD_MINIMAL_SIMPLE(func) \ +int CONCAT(recurse_backward_minimal_simple, func) ( \ + const int n_start, \ + const int n_max, const int n_min, \ + const double parameters[], \ + const double f_n_min, \ + double * f, \ + double * f_n_max \ + ) \ +{ \ + int n; \ + double r_n = 0.; \ + double r_nm1; \ + double ratio; \ + \ + for(n=n_start; n > n_max; n--) { \ + r_nm1 = -REC_COEFF_B(n, parameters) / (REC_COEFF_A(n, parameters) + r_n); \ + r_n = r_nm1; \ + } \ + \ + if(f != 0) { \ + f[n_max] = 10.*DBL_MIN; \ + for(n=n_max; n > n_min; n--) { \ + r_nm1 = -REC_COEFF_B(n, parameters) / (REC_COEFF_A(n, parameters) + r_n); \ + f[n-1] = f[n] / r_nm1; \ + r_n = r_nm1; \ + } \ + ratio = f_n_min / f[n_min]; \ + for(n=n_min; n<=n_max; n++) { \ + f[n] *= ratio; \ + } \ + } \ + else { \ + double f_nm1; \ + double f_n = 10.*DBL_MIN; \ + *f_n_max = f_n; \ + for(n=n_max; n > n_min; n--) { \ + r_nm1 = -REC_COEFF_B(n, parameters) / (REC_COEFF_A(n, parameters) + r_n); \ + f_nm1 = f_n / r_nm1; \ + r_n = r_nm1; \ + } \ + ratio = f_n_min / f_nm1; \ + *f_n_max *= ratio; \ + } \ + \ + return GSL_SUCCESS; \ +} \ + + +#endif /* !_RECURSE_H_ */ diff --git a/gsl-2.5/specfunc/result.c b/gsl-2.5/specfunc/result.c new file mode 100644 index 00000000..f3e2da32 --- /dev/null +++ b/gsl-2.5/specfunc/result.c @@ -0,0 +1,89 @@ +/* specfunc/result.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ + +#include +#include +#include +#include +#include + + +int +gsl_sf_result_smash_e(const gsl_sf_result_e10 * re, gsl_sf_result * r) +{ + if(re->e10 == 0) { + /* nothing to smash */ + r->val = re->val; + r->err = re->err; + return GSL_SUCCESS; + } + else { + const double av = fabs(re->val); + const double ae = fabs(re->err); + + if( GSL_SQRT_DBL_MIN < av && av < GSL_SQRT_DBL_MAX + && GSL_SQRT_DBL_MIN < ae && ae < GSL_SQRT_DBL_MAX + && 0.49*GSL_LOG_DBL_MIN < re->e10 && re->e10 < 0.49*GSL_LOG_DBL_MAX + ) { + const double scale = exp(re->e10 * M_LN10); + r->val = re->val * scale; + r->err = re->err * scale; + return GSL_SUCCESS; + } + else { + return gsl_sf_exp_mult_err_e(re->e10*M_LN10, 0.0, re->val, re->err, r); + } + } +/* + int stat_v; + int stat_e; + + if(re->val == 0.0) { + r->val = 0.0; + stat_v = GSL_SUCCESS; + } + else { + gsl_sf_result r_val; + const double s = GSL_SIGN(re->val); + const double x_v = re->e10*M_LN10 + log(fabs(re->val)); + stat_v = gsl_sf_exp_e(x_v, &r_val); + r->val = s * r_val.val; + } + + if(re->err == 0.0) { + r->err = 0.0; + stat_e = GSL_SUCCESS; + } + else if(re->val != 0.0) { + r->err = fabs(r->val * re->err/re->val); + stat_e = GSL_SUCCESS; + } + else { + gsl_sf_result r_err; + const double x_e = re->e10*M_LN10 + log(fabs(re->err)); + stat_e = gsl_sf_exp_e(x_e, &r_err); + r->err = r_err.val; + } + + return GSL_ERROR_SELECT_2(stat_v, stat_e); +*/ +} + diff --git a/gsl-2.5/specfunc/result.lo b/gsl-2.5/specfunc/result.lo new file mode 100644 index 00000000..c4a95372 --- /dev/null +++ b/gsl-2.5/specfunc/result.lo @@ -0,0 +1,12 @@ +# result.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/result.o' + +# Name of the non-PIC object +non_pic_object='result.o' + diff --git a/gsl-2.5/specfunc/shint.c b/gsl-2.5/specfunc/shint.c new file mode 100644 index 00000000..212e2759 --- /dev/null +++ b/gsl-2.5/specfunc/shint.c @@ -0,0 +1,135 @@ +/* specfunc/shint.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ + +#include +#include +#include +#include + +#include "error.h" + +#include "chebyshev.h" +#include "cheb_eval.c" + +/*-*-*-*-*-*-*-*-*-*-*-* Private Section *-*-*-*-*-*-*-*-*-*-*-*/ + +/* based on SLATEC shi.f, W. Fullerton + + series for shi on the interval 0.00000e+00 to 1.40625e-01 + with weighted error 4.67e-20 + log weighted error 19.33 + significant figures required 17.07 + decimal places required 19.75 +*/ +static double shi_data[7] = { + 0.0078372685688900950695, + 0.0039227664934234563973, + 0.0000041346787887617267, + 0.0000000024707480372883, + 0.0000000000009379295591, + 0.0000000000000002451817, + 0.0000000000000000000467 +}; +static cheb_series shi_cs = { + shi_data, + 6, + -1, 1, + 6 +}; + + +/*-*-*-*-*-*-*-*-*-*-*-* Functions with Error Codes *-*-*-*-*-*-*-*-*-*-*-*/ + +int gsl_sf_Shi_e(const double x, gsl_sf_result * result) +{ + const double xsml = GSL_SQRT_DBL_EPSILON; /* sqrt (r1mach(3)) */ + const double ax = fabs(x); + + if(ax < xsml) { + result->val = x; + result->err = 0.0; + return GSL_SUCCESS; + } + else if(ax <= 0.375) { + gsl_sf_result result_c; + cheb_eval_e(&shi_cs, 128.0*x*x/9.0-1.0, &result_c); + result->val = x * (1.0 + result_c.val); + result->err = x * result_c.err; + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else { + gsl_sf_result result_Ei; + gsl_sf_result result_E1; + int status_Ei = gsl_sf_expint_Ei_e(x, &result_Ei); + int status_E1 = gsl_sf_expint_E1_e(x, &result_E1); + result->val = 0.5*(result_Ei.val + result_E1.val); + result->err = 0.5*(result_Ei.err + result_E1.err); + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + if(status_Ei == GSL_EUNDRFLW && status_E1 == GSL_EUNDRFLW) { + GSL_ERROR ("underflow", GSL_EUNDRFLW); + } + else if(status_Ei == GSL_EOVRFLW || status_E1 == GSL_EOVRFLW) { + GSL_ERROR ("overflow", GSL_EOVRFLW); + } + else { + return GSL_SUCCESS; + } + } +} + + +int gsl_sf_Chi_e(const double x, gsl_sf_result * result) +{ + gsl_sf_result result_Ei; + gsl_sf_result result_E1; + int status_Ei = gsl_sf_expint_Ei_e(x, &result_Ei); + int status_E1 = gsl_sf_expint_E1_e(x, &result_E1); + if(status_Ei == GSL_EDOM || status_E1 == GSL_EDOM) { + DOMAIN_ERROR(result); + } + else if(status_Ei == GSL_EUNDRFLW && status_E1 == GSL_EUNDRFLW) { + UNDERFLOW_ERROR(result); + } + else if(status_Ei == GSL_EOVRFLW || status_E1 == GSL_EOVRFLW) { + OVERFLOW_ERROR(result); + } + else { + result->val = 0.5 * (result_Ei.val - result_E1.val); + result->err = 0.5 * (result_Ei.err + result_E1.err); + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } +} + +/*-*-*-*-*-*-*-*-*-* Functions w/ Natural Prototypes *-*-*-*-*-*-*-*-*-*-*/ + +#include "eval.h" + +double gsl_sf_Shi(const double x) +{ + EVAL_RESULT(gsl_sf_Shi_e(x, &result)); +} + +double gsl_sf_Chi(const double x) +{ + EVAL_RESULT(gsl_sf_Chi_e(x, &result)); +} diff --git a/gsl-2.5/specfunc/shint.lo b/gsl-2.5/specfunc/shint.lo new file mode 100644 index 00000000..544fcc20 --- /dev/null +++ b/gsl-2.5/specfunc/shint.lo @@ -0,0 +1,12 @@ +# shint.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/shint.o' + +# Name of the non-PIC object +non_pic_object='shint.o' + diff --git a/gsl-2.5/specfunc/sincos_pi.c b/gsl-2.5/specfunc/sincos_pi.c new file mode 100644 index 00000000..bf46bdb1 --- /dev/null +++ b/gsl-2.5/specfunc/sincos_pi.c @@ -0,0 +1,242 @@ +/* specfunc/sincos_pi.c + * + * Copyright (C) 2017 Gerard Jungman, Konrad Griessinger (konradg@gmx.net) + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* routines for computing sin(pi*x) and cos(pi*x), respectively, with argument reduction */ + +#include +#include +#include +#include +#include + +/* Any double precision number bigger than this is automatically an even integer. */ +#define TWOBIG (2.0 / GSL_DBL_EPSILON) + +/* routine computing sin(pi*x) valid for |x| <= 0.25 using a Taylor expansion around the origin and otherwise a rational approximation from the reference below. Spot-checked to give around 2e-16 relative accuracy. */ +/* I. Koren and O. Zinaty. Evaluating elementary functions in a numerical +coprocessor based on rational approximations. IEEE Transactions on +Computers, Vol.39, No.8, August 1990, pp 1030-1037. */ +/* +static int +sin_pi_koren(const double x, gsl_sf_result *result) +{ + result->val = 0.0; + result->err = 0.0; + if (16.0*fabs(x) < 1.0) { + const double y = M_PI * x; + const double a = y*y; + result->val = y*(1.0 - a*(1.0 - a*(1.0 - a*(1.0 - a*(1.0 - a/110.0)/72.0)/42.0)/20.0)/6.0); + } + else { + const double a0 = 1805490264.690988571178600370234394843221; + const double a1 = -164384678.227499837726129612587952660511; + const double a2 = 3664210.647581261810227924465160827365; + const double a3 = -28904.140246461781357223741935980097; + const double a4 = 76.568981088717405810132543523682; + const double b0 = 2298821602.638922662086487520330827251172; + const double b1 = 27037050.118894436776624866648235591988; + const double b2 = 155791.388546947693206469423979505671; + const double b3 = 540.567501261284024767779280700089; + const double t = 16.0*x*x; + result->val = 4.0*x*(((( a4*t + a3 )*t + a2 )*t + a1 )*t + a0)/(((( t + b3 )*t + b2 )*t + b1 )*t + b0); + } + + result->err = GSL_DBL_EPSILON*fabs(result->val); + + return GSL_SUCCESS; +} +*/ + +/* routine computing cos(pi*x) valid for |x| <= 0.25 using a Taylor expansion around the origin and otherwise a rational approximation from the reference below. Spot-checked to give around 2e-16 relative accuracy. */ +/* I. Koren and O. Zinaty. Evaluating elementary functions in a numerical +coprocessor based on rational approximations. IEEE Transactions on +Computers, Vol.39, No.8, August 1990, pp 1030-1037. */ +/* +static int +cos_pi_koren(const double x, gsl_sf_result *result) +{ + result->val = 0.0; + result->err = 0.0; + if (20.0*fabs(x) < 1.0) { + const double y = M_PI * x; + const double a = y*y; + result->val = 1.0 - 0.5*a*(1.0 - a*(1.0 - a*(1.0 - a*(1.0 - a/90.0)/56.0)/30.0)/12.0); + } + else { + const double a0 = 1090157078.174871420428849017262549038606; + const double a1 = -321324810.993150712401352959397648541681; + const double a2 = 12787876.849523878944051885325593878177; + const double a3 = -150026.206045948110568310887166405972; + const double a4 = 538.333564203182661664319151379451; + const double b0 = 1090157078.174871420428867295670039506886; + const double b1 = 14907035.776643879767410969509628406502; + const double b2 = 101855.811943661368302608146695082218; + const double b3 = 429.772865107391823245671264489311; + const double t = 16.0*x*x; + result->val = (((( a4*t + a3 )*t + a2 )*t + a1 )*t + a0)/(((( t + b3 )*t + b2 )*t + b1 )*t + b0); + } + + result->err = GSL_DBL_EPSILON*fabs(result->val); + + return GSL_SUCCESS; +} +*/ + +/* routine computing sin(pi*x) using a Taylor expansion around the origin and otherwise the library function. */ +static int +sin_pi_taylor(const double x, gsl_sf_result *result) +{ + result->val = 0.0; + result->err = 0.0; + if (16.0*fabs(x) < 1.0) { + const double y = M_PI * x; + const double a = y*y; + result->val = y*(1.0 - a*(1.0 - a*(1.0 - a*(1.0 - a*(1.0 - a/110.0)/72.0)/42.0)/20.0)/6.0); + } + else { + result->val = sin(M_PI*x); + } + + result->err = GSL_DBL_EPSILON*fabs(result->val); + + return GSL_SUCCESS; +} + +/* routine computing sin(pi*x) using a Taylor expansion around the origin and otherwise the library function. */ +static int +cos_pi_taylor(const double x, gsl_sf_result *result) +{ + result->val = 0.0; + result->err = 0.0; + if (20.0*fabs(x) < 1.0) { + const double y = M_PI * x; + const double a = y*y; + result->val = 1.0 - 0.5*a*(1.0 - a*(1.0 - a*(1.0 - a*(1.0 - a/90.0)/56.0)/30.0)/12.0); + } + else { + result->val = cos(M_PI*x); + } + + result->err = GSL_DBL_EPSILON*fabs(result->val); + + return GSL_SUCCESS; +} + +int +gsl_sf_sin_pi_e(const double x, gsl_sf_result *result) +{ + double intx = 0.0, fracx = 0.0; + long q; + int sign = 1, status; + + result->val = 0.0; + result->err = 0.0; + fracx = modf(x,&intx); + if (fracx == 0.0) return GSL_SUCCESS; + if(fabs(intx) >= TWOBIG) return GSL_SUCCESS; /* to be sure. Actually should be covered by the line above */ + + q = ( ( (intx >= LONG_MIN) && (intx <= LONG_MAX) ) ? intx : fmod(intx, 2.0) ); + sign = ( q % 2 ? -1 : 1 ); + + /* int sign = 1 - 2*((int)round(fmod(fabs(intx),2.0))); */ + if (fabs(fracx) == 0.5) { /* probably unnecessary */ + if (fracx < 0.0) sign = -sign; + result->val = ( sign != 1 ? -1.0 : 1.0 ); + return GSL_SUCCESS; + } + if (fabs(fracx) > 0.5) { + sign = -sign; + fracx = ( fracx > 0.0 ? fracx-1.0 : fracx+1.0 ); + } + + status = 0; + if (fracx > 0.25) { + status = cos_pi_taylor((fracx-0.5), result); + } + else if (fracx < -0.25) { + status = cos_pi_taylor((fracx+0.5), result); + sign = -sign; + } + else { + status = sin_pi_taylor(fracx, result); + } + if (sign != 1) result->val = -result->val; + return status; +} + +int +gsl_sf_cos_pi_e(const double x, gsl_sf_result *result) +{ + double intx = 0.0, fracx = 0.0; + long q; + int sign = 1, status; + + result->val = 0.0; + result->err = 0.0; + fracx = modf(x,&intx); + if (fabs(fracx) == 0.5) return GSL_SUCCESS; + + if(fabs(intx) >= TWOBIG) { + result->val = 1.0; + return GSL_SUCCESS; + } + + q = ( ( (intx >= LONG_MIN) && (intx <= LONG_MAX) ) ? intx : fmod(intx, 2.0) ); + sign = ( q % 2 ? -1 : 1 ); + + /* int sign = 1 - 2*((int)round(fmod(fabs(intx),2.0))); */ + if (fracx == 0.0) { /* probably unnecessary */ + result->val = ( sign != 1 ? -1.0 : 1.0 ); + return GSL_SUCCESS; + } + if (fabs(fracx) > 0.5) { + sign = -sign; + fracx = ( fracx > 0.0 ? fracx-1.0 : fracx+1.0 ); + } + + status = 0; + if (fracx > 0.25) { + status = sin_pi_taylor((fracx-0.5), result); + sign = -sign; + } + else if (fracx < -0.25) { + status = sin_pi_taylor((fracx+0.5), result); + } + else { + status = cos_pi_taylor(fracx, result); + } + if (sign != 1) result->val = -result->val; + return status; +} + +/*-*-*-*-*-*-*-*-*-* Functions w/ Natural Prototypes *-*-*-*-*-*-*-*-*-*-*/ + +#include "eval.h" + +double +gsl_sf_sin_pi(const double x) +{ + EVAL_RESULT(gsl_sf_sin_pi_e(x, &result)); +} + +double +gsl_sf_cos_pi(const double x) +{ + EVAL_RESULT(gsl_sf_cos_pi_e(x, &result)); +} diff --git a/gsl-2.5/specfunc/sincos_pi.lo b/gsl-2.5/specfunc/sincos_pi.lo new file mode 100644 index 00000000..c53ddded --- /dev/null +++ b/gsl-2.5/specfunc/sincos_pi.lo @@ -0,0 +1,12 @@ +# sincos_pi.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/sincos_pi.o' + +# Name of the non-PIC object +non_pic_object='sincos_pi.o' + diff --git a/gsl-2.5/specfunc/sinint.c b/gsl-2.5/specfunc/sinint.c new file mode 100644 index 00000000..76a88ea0 --- /dev/null +++ b/gsl-2.5/specfunc/sinint.c @@ -0,0 +1,402 @@ +/* specfunc/sinint.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ + +#include +#include +#include +#include +#include + +#include "error.h" + +#include "chebyshev.h" +#include "cheb_eval.c" + +/*-*-*-*-*-*-*-*-*-*-*-* Private Section *-*-*-*-*-*-*-*-*-*-*-*/ + +/* based on SLATEC r9sifg.f, W. Fullerton */ + +/* + series for f1 on the interval 2.00000e-02 to 6.25000e-02 + with weighted error 2.82e-17 + log weighted error 16.55 + significant figures required 15.36 + decimal places required 17.20 +*/ +static double f1_data[20] = { + -0.1191081969051363610, + -0.0247823144996236248, + 0.0011910281453357821, + -0.0000927027714388562, + 0.0000093373141568271, + -0.0000011058287820557, + 0.0000001464772071460, + -0.0000000210694496288, + 0.0000000032293492367, + -0.0000000005206529618, + 0.0000000000874878885, + -0.0000000000152176187, + 0.0000000000027257192, + -0.0000000000005007053, + 0.0000000000000940241, + -0.0000000000000180014, + 0.0000000000000035063, + -0.0000000000000006935, + 0.0000000000000001391, + -0.0000000000000000282 +}; +static cheb_series f1_cs = { + f1_data, + 19, + -1, 1, + 10 +}; + +/* + + series for f2 on the interval 0.00000e+00 to 2.00000e-02 + with weighted error 4.32e-17 + log weighted error 16.36 + significant figures required 14.75 + decimal places required 17.10 +*/ +static double f2_data[29] = { + -0.0348409253897013234, + -0.0166842205677959686, + 0.0006752901241237738, + -0.0000535066622544701, + 0.0000062693421779007, + -0.0000009526638801991, + 0.0000001745629224251, + -0.0000000368795403065, + 0.0000000087202677705, + -0.0000000022601970392, + 0.0000000006324624977, + -0.0000000001888911889, + 0.0000000000596774674, + -0.0000000000198044313, + 0.0000000000068641396, + -0.0000000000024731020, + 0.0000000000009226360, + -0.0000000000003552364, + 0.0000000000001407606, + -0.0000000000000572623, + 0.0000000000000238654, + -0.0000000000000101714, + 0.0000000000000044259, + -0.0000000000000019634, + 0.0000000000000008868, + -0.0000000000000004074, + 0.0000000000000001901, + -0.0000000000000000900, + 0.0000000000000000432 +}; +static cheb_series f2_cs = { + f2_data, + 28, + -1, 1, + 14 +}; + +/* + + series for g1 on the interval 2.00000e-02 to 6.25000e-02 + with weighted error 5.48e-17 + log weighted error 16.26 + significant figures required 15.47 + decimal places required 16.92 +*/ +static double g1_data[21] = { + -0.3040578798253495954, + -0.0566890984597120588, + 0.0039046158173275644, + -0.0003746075959202261, + 0.0000435431556559844, + -0.0000057417294453025, + 0.0000008282552104503, + -0.0000001278245892595, + 0.0000000207978352949, + -0.0000000035313205922, + 0.0000000006210824236, + -0.0000000001125215474, + 0.0000000000209088918, + -0.0000000000039715832, + 0.0000000000007690431, + -0.0000000000001514697, + 0.0000000000000302892, + -0.0000000000000061400, + 0.0000000000000012601, + -0.0000000000000002615, + 0.0000000000000000548 +}; +static cheb_series g1_cs = { + g1_data, + 20, + -1, 1, + 13 +}; + +/* + + series for g2 on the interval 0.00000e+00 to 2.00000e-02 + with weighted error 5.01e-17 + log weighted error 16.30 + significant figures required 15.12 + decimal places required 17.07 +*/ +static double g2_data[34] = { + -0.0967329367532432218, + -0.0452077907957459871, + 0.0028190005352706523, + -0.0002899167740759160, + 0.0000407444664601121, + -0.0000071056382192354, + 0.0000014534723163019, + -0.0000003364116512503, + 0.0000000859774367886, + -0.0000000238437656302, + 0.0000000070831906340, + -0.0000000022318068154, + 0.0000000007401087359, + -0.0000000002567171162, + 0.0000000000926707021, + -0.0000000000346693311, + 0.0000000000133950573, + -0.0000000000053290754, + 0.0000000000021775312, + -0.0000000000009118621, + 0.0000000000003905864, + -0.0000000000001708459, + 0.0000000000000762015, + -0.0000000000000346151, + 0.0000000000000159996, + -0.0000000000000075213, + 0.0000000000000035970, + -0.0000000000000017530, + 0.0000000000000008738, + -0.0000000000000004487, + 0.0000000000000002397, + -0.0000000000000001347, + 0.0000000000000000801, + -0.0000000000000000501 +}; +static cheb_series g2_cs = { + g2_data, + 33, + -1, 1, + 20 +}; + + +/* x >= 4.0 */ +static void fg_asymp(const double x, gsl_sf_result * f, gsl_sf_result * g) +{ + /* + xbig = sqrt (1.0/r1mach(3)) + xmaxf = exp (amin1(-alog(r1mach(1)), alog(r1mach(2))) - 0.01) + xmaxg = 1.0/sqrt(r1mach(1)) + xbnd = sqrt(50.0) + */ + const double xbig = 1.0/GSL_SQRT_DBL_EPSILON; + const double xmaxf = 1.0/GSL_DBL_MIN; + const double xmaxg = 1.0/GSL_SQRT_DBL_MIN; + const double xbnd = 7.07106781187; + + const double x2 = x*x; + + if(x <= xbnd) { + gsl_sf_result result_c1; + gsl_sf_result result_c2; + cheb_eval_e(&f1_cs, (1.0/x2-0.04125)/0.02125, &result_c1); + cheb_eval_e(&g1_cs, (1.0/x2-0.04125)/0.02125, &result_c2); + f->val = (1.0 + result_c1.val)/x; + g->val = (1.0 + result_c2.val)/x2; + f->err = result_c1.err/x + 2.0 * GSL_DBL_EPSILON * fabs(f->val); + g->err = result_c2.err/x2 + 2.0 * GSL_DBL_EPSILON * fabs(g->val); + } + else if(x <= xbig) { + gsl_sf_result result_c1; + gsl_sf_result result_c2; + cheb_eval_e(&f2_cs, 100.0/x2-1.0, &result_c1); + cheb_eval_e(&g2_cs, 100.0/x2-1.0, &result_c2); + f->val = (1.0 + result_c1.val)/x; + g->val = (1.0 + result_c2.val)/x2; + f->err = result_c1.err/x + 2.0 * GSL_DBL_EPSILON * fabs(f->val); + g->err = result_c2.err/x2 + 2.0 * GSL_DBL_EPSILON * fabs(g->val); + } + else { + f->val = (x < xmaxf ? 1.0/x : 0.0); + g->val = (x < xmaxg ? 1.0/x2 : 0.0); + f->err = 2.0 * GSL_DBL_EPSILON * fabs(f->val); + g->err = 2.0 * GSL_DBL_EPSILON * fabs(g->val); + } + + return; +} + + +/* based on SLATEC si.f, W. Fullerton + + series for si on the interval 0.00000e+00 to 1.60000e+01 + with weighted error 1.22e-17 + log weighted error 16.91 + significant figures required 16.37 + decimal places required 17.45 +*/ + +static double si_data[12] = { + -0.1315646598184841929, + -0.2776578526973601892, + 0.0354414054866659180, + -0.0025631631447933978, + 0.0001162365390497009, + -0.0000035904327241606, + 0.0000000802342123706, + -0.0000000013562997693, + 0.0000000000179440722, + -0.0000000000001908387, + 0.0000000000000016670, + -0.0000000000000000122 +}; + +static cheb_series si_cs = { + si_data, + 11, + -1, 1, + 9 +}; + +/* + series for ci on the interval 0.00000e+00 to 1.60000e+01 + with weighted error 1.94e-18 + log weighted error 17.71 + significant figures required 17.74 + decimal places required 18.27 +*/ +static double ci_data[13] = { + -0.34004281856055363156, + -1.03302166401177456807, + 0.19388222659917082877, + -0.01918260436019865894, + 0.00110789252584784967, + -0.00004157234558247209, + 0.00000109278524300229, + -0.00000002123285954183, + 0.00000000031733482164, + -0.00000000000376141548, + 0.00000000000003622653, + -0.00000000000000028912, + 0.00000000000000000194 +}; +static cheb_series ci_cs = { + ci_data, + 12, + -1, 1, + 9 +}; + + +/*-*-*-*-*-*-*-*-*-*-*-* Functions with Error Codes *-*-*-*-*-*-*-*-*-*-*-*/ + +int gsl_sf_Si_e(const double x, gsl_sf_result * result) +{ + double ax = fabs(x); + + /* CHECK_POINTER(result) */ + + if(ax < GSL_SQRT_DBL_EPSILON) { + result->val = x; + result->err = 0.0; + return GSL_SUCCESS; + } + else if(ax <= 4.0) { + gsl_sf_result result_c; + cheb_eval_e(&si_cs, (x*x-8.0)*0.125, &result_c); + result->val = x * (0.75 + result_c.val); + result->err = ax * result_c.err; + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else { + /* Note there is no loss of precision + * here bcause of the leading constant. + */ + gsl_sf_result f; + gsl_sf_result g; + fg_asymp(ax, &f, &g); + result->val = 0.5 * M_PI - f.val*cos(ax) - g.val*sin(ax); + result->err = f.err + g.err; + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + if(x < 0.0) result->val = -result->val; + return GSL_SUCCESS; + } +} + + +int gsl_sf_Ci_e(const double x, gsl_sf_result * result) +{ + /* CHECK_POINTER(result) */ + + if(x <= 0.0) { + DOMAIN_ERROR(result); + } + else if(x <= 4.0) { + const double lx = log(x); + const double y = (x*x-8.0)*0.125; + gsl_sf_result result_c; + cheb_eval_e(&ci_cs, y, &result_c); + result->val = lx - 0.5 + result_c.val; + result->err = 2.0 * GSL_DBL_EPSILON * (fabs(lx) + 0.5) + result_c.err; + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else { + gsl_sf_result sin_result; + gsl_sf_result cos_result; + int stat_sin = gsl_sf_sin_e(x, &sin_result); + int stat_cos = gsl_sf_cos_e(x, &cos_result); + gsl_sf_result f; + gsl_sf_result g; + fg_asymp(x, &f, &g); + result->val = f.val*sin_result.val - g.val*cos_result.val; + result->err = fabs(f.err*sin_result.val); + result->err += fabs(g.err*cos_result.val); + result->err += fabs(f.val*sin_result.err); + result->err += fabs(g.val*cos_result.err); + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_ERROR_SELECT_2(stat_sin, stat_cos); + } +} + + +/*-*-*-*-*-*-*-*-*-* Functions w/ Natural Prototypes *-*-*-*-*-*-*-*-*-*-*/ + +#include "eval.h" + +double gsl_sf_Si(const double x) +{ + EVAL_RESULT(gsl_sf_Si_e(x, &result)); +} + +double gsl_sf_Ci(const double x) +{ + EVAL_RESULT(gsl_sf_Ci_e(x, &result)); +} diff --git a/gsl-2.5/specfunc/sinint.lo b/gsl-2.5/specfunc/sinint.lo new file mode 100644 index 00000000..baad23bf --- /dev/null +++ b/gsl-2.5/specfunc/sinint.lo @@ -0,0 +1,12 @@ +# sinint.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/sinint.o' + +# Name of the non-PIC object +non_pic_object='sinint.o' + diff --git a/gsl-2.5/specfunc/synchrotron.c b/gsl-2.5/specfunc/synchrotron.c new file mode 100644 index 00000000..80b2a5f9 --- /dev/null +++ b/gsl-2.5/specfunc/synchrotron.c @@ -0,0 +1,285 @@ +/* specfunc/synchrotron.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ + +#include +#include +#include +#include +#include +#include + +#include "error.h" + +#include "chebyshev.h" +#include "cheb_eval.c" + +static double synchrotron1_data[13] = { + 30.364682982501076273, + 17.079395277408394574, + 4.560132133545072889, + 0.549281246730419979, + 0.372976075069301172e-01, + 0.161362430201041242e-02, + 0.481916772120371e-04, + 0.10512425288938e-05, + 0.174638504670e-07, + 0.22815486544e-09, + 0.240443082e-11, + 0.2086588e-13, + 0.15167e-15 +}; +static cheb_series synchrotron1_cs = { + synchrotron1_data, + 12, + -1.0, 1.0, + 9 +}; + +static double synchrotron2_data[12] = { + 0.4490721623532660844, + 0.898353677994187218e-01, + 0.81044573772151290e-02, + 0.4261716991089162e-03, + 0.147609631270746e-04, + 0.3628633615300e-06, + 0.66634807498e-08, + 0.949077166e-10, + 0.1079125e-11, + 0.10022e-13, + 0.77e-16, + 0.5e-18 +}; +static cheb_series synchrotron2_cs = { + synchrotron2_data, + 11, + -1.0, 1.0, + 7 +}; + +static double synchrotron1a_data[23] = { + 2.1329305161355000985, + 0.741352864954200240e-01, + 0.86968099909964198e-02, + 0.11703826248775692e-02, + 0.1645105798619192e-03, + 0.240201021420640e-04, + 0.35827756389389e-05, + 0.5447747626984e-06, + 0.838802856196e-07, + 0.13069882684e-07, + 0.2053099071e-08, + 0.325187537e-09, + 0.517914041e-10, + 0.83002988e-11, + 0.13352728e-11, + 0.2159150e-12, + 0.349967e-13, + 0.56994e-14, + 0.9291e-15, + 0.152e-15, + 0.249e-16, + 0.41e-17, + 0.7e-18 +}; +static cheb_series synchrotron1a_cs = { + synchrotron1a_data, + 22, + -1.0, 1.0, + 11 +}; + +static double synchrotron21_data[13] = { + 38.617839923843085480, + 23.037715594963734597, + 5.3802499868335705968, + 0.6156793806995710776, + 0.406688004668895584e-01, + 0.17296274552648414e-02, + 0.51061258836577e-04, + 0.110459595022e-05, + 0.18235530206e-07, + 0.2370769803e-09, + 0.24887296e-11, + 0.21529e-13, + 0.156e-15 +}; +static cheb_series synchrotron21_cs = { + synchrotron21_data, + 12, + -1.0, 1.0, + 9 +}; + +static double synchrotron22_data[13] = { + 7.9063148270660804288, + 3.1353463612853425684, + 0.4854879477453714538, + 0.394816675827237234e-01, + 0.19661622334808802e-02, + 0.659078932293042e-04, + 0.15857561349856e-05, + 0.286865301123e-07, + 0.4041202360e-09, + 0.45568444e-11, + 0.420459e-13, + 0.3232e-15, + 0.21e-17 +}; +static cheb_series synchrotron22_cs = { + synchrotron22_data, + 12, + -1.0, 1.0, + 8 +}; + +static double synchrotron2a_data[17] = { + 2.020337094170713600, + 0.10956237121807404e-01, + 0.8542384730114676e-03, + 0.723430242132822e-04, + 0.63124427962699e-05, + 0.5648193141174e-06, + 0.512832480138e-07, + 0.47196532914e-08, + 0.4380744214e-09, + 0.410268149e-10, + 0.38623072e-11, + 0.3661323e-12, + 0.348023e-13, + 0.33301e-14, + 0.319e-15, + 0.307e-16, + 0.3e-17 +}; +static cheb_series synchrotron2a_cs = { + synchrotron2a_data, + 16, + -1.0, 1.0, + 8 +}; + + +/*-*-*-*-*-*-*-*-*-*-*-* Functions with Error Codes *-*-*-*-*-*-*-*-*-*-*-*/ + +int gsl_sf_synchrotron_1_e(const double x, gsl_sf_result * result) +{ + /* CHECK_POINTER(result) */ + + if(x < 0.0) { + DOMAIN_ERROR(result); + } + else if(x < 2.0*M_SQRT2 * GSL_SQRT_DBL_EPSILON) { + /* BJG: added first order correction term. The taylor series + is S1(x) = ((4pi)/(sqrt(3)gamma(1/3))) * (x/2)^(1/3) + * (1 - (gamma(1/3)/2)*(x/2)^2/3 + (3/4) * (x/2)^2 ....) */ + double z = pow(x, 1.0/3.0); + double cf = 1 - 8.43812762813205e-01 * z * z; + result->val = 2.14952824153447863671 * z * cf; + result->err = GSL_DBL_EPSILON * result->val; + return GSL_SUCCESS; + } + else if(x <= 4.0) { + const double c0 = M_PI/M_SQRT3; + const double px = pow(x,1.0/3.0); + const double px11 = gsl_sf_pow_int(px,11); + const double t = x*x/8.0 - 1.0; + gsl_sf_result result_c1; + gsl_sf_result result_c2; + cheb_eval_e(&synchrotron1_cs, t, &result_c1); + cheb_eval_e(&synchrotron2_cs, t, &result_c2); + result->val = px * result_c1.val - px11 * result_c2.val - c0 * x; + result->err = px * result_c1.err + px11 * result_c2.err + c0 * x * GSL_DBL_EPSILON; + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else if(x < -8.0*GSL_LOG_DBL_MIN/7.0) { + const double c0 = 0.2257913526447274323630976; /* log(sqrt(pi/2)) */ + const double t = (12.0 - x) / (x + 4.0); + gsl_sf_result result_c1; + cheb_eval_e(&synchrotron1a_cs, t, &result_c1); + result->val = sqrt(x) * result_c1.val * exp(c0 - x); + result->err = 2.0 * GSL_DBL_EPSILON * result->val * (fabs(c0-x)+1.0); + return GSL_SUCCESS; + } + else { + UNDERFLOW_ERROR(result); + } +} + + +int gsl_sf_synchrotron_2_e(const double x, gsl_sf_result * result) +{ + /* CHECK_POINTER(result) */ + + if(x < 0.0) { + DOMAIN_ERROR(result); + } + else if(x < 2.0*M_SQRT2*GSL_SQRT_DBL_EPSILON) { + /* BJG: added first order correction term. The taylor series + is S2(x) = ((2pi)/(sqrt(3)*gamma(1/3))) * (x/2)^(1/3) + * (1 - (gamma(1/3)/gamma(4/3))*(x/2)^(4/3) + (gamma(1/3)/gamma(4/3))*(x/2)^2...) */ + + double z = pow(x, 1.0/3.0); + double cf = 1 - 1.17767156510235e+00 * z * x; + result->val = 1.07476412076723931836 * z * cf ; + result->err = 2.0 * GSL_DBL_EPSILON * result->val; + return GSL_SUCCESS; + } + else if(x <= 4.0) { + const double px = pow(x, 1.0/3.0); + const double px5 = gsl_sf_pow_int(px,5); + const double t = x*x/8.0 - 1.0; + gsl_sf_result cheb1; + gsl_sf_result cheb2; + cheb_eval_e(&synchrotron21_cs, t, &cheb1); + cheb_eval_e(&synchrotron22_cs, t, &cheb2); + result->val = px * cheb1.val - px5 * cheb2.val; + result->err = px * cheb1.err + px5 * cheb2.err; + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else if(x < -8.0*GSL_LOG_DBL_MIN/7.0) { + const double c0 = 0.22579135264472743236; /* log(sqrt(pi/2)) */ + const double t = (10.0 - x) / (x + 2.0); + gsl_sf_result cheb1; + cheb_eval_e(&synchrotron2a_cs, t, &cheb1); + result->val = sqrt(x) * exp(c0-x) * cheb1.val; + result->err = GSL_DBL_EPSILON * result->val * (fabs(c0-x)+1.0); + return GSL_SUCCESS; + } + else { + UNDERFLOW_ERROR(result); + } +} + +/*-*-*-*-*-*-*-*-*-* Functions w/ Natural Prototypes *-*-*-*-*-*-*-*-*-*-*/ + +#include "eval.h" + +double gsl_sf_synchrotron_1(const double x) +{ + EVAL_RESULT(gsl_sf_synchrotron_1_e(x, &result)); +} + +double gsl_sf_synchrotron_2(const double x) +{ + EVAL_RESULT(gsl_sf_synchrotron_2_e(x, &result)); +} diff --git a/gsl-2.5/specfunc/synchrotron.lo b/gsl-2.5/specfunc/synchrotron.lo new file mode 100644 index 00000000..01239b62 --- /dev/null +++ b/gsl-2.5/specfunc/synchrotron.lo @@ -0,0 +1,12 @@ +# synchrotron.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/synchrotron.o' + +# Name of the non-PIC object +non_pic_object='synchrotron.o' + diff --git a/gsl-2.5/specfunc/test b/gsl-2.5/specfunc/test new file mode 100755 index 00000000..72bf174e --- /dev/null +++ b/gsl-2.5/specfunc/test @@ -0,0 +1,228 @@ +#! /bin/sh + +# test - temporary wrapper script for .libs/test +# Generated by libtool (GNU libtool) 2.4.2 +# +# The test program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s/\([`"$\\]\)/\\\1/g' + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command="(cd /home/groups/kipac/chto/package/gsl/gsl-2.5/specfunc; LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LIBRARY_PATH; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; LD_LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/fftw/include:/home/users/chto/lib/fftw/lib:/home/users/chto/lib/healpix/lib:/home/users/chto/lib/namaster/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/include:/home/users/chto/cpp/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LD_LIBRARY_PATH; PATH=/share/software/user/open/curl/7.54.0/bin:/share/software/user/open/libressl/2.5.3/bin:/home/users/chto/lib/cfitsio:/home/users/chto/lib/cfitsio/include:/home/users/chto/lib:/home/users/chto/bin/bin:/home/users/chto/bin:/home/users/chto/.texlive/bin/x86_64-linux:/home/groups/kipac/chto/anaconda2/envs/newenv3/bin:/home/users/chto/.local/bin/include:/home/users/chto/.local/bin/lib:/home/users/chto/.local/bin:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/bin64:/share/software/user/open/fftw/3.3.6/bin:/home/groups/kipac/chto/anaconda2/condabin:/share/software/user/restricted/ifort/2019/bin:/share/software/user/open/gsl/2.3/bin:/share/software/user/srcc/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/dell/srvadmin/bin:/opt/dell/srvadmin/iSM/bin:/home/users/chto/bin; export PATH; gcc -g -O2 -o \$progdir/\$file test_sf.o test_airy.o test_bessel.o test_coulomb.o test_dilog.o test_gamma.o test_hermite.o test_hyperg.o test_legendre.o test_mathieu.o test_sincos_pi.o ./.libs/libgslspecfunc.a ../eigen/.libs/libgsleigen.a ../linalg/.libs/libgsllinalg.a ../sort/.libs/libgslsort.a ../matrix/.libs/libgslmatrix.a ../vector/.libs/libgslvector.a ../blas/.libs/libgslblas.a ../cblas/.libs/libgslcblas.so ../block/.libs/libgslblock.a ../complex/.libs/libgslcomplex.a ../poly/.libs/libgslpoly.a ../ieee-utils/.libs/libgslieeeutils.a ../err/.libs/libgslerr.a ../test/.libs/libgsltest.a ../sys/.libs/libgslsys.a ../utils/.libs/libutils.a -lm -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/cblas/.libs -Wl,-rpath -Wl,/usr/local/lib)" + +# This environment variable determines our operation mode. +if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then + # install mode needs the following variables: + generated_by_libtool_version='2.4.2' + notinst_deplibs=' ../cblas/libgslcblas.la' +else + # When we are sourced in execute mode, $file and $ECHO are already set. + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + file="$0" + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + ECHO="printf %s\\n" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ which is used only on +# windows platforms, and (c) all begin with the string --lt- +# (application programs are unlikely to have options which match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's ../libtool value, followed by no. +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=$0 + shift + for lt_opt + do + case "$lt_opt" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%/[^/]*$%%'` + test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=. + lt_dump_F=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%^.*/%%'` + cat "$lt_dump_D/$lt_dump_F" + exit 0 + ;; + --lt-*) + $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n "$lt_option_debug"; then + echo "test:test:${LINENO}: libtool wrapper (GNU libtool) 2.4.2" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + $ECHO "test:test:${LINENO}: newargv[$lt_dump_args_N]: $lt_arg" + lt_dump_args_N=`expr $lt_dump_args_N + 1` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ + + if test -n "$lt_option_debug"; then + $ECHO "test:test:${LINENO}: newargv[0]: $progdir/$program" 1>&2 + func_lt_dump_args ${1+"$@"} 1>&2 + fi + exec "$progdir/$program" ${1+"$@"} + + $ECHO "$0: cannot exec $program $*" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from $@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case " $* " in + *\ --lt-*) + for lt_wr_arg + do + case $lt_wr_arg in + --lt-*) ;; + *) set x "$@" "$lt_wr_arg"; shift;; + esac + shift + done ;; + esac + func_exec_program_core ${1+"$@"} +} + + # Parse options + func_parse_lt_options "$0" ${1+"$@"} + + # Find the directory that this script lives in. + thisdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + test "x$thisdir" = "x$file" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=`ls -ld "$file" | /usr/bin/sed -n 's/.*-> //p'` + while test -n "$file"; do + destdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + + # If there was a directory component, then change thisdir. + if test "x$destdir" != "x$file"; then + case "$destdir" in + [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;; + *) thisdir="$thisdir/$destdir" ;; + esac + fi + + file=`$ECHO "$file" | /usr/bin/sed 's%^.*/%%'` + file=`ls -ld "$thisdir/$file" | /usr/bin/sed -n 's/.*-> //p'` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no + if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then + # special case for '.' + if test "$thisdir" = "."; then + thisdir=`pwd` + fi + # remove .libs from thisdir + case "$thisdir" in + *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /usr/bin/sed 's%[\\/][^\\/]*$%%'` ;; + .libs ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=`cd "$thisdir" && pwd` + test -n "$absdir" && thisdir="$absdir" + + program=lt-'test' + progdir="$thisdir/.libs" + + if test ! -f "$progdir/$program" || + { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /usr/bin/sed 1q`; \ + test "X$file" != "X$progdir/$program"; }; then + + file="$$-$program" + + if test ! -d "$progdir"; then + mkdir "$progdir" + else + rm -f "$progdir/$file" + fi + + # relink executable if necessary + if test -n "$relink_command"; then + if relink_command_output=`eval $relink_command 2>&1`; then : + else + printf %s\n "$relink_command_output" >&2 + rm -f "$progdir/$file" + exit 1 + fi + fi + + mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null || + { rm -f "$progdir/$program"; + mv -f "$progdir/$file" "$progdir/$program"; } + rm -f "$progdir/$file" + fi + + if test -f "$progdir/$program"; then + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + # Run the actual program with our arguments. + func_exec_program ${1+"$@"} + fi + else + # The program doesn't exist. + $ECHO "$0: error: \`$progdir/$program' does not exist" 1>&2 + $ECHO "This script is just a wrapper for $program." 1>&2 + $ECHO "See the libtool documentation for more information." 1>&2 + exit 1 + fi +fi diff --git a/gsl-2.5/specfunc/test-suite.log b/gsl-2.5/specfunc/test-suite.log new file mode 100644 index 00000000..d603e3d2 --- /dev/null +++ b/gsl-2.5/specfunc/test-suite.log @@ -0,0 +1,14 @@ +====================================== + gsl 2.5: specfunc/test-suite.log +====================================== + +# TOTAL: 1 +# PASS: 1 +# SKIP: 0 +# XFAIL: 0 +# FAIL: 0 +# XPASS: 0 +# ERROR: 0 + +.. contents:: :depth: 2 + diff --git a/gsl-2.5/specfunc/test.log b/gsl-2.5/specfunc/test.log new file mode 100644 index 00000000..1a35144c --- /dev/null +++ b/gsl-2.5/specfunc/test.log @@ -0,0 +1 @@ +Completed [54791230/54791230] diff --git a/gsl-2.5/specfunc/test.trs b/gsl-2.5/specfunc/test.trs new file mode 100644 index 00000000..3f0f396c --- /dev/null +++ b/gsl-2.5/specfunc/test.trs @@ -0,0 +1,4 @@ +:test-result: PASS +:global-test-result: PASS +:recheck: no +:copy-in-global-log: no diff --git a/gsl-2.5/specfunc/test_airy.c b/gsl-2.5/specfunc/test_airy.c new file mode 100644 index 00000000..ea5a2d53 --- /dev/null +++ b/gsl-2.5/specfunc/test_airy.c @@ -0,0 +1,134 @@ +/* specfunc/test_airy.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ + +#include +#include +#include +#include "test_sf.h" + + +int test_airy(void) +{ + int s = 0; + int m = GSL_MODE_DEFAULT; + gsl_sf_result r; + + /** functions */ + + TEST_SF(s, gsl_sf_airy_Ai_e, (-500.0, m, &r), 0.0725901201040411396, TEST_TOL4, GSL_SUCCESS); + TEST_SF(s, gsl_sf_airy_Ai_e, (-5.0, m, &r), 0.3507610090241142, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_airy_Ai_e, (-0.3000000000000094, m, &r), 0.4309030952855831, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_airy_Ai_e, (0.6999999999999907, m, &r), 0.1891624003981519, TEST_TOL0, GSL_SUCCESS); + + /* This original value seemed to be slightly inaccurate in the last place. + I recomputed it with pari to get the new value which end in 885 + instead of 882 */ + /* + TEST_SF(s, gsl_sf_airy_Ai_e, (1.649999999999991, m, &r), 0.05831058618720882, TEST_TOL0, GSL_SUCCESS); + */ + + TEST_SF(s, gsl_sf_airy_Ai_e, (1.649999999999991, m, &r), 0.0583105861872088521, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_airy_Ai_e, (2.54999999999999, m, &r), 0.01446149513295428, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_airy_Ai_e, (3.499999999999987, m, &r), 0.002584098786989702, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_airy_Ai_e, (5.39999999999998, m, &r), 4.272986169411866e-05, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_airy_Ai_scaled_e, (-5.0, m, &r), 0.3507610090241142, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_airy_Ai_scaled_e, (0.6999999999999907, m, &r), 0.2795125667681217, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_airy_Ai_scaled_e, (1.649999999999991, m, &r), 0.2395493001442741, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_airy_Ai_scaled_e, (2.54999999999999, m, &r), 0.2183658595899388, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_airy_Ai_scaled_e, (3.499999999999987, m, &r), 0.2032920808163519, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_airy_Ai_scaled_e, (5.39999999999998, m, &r), 0.1836050093282229, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_airy_Bi_e, (-500.0, m, &r), -0.094688570132991028, TEST_TOL4, GSL_SUCCESS); + TEST_SF(s, gsl_sf_airy_Bi_e, (-5.0, m, &r), -0.1383691349016005, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_airy_Bi_e, (0.6999999999999907, m, &r), 0.9733286558781599, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_airy_Bi_e, (1.649999999999991, m, &r), 2.196407956850028, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_airy_Bi_e, (2.54999999999999, m, &r), 6.973628612493443, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_airy_Bi_e, (3.499999999999987, m, &r), 33.05550675461069, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_airy_Bi_e, (5.39999999999998, m, &r), 1604.476078241272, TEST_TOL1, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_airy_Bi_scaled_e, (-5.0, m, &r), -0.1383691349016005, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_airy_Bi_scaled_e, (0.6999999999999907, m, &r), 0.6587080754582302, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_airy_Bi_scaled_e, (1.649999999999991, m, &r), 0.5346449995597539, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_airy_Bi_scaled_e, (2.54999999999999, m, &r), 0.461835455542297, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_airy_Bi_scaled_e, (3.499999999999987, m, &r), 0.4201771882353061, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_airy_Bi_scaled_e, (5.39999999999998, m, &r), 0.3734050675720473, TEST_TOL0, GSL_SUCCESS); + + + /** derivatives */ + + TEST_SF(s, gsl_sf_airy_Ai_deriv_e, (-5.0, m, &r), 0.3271928185544435, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_airy_Ai_deriv_e, (-0.5500000000000094, m, &r), -0.1914604987143629, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_airy_Ai_deriv_e, (0.4999999999999906, m, &r), -0.2249105326646850, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_airy_Ai_deriv_e, (1.899999999999992, m, &r), -0.06043678178575718, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_airy_Ai_deriv_e, (3.249999999999988, m, &r), -0.007792687926790889, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_airy_Ai_deriv_e, (5.199999999999981, m, &r), -0.0001589434526459543, TEST_TOL1, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_airy_Ai_deriv_scaled_e, (-5.0, m, &r), 0.3271928185544435, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_airy_Ai_deriv_scaled_e, (0.5499999999999906, m, &r), -0.2874057279170166, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_airy_Ai_deriv_scaled_e, (1.499999999999991, m, &r), -0.3314199796863637, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_airy_Ai_deriv_scaled_e, (2.49999999999999, m, &r), -0.3661089384751620, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_airy_Ai_deriv_scaled_e, (3.649999999999986, m, &r), -0.3974033831453963, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_airy_Ai_deriv_scaled_e, (6.299999999999977, m, &r), -0.4508799189585947, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_airy_Bi_deriv_e, (-5.0, m, &r), 0.778411773001899, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_airy_Bi_deriv_e, (-0.5500000000000094, m, &r), 0.5155785358765014, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_airy_Bi_deriv_e, (0.4999999999999906, m, &r), 0.5445725641405883, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_airy_Bi_deriv_e, (1.899999999999992, m, &r), 3.495165862891568, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_airy_Bi_deriv_e, (3.249999999999988, m, &r), 36.55485149250338, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_airy_Bi_deriv_e, (5.199999999999981, m, &r), 2279.748293583233, TEST_TOL1, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_airy_Bi_deriv_scaled_e, (-5.0, m, &r), 0.778411773001899, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_airy_Bi_deriv_scaled_e, (0.5499999999999906, m, &r), 0.4322811281817566, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_airy_Bi_deriv_scaled_e, (1.499999999999991, m, &r), 0.5542307563918037, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_airy_Bi_deriv_scaled_e, (2.49999999999999, m, &r), 0.6755384441644985, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_airy_Bi_deriv_scaled_e, (3.649999999999986, m, &r), 0.7613959373000228, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_airy_Bi_deriv_scaled_e, (6.299999999999977, m, &r), 0.8852064139737571, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_airy_zero_Ai_e, (2, &r), -4.087949444130970617, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_airy_zero_Ai_e, (50, &r), -38.02100867725525443, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_airy_zero_Ai_e, (100, &r), -60.45555727411669871, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_airy_zero_Ai_e, (110, &r), -64.43135670991324811, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_airy_zero_Bi_e, (2, &r), -3.271093302836352716, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_airy_zero_Bi_e, (50, &r), -37.76583438165180116, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_airy_zero_Bi_e, (100, &r), -60.25336482580837088, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_airy_zero_Bi_e, (110, &r), -64.2355167606561537, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_airy_zero_Bi_e, (111, &r), -64.6268994819519378, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_airy_zero_Bi_e, (200, &r), -95.88699147356682665, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_airy_zero_Ai_deriv_e, (2, &r), -3.248197582179836561, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_airy_zero_Ai_deriv_e, (50, &r), -37.76565910053887108, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_airy_zero_Ai_deriv_e, (100, &r), -60.25329596442479317, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_airy_zero_Ai_deriv_e, (110, &r), -64.23545617243546956, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_airy_zero_Ai_deriv_e, (1000, &r), -280.9378080358935071, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_airy_zero_Bi_deriv_e, (2, &r), -4.073155089071828216, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_airy_zero_Bi_deriv_e, (50, &r), -38.02083574095788210, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_airy_zero_Bi_deriv_e, (100, &r), -60.45548887257140819, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_airy_zero_Bi_deriv_e, (110, &r), -64.43129648944845060, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_airy_zero_Bi_deriv_e, (111, &r), -64.82208737584206093, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_airy_zero_Bi_deriv_e, (200, &r), -96.04731050310324450, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_airy_zero_Bi_deriv_e, (1000, &r), -281.0315164471118527, TEST_TOL0, GSL_SUCCESS); + + return s; +} diff --git a/gsl-2.5/specfunc/test_bessel.c b/gsl-2.5/specfunc/test_bessel.c new file mode 100644 index 00000000..6810da41 --- /dev/null +++ b/gsl-2.5/specfunc/test_bessel.c @@ -0,0 +1,1200 @@ +/* specfunc/test_bessel.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ + +#include +#include +#include +#include "test_sf.h" + +static double J[100]; +static double Y[100]; +static double I[100]; +static double K[100]; + +int test_bessel(void) +{ + gsl_sf_result r; + int i; + int s = 0; + int sa; + + TEST_SF(s, gsl_sf_bessel_J0_e, (0.1, &r), 0.99750156206604003230, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_J0_e, (2.0, &r), 0.22389077914123566805, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_J0_e, (100.0, &r), 0.019985850304223122424, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_J0_e, (1.0e+10, &r), 2.1755917502468917269e-06, TEST_SQRT_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_bessel_J1_e, (0.1, &r), 0.04993752603624199756, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_J1_e, (2.0, &r), 0.57672480775687338720, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_J1_e, (100.0, &r), -0.07714535201411215803, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_J1_e, (1.0e+10, &r), -7.676508175684157103e-06, TEST_TOL4, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_bessel_Jn_e, (4, 0.1, &r), 2.6028648545684032338e-07, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jn_e, (5, 2.0, &r), 0.007039629755871685484, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jn_e, (10, 20.0, &r), 0.18648255802394508321, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jn_e, (100, 100.0, &r), 0.09636667329586155967, TEST_TOL0, GSL_SUCCESS); + + /* exercise the BUG#3 problem */ + TEST_SF(s, gsl_sf_bessel_Jn_e, (2, 900.0, &r), -0.019974345269680646400, TEST_TOL4, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jn_e, (2, 15000.0, &r), -0.0020455820181216382666, TEST_TOL4, GSL_SUCCESS); + +#ifdef TEST_LARGE + TEST_SF(s, gsl_sf_bessel_Jn_e, (0, 1.0e+10, &r), 2.1755917502468917269e-06, TEST_SQRT_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jn_e, (1, 1.0e+10, &r), -7.676508175684157103e-06, TEST_TOL4, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jn_e, (0, 20000, &r), 0.00556597490495494615709982972, TEST_TOL4, GSL_SUCCESS); +#endif + + /* Testcase demonstrating long calculation time: + Time spent in gsl_sf_bessel_J_CF1 for large x<1000 and n<5 + grows in proportion to x + Jonny Taylor */ + TEST_SF(s, gsl_sf_bessel_Jn_e, (45, 900.0, &r), 0.02562434700634278108, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_bessel_Y0_e, (0.1, &r), -1.5342386513503668441, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Y0_e, (2, &r), 0.5103756726497451196, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Y0_e, (256.0, &r), -0.03381290171792454909 , TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Y0_e, (4294967296.0, &r), 3.657903190017678681e-06, TEST_SQRT_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_bessel_Y1_e, (0.1, &r), -6.45895109470202698800, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Y1_e, (2, &r), -0.10703243154093754689, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Y1_e, (100.0, &r), -0.020372312002759793305, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Y1_e, (4294967296.0, &r), 0.000011612249378370766284, TEST_TOL4, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_bessel_Yn_e, (4, 0.1, &r), -305832.29793353160319, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Yn_e, (5, 2, &r), -9.935989128481974981, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Yn_e, (100, 100.0, &r), -0.16692141141757650654, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Yn_e, (100, 4294967296.0, &r), 3.657889671577715808e-06, TEST_SQRT_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Yn_e, (1000, 4294967296.0, &r), 3.656551321485397501e-06, 2.0e-05, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_bessel_Yn_e, (2, 15000.0, &r), -0.006185217273358617849, TEST_TOL4, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_bessel_I0_scaled_e, (1e-10, &r), 0.99999999990000000001, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_I0_scaled_e, (0.1, &r), 0.90710092578230109640, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_I0_scaled_e, (2, &r), 0.30850832255367103953, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_I0_scaled_e, (100.0, &r), 0.03994437929909668265, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_I0_scaled_e, (65536.0, &r), 0.0015583712551952223537, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_bessel_I1_scaled_e, (0.1, &r), 0.04529844680880932501, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_I1_scaled_e, (2, &r), 0.21526928924893765916, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_I1_scaled_e, (100.0, &r), 0.03974415302513025267, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_I1_scaled_e, (65536.0, &r), 0.0015583593657207350452, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_bessel_In_scaled_e, ( -4, 0.1, &r), 2.3575258620054605307e-07, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_In_scaled_e, ( 4, 0.1, &r), 2.3575258620054605307e-07, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_In_scaled_e, ( 5, 2.0, &r), 0.0013297610941881578142, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_In_scaled_e, ( 100, 100.0, &r), 1.7266862628167695785e-22, TEST_TOL0, GSL_SUCCESS); + + /* BJG: the "exact" values in the following two tests were originally computed from the + taylor series for I_nu using "long double" and rescaling. The last few digits + were inaccurate due to cumulative roundoff. + + BJG: 2006/05 I have now replaced these with the term asymptotic + expansion from A&S 9.7.1 which should be fully accurate. */ + + TEST_SF(s, gsl_sf_bessel_In_scaled_e, ( 2, 1e7, &r), 1.261566024466416433e-4, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_In_scaled_e, ( 2, 1e8, &r), 3.989422729212649531e-5, TEST_TOL2, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_bessel_I0_e, (0.1, &r), 1.0025015629340956014, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_I0_e, (2.0, &r), 2.2795853023360672674, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_I0_e, (100.0, &r), 1.0737517071310738235e+42, TEST_TOL2, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_bessel_I1_e, (0.1, &r), 0.05006252604709269211, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_I1_e, (2.0, &r), 1.59063685463732906340, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_I1_e, (100.0, &r), 1.0683693903381624812e+42, TEST_TOL2, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_bessel_In_e, ( 4, 0.1, &r), 2.6054690212996573677e-07, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_In_e, ( 5, 2.0, &r), 0.009825679323131702321, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_In_e, ( 100, 100.0, &r), 4.641534941616199114e+21, TEST_TOL2, GSL_SUCCESS); + + + TEST_SF(s, gsl_sf_bessel_K0_scaled_e, (0.1, &r), 2.6823261022628943831, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_K0_scaled_e, (1.95, &r), 0.8513330938802157074894, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_K0_scaled_e, (2.0, &r), 0.8415682150707714179, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_K0_scaled_e, (6.0, &r), 0.50186313086214003217346, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_K0_scaled_e, (100.0, &r), 0.1251756216591265789, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_bessel_K1_scaled_e, (0.1, &r), 10.890182683049696574, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_K1_scaled_e, (1.95, &r), 1.050086915104152747182, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_K1_scaled_e, (2.0, &r), 1.0334768470686885732, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_K1_scaled_e, (6.0, &r), 0.5421759102771335382849, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_K1_scaled_e, (100.0, &r), 0.1257999504795785293, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_bessel_Kn_scaled_e, ( 4, 0.1, &r), 530040.2483725626207, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Kn_scaled_e, ( 5, 2.0, &r), 69.68655087607675118, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Kn_scaled_e, ( 100, 100.0, &r), 2.0475736731166756813e+19, TEST_TOL1, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_bessel_K0_e, (0.1, &r), 2.4270690247020166125, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_K0_e, (1.95, &r), 0.1211226255426818887894, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_K0_e, (2.0, &r), 0.11389387274953343565, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_K0_e, (100.0, &r), 4.656628229175902019e-45, TEST_TOL2, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_bessel_K1_e, (0.1, &r), 9.853844780870606135, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_K1_e, (1.95, &r), 0.1494001409315894276793, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_K1_e, (2.0, &r), 0.13986588181652242728, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_K1_e, (100.0, &r), 4.679853735636909287e-45, TEST_TOL2, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_bessel_Kn_e, ( 4, 0.1, &r), 479600.2497925682849, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Kn_e, ( 5, 2.0, &r), 9.431049100596467443, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Kn_e, ( 100, 100.0, &r), 7.617129630494085416e-25, TEST_TOL2, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_bessel_j0_e, (-10.0, &r), -0.05440211108893698134, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_j0_e, (0.001, &r), 0.9999998333333416667, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_j0_e, ( 1.0, &r), 0.84147098480789650670, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_j0_e, ( 10.0, &r), -0.05440211108893698134, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_j0_e, (100.0, &r), -0.005063656411097587937, TEST_TOL1, GSL_SUCCESS); +#ifdef FIXME + TEST_SF(s, gsl_sf_bessel_j0_e, (1048576.0, &r), 3.1518281938718287624e-07, TEST_TOL2, GSL_SUCCESS); +#endif + + /* these values are from Mathematica */ +#ifdef FIXME + TEST_SF(s, gsl_sf_bessel_j0_e, (1.0e18, &r), -9.9296932074040507620955e-19, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_j0_e, (1.0e20, &r), -6.4525128526578084420581e-21, TEST_TOL0, GSL_SUCCESS); +#endif + + TEST_SF(s, gsl_sf_bessel_j1_e, (-10.0, &r), -0.07846694179875154709, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_j1_e, (0.01, &r), 0.003333300000119047399, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_j1_e, ( 1.0, &r), 0.30116867893975678925, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_j1_e, ( 10.0, &r), 0.07846694179875154709, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_j1_e, (100.0, &r), -0.008673825286987815220, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_j1_e, (1048576.0, &r), -9.000855242905546158e-07, TEST_TOL0, GSL_SUCCESS); + + /*TEST_SF(s, gsl_sf_bessel_j1_e, (1.0e18, &r), -1.183719902187107336049e-19, TEST_TOL0, GSL_SUCCESS);*/ + + TEST_SF(s, gsl_sf_bessel_j2_e, (-10.0, &r), 0.07794219362856244547, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_j2_e, (0.01, &r), 6.666619047751322551e-06, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_j2_e, ( 1.0, &r), 0.06203505201137386110, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_j2_e, ( 10.0, &r), 0.07794219362856244547, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_j2_e, (100.0, &r), 0.004803441652487953480, TEST_TOL1, GSL_SUCCESS); + +#if 0 + /* bug #45730; the bug should be fixed, but these tests are disabled since error computation + is not correct for these inputs */ + TEST_SF(s, gsl_sf_bessel_j2_e, (1048576.0, &r), -3.1518539455252413111e-07, TEST_TOL3, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_j2_e, (-1.0e22, &r), 5.23214785395139e-23, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_j2_e, (-1.0e21, &r), 7.449501119831337e-22, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_j2_e, (-1.0e20, &r), 7.639704044417282e-21, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_j2_e, (-1.0e19, &r), -3.749051695507179e-20, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_j2_e, (1.0e19, &r), -3.749051695507179e-20, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_j2_e, (1.0e20, &r), 7.639704044417282e-21, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_j2_e, (1.0e21, &r), 7.449501119831337e-22, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_j2_e, (1.0e22, &r), 5.23214785395139e-23, TEST_TOL2, GSL_SUCCESS); +#endif + + TEST_SF(s, gsl_sf_bessel_jl_e, (0, 0.0, &r), 1.0, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_bessel_jl_e, (1, 10.0, &r), 0.07846694179875154709000, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_jl_e, (5, 1.0, &r), 0.00009256115861125816357, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_jl_e, (10, 10.0, &r), 0.06460515449256426427, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_jl_e, (100, 100.0, &r), 0.010880477011438336539, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_jl_e, (2000, 1048576.0, &r), 7.449384239168568534e-07, TEST_SQRT_TOL0, GSL_SUCCESS); + + /* related to BUG#3 problem */ + TEST_SF(s, gsl_sf_bessel_jl_e, (2, 900.0, &r), -0.0011089115568832940086, TEST_TOL4, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_jl_e, (2, 15000.0, &r), -0.00005955592033075750554, TEST_TOL4, GSL_SUCCESS); + + /* Bug report by Mario Santos, value computed from AS 10.1.8 */ + TEST_SF(s, gsl_sf_bessel_jl_e, (100, 1000.0, &r), -0.00025326311230945818285, TEST_TOL4, GSL_SUCCESS); + + /* Bug reported by Koichi Takahashi , + computed from Pari besseljh(n,x) and AS 10.1.1 */ + + TEST_SF(s, gsl_sf_bessel_jl_e, (30, 3878.62, &r), -0.00023285567034330878410434732790, TEST_TOL4, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_jl_e, (49, 9912.63, &r), 5.2043354544842669214485107019E-5 , TEST_TOL4, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_jl_e, (49, 9950.35, &r), 5.0077368819565969286578715503E-5 , TEST_TOL4, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_jl_e, (52, 9930.51, &r), -7.4838588266727718650124475651E-6 , TEST_TOL4, GSL_SUCCESS); + + /* bug report #37209 */ + TEST_SF(s, gsl_sf_bessel_jl_e, (364, 36.62, &r), 1.118907148986954E-318, TEST_TOL0, GSL_SUCCESS); + /*TEST_SF(s, gsl_sf_bessel_jl_e, (149, 1.0, &r), 2.6599182755508469E-307, TEST_TOL0, GSL_SUCCESS);*/ + + TEST_SF(s, gsl_sf_bessel_y0_e, (0.001, &r), -999.99950000004166670, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_y0_e, ( 1.0, &r), -0.5403023058681397174, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_y0_e, ( 10.0, &r), 0.08390715290764524523, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_y0_e, (100.0, &r), -0.008623188722876839341, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_y0_e, (65536.0, &r), 0.000011014324202158573930, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_y0_e, (4294967296.0, &r), 2.0649445131370357007e-10, TEST_SQRT_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_bessel_y1_e, ( 0.01, &r), -10000.499987500069444, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_y1_e, ( 1.0, &r), -1.3817732906760362241, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_y1_e, ( 10.0, &r), 0.06279282637970150586, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_y1_e, (100.0, &r), 0.004977424523868819543, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_y1_e, (4294967296.0, &r), 1.0756463271573404688e-10, TEST_SQRT_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_bessel_y2_e, ( 0.01, &r), -3.0000500012499791668e+06, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_y2_e, ( 1.0, &r), -3.605017566159968955, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_y2_e, ( 10.0, &r), -0.06506930499373479347, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_y2_e, (100.0, &r), 0.008772511458592903927, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_y2_e, (4294967296.0, &r), -2.0649445123857054207e-10, TEST_SQRT_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_bessel_yl_e, (0, 0.01, &r), -99.995000041666528, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_yl_e, (0, 1.0, &r), -0.54030230586813972, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_yl_e, (1, 10.0, &r), 0.062792826379701506, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_yl_e, (5, 1.0, &r), -999.44034339223641, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_yl_e, (10, 0.01, &r), -6.5473079797378378e+30, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_yl_e, (10, 10.0, &r), -0.172453672088057849, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_yl_e, (100, 1.0, &r), -6.6830794632586775e+186, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_yl_e, (100, 100.0, &r), -0.0229838504915622811, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_yl_e, (2000, 1048576.0, &r), 5.9545201447146155e-07, TEST_SQRT_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_bessel_i0_scaled_e, (0.0, &r), 1.0, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_i0_scaled_e, (0.1, &r), 0.9063462346100907067, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_i0_scaled_e, (2.0, &r), 0.24542109027781645493, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_i0_scaled_e, (100.0, &r), 0.005000000000000000000, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_bessel_i1_scaled_e, (0.0, &r), 0.0, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_i1_scaled_e, (0.1, &r), 0.030191419289002226846, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_i1_scaled_e, (2.0, &r), 0.131868364583275317610, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_i1_scaled_e, (100.0, &r), 0.004950000000000000000, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_bessel_i2_scaled_e, (0.0, &r), 0.0, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_i2_scaled_e, (0.1, &r), 0.0006036559400239012567, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_i2_scaled_e, (2.0, &r), 0.0476185434029034785100, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_i2_scaled_e, (100.0, &r), 0.0048515000000000000000, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_bessel_il_scaled_e, ( 0, 0.0, &r), 1.0, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_il_scaled_e, ( 1, 0.0, &r), 0.0, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_il_scaled_e, ( 4, 0.001, &r), 1.0571434341190365013e-15, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_il_scaled_e, ( 4, 0.1, &r), 9.579352242057134927e-08, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_il_scaled_e, ( 5, 2.0, &r), 0.0004851564602127540059, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_il_scaled_e, ( 5, 100.0, &r), 0.004300446777500000000, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_il_scaled_e, ( 100, 100.0, &r), 1.3898161964299132789e-23, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_bessel_k0_scaled_e, (0.1, &r), 15.707963267948966192, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_k0_scaled_e, (2.0, &r), 0.7853981633974483096, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_k0_scaled_e, (100.0, &r), 0.015707963267948966192, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_bessel_k1_scaled_e, (0.1, &r), 172.78759594743862812, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_k1_scaled_e, (2.0, &r), 1.1780972450961724644, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_k1_scaled_e, (100.0, &r), 0.015865042900628455854, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_bessel_k2_scaled_e, (0.1, &r), 5199.335841691107810, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_k2_scaled_e, (2.0, &r), 2.5525440310417070063, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_k2_scaled_e, (100.0, &r), 0.016183914554967819868, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_bessel_kl_scaled_e, ( 4, 1.0/256.0, &r), 1.8205599816961954439e+14, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_kl_scaled_e, ( 4, 1.0/8.0, &r), 6.1173217814406597530e+06, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_kl_scaled_e, ( 5, 2.0, &r), 138.10735829492005119, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_kl_scaled_e, ( 100, 100.0, &r), 3.985930768060258219e+18, TEST_TOL1, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_bessel_Jnu_e, (0.0001, 1.0, &r), 0.7652115411876708497, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (0.0001, 10.0, &r), -0.2459270166445205, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (0.0009765625, 10.0, &r), -0.2458500798634692, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (0.75, 1.0, &r), 0.5586524932048917478, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (0.75, 10.0, &r), -0.04968928974751508135, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, ( 1.0, 0.001, &r), 0.0004999999375000026, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, ( 1.0, 1.0, &r), 0.4400505857449335160, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, ( 1.75, 1.0, &r), 0.168593922545763170103, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (30.0, 1.0, &r), 3.482869794251482902e-42, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (30.0, 100.0, &r), 0.08146012958117222297, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (10.0, 1.0, &r), 2.6306151236874532070e-10, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (10.0, 100.0, &r), -0.05473217693547201474, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (10.2, 100.0, &r), -0.03548919161046526864, TEST_TOL2, GSL_SUCCESS); + + /* related to BUG#3 problem */ + TEST_SF(s, gsl_sf_bessel_Jnu_e, (2.0, 900.0, &r), -0.019974345269680646400, TEST_TOL4, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (2.0, 15000.0, &r), -0.0020455820181216382666, TEST_TOL4, GSL_SUCCESS); + + /* Jnu for negative integer nu */ + + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-13, 4.3966088395743909188e-1, &r), -4.4808688873945295916e-19, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-43, 3.2953184511924683369e-1, &r), -3.4985116870357066158e-87, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-8, 3.5081119129046332101e-1, &r), 2.2148387185334257376e-11, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-17, 1.6717234250796879247e-1, &r), -1.3336696368048418208e-33, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-20, 1.0085435516296562067e-1, &r), 4.6463938513369299663e-45, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-29, 1.0423882905853389231e-1, &r), -7.0211488877617616588e-69, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-10, 2.014635069337132169e-1, &r), 2.9614218635575180136e-17, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-23, 3.3470953660313309239e-1, &r), -5.3786691977970313226e-41, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-13, 1.796487688043502395e-2, &r), -3.9796275104402232636e-37, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-30, 4.3851505455005663023e-1, &r), 6.3723816221242007043e-53, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-31, 2.9134673992671269075e-1, &r), -1.4108323502121482121e-60, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-28, 7.6696967407852829575e-1, &r), 7.2211466723046636958e-42, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-6, 1.9829576302527197691e-2, &r), 1.3193561299244410609e-15, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-26, 4.1513019703157674847e-1, &r), 4.362149422492811209e-45, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-19, 1.3033500482689031834e-2, &r), -2.4071043287214877014e-59, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-4, 7.2050154387915780891e-1, &r), 6.8377203227324865568e-4, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-36, 9.058436592111083308e-1, &r), 1.1063535538518134862e-54, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-37, 4.4893454860671838425e-2, &r), -7.1436404620419702996e-105, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-25, 1.4253284590439372148e-1, &r), -1.3532982149810467304e-54, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-35, 6.8075538970323047806e-1, &r), -4.0087398199591044218e-57, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-9, 6.9978823056579836732e-2, &r), -2.1657760307485265867e-19, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-30, 8.3903642499214990225e-1, &r), 1.8046736761082165751e-44, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-43, 6.543891152683782553e-1, &r), -2.2618181452671187564e-74, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-1, 2.557673774862201033e-1, &r), -1.2684081505646766845e-1, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-21, 2.3961944728579204361e-1, &r), -8.7037441094405713341e-40, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-13, 3.7732868931080794955e-1, &r), -6.1458679923678486123e-20, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-33, 3.8478064679256785588e-1, &r), -2.7471851206170506902e-61, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-50, 8.3045728127372512419e-1, &r), 2.6904315506244885678e-84, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-33, 3.4391840270211572065e-1, &r), -6.7604474418522862789e-63, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-23, 4.4699489157302132678e-1, &r), -4.1674520864249550489e-38, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-23, 8.6894302936681315656e-1, &r), -1.8080036072447165775e-31, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-24, 2.3997647040322801696e-1, &r), 1.2775332144705955465e-46, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-4, 9.7688590680055575385e-1, &r), 2.260676935437026869e-3, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-20, 8.9090003293395823104e-1, &r), 3.8525697232471553813e-26, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-37, 9.4057990133775869779e-1, &r), -5.4483632006108552908e-56, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-1, 2.6641070579761597867e-1, &r), -1.3202706692617745567e-1, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-7, 9.8878610880180753494e-1, &r), -1.3892626129288932172e-6, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-42, 3.1042396387236895292e-1, &r), 7.4291433893935351027e-86, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-18, 6.8722270094498481586e-1, &r), 6.9210950943508574463e-25, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-16, 1.6113707818439830316e-2, &r), 1.5066992425677873707e-47, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-31, 3.0720392023079679622e-1, &r), -7.2938615192106070364e-60, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-8, 3.4957196590626821859e-1, &r), 2.153068469114375124e-11, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-4, 9.9805150837159144851e-1, &r), 2.4578749047519916152e-3, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-8, 8.4538260733781281419e-1, &r), 2.4776262290872395403e-8, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-21, 7.8935512795174026579e-1, &r), -6.4516652247824702208e-29, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-32, 3.4859401756229795902e-1, &r), 1.9985100102959434086e-60, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-28, 9.2530929240293814377e-1, &r), 1.3798987861611642315e-39, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-32, 5.7276907866586953775e-1, &r), 1.5890407703711501803e-53, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-16, 8.6364032267280037696e-1, &r), 6.9097436254460436398e-20, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-24, 8.1065458967451038451e-2, &r), 6.2316950805227520253e-58, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-17, 6.946415511078842723e-1, &r), -4.3495405983099048944e-23, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-14, 2.7619565270505476723e-1, &r), 1.0511271746088180311e-23, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-7, 8.579791601466317093e-2, &r), -5.3039175204559594309e-14, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-50, 7.4681490716561041968e-1, &r), 1.3331741219055661824e-86, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-30, 9.6631424224612452556e-1, &r), 1.2465815577059566852e-42, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-14, 2.6745819874317492788e-1, &r), 6.7024985048974981757e-24, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-22, 3.6947309321414497419e-1, &r), 6.4975710352073715961e-38, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-49, 2.3389602803779083655e-2, &r), -3.5281224467005794333e-158, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-48, 7.7482504299905127354e-1, &r), 1.3711857024107478291e-81, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-30, 6.5337950709230049969e-1, &r), 9.9749347191786840601e-48, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-29, 5.4117488569210959438e-1, &r), -3.8843890347204927665e-48, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-50, 9.4038774092645791075e-1, &r), 1.3455212768163778034e-81, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-1, 5.627399919447310892e-1, &r), -2.703780920058947009e-1, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-35, 7.9925999507829895011e-2, &r), -1.1060656306690664139e-89, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-10, 2.8875439067692705135e-3, &r), 1.0844833648855202142e-35, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-31, 2.7645446745852278572e-1, &r), -2.7740931384652548129e-61, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-12, 8.5374968606378578252e-1, &r), 7.5366644001760905687e-14, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-11, 2.2997159465452075155e-1, &r), -1.1626579415654480052e-18, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-47, 5.8616043503503357359e-1, &r), -3.4270544836018351049e-85, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-24, 8.4884849730214263521e-1, &r), 1.8679667366331791405e-33, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-24, 5.3943176031162412158e-1, &r), 3.5300994115064965228e-38, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-3, 9.3387179309343112648e-1, &r), -1.6062668879215016378e-2, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-20, 5.5061917642540109891e-1, &r), 2.5629166990385734238e-30, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-26, 2.9315675715515822781e-1, &r), 5.1505442739915338391e-49, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-6, 8.9079715253593128884e-1, &r), 1.0539758479683914316e-5, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-30, 9.1220250697048036241e-2, &r), 2.2291985671052015068e-73, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-49, 3.2934552845357396486e-1, &r), -6.7628009346158039786e-102, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-20, 6.2008856084878849548e-3, &r), 2.7691703032688977815e-69, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-23, 7.1620177578706903472e-1, &r), -2.124755495743639839e-33, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-29, 5.1124413385957329246e-1, &r), -7.462204354283390559e-49, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-23, 6.7405321505832900803e-1, &r), -5.2689769204867120958e-34, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-31, 7.6828173704641609615e-2, &r), -1.600162678935095954e-78, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-4, 7.8546641070654814244e-1, &r), 9.610534504452577567e-4, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-39, 7.8708523270381710591e-1, &r), -7.8237015591341025437e-63, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-8, 1.1973778137874968338e-1, &r), 4.0918170073170305674e-15, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-22, 7.9699790929323855652e-1, &r), 1.4309765990568672215e-30, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-11, 4.4800161319259052168e-1, &r), -1.7773520138988139169e-15, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-39, 9.2637892745877041811e-1, &r), -4.4944192865215894733e-60, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-29, 4.6475617572623309956e-1, &r), -4.7026155154566357963e-50, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-25, 4.6435749048262147537e-1, &r), -8.9952935327704632698e-42, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-28, 9.6511079209639008185e-1, &r), 4.4842768640542298547e-39, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-36, 3.8411791760130458261e-2, &r), 4.296403338839098526e-104, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-6, 2.891145018145052606e-1, &r), 1.2636012998902815302e-8, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-43, 3.0866754076112185885e-1, &r), -2.1010663709383681337e-88, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-44, 8.3972445789951961023e-1, &r), 9.7813493638738341846e-72, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-22, 8.2307293342676789357e-1, &r), 2.9041436661554638719e-30, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-12, 9.8857250941935924585e-1, &r), 4.357505306871049656e-13, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-47, 9.9901153675544108048e-1, &r), -2.6090278787375958472e-74, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-44, 2.8286777063559952163e-1, &r), 1.5832896249242322418e-92, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-10, 9.7638349947419439863e-1, &r), 2.0735913941162063742e-10, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-36, 4.6452631984005212745e-1, &r), 4.0190510760125038996e-65, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-25, 8.2954737598010312336e-1, &r), -1.7855017422981225812e-35, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-29, 4.2326977999795604681e-1, &r), -3.1249531389372439734e-51, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-9, 6.339167576518494852e-1, &r), -8.8082994072251150317e-11, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-27, 7.4535258299077637954e-1, &r), -2.4368032520208918805e-40, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-45, 8.0998976704970278418e-1, &r), -1.8024726219976677441e-74, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-24, 5.3437414610693284794e-1, &r), 2.8159486268019058346e-38, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-19, 3.6987646459831328184e-1, &r), -9.7200835901252686409e-32, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-49, 4.7308684164506190021e-1, &r), -3.4438316393709775799e-94, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-42, 8.4616849424460901479e-1, &r), 1.4469107537397962381e-67, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-39, 8.6819804427642418616e-1, &r), -3.5837055310896411954e-61, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-28, 4.1490163307722590922e-1, &r), 2.448154551562710141e-49, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-25, 6.312651668273163642e-1, &r), -1.9374739456138691106e-38, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-32, 5.3525470388026220677e-1, &r), 1.8191207037881755277e-54, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-13, 9.2605599515408535679e-3, &r), -7.2212651931099339154e-41, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-37, 4.8798589647640992562e-1, &r), -1.5614996577959031121e-66, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-37, 2.2096551301466541766e-2, &r), -2.9050812034192451665e-116, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-42, 1.8092873560926168207e-1, &r), 1.0575388628113044972e-95, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-22, 4.2954143428969324083e-1, &r), 1.7857221060719548205e-36, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-41, 1.7704659657689619579e-1, &r), -2.017674513721498041e-93, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-3, 8.8755155653793053987e-1, &r), -1.3862799262620708632e-2, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-1, 6.7617657704638521874e-1, &r), -3.1913053561511127823e-1, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-34, 6.4464304038438048178e-1, &r), 6.4622314654558520448e-56, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-41, 7.2625991432244163042e-1, &r), -2.7337118024791538344e-68, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-3, 6.357184822423154937e-1, &r), -5.2186206749718741014e-3, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-6, 8.4999778579632777264e-1, &r), 7.9757193518631922586e-6, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-47, 4.9270801771231759268e-1, &r), -9.7743102162756354643e-89, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-44, 3.0382431918975667824e-1, &r), 3.6749344196700669304e-91, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-21, 8.3709075395163832807e-1, &r), -2.2120291813240017972e-28, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-13, 2.2926361048823468174e-1, &r), -9.4684470339645238166e-23, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-2, 7.7595731076113971064e-1, &r), 7.1557648504788709828e-2, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-13, 8.3155666144468474085e-1, &r), -1.760187305034807398e-15, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-26, 8.9229820511590331545e-1, &r), 1.8952192929209682492e-36, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-9, 4.3091918823985208523e-1, &r), -2.7448142505229531657e-12, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-45, 7.6232573842954975111e-1, &r), -1.177044451508791199e-75, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-47, 8.5370192783467777094e-1, &r), -1.6168449888151601463e-77, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-17, 7.0917926374340919579e-1, &r), -6.1835780259077271289e-23, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-48, 5.3177634068823620691e-1, &r), 1.9544175507861216812e-89, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-20, 8.6236563774769292261e-1, &r), 2.0102896278761019978e-26, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-47, 1.9398034049650767996e-1, &r), -9.1928516850183758066e-108, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-22, 1.9059407555598432968e-1, &r), 3.0818305203000064476e-44, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-28, 1.177497340192600765e-1, &r), 1.1853471604859571152e-64, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-44, 5.4411719229619710879e-1, &r), 5.0099597095462268336e-80, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-22, 8.4096736569723091858e-1, &r), 4.6598891827094030103e-30, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-14, 5.7336031747513286455e-1, &r), 2.8892068362904543886e-19, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-24, 4.3701161637218456507e-1, &r), 2.2572337854881401663e-40, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-16, 5.5950502438849852065e-1, &r), 6.6952184074205206877e-23, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-15, 7.2135709344094709909e-1, &r), -1.724936657760223936e-19, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-42, 8.9503358993826252397e-1, &r), 1.5285906153951174029e-66, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-34, 8.8842662562391397862e-1, &r), 3.5115599466639988263e-51, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-24, 7.1820429322328243568e-1, &r), 3.3906734873299682373e-35, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-42, 6.9983283703407621113e-1, &r), 4.9840979255532732037e-71, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-29, 3.4956023377394930027e-1, &r), -1.2169918834421082937e-53, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-24, 3.1780802172157483391e-1, &r), 1.0816638066322224274e-43, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-42, 6.6747313617191922586e-1, &r), 6.8258422034194326368e-72, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-29, 9.8281798409069473598e-1, &r), -1.2641970706335426485e-40, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-48, 9.3933236478420901552e-1, &r), 1.4126090419557425431e-77, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-33, 7.9969562813573452357e-1, &r), -8.3521436185818779821e-51, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-4, 1.749832037277650746e-1, &r), 2.4377505307831309992e-6, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-12, 7.4928517324325015606e-1, &r), 1.578984980873870348e-14, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-50, 6.8668643284952988717e-1, &r), 2.0060641365741957198e-88, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-26, 4.628453813124784986e-1, &r), 7.3802979097358757591e-44, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-17, 1.3398796901656815413e-1, &r), -3.1005014564142463477e-35, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-21, 4.3589737907768555406e-1, &r), -2.4897620016130572781e-34, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-49, 9.3471214811043877923e-1, &r), -1.0635172631183545319e-79, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-12, 6.2842914244476056474e-1, &r), 1.919020727030761691e-15, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-44, 3.9902397275715061045e-1, &r), 5.9381636725852262522e-86, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-38, 7.4844742354073981342e-1, &r), 1.1452741249870059158e-61, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-22, 1.7024143837455386901e-1, &r), 2.5696433432212310518e-45, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-35, 2.4663778723047911984e-1, &r), -1.4846380265631517846e-72, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-42, 3.4675532474808813305e-1, &r), 7.7576502065450687145e-84, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-42, 9.7015007293565236242e-1, &r), 4.5073367850753509233e-65, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-18, 5.8064934044500015204e-1, &r), 3.3392049842730194442e-26, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-4, 8.9712869996285071984e-1, &r), 1.6201373653351794808e-3, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-14, 4.7509593095794841351e-1, &r), 2.0819777331649343154e-20, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-24, 1.9971440277743206076e-1, &r), 1.5567772398263651029e-48, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-2, 3.1326041354180815314e-1, &r), 1.2166506426643152762e-2, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-21, 7.1780328035546876532e-1, &r), -8.7820775346034440302e-30, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-40, 3.4783624449708255548e-1, &r), 5.0330128895858604038e-79, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-24, 4.6025606383259078342e-1, &r), 7.8278566159609528116e-40, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-37, 6.8329209514074967672e-1, &r), -4.0018049034521909865e-61, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-26, 3.1644447969459523952e-1, &r), 3.757803139189680586e-48, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-49, 3.8814659649103508174e-1, &r), -2.1178321069354253493e-98, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-33, 2.2586340634075651258e-1, &r), -6.3690605699693325702e-69, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-31, 1.1833425544176035201e-1, &r), -1.0457450400633015896e-72, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-7, 4.716233225505345007e-1, &r), -7.9892591292002198427e-9, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-28, 4.0216249780484400656e-1, &r), 1.0224868057823447281e-49, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-39, 2.1728515555094074309e-1, &r), -1.2424793343150735922e-84, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-10, 1.5286805658821812372e-1, &r), 1.8744497113230339685e-18, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-2, 4.2012489177724585853e-1, &r), 2.1740379601921820516e-2, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-3, 5.4168160735476556955e-1, &r), -3.2509626190739798323e-3, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-26, 6.0999547254418081401e-1, &r), 9.6515399655293906821e-41, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-31, 9.3599472437451867441e-1, &r), -7.236873645285246215e-45, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-2, 8.9238535456317991508e-2, &r), 9.9477909077321557346e-4, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-41, 3.3286697432119768766e-1, &r), -3.5168501713472066379e-82, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-26, 1.3103200887095798302e-2, &r), 4.1630610278945554747e-84, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-7, 6.8545576155223653312e-1, &r), -1.0860095433456484207e-7, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-33, 7.4597656684747976078e-1, &r), -8.4232256181114982289e-52, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-35, 9.5265851504353628581e-1, &r), -5.1260638475279101845e-52, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-5, 1.9993324513780069188e-2, &r), -8.319296787329444617e-13, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-15, 7.291071285552115835e-2, &r), -2.0411952376466778385e-34, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-5, 4.307852573603263607e-1, &r), -3.8336545021181925733e-6, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-8, 3.0719264454074178501e-1, &r), 7.6627991262305533713e-12, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-7, 2.9261260328577001029e-1, &r), -2.8395431884068098274e-10, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-36, 3.4285828911893011822e-1, &r), 7.1807133181285014617e-70, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-22, 2.1687887653368606307e-1, &r), 5.2860475778514174667e-43, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-24, 7.2816755037040510323e-1, &r), 4.7187086299885949165e-35, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-18, 2.0826276232560462604e-2, &r), 3.2368741843295077202e-52, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-9, 6.8082174052201672454e-1, &r), -1.6719854980400483279e-10, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-26, 1.1998114825675920571e-1, &r), 4.2119340347581322841e-59, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-9, 5.9197600088654039875e-1, &r), -4.7631865156190005935e-11, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-30, 1.2367288101522705215e-1, &r), 2.0588316029270585207e-69, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-7, 8.3266930505292536647e-1, &r), -4.2096524602233328394e-7, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-18, 4.360196631312459384e-1, &r), 1.9281550661128359168e-28, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-13, 9.8501660515145040901e-1, &r), -1.5833136710018445626e-14, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-29, 9.3281324180154613247e-1, &r), -2.7828395455119501545e-41, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-50, 8.9831019278310796215e-1, &r), 1.3646576617083900982e-82, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-34, 8.1153956230382506493e-1, &r), 1.6192058088789772833e-52, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-15, 9.5908894233909785027e-1, &r), -1.2293883538807523551e-17, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-28, 4.7478353398916835208e-1, &r), 1.0667274838088242221e-47, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-26, 3.1425431663890729964e-1, &r), 3.137014371489532261e-48, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-29, 6.8861856868877100233e-1, &r), -4.2000859317520628674e-45, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-16, 6.9807655407582355921e-1, &r), 2.3026948238804970982e-21, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-15, 1.9223628937777433793e-1, &r), -4.2201734817670464106e-28, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-24, 7.91209811831343471e-1, &r), 3.458241440092889033e-34, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-12, 2.8881796002183274727e-1, &r), 1.7143390913163291276e-19, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-34, 3.6891378721647167497e-1, &r), 3.7139793083014182422e-64, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-20, 8.4841223828616526898e-1, &r), 1.4510812436551651903e-26, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-23, 2.2490195812594682131e-1, &r), -5.7468688920782767025e-45, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-18, 2.2504144134842978217e-1, &r), 1.3048322081397375779e-33, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-41, 8.9085721717774902491e-1, &r), -1.1841910084346823163e-64, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-14, 3.5776817082613807574e-1, &r), 3.9325021938284721675e-22, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-17, 4.6898364389788035003e-1, &r), -5.492570150236103145e-26, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-6, 7.4085998179632632531e-1, &r), 3.5186865149767756957e-6, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-29, 8.1247678941673114604e-1, &r), -5.0783189409391835819e-43, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-6, 1.7590874156867732351e-2, &r), 6.4299450335557031571e-16, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-6, 4.1122931368227349961e-2, &r), 1.0494595145859932593e-13, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-18, 3.4357780610013843947e-2, &r), 2.6519427947417673311e-48, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-8, 7.2901630769663700817e-1, &r), 7.6159005881302088369e-9, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-40, 6.2434787548617066655e-1, &r), 7.297739135890827566e-69, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-37, 2.5717302633809380684e-1, &r), -7.9671811532819427071e-77, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-12, 4.4871088635019795091e-1, &r), 3.3823657137507787902e-17, TEST_TOL2, GSL_SUCCESS); + + /* Jnu for negative nu */ + + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-1.7408502287167772557e+1, 4.3891036254061936271e-2, &r), -1.5118966152679114528e+42, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-4.0369289750688261206e+1, 8.617077861907621132e-1, &r), 1.3458137581188368176e+61, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-3.6398263821779503158, 5.7108775125890870648e-1, &r), -1.1073338178875224514e+2, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-2.0743837616631487936e+1, 2.2372123946196517647e-1, &r), 1.3987244312547157439e+37, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-1.7297952956642177128e+1, 2.8440280848533973972e-1, &r), -5.5832331287880973953e+27, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-1.3507072230824139103e+1, 9.7008738913549467403e-1, &r), -9.9108981827284991851e+12, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-4.4663106025697138284e+1, 9.6739483983540323655e-1, &r), 2.5305841722999151766e+67, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-4.7450767905208691173e+1, 5.2288309478685515663e-3, &r), -3.4541920228396234708e+180, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-1.8736914274754280581e+1, 4.4318942692773250336e-1, &r), 1.2783291424623089209e+27, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-3.4560791710276042462e+1, 5.6595841783863809163e-1, &r), 1.7364781221343685309e+56, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-2.8723165418996042381e+1, 2.4003201116391659975e-1, &r), 8.229650479070536446e+54, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-3.1780816480084454714e+1, 3.5000033756039229564e-1, &r), -8.9158096963672457852e+56, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-8.3572537806135923827, 8.994859317735841446e-1, &r), 2.4471474432717596765e+6, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-4.9179499652113791027e+1, 7.3466044408596358731e-1, &r), -1.0446080588162613503e+82, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-4.0204535104461498585e+1, 1.3316368076269799096e-1, &r), 1.6723180404777533538e+93, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-4.9597169419874779916e+1, 8.3895848736941180651e-1, &r), -1.9885394381212418599e+80, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-1.2228113163441444643e+1, 7.2360070820350912315e-1, &r), 3.7033741801434815187e+12, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-4.3252347726870680973e+1, 4.7042383176138740544e-2, &r), -2.2524439080867705956e+121, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-4.8363275112470146292e+1, 3.5406545166014987925e-1, &r), 7.0915928368505654149e+95, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-2.4031313414732363799e+1, 1.7077658851102128503e-1, &r), 4.2707681524978432343e+46, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-3.4994220322161396103e+1, 7.6004498361697560048e-2, &r), 8.3491267575601512811e+85, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-1.5842451866339926986e+1, 7.1655842470093644641e-1, &r), -1.4956016465164596038e+18, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-4.3303969013414183336e+1, 3.4261981308825774017e-1, &r), -1.7313464383524562686e+84, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-2.9620214546900609668e+1, 8.9559048893071335969e-2, &r), -6.5439278427877993956e+69, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-3.9267775155252921091e+1, 4.9173394917277714574e-1, &r), -2.7879726255003962141e+68, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-1.085805422677201981e+1, 7.1844728658692273953e-2, &r), 1.7330833141098585591e+21, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-4.3205222720657600449e+1, 2.0938011160695718605e-1, &r), -1.2855953290893319419e+93, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-1.1761832688338363731e-1, 4.0692821730479031008e-1, &r), 1.0616114810207300625, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-3.4176152886105712673e+1, 7.3083748089885469319e-1, &r), 2.3708170326600879156e+51, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-1.7495316392965243753e+1, 3.6374757654471397858e-1, &r), -2.4050181588419272908e+26, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-1.4363999308889822481e+1, 2.2964635433363436307e-1, &r), 1.4858445128296594446e+23, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-1.5945782535187393546e+1, 5.5004988492253222851e-1, &r), -5.3196903529172738965e+19, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-2.6539439893219625339e+1, 5.4022213494661757887e-1, &r), 3.4606719889912371036e+40, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-3.9104819423206076833e+1, 8.7581079115207012305e-1, &r), -8.3806822204633705862e+57, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-1.1344422530419629852e+1, 1.8412292138063948156e-1, &r), -1.3032526695489281999e+18, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-4.2479004807998664153e+1, 7.628052499161305046e-1, &r), 3.8593605090529013702e+67, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-2.7234292208462683278e+1, 5.6929354834881763134e-1, &r), -1.3560087920173394791e+41, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-2.9852923491811760298e+1, 2.1764339448558498796e-2, &r), -3.1065720979758225192e+88, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-2.9470737712526065987e+1, 9.1397839227827761003e-1, &r), -4.9854244578384505794e+39, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-2.4879459756439547254e+1, 8.7694253508024822462e-1, &r), 4.0540656704233640216e+31, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-8.6562240771489400173e-1, 6.4882619355798588927e-1, &r), 9.5827819637209987022e-2, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-1.4096305256724256786e+1, 1.1837901256079790395e-1, &r), 1.5389662008468777023e+26, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-1.3739240782592000796e+1, 1.1830951764837136725e-1, &r), -5.4851415830067607572e+25, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-7.7683272384817803185e-1, 2.0897180603218726575e-1, &r), 1.3452855819917342033, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-4.9007825894244022613e+1, 8.0804305816981973945e-1, &r), -1.9558153171413640836e+78, TEST_TOL3, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-1.224872379992519031, 9.4716012050013901355e-1, &r), -8.7507643021583199242e-1, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-5.0807600398060325807e+1, 6.1902119795226148946e-1, &r), 1.9558680407989173708e+89, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-4.2130610423140110162e+1, 7.2184881647444607846e-1, &r), 3.0709609117301881893e+67, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-4.1186300874143057513e+1, 1.3944550368322800884e-1, &r), -1.2405415201132534983e+95, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-2.1777582295815773824e+1, 7.6178874271077561762e-1, &r), -7.1748063501973138583e+27, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-3.2185912810368133222e+1, 3.959510541558671016e-1, &r), 1.196451653185591802e+56, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-4.2976006083946226988e+1, 4.5739390828369379657e-1, &r), 1.0599129365585919882e+77, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-3.0412232215064606945e+1, 6.7510758855896918145e-1, &r), 2.4302601636670462267e+45, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-1.8388188389747281955e+1, 8.9233979909724013718e-1, &r), 9.1410432331502484426e+20, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-2.4298840569257253701e+1, 6.8042862360863559591e-1, &r), 4.0995648850574613979e+33, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-3.8834735272673504063e+1, 4.2324469410479691518e-1, &r), 7.0355133597135130631e+69, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-4.6091840934431606344e+1, 1.7508918790902548661e-1, &r), 8.7456315137421979067e+103, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-1.9754264394942756728, 1.558717798933954111e-2, &r), -3.551027943747170162e+2, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-3.7168594342366560374e+1, 6.976373865080374073e-1, &r), -1.1036447967023475572e+58, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-4.5379944292029245754e+1, 5.3150471205968938472e-2, &r), -1.0469743921754287032e+126, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-1.153181439556533474e+1, 1.8204366094125528818e-1, &r), -4.0986515168430307785e+18, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-4.9939680334734766385e+1, 8.132277926604580844e-1, &r), -9.5179038651143567503e+80, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-3.5986707652967270442e+1, 5.5665988728905782182e-1, &r), -1.27797927382078249e+58, TEST_TOL3, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (-6.7046620273111013832, 1.059530133767196237e-1, &r), 3.8106055649273069958e+10, TEST_TOL2, GSL_SUCCESS); + + /* Ynu */ + + TEST_SF(s, gsl_sf_bessel_Ynu_e, (0.0001, 1.0, &r), 0.08813676933044478439, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (0.0001,10.0, &r), 0.05570979797521875261, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, ( 0.75, 1.0, &r), -0.6218694174429746383, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, ( 0.75, 10.0, &r), 0.24757063446760384953, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, ( 1.0, 0.001, &r), -636.6221672311394281, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, ( 1.0, 1.0, &r), -0.7812128213002887165, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (30.0, 1.0, &r), -3.0481287832256432162e+39, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (30.0, 100.0, &r), 0.006138839212010033452, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (10.0, 1.0, &r), -1.2161801427868918929e+08, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (10.0, 100.0, &r), 0.05833157423641492875, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (10.2, 100.0, &r), 0.07169383985546287091, TEST_TOL2, GSL_SUCCESS); + + /* Ynu for negative integer nu */ + + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-13, 4.3966088395743909188e-1, &r), 5.4675723318993574107e+16, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-43, 3.2953184511924683369e-1, &r), 2.115977780575035527e+84, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-8, 3.5081119129046332101e-1, &r), -1.7982193624366780622e+9, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-17, 1.6717234250796879247e-1, &r), 1.4040223280006382933e+31, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-20, 1.0085435516296562067e-1, &r), -3.4253870177732383503e+42, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-29, 1.0423882905853389231e-1, &r), 1.5633159385709367033e+66, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-10, 2.014635069337132169e-1, &r), -1.0750753223600878559e+15, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-23, 3.3470953660313309239e-1, &r), 2.5733184597190491073e+38, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-13, 1.796487688043502395e-2, &r), 6.1526862287828618145e+34, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-30, 4.3851505455005663023e-1, &r), -1.6652274019860697168e+50, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-31, 2.9134673992671269075e-1, &r), 7.2783380837435004727e+57, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-28, 7.6696967407852829575e-1, &r), -1.5748860170624112485e+39, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-6, 1.9829576302527197691e-2, &r), -4.0210481843848071758e+13, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-26, 4.1513019703157674847e-1, &r), -2.806930683617814941e+42, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-19, 1.3033500482689031834e-2, &r), 6.9598794107689745713e+56, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-4, 7.2050154387915780891e-1, &r), -1.1846384548732517149e+2, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-36, 9.058436592111083308e-1, &r), -7.994500359474016123e+51, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-37, 4.4893454860671838425e-2, &r), 1.2042846052782773184e+102, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-25, 1.4253284590439372148e-1, &r), 9.4085712788480443733e+51, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-35, 6.8075538970323047806e-1, &r), 2.2691146737122039815e+54, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-9, 6.9978823056579836732e-2, &r), 1.6330796519846810927e+17, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-30, 8.3903642499214990225e-1, &r), -5.8816651774415705482e+41, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-43, 6.543891152683782553e-1, &r), 3.2732133353307485906e+71, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-1, 2.557673774862201033e-1, &r), 2.648397359834244179, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-21, 2.3961944728579204361e-1, &r), 1.7416186098234671613e+37, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-13, 3.7732868931080794955e-1, &r), 3.9857279826655584502e+17, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-33, 3.8478064679256785588e-1, &r), 3.5113798569950397588e+58, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-50, 8.3045728127372512419e-1, &r), -2.3665632218557611716e+81, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-33, 3.4391840270211572065e-1, &r), 1.4268698281593046704e+60, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-23, 4.4699489157302132678e-1, &r), 3.3214969951131331346e+35, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-23, 8.6894302936681315656e-1, &r), 7.6600878858980858273e+28, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-24, 2.3997647040322801696e-1, &r), -1.0382177146462655416e+44, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-4, 9.7688590680055575385e-1, &r), -3.6396008802115138586e+1, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-20, 8.9090003293395823104e-1, &r), -4.1352523331280200421e+23, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-37, 9.4057990133775869779e-1, &r), 1.5795116292393394486e+53, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-1, 2.6641070579761597867e-1, &r), 2.5520015187867893496, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-7, 9.8878610880180753494e-1, &r), 3.3070534106551277147e+4, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-42, 3.1042396387236895292e-1, &r), -1.0201733293438510046e+83, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-18, 6.8722270094498481586e-1, &r), -2.556940038138305942e+22, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-16, 1.6113707818439830316e-2, &r), -1.3203947711040991975e+45, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-31, 3.0720392023079679622e-1, &r), 1.4078366532641984096e+57, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-8, 3.4957196590626821859e-1, &r), -1.8497964339362348508e+9, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-4, 9.9805150837159144851e-1, &r), -3.35276446088454154e+1, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-8, 8.4538260733781281419e-1, &r), -1.6151126896511724021e+6, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-21, 7.8935512795174026579e-1, &r), 2.3510763338498465525e+26, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-32, 3.4859401756229795902e-1, &r), -4.9775956770188671631e+57, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-28, 9.2530929240293814377e-1, &r), -8.2429457360543127639e+36, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-32, 5.7276907866586953775e-1, &r), -6.2608710158624288778e+50, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-16, 8.6364032267280037696e-1, &r), -2.8833961453891338766e+17, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-24, 8.1065458967451038451e-2, &r), -2.1283114054434655701e+55, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-17, 6.946415511078842723e-1, &r), 4.3084587997971578431e+20, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-14, 2.7619565270505476723e-1, &r), -2.1634745597658813187e+21, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-7, 8.579791601466317093e-2, &r), 8.5741016888820088808e+11, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-50, 7.4681490716561041968e-1, &r), -4.7757514561562387813e+83, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-30, 9.6631424224612452556e-1, &r), -8.5159643935229761718e+39, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-14, 2.6745819874317492788e-1, &r), -3.3928529652241947717e+21, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-22, 3.6947309321414497419e-1, &r), -2.2270901208692386374e+35, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-49, 2.3389602803779083655e-2, &r), 1.8412401963717225375e+155, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-48, 7.7482504299905127354e-1, &r), -4.8369236019321535917e+78, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-30, 6.5337950709230049969e-1, &r), -1.0639517934361092802e+45, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-29, 5.4117488569210959438e-1, &r), 2.8262145810872807871e+45, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-50, 9.4038774092645791075e-1, &r), -4.7322361571978865664e+78, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-1, 5.627399919447310892e-1, &r), 1.3310580822914015523, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-35, 7.9925999507829895011e-2, &r), 8.2224704007424584626e+86, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-10, 2.8875439067692705135e-3, &r), -2.9351293887447581255e+33, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-31, 2.7645446745852278572e-1, &r), 3.7015590625912763344e+58, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-12, 8.5374968606378578252e-1, &r), -3.528575811542778544e+11, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-11, 2.2997159465452075155e-1, &r), 2.4894373648370412225e+16, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-47, 5.8616043503503357359e-1, &r), 1.9763554381308657733e+82, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-24, 8.4884849730214263521e-1, &r), -7.1046392480541118407e+30, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-24, 5.3943176031162412158e-1, &r), -3.7580440656007599181e+35, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-3, 9.3387179309343112648e-1, &r), 7.0202042170209205589, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-20, 5.5061917642540109891e-1, &r), -6.2122754555889405012e+27, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-26, 2.9315675715515822781e-1, &r), -2.3771210812024680281e+46, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-6, 8.9079715253593128884e-1, &r), -5.091626137833991034e+3, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-30, 9.1220250697048036241e-2, &r), -4.7597279133940392868e+70, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-20, 6.2008856084878849548e-3, &r), -5.7473876046110789338e+66, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-23, 7.1620177578706903472e-1, &r), 6.5166498927440582853e+30, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-29, 5.1124413385957329246e-1, &r), 1.4711351369242792138e+46, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-23, 6.7405321505832900803e-1, &r), 2.627743272609579819e+31, TEST_TOL2, GSL_SUCCESS); + + /* Ynu for negative nu */ + + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-1.7408502287167772557e+1, 4.3891036254061936271e-2, &r), 4.469714143570654497e+41, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-4.0369289750688261206e+1, 8.617077861907621132e-1, &r), -5.8595434076664310948e+60, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-3.6398263821779503158, 5.7108775125890870648e-1, &r), -5.2034221685931678753e+1, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-2.0743837616631487936e+1, 2.2372123946196517647e-1, &r), 1.345588718040376054e+37, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-1.7297952956642177128e+1, 2.8440280848533973972e-1, &r), 4.1115735370678699359e+27, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-1.3507072230824139103e+1, 9.7008738913549467403e-1, &r), -2.202372544321863968e+11, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-4.4663106025697138284e+1, 9.6739483983540323655e-1, &r), 1.4235309894056948387e+67, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-4.7450767905208691173e+1, 5.2288309478685515663e-3, &r), 5.3855142705411361919e+179, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-1.8736914274754280581e+1, 4.4318942692773250336e-1, &r), 1.1773204343097478161e+27, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-3.4560791710276042462e+1, 5.6595841783863809163e-1, &r), 3.3572924118396673305e+55, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-2.8723165418996042381e+1, 2.4003201116391659975e-1, &r), 6.9471556080056038434e+54, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-3.1780816480084454714e+1, 3.5000033756039229564e-1, &r), -1.0833823624917670056e+57, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-8.3572537806135923827, 8.994859317735841446e-1, &r), -1.1774337302489088463e+6, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-4.9179499652113791027e+1, 7.3466044408596358731e-1, &r), 1.6517722024836217581e+82, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-4.0204535104461498585e+1, 1.3316368076269799096e-1, &r), -2.2341067840937606376e+93, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-4.9597169419874779916e+1, 8.3895848736941180651e-1, &r), -6.2662143656762004053e+79, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-1.2228113163441444643e+1, 7.2360070820350912315e-1, &r), -4.2511898289085272856e+12, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-4.3252347726870680973e+1, 4.7042383176138740544e-2, &r), 2.2194603264543665848e+121, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-4.8363275112470146292e+1, 3.5406545166014987925e-1, &r), -3.248353813678515594e+95, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-2.4031313414732363799e+1, 1.7077658851102128503e-1, &r), -4.3273454620971397041e+47, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-3.4994220322161396103e+1, 7.6004498361697560048e-2, &r), 4.5976914154279708742e+87, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-1.5842451866339926986e+1, 7.1655842470093644641e-1, &r), -2.7708334780004236249e+18, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-4.3303969013414183336e+1, 3.4261981308825774017e-1, &r), 1.2252074327758681488e+84, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-2.9620214546900609668e+1, 8.9559048893071335969e-2, &r), -2.5960278365111086141e+69, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-3.9267775155252921091e+1, 4.9173394917277714574e-1, &r), 2.4927765540337657002e+68, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-1.085805422677201981e+1, 7.1844728658692273953e-2, &r), 3.6253005874483288876e+21, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-4.3205222720657600449e+1, 2.0938011160695718605e-1, &r), 1.7097593469426311991e+93, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-1.1761832688338363731e-1, 4.0692821730479031008e-1, &r), -3.9929527887838440231e-1, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-3.4176152886105712673e+1, 7.3083748089885469319e-1, &r), -3.8375532995220739134e+51, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-1.4363999308889822481e+1, 2.2964635433363436307e-1, &r), -6.7651597483976020212e+22, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-1.5945782535187393546e+1, 5.5004988492253222851e-1, &r), -3.0929200048995927397e+20, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-2.6539439893219625339e+1, 5.4022213494661757887e-1, &r), 4.3099923396955639095e+39, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-3.9104819423206076833e+1, 8.7581079115207012305e-1, &r), 2.4523357879118971691e+58, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-1.1344422530419629852e+1, 1.8412292138063948156e-1, &r), 6.9306682864864401354e+17, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-4.2479004807998664153e+1, 7.628052499161305046e-1, &r), -2.5492681017463054894e+66, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-2.7234292208462683278e+1, 5.6929354834881763134e-1, &r), 1.4969074140226347429e+41, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-2.9852923491811760298e+1, 2.1764339448558498796e-2, &r), -6.237969203121440244e+88, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-2.9470737712526065987e+1, 9.1397839227827761003e-1, &r), 4.5960647034986138864e+38, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-2.4879459756439547254e+1, 8.7694253508024822462e-1, &r), 1.0188843810269963844e+32, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-8.6562240771489400173e-1, 6.4882619355798588927e-1, &r), 1.1287689391130420057, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-1.4096305256724256786e+1, 1.1837901256079790395e-1, &r), -4.9304578916106509819e+26, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-1.3739240782592000796e+1, 1.1830951764837136725e-1, &r), -5.1263258788046229045e+25, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-7.7683272384817803185e-1, 2.0897180603218726575e-1, &r), 1.881590189544752977, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-4.9007825894244022613e+1, 8.0804305816981973945e-1, &r), 7.9534669124448258162e+79, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-1.224872379992519031, 9.4716012050013901355e-1, &r), 5.2709059549031973037e-1, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-5.0807600398060325807e+1, 6.1902119795226148946e-1, &r), 2.8318147090250448397e+89, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-4.2130610423140110162e+1, 7.2184881647444607846e-1, &r), -7.0593986791573883029e+67, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-4.1186300874143057513e+1, 1.3944550368322800884e-1, &r), 1.8718282789345414439e+95, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-2.1777582295815773824e+1, 7.6178874271077561762e-1, &r), -8.5399447567722731535e+27, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-3.2185912810368133222e+1, 3.959510541558671016e-1, &r), -1.8100903248905368685e+56, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-4.2976006083946226988e+1, 4.5739390828369379657e-1, &r), 1.4034454523109119588e+78, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-3.0412232215064606945e+1, 6.7510758855896918145e-1, &r), -6.8761190595978173779e+44, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-1.8388188389747281955e+1, 8.9233979909724013718e-1, &r), -3.3498674090203423756e+20, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-2.4298840569257253701e+1, 6.8042862360863559591e-1, &r), -3.0013837000776612869e+33, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-3.8834735272673504063e+1, 4.2324469410479691518e-1, &r), 1.2310766881467564871e+70, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-4.6091840934431606344e+1, 1.7508918790902548661e-1, &r), -2.946550933505149671e+104, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-1.9754264394942756728, 1.558717798933954111e-2, &r), -4.5906289772187980725e+3, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-3.7168594342366560374e+1, 6.976373865080374073e-1, &r), 1.8851114888349680045e+58, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-4.5379944292029245754e+1, 5.3150471205968938472e-2, &r), 4.1473845726043547937e+125, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-1.153181439556533474e+1, 1.8204366094125528818e-1, &r), -4.1102104914739582156e+17, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-4.9939680334734766385e+1, 8.132277926604580844e-1, &r), -4.9623796120191838477e+81, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-3.5986707652967270442e+1, 5.5665988728905782182e-1, &r), -3.058579118813851873e+59, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-6.7046620273111013832, 1.059530133767196237e-1, &r), 2.8547617693483259231e+10, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-2.154578607200052944e+1, 4.5282605452993561522e-1, &r), -4.6204765000245865931e+31, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-2.3955292370868357326e+1, 5.3774303067450442349e-1, &r), -3.285152670384139907e+35, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-3.2209824848466094111e+1, 5.9504757613868441576e-1, &r), -3.8856592501211432238e+50, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-4.0825185544715207495e+1, 7.5398610386439322567e-1, &r), 2.3035172984979776888e+64, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-3.1910588368134692781e+1, 5.1283495159288225414e-1, &r), -1.3438429765742294157e+52, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-6.7113819006700078322, 4.0393307486388760775e-1, &r), 3.8345193040174093796e+6, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-2.8693610985720627242e+1, 3.4777341593350738095e-1, &r), 1.2557150749869300709e+50, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-2.3640245743314574591e+1, 9.6025287507519664839e-1, &r), -3.8943763839931542689e+28, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-4.8083409800395899615e+1, 1.4391402197265332926e-1, &r), -9.9126133627220300984e+113, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-3.8105478052324389543e+1, 4.891514010318381566e-1, &r), -1.2271238830087142465e+66, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-2.5311996069559305006e+1, 9.5766172213158543809e-1, &r), 3.7577671642248517421e+31, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-3.0646798215967974621e+1, 9.3310976056897272996e-1, &r), 1.5913395046591416208e+41, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-3.9802221662384415773e+1, 8.0558698100484531078e-1, &r), -1.3410097300803423969e+61, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-4.6307175589532141033e+1, 8.5581965580057553716e-1, &r), -8.2913043528862589862e+72, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-1.0008133602203088381e+1, 8.8260963451522902618e-1, &r), -4.3184875964228242059e+8, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-4.2307910802466458785e+1, 6.782808128445430142e-1, &r), -1.4119756731193528077e+69, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-1.0130438814666196845e+1, 2.1277791687648788154e-1, &r), -1.02690311217639001e+15, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-1.9533803019889111726e+1, 3.9334897500975715385e-1, &r), -6.4704382293897894852e+28, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-1.3895956090712434265e+1, 8.0661260505451797979e-1, &r), -4.3815146159956971318e+14, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-1.4635165127833994625e+1, 3.7945739040607276532e-1, &r), 1.5929485514781295968e+20, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-2.8560967136543055351e+1, 7.9600892022399284277e-1, &r), 1.1465774145795382248e+39, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-6.2108119261932190115, 8.7806601388332832487e-1, &r), -7.4701969028629161594e+3, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-6.9950977953230716109, 5.8978625225697869088e-1, &r), 1.1808677382965817331e+6, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-1.2481246429363894157e+1, 7.2704916561624886813e-1, &r), -7.5667536238826222942e+11, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-5.020982518214251176e+1, 7.5109544046044664159e-1, &r), -7.9040859853121739692e+83, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-8.9473034048334154025, 6.4213370686611774774e-2, &r), 2.6029884691597775763e+17, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-3.834075672586642874e+1, 6.4258947909888861139e-1, &r), -5.8405580195454874797e+61, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-4.4411381704857813062e+1, 1.2743783697917866926e-1, &r), -3.1773798568513309515e+105, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-6.1687391291035845538, 7.8786722297686215495e-1, &r), -1.4219092995559599082e+4, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-1.0704293950958482287e+1, 3.8531626603275482749e-1, &r), 1.5743246247238302576e+13, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-4.0571445654620545043e+1, 3.4876986634505808892e-1, &r), 7.0385234557024272162e+76, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-4.3563863522003561189, 9.7999452783586835833e-1, &r), -3.1893996030425450694e+1, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-1.8492269674910402783e+1, 1.7152753186318347442e-1, &r), -6.0249928142043118768e+32, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-2.5363228484567149913e+1, 3.0542644930515794217e-1, &r), 1.3211507552477009856e+44, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-1.3771144161000489935e+1, 7.3346736008344405886e-1, &r), -8.3124988094143057824e+14, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-2.3761246233591030521e+1, 5.4968519162734822572e-1, &r), -6.0578774841300955332e+34, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-2.2634961325802757898e+1, 6.6471162507224558099e-1, &r), 3.2082973398317013106e+30, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-4.6563404270777516422e+1, 7.5273096421024420905e-1, &r), 3.7592589106971418602e+75, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-1.0848764148512049678e+1, 9.2286052929496267966e-1, &r), 3.2439553455961291223e+9, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-3.5455854142576014389e+1, 7.8971992208889605774e-1, &r), 1.3378630820768277448e+52, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-1.2013968530863113871e+1, 1.9744029176545173315e-1, &r), -1.584787479000820067e+19, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-5.6750075448691398076, 8.0444727938729491316e-1, &r), -2.10533382223663811e+3, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-1.8429830608986305295e+1, 8.2140563165026789468e-1, &r), -1.1405415108194473062e+21, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-2.346426407446347328e+1, 8.5111501099434108204e-1, &r), 8.7606083372225198285e+28, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-2.9593848458448579212e+1, 1.2641237816367966816e-1, &r), -6.4135079973931874203e+64, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-1.7086231381348987822e+1, 3.9893860083544831831e-1, &r), 7.515835122388342095e+24, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-1.8484417257406457732, 6.0748406712157845873e-1, &r), -2.7380610022426281822, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-3.1822890333552359573e+1, 5.0020129878524173631e-1, &r), -1.7231227888225767619e+52, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-6.2862753931112845805, 7.9353453932163968388e-1, &r), -1.342401423092805412e+4, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-1.5508352825172743548, 7.3200379508076835206e-1, &r), -4.0497851981930665643e-1, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-7.6325669923999446014, 6.3959118408264715884e-2, &r), -8.0591625416199259092e+13, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-3.7217355888852626548e+1, 8.2439297912634420605e-1, &r), 4.2640264465349061973e+55, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-3.9216632463077931365e+1, 2.1243165065073566651e-2, &r), 7.2753341407348563956e+121, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-2.0310494244455808579e+1, 5.6409661087945220564e-1, &r), -8.0236717760932647636e+27, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-4.2561355227860967802e+1, 6.1429304168687688441e-1, &r), 1.095939957156354534e+71, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-2.348280958534689123e+1, 1.3878791555680588964e-1, &r), 1.4127166630922246712e+47, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-3.266908051943509346, 9.1043177038683039605e-1, &r), 7.9342040586370876107, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-1.6453677594081999426e+1, 7.3766130024218803361e-1, &r), -2.8496103761067379068e+18, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-1.0292370302033138277e+1, 2.7545919896373212095e-1, &r), -9.9081192322574702806e+13, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-2.788826873303230097e+1, 2.2855276522975392381e-1, &r), -4.2068889321668479948e+53, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-4.1401875376696767087e+1, 6.6522142928175599046e-2, &r), 5.4702914219176701268e+108, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-1.9306765177660380865e+1, 2.0291343278160599375e-1, &r), 4.3752403877947450222e+34, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-2.9778989699515361126e+1, 5.0069816606055756877e-2, &r), -5.0144871285761887467e+77, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-1.3484350943085112332e+1, 2.5580340114657331489e-2, &r), 8.660979419407748338e+32, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-4.8885950309653823971e+1, 2.705230773944354062e-1, &r), 7.0729128795400209404e+102, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-2.6140505254948262834e+1, 5.635769797194365065e-1, &r), -1.691181704671511378e+39, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-2.36353791993838395e+1, 7.8601342847547894355e-1, &r), -4.184570564713370597e+30, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-3.8043892058273381078e+1, 9.6661631483018731188e-1, &r), -5.2799069238255343804e+54, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-2.0627792568626186656e+1, 2.7801894968851888201e-1, &r), 4.6951098613000862734e+34, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-3.7821819326414013127e+1, 7.0072053744106375522e-1, &r), -3.2969189837617817178e+59, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-1.1895350862490616295e+1, 6.3819566879323744549e-1, &r), -7.4877627933750167273e+12, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-4.1564822793166119652e+1, 8.7089052441788146841e-1, &r), -4.362095115786654673e+62, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-5.6988133455245986782, 1.0513161628614675752e-1, &r), -2.6315584241050780179e+8, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-5.04236829179067909, 2.1606414592833118122e-2, &r), 6.6460848251254935943e+10, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-8.5815569416794001464e-1, 3.2800854133020344342e-1, &r), 1.7278337309129555492, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-7.4540158508402344121, 3.3591301584669540366e-1, &r), 4.6958147873473343296e+7, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-4.1342269410012557907e+1, 7.2248859912133702972e-1, &r), 8.4210802265866850829e+65, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-4.0890888214378787004e+1, 4.6015468690527406659e-2, &r), 1.5760625185685568109e+114, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-3.4949019201278440062e+1, 5.5379096162817544569e-1, &r), 2.4017690399425079403e+57, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-1.5581474535040863099, 8.6545078146345742122e-1, &r), -4.2518863856194071801e-1, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-1.6450819423469368818e+1, 4.0968007844676920681e-1, &r), -4.7316334255824816328e+22, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-2.4534051152698170766e+1, 9.2462004307970597256e-1, &r), 8.0009048223739294629e+29, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-9.5846016059057764355, 1.4980322293854772757e-1, &r), -7.3726783694247075753e+14, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Ynu_e, (-3.1840530425923939329e+1, 9.3847997261021697482e-1, &r), -3.8745468671462878671e+43, TEST_TOL2, GSL_SUCCESS); + + /* Inu */ + + TEST_SF(s, gsl_sf_bessel_Inu_scaled_e, (0.0001,10.0, &r), 0.12783333709581669672, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Inu_scaled_e, ( 1.0, 0.001, &r), 0.0004995003123542213370, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Inu_scaled_e, ( 1.0, 1.0, &r), 0.20791041534970844887, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Inu_scaled_e, (30.0, 1.0, &r), 1.3021094983785914437e-42, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Inu_scaled_e, (30.0, 100.0, &r), 0.0004486987756920986146, TEST_TOL3, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Inu_scaled_e, (10.0, 1.0, &r), 1.0127529864692066036e-10, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Inu_scaled_e, (10.0, 100.0, &r), 0.024176682718258828365, TEST_TOL3, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Inu_scaled_e, (10.2, 100.0, &r), 0.023691628843913810043, TEST_TOL3, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_bessel_Inu_e, (0.0001,10.0, &r), 2815.7166269770030352, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Inu_e, ( 1.0, 0.001, &r), 0.0005000000625000026042, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Inu_e, ( 1.0, 1.0, &r), 0.5651591039924850272, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Inu_e, (30.0, 1.0, &r), 3.539500588106447747e-42, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Inu_e, (30.0, 100.0, &r), 1.2061548704498434006e+40, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Inu_e, (10.0, 1.0, &r), 2.7529480398368736252e-10, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Inu_e, (10.0, 100.0, &r), 6.498975524720147799e+41, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Inu_e, (10.2, 100.0, &r), 6.368587361287030443e+41, TEST_TOL2, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_bessel_Knu_scaled_e, (0.0001,10.0, &r), 0.3916319346235421817, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Knu_scaled_e, ( 1.0, 0.001, &r), 1000.9967345590684524, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Knu_scaled_e, ( 1.0, 1.0, &r), 1.6361534862632582465, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Knu_scaled_e, (30.0, 1.0, &r), 1.2792629867539753925e+40, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Knu_scaled_e, (30.0, 100.0, &r), 10.673443449954850040, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Knu_scaled_e, (10.0, 1.0, &r), 4.912296520990198599e+08, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Knu_scaled_e, (10.0, 100.0, &r), 0.20578687173955779807, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Knu_scaled_e, (10.0, 1000.0, &r), 0.04165905142800565788, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Knu_scaled_e, (10.0, 1.0e+8, &r), 0.00012533147624060789938, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Knu_scaled_e, (10.2, 100.0, &r), 0.20995808355244385075, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_bessel_Knu_e, (0.0001,0.001, &r), 7.023689431812884141, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Knu_e, (0.0001,10.0, &r), 0.000017780062324654874306, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Knu_e, ( 1.0, 0.001, &r), 999.9962381560855743, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Knu_e, ( 1.0, 1.0, &r), 0.6019072301972345747, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Knu_e, (10.0, 0.001, &r), 1.8579455483904008064e+38, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Knu_e, (10.0, 1.0, &r), 1.8071328990102945469e+08, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Knu_e, (10.0, 100.0, &r), 7.655427977388100611e-45, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Knu_e, (10.2, 100.0, &r), 7.810600225948217841e-45, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Knu_e, (30.0, 1.0, &r), 4.706145526783626883e+39, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Knu_e, (30.0, 100.0, &r), 3.970602055959398739e-43, TEST_TOL2, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_bessel_lnKnu_e, (0.0001,1.0e-100, &r), 5.439794449319847, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_lnKnu_e, (0.0001,0.0001, &r), 2.232835507214331, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_lnKnu_e, (0.0001,10.0, &r), -10.93743282256098, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_lnKnu_e, ( 1.0, 1.0e-100, &r), 230.2585092994045, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_lnKnu_e, ( 1.0, 1.0e-10, &r), 23.025850929940456840, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_lnKnu_e, ( 1.0, 0.001, &r), 6.907751517131146, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_lnKnu_e, ( 1.0, 1.0, &r), -0.5076519482107523309, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_lnKnu_e, (30.0, 1.0e-100, &r), 6999.113586185543475, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_lnKnu_e, (30.0, 1.0, &r), 91.34968784026325464, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_lnKnu_e, (30.0, 100.0, &r), -97.63224126416760932, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_lnKnu_e, (100.0, 1.0e-100, &r), 23453.606706185466825, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_lnKnu_e, (100.0, 1.0, &r), 427.7532510250188083, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_lnKnu_e, (100.0, 100.0, &r), -55.53422771502921431, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_lnKnu_e, (1000.0, 1.0e-100, &r), 236856.183755993135, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_lnKnu_e, (10000.0, 1.0e-100, &r), 2.39161558914890695e+06, TEST_TOL0, GSL_SUCCESS); + + /* [bug #31528] gsl_sf_bessel_lnKnu overflows for large nu */ + + TEST_SF(s, gsl_sf_bessel_lnKnu_e, (180.0, 2.2, &r), 735.1994170369583930752590258, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_lnKnu_e, (3500.5, 1500.0, &r), 1731.220077116482710070986699, TEST_TOL1, GSL_SUCCESS); + + sa = 0; + gsl_sf_bessel_Jn_array(3, 38, 1.0, J); + sa += ( test_sf_frac_diff(J[0], 0.0195633539826684059190 ) > TEST_TOL1); + sa += ( test_sf_frac_diff(J[1], 0.0024766389641099550438 ) > TEST_TOL1); + sa += ( test_sf_frac_diff(J[10], 1.9256167644801728904e-14 ) > TEST_TOL1); + sa += ( test_sf_frac_diff(J[35], 6.911232970971626272e-57 ) > TEST_TOL1); + gsl_test(sa, " gsl_sf_bessel_Jn_array"); + s += sa; + + sa = 0; + gsl_sf_bessel_Yn_array(3, 38, 1.0, Y); + sa += ( test_sf_frac_diff(Y[0], -5.821517605964728848 ) > TEST_TOL0 ); + sa += ( test_sf_frac_diff(Y[1], -33.27842302897211870 ) > TEST_TOL0 ); + sa += ( test_sf_frac_diff(Y[10], -1.2753618701519837595e+12 ) > TEST_TOL0 ); + sa += ( test_sf_frac_diff(Y[35], -1.2124435663593357154e+54 ) > TEST_TOL0 ); + gsl_test(sa, " gsl_sf_bessel_Yn_array"); + s += sa; + + sa = 0; + gsl_sf_bessel_In_scaled_array(3, 38, 1.0, I); + sa += ( test_sf_frac_diff(I[0], 0.0081553077728142938170 ) > TEST_TOL0 ); + sa += ( test_sf_frac_diff(I[1], 0.0010069302573377758637 ) > TEST_TOL0 ); + sa += ( test_sf_frac_diff(I[10], 7.341518665628926244e-15 ) > TEST_TOL0 ); + sa += ( test_sf_frac_diff(I[35], 2.5753065298357542893e-57 ) > TEST_TOL0 ); + gsl_test(sa, " gsl_sf_bessel_In_scaled_array"); + s += sa; + + sa = 0; + gsl_sf_bessel_In_array(3, 38, 1.0, Y); + sa += ( test_sf_frac_diff(Y[0], 0.0221684249243319024760 ) > TEST_TOL0 ); + sa += ( test_sf_frac_diff(Y[1], 0.0027371202210468663251 ) > TEST_TOL0 ); + sa += ( test_sf_frac_diff(Y[10], 1.9956316782072007564e-14 ) > TEST_TOL0 ); + sa += ( test_sf_frac_diff(Y[35], 7.000408942764452901e-57 ) > TEST_TOL0 ); + gsl_test(sa, " gsl_sf_bessel_In_array"); + s += sa; + + sa = 0; + gsl_sf_bessel_Kn_array(3, 38, 1.0, K); + sa += ( test_sf_frac_diff(K[0], 7.101262824737944506 ) > TEST_TOL0 ); + sa += ( test_sf_frac_diff(K[1], 44.23241584706284452 ) > TEST_TOL0 ); + sa += ( test_sf_frac_diff(K[10], 1.9215763927929940846e+12 ) > TEST_TOL0 ); + sa += ( test_sf_frac_diff(K[35], 1.8789385023806051223e+54 ) > TEST_TOL0 ); + gsl_test(sa, " gsl_sf_bessel_Kn_array"); + s += sa; + + sa = 0; + gsl_sf_bessel_Kn_scaled_array(3, 38, 1.0, K); + sa += ( test_sf_frac_diff(K[0], 19.303233695596904277 ) > TEST_TOL0 ); + sa += ( test_sf_frac_diff(K[1], 120.23617222591483717 ) > TEST_TOL0 ); + sa += ( test_sf_frac_diff(K[10], 5.223386190525076473e+12 ) > TEST_TOL0 ); + sa += ( test_sf_frac_diff(K[35], 5.107484387813251411e+54 ) > TEST_TOL0 ); + gsl_test(sa, " gsl_sf_bessel_Kn_scaled_array"); + s += sa; + + sa = 0; + gsl_sf_bessel_jl_array(50, 1.0, J); + sa += ( test_sf_frac_diff(J[0], 0.84147098480789650670 ) > TEST_TOL2 ); + sa += ( test_sf_frac_diff(J[1], 0.30116867893975678925 ) > TEST_TOL2 ); + sa += ( test_sf_frac_diff(J[10], 7.116552640047313024e-11 ) > TEST_TOL2 ); + sa += ( test_sf_frac_diff(J[50], 3.615274717489787311e-81 ) > TEST_TOL2 ); + gsl_test(sa, " gsl_sf_bessel_jl_array"); + s += sa; + + sa = 0; + gsl_sf_bessel_jl_steed_array(99, 1.0, J); + sa += ( test_sf_frac_diff(J[0], 0.84147098480789650670 ) > TEST_TOL0 ); + sa += ( test_sf_frac_diff(J[1], 0.30116867893975678925 ) > TEST_TOL0 ); + sa += ( test_sf_frac_diff(J[10], 7.116552640047313024e-11 ) > TEST_TOL0 ); + sa += ( test_sf_frac_diff(J[50], 3.615274717489787311e-81 ) > TEST_TOL0 ); + sa += ( test_sf_frac_diff(J[80], 1.136352423414503264e-144 ) > TEST_TOL1 ); + gsl_test(sa, " gsl_sf_bessel_jl_steed_array"); + s += sa; + + sa = 0; + gsl_sf_bessel_yl_array(50, 1.0, Y); + sa += ( test_sf_frac_diff(Y[0], -0.5403023058681397174 ) > TEST_TOL0 ); + sa += ( test_sf_frac_diff(Y[1], -1.3817732906760362241 ) > TEST_TOL0 ); + sa += ( test_sf_frac_diff(Y[10], -6.722150082562084436e+08 ) > TEST_TOL0 ); + sa += ( test_sf_frac_diff(Y[50], -2.7391922846297571576e+78 ) > TEST_TOL0 ); + gsl_test(sa, " gsl_sf_bessel_yl_array"); + s += sa; + + { + double Y0[1]; + sa = 0; + gsl_sf_bessel_yl_array(0, 1.0, Y0); + sa += ( test_sf_frac_diff(Y0[0], -0.5403023058681397174 ) > TEST_TOL0 ); + gsl_test(sa, " gsl_sf_bessel_yl_array (lmax=0)"); + s += sa; + } + + sa = 0; + gsl_sf_bessel_il_scaled_array(50, 1.0, I); + sa += ( test_sf_frac_diff(I[0], 0.43233235838169365410 ) > TEST_TOL2 ); + sa += ( test_sf_frac_diff(I[1], 0.13533528323661269189 ) > TEST_TOL2 ); + sa += ( test_sf_frac_diff(I[10], 2.7343719371837065460e-11 ) > TEST_TOL2 ); + sa += ( test_sf_frac_diff(I[50], 1.3429606061892023653e-81 ) > TEST_TOL2 ); + gsl_test(sa, " gsl_sf_bessel_il_scaled_array"); + s += sa; + + sa = 0; + gsl_sf_bessel_il_scaled_array(50, 0.0, I); + sa += ( test_sf_frac_diff(I[0], 1.0 ) > TEST_TOL2 ); + sa += ( test_sf_frac_diff(I[1], 0.0 ) > TEST_TOL2 ); + sa += ( test_sf_frac_diff(I[10], 0.0 ) > TEST_TOL2 ); + sa += ( test_sf_frac_diff(I[50], 0.0 ) > TEST_TOL2 ); + gsl_test(sa, " gsl_sf_bessel_il_scaled_array (L=0)"); + s += sa; + + sa = 0; + gsl_sf_bessel_kl_scaled_array(50, 1.0, K); + sa += ( test_sf_frac_diff(K[0], 1.5707963267948966192 ) > TEST_TOL0 ); + sa += ( test_sf_frac_diff(K[1], 3.1415926535897932385 ) > TEST_TOL0 ); + sa += ( test_sf_frac_diff(K[10], 2.7231075458948147010e+09 ) > TEST_TOL0 ); + sa += ( test_sf_frac_diff(K[50], 1.1578440432804522544e+79 ) > TEST_TOL0 ); + gsl_test(sa, " gsl_sf_bessel_kl_scaled_array"); + s += sa; + + { + double K0[1]; + sa = 0; + gsl_sf_bessel_kl_scaled_array(0, 1.0, K0); + sa += ( test_sf_frac_diff(K[0], 1.5707963267948966192 ) > TEST_TOL0 ); + gsl_test(sa, " gsl_sf_bessel_kl_scaled_array (lmax=0)"); + s += sa; + } + + sa = 0; + sa += ( gsl_sf_bessel_zero_J0_e(0, &r) != GSL_EINVAL ); + sa += ( r.val != 0.0 ); + s += sa; + TEST_SF(s, gsl_sf_bessel_zero_J0_e, ( 1, &r), 2.404825557695771, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_zero_J0_e, ( 2, &r), 5.520078110286304, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_zero_J0_e, (20, &r), 62.048469190227081, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_zero_J0_e, (25, &r), 77.756025630388058, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_zero_J0_e, (100, &r), 313.37426607752784, TEST_TOL1, GSL_SUCCESS); + + sa = 0; + sa += ( gsl_sf_bessel_zero_J1_e(0, &r) != GSL_SUCCESS ); + sa += ( r.val != 0.0 ); + s += sa; + TEST_SF(s, gsl_sf_bessel_zero_J1_e, ( 1, &r), 3.831705970207512, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_zero_J1_e, ( 2, &r), 7.015586669815619, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_zero_J1_e, (20, &r), 63.61135669848124, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_zero_J1_e, (25, &r), 79.32048717547630, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_zero_J1_e, (100, &r), 314.9434728377672, TEST_TOL2, GSL_SUCCESS); + + sa = 0; + sa += ( gsl_sf_bessel_zero_Jnu_e(0.0, 0, &r) != GSL_EINVAL ); + sa += ( r.val != 0.0 ); + s += sa; + TEST_SF(s, gsl_sf_bessel_zero_Jnu_e, (0.0, 1, &r), 2.404825557695771, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_zero_Jnu_e, (0.0, 2, &r), 5.520078110286304, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_zero_Jnu_e, (0.0, 20, &r), 62.048469190227081, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_zero_Jnu_e, (0.0, 25, &r), 77.756025630388058, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_zero_Jnu_e, (0.0, 100, &r), 313.37426607752784, TEST_TOL1, GSL_SUCCESS); + + sa = 0; + sa += ( gsl_sf_bessel_zero_Jnu_e(1.0, 0, &r) != GSL_SUCCESS ); + sa += (r.val != 0.0); + s += sa; + TEST_SF(s, gsl_sf_bessel_zero_Jnu_e, ( 1.5, 1, &r), 4.4934094579090641, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_zero_Jnu_e, ( 5.0, 1, &r), 8.7714838159599540, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_zero_Jnu_e, ( 1.5, 2, &r), 7.7252518369377072, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_zero_Jnu_e, ( 5.0, 2, &r), 12.338604197466944, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_zero_Jnu_e, ( 1.5, 3, &r), 10.904121659428900, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_zero_Jnu_e, ( 5.0, 3, &r), 15.700174079711671, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_zero_Jnu_e, ( 1.5, 4, &r), 14.066193912831473, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_zero_Jnu_e, ( 5.0, 4, &r), 18.980133875179921, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_zero_Jnu_e, ( 1.5, 5, &r), 17.220755271930768, TEST_TOL1, GSL_SUCCESS); + + /* Something wrong with the tolerances on these */ + TEST_SF(s, gsl_sf_bessel_zero_Jnu_e, ( 5.0, 5, &r), 22.217799896561268, TEST_SQRT_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_zero_Jnu_e, ( 8.0, 5, &r), 26.266814641176644, TEST_SQRT_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_zero_Jnu_e, (20.0, 5, &r), 41.413065513892636, TEST_SQRT_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_bessel_zero_Jnu_e, ( 1.5, 6, &r), 20.371302959287563, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_zero_Jnu_e, ( 5.0, 6, &r), 25.430341154222704, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_zero_Jnu_e, ( 8.0, 6, &r), 29.545659670998550, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_zero_Jnu_e, ( 1.5, 7, &r), 23.519452498689007, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_zero_Jnu_e, ( 5.0, 7, &r), 28.626618307291138, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_zero_Jnu_e, ( 8.0, 7, &r), 32.795800037341462, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_zero_Jnu_e, ( 1.5, 8, &r), 26.666054258812674, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_zero_Jnu_e, ( 5.0, 8, &r), 31.811716724047763, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_zero_Jnu_e, (10.0, 8, &r), 38.761807017881651, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_zero_Jnu_e, ( 1.5, 9, &r), 29.811598790892959, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_zero_Jnu_e, ( 5.0, 9, &r), 34.988781294559295, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_zero_Jnu_e, (10.0, 9, &r), 42.004190236671805, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_zero_Jnu_e, ( 1.5, 10, &r), 32.956389039822477, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_zero_Jnu_e, ( 5.0, 10, &r), 38.159868561967132, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_zero_Jnu_e, (15.0, 10, &r), 52.017241278881633, TEST_TOL1, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_bessel_zero_Jnu_e, ( 5.0, 11, &r), 41.326383254047406, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_zero_Jnu_e, (15.0, 11, &r), 55.289204146560061, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_zero_Jnu_e, ( 5.0, 12, &r), 44.4893191232197314, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_zero_Jnu_e, (15.0, 12, &r), 58.5458289043850856, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_zero_Jnu_e, ( 5.0, 13, &r), 47.6493998066970948, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_zero_Jnu_e, (15.0, 13, &r), 61.7897598959450550, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_zero_Jnu_e, ( 5.0, 14, &r), 50.8071652030063595, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_zero_Jnu_e, (15.0, 14, &r), 65.0230502510422545, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_zero_Jnu_e, ( 5.0, 15, &r), 53.9630265583781707, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_zero_Jnu_e, (15.0, 15, &r), 68.2473219964207837, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_zero_Jnu_e, ( 5.0, 16, &r), 57.1173027815042647, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_zero_Jnu_e, (15.0, 16, &r), 71.4638758850226630, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_zero_Jnu_e, ( 5.0, 17, &r), 60.2702450729428077, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_zero_Jnu_e, (15.0, 17, &r), 74.6737687121404241, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_zero_Jnu_e, ( 5.0, 18, &r), 63.4220540458757799, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_zero_Jnu_e, (15.0, 18, &r), 77.8778689734863729, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_zero_Jnu_e, ( 5.0, 19, &r), 66.5728918871182703, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_zero_Jnu_e, (15.0, 19, &r), 81.0768977206328326, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_zero_Jnu_e, ( 5.0, 20, &r), 69.722891161716742, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_zero_Jnu_e, (15.0, 20, &r), 84.271459069716442, TEST_TOL1, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_bessel_zero_Jnu_e, ( 23.0, 11, &r), 65.843393469524653, TEST_TOL6, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_zero_Jnu_e, ( 30.0, 11, &r), 74.797306585175426, TEST_TOL6, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_zero_Jnu_e, ( 32.0, 15, &r), 90.913637691861741, TEST_TOL6, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_zero_Jnu_e, ( 50.0, 15, &r), 113.69747988073942, TEST_TOL6, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_bessel_zero_Jnu_e, ( 5.0, 22, &r), 76.020793430591605, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_zero_Jnu_e, ( 10.0, 22, &r), 83.439189796105756, TEST_TOL3, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_zero_Jnu_e, ( 12.0, 22, &r), 86.345496520534055, TEST_TOL6, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_zero_Jnu_e, (100.0, 22, &r), 199.82150220122519, TEST_TOL4, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_zero_Jnu_e, (500.0, 22, &r), 649.34132440891735, TEST_TOL2, GSL_SUCCESS); + + sa = 0; + for(i=0; i<100; i++) { + J[i] = i/10.0; + } + gsl_sf_bessel_sequence_Jnu_e(2.0, GSL_MODE_DEFAULT, 100, J); + sa += ( test_sf_frac_diff(J[1], 0.0012489586587999188454 ) > TEST_TOL1 ); + sa += ( test_sf_frac_diff(J[20], 0.3528340286156377192 ) > TEST_TOL4 ); + sa += ( test_sf_frac_diff(J[50], 0.0465651162777522155 ) > TEST_TOL4 ); + gsl_test(sa, " gsl_sf_sequence_Jnu_e(2)"); + s += sa; + + sa = 0; + for(i=0; i<100; i++) { + J[i] = i; + } + gsl_sf_bessel_sequence_Jnu_e(12.0, GSL_MODE_DEFAULT, 100, J); + sa += ( test_sf_frac_diff(J[1], 4.999718179448405289e-13 ) > TEST_TOL1 ); + sa += ( test_sf_frac_diff(J[5], 7.627813166084551355e-05 ) > TEST_TOL1 ); + sa += ( test_sf_frac_diff(J[7], 2.655620035894568062e-03 ) > TEST_TOL3 ); + sa += ( test_sf_frac_diff(J[10], 6.337025497015601509e-02 ) > TEST_TOL3 ); + sa += ( test_sf_frac_diff(J[15], 0.23666584405476805591 ) > TEST_TOL3 ); + sa += ( test_sf_frac_diff(J[30], 0.14825335109966010021 ) > TEST_TOL3 ); + sa += ( test_sf_frac_diff(J[70], 0.04109913716555364262 ) > TEST_TOL4 ); + sa += ( test_sf_frac_diff(J[99], -0.0015052760501176728 ) > TEST_TOL5 ); + gsl_test(sa, " gsl_sf_sequence_Jnu_e(12)"); + s += sa; + + sa = 0; + for(i=0; i<100; i++) { + J[i] = i * 20; + } + gsl_sf_bessel_sequence_Jnu_e(1000.0, GSL_MODE_DEFAULT, 100, J); + sa += ( test_sf_frac_diff(J[50], 0.04473067294796404088 ) > TEST_TOL5 ); + sa += ( test_sf_frac_diff(J[99], 0.01400619760349853902 ) > TEST_TOL6 ); + gsl_test(sa, " gsl_sf_sequence_Jnu_e(1000)"); + s += sa; + + + return s; +} diff --git a/gsl-2.5/specfunc/test_coulomb.c b/gsl-2.5/specfunc/test_coulomb.c new file mode 100644 index 00000000..899293c2 --- /dev/null +++ b/gsl-2.5/specfunc/test_coulomb.c @@ -0,0 +1,442 @@ +/* specfunc/test_coulomb.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ + +#include +#include +#include +#include "test_sf.h" + +#define PRINT(n) printf("%22.18g %22.18g %22.18g %22.18g\n", F[n], Fp[n], G[n], Gp[n]) + +#define WKB_TOL (1.0e+04 * TEST_SQRT_TOL0) + + +int test_coulomb(void) +{ + gsl_sf_result r; + int status = 0; + int s = 0; + + char message_buff[2048]; + + /* const int kmax = 20; */ + /* double F[kmax+1], Fp[kmax+1], G[kmax+1], Gp[kmax+1]; */ + gsl_sf_result F, Fp, G, Gp; + double Fe, Ge; + double lam_min; + double lam_F; + double eta, x; + int k_G; + + TEST_SF(s, gsl_sf_hydrogenicR_1_e, (3.0, 2.0, &r), 0.025759948256148471036, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hydrogenicR_1_e, (3.0, 10.0, &r), 9.724727052062819704e-13, TEST_TOL1, GSL_SUCCESS); + status += s; + + TEST_SF(s, gsl_sf_hydrogenicR_e, (4, 1, 3.0, 0.0, &r), 0.0, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hydrogenicR_e, (4, 0, 3.0, 2.0, &r), -0.03623182256981820062, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hydrogenicR_e, (4, 1, 3.0, 2.0, &r), -0.028065049083129581005, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hydrogenicR_e, (4, 2, 3.0, 2.0, &r), 0.14583027278668431009, TEST_TOL0, GSL_SUCCESS); + status += s; + + TEST_SF(s, gsl_sf_hydrogenicR_e, (100, 0, 3.0, 2.0, &r), -0.00007938950980052281367, TEST_TOL3, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hydrogenicR_e, (100, 10, 3.0, 2.0, &r), 7.112823375353605977e-12, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hydrogenicR_e, (100, 90, 3.0, 2.0, &r), 5.845231751418131548e-245, TEST_TOL2, GSL_SUCCESS); + status += s; + + lam_F = 0.0; + k_G = 0; + eta = 1.0; + x = 5.0; + gsl_sf_coulomb_wave_FG_e(eta, x, lam_F, k_G, &F, &Fp, &G, &Gp, &Fe, &Ge); + s = 0; + message_buff[0] = 0; + s += test_sf_check_result(message_buff, F, 0.6849374120059439677, TEST_TOL3); + s += test_sf_check_result(message_buff, Fp, -0.7236423862556063963, TEST_TOL3); + s += test_sf_check_result(message_buff, G, -0.8984143590920205487, TEST_TOL3); + s += test_sf_check_result(message_buff, Gp, -0.5108047585190350106, TEST_TOL3); + printf("%s", message_buff); + gsl_test(s," gsl_sf_coulomb_wave_FG_e(1.0, 5.0, lam_F=0, lam_G=0)"); + status += s; + + lam_F = 10.0; + k_G = 2; + eta = 1.0; + x = 5.0; + gsl_sf_coulomb_wave_FG_e(eta, x, lam_F, k_G, &F, &Fp, &G, &Gp, &Fe, &Ge); + s = 0; + message_buff[0] = 0; + s += test_sf_check_result(message_buff, F, 0.0006423773354915823698, TEST_TOL3); + s += test_sf_check_result(message_buff, Fp, 0.0013299570958719702545, TEST_TOL3); + s += test_sf_check_result(message_buff, G, 33.27615734455096130, TEST_TOL3); + s += test_sf_check_result(message_buff, Gp, -45.49180102261540580, TEST_TOL3); + printf("%s", message_buff); + gsl_test(s," gsl_sf_coulomb_wave_FG_e(1.0, 5.0, lam_F=10, lam_G=8)"); + status += s; + + lam_F = 4.0; + k_G = 2; + eta = 50.0; + x = 120.0; + gsl_sf_coulomb_wave_FG_e(eta, x, lam_F, k_G, &F, &Fp, &G, &Gp, &Fe, &Ge); + s = 0; + message_buff[0] = 0; + s += test_sf_check_result(message_buff, F, 0.0735194711823798495, TEST_TOL3); + s += test_sf_check_result(message_buff, Fp, 0.6368149124126783325, TEST_TOL3); + /* + s += test_sf_check_result(message_buff, G, , TEST_TOL5); + s += test_sf_check_result(message_buff, Gp, , TEST_TOL5); + */ + printf("%s", message_buff); + gsl_test(s," gsl_sf_coulomb_wave_FG_e(50.0, 120.0, lam_F=4, lam_G=2)"); + status += s; + + lam_F = 0.0; + k_G = 0; + eta = -1000.0; + x = 1.0; + gsl_sf_coulomb_wave_FG_e(eta, x, lam_F, k_G, &F, &Fp, &G, &Gp, &Fe, &Ge); + s = 0; + message_buff[0] = 0; + s += test_sf_check_result(message_buff, F, 9.68222518991341e-02, TEST_TOL3); + s += test_sf_check_result(message_buff, Fp, 5.12063396274631e+00, TEST_TOL3); + s += test_sf_check_result(message_buff, G, 1.13936784379472e-01, TEST_TOL3); + s += test_sf_check_result(message_buff, Gp, -4.30243486522438e+00, TEST_TOL3); + printf("%s", message_buff); + gsl_test(s, " gsl_sf_coulomb_wave_FG_e(-1000.0, 1.0, lam_F=0, lam_G=0)"); + status += s; + + lam_min = 0.0; + eta = -50.0; + x = 5.0; + gsl_sf_coulomb_wave_FG_e(eta, x, lam_F, k_G, &F, &Fp, &G, &Gp, &Fe, &Ge); + s = 0; + message_buff[0] = 0; + s += test_sf_check_result(message_buff, F, 1.52236975714236e-01, TEST_TOL3); + s += test_sf_check_result(message_buff, Fp, 2.03091041166137e+00, TEST_TOL3); + s += test_sf_check_result(message_buff, G, 4.41680690236251e-01, TEST_TOL3); + s += test_sf_check_result(message_buff, Gp, -6.76485374766869e-01, TEST_TOL3); + printf("%s", message_buff); + gsl_test(s, " gsl_sf_coulomb_wave_FG_e(-50.0, 5.0, lam_F=0, lam_G=0)"); + status += s; + + lam_min = 0.0; + eta = -50.0; + x = 1000.0; + gsl_sf_coulomb_wave_FG_e(eta, x, lam_F, k_G, &F, &Fp, &G, &Gp, &Fe, &Ge); + s = 0; + message_buff[0] = 0; + s += test_sf_check_result(message_buff, F, -0.2267212182760888523, TEST_TOL3); + s += test_sf_check_result(message_buff, Fp, -0.9961306810018401525, TEST_TOL3); + s += test_sf_check_result(message_buff, G, -0.9497684438900352186, TEST_TOL3); + s += test_sf_check_result(message_buff, Gp, 0.2377656295411961399, TEST_TOL3); + printf("%s", message_buff); + gsl_test(s, " gsl_sf_coulomb_wave_FG_e(-50.0, 1000.0, lam_F=0, lam_G=0)"); + status += s; + + lam_F = 10.0; + k_G = 0; + eta = -50.0; + x = 5.0; + gsl_sf_coulomb_wave_FG_e(eta, x, lam_F, k_G, &F, &Fp, &G, &Gp, &Fe, &Ge); + s = 0; + message_buff[0] = 0; + s += test_sf_check_result(message_buff, F, -3.681143602184922e-01, TEST_TOL3); + s += test_sf_check_result(message_buff, Fp, 1.338467510317215e+00, TEST_TOL3); + s += test_sf_check_result(message_buff, G, 3.315883246109351e-01, TEST_TOL3); + s += test_sf_check_result(message_buff, Gp, 1.510888628136180e+00, TEST_TOL3); + printf("%s", message_buff); + gsl_test(s, " gsl_sf_coulomb_wave_FG_e(-50.0, 5.0, lam_F=10, lam_G=10)"); + status += s; + + lam_F = 0.0; + k_G = 0; + eta = -4.0; + x = 5.0; + gsl_sf_coulomb_wave_FG_e(eta, x, lam_F, k_G, &F, &Fp, &G, &Gp, &Fe, &Ge); + s = 0; + message_buff[0] = 0; + s += test_sf_check_result(message_buff, F, 4.078627230056172e-01, TEST_TOL3); + s += test_sf_check_result(message_buff, Fp, 1.098212336357310e+00, TEST_TOL3); + s += test_sf_check_result(message_buff, G, 6.743270353832442e-01, TEST_TOL3); + s += test_sf_check_result(message_buff, Gp, -6.361104272804447e-01, TEST_TOL3); + printf("%s", message_buff); + gsl_test(s, " gsl_sf_coulomb_wave_FG_e(-4.0, 5.0, lam_F=0, lam_G=0"); + status += s; + + lam_F = 3.0; + k_G = 0; + eta = -4.0; + x = 5.0; + gsl_sf_coulomb_wave_FG_e(eta, x, lam_F, k_G, &F, &Fp, &G, &Gp, &Fe, &Ge); + s = 0; + message_buff[0] = 0; + s += test_sf_check_result(message_buff, F, -2.568630935581323e-01, TEST_TOL3); + s += test_sf_check_result(message_buff, Fp, 1.143229422014827e+00, TEST_TOL3); + s += test_sf_check_result(message_buff, G, 7.879899223927996e-01, TEST_TOL3); + s += test_sf_check_result(message_buff, Gp, 3.859905878106713e-01, TEST_TOL3); + printf("%s", message_buff); + gsl_test(s, " gsl_sf_coulomb_wave_FG_e(-4.0, 5.0, lam_F=3, lam_G=3"); + status += s; + + lam_F = 0.0; + k_G = 0; + eta = 1.0; + x = 2.0; + gsl_sf_coulomb_wave_FG_e(eta, x, lam_F, k_G, &F, &Fp, &G, &Gp, &Fe, &Ge); + s = 0; + message_buff[0] = 0; + s += test_sf_check_result(message_buff, F, 6.61781613832681e-01, TEST_TOL3); + s += test_sf_check_result(message_buff, Fp, 4.81557455709949e-01, TEST_TOL3); + s += test_sf_check_result(message_buff, G, 1.27577878476828e+00, TEST_TOL3); + s += test_sf_check_result(message_buff, Gp, -5.82728813097184e-01, TEST_TOL3); + printf("%s", message_buff); + gsl_test(s, " gsl_sf_coulomb_wave_FG_e(1.0, 2.0, lam_F=0, lam_G=0)"); + status += s; + + lam_F = 0.0; + k_G = 0; + eta = 1.0; + x = 0.5; + gsl_sf_coulomb_wave_FG_e(eta, x, lam_F, k_G, &F, &Fp, &G, &Gp, &Fe, &Ge); + s = 0; + message_buff[0] = 0; + s += test_sf_check_result(message_buff, F, 0.08315404535022023302, TEST_TOL3); + s += test_sf_check_result(message_buff, Fp, 0.22693874616222787568, TEST_TOL3); + s += test_sf_check_result(message_buff, G, 3.1060069279548875140, TEST_TOL3); + s += test_sf_check_result(message_buff, Gp, -3.549156038719924236, TEST_TOL3); + printf("%s", message_buff); + gsl_test(s, " gsl_sf_coulomb_wave_FG_e(1.0, 0.5, lam_F=0, lam_G=0)"); + status += s; + + lam_F = 0.5; + k_G = 0; + eta = 1.0; + x = 0.5; + gsl_sf_coulomb_wave_FG_e(eta, x, lam_F, k_G, &F, &Fp, &G, &Gp, &Fe, &Ge); + s = 0; + message_buff[0] = 0; + s += test_sf_check_result(message_buff, F, 0.04049078073829290935, TEST_TOL3); + s += test_sf_check_result(message_buff, Fp, 0.14194939168094778795, TEST_TOL3); + s += test_sf_check_result(message_buff, G, 4.720553853049677897, TEST_TOL3); + s += test_sf_check_result(message_buff, Gp, -8.148033852319180005, TEST_TOL3); + printf("%s", message_buff); + gsl_test(s, " gsl_sf_coulomb_wave_FG_e(1.0, 0.5, lam_F=0.5, lam_G=0.5)"); + status += s; + + lam_F = 0.1; + k_G = 0; + eta = 1.0; + x = 0.5; + gsl_sf_coulomb_wave_FG_e(eta, x, lam_F, k_G, &F, &Fp, &G, &Gp, &Fe, &Ge); + s = 0; + message_buff[0] = 0; + s += test_sf_check_result(message_buff, F, 0.07365466672379703418, TEST_TOL5); + s += test_sf_check_result(message_buff, Fp, 0.21147121807178518647, TEST_TOL5); + s += test_sf_check_result(message_buff, G, 3.306705446241024890, TEST_TOL5); + s += test_sf_check_result(message_buff, Gp, -4.082931670935696644, TEST_TOL5); + printf("%s", message_buff); + gsl_test(s, " gsl_sf_coulomb_wave_FG_e(1.0, 0.5, lam_F=0.1, lam_G=0.1)"); + status += s; + + lam_F = 0.0; + k_G = 0; + eta = 8.0; + x = 1.05; + gsl_sf_coulomb_wave_FG_e(eta, x, lam_F, k_G, &F, &Fp, &G, &Gp, &Fe, &Ge); + s = 0; + message_buff[0] = 0; + s += test_sf_check_result(message_buff, F, 9.882706082810274357e-09, TEST_TOL5); + s += test_sf_check_result(message_buff, Fp, 4.005167028235547770e-08, TEST_TOL5); + s += test_sf_check_result(message_buff, G, 1.333127992006686320e+07, TEST_SQRT_TOL0); + s += test_sf_check_result(message_buff, Gp, -4.715914530842402330e+07, TEST_SQRT_TOL0); + printf("%s", message_buff); + gsl_test(s, " gsl_sf_coulomb_wave_FG_e(8.0, 1.05, lam_F=0, lam_G=0)"); + status += s; + + lam_F = 0.1; + k_G = 0; + eta = 8.0; + x = 1.05; + gsl_sf_coulomb_wave_FG_e(eta, x, lam_F, k_G, &F, &Fp, &G, &Gp, &Fe, &Ge); + s = 0; + message_buff[0] = 0; + s += test_sf_check_result(message_buff, F, 9.611416736061987761e-09, TEST_TOL5); + s += test_sf_check_result(message_buff, Fp, 3.909628126126824140e-08, TEST_TOL5); + s += test_sf_check_result(message_buff, G, 1.365928464219262581e+07, 4.0*TEST_SQRT_TOL0); + s += test_sf_check_result(message_buff, Gp, -4.848117385783386850e+07, 4.0*TEST_SQRT_TOL0); + printf("%s", message_buff); + gsl_test(s, " gsl_sf_coulomb_wave_FG_e(8.0, 1.05, lam_F=0.1, lam_G=0.1)"); + status += s; + + lam_F = 0.0; + k_G = 0; + eta = 50.0; + x = 0.1; + gsl_sf_coulomb_wave_FG_e(eta, x, lam_F, k_G, &F, &Fp, &G, &Gp, &Fe, &Ge); + s = 0; + message_buff[0] = 0; + s += test_sf_check_result(message_buff, F, 2.807788027954216071e-67, TEST_TOL5); + s += test_sf_check_result(message_buff, Fp, 9.677600748751576606e-66, TEST_TOL5); + s += test_sf_check_result(message_buff, G, 5.579810686998358766e+64, TEST_SQRT_TOL0); + s += test_sf_check_result(message_buff, Gp, -1.638329512756321424e+66, TEST_SQRT_TOL0); + printf("%s", message_buff); + gsl_test(s, " gsl_sf_coulomb_wave_FG_e(50.0, 0.1, lam_F=0, lam_G=0)"); + status += s; + + lam_F = 0.0; + k_G = 0; + eta = 10.0; + x = 5.0; + gsl_sf_coulomb_wave_FG_e(eta, x, lam_F, k_G, &F, &Fp, &G, &Gp, &Fe, &Ge); + s = 0; + message_buff[0] = 0; + s += test_sf_check_result(message_buff, F, 1.7207454091787930614e-06, 10.0*WKB_TOL); + s += test_sf_check_result(message_buff, Fp, 3.0975994706405458046e-06, 10.0*WKB_TOL); + s += test_sf_check_result(message_buff, G, 167637.56609459967623, 10.0*WKB_TOL); + s += test_sf_check_result(message_buff, Gp, -279370.76655361803075, 10.0*WKB_TOL); + printf("%s", message_buff); + gsl_test(s, " gsl_sf_coulomb_wave_FG_e(10.0, 5.0, lam_F=0, lam_G=0)"); + status += s; + + lam_F = 0.0; + k_G = 0; + eta = 25.0; + x = 10.0; + gsl_sf_coulomb_wave_FG_e(eta, x, lam_F, k_G, &F, &Fp, &G, &Gp, &Fe, &Ge); + s = 0; + message_buff[0] = 0; + s += test_sf_check_result(message_buff, F, 1.5451274501076114315e-16, 5.0*WKB_TOL); + s += test_sf_check_result(message_buff, Fp, 3.1390869393378630928e-16, 5.0*WKB_TOL); + s += test_sf_check_result(message_buff, G, 1.6177129008336318136e+15, 5.0*WKB_TOL); + s += test_sf_check_result(message_buff, Gp, -3.1854062013149740860e+15, 5.0*WKB_TOL); + printf("%s", message_buff); + gsl_test(s, " gsl_sf_coulomb_wave_FG_e(25.0, 10.0, lam_F=0, lam_G=0)"); + status += s; + + lam_F = 0.0; + k_G = 0; + eta = 1.0; + x = 9.2; + gsl_sf_coulomb_wave_FG_e(eta, x, lam_F, k_G, &F, &Fp, &G, &Gp, &Fe, &Ge); + s = 0; + message_buff[0] = 0; + s += test_sf_check_result(message_buff, F, -0.25632012319757955655, TEST_TOL5); + s += test_sf_check_result(message_buff, Fp, 0.91518792286724220370, TEST_TOL5); + s += test_sf_check_result(message_buff, G, 1.03120585918973466110, TEST_SQRT_TOL0); + s += test_sf_check_result(message_buff, Gp, 0.21946326717491250193, TEST_SQRT_TOL0); + printf("%s", message_buff); + gsl_test(s, " gsl_sf_coulomb_wave_FG_e(1.0, 9.2, lam_F=0, lam_G=0)"); + status += s; + + lam_F = 0.0; + eta = 10.0; + x = 10.0; + gsl_sf_coulomb_wave_FG_e(eta, x, lam_F, k_G, &F, &Fp, &G, &Gp, &Fe, &Ge); + s = 0; + message_buff[0] = 0; + s += test_sf_check_result(message_buff, F, 0.0016262711250135878249, WKB_TOL); + s += test_sf_check_result(message_buff, Fp, 0.0017060476320792806014, WKB_TOL); + s += test_sf_check_result(message_buff, G, 307.87321661090837987, WKB_TOL); + s += test_sf_check_result(message_buff, Gp, -291.92772380826822871, WKB_TOL); + printf("%s", message_buff); + gsl_test(s, " gsl_sf_coulomb_wave_FG_e(10.0, 10.0, lam_F=0, lam_G=0)"); + status += s; + + lam_F = 0.0; + eta = 100.0; + x = 1.0; + gsl_sf_coulomb_wave_FG_e(eta, x, lam_F, k_G, &F, &Fp, &G, &Gp, &Fe, &Ge); + s = 0; + message_buff[0] = 0; + s += test_sf_check_result(message_buff, F, 8.999367996930662705e-126, 10.0*WKB_TOL); + s += test_sf_check_result(message_buff, Fp, 1.292746745757069321e-124, 10.0*WKB_TOL); + s += test_sf_check_result(message_buff, G, 3.936654148133683610e+123, 10.0*WKB_TOL); + s += test_sf_check_result(message_buff, Gp, -5.456942268061526371e+124, 10.0*WKB_TOL); + printf("%s", message_buff); + gsl_test(s, " gsl_sf_coulomb_wave_FG_e(100.0, 1.0, lam_F=0, lam_G=0)"); + status += s; + + /* compute F_1(eta=0,x=3.25), F'_1 and G_1(eta=0,x=3.25), G'_1 */ + + lam_F = 1.0; + eta = 0.0; + x = 3.25; + k_G = 0; + gsl_sf_coulomb_wave_FG_e(eta, x, lam_F, k_G, &F, &Fp, &G, &Gp, &Fe, &Ge); + s = 0; + message_buff[0] = 0; + s += test_sf_check_result(message_buff, F, sin(x)/x - cos(x), TEST_TOL3); + s += test_sf_check_result(message_buff, Fp, -sin(x)/(x*x) + cos(x)/x +sin(x), TEST_TOL3); + s += test_sf_check_result(message_buff, G, cos(x)/x + sin(x), TEST_TOL3); + s += test_sf_check_result(message_buff, Gp, -cos(x)/(x*x) - sin(x)/x + cos(x), TEST_TOL3); + printf("%s", message_buff); + gsl_test(s, " gsl_sf_coulomb_wave_FG_e(3.25, 0.0, lam_F=1, lam_G=1)"); + status += s; + + /* compute F_1(eta=0,x=3.25), F'_1 and G_0(eta=0,x=3.25), G'_0 */ + + lam_F = 1.0; + eta = 0.0; + x = 3.25; + k_G = 1; + gsl_sf_coulomb_wave_FG_e(eta, x, lam_F, k_G, &F, &Fp, &G, &Gp, &Fe, &Ge); + s = 0; + message_buff[0] = 0; + s += test_sf_check_result(message_buff, F, sin(x)/x - cos(x), TEST_TOL3); + s += test_sf_check_result(message_buff, Fp, -sin(x)/(x*x) + cos(x)/x +sin(x), TEST_TOL3); + s += test_sf_check_result(message_buff, G, cos(x), TEST_TOL3); + s += test_sf_check_result(message_buff, Gp, -sin(x), TEST_TOL3); + printf("%s", message_buff); + gsl_test(s, " gsl_sf_coulomb_wave_FG_e(3.25, 0.0, lam_F=1, lam_G=0)"); + status += s; + +#ifdef FIXME + /* compute F_37(eta=0,x), F'_37 and G_36(eta=0,x), G'_36 for + x=1.2693881947287221e-07 */ + + /* For eta=0 expanding A&S 4.3.1 gives + + FplusIG(L,r)={I*exp(-I*r)*sum(k=0,L,((L+k)!/(k!*(L-k)!))*(I^(L-k))*(2*r)^(-k)) + + or alternatively F+iG can be expressed in terms of bessel functions + + FplusIG(L,r)=sqrt(Pi*x/2)*besselh1(L+1/2,x)) + */ + + lam_F = 37.0; + eta = 0.0; + x = 1.2693881947287221e-07; + k_G = 1; + gsl_sf_coulomb_wave_FG_e(eta, x, lam_F, k_G, &F, &Fp, &G, &Gp, &Fe, &Ge); + s = 0; + message_buff[0] = 0; + s += test_sf_check_result(message_buff, F, 6.5890724278623412974127e-318 , TEST_TOL3); + s += test_sf_check_result(message_buff, Fp, 1.97248369961623986509839591990e-309, TEST_TOL3); + s += test_sf_check_result(message_buff, G, 4.46663541714903607940730e299, TEST_TOL3); + s += test_sf_check_result(message_buff, Gp, -1.26674311046140805594543e308 , TEST_TOL3); + printf("%s", message_buff); + gsl_test(s, " gsl_sf_coulomb_wave_FG_e(1.2693881947287221e-07, 0.0, lam_F=37, lam_G=36)"); + status += s; +#endif + + + return status; +} diff --git a/gsl-2.5/specfunc/test_dilog.c b/gsl-2.5/specfunc/test_dilog.c new file mode 100644 index 00000000..b377019e --- /dev/null +++ b/gsl-2.5/specfunc/test_dilog.c @@ -0,0 +1,310 @@ +/* specfunc/test_dilog.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2004 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ + +#include +#include +#include +#include "test_sf.h" + + +int test_dilog(void) +{ + gsl_sf_result r; + gsl_sf_result r1, r2; + int s = 0; + + /* real dilog */ + + TEST_SF(s, gsl_sf_dilog_e, (-3.0, &r), -1.9393754207667089531, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_dilog_e, (-0.5, &r), -0.4484142069236462024, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_dilog_e, (-0.001, &r), -0.0009997501110486510834, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_dilog_e, (0.1, &r), 0.1026177910993911, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_dilog_e, (0.7, &r), 0.8893776242860387386, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_dilog_e, (1.0, &r), 1.6449340668482260, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_dilog_e, (1.5, &r), 2.3743952702724802007, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_dilog_e, (2.0, &r), 2.4674011002723397, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_dilog_e, ( 5.0, &r), 1.7837191612666306277, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_dilog_e, ( 11.0, &r), 0.3218540439999117111, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_dilog_e, (12.59, &r), 0.0010060918167266208634, TEST_TOL3, GSL_SUCCESS); + TEST_SF(s, gsl_sf_dilog_e, (12.595, &r), 0.00003314826006436236810, TEST_TOL5, GSL_SUCCESS); + TEST_SF(s, gsl_sf_dilog_e, (13.0, &r), -0.07806971248458575855, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_dilog_e, (20.0, &r), -1.2479770861745251168, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_dilog_e, (150.0, &r), -9.270042702348657270, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_dilog_e, (1100.0, &r), -21.232504073931749553, TEST_TOL0, GSL_SUCCESS); + + + /* complex dilog */ + + TEST_SF_2(s, gsl_sf_complex_dilog_e, (0.99999, M_PI/2.0, &r1, &r2), + -0.20561329262779687646, TEST_TOL0, + 0.91595774018131512060, TEST_TOL0, + GSL_SUCCESS); + + TEST_SF_2(s, gsl_sf_complex_dilog_e, (0.991, M_PI/2.0, &r1, &r2), + -0.20250384721077806127, TEST_TOL0, + 0.90888544355846447810, TEST_TOL0, + GSL_SUCCESS); + + TEST_SF_2(s, gsl_sf_complex_dilog_e, (0.98, M_PI/2.0, &r1, &r2), + -0.19871638377785918403, TEST_TOL2, + 0.90020045882981847610, TEST_TOL2, + GSL_SUCCESS); + + TEST_SF_2(s, gsl_sf_complex_dilog_e, (0.98, -M_PI/2.0, &r1, &r2), + -0.19871638377785918403, TEST_TOL2, + -0.90020045882981847610, TEST_TOL2, + GSL_SUCCESS); + + TEST_SF_2(s, gsl_sf_complex_dilog_e, (0.95, M_PI/2.0, &r1, &r2), + -0.18848636456893572091, TEST_TOL1, + 0.87633754133420277830, TEST_TOL1, + GSL_SUCCESS); + + TEST_SF_2(s, gsl_sf_complex_dilog_e, (0.8, M_PI/2.0, &r1, &r2), + -0.13980800855429037810, TEST_TOL0, + 0.75310609092419884460, TEST_TOL0, + GSL_SUCCESS); + + TEST_SF_2(s, gsl_sf_complex_dilog_e, (0.8, -M_PI/2.0, &r1, &r2), + -0.13980800855429037810, TEST_TOL0, + -0.75310609092419884460, TEST_TOL0, + GSL_SUCCESS); + + TEST_SF_2(s, gsl_sf_complex_dilog_e, (0.5, M_PI/2.0, &r1, &r2), + -0.05897507442156586346, TEST_TOL1, + 0.48722235829452235710, TEST_TOL1, + GSL_SUCCESS); + + TEST_SF_2(s, gsl_sf_complex_dilog_e, (0.5, -M_PI/2.0, &r1, &r2), + -0.05897507442156586346, TEST_TOL1, + -0.48722235829452235710, TEST_TOL1, + GSL_SUCCESS); + + TEST_SF_2(s, gsl_sf_complex_dilog_e, (0.01, M_PI/2.0, &r1, &r2), + -0.000024999375027776215378, TEST_TOL3, + 0.009999888892888684820, TEST_TOL3, + GSL_SUCCESS); + + TEST_SF_2(s, gsl_sf_complex_dilog_e, (0.01, -M_PI/2.0, &r1, &r2), + -0.000024999375027776215378, TEST_TOL3, + -0.009999888892888684820, TEST_TOL3, + GSL_SUCCESS); + + + TEST_SF_2(s, gsl_sf_complex_dilog_e, (0.99, M_PI/4.0, &r1, &r2), + 0.56273366219795547757, TEST_TOL3, + 0.97009284079274560384, TEST_TOL3, + GSL_SUCCESS); + + TEST_SF_2(s, gsl_sf_complex_dilog_e, (0.99, -M_PI/4.0, &r1, &r2), + 0.56273366219795547757, TEST_TOL3, + -0.97009284079274560384, TEST_TOL3, + GSL_SUCCESS); + + TEST_SF_2(s, gsl_sf_complex_dilog_e, (0.99, 3.0*M_PI/4.0, &r1, &r2), + -0.66210902664245926235, TEST_TOL1, + 0.51995305609998319025, TEST_TOL1, + GSL_SUCCESS); + + TEST_SF_2(s, gsl_sf_complex_dilog_e, (0.99, 5.0*M_PI/4.0, &r1, &r2), + -0.66210902664245926235, TEST_TOL1, + -0.51995305609998319025, TEST_TOL1, + GSL_SUCCESS); + + TEST_SF_2(s, gsl_sf_complex_dilog_e, (0.99, 3.0*M_PI/2.0, &r1, &r2), + -0.20215874509123277909, TEST_TOL1, + -0.90809733095648731408, TEST_TOL1, + GSL_SUCCESS); + + TEST_SF_2(s, gsl_sf_complex_dilog_e, (0.25, 3.0*M_PI/2.0, &r1, &r2), + -0.01538741178141053563, TEST_TOL1, + -0.24830175098230686908, TEST_TOL1, + GSL_SUCCESS); + + TEST_SF_2(s, gsl_sf_complex_dilog_e, (0.25, 15.0/8.0*M_PI, &r1, &r2), + 0.24266162342377302235, TEST_TOL1, + -0.10860883369274445067, TEST_TOL1, + GSL_SUCCESS); + + + TEST_SF_2(s, gsl_sf_complex_dilog_e, (0.99, M_PI/8.0, &r1, &r2), + 1.0571539648820244720, TEST_TOL0, + 0.7469145254610851318, TEST_TOL0, + GSL_SUCCESS); + + TEST_SF_2(s, gsl_sf_complex_dilog_e, (0.99, M_PI/64.0, &r1, &r2), + 1.5381800285902999666, TEST_TOL0, + 0.1825271634987756651, TEST_TOL0, + GSL_SUCCESS); + + TEST_SF_2(s, gsl_sf_complex_dilog_e, (0.99, -M_PI/8.0, &r1, &r2), + 1.05715396488202447202, TEST_TOL1, + -0.74691452546108513176, TEST_TOL1, + GSL_SUCCESS); + + + TEST_SF_2(s, gsl_sf_complex_dilog_e, (1.00001, M_PI/2.0, &r1, &r2), + -0.20562022409960237363, TEST_TOL1, + 0.91597344814458309320, TEST_TOL1, + GSL_SUCCESS); + + TEST_SF_2(s, gsl_sf_complex_dilog_e, (10.0, M_PI/2.0, &r1, &r2), + -3.0596887943287347304, TEST_TOL0, + 3.7167814930680685900, TEST_TOL0, + GSL_SUCCESS); + + TEST_SF_2(s, gsl_sf_complex_dilog_e, (100.0, M_PI/2.0, &r1, &r2), + -11.015004738293824854, TEST_TOL0, + 7.2437843013083534970, TEST_TOL0, + GSL_SUCCESS); + + + /** tests brought up by Jim McElwaine bug report */ + + TEST_SF_2(s, gsl_sf_complex_dilog_e, (1.1, -M_PI/2.0, &r1, &r2), + -0.24099184177382733037, TEST_TOL1, + -0.99309132538137822631, TEST_TOL1, + GSL_SUCCESS); + + TEST_SF_2(s, gsl_sf_complex_dilog_e, (1.1, 3.0*M_PI/2.0, &r1, &r2), + -0.24099184177382733037, TEST_TOL1, + -0.99309132538137822631, TEST_TOL1, + GSL_SUCCESS); + + TEST_SF_2(s, gsl_sf_complex_dilog_e, (1.1, -3.0*M_PI/2.0, &r1, &r2), + -0.24099184177382733037, TEST_TOL1, + 0.99309132538137822631, TEST_TOL1, + GSL_SUCCESS); + + TEST_SF_2(s, gsl_sf_complex_dilog_e, (1.1, -M_PI - 0.25*M_PI, &r1, &r2), + -0.72908565537087935118, TEST_TOL1, + 0.56225783937234862649, TEST_TOL1, + GSL_SUCCESS); + + TEST_SF_2(s, gsl_sf_complex_dilog_e, (1.1, M_PI + 0.25*M_PI, &r1, &r2), + -0.72908565537087935118, TEST_TOL1, + -0.56225783937234862649, TEST_TOL1, + GSL_SUCCESS); + + TEST_SF_2(s, gsl_sf_complex_dilog_e, (1.1, -M_PI/128.0, &r1, &r2), + 1.8881719454909716580, TEST_TOL1, + -0.3556738764969238976, TEST_TOL1, + GSL_SUCCESS); + + TEST_SF_2(s, gsl_sf_complex_dilog_e, (1.1, M_PI/128.0, &r1, &r2), + 1.8881719454909716580, TEST_TOL1, + 0.3556738764969238976, TEST_TOL1, + GSL_SUCCESS); + + TEST_SF_2(s, gsl_sf_complex_dilog_e, (1.5, M_PI/8.0, &r1, &r2), + 1.3498525763442498343, TEST_TOL1, + 1.4976532712229749493, TEST_TOL1, + GSL_SUCCESS); + + TEST_SF_2(s, gsl_sf_complex_dilog_e, (1.5, -M_PI/8.0, &r1, &r2), + 1.3498525763442498343, TEST_TOL1, + -1.4976532712229749493, TEST_TOL1, + GSL_SUCCESS); + + TEST_SF_2(s, gsl_sf_complex_dilog_e, (1.5, 2.0*M_PI + M_PI/8.0, &r1, &r2), + 1.3498525763442498343, TEST_TOL1, + 1.4976532712229749493, TEST_TOL1, + GSL_SUCCESS); + + TEST_SF_2(s, gsl_sf_complex_dilog_e, (1.5, 2.0*M_PI - M_PI/8.0, &r1, &r2), + 1.3498525763442498343, TEST_TOL1, + -1.4976532712229749493, TEST_TOL1, + GSL_SUCCESS); + + + /* tests of the (x,y) function, which is now the underlying implementation */ + + TEST_SF_2(s, gsl_sf_complex_dilog_xy_e, (0.0, 0.5, &r1, &r2), + -0.05897507442156586346, TEST_TOL1, + 0.48722235829452235710, TEST_TOL1, + GSL_SUCCESS); + + TEST_SF_2(s, gsl_sf_complex_dilog_xy_e, (0.0, -0.5, &r1, &r2), + -0.05897507442156586346, TEST_TOL1, + -0.48722235829452235710, TEST_TOL1, + GSL_SUCCESS); + + TEST_SF_2(s, gsl_sf_complex_dilog_xy_e, (0.91464073718617389108, 0.37885659804143889673, &r1, &r2), + 1.0571539648820244720, TEST_TOL0, + 0.7469145254610851318, TEST_TOL0, + GSL_SUCCESS); + + TEST_SF_2(s, gsl_sf_complex_dilog_xy_e, (0.91464073718617389108, -0.37885659804143889673, &r1, &r2), + 1.05715396488202447202, TEST_TOL1, + -0.74691452546108513176, TEST_TOL1, + GSL_SUCCESS); + + TEST_SF_2(s, gsl_sf_complex_dilog_xy_e, (-1.5, 0.0, &r1, &r2), + -1.1473806603755707541, TEST_TOL1, + 0.0, TEST_TOL1, + GSL_SUCCESS); + + TEST_SF_2(s, gsl_sf_complex_dilog_xy_e, (0.5, 0.0, &r1, &r2), + 0.58224052646501250590, TEST_TOL1, + 0.0, TEST_TOL1, + GSL_SUCCESS); + + TEST_SF_2(s, gsl_sf_complex_dilog_xy_e, (1.5, 0.0, &r1, &r2), + 2.3743952702724802007, TEST_TOL1, + -1.2738062049196005309, TEST_TOL1, + GSL_SUCCESS); + + + /* small set of spence tests, mostly to check the value on the cut */ + + TEST_SF_2(s, gsl_sf_complex_spence_xy_e, (1.5, 0.0, &r1, &r2), + -0.44841420692364620244, TEST_TOL1, + 0.0, TEST_TOL1, + GSL_SUCCESS); + + TEST_SF_2(s, gsl_sf_complex_spence_xy_e, (0.5, 0.0, &r1, &r2), + 0.58224052646501250590, TEST_TOL1, + 0.0, TEST_TOL1, + GSL_SUCCESS); + + TEST_SF_2(s, gsl_sf_complex_spence_xy_e, (0.0, 0.0, &r1, &r2), + 1.6449340668482264365, TEST_TOL1, + 0.0, TEST_TOL1, + GSL_SUCCESS); + + TEST_SF_2(s, gsl_sf_complex_spence_xy_e, (-0.5, 0.0, &r1, &r2), + 2.3743952702724802007, TEST_TOL1, + -1.2738062049196005309, TEST_TOL1, + GSL_SUCCESS); + + TEST_SF_2(s, gsl_sf_complex_spence_xy_e, (-0.5, 1.0/1024.0, &r1, &r2), + 2.3723507455234125018, TEST_TOL1, + -1.2742581376517839070, TEST_TOL1, + GSL_SUCCESS); + + TEST_SF_2(s, gsl_sf_complex_spence_xy_e, (-0.5, -1.0/1024.0, &r1, &r2), + 2.3723507455234125018, TEST_TOL1, + 1.2742581376517839070, TEST_TOL1, + GSL_SUCCESS); + + + return s; +} diff --git a/gsl-2.5/specfunc/test_gamma.c b/gsl-2.5/specfunc/test_gamma.c new file mode 100644 index 00000000..97993553 --- /dev/null +++ b/gsl-2.5/specfunc/test_gamma.c @@ -0,0 +1,393 @@ +/* specfunc/test_gamma.c + * + * Copyright (C) 2007 Brian Gough + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ + +#include +#include +#include +#include "test_sf.h" + + +int test_gamma(void) +{ + gsl_sf_result r; + gsl_sf_result r1, r2; + double sgn; + int s = 0; + + TEST_SF(s, gsl_sf_lngamma_e, (-0.1, &r), 2.368961332728788655 , TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_lngamma_e, (-1.0/256.0, &r), 5.547444766967471595 , TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_lngamma_e, (1.0e-08, &r), 18.420680738180208905 , TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_lngamma_e, (0.1, &r), 2.252712651734205 , TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_lngamma_e, (1.0 + 1.0/256.0, &r), -0.0022422226599611501448 , TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_lngamma_e, (2.0 + 1.0/256.0, &r), 0.0016564177556961728692 , TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_lngamma_e, (100.0, &r), 359.1342053695753 , TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_lngamma_e, (-1.0-1.0/65536.0, &r), 11.090348438090047844 , TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_lngamma_e, (-1.0-1.0/268435456.0, &r), 19.408121054103474300 , TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_lngamma_e, (-100.5, &r), -364.9009683094273518 , TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_lngamma_e, (-100-1.0/65536.0, &r), -352.6490910117097874 , TEST_TOL0, GSL_SUCCESS); + + TEST_SF_SGN(s, gsl_sf_lngamma_sgn_e, (0.7, &r, &sgn), 0.26086724653166651439, TEST_TOL1, 1.0, GSL_SUCCESS); + TEST_SF_SGN(s, gsl_sf_lngamma_sgn_e, (0.1, &r, &sgn), 2.2527126517342059599, TEST_TOL0, 1.0, GSL_SUCCESS); + TEST_SF_SGN(s, gsl_sf_lngamma_sgn_e, (-0.1, &r, &sgn), 2.368961332728788655, TEST_TOL0, -1.0, GSL_SUCCESS); + TEST_SF_SGN(s, gsl_sf_lngamma_sgn_e, (-1.0-1.0/65536.0, &r, &sgn), 11.090348438090047844, TEST_TOL0, 1.0, GSL_SUCCESS); + TEST_SF_SGN(s, gsl_sf_lngamma_sgn_e, (-2.0-1.0/256.0, &r, &sgn), 4.848447725860607213, TEST_TOL0, -1.0, GSL_SUCCESS); + TEST_SF_SGN(s, gsl_sf_lngamma_sgn_e, (-2.0-1.0/65536.0, &r, &sgn), 10.397193628164674967, TEST_TOL0, -1.0, GSL_SUCCESS); + TEST_SF_SGN(s, gsl_sf_lngamma_sgn_e, (-3.0-1.0/8.0, &r, &sgn), 0.15431112768404182427, TEST_TOL2, 1.0, GSL_SUCCESS); + TEST_SF_SGN(s, gsl_sf_lngamma_sgn_e, (-100.5, &r, &sgn), -364.9009683094273518, TEST_TOL0, -1.0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_gamma_e, (1.0 + 1.0/4096.0, &r), 0.9998591371459403421 , TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gamma_e, (1.0 + 1.0/32.0, &r), 0.9829010992836269148 , TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gamma_e, (2.0 + 1.0/256.0, &r), 1.0016577903733583299 , TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gamma_e, (9.0, &r), 40320.0 , TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gamma_e, (10.0, &r), 362880.0 , TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gamma_e, (100.0, &r), 9.332621544394415268e+155 , TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gamma_e, (170.0, &r), 4.269068009004705275e+304 , TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gamma_e, (171.0, &r), 7.257415615307998967e+306 , TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gamma_e, (-10.5, &r), -2.640121820547716316e-07 , TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gamma_e, (-11.25, &r), 6.027393816261931672e-08 , TEST_TOL0, GSL_SUCCESS); /* exp()... not my fault */ + TEST_SF(s, gsl_sf_gamma_e, (-1.0+1.0/65536.0, &r), -65536.42280587818970 , TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_gammastar_e, (1.0e-08, &r), 3989.423555759890865 , TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gammastar_e, (1.0e-05, &r), 126.17168469882690233 , TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gammastar_e, (0.001, &r), 12.708492464364073506 , TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gammastar_e, (1.5, &r), 1.0563442442685598666 , TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gammastar_e, (3.0, &r), 1.0280645179187893045 , TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gammastar_e, (9.0, &r), 1.0092984264218189715 , TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gammastar_e, (11.0, &r), 1.0076024283104962850 , TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gammastar_e, (100.0, &r), 1.0008336778720121418 , TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gammastar_e, (1.0e+05, &r), 1.0000008333336805529 , TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gammastar_e, (1.0e+20, &r), 1.0 , TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_gammainv_e, (1.0, &r), 1.0, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gammainv_e, (2.0, &r), 1.0, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gammainv_e, (3.0, &r), 0.5, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gammainv_e, (4.0, &r), 1.0/6.0, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_gammainv_e, (10.0, &r), 1.0/362880.0, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gammainv_e, (100.0, &r), 1.0715102881254669232e-156, TEST_TOL2, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_gammainv_e, (0.0, &r), 0.0, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gammainv_e, (-1.0, &r), 0.0, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gammainv_e, (-2.0, &r), 0.0, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gammainv_e, (-3.0, &r), 0.0, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gammainv_e, (-4.0, &r), 0.0, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_gammainv_e, (-10.5, &r), -1.0/2.640121820547716316e-07, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gammainv_e, (-11.25, &r), 1.0/6.027393816261931672e-08, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gammainv_e, (-1.0+1.0/65536.0, &r), -1.0/65536.42280587818970 , TEST_TOL1, GSL_SUCCESS); + + TEST_SF_2(s, gsl_sf_lngamma_complex_e, (5.0, 2.0, &r1, &r2), + 2.7487017561338026749, TEST_TOL0, + 3.0738434100497007915, TEST_TOL0, + GSL_SUCCESS); + + TEST_SF_2(s, gsl_sf_lngamma_complex_e, (100.0, 100.0, &r1, &r2), + 315.07804459949331323, TEST_TOL1, + 2.0821801804113110099, TEST_TOL3, + GSL_SUCCESS); + + TEST_SF_2(s, gsl_sf_lngamma_complex_e, (100.0, -1000.0, &r1, &r2), + -882.3920483010362817000, TEST_TOL1, + -2.1169293725678813270, TEST_TOL3, + GSL_SUCCESS); + + TEST_SF_2(s, gsl_sf_lngamma_complex_e, (-100.0, -1.0, &r1, &r2), + -365.0362469529239516000, TEST_TOL1, + -3.0393820262864361140, TEST_TOL1, + GSL_SUCCESS); + + TEST_SF(s, gsl_sf_taylorcoeff_e, (10, 1.0/1048576.0, &r), 1.7148961854776073928e-67 , TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_taylorcoeff_e, (10, 1.0/1024.0, &r), 2.1738891788497900281e-37 , TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_taylorcoeff_e, (10, 1.0, &r), 2.7557319223985890653e-07 , TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_taylorcoeff_e, (10, 5.0, &r), 2.6911444554673721340 , TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_taylorcoeff_e, (10, 500.0, &r), 2.6911444554673721340e+20 , TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_taylorcoeff_e, (100, 100.0, &r), 1.0715102881254669232e+42 , TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_taylorcoeff_e, (1000, 200.0, &r), 2.6628790558154746898e-267 , TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_taylorcoeff_e, (1000, 500.0, &r), 2.3193170139740855074e+131 , TEST_TOL1, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_fact_e, (0, &r), 1.0 , TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_fact_e, (1, &r), 1.0 , TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_fact_e, (7, &r), 5040.0 , TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_fact_e, (33, &r), 8.683317618811886496e+36 , TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_doublefact_e, (0, &r), 1.0 , TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_doublefact_e, (1, &r), 1.0 , TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_doublefact_e, (7, &r), 105.0 , TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_doublefact_e, (33, &r), 6.332659870762850625e+18 , TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_lnfact_e, (0, &r), 0.0 , TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_lnfact_e, (1, &r), 0.0 , TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_lnfact_e, (7, &r), 8.525161361065414300 , TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_lnfact_e, (33, &r), 85.05446701758151741 , TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_lndoublefact_e, (0, &r), 0.0 , TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_lndoublefact_e, (7, &r), 4.653960350157523371 , TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_lndoublefact_e, (33, &r), 43.292252022541719660 , TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_lndoublefact_e, (34, &r), 45.288575519655959140 , TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_lndoublefact_e, (1034, &r), 3075.6383796271197707 , TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_lndoublefact_e, (1035, &r), 3078.8839081731809169 , TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_lnchoose_e, (7,3, &r), 3.555348061489413680 , TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_lnchoose_e, (5,2, &r), 2.302585092994045684 , TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_choose_e, (7,3, &r), 35.0 , TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_choose_e, (7,4, &r), 35.0 , TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_choose_e, (5,2, &r), 10.0 , TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_choose_e, (5,3, &r), 10.0 , TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_choose_e, (500,495, &r), 255244687600.0, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_choose_e, (500,5, &r), 255244687600.0, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_choose_e, (500,200, &r), 5.054949849935532221e+144 , TEST_TOL5, GSL_SUCCESS); + TEST_SF(s, gsl_sf_choose_e, (500,300, &r), 5.054949849935532221e+144 , TEST_TOL5, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_lnpoch_e, (5, 0.0, &r), 0.0, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_lnpoch_e, (5, 1.0/65536.0, &r), 0.000022981557571259389129, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_lnpoch_e, (5, 1.0/256.0, &r), 0.005884960217985189004, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_lnpoch_e, (7,3, &r), 6.222576268071368616, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_lnpoch_e, (5,2, &r), 3.401197381662155375, TEST_TOL0, GSL_SUCCESS); + + TEST_SF_SGN(s, gsl_sf_lnpoch_sgn_e, (5.0, 0.0, &r, &sgn), 0.0, TEST_TOL1, 1.0, GSL_SUCCESS); + TEST_SF_SGN(s, gsl_sf_lnpoch_sgn_e, (-4.5, 0.25, &r, &sgn), 0.7430116475119920117, TEST_TOL1, 1.0, GSL_SUCCESS); + TEST_SF_SGN(s, gsl_sf_lnpoch_sgn_e, (-4.5, 1.25, &r, &sgn), 2.1899306304483174731, TEST_TOL1, -1.0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_poch_e, (5, 0.0, &r), 1.0, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_poch_e, (7,3, &r), 504.0 , TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_poch_e, (5,2, &r), 30.0 , TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_poch_e, (5,1.0/256.0, &r), 1.0059023106151364982 , TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_pochrel_e, (5,0, &r), 1.506117668431800472, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_pochrel_e, (7,3, &r), 503.0/3.0, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_pochrel_e, (5,2, &r), 29.0/2.0, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_pochrel_e, (5,0.01, &r), 1.5186393661368275330, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_pochrel_e, (-5.5,0.01, &r), 1.8584945633829063516, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_pochrel_e, (-5.5,-1.0/8.0, &r), 1.0883319303552135488, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_pochrel_e, (-5.5,-1.0/256.0, &r), 1.7678268037726177453, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_pochrel_e, (-5.5,-11.0, &r), 0.09090909090939652475, TEST_TOL0, GSL_SUCCESS); + + /* Add tests for special cases with negative arguments */ + TEST_SF(s, gsl_sf_poch_e, (-9.0, -4.0, &r), 1.0/17160.0, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_poch_e, (-9.0, -3.0, &r), -1.0/1320.0, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_poch_e, (-9.0, -3.5, &r), 0, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_poch_e, (-9.0, 4.0, &r), 3024.0, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_poch_e, (-9.0, 3.0, &r), -504.0, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_poch_e, (-9.0, 3.5, &r), 0.0, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_poch_e, (-9.0, 0.0, &r), 1.0, TEST_TOL0, GSL_SUCCESS); + + + TEST_SF(s, gsl_sf_poch_e, (-8.0, -4.0, &r), 1.0/11880.0, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_poch_e, (-8.0, -3.0, &r), -1.0/990.0, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_poch_e, (-8.0, +4.0, &r), 1680.0, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_poch_e, (-8.0, +3.0, &r), -336.0, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_poch_e, (-3.0, +4.0, &r), 0.0, TEST_TOL0, GSL_SUCCESS); + + /* FIXME: we should be able to get an exact answer for poch(-a,a) if + gsl_sf_lngamma functions were fixed to handle integer arguments + exactly as a special case */ + TEST_SF(s, gsl_sf_poch_e, (-3.0, +3.0, &r), -6.0, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_poch_e, (-4.0, +4.0, &r), 24.0, TEST_TOL2, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_poch_e, (-3.0, +100.0, &r), 0.0, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_gamma_inc_P_e, (1e-100, 0.001, &r), 1.0, TEST_TOL0, GSL_SUCCESS) ; + TEST_SF(s, gsl_sf_gamma_inc_P_e, (0.001, 0.001, &r), 0.9936876467088602902, TEST_TOL0, GSL_SUCCESS) ; + TEST_SF(s, gsl_sf_gamma_inc_P_e, (0.001, 1.0, &r), 0.9997803916424144436, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gamma_inc_P_e, (0.001, 10.0, &r), 0.9999999958306921828, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gamma_inc_P_e, (1.0, 0.001, &r), 0.0009995001666250083319, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gamma_inc_P_e, (1.0, 1.01, &r), 0.6357810204284766802, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gamma_inc_P_e, (1.0, 10.0, &r), 0.9999546000702375151, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gamma_inc_P_e, (10.0, 10.01, &r), 0.5433207586693410570, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gamma_inc_P_e, (10.0, 20.0, &r), 0.9950045876916924128, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gamma_inc_P_e, (1000.0, 1000.1, &r), 0.5054666401440661753, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gamma_inc_P_e, (1000.0, 2000.0, &r), 1.0, TEST_TOL0, GSL_SUCCESS); + /* Test for failure of the Gautschi recurrence (now fixed) for x = a - 2 */ + TEST_SF(s, gsl_sf_gamma_inc_P_e, (34.0, 32.0, &r), 0.3849626436463866776322932129, TEST_TOL2, GSL_SUCCESS); + /* and the next test is gamma_inc_P(37,35-20*eps) */ + TEST_SF(s, gsl_sf_gamma_inc_P_e, (37.0, 3.499999999999999289e+01, &r), 0.3898035054195570860969333039, TEST_TOL2, GSL_SUCCESS); + + /* Regression test Martin Jansche BUG#12 */ + TEST_SF(s, gsl_sf_gamma_inc_P_e, (10, 1e-16, &r), 2.755731922398588814734648067e-167, TEST_TOL2, GSL_SUCCESS); + + /* Regression test for gsl_cdf_chisq_Pinv, (0.05, 1263131.0) */ + TEST_SF(s, gsl_sf_gamma_inc_P_e, (1263131.0, 1261282.3637, &r), 0.04994777516935182963821362168, TEST_TOL4, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gamma_inc_P_e, (1263131.0, 1263131.0, &r), 0.500118321758657770672882362502514254, TEST_TOL4, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_gamma_inc_Q_e, (0.0, 0.001, &r), 0.0, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gamma_inc_Q_e, (0.001, 0.001, &r), 0.006312353291139709793, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gamma_inc_Q_e, (0.001, 1.0, &r), 0.00021960835758555639171, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gamma_inc_Q_e, (0.001, 2.0, &r), 0.00004897691783098147880, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gamma_inc_Q_e, (0.001, 5.0, &r), 1.1509813397308608541e-06, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gamma_inc_Q_e, (1.0, 0.001, &r), 0.9990004998333749917, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gamma_inc_Q_e, (1.0, 1.01, &r), 0.3642189795715233198, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gamma_inc_Q_e, (1.0, 10.0, &r), 0.00004539992976248485154, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gamma_inc_Q_e, (10.0, 10.01, &r), 0.4566792413306589430, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gamma_inc_Q_e, (10.0, 100.0, &r), 1.1253473960842733885e-31, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gamma_inc_Q_e, (1000.0, 1000.1, &r), 0.4945333598559338247, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gamma_inc_Q_e, (1000.0, 2000.0, &r), 6.847349459614753180e-136, TEST_TOL2, GSL_SUCCESS); + + + /* designed to trap the a-x=1 problem */ + TEST_SF(s, gsl_sf_gamma_inc_Q_e, (100, 99.0, &r), 0.5266956696005394, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gamma_inc_Q_e, (200, 199.0, &r), 0.5188414119121281, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gamma_inc_P_e, (100, 99.0, &r), 0.4733043303994607, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gamma_inc_P_e, (200, 199.0, &r), 0.4811585880878718, TEST_TOL2, GSL_SUCCESS); + + /* Test for x86 cancellation problems */ + TEST_SF(s, gsl_sf_gamma_inc_P_e, (5670, 4574, &r), 3.063972328743934e-55, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gamma_inc_Q_e, (5670, 4574, &r), 1.0000000000000000, TEST_TOL2, GSL_SUCCESS); + + + /* test suggested by Michel Lespinasse [gsl-discuss Sat, 13 Nov 2004] */ + TEST_SF(s, gsl_sf_gamma_inc_Q_e, (1.0e+06-1.0, 1.0e+06-2.0, &r), 0.50026596175224547004, TEST_TOL3, GSL_SUCCESS); + + /* tests in asymptotic regime related to Lespinasse test */ + TEST_SF(s, gsl_sf_gamma_inc_Q_e, (1.0e+06+2.0, 1.0e+06+1.0, &r), 0.50026596135330304336, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gamma_inc_Q_e, (1.0e+06, 1.0e+06-2.0, &r), 0.50066490399940144811, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gamma_inc_Q_e, (1.0e+07, 1.0e+07-2.0, &r), 0.50021026104978614908, TEST_TOL2, GSL_SUCCESS); + + /* non-normalized "Q" function */ + TEST_SF(s, gsl_sf_gamma_inc_e, (-1.0/1048576.0, 1.0/1048576.0, &r), 13.285819596290624271, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gamma_inc_e, (-0.001, 1.0/1048576.0, &r), 13.381275128625328858, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gamma_inc_e, (-1.0, 1.0/1048576.0, &r), 1.0485617142715768655e+06, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gamma_inc_e, (-0.00001,0.001, &r), 6.3317681434563592142, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gamma_inc_e, (-0.0001,0.001, &r), 6.3338276439767189385, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gamma_inc_e, (-0.001, 0.001, &r), 6.3544709102510843793, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gamma_inc_e, (-0.5, 0.001, &r), 59.763880515942196981, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gamma_inc_e, (-1.0, 0.001, &r), 992.66896046923884234, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gamma_inc_e, (-3.5, 0.001, &r), 9.0224404490639003706e+09, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gamma_inc_e, (-10.5, 0.001, &r), 3.0083661558184815656e+30, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gamma_inc_e, (-0.001, 0.1, &r), 1.8249109609418620068, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gamma_inc_e, (-0.5, 0.1, &r), 3.4017693366916154163, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gamma_inc_e, (-10.0, 0.1, &r), 8.9490757483586989181e+08, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gamma_inc_e, (-10.5, 0.1, &r), 2.6967403834226421766e+09, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gamma_inc_e, (-0.001, 1.0, &r), 0.21928612679072766340, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gamma_inc_e, (-0.5, 1.0, &r), 0.17814771178156069019, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gamma_inc_e, (-1.0, 1.0, &r), 0.14849550677592204792, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gamma_inc_e, (-2.5, 1.0, &r), 0.096556648631275160264, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gamma_inc_e, (-1.0, 10.0, &r), 3.8302404656316087616e-07, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gamma_inc_e, (-0.001, 10.0, &r), 4.1470562324807320961e-06, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gamma_inc_e, (-0.5, 10.0, &r), 1.2609042613241570681e-06, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gamma_inc_e, (-1.0, 10.0, &r), 3.8302404656316087616e-07, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gamma_inc_e, (-10.5, 10.0, &r), 6.8404927328441566785e-17, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gamma_inc_e, (-100.0, 10.0, &r), 4.1238327669858313997e-107, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gamma_inc_e, (-200.0, 10.0, &r), 2.1614091830529343423e-207, TEST_TOL2, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_gamma_inc_e, ( 0.0, 0.001, &r), 6.3315393641361493320, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gamma_inc_e, ( 0.001, 0.001, &r), 6.3087159394864007261, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gamma_inc_e, ( 1.0, 0.001, &r), 0.99900049983337499167, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gamma_inc_e, ( 10.0, 0.001, &r), 362880.0, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gamma_inc_e, ( 0.0, 1.0, &r), 0.21938393439552027368, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gamma_inc_e, ( 0.001, 1.0, &r), 0.21948181320730279613, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gamma_inc_e, ( 1.0, 1.0, &r), 0.36787944117144232160, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gamma_inc_e, ( 10.0, 1.0, &r), 362879.95956592242045, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gamma_inc_e, (100.0, 1.0, &r), 9.3326215443944152682e+155, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gamma_inc_e, ( 0.0, 100.0, &r), 3.6835977616820321802e-46, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gamma_inc_e, ( 0.001, 100.0, &r), 3.7006367674063550631e-46, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gamma_inc_e, ( 1.0, 100.0, &r), 3.7200759760208359630e-44, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gamma_inc_e, ( 10.0, 100.0, &r), 4.0836606309106112723e-26, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gamma_inc_e, (100.0, 100.0, &r), 4.5421981208626694294e+155, TEST_TOL1, GSL_SUCCESS); + + + TEST_SF(s, gsl_sf_lnbeta_e, (1.0e-8, 1.0e-8, &r), 19.113827924512310617 , TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_lnbeta_e, (1.0e-8, 0.01, &r), 18.420681743788563403 , TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_lnbeta_e, (1.0e-8, 1.0, &r), 18.420680743952365472 , TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_lnbeta_e, (1.0e-8, 10.0, &r), 18.420680715662683009 , TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_lnbeta_e, (1.0e-8, 1000.0, &r), 18.420680669107656949 , TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_lnbeta_e, (0.1, 0.1, &r), 2.9813614810376273949 , TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_lnbeta_e, (0.1, 1.0, &r), 2.3025850929940456840 , TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_lnbeta_e, (0.1, 100.0, &r), 1.7926462324527931217 , TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_lnbeta_e, (0.1, 1000, &r), 1.5619821298353164928 , TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_lnbeta_e, (1.0, 1.00025, &r), -0.0002499687552073570, TEST_TOL4, GSL_SUCCESS); + TEST_SF(s, gsl_sf_lnbeta_e, (1.0, 1.01, &r), -0.009950330853168082848 , TEST_TOL3, GSL_SUCCESS); + TEST_SF(s, gsl_sf_lnbeta_e, (1.0, 1000.0, &r), -6.907755278982137052 , TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_lnbeta_e, (100.0, 100.0, &r), -139.66525908670663927 , TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_lnbeta_e, (100.0, 1000.0, &r), -336.4348576477366051 , TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_lnbeta_e, (100.0, 1.0e+8, &r), -1482.9339185256447309 , TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_beta_e, (1.0, 1.0, &r), 1.0 , TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_beta_e, (1.0, 1.001, &r), 0.9990009990009990010 , TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_beta_e, (1.0, 5.0, &r), 0.2 , TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_beta_e, (1.0, 100.0, &r), 0.01 , TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_beta_e, (10.0, 100.0, &r), 2.3455339739604649879e-15 , TEST_TOL2, GSL_SUCCESS); + + /* Test negative arguments */ + TEST_SF(s, gsl_sf_beta_e, (2.5, -0.1, &r), -11.43621278354402041480, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_beta_e, (2.5, -1.1, &r), 14.555179906328753255202, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_beta_e, (-0.25, -0.1, &r), -13.238937960945229110, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_beta_e, (-1.25, -0.1, &r), -14.298052997820847439, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_beta_e, (-100.1, -99.1, &r), -1.005181917797644630375787297e60, TEST_TOL3, GSL_SUCCESS); + TEST_SF(s, gsl_sf_beta_e, (-100.1, 99.3, &r), 0.0004474258199579694011200969001, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_beta_e, (100.1, -99.3, &r), 1.328660939628876472028853747, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_beta_e, (-100.1, 1.2, &r), 0.00365530364287960795444856281, TEST_TOL3, GSL_SUCCESS); + TEST_SF(s, gsl_sf_beta_e, (100.1, -1.2, &r), 1203.895236907821059270698160, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_beta_e, (-100.1, -1.2, &r), -3236.073671884748847700283841, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_beta_e, (-100.001, 0.0099, &r), -853.946649365611147996495177, TEST_TOL4, GSL_SUCCESS); + + + /* Other test cases */ + TEST_SF(s, gsl_sf_beta_e, (1e-32, 1.5, &r), 1e32, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_beta_e, (1e-6, 0.5, &r), 1000001.386293677092419390336, TEST_TOL2, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_beta_e, (-1.5, 0.5, &r), 0.0, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_beta_inc_e, (1.0, 1.0, 0.0, &r), 0.0, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_beta_inc_e, (1.0, 1.0, 1.0, &r), 1.0, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_beta_inc_e, (0.1, 0.1, 1.0, &r), 1.0, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_beta_inc_e, ( 1.0, 1.0, 0.5, &r), 0.5, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_beta_inc_e, ( 0.1, 1.0, 0.5, &r), 0.9330329915368074160, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_beta_inc_e, (10.0, 1.0, 0.5, &r), 0.0009765625000000000000, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_beta_inc_e, (50.0, 1.0, 0.5, &r), 8.881784197001252323e-16, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_beta_inc_e, ( 1.0, 0.1, 0.5, &r), 0.06696700846319258402, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_beta_inc_e, ( 1.0, 10.0, 0.5, &r), 0.99902343750000000000, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_beta_inc_e, ( 1.0, 50.0, 0.5, &r), 0.99999999999999911180, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_beta_inc_e, ( 1.0, 1.0, 0.1, &r), 0.10, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_beta_inc_e, ( 1.0, 2.0, 0.1, &r), 0.19, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_beta_inc_e, ( 1.0, 2.0, 0.9, &r), 0.99, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_beta_inc_e, (50.0, 60.0, 0.5, &r), 0.8309072939016694143, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_beta_inc_e, (90.0, 90.0, 0.5, &r), 0.5, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_beta_inc_e, ( 500.0, 500.0, 0.6, &r), 0.9999999999157549630, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_beta_inc_e, (5000.0, 5000.0, 0.4, &r), 4.518543727260666383e-91, TEST_TOL5, GSL_SUCCESS); + TEST_SF(s, gsl_sf_beta_inc_e, (5000.0, 5000.0, 0.6, &r), 1.0, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_beta_inc_e, (5000.0, 2000.0, 0.6, &r), 8.445388773903332659e-89, TEST_TOL5, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_beta_inc_e, (-0.1, -0.1, 1.0, &r), 1.0, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_beta_inc_e, (-0.1, -0.2, 1.0, &r), 1.0, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_beta_inc_e, (-0.2, -0.1, 1.0, &r), 1.0, TEST_TOL2, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_beta_inc_e, (-0.1, -0.2, 0.5, &r), 0.675252001958389971991335, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_beta_inc_e, (-0.2, -0.1, 0.5, &r), 0.324747998041610028008665, TEST_TOL2, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_beta_inc_e, (-0.1, -0.1, 0.0, &r), 0.0, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_beta_inc_e, (-0.1, -0.2, 0.0, &r), 0.0, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_beta_inc_e, (-0.2, -0.1, 0.0, &r), 0.0, TEST_TOL2, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_beta_inc_e, (-0.1, -0.2, 0.3, &r), 0.7469186777964287252, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_beta_inc_e, (-0.2, -0.1, 0.3, &r), 0.3995299653262016818, TEST_TOL2, GSL_SUCCESS); + + /* Bug report from Thomas Tanner */ + + TEST_SF(s, gsl_sf_beta_inc_e, (0.5, 101.5, 0.999457, &r), 1.0, TEST_TOL2, GSL_SUCCESS); + + + return s; +} diff --git a/gsl-2.5/specfunc/test_hermite.c b/gsl-2.5/specfunc/test_hermite.c new file mode 100644 index 00000000..fc35a42d --- /dev/null +++ b/gsl-2.5/specfunc/test_hermite.c @@ -0,0 +1,495 @@ +/* specfunc/test_hermite.c + * + * Copyright (C) 2011, 2012, 2013, 2014 Konrad Griessinger + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include + +#include "test_sf.h" + +#define WKB_TOL (1.0e+04 * TEST_SQRT_TOL0) + +/* + * Test the identities: + * + * Sum_{k=0}^n (n choose k) (2 y)^{n - k} H_k(x) = H_n(x + y) + * + * and + * + * Sum_{k=0}^n (n choose k) y^{n-k} He_k(x) = He_n(x + y) + * + * see: http://mathworld.wolfram.com/HermitePolynomial.html (Eq. 55) + */ +void +test_hermite_id1(const int n, const double x, const double y) +{ + double *a = malloc((n + 1) * sizeof(double)); + double *b = malloc((n + 1) * sizeof(double)); + double lhs, rhs; + int k; + + a[0] = gsl_pow_int(2.0 * y, n); + b[0] = gsl_pow_int(y, n); + for (k = 1; k <= n; ++k) + { + double fac = (n - k + 1.0) / (k * y); + a[k] = 0.5 * fac * a[k - 1]; + b[k] = fac * b[k - 1]; + } + + lhs = gsl_sf_hermite_phys_series(n, x, a); + rhs = gsl_sf_hermite_phys(n, x + y); + gsl_test_rel(lhs, rhs, TEST_TOL4, "identity1 phys n=%d x=%g y=%g", n, x, y); + + lhs = gsl_sf_hermite_prob_series(n, x, b); + rhs = gsl_sf_hermite_prob(n, x + y); + gsl_test_rel(lhs, rhs, TEST_TOL3, "identity1 prob n=%d x=%g y=%g", n, x, y); + + free(a); + free(b); +} + +int +test_hermite(void) +{ + gsl_sf_result r; + + int s = 0; + int m, n, sa; + double res[256]; + double x; + const double aizero1 = -2.3381074104597670384891972524467; /* first zero of the Airy function Ai */ + + /* test some known identities */ + test_hermite_id1(10, 0.75, 0.33); + test_hermite_id1(8, -0.75, 1.20); + test_hermite_id1(7, 2.88, -3.2); + + x = 0.75; + + TEST_SF(s, gsl_sf_hermite_prob_e, (0, 0.75, &r), 1., TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_hermite_prob_e, (1, 0.75, &r), x, TEST_TOL0, GSL_SUCCESS); + + n = 25; + TEST_SF(s, gsl_sf_hermite_prob_e, (n, 0., &r), 0., TEST_TOL0, GSL_SUCCESS); + n = 28; + TEST_SF(s, gsl_sf_hermite_prob_e, (n, 0., &r), 213458046676875, TEST_TOL0, GSL_SUCCESS); + n = 25; + TEST_SF(s, gsl_sf_hermite_prob_e, (n, 0.75, &r), -1.08128685847680748265939328423e12, TEST_TOL0, GSL_SUCCESS); + n = 28; + TEST_SF(s, gsl_sf_hermite_prob_e, (n, 0.75, &r), -1.60620252094658918105511125135e14, TEST_TOL0, GSL_SUCCESS); + +#if 0 + n = 10025; + x = ((sqrt(2*n+1.)+aizero1/pow(8.*n,1/6.))/2)*M_SQRT2; + TEST_SF(s, gsl_sf_hermite_prob_e, (n, x, &r), -3.3090527852387782540121569578e18961, TEST_TOL0, GSL_SUCCESS); + + n = 10028; + x = ((sqrt(2*n+1.)+aizero1/pow(8.*n,1/6.))/2)*M_SQRT2; + TEST_SF(s, gsl_sf_hermite_prob_e, (n, x, &r), -7.515478445930242044360704363e18967, TEST_TOL0, GSL_SUCCESS); + + n = 10025; + x = (sqrt(2*n+1.)-(aizero1/pow(8.*n,1/6.))/2)*M_SQRT2; + TEST_SF(s, gsl_sf_hermite_prob_e, (n, x, &r), 4.1369269649092456235914193753e22243, TEST_TOL0, GSL_SUCCESS); + + n = 10028; + x = (sqrt(2*n+1.)-(aizero1/pow(8.*n,1/6.))/2)*M_SQRT2; + TEST_SF(s, gsl_sf_hermite_prob_e, (n, x, &r), 8.363694992558646923734666303e22250, TEST_TOL0, GSL_SUCCESS); + + n = 10025; + x = (sqrt(2*n+1.)-2*(aizero1/pow(8.*n,1/6.)))*M_SQRT2; + TEST_SF(s, gsl_sf_hermite_prob_e, (n, x, &r), 7.398863979737363164340057757e22273, TEST_TOL0, GSL_SUCCESS); + + n = 10028; + x = (sqrt(2*n+1.)-2*(aizero1/pow(8.*n,1/6.)))*M_SQRT2; + TEST_SF(s, gsl_sf_hermite_prob_e, (n, x, &r), 1.507131397474022356488976968e22281, TEST_TOL0, GSL_SUCCESS); +#endif + + x = 0.75; + + n = 128; + m = 225; + TEST_SF(s, gsl_sf_hermite_prob_der_e, (m, n, x, &r), 0., TEST_TOL0, GSL_SUCCESS); + + n = 128; + m = 5; + TEST_SF(s, gsl_sf_hermite_prob_der_e, (m, n, x, &r), -3.0288278964712702882066404e112, TEST_TOL1, GSL_SUCCESS); + + sa = 0; + gsl_sf_hermite_prob_array(0, x, res); + TEST_SF_VAL(sa, res[0], +0.0, 1.0, TEST_TOL0); + gsl_test(sa, "gsl_sf_hermite_prob_array(0, 0.75)"); + s += sa; + + sa = 0; + gsl_sf_hermite_prob_array(1, x, res); + TEST_SF_VAL(sa, res[0], +0.0, 1.0, TEST_TOL0); + TEST_SF_VAL(sa, res[1], +0.0, x, TEST_TOL0); + gsl_test(sa, "gsl_sf_hermite_prob_array(1, 0.75)"); + s += sa; + + sa = 0; + gsl_sf_hermite_prob_array(100, x, res); + TEST_SF_VAL(sa, res[0], +0.0, 1.0, TEST_TOL0); + TEST_SF_VAL(sa, res[10], +0.0, 823.810509681701660156250, TEST_TOL0); + TEST_SF_VAL(sa, res[100], +0.0, 1.03749254986255755872498e78, TEST_TOL1); + gsl_test(sa, "gsl_sf_hermite_prob_array(100, 0.75)"); + s += sa; + + sa = 0; + gsl_sf_hermite_prob_array_der(0, 100, x, res); + TEST_SF_VAL(sa, res[0], +0.0, 1.0, TEST_TOL0); + TEST_SF_VAL(sa, res[10], +0.0, 823.810509681701660156250, TEST_TOL0); + TEST_SF_VAL(sa, res[100], +0.0, 1.03749254986255755872498e78, TEST_TOL1); + gsl_test(sa, "gsl_sf_hermite_prob_array_der(0, 100, 0.75)"); + s += sa; + + sa = 0; + gsl_sf_hermite_prob_array_der(1000, 100, x, res); + TEST_SF_VAL(sa, res[0], +0.0, 0.0, TEST_TOL0); + TEST_SF_VAL(sa, res[10], +0.0, 0.0, TEST_TOL0); + TEST_SF_VAL(sa, res[100], +0.0, 0.0, TEST_TOL0); + gsl_test(sa, "gsl_sf_hermite_prob_array_der(1000, 100, 0.75)"); + s += sa; + + sa = 0; + gsl_sf_hermite_prob_array_der(23, 100, x, res); + TEST_SF_VAL(sa, res[10], +0.0, 0.0, TEST_TOL0); + TEST_SF_VAL(sa, res[37], +0.0, 2.3592417210568968566591219172e37, TEST_TOL0); + TEST_SF_VAL(sa, res[100], +0.0, 2.6503570965896336273549197e100, TEST_TOL0); + gsl_test(sa, "gsl_sf_hermite_prob_array(23, 37, 0.75)"); + s += sa; + + sa = 0; + gsl_sf_hermite_prob_der_array(100, 50, x, res); + TEST_SF_VAL(sa, res[0], +0.0, -3.88338863813139372375411561e31, TEST_TOL0); + TEST_SF_VAL(sa, res[10], +0.0, 7.9614368698398116765703194e38, TEST_TOL0); + TEST_SF_VAL(sa, res[100], +0.0, 0.0, TEST_TOL0); + gsl_test(sa, "gsl_sf_hermite_prob_der_array(100, 50, 0.75)"); + s += sa; + + n = 128; + res[0] = 1.; + for(m=1; m<=n; m++){ + res[m] = res[m-1]/2.; + } + TEST_SF(s, gsl_sf_hermite_prob_series_e, (n, x, res, &r), -4.0451066556993485405907339548e68, TEST_TOL0, GSL_SUCCESS); + + /* phys */ + + x = 0.75; + + TEST_SF(s, gsl_sf_hermite_phys_e, (0, 0.75, &r), 1., TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_hermite_phys_e, (1, 0.75, &r), 2.*x, TEST_TOL0, GSL_SUCCESS); + + n = 25; + TEST_SF(s, gsl_sf_hermite_phys_e, (n, 0., &r), 0., TEST_TOL0, GSL_SUCCESS); + n = 28; + TEST_SF(s, gsl_sf_hermite_phys_e, (n, 0., &r), 3497296636753920000, TEST_TOL0, GSL_SUCCESS); + n = 25; + TEST_SF(s, gsl_sf_hermite_phys_e, (n, 0.75, &r), -9.7029819451106077507781088352e15, TEST_TOL0, GSL_SUCCESS); + n = 28; + TEST_SF(s, gsl_sf_hermite_phys_e, (n, 0.75, &r), 3.7538457078067672096408339776e18, TEST_TOL0, GSL_SUCCESS); + +#if 0 + n = 10025; + x = ((sqrt(2*n+1.)+aizero1/pow(8.*n,1/6.))/2); + TEST_SF(s, gsl_sf_hermite_phys_e, (n, x, &r), -2.7074282783315424535693575770e20470, TEST_TOL0, GSL_SUCCESS); + + n = 10028; + x = ((sqrt(2*n+1.)+aizero1/pow(8.*n,1/6.))/2); + TEST_SF(s, gsl_sf_hermite_phys_e, (n, x, &r), -1.7392214893577690864150561850e20477, TEST_TOL0, GSL_SUCCESS); + + n = 10025; + x = (sqrt(2*n+1.)-(aizero1/pow(8.*n,1/6.))/2); + TEST_SF(s, gsl_sf_hermite_phys_e, (n, x, &r), 3.3847852473526979744366379542e23752, TEST_TOL0, GSL_SUCCESS); + + n = 10028; + x = (sqrt(2*n+1.)-(aizero1/pow(8.*n,1/6.))/2); + TEST_SF(s, gsl_sf_hermite_phys_e, (n, x, &r), 1.9355145738418079256435712027e23760, TEST_TOL0, GSL_SUCCESS); + + n = 10025; + x = (sqrt(2*n+1.)-2*(aizero1/pow(8.*n,1/6.))); + TEST_SF(s, gsl_sf_hermite_phys_e, (n, x, &r), 6.053663953512337293393128307e23782, TEST_TOL0, GSL_SUCCESS); + + n = 10028; + x = (sqrt(2*n+1.)-2*(aizero1/pow(8.*n,1/6.))); + TEST_SF(s, gsl_sf_hermite_phys_e, (n, x, &r), 3.487782358276961096026268141e23790, TEST_TOL0, GSL_SUCCESS); +#endif + + x = 0.75; + + n = 128; + m = 225; + TEST_SF(s, gsl_sf_hermite_phys_der_e, (m, n, x, &r), 0., TEST_TOL0, GSL_SUCCESS); + + n = 128; + m = 5; + TEST_SF(s, gsl_sf_hermite_phys_der_e, (m, n, x, &r), 2.89461215568095657569833e132, TEST_TOL0, GSL_SUCCESS); + + sa = 0; + gsl_sf_hermite_phys_array(0, x, res); + TEST_SF_VAL(sa, res[0], +0.0, 1.0, TEST_TOL0); + gsl_test(sa, "gsl_sf_hermite_phys_array(0, 0.75)"); + s += sa; + + sa = 0; + gsl_sf_hermite_phys_array(1, x, res); + TEST_SF_VAL(sa, res[0], +0.0, 1.0, TEST_TOL0); + TEST_SF_VAL(sa, res[1], +0.0, 2.*x, TEST_TOL0); + gsl_test(sa, "gsl_sf_hermite_phys_array(1, 0.75)"); + s += sa; + + sa = 0; + gsl_sf_hermite_phys_array(100, x, res); + TEST_SF_VAL(sa, res[0], +0.0, 1.0, TEST_TOL0); + TEST_SF_VAL(sa, res[10], +0.0, 38740.4384765625, TEST_TOL0); + TEST_SF_VAL(sa, res[100], +0.0, -1.4611185395125104593177790757e93, TEST_TOL0); + gsl_test(sa, "gsl_sf_hermite_phys_array(100, 0.75)"); + s += sa; + + sa = 0; + gsl_sf_hermite_phys_array_der(0, 100, x, res); + TEST_SF_VAL(sa, res[0], +0.0, 1.0, TEST_TOL0); + TEST_SF_VAL(sa, res[10], +0.0, 38740.4384765625, TEST_TOL0); + TEST_SF_VAL(sa, res[100], +0.0, -1.4611185395125104593177790757e93, TEST_TOL0); + gsl_test(sa, "gsl_sf_hermite_phys_array_der(0, 100, 0.75)"); + s += sa; + + sa = 0; + gsl_sf_hermite_phys_array_der(1000, 100, x, res); + TEST_SF_VAL(sa, res[0], +0.0, 0.0, TEST_TOL0); + TEST_SF_VAL(sa, res[10], +0.0, 0.0, TEST_TOL0); + TEST_SF_VAL(sa, res[100], +0.0, 0.0, TEST_TOL0); + gsl_test(sa, "gsl_sf_hermite_phys_array_der(1000, 100, 0.75)"); + s += sa; + + sa = 0; + gsl_sf_hermite_phys_array_der(23, 100, x, res); + TEST_SF_VAL(sa, res[10], +0.0, 0.0, TEST_TOL0); + TEST_SF_VAL(sa, res[37], +0.0, 1.930387357696033719818118732e46, TEST_TOL0); + TEST_SF_VAL(sa, res[100], +0.0, 2.957966000491202678467161e118, TEST_TOL0); + gsl_test(sa, "gsl_sf_hermite_phys_array(23, 37, 0.75)"); + s += sa; + + sa = 0; + gsl_sf_hermite_phys_der_array(100, 50, x, res); + TEST_SF_VAL(sa, res[0], +0.0, -8.2663221830586310072686183e38, TEST_TOL0); + TEST_SF_VAL(sa, res[10], +0.0, 1.52281030265187793605875604e49, TEST_TOL0); + TEST_SF_VAL(sa, res[100], +0.0, 0.0, TEST_TOL0); + gsl_test(sa, "gsl_sf_hermite_phys_der_array(100, 50, 0.75)"); + s += sa; + + n = 128; + /* arbitrary weights */ + res[0] = 1.; + for(m=1; m<=n; m++){ + res[m] = res[m-1]/2.; + } + TEST_SF(s, gsl_sf_hermite_phys_series_e, (n, x, res, &r), 1.07772223811696567390619566842e88, TEST_TOL0, GSL_SUCCESS); + + x = 0.75; + n = 28; + TEST_SF(s, gsl_sf_hermite_func_e, (n, 0, &r), 0.290371943657199641200016132937, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hermite_func_e, (n, x, &r), 0.23526280808621240649319140441, TEST_TOL0, GSL_SUCCESS); + n = 100028; + TEST_SF(s, gsl_sf_hermite_func_e, (n, x, &r), -0.02903467369856961147236598086, TEST_TOL4, GSL_SUCCESS); + + n = 10025; + x = ((sqrt(2*n+1.)+aizero1/pow(8.*n,1/6.))/2.5); + TEST_SF(s, gsl_sf_hermite_func_e, (n, x, &r), -0.05301278920004176459797680403, TEST_TOL4, GSL_SUCCESS); + + n = 10028; + x = ((sqrt(2*n+1.)+aizero1/pow(8.*n,1/6.))/2.5); + TEST_SF(s, gsl_sf_hermite_func_e, (n, x, &r), 0.06992968509693993526829596970, TEST_TOL3, GSL_SUCCESS); + + n = 10025; + x = (sqrt(2*n+1.)-(aizero1/pow(8.*n,1/6.))/2.5); + TEST_SF(s, gsl_sf_hermite_func_e, (n, x, &r), 0.08049000991742150521366671021, TEST_TOL4, GSL_SUCCESS); + + n = 10028; + x = (sqrt(2*n+1.)-(aizero1/pow(8.*n,1/6.))/2.5); + TEST_SF(s, gsl_sf_hermite_func_e, (n, x, &r), 0.08048800667512084252723933250, TEST_TOL4, GSL_SUCCESS); + + n = 10025; + x = (sqrt(2*n+1.)-2.5*(aizero1/pow(8.*n,1/6.))); + TEST_SF(s, gsl_sf_hermite_func_e, (n, x, &r), 7.97206830806663013555068100e-6, TEST_TOL4, GSL_SUCCESS); + + n = 10028; + x = (sqrt(2*n+1.)-2.5*(aizero1/pow(8.*n,1/6.))); + TEST_SF(s, gsl_sf_hermite_func_e, (n, x, &r), 7.97188517397786729928465829e-6, TEST_TOL4, GSL_SUCCESS); + + x = 0.75; + + sa = 0; + gsl_sf_hermite_func_array(100, x, res); + TEST_SF_VAL(sa, res[0], +0.0, 0.566979307027693616978839335983, TEST_TOL0); + TEST_SF_VAL(sa, res[10], +0.0, 0.360329854170806945032958735574, TEST_TOL0); + TEST_SF_VAL(sa, res[100], +0.0, -0.07616422890563462489003733382, TEST_TOL1); + gsl_test(sa, "gsl_sf_hermite_func_array(100, 0.75)"); + s += sa; + + n = 128; + /* arbitrary weights */ + res[0] = 1.; + for(m=1; m<=n; m++){ + res[m] = res[m-1]/2.; + } + TEST_SF(s, gsl_sf_hermite_func_series_e, (n, x, res, &r), 0.81717103529960997134154552556, TEST_TOL0, GSL_SUCCESS); + + m = 5; + n = 28; + TEST_SF(s, gsl_sf_hermite_func_der_e, (0, n, x, &r), 0.235262808086212406493191404, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hermite_func_der_e, (m, n, x, &r), 4035.32788513029308540826835, TEST_TOL1, GSL_SUCCESS); + + { + /* positive zeros of the probabilists' Hermite polynomial of order 17 */ + double He17z[8] = { 0.751842600703896170737870774614, 1.50988330779674075905491513417, 2.28101944025298889535537879396, + 3.07379717532819355851658337833, 3.90006571719800990903311840097, 4.77853158962998382710540812497, + 5.74446007865940618125547815768,6.88912243989533223256205432938 }; + + n = 17; + for (m=1; m<=n/2; m++) { + TEST_SF(s, gsl_sf_hermite_prob_zero_e, (n, m, &r), He17z[m-1], TEST_TOL0, GSL_SUCCESS); + } + } + + { + /* positive zeros of the probabilists' Hermite polynomial of order 18 */ + double He18z[9] = { 0.365245755507697595916901619097, 1.09839551809150122773848360538, 1.83977992150864548966395498992, + 2.59583368891124032910545091458, 3.37473653577809099529779309480, 4.18802023162940370448450911428, + 5.05407268544273984538327527397, 6.00774591135959752029303858752, 7.13946484914647887560975631213 }; + + n = 18; + for (m=1; m<=n/2; m++) { + TEST_SF(s, gsl_sf_hermite_prob_zero_e, (n, m, &r), He18z[m-1], TEST_TOL0, GSL_SUCCESS); + } + } + + { + /* positive zeros of the probabilists' Hermite polynomial of order 23 */ + double He23z[11] = { 0.648471153534495816722576841197, 1.29987646830397886997876116860, 1.95732755293342410739100839243, + 2.62432363405918177067330340783, 3.30504002175296456723204112903, 4.00477532173330406712238633738, + 4.73072419745147329426707133987, 5.49347398647179412855289367747, 6.31034985444839982842886078177, + 7.21465943505186138595859194492, 8.29338602741735258945596770157 }; + + n = 23; + for (m=1; m<=n/2; m++) { + TEST_SF(s, gsl_sf_hermite_prob_zero_e, (n, m, &r), He23z[m-1], TEST_TOL0, GSL_SUCCESS); + } + } + + { + /* positive zeros of the probabilists' Hermite polynomial of order 24 */ + double He24z[12] = { 0.317370096629452319318170455994, 0.953421922932109084904629632351, 1.59348042981642010695074168129, + 2.24046785169175236246653790858, 2.89772864322331368932008199475, 3.56930676407356024709649151613, + 4.26038360501990548884317727406, 4.97804137463912033462166468006, 5.73274717525120114834341822330, + 6.54167500509863444148277523364, 7.43789066602166310850331715501, 8.50780351919525720508386233432 }; + + n = 24; + for (m=1; m<=n/2; m++) { + TEST_SF(s, gsl_sf_hermite_prob_zero_e, (n, m, &r), He24z[m-1], TEST_TOL0, GSL_SUCCESS); + } + } + + { + /* positive zeros of the physicists' Hermite polynomial of order 17 */ + double H17z[8] = { 0.531633001342654731349086553718, 1.06764872574345055363045773799, 1.61292431422123133311288254454, + 2.17350282666662081927537907149, 2.75776291570388873092640349574, 3.37893209114149408338327069289, + 4.06194667587547430689245559698, 4.87134519367440308834927655662 }; + + n = 17; + for (m=1; m<=n/2; m++) { + TEST_SF(s, gsl_sf_hermite_phys_zero_e, (n, m, &r), H17z[m-1], TEST_TOL0, GSL_SUCCESS); + } + } + + { + /* positive zeros of the physicists' Hermite polynomial of order 18 */ + double H18z[9] = { 0.258267750519096759258116098711, 0.776682919267411661316659462284, 1.30092085838961736566626555439, + 1.83553160426162889225383944409, 2.38629908916668600026459301424, 2.96137750553160684477863254906, + 3.57376906848626607950067599377, 4.24811787356812646302342016090, 5.04836400887446676837203757885 }; + + n = 18; + for (m=1; m<=n/2; m++) { + TEST_SF(s, gsl_sf_hermite_phys_zero_e, (n, m, &r), H18z[m-1], TEST_TOL0, GSL_SUCCESS); + } + } + + { + /* positive zeros of the physicists' Hermite polynomial of order 23 */ + double H23z[11] = { 0.458538350068104797757887329284, 0.919151465442563765431719239593, 1.38403958568249523732634717118, + 1.85567703767137106251504753718, 2.33701621147445578644623502174, 2.83180378712615690144806140734, + 3.34512715994122457247439814585, 3.88447270810610186607248760288, 4.46209117374000667673186157071, + 5.10153461047667712968749766165, 5.86430949898457256538748413474 }; + + n = 23; + for (m=1; m<=n/2; m++) { + TEST_SF(s, gsl_sf_hermite_phys_zero_e, (n, m, &r), H23z[m-1], TEST_TOL0, GSL_SUCCESS); + } + } + + { + /* positive zeros of the physicists' Hermite polynomial of order 24 */ + double H24z[12] = { 0.224414547472515585151136715527, 0.674171107037212236000245923730, 1.12676081761124507213306126773, + 1.58425001096169414850563336202, 2.04900357366169891178708399532, 2.52388101701142697419907602333, + 3.01254613756556482565453858421, 3.52000681303452471128987227609, 4.05366440244814950394766297923, + 4.62566275642378726504864923776, 5.25938292766804436743072304398, 6.01592556142573971734857350899 }; + + n = 24; + for (m=1; m<=n/2; m++) { + TEST_SF(s, gsl_sf_hermite_phys_zero_e, (n, m, &r), H24z[m-1], TEST_TOL0, GSL_SUCCESS); + } + } + + n = 2121; + x = -1.*n; + res[0] = (double) n; + sa = 0; + for (m=1; m<=n/2; m++) { + gsl_sf_hermite_prob_zero_e(n, m, &r); + if (x>=r.val) { + sa += TEST_SF_INCONS; + printf("sanity check failed! (gsl_sf_hermite_prob_zero)\n"); + } + res[0] = GSL_MIN(res[0],fabs(x-r.val)); + x = r.val; + } + gsl_test(sa, "gsl_sf_hermite_prob_zero(n, m, r)"); + + n = 2121; + x = -1.*n; + res[0] = (double) n; + sa = 0; + for (m=1; m<=n/2; m++) { + gsl_sf_hermite_phys_zero_e(n, m, &r); + if (x>=r.val) { + sa += TEST_SF_INCONS; + printf("sanity check failed! (gsl_sf_hermite_phys_zero)\n"); + } + res[0] = GSL_MIN(res[0],fabs(x-r.val)); + x = r.val; + } + gsl_test(sa, "gsl_sf_hermite_phys_zero(n, m, r)"); + + return s; +} diff --git a/gsl-2.5/specfunc/test_hyperg.c b/gsl-2.5/specfunc/test_hyperg.c new file mode 100644 index 00000000..1e7473fd --- /dev/null +++ b/gsl-2.5/specfunc/test_hyperg.c @@ -0,0 +1,696 @@ +/* specfunc/test_hyperg.c + * + * Copyright (C) 2007, 2009, 2010 Brian Gough + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2004 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ + +#include +#include +#include +#include "test_sf.h" + + +int test_hyperg(void) +{ + gsl_sf_result r; + int s = 0; + + /* 0F1 */ + + TEST_SF(s, gsl_sf_hyperg_0F1_e, (1, 0.5, &r), 1.5660829297563505373, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_0F1_e, (5, 0.5, &r), 1.1042674404828684574, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_0F1_e, (100, 30, &r), 1.3492598639485110176, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_0F1_e, (-0.5, 3, &r), -39.29137997543434276, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_0F1_e, (-100.5, 50, &r), 0.6087930289227538496, TEST_TOL3, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_0F1_e, (1, -5.0, &r), -0.3268752818235339109, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_0F1_e, (-0.5, -5.0, &r),-4.581634759005381184, TEST_TOL1, GSL_SUCCESS); + + + /* 1F1 for integer parameters */ + + TEST_SF(s, gsl_sf_hyperg_1F1_int_e, (1, 1, 0.5, &r), 1.6487212707001281468, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_int_e, (1, 2, 500.0, &r), 2.8071844357056748215e+214, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_int_e, (1, 2, -500.0, &r), 0.002, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_int_e, (8, 1, 0.5, &r), 13.108875178030540372, TEST_TOL0, GSL_SUCCESS); + + + TEST_SF(s, gsl_sf_hyperg_1F1_int_e, (10, 1, 1.0, &r), 131.63017574352619931, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_int_e, (10, 1, 10.0, &r), 8.514625476546280796e+09, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_int_e, (10, 1, 100.0, &r), 1.5671363646800353320e+56, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_int_e, (10, 20, 1.0, &r), 1.6585618002669675465, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_int_e, (10, 20, 10.0, &r), 265.26686430340188871, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_int_e, (10, 20, 100.0, &r), 3.640477355063227129e+34, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_int_e, (10, 100, 1.0, &r), 1.1056660194025527099, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_int_e, (10, 100, 10.0, &r), 2.8491063634727594206, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_int_e, (10, 100, 40.0, &r), 133.85880835831230986, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_int_e, (10, 100, 80.0, &r), 310361.16228011433406, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_int_e, (10, 100, 100.0, &r), 8.032171336754168282e+07, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_int_e, (10, 100, 500.0, &r), 7.633961202528731426e+123, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_int_e, (100, 1, 1.0, &r), 6.892842729046469965e+07, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_int_e, (100, 1, 10.0, &r), 2.4175917112200409098e+28, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_int_e, (100, 1, 100.0, &r), 1.9303216896309102993e+110, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_int_e, (100, 200, 1.0, &r), 1.6497469106162459226, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_int_e, (100, 200, 10.0, &r), 157.93286197349321981, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_int_e, (100, 200, 100.0, &r), 2.1819577501255075240e+24, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_int_e, (100, 200, 400.0, &r), 3.728975529926573300e+119, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_int_e, (100, 400, 10.0, &r), 12.473087623658878813, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_int_e, (100, 400, 100.0, &r), 9.071230376818550241e+11, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_int_e, (100, 400, 150.0, &r), 7.160949515742170775e+18, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_int_e, (100, 400, 200.0, &r), 2.7406690412731576823e+26, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_int_e, (100, 400, 300.0, &r), 6.175110613473276193e+43, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_int_e, (100, 400, 400.0, &r), 1.1807417662711371440e+64, TEST_TOL3, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_int_e, (100, 400, 600.0, &r), 2.4076076354888886030e+112, TEST_TOL3, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_int_e, (10, 1, -1.0, &r), 0.11394854824644542810, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_int_e, (10, 1, -10.0, &r), 0.0006715506365396127863, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_int_e, (10, 1, -100.0, &r), -4.208138537480269868e-32, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_int_e, (10, 50, -1.0, &r), 0.820006196079380, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_int_e, (10, 100, -10.0, &r), 0.38378859043466243, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_int_e, (10, 100, -100.0, &r), 0.0008460143401464189061, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_int_e, (10, 100, -500.0, &r), 1.1090822141973655929e-08, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_int_e, (10, 100, -10000.0, &r), 5.173783508088272292e-21, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_int_e, (50, 1, -90.0, &r), -1.6624258547648311554e-21, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_int_e, (50, 1, -100.0, &r), 4.069661775122048204e-24, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_int_e, (50, 1, -110.0, &r), 1.0072444993946236025e-25, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_int_e, (100, 10, -100.0, &r), -2.7819353611733941962e-37, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_int_e, (100, 1, -90.0, &r), 7.501705041159802854e-22, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_int_e, (100, 1, -100.0, &r), 6.305128893152291187e-25, TEST_TOL3, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_int_e, (100, 1, -110.0, &r), -7.007122115422439755e-26, TEST_TOL3, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_int_e, (100, 10, -100.0, &r), -2.7819353611733941962e-37, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_int_e, (200, 50, -1.0, &r), 0.016087060191732290813, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_int_e, (200, 50, -300.0, &r), -4.294975979706421471e-121, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_int_e, (200, 100, -1.0, &r), 0.13397521083325179687, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_int_e, (200, 100, -10.0, &r), 5.835134393749807387e-10, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_int_e, (200, 100, -100.0, &r), 4.888460453078914804e-74, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_int_e, (200, 100, -500.0, &r), -1.4478509059582015053e-195, TEST_TOL2, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_hyperg_1F1_int_e, (-1, 1, 2.0, &r), -1.0, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_int_e, (-1, -2, 2.0, &r), 2.0, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_int_e, (-2, -3, 2.0, &r), 3.0, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_int_e, (-10, 1, 1.0, &r), 0.4189459325396825397, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_int_e, (-10, 1, 10.0, &r), 27.984126984126984127, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_int_e, (-10, 1, 100.0, &r), 9.051283795429571429e+12, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_int_e, (-100, 20, 1.0, &r), 0.0020203016320697069566, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_int_e, (-10, -20, 1.0, &r), 1.6379141878548080173, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_int_e, (-10, -20, 10.0, &r), 78.65202404521289970, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_int_e, (-10, -20, 100.0, &r), 4.416169713262624315e+08, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_int_e, (-10, -100, 1.0, &r), 1.1046713999681950919, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_int_e, (-10, -100, 10.0, &r), 2.6035952191039006838, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_int_e, (-10, -100, 100.0, &r), 1151.6852040836932392, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_int_e, (-100, -200, 1.0, &r), 1.6476859702535324743, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_int_e, (-100, -200, 10.0, &r), 139.38026829540687270, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_int_e, (-100, -200, 100.0, &r), 1.1669433576237933752e+19, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_int_e, (-10, -20, -1.0, &r), 0.6025549561148035735, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_int_e, (-10, -20, -10.0, &r), 0.00357079636732993491, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_int_e, (-10, -20, -100.0, &r), 1.64284868563391159e-35, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_int_e, (-10, -100, -1.0, &r), 0.90442397250313899, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_int_e, (-10, -100, -10.0, &r), 0.35061515251367215, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_int_e, (-10, -100, -100.0, &r), 8.19512187960476424e-09, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_int_e, (-100, -200, -1.0, &r), 0.6061497939628952629, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_int_e, (-100, -200, -10.0, &r), 0.0063278543908877674, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_int_e, (-100, -200, -100.0, &r), 4.34111795007336552e-25, TEST_TOL2, GSL_SUCCESS); + + + /* 1F1 */ + + TEST_SF(s, gsl_sf_hyperg_1F1_e, (1, 1.5, 1, &r), 2.0300784692787049755, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_e, (1, 1.5, 10, &r), 6172.859561078406855, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_e, (1, 1.5, 100, &r), 2.3822817898485692114e+42, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_e, (1, 1.5, 500, &r), 5.562895351723513581e+215, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_e, (1.5, 2.5, 1, &r), 1.8834451238277954398, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_e, (1.5, 2.5, 10, &r), 3128.7352996840916381, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_e, (10, 1.1, 1, &r), 110.17623733873889579, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_e, (10, 1.1, 10, &r), 6.146657975268385438e+09, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_e, (10, 1.1, 100, &r), 9.331833897230312331e+55, TEST_TOL2, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_hyperg_1F1_e, (10, 1.1, 500, &r), 4.519403368795715843e+235, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_e, (10, 50.1, 2, &r), 1.5001295507968071788, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_e, (10, 50.1, 10, &r), 8.713385849265044908, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_e, (10, 50.1, 100, &r), 5.909423932273380330e+18, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_e, (10, 50.1, 500, &r), 9.740060618457198900e+165, TEST_TOL2, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_hyperg_1F1_e, (100, 1.1, 1, &r), 5.183531067116809033e+07, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_e, (100, 1.1, 10, &r), 1.6032649110096979462e+28, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_e, (100, 1.1, 100, &r), 1.1045151213192280064e+110, TEST_TOL2, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_hyperg_1F1_e, (100, 50.1, 1, &r), 7.222953133216603757, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_e, (100, 50.1, 10, &r), 1.0998696410887171538e+08, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_e, (100, 50.1, 100, &r), 7.235304862322283251e+63, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_e, (1, 1.5, -1, &r), 0.5380795069127684191, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_e, (1, 1.5, -10, &r), 0.05303758099290164485, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_e, (1, 1.5, -100, &r), 0.005025384718759852803, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_e, (1, 1.5, -500, &r), 0.0010010030151059555322, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_e, (1, 1.1, -500, &r), 0.00020036137599690208265, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_e, (10, 1.1, -1, &r), 0.07227645648935938168, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_e, (10, 1.1, -10, &r), 0.0003192415409695588126, TEST_TOL1, GSL_SUCCESS); + /* + sensitive to the pair_ratio hack in hyperg_1F1.c + TEST_SF_RLX(s, gsl_sf_hyperg_1F1_e, (10, 1.1, -100, &r), -8.293425316123158950e-16, 50.0*TEST_SNGL, GSL_SUCCESS); + */ + TEST_SF(s, gsl_sf_hyperg_1F1_e, (10, 1.1, -500, &r), -3.400379216707701408e-23, TEST_TOL2, GSL_SUCCESS); + + TEST_SF_RLX(s, gsl_sf_hyperg_1F1_e, (50, 1.1, -90, &r), -7.843129411802921440e-22, TEST_SQRT_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_e, (50, 1.1, -100, &r), 4.632883869540640460e-24, TEST_SQRT_TOL0, GSL_SUCCESS); + + /* FIXME: + tolerance is poor, but is consistent within reported error + */ + TEST_SF(s, gsl_sf_hyperg_1F1_e, (50, 1.1, -110.0, &r), 5.642684651305310023e-26, 0.03, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_hyperg_1F1_e, (100, 1.1, -1, &r), 0.0811637344096042096, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_e, (100, 1.1, -10, &r), 0.00025945610092231574387, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_e, (100, 1.1, -50, &r), 2.4284830988994084452e-13, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_e, (100, 1.1, -90, &r), 2.4468224638378426461e-22, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_e, (100, 1.1, -99, &r), 1.0507096272617608461e-23, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_e, (100, 1.1, -100, &r), 1.8315497474210138602e-24, TEST_TOL2, GSL_SUCCESS); + + /* FIXME: + Reported error is too small. + TEST_SF(s, gsl_sf_hyperg_1F1_e, (100, 1.1, -101, &r), -2.3916306291344452490e-24, 0.04, GSL_SUCCESS); + */ + + /* FIXME: + Reported error is too small. + TEST_SF(s, gsl_sf_hyperg_1F1_e, (100, 1.1, -110, &r), -4.517581986037732280e-26, TEST_TOL0, GSL_SUCCESS); + */ + + /* FIXME: + Result is terrible, but reported error is very large, so consistent. + TEST_SF(s, gsl_sf_hyperg_1F1_e, (100, 10.1, -220, &r), -4.296130300021696573e-64, TEST_TOL1, GSL_SUCCESS); + */ + + TEST_SF(s, gsl_sf_hyperg_1F1_e, (-10, -10.1, 10.0, &r), 10959.603204633058116, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_e, (-10, -10.1, 1000.0, &r), 2.0942691895502242831e+23, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_e, (-10, -100.1, 10.0, &r), 2.6012036337980078062, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_e, (-1000, -1000.1, 10.0, &r), 22004.341698908631636, TEST_TOL3, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_e, (-1000, -1000.1, 200.0, &r), 7.066514294896245043e+86, TEST_TOL3, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_e, (-8.1, -10.1, -10.0, &r), 0.00018469685276347199258, TEST_TOL0, GSL_SUCCESS); + /* TEST_SF(s, gsl_sf_hyperg_1F1_e, (-8.1, -1000.1, -10.0, &r), 0.9218280185080036020, TEST_TOL0, GSL_SUCCESS); */ + TEST_SF(s, gsl_sf_hyperg_1F1_e, (-10, -5.1, 1, &r), 16.936141866089601635, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_e, (-10, -5.1, 10, &r), 771534.0349543820541, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_e, (-10, -5.1, 100, &r), 2.2733956505084964469e+17, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_e, (-100, -50.1, -1, &r), 0.13854540373629275583, TEST_TOL3, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_e, (-100, -50.1, -10, &r), -9.142260314353376284e+19, TEST_TOL3, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_e, (-100, -50.1, -100, &r), -1.7437371339223929259e+87, TEST_TOL3, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_e, (-100, -50.1, 1, &r), 7.516831748170351173, TEST_TOL3, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_e, (-100, -50.1, 10, &r), 1.0551632286359671976e+11, TEST_SQRT_TOL0, GSL_SUCCESS); + /* + These come out way off. On the other hand, the error estimates + are also very large; so much so that the answers are consistent + within the reported error. Something will need to be done about + this eventually + TEST_SF(s, gsl_sf_hyperg_1F1_e, (-100, -50.1, 50, &r), -7.564755600940346649e+36, TEST_TOL3, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_e, (-100, -50.1, 100, &r), 4.218776962675977e+55, TEST_TOL3, GSL_SUCCESS); + */ + TEST_SF(s, gsl_sf_hyperg_1F1_e, (-10.5, -8.1, 0.1, &r), 1.1387201443786421724, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_e, (-10.5, -11.1, 1, &r), 2.5682766147138452362, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_e, (-100.5, -80.1, 10, &r), 355145.4517305220603, TEST_TOL3, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_e, (-100.5, -102.1, 10, &r), 18678.558725244365016, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_e, (-100.5, -500.1, 10, &r), 7.342209011101454, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_e, (-100.5, -500.1, 100, &r), 1.2077443075367177662e+8, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_e, (-500.5, -80.1, 2, &r), 774057.8541325341699, TEST_TOL4, GSL_SUCCESS); + /* + UNIMPL + TEST_SF(s, gsl_sf_hyperg_1F1_e, (100, -10.1, 1, &r), -2.1213846338338567395e+12, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_e, (100, -10.1, 10, &r), -6.624849346145112398e+39, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_e, (100, -10.1, 100, &r), -1.2413466759089171904e+129, TEST_TOL0, GSL_SUCCESS); + */ + /* + UNIMPL + TEST_SF(s, gsl_sf_hyperg_1F1_e, (100, -10.1, -1, &r), 34456.29405305551691, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_e, (100, -10.1, -10, &r), -7.809224251467710833e+07, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_e, (100, -10.1, -100, &r), -5.214065452753988395e-07, TEST_TOL0, GSL_SUCCESS); + */ + TEST_SF(s, gsl_sf_hyperg_1F1_e, (-100, 1.1, 1, &r), 0.21519810496314438414, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_e, (-100, 1.1, 10, &r), 8.196123715597869948, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_e, (-100, 1.1, 100, &r), -1.4612966715976530293e+20, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_e, (-100, 20.1, 1, &r), 0.0021267655527278456412, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_e, (-100, 20.1, 10, &r), 2.0908665169032186979e-11, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_e, (-100, 20.1, 100, &r), -0.04159447537001340412, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_e, (-100, 1.1, -1, &r), 2.1214770215694685282e+07, TEST_TOL3, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_e, (-100, 1.1, -10, &r), 1.0258848879387572642e+24, TEST_TOL3, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_e, (-100, 1.1, -100, &r), 1.1811367147091759910e+67, TEST_TOL3, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_e, (-100, 50.1, -1, &r), 6.965259317271427390, TEST_TOL3, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_e, (-100, 50.1, -10, &r), 1.0690052487716998389e+07, TEST_TOL3, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_e, (-100, 50.1, -100, &r), 6.889644435777096248e+36, TEST_TOL3, GSL_SUCCESS); + + + /* Bug report from Fernando Pilotto */ + + TEST_SF(s, gsl_sf_hyperg_1F1_e, (-2.05, 1.0, 5.05, &r), 3.79393389516785e+00, TEST_TOL3, GSL_SUCCESS); + + + /* Bug reports from Ivan Liu */ + + TEST_SF(s, gsl_sf_hyperg_1F1_e, (-26, 2.0, 100.0, &r), 1.444786781107436954e+19, TEST_TOL3, GSL_SUCCESS); + +#ifdef FIXME + /* This one is computed with a huge error, there is loss of + precision but the error estimate flags the problem (assuming the + user looks at it). We should probably trap any return with + err>|val| and signal loss of precision */ + + TEST_SF(s, gsl_sf_hyperg_1F1_e, (-26.1, 2.0, 100.0, &r), 1.341557199575986995e+19, TEST_TOL3, GSL_SUCCESS); +#endif + + /* Bug report H.Moseby */ + + TEST_SF(s, gsl_sf_hyperg_1F1_e, (1.2, 1.1e-15, 1.5, &r), 8254503159672429.02, TEST_TOL3, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_hyperg_1F1_e, (1.0, 1000000.5, 0.8e6 + 0.5, &r), 4.999922505099443804e+00, TEST_TOL3, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_hyperg_1F1_e, (1.0, 1000000.5, 1001000.5, &r), 3480.3699557431856166, TEST_TOL4, GSL_SUCCESS); + +#ifdef FIXME /* FIX THESE NEXT RELEASE */ + TEST_SF(s, gsl_sf_hyperg_1F1_e, (1.1, 1000000.5, 1001000.5, &r), 7304.6126942641350122, TEST_TOL3, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_e, (0.9, 1000000.5, 1001000.5, &r), 1645.4879293475410982, TEST_TOL3, GSL_SUCCESS); +#endif + + TEST_SF(s, gsl_sf_hyperg_1F1_e, (-1.1, 1000000.5, 1001000.5, &r), -5.30066488697455e-04, TEST_TOL3, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_hyperg_1F1_e, (1.5, 1000000.5, 0.8e6 + 0.5, &r), 11.18001288977894650469927615, TEST_TOL4, GSL_SUCCESS); + + /* Bug report Lorenzo Moneta */ + + TEST_SF(s, gsl_sf_hyperg_1F1_e, (-1.5, 1.5, -100., &r), 456.44010011787485545, TEST_TOL4, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_e, (-1.5, 1.5, 99., &r), 4.13360436014643309757065e36, TEST_TOL4, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_e, (-1.5, 1.5, 100., &r), 1.0893724312430935129254e37, TEST_TOL4, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_e, (-1.5, 1.5, 709., &r), 8.7396804160264899999692120e298, TEST_TOL4, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_e, (-1.5, 1.5, 710., &r), 2.36563187217417898169834615e299, TEST_TOL4, GSL_SUCCESS); + + /* Bug report from Weibin Li */ + +#ifdef FIXME + TEST_SF(s, gsl_sf_hyperg_1F1_e, (-37.8, 2.01, 103.58, &r), -6.21927211009e17, TEST_TOL1, GSL_SUCCESS); +#endif + + /* Testing BJG */ + +#ifdef COMPARISON_WITH_MATHEMATICA + /* Mathematica uses a different convention for M(-m,-n,x) */ + TEST_SF(s, gsl_sf_hyperg_1F1_int_e, (-1, -1, 0.1, &r), 1.1, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_1F1_e, (-1, -1, 0.1, &r), 1.1, TEST_TOL0, GSL_SUCCESS); +#endif + + /* U for integer parameters */ + + TEST_SF(s, gsl_sf_hyperg_U_int_e, (1, 1, 0.0001, &r), 8.634088070212725330, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_int_e, (1, 1, 0.01, &r), 4.078511443456425847, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_int_e, (1, 1, 0.5, &r), 0.9229106324837304688, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_int_e, (1, 1, 2.0, &r), 0.3613286168882225847, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_int_e, (1, 1, 100, &r), 0.009901942286733018406, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_int_e, (1, 1, 1000, &r), 0.0009990019940238807150, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_int_e, (1, 8, 0.01, &r), 7.272361203006010000e+16, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_int_e, (1, 8, 1, &r), 1957.0, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_int_e, (1, 8, 5, &r), 1.042496, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_int_e, (1, 8, 8, &r), 0.3207168579101562500, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_int_e, (1, 8, 50, &r), 0.022660399001600000000, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_int_e, (1, 8, 100, &r), 0.010631236727200000000, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_int_e, (1, 8, 1000, &r), 0.0010060301203607207200, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_int_e, (1, 20, 1, &r), 1.7403456103284421000e+16, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_int_e, (1, 20, 20, &r), 0.22597813610531052969, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_int_e, (1, 50, 1, &r), 3.374452117521520758e+61, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_int_e, (1, 50, 50, &r), 0.15394136814987651785, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_int_e, (1, 100, 0.1, &r), 1.0418325171990852858e+253, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_int_e, (1, 100, 1, &r), 2.5624945006073464385e+154, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_int_e, (1, 100, 50, &r), 3.0978624160896431391e+07, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_int_e, (1, 100, 100, &r), 0.11323192555773717475, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_int_e, (1, 100, 200, &r), 0.009715680951406713589, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_int_e, (1, 100, 1000, &r), 0.0011085142546061528661, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_int_e, (1, 1000, 2000, &r), 0.0009970168547036318206, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_int_e, (1, -1, 1, &r), 0.29817368116159703717, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_int_e, (1, -1, 10, &r), 0.07816669698940409380, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_int_e, (1, -10, 1, &r), 0.08271753756946041959, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_int_e, (1, -10, 5, &r), 0.06127757419425055261, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_int_e, (1, -10, 10, &r), 0.04656199948873187212, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_int_e, (1, -10, 20, &r), 0.031606421847946077709, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_int_e, (1, -100, 0.01, &r), 0.009900000099999796950, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_int_e, (1, -100, 1, &r), 0.009802970197050404429, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_int_e, (1, -100, 10, &r), 0.009001648897173103447, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_int_e, (1, -100, 20, &r), 0.008253126487166557546, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_int_e, (1, -100, 50, &r), 0.006607993916432051008, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_int_e, (1, -100, 90, &r), 0.005222713769726871937, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_int_e, (1, -100, 110, &r), 0.004727658137692606210, TEST_TOL2, GSL_SUCCESS); + TEST_SF_RLX(s, gsl_sf_hyperg_U_int_e, (1, -1000, 1, &r), 0.0009980029970019970050, TEST_SQRT_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_int_e, (1, -1000, 1010, &r), 0.0004971408839859245170, TEST_TOL4, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_int_e, (8, 1, 0.001, &r), 0.0007505359326875706975, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_int_e, (8, 1, 0.5, &r), 6.449509938973479986e-06, TEST_TOL3, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_int_e, (8, 1, 8, &r), 6.190694573035761284e-10, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_int_e, (8, 1, 20, &r), 3.647213845460374016e-12, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_int_e, (8, 8, 1, &r), 0.12289755012652317578, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_int_e, (8, 8, 10, &r), 5.687710359507564272e-09, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_int_e, (8, 8, 20, &r), 2.8175404594901039724e-11, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_int_e, (100, 100, 0.01, &r), 1.0099979491941914867e+196, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_int_e, (100, 100, 0.1, &r), 1.0090713562719862833e+97, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_int_e, (100, 100, 1, &r), 0.009998990209084729106, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_int_e, (100, 100, 20, &r), 1.3239363905866130603e-131, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_int_e, (-10, 1, 0.01, &r), 3.274012540759009536e+06, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_int_e, (-10, 1, 1, &r), 1.5202710000000000000e+06, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_int_e, (-10, 1, 10, &r), 1.0154880000000000000e+08, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_int_e, (-10, 1, 100, &r), 3.284529863685482880e+19, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_int_e, (-10, 10, 1, &r), 1.1043089864100000000e+11, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_int_e, (-10, 100, 1, &r), 1.3991152402448957897e+20, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_int_e, (-10, 100, 10, &r), 5.364469916567136000e+19, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_int_e, (-10, 100, 100, &r), 3.909797568000000000e+12, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_int_e, (-10, 100, 500, &r), 8.082625576697984130e+25, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_int_e, (-50, 1, 0.01, &r), 1.6973422555823855798e+64, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_int_e, (-50, 1, 1, &r), 7.086160198304780325e+63, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_int_e, (-50, 1, 10, &r), 5.332862895528712200e+65, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_int_e, (-50, 10, 1, &r), -7.106713471565790573e+71, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_int_e, (-50, 100, 1, &r), 2.4661377199407186476e+104, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_int_e, (-50, 10, 10, &r), 5.687538583671241287e+68, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_int_e, (-50, 100, 10, &r), 1.7880761664553373445e+102, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_int_e, (-90, 1, 0.01, &r), 4.185245354032917715e+137, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_int_e, (-90, 1, 0.1, &r), 2.4234043408007841358e+137, TEST_TOL3, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_int_e, (-90, 1, 10, &r), -1.8987677149221888807e+139, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_int_e, (-90, 10, 10, &r), -5.682999988842066677e+143, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_int_e, (-90, 100, 10, &r), 2.3410029853990624280e+189, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_int_e, (-90, 1000, 10, &r), 1.9799451517572225316e+271, TEST_TOL3, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_int_e, (-50, -1, 10, &r), -9.083195466262584149e+64, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_int_e, (-50, -10, 10, &r), -1.4418257327071634407e+62, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_int_e, (-50, -100, 0.01, &r), 3.0838993811468983931e+93, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_int_e, (-50, -100, 10, &r), 4.014552630378340665e+95, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_int_e, (-100, -100, 10, &r), 2.0556466922347982030e+162, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_int_e, (-100, -200, 10, &r), 1.1778399522973555582e+219, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_int_e, (-100, -200, 100, &r), 9.861313408898201873e+235, TEST_TOL3, GSL_SUCCESS); + + + /* U */ + + TEST_SF(s, gsl_sf_hyperg_U_e, (0.0001, 0.0001, 0.0001, &r), 1.0000576350699863577, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_e, (0.0001, 0.0001, 1.0, &r), 0.9999403679233247536, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_e, (0.0001, 0.0001, 100.0, &r), 0.9995385992657260887, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_e, (0.0001, 1, 0.0001, &r), 1.0009210608660065989, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_e, (0.0001, 1.0, 1.0, &r), 0.9999999925484179084, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_e, (0.0001, 10, 1, &r), 13.567851006281412726, TEST_TOL3, GSL_SUCCESS); + TEST_SF_RLX(s, gsl_sf_hyperg_U_e, (0.0001, 10, 5, &r), 1.0006265020064596364, TEST_SQRT_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_e, (0.0001, 10, 10, &r), 0.9999244381454633265, TEST_TOL0, GSL_SUCCESS); + TEST_SF_RLX(s, gsl_sf_hyperg_U_e, (0.0001, 100, 1, &r), 2.5890615708804247881e+150, TEST_SQRT_TOL0, GSL_SUCCESS); + TEST_SF_RLX(s, gsl_sf_hyperg_U_e, (0.0001, 100, 10, &r), 2.3127845417739661466e+55, TEST_SQRT_TOL0, GSL_SUCCESS); + TEST_SF_RLX(s, gsl_sf_hyperg_U_e, (0.0001, 100, 50, &r), 6402.818715083582554, TEST_SQRT_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_e, (0.0001, 100, 98, &r), 0.9998517867411840044, TEST_TOL2, GSL_SUCCESS); + TEST_SF_RLX(s, gsl_sf_hyperg_U_e, (0.0001, 1000, 300, &r), 2.5389557274938010716e+213, TEST_SQRT_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_e, (0.0001, 1000, 999, &r), 0.9997195294193261604, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_e, (0.0001, 1000, 1100, &r), 0.9995342990014584713, TEST_TOL1, GSL_SUCCESS); + TEST_SF_RLX(s, gsl_sf_hyperg_U_e, (0.5, 1000, 300, &r), 1.1977955438214207486e+217, TEST_SQRT_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_e, (0.5, 1000, 800, &r), 9.103916020464797207e+08, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_e, (0.5, 1000, 998, &r), 0.21970269691801966806, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_e, (0.5, 0.5, 1.0, &r), 0.7578721561413121060, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_e, (1, 0.0001, 0.0001, &r), 0.9992361337764090785, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_e, (1, 0.0001, 1, &r), 0.4036664068111504538, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_e, (1, 0.0001, 100, &r), 0.009805780851264329587, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_e, (1, 1.2, 2.0, &r), 0.3835044780075602550, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_e, (1, -0.0001, 1, &r), 0.4036388693605999482, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_e, (8, 10.5, 1, &r), 27.981926466707438538, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_e, (8, 10.5, 10, &r), 2.4370135607662056809e-8, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_e, (8, 10.5, 100, &r), 1.1226567526311488330e-16, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_e, (10, -2.5, 10, &r), 6.734690720346560349e-14, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_e, (10, 2.5, 10, &r), 6.787780794037971638e-13, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_e, (10, 2.5, 50, &r), 2.4098720076596087125e-18, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_e, (-10.5, 1.1, 1, &r), -3.990841457734147e+6, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_e, (-10.5, 1.1, 10, &r), 1.307472052129343e+8, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_e, (-10.5, 1.1, 50, &r), 3.661978424114088e+16, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_e, (-10.5, 1.1, 90, &r), 8.09469542130868e+19, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_e, (-10.5, 1.1, 99, &r), 2.546328328942063e+20, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_e, (-10.5, 1.1, 100, &r), 2.870463201832814e+20, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_e, (-10.5, 1.1, 200, &r), 8.05143453769373e+23, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_e, (-10.5, 10.1, 0.1, &r), -3.043016255306515e+20, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_e, (-10.5, 10.1, 1, &r), -3.194745265896115e+12, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_e, (-10.5, 10.1, 4, &r), -6.764203430361954e+07, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_e, (-10.5, 10.1, 10, &r), -2.067399425480545e+09, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_e, (-10.5, 10.1, 50, &r), 4.661837330822824e+14, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_e, (-10.5, 100.4, 10, &r), -6.805460513724838e+66, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_e, (-10.5, 100.4, 50, &r), -2.081052558162805e+18, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_e, (-10.5, 100.4, 80, &r), 2.034113191014443e+14, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_e, (-10.5, 100.4, 100, &r), 6.85047268436107e+13, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_e, (-10.5, 100.4, 200, &r), 1.430815706105649e+20, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_e, (-19.5, 82.1, 10, &r), 5.464313196201917432e+60, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_e, (-50.5, 100.1, 10, &r), -5.5740216266953e+126, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_e, (-50.5, 100.1, 40, &r), 5.937463786613894e+91, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_e, (-50.5, 100.1, 50, &r), -1.631898534447233e+89, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_e, (-50.5, 100.1, 70, &r), 3.249026971618851e+84, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_e, (-50.5, 100.1, 100, &r), 1.003401902126641e+85, TEST_TOL1, GSL_SUCCESS); + + /* Bug report from Stefan Gerlach */ + + TEST_SF(s, gsl_sf_hyperg_U_e, (-2.0, 4.0, 1.0, &r), 11.0, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_hyperg_U_e, (-2.0, 0.5, 3.14, &r), 1.1896, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_e, (-2.0, 0.5, 1.13, &r), -1.3631, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_e, (-2.0, 0.5, 0.0, &r), 0.75, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_e, (-2.0, 0.5, 1e-20, &r), 0.75, TEST_TOL2, GSL_SUCCESS); + + /* U(a,b,x) for x<0 [bug #27859] */ + + /* Tests for b >= 0 */ + + TEST_SF(s, gsl_sf_hyperg_U_e, ( 0, 0, -0.1, &r), 1, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_e, (-1, 0, -0.1, &r), -0.1, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_e, (-2, 0, -0.1, &r), 0.21, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_e, (-3, 0, -0.1, &r), -0.661, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_e, (-4, 0, -0.1, &r), 2.7721, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_e, (-5, 0, -0.1, &r), -14.52201, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_e, (-6, 0, -0.1, &r), 91.230301, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_hyperg_U_e, ( 0, 1, -0.1, &r), 1.0, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_e, (-1, 1, -0.1, &r), -1.1, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_e, (-2, 1, -0.1, &r), 2.41, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_e, (-3, 1, -0.1, &r), -7.891, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_e, (-4, 1, -0.1, &r), 34.3361, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_e, (-5, 1, -0.1, &r), -186.20251, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_e, (-6, 1, -0.1, &r), 1208.445361, TEST_TOL2, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_hyperg_U_e, ( 1, 2, -0.1, &r), -10.0, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_e, ( 0, 2, -0.1, &r), 1.0, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_e, (-1, 2, -0.1, &r), -2.1, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_e, (-2, 2, -0.1, &r), 6.61, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_e, (-3, 2, -0.1, &r), -27.721, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_e, (-4, 2, -0.1, &r), 145.2201, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_e, (-5, 2, -0.1, &r), -912.30301, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_e, (-6, 2, -0.1, &r), 6682.263421, TEST_TOL2, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_hyperg_U_e, ( 2, 3, -0.1, &r), 100.0, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_e, ( 1, 3, -0.1, &r), 90.0, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_e, ( 0, 3, -0.1, &r), 1.0, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_e, (-1, 3, -0.1, &r), -3.10, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_e, (-2, 3, -0.1, &r), 12.81, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_e, (-3, 3, -0.1, &r), -66.151, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_e, (-4, 3, -0.1, &r), 409.8241, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_e, (-5, 3, -0.1, &r), -2961.42351, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_e, (-6, 3, -0.1, &r), 24450.804481, TEST_TOL2, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_hyperg_U_e, ( 3, 4, -0.1, &r), -1000.0, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_e, ( 2, 4, -0.1, &r), -1900.0, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_e, ( 1, 4, -0.1, &r), -1810.0, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_e, ( 0, 4, -0.1, &r), 1.0, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_e, (-1, 4, -0.1, &r), -4.10, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_e, (-2, 4, -0.1, &r), 21.01, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_e, (-3, 4, -0.1, &r), -129.181, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_e, (-4, 4, -0.1, &r), 926.5481, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_e, (-5, 4, -0.1, &r), -7594.16401, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_e, (-6, 4, -0.1, &r), 70015.788541, TEST_TOL2, GSL_SUCCESS); + + /* Tests for b < 0 */ + + TEST_SF(s, gsl_sf_hyperg_U_e, ( 0, -1, -0.1, &r), 1.0, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_e, (-1, -1, -0.1, &r), 0.9, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_e, (-2, -1, -0.1, &r), 0.01, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_e, (-3, -1, -0.1, &r), -0.031, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_e, (-4, -1, -0.1, &r), 0.1281, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_e, (-5, -1, -0.1, &r), -0.66151, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_e, (-6, -1, -0.1, &r), 4.098241, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_hyperg_U_e, ( 0, -2, -0.1, &r), 1.0, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_e, (-1, -2, -0.1, &r), 1.9, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_e, (-2, -2, -0.1, &r), 1.81, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_e, (-3, -2, -0.1, &r), -0.001, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_e, (-4, -2, -0.1, &r), 0.0041, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_e, (-5, -2, -0.1, &r), -0.02101, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_e, (-6, -2, -0.1, &r), 0.129181, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_hyperg_U_e, ( 0, -3, -0.1, &r), 1.0, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_e, (-1, -3, -0.1, &r), 2.9, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_e, (-2, -3, -0.1, &r), 5.61, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_e, (-3, -3, -0.1, &r), 5.429, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_e, (-4, -3, -0.1, &r), 0.0001, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_e, (-5, -3, -0.1, &r), -0.00051, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_e, (-6, -3, -0.1, &r), 0.003121, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_hyperg_U_e, ( 0, -4, -0.1, &r), 1.0, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_e, (-1, -4, -0.1, &r), 3.9, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_e, (-2, -4, -0.1, &r), 11.41, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_e, (-3, -4, -0.1, &r), 22.259, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_e, (-4, -4, -0.1, &r), 21.7161, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_e, (-5, -4, -0.1, &r), -1e-5, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_e, (-6, -4, -0.1, &r), 0.000061, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_e, (-7, -4, -0.1, &r), -0.0004341, TEST_TOL0, GSL_SUCCESS); + + /* Tests for integer a */ + + TEST_SF(s, gsl_sf_hyperg_U_e, (-3, 0.5, -0.5, &r), -9.5, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_e, (-8, 0.5, -0.5, &r), 180495.0625, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_e, (-8, 1.5, -0.5, &r), 827341.0625, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_e, (-8, 1.5, -10, &r), 7.162987810253906e9, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_e, (3, 6, -0.5, &r), -296.0, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_e, (3, 7, -0.5, &r), 2824, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_e, (5, 12, -1.7, &r), -153.262676210016018065768591104, TEST_TOL2, GSL_SUCCESS); + + /* A few random tests */ + + TEST_SF(s, gsl_sf_hyperg_U_e, (0, 0, -0.5, &r), 1, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_e, (0, 1, -0.5, &r), 1, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_e, (0, 1, -0.001, &r), 1, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_e, (-1, 0.99, -0.1, &r), -1.09, TEST_TOL2, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_hyperg_U_e, (-1, 0, -0.5, &r), -0.5, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_e, (-2, 0, -0.5, &r), 1.25, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_e, (-7, 0, -0.1, &r), -668.2263421, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_hyperg_U_int_e, (3, 6, -0.5, &r), -296.0, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_int_e, (3, 7, -0.5, &r), 2824, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_U_int_e, (5, 12, -1.7, &r), -153.262676210016018065768591104, TEST_TOL2, GSL_SUCCESS); + + /* Bug report from Raymond Rogers */ + + TEST_SF(s, gsl_sf_hyperg_U_e, (4.11, 0.11, 6.4, &r), 6.422378238765078623739153038e-5, TEST_TOL2, GSL_SUCCESS); + /* Addition tests from Raymond Rogers */ +TEST_SF(s, gsl_sf_hyperg_U_e, (5, 4, 6.4, &r), 3.2586223825343211136628535e-05, TEST_TOL2, GSL_SUCCESS); +TEST_SF(s, gsl_sf_hyperg_U_e, (2.2,1.2 , 8.7, &r), 5.7250017539318661177749625e-03, TEST_TOL2, GSL_SUCCESS); +TEST_SF(s, gsl_sf_hyperg_U_e, (2, -6.4, 1, &r),1.2141502795806162484648638e-02 +, TEST_TOL2, GSL_SUCCESS); + + + /* 2F1 */ + + TEST_SF(s, gsl_sf_hyperg_2F1_e, (1, 1, 1, 0.5, &r), 2.0, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_2F1_e, (8, 8, 1, 0.5, &r), 12451584.0, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_2F1_e, (8, -8, 1, 0.5, &r), 0.13671875, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_2F1_e, (8, -8.1, 1, 0.5, &r), 0.14147385378899930422, TEST_TOL4, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_2F1_e, (8, -8, 1, -0.5, &r), 4945.136718750000000, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_2F1_e, (8, -8, -5.5, 0.5, &r), -906.6363636363636364, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_2F1_e, (8, -8, -5.5, -0.5, &r), 24565.363636363636364, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_2F1_e, (8, 8, 1, -0.5, &r), -0.006476312098196747669, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_2F1_e, (8, 8, 5, 0.5, &r), 4205.714285714285714, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_2F1_e, (8, 8, 5, -0.5, &r), 0.0028489656290296436616, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_2F1_e, (9, 9, 1, 0.99, &r), 1.2363536673577259280e+38 , TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_2F1_e, (9, 9, -1.5, 0.99, &r), 3.796186436458346579e+46, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_2F1_e, (9, 9, -1.5, -0.99, &r), 0.14733409946001025146, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_2F1_e, (9, 9, -8.5, 0.99, &r), -1.1301780432998743440e+65, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_2F1_e, (9, 9, -8.5, -0.99, &r), -8.856462606575344483, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_2F1_e, (9, 9, -21.5, 0.99, &r), 2.0712920991876073253e+95, TEST_TOL3, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_2F1_e, (9, 9, -21.5, -0.99, &r), -74.30517015382249216, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_2F1_e, (9, 9, -100.5, 0.99, &r), -3.186778061428268980e+262, TEST_TOL3, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_2F1_e, (9, 9, -100.5, -0.99, &r), 2.4454358338375677520, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_2F1_e, (25, 25, 1, -0.5, &r), -2.9995530823639545027e-06, TEST_SQRT_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_hyperg_2F1_e, (1.5, 0.5, 2.0, 1.0-1.0/64.0, &r), 3.17175539044729373926, TEST_TOL3, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_2F1_e, (1.5, 0.5, 2.0, 1.0-1.0/128.0, &r), 3.59937243502024563424, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_2F1_e, (1.5, 0.5, 2.0, 1.0-1.0/256.0, &r), 4.03259299524392504369, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_2F1_e, (1.5, 0.5, 2.0, 1.0-1.0/1024.0, &r), 4.90784159359675398250, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_2F1_e, (1.5, 0.5, 2.0, 1.0-1.0/65536.0, &r), 7.552266033399683914, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_2F1_e, (1.5, 0.5, 2.0, 1.0-1.0/16777216.0, &r), 11.08235454026043830363, TEST_TOL1, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_hyperg_2F1_e, (1.5, 0.5, 2.0, -1.0+1.0/1024.0, &r), 0.762910940909954974527, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_2F1_e, (1.5, 0.5, 2.0, -1.0+1.0/65536.0, &r), 0.762762124908845424449, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_2F1_e, (1.5, 0.5, 2.0, -1.0+1.0/1048576.0, &r), 0.762759911089064738044, TEST_TOL0, GSL_SUCCESS); + + /* added special handling with x == 1.0 , Richard J. Mathar, 2008-01-09 */ + + TEST_SF(s, gsl_sf_hyperg_2F1_e, (1.5, 0.5, 3.0, 1.0, &r), 1.6976527263135502482014268 , TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_2F1_e, (1.5, -4.2, 3.0, 1.0, &r), .15583601560025710649555254 , TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_2F1_e, (-7.4, 0.7, -1.5, 1.0, &r), -.34478866959246584996859 , TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_2F1_e, (0.1, -2.7, -1.5, 1.0, &r), 1.059766766063610122925 , TEST_TOL2, GSL_SUCCESS); + + /* Taylor Binnington a = 0 */ + + TEST_SF(s, gsl_sf_hyperg_2F1_e, (0, -2, -4, 0.5, &r), 1.0 , TEST_TOL2, GSL_SUCCESS); + + /* Andrew Benson bug #24812 + in Pari: + poch(a,x) = { gamma(a+x)/gamma(a) } + t(a,b,c,x,k) = { (poch(a,k)*poch(b,k)/poch(c,k)) * (x^k)/(k!) } + suminf(k=0,t(-10.34, 2.05, 3.05, 0.1725,k)) */ + + TEST_SF(s, gsl_sf_hyperg_2F1_e, (-10.34, 2.05, 3.05, 0.1725, &r), 0.310473552213130010351006093079548, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_2F1_e, (-9.99999999999, 2.05, 3.05, 0.1725, &r),0.32141934630197487540298837643890, TEST_TOL2, GSL_SUCCESS); + + /* Didier Pinchon also bug #24812 */ + TEST_SF(s, gsl_sf_hyperg_2F1_e, (11, -1, 11.0/2.0, 0.125 , &r), 0.75, TEST_TOL2, GSL_SUCCESS); + + /* Bill Maier - bug #45926 */ + TEST_SF(s, gsl_sf_hyperg_2F1_e, (-0.2, 8.8, 10.0, 0.8, &r), 0.77998971427681563, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_2F1_e, (-0.2, 9.8, 11.0, 0.8, &r), 0.77574573497387267, TEST_TOL0, GSL_SUCCESS); + +#if 0 /* XXX - bug #39056 */ + /* Test case from Hatef Monajemi */ + + TEST_SF(s, gsl_sf_hyperg_2F1_e, (3.5, -0.5, 5.0, 0.9, &r), 0.5923981284370653465208973272, TEST_TOL2, GSL_SUCCESS); + + /* Test case from Robert L Wolpert */ + + TEST_SF(s, gsl_sf_hyperg_2F1_e, (-1.0, -10.0, 1.0, 0.5, &r), 6.0, TEST_TOL0, GSL_SUCCESS); + + /* Test case from ldnlwm@163.com */ + + TEST_SF(s, gsl_sf_hyperg_2F1_e, (3.23191, -4.0229, 8.02291, 0.5, &r), 0.4300243900348170646, TEST_TOL2, GSL_SUCCESS); +#endif + + /* 2F1 conj */ + + TEST_SF(s, gsl_sf_hyperg_2F1_conj_e, (1, 1, 1, 0.5, &r), 3.352857095662929028, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_2F1_conj_e, (8, 8, 1, 0.5, &r), 1.7078067538891293983e+09, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_2F1_conj_e, (8, 8, 5, 0.5, &r), 285767.15696901140627, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_2F1_conj_e, (8, 8, 1, -0.5, &r), 0.007248196261471276276, TEST_TOL3, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_2F1_conj_e, (8, 8, 5, -0.5, &r), 0.00023301916814505902809, TEST_TOL3, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_2F1_conj_e, (25, 25, 1, -0.5, &r), 5.1696944096e-06, TEST_SQRT_TOL0, GSL_SUCCESS); + + /* updated correct values, testing enabled, Richard J. Mathar, 2008-01-09 */ + + TEST_SF(s, gsl_sf_hyperg_2F0_e, (0.01, 1.0, -0.02, &r), .99980388665511730901180717 , TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_2F0_e, (0.1, 0.5, -0.02, &r), .99901595171179281891589794 , TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_2F0_e, (1, 1, -0.02, &r), .98075549650574351826538049000 , TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_2F0_e, (8, 8, -0.02, &r), .32990592849626965538692141 , TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_2F0_e, (50, 50, -0.02, &r), .2688995263772964415245902e-12 , TEST_TOL0, GSL_SUCCESS); + + + /* 2F1 renorm */ + + TEST_SF(s, gsl_sf_hyperg_2F1_renorm_e, (1, 1, 1, 0.5, &r), 2.0, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_2F1_renorm_e, (8, 8, 1, 0.5, &r), 12451584.0, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_2F1_renorm_e, (8, -8, 1, 0.5, &r), 0.13671875, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_2F1_renorm_e, (8, -8, 1, -0.5, &r), 4945.13671875, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_2F1_renorm_e, (8, -8, -5.5, 0.5, &r), -83081.19167659493609, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_2F1_renorm_e, (8, -8, -5.5, -0.5, &r), 2.2510895952730178518e+06, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_2F1_renorm_e, (8, 8, 5, 0.5, &r), 175.2380952380952381, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_2F1_renorm_e, (9, 9, -1.5, 0.99, &r), 1.6063266334913066551e+46, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_2F1_renorm_e, (9, 9, -1.5, -0.99, &r), 0.06234327316254516616, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_2F1_renorm_e, (5, 5, -1, 0.5, &r), 4949760.0, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_2F1_renorm_e, (5, 5, -10, 0.5, &r), 139408493229637632000.0, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_2F1_renorm_e, (5, 5, -100, 0.5, &r), 3.0200107544594411315e+206, TEST_TOL3, GSL_SUCCESS); + + /* 2F1 conj renorm */ + + TEST_SF(s, gsl_sf_hyperg_2F1_conj_renorm_e, (9, 9, -1.5, 0.99, &r), 5.912269095984229412e+49, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_2F1_conj_renorm_e, (9, 9, -1.5, -0.99, &r), 0.10834020229476124874, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_2F1_conj_renorm_e, (5, 5, -1, 0.5, &r), 1.4885106335357933625e+08, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_2F1_conj_renorm_e, (5, 5, -10, 0.5, &r), 7.968479361426355095e+21, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hyperg_2F1_conj_renorm_e, (5, 5, -100, 0.5, &r), 3.1113180227052313057e+208, TEST_TOL3, GSL_SUCCESS); + + + return s; +} diff --git a/gsl-2.5/specfunc/test_legendre.c b/gsl-2.5/specfunc/test_legendre.c new file mode 100644 index 00000000..7f861fbe --- /dev/null +++ b/gsl-2.5/specfunc/test_legendre.c @@ -0,0 +1,1084 @@ +/* specfunc/test_legendre.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2004 Gerard Jungman + * Copyright (C) 2013 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ + +#include +#include +#include +#include "test_sf.h" + +static double +test_legendre_dx(const size_t l) +{ + const double dx_max = 0.4; + double dx; + + if (l < 1000) + dx = exp((double)l / 1000.0) / exp(2.0); + else + dx = dx_max; + + return dx; +} /* test_legendre_dx() */ + +/* +test_legendre_sum() + This routine computes the sum: + + Sum_{m=0}^l [P(l,m)(x)]^2 + +This sum should equate to 1.0 for Schmidt semi-normalized +ALFs for all l. +*/ + +static double +test_legendre_sum(const size_t l, double *p) +{ + double sum = 0.0; + size_t idx; + size_t m; + + for (m = 0; m <= l; ++m) + { + idx = gsl_sf_legendre_array_index(l, m); + sum += p[idx] * p[idx]; + } + + return sum; +} /* test_legendre_sum() */ + +/* +test_legendre_sum_deriv() + This routine computes the sum: + + Sum_{m=0}^l P(l,m)(x) * dP(l,m)/dx + +which should equal 0 in the case of Schmidt normalized ALFs. +*/ + +static double +test_legendre_sum_deriv(const int l, double *p, double *dp) +{ + double sum = 0.0; + size_t idx; + int m; + + for (m = 0; m <= l; ++m) + { + idx = gsl_sf_legendre_array_index(l, m); + sum += p[idx] * dp[idx]; + } + + return sum; +} /* test_legendre_sum_deriv() */ + +/* +test_legendre_sum_deriv2() + This routine computes the sum: + + Sum_{m=0}^l P(l,m)(x) * dP(l,m)/dx + +which should equal 0 in the case of Schmidt normalized ALFs. +*/ + +static double +test_legendre_sum_deriv2(const int l, double *p, double *dp, double *d2p) +{ + double sum = 0.0; + int m; + + for (m = 0; m <= l; ++m) + { + size_t idx = gsl_sf_legendre_array_index(l, m); + sum += dp[idx] * dp[idx] + p[idx] * d2p[idx]; + } + + return sum; +} /* test_legendre_sum_deriv2() */ + +static void +test_value(const size_t lmax, const size_t l, const size_t m, + const double *p, const double expected, const double tol, + const char *desc, const char *desc2) +{ + size_t idx = gsl_sf_legendre_array_index(l, m); + double value; + + if (l > lmax) + return; + + value = p[idx]; + + gsl_test_rel(value, expected, tol, "%s %s lmax=%zu l=%zu m=%zu", desc, desc2, lmax, l, m); +} /* test_value() */ + +/* Y_{lm} = factor * S_{lm} */ +static double +test_factor_spharm(const size_t l, const size_t m) +{ + double factor = sqrt( (2.0 * l + 1.0) / 4.0 / M_PI); + + if (m == 0) + return factor; + else + return (factor / sqrt(2.0)); +} /* test_factor_spharm() */ + +/* N_{lm} = factor * S_{lm} */ +static double +test_factor_full(const size_t l, const size_t m) +{ + double factor = sqrt(l + 0.5); + + if (m == 0) + return factor; + else + return (factor / sqrt(2.0)); +} /* test_factor_full() */ + +/* test that p = factor * p_expected */ +static int +test_legendre_compare(const size_t lmax, const double *p_expected, + const double *p, + double (*factor)(const size_t l, const size_t m), + const char *desc, const char *desc2) +{ + size_t l, m; + + for (l = 0; l <= lmax; ++l) + { + for (m = 0; m <= l; ++m) + { + size_t idx = gsl_sf_legendre_array_index(l, m); + double fac = (*factor)(l, m); + + if (fabs(p_expected[idx]) < GSL_DBL_MIN) + continue; + + gsl_test_rel(p[idx] / fac, p_expected[idx], 1.0e-10, + "%s %s l=%zu m=%zu", desc, desc2, l, m); + } + } + + return 0; +} /* test_legendre_compare() */ + +static int +test_legendre_schmidt(const size_t lmax, const double csphase, const char *desc) +{ + int s = 0; + const size_t nlm = gsl_sf_legendre_nlm(lmax); + size_t l; + double x, dx; + double *p, *p2, *dp, *d2p, *p_alt, *dp_alt; + size_t dim; + size_t i; + const gsl_sf_legendre_t norm = GSL_SF_LEGENDRE_SCHMIDT; + + dim = gsl_sf_legendre_array_n(lmax); + p = malloc(sizeof(double) * dim); + p2 = malloc(sizeof(double) * dim); + dp = malloc(sizeof(double) * dim); + d2p = malloc(sizeof(double) * dim); + p_alt = malloc(sizeof(double) * dim); + dp_alt = malloc(sizeof(double) * dim); + + /* test specific values */ + x = 0.5; + gsl_sf_legendre_array(norm, lmax, x, p); + test_value(lmax, 0, 0, p, 1.000000000000000, 1.0e-10, desc, "x=0.5"); + test_value(lmax, 1, 0, p, 0.500000000000000, 1.0e-10, desc, "x=0.5"); + test_value(lmax, 1, 1, p, 0.866025403784439, 1.0e-10, desc, "x=0.5"); + test_value(lmax, 2, 0, p, -0.125000000000000, 1.0e-10, desc, "x=0.5"); + test_value(lmax, 2, 1, p, 0.750000000000000, 1.0e-10, desc, "x=0.5"); + test_value(lmax, 2, 2, p, 0.649519052838329, 1.0e-10, desc, "x=0.5"); + test_value(lmax, 3, 0, p, -0.437500000000000, 1.0e-10, desc, "x=0.5"); + test_value(lmax, 3, 2, p, 0.726184377413891, 1.0e-10, desc, "x=0.5"); + test_value(lmax, 3, 3, p, 0.513489897661093, 1.0e-10, desc, "x=0.5"); + + x = 0.1; + gsl_sf_legendre_array(norm, lmax, x, p); + test_value(lmax, 2700, 500, p, -7.421910573369699e-3, 1.0e-10, desc, "x=0.1"); + test_value(lmax, 2700, 2500, p, 2.717612388452281e-2, 1.0e-10, desc, "x=0.1"); + test_value(lmax, 2700, 2700, p, 1.887509917445211e-7, 1.0e-10, desc, "x=0.1"); + + x = 0.15; + gsl_sf_legendre_deriv_array(norm, lmax, x, p, dp); + test_value(lmax, 0, 0, dp, 0.000000000000000, 1.0e-10, desc, "deriv x=0.15"); + test_value(lmax, 1, 0, dp, 1.000000000000000, 1.0e-10, desc, "deriv x=0.15"); + test_value(lmax, 1, 1, dp, -0.151716521227252, 1.0e-10, desc, "deriv x=0.15"); + test_value(lmax, 2, 1, dp, 1.67303727048739, 1.0e-10, desc, "deriv x=0.15"); + + x = 0.23; + gsl_sf_legendre_deriv2_array(norm, lmax, x, p, dp, d2p); + test_value(lmax, 0, 0, d2p, 0.000000000000000, 1.0e-10, desc, "deriv2 x=0.23"); + test_value(lmax, 1, 0, d2p, 0.000000000000000, 1.0e-10, desc, "deriv2 x=0.23"); + test_value(lmax, 1, 1, d2p, -1.08494130865644, 1.0e-10, desc, "deriv2 x=0.23"); + test_value(lmax, 2, 0, d2p, 3.000000000000000, 1.0e-10, desc, "deriv2 x=0.23"); + test_value(lmax, 2, 1, d2p, -1.25090188696335, 1.0e-10, desc, "deriv2 x=0.23"); + + /* test array routines */ + dx = test_legendre_dx(lmax); + for (x = -1.0; x <= 1.0; x += dx) + { + s += gsl_sf_legendre_array_e(norm, lmax, x, csphase, p); + + for (l = 0; l <= lmax; ++l) + { + double sum = test_legendre_sum(l, p); + double rhs = 1.0; + + gsl_test_rel(sum, rhs, 1.0e-10, + "%s l=%zu, x=%f, sum=%.12e", desc, l, x, sum); + } + } + + /* test deriv array routines */ + for (x = -1.0 + dx; x < 1.0 - dx; x += dx) + { + double u = sqrt((1.0 - x) * (1.0 + x)); + double uinv = 1.0 / u; + + s += gsl_sf_legendre_array(norm, lmax, x, p2); + s += gsl_sf_legendre_deriv_array(norm, lmax, x, p, dp); + s += gsl_sf_legendre_deriv_alt_array(norm, lmax, x, p_alt, dp_alt); + + for (i = 0; i < nlm; ++i) + { + if (fabs(p2[i]) < GSL_DBL_MIN) + continue; + + /* check p = p_alt = p2 */ + gsl_test_rel(p[i], p2[i], 1.0e-10, "%s deriv i=%zu", desc, i); + gsl_test_rel(p_alt[i], p2[i], 1.0e-10, "%s deriv_alt i=%zu", desc, i); + + /* check dp = -1/u*dp_alt */ + gsl_test_rel(-uinv * dp_alt[i], dp[i], 1.0e-10, + "%s deriv_alt x=%f i=%zu", desc, x, i); + } + + for (l = 0; l <= lmax; ++l) + { + double sum = test_legendre_sum_deriv(l, p, dp); + + gsl_test_abs(sum, 0.0, 1.0e-10, + "%s deriv l=%zu, x=%f, sum=%.12e", desc, l, x, sum); + } + } + + /* test deriv2 array routines */ + for (x = -1.0 + dx; x < 1.0 - dx; x += dx) + { + s += gsl_sf_legendre_array(norm, lmax, x, p2); + s += gsl_sf_legendre_deriv2_array(norm, lmax, x, p, dp, d2p); + + /* check p = p2 */ + for (i = 0; i < nlm; ++i) + { + if (fabs(p2[i]) < 1.0e3 * GSL_DBL_EPSILON) + gsl_test_abs(p[i], p2[i], 1.0e-10, "%s deriv2 i=%zu", desc, i); + else + gsl_test_rel(p[i], p2[i], 1.0e-10, "%s deriv2 i=%zu", desc, i); + } + + for (l = 0; l <= lmax; ++l) + { + double sum = test_legendre_sum_deriv(l, p, dp); + double sum2 = test_legendre_sum_deriv2(l, p, dp, d2p); + + gsl_test_abs(sum, 0.0, 1.0e-10, + "%s deriv2 l=%zu, x=%f, sum=%.12e", desc, l, x, sum); + gsl_test_abs(sum2, 0.0, 1.0e-6, + "%s deriv2 l=%zu, x=%f, sum=%.12e", desc, l, x, sum2); + } + } + + free(p); + free(p2); + free(dp); + free(d2p); + free(p_alt); + free(dp_alt); + + return s; +} /* test_legendre_schmidt() */ + +/* test other normalizations (other than schmidt) */ +static int +test_legendre_norm(const gsl_sf_legendre_t norm_type, const size_t lmax, + const double csphase, const char *desc) +{ + int s = 0; + double x, dx; + double *p_schmidt, *dp_schmidt, *d2p_schmidt; + double *p, *dp, *d2p; + size_t dim; + double (*factor)(const size_t l, const size_t m) = NULL; + + dim = gsl_sf_legendre_array_n(lmax); + p = malloc(sizeof(double) * dim); + dp = malloc(sizeof(double) * dim); + d2p = malloc(sizeof(double) * dim); + p_schmidt = malloc(sizeof(double) * dim); + dp_schmidt = malloc(sizeof(double) * dim); + d2p_schmidt = malloc(sizeof(double) * dim); + + if (norm_type == GSL_SF_LEGENDRE_SPHARM) + { + factor = &test_factor_spharm; + } + else if (norm_type == GSL_SF_LEGENDRE_FULL) + { + factor = &test_factor_full; + + /* test specific values (computed from GNU octave) */ + x = 0.45; + s += gsl_sf_legendre_array(norm_type, lmax, x, p); + test_value(lmax, 0, 0, p, 0.707106781186548, 1.0e-10, desc, "x=0.45"); + test_value(lmax, 1, 0, p, 0.551135192126215, 1.0e-10, desc, "x=0.45"); + test_value(lmax, 1, 1, p, 0.773385414912901, 1.0e-10, desc, "x=0.45"); + test_value(lmax, 2, 0, p, -0.310298495404022, 1.0e-10, desc, "x=0.45"); + test_value(lmax, 2, 1, p, 0.778204062248457, 1.0e-10, desc, "x=0.45"); + test_value(lmax, 2, 2, p, 0.772176054650104, 1.0e-10, desc, "x=0.45"); + test_value(lmax, 3, 0, p, -0.83661120632398589, 1.0e-10, desc, "x=0.45"); + test_value(lmax, 3, 1, p, 0.00904294765791280, 1.0e-10, desc, "x=0.45"); + test_value(lmax, 3, 2, p, 0.91934361403343767, 1.0e-10, desc, "x=0.45"); + test_value(lmax, 3, 3, p, 0.74482641545541073, 1.0e-10, desc, "x=0.45"); + } + + /* + * test the scale factors between the Schmidts and these + * normalized functions + */ + + dx = test_legendre_dx(lmax); + for (x = -1.0; x <= 1.0; x += dx) + { + s += gsl_sf_legendre_array_e(GSL_SF_LEGENDRE_SCHMIDT, lmax, x, + csphase, p_schmidt); + s += gsl_sf_legendre_array_e(norm_type, lmax, x, csphase, p); + test_legendre_compare(lmax, p_schmidt, p, factor, desc, "p"); + } + + /* test derivatives */ + for (x = -1.0 + dx; x < 1.0 - dx; x += dx) + { + s += gsl_sf_legendre_deriv_array_e(GSL_SF_LEGENDRE_SCHMIDT, + lmax, x, csphase, p_schmidt, dp_schmidt); + s += gsl_sf_legendre_deriv_array_e(norm_type, lmax, x, csphase, p, dp); + test_legendre_compare(lmax, p_schmidt, p, factor, desc, "deriv p"); + test_legendre_compare(lmax, dp_schmidt, dp, factor, desc, "deriv dp"); + + s += gsl_sf_legendre_deriv2_array_e(GSL_SF_LEGENDRE_SCHMIDT, + lmax, x, csphase, p_schmidt, dp_schmidt, d2p_schmidt); + s += gsl_sf_legendre_deriv2_array_e(norm_type, lmax, x, csphase, + p, dp, d2p); + test_legendre_compare(lmax, p_schmidt, p, factor, desc, "deriv2 p"); + test_legendre_compare(lmax, dp_schmidt, dp, factor, desc, "deriv2 dp"); + test_legendre_compare(lmax, d2p_schmidt, d2p, factor, desc, "deriv2 d2p"); + } + + free(p); + free(dp); + free(d2p); + free(p_schmidt); + free(dp_schmidt); + free(d2p_schmidt); + + return s; +} /* test_legendre_norm() */ + +/* +test_legendre_unnorm() + This routine tests the unnormalized ALFs using the relation + +S(l,m)(x) = a(l,m) * P(l,m)(x) + +where + +a(l,0) = 1 +a(l,1) = -sqrt(2)/sqrt(l * (l+1)) +a(l,m+1) = a(l,m) / sqrt((l+m+1) * (l-m)), m > 1 + +and + +S(l,m) are the Schmidt semi-normalized ALFs +*/ + +static int +test_legendre_unnorm(const size_t lmax_orig, const char *desc) +{ + int s = 0; + const int lmax = GSL_MIN(lmax_orig, 140); + size_t l, m; + double x, dx; + double *p, *dp, *d2p, *p2; + double *p_schmidt, *dp_schmidt, *d2p_schmidt; + size_t dim; + + dim = gsl_sf_legendre_array_n(lmax); + p = malloc(sizeof(double) * dim); + dp = malloc(sizeof(double) * dim); + d2p = malloc(sizeof(double) * dim); + p2 = malloc(sizeof(double) * dim); + p_schmidt = malloc(sizeof(double) * dim); + dp_schmidt = malloc(sizeof(double) * dim); + d2p_schmidt = malloc(sizeof(double) * dim); + + dx = test_legendre_dx(lmax); + + for (x = -1.0 + dx; x < 1.0 - dx; x += dx) + { + gsl_sf_legendre_deriv2_array(GSL_SF_LEGENDRE_SCHMIDT, lmax, x, + p_schmidt, dp_schmidt, d2p_schmidt); + gsl_sf_legendre_deriv2_array(GSL_SF_LEGENDRE_NONE, lmax, x, p, dp, d2p); + + for (l = 0; l <= lmax; ++l) + { + double a_lm = sqrt(2.0 / (double)l / (l + 1.0)); + size_t idx; + + /* test S(l,0) = P(l,0) */ + idx = gsl_sf_legendre_array_index(l, 0); + gsl_test_rel(p[idx], p_schmidt[idx], 1.0e-10, + "legendre unnorm l=%zu, m=0, x=%f", l, x); + gsl_test_rel(dp[idx], dp_schmidt[idx], 1.0e-10, + "legendre unnorm deriv l=%zu, m=0, x=%f", l, x); + + if (l > 1) + { + gsl_test_rel(d2p[idx], d2p_schmidt[idx], 1.0e-10, + "legendre unnorm deriv2 l=%zu, m=0, x=%f", l, x); + } + else + { + gsl_test_abs(d2p[idx], d2p_schmidt[idx], 1.0e-10, + "legendre unnorm deriv2 l=%zu, m=0, x=%f", l, x); + } + + /* test S(l,m) = a_{lm} * P(l,m) for m > 0 */ + for (m = 1; m <= l; ++m) + { + idx = gsl_sf_legendre_array_index(l, m); + + gsl_test_rel(a_lm * p[idx], p_schmidt[idx], 1.0e-9, + "legendre unnorm l=%zu, m=%zu, x=%f", l, m, x); + gsl_test_abs(a_lm * dp[idx], dp_schmidt[idx], 1.0e-10, + "legendre unnorm deriv l=%zu, m=%zu, x=%f", l, m, x); + gsl_test_abs(a_lm * d2p[idx], d2p_schmidt[idx], 1.0e-10, + "legendre unnorm deriv2 l=%zu, m=%zu, x=%f", l, m, x); + + a_lm /= sqrt((double) (l + m + 1)) * + sqrt((double) (l - m)); + } + } + + gsl_sf_legendre_array(GSL_SF_LEGENDRE_NONE, lmax, x, p2); + /* test if p = p2 */ + for (l = 0; l <= lmax; ++l) + { + for (m = 0; m <= l; ++m) + { + size_t idx = gsl_sf_legendre_array_index(l, m); + gsl_test_rel(p2[idx], p[idx], 1.0e-10, + "%s compare l=%zu, m=%zu, x=%f", + desc, l, m, x); + } + } + } + + free(p); + free(p2); + free(dp); + free(d2p); + free(p_schmidt); + free(dp_schmidt); + free(d2p_schmidt); + + return s; +} /* test_legendre_unnorm() */ + +static int +test_legendre_all(const size_t lmax) +{ + int s = 0; + + s += test_legendre_schmidt(lmax, 1.0, "schmidt csphase=1"); + s += test_legendre_schmidt(lmax, -1.0, "schmidt csphase=-1"); + + s += test_legendre_norm(GSL_SF_LEGENDRE_SPHARM, lmax, 1.0, + "spharm csphase=1"); + s += test_legendre_norm(GSL_SF_LEGENDRE_SPHARM, lmax, -1.0, + "spharm csphase=-1"); + + s += test_legendre_norm(GSL_SF_LEGENDRE_FULL, lmax, 1.0, + "full csphase=1"); + s += test_legendre_norm(GSL_SF_LEGENDRE_FULL, lmax, -1.0, + "full csphase=-1"); + + s += test_legendre_unnorm(lmax, "unnorm csphase=1"); + + return s; +} /* test_legendre_all() */ + +int test_legendre(void) +{ + gsl_sf_result r; + double L[256], DL[256]; + int s = 0; + int sa; + + TEST_SF(s, gsl_sf_legendre_P1_e, (-0.5, &r), -0.5, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_legendre_P1_e, ( 0.5, &r), 0.5, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_legendre_P2_e, (0.0, &r), -0.5 , TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_legendre_P2_e, (0.5, &r), -0.125, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_legendre_P2_e, (1.0, &r), 1.0 , TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_legendre_P2_e, (100.0, &r), 14999.5 , TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_legendre_P3_e, ( -0.5, &r), 0.4375, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_legendre_P3_e, ( 0.5, &r), -0.4375, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_legendre_P3_e, ( 1.0, &r), 1.0 , TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_legendre_P3_e, (100.0, &r), 2.49985e+06, TEST_TOL0, GSL_SUCCESS); + + + TEST_SF(s, gsl_sf_legendre_Pl_e, (1, -0.5, &r), -0.5, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_legendre_Pl_e, (1, 1.0e-8, &r), 1.0e-08, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_legendre_Pl_e, (1, 0.5, &r), 0.5, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_legendre_Pl_e, (1, 1.0, &r), 1.0, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_legendre_Pl_e, (10, -0.5, &r), -0.1882286071777345, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_legendre_Pl_e, (10, 1.0e-8, &r), -0.24609374999999864648, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_legendre_Pl_e, (10, 0.5, &r), -0.18822860717773437500, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_legendre_Pl_e, (10, 1.0, &r), 1.0, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_legendre_Pl_e, (99, -0.5, &r), 0.08300778172138770477, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_legendre_Pl_e, (99, 1.0e-8, &r), -7.958923738716563193e-08, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_legendre_Pl_e, (99, 0.5, &r), -0.08300778172138770477, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_legendre_Pl_e, (99, 0.999, &r), -0.3317727359254778874, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_legendre_Pl_e, (99, 1.0, &r), 1.0, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_legendre_Pl_e, (1000, -0.5, &r), -0.019168251091650277878, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_legendre_Pl_e, (1000, 1.0e-8, &r), 0.0252250181770982897470252620, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_legendre_Pl_e, (1000, 0.5, &r), -0.019168251091650277878, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_legendre_Pl_e, (1000, 1.0, &r), 1.0, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_legendre_Pl_e, (4000, -0.5, &r), -0.009585404456573080972, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_legendre_Pl_e, (4000, 0.5, &r), -0.009585404456573080972, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_legendre_Pl_e, (4000, 1.0, &r), 1.0, TEST_TOL0, GSL_SUCCESS); + + sa = 0; + gsl_sf_legendre_Pl_array(100, 0.5, L); + TEST_SF_VAL(sa, L[0], +0.0, 1.0, TEST_TOL1); + TEST_SF_VAL(sa, L[10], +0.0, -0.18822860717773437500, TEST_TOL1); + TEST_SF_VAL(sa, L[100], +0.0, -0.06051802596186118687, TEST_TOL1); + gsl_test(sa, "gsl_sf_legendre_Pl_array(100, 0.5)"); + s += sa; + + sa = 0; + gsl_sf_legendre_Pl_deriv_array(100, 0.5, L, DL); + TEST_SF_VAL(sa, DL[0], +0.0, 0.0, TEST_TOL1); + TEST_SF_VAL(sa, DL[1], +0.0, 1.0, TEST_TOL1); + TEST_SF_VAL(sa, DL[10], +0.0, -2.3171234130859375000, TEST_TOL1); + TEST_SF_VAL(sa, DL[100], +0.0, -7.0331691653942815112, TEST_TOL1); + gsl_test(sa, "gsl_sf_legendre_Pl_deriv_array(100, 0.5)"); + s += sa; + sa = 0; + + gsl_sf_legendre_Pl_deriv_array(10, 1.0, L, DL); + TEST_SF_VAL(sa, DL[0], +0.0, 0.0, TEST_TOL1); + TEST_SF_VAL(sa, DL[1], +0.0, 1.0, TEST_TOL1); + TEST_SF_VAL(sa, DL[10], +0.0, 55.0, TEST_TOL1); + gsl_test(sa, "gsl_sf_legendre_Pl_deriv_array(10, 1.0)"); + s += sa; + + gsl_sf_legendre_Pl_deriv_array(10, 1.0 - 1.0e-11, L, DL); + TEST_SF_VAL(sa, DL[0], +0.0, 0.0, TEST_TOL1); + TEST_SF_VAL(sa, DL[1], +0.0, 1.0, TEST_TOL1); + TEST_SF_VAL(sa, DL[10], +0.0, 54.999999985150000001, TEST_TOL1); + gsl_test(sa, "gsl_sf_legendre_Pl_deriv_array(10, 1.0 - 1.0e-11)"); + s += sa; + + gsl_sf_legendre_Pl_deriv_array(10, -1.0, L, DL); + TEST_SF_VAL(sa, DL[0], +0.0, 0.0, TEST_TOL1); + TEST_SF_VAL(sa, DL[1], +0.0, 1.0, TEST_TOL1); + TEST_SF_VAL(sa, DL[10], +0.0, -55.0, TEST_TOL1); + gsl_test(sa, "gsl_sf_legendre_Pl_deriv_array(10, -1.0)"); + s += sa; + + gsl_sf_legendre_Pl_deriv_array(10, -1.0 + 1.0e-11, L, DL); + TEST_SF_VAL(sa, DL[0], +0.0, 0.0, TEST_TOL1); + TEST_SF_VAL(sa, DL[1], +0.0, 1.0, TEST_TOL1); + TEST_SF_VAL(sa, DL[10], +0.0, -54.999999985150000001, TEST_TOL1); + gsl_test(sa, "gsl_sf_legendre_Pl_deriv_array(10, -1.0 + 1.0e-11)"); + s += sa; + + TEST_SF(s, gsl_sf_legendre_Plm_e, (10, 0, -0.5, &r), -0.18822860717773437500, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_legendre_Plm_e, (10, 0, 1.0e-08, &r), -0.24609374999999864648, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_legendre_Plm_e, (10, 0, 0.5, &r), -0.18822860717773437500, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_legendre_Plm_e, (10, 1, -0.5, &r), -2.0066877394361256516, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_legendre_Plm_e, (10, 1, 1.0e-08, &r), -2.7070312499999951725e-07, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_legendre_Plm_e, (10, 1, 0.5, &r), 2.0066877394361256516, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_legendre_Plm_e, (10, 5, -0.5, &r), -30086.169706116174977, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_legendre_Plm_e, (10, 5, 1.0e-08, &r), -0.0025337812499999964949, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_legendre_Plm_e, (10, 5, 0.5, &r), 30086.169706116174977, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_legendre_Plm_e, (10, 5, 0.999, &r), -0.5036411489013270406, TEST_TOL1, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_legendre_Plm_e, (100, 5, -0.5, &r), -6.617107444248382171e+08, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_legendre_Plm_e, (100, 5, 1.0e-08, &r), 817.8987598063712851, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_legendre_Plm_e, (100, 5, 0.5, &r), 6.617107444248382171e+08, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_legendre_Plm_e, (100, 5, 0.999, &r), -1.9831610803806212189e+09, TEST_TOL2, GSL_SUCCESS); + +#ifndef GSL_DISABLE_DEPRECATED + + sa = 0; + gsl_sf_legendre_Plm_deriv_array(100, 2, -1.0 + 1.0/1125899906842624.0, L, DL); + TEST_SF_VAL(sa, L[0], +0.0, 5.3290705182007490275e-15, TEST_TOL1); + TEST_SF_VAL(sa, L[1], +0.0, -2.6645352591003721471e-14, TEST_TOL1); + TEST_SF_VAL(sa, L[98], +0.0, 2.2646284847349109694e-08, TEST_TOL2); + gsl_test(sa, "gsl_sf_legendre_Plm_deriv_array(100, 2, -1.0 + 2^(-50)"); + s += sa; + + sa = 0; + gsl_sf_legendre_Plm_deriv_array(100, 2, 1.0 - 1.0/1125899906842624.0, L, DL); + TEST_SF_VAL(sa, L[0], +0.0, 5.3290705182007490275e-15, TEST_TOL1); + TEST_SF_VAL(sa, L[1], +0.0, 2.6645352591003721471e-14, TEST_TOL1); + TEST_SF_VAL(sa, L[10], +0.0, 5.3343995887188313290e-12, TEST_TOL1); + TEST_SF_VAL(sa, L[98], +0.0, 2.2646284847349109694e-08, TEST_TOL2); + gsl_test(sa, "gsl_sf_legendre_Plm_deriv_array(100, 2, 1.0 - 2^(-50)"); + s += sa; + + sa = 0; + gsl_sf_legendre_Plm_array(100, 5, 0.5, L); + TEST_SF_VAL(sa, L[0], +0.0, -460.3466286991656682, TEST_TOL1); + TEST_SF_VAL(sa, L[10], +0.0, 38852.51334152290535, TEST_TOL1 ); + TEST_SF_VAL(sa, L[95], +0.0, 6.617107444248382171e+08, TEST_TOL1); + gsl_test(sa, "gsl_sf_legendre_Plm_array(100, 5, 0.5)"); + s += sa; + + sa = 0; + gsl_sf_legendre_Plm_array(100, 5, 0.999, L); + TEST_SF_VAL(sa, L[0], +0.0, -0.00016883550990916552255, TEST_TOL2); + TEST_SF_VAL(sa, L[10], +0.0, -30.651334850159821525, TEST_TOL2 ); + TEST_SF_VAL(sa, L[95], +0.0, -1.9831610803806212189e+09, TEST_TOL2); + gsl_test(sa, "gsl_sf_legendre_Plm_array(100, 5, 0.999)"); + s += sa; + + sa = 0; + gsl_sf_legendre_Plm_array(100, 5, -0.999, L); + TEST_SF_VAL(sa, L[0], +0.0, -0.00016883550990916552255, TEST_TOL2); + TEST_SF_VAL(sa, L[10], +0.0, -30.651334850159821525, TEST_TOL2 ); + TEST_SF_VAL(sa, L[95], +0.0, 1.9831610803806212189e+09, TEST_TOL2); + gsl_test(sa, "gsl_sf_legendre_Plm_array(100, 5, -0.999)"); + s += sa; + + sa = 0; + gsl_sf_legendre_Plm_deriv_array(100, 2, 0.999, L, DL); + TEST_SF_VAL(sa, L[0], +0.0, 0.00599700000000000000, TEST_TOL1); + TEST_SF_VAL(sa, L[1], +0.0, 0.02995501500000000000, TEST_TOL1 ); + TEST_SF_VAL(sa, DL[0], +0.0, -5.9940000000000000000, TEST_TOL1); + TEST_SF_VAL(sa, DL[1], +0.0, -29.910045000000000000, TEST_TOL1 ); + TEST_SF_VAL(sa, DL[2], +0.0, -89.490629790000000000, TEST_TOL1 ); + TEST_SF_VAL(sa, DL[10], +0.0, -5703.9461633355291972, TEST_TOL1 ); + TEST_SF_VAL(sa, DL[95], +0.0, 6.4518473603456858414E+06, TEST_TOL3); + gsl_test(sa, "gsl_sf_legendre_Plm_deriv_array(100, 2, 0.999)"); + s += sa; + + sa = 0; + gsl_sf_legendre_Plm_deriv_array(100, 2, 1.0 - 1.0e-15, L, DL); + TEST_SF_VAL(sa, DL[0], +0.0, -5.9999999999999940000, TEST_TOL1); + TEST_SF_VAL(sa, DL[1], +0.0, -29.999999999999910000, TEST_TOL1 ); + TEST_SF_VAL(sa, DL[2], +0.0, -89.999999999999490000, TEST_TOL1 ); + TEST_SF_VAL(sa, DL[10], +0.0, -6005.9999999996936940, TEST_TOL1 ); + TEST_SF_VAL(sa, DL[95], +0.0, -2.2586255999928454270e+07, TEST_TOL3); + gsl_test(sa, "gsl_sf_legendre_Plm_deriv_array(100, 2, 1.0 - 1.0e-15)"); + s += sa; + + sa = 0; + gsl_sf_legendre_Plm_deriv_array(100, 2, -1.0 + 1.0e-15, L, DL); + TEST_SF_VAL(sa, DL[0], +0.0, 5.9999999999999940000, TEST_TOL1); + TEST_SF_VAL(sa, DL[1], +0.0, -29.999999999999910000, TEST_TOL1 ); + TEST_SF_VAL(sa, DL[95], +0.0, -2.2586255999928454270e+07, TEST_TOL3); + gsl_test(sa, "gsl_sf_legendre_Plm_deriv_array(100, 2, -1.0 + 1.0e-15)"); + s += sa; + + sa = 0; + gsl_sf_legendre_Plm_deriv_array(100, 5, 0.999, L, DL); + TEST_SF_VAL(sa, DL[0], +0.0, 0.42187762481054616565, TEST_TOL1); + TEST_SF_VAL(sa, DL[1], +0.0, 4.6341560284340909936, TEST_TOL1 ); + TEST_SF_VAL(sa, DL[2], +0.0, 27.759505566959219127, TEST_TOL1 ); + TEST_SF_VAL(sa, DL[10], +0.0, 76051.795860179545484, TEST_TOL1 ); + TEST_SF_VAL(sa, DL[95], +0.0, 3.0344503083851936814e+12, TEST_TOL3); + gsl_test(sa, "gsl_sf_legendre_Plm_deriv_array(100, 5, 0.999)"); + s += sa; + +#endif /* !GSL_DISABLE_DEPRECATED */ + + TEST_SF(s, gsl_sf_legendre_sphPlm_e, (10, 0, -0.5, &r), -0.24332702369300133776, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_legendre_sphPlm_e, (10, 0, 0.5, &r), -0.24332702369300133776, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_legendre_sphPlm_e, (10, 0, 0.999, &r), 1.2225754122797385990, TEST_TOL1, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_legendre_sphPlm_e, (10, 5, -0.5, &r), -0.3725739049803293972, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_legendre_sphPlm_e, (10, 5, 1.0e-08, &r), -3.1377233589376792243e-08, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_legendre_sphPlm_e, (10, 5, 0.5, &r), 0.3725739049803293972, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_legendre_sphPlm_e, (10, 5, 0.999, &r), -6.236870674727370094e-06, TEST_TOL2, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_legendre_sphPlm_e, (10, 10, -0.5, &r), 0.12876871185785724117, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_legendre_sphPlm_e, (10, 10, 0.5, &r), 0.12876871185785724117, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_legendre_sphPlm_e, (10, 10, 0.999, &r), 1.7320802307583118647e-14, TEST_TOL2, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_legendre_sphPlm_e, (200, 1, -0.5, &r), 0.3302975570099492931, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_legendre_sphPlm_e, (200, 1, 0.5, &r), -0.3302975570099492931, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_legendre_sphPlm_e, (200, 1, 0.999, &r), -1.4069792055546256912, TEST_TOL2, GSL_SUCCESS); + + + + /* Test case from alberto@physik.fu-berlin.de */ + + TEST_SF(s, gsl_sf_legendre_sphPlm_e, (3, 1, 0.0, &r), 0.323180184114150653007, TEST_TOL2, GSL_SUCCESS); + + /* Other test cases */ + + TEST_SF(s, gsl_sf_legendre_sphPlm_e, (200, 1, -0.5, &r), 0.3302975570099492931418227583, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_legendre_sphPlm_e, (140,135,1,&r), 0.0, TEST_TOL2, GSL_SUCCESS); + +#ifdef EXTENDED + TEST_SF(s, gsl_sf_legendre_sphPlm_e, (140,135,0.99998689456491752,&r), -6.54265253269093276310395668335e-305, TEST_TOL6, GSL_SUCCESS); +#endif + +#ifndef GSL_DISABLE_DEPRECATED + + sa = 0; + gsl_sf_legendre_sphPlm_array(100, 5, 0.5, L); + TEST_SF_VAL(sa, L[0], +0.0, -0.22609703187800460722, TEST_TOL1); + TEST_SF_VAL(sa, L[10], +0.0, 0.07452710323813558940, TEST_TOL1); + TEST_SF_VAL(sa, L[95], +0.0, 0.25865355990880161717, TEST_TOL1); + gsl_test(sa, "gsl_sf_legendre_sphPlm_array(100, 5, 0.5)"); + s += sa; + + sa = 0; + gsl_sf_legendre_sphPlm_array(100, 2, 1.0 - 1.0/1125899906842624.0, L); + TEST_SF_VAL(sa, L[0], +0.0, 6.8616082064776657177e-16, TEST_TOL2); + TEST_SF_VAL(sa, L[10], +0.0, 4.8543150313086787324e-14, TEST_TOL2); + TEST_SF_VAL(sa, L[95], +0.0, 8.3138984963650838973e-12, TEST_TOL2); + gsl_test(sa, "gsl_sf_legendre_sphPlm_array(100, 2, 1.0 - 2^(-50))"); + s += sa; + + sa = 0; + gsl_sf_legendre_sphPlm_array(100, 2, -1.0 + 1.0/1125899906842624.0, L); + TEST_SF_VAL(sa, L[0], +0.0, 6.8616082064776657177e-16, TEST_TOL2); + TEST_SF_VAL(sa, L[95], +0.0, -8.3138984963650838973e-12, TEST_TOL2); + gsl_test(sa, "gsl_sf_legendre_sphPlm_array(100, 2, -1.0 + 2^(-50))"); + s += sa; + + sa = 0; + gsl_sf_legendre_sphPlm_deriv_array(100, 0, 0.5, L, DL); + TEST_SF_VAL(sa, DL[0], +0.0, 0.0, TEST_TOL1); + TEST_SF_VAL(sa, DL[10], +0.0, -2.9953934850252897591, TEST_TOL1); + TEST_SF_VAL(sa, DL[95], +0.0, -36.411811015111761007, TEST_TOL1); + gsl_test(sa, "gsl_sf_legendre_sphPlm_deriv_array(100, 0, 0.5)"); + s += sa; + + sa = 0; + gsl_sf_legendre_sphPlm_deriv_array(100, 1, 0.5, L, DL); + TEST_SF_VAL(sa, DL[0], +0.0, 0.19947114020071633897, TEST_TOL1); + TEST_SF_VAL(sa, DL[1], +0.0, -0.44603102903819277863, TEST_TOL1); + TEST_SF_VAL(sa, DL[10], +0.0, 1.3658895325030216565, TEST_TOL1); + TEST_SF_VAL(sa, DL[99], +0.0, -27.925571865639037118, TEST_TOL1); + gsl_test(sa, "gsl_sf_legendre_sphPlm_deriv_array(100, 1, 0.5)"); + s += sa; + + sa = 0; + gsl_sf_legendre_sphPlm_deriv_array(100, 1, 1.0 - 1.0/1125899906842624.0, L, DL); + TEST_SF_VAL(sa, DL[0], +0.0, 8.1973898803378530946e+06, TEST_TOL1); + TEST_SF_VAL(sa, DL[1], +0.0, 1.8329921010504257405e+07, TEST_TOL1); + TEST_SF_VAL(sa, DL[10], +0.0, 1.8439572562895384115e+08, TEST_TOL1); + TEST_SF_VAL(sa, DL[99], +0.0, 4.7682463136232210552e+09, TEST_TOL3); + gsl_test(sa, "gsl_sf_legendre_sphPlm_deriv_array(100, 1, 1.0 - 2^(-50))"); + s += sa; + + sa = 0; + gsl_sf_legendre_sphPlm_deriv_array(100, 2, 0.5, L, DL); + TEST_SF_VAL(sa, DL[0], +0.0, -0.38627420202318958034, TEST_TOL1); + TEST_SF_VAL(sa, DL[1], +0.0, 0.25549636910832059085, TEST_TOL1); + TEST_SF_VAL(sa, DL[2], +0.0, 1.5053547230039006279, TEST_TOL1); + TEST_SF_VAL(sa, DL[10], +0.0, 0.73576559668648243477, TEST_TOL1); + TEST_SF_VAL(sa, DL[98], +0.0, 28.444589950264378407, TEST_TOL1); + gsl_test(sa, "gsl_sf_legendre_sphPlm_deriv_array(100, 2, 0.5)"); + s += sa; + + sa = 0; + gsl_sf_legendre_sphPlm_deriv_array(100, 5, 0.5, L, DL); + TEST_SF_VAL(sa, DL[0], +0.0, 0.75365677292668202407, TEST_TOL1); + TEST_SF_VAL(sa, DL[1], +0.0, 0.54346962777757450534, TEST_TOL1); + TEST_SF_VAL(sa, DL[2], +0.0, -0.98309969029001383773, TEST_TOL1); + TEST_SF_VAL(sa, DL[3], +0.0, -2.7728270988954534293, TEST_TOL1); + TEST_SF_VAL(sa, DL[10], +0.0, -5.7407133315443482193, TEST_TOL1); + TEST_SF_VAL(sa, DL[95], +0.0, -25.893934624747394561, TEST_TOL1); + gsl_test(sa, "gsl_sf_legendre_sphPlm_deriv_array(100, 5, 0.5)"); + s += sa; + sa = 0; + + gsl_sf_legendre_sphPlm_deriv_array(100, 5, 1.0 - 1.0/1125899906842624.0, L, DL); + TEST_SF_VAL(sa, DL[0], +0.0, 1.7374288379067753301e-22, TEST_TOL1); + TEST_SF_VAL(sa, DL[1], +0.0, 6.2643887625426827113e-22, TEST_TOL1); + TEST_SF_VAL(sa, DL[2], +0.0, 1.6482697200734667281e-21, TEST_TOL1); + TEST_SF_VAL(sa, DL[95], +0.0, 3.9890549466071349506e-15, TEST_TOL2); + gsl_test(sa, "gsl_sf_legendre_sphPlm_deriv_array(100, 5, 1.0 - 2^(-50))"); + s += sa; + + gsl_sf_legendre_sphPlm_deriv_array(100, 5, -1.0 + 1.0/1125899906842624.0, L, DL); + TEST_SF_VAL(sa, DL[0], +0.0, -1.7374288379067753301e-22, TEST_TOL1); + TEST_SF_VAL(sa, DL[1], +0.0, 6.2643887625426827113e-22, TEST_TOL1); + TEST_SF_VAL(sa, DL[2], +0.0, -1.6482697200734667281e-21, TEST_TOL1); + TEST_SF_VAL(sa, DL[95], +0.0, 3.9890549466071349506e-15, TEST_TOL3); + gsl_test(sa, "gsl_sf_legendre_sphPlm_deriv_array(100, 5, -1.0 + 2^(-50))"); + s += sa; + +#endif /* !GSL_DISABLE_DEPRECATED */ + + TEST_SF(s, gsl_sf_conicalP_half_e, (0.0, -0.5, &r), 0.8573827581049917129, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_conicalP_half_e, (0.0, 0.5, &r), 0.8573827581049917129, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_conicalP_half_e, (0.0, 2.0, &r), 0.6062611623284649811, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_conicalP_half_e, (0.0, 100.0, &r), 0.07979045091636735635, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_conicalP_half_e, (10.0, -0.5, &r), 5.345484922591867188e+08, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_conicalP_half_e, (10.0, 0.5, &r), 15137.910380385258370, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_conicalP_half_e, (10.0, 2.0, &r), 0.4992680691891618544, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_conicalP_half_e, (10.0, 100.0, &r), -0.07272008163718195685, TEST_TOL2, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_conicalP_half_e, (200.0, -1.0e-3, &r), 1.3347639529084185010e+136, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_conicalP_half_e, (200.0, 1.0e-8, &r), 1.0928098010940058507e+136, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_conicalP_half_e, (200.0, 0.5, &r), 3.895546021611205442e+90, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_conicalP_half_e, (200.0, 10.0, &r), -0.04308567180833581268, TEST_TOL3, GSL_SUCCESS); + TEST_SF(s, gsl_sf_conicalP_half_e, (200.0, 100.0, &r), -0.04694669186576399194, TEST_TOL3, GSL_SUCCESS); + TEST_SF(s, gsl_sf_conicalP_half_e, (200.0, 1000.0, &r), 0.023698140704121273277, TEST_TOL3, GSL_SUCCESS); + TEST_SF(s, gsl_sf_conicalP_half_e, (200.0, 1.0e+8, &r), -0.00006790983312124277891, TEST_TOL3, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_conicalP_half_e, (1.0e+8, 1.1, &r), 1.1599311133054742944, TEST_SQRT_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_conicalP_half_e, (1.0e+8, 100.0, &r), 0.07971967557381557875, TEST_SQRT_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_conicalP_mhalf_e, (0.0, -0.5, &r), 1.7956982494514644808, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_conicalP_mhalf_e, (0.0, 0.5, &r), 0.8978491247257322404, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_conicalP_mhalf_e, (0.0, 2.0, &r), 0.7984204253272901551, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_conicalP_mhalf_e, (0.0, 100.0, &r), 0.4227531369388072584, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_conicalP_mhalf_e, (10.0, -0.5, &r), 5.345484922591867181e+07, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_conicalP_mhalf_e, (10.0, 0.5, &r), 1513.7910356104985334, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_conicalP_mhalf_e, (10.0, 2.0, &r), 0.03439243987215615642, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_conicalP_mhalf_e, (10.0, 100.0, &r), 0.003283756665952609624, TEST_TOL2, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_conicalP_mhalf_e, (200.0, -0.5, &r), 1.7699538115312304280e+179, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_conicalP_mhalf_e, (200.0, 1.0e-8, &r), 5.464049005470029253e+133, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_conicalP_mhalf_e, (200.0, 0.5, &r), 1.9477730108056027211e+88, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_conicalP_mhalf_e, (200.0, 10.0, &r), 0.0012462575917716355362, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_conicalP_mhalf_e, (200.0, 100.0, &r), -0.0003225881344802625149, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_conicalP_mhalf_e, (200.0, 1000.0, &r), -0.00004330652890886567623, TEST_TOL3, GSL_SUCCESS); + TEST_SF(s, gsl_sf_conicalP_mhalf_e, (200.0, 1.0e+8, &r), 2.0943091278037078483e-07, TEST_TOL3, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_conicalP_mhalf_e, (1.0e+8, 1.1, &r), 2.092320445620989618e-09, 16.0*TEST_SQRT_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_conicalP_mhalf_e, (1.0e+8, 100.0, &r), -3.359967833599016923e-11, 256.0*TEST_SQRT_TOL0, GSL_SUCCESS); + + + TEST_SF(s, gsl_sf_conicalP_0_e, (0.0, -0.5, &r), 1.3728805006183501647, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_conicalP_0_e, (0.0, 0.5, &r), 1.0731820071493643751, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_conicalP_0_e, (0.0, 2.0, &r), 0.9012862993604472987, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_conicalP_0_e, (0.0, 100.0, &r), 0.30091748588199264556, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_conicalP_0_e, (10.0, -0.5, &r), 1.6795592815421804669e+08, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_conicalP_0_e, (10.0, 0.5, &r), 4826.034132009618240, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_conicalP_0_e, (10.0, 2.0, &r), 0.18798468917758716146, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_conicalP_0_e, (10.0, 100.0, &r), -0.008622130749987962529, TEST_TOL2, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_conicalP_0_e, (200.0, -0.5, &r), 2.502194818646823e+180, TEST_TOL4, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_conicalP_0_e, (1000.0, 100.0, &r), 0.0017908817653497715844, TEST_TOL3, GSL_SUCCESS); + TEST_SF(s, gsl_sf_conicalP_0_e, (1000.0, 1000.0, &r), -0.0006566893804926284301, TEST_TOL3, GSL_SUCCESS); + TEST_SF(s, gsl_sf_conicalP_0_e, (1000.0, 1.0e+8, &r), 2.3167213561756390068e-06, TEST_TOL4, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_conicalP_1_e, (0.0, -0.5, &r), 0.4939371126656998499, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_conicalP_1_e, (0.0, 0.5, &r), 0.14933621085538265636, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_conicalP_1_e, (0.0, 2.0, &r), -0.13666874968871549533, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_conicalP_1_e, (0.0, 100.0, &r), -0.10544528203156629098, TEST_TOL2, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_conicalP_1_e, (10.0, -0.5, &r), 1.7253802958788312520e+09, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_conicalP_1_e, (10.0, 0.5, &r), 46781.02294059967988, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_conicalP_1_e, (10.0, 2.0, &r), 0.26613342643657444400, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_conicalP_1_e, (10.0, 100.0, &r), -0.23281959695501029796, TEST_TOL2, GSL_SUCCESS); + + + /* FIXME: Mathematica gets some brain-damaged numbers for + * these x < 0 points. I have checked what I am doing in detail, + * and it must be right because you can do it by summing + * manifestly positive definite quantities. + */ + TEST_SF(s, gsl_sf_conicalP_1_e, (200.0, -0.999, &r), 2.71635193199341135e+270, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_conicalP_1_e, (200.0, -0.9, &r), 4.2952493176812905e+234, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_conicalP_1_e, (200.0, -0.5, &r), 5.01159205956053439e+182, TEST_TOL3, GSL_SUCCESS); + TEST_SF(s, gsl_sf_conicalP_1_e, (200.0, 0.999, &r), 195733.0396081538, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_conicalP_1_e, (200.0, 10.0, &r), -2.9272610662414349553, TEST_TOL2, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_conicalP_1_e, (1000.0, 100.0, &r), -1.7783258105862399857, TEST_TOL6, GSL_SUCCESS); + TEST_SF(s, gsl_sf_conicalP_1_e, (1000.0, 1000.0, &r), 0.4535161075156427179, TEST_TOL4, GSL_SUCCESS); + TEST_SF(s, gsl_sf_conicalP_1_e, (1000.0, 1.0e+8, &r), 0.0009983414549874888478, TEST_SQRT_TOL0, GSL_SUCCESS); + + + TEST_SF(s, gsl_sf_conicalP_sph_reg_e, (2, 1.0, -0.5, &r), 1.6406279287008789526, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_conicalP_sph_reg_e, (10, 1.0, -0.5, &r), 0.000029315266725049129448, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_conicalP_sph_reg_e, (20, 1.0, -0.5, &r), 7.335769429462034431e-15, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_conicalP_sph_reg_e, (30, 1.0, -0.5, &r), 1.3235612394267378871e-26, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_conicalP_sph_reg_e, (10, 1.0, 0.5, &r), 2.7016087199857873954e-10, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_conicalP_sph_reg_e, (20, 1.0, 0.5, &r), 1.1782569701435933399e-24, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_conicalP_sph_reg_e, (30, 1.0, 0.5, &r), 3.636240588303797919e-41, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_conicalP_sph_reg_e, (10, 1.0, 2.0, &r), 2.4934929626284934483e-10, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_conicalP_sph_reg_e, (20, 1.0, 2.0, &r), 1.1284762488012616191e-24, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_conicalP_sph_reg_e, (30, 100.0, 100.0, &r), -1.6757772087159526048e-64, TEST_TOL6, GSL_SUCCESS); + + + TEST_SF(s, gsl_sf_conicalP_cyl_reg_e, (2, 1.0, -0.5, &r), 2.2048510472375258708, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_conicalP_cyl_reg_e, (10, 1.0, -0.5, &r), 0.00007335034531618655690, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_conicalP_cyl_reg_e, (20, 1.0, -0.5, &r), 2.5419860619212164696e-14, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_conicalP_cyl_reg_e, (30, 1.0, -0.5, &r), 5.579714972260536827e-26, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_conicalP_cyl_reg_e, (10, 1.0, 0.5, &r), 1.1674078819646475282e-09, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_conicalP_cyl_reg_e, (20, 1.0, 0.5, &r), 7.066408031229072207e-24, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_conicalP_cyl_reg_e, (30, 1.0, 0.5, &r), 2.6541973286862588488e-40, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_conicalP_cyl_reg_e, (10, 1.0, 2.0, &r), 1.0736109751890863051e-09, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_conicalP_cyl_reg_e, (20, 1.0, 2.0, &r), 6.760965304863386741e-24, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_conicalP_cyl_reg_e, (30, 100.0, 100.0, &r), -4.268753482520651007e-63, TEST_TOL4, GSL_SUCCESS); + + + TEST_SF(s, gsl_sf_legendre_H3d_0_e, (1.0e-06, 1.0e-06, &r), 0.9999999999998333333 , TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_legendre_H3d_0_e, (1.0, 0.0, &r), 1.0 , TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_legendre_H3d_0_e, (1.0, 1.0, &r), 0.7160229153604338713 , TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_legendre_H3d_0_e, (1.0, 100.0, &r), -3.767437313149604566e-44 , TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_legendre_H3d_0_e, (1.0, 500.0, &r), -6.665351935878582205e-218, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_legendre_H3d_0_e, (100.0, 1.0, &r), -0.004308757035378200029 , TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_legendre_H3d_0_e, (100.0, 10.0, &r), 7.508054627912986427e-07 , TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_legendre_H3d_0_e, (1000.0, 1.0, &r), 0.0007036067909088818319 , TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_legendre_H3d_0_e, (1.0e+08, 1.0, &r), 7.927485371429105968e-09 , TEST_TOL3, GSL_SUCCESS); + TEST_SF(s, gsl_sf_legendre_H3d_0_e, (1.0e+08, 100.0, &r), -3.627118904186918957e-52 , 32.0*TEST_SQRT_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_legendre_H3d_1_e, (1.0e-06, 1.0e-06, &r), 3.333333333334222222e-07, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_legendre_H3d_1_e, (1.0, 1.0e-10, &r), 4.714045207910316829e-11, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_legendre_H3d_1_e, (1.0, 1.0, &r), 0.3397013994799344639, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_legendre_H3d_1_e, (1.0, 100.0, &r), -7.200624449531811272e-44, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_legendre_H3d_1_e, (1.0, 500.0, &r), 4.192260336821728677e-218, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_legendre_H3d_1_e, (100.0, 0.01, &r), 0.30117664944267412324 , TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_legendre_H3d_1_e, (100.0, 1.0, &r), -0.007393833425336299309 , TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_legendre_H3d_1_e, (100.0, 10.0, &r), -5.031062029821254982e-07 , TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_legendre_H3d_1_e, (1000.0, 0.001, &r), 0.30116875865090396421 , TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_legendre_H3d_1_e, (1000.0, 1.0, &r), -0.0004776144516074971885 , TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_legendre_H3d_1_e, (1.0e+08, 1.0e-08, &r), 0.30116867893975679722 , TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_legendre_H3d_1_e, (1.0e+08, 1.0, &r), 3.0921097047369081582e-09, TEST_TOL4, GSL_SUCCESS); + TEST_SF(s, gsl_sf_legendre_H3d_1_e, (1.0e+08, 100.0, &r), -6.496142701296286936e-52 , 32.0*TEST_SQRT_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_legendre_H3d_e, (5, 1.0e-06, 1.0e-06, &r), 1.1544011544013627977e-32, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_legendre_H3d_e, (5, 1.0, 1.0e-10, &r), 2.0224912016958766992e-52, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_legendre_H3d_e, (5, 1.0, 1.0, &r), 0.011498635037491577728, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_legendre_H3d_e, (5, 1.0, 5.0, &r), 0.0020696945662545205776, TEST_TOL4, GSL_SUCCESS); + TEST_SF(s, gsl_sf_legendre_H3d_e, (5, 1.0, 7.0, &r), -0.0017555303787488993676, TEST_TOL4, GSL_SUCCESS); + TEST_SF(s, gsl_sf_legendre_H3d_e, (5, 1.0, 10.0, &r), 0.00008999979724504887101, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_legendre_H3d_e, (5, 1.0, 100.0, &r), -4.185397793298567945e-44, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_legendre_H3d_e, (5, 1.0, 500.0, &r), 1.4235113901091961263e-217, TEST_TOL3, GSL_SUCCESS); + TEST_SF(s, gsl_sf_legendre_H3d_e, (5, 100.0, 0.001, &r), 9.642762597222417946e-10, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_legendre_H3d_e, (5, 100.0, 0.002, &r), 3.0821201254308036109e-08, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_legendre_H3d_e, (5, 100.0, 0.01, &r), 0.00009281069019005840532, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_legendre_H3d_e, (5, 100.0, 1.0, &r), -0.008043100696178624653, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_legendre_H3d_e, (5, 100.0, 10.0, &r), -3.927678432813974207e-07, TEST_TOL3, GSL_SUCCESS); + TEST_SF(s, gsl_sf_legendre_H3d_e, (5, 1000.0, 0.001, &r), 0.00009256365284253254503, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_legendre_H3d_e, (5, 1000.0, 0.01, &r), -0.05553733815473079983, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_legendre_H3d_e, (5, 1.0e+08, 1.0e-08, &r), 0.00009256115861125841299, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_legendre_H3d_e, (5, 1.0e+08, 100.0, &r), -6.496143209092860765e-52 , 128.0*TEST_SQRT_TOL0, GSL_SUCCESS); + +#if FIXME + sa = 0; + gsl_sf_legendre_H3d_array(100, 1.0, 3.0, L); + TEST_SF_VAL(sa, L[0], +0.0, gsl_sf_legendre_H3d(0, 1.0, 3.0), 1.0e-12); + TEST_SF_VAL(sa, L[1], +0.0, gsl_sf_legendre_H3d(1, 1.0, 3.0), 1.0e-12); + TEST_SF_VAL(sa, L[10], +0.0, gsl_sf_legendre_H3d(10, 1.0, 3.0), 1.0e-12); + TEST_SF_VAL(sa, L[100], +0.0, gsl_sf_legendre_H3d(100, 1.0, 3.0), 1.0e-12); + gsl_test(sa, " gsl_sf_legendre_H3d_array(100, 1.0, 3.0)"); + s += sa; +#endif + + /* x = -1 + 2^-16 */ + TEST_SF(s, gsl_sf_legendre_Q0_e, (-0.9999847412109375, &r), -5.8917472200477175158028143531855, TEST_TOL4, GSL_SUCCESS); + TEST_SF(s, gsl_sf_legendre_Q0_e, (-0.5, &r), -0.5493061443340548457, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_legendre_Q0_e, (-1e-10, &r), -1.000000000000000000e-10, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_legendre_Q0_e, (0.0, &r), 0.0, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_legendre_Q0_e, (1e-10, &r), 1.000000000000000000e-10, TEST_TOL0, GSL_SUCCESS); + /* x = 1 - 2^-16 */ + TEST_SF(s, gsl_sf_legendre_Q0_e, (0.9999847412109375, &r), 5.8917472200477175158028143531855, TEST_TOL4, GSL_SUCCESS); + /* x = 1 + 2^-16 */ + TEST_SF(s, gsl_sf_legendre_Q0_e, ( 1.0000152587890625, &r), 5.8917548494422489138325509750429, TEST_TOL4, GSL_SUCCESS); + TEST_SF(s, gsl_sf_legendre_Q0_e, ( 1.5, &r), 0.8047189562170501873, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_legendre_Q0_e, ( 9.99, &r), 0.1004364599660005447, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_legendre_Q0_e, ( 10.0, &r), 0.1003353477310755806, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_legendre_Q0_e, ( 10.01, &r), 0.1002344395571710243, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_legendre_Q0_e, ( 100, &r), 0.010000333353334762015, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_legendre_Q0_e, ( 1e10, &r), 1.000000000000000000e-10, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_legendre_Q1_e, (-0.9999847412109375, &r), 4.8916573191196772369, TEST_TOL4, GSL_SUCCESS); + TEST_SF(s, gsl_sf_legendre_Q1_e, (-0.5, &r), -0.7253469278329725772, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_legendre_Q1_e, (-0.01, &r), -0.9998999966664666524, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_legendre_Q1_e, (-1e-10, &r), -0.999999999999999999, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_legendre_Q1_e, (0.0, &r), -1.0, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_legendre_Q1_e, (1e-10, &r), -0.999999999999999999, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_legendre_Q1_e, (0.0001, &r), -0.9999999899999999667, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_legendre_Q1_e, (0.01, &r), -0.9998999966664666524, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_legendre_Q1_e, (0.5, &r), -0.7253469278329725772, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_legendre_Q1_e, (0.9999847412109375, &r), 4.8916573191196772369, TEST_TOL4, GSL_SUCCESS); + TEST_SF(s, gsl_sf_legendre_Q1_e, (1.0000152587890625, &r), 4.8918447504867045145, TEST_TOL4, GSL_SUCCESS); + TEST_SF(s, gsl_sf_legendre_Q1_e, ( 1.5, &r), 0.20707843432557528095, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_legendre_Q1_e, ( 9.99, &r), 3.360235060345441639e-3, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_legendre_Q1_e, ( 10.0, &r), 3.353477310755806357e-3, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_legendre_Q1_e, ( 10.01, &r), 3.346739967281953346e-3, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_legendre_Q1_e, ( 100.0, &r), 3.333533347620158821e-5, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_legendre_Q1_e, ( 1e10, &r), 3.333333333333333333e-21, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_legendre_Ql_e, (10, -0.5, &r), -0.29165813966586752393, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_legendre_Ql_e, (10, 0.5, &r), 0.29165813966586752393, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_legendre_Ql_e, (10, 1.5, &r), 0.000014714232718207477406, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_legendre_Ql_e, (100, -0.5, &r), -0.09492507395207282096, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_legendre_Ql_e, (100, 0.5, &r), 0.09492507395207282096, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_legendre_Ql_e, (100, 1.5, &r), 1.1628163435044121988e-43, TEST_TOL2, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_legendre_Ql_e, (1000, -0.5, &r), -0.030105074974005303500, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_legendre_Ql_e, (1000, 0.5, &r), 0.030105074974005303500, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_legendre_Ql_e, (1000, 1.1, &r), 1.0757258447825356443e-194, TEST_TOL3, GSL_SUCCESS); + + /* test associated legendre functions */ + { + size_t l; + + for (l = 0; l <= 10; ++l) + test_legendre_all(l); + + test_legendre_all(140); + test_legendre_all(1000); + /*test_legendre_all(2700);*/ + } + + return s; +} diff --git a/gsl-2.5/specfunc/test_mathieu.c b/gsl-2.5/specfunc/test_mathieu.c new file mode 100644 index 00000000..fc3f90f5 --- /dev/null +++ b/gsl-2.5/specfunc/test_mathieu.c @@ -0,0 +1,212 @@ +/* specfunc/test_mathieu.c + * + * Copyright (C) 2003 Lowell Johnson + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +/* Author: L. Johnson */ + +#include +#include +#include "test_sf.h" + +#define NVAL 100 + +static double c[NVAL]; + +int test_mathieu(void) +{ + gsl_sf_result r; + gsl_sf_mathieu_workspace *work; + int s = 0; + int sa; + + TEST_SF(s, gsl_sf_mathieu_ce_e, (0, 0.0, 0.0, &r), + 0.7071067811865475, TEST_SNGL, GSL_SUCCESS); + TEST_SF(s, gsl_sf_mathieu_ce_e, (0, 0.0, M_PI_2, &r), + 0.7071067811865475, TEST_SNGL, GSL_SUCCESS); + TEST_SF(s, gsl_sf_mathieu_ce_e, (0, 5.0, 0.0, &r), + 0.04480018165188902, TEST_SNGL, GSL_SUCCESS); + TEST_SF(s, gsl_sf_mathieu_ce_e, (0, 5.0, M_PI_2, &r), + 1.334848674698019, TEST_SNGL, GSL_SUCCESS); + TEST_SF(s, gsl_sf_mathieu_ce_e, (0, 10.0, 0.0, &r), + 0.007626517570935782, TEST_SNGL, GSL_SUCCESS); + TEST_SF(s, gsl_sf_mathieu_ce_e, (0, 10.0, M_PI_2, &r), + 1.468660470712856, TEST_SNGL, GSL_SUCCESS); + TEST_SF(s, gsl_sf_mathieu_ce_e, (0, 15.0, 0.0, &r), + 0.001932508315204592, TEST_SNGL, GSL_SUCCESS); + TEST_SF(s, gsl_sf_mathieu_ce_e, (0, 15.0, M_PI_2, &r), + 1.550108146686649, TEST_SNGL, GSL_SUCCESS); + TEST_SF(s, gsl_sf_mathieu_ce_e, (0, 20.0, 0.0, &r), + 0.0006037438292242197, TEST_SNGL, GSL_SUCCESS); + TEST_SF(s, gsl_sf_mathieu_ce_e, (0, 20.0, M_PI_2, &r), + 1.609890857395926, TEST_SNGL, GSL_SUCCESS); + TEST_SF(s, gsl_sf_mathieu_ce_e, (0, 25.0, 0.0, &r), + 0.0002158630184146612, TEST_SNGL, GSL_SUCCESS); + TEST_SF(s, gsl_sf_mathieu_ce_e, (0, 25.0, M_PI_2, &r), + 1.657510298323475, TEST_SNGL, GSL_SUCCESS); + TEST_SF(s, gsl_sf_mathieu_ce_e, (1, 0.0, 0.0, &r), + 1.00000000, TEST_SNGL, GSL_SUCCESS); + TEST_SF(s, gsl_sf_mathieu_ce_e, (1, 5.0, 0.0, &r), + 0.2565428793223637, TEST_SNGL, GSL_SUCCESS); + TEST_SF(s, gsl_sf_mathieu_ce_e, (1, 10.0, 0.0, &r), + 0.05359874774717657, TEST_SNGL, GSL_SUCCESS); + TEST_SF(s, gsl_sf_mathieu_ce_e, (1, 15.0, 0.0, &r), + 0.01504006645382623, TEST_SNGL, GSL_SUCCESS); + TEST_SF(s, gsl_sf_mathieu_ce_e, (1, 20.0, 0.0, &r), + 0.005051813764712904, TEST_SNGL, GSL_SUCCESS); + TEST_SF(s, gsl_sf_mathieu_ce_e, (1, 25.0, 0.0, &r), + 0.001911051506657645, TEST_SNGL, GSL_SUCCESS); + TEST_SF(s, gsl_sf_mathieu_se_e, (1, 0.0, M_PI_2, &r), + 1.0000000, TEST_SNGL, GSL_SUCCESS); + TEST_SF(s, gsl_sf_mathieu_se_e, (1, 5.0, M_PI_2, &r), + 1.337433887022345, TEST_SNGL, GSL_SUCCESS); + TEST_SF(s, gsl_sf_mathieu_se_e, (1, 10.0, M_PI_2, &r), + 1.468755664102938, TEST_SNGL, GSL_SUCCESS); + TEST_SF(s, gsl_sf_mathieu_se_e, (1, 15.0, M_PI_2, &r), + 1.550115074357552, TEST_SNGL, GSL_SUCCESS); + TEST_SF(s, gsl_sf_mathieu_se_e, (1, 20.0, M_PI_2, &r), + 1.609891592603772, TEST_SNGL, GSL_SUCCESS); + TEST_SF(s, gsl_sf_mathieu_se_e, (1, 25.0, M_PI_2, &r), + 1.657510398374516, TEST_SNGL, GSL_SUCCESS); + TEST_SF(s, gsl_sf_mathieu_ce_e, (2, 0.0, 0.0, &r), + 1.00000000, TEST_SNGL, GSL_SUCCESS); + TEST_SF(s, gsl_sf_mathieu_ce_e, (2, 0.0, M_PI_2, &r), + -1.00000000, TEST_SNGL, GSL_SUCCESS); + TEST_SF(s, gsl_sf_mathieu_ce_e, (2, 5.0, 0.0, &r), + 0.7352943084006845, TEST_SNGL, GSL_SUCCESS); + TEST_SF(s, gsl_sf_mathieu_ce_e, (2, 5.0, M_PI_2, &r), + -0.7244881519676682, TEST_SNGL, GSL_SUCCESS); + TEST_SF(s, gsl_sf_mathieu_ce_e, (2, 10.0, 0.0, &r), + 0.2458883492913189, TEST_SNGL, GSL_SUCCESS); + TEST_SF(s, gsl_sf_mathieu_ce_e, (2, 10.0, M_PI_2, &r), + -0.9267592641263211, TEST_SNGL, GSL_SUCCESS); + TEST_SF(s, gsl_sf_mathieu_ce_e, (2, 15.0, 0.0, &r), + 0.07879282784639313, TEST_SNGL, GSL_SUCCESS); + TEST_SF(s, gsl_sf_mathieu_ce_e, (2, 15.0, M_PI_2, &r), + -1.019966226030262, TEST_SNGL, GSL_SUCCESS); + TEST_SF(s, gsl_sf_mathieu_ce_e, (2, 20.0, 0.0, &r), + 0.02864894314707431, TEST_SNGL, GSL_SUCCESS); + TEST_SF(s, gsl_sf_mathieu_ce_e, (2, 20.0, M_PI_2, &r), + -1.075293228779687, TEST_SNGL, GSL_SUCCESS); + TEST_SF(s, gsl_sf_mathieu_ce_e, (2, 25.0, 0.0, &r), + 0.0115128663308875, TEST_SNGL, GSL_SUCCESS); + TEST_SF(s, gsl_sf_mathieu_ce_e, (2, 25.0, M_PI_2, &r), + -1.116278953295253, TEST_SNGL, GSL_SUCCESS); + TEST_SF(s, gsl_sf_mathieu_ce_e, (5, 0.0, 0.0, &r), + 1.00000000, TEST_SNGL, GSL_SUCCESS); + TEST_SF(s, gsl_sf_mathieu_ce_e, (5, 5.0, 0.0, &r), + 1.12480725063848, TEST_SNGL, GSL_SUCCESS); + TEST_SF(s, gsl_sf_mathieu_ce_e, (5, 10.0, 0.0, &r), + 1.258019941308287, TEST_SNGL, GSL_SUCCESS); + TEST_SF(s, gsl_sf_mathieu_ce_e, (5, 15.0, 0.0, &r), + 1.193432230413072, TEST_SNGL, GSL_SUCCESS); + TEST_SF(s, gsl_sf_mathieu_ce_e, (5, 20.0, 0.0, &r), + 0.9365755314226215, TEST_SNGL, GSL_SUCCESS); + TEST_SF(s, gsl_sf_mathieu_ce_e, (5, 25.0, 0.0, &r), + 0.6106943100506986, TEST_SNGL, GSL_SUCCESS); + TEST_SF(s, gsl_sf_mathieu_se_e, (5, 0.0, M_PI_2, &r), + 1.0000000, TEST_SNGL, GSL_SUCCESS); + TEST_SF(s, gsl_sf_mathieu_se_e, (5, 5.0, M_PI_2, &r), + 0.9060779302023551, TEST_SNGL, GSL_SUCCESS); + TEST_SF(s, gsl_sf_mathieu_se_e, (5, 10.0, M_PI_2, &r), + 0.8460384335355106, TEST_SNGL, GSL_SUCCESS); + TEST_SF(s, gsl_sf_mathieu_se_e, (5, 15.0, M_PI_2, &r), + 0.837949340012484, TEST_SNGL, GSL_SUCCESS); + TEST_SF(s, gsl_sf_mathieu_se_e, (5, 20.0, M_PI_2, &r), + 0.8635431218533667, TEST_SNGL, GSL_SUCCESS); + TEST_SF(s, gsl_sf_mathieu_se_e, (5, 25.0, M_PI_2, &r), + 0.8992683245108413, TEST_SNGL, GSL_SUCCESS); + TEST_SF(s, gsl_sf_mathieu_ce_e, (10, 0.0, 0.0, &r), + 1.00000000, TEST_SNGL, GSL_SUCCESS); + TEST_SF(s, gsl_sf_mathieu_ce_e, (10, 0.0, M_PI_2, &r), + -1.00000000, TEST_SNGL, GSL_SUCCESS); + TEST_SF(s, gsl_sf_mathieu_ce_e, (10, 5.0, 0.0, &r), + 1.025995027089438, TEST_SNGL, GSL_SUCCESS); + TEST_SF(s, gsl_sf_mathieu_ce_e, (10, 5.0, M_PI_2, &r), + -0.975347487235964, TEST_SNGL, GSL_SUCCESS); + TEST_SF(s, gsl_sf_mathieu_ce_e, (10, 10.0, 0.0, &r), + 1.053815992100935, TEST_SNGL, GSL_SUCCESS); + TEST_SF(s, gsl_sf_mathieu_ce_e, (10, 10.0, M_PI_2, &r), + -0.9516453181789554, TEST_SNGL, GSL_SUCCESS); + TEST_SF(s, gsl_sf_mathieu_ce_e, (10, 15.0, 0.0, &r), + 1.084106311839221, TEST_SNGL, GSL_SUCCESS); + TEST_SF(s, gsl_sf_mathieu_ce_e, (10, 15.0, M_PI_2, &r), + -0.9285480638845388, TEST_SNGL, GSL_SUCCESS); + TEST_SF(s, gsl_sf_mathieu_ce_e, (10, 20.0, 0.0, &r), + 1.117788631259397, TEST_SNGL, GSL_SUCCESS); + TEST_SF(s, gsl_sf_mathieu_ce_e, (10, 20.0, M_PI_2, &r), + -0.9057107845940974, TEST_SNGL, GSL_SUCCESS); + TEST_SF(s, gsl_sf_mathieu_ce_e, (10, 25.0, 0.0, &r), + 1.156239918632239, TEST_SNGL, GSL_SUCCESS); + TEST_SF(s, gsl_sf_mathieu_ce_e, (10, 25.0, M_PI_2, &r), + -0.8826919105636903, TEST_SNGL, GSL_SUCCESS); + TEST_SF(s, gsl_sf_mathieu_ce_e, (15, 0.0, 0.0, &r), + 1.00000000, TEST_SNGL, GSL_SUCCESS); + TEST_SF(s, gsl_sf_mathieu_ce_e, (15, 5.0, 0.0, &r), + 1.011293732529566, TEST_SNGL, GSL_SUCCESS); + TEST_SF(s, gsl_sf_mathieu_ce_e, (15, 10.0, 0.0, &r), + 1.022878282438181, TEST_SNGL, GSL_SUCCESS); + TEST_SF(s, gsl_sf_mathieu_ce_e, (15, 15.0, 0.0, &r), + 1.034793652236873, TEST_SNGL, GSL_SUCCESS); + TEST_SF(s, gsl_sf_mathieu_ce_e, (15, 20.0, 0.0, &r), + 1.047084344162887, TEST_SNGL, GSL_SUCCESS); + TEST_SF(s, gsl_sf_mathieu_ce_e, (15, 25.0, 0.0, &r), + 1.059800441813937, TEST_SNGL, GSL_SUCCESS); + TEST_SF(s, gsl_sf_mathieu_se_e, (15, 0.0, M_PI_2, &r), + -1.0000000, TEST_SNGL, GSL_SUCCESS); + TEST_SF(s, gsl_sf_mathieu_se_e, (15, 5.0, M_PI_2, &r), + -0.9889607027406357, TEST_SNGL, GSL_SUCCESS); + TEST_SF(s, gsl_sf_mathieu_se_e, (15, 10.0, M_PI_2, &r), + -0.9781423471832157, TEST_SNGL, GSL_SUCCESS); + TEST_SF(s, gsl_sf_mathieu_se_e, (15, 15.0, M_PI_2, &r), + -0.9675137031854538, TEST_SNGL, GSL_SUCCESS); + TEST_SF(s, gsl_sf_mathieu_se_e, (15, 20.0, M_PI_2, &r), + -0.9570452540612817, TEST_SNGL, GSL_SUCCESS); + TEST_SF(s, gsl_sf_mathieu_se_e, (15, 25.0, M_PI_2, &r), + -0.9467086958780897, TEST_SNGL, GSL_SUCCESS); + + work = gsl_sf_mathieu_alloc(NVAL, 20.0); + sa = 0; + gsl_sf_mathieu_ce_array(0, 5, 0.0, M_PI_2, work, c); + sa += (test_sf_frac_diff(c[0], 0.7071067811865475) > TEST_SNGL); + sa += (test_sf_frac_diff(c[2], -1.0) > TEST_SNGL); + sa += (test_sf_frac_diff(c[4], 1.0) > TEST_SNGL); + gsl_test(sa, "gsl_sf_mathieu_ce_array"); + s += sa; + + sa = 0; + gsl_sf_mathieu_ce_array(0, 15, 20.0, 0.0, work, c); + sa += (test_sf_frac_diff(c[0], 0.0006037438292242197) > TEST_SNGL); + sa += (test_sf_frac_diff(c[1], 0.005051813764712904) > TEST_SNGL); + sa += (test_sf_frac_diff(c[2], 0.02864894314707431) > TEST_SNGL); + sa += (test_sf_frac_diff(c[5], 0.9365755314226215) > TEST_SNGL); + sa += (test_sf_frac_diff(c[10], 1.117788631259397) > TEST_SNGL); + sa += (test_sf_frac_diff(c[15], 1.047084344162887) > TEST_SNGL); + gsl_test(sa, "gsl_sf_mathieu_ce_array"); + s += sa; + + sa = 0; + gsl_sf_mathieu_se_array(1, 15, 20.0, M_PI_2, work, c); + sa += (test_sf_frac_diff(c[0], 1.609891592603772) > TEST_SNGL); + sa += (test_sf_frac_diff(c[4], 0.8635431218533667) > TEST_SNGL); + sa += (test_sf_frac_diff(c[14], -0.9570452540612817) > TEST_SNGL); + gsl_test(sa, "gsl_sf_mathieu_se_array"); + s += sa; + + gsl_sf_mathieu_free(work); + return s; +} diff --git a/gsl-2.5/specfunc/test_sf.c b/gsl-2.5/specfunc/test_sf.c new file mode 100644 index 00000000..f3eff9d4 --- /dev/null +++ b/gsl-2.5/specfunc/test_sf.c @@ -0,0 +1,2770 @@ +/* specfunc/test_sf.c + * + * Copyright (C) 2007 Brian Gough + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2004 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "test_sf.h" + + +double +test_sf_frac_diff(double x1, double x2) +{ + if(x1 == 0.0 && x2 == 0.0) { + return 0.0; + } + else if (x1 == 0.0) { + return fabs(x2); + } else if(x1 <= DBL_MAX && x2 <= DBL_MAX && (x1 + x2 != 0.0)) { + return fabs((x1-x2)/(x1+x2)); + } + else { + return 1.0; + } +} + + +/* Check a result against a given value and tolerance. + */ +int +test_sf_check_result(char * message_buff, gsl_sf_result r, double val, double tol) +{ + int s = 0; + double f = 0, d = 0; + + if (gsl_isnan(r.val) || gsl_isnan(val)) + { + s = (gsl_isnan(r.val) != gsl_isnan(val)) ? TEST_SF_INCONS : s; + } + else if (gsl_isinf(r.val) || gsl_isinf(val)) + { + s = (gsl_isinf(r.val) != gsl_isinf(val)) ? TEST_SF_INCONS : s; + } + else + { + f = test_sf_frac_diff(val, r.val); + d = fabs(val - r.val); + + if(d > 2.0 * TEST_SIGMA * r.err) s |= TEST_SF_INCONS; + if(r.err < 0.0) s |= TEST_SF_ERRNEG; + if(gsl_isinf(r.err)) s |= TEST_SF_ERRBAD; +#if TEST_EXCESSIVE_ERROR + if(d > 0 && r.err > 1e4 * fabs(val)*tol) s |= TEST_SF_ERRBIG; +#endif + if(f > TEST_FACTOR * tol) s |= TEST_SF_TOLBAD; + } + + if(s != 0) { + char buff[2048]; + sprintf(buff, " expected: %20.16e\n", val); + strcat(message_buff, buff); + sprintf(buff, " obtained: %20.16e +/- %.16e (rel=%g)\n", r.val, r.err, r.err/(fabs(r.val) + r.err)); + strcat(message_buff, buff); + sprintf(buff, " fracdiff: %20.16e\n", f); + strcat(message_buff, buff); + sprintf(buff, " tolerance: %20.16e\n", tol); + strcat(message_buff, buff); + } + + if(s & TEST_SF_INCONS) { + strcat(message_buff, " value/expected not consistent within reported error\n"); + } + if(s & TEST_SF_ERRNEG) { + strcat(message_buff, " reported error negative\n"); + } + if(s & TEST_SF_ERRBAD) { + strcat(message_buff, " reported error is bad\n"); + } + if(s & TEST_SF_ERRBIG) { + strcat(message_buff, " reported error is much too big\n"); + } + if(s & TEST_SF_TOLBAD) { + strcat(message_buff, " value not within tolerance of expected value\n"); + } + + return s; +} + +/* Check a result against a given value and tolerance. + */ +int +test_sf_check_e10(char * message_buff, int e10, int e10_in) +{ + int s = 0; + + if (e10 != e10_in) + { + s = TEST_SF_EXPBAD; + } + + if(s != 0) { + char buff[2048]; + sprintf(buff, " expected exponent: 10^%d\n", e10_in); + strcat(message_buff, buff); + sprintf(buff, " obtained exponent: 10^%d", e10); + strcat(message_buff, buff); + } + + if(s & TEST_SF_EXPBAD) { + strcat(message_buff, " exponent is incorrect\n"); + } + + return s; +} + +int +test_sf_check_val(char * message_buff, double rval, double val, double tol) +{ + int s = 0; + double f = test_sf_frac_diff(val, rval); + + if(f > TEST_FACTOR * tol) s |= TEST_SF_TOLBAD; + + if(s != 0) { + char buff[2048]; + sprintf(buff, " expected: %20.16e\n", val); + strcat(message_buff, buff); + sprintf(buff, " obtained: %20.16e\n", rval); + strcat(message_buff, buff); + sprintf(buff, " fracdiff: %20.16e\n", f); + strcat(message_buff, buff); + } + + if(s & TEST_SF_TOLBAD) { + strcat(message_buff, " value not within tolerance of expected value\n"); + } + + return s; +} + + +/* Relax the condition on the agreement and on the usefulness + * of the error estimate. + */ +int +test_sf_check_result_relax(char * message_buff, gsl_sf_result r, double val, double tol) +{ + int s = 0; + double f = test_sf_frac_diff(val, r.val); + + if(f > GSL_MAX_DBL(TEST_SNGL, TEST_FACTOR * tol)) s |= TEST_SF_INCONS; + if(r.err < 0.0) s |= TEST_SF_ERRNEG; + if(gsl_isinf(r.err)) s |= TEST_SF_ERRBAD; + if(f > TEST_FACTOR * tol) s |= TEST_SF_TOLBAD; + + if(s != 0) { + char buff[2048]; + sprintf(buff, " expected: %20.16e\n", val); + strcat(message_buff, buff); + sprintf(buff, " obtained: %20.16e +/- %.16e (rel=%g)\n", r.val, r.err, r.err/(fabs(r.val) + r.err)); + strcat(message_buff, buff); + sprintf(buff, " fracdiff: %20.16e\n", f); + strcat(message_buff, buff); + } + + if(s & TEST_SF_INCONS) { + strcat(message_buff, " value/expected not consistent MAX(tol,SINGLE_PREC)\n"); + } + if(s & TEST_SF_ERRNEG) { + strcat(message_buff, " reported error negative\n"); + } + if(s & TEST_SF_ERRBAD) { + strcat(message_buff, " reported error is bad\n"); + } + if(s & TEST_SF_TOLBAD) { + strcat(message_buff, " value not within tolerance of expected value\n"); + } + + return s; +} + + +/* Check a return value. + */ +int +test_sf_check_return(char * message_buff, int val_return, int expected_return) +{ + if(val_return != expected_return) { + char buff[256]; + sprintf(buff, " unexpected return code: %d\n", val_return); + strcat(message_buff, buff); + return TEST_SF_RETBAD; + } + else { + return 0; + } +} + + +int +test_sf (gsl_sf_result r, double val_in, double tol, int status, + int expect_return, const char * desc) +{ + char message_buff[4096]; + int local_s = 0; + + message_buff[0] = '\0'; + + local_s |= test_sf_check_result(message_buff, r, val_in, tol); + local_s |= test_sf_check_return(message_buff, status, expect_return); + + gsl_test(local_s, desc); + if(local_s != 0) { + /* printf(" %s %d\n", __FILE__, __LINE__); */ + printf("%s", message_buff); + printf(" %22.18e %22.18e\n", r.val, r.err); + } + return local_s; +} + +int +test_sf_e10 (gsl_sf_result_e10 re, double val_in, int e10_in, double tol, int status, + int expect_return, const char * desc) +{ + char message_buff[4096]; + int local_s = 0; + gsl_sf_result r; + r.val = re.val; r.err = re.err; + + message_buff[0] = '\0'; + + local_s |= test_sf_check_result(message_buff, r, val_in, tol); + local_s |= test_sf_check_e10(message_buff, re.e10, e10_in); + local_s |= test_sf_check_return(message_buff, status, expect_return); + + gsl_test(local_s, desc); + if(local_s != 0) { + /* printf(" %s %d\n", __FILE__, __LINE__); */ + printf("%s", message_buff); + printf(" %22.18e %22.18e 10^%d\n", re.val, re.err, re.e10); + } + return local_s; +} + + +int +test_sf_val (double val, double val_in, double tol, const char * desc) +{ + char message_buff[4096]; + int local_s = 0; + + message_buff[0] = '\0'; + + local_s |= test_sf_check_val(message_buff, val, val_in, tol); + + gsl_test(local_s, desc); + if(local_s != 0) { + /* printf(" %s %d\n", __FILE__, __LINE__); */ + printf("%s", message_buff); + printf(" %22.18e\n", val); + } + return local_s; +} + + +int +test_sf_rlx (gsl_sf_result r, double val_in, double tol, int status, + int expect_return, const char * desc) +{ + char message_buff[4096]; + int local_s = 0; + + message_buff[0] = '\0'; + + local_s |= test_sf_check_result_relax(message_buff, r, val_in, tol); + local_s |= test_sf_check_return(message_buff, status, expect_return); + + gsl_test(local_s, desc); + if(local_s != 0) { + /* printf(" %s %d\n", __FILE__, __LINE__); */ + printf("%s", message_buff); + printf(" %22.18e %22.18e\n", r.val, r.err); + } + return local_s; +} + + +int +test_sf_2 (gsl_sf_result r1, double val1, double tol1, + gsl_sf_result r2, double val2, double tol2, + int status, int expect_return, const char * desc) +{ + char message_buff[4096]; + int local_s = 0; + + message_buff[0] = '\0'; + + local_s |= test_sf_check_result(message_buff, r1, val1, tol1); + local_s |= test_sf_check_result(message_buff, r2, val2, tol2); + local_s |= test_sf_check_return(message_buff, status, expect_return); + + gsl_test(local_s, desc); + if(local_s != 0) { + /* printf(" %s %d\n", __FILE__, __LINE__); */ + printf("%s", message_buff); + printf(" %22.18e %22.18e\n", r1.val, r1.err); + printf(" %22.18e %22.18e\n", r2.val, r2.err); + } + return local_s; +} + +int +test_sf_sgn (gsl_sf_result r, double sgn, double val_in, double tol, double expect_sgn, int status, + int expect_return, const char * desc) +{ + char message_buff[4096]; + gsl_sf_result local_r; + int local_s = 0; + + message_buff[0] = '\0'; + + local_r.val = sgn; + local_r.err = 0.0; + local_s |= test_sf_check_result(message_buff, r, val_in, tol); + local_s |= test_sf_check_result(message_buff, local_r, expect_sgn, 0.0); + local_s |= test_sf_check_return(message_buff, status, expect_return); + + gsl_test(local_s, desc); + if(local_s != 0) { + /* printf(" %s %d\n", __FILE__, __LINE__); */ + printf("%s", message_buff); + printf(" %22.18e %22.18e\n", r.val, r.err); + } + return local_s; +} + +int test_clausen(void) +{ + gsl_sf_result r; + int s = 0; + + TEST_SF(s, gsl_sf_clausen_e, (M_PI/20.0, &r), 0.4478882448133546, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_clausen_e, (M_PI/6.0, &r), 0.8643791310538927, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_clausen_e, (M_PI/3.0, &r), 1.0149416064096535, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_clausen_e, ( 2.0*M_PI + M_PI/3.0, &r), 1.0149416064096535, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_clausen_e, (100.0*M_PI + M_PI/3.0, &r), 1.0149416064096535, TEST_TOL0, GSL_SUCCESS); + + return s; +} + + +int test_coupling(void) +{ + gsl_sf_result r; + int s = 0; + + /* Test 3j */ + + TEST_SF(s, gsl_sf_coupling_3j_e, (0, 1, 1, 0, 1, -1, &r), sqrt(1.0/2.0), TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_coupling_3j_e, (1, 1, 2, 1, -1, 0, &r), sqrt(1.0/6.0), TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_coupling_3j_e, (2, 4, 6, 0, 2, -2, &r), sqrt(8.0/105.0), TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_coupling_3j_e, (4, 4, 8, 0, 0, 0, &r), sqrt(2.0/35.0), TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_coupling_3j_e, (4, 4, 8, 2, -2, 0, &r), 2.0/3.0*sqrt(2.0/35.0), TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_coupling_3j_e, (4, 4, 8, 4, -4, 0, &r), 1.0/(3.0*sqrt(70.0)), TEST_TOL2, GSL_SUCCESS); + + /* Test 3j error checking */ + + TEST_SF(s, gsl_sf_coupling_3j_e, (-1, 1, 2, 1, -1, 0, &r), GSL_NAN, GSL_NAN, GSL_EDOM); + TEST_SF(s, gsl_sf_coupling_3j_e, (1, -1, 2, 1, -1, 0, &r), GSL_NAN, GSL_NAN, GSL_EDOM); + TEST_SF(s, gsl_sf_coupling_3j_e, (1, 1, -2, 1, -1, 0, &r), GSL_NAN, GSL_NAN, GSL_EDOM); + + /* Test |m_i|<=j_i */ + + TEST_SF(s, gsl_sf_coupling_3j_e, (1, 1, 2, 2, -1, 0, &r), 0, 0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_coupling_3j_e, (1, 1, 2, 1, -2, 0, &r), 0, 0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_coupling_3j_e, (1, 1, 2, 1, -1, 3, &r), 0, 0, GSL_SUCCESS); + + /* Test triangle condition j1 + j2 >= j, j >= j2 - j1, j>= j1 - j2 */ + + TEST_SF(s, gsl_sf_coupling_3j_e, (1, 1, 3, 1, -1, 0, &r), 0, 0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_coupling_3j_e, (1, 4, 2, 1, -1, 0, &r), 0, 0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_coupling_3j_e, (4, 1, 2, 1, -1, 0, &r), 0, 0, GSL_SUCCESS); + + /* Test m1=m2=m3=0 with j1+j2+j3=odd*/ + + TEST_SF(s, gsl_sf_coupling_3j_e, (2*13, 2*13, 2*13, 0, 0, 0, &r), 0, 0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_coupling_3j_e, (2*2, 2*17, 2*18, 0, 0, 0, &r), 0, 0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_coupling_3j_e, (2*203, 2*203, 2*203, 0, 0, 0, &r), 0, 0, GSL_SUCCESS); + + /* Test l1=249 l2=248, l3=2, m1=5, m2=-6, m3=1 */ + TEST_SF(s, gsl_sf_coupling_3j_e, (2*249.0, 2*248.0, 2*2.0, 2*5.0, 2*(-6.0), 2*1.0, &r), 0.0228787564223517967033998, TEST_TOL3, GSL_SUCCESS); + TEST_SF(s, gsl_sf_coupling_3j_e, (2*248.0, 2*247.0, 2*2.0, 2*5.0, 2*(-6.0), 2*1.0, &r), -0.022926660587726369939271424097, TEST_TOL3, GSL_SUCCESS); + + /* Test 6j */ + + TEST_SF(s, gsl_sf_coupling_6j_e, (2, 2, 4, 2, 2, 2, &r), 1.0/6.0, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_coupling_6j_e, (4, 4, 2, 4, 4, 4, &r), -1.0/10.0, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_coupling_6j_e, (4, 4, 2, 4, 4, 2, &r), 1.0/6.0, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_coupling_6j_e, (4, 4, 2, 2, 2, 2, &r), -0.5/sqrt(5.0), TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_coupling_6j_e, (4, 4, 4, 2, 2, 2, &r), sqrt(7.0/3.0)/10.0, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_coupling_6j_e, (6, 6, 6, 4, 4, 4, &r), -sqrt(3.0/5.0)/14.0, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_coupling_6j_e, (6, 6, 6, 4, 4, 2, &r), -sqrt(3.0/5.0)/7.0, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_coupling_6j_e, (1, 0, 1, 0, 1, 0, &r), -sqrt(1.0/2.0), TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_coupling_6j_e, (1, 0, 1, 1, 0, 1, &r), -1.0/2.0, TEST_TOL0, GSL_SUCCESS); + + /* Test 6j error checking */ + + TEST_SF(s, gsl_sf_coupling_6j_e, (-2, 2, 4, 2, 2, 2, &r), GSL_NAN, GSL_NAN, GSL_EDOM); + TEST_SF(s, gsl_sf_coupling_6j_e, (2, -2, 4, 2, 2, 2, &r), GSL_NAN, GSL_NAN, GSL_EDOM); + TEST_SF(s, gsl_sf_coupling_6j_e, (2, 2, -4, 2, 2, 2, &r), GSL_NAN, GSL_NAN, GSL_EDOM); + TEST_SF(s, gsl_sf_coupling_6j_e, (2, 2, 4, -2, 2, 2, &r), GSL_NAN, GSL_NAN, GSL_EDOM); + TEST_SF(s, gsl_sf_coupling_6j_e, (2, 2, 4, 2, -2, 2, &r), GSL_NAN, GSL_NAN, GSL_EDOM); + TEST_SF(s, gsl_sf_coupling_6j_e, (2, 2, 4, 2, 2, -2, &r), GSL_NAN, GSL_NAN, GSL_EDOM); + + /* Test 6j triangle conditions */ + + TEST_SF(s, gsl_sf_coupling_6j_e, (2, 2, 4, 2, 2, 7, &r), 0, 0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_coupling_6j_e, (2, 2, 4, 2, 7, 2, &r), 0, 0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_coupling_6j_e, (2, 2, 4, 7, 2, 2, &r), 0, 0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_coupling_6j_e, (2, 2, 7, 2, 2, 2, &r), 0, 0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_coupling_6j_e, (2, 7, 4, 2, 2, 2, &r), 0, 0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_coupling_6j_e, (7, 2, 4, 2, 2, 2, &r), 0, 0, GSL_SUCCESS); + + /* Test 6j half-integer/integer coupling conditions */ + + TEST_SF(s, gsl_sf_coupling_6j_e, (0, 2, 2, 44, 43, 43, &r), 0, 0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_coupling_6j_e, (1, 1, 1, 0, 1, 1, &r), 0, 0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_coupling_6j_e, (1, 1, 1, 1, 0, 1, &r), 0, 0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_coupling_6j_e, (1, 1, 1, 1, 1, 0, &r), 0, 0, GSL_SUCCESS); + + /* Test 9j */ + + TEST_SF(s, gsl_sf_coupling_9j_e, (4, 2, 4, 3, 3, 2, 1, 1, 2, &r), -sqrt(1.0/6.0)/10.0, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_coupling_9j_e, (8, 4, 10, 7, 3, 8, 1, 1, 2, &r), sqrt(7.0/3.0)/60.0, TEST_TOL2, GSL_SUCCESS); + + /* Test 9j error checking */ + + TEST_SF(s, gsl_sf_coupling_9j_e, (-4, 2, 4, 3, 3, 2, 1, 1, 2, &r), GSL_NAN, GSL_NAN, GSL_EDOM); + TEST_SF(s, gsl_sf_coupling_9j_e, (4, -2, 4, 3, 3, 2, 1, 1, 2, &r), GSL_NAN, GSL_NAN, GSL_EDOM); + TEST_SF(s, gsl_sf_coupling_9j_e, (4, 2, -4, 3, 3, 2, 1, 1, 2, &r), GSL_NAN, GSL_NAN, GSL_EDOM); + TEST_SF(s, gsl_sf_coupling_9j_e, (4, 2, 4, -3, 3, 2, 1, 1, 2, &r), GSL_NAN, GSL_NAN, GSL_EDOM); + TEST_SF(s, gsl_sf_coupling_9j_e, (4, 2, 4, 3, -3, 2, 1, 1, 2, &r), GSL_NAN, GSL_NAN, GSL_EDOM); + TEST_SF(s, gsl_sf_coupling_9j_e, (4, 2, 4, 3, 3, -2, 1, 1, 2, &r), GSL_NAN, GSL_NAN, GSL_EDOM); + TEST_SF(s, gsl_sf_coupling_9j_e, (4, 2, 4, 3, 3, 2, -1, 1, 2, &r), GSL_NAN, GSL_NAN, GSL_EDOM); + TEST_SF(s, gsl_sf_coupling_9j_e, (4, 2, 4, 3, 3, 2, 1, -1, 2, &r), GSL_NAN, GSL_NAN, GSL_EDOM); + TEST_SF(s, gsl_sf_coupling_9j_e, (4, 2, 4, 3, 3, 2, 1, 1, -2, &r), GSL_NAN, GSL_NAN, GSL_EDOM); + + TEST_SF(s, gsl_sf_coupling_9j_e, (10, 2, 4, 3, 3, 2, 1, 1, 2, &r), 0, 0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_coupling_9j_e, (4, 10, 4, 3, 3, 2, 1, 1, 2, &r), 0, 0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_coupling_9j_e, (4, 2, 10, 3, 3, 2, 1, 1, 2, &r), 0, 0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_coupling_9j_e, (4, 2, 4, 10, 3, 2, 1, 1, 2, &r), 0, 0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_coupling_9j_e, (4, 2, 4, 3, 10, 2, 1, 1, 2, &r), 0, 0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_coupling_9j_e, (4, 2, 4, 3, 3, 10, 1, 1, 2, &r), 0, 0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_coupling_9j_e, (4, 2, 4, 3, 3, 2, 10, 1, 2, &r), 0, 0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_coupling_9j_e, (4, 2, 4, 3, 3, 2, 1, 10, 2, &r), 0, 0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_coupling_9j_e, (4, 2, 4, 3, 3, 2, 1, 1, 10, &r), 0, 0, GSL_SUCCESS); + + /* Test 9j half-integer/integer coupling conditions */ + + TEST_SF(s, gsl_sf_coupling_9j_e, (1, 1, 1, 1, 1, 1, 0, 0, 0, &r), 0, 0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_coupling_9j_e, (1, 1, 0, 1, 1, 0, 1, 1, 0, &r), 0, 0, GSL_SUCCESS); + + return s; +} + +int test_dawson(void) +{ + gsl_sf_result r; + int s = 0; + + TEST_SF(s, gsl_sf_dawson_e, (1.0e-15, &r), 1.0e-15, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_dawson_e, (0.5, &r), 0.4244363835020222959, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_dawson_e, (2.0, &r), 0.30134038892379196603, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_dawson_e, (1000.0, &r), 0.0005000002500003750009, TEST_TOL0, GSL_SUCCESS); + + return s; +} + +int test_debye(void) +{ + gsl_sf_result r; + int s = 0; + + TEST_SF(s, gsl_sf_debye_1_e, (0.1, &r), 0.975277750004723276, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_debye_1_e, (1.0, &r), 0.777504634112248239, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_debye_1_e, (10.0, &r), 0.164443465679946027, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_debye_2_e, (0.1, &r), 0.967083287045302664, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_debye_2_e, (1.0, &r), 0.70787847562782924, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_debye_2_e, (10.0, &r), 0.0479714980201218708, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_debye_3_e, (0.1, &r), 0.962999940487211048, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_debye_3_e, (1.0, &r), 0.674415564077814667, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_debye_3_e, (10.0, &r), 0.0192957656903454886, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_debye_4_e, (0.1, &r), 0.960555486124335944, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_debye_4_e, (1.0, &r), 0.654874068886737049, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_debye_4_e, (10.0, &r), 0.00967367556027115896, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_debye_5_e, (0.1, &r), 0.95892849428310568745, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_debye_5_e, (1.0, &r), 0.6421002580217790246, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_debye_5_e, (10.0, &r), 0.005701535852992908538, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_debye_6_e, (0.1, &r), 0.95776777382605465878, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_debye_6_e, (1.0, &r), 0.63311142583495107588, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_debye_6_e, (10.0, &r), 3.7938493294615955279e-3, TEST_TOL0, GSL_SUCCESS); + + return s; +} + + +int test_elementary(void) +{ + gsl_sf_result r; + double x = 0.2*DBL_MAX; + int s = 0; + + TEST_SF(s, gsl_sf_multiply_e, (-3.0,2.0, &r), -6.0, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_multiply_e, (x, 1.0/x, &r), 1.0, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_multiply_e, (x, 0.2, &r), 0.04*DBL_MAX, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_multiply_e, (x, 4.0, &r), 0.8*DBL_MAX, TEST_TOL1, GSL_SUCCESS); + s += ( gsl_sf_multiply_e(DBL_MAX, 1.1, &r) != GSL_EOVRFLW); + s += ( gsl_sf_multiply_e(DBL_MIN, DBL_MIN, &r) != GSL_EUNDRFLW); + s += ( gsl_sf_multiply_e(DBL_MIN, -DBL_MIN, &r) != GSL_EUNDRFLW); + + return s; +} + + +int test_ellint(void) +{ + gsl_sf_result r; + gsl_mode_t mode = GSL_MODE_DEFAULT; + int s = 0; + + TEST_SF(s, gsl_sf_ellint_Kcomp_e, ( 0.99, mode, &r), 3.3566005233611923760, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_Kcomp_e, ( 0.50, mode, &r), 1.6857503548125960429, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_Kcomp_e, (0.010, mode, &r), 1.5708355989121522360, TEST_TOL0, GSL_SUCCESS); + + /* Bug report from Thies Heidecke */ + TEST_SF(s, gsl_sf_ellint_Kcomp_e, ( 0.99999999906867742538, mode, &r), 11.4369284843320018031, TEST_SNGL, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_ellint_Ecomp_e, (0.99, mode, &r), 1.0284758090288040010, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_Ecomp_e, (0.50, mode, &r), 1.4674622093394271555, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_Ecomp_e, (0.01, mode, &r), 1.5707570561503852873, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_ellint_Pcomp_e, (0.99, 0.1, mode, &r), 3.13792612351836506315593, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_Pcomp_e, (0.50, 0.1, mode, &r), 1.60455249360848890075108, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_Pcomp_e, (0.01, 0.1, mode, &r), 1.49773208536003801277453, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_ellint_Dcomp_e, (0.99, mode, &r), 2.375395076351788975665323192, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_Dcomp_e, (0.50, mode, &r), 0.8731525818926755496456335628, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_Dcomp_e, (0.01, mode, &r), 0.7854276176694868932799393751, TEST_TOL0, GSL_SUCCESS); + + /* Bug report from Will M. Farr bug #31362 */ + /* FIXME: we are accepting MAXITER as the return code, but really + this should be changed to EINVAL in the routine itself */ + + TEST_SF(s, gsl_sf_ellint_Kcomp_e, (GSL_NAN, mode, &r), GSL_NAN, GSL_NAN, GSL_EMAXITER); + TEST_SF(s, gsl_sf_ellint_Ecomp_e, (GSL_NAN, mode, &r), GSL_NAN, GSL_NAN, GSL_EMAXITER); + + TEST_SF(s, gsl_sf_ellint_F_e, (M_PI/3.0, 0.99, mode, &r), 1.3065333392738766762, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_F_e, (M_PI/3.0, 0.50, mode, &r), 1.0895506700518854093, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_F_e, (M_PI/3.0, 0.01, mode, &r), 1.0472129063770918952, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_ellint_E_e, (M_PI/3.0, 0.99, mode, &r), 0.8704819220377943536, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_E_e, (M_PI/3.0, 0.50, mode, &r), 1.0075555551444720293, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_E_e, (M_PI/3.0, 0.01, mode, &r), 1.0471821963889481104, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_ellint_P_e, (M_PI/3.0, 0.99, 0.5, mode, &r), 1.1288726598764099882, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_P_e, (M_PI/3.0, 0.50, 0.5, mode, &r), 0.9570574331323584890, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_P_e, (M_PI/3.0, 0.01, 0.5, mode, &r), 0.9228868127118118465, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_ellint_RF_e, (5.0e-11, 1.0e-10, 1.0, mode, &r), 12.36441982979439, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_ellint_RF_e, (1.0, 2.0, 3.0, mode, &r), 0.7269459354689082, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_ellint_RD_e, (5.0e-11, 1.0e-10, 1.0, mode, &r), 34.0932594919337362, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_ellint_RD_e, (1.0, 2.0, 3.0, mode, &r), 0.2904602810289906, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_ellint_RC_e, (1.0, 2.0, mode, &r), 0.7853981633974482, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_ellint_RJ_e, (2.0, 3.0, 4.0, 5.0, mode, &r), 0.1429757966715675, TEST_TOL0, GSL_SUCCESS); + + /* E, argument phi > pi/2 */ + + TEST_SF(s, gsl_sf_ellint_E_e, (M_PI/2.0, 0.99, mode, &r), 1.02847580902880400098389, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_E_e, (M_PI/2.0, 0.50, mode, &r), 1.46746220933942715545980, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_E_e, (M_PI/2.0, 0.01, mode, &r), 1.57075705615038528733708, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_ellint_E_e, (2*M_PI/3.0, 0.99, mode, &r), 1.18646969601981364833972, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_E_e, (2*M_PI/3.0, 0.50, mode, &r), 1.92736886353438228163734, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_E_e, (2*M_PI/3.0, 0.01, mode, &r), 2.09433191591182246425715, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_ellint_E_e, (M_PI, 0.99, mode, &r), 2.05695161805760800196777, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_E_e, (M_PI, 0.50, mode, &r), 2.93492441867885431091959, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_E_e, (M_PI, 0.01, mode, &r), 3.14151411230077057467416, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_ellint_E_e, (4*M_PI/3, 0.99, mode, &r), 2.92743354009540235559582, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_E_e, (4*M_PI/3, 0.50, mode, &r), 3.94247997382332634020184, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_E_e, (4*M_PI/3, 0.01, mode, &r), 4.18869630868971868509117, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_ellint_E_e, (3*M_PI/2.0, 0.99, mode, &r), 3.08542742708641200295166, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_E_e, (3*M_PI/2.0, 0.50, mode, &r), 4.40238662801828146637939, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_E_e, (3*M_PI/2.0, 0.01, mode, &r), 4.71227116845115586201123, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_ellint_E_e, (5*M_PI/3, 0.99, mode, &r), 3.24342131407742165030750, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_E_e, (5*M_PI/3, 0.50, mode, &r), 4.86229328221323659255693, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_E_e, (5*M_PI/3, 0.01, mode, &r), 5.23584602821259303893130, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_ellint_E_e, (2*M_PI, 0.99, mode, &r), 4.11390323611521600393555, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_E_e, (2*M_PI, 0.50, mode, &r), 5.86984883735770862183918, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_E_e, (2*M_PI, 0.01, mode, &r), 6.28302822460154114934831, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_ellint_E_e, (7*M_PI/3.0, 0.99, mode, &r), 4.98438515815301035756360, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_E_e, (7*M_PI/3.0, 0.50, mode, &r), 6.87740439250218065112143, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_E_e, (7*M_PI/3.0, 0.01, mode, &r), 7.33021042099048925976532, TEST_TOL0, GSL_SUCCESS); + + /* Test some negative arguments, phi < 0 */ + + TEST_SF(s, gsl_sf_ellint_E_e, (-M_PI/2.0, 0.99, mode, &r), -1.02847580902880400098389, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_E_e, (-M_PI/2.0, 0.50, mode, &r), -1.46746220933942715545980, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_E_e, (-M_PI/2.0, 0.01, mode, &r), -1.57075705615038528733708, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_ellint_E_e, (-2*M_PI/3.0, 0.99, mode, &r), -1.18646969601981364833972, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_E_e, (-2*M_PI/3.0, 0.50, mode, &r), -1.92736886353438228163734, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_E_e, (-2*M_PI/3.0, 0.01, mode, &r), -2.09433191591182246425715, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_ellint_E_e, (-M_PI, 0.99, mode, &r), -2.05695161805760800196777, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_E_e, (-M_PI, 0.50, mode, &r), -2.93492441867885431091959, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_E_e, (-M_PI, 0.01, mode, &r), -3.14151411230077057467416, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_ellint_E_e, (-4*M_PI/3, 0.99, mode, &r), -2.92743354009540235559582, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_E_e, (-4*M_PI/3, 0.50, mode, &r), -3.94247997382332634020184, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_E_e, (-4*M_PI/3, 0.01, mode, &r), -4.18869630868971868509117, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_ellint_E_e, (-3*M_PI/2.0, 0.99, mode, &r), -3.08542742708641200295166, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_E_e, (-3*M_PI/2.0, 0.50, mode, &r), -4.40238662801828146637939, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_E_e, (-3*M_PI/2.0, 0.01, mode, &r), -4.71227116845115586201123, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_ellint_E_e, (-5*M_PI/3, 0.99, mode, &r), -3.24342131407742165030750, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_E_e, (-5*M_PI/3, 0.50, mode, &r), -4.86229328221323659255693, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_E_e, (-5*M_PI/3, 0.01, mode, &r), -5.23584602821259303893130, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_ellint_E_e, (-2*M_PI, 0.99, mode, &r), -4.11390323611521600393555, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_E_e, (-2*M_PI, 0.50, mode, &r), -5.86984883735770862183918, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_E_e, (-2*M_PI, 0.01, mode, &r), -6.28302822460154114934831, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_ellint_E_e, (-7*M_PI/3.0, 0.99, mode, &r), -4.98438515815301035756360, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_E_e, (-7*M_PI/3.0, 0.50, mode, &r), -6.87740439250218065112143, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_E_e, (-7*M_PI/3.0, 0.01, mode, &r), -7.33021042099048925976532, TEST_TOL0, GSL_SUCCESS); + + + /* F, argument phi > pi/2 */ + + TEST_SF(s, gsl_sf_ellint_F_e, (M_PI/2.0, 0.99, mode, &r), 3.35660052336119237603347, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_F_e, (M_PI/2.0, 0.50, mode, &r), 1.68575035481259604287120, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_F_e, (M_PI/2.0, 0.01, mode, &r), 1.57083559891215223602641, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_ellint_F_e, (2*M_PI/3.0, 0.99, mode, &r), 5.40666770744850807588478, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_F_e, (2*M_PI/3.0, 0.50, mode, &r), 2.28195003957330667648585, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_F_e, (2*M_PI/3.0, 0.01, mode, &r), 2.09445829144721257687207, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_ellint_F_e, (M_PI, 0.99, mode, &r), 6.71320104672238475206694, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_F_e, (M_PI, 0.50, mode, &r), 3.37150070962519208574241, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_F_e, (M_PI, 0.01, mode, &r), 3.14167119782430447205281, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_ellint_F_e, (4*M_PI/3, 0.99, mode, &r), 8.01973438599626142824910, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_F_e, (4*M_PI/3, 0.50, mode, &r), 4.46105137967707749499897, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_F_e, (4*M_PI/3, 0.01, mode, &r), 4.18888410420139636723356, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_ellint_F_e, (3*M_PI/2.0, 0.99, mode, &r), 10.0698015700835771281004, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_F_e, (3*M_PI/2.0, 0.50, mode, &r), 5.05725106443778812861361, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_F_e, (3*M_PI/2.0, 0.01, mode, &r), 4.71250679673645670807922, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_ellint_F_e, (5*M_PI/3, 0.99, mode, &r), 12.1198687541708928279517, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_F_e, (5*M_PI/3, 0.50, mode, &r), 5.65345074919849876222825, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_F_e, (5*M_PI/3, 0.01, mode, &r), 5.23612948927151704892488, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_ellint_F_e, (2*M_PI, 0.99, mode, &r), 13.4264020934447695041339, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_F_e, (2*M_PI, 0.50, mode, &r), 6.74300141925038417148481, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_F_e, (2*M_PI, 0.01, mode, &r), 6.28334239564860894410562, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_ellint_F_e, (7*M_PI/3.0, 0.99, mode, &r), 14.7329354327186461803160, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_F_e, (7*M_PI/3.0, 0.50, mode, &r), 7.83255208930226958074138, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_F_e, (7*M_PI/3.0, 0.01, mode, &r), 7.33055530202570083928637, TEST_TOL0, GSL_SUCCESS); + + /* F, negative argument phi < 0 */ + + TEST_SF(s, gsl_sf_ellint_F_e, (-M_PI/2.0, 0.99, mode, &r), -3.35660052336119237603347, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_F_e, (-M_PI/2.0, 0.50, mode, &r), -1.68575035481259604287120, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_F_e, (-M_PI/2.0, 0.01, mode, &r), -1.57083559891215223602641, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_ellint_F_e, (-2*M_PI/3.0, 0.99, mode, &r), -5.40666770744850807588478, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_F_e, (-2*M_PI/3.0, 0.50, mode, &r), -2.28195003957330667648585, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_F_e, (-2*M_PI/3.0, 0.01, mode, &r), -2.09445829144721257687207, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_ellint_F_e, (-M_PI, 0.99, mode, &r), -6.71320104672238475206694, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_F_e, (-M_PI, 0.50, mode, &r), -3.37150070962519208574241, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_F_e, (-M_PI, 0.01, mode, &r), -3.14167119782430447205281, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_ellint_F_e, (-4*M_PI/3, 0.99, mode, &r), -8.01973438599626142824910, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_F_e, (-4*M_PI/3, 0.50, mode, &r), -4.46105137967707749499897, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_F_e, (-4*M_PI/3, 0.01, mode, &r), -4.18888410420139636723356, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_ellint_F_e, (-3*M_PI/2.0, 0.99, mode, &r), -10.0698015700835771281004, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_F_e, (-3*M_PI/2.0, 0.50, mode, &r), -5.05725106443778812861361, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_F_e, (-3*M_PI/2.0, 0.01, mode, &r), -4.71250679673645670807922, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_ellint_F_e, (-5*M_PI/3, 0.99, mode, &r), -12.1198687541708928279517, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_F_e, (-5*M_PI/3, 0.50, mode, &r), -5.65345074919849876222825, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_F_e, (-5*M_PI/3, 0.01, mode, &r), -5.23612948927151704892488, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_ellint_F_e, (-2*M_PI, 0.99, mode, &r), -13.4264020934447695041339, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_F_e, (-2*M_PI, 0.50, mode, &r), -6.74300141925038417148481, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_F_e, (-2*M_PI, 0.01, mode, &r), -6.28334239564860894410562, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_ellint_F_e, (-7*M_PI/3.0, 0.99, mode, &r), -14.7329354327186461803160, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_F_e, (-7*M_PI/3.0, 0.50, mode, &r), -7.83255208930226958074138, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_F_e, (-7*M_PI/3.0, 0.01, mode, &r), -7.33055530202570083928637, TEST_TOL0, GSL_SUCCESS); + + /* P, argument phi > pi/2 */ + + TEST_SF(s, gsl_sf_ellint_P_e, (M_PI/2.0, 0.99, -0.1, mode, &r), 3.61678162163246646783050, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_P_e, (M_PI/2.0, 0.50, -0.1, mode, &r), 1.78030349465454812629168, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_P_e, (M_PI/2.0, 0.01, -0.1, mode, &r), 1.65580719756898353270922, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_ellint_P_e, (2*M_PI/3.0, 0.99, -0.1, mode, &r), 5.88008918207571119911983, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_P_e, (2*M_PI/3.0, 0.50, -0.1, mode, &r), 2.43655207300356008717867, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_P_e, (2*M_PI/3.0, 0.01, -0.1, mode, &r), 2.23211110528200554950903, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_ellint_P_e, (M_PI, 0.99, -0.1, mode, &r), 7.23356324326493293566099, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_P_e, (M_PI, 0.50, -0.1, mode, &r), 3.56060698930909625258336, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_P_e, (M_PI, 0.01, -0.1, mode, &r), 3.31161439513796706541844, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_ellint_P_e, (4*M_PI/3, 0.99, -0.1, mode, &r), 8.58703730445415467220216, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_P_e, (4*M_PI/3, 0.50, -0.1, mode, &r), 4.68466190561463241798805, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_P_e, (4*M_PI/3, 0.01, -0.1, mode, &r), 4.39111768499392858132786, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_ellint_P_e, (3*M_PI/2.0, 0.99, -0.1, mode, &r), 10.8503448648973994034915, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_P_e, (3*M_PI/2.0, 0.50, -0.1, mode, &r), 5.34091048396364437887504, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_P_e, (3*M_PI/2.0, 0.01, -0.1, mode, &r), 4.96742159270695059812767, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_ellint_P_e, (5*M_PI/3, 0.99, -0.1, mode, &r), 13.1136524253406441347808, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_P_e, (5*M_PI/3, 0.50, -0.1, mode, &r), 5.99715906231265633976204, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_P_e, (5*M_PI/3, 0.01, -0.1, mode, &r), 5.54372550041997261492747, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_ellint_P_e, (2*M_PI, 0.99, -0.1, mode, &r), 14.4671264865298658713220, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_P_e, (2*M_PI, 0.50, -0.1, mode, &r), 7.12121397861819250516672, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_P_e, (2*M_PI, 0.01, -0.1, mode, &r), 6.62322879027593413083689, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_ellint_P_e, (7*M_PI/3.0, 0.99, -0.1, mode, &r), 15.8206005477190876078631, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_P_e, (7*M_PI/3.0, 0.50, -0.1, mode, &r), 8.24526889492372867057141, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_P_e, (7*M_PI/3.0, 0.01, -0.1, mode, &r), 7.70273208013189564674630, TEST_TOL0, GSL_SUCCESS); + + /* P, negative argument phi < 0 */ + + TEST_SF(s, gsl_sf_ellint_P_e, (-M_PI/2.0, 0.99, -0.1, mode, &r), -3.61678162163246646783050, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_P_e, (-M_PI/2.0, 0.50, -0.1, mode, &r), -1.78030349465454812629168, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_P_e, (-M_PI/2.0, 0.01, -0.1, mode, &r), -1.65580719756898353270922, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_ellint_P_e, (-2*M_PI/3.0, 0.99, -0.1, mode, &r), -5.88008918207571119911983, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_P_e, (-2*M_PI/3.0, 0.50, -0.1, mode, &r), -2.43655207300356008717867, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_P_e, (-2*M_PI/3.0, 0.01, -0.1, mode, &r), -2.23211110528200554950903, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_ellint_P_e, (-M_PI, 0.99, -0.1, mode, &r), -7.23356324326493293566099, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_P_e, (-M_PI, 0.50, -0.1, mode, &r), -3.56060698930909625258336, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_P_e, (-M_PI, 0.01, -0.1, mode, &r), -3.31161439513796706541844, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_ellint_P_e, (-4*M_PI/3, 0.99, -0.1, mode, &r), -8.58703730445415467220216, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_P_e, (-4*M_PI/3, 0.50, -0.1, mode, &r), -4.68466190561463241798805, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_P_e, (-4*M_PI/3, 0.01, -0.1, mode, &r), -4.39111768499392858132786, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_ellint_P_e, (-3*M_PI/2.0, 0.99, -0.1, mode, &r), -10.8503448648973994034915, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_P_e, (-3*M_PI/2.0, 0.50, -0.1, mode, &r), -5.34091048396364437887504, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_P_e, (-3*M_PI/2.0, 0.01, -0.1, mode, &r), -4.96742159270695059812767, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_ellint_P_e, (-5*M_PI/3, 0.99, -0.1, mode, &r), -13.1136524253406441347808, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_P_e, (-5*M_PI/3, 0.50, -0.1, mode, &r), -5.99715906231265633976204, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_P_e, (-5*M_PI/3, 0.01, -0.1, mode, &r), -5.54372550041997261492747, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_ellint_P_e, (-2*M_PI, 0.99, -0.1, mode, &r), -14.4671264865298658713220, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_P_e, (-2*M_PI, 0.50, -0.1, mode, &r), -7.12121397861819250516672, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_P_e, (-2*M_PI, 0.01, -0.1, mode, &r), -6.62322879027593413083689, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_ellint_P_e, (-7*M_PI/3.0, 0.99, -0.1, mode, &r), -15.8206005477190876078631, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_P_e, (-7*M_PI/3.0, 0.50, -0.1, mode, &r), -8.24526889492372867057141, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_P_e, (-7*M_PI/3.0, 0.01, -0.1, mode, &r), -7.70273208013189564674630, TEST_TOL0, GSL_SUCCESS); + + /* D, argument phi > pi/2 */ + + TEST_SF(s, gsl_sf_ellint_D_e, (M_PI/2.0, 0.99, mode, &r), 2.375395076351788975665323192, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_D_e, (M_PI/2.0, 0.50, mode, &r), 0.8731525818926755496456335628, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_D_e, (M_PI/2.0, 0.01, mode, &r), 0.7854276176694868932799393751, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_ellint_D_e, (2*M_PI/3.0, 0.99, mode, &r), 4.305885125424644860264320635, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_D_e, (2*M_PI/3.0, 0.50, mode, &r), 1.418324704155697579394036402, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_D_e, (2*M_PI/3.0, 0.01, mode, &r), 1.263755353901126149206022061, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_ellint_D_e, (M_PI, 0.99, mode, &r), 4.750790152703577951330646444, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_D_e, (M_PI, 0.50, mode, &r), 1.746305163785351099291267125, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_D_e, (M_PI, 0.01, mode, &r), 1.570855235338973786559878750, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_ellint_D_e, (4*M_PI/3, 0.99, mode, &r), 5.195695179982511042396972113, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_D_e, (4*M_PI/3, 0.50, mode, &r), 2.074285623415004619188497818, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_D_e, (4*M_PI/3, 0.01, mode, &r), 1.877955116776821423913735408, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_ellint_D_e, (3*M_PI/2.0, 0.99, mode, &r), 7.126185229055366926995969476, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_D_e, (3*M_PI/2.0, 0.50, mode, &r), 2.619457745678026648936900687, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_D_e, (3*M_PI/2.0, 0.01, mode, &r), 2.356282853008460679839818125, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_ellint_D_e, (5*M_PI/3, 0.99, mode, &r), 9.056675278128222811594967044, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_D_e, (5*M_PI/3, 0.50, mode, &r), 3.164629867941048678685303509, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_D_e, (5*M_PI/3, 0.01, mode, &r), 2.834610589240099935765900794, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_ellint_D_e, (2*M_PI, 0.99, mode, &r), 9.501580305407155902661292832, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_D_e, (2*M_PI, 0.50, mode, &r), 3.492610327570702198582534249, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_D_e, (2*M_PI, 0.01, mode, &r), 3.141710470677947573119757500, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_ellint_D_e, (7*M_PI/3.0, 0.99, mode, &r), 9.946485332686088993727618315, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_D_e, (7*M_PI/3.0, 0.50, mode, &r), 3.820590787200355718479764901, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_D_e, (7*M_PI/3.0, 0.01, mode, &r), 3.448810352115795210473614120, TEST_TOL0, GSL_SUCCESS); + + /* P, negative argument phi < 0 */ + + TEST_SF(s, gsl_sf_ellint_D_e, (-M_PI/2.0, 0.99, mode, &r), -2.375395076351788975665323192, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_D_e, (-M_PI/2.0, 0.50, mode, &r), -0.8731525818926755496456335628, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_D_e, (-M_PI/2.0, 0.01, mode, &r), -0.7854276176694868932799393751, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_ellint_D_e, (-2*M_PI/3.0, 0.99, mode, &r), -4.305885125424644860264320635, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_D_e, (-2*M_PI/3.0, 0.50, mode, &r), -1.418324704155697579394036402, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_D_e, (-2*M_PI/3.0, 0.01, mode, &r), -1.263755353901126149206022061, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_ellint_D_e, (-M_PI, 0.99, mode, &r), -4.750790152703577951330646444, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_D_e, (-M_PI, 0.50, mode, &r), -1.746305163785351099291267125, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_D_e, (-M_PI, 0.01, mode, &r), -1.570855235338973786559878750, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_ellint_D_e, (-4*M_PI/3, 0.99, mode, &r), -5.195695179982511042396972113, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_D_e, (-4*M_PI/3, 0.50, mode, &r), -2.074285623415004619188497818, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_D_e, (-4*M_PI/3, 0.01, mode, &r), -1.877955116776821423913735408, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_ellint_D_e, (-3*M_PI/2.0, 0.99, mode, &r), -7.126185229055366926995969476, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_D_e, (-3*M_PI/2.0, 0.50, mode, &r), -2.619457745678026648936900687, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_D_e, (-3*M_PI/2.0, 0.01, mode, &r), -2.356282853008460679839818125, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_ellint_D_e, (-5*M_PI/3, 0.99, mode, &r), -9.056675278128222811594967044, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_D_e, (-5*M_PI/3, 0.50, mode, &r), -3.164629867941048678685303509, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_D_e, (-5*M_PI/3, 0.01, mode, &r), -2.834610589240099935765900794, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_ellint_D_e, (-2*M_PI, 0.99, mode, &r), -9.501580305407155902661292832, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_D_e, (-2*M_PI, 0.50, mode, &r), -3.492610327570702198582534249, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_D_e, (-2*M_PI, 0.01, mode, &r), -3.141710470677947573119757500, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_ellint_D_e, (-7*M_PI/3.0, 0.99, mode, &r), -9.946485332686088993727618315, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_D_e, (-7*M_PI/3.0, 0.50, mode, &r), -3.820590787200355718479764901, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_ellint_D_e, (-7*M_PI/3.0, 0.01, mode, &r), -3.448810352115795210473614120, TEST_TOL0, GSL_SUCCESS); + + return s; +} + + +int test_erf(void) +{ + gsl_sf_result r; + int s = 0; + + TEST_SF(s, gsl_sf_erfc_e, (-10.0, &r), 2.0, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_erfc_e, (-5.0000002, &r), 1.9999999999984625433, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_erfc_e, (-5.0, &r), 1.9999999999984625402, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_erfc_e, (-1.0, &r), 1.8427007929497148693, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_erfc_e, (-0.5, &r), 1.5204998778130465377, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_erfc_e, (1.0, &r), 0.15729920705028513066, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_erfc_e, (3.0, &r), 0.000022090496998585441373, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_erfc_e, (7.0, &r), 4.183825607779414399e-23, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_erfc_e, (10.0, &r), 2.0884875837625447570e-45, TEST_TOL2, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_log_erfc_e, (-1.0, &r), log(1.842700792949714869), TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_log_erfc_e, (-0.1, &r), 0.106576400586522485015, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_log_erfc_e, (-1e-10, &r), 1.1283791670318505967e-10, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_log_erfc_e, (0.0, &r), log(1.0), TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_log_erfc_e, (1e-10, &r), -1.128379167159174551e-10, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_log_erfc_e, (0.001, &r), -0.0011290158896213548027, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_log_erfc_e, (0.1, &r), -0.119304973737395598329, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_log_erfc_e, (1.0, &r), log(0.15729920705028513066), TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_log_erfc_e, (10.0, &r), log(2.0884875837625447570e-45), TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_erf_e, (-10.0, &r), -1.0000000000000000000, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_erf_e, (0.5, &r), 0.5204998778130465377, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_erf_e, (1.0, &r), 0.8427007929497148693, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_erf_e, (10.0, &r), 1.0000000000000000000, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_erf_Z_e, (1.0, &r), 0.24197072451914334980, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_erf_Q_e, (10.0, &r), 7.619853024160526066e-24, TEST_TOL2, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_hazard_e, (-20.0, &r), 5.5209483621597631896e-88, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hazard_e, (-10.0, &r), 7.6945986267064193463e-23, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hazard_e, (-1.0, &r), 0.28759997093917836123, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hazard_e, ( 0.0, &r), 0.79788456080286535588, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hazard_e, ( 1.0, &r), 1.5251352761609812091, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hazard_e, (10.0, &r), 10.098093233962511963, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hazard_e, (20.0, &r), 20.049753068527850542, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hazard_e, (30.0, &r), 30.033259667433677037, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hazard_e, (50.0, &r), 50.019984031905639809, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hazard_e, (80.0, &r), 80.012496096798234468, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hazard_e, (150.0, &r), 150.00666607420571802, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hazard_e, (300.0, &r), 300.00333325926337415, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hazard_e, (900.0, &r), 900.00111110836764382, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hazard_e, (1001.0, &r), 1001.0009989990049990, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hazard_e, (2000.0, &r), 2000.0004999997500003, TEST_TOL0, GSL_SUCCESS); + + return s; +} + + +int test_exp(void) +{ + gsl_sf_result r; + gsl_sf_result_e10 re; + double x; + int sa; + int s = 0; + + TEST_SF(s, gsl_sf_exp_e, (-10.0, &r), exp(-10.0), TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_exp_e, ( 10.0, &r), exp( 10.0), TEST_TOL0, GSL_SUCCESS); + + sa = 0; + sa += gsl_sf_exp_e10_e(1.0, &re); + sa += ( test_sf_frac_diff(re.val, M_E ) > TEST_TOL0 ); + sa += ( re.err > TEST_TOL1 ); + sa += ( re.e10 != 0 ); + gsl_test(sa, " gsl_sf_exp_e10_e(1.0, &re)"); + + sa = 0; + sa += gsl_sf_exp_e10_e(2000.0, &re); + sa += ( test_sf_frac_diff(re.val, 3.88118019428363725 ) > TEST_TOL3 ); + sa += ( re.err > TEST_TOL5 ); + sa += ( re.e10 != 868 ); + gsl_test(sa, " gsl_sf_exp_e10_e(2000.0, &re)"); + + + TEST_SF(s, gsl_sf_exp_err_e, (-10.0, TEST_TOL1, &r), exp(-10.0), TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_exp_err_e, ( 10.0, TEST_TOL1, &r), exp( 10.0), TEST_TOL1, GSL_SUCCESS); + + sa = 0; + sa += gsl_sf_exp_err_e10_e(1.0, TEST_SQRT_TOL0, &re); + sa += ( test_sf_frac_diff(re.val, M_E ) > TEST_TOL1 ); + sa += ( re.err > 32.0 * TEST_SQRT_TOL0 ); + sa += ( re.e10 != 0 ); + gsl_test(sa, " gsl_sf_exp_err_e10_e(1.0, TEST_SQRT_TOL0, &re)"); + + sa = 0; + sa += gsl_sf_exp_err_e10_e(2000.0, 1.0e-10, &re); + sa += ( test_sf_frac_diff(re.val, 3.88118019428363725 ) > TEST_TOL3 ); + sa += ( re.err > 1.0e-07 ); + sa += ( re.e10 != 868 ); + gsl_test(sa, " gsl_sf_exp_err_e10_e(2000.0, 1.0e-10, &re)"); + + + x = 0.8*GSL_LOG_DBL_MAX; + TEST_SF(s, gsl_sf_exp_mult_e, (-10.0, 1.0e-06, &r), 1.0e-06*exp(-10.0), TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_exp_mult_e, (-10.0, 2.0, &r), 2.0*exp(-10.0), TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_exp_mult_e, (-10.0, -2.0, &r), -2.0*exp(-10.0), TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_exp_mult_e, ( 10.0, 1.0e-06, &r), 1.0e-06*exp( 10.0), TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_exp_mult_e, ( 10.0, -2.0, &r), -2.0*exp( 10.0), TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_exp_mult_e, (x, 1.00001, &r), 1.00001*exp(x), TEST_TOL3, GSL_SUCCESS); + TEST_SF(s, gsl_sf_exp_mult_e, (x, 1.000001, &r), 1.000001*exp(x), TEST_TOL3, GSL_SUCCESS); + TEST_SF(s, gsl_sf_exp_mult_e, (x, 1.000000001, &r), 1.000000001*exp(x), TEST_TOL3, GSL_SUCCESS); + TEST_SF(s, gsl_sf_exp_mult_e, (x, 100.0, &r), 100.0*exp(x), TEST_TOL3, GSL_SUCCESS); + TEST_SF(s, gsl_sf_exp_mult_e, (x, 1.0e+20, &r), 1.0e+20*exp(x), TEST_TOL3, GSL_SUCCESS); + TEST_SF(s, gsl_sf_exp_mult_e, (x, exp(-x)*exp(M_LN2), &r), 2.0, TEST_TOL4, GSL_SUCCESS ); + + TEST_SF(s, gsl_sf_exp_mult_err_e, (-10.0, TEST_SQRT_TOL0, 2.0, TEST_SQRT_TOL0, &r), 2.0*exp(-10.0), TEST_SQRT_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_exp_mult_err_e, (x, TEST_SQRT_TOL0*x, exp(-x)*exp(M_LN2), TEST_SQRT_TOL0*exp(-x)*exp(M_LN2), &r), 2.0, TEST_SQRT_TOL0, GSL_SUCCESS ); + + sa = 0; + sa += gsl_sf_exp_mult_e10_e(1.0, 1.0, &re); + sa += ( test_sf_frac_diff(re.val, M_E ) > TEST_TOL0 ); + sa += ( re.err > TEST_TOL2 ); + sa += ( re.e10 != 0 ); + gsl_test(sa, "gsl_sf_exp_mult_e10_e(1.0, 1.0, &re)"); + TEST_SF_E10(s, gsl_sf_exp_mult_e10_e, (1.0, 1.0, &re), M_E, 0, TEST_TOL0, GSL_SUCCESS); + + sa = 0; + sa += gsl_sf_exp_mult_e10_e(1000.0, 1.0e+200, &re); + sa += ( test_sf_frac_diff(re.val, 1.970071114017046993888879352) > TEST_TOL3 ); + sa += ( re.err > 1.0e-11 ); + sa += ( re.e10 != 634 ); + gsl_test(sa, "gsl_sf_exp_mult_e10_e(1000.0, 1.0e+200, &re)"); + TEST_SF_E10(s, gsl_sf_exp_mult_e10_e, (1000.0, 1.0e+200, &re), 1.970071114017046993888879352, 634, TEST_TOL3, GSL_SUCCESS); + + sa = 0; + sa += gsl_sf_exp_mult_err_e10_e(1.0, TEST_TOL0, 1.0, TEST_TOL0, &re); + sa += ( test_sf_frac_diff(re.val, M_E ) > TEST_TOL0 ); + sa += ( re.err > TEST_TOL2 ); + sa += ( re.e10 != 0 ); + gsl_test(sa, "gsl_sf_exp_mult_err_e10_e(1.0, TEST_TOL0, 1.0, TEST_TOL0, &re)"); + TEST_SF_E10(s, gsl_sf_exp_mult_err_e10_e, (1.0, TEST_TOL0, 1.0, TEST_TOL0, &re), M_E, 0, TEST_TOL0, GSL_SUCCESS); + + sa = 0; + sa += gsl_sf_exp_mult_err_e10_e(1000.0, 1.0e-12, 1.0e+200, 1.0e+190, &re); + sa += ( test_sf_frac_diff(re.val, 1.9700711140165661 ) > TEST_TOL3 ); + sa += ( re.err > 1.0e-09 ); + sa += ( re.e10 != 634 ); + gsl_test(sa, "gsl_sf_exp_mult_err_e10_e(1.0e-12, 1.0e+200, &re)"); + TEST_SF_E10(s, gsl_sf_exp_mult_err_e10_e, (1000.0, 1.0e-12, 1.0e+200, 1.0e+190, &re), 1.9700711140165661,634, TEST_TOL3, GSL_SUCCESS); + + /* Test cases from Szymon Jaroszewicz */ + + TEST_SF_E10(s, gsl_sf_exp_mult_e10_e, (10000.0, 1.0, &re), 8.806818225662921587261496007, 4342, TEST_TOL5, GSL_SUCCESS); + TEST_SF_E10(s, gsl_sf_exp_mult_e10_e, (100.0, 1.0, &re), 2.688117141816135448412625551e43, 0, TEST_TOL2, GSL_SUCCESS); + TEST_SF_E10(s, gsl_sf_exp_e10_e, (100.0, &re), 2.688117141816135448412625551e43, 0, TEST_TOL2, GSL_SUCCESS); + TEST_SF_E10(s, gsl_sf_exp_e10_e, (1000.0, &re), 1.970071114017046993888879352, 434, TEST_TOL3, GSL_SUCCESS); + TEST_SF_E10(s, gsl_sf_exp_e10_e, (-100.0, &re), 3.720075976020835962959695803e-44, 0, TEST_TOL2, GSL_SUCCESS); + TEST_SF_E10(s, gsl_sf_exp_e10_e, (-1000.0, &re), 5.075958897549456765291809479, -435, TEST_TOL3, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_expm1_e, (-10.0, &r), exp(-10.0)-1.0, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_expm1_e, (-0.001, &r), -0.00099950016662500845, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_expm1_e, (-1.0e-8, &r), -1.0e-08 + 0.5e-16, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_expm1_e, ( 1.0e-8, &r), 1.0e-08 + 0.5e-16, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_expm1_e, ( 0.001, &r), 0.0010005001667083417, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_expm1_e, ( 10.0, &r), exp(10.0)-1.0, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_exprel_e, (-10.0, &r), 0.0999954600070237515, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_exprel_e, (-0.001, &r), 0.9995001666250084, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_exprel_e, (-1.0e-8, &r), 1.0 - 0.5e-08, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_exprel_e, ( 1.0e-8, &r), 1.0 + 0.5e-08, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_exprel_e, ( 0.001, &r), 1.0005001667083417, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_exprel_e, ( 10.0, &r), 2202.5465794806716517, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_exprel_2_e, (-10.0, &r), 0.18000090799859524970, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_exprel_2_e, (-0.001, &r), 0.9996667499833361107, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_exprel_2_e, (-1.0e-8, &r), 0.9999999966666666750, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_exprel_2_e, ( 1.0e-8, &r), 1.0000000033333333417, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_exprel_2_e, ( 0.001, &r), 1.0003334166833361115, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_exprel_2_e, ( 10.0, &r), 440.3093158961343303, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_exprel_n_e, (3, -1000.0, &r), 0.00299400600000000000, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_exprel_n_e, (3, -100.0, &r), 0.02940600000000000000, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_exprel_n_e, (3, -10.0, &r), 0.24599972760042142509, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_exprel_n_e, (3, -3.0, &r), 0.5444917625849191238, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_exprel_n_e, (3, -0.001, &r), 0.9997500499916678570, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_exprel_n_e, (3, -1.0e-8, &r), 0.9999999975000000050, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_exprel_n_e, (3, 1.0e-8, &r), 1.0000000025000000050, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_exprel_n_e, (3, 0.001, &r), 1.0002500500083345240, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_exprel_n_e, (3, 3.0, &r), 2.5745637607083706091, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_exprel_n_e, (3, 3.1, &r), 2.6772417068460206247, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_exprel_n_e, (3, 10.0, &r), 131.79279476884029910, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_exprel_n_e, (3, 100.0, &r), 1.6128702850896812690e+38, TEST_TOL2, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_exprel_n_e, (50, -1000.0, &r), 0.04766231609253975959, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_exprel_n_e, (50, -100.0, &r), 0.3348247572345889317, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_exprel_n_e, (50, -10.0, &r), 0.8356287051853286482, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_exprel_n_e, (50, -3.0, &r), 0.9443881609152163615, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_exprel_n_e, (50, -1.0, &r), 0.980762245565660617, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_exprel_n_e, (50, -1.0e-8, &r), 1.0 -1.0e-8/51.0, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_exprel_n_e, (50, 1.0e-8, &r), 1.0 +1.0e-8/51.0, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_exprel_n_e, (50, 1.0, &r), 1.01999216583666790, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_exprel_n_e, (50, 3.0, &r), 1.0624205757460368307, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_exprel_n_e, (50, 48.0, &r), 7.499573876877194416, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_exprel_n_e, (50, 50.1, &r), 9.311803306230992272, TEST_TOL4, GSL_SUCCESS); + TEST_SF(s, gsl_sf_exprel_n_e, (50, 100.0, &r), 8.175664432485807634e+07, TEST_TOL4, GSL_SUCCESS); + TEST_SF(s, gsl_sf_exprel_n_e, (50, 500.0, &r), 4.806352370663185330e+146, TEST_TOL3, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_exprel_n_e, (500, -1000.0, &r), 0.3334815803127619256, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_exprel_n_e, (500, -100.0, &r), 0.8335646217536183909, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_exprel_n_e, (500, -10.0, &r), 0.9804297803131823066, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_exprel_n_e, (500, -3.0, &r), 0.9940475488850672997, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_exprel_n_e, (500, -1.0, &r), 0.9980079602383488808, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_exprel_n_e, (500, -1.0e-8, &r), 1.0 -1.0e-8/501.0, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_exprel_n_e, (500, 1.0e-8, &r), 1.0 +1.0e-8/501.0, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_exprel_n_e, (500, 1.0, &r), 1.0019999920160634252, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_exprel_n_e, (500, 3.0, &r), 1.0060240236632444934, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_exprel_n_e, (500, 48.0, &r), 1.1059355517981272174, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_exprel_n_e, (500, 100.0, &r), 1.2492221464878287204, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_exprel_n_e, (500, 500.0, &r), 28.363019877927630858, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_exprel_n_e, (500, 1000.0, &r), 2.4037563160335300322e+68, TEST_TOL4, GSL_SUCCESS); + TEST_SF(s, gsl_sf_exprel_n_e, (500, 1600.0, &r), 7.899293535320607403e+226, TEST_TOL4, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_exprel_n_e, (1263131.0, 1261282.3637, &r), 545.0113107238425900305428360, TEST_TOL4, GSL_SUCCESS); + TEST_SF(s, gsl_sf_exprel_n_CF_e, (6.315655e+05, 6.302583168053568806e+05, &r), 385.425369029433473098652465720, TEST_TOL4, GSL_SUCCESS); + + return s; +} + + +int test_expint(void) +{ + gsl_sf_result r; + int s = 0; + + TEST_SF(s, gsl_sf_expint_E1_e, (-1.0, &r), -1.8951178163559367555, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_expint_E1_e, (1.0e-10, &r), 22.448635265138923980, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_expint_E1_e, (1.0e-05, &r), 10.935719800043695615, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_expint_E1_e, (0.1, &r), 1.82292395841939066610, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_expint_E1_e, (1.0, &r), 0.21938393439552027368, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_expint_E1_e, (10.0, &r), 4.156968929685324277e-06, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_expint_E1_e, (50.0, &r), 3.783264029550459019e-24, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_expint_E1_e, (300.0, &r), 1.710384276804510115e-133, TEST_TOL2, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_expint_E2_e, (-1.0, &r), 0.8231640121031084799, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_expint_E2_e, (0.0, &r), 1.0, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_expint_E2_e, (1.0/4294967296.0, &r), 0.9999999947372139168, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_expint_E2_e, (1.0/65536.0, &r), 0.9998243233207178845, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_expint_E2_e, (0.1, &r), 0.7225450221940205066, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_expint_E2_e, (1.0, &r), 0.14849550677592204792, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_expint_E2_e, (10.0, &r), 3.830240465631608762e-06, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_expint_E2_e, (50.0, &r), 3.711783318868827367e-24, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_expint_E2_e, (300.0, &r), 1.7047391998483433998e-133, TEST_TOL2, GSL_SUCCESS); + + /* Tests for E_n(x) */ + + TEST_SF(s, gsl_sf_expint_En_e, (1,-1.0, &r), -1.8951178163559367555, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_expint_En_e, (1,1.0e-10, &r), 22.448635265138923980, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_expint_En_e, (1,1.0e-05, &r), 10.935719800043695615, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_expint_En_e, (1,0.1, &r), 1.82292395841939066610, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_expint_En_e, (1,1.0, &r), 0.21938393439552027368, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_expint_En_e, (1,10.0, &r), 4.156968929685324277e-06, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_expint_En_e, (1,50.0, &r), 3.783264029550459019e-24, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_expint_En_e, (1,300.0, &r), 1.710384276804510115e-133, TEST_TOL2, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_expint_En_e, (2,-1.0, &r), 0.8231640121031084799, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_expint_En_e, (2,0.0, &r), 1.0, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_expint_En_e, (2,1.0/4294967296.0, &r), 0.9999999947372139168, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_expint_En_e, (2,1.0/65536.0, &r), 0.9998243233207178845, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_expint_En_e, (2,0.1, &r), 0.7225450221940205066, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_expint_En_e, (2,1.0, &r), 0.14849550677592204792, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_expint_En_e, (2,10.0, &r), 3.830240465631608762e-06, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_expint_En_e, (2,50.0, &r), 3.711783318868827367e-24, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_expint_En_e, (2,300.0, &r), 1.7047391998483433998e-133, TEST_TOL2, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_expint_En_e, (3,0.0, &r), 0.5, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_expint_En_e, (3,1.0/4294967296.0, &r), 0.499999999767169356972, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_expint_En_e, (3,1.0/65536.0, &r), 0.4999847426094515610, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_expint_En_e, (3,0.1, &r), 0.4162914579082787612543, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_expint_En_e, (3,1.0, &r), 0.10969196719776013683858, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_expint_En_e, (3,10.0, &r),0.000003548762553084381959981, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_expint_En_e, (3,50.0, &r), 3.6429094264752049812e-24, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_expint_En_e, (3,300.0, &r),1.699131143349179084e-133, TEST_TOL2, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_expint_En_e, (10,0.0, &r), 0.111111111111111111, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_expint_En_e, (10,1.0/4294967296.0, &r), 0.111111111082007280658, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_expint_En_e, (10,1.0/65536.0, &r), 0.11110920377910896018606, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_expint_En_e, (10,0.1, &r), 0.099298432000896813567905, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_expint_En_e, (10,1.0, &r), 0.036393994031416401634164534, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_expint_En_e, (10,10.0, &r), 0.00000232530265702821081778968, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_expint_En_e, (10,50.0, &r), 3.223296586749110919572e-24, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_expint_En_e, (10,300.0, &r), 1.6608815083360041367294736e-133, TEST_TOL2, GSL_SUCCESS); + + /* Tests for Ei(x) */ + + TEST_SF(s, gsl_sf_expint_Ei_e, (-1.0, &r), -0.21938393439552027368, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_expint_Ei_e, (1.0/4294967296.0, &r), -21.603494112783886397, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_expint_Ei_e, (1.0, &r), 1.8951178163559367555, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_expint_E1_scaled_e, (-10000.0, &r), -0.00010001000200060024012, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_expint_E1_scaled_e, (-1000.0, &r), -0.0010010020060241207251, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_expint_E1_scaled_e, (-10.0, &r), -0.11314702047341077803, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_expint_E1_scaled_e, (-1.0, &r), -0.69717488323506606877, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_expint_E1_scaled_e, (1.0e-10, &r), 22.448635267383787506, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_expint_E1_scaled_e, (1.0e-05, &r), 10.935829157788483865, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_expint_E1_scaled_e, (0.1, &r), 2.0146425447084516791, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_expint_E1_scaled_e, (1.0, &r), 0.59634736232319407434, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_expint_E1_scaled_e, (10.0, &r), 0.091563333939788081876, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_expint_E1_scaled_e, (50.0, &r), 0.019615109930114870365, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_expint_E1_scaled_e, (300.0, &r), 0.0033222955652707070644, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_expint_E1_scaled_e, (1000.0, &r), 0.00099900199402388071500, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_expint_E1_scaled_e, (10000.0, &r), 0.000099990001999400239880, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_expint_E2_scaled_e, (-10000.0, &r), -0.00010002000600240120072, TEST_TOL3, GSL_SUCCESS); + TEST_SF(s, gsl_sf_expint_E2_scaled_e, (-1000.0, &r), -0.0010020060241207250807, TEST_TOL3, GSL_SUCCESS); + TEST_SF(s, gsl_sf_expint_E2_scaled_e, (-10.0, &r), -0.13147020473410778034, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_expint_E2_scaled_e, (-1.0, &r), 0.30282511676493393123, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_expint_E2_scaled_e, (0.0, &r), 1.0, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_expint_E2_scaled_e, (1.0/4294967296.0, &r), 0.99999999497004455927, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_expint_E2_scaled_e, (1.0/65536.0, &r), 0.99983957954556245453, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_expint_E2_scaled_e, (0.1, &r), 0.79853574552915483209, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_expint_E2_scaled_e, (1.0, &r), 0.40365263767680592566, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_expint_E2_scaled_e, (10.0, &r), 0.084366660602119181239, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_expint_E2_scaled_e, (50.0, &r), 0.019244503494256481735, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_expint_E2_scaled_e, (300.0, &r), 0.0033113304187878806691, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_expint_E2_scaled_e, (1000.0, &r), 0.00099800597611928500004, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_expint_E2_scaled_e, (10000.0, &r), 0.000099980005997601199281, TEST_TOL0, GSL_SUCCESS); + + /* Tests for E_n(x) */ + + + TEST_SF(s, gsl_sf_expint_En_scaled_e, (1,-10000.0, &r), -0.00010001000200060024012, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_expint_En_scaled_e, (1,-1000.0, &r), -0.0010010020060241207251, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_expint_En_scaled_e, (1,-10.0, &r), -0.11314702047341077803, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_expint_En_scaled_e, (1,-1.0, &r), -0.69717488323506606877, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_expint_En_scaled_e, (1,1.0e-10, &r), 22.448635267383787506, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_expint_En_scaled_e, (1,1.0e-05, &r), 10.935829157788483865, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_expint_En_scaled_e, (1,0.1, &r), 2.0146425447084516791, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_expint_En_scaled_e, (1,1.0, &r), 0.59634736232319407434, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_expint_En_scaled_e, (1,10.0, &r), 0.091563333939788081876, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_expint_En_scaled_e, (1,50.0, &r), 0.019615109930114870365, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_expint_En_scaled_e, (1,300.0, &r), 0.0033222955652707070644, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_expint_En_scaled_e, (1,1000.0, &r), 0.00099900199402388071500, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_expint_En_scaled_e, (1,10000.0, &r), 0.000099990001999400239880, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_expint_En_scaled_e, (2,-10000.0, &r), -0.00010002000600240120072, TEST_TOL3, GSL_SUCCESS); + TEST_SF(s, gsl_sf_expint_En_scaled_e, (2,-1000.0, &r), -0.0010020060241207250807, TEST_TOL3, GSL_SUCCESS); + TEST_SF(s, gsl_sf_expint_En_scaled_e, (2,-10.0, &r), -0.13147020473410778034, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_expint_En_scaled_e, (2,-1.0, &r), 0.30282511676493393123, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_expint_En_scaled_e, (2,0.0, &r), 1.0, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_expint_En_scaled_e, (2,1.0/4294967296.0, &r), 0.99999999497004455927, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_expint_En_scaled_e, (2,1.0/65536.0, &r), 0.99983957954556245453, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_expint_En_scaled_e, (2,0.1, &r), 0.79853574552915483209, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_expint_En_scaled_e, (2,1.0, &r), 0.40365263767680592566, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_expint_En_scaled_e, (2,10.0, &r), 0.084366660602119181239, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_expint_En_scaled_e, (2,50.0, &r), 0.019244503494256481735, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_expint_En_scaled_e, (2,300.0, &r), 0.0033113304187878806691, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_expint_En_scaled_e, (2,1000.0, &r), 0.00099800597611928500004, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_expint_En_scaled_e, (2,10000.0, &r), 0.000099980005997601199281, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_expint_En_scaled_e, (3,0.0, &r), 0.5, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_expint_En_scaled_e, (3,1.0/4294967296.0, &r), 0.4999999998835846787586, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_expint_En_scaled_e, (3,1.0/65536.0, &r), 0.4999923718293796877864492, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_expint_En_scaled_e, (3,0.1, &r), 0.4600732127235422583955, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_expint_En_scaled_e, (3,1.0, &r), 0.298173681161597037170539, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_expint_En_scaled_e, (3,10.0, &r), 0.07816669698940409380349, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_expint_En_scaled_e, (3,50.0, &r), 0.0188874126435879566345, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_expint_En_scaled_e, (3,300.0, &r), 0.00330043718181789963028657675, TEST_TOL2, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_expint_En_scaled_e, (10,0.0, &r), 0.111111111111111111, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_expint_En_scaled_e, (10,1.0/4294967296.0, &r), 0.11111111110787735217158, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_expint_En_scaled_e, (10,1.0/65536.0, &r), 0.1111108991839472074435, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_expint_En_scaled_e, (10,0.1, &r), 0.1097417392579033988025, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_expint_En_scaled_e, (10,1.0, &r), 0.09892913264064615521915, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_expint_En_scaled_e, (10,10.0, &r), 0.0512181994376050593314159875, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_expint_En_scaled_e, (10,50.0, &r), 0.0167118436335939556034579, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_expint_En_scaled_e, (10,300.0, &r), 0.0032261400811599644878615, TEST_TOL2, GSL_SUCCESS); + + + TEST_SF(s, gsl_sf_expint_Ei_scaled_e, (-1000.0, &r), -0.00099900199402388071500, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_expint_Ei_scaled_e, (-1.0, &r), -0.59634736232319407434, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_expint_Ei_scaled_e, (1.0/4294967296.0, &r), -21.603494107753930958, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_expint_Ei_scaled_e, (1.0, &r), 0.69717488323506606877, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_expint_Ei_scaled_e, (1000.0, &r), 0.0010010020060241207251, TEST_TOL0, GSL_SUCCESS); + + + TEST_SF(s, gsl_sf_Shi_e, (-1.0, &r), -1.0572508753757285146, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_Shi_e, (1.0/4294967296.0, &r), 2.3283064365386962891e-10, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_Shi_e, (1.0/65536.0, &r), 0.00001525878906269737298, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_Shi_e, (0.1, &r), 0.1000555722250569955, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_Shi_e, (1.0, &r), 1.0572508753757285146, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_Shi_e, (10.0, &r), 1246.1144901994233444, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_Shi_e, (50.0, &r), 5.292818448565845482e+19, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_Shi_e, (300.0, &r), 3.248241254044332895e+127, TEST_TOL2, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_Chi_e, (-1.0, &r), 0.8378669409802082409, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_Chi_e, (1.0/4294967296.0, &r), -21.603494113016717041, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_Chi_e, (1.0/65536.0, &r), -10.513139223999384429, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_Chi_e, (1.0/8.0, &r), -1.4983170827635760646, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_Chi_e, (1.0, &r), 0.8378669409802082409, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_Chi_e, (10.0, &r), 1246.1144860424544147, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_Chi_e, (50.0, &r), 5.292818448565845482e+19, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_Chi_e, (300.0, &r), 3.248241254044332895e+127, TEST_TOL2, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_expint_3_e, (1.0e-10, &r), 1.0e-10, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_expint_3_e, (1.0e-05, &r), 9.9999999999999975e-06, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_expint_3_e, (0.1, &r), 0.09997500714119079665122, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_expint_3_e, (0.5, &r), 0.48491714311363971332427, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_expint_3_e, (1.0, &r), 0.80751118213967145285833, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_expint_3_e, (2.0, &r), 0.89295351429387631138208, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_expint_3_e, (5.0, &r), 0.89297951156924921121856, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_expint_3_e, (10.0, &r), 0.89297951156924921121856, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_expint_3_e, (100.0, &r), 0.89297951156924921121856, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_Si_e, (-1.0, &r), -0.9460830703671830149, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_Si_e, (1.0e-10, &r), 1.0e-10, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_Si_e, (1.0e-05, &r), 9.999999999944444444e-06, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_Si_e, (0.1, &r), 0.09994446110827695016, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_Si_e, (1.0, &r), 0.9460830703671830149, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_Si_e, (10.0, &r), 1.6583475942188740493, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_Si_e, (50.0, &r), 1.5516170724859358947, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_Si_e, (300.0, &r), 1.5708810882137495193, TEST_TOL0, GSL_SUCCESS); + /* + TEST_SF(s, gsl_sf_Si_e, (1.0e+20, &r), 1.5707963267948966192, TEST_TOL0, GSL_SUCCESS); + */ + + TEST_SF(s, gsl_sf_Ci_e, (1.0/4294967296.0, &r), -21.603494113016717041, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_Ci_e, (1.0/65536.0, &r), -10.513139224115799751, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_Ci_e, (1.0/8.0, &r), -1.5061295845296396649, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_Ci_e, (1.0, &r), 0.3374039229009681347, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_Ci_e, (10.0, &r), -0.04545643300445537263, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_Ci_e, (50.0, &r), -0.005628386324116305440, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_Ci_e, (300.0, &r), -0.003332199918592111780, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_Ci_e, (65536.0, &r), 0.000010560248837656279453, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_Ci_e, (4294967296.0, &r), -1.0756463261957757485e-10, TEST_SQRT_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_Ci_e, (1099511627776.0, &r), -3.689865584710764214e-13, 1024.0*TEST_SQRT_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_atanint_e, (1.0e-10, &r), 1.0e-10, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_atanint_e, (1.0e-05, &r), 9.99999999988888888889e-06, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_atanint_e, (0.1, &r), 0.09988928686033618404, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_atanint_e, (1.0, &r), 0.91596559417721901505, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_atanint_e, (2.0, &r), 1.57601540344632342236, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_atanint_e, (10.0, &r), 3.71678149306806859029, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_atanint_e, (50.0, &r), 6.16499047850274874222, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_atanint_e, (300.0, &r), 8.96281388924518959990, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_atanint_e, (1.0e+5, &r), 18.084471031038661920, TEST_TOL0, GSL_SUCCESS); + + /* Bug report from Wolfgang Ehrhardt */ + TEST_SF(s, gsl_sf_atanint_e, (1.0e+9, &r), 32.552029856869591656, TEST_TOL0, GSL_SUCCESS); + + return s; +} + + +int test_fermidirac(void) +{ + gsl_sf_result r; + int s = 0; + + TEST_SF(s, gsl_sf_fermi_dirac_m1_e, (-10.0, &r), 0.00004539786870243439450, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_fermi_dirac_m1_e, ( -1.0, &r), 0.26894142136999512075, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_fermi_dirac_m1_e, ( 1.0, &r), 0.7310585786300048793, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_fermi_dirac_m1_e, ( 10.0, &r), 0.9999546021312975656, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_fermi_dirac_0_e, (-10.0, &r), 0.00004539889921686464677, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_fermi_dirac_0_e, ( -1.0, &r), 0.31326168751822283405, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_fermi_dirac_0_e, ( 1.0, &r), 1.3132616875182228340, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_fermi_dirac_0_e, ( 10.0, &r), 10.000045398899216865, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_fermi_dirac_1_e, (-10.0, &r), 0.00004539941448447633524, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_fermi_dirac_1_e, ( -2.0, &r), 0.13101248471442377127, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_fermi_dirac_1_e, ( -1.0, &r), 0.3386479964034521798, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_fermi_dirac_1_e, ( -0.4, &r), 0.5825520806897909028, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_fermi_dirac_1_e, ( 0.4, &r), 1.1423819861584355337, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_fermi_dirac_1_e, ( 1.0, &r), 1.8062860704447742567, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_fermi_dirac_1_e, ( 1.5, &r), 2.5581520872227806402, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_fermi_dirac_1_e, ( 2.5, &r), 4.689474797599761667, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_fermi_dirac_1_e, ( 10.0, &r), 51.64488866743374196, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_fermi_dirac_1_e, ( 12.0, &r), 73.64492792264531092, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_fermi_dirac_1_e, ( 20.0, &r), 201.64493406478707282, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_fermi_dirac_1_e, ( 50.0, &r), 1251.6449340668482264, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_fermi_dirac_2_e, (-10.0, &r), 0.00004539967212174776662, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_fermi_dirac_2_e, ( -2.0, &r), 0.13313272938565030508, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_fermi_dirac_2_e, ( -1.0, &r), 0.3525648792978077590, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_fermi_dirac_2_e, ( -0.4, &r), 0.6229402647001272120, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_fermi_dirac_2_e, ( 0.4, &r), 1.2915805581060844533, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_fermi_dirac_2_e, ( 1.0, &r), 2.1641656128127008622, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_fermi_dirac_2_e, ( 1.5, &r), 3.247184513920792475, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_fermi_dirac_2_e, ( 2.5, &r), 6.797764392735056317, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_fermi_dirac_2_e, ( 10.0, &r), 183.11605273482105278, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_fermi_dirac_2_e, ( 12.0, &r), 307.73921494638635166, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_fermi_dirac_2_e, ( 20.0, &r), 1366.2320146723590157, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_fermi_dirac_2_e, ( 50.0, &r), 20915.580036675744655, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_fermi_dirac_2_e, (200.0, &r), 1.3336623201467029786e+06, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_fermi_dirac_mhalf_e, (-10.0, &r), 0.00004539847236080549532, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_fermi_dirac_mhalf_e, ( -2.0, &r), 0.12366562180120994266, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_fermi_dirac_mhalf_e, ( -1.0, &r), 0.29402761761145122022, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_fermi_dirac_mhalf_e, ( -0.4, &r), 0.4631755336886027800, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_fermi_dirac_mhalf_e, ( 0.4, &r), 0.7654084737661656915, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_fermi_dirac_mhalf_e, ( 1.0, &r), 1.0270571254743506890, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_fermi_dirac_mhalf_e, ( 1.5, &r), 1.2493233478527122008, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_fermi_dirac_mhalf_e, ( 2.5, &r), 1.6663128834358313625, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_fermi_dirac_mhalf_e, ( 10.0, &r), 3.552779239536617160, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_fermi_dirac_mhalf_e, ( 12.0, &r), 3.897268231925439359, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_fermi_dirac_mhalf_e, ( 20.0, &r), 5.041018507535328603, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_fermi_dirac_mhalf_e, ( 50.0, &r), 7.977530858581869960, TEST_TOL1, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_fermi_dirac_half_e, (-10.0, &r), 0.00004539920105264132755, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_fermi_dirac_half_e, ( -2.0, &r), 0.12929851332007559106, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_fermi_dirac_half_e, ( -1.0, &r), 0.3277951592607115477, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_fermi_dirac_half_e, ( -0.4, &r), 0.5522452153690688947, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_fermi_dirac_half_e, ( 0.4, &r), 1.0386797503389389277, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_fermi_dirac_half_e, ( 1.0, &r), 1.5756407761513002308, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_fermi_dirac_half_e, ( 1.5, &r), 2.1448608775831140360, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_fermi_dirac_half_e, ( 2.5, &r), 3.606975377950373251, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_fermi_dirac_half_e, ( 10.0, &r), 24.084656964637653615, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_fermi_dirac_half_e, ( 12.0, &r), 31.540203287044242593, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_fermi_dirac_half_e, ( 20.0, &r), 67.49151222165892049, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_fermi_dirac_half_e, ( 50.0, &r), 266.09281252136259343, TEST_TOL1, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_fermi_dirac_3half_e, (-10.0, &r), 0.00004539956540456176333, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_fermi_dirac_3half_e, ( -2.0, &r), 0.13224678225177236685, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_fermi_dirac_3half_e, ( -1.0, &r), 0.3466747947990574170, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_fermi_dirac_3half_e, ( -0.4, &r), 0.6056120213305040910, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_fermi_dirac_3half_e, ( 0.4, &r), 1.2258236403963668282, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_fermi_dirac_3half_e, ( 1.0, &r), 2.0022581487784644573, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_fermi_dirac_3half_e, ( 1.5, &r), 2.9277494127932173068, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_fermi_dirac_3half_e, ( 2.5, &r), 5.768879312210516582, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_fermi_dirac_3half_e, ( 10.0, &r), 101.00510084332600020, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_fermi_dirac_3half_e, ( 12.0, &r), 156.51518642795728036, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_fermi_dirac_3half_e, ( 20.0, &r), 546.5630100657601959, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_fermi_dirac_3half_e, ( 50.0, &r), 5332.353566687145552, TEST_TOL1, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_fermi_dirac_int_e, (3, -2.0, &r), 0.1342199155038680215, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_fermi_dirac_int_e, (3, 0.0, &r), 0.9470328294972459176, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_fermi_dirac_int_e, (3, 0.1, &r), 1.0414170610956165759, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_fermi_dirac_int_e, (3, 1.0, &r), 2.3982260822489407070, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_fermi_dirac_int_e, (3, 3.0, &r), 12.621635313399690724, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_fermi_dirac_int_e, (3, 100.0, &r), 4.174893231066566793e+06, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_fermi_dirac_int_e, (3, 500.0, &r), 2.604372285319088354e+09, TEST_TOL1, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_fermi_dirac_int_e, (5, -2.0, &r), 0.13505242246823676478, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_fermi_dirac_int_e, (5, 0.0, &r), 0.9855510912974351041, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_fermi_dirac_int_e, (5, 0.1, &r), 1.0876519750101492782, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_fermi_dirac_int_e, (5, 1.0, &r), 2.6222337848692390539, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_fermi_dirac_int_e, (5, 3.0, &r), 17.008801618012113022, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_fermi_dirac_int_e, (5, 100.0, &r), 1.3957522531334869874e+09, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_fermi_dirac_int_e, (5, 500.0, &r), 2.1705672808114817955e+13, TEST_TOL2, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_fermi_dirac_int_e, (7, -2.0, &r), 0.1352641105671255851, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_fermi_dirac_int_e, (7, 0.0, &r), 0.9962330018526478992, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_fermi_dirac_int_e, (7, 0.1, &r), 1.1005861815180315485, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_fermi_dirac_int_e, (7, 1.0, &r), 2.6918878172003129203, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_fermi_dirac_int_e, (7, 3.0, &r), 19.033338976999367642, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_fermi_dirac_int_e, (7, 10.0, &r), 5654.530932873610014, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_fermi_dirac_int_e, (7, 50.0, &r), 1.005005069985066278e+09, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_fermi_dirac_int_e, (7, 500.0, &r), 9.691690268341569514e+16, TEST_TOL3, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_fermi_dirac_int_e, (9, -2.0, &r), 0.1353174385330242691, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_fermi_dirac_int_e, (9, 0.0, &r), 0.9990395075982715656, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_fermi_dirac_int_e, (9, 0.1, &r), 1.1039997234712941212, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_fermi_dirac_int_e, (9, 1.0, &r), 2.7113648898129249947, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_fermi_dirac_int_e, (9, 3.0, &r), 19.768544008138602223, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_fermi_dirac_int_e, (9, 10.0, &r), 10388.990167312912478, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_fermi_dirac_int_e, (9, 50.0, &r), 2.85466960802601649e+10, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_fermi_dirac_int_e, (9, 500.0, &r), 2.69273849842695876e+20, 2*TEST_TOL1, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_fermi_dirac_int_e, (10, -2.0, &r), 0.13532635396712288092, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_fermi_dirac_int_e, (10, 0.0, &r), 0.9995171434980607541, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_fermi_dirac_int_e, (10, 0.1, &r), 1.1045818238852612296, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_fermi_dirac_int_e, (10, 1.0, &r), 2.7147765350346120647, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_fermi_dirac_int_e, (10, 3.0, &r), 19.917151938411675171, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_fermi_dirac_int_e, (10, 10.0, &r), 12790.918595516495955, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_fermi_dirac_int_e, (10, 50.0, &r), 1.3147703201869657654e+11, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_fermi_dirac_int_e, (10, 500.0, &r), 1.2241331244469204398e+22, TEST_TOL2, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_fermi_dirac_int_e, (11, -2.0, &r), 0.1353308162894847149, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_fermi_dirac_int_e, (11, 0.0, &r), 0.9997576851438581909, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_fermi_dirac_int_e, (11, 0.1, &r), 1.1048751811565850418, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_fermi_dirac_int_e, (11, 1.0, &r), 2.7165128749007313436, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_fermi_dirac_int_e, (11, 3.0, &r), 19.997483022044603065, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_fermi_dirac_int_e, (11, 10.0, &r), 14987.996005901818036, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_fermi_dirac_int_e, (11, 50.0, &r), 5.558322924078990628e+11, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_fermi_dirac_int_e, (11, 500.0, &r), 5.101293089606198280e+23, TEST_TOL2, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_fermi_dirac_int_e, (20, -2.0, &r), 0.13533527450327238373, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_fermi_dirac_int_e, (20, 0.0, &r), 0.9999995232582155428, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_fermi_dirac_int_e, (20, 0.1, &r), 1.1051703357941368203, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_fermi_dirac_int_e, (20, 1.0, &r), 2.7182783069905721654, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_fermi_dirac_int_e, (20, 3.0, &r), 20.085345296028242734, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_fermi_dirac_int_e, (20, 10.0, &r), 21898.072920149606475, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_fermi_dirac_int_e, (20, 50.0, &r), 1.236873256595717618e+16, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_fermi_dirac_int_e, (20, 500.0, &r), 9.358938204369557277e+36, TEST_TOL2, GSL_SUCCESS); + + + return s; +} + + +int test_gegen(void) +{ + gsl_sf_result r; + double ga[100]; + int s = 0; + int sa; + + TEST_SF(s, gsl_sf_gegenpoly_1_e, (-0.2, 1.0, &r), -0.4, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gegenpoly_1_e, ( 0.0, 1.0, &r), 2.0, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gegenpoly_1_e, ( 1.0, 1.0, &r), 2.0, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gegenpoly_1_e, ( 1.0, 0.5, &r), 1.0, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gegenpoly_1_e, ( 5.0, 1.0, &r), 10.0, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gegenpoly_1_e, ( 100.0, 0.5, &r), 100.0, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_gegenpoly_2_e, (-0.2, 0.5, &r), 0.12, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gegenpoly_2_e, ( 0.0, 1.0, &r), 1.00, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gegenpoly_2_e, ( 1.0, 1.0, &r), 3.00, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gegenpoly_2_e, ( 1.0, 0.1, &r), -0.96, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gegenpoly_2_e, ( 5.0, 1.0, &r), 55.0, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gegenpoly_2_e, ( 100.0, 0.5, &r), 4950.0, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_gegenpoly_3_e, (-0.2, 0.5, &r), 0.112, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gegenpoly_3_e, ( 0.0, 1.0, &r), -2.0/3.0, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gegenpoly_3_e, ( 1.0, 1.0, &r), 4.000, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gegenpoly_3_e, ( 1.0, 0.1, &r), -0.392, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gegenpoly_3_e, ( 5.0, 1.0, &r), 220.000, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gegenpoly_3_e, ( 100.0, 0.5, &r), 161600.000, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_gegenpoly_n_e, (1, 1.0, 1.0, &r), 2.000 , TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gegenpoly_n_e, (10, 1.0, 1.0, &r), 11.000 , TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gegenpoly_n_e, (10, 1.0, 0.1, &r), -0.4542309376 , TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gegenpoly_n_e, (10, 5.0, 1.0, &r), 9.23780e+4 , TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gegenpoly_n_e, (10, 100.0, 0.5, &r), 1.5729338392690000e+13, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gegenpoly_n_e, (1000, 100.0, 1.0, &r), 3.3353666135627322e+232, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gegenpoly_n_e, (100, 2000.0, 1.0, &r), 5.8753432034937579e+202, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gegenpoly_n_e, (103, 207.0, 2.0, &r), 1.4210272202235983e+145, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gegenpoly_n_e, (103, -0.4, 0.3, &r), -1.64527498094522e-04, TEST_TOL1, GSL_SUCCESS); + + sa = 0; + gsl_sf_gegenpoly_array(99, 5.0, 1.0, ga); + sa += ( test_sf_frac_diff( ga[1], 10.0 ) > TEST_TOL0 ); + sa += ( test_sf_frac_diff( ga[10], 9.23780e+4 ) > TEST_TOL0 ); + gsl_test(sa, " gsl_sf_gegenpoly_array"); + s += sa; + + return s; +} + + +int test_jac(void) +{ + double u, m; + double sn, cn, dn; + int stat_ej; + int s = 0; + int sa; + + u = 0.5; + m = 0.5; + sa = 0; + stat_ej = gsl_sf_elljac_e(u, m, &sn, &cn, &dn); + sa += test_sf_val(sn, 0.4707504736556572833, TEST_TOL0, "gsl_sf_elljac_e(0.5|0.5) sn"); + sa += test_sf_val(cn, 0.8822663948904402865, TEST_TOL0, "gsl_sf_elljac_e(0.5|0.5) cn"); + sa += test_sf_val(dn, 0.9429724257773856873, TEST_TOL0, "gsl_sf_elljac_e(0.5|0.5) dn"); + gsl_test(s, " gsl_sf_elljac_e(0.5|0.5)"); + s += sa; + + u = 1.0; + m = 0.3; + sa = 0; + stat_ej = gsl_sf_elljac_e(u, m, &sn, &cn, &dn); + sa += test_sf_val(sn, 0.8187707145344889190, TEST_TOL0, "gsl_sf_elljac_e(1.0|0.3) sn"); + sa += test_sf_val(cn, 0.5741206467465548795, TEST_TOL0, "gsl_sf_elljac_e(1.0|0.3) cn"); + sa += test_sf_val(dn, 0.8938033089590823040, TEST_TOL0, "gsl_sf_elljac_e(1.0|0.3) dn"); + gsl_test(sa, " gsl_sf_elljac_e(1.0|0.3)"); + s += sa; + + u = 1.0; + m = 0.6; + sa = 0; + stat_ej = gsl_sf_elljac_e(u, m, &sn, &cn, &dn); + sa += test_sf_val(sn, 0.7949388393365780943, TEST_TOL0, "gsl_sf_elljac_e(1.0|0.6) sn"); + sa += test_sf_val(cn, 0.6066895760718277578, TEST_TOL0, "gsl_sf_elljac_e(1.0|0.6) cn"); + sa += test_sf_val(dn, 0.7879361300438814425, TEST_TOL0, "gsl_sf_elljac_e(1.0|0.6) dn"); + gsl_test(sa, " gsl_sf_elljac_e(1.0|0.6)"); + s += sa; + + u = 3.0; + m = 0.6; + sa = 0; + stat_ej = gsl_sf_elljac_e(u, m, &sn, &cn, &dn); + sa += test_sf_val(sn, 0.7432676860864044186, TEST_TOL0, " gsl_sf_elljac_e(3.0|0.6) sn"); + sa += test_sf_val(cn, -0.6689941306317733154, TEST_TOL0, " gsl_sf_elljac_e(3.0|0.6) cn"); + sa += test_sf_val(dn, 0.8176379933025723259, TEST_TOL0, " gsl_sf_elljac_e(3.0|0.6) dn"); + gsl_test(sa, " gsl_sf_elljac_e(3.0|0.6)"); + s += sa; + + u = 2.0; + m = 0.999999; + sa = 0; + stat_ej = gsl_sf_elljac_e(u, m, &sn, &cn, &dn); + sa += test_sf_val(sn, 0.96402778575700186570, TEST_TOL1, "gsl_sf_elljac_e(2.0|0.999999) sn"); + sa += test_sf_val(cn, 0.26580148285600686381, TEST_TOL1, "gsl_sf_elljac_e(2.0|0.999999) cn"); + sa += test_sf_val(dn, 0.26580323105264131136, TEST_TOL1, "gsl_sf_elljac_e(2.0|0.999999) dn"); + gsl_test(sa, " gsl_sf_elljac_e(2.0|0.999999)"); + s += sa; + + /* test supplied by Ivan Panchenko */ + u = 1.69695970624443; + m = 0.270378013104138; + sa = 0; + stat_ej = gsl_sf_elljac_e(u, m, &sn, &cn, &dn); + sa += test_sf_val(sn, 1.0, TEST_TOL0, "gsl_sf_elljac_e(1.69..|0.27..) sn"); + sa += test_sf_val(cn, 0.0, TEST_TOL1, "gsl_sf_elljac_e(1.69..|0.27..) cn"); + sa += test_sf_val(dn, 0.8541791304497336, TEST_TOL1, "gsl_sf_elljac_e(1.69..|0.27..) dn"); + gsl_test(sa, " gsl_sf_elljac_e(1.69695970624443|0.270378013104138)"); + s += sa; + + + + /* Check known values from Abramowitz & Stegun, Table 16.5 */ + u = 0; + m = 0.1; + + { + double mc = 1 - m; + /* quarter period K is (pi/2)/agm(1,mc) */ + double K = (M_PI_2)/ 0.9741726903999478375938128316; + + double A = 1.0 / sqrt(1+sqrt(mc)); + double B = pow(mc, 0.25) / sqrt(1+sqrt(mc)); + double C = pow(mc, 0.25); + double C2 = sqrt(mc); + + double eps = 1e-10; + + sa = 0; + stat_ej = gsl_sf_elljac_e(0.0, m, &sn, &cn, &dn); + sa += test_sf_val(sn, 0.0, TEST_TOL0, "gsl_sf_elljac_e(0|0.1) sn"); + sa += test_sf_val(cn, 1.0, TEST_TOL0, "gsl_sf_elljac_e(0|0.1) cn"); + sa += test_sf_val(dn, 1.0, TEST_TOL0, "gsl_sf_elljac_e(0|0.1) dn"); + gsl_test(sa, " gsl_sf_elljac_e(0|0.1)"); + s += sa; + + sa = 0; + stat_ej = gsl_sf_elljac_e(-eps, m, &sn, &cn, &dn); + sa += test_sf_val(sn, -eps, TEST_TOL0, "gsl_sf_elljac_e(-1e-10|0.1) sn"); + sa += test_sf_val(cn, 1.0, TEST_TOL0, "gsl_sf_elljac_e(-1e-10|0.1) cn"); + sa += test_sf_val(dn, 1.0, TEST_TOL0, "gsl_sf_elljac_e(-1e-10|0.1) dn"); + gsl_test(sa, " gsl_sf_elljac_e(-1e-10|0.1)"); + s += sa; + + sa = 0; + stat_ej = gsl_sf_elljac_e(eps, m, &sn, &cn, &dn); + sa += test_sf_val(sn, eps, TEST_TOL0, "gsl_sf_elljac_e(1e-10|0.1) sn"); + sa += test_sf_val(cn, 1.0, TEST_TOL0, "gsl_sf_elljac_e(1e-10|0.1) cn"); + sa += test_sf_val(dn, 1.0, TEST_TOL0, "gsl_sf_elljac_e(1e-10|0.1) dn"); + gsl_test(sa, " gsl_sf_elljac_e(1e-10|0.1)"); + s += sa; + + sa = 0; + stat_ej = gsl_sf_elljac_e(1e-30, m, &sn, &cn, &dn); + sa += test_sf_val(sn, 1e-30, TEST_TOL0, "gsl_sf_elljac_e(1e-30|0.1) sn"); + sa += test_sf_val(cn, 1.0, TEST_TOL0, "gsl_sf_elljac_e(1e-30|0.1) cn"); + sa += test_sf_val(dn, 1.0, TEST_TOL0, "gsl_sf_elljac_e(1e-30|0.1) dn"); + gsl_test(sa, " gsl_sf_elljac_e(1e-30|0.1)"); + s += sa; + + sa = 0; + stat_ej = gsl_sf_elljac_e(K / 2.0 - eps, m, &sn, &cn, &dn); + sa += test_sf_val(sn, A - eps*B*C, TEST_TOL2, "gsl_sf_elljac_e(K/2-1e-10|0.1) sn"); + sa += test_sf_val(cn, B + eps*A*C, TEST_TOL2, "gsl_sf_elljac_e(K/2-1e-10|0.1) cn"); + sa += test_sf_val(dn, C + m*eps*A*B, TEST_TOL2, "gsl_sf_elljac_e(K/2-1e-10|0.1) dn"); + gsl_test(sa, " gsl_sf_elljac_e(K/2-1e-10|0.1)"); + s += sa; + + sa = 0; + stat_ej = gsl_sf_elljac_e(K / 2.0, m, &sn, &cn, &dn); + sa += test_sf_val(sn, A, TEST_TOL2, "gsl_sf_elljac_e(K/2|0.1) sn"); + sa += test_sf_val(cn, B, TEST_TOL2, "gsl_sf_elljac_e(K/2|0.1) cn"); + sa += test_sf_val(dn, C, TEST_TOL2, "gsl_sf_elljac_e(K/2|0.1) dn"); + gsl_test(sa, " gsl_sf_elljac_e(K/2|0.1)"); + s += sa; + + sa = 0; + stat_ej = gsl_sf_elljac_e(K / 2.0 + eps, m, &sn, &cn, &dn); + sa += test_sf_val(sn, A + eps*B*C, TEST_TOL2, "gsl_sf_elljac_e(K/2+1e-10|0.1) sn"); + sa += test_sf_val(cn, B - eps*A*C, TEST_TOL2, "gsl_sf_elljac_e(K/2+1e-10|0.1) cn"); + sa += test_sf_val(dn, C - m*eps*A*B, TEST_TOL2, "gsl_sf_elljac_e(K/2+1e-10|0.1) dn"); + gsl_test(sa, " gsl_sf_elljac_e(K/2+1e-10|0.1)"); + s += sa; + + sa = 0; + stat_ej = gsl_sf_elljac_e(K - eps, m, &sn, &cn, &dn); + sa += test_sf_val(sn, 1.0, TEST_TOL1, "gsl_sf_elljac_e(K-1e-10|0.1) sn"); + sa += test_sf_val(cn, eps*C2, 10*TEST_SNGL, "gsl_sf_elljac_e(K-1e-10|0.1) cn"); + sa += test_sf_val(dn, C2, TEST_TOL2, "gsl_sf_elljac_e(K-1e-10|0.1) dn"); + gsl_test(sa, " gsl_sf_elljac_e(K-1e-10|0.1)"); + s += sa; + + sa = 0; + stat_ej = gsl_sf_elljac_e(K, m, &sn, &cn, &dn); + sa += test_sf_val(sn, 1.0, TEST_TOL1, "gsl_sf_elljac_e(K|0.1) sn"); + sa += test_sf_val(cn, 0.0, TEST_TOL1, "gsl_sf_elljac_e(K|0.1) cn"); + sa += test_sf_val(dn, C2, TEST_TOL2, "gsl_sf_elljac_e(K|0.1) dn"); + gsl_test(sa, " gsl_sf_elljac_e(K|0.1)"); + s += sa; + + sa = 0; + stat_ej = gsl_sf_elljac_e(K + eps, m, &sn, &cn, &dn); + sa += test_sf_val(sn, 1.0, TEST_TOL1, "gsl_sf_elljac_e(K+1e-10|0.1) sn"); + sa += test_sf_val(cn, -eps*C2, 10*TEST_SNGL, "gsl_sf_elljac_e(K+1e-10|0.1) cn"); + sa += test_sf_val(dn, C2, TEST_TOL2, "gsl_sf_elljac_e(K+1e-10|0.1) dn"); + gsl_test(sa, " gsl_sf_elljac_e(K+1e-10|0.1)"); + s += sa; + + sa = 0; + stat_ej = gsl_sf_elljac_e(3.0*K / 2.0, m, &sn, &cn, &dn); + sa += test_sf_val(sn, A, TEST_TOL2, "gsl_sf_elljac_e(3K/2|0.1) sn"); + sa += test_sf_val(cn, -B, TEST_TOL2, "gsl_sf_elljac_e(3K/2|0.1) cn"); + sa += test_sf_val(dn, C, TEST_TOL2, "gsl_sf_elljac_e(3K/2|0.1) dn"); + gsl_test(sa, " gsl_sf_elljac_e(3K/2|0.1)"); + s += sa; + + + sa = 0; + stat_ej = gsl_sf_elljac_e(2.0*K - eps, m, &sn, &cn, &dn); + sa += test_sf_val(sn, eps, 10*TEST_SNGL, "gsl_sf_elljac_e(2K-1e-10|0.1) sn"); + sa += test_sf_val(cn, -1.0, TEST_TOL1, "gsl_sf_elljac_e(2K-1e-10|0.1) cn"); + sa += test_sf_val(dn, 1.0, TEST_TOL1, "gsl_sf_elljac_e(2K-1e-10|0.1) dn"); + gsl_test(sa, " gsl_sf_elljac_e(2K-1e-10|0.1)"); + s += sa; + + sa = 0; + stat_ej = gsl_sf_elljac_e(2.0*K, m, &sn, &cn, &dn); + sa += test_sf_val(sn, 0.0, TEST_TOL1, "gsl_sf_elljac_e(2K|0.1) sn"); + sa += test_sf_val(cn, -1.0, TEST_TOL1, "gsl_sf_elljac_e(2K|0.1) cn"); + sa += test_sf_val(dn, 1.0, TEST_TOL1, "gsl_sf_elljac_e(2K|0.1) dn"); + gsl_test(sa, " gsl_sf_elljac_e(2K|0.1)"); + s += sa; + + sa = 0; + stat_ej = gsl_sf_elljac_e(2.0*K + eps, m, &sn, &cn, &dn); + sa += test_sf_val(sn, -eps, 10*TEST_SNGL, "gsl_sf_elljac_e(2K+1e-10|0.1) sn"); + sa += test_sf_val(cn, -1.0, TEST_TOL1, "gsl_sf_elljac_e(2K+1e-10|0.1) cn"); + sa += test_sf_val(dn, 1.0, TEST_TOL1, "gsl_sf_elljac_e(2K+1e-10|0.1) dn"); + gsl_test(sa, " gsl_sf_elljac_e(2K+1e-10|0.1)"); + s += sa; + + sa = 0; + stat_ej = gsl_sf_elljac_e(5.0*K / 2.0, m, &sn, &cn, &dn); + sa += test_sf_val(sn, -A, TEST_TOL2, "gsl_sf_elljac_e(5K/2|0.1) sn"); + sa += test_sf_val(cn, -B, TEST_TOL2, "gsl_sf_elljac_e(5K/2|0.1) cn"); + sa += test_sf_val(dn, C, TEST_TOL2, "gsl_sf_elljac_e(5K/2|0.1) dn"); + gsl_test(sa, " gsl_sf_elljac_e(5K/2|0.1)"); + s += sa; + + sa = 0; + stat_ej = gsl_sf_elljac_e(3.0*K - eps, m, &sn, &cn, &dn); + sa += test_sf_val(sn, -1.0, TEST_TOL1, "gsl_sf_elljac_e(3K-1e-10|0.1) sn"); + sa += test_sf_val(cn, -C2 * eps, 10*TEST_SNGL, "gsl_sf_elljac_e(3K-1e-10|0.1) cn"); + sa += test_sf_val(dn, C2, TEST_TOL2, "gsl_sf_elljac_e(3K-1e-10|0.1) dn"); + gsl_test(sa, " gsl_sf_elljac_e(3K-1e-10|0.1)"); + s += sa; + + sa = 0; + stat_ej = gsl_sf_elljac_e(3.0*K, m, &sn, &cn, &dn); + sa += test_sf_val(sn, -1.0, TEST_TOL1, "gsl_sf_elljac_e(3K|0.1) sn"); + sa += test_sf_val(cn, 0.0, TEST_TOL1, "gsl_sf_elljac_e(3K|0.1) cn"); + sa += test_sf_val(dn, C2, TEST_TOL2, "gsl_sf_elljac_e(3K|0.1) dn"); + gsl_test(sa, " gsl_sf_elljac_e(3K|0.1)"); + s += sa; + + sa = 0; + stat_ej = gsl_sf_elljac_e(3.0*K + eps, m, &sn, &cn, &dn); + sa += test_sf_val(sn, -1.0, TEST_TOL1, "gsl_sf_elljac_e(3K+1e-10|0.1) sn"); + sa += test_sf_val(cn, +C2 * eps, 10*TEST_SNGL, "gsl_sf_elljac_e(3K+1e-10|0.1) cn"); + sa += test_sf_val(dn, C2, TEST_TOL2, "gsl_sf_elljac_e(3K+1e-10|0.1) dn"); + gsl_test(sa, " gsl_sf_elljac_e(3K+1e-10|0.1)"); + s += sa; + + sa = 0; + stat_ej = gsl_sf_elljac_e(7.0*K / 2.0, m, &sn, &cn, &dn); + sa += test_sf_val(sn, -A, TEST_TOL2, "gsl_sf_elljac_e(7K/2|0.1) sn"); + sa += test_sf_val(cn, B, TEST_TOL2, "gsl_sf_elljac_e(7K/2|0.1) cn"); + sa += test_sf_val(dn, C, TEST_TOL2, "gsl_sf_elljac_e(7K/2|0.1) dn"); + gsl_test(sa, " gsl_sf_elljac_e(7K/2|0.1)"); + s += sa; + + sa = 0; + stat_ej = gsl_sf_elljac_e(4.0*K - eps, m, &sn, &cn, &dn); + sa += test_sf_val(sn, -eps, 10*TEST_SNGL, "gsl_sf_elljac_e(4K-1e-10|0.1) sn"); + sa += test_sf_val(cn, 1.0, TEST_TOL1, "gsl_sf_elljac_e(4K-1e-10|0.1) cn"); + sa += test_sf_val(dn, 1.0, TEST_TOL1, "gsl_sf_elljac_e(4K-1e-10|0.1) dn"); + gsl_test(sa, " gsl_sf_elljac_e(4K-1e-10|0.1)"); + s += sa; + + sa = 0; + stat_ej = gsl_sf_elljac_e(4.0*K, m, &sn, &cn, &dn); + sa += test_sf_val(sn, 0.0, TEST_TOL1, "gsl_sf_elljac_e(4K|0.1) sn"); + sa += test_sf_val(cn, 1.0, TEST_TOL1, "gsl_sf_elljac_e(4K|0.1) cn"); + sa += test_sf_val(dn, 1.0, TEST_TOL1, "gsl_sf_elljac_e(4K|0.1) dn"); + gsl_test(sa, " gsl_sf_elljac_e(4K|0.1)"); + s += sa; + + sa = 0; + stat_ej = gsl_sf_elljac_e(9.0 * K / 2.0, m, &sn, &cn, &dn); + sa += test_sf_val(sn, A, TEST_TOL2, "gsl_sf_elljac_e(9K/2|0.1) sn"); + sa += test_sf_val(cn, B, TEST_TOL2, "gsl_sf_elljac_e(9K/2|0.1) cn"); + sa += test_sf_val(dn, C, TEST_TOL2, "gsl_sf_elljac_e(9K/2|0.1) dn"); + gsl_test(sa, " gsl_sf_elljac_e(9K/2|0.1)"); + s += sa; + + sa = 0; + stat_ej = gsl_sf_elljac_e(-K / 2.0, m, &sn, &cn, &dn); + sa += test_sf_val(sn, -A, TEST_TOL2, "gsl_sf_elljac_e(-K/2|0.1) sn"); + sa += test_sf_val(cn, B, TEST_TOL2, "gsl_sf_elljac_e(-K/2|0.1) cn"); + sa += test_sf_val(dn, C, TEST_TOL2, "gsl_sf_elljac_e(-K/2|0.1) dn"); + gsl_test(sa, " gsl_sf_elljac_e(-K/2|0.1)"); + s += sa; + + sa = 0; + stat_ej = gsl_sf_elljac_e(-K, m, &sn, &cn, &dn); + sa += test_sf_val(sn, -1.0, TEST_TOL1, "gsl_sf_elljac_e(-K|0.1) sn"); + sa += test_sf_val(cn, 0.0, TEST_TOL1, "gsl_sf_elljac_e(-K|0.1) cn"); + sa += test_sf_val(dn, C2, TEST_TOL2, "gsl_sf_elljac_e(-K|0.1) dn"); + gsl_test(sa, " gsl_sf_elljac_e(-K|0.1)"); + s += sa; + + sa = 0; + stat_ej = gsl_sf_elljac_e(-3.0*K / 2.0, m, &sn, &cn, &dn); + sa += test_sf_val(sn, -A, TEST_TOL2, "gsl_sf_elljac_e(-3K/2|0.1) sn"); + sa += test_sf_val(cn, -B, TEST_TOL2, "gsl_sf_elljac_e(-3K/2|0.1) cn"); + sa += test_sf_val(dn, C, TEST_TOL2, "gsl_sf_elljac_e(-3K/2|0.1) dn"); + gsl_test(sa, " gsl_sf_elljac_e(-3K/2|0.1)"); + s += sa; + + sa = 0; + stat_ej = gsl_sf_elljac_e(-2.0*K, m, &sn, &cn, &dn); + sa += test_sf_val(sn, 0.0, TEST_TOL1, "gsl_sf_elljac_e(-2K|0.1) sn"); + sa += test_sf_val(cn, -1.0, TEST_TOL1, "gsl_sf_elljac_e(-2K|0.1) cn"); + sa += test_sf_val(dn, 1.0, TEST_TOL1, "gsl_sf_elljac_e(-2K|0.1) dn"); + gsl_test(sa, " gsl_sf_elljac_e(-2K|0.1)"); + s += sa; + + sa = 0; + stat_ej = gsl_sf_elljac_e(-5.0*K / 2.0, m, &sn, &cn, &dn); + sa += test_sf_val(sn, A, TEST_TOL2, "gsl_sf_elljac_e(-5K/2|0.1) sn"); + sa += test_sf_val(cn, -B, TEST_TOL2, "gsl_sf_elljac_e(-5K/2|0.1) cn"); + sa += test_sf_val(dn, C, TEST_TOL2, "gsl_sf_elljac_e(-5K/2|0.1) dn"); + gsl_test(sa, " gsl_sf_elljac_e(-5K/2|0.1)"); + s += sa; + + sa = 0; + stat_ej = gsl_sf_elljac_e(-3.0*K, m, &sn, &cn, &dn); + sa += test_sf_val(sn, 1.0, TEST_TOL1, "gsl_sf_elljac_e(-3K|0.1) sn"); + sa += test_sf_val(cn, 0.0, TEST_TOL1, "gsl_sf_elljac_e(-3K|0.1) cn"); + sa += test_sf_val(dn, C2, TEST_TOL2, "gsl_sf_elljac_e(-3K|0.1) dn"); + gsl_test(sa, " gsl_sf_elljac_e(-3K|0.1)"); + s += sa; + + sa = 0; + stat_ej = gsl_sf_elljac_e(-7.0*K / 2.0, m, &sn, &cn, &dn); + sa += test_sf_val(sn, A, TEST_TOL2, "gsl_sf_elljac_e(-7K/2|0.1) sn"); + sa += test_sf_val(cn, B, TEST_TOL2, "gsl_sf_elljac_e(-7K/2|0.1) cn"); + sa += test_sf_val(dn, C, TEST_TOL2, "gsl_sf_elljac_e(-7K/2|0.1) dn"); + gsl_test(sa, " gsl_sf_elljac_e(-7K/2|0.1)"); + s += sa; + + sa = 0; + stat_ej = gsl_sf_elljac_e(-4.0*K, m, &sn, &cn, &dn); + sa += test_sf_val(sn, 0.0, TEST_TOL1, "gsl_sf_elljac_e(-4K|0.1) sn"); + sa += test_sf_val(cn, 1.0, TEST_TOL1, "gsl_sf_elljac_e(-4K|0.1) cn"); + sa += test_sf_val(dn, 1.0, TEST_TOL1, "gsl_sf_elljac_e(-4K|0.1) dn"); + gsl_test(sa, " gsl_sf_elljac_e(-4K|0.1)"); + s += sa; + } + + + return s; +} + + +int test_laguerre(void) +{ + gsl_sf_result r; + int s = 0; + + TEST_SF(s, gsl_sf_laguerre_1_e, (0.5, -1.0, &r), 2.5, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_laguerre_1_e, (0.5, 1.0, &r), 0.5, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_laguerre_1_e, (1.0, 1.0, &r), 1.0, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_laguerre_2_e, ( 0.5, -1.0, &r), 4.875, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_laguerre_2_e, ( 0.5, 1.0, &r), -0.125, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_laguerre_2_e, ( 1.0, 1.0, &r), 0.5, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_laguerre_2_e, (-1.0, 1.0, &r), -0.5, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_laguerre_2_e, (-2.0, 1.0, &r), 0.5, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_laguerre_2_e, (-3.0, 1.0, &r), 2.5, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_laguerre_3_e, (0.5, -1.0, &r), 8.479166666666666667, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_laguerre_3_e, (0.5, 1.0, &r), -0.6041666666666666667, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_laguerre_3_e, (1.0, 1.0, &r), -0.16666666666666666667, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_laguerre_3_e, ( 2.0, 1.0, &r), 2.3333333333333333333, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_laguerre_3_e, (-2.0, 1.0, &r), 1.0/3.0, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_laguerre_3_e, (-3.0, 1.0, &r), -1.0/6.0, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_laguerre_3_e, (-4.0, 1.0, &r), -8.0/3.0, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_laguerre_n_e, (1, 0.5, 1.0, &r), 0.5, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_laguerre_n_e, (2, 1.0, 1.0, &r), 0.5, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_laguerre_n_e, (3, 2.0, 1.0, &r), 2.3333333333333333333, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_laguerre_n_e, (4, 2.0, 0.5, &r), 6.752604166666666667, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_laguerre_n_e, (90, 2.0, 0.5, &r), -48.79047157201507897, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_laguerre_n_e, (90, 2.0, -100.0, &r), 2.5295879275042410902e+63, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_laguerre_n_e, (90, 2.0, 100.0, &r), -2.0929042259546928670e+20, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_laguerre_n_e, (100, 2.0, -0.5, &r), 2.2521795545919391405e+07, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_laguerre_n_e, (100, 2.0, 0.5, &r), -28.764832945909097418, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_laguerre_n_e, (1000, 2.0, -0.5, &r), 2.4399915170947549589e+21, TEST_TOL3, GSL_SUCCESS); + TEST_SF(s, gsl_sf_laguerre_n_e, (1000, 2.0, 0.5, &r), -306.77440254315317525, TEST_TOL2, GSL_SUCCESS); /**/ + TEST_SF(s, gsl_sf_laguerre_n_e, (100000, 2.0, 1.0, &r), 5107.73491348319, TEST_TOL4, GSL_SUCCESS); + + /* Compute these with the recurrence + * L(0,alpha,x)=1; + * L(1,alpha,x)=1+alpha-x; + * L(n,alpha,x)=((2*n-1+alpha-x)*L(n-1,alpha,x)-(n+alpha-1)*L(n-2,alpha,x))/k + */ + + TEST_SF(s, gsl_sf_laguerre_n_e, (1e5, 2.5, 2.5, &r), -0.41491680394598644969113795e5, TEST_TOL4, GSL_SUCCESS); + TEST_SF(s, gsl_sf_laguerre_n_e, (1e5+1, 2.5, 2.5, &r), -0.41629446949552321027514888e5, TEST_TOL4, GSL_SUCCESS); + TEST_SF(s, gsl_sf_laguerre_n_e, (1e6+1, 2.5, 2.5, &r), -0.48017961545391273151977118e6, TEST_TOL4, GSL_SUCCESS); + TEST_SF(s, gsl_sf_laguerre_n_e, (5e6+1, 2.5, 2.5, &r), -0.15174037401611122446089494e7, TEST_TOL6, GSL_SUCCESS); + TEST_SF(s, gsl_sf_laguerre_n_e, (8e6+1, 2.5, 2.5, &r), 0.63251509472091810994286362e6, TEST_SNGL, GSL_SUCCESS); + TEST_SF(s, gsl_sf_laguerre_n_e, (1e7+1, 2.5, 2.5, &r), 0.15299484685632983178033887e7, TEST_SNGL, GSL_SUCCESS); + TEST_SF(s, gsl_sf_laguerre_n_e, (1e8+1, 2.5, 2.5, &r), 0.23645341644922756725290777e8, TEST_SNGL, GSL_SUCCESS); + TEST_SF(s, gsl_sf_laguerre_n_e, (1e9+1, 2.5, 2.5, &r), -0.17731002248958790286185878e8, 100*TEST_SNGL, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_laguerre_n_e, (1, -2.0, 1.0, &r), -2.0, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_laguerre_n_e, (2, -2.0, 1.0, &r), 0.5, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_laguerre_n_e, (3, -2.0, 1.0, &r), 1.0/3.0, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_laguerre_n_e, (10, -2.0, 1.0, &r), -0.04654954805996472663, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_laguerre_n_e, (10, -5.0, 1.0, &r), -0.0031385030864197530864, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_laguerre_n_e, (10, -9.0, 1.0, &r), -2.480158730158730159e-06, TEST_TOL5, GSL_SUCCESS); + TEST_SF(s, gsl_sf_laguerre_n_e, (10, -11.0, 1.0, &r), 2.7182818011463844797, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_laguerre_n_e, (10, -11.0, -1.0, &r), 0.3678794642857142857, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_laguerre_n_e, (100, -2.0, 1.0, &r), -0.0027339992019526273866, TEST_SQRT_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_laguerre_n_e, (100, -2.0, -1.0, &r), 229923.09193402028290, TEST_TOL5, GSL_SUCCESS); + TEST_SF(s, gsl_sf_laguerre_n_e, (100, -10.0, 1.0, &r), 3.25966665871244092e-11, TEST_TOL6, GSL_SUCCESS); + TEST_SF(s, gsl_sf_laguerre_n_e, (100, -10.0, -1.0, &r), 0.00016484365618205810025, TEST_TOL6, GSL_SUCCESS); + TEST_SF(s, gsl_sf_laguerre_n_e, (100, -20.0, 1.0, &r), 5.09567630343671251e-21, TEST_TOL3, GSL_SUCCESS); + TEST_SF(s, gsl_sf_laguerre_n_e, (100, -30.0, 1.0, &r), 3.46063150272466192e-34, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_laguerre_n_e, (100, -50.0, 1.0, &r), 1.20981872933162889e-65, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_laguerre_n_e, (100, -50.0, -1.0, &r), 8.60763477742332922e-65, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_laguerre_n_e, (100, -50.5, 1.0, &r), 4.84021010426688393e-31, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_laguerre_n_e, (100, -50.5, -1.0, &r), 8.49861345212160618e-33, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_laguerre_n_e, (100, -101.0, 1.0, &r), 2.7182818284590452354, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_laguerre_n_e, (100, -101.0, -1.0, &r), 0.3678794411714423216, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_laguerre_n_e, (100, -102.0, 1.0, &r), 271.8281828459045235, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_laguerre_n_e, (100, -102.0, -1.0, &r), 37.52370299948711680, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_laguerre_n_e, (100, -110.0, 1.0, &r), 1.0666955248998831554e+13, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_laguerre_n_e, (100, -110.0, -1.0, &r), 1.7028306108058225871e+12, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_laguerre_n_e, (100, -200.0, 1.0, &r), 7.47851889721356628e+58, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_laguerre_n_e, (100, -200.0, -1.0, &r), 2.73740299754732273e+58, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_laguerre_n_e, (100, -50.0, 10.0, &r), 4.504712811317745591e-21, TEST_SQRT_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_laguerre_n_e, (100, -50.0, -10.0, &r), 1.475165520610679937e-11, TEST_TOL1, GSL_SUCCESS); + + /* test cases for Ed Smith-Rowland */ + + TEST_SF(s, gsl_sf_laguerre_n_e, (100, 0.0, 0.5, &r), 0.18682260367692278801, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_laguerre_n_e, (100, 0.0, 10.5, &r), 9.1796907354050059874, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_laguerre_n_e, (100, 0.0, -10.5, &r), 5.6329215744170606488e24, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_laguerre_n_e, (100, 0.0, 100.5, &r), -3.9844782875811907525e20, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_laguerre_n_e, (100, 0.0, 150, &r), -1.4463204337261709595e31, TEST_TOL2, GSL_SUCCESS); + + return s; +} + + +int test_lambert(void) +{ + gsl_sf_result r; + int s = 0; + + TEST_SF(s, gsl_sf_lambert_W0_e, (0.0, &r), 0.0, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_lambert_W0_e, (1.0, &r), 0.567143290409783872999969, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_lambert_W0_e, (2.0, &r), 0.852605502013725491346472, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_lambert_W0_e, (20.0, &r), 2.205003278024059970493066, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_lambert_W0_e, (1000.0, &r), 5.24960285240159622712606, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_lambert_W0_e, (1.0e+6, &r), 11.38335808614005262200016, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_lambert_W0_e, (1.0e+12, &r), 24.43500440493491313826305, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_lambert_W0_e, (1.0e+308, &r), 702.641362034106812081125, TEST_TOL0, GSL_SUCCESS); + + /* Test case from Katrin Wolff fails under + double-precision */ + + TEST_SF(s, gsl_sf_lambert_W0_e, (1.6849341956993852953416990, &r), 0.775706963944252869680440, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_lambert_W0_e, (-1.0/M_E - GSL_DBL_EPSILON, &r), -1.0, TEST_TOL0, GSL_EDOM); + TEST_SF(s, gsl_sf_lambert_W0_e, (-1.0/M_E + 1.0/(1024.0*1024.0*1024.0), &r), -0.999928845560308370714970, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_lambert_W0_e, (-1.0/M_E + 1.0/(1024.0*1024.0), &r), -0.997724730359774141620354, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_lambert_W0_e, (-1.0/M_E + 1.0/512.0, &r), -0.900335676696088773044678, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_lambert_W0_e, (-1.0/M_E + 0.25, &r), -0.1349044682661213545487599, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_lambert_Wm1_e, (0.0, &r), 0.0, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_lambert_Wm1_e, (1.0, &r), 0.567143290409783872999969, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_lambert_Wm1_e, (2.0, &r), 0.852605502013725491346472, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_lambert_Wm1_e, (20.0, &r), 2.205003278024059970493066, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_lambert_Wm1_e, (-1.0/M_E - GSL_DBL_EPSILON, &r), -1.0, TEST_TOL0, GSL_EDOM); + TEST_SF(s, gsl_sf_lambert_Wm1_e, (-1.0/M_E + 1.0/(1024.0*1024.0*1024.0), &r), -1.000071157815154608049055, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_lambert_Wm1_e, (-1.0/M_E + 1.0/(1024.0*1024.0), &r), -1.002278726118593023934693, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_lambert_Wm1_e, (-1.0/M_E + 1.0/512.0, &r), -1.106761200865743124599130, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_lambert_Wm1_e, (-1.0/M_E + 1.0/64.0, &r), -1.324240940341812125489772, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_lambert_Wm1_e, (-1.0/M_E + 0.25, &r), -3.345798131120112, TEST_TOL1, GSL_SUCCESS); + + return s; +} + + +int test_log(void) +{ + gsl_sf_result r; + gsl_sf_result r1, r2; + int s = 0; + + TEST_SF(s, gsl_sf_log_e, (0.1, &r), -2.3025850929940456840, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_log_e, (1.1, &r), 0.09531017980432486004, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_log_e, (1000.0, &r), 6.907755278982137052, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_log_abs_e, (-0.1, &r), -2.3025850929940456840, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_log_abs_e, (-1.1, &r), 0.09531017980432486004, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_log_abs_e, (-1000.0, &r), 6.907755278982137052, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_log_abs_e, (0.1, &r), -2.3025850929940456840, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_log_abs_e, (1.1, &r), 0.09531017980432486004, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_log_abs_e, (1000.0, &r), 6.907755278982137052, TEST_TOL0, GSL_SUCCESS); + + TEST_SF_2(s, gsl_sf_complex_log_e, (1.0, 1.0, &r1, &r2), + 0.3465735902799726547, TEST_TOL0, + 0.7853981633974483096, TEST_TOL0, + GSL_SUCCESS); + + TEST_SF_2(s, gsl_sf_complex_log_e, (1.0, -1.0, &r1, &r2), + 0.3465735902799726547, TEST_TOL0, + -0.7853981633974483096, TEST_TOL0, + GSL_SUCCESS); + + TEST_SF_2(s, gsl_sf_complex_log_e, (1.0, 100.0, &r1, &r2), + 4.605220183488258022, TEST_TOL0, + 1.560796660108231381, TEST_TOL0, + GSL_SUCCESS); + + TEST_SF_2(s, gsl_sf_complex_log_e, (-1000.0, -1.0, &r1, &r2), + 6.907755778981887052, TEST_TOL0, + -3.1405926539231263718, TEST_TOL0, + GSL_SUCCESS); + + TEST_SF_2(s, gsl_sf_complex_log_e, (-1.0, 0.0, &r1, &r2), + 0.0, TEST_TOL0, + 3.1415926535897932385, TEST_TOL0, + GSL_SUCCESS); + + + TEST_SF(s, gsl_sf_log_1plusx_e, (1.0e-10, &r), 9.999999999500000000e-11, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_log_1plusx_e, (1.0e-8, &r), 9.999999950000000333e-09, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_log_1plusx_e, (1.0e-4, &r), 0.00009999500033330833533, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_log_1plusx_e, (0.1, &r), 0.09531017980432486004, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_log_1plusx_e, (0.49, &r), 0.3987761199573677730, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_log_1plusx_e, (-0.49, &r), -0.6733445532637655964, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_log_1plusx_e, (1.0, &r), M_LN2, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_log_1plusx_e, (-0.99, &r), -4.605170185988091368, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_log_1plusx_mx_e, (1.0e-10, &r), -4.999999999666666667e-21, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_log_1plusx_mx_e, (1.0e-8, &r), -4.999999966666666917e-17, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_log_1plusx_mx_e, (1.0e-4, &r), -4.999666691664666833e-09, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_log_1plusx_mx_e, (0.1, &r), -0.004689820195675139956, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_log_1plusx_mx_e, (0.49, &r), -0.09122388004263222704, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_log_1plusx_mx_e, (-0.49, &r), -0.18334455326376559639, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_log_1plusx_mx_e, (1.0, &r), M_LN2-1.0, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_log_1plusx_mx_e, (-0.99, &r), -3.615170185988091368, TEST_TOL0, GSL_SUCCESS); + + return s; +} + + +int test_pow_int(void) +{ + gsl_sf_result r; + int status = 0; + int s = 0; + + TEST_SF(s, gsl_sf_pow_int_e, (2.0, 3, &r), 8.0, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_pow_int_e, (-2.0, 3, &r), -8.0, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_pow_int_e, (2.0, -3, &r), 1.0/8.0, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_pow_int_e, (-2.0, -3, &r), -1.0/8.0, TEST_TOL0, GSL_SUCCESS); + + + TEST_SF(s, gsl_sf_pow_int_e, (10.0, 4, &r), 1.0e+4, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_pow_int_e, (10.0, -4, &r), 1.0e-4, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_pow_int_e, (-10.0, 4, &r), 1.0e+4, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_pow_int_e, (-10.0, -4, &r), 1.0e-4, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_pow_int_e, (10.0, 40, &r), 1.0e+40, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_pow_int_e, (8.0, -40, &r), 7.523163845262640051e-37, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_pow_int_e, (-10.0, 40, &r), 1.0e+40, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_pow_int_e, (-8.0, -40, &r), 7.523163845262640051e-37, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_pow_int_e, (10.0, 41, &r), 1.0e+41, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_pow_int_e, (8.0, -41, &r), 9.403954806578300064e-38, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_pow_int_e, (-10.0, 41, &r), -1.0e+41, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_pow_int_e, (-8.0, -41, &r), -9.403954806578300064e-38, TEST_TOL0, GSL_SUCCESS); + + return status; +} + +int test_psi(void) +{ + gsl_sf_result r; + int s = 0; + + /* Test values taken 1-4 from gp-pari */ + + TEST_SF(s, gsl_sf_psi_int_e, (1, &r), -0.57721566490153286060, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_psi_int_e, (2, &r), 0.42278433509846713939, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_psi_int_e, (3, &r), 0.92278433509846713939, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_psi_int_e, (4, &r), 1.2561176684318004727, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_psi_int_e, (5, &r), 1.5061176684318004727, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_psi_int_e, (100, &r), 4.600161852738087400, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_psi_int_e, (110, &r), 4.695928024251535633, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_psi_int_e, (5000, &r), 8.517093188082904107, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_psi_e, (5000.0, &r), 8.517093188082904107, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_psi_e, (5.0, &r), 1.5061176684318004727, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_psi_e, (-10.5, &r), 2.3982391295357816134, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_psi_e, (-100.5, &r), 4.615124601338064117, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_psi_e, (-1.0e+5-0.5, &r), 11.512935464924395337, 4.0*TEST_TOL4, GSL_SUCCESS); + TEST_SF(s, gsl_sf_psi_e, (-262144.0-0.5, &r), 12.476653064769611581, 4.0*TEST_TOL4, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_psi_1piy_e, (0.8, &r), -0.07088340212750589223, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_psi_1piy_e, (1.0, &r), 0.09465032062247697727, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_psi_1piy_e, (5.0, &r), 1.6127848446157465854, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_psi_1piy_e, (100.0, &r), 4.605178519404762003, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_psi_1piy_e, (2000.0, &r), 7.600902480375416216, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_psi_1piy_e, (-0.8, &r), -0.07088340212750589223, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_psi_1piy_e, (-1.0, &r), 0.09465032062247697727, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_psi_1piy_e, (-5.0, &r), 1.6127848446157465854, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_psi_1piy_e, (-100.0, &r), 4.605178519404762003, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_psi_1piy_e, (-2000.0, &r), 7.600902480375416216, TEST_TOL0, GSL_SUCCESS); + + /* Additional test values 1-4 computed using gp-pari and + Abramowitz & Stegun 6.4.6 */ + + TEST_SF(s, gsl_sf_psi_1_int_e, (1, &r), 1.6449340668482264364, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_psi_1_int_e, (2, &r), 0.64493406684822643647, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_psi_1_int_e, (3, &r), 0.39493406684822643647, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_psi_1_int_e, (4, &r), 0.28382295573711532536, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_psi_1_int_e, (1, &r), 1.6449340668482264365, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_psi_1_int_e, (5, &r), 0.22132295573711532536, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_psi_1_int_e, (100, &r), 0.010050166663333571395, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_psi_1_int_e, (110, &r), 0.009132356622022545705, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_psi_1_int_e, (500, &r), 0.0020020013333322666697, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_psi_1_e, (1.0/32.0, &r), 1025.5728544782377089, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_psi_1_e, (1.0, &r), 1.6449340668482264365, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_psi_1_e, (5.0, &r), 0.22132295573711532536, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_psi_1_e, (100.0, &r), 0.010050166663333571395, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_psi_1_e, (110.0, &r), 0.009132356622022545705, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_psi_1_e, (500.0, &r), 0.0020020013333322666697, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_psi_1_e, (-1.0 - 1.0/128.0, &r), 16386.648472598746587, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_psi_1_e, (-1.50, &r), 9.3792466449891237539, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_psi_1_e, (-10.5, &r), 9.7787577398148123845, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_psi_1_e, (-15.5, &r), 9.8071247184113896201, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_psi_1_e, (-50.5, &r), 9.8499971860824842274, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_psi_1_e, (-1000.5, &r), 9.8686054001734414233, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_psi_n_e, (1, 1, &r), 1.6449340668482264364, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_psi_n_e, (1, 2, &r), 0.64493406684822643647, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_psi_n_e, (1, 3, &r), 0.39493406684822643647, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_psi_n_e, (1, 4, &r), 0.28382295573711532536, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_psi_n_e, (1, 5, &r), 0.22132295573711532536, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_psi_n_e, (1, 100, &r), 0.010050166663333571395, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_psi_n_e, (1, 110, &r), 0.009132356622022545705, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_psi_n_e, (1, 500, &r), 0.0020020013333322666697, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_psi_n_e, (3, 5.0, &r), 0.021427828192755075022, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_psi_n_e, (3, 500.0, &r), 1.6048063999872000683e-08, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_psi_n_e, (10, 5.0, &r), -0.08675107579196581317, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_psi_n_e, (10, 50.0, &r), -4.101091112731268288e-12, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_psi_n_e, (0, -1.5, &r), 0.70315664064524318723, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_psi_n_e, (1, -1.5, &r), 9.3792466449891237539, TEST_TOL0, GSL_SUCCESS); + + return s; +} + + +int test_psi_complex(void) +{ + gsl_sf_result r1; + gsl_sf_result r2; + int s = 0; + + TEST_SF_2(s, gsl_sf_complex_psi_e, (1.0e+07, 1.0e+06, &r1, &r2), + 16.1230707668799525, TEST_TOL0, + 0.09966865744165720, TEST_TOL0, + GSL_SUCCESS); + + TEST_SF_2(s, gsl_sf_complex_psi_e, (10.0, 50.0, &r1, &r2), + 3.92973987174863660, TEST_TOL0, + 1.38302847985210276, TEST_TOL0, + GSL_SUCCESS); + + TEST_SF_2(s, gsl_sf_complex_psi_e, (2.0, 21.0, &r1, &r2), + 3.04697388853248195, TEST_TOL0, + 1.49947549076817824, TEST_TOL0, + GSL_SUCCESS); + + TEST_SF_2(s, gsl_sf_complex_psi_e, (1.5, 0.0, &r1, &r2), + 0.0364899739785765206, TEST_TOL2, + 0.0, TEST_TOL1, + GSL_SUCCESS); + + TEST_SF_2(s, gsl_sf_complex_psi_e, (1.0, 5.0, &r1, &r2), + 1.612784844615747, TEST_TOL1, + 1.470796326794968, TEST_TOL1, + GSL_SUCCESS); + + TEST_SF_2(s, gsl_sf_complex_psi_e, (-1.5, 5.0, &r1, &r2), + 1.68260717336484070, TEST_TOL0, + 1.95230236730713338, TEST_TOL0, + GSL_SUCCESS); + + TEST_SF_2(s, gsl_sf_complex_psi_e, (-20.5, -20.5, &r1, &r2), + 3.37919358657933066, TEST_TOL0, + -2.36829046481731091, TEST_TOL0, + GSL_SUCCESS); + + return s; +} + + + + +int test_synch(void) +{ + gsl_sf_result r; + int s = 0; + + TEST_SF(s, gsl_sf_synchrotron_1_e, (0.01, &r), 0.444972504114210632, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_synchrotron_1_e, (1.0, &r), 0.651422815355364504, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_synchrotron_1_e, (10.0, &r), 0.000192238264300868882, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_synchrotron_1_e, (100.0, &r), 4.69759366592220221e-43, TEST_TOL1, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_synchrotron_2_e, (0.01, &r), 0.23098077342226277732, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_synchrotron_2_e, (1.0, &r), 0.4944750621042082670, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_synchrotron_2_e, (10.0, &r), 0.00018161187569530204281, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_synchrotron_2_e, (256.0, &r), 1.3272635474353774058e-110, TEST_TOL4, GSL_SUCCESS); /* exp()... not my fault */ + + return s; +} + + +int test_transport(void) +{ + gsl_sf_result r; + int s = 0; + + TEST_SF(s, gsl_sf_transport_2_e, (1.0e-10, &r), 9.9999999999999999999e-11, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_transport_2_e, (1.0, &r), 0.97303256135517012845, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_transport_2_e, (3.0, &r), 2.41105004901695346199, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_transport_2_e, (10.0, &r), 3.28432911449795173575, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_transport_2_e, (100.0, &r), 3.28986813369645287294, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_transport_2_e, (1.0e+05, &r), 3.28986813369645287294, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_transport_3_e, (1.0e-10, &r), 4.999999999999999999997e-21, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_transport_3_e, (1.0, &r), 0.479841006572417499939, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_transport_3_e, (3.0, &r), 3.210604662942246772338, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_transport_3_e, (5.0, &r), 5.614386613842273228585, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_transport_3_e, (10.0, &r), 7.150322712008592975030, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_transport_3_e, (30.0, &r), 7.212341416160946511930, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_transport_3_e, (100.0, &r), 7.212341418957565712398, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_transport_3_e, (1.0e+05, &r), 7.212341418957565712398, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_transport_4_e, (1.0e-10, &r), 3.33333333333333333333e-31, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_transport_4_e, (1.0e-07, &r), 3.33333333333333166666e-22, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_transport_4_e, (1.0e-04, &r), 3.33333333166666666726e-13, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_transport_4_e, (0.1, &r), 0.000333166726172109903824, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_transport_4_e, (1.0, &r), 0.31724404523442648241, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_transport_4_e, (3.0, &r), 5.96482239737147652446, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_transport_4_e, (5.0, &r), 15.3597843168821829816, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_transport_4_e, (10.0, &r), 25.2736676770304417334, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_transport_4_e, (30.0, &r), 25.9757575220840937469, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_transport_4_e, (100.0, &r), 25.9757576090673165963, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_transport_4_e, (1.0e+05, &r), 25.9757576090673165963, TEST_TOL2, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_transport_5_e, (1.0e-10, &r), 2.49999999999999999999e-41, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_transport_5_e, (1.0e-07, &r), 2.49999999999999861111e-29, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_transport_5_e, (1.0e-04, &r), 2.49999999861111111163e-17, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_transport_5_e, (0.1, &r), 0.000024986116317791487410, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_transport_5_e, (1.0, &r), 0.236615879239094789259153, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_transport_5_e, (3.0, &r), 12.77055769104415951115760, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_transport_5_e, (5.0, &r), 50.26309221817518778543615, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_transport_5_e, (10.0, &r), 116.3807454024207107698556, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_transport_5_e, (30.0, &r), 124.4313279083858954839911, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_transport_5_e, (100.0, &r), 124.4313306172043911597639, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_transport_5_e, (1.0e+05, &r), 124.43133061720439115976, TEST_TOL0, GSL_SUCCESS); + + return s; +} + + +int test_trig(void) +{ + gsl_sf_result r; + gsl_sf_result r1, r2; + double theta; + int s = 0; + int sa; + + TEST_SF(s, gsl_sf_sin_e, (-10.0, &r), 0.5440211108893698134, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_sin_e, (1.0, &r), 0.8414709848078965067, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_sin_e, (1000.0, &r), 0.8268795405320025603, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_sin_e, (1048576.75, &r), 0.8851545351115651914, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_sin_e, (62831853.75, &r), 0.6273955953485000827, TEST_TOL3, GSL_SUCCESS); + TEST_SF(s, gsl_sf_sin_e, (1073741822.5, &r), -0.8284043541754465988, TEST_SQRT_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_sin_e, (1073741824.0, &r), -0.6173264150460421708, TEST_SQRT_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_sin_e, (1073741825.5, &r), 0.7410684679436226926, TEST_SQRT_TOL0, GSL_SUCCESS); + /* + TEST_SF(s, gsl_sf_sin_e, (1099511627776.0, &r), -0.4057050115328287198, 32.0*TEST_SQRT_TOL0, GSL_SUCCESS); + */ + + TEST_SF(s, gsl_sf_cos_e, (-10.0, &r), -0.8390715290764524523, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_cos_e, (1.0, &r), 0.5403023058681397174, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_cos_e, (1000.0, &r), 0.5623790762907029911, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_cos_e, (1048576.75, &r), 0.4652971620066351799, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_cos_e, (62831853.75, &r), 0.7787006914966116436, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_cos_e, (1073741822.5, &r), -0.5601305436977716102, TEST_SQRT_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_cos_e, (1073741824.0, &r), 0.7867071229411881196, TEST_SQRT_TOL0, GSL_SUCCESS); + /* + TEST_SF(s, gsl_sf_cos_e, (1099511627776.0, &r), -0.9140040719915570023, 128.0*TEST_SQRT_TOL0, GSL_SUCCESS); + */ + + TEST_SF(s, gsl_sf_sinc_e, (1.0/1024.0, &r), 0.9999984312693665404, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_sinc_e, (1.0/2.0, &r), 2.0/M_PI, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_sinc_e, (80.5, &r), 0.0039541600768172754, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_sinc_e, (100.5, &r), 0.0031672625490924445, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_sinc_e, (1.0e+06 + 0.5, &r), 3.18309727028927157e-07, TEST_TOL0, GSL_SUCCESS); + + /* + TEST_SF(s, gsl_sf_sin_pi_x_e, (1000.5, &r), 1.0, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_sin_pi_x_e, (10000.0 + 1.0/65536.0, &r), 0.00004793689960306688455, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_sin_pi_x_e, (1099511627776.0 + 1 + 0.125, &r), -0.3826834323650897717, TEST_TOL0, GSL_SUCCESS); + */ + + TEST_SF_2(s, gsl_sf_complex_sin_e, (1.0, 5.0, &r1, &r2), + 62.44551846769653403, TEST_TOL0, + 40.09216577799840254, TEST_TOL0, + GSL_SUCCESS); + + TEST_SF_2(s, gsl_sf_complex_cos_e, (1.0, 5.0, &r1, &r2), + 40.09580630629882573, TEST_TOL0, + -62.43984868079963017, TEST_TOL0, + GSL_SUCCESS); + + TEST_SF_2(s, gsl_sf_complex_logsin_e, (1.0, 100.0, &r1, &r2), + 99.3068528194400546900, TEST_TOL0, + 0.5707963267948966192, TEST_TOL0, + GSL_SUCCESS); + + TEST_SF_2(s, gsl_sf_complex_logsin_e, (1.0, -100.0, &r1, &r2), + 99.3068528194400546900, TEST_TOL1, + -0.5707963267948966192, TEST_TOL1, + GSL_SUCCESS); + + TEST_SF_2(s, gsl_sf_complex_logsin_e, (5.0, 5.0, &r1, &r2), + 4.3068909128079757420, TEST_TOL0, + 2.8540063315538773952, TEST_TOL0, + GSL_SUCCESS); + + TEST_SF(s, gsl_sf_lnsinh_e, (0.1, &r), -2.3009189815304652235, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_lnsinh_e, (1.0, &r), 0.16143936157119563361, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_lnsinh_e, (5.0, &r), 4.306807418479684201, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_lnsinh_e, (100.0, &r), 99.30685281944005469, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_lncosh_e, (0.125, &r), 0.007792239318898252791, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_lncosh_e, (1.0, &r), 0.4337808304830271870, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_lncosh_e, (5.0, &r), 4.306898218339271555, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_lncosh_e, (100.0, &r), 99.30685281944005469, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_lncosh_e, (1000.0, &r), 999.30685281944005469, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_lncosh_e, (-0.125, &r), 0.007792239318898252791, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_lncosh_e, (-1.0, &r), 0.4337808304830271870, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_lncosh_e, (-5.0, &r), 4.306898218339271555, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_lncosh_e, (-100.0, &r), 99.30685281944005469, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_lncosh_e, (-1000.0, &r), 999.30685281944005469, TEST_TOL0, GSL_SUCCESS); + + + TEST_SF_2(s, gsl_sf_polar_to_rect, (10.0, M_PI/6.0, &r1, &r2), + (10.0 * sqrt(3) / 2.0), TEST_TOL0, + (10.0 * 0.5), TEST_TOL0, + GSL_SUCCESS); + + TEST_SF_2(s, gsl_sf_polar_to_rect, (10.0, -2.0/3.0*M_PI, &r1, &r2), + (10.0 * (-0.5)), TEST_TOL1, + (10.0 * (-sqrt(3.0)/2.0)), TEST_TOL1, + GSL_SUCCESS); + + /* In double precision M_PI = \pi - 1.2246467991473531772e-16, + i.e. the nearest machine number is slightly below the exact value + of \pi. The true value of \pi satisfies + + M_PI < \pi < nextafter(M_PI,+Inf) + + where nextafter(M_PI,+Inf) = M_PI + 2*DBL_EPSILON + + This also means that 2*M_PI is less than \pi by 2.449e-16. The + true value of 2\pi satisfies + + 2*M_PI < 2\pi < nextafter(2*M_PI,+Inf) + + where nextafter(2*M_PI,+Inf) = 2*M_PI + 4*DBL_EPSILON + + BJG 25/9/06 + */ + +#define DELTA (1.2246467991473531772e-16) + + TEST_SF_THETA(s, gsl_sf_angle_restrict_pos_e, (2.0*M_PI), 2*M_PI, TEST_TOL1); + TEST_SF_THETA(s, gsl_sf_angle_restrict_pos_e, (-2.0*M_PI), 2*DELTA, TEST_TOL1); + + TEST_SF_THETA(s, gsl_sf_angle_restrict_pos_e, (2.0*M_PI+4*GSL_DBL_EPSILON), 4*GSL_DBL_EPSILON-2*DELTA, TEST_TOL1); + TEST_SF_THETA(s, gsl_sf_angle_restrict_pos_e, (-2.0*M_PI-4*GSL_DBL_EPSILON), 2*M_PI-4*GSL_DBL_EPSILON+2*DELTA, TEST_TOL1); + + TEST_SF_THETA(s, gsl_sf_angle_restrict_pos_e, (4.0*M_PI+8*GSL_DBL_EPSILON), 8*GSL_DBL_EPSILON-4*DELTA, TEST_TOL1); + TEST_SF_THETA(s, gsl_sf_angle_restrict_pos_e, (-4.0*M_PI-8*GSL_DBL_EPSILON), 2*M_PI-8*GSL_DBL_EPSILON+4*DELTA, TEST_TOL1); + + TEST_SF_THETA(s, gsl_sf_angle_restrict_pos_e, (1e9), 0.5773954235013851694, TEST_TOL1); + TEST_SF_THETA(s, gsl_sf_angle_restrict_pos_e, (1e12), 5.625560548042800009446, TEST_SNGL); + + TEST_SF_THETA(s, gsl_sf_angle_restrict_pos_e, (-1e9), 5.7057898836782013075, TEST_TOL1); + TEST_SF_THETA(s, gsl_sf_angle_restrict_pos_e, (-1e12), 0.6576247591367864674792517289, 100*TEST_SNGL); + +#ifdef EXTENDED + TEST_SF_THETA(s, gsl_sf_angle_restrict_pos_e, (1e15), 2.1096981170701125979, TEST_TOL1); + TEST_SF_THETA(s, gsl_sf_angle_restrict_pos_e, (-1e15), 4.1734871901094738790, TEST_TOL1); +#endif + + TEST_SF(s, gsl_sf_angle_restrict_pos_err_e, (2.0*M_PI, &r), 2*M_PI, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_angle_restrict_pos_err_e, (-2.0*M_PI, &r), 2*DELTA, TEST_TOL1, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_angle_restrict_pos_err_e, (1e9, &r), 0.5773954235013851694, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_angle_restrict_pos_err_e, (1e12, &r), 5.625560548042800009446, TEST_SNGL, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_angle_restrict_pos_err_e, (-1e9, &r), 5.7057898836782013075, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_angle_restrict_pos_err_e, (-1e12, &r), 0.6576247591367864674792517289, 100*TEST_SNGL, GSL_SUCCESS); + + TEST_SF (s, gsl_sf_angle_restrict_pos_err_e, (1e15, &r), GSL_NAN, TEST_TOL1, GSL_ELOSS); + TEST_SF (s, gsl_sf_angle_restrict_pos_err_e, (-1e15, &r), GSL_NAN, TEST_TOL1, GSL_ELOSS); + + TEST_SF_THETA(s, gsl_sf_angle_restrict_symm_e, (2.0*M_PI), -2*DELTA, TEST_TOL1); + TEST_SF_THETA(s, gsl_sf_angle_restrict_symm_e, (-2.0*M_PI), 2*DELTA, TEST_TOL1); + + TEST_SF_THETA(s, gsl_sf_angle_restrict_symm_e, (M_PI), M_PI, TEST_TOL1); + TEST_SF_THETA(s, gsl_sf_angle_restrict_symm_e, (-M_PI), -M_PI, TEST_TOL1); + + TEST_SF_THETA(s, gsl_sf_angle_restrict_symm_e, (M_PI+2*GSL_DBL_EPSILON), -M_PI+2*(GSL_DBL_EPSILON-DELTA), TEST_TOL1); + TEST_SF_THETA(s, gsl_sf_angle_restrict_symm_e, (-M_PI-2*GSL_DBL_EPSILON), M_PI-2*(GSL_DBL_EPSILON-DELTA), TEST_TOL1); + + TEST_SF_THETA(s, gsl_sf_angle_restrict_symm_e, (3*M_PI+6*GSL_DBL_EPSILON), -M_PI+6*GSL_DBL_EPSILON-4*DELTA, TEST_TOL1); + TEST_SF_THETA(s, gsl_sf_angle_restrict_symm_e, (-3*M_PI-6*GSL_DBL_EPSILON), M_PI-6*GSL_DBL_EPSILON+4*DELTA, TEST_TOL1); + + + TEST_SF_THETA(s, gsl_sf_angle_restrict_symm_e, (1e9), 0.5773954235013851694, TEST_TOL1); + TEST_SF_THETA(s, gsl_sf_angle_restrict_symm_e, (1e12), -0.6576247591367864674792517289, 100*TEST_SNGL); + + TEST_SF_THETA(s, gsl_sf_angle_restrict_symm_e, (-1e9), -0.5773954235013851694, TEST_TOL1); + TEST_SF_THETA(s, gsl_sf_angle_restrict_symm_e, (-1e12), 0.6576247591367864674792517289, 100*TEST_SNGL); + +#ifdef EXTENDED + TEST_SF_THETA(s, gsl_sf_angle_restrict_symm_e, (1e15), 2.1096981170701125979, TEST_TOL1); + TEST_SF_THETA(s, gsl_sf_angle_restrict_symm_e, (-1e15), -2.1096981170701125979, TEST_TOL1); +#endif + + TEST_SF (s, gsl_sf_angle_restrict_symm_err_e, (2.0*M_PI, &r), -2*DELTA, TEST_TOL1, GSL_SUCCESS); + TEST_SF (s, gsl_sf_angle_restrict_symm_err_e, (-2.0*M_PI, &r), 2*DELTA, TEST_TOL1, GSL_SUCCESS); + + + TEST_SF(s, gsl_sf_angle_restrict_symm_err_e, (1e9, &r), 0.5773954235013851694, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_angle_restrict_symm_err_e, (1e12, &r), -0.6576247591367864674792517289, 100*TEST_SNGL, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_angle_restrict_symm_err_e, (-1e9, &r), -0.5773954235013851694, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_angle_restrict_symm_err_e, (-1e12, &r), 0.6576247591367864674792517289, 100*TEST_SNGL, GSL_SUCCESS); + + TEST_SF (s, gsl_sf_angle_restrict_symm_err_e, (1e15, &r), GSL_NAN, TEST_TOL1, GSL_ELOSS); + TEST_SF (s, gsl_sf_angle_restrict_symm_err_e, (-1e15, &r), GSL_NAN, TEST_TOL1, GSL_ELOSS); + + theta = 5.0*M_PI + 5*DELTA + M_PI/2.0; + gsl_sf_angle_restrict_pos_e(&theta); + sa = 0; + sa += ( test_sf_frac_diff( theta, 3.0/2.0*M_PI ) > TEST_TOL0 ); + gsl_test(sa, " gsl_angle_restrict_pos_e: theta = 11/2 Pi"); + s += sa; + + theta = -5.0*M_PI - 5*DELTA - M_PI/2.0; + gsl_sf_angle_restrict_pos_e(&theta); + sa = 0; + sa += ( test_sf_frac_diff( theta, M_PI/2.0 ) > 2.0*TEST_TOL0 ); + gsl_test(sa, " gsl_angle_restrict_pos_e: theta = -11/2 Pi"); + s += sa; + + theta = 50000.0 + 1.0/65536.0; + gsl_sf_angle_restrict_pos_e(&theta); + sa = 0; + sa += ( test_sf_frac_diff( theta, 4.6945260308194656055 ) > TEST_TOL0 ); + gsl_test(sa, " gsl_angle_restrict_pos_e: theta = 50000.0 + 1.0/65536.0"); + s += sa; + + theta = 5000000.0 + 1.0/65536.0; + gsl_sf_angle_restrict_pos_e(&theta); + sa = 0; + sa += ( test_sf_frac_diff( theta, 4.49537973053997376 ) > TEST_TOL0 ); + gsl_test(sa, " gsl_angle_restrict_pos_e: theta = 5000000.0 + 1.0/65536.0"); + s += sa; + + /* + theta = 140737488355328.0; + gsl_sf_angle_restrict_pos_e(&theta); + sa = 0; + sa += ( test_sf_frac_diff( theta, 3.20652300406795792638 ) > TEST_TOL0 ); + gsl_test(sa, " gsl_angle_restrict_pos_e: theta = 2^47"); + s += sa; + */ + + theta = 5.0*M_PI + (5.5*DELTA + M_PI/2.0); + gsl_sf_angle_restrict_symm_e(&theta); + sa = 0; + sa += ( test_sf_frac_diff( theta, -M_PI/2.0 ) > 2.0*TEST_TOL0 ); + gsl_test(sa, " gsl_angle_restrict_symm_e: theta = 11/2 Pi"); + s += sa; + + theta = -5.0*M_PI - (5.5*DELTA + M_PI/2.0); + gsl_sf_angle_restrict_symm_e(&theta); + sa = 0; + sa += ( test_sf_frac_diff( theta, M_PI/2.0 ) > 2.0*TEST_TOL0 ); + gsl_test(sa, " gsl_angle_restrict_symm_e: theta = -11/2 Pi"); + s += sa; + + theta = 5.0*M_PI + 5*DELTA - M_PI/2.0; + gsl_sf_angle_restrict_symm_e(&theta); + sa = 0; + sa += ( test_sf_frac_diff( theta, M_PI/2.0 ) > TEST_TOL0 ); + gsl_test(sa, " gsl_angle_restrict_symm_e: theta = -9/2 Pi"); + s += sa; + + theta = 3.0/2.0*M_PI + 3.0/2.0*DELTA; + gsl_sf_angle_restrict_symm_e(&theta); + sa = 0; + sa += ( test_sf_frac_diff( theta, -M_PI/2.0 ) > TEST_TOL0 ); + gsl_test(sa, " gsl_angle_restrict_symm_e: theta = 3/2 Pi"); + s += sa; + + theta = -3.0/2.0*M_PI; + gsl_sf_angle_restrict_symm_e(&theta); + sa = 0; + sa += ( test_sf_frac_diff( theta, M_PI/2.0 ) > TEST_TOL0 ); + gsl_test(sa, " gsl_angle_restrict_symm_e: theta = -3/2 Pi"); + s += sa; + + theta = 50000.0 + 1.0/65536.0; + gsl_sf_angle_restrict_symm_e(&theta); + sa = 0; + sa += ( test_sf_frac_diff( theta, -1.5886592763601208714 ) > TEST_TOL0 ); + gsl_test(sa, " gsl_angle_restrict_symm_e: theta = 50000.0 + 1.0/65536.0"); + s += sa; + + return s; +} + + +/* I computed the values of zeta for s = -1e-10, 0, 1e-10 using the + Jensen formula, + + zeta(s) = -1/2 + 1/(1-s) + + integ(sin(s arctan(t))/((1+t^2)^(s/2)(exp(2pi*t)-1)), t, 0, inf) + + transforming the integral from a semi-infinite range to the range + [0,pi/2] using the substitution t = tan(u). After Taylor expansion + in s and numerical evaluation of the integrals this gave, + + zeta(s) = 1/2 + 1/(1-s) + + (0.0810614667944862 +/- 2e-16) s + + (-3.17822795429232e-3 +/- 2e-17) s^2 + + .... + + for an expansion about s = 0 [BJG 7/01] +*/ + +int test_zeta(void) +{ + gsl_sf_result r; + int s = 0; + + TEST_SF(s, gsl_sf_zeta_int_e, (-61.0, &r), -3.30660898765775767257e+34, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_zeta_int_e, (-8, &r), 0.0, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_zeta_int_e, (-6, &r), 0.0, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_zeta_int_e, (-5.0, &r), -0.003968253968253968253968, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_zeta_int_e, (-4, &r), 0.0, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_zeta_int_e, (-3, &r), 1.0/120.0, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_zeta_int_e, (-2, &r), 0.0, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_zeta_int_e, (-1, &r), -1.0/12.0, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_zeta_int_e, ( 5.0, &r), 1.0369277551433699263313655, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_zeta_int_e, (31.0, &r), 1.0000000004656629065033784, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_zetam1_int_e, (-61.0, &r), -3.30660898765775767257e+34, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_zetam1_int_e, (-5.0, &r), -1.003968253968253968253968, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_zetam1_int_e, (-8, &r), -1.0, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_zetam1_int_e, (-6, &r), -1.0, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_zetam1_int_e, (-4, &r), -1.0, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_zetam1_int_e, (-3, &r), -119.0/120.0, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_zetam1_int_e, (-2, &r), -1.0, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_zetam1_int_e, (-1, &r), -13.0/12.0, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_zetam1_int_e, ( 5.0, &r), 0.0369277551433699263313655, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_zetam1_int_e, (31.0, &r), 0.0000000004656629065033784, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_zeta_e, (-151, &r), 8.195215221831378294e+143, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_zeta_e, (-51, &r), 9.68995788746359406565e+24, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_zeta_e, (-5, &r), -0.003968253968253968253968, TEST_TOL1, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_zeta_e, (-8, &r), 0.0, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_zeta_e, (-6, &r), 0.0, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_zeta_e, (-4, &r), 0.0, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_zeta_e, (-3, &r), 1.0/120.0, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_zeta_e, (-2, &r), 0.0, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_zeta_e, (-1, &r), -1.0/12.0, TEST_TOL1, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_zeta_e, (-0.5, &r), -0.207886224977354566017307, TEST_TOL1, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_zeta_e, (-1e-10, &r), -0.49999999990810614668948, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_zeta_e, (0.0, &r), -0.5, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_zeta_e, (1e-10, &r), -0.50000000009189385333058, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_zeta_e, (0.5, &r), -1.460354508809586812889499, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_zeta_e, (1.0-1.0/1024.0, &r), -1023.4228554489429787, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_zeta_e, (1.0+1.0/1048576, &r), 1.0485765772157343441e+06, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_zeta_e, (5.0, &r), 1.036927755143369926331365, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_zeta_e, (25.5, &r), 1.000000021074106110269959, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_zetam1_e, (-8, &r), -1.0, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_zetam1_e, (-6, &r), -1.0, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_zetam1_e, (-4, &r), -1.0, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_zetam1_e, (-3, &r), -119.0/120.0, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_zetam1_e, (-2, &r), -1.0, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_zetam1_e, (-1, &r), -13.0/12.0, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_zetam1_e, (-0.5, &r), -1.207886224977354566017307, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_zetam1_e, (-1e-10, &r), -1.49999999990810614668948, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_zetam1_e, (0.0, &r), -1.5, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_zetam1_e, (1e-10, &r), -1.50000000009189385333058, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_zetam1_e, (0.5, &r), -2.460354508809586812889499, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_zetam1_e, (2.0, &r), 0.64493406684822643647, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_zetam1_e, (3.0, &r), 0.20205690315959428540, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_zetam1_e, (5.0, &r), 0.0369277551433699263314, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_zetam1_e, (9.5, &r), 0.0014125906121736622712, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_zetam1_e, (10.5, &r), 0.000700842641736155219500, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_zetam1_e, (12.5, &r), 0.000173751733643178193390, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_zetam1_e, (13.5, &r), 0.000086686727462338155188, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_zetam1_e, (15.5, &r), 0.000021619904246069108133, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_zetam1_e, (16.5, &r), 0.000010803124900178547671, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_zetam1_e, (25.5, &r), 0.000000021074106110269959, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_hzeta_e, (2, 1.0, &r), 1.6449340668482264365, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hzeta_e, (2, 10.0, &r), 0.1051663356816857461, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hzeta_e, (5, 1.0, &r), 1.0369277551433699263, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hzeta_e, (5, 10.0, &r), 0.000030413798676470276, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hzeta_e, (9, 0.1, &r), 1.0000000004253980e+09, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hzeta_e, (30, 0.5, &r), 1.0737418240000053e+09, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hzeta_e, (30, 0.9, &r), 2.3589824880264765e+01, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hzeta_e, (75, 0.25, &r), 1.4272476927059599e+45, TEST_TOL1, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_eta_int_e, (-91, &r), -4.945598888750002040e+94, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_eta_int_e, (-51, &r), -4.363969073121683116e+40, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_eta_int_e, (-5, &r), 0.25, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_eta_int_e, (-1, &r), 0.25, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_eta_int_e, ( 0, &r), 0.5, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_eta_int_e, ( 5, &r), 0.9721197704469093059, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_eta_int_e, ( 6, &r), 0.9855510912974351041, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_eta_int_e, ( 20, &r), 0.9999990466115815221, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_eta_int_e, ( 1000, &r), 1.0, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_eta_e, (-51.5, &r), -1.2524184036924703656e+41, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_eta_e, (-5, &r), 0.25, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_eta_e, (0.5, &r), 0.6048986434216303702, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_eta_e, (0.999, &r), 0.6929872789683383574, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_eta_e, (1.0, &r), 0.6931471805599453094, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_eta_e, (1.0+1.0e-10, &r), 0.6931471805759321998, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_eta_e, ( 5, &r), 0.9721197704469093059, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_eta_e, ( 5.2, &r), 0.9755278712546684682, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_eta_e, ( 6, &r), 0.9855510912974351041, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_eta_e, ( 20, &r), 0.9999990466115815221, TEST_TOL0, GSL_SUCCESS); + + return s; +} + +int test_results(void) +{ + int s = 0; + + gsl_sf_result_e10 re; + gsl_sf_result r; + + re.val = -1.0; + re.err = 0.5; + re.e10 = 0; + gsl_sf_result_smash_e(&re, &r); + s += ( test_sf_frac_diff(r.val, -1.0) > TEST_TOL0 ); + s += ( test_sf_frac_diff(r.err, 0.5) > TEST_TOL0 ); + + re.val = -1.0; + re.err = 0.5; + re.e10 = 10; + gsl_sf_result_smash_e(&re, &r); + s += ( test_sf_frac_diff(r.val, -1.0e+10) > TEST_TOL1 ); + s += ( test_sf_frac_diff(r.err, 0.5e+10) > TEST_TOL1 ); + + re.val = 1.0; + re.err = 0.5; + re.e10 = 10000; + s += ( gsl_sf_result_smash_e(&re, &r) != GSL_EOVRFLW ); + + re.val = 1.0; + re.err = 0.5; + re.e10 = -10000; + s += ( gsl_sf_result_smash_e(&re, &r) != GSL_EUNDRFLW ); + + return s; +} + + +int main(int argc, char * argv[]) +{ + gsl_ieee_env_setup (); + gsl_set_error_handler_off (); + + gsl_test(test_airy(), "Airy Functions"); + gsl_test(test_bessel(), "Bessel Functions"); + gsl_test(test_clausen(), "Clausen Integral"); + gsl_test(test_coulomb(), "Coulomb Wave Functions"); + gsl_test(test_coupling(), "Coupling Coefficients"); + gsl_test(test_dawson(), "Dawson Integral"); + gsl_test(test_debye(), "Debye Functions"); + gsl_test(test_dilog(), "Dilogarithm"); + gsl_test(test_elementary(), "Elementary Functions (Misc)"); + gsl_test(test_ellint(), "Elliptic Integrals"); + gsl_test(test_jac(), "Elliptic Functions (Jacobi)"); + gsl_test(test_erf(), "Error Functions"); + gsl_test(test_exp(), "Exponential Functions"); + gsl_test(test_expint(), "Exponential/Sine/Cosine Integrals"); + gsl_test(test_fermidirac(), "Fermi-Dirac Functions"); + gsl_test(test_gamma(), "Gamma Functions"); + gsl_test(test_gegen(), "Gegenbauer Polynomials"); + gsl_test(test_hermite(), "Hermite Functions"); + gsl_test(test_hyperg(), "Hypergeometric Functions"); + gsl_test(test_laguerre(), "Laguerre Polynomials"); + gsl_test(test_lambert(), "Lambert W Functions"); + gsl_test(test_legendre(), "Legendre Functions"); + gsl_test(test_log(), "Logarithm"); + gsl_test(test_mathieu(), "Mathieu Functions"); + gsl_test(test_pow_int(), "Integer Powers"); + gsl_test(test_psi(), "Psi Functions"); + gsl_test(test_psi_complex(), "Psi Function for complex argument"); + gsl_test(test_sincos_pi(), "sin_pi and cos_pi"); + gsl_test(test_synch(), "Synchrotron Functions"); + gsl_test(test_transport(), "Transport Functions"); + gsl_test(test_trig(), "Trigonometric and Related Functions"); + gsl_test(test_zeta(), "Zeta Functions"); + + gsl_test(test_results(), "Result Methods"); + + exit (gsl_test_summary()); +} diff --git a/gsl-2.5/specfunc/test_sf.h b/gsl-2.5/specfunc/test_sf.h new file mode 100644 index 00000000..5b811be7 --- /dev/null +++ b/gsl-2.5/specfunc/test_sf.h @@ -0,0 +1,108 @@ +/* specfunc/test_sf.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ + +#ifndef TEST_SF_H +#define TEST_SF_H + +#include +#include +#include +#include + +double test_sf_frac_diff(double x1, double x2); +int test_sf_check_result(char * message_buff, gsl_sf_result r, double val, double tol); +int test_sf_check_val(char * message_buff, double rval, double val, double tol); +int test_sf_check_return(char * message_buff, int val_return, int expected_return); +int test_sf_check_result_relax(char * message_buff, gsl_sf_result r, double val, double tol); + +/* Include an overall test factor to allow for differences between + compilers, otherwise there are too many bug reports on the released + versions. Turn this value down to 1.0 for development purposes */ + + +#ifndef TEST_FACTOR +#ifdef RELEASED +#define TEST_FACTOR 100.0 +#else +#define TEST_FACTOR 1.0 +#endif +#endif + +#ifndef TEST_SIGMA +#ifdef RELEASED +#define TEST_SIGMA 1.5 +#else +#define TEST_SIGMA 1.0 +#endif +#endif + +#define TEST_TOL0 (2.0*GSL_DBL_EPSILON) +#define TEST_TOL1 (16.0*GSL_DBL_EPSILON) +#define TEST_TOL2 (256.0*GSL_DBL_EPSILON) +#define TEST_TOL3 (2048.0*GSL_DBL_EPSILON) +#define TEST_TOL4 (16384.0*GSL_DBL_EPSILON) +#define TEST_TOL5 (131072.0*GSL_DBL_EPSILON) +#define TEST_TOL6 (1048576.0*GSL_DBL_EPSILON) +#define TEST_SQRT_TOL0 (2.0*GSL_SQRT_DBL_EPSILON) +#define TEST_SNGL (1.0e-06) + +#define TEST_SF_INCONS 1 +#define TEST_SF_ERRNEG 2 +#define TEST_SF_TOLBAD 4 +#define TEST_SF_RETBAD 8 +#define TEST_SF_ERRBAD 16 +#define TEST_SF_ERRBIG 32 +#define TEST_SF_EXPBAD 64 + +int test_sf (gsl_sf_result r, double val_in, double tol, int status, int expect_return, const char * desc); +int test_sf_e10 (gsl_sf_result_e10 r, double val_in, int e10_in, double tol, int status, int expect_return, const char * desc); +int test_sf_val (double val, double val_in, double tol, const char * desc); +int test_sf_rlx (gsl_sf_result r, double val_in, double tol, int status, int expect_return, const char * desc); +int test_sf_2 (gsl_sf_result r1, double val1, double tol1, gsl_sf_result r2, double val2, double tol2, int status, int expect_return, const char * desc); +int test_sf_sgn (gsl_sf_result r, double sgn, double val_in, double tol, double expect_sgn, int status, int expect_return, const char * desc); + +#define TEST_SF(stat, func, args, val_in, tol, expect_return) { int status = func args; stat += test_sf(r, val_in, tol, status, expect_return, #func #args); } + +#define TEST_SF_E10(stat, func, args, val_in, e10_in, tol, expect_return) { int status = func args; stat += test_sf_e10(re, val_in, e10_in, tol, status, expect_return, #func #args); } + +#define TEST_SF_VAL(stat, func, args, val_in, tol) { double val = func args; stat += test_sf_val(val, val_in, tol, #func #args); } + +#define TEST_SF_RLX(stat, func, args, val_in, tol, expect_return) { int status = func args; stat += test_sf_rlx(r, val_in, tol, status, expect_return, #func #args); } + +#define TEST_SF_2(stat, func, args, val1, tol1, val2, tol2, expect_return) { int status = func args; stat += test_sf_2(r1, val1, tol1, r2, val2, tol2, status, expect_return, #func #args); } + +#define TEST_SF_SGN(stat, func, args, val_in, tol, expect_sgn, expect_return) { int status = func args; stat += test_sf_sgn(r, sgn, val_in, tol, expect_sgn, status, expect_return, #func #args); } + +#define TEST_SF_THETA(stat, func, args, val_in, tol) { int status; theta=args; status = func (&theta); stat += test_sf_val(theta, val_in, tol, #func #args); } + +int test_airy(void); +int test_bessel(void); +int test_coulomb(void); +int test_dilog(void); +int test_gamma(void); +int test_mathieu(void); +int test_hermite(void); +int test_hyperg(void); +int test_legendre(void); +int test_sincos_pi(void); + + +#endif /* !TEST_SF_H */ diff --git a/gsl-2.5/specfunc/test_sincos_pi.c b/gsl-2.5/specfunc/test_sincos_pi.c new file mode 100644 index 00000000..c650903d --- /dev/null +++ b/gsl-2.5/specfunc/test_sincos_pi.c @@ -0,0 +1,395 @@ +/* specfunc/test_sincos_pi.c + * + * Copyright (C) 2017 Konrad Griessinger + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: Konrad Griessinger */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "test_sf.h" + +/* Any double precision number bigger than this is automatically an even integer. */ +#define BIGDBL (2.0 / GSL_DBL_EPSILON) + +int +test_sincos_pi(void) +{ + gsl_sf_result r; + int s = 0; + int k = 0, kmax = 12; + double x = 0.0, ix = 0.0, fx = 0.0, exact = 0.0; + + /* sin_pi tests */ + + fx = 0.5; + exact = 1.0; + + TEST_SF(s, gsl_sf_sin_pi_e, (ix+fx, &r), exact, TEST_TOL0, GSL_SUCCESS); + fx = -0.5; + exact = -1.0; + + TEST_SF(s, gsl_sf_sin_pi_e, (ix+fx, &r), exact, TEST_TOL0, GSL_SUCCESS); + + fx = 1.5; + exact = -1.0; + + TEST_SF(s, gsl_sf_sin_pi_e, (ix+fx, &r), exact, TEST_TOL0, GSL_SUCCESS); + fx = -1.5; + exact = 1.0; + + TEST_SF(s, gsl_sf_sin_pi_e, (ix+fx, &r), exact, TEST_TOL0, GSL_SUCCESS); + + fx = 2.5; + exact = 1.0; + + TEST_SF(s, gsl_sf_sin_pi_e, (ix+fx, &r), exact, TEST_TOL0, GSL_SUCCESS); + fx = -2.5; + exact = -1.0; + + TEST_SF(s, gsl_sf_sin_pi_e, (ix+fx, &r), exact, TEST_TOL0, GSL_SUCCESS); + + fx = 3.5; + exact = -1.0; + + TEST_SF(s, gsl_sf_sin_pi_e, (ix+fx, &r), exact, TEST_TOL0, GSL_SUCCESS); + fx = -3.5; + exact = 1.0; + + TEST_SF(s, gsl_sf_sin_pi_e, (ix+fx, &r), exact, TEST_TOL0, GSL_SUCCESS); + + fx = 0.375; + exact = 0.923879532511286756128183189397; + + TEST_SF(s, gsl_sf_sin_pi_e, (ix+fx, &r), exact, TEST_TOL0, GSL_SUCCESS); + + fx = -0.375; + exact = -0.923879532511286756128183189397; + + TEST_SF(s, gsl_sf_sin_pi_e, (ix+fx, &r), exact, TEST_TOL0, GSL_SUCCESS); + + fx = 0.0; + exact = 0.0; + + ix = 0.0; + for (k=0; k= BIGDBL ) ) break; + printf("ix+fx= %.18e\n", ix+fx); + TEST_SF(s, gsl_sf_sin_pi_e, (ix+fx, &r), exact, TEST_TOL0, GSL_SUCCESS); + ix += 101.0; + exact = -exact; + } + + fx = -0.0625; + exact = -0.195090322016128267848284868477; + ix = LONG_MIN - 1.0; + ix -= fabs(fmod(ix,2.0)); /* make sure of even number */ + + for (k=0; k= BIGDBL ) ) break; + printf("ix+fx= %.18e\n", ix+fx); + TEST_SF(s, gsl_sf_sin_pi_e, (ix+fx, &r), exact, TEST_TOL0, GSL_SUCCESS); + ix -= 101.0; + exact = -exact; + } + + + + /* cos_pi tests */ + + ix = 0.0; + fx = 0.0; + exact = 1.0; + + TEST_SF(s, gsl_sf_cos_pi_e, (ix+fx, &r), exact, TEST_TOL0, GSL_SUCCESS); + + fx = 1.0; + exact = -1.0; + + TEST_SF(s, gsl_sf_cos_pi_e, (ix+fx, &r), exact, TEST_TOL0, GSL_SUCCESS); + + fx = -1.0; + exact = -1.0; + + TEST_SF(s, gsl_sf_cos_pi_e, (ix+fx, &r), exact, TEST_TOL0, GSL_SUCCESS); + + fx = 2.0; + exact = 1.0; + + TEST_SF(s, gsl_sf_cos_pi_e, (ix+fx, &r), exact, TEST_TOL0, GSL_SUCCESS); + + fx = -2.0; + exact = 1.0; + + TEST_SF(s, gsl_sf_cos_pi_e, (ix+fx, &r), exact, TEST_TOL0, GSL_SUCCESS); + + fx = 3.0; + exact = -1.0; + + TEST_SF(s, gsl_sf_cos_pi_e, (ix+fx, &r), exact, TEST_TOL0, GSL_SUCCESS); + + fx = -3.0; + exact = -1.0; + + TEST_SF(s, gsl_sf_cos_pi_e, (ix+fx, &r), exact, TEST_TOL0, GSL_SUCCESS); + + + fx = 0.375; + exact = 0.382683432365089771728459984030; + + TEST_SF(s, gsl_sf_cos_pi_e, (ix+fx, &r), exact, TEST_TOL0, GSL_SUCCESS); + + fx = -0.375; + exact = 0.382683432365089771728459984030; + + TEST_SF(s, gsl_sf_cos_pi_e, (ix+fx, &r), exact, TEST_TOL0, GSL_SUCCESS); + + fx = 0.0; + exact = 1.0; + + ix = 0.0; + for (k=0; k= BIGDBL ) ) break; + TEST_SF(s, gsl_sf_cos_pi_e, (ix+fx, &r), exact, TEST_TOL0, GSL_SUCCESS); + ix += 101.0; + exact = -exact; + } + + fx = -0.0625; + exact = 0.980785280403230449126182236134; + ix = LONG_MIN - 1.0; + ix -= fabs(fmod(ix,2.0)); /* make sure of even number */ + + for (k=0; k= BIGDBL ) ) break; + TEST_SF(s, gsl_sf_cos_pi_e, (ix+fx, &r), exact, TEST_TOL0, GSL_SUCCESS); + ix -= 101.0; + exact = -exact; + } + + return s; +} + diff --git a/gsl-2.5/specfunc/transport.c b/gsl-2.5/specfunc/transport.c new file mode 100644 index 00000000..c55c13c1 --- /dev/null +++ b/gsl-2.5/specfunc/transport.c @@ -0,0 +1,492 @@ +/* specfunc/transport.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ + +#include +#include +#include +#include + +#include "error.h" +#include "check.h" + +#include "chebyshev.h" +#include "cheb_eval.c" + +static double transport2_data[18] = { + 1.671760446434538503, + -0.147735359946794490, + 0.148213819946936338e-01, + -0.14195330326305613e-02, + 0.1306541324415708e-03, + -0.117155795867579e-04, + 0.10333498445756e-05, + -0.901911304223e-07, + 0.78177169833e-08, + -0.6744565684e-09, + 0.579946394e-10, + -0.49747619e-11, + 0.425961e-12, + -0.36422e-13, + 0.3111e-14, + -0.265e-15, + 0.23e-16, + -0.19e-17 +}; +static cheb_series transport2_cs = { + transport2_data, + 17, + -1, 1, + 9 +}; + +static double transport3_data[18] = { + 0.762012543243872007, + -0.105674387705058533, + 0.119778084819657810e-01, + -0.12144015203698307e-02, + 0.1155099769392855e-03, + -0.105815992124423e-04, + 0.9474663385302e-06, + -0.836221212858e-07, + 0.73109099278e-08, + -0.6350594779e-09, + 0.549118282e-10, + -0.47321395e-11, + 0.4067695e-12, + -0.348971e-13, + 0.29892e-14, + -0.256e-15, + 0.219e-16, + -0.19e-17 +}; +static cheb_series transport3_cs = { + transport3_data, + 17, + -1, 1, + 9 +}; + + +static double transport4_data[18] = { + 0.4807570994615110579, + -0.8175378810321083956e-01, + 0.1002700665975162973e-01, + -0.10599339359820151e-02, + 0.1034506245030405e-03, + -0.96442705485899e-05, + 0.8745544408515e-06, + -0.779321207981e-07, + 0.68649886141e-08, + -0.5999571076e-09, + 0.521366241e-10, + -0.45118382e-11, + 0.3892159e-12, + -0.334936e-13, + 0.28767e-14, + -0.2467e-15, + 0.211e-16, + -0.18e-17 +}; +static cheb_series transport4_cs = { + transport4_data, + 17, + -1, 1, + 9 +}; + + +static double transport5_data[18] = { + 0.347777777133910789, + -0.66456988976050428e-01, + 0.8611072656883309e-02, + -0.9396682223755538e-03, + 0.936324806081513e-04, + -0.88571319340833e-05, + 0.811914989145e-06, + -0.72957654233e-07, + 0.646971455e-08, + -0.568490283e-09, + 0.49625598e-10, + -0.4310940e-11, + 0.373100e-12, + -0.32198e-13, + 0.2772e-14, + -0.238e-15, + 0.21e-16, + -0.18e-17 +}; +static cheb_series transport5_cs = { + transport5_data, + 17, + -1, 1, + 9 +}; + + +static +double +transport_sumexp(const int numexp, const int order, const double t, double x) +{ + double rk = (double)numexp; + double sumexp = 0.0; + int k; + for(k=1; k<=numexp; k++) { + double sum2 = 1.0; + double xk = 1.0/(rk*x); + double xk1 = 1.0; + int j; + for(j=1; j<=order; j++) { + sum2 = sum2*xk1*xk + 1.0; + xk1 += 1.0; + } + sumexp *= t; + sumexp += sum2; + rk -= 1.0; + } + return sumexp; +} + + +/*-*-*-*-*-*-*-*-*-*-*-* Functions with Error Codes *-*-*-*-*-*-*-*-*-*-*-*/ + +int +gsl_sf_transport_2_e(const double x, gsl_sf_result * result) +{ + const double val_infinity = 3.289868133696452873; + + /* CHECK_POINTER(result) */ + + if(x < 0.0) { + DOMAIN_ERROR(result); + } + else if(x < 3.0*GSL_SQRT_DBL_EPSILON) { + result->val = x; + result->err = GSL_DBL_EPSILON*fabs(x) + x*x/2.0; + return GSL_SUCCESS; + } + else if(x <= 4.0) { + double t = (x*x/8.0 - 0.5) - 0.5; + gsl_sf_result result_c; + cheb_eval_e(&transport2_cs, t, &result_c); + result->val = x * result_c.val; + result->err = x * result_c.err; + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else if(x < -GSL_LOG_DBL_EPSILON) { + const int numexp = (int)((-GSL_LOG_DBL_EPSILON)/x) + 1; + const double sumexp = transport_sumexp(numexp, 2, exp(-x), x); + const double t = 2.0 * log(x) - x + log(sumexp); + if(t < GSL_LOG_DBL_EPSILON) { + result->val = val_infinity; + result->err = 2.0 * GSL_DBL_EPSILON * val_infinity; + } + else { + const double et = exp(t); + result->val = val_infinity - et; + result->err = 2.0 * GSL_DBL_EPSILON * (val_infinity + fabs(t) * et); + } + return GSL_SUCCESS; + } + else if(x < 2.0/GSL_DBL_EPSILON) { + const int numexp = 1; + const double sumexp = transport_sumexp(numexp, 2, 1.0, x); + const double t = 2.0 * log(x) - x + log(sumexp); + if(t < GSL_LOG_DBL_EPSILON) { + result->val = val_infinity; + result->err = 2.0 * GSL_DBL_EPSILON * val_infinity; + } + else { + const double et = exp(t); + result->val = val_infinity - et; + result->err = 2.0 * GSL_DBL_EPSILON * (val_infinity + (fabs(t)+1.0) * et); + } + return GSL_SUCCESS; + } + else { + const double t = 2.0 * log(x) - x; + if(t < GSL_LOG_DBL_EPSILON) { + result->val = val_infinity; + result->err = 2.0 * GSL_DBL_EPSILON * val_infinity; + } + else { + const double et = exp(t); + result->val = val_infinity - et; + result->err = 2.0 * GSL_DBL_EPSILON * (val_infinity + (fabs(t)+1.0) * et); + } + return GSL_SUCCESS; + } +} + + +int +gsl_sf_transport_3_e(const double x, gsl_sf_result * result) +{ + const double val_infinity = 7.212341418957565712; + + /* CHECK_POINTER(result) */ + + if(x < 0.0) { + DOMAIN_ERROR(result); + } + else if(x == 0.0) { + result->val = 0.0; + result->err = 0.0; + return GSL_SUCCESS; + } + else if(x < 3.0*GSL_SQRT_DBL_EPSILON) { + result->val = 0.5*x*x; + result->err = 2.0 * GSL_DBL_EPSILON * result->val; + CHECK_UNDERFLOW(result); + return GSL_SUCCESS; + } + else if(x <= 4.0) { + const double x2 = x*x; + const double t = (x2/8.0 - 0.5) - 0.5; + gsl_sf_result result_c; + cheb_eval_e(&transport3_cs, t, &result_c); + result->val = x2 * result_c.val; + result->err = x2 * result_c.err; + result->err += GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else if(x < -GSL_LOG_DBL_EPSILON) { + const int numexp = (int)((-GSL_LOG_DBL_EPSILON)/x) + 1; + const double sumexp = transport_sumexp(numexp, 3, exp(-x), x); + const double t = 3.0 * log(x) - x + log(sumexp); + if(t < GSL_LOG_DBL_EPSILON) { + result->val = val_infinity; + result->err = 2.0 * GSL_DBL_EPSILON * val_infinity; + } + else { + const double et = exp(t); + result->val = val_infinity - et; + result->err = 2.0 * GSL_DBL_EPSILON * (val_infinity + fabs(t) * et); + } + return GSL_SUCCESS; + } + else if(x < 3.0/GSL_DBL_EPSILON) { + const int numexp = 1; + const double sumexp = transport_sumexp(numexp, 3, 1.0, x); + const double t = 3.0 * log(x) - x + log(sumexp); + if(t < GSL_LOG_DBL_EPSILON) { + result->val = val_infinity; + result->err = 2.0 * GSL_DBL_EPSILON * val_infinity; + } + else { + const double et = exp(t); + result->val = val_infinity - et; + result->err = 2.0 * GSL_DBL_EPSILON * (val_infinity + (fabs(t)+1.0) * et); + } + return GSL_SUCCESS; + } + else { + const double t = 3.0 * log(x) - x; + if(t < GSL_LOG_DBL_EPSILON) { + result->val = val_infinity; + result->err = 2.0 * GSL_DBL_EPSILON * val_infinity; + } + else { + const double et = exp(t); + result->val = val_infinity - et; + result->err = 2.0 * GSL_DBL_EPSILON * (val_infinity + (fabs(t)+1.0) * et); + } + return GSL_SUCCESS; + } +} + + +int +gsl_sf_transport_4_e(const double x, gsl_sf_result * result) +{ + const double val_infinity = 25.97575760906731660; + + /* CHECK_POINTER(result) */ + + if(x < 0.0) { + DOMAIN_ERROR(result); + } + else if(x == 0.0) { + result->val = 0.0; + result->err = 0.0; + return GSL_SUCCESS; + } + else if(x < 3.0*GSL_SQRT_DBL_EPSILON) { + result->val = x*x*x/3.0; + result->err = 3.0 * GSL_DBL_EPSILON * result->val; + CHECK_UNDERFLOW(result); + return GSL_SUCCESS; + } + else if(x <= 4.0) { + const double x2 = x*x; + const double t = (x2/8.0 - 0.5) - 0.5; + gsl_sf_result result_c; + cheb_eval_e(&transport4_cs, t, &result_c); + result->val = x2*x * result_c.val; + result->err = x2*x * result_c.err; + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else if(x < -GSL_LOG_DBL_EPSILON) { + const int numexp = (int)((-GSL_LOG_DBL_EPSILON)/x) + 1; + const double sumexp = transport_sumexp(numexp, 4, exp(-x), x); + const double t = 4.0 * log(x) - x + log(sumexp); + if(t < GSL_LOG_DBL_EPSILON) { + result->val = val_infinity; + result->err = 2.0 * GSL_DBL_EPSILON * val_infinity; + } + else { + const double et = exp(t); + result->val = val_infinity - et; + result->err = 2.0 * GSL_DBL_EPSILON * (val_infinity + (fabs(t)+1.0) * et); + } + return GSL_SUCCESS; + } + else if(x < 3.0/GSL_DBL_EPSILON) { + const int numexp = 1; + const double sumexp = transport_sumexp(numexp, 4, 1.0, x); + const double t = 4.0 * log(x) - x + log(sumexp); + if(t < GSL_LOG_DBL_EPSILON) { + result->val = val_infinity; + result->err = 2.0 * GSL_DBL_EPSILON * val_infinity; + } + else { + const double et = exp(t); + result->val = val_infinity - et; + result->err = 2.0 * GSL_DBL_EPSILON * (val_infinity + (fabs(t)+1.0) * et); + } + return GSL_SUCCESS; + } + else { + const double t = 4.0 * log(x) - x; + if(t < GSL_LOG_DBL_EPSILON) { + result->val = val_infinity; + result->err = 2.0 * GSL_DBL_EPSILON * val_infinity; + } + else { + const double et = exp(t); + result->val = val_infinity - et; + result->err = 2.0 * GSL_DBL_EPSILON * (val_infinity + (fabs(t)+1.0) * et); + } + return GSL_SUCCESS; + } +} + + +int +gsl_sf_transport_5_e(const double x, gsl_sf_result * result) +{ + const double val_infinity = 124.4313306172043912; + + /* CHECK_POINTER(result) */ + + if(x < 0.0) { + DOMAIN_ERROR(result); + } + else if(x == 0.0) { + result->val = 0.0; + result->err = 0.0; + return GSL_SUCCESS; + } + else if(x < 3.0*GSL_SQRT_DBL_EPSILON) { + result->val = x*x*x*x/4.0; + result->err = 4.0 * GSL_DBL_EPSILON * result->val; + CHECK_UNDERFLOW(result); + return GSL_SUCCESS; + } + else if(x <= 4.0) { + const double x2 = x*x; + const double t = (x2/8.0 - 0.5) - 0.5; + gsl_sf_result result_c; + cheb_eval_e(&transport5_cs, t, &result_c); + result->val = x2*x2 * result_c.val; + result->err = x2*x2 * result_c.err; + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else if(x < -GSL_LOG_DBL_EPSILON) { + const int numexp = (int)((-GSL_LOG_DBL_EPSILON)/x) + 1; + const double sumexp = transport_sumexp(numexp, 5, exp(-x), x); + const double t = 5.0 * log(x) - x + log(sumexp); + if(t < GSL_LOG_DBL_EPSILON) { + result->val = val_infinity; + result->err = 2.0 * GSL_DBL_EPSILON * val_infinity; + } + else { + const double et = exp(t); + result->val = val_infinity - et; + result->err = 2.0 * GSL_DBL_EPSILON * (val_infinity + (fabs(t)+1.0) * et); + } + return GSL_SUCCESS; + } + else if(x < 3.0/GSL_DBL_EPSILON) { + const int numexp = 1; + const double sumexp = transport_sumexp(numexp, 5, 1.0, x); + const double t = 5.0 * log(x) - x + log(sumexp); + if(t < GSL_LOG_DBL_EPSILON) { + result->val = val_infinity; + result->err = 2.0 * GSL_DBL_EPSILON * val_infinity; + } + else { + const double et = exp(t); + result->val = val_infinity - et; + result->err = 2.0 * GSL_DBL_EPSILON * (val_infinity + (fabs(t)+1.0) * et); + } + return GSL_SUCCESS; + } + else { + const double t = 5.0 * log(x) - x; + if(t < GSL_LOG_DBL_EPSILON) { + result->val = val_infinity; + result->err = 2.0 * GSL_DBL_EPSILON * val_infinity; + } + else { + const double et = exp(t); + result->val = val_infinity - et; + result->err = 2.0 * GSL_DBL_EPSILON * (val_infinity + (fabs(t)+1.0) * et); + } + return GSL_SUCCESS; + } +} + +/*-*-*-*-*-*-*-*-*-* Functions w/ Natural Prototypes *-*-*-*-*-*-*-*-*-*-*/ + +#include "eval.h" + +double gsl_sf_transport_2(const double x) +{ + EVAL_RESULT(gsl_sf_transport_2_e(x, &result)); +} + +double gsl_sf_transport_3(const double x) +{ + EVAL_RESULT(gsl_sf_transport_3_e(x, &result)); +} + +double gsl_sf_transport_4(const double x) +{ + EVAL_RESULT(gsl_sf_transport_4_e(x, &result)); +} + +double gsl_sf_transport_5(const double x) +{ + EVAL_RESULT(gsl_sf_transport_5_e(x, &result)); +} diff --git a/gsl-2.5/specfunc/transport.lo b/gsl-2.5/specfunc/transport.lo new file mode 100644 index 00000000..32a0b6b1 --- /dev/null +++ b/gsl-2.5/specfunc/transport.lo @@ -0,0 +1,12 @@ +# transport.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/transport.o' + +# Name of the non-PIC object +non_pic_object='transport.o' + diff --git a/gsl-2.5/specfunc/trig.c b/gsl-2.5/specfunc/trig.c new file mode 100644 index 00000000..78b6e282 --- /dev/null +++ b/gsl-2.5/specfunc/trig.c @@ -0,0 +1,771 @@ +/* specfunc/trig.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ + +#include +#include +#include +#include +#include + +#include "error.h" + +#include "chebyshev.h" +#include "cheb_eval.c" + +/* sinh(x) series + * double-precision for |x| < 1.0 + */ +inline +static +int +sinh_series(const double x, double * result) +{ + const double y = x*x; + const double c0 = 1.0/6.0; + const double c1 = 1.0/120.0; + const double c2 = 1.0/5040.0; + const double c3 = 1.0/362880.0; + const double c4 = 1.0/39916800.0; + const double c5 = 1.0/6227020800.0; + const double c6 = 1.0/1307674368000.0; + const double c7 = 1.0/355687428096000.0; + *result = x*(1.0 + y*(c0+y*(c1+y*(c2+y*(c3+y*(c4+y*(c5+y*(c6+y*c7)))))))); + return GSL_SUCCESS; +} + + +/* cosh(x)-1 series + * double-precision for |x| < 1.0 + */ +inline +static +int +cosh_m1_series(const double x, double * result) +{ + const double y = x*x; + const double c0 = 0.5; + const double c1 = 1.0/24.0; + const double c2 = 1.0/720.0; + const double c3 = 1.0/40320.0; + const double c4 = 1.0/3628800.0; + const double c5 = 1.0/479001600.0; + const double c6 = 1.0/87178291200.0; + const double c7 = 1.0/20922789888000.0; + const double c8 = 1.0/6402373705728000.0; + *result = y*(c0+y*(c1+y*(c2+y*(c3+y*(c4+y*(c5+y*(c6+y*(c7+y*c8)))))))); + return GSL_SUCCESS; +} + + +/* Chebyshev expansion for f(t) = sinc((t+1)/2), -1 < t < 1 + */ +static double sinc_data[17] = { + 1.133648177811747875422, + -0.532677564732557348781, + -0.068293048346633177859, + 0.033403684226353715020, + 0.001485679893925747818, + -0.000734421305768455295, + -0.000016837282388837229, + 0.000008359950146618018, + 0.000000117382095601192, + -0.000000058413665922724, + -0.000000000554763755743, + 0.000000000276434190426, + 0.000000000001895374892, + -0.000000000000945237101, + -0.000000000000004900690, + 0.000000000000002445383, + 0.000000000000000009925 +}; +static cheb_series sinc_cs = { + sinc_data, + 16, + -1, 1, + 10 +}; + + +/* Chebyshev expansion for f(t) = g((t+1)Pi/8), -1val = x * (1.0 - x2/6.0); + result->err = fabs(x*x2*x2 / 100.0); + return GSL_SUCCESS; + } + else { + double sgn_result = sgn_x; + double y = floor(abs_x/(0.25*M_PI)); + int octant = y - ldexp(floor(ldexp(y,-3)),3); + int stat_cs; + double z; + + if(GSL_IS_ODD(octant)) { + octant += 1; + octant &= 07; + y += 1.0; + } + + if(octant > 3) { + octant -= 4; + sgn_result = -sgn_result; + } + + z = ((abs_x - y * P1) - y * P2) - y * P3; + + if(octant == 0) { + gsl_sf_result sin_cs_result; + const double t = 8.0*fabs(z)/M_PI - 1.0; + stat_cs = cheb_eval_e(&sin_cs, t, &sin_cs_result); + result->val = z * (1.0 + z*z * sin_cs_result.val); + } + else { /* octant == 2 */ + gsl_sf_result cos_cs_result; + const double t = 8.0*fabs(z)/M_PI - 1.0; + stat_cs = cheb_eval_e(&cos_cs, t, &cos_cs_result); + result->val = 1.0 - 0.5*z*z * (1.0 - z*z * cos_cs_result.val); + } + + result->val *= sgn_result; + + if(abs_x > 1.0/GSL_DBL_EPSILON) { + result->err = fabs(result->val); + } + else if(abs_x > 100.0/GSL_SQRT_DBL_EPSILON) { + result->err = 2.0 * abs_x * GSL_DBL_EPSILON * fabs(result->val); + } + else if(abs_x > 0.1/GSL_SQRT_DBL_EPSILON) { + result->err = 2.0 * GSL_SQRT_DBL_EPSILON * fabs(result->val); + } + else { + result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val); + } + + return stat_cs; + } + } +} + + +int +gsl_sf_cos_e(double x, gsl_sf_result * result) +{ + /* CHECK_POINTER(result) */ + + { + const double P1 = 7.85398125648498535156e-1; + const double P2 = 3.77489470793079817668e-8; + const double P3 = 2.69515142907905952645e-15; + + const double abs_x = fabs(x); + + if(abs_x < GSL_ROOT4_DBL_EPSILON) { + const double x2 = x*x; + result->val = 1.0 - 0.5*x2; + result->err = fabs(x2*x2/12.0); + return GSL_SUCCESS; + } + else { + double sgn_result = 1.0; + double y = floor(abs_x/(0.25*M_PI)); + int octant = y - ldexp(floor(ldexp(y,-3)),3); + int stat_cs; + double z; + + if(GSL_IS_ODD(octant)) { + octant += 1; + octant &= 07; + y += 1.0; + } + + if(octant > 3) { + octant -= 4; + sgn_result = -sgn_result; + } + + if(octant > 1) { + sgn_result = -sgn_result; + } + + z = ((abs_x - y * P1) - y * P2) - y * P3; + + if(octant == 0) { + gsl_sf_result cos_cs_result; + const double t = 8.0*fabs(z)/M_PI - 1.0; + stat_cs = cheb_eval_e(&cos_cs, t, &cos_cs_result); + result->val = 1.0 - 0.5*z*z * (1.0 - z*z * cos_cs_result.val); + } + else { /* octant == 2 */ + gsl_sf_result sin_cs_result; + const double t = 8.0*fabs(z)/M_PI - 1.0; + stat_cs = cheb_eval_e(&sin_cs, t, &sin_cs_result); + result->val = z * (1.0 + z*z * sin_cs_result.val); + } + + result->val *= sgn_result; + + if(abs_x > 1.0/GSL_DBL_EPSILON) { + result->err = fabs(result->val); + } + else if(abs_x > 100.0/GSL_SQRT_DBL_EPSILON) { + result->err = 2.0 * abs_x * GSL_DBL_EPSILON * fabs(result->val); + } + else if(abs_x > 0.1/GSL_SQRT_DBL_EPSILON) { + result->err = 2.0 * GSL_SQRT_DBL_EPSILON * fabs(result->val); + } + else { + result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val); + } + + return stat_cs; + } + } +} + + +int +gsl_sf_hypot_e(const double x, const double y, gsl_sf_result * result) +{ + /* CHECK_POINTER(result) */ + + if(x == 0.0 && y == 0.0) { + result->val = 0.0; + result->err = 0.0; + return GSL_SUCCESS; + } + else { + const double a = fabs(x); + const double b = fabs(y); + const double min = GSL_MIN_DBL(a,b); + const double max = GSL_MAX_DBL(a,b); + const double rat = min/max; + const double root_term = sqrt(1.0 + rat*rat); + + if(max < GSL_DBL_MAX/root_term) { + result->val = max * root_term; + result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else { + OVERFLOW_ERROR(result); + } + } +} + + +int +gsl_sf_complex_sin_e(const double zr, const double zi, + gsl_sf_result * szr, gsl_sf_result * szi) +{ + /* CHECK_POINTER(szr) */ + /* CHECK_POINTER(szi) */ + + if(fabs(zi) < 1.0) { + double ch_m1, sh; + sinh_series(zi, &sh); + cosh_m1_series(zi, &ch_m1); + szr->val = sin(zr)*(ch_m1 + 1.0); + szi->val = cos(zr)*sh; + szr->err = 2.0 * GSL_DBL_EPSILON * fabs(szr->val); + szi->err = 2.0 * GSL_DBL_EPSILON * fabs(szi->val); + return GSL_SUCCESS; + } + else if(fabs(zi) < GSL_LOG_DBL_MAX) { + double ex = exp(zi); + double ch = 0.5*(ex+1.0/ex); + double sh = 0.5*(ex-1.0/ex); + szr->val = sin(zr)*ch; + szi->val = cos(zr)*sh; + szr->err = 2.0 * GSL_DBL_EPSILON * fabs(szr->val); + szi->err = 2.0 * GSL_DBL_EPSILON * fabs(szi->val); + return GSL_SUCCESS; + } + else { + OVERFLOW_ERROR_2(szr, szi); + } +} + + +int +gsl_sf_complex_cos_e(const double zr, const double zi, + gsl_sf_result * czr, gsl_sf_result * czi) +{ + /* CHECK_POINTER(czr) */ + /* CHECK_POINTER(czi) */ + + if(fabs(zi) < 1.0) { + double ch_m1, sh; + sinh_series(zi, &sh); + cosh_m1_series(zi, &ch_m1); + czr->val = cos(zr)*(ch_m1 + 1.0); + czi->val = -sin(zr)*sh; + czr->err = 2.0 * GSL_DBL_EPSILON * fabs(czr->val); + czi->err = 2.0 * GSL_DBL_EPSILON * fabs(czi->val); + return GSL_SUCCESS; + } + else if(fabs(zi) < GSL_LOG_DBL_MAX) { + double ex = exp(zi); + double ch = 0.5*(ex+1.0/ex); + double sh = 0.5*(ex-1.0/ex); + czr->val = cos(zr)*ch; + czi->val = -sin(zr)*sh; + czr->err = 2.0 * GSL_DBL_EPSILON * fabs(czr->val); + czi->err = 2.0 * GSL_DBL_EPSILON * fabs(czi->val); + return GSL_SUCCESS; + } + else { + OVERFLOW_ERROR_2(czr,czi); + } +} + + +int +gsl_sf_complex_logsin_e(const double zr, const double zi, + gsl_sf_result * lszr, gsl_sf_result * lszi) +{ + /* CHECK_POINTER(lszr) */ + /* CHECK_POINTER(lszi) */ + + if(zi > 60.0) { + lszr->val = -M_LN2 + zi; + lszi->val = 0.5*M_PI - zr; + lszr->err = 2.0 * GSL_DBL_EPSILON * fabs(lszr->val); + lszi->err = 2.0 * GSL_DBL_EPSILON * fabs(lszi->val); + } + else if(zi < -60.0) { + lszr->val = -M_LN2 - zi; + lszi->val = -0.5*M_PI + zr; + lszr->err = 2.0 * GSL_DBL_EPSILON * fabs(lszr->val); + lszi->err = 2.0 * GSL_DBL_EPSILON * fabs(lszi->val); + } + else { + gsl_sf_result sin_r, sin_i; + int status; + gsl_sf_complex_sin_e(zr, zi, &sin_r, &sin_i); /* ok by construction */ + status = gsl_sf_complex_log_e(sin_r.val, sin_i.val, lszr, lszi); + if(status == GSL_EDOM) { + DOMAIN_ERROR_2(lszr, lszi); + } + } + return gsl_sf_angle_restrict_symm_e(&(lszi->val)); +} + + +int +gsl_sf_lnsinh_e(const double x, gsl_sf_result * result) +{ + /* CHECK_POINTER(result) */ + + if(x <= 0.0) { + DOMAIN_ERROR(result); + } + else if(fabs(x) < 1.0) { + double eps; + sinh_series(x, &eps); + result->val = log(eps); + result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else if(x < -0.5*GSL_LOG_DBL_EPSILON) { + result->val = x + log(0.5*(1.0 - exp(-2.0*x))); + result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else { + result->val = -M_LN2 + x; + result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } +} + + +int gsl_sf_lncosh_e(const double x, gsl_sf_result * result) +{ + /* CHECK_POINTER(result) */ + + if(fabs(x) < 1.0) { + double eps; + cosh_m1_series(x, &eps); + return gsl_sf_log_1plusx_e(eps, result); + } + else if(fabs(x) < -0.5*GSL_LOG_DBL_EPSILON) { + result->val = fabs(x) + log(0.5*(1.0 + exp(-2.0*fabs(x)))); + result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else { + result->val = -M_LN2 + fabs(x); + result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } +} + + +/* +inline int gsl_sf_sincos_e(const double theta, double * s, double * c) +{ + double tan_half = tan(0.5 * theta); + double den = 1. + tan_half*tan_half; + double cos_theta = (1.0 - tan_half*tan_half) / den; + double sin_theta = 2.0 * tan_half / den; +} +*/ + +int +gsl_sf_polar_to_rect(const double r, const double theta, + gsl_sf_result * x, gsl_sf_result * y) +{ + double t = theta; + int status = gsl_sf_angle_restrict_symm_e(&t); + double c = cos(t); + double s = sin(t); + x->val = r * cos(t); + y->val = r * sin(t); + x->err = r * fabs(s * GSL_DBL_EPSILON * t); + x->err += 2.0 * GSL_DBL_EPSILON * fabs(x->val); + y->err = r * fabs(c * GSL_DBL_EPSILON * t); + y->err += 2.0 * GSL_DBL_EPSILON * fabs(y->val); + return status; +} + + +int +gsl_sf_rect_to_polar(const double x, const double y, + gsl_sf_result * r, gsl_sf_result * theta) +{ + int stat_h = gsl_sf_hypot_e(x, y, r); + if(r->val > 0.0) { + theta->val = atan2(y, x); + theta->err = 2.0 * GSL_DBL_EPSILON * fabs(theta->val); + return stat_h; + } + else { + DOMAIN_ERROR(theta); + } +} + + +int gsl_sf_angle_restrict_symm_err_e(const double theta, gsl_sf_result * result) +{ + /* synthetic extended precision constants */ + const double P1 = 4 * 7.8539812564849853515625e-01; + const double P2 = 4 * 3.7748947079307981766760e-08; + const double P3 = 4 * 2.6951514290790594840552e-15; + const double TwoPi = 2*(P1 + P2 + P3); + + const double y = GSL_SIGN(theta) * 2 * floor(fabs(theta)/TwoPi); + double r = ((theta - y*P1) - y*P2) - y*P3; + + if(r > M_PI) { r = (((r-2*P1)-2*P2)-2*P3); } /* r-TwoPi */ + else if (r < -M_PI) r = (((r+2*P1)+2*P2)+2*P3); /* r+TwoPi */ + + result->val = r; + + if(fabs(theta) > 0.0625/GSL_DBL_EPSILON) { + result->val = GSL_NAN; + result->err = GSL_NAN; + GSL_ERROR ("error", GSL_ELOSS); + } + else if(fabs(theta) > 0.0625/GSL_SQRT_DBL_EPSILON) { + result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val - theta); + return GSL_SUCCESS; + } + else { + double delta = fabs(result->val - theta); + result->err = 2.0 * GSL_DBL_EPSILON * ((delta < M_PI) ? delta : M_PI); + return GSL_SUCCESS; + } +} + + +int gsl_sf_angle_restrict_pos_err_e(const double theta, gsl_sf_result * result) +{ + /* synthetic extended precision constants */ + const double P1 = 4 * 7.85398125648498535156e-01; + const double P2 = 4 * 3.77489470793079817668e-08; + const double P3 = 4 * 2.69515142907905952645e-15; + const double TwoPi = 2*(P1 + P2 + P3); + + const double y = 2*floor(theta/TwoPi); + + double r = ((theta - y*P1) - y*P2) - y*P3; + + if(r > TwoPi) {r = (((r-2*P1)-2*P2)-2*P3); } /* r-TwoPi */ + else if (r < 0) { /* may happen due to FP rounding */ + r = (((r+2*P1)+2*P2)+2*P3); /* r+TwoPi */ + } + + result->val = r; + + if(fabs(theta) > 0.0625/GSL_DBL_EPSILON) { + result->val = GSL_NAN; + result->err = fabs(result->val); + GSL_ERROR ("error", GSL_ELOSS); + } + else if(fabs(theta) > 0.0625/GSL_SQRT_DBL_EPSILON) { + result->err = GSL_DBL_EPSILON * fabs(result->val - theta); + return GSL_SUCCESS; + } + else { + double delta = fabs(result->val - theta); + result->err = 2.0 * GSL_DBL_EPSILON * ((delta < M_PI) ? delta : M_PI); + return GSL_SUCCESS; + } +} + + +int gsl_sf_angle_restrict_symm_e(double * theta) +{ + gsl_sf_result r; + int stat = gsl_sf_angle_restrict_symm_err_e(*theta, &r); + *theta = r.val; + return stat; +} + + +int gsl_sf_angle_restrict_pos_e(double * theta) +{ + gsl_sf_result r; + int stat = gsl_sf_angle_restrict_pos_err_e(*theta, &r); + *theta = r.val; + return stat; +} + + +int gsl_sf_sin_err_e(const double x, const double dx, gsl_sf_result * result) +{ + int stat_s = gsl_sf_sin_e(x, result); + result->err += fabs(cos(x) * dx); + result->err += GSL_DBL_EPSILON * fabs(result->val); + return stat_s; +} + + +int gsl_sf_cos_err_e(const double x, const double dx, gsl_sf_result * result) +{ + int stat_c = gsl_sf_cos_e(x, result); + result->err += fabs(sin(x) * dx); + result->err += GSL_DBL_EPSILON * fabs(result->val); + return stat_c; +} + + +#if 0 +int +gsl_sf_sin_pi_x_e(const double x, gsl_sf_result * result) +{ + /* CHECK_POINTER(result) */ + + if(-100.0 < x && x < 100.0) { + result->val = sin(M_PI * x) / (M_PI * x); + result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else { + const double N = floor(x + 0.5); + const double f = x - N; + + if(N < INT_MAX && N > INT_MIN) { + /* Make it an integer if we can. Saves another + * call to floor(). + */ + const int intN = (int)N; + const double sign = ( GSL_IS_ODD(intN) ? -1.0 : 1.0 ); + result->val = sign * sin(M_PI * f); + result->err = GSL_DBL_EPSILON * fabs(result->val); + } + else if(N > 2.0/GSL_DBL_EPSILON || N < -2.0/GSL_DBL_EPSILON) { + /* All integer-valued floating point numbers + * bigger than 2/eps=2^53 are actually even. + */ + result->val = 0.0; + result->err = 0.0; + } + else { + const double resN = N - 2.0*floor(0.5*N); /* 0 for even N, 1 for odd N */ + const double sign = ( fabs(resN) > 0.5 ? -1.0 : 1.0 ); + result->val = sign * sin(M_PI*f); + result->err = GSL_DBL_EPSILON * fabs(result->val); + } + + return GSL_SUCCESS; + } +} +#endif + + +int gsl_sf_sinc_e(double x, gsl_sf_result * result) +{ + /* CHECK_POINTER(result) */ + + { + const double ax = fabs(x); + + if(ax < 0.8) { + /* Do not go to the limit of the fit since + * there is a zero there and the Chebyshev + * accuracy will go to zero. + */ + return cheb_eval_e(&sinc_cs, 2.0*ax-1.0, result); + } + else if(ax < 100.0) { + /* Small arguments are no problem. + * We trust the library sin() to + * roughly machine precision. + */ + result->val = sin(M_PI * ax)/(M_PI * ax); + result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else { + /* Large arguments must be handled separately. + */ + const double r = M_PI*ax; + gsl_sf_result s; + int stat_s = gsl_sf_sin_e(r, &s); + result->val = s.val/r; + result->err = s.err/r + 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return stat_s; + } + } +} + + + +/*-*-*-*-*-*-*-*-*-* Functions w/ Natural Prototypes *-*-*-*-*-*-*-*-*-*-*/ + +#include "eval.h" + +double gsl_sf_sin(const double x) +{ + EVAL_RESULT(gsl_sf_sin_e(x, &result)); +} + +double gsl_sf_cos(const double x) +{ + EVAL_RESULT(gsl_sf_cos_e(x, &result)); +} + +double gsl_sf_hypot(const double x, const double y) +{ + EVAL_RESULT(gsl_sf_hypot_e(x, y, &result)); +} + +double gsl_sf_lnsinh(const double x) +{ + EVAL_RESULT(gsl_sf_lnsinh_e(x, &result)); +} + +double gsl_sf_lncosh(const double x) +{ + EVAL_RESULT(gsl_sf_lncosh_e(x, &result)); +} + +double gsl_sf_angle_restrict_symm(const double theta) +{ + double result = theta; + EVAL_DOUBLE(gsl_sf_angle_restrict_symm_e(&result)); +} + +double gsl_sf_angle_restrict_pos(const double theta) +{ + double result = theta; + EVAL_DOUBLE(gsl_sf_angle_restrict_pos_e(&result)); +} + +#if 0 +double gsl_sf_sin_pi_x(const double x) +{ + EVAL_RESULT(gsl_sf_sin_pi_x_e(x, &result)); +} +#endif + +double gsl_sf_sinc(const double x) +{ + EVAL_RESULT(gsl_sf_sinc_e(x, &result)); +} diff --git a/gsl-2.5/specfunc/trig.lo b/gsl-2.5/specfunc/trig.lo new file mode 100644 index 00000000..d92c011a --- /dev/null +++ b/gsl-2.5/specfunc/trig.lo @@ -0,0 +1,12 @@ +# trig.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/trig.o' + +# Name of the non-PIC object +non_pic_object='trig.o' + diff --git a/gsl-2.5/specfunc/zeta.c b/gsl-2.5/specfunc/zeta.c new file mode 100644 index 00000000..0a7a02e1 --- /dev/null +++ b/gsl-2.5/specfunc/zeta.c @@ -0,0 +1,1050 @@ +/* specfunc/zeta.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2004 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ + +#include +#include +#include +#include +#include +#include +#include +#include + +#include "error.h" + +#include "chebyshev.h" +#include "cheb_eval.c" + +#define LogTwoPi_ 1.8378770664093454835606594728111235279723 + + +/*-*-*-*-*-*-*-*-*-*-*-* Private Section *-*-*-*-*-*-*-*-*-*-*-*/ + +/* chebyshev fit for (s(t)-1)Zeta[s(t)] + * s(t)= (t+1)/2 + * -1 <= t <= 1 + */ +static double zeta_xlt1_data[14] = { + 1.48018677156931561235192914649, + 0.25012062539889426471999938167, + 0.00991137502135360774243761467, + -0.00012084759656676410329833091, + -4.7585866367662556504652535281e-06, + 2.2229946694466391855561441361e-07, + -2.2237496498030257121309056582e-09, + -1.0173226513229028319420799028e-10, + 4.3756643450424558284466248449e-12, + -6.2229632593100551465504090814e-14, + -6.6116201003272207115277520305e-16, + 4.9477279533373912324518463830e-17, + -1.0429819093456189719660003522e-18, + 6.9925216166580021051464412040e-21, +}; +static cheb_series zeta_xlt1_cs = { + zeta_xlt1_data, + 13, + -1, 1, + 8 +}; + +/* chebyshev fit for (s(t)-1)Zeta[s(t)] + * s(t)= (19t+21)/2 + * -1 <= t <= 1 + */ +static double zeta_xgt1_data[30] = { + 19.3918515726724119415911269006, + 9.1525329692510756181581271500, + 0.2427897658867379985365270155, + -0.1339000688262027338316641329, + 0.0577827064065028595578410202, + -0.0187625983754002298566409700, + 0.0039403014258320354840823803, + -0.0000581508273158127963598882, + -0.0003756148907214820704594549, + 0.0001892530548109214349092999, + -0.0000549032199695513496115090, + 8.7086484008939038610413331863e-6, + 6.4609477924811889068410083425e-7, + -9.6749773915059089205835337136e-7, + 3.6585400766767257736982342461e-7, + -8.4592516427275164351876072573e-8, + 9.9956786144497936572288988883e-9, + 1.4260036420951118112457144842e-9, + -1.1761968823382879195380320948e-9, + 3.7114575899785204664648987295e-10, + -7.4756855194210961661210215325e-11, + 7.8536934209183700456512982968e-12, + 9.9827182259685539619810406271e-13, + -7.5276687030192221587850302453e-13, + 2.1955026393964279988917878654e-13, + -4.1934859852834647427576319246e-14, + 4.6341149635933550715779074274e-15, + 2.3742488509048340106830309402e-16, + -2.7276516388124786119323824391e-16, + 7.8473570134636044722154797225e-17 +}; +static cheb_series zeta_xgt1_cs = { + zeta_xgt1_data, + 29, + -1, 1, + 17 +}; + + +/* chebyshev fit for Ln[Zeta[s(t)] - 1 - 2^(-s(t))] + * s(t)= 10 + 5t + * -1 <= t <= 1; 5 <= s <= 15 + */ +static double zetam1_inter_data[24] = { + -21.7509435653088483422022339374, + -5.63036877698121782876372020472, + 0.0528041358684229425504861579635, + -0.0156381809179670789342700883562, + 0.00408218474372355881195080781927, + -0.0010264867349474874045036628282, + 0.000260469880409886900143834962387, + -0.0000676175847209968878098566819447, + 0.0000179284472587833525426660171124, + -4.83238651318556188834107605116e-6, + 1.31913788964999288471371329447e-6, + -3.63760500656329972578222188542e-7, + 1.01146847513194744989748396574e-7, + -2.83215225141806501619105289509e-8, + 7.97733710252021423361012829496e-9, + -2.25850168553956886676250696891e-9, + 6.42269392950164306086395744145e-10, + -1.83363861846127284505060843614e-10, + 5.25309763895283179960368072104e-11, + -1.50958687042589821074710575446e-11, + 4.34997545516049244697776942981e-12, + -1.25597782748190416118082322061e-12, + 3.61280740072222650030134104162e-13, + -9.66437239205745207188920348801e-14 +}; +static cheb_series zetam1_inter_cs = { + zetam1_inter_data, + 22, + -1, 1, + 12 +}; + + + +/* assumes s >= 0 and s != 1.0 */ +inline +static int +riemann_zeta_sgt0(double s, gsl_sf_result * result) +{ + if(s < 1.0) { + gsl_sf_result c; + cheb_eval_e(&zeta_xlt1_cs, 2.0*s - 1.0, &c); + result->val = c.val / (s - 1.0); + result->err = c.err / fabs(s-1.0) + GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else if(s <= 20.0) { + double x = (2.0*s - 21.0)/19.0; + gsl_sf_result c; + cheb_eval_e(&zeta_xgt1_cs, x, &c); + result->val = c.val / (s - 1.0); + result->err = c.err / (s - 1.0) + GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else { + double f2 = 1.0 - pow(2.0,-s); + double f3 = 1.0 - pow(3.0,-s); + double f5 = 1.0 - pow(5.0,-s); + double f7 = 1.0 - pow(7.0,-s); + result->val = 1.0/(f2*f3*f5*f7); + result->err = 3.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } +} + + +inline +static int +riemann_zeta1ms_slt0(double s, gsl_sf_result * result) +{ + if(s > -19.0) { + double x = (-19 - 2.0*s)/19.0; + gsl_sf_result c; + cheb_eval_e(&zeta_xgt1_cs, x, &c); + result->val = c.val / (-s); + result->err = c.err / (-s) + GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else { + double f2 = 1.0 - pow(2.0,-(1.0-s)); + double f3 = 1.0 - pow(3.0,-(1.0-s)); + double f5 = 1.0 - pow(5.0,-(1.0-s)); + double f7 = 1.0 - pow(7.0,-(1.0-s)); + result->val = 1.0/(f2*f3*f5*f7); + result->err = 3.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } +} + + +/* works for 5 < s < 15*/ +static int +riemann_zeta_minus_1_intermediate_s(double s, gsl_sf_result * result) +{ + double t = (s - 10.0)/5.0; + gsl_sf_result c; + cheb_eval_e(&zetam1_inter_cs, t, &c); + result->val = exp(c.val) + pow(2.0, -s); + result->err = (c.err + 2.0*GSL_DBL_EPSILON)*result->val; + return GSL_SUCCESS; +} + + +/* assumes s is large and positive + * write: zeta(s) - 1 = zeta(s) * (1 - 1/zeta(s)) + * and expand a few terms of the product formula to evaluate 1 - 1/zeta(s) + * + * works well for s > 15 + */ +static int +riemann_zeta_minus1_large_s(double s, gsl_sf_result * result) +{ + double a = pow( 2.0,-s); + double b = pow( 3.0,-s); + double c = pow( 5.0,-s); + double d = pow( 7.0,-s); + double e = pow(11.0,-s); + double f = pow(13.0,-s); + double t1 = a + b + c + d + e + f; + double t2 = a*(b+c+d+e+f) + b*(c+d+e+f) + c*(d+e+f) + d*(e+f) + e*f; + /* + double t3 = a*(b*(c+d+e+f) + c*(d+e+f) + d*(e+f) + e*f) + + b*(c*(d+e+f) + d*(e+f) + e*f) + + c*(d*(e+f) + e*f) + + d*e*f; + double t4 = a*(b*(c*(d + e + f) + d*(e + f) + e*f) + c*(d*(e+f) + e*f) + d*e*f) + + b*(c*(d*(e+f) + e*f) + d*e*f) + + c*d*e*f; + double t5 = b*c*d*e*f + a*c*d*e*f+ a*b*d*e*f+ a*b*c*e*f+ a*b*c*d*f+ a*b*c*d*e; + double t6 = a*b*c*d*e*f; + */ + double numt = t1 - t2 /* + t3 - t4 + t5 - t6 */; + double zeta = 1.0/((1.0-a)*(1.0-b)*(1.0-c)*(1.0-d)*(1.0-e)*(1.0-f)); + result->val = numt*zeta; + result->err = (15.0/s + 1.0) * 6.0*GSL_DBL_EPSILON*result->val; + return GSL_SUCCESS; +} + + +#if 0 +/* zeta(n) */ +#define ZETA_POS_TABLE_NMAX 100 +static double zeta_pos_int_table_OLD[ZETA_POS_TABLE_NMAX+1] = { + -0.50000000000000000000000000000, /* zeta(0) */ + 0.0 /* FIXME: DirectedInfinity() */, /* zeta(1) */ + 1.64493406684822643647241516665, /* ... */ + 1.20205690315959428539973816151, + 1.08232323371113819151600369654, + 1.03692775514336992633136548646, + 1.01734306198444913971451792979, + 1.00834927738192282683979754985, + 1.00407735619794433937868523851, + 1.00200839282608221441785276923, + 1.00099457512781808533714595890, + 1.00049418860411946455870228253, + 1.00024608655330804829863799805, + 1.00012271334757848914675183653, + 1.00006124813505870482925854511, + 1.00003058823630702049355172851, + 1.00001528225940865187173257149, + 1.00000763719763789976227360029, + 1.00000381729326499983985646164, + 1.00000190821271655393892565696, + 1.00000095396203387279611315204, + 1.00000047693298678780646311672, + 1.00000023845050272773299000365, + 1.00000011921992596531107306779, + 1.00000005960818905125947961244, + 1.00000002980350351465228018606, + 1.00000001490155482836504123466, + 1.00000000745071178983542949198, + 1.00000000372533402478845705482, + 1.00000000186265972351304900640, + 1.00000000093132743241966818287, + 1.00000000046566290650337840730, + 1.00000000023283118336765054920, + 1.00000000011641550172700519776, + 1.00000000005820772087902700889, + 1.00000000002910385044497099687, + 1.00000000001455192189104198424, + 1.00000000000727595983505748101, + 1.00000000000363797954737865119, + 1.00000000000181898965030706595, + 1.00000000000090949478402638893, + 1.00000000000045474737830421540, + 1.00000000000022737368458246525, + 1.00000000000011368684076802278, + 1.00000000000005684341987627586, + 1.00000000000002842170976889302, + 1.00000000000001421085482803161, + 1.00000000000000710542739521085, + 1.00000000000000355271369133711, + 1.00000000000000177635684357912, + 1.00000000000000088817842109308, + 1.00000000000000044408921031438, + 1.00000000000000022204460507980, + 1.00000000000000011102230251411, + 1.00000000000000005551115124845, + 1.00000000000000002775557562136, + 1.00000000000000001387778780973, + 1.00000000000000000693889390454, + 1.00000000000000000346944695217, + 1.00000000000000000173472347605, + 1.00000000000000000086736173801, + 1.00000000000000000043368086900, + 1.00000000000000000021684043450, + 1.00000000000000000010842021725, + 1.00000000000000000005421010862, + 1.00000000000000000002710505431, + 1.00000000000000000001355252716, + 1.00000000000000000000677626358, + 1.00000000000000000000338813179, + 1.00000000000000000000169406589, + 1.00000000000000000000084703295, + 1.00000000000000000000042351647, + 1.00000000000000000000021175824, + 1.00000000000000000000010587912, + 1.00000000000000000000005293956, + 1.00000000000000000000002646978, + 1.00000000000000000000001323489, + 1.00000000000000000000000661744, + 1.00000000000000000000000330872, + 1.00000000000000000000000165436, + 1.00000000000000000000000082718, + 1.00000000000000000000000041359, + 1.00000000000000000000000020680, + 1.00000000000000000000000010340, + 1.00000000000000000000000005170, + 1.00000000000000000000000002585, + 1.00000000000000000000000001292, + 1.00000000000000000000000000646, + 1.00000000000000000000000000323, + 1.00000000000000000000000000162, + 1.00000000000000000000000000081, + 1.00000000000000000000000000040, + 1.00000000000000000000000000020, + 1.00000000000000000000000000010, + 1.00000000000000000000000000005, + 1.00000000000000000000000000003, + 1.00000000000000000000000000001, + 1.00000000000000000000000000001, + 1.00000000000000000000000000000, + 1.00000000000000000000000000000, + 1.00000000000000000000000000000 +}; +#endif /* 0 */ + + +/* zeta(n) - 1 */ +#define ZETA_POS_TABLE_NMAX 100 +static double zetam1_pos_int_table[ZETA_POS_TABLE_NMAX+1] = { + -1.5, /* zeta(0) */ + 0.0, /* FIXME: Infinity */ /* zeta(1) - 1 */ + 0.644934066848226436472415166646, /* zeta(2) - 1 */ + 0.202056903159594285399738161511, + 0.082323233711138191516003696541, + 0.036927755143369926331365486457, + 0.017343061984449139714517929790, + 0.008349277381922826839797549849, + 0.004077356197944339378685238508, + 0.002008392826082214417852769232, + 0.000994575127818085337145958900, + 0.000494188604119464558702282526, + 0.000246086553308048298637998047, + 0.000122713347578489146751836526, + 0.000061248135058704829258545105, + 0.000030588236307020493551728510, + 0.000015282259408651871732571487, + 7.6371976378997622736002935630e-6, + 3.8172932649998398564616446219e-6, + 1.9082127165539389256569577951e-6, + 9.5396203387279611315203868344e-7, + 4.7693298678780646311671960437e-7, + 2.3845050272773299000364818675e-7, + 1.1921992596531107306778871888e-7, + 5.9608189051259479612440207935e-8, + 2.9803503514652280186063705069e-8, + 1.4901554828365041234658506630e-8, + 7.4507117898354294919810041706e-9, + 3.7253340247884570548192040184e-9, + 1.8626597235130490064039099454e-9, + 9.3132743241966818287176473502e-10, + 4.6566290650337840729892332512e-10, + 2.3283118336765054920014559759e-10, + 1.1641550172700519775929738354e-10, + 5.8207720879027008892436859891e-11, + 2.9103850444970996869294252278e-11, + 1.4551921891041984235929632245e-11, + 7.2759598350574810145208690123e-12, + 3.6379795473786511902372363558e-12, + 1.8189896503070659475848321007e-12, + 9.0949478402638892825331183869e-13, + 4.5474737830421540267991120294e-13, + 2.2737368458246525152268215779e-13, + 1.1368684076802278493491048380e-13, + 5.6843419876275856092771829675e-14, + 2.8421709768893018554550737049e-14, + 1.4210854828031606769834307141e-14, + 7.1054273952108527128773544799e-15, + 3.5527136913371136732984695340e-15, + 1.7763568435791203274733490144e-15, + 8.8817842109308159030960913863e-16, + 4.4408921031438133641977709402e-16, + 2.2204460507980419839993200942e-16, + 1.1102230251410661337205445699e-16, + 5.5511151248454812437237365905e-17, + 2.7755575621361241725816324538e-17, + 1.3877787809725232762839094906e-17, + 6.9388939045441536974460853262e-18, + 3.4694469521659226247442714961e-18, + 1.7347234760475765720489729699e-18, + 8.6736173801199337283420550673e-19, + 4.3368086900206504874970235659e-19, + 2.1684043449972197850139101683e-19, + 1.0842021724942414063012711165e-19, + 5.4210108624566454109187004043e-20, + 2.7105054312234688319546213119e-20, + 1.3552527156101164581485233996e-20, + 6.7762635780451890979952987415e-21, + 3.3881317890207968180857031004e-21, + 1.6940658945097991654064927471e-21, + 8.4703294725469983482469926091e-22, + 4.2351647362728333478622704833e-22, + 2.1175823681361947318442094398e-22, + 1.0587911840680233852265001539e-22, + 5.2939559203398703238139123029e-23, + 2.6469779601698529611341166842e-23, + 1.3234889800848990803094510250e-23, + 6.6174449004244040673552453323e-24, + 3.3087224502121715889469563843e-24, + 1.6543612251060756462299236771e-24, + 8.2718061255303444036711056167e-25, + 4.1359030627651609260093824555e-25, + 2.0679515313825767043959679193e-25, + 1.0339757656912870993284095591e-25, + 5.1698788284564313204101332166e-26, + 2.5849394142282142681277617708e-26, + 1.2924697071141066700381126118e-26, + 6.4623485355705318034380021611e-27, + 3.2311742677852653861348141180e-27, + 1.6155871338926325212060114057e-27, + 8.0779356694631620331587381863e-28, + 4.0389678347315808256222628129e-28, + 2.0194839173657903491587626465e-28, + 1.0097419586828951533619250700e-28, + 5.0487097934144756960847711725e-29, + 2.5243548967072378244674341938e-29, + 1.2621774483536189043753999660e-29, + 6.3108872417680944956826093943e-30, + 3.1554436208840472391098412184e-30, + 1.5777218104420236166444327830e-30, + 7.8886090522101180735205378276e-31 +}; + + +#define ZETA_NEG_TABLE_NMAX 99 +#define ZETA_NEG_TABLE_SIZE 50 +static double zeta_neg_int_table[ZETA_NEG_TABLE_SIZE] = { + -0.083333333333333333333333333333, /* zeta(-1) */ + 0.008333333333333333333333333333, /* zeta(-3) */ + -0.003968253968253968253968253968, /* ... */ + 0.004166666666666666666666666667, + -0.007575757575757575757575757576, + 0.021092796092796092796092796093, + -0.083333333333333333333333333333, + 0.44325980392156862745098039216, + -3.05395433027011974380395433027, + 26.4562121212121212121212121212, + -281.460144927536231884057971014, + 3607.5105463980463980463980464, + -54827.583333333333333333333333, + 974936.82385057471264367816092, + -2.0052695796688078946143462272e+07, + 4.7238486772162990196078431373e+08, + -1.2635724795916666666666666667e+10, + 3.8087931125245368811553022079e+11, + -1.2850850499305083333333333333e+13, + 4.8241448354850170371581670362e+14, + -2.0040310656516252738108421663e+16, + 9.1677436031953307756992753623e+17, + -4.5979888343656503490437943262e+19, + 2.5180471921451095697089023320e+21, + -1.5001733492153928733711440151e+23, + 9.6899578874635940656497942895e+24, + -6.7645882379292820990945242302e+26, + 5.0890659468662289689766332916e+28, + -4.1147288792557978697665486068e+30, + 3.5666582095375556109684574609e+32, + -3.3066089876577576725680214670e+34, + 3.2715634236478716264211227016e+36, + -3.4473782558278053878256455080e+38, + 3.8614279832705258893092720200e+40, + -4.5892974432454332168863989006e+42, + 5.7775386342770431824884825688e+44, + -7.6919858759507135167410075972e+46, + 1.0813635449971654696354033351e+49, + -1.6029364522008965406067102346e+51, + 2.5019479041560462843656661499e+53, + -4.1067052335810212479752045004e+55, + 7.0798774408494580617452972433e+57, + -1.2804546887939508790190849756e+60, + 2.4267340392333524078020892067e+62, + -4.8143218874045769355129570066e+64, + 9.9875574175727530680652777408e+66, + -2.1645634868435185631335136160e+69, + 4.8962327039620553206849224516e+71, /* ... */ + -1.1549023923963519663954271692e+74, /* zeta(-97) */ + 2.8382249570693706959264156336e+76 /* zeta(-99) */ +}; + + +/* coefficients for Maclaurin summation in hzeta() + * B_{2j}/(2j)! + */ +static double hzeta_c[15] = { + 1.00000000000000000000000000000, + 0.083333333333333333333333333333, + -0.00138888888888888888888888888889, + 0.000033068783068783068783068783069, + -8.2671957671957671957671957672e-07, + 2.0876756987868098979210090321e-08, + -5.2841901386874931848476822022e-10, + 1.3382536530684678832826980975e-11, + -3.3896802963225828668301953912e-13, + 8.5860620562778445641359054504e-15, + -2.1748686985580618730415164239e-16, + 5.5090028283602295152026526089e-18, + -1.3954464685812523340707686264e-19, + 3.5347070396294674716932299778e-21, + -8.9535174270375468504026113181e-23 +}; + +#define ETA_POS_TABLE_NMAX 100 +static double eta_pos_int_table[ETA_POS_TABLE_NMAX+1] = { +0.50000000000000000000000000000, /* eta(0) */ +M_LN2, /* eta(1) */ +0.82246703342411321823620758332, /* ... */ +0.90154267736969571404980362113, +0.94703282949724591757650323447, +0.97211977044690930593565514355, +0.98555109129743510409843924448, +0.99259381992283028267042571313, +0.99623300185264789922728926008, +0.99809429754160533076778303185, +0.99903950759827156563922184570, +0.99951714349806075414409417483, +0.99975768514385819085317967871, +0.99987854276326511549217499282, +0.99993917034597971817095419226, +0.99996955121309923808263293263, +0.99998476421490610644168277496, +0.99999237829204101197693787224, +0.99999618786961011347968922641, +0.99999809350817167510685649297, +0.99999904661158152211505084256, +0.99999952325821554281631666433, +0.99999976161323082254789720494, +0.99999988080131843950322382485, +0.99999994039889239462836140314, +0.99999997019885696283441513311, +0.99999998509923199656878766181, +0.99999999254955048496351585274, +0.99999999627475340010872752767, +0.99999999813736941811218674656, +0.99999999906868228145397862728, +0.99999999953434033145421751469, +0.99999999976716989595149082282, +0.99999999988358485804603047265, +0.99999999994179239904531592388, +0.99999999997089618952980952258, +0.99999999998544809143388476396, +0.99999999999272404460658475006, +0.99999999999636202193316875550, +0.99999999999818101084320873555, +0.99999999999909050538047887809, +0.99999999999954525267653087357, +0.99999999999977262633369589773, +0.99999999999988631316532476488, +0.99999999999994315658215465336, +0.99999999999997157829090808339, +0.99999999999998578914539762720, +0.99999999999999289457268000875, +0.99999999999999644728633373609, +0.99999999999999822364316477861, +0.99999999999999911182158169283, +0.99999999999999955591079061426, +0.99999999999999977795539522974, +0.99999999999999988897769758908, +0.99999999999999994448884878594, +0.99999999999999997224442439010, +0.99999999999999998612221219410, +0.99999999999999999306110609673, +0.99999999999999999653055304826, +0.99999999999999999826527652409, +0.99999999999999999913263826204, +0.99999999999999999956631913101, +0.99999999999999999978315956551, +0.99999999999999999989157978275, +0.99999999999999999994578989138, +0.99999999999999999997289494569, +0.99999999999999999998644747284, +0.99999999999999999999322373642, +0.99999999999999999999661186821, +0.99999999999999999999830593411, +0.99999999999999999999915296705, +0.99999999999999999999957648353, +0.99999999999999999999978824176, +0.99999999999999999999989412088, +0.99999999999999999999994706044, +0.99999999999999999999997353022, +0.99999999999999999999998676511, +0.99999999999999999999999338256, +0.99999999999999999999999669128, +0.99999999999999999999999834564, +0.99999999999999999999999917282, +0.99999999999999999999999958641, +0.99999999999999999999999979320, +0.99999999999999999999999989660, +0.99999999999999999999999994830, +0.99999999999999999999999997415, +0.99999999999999999999999998708, +0.99999999999999999999999999354, +0.99999999999999999999999999677, +0.99999999999999999999999999838, +0.99999999999999999999999999919, +0.99999999999999999999999999960, +0.99999999999999999999999999980, +0.99999999999999999999999999990, +0.99999999999999999999999999995, +0.99999999999999999999999999997, +0.99999999999999999999999999999, +0.99999999999999999999999999999, +1.00000000000000000000000000000, +1.00000000000000000000000000000, +1.00000000000000000000000000000, +}; + + +#define ETA_NEG_TABLE_NMAX 99 +#define ETA_NEG_TABLE_SIZE 50 +static double eta_neg_int_table[ETA_NEG_TABLE_SIZE] = { + 0.25000000000000000000000000000, /* eta(-1) */ +-0.12500000000000000000000000000, /* eta(-3) */ + 0.25000000000000000000000000000, /* ... */ +-1.06250000000000000000000000000, + 7.75000000000000000000000000000, +-86.3750000000000000000000000000, + 1365.25000000000000000000000000, +-29049.0312500000000000000000000, + 800572.750000000000000000000000, +-2.7741322625000000000000000000e+7, + 1.1805291302500000000000000000e+9, +-6.0523980051687500000000000000e+10, + 3.6794167785377500000000000000e+12, +-2.6170760990658387500000000000e+14, + 2.1531418140800295250000000000e+16, +-2.0288775575173015930156250000e+18, + 2.1708009902623770590275000000e+20, +-2.6173826968455814932120125000e+22, + 3.5324148876863877826668602500e+24, +-5.3042033406864906641493838981e+26, + 8.8138218364311576767253114668e+28, +-1.6128065107490778547354654864e+31, + 3.2355470001722734208527794569e+33, +-7.0876727476537493198506645215e+35, + 1.6890450341293965779175629389e+38, +-4.3639690731216831157655651358e+40, + 1.2185998827061261322605065672e+43, +-3.6670584803153006180101262324e+45, + 1.1859898526302099104271449748e+48, +-4.1120769493584015047981746438e+50, + 1.5249042436787620309090168687e+53, +-6.0349693196941307074572991901e+55, + 2.5437161764210695823197691519e+58, +-1.1396923802632287851130360170e+61, + 5.4180861064753979196802726455e+63, +-2.7283654799994373847287197104e+66, + 1.4529750514918543238511171663e+69, +-8.1705519371067450079777183386e+71, + 4.8445781606678367790247757259e+74, +-3.0246694206649519336179448018e+77, + 1.9858807961690493054169047970e+80, +-1.3694474620720086994386818232e+83, + 9.9070382984295807826303785989e+85, +-7.5103780796592645925968460677e+88, + 5.9598418264260880840077992227e+91, +-4.9455988887500020399263196307e+94, + 4.2873596927020241277675775935e+97, +-3.8791952037716162900707994047e+100, + 3.6600317773156342245401829308e+103, +-3.5978775704117283875784869570e+106 /* eta(-99) */ +}; + + +/*-*-*-*-*-*-*-*-*-*-*-* Functions with Error Codes *-*-*-*-*-*-*-*-*-*-*-*/ + + +int gsl_sf_hzeta_e(const double s, const double q, gsl_sf_result * result) +{ + /* CHECK_POINTER(result) */ + + if(s <= 1.0 || q <= 0.0) { + DOMAIN_ERROR(result); + } + else { + const double max_bits = 54.0; + const double ln_term0 = -s * log(q); + + if(ln_term0 < GSL_LOG_DBL_MIN + 1.0) { + UNDERFLOW_ERROR(result); + } + else if(ln_term0 > GSL_LOG_DBL_MAX - 1.0) { + OVERFLOW_ERROR (result); + } + else if((s > max_bits && q < 1.0) || (s > 0.5*max_bits && q < 0.25)) { + result->val = pow(q, -s); + result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else if(s > 0.5*max_bits && q < 1.0) { + const double p1 = pow(q, -s); + const double p2 = pow(q/(1.0+q), s); + const double p3 = pow(q/(2.0+q), s); + result->val = p1 * (1.0 + p2 + p3); + result->err = GSL_DBL_EPSILON * (0.5*s + 2.0) * fabs(result->val); + return GSL_SUCCESS; + } + else { + /* Euler-Maclaurin summation formula + * [Moshier, p. 400, with several typo corrections] + */ + const int jmax = 12; + const int kmax = 10; + int j, k; + const double pmax = pow(kmax + q, -s); + double scp = s; + double pcp = pmax / (kmax + q); + double ans = pmax*((kmax+q)/(s-1.0) + 0.5); + + for(k=0; kval = ans; + result->err = 2.0 * (jmax + 1.0) * GSL_DBL_EPSILON * fabs(ans); + return GSL_SUCCESS; + } + } +} + + +int gsl_sf_zeta_e(const double s, gsl_sf_result * result) +{ + /* CHECK_POINTER(result) */ + + if(s == 1.0) { + DOMAIN_ERROR(result); + } + else if(s >= 0.0) { + return riemann_zeta_sgt0(s, result); + } + else { + /* reflection formula, [Abramowitz+Stegun, 23.2.5] */ + + gsl_sf_result zeta_one_minus_s; + const int stat_zoms = riemann_zeta1ms_slt0(s, &zeta_one_minus_s); + const double sin_term = (fmod(s,2.0) == 0.0) ? 0.0 : sin(0.5*M_PI*fmod(s,4.0))/M_PI; + + if(sin_term == 0.0) { + result->val = 0.0; + result->err = 0.0; + return GSL_SUCCESS; + } + else if(s > -170) { + /* We have to be careful about losing digits + * in calculating pow(2 Pi, s). The gamma + * function is fine because we were careful + * with that implementation. + * We keep an array of (2 Pi)^(10 n). + */ + const double twopi_pow[18] = { 1.0, + 9.589560061550901348e+007, + 9.195966217409212684e+015, + 8.818527036583869903e+023, + 8.456579467173150313e+031, + 8.109487671573504384e+039, + 7.776641909496069036e+047, + 7.457457466828644277e+055, + 7.151373628461452286e+063, + 6.857852693272229709e+071, + 6.576379029540265771e+079, + 6.306458169130020789e+087, + 6.047615938853066678e+095, + 5.799397627482402614e+103, + 5.561367186955830005e+111, + 5.333106466365131227e+119, + 5.114214477385391780e+127, + 4.904306689854036836e+135 + }; + const int n = floor((-s)/10.0); + const double fs = s + 10.0*n; + const double p = pow(2.0*M_PI, fs) / twopi_pow[n]; + + gsl_sf_result g; + const int stat_g = gsl_sf_gamma_e(1.0-s, &g); + result->val = p * g.val * sin_term * zeta_one_minus_s.val; + result->err = fabs(p * g.val * sin_term) * zeta_one_minus_s.err; + result->err += fabs(p * sin_term * zeta_one_minus_s.val) * g.err; + result->err += GSL_DBL_EPSILON * (fabs(s)+2.0) * fabs(result->val); + return GSL_ERROR_SELECT_2(stat_g, stat_zoms); + } + else { + /* The actual zeta function may or may not + * overflow here. But we have no easy way + * to calculate it when the prefactor(s) + * overflow. Trying to use log's and exp + * is no good because we loose a couple + * digits to the exp error amplification. + * When we gather a little more patience, + * we can implement something here. Until + * then just give up. + */ + OVERFLOW_ERROR(result); + } + } +} + + +int gsl_sf_zeta_int_e(const int n, gsl_sf_result * result) +{ + /* CHECK_POINTER(result) */ + + if(n < 0) { + if(!GSL_IS_ODD(n)) { + result->val = 0.0; /* exactly zero at even negative integers */ + result->err = 0.0; + return GSL_SUCCESS; + } + else if(n > -ZETA_NEG_TABLE_NMAX) { + result->val = zeta_neg_int_table[-(n+1)/2]; + result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else { + return gsl_sf_zeta_e((double)n, result); + } + } + else if(n == 1){ + DOMAIN_ERROR(result); + } + else if(n <= ZETA_POS_TABLE_NMAX){ + result->val = 1.0 + zetam1_pos_int_table[n]; + result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else { + result->val = 1.0; + result->err = GSL_DBL_EPSILON; + return GSL_SUCCESS; + } +} + + +int gsl_sf_zetam1_e(const double s, gsl_sf_result * result) +{ + if(s <= 5.0) + { + int stat = gsl_sf_zeta_e(s, result); + result->val = result->val - 1.0; + return stat; + } + else if(s < 15.0) + { + return riemann_zeta_minus_1_intermediate_s(s, result); + } + else + { + return riemann_zeta_minus1_large_s(s, result); + } +} + + +int gsl_sf_zetam1_int_e(const int n, gsl_sf_result * result) +{ + if(n < 0) { + if(!GSL_IS_ODD(n)) { + result->val = -1.0; /* at even negative integers zetam1 == -1 since zeta is exactly zero */ + result->err = 0.0; + return GSL_SUCCESS; + } + else if(n > -ZETA_NEG_TABLE_NMAX) { + result->val = zeta_neg_int_table[-(n+1)/2] - 1.0; + result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else { + /* could use gsl_sf_zetam1_e here but subtracting 1 makes no difference + for such large values, so go straight to the result */ + return gsl_sf_zeta_e((double)n, result); + } + } + else if(n == 1){ + DOMAIN_ERROR(result); + } + else if(n <= ZETA_POS_TABLE_NMAX){ + result->val = zetam1_pos_int_table[n]; + result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else { + return gsl_sf_zetam1_e(n, result); + } +} + + +int gsl_sf_eta_int_e(int n, gsl_sf_result * result) +{ + if(n > ETA_POS_TABLE_NMAX) { + result->val = 1.0; + result->err = GSL_DBL_EPSILON; + return GSL_SUCCESS; + } + else if(n >= 0) { + result->val = eta_pos_int_table[n]; + result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else { + /* n < 0 */ + + if(!GSL_IS_ODD(n)) { + /* exactly zero at even negative integers */ + result->val = 0.0; + result->err = 0.0; + return GSL_SUCCESS; + } + else if(n > -ETA_NEG_TABLE_NMAX) { + result->val = eta_neg_int_table[-(n+1)/2]; + result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else { + gsl_sf_result z; + gsl_sf_result p; + int stat_z = gsl_sf_zeta_int_e(n, &z); + int stat_p = gsl_sf_exp_e((1.0-n)*M_LN2, &p); + int stat_m = gsl_sf_multiply_e(-p.val, z.val, result); + result->err = fabs(p.err * (M_LN2*(1.0-n)) * z.val) + z.err * fabs(p.val); + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_ERROR_SELECT_3(stat_m, stat_p, stat_z); + } + } +} + + +int gsl_sf_eta_e(const double s, gsl_sf_result * result) +{ + /* CHECK_POINTER(result) */ + + if(s > 100.0) { + result->val = 1.0; + result->err = GSL_DBL_EPSILON; + return GSL_SUCCESS; + } + else if(fabs(s-1.0) < 10.0*GSL_ROOT5_DBL_EPSILON) { + double del = s-1.0; + double c0 = M_LN2; + double c1 = M_LN2 * (M_EULER - 0.5*M_LN2); + double c2 = -0.0326862962794492996; + double c3 = 0.0015689917054155150; + double c4 = 0.00074987242112047532; + result->val = c0 + del * (c1 + del * (c2 + del * (c3 + del * c4))); + result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + else { + gsl_sf_result z; + gsl_sf_result p; + int stat_z = gsl_sf_zeta_e(s, &z); + int stat_p = gsl_sf_exp_e((1.0-s)*M_LN2, &p); + int stat_m = gsl_sf_multiply_e(1.0-p.val, z.val, result); + result->err = fabs(p.err * (M_LN2*(1.0-s)) * z.val) + z.err * fabs(p.val); + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_ERROR_SELECT_3(stat_m, stat_p, stat_z); + } +} + + +/*-*-*-*-*-*-*-*-*-* Functions w/ Natural Prototypes *-*-*-*-*-*-*-*-*-*-*/ + +#include "eval.h" + +double gsl_sf_zeta(const double s) +{ + EVAL_RESULT(gsl_sf_zeta_e(s, &result)); +} + +double gsl_sf_hzeta(const double s, const double a) +{ + EVAL_RESULT(gsl_sf_hzeta_e(s, a, &result)); +} + +double gsl_sf_zeta_int(const int s) +{ + EVAL_RESULT(gsl_sf_zeta_int_e(s, &result)); +} + +double gsl_sf_zetam1(const double s) +{ + EVAL_RESULT(gsl_sf_zetam1_e(s, &result)); +} + +double gsl_sf_zetam1_int(const int s) +{ + EVAL_RESULT(gsl_sf_zetam1_int_e(s, &result)); +} + +double gsl_sf_eta_int(const int s) +{ + EVAL_RESULT(gsl_sf_eta_int_e(s, &result)); +} + +double gsl_sf_eta(const double s) +{ + EVAL_RESULT(gsl_sf_eta_e(s, &result)); +} diff --git a/gsl-2.5/specfunc/zeta.lo b/gsl-2.5/specfunc/zeta.lo new file mode 100644 index 00000000..82611a22 --- /dev/null +++ b/gsl-2.5/specfunc/zeta.lo @@ -0,0 +1,12 @@ +# zeta.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/zeta.o' + +# Name of the non-PIC object +non_pic_object='zeta.o' + diff --git a/gsl-2.5/splinalg/.deps/gmres.Plo b/gsl-2.5/splinalg/.deps/gmres.Plo new file mode 100644 index 00000000..8b3d2e4a --- /dev/null +++ b/gsl-2.5/splinalg/.deps/gmres.Plo @@ -0,0 +1,308 @@ +gmres.lo: gmres.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_math.h /usr/include/math.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h /usr/include/stdlib.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_errno.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_linalg.h ../gsl/gsl_mode.h \ + ../gsl/gsl_permutation.h ../gsl/gsl_blas.h ../gsl/gsl_blas_types.h \ + ../gsl/gsl_cblas.h ../gsl/gsl_spmatrix.h ../gsl/gsl_spblas.h \ + ../gsl/gsl_splinalg.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +/usr/include/stdlib.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_linalg.h: + +../gsl/gsl_mode.h: + +../gsl/gsl_permutation.h: + +../gsl/gsl_blas.h: + +../gsl/gsl_blas_types.h: + +../gsl/gsl_cblas.h: + +../gsl/gsl_spmatrix.h: + +../gsl/gsl_spblas.h: + +../gsl/gsl_splinalg.h: diff --git a/gsl-2.5/splinalg/.deps/itersolve.Plo b/gsl-2.5/splinalg/.deps/itersolve.Plo new file mode 100644 index 00000000..dab7113a --- /dev/null +++ b/gsl-2.5/splinalg/.deps/itersolve.Plo @@ -0,0 +1,308 @@ +itersolve.lo: itersolve.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_math.h /usr/include/math.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h /usr/include/stdlib.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_errno.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_spmatrix.h ../gsl/gsl_spblas.h \ + ../gsl/gsl_blas.h ../gsl/gsl_blas_types.h ../gsl/gsl_cblas.h \ + ../gsl/gsl_splinalg.h ../gsl/gsl_linalg.h ../gsl/gsl_mode.h \ + ../gsl/gsl_permutation.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +/usr/include/stdlib.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_spmatrix.h: + +../gsl/gsl_spblas.h: + +../gsl/gsl_blas.h: + +../gsl/gsl_blas_types.h: + +../gsl/gsl_cblas.h: + +../gsl/gsl_splinalg.h: + +../gsl/gsl_linalg.h: + +../gsl/gsl_mode.h: + +../gsl/gsl_permutation.h: diff --git a/gsl-2.5/splinalg/.deps/test.Po b/gsl-2.5/splinalg/.deps/test.Po new file mode 100644 index 00000000..56759722 --- /dev/null +++ b/gsl-2.5/splinalg/.deps/test.Po @@ -0,0 +1,317 @@ +test.o: test.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_math.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_randist.h ../gsl/gsl_rng.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_complex.h \ + ../gsl/gsl_check_range.h ../gsl/gsl_vector_long_double.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_vector_complex.h \ + ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_test.h ../gsl/gsl_blas.h \ + ../gsl/gsl_blas_types.h ../gsl/gsl_cblas.h ../gsl/gsl_spmatrix.h \ + ../gsl/gsl_spblas.h ../gsl/gsl_splinalg.h ../gsl/gsl_linalg.h \ + ../gsl/gsl_mode.h ../gsl/gsl_permutation.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_randist.h: + +../gsl/gsl_rng.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_test.h: + +../gsl/gsl_blas.h: + +../gsl/gsl_blas_types.h: + +../gsl/gsl_cblas.h: + +../gsl/gsl_spmatrix.h: + +../gsl/gsl_spblas.h: + +../gsl/gsl_splinalg.h: + +../gsl/gsl_linalg.h: + +../gsl/gsl_mode.h: + +../gsl/gsl_permutation.h: diff --git a/gsl-2.5/splinalg/.libs/libgslsplinalg.la b/gsl-2.5/splinalg/.libs/libgslsplinalg.la new file mode 120000 index 00000000..f67120f5 --- /dev/null +++ b/gsl-2.5/splinalg/.libs/libgslsplinalg.la @@ -0,0 +1 @@ +../libgslsplinalg.la \ No newline at end of file diff --git a/gsl-2.5/splinalg/.libs/lt-test b/gsl-2.5/splinalg/.libs/lt-test new file mode 100755 index 00000000..2c14d161 Binary files /dev/null and b/gsl-2.5/splinalg/.libs/lt-test differ diff --git a/gsl-2.5/splinalg/.libs/test b/gsl-2.5/splinalg/.libs/test new file mode 100755 index 00000000..dd5d021e Binary files /dev/null and b/gsl-2.5/splinalg/.libs/test differ diff --git a/gsl-2.5/splinalg/Makefile b/gsl-2.5/splinalg/Makefile new file mode 100644 index 00000000..fabacdb5 --- /dev/null +++ b/gsl-2.5/splinalg/Makefile @@ -0,0 +1,1029 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# splinalg/Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + + + + +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/gsl +pkgincludedir = $(includedir)/gsl +pkglibdir = $(libdir)/gsl +pkglibexecdir = $(libexecdir)/gsl +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = x86_64-unknown-linux-gnu +host_triplet = x86_64-unknown-linux-gnu +check_PROGRAMS = test$(EXEEXT) +subdir = splinalg +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp \ + $(pkginclude_HEADERS) $(top_srcdir)/test-driver +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +libgslsplinalg_la_LIBADD = +am_libgslsplinalg_la_OBJECTS = itersolve.lo gmres.lo +libgslsplinalg_la_OBJECTS = $(am_libgslsplinalg_la_OBJECTS) +AM_V_lt = $(am__v_lt_$(V)) +am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) +am__v_lt_0 = --silent +am__v_lt_1 = +am_test_OBJECTS = test.$(OBJEXT) +test_OBJECTS = $(am_test_OBJECTS) +test_DEPENDENCIES = libgslsplinalg.la ../spmatrix/libgslspmatrix.la \ + ../spblas/libgslspblas.la ../test/libgsltest.la \ + ../linalg/libgsllinalg.la ../blas/libgslblas.la \ + ../cblas/libgslcblas.la ../matrix/libgslmatrix.la \ + ../vector/libgslvector.la ../block/libgslblock.la \ + ../sys/libgslsys.la ../utils/libutils.la ../rng/libgslrng.la \ + ../err/libgslerr.la +AM_V_P = $(am__v_P_$(V)) +am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY)) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_$(V)) +am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_$(V)) +am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I. -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_$(V)) +am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_$(V)) +am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libgslsplinalg_la_SOURCES) $(test_SOURCES) +DIST_SOURCES = $(libgslsplinalg_la_SOURCES) $(test_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(pkgincludedir)" +HEADERS = $(pkginclude_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = .test +LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing aclocal-1.13 +AMTAR = $${TAR-tar} +AM_DEFAULT_VERBOSITY = 1 +AR = ar +AS = as +AUTOCONF = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing autoconf +AUTOHEADER = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing autoheader +AUTOMAKE = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing automake-1.13 +AWK = gawk +CC = gcc +CCDEPMODE = depmode=gcc3 +CFLAGS = -g -O2 +CPP = gcc -E +CPPFLAGS = +CYGPATH_W = echo +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +DLLTOOL = false +DSYMUTIL = +DUMPBIN = +ECHO_C = +ECHO_N = -n +ECHO_T = +EGREP = /usr/bin/grep -E +EXEEXT = +FGREP = /usr/bin/grep -F +GREP = /usr/bin/grep +GSLCBLAS_LDFLAGS = +GSL_CFLAGS = -I${prefix}/include +GSL_LDFLAGS = +GSL_LIBADD = +GSL_LIBM = -lm +GSL_LIBS = -L${exec_prefix}/lib -lgsl +GSL_LT_CBLAS_VERSION = 0:0:0 +GSL_LT_VERSION = 24:0:1 +GSL_MAJOR_VERSION = 2 +GSL_MINOR_VERSION = 5 +HAVE_AIX_IEEE_INTERFACE = +HAVE_DARWIN86_IEEE_INTERFACE = +HAVE_DARWIN_IEEE_INTERFACE = +HAVE_FREEBSD_IEEE_INTERFACE = +HAVE_GNUM68K_IEEE_INTERFACE = +HAVE_GNUPPC_IEEE_INTERFACE = +HAVE_GNUSPARC_IEEE_INTERFACE = +HAVE_GNUX86_IEEE_INTERFACE = +HAVE_HPUX11_IEEE_INTERFACE = +HAVE_HPUX_IEEE_INTERFACE = +HAVE_IRIX_IEEE_INTERFACE = +HAVE_NETBSD_IEEE_INTERFACE = +HAVE_OPENBSD_IEEE_INTERFACE = +HAVE_OS2EMX_IEEE_INTERFACE = +HAVE_SOLARIS_IEEE_INTERFACE = +HAVE_SUNOS4_IEEE_INTERFACE = +HAVE_TRU64_IEEE_INTERFACE = +INSTALL = /usr/bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = $(install_sh) -c -s +LD = /usr/bin/ld -m elf_x86_64 +LDFLAGS = +LIBM = -lm +LIBOBJS = +LIBS = -lm +LIBTOOL = $(SHELL) $(top_builddir)/libtool +LIPO = +LN_S = ln -s +LTLIBOBJS = +MAINT = # +MAKEINFO = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing makeinfo +MANIFEST_TOOL = : +MKDIR_P = /usr/bin/mkdir -p +NM = /usr/bin/nm -B +NMEDIT = +OBJDUMP = objdump +OBJEXT = o +OTOOL = +OTOOL64 = +PACKAGE = gsl +PACKAGE_BUGREPORT = +PACKAGE_NAME = gsl +PACKAGE_STRING = gsl 2.5 +PACKAGE_TARNAME = gsl +PACKAGE_URL = +PACKAGE_VERSION = 2.5 +PATH_SEPARATOR = : +RANLIB = ranlib +SED = /usr/bin/sed +SET_MAKE = +SHELL = /bin/sh +STRIP = strip +VERSION = 2.5 +abs_builddir = /home/groups/kipac/chto/package/gsl/gsl-2.5/splinalg +abs_srcdir = /home/groups/kipac/chto/package/gsl/gsl-2.5/splinalg +abs_top_builddir = /home/groups/kipac/chto/package/gsl/gsl-2.5 +abs_top_srcdir = /home/groups/kipac/chto/package/gsl/gsl-2.5 +ac_ct_AR = ar +ac_ct_CC = gcc +ac_ct_DUMPBIN = +am__include = include +am__leading_dot = . +am__quote = +am__tar = $${TAR-tar} chof - "$$tardir" +am__untar = $${TAR-tar} xf - +bindir = ${exec_prefix}/bin +build = x86_64-unknown-linux-gnu +build_alias = +build_cpu = x86_64 +build_os = linux-gnu +build_vendor = unknown +builddir = . +datadir = ${datarootdir} +datarootdir = ${prefix}/share +docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} +dvidir = ${docdir} +exec_prefix = ${prefix} +host = x86_64-unknown-linux-gnu +host_alias = +host_cpu = x86_64 +host_os = linux-gnu +host_vendor = unknown +htmldir = ${docdir} +includedir = ${prefix}/include +infodir = ${datarootdir}/info +install_sh = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/install-sh +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +localedir = ${datarootdir}/locale +localstatedir = ${prefix}/var +mandir = ${datarootdir}/man +mkdir_p = $(MKDIR_P) +oldincludedir = /usr/include +pdfdir = ${docdir} +prefix = /home/groups/kipac/chto/package/gsl/gsl_lib +program_transform_name = s,x,x, +psdir = ${docdir} +sbindir = ${exec_prefix}/sbin +sharedstatedir = ${prefix}/com +srcdir = . +sysconfdir = ${prefix}/etc +target_alias = +top_build_prefix = ../ +top_builddir = .. +top_srcdir = .. +noinst_LTLIBRARIES = libgslsplinalg.la +pkginclude_HEADERS = gsl_splinalg.h +libgslsplinalg_la_SOURCES = itersolve.c gmres.c +AM_CPPFLAGS = -I$(top_srcdir) +TESTS = $(check_PROGRAMS) +test_LDADD = libgslsplinalg.la ../spmatrix/libgslspmatrix.la ../spblas/libgslspblas.la ../test/libgsltest.la ../linalg/libgsllinalg.la ../blas/libgslblas.la ../cblas/libgslcblas.la ../matrix/libgslmatrix.la ../vector/libgslvector.la ../block/libgslblock.la ../sys/libgslsys.la ../utils/libutils.la ../rng/libgslrng.la ../err/libgslerr.la +test_SOURCES = test.c +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu splinalg/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu splinalg/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: # $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): # $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libgslsplinalg.la: $(libgslsplinalg_la_OBJECTS) $(libgslsplinalg_la_DEPENDENCIES) $(EXTRA_libgslsplinalg_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(libgslsplinalg_la_OBJECTS) $(libgslsplinalg_la_LIBADD) $(LIBS) + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) $(EXTRA_test_DEPENDENCIES) + @rm -f test$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_OBJECTS) $(test_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +include ./$(DEPDIR)/gmres.Plo +include ./$(DEPDIR)/itersolve.Plo +include ./$(DEPDIR)/test.Po + +.c.o: + $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# $(AM_V_CC)source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(COMPILE) -c $< + +.c.obj: + $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# $(AM_V_CC)source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: + $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +# $(AM_V_CC)source='$<' object='$@' libtool=yes \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-pkgincludeHEADERS: $(pkginclude_HEADERS) + @$(NORMAL_INSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \ + done + +uninstall-pkgincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + else \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_PROGRAMS) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +test.log: test$(EXEEXT) + @p='test$(EXEEXT)'; \ + b='test'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +#.test$(EXEEXT).log: +# @p='$<'; \ +# $(am__set_b); \ +# $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +# --log-file $$b.log --trs-file $$b.trs \ +# $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +# "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-am +all-am: Makefile $(LTLIBRARIES) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(pkgincludedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-pkgincludeHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-pkgincludeHEADERS + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES cscopelist-am ctags ctags-am distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-pkgincludeHEADERS \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + recheck tags tags-am uninstall uninstall-am \ + uninstall-pkgincludeHEADERS + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gsl-2.5/splinalg/Makefile.am b/gsl-2.5/splinalg/Makefile.am new file mode 100644 index 00000000..e26d9f7c --- /dev/null +++ b/gsl-2.5/splinalg/Makefile.am @@ -0,0 +1,15 @@ +noinst_LTLIBRARIES = libgslsplinalg.la + +check_PROGRAMS = test + +pkginclude_HEADERS = gsl_splinalg.h + +libgslsplinalg_la_SOURCES = itersolve.c gmres.c + +AM_CPPFLAGS = -I$(top_srcdir) + +TESTS = $(check_PROGRAMS) + +test_LDADD = libgslsplinalg.la ../spmatrix/libgslspmatrix.la ../spblas/libgslspblas.la ../test/libgsltest.la ../linalg/libgsllinalg.la ../blas/libgslblas.la ../cblas/libgslcblas.la ../matrix/libgslmatrix.la ../vector/libgslvector.la ../block/libgslblock.la ../sys/libgslsys.la ../utils/libutils.la ../rng/libgslrng.la ../err/libgslerr.la + +test_SOURCES = test.c diff --git a/gsl-2.5/splinalg/Makefile.in b/gsl-2.5/splinalg/Makefile.in new file mode 100644 index 00000000..595fce60 --- /dev/null +++ b/gsl-2.5/splinalg/Makefile.in @@ -0,0 +1,1029 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + + +VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +check_PROGRAMS = test$(EXEEXT) +subdir = splinalg +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp \ + $(pkginclude_HEADERS) $(top_srcdir)/test-driver +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +libgslsplinalg_la_LIBADD = +am_libgslsplinalg_la_OBJECTS = itersolve.lo gmres.lo +libgslsplinalg_la_OBJECTS = $(am_libgslsplinalg_la_OBJECTS) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +am_test_OBJECTS = test.$(OBJEXT) +test_OBJECTS = $(am_test_OBJECTS) +test_DEPENDENCIES = libgslsplinalg.la ../spmatrix/libgslspmatrix.la \ + ../spblas/libgslspblas.la ../test/libgsltest.la \ + ../linalg/libgsllinalg.la ../blas/libgslblas.la \ + ../cblas/libgslcblas.la ../matrix/libgslmatrix.la \ + ../vector/libgslvector.la ../block/libgslblock.la \ + ../sys/libgslsys.la ../utils/libutils.la ../rng/libgslrng.la \ + ../err/libgslerr.la +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libgslsplinalg_la_SOURCES) $(test_SOURCES) +DIST_SOURCES = $(libgslsplinalg_la_SOURCES) $(test_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(pkgincludedir)" +HEADERS = $(pkginclude_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = @EXEEXT@ .test +LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +GSLCBLAS_LDFLAGS = @GSLCBLAS_LDFLAGS@ +GSL_CFLAGS = @GSL_CFLAGS@ +GSL_LDFLAGS = @GSL_LDFLAGS@ +GSL_LIBADD = @GSL_LIBADD@ +GSL_LIBM = @GSL_LIBM@ +GSL_LIBS = @GSL_LIBS@ +GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ +GSL_LT_VERSION = @GSL_LT_VERSION@ +GSL_MAJOR_VERSION = @GSL_MAJOR_VERSION@ +GSL_MINOR_VERSION = @GSL_MINOR_VERSION@ +HAVE_AIX_IEEE_INTERFACE = @HAVE_AIX_IEEE_INTERFACE@ +HAVE_DARWIN86_IEEE_INTERFACE = @HAVE_DARWIN86_IEEE_INTERFACE@ +HAVE_DARWIN_IEEE_INTERFACE = @HAVE_DARWIN_IEEE_INTERFACE@ +HAVE_FREEBSD_IEEE_INTERFACE = @HAVE_FREEBSD_IEEE_INTERFACE@ +HAVE_GNUM68K_IEEE_INTERFACE = @HAVE_GNUM68K_IEEE_INTERFACE@ +HAVE_GNUPPC_IEEE_INTERFACE = @HAVE_GNUPPC_IEEE_INTERFACE@ +HAVE_GNUSPARC_IEEE_INTERFACE = @HAVE_GNUSPARC_IEEE_INTERFACE@ +HAVE_GNUX86_IEEE_INTERFACE = @HAVE_GNUX86_IEEE_INTERFACE@ +HAVE_HPUX11_IEEE_INTERFACE = @HAVE_HPUX11_IEEE_INTERFACE@ +HAVE_HPUX_IEEE_INTERFACE = @HAVE_HPUX_IEEE_INTERFACE@ +HAVE_IRIX_IEEE_INTERFACE = @HAVE_IRIX_IEEE_INTERFACE@ +HAVE_NETBSD_IEEE_INTERFACE = @HAVE_NETBSD_IEEE_INTERFACE@ +HAVE_OPENBSD_IEEE_INTERFACE = @HAVE_OPENBSD_IEEE_INTERFACE@ +HAVE_OS2EMX_IEEE_INTERFACE = @HAVE_OS2EMX_IEEE_INTERFACE@ +HAVE_SOLARIS_IEEE_INTERFACE = @HAVE_SOLARIS_IEEE_INTERFACE@ +HAVE_SUNOS4_IEEE_INTERFACE = @HAVE_SUNOS4_IEEE_INTERFACE@ +HAVE_TRU64_IEEE_INTERFACE = @HAVE_TRU64_IEEE_INTERFACE@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBM = @LIBM@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +noinst_LTLIBRARIES = libgslsplinalg.la +pkginclude_HEADERS = gsl_splinalg.h +libgslsplinalg_la_SOURCES = itersolve.c gmres.c +AM_CPPFLAGS = -I$(top_srcdir) +TESTS = $(check_PROGRAMS) +test_LDADD = libgslsplinalg.la ../spmatrix/libgslspmatrix.la ../spblas/libgslspblas.la ../test/libgsltest.la ../linalg/libgsllinalg.la ../blas/libgslblas.la ../cblas/libgslcblas.la ../matrix/libgslmatrix.la ../vector/libgslvector.la ../block/libgslblock.la ../sys/libgslsys.la ../utils/libutils.la ../rng/libgslrng.la ../err/libgslerr.la +test_SOURCES = test.c +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu splinalg/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu splinalg/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libgslsplinalg.la: $(libgslsplinalg_la_OBJECTS) $(libgslsplinalg_la_DEPENDENCIES) $(EXTRA_libgslsplinalg_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(libgslsplinalg_la_OBJECTS) $(libgslsplinalg_la_LIBADD) $(LIBS) + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) $(EXTRA_test_DEPENDENCIES) + @rm -f test$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_OBJECTS) $(test_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gmres.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/itersolve.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test.Po@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-pkgincludeHEADERS: $(pkginclude_HEADERS) + @$(NORMAL_INSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \ + done + +uninstall-pkgincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + else \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_PROGRAMS) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +test.log: test$(EXEEXT) + @p='test$(EXEEXT)'; \ + b='test'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +@am__EXEEXT_TRUE@.test$(EXEEXT).log: +@am__EXEEXT_TRUE@ @p='$<'; \ +@am__EXEEXT_TRUE@ $(am__set_b); \ +@am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +@am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ +@am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +@am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-am +all-am: Makefile $(LTLIBRARIES) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(pkgincludedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-pkgincludeHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-pkgincludeHEADERS + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES cscopelist-am ctags ctags-am distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-pkgincludeHEADERS \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + recheck tags tags-am uninstall uninstall-am \ + uninstall-pkgincludeHEADERS + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gsl-2.5/splinalg/gmres.c b/gsl-2.5/splinalg/gmres.c new file mode 100644 index 00000000..bfdfa39b --- /dev/null +++ b/gsl-2.5/splinalg/gmres.c @@ -0,0 +1,435 @@ +/* gmres.c + * + * Copyright (C) 2014 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/* + * The code in this module is based on the Householder GMRES + * algorithm described in + * + * [1] H. F. Walker, Implementation of the GMRES method using + * Householder transformations, SIAM J. Sci. Stat. Comput. + * 9(1), 1988. + * + * [2] Y. Saad, Iterative methods for sparse linear systems, + * 2nd edition, SIAM, 2003. + */ + +typedef struct +{ + size_t n; /* size of linear system */ + size_t m; /* dimension of Krylov subspace K_m */ + gsl_vector *r; /* residual vector r = b - A*x */ + gsl_matrix *H; /* Hessenberg matrix n-by-(m+1) */ + gsl_vector *tau; /* householder scalars */ + gsl_vector *y; /* least squares rhs and solution vector */ + + double *c; /* Givens rotations */ + double *s; + + double normr; /* residual norm ||r|| */ +} gmres_state_t; + +static void gmres_free(void *vstate); +static int gmres_iterate(const gsl_spmatrix *A, const gsl_vector *b, + const double tol, gsl_vector *x, void *vstate); + +/* +gmres_alloc() + Allocate a GMRES workspace for solving an n-by-n system A x = b + +Inputs: n - size of system + krylov_m - size of Krylov subspace (ie: number of inner iterations) + if this parameter is 0, the value GSL_MIN(n,10) is + used + +Return: pointer to workspace +*/ + +static void * +gmres_alloc(const size_t n, const size_t m) +{ + gmres_state_t *state; + + if (n == 0) + { + GSL_ERROR_NULL("matrix dimension n must be a positive integer", + GSL_EINVAL); + } + + state = calloc(1, sizeof(gmres_state_t)); + if (!state) + { + GSL_ERROR_NULL("failed to allocate gmres state", GSL_ENOMEM); + } + + state->n = n; + + /* compute size of Krylov subspace */ + if (m == 0) + state->m = GSL_MIN(n, 10); + else + state->m = GSL_MIN(n, m); + + state->r = gsl_vector_alloc(n); + if (!state->r) + { + gmres_free(state); + GSL_ERROR_NULL("failed to allocate r vector", GSL_ENOMEM); + } + + state->H = gsl_matrix_alloc(n, state->m + 1); + if (!state->H) + { + gmres_free(state); + GSL_ERROR_NULL("failed to allocate H matrix", GSL_ENOMEM); + } + + state->tau = gsl_vector_alloc(state->m + 1); + if (!state->tau) + { + gmres_free(state); + GSL_ERROR_NULL("failed to allocate tau vector", GSL_ENOMEM); + } + + state->y = gsl_vector_alloc(state->m + 1); + if (!state->y) + { + gmres_free(state); + GSL_ERROR_NULL("failed to allocate y vector", GSL_ENOMEM); + } + + state->c = malloc(state->m * sizeof(double)); + state->s = malloc(state->m * sizeof(double)); + if (!state->c || !state->s) + { + gmres_free(state); + GSL_ERROR_NULL("failed to allocate Givens vectors", GSL_ENOMEM); + } + + state->normr = 0.0; + + return state; +} /* gmres_alloc() */ + +static void +gmres_free(void *vstate) +{ + gmres_state_t *state = (gmres_state_t *) vstate; + + if (state->r) + gsl_vector_free(state->r); + + if (state->H) + gsl_matrix_free(state->H); + + if (state->tau) + gsl_vector_free(state->tau); + + if (state->y) + gsl_vector_free(state->y); + + if (state->c) + free(state->c); + + if (state->s) + free(state->s); + + free(state); +} /* gmres_free() */ + +/* +gmres_iterate() + Solve A*x = b using GMRES algorithm + +Inputs: A - sparse square matrix + b - right hand side vector + tol - stopping tolerance (see below) + x - (input/output) on input, initial estimate x_0; + on output, solution vector + work - workspace + +Return: +GSL_SUCCESS if converged to solution (solution stored in x). In +this case the following will be true: + +||b - A*x|| <= tol * ||b|| + +GSL_CONTINUE if not yet converged; in this case x contains the +most recent solution vector and calling this function more times +with the input x could result in convergence (ie: restarted GMRES) + +Notes: +1) Based on algorithm 2.2 of (Walker, 1998 [1]) and algorithm 6.10 of +(Saad, 2003 [2]) + +2) On output, work->normr contains ||b - A*x|| +*/ + +static int +gmres_iterate(const gsl_spmatrix *A, const gsl_vector *b, + const double tol, gsl_vector *x, + void *vstate) +{ + const size_t N = A->size1; + gmres_state_t *state = (gmres_state_t *) vstate; + + if (N != A->size2) + { + GSL_ERROR("matrix must be square", GSL_ENOTSQR); + } + else if (N != b->size) + { + GSL_ERROR("matrix does not match right hand side", GSL_EBADLEN); + } + else if (N != x->size) + { + GSL_ERROR("matrix does not match solution vector", GSL_EBADLEN); + } + else if (N != state->n) + { + GSL_ERROR("matrix does not match workspace", GSL_EBADLEN); + } + else + { + int status = GSL_SUCCESS; + const size_t maxit = state->m; + const double normb = gsl_blas_dnrm2(b); /* ||b|| */ + const double reltol = tol * normb; /* tol*||b|| */ + double normr; /* ||r|| */ + size_t m, k; + double tau; /* householder scalar */ + gsl_matrix *H = state->H; /* Hessenberg matrix */ + gsl_vector *r = state->r; /* residual vector */ + gsl_vector *w = state->y; /* least squares RHS */ + gsl_matrix_view Rm; /* R_m = H(1:m,2:m+1) */ + gsl_vector_view ym; /* y(1:m) */ + gsl_vector_view h0 = gsl_matrix_column(H, 0); + + /* + * The Hessenberg matrix will have the following structure: + * + * H = [ ||r_0|| | v_1 v_2 ... v_m ] + * [ u_1 | u_2 u_3 ... u_{m+1} ] + * + * where v_j are the orthonormal vectors spanning the Krylov + * subpsace of length j + 1 and u_{j+1} are the householder + * vectors of length n - j - 1. + * In fact, u_{j+1} has length n - j since u_{j+1}[0] = 1, + * but this 1 is not stored. + */ + gsl_matrix_set_zero(H); + + /* Step 1a: compute r = b - A*x_0 */ + gsl_vector_memcpy(r, b); + gsl_spblas_dgemv(CblasNoTrans, -1.0, A, x, 1.0, r); + + /* Step 1b */ + gsl_vector_memcpy(&h0.vector, r); + tau = gsl_linalg_householder_transform(&h0.vector); + + /* store tau_1 */ + gsl_vector_set(state->tau, 0, tau); + + /* initialize w (stored in state->y) */ + gsl_vector_set_zero(w); + gsl_vector_set(w, 0, gsl_vector_get(&h0.vector, 0)); + + for (m = 1; m <= maxit; ++m) + { + size_t j = m - 1; /* C indexing */ + double c, s; /* Givens rotation */ + + /* v_m */ + gsl_vector_view vm = gsl_matrix_column(H, m); + + /* v_m(m:end) */ + gsl_vector_view vv = gsl_vector_subvector(&vm.vector, j, N - j); + + /* householder vector u_m for projection P_m */ + gsl_vector_view um = gsl_matrix_subcolumn(H, j, j, N - j); + + /* Step 2a: form v_m = P_m e_m = e_m - tau_m w_m */ + gsl_vector_set_zero(&vm.vector); + gsl_vector_memcpy(&vv.vector, &um.vector); + tau = gsl_vector_get(state->tau, j); /* tau_m */ + gsl_vector_scale(&vv.vector, -tau); + gsl_vector_set(&vv.vector, 0, 1.0 - tau); + + /* Step 2a: v_m <- P_1 P_2 ... P_{m-1} v_m */ + for (k = j; k > 0 && k--; ) + { + gsl_vector_view uk = + gsl_matrix_subcolumn(H, k, k, N - k); + gsl_vector_view vk = + gsl_vector_subvector(&vm.vector, k, N - k); + tau = gsl_vector_get(state->tau, k); + gsl_linalg_householder_hv(tau, &uk.vector, &vk.vector); + } + + /* Step 2a: v_m <- A*v_m */ + gsl_spblas_dgemv(CblasNoTrans, 1.0, A, &vm.vector, 0.0, r); + gsl_vector_memcpy(&vm.vector, r); + + /* Step 2a: v_m <- P_m ... P_1 v_m */ + for (k = 0; k <= j; ++k) + { + gsl_vector_view uk = gsl_matrix_subcolumn(H, k, k, N - k); + gsl_vector_view vk = gsl_vector_subvector(&vm.vector, k, N - k); + tau = gsl_vector_get(state->tau, k); + gsl_linalg_householder_hv(tau, &uk.vector, &vk.vector); + } + + /* Steps 2c,2d: find P_{m+1} and set v_m <- P_{m+1} v_m */ + if (m < N) + { + /* householder vector u_{m+1} for projection P_{m+1} */ + gsl_vector_view ump1 = gsl_matrix_subcolumn(H, m, m, N - m); + + tau = gsl_linalg_householder_transform(&ump1.vector); + gsl_vector_set(state->tau, j + 1, tau); + } + + /* Step 2e: v_m <- J_{m-1} ... J_1 v_m */ + for (k = 0; k < j; ++k) + { + gsl_linalg_givens_gv(&vm.vector, k, k + 1, + state->c[k], state->s[k]); + } + + if (m < N) + { + /* Step 2g: find givens rotation J_m for v_m(m:m+1) */ + gsl_linalg_givens(gsl_vector_get(&vm.vector, j), + gsl_vector_get(&vm.vector, j + 1), + &c, &s); + + /* store givens rotation for later use */ + state->c[j] = c; + state->s[j] = s; + + /* Step 2h: v_m <- J_m v_m */ + gsl_linalg_givens_gv(&vm.vector, j, j + 1, c, s); + + /* Step 2h: w <- J_m w */ + gsl_linalg_givens_gv(w, j, j + 1, c, s); + } + + /* + * Step 2i: R_m = [ R_{m-1}, v_m ] - already taken care + * of due to our memory storage scheme + */ + + /* Step 2j: check residual w_{m+1} for convergence */ + normr = fabs(gsl_vector_get(w, j + 1)); + if (normr <= reltol) + { + /* + * method has converged, break out of loop to compute + * update to solution vector x + */ + break; + } + } + + /* + * At this point, we have either converged to a solution or + * completed all maxit iterations. In either case, compute + * an update to the solution vector x and test again for + * convergence. + */ + + /* rewind m if we exceeded maxit iterations */ + if (m > maxit) + m--; + + /* Step 3a: solve triangular system R_m y_m = w, in place */ + Rm = gsl_matrix_submatrix(H, 0, 1, m, m); + ym = gsl_vector_subvector(w, 0, m); + gsl_blas_dtrsv(CblasUpper, CblasNoTrans, CblasNonUnit, + &Rm.matrix, &ym.vector); + + /* + * Step 3b: update solution vector x; the loop below + * uses a different but equivalent formulation from + * Saad, algorithm 6.10, step 14; store Krylov projection + * V_m y_m in 'r' + */ + gsl_vector_set_zero(r); + for (k = m; k > 0 && k--; ) + { + double ymk = gsl_vector_get(&ym.vector, k); + gsl_vector_view uk = gsl_matrix_subcolumn(H, k, k, N - k); + gsl_vector_view rk = gsl_vector_subvector(r, k, N - k); + + /* r <- n_k e_k + r */ + gsl_vector_set(r, k, gsl_vector_get(r, k) + ymk); + + /* r <- P_k r */ + tau = gsl_vector_get(state->tau, k); + gsl_linalg_householder_hv(tau, &uk.vector, &rk.vector); + } + + /* x <- x + V_m y_m */ + gsl_vector_add(x, r); + + /* compute new residual r = b - A*x */ + gsl_vector_memcpy(r, b); + gsl_spblas_dgemv(CblasNoTrans, -1.0, A, x, 1.0, r); + normr = gsl_blas_dnrm2(r); + + if (normr <= reltol) + status = GSL_SUCCESS; /* converged */ + else + status = GSL_CONTINUE; /* not yet converged */ + + /* store residual norm */ + state->normr = normr; + + return status; + } +} /* gmres_iterate() */ + +static double +gmres_normr(const void *vstate) +{ + const gmres_state_t *state = (const gmres_state_t *) vstate; + return state->normr; +} /* gmres_normr() */ + +static const gsl_splinalg_itersolve_type gmres_type = +{ + "gmres", + &gmres_alloc, + &gmres_iterate, + &gmres_normr, + &gmres_free +}; + +const gsl_splinalg_itersolve_type * gsl_splinalg_itersolve_gmres = + &gmres_type; diff --git a/gsl-2.5/splinalg/gmres.lo b/gsl-2.5/splinalg/gmres.lo new file mode 100644 index 00000000..f1018d3d --- /dev/null +++ b/gsl-2.5/splinalg/gmres.lo @@ -0,0 +1,12 @@ +# gmres.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/gmres.o' + +# Name of the non-PIC object +non_pic_object='gmres.o' + diff --git a/gsl-2.5/splinalg/gsl_splinalg.h b/gsl-2.5/splinalg/gsl_splinalg.h new file mode 100644 index 00000000..265b6ae6 --- /dev/null +++ b/gsl-2.5/splinalg/gsl_splinalg.h @@ -0,0 +1,79 @@ +/* gsl_splinalg.h + * + * Copyright (C) 2012-2014 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_SPLINALG_H__ +#define __GSL_SPLINALG_H__ + +#include +#include +#include +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +/* iteration solver type */ +typedef struct +{ + const char *name; + void * (*alloc) (const size_t n, const size_t m); + int (*iterate) (const gsl_spmatrix *A, const gsl_vector *b, + const double tol, gsl_vector *x, void *); + double (*normr)(const void *); + void (*free) (void *); +} gsl_splinalg_itersolve_type; + +typedef struct +{ + const gsl_splinalg_itersolve_type * type; + double normr; /* current residual norm || b - A x || */ + void * state; +} gsl_splinalg_itersolve; + +/* available types */ +GSL_VAR const gsl_splinalg_itersolve_type * gsl_splinalg_itersolve_gmres; + +/* + * Prototypes + */ +gsl_splinalg_itersolve * +gsl_splinalg_itersolve_alloc(const gsl_splinalg_itersolve_type *T, + const size_t n, const size_t m); +void gsl_splinalg_itersolve_free(gsl_splinalg_itersolve *w); +const char *gsl_splinalg_itersolve_name(const gsl_splinalg_itersolve *w); +int gsl_splinalg_itersolve_iterate(const gsl_spmatrix *A, + const gsl_vector *b, + const double tol, gsl_vector *x, + gsl_splinalg_itersolve *w); +double gsl_splinalg_itersolve_normr(const gsl_splinalg_itersolve *w); + +__END_DECLS + +#endif /* __GSL_SPLINALG_H__ */ diff --git a/gsl-2.5/splinalg/itersolve.c b/gsl-2.5/splinalg/itersolve.c new file mode 100644 index 00000000..6cac8ac8 --- /dev/null +++ b/gsl-2.5/splinalg/itersolve.c @@ -0,0 +1,90 @@ +/* itersolve.c + * + * Copyright (C) 2014 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include +#include +#include + +gsl_splinalg_itersolve * +gsl_splinalg_itersolve_alloc(const gsl_splinalg_itersolve_type *T, + const size_t n, const size_t m) +{ + gsl_splinalg_itersolve *w; + + w = calloc(1, sizeof(gsl_splinalg_itersolve)); + if (w == NULL) + { + GSL_ERROR_NULL("failed to allocate space for itersolve struct", + GSL_ENOMEM); + } + + w->type = T; + w->normr = 0.0; + + w->state = w->type->alloc(n, m); + if (w->state == NULL) + { + gsl_splinalg_itersolve_free(w); + GSL_ERROR_NULL("failed to allocate space for itersolve state", + GSL_ENOMEM); + } + + return w; +} /* gsl_splinalg_itersolve_alloc() */ + +void +gsl_splinalg_itersolve_free(gsl_splinalg_itersolve *w) +{ + RETURN_IF_NULL(w); + + if (w->state) + w->type->free(w->state); + + free(w); +} + +const char * +gsl_splinalg_itersolve_name(const gsl_splinalg_itersolve *w) +{ + return w->type->name; +} + +int +gsl_splinalg_itersolve_iterate(const gsl_spmatrix *A, const gsl_vector *b, + const double tol, gsl_vector *x, + gsl_splinalg_itersolve *w) +{ + int status = w->type->iterate(A, b, tol, x, w->state); + + /* store current residual */ + w->normr = w->type->normr(w->state); + + return status; +} + +double +gsl_splinalg_itersolve_normr(const gsl_splinalg_itersolve *w) +{ + return w->normr; +} diff --git a/gsl-2.5/splinalg/itersolve.lo b/gsl-2.5/splinalg/itersolve.lo new file mode 100644 index 00000000..df06b6ef --- /dev/null +++ b/gsl-2.5/splinalg/itersolve.lo @@ -0,0 +1,12 @@ +# itersolve.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/itersolve.o' + +# Name of the non-PIC object +non_pic_object='itersolve.o' + diff --git a/gsl-2.5/splinalg/libgslsplinalg.la b/gsl-2.5/splinalg/libgslsplinalg.la new file mode 100644 index 00000000..9dc2744f --- /dev/null +++ b/gsl-2.5/splinalg/libgslsplinalg.la @@ -0,0 +1,41 @@ +# libgslsplinalg.la - a libtool library file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='' + +# Names of this library. +library_names='' + +# The name of the static archive. +old_library='libgslsplinalg.a' + +# Linker flags that can not go in dependency_libs. +inherited_linker_flags='' + +# Libraries that this one depends upon. +dependency_libs=' -lm' + +# Names of additional weak libraries provided by this library +weak_library_names='' + +# Version information for libgslsplinalg. +current= +age= +revision= + +# Is this an already installed library? +installed=no + +# Should we warn about portability when linking against -modules? +shouldnotlink=no + +# Files to dlopen/dlpreopen +dlopen='' +dlpreopen='' + +# Directory that this library needs to be installed in: +libdir='' diff --git a/gsl-2.5/splinalg/test b/gsl-2.5/splinalg/test new file mode 100755 index 00000000..fc7be074 --- /dev/null +++ b/gsl-2.5/splinalg/test @@ -0,0 +1,228 @@ +#! /bin/sh + +# test - temporary wrapper script for .libs/test +# Generated by libtool (GNU libtool) 2.4.2 +# +# The test program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s/\([`"$\\]\)/\\\1/g' + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command="(cd /home/groups/kipac/chto/package/gsl/gsl-2.5/splinalg; LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LIBRARY_PATH; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; LD_LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/fftw/include:/home/users/chto/lib/fftw/lib:/home/users/chto/lib/healpix/lib:/home/users/chto/lib/namaster/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/include:/home/users/chto/cpp/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LD_LIBRARY_PATH; PATH=/share/software/user/open/curl/7.54.0/bin:/share/software/user/open/libressl/2.5.3/bin:/home/users/chto/lib/cfitsio:/home/users/chto/lib/cfitsio/include:/home/users/chto/lib:/home/users/chto/bin/bin:/home/users/chto/bin:/home/users/chto/.texlive/bin/x86_64-linux:/home/groups/kipac/chto/anaconda2/envs/newenv3/bin:/home/users/chto/.local/bin/include:/home/users/chto/.local/bin/lib:/home/users/chto/.local/bin:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/bin64:/share/software/user/open/fftw/3.3.6/bin:/home/groups/kipac/chto/anaconda2/condabin:/share/software/user/restricted/ifort/2019/bin:/share/software/user/open/gsl/2.3/bin:/share/software/user/srcc/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/dell/srvadmin/bin:/opt/dell/srvadmin/iSM/bin:/home/users/chto/bin; export PATH; gcc -g -O2 -o \$progdir/\$file test.o ./.libs/libgslsplinalg.a ../spmatrix/.libs/libgslspmatrix.a ../spblas/.libs/libgslspblas.a ../test/.libs/libgsltest.a ../linalg/.libs/libgsllinalg.a ../blas/.libs/libgslblas.a ../cblas/.libs/libgslcblas.so ../matrix/.libs/libgslmatrix.a ../vector/.libs/libgslvector.a ../block/.libs/libgslblock.a ../sys/.libs/libgslsys.a ../utils/.libs/libutils.a ../rng/.libs/libgslrng.a ../err/.libs/libgslerr.a -lm -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/cblas/.libs -Wl,-rpath -Wl,/usr/local/lib)" + +# This environment variable determines our operation mode. +if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then + # install mode needs the following variables: + generated_by_libtool_version='2.4.2' + notinst_deplibs=' ../cblas/libgslcblas.la' +else + # When we are sourced in execute mode, $file and $ECHO are already set. + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + file="$0" + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + ECHO="printf %s\\n" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ which is used only on +# windows platforms, and (c) all begin with the string --lt- +# (application programs are unlikely to have options which match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's ../libtool value, followed by no. +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=$0 + shift + for lt_opt + do + case "$lt_opt" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%/[^/]*$%%'` + test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=. + lt_dump_F=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%^.*/%%'` + cat "$lt_dump_D/$lt_dump_F" + exit 0 + ;; + --lt-*) + $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n "$lt_option_debug"; then + echo "test:test:${LINENO}: libtool wrapper (GNU libtool) 2.4.2" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + $ECHO "test:test:${LINENO}: newargv[$lt_dump_args_N]: $lt_arg" + lt_dump_args_N=`expr $lt_dump_args_N + 1` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ + + if test -n "$lt_option_debug"; then + $ECHO "test:test:${LINENO}: newargv[0]: $progdir/$program" 1>&2 + func_lt_dump_args ${1+"$@"} 1>&2 + fi + exec "$progdir/$program" ${1+"$@"} + + $ECHO "$0: cannot exec $program $*" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from $@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case " $* " in + *\ --lt-*) + for lt_wr_arg + do + case $lt_wr_arg in + --lt-*) ;; + *) set x "$@" "$lt_wr_arg"; shift;; + esac + shift + done ;; + esac + func_exec_program_core ${1+"$@"} +} + + # Parse options + func_parse_lt_options "$0" ${1+"$@"} + + # Find the directory that this script lives in. + thisdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + test "x$thisdir" = "x$file" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=`ls -ld "$file" | /usr/bin/sed -n 's/.*-> //p'` + while test -n "$file"; do + destdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + + # If there was a directory component, then change thisdir. + if test "x$destdir" != "x$file"; then + case "$destdir" in + [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;; + *) thisdir="$thisdir/$destdir" ;; + esac + fi + + file=`$ECHO "$file" | /usr/bin/sed 's%^.*/%%'` + file=`ls -ld "$thisdir/$file" | /usr/bin/sed -n 's/.*-> //p'` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no + if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then + # special case for '.' + if test "$thisdir" = "."; then + thisdir=`pwd` + fi + # remove .libs from thisdir + case "$thisdir" in + *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /usr/bin/sed 's%[\\/][^\\/]*$%%'` ;; + .libs ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=`cd "$thisdir" && pwd` + test -n "$absdir" && thisdir="$absdir" + + program=lt-'test' + progdir="$thisdir/.libs" + + if test ! -f "$progdir/$program" || + { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /usr/bin/sed 1q`; \ + test "X$file" != "X$progdir/$program"; }; then + + file="$$-$program" + + if test ! -d "$progdir"; then + mkdir "$progdir" + else + rm -f "$progdir/$file" + fi + + # relink executable if necessary + if test -n "$relink_command"; then + if relink_command_output=`eval $relink_command 2>&1`; then : + else + printf %s\n "$relink_command_output" >&2 + rm -f "$progdir/$file" + exit 1 + fi + fi + + mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null || + { rm -f "$progdir/$program"; + mv -f "$progdir/$file" "$progdir/$program"; } + rm -f "$progdir/$file" + fi + + if test -f "$progdir/$program"; then + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + # Run the actual program with our arguments. + func_exec_program ${1+"$@"} + fi + else + # The program doesn't exist. + $ECHO "$0: error: \`$progdir/$program' does not exist" 1>&2 + $ECHO "This script is just a wrapper for $program." 1>&2 + $ECHO "See the libtool documentation for more information." 1>&2 + exit 1 + fi +fi diff --git a/gsl-2.5/splinalg/test-suite.log b/gsl-2.5/splinalg/test-suite.log new file mode 100644 index 00000000..bd25e298 --- /dev/null +++ b/gsl-2.5/splinalg/test-suite.log @@ -0,0 +1,14 @@ +====================================== + gsl 2.5: splinalg/test-suite.log +====================================== + +# TOTAL: 1 +# PASS: 1 +# SKIP: 0 +# XFAIL: 0 +# FAIL: 0 +# XPASS: 0 +# ERROR: 0 + +.. contents:: :depth: 2 + diff --git a/gsl-2.5/splinalg/test.c b/gsl-2.5/splinalg/test.c new file mode 100644 index 00000000..d6088222 --- /dev/null +++ b/gsl-2.5/splinalg/test.c @@ -0,0 +1,372 @@ +/* test.c + * + * Copyright (C) 2012-2014 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/* +create_random_sparse() + Create a random sparse matrix with approximately +M*N*density non-zero entries + +Inputs: M - number of rows + N - number of columns + density - sparse density \in [0,1] + 0 = no non-zero entries + 1 = all m*n entries are filled + r - random number generator + +Return: pointer to sparse matrix in triplet format (must be freed by caller) + +Notes: +1) non-zero matrix entries are uniformly distributed in [0,1] +*/ + +static gsl_spmatrix * +create_random_sparse(const size_t M, const size_t N, const double density, + const gsl_rng *r) +{ + size_t nnzwanted = (size_t) floor(M * N * GSL_MIN(density, 1.0)); + gsl_spmatrix *m = gsl_spmatrix_alloc_nzmax(M, N, + nnzwanted, + GSL_SPMATRIX_TRIPLET); + size_t i; + + /* set diagonal entries to try to ensure non-singularity */ + for (i = 0; i < GSL_MIN(M, N); ++i) + { + double x = gsl_rng_uniform(r); + gsl_spmatrix_set(m, i, i, x); + } + + while (gsl_spmatrix_nnz(m) < nnzwanted) + { + /* generate a random row and column */ + size_t i = gsl_rng_uniform(r) * M; + size_t j = gsl_rng_uniform(r) * N; + + /* generate random m_{ij} and add it */ + double x = gsl_rng_uniform(r); + gsl_spmatrix_set(m, i, j, x); + } + + return m; +} /* create_random_sparse() */ + +static void +create_random_vector(gsl_vector *v, const gsl_rng *r) +{ + size_t i; + + for (i = 0; i < v->size; ++i) + { + double x = gsl_rng_uniform(r); + gsl_vector_set(v, i, x); + } +} /* create_random_vector() */ + +/* +test_poisson() + Solve u''(x) = -pi^2 sin(pi*x), u(x) = sin(pi*x) + epsrel is the relative error threshold with the exact solution +*/ +static void +test_poisson(const size_t N, const double epsrel, const int compress) +{ + const gsl_splinalg_itersolve_type *T = gsl_splinalg_itersolve_gmres; + const size_t n = N - 2; /* subtract 2 to exclude boundaries */ + const double h = 1.0 / (N - 1.0); /* grid spacing */ + const double tol = 1.0e-9; + const size_t max_iter = 10; + size_t iter = 0; + gsl_spmatrix *A = gsl_spmatrix_alloc(n ,n); /* triplet format */ + gsl_spmatrix *B; + gsl_vector *b = gsl_vector_alloc(n); /* right hand side vector */ + gsl_vector *u = gsl_vector_calloc(n); /* solution vector, u0 = 0 */ + gsl_splinalg_itersolve *w = gsl_splinalg_itersolve_alloc(T, n, 0); + const char *desc = gsl_splinalg_itersolve_name(w); + size_t i; + int status; + + /* construct the sparse matrix for the finite difference equation */ + + /* first row of matrix */ + gsl_spmatrix_set(A, 0, 0, -2.0); + gsl_spmatrix_set(A, 0, 1, 1.0); + + /* loop over interior grid points */ + for (i = 1; i < n - 1; ++i) + { + gsl_spmatrix_set(A, i, i + 1, 1.0); + gsl_spmatrix_set(A, i, i, -2.0); + gsl_spmatrix_set(A, i, i - 1, 1.0); + } + + /* last row of matrix */ + gsl_spmatrix_set(A, n - 1, n - 1, -2.0); + gsl_spmatrix_set(A, n - 1, n - 2, 1.0); + + /* scale by h^2 */ + gsl_spmatrix_scale(A, 1.0 / (h * h)); + + /* construct right hand side vector */ + for (i = 0; i < n; ++i) + { + double xi = (i + 1) * h; + double bi = -M_PI * M_PI * sin(M_PI * xi); + gsl_vector_set(b, i, bi); + } + + if (compress) + B = gsl_spmatrix_compcol(A); + else + B = A; + + /* solve the system */ + do + { + status = gsl_splinalg_itersolve_iterate(B, b, tol, u, w); + } + while (status == GSL_CONTINUE && ++iter < max_iter); + + gsl_test(status, "%s poisson status s=%d N=%zu", desc, status, N); + + /* check solution against analytic */ + for (i = 0; i < n; ++i) + { + double xi = (i + 1) * h; + double u_gsl = gsl_vector_get(u, i); + double u_exact = sin(M_PI * xi); + + gsl_test_rel(u_gsl, u_exact, epsrel, "%s poisson N=%zu i=%zu", + desc, N, i); + } + + /* check that the residual satisfies ||r|| <= tol*||b|| */ + { + gsl_vector *r = gsl_vector_alloc(n); + double normr, normb; + + gsl_vector_memcpy(r, b); + gsl_spblas_dgemv(CblasNoTrans, -1.0, A, u, 1.0, r); + + normr = gsl_blas_dnrm2(r); + normb = gsl_blas_dnrm2(b); + + status = (normr <= tol*normb) != 1; + gsl_test(status, "%s poisson residual N=%zu normr=%.12e normb=%.12e", + desc, N, normr, normb); + + gsl_vector_free(r); + } + + gsl_splinalg_itersolve_free(w); + gsl_spmatrix_free(A); + gsl_vector_free(b); + gsl_vector_free(u); + + if (compress) + gsl_spmatrix_free(B); +} /* test_poisson() */ + +/* +test_toeplitz() + Test Toeplitz matrix T = A + B + C where: +A = diag(a,-1) +B = diag(b) +C = diag(c,1) + +rhs = ones(n,1) +*/ + +static void +test_toeplitz(const size_t N, const double a, const double b, + const double c) +{ + int status; + const double tol = 1.0e-10; + const size_t max_iter = 10; + const gsl_splinalg_itersolve_type *T = gsl_splinalg_itersolve_gmres; + const char *desc; + gsl_spmatrix *A; + gsl_vector *rhs, *x; + gsl_splinalg_itersolve *w; + size_t i, iter = 0; + + if (N <= 1) + return; + + A = gsl_spmatrix_alloc(N ,N); + rhs = gsl_vector_alloc(N); + x = gsl_vector_calloc(N); + w = gsl_splinalg_itersolve_alloc(T, N, 0); + desc = gsl_splinalg_itersolve_name(w); + + /* first row */ + gsl_spmatrix_set(A, 0, 0, b); + gsl_spmatrix_set(A, 0, 1, c); + + /* interior rows */ + for (i = 1; i < N - 1; ++i) + { + gsl_spmatrix_set(A, i, i - 1, a); + gsl_spmatrix_set(A, i, i, b); + gsl_spmatrix_set(A, i, i + 1, c); + } + + /* last row */ + gsl_spmatrix_set(A, N - 1, N - 2, a); + gsl_spmatrix_set(A, N - 1, N - 1, b); + + /* set rhs vector */ + gsl_vector_set_all(rhs, 1.0); + + /* solve the system */ + do + { + status = gsl_splinalg_itersolve_iterate(A, rhs, tol, x, w); + } + while (status == GSL_CONTINUE && ++iter < max_iter); + + gsl_test(status, "%s toeplitz status s=%d N=%zu a=%f b=%f c=%f", + desc, status, N, a, b, c); + + /* check that the residual satisfies ||r|| <= tol*||b|| */ + { + gsl_vector *r = gsl_vector_alloc(N); + double normr, normb; + + gsl_vector_memcpy(r, rhs); + gsl_spblas_dgemv(CblasNoTrans, -1.0, A, x, 1.0, r); + + normr = gsl_blas_dnrm2(r); + normb = gsl_blas_dnrm2(rhs); + + status = (normr <= tol*normb) != 1; + gsl_test(status, "%s toeplitz residual N=%zu a=%f b=%f c=%f normr=%.12e normb=%.12e", + desc, N, a, b, c, normr, normb); + + gsl_vector_free(r); + } + + gsl_vector_free(x); + gsl_vector_free(rhs); + gsl_spmatrix_free(A); + gsl_splinalg_itersolve_free(w); +} /* test_toeplitz() */ + +static void +test_random(const size_t N, const gsl_rng *r, const int compress) +{ + const gsl_splinalg_itersolve_type *T = gsl_splinalg_itersolve_gmres; + const double tol = 1.0e-8; + int status; + gsl_spmatrix *A = create_random_sparse(N, N, 0.3, r); + gsl_spmatrix *B; + gsl_vector *b = gsl_vector_alloc(N); + gsl_vector *x = gsl_vector_calloc(N); + + /* these random matrices require all N iterations to converge */ + gsl_splinalg_itersolve *w = gsl_splinalg_itersolve_alloc(T, N, N); + + const char *desc = gsl_splinalg_itersolve_name(w); + + create_random_vector(b, r); + + if (compress) + B = gsl_spmatrix_compcol(A); + else + B = A; + + status = gsl_splinalg_itersolve_iterate(B, b, tol, x, w); + gsl_test(status, "%s random status s=%d N=%zu", desc, status, N); + + /* check that the residual satisfies ||r|| <= tol*||b|| */ + { + gsl_vector *res = gsl_vector_alloc(N); + double normr, normb; + + gsl_vector_memcpy(res, b); + gsl_spblas_dgemv(CblasNoTrans, -1.0, A, x, 1.0, res); + + normr = gsl_blas_dnrm2(res); + normb = gsl_blas_dnrm2(b); + + status = (normr <= tol*normb) != 1; + gsl_test(status, "%s random residual N=%zu normr=%.12e normb=%.12e", + desc, N, normr, normb); + + gsl_vector_free(res); + } + + gsl_spmatrix_free(A); + gsl_vector_free(b); + gsl_vector_free(x); + gsl_splinalg_itersolve_free(w); + + if (compress) + gsl_spmatrix_free(B); +} /* test_random() */ + +int +main() +{ + gsl_rng *r = gsl_rng_alloc(gsl_rng_default); + size_t n; + + test_poisson(7, 1.0e-1, 0); + test_poisson(7, 1.0e-1, 1); + + test_poisson(543, 1.0e-5, 0); + test_poisson(543, 1.0e-5, 1); + + test_poisson(1000, 1.0e-6, 0); + test_poisson(1000, 1.0e-6, 1); + + test_poisson(5000, 1.0e-7, 0); + test_poisson(5000, 1.0e-7, 1); + + test_toeplitz(15, 0.01, 1.0, 0.01); + test_toeplitz(15, 1.0, 1.0, 0.01); + test_toeplitz(50, 1.0, 2.0, 0.01); + test_toeplitz(1000, 0.5, 1.0, 0.01); + + for (n = 1; n <= 100; ++n) + { + test_random(n, r, 0); + test_random(n, r, 1); + } + + gsl_rng_free(r); + + exit (gsl_test_summary()); +} /* main() */ diff --git a/gsl-2.5/splinalg/test.log b/gsl-2.5/splinalg/test.log new file mode 100644 index 00000000..751f2299 --- /dev/null +++ b/gsl-2.5/splinalg/test.log @@ -0,0 +1 @@ +Completed [13508/13508] diff --git a/gsl-2.5/splinalg/test.trs b/gsl-2.5/splinalg/test.trs new file mode 100644 index 00000000..3f0f396c --- /dev/null +++ b/gsl-2.5/splinalg/test.trs @@ -0,0 +1,4 @@ +:test-result: PASS +:global-test-result: PASS +:recheck: no +:copy-in-global-log: no diff --git a/gsl-2.5/spmatrix/.deps/spcompress.Plo b/gsl-2.5/spmatrix/.deps/spcompress.Plo new file mode 100644 index 00000000..39e1ce00 --- /dev/null +++ b/gsl-2.5/spmatrix/.deps/spcompress.Plo @@ -0,0 +1,292 @@ +spcompress.lo: spcompress.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_math.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_spmatrix.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_complex.h \ + ../gsl/gsl_check_range.h ../gsl/gsl_vector_long_double.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_vector_complex.h \ + ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_spmatrix.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: diff --git a/gsl-2.5/spmatrix/.deps/spcopy.Plo b/gsl-2.5/spmatrix/.deps/spcopy.Plo new file mode 100644 index 00000000..93d74364 --- /dev/null +++ b/gsl-2.5/spmatrix/.deps/spcopy.Plo @@ -0,0 +1,303 @@ +spcopy.lo: spcopy.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_spmatrix.h ../gsl/gsl_math.h ../gsl/gsl_sys.h \ + ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h avl.c /usr/include/string.h \ + /usr/include/xlocale.h /usr/include/bits/string.h \ + /usr/include/bits/string2.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_spmatrix.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +avl.c: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string.h: + +/usr/include/bits/string2.h: diff --git a/gsl-2.5/spmatrix/.deps/spgetset.Plo b/gsl-2.5/spmatrix/.deps/spgetset.Plo new file mode 100644 index 00000000..7031ffa1 --- /dev/null +++ b/gsl-2.5/spmatrix/.deps/spgetset.Plo @@ -0,0 +1,304 @@ +spgetset.lo: spgetset.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_math.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_spmatrix.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_complex.h \ + ../gsl/gsl_check_range.h ../gsl/gsl_vector_long_double.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_vector_complex.h \ + ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h avl.c /usr/include/string.h \ + /usr/include/xlocale.h /usr/include/bits/string.h \ + /usr/include/bits/string2.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_spmatrix.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +avl.c: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string.h: + +/usr/include/bits/string2.h: diff --git a/gsl-2.5/spmatrix/.deps/spio.Plo b/gsl-2.5/spmatrix/.deps/spio.Plo new file mode 100644 index 00000000..455761ac --- /dev/null +++ b/gsl-2.5/spmatrix/.deps/spio.Plo @@ -0,0 +1,292 @@ +spio.lo: spio.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_math.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_spmatrix.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_complex.h \ + ../gsl/gsl_check_range.h ../gsl/gsl_vector_long_double.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_vector_complex.h \ + ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_spmatrix.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: diff --git a/gsl-2.5/spmatrix/.deps/spmatrix.Plo b/gsl-2.5/spmatrix/.deps/spmatrix.Plo new file mode 100644 index 00000000..a3aa4210 --- /dev/null +++ b/gsl-2.5/spmatrix/.deps/spmatrix.Plo @@ -0,0 +1,304 @@ +spmatrix.lo: spmatrix.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_math.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_spmatrix.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_complex.h \ + ../gsl/gsl_check_range.h ../gsl/gsl_vector_long_double.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_vector_complex.h \ + ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h avl.c /usr/include/string.h \ + /usr/include/xlocale.h /usr/include/bits/string.h \ + /usr/include/bits/string2.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_spmatrix.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +avl.c: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string.h: + +/usr/include/bits/string2.h: diff --git a/gsl-2.5/spmatrix/.deps/spoper.Plo b/gsl-2.5/spmatrix/.deps/spoper.Plo new file mode 100644 index 00000000..b89c5ad5 --- /dev/null +++ b/gsl-2.5/spmatrix/.deps/spoper.Plo @@ -0,0 +1,300 @@ +spoper.lo: spoper.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_math.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_vector_long_double.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_vector_complex.h \ + ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_vector_complex_double.h \ + ../gsl/gsl_vector_double.h ../gsl/gsl_block_double.h \ + ../gsl/gsl_block_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_vector_long.h \ + ../gsl/gsl_block_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_matrix_int.h \ + ../gsl/gsl_vector_int.h ../gsl/gsl_block_int.h \ + ../gsl/gsl_matrix_ushort.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_matrix_short.h \ + ../gsl/gsl_vector_short.h ../gsl/gsl_block_short.h \ + ../gsl/gsl_matrix_uchar.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_matrix_char.h \ + ../gsl/gsl_vector_char.h ../gsl/gsl_block_char.h ../gsl/gsl_spmatrix.h \ + ../gsl/gsl_vector.h ../gsl/gsl_spblas.h ../gsl/gsl_blas.h \ + ../gsl/gsl_blas_types.h ../gsl/gsl_cblas.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_spmatrix.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_spblas.h: + +../gsl/gsl_blas.h: + +../gsl/gsl_blas_types.h: + +../gsl/gsl_cblas.h: diff --git a/gsl-2.5/spmatrix/.deps/spprop.Plo b/gsl-2.5/spmatrix/.deps/spprop.Plo new file mode 100644 index 00000000..e458779b --- /dev/null +++ b/gsl-2.5/spmatrix/.deps/spprop.Plo @@ -0,0 +1,291 @@ +spprop.lo: spprop.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_spmatrix.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_spmatrix.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: diff --git a/gsl-2.5/spmatrix/.deps/spswap.Plo b/gsl-2.5/spmatrix/.deps/spswap.Plo new file mode 100644 index 00000000..c7b16aec --- /dev/null +++ b/gsl-2.5/spmatrix/.deps/spswap.Plo @@ -0,0 +1,302 @@ +spswap.lo: spswap.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_math.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_vector_long_double.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_vector_complex.h \ + ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_vector_complex_double.h \ + ../gsl/gsl_vector_double.h ../gsl/gsl_block_double.h \ + ../gsl/gsl_block_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_vector_long.h \ + ../gsl/gsl_block_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_matrix_int.h \ + ../gsl/gsl_vector_int.h ../gsl/gsl_block_int.h \ + ../gsl/gsl_matrix_ushort.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_matrix_short.h \ + ../gsl/gsl_vector_short.h ../gsl/gsl_block_short.h \ + ../gsl/gsl_matrix_uchar.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_matrix_char.h \ + ../gsl/gsl_vector_char.h ../gsl/gsl_block_char.h ../gsl/gsl_spmatrix.h \ + ../gsl/gsl_vector.h avl.c /usr/include/string.h /usr/include/xlocale.h \ + /usr/include/bits/string.h /usr/include/bits/string2.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_spmatrix.h: + +../gsl/gsl_vector.h: + +avl.c: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string.h: + +/usr/include/bits/string2.h: diff --git a/gsl-2.5/spmatrix/.deps/test.Po b/gsl-2.5/spmatrix/.deps/test.Po new file mode 100644 index 00000000..b68aba96 --- /dev/null +++ b/gsl-2.5/spmatrix/.deps/test.Po @@ -0,0 +1,317 @@ +test.o: test.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdio.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + /usr/include/unistd.h /usr/include/bits/posix_opt.h \ + /usr/include/bits/environments.h /usr/include/bits/confname.h \ + /usr/include/getopt.h ../gsl/gsl_math.h ../gsl/gsl_sys.h \ + ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_randist.h ../gsl/gsl_rng.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_complex.h \ + ../gsl/gsl_check_range.h ../gsl/gsl_vector_long_double.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_vector_complex.h \ + ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_test.h ../gsl/gsl_blas.h \ + ../gsl/gsl_blas_types.h ../gsl/gsl_cblas.h ../gsl/gsl_spmatrix.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +/usr/include/unistd.h: + +/usr/include/bits/posix_opt.h: + +/usr/include/bits/environments.h: + +/usr/include/bits/confname.h: + +/usr/include/getopt.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_randist.h: + +../gsl/gsl_rng.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_test.h: + +../gsl/gsl_blas.h: + +../gsl/gsl_blas_types.h: + +../gsl/gsl_cblas.h: + +../gsl/gsl_spmatrix.h: diff --git a/gsl-2.5/spmatrix/.libs/libgslspmatrix.la b/gsl-2.5/spmatrix/.libs/libgslspmatrix.la new file mode 120000 index 00000000..d5f23945 --- /dev/null +++ b/gsl-2.5/spmatrix/.libs/libgslspmatrix.la @@ -0,0 +1 @@ +../libgslspmatrix.la \ No newline at end of file diff --git a/gsl-2.5/spmatrix/.libs/lt-test b/gsl-2.5/spmatrix/.libs/lt-test new file mode 100755 index 00000000..2d64d7f7 Binary files /dev/null and b/gsl-2.5/spmatrix/.libs/lt-test differ diff --git a/gsl-2.5/spmatrix/.libs/test b/gsl-2.5/spmatrix/.libs/test new file mode 100755 index 00000000..b2dfde73 Binary files /dev/null and b/gsl-2.5/spmatrix/.libs/test differ diff --git a/gsl-2.5/spmatrix/Makefile b/gsl-2.5/spmatrix/Makefile new file mode 100644 index 00000000..1a05a508 --- /dev/null +++ b/gsl-2.5/spmatrix/Makefile @@ -0,0 +1,1037 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# spmatrix/Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + + + + +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/gsl +pkgincludedir = $(includedir)/gsl +pkglibdir = $(libdir)/gsl +pkglibexecdir = $(libexecdir)/gsl +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = x86_64-unknown-linux-gnu +host_triplet = x86_64-unknown-linux-gnu +check_PROGRAMS = test$(EXEEXT) +subdir = spmatrix +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp \ + $(noinst_HEADERS) $(pkginclude_HEADERS) \ + $(top_srcdir)/test-driver TODO +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +libgslspmatrix_la_LIBADD = +am_libgslspmatrix_la_OBJECTS = spcompress.lo spcopy.lo spgetset.lo \ + spio.lo spmatrix.lo spoper.lo spprop.lo spswap.lo +libgslspmatrix_la_OBJECTS = $(am_libgslspmatrix_la_OBJECTS) +AM_V_lt = $(am__v_lt_$(V)) +am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) +am__v_lt_0 = --silent +am__v_lt_1 = +am_test_OBJECTS = test.$(OBJEXT) +test_OBJECTS = $(am_test_OBJECTS) +test_DEPENDENCIES = libgslspmatrix.la ../spblas/libgslspblas.la \ + ../test/libgsltest.la ../blas/libgslblas.la \ + ../cblas/libgslcblas.la ../matrix/libgslmatrix.la \ + ../vector/libgslvector.la ../block/libgslblock.la \ + ../sys/libgslsys.la ../err/libgslerr.la ../utils/libutils.la \ + ../rng/libgslrng.la +AM_V_P = $(am__v_P_$(V)) +am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY)) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_$(V)) +am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_$(V)) +am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I. -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_$(V)) +am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_$(V)) +am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libgslspmatrix_la_SOURCES) $(test_SOURCES) +DIST_SOURCES = $(libgslspmatrix_la_SOURCES) $(test_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(pkgincludedir)" +HEADERS = $(noinst_HEADERS) $(pkginclude_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = .test +LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing aclocal-1.13 +AMTAR = $${TAR-tar} +AM_DEFAULT_VERBOSITY = 1 +AR = ar +AS = as +AUTOCONF = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing autoconf +AUTOHEADER = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing autoheader +AUTOMAKE = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing automake-1.13 +AWK = gawk +CC = gcc +CCDEPMODE = depmode=gcc3 +CFLAGS = -g -O2 +CPP = gcc -E +CPPFLAGS = +CYGPATH_W = echo +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +DLLTOOL = false +DSYMUTIL = +DUMPBIN = +ECHO_C = +ECHO_N = -n +ECHO_T = +EGREP = /usr/bin/grep -E +EXEEXT = +FGREP = /usr/bin/grep -F +GREP = /usr/bin/grep +GSLCBLAS_LDFLAGS = +GSL_CFLAGS = -I${prefix}/include +GSL_LDFLAGS = +GSL_LIBADD = +GSL_LIBM = -lm +GSL_LIBS = -L${exec_prefix}/lib -lgsl +GSL_LT_CBLAS_VERSION = 0:0:0 +GSL_LT_VERSION = 24:0:1 +GSL_MAJOR_VERSION = 2 +GSL_MINOR_VERSION = 5 +HAVE_AIX_IEEE_INTERFACE = +HAVE_DARWIN86_IEEE_INTERFACE = +HAVE_DARWIN_IEEE_INTERFACE = +HAVE_FREEBSD_IEEE_INTERFACE = +HAVE_GNUM68K_IEEE_INTERFACE = +HAVE_GNUPPC_IEEE_INTERFACE = +HAVE_GNUSPARC_IEEE_INTERFACE = +HAVE_GNUX86_IEEE_INTERFACE = +HAVE_HPUX11_IEEE_INTERFACE = +HAVE_HPUX_IEEE_INTERFACE = +HAVE_IRIX_IEEE_INTERFACE = +HAVE_NETBSD_IEEE_INTERFACE = +HAVE_OPENBSD_IEEE_INTERFACE = +HAVE_OS2EMX_IEEE_INTERFACE = +HAVE_SOLARIS_IEEE_INTERFACE = +HAVE_SUNOS4_IEEE_INTERFACE = +HAVE_TRU64_IEEE_INTERFACE = +INSTALL = /usr/bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = $(install_sh) -c -s +LD = /usr/bin/ld -m elf_x86_64 +LDFLAGS = +LIBM = -lm +LIBOBJS = +LIBS = -lm +LIBTOOL = $(SHELL) $(top_builddir)/libtool +LIPO = +LN_S = ln -s +LTLIBOBJS = +MAINT = # +MAKEINFO = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing makeinfo +MANIFEST_TOOL = : +MKDIR_P = /usr/bin/mkdir -p +NM = /usr/bin/nm -B +NMEDIT = +OBJDUMP = objdump +OBJEXT = o +OTOOL = +OTOOL64 = +PACKAGE = gsl +PACKAGE_BUGREPORT = +PACKAGE_NAME = gsl +PACKAGE_STRING = gsl 2.5 +PACKAGE_TARNAME = gsl +PACKAGE_URL = +PACKAGE_VERSION = 2.5 +PATH_SEPARATOR = : +RANLIB = ranlib +SED = /usr/bin/sed +SET_MAKE = +SHELL = /bin/sh +STRIP = strip +VERSION = 2.5 +abs_builddir = /home/groups/kipac/chto/package/gsl/gsl-2.5/spmatrix +abs_srcdir = /home/groups/kipac/chto/package/gsl/gsl-2.5/spmatrix +abs_top_builddir = /home/groups/kipac/chto/package/gsl/gsl-2.5 +abs_top_srcdir = /home/groups/kipac/chto/package/gsl/gsl-2.5 +ac_ct_AR = ar +ac_ct_CC = gcc +ac_ct_DUMPBIN = +am__include = include +am__leading_dot = . +am__quote = +am__tar = $${TAR-tar} chof - "$$tardir" +am__untar = $${TAR-tar} xf - +bindir = ${exec_prefix}/bin +build = x86_64-unknown-linux-gnu +build_alias = +build_cpu = x86_64 +build_os = linux-gnu +build_vendor = unknown +builddir = . +datadir = ${datarootdir} +datarootdir = ${prefix}/share +docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} +dvidir = ${docdir} +exec_prefix = ${prefix} +host = x86_64-unknown-linux-gnu +host_alias = +host_cpu = x86_64 +host_os = linux-gnu +host_vendor = unknown +htmldir = ${docdir} +includedir = ${prefix}/include +infodir = ${datarootdir}/info +install_sh = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/install-sh +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +localedir = ${datarootdir}/locale +localstatedir = ${prefix}/var +mandir = ${datarootdir}/man +mkdir_p = $(MKDIR_P) +oldincludedir = /usr/include +pdfdir = ${docdir} +prefix = /home/groups/kipac/chto/package/gsl/gsl_lib +program_transform_name = s,x,x, +psdir = ${docdir} +sbindir = ${exec_prefix}/sbin +sharedstatedir = ${prefix}/com +srcdir = . +sysconfdir = ${prefix}/etc +target_alias = +top_build_prefix = ../ +top_builddir = .. +top_srcdir = .. +noinst_LTLIBRARIES = libgslspmatrix.la +pkginclude_HEADERS = gsl_spmatrix.h +libgslspmatrix_la_SOURCES = spcompress.c spcopy.c spgetset.c spio.c spmatrix.c spoper.c spprop.c spswap.c +AM_CPPFLAGS = -I$(top_srcdir) +noinst_HEADERS = avl.c +TESTS = $(check_PROGRAMS) +test_LDADD = libgslspmatrix.la ../spblas/libgslspblas.la ../test/libgsltest.la ../blas/libgslblas.la ../cblas/libgslcblas.la ../matrix/libgslmatrix.la ../vector/libgslvector.la ../block/libgslblock.la ../sys/libgslsys.la ../err/libgslerr.la ../utils/libutils.la ../rng/libgslrng.la +test_SOURCES = test.c +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu spmatrix/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu spmatrix/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: # $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): # $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libgslspmatrix.la: $(libgslspmatrix_la_OBJECTS) $(libgslspmatrix_la_DEPENDENCIES) $(EXTRA_libgslspmatrix_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(libgslspmatrix_la_OBJECTS) $(libgslspmatrix_la_LIBADD) $(LIBS) + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) $(EXTRA_test_DEPENDENCIES) + @rm -f test$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_OBJECTS) $(test_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +include ./$(DEPDIR)/spcompress.Plo +include ./$(DEPDIR)/spcopy.Plo +include ./$(DEPDIR)/spgetset.Plo +include ./$(DEPDIR)/spio.Plo +include ./$(DEPDIR)/spmatrix.Plo +include ./$(DEPDIR)/spoper.Plo +include ./$(DEPDIR)/spprop.Plo +include ./$(DEPDIR)/spswap.Plo +include ./$(DEPDIR)/test.Po + +.c.o: + $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# $(AM_V_CC)source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(COMPILE) -c $< + +.c.obj: + $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# $(AM_V_CC)source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: + $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +# $(AM_V_CC)source='$<' object='$@' libtool=yes \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-pkgincludeHEADERS: $(pkginclude_HEADERS) + @$(NORMAL_INSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \ + done + +uninstall-pkgincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + else \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_PROGRAMS) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +test.log: test$(EXEEXT) + @p='test$(EXEEXT)'; \ + b='test'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +#.test$(EXEEXT).log: +# @p='$<'; \ +# $(am__set_b); \ +# $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +# --log-file $$b.log --trs-file $$b.trs \ +# $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +# "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-am +all-am: Makefile $(LTLIBRARIES) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(pkgincludedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-pkgincludeHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-pkgincludeHEADERS + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES cscopelist-am ctags ctags-am distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-pkgincludeHEADERS \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + recheck tags tags-am uninstall uninstall-am \ + uninstall-pkgincludeHEADERS + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gsl-2.5/spmatrix/Makefile.am b/gsl-2.5/spmatrix/Makefile.am new file mode 100644 index 00000000..5985a1be --- /dev/null +++ b/gsl-2.5/spmatrix/Makefile.am @@ -0,0 +1,17 @@ +noinst_LTLIBRARIES = libgslspmatrix.la + +check_PROGRAMS = test + +pkginclude_HEADERS = gsl_spmatrix.h + +libgslspmatrix_la_SOURCES = spcompress.c spcopy.c spgetset.c spio.c spmatrix.c spoper.c spprop.c spswap.c + +AM_CPPFLAGS = -I$(top_srcdir) + +noinst_HEADERS = avl.c + +TESTS = $(check_PROGRAMS) + +test_LDADD = libgslspmatrix.la ../spblas/libgslspblas.la ../test/libgsltest.la ../blas/libgslblas.la ../cblas/libgslcblas.la ../matrix/libgslmatrix.la ../vector/libgslvector.la ../block/libgslblock.la ../sys/libgslsys.la ../err/libgslerr.la ../utils/libutils.la ../rng/libgslrng.la + +test_SOURCES = test.c diff --git a/gsl-2.5/spmatrix/Makefile.in b/gsl-2.5/spmatrix/Makefile.in new file mode 100644 index 00000000..aae7e501 --- /dev/null +++ b/gsl-2.5/spmatrix/Makefile.in @@ -0,0 +1,1037 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + + +VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +check_PROGRAMS = test$(EXEEXT) +subdir = spmatrix +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp \ + $(noinst_HEADERS) $(pkginclude_HEADERS) \ + $(top_srcdir)/test-driver TODO +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +libgslspmatrix_la_LIBADD = +am_libgslspmatrix_la_OBJECTS = spcompress.lo spcopy.lo spgetset.lo \ + spio.lo spmatrix.lo spoper.lo spprop.lo spswap.lo +libgslspmatrix_la_OBJECTS = $(am_libgslspmatrix_la_OBJECTS) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +am_test_OBJECTS = test.$(OBJEXT) +test_OBJECTS = $(am_test_OBJECTS) +test_DEPENDENCIES = libgslspmatrix.la ../spblas/libgslspblas.la \ + ../test/libgsltest.la ../blas/libgslblas.la \ + ../cblas/libgslcblas.la ../matrix/libgslmatrix.la \ + ../vector/libgslvector.la ../block/libgslblock.la \ + ../sys/libgslsys.la ../err/libgslerr.la ../utils/libutils.la \ + ../rng/libgslrng.la +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libgslspmatrix_la_SOURCES) $(test_SOURCES) +DIST_SOURCES = $(libgslspmatrix_la_SOURCES) $(test_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(pkgincludedir)" +HEADERS = $(noinst_HEADERS) $(pkginclude_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = @EXEEXT@ .test +LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +GSLCBLAS_LDFLAGS = @GSLCBLAS_LDFLAGS@ +GSL_CFLAGS = @GSL_CFLAGS@ +GSL_LDFLAGS = @GSL_LDFLAGS@ +GSL_LIBADD = @GSL_LIBADD@ +GSL_LIBM = @GSL_LIBM@ +GSL_LIBS = @GSL_LIBS@ +GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ +GSL_LT_VERSION = @GSL_LT_VERSION@ +GSL_MAJOR_VERSION = @GSL_MAJOR_VERSION@ +GSL_MINOR_VERSION = @GSL_MINOR_VERSION@ +HAVE_AIX_IEEE_INTERFACE = @HAVE_AIX_IEEE_INTERFACE@ +HAVE_DARWIN86_IEEE_INTERFACE = @HAVE_DARWIN86_IEEE_INTERFACE@ +HAVE_DARWIN_IEEE_INTERFACE = @HAVE_DARWIN_IEEE_INTERFACE@ +HAVE_FREEBSD_IEEE_INTERFACE = @HAVE_FREEBSD_IEEE_INTERFACE@ +HAVE_GNUM68K_IEEE_INTERFACE = @HAVE_GNUM68K_IEEE_INTERFACE@ +HAVE_GNUPPC_IEEE_INTERFACE = @HAVE_GNUPPC_IEEE_INTERFACE@ +HAVE_GNUSPARC_IEEE_INTERFACE = @HAVE_GNUSPARC_IEEE_INTERFACE@ +HAVE_GNUX86_IEEE_INTERFACE = @HAVE_GNUX86_IEEE_INTERFACE@ +HAVE_HPUX11_IEEE_INTERFACE = @HAVE_HPUX11_IEEE_INTERFACE@ +HAVE_HPUX_IEEE_INTERFACE = @HAVE_HPUX_IEEE_INTERFACE@ +HAVE_IRIX_IEEE_INTERFACE = @HAVE_IRIX_IEEE_INTERFACE@ +HAVE_NETBSD_IEEE_INTERFACE = @HAVE_NETBSD_IEEE_INTERFACE@ +HAVE_OPENBSD_IEEE_INTERFACE = @HAVE_OPENBSD_IEEE_INTERFACE@ +HAVE_OS2EMX_IEEE_INTERFACE = @HAVE_OS2EMX_IEEE_INTERFACE@ +HAVE_SOLARIS_IEEE_INTERFACE = @HAVE_SOLARIS_IEEE_INTERFACE@ +HAVE_SUNOS4_IEEE_INTERFACE = @HAVE_SUNOS4_IEEE_INTERFACE@ +HAVE_TRU64_IEEE_INTERFACE = @HAVE_TRU64_IEEE_INTERFACE@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBM = @LIBM@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +noinst_LTLIBRARIES = libgslspmatrix.la +pkginclude_HEADERS = gsl_spmatrix.h +libgslspmatrix_la_SOURCES = spcompress.c spcopy.c spgetset.c spio.c spmatrix.c spoper.c spprop.c spswap.c +AM_CPPFLAGS = -I$(top_srcdir) +noinst_HEADERS = avl.c +TESTS = $(check_PROGRAMS) +test_LDADD = libgslspmatrix.la ../spblas/libgslspblas.la ../test/libgsltest.la ../blas/libgslblas.la ../cblas/libgslcblas.la ../matrix/libgslmatrix.la ../vector/libgslvector.la ../block/libgslblock.la ../sys/libgslsys.la ../err/libgslerr.la ../utils/libutils.la ../rng/libgslrng.la +test_SOURCES = test.c +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu spmatrix/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu spmatrix/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libgslspmatrix.la: $(libgslspmatrix_la_OBJECTS) $(libgslspmatrix_la_DEPENDENCIES) $(EXTRA_libgslspmatrix_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(libgslspmatrix_la_OBJECTS) $(libgslspmatrix_la_LIBADD) $(LIBS) + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) $(EXTRA_test_DEPENDENCIES) + @rm -f test$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_OBJECTS) $(test_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/spcompress.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/spcopy.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/spgetset.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/spio.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/spmatrix.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/spoper.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/spprop.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/spswap.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test.Po@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-pkgincludeHEADERS: $(pkginclude_HEADERS) + @$(NORMAL_INSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \ + done + +uninstall-pkgincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + else \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_PROGRAMS) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +test.log: test$(EXEEXT) + @p='test$(EXEEXT)'; \ + b='test'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +@am__EXEEXT_TRUE@.test$(EXEEXT).log: +@am__EXEEXT_TRUE@ @p='$<'; \ +@am__EXEEXT_TRUE@ $(am__set_b); \ +@am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +@am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ +@am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +@am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-am +all-am: Makefile $(LTLIBRARIES) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(pkgincludedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-pkgincludeHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-pkgincludeHEADERS + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES cscopelist-am ctags ctags-am distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-pkgincludeHEADERS \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + recheck tags tags-am uninstall uninstall-am \ + uninstall-pkgincludeHEADERS + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gsl-2.5/spmatrix/TODO b/gsl-2.5/spmatrix/TODO new file mode 100644 index 00000000..bbae42c3 --- /dev/null +++ b/gsl-2.5/spmatrix/TODO @@ -0,0 +1,2 @@ +1. extend transpose to CCS/CRS (in-place) +2. extend spblas_dgemm to CRS diff --git a/gsl-2.5/spmatrix/avl.c b/gsl-2.5/spmatrix/avl.c new file mode 100644 index 00000000..576c8098 --- /dev/null +++ b/gsl-2.5/spmatrix/avl.c @@ -0,0 +1,611 @@ +/* avl.c + * + * Copyright (C) 1998, 1999, 2000, 2001, 2002, 2004 Free Software + * Foundation, Inc. + * Copyright (C) 2014 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* + * This code is originally from GNU libavl. The memory management + * was slightly modified for use with preallocating GSL sparse matrices + * + * The allocator->libavl_malloc function is called only for creating + * a new avl_node (tree node). This allows GSL to preallocate some number + * of avl_node structs and then return pointers to them while the tree + * is being assembled, avoiding multiple malloc calls + */ + +#include +#include +#include +#include + +/* Function types. */ +typedef int avl_comparison_func (const void *avl_a, const void *avl_b, + void *avl_param); +typedef void avl_item_func (void *avl_item, void *avl_param); +typedef void *avl_copy_func (void *avl_item, void *avl_param); + +/* Memory allocator. */ +struct libavl_allocator + { + void *(*libavl_malloc) (size_t libavl_size, void *param); + void (*libavl_free) (void *libavl_block, void *param); + }; + +/* Default memory allocator. */ +static struct libavl_allocator avl_allocator_default; +static void *avl_malloc (size_t, void *param); +static void avl_free (void *, void *param); + +/* Maximum AVL tree height. */ +#ifndef AVL_MAX_HEIGHT +#define AVL_MAX_HEIGHT 92 +#endif + +/* An AVL tree node. */ +struct avl_node + { + struct avl_node *avl_link[2]; /* Subtrees. */ + void *avl_data; /* Pointer to data. */ + signed char avl_balance; /* Balance factor. */ + }; + +/* Tree data structure. */ +struct avl_table + { + struct avl_node *avl_root; /* Tree's root. */ + avl_comparison_func *avl_compare; /* Comparison function. */ + void *avl_param; /* Extra argument to |avl_compare|. */ + struct libavl_allocator *avl_alloc; /* Memory allocator. */ + size_t avl_count; /* Number of items in tree. */ + unsigned long avl_generation; /* Generation number. */ + }; + +/* Table functions. */ +static struct avl_table *avl_create (avl_comparison_func *, void *, + struct libavl_allocator *); +static struct avl_table *avl_copy (const struct avl_table *, avl_copy_func *, + avl_item_func *, struct libavl_allocator *); +static void avl_empty (struct avl_table *, avl_item_func *); +static void avl_destroy (struct avl_table *, avl_item_func *); +static void **avl_probe (struct avl_table *, void *); +static void *avl_insert (struct avl_table *, void *); +static void *avl_replace (struct avl_table *, void *); +static void *avl_delete (struct avl_table *, const void *); +static void *avl_find (const struct avl_table *, const void *); + +/* Creates and returns a new table + with comparison function |compare| using parameter |param| + and memory allocator |allocator|. + Returns |NULL| if memory allocation failed. */ +static struct avl_table * +avl_create (avl_comparison_func *compare, void *param, + struct libavl_allocator *allocator) +{ + struct avl_table *tree; + + if (allocator == NULL) + allocator = &avl_allocator_default; + + /*tree = allocator->libavl_malloc (allocator, sizeof *tree);*/ + tree = malloc(sizeof *tree); + if (tree == NULL) + return NULL; + + tree->avl_root = NULL; + tree->avl_compare = compare; + tree->avl_param = param; + tree->avl_alloc = allocator; + tree->avl_count = 0; + tree->avl_generation = 0; + + return tree; +} + +/* Search |tree| for an item matching |item|, and return it if found. + Otherwise return |NULL|. */ +static void * +avl_find (const struct avl_table *tree, const void *item) +{ + const struct avl_node *p; + + for (p = tree->avl_root; p != NULL; ) + { + int cmp = tree->avl_compare (item, p->avl_data, tree->avl_param); + + if (cmp < 0) + p = p->avl_link[0]; + else if (cmp > 0) + p = p->avl_link[1]; + else /* |cmp == 0| */ + return p->avl_data; + } + + return NULL; +} + +/* Inserts |item| into |tree| and returns a pointer to |item|'s address. + If a duplicate item is found in the tree, + returns a pointer to the duplicate without inserting |item|. + Returns |NULL| in case of memory allocation failure. */ +static void ** +avl_probe (struct avl_table *tree, void *item) +{ + struct avl_node *y, *z; /* Top node to update balance factor, and parent. */ + struct avl_node *p, *q; /* Iterator, and parent. */ + struct avl_node *n; /* Newly inserted node. */ + struct avl_node *w; /* New root of rebalanced subtree. */ + int dir; /* Direction to descend. */ + + unsigned char da[AVL_MAX_HEIGHT]; /* Cached comparison results. */ + int k = 0; /* Number of cached results. */ + + z = (struct avl_node *) &tree->avl_root; + y = tree->avl_root; + dir = 0; + for (q = z, p = y; p != NULL; q = p, p = p->avl_link[dir]) + { + int cmp = tree->avl_compare (item, p->avl_data, tree->avl_param); + if (cmp == 0) + return &p->avl_data; + + if (p->avl_balance != 0) + z = q, y = p, k = 0; + da[k++] = dir = cmp > 0; + } + + n = q->avl_link[dir] = + tree->avl_alloc->libavl_malloc (sizeof *n, tree->avl_param); + if (n == NULL) + return NULL; + + tree->avl_count++; + n->avl_data = item; + n->avl_link[0] = n->avl_link[1] = NULL; + n->avl_balance = 0; + if (y == NULL) + return &n->avl_data; + + for (p = y, k = 0; p != n; p = p->avl_link[da[k]], k++) + if (da[k] == 0) + p->avl_balance--; + else + p->avl_balance++; + + if (y->avl_balance == -2) + { + struct avl_node *x = y->avl_link[0]; + if (x->avl_balance == -1) + { + w = x; + y->avl_link[0] = x->avl_link[1]; + x->avl_link[1] = y; + x->avl_balance = y->avl_balance = 0; + } + else + { + w = x->avl_link[1]; + x->avl_link[1] = w->avl_link[0]; + w->avl_link[0] = x; + y->avl_link[0] = w->avl_link[1]; + w->avl_link[1] = y; + if (w->avl_balance == -1) + x->avl_balance = 0, y->avl_balance = +1; + else if (w->avl_balance == 0) + x->avl_balance = y->avl_balance = 0; + else /* |w->avl_balance == +1| */ + x->avl_balance = -1, y->avl_balance = 0; + w->avl_balance = 0; + } + } + else if (y->avl_balance == +2) + { + struct avl_node *x = y->avl_link[1]; + if (x->avl_balance == +1) + { + w = x; + y->avl_link[1] = x->avl_link[0]; + x->avl_link[0] = y; + x->avl_balance = y->avl_balance = 0; + } + else + { + w = x->avl_link[0]; + x->avl_link[0] = w->avl_link[1]; + w->avl_link[1] = x; + y->avl_link[1] = w->avl_link[0]; + w->avl_link[0] = y; + if (w->avl_balance == +1) + x->avl_balance = 0, y->avl_balance = -1; + else if (w->avl_balance == 0) + x->avl_balance = y->avl_balance = 0; + else /* |w->avl_balance == -1| */ + x->avl_balance = +1, y->avl_balance = 0; + w->avl_balance = 0; + } + } + else + return &n->avl_data; + z->avl_link[y != z->avl_link[0]] = w; + + tree->avl_generation++; + return &n->avl_data; +} + +/* Inserts |item| into |table|. + Returns |NULL| if |item| was successfully inserted + or if a memory allocation error occurred. + Otherwise, returns the duplicate item. */ +static void * +avl_insert (struct avl_table *table, void *item) +{ + void **p = avl_probe (table, item); + return p == NULL || *p == item ? NULL : *p; +} + +/* Inserts |item| into |table|, replacing any duplicate item. + Returns |NULL| if |item| was inserted without replacing a duplicate, + or if a memory allocation error occurred. + Otherwise, returns the item that was replaced. */ +static void * +avl_replace (struct avl_table *table, void *item) +{ + void **p = avl_probe (table, item); + if (p == NULL || *p == item) + return NULL; + else + { + void *r = *p; + *p = item; + return r; + } +} + +/* Deletes from |tree| and returns an item matching |item|. + Returns a null pointer if no matching item found. */ +static void * +avl_delete (struct avl_table *tree, const void *item) +{ + /* Stack of nodes. */ + struct avl_node *pa[AVL_MAX_HEIGHT]; /* Nodes. */ + unsigned char da[AVL_MAX_HEIGHT]; /* |avl_link[]| indexes. */ + int k; /* Stack pointer. */ + + struct avl_node *p; /* Traverses tree to find node to delete. */ + int cmp; /* Result of comparison between |item| and |p|. */ + + k = 0; + p = (struct avl_node *) &tree->avl_root; + for (cmp = -1; cmp != 0; + cmp = tree->avl_compare (item, p->avl_data, tree->avl_param)) + { + int dir = cmp > 0; + + pa[k] = p; + da[k++] = dir; + + p = p->avl_link[dir]; + if (p == NULL) + return NULL; + } + item = p->avl_data; + + if (p->avl_link[1] == NULL) + pa[k - 1]->avl_link[da[k - 1]] = p->avl_link[0]; + else + { + struct avl_node *r = p->avl_link[1]; + if (r->avl_link[0] == NULL) + { + r->avl_link[0] = p->avl_link[0]; + r->avl_balance = p->avl_balance; + pa[k - 1]->avl_link[da[k - 1]] = r; + da[k] = 1; + pa[k++] = r; + } + else + { + struct avl_node *s; + int j = k++; + + for (;;) + { + da[k] = 0; + pa[k++] = r; + s = r->avl_link[0]; + if (s->avl_link[0] == NULL) + break; + + r = s; + } + + s->avl_link[0] = p->avl_link[0]; + r->avl_link[0] = s->avl_link[1]; + s->avl_link[1] = p->avl_link[1]; + s->avl_balance = p->avl_balance; + + pa[j - 1]->avl_link[da[j - 1]] = s; + da[j] = 1; + pa[j] = s; + } + } + + tree->avl_alloc->libavl_free (p, tree->avl_param); + + while (--k > 0) + { + struct avl_node *y = pa[k]; + + if (da[k] == 0) + { + y->avl_balance++; + if (y->avl_balance == +1) + break; + else if (y->avl_balance == +2) + { + struct avl_node *x = y->avl_link[1]; + if (x->avl_balance == -1) + { + struct avl_node *w; + w = x->avl_link[0]; + x->avl_link[0] = w->avl_link[1]; + w->avl_link[1] = x; + y->avl_link[1] = w->avl_link[0]; + w->avl_link[0] = y; + if (w->avl_balance == +1) + x->avl_balance = 0, y->avl_balance = -1; + else if (w->avl_balance == 0) + x->avl_balance = y->avl_balance = 0; + else /* |w->avl_balance == -1| */ + x->avl_balance = +1, y->avl_balance = 0; + w->avl_balance = 0; + pa[k - 1]->avl_link[da[k - 1]] = w; + } + else + { + y->avl_link[1] = x->avl_link[0]; + x->avl_link[0] = y; + pa[k - 1]->avl_link[da[k - 1]] = x; + if (x->avl_balance == 0) + { + x->avl_balance = -1; + y->avl_balance = +1; + break; + } + else + x->avl_balance = y->avl_balance = 0; + } + } + } + else + { + y->avl_balance--; + if (y->avl_balance == -1) + break; + else if (y->avl_balance == -2) + { + struct avl_node *x = y->avl_link[0]; + if (x->avl_balance == +1) + { + struct avl_node *w; + w = x->avl_link[1]; + x->avl_link[1] = w->avl_link[0]; + w->avl_link[0] = x; + y->avl_link[0] = w->avl_link[1]; + w->avl_link[1] = y; + if (w->avl_balance == -1) + x->avl_balance = 0, y->avl_balance = +1; + else if (w->avl_balance == 0) + x->avl_balance = y->avl_balance = 0; + else /* |w->avl_balance == +1| */ + x->avl_balance = -1, y->avl_balance = 0; + w->avl_balance = 0; + pa[k - 1]->avl_link[da[k - 1]] = w; + } + else + { + y->avl_link[0] = x->avl_link[1]; + x->avl_link[1] = y; + pa[k - 1]->avl_link[da[k - 1]] = x; + if (x->avl_balance == 0) + { + x->avl_balance = +1; + y->avl_balance = -1; + break; + } + else + x->avl_balance = y->avl_balance = 0; + } + } + } + } + + tree->avl_count--; + tree->avl_generation++; + return (void *) item; +} + +/* Destroys |new| with |avl_destroy (new, destroy)|, + first setting right links of nodes in |stack| within |new| + to null pointers to avoid touching uninitialized data. */ +static void +copy_error_recovery (struct avl_node **stack, int height, + struct avl_table *new, avl_item_func *destroy) +{ + for (; height > 2; height -= 2) + stack[height - 1]->avl_link[1] = NULL; + avl_destroy (new, destroy); +} + +/* Copies |org| to a newly created tree, which is returned. + If |copy != NULL|, each data item in |org| is first passed to |copy|, + and the return values are inserted into the tree, + with |NULL| return values taken as indications of failure. + On failure, destroys the partially created new tree, + applying |destroy|, if non-null, to each item in the new tree so far, + and returns |NULL|. + If |allocator != NULL|, it is used for allocation in the new tree. + Otherwise, the same allocator used for |org| is used. */ +static struct avl_table * +avl_copy (const struct avl_table *org, avl_copy_func *copy, + avl_item_func *destroy, struct libavl_allocator *allocator) +{ + struct avl_node *stack[2 * (AVL_MAX_HEIGHT + 1)]; + int height = 0; + + struct avl_table *new; + const struct avl_node *x; + struct avl_node *y; + + new = avl_create (org->avl_compare, org->avl_param, + allocator != NULL ? allocator : org->avl_alloc); + if (new == NULL) + return NULL; + new->avl_count = org->avl_count; + if (new->avl_count == 0) + return new; + + x = (const struct avl_node *) &org->avl_root; + y = (struct avl_node *) &new->avl_root; + for (;;) + { + while (x->avl_link[0] != NULL) + { + y->avl_link[0] = + new->avl_alloc->libavl_malloc (sizeof *y->avl_link[0], + new->avl_param); + if (y->avl_link[0] == NULL) + { + if (y != (struct avl_node *) &new->avl_root) + { + y->avl_data = NULL; + y->avl_link[1] = NULL; + } + + copy_error_recovery (stack, height, new, destroy); + return NULL; + } + + stack[height++] = (struct avl_node *) x; + stack[height++] = y; + x = x->avl_link[0]; + y = y->avl_link[0]; + } + y->avl_link[0] = NULL; + + for (;;) + { + y->avl_balance = x->avl_balance; + if (copy == NULL) + y->avl_data = x->avl_data; + else + { + y->avl_data = copy (x->avl_data, org->avl_param); + if (y->avl_data == NULL) + { + y->avl_link[1] = NULL; + copy_error_recovery (stack, height, new, destroy); + return NULL; + } + } + + if (x->avl_link[1] != NULL) + { + y->avl_link[1] = + new->avl_alloc->libavl_malloc (sizeof *y->avl_link[1], + new->avl_param); + if (y->avl_link[1] == NULL) + { + copy_error_recovery (stack, height, new, destroy); + return NULL; + } + + x = x->avl_link[1]; + y = y->avl_link[1]; + break; + } + else + y->avl_link[1] = NULL; + + if (height <= 2) + return new; + + y = stack[--height]; + x = stack[--height]; + } + } +} + +/* empty tree (delete all nodes) but do not free the tree itself */ +static void +avl_empty (struct avl_table *tree, avl_item_func *destroy) +{ + struct avl_node *p, *q; + + for (p = tree->avl_root; p != NULL; p = q) + if (p->avl_link[0] == NULL) + { + q = p->avl_link[1]; + if (destroy != NULL && p->avl_data != NULL) + destroy (p->avl_data, tree->avl_param); + tree->avl_alloc->libavl_free (p, tree->avl_param); + } + else + { + q = p->avl_link[0]; + p->avl_link[0] = q->avl_link[1]; + q->avl_link[1] = p; + } + + tree->avl_root = NULL; + tree->avl_count = 0; + tree->avl_generation = 0; +} + +/* Frees storage allocated for |tree|. + If |destroy != NULL|, applies it to each data item in inorder. */ +static void +avl_destroy (struct avl_table *tree, avl_item_func *destroy) +{ + avl_empty(tree, destroy); + free(tree); +} + +/* Allocates |size| bytes of space using |malloc()|. + Returns a null pointer if allocation fails. */ +static void * +avl_malloc (size_t size, void *param) +{ + (void)param; /* avoid unused parameter warning */ + return malloc (size); +} + +/* Frees |block|. */ +static void +avl_free (void *block, void *param) +{ + (void)param; /* avoid unused parameter warning */ + free (block); +} + +/* Default memory allocator that uses |malloc()| and |free()|. */ +static struct libavl_allocator avl_allocator_default = + { + avl_malloc, + avl_free + }; diff --git a/gsl-2.5/spmatrix/gsl_spmatrix.h b/gsl-2.5/spmatrix/gsl_spmatrix.h new file mode 100644 index 00000000..a4f949ba --- /dev/null +++ b/gsl-2.5/spmatrix/gsl_spmatrix.h @@ -0,0 +1,184 @@ +/* gsl_spmatrix.h + * + * Copyright (C) 2012-2014 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_SPMATRIX_H__ +#define __GSL_SPMATRIX_H__ + +#include + +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +/* + * Binary tree data structure for storing sparse matrix elements + * in triplet format. This is used for efficiently detecting + * duplicates and element retrieval via gsl_spmatrix_get + */ +typedef struct +{ + void *tree; /* tree structure */ + void *node_array; /* preallocated array of tree nodes */ + size_t n; /* number of tree nodes in use (<= nzmax) */ +} gsl_spmatrix_tree; + +/* + * Triplet format: + * + * If data[n] = A_{ij}, then: + * i = A->i[n] + * j = A->p[n] + * + * Compressed column format (CCS): + * + * If data[n] = A_{ij}, then: + * i = A->i[n] + * A->p[j] <= n < A->p[j+1] + * so that column j is stored in + * [ data[p[j]], data[p[j] + 1], ..., data[p[j+1] - 1] ] + * + * Compressed row format (CRS): + * + * If data[n] = A_{ij}, then: + * j = A->i[n] + * A->p[i] <= n < A->p[i+1] + * so that row i is stored in + * [ data[p[i]], data[p[i] + 1], ..., data[p[i+1] - 1] ] + */ + +typedef struct +{ + size_t size1; /* number of rows */ + size_t size2; /* number of columns */ + + /* i (size nzmax) contains: + * + * Triplet/CCS: row indices + * CRS: column indices + */ + size_t *i; + + double *data; /* matrix elements of size nzmax */ + + /* + * p contains the column indices (triplet) or column pointers (compcol) + * + * triplet: p[n] = column number of element data[n] + * CCS: p[j] = index in data of first non-zero element in column j + * CRS: p[i] = index in data of first non-zero element in row i + */ + size_t *p; + + size_t nzmax; /* maximum number of matrix elements */ + size_t nz; /* number of non-zero values in matrix */ + + gsl_spmatrix_tree *tree_data; /* binary tree for sorting triplet data */ + + /* + * workspace of size MAX(size1,size2)*MAX(sizeof(double),sizeof(size_t)) + * used in various routines + */ + union + { + void *work; + size_t *work_sze; + double *work_dbl; + }; + + size_t sptype; /* sparse storage type */ +} gsl_spmatrix; + +#define GSL_SPMATRIX_TRIPLET (0) +#define GSL_SPMATRIX_CCS (1) +#define GSL_SPMATRIX_CRS (2) + +#define GSL_SPMATRIX_ISTRIPLET(m) ((m)->sptype == GSL_SPMATRIX_TRIPLET) +#define GSL_SPMATRIX_ISCCS(m) ((m)->sptype == GSL_SPMATRIX_CCS) +#define GSL_SPMATRIX_ISCRS(m) ((m)->sptype == GSL_SPMATRIX_CRS) + +/* + * Prototypes + */ + +gsl_spmatrix *gsl_spmatrix_alloc(const size_t n1, const size_t n2); +gsl_spmatrix *gsl_spmatrix_alloc_nzmax(const size_t n1, const size_t n2, + const size_t nzmax, const size_t flags); +void gsl_spmatrix_free(gsl_spmatrix *m); +int gsl_spmatrix_realloc(const size_t nzmax, gsl_spmatrix *m); +int gsl_spmatrix_set_zero(gsl_spmatrix *m); +size_t gsl_spmatrix_nnz(const gsl_spmatrix *m); +int gsl_spmatrix_compare_idx(const size_t ia, const size_t ja, + const size_t ib, const size_t jb); +int gsl_spmatrix_tree_rebuild(gsl_spmatrix * m); + +/* spcopy.c */ +int gsl_spmatrix_memcpy(gsl_spmatrix *dest, const gsl_spmatrix *src); + +/* spgetset.c */ +double gsl_spmatrix_get(const gsl_spmatrix *m, const size_t i, + const size_t j); +int gsl_spmatrix_set(gsl_spmatrix *m, const size_t i, const size_t j, + const double x); +double *gsl_spmatrix_ptr(gsl_spmatrix *m, const size_t i, const size_t j); + +/* spcompress.c */ +gsl_spmatrix *gsl_spmatrix_compcol(const gsl_spmatrix *T); +gsl_spmatrix *gsl_spmatrix_ccs(const gsl_spmatrix *T); +gsl_spmatrix *gsl_spmatrix_crs(const gsl_spmatrix *T); +void gsl_spmatrix_cumsum(const size_t n, size_t *c); + +/* spio.c */ +int gsl_spmatrix_fprintf(FILE *stream, const gsl_spmatrix *m, + const char *format); +gsl_spmatrix * gsl_spmatrix_fscanf(FILE *stream); +int gsl_spmatrix_fwrite(FILE *stream, const gsl_spmatrix *m); +int gsl_spmatrix_fread(FILE *stream, gsl_spmatrix *m); + +/* spoper.c */ +int gsl_spmatrix_scale(gsl_spmatrix *m, const double x); +int gsl_spmatrix_minmax(const gsl_spmatrix *m, double *min_out, + double *max_out); +int gsl_spmatrix_add(gsl_spmatrix *c, const gsl_spmatrix *a, + const gsl_spmatrix *b); +int gsl_spmatrix_d2sp(gsl_spmatrix *S, const gsl_matrix *A); +int gsl_spmatrix_sp2d(gsl_matrix *A, const gsl_spmatrix *S); + +/* spprop.c */ +int gsl_spmatrix_equal(const gsl_spmatrix *a, const gsl_spmatrix *b); + +/* spswap.c */ +int gsl_spmatrix_transpose(gsl_spmatrix * m); +int gsl_spmatrix_transpose2(gsl_spmatrix * m); +int gsl_spmatrix_transpose_memcpy(gsl_spmatrix *dest, const gsl_spmatrix *src); + +__END_DECLS + +#endif /* __GSL_SPMATRIX_H__ */ diff --git a/gsl-2.5/spmatrix/libgslspmatrix.la b/gsl-2.5/spmatrix/libgslspmatrix.la new file mode 100644 index 00000000..4ff25979 --- /dev/null +++ b/gsl-2.5/spmatrix/libgslspmatrix.la @@ -0,0 +1,41 @@ +# libgslspmatrix.la - a libtool library file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='' + +# Names of this library. +library_names='' + +# The name of the static archive. +old_library='libgslspmatrix.a' + +# Linker flags that can not go in dependency_libs. +inherited_linker_flags='' + +# Libraries that this one depends upon. +dependency_libs=' -lm' + +# Names of additional weak libraries provided by this library +weak_library_names='' + +# Version information for libgslspmatrix. +current= +age= +revision= + +# Is this an already installed library? +installed=no + +# Should we warn about portability when linking against -modules? +shouldnotlink=no + +# Files to dlopen/dlpreopen +dlopen='' +dlpreopen='' + +# Directory that this library needs to be installed in: +libdir='' diff --git a/gsl-2.5/spmatrix/spcompress.c b/gsl-2.5/spmatrix/spcompress.c new file mode 100644 index 00000000..a8a28d09 --- /dev/null +++ b/gsl-2.5/spmatrix/spcompress.c @@ -0,0 +1,198 @@ +/* spcompress.c + * + * Copyright (C) 2012-2014, 2016 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include + +/* +gsl_spmatrix_ccs() + Create a sparse matrix in compressed column format + +Inputs: T - sparse matrix in triplet format + +Return: pointer to new matrix (should be freed when finished with it) +*/ + +gsl_spmatrix * +gsl_spmatrix_ccs(const gsl_spmatrix *T) +{ + if (!GSL_SPMATRIX_ISTRIPLET(T)) + { + GSL_ERROR_NULL("matrix must be in triplet format", GSL_EINVAL); + } + else + { + const size_t *Tj; /* column indices of triplet matrix */ + size_t *Cp; /* column pointers of compressed column matrix */ + size_t *w; /* copy of column pointers */ + gsl_spmatrix *m; + size_t n; + + m = gsl_spmatrix_alloc_nzmax(T->size1, T->size2, T->nz, + GSL_SPMATRIX_CCS); + if (!m) + return NULL; + + Tj = T->p; + Cp = m->p; + + /* initialize column pointers to 0 */ + for (n = 0; n < m->size2 + 1; ++n) + Cp[n] = 0; + + /* + * compute the number of elements in each column: + * Cp[j] = # non-zero elements in column j + */ + for (n = 0; n < T->nz; ++n) + Cp[Tj[n]]++; + + /* compute column pointers: p[j] = p[j-1] + nnz[j-1] */ + gsl_spmatrix_cumsum(m->size2, Cp); + + /* make a copy of the column pointers */ + w = m->work_sze; + for (n = 0; n < m->size2; ++n) + w[n] = Cp[n]; + + /* transfer data from triplet format to CCS */ + for (n = 0; n < T->nz; ++n) + { + size_t k = w[Tj[n]]++; + m->i[k] = T->i[n]; + m->data[k] = T->data[n]; + } + + m->nz = T->nz; + + return m; + } +} + +gsl_spmatrix * +gsl_spmatrix_compcol(const gsl_spmatrix *T) +{ + return gsl_spmatrix_ccs(T); +} + +/* +gsl_spmatrix_crs() + Create a sparse matrix in compressed row format + +Inputs: T - sparse matrix in triplet format + +Return: pointer to new matrix (should be freed when finished with it) +*/ + +gsl_spmatrix * +gsl_spmatrix_crs(const gsl_spmatrix *T) +{ + if (!GSL_SPMATRIX_ISTRIPLET(T)) + { + GSL_ERROR_NULL("matrix must be in triplet format", GSL_EINVAL); + } + else + { + const size_t *Ti; /* row indices of triplet matrix */ + size_t *Cp; /* row pointers of compressed row matrix */ + size_t *w; /* copy of column pointers */ + gsl_spmatrix *m; + size_t n; + + m = gsl_spmatrix_alloc_nzmax(T->size1, T->size2, T->nz, + GSL_SPMATRIX_CRS); + if (!m) + return NULL; + + Ti = T->i; + Cp = m->p; + + /* initialize row pointers to 0 */ + for (n = 0; n < m->size1 + 1; ++n) + Cp[n] = 0; + + /* + * compute the number of elements in each row: + * Cp[i] = # non-zero elements in row i + */ + for (n = 0; n < T->nz; ++n) + Cp[Ti[n]]++; + + /* compute row pointers: p[i] = p[i-1] + nnz[i-1] */ + gsl_spmatrix_cumsum(m->size1, Cp); + + /* make a copy of the row pointers */ + w = m->work_sze; + for (n = 0; n < m->size1; ++n) + w[n] = Cp[n]; + + /* transfer data from triplet format to CRS */ + for (n = 0; n < T->nz; ++n) + { + size_t k = w[Ti[n]]++; + m->i[k] = T->p[n]; + m->data[k] = T->data[n]; + } + + m->nz = T->nz; + + return m; + } +} + +/* +gsl_spmatrix_cumsum() + +Compute the cumulative sum: + +p[j] = Sum_{k=0...j-1} c[k] + +0 <= j < n + 1 + +Alternatively, +p[0] = 0 +p[j] = p[j - 1] + c[j - 1] + +Inputs: n - length of input array + c - (input/output) array of size n + 1 + on input, contains the n values c[k] + on output, contains the n + 1 values p[j] + +Return: success or error +*/ + +void +gsl_spmatrix_cumsum(const size_t n, size_t *c) +{ + size_t sum = 0; + size_t k; + + for (k = 0; k < n; ++k) + { + size_t ck = c[k]; + c[k] = sum; + sum += ck; + } + + c[n] = sum; +} /* gsl_spmatrix_cumsum() */ diff --git a/gsl-2.5/spmatrix/spcompress.lo b/gsl-2.5/spmatrix/spcompress.lo new file mode 100644 index 00000000..6f3efd2c --- /dev/null +++ b/gsl-2.5/spmatrix/spcompress.lo @@ -0,0 +1,12 @@ +# spcompress.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/spcompress.o' + +# Name of the non-PIC object +non_pic_object='spcompress.o' + diff --git a/gsl-2.5/spmatrix/spcopy.c b/gsl-2.5/spmatrix/spcopy.c new file mode 100644 index 00000000..b96c21bf --- /dev/null +++ b/gsl-2.5/spmatrix/spcopy.c @@ -0,0 +1,109 @@ +/* spcopy.c + * + * Copyright (C) 2014 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include + +#include "avl.c" + +int +gsl_spmatrix_memcpy(gsl_spmatrix *dest, const gsl_spmatrix *src) +{ + const size_t M = src->size1; + const size_t N = src->size2; + + if (M != dest->size1 || N != dest->size2) + { + GSL_ERROR("matrix sizes are different", GSL_EBADLEN); + } + else if (dest->sptype != src->sptype) + { + GSL_ERROR("cannot copy matrices of different storage formats", + GSL_EINVAL); + } + else + { + int s = GSL_SUCCESS; + size_t n; + + if (dest->nzmax < src->nz) + { + s = gsl_spmatrix_realloc(src->nz, dest); + if (s) + return s; + } + + /* copy indices and data to dest */ + if (GSL_SPMATRIX_ISTRIPLET(src)) + { + void *ptr; + + for (n = 0; n < src->nz; ++n) + { + dest->i[n] = src->i[n]; + dest->p[n] = src->p[n]; + dest->data[n] = src->data[n]; + + /* copy binary tree data */ + ptr = avl_insert(dest->tree_data->tree, &dest->data[n]); + if (ptr != NULL) + { + GSL_ERROR("detected duplicate entry", GSL_EINVAL); + } + } + } + else if (GSL_SPMATRIX_ISCCS(src)) + { + for (n = 0; n < src->nz; ++n) + { + dest->i[n] = src->i[n]; + dest->data[n] = src->data[n]; + } + + for (n = 0; n < src->size2 + 1; ++n) + { + dest->p[n] = src->p[n]; + } + } + else if (GSL_SPMATRIX_ISCRS(src)) + { + for (n = 0; n < src->nz; ++n) + { + dest->i[n] = src->i[n]; + dest->data[n] = src->data[n]; + } + + for (n = 0; n < src->size1 + 1; ++n) + { + dest->p[n] = src->p[n]; + } + } + else + { + GSL_ERROR("invalid matrix type for src", GSL_EINVAL); + } + + dest->nz = src->nz; + + return s; + } +} /* gsl_spmatrix_memcpy() */ diff --git a/gsl-2.5/spmatrix/spcopy.lo b/gsl-2.5/spmatrix/spcopy.lo new file mode 100644 index 00000000..ca941c3e --- /dev/null +++ b/gsl-2.5/spmatrix/spcopy.lo @@ -0,0 +1,12 @@ +# spcopy.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/spcopy.o' + +# Name of the non-PIC object +non_pic_object='spcopy.o' + diff --git a/gsl-2.5/spmatrix/spgetset.c b/gsl-2.5/spmatrix/spgetset.c new file mode 100644 index 00000000..2c5d2ea6 --- /dev/null +++ b/gsl-2.5/spmatrix/spgetset.c @@ -0,0 +1,256 @@ +/* spgetset.c + * + * Copyright (C) 2012 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include + +#include +#include +#include + +#include "avl.c" + +static void *tree_find(const gsl_spmatrix *m, const size_t i, const size_t j); + +double +gsl_spmatrix_get(const gsl_spmatrix *m, const size_t i, const size_t j) +{ + if (i >= m->size1) + { + GSL_ERROR_VAL("first index out of range", GSL_EINVAL, 0.0); + } + else if (j >= m->size2) + { + GSL_ERROR_VAL("second index out of range", GSL_EINVAL, 0.0); + } + else if (m->nz == 0) + { + /* no non-zero elements added to matrix */ + return (0.0); + } + else + { + if (GSL_SPMATRIX_ISTRIPLET(m)) + { + /* traverse binary tree to search for (i,j) element */ + void *ptr = tree_find(m, i, j); + double x = ptr ? *(double *) ptr : 0.0; + + return x; + } + else if (GSL_SPMATRIX_ISCCS(m)) + { + const size_t *mi = m->i; + const size_t *mp = m->p; + size_t p; + + /* loop over column j and search for row index i */ + for (p = mp[j]; p < mp[j + 1]; ++p) + { + if (mi[p] == i) + return m->data[p]; + } + } + else if (GSL_SPMATRIX_ISCRS(m)) + { + const size_t *mj = m->i; + const size_t *mp = m->p; + size_t p; + + /* loop over row i and search for column index j */ + for (p = mp[i]; p < mp[i + 1]; ++p) + { + if (mj[p] == j) + return m->data[p]; + } + } + else + { + GSL_ERROR_VAL("unknown sparse matrix type", GSL_EINVAL, 0.0); + } + + /* element not found; return 0 */ + return 0.0; + } +} /* gsl_spmatrix_get() */ + +/* +gsl_spmatrix_set() + Add an element to a matrix in triplet form + +Inputs: m - spmatrix + i - row index + j - column index + x - matrix value +*/ + +int +gsl_spmatrix_set(gsl_spmatrix *m, const size_t i, const size_t j, + const double x) +{ + if (!GSL_SPMATRIX_ISTRIPLET(m)) + { + GSL_ERROR("matrix not in triplet representation", GSL_EINVAL); + } + else if (x == 0.0) + { + /* traverse binary tree to search for (i,j) element */ + void *ptr = tree_find(m, i, j); + + /* + * just set the data element to 0; it would be easy to + * delete the node from the tree with avl_delete(), but + * we'd also have to delete it from the data arrays which + * is less simple + */ + if (ptr != NULL) + *(double *) ptr = 0.0; + + return GSL_SUCCESS; + } + else + { + int s = GSL_SUCCESS; + void *ptr; + + /* check if matrix needs to be realloced */ + if (m->nz >= m->nzmax) + { + s = gsl_spmatrix_realloc(2 * m->nzmax, m); + if (s) + return s; + } + + /* store the triplet (i, j, x) */ + m->i[m->nz] = i; + m->p[m->nz] = j; + m->data[m->nz] = x; + + ptr = avl_insert(m->tree_data->tree, &m->data[m->nz]); + if (ptr != NULL) + { + /* found duplicate entry (i,j), replace with new x */ + *((double *) ptr) = x; + } + else + { + /* no duplicate (i,j) found, update indices as needed */ + + /* increase matrix dimensions if needed */ + m->size1 = GSL_MAX(m->size1, i + 1); + m->size2 = GSL_MAX(m->size2, j + 1); + + ++(m->nz); + } + + return s; + } +} /* gsl_spmatrix_set() */ + +double * +gsl_spmatrix_ptr(gsl_spmatrix *m, const size_t i, const size_t j) +{ + if (i >= m->size1) + { + GSL_ERROR_NULL("first index out of range", GSL_EINVAL); + } + else if (j >= m->size2) + { + GSL_ERROR_NULL("second index out of range", GSL_EINVAL); + } + else + { + if (GSL_SPMATRIX_ISTRIPLET(m)) + { + /* traverse binary tree to search for (i,j) element */ + void *ptr = tree_find(m, i, j); + return (double *) ptr; + } + else if (GSL_SPMATRIX_ISCCS(m)) + { + const size_t *mi = m->i; + const size_t *mp = m->p; + size_t p; + + /* loop over column j and search for row index i */ + for (p = mp[j]; p < mp[j + 1]; ++p) + { + if (mi[p] == i) + return &(m->data[p]); + } + } + else if (GSL_SPMATRIX_ISCRS(m)) + { + const size_t *mj = m->i; + const size_t *mp = m->p; + size_t p; + + /* loop over row i and search for column index j */ + for (p = mp[i]; p < mp[i + 1]; ++p) + { + if (mj[p] == j) + return &(m->data[p]); + } + } + else + { + GSL_ERROR_NULL("unknown sparse matrix type", GSL_EINVAL); + } + + /* element not found; return 0 */ + return NULL; + } +} /* gsl_spmatrix_ptr() */ + +/* +tree_find() + Find node in tree corresponding to matrix entry (i,j). Adapted +from avl_find() + +Inputs: m - spmatrix + i - row index + j - column index + +Return: pointer to tree node data if found, NULL if not found +*/ + +static void * +tree_find(const gsl_spmatrix *m, const size_t i, const size_t j) +{ + const struct avl_table *tree = (struct avl_table *) m->tree_data->tree; + const struct avl_node *p; + + for (p = tree->avl_root; p != NULL; ) + { + size_t n = (double *) p->avl_data - m->data; + size_t pi = m->i[n]; + size_t pj = m->p[n]; + int cmp = gsl_spmatrix_compare_idx(i, j, pi, pj); + + if (cmp < 0) + p = p->avl_link[0]; + else if (cmp > 0) + p = p->avl_link[1]; + else /* |cmp == 0| */ + return p->avl_data; + } + + return NULL; +} /* tree_find() */ diff --git a/gsl-2.5/spmatrix/spgetset.lo b/gsl-2.5/spmatrix/spgetset.lo new file mode 100644 index 00000000..105dee2c --- /dev/null +++ b/gsl-2.5/spmatrix/spgetset.lo @@ -0,0 +1,12 @@ +# spgetset.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/spgetset.o' + +# Name of the non-PIC object +non_pic_object='spgetset.o' + diff --git a/gsl-2.5/spmatrix/spio.c b/gsl-2.5/spmatrix/spio.c new file mode 100644 index 00000000..a276ec0a --- /dev/null +++ b/gsl-2.5/spmatrix/spio.c @@ -0,0 +1,368 @@ +/* spio.c + * + * Copyright (C) 2016 Patrick Alken + * Copyright (C) 2016 Alexis Tantet + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include + +#include +#include +#include + +/* +gsl_spmatrix_fprintf() + Print sparse matrix to file in MatrixMarket format: + +M N NNZ +I1 J1 A(I1,J1) +... + +Note that indices start at 1 and not 0 +*/ + +int +gsl_spmatrix_fprintf(FILE *stream, const gsl_spmatrix *m, + const char *format) +{ + int status; + + /* print header */ + status = fprintf(stream, "%%%%MatrixMarket matrix coordinate real general\n"); + if (status < 0) + { + GSL_ERROR("fprintf failed for header", GSL_EFAILED); + } + + /* print rows,columns,nnz */ + status = fprintf(stream, "%u\t%u\t%u\n", + (unsigned int) m->size1, + (unsigned int) m->size2, + (unsigned int) m->nz); + if (status < 0) + { + GSL_ERROR("fprintf failed for dimension header", GSL_EFAILED); + } + + if (GSL_SPMATRIX_ISTRIPLET(m)) + { + size_t n; + + for (n = 0; n < m->nz; ++n) + { + status = fprintf(stream, "%u\t%u\t", (unsigned int) m->i[n] + 1, (unsigned int) m->p[n] + 1); + if (status < 0) + { + GSL_ERROR("fprintf failed", GSL_EFAILED); + } + + status = fprintf(stream, format, m->data[n]); + if (status < 0) + { + GSL_ERROR("fprintf failed", GSL_EFAILED); + } + + status = putc('\n', stream); + if (status == EOF) + { + GSL_ERROR("putc failed", GSL_EFAILED); + } + } + } + else if (GSL_SPMATRIX_ISCCS(m)) + { + size_t j, p; + + for (j = 0; j < m->size2; ++j) + { + for (p = m->p[j]; p < m->p[j + 1]; ++p) + { + status = fprintf(stream, "%u\t%u\t", (unsigned int) m->i[p] + 1, (unsigned int) j + 1); + if (status < 0) + { + GSL_ERROR("fprintf failed", GSL_EFAILED); + } + + status = fprintf(stream, format, m->data[p]); + if (status < 0) + { + GSL_ERROR("fprintf failed", GSL_EFAILED); + } + + status = putc('\n', stream); + if (status == EOF) + { + GSL_ERROR("putc failed", GSL_EFAILED); + } + } + } + } + else if (GSL_SPMATRIX_ISCRS(m)) + { + size_t i, p; + + for (i = 0; i < m->size1; ++i) + { + for (p = m->p[i]; p < m->p[i + 1]; ++p) + { + status = fprintf(stream, "%u\t%u\t", (unsigned int) i + 1, (unsigned int) m->i[p] + 1); + if (status < 0) + { + GSL_ERROR("fprintf failed", GSL_EFAILED); + } + + status = fprintf(stream, format, m->data[p]); + if (status < 0) + { + GSL_ERROR("fprintf failed", GSL_EFAILED); + } + + status = putc('\n', stream); + if (status == EOF) + { + GSL_ERROR("putc failed", GSL_EFAILED); + } + } + } + } + else + { + GSL_ERROR("unknown sparse matrix type", GSL_EINVAL); + } + + return GSL_SUCCESS; +} + +gsl_spmatrix * +gsl_spmatrix_fscanf(FILE *stream) +{ + gsl_spmatrix *m; + unsigned int size1, size2, nz; + char buf[1024]; + int found_header = 0; + + /* read file until we find rows,cols,nz header */ + while (fgets(buf, 1024, stream) != NULL) + { + int c; + + /* skip comments */ + if (*buf == '%') + continue; + + c = sscanf(buf, "%u %u %u", + &size1, &size2, &nz); + if (c == 3) + { + found_header = 1; + break; + } + } + + if (!found_header) + { + GSL_ERROR_NULL ("fscanf failed reading header", GSL_EFAILED); + } + + m = gsl_spmatrix_alloc_nzmax((size_t) size1, (size_t) size2, (size_t) nz, GSL_SPMATRIX_TRIPLET); + if (!m) + { + GSL_ERROR_NULL ("error allocating m", GSL_ENOMEM); + } + + { + unsigned int i, j; + double val; + + while (fgets(buf, 1024, stream) != NULL) + { + int c = sscanf(buf, "%u %u %lg", &i, &j, &val); + if (c < 3 || (i == 0) || (j == 0)) + { + GSL_ERROR_NULL ("error in input file format", GSL_EFAILED); + } + else if ((i > size1) || (j > size2)) + { + GSL_ERROR_NULL ("element exceeds matrix dimensions", GSL_EBADLEN); + } + else + { + /* subtract 1 from (i,j) since indexing starts at 1 */ + gsl_spmatrix_set(m, i - 1, j - 1, val); + } + } + } + + return m; +} + +int +gsl_spmatrix_fwrite(FILE *stream, const gsl_spmatrix *m) +{ + size_t items; + + /* write header: size1, size2, nz */ + + items = fwrite(&(m->size1), sizeof(size_t), 1, stream); + if (items != 1) + { + GSL_ERROR("fwrite failed on size1", GSL_EFAILED); + } + + items = fwrite(&(m->size2), sizeof(size_t), 1, stream); + if (items != 1) + { + GSL_ERROR("fwrite failed on size2", GSL_EFAILED); + } + + items = fwrite(&(m->nz), sizeof(size_t), 1, stream); + if (items != 1) + { + GSL_ERROR("fwrite failed on nz", GSL_EFAILED); + } + + /* write m->i and m->data which are size nz in all storage formats */ + + items = fwrite(m->i, sizeof(size_t), m->nz, stream); + if (items != m->nz) + { + GSL_ERROR("fwrite failed on row indices", GSL_EFAILED); + } + + items = fwrite(m->data, sizeof(double), m->nz, stream); + if (items != m->nz) + { + GSL_ERROR("fwrite failed on data", GSL_EFAILED); + } + + if (GSL_SPMATRIX_ISTRIPLET(m)) + { + items = fwrite(m->p, sizeof(size_t), m->nz, stream); + if (items != m->nz) + { + GSL_ERROR("fwrite failed on column indices", GSL_EFAILED); + } + } + else if (GSL_SPMATRIX_ISCCS(m)) + { + items = fwrite(m->p, sizeof(size_t), m->size2 + 1, stream); + if (items != m->size2 + 1) + { + GSL_ERROR("fwrite failed on column indices", GSL_EFAILED); + } + } + else if (GSL_SPMATRIX_ISCRS(m)) + { + items = fwrite(m->p, sizeof(size_t), m->size1 + 1, stream); + if (items != m->size1 + 1) + { + GSL_ERROR("fwrite failed on column indices", GSL_EFAILED); + } + } + + return GSL_SUCCESS; +} + +int +gsl_spmatrix_fread(FILE *stream, gsl_spmatrix *m) +{ + size_t size1, size2, nz; + size_t items; + + /* read header: size1, size2, nz */ + + items = fread(&size1, sizeof(size_t), 1, stream); + if (items != 1) + { + GSL_ERROR("fread failed on size1", GSL_EFAILED); + } + + items = fread(&size2, sizeof(size_t), 1, stream); + if (items != 1) + { + GSL_ERROR("fread failed on size2", GSL_EFAILED); + } + + items = fread(&nz, sizeof(size_t), 1, stream); + if (items != 1) + { + GSL_ERROR("fread failed on nz", GSL_EFAILED); + } + + if (m->size1 != size1) + { + GSL_ERROR("matrix has wrong size1", GSL_EBADLEN); + } + else if (m->size2 != size2) + { + GSL_ERROR("matrix has wrong size2", GSL_EBADLEN); + } + else if (nz > m->nzmax) + { + GSL_ERROR("matrix nzmax is too small", GSL_EBADLEN); + } + else + { + /* read m->i and m->data arrays, which are size nz for all formats */ + + items = fread(m->i, sizeof(size_t), nz, stream); + if (items != nz) + { + GSL_ERROR("fread failed on row indices", GSL_EFAILED); + } + + items = fread(m->data, sizeof(double), nz, stream); + if (items != nz) + { + GSL_ERROR("fread failed on data", GSL_EFAILED); + } + + m->nz = nz; + + if (GSL_SPMATRIX_ISTRIPLET(m)) + { + items = fread(m->p, sizeof(size_t), nz, stream); + if (items != nz) + { + GSL_ERROR("fread failed on column indices", GSL_EFAILED); + } + + /* build binary search tree for m */ + gsl_spmatrix_tree_rebuild(m); + } + else if (GSL_SPMATRIX_ISCCS(m)) + { + items = fread(m->p, sizeof(size_t), size2 + 1, stream); + if (items != size2 + 1) + { + GSL_ERROR("fread failed on row pointers", GSL_EFAILED); + } + } + else if (GSL_SPMATRIX_ISCRS(m)) + { + items = fread(m->p, sizeof(size_t), size1 + 1, stream); + if (items != size1 + 1) + { + GSL_ERROR("fread failed on column pointers", GSL_EFAILED); + } + } + } + + return GSL_SUCCESS; +} diff --git a/gsl-2.5/spmatrix/spio.lo b/gsl-2.5/spmatrix/spio.lo new file mode 100644 index 00000000..b4e1d0df --- /dev/null +++ b/gsl-2.5/spmatrix/spio.lo @@ -0,0 +1,12 @@ +# spio.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/spio.o' + +# Name of the non-PIC object +non_pic_object='spio.o' + diff --git a/gsl-2.5/spmatrix/spmatrix.c b/gsl-2.5/spmatrix/spmatrix.c new file mode 100644 index 00000000..02ecaa95 --- /dev/null +++ b/gsl-2.5/spmatrix/spmatrix.c @@ -0,0 +1,489 @@ +/* spmatrix.c + * + * Copyright (C) 2012 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include + +#include +#include +#include + +#include "avl.c" + +static int compare_triplet(const void *pa, const void *pb, void *param); +static void *avl_spmalloc (size_t size, void *param); +static void avl_spfree (void *block, void *param); + +static struct libavl_allocator avl_allocator_spmatrix = +{ + avl_spmalloc, + avl_spfree +}; + +/* +gsl_spmatrix_alloc() + Allocate a sparse matrix in triplet representation + +Inputs: n1 - number of rows + n2 - number of columns + +Notes: if (n1,n2) are not known at allocation time, they can each be +set to 1, and they will be expanded as elements are added to the matrix +*/ + +gsl_spmatrix * +gsl_spmatrix_alloc(const size_t n1, const size_t n2) +{ + const double density = 0.1; /* estimate */ + size_t nzmax = (size_t) floor(n1 * n2 * density); + + if (nzmax == 0) + nzmax = 10; + + return gsl_spmatrix_alloc_nzmax(n1, n2, nzmax, GSL_SPMATRIX_TRIPLET); +} /* gsl_spmatrix_alloc() */ + +/* +gsl_spmatrix_alloc_nzmax() + Allocate a sparse matrix with given nzmax + +Inputs: n1 - number of rows + n2 - number of columns + nzmax - maximum number of matrix elements + sptype - type of matrix (triplet, CCS, CRS) + +Notes: if (n1,n2) are not known at allocation time, they can each be +set to 1, and they will be expanded as elements are added to the matrix +*/ + +gsl_spmatrix * +gsl_spmatrix_alloc_nzmax(const size_t n1, const size_t n2, + const size_t nzmax, const size_t sptype) +{ + gsl_spmatrix *m; + + if (n1 == 0) + { + GSL_ERROR_NULL ("matrix dimension n1 must be positive integer", + GSL_EINVAL); + } + else if (n2 == 0) + { + GSL_ERROR_NULL ("matrix dimension n2 must be positive integer", + GSL_EINVAL); + } + + m = calloc(1, sizeof(gsl_spmatrix)); + if (!m) + { + GSL_ERROR_NULL("failed to allocate space for spmatrix struct", + GSL_ENOMEM); + } + + m->size1 = n1; + m->size2 = n2; + m->nz = 0; + m->nzmax = GSL_MAX(nzmax, 1); + m->sptype = sptype; + + m->i = malloc(m->nzmax * sizeof(size_t)); + if (!m->i) + { + gsl_spmatrix_free(m); + GSL_ERROR_NULL("failed to allocate space for row indices", + GSL_ENOMEM); + } + + if (sptype == GSL_SPMATRIX_TRIPLET) + { + m->tree_data = malloc(sizeof(gsl_spmatrix_tree)); + if (!m->tree_data) + { + gsl_spmatrix_free(m); + GSL_ERROR_NULL("failed to allocate space for AVL tree struct", + GSL_ENOMEM); + } + + m->tree_data->n = 0; + + /* allocate tree data structure */ + m->tree_data->tree = avl_create(compare_triplet, (void *) m, + &avl_allocator_spmatrix); + if (!m->tree_data->tree) + { + gsl_spmatrix_free(m); + GSL_ERROR_NULL("failed to allocate space for AVL tree", + GSL_ENOMEM); + } + + /* preallocate nzmax tree nodes */ + m->tree_data->node_array = malloc(m->nzmax * sizeof(struct avl_node)); + if (!m->tree_data->node_array) + { + gsl_spmatrix_free(m); + GSL_ERROR_NULL("failed to allocate space for AVL tree nodes", + GSL_ENOMEM); + } + + m->p = malloc(m->nzmax * sizeof(size_t)); + if (!m->p) + { + gsl_spmatrix_free(m); + GSL_ERROR_NULL("failed to allocate space for column indices", + GSL_ENOMEM); + } + } + else if (sptype == GSL_SPMATRIX_CCS) + { + m->p = malloc((n2 + 1) * sizeof(size_t)); + m->work = malloc(GSL_MAX(n1, n2) * + GSL_MAX(sizeof(size_t), sizeof(double))); + if (!m->p || !m->work) + { + gsl_spmatrix_free(m); + GSL_ERROR_NULL("failed to allocate space for column pointers", + GSL_ENOMEM); + } + } + else if (sptype == GSL_SPMATRIX_CRS) + { + m->p = malloc((n1 + 1) * sizeof(size_t)); + m->work = malloc(GSL_MAX(n1, n2) * + GSL_MAX(sizeof(size_t), sizeof(double))); + if (!m->p || !m->work) + { + gsl_spmatrix_free(m); + GSL_ERROR_NULL("failed to allocate space for row pointers", + GSL_ENOMEM); + } + } + + m->data = malloc(m->nzmax * sizeof(double)); + if (!m->data) + { + gsl_spmatrix_free(m); + GSL_ERROR_NULL("failed to allocate space for data", + GSL_ENOMEM); + } + + return m; +} /* gsl_spmatrix_alloc_nzmax() */ + +/* +gsl_spmatrix_free() + Free sparse matrix object +*/ + +void +gsl_spmatrix_free(gsl_spmatrix *m) +{ + if (m->i) + free(m->i); + + if (m->p) + free(m->p); + + if (m->data) + free(m->data); + + if (m->work) + free(m->work); + + if (m->tree_data) + { + if (m->tree_data->tree) + avl_destroy(m->tree_data->tree, NULL); + + if (m->tree_data->node_array) + free(m->tree_data->node_array); + + free(m->tree_data); + } + + free(m); +} /* gsl_spmatrix_free() */ + +/* +gsl_spmatrix_realloc() + As elements are added to the sparse matrix, its possible that they +will exceed the previously specified nzmax - reallocate the matrix +with a new nzmax +*/ + +int +gsl_spmatrix_realloc(const size_t nzmax, gsl_spmatrix *m) +{ + int s = GSL_SUCCESS; + void *ptr; + + if (nzmax < m->nz) + { + GSL_ERROR("new nzmax is less than current nz", GSL_EINVAL); + } + + ptr = realloc(m->i, nzmax * sizeof(size_t)); + if (!ptr) + { + GSL_ERROR("failed to allocate space for row indices", GSL_ENOMEM); + } + + m->i = (size_t *) ptr; + + if (GSL_SPMATRIX_ISTRIPLET(m)) + { + ptr = realloc(m->p, nzmax * sizeof(size_t)); + if (!ptr) + { + GSL_ERROR("failed to allocate space for column indices", GSL_ENOMEM); + } + + m->p = (size_t *) ptr; + } + + ptr = realloc(m->data, nzmax * sizeof(double)); + if (!ptr) + { + GSL_ERROR("failed to allocate space for data", GSL_ENOMEM); + } + + m->data = (double *) ptr; + + /* rebuild binary tree */ + if (GSL_SPMATRIX_ISTRIPLET(m)) + { + size_t n; + + /* reset tree to empty state, but don't free root tree ptr */ + avl_empty(m->tree_data->tree, NULL); + m->tree_data->n = 0; + + ptr = realloc(m->tree_data->node_array, nzmax * sizeof(struct avl_node)); + if (!ptr) + { + GSL_ERROR("failed to allocate space for AVL tree nodes", GSL_ENOMEM); + } + + m->tree_data->node_array = ptr; + + /* + * need to reinsert all tree elements since the m->data addresses + * have changed + */ + for (n = 0; n < m->nz; ++n) + { + ptr = avl_insert(m->tree_data->tree, &m->data[n]); + if (ptr != NULL) + { + GSL_ERROR("detected duplicate entry", GSL_EINVAL); + } + } + } + + /* update to new nzmax */ + m->nzmax = nzmax; + + return s; +} /* gsl_spmatrix_realloc() */ + +int +gsl_spmatrix_set_zero(gsl_spmatrix *m) +{ + m->nz = 0; + + if (GSL_SPMATRIX_ISTRIPLET(m)) + { + /* reset tree to empty state and node index pointer to 0 */ + avl_empty(m->tree_data->tree, NULL); + m->tree_data->n = 0; + } + + return GSL_SUCCESS; +} /* gsl_spmatrix_set_zero() */ + +size_t +gsl_spmatrix_nnz(const gsl_spmatrix *m) +{ + return m->nz; +} /* gsl_spmatrix_nnz() */ + +/* +gsl_spmatrix_compare_idx() + Comparison function for searching binary tree in triplet +representation. + +To detect duplicate elements in the tree, we want to determine +if there already exists an entry for (i,j) in the tree. Since +the actual tree node stores only the data elements data[n], +we will do pointer arithmetic to get from the given data[n] +to the row/column indices i[n] and j[n]. + +This compare function will sort the tree first by row i, +and for equal rows, it will then sort by column j + +Inputs: ia - row index of element a + ja - column index of element a + ib - row index of element b + jb - column index of element b + +Return: + -1 if pa < pb: (ia,ja) < (ib,jb) + +1 if pa > pb: (ia,ja) > (ib,jb) + 0 if pa = pb: (ia,ja) == (ib,jb) +*/ + +int +gsl_spmatrix_compare_idx(const size_t ia, const size_t ja, + const size_t ib, const size_t jb) +{ + if (ia < ib) + return -1; + else if (ia > ib) + return 1; + else + { + /* row indices are equal, sort by column index */ + if (ja < jb) + return -1; + else if (ja > jb) + return 1; + else + return 0; /* row and column indices are equal */ + } +} + +/* +gsl_spmatrix_tree_rebuild() + When reading a triplet matrix from disk, or when +copying a triplet matrix, it is necessary to rebuild the +binary tree for element searches. + +Inputs: m - triplet matrix +*/ + +int +gsl_spmatrix_tree_rebuild(gsl_spmatrix * m) +{ + if (!GSL_SPMATRIX_ISTRIPLET(m)) + { + GSL_ERROR("m must be in triplet format", GSL_EINVAL); + } + else + { + size_t n; + + /* reset tree to empty state, but don't free root tree ptr */ + avl_empty(m->tree_data->tree, NULL); + m->tree_data->n = 0; + + /* insert all tree elements */ + for (n = 0; n < m->nz; ++n) + { + void *ptr = avl_insert(m->tree_data->tree, &m->data[n]); + if (ptr != NULL) + { + GSL_ERROR("detected duplicate entry", GSL_EINVAL); + } + } + + return GSL_SUCCESS; + } +} + +/* +compare_triplet() + Comparison function for searching binary tree in triplet +representation. + +To detect duplicate elements in the tree, we want to determine +if there already exists an entry for (i,j) in the tree. Since +the actual tree node stores only the data elements data[n], +we will do pointer arithmetic to get from the given data[n] +to the row/column indices i[n] and j[n]. + +This compare function will sort the tree first by row i, +and for equal rows, it will then sort by column j + +Inputs: pa - element 1 for comparison (double *) + pb - element 2 for comparison (double *) + param - parameter (gsl_spmatrix) + +Return: + -1 if pa < pb: (ia,ja) < (ib,jb) + +1 if pa > pb: (ia,ja) > (ib,jb) + 0 if pa = pb: (ia,ja) == (ib,jb) +*/ + +static int +compare_triplet(const void *pa, const void *pb, void *param) +{ + gsl_spmatrix *m = (gsl_spmatrix *) param; + + /* pointer arithmetic to find indices in data array */ + const size_t idxa = (const double *) pa - m->data; + const size_t idxb = (const double *) pb - m->data; + + return gsl_spmatrix_compare_idx(m->i[idxa], m->p[idxa], + m->i[idxb], m->p[idxb]); +} /* compare_triplet() */ + +static void * +avl_spmalloc (size_t size, void *param) +{ + gsl_spmatrix *m = (gsl_spmatrix *) param; + + if (size != sizeof(struct avl_node)) + { + GSL_ERROR_NULL("attemping to allocate incorrect node size", GSL_EBADLEN); + } + + /* + * return the next available avl_node slot; index + * m->tree_data->n keeps track of next open slot + */ + if (m->tree_data->n < m->nzmax) + { + /* cast to char* for pointer arithmetic */ + unsigned char *node_ptr = (unsigned char *) m->tree_data->node_array; + + /* offset in bytes for next node slot */ + size_t offset = (m->tree_data->n)++ * sizeof(struct avl_node); + + return node_ptr + offset; + } + else + { + /* + * we should never get here - gsl_spmatrix_realloc() should + * be called before exceeding nzmax nodes + */ + GSL_ERROR_NULL("attemping to allocate tree node past nzmax", GSL_EINVAL); + } +} + +static void +avl_spfree (void *block, void *param) +{ + (void)block; + (void)param; + /* + * do nothing - instead of allocating/freeing individual nodes, + * we malloc and free nzmax nodes at a time + */ +} diff --git a/gsl-2.5/spmatrix/spmatrix.lo b/gsl-2.5/spmatrix/spmatrix.lo new file mode 100644 index 00000000..029dcd56 --- /dev/null +++ b/gsl-2.5/spmatrix/spmatrix.lo @@ -0,0 +1,12 @@ +# spmatrix.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/spmatrix.o' + +# Name of the non-PIC object +non_pic_object='spmatrix.o' + diff --git a/gsl-2.5/spmatrix/spoper.c b/gsl-2.5/spmatrix/spoper.c new file mode 100644 index 00000000..294f99bd --- /dev/null +++ b/gsl-2.5/spmatrix/spoper.c @@ -0,0 +1,234 @@ +/* spoper.c + * + * Copyright (C) 2012 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include + +#include +#include +#include +#include +#include + +int +gsl_spmatrix_scale(gsl_spmatrix *m, const double x) +{ + size_t i; + + for (i = 0; i < m->nz; ++i) + m->data[i] *= x; + + return GSL_SUCCESS; +} /* gsl_spmatrix_scale() */ + +int +gsl_spmatrix_minmax(const gsl_spmatrix *m, double *min_out, double *max_out) +{ + double min, max; + size_t n; + + if (m->nz == 0) + { + GSL_ERROR("matrix is empty", GSL_EINVAL); + } + + min = m->data[0]; + max = m->data[0]; + + for (n = 1; n < m->nz; ++n) + { + double x = m->data[n]; + + if (x < min) + min = x; + + if (x > max) + max = x; + } + + *min_out = min; + *max_out = max; + + return GSL_SUCCESS; +} /* gsl_spmatrix_minmax() */ + +/* +gsl_spmatrix_add() + Add two sparse matrices + +Inputs: c - (output) a + b + a - (input) sparse matrix + b - (input) sparse matrix + +Return: success or error +*/ + +int +gsl_spmatrix_add(gsl_spmatrix *c, const gsl_spmatrix *a, + const gsl_spmatrix *b) +{ + const size_t M = a->size1; + const size_t N = a->size2; + + if (b->size1 != M || b->size2 != N || c->size1 != M || c->size2 != N) + { + GSL_ERROR("matrices must have same dimensions", GSL_EBADLEN); + } + else if (a->sptype != b->sptype || a->sptype != c->sptype) + { + GSL_ERROR("matrices must have same sparse storage format", + GSL_EINVAL); + } + else if (GSL_SPMATRIX_ISTRIPLET(a)) + { + GSL_ERROR("triplet format not yet supported", GSL_EINVAL); + } + else + { + int status = GSL_SUCCESS; + size_t *w = a->work_sze; + double *x = c->work_dbl; + size_t *Cp, *Ci; + double *Cd; + size_t j, p; + size_t nz = 0; /* number of non-zeros in c */ + size_t inner_size, outer_size; + + if (GSL_SPMATRIX_ISCCS(a)) + { + inner_size = M; + outer_size = N; + } + else if (GSL_SPMATRIX_ISCRS(a)) + { + inner_size = N; + outer_size = M; + } + else + { + GSL_ERROR("unknown sparse matrix type", GSL_EINVAL); + } + + if (c->nzmax < a->nz + b->nz) + { + status = gsl_spmatrix_realloc(a->nz + b->nz, c); + if (status) + return status; + } + + /* initialize w = 0 */ + for (j = 0; j < inner_size; ++j) + w[j] = 0; + + Ci = c->i; + Cp = c->p; + Cd = c->data; + + for (j = 0; j < outer_size; ++j) + { + Cp[j] = nz; + + /* CCS: x += A(:,j); CRS: x += A(j,:) */ + nz = gsl_spblas_scatter(a, j, 1.0, w, x, j + 1, c, nz); + + /* CCS: x += B(:,j); CRS: x += B(j,:) */ + nz = gsl_spblas_scatter(b, j, 1.0, w, x, j + 1, c, nz); + + for (p = Cp[j]; p < nz; ++p) + Cd[p] = x[Ci[p]]; + } + + /* finalize last column of c */ + Cp[j] = nz; + c->nz = nz; + + return status; + } +} /* gsl_spmatrix_add() */ + +/* +gsl_spmatrix_d2sp() + Convert a dense gsl_matrix to sparse (triplet) format + +Inputs: S - (output) sparse matrix in triplet format + A - (input) dense matrix to convert +*/ + +int +gsl_spmatrix_d2sp(gsl_spmatrix *S, const gsl_matrix *A) +{ + int s = GSL_SUCCESS; + size_t i, j; + + gsl_spmatrix_set_zero(S); + S->size1 = A->size1; + S->size2 = A->size2; + + for (i = 0; i < A->size1; ++i) + { + for (j = 0; j < A->size2; ++j) + { + double x = gsl_matrix_get(A, i, j); + + if (x != 0.0) + gsl_spmatrix_set(S, i, j, x); + } + } + + return s; +} /* gsl_spmatrix_d2sp() */ + +/* +gsl_spmatrix_sp2d() + Convert a sparse matrix to dense format +*/ + +int +gsl_spmatrix_sp2d(gsl_matrix *A, const gsl_spmatrix *S) +{ + if (A->size1 != S->size1 || A->size2 != S->size2) + { + GSL_ERROR("matrix sizes do not match", GSL_EBADLEN); + } + else + { + gsl_matrix_set_zero(A); + + if (GSL_SPMATRIX_ISTRIPLET(S)) + { + size_t n; + + for (n = 0; n < S->nz; ++n) + { + size_t i = S->i[n]; + size_t j = S->p[n]; + double x = S->data[n]; + + gsl_matrix_set(A, i, j, x); + } + } + else + { + GSL_ERROR("non-triplet formats not yet supported", GSL_EINVAL); + } + + return GSL_SUCCESS; + } +} /* gsl_spmatrix_sp2d() */ diff --git a/gsl-2.5/spmatrix/spoper.lo b/gsl-2.5/spmatrix/spoper.lo new file mode 100644 index 00000000..9c03e896 --- /dev/null +++ b/gsl-2.5/spmatrix/spoper.lo @@ -0,0 +1,12 @@ +# spoper.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/spoper.o' + +# Name of the non-PIC object +non_pic_object='spoper.o' + diff --git a/gsl-2.5/spmatrix/spprop.c b/gsl-2.5/spmatrix/spprop.c new file mode 100644 index 00000000..50419a38 --- /dev/null +++ b/gsl-2.5/spmatrix/spprop.c @@ -0,0 +1,116 @@ +/* spprop.c + * + * Copyright (C) 2014 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include + +#include +#include + +/* +gsl_spmatrix_equal() + Return 1 if a = b, 0 otherwise +*/ + +int +gsl_spmatrix_equal(const gsl_spmatrix *a, const gsl_spmatrix *b) +{ + const size_t M = a->size1; + const size_t N = a->size2; + + if (b->size1 != M || b->size2 != N) + { + GSL_ERROR_VAL("matrices must have same dimensions", GSL_EBADLEN, 0); + } + else if (a->sptype != b->sptype) + { + GSL_ERROR_VAL("trying to compare different sparse matrix types", GSL_EINVAL, 0); + } + else + { + const size_t nz = a->nz; + size_t n; + + if (nz != b->nz) + return 0; /* different number of non-zero elements */ + + if (GSL_SPMATRIX_ISTRIPLET(a)) + { + /* + * triplet formats could be out of order but identical, so use + * gsl_spmatrix_get() on b for each aij + */ + for (n = 0; n < nz; ++n) + { + double bij = gsl_spmatrix_get(b, a->i[n], a->p[n]); + + if (a->data[n] != bij) + return 0; + } + } + else if (GSL_SPMATRIX_ISCCS(a)) + { + /* + * for CCS, both matrices should have everything + * in the same order + */ + + /* check row indices and data */ + for (n = 0; n < nz; ++n) + { + if ((a->i[n] != b->i[n]) || (a->data[n] != b->data[n])) + return 0; + } + + /* check column pointers */ + for (n = 0; n < a->size2 + 1; ++n) + { + if (a->p[n] != b->p[n]) + return 0; + } + } + else if (GSL_SPMATRIX_ISCRS(a)) + { + /* + * for CRS, both matrices should have everything + * in the same order + */ + + /* check column indices and data */ + for (n = 0; n < nz; ++n) + { + if ((a->i[n] != b->i[n]) || (a->data[n] != b->data[n])) + return 0; + } + + /* check row pointers */ + for (n = 0; n < a->size1 + 1; ++n) + { + if (a->p[n] != b->p[n]) + return 0; + } + } + else + { + GSL_ERROR_VAL("unknown sparse matrix type", GSL_EINVAL, 0); + } + + return 1; + } +} /* gsl_spmatrix_equal() */ diff --git a/gsl-2.5/spmatrix/spprop.lo b/gsl-2.5/spmatrix/spprop.lo new file mode 100644 index 00000000..e0373174 --- /dev/null +++ b/gsl-2.5/spmatrix/spprop.lo @@ -0,0 +1,12 @@ +# spprop.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/spprop.o' + +# Name of the non-PIC object +non_pic_object='spprop.o' + diff --git a/gsl-2.5/spmatrix/spswap.c b/gsl-2.5/spmatrix/spswap.c new file mode 100644 index 00000000..98868a6a --- /dev/null +++ b/gsl-2.5/spmatrix/spswap.c @@ -0,0 +1,243 @@ +/* spswap.c + * + * Copyright (C) 2014 Patrick Alken + * Copyright (C) 2016 Alexis Tantet + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include + +#include +#include +#include +#include + +#include "avl.c" + +/* +gsl_spmatrix_transpose() + Replace the sparse matrix src by its transpose, +keeping the matrix in the same storage format + +Inputs: A - (input/output) sparse matrix to transpose. +*/ + +int +gsl_spmatrix_transpose(gsl_spmatrix * m) +{ + if (GSL_SPMATRIX_ISTRIPLET(m)) + { + size_t n; + + /* swap row/column indices */ + for (n = 0; n < m->nz; ++n) + { + size_t tmp = m->p[n]; + m->p[n] = m->i[n]; + m->i[n] = tmp; + } + + /* need to rebuild AVL tree, or element searches won't + * work correctly with transposed indices */ + gsl_spmatrix_tree_rebuild(m); + } + else + { + GSL_ERROR("unknown sparse matrix type", GSL_EINVAL); + } + + /* swap dimensions */ + if (m->size1 != m->size2) + { + size_t tmp = m->size1; + m->size1 = m->size2; + m->size2 = tmp; + } + + return GSL_SUCCESS; +} + +/* +gsl_spmatrix_transpose2() + Replace the sparse matrix src by its transpose either by + swapping its row and column indices if it is in triplet storage, + or by switching its major if it is in compressed storage. + +Inputs: A - (input/output) sparse matrix to transpose. +*/ + +int +gsl_spmatrix_transpose2(gsl_spmatrix * m) +{ + if (GSL_SPMATRIX_ISTRIPLET(m)) + { + return gsl_spmatrix_transpose(m); + } + else if (GSL_SPMATRIX_ISCCS(m)) + { + m->sptype = GSL_SPMATRIX_CRS; + } + else if (GSL_SPMATRIX_ISCRS(m)) + { + m->sptype = GSL_SPMATRIX_CCS; + } + else + { + GSL_ERROR("unknown sparse matrix type", GSL_EINVAL); + } + + /* swap dimensions */ + if (m->size1 != m->size2) + { + size_t tmp = m->size1; + m->size1 = m->size2; + m->size2 = tmp; + } + + return GSL_SUCCESS; +} + +int +gsl_spmatrix_transpose_memcpy(gsl_spmatrix *dest, const gsl_spmatrix *src) +{ + const size_t M = src->size1; + const size_t N = src->size2; + + if (M != dest->size2 || N != dest->size1) + { + GSL_ERROR("dimensions of dest must be transpose of src matrix", + GSL_EBADLEN); + } + else if (dest->sptype != src->sptype) + { + GSL_ERROR("cannot copy matrices of different storage formats", + GSL_EINVAL); + } + else + { + int s = GSL_SUCCESS; + const size_t nz = src->nz; + + if (dest->nzmax < src->nz) + { + s = gsl_spmatrix_realloc(src->nz, dest); + if (s) + return s; + } + + if (GSL_SPMATRIX_ISTRIPLET(src)) + { + size_t n; + void *ptr; + + for (n = 0; n < nz; ++n) + { + dest->i[n] = src->p[n]; + dest->p[n] = src->i[n]; + dest->data[n] = src->data[n]; + + /* copy binary tree data */ + ptr = avl_insert(dest->tree_data->tree, &dest->data[n]); + if (ptr != NULL) + { + GSL_ERROR("detected duplicate entry", GSL_EINVAL); + } + } + } + else if (GSL_SPMATRIX_ISCCS(src)) + { + size_t *Ai = src->i; + size_t *Ap = src->p; + double *Ad = src->data; + size_t *ATi = dest->i; + size_t *ATp = dest->p; + double *ATd = dest->data; + size_t *w = dest->work_sze; + size_t p, j; + + /* initialize to 0 */ + for (p = 0; p < M + 1; ++p) + ATp[p] = 0; + + /* compute row counts of A (= column counts for A^T) */ + for (p = 0; p < nz; ++p) + ATp[Ai[p]]++; + + /* compute row pointers for A (= column pointers for A^T) */ + gsl_spmatrix_cumsum(M, ATp); + + /* make copy of row pointers */ + for (j = 0; j < M; ++j) + w[j] = ATp[j]; + + for (j = 0; j < N; ++j) + { + for (p = Ap[j]; p < Ap[j + 1]; ++p) + { + size_t k = w[Ai[p]]++; + ATi[k] = j; + ATd[k] = Ad[p]; + } + } + } + else if (GSL_SPMATRIX_ISCRS(src)) + { + size_t *Aj = src->i; + size_t *Ap = src->p; + double *Ad = src->data; + size_t *ATj = dest->i; + size_t *ATp = dest->p; + double *ATd = dest->data; + size_t *w = dest->work_sze; + size_t p, i; + + /* initialize to 0 */ + for (p = 0; p < N + 1; ++p) + ATp[p] = 0; + + /* compute column counts of A (= row counts for A^T) */ + for (p = 0; p < nz; ++p) + ATp[Aj[p]]++; + + /* compute column pointers for A (= row pointers for A^T) */ + gsl_spmatrix_cumsum(N, ATp); + + /* make copy of column pointers */ + for (i = 0; i < N; ++i) + w[i] = ATp[i]; + + for (i = 0; i < M; ++i) + { + for (p = Ap[i]; p < Ap[i + 1]; ++p) + { + size_t k = w[Aj[p]]++; + ATj[k] = i; + ATd[k] = Ad[p]; + } + } + } + else + { + GSL_ERROR("unknown sparse matrix type", GSL_EINVAL); + } + + dest->nz = nz; + + return s; + } +} /* gsl_spmatrix_transpose_memcpy() */ diff --git a/gsl-2.5/spmatrix/spswap.lo b/gsl-2.5/spmatrix/spswap.lo new file mode 100644 index 00000000..7d8a95f4 --- /dev/null +++ b/gsl-2.5/spmatrix/spswap.lo @@ -0,0 +1,12 @@ +# spswap.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/spswap.o' + +# Name of the non-PIC object +non_pic_object='spswap.o' + diff --git a/gsl-2.5/spmatrix/test b/gsl-2.5/spmatrix/test new file mode 100755 index 00000000..c46f3805 --- /dev/null +++ b/gsl-2.5/spmatrix/test @@ -0,0 +1,228 @@ +#! /bin/sh + +# test - temporary wrapper script for .libs/test +# Generated by libtool (GNU libtool) 2.4.2 +# +# The test program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s/\([`"$\\]\)/\\\1/g' + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command="(cd /home/groups/kipac/chto/package/gsl/gsl-2.5/spmatrix; LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LIBRARY_PATH; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; LD_LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/fftw/include:/home/users/chto/lib/fftw/lib:/home/users/chto/lib/healpix/lib:/home/users/chto/lib/namaster/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/include:/home/users/chto/cpp/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LD_LIBRARY_PATH; PATH=/share/software/user/open/curl/7.54.0/bin:/share/software/user/open/libressl/2.5.3/bin:/home/users/chto/lib/cfitsio:/home/users/chto/lib/cfitsio/include:/home/users/chto/lib:/home/users/chto/bin/bin:/home/users/chto/bin:/home/users/chto/.texlive/bin/x86_64-linux:/home/groups/kipac/chto/anaconda2/envs/newenv3/bin:/home/users/chto/.local/bin/include:/home/users/chto/.local/bin/lib:/home/users/chto/.local/bin:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/bin64:/share/software/user/open/fftw/3.3.6/bin:/home/groups/kipac/chto/anaconda2/condabin:/share/software/user/restricted/ifort/2019/bin:/share/software/user/open/gsl/2.3/bin:/share/software/user/srcc/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/dell/srvadmin/bin:/opt/dell/srvadmin/iSM/bin:/home/users/chto/bin; export PATH; gcc -g -O2 -o \$progdir/\$file test.o ./.libs/libgslspmatrix.a ../spblas/.libs/libgslspblas.a ../test/.libs/libgsltest.a ../blas/.libs/libgslblas.a ../cblas/.libs/libgslcblas.so ../matrix/.libs/libgslmatrix.a ../vector/.libs/libgslvector.a ../block/.libs/libgslblock.a ../sys/.libs/libgslsys.a ../err/.libs/libgslerr.a ../utils/.libs/libutils.a ../rng/.libs/libgslrng.a -lm -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/cblas/.libs -Wl,-rpath -Wl,/usr/local/lib)" + +# This environment variable determines our operation mode. +if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then + # install mode needs the following variables: + generated_by_libtool_version='2.4.2' + notinst_deplibs=' ../cblas/libgslcblas.la' +else + # When we are sourced in execute mode, $file and $ECHO are already set. + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + file="$0" + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + ECHO="printf %s\\n" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ which is used only on +# windows platforms, and (c) all begin with the string --lt- +# (application programs are unlikely to have options which match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's ../libtool value, followed by no. +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=$0 + shift + for lt_opt + do + case "$lt_opt" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%/[^/]*$%%'` + test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=. + lt_dump_F=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%^.*/%%'` + cat "$lt_dump_D/$lt_dump_F" + exit 0 + ;; + --lt-*) + $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n "$lt_option_debug"; then + echo "test:test:${LINENO}: libtool wrapper (GNU libtool) 2.4.2" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + $ECHO "test:test:${LINENO}: newargv[$lt_dump_args_N]: $lt_arg" + lt_dump_args_N=`expr $lt_dump_args_N + 1` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ + + if test -n "$lt_option_debug"; then + $ECHO "test:test:${LINENO}: newargv[0]: $progdir/$program" 1>&2 + func_lt_dump_args ${1+"$@"} 1>&2 + fi + exec "$progdir/$program" ${1+"$@"} + + $ECHO "$0: cannot exec $program $*" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from $@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case " $* " in + *\ --lt-*) + for lt_wr_arg + do + case $lt_wr_arg in + --lt-*) ;; + *) set x "$@" "$lt_wr_arg"; shift;; + esac + shift + done ;; + esac + func_exec_program_core ${1+"$@"} +} + + # Parse options + func_parse_lt_options "$0" ${1+"$@"} + + # Find the directory that this script lives in. + thisdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + test "x$thisdir" = "x$file" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=`ls -ld "$file" | /usr/bin/sed -n 's/.*-> //p'` + while test -n "$file"; do + destdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + + # If there was a directory component, then change thisdir. + if test "x$destdir" != "x$file"; then + case "$destdir" in + [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;; + *) thisdir="$thisdir/$destdir" ;; + esac + fi + + file=`$ECHO "$file" | /usr/bin/sed 's%^.*/%%'` + file=`ls -ld "$thisdir/$file" | /usr/bin/sed -n 's/.*-> //p'` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no + if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then + # special case for '.' + if test "$thisdir" = "."; then + thisdir=`pwd` + fi + # remove .libs from thisdir + case "$thisdir" in + *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /usr/bin/sed 's%[\\/][^\\/]*$%%'` ;; + .libs ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=`cd "$thisdir" && pwd` + test -n "$absdir" && thisdir="$absdir" + + program=lt-'test' + progdir="$thisdir/.libs" + + if test ! -f "$progdir/$program" || + { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /usr/bin/sed 1q`; \ + test "X$file" != "X$progdir/$program"; }; then + + file="$$-$program" + + if test ! -d "$progdir"; then + mkdir "$progdir" + else + rm -f "$progdir/$file" + fi + + # relink executable if necessary + if test -n "$relink_command"; then + if relink_command_output=`eval $relink_command 2>&1`; then : + else + printf %s\n "$relink_command_output" >&2 + rm -f "$progdir/$file" + exit 1 + fi + fi + + mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null || + { rm -f "$progdir/$program"; + mv -f "$progdir/$file" "$progdir/$program"; } + rm -f "$progdir/$file" + fi + + if test -f "$progdir/$program"; then + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + # Run the actual program with our arguments. + func_exec_program ${1+"$@"} + fi + else + # The program doesn't exist. + $ECHO "$0: error: \`$progdir/$program' does not exist" 1>&2 + $ECHO "This script is just a wrapper for $program." 1>&2 + $ECHO "See the libtool documentation for more information." 1>&2 + exit 1 + fi +fi diff --git a/gsl-2.5/spmatrix/test-suite.log b/gsl-2.5/spmatrix/test-suite.log new file mode 100644 index 00000000..09e98338 --- /dev/null +++ b/gsl-2.5/spmatrix/test-suite.log @@ -0,0 +1,14 @@ +====================================== + gsl 2.5: spmatrix/test-suite.log +====================================== + +# TOTAL: 1 +# PASS: 1 +# SKIP: 0 +# XFAIL: 0 +# FAIL: 0 +# XPASS: 0 +# ERROR: 0 + +.. contents:: :depth: 2 + diff --git a/gsl-2.5/spmatrix/test.c b/gsl-2.5/spmatrix/test.c new file mode 100644 index 00000000..2f13b154 --- /dev/null +++ b/gsl-2.5/spmatrix/test.c @@ -0,0 +1,807 @@ +/* test.c + * + * Copyright (C) 2012-2014, 2016 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/* +create_random_sparse() + Create a random sparse matrix with approximately +M*N*density non-zero entries + +Inputs: M - number of rows + N - number of columns + density - sparse density \in [0,1] + 0 = no non-zero entries + 1 = all m*n entries are filled + r - random number generator + +Return: pointer to sparse matrix in triplet format (must be freed by caller) + +Notes: +1) non-zero matrix entries are uniformly distributed in [0,1] +*/ + +static gsl_spmatrix * +create_random_sparse(const size_t M, const size_t N, const double density, + const gsl_rng *r) +{ + size_t nnzwanted = (size_t) floor(M * N * GSL_MIN(density, 1.0)); + gsl_spmatrix *m = gsl_spmatrix_alloc_nzmax(M, N, + nnzwanted, + GSL_SPMATRIX_TRIPLET); + + while (gsl_spmatrix_nnz(m) < nnzwanted) + { + /* generate a random row and column */ + size_t i = gsl_rng_uniform(r) * M; + size_t j = gsl_rng_uniform(r) * N; + + /* generate random m_{ij} and add it */ + double x = gsl_rng_uniform(r); + gsl_spmatrix_set(m, i, j, x); + } + + return m; +} /* create_random_sparse() */ + +static gsl_spmatrix * +create_random_sparse_int(const size_t M, const size_t N, const double density, + const gsl_rng *r) +{ + const double lower = 1.0; + const double upper = 10.0; + size_t nnzwanted = (size_t) floor(M * N * GSL_MIN(density, 1.0)); + gsl_spmatrix *m = gsl_spmatrix_alloc_nzmax(M, N, + nnzwanted, + GSL_SPMATRIX_TRIPLET); + + while (gsl_spmatrix_nnz(m) < nnzwanted) + { + /* generate a random row and column */ + size_t i = gsl_rng_uniform(r) * M; + size_t j = gsl_rng_uniform(r) * N; + + /* generate random m_{ij} and add it */ + int x = (int) (gsl_rng_uniform(r) * (upper - lower) + lower); + gsl_spmatrix_set(m, i, j, (double) x); + } + + return m; +} + +static void +test_getset(const size_t M, const size_t N, + const double density, const gsl_rng *r) +{ + int status; + size_t i, j; + + /* test that a newly allocated matrix is initialized to zero */ + { + size_t nzmax = (size_t) (0.5 * M * N); + gsl_spmatrix *mt = gsl_spmatrix_alloc_nzmax(M, N, nzmax, GSL_SPMATRIX_TRIPLET); + gsl_spmatrix *mccs = gsl_spmatrix_alloc_nzmax(M, N, nzmax, GSL_SPMATRIX_CCS); + gsl_spmatrix *mcrs = gsl_spmatrix_alloc_nzmax(M, N, nzmax, GSL_SPMATRIX_CRS); + + status = 0; + for (i = 0; i < M; ++i) + { + for (j = 0; j < N; ++j) + { + double mtij = gsl_spmatrix_get(mt, i, j); + double mcij = gsl_spmatrix_get(mccs, i, j); + double mrij = gsl_spmatrix_get(mcrs, i, j); + + if (mtij != 0.0) + status = 1; + + if (mcij != 0.0) + status = 2; + + if (mrij != 0.0) + status = 3; + } + } + + gsl_test(status == 1, "test_getset: triplet M=%zu N=%zu not initialized to zero", M, N); + gsl_test(status == 2, "test_getset: CCS M=%zu N=%zu not initialized to zero", M, N); + gsl_test(status == 3, "test_getset: CRS M=%zu N=%zu not initialized to zero", M, N); + + gsl_spmatrix_free(mt); + gsl_spmatrix_free(mccs); + gsl_spmatrix_free(mcrs); + } + + /* test triplet versions of _get and _set */ + { + const double val = 0.75; + size_t k = 0; + gsl_spmatrix *m = gsl_spmatrix_alloc(M, N); + + status = 0; + for (i = 0; i < M; ++i) + { + for (j = 0; j < N; ++j) + { + double x = (double) ++k; + double y; + + gsl_spmatrix_set(m, i, j, x); + y = gsl_spmatrix_get(m, i, j); + if (x != y) + status = 1; + } + } + + gsl_test(status, "test_getset: M=%zu N=%zu _get != _set", M, N); + + /* test setting an element to 0 */ + gsl_spmatrix_set(m, 0, 0, 1.0); + gsl_spmatrix_set(m, 0, 0, 0.0); + + status = gsl_spmatrix_get(m, 0, 0) != 0.0; + gsl_test(status, "test_getset: M=%zu N=%zu m(0,0) = %f", + M, N, gsl_spmatrix_get(m, 0, 0)); + + /* test gsl_spmatrix_set_zero() */ + gsl_spmatrix_set(m, 0, 0, 1.0); + gsl_spmatrix_set_zero(m); + status = gsl_spmatrix_get(m, 0, 0) != 0.0; + gsl_test(status, "test_getset: M=%zu N=%zu set_zero m(0,0) = %f", + M, N, gsl_spmatrix_get(m, 0, 0)); + + /* resassemble matrix to ensure nz is calculated correctly */ + k = 0; + for (i = 0; i < M; ++i) + { + for (j = 0; j < N; ++j) + { + double x = (double) ++k; + gsl_spmatrix_set(m, i, j, x); + } + } + + status = gsl_spmatrix_nnz(m) != M * N; + gsl_test(status, "test_getset: M=%zu N=%zu set_zero nz = %zu", + M, N, gsl_spmatrix_nnz(m)); + + /* test gsl_spmatrix_ptr() */ + status = 0; + for (i = 0; i < M; ++i) + { + for (j = 0; j < N; ++j) + { + double mij = gsl_spmatrix_get(m, i, j); + double *ptr = gsl_spmatrix_ptr(m, i, j); + + *ptr += val; + if (gsl_spmatrix_get(m, i, j) != mij + val) + status = 2; + } + } + + gsl_test(status == 2, "test_getset: M=%zu N=%zu triplet ptr", M, N); + + gsl_spmatrix_free(m); + } + + /* test duplicate values are handled correctly */ + { + size_t min = GSL_MIN(M, N); + size_t expected_nnz = min; + size_t nnz; + size_t k = 0; + gsl_spmatrix *m = gsl_spmatrix_alloc(M, N); + + status = 0; + for (i = 0; i < min; ++i) + { + for (j = 0; j < 5; ++j) + { + double x = (double) ++k; + double y; + + gsl_spmatrix_set(m, i, i, x); + y = gsl_spmatrix_get(m, i, i); + if (x != y) + status = 1; + } + } + + gsl_test(status, "test_getset: duplicate test M=%zu N=%zu _get != _set", M, N); + + nnz = gsl_spmatrix_nnz(m); + status = nnz != expected_nnz; + gsl_test(status, "test_getset: duplicate test M=%zu N=%zu nnz=%zu, expected=%zu", + M, N, nnz, expected_nnz); + + gsl_spmatrix_free(m); + } + + /* test CCS version of gsl_spmatrix_get() */ + { + const double val = 0.75; + gsl_spmatrix *T = create_random_sparse(M, N, density, r); + gsl_spmatrix *C = gsl_spmatrix_ccs(T); + + status = 0; + for (i = 0; i < M; ++i) + { + for (j = 0; j < N; ++j) + { + double Tij = gsl_spmatrix_get(T, i, j); + double Cij = gsl_spmatrix_get(C, i, j); + double *ptr = gsl_spmatrix_ptr(C, i, j); + + if (Tij != Cij) + status = 1; + + if (ptr) + { + *ptr += val; + Cij = gsl_spmatrix_get(C, i, j); + if (Tij + val != Cij) + status = 2; + } + } + } + + gsl_test(status == 1, "test_getset: M=%zu N=%zu CCS get", M, N); + gsl_test(status == 2, "test_getset: M=%zu N=%zu CCS ptr", M, N); + + gsl_spmatrix_free(T); + gsl_spmatrix_free(C); + } + + /* test CRS version of gsl_spmatrix_get() */ + { + const double val = 0.75; + gsl_spmatrix *T = create_random_sparse(M, N, density, r); + gsl_spmatrix *C = gsl_spmatrix_crs(T); + + status = 0; + for (i = 0; i < M; ++i) + { + for (j = 0; j < N; ++j) + { + double Tij = gsl_spmatrix_get(T, i, j); + double Cij = gsl_spmatrix_get(C, i, j); + double *ptr = gsl_spmatrix_ptr(C, i, j); + + if (Tij != Cij) + status = 1; + + if (ptr) + { + *ptr += val; + Cij = gsl_spmatrix_get(C, i, j); + if (Tij + val != Cij) + status = 2; + } + } + } + + gsl_test(status == 1, "test_getset: M=%zu N=%zu CRS get", M, N); + gsl_test(status == 2, "test_getset: M=%zu N=%zu CRS ptr", M, N); + + gsl_spmatrix_free(T); + gsl_spmatrix_free(C); + } +} /* test_getset() */ + +static void +test_memcpy(const size_t M, const size_t N, + const double density, const gsl_rng *r) +{ + int status; + + { + gsl_spmatrix *A = create_random_sparse(M, N, density, r); + gsl_spmatrix *A_ccs = gsl_spmatrix_ccs(A); + gsl_spmatrix *A_crs = gsl_spmatrix_crs(A); + gsl_spmatrix *B_t, *B_ccs, *B_crs; + + B_t = gsl_spmatrix_alloc(M, N); + gsl_spmatrix_memcpy(B_t, A); + + status = gsl_spmatrix_equal(A, B_t) != 1; + gsl_test(status, "test_memcpy: _memcpy M=%zu N=%zu triplet format", M, N); + + B_ccs = gsl_spmatrix_alloc_nzmax(M, N, A_ccs->nzmax, GSL_SPMATRIX_CCS); + B_crs = gsl_spmatrix_alloc_nzmax(M, N, A_ccs->nzmax, GSL_SPMATRIX_CRS); + + gsl_spmatrix_memcpy(B_ccs, A_ccs); + gsl_spmatrix_memcpy(B_crs, A_crs); + + status = gsl_spmatrix_equal(A_ccs, B_ccs) != 1; + gsl_test(status, "test_memcpy: _memcpy M=%zu N=%zu CCS", M, N); + + status = gsl_spmatrix_equal(A_crs, B_crs) != 1; + gsl_test(status, "test_memcpy: _memcpy M=%zu N=%zu CRS", M, N); + + gsl_spmatrix_free(A); + gsl_spmatrix_free(A_ccs); + gsl_spmatrix_free(A_crs); + gsl_spmatrix_free(B_t); + gsl_spmatrix_free(B_ccs); + gsl_spmatrix_free(B_crs); + } + + /* test transpose_memcpy */ + { + gsl_spmatrix *A = create_random_sparse(M, N, density, r); + gsl_spmatrix *AT = gsl_spmatrix_alloc(N, M); + gsl_spmatrix *B = gsl_spmatrix_ccs(A); + gsl_spmatrix *BT = gsl_spmatrix_alloc_nzmax(N, M, 1, GSL_SPMATRIX_CCS); + gsl_spmatrix *C = gsl_spmatrix_crs(A); + gsl_spmatrix *CT = gsl_spmatrix_alloc_nzmax(N, M, 1, GSL_SPMATRIX_CRS); + size_t i, j; + + gsl_spmatrix_transpose_memcpy(AT, A); + gsl_spmatrix_transpose_memcpy(BT, B); + gsl_spmatrix_transpose_memcpy(CT, C); + + status = 0; + for (i = 0; i < M; ++i) + { + for (j = 0; j < N; ++j) + { + double Aij = gsl_spmatrix_get(A, i, j); + double ATji = gsl_spmatrix_get(AT, j, i); + + if (Aij != ATji) + status = 1; + } + } + + gsl_test(status, "test_memcpy: _transpose_memcpy M=%zu N=%zu triplet format", M, N); + + status = 0; + for (i = 0; i < M; ++i) + { + for (j = 0; j < N; ++j) + { + double Aij = gsl_spmatrix_get(A, i, j); + double Bij = gsl_spmatrix_get(B, i, j); + double BTji = gsl_spmatrix_get(BT, j, i); + + if ((Bij != BTji) || (Aij != Bij)) + status = 1; + } + } + + gsl_test(status, "test_memcpy: _transpose_memcpy M=%zu N=%zu CCS format", M, N); + + status = 0; + for (i = 0; i < M; ++i) + { + for (j = 0; j < N; ++j) + { + double Aij = gsl_spmatrix_get(A, i, j); + double Cij = gsl_spmatrix_get(C, i, j); + double CTji = gsl_spmatrix_get(CT, j, i); + + if ((Cij != CTji) || (Aij != Cij)) + status = 1; + } + } + + gsl_test(status, "test_memcpy: _transpose_memcpy M=%zu N=%zu CRS format", M, N); + + gsl_spmatrix_free(A); + gsl_spmatrix_free(AT); + gsl_spmatrix_free(B); + gsl_spmatrix_free(BT); + gsl_spmatrix_free(C); + gsl_spmatrix_free(CT); + } +} /* test_memcpy() */ + +static void +test_transpose(const size_t M, const size_t N, + const double density, const gsl_rng *r) +{ + int status; + gsl_spmatrix *A = create_random_sparse(M, N, density, r); + gsl_spmatrix *AT = gsl_spmatrix_alloc_nzmax(M, N, A->nz, A->sptype); + gsl_spmatrix *AT2 = gsl_spmatrix_alloc_nzmax(M, N, A->nz, A->sptype); + gsl_spmatrix *AT2_ccs, *AT2_crs; + size_t i, j; + + /* test triplet transpose */ + + gsl_spmatrix_memcpy(AT, A); + gsl_spmatrix_memcpy(AT2, A); + + gsl_spmatrix_transpose(AT); + gsl_spmatrix_transpose2(AT2); + + status = 0; + for (i = 0; i < M; ++i) + { + for (j = 0; j < N; ++j) + { + double Aij = gsl_spmatrix_get(A, i, j); + double ATji = gsl_spmatrix_get(AT, j, i); + double AT2ji = gsl_spmatrix_get(AT2, j, i); + + if (Aij != ATji) + status = 1; + + if (Aij != AT2ji) + status = 2; + } + } + + gsl_test(status == 1, "test_transpose: transpose M=%zu N=%zu triplet format", + M, N); + gsl_test(status == 2, "test_transpose: transpose2 M=%zu N=%zu triplet format", + M, N); + + /* test CCS transpose */ + + AT2_ccs = gsl_spmatrix_ccs(A); + gsl_spmatrix_transpose2(AT2_ccs); + + status = 0; + for (i = 0; i < M; ++i) + { + for (j = 0; j < N; ++j) + { + double Aij = gsl_spmatrix_get(A, i, j); + double AT2ji = gsl_spmatrix_get(AT2_ccs, j, i); + + if (Aij != AT2ji) + status = 2; + } + } + + gsl_test(status == 2, "test_transpose: transpose2 M=%zu N=%zu CCS format", + M, N); + + /* test CRS transpose */ + + AT2_crs = gsl_spmatrix_crs(A); + gsl_spmatrix_transpose2(AT2_crs); + + status = 0; + for (i = 0; i < M; ++i) + { + for (j = 0; j < N; ++j) + { + double Aij = gsl_spmatrix_get(A, i, j); + double AT2ji = gsl_spmatrix_get(AT2_crs, j, i); + + if (Aij != AT2ji) + status = 2; + } + } + + gsl_test(status == 2, "test_transpose: transpose2 M=%zu N=%zu CRS format", + M, N); + + gsl_spmatrix_free(A); + gsl_spmatrix_free(AT); + gsl_spmatrix_free(AT2); + gsl_spmatrix_free(AT2_ccs); + gsl_spmatrix_free(AT2_crs); +} + +static void +test_ops(const size_t M, const size_t N, + const double density, const gsl_rng *r) +{ + size_t i, j; + int status; + + /* test gsl_spmatrix_add */ + { + gsl_spmatrix *A = create_random_sparse(M, N, density, r); + gsl_spmatrix *B = create_random_sparse(M, N, density, r); + + gsl_spmatrix *A_ccs = gsl_spmatrix_ccs(A); + gsl_spmatrix *B_ccs = gsl_spmatrix_ccs(B); + gsl_spmatrix *C_ccs = gsl_spmatrix_alloc_nzmax(M, N, 1, GSL_SPMATRIX_CCS); + + gsl_spmatrix *A_crs = gsl_spmatrix_crs(A); + gsl_spmatrix *B_crs = gsl_spmatrix_crs(B); + gsl_spmatrix *C_crs = gsl_spmatrix_alloc_nzmax(M, N, 1, GSL_SPMATRIX_CRS); + + gsl_spmatrix_add(C_ccs, A_ccs, B_ccs); + gsl_spmatrix_add(C_crs, A_crs, B_crs); + + status = 0; + for (i = 0; i < M; ++i) + { + for (j = 0; j < N; ++j) + { + double aij, bij, cij; + + aij = gsl_spmatrix_get(A_ccs, i, j); + bij = gsl_spmatrix_get(B_ccs, i, j); + cij = gsl_spmatrix_get(C_ccs, i, j); + if (aij + bij != cij) + status = 1; + + aij = gsl_spmatrix_get(A_crs, i, j); + bij = gsl_spmatrix_get(B_crs, i, j); + cij = gsl_spmatrix_get(C_crs, i, j); + if (aij + bij != cij) + status = 2; + } + } + + gsl_test(status == 1, "test_ops: add M=%zu N=%zu CCS", M, N); + gsl_test(status == 2, "test_ops: add M=%zu N=%zu CRS", M, N); + + /* test again with C = 2*A */ + gsl_spmatrix_add(C_ccs, A_ccs, A_ccs); + gsl_spmatrix_add(C_crs, A_crs, A_crs); + + status = 0; + for (i = 0; i < M; ++i) + { + for (j = 0; j < N; ++j) + { + double aij, bij, cij; + + aij = gsl_spmatrix_get(A_ccs, i, j); + cij = gsl_spmatrix_get(C_ccs, i, j); + if (aij + aij != cij) + status = 1; + + aij = gsl_spmatrix_get(A_crs, i, j); + cij = gsl_spmatrix_get(C_crs, i, j); + if (aij + aij != cij) + status = 2; + } + } + + gsl_test(status == 1, "test_ops: add duplicate M=%zu N=%zu CCS", M, N); + gsl_test(status == 2, "test_ops: add duplicate M=%zu N=%zu CRS", M, N); + + gsl_spmatrix_free(A); + gsl_spmatrix_free(B); + gsl_spmatrix_free(A_ccs); + gsl_spmatrix_free(B_ccs); + gsl_spmatrix_free(C_ccs); + gsl_spmatrix_free(A_crs); + gsl_spmatrix_free(B_crs); + gsl_spmatrix_free(C_crs); + } +} /* test_ops() */ + +static void +test_io_ascii(const size_t M, const size_t N, + const double density, const gsl_rng *r) +{ + int status; + gsl_spmatrix *A = create_random_sparse_int(M, N, density, r); + + char filename[] = "test.dat"; + + /* test triplet I/O */ + { + FILE *f = fopen(filename, "w"); + + gsl_spmatrix_fprintf(f, A, "%g"); + + fclose(f); + } + + { + FILE *f = fopen(filename, "r"); + gsl_spmatrix *B = gsl_spmatrix_fscanf(f); + + status = gsl_spmatrix_equal(A, B) != 1; + gsl_test(status, "test_io_ascii: fprintf/fscanf M=%zu N=%zu triplet format", M, N); + + fclose(f); + gsl_spmatrix_free(B); + } + + /* test CCS I/O */ + { + FILE *f = fopen(filename, "w"); + gsl_spmatrix *A_ccs = gsl_spmatrix_ccs(A); + + gsl_spmatrix_fprintf(f, A_ccs, "%g"); + + fclose(f); + gsl_spmatrix_free(A_ccs); + } + + { + FILE *f = fopen(filename, "r"); + gsl_spmatrix *B = gsl_spmatrix_fscanf(f); + + status = gsl_spmatrix_equal(A, B) != 1; + gsl_test(status, "test_io_ascii: fprintf/fscanf M=%zu N=%zu CCS format", M, N); + + fclose(f); + gsl_spmatrix_free(B); + } + + /* test CRS I/O */ + { + FILE *f = fopen(filename, "w"); + gsl_spmatrix *A_crs = gsl_spmatrix_crs(A); + + gsl_spmatrix_fprintf(f, A_crs, "%g"); + + fclose(f); + gsl_spmatrix_free(A_crs); + } + + { + FILE *f = fopen(filename, "r"); + gsl_spmatrix *B = gsl_spmatrix_fscanf(f); + + status = gsl_spmatrix_equal(A, B) != 1; + gsl_test(status, "test_io_ascii: fprintf/fscanf M=%zu N=%zu CRS format", M, N); + + fclose(f); + gsl_spmatrix_free(B); + } + + unlink(filename); + + gsl_spmatrix_free(A); +} + +static void +test_io_binary(const size_t M, const size_t N, + const double density, const gsl_rng *r) +{ + int status; + gsl_spmatrix *A = create_random_sparse(M, N, density, r); + gsl_spmatrix *A_ccs, *A_crs; + + char filename[] = "test.dat"; + + /* test triplet I/O */ + { + FILE *f = fopen(filename, "wb"); + + gsl_spmatrix_fwrite(f, A); + + fclose(f); + } + + { + FILE *f = fopen(filename, "rb"); + gsl_spmatrix *B = gsl_spmatrix_alloc_nzmax(M, N, A->nz, A->sptype); + + gsl_spmatrix_fread(f, B); + + status = gsl_spmatrix_equal(A, B) != 1; + gsl_test(status, "test_io_binary: fwrite/fread M=%zu N=%zu triplet format", M, N); + + fclose(f); + gsl_spmatrix_free(B); + } + + /* test CCS I/O */ + A_ccs = gsl_spmatrix_ccs(A); + + { + FILE *f = fopen(filename, "wb"); + + gsl_spmatrix_fwrite(f, A_ccs); + + fclose(f); + } + + { + FILE *f = fopen(filename, "rb"); + gsl_spmatrix *B = gsl_spmatrix_alloc_nzmax(M, N, A->nz, GSL_SPMATRIX_CCS); + + gsl_spmatrix_fread(f, B); + + status = gsl_spmatrix_equal(A_ccs, B) != 1; + gsl_test(status, "test_io_binary: fwrite/fread M=%zu N=%zu CCS format", M, N); + + fclose(f); + gsl_spmatrix_free(B); + } + + /* test CRS I/O */ + A_crs = gsl_spmatrix_crs(A); + + { + FILE *f = fopen(filename, "wb"); + + gsl_spmatrix_fwrite(f, A_crs); + + fclose(f); + } + + { + FILE *f = fopen(filename, "rb"); + gsl_spmatrix *B = gsl_spmatrix_alloc_nzmax(M, N, A->nz, GSL_SPMATRIX_CRS); + + gsl_spmatrix_fread(f, B); + + status = gsl_spmatrix_equal(A_crs, B) != 1; + gsl_test(status, "test_io_binary: fwrite/fread M=%zu N=%zu CRS format", M, N); + + fclose(f); + gsl_spmatrix_free(B); + } + + unlink(filename); + + gsl_spmatrix_free(A); + gsl_spmatrix_free(A_ccs); + gsl_spmatrix_free(A_crs); +} + +int +main() +{ + gsl_rng *r = gsl_rng_alloc(gsl_rng_default); + + test_memcpy(10, 10, 0.2, r); + test_memcpy(10, 15, 0.3, r); + test_memcpy(53, 213, 0.4, r); + test_memcpy(920, 2, 0.2, r); + test_memcpy(2, 920, 0.3, r); + + test_getset(20, 20, 0.3, r); + test_getset(30, 20, 0.3, r); + test_getset(15, 210, 0.3, r); + + test_transpose(50, 50, 0.5, r); + test_transpose(10, 40, 0.3, r); + test_transpose(40, 10, 0.3, r); + test_transpose(57, 13, 0.2, r); + + test_ops(20, 20, 0.2, r); + test_ops(50, 20, 0.3, r); + test_ops(20, 50, 0.3, r); + test_ops(76, 43, 0.4, r); + + test_io_ascii(30, 30, 0.3, r); + test_io_ascii(20, 10, 0.2, r); + test_io_ascii(10, 20, 0.2, r); + test_io_ascii(34, 78, 0.3, r); + + test_io_binary(50, 50, 0.3, r); + test_io_binary(25, 10, 0.2, r); + test_io_binary(10, 25, 0.2, r); + test_io_binary(101, 253, 0.3, r); + + gsl_rng_free(r); + + exit (gsl_test_summary()); +} /* main() */ diff --git a/gsl-2.5/spmatrix/test.log b/gsl-2.5/spmatrix/test.log new file mode 100644 index 00000000..d41bfc3e --- /dev/null +++ b/gsl-2.5/spmatrix/test.log @@ -0,0 +1 @@ +Completed [128/128] diff --git a/gsl-2.5/spmatrix/test.trs b/gsl-2.5/spmatrix/test.trs new file mode 100644 index 00000000..3f0f396c --- /dev/null +++ b/gsl-2.5/spmatrix/test.trs @@ -0,0 +1,4 @@ +:test-result: PASS +:global-test-result: PASS +:recheck: no +:copy-in-global-log: no diff --git a/gsl-2.5/stamp-h1 b/gsl-2.5/stamp-h1 new file mode 100644 index 00000000..4547fe1b --- /dev/null +++ b/gsl-2.5/stamp-h1 @@ -0,0 +1 @@ +timestamp for config.h diff --git a/gsl-2.5/statistics/.deps/Qn.Plo b/gsl-2.5/statistics/.deps/Qn.Plo new file mode 100644 index 00000000..be3338dc --- /dev/null +++ b/gsl-2.5/statistics/.deps/Qn.Plo @@ -0,0 +1,240 @@ +Qn.lo: Qn.c /usr/include/stdc-predef.h ../config.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_statistics.h \ + ../gsl/gsl_statistics_long_double.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/byteswap.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/bits/byteswap-16.h /usr/include/sys/types.h \ + /usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib-float.h \ + ../gsl/gsl_statistics_double.h ../gsl/gsl_statistics_float.h \ + ../gsl/gsl_statistics_ulong.h ../gsl/gsl_statistics_long.h \ + ../gsl/gsl_statistics_uint.h ../gsl/gsl_statistics_int.h \ + ../gsl/gsl_statistics_ushort.h ../gsl/gsl_statistics_short.h \ + ../gsl/gsl_statistics_uchar.h ../gsl/gsl_statistics_char.h \ + ../gsl/gsl_sort.h ../gsl/gsl_sort_long_double.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_permutation.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_sort_double.h ../gsl/gsl_sort_float.h ../gsl/gsl_sort_ulong.h \ + ../gsl/gsl_sort_long.h ../gsl/gsl_sort_uint.h ../gsl/gsl_sort_int.h \ + ../gsl/gsl_sort_ushort.h ../gsl/gsl_sort_short.h ../gsl/gsl_sort_uchar.h \ + ../gsl/gsl_sort_char.h ../templates_on.h Qn_source.c ../templates_off.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_statistics.h: + +../gsl/gsl_statistics_long_double.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_statistics_double.h: + +../gsl/gsl_statistics_float.h: + +../gsl/gsl_statistics_ulong.h: + +../gsl/gsl_statistics_long.h: + +../gsl/gsl_statistics_uint.h: + +../gsl/gsl_statistics_int.h: + +../gsl/gsl_statistics_ushort.h: + +../gsl/gsl_statistics_short.h: + +../gsl/gsl_statistics_uchar.h: + +../gsl/gsl_statistics_char.h: + +../gsl/gsl_sort.h: + +../gsl/gsl_sort_long_double.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_permutation.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_sort_double.h: + +../gsl/gsl_sort_float.h: + +../gsl/gsl_sort_ulong.h: + +../gsl/gsl_sort_long.h: + +../gsl/gsl_sort_uint.h: + +../gsl/gsl_sort_int.h: + +../gsl/gsl_sort_ushort.h: + +../gsl/gsl_sort_short.h: + +../gsl/gsl_sort_uchar.h: + +../gsl/gsl_sort_char.h: + +../templates_on.h: + +Qn_source.c: + +../templates_off.h: diff --git a/gsl-2.5/statistics/.deps/Sn.Plo b/gsl-2.5/statistics/.deps/Sn.Plo new file mode 100644 index 00000000..c801ccdc --- /dev/null +++ b/gsl-2.5/statistics/.deps/Sn.Plo @@ -0,0 +1,240 @@ +Sn.lo: Sn.c /usr/include/stdc-predef.h ../config.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_statistics.h \ + ../gsl/gsl_statistics_long_double.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/byteswap.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/bits/byteswap-16.h /usr/include/sys/types.h \ + /usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib-float.h \ + ../gsl/gsl_statistics_double.h ../gsl/gsl_statistics_float.h \ + ../gsl/gsl_statistics_ulong.h ../gsl/gsl_statistics_long.h \ + ../gsl/gsl_statistics_uint.h ../gsl/gsl_statistics_int.h \ + ../gsl/gsl_statistics_ushort.h ../gsl/gsl_statistics_short.h \ + ../gsl/gsl_statistics_uchar.h ../gsl/gsl_statistics_char.h \ + ../gsl/gsl_sort.h ../gsl/gsl_sort_long_double.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_permutation.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_sort_double.h ../gsl/gsl_sort_float.h ../gsl/gsl_sort_ulong.h \ + ../gsl/gsl_sort_long.h ../gsl/gsl_sort_uint.h ../gsl/gsl_sort_int.h \ + ../gsl/gsl_sort_ushort.h ../gsl/gsl_sort_short.h ../gsl/gsl_sort_uchar.h \ + ../gsl/gsl_sort_char.h ../templates_on.h Sn_source.c ../templates_off.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_statistics.h: + +../gsl/gsl_statistics_long_double.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_statistics_double.h: + +../gsl/gsl_statistics_float.h: + +../gsl/gsl_statistics_ulong.h: + +../gsl/gsl_statistics_long.h: + +../gsl/gsl_statistics_uint.h: + +../gsl/gsl_statistics_int.h: + +../gsl/gsl_statistics_ushort.h: + +../gsl/gsl_statistics_short.h: + +../gsl/gsl_statistics_uchar.h: + +../gsl/gsl_statistics_char.h: + +../gsl/gsl_sort.h: + +../gsl/gsl_sort_long_double.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_permutation.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_sort_double.h: + +../gsl/gsl_sort_float.h: + +../gsl/gsl_sort_ulong.h: + +../gsl/gsl_sort_long.h: + +../gsl/gsl_sort_uint.h: + +../gsl/gsl_sort_int.h: + +../gsl/gsl_sort_ushort.h: + +../gsl/gsl_sort_short.h: + +../gsl/gsl_sort_uchar.h: + +../gsl/gsl_sort_char.h: + +../templates_on.h: + +Sn_source.c: + +../templates_off.h: diff --git a/gsl-2.5/statistics/.deps/absdev.Plo b/gsl-2.5/statistics/.deps/absdev.Plo new file mode 100644 index 00000000..74528043 --- /dev/null +++ b/gsl-2.5/statistics/.deps/absdev.Plo @@ -0,0 +1,127 @@ +absdev.lo: absdev.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_statistics.h \ + ../gsl/gsl_statistics_long_double.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/byteswap.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/bits/byteswap-16.h /usr/include/sys/types.h \ + /usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib-float.h \ + ../gsl/gsl_statistics_double.h ../gsl/gsl_statistics_float.h \ + ../gsl/gsl_statistics_ulong.h ../gsl/gsl_statistics_long.h \ + ../gsl/gsl_statistics_uint.h ../gsl/gsl_statistics_int.h \ + ../gsl/gsl_statistics_ushort.h ../gsl/gsl_statistics_short.h \ + ../gsl/gsl_statistics_uchar.h ../gsl/gsl_statistics_char.h \ + ../templates_on.h absdev_source.c ../templates_off.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_statistics.h: + +../gsl/gsl_statistics_long_double.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_statistics_double.h: + +../gsl/gsl_statistics_float.h: + +../gsl/gsl_statistics_ulong.h: + +../gsl/gsl_statistics_long.h: + +../gsl/gsl_statistics_uint.h: + +../gsl/gsl_statistics_int.h: + +../gsl/gsl_statistics_ushort.h: + +../gsl/gsl_statistics_short.h: + +../gsl/gsl_statistics_uchar.h: + +../gsl/gsl_statistics_char.h: + +../templates_on.h: + +absdev_source.c: + +../templates_off.h: diff --git a/gsl-2.5/statistics/.deps/covariance.Plo b/gsl-2.5/statistics/.deps/covariance.Plo new file mode 100644 index 00000000..d7c1a6c0 --- /dev/null +++ b/gsl-2.5/statistics/.deps/covariance.Plo @@ -0,0 +1,281 @@ +covariance.lo: covariance.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_statistics.h \ + ../gsl/gsl_statistics_long_double.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/byteswap.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/bits/byteswap-16.h /usr/include/sys/types.h \ + /usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib-float.h \ + ../gsl/gsl_statistics_double.h ../gsl/gsl_statistics_float.h \ + ../gsl/gsl_statistics_ulong.h ../gsl/gsl_statistics_long.h \ + ../gsl/gsl_statistics_uint.h ../gsl/gsl_statistics_int.h \ + ../gsl/gsl_statistics_ushort.h ../gsl/gsl_statistics_short.h \ + ../gsl/gsl_statistics_uchar.h ../gsl/gsl_statistics_char.h \ + ../gsl/gsl_vector.h ../gsl/gsl_vector_complex_long_double.h \ + ../gsl/gsl_types.h ../gsl/gsl_errno.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_inline.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_vector_complex.h \ + ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_sort_vector.h \ + ../gsl/gsl_sort_vector_long_double.h ../gsl/gsl_permutation.h \ + ../gsl/gsl_sort_vector_double.h ../gsl/gsl_sort_vector_float.h \ + ../gsl/gsl_sort_vector_ulong.h ../gsl/gsl_sort_vector_long.h \ + ../gsl/gsl_sort_vector_uint.h ../gsl/gsl_sort_vector_int.h \ + ../gsl/gsl_sort_vector_ushort.h ../gsl/gsl_sort_vector_short.h \ + ../gsl/gsl_sort_vector_uchar.h ../gsl/gsl_sort_vector_char.h \ + ../templates_on.h covariance_source.c ../templates_off.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_statistics.h: + +../gsl/gsl_statistics_long_double.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_statistics_double.h: + +../gsl/gsl_statistics_float.h: + +../gsl/gsl_statistics_ulong.h: + +../gsl/gsl_statistics_long.h: + +../gsl/gsl_statistics_uint.h: + +../gsl/gsl_statistics_int.h: + +../gsl/gsl_statistics_ushort.h: + +../gsl/gsl_statistics_short.h: + +../gsl/gsl_statistics_uchar.h: + +../gsl/gsl_statistics_char.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_types.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_sort_vector.h: + +../gsl/gsl_sort_vector_long_double.h: + +../gsl/gsl_permutation.h: + +../gsl/gsl_sort_vector_double.h: + +../gsl/gsl_sort_vector_float.h: + +../gsl/gsl_sort_vector_ulong.h: + +../gsl/gsl_sort_vector_long.h: + +../gsl/gsl_sort_vector_uint.h: + +../gsl/gsl_sort_vector_int.h: + +../gsl/gsl_sort_vector_ushort.h: + +../gsl/gsl_sort_vector_short.h: + +../gsl/gsl_sort_vector_uchar.h: + +../gsl/gsl_sort_vector_char.h: + +../templates_on.h: + +covariance_source.c: + +../templates_off.h: diff --git a/gsl-2.5/statistics/.deps/gastwirth.Plo b/gsl-2.5/statistics/.deps/gastwirth.Plo new file mode 100644 index 00000000..b2386fdb --- /dev/null +++ b/gsl-2.5/statistics/.deps/gastwirth.Plo @@ -0,0 +1,104 @@ +gastwirth.lo: gastwirth.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_statistics.h ../gsl/gsl_statistics_long_double.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/byteswap.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/bits/byteswap-16.h /usr/include/sys/types.h \ + /usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib-float.h \ + ../gsl/gsl_statistics_double.h ../gsl/gsl_statistics_float.h \ + ../gsl/gsl_statistics_ulong.h ../gsl/gsl_statistics_long.h \ + ../gsl/gsl_statistics_uint.h ../gsl/gsl_statistics_int.h \ + ../gsl/gsl_statistics_ushort.h ../gsl/gsl_statistics_short.h \ + ../gsl/gsl_statistics_uchar.h ../gsl/gsl_statistics_char.h \ + ../templates_on.h gastwirth_source.c ../templates_off.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_statistics.h: + +../gsl/gsl_statistics_long_double.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_statistics_double.h: + +../gsl/gsl_statistics_float.h: + +../gsl/gsl_statistics_ulong.h: + +../gsl/gsl_statistics_long.h: + +../gsl/gsl_statistics_uint.h: + +../gsl/gsl_statistics_int.h: + +../gsl/gsl_statistics_ushort.h: + +../gsl/gsl_statistics_short.h: + +../gsl/gsl_statistics_uchar.h: + +../gsl/gsl_statistics_char.h: + +../templates_on.h: + +gastwirth_source.c: + +../templates_off.h: diff --git a/gsl-2.5/statistics/.deps/kurtosis.Plo b/gsl-2.5/statistics/.deps/kurtosis.Plo new file mode 100644 index 00000000..36ef06ed --- /dev/null +++ b/gsl-2.5/statistics/.deps/kurtosis.Plo @@ -0,0 +1,127 @@ +kurtosis.lo: kurtosis.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_statistics.h \ + ../gsl/gsl_statistics_long_double.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/byteswap.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/bits/byteswap-16.h /usr/include/sys/types.h \ + /usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib-float.h \ + ../gsl/gsl_statistics_double.h ../gsl/gsl_statistics_float.h \ + ../gsl/gsl_statistics_ulong.h ../gsl/gsl_statistics_long.h \ + ../gsl/gsl_statistics_uint.h ../gsl/gsl_statistics_int.h \ + ../gsl/gsl_statistics_ushort.h ../gsl/gsl_statistics_short.h \ + ../gsl/gsl_statistics_uchar.h ../gsl/gsl_statistics_char.h \ + ../templates_on.h kurtosis_source.c ../templates_off.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_statistics.h: + +../gsl/gsl_statistics_long_double.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_statistics_double.h: + +../gsl/gsl_statistics_float.h: + +../gsl/gsl_statistics_ulong.h: + +../gsl/gsl_statistics_long.h: + +../gsl/gsl_statistics_uint.h: + +../gsl/gsl_statistics_int.h: + +../gsl/gsl_statistics_ushort.h: + +../gsl/gsl_statistics_short.h: + +../gsl/gsl_statistics_uchar.h: + +../gsl/gsl_statistics_char.h: + +../templates_on.h: + +kurtosis_source.c: + +../templates_off.h: diff --git a/gsl-2.5/statistics/.deps/lag1.Plo b/gsl-2.5/statistics/.deps/lag1.Plo new file mode 100644 index 00000000..fce5a012 --- /dev/null +++ b/gsl-2.5/statistics/.deps/lag1.Plo @@ -0,0 +1,104 @@ +lag1.lo: lag1.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_statistics.h ../gsl/gsl_statistics_long_double.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/byteswap.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/bits/byteswap-16.h /usr/include/sys/types.h \ + /usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib-float.h \ + ../gsl/gsl_statistics_double.h ../gsl/gsl_statistics_float.h \ + ../gsl/gsl_statistics_ulong.h ../gsl/gsl_statistics_long.h \ + ../gsl/gsl_statistics_uint.h ../gsl/gsl_statistics_int.h \ + ../gsl/gsl_statistics_ushort.h ../gsl/gsl_statistics_short.h \ + ../gsl/gsl_statistics_uchar.h ../gsl/gsl_statistics_char.h \ + ../templates_on.h lag1_source.c ../templates_off.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_statistics.h: + +../gsl/gsl_statistics_long_double.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_statistics_double.h: + +../gsl/gsl_statistics_float.h: + +../gsl/gsl_statistics_ulong.h: + +../gsl/gsl_statistics_long.h: + +../gsl/gsl_statistics_uint.h: + +../gsl/gsl_statistics_int.h: + +../gsl/gsl_statistics_ushort.h: + +../gsl/gsl_statistics_short.h: + +../gsl/gsl_statistics_uchar.h: + +../gsl/gsl_statistics_char.h: + +../templates_on.h: + +lag1_source.c: + +../templates_off.h: diff --git a/gsl-2.5/statistics/.deps/mad.Plo b/gsl-2.5/statistics/.deps/mad.Plo new file mode 100644 index 00000000..492db920 --- /dev/null +++ b/gsl-2.5/statistics/.deps/mad.Plo @@ -0,0 +1,170 @@ +mad.lo: mad.c /usr/include/stdc-predef.h ../config.h ../gsl/gsl_math.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_statistics.h \ + ../gsl/gsl_statistics_long_double.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/byteswap.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/bits/byteswap-16.h /usr/include/sys/types.h \ + /usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib-float.h \ + ../gsl/gsl_statistics_double.h ../gsl/gsl_statistics_float.h \ + ../gsl/gsl_statistics_ulong.h ../gsl/gsl_statistics_long.h \ + ../gsl/gsl_statistics_uint.h ../gsl/gsl_statistics_int.h \ + ../gsl/gsl_statistics_ushort.h ../gsl/gsl_statistics_short.h \ + ../gsl/gsl_statistics_uchar.h ../gsl/gsl_statistics_char.h \ + ../templates_on.h mad_source.c ../templates_off.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_statistics.h: + +../gsl/gsl_statistics_long_double.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_statistics_double.h: + +../gsl/gsl_statistics_float.h: + +../gsl/gsl_statistics_ulong.h: + +../gsl/gsl_statistics_long.h: + +../gsl/gsl_statistics_uint.h: + +../gsl/gsl_statistics_int.h: + +../gsl/gsl_statistics_ushort.h: + +../gsl/gsl_statistics_short.h: + +../gsl/gsl_statistics_uchar.h: + +../gsl/gsl_statistics_char.h: + +../templates_on.h: + +mad_source.c: + +../templates_off.h: diff --git a/gsl-2.5/statistics/.deps/mean.Plo b/gsl-2.5/statistics/.deps/mean.Plo new file mode 100644 index 00000000..e646fe2e --- /dev/null +++ b/gsl-2.5/statistics/.deps/mean.Plo @@ -0,0 +1,104 @@ +mean.lo: mean.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_statistics.h ../gsl/gsl_statistics_long_double.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/byteswap.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/bits/byteswap-16.h /usr/include/sys/types.h \ + /usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib-float.h \ + ../gsl/gsl_statistics_double.h ../gsl/gsl_statistics_float.h \ + ../gsl/gsl_statistics_ulong.h ../gsl/gsl_statistics_long.h \ + ../gsl/gsl_statistics_uint.h ../gsl/gsl_statistics_int.h \ + ../gsl/gsl_statistics_ushort.h ../gsl/gsl_statistics_short.h \ + ../gsl/gsl_statistics_uchar.h ../gsl/gsl_statistics_char.h \ + ../templates_on.h mean_source.c ../templates_off.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_statistics.h: + +../gsl/gsl_statistics_long_double.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_statistics_double.h: + +../gsl/gsl_statistics_float.h: + +../gsl/gsl_statistics_ulong.h: + +../gsl/gsl_statistics_long.h: + +../gsl/gsl_statistics_uint.h: + +../gsl/gsl_statistics_int.h: + +../gsl/gsl_statistics_ushort.h: + +../gsl/gsl_statistics_short.h: + +../gsl/gsl_statistics_uchar.h: + +../gsl/gsl_statistics_char.h: + +../templates_on.h: + +mean_source.c: + +../templates_off.h: diff --git a/gsl-2.5/statistics/.deps/median.Plo b/gsl-2.5/statistics/.deps/median.Plo new file mode 100644 index 00000000..6761fbcb --- /dev/null +++ b/gsl-2.5/statistics/.deps/median.Plo @@ -0,0 +1,104 @@ +median.lo: median.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_statistics.h ../gsl/gsl_statistics_long_double.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/byteswap.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/bits/byteswap-16.h /usr/include/sys/types.h \ + /usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib-float.h \ + ../gsl/gsl_statistics_double.h ../gsl/gsl_statistics_float.h \ + ../gsl/gsl_statistics_ulong.h ../gsl/gsl_statistics_long.h \ + ../gsl/gsl_statistics_uint.h ../gsl/gsl_statistics_int.h \ + ../gsl/gsl_statistics_ushort.h ../gsl/gsl_statistics_short.h \ + ../gsl/gsl_statistics_uchar.h ../gsl/gsl_statistics_char.h \ + ../templates_on.h median_source.c ../templates_off.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_statistics.h: + +../gsl/gsl_statistics_long_double.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_statistics_double.h: + +../gsl/gsl_statistics_float.h: + +../gsl/gsl_statistics_ulong.h: + +../gsl/gsl_statistics_long.h: + +../gsl/gsl_statistics_uint.h: + +../gsl/gsl_statistics_int.h: + +../gsl/gsl_statistics_ushort.h: + +../gsl/gsl_statistics_short.h: + +../gsl/gsl_statistics_uchar.h: + +../gsl/gsl_statistics_char.h: + +../templates_on.h: + +median_source.c: + +../templates_off.h: diff --git a/gsl-2.5/statistics/.deps/minmax.Plo b/gsl-2.5/statistics/.deps/minmax.Plo new file mode 100644 index 00000000..8298e3fc --- /dev/null +++ b/gsl-2.5/statistics/.deps/minmax.Plo @@ -0,0 +1,170 @@ +minmax.lo: minmax.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_statistics.h \ + ../gsl/gsl_statistics_long_double.h ../gsl/gsl_statistics_double.h \ + ../gsl/gsl_statistics_float.h ../gsl/gsl_statistics_ulong.h \ + ../gsl/gsl_statistics_long.h ../gsl/gsl_statistics_uint.h \ + ../gsl/gsl_statistics_int.h ../gsl/gsl_statistics_ushort.h \ + ../gsl/gsl_statistics_short.h ../gsl/gsl_statistics_uchar.h \ + ../gsl/gsl_statistics_char.h ../templates_on.h minmax_source.c \ + ../templates_off.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_statistics.h: + +../gsl/gsl_statistics_long_double.h: + +../gsl/gsl_statistics_double.h: + +../gsl/gsl_statistics_float.h: + +../gsl/gsl_statistics_ulong.h: + +../gsl/gsl_statistics_long.h: + +../gsl/gsl_statistics_uint.h: + +../gsl/gsl_statistics_int.h: + +../gsl/gsl_statistics_ushort.h: + +../gsl/gsl_statistics_short.h: + +../gsl/gsl_statistics_uchar.h: + +../gsl/gsl_statistics_char.h: + +../templates_on.h: + +minmax_source.c: + +../templates_off.h: diff --git a/gsl-2.5/statistics/.deps/p_variance.Plo b/gsl-2.5/statistics/.deps/p_variance.Plo new file mode 100644 index 00000000..1a0803c7 --- /dev/null +++ b/gsl-2.5/statistics/.deps/p_variance.Plo @@ -0,0 +1,104 @@ +p_variance.lo: p_variance.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_statistics.h ../gsl/gsl_statistics_long_double.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/byteswap.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/bits/byteswap-16.h /usr/include/sys/types.h \ + /usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib-float.h \ + ../gsl/gsl_statistics_double.h ../gsl/gsl_statistics_float.h \ + ../gsl/gsl_statistics_ulong.h ../gsl/gsl_statistics_long.h \ + ../gsl/gsl_statistics_uint.h ../gsl/gsl_statistics_int.h \ + ../gsl/gsl_statistics_ushort.h ../gsl/gsl_statistics_short.h \ + ../gsl/gsl_statistics_uchar.h ../gsl/gsl_statistics_char.h \ + ../templates_on.h p_variance_source.c ../templates_off.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_statistics.h: + +../gsl/gsl_statistics_long_double.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_statistics_double.h: + +../gsl/gsl_statistics_float.h: + +../gsl/gsl_statistics_ulong.h: + +../gsl/gsl_statistics_long.h: + +../gsl/gsl_statistics_uint.h: + +../gsl/gsl_statistics_int.h: + +../gsl/gsl_statistics_ushort.h: + +../gsl/gsl_statistics_short.h: + +../gsl/gsl_statistics_uchar.h: + +../gsl/gsl_statistics_char.h: + +../templates_on.h: + +p_variance_source.c: + +../templates_off.h: diff --git a/gsl-2.5/statistics/.deps/quantiles.Plo b/gsl-2.5/statistics/.deps/quantiles.Plo new file mode 100644 index 00000000..041f01eb --- /dev/null +++ b/gsl-2.5/statistics/.deps/quantiles.Plo @@ -0,0 +1,104 @@ +quantiles.lo: quantiles.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_statistics.h ../gsl/gsl_statistics_long_double.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/byteswap.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/bits/byteswap-16.h /usr/include/sys/types.h \ + /usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib-float.h \ + ../gsl/gsl_statistics_double.h ../gsl/gsl_statistics_float.h \ + ../gsl/gsl_statistics_ulong.h ../gsl/gsl_statistics_long.h \ + ../gsl/gsl_statistics_uint.h ../gsl/gsl_statistics_int.h \ + ../gsl/gsl_statistics_ushort.h ../gsl/gsl_statistics_short.h \ + ../gsl/gsl_statistics_uchar.h ../gsl/gsl_statistics_char.h \ + ../templates_on.h quantiles_source.c ../templates_off.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_statistics.h: + +../gsl/gsl_statistics_long_double.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_statistics_double.h: + +../gsl/gsl_statistics_float.h: + +../gsl/gsl_statistics_ulong.h: + +../gsl/gsl_statistics_long.h: + +../gsl/gsl_statistics_uint.h: + +../gsl/gsl_statistics_int.h: + +../gsl/gsl_statistics_ushort.h: + +../gsl/gsl_statistics_short.h: + +../gsl/gsl_statistics_uchar.h: + +../gsl/gsl_statistics_char.h: + +../templates_on.h: + +quantiles_source.c: + +../templates_off.h: diff --git a/gsl-2.5/statistics/.deps/select.Plo b/gsl-2.5/statistics/.deps/select.Plo new file mode 100644 index 00000000..401b23ce --- /dev/null +++ b/gsl-2.5/statistics/.deps/select.Plo @@ -0,0 +1,207 @@ +select.lo: select.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_math.h /usr/include/math.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_statistics.h ../gsl/gsl_statistics_long_double.h \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/byteswap.h \ + /usr/include/bits/byteswap-16.h /usr/include/sys/types.h \ + /usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib-float.h \ + ../gsl/gsl_statistics_double.h ../gsl/gsl_statistics_float.h \ + ../gsl/gsl_statistics_ulong.h ../gsl/gsl_statistics_long.h \ + ../gsl/gsl_statistics_uint.h ../gsl/gsl_statistics_int.h \ + ../gsl/gsl_statistics_ushort.h ../gsl/gsl_statistics_short.h \ + ../gsl/gsl_statistics_uchar.h ../gsl/gsl_statistics_char.h \ + ../templates_on.h select_source.c ../templates_off.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_statistics.h: + +../gsl/gsl_statistics_long_double.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_statistics_double.h: + +../gsl/gsl_statistics_float.h: + +../gsl/gsl_statistics_ulong.h: + +../gsl/gsl_statistics_long.h: + +../gsl/gsl_statistics_uint.h: + +../gsl/gsl_statistics_int.h: + +../gsl/gsl_statistics_ushort.h: + +../gsl/gsl_statistics_short.h: + +../gsl/gsl_statistics_uchar.h: + +../gsl/gsl_statistics_char.h: + +../templates_on.h: + +select_source.c: + +../templates_off.h: diff --git a/gsl-2.5/statistics/.deps/skew.Plo b/gsl-2.5/statistics/.deps/skew.Plo new file mode 100644 index 00000000..c3905df4 --- /dev/null +++ b/gsl-2.5/statistics/.deps/skew.Plo @@ -0,0 +1,127 @@ +skew.lo: skew.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_statistics.h \ + ../gsl/gsl_statistics_long_double.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/byteswap.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/bits/byteswap-16.h /usr/include/sys/types.h \ + /usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib-float.h \ + ../gsl/gsl_statistics_double.h ../gsl/gsl_statistics_float.h \ + ../gsl/gsl_statistics_ulong.h ../gsl/gsl_statistics_long.h \ + ../gsl/gsl_statistics_uint.h ../gsl/gsl_statistics_int.h \ + ../gsl/gsl_statistics_ushort.h ../gsl/gsl_statistics_short.h \ + ../gsl/gsl_statistics_uchar.h ../gsl/gsl_statistics_char.h \ + ../templates_on.h skew_source.c ../templates_off.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_statistics.h: + +../gsl/gsl_statistics_long_double.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_statistics_double.h: + +../gsl/gsl_statistics_float.h: + +../gsl/gsl_statistics_ulong.h: + +../gsl/gsl_statistics_long.h: + +../gsl/gsl_statistics_uint.h: + +../gsl/gsl_statistics_int.h: + +../gsl/gsl_statistics_ushort.h: + +../gsl/gsl_statistics_short.h: + +../gsl/gsl_statistics_uchar.h: + +../gsl/gsl_statistics_char.h: + +../templates_on.h: + +skew_source.c: + +../templates_off.h: diff --git a/gsl-2.5/statistics/.deps/test.Po b/gsl-2.5/statistics/.deps/test.Po new file mode 100644 index 00000000..4bd3f847 --- /dev/null +++ b/gsl-2.5/statistics/.deps/test.Po @@ -0,0 +1,343 @@ +test.o: test.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/string.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/xlocale.h /usr/include/bits/string.h \ + /usr/include/bits/string2.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/byteswap.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/bits/byteswap-16.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_math.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_test.h \ + ../gsl/gsl_sort.h ../gsl/gsl_sort_long_double.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_permutation.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_sort_double.h ../gsl/gsl_sort_float.h ../gsl/gsl_sort_ulong.h \ + ../gsl/gsl_sort_long.h ../gsl/gsl_sort_uint.h ../gsl/gsl_sort_int.h \ + ../gsl/gsl_sort_ushort.h ../gsl/gsl_sort_short.h ../gsl/gsl_sort_uchar.h \ + ../gsl/gsl_sort_char.h ../gsl/gsl_sort_vector.h \ + ../gsl/gsl_sort_vector_long_double.h ../gsl/gsl_vector_long_double.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_sort_vector_double.h \ + ../gsl/gsl_vector_double.h ../gsl/gsl_block_double.h \ + ../gsl/gsl_sort_vector_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_sort_vector_ulong.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_sort_vector_long.h ../gsl/gsl_vector_long.h \ + ../gsl/gsl_block_long.h ../gsl/gsl_sort_vector_uint.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h \ + ../gsl/gsl_sort_vector_int.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_sort_vector_ushort.h \ + ../gsl/gsl_vector_ushort.h ../gsl/gsl_block_ushort.h \ + ../gsl/gsl_sort_vector_short.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_sort_vector_uchar.h \ + ../gsl/gsl_vector_uchar.h ../gsl/gsl_block_uchar.h \ + ../gsl/gsl_sort_vector_char.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_statistics.h \ + ../gsl/gsl_statistics_long_double.h ../gsl/gsl_statistics_double.h \ + ../gsl/gsl_statistics_float.h ../gsl/gsl_statistics_ulong.h \ + ../gsl/gsl_statistics_long.h ../gsl/gsl_statistics_uint.h \ + ../gsl/gsl_statistics_int.h ../gsl/gsl_statistics_ushort.h \ + ../gsl/gsl_statistics_short.h ../gsl/gsl_statistics_uchar.h \ + ../gsl/gsl_statistics_char.h ../gsl/gsl_ieee_utils.h ../templates_on.h \ + test_float_source.c ../templates_off.h test_int_source.c + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/string.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string.h: + +/usr/include/bits/string2.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_test.h: + +../gsl/gsl_sort.h: + +../gsl/gsl_sort_long_double.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_permutation.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_sort_double.h: + +../gsl/gsl_sort_float.h: + +../gsl/gsl_sort_ulong.h: + +../gsl/gsl_sort_long.h: + +../gsl/gsl_sort_uint.h: + +../gsl/gsl_sort_int.h: + +../gsl/gsl_sort_ushort.h: + +../gsl/gsl_sort_short.h: + +../gsl/gsl_sort_uchar.h: + +../gsl/gsl_sort_char.h: + +../gsl/gsl_sort_vector.h: + +../gsl/gsl_sort_vector_long_double.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_sort_vector_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_sort_vector_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_sort_vector_ulong.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_sort_vector_long.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_sort_vector_uint.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_sort_vector_int.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_sort_vector_ushort.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_sort_vector_short.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_sort_vector_uchar.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_sort_vector_char.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_statistics.h: + +../gsl/gsl_statistics_long_double.h: + +../gsl/gsl_statistics_double.h: + +../gsl/gsl_statistics_float.h: + +../gsl/gsl_statistics_ulong.h: + +../gsl/gsl_statistics_long.h: + +../gsl/gsl_statistics_uint.h: + +../gsl/gsl_statistics_int.h: + +../gsl/gsl_statistics_ushort.h: + +../gsl/gsl_statistics_short.h: + +../gsl/gsl_statistics_uchar.h: + +../gsl/gsl_statistics_char.h: + +../gsl/gsl_ieee_utils.h: + +../templates_on.h: + +test_float_source.c: + +../templates_off.h: + +test_int_source.c: diff --git a/gsl-2.5/statistics/.deps/test_nist.Po b/gsl-2.5/statistics/.deps/test_nist.Po new file mode 100644 index 00000000..c05d87c0 --- /dev/null +++ b/gsl-2.5/statistics/.deps/test_nist.Po @@ -0,0 +1,146 @@ +test_nist.o: test_nist.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_test.h ../gsl/gsl_statistics.h \ + ../gsl/gsl_statistics_long_double.h ../gsl/gsl_statistics_double.h \ + ../gsl/gsl_statistics_float.h ../gsl/gsl_statistics_ulong.h \ + ../gsl/gsl_statistics_long.h ../gsl/gsl_statistics_uint.h \ + ../gsl/gsl_statistics_int.h ../gsl/gsl_statistics_ushort.h \ + ../gsl/gsl_statistics_short.h ../gsl/gsl_statistics_uchar.h \ + ../gsl/gsl_statistics_char.h ../gsl/gsl_ieee_utils.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_test.h: + +../gsl/gsl_statistics.h: + +../gsl/gsl_statistics_long_double.h: + +../gsl/gsl_statistics_double.h: + +../gsl/gsl_statistics_float.h: + +../gsl/gsl_statistics_ulong.h: + +../gsl/gsl_statistics_long.h: + +../gsl/gsl_statistics_uint.h: + +../gsl/gsl_statistics_int.h: + +../gsl/gsl_statistics_ushort.h: + +../gsl/gsl_statistics_short.h: + +../gsl/gsl_statistics_uchar.h: + +../gsl/gsl_statistics_char.h: + +../gsl/gsl_ieee_utils.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: diff --git a/gsl-2.5/statistics/.deps/test_robust.Po b/gsl-2.5/statistics/.deps/test_robust.Po new file mode 100644 index 00000000..62d67db3 --- /dev/null +++ b/gsl-2.5/statistics/.deps/test_robust.Po @@ -0,0 +1,318 @@ +test_robust.o: test_robust.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_math.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_test.h \ + ../gsl/gsl_errno.h /usr/include/stdio.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_statistics.h ../gsl/gsl_statistics_long_double.h \ + ../gsl/gsl_statistics_double.h ../gsl/gsl_statistics_float.h \ + ../gsl/gsl_statistics_ulong.h ../gsl/gsl_statistics_long.h \ + ../gsl/gsl_statistics_uint.h ../gsl/gsl_statistics_int.h \ + ../gsl/gsl_statistics_ushort.h ../gsl/gsl_statistics_short.h \ + ../gsl/gsl_statistics_uchar.h ../gsl/gsl_statistics_char.h \ + ../gsl/gsl_sort.h ../gsl/gsl_sort_long_double.h ../gsl/gsl_permutation.h \ + ../gsl/gsl_check_range.h ../gsl/gsl_sort_double.h \ + ../gsl/gsl_sort_float.h ../gsl/gsl_sort_ulong.h ../gsl/gsl_sort_long.h \ + ../gsl/gsl_sort_uint.h ../gsl/gsl_sort_int.h ../gsl/gsl_sort_ushort.h \ + ../gsl/gsl_sort_short.h ../gsl/gsl_sort_uchar.h ../gsl/gsl_sort_char.h \ + ../gsl/gsl_rng.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_complex.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_ieee_utils.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_test.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_statistics.h: + +../gsl/gsl_statistics_long_double.h: + +../gsl/gsl_statistics_double.h: + +../gsl/gsl_statistics_float.h: + +../gsl/gsl_statistics_ulong.h: + +../gsl/gsl_statistics_long.h: + +../gsl/gsl_statistics_uint.h: + +../gsl/gsl_statistics_int.h: + +../gsl/gsl_statistics_ushort.h: + +../gsl/gsl_statistics_short.h: + +../gsl/gsl_statistics_uchar.h: + +../gsl/gsl_statistics_char.h: + +../gsl/gsl_sort.h: + +../gsl/gsl_sort_long_double.h: + +../gsl/gsl_permutation.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_sort_double.h: + +../gsl/gsl_sort_float.h: + +../gsl/gsl_sort_ulong.h: + +../gsl/gsl_sort_long.h: + +../gsl/gsl_sort_uint.h: + +../gsl/gsl_sort_int.h: + +../gsl/gsl_sort_ushort.h: + +../gsl/gsl_sort_short.h: + +../gsl/gsl_sort_uchar.h: + +../gsl/gsl_sort_char.h: + +../gsl/gsl_rng.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_ieee_utils.h: diff --git a/gsl-2.5/statistics/.deps/trmean.Plo b/gsl-2.5/statistics/.deps/trmean.Plo new file mode 100644 index 00000000..f9bb94e3 --- /dev/null +++ b/gsl-2.5/statistics/.deps/trmean.Plo @@ -0,0 +1,170 @@ +trmean.lo: trmean.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_math.h /usr/include/math.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_statistics.h \ + ../gsl/gsl_statistics_long_double.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/byteswap.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/bits/byteswap-16.h /usr/include/sys/types.h \ + /usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib-float.h \ + ../gsl/gsl_statistics_double.h ../gsl/gsl_statistics_float.h \ + ../gsl/gsl_statistics_ulong.h ../gsl/gsl_statistics_long.h \ + ../gsl/gsl_statistics_uint.h ../gsl/gsl_statistics_int.h \ + ../gsl/gsl_statistics_ushort.h ../gsl/gsl_statistics_short.h \ + ../gsl/gsl_statistics_uchar.h ../gsl/gsl_statistics_char.h \ + ../templates_on.h trmean_source.c ../templates_off.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_statistics.h: + +../gsl/gsl_statistics_long_double.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_statistics_double.h: + +../gsl/gsl_statistics_float.h: + +../gsl/gsl_statistics_ulong.h: + +../gsl/gsl_statistics_long.h: + +../gsl/gsl_statistics_uint.h: + +../gsl/gsl_statistics_int.h: + +../gsl/gsl_statistics_ushort.h: + +../gsl/gsl_statistics_short.h: + +../gsl/gsl_statistics_uchar.h: + +../gsl/gsl_statistics_char.h: + +../templates_on.h: + +trmean_source.c: + +../templates_off.h: diff --git a/gsl-2.5/statistics/.deps/ttest.Plo b/gsl-2.5/statistics/.deps/ttest.Plo new file mode 100644 index 00000000..56a24a2f --- /dev/null +++ b/gsl-2.5/statistics/.deps/ttest.Plo @@ -0,0 +1,127 @@ +ttest.lo: ttest.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_statistics.h \ + ../gsl/gsl_statistics_long_double.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/byteswap.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/bits/byteswap-16.h /usr/include/sys/types.h \ + /usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib-float.h \ + ../gsl/gsl_statistics_double.h ../gsl/gsl_statistics_float.h \ + ../gsl/gsl_statistics_ulong.h ../gsl/gsl_statistics_long.h \ + ../gsl/gsl_statistics_uint.h ../gsl/gsl_statistics_int.h \ + ../gsl/gsl_statistics_ushort.h ../gsl/gsl_statistics_short.h \ + ../gsl/gsl_statistics_uchar.h ../gsl/gsl_statistics_char.h \ + ../templates_on.h ttest_source.c ../templates_off.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_statistics.h: + +../gsl/gsl_statistics_long_double.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_statistics_double.h: + +../gsl/gsl_statistics_float.h: + +../gsl/gsl_statistics_ulong.h: + +../gsl/gsl_statistics_long.h: + +../gsl/gsl_statistics_uint.h: + +../gsl/gsl_statistics_int.h: + +../gsl/gsl_statistics_ushort.h: + +../gsl/gsl_statistics_short.h: + +../gsl/gsl_statistics_uchar.h: + +../gsl/gsl_statistics_char.h: + +../templates_on.h: + +ttest_source.c: + +../templates_off.h: diff --git a/gsl-2.5/statistics/.deps/variance.Plo b/gsl-2.5/statistics/.deps/variance.Plo new file mode 100644 index 00000000..dd6af46c --- /dev/null +++ b/gsl-2.5/statistics/.deps/variance.Plo @@ -0,0 +1,127 @@ +variance.lo: variance.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_statistics.h \ + ../gsl/gsl_statistics_long_double.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/byteswap.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/bits/byteswap-16.h /usr/include/sys/types.h \ + /usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib-float.h \ + ../gsl/gsl_statistics_double.h ../gsl/gsl_statistics_float.h \ + ../gsl/gsl_statistics_ulong.h ../gsl/gsl_statistics_long.h \ + ../gsl/gsl_statistics_uint.h ../gsl/gsl_statistics_int.h \ + ../gsl/gsl_statistics_ushort.h ../gsl/gsl_statistics_short.h \ + ../gsl/gsl_statistics_uchar.h ../gsl/gsl_statistics_char.h \ + ../templates_on.h variance_source.c ../templates_off.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_statistics.h: + +../gsl/gsl_statistics_long_double.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_statistics_double.h: + +../gsl/gsl_statistics_float.h: + +../gsl/gsl_statistics_ulong.h: + +../gsl/gsl_statistics_long.h: + +../gsl/gsl_statistics_uint.h: + +../gsl/gsl_statistics_int.h: + +../gsl/gsl_statistics_ushort.h: + +../gsl/gsl_statistics_short.h: + +../gsl/gsl_statistics_uchar.h: + +../gsl/gsl_statistics_char.h: + +../templates_on.h: + +variance_source.c: + +../templates_off.h: diff --git a/gsl-2.5/statistics/.deps/wabsdev.Plo b/gsl-2.5/statistics/.deps/wabsdev.Plo new file mode 100644 index 00000000..e7f5cc49 --- /dev/null +++ b/gsl-2.5/statistics/.deps/wabsdev.Plo @@ -0,0 +1,127 @@ +wabsdev.lo: wabsdev.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_statistics.h \ + ../gsl/gsl_statistics_long_double.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/byteswap.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/bits/byteswap-16.h /usr/include/sys/types.h \ + /usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib-float.h \ + ../gsl/gsl_statistics_double.h ../gsl/gsl_statistics_float.h \ + ../gsl/gsl_statistics_ulong.h ../gsl/gsl_statistics_long.h \ + ../gsl/gsl_statistics_uint.h ../gsl/gsl_statistics_int.h \ + ../gsl/gsl_statistics_ushort.h ../gsl/gsl_statistics_short.h \ + ../gsl/gsl_statistics_uchar.h ../gsl/gsl_statistics_char.h \ + ../templates_on.h wabsdev_source.c ../templates_off.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_statistics.h: + +../gsl/gsl_statistics_long_double.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_statistics_double.h: + +../gsl/gsl_statistics_float.h: + +../gsl/gsl_statistics_ulong.h: + +../gsl/gsl_statistics_long.h: + +../gsl/gsl_statistics_uint.h: + +../gsl/gsl_statistics_int.h: + +../gsl/gsl_statistics_ushort.h: + +../gsl/gsl_statistics_short.h: + +../gsl/gsl_statistics_uchar.h: + +../gsl/gsl_statistics_char.h: + +../templates_on.h: + +wabsdev_source.c: + +../templates_off.h: diff --git a/gsl-2.5/statistics/.deps/wkurtosis.Plo b/gsl-2.5/statistics/.deps/wkurtosis.Plo new file mode 100644 index 00000000..c748318e --- /dev/null +++ b/gsl-2.5/statistics/.deps/wkurtosis.Plo @@ -0,0 +1,127 @@ +wkurtosis.lo: wkurtosis.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_statistics.h \ + ../gsl/gsl_statistics_long_double.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/byteswap.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/bits/byteswap-16.h /usr/include/sys/types.h \ + /usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib-float.h \ + ../gsl/gsl_statistics_double.h ../gsl/gsl_statistics_float.h \ + ../gsl/gsl_statistics_ulong.h ../gsl/gsl_statistics_long.h \ + ../gsl/gsl_statistics_uint.h ../gsl/gsl_statistics_int.h \ + ../gsl/gsl_statistics_ushort.h ../gsl/gsl_statistics_short.h \ + ../gsl/gsl_statistics_uchar.h ../gsl/gsl_statistics_char.h \ + ../templates_on.h wkurtosis_source.c ../templates_off.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_statistics.h: + +../gsl/gsl_statistics_long_double.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_statistics_double.h: + +../gsl/gsl_statistics_float.h: + +../gsl/gsl_statistics_ulong.h: + +../gsl/gsl_statistics_long.h: + +../gsl/gsl_statistics_uint.h: + +../gsl/gsl_statistics_int.h: + +../gsl/gsl_statistics_ushort.h: + +../gsl/gsl_statistics_short.h: + +../gsl/gsl_statistics_uchar.h: + +../gsl/gsl_statistics_char.h: + +../templates_on.h: + +wkurtosis_source.c: + +../templates_off.h: diff --git a/gsl-2.5/statistics/.deps/wmean.Plo b/gsl-2.5/statistics/.deps/wmean.Plo new file mode 100644 index 00000000..6e75455a --- /dev/null +++ b/gsl-2.5/statistics/.deps/wmean.Plo @@ -0,0 +1,104 @@ +wmean.lo: wmean.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_statistics.h ../gsl/gsl_statistics_long_double.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/byteswap.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/bits/byteswap-16.h /usr/include/sys/types.h \ + /usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib-float.h \ + ../gsl/gsl_statistics_double.h ../gsl/gsl_statistics_float.h \ + ../gsl/gsl_statistics_ulong.h ../gsl/gsl_statistics_long.h \ + ../gsl/gsl_statistics_uint.h ../gsl/gsl_statistics_int.h \ + ../gsl/gsl_statistics_ushort.h ../gsl/gsl_statistics_short.h \ + ../gsl/gsl_statistics_uchar.h ../gsl/gsl_statistics_char.h \ + ../templates_on.h wmean_source.c ../templates_off.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_statistics.h: + +../gsl/gsl_statistics_long_double.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_statistics_double.h: + +../gsl/gsl_statistics_float.h: + +../gsl/gsl_statistics_ulong.h: + +../gsl/gsl_statistics_long.h: + +../gsl/gsl_statistics_uint.h: + +../gsl/gsl_statistics_int.h: + +../gsl/gsl_statistics_ushort.h: + +../gsl/gsl_statistics_short.h: + +../gsl/gsl_statistics_uchar.h: + +../gsl/gsl_statistics_char.h: + +../templates_on.h: + +wmean_source.c: + +../templates_off.h: diff --git a/gsl-2.5/statistics/.deps/wskew.Plo b/gsl-2.5/statistics/.deps/wskew.Plo new file mode 100644 index 00000000..7071ae7b --- /dev/null +++ b/gsl-2.5/statistics/.deps/wskew.Plo @@ -0,0 +1,127 @@ +wskew.lo: wskew.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_statistics.h \ + ../gsl/gsl_statistics_long_double.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/byteswap.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/bits/byteswap-16.h /usr/include/sys/types.h \ + /usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib-float.h \ + ../gsl/gsl_statistics_double.h ../gsl/gsl_statistics_float.h \ + ../gsl/gsl_statistics_ulong.h ../gsl/gsl_statistics_long.h \ + ../gsl/gsl_statistics_uint.h ../gsl/gsl_statistics_int.h \ + ../gsl/gsl_statistics_ushort.h ../gsl/gsl_statistics_short.h \ + ../gsl/gsl_statistics_uchar.h ../gsl/gsl_statistics_char.h \ + ../templates_on.h wskew_source.c ../templates_off.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_statistics.h: + +../gsl/gsl_statistics_long_double.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_statistics_double.h: + +../gsl/gsl_statistics_float.h: + +../gsl/gsl_statistics_ulong.h: + +../gsl/gsl_statistics_long.h: + +../gsl/gsl_statistics_uint.h: + +../gsl/gsl_statistics_int.h: + +../gsl/gsl_statistics_ushort.h: + +../gsl/gsl_statistics_short.h: + +../gsl/gsl_statistics_uchar.h: + +../gsl/gsl_statistics_char.h: + +../templates_on.h: + +wskew_source.c: + +../templates_off.h: diff --git a/gsl-2.5/statistics/.deps/wvariance.Plo b/gsl-2.5/statistics/.deps/wvariance.Plo new file mode 100644 index 00000000..f476116b --- /dev/null +++ b/gsl-2.5/statistics/.deps/wvariance.Plo @@ -0,0 +1,127 @@ +wvariance.lo: wvariance.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_statistics.h \ + ../gsl/gsl_statistics_long_double.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/byteswap.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/bits/byteswap-16.h /usr/include/sys/types.h \ + /usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib-float.h \ + ../gsl/gsl_statistics_double.h ../gsl/gsl_statistics_float.h \ + ../gsl/gsl_statistics_ulong.h ../gsl/gsl_statistics_long.h \ + ../gsl/gsl_statistics_uint.h ../gsl/gsl_statistics_int.h \ + ../gsl/gsl_statistics_ushort.h ../gsl/gsl_statistics_short.h \ + ../gsl/gsl_statistics_uchar.h ../gsl/gsl_statistics_char.h \ + ../templates_on.h wvariance_source.c ../templates_off.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_statistics.h: + +../gsl/gsl_statistics_long_double.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_statistics_double.h: + +../gsl/gsl_statistics_float.h: + +../gsl/gsl_statistics_ulong.h: + +../gsl/gsl_statistics_long.h: + +../gsl/gsl_statistics_uint.h: + +../gsl/gsl_statistics_int.h: + +../gsl/gsl_statistics_ushort.h: + +../gsl/gsl_statistics_short.h: + +../gsl/gsl_statistics_uchar.h: + +../gsl/gsl_statistics_char.h: + +../templates_on.h: + +wvariance_source.c: + +../templates_off.h: diff --git a/gsl-2.5/statistics/.libs/libgslstatistics.la b/gsl-2.5/statistics/.libs/libgslstatistics.la new file mode 120000 index 00000000..b4dce480 --- /dev/null +++ b/gsl-2.5/statistics/.libs/libgslstatistics.la @@ -0,0 +1 @@ +../libgslstatistics.la \ No newline at end of file diff --git a/gsl-2.5/statistics/ChangeLog b/gsl-2.5/statistics/ChangeLog new file mode 100644 index 00000000..e9e685ad --- /dev/null +++ b/gsl-2.5/statistics/ChangeLog @@ -0,0 +1,127 @@ +2008-07-03 Brian Gough + + * Makefile.am (INCLUDES): use top_srcdir instead of top_builddir + +2007-10-02 Brian Gough + + * variance_source.c: added functions for sum of squares and + weighted sum of squares + +2006-01-07 Brian Gough + + * test_float_source.c: additional tests for NaNs + + * minmax_source.c: handle NaNs correctly, if any element is NaN + then the max and min are NaN + +Sat Jul 15 12:23:09 2000 Brian Gough + + * test_nist.c: added url/reference to the original NIST datasets + +Thu May 4 15:11:11 2000 Brian Gough + + * covariance.c: added covariance function + +Wed Mar 8 15:29:19 2000 Brian Gough + + * Function Name Reorganization: The function suffix "_with_mean" + has been changed to "_m", the function suffix "_with_mean_and_sd" + has been changed to "_m_sd". The variance function est_variance + has been changed to simply _variance, (similarly for est_sd, which + is now _sd), while the function _variance is now + _variance_with_fixed_mean (and _sd is _sd_with_fixed_mean). + +Wed Mar 1 11:09:21 2000 Brian Gough + + * wabsdev.c wabsdev_source.c wkurtosis.c wkurtosis_source.c + wmean.c wmean_source.c wskew.c wskew_source.c wvariance.c + wvariance_source.c: added support for weighted statistics + + * removed source.h (no longer used) + +Tue Feb 29 10:35:23 2000 Brian Gough + + * changed arguments of pvariance and ttest to have consistent form + (DATA,STRIDE,SIZE) + +Mon Feb 28 20:29:08 2000 Brian Gough + + * removed sort function since this is now available in the sort + directory. + + * converted all functions to take a stride argument, in + preparation for supporting statistics on vectors + +1998-11-06 + + * test.c: added prototype for memcpy using #include + +Wed Aug 12 12:34:24 1998 Brian Gough + + * quantiles.c: Renamed percentile to quantile throughout. This is + the correct name for the quantity, mathematically speaking. + +Wed Aug 5 12:34:58 1998 Brian Gough + + * mkheaders.pl: script to generate all the headers from + gsl_statistics_int.h + + * test.h: removed test.h, not needed + + * test.c: added tests for all types + + * converted functions to use 'long double' for internal calculations, + for extra range. + + * converted all the functions to use templates_on.h and + templates_off.h + +Mon Jun 1 23:47:23 1998 Brian Gough + + * lag1_source.c: added a new function to compute the + lag1-autocorrelation + + * test_nist.c: added some numerical accuracy tests from NIST + +Fri Apr 10 15:11:51 1998 Brian Gough + + * renamed pooled_variance.c, etc to p_variance to avoid linker + complaints about long filenames on some platforms + +Wed Apr 8 18:11:48 1998 Brian Gough + + * Added a new recurrence algorithm for the mean, variance, skew + and kurtosis. It uses a running value which is less likely to + overflow than a global sum. + +Mon Mar 30 22:18:59 1998 Brian Gough + + * completely reorganised the source system to use macros as + a primitive form of templates. + +Sun Mar 29 16:25:24 1998 Brian Gough + + * make everything const where possible (to reduce the chance of errors) + +Sun Mar 22 23:34:05 1998 Brian Gough + + * skew.c: compute the skewness of a dataset + + * percentiles.c: find a given percentile from a sorted dataset + + * minmax.c: allow the user to find the indices of the max/min + data points, in addition to the max/min values + + * median.c: compute the median of a sorted dataset + + * kurtosis.c: compute the kurtosis + + * absdev.c: compute absolute deviations + + * split statistics functions into double versions (gsl_stats) and + integer versions (gsl_stats_int). There is a script + (convert_double_to_int.pl) to make the integer versions from the + double versions. + + + diff --git a/gsl-2.5/statistics/Makefile b/gsl-2.5/statistics/Makefile new file mode 100644 index 00000000..fa780c3c --- /dev/null +++ b/gsl-2.5/statistics/Makefile @@ -0,0 +1,1056 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# statistics/Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + + + + +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/gsl +pkgincludedir = $(includedir)/gsl +pkglibdir = $(libdir)/gsl +pkglibexecdir = $(libexecdir)/gsl +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = x86_64-unknown-linux-gnu +host_triplet = x86_64-unknown-linux-gnu +check_PROGRAMS = test$(EXEEXT) +subdir = statistics +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp \ + $(noinst_HEADERS) $(pkginclude_HEADERS) \ + $(top_srcdir)/test-driver ChangeLog TODO +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +libgslstatistics_la_LIBADD = +am_libgslstatistics_la_OBJECTS = mean.lo variance.lo absdev.lo skew.lo \ + kurtosis.lo lag1.lo p_variance.lo minmax.lo ttest.lo mad.lo \ + median.lo covariance.lo quantiles.lo select.lo Sn.lo Qn.lo \ + gastwirth.lo trmean.lo wmean.lo wvariance.lo wabsdev.lo \ + wskew.lo wkurtosis.lo +libgslstatistics_la_OBJECTS = $(am_libgslstatistics_la_OBJECTS) +AM_V_lt = $(am__v_lt_$(V)) +am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) +am__v_lt_0 = --silent +am__v_lt_1 = +am_test_OBJECTS = test.$(OBJEXT) test_nist.$(OBJEXT) \ + test_robust.$(OBJEXT) +test_OBJECTS = $(am_test_OBJECTS) +test_DEPENDENCIES = libgslstatistics.la ../sort/libgslsort.la \ + ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la \ + ../rng/libgslrng.la ../test/libgsltest.la ../sys/libgslsys.la \ + ../utils/libutils.la ../vector/libgslvector.la +AM_V_P = $(am__v_P_$(V)) +am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY)) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_$(V)) +am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_$(V)) +am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I. -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_$(V)) +am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_$(V)) +am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libgslstatistics_la_SOURCES) $(test_SOURCES) +DIST_SOURCES = $(libgslstatistics_la_SOURCES) $(test_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(pkgincludedir)" +HEADERS = $(noinst_HEADERS) $(pkginclude_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = .test +LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing aclocal-1.13 +AMTAR = $${TAR-tar} +AM_DEFAULT_VERBOSITY = 1 +AR = ar +AS = as +AUTOCONF = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing autoconf +AUTOHEADER = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing autoheader +AUTOMAKE = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing automake-1.13 +AWK = gawk +CC = gcc +CCDEPMODE = depmode=gcc3 +CFLAGS = -g -O2 +CPP = gcc -E +CPPFLAGS = +CYGPATH_W = echo +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +DLLTOOL = false +DSYMUTIL = +DUMPBIN = +ECHO_C = +ECHO_N = -n +ECHO_T = +EGREP = /usr/bin/grep -E +EXEEXT = +FGREP = /usr/bin/grep -F +GREP = /usr/bin/grep +GSLCBLAS_LDFLAGS = +GSL_CFLAGS = -I${prefix}/include +GSL_LDFLAGS = +GSL_LIBADD = +GSL_LIBM = -lm +GSL_LIBS = -L${exec_prefix}/lib -lgsl +GSL_LT_CBLAS_VERSION = 0:0:0 +GSL_LT_VERSION = 24:0:1 +GSL_MAJOR_VERSION = 2 +GSL_MINOR_VERSION = 5 +HAVE_AIX_IEEE_INTERFACE = +HAVE_DARWIN86_IEEE_INTERFACE = +HAVE_DARWIN_IEEE_INTERFACE = +HAVE_FREEBSD_IEEE_INTERFACE = +HAVE_GNUM68K_IEEE_INTERFACE = +HAVE_GNUPPC_IEEE_INTERFACE = +HAVE_GNUSPARC_IEEE_INTERFACE = +HAVE_GNUX86_IEEE_INTERFACE = +HAVE_HPUX11_IEEE_INTERFACE = +HAVE_HPUX_IEEE_INTERFACE = +HAVE_IRIX_IEEE_INTERFACE = +HAVE_NETBSD_IEEE_INTERFACE = +HAVE_OPENBSD_IEEE_INTERFACE = +HAVE_OS2EMX_IEEE_INTERFACE = +HAVE_SOLARIS_IEEE_INTERFACE = +HAVE_SUNOS4_IEEE_INTERFACE = +HAVE_TRU64_IEEE_INTERFACE = +INSTALL = /usr/bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = $(install_sh) -c -s +LD = /usr/bin/ld -m elf_x86_64 +LDFLAGS = +LIBM = -lm +LIBOBJS = +LIBS = -lm +LIBTOOL = $(SHELL) $(top_builddir)/libtool +LIPO = +LN_S = ln -s +LTLIBOBJS = +MAINT = # +MAKEINFO = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing makeinfo +MANIFEST_TOOL = : +MKDIR_P = /usr/bin/mkdir -p +NM = /usr/bin/nm -B +NMEDIT = +OBJDUMP = objdump +OBJEXT = o +OTOOL = +OTOOL64 = +PACKAGE = gsl +PACKAGE_BUGREPORT = +PACKAGE_NAME = gsl +PACKAGE_STRING = gsl 2.5 +PACKAGE_TARNAME = gsl +PACKAGE_URL = +PACKAGE_VERSION = 2.5 +PATH_SEPARATOR = : +RANLIB = ranlib +SED = /usr/bin/sed +SET_MAKE = +SHELL = /bin/sh +STRIP = strip +VERSION = 2.5 +abs_builddir = /home/groups/kipac/chto/package/gsl/gsl-2.5/statistics +abs_srcdir = /home/groups/kipac/chto/package/gsl/gsl-2.5/statistics +abs_top_builddir = /home/groups/kipac/chto/package/gsl/gsl-2.5 +abs_top_srcdir = /home/groups/kipac/chto/package/gsl/gsl-2.5 +ac_ct_AR = ar +ac_ct_CC = gcc +ac_ct_DUMPBIN = +am__include = include +am__leading_dot = . +am__quote = +am__tar = $${TAR-tar} chof - "$$tardir" +am__untar = $${TAR-tar} xf - +bindir = ${exec_prefix}/bin +build = x86_64-unknown-linux-gnu +build_alias = +build_cpu = x86_64 +build_os = linux-gnu +build_vendor = unknown +builddir = . +datadir = ${datarootdir} +datarootdir = ${prefix}/share +docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} +dvidir = ${docdir} +exec_prefix = ${prefix} +host = x86_64-unknown-linux-gnu +host_alias = +host_cpu = x86_64 +host_os = linux-gnu +host_vendor = unknown +htmldir = ${docdir} +includedir = ${prefix}/include +infodir = ${datarootdir}/info +install_sh = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/install-sh +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +localedir = ${datarootdir}/locale +localstatedir = ${prefix}/var +mandir = ${datarootdir}/man +mkdir_p = $(MKDIR_P) +oldincludedir = /usr/include +pdfdir = ${docdir} +prefix = /home/groups/kipac/chto/package/gsl/gsl_lib +program_transform_name = s,x,x, +psdir = ${docdir} +sbindir = ${exec_prefix}/sbin +sharedstatedir = ${prefix}/com +srcdir = . +sysconfdir = ${prefix}/etc +target_alias = +top_build_prefix = ../ +top_builddir = .. +top_srcdir = .. +noinst_LTLIBRARIES = libgslstatistics.la +pkginclude_HEADERS = gsl_statistics.h gsl_statistics_char.h gsl_statistics_double.h gsl_statistics_float.h gsl_statistics_int.h gsl_statistics_long.h gsl_statistics_long_double.h gsl_statistics_short.h gsl_statistics_uchar.h gsl_statistics_uint.h gsl_statistics_ulong.h gsl_statistics_ushort.h +AM_CPPFLAGS = -I$(top_srcdir) +libgslstatistics_la_SOURCES = mean.c variance.c absdev.c skew.c kurtosis.c lag1.c p_variance.c minmax.c ttest.c mad.c median.c covariance.c quantiles.c select.c Sn.c Qn.c gastwirth.c trmean.c wmean.c wvariance.c wabsdev.c wskew.c wkurtosis.c +noinst_HEADERS = mean_source.c variance_source.c covariance_source.c absdev_source.c skew_source.c kurtosis_source.c lag1_source.c p_variance_source.c minmax_source.c ttest_source.c mad_source.c median_source.c quantiles_source.c select_source.c Sn_source.c Qn_source.c gastwirth_source.c trmean_source.c wmean_source.c wvariance_source.c wabsdev_source.c wskew_source.c wkurtosis_source.c test_float_source.c test_int_source.c +TESTS = $(check_PROGRAMS) +test_SOURCES = test.c test_nist.c test_robust.c +test_LDADD = libgslstatistics.la ../sort/libgslsort.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../rng/libgslrng.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la ../vector/libgslvector.la +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu statistics/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu statistics/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: # $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): # $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libgslstatistics.la: $(libgslstatistics_la_OBJECTS) $(libgslstatistics_la_DEPENDENCIES) $(EXTRA_libgslstatistics_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(libgslstatistics_la_OBJECTS) $(libgslstatistics_la_LIBADD) $(LIBS) + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) $(EXTRA_test_DEPENDENCIES) + @rm -f test$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_OBJECTS) $(test_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +include ./$(DEPDIR)/Qn.Plo +include ./$(DEPDIR)/Sn.Plo +include ./$(DEPDIR)/absdev.Plo +include ./$(DEPDIR)/covariance.Plo +include ./$(DEPDIR)/gastwirth.Plo +include ./$(DEPDIR)/kurtosis.Plo +include ./$(DEPDIR)/lag1.Plo +include ./$(DEPDIR)/mad.Plo +include ./$(DEPDIR)/mean.Plo +include ./$(DEPDIR)/median.Plo +include ./$(DEPDIR)/minmax.Plo +include ./$(DEPDIR)/p_variance.Plo +include ./$(DEPDIR)/quantiles.Plo +include ./$(DEPDIR)/select.Plo +include ./$(DEPDIR)/skew.Plo +include ./$(DEPDIR)/test.Po +include ./$(DEPDIR)/test_nist.Po +include ./$(DEPDIR)/test_robust.Po +include ./$(DEPDIR)/trmean.Plo +include ./$(DEPDIR)/ttest.Plo +include ./$(DEPDIR)/variance.Plo +include ./$(DEPDIR)/wabsdev.Plo +include ./$(DEPDIR)/wkurtosis.Plo +include ./$(DEPDIR)/wmean.Plo +include ./$(DEPDIR)/wskew.Plo +include ./$(DEPDIR)/wvariance.Plo + +.c.o: + $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# $(AM_V_CC)source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(COMPILE) -c $< + +.c.obj: + $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# $(AM_V_CC)source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: + $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +# $(AM_V_CC)source='$<' object='$@' libtool=yes \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-pkgincludeHEADERS: $(pkginclude_HEADERS) + @$(NORMAL_INSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \ + done + +uninstall-pkgincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + else \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_PROGRAMS) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +test.log: test$(EXEEXT) + @p='test$(EXEEXT)'; \ + b='test'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +#.test$(EXEEXT).log: +# @p='$<'; \ +# $(am__set_b); \ +# $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +# --log-file $$b.log --trs-file $$b.trs \ +# $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +# "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-am +all-am: Makefile $(LTLIBRARIES) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(pkgincludedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-pkgincludeHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-pkgincludeHEADERS + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES cscopelist-am ctags ctags-am distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-pkgincludeHEADERS \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + recheck tags tags-am uninstall uninstall-am \ + uninstall-pkgincludeHEADERS + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gsl-2.5/statistics/Makefile.am b/gsl-2.5/statistics/Makefile.am new file mode 100644 index 00000000..cf333328 --- /dev/null +++ b/gsl-2.5/statistics/Makefile.am @@ -0,0 +1,19 @@ +## Process this file with automake to produce Makefile.in + +noinst_LTLIBRARIES = libgslstatistics.la + +pkginclude_HEADERS = gsl_statistics.h gsl_statistics_char.h gsl_statistics_double.h gsl_statistics_float.h gsl_statistics_int.h gsl_statistics_long.h gsl_statistics_long_double.h gsl_statistics_short.h gsl_statistics_uchar.h gsl_statistics_uint.h gsl_statistics_ulong.h gsl_statistics_ushort.h + +AM_CPPFLAGS = -I$(top_srcdir) + +libgslstatistics_la_SOURCES = mean.c variance.c absdev.c skew.c kurtosis.c lag1.c p_variance.c minmax.c ttest.c mad.c median.c covariance.c quantiles.c select.c Sn.c Qn.c gastwirth.c trmean.c wmean.c wvariance.c wabsdev.c wskew.c wkurtosis.c + +noinst_HEADERS = mean_source.c variance_source.c covariance_source.c absdev_source.c skew_source.c kurtosis_source.c lag1_source.c p_variance_source.c minmax_source.c ttest_source.c mad_source.c median_source.c quantiles_source.c select_source.c Sn_source.c Qn_source.c gastwirth_source.c trmean_source.c wmean_source.c wvariance_source.c wabsdev_source.c wskew_source.c wkurtosis_source.c test_float_source.c test_int_source.c + +check_PROGRAMS = test +TESTS = $(check_PROGRAMS) + +test_SOURCES = test.c test_nist.c test_robust.c +test_LDADD = libgslstatistics.la ../sort/libgslsort.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../rng/libgslrng.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la ../vector/libgslvector.la + + diff --git a/gsl-2.5/statistics/Makefile.in b/gsl-2.5/statistics/Makefile.in new file mode 100644 index 00000000..a79c55e9 --- /dev/null +++ b/gsl-2.5/statistics/Makefile.in @@ -0,0 +1,1056 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + + +VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +check_PROGRAMS = test$(EXEEXT) +subdir = statistics +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp \ + $(noinst_HEADERS) $(pkginclude_HEADERS) \ + $(top_srcdir)/test-driver ChangeLog TODO +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +libgslstatistics_la_LIBADD = +am_libgslstatistics_la_OBJECTS = mean.lo variance.lo absdev.lo skew.lo \ + kurtosis.lo lag1.lo p_variance.lo minmax.lo ttest.lo mad.lo \ + median.lo covariance.lo quantiles.lo select.lo Sn.lo Qn.lo \ + gastwirth.lo trmean.lo wmean.lo wvariance.lo wabsdev.lo \ + wskew.lo wkurtosis.lo +libgslstatistics_la_OBJECTS = $(am_libgslstatistics_la_OBJECTS) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +am_test_OBJECTS = test.$(OBJEXT) test_nist.$(OBJEXT) \ + test_robust.$(OBJEXT) +test_OBJECTS = $(am_test_OBJECTS) +test_DEPENDENCIES = libgslstatistics.la ../sort/libgslsort.la \ + ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la \ + ../rng/libgslrng.la ../test/libgsltest.la ../sys/libgslsys.la \ + ../utils/libutils.la ../vector/libgslvector.la +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libgslstatistics_la_SOURCES) $(test_SOURCES) +DIST_SOURCES = $(libgslstatistics_la_SOURCES) $(test_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(pkgincludedir)" +HEADERS = $(noinst_HEADERS) $(pkginclude_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = @EXEEXT@ .test +LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +GSLCBLAS_LDFLAGS = @GSLCBLAS_LDFLAGS@ +GSL_CFLAGS = @GSL_CFLAGS@ +GSL_LDFLAGS = @GSL_LDFLAGS@ +GSL_LIBADD = @GSL_LIBADD@ +GSL_LIBM = @GSL_LIBM@ +GSL_LIBS = @GSL_LIBS@ +GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ +GSL_LT_VERSION = @GSL_LT_VERSION@ +GSL_MAJOR_VERSION = @GSL_MAJOR_VERSION@ +GSL_MINOR_VERSION = @GSL_MINOR_VERSION@ +HAVE_AIX_IEEE_INTERFACE = @HAVE_AIX_IEEE_INTERFACE@ +HAVE_DARWIN86_IEEE_INTERFACE = @HAVE_DARWIN86_IEEE_INTERFACE@ +HAVE_DARWIN_IEEE_INTERFACE = @HAVE_DARWIN_IEEE_INTERFACE@ +HAVE_FREEBSD_IEEE_INTERFACE = @HAVE_FREEBSD_IEEE_INTERFACE@ +HAVE_GNUM68K_IEEE_INTERFACE = @HAVE_GNUM68K_IEEE_INTERFACE@ +HAVE_GNUPPC_IEEE_INTERFACE = @HAVE_GNUPPC_IEEE_INTERFACE@ +HAVE_GNUSPARC_IEEE_INTERFACE = @HAVE_GNUSPARC_IEEE_INTERFACE@ +HAVE_GNUX86_IEEE_INTERFACE = @HAVE_GNUX86_IEEE_INTERFACE@ +HAVE_HPUX11_IEEE_INTERFACE = @HAVE_HPUX11_IEEE_INTERFACE@ +HAVE_HPUX_IEEE_INTERFACE = @HAVE_HPUX_IEEE_INTERFACE@ +HAVE_IRIX_IEEE_INTERFACE = @HAVE_IRIX_IEEE_INTERFACE@ +HAVE_NETBSD_IEEE_INTERFACE = @HAVE_NETBSD_IEEE_INTERFACE@ +HAVE_OPENBSD_IEEE_INTERFACE = @HAVE_OPENBSD_IEEE_INTERFACE@ +HAVE_OS2EMX_IEEE_INTERFACE = @HAVE_OS2EMX_IEEE_INTERFACE@ +HAVE_SOLARIS_IEEE_INTERFACE = @HAVE_SOLARIS_IEEE_INTERFACE@ +HAVE_SUNOS4_IEEE_INTERFACE = @HAVE_SUNOS4_IEEE_INTERFACE@ +HAVE_TRU64_IEEE_INTERFACE = @HAVE_TRU64_IEEE_INTERFACE@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBM = @LIBM@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +noinst_LTLIBRARIES = libgslstatistics.la +pkginclude_HEADERS = gsl_statistics.h gsl_statistics_char.h gsl_statistics_double.h gsl_statistics_float.h gsl_statistics_int.h gsl_statistics_long.h gsl_statistics_long_double.h gsl_statistics_short.h gsl_statistics_uchar.h gsl_statistics_uint.h gsl_statistics_ulong.h gsl_statistics_ushort.h +AM_CPPFLAGS = -I$(top_srcdir) +libgslstatistics_la_SOURCES = mean.c variance.c absdev.c skew.c kurtosis.c lag1.c p_variance.c minmax.c ttest.c mad.c median.c covariance.c quantiles.c select.c Sn.c Qn.c gastwirth.c trmean.c wmean.c wvariance.c wabsdev.c wskew.c wkurtosis.c +noinst_HEADERS = mean_source.c variance_source.c covariance_source.c absdev_source.c skew_source.c kurtosis_source.c lag1_source.c p_variance_source.c minmax_source.c ttest_source.c mad_source.c median_source.c quantiles_source.c select_source.c Sn_source.c Qn_source.c gastwirth_source.c trmean_source.c wmean_source.c wvariance_source.c wabsdev_source.c wskew_source.c wkurtosis_source.c test_float_source.c test_int_source.c +TESTS = $(check_PROGRAMS) +test_SOURCES = test.c test_nist.c test_robust.c +test_LDADD = libgslstatistics.la ../sort/libgslsort.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../rng/libgslrng.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la ../vector/libgslvector.la +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu statistics/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu statistics/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libgslstatistics.la: $(libgslstatistics_la_OBJECTS) $(libgslstatistics_la_DEPENDENCIES) $(EXTRA_libgslstatistics_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(libgslstatistics_la_OBJECTS) $(libgslstatistics_la_LIBADD) $(LIBS) + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) $(EXTRA_test_DEPENDENCIES) + @rm -f test$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_OBJECTS) $(test_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Qn.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Sn.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/absdev.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/covariance.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gastwirth.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/kurtosis.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lag1.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mad.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mean.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/median.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/minmax.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/p_variance.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/quantiles.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/select.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/skew.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_nist.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_robust.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/trmean.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ttest.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/variance.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wabsdev.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wkurtosis.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wmean.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wskew.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wvariance.Plo@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-pkgincludeHEADERS: $(pkginclude_HEADERS) + @$(NORMAL_INSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \ + done + +uninstall-pkgincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + else \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_PROGRAMS) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +test.log: test$(EXEEXT) + @p='test$(EXEEXT)'; \ + b='test'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +@am__EXEEXT_TRUE@.test$(EXEEXT).log: +@am__EXEEXT_TRUE@ @p='$<'; \ +@am__EXEEXT_TRUE@ $(am__set_b); \ +@am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +@am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ +@am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +@am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-am +all-am: Makefile $(LTLIBRARIES) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(pkgincludedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-pkgincludeHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-pkgincludeHEADERS + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES cscopelist-am ctags ctags-am distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-pkgincludeHEADERS \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + recheck tags tags-am uninstall uninstall-am \ + uninstall-pkgincludeHEADERS + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gsl-2.5/statistics/Qn.c b/gsl-2.5/statistics/Qn.c new file mode 100644 index 00000000..f750d20a --- /dev/null +++ b/gsl-2.5/statistics/Qn.c @@ -0,0 +1,73 @@ +#include +#include +#include +#include + +#define BASE_LONG_DOUBLE +#include "templates_on.h" +#include "Qn_source.c" +#include "templates_off.h" +#undef BASE_LONG_DOUBLE + +#define BASE_DOUBLE +#include "templates_on.h" +#include "Qn_source.c" +#include "templates_off.h" +#undef BASE_DOUBLE + +#define BASE_FLOAT +#include "templates_on.h" +#include "Qn_source.c" +#include "templates_off.h" +#undef BASE_FLOAT + +#define BASE_ULONG +#include "templates_on.h" +#include "Qn_source.c" +#include "templates_off.h" +#undef BASE_ULONG + +#define BASE_LONG +#include "templates_on.h" +#include "Qn_source.c" +#include "templates_off.h" +#undef BASE_LONG + +#define BASE_UINT +#include "templates_on.h" +#include "Qn_source.c" +#include "templates_off.h" +#undef BASE_UINT + +#define BASE_INT +#include "templates_on.h" +#include "Qn_source.c" +#include "templates_off.h" +#undef BASE_INT + +#define BASE_USHORT +#include "templates_on.h" +#include "Qn_source.c" +#include "templates_off.h" +#undef BASE_USHORT + +#define BASE_SHORT +#include "templates_on.h" +#include "Qn_source.c" +#include "templates_off.h" +#undef BASE_SHORT + +#define BASE_UCHAR +#include "templates_on.h" +#include "Qn_source.c" +#include "templates_off.h" +#undef BASE_UCHAR + +#define BASE_CHAR +#include "templates_on.h" +#include "Qn_source.c" +#include "templates_off.h" +#undef BASE_CHAR + + + diff --git a/gsl-2.5/statistics/Qn.lo b/gsl-2.5/statistics/Qn.lo new file mode 100644 index 00000000..ee3ab6ae --- /dev/null +++ b/gsl-2.5/statistics/Qn.lo @@ -0,0 +1,12 @@ +# Qn.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/Qn.o' + +# Name of the non-PIC object +non_pic_object='Qn.o' + diff --git a/gsl-2.5/statistics/Qn_source.c b/gsl-2.5/statistics/Qn_source.c new file mode 100644 index 00000000..794a8e64 --- /dev/null +++ b/gsl-2.5/statistics/Qn_source.c @@ -0,0 +1,381 @@ +/* statistics/Qn_source.c + * + * Copyright (C) 2018 Patrick Alken + * Copyright (C) 2005, 2006, 2007 Martin Maechler, ETH Zurich + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* This is a merge of the C version of original files qn.f and sn.f, + * translated by f2c (version 20010821). ==== ==== + * and then by f2c-clean,v 1.9 2000/01/13 13:46:53 + * and further clean-edited manually by Martin Maechler. + * + * Further added interface functions to be called via .C() from R or S-plus + * Note that Peter Rousseeuw has explicitely given permission to + * use his code under the GPL for the R project. + */ + +/* Original comments by the authors of the Fortran original code, + * (merged for Qn & Sn in one file by M.M.): + + This file contains fortran functions for two new robust estimators + of scale denoted as Qn and Sn, decribed in Rousseeuw and Croux (1993). + These estimators have a high breakdown point and a bounded influence + function. The implementation given here is very fast (running in + O(n logn) time) and needs little storage space. + + Rousseeuw, P.J. and Croux, C. (1993) + Alternatives to the Median Absolute Deviation", + Journal of the American Statistical Association, Vol. 88, 1273-1283. + + For both estimators, implementations in the pascal language can be + obtained from the original authors. + + This software may be used and copied freely for scientific + and/or non-commercial purposes, provided reference is made + to the abovementioned paper. + +Note by MM: We have explicit permission from P.Rousseeuw to +licence it under the GNU Public Licence. +*/ + +#ifndef int64_t +#define int64_t long int +#endif + +static BASE FUNCTION(Qn,whimed)(BASE * a, int * w, int n, BASE * a_cand, BASE * a_srt, int * w_cand); + +/* +gsl_stats_Qn0_from_sorted_data() + Efficient algorithm for the scale estimator: + + Q_n0 = { |x_i - x_j|; i ni) + { + j = 0; + /* Truncation to float : try to make sure that the same values are got later (guard bits !) */ + for (i = 1; i < ni; ++i) + { + if (left[i] <= right[i]) + { + weight[j] = right[i] - left[i] + 1; + jh = left[i] + weight[j] / 2; + work[j] = sorted_data[i * stride] - sorted_data[(ni - jh) * stride]; + ++j; + } + } + + trial = FUNCTION(Qn,whimed)(work, weight, j, a_cand, a_srt, /*iw_cand*/ p); + + j = 0; + for (i = ni - 1; i >= 0; --i) + { + while (j < ni && ((double)(sorted_data[i * stride] - sorted_data[(ni - j - 1) * stride])) < trial) + ++j; + + p[i] = j; + } + + j = ni + 1; + for (i = 0; i < ni; ++i) + { + while ((double)(sorted_data[i * stride] - sorted_data[(ni - j + 1) * stride]) > trial) + --j; + + q[i] = j; + } + + sump = 0; + sumq = 0; + + for (i = 0; i < ni; ++i) + { + sump += p[i]; + sumq += q[i] - 1; + } + + if (knew <= sump) + { + for (i = 0; i < ni; ++i) + right[i] = p[i]; + + nr = sump; + } + else if (knew > sumq) + { + for (i = 0; i < ni; ++i) + left[i] = q[i]; + + nl = sumq; + } + else /* sump < knew <= sumq */ + { + found = 1; + } + } /* while */ + + if (found) + { + return trial; + } + else + { + j = 0; + for (i = 1; i < ni; ++i) + { + int jj; + + for (jj = left[i]; jj <= right[i]; ++jj) + { + work[j] = sorted_data[i * stride] - sorted_data[(ni - jj) * stride]; + j++; + }/* j will be = sum_{i=2}^n (right[i] - left[i] + 1)_{+} */ + } + + /* return pull(work, j - 1, knew - nl) : */ + knew -= (nl + 1); /* -1: 0-indexing */ + + /* sort work array */ + TYPE (gsl_sort) (work, 1, j); + + return (work[knew]); + } +} + +/* +gsl_stats_Qn_from_sorted_data() + Efficient algorithm for the scale estimator: + + Q_n = 2.219 * d_n * { |x_i - x_j|; i= 1e5 */ + int64_t wleft, wmid, wright, w_tot, wrest; + + BASE trial; + + w_tot = 0; + for (i = 0; i < n; ++i) + w_tot += w[i]; + + wrest = 0; + + /* REPEAT : */ + do + { + for (i = 0; i < n; ++i) + a_srt[i] = a[i]; + + n2 = n/2; /* =^= n/2 +1 with 0-indexing */ +#if 0 + rPsort(a_srt, n, n2); +#else + TYPE (gsl_sort) (a_srt, 1, n); +#endif + trial = a_srt[n2]; + + wleft = 0; + wmid = 0; + wright = 0; + + for (i = 0; i < n; ++i) + { + if (a[i] < trial) + wleft += w[i]; + else if (a[i] > trial) + wright += w[i]; + else + wmid += w[i]; + } + + /* wleft = sum_{i; a[i] < trial} w[i] + * wmid = sum_{i; a[i] == trial} w[i] at least one 'i' since trial is one a[]! + * wright= sum_{i; a[i] > trial} w[i] + */ + kcand = 0; + if (2 * (wrest + wleft) > w_tot) + { + for (i = 0; i < n; ++i) + { + if (a[i] < trial) + { + a_cand[kcand] = a[i]; + w_cand[kcand] = w[i]; + ++kcand; + } + } + } + else if (2 * (wrest + wleft + wmid) <= w_tot) + { + for (i = 0; i < n; ++i) + { + if (a[i] > trial) + { + a_cand[kcand] = a[i]; + w_cand[kcand] = w[i]; + ++kcand; + } + } + + wrest += wleft + wmid; + } + else + { + return trial; + } + + n = kcand; + for (i = 0; i < n; ++i) + { + a[i] = a_cand[i]; + w[i] = w_cand[i]; + } + } while(1); +} diff --git a/gsl-2.5/statistics/Sn.c b/gsl-2.5/statistics/Sn.c new file mode 100644 index 00000000..82690e64 --- /dev/null +++ b/gsl-2.5/statistics/Sn.c @@ -0,0 +1,73 @@ +#include +#include +#include +#include + +#define BASE_LONG_DOUBLE +#include "templates_on.h" +#include "Sn_source.c" +#include "templates_off.h" +#undef BASE_LONG_DOUBLE + +#define BASE_DOUBLE +#include "templates_on.h" +#include "Sn_source.c" +#include "templates_off.h" +#undef BASE_DOUBLE + +#define BASE_FLOAT +#include "templates_on.h" +#include "Sn_source.c" +#include "templates_off.h" +#undef BASE_FLOAT + +#define BASE_ULONG +#include "templates_on.h" +#include "Sn_source.c" +#include "templates_off.h" +#undef BASE_ULONG + +#define BASE_LONG +#include "templates_on.h" +#include "Sn_source.c" +#include "templates_off.h" +#undef BASE_LONG + +#define BASE_UINT +#include "templates_on.h" +#include "Sn_source.c" +#include "templates_off.h" +#undef BASE_UINT + +#define BASE_INT +#include "templates_on.h" +#include "Sn_source.c" +#include "templates_off.h" +#undef BASE_INT + +#define BASE_USHORT +#include "templates_on.h" +#include "Sn_source.c" +#include "templates_off.h" +#undef BASE_USHORT + +#define BASE_SHORT +#include "templates_on.h" +#include "Sn_source.c" +#include "templates_off.h" +#undef BASE_SHORT + +#define BASE_UCHAR +#include "templates_on.h" +#include "Sn_source.c" +#include "templates_off.h" +#undef BASE_UCHAR + +#define BASE_CHAR +#include "templates_on.h" +#include "Sn_source.c" +#include "templates_off.h" +#undef BASE_CHAR + + + diff --git a/gsl-2.5/statistics/Sn.lo b/gsl-2.5/statistics/Sn.lo new file mode 100644 index 00000000..a9027f90 --- /dev/null +++ b/gsl-2.5/statistics/Sn.lo @@ -0,0 +1,12 @@ +# Sn.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/Sn.o' + +# Name of the non-PIC object +non_pic_object='Sn.o' + diff --git a/gsl-2.5/statistics/Sn_source.c b/gsl-2.5/statistics/Sn_source.c new file mode 100644 index 00000000..bab9c243 --- /dev/null +++ b/gsl-2.5/statistics/Sn_source.c @@ -0,0 +1,269 @@ +/* statistics/Sn_source.c + * + * Copyright (C) 2018 Patrick Alken + * Copyright (C) 2005, 2006, 2007 Martin Maechler, ETH Zurich + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* This is a merge of the C version of original files qn.f and sn.f, + * translated by f2c (version 20010821). ==== ==== + * and then by f2c-clean,v 1.9 2000/01/13 13:46:53 + * and further clean-edited manually by Martin Maechler. + * + * Further added interface functions to be called via .C() from R or S-plus + * Note that Peter Rousseeuw has explicitely given permission to + * use his code under the GPL for the R project. + */ + +/* Original comments by the authors of the Fortran original code, + * (merged for Qn & Sn in one file by M.M.): + + This file contains fortran functions for two new robust estimators + of scale denoted as Qn and Sn, decribed in Rousseeuw and Croux (1993). + These estimators have a high breakdown point and a bounded influence + function. The implementation given here is very fast (running in + O(n logn) time) and needs little storage space. + + Rousseeuw, P.J. and Croux, C. (1993) + Alternatives to the Median Absolute Deviation", + Journal of the American Statistical Association, Vol. 88, 1273-1283. + + For both estimators, implementations in the pascal language can be + obtained from the original authors. + + This software may be used and copied freely for scientific + and/or non-commercial purposes, provided reference is made + to the abovementioned paper. + +Note by MM: We have explicit permission from P.Rousseeuw to +licence it under the GNU Public Licence. +*/ + +/* +gsl_stats_Sn0_from_sorted_data() + Efficient algorithm for the scale estimator: + + S_n0 = LOMED_{i} HIMED_{i} |x_i - x_j| + +which can equivalently be written as + + S_n0 = LOMED_{i} LOMED_{j != i} |x_i - x_j| + +Inputs: sorted_data - sorted array containing the observations + stride - stride + n - length of 'sorted_data' + work - workspace of length n + work[i] := LOMED_{j != i} | x_i - x_j | + +Return: S_n statistic (without scale/correction factor) +*/ + +BASE +FUNCTION(gsl_stats,Sn0_from_sorted_data) (const BASE sorted_data[], + const size_t stride, + const size_t n, + BASE work[]) +{ + /* Local variables */ + double medA, medB; + int i, diff, half, Amin, Amax, even, length; + int leftA, leftB, nA, nB, tryA, tryB, rightA, rightB; + int np1_2 = (n + 1) / 2; + + work[0] = sorted_data[n / 2 * stride] - sorted_data[0]; + + /* first half for() loop : */ + for (i = 2; i <= np1_2; ++i) + { + nA = i - 1; + nB = n - i; + diff = nB - nA; + leftA = leftB = 1; + rightA = rightB = nB; + Amin = diff / 2 + 1; + Amax = diff / 2 + nA; + + while (leftA < rightA) + { + length = rightA - leftA + 1; + even = 1 - length % 2; + half = (length - 1) / 2; + tryA = leftA + half; + tryB = leftB + half; + if (tryA < Amin) + { + rightB = tryB; + leftA = tryA + even; + } + else + { + if (tryA > Amax) + { + rightA = tryA; + leftB = tryB + even; + } + else + { + medA = sorted_data[(i - 1) * stride] - sorted_data[(i - tryA + Amin - 2) * stride]; + medB = sorted_data[(tryB + i - 1) * stride] - sorted_data[(i - 1) * stride]; + if (medA >= medB) + { + rightA = tryA; + leftB = tryB + even; + } + else + { + rightB = tryB; + leftA = tryA + even; + } + } + } + } /* while */ + + if (leftA > Amax) + { + work[i - 1] = sorted_data[(leftB + i - 1) * stride] - sorted_data[(i - 1) * stride]; + } + else + { + medA = sorted_data[(i - 1) * stride] - sorted_data[(i - leftA + Amin - 2) * stride]; + medB = sorted_data[(leftB + i - 1) * stride] - sorted_data[(i - 1) * stride]; + work[i - 1] = GSL_MIN(medA, medB); + } + } + + /* second half for() loop : */ + for (i = np1_2 + 1; i <= (int) n - 1; ++i) + { + nA = n - i; + nB = i - 1; + diff = nB - nA; + leftA = leftB = 1; + rightA = rightB = nB; + Amin = diff / 2 + 1; + Amax = diff / 2 + nA; + + while (leftA < rightA) + { + length = rightA - leftA + 1; + even = 1 - length % 2; + half = (length - 1) / 2; + tryA = leftA + half; + tryB = leftB + half; + + if (tryA < Amin) + { + rightB = tryB; + leftA = tryA + even; + } + else + { + if (tryA > Amax) + { + rightA = tryA; + leftB = tryB + even; + } + else + { + medA = sorted_data[(i + tryA - Amin) * stride] - sorted_data[(i - 1) * stride]; + medB = sorted_data[(i - 1) * stride] - sorted_data[(i - tryB - 1) * stride]; + if (medA >= medB) + { + rightA = tryA; + leftB = tryB + even; + } + else + { + rightB = tryB; + leftA = tryA + even; + } + } + } + } /* while */ + + if (leftA > Amax) + { + work[i - 1] = sorted_data[(i - 1) * stride] - sorted_data[(i - leftB - 1) * stride]; + } + else + { + medA = sorted_data[(i + leftA - Amin) * stride] - sorted_data[(i - 1) * stride]; + medB = sorted_data[(i - 1) * stride] - sorted_data[(i - leftB - 1) * stride]; + work[i - 1] = GSL_MIN(medA, medB); + } + } + + work[n - 1] = sorted_data[(n - 1) * stride] - sorted_data[(np1_2 - 1) * stride]; + + /* sort work array */ + TYPE (gsl_sort) (work, 1, n); + + return work[np1_2 - 1]; +} + +/* +gsl_stats_Sn_from_sorted_data() + Efficient algorithm for the scale estimator: + + S_n = 1.1926 * c_n LOMED_{i} HIMED_{i} |x_i - x_j| + +which can equivalently be written as + + S_n = 1.1926 * c_n * LOMED_{i} LOMED_{j != i} |x_i - x_j| + +and c_n is a correction factor for small sample bias + +Inputs: sorted_data - sorted array containing the observations + stride - stride + n - length of 'sorted_data' + work - workspace of length n + work[i] := LOMED_{j != i} | x_i - x_j | + +Return: S_n statistic +*/ + +double +FUNCTION(gsl_stats,Sn_from_sorted_data) (const BASE sorted_data[], + const size_t stride, + const size_t n, + BASE work[]) +{ + const double scale = 1.1926; /* asymptotic consistency for sigma^2 */ + double Sn0 = (double) FUNCTION(gsl_stats,Sn0_from_sorted_data)(sorted_data, stride, n, work); + double cn = 1.0; + double Sn; + + /* determine correction factor for finite sample bias */ + if (n <= 9) + { + if (n == 2) cn = 0.743; + else if (n == 3) cn = 1.851; + else if (n == 4) cn = 0.954; + else if (n == 5) cn = 1.351; + else if (n == 6) cn = 0.993; + else if (n == 7) cn = 1.198; + else if (n == 8) cn = 1.005; + else if (n == 9) cn = 1.131; + } + else if (n % 2 == 1) /* n odd, >= 11 */ + { + cn = (double) n / (n - 0.9); + } + + Sn = scale * cn * Sn0; + + return Sn; +} diff --git a/gsl-2.5/statistics/TODO b/gsl-2.5/statistics/TODO new file mode 100644 index 00000000..4a56cbfd --- /dev/null +++ b/gsl-2.5/statistics/TODO @@ -0,0 +1,105 @@ +# -*- org -*- +#+CATEGORY: statistics + +* From: James Theiler +To: John Lamb +Cc: gsl-discuss@sources.redhat.com +Subject: Re: Collecting statistics for time dependent data? +Date: Thu, 9 Dec 2004 14:18:36 -0700 (MST) + +On Thu, 9 Dec 2004, John Lamb wrote: + +] Raimondo Giammanco wrote: +] > Hello, +] > +] > I was wondering if there is a way to compute "running" statistics with +] > gsl. +] > +] Yes you can do it, but there's nothing in GSL that does it and its eay +] enough that you don't need GSL. Something like (untested) +] +] double update_mean( double* mean, int* n, double x ){ +] if( *n == 1 ) +] *mean = x; +] else +] *mean = (1 - (double)1 / *n ) * *mean + x / n; +] } +] +] will work and you can derive a similar method for updating the variance +] using the usual textbook formula. +] +] var[x] = (1/n) sum x^2_i - mean(x)^2 +] +] I don't know if there is a method that avoids the rounding errors. I +] don't know why so many textbooks repeat this formula without the +] slightest warning that it can go so badly wrong. +] +] + +Stably updating mean and variance is remarkably nontrivial. There was +a series of papers in Comm ACM that discussed the issue; the final one +(that I know of) refers back to the earlier ones, and it can be found +in D.H.D. West, Updating mean and variance estimates: an improved +method, Comm ACM 22:9, 532 (1979) [* I see Luke Stras just sent this +reference! *]. I'll just copy out the pseudocode since the paper is +old enough that it might not be easy to find. This, by the way, is +generalized for weighted data, so it assumes that you get a weight and +a data value (W_i and X_i) that you use to update the estimates XBAR +and S2: + + SUMW = W_1 + M = X_1 + T = 0 + For i=2,3,...,n + { + Q = X_i - M + TEMP = SUM + W_i // typo: He meant SUMW + R = Q*W_i/TEMP + M = M + R + T = T + R*SUMW*Q + SUMW = TEMP + } + XBAR = M + S2 = T*n/((n-1)*SUMW) + + + +jt + +-- +James Theiler Space and Remote Sensing Sciences +MS-B244, ISR-2, LANL Los Alamos National Laboratory +Los Alamos, NM 87545 http://nis-www.lanl.gov/~jt + + +* Look at STARPAC ftp://ftp.ucar.edu/starpac/ and Statlib +http://lib.stat.cmu.edu/ for more ideas + +* Try using the Kahan summation formula to improve accuracy for the +NIST tests (see Brian for details, below is a sketch of the algorithm). + + sum = x(1) + c = 0 + + DO i = 2, 1000000, 1 + y = x(i) - c + t = sum + y + c = (t - sum) - y + sum = t + ENDDO + +* Prevent incorrect use of unsorted data for quartile calculations +using a typedef for sorted data (?) + +* Rejection of outliers + +* Time series. Auto correlation, cross-correlation, smoothing (moving +average), detrending, various econometric things. Integrated +quantities (area under the curve). Interpolation of noisy data/fitting +-- maybe add that to the existing interpolation stuff.What about +missing data and gaps? + + There is a new GNU package called gretl which does econometrics + +* Statistical tests (equal means, equal variance, etc). + diff --git a/gsl-2.5/statistics/absdev.c b/gsl-2.5/statistics/absdev.c new file mode 100644 index 00000000..eb2bde93 --- /dev/null +++ b/gsl-2.5/statistics/absdev.c @@ -0,0 +1,70 @@ +#include +#include +#include + +#define BASE_LONG_DOUBLE +#include "templates_on.h" +#include "absdev_source.c" +#include "templates_off.h" +#undef BASE_LONG_DOUBLE + +#define BASE_DOUBLE +#include "templates_on.h" +#include "absdev_source.c" +#include "templates_off.h" +#undef BASE_DOUBLE + +#define BASE_FLOAT +#include "templates_on.h" +#include "absdev_source.c" +#include "templates_off.h" +#undef BASE_FLOAT + +#define BASE_ULONG +#include "templates_on.h" +#include "absdev_source.c" +#include "templates_off.h" +#undef BASE_ULONG + +#define BASE_LONG +#include "templates_on.h" +#include "absdev_source.c" +#include "templates_off.h" +#undef BASE_LONG + +#define BASE_UINT +#include "templates_on.h" +#include "absdev_source.c" +#include "templates_off.h" +#undef BASE_UINT + +#define BASE_INT +#include "templates_on.h" +#include "absdev_source.c" +#include "templates_off.h" +#undef BASE_INT + +#define BASE_USHORT +#include "templates_on.h" +#include "absdev_source.c" +#include "templates_off.h" +#undef BASE_USHORT + +#define BASE_SHORT +#include "templates_on.h" +#include "absdev_source.c" +#include "templates_off.h" +#undef BASE_SHORT + +#define BASE_UCHAR +#include "templates_on.h" +#include "absdev_source.c" +#include "templates_off.h" +#undef BASE_UCHAR + +#define BASE_CHAR +#include "templates_on.h" +#include "absdev_source.c" +#include "templates_off.h" +#undef BASE_CHAR + diff --git a/gsl-2.5/statistics/absdev.lo b/gsl-2.5/statistics/absdev.lo new file mode 100644 index 00000000..301477ba --- /dev/null +++ b/gsl-2.5/statistics/absdev.lo @@ -0,0 +1,12 @@ +# absdev.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/absdev.o' + +# Name of the non-PIC object +non_pic_object='absdev.o' + diff --git a/gsl-2.5/statistics/absdev_source.c b/gsl-2.5/statistics/absdev_source.c new file mode 100644 index 00000000..7b0228d2 --- /dev/null +++ b/gsl-2.5/statistics/absdev_source.c @@ -0,0 +1,49 @@ +/* statistics/absdev_source.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Jim Davies, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +double +FUNCTION(gsl_stats,absdev) (const BASE data[], const size_t stride, const size_t n) +{ + const double mean = FUNCTION(gsl_stats,mean)(data, stride, n); + return FUNCTION(gsl_stats,absdev_m)(data, stride, n, mean); +} + +double +FUNCTION(gsl_stats,absdev_m) (const BASE data[], + const size_t stride, + const size_t n, + const double mean) +{ + /* takes a dataset and finds the absolute deviation */ + + double sum = 0, absdev; + size_t i; + + /* find the sum of the absolute deviations */ + for (i = 0; i < n; i++) + { + const double delta = fabs(data[i * stride] - mean); + sum += delta; + } + + absdev = sum / n; + + return absdev; +} + diff --git a/gsl-2.5/statistics/covariance.c b/gsl-2.5/statistics/covariance.c new file mode 100644 index 00000000..78803c9e --- /dev/null +++ b/gsl-2.5/statistics/covariance.c @@ -0,0 +1,128 @@ +#include +#include +#include +#include +#include + +static int compute_rank(gsl_vector *v); + +#define BASE_LONG_DOUBLE +#include "templates_on.h" +#include "covariance_source.c" +#include "templates_off.h" +#undef BASE_LONG_DOUBLE + +#define BASE_DOUBLE +#include "templates_on.h" +#include "covariance_source.c" +#include "templates_off.h" +#undef BASE_DOUBLE + +#define BASE_FLOAT +#include "templates_on.h" +#include "covariance_source.c" +#include "templates_off.h" +#undef BASE_FLOAT + +#define BASE_ULONG +#include "templates_on.h" +#include "covariance_source.c" +#include "templates_off.h" +#undef BASE_ULONG + +#define BASE_LONG +#include "templates_on.h" +#include "covariance_source.c" +#include "templates_off.h" +#undef BASE_LONG + +#define BASE_UINT +#include "templates_on.h" +#include "covariance_source.c" +#include "templates_off.h" +#undef BASE_UINT + +#define BASE_INT +#include "templates_on.h" +#include "covariance_source.c" +#include "templates_off.h" +#undef BASE_INT + +#define BASE_USHORT +#include "templates_on.h" +#include "covariance_source.c" +#include "templates_off.h" +#undef BASE_USHORT + +#define BASE_SHORT +#include "templates_on.h" +#include "covariance_source.c" +#include "templates_off.h" +#undef BASE_SHORT + +#define BASE_UCHAR +#include "templates_on.h" +#include "covariance_source.c" +#include "templates_off.h" +#undef BASE_UCHAR + +#define BASE_CHAR +#include "templates_on.h" +#include "covariance_source.c" +#include "templates_off.h" +#undef BASE_CHAR + +/* +compute_rank() + Compute rank of a sorted vector + +Inputs: v - sorted data vector on input; rank vector on output + +Notes: ranks are always computed in double precision +*/ + +static int +compute_rank(gsl_vector *v) +{ + const size_t n = v->size; + size_t i = 0; + + while (i < n - 1) + { + double vi = gsl_vector_get(v, i); + + if (vi == gsl_vector_get(v, i + 1)) + { + size_t j = i + 2; + size_t k; + double rank = 0.0; + + /* we have detected a tie, find number of equal elements */ + while (j < n && vi == gsl_vector_get(v, j)) + ++j; + + /* compute rank */ + for (k = i; k < j; ++k) + rank += k + 1.0; + + /* divide by number of ties */ + rank /= (double) (j - i); + + for (k = i; k < j; ++k) + gsl_vector_set(v, k, rank); + + i = j; + } + else + { + /* no tie - set rank to natural ordered position */ + gsl_vector_set(v, i, i + 1.0); + ++i; + } + } + + if (i == n - 1) + gsl_vector_set(v, n - 1, (double) n); + + return GSL_SUCCESS; +} /* compute_rank() */ diff --git a/gsl-2.5/statistics/covariance.lo b/gsl-2.5/statistics/covariance.lo new file mode 100644 index 00000000..7fdd9653 --- /dev/null +++ b/gsl-2.5/statistics/covariance.lo @@ -0,0 +1,12 @@ +# covariance.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/covariance.o' + +# Name of the non-PIC object +non_pic_object='covariance.o' + diff --git a/gsl-2.5/statistics/covariance_source.c b/gsl-2.5/statistics/covariance_source.c new file mode 100644 index 00000000..12e873ff --- /dev/null +++ b/gsl-2.5/statistics/covariance_source.c @@ -0,0 +1,182 @@ +/* statistics/covar_source.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Jim Davies, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +static double +FUNCTION(compute,covariance) (const BASE data1[], const size_t stride1, + const BASE data2[], const size_t stride2, + const size_t n, + const double mean1, const double mean2); + +static double +FUNCTION(compute,covariance) (const BASE data1[], const size_t stride1, + const BASE data2[], const size_t stride2, + const size_t n, + const double mean1, const double mean2) +{ + /* takes a dataset and finds the covariance */ + + long double covariance = 0 ; + + size_t i; + + /* find the sum of the squares */ + for (i = 0; i < n; i++) + { + const long double delta1 = (data1[i * stride1] - mean1); + const long double delta2 = (data2[i * stride2] - mean2); + covariance += (delta1 * delta2 - covariance) / (i + 1); + } + + return covariance ; +} + +double +FUNCTION(gsl_stats,covariance_m) (const BASE data1[], const size_t stride1, + const BASE data2[], const size_t stride2, + const size_t n, + const double mean1, const double mean2) +{ + const double covariance = FUNCTION(compute,covariance) (data1, stride1, + data2, stride2, + n, + mean1, mean2); + + return covariance * ((double)n / (double)(n - 1)); +} + +double +FUNCTION(gsl_stats,covariance) (const BASE data1[], const size_t stride1, + const BASE data2[], const size_t stride2, + const size_t n) +{ + const double mean1 = FUNCTION(gsl_stats,mean) (data1, stride1, n); + const double mean2 = FUNCTION(gsl_stats,mean) (data2, stride2, n); + + return FUNCTION(gsl_stats,covariance_m)(data1, stride1, + data2, stride2, + n, + mean1, mean2); +} + +/* +gsl_stats_correlation() + Calculate Pearson correlation = cov(X, Y) / (sigma_X * sigma_Y) +This routine efficiently computes the correlation in one pass of the +data and makes use of the algorithm described in: + +B. P. Welford, "Note on a Method for Calculating Corrected Sums of +Squares and Products", Technometrics, Vol 4, No 3, 1962. + +This paper derives a numerically stable recurrence to compute a sum +of products + +S = sum_{i=1..N} [ (x_i - mu_x) * (y_i - mu_y) ] + +with the relation + +S_n = S_{n-1} + ((n-1)/n) * (x_n - mu_x_{n-1}) * (y_n - mu_y_{n-1}) +*/ + +double +FUNCTION(gsl_stats,correlation) (const BASE data1[], const size_t stride1, + const BASE data2[], const size_t stride2, + const size_t n) +{ + size_t i; + long double sum_xsq = 0.0; + long double sum_ysq = 0.0; + long double sum_cross = 0.0; + long double ratio; + long double delta_x, delta_y; + long double mean_x, mean_y; + long double r; + + /* + * Compute: + * sum_xsq = Sum [ (x_i - mu_x)^2 ], + * sum_ysq = Sum [ (y_i - mu_y)^2 ] and + * sum_cross = Sum [ (x_i - mu_x) * (y_i - mu_y) ] + * using the above relation from Welford's paper + */ + + mean_x = data1[0 * stride1]; + mean_y = data2[0 * stride2]; + + for (i = 1; i < n; ++i) + { + ratio = i / (i + 1.0); + delta_x = data1[i * stride1] - mean_x; + delta_y = data2[i * stride2] - mean_y; + sum_xsq += delta_x * delta_x * ratio; + sum_ysq += delta_y * delta_y * ratio; + sum_cross += delta_x * delta_y * ratio; + mean_x += delta_x / (i + 1.0); + mean_y += delta_y / (i + 1.0); + } + + r = sum_cross / (sqrt(sum_xsq) * sqrt(sum_ysq)); + + return r; +} + +/* +gsl_stats_spearman() + Compute Spearman rank correlation coefficient + +Inputs: data1 - data1 vector + stride1 - stride of data1 + data2 - data2 vector + stride2 - stride of data2 + n - number of elements in data1 and data2 + work - additional workspace of size 2*n + +Return: Spearman rank correlation coefficient +*/ + +double +FUNCTION(gsl_stats,spearman) (const BASE data1[], const size_t stride1, + const BASE data2[], const size_t stride2, + const size_t n, double work[]) +{ + size_t i; + gsl_vector_view ranks1 = gsl_vector_view_array(&work[0], n); + gsl_vector_view ranks2 = gsl_vector_view_array(&work[n], n); + double r; + + for (i = 0; i < n; ++i) + { + gsl_vector_set(&ranks1.vector, i, data1[i * stride1]); + gsl_vector_set(&ranks2.vector, i, data2[i * stride2]); + } + + /* sort data1 and update data2 at same time; compute rank of data1 */ + gsl_sort_vector2(&ranks1.vector, &ranks2.vector); + compute_rank(&ranks1.vector); + + /* now sort data2, updating ranks1 appropriately; compute rank of data2 */ + gsl_sort_vector2(&ranks2.vector, &ranks1.vector); + compute_rank(&ranks2.vector); + + /* compute correlation of rank vectors in double precision */ + r = gsl_stats_correlation(ranks1.vector.data, ranks1.vector.stride, + ranks2.vector.data, ranks2.vector.stride, + n); + + return r; +} diff --git a/gsl-2.5/statistics/gastwirth.c b/gsl-2.5/statistics/gastwirth.c new file mode 100644 index 00000000..5695add6 --- /dev/null +++ b/gsl-2.5/statistics/gastwirth.c @@ -0,0 +1,71 @@ +#include +#include + +#define BASE_LONG_DOUBLE +#include "templates_on.h" +#include "gastwirth_source.c" +#include "templates_off.h" +#undef BASE_LONG_DOUBLE + +#define BASE_DOUBLE +#include "templates_on.h" +#include "gastwirth_source.c" +#include "templates_off.h" +#undef BASE_DOUBLE + +#define BASE_FLOAT +#include "templates_on.h" +#include "gastwirth_source.c" +#include "templates_off.h" +#undef BASE_FLOAT + +#define BASE_ULONG +#include "templates_on.h" +#include "gastwirth_source.c" +#include "templates_off.h" +#undef BASE_ULONG + +#define BASE_LONG +#include "templates_on.h" +#include "gastwirth_source.c" +#include "templates_off.h" +#undef BASE_LONG + +#define BASE_UINT +#include "templates_on.h" +#include "gastwirth_source.c" +#include "templates_off.h" +#undef BASE_UINT + +#define BASE_INT +#include "templates_on.h" +#include "gastwirth_source.c" +#include "templates_off.h" +#undef BASE_INT + +#define BASE_USHORT +#include "templates_on.h" +#include "gastwirth_source.c" +#include "templates_off.h" +#undef BASE_USHORT + +#define BASE_SHORT +#include "templates_on.h" +#include "gastwirth_source.c" +#include "templates_off.h" +#undef BASE_SHORT + +#define BASE_UCHAR +#include "templates_on.h" +#include "gastwirth_source.c" +#include "templates_off.h" +#undef BASE_UCHAR + +#define BASE_CHAR +#include "templates_on.h" +#include "gastwirth_source.c" +#include "templates_off.h" +#undef BASE_CHAR + + + diff --git a/gsl-2.5/statistics/gastwirth.lo b/gsl-2.5/statistics/gastwirth.lo new file mode 100644 index 00000000..4d894ca2 --- /dev/null +++ b/gsl-2.5/statistics/gastwirth.lo @@ -0,0 +1,12 @@ +# gastwirth.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/gastwirth.o' + +# Name of the non-PIC object +non_pic_object='gastwirth.o' + diff --git a/gsl-2.5/statistics/gastwirth_source.c b/gsl-2.5/statistics/gastwirth_source.c new file mode 100644 index 00000000..094e4beb --- /dev/null +++ b/gsl-2.5/statistics/gastwirth_source.c @@ -0,0 +1,39 @@ +/* statistics/gastwirth_source.c + * + * Copyright (C) 2018 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + + +double +FUNCTION(gsl_stats,gastwirth_from_sorted_data) (const BASE sorted_data[], + const size_t stride, + const size_t n) +{ + if (n == 0) + { + return 0.0; + } + else + { + double a = FUNCTION(gsl_stats,quantile_from_sorted_data)(sorted_data, stride, n, 1.0 / 3.0); + double b = FUNCTION(gsl_stats,median_from_sorted_data)(sorted_data, stride, n); + double c = FUNCTION(gsl_stats,quantile_from_sorted_data)(sorted_data, stride, n, 2.0 / 3.0); + double gastwirth = 0.3 * a + 0.4 * b + 0.3 * c; + + return gastwirth; + } +} diff --git a/gsl-2.5/statistics/gsl_statistics.h b/gsl-2.5/statistics/gsl_statistics.h new file mode 100644 index 00000000..9fb414f2 --- /dev/null +++ b/gsl-2.5/statistics/gsl_statistics.h @@ -0,0 +1,20 @@ +#ifndef __GSL_STATISTICS_H__ +#define __GSL_STATISTICS_H__ + +#include +#include +#include + +#include +#include + +#include +#include + +#include +#include + +#include +#include + +#endif /* __GSL_STATISTICS_H__ */ diff --git a/gsl-2.5/statistics/gsl_statistics_char.h b/gsl-2.5/statistics/gsl_statistics_char.h new file mode 100644 index 00000000..c77d4c42 --- /dev/null +++ b/gsl-2.5/statistics/gsl_statistics_char.h @@ -0,0 +1,96 @@ +/* statistics/gsl_statistics_char.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Jim Davies, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_STATISTICS_CHAR_H__ +#define __GSL_STATISTICS_CHAR_H__ + +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +double gsl_stats_char_mean (const char data[], const size_t stride, const size_t n); +double gsl_stats_char_variance (const char data[], const size_t stride, const size_t n); +double gsl_stats_char_sd (const char data[], const size_t stride, const size_t n); +double gsl_stats_char_variance_with_fixed_mean (const char data[], const size_t stride, const size_t n, const double mean); +double gsl_stats_char_sd_with_fixed_mean (const char data[], const size_t stride, const size_t n, const double mean); +double gsl_stats_char_tss (const char data[], const size_t stride, const size_t n); +double gsl_stats_char_tss_m (const char data[], const size_t stride, const size_t n, const double mean); + +double gsl_stats_char_absdev (const char data[], const size_t stride, const size_t n); +double gsl_stats_char_skew (const char data[], const size_t stride, const size_t n); +double gsl_stats_char_kurtosis (const char data[], const size_t stride, const size_t n); +double gsl_stats_char_lag1_autocorrelation (const char data[], const size_t stride, const size_t n); + +double gsl_stats_char_covariance (const char data1[], const size_t stride1,const char data2[], const size_t stride2, const size_t n); +double gsl_stats_char_correlation (const char data1[], const size_t stride1,const char data2[], const size_t stride2, const size_t n); +double gsl_stats_char_spearman (const char data1[], const size_t stride1, const char data2[], const size_t stride2, const size_t n, double work[]); + +double gsl_stats_char_variance_m (const char data[], const size_t stride, const size_t n, const double mean); +double gsl_stats_char_sd_m (const char data[], const size_t stride, const size_t n, const double mean); +double gsl_stats_char_absdev_m (const char data[], const size_t stride, const size_t n, const double mean); +double gsl_stats_char_skew_m_sd (const char data[], const size_t stride, const size_t n, const double mean, const double sd); +double gsl_stats_char_kurtosis_m_sd (const char data[], const size_t stride, const size_t n, const double mean, const double sd); +double gsl_stats_char_lag1_autocorrelation_m (const char data[], const size_t stride, const size_t n, const double mean); + +double gsl_stats_char_covariance_m (const char data1[], const size_t stride1,const char data2[], const size_t stride2, const size_t n, const double mean1, const double mean2); + + +double gsl_stats_char_pvariance (const char data1[], const size_t stride1, const size_t n1, const char data2[], const size_t stride2, const size_t n2); +double gsl_stats_char_ttest (const char data1[], const size_t stride1, const size_t n1, const char data2[], const size_t stride2, const size_t n2); + +char gsl_stats_char_max (const char data[], const size_t stride, const size_t n); +char gsl_stats_char_min (const char data[], const size_t stride, const size_t n); +void gsl_stats_char_minmax (char * min, char * max, const char data[], const size_t stride, const size_t n); + +size_t gsl_stats_char_max_index (const char data[], const size_t stride, const size_t n); +size_t gsl_stats_char_min_index (const char data[], const size_t stride, const size_t n); +void gsl_stats_char_minmax_index (size_t * min_index, size_t * max_index, const char data[], const size_t stride, const size_t n); + +char gsl_stats_char_select(char data[], const size_t stride, const size_t n, const size_t k); + +double gsl_stats_char_median_from_sorted_data (const char sorted_data[], const size_t stride, const size_t n) ; +double gsl_stats_char_median (char sorted_data[], const size_t stride, const size_t n); +double gsl_stats_char_quantile_from_sorted_data (const char sorted_data[], const size_t stride, const size_t n, const double f) ; + +double gsl_stats_char_trmean_from_sorted_data (const double trim, const char sorted_data[], const size_t stride, const size_t n) ; +double gsl_stats_char_gastwirth_from_sorted_data (const char sorted_data[], const size_t stride, const size_t n) ; + +double gsl_stats_char_mad0(const char data[], const size_t stride, const size_t n, double work[]); +double gsl_stats_char_mad(const char data[], const size_t stride, const size_t n, double work[]); + +char gsl_stats_char_Sn0_from_sorted_data (const char sorted_data[], const size_t stride, const size_t n, char work[]) ; +double gsl_stats_char_Sn_from_sorted_data (const char sorted_data[], const size_t stride, const size_t n, char work[]) ; + +char gsl_stats_char_Qn0_from_sorted_data (const char sorted_data[], const size_t stride, const size_t n, char work[], int work_int[]) ; +double gsl_stats_char_Qn_from_sorted_data (const char sorted_data[], const size_t stride, const size_t n, char work[], int work_int[]) ; + +__END_DECLS + +#endif /* __GSL_STATISTICS_CHAR_H__ */ diff --git a/gsl-2.5/statistics/gsl_statistics_double.h b/gsl-2.5/statistics/gsl_statistics_double.h new file mode 100644 index 00000000..9969472c --- /dev/null +++ b/gsl-2.5/statistics/gsl_statistics_double.h @@ -0,0 +1,116 @@ +/* statistics/gsl_statistics_double.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Jim Davies, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_STATISTICS_DOUBLE_H__ +#define __GSL_STATISTICS_DOUBLE_H__ + +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +double gsl_stats_mean (const double data[], const size_t stride, const size_t n); +double gsl_stats_variance (const double data[], const size_t stride, const size_t n); +double gsl_stats_sd (const double data[], const size_t stride, const size_t n); +double gsl_stats_variance_with_fixed_mean (const double data[], const size_t stride, const size_t n, const double mean); +double gsl_stats_sd_with_fixed_mean (const double data[], const size_t stride, const size_t n, const double mean); +double gsl_stats_tss (const double data[], const size_t stride, const size_t n); +double gsl_stats_tss_m (const double data[], const size_t stride, const size_t n, const double mean); + +double gsl_stats_absdev (const double data[], const size_t stride, const size_t n); +double gsl_stats_skew (const double data[], const size_t stride, const size_t n); +double gsl_stats_kurtosis (const double data[], const size_t stride, const size_t n); +double gsl_stats_lag1_autocorrelation (const double data[], const size_t stride, const size_t n); + +double gsl_stats_covariance (const double data1[], const size_t stride1,const double data2[], const size_t stride2, const size_t n); +double gsl_stats_correlation (const double data1[], const size_t stride1,const double data2[], const size_t stride2, const size_t n); +double gsl_stats_spearman (const double data1[], const size_t stride1, const double data2[], const size_t stride2, const size_t n, double work[]); + +double gsl_stats_variance_m (const double data[], const size_t stride, const size_t n, const double mean); +double gsl_stats_sd_m (const double data[], const size_t stride, const size_t n, const double mean); +double gsl_stats_absdev_m (const double data[], const size_t stride, const size_t n, const double mean); +double gsl_stats_skew_m_sd (const double data[], const size_t stride, const size_t n, const double mean, const double sd); +double gsl_stats_kurtosis_m_sd (const double data[], const size_t stride, const size_t n, const double mean, const double sd); +double gsl_stats_lag1_autocorrelation_m (const double data[], const size_t stride, const size_t n, const double mean); + +double gsl_stats_covariance_m (const double data1[], const size_t stride1,const double data2[], const size_t stride2, const size_t n, const double mean1, const double mean2); + +/* DEFINED FOR FLOATING POINT TYPES ONLY */ + +double gsl_stats_wmean (const double w[], const size_t wstride, const double data[], const size_t stride, const size_t n); +double gsl_stats_wvariance (const double w[], const size_t wstride, const double data[], const size_t stride, const size_t n); +double gsl_stats_wsd (const double w[], const size_t wstride, const double data[], const size_t stride, const size_t n); +double gsl_stats_wvariance_with_fixed_mean (const double w[], const size_t wstride, const double data[], const size_t stride, const size_t n, const double mean); +double gsl_stats_wsd_with_fixed_mean (const double w[], const size_t wstride, const double data[], const size_t stride, const size_t n, const double mean); +double gsl_stats_wtss (const double w[], const size_t wstride, const double data[], const size_t stride, const size_t n); +double gsl_stats_wtss_m (const double w[], const size_t wstride, const double data[], const size_t stride, const size_t n, const double wmean); +double gsl_stats_wabsdev (const double w[], const size_t wstride, const double data[], const size_t stride, const size_t n); +double gsl_stats_wskew (const double w[], const size_t wstride, const double data[], const size_t stride, const size_t n); +double gsl_stats_wkurtosis (const double w[], const size_t wstride, const double data[], const size_t stride, const size_t n); + +double gsl_stats_wvariance_m (const double w[], const size_t wstride, const double data[], const size_t stride, const size_t n, const double wmean); +double gsl_stats_wsd_m (const double w[], const size_t wstride, const double data[], const size_t stride, const size_t n, const double wmean); +double gsl_stats_wabsdev_m (const double w[], const size_t wstride, const double data[], const size_t stride, const size_t n, const double wmean); +double gsl_stats_wskew_m_sd (const double w[], const size_t wstride, const double data[], const size_t stride, const size_t n, const double wmean, const double wsd); +double gsl_stats_wkurtosis_m_sd (const double w[], const size_t wstride, const double data[], const size_t stride, const size_t n, const double wmean, const double wsd); + +/* END OF FLOATING POINT TYPES */ + +double gsl_stats_pvariance (const double data1[], const size_t stride1, const size_t n1, const double data2[], const size_t stride2, const size_t n2); +double gsl_stats_ttest (const double data1[], const size_t stride1, const size_t n1, const double data2[], const size_t stride2, const size_t n2); + +double gsl_stats_max (const double data[], const size_t stride, const size_t n); +double gsl_stats_min (const double data[], const size_t stride, const size_t n); +void gsl_stats_minmax (double * min, double * max, const double data[], const size_t stride, const size_t n); + +size_t gsl_stats_max_index (const double data[], const size_t stride, const size_t n); +size_t gsl_stats_min_index (const double data[], const size_t stride, const size_t n); +void gsl_stats_minmax_index (size_t * min_index, size_t * max_index, const double data[], const size_t stride, const size_t n); + +double gsl_stats_select(double data[], const size_t stride, const size_t n, const size_t k); + +double gsl_stats_median_from_sorted_data (const double sorted_data[], const size_t stride, const size_t n) ; +double gsl_stats_median (double sorted_data[], const size_t stride, const size_t n); +double gsl_stats_quantile_from_sorted_data (const double sorted_data[], const size_t stride, const size_t n, const double f) ; + +double gsl_stats_trmean_from_sorted_data (const double trim, const double sorted_data[], const size_t stride, const size_t n) ; +double gsl_stats_gastwirth_from_sorted_data (const double sorted_data[], const size_t stride, const size_t n) ; + +double gsl_stats_mad0(const double data[], const size_t stride, const size_t n, double work[]); +double gsl_stats_mad(const double data[], const size_t stride, const size_t n, double work[]); + +double gsl_stats_Sn0_from_sorted_data (const double sorted_data[], const size_t stride, const size_t n, double work[]) ; +double gsl_stats_Sn_from_sorted_data (const double sorted_data[], const size_t stride, const size_t n, double work[]) ; + +double gsl_stats_Qn0_from_sorted_data (const double sorted_data[], const size_t stride, const size_t n, double work[], int work_int[]) ; +double gsl_stats_Qn_from_sorted_data (const double sorted_data[], const size_t stride, const size_t n, double work[], int work_int[]) ; + +__END_DECLS + +#endif /* __GSL_STATISTICS_DOUBLE_H__ */ diff --git a/gsl-2.5/statistics/gsl_statistics_float.h b/gsl-2.5/statistics/gsl_statistics_float.h new file mode 100644 index 00000000..fa61a4d8 --- /dev/null +++ b/gsl-2.5/statistics/gsl_statistics_float.h @@ -0,0 +1,116 @@ +/* statistics/gsl_statistics_float.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Jim Davies, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_STATISTICS_FLOAT_H__ +#define __GSL_STATISTICS_FLOAT_H__ + +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +double gsl_stats_float_mean (const float data[], const size_t stride, const size_t n); +double gsl_stats_float_variance (const float data[], const size_t stride, const size_t n); +double gsl_stats_float_sd (const float data[], const size_t stride, const size_t n); +double gsl_stats_float_variance_with_fixed_mean (const float data[], const size_t stride, const size_t n, const double mean); +double gsl_stats_float_sd_with_fixed_mean (const float data[], const size_t stride, const size_t n, const double mean); +double gsl_stats_float_tss (const float data[], const size_t stride, const size_t n); +double gsl_stats_float_tss_m (const float data[], const size_t stride, const size_t n, const double mean); + +double gsl_stats_float_absdev (const float data[], const size_t stride, const size_t n); +double gsl_stats_float_skew (const float data[], const size_t stride, const size_t n); +double gsl_stats_float_kurtosis (const float data[], const size_t stride, const size_t n); +double gsl_stats_float_lag1_autocorrelation (const float data[], const size_t stride, const size_t n); + +double gsl_stats_float_covariance (const float data1[], const size_t stride1,const float data2[], const size_t stride2, const size_t n); +double gsl_stats_float_correlation (const float data1[], const size_t stride1,const float data2[], const size_t stride2, const size_t n); +double gsl_stats_float_spearman (const float data1[], const size_t stride1, const float data2[], const size_t stride2, const size_t n, double work[]); + +double gsl_stats_float_variance_m (const float data[], const size_t stride, const size_t n, const double mean); +double gsl_stats_float_sd_m (const float data[], const size_t stride, const size_t n, const double mean); +double gsl_stats_float_absdev_m (const float data[], const size_t stride, const size_t n, const double mean); +double gsl_stats_float_skew_m_sd (const float data[], const size_t stride, const size_t n, const double mean, const double sd); +double gsl_stats_float_kurtosis_m_sd (const float data[], const size_t stride, const size_t n, const double mean, const double sd); +double gsl_stats_float_lag1_autocorrelation_m (const float data[], const size_t stride, const size_t n, const double mean); + +double gsl_stats_float_covariance_m (const float data1[], const size_t stride1,const float data2[], const size_t stride2, const size_t n, const double mean1, const double mean2); + +/* DEFINED FOR FLOATING POINT TYPES ONLY */ + +double gsl_stats_float_wmean (const float w[], const size_t wstride, const float data[], const size_t stride, const size_t n); +double gsl_stats_float_wvariance (const float w[], const size_t wstride, const float data[], const size_t stride, const size_t n); +double gsl_stats_float_wsd (const float w[], const size_t wstride, const float data[], const size_t stride, const size_t n); +double gsl_stats_float_wvariance_with_fixed_mean (const float w[], const size_t wstride, const float data[], const size_t stride, const size_t n, const double mean); +double gsl_stats_float_wsd_with_fixed_mean (const float w[], const size_t wstride, const float data[], const size_t stride, const size_t n, const double mean); +double gsl_stats_float_wtss (const float w[], const size_t wstride, const float data[], const size_t stride, const size_t n); +double gsl_stats_float_wtss_m (const float w[], const size_t wstride, const float data[], const size_t stride, const size_t n, const double wmean); +double gsl_stats_float_wabsdev (const float w[], const size_t wstride, const float data[], const size_t stride, const size_t n); +double gsl_stats_float_wskew (const float w[], const size_t wstride, const float data[], const size_t stride, const size_t n); +double gsl_stats_float_wkurtosis (const float w[], const size_t wstride, const float data[], const size_t stride, const size_t n); + +double gsl_stats_float_wvariance_m (const float w[], const size_t wstride, const float data[], const size_t stride, const size_t n, const double wmean); +double gsl_stats_float_wsd_m (const float w[], const size_t wstride, const float data[], const size_t stride, const size_t n, const double wmean); +double gsl_stats_float_wabsdev_m (const float w[], const size_t wstride, const float data[], const size_t stride, const size_t n, const double wmean); +double gsl_stats_float_wskew_m_sd (const float w[], const size_t wstride, const float data[], const size_t stride, const size_t n, const double wmean, const double wsd); +double gsl_stats_float_wkurtosis_m_sd (const float w[], const size_t wstride, const float data[], const size_t stride, const size_t n, const double wmean, const double wsd); + +/* END OF FLOATING POINT TYPES */ + +double gsl_stats_float_pvariance (const float data1[], const size_t stride1, const size_t n1, const float data2[], const size_t stride2, const size_t n2); +double gsl_stats_float_ttest (const float data1[], const size_t stride1, const size_t n1, const float data2[], const size_t stride2, const size_t n2); + +float gsl_stats_float_max (const float data[], const size_t stride, const size_t n); +float gsl_stats_float_min (const float data[], const size_t stride, const size_t n); +void gsl_stats_float_minmax (float * min, float * max, const float data[], const size_t stride, const size_t n); + +size_t gsl_stats_float_max_index (const float data[], const size_t stride, const size_t n); +size_t gsl_stats_float_min_index (const float data[], const size_t stride, const size_t n); +void gsl_stats_float_minmax_index (size_t * min_index, size_t * max_index, const float data[], const size_t stride, const size_t n); + +float gsl_stats_float_select(float data[], const size_t stride, const size_t n, const size_t k); + +double gsl_stats_float_median_from_sorted_data (const float sorted_data[], const size_t stride, const size_t n) ; +double gsl_stats_float_median (float sorted_data[], const size_t stride, const size_t n); +double gsl_stats_float_quantile_from_sorted_data (const float sorted_data[], const size_t stride, const size_t n, const double f) ; + +double gsl_stats_float_trmean_from_sorted_data (const double trim, const float sorted_data[], const size_t stride, const size_t n) ; +double gsl_stats_float_gastwirth_from_sorted_data (const float sorted_data[], const size_t stride, const size_t n) ; + +double gsl_stats_float_mad0(const float data[], const size_t stride, const size_t n, double work[]); +double gsl_stats_float_mad(const float data[], const size_t stride, const size_t n, double work[]); + +float gsl_stats_float_Sn0_from_sorted_data (const float sorted_data[], const size_t stride, const size_t n, float work[]) ; +double gsl_stats_float_Sn_from_sorted_data (const float sorted_data[], const size_t stride, const size_t n, float work[]) ; + +float gsl_stats_float_Qn0_from_sorted_data (const float sorted_data[], const size_t stride, const size_t n, float work[], int work_int[]) ; +double gsl_stats_float_Qn_from_sorted_data (const float sorted_data[], const size_t stride, const size_t n, float work[], int work_int[]) ; + +__END_DECLS + +#endif /* __GSL_STATISTICS_FLOAT_H__ */ diff --git a/gsl-2.5/statistics/gsl_statistics_int.h b/gsl-2.5/statistics/gsl_statistics_int.h new file mode 100644 index 00000000..1d02b3a6 --- /dev/null +++ b/gsl-2.5/statistics/gsl_statistics_int.h @@ -0,0 +1,96 @@ +/* statistics/gsl_statistics_int.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Jim Davies, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_STATISTICS_INT_H__ +#define __GSL_STATISTICS_INT_H__ + +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +double gsl_stats_int_mean (const int data[], const size_t stride, const size_t n); +double gsl_stats_int_variance (const int data[], const size_t stride, const size_t n); +double gsl_stats_int_sd (const int data[], const size_t stride, const size_t n); +double gsl_stats_int_variance_with_fixed_mean (const int data[], const size_t stride, const size_t n, const double mean); +double gsl_stats_int_sd_with_fixed_mean (const int data[], const size_t stride, const size_t n, const double mean); +double gsl_stats_int_tss (const int data[], const size_t stride, const size_t n); +double gsl_stats_int_tss_m (const int data[], const size_t stride, const size_t n, const double mean); + +double gsl_stats_int_absdev (const int data[], const size_t stride, const size_t n); +double gsl_stats_int_skew (const int data[], const size_t stride, const size_t n); +double gsl_stats_int_kurtosis (const int data[], const size_t stride, const size_t n); +double gsl_stats_int_lag1_autocorrelation (const int data[], const size_t stride, const size_t n); + +double gsl_stats_int_covariance (const int data1[], const size_t stride1,const int data2[], const size_t stride2, const size_t n); +double gsl_stats_int_correlation (const int data1[], const size_t stride1,const int data2[], const size_t stride2, const size_t n); +double gsl_stats_int_spearman (const int data1[], const size_t stride1, const int data2[], const size_t stride2, const size_t n, double work[]); + +double gsl_stats_int_variance_m (const int data[], const size_t stride, const size_t n, const double mean); +double gsl_stats_int_sd_m (const int data[], const size_t stride, const size_t n, const double mean); +double gsl_stats_int_absdev_m (const int data[], const size_t stride, const size_t n, const double mean); +double gsl_stats_int_skew_m_sd (const int data[], const size_t stride, const size_t n, const double mean, const double sd); +double gsl_stats_int_kurtosis_m_sd (const int data[], const size_t stride, const size_t n, const double mean, const double sd); +double gsl_stats_int_lag1_autocorrelation_m (const int data[], const size_t stride, const size_t n, const double mean); + +double gsl_stats_int_covariance_m (const int data1[], const size_t stride1,const int data2[], const size_t stride2, const size_t n, const double mean1, const double mean2); + + +double gsl_stats_int_pvariance (const int data1[], const size_t stride1, const size_t n1, const int data2[], const size_t stride2, const size_t n2); +double gsl_stats_int_ttest (const int data1[], const size_t stride1, const size_t n1, const int data2[], const size_t stride2, const size_t n2); + +int gsl_stats_int_max (const int data[], const size_t stride, const size_t n); +int gsl_stats_int_min (const int data[], const size_t stride, const size_t n); +void gsl_stats_int_minmax (int * min, int * max, const int data[], const size_t stride, const size_t n); + +size_t gsl_stats_int_max_index (const int data[], const size_t stride, const size_t n); +size_t gsl_stats_int_min_index (const int data[], const size_t stride, const size_t n); +void gsl_stats_int_minmax_index (size_t * min_index, size_t * max_index, const int data[], const size_t stride, const size_t n); + +int gsl_stats_int_select(int data[], const size_t stride, const size_t n, const size_t k); + +double gsl_stats_int_median_from_sorted_data (const int sorted_data[], const size_t stride, const size_t n) ; +double gsl_stats_int_median (int sorted_data[], const size_t stride, const size_t n); +double gsl_stats_int_quantile_from_sorted_data (const int sorted_data[], const size_t stride, const size_t n, const double f) ; + +double gsl_stats_int_trmean_from_sorted_data (const double trim, const int sorted_data[], const size_t stride, const size_t n) ; +double gsl_stats_int_gastwirth_from_sorted_data (const int sorted_data[], const size_t stride, const size_t n) ; + +double gsl_stats_int_mad0(const int data[], const size_t stride, const size_t n, double work[]); +double gsl_stats_int_mad(const int data[], const size_t stride, const size_t n, double work[]); + +int gsl_stats_int_Sn0_from_sorted_data (const int sorted_data[], const size_t stride, const size_t n, int work[]) ; +double gsl_stats_int_Sn_from_sorted_data (const int sorted_data[], const size_t stride, const size_t n, int work[]) ; + +int gsl_stats_int_Qn0_from_sorted_data (const int sorted_data[], const size_t stride, const size_t n, int work[], int work_int[]) ; +double gsl_stats_int_Qn_from_sorted_data (const int sorted_data[], const size_t stride, const size_t n, int work[], int work_int[]) ; + +__END_DECLS + +#endif /* __GSL_STATISTICS_INT_H__ */ diff --git a/gsl-2.5/statistics/gsl_statistics_long.h b/gsl-2.5/statistics/gsl_statistics_long.h new file mode 100644 index 00000000..5bc4bbd7 --- /dev/null +++ b/gsl-2.5/statistics/gsl_statistics_long.h @@ -0,0 +1,96 @@ +/* statistics/gsl_statistics_long.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Jim Davies, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_STATISTICS_LONG_H__ +#define __GSL_STATISTICS_LONG_H__ + +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +double gsl_stats_long_mean (const long data[], const size_t stride, const size_t n); +double gsl_stats_long_variance (const long data[], const size_t stride, const size_t n); +double gsl_stats_long_sd (const long data[], const size_t stride, const size_t n); +double gsl_stats_long_variance_with_fixed_mean (const long data[], const size_t stride, const size_t n, const double mean); +double gsl_stats_long_sd_with_fixed_mean (const long data[], const size_t stride, const size_t n, const double mean); +double gsl_stats_long_tss (const long data[], const size_t stride, const size_t n); +double gsl_stats_long_tss_m (const long data[], const size_t stride, const size_t n, const double mean); + +double gsl_stats_long_absdev (const long data[], const size_t stride, const size_t n); +double gsl_stats_long_skew (const long data[], const size_t stride, const size_t n); +double gsl_stats_long_kurtosis (const long data[], const size_t stride, const size_t n); +double gsl_stats_long_lag1_autocorrelation (const long data[], const size_t stride, const size_t n); + +double gsl_stats_long_covariance (const long data1[], const size_t stride1,const long data2[], const size_t stride2, const size_t n); +double gsl_stats_long_correlation (const long data1[], const size_t stride1,const long data2[], const size_t stride2, const size_t n); +double gsl_stats_long_spearman (const long data1[], const size_t stride1, const long data2[], const size_t stride2, const size_t n, double work[]); + +double gsl_stats_long_variance_m (const long data[], const size_t stride, const size_t n, const double mean); +double gsl_stats_long_sd_m (const long data[], const size_t stride, const size_t n, const double mean); +double gsl_stats_long_absdev_m (const long data[], const size_t stride, const size_t n, const double mean); +double gsl_stats_long_skew_m_sd (const long data[], const size_t stride, const size_t n, const double mean, const double sd); +double gsl_stats_long_kurtosis_m_sd (const long data[], const size_t stride, const size_t n, const double mean, const double sd); +double gsl_stats_long_lag1_autocorrelation_m (const long data[], const size_t stride, const size_t n, const double mean); + +double gsl_stats_long_covariance_m (const long data1[], const size_t stride1,const long data2[], const size_t stride2, const size_t n, const double mean1, const double mean2); + + +double gsl_stats_long_pvariance (const long data1[], const size_t stride1, const size_t n1, const long data2[], const size_t stride2, const size_t n2); +double gsl_stats_long_ttest (const long data1[], const size_t stride1, const size_t n1, const long data2[], const size_t stride2, const size_t n2); + +long gsl_stats_long_max (const long data[], const size_t stride, const size_t n); +long gsl_stats_long_min (const long data[], const size_t stride, const size_t n); +void gsl_stats_long_minmax (long * min, long * max, const long data[], const size_t stride, const size_t n); + +size_t gsl_stats_long_max_index (const long data[], const size_t stride, const size_t n); +size_t gsl_stats_long_min_index (const long data[], const size_t stride, const size_t n); +void gsl_stats_long_minmax_index (size_t * min_index, size_t * max_index, const long data[], const size_t stride, const size_t n); + +long gsl_stats_long_select(long data[], const size_t stride, const size_t n, const size_t k); + +double gsl_stats_long_median_from_sorted_data (const long sorted_data[], const size_t stride, const size_t n) ; +double gsl_stats_long_median (long sorted_data[], const size_t stride, const size_t n); +double gsl_stats_long_quantile_from_sorted_data (const long sorted_data[], const size_t stride, const size_t n, const double f) ; + +double gsl_stats_long_trmean_from_sorted_data (const double trim, const long sorted_data[], const size_t stride, const size_t n) ; +double gsl_stats_long_gastwirth_from_sorted_data (const long sorted_data[], const size_t stride, const size_t n) ; + +double gsl_stats_long_mad0(const long data[], const size_t stride, const size_t n, double work[]); +double gsl_stats_long_mad(const long data[], const size_t stride, const size_t n, double work[]); + +long gsl_stats_long_Sn0_from_sorted_data (const long sorted_data[], const size_t stride, const size_t n, long work[]) ; +double gsl_stats_long_Sn_from_sorted_data (const long sorted_data[], const size_t stride, const size_t n, long work[]) ; + +long gsl_stats_long_Qn0_from_sorted_data (const long sorted_data[], const size_t stride, const size_t n, long work[], int work_int[]) ; +double gsl_stats_long_Qn_from_sorted_data (const long sorted_data[], const size_t stride, const size_t n, long work[], int work_int[]) ; + +__END_DECLS + +#endif /* __GSL_STATISTICS_LONG_H__ */ diff --git a/gsl-2.5/statistics/gsl_statistics_long_double.h b/gsl-2.5/statistics/gsl_statistics_long_double.h new file mode 100644 index 00000000..6b384271 --- /dev/null +++ b/gsl-2.5/statistics/gsl_statistics_long_double.h @@ -0,0 +1,116 @@ +/* statistics/gsl_statistics_long_double.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Jim Davies, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_STATISTICS_LONG_DOUBLE_H__ +#define __GSL_STATISTICS_LONG_DOUBLE_H__ + +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +double gsl_stats_long_double_mean (const long double data[], const size_t stride, const size_t n); +double gsl_stats_long_double_variance (const long double data[], const size_t stride, const size_t n); +double gsl_stats_long_double_sd (const long double data[], const size_t stride, const size_t n); +double gsl_stats_long_double_variance_with_fixed_mean (const long double data[], const size_t stride, const size_t n, const double mean); +double gsl_stats_long_double_sd_with_fixed_mean (const long double data[], const size_t stride, const size_t n, const double mean); +double gsl_stats_long_double_tss (const long double data[], const size_t stride, const size_t n); +double gsl_stats_long_double_tss_m (const long double data[], const size_t stride, const size_t n, const double mean); + +double gsl_stats_long_double_absdev (const long double data[], const size_t stride, const size_t n); +double gsl_stats_long_double_skew (const long double data[], const size_t stride, const size_t n); +double gsl_stats_long_double_kurtosis (const long double data[], const size_t stride, const size_t n); +double gsl_stats_long_double_lag1_autocorrelation (const long double data[], const size_t stride, const size_t n); + +double gsl_stats_long_double_covariance (const long double data1[], const size_t stride1,const long double data2[], const size_t stride2, const size_t n); +double gsl_stats_long_double_correlation (const long double data1[], const size_t stride1,const long double data2[], const size_t stride2, const size_t n); +double gsl_stats_long_double_spearman (const long double data1[], const size_t stride1, const long double data2[], const size_t stride2, const size_t n, double work[]); + +double gsl_stats_long_double_variance_m (const long double data[], const size_t stride, const size_t n, const double mean); +double gsl_stats_long_double_sd_m (const long double data[], const size_t stride, const size_t n, const double mean); +double gsl_stats_long_double_absdev_m (const long double data[], const size_t stride, const size_t n, const double mean); +double gsl_stats_long_double_skew_m_sd (const long double data[], const size_t stride, const size_t n, const double mean, const double sd); +double gsl_stats_long_double_kurtosis_m_sd (const long double data[], const size_t stride, const size_t n, const double mean, const double sd); +double gsl_stats_long_double_lag1_autocorrelation_m (const long double data[], const size_t stride, const size_t n, const double mean); + +double gsl_stats_long_double_covariance_m (const long double data1[], const size_t stride1,const long double data2[], const size_t stride2, const size_t n, const double mean1, const double mean2); + +/* DEFINED FOR FLOATING POINT TYPES ONLY */ + +double gsl_stats_long_double_wmean (const long double w[], const size_t wstride, const long double data[], const size_t stride, const size_t n); +double gsl_stats_long_double_wvariance (const long double w[], const size_t wstride, const long double data[], const size_t stride, const size_t n); +double gsl_stats_long_double_wsd (const long double w[], const size_t wstride, const long double data[], const size_t stride, const size_t n); +double gsl_stats_long_double_wvariance_with_fixed_mean (const long double w[], const size_t wstride, const long double data[], const size_t stride, const size_t n, const double mean); +double gsl_stats_long_double_wsd_with_fixed_mean (const long double w[], const size_t wstride, const long double data[], const size_t stride, const size_t n, const double mean); +double gsl_stats_long_double_wtss (const long double w[], const size_t wstride, const long double data[], const size_t stride, const size_t n); +double gsl_stats_long_double_wtss_m (const long double w[], const size_t wstride, const long double data[], const size_t stride, const size_t n, const double wmean); +double gsl_stats_long_double_wabsdev (const long double w[], const size_t wstride, const long double data[], const size_t stride, const size_t n); +double gsl_stats_long_double_wskew (const long double w[], const size_t wstride, const long double data[], const size_t stride, const size_t n); +double gsl_stats_long_double_wkurtosis (const long double w[], const size_t wstride, const long double data[], const size_t stride, const size_t n); + +double gsl_stats_long_double_wvariance_m (const long double w[], const size_t wstride, const long double data[], const size_t stride, const size_t n, const double wmean); +double gsl_stats_long_double_wsd_m (const long double w[], const size_t wstride, const long double data[], const size_t stride, const size_t n, const double wmean); +double gsl_stats_long_double_wabsdev_m (const long double w[], const size_t wstride, const long double data[], const size_t stride, const size_t n, const double wmean); +double gsl_stats_long_double_wskew_m_sd (const long double w[], const size_t wstride, const long double data[], const size_t stride, const size_t n, const double wmean, const double wsd); +double gsl_stats_long_double_wkurtosis_m_sd (const long double w[], const size_t wstride, const long double data[], const size_t stride, const size_t n, const double wmean, const double wsd); + +/* END OF FLOATING POINT TYPES */ + +double gsl_stats_long_double_pvariance (const long double data1[], const size_t stride1, const size_t n1, const long double data2[], const size_t stride2, const size_t n2); +double gsl_stats_long_double_ttest (const long double data1[], const size_t stride1, const size_t n1, const long double data2[], const size_t stride2, const size_t n2); + +long double gsl_stats_long_double_max (const long double data[], const size_t stride, const size_t n); +long double gsl_stats_long_double_min (const long double data[], const size_t stride, const size_t n); +void gsl_stats_long_double_minmax (long double * min, long double * max, const long double data[], const size_t stride, const size_t n); + +size_t gsl_stats_long_double_max_index (const long double data[], const size_t stride, const size_t n); +size_t gsl_stats_long_double_min_index (const long double data[], const size_t stride, const size_t n); +void gsl_stats_long_double_minmax_index (size_t * min_index, size_t * max_index, const long double data[], const size_t stride, const size_t n); + +long double gsl_stats_long_double_select(long double data[], const size_t stride, const size_t n, const size_t k); + +double gsl_stats_long_double_median_from_sorted_data (const long double sorted_data[], const size_t stride, const size_t n) ; +double gsl_stats_long_double_median (long double sorted_data[], const size_t stride, const size_t n); +double gsl_stats_long_double_quantile_from_sorted_data (const long double sorted_data[], const size_t stride, const size_t n, const double f) ; + +double gsl_stats_long_double_trmean_from_sorted_data (const double trim, const long double sorted_data[], const size_t stride, const size_t n) ; +double gsl_stats_long_double_gastwirth_from_sorted_data (const long double sorted_data[], const size_t stride, const size_t n) ; + +double gsl_stats_long_double_mad0(const long double data[], const size_t stride, const size_t n, double work[]); +double gsl_stats_long_double_mad(const long double data[], const size_t stride, const size_t n, double work[]); + +long double gsl_stats_long_double_Sn0_from_sorted_data (const long double sorted_data[], const size_t stride, const size_t n, long double work[]) ; +double gsl_stats_long_double_Sn_from_sorted_data (const long double sorted_data[], const size_t stride, const size_t n, long double work[]) ; + +long double gsl_stats_long_double_Qn0_from_sorted_data (const long double sorted_data[], const size_t stride, const size_t n, long double work[], int work_int[]) ; +double gsl_stats_long_double_Qn_from_sorted_data (const long double sorted_data[], const size_t stride, const size_t n, long double work[], int work_int[]) ; + +__END_DECLS + +#endif /* __GSL_STATISTICS_LONG_DOUBLE_H__ */ diff --git a/gsl-2.5/statistics/gsl_statistics_short.h b/gsl-2.5/statistics/gsl_statistics_short.h new file mode 100644 index 00000000..8ecaceea --- /dev/null +++ b/gsl-2.5/statistics/gsl_statistics_short.h @@ -0,0 +1,96 @@ +/* statistics/gsl_statistics_short.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Jim Davies, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_STATISTICS_SHORT_H__ +#define __GSL_STATISTICS_SHORT_H__ + +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +double gsl_stats_short_mean (const short data[], const size_t stride, const size_t n); +double gsl_stats_short_variance (const short data[], const size_t stride, const size_t n); +double gsl_stats_short_sd (const short data[], const size_t stride, const size_t n); +double gsl_stats_short_variance_with_fixed_mean (const short data[], const size_t stride, const size_t n, const double mean); +double gsl_stats_short_sd_with_fixed_mean (const short data[], const size_t stride, const size_t n, const double mean); +double gsl_stats_short_tss (const short data[], const size_t stride, const size_t n); +double gsl_stats_short_tss_m (const short data[], const size_t stride, const size_t n, const double mean); + +double gsl_stats_short_absdev (const short data[], const size_t stride, const size_t n); +double gsl_stats_short_skew (const short data[], const size_t stride, const size_t n); +double gsl_stats_short_kurtosis (const short data[], const size_t stride, const size_t n); +double gsl_stats_short_lag1_autocorrelation (const short data[], const size_t stride, const size_t n); + +double gsl_stats_short_covariance (const short data1[], const size_t stride1,const short data2[], const size_t stride2, const size_t n); +double gsl_stats_short_correlation (const short data1[], const size_t stride1,const short data2[], const size_t stride2, const size_t n); +double gsl_stats_short_spearman (const short data1[], const size_t stride1, const short data2[], const size_t stride2, const size_t n, double work[]); + +double gsl_stats_short_variance_m (const short data[], const size_t stride, const size_t n, const double mean); +double gsl_stats_short_sd_m (const short data[], const size_t stride, const size_t n, const double mean); +double gsl_stats_short_absdev_m (const short data[], const size_t stride, const size_t n, const double mean); +double gsl_stats_short_skew_m_sd (const short data[], const size_t stride, const size_t n, const double mean, const double sd); +double gsl_stats_short_kurtosis_m_sd (const short data[], const size_t stride, const size_t n, const double mean, const double sd); +double gsl_stats_short_lag1_autocorrelation_m (const short data[], const size_t stride, const size_t n, const double mean); + +double gsl_stats_short_covariance_m (const short data1[], const size_t stride1,const short data2[], const size_t stride2, const size_t n, const double mean1, const double mean2); + + +double gsl_stats_short_pvariance (const short data1[], const size_t stride1, const size_t n1, const short data2[], const size_t stride2, const size_t n2); +double gsl_stats_short_ttest (const short data1[], const size_t stride1, const size_t n1, const short data2[], const size_t stride2, const size_t n2); + +short gsl_stats_short_max (const short data[], const size_t stride, const size_t n); +short gsl_stats_short_min (const short data[], const size_t stride, const size_t n); +void gsl_stats_short_minmax (short * min, short * max, const short data[], const size_t stride, const size_t n); + +size_t gsl_stats_short_max_index (const short data[], const size_t stride, const size_t n); +size_t gsl_stats_short_min_index (const short data[], const size_t stride, const size_t n); +void gsl_stats_short_minmax_index (size_t * min_index, size_t * max_index, const short data[], const size_t stride, const size_t n); + +short gsl_stats_short_select(short data[], const size_t stride, const size_t n, const size_t k); + +double gsl_stats_short_median_from_sorted_data (const short sorted_data[], const size_t stride, const size_t n) ; +double gsl_stats_short_median (short sorted_data[], const size_t stride, const size_t n); +double gsl_stats_short_quantile_from_sorted_data (const short sorted_data[], const size_t stride, const size_t n, const double f) ; + +double gsl_stats_short_trmean_from_sorted_data (const double trim, const short sorted_data[], const size_t stride, const size_t n) ; +double gsl_stats_short_gastwirth_from_sorted_data (const short sorted_data[], const size_t stride, const size_t n) ; + +double gsl_stats_short_mad0(const short data[], const size_t stride, const size_t n, double work[]); +double gsl_stats_short_mad(const short data[], const size_t stride, const size_t n, double work[]); + +short gsl_stats_short_Sn0_from_sorted_data (const short sorted_data[], const size_t stride, const size_t n, short work[]) ; +double gsl_stats_short_Sn_from_sorted_data (const short sorted_data[], const size_t stride, const size_t n, short work[]) ; + +short gsl_stats_short_Qn0_from_sorted_data (const short sorted_data[], const size_t stride, const size_t n, short work[], int work_int[]) ; +double gsl_stats_short_Qn_from_sorted_data (const short sorted_data[], const size_t stride, const size_t n, short work[], int work_int[]) ; + +__END_DECLS + +#endif /* __GSL_STATISTICS_SHORT_H__ */ diff --git a/gsl-2.5/statistics/gsl_statistics_uchar.h b/gsl-2.5/statistics/gsl_statistics_uchar.h new file mode 100644 index 00000000..e5f549b0 --- /dev/null +++ b/gsl-2.5/statistics/gsl_statistics_uchar.h @@ -0,0 +1,96 @@ +/* statistics/gsl_statistics_uchar.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Jim Davies, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_STATISTICS_UCHAR_H__ +#define __GSL_STATISTICS_UCHAR_H__ + +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +double gsl_stats_uchar_mean (const unsigned char data[], const size_t stride, const size_t n); +double gsl_stats_uchar_variance (const unsigned char data[], const size_t stride, const size_t n); +double gsl_stats_uchar_sd (const unsigned char data[], const size_t stride, const size_t n); +double gsl_stats_uchar_variance_with_fixed_mean (const unsigned char data[], const size_t stride, const size_t n, const double mean); +double gsl_stats_uchar_sd_with_fixed_mean (const unsigned char data[], const size_t stride, const size_t n, const double mean); +double gsl_stats_uchar_tss (const unsigned char data[], const size_t stride, const size_t n); +double gsl_stats_uchar_tss_m (const unsigned char data[], const size_t stride, const size_t n, const double mean); + +double gsl_stats_uchar_absdev (const unsigned char data[], const size_t stride, const size_t n); +double gsl_stats_uchar_skew (const unsigned char data[], const size_t stride, const size_t n); +double gsl_stats_uchar_kurtosis (const unsigned char data[], const size_t stride, const size_t n); +double gsl_stats_uchar_lag1_autocorrelation (const unsigned char data[], const size_t stride, const size_t n); + +double gsl_stats_uchar_covariance (const unsigned char data1[], const size_t stride1,const unsigned char data2[], const size_t stride2, const size_t n); +double gsl_stats_uchar_correlation (const unsigned char data1[], const size_t stride1,const unsigned char data2[], const size_t stride2, const size_t n); +double gsl_stats_uchar_spearman (const unsigned char data1[], const size_t stride1, const unsigned char data2[], const size_t stride2, const size_t n, double work[]); + +double gsl_stats_uchar_variance_m (const unsigned char data[], const size_t stride, const size_t n, const double mean); +double gsl_stats_uchar_sd_m (const unsigned char data[], const size_t stride, const size_t n, const double mean); +double gsl_stats_uchar_absdev_m (const unsigned char data[], const size_t stride, const size_t n, const double mean); +double gsl_stats_uchar_skew_m_sd (const unsigned char data[], const size_t stride, const size_t n, const double mean, const double sd); +double gsl_stats_uchar_kurtosis_m_sd (const unsigned char data[], const size_t stride, const size_t n, const double mean, const double sd); +double gsl_stats_uchar_lag1_autocorrelation_m (const unsigned char data[], const size_t stride, const size_t n, const double mean); + +double gsl_stats_uchar_covariance_m (const unsigned char data1[], const size_t stride1,const unsigned char data2[], const size_t stride2, const size_t n, const double mean1, const double mean2); + + +double gsl_stats_uchar_pvariance (const unsigned char data1[], const size_t stride1, const size_t n1, const unsigned char data2[], const size_t stride2, const size_t n2); +double gsl_stats_uchar_ttest (const unsigned char data1[], const size_t stride1, const size_t n1, const unsigned char data2[], const size_t stride2, const size_t n2); + +unsigned char gsl_stats_uchar_max (const unsigned char data[], const size_t stride, const size_t n); +unsigned char gsl_stats_uchar_min (const unsigned char data[], const size_t stride, const size_t n); +void gsl_stats_uchar_minmax (unsigned char * min, unsigned char * max, const unsigned char data[], const size_t stride, const size_t n); + +size_t gsl_stats_uchar_max_index (const unsigned char data[], const size_t stride, const size_t n); +size_t gsl_stats_uchar_min_index (const unsigned char data[], const size_t stride, const size_t n); +void gsl_stats_uchar_minmax_index (size_t * min_index, size_t * max_index, const unsigned char data[], const size_t stride, const size_t n); + +unsigned char gsl_stats_uchar_select(unsigned char data[], const size_t stride, const size_t n, const size_t k); + +double gsl_stats_uchar_median_from_sorted_data (const unsigned char sorted_data[], const size_t stride, const size_t n) ; +double gsl_stats_uchar_median (unsigned char sorted_data[], const size_t stride, const size_t n); +double gsl_stats_uchar_quantile_from_sorted_data (const unsigned char sorted_data[], const size_t stride, const size_t n, const double f) ; + +double gsl_stats_uchar_trmean_from_sorted_data (const double trim, const unsigned char sorted_data[], const size_t stride, const size_t n) ; +double gsl_stats_uchar_gastwirth_from_sorted_data (const unsigned char sorted_data[], const size_t stride, const size_t n) ; + +double gsl_stats_uchar_mad0(const unsigned char data[], const size_t stride, const size_t n, double work[]); +double gsl_stats_uchar_mad(const unsigned char data[], const size_t stride, const size_t n, double work[]); + +unsigned char gsl_stats_uchar_Sn0_from_sorted_data (const unsigned char sorted_data[], const size_t stride, const size_t n, unsigned char work[]) ; +double gsl_stats_uchar_Sn_from_sorted_data (const unsigned char sorted_data[], const size_t stride, const size_t n, unsigned char work[]) ; + +unsigned char gsl_stats_uchar_Qn0_from_sorted_data (const unsigned char sorted_data[], const size_t stride, const size_t n, unsigned char work[], int work_int[]) ; +double gsl_stats_uchar_Qn_from_sorted_data (const unsigned char sorted_data[], const size_t stride, const size_t n, unsigned char work[], int work_int[]) ; + +__END_DECLS + +#endif /* __GSL_STATISTICS_UCHAR_H__ */ diff --git a/gsl-2.5/statistics/gsl_statistics_uint.h b/gsl-2.5/statistics/gsl_statistics_uint.h new file mode 100644 index 00000000..fca9e7d5 --- /dev/null +++ b/gsl-2.5/statistics/gsl_statistics_uint.h @@ -0,0 +1,96 @@ +/* statistics/gsl_statistics_uint.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Jim Davies, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_STATISTICS_UINT_H__ +#define __GSL_STATISTICS_UINT_H__ + +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +double gsl_stats_uint_mean (const unsigned int data[], const size_t stride, const size_t n); +double gsl_stats_uint_variance (const unsigned int data[], const size_t stride, const size_t n); +double gsl_stats_uint_sd (const unsigned int data[], const size_t stride, const size_t n); +double gsl_stats_uint_variance_with_fixed_mean (const unsigned int data[], const size_t stride, const size_t n, const double mean); +double gsl_stats_uint_sd_with_fixed_mean (const unsigned int data[], const size_t stride, const size_t n, const double mean); +double gsl_stats_uint_tss (const unsigned int data[], const size_t stride, const size_t n); +double gsl_stats_uint_tss_m (const unsigned int data[], const size_t stride, const size_t n, const double mean); + +double gsl_stats_uint_absdev (const unsigned int data[], const size_t stride, const size_t n); +double gsl_stats_uint_skew (const unsigned int data[], const size_t stride, const size_t n); +double gsl_stats_uint_kurtosis (const unsigned int data[], const size_t stride, const size_t n); +double gsl_stats_uint_lag1_autocorrelation (const unsigned int data[], const size_t stride, const size_t n); + +double gsl_stats_uint_covariance (const unsigned int data1[], const size_t stride1,const unsigned int data2[], const size_t stride2, const size_t n); +double gsl_stats_uint_correlation (const unsigned int data1[], const size_t stride1,const unsigned int data2[], const size_t stride2, const size_t n); +double gsl_stats_uint_spearman (const unsigned int data1[], const size_t stride1, const unsigned int data2[], const size_t stride2, const size_t n, double work[]); + +double gsl_stats_uint_variance_m (const unsigned int data[], const size_t stride, const size_t n, const double mean); +double gsl_stats_uint_sd_m (const unsigned int data[], const size_t stride, const size_t n, const double mean); +double gsl_stats_uint_absdev_m (const unsigned int data[], const size_t stride, const size_t n, const double mean); +double gsl_stats_uint_skew_m_sd (const unsigned int data[], const size_t stride, const size_t n, const double mean, const double sd); +double gsl_stats_uint_kurtosis_m_sd (const unsigned int data[], const size_t stride, const size_t n, const double mean, const double sd); +double gsl_stats_uint_lag1_autocorrelation_m (const unsigned int data[], const size_t stride, const size_t n, const double mean); + +double gsl_stats_uint_covariance_m (const unsigned int data1[], const size_t stride1,const unsigned int data2[], const size_t stride2, const size_t n, const double mean1, const double mean2); + + +double gsl_stats_uint_pvariance (const unsigned int data1[], const size_t stride1, const size_t n1, const unsigned int data2[], const size_t stride2, const size_t n2); +double gsl_stats_uint_ttest (const unsigned int data1[], const size_t stride1, const size_t n1, const unsigned int data2[], const size_t stride2, const size_t n2); + +unsigned int gsl_stats_uint_max (const unsigned int data[], const size_t stride, const size_t n); +unsigned int gsl_stats_uint_min (const unsigned int data[], const size_t stride, const size_t n); +void gsl_stats_uint_minmax (unsigned int * min, unsigned int * max, const unsigned int data[], const size_t stride, const size_t n); + +size_t gsl_stats_uint_max_index (const unsigned int data[], const size_t stride, const size_t n); +size_t gsl_stats_uint_min_index (const unsigned int data[], const size_t stride, const size_t n); +void gsl_stats_uint_minmax_index (size_t * min_index, size_t * max_index, const unsigned int data[], const size_t stride, const size_t n); + +unsigned int gsl_stats_uint_select(unsigned int data[], const size_t stride, const size_t n, const size_t k); + +double gsl_stats_uint_median_from_sorted_data (const unsigned int sorted_data[], const size_t stride, const size_t n) ; +double gsl_stats_uint_median (unsigned int sorted_data[], const size_t stride, const size_t n); +double gsl_stats_uint_quantile_from_sorted_data (const unsigned int sorted_data[], const size_t stride, const size_t n, const double f) ; + +double gsl_stats_uint_trmean_from_sorted_data (const double trim, const unsigned int sorted_data[], const size_t stride, const size_t n) ; +double gsl_stats_uint_gastwirth_from_sorted_data (const unsigned int sorted_data[], const size_t stride, const size_t n) ; + +double gsl_stats_uint_mad0(const unsigned int data[], const size_t stride, const size_t n, double work[]); +double gsl_stats_uint_mad(const unsigned int data[], const size_t stride, const size_t n, double work[]); + +unsigned int gsl_stats_uint_Sn0_from_sorted_data (const unsigned int sorted_data[], const size_t stride, const size_t n, unsigned int work[]) ; +double gsl_stats_uint_Sn_from_sorted_data (const unsigned int sorted_data[], const size_t stride, const size_t n, unsigned int work[]) ; + +unsigned int gsl_stats_uint_Qn0_from_sorted_data (const unsigned int sorted_data[], const size_t stride, const size_t n, unsigned int work[], int work_int[]) ; +double gsl_stats_uint_Qn_from_sorted_data (const unsigned int sorted_data[], const size_t stride, const size_t n, unsigned int work[], int work_int[]) ; + +__END_DECLS + +#endif /* __GSL_STATISTICS_UINT_H__ */ diff --git a/gsl-2.5/statistics/gsl_statistics_ulong.h b/gsl-2.5/statistics/gsl_statistics_ulong.h new file mode 100644 index 00000000..2957fd14 --- /dev/null +++ b/gsl-2.5/statistics/gsl_statistics_ulong.h @@ -0,0 +1,96 @@ +/* statistics/gsl_statistics_ulong.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Jim Davies, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_STATISTICS_ULONG_H__ +#define __GSL_STATISTICS_ULONG_H__ + +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +double gsl_stats_ulong_mean (const unsigned long data[], const size_t stride, const size_t n); +double gsl_stats_ulong_variance (const unsigned long data[], const size_t stride, const size_t n); +double gsl_stats_ulong_sd (const unsigned long data[], const size_t stride, const size_t n); +double gsl_stats_ulong_variance_with_fixed_mean (const unsigned long data[], const size_t stride, const size_t n, const double mean); +double gsl_stats_ulong_sd_with_fixed_mean (const unsigned long data[], const size_t stride, const size_t n, const double mean); +double gsl_stats_ulong_tss (const unsigned long data[], const size_t stride, const size_t n); +double gsl_stats_ulong_tss_m (const unsigned long data[], const size_t stride, const size_t n, const double mean); + +double gsl_stats_ulong_absdev (const unsigned long data[], const size_t stride, const size_t n); +double gsl_stats_ulong_skew (const unsigned long data[], const size_t stride, const size_t n); +double gsl_stats_ulong_kurtosis (const unsigned long data[], const size_t stride, const size_t n); +double gsl_stats_ulong_lag1_autocorrelation (const unsigned long data[], const size_t stride, const size_t n); + +double gsl_stats_ulong_covariance (const unsigned long data1[], const size_t stride1,const unsigned long data2[], const size_t stride2, const size_t n); +double gsl_stats_ulong_correlation (const unsigned long data1[], const size_t stride1,const unsigned long data2[], const size_t stride2, const size_t n); +double gsl_stats_ulong_spearman (const unsigned long data1[], const size_t stride1, const unsigned long data2[], const size_t stride2, const size_t n, double work[]); + +double gsl_stats_ulong_variance_m (const unsigned long data[], const size_t stride, const size_t n, const double mean); +double gsl_stats_ulong_sd_m (const unsigned long data[], const size_t stride, const size_t n, const double mean); +double gsl_stats_ulong_absdev_m (const unsigned long data[], const size_t stride, const size_t n, const double mean); +double gsl_stats_ulong_skew_m_sd (const unsigned long data[], const size_t stride, const size_t n, const double mean, const double sd); +double gsl_stats_ulong_kurtosis_m_sd (const unsigned long data[], const size_t stride, const size_t n, const double mean, const double sd); +double gsl_stats_ulong_lag1_autocorrelation_m (const unsigned long data[], const size_t stride, const size_t n, const double mean); + +double gsl_stats_ulong_covariance_m (const unsigned long data1[], const size_t stride1,const unsigned long data2[], const size_t stride2, const size_t n, const double mean1, const double mean2); + + +double gsl_stats_ulong_pvariance (const unsigned long data1[], const size_t stride1, const size_t n1, const unsigned long data2[], const size_t stride2, const size_t n2); +double gsl_stats_ulong_ttest (const unsigned long data1[], const size_t stride1, const size_t n1, const unsigned long data2[], const size_t stride2, const size_t n2); + +unsigned long gsl_stats_ulong_max (const unsigned long data[], const size_t stride, const size_t n); +unsigned long gsl_stats_ulong_min (const unsigned long data[], const size_t stride, const size_t n); +void gsl_stats_ulong_minmax (unsigned long * min, unsigned long * max, const unsigned long data[], const size_t stride, const size_t n); + +size_t gsl_stats_ulong_max_index (const unsigned long data[], const size_t stride, const size_t n); +size_t gsl_stats_ulong_min_index (const unsigned long data[], const size_t stride, const size_t n); +void gsl_stats_ulong_minmax_index (size_t * min_index, size_t * max_index, const unsigned long data[], const size_t stride, const size_t n); + +unsigned long gsl_stats_ulong_select(unsigned long data[], const size_t stride, const size_t n, const size_t k); + +double gsl_stats_ulong_median_from_sorted_data (const unsigned long sorted_data[], const size_t stride, const size_t n) ; +double gsl_stats_ulong_median (unsigned long sorted_data[], const size_t stride, const size_t n); +double gsl_stats_ulong_quantile_from_sorted_data (const unsigned long sorted_data[], const size_t stride, const size_t n, const double f) ; + +double gsl_stats_ulong_trmean_from_sorted_data (const double trim, const unsigned long sorted_data[], const size_t stride, const size_t n) ; +double gsl_stats_ulong_gastwirth_from_sorted_data (const unsigned long sorted_data[], const size_t stride, const size_t n) ; + +double gsl_stats_ulong_mad0(const unsigned long data[], const size_t stride, const size_t n, double work[]); +double gsl_stats_ulong_mad(const unsigned long data[], const size_t stride, const size_t n, double work[]); + +unsigned long gsl_stats_ulong_Sn0_from_sorted_data (const unsigned long sorted_data[], const size_t stride, const size_t n, unsigned long work[]) ; +double gsl_stats_ulong_Sn_from_sorted_data (const unsigned long sorted_data[], const size_t stride, const size_t n, unsigned long work[]) ; + +unsigned long gsl_stats_ulong_Qn0_from_sorted_data (const unsigned long sorted_data[], const size_t stride, const size_t n, unsigned long work[], int work_int[]) ; +double gsl_stats_ulong_Qn_from_sorted_data (const unsigned long sorted_data[], const size_t stride, const size_t n, unsigned long work[], int work_int[]) ; + +__END_DECLS + +#endif /* __GSL_STATISTICS_ULONG_H__ */ diff --git a/gsl-2.5/statistics/gsl_statistics_ushort.h b/gsl-2.5/statistics/gsl_statistics_ushort.h new file mode 100644 index 00000000..7625f5d4 --- /dev/null +++ b/gsl-2.5/statistics/gsl_statistics_ushort.h @@ -0,0 +1,96 @@ +/* statistics/gsl_statistics_ushort.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Jim Davies, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_STATISTICS_USHORT_H__ +#define __GSL_STATISTICS_USHORT_H__ + +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +double gsl_stats_ushort_mean (const unsigned short data[], const size_t stride, const size_t n); +double gsl_stats_ushort_variance (const unsigned short data[], const size_t stride, const size_t n); +double gsl_stats_ushort_sd (const unsigned short data[], const size_t stride, const size_t n); +double gsl_stats_ushort_variance_with_fixed_mean (const unsigned short data[], const size_t stride, const size_t n, const double mean); +double gsl_stats_ushort_sd_with_fixed_mean (const unsigned short data[], const size_t stride, const size_t n, const double mean); +double gsl_stats_ushort_tss (const unsigned short data[], const size_t stride, const size_t n); +double gsl_stats_ushort_tss_m (const unsigned short data[], const size_t stride, const size_t n, const double mean); + +double gsl_stats_ushort_absdev (const unsigned short data[], const size_t stride, const size_t n); +double gsl_stats_ushort_skew (const unsigned short data[], const size_t stride, const size_t n); +double gsl_stats_ushort_kurtosis (const unsigned short data[], const size_t stride, const size_t n); +double gsl_stats_ushort_lag1_autocorrelation (const unsigned short data[], const size_t stride, const size_t n); + +double gsl_stats_ushort_covariance (const unsigned short data1[], const size_t stride1,const unsigned short data2[], const size_t stride2, const size_t n); +double gsl_stats_ushort_correlation (const unsigned short data1[], const size_t stride1,const unsigned short data2[], const size_t stride2, const size_t n); +double gsl_stats_ushort_spearman (const unsigned short data1[], const size_t stride1, const unsigned short data2[], const size_t stride2, const size_t n, double work[]); + +double gsl_stats_ushort_variance_m (const unsigned short data[], const size_t stride, const size_t n, const double mean); +double gsl_stats_ushort_sd_m (const unsigned short data[], const size_t stride, const size_t n, const double mean); +double gsl_stats_ushort_absdev_m (const unsigned short data[], const size_t stride, const size_t n, const double mean); +double gsl_stats_ushort_skew_m_sd (const unsigned short data[], const size_t stride, const size_t n, const double mean, const double sd); +double gsl_stats_ushort_kurtosis_m_sd (const unsigned short data[], const size_t stride, const size_t n, const double mean, const double sd); +double gsl_stats_ushort_lag1_autocorrelation_m (const unsigned short data[], const size_t stride, const size_t n, const double mean); + +double gsl_stats_ushort_covariance_m (const unsigned short data1[], const size_t stride1,const unsigned short data2[], const size_t stride2, const size_t n, const double mean1, const double mean2); + + +double gsl_stats_ushort_pvariance (const unsigned short data1[], const size_t stride1, const size_t n1, const unsigned short data2[], const size_t stride2, const size_t n2); +double gsl_stats_ushort_ttest (const unsigned short data1[], const size_t stride1, const size_t n1, const unsigned short data2[], const size_t stride2, const size_t n2); + +unsigned short gsl_stats_ushort_max (const unsigned short data[], const size_t stride, const size_t n); +unsigned short gsl_stats_ushort_min (const unsigned short data[], const size_t stride, const size_t n); +void gsl_stats_ushort_minmax (unsigned short * min, unsigned short * max, const unsigned short data[], const size_t stride, const size_t n); + +size_t gsl_stats_ushort_max_index (const unsigned short data[], const size_t stride, const size_t n); +size_t gsl_stats_ushort_min_index (const unsigned short data[], const size_t stride, const size_t n); +void gsl_stats_ushort_minmax_index (size_t * min_index, size_t * max_index, const unsigned short data[], const size_t stride, const size_t n); + +unsigned short gsl_stats_ushort_select(unsigned short data[], const size_t stride, const size_t n, const size_t k); + +double gsl_stats_ushort_median_from_sorted_data (const unsigned short sorted_data[], const size_t stride, const size_t n) ; +double gsl_stats_ushort_median (unsigned short sorted_data[], const size_t stride, const size_t n); +double gsl_stats_ushort_quantile_from_sorted_data (const unsigned short sorted_data[], const size_t stride, const size_t n, const double f) ; + +double gsl_stats_ushort_trmean_from_sorted_data (const double trim, const unsigned short sorted_data[], const size_t stride, const size_t n) ; +double gsl_stats_ushort_gastwirth_from_sorted_data (const unsigned short sorted_data[], const size_t stride, const size_t n) ; + +double gsl_stats_ushort_mad0(const unsigned short data[], const size_t stride, const size_t n, double work[]); +double gsl_stats_ushort_mad(const unsigned short data[], const size_t stride, const size_t n, double work[]); + +unsigned short gsl_stats_ushort_Sn0_from_sorted_data (const unsigned short sorted_data[], const size_t stride, const size_t n, unsigned short work[]) ; +double gsl_stats_ushort_Sn_from_sorted_data (const unsigned short sorted_data[], const size_t stride, const size_t n, unsigned short work[]) ; + +unsigned short gsl_stats_ushort_Qn0_from_sorted_data (const unsigned short sorted_data[], const size_t stride, const size_t n, unsigned short work[], int work_int[]) ; +double gsl_stats_ushort_Qn_from_sorted_data (const unsigned short sorted_data[], const size_t stride, const size_t n, unsigned short work[], int work_int[]) ; + +__END_DECLS + +#endif /* __GSL_STATISTICS_USHORT_H__ */ diff --git a/gsl-2.5/statistics/kurtosis.c b/gsl-2.5/statistics/kurtosis.c new file mode 100644 index 00000000..4d14f51a --- /dev/null +++ b/gsl-2.5/statistics/kurtosis.c @@ -0,0 +1,71 @@ +#include +#include +#include + +#define BASE_LONG_DOUBLE +#include "templates_on.h" +#include "kurtosis_source.c" +#include "templates_off.h" +#undef BASE_LONG_DOUBLE + +#define BASE_DOUBLE +#include "templates_on.h" +#include "kurtosis_source.c" +#include "templates_off.h" +#undef BASE_DOUBLE + +#define BASE_FLOAT +#include "templates_on.h" +#include "kurtosis_source.c" +#include "templates_off.h" +#undef BASE_FLOAT + +#define BASE_ULONG +#include "templates_on.h" +#include "kurtosis_source.c" +#include "templates_off.h" +#undef BASE_ULONG + +#define BASE_LONG +#include "templates_on.h" +#include "kurtosis_source.c" +#include "templates_off.h" +#undef BASE_LONG + +#define BASE_UINT +#include "templates_on.h" +#include "kurtosis_source.c" +#include "templates_off.h" +#undef BASE_UINT + +#define BASE_INT +#include "templates_on.h" +#include "kurtosis_source.c" +#include "templates_off.h" +#undef BASE_INT + +#define BASE_USHORT +#include "templates_on.h" +#include "kurtosis_source.c" +#include "templates_off.h" +#undef BASE_USHORT + +#define BASE_SHORT +#include "templates_on.h" +#include "kurtosis_source.c" +#include "templates_off.h" +#undef BASE_SHORT + +#define BASE_UCHAR +#include "templates_on.h" +#include "kurtosis_source.c" +#include "templates_off.h" +#undef BASE_UCHAR + +#define BASE_CHAR +#include "templates_on.h" +#include "kurtosis_source.c" +#include "templates_off.h" +#undef BASE_CHAR + + diff --git a/gsl-2.5/statistics/kurtosis.lo b/gsl-2.5/statistics/kurtosis.lo new file mode 100644 index 00000000..3e09fd3f --- /dev/null +++ b/gsl-2.5/statistics/kurtosis.lo @@ -0,0 +1,12 @@ +# kurtosis.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/kurtosis.o' + +# Name of the non-PIC object +non_pic_object='kurtosis.o' + diff --git a/gsl-2.5/statistics/kurtosis_source.c b/gsl-2.5/statistics/kurtosis_source.c new file mode 100644 index 00000000..36d3a172 --- /dev/null +++ b/gsl-2.5/statistics/kurtosis_source.c @@ -0,0 +1,55 @@ +/* statistics/kurtosis_source.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Jim Davies, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +double +FUNCTION(gsl_stats,kurtosis) (const BASE data[], const size_t stride, const size_t n) +{ + const double mean = FUNCTION(gsl_stats,mean)(data, stride, n); + const double est_sd = FUNCTION(gsl_stats,sd_m)(data, stride, n, mean); + return FUNCTION(gsl_stats,kurtosis_m_sd)(data, stride, n, mean, est_sd); +} + +double +FUNCTION(gsl_stats,kurtosis_m_sd) (const BASE data[], + const size_t stride, + const size_t n, + const double mean, + const double sd) +{ + /* takes a dataset and finds the kurtosis */ + + long double avg = 0, kurtosis; + size_t i; + + /* find the fourth moment the deviations, normalized by the sd */ + + /* we use a recurrence relation to stably update a running value so + there aren't any large sums that can overflow */ + + for (i = 0; i < n; i++) + { + const long double x = (data[i * stride] - mean) / sd; + avg += (x * x * x * x - avg)/(i + 1); + } + + kurtosis = avg - 3.0; /* makes kurtosis zero for a Gaussian */ + + return kurtosis; +} + diff --git a/gsl-2.5/statistics/lag1.c b/gsl-2.5/statistics/lag1.c new file mode 100644 index 00000000..4bc09f12 --- /dev/null +++ b/gsl-2.5/statistics/lag1.c @@ -0,0 +1,70 @@ +#include +#include + +#define BASE_LONG_DOUBLE +#include "templates_on.h" +#include "lag1_source.c" +#include "templates_off.h" +#undef BASE_LONG_DOUBLE + +#define BASE_DOUBLE +#include "templates_on.h" +#include "lag1_source.c" +#include "templates_off.h" +#undef BASE_DOUBLE + +#define BASE_FLOAT +#include "templates_on.h" +#include "lag1_source.c" +#include "templates_off.h" +#undef BASE_FLOAT + +#define BASE_ULONG +#include "templates_on.h" +#include "lag1_source.c" +#include "templates_off.h" +#undef BASE_ULONG + +#define BASE_LONG +#include "templates_on.h" +#include "lag1_source.c" +#include "templates_off.h" +#undef BASE_LONG + +#define BASE_UINT +#include "templates_on.h" +#include "lag1_source.c" +#include "templates_off.h" +#undef BASE_UINT + +#define BASE_INT +#include "templates_on.h" +#include "lag1_source.c" +#include "templates_off.h" +#undef BASE_INT + +#define BASE_USHORT +#include "templates_on.h" +#include "lag1_source.c" +#include "templates_off.h" +#undef BASE_USHORT + +#define BASE_SHORT +#include "templates_on.h" +#include "lag1_source.c" +#include "templates_off.h" +#undef BASE_SHORT + +#define BASE_UCHAR +#include "templates_on.h" +#include "lag1_source.c" +#include "templates_off.h" +#undef BASE_UCHAR + +#define BASE_CHAR +#include "templates_on.h" +#include "lag1_source.c" +#include "templates_off.h" +#undef BASE_CHAR + + diff --git a/gsl-2.5/statistics/lag1.lo b/gsl-2.5/statistics/lag1.lo new file mode 100644 index 00000000..14b92121 --- /dev/null +++ b/gsl-2.5/statistics/lag1.lo @@ -0,0 +1,12 @@ +# lag1.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/lag1.o' + +# Name of the non-PIC object +non_pic_object='lag1.o' + diff --git a/gsl-2.5/statistics/lag1_source.c b/gsl-2.5/statistics/lag1_source.c new file mode 100644 index 00000000..209502ac --- /dev/null +++ b/gsl-2.5/statistics/lag1_source.c @@ -0,0 +1,51 @@ +/* statistics/lag1_source.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Jim Davies, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + + +double +FUNCTION(gsl_stats,lag1_autocorrelation) (const BASE data[], const size_t stride, const size_t n) +{ + const double mean = FUNCTION(gsl_stats,mean) (data, stride, n); + return FUNCTION(gsl_stats,lag1_autocorrelation_m)(data, stride, n, mean); +} + +double +FUNCTION(gsl_stats,lag1_autocorrelation_m) (const BASE data[], const size_t stride, const size_t size, const double mean) +{ + /* Compute the lag-1 autocorrelation of a dataset using the + recurrence relation */ + + size_t i; + + long double r1 ; + long double q = 0 ; + long double v = (data[0 * stride] - mean) * (data[0 * stride] - mean) ; + + for (i = 1; i < size ; i++) + { + const long double delta0 = (data[(i-1) * stride] - mean); + const long double delta1 = (data[i * stride] - mean); + q += (delta0 * delta1 - q)/(i + 1); + v += (delta1 * delta1 - v)/(i + 1); + } + + r1 = q / v ; + + return r1; +} diff --git a/gsl-2.5/statistics/libgslstatistics.la b/gsl-2.5/statistics/libgslstatistics.la new file mode 100644 index 00000000..56e4de6a --- /dev/null +++ b/gsl-2.5/statistics/libgslstatistics.la @@ -0,0 +1,41 @@ +# libgslstatistics.la - a libtool library file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='' + +# Names of this library. +library_names='' + +# The name of the static archive. +old_library='libgslstatistics.a' + +# Linker flags that can not go in dependency_libs. +inherited_linker_flags='' + +# Libraries that this one depends upon. +dependency_libs=' -lm' + +# Names of additional weak libraries provided by this library +weak_library_names='' + +# Version information for libgslstatistics. +current= +age= +revision= + +# Is this an already installed library? +installed=no + +# Should we warn about portability when linking against -modules? +shouldnotlink=no + +# Files to dlopen/dlpreopen +dlopen='' +dlpreopen='' + +# Directory that this library needs to be installed in: +libdir='' diff --git a/gsl-2.5/statistics/mad.c b/gsl-2.5/statistics/mad.c new file mode 100644 index 00000000..117798ca --- /dev/null +++ b/gsl-2.5/statistics/mad.c @@ -0,0 +1,72 @@ +#include +#include +#include + +#define BASE_LONG_DOUBLE +#include "templates_on.h" +#include "mad_source.c" +#include "templates_off.h" +#undef BASE_LONG_DOUBLE + +#define BASE_DOUBLE +#include "templates_on.h" +#include "mad_source.c" +#include "templates_off.h" +#undef BASE_DOUBLE + +#define BASE_FLOAT +#include "templates_on.h" +#include "mad_source.c" +#include "templates_off.h" +#undef BASE_FLOAT + +#define BASE_ULONG +#include "templates_on.h" +#include "mad_source.c" +#include "templates_off.h" +#undef BASE_ULONG + +#define BASE_LONG +#include "templates_on.h" +#include "mad_source.c" +#include "templates_off.h" +#undef BASE_LONG + +#define BASE_UINT +#include "templates_on.h" +#include "mad_source.c" +#include "templates_off.h" +#undef BASE_UINT + +#define BASE_INT +#include "templates_on.h" +#include "mad_source.c" +#include "templates_off.h" +#undef BASE_INT + +#define BASE_USHORT +#include "templates_on.h" +#include "mad_source.c" +#include "templates_off.h" +#undef BASE_USHORT + +#define BASE_SHORT +#include "templates_on.h" +#include "mad_source.c" +#include "templates_off.h" +#undef BASE_SHORT + +#define BASE_UCHAR +#include "templates_on.h" +#include "mad_source.c" +#include "templates_off.h" +#undef BASE_UCHAR + +#define BASE_CHAR +#include "templates_on.h" +#include "mad_source.c" +#include "templates_off.h" +#undef BASE_CHAR + + + diff --git a/gsl-2.5/statistics/mad.lo b/gsl-2.5/statistics/mad.lo new file mode 100644 index 00000000..a2fa0a03 --- /dev/null +++ b/gsl-2.5/statistics/mad.lo @@ -0,0 +1,12 @@ +# mad.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/mad.o' + +# Name of the non-PIC object +non_pic_object='mad.o' + diff --git a/gsl-2.5/statistics/mad_source.c b/gsl-2.5/statistics/mad_source.c new file mode 100644 index 00000000..f873b082 --- /dev/null +++ b/gsl-2.5/statistics/mad_source.c @@ -0,0 +1,66 @@ +/* statistics/mad_source.c + * + * Copyright (C) 2018 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* +gsl_stats_mad0() + Compute median absolute deviation + +Inputs: data - array containing the observations + stride - stride + n - length of 'data' + work - workspace of length n + +Return: MAD statistic (without scale/correction factor) +*/ + +double +FUNCTION(gsl_stats,mad0) (const BASE data[], + const size_t stride, + const size_t n, + double work[]) +{ + double median, mad; + size_t i; + + /* copy input data to work */ + for (i = 0; i < n; ++i) + work[i] = (double) data[i * stride]; + + /* compute median of input data using double version */ + median = gsl_stats_median(work, 1, n); + + /* compute absolute deviations from median */ + for (i = 0; i < n; ++i) + work[i] = fabs((double) data[i * stride] - median); + + mad = gsl_stats_median(work, 1, n); + + return mad; +} + +double +FUNCTION(gsl_stats,mad) (const BASE data[], + const size_t stride, + const size_t n, + double work[]) +{ + double mad0 = FUNCTION(gsl_stats,mad0)(data, stride, n, work); + double mad = 1.482602218505602 * mad0; + return mad; +} diff --git a/gsl-2.5/statistics/mean.c b/gsl-2.5/statistics/mean.c new file mode 100644 index 00000000..24dd04f9 --- /dev/null +++ b/gsl-2.5/statistics/mean.c @@ -0,0 +1,70 @@ +#include +#include + +#define BASE_LONG_DOUBLE +#include "templates_on.h" +#include "mean_source.c" +#include "templates_off.h" +#undef BASE_LONG_DOUBLE + +#define BASE_DOUBLE +#include "templates_on.h" +#include "mean_source.c" +#include "templates_off.h" +#undef BASE_DOUBLE + +#define BASE_FLOAT +#include "templates_on.h" +#include "mean_source.c" +#include "templates_off.h" +#undef BASE_FLOAT + +#define BASE_ULONG +#include "templates_on.h" +#include "mean_source.c" +#include "templates_off.h" +#undef BASE_ULONG + +#define BASE_LONG +#include "templates_on.h" +#include "mean_source.c" +#include "templates_off.h" +#undef BASE_LONG + +#define BASE_UINT +#include "templates_on.h" +#include "mean_source.c" +#include "templates_off.h" +#undef BASE_UINT + +#define BASE_INT +#include "templates_on.h" +#include "mean_source.c" +#include "templates_off.h" +#undef BASE_INT + +#define BASE_USHORT +#include "templates_on.h" +#include "mean_source.c" +#include "templates_off.h" +#undef BASE_USHORT + +#define BASE_SHORT +#include "templates_on.h" +#include "mean_source.c" +#include "templates_off.h" +#undef BASE_SHORT + +#define BASE_UCHAR +#include "templates_on.h" +#include "mean_source.c" +#include "templates_off.h" +#undef BASE_UCHAR + +#define BASE_CHAR +#include "templates_on.h" +#include "mean_source.c" +#include "templates_off.h" +#undef BASE_CHAR + + diff --git a/gsl-2.5/statistics/mean.lo b/gsl-2.5/statistics/mean.lo new file mode 100644 index 00000000..2af1df9f --- /dev/null +++ b/gsl-2.5/statistics/mean.lo @@ -0,0 +1,12 @@ +# mean.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/mean.o' + +# Name of the non-PIC object +non_pic_object='mean.o' + diff --git a/gsl-2.5/statistics/mean_source.c b/gsl-2.5/statistics/mean_source.c new file mode 100644 index 00000000..d54c3d60 --- /dev/null +++ b/gsl-2.5/statistics/mean_source.c @@ -0,0 +1,35 @@ +/* statistics/mean_source.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Jim Davies, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +double +FUNCTION (gsl_stats, mean) (const BASE data[], const size_t stride, const size_t size) +{ + /* Compute the arithmetic mean of a dataset using the recurrence relation + mean_(n) = mean(n-1) + (data[n] - mean(n-1))/(n+1) */ + + long double mean = 0; + size_t i; + + for (i = 0; i < size; i++) + { + mean += (data[i * stride] - mean) / (i + 1); + } + + return mean; +} diff --git a/gsl-2.5/statistics/median.c b/gsl-2.5/statistics/median.c new file mode 100644 index 00000000..e42301b8 --- /dev/null +++ b/gsl-2.5/statistics/median.c @@ -0,0 +1,71 @@ +#include +#include + +#define BASE_LONG_DOUBLE +#include "templates_on.h" +#include "median_source.c" +#include "templates_off.h" +#undef BASE_LONG_DOUBLE + +#define BASE_DOUBLE +#include "templates_on.h" +#include "median_source.c" +#include "templates_off.h" +#undef BASE_DOUBLE + +#define BASE_FLOAT +#include "templates_on.h" +#include "median_source.c" +#include "templates_off.h" +#undef BASE_FLOAT + +#define BASE_ULONG +#include "templates_on.h" +#include "median_source.c" +#include "templates_off.h" +#undef BASE_ULONG + +#define BASE_LONG +#include "templates_on.h" +#include "median_source.c" +#include "templates_off.h" +#undef BASE_LONG + +#define BASE_UINT +#include "templates_on.h" +#include "median_source.c" +#include "templates_off.h" +#undef BASE_UINT + +#define BASE_INT +#include "templates_on.h" +#include "median_source.c" +#include "templates_off.h" +#undef BASE_INT + +#define BASE_USHORT +#include "templates_on.h" +#include "median_source.c" +#include "templates_off.h" +#undef BASE_USHORT + +#define BASE_SHORT +#include "templates_on.h" +#include "median_source.c" +#include "templates_off.h" +#undef BASE_SHORT + +#define BASE_UCHAR +#include "templates_on.h" +#include "median_source.c" +#include "templates_off.h" +#undef BASE_UCHAR + +#define BASE_CHAR +#include "templates_on.h" +#include "median_source.c" +#include "templates_off.h" +#undef BASE_CHAR + + + diff --git a/gsl-2.5/statistics/median.lo b/gsl-2.5/statistics/median.lo new file mode 100644 index 00000000..f475946c --- /dev/null +++ b/gsl-2.5/statistics/median.lo @@ -0,0 +1,12 @@ +# median.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/median.o' + +# Name of the non-PIC object +non_pic_object='median.o' + diff --git a/gsl-2.5/statistics/median_source.c b/gsl-2.5/statistics/median_source.c new file mode 100644 index 00000000..420b31dd --- /dev/null +++ b/gsl-2.5/statistics/median_source.c @@ -0,0 +1,67 @@ +/* statistics/median_source.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Jim Davies, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + + +double +FUNCTION(gsl_stats,median_from_sorted_data) (const BASE sorted_data[], + const size_t stride, + const size_t n) +{ + double median ; + const size_t lhs = (n - 1) / 2 ; + const size_t rhs = n / 2 ; + + if (n == 0) + return 0.0 ; + + if (lhs == rhs) + { + median = sorted_data[lhs * stride] ; + } + else + { + median = (sorted_data[lhs * stride] + sorted_data[rhs * stride])/2.0 ; + } + + return median ; +} + +double +FUNCTION(gsl_stats,median) (BASE data[], const size_t stride, const size_t n) +{ + double median; + const size_t lhs = (n - 1) / 2 ; + const size_t rhs = n / 2 ; + + if (n == 0) + return 0.0; + + if (lhs == rhs) + { + median = (double) FUNCTION(gsl_stats,select)(data, stride, n, lhs); + } + else + { + BASE a = FUNCTION(gsl_stats,select)(data, stride, n, lhs); + BASE b = FUNCTION(gsl_stats,select)(data, stride, n, rhs); + median = 0.5 * (a + b); + } + + return median; +} diff --git a/gsl-2.5/statistics/minmax.c b/gsl-2.5/statistics/minmax.c new file mode 100644 index 00000000..e3ce0027 --- /dev/null +++ b/gsl-2.5/statistics/minmax.c @@ -0,0 +1,72 @@ +#include +#include +#include +#include + +#define BASE_LONG_DOUBLE +#include "templates_on.h" +#include "minmax_source.c" +#include "templates_off.h" +#undef BASE_LONG_DOUBLE + +#define BASE_DOUBLE +#include "templates_on.h" +#include "minmax_source.c" +#include "templates_off.h" +#undef BASE_DOUBLE + +#define BASE_FLOAT +#include "templates_on.h" +#include "minmax_source.c" +#include "templates_off.h" +#undef BASE_FLOAT + +#define BASE_ULONG +#include "templates_on.h" +#include "minmax_source.c" +#include "templates_off.h" +#undef BASE_ULONG + +#define BASE_LONG +#include "templates_on.h" +#include "minmax_source.c" +#include "templates_off.h" +#undef BASE_LONG + +#define BASE_UINT +#include "templates_on.h" +#include "minmax_source.c" +#include "templates_off.h" +#undef BASE_UINT + +#define BASE_INT +#include "templates_on.h" +#include "minmax_source.c" +#include "templates_off.h" +#undef BASE_INT + +#define BASE_USHORT +#include "templates_on.h" +#include "minmax_source.c" +#include "templates_off.h" +#undef BASE_USHORT + +#define BASE_SHORT +#include "templates_on.h" +#include "minmax_source.c" +#include "templates_off.h" +#undef BASE_SHORT + +#define BASE_UCHAR +#include "templates_on.h" +#include "minmax_source.c" +#include "templates_off.h" +#undef BASE_UCHAR + +#define BASE_CHAR +#include "templates_on.h" +#include "minmax_source.c" +#include "templates_off.h" +#undef BASE_CHAR + + diff --git a/gsl-2.5/statistics/minmax.lo b/gsl-2.5/statistics/minmax.lo new file mode 100644 index 00000000..adb8d3f7 --- /dev/null +++ b/gsl-2.5/statistics/minmax.lo @@ -0,0 +1,12 @@ +# minmax.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/minmax.o' + +# Name of the non-PIC object +non_pic_object='minmax.o' + diff --git a/gsl-2.5/statistics/minmax_source.c b/gsl-2.5/statistics/minmax_source.c new file mode 100644 index 00000000..1fcc35b9 --- /dev/null +++ b/gsl-2.5/statistics/minmax_source.c @@ -0,0 +1,207 @@ +/* statistics/minmax_source.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Jim Davies, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + + +BASE +FUNCTION (gsl_stats,max) (const BASE data[], const size_t stride, + const size_t n) +{ + /* finds the largest member of a dataset */ + + BASE max = data[0 * stride]; + size_t i; + + for (i = 0; i < n; i++) + { + BASE xi = data[i * stride]; + + if (xi > max) + max = xi; +#ifdef FP + if (isnan (xi)) + return xi; +#endif + } + + return max; +} + +BASE +FUNCTION (gsl_stats,min) (const BASE data[], const size_t stride, + const size_t n) +{ + /* finds the smallest member of a dataset */ + + BASE min = data[0 * stride]; + size_t i; + + for (i = 0; i < n; i++) + { + BASE xi = data[i * stride]; + + if (xi < min) + min = xi; +#ifdef FP + if (isnan (xi)) + return xi; +#endif + } + + return min; + +} + +void +FUNCTION (gsl_stats,minmax) (BASE * min_out, BASE * max_out, + const BASE data[], const size_t stride, + const size_t n) +{ + /* finds the smallest and largest members of a dataset */ + + BASE min = data[0 * stride]; + BASE max = data[0 * stride]; + size_t i; + + for (i = 0; i < n; i++) + { + BASE xi = data[i * stride]; + + if (xi < min) + min = xi; + + if (xi > max) + max = xi; + +#ifdef FP + if (isnan (xi)) + { + min = xi; + max = xi; + break; + } +#endif + + } + + *min_out = min; + *max_out = max; +} + +size_t +FUNCTION (gsl_stats,max_index) (const BASE data[], const size_t stride, + const size_t n) +{ + /* finds the index of the largest member of a dataset */ + /* if there is more than one largest value then we choose the first */ + + BASE max = data[0 * stride]; + size_t i, max_index = 0; + + for (i = 0; i < n; i++) + { + BASE xi = data[i * stride]; + + if (xi > max) + { + max = xi; + max_index = i; + } + +#ifdef FP + if (isnan (xi)) + { + return i; + } +#endif + } + + return max_index; +} + +size_t +FUNCTION (gsl_stats,min_index) (const BASE data[], const size_t stride, + const size_t n) +{ + /* finds the index of the smallest member of a dataset */ + /* if there is more than one largest value then we choose the first */ + + BASE min = data[0 * stride]; + size_t i, min_index = 0; + + for (i = 0; i < n; i++) + { + BASE xi = data[i * stride]; + + if (xi < min) + { + min = xi; + min_index = i; + } + +#ifdef FP + if (isnan (xi)) + { + return i; + } +#endif + } + + return min_index; +} + +void +FUNCTION (gsl_stats,minmax_index) (size_t * min_index_out, + size_t * max_index_out, const BASE data[], + const size_t stride, const size_t n) +{ + /* finds the smallest and largest members of a dataset */ + + BASE min = data[0 * stride]; + BASE max = data[0 * stride]; + size_t i, min_index = 0, max_index = 0; + + for (i = 0; i < n; i++) + { + BASE xi = data[i * stride]; + + if (xi < min) + { + min = xi; + min_index = i; + } + + if (xi > max) + { + max = xi; + max_index = i; + } + +#ifdef FP + if (isnan (xi)) + { + min_index = i; + max_index = i; + break; + } +#endif + } + + *min_index_out = min_index; + *max_index_out = max_index; +} diff --git a/gsl-2.5/statistics/p_variance.c b/gsl-2.5/statistics/p_variance.c new file mode 100644 index 00000000..dafb43e2 --- /dev/null +++ b/gsl-2.5/statistics/p_variance.c @@ -0,0 +1,71 @@ +#include +#include + +#define BASE_LONG_DOUBLE +#include "templates_on.h" +#include "p_variance_source.c" +#include "templates_off.h" +#undef BASE_LONG_DOUBLE + +#define BASE_DOUBLE +#include "templates_on.h" +#include "p_variance_source.c" +#include "templates_off.h" +#undef BASE_DOUBLE + +#define BASE_FLOAT +#include "templates_on.h" +#include "p_variance_source.c" +#include "templates_off.h" +#undef BASE_FLOAT + +#define BASE_ULONG +#include "templates_on.h" +#include "p_variance_source.c" +#include "templates_off.h" +#undef BASE_ULONG + +#define BASE_LONG +#include "templates_on.h" +#include "p_variance_source.c" +#include "templates_off.h" +#undef BASE_LONG + +#define BASE_UINT +#include "templates_on.h" +#include "p_variance_source.c" +#include "templates_off.h" +#undef BASE_UINT + +#define BASE_INT +#include "templates_on.h" +#include "p_variance_source.c" +#include "templates_off.h" +#undef BASE_INT + +#define BASE_USHORT +#include "templates_on.h" +#include "p_variance_source.c" +#include "templates_off.h" +#undef BASE_USHORT + +#define BASE_SHORT +#include "templates_on.h" +#include "p_variance_source.c" +#include "templates_off.h" +#undef BASE_SHORT + +#define BASE_UCHAR +#include "templates_on.h" +#include "p_variance_source.c" +#include "templates_off.h" +#undef BASE_UCHAR + +#define BASE_CHAR +#include "templates_on.h" +#include "p_variance_source.c" +#include "templates_off.h" +#undef BASE_CHAR + + + diff --git a/gsl-2.5/statistics/p_variance.lo b/gsl-2.5/statistics/p_variance.lo new file mode 100644 index 00000000..60311f55 --- /dev/null +++ b/gsl-2.5/statistics/p_variance.lo @@ -0,0 +1,12 @@ +# p_variance.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/p_variance.o' + +# Name of the non-PIC object +non_pic_object='p_variance.o' + diff --git a/gsl-2.5/statistics/p_variance_source.c b/gsl-2.5/statistics/p_variance_source.c new file mode 100644 index 00000000..c127b9cd --- /dev/null +++ b/gsl-2.5/statistics/p_variance_source.c @@ -0,0 +1,39 @@ +/* statistics/p_variance_source.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Jim Davies, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + + +double +FUNCTION(gsl_stats,pvariance) (const BASE data1[], + const size_t stride1, const size_t n1, + const BASE data2[], + const size_t stride2, const size_t n2) +{ + /* Find the pooled variance of two datasets */ + + const double var1 = FUNCTION(gsl_stats,variance) (data1, stride1, n1); + const double var2 = FUNCTION(gsl_stats,variance) (data2, stride2, n2); + + /* calculate the pooled variance */ + + const double pooled_variance = + (((n1 - 1) * var1) + ((n2 - 1) * var2)) / (n1 + n2 - 2); + + return pooled_variance; +} + diff --git a/gsl-2.5/statistics/quantiles.c b/gsl-2.5/statistics/quantiles.c new file mode 100644 index 00000000..96a3a25c --- /dev/null +++ b/gsl-2.5/statistics/quantiles.c @@ -0,0 +1,71 @@ +#include +#include + +#define BASE_LONG_DOUBLE +#include "templates_on.h" +#include "quantiles_source.c" +#include "templates_off.h" +#undef BASE_LONG_DOUBLE + +#define BASE_DOUBLE +#include "templates_on.h" +#include "quantiles_source.c" +#include "templates_off.h" +#undef BASE_DOUBLE + +#define BASE_FLOAT +#include "templates_on.h" +#include "quantiles_source.c" +#include "templates_off.h" +#undef BASE_FLOAT + +#define BASE_ULONG +#include "templates_on.h" +#include "quantiles_source.c" +#include "templates_off.h" +#undef BASE_ULONG + +#define BASE_LONG +#include "templates_on.h" +#include "quantiles_source.c" +#include "templates_off.h" +#undef BASE_LONG + +#define BASE_UINT +#include "templates_on.h" +#include "quantiles_source.c" +#include "templates_off.h" +#undef BASE_UINT + +#define BASE_INT +#include "templates_on.h" +#include "quantiles_source.c" +#include "templates_off.h" +#undef BASE_INT + +#define BASE_USHORT +#include "templates_on.h" +#include "quantiles_source.c" +#include "templates_off.h" +#undef BASE_USHORT + +#define BASE_SHORT +#include "templates_on.h" +#include "quantiles_source.c" +#include "templates_off.h" +#undef BASE_SHORT + +#define BASE_UCHAR +#include "templates_on.h" +#include "quantiles_source.c" +#include "templates_off.h" +#undef BASE_UCHAR + +#define BASE_CHAR +#include "templates_on.h" +#include "quantiles_source.c" +#include "templates_off.h" +#undef BASE_CHAR + + + diff --git a/gsl-2.5/statistics/quantiles.lo b/gsl-2.5/statistics/quantiles.lo new file mode 100644 index 00000000..aacb6238 --- /dev/null +++ b/gsl-2.5/statistics/quantiles.lo @@ -0,0 +1,12 @@ +# quantiles.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/quantiles.o' + +# Name of the non-PIC object +non_pic_object='quantiles.o' + diff --git a/gsl-2.5/statistics/quantiles_source.c b/gsl-2.5/statistics/quantiles_source.c new file mode 100644 index 00000000..e2956d9d --- /dev/null +++ b/gsl-2.5/statistics/quantiles_source.c @@ -0,0 +1,45 @@ +/* statistics/quantiles_source.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Jim Davies, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + + +double +FUNCTION(gsl_stats,quantile_from_sorted_data) (const BASE sorted_data[], + const size_t stride, + const size_t n, + const double f) +{ + const double index = f * (n - 1) ; + const size_t lhs = (int)index ; + const double delta = index - lhs ; + double result; + + if (n == 0) + return 0.0 ; + + if (lhs == n - 1) + { + result = sorted_data[lhs * stride] ; + } + else + { + result = (1 - delta) * sorted_data[lhs * stride] + delta * sorted_data[(lhs + 1) * stride] ; + } + + return result ; +} diff --git a/gsl-2.5/statistics/select.c b/gsl-2.5/statistics/select.c new file mode 100644 index 00000000..dee9d9e4 --- /dev/null +++ b/gsl-2.5/statistics/select.c @@ -0,0 +1,73 @@ +#include +#include +#include +#include + +#define BASE_LONG_DOUBLE +#include "templates_on.h" +#include "select_source.c" +#include "templates_off.h" +#undef BASE_LONG_DOUBLE + +#define BASE_DOUBLE +#include "templates_on.h" +#include "select_source.c" +#include "templates_off.h" +#undef BASE_DOUBLE + +#define BASE_FLOAT +#include "templates_on.h" +#include "select_source.c" +#include "templates_off.h" +#undef BASE_FLOAT + +#define BASE_ULONG +#include "templates_on.h" +#include "select_source.c" +#include "templates_off.h" +#undef BASE_ULONG + +#define BASE_LONG +#include "templates_on.h" +#include "select_source.c" +#include "templates_off.h" +#undef BASE_LONG + +#define BASE_UINT +#include "templates_on.h" +#include "select_source.c" +#include "templates_off.h" +#undef BASE_UINT + +#define BASE_INT +#include "templates_on.h" +#include "select_source.c" +#include "templates_off.h" +#undef BASE_INT + +#define BASE_USHORT +#include "templates_on.h" +#include "select_source.c" +#include "templates_off.h" +#undef BASE_USHORT + +#define BASE_SHORT +#include "templates_on.h" +#include "select_source.c" +#include "templates_off.h" +#undef BASE_SHORT + +#define BASE_UCHAR +#include "templates_on.h" +#include "select_source.c" +#include "templates_off.h" +#undef BASE_UCHAR + +#define BASE_CHAR +#include "templates_on.h" +#include "select_source.c" +#include "templates_off.h" +#undef BASE_CHAR + + + diff --git a/gsl-2.5/statistics/select.lo b/gsl-2.5/statistics/select.lo new file mode 100644 index 00000000..341fdc4a --- /dev/null +++ b/gsl-2.5/statistics/select.lo @@ -0,0 +1,12 @@ +# select.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/select.o' + +# Name of the non-PIC object +non_pic_object='select.o' + diff --git a/gsl-2.5/statistics/select_source.c b/gsl-2.5/statistics/select_source.c new file mode 100644 index 00000000..46c0578b --- /dev/null +++ b/gsl-2.5/statistics/select_source.c @@ -0,0 +1,112 @@ +/* statistics/select_source.c + * + * Copyright (C) 2018 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#define SWAP(a,b) do { tmp = b ; b = a ; a = tmp ; } while(0) + +/* +gsl_stats_select() + Select k-th largest element from an unsorted array using +quickselect algorithm + +Inputs: data - unsorted array containing the observations + stride - stride + n - length of 'data' + k - desired element in [0,n-1] + +Return: k-th largest element of data[] +*/ + +BASE +FUNCTION(gsl_stats,select) (BASE data[], + const size_t stride, + const size_t n, + const size_t k) +{ + if (n == 0) + { + GSL_ERROR_VAL("array size must be positive", GSL_EBADLEN, 0.0); + } + else + { + size_t left = 0; + size_t right = n - 1; + size_t mid, i, j; + BASE pivot, tmp; + + while (1) + { + if (right <= left + 1) + { + if (right == left + 1 && data[right * stride] < data[left * stride]) + { + SWAP(data[left * stride], data[right * stride]); + } + + return data[k * stride]; + } + else + { + mid = (left + right) >> 1; + SWAP(data[mid * stride], data[(left + 1) * stride]); + + if (data[left * stride] > data[right * stride]) + { + SWAP(data[left * stride], data[right * stride]); + } + + if (data[(left + 1) * stride] > data[right * stride]) + { + SWAP(data[(left + 1) * stride], data[right * stride]); + } + + if (data[left * stride] > data[(left + 1) * stride]) + { + SWAP(data[left * stride], data[(left + 1) * stride]); + } + + i = left + 1; + j = right; + pivot = data[(left + 1) * stride]; + + while (1) + { + do i++; while (data[i * stride] < pivot); + do j--; while (data[j * stride] > pivot); + + if (j < i) + break; + + SWAP(data[i * stride], data[j * stride]); + } + + data[(left + 1) * stride] = data[j * stride]; + data[j * stride] = pivot; + + if (j >= k) + right = j - 1; + + if (j <= k) + left = i; + } + } + + /* will never get here */ + GSL_ERROR_VAL("select error", GSL_FAILURE, 0.0); + } +} diff --git a/gsl-2.5/statistics/skew.c b/gsl-2.5/statistics/skew.c new file mode 100644 index 00000000..00f379ca --- /dev/null +++ b/gsl-2.5/statistics/skew.c @@ -0,0 +1,72 @@ +#include +#include +#include + +#define BASE_LONG_DOUBLE +#include "templates_on.h" +#include "skew_source.c" +#include "templates_off.h" +#undef BASE_LONG_DOUBLE + +#define BASE_DOUBLE +#include "templates_on.h" +#include "skew_source.c" +#include "templates_off.h" +#undef BASE_DOUBLE + +#define BASE_FLOAT +#include "templates_on.h" +#include "skew_source.c" +#include "templates_off.h" +#undef BASE_FLOAT + +#define BASE_ULONG +#include "templates_on.h" +#include "skew_source.c" +#include "templates_off.h" +#undef BASE_ULONG + +#define BASE_LONG +#include "templates_on.h" +#include "skew_source.c" +#include "templates_off.h" +#undef BASE_LONG + +#define BASE_UINT +#include "templates_on.h" +#include "skew_source.c" +#include "templates_off.h" +#undef BASE_UINT + +#define BASE_INT +#include "templates_on.h" +#include "skew_source.c" +#include "templates_off.h" +#undef BASE_INT + +#define BASE_USHORT +#include "templates_on.h" +#include "skew_source.c" +#include "templates_off.h" +#undef BASE_USHORT + +#define BASE_SHORT +#include "templates_on.h" +#include "skew_source.c" +#include "templates_off.h" +#undef BASE_SHORT + +#define BASE_UCHAR +#include "templates_on.h" +#include "skew_source.c" +#include "templates_off.h" +#undef BASE_UCHAR + +#define BASE_CHAR +#include "templates_on.h" +#include "skew_source.c" +#include "templates_off.h" +#undef BASE_CHAR + + + diff --git a/gsl-2.5/statistics/skew.lo b/gsl-2.5/statistics/skew.lo new file mode 100644 index 00000000..bf184b15 --- /dev/null +++ b/gsl-2.5/statistics/skew.lo @@ -0,0 +1,12 @@ +# skew.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/skew.o' + +# Name of the non-PIC object +non_pic_object='skew.o' + diff --git a/gsl-2.5/statistics/skew_source.c b/gsl-2.5/statistics/skew_source.c new file mode 100644 index 00000000..d5895582 --- /dev/null +++ b/gsl-2.5/statistics/skew_source.c @@ -0,0 +1,51 @@ +/* statistics/skew_source.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Jim Davies, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +double +FUNCTION(gsl_stats,skew) (const BASE data[], const size_t stride, const size_t n) +{ + const double mean = FUNCTION(gsl_stats,mean)(data, stride, n); + const double sd = FUNCTION(gsl_stats,sd_m)(data, stride, n, mean); + return FUNCTION(gsl_stats,skew_m_sd)(data, stride, n, mean, sd); +} + +double +FUNCTION(gsl_stats,skew_m_sd) (const BASE data[], + const size_t stride, const size_t n, + const double mean, const double sd) +{ + /* takes a dataset and finds the skewness */ + + long double skew = 0; + size_t i; + + /* find the sum of the cubed deviations, normalized by the sd. */ + + /* we use a recurrence relation to stably update a running value so + there aren't any large sums that can overflow */ + + for (i = 0; i < n; i++) + { + const long double x = (data[i * stride] - mean) / sd; + skew += (x * x * x - skew) / (i + 1); + } + + return skew; +} + diff --git a/gsl-2.5/statistics/test b/gsl-2.5/statistics/test new file mode 100755 index 00000000..926a1abe Binary files /dev/null and b/gsl-2.5/statistics/test differ diff --git a/gsl-2.5/statistics/test-suite.log b/gsl-2.5/statistics/test-suite.log new file mode 100644 index 00000000..84fbb2c7 --- /dev/null +++ b/gsl-2.5/statistics/test-suite.log @@ -0,0 +1,14 @@ +======================================== + gsl 2.5: statistics/test-suite.log +======================================== + +# TOTAL: 1 +# PASS: 1 +# SKIP: 0 +# XFAIL: 0 +# FAIL: 0 +# XPASS: 0 +# ERROR: 0 + +.. contents:: :depth: 2 + diff --git a/gsl-2.5/statistics/test.c b/gsl-2.5/statistics/test.c new file mode 100644 index 00000000..b4134be0 --- /dev/null +++ b/gsl-2.5/statistics/test.c @@ -0,0 +1,134 @@ +/* statistics/test.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Jim Davies, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +int test_nist (void); +int test_robust (void); + +/* Test program for mean.c. JimDavies 7.96 */ + +#define BASE_LONG_DOUBLE +#include "templates_on.h" +#include "test_float_source.c" +#include "templates_off.h" +#undef BASE_LONG_DOUBLE + +#define BASE_DOUBLE +#include "templates_on.h" +#include "test_float_source.c" +#include "templates_off.h" +#undef BASE_DOUBLE + +#define BASE_FLOAT +#include "templates_on.h" +#include "test_float_source.c" +#include "templates_off.h" +#undef BASE_FLOAT + +#define BASE_ULONG +#include "templates_on.h" +#include "test_int_source.c" +#include "templates_off.h" +#undef BASE_ULONG + +#define BASE_LONG +#include "templates_on.h" +#include "test_int_source.c" +#include "templates_off.h" +#undef BASE_LONG + +#define BASE_UINT +#include "templates_on.h" +#include "test_int_source.c" +#include "templates_off.h" +#undef BASE_UINT + +#define BASE_INT +#include "templates_on.h" +#include "test_int_source.c" +#include "templates_off.h" +#undef BASE_INT + +#define BASE_USHORT +#include "templates_on.h" +#include "test_int_source.c" +#include "templates_off.h" +#undef BASE_USHORT + +#define BASE_SHORT +#include "templates_on.h" +#include "test_int_source.c" +#include "templates_off.h" +#undef BASE_SHORT + +#define BASE_UCHAR +#include "templates_on.h" +#include "test_int_source.c" +#include "templates_off.h" +#undef BASE_UCHAR + +#define BASE_CHAR +#include "templates_on.h" +#include "test_int_source.c" +#include "templates_off.h" +#undef BASE_CHAR + + +int +main (void) +{ + size_t s1, s2; + + gsl_ieee_env_setup (); + + for (s1 = 1; s1 < 4 ; s1++) + { + s2 = (s1 < 3) ? 1 : (s1 - 1) ; + + test_func (s1,s2); + test_float_func (s1,s2); + test_long_double_func (s1,s2); + + test_ulong_func (s1,s2); + test_long_func (s1,s2); + test_uint_func (s1,s2); + test_int_func (s1,s2); + test_ushort_func (s1,s2); + test_short_func (s1,s2); + test_uchar_func (s1,s2); + test_char_func (s1,s2); + } + + test_nist(); + test_robust(); + + exit (gsl_test_summary ()); +} + diff --git a/gsl-2.5/statistics/test.log b/gsl-2.5/statistics/test.log new file mode 100644 index 00000000..93a28586 --- /dev/null +++ b/gsl-2.5/statistics/test.log @@ -0,0 +1 @@ +Completed [2145/2145] diff --git a/gsl-2.5/statistics/test.trs b/gsl-2.5/statistics/test.trs new file mode 100644 index 00000000..3f0f396c --- /dev/null +++ b/gsl-2.5/statistics/test.trs @@ -0,0 +1,4 @@ +:test-result: PASS +:global-test-result: PASS +:recheck: no +:copy-in-global-log: no diff --git a/gsl-2.5/statistics/test_float_source.c b/gsl-2.5/statistics/test_float_source.c new file mode 100644 index 00000000..bdaf55fa --- /dev/null +++ b/gsl-2.5/statistics/test_float_source.c @@ -0,0 +1,561 @@ +/* statistics/test_float_source.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Jim Davies, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +void FUNCTION (test, func) (const size_t stridea, const size_t strideb); + +void +FUNCTION (test, func) (const size_t stridea, const size_t strideb) +{ + /* sample sets of doubles */ + size_t i; + const size_t na = 14, nb = 14; + + const double rawa[] = + {.0421, .0941, .1064, .0242, .1331, + .0773, .0243, .0815, .1186, .0356, + .0728, .0999, .0614, .0479}; + + const double rawb[] = + {.1081, .0986, .1566, .1961, .1125, + .1942, .1079, .1021, .1583, .1673, + .1675, .1856, .1688, .1512}; + + const double raww[] = + {.0000, .0000, .0000, 3.000, .0000, + 1.000, 1.000, 1.000, 0.000, .5000, + 7.000, 5.000, 4.000, 0.123}; + + BASE * sorted ; + + BASE * groupa = (BASE *) malloc (stridea * na * sizeof(BASE)); + BASE * groupb = (BASE *) malloc (strideb * nb * sizeof(BASE)); + BASE * w = (BASE *) malloc (strideb * na * sizeof(BASE)); + +#ifdef BASE_FLOAT + double rel = 1e-6; +#else + double rel = 1e-10; +#endif + + for (i = 0 ; i < na ; i++) + groupa[i * stridea] = (BASE) rawa[i] ; + + for (i = 0 ; i < na ; i++) + w[i * strideb] = (BASE) raww[i] ; + + for (i = 0 ; i < nb ; i++) + groupb[i * strideb] = (BASE) rawb[i] ; + + + { + double mean = FUNCTION(gsl_stats,mean) (groupa, stridea, na); + double expected = 0.0728; + gsl_test_rel (mean, expected, rel, NAME(gsl_stats) "_mean"); + } + + { + double mean = FUNCTION(gsl_stats,mean) (groupa, stridea, na); + double var = FUNCTION(gsl_stats,variance_with_fixed_mean) (groupa, stridea, na, mean); + double expected = 0.00113837428571429; + gsl_test_rel (var, expected, rel, NAME(gsl_stats) "_variance_with_fixed_mean"); + } + + + { + double mean = FUNCTION(gsl_stats,mean) (groupa, stridea, na); + double var = FUNCTION(gsl_stats,sd_with_fixed_mean) (groupa, stridea, na, mean); + double expected = 0.0337398026922845; + gsl_test_rel (var, expected, rel, NAME(gsl_stats) "_sd_with_fixed_mean"); + } + + + { + double var = FUNCTION(gsl_stats,variance) (groupb, strideb, nb); + double expected = 0.00124956615384615; + gsl_test_rel (var, expected, rel, NAME(gsl_stats) "_variance"); + } + + { + double sd = FUNCTION(gsl_stats,sd) (groupa, stridea, na); + double expected = 0.0350134479659107; + gsl_test_rel (sd, expected, rel, NAME(gsl_stats) "_sd"); + } + + { + double ss = FUNCTION(gsl_stats,tss) (groupb, strideb, nb); + double expected = 0.01624436; + gsl_test_rel (ss, expected, rel, NAME(gsl_stats) "_ss"); + } + + { + double mean = FUNCTION(gsl_stats,mean) (groupa, stridea, na); + double ss = FUNCTION(gsl_stats,tss_m) (groupa, stridea, na, mean); + double expected = 1.59372400000000e-02; + gsl_test_rel (ss, expected, rel, NAME(gsl_stats) "_ss_m"); + } + + { + double absdev = FUNCTION(gsl_stats,absdev) (groupa, stridea, na); + double expected = 0.0287571428571429; + gsl_test_rel (absdev, expected, rel, NAME(gsl_stats) "_absdev"); + } + + { + double skew = FUNCTION(gsl_stats,skew) (groupa, stridea, na); + double expected = 0.0954642051479004; + gsl_test_rel (skew, expected, rel, NAME(gsl_stats) "_skew"); + } + + { + double kurt = FUNCTION(gsl_stats,kurtosis) (groupa, stridea, na); + double expected = -1.38583851548909 ; + gsl_test_rel (kurt, expected, rel, NAME(gsl_stats) "_kurtosis"); + } + + { + double wmean = FUNCTION(gsl_stats,wmean) (w, strideb, groupa, stridea, na); + double expected = 0.0678111523670601; + gsl_test_rel (wmean, expected, rel, NAME(gsl_stats) "_wmean"); + } + + { + double wmean = FUNCTION(gsl_stats,wmean) (w, strideb, groupa, stridea, na); + double wvar = FUNCTION(gsl_stats,wvariance_with_fixed_mean) (w, strideb, groupa, stridea, na, wmean); + double expected = 0.000615793060878654; + gsl_test_rel (wvar, expected, rel, NAME(gsl_stats) "_wvariance_with_fixed_mean"); + } + + { + double est_wvar = FUNCTION(gsl_stats,wvariance) (w, strideb, groupa, stridea, na); + double expected = 0.000769562962860317; + gsl_test_rel (est_wvar, expected, rel, NAME(gsl_stats) "_wvariance"); + } + + { + double wsd = FUNCTION(gsl_stats,wsd) (w, strideb, groupa, stridea, na); + double expected = 0.0277409978706664; + gsl_test_rel (wsd, expected, rel, NAME(gsl_stats) "_wsd"); + } + + + { + double wtss = FUNCTION(gsl_stats,wtss) (w, strideb, groupa, stridea, na); + double expected = 1.39310864162578e-02; + gsl_test_rel (wtss, expected, rel, NAME(gsl_stats) "_wtss"); + } + + { + double wmean = FUNCTION(gsl_stats,wmean) (w, strideb, groupa, stridea, na); + double wtss = FUNCTION(gsl_stats,wtss_m) (w, strideb, groupa, stridea, na, wmean); + double expected = 1.39310864162578e-02; + gsl_test_rel (wtss, expected, rel, NAME(gsl_stats) "_wtss_m"); + } + + + + { + double wabsdev = FUNCTION(gsl_stats,wabsdev) (w, strideb, groupa, stridea, na); + double expected = 0.0193205027504008; + gsl_test_rel (wabsdev, expected, rel, NAME(gsl_stats) "_wabsdev"); + } + + { + double wskew = FUNCTION(gsl_stats,wskew) (w, strideb, groupa, stridea, na); + double expected = -0.373631000307076; + gsl_test_rel (wskew, expected, rel, NAME(gsl_stats) "_wskew"); + } + + { + double wkurt = FUNCTION(gsl_stats,wkurtosis) (w, strideb, groupa, stridea, na); + double expected = -1.48114233353963; + gsl_test_rel (wkurt, expected, rel, NAME(gsl_stats) "_wkurtosis"); + } + + { + double c = FUNCTION(gsl_stats,covariance) (groupa, stridea, groupb, strideb, nb); + double expected = -0.000139021538461539; + gsl_test_rel (c, expected, rel, NAME(gsl_stats) "_covariance"); + } + + { + double r = FUNCTION(gsl_stats,correlation) (groupa, stridea, groupb, strideb, nb); + double expected = -0.112322712666074171; + gsl_test_rel (r, expected, rel, NAME(gsl_stats) "_correlation"); + } + + { + double *work = malloc(2 * na * sizeof(double)); + double r = FUNCTION(gsl_stats,spearman) (groupa, stridea, groupb, strideb, nb, work); + double expected = -0.1604395604395604396; + gsl_test_rel (r, expected, rel, NAME(gsl_stats) "_spearman"); + free(work); + } + + { + double pv = FUNCTION(gsl_stats,pvariance) (groupa, stridea, na, groupb, strideb, nb); + double expected = 0.00123775384615385; + gsl_test_rel (pv, expected, rel, NAME(gsl_stats) "_pvariance"); + } + + { + double t = FUNCTION(gsl_stats,ttest) (groupa, stridea, na, groupb, strideb, nb); + double expected = -5.67026326985851; + gsl_test_rel (t, expected, rel, NAME(gsl_stats) "_ttest"); + } + + { + BASE expected = (BASE)0.1331; + gsl_test (FUNCTION(gsl_stats,max) (groupa, stridea, na) != expected, + NAME(gsl_stats) "_max (" OUT_FORMAT " observed vs " OUT_FORMAT " expected)", + FUNCTION(gsl_stats,max) (groupa, stridea, na), expected); + } + + { + BASE min = FUNCTION(gsl_stats,min) (groupa, stridea, na); + BASE expected = (BASE)0.0242; + gsl_test (min != expected, + NAME(gsl_stats) "_min (" OUT_FORMAT " observed vs " OUT_FORMAT " expected)", + min, expected); + } + + { + BASE min, max; + BASE expected_max = (BASE)0.1331; + BASE expected_min = (BASE)0.0242; + + FUNCTION(gsl_stats,minmax) (&min, &max, groupa, stridea, na); + + gsl_test (max != expected_max, + NAME(gsl_stats) "_minmax max (" OUT_FORMAT " observed vs " OUT_FORMAT " expected)", + max, expected_max); + gsl_test (min != expected_min, + NAME(gsl_stats) "_minmax min (" OUT_FORMAT " observed vs " OUT_FORMAT " expected)", + min, expected_min); + } + + { + int max_index = FUNCTION(gsl_stats,max_index) (groupa, stridea, na); + int expected = 4; + gsl_test (max_index != expected, + NAME(gsl_stats) "_max_index (%d observed vs %d expected)", + max_index, expected); + } + + { + int min_index = FUNCTION(gsl_stats,min_index) (groupa, stridea, na); + int expected = 3; + gsl_test (min_index != expected, + NAME(gsl_stats) "_min_index (%d observed vs %d expected)", + min_index, expected); + } + + { + size_t min_index, max_index; + size_t expected_max_index = 4; + size_t expected_min_index = 3; + + FUNCTION(gsl_stats,minmax_index) (&min_index, &max_index, groupa, stridea, na); + + gsl_test (max_index != expected_max_index, + NAME(gsl_stats) "_minmax_index max (%u observed vs %u expected)", + max_index, expected_max_index); + gsl_test (min_index != expected_min_index, + NAME(gsl_stats) "_minmax_index min (%u observed vs %u expected)", + min_index, expected_min_index); + } + + + sorted = (BASE *) malloc(stridea * na * sizeof(BASE)) ; + + for (i = 0 ; i < na ; i++) + sorted[stridea * i] = groupa[stridea * i] ; + + TYPE(gsl_sort)(sorted, stridea, na) ; + + { + double median = FUNCTION(gsl_stats,median_from_sorted_data)(sorted, stridea, na) ; + double expected = 0.07505; + gsl_test_rel (median,expected, rel, + NAME(gsl_stats) "_median_from_sorted_data (even)"); + } + + { + double median = FUNCTION(gsl_stats,median_from_sorted_data)(sorted, stridea, na - 1) ; + double expected = 0.0728; + gsl_test_rel (median,expected, rel, + NAME(gsl_stats) "_median_from_sorted_data (odd)"); + } + + { + BASE * work = (BASE *) malloc (stridea * na * sizeof(BASE)); + double expected = 0.07505; + double median; + + for (i = 0; i < na; i++) + work[i * stridea] = (BASE) rawa[i]; + + median = FUNCTION(gsl_stats,median)(work, stridea, na) ; + + gsl_test_rel (median, expected, rel, + NAME(gsl_stats) "_median (even)"); + + free(work); + } + + { + BASE * work = (BASE *) malloc (stridea * (na - 1) * sizeof(BASE)); + double expected = 0.0728; + double median; + + for (i = 0; i < na - 1; i++) + work[i * stridea] = (BASE) sorted[i * stridea]; + + median = FUNCTION(gsl_stats,median)(work, stridea, na - 1) ; + + gsl_test_rel (median, expected, rel, + NAME(gsl_stats) "_median (odd)"); + + free(work); + } + + { + const double trim = 0.2; + double trmean = FUNCTION(gsl_stats,trmean_from_sorted_data)(trim, sorted, stridea, na) ; + double expected = 0.0719; + gsl_test_rel (trmean, expected, rel, + NAME(gsl_stats) "_trmean_from_sorted_data (even)"); + } + + { + const double trim = 0.2; + double trmean = FUNCTION(gsl_stats,trmean_from_sorted_data)(trim, sorted, stridea, na - 1) ; + double expected = 0.06806666666666666; + gsl_test_rel (trmean, expected, rel, + NAME(gsl_stats) "_trmean_from_sorted_data (odd)"); + } + + { + double gastwirth = FUNCTION(gsl_stats,gastwirth_from_sorted_data)(sorted, stridea, na) ; + double expected = 0.07271; + gsl_test_rel (gastwirth, expected, rel, + NAME(gsl_stats) "_gastwirth_from_sorted_data (even)"); + } + + { + double gastwirth = FUNCTION(gsl_stats,gastwirth_from_sorted_data)(sorted, stridea, na - 1) ; + double expected = 0.06794; + gsl_test_rel (gastwirth, expected, rel, + NAME(gsl_stats) "_gastwirth_from_sorted_data (odd)"); + } + + { + double zeroth = FUNCTION(gsl_stats,quantile_from_sorted_data)(sorted, stridea, na, 0.0) ; + double expected = 0.0242; + gsl_test_rel (zeroth,expected, rel, + NAME(gsl_stats) "_quantile_from_sorted_data (0)"); + } + + { + double top = FUNCTION(gsl_stats,quantile_from_sorted_data)(sorted, stridea, na, 1.0) ; + double expected = 0.1331; + gsl_test_rel (top,expected, rel, + NAME(gsl_stats) "_quantile_from_sorted_data (100)"); + } + + { + double median = FUNCTION(gsl_stats,quantile_from_sorted_data)(sorted, stridea, na, 0.5) ; + double expected = 0.07505; + gsl_test_rel (median,expected, rel, + NAME(gsl_stats) "_quantile_from_sorted_data (50even)"); + } + + { + double median = FUNCTION(gsl_stats,quantile_from_sorted_data)(sorted, stridea, na - 1, 0.5); + double expected = 0.0728; + gsl_test_rel (median,expected, rel, + NAME(gsl_stats) "_quantile_from_sorted_data (50odd)"); + + } + + { + size_t k; + BASE * work = (BASE *) malloc (stridea * na * sizeof(BASE)); + + for (k = 0; k < na; ++k) + { + double expected = sorted[k * stridea]; + double kselect; + + /* copy rawa[] for each k, since gsl_stats_select() changes input array */ + for (i = 0; i < na; i++) + work[i * stridea] = (BASE) rawa[i]; + + kselect = FUNCTION(gsl_stats,select)(work, stridea, na, k); + + gsl_test_rel(kselect, expected, rel, NAME(gsl_stats) "_select"); + } + + free(work); + } + + /* Test for IEEE handling - set third element to NaN */ + + groupa [3*stridea] = GSL_NAN; + + { + BASE max = FUNCTION(gsl_stats,max) (groupa, stridea, na); + BASE expected = GSL_NAN; + gsl_test (!isnan(max), + NAME(gsl_stats) "_max NaN (" OUT_FORMAT " observed vs " OUT_FORMAT " expected)", + max, expected); + } + + { + BASE min = FUNCTION(gsl_stats,min) (groupa, stridea, na); + BASE expected = GSL_NAN; + gsl_test (!isnan(min), + NAME(gsl_stats) "_min NaN (" OUT_FORMAT " observed vs " OUT_FORMAT " expected)", + min, expected); + } + + { + BASE min, max; + BASE expected_max = GSL_NAN; + BASE expected_min = GSL_NAN; + + FUNCTION(gsl_stats,minmax) (&min, &max, groupa, stridea, na); + + gsl_test (!isnan(max), + NAME(gsl_stats) "_minmax max NaN (" OUT_FORMAT " observed vs " OUT_FORMAT " expected)", + max, expected_max); + gsl_test (!isnan(min), + NAME(gsl_stats) "_minmax min NaN (" OUT_FORMAT " observed vs " OUT_FORMAT " expected)", + min, expected_min); + } + +#ifdef FAST + { + BASE min, max; + BASE expected_max = GSL_NAN; + BASE expected_min = GSL_NAN; + + FUNCTION(gsl_stats,minmax) (&min, &max, groupa, stridea, na-1); + + gsl_test (!isnan(max), + NAME(gsl_stats) "_minmax(-1) max NaN (" OUT_FORMAT " observed vs " OUT_FORMAT " expected)", + max, expected_max); + gsl_test (!isnan(min), + NAME(gsl_stats) "_minmax(-1) min NaN (" OUT_FORMAT " observed vs " OUT_FORMAT " expected)", + min, expected_min); + } +#endif + + + { + int max_index = FUNCTION(gsl_stats,max_index) (groupa, stridea, na); + int expected = 3; + gsl_test (max_index != expected, + NAME(gsl_stats) "_max_index NaN (%d observed vs %d expected)", + max_index, expected); + } + + { + int min_index = FUNCTION(gsl_stats,min_index) (groupa, stridea, na); + int expected = 3; + gsl_test (min_index != expected, + NAME(gsl_stats) "_min_index NaN (%d observed vs %d expected)", + min_index, expected); + } + + { + size_t min_index, max_index; + size_t expected_max_index = 3; + size_t expected_min_index = 3; + + FUNCTION(gsl_stats,minmax_index) (&min_index, &max_index, groupa, stridea, na); + + gsl_test (max_index != expected_max_index, + NAME(gsl_stats) "_minmax_index max NaN (%u observed vs %u expected)", + max_index, expected_max_index); + gsl_test (min_index != expected_min_index, + NAME(gsl_stats) "_minmax_index min NaN (%u observed vs %u expected)", + min_index, expected_min_index); + } + + /* restore */ + groupa [3*stridea] = (BASE) rawa[3]; + + { + double * work = (double *) malloc (na * sizeof(double)); + double expected = 0.02925; + double mad0 = FUNCTION(gsl_stats,mad0)(groupa, stridea, na, work); + gsl_test_rel (mad0, expected, rel, NAME(gsl_stats) "_mad0 (even)"); + free(work); + } + + { + double * work = (double *) malloc ((na - 1) * sizeof(double)); + double expected = 0.02910; + double mad0 = FUNCTION(gsl_stats,mad0)(groupa, stridea, na - 1, work); + gsl_test_rel (mad0, expected, rel, NAME(gsl_stats) "_mad0 (odd)"); + free(work); + } + + { + BASE *work = malloc(na * sizeof(BASE)); + double r = FUNCTION(gsl_stats,Sn_from_sorted_data) (sorted, stridea, na, work); + double expected = 0.04007136; + gsl_test_rel (r, expected, rel, NAME(gsl_stats) "_Sn_from_sorted_data (even)"); + free(work); + } + + { + BASE *work = malloc((na - 1) * sizeof(BASE)); + double r = FUNCTION(gsl_stats,Sn_from_sorted_data) (sorted, stridea, na - 1, work); + double expected = 0.03728599834710744; + gsl_test_rel (r, expected, rel, NAME(gsl_stats) "_Sn_from_sorted_data (odd)"); + free(work); + } + + { + BASE *work = malloc(3 * na * sizeof(BASE)); + int *work_int = malloc(5 * na * sizeof(int)); + double r = FUNCTION(gsl_stats,Qn_from_sorted_data) (sorted, stridea, na, work, work_int); + double expected = 0.04113672759664409; + gsl_test_rel (r, expected, rel, NAME(gsl_stats) "_Qn_from_sorted_data (even)"); + free(work); + free(work_int); + } + + { + BASE *work = malloc(3 * (na - 1) * sizeof(BASE)); + int *work_int = malloc(5 * (na - 1) * sizeof(int)); + double r = FUNCTION(gsl_stats,Qn_from_sorted_data) (sorted, stridea, na - 1, work, work_int); + double expected = 0.03684305546303433; + gsl_test_rel (r, expected, rel, NAME(gsl_stats) "_Qn_from_sorted_data (odd)"); + free(work); + free(work_int); + } + + free (sorted); + free (groupa); + free (groupb); + free (w); + +} diff --git a/gsl-2.5/statistics/test_int_source.c b/gsl-2.5/statistics/test_int_source.c new file mode 100644 index 00000000..969e5e94 --- /dev/null +++ b/gsl-2.5/statistics/test_int_source.c @@ -0,0 +1,406 @@ +/* statistics/test_int_source.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Jim Davies, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +void FUNCTION (test, func) (const size_t stridea, const size_t strideb); + +void +FUNCTION (test, func) (const size_t stridea, const size_t strideb) +{ + /* sample sets of integers */ + size_t i; + const size_t ina = 20, inb = 20; + + const BASE raw1[] = {1, 2, 3, 4, 5, 6} ; + + const BASE irawa[] = + {17, 18, 16, 18, 12, + 20, 18, 20, 20, 22, + 20, 10, 8, 12, 16, + 16, 18, 20, 18, 21}; + + const BASE irawb[] = + {19, 20, 22, 24, 10, + 25, 20, 22, 21, 23, + 20, 10, 12, 14, 12, + 20, 22, 24, 23, 17}; + + BASE * sorted ; + + BASE * test1 = (BASE *) malloc (stridea * 6 * sizeof(BASE)); + BASE * igroupa = (BASE *) malloc (stridea * ina * sizeof(BASE)); + BASE * igroupb = (BASE *) malloc (strideb * inb * sizeof(BASE)); + + double rel = 1e-10 ; + + for (i = 0 ; i < ina ; i++) + igroupa[i * stridea] = irawa[i] ; + + for (i = 0 ; i < inb ; i++) + igroupb[i * strideb] = irawb[i] ; + + for (i = 0 ; i < 6 ; i++) + test1[i * stridea] = raw1[i] ; + + + + { + double mean = FUNCTION(gsl_stats,mean) (igroupa, stridea, ina); + double expected = 17.0; + gsl_test_rel (mean,expected, rel, NAME(gsl_stats) "_mean (integer)"); + } + + { + double mean = FUNCTION(gsl_stats,mean) (test1, stridea, 6); + double expected = 3.5; + gsl_test_rel (mean,expected, rel, NAME(gsl_stats) "_mean (fractional)"); + } + + { + double mean = FUNCTION(gsl_stats,mean) (igroupa, stridea, ina); + double var = FUNCTION(gsl_stats,variance_with_fixed_mean) (igroupa, stridea, ina, mean); + double expected = 13.7; + gsl_test_rel (var, expected, rel, NAME(gsl_stats) "_variance_with_fixed_mean"); + } + + { + double mean = FUNCTION(gsl_stats,mean) (igroupa, stridea, ina); + double sd = FUNCTION(gsl_stats,sd_with_fixed_mean) (igroupa, stridea, ina, mean); + double expected = 3.70135110466435; + gsl_test_rel (sd, expected, rel, NAME(gsl_stats) "_sd_with_fixed_mean"); + } + + { + double var = FUNCTION(gsl_stats,variance) (igroupa, stridea, ina); + double expected = 14.4210526315789; + gsl_test_rel (var, expected, rel, NAME(gsl_stats) "_variance"); + } + + { + double sd_est = FUNCTION(gsl_stats,sd) (igroupa, stridea, ina); + double expected = 3.79750610685209; + gsl_test_rel (sd_est, expected, rel, NAME(gsl_stats) "_sd"); + } + + { + double absdev = FUNCTION(gsl_stats,absdev) (igroupa, stridea, ina); + double expected = 2.9; + gsl_test_rel (absdev, expected, rel, NAME(gsl_stats) "_absdev"); + } + + { + double skew = FUNCTION(gsl_stats,skew) (igroupa, stridea, ina); + double expected = -0.909355923168064; + gsl_test_rel (skew, expected, rel, NAME(gsl_stats) "_skew"); + } + + { + double kurt = FUNCTION(gsl_stats,kurtosis) (igroupa, stridea, ina); + double expected = -0.233692524908094 ; + gsl_test_rel (kurt, expected, rel, NAME(gsl_stats) "_kurtosis"); + } + + { + double c = FUNCTION(gsl_stats,covariance) (igroupa, stridea, igroupb, strideb, inb); + double expected = 14.5263157894737; + gsl_test_rel (c, expected, rel, NAME(gsl_stats) "_covariance"); + } + + { + double r = FUNCTION(gsl_stats,correlation) (igroupa, stridea, igroupb, strideb, inb); + double expected = 0.793090350710101; + gsl_test_rel (r, expected, rel, NAME(gsl_stats) "_correlation"); + } + + { + double *work = malloc(2 * ina * sizeof(double)); + double r = FUNCTION(gsl_stats,spearman) (igroupa, stridea, igroupb, strideb, inb, work); + double expected = 0.644239670474577; + gsl_test_rel (r, expected, rel, NAME(gsl_stats) "_spearman"); + free(work); + } + + { + double pv = FUNCTION(gsl_stats,pvariance) (igroupa, stridea, ina, igroupb, strideb, inb); + double expected = 18.8421052631579; + gsl_test_rel (pv, expected, rel, NAME(gsl_stats) "_pvariance"); + } + + { + double t = FUNCTION(gsl_stats,ttest) (igroupa, stridea, ina, igroupb, strideb, inb); + double expected = -1.45701922702927; + gsl_test_rel (t, expected, rel, NAME(gsl_stats) "_ttest"); + } + + { + int max = FUNCTION(gsl_stats,max) (igroupa, stridea, ina); + int expected = 22; + gsl_test (max != expected, + NAME(gsl_stats) "_max (%d observed vs %d expected)", max, expected); + } + + { + int min = FUNCTION(gsl_stats,min) (igroupa, stridea, ina); + int expected = 8; + gsl_test (min != expected, + NAME(gsl_stats) "_min (%d observed vs %d expected)", min, expected); + } + + { + BASE min, max; + BASE expected_max = 22; + BASE expected_min = 8; + + FUNCTION(gsl_stats,minmax) (&min, &max, igroupa, stridea, ina); + + gsl_test (max != expected_max, + NAME(gsl_stats) "_minmax max (" OUT_FORMAT " observed vs " OUT_FORMAT " expected)", + max, expected_max); + gsl_test (min != expected_min, + NAME(gsl_stats) "_minmax min (" OUT_FORMAT " observed vs " OUT_FORMAT " expected)", + min, expected_min); + } + + { + int max_index = FUNCTION(gsl_stats,max_index) (igroupa, stridea, ina); + int expected = 9 ; + gsl_test (max_index != expected, + NAME(gsl_stats) "_max_index (%d observed vs %d expected)", + max_index, expected); + } + + { + int min_index = FUNCTION(gsl_stats,min_index) (igroupa, stridea, ina); + int expected = 12 ; + gsl_test (min_index != expected, + NAME(gsl_stats) "_min_index (%d observed vs %d expected)", + min_index, expected); + } + + { + size_t min_index, max_index; + size_t expected_max_index = 9; + size_t expected_min_index = 12; + + FUNCTION(gsl_stats,minmax_index) (&min_index, &max_index, igroupa, stridea, ina); + + gsl_test (max_index != expected_max_index, + NAME(gsl_stats) "_minmax_index max (%u observed vs %u expected)", + max_index, expected_max_index); + gsl_test (min_index != expected_min_index, + NAME(gsl_stats) "_minmax_index min (%u observed vs %u expected)", + min_index, expected_min_index); + } + + + sorted = (BASE *) malloc(stridea * ina * sizeof(BASE)) ; + + for (i = 0 ; i < ina ; i++) + sorted[stridea * i] = igroupa[stridea * i] ; + + + TYPE(gsl_sort)(sorted, stridea, ina) ; + + { + double median = FUNCTION(gsl_stats,median_from_sorted_data)(sorted, stridea, ina) ; + double expected = 18; + gsl_test_rel (median,expected, rel, + NAME(gsl_stats) "_median_from_sorted_data (even)"); + } + + { + double median = FUNCTION(gsl_stats,median_from_sorted_data)(sorted, stridea, ina - 1) ; + double expected = 18; + gsl_test_rel (median,expected, rel, + NAME(gsl_stats) "_median_from_sorted_data (odd)"); + } + + { + BASE * work = (BASE *) malloc (stridea * ina * sizeof(BASE)); + double expected = 18; + double median; + + for (i = 0; i < ina; i++) + work[i * stridea] = (BASE) irawa[i]; + + median = FUNCTION(gsl_stats,median)(work, stridea, ina) ; + + gsl_test_rel (median, expected, rel, + NAME(gsl_stats) "_median (even)"); + + free(work); + } + + { + BASE * work = (BASE *) malloc (stridea * (ina - 1) * sizeof(BASE)); + double expected = 18; + double median; + + for (i = 0; i < ina - 1; i++) + work[i * stridea] = sorted[i * stridea]; + + median = FUNCTION(gsl_stats,median)(work, stridea, ina - 1) ; + + gsl_test_rel (median, expected, rel, + NAME(gsl_stats) "_median (odd)"); + + free(work); + } + + { + const double trim = 0.31; + double trmean = FUNCTION(gsl_stats,trmean_from_sorted_data)(trim, sorted, stridea, ina) ; + double expected = 17.875; + gsl_test_rel (trmean, expected, rel, + NAME(gsl_stats) "_trmean_from_sorted_data (even)"); + } + + { + const double trim = 0.3; + double trmean = FUNCTION(gsl_stats,trmean_from_sorted_data)(trim, sorted, stridea, ina - 1) ; + double expected = 17.66666666666666; + gsl_test_rel (trmean, expected, rel, + NAME(gsl_stats) "_trmean_from_sorted_data (odd)"); + } + + { + double gastwirth = FUNCTION(gsl_stats,gastwirth_from_sorted_data)(sorted, stridea, ina) ; + double expected = 17.9; + gsl_test_rel (gastwirth, expected, rel, + NAME(gsl_stats) "_gastwirth_from_sorted_data (even)"); + } + + { + double gastwirth = FUNCTION(gsl_stats,gastwirth_from_sorted_data)(sorted, stridea, ina - 1) ; + double expected = 17.4; + gsl_test_rel (gastwirth, expected, rel, + NAME(gsl_stats) "_gastwirth_from_sorted_data (odd)"); + } + + { + double zeroth = FUNCTION(gsl_stats,quantile_from_sorted_data)(sorted, stridea, ina, 0.0) ; + double expected = 8; + gsl_test_rel (zeroth,expected, rel, + NAME(gsl_stats) "_quantile_from_sorted_data (0)"); + } + + { + double top = FUNCTION(gsl_stats,quantile_from_sorted_data)(sorted, stridea, ina, 1.0) ; + double expected = 22; + gsl_test_rel (top,expected, rel, + NAME(gsl_stats) "_quantile_from_sorted_data (100)"); + } + + { + double median = FUNCTION(gsl_stats,quantile_from_sorted_data)(sorted, stridea, ina, 0.5) ; + double expected = 18; + gsl_test_rel (median,expected, rel, + NAME(gsl_stats) "_quantile_from_sorted_data (50, even)"); + } + + { + double median = FUNCTION(gsl_stats,quantile_from_sorted_data)(sorted, stridea, ina - 1, 0.5); + double expected = 18; + gsl_test_rel (median,expected, rel, + NAME(gsl_stats) "_quantile_from_sorted_data (50, odd)"); + } + + { + size_t k; + BASE * work = (BASE *) malloc (stridea * ina * sizeof(BASE)); + + for (k = 0; k < ina; ++k) + { + int expected = sorted[k * stridea]; + int kselect; + + /* copy irawa[] for each k, since gsl_stats_select() changes input array */ + for (i = 0; i < ina; i++) + work[i * stridea] = (BASE) irawa[i]; + + kselect = FUNCTION(gsl_stats,select)(work, stridea, ina, k); + + gsl_test (kselect != expected, + NAME(gsl_stats) "_select (%d observed vs %d expected)", + kselect, expected); + } + + free(work); + } + + { + double * work = (double *) malloc (ina * sizeof(double)); + double expected = 2.0; + double mad0 = FUNCTION(gsl_stats,mad0)(igroupa, stridea, ina, work); + gsl_test_rel (mad0, expected, rel, NAME(gsl_stats) "_mad0 (even)"); + free(work); + } + + { + double * work = (double *) malloc ((ina - 1) * sizeof(double)); + double expected = 2.0; + double mad0 = FUNCTION(gsl_stats,mad0)(igroupa, stridea, ina - 1, work); + gsl_test_rel (mad0, expected, rel, NAME(gsl_stats) "_mad0 (odd)"); + free(work); + } + + { + BASE * work = malloc(ina * sizeof(BASE)); + double sn = FUNCTION(gsl_stats,Sn_from_sorted_data)(sorted, stridea, ina, work) ; + double expected = 2.3852; + gsl_test_rel (sn, expected, rel, + NAME(gsl_stats) "_Sn_from_sorted_data (even)"); + free(work); + } + + { + BASE * work = malloc((ina - 1) * sizeof(BASE)); + double sn = FUNCTION(gsl_stats,Sn_from_sorted_data)(sorted, stridea, ina - 1, work) ; + double expected = 2.503801104972376; + gsl_test_rel (sn, expected, rel, + NAME(gsl_stats) "_Sn_from_sorted_data (odd)"); + free(work); + } + + { + BASE * work = malloc(3 * ina * sizeof(BASE)); + int * work_int = malloc(5 * ina * sizeof(int)); + double qn = FUNCTION(gsl_stats,Qn_from_sorted_data)(sorted, stridea, ina, work, work_int) ; + double expected = 3.732513488036874; + gsl_test_rel (qn, expected, rel, + NAME(gsl_stats) "_Qn_from_sorted_data (even)"); + free(work); + free(work_int); + } + + { + BASE * work = malloc(3 * (ina - 1) * sizeof(BASE)); + int * work_int = malloc(5 * (ina - 1) * sizeof(int)); + double qn = FUNCTION(gsl_stats,Qn_from_sorted_data)(sorted, stridea, ina - 1, work, work_int) ; + double expected = 4.118443402621429; + gsl_test_rel (qn, expected, rel, + NAME(gsl_stats) "_Qn_from_sorted_data (odd)"); + free(work); + free(work_int); + } + + free (sorted); + free (igroupa); + free (igroupb); + free (test1); +} diff --git a/gsl-2.5/statistics/test_nist.c b/gsl-2.5/statistics/test_nist.c new file mode 100644 index 00000000..3f5e7c74 --- /dev/null +++ b/gsl-2.5/statistics/test_nist.c @@ -0,0 +1,505 @@ +/* statistics/test_nist.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Jim Davies, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* These tests are based on the NIST Statistical Reference Datasets + See http://www.nist.gov/itl/div898/strd/index.html for more + information. */ + +#include +#include +#include + +#include +#include +#include + +int test_nist (void); + +int +test_nist (void) +{ + size_t i ; + + const size_t nlew = 200 ; + + const double lew[200] = { + -213, -564, -35, -15, 141, 115, -420, -360, 203, -338, -431, 194, + -220, -513, 154, -125, -559, 92, -21, -579, -52, 99, -543, -175, + 162, -457, -346, 204, -300, -474, 164, -107, -572, -8, 83, -541, + -224, 180, -420, -374, 201, -236, -531, 83, 27, -564, -112, 131, + -507, -254, 199, -311, -495, 143, -46, -579, -90, 136, -472, -338, + 202, -287, -477, 169, -124, -568, 17, 48, -568, -135, 162, -430, + -422, 172, -74, -577, -13, 92, -534, -243, 194, -355, -465, 156, + -81, -578, -64, 139, -449, -384, 193, -198, -538, 110, -44, -577, + -6, 66, -552, -164, 161, -460, -344, 205, -281, -504, 134, -28, + -576, -118, 156, -437, -381, 200, -220, -540, 83, 11, -568, -160, + 172, -414, -408, 188, -125, -572, -32, 139, -492, -321, 205, -262, + -504, 142, -83, -574, 0, 48, -571, -106, 137, -501, -266, 190, + -391, -406, 194, -186, -553, 83, -13, -577, -49, 103, -515, -280, + 201, 300, -506, 131, -45, -578, -80, 138, -462, -361, 201, -211, + -554, 32, 74, -533, -235, 187, -372, -442, 182, -147, -566, 25, + 68, -535, -244, 194, -351, -463, 174, -125, -570, 15, 72, -550, + -190, 172, -424, -385, 198, -218, -536, 96 } ; + + const size_t nlottery = 218 ; + + const double lottery[218] = { + 162, 671, 933, 414, 788, 730, 817, 33, 536, 875, 670, 236, 473, 167, + 877, 980, 316, 950, 456, 92, 517, 557, 956, 954, 104, 178, 794, 278, + 147, 773, 437, 435, 502, 610, 582, 780, 689, 562, 964, 791, 28, 97, + 848, 281, 858, 538, 660, 972, 671, 613, 867, 448, 738, 966, 139, 636, + 847, 659, 754, 243, 122, 455, 195, 968, 793, 59, 730, 361, 574, 522, + 97, 762, 431, 158, 429, 414, 22, 629, 788, 999, 187, 215, 810, 782, + 47, 34, 108, 986, 25, 644, 829, 630, 315, 567, 919, 331, 207, 412, + 242, 607, 668, 944, 749, 168, 864, 442, 533, 805, 372, 63, 458, 777, + 416, 340, 436, 140, 919, 350, 510, 572, 905, 900, 85, 389, 473, 758, + 444, 169, 625, 692, 140, 897, 672, 288, 312, 860, 724, 226, 884, 508, + 976, 741, 476, 417, 831, 15, 318, 432, 241, 114, 799, 955, 833, 358, + 935, 146, 630, 830, 440, 642, 356, 373, 271, 715, 367, 393, 190, 669, + 8, 861, 108, 795, 269, 590, 326, 866, 64, 523, 862, 840, 219, 382, + 998, 4, 628, 305, 747, 247, 34, 747, 729, 645, 856, 974, 24, 568, 24, + 694, 608, 480, 410, 729, 947, 293, 53, 930, 223, 203, 677, 227, 62, + 455, 387, 318, 562, 242, 428, 968 } ; + + const size_t nmavro = 50 ; + + const double mavro[50] = { + 2.00180, 2.00170, 2.00180, 2.00190, 2.00180, 2.00170, 2.00150, + 2.00140, 2.00150, 2.00150, 2.00170, 2.00180, 2.00180, 2.00190, + 2.00190, 2.00210, 2.00200, 2.00160, 2.00140, 2.00130, 2.00130, + 2.00150, 2.00150, 2.00160, 2.00150, 2.00140, 2.00130, 2.00140, + 2.00150, 2.00140, 2.00150, 2.00160, 2.00150, 2.00160, 2.00190, + 2.00200, 2.00200, 2.00210, 2.00220, 2.00230, 2.00240, 2.00250, + 2.00270, 2.00260, 2.00260, 2.00260, 2.00270, 2.00260, 2.00250, + 2.00240 } ; + + const size_t nmichelson = 100 ; + + const double michelson [100] = { + 299.85, 299.74, 299.90, 300.07, 299.93, 299.85, 299.95, 299.98, + 299.98, 299.88, 300.00, 299.98, 299.93, 299.65, 299.76, 299.81, + 300.00, 300.00, 299.96, 299.96, 299.96, 299.94, 299.96, 299.94, + 299.88, 299.80, 299.85, 299.88, 299.90, 299.84, 299.83, 299.79, + 299.81, 299.88, 299.88, 299.83, 299.80, 299.79, 299.76, 299.80, + 299.88, 299.88, 299.88, 299.86, 299.72, 299.72, 299.62, 299.86, + 299.97, 299.95, 299.88, 299.91, 299.85, 299.87, 299.84, 299.84, + 299.85, 299.84, 299.84, 299.84, 299.89, 299.81, 299.81, 299.82, + 299.80, 299.77, 299.76, 299.74, 299.75, 299.76, 299.91, 299.92, + 299.89, 299.86, 299.88, 299.72, 299.84, 299.85, 299.85, 299.78, + 299.89, 299.84, 299.78, 299.81, 299.76, 299.81, 299.79, 299.81, + 299.82, 299.85, 299.87, 299.87, 299.81, 299.74, 299.81, 299.94, + 299.95, 299.80, 299.81, 299.87 } ; + + const size_t npidigits = 5000 ; + const double pidigits [5000] = { 3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5, 8, + 9, 7, 9, 3, 2, 3, 8, 4, 6, 2, 6, 4, 3, 3, 8, 3, 2, 7, 9, 5, 0, 2, + 8, 8, 4, 1, 9, 7, 1, 6, 9, 3, 9, 9, 3, 7, 5, 1, 0, 5, 8, 2, 0, 9, + 7, 4, 9, 4, 4, 5, 9, 2, 3, 0, 7, 8, 1, 6, 4, 0, 6, 2, 8, 6, 2, 0, + 8, 9, 9, 8, 6, 2, 8, 0, 3, 4, 8, 2, 5, 3, 4, 2, 1, 1, 7, 0, 6, 7, + 9, 8, 2, 1, 4, 8, 0, 8, 6, 5, 1, 3, 2, 8, 2, 3, 0, 6, 6, 4, 7, 0, + 9, 3, 8, 4, 4, 6, 0, 9, 5, 5, 0, 5, 8, 2, 2, 3, 1, 7, 2, 5, 3, 5, + 9, 4, 0, 8, 1, 2, 8, 4, 8, 1, 1, 1, 7, 4, 5, 0, 2, 8, 4, 1, 0, 2, + 7, 0, 1, 9, 3, 8, 5, 2, 1, 1, 0, 5, 5, 5, 9, 6, 4, 4, 6, 2, 2, 9, + 4, 8, 9, 5, 4, 9, 3, 0, 3, 8, 1, 9, 6, 4, 4, 2, 8, 8, 1, 0, 9, 7, + 5, 6, 6, 5, 9, 3, 3, 4, 4, 6, 1, 2, 8, 4, 7, 5, 6, 4, 8, 2, 3, 3, + 7, 8, 6, 7, 8, 3, 1, 6, 5, 2, 7, 1, 2, 0, 1, 9, 0, 9, 1, 4, 5, 6, + 4, 8, 5, 6, 6, 9, 2, 3, 4, 6, 0, 3, 4, 8, 6, 1, 0, 4, 5, 4, 3, 2, + 6, 6, 4, 8, 2, 1, 3, 3, 9, 3, 6, 0, 7, 2, 6, 0, 2, 4, 9, 1, 4, 1, + 2, 7, 3, 7, 2, 4, 5, 8, 7, 0, 0, 6, 6, 0, 6, 3, 1, 5, 5, 8, 8, 1, + 7, 4, 8, 8, 1, 5, 2, 0, 9, 2, 0, 9, 6, 2, 8, 2, 9, 2, 5, 4, 0, 9, + 1, 7, 1, 5, 3, 6, 4, 3, 6, 7, 8, 9, 2, 5, 9, 0, 3, 6, 0, 0, 1, 1, + 3, 3, 0, 5, 3, 0, 5, 4, 8, 8, 2, 0, 4, 6, 6, 5, 2, 1, 3, 8, 4, 1, + 4, 6, 9, 5, 1, 9, 4, 1, 5, 1, 1, 6, 0, 9, 4, 3, 3, 0, 5, 7, 2, 7, + 0, 3, 6, 5, 7, 5, 9, 5, 9, 1, 9, 5, 3, 0, 9, 2, 1, 8, 6, 1, 1, 7, + 3, 8, 1, 9, 3, 2, 6, 1, 1, 7, 9, 3, 1, 0, 5, 1, 1, 8, 5, 4, 8, 0, + 7, 4, 4, 6, 2, 3, 7, 9, 9, 6, 2, 7, 4, 9, 5, 6, 7, 3, 5, 1, 8, 8, + 5, 7, 5, 2, 7, 2, 4, 8, 9, 1, 2, 2, 7, 9, 3, 8, 1, 8, 3, 0, 1, 1, + 9, 4, 9, 1, 2, 9, 8, 3, 3, 6, 7, 3, 3, 6, 2, 4, 4, 0, 6, 5, 6, 6, + 4, 3, 0, 8, 6, 0, 2, 1, 3, 9, 4, 9, 4, 6, 3, 9, 5, 2, 2, 4, 7, 3, + 7, 1, 9, 0, 7, 0, 2, 1, 7, 9, 8, 6, 0, 9, 4, 3, 7, 0, 2, 7, 7, 0, + 5, 3, 9, 2, 1, 7, 1, 7, 6, 2, 9, 3, 1, 7, 6, 7, 5, 2, 3, 8, 4, 6, + 7, 4, 8, 1, 8, 4, 6, 7, 6, 6, 9, 4, 0, 5, 1, 3, 2, 0, 0, 0, 5, 6, + 8, 1, 2, 7, 1, 4, 5, 2, 6, 3, 5, 6, 0, 8, 2, 7, 7, 8, 5, 7, 7, 1, + 3, 4, 2, 7, 5, 7, 7, 8, 9, 6, 0, 9, 1, 7, 3, 6, 3, 7, 1, 7, 8, 7, + 2, 1, 4, 6, 8, 4, 4, 0, 9, 0, 1, 2, 2, 4, 9, 5, 3, 4, 3, 0, 1, 4, + 6, 5, 4, 9, 5, 8, 5, 3, 7, 1, 0, 5, 0, 7, 9, 2, 2, 7, 9, 6, 8, 9, + 2, 5, 8, 9, 2, 3, 5, 4, 2, 0, 1, 9, 9, 5, 6, 1, 1, 2, 1, 2, 9, 0, + 2, 1, 9, 6, 0, 8, 6, 4, 0, 3, 4, 4, 1, 8, 1, 5, 9, 8, 1, 3, 6, 2, + 9, 7, 7, 4, 7, 7, 1, 3, 0, 9, 9, 6, 0, 5, 1, 8, 7, 0, 7, 2, 1, 1, + 3, 4, 9, 9, 9, 9, 9, 9, 8, 3, 7, 2, 9, 7, 8, 0, 4, 9, 9, 5, 1, 0, + 5, 9, 7, 3, 1, 7, 3, 2, 8, 1, 6, 0, 9, 6, 3, 1, 8, 5, 9, 5, 0, 2, + 4, 4, 5, 9, 4, 5, 5, 3, 4, 6, 9, 0, 8, 3, 0, 2, 6, 4, 2, 5, 2, 2, + 3, 0, 8, 2, 5, 3, 3, 4, 4, 6, 8, 5, 0, 3, 5, 2, 6, 1, 9, 3, 1, 1, + 8, 8, 1, 7, 1, 0, 1, 0, 0, 0, 3, 1, 3, 7, 8, 3, 8, 7, 5, 2, 8, 8, + 6, 5, 8, 7, 5, 3, 3, 2, 0, 8, 3, 8, 1, 4, 2, 0, 6, 1, 7, 1, 7, 7, + 6, 6, 9, 1, 4, 7, 3, 0, 3, 5, 9, 8, 2, 5, 3, 4, 9, 0, 4, 2, 8, 7, + 5, 5, 4, 6, 8, 7, 3, 1, 1, 5, 9, 5, 6, 2, 8, 6, 3, 8, 8, 2, 3, 5, + 3, 7, 8, 7, 5, 9, 3, 7, 5, 1, 9, 5, 7, 7, 8, 1, 8, 5, 7, 7, 3, 0, + 5, 3, 2, 1, 7, 1, 2, 2, 6, 8, 0, 6, 6, 1, 3, 0, 0, 1, 9, 2, 7, 8, + 7, 6, 6, 1, 1, 1, 9, 5, 9, 0, 9, 2, 1, 6, 4, 2, 0, 1, 9, 8, 9, 3, + 8, 0, 9, 5, 2, 5, 7, 2, 0, 1, 0, 6, 5, 4, 8, 5, 8, 6, 3, 2, 7, 8, + 8, 6, 5, 9, 3, 6, 1, 5, 3, 3, 8, 1, 8, 2, 7, 9, 6, 8, 2, 3, 0, 3, + 0, 1, 9, 5, 2, 0, 3, 5, 3, 0, 1, 8, 5, 2, 9, 6, 8, 9, 9, 5, 7, 7, + 3, 6, 2, 2, 5, 9, 9, 4, 1, 3, 8, 9, 1, 2, 4, 9, 7, 2, 1, 7, 7, 5, + 2, 8, 3, 4, 7, 9, 1, 3, 1, 5, 1, 5, 5, 7, 4, 8, 5, 7, 2, 4, 2, 4, + 5, 4, 1, 5, 0, 6, 9, 5, 9, 5, 0, 8, 2, 9, 5, 3, 3, 1, 1, 6, 8, 6, + 1, 7, 2, 7, 8, 5, 5, 8, 8, 9, 0, 7, 5, 0, 9, 8, 3, 8, 1, 7, 5, 4, + 6, 3, 7, 4, 6, 4, 9, 3, 9, 3, 1, 9, 2, 5, 5, 0, 6, 0, 4, 0, 0, 9, + 2, 7, 7, 0, 1, 6, 7, 1, 1, 3, 9, 0, 0, 9, 8, 4, 8, 8, 2, 4, 0, 1, + 2, 8, 5, 8, 3, 6, 1, 6, 0, 3, 5, 6, 3, 7, 0, 7, 6, 6, 0, 1, 0, 4, + 7, 1, 0, 1, 8, 1, 9, 4, 2, 9, 5, 5, 5, 9, 6, 1, 9, 8, 9, 4, 6, 7, + 6, 7, 8, 3, 7, 4, 4, 9, 4, 4, 8, 2, 5, 5, 3, 7, 9, 7, 7, 4, 7, 2, + 6, 8, 4, 7, 1, 0, 4, 0, 4, 7, 5, 3, 4, 6, 4, 6, 2, 0, 8, 0, 4, 6, + 6, 8, 4, 2, 5, 9, 0, 6, 9, 4, 9, 1, 2, 9, 3, 3, 1, 3, 6, 7, 7, 0, + 2, 8, 9, 8, 9, 1, 5, 2, 1, 0, 4, 7, 5, 2, 1, 6, 2, 0, 5, 6, 9, 6, + 6, 0, 2, 4, 0, 5, 8, 0, 3, 8, 1, 5, 0, 1, 9, 3, 5, 1, 1, 2, 5, 3, + 3, 8, 2, 4, 3, 0, 0, 3, 5, 5, 8, 7, 6, 4, 0, 2, 4, 7, 4, 9, 6, 4, + 7, 3, 2, 6, 3, 9, 1, 4, 1, 9, 9, 2, 7, 2, 6, 0, 4, 2, 6, 9, 9, 2, + 2, 7, 9, 6, 7, 8, 2, 3, 5, 4, 7, 8, 1, 6, 3, 6, 0, 0, 9, 3, 4, 1, + 7, 2, 1, 6, 4, 1, 2, 1, 9, 9, 2, 4, 5, 8, 6, 3, 1, 5, 0, 3, 0, 2, + 8, 6, 1, 8, 2, 9, 7, 4, 5, 5, 5, 7, 0, 6, 7, 4, 9, 8, 3, 8, 5, 0, + 5, 4, 9, 4, 5, 8, 8, 5, 8, 6, 9, 2, 6, 9, 9, 5, 6, 9, 0, 9, 2, 7, + 2, 1, 0, 7, 9, 7, 5, 0, 9, 3, 0, 2, 9, 5, 5, 3, 2, 1, 1, 6, 5, 3, + 4, 4, 9, 8, 7, 2, 0, 2, 7, 5, 5, 9, 6, 0, 2, 3, 6, 4, 8, 0, 6, 6, + 5, 4, 9, 9, 1, 1, 9, 8, 8, 1, 8, 3, 4, 7, 9, 7, 7, 5, 3, 5, 6, 6, + 3, 6, 9, 8, 0, 7, 4, 2, 6, 5, 4, 2, 5, 2, 7, 8, 6, 2, 5, 5, 1, 8, + 1, 8, 4, 1, 7, 5, 7, 4, 6, 7, 2, 8, 9, 0, 9, 7, 7, 7, 7, 2, 7, 9, + 3, 8, 0, 0, 0, 8, 1, 6, 4, 7, 0, 6, 0, 0, 1, 6, 1, 4, 5, 2, 4, 9, + 1, 9, 2, 1, 7, 3, 2, 1, 7, 2, 1, 4, 7, 7, 2, 3, 5, 0, 1, 4, 1, 4, + 4, 1, 9, 7, 3, 5, 6, 8, 5, 4, 8, 1, 6, 1, 3, 6, 1, 1, 5, 7, 3, 5, + 2, 5, 5, 2, 1, 3, 3, 4, 7, 5, 7, 4, 1, 8, 4, 9, 4, 6, 8, 4, 3, 8, + 5, 2, 3, 3, 2, 3, 9, 0, 7, 3, 9, 4, 1, 4, 3, 3, 3, 4, 5, 4, 7, 7, + 6, 2, 4, 1, 6, 8, 6, 2, 5, 1, 8, 9, 8, 3, 5, 6, 9, 4, 8, 5, 5, 6, + 2, 0, 9, 9, 2, 1, 9, 2, 2, 2, 1, 8, 4, 2, 7, 2, 5, 5, 0, 2, 5, 4, + 2, 5, 6, 8, 8, 7, 6, 7, 1, 7, 9, 0, 4, 9, 4, 6, 0, 1, 6, 5, 3, 4, + 6, 6, 8, 0, 4, 9, 8, 8, 6, 2, 7, 2, 3, 2, 7, 9, 1, 7, 8, 6, 0, 8, + 5, 7, 8, 4, 3, 8, 3, 8, 2, 7, 9, 6, 7, 9, 7, 6, 6, 8, 1, 4, 5, 4, + 1, 0, 0, 9, 5, 3, 8, 8, 3, 7, 8, 6, 3, 6, 0, 9, 5, 0, 6, 8, 0, 0, + 6, 4, 2, 2, 5, 1, 2, 5, 2, 0, 5, 1, 1, 7, 3, 9, 2, 9, 8, 4, 8, 9, + 6, 0, 8, 4, 1, 2, 8, 4, 8, 8, 6, 2, 6, 9, 4, 5, 6, 0, 4, 2, 4, 1, + 9, 6, 5, 2, 8, 5, 0, 2, 2, 2, 1, 0, 6, 6, 1, 1, 8, 6, 3, 0, 6, 7, + 4, 4, 2, 7, 8, 6, 2, 2, 0, 3, 9, 1, 9, 4, 9, 4, 5, 0, 4, 7, 1, 2, + 3, 7, 1, 3, 7, 8, 6, 9, 6, 0, 9, 5, 6, 3, 6, 4, 3, 7, 1, 9, 1, 7, + 2, 8, 7, 4, 6, 7, 7, 6, 4, 6, 5, 7, 5, 7, 3, 9, 6, 2, 4, 1, 3, 8, + 9, 0, 8, 6, 5, 8, 3, 2, 6, 4, 5, 9, 9, 5, 8, 1, 3, 3, 9, 0, 4, 7, + 8, 0, 2, 7, 5, 9, 0, 0, 9, 9, 4, 6, 5, 7, 6, 4, 0, 7, 8, 9, 5, 1, + 2, 6, 9, 4, 6, 8, 3, 9, 8, 3, 5, 2, 5, 9, 5, 7, 0, 9, 8, 2, 5, 8, + 2, 2, 6, 2, 0, 5, 2, 2, 4, 8, 9, 4, 0, 7, 7, 2, 6, 7, 1, 9, 4, 7, + 8, 2, 6, 8, 4, 8, 2, 6, 0, 1, 4, 7, 6, 9, 9, 0, 9, 0, 2, 6, 4, 0, + 1, 3, 6, 3, 9, 4, 4, 3, 7, 4, 5, 5, 3, 0, 5, 0, 6, 8, 2, 0, 3, 4, + 9, 6, 2, 5, 2, 4, 5, 1, 7, 4, 9, 3, 9, 9, 6, 5, 1, 4, 3, 1, 4, 2, + 9, 8, 0, 9, 1, 9, 0, 6, 5, 9, 2, 5, 0, 9, 3, 7, 2, 2, 1, 6, 9, 6, + 4, 6, 1, 5, 1, 5, 7, 0, 9, 8, 5, 8, 3, 8, 7, 4, 1, 0, 5, 9, 7, 8, + 8, 5, 9, 5, 9, 7, 7, 2, 9, 7, 5, 4, 9, 8, 9, 3, 0, 1, 6, 1, 7, 5, + 3, 9, 2, 8, 4, 6, 8, 1, 3, 8, 2, 6, 8, 6, 8, 3, 8, 6, 8, 9, 4, 2, + 7, 7, 4, 1, 5, 5, 9, 9, 1, 8, 5, 5, 9, 2, 5, 2, 4, 5, 9, 5, 3, 9, + 5, 9, 4, 3, 1, 0, 4, 9, 9, 7, 2, 5, 2, 4, 6, 8, 0, 8, 4, 5, 9, 8, + 7, 2, 7, 3, 6, 4, 4, 6, 9, 5, 8, 4, 8, 6, 5, 3, 8, 3, 6, 7, 3, 6, + 2, 2, 2, 6, 2, 6, 0, 9, 9, 1, 2, 4, 6, 0, 8, 0, 5, 1, 2, 4, 3, 8, + 8, 4, 3, 9, 0, 4, 5, 1, 2, 4, 4, 1, 3, 6, 5, 4, 9, 7, 6, 2, 7, 8, + 0, 7, 9, 7, 7, 1, 5, 6, 9, 1, 4, 3, 5, 9, 9, 7, 7, 0, 0, 1, 2, 9, + 6, 1, 6, 0, 8, 9, 4, 4, 1, 6, 9, 4, 8, 6, 8, 5, 5, 5, 8, 4, 8, 4, + 0, 6, 3, 5, 3, 4, 2, 2, 0, 7, 2, 2, 2, 5, 8, 2, 8, 4, 8, 8, 6, 4, + 8, 1, 5, 8, 4, 5, 6, 0, 2, 8, 5, 0, 6, 0, 1, 6, 8, 4, 2, 7, 3, 9, + 4, 5, 2, 2, 6, 7, 4, 6, 7, 6, 7, 8, 8, 9, 5, 2, 5, 2, 1, 3, 8, 5, + 2, 2, 5, 4, 9, 9, 5, 4, 6, 6, 6, 7, 2, 7, 8, 2, 3, 9, 8, 6, 4, 5, + 6, 5, 9, 6, 1, 1, 6, 3, 5, 4, 8, 8, 6, 2, 3, 0, 5, 7, 7, 4, 5, 6, + 4, 9, 8, 0, 3, 5, 5, 9, 3, 6, 3, 4, 5, 6, 8, 1, 7, 4, 3, 2, 4, 1, + 1, 2, 5, 1, 5, 0, 7, 6, 0, 6, 9, 4, 7, 9, 4, 5, 1, 0, 9, 6, 5, 9, + 6, 0, 9, 4, 0, 2, 5, 2, 2, 8, 8, 7, 9, 7, 1, 0, 8, 9, 3, 1, 4, 5, + 6, 6, 9, 1, 3, 6, 8, 6, 7, 2, 2, 8, 7, 4, 8, 9, 4, 0, 5, 6, 0, 1, + 0, 1, 5, 0, 3, 3, 0, 8, 6, 1, 7, 9, 2, 8, 6, 8, 0, 9, 2, 0, 8, 7, + 4, 7, 6, 0, 9, 1, 7, 8, 2, 4, 9, 3, 8, 5, 8, 9, 0, 0, 9, 7, 1, 4, + 9, 0, 9, 6, 7, 5, 9, 8, 5, 2, 6, 1, 3, 6, 5, 5, 4, 9, 7, 8, 1, 8, + 9, 3, 1, 2, 9, 7, 8, 4, 8, 2, 1, 6, 8, 2, 9, 9, 8, 9, 4, 8, 7, 2, + 2, 6, 5, 8, 8, 0, 4, 8, 5, 7, 5, 6, 4, 0, 1, 4, 2, 7, 0, 4, 7, 7, + 5, 5, 5, 1, 3, 2, 3, 7, 9, 6, 4, 1, 4, 5, 1, 5, 2, 3, 7, 4, 6, 2, + 3, 4, 3, 6, 4, 5, 4, 2, 8, 5, 8, 4, 4, 4, 7, 9, 5, 2, 6, 5, 8, 6, + 7, 8, 2, 1, 0, 5, 1, 1, 4, 1, 3, 5, 4, 7, 3, 5, 7, 3, 9, 5, 2, 3, + 1, 1, 3, 4, 2, 7, 1, 6, 6, 1, 0, 2, 1, 3, 5, 9, 6, 9, 5, 3, 6, 2, + 3, 1, 4, 4, 2, 9, 5, 2, 4, 8, 4, 9, 3, 7, 1, 8, 7, 1, 1, 0, 1, 4, + 5, 7, 6, 5, 4, 0, 3, 5, 9, 0, 2, 7, 9, 9, 3, 4, 4, 0, 3, 7, 4, 2, + 0, 0, 7, 3, 1, 0, 5, 7, 8, 5, 3, 9, 0, 6, 2, 1, 9, 8, 3, 8, 7, 4, + 4, 7, 8, 0, 8, 4, 7, 8, 4, 8, 9, 6, 8, 3, 3, 2, 1, 4, 4, 5, 7, 1, + 3, 8, 6, 8, 7, 5, 1, 9, 4, 3, 5, 0, 6, 4, 3, 0, 2, 1, 8, 4, 5, 3, + 1, 9, 1, 0, 4, 8, 4, 8, 1, 0, 0, 5, 3, 7, 0, 6, 1, 4, 6, 8, 0, 6, + 7, 4, 9, 1, 9, 2, 7, 8, 1, 9, 1, 1, 9, 7, 9, 3, 9, 9, 5, 2, 0, 6, + 1, 4, 1, 9, 6, 6, 3, 4, 2, 8, 7, 5, 4, 4, 4, 0, 6, 4, 3, 7, 4, 5, + 1, 2, 3, 7, 1, 8, 1, 9, 2, 1, 7, 9, 9, 9, 8, 3, 9, 1, 0, 1, 5, 9, + 1, 9, 5, 6, 1, 8, 1, 4, 6, 7, 5, 1, 4, 2, 6, 9, 1, 2, 3, 9, 7, 4, + 8, 9, 4, 0, 9, 0, 7, 1, 8, 6, 4, 9, 4, 2, 3, 1, 9, 6, 1, 5, 6, 7, + 9, 4, 5, 2, 0, 8, 0, 9, 5, 1, 4, 6, 5, 5, 0, 2, 2, 5, 2, 3, 1, 6, + 0, 3, 8, 8, 1, 9, 3, 0, 1, 4, 2, 0, 9, 3, 7, 6, 2, 1, 3, 7, 8, 5, + 5, 9, 5, 6, 6, 3, 8, 9, 3, 7, 7, 8, 7, 0, 8, 3, 0, 3, 9, 0, 6, 9, + 7, 9, 2, 0, 7, 7, 3, 4, 6, 7, 2, 2, 1, 8, 2, 5, 6, 2, 5, 9, 9, 6, + 6, 1, 5, 0, 1, 4, 2, 1, 5, 0, 3, 0, 6, 8, 0, 3, 8, 4, 4, 7, 7, 3, + 4, 5, 4, 9, 2, 0, 2, 6, 0, 5, 4, 1, 4, 6, 6, 5, 9, 2, 5, 2, 0, 1, + 4, 9, 7, 4, 4, 2, 8, 5, 0, 7, 3, 2, 5, 1, 8, 6, 6, 6, 0, 0, 2, 1, + 3, 2, 4, 3, 4, 0, 8, 8, 1, 9, 0, 7, 1, 0, 4, 8, 6, 3, 3, 1, 7, 3, + 4, 6, 4, 9, 6, 5, 1, 4, 5, 3, 9, 0, 5, 7, 9, 6, 2, 6, 8, 5, 6, 1, + 0, 0, 5, 5, 0, 8, 1, 0, 6, 6, 5, 8, 7, 9, 6, 9, 9, 8, 1, 6, 3, 5, + 7, 4, 7, 3, 6, 3, 8, 4, 0, 5, 2, 5, 7, 1, 4, 5, 9, 1, 0, 2, 8, 9, + 7, 0, 6, 4, 1, 4, 0, 1, 1, 0, 9, 7, 1, 2, 0, 6, 2, 8, 0, 4, 3, 9, + 0, 3, 9, 7, 5, 9, 5, 1, 5, 6, 7, 7, 1, 5, 7, 7, 0, 0, 4, 2, 0, 3, + 3, 7, 8, 6, 9, 9, 3, 6, 0, 0, 7, 2, 3, 0, 5, 5, 8, 7, 6, 3, 1, 7, + 6, 3, 5, 9, 4, 2, 1, 8, 7, 3, 1, 2, 5, 1, 4, 7, 1, 2, 0, 5, 3, 2, + 9, 2, 8, 1, 9, 1, 8, 2, 6, 1, 8, 6, 1, 2, 5, 8, 6, 7, 3, 2, 1, 5, + 7, 9, 1, 9, 8, 4, 1, 4, 8, 4, 8, 8, 2, 9, 1, 6, 4, 4, 7, 0, 6, 0, + 9, 5, 7, 5, 2, 7, 0, 6, 9, 5, 7, 2, 2, 0, 9, 1, 7, 5, 6, 7, 1, 1, + 6, 7, 2, 2, 9, 1, 0, 9, 8, 1, 6, 9, 0, 9, 1, 5, 2, 8, 0, 1, 7, 3, + 5, 0, 6, 7, 1, 2, 7, 4, 8, 5, 8, 3, 2, 2, 2, 8, 7, 1, 8, 3, 5, 2, + 0, 9, 3, 5, 3, 9, 6, 5, 7, 2, 5, 1, 2, 1, 0, 8, 3, 5, 7, 9, 1, 5, + 1, 3, 6, 9, 8, 8, 2, 0, 9, 1, 4, 4, 4, 2, 1, 0, 0, 6, 7, 5, 1, 0, + 3, 3, 4, 6, 7, 1, 1, 0, 3, 1, 4, 1, 2, 6, 7, 1, 1, 1, 3, 6, 9, 9, + 0, 8, 6, 5, 8, 5, 1, 6, 3, 9, 8, 3, 1, 5, 0, 1, 9, 7, 0, 1, 6, 5, + 1, 5, 1, 1, 6, 8, 5, 1, 7, 1, 4, 3, 7, 6, 5, 7, 6, 1, 8, 3, 5, 1, + 5, 5, 6, 5, 0, 8, 8, 4, 9, 0, 9, 9, 8, 9, 8, 5, 9, 9, 8, 2, 3, 8, + 7, 3, 4, 5, 5, 2, 8, 3, 3, 1, 6, 3, 5, 5, 0, 7, 6, 4, 7, 9, 1, 8, + 5, 3, 5, 8, 9, 3, 2, 2, 6, 1, 8, 5, 4, 8, 9, 6, 3, 2, 1, 3, 2, 9, + 3, 3, 0, 8, 9, 8, 5, 7, 0, 6, 4, 2, 0, 4, 6, 7, 5, 2, 5, 9, 0, 7, + 0, 9, 1, 5, 4, 8, 1, 4, 1, 6, 5, 4, 9, 8, 5, 9, 4, 6, 1, 6, 3, 7, + 1, 8, 0, 2, 7, 0, 9, 8, 1, 9, 9, 4, 3, 0, 9, 9, 2, 4, 4, 8, 8, 9, + 5, 7, 5, 7, 1, 2, 8, 2, 8, 9, 0, 5, 9, 2, 3, 2, 3, 3, 2, 6, 0, 9, + 7, 2, 9, 9, 7, 1, 2, 0, 8, 4, 4, 3, 3, 5, 7, 3, 2, 6, 5, 4, 8, 9, + 3, 8, 2, 3, 9, 1, 1, 9, 3, 2, 5, 9, 7, 4, 6, 3, 6, 6, 7, 3, 0, 5, + 8, 3, 6, 0, 4, 1, 4, 2, 8, 1, 3, 8, 8, 3, 0, 3, 2, 0, 3, 8, 2, 4, + 9, 0, 3, 7, 5, 8, 9, 8, 5, 2, 4, 3, 7, 4, 4, 1, 7, 0, 2, 9, 1, 3, + 2, 7, 6, 5, 6, 1, 8, 0, 9, 3, 7, 7, 3, 4, 4, 4, 0, 3, 0, 7, 0, 7, + 4, 6, 9, 2, 1, 1, 2, 0, 1, 9, 1, 3, 0, 2, 0, 3, 3, 0, 3, 8, 0, 1, + 9, 7, 6, 2, 1, 1, 0, 1, 1, 0, 0, 4, 4, 9, 2, 9, 3, 2, 1, 5, 1, 6, + 0, 8, 4, 2, 4, 4, 4, 8, 5, 9, 6, 3, 7, 6, 6, 9, 8, 3, 8, 9, 5, 2, + 2, 8, 6, 8, 4, 7, 8, 3, 1, 2, 3, 5, 5, 2, 6, 5, 8, 2, 1, 3, 1, 4, + 4, 9, 5, 7, 6, 8, 5, 7, 2, 6, 2, 4, 3, 3, 4, 4, 1, 8, 9, 3, 0, 3, + 9, 6, 8, 6, 4, 2, 6, 2, 4, 3, 4, 1, 0, 7, 7, 3, 2, 2, 6, 9, 7, 8, + 0, 2, 8, 0, 7, 3, 1, 8, 9, 1, 5, 4, 4, 1, 1, 0, 1, 0, 4, 4, 6, 8, + 2, 3, 2, 5, 2, 7, 1, 6, 2, 0, 1, 0, 5, 2, 6, 5, 2, 2, 7, 2, 1, 1, + 1, 6, 6, 0, 3, 9, 6, 6, 6, 5, 5, 7, 3, 0, 9, 2, 5, 4, 7, 1, 1, 0, + 5, 5, 7, 8, 5, 3, 7, 6, 3, 4, 6, 6, 8, 2, 0, 6, 5, 3, 1, 0, 9, 8, + 9, 6, 5, 2, 6, 9, 1, 8, 6, 2, 0, 5, 6, 4, 7, 6, 9, 3, 1, 2, 5, 7, + 0, 5, 8, 6, 3, 5, 6, 6, 2, 0, 1, 8, 5, 5, 8, 1, 0, 0, 7, 2, 9, 3, + 6, 0, 6, 5, 9, 8, 7, 6, 4, 8, 6, 1, 1, 7, 9, 1, 0, 4, 5, 3, 3, 4, + 8, 8, 5, 0, 3, 4, 6, 1, 1, 3, 6, 5, 7, 6, 8, 6, 7, 5, 3, 2, 4, 9, + 4, 4, 1, 6, 6, 8, 0, 3, 9, 6, 2, 6, 5, 7, 9, 7, 8, 7, 7, 1, 8, 5, + 5, 6, 0, 8, 4, 5, 5, 2, 9, 6, 5, 4, 1, 2, 6, 6, 5, 4, 0, 8, 5, 3, + 0, 6, 1, 4, 3, 4, 4, 4, 3, 1, 8, 5, 8, 6, 7, 6, 9, 7, 5, 1, 4, 5, + 6, 6, 1, 4, 0, 6, 8, 0, 0, 7, 0, 0, 2, 3, 7, 8, 7, 7, 6, 5, 9, 1, + 3, 4, 4, 0, 1, 7, 1, 2, 7, 4, 9, 4, 7, 0, 4, 2, 0, 5, 6, 2, 2, 3, + 0, 5, 3, 8, 9, 9, 4, 5, 6, 1, 3, 1, 4, 0, 7, 1, 1, 2, 7, 0, 0, 0, + 4, 0, 7, 8, 5, 4, 7, 3, 3, 2, 6, 9, 9, 3, 9, 0, 8, 1, 4, 5, 4, 6, + 6, 4, 6, 4, 5, 8, 8, 0, 7, 9, 7, 2, 7, 0, 8, 2, 6, 6, 8, 3, 0, 6, + 3, 4, 3, 2, 8, 5, 8, 7, 8, 5, 6, 9, 8, 3, 0, 5, 2, 3, 5, 8, 0, 8, + 9, 3, 3, 0, 6, 5, 7, 5, 7, 4, 0, 6, 7, 9, 5, 4, 5, 7, 1, 6, 3, 7, + 7, 5, 2, 5, 4, 2, 0, 2, 1, 1, 4, 9, 5, 5, 7, 6, 1, 5, 8, 1, 4, 0, + 0, 2, 5, 0, 1, 2, 6, 2, 2, 8, 5, 9, 4, 1, 3, 0, 2, 1, 6, 4, 7, 1, + 5, 5, 0, 9, 7, 9, 2, 5, 9, 2, 3, 0, 9, 9, 0, 7, 9, 6, 5, 4, 7, 3, + 7, 6, 1, 2, 5, 5, 1, 7, 6, 5, 6, 7, 5, 1, 3, 5, 7, 5, 1, 7, 8, 2, + 9, 6, 6, 6, 4, 5, 4, 7, 7, 9, 1, 7, 4, 5, 0, 1, 1, 2, 9, 9, 6, 1, + 4, 8, 9, 0, 3, 0, 4, 6, 3, 9, 9, 4, 7, 1, 3, 2, 9, 6, 2, 1, 0, 7, + 3, 4, 0, 4, 3, 7, 5, 1, 8, 9, 5, 7, 3, 5, 9, 6, 1, 4, 5, 8, 9, 0, + 1, 9, 3, 8, 9, 7, 1, 3, 1, 1, 1, 7, 9, 0, 4, 2, 9, 7, 8, 2, 8, 5, + 6, 4, 7, 5, 0, 3, 2, 0, 3, 1, 9, 8, 6, 9, 1, 5, 1, 4, 0, 2, 8, 7, + 0, 8, 0, 8, 5, 9, 9, 0, 4, 8, 0, 1, 0, 9, 4, 1, 2, 1, 4, 7, 2, 2, + 1, 3, 1, 7, 9, 4, 7, 6, 4, 7, 7, 7, 2, 6, 2, 2, 4, 1, 4, 2, 5, 4, + 8, 5, 4, 5, 4, 0, 3, 3, 2, 1, 5, 7, 1, 8, 5, 3, 0, 6, 1, 4, 2, 2, + 8, 8, 1, 3, 7, 5, 8, 5, 0, 4, 3, 0, 6, 3, 3, 2, 1, 7, 5, 1, 8, 2, + 9, 7, 9, 8, 6, 6, 2, 2, 3, 7, 1, 7, 2, 1, 5, 9, 1, 6, 0, 7, 7, 1, + 6, 6, 9, 2, 5, 4, 7, 4, 8, 7, 3, 8, 9, 8, 6, 6, 5, 4, 9, 4, 9, 4, + 5, 0, 1, 1, 4, 6, 5, 4, 0, 6, 2, 8, 4, 3, 3, 6, 6, 3, 9, 3, 7, 9, + 0, 0, 3, 9, 7, 6, 9, 2, 6, 5, 6, 7, 2, 1, 4, 6, 3, 8, 5, 3, 0, 6, + 7, 3, 6, 0, 9, 6, 5, 7, 1, 2, 0, 9, 1, 8, 0, 7, 6, 3, 8, 3, 2, 7, + 1, 6, 6, 4, 1, 6, 2, 7, 4, 8, 8, 8, 8, 0, 0, 7, 8, 6, 9, 2, 5, 6, + 0, 2, 9, 0, 2, 2, 8, 4, 7, 2, 1, 0, 4, 0, 3, 1, 7, 2, 1, 1, 8, 6, + 0, 8, 2, 0, 4, 1, 9, 0, 0, 0, 4, 2, 2, 9, 6, 6, 1, 7, 1, 1, 9, 6, + 3, 7, 7, 9, 2, 1, 3, 3, 7, 5, 7, 5, 1, 1, 4, 9, 5, 9, 5, 0, 1, 5, + 6, 6, 0, 4, 9, 6, 3, 1, 8, 6, 2, 9, 4, 7, 2, 6, 5, 4, 7, 3, 6, 4, + 2, 5, 2, 3, 0, 8, 1, 7, 7, 0, 3, 6, 7, 5, 1, 5, 9, 0, 6, 7, 3, 5, + 0, 2, 3, 5, 0, 7, 2, 8, 3, 5, 4, 0, 5, 6, 7, 0, 4, 0, 3, 8, 6, 7, + 4, 3, 5, 1, 3, 6, 2, 2, 2, 2, 4, 7, 7, 1, 5, 8, 9, 1, 5, 0, 4, 9, + 5, 3, 0, 9, 8, 4, 4, 4, 8, 9, 3, 3, 3, 0, 9, 6, 3, 4, 0, 8, 7, 8, + 0, 7, 6, 9, 3, 2, 5, 9, 9, 3, 9, 7, 8, 0, 5, 4, 1, 9, 3, 4, 1, 4, + 4, 7, 3, 7, 7, 4, 4, 1, 8, 4, 2, 6, 3, 1, 2, 9, 8, 6, 0, 8, 0, 9, + 9, 8, 8, 8, 6, 8, 7, 4, 1, 3, 2, 6, 0, 4, 7, 2 } ; + + + const size_t nacc1 = 3 ; + const double numacc1[3] = { 10000001, 10000003, 10000002 } ; + + const size_t nacc2 = 1001 ; + double numacc2[1001] ; + + const size_t nacc3 = 1001 ; + double numacc3[1001] ; + + const size_t nacc4 = 1001 ; + double numacc4[1001] ; + + numacc2[0] = 1.2 ; + numacc3[0] = 1000000.2 ; + numacc4[0] = 10000000.2 ; + + for (i = 1 ; i < 1000 ; i += 2) + { + numacc2[i] = 1.1 ; + numacc2[i+1] = 1.3 ; + numacc3[i] = 1000000.1 ; + numacc3[i+1] = 1000000.3 ; + numacc4[i] = 10000000.1 ; + numacc4[i+1] = 10000000.3 ; + } + + gsl_ieee_env_setup (); + + { + double mean = gsl_stats_mean (lew, 1, nlew); + double sd = gsl_stats_sd (lew, 1, nlew); + double lag1 = gsl_stats_lag1_autocorrelation (lew, 1, nlew); + + double expected_mean = -177.435000000000; + double expected_sd = 277.332168044316; + double expected_lag1 = -0.307304800605679; + + gsl_test_rel (mean, expected_mean, 1e-15, "lew gsl_stats_mean") ; + gsl_test_rel (sd, expected_sd, 1e-15, "lew gsl_stats_sd") ; + gsl_test_rel (lag1, expected_lag1, 1e-14, "lew autocorrelation") ; + } + + + { + double mean = gsl_stats_mean (lottery, 1, nlottery); + double sd = gsl_stats_sd (lottery, 1, nlottery); + double lag1 = gsl_stats_lag1_autocorrelation (lottery, 1, nlottery); + + double expected_mean = 518.958715596330; + double expected_sd = 291.699727470969; + double expected_lag1 = -0.120948622967393; + + gsl_test_rel (mean, expected_mean, 1e-15, "lottery gsl_stats_mean") ; + gsl_test_rel (sd, expected_sd, 1e-15, "lottery gsl_stats_sd") ; + gsl_test_rel (lag1, expected_lag1, 1e-14, "lottery autocorrelation") ; + } + + { + double mean = gsl_stats_mean (mavro, 1, nmavro); + double sd = gsl_stats_sd (mavro, 1, nmavro); + double lag1 = gsl_stats_lag1_autocorrelation (mavro, 1, nmavro); + + double expected_mean = 2.00185600000000; + double expected_sd = 0.000429123454003053; + double expected_lag1 = 0.937989183438248; + + gsl_test_rel (mean, expected_mean, 1e-15, "mavro gsl_stats_mean") ; + gsl_test_rel (sd, expected_sd, 1e-13, "mavro gsl_stats_sd") ; + gsl_test_rel (lag1, expected_lag1, 1e-13, "mavro autocorrelation") ; + } + + + { + double mean = gsl_stats_mean (michelson, 1, nmichelson); + double sd = gsl_stats_sd (michelson, 1, nmichelson); + double lag1 = gsl_stats_lag1_autocorrelation (michelson, 1, nmichelson); + + double expected_mean = 299.852400000000; + double expected_sd = 0.0790105478190518; + double expected_lag1 = 0.535199668621283; + + gsl_test_rel (mean, expected_mean, 1e-15, "michelson gsl_stats_mean") ; + gsl_test_rel (sd, expected_sd, 1e-13, "michelson gsl_stats_sd") ; + gsl_test_rel (lag1, expected_lag1, 1e-13, "michelson autocorrelation") ; + } + + { + double mean = gsl_stats_mean (pidigits, 1, npidigits); + double sd = gsl_stats_sd (pidigits, 1, npidigits); + double lag1 = gsl_stats_lag1_autocorrelation (pidigits, 1, npidigits); + + double expected_mean = 4.53480000000000; + double expected_sd = 2.86733906028871; + double expected_lag1 = -0.00355099287237972; + + gsl_test_rel (mean, expected_mean, 1e-14, "pidigits gsl_stats_mean") ; + gsl_test_rel (sd, expected_sd, 1e-15, "pidigits gsl_stats_sd") ; + gsl_test_rel (lag1, expected_lag1, 1e-14, "pidigits autocorrelation") ; + } + + { + double mean = gsl_stats_mean (numacc1, 1, nacc1); + double sd = gsl_stats_sd (numacc1, 1, nacc1); + double lag1 = gsl_stats_lag1_autocorrelation (numacc1, 1, nacc1); + + double expected_mean = 10000002; + double expected_sd = 1; + double expected_lag1 = -0.5; + + gsl_test_rel (mean, expected_mean, 1e-15, "acc1 gsl_stats_mean") ; + gsl_test_rel (sd, expected_sd, 1e-15, "acc1 gsl_stats_sd") ; + gsl_test_rel (lag1, expected_lag1, 1e-15, "acc1 autocorrelation") ; + } + + { + double mean = gsl_stats_mean (numacc2, 1, nacc2); + double sd = gsl_stats_sd (numacc2, 1, nacc2); + double lag1 = gsl_stats_lag1_autocorrelation (numacc2, 1, nacc2); + + double expected_mean = 1.2; + double expected_sd = 0.1; + double expected_lag1 = -0.999; + + gsl_test_rel (mean, expected_mean, 1e-15, "acc2 gsl_stats_mean") ; + gsl_test_rel (sd, expected_sd, 1e-15, "acc2 gsl_stats_sd") ; + gsl_test_rel (lag1, expected_lag1, 1e-10, "acc2 autocorrelation") ; + } + + { + double mean = gsl_stats_mean (numacc3, 1, nacc3); + double sd = gsl_stats_sd (numacc3, 1, nacc3); + double lag1 = gsl_stats_lag1_autocorrelation (numacc3, 1, nacc3); + + double expected_mean = 1000000.2; + double expected_sd = 0.1; + double expected_lag1 = -0.999; + + gsl_test_rel (mean, expected_mean, 1e-15, "acc3 gsl_stats_mean") ; + gsl_test_rel (sd, expected_sd, 1e-9, "acc3 gsl_stats_sd") ; + gsl_test_rel (lag1, expected_lag1, 1e-10, "acc3 autocorrelation") ; + } + + + { + double mean = gsl_stats_mean (numacc4, 1, nacc4); + double sd = gsl_stats_sd (numacc4, 1, nacc4); + double lag1 = gsl_stats_lag1_autocorrelation (numacc4, 1, nacc4); + + double expected_mean = 10000000.2; + double expected_sd = 0.1; + double expected_lag1 = -0.999; + + gsl_test_rel (mean, expected_mean, 1e-15, "acc4 gsl_stats_mean") ; + gsl_test_rel (sd, expected_sd, 1e-7, "acc4 gsl_stats_sd") ; + gsl_test_rel (lag1, expected_lag1, 1e-10, "acc4 autocorrelation") ; + } + + return 0; +} + + + + + + + diff --git a/gsl-2.5/statistics/test_robust.c b/gsl-2.5/statistics/test_robust.c new file mode 100644 index 00000000..b8535ae6 --- /dev/null +++ b/gsl-2.5/statistics/test_robust.c @@ -0,0 +1,267 @@ +/* statistics/test_robust.c + * + * Copyright (C) 2018 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +int test_robust (void); + +/* random vector in [-1,1] */ +static int +random_array(const size_t n, double * x, gsl_rng * r) +{ + size_t i; + + for (i = 0; i < n; ++i) + x[i] = 2.0 * gsl_rng_uniform(r) - 1.0; + + return 0; +} + +/* calculate MAD statistic for input vector using slow/naive algorithm */ +static double +slow_MAD(const size_t n, const double x[]) +{ + double *work = malloc(n * sizeof(double)); + double median, mad; + size_t i; + + for (i = 0; i < n; ++i) + work[i] = x[i]; + + gsl_sort(work, 1, n); + median = gsl_stats_median_from_sorted_data(work, 1, n); + + for (i = 0; i < n; ++i) + work[i] = fabs(x[i] - median); + + gsl_sort(work, 1, n); + mad = gsl_stats_median_from_sorted_data(work, 1, n); + + free(work); + + return mad; +} + +/* calculate S_n statistic for input vector using slow/naive algorithm */ +static double +slow_Sn0(const size_t n, const double x[]) +{ + double *work1 = malloc(n * sizeof(double)); + double *work2 = malloc(n * sizeof(double)); + double Sn; + size_t i, j; + + for (i = 0; i < n; ++i) + { + for (j = 0; j < n; ++j) + work1[j] = fabs(x[i] - x[j]); + + /* find himed_j | x_i - x_j | */ + gsl_sort(work1, 1, n); + work2[i] = work1[n / 2]; + } + + /* find lomed_i { himed_j | x_i - x_j | } */ + gsl_sort(work2, 1, n); + Sn = work2[(n + 1) / 2 - 1]; + + free(work1); + free(work2); + + return Sn; +} + +/* calculate Q_n statistic for input vector using slow/naive algorithm */ +static double +slow_Qn0(const size_t n, const double x[]) +{ + const size_t wsize = n * (n - 1) / 2; + const size_t n_2 = n / 2; + const size_t k = ((n_2 + 1) * n_2) / 2; + double *work; + double Qn; + size_t idx = 0; + size_t i, j; + + if (n < 2) + return (0.0); + + work = malloc(wsize * sizeof(double)); + + for (i = 0; i < n; ++i) + { + for (j = i + 1; j < n; ++j) + work[idx++] = fabs(x[i] - x[j]); + } + + gsl_sort(work, 1, idx); + Qn = work[k - 1]; + + free(work); + + return Qn; +} + +static int +test_median(const double tol, const size_t n, gsl_rng * r) +{ + double * x = malloc(n * sizeof(double)); + double median1, median2; + + random_array(n, x, r); + + median1 = gsl_stats_median(x, 1, n); + + gsl_sort(x, 1, n); + median2 = gsl_stats_median_from_sorted_data(x, 1, n); + + gsl_test_rel(median1, median2, tol, "test_median n=%zu", n); + + free(x); + + return 0; +} + +static int +test_mad(const double tol, const size_t n, gsl_rng * r) +{ + double * x = malloc(n * sizeof(double)); + double * work = malloc(n * sizeof(double)); + double mad1, mad2; + + random_array(n, x, r); + + mad1 = slow_MAD(n, x); + + gsl_sort(x, 1, n); + mad2 = gsl_stats_mad0(x, 1, n, work); + + gsl_test_rel(mad1, mad2, tol, "test_mad n=%zu", n); + + free(x); + free(work); + + return 0; +} + +static int +test_Sn(const double tol, const size_t n, gsl_rng * r) +{ + double * x = malloc(n * sizeof(double)); + double * work = malloc(n * sizeof(double)); + double Sn1, Sn2; + + random_array(n, x, r); + + /* compute S_n with slow/naive algorithm */ + Sn1 = slow_Sn0(n, x); + + /* compute S_n with efficient algorithm */ + gsl_sort(x, 1, n); + Sn2 = gsl_stats_Sn0_from_sorted_data(x, 1, n, work); + + gsl_test_rel(Sn2, Sn1, tol, "test_Sn n=%zu", n); + + free(x); + free(work); + + return 0; +} + +static int +test_Qn(const double tol, const size_t n, gsl_rng * r) +{ + double * x = malloc(n * sizeof(double)); + double * work = malloc(3 * n * sizeof(double)); + int * work_int = malloc(5 * n * sizeof(int)); + double Qn1, Qn2; + + random_array(n, x, r); + + /* compute Q_n with slow/naive algorithm */ + Qn1 = slow_Qn0(n, x); + + /* compute Q_n with efficient algorithm */ + gsl_sort(x, 1, n); + Qn2 = gsl_stats_Qn0_from_sorted_data(x, 1, n, work, work_int); + + gsl_test_rel(Qn2, Qn1, tol, "test_Qn n=%zu", n); + + free(x); + free(work); + free(work_int); + + return 0; +} + +int +test_robust (void) +{ + const double tol = 1.0e-12; + gsl_rng * r = gsl_rng_alloc(gsl_rng_default); + + test_median(GSL_DBL_EPSILON, 1, r); + test_median(GSL_DBL_EPSILON, 2, r); + test_median(GSL_DBL_EPSILON, 3, r); + test_median(GSL_DBL_EPSILON, 100, r); + test_median(GSL_DBL_EPSILON, 101, r); + test_median(GSL_DBL_EPSILON, 500, r); + test_median(GSL_DBL_EPSILON, 501, r); + + test_mad(GSL_DBL_EPSILON, 1, r); + test_mad(GSL_DBL_EPSILON, 2, r); + test_mad(GSL_DBL_EPSILON, 3, r); + test_mad(GSL_DBL_EPSILON, 100, r); + test_mad(GSL_DBL_EPSILON, 101, r); + test_mad(GSL_DBL_EPSILON, 500, r); + test_mad(GSL_DBL_EPSILON, 501, r); + + test_Sn(tol, 1, r); + test_Sn(tol, 2, r); + test_Sn(tol, 3, r); + test_Sn(tol, 100, r); + test_Sn(tol, 101, r); + test_Sn(tol, 500, r); + test_Sn(tol, 501, r); + + test_Qn(tol, 1, r); + test_Qn(tol, 2, r); + test_Qn(tol, 3, r); + test_Qn(tol, 4, r); + test_Qn(tol, 5, r); + test_Qn(tol, 100, r); + test_Qn(tol, 101, r); + test_Qn(tol, 500, r); + test_Qn(tol, 501, r); + + gsl_rng_free(r); + + return 0; +} diff --git a/gsl-2.5/statistics/trmean.c b/gsl-2.5/statistics/trmean.c new file mode 100644 index 00000000..b3f3b799 --- /dev/null +++ b/gsl-2.5/statistics/trmean.c @@ -0,0 +1,71 @@ +#include +#include +#include + +#define BASE_LONG_DOUBLE +#include "templates_on.h" +#include "trmean_source.c" +#include "templates_off.h" +#undef BASE_LONG_DOUBLE + +#define BASE_DOUBLE +#include "templates_on.h" +#include "trmean_source.c" +#include "templates_off.h" +#undef BASE_DOUBLE + +#define BASE_FLOAT +#include "templates_on.h" +#include "trmean_source.c" +#include "templates_off.h" +#undef BASE_FLOAT + +#define BASE_ULONG +#include "templates_on.h" +#include "trmean_source.c" +#include "templates_off.h" +#undef BASE_ULONG + +#define BASE_LONG +#include "templates_on.h" +#include "trmean_source.c" +#include "templates_off.h" +#undef BASE_LONG + +#define BASE_UINT +#include "templates_on.h" +#include "trmean_source.c" +#include "templates_off.h" +#undef BASE_UINT + +#define BASE_INT +#include "templates_on.h" +#include "trmean_source.c" +#include "templates_off.h" +#undef BASE_INT + +#define BASE_USHORT +#include "templates_on.h" +#include "trmean_source.c" +#include "templates_off.h" +#undef BASE_USHORT + +#define BASE_SHORT +#include "templates_on.h" +#include "trmean_source.c" +#include "templates_off.h" +#undef BASE_SHORT + +#define BASE_UCHAR +#include "templates_on.h" +#include "trmean_source.c" +#include "templates_off.h" +#undef BASE_UCHAR + +#define BASE_CHAR +#include "templates_on.h" +#include "trmean_source.c" +#include "templates_off.h" +#undef BASE_CHAR + + diff --git a/gsl-2.5/statistics/trmean.lo b/gsl-2.5/statistics/trmean.lo new file mode 100644 index 00000000..a5cf111d --- /dev/null +++ b/gsl-2.5/statistics/trmean.lo @@ -0,0 +1,12 @@ +# trmean.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/trmean.o' + +# Name of the non-PIC object +non_pic_object='trmean.o' + diff --git a/gsl-2.5/statistics/trmean_source.c b/gsl-2.5/statistics/trmean_source.c new file mode 100644 index 00000000..0c2e6058 --- /dev/null +++ b/gsl-2.5/statistics/trmean_source.c @@ -0,0 +1,46 @@ +/* statistics/trmean_source.c + * + * Copyright (C) 2018 Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +double +FUNCTION (gsl_stats, trmean_from_sorted_data) (const double trim, const BASE sorted_data[], + const size_t stride, const size_t size) +{ + if (trim >= 0.5) + { + return FUNCTION(gsl_stats, median_from_sorted_data)(sorted_data, stride, size); + } + else + { + size_t ilow = (size_t) floor(trim * size); + size_t ihigh = size - ilow - 1; + double mean = 0.0; + double k = 0.0; + size_t i; + + /* compute mean of middle samples in [ilow,ihigh] */ + for (i = ilow; i <= ihigh; ++i) + { + double delta = sorted_data[i * stride] - mean; + k += 1.0; + mean += delta / k; + } + + return mean; + } +} diff --git a/gsl-2.5/statistics/ttest.c b/gsl-2.5/statistics/ttest.c new file mode 100644 index 00000000..3bc50da7 --- /dev/null +++ b/gsl-2.5/statistics/ttest.c @@ -0,0 +1,72 @@ +#include +#include +#include + +#define BASE_LONG_DOUBLE +#include "templates_on.h" +#include "ttest_source.c" +#include "templates_off.h" +#undef BASE_LONG_DOUBLE + +#define BASE_DOUBLE +#include "templates_on.h" +#include "ttest_source.c" +#include "templates_off.h" +#undef BASE_DOUBLE + +#define BASE_FLOAT +#include "templates_on.h" +#include "ttest_source.c" +#include "templates_off.h" +#undef BASE_FLOAT + +#define BASE_ULONG +#include "templates_on.h" +#include "ttest_source.c" +#include "templates_off.h" +#undef BASE_ULONG + +#define BASE_LONG +#include "templates_on.h" +#include "ttest_source.c" +#include "templates_off.h" +#undef BASE_LONG + +#define BASE_UINT +#include "templates_on.h" +#include "ttest_source.c" +#include "templates_off.h" +#undef BASE_UINT + +#define BASE_INT +#include "templates_on.h" +#include "ttest_source.c" +#include "templates_off.h" +#undef BASE_INT + +#define BASE_USHORT +#include "templates_on.h" +#include "ttest_source.c" +#include "templates_off.h" +#undef BASE_USHORT + +#define BASE_SHORT +#include "templates_on.h" +#include "ttest_source.c" +#include "templates_off.h" +#undef BASE_SHORT + +#define BASE_UCHAR +#include "templates_on.h" +#include "ttest_source.c" +#include "templates_off.h" +#undef BASE_UCHAR + +#define BASE_CHAR +#include "templates_on.h" +#include "ttest_source.c" +#include "templates_off.h" +#undef BASE_CHAR + + + diff --git a/gsl-2.5/statistics/ttest.lo b/gsl-2.5/statistics/ttest.lo new file mode 100644 index 00000000..6c50fbad --- /dev/null +++ b/gsl-2.5/statistics/ttest.lo @@ -0,0 +1,12 @@ +# ttest.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/ttest.o' + +# Name of the non-PIC object +non_pic_object='ttest.o' + diff --git a/gsl-2.5/statistics/ttest_source.c b/gsl-2.5/statistics/ttest_source.c new file mode 100644 index 00000000..36997e4d --- /dev/null +++ b/gsl-2.5/statistics/ttest_source.c @@ -0,0 +1,42 @@ +/* statistics/ttest_source.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Jim Davies, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +double +FUNCTION(gsl_stats,ttest) (const BASE data1[], + const size_t stride1, const size_t n1, + const BASE data2[], + const size_t stride2, const size_t n2) +{ + /* runs a t-test between two datasets representing independent + samples. Tests to see if the difference between means of the + samples is different from zero */ + + /* find means for the two samples */ + const double mean1 = FUNCTION(gsl_stats,mean) (data1, stride1, n1); + const double mean2 = FUNCTION(gsl_stats,mean) (data2, stride2, n2); + + /* find pooled variance for the two samples */ + const double pv = FUNCTION(gsl_stats,pvariance) (data1, stride1, n1, data2, stride2, n2); + + /* calculate the t statistic */ + const double t = (mean1 - mean2) / (sqrt (pv * ((1.0 / n1) + (1.0 / n2)))); + + return t; +} + diff --git a/gsl-2.5/statistics/variance.c b/gsl-2.5/statistics/variance.c new file mode 100644 index 00000000..7c30a0ae --- /dev/null +++ b/gsl-2.5/statistics/variance.c @@ -0,0 +1,72 @@ +#include +#include +#include + +#define BASE_LONG_DOUBLE +#include "templates_on.h" +#include "variance_source.c" +#include "templates_off.h" +#undef BASE_LONG_DOUBLE + +#define BASE_DOUBLE +#include "templates_on.h" +#include "variance_source.c" +#include "templates_off.h" +#undef BASE_DOUBLE + +#define BASE_FLOAT +#include "templates_on.h" +#include "variance_source.c" +#include "templates_off.h" +#undef BASE_FLOAT + +#define BASE_ULONG +#include "templates_on.h" +#include "variance_source.c" +#include "templates_off.h" +#undef BASE_ULONG + +#define BASE_LONG +#include "templates_on.h" +#include "variance_source.c" +#include "templates_off.h" +#undef BASE_LONG + +#define BASE_UINT +#include "templates_on.h" +#include "variance_source.c" +#include "templates_off.h" +#undef BASE_UINT + +#define BASE_INT +#include "templates_on.h" +#include "variance_source.c" +#include "templates_off.h" +#undef BASE_INT + +#define BASE_USHORT +#include "templates_on.h" +#include "variance_source.c" +#include "templates_off.h" +#undef BASE_USHORT + +#define BASE_SHORT +#include "templates_on.h" +#include "variance_source.c" +#include "templates_off.h" +#undef BASE_SHORT + +#define BASE_UCHAR +#include "templates_on.h" +#include "variance_source.c" +#include "templates_off.h" +#undef BASE_UCHAR + +#define BASE_CHAR +#include "templates_on.h" +#include "variance_source.c" +#include "templates_off.h" +#undef BASE_CHAR + + + diff --git a/gsl-2.5/statistics/variance.lo b/gsl-2.5/statistics/variance.lo new file mode 100644 index 00000000..7480dbcd --- /dev/null +++ b/gsl-2.5/statistics/variance.lo @@ -0,0 +1,12 @@ +# variance.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/variance.o' + +# Name of the non-PIC object +non_pic_object='variance.o' + diff --git a/gsl-2.5/statistics/variance_source.c b/gsl-2.5/statistics/variance_source.c new file mode 100644 index 00000000..3a5d643f --- /dev/null +++ b/gsl-2.5/statistics/variance_source.c @@ -0,0 +1,128 @@ +/* statistics/variance_source.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Jim Davies, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +static double +FUNCTION(compute,variance) (const BASE data[], const size_t stride, const size_t n, const double mean); + +static double +FUNCTION(compute,tss) (const BASE data[], const size_t stride, const size_t n, const double mean); + +static double +FUNCTION(compute,variance) (const BASE data[], const size_t stride, const size_t n, const double mean) +{ + /* takes a dataset and finds the variance */ + + long double variance = 0 ; + + size_t i; + + /* find the sum of the squares */ + for (i = 0; i < n; i++) + { + const long double delta = (data[i * stride] - mean); + variance += (delta * delta - variance) / (i + 1); + } + + return variance ; +} + +static double +FUNCTION(compute,tss) (const BASE data[], const size_t stride, const size_t n, const double mean) +{ + /* takes a dataset and finds the sum of squares about the mean */ + + long double tss = 0 ; + + size_t i; + + /* find the sum of the squares */ + for (i = 0; i < n; i++) + { + const long double delta = (data[i * stride] - mean); + tss += delta * delta; + } + + return tss ; +} + + +double +FUNCTION(gsl_stats,variance_with_fixed_mean) (const BASE data[], const size_t stride, const size_t n, const double mean) +{ + const double variance = FUNCTION(compute,variance) (data, stride, n, mean); + return variance; +} + +double +FUNCTION(gsl_stats,sd_with_fixed_mean) (const BASE data[], const size_t stride, const size_t n, const double mean) +{ + const double variance = FUNCTION(compute,variance) (data, stride, n, mean); + const double sd = sqrt (variance); + + return sd; +} + + + +double +FUNCTION(gsl_stats,variance_m) (const BASE data[], const size_t stride, const size_t n, const double mean) +{ + const double variance = FUNCTION(compute,variance) (data, stride, n, mean); + + return variance * ((double)n / (double)(n - 1)); +} + +double +FUNCTION(gsl_stats,sd_m) (const BASE data[], const size_t stride, const size_t n, const double mean) +{ + const double variance = FUNCTION(compute,variance) (data, stride, n, mean); + const double sd = sqrt (variance * ((double)n / (double)(n - 1))); + + return sd; +} + +double +FUNCTION(gsl_stats,variance) (const BASE data[], const size_t stride, const size_t n) +{ + const double mean = FUNCTION(gsl_stats,mean) (data, stride, n); + return FUNCTION(gsl_stats,variance_m)(data, stride, n, mean); +} + +double +FUNCTION(gsl_stats,sd) (const BASE data[], const size_t stride, const size_t n) +{ + const double mean = FUNCTION(gsl_stats,mean) (data, stride, n); + return FUNCTION(gsl_stats,sd_m) (data, stride, n, mean); +} + + +double +FUNCTION(gsl_stats,tss_m) (const BASE data[], const size_t stride, const size_t n, const double mean) +{ + const double tss = FUNCTION(compute,tss) (data, stride, n, mean); + + return tss; +} + +double +FUNCTION(gsl_stats,tss) (const BASE data[], const size_t stride, const size_t n) +{ + const double mean = FUNCTION(gsl_stats,mean) (data, stride, n); + return FUNCTION(gsl_stats,tss_m)(data, stride, n, mean); +} diff --git a/gsl-2.5/statistics/wabsdev.c b/gsl-2.5/statistics/wabsdev.c new file mode 100644 index 00000000..27e0e93f --- /dev/null +++ b/gsl-2.5/statistics/wabsdev.c @@ -0,0 +1,21 @@ +#include +#include +#include + +#define BASE_LONG_DOUBLE +#include "templates_on.h" +#include "wabsdev_source.c" +#include "templates_off.h" +#undef BASE_LONG_DOUBLE + +#define BASE_DOUBLE +#include "templates_on.h" +#include "wabsdev_source.c" +#include "templates_off.h" +#undef BASE_DOUBLE + +#define BASE_FLOAT +#include "templates_on.h" +#include "wabsdev_source.c" +#include "templates_off.h" +#undef BASE_FLOAT diff --git a/gsl-2.5/statistics/wabsdev.lo b/gsl-2.5/statistics/wabsdev.lo new file mode 100644 index 00000000..c2adb8bf --- /dev/null +++ b/gsl-2.5/statistics/wabsdev.lo @@ -0,0 +1,12 @@ +# wabsdev.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/wabsdev.o' + +# Name of the non-PIC object +non_pic_object='wabsdev.o' + diff --git a/gsl-2.5/statistics/wabsdev_source.c b/gsl-2.5/statistics/wabsdev_source.c new file mode 100644 index 00000000..18d7b97d --- /dev/null +++ b/gsl-2.5/statistics/wabsdev_source.c @@ -0,0 +1,51 @@ +/* statistics/wabsdev_source.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Jim Davies, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +double +FUNCTION(gsl_stats,wabsdev) (const BASE w[], const size_t wstride, const BASE data[], const size_t stride, const size_t n) +{ + const double wmean = FUNCTION(gsl_stats,wmean)(w, wstride, data, stride, n); + return FUNCTION(gsl_stats,wabsdev_m)(w, wstride, data, stride, n, wmean); +} + +double +FUNCTION(gsl_stats,wabsdev_m) (const BASE w[], const size_t wstride, const BASE data[], const size_t stride, const size_t n, const double wmean) +{ + /* Compute the weighted absolute deviation of a dataset */ + + long double wabsdev = 0; + long double W = 0; + + size_t i; + + /* find the sum of the absolute deviations */ + for (i = 0; i < n; i++) + { + BASE wi = w[i * wstride]; + + if (wi > 0) { + const long double delta = fabs(data[i * stride] - wmean); + W += wi ; + wabsdev += (delta - wabsdev) * (wi / W); + } + } + + return wabsdev; +} + diff --git a/gsl-2.5/statistics/wkurtosis.c b/gsl-2.5/statistics/wkurtosis.c new file mode 100644 index 00000000..5b0e0a25 --- /dev/null +++ b/gsl-2.5/statistics/wkurtosis.c @@ -0,0 +1,21 @@ +#include +#include +#include + +#define BASE_LONG_DOUBLE +#include "templates_on.h" +#include "wkurtosis_source.c" +#include "templates_off.h" +#undef BASE_LONG_DOUBLE + +#define BASE_DOUBLE +#include "templates_on.h" +#include "wkurtosis_source.c" +#include "templates_off.h" +#undef BASE_DOUBLE + +#define BASE_FLOAT +#include "templates_on.h" +#include "wkurtosis_source.c" +#include "templates_off.h" +#undef BASE_FLOAT diff --git a/gsl-2.5/statistics/wkurtosis.lo b/gsl-2.5/statistics/wkurtosis.lo new file mode 100644 index 00000000..226437ab --- /dev/null +++ b/gsl-2.5/statistics/wkurtosis.lo @@ -0,0 +1,12 @@ +# wkurtosis.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/wkurtosis.o' + +# Name of the non-PIC object +non_pic_object='wkurtosis.o' + diff --git a/gsl-2.5/statistics/wkurtosis_source.c b/gsl-2.5/statistics/wkurtosis_source.c new file mode 100644 index 00000000..f02615d0 --- /dev/null +++ b/gsl-2.5/statistics/wkurtosis_source.c @@ -0,0 +1,62 @@ +/* statistics/wkurtosis_source.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Jim Davies, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +double +FUNCTION(gsl_stats,wkurtosis) (const BASE w[], const size_t wstride, const BASE data[], const size_t stride, const size_t n) +{ + const double wmean = FUNCTION(gsl_stats,wmean)(w, wstride, data, stride, n); + const double wsd = FUNCTION(gsl_stats,wsd_m)(w, wstride, data, stride, n, wmean); + return FUNCTION(gsl_stats,wkurtosis_m_sd)(w, wstride, data, stride, n, wmean, wsd); +} + +double +FUNCTION(gsl_stats,wkurtosis_m_sd) (const BASE w[], const size_t wstride, + const BASE data[], + const size_t stride, + const size_t n, + const double wmean, + const double wsd) +{ + /* takes a dataset and finds the kurtosis */ + + long double wavg = 0, kurtosis; + long double W = 0; + size_t i; + + /* find the fourth moment the deviations, normalized by the sd */ + + /* we use a recurrence relation to stably update a running value so + there aren't any large sums that can overflow */ + + for (i = 0; i < n; i++) + { + BASE wi = w[i * wstride]; + + if (wi > 0) { + const long double x = (data[i * stride] - wmean) / wsd; + W += wi ; + wavg += (x * x * x * x - wavg) * (wi / W); + } + } + + kurtosis = wavg - 3.0; /* makes kurtosis zero for a Gaussian */ + + return kurtosis; +} + diff --git a/gsl-2.5/statistics/wmean.c b/gsl-2.5/statistics/wmean.c new file mode 100644 index 00000000..6cb13282 --- /dev/null +++ b/gsl-2.5/statistics/wmean.c @@ -0,0 +1,21 @@ +#include +#include + +#define BASE_LONG_DOUBLE +#include "templates_on.h" +#include "wmean_source.c" +#include "templates_off.h" +#undef BASE_LONG_DOUBLE + +#define BASE_DOUBLE +#include "templates_on.h" +#include "wmean_source.c" +#include "templates_off.h" +#undef BASE_DOUBLE + +#define BASE_FLOAT +#include "templates_on.h" +#include "wmean_source.c" +#include "templates_off.h" +#undef BASE_FLOAT + diff --git a/gsl-2.5/statistics/wmean.lo b/gsl-2.5/statistics/wmean.lo new file mode 100644 index 00000000..6311aff4 --- /dev/null +++ b/gsl-2.5/statistics/wmean.lo @@ -0,0 +1,12 @@ +# wmean.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/wmean.o' + +# Name of the non-PIC object +non_pic_object='wmean.o' + diff --git a/gsl-2.5/statistics/wmean_source.c b/gsl-2.5/statistics/wmean_source.c new file mode 100644 index 00000000..a8762865 --- /dev/null +++ b/gsl-2.5/statistics/wmean_source.c @@ -0,0 +1,48 @@ +/* statistics/wmean_source.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Jim Davies, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +double +FUNCTION (gsl_stats, wmean) (const BASE w[], const size_t wstride, const BASE data[], const size_t stride, const size_t size) +{ + /* Compute the weighted arithmetic mean M of a dataset using the + recurrence relation + + M(n) = M(n-1) + (data[n] - M(n-1)) (w(n)/(W(n-1) + w(n))) + W(n) = W(n-1) + w(n) + + */ + + long double wmean = 0; + long double W = 0; + + size_t i; + + for (i = 0; i < size; i++) + { + BASE wi = w[i * wstride]; + + if (wi > 0) + { + W += wi; + wmean += (data[i * stride] - wmean) * (wi / W); + } + } + + return wmean; +} diff --git a/gsl-2.5/statistics/wskew.c b/gsl-2.5/statistics/wskew.c new file mode 100644 index 00000000..9e747c6c --- /dev/null +++ b/gsl-2.5/statistics/wskew.c @@ -0,0 +1,22 @@ +#include +#include +#include + +#define BASE_LONG_DOUBLE +#include "templates_on.h" +#include "wskew_source.c" +#include "templates_off.h" +#undef BASE_LONG_DOUBLE + +#define BASE_DOUBLE +#include "templates_on.h" +#include "wskew_source.c" +#include "templates_off.h" +#undef BASE_DOUBLE + +#define BASE_FLOAT +#include "templates_on.h" +#include "wskew_source.c" +#include "templates_off.h" +#undef BASE_FLOAT + diff --git a/gsl-2.5/statistics/wskew.lo b/gsl-2.5/statistics/wskew.lo new file mode 100644 index 00000000..061c258b --- /dev/null +++ b/gsl-2.5/statistics/wskew.lo @@ -0,0 +1,12 @@ +# wskew.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/wskew.o' + +# Name of the non-PIC object +non_pic_object='wskew.o' + diff --git a/gsl-2.5/statistics/wskew_source.c b/gsl-2.5/statistics/wskew_source.c new file mode 100644 index 00000000..a6996686 --- /dev/null +++ b/gsl-2.5/statistics/wskew_source.c @@ -0,0 +1,59 @@ +/* statistics/wskew_source.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Jim Davies, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +double +FUNCTION(gsl_stats,wskew) (const BASE w[], const size_t wstride, const BASE data[], const size_t stride, const size_t n) +{ + const double wmean = FUNCTION(gsl_stats,wmean)(w, wstride, data, stride, n); + const double wsd = FUNCTION(gsl_stats,wsd_m)(w, wstride, data, stride, n, wmean); + return FUNCTION(gsl_stats,wskew_m_sd)(w, wstride, data, stride, n, wmean, wsd); +} + +double +FUNCTION(gsl_stats,wskew_m_sd) (const BASE w[], const size_t wstride, + const BASE data[], + const size_t stride, const size_t n, + const double wmean, const double wsd) +{ + /* Compute the weighted skewness of a dataset */ + + long double wskew = 0; + long double W = 0; + + size_t i; + + /* find the sum of the cubed deviations, normalized by the sd. */ + + /* we use a recurrence relation to stably update a running value so + there aren't any large sums that can overflow */ + + for (i = 0; i < n; i++) + { + BASE wi = w[i * wstride]; + + if (wi > 0) { + const long double x = (data[i * stride] - wmean) / wsd; + W += wi ; + wskew += (x * x * x - wskew) * (wi / W); + } + } + + return wskew; +} + diff --git a/gsl-2.5/statistics/wvariance.c b/gsl-2.5/statistics/wvariance.c new file mode 100644 index 00000000..32626649 --- /dev/null +++ b/gsl-2.5/statistics/wvariance.c @@ -0,0 +1,21 @@ +#include +#include +#include + +#define BASE_LONG_DOUBLE +#include "templates_on.h" +#include "wvariance_source.c" +#include "templates_off.h" +#undef BASE_LONG_DOUBLE + +#define BASE_DOUBLE +#include "templates_on.h" +#include "wvariance_source.c" +#include "templates_off.h" +#undef BASE_DOUBLE + +#define BASE_FLOAT +#include "templates_on.h" +#include "wvariance_source.c" +#include "templates_off.h" +#undef BASE_FLOAT diff --git a/gsl-2.5/statistics/wvariance.lo b/gsl-2.5/statistics/wvariance.lo new file mode 100644 index 00000000..8795b0f4 --- /dev/null +++ b/gsl-2.5/statistics/wvariance.lo @@ -0,0 +1,12 @@ +# wvariance.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/wvariance.o' + +# Name of the non-PIC object +non_pic_object='wvariance.o' + diff --git a/gsl-2.5/statistics/wvariance_source.c b/gsl-2.5/statistics/wvariance_source.c new file mode 100644 index 00000000..a84eba0b --- /dev/null +++ b/gsl-2.5/statistics/wvariance_source.c @@ -0,0 +1,171 @@ +/* statistics/wvariance_source.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007, 2010 Jim Davies, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +static double +FUNCTION(compute,wvariance) (const BASE w[], const size_t wstride, const BASE data[], const size_t stride, const size_t n, const double wmean); + +static double +FUNCTION(compute,wtss) (const BASE w[], const size_t wstride, const BASE data[], const size_t stride, const size_t n, const double wmean); + + +static double +FUNCTION(compute,factor) (const BASE w[], const size_t wstride, const size_t n); + +static double +FUNCTION(compute,wvariance) (const BASE w[], const size_t wstride, const BASE data[], const size_t stride, const size_t n, const double wmean) +{ + /* takes a dataset and finds the weighted variance */ + + long double wvariance = 0 ; + long double W = 0; + + size_t i; + + /* find the sum of the squares */ + for (i = 0; i < n; i++) + { + BASE wi = w[i * wstride]; + + if (wi > 0) { + const long double delta = (data[i * stride] - wmean); + W += wi ; + wvariance += (delta * delta - wvariance) * (wi / W); + } + } + + return wvariance ; +} + +static double +FUNCTION(compute,wtss) (const BASE w[], const size_t wstride, const BASE data[], const size_t stride, const size_t n, const double wmean) +{ + /* takes a dataset and finds the weighted sum of squares about wmean*/ + + long double wtss = 0 ; + size_t i; + + /* find the sum of the squares */ + for (i = 0; i < n; i++) + { + BASE wi = w[i * wstride]; + + if (wi > 0) { + const long double delta = (data[i * stride] - wmean); + wtss += wi * delta * delta; + } + } + + return wtss ; +} + + +static double +FUNCTION(compute,factor) (const BASE w[], const size_t wstride, const size_t n) +{ + /* Find the factor ``N/(N-1)'' which multiplies the raw std dev + see the file doc/statnotes.tex for the derivation */ + + long double a = 0 ; + long double b = 0; + long double factor; + + size_t i; + + /* find the sum of the squares */ + for (i = 0; i < n; i++) + { + BASE wi = w[i * wstride]; + + if (wi > 0) + { + a += wi ; + b += wi * wi ; + } + } + + factor = (a*a) / ((a*a) - b); + + return factor ; +} + +double +FUNCTION(gsl_stats,wvariance_with_fixed_mean) (const BASE w[], const size_t wstride, const BASE data[], const size_t stride, const size_t n, const double wmean) +{ + const double wvariance = FUNCTION(compute,wvariance) (w, wstride, data, stride, n, wmean); + return wvariance; +} + +double +FUNCTION(gsl_stats,wsd_with_fixed_mean) (const BASE w[], const size_t wstride, const BASE data[], const size_t stride, const size_t n, const double wmean) +{ + const double wvariance = FUNCTION(compute,wvariance) (w, wstride, data, stride, n, wmean); + const double wsd = sqrt (wvariance); + + return wsd; +} + + +double +FUNCTION(gsl_stats,wvariance_m) (const BASE w[], const size_t wstride, const BASE data[], const size_t stride, const size_t n, const double wmean) +{ + const double variance = FUNCTION(compute,wvariance) (w, wstride, data, stride, n, wmean); + const double scale = FUNCTION(compute,factor)(w, wstride, n); + + return scale * variance; +} + +double +FUNCTION(gsl_stats,wsd_m) (const BASE w[], const size_t wstride, const BASE data[], const size_t stride, const size_t n, const double wmean) +{ + const double variance = FUNCTION(compute,wvariance) (w, wstride, data, stride, n, wmean); + const double scale = FUNCTION(compute,factor)(w, wstride, n); + const double wsd = sqrt(scale * variance) ; + + return wsd; +} + +double +FUNCTION(gsl_stats,wsd) (const BASE w[], const size_t wstride, const BASE data[], const size_t stride, const size_t n) +{ + const double wmean = FUNCTION(gsl_stats,wmean) (w, wstride, data, stride, n); + return FUNCTION(gsl_stats,wsd_m) (w, wstride, data, stride, n, wmean) ; +} + +double +FUNCTION(gsl_stats,wvariance) (const BASE w[], const size_t wstride, const BASE data[], const size_t stride, const size_t n) +{ + const double wmean = FUNCTION(gsl_stats,wmean) (w, wstride, data, stride, n); + return FUNCTION(gsl_stats,wvariance_m)(w, wstride, data, stride, n, wmean); +} + +double +FUNCTION(gsl_stats,wtss_m) (const BASE w[], const size_t wstride, const BASE data[], const size_t stride, const size_t n, const double wmean) +{ + const double wtss = FUNCTION(compute,wtss) (w, wstride, data, stride, n, wmean); + return wtss; +} + +double +FUNCTION(gsl_stats,wtss) (const BASE w[], const size_t wstride, const BASE data[], const size_t stride, const size_t n) +{ + const double wmean = FUNCTION(gsl_stats,wmean) (w, wstride, data, stride, n); + return FUNCTION(gsl_stats,wtss_m)(w, wstride, data, stride, n, wmean); +} + + diff --git a/gsl-2.5/sum/.deps/levin_u.Plo b/gsl-2.5/sum/.deps/levin_u.Plo new file mode 100644 index 00000000..af9ec63c --- /dev/null +++ b/gsl-2.5/sum/.deps/levin_u.Plo @@ -0,0 +1,174 @@ +levin_u.lo: levin_u.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_math.h /usr/include/math.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_test.h \ + ../gsl/gsl_errno.h /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_sum.h /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/byteswap.h \ + /usr/include/bits/byteswap-16.h /usr/include/sys/types.h \ + /usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib-float.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_test.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_sum.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: diff --git a/gsl-2.5/sum/.deps/levin_utrunc.Plo b/gsl-2.5/sum/.deps/levin_utrunc.Plo new file mode 100644 index 00000000..446c7505 --- /dev/null +++ b/gsl-2.5/sum/.deps/levin_utrunc.Plo @@ -0,0 +1,174 @@ +levin_utrunc.lo: levin_utrunc.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_math.h /usr/include/math.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_test.h \ + ../gsl/gsl_errno.h /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_sum.h /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/byteswap.h \ + /usr/include/bits/byteswap-16.h /usr/include/sys/types.h \ + /usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib-float.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_test.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_sum.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: diff --git a/gsl-2.5/sum/.deps/test.Po b/gsl-2.5/sum/.deps/test.Po new file mode 100644 index 00000000..deb2e3db --- /dev/null +++ b/gsl-2.5/sum/.deps/test.Po @@ -0,0 +1,160 @@ +test.o: test.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_test.h \ + ../gsl/gsl_sum.h ../gsl/gsl_ieee_utils.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_test.h: + +../gsl/gsl_sum.h: + +../gsl/gsl_ieee_utils.h: diff --git a/gsl-2.5/sum/.deps/work_u.Plo b/gsl-2.5/sum/.deps/work_u.Plo new file mode 100644 index 00000000..96797ba0 --- /dev/null +++ b/gsl-2.5/sum/.deps/work_u.Plo @@ -0,0 +1,172 @@ +work_u.lo: work_u.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_math.h /usr/include/math.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_sum.h /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/byteswap.h \ + /usr/include/bits/byteswap-16.h /usr/include/sys/types.h \ + /usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib-float.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_sum.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: diff --git a/gsl-2.5/sum/.deps/work_utrunc.Plo b/gsl-2.5/sum/.deps/work_utrunc.Plo new file mode 100644 index 00000000..8e1caad7 --- /dev/null +++ b/gsl-2.5/sum/.deps/work_utrunc.Plo @@ -0,0 +1,172 @@ +work_utrunc.lo: work_utrunc.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_math.h /usr/include/math.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_sum.h /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/byteswap.h \ + /usr/include/bits/byteswap-16.h /usr/include/sys/types.h \ + /usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib-float.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_sum.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: diff --git a/gsl-2.5/sum/.libs/libgslsum.la b/gsl-2.5/sum/.libs/libgslsum.la new file mode 120000 index 00000000..9f54f481 --- /dev/null +++ b/gsl-2.5/sum/.libs/libgslsum.la @@ -0,0 +1 @@ +../libgslsum.la \ No newline at end of file diff --git a/gsl-2.5/sum/ChangeLog b/gsl-2.5/sum/ChangeLog new file mode 100644 index 00000000..1f784007 --- /dev/null +++ b/gsl-2.5/sum/ChangeLog @@ -0,0 +1,102 @@ +2009-07-09 Brian Gough + + * work_utrunc.c (gsl_sum_levin_utrunc_free): handle NULL argument + in free + + * work_u.c (gsl_sum_levin_u_free): handle NULL argument in free + +2009-06-28 Brian Gough + + * test.c (check_full): allow for case where err_est is zero. + + * levin_u.c (gsl_sum_levin_u_minmax): handle the special case + where the sum has the form 1+0+0+0+... by ignoring trailing zeros. + +2008-07-03 Brian Gough + + * Makefile.am (INCLUDES): use top_srcdir instead of top_builddir + +Thu Dec 21 21:46:54 2000 Brian Gough + + * changed err to abserr, to make it clear that it is an absolute + error in line with other modules. + +Thu Nov 2 20:08:14 2000 Brian Gough + + * added support for a workspace so that the user does not have to + allocate memory + + * made the names of the functions consistent as either levin_u, + for the full u transform with error estimate, or levin_utrunc for + the u transform with only a truncation error estimate. + +Mon Apr 24 21:15:27 2000 Brian Gough + + * gsl_sum.h: added #include for size_t + +Mon Nov 1 12:50:17 1999 Brian Gough + + * test.c (main): added tests using series for the Euler constant + and eta(1/2) + + * resolved problems with spurious failures by replacing the + directly computed truncation error by an estimate which varies + more smoothly. I have used the average of the previous two values, + which seems to give a reliable estimate of the truncation + error. The direct evaluation of the truncation error sometimes + fluctuated wildly, due to cancellation effects. + +Thu Oct 28 12:05:47 1999 Brian Gough + + * test.c: cleaned up tests, now find that everything works in + double-precision but not extended-precision where there are two + failures depending on the optimization level + + * levin_uerr.c (gsl_sum_levin_u_accel_minmax): changed loop + maximum from <=n to + + * levin_u.c levin_uerr.c: changed DBL_MAX to GSL_DBL_MAX since we + don't rely on DBL_MAX + +Sat Feb 6 20:35:26 1999 Brian Gough + + * test.c: adjusted the precision check to allow for "infinite + accuracy" which occurs when two results agree to machine precision + +Thu Nov 19 13:10:19 1998 Brian Gough + + * added an n_used parameter to all routines which gives the number + of terms actually used + +Tue Nov 17 12:31:03 1998 Brian Gough + + * test.c: added #include + + * renamed test_sum.c to test.c + + * renamed all the functions so that _with_derivs is now the + default and _trunc is the case of no error estimates from the + derivatives + + * test_sum.c (main): cleaned up tests + +Mon Nov 9 22:05:45 1998 Brian Gough + + * levin_u.c (gsl_sum_levin_u_accel_minmax): got rid of noise + variables since they aren't used in the non-derivative case + +1998-11-06 + + * test_sum.c: replace variable N by macro to avoid variable length + array warning + +Tue Oct 27 18:06:16 1998 Brian Gough + + * levin_u.c: added in noise but it does not seem to be giving the + right answer for the error estimate. The actual value for the + accelerated sum is correct though. Check toms/602 for the original + algorithm. + diff --git a/gsl-2.5/sum/Makefile b/gsl-2.5/sum/Makefile new file mode 100644 index 00000000..2f49a297 --- /dev/null +++ b/gsl-2.5/sum/Makefile @@ -0,0 +1,1028 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# sum/Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + + + + +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/gsl +pkgincludedir = $(includedir)/gsl +pkglibdir = $(libdir)/gsl +pkglibexecdir = $(libexecdir)/gsl +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = x86_64-unknown-linux-gnu +host_triplet = x86_64-unknown-linux-gnu +check_PROGRAMS = test$(EXEEXT) +subdir = sum +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp \ + $(pkginclude_HEADERS) $(top_srcdir)/test-driver ChangeLog +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +libgslsum_la_LIBADD = +am_libgslsum_la_OBJECTS = levin_u.lo levin_utrunc.lo work_u.lo \ + work_utrunc.lo +libgslsum_la_OBJECTS = $(am_libgslsum_la_OBJECTS) +AM_V_lt = $(am__v_lt_$(V)) +am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) +am__v_lt_0 = --silent +am__v_lt_1 = +am_test_OBJECTS = test.$(OBJEXT) +test_OBJECTS = $(am_test_OBJECTS) +test_DEPENDENCIES = libgslsum.la ../ieee-utils/libgslieeeutils.la \ + ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la \ + ../utils/libutils.la +AM_V_P = $(am__v_P_$(V)) +am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY)) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_$(V)) +am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_$(V)) +am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I. -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_$(V)) +am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_$(V)) +am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libgslsum_la_SOURCES) $(test_SOURCES) +DIST_SOURCES = $(libgslsum_la_SOURCES) $(test_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(pkgincludedir)" +HEADERS = $(pkginclude_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = .test +LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing aclocal-1.13 +AMTAR = $${TAR-tar} +AM_DEFAULT_VERBOSITY = 1 +AR = ar +AS = as +AUTOCONF = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing autoconf +AUTOHEADER = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing autoheader +AUTOMAKE = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing automake-1.13 +AWK = gawk +CC = gcc +CCDEPMODE = depmode=gcc3 +CFLAGS = -g -O2 +CPP = gcc -E +CPPFLAGS = +CYGPATH_W = echo +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +DLLTOOL = false +DSYMUTIL = +DUMPBIN = +ECHO_C = +ECHO_N = -n +ECHO_T = +EGREP = /usr/bin/grep -E +EXEEXT = +FGREP = /usr/bin/grep -F +GREP = /usr/bin/grep +GSLCBLAS_LDFLAGS = +GSL_CFLAGS = -I${prefix}/include +GSL_LDFLAGS = +GSL_LIBADD = +GSL_LIBM = -lm +GSL_LIBS = -L${exec_prefix}/lib -lgsl +GSL_LT_CBLAS_VERSION = 0:0:0 +GSL_LT_VERSION = 24:0:1 +GSL_MAJOR_VERSION = 2 +GSL_MINOR_VERSION = 5 +HAVE_AIX_IEEE_INTERFACE = +HAVE_DARWIN86_IEEE_INTERFACE = +HAVE_DARWIN_IEEE_INTERFACE = +HAVE_FREEBSD_IEEE_INTERFACE = +HAVE_GNUM68K_IEEE_INTERFACE = +HAVE_GNUPPC_IEEE_INTERFACE = +HAVE_GNUSPARC_IEEE_INTERFACE = +HAVE_GNUX86_IEEE_INTERFACE = +HAVE_HPUX11_IEEE_INTERFACE = +HAVE_HPUX_IEEE_INTERFACE = +HAVE_IRIX_IEEE_INTERFACE = +HAVE_NETBSD_IEEE_INTERFACE = +HAVE_OPENBSD_IEEE_INTERFACE = +HAVE_OS2EMX_IEEE_INTERFACE = +HAVE_SOLARIS_IEEE_INTERFACE = +HAVE_SUNOS4_IEEE_INTERFACE = +HAVE_TRU64_IEEE_INTERFACE = +INSTALL = /usr/bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = $(install_sh) -c -s +LD = /usr/bin/ld -m elf_x86_64 +LDFLAGS = +LIBM = -lm +LIBOBJS = +LIBS = -lm +LIBTOOL = $(SHELL) $(top_builddir)/libtool +LIPO = +LN_S = ln -s +LTLIBOBJS = +MAINT = # +MAKEINFO = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing makeinfo +MANIFEST_TOOL = : +MKDIR_P = /usr/bin/mkdir -p +NM = /usr/bin/nm -B +NMEDIT = +OBJDUMP = objdump +OBJEXT = o +OTOOL = +OTOOL64 = +PACKAGE = gsl +PACKAGE_BUGREPORT = +PACKAGE_NAME = gsl +PACKAGE_STRING = gsl 2.5 +PACKAGE_TARNAME = gsl +PACKAGE_URL = +PACKAGE_VERSION = 2.5 +PATH_SEPARATOR = : +RANLIB = ranlib +SED = /usr/bin/sed +SET_MAKE = +SHELL = /bin/sh +STRIP = strip +VERSION = 2.5 +abs_builddir = /home/groups/kipac/chto/package/gsl/gsl-2.5/sum +abs_srcdir = /home/groups/kipac/chto/package/gsl/gsl-2.5/sum +abs_top_builddir = /home/groups/kipac/chto/package/gsl/gsl-2.5 +abs_top_srcdir = /home/groups/kipac/chto/package/gsl/gsl-2.5 +ac_ct_AR = ar +ac_ct_CC = gcc +ac_ct_DUMPBIN = +am__include = include +am__leading_dot = . +am__quote = +am__tar = $${TAR-tar} chof - "$$tardir" +am__untar = $${TAR-tar} xf - +bindir = ${exec_prefix}/bin +build = x86_64-unknown-linux-gnu +build_alias = +build_cpu = x86_64 +build_os = linux-gnu +build_vendor = unknown +builddir = . +datadir = ${datarootdir} +datarootdir = ${prefix}/share +docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} +dvidir = ${docdir} +exec_prefix = ${prefix} +host = x86_64-unknown-linux-gnu +host_alias = +host_cpu = x86_64 +host_os = linux-gnu +host_vendor = unknown +htmldir = ${docdir} +includedir = ${prefix}/include +infodir = ${datarootdir}/info +install_sh = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/install-sh +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +localedir = ${datarootdir}/locale +localstatedir = ${prefix}/var +mandir = ${datarootdir}/man +mkdir_p = $(MKDIR_P) +oldincludedir = /usr/include +pdfdir = ${docdir} +prefix = /home/groups/kipac/chto/package/gsl/gsl_lib +program_transform_name = s,x,x, +psdir = ${docdir} +sbindir = ${exec_prefix}/sbin +sharedstatedir = ${prefix}/com +srcdir = . +sysconfdir = ${prefix}/etc +target_alias = +top_build_prefix = ../ +top_builddir = .. +top_srcdir = .. +noinst_LTLIBRARIES = libgslsum.la +pkginclude_HEADERS = gsl_sum.h +AM_CPPFLAGS = -I$(top_srcdir) +libgslsum_la_SOURCES = levin_u.c levin_utrunc.c work_u.c work_utrunc.c +TESTS = $(check_PROGRAMS) +test_LDADD = libgslsum.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la +test_SOURCES = test.c +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu sum/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu sum/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: # $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): # $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libgslsum.la: $(libgslsum_la_OBJECTS) $(libgslsum_la_DEPENDENCIES) $(EXTRA_libgslsum_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(libgslsum_la_OBJECTS) $(libgslsum_la_LIBADD) $(LIBS) + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) $(EXTRA_test_DEPENDENCIES) + @rm -f test$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_OBJECTS) $(test_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +include ./$(DEPDIR)/levin_u.Plo +include ./$(DEPDIR)/levin_utrunc.Plo +include ./$(DEPDIR)/test.Po +include ./$(DEPDIR)/work_u.Plo +include ./$(DEPDIR)/work_utrunc.Plo + +.c.o: + $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# $(AM_V_CC)source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(COMPILE) -c $< + +.c.obj: + $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# $(AM_V_CC)source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: + $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +# $(AM_V_CC)source='$<' object='$@' libtool=yes \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-pkgincludeHEADERS: $(pkginclude_HEADERS) + @$(NORMAL_INSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \ + done + +uninstall-pkgincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + else \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_PROGRAMS) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +test.log: test$(EXEEXT) + @p='test$(EXEEXT)'; \ + b='test'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +#.test$(EXEEXT).log: +# @p='$<'; \ +# $(am__set_b); \ +# $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +# --log-file $$b.log --trs-file $$b.trs \ +# $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +# "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-am +all-am: Makefile $(LTLIBRARIES) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(pkgincludedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-pkgincludeHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-pkgincludeHEADERS + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES cscopelist-am ctags ctags-am distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-pkgincludeHEADERS \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + recheck tags tags-am uninstall uninstall-am \ + uninstall-pkgincludeHEADERS + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gsl-2.5/sum/Makefile.am b/gsl-2.5/sum/Makefile.am new file mode 100644 index 00000000..b3c6c2ca --- /dev/null +++ b/gsl-2.5/sum/Makefile.am @@ -0,0 +1,17 @@ +noinst_LTLIBRARIES = libgslsum.la + +pkginclude_HEADERS = gsl_sum.h + +AM_CPPFLAGS = -I$(top_srcdir) + +libgslsum_la_SOURCES = levin_u.c levin_utrunc.c work_u.c work_utrunc.c + +TESTS = $(check_PROGRAMS) + +check_PROGRAMS = test + +test_LDADD = libgslsum.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la + +test_SOURCES = test.c + + diff --git a/gsl-2.5/sum/Makefile.in b/gsl-2.5/sum/Makefile.in new file mode 100644 index 00000000..b86a442e --- /dev/null +++ b/gsl-2.5/sum/Makefile.in @@ -0,0 +1,1028 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + + +VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +check_PROGRAMS = test$(EXEEXT) +subdir = sum +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp \ + $(pkginclude_HEADERS) $(top_srcdir)/test-driver ChangeLog +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +libgslsum_la_LIBADD = +am_libgslsum_la_OBJECTS = levin_u.lo levin_utrunc.lo work_u.lo \ + work_utrunc.lo +libgslsum_la_OBJECTS = $(am_libgslsum_la_OBJECTS) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +am_test_OBJECTS = test.$(OBJEXT) +test_OBJECTS = $(am_test_OBJECTS) +test_DEPENDENCIES = libgslsum.la ../ieee-utils/libgslieeeutils.la \ + ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la \ + ../utils/libutils.la +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libgslsum_la_SOURCES) $(test_SOURCES) +DIST_SOURCES = $(libgslsum_la_SOURCES) $(test_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(pkgincludedir)" +HEADERS = $(pkginclude_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = @EXEEXT@ .test +LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +GSLCBLAS_LDFLAGS = @GSLCBLAS_LDFLAGS@ +GSL_CFLAGS = @GSL_CFLAGS@ +GSL_LDFLAGS = @GSL_LDFLAGS@ +GSL_LIBADD = @GSL_LIBADD@ +GSL_LIBM = @GSL_LIBM@ +GSL_LIBS = @GSL_LIBS@ +GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ +GSL_LT_VERSION = @GSL_LT_VERSION@ +GSL_MAJOR_VERSION = @GSL_MAJOR_VERSION@ +GSL_MINOR_VERSION = @GSL_MINOR_VERSION@ +HAVE_AIX_IEEE_INTERFACE = @HAVE_AIX_IEEE_INTERFACE@ +HAVE_DARWIN86_IEEE_INTERFACE = @HAVE_DARWIN86_IEEE_INTERFACE@ +HAVE_DARWIN_IEEE_INTERFACE = @HAVE_DARWIN_IEEE_INTERFACE@ +HAVE_FREEBSD_IEEE_INTERFACE = @HAVE_FREEBSD_IEEE_INTERFACE@ +HAVE_GNUM68K_IEEE_INTERFACE = @HAVE_GNUM68K_IEEE_INTERFACE@ +HAVE_GNUPPC_IEEE_INTERFACE = @HAVE_GNUPPC_IEEE_INTERFACE@ +HAVE_GNUSPARC_IEEE_INTERFACE = @HAVE_GNUSPARC_IEEE_INTERFACE@ +HAVE_GNUX86_IEEE_INTERFACE = @HAVE_GNUX86_IEEE_INTERFACE@ +HAVE_HPUX11_IEEE_INTERFACE = @HAVE_HPUX11_IEEE_INTERFACE@ +HAVE_HPUX_IEEE_INTERFACE = @HAVE_HPUX_IEEE_INTERFACE@ +HAVE_IRIX_IEEE_INTERFACE = @HAVE_IRIX_IEEE_INTERFACE@ +HAVE_NETBSD_IEEE_INTERFACE = @HAVE_NETBSD_IEEE_INTERFACE@ +HAVE_OPENBSD_IEEE_INTERFACE = @HAVE_OPENBSD_IEEE_INTERFACE@ +HAVE_OS2EMX_IEEE_INTERFACE = @HAVE_OS2EMX_IEEE_INTERFACE@ +HAVE_SOLARIS_IEEE_INTERFACE = @HAVE_SOLARIS_IEEE_INTERFACE@ +HAVE_SUNOS4_IEEE_INTERFACE = @HAVE_SUNOS4_IEEE_INTERFACE@ +HAVE_TRU64_IEEE_INTERFACE = @HAVE_TRU64_IEEE_INTERFACE@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBM = @LIBM@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +noinst_LTLIBRARIES = libgslsum.la +pkginclude_HEADERS = gsl_sum.h +AM_CPPFLAGS = -I$(top_srcdir) +libgslsum_la_SOURCES = levin_u.c levin_utrunc.c work_u.c work_utrunc.c +TESTS = $(check_PROGRAMS) +test_LDADD = libgslsum.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la +test_SOURCES = test.c +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu sum/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu sum/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libgslsum.la: $(libgslsum_la_OBJECTS) $(libgslsum_la_DEPENDENCIES) $(EXTRA_libgslsum_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(libgslsum_la_OBJECTS) $(libgslsum_la_LIBADD) $(LIBS) + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) $(EXTRA_test_DEPENDENCIES) + @rm -f test$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_OBJECTS) $(test_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/levin_u.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/levin_utrunc.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/work_u.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/work_utrunc.Plo@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-pkgincludeHEADERS: $(pkginclude_HEADERS) + @$(NORMAL_INSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \ + done + +uninstall-pkgincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + else \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_PROGRAMS) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +test.log: test$(EXEEXT) + @p='test$(EXEEXT)'; \ + b='test'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +@am__EXEEXT_TRUE@.test$(EXEEXT).log: +@am__EXEEXT_TRUE@ @p='$<'; \ +@am__EXEEXT_TRUE@ $(am__set_b); \ +@am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +@am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ +@am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +@am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-am +all-am: Makefile $(LTLIBRARIES) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(pkgincludedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-pkgincludeHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-pkgincludeHEADERS + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES cscopelist-am ctags ctags-am distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-pkgincludeHEADERS \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + recheck tags tags-am uninstall uninstall-am \ + uninstall-pkgincludeHEADERS + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gsl-2.5/sum/gsl_sum.h b/gsl-2.5/sum/gsl_sum.h new file mode 100644 index 00000000..d9c4da81 --- /dev/null +++ b/gsl-2.5/sum/gsl_sum.h @@ -0,0 +1,162 @@ +/* sum/gsl_sum.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ + + +#ifndef __GSL_SUM_H__ +#define __GSL_SUM_H__ + +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +/* Workspace for Levin U Transform with error estimation, + * + * size = number of terms the workspace can handle + * sum_plain = simple sum of series + * q_num = backward diagonal of numerator; length = size + * q_den = backward diagonal of denominator; length = size + * dq_num = table of numerator derivatives; length = size**2 + * dq_den = table of denominator derivatives; length = size**2 + * dsum = derivative of sum wrt term i; length = size + */ + +typedef struct +{ + size_t size; + size_t i; /* position in array */ + size_t terms_used; /* number of calls */ + double sum_plain; + double *q_num; + double *q_den; + double *dq_num; + double *dq_den; + double *dsum; +} +gsl_sum_levin_u_workspace; + +gsl_sum_levin_u_workspace *gsl_sum_levin_u_alloc (size_t n); +void gsl_sum_levin_u_free (gsl_sum_levin_u_workspace * w); + +/* Basic Levin-u acceleration method. + * + * array = array of series elements + * n = size of array + * sum_accel = result of summation acceleration + * err = estimated error + * + * See [Fessler et al., ACM TOMS 9, 346 (1983) and TOMS-602] + */ + +int gsl_sum_levin_u_accel (const double *array, + const size_t n, + gsl_sum_levin_u_workspace * w, + double *sum_accel, double *abserr); + +/* Basic Levin-u acceleration method with constraints on the terms + * used, + * + * array = array of series elements + * n = size of array + * min_terms = minimum number of terms to sum + * max_terms = maximum number of terms to sum + * sum_accel = result of summation acceleration + * err = estimated error + * + * See [Fessler et al., ACM TOMS 9, 346 (1983) and TOMS-602] + */ + +int gsl_sum_levin_u_minmax (const double *array, + const size_t n, + const size_t min_terms, + const size_t max_terms, + gsl_sum_levin_u_workspace * w, + double *sum_accel, double *abserr); + +/* Basic Levin-u step w/o reference to the array of terms. + * We only need to specify the value of the current term + * to execute the step. See TOMS-745. + * + * sum = t0 + ... + t_{n-1} + term; term = t_{n} + * + * term = value of the series term to be added + * n = position of term in series (starting from 0) + * sum_accel = result of summation acceleration + * sum_plain = simple sum of series + */ + +int +gsl_sum_levin_u_step (const double term, + const size_t n, + const size_t nmax, + gsl_sum_levin_u_workspace * w, + double *sum_accel); + +/* The following functions perform the same calculation without + estimating the errors. They require O(N) storage instead of O(N^2). + This may be useful for summing many similar series where the size + of the error has already been estimated reliably and is not + expected to change. */ + +typedef struct +{ + size_t size; + size_t i; /* position in array */ + size_t terms_used; /* number of calls */ + double sum_plain; + double *q_num; + double *q_den; + double *dsum; +} +gsl_sum_levin_utrunc_workspace; + +gsl_sum_levin_utrunc_workspace *gsl_sum_levin_utrunc_alloc (size_t n); +void gsl_sum_levin_utrunc_free (gsl_sum_levin_utrunc_workspace * w); + +int gsl_sum_levin_utrunc_accel (const double *array, + const size_t n, + gsl_sum_levin_utrunc_workspace * w, + double *sum_accel, double *abserr_trunc); + +int gsl_sum_levin_utrunc_minmax (const double *array, + const size_t n, + const size_t min_terms, + const size_t max_terms, + gsl_sum_levin_utrunc_workspace * w, + double *sum_accel, double *abserr_trunc); + +int gsl_sum_levin_utrunc_step (const double term, + const size_t n, + gsl_sum_levin_utrunc_workspace * w, + double *sum_accel); + +__END_DECLS + +#endif /* __GSL_SUM_H__ */ diff --git a/gsl-2.5/sum/levin_u.c b/gsl-2.5/sum/levin_u.c new file mode 100644 index 00000000..81dcc75e --- /dev/null +++ b/gsl-2.5/sum/levin_u.c @@ -0,0 +1,262 @@ +/* sum/levin_u.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007, 2009 Gerard Jungman, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include + +int +gsl_sum_levin_u_accel (const double *array, const size_t array_size, + gsl_sum_levin_u_workspace * w, + double *sum_accel, double *abserr) +{ + return gsl_sum_levin_u_minmax (array, array_size, + 0, array_size - 1, w, sum_accel, abserr); +} + +int +gsl_sum_levin_u_minmax (const double *array, const size_t array_size, + const size_t min_terms, const size_t max_terms, + gsl_sum_levin_u_workspace * w, + double *sum_accel, double *abserr) +{ + /* Ignore any trailing zeros in the array */ + size_t size = array_size; + + while (size > 0 && array[size - 1] == 0) { + size--; + } + + if (size == 0) + { + *sum_accel = 0.0; + *abserr = 0.0; + w->sum_plain = 0.0; + w->terms_used = 0; + return GSL_SUCCESS; + } + else if (size == 1) + { + *sum_accel = array[0]; + *abserr = 0.0; + w->sum_plain = array[0]; + w->terms_used = 1; + return GSL_SUCCESS; + } + else + { + const double SMALL = 0.01; + const size_t nmax = GSL_MAX (max_terms, array_size) - 1; + double noise_n = 0.0, noise_nm1 = 0.0; + double trunc_n = 0.0, trunc_nm1 = 0.0; + double actual_trunc_n = 0.0, actual_trunc_nm1 = 0.0; + double result_n = 0.0, result_nm1 = 0.0; + double variance = 0; + size_t n; + unsigned int i; + int better = 0; + int before = 0; + int converging = 0; + double least_trunc = GSL_DBL_MAX; + double least_trunc_noise = GSL_DBL_MAX; + double least_trunc_result; + + /* Calculate specified minimum number of terms. No convergence + tests are made, and no truncation information is stored. */ + + for (n = 0; n < min_terms; n++) + { + const double t = array[n]; + result_nm1 = result_n; + gsl_sum_levin_u_step (t, n, nmax, w, &result_n); + } + + least_trunc_result = result_n; + + variance = 0; + for (i = 0; i < n; i++) + { + double dn = w->dsum[i] * GSL_MACH_EPS * array[i]; + variance += dn * dn; + } + noise_n = sqrt (variance); + + /* Calculate up to maximum number of terms. Check truncation + condition. */ + + for (; n <= nmax; n++) + { + const double t = array[n]; + + result_nm1 = result_n; + gsl_sum_levin_u_step (t, n, nmax, w, &result_n); + + /* Compute the truncation error directly */ + + actual_trunc_nm1 = actual_trunc_n; + actual_trunc_n = fabs (result_n - result_nm1); + + /* Average results to make a more reliable estimate of the + real truncation error */ + + trunc_nm1 = trunc_n; + trunc_n = 0.5 * (actual_trunc_n + actual_trunc_nm1); + + noise_nm1 = noise_n; + variance = 0; + + for (i = 0; i <= n; i++) + { + double dn = w->dsum[i] * GSL_MACH_EPS * array[i]; + variance += dn * dn; + } + + noise_n = sqrt (variance); + + /* Determine if we are in the convergence region. */ + + better = (trunc_n < trunc_nm1 || trunc_n < SMALL * fabs (result_n)); + converging = converging || (better && before); + before = better; + + if (converging) + { + if (trunc_n < least_trunc) + { + /* Found a low truncation point in the convergence + region. Save it. */ + + least_trunc_result = result_n; + least_trunc = trunc_n; + least_trunc_noise = noise_n; + } + + if (noise_n > trunc_n / 3.0) + break; + + if (trunc_n < 10.0 * GSL_MACH_EPS * fabs (result_n)) + break; + } + + } + + if (converging) + { + /* Stopped in the convergence region. Return result and + error estimate. */ + + *sum_accel = least_trunc_result; + *abserr = GSL_MAX_DBL (least_trunc, least_trunc_noise); + w->terms_used = n; + return GSL_SUCCESS; + } + else + { + /* Never reached the convergence region. Use the last + calculated values. */ + + *sum_accel = result_n; + *abserr = GSL_MAX_DBL (trunc_n, noise_n); + w->terms_used = n; + return GSL_SUCCESS; + } + } +} + + +int +gsl_sum_levin_u_step (const double term, const size_t n, const size_t nmax, + gsl_sum_levin_u_workspace * w, double *sum_accel) +{ + +#define I(i,j) ((i)*(nmax+1) + (j)) + + if (n == 0) + { + *sum_accel = term; + w->sum_plain = term; + + w->q_den[0] = 1.0 / term; + w->q_num[0] = 1.0; + + w->dq_den[I (0, 0)] = -1.0 / (term * term); + w->dq_num[I (0, 0)] = 0.0; + + w->dsum[0] = 1.0; + + return GSL_SUCCESS; + } + else + { + double result; + double factor = 1.0; + double ratio = (double) n / (n + 1.0); + unsigned int i; + int j; + + w->sum_plain += term; + + w->q_den[n] = 1.0 / (term * (n + 1.0) * (n + 1.0)); + w->q_num[n] = w->sum_plain * w->q_den[n]; + + for (i = 0; i < n; i++) + { + w->dq_den[I (i, n)] = 0; + w->dq_num[I (i, n)] = w->q_den[n]; + } + + w->dq_den[I (n, n)] = -w->q_den[n] / term; + w->dq_num[I (n, n)] = + w->q_den[n] + w->sum_plain * (w->dq_den[I (n, n)]); + + for (j = n - 1; j >= 0; j--) + { + double c = factor * (j + 1) / (n + 1); + factor *= ratio; + w->q_den[j] = w->q_den[j + 1] - c * w->q_den[j]; + w->q_num[j] = w->q_num[j + 1] - c * w->q_num[j]; + + for (i = 0; i < n; i++) + { + w->dq_den[I (i, j)] = + w->dq_den[I (i, j + 1)] - c * w->dq_den[I (i, j)]; + w->dq_num[I (i, j)] = + w->dq_num[I (i, j + 1)] - c * w->dq_num[I (i, j)]; + } + + w->dq_den[I (n, j)] = w->dq_den[I (n, j + 1)]; + w->dq_num[I (n, j)] = w->dq_num[I (n, j + 1)]; + } + + result = w->q_num[0] / w->q_den[0]; + + *sum_accel = result; + + for (i = 0; i <= n; i++) + { + w->dsum[i] = + (w->dq_num[I (i, 0)] - + result * w->dq_den[I (i, 0)]) / w->q_den[0]; + } + + return GSL_SUCCESS; + } +} diff --git a/gsl-2.5/sum/levin_u.lo b/gsl-2.5/sum/levin_u.lo new file mode 100644 index 00000000..4981c2c2 --- /dev/null +++ b/gsl-2.5/sum/levin_u.lo @@ -0,0 +1,12 @@ +# levin_u.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/levin_u.o' + +# Name of the non-PIC object +non_pic_object='levin_u.o' + diff --git a/gsl-2.5/sum/levin_utrunc.c b/gsl-2.5/sum/levin_utrunc.c new file mode 100644 index 00000000..03bf8bc0 --- /dev/null +++ b/gsl-2.5/sum/levin_utrunc.c @@ -0,0 +1,202 @@ +/* sum/levin_utrunc.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ + +#include +#include +#include +#include +#include + +int +gsl_sum_levin_utrunc_accel (const double *array, + const size_t array_size, + gsl_sum_levin_utrunc_workspace * w, + double *sum_accel, double *abserr_trunc) +{ + return gsl_sum_levin_utrunc_minmax (array, array_size, + 0, array_size - 1, + w, sum_accel, abserr_trunc); +} + + +int +gsl_sum_levin_utrunc_minmax (const double *array, + const size_t array_size, + const size_t min_terms, + const size_t max_terms, + gsl_sum_levin_utrunc_workspace * w, + double *sum_accel, double *abserr_trunc) +{ + if (array_size == 0) + { + *sum_accel = 0.0; + *abserr_trunc = 0.0; + w->sum_plain = 0.0; + w->terms_used = 0; + return GSL_SUCCESS; + } + else if (array_size == 1) + { + *sum_accel = array[0]; + *abserr_trunc = GSL_POSINF; + w->sum_plain = array[0]; + w->terms_used = 1; + return GSL_SUCCESS; + } + else + { + const double SMALL = 0.01; + const size_t nmax = GSL_MAX (max_terms, array_size) - 1; + double trunc_n = 0.0, trunc_nm1 = 0.0; + double actual_trunc_n = 0.0, actual_trunc_nm1 = 0.0; + double result_n = 0.0, result_nm1 = 0.0; + size_t n; + int better = 0; + int before = 0; + int converging = 0; + double least_trunc = GSL_DBL_MAX; + double result_least_trunc; + + /* Calculate specified minimum number of terms. No convergence + tests are made, and no truncation information is stored. */ + + for (n = 0; n < min_terms; n++) + { + const double t = array[n]; + + result_nm1 = result_n; + gsl_sum_levin_utrunc_step (t, n, w, &result_n); + } + + /* Assume the result after the minimum calculation is the best. */ + + result_least_trunc = result_n; + + /* Calculate up to maximum number of terms. Check truncation + condition. */ + + for (; n <= nmax; n++) + { + const double t = array[n]; + + result_nm1 = result_n; + gsl_sum_levin_utrunc_step (t, n, w, &result_n); + + /* Compute the truncation error directly */ + + actual_trunc_nm1 = actual_trunc_n; + actual_trunc_n = fabs (result_n - result_nm1); + + /* Average results to make a more reliable estimate of the + real truncation error */ + + trunc_nm1 = trunc_n; + trunc_n = 0.5 * (actual_trunc_n + actual_trunc_nm1); + + /* Determine if we are in the convergence region. */ + + better = (trunc_n < trunc_nm1 || trunc_n < SMALL * fabs (result_n)); + converging = converging || (better && before); + before = better; + + if (converging) + { + if (trunc_n < least_trunc) + { + /* Found a low truncation point in the convergence + region. Save it. */ + + least_trunc = trunc_n; + result_least_trunc = result_n; + } + + if (fabs (trunc_n / result_n) < 10.0 * GSL_MACH_EPS) + break; + } + } + + if (converging) + { + /* Stopped in the convergence region. Return result and + error estimate. */ + + *sum_accel = result_least_trunc; + *abserr_trunc = least_trunc; + w->terms_used = n; + return GSL_SUCCESS; + } + else + { + /* Never reached the convergence region. Use the last + calculated values. */ + + *sum_accel = result_n; + *abserr_trunc = trunc_n; + w->terms_used = n; + return GSL_SUCCESS; + } + } +} + +int +gsl_sum_levin_utrunc_step (const double term, + const size_t n, + gsl_sum_levin_utrunc_workspace * w, double *sum_accel) +{ + if (term == 0.0) + { + /* This is actually harmless when treated in this way. A term + which is exactly zero is simply ignored; the state is not + changed. We return GSL_EZERODIV as an indicator that this + occured. */ + + return GSL_EZERODIV; + } + else if (n == 0) + { + *sum_accel = term; + w->sum_plain = term; + w->q_den[0] = 1.0 / term; + w->q_num[0] = 1.0; + return GSL_SUCCESS; + } + else + { + double factor = 1.0; + double ratio = (double) n / (n + 1.0); + int j; + + w->sum_plain += term; + w->q_den[n] = 1.0 / (term * (n + 1.0) * (n + 1.0)); + w->q_num[n] = w->sum_plain * w->q_den[n]; + + for (j = n - 1; j >= 0; j--) + { + double c = factor * (j + 1) / (n + 1); + factor *= ratio; + w->q_den[j] = w->q_den[j + 1] - c * w->q_den[j]; + w->q_num[j] = w->q_num[j + 1] - c * w->q_num[j]; + } + + *sum_accel = w->q_num[0] / w->q_den[0]; + return GSL_SUCCESS; + } +} diff --git a/gsl-2.5/sum/levin_utrunc.lo b/gsl-2.5/sum/levin_utrunc.lo new file mode 100644 index 00000000..30fc8b80 --- /dev/null +++ b/gsl-2.5/sum/levin_utrunc.lo @@ -0,0 +1,12 @@ +# levin_utrunc.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/levin_utrunc.o' + +# Name of the non-PIC object +non_pic_object='levin_utrunc.o' + diff --git a/gsl-2.5/sum/libgslsum.la b/gsl-2.5/sum/libgslsum.la new file mode 100644 index 00000000..1aabcc54 --- /dev/null +++ b/gsl-2.5/sum/libgslsum.la @@ -0,0 +1,41 @@ +# libgslsum.la - a libtool library file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='' + +# Names of this library. +library_names='' + +# The name of the static archive. +old_library='libgslsum.a' + +# Linker flags that can not go in dependency_libs. +inherited_linker_flags='' + +# Libraries that this one depends upon. +dependency_libs=' -lm' + +# Names of additional weak libraries provided by this library +weak_library_names='' + +# Version information for libgslsum. +current= +age= +revision= + +# Is this an already installed library? +installed=no + +# Should we warn about portability when linking against -modules? +shouldnotlink=no + +# Files to dlopen/dlpreopen +dlopen='' +dlpreopen='' + +# Directory that this library needs to be installed in: +libdir='' diff --git a/gsl-2.5/sum/test b/gsl-2.5/sum/test new file mode 100755 index 00000000..2a1865c8 Binary files /dev/null and b/gsl-2.5/sum/test differ diff --git a/gsl-2.5/sum/test-suite.log b/gsl-2.5/sum/test-suite.log new file mode 100644 index 00000000..331d1a38 --- /dev/null +++ b/gsl-2.5/sum/test-suite.log @@ -0,0 +1,14 @@ +================================= + gsl 2.5: sum/test-suite.log +================================= + +# TOTAL: 1 +# PASS: 1 +# SKIP: 0 +# XFAIL: 0 +# FAIL: 0 +# XPASS: 0 +# ERROR: 0 + +.. contents:: :depth: 2 + diff --git a/gsl-2.5/sum/test.c b/gsl-2.5/sum/test.c new file mode 100644 index 00000000..1af39fa6 --- /dev/null +++ b/gsl-2.5/sum/test.c @@ -0,0 +1,250 @@ +/* sum/test.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ + +#include +#include +#include +#include +#include +#include + +#include + +#define N 50 + +void check_trunc (double * t, double expected, const char * desc); +void check_full (double * t, double expected, const char * desc); + +int +main (void) +{ + gsl_ieee_env_setup (); + + { + double t[N]; + int n; + + const double zeta_2 = M_PI * M_PI / 6.0; + + /* terms for zeta(2) */ + + for (n = 0; n < N; n++) + { + double np1 = n + 1.0; + t[n] = 1.0 / (np1 * np1); + } + + check_trunc (t, zeta_2, "zeta(2)"); + check_full (t, zeta_2, "zeta(2)"); + } + + { + double t[N]; + double x, y; + int n; + + /* terms for exp(10.0) */ + x = 10.0; + y = exp(x); + + t[0] = 1.0; + for (n = 1; n < N; n++) + { + t[n] = t[n - 1] * (x / n); + } + + check_trunc (t, y, "exp(10)"); + check_full (t, y, "exp(10)"); + } + + { + double t[N]; + double x, y; + int n; + + /* terms for exp(-10.0) */ + x = -10.0; + y = exp(x); + + t[0] = 1.0; + for (n = 1; n < N; n++) + { + t[n] = t[n - 1] * (x / n); + } + + check_trunc (t, y, "exp(-10)"); + check_full (t, y, "exp(-10)"); + } + + { + double t[N]; + double x, y; + int n; + + /* terms for -log(1-x) */ + x = 0.5; + y = -log(1-x); + t[0] = x; + for (n = 1; n < N; n++) + { + t[n] = t[n - 1] * (x * n) / (n + 1.0); + } + + check_trunc (t, y, "-log(1/2)"); + check_full (t, y, "-log(1/2)"); + } + + { + double t[N]; + double x, y; + int n; + + /* terms for -log(1-x) */ + x = -1.0; + y = -log(1-x); + t[0] = x; + for (n = 1; n < N; n++) + { + t[n] = t[n - 1] * (x * n) / (n + 1.0); + } + + check_trunc (t, y, "-log(2)"); + check_full (t, y, "-log(2)"); + } + + { + double t[N]; + int n; + + double result = 0.192594048773; + + /* terms for an alternating asymptotic series */ + + t[0] = 3.0 / (M_PI * M_PI); + + for (n = 1; n < N; n++) + { + t[n] = -t[n - 1] * (4.0 * (n + 1.0) - 1.0) / (M_PI * M_PI); + } + + check_trunc (t, result, "asymptotic series"); + check_full (t, result, "asymptotic series"); + } + + { + double t[N]; + int n; + + /* Euler's gamma from GNU Calc (precision = 32) */ + + double result = 0.5772156649015328606065120900824; + + /* terms for Euler's gamma */ + + t[0] = 1.0; + + for (n = 1; n < N; n++) + { + t[n] = 1/(n+1.0) + log(n/(n+1.0)); + } + + check_trunc (t, result, "Euler's constant"); + check_full (t, result, "Euler's constant"); + } + + { + double t[N]; + int n; + + /* eta(1/2) = sum_{k=1}^{\infty} (-1)^(k+1) / sqrt(k) + + From Levin, Intern. J. Computer Math. B3:371--388, 1973. + + I=(1-sqrt(2))zeta(1/2) + =(2/sqrt(pi))*integ(1/(exp(x^2)+1),x,0,inf) */ + + double result = 0.6048986434216305; /* approx */ + + /* terms for eta(1/2) */ + + for (n = 0; n < N; n++) + { + t[n] = (n%2 ? -1 : 1) * 1.0 /sqrt(n + 1.0); + } + + check_trunc (t, result, "eta(1/2)"); + check_full (t, result, "eta(1/2)"); + } + + { + double t[N]; + int n; + + double result = 1.23; + + for (n = 0; n < N; n++) + { + t[n] = (n == 0) ? 1.23 : 0.0; + } + + check_trunc (t, result, "1.23 + 0 + 0 + 0..."); + check_full (t, result, "1.23 + 0 + 0 + 0..."); + } + + + exit (gsl_test_summary ()); +} + +void +check_trunc (double * t, double expected, const char * desc) +{ + double sum_accel, prec; + + gsl_sum_levin_utrunc_workspace * w = gsl_sum_levin_utrunc_alloc (N); + + gsl_sum_levin_utrunc_accel (t, N, w, &sum_accel, &prec); + gsl_test_rel (sum_accel, expected, 1e-8, "trunc result, %s", desc); + + /* No need to check precision for truncated result since this is not + a meaningful number */ + + gsl_sum_levin_utrunc_free (w); +} + +void +check_full (double * t, double expected, const char * desc) +{ + double sum_accel, err_est, sd_actual, sd_est; + + gsl_sum_levin_u_workspace * w = gsl_sum_levin_u_alloc (N); + + gsl_sum_levin_u_accel (t, N, w, &sum_accel, &err_est); + gsl_test_rel (sum_accel, expected, 1e-8, "full result, %s", desc); + + sd_est = -log10 (err_est/fabs(sum_accel) + GSL_DBL_EPSILON); + sd_actual = -log10 (DBL_EPSILON + fabs ((sum_accel - expected)/expected)); + + /* Allow one digit of slop */ + + gsl_test (sd_est > sd_actual + 1.0, "full significant digits, %s (%g vs %g)", desc, sd_est, sd_actual); + + gsl_sum_levin_u_free (w); +} diff --git a/gsl-2.5/sum/test.log b/gsl-2.5/sum/test.log new file mode 100644 index 00000000..7bec36e1 --- /dev/null +++ b/gsl-2.5/sum/test.log @@ -0,0 +1 @@ +Completed [27/27] diff --git a/gsl-2.5/sum/test.trs b/gsl-2.5/sum/test.trs new file mode 100644 index 00000000..3f0f396c --- /dev/null +++ b/gsl-2.5/sum/test.trs @@ -0,0 +1,4 @@ +:test-result: PASS +:global-test-result: PASS +:recheck: no +:copy-in-global-log: no diff --git a/gsl-2.5/sum/work_u.c b/gsl-2.5/sum/work_u.c new file mode 100644 index 00000000..32a1fe80 --- /dev/null +++ b/gsl-2.5/sum/work_u.c @@ -0,0 +1,95 @@ +#include +#include +#include +#include + +gsl_sum_levin_u_workspace * +gsl_sum_levin_u_alloc (size_t n) +{ + gsl_sum_levin_u_workspace * w; + + if (n == 0) + { + GSL_ERROR_VAL ("length n must be positive integer", GSL_EDOM, 0); + } + + w = (gsl_sum_levin_u_workspace *) malloc(sizeof(gsl_sum_levin_u_workspace)); + + if (w == NULL) + { + GSL_ERROR_VAL ("failed to allocate struct", GSL_ENOMEM, 0); + } + + w->q_num = (double *) malloc (n * sizeof (double)); + + if (w->q_num == NULL) + { + free(w) ; /* error in constructor, prevent memory leak */ + + GSL_ERROR_VAL ("failed to allocate space for q_num", GSL_ENOMEM, 0); + } + + w->q_den = (double *) malloc (n * sizeof (double)); + + if (w->q_den == NULL) + { + free (w->q_num); + free (w) ; /* error in constructor, prevent memory leak */ + + GSL_ERROR_VAL ("failed to allocate space for q_den", GSL_ENOMEM, 0); + } + + w->dq_num = (double *) malloc (n * n * sizeof (double)); + + if (w->dq_num == NULL) + { + free (w->q_den); + free (w->q_num); + free(w) ; /* error in constructor, prevent memory leak */ + + GSL_ERROR_VAL ("failed to allocate space for dq_num", GSL_ENOMEM, 0); + } + + w->dq_den = (double *) malloc (n * n * sizeof (double)); + + if (w->dq_den == NULL) + { + free (w->dq_num); + free (w->q_den); + free (w->q_num); + free (w) ; /* error in constructor, prevent memory leak */ + + GSL_ERROR_VAL ("failed to allocate space for dq_den", GSL_ENOMEM, 0); + } + + w->dsum = (double *) malloc (n * sizeof (double)); + + if (w->dsum == NULL) + { + free (w->dq_den); + free (w->dq_num); + free (w->q_den); + free (w->q_num); + free (w) ; /* error in constructor, prevent memory leak */ + + GSL_ERROR_VAL ("failed to allocate space for dsum", GSL_ENOMEM, 0); + } + + w->size = n; + w->terms_used = 0; + w->sum_plain = 0; + + return w; +} + +void +gsl_sum_levin_u_free (gsl_sum_levin_u_workspace * w) +{ + RETURN_IF_NULL (w); + free (w->dsum); + free (w->dq_den); + free (w->dq_num); + free (w->q_den); + free (w->q_num); + free (w); +} diff --git a/gsl-2.5/sum/work_u.lo b/gsl-2.5/sum/work_u.lo new file mode 100644 index 00000000..6c1e9d1f --- /dev/null +++ b/gsl-2.5/sum/work_u.lo @@ -0,0 +1,12 @@ +# work_u.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/work_u.o' + +# Name of the non-PIC object +non_pic_object='work_u.o' + diff --git a/gsl-2.5/sum/work_utrunc.c b/gsl-2.5/sum/work_utrunc.c new file mode 100644 index 00000000..81ddf67f --- /dev/null +++ b/gsl-2.5/sum/work_utrunc.c @@ -0,0 +1,68 @@ +#include +#include +#include +#include + +gsl_sum_levin_utrunc_workspace * +gsl_sum_levin_utrunc_alloc (size_t n) +{ + gsl_sum_levin_utrunc_workspace * w; + + if (n == 0) + { + GSL_ERROR_VAL ("length n must be positive integer", GSL_EDOM, 0); + } + + w = (gsl_sum_levin_utrunc_workspace *) malloc(sizeof(gsl_sum_levin_utrunc_workspace)); + + if (w == NULL) + { + GSL_ERROR_VAL ("failed to allocate struct", GSL_ENOMEM, 0); + } + + w->q_num = (double *) malloc (n * sizeof (double)); + + if (w->q_num == NULL) + { + free(w) ; /* error in constructor, prevent memory leak */ + + GSL_ERROR_VAL ("failed to allocate space for q_num", GSL_ENOMEM, 0); + } + + w->q_den = (double *) malloc (n * sizeof (double)); + + if (w->q_den == NULL) + { + free (w->q_num); + free (w) ; /* error in constructor, prevent memory leak */ + + GSL_ERROR_VAL ("failed to allocate space for q_den", GSL_ENOMEM, 0); + } + + w->dsum = (double *) malloc (n * sizeof (double)); + + if (w->dsum == NULL) + { + free (w->q_den); + free (w->q_num); + free (w) ; /* error in constructor, prevent memory leak */ + + GSL_ERROR_VAL ("failed to allocate space for dsum", GSL_ENOMEM, 0); + } + + w->size = n; + w->terms_used = 0; + w->sum_plain = 0; + + return w; +} + +void +gsl_sum_levin_utrunc_free (gsl_sum_levin_utrunc_workspace * w) +{ + RETURN_IF_NULL (w); + free (w->dsum); + free (w->q_den); + free (w->q_num); + free (w); +} diff --git a/gsl-2.5/sum/work_utrunc.lo b/gsl-2.5/sum/work_utrunc.lo new file mode 100644 index 00000000..ce0d4574 --- /dev/null +++ b/gsl-2.5/sum/work_utrunc.lo @@ -0,0 +1,12 @@ +# work_utrunc.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/work_utrunc.o' + +# Name of the non-PIC object +non_pic_object='work_utrunc.o' + diff --git a/gsl-2.5/sys/.deps/coerce.Plo b/gsl-2.5/sys/.deps/coerce.Plo new file mode 100644 index 00000000..6c545f5a --- /dev/null +++ b/gsl-2.5/sys/.deps/coerce.Plo @@ -0,0 +1,42 @@ +coerce.lo: coerce.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: diff --git a/gsl-2.5/sys/.deps/expm1.Plo b/gsl-2.5/sys/.deps/expm1.Plo new file mode 100644 index 00000000..46bb94f9 --- /dev/null +++ b/gsl-2.5/sys/.deps/expm1.Plo @@ -0,0 +1,83 @@ +expm1.lo: expm1.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_math.h ../gsl/gsl_sys.h \ + ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: diff --git a/gsl-2.5/sys/.deps/fcmp.Plo b/gsl-2.5/sys/.deps/fcmp.Plo new file mode 100644 index 00000000..7bd5efec --- /dev/null +++ b/gsl-2.5/sys/.deps/fcmp.Plo @@ -0,0 +1,42 @@ +fcmp.lo: fcmp.c /usr/include/stdc-predef.h ../config.h ../gsl/gsl_sys.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_sys.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: diff --git a/gsl-2.5/sys/.deps/fdiv.Plo b/gsl-2.5/sys/.deps/fdiv.Plo new file mode 100644 index 00000000..21c27cc6 --- /dev/null +++ b/gsl-2.5/sys/.deps/fdiv.Plo @@ -0,0 +1,42 @@ +fdiv.lo: fdiv.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: diff --git a/gsl-2.5/sys/.deps/hypot.Plo b/gsl-2.5/sys/.deps/hypot.Plo new file mode 100644 index 00000000..87afdb0c --- /dev/null +++ b/gsl-2.5/sys/.deps/hypot.Plo @@ -0,0 +1,83 @@ +hypot.lo: hypot.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_math.h ../gsl/gsl_sys.h \ + ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: diff --git a/gsl-2.5/sys/.deps/infnan.Plo b/gsl-2.5/sys/.deps/infnan.Plo new file mode 100644 index 00000000..e1517fed --- /dev/null +++ b/gsl-2.5/sys/.deps/infnan.Plo @@ -0,0 +1,42 @@ +infnan.lo: infnan.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: diff --git a/gsl-2.5/sys/.deps/invhyp.Plo b/gsl-2.5/sys/.deps/invhyp.Plo new file mode 100644 index 00000000..88c0f8f7 --- /dev/null +++ b/gsl-2.5/sys/.deps/invhyp.Plo @@ -0,0 +1,83 @@ +invhyp.lo: invhyp.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_math.h ../gsl/gsl_sys.h \ + ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: diff --git a/gsl-2.5/sys/.deps/ldfrexp.Plo b/gsl-2.5/sys/.deps/ldfrexp.Plo new file mode 100644 index 00000000..3028a792 --- /dev/null +++ b/gsl-2.5/sys/.deps/ldfrexp.Plo @@ -0,0 +1,83 @@ +ldfrexp.lo: ldfrexp.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_math.h ../gsl/gsl_sys.h \ + ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: diff --git a/gsl-2.5/sys/.deps/log1p.Plo b/gsl-2.5/sys/.deps/log1p.Plo new file mode 100644 index 00000000..58ab5618 --- /dev/null +++ b/gsl-2.5/sys/.deps/log1p.Plo @@ -0,0 +1,42 @@ +log1p.lo: log1p.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../gsl/gsl_sys.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: diff --git a/gsl-2.5/sys/.deps/minmax.Plo b/gsl-2.5/sys/.deps/minmax.Plo new file mode 100644 index 00000000..919dfaec --- /dev/null +++ b/gsl-2.5/sys/.deps/minmax.Plo @@ -0,0 +1,12 @@ +minmax.lo: minmax.c /usr/include/stdc-predef.h ../config.h ../build.h \ + ../gsl/gsl_minmax.h ../gsl/gsl_inline.h + +/usr/include/stdc-predef.h: + +../config.h: + +../build.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_inline.h: diff --git a/gsl-2.5/sys/.deps/pow_int.Plo b/gsl-2.5/sys/.deps/pow_int.Plo new file mode 100644 index 00000000..785fec86 --- /dev/null +++ b/gsl-2.5/sys/.deps/pow_int.Plo @@ -0,0 +1,47 @@ +pow_int.lo: pow_int.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h ../build.h ../gsl/gsl_pow_int.h \ + ../gsl/gsl_inline.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../build.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_inline.h: diff --git a/gsl-2.5/sys/.deps/prec.Plo b/gsl-2.5/sys/.deps/prec.Plo new file mode 100644 index 00000000..e226ead5 --- /dev/null +++ b/gsl-2.5/sys/.deps/prec.Plo @@ -0,0 +1,54 @@ +prec.lo: prec.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h ../build.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_mode.h \ + ../gsl/gsl_inline.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../build.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_mode.h: + +../gsl/gsl_inline.h: diff --git a/gsl-2.5/sys/.deps/test.Po b/gsl-2.5/sys/.deps/test.Po new file mode 100644 index 00000000..5c96a9b2 --- /dev/null +++ b/gsl-2.5/sys/.deps/test.Po @@ -0,0 +1,158 @@ +test.o: test.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_test.h \ + ../gsl/gsl_ieee_utils.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_test.h: + +../gsl/gsl_ieee_utils.h: diff --git a/gsl-2.5/sys/.libs/libgslsys.la b/gsl-2.5/sys/.libs/libgslsys.la new file mode 120000 index 00000000..f4b13c74 --- /dev/null +++ b/gsl-2.5/sys/.libs/libgslsys.la @@ -0,0 +1 @@ +../libgslsys.la \ No newline at end of file diff --git a/gsl-2.5/sys/ChangeLog b/gsl-2.5/sys/ChangeLog new file mode 100644 index 00000000..82f77276 --- /dev/null +++ b/gsl-2.5/sys/ChangeLog @@ -0,0 +1,174 @@ +2011-05-20 Brian Gough + + * hypot.c (gsl_hypot): handle case where x or y is infinite + +2010-10-12 Brian Gough + + * pow_int.c (gsl_pow_uint): added function gsl_pow_uint(x,n) for + unsigned n (larger range) + (gsl_pow_int): handle case where n=MIN_INT correctly + +2010-02-15 Brian Gough + + * infnan.c: use #error if gsl_isnan or gsl_finite cannot be defined + +2009-08-21 Brian Gough + + * test.c (main): move x/=2 outside test of while loops because it + is (possibly) not volatile. + +2008-10-13 Brian Gough + + * log1p.c: use gsl_sys.h header file + + * infnan.c: use gsl_sys.h header file + + * hypot.c: use gsl_sys.h header file + + * fdiv.c: use gsl_sys.h header file + + * coerce.c: use gsl_sys.h header file + +2008-10-08 Brian Gough + + * infnan.c (gsl_isinf): handle the case where isinf(-inf) + returns +1 + +2008-07-03 Brian Gough + + * prec.c: compile inline functions from header here + + * pow_int.c: compile inline functions from header here + + * minmax.c: compile inline functions from header here + +2008-03-18 Brian Gough + + * test.c (main): use volatile to avoid extended precision in loop + + * ldfrexp.c (gsl_ldexp): added a test for x==0 + +2007-11-04 Brian Gough + + * ldfrexp.c (gsl_ldexp): handle full range of double precision + (gsl_frexp): handle full range of double precision + +2007-07-30 Brian Gough + + * infnan.c (gsl_finite): use isfinite (c99) in preference to + finite + +2007-07-23 Brian Gough + + * log1p.c (gsl_log1p): added another volatile to prevent unwanted + optimisation + +2007-04-03 Brian Gough + + * infnan.c (gsl_isinf): now return -1 for -Inf instead of +1 + + * test.c (main): add test for -inf + + * infnan.c (gsl_finite): always use finite where available + (gsl_isnan): always use isnan where available + (gsl_isinf): always use isinf where available + +2005-11-14 Brian Gough + + * test.c: added tests for constants + +2005-04-05 Brian Gough + + * infnan.c: added #include ieeefp.h for Solaris + +2004-12-22 Brian Gough + + * infnan.c (gsl_isinf): added missing return type of int + +2003-09-02 Brian Gough + + * infnan.c (gsl_isinf): added fallback for missing isinf (IRIX) + +2003-07-24 Brian Gough + + * invhyp.c: removed duplicate declarations + + * ldfrexp.c: removed duplicate declarations + + * expm1.c: removed duplicate declaration of gsl_expm1 + +2003-01-02 Brian Gough + + * infnan.c (gsl_isnan): fall back to isnan,isinf,finite/isfinite + if available and IEEE comparisons do not work + +Wed Dec 11 17:29:24 2002 Brian Gough + + * ldfrexp.c: fix include to use instead of + + +2002-08-25 Brian Gough + + * fcmp.c (gsl_fcmp): approximate comparison of floating point + numbers using Knuth's algorithm + + * ldfrexp.c (gsl_ldexp): portable replacement for ldexp() + (gsl_frexp): portable replacement for frexp() + +Wed Jan 16 16:35:58 2002 Brian Gough + + * test.c (main): only test gsl_isnan, gsl_isinf, gsl_finite + functions if they have been compiled in. + + * infnan.c (gsl_isnan): #ifdef out the gsl_isnan, gsl_isinf and + gsl_finite functions if IEEE comparisons for nans and infs are not + supported (HAVE_IEEE_COMPARISONS). + +Tue Aug 21 22:54:08 2001 Brian Gough + + * test.c (main): use inf/inf to generate a nan, because MSVC + optimizes inf-inf to zero + +Sun May 6 14:28:57 2001 Brian Gough + + * infnan.c: added gsl_isnan, gsl_isinf, gsl_isreal + +Sun Feb 25 11:54:21 2001 Brian Gough + + * invhyp.c: added gsl_acosh, gsl_asinh, gsl_atanh + +Mon Jan 29 10:53:06 2001 Brian Gough + + * hypot.c: removed the inline from gsl_hypot, since this is the + static version of the function + + * test.c (main): added an underflow test for gsl_hypot + +Thu Nov 16 19:28:38 2000 Brian Gough + + * coerce.c: added functions for coercing values out of registers + so they are correctly rounded + +Sun Oct 22 15:00:24 2000 Brian Gough + + * expm1.c (gsl_expm1): added gsl_expm1, a substitute for BSD's expm1 + +Mon Apr 3 16:58:53 2000 Brian Gough + + * params.c (main): added parentheses around negative output values + +Tue Mar 21 12:44:07 2000 Brian Gough + + * hypot.c: added a quick gsl_hypot function for sqrt(x^2+y^2) + +1999-07-14 Mark Galassi + + * prec.c (GSL_MODE_PREC): surrounded this with function with an + #ifndef, since it might already be defined as a macro. In truth, + this function might be completely unnecessary, since the logic in + ../gsl_mode.h seems to cover all cases. + +Fri Nov 20 17:41:35 1998 Brian Gough + + * params.c: added program for printing ieee parameters + diff --git a/gsl-2.5/sys/Makefile b/gsl-2.5/sys/Makefile new file mode 100644 index 00000000..fc41f0cd --- /dev/null +++ b/gsl-2.5/sys/Makefile @@ -0,0 +1,1037 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# sys/Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + + + + +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/gsl +pkgincludedir = $(includedir)/gsl +pkglibdir = $(libdir)/gsl +pkglibexecdir = $(libexecdir)/gsl +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = x86_64-unknown-linux-gnu +host_triplet = x86_64-unknown-linux-gnu +check_PROGRAMS = test$(EXEEXT) +subdir = sys +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp \ + $(pkginclude_HEADERS) $(top_srcdir)/test-driver ChangeLog +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +libgslsys_la_LIBADD = +am_libgslsys_la_OBJECTS = minmax.lo prec.lo hypot.lo log1p.lo expm1.lo \ + coerce.lo invhyp.lo pow_int.lo infnan.lo fdiv.lo fcmp.lo \ + ldfrexp.lo +libgslsys_la_OBJECTS = $(am_libgslsys_la_OBJECTS) +AM_V_lt = $(am__v_lt_$(V)) +am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) +am__v_lt_0 = --silent +am__v_lt_1 = +am_test_OBJECTS = test.$(OBJEXT) +test_OBJECTS = $(am_test_OBJECTS) +test_DEPENDENCIES = libgslsys.la ../ieee-utils/libgslieeeutils.la \ + ../err/libgslerr.la ../test/libgsltest.la libgslsys.la \ + ../utils/libutils.la +AM_V_P = $(am__v_P_$(V)) +am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY)) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_$(V)) +am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_$(V)) +am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I. -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_$(V)) +am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_$(V)) +am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libgslsys_la_SOURCES) $(test_SOURCES) +DIST_SOURCES = $(libgslsys_la_SOURCES) $(test_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(pkgincludedir)" +HEADERS = $(pkginclude_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = .test +LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing aclocal-1.13 +AMTAR = $${TAR-tar} +AM_DEFAULT_VERBOSITY = 1 +AR = ar +AS = as +AUTOCONF = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing autoconf +AUTOHEADER = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing autoheader +AUTOMAKE = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing automake-1.13 +AWK = gawk +CC = gcc +CCDEPMODE = depmode=gcc3 +CFLAGS = -g -O2 +CPP = gcc -E +CPPFLAGS = +CYGPATH_W = echo +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +DLLTOOL = false +DSYMUTIL = +DUMPBIN = +ECHO_C = +ECHO_N = -n +ECHO_T = +EGREP = /usr/bin/grep -E +EXEEXT = +FGREP = /usr/bin/grep -F +GREP = /usr/bin/grep +GSLCBLAS_LDFLAGS = +GSL_CFLAGS = -I${prefix}/include +GSL_LDFLAGS = +GSL_LIBADD = +GSL_LIBM = -lm +GSL_LIBS = -L${exec_prefix}/lib -lgsl +GSL_LT_CBLAS_VERSION = 0:0:0 +GSL_LT_VERSION = 24:0:1 +GSL_MAJOR_VERSION = 2 +GSL_MINOR_VERSION = 5 +HAVE_AIX_IEEE_INTERFACE = +HAVE_DARWIN86_IEEE_INTERFACE = +HAVE_DARWIN_IEEE_INTERFACE = +HAVE_FREEBSD_IEEE_INTERFACE = +HAVE_GNUM68K_IEEE_INTERFACE = +HAVE_GNUPPC_IEEE_INTERFACE = +HAVE_GNUSPARC_IEEE_INTERFACE = +HAVE_GNUX86_IEEE_INTERFACE = +HAVE_HPUX11_IEEE_INTERFACE = +HAVE_HPUX_IEEE_INTERFACE = +HAVE_IRIX_IEEE_INTERFACE = +HAVE_NETBSD_IEEE_INTERFACE = +HAVE_OPENBSD_IEEE_INTERFACE = +HAVE_OS2EMX_IEEE_INTERFACE = +HAVE_SOLARIS_IEEE_INTERFACE = +HAVE_SUNOS4_IEEE_INTERFACE = +HAVE_TRU64_IEEE_INTERFACE = +INSTALL = /usr/bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = $(install_sh) -c -s +LD = /usr/bin/ld -m elf_x86_64 +LDFLAGS = +LIBM = -lm +LIBOBJS = +LIBS = -lm +LIBTOOL = $(SHELL) $(top_builddir)/libtool +LIPO = +LN_S = ln -s +LTLIBOBJS = +MAINT = # +MAKEINFO = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing makeinfo +MANIFEST_TOOL = : +MKDIR_P = /usr/bin/mkdir -p +NM = /usr/bin/nm -B +NMEDIT = +OBJDUMP = objdump +OBJEXT = o +OTOOL = +OTOOL64 = +PACKAGE = gsl +PACKAGE_BUGREPORT = +PACKAGE_NAME = gsl +PACKAGE_STRING = gsl 2.5 +PACKAGE_TARNAME = gsl +PACKAGE_URL = +PACKAGE_VERSION = 2.5 +PATH_SEPARATOR = : +RANLIB = ranlib +SED = /usr/bin/sed +SET_MAKE = +SHELL = /bin/sh +STRIP = strip +VERSION = 2.5 +abs_builddir = /home/groups/kipac/chto/package/gsl/gsl-2.5/sys +abs_srcdir = /home/groups/kipac/chto/package/gsl/gsl-2.5/sys +abs_top_builddir = /home/groups/kipac/chto/package/gsl/gsl-2.5 +abs_top_srcdir = /home/groups/kipac/chto/package/gsl/gsl-2.5 +ac_ct_AR = ar +ac_ct_CC = gcc +ac_ct_DUMPBIN = +am__include = include +am__leading_dot = . +am__quote = +am__tar = $${TAR-tar} chof - "$$tardir" +am__untar = $${TAR-tar} xf - +bindir = ${exec_prefix}/bin +build = x86_64-unknown-linux-gnu +build_alias = +build_cpu = x86_64 +build_os = linux-gnu +build_vendor = unknown +builddir = . +datadir = ${datarootdir} +datarootdir = ${prefix}/share +docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} +dvidir = ${docdir} +exec_prefix = ${prefix} +host = x86_64-unknown-linux-gnu +host_alias = +host_cpu = x86_64 +host_os = linux-gnu +host_vendor = unknown +htmldir = ${docdir} +includedir = ${prefix}/include +infodir = ${datarootdir}/info +install_sh = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/install-sh +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +localedir = ${datarootdir}/locale +localstatedir = ${prefix}/var +mandir = ${datarootdir}/man +mkdir_p = $(MKDIR_P) +oldincludedir = /usr/include +pdfdir = ${docdir} +prefix = /home/groups/kipac/chto/package/gsl/gsl_lib +program_transform_name = s,x,x, +psdir = ${docdir} +sbindir = ${exec_prefix}/sbin +sharedstatedir = ${prefix}/com +srcdir = . +sysconfdir = ${prefix}/etc +target_alias = +top_build_prefix = ../ +top_builddir = .. +top_srcdir = .. +noinst_LTLIBRARIES = libgslsys.la +pkginclude_HEADERS = gsl_sys.h +libgslsys_la_SOURCES = minmax.c prec.c hypot.c log1p.c expm1.c coerce.c invhyp.c pow_int.c infnan.c fdiv.c fcmp.c ldfrexp.c +AM_CPPFLAGS = -I$(top_srcdir) +TESTS = $(check_PROGRAMS) +test_SOURCES = test.c +test_LDADD = libgslsys.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la libgslsys.la ../utils/libutils.la +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu sys/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu sys/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: # $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): # $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libgslsys.la: $(libgslsys_la_OBJECTS) $(libgslsys_la_DEPENDENCIES) $(EXTRA_libgslsys_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(libgslsys_la_OBJECTS) $(libgslsys_la_LIBADD) $(LIBS) + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) $(EXTRA_test_DEPENDENCIES) + @rm -f test$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_OBJECTS) $(test_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +include ./$(DEPDIR)/coerce.Plo +include ./$(DEPDIR)/expm1.Plo +include ./$(DEPDIR)/fcmp.Plo +include ./$(DEPDIR)/fdiv.Plo +include ./$(DEPDIR)/hypot.Plo +include ./$(DEPDIR)/infnan.Plo +include ./$(DEPDIR)/invhyp.Plo +include ./$(DEPDIR)/ldfrexp.Plo +include ./$(DEPDIR)/log1p.Plo +include ./$(DEPDIR)/minmax.Plo +include ./$(DEPDIR)/pow_int.Plo +include ./$(DEPDIR)/prec.Plo +include ./$(DEPDIR)/test.Po + +.c.o: + $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# $(AM_V_CC)source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(COMPILE) -c $< + +.c.obj: + $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# $(AM_V_CC)source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: + $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +# $(AM_V_CC)source='$<' object='$@' libtool=yes \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-pkgincludeHEADERS: $(pkginclude_HEADERS) + @$(NORMAL_INSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \ + done + +uninstall-pkgincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + else \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_PROGRAMS) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +test.log: test$(EXEEXT) + @p='test$(EXEEXT)'; \ + b='test'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +#.test$(EXEEXT).log: +# @p='$<'; \ +# $(am__set_b); \ +# $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +# --log-file $$b.log --trs-file $$b.trs \ +# $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +# "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-am +all-am: Makefile $(LTLIBRARIES) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(pkgincludedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-pkgincludeHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-pkgincludeHEADERS + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES cscopelist-am ctags ctags-am distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-pkgincludeHEADERS \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + recheck tags tags-am uninstall uninstall-am \ + uninstall-pkgincludeHEADERS + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gsl-2.5/sys/Makefile.am b/gsl-2.5/sys/Makefile.am new file mode 100644 index 00000000..52c6f258 --- /dev/null +++ b/gsl-2.5/sys/Makefile.am @@ -0,0 +1,12 @@ +noinst_LTLIBRARIES = libgslsys.la + +pkginclude_HEADERS = gsl_sys.h + +libgslsys_la_SOURCES = minmax.c prec.c hypot.c log1p.c expm1.c coerce.c invhyp.c pow_int.c infnan.c fdiv.c fcmp.c ldfrexp.c + +AM_CPPFLAGS = -I$(top_srcdir) + +check_PROGRAMS = test +TESTS = $(check_PROGRAMS) +test_SOURCES = test.c +test_LDADD = libgslsys.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la libgslsys.la ../utils/libutils.la diff --git a/gsl-2.5/sys/Makefile.in b/gsl-2.5/sys/Makefile.in new file mode 100644 index 00000000..4de0675f --- /dev/null +++ b/gsl-2.5/sys/Makefile.in @@ -0,0 +1,1037 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + + +VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +check_PROGRAMS = test$(EXEEXT) +subdir = sys +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp \ + $(pkginclude_HEADERS) $(top_srcdir)/test-driver ChangeLog +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +libgslsys_la_LIBADD = +am_libgslsys_la_OBJECTS = minmax.lo prec.lo hypot.lo log1p.lo expm1.lo \ + coerce.lo invhyp.lo pow_int.lo infnan.lo fdiv.lo fcmp.lo \ + ldfrexp.lo +libgslsys_la_OBJECTS = $(am_libgslsys_la_OBJECTS) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +am_test_OBJECTS = test.$(OBJEXT) +test_OBJECTS = $(am_test_OBJECTS) +test_DEPENDENCIES = libgslsys.la ../ieee-utils/libgslieeeutils.la \ + ../err/libgslerr.la ../test/libgsltest.la libgslsys.la \ + ../utils/libutils.la +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libgslsys_la_SOURCES) $(test_SOURCES) +DIST_SOURCES = $(libgslsys_la_SOURCES) $(test_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(pkgincludedir)" +HEADERS = $(pkginclude_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = @EXEEXT@ .test +LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +GSLCBLAS_LDFLAGS = @GSLCBLAS_LDFLAGS@ +GSL_CFLAGS = @GSL_CFLAGS@ +GSL_LDFLAGS = @GSL_LDFLAGS@ +GSL_LIBADD = @GSL_LIBADD@ +GSL_LIBM = @GSL_LIBM@ +GSL_LIBS = @GSL_LIBS@ +GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ +GSL_LT_VERSION = @GSL_LT_VERSION@ +GSL_MAJOR_VERSION = @GSL_MAJOR_VERSION@ +GSL_MINOR_VERSION = @GSL_MINOR_VERSION@ +HAVE_AIX_IEEE_INTERFACE = @HAVE_AIX_IEEE_INTERFACE@ +HAVE_DARWIN86_IEEE_INTERFACE = @HAVE_DARWIN86_IEEE_INTERFACE@ +HAVE_DARWIN_IEEE_INTERFACE = @HAVE_DARWIN_IEEE_INTERFACE@ +HAVE_FREEBSD_IEEE_INTERFACE = @HAVE_FREEBSD_IEEE_INTERFACE@ +HAVE_GNUM68K_IEEE_INTERFACE = @HAVE_GNUM68K_IEEE_INTERFACE@ +HAVE_GNUPPC_IEEE_INTERFACE = @HAVE_GNUPPC_IEEE_INTERFACE@ +HAVE_GNUSPARC_IEEE_INTERFACE = @HAVE_GNUSPARC_IEEE_INTERFACE@ +HAVE_GNUX86_IEEE_INTERFACE = @HAVE_GNUX86_IEEE_INTERFACE@ +HAVE_HPUX11_IEEE_INTERFACE = @HAVE_HPUX11_IEEE_INTERFACE@ +HAVE_HPUX_IEEE_INTERFACE = @HAVE_HPUX_IEEE_INTERFACE@ +HAVE_IRIX_IEEE_INTERFACE = @HAVE_IRIX_IEEE_INTERFACE@ +HAVE_NETBSD_IEEE_INTERFACE = @HAVE_NETBSD_IEEE_INTERFACE@ +HAVE_OPENBSD_IEEE_INTERFACE = @HAVE_OPENBSD_IEEE_INTERFACE@ +HAVE_OS2EMX_IEEE_INTERFACE = @HAVE_OS2EMX_IEEE_INTERFACE@ +HAVE_SOLARIS_IEEE_INTERFACE = @HAVE_SOLARIS_IEEE_INTERFACE@ +HAVE_SUNOS4_IEEE_INTERFACE = @HAVE_SUNOS4_IEEE_INTERFACE@ +HAVE_TRU64_IEEE_INTERFACE = @HAVE_TRU64_IEEE_INTERFACE@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBM = @LIBM@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +noinst_LTLIBRARIES = libgslsys.la +pkginclude_HEADERS = gsl_sys.h +libgslsys_la_SOURCES = minmax.c prec.c hypot.c log1p.c expm1.c coerce.c invhyp.c pow_int.c infnan.c fdiv.c fcmp.c ldfrexp.c +AM_CPPFLAGS = -I$(top_srcdir) +TESTS = $(check_PROGRAMS) +test_SOURCES = test.c +test_LDADD = libgslsys.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la libgslsys.la ../utils/libutils.la +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu sys/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu sys/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libgslsys.la: $(libgslsys_la_OBJECTS) $(libgslsys_la_DEPENDENCIES) $(EXTRA_libgslsys_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(libgslsys_la_OBJECTS) $(libgslsys_la_LIBADD) $(LIBS) + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) $(EXTRA_test_DEPENDENCIES) + @rm -f test$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_OBJECTS) $(test_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/coerce.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/expm1.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fcmp.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fdiv.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hypot.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/infnan.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/invhyp.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ldfrexp.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/log1p.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/minmax.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pow_int.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/prec.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test.Po@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-pkgincludeHEADERS: $(pkginclude_HEADERS) + @$(NORMAL_INSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \ + done + +uninstall-pkgincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + else \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_PROGRAMS) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +test.log: test$(EXEEXT) + @p='test$(EXEEXT)'; \ + b='test'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +@am__EXEEXT_TRUE@.test$(EXEEXT).log: +@am__EXEEXT_TRUE@ @p='$<'; \ +@am__EXEEXT_TRUE@ $(am__set_b); \ +@am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +@am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ +@am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +@am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-am +all-am: Makefile $(LTLIBRARIES) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(pkgincludedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-pkgincludeHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-pkgincludeHEADERS + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES cscopelist-am ctags ctags-am distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-pkgincludeHEADERS \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + recheck tags tags-am uninstall uninstall-am \ + uninstall-pkgincludeHEADERS + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gsl-2.5/sys/coerce.c b/gsl-2.5/sys/coerce.c new file mode 100644 index 00000000..101dacc9 --- /dev/null +++ b/gsl-2.5/sys/coerce.c @@ -0,0 +1,49 @@ +/* sys/coerce.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include + +double +gsl_coerce_double (const double x) +{ + volatile double y; + y = x; + return y; +} + +float +gsl_coerce_float (const float x) +{ + volatile float y; + y = x; + return y; +} + +/* The following function is not needed, but is included for completeness */ + +long double +gsl_coerce_long_double (const long double x) +{ + volatile long double y; + y = x; + return y; +} + diff --git a/gsl-2.5/sys/coerce.lo b/gsl-2.5/sys/coerce.lo new file mode 100644 index 00000000..977e06a8 --- /dev/null +++ b/gsl-2.5/sys/coerce.lo @@ -0,0 +1,12 @@ +# coerce.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/coerce.o' + +# Name of the non-PIC object +non_pic_object='coerce.o' + diff --git a/gsl-2.5/sys/expm1.c b/gsl-2.5/sys/expm1.c new file mode 100644 index 00000000..d47548f2 --- /dev/null +++ b/gsl-2.5/sys/expm1.c @@ -0,0 +1,50 @@ +/* sys/expm1.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include + +double gsl_expm1 (const double x) +{ + /* FIXME: this should be improved */ + + if (fabs(x) < M_LN2) + { + /* Compute the taylor series S = x + (1/2!) x^2 + (1/3!) x^3 + ... */ + + double i = 1.0; + double sum = x; + double term = x / 1.0; + + do + { + i++ ; + term *= x/i; + sum += term; + } + while (fabs(term) > fabs(sum) * GSL_DBL_EPSILON) ; + + return sum ; + } + else + { + return exp(x) - 1; + } +} diff --git a/gsl-2.5/sys/expm1.lo b/gsl-2.5/sys/expm1.lo new file mode 100644 index 00000000..66d6a47f --- /dev/null +++ b/gsl-2.5/sys/expm1.lo @@ -0,0 +1,12 @@ +# expm1.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/expm1.o' + +# Name of the non-PIC object +non_pic_object='expm1.o' + diff --git a/gsl-2.5/sys/fcmp.c b/gsl-2.5/sys/fcmp.c new file mode 100644 index 00000000..4f673d98 --- /dev/null +++ b/gsl-2.5/sys/fcmp.c @@ -0,0 +1,62 @@ +/* sys/gsl_compare.c + * + * Copyright (C) 2002 Gert Van den Eynde + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * Based on fcmp 1.2.2 Copyright (c) 1998-2000 Theodore C. Belding + * University of Michigan Center for the Study of Complex Systems + * Ted.Belding@umich.edu + * + */ + +#include +#include +#include + +int +gsl_fcmp (const double x1, const double x2, const double epsilon) +{ + int exponent; + double delta, difference; + + /* Find exponent of largest absolute value */ + + { + double max = (fabs (x1) > fabs (x2)) ? x1 : x2; + + frexp (max, &exponent); + } + + /* Form a neighborhood of size 2 * delta */ + + delta = ldexp (epsilon, exponent); + + difference = x1 - x2; + + if (difference > delta) /* x1 > x2 */ + { + return 1; + } + else if (difference < -delta) /* x1 < x2 */ + { + return -1; + } + else /* -delta <= difference <= delta */ + { + return 0; /* x1 ~=~ x2 */ + } +} + diff --git a/gsl-2.5/sys/fcmp.lo b/gsl-2.5/sys/fcmp.lo new file mode 100644 index 00000000..e22eb83d --- /dev/null +++ b/gsl-2.5/sys/fcmp.lo @@ -0,0 +1,12 @@ +# fcmp.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/fcmp.o' + +# Name of the non-PIC object +non_pic_object='fcmp.o' + diff --git a/gsl-2.5/sys/fdiv.c b/gsl-2.5/sys/fdiv.c new file mode 100644 index 00000000..05b95b2b --- /dev/null +++ b/gsl-2.5/sys/fdiv.c @@ -0,0 +1,28 @@ +/* sys/fdiv.c + * + * Copyright (C) 2001, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include + +double +gsl_fdiv (const double x, const double y) +{ + return x / y; +} diff --git a/gsl-2.5/sys/fdiv.lo b/gsl-2.5/sys/fdiv.lo new file mode 100644 index 00000000..17bf2c4d --- /dev/null +++ b/gsl-2.5/sys/fdiv.lo @@ -0,0 +1,12 @@ +# fdiv.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/fdiv.o' + +# Name of the non-PIC object +non_pic_object='fdiv.o' + diff --git a/gsl-2.5/sys/gsl_sys.h b/gsl-2.5/sys/gsl_sys.h new file mode 100644 index 00000000..25e13486 --- /dev/null +++ b/gsl-2.5/sys/gsl_sys.h @@ -0,0 +1,63 @@ +/* sys/gsl_sys.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_SYS_H__ +#define __GSL_SYS_H__ + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +double gsl_log1p (const double x); +double gsl_expm1 (const double x); +double gsl_hypot (const double x, const double y); +double gsl_hypot3 (const double x, const double y, const double z); +double gsl_acosh (const double x); +double gsl_asinh (const double x); +double gsl_atanh (const double x); + +int gsl_isnan (const double x); +int gsl_isinf (const double x); +int gsl_finite (const double x); + +double gsl_nan (void); +double gsl_posinf (void); +double gsl_neginf (void); +double gsl_fdiv (const double x, const double y); + +double gsl_coerce_double (const double x); +float gsl_coerce_float (const float x); +long double gsl_coerce_long_double (const long double x); + +double gsl_ldexp(const double x, const int e); +double gsl_frexp(const double x, int * e); + +int gsl_fcmp (const double x1, const double x2, const double epsilon); + +__END_DECLS + +#endif /* __GSL_SYS_H__ */ diff --git a/gsl-2.5/sys/hypot.c b/gsl-2.5/sys/hypot.c new file mode 100644 index 00000000..14bf0e90 --- /dev/null +++ b/gsl-2.5/sys/hypot.c @@ -0,0 +1,76 @@ +/* sys/hypot.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough, Patrick Alken + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include + +double gsl_hypot (const double x, const double y) +{ + double xabs = fabs(x) ; + double yabs = fabs(y) ; + double min, max; + + /* Follow the optional behavior of the ISO C standard and return + +Inf when any of the argument is +-Inf, even if the other is NaN. + http://pubs.opengroup.org/onlinepubs/009695399/functions/hypot.html */ + if (gsl_isinf(x) || gsl_isinf(y)) + { + return GSL_POSINF; + } + + if (xabs < yabs) { + min = xabs ; + max = yabs ; + } else { + min = yabs ; + max = xabs ; + } + + if (min == 0) + { + return max ; + } + + { + double u = min / max ; + return max * sqrt (1 + u * u) ; + } +} + +double +gsl_hypot3(const double x, const double y, const double z) +{ + double xabs = fabs(x); + double yabs = fabs(y); + double zabs = fabs(z); + double w = GSL_MAX(xabs, GSL_MAX(yabs, zabs)); + + if (w == 0.0) + { + return (0.0); + } + else + { + double r = w * sqrt((xabs / w) * (xabs / w) + + (yabs / w) * (yabs / w) + + (zabs / w) * (zabs / w)); + return r; + } +} diff --git a/gsl-2.5/sys/hypot.lo b/gsl-2.5/sys/hypot.lo new file mode 100644 index 00000000..58a16682 --- /dev/null +++ b/gsl-2.5/sys/hypot.lo @@ -0,0 +1,12 @@ +# hypot.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/hypot.o' + +# Name of the non-PIC object +non_pic_object='hypot.o' + diff --git a/gsl-2.5/sys/infnan.c b/gsl-2.5/sys/infnan.c new file mode 100644 index 00000000..aee48cee --- /dev/null +++ b/gsl-2.5/sys/infnan.c @@ -0,0 +1,152 @@ +/* sys/infnan.c + * + * Copyright (C) 2001, 2004, 2007, 2010 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include + +#if HAVE_IEEEFP_H +#include +#endif + +#include + +double gsl_nan (void) +{ + return gsl_fdiv (0.0, 0.0); +} + +double gsl_posinf (void) +{ + return gsl_fdiv (+1.0, 0.0); +} + +double gsl_neginf (void) +{ + return gsl_fdiv (-1.0, 0.0); +} + + +int gsl_isnan (const double x); +int gsl_isinf (const double x); +int gsl_finite (const double x); + +#if defined(_MSC_VER) /* Microsoft Visual C++ */ +#include +int +gsl_isnan (const double x) +{ + return _isnan(x); +} + +int +gsl_isinf (const double x) +{ + int fpc = _fpclass(x); + + if (fpc == _FPCLASS_PINF) + return +1; + else if (fpc == _FPCLASS_NINF) + return -1; + else + return 0; +} + +int +gsl_finite (const double x) +{ + return _finite(x); +} +#else + +# if HAVE_DECL_ISFINITE +int +gsl_finite (const double x) +{ + return isfinite(x); +} +# elif HAVE_DECL_FINITE +int +gsl_finite (const double x) +{ + return finite(x); +} +# elif HAVE_IEEE_COMPARISONS +int +gsl_finite (const double x) +{ + const double y = x - x; + int status = (y == y); + return status; +} +# else +# error "cannot define gsl_finite without HAVE_DECL_FINITE or HAVE_IEEE_COMPARISONS" +# endif + +# if HAVE_DECL_ISNAN +int +gsl_isnan (const double x) +{ + return isnan(x); +} +#elif HAVE_IEEE_COMPARISONS +int +gsl_isnan (const double x) +{ + int status = (x != x); + return status; +} +# else +# error "cannot define gsl_isnan without HAVE_DECL_ISNAN or HAVE_IEEE_COMPARISONS" +# endif + +# if HAVE_DECL_ISINF +int +gsl_isinf (const double x) +{ + /* isinf(3): In glibc 2.01 and earlier, isinf() returns a + non-zero value (actually: 1) if x is an infinity (positive or + negative). (This is all that C99 requires.) */ + + if (isinf(x)) + { + return (x > 0) ? 1 : -1; + } + else + { + return 0; + } +} +# else + +int +gsl_isinf (const double x) +{ + if (! gsl_finite(x) && ! gsl_isnan(x)) + { + return (x > 0 ? +1 : -1); + } + else + { + return 0; + } +} + +# endif +#endif + diff --git a/gsl-2.5/sys/infnan.lo b/gsl-2.5/sys/infnan.lo new file mode 100644 index 00000000..097d1d72 --- /dev/null +++ b/gsl-2.5/sys/infnan.lo @@ -0,0 +1,12 @@ +# infnan.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/infnan.o' + +# Name of the non-PIC object +non_pic_object='infnan.o' + diff --git a/gsl-2.5/sys/invhyp.c b/gsl-2.5/sys/invhyp.c new file mode 100644 index 00000000..8262ffb6 --- /dev/null +++ b/gsl-2.5/sys/invhyp.c @@ -0,0 +1,102 @@ +/* sys/invhyp.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include + +double +gsl_acosh (const double x) +{ + if (x > 1.0 / GSL_SQRT_DBL_EPSILON) + { + return log (x) + M_LN2; + } + else if (x > 2) + { + return log (2 * x - 1 / (sqrt (x * x - 1) + x)); + } + else if (x > 1) + { + double t = x - 1; + return log1p (t + sqrt (2 * t + t * t)); + } + else if (x == 1) + { + return 0; + } + else + { + return GSL_NAN; + } +} + +double +gsl_asinh (const double x) +{ + double a = fabs (x); + double s = (x < 0) ? -1 : 1; + + if (a > 1 / GSL_SQRT_DBL_EPSILON) + { + return s * (log (a) + M_LN2); + } + else if (a > 2) + { + return s * log (2 * a + 1 / (a + sqrt (a * a + 1))); + } + else if (a > GSL_SQRT_DBL_EPSILON) + { + double a2 = a * a; + return s * log1p (a + a2 / (1 + sqrt (1 + a2))); + } + else + { + return x; + } +} + +double +gsl_atanh (const double x) +{ + double a = fabs (x); + double s = (x < 0) ? -1 : 1; + + if (a > 1) + { + return GSL_NAN; + } + else if (a == 1) + { + return (x < 0) ? GSL_NEGINF : GSL_POSINF; + } + else if (a >= 0.5) + { + return s * 0.5 * log1p (2 * a / (1 - a)); + } + else if (a > GSL_DBL_EPSILON) + { + return s * 0.5 * log1p (2 * a + 2 * a * a / (1 - a)); + } + else + { + return x; + } +} diff --git a/gsl-2.5/sys/invhyp.lo b/gsl-2.5/sys/invhyp.lo new file mode 100644 index 00000000..391698ad --- /dev/null +++ b/gsl-2.5/sys/invhyp.lo @@ -0,0 +1,12 @@ +# invhyp.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/invhyp.o' + +# Name of the non-PIC object +non_pic_object='invhyp.o' + diff --git a/gsl-2.5/sys/ldfrexp.c b/gsl-2.5/sys/ldfrexp.c new file mode 100644 index 00000000..54107116 --- /dev/null +++ b/gsl-2.5/sys/ldfrexp.c @@ -0,0 +1,110 @@ +/* sys/ldfrexp.c + * + * Copyright (C) 2002, Gert Van den Eynde + * Copyright (C) 2007, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include + +double +gsl_ldexp (const double x, const int e) +{ + int ex; + + if (x == 0.0) + { + return x; + } + + { + double y = gsl_frexp (x, &ex); + double e2 = e + ex, p2; + + if (e2 >= DBL_MAX_EXP) + { + y *= pow (2.0, e2 - DBL_MAX_EXP + 1); + e2 = DBL_MAX_EXP - 1; + } + else if (e2 <= DBL_MIN_EXP) + { + y *= pow (2.0, e2 - DBL_MIN_EXP - 1); + e2 = DBL_MIN_EXP + 1; + } + + p2 = pow (2.0, e2); + return y * p2; + } +} + +double +gsl_frexp (const double x, int *e) +{ + if (x == 0.0) + { + *e = 0; + return 0.0; + } + else if (!gsl_finite (x)) + { + *e = 0; + return x; + } + else if (fabs (x) >= 0.5 && fabs (x) < 1) /* Handle the common case */ + { + *e = 0; + return x; + } + else + { + double ex = ceil (log (fabs (x)) / M_LN2); + int ei = (int) ex; + double f; + + /* Prevent underflow and overflow of 2**(-ei) */ + if (ei < DBL_MIN_EXP) + ei = DBL_MIN_EXP; + + if (ei > -DBL_MIN_EXP) + ei = -DBL_MIN_EXP; + + f = x * pow (2.0, -ei); + + if (!gsl_finite (f)) + { + /* This should not happen */ + *e = 0; + return f; + } + + while (fabs (f) >= 1.0) + { + ei++; + f /= 2.0; + } + + while (fabs (f) > 0 && fabs (f) < 0.5) + { + ei--; + f *= 2.0; + } + + *e = ei; + return f; + } +} diff --git a/gsl-2.5/sys/ldfrexp.lo b/gsl-2.5/sys/ldfrexp.lo new file mode 100644 index 00000000..284b5ee0 --- /dev/null +++ b/gsl-2.5/sys/ldfrexp.lo @@ -0,0 +1,12 @@ +# ldfrexp.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/ldfrexp.o' + +# Name of the non-PIC object +non_pic_object='ldfrexp.o' + diff --git a/gsl-2.5/sys/libgslsys.la b/gsl-2.5/sys/libgslsys.la new file mode 100644 index 00000000..4db29159 --- /dev/null +++ b/gsl-2.5/sys/libgslsys.la @@ -0,0 +1,41 @@ +# libgslsys.la - a libtool library file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='' + +# Names of this library. +library_names='' + +# The name of the static archive. +old_library='libgslsys.a' + +# Linker flags that can not go in dependency_libs. +inherited_linker_flags='' + +# Libraries that this one depends upon. +dependency_libs=' -lm' + +# Names of additional weak libraries provided by this library +weak_library_names='' + +# Version information for libgslsys. +current= +age= +revision= + +# Is this an already installed library? +installed=no + +# Should we warn about portability when linking against -modules? +shouldnotlink=no + +# Files to dlopen/dlpreopen +dlopen='' +dlpreopen='' + +# Directory that this library needs to be installed in: +libdir='' diff --git a/gsl-2.5/sys/log1p.c b/gsl-2.5/sys/log1p.c new file mode 100644 index 00000000..e6d70668 --- /dev/null +++ b/gsl-2.5/sys/log1p.c @@ -0,0 +1,30 @@ +/* sys/log1p.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include + +double gsl_log1p (const double x) +{ + volatile double y, z; + y = 1 + x; + z = y - 1; + return log(y) - (z-x)/y ; /* cancels errors with IEEE arithmetic */ +} diff --git a/gsl-2.5/sys/log1p.lo b/gsl-2.5/sys/log1p.lo new file mode 100644 index 00000000..49534b8b --- /dev/null +++ b/gsl-2.5/sys/log1p.lo @@ -0,0 +1,12 @@ +# log1p.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/log1p.o' + +# Name of the non-PIC object +non_pic_object='log1p.o' + diff --git a/gsl-2.5/sys/minmax.c b/gsl-2.5/sys/minmax.c new file mode 100644 index 00000000..ade4f455 --- /dev/null +++ b/gsl-2.5/sys/minmax.c @@ -0,0 +1,39 @@ +/* sys/minmax.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include + +/* Compile all the inline functions */ + +#define COMPILE_INLINE_STATIC +#include "build.h" +#include + +/* Define some static functions which are always available */ + +double gsl_max (double a, double b) +{ + return GSL_MAX (a, b); +} + +double gsl_min (double a, double b) +{ + return GSL_MIN (a, b); +} + diff --git a/gsl-2.5/sys/minmax.lo b/gsl-2.5/sys/minmax.lo new file mode 100644 index 00000000..adb8d3f7 --- /dev/null +++ b/gsl-2.5/sys/minmax.lo @@ -0,0 +1,12 @@ +# minmax.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/minmax.o' + +# Name of the non-PIC object +non_pic_object='minmax.o' + diff --git a/gsl-2.5/sys/pow_int.c b/gsl-2.5/sys/pow_int.c new file mode 100644 index 00000000..26c7fff7 --- /dev/null +++ b/gsl-2.5/sys/pow_int.c @@ -0,0 +1,56 @@ +/* sys/pow_int.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ +#include +#include + +/* Compile all the inline functions */ + +#define COMPILE_INLINE_STATIC +#include "build.h" +#include + +double gsl_pow_int(double x, int n) +{ + unsigned int un; + + if(n < 0) { + x = 1.0/x; + un = -n; + } else { + un = n; + } + + return gsl_pow_uint(x, un); +} + +double gsl_pow_uint(double x, unsigned int n) +{ + double value = 1.0; + + /* repeated squaring method + * returns 0.0^0 = 1.0, so continuous in x + */ + do { + if(n & 1) value *= x; /* for n odd */ + n >>= 1; + x *= x; + } while (n); + + return value; +} diff --git a/gsl-2.5/sys/pow_int.lo b/gsl-2.5/sys/pow_int.lo new file mode 100644 index 00000000..e1ea758c --- /dev/null +++ b/gsl-2.5/sys/pow_int.lo @@ -0,0 +1,12 @@ +# pow_int.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/pow_int.o' + +# Name of the non-PIC object +non_pic_object='pow_int.o' + diff --git a/gsl-2.5/sys/prec.c b/gsl-2.5/sys/prec.c new file mode 100644 index 00000000..f5bb0ad7 --- /dev/null +++ b/gsl-2.5/sys/prec.c @@ -0,0 +1,67 @@ +/* sys/prec.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Author: G. Jungman */ + +#include +#include + +/* Compile all the inline functions */ + +#define COMPILE_INLINE_STATIC +#include "build.h" +#include +#include + +const double gsl_prec_eps[_GSL_PREC_T_NUM] = { + GSL_DBL_EPSILON, + GSL_FLT_EPSILON, + GSL_SFLT_EPSILON +}; + +const double gsl_prec_sqrt_eps[_GSL_PREC_T_NUM] = { + GSL_SQRT_DBL_EPSILON, + GSL_SQRT_FLT_EPSILON, + GSL_SQRT_SFLT_EPSILON +}; + +const double gsl_prec_root3_eps[_GSL_PREC_T_NUM] = { + GSL_ROOT3_DBL_EPSILON, + GSL_ROOT3_FLT_EPSILON, + GSL_ROOT3_SFLT_EPSILON +}; + +const double gsl_prec_root4_eps[_GSL_PREC_T_NUM] = { + GSL_ROOT4_DBL_EPSILON, + GSL_ROOT4_FLT_EPSILON, + GSL_ROOT4_SFLT_EPSILON +}; + +const double gsl_prec_root5_eps[_GSL_PREC_T_NUM] = { + GSL_ROOT5_DBL_EPSILON, + GSL_ROOT5_FLT_EPSILON, + GSL_ROOT5_SFLT_EPSILON +}; + +const double gsl_prec_root6_eps[_GSL_PREC_T_NUM] = { + GSL_ROOT6_DBL_EPSILON, + GSL_ROOT6_FLT_EPSILON, + GSL_ROOT6_SFLT_EPSILON +}; + diff --git a/gsl-2.5/sys/prec.lo b/gsl-2.5/sys/prec.lo new file mode 100644 index 00000000..9e617084 --- /dev/null +++ b/gsl-2.5/sys/prec.lo @@ -0,0 +1,12 @@ +# prec.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/prec.o' + +# Name of the non-PIC object +non_pic_object='prec.o' + diff --git a/gsl-2.5/sys/test b/gsl-2.5/sys/test new file mode 100755 index 00000000..d3d7cf7b Binary files /dev/null and b/gsl-2.5/sys/test differ diff --git a/gsl-2.5/sys/test-suite.log b/gsl-2.5/sys/test-suite.log new file mode 100644 index 00000000..ddb5cb6e --- /dev/null +++ b/gsl-2.5/sys/test-suite.log @@ -0,0 +1,14 @@ +================================= + gsl 2.5: sys/test-suite.log +================================= + +# TOTAL: 1 +# PASS: 1 +# SKIP: 0 +# XFAIL: 0 +# FAIL: 0 +# XPASS: 0 +# ERROR: 0 + +.. contents:: :depth: 2 + diff --git a/gsl-2.5/sys/test.c b/gsl-2.5/sys/test.c new file mode 100644 index 00000000..a415a476 --- /dev/null +++ b/gsl-2.5/sys/test.c @@ -0,0 +1,682 @@ +/* sys/test.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include + +int +main (void) +{ + double y, y_expected; + int e, e_expected; + + gsl_ieee_env_setup (); + + /* Test for expm1 */ + + y = gsl_expm1 (0.0); + y_expected = 0.0; + gsl_test_rel (y, y_expected, 1e-15, "gsl_expm1(0.0)"); + + y = gsl_expm1 (1e-10); + y_expected = 1.000000000050000000002e-10; + gsl_test_rel (y, y_expected, 1e-15, "gsl_expm1(1e-10)"); + + y = gsl_expm1 (-1e-10); + y_expected = -9.999999999500000000017e-11; + gsl_test_rel (y, y_expected, 1e-15, "gsl_expm1(-1e-10)"); + + y = gsl_expm1 (0.1); + y_expected = 0.1051709180756476248117078264902; + gsl_test_rel (y, y_expected, 1e-15, "gsl_expm1(0.1)"); + + y = gsl_expm1 (-0.1); + y_expected = -0.09516258196404042683575094055356; + gsl_test_rel (y, y_expected, 1e-15, "gsl_expm1(-0.1)"); + + y = gsl_expm1 (10.0); + y_expected = 22025.465794806716516957900645284; + gsl_test_rel (y, y_expected, 1e-15, "gsl_expm1(10.0)"); + + y = gsl_expm1 (-10.0); + y_expected = -0.99995460007023751514846440848444; + gsl_test_rel (y, y_expected, 1e-15, "gsl_expm1(-10.0)"); + + /* Test for log1p */ + + y = gsl_log1p (0.0); + y_expected = 0.0; + gsl_test_rel (y, y_expected, 1e-15, "gsl_log1p(0.0)"); + + y = gsl_log1p (1e-10); + y_expected = 9.9999999995000000000333333333308e-11; + gsl_test_rel (y, y_expected, 1e-15, "gsl_log1p(1e-10)"); + + y = gsl_log1p (0.1); + y_expected = 0.095310179804324860043952123280765; + gsl_test_rel (y, y_expected, 1e-15, "gsl_log1p(0.1)"); + + y = gsl_log1p (10.0); + y_expected = 2.3978952727983705440619435779651; + gsl_test_rel (y, y_expected, 1e-15, "gsl_log1p(10.0)"); + + /* Test for gsl_hypot */ + + y = gsl_hypot (0.0, 0.0); + y_expected = 0.0; + gsl_test_rel (y, y_expected, 1e-15, "gsl_hypot(0.0, 0.0)"); + + y = gsl_hypot (1e-10, 1e-10); + y_expected = 1.414213562373095048801688e-10; + gsl_test_rel (y, y_expected, 1e-15, "gsl_hypot(1e-10, 1e-10)"); + + y = gsl_hypot (1e-38, 1e-38); + y_expected = 1.414213562373095048801688e-38; + gsl_test_rel (y, y_expected, 1e-15, "gsl_hypot(1e-38, 1e-38)"); + + y = gsl_hypot (1e-10, -1.0); + y_expected = 1.000000000000000000005; + gsl_test_rel (y, y_expected, 1e-15, "gsl_hypot(1e-10, -1)"); + + y = gsl_hypot (-1.0, 1e-10); + y_expected = 1.000000000000000000005; + gsl_test_rel (y, y_expected, 1e-15, "gsl_hypot(-1, 1e-10)"); + + y = gsl_hypot (1e307, 1e301); + y_expected = 1.000000000000499999999999e307; + gsl_test_rel (y, y_expected, 1e-15, "gsl_hypot(1e307, 1e301)"); + + y = gsl_hypot (1e301, 1e307); + y_expected = 1.000000000000499999999999e307; + gsl_test_rel (y, y_expected, 1e-15, "gsl_hypot(1e301, 1e307)"); + + y = gsl_hypot (1e307, 1e307); + y_expected = 1.414213562373095048801688e307; + gsl_test_rel (y, y_expected, 1e-15, "gsl_hypot(1e307, 1e307)"); + + /* Test +-Inf, finite */ + + y = gsl_hypot (GSL_POSINF, 1.2); + y_expected = GSL_POSINF; + gsl_test_rel (y, y_expected, 1e-15, "gsl_hypot(GSL_POSINF, 1.2)"); + + y = gsl_hypot (GSL_NEGINF, 1.2); + y_expected = GSL_POSINF; + gsl_test_rel (y, y_expected, 1e-15, "gsl_hypot(GSL_NEGINF, 1.2)"); + + y = gsl_hypot (1.2, GSL_POSINF); + y_expected = GSL_POSINF; + gsl_test_rel (y, y_expected, 1e-15, "gsl_hypot(1.2, GSL_POSINF)"); + + y = gsl_hypot (1.2, GSL_NEGINF); + y_expected = GSL_POSINF; + gsl_test_rel (y, y_expected, 1e-15, "gsl_hypot(1.2, GSL_NEGINF)"); + + /* Test NaN, finite */ + + y = gsl_hypot (GSL_NAN, 1.2); + y_expected = GSL_NAN; + gsl_test_rel (y, y_expected, 1e-15, "gsl_hypot(GSL_NAN, 1.2)"); + + y = gsl_hypot (1.2, GSL_NAN); + y_expected = GSL_NAN; + gsl_test_rel (y, y_expected, 1e-15, "gsl_hypot(1.2, GSL_NAN)"); + + /* Test NaN, NaN */ + + y = gsl_hypot (GSL_NAN, GSL_NAN); + y_expected = GSL_NAN; + gsl_test_rel (y, y_expected, 1e-15, "gsl_hypot(GSL_NAN, GSL_NAN)"); + + /* Test +Inf, NaN */ + + y = gsl_hypot (GSL_POSINF, GSL_NAN); + y_expected = GSL_POSINF; + gsl_test_rel (y, y_expected, 1e-15, "gsl_hypot(GSL_POSINF, GSL_NAN)"); + + /* Test -Inf, NaN */ + + y = gsl_hypot (GSL_NEGINF, GSL_NAN); + y_expected = GSL_POSINF; + gsl_test_rel (y, y_expected, 1e-15, "gsl_hypot(GSL_NEGINF, GSL_NAN)"); + + /* Test NaN, +Inf */ + + y = gsl_hypot (GSL_NAN, GSL_POSINF); + y_expected = GSL_POSINF; + gsl_test_rel (y, y_expected, 1e-15, "gsl_hypot(GSL_NAN, GSL_POSINF)"); + + /* Test NaN, -Inf */ + + y = gsl_hypot (GSL_NAN, GSL_NEGINF); + y_expected = GSL_POSINF; + gsl_test_rel (y, y_expected, 1e-15, "gsl_hypot(GSL_NAN, GSL_NEGINF)"); + + /* Test for gsl_hypot3 */ + + y = gsl_hypot3 (0.0, 0.0, 0.0); + y_expected = 0.0; + gsl_test_rel (y, y_expected, 1e-15, "gsl_hypot3(0.0, 0.0, 0.0)"); + + y = gsl_hypot3 (1e-10, 1e-10, 1e-10); + y_expected = 1.732050807568877293527446e-10; + gsl_test_rel (y, y_expected, 1e-15, "gsl_hypot3(1e-10, 1e-10, 1e-10)"); + + y = gsl_hypot3 (1e-38, 1e-38, 1e-38); + y_expected = 1.732050807568877293527446e-38; + gsl_test_rel (y, y_expected, 1e-15, "gsl_hypot3(1e-38, 1e-38, 1e-38)"); + + y = gsl_hypot3 (1e-10, 1e-10, -1.0); + y_expected = 1.000000000000000000099; + gsl_test_rel (y, y_expected, 1e-15, "gsl_hypot3(1e-10, 1e-10, -1)"); + + y = gsl_hypot3 (1e-10, -1.0, 1e-10); + y_expected = 1.000000000000000000099; + gsl_test_rel (y, y_expected, 1e-15, "gsl_hypot3(1e-10, -1, 1e-10)"); + + y = gsl_hypot3 (-1.0, 1e-10, 1e-10); + y_expected = 1.000000000000000000099; + gsl_test_rel (y, y_expected, 1e-15, "gsl_hypot3(-1, 1e-10, 1e-10)"); + + y = gsl_hypot3 (1e307, 1e301, 1e301); + y_expected = 1.0000000000009999999999995e307; + gsl_test_rel (y, y_expected, 1e-15, "gsl_hypot3(1e307, 1e301, 1e301)"); + + y = gsl_hypot3 (1e307, 1e307, 1e307); + y_expected = 1.732050807568877293527446e307; + gsl_test_rel (y, y_expected, 1e-15, "gsl_hypot3(1e307, 1e307, 1e307)"); + + y = gsl_hypot3 (1e307, 1e-307, 1e-307); + y_expected = 1.0e307; + gsl_test_rel (y, y_expected, 1e-15, "gsl_hypot3(1e307, 1e-307, 1e-307)"); + + /* Test for acosh */ + + y = gsl_acosh (1.0); + y_expected = 0.0; + gsl_test_rel (y, y_expected, 1e-15, "gsl_acosh(1.0)"); + + y = gsl_acosh (1.1); + y_expected = 4.435682543851151891329110663525e-1; + gsl_test_rel (y, y_expected, 1e-15, "gsl_acosh(1.1)"); + + y = gsl_acosh (10.0); + y_expected = 2.9932228461263808979126677137742e0; + gsl_test_rel (y, y_expected, 1e-15, "gsl_acosh(10.0)"); + + y = gsl_acosh (1e10); + y_expected = 2.3718998110500402149594646668302e1; + gsl_test_rel (y, y_expected, 1e-15, "gsl_acosh(1e10)"); + + /* Test for asinh */ + + y = gsl_asinh (0.0); + y_expected = 0.0; + gsl_test_rel (y, y_expected, 1e-15, "gsl_asinh(0.0)"); + + y = gsl_asinh (1e-10); + y_expected = 9.9999999999999999999833333333346e-11; + gsl_test_rel (y, y_expected, 1e-15, "gsl_asinh(1e-10)"); + + y = gsl_asinh (-1e-10); + y_expected = -9.9999999999999999999833333333346e-11; + gsl_test_rel (y, y_expected, 1e-15, "gsl_asinh(1e-10)"); + + y = gsl_asinh (0.1); + y_expected = 9.983407889920756332730312470477e-2; + gsl_test_rel (y, y_expected, 1e-15, "gsl_asinh(0.1)"); + + y = gsl_asinh (-0.1); + y_expected = -9.983407889920756332730312470477e-2; + gsl_test_rel (y, y_expected, 1e-15, "gsl_asinh(-0.1)"); + + y = gsl_asinh (1.0); + y_expected = 8.8137358701954302523260932497979e-1; + gsl_test_rel (y, y_expected, 1e-15, "gsl_asinh(1.0)"); + + y = gsl_asinh (-1.0); + y_expected = -8.8137358701954302523260932497979e-1; + gsl_test_rel (y, y_expected, 1e-15, "gsl_asinh(-1.0)"); + + y = gsl_asinh (10.0); + y_expected = 2.9982229502979697388465955375965e0; + gsl_test_rel (y, y_expected, 1e-15, "gsl_asinh(10)"); + + y = gsl_asinh (-10.0); + y_expected = -2.9982229502979697388465955375965e0; + gsl_test_rel (y, y_expected, 1e-15, "gsl_asinh(-10)"); + + y = gsl_asinh (1e10); + y_expected = 2.3718998110500402149599646668302e1; + gsl_test_rel (y, y_expected, 1e-15, "gsl_asinh(1e10)"); + + y = gsl_asinh (-1e10); + y_expected = -2.3718998110500402149599646668302e1; + gsl_test_rel (y, y_expected, 1e-15, "gsl_asinh(-1e10)"); + + /* Test for atanh */ + + y = gsl_atanh (0.0); + y_expected = 0.0; + gsl_test_rel (y, y_expected, 1e-15, "gsl_atanh(0.0)"); + + y = gsl_atanh (1e-20); + y_expected = 1e-20; + gsl_test_rel (y, y_expected, 1e-15, "gsl_atanh(1e-20)"); + + y = gsl_atanh (-1e-20); + y_expected = -1e-20; + gsl_test_rel (y, y_expected, 1e-15, "gsl_atanh(-1e-20)"); + + y = gsl_atanh (0.1); + y_expected = 1.0033534773107558063572655206004e-1; + gsl_test_rel (y, y_expected, 1e-15, "gsl_atanh(0.1)"); + + y = gsl_atanh (-0.1); + y_expected = -1.0033534773107558063572655206004e-1; + gsl_test_rel (y, y_expected, 1e-15, "gsl_atanh(-0.1)"); + + y = gsl_atanh (0.9); + y_expected = 1.4722194895832202300045137159439e0; + gsl_test_rel (y, y_expected, 1e-15, "gsl_atanh(0.9)"); + + y = gsl_atanh (-0.9); + y_expected = -1.4722194895832202300045137159439e0; + gsl_test_rel (y, y_expected, 1e-15, "gsl_atanh(0.9)"); + + /* Test for pow_int */ + + y = gsl_pow_2 (-3.14); + y_expected = pow (-3.14, 2.0); + gsl_test_rel (y, y_expected, 1e-15, "gsl_pow_2(-3.14)"); + + y = gsl_pow_3 (-3.14); + y_expected = pow (-3.14, 3.0); + gsl_test_rel (y, y_expected, 1e-15, "gsl_pow_3(-3.14)"); + + y = gsl_pow_4 (-3.14); + y_expected = pow (-3.14, 4.0); + gsl_test_rel (y, y_expected, 1e-15, "gsl_pow_4(-3.14)"); + + y = gsl_pow_5 (-3.14); + y_expected = pow (-3.14, 5.0); + gsl_test_rel (y, y_expected, 1e-15, "gsl_pow_5(-3.14)"); + + y = gsl_pow_6 (-3.14); + y_expected = pow (-3.14, 6.0); + gsl_test_rel (y, y_expected, 1e-15, "gsl_pow_6(-3.14)"); + + y = gsl_pow_7 (-3.14); + y_expected = pow (-3.14, 7.0); + gsl_test_rel (y, y_expected, 1e-15, "gsl_pow_7(-3.14)"); + + y = gsl_pow_8 (-3.14); + y_expected = pow (-3.14, 8.0); + gsl_test_rel (y, y_expected, 1e-15, "gsl_pow_8(-3.14)"); + + y = gsl_pow_9 (-3.14); + y_expected = pow (-3.14, 9.0); + gsl_test_rel (y, y_expected, 1e-15, "gsl_pow_9(-3.14)"); + + { + int n; + for (n = -9; n < 10; n++) + { + y = gsl_pow_int (-3.14, n); + y_expected = pow (-3.14, n); + gsl_test_rel (y, y_expected, 1e-15, "gsl_pow_int(-3.14,%d)", n); + } + } + + + { + unsigned int n; + for (n = 0; n < 10; n++) + { + y = gsl_pow_uint (-3.14, n); + y_expected = pow (-3.14, n); + gsl_test_rel (y, y_expected, 1e-15, "gsl_pow_uint(-3.14,%d)", n); + } + } + + /* Test case for n at INT_MAX, INT_MIN */ + + { + double u = 1.0000001; + int n = INT_MAX; + y = gsl_pow_int (u, n); + y_expected = pow (u, n); + gsl_test_rel (y, y_expected, 1e-6, "gsl_pow_int(%.7f,%d)", u, n); + + n = INT_MIN; + y = gsl_pow_int (u, n); + y_expected = pow (u, n); + gsl_test_rel (y, y_expected, 1e-6, "gsl_pow_int(%.7f,%d)", u, n); + } + + /* Test for ldexp */ + + y = gsl_ldexp (M_PI, -2); + y_expected = M_PI_4; + gsl_test_rel (y, y_expected, 1e-15, "gsl_ldexp(pi,-2)"); + + y = gsl_ldexp (1.0, 2); + y_expected = 4.000000; + gsl_test_rel (y, y_expected, 1e-15, "gsl_ldexp(1.0,2)"); + + y = gsl_ldexp (0.0, 2); + y_expected = 0.0; + gsl_test_rel (y, y_expected, 1e-15, "gsl_ldexp(0.0,2)"); + + y = gsl_ldexp (9.999999999999998890e-01, 1024); + y_expected = GSL_DBL_MAX; + gsl_test_rel (y, y_expected, 1e-15, "gsl_ldexp DBL_MAX"); + + y = gsl_ldexp (1e308, -2000); + y_expected = 8.7098098162172166755761e-295; + gsl_test_rel (y, y_expected, 1e-15, "gsl_ldexp(1e308,-2000)"); + + y = gsl_ldexp (GSL_DBL_MIN, 2000); + y_expected = 2.554675596204441378334779940e294; + gsl_test_rel (y, y_expected, 1e-15, "gsl_ldexp(DBL_MIN,2000)"); + + /* Test subnormals */ + + { + int i = 0; + volatile double x = GSL_DBL_MIN; + y_expected = 2.554675596204441378334779940e294; + + x /= 2; + while (x > 0) + { + i++ ; + y = gsl_ldexp (x, 2000 + i); + gsl_test_rel (y, y_expected, 1e-15, "gsl_ldexp(DBL_MIN/2**%d,%d)",i,2000+i); + x /= 2; + } + } + + + /* Test for frexp */ + + y = gsl_frexp (0.0, &e); + y_expected = 0; + e_expected = 0; + gsl_test_rel (y, y_expected, 1e-15, "gsl_frexp(0) fraction"); + gsl_test_int (e, e_expected, "gsl_frexp(0) exponent"); + + y = gsl_frexp (M_PI, &e); + y_expected = M_PI_4; + e_expected = 2; + gsl_test_rel (y, y_expected, 1e-15, "gsl_frexp(pi) fraction"); + gsl_test_int (e, e_expected, "gsl_frexp(pi) exponent"); + + y = gsl_frexp (2.0, &e); + y_expected = 0.5; + e_expected = 2; + gsl_test_rel (y, y_expected, 1e-15, "gsl_frexp(2.0) fraction"); + gsl_test_int (e, e_expected, "gsl_frexp(2.0) exponent"); + + y = gsl_frexp (1.0 / 4.0, &e); + y_expected = 0.5; + e_expected = -1; + gsl_test_rel (y, y_expected, 1e-15, "gsl_frexp(0.25) fraction"); + gsl_test_int (e, e_expected, "gsl_frexp(0.25) exponent"); + + y = gsl_frexp (1.0 / 4.0 - 4.0 * GSL_DBL_EPSILON, &e); + y_expected = 0.999999999999996447; + e_expected = -2; + gsl_test_rel (y, y_expected, 1e-15, "gsl_frexp(0.25-eps) fraction"); + gsl_test_int (e, e_expected, "gsl_frexp(0.25-eps) exponent"); + + y = gsl_frexp (GSL_DBL_MAX, &e); + y_expected = 9.999999999999998890e-01; + e_expected = 1024; + gsl_test_rel (y, y_expected, 1e-15, "gsl_frexp(DBL_MAX) fraction"); + gsl_test_int (e, e_expected, "gsl_frexp(DBL_MAX) exponent"); + + y = gsl_frexp (-GSL_DBL_MAX, &e); + y_expected = -9.999999999999998890e-01; + e_expected = 1024; + gsl_test_rel (y, y_expected, 1e-15, "gsl_frexp(-DBL_MAX) fraction"); + gsl_test_int (e, e_expected, "gsl_frexp(-DBL_MAX) exponent"); + + y = gsl_frexp (GSL_DBL_MIN, &e); + y_expected = 0.5; + e_expected = -1021; + gsl_test_rel (y, y_expected, 1e-15, "gsl_frexp(DBL_MIN) fraction"); + gsl_test_int (e, e_expected, "gsl_frexp(DBL_MIN) exponent"); + + y = gsl_frexp (-GSL_DBL_MIN, &e); + y_expected = -0.5; + e_expected = -1021; + gsl_test_rel (y, y_expected, 1e-15, "gsl_frexp(-DBL_MIN) fraction"); + gsl_test_int (e, e_expected, "gsl_frexp(-DBL_MIN) exponent"); + + /* Test subnormals */ + + { + int i = 0; + volatile double x = GSL_DBL_MIN; + y_expected = 0.5; + e_expected = -1021; + + x /= 2; + + while (x > 0) + { + e_expected--; + i++ ; + + y = gsl_frexp (x, &e); + gsl_test_rel (y, y_expected, 1e-15, "gsl_frexp(DBL_MIN/2**%d) fraction",i); + gsl_test_int (e, e_expected, "gsl_frexp(DBL_MIN/2**%d) exponent", i); + x /= 2; + } + } + + + /* Test for approximate floating point comparison */ + { + double x, y; + int i; + + x = M_PI; + y = 22.0 / 7.0; + + /* test the basic function */ + + for (i = 0; i < 10; i++) + { + double tol = pow (10, -i); + int res = gsl_fcmp (x, y, tol); + gsl_test_int (res, -(i >= 4), "gsl_fcmp(%.5f,%.5f,%g)", x, y, tol); + } + + for (i = 0; i < 10; i++) + { + double tol = pow (10, -i); + int res = gsl_fcmp (y, x, tol); + gsl_test_int (res, (i >= 4), "gsl_fcmp(%.5f,%.5f,%g)", y, x, tol); + } + } + + +#if HAVE_IEEE_COMPARISONS + /* Test for isinf, isnan, finite */ + + { + double zero, one, inf, nan; + int s; + + zero = 0.0; + one = 1.0; + inf = exp (1.0e10); + nan = inf / inf; + + s = gsl_isinf (zero); + gsl_test_int (s, 0, "gsl_isinf(0)"); + + s = gsl_isinf (one); + gsl_test_int (s, 0, "gsl_isinf(1)"); + + s = gsl_isinf (inf); + gsl_test_int (s, 1, "gsl_isinf(inf)"); + + s = gsl_isinf (-inf); + gsl_test_int (s, -1, "gsl_isinf(-inf)"); + + s = gsl_isinf (nan); + gsl_test_int (s, 0, "gsl_isinf(nan)"); + + + s = gsl_isnan (zero); + gsl_test_int (s, 0, "gsl_isnan(0)"); + + s = gsl_isnan (one); + gsl_test_int (s, 0, "gsl_isnan(1)"); + + s = gsl_isnan (inf); + gsl_test_int (s, 0, "gsl_isnan(inf)"); + + s = gsl_isnan (-inf); + gsl_test_int (s, 0, "gsl_isnan(-inf)"); + + s = gsl_isnan (nan) != 0; + gsl_test_int (s, 1, "gsl_isnan(nan)"); + + + s = gsl_finite (zero); + gsl_test_int (s, 1, "gsl_finite(0)"); + + s = gsl_finite (one); + gsl_test_int (s, 1, "gsl_finite(1)"); + + s = gsl_finite (inf); + gsl_test_int (s, 0, "gsl_finite(inf)"); + + s = gsl_finite (-inf); + gsl_test_int (s, 0, "gsl_finite(-inf)"); + + s = gsl_finite (nan); + gsl_test_int (s, 0, "gsl_finite(nan)"); + } +#endif + + + { + double x = gsl_fdiv (2.0, 3.0); + gsl_test_rel (x, 2.0 / 3.0, 4 * GSL_DBL_EPSILON, "gsl_fdiv(2,3)"); + } + + + /* Test constants in gsl_math.h */ + + { + double x = log(M_E); + gsl_test_rel (x, 1.0, 4 * GSL_DBL_EPSILON, "ln(M_E)"); + } + + { + double x=pow(2.0,M_LOG2E); + gsl_test_rel (x, exp(1.0), 4 * GSL_DBL_EPSILON, "2^M_LOG2E"); + } + + { + double x=pow(10.0,M_LOG10E); + gsl_test_rel (x, exp(1.0), 4 * GSL_DBL_EPSILON, "10^M_LOG10E"); + } + + { + double x=pow(M_SQRT2, 2.0); + gsl_test_rel (x, 2.0, 4 * GSL_DBL_EPSILON, "M_SQRT2^2"); + } + + { + double x=pow(M_SQRT1_2, 2.0); + gsl_test_rel (x, 1.0/2.0, 4 * GSL_DBL_EPSILON, "M_SQRT1_2"); + } + + { + double x=pow(M_SQRT3, 2.0); + gsl_test_rel (x, 3.0, 4 * GSL_DBL_EPSILON, "M_SQRT3^2"); + } + + { + double x = M_PI; + gsl_test_rel (x, 3.1415926535897932384626433832795, 4 * GSL_DBL_EPSILON, "M_PI"); + } + + { + double x = 2 * M_PI_2; + gsl_test_rel (x, M_PI, 4 * GSL_DBL_EPSILON, "2*M_PI_2"); + } + + { + double x = 4 * M_PI_4; + gsl_test_rel (x, M_PI, 4 * GSL_DBL_EPSILON, "4*M_PI_4"); + } + + { + double x = pow(M_SQRTPI, 2.0); + gsl_test_rel (x, M_PI, 4 * GSL_DBL_EPSILON, "M_SQRTPI^2"); + } + + { + double x = pow(M_2_SQRTPI, 2.0); + gsl_test_rel (x, 4/M_PI, 4 * GSL_DBL_EPSILON, "M_SQRTPI^2"); + } + + { + double x = M_1_PI; + gsl_test_rel (x, 1/M_PI, 4 * GSL_DBL_EPSILON, "M_1_SQRTPI"); + } + + { + double x = M_2_PI; + gsl_test_rel (x, 2.0/M_PI, 4 * GSL_DBL_EPSILON, "M_2_PI"); + } + + { + double x = exp(M_LN10); + gsl_test_rel (x, 10, 4 * GSL_DBL_EPSILON, "exp(M_LN10)"); + } + + { + double x = exp(M_LN2); + gsl_test_rel (x, 2, 4 * GSL_DBL_EPSILON, "exp(M_LN2)"); + } + + { + double x = exp(M_LNPI); + gsl_test_rel (x, M_PI, 4 * GSL_DBL_EPSILON, "exp(M_LNPI)"); + } + + { + double x = M_EULER; + gsl_test_rel (x, 0.5772156649015328606065120900824, 4 * GSL_DBL_EPSILON, "M_EULER"); + } + + exit (gsl_test_summary ()); +} diff --git a/gsl-2.5/sys/test.log b/gsl-2.5/sys/test.log new file mode 100644 index 00000000..9a3095cc --- /dev/null +++ b/gsl-2.5/sys/test.log @@ -0,0 +1 @@ +Completed [333/333] diff --git a/gsl-2.5/sys/test.trs b/gsl-2.5/sys/test.trs new file mode 100644 index 00000000..3f0f396c --- /dev/null +++ b/gsl-2.5/sys/test.trs @@ -0,0 +1,4 @@ +:test-result: PASS +:global-test-result: PASS +:recheck: no +:copy-in-global-log: no diff --git a/gsl-2.5/templates_off.h b/gsl-2.5/templates_off.h new file mode 100644 index 00000000..9b235adf --- /dev/null +++ b/gsl-2.5/templates_off.h @@ -0,0 +1,92 @@ +#ifdef FUNCTION +#undef FUNCTION +#endif + +#ifdef CONCAT4 +#undef CONCAT4 +#endif + +#ifdef CONCAT4x +#undef CONCAT4x +#endif + +#ifdef CONCAT3 +#undef CONCAT3 +#endif + +#ifdef CONCAT3x +#undef CONCAT3x +#endif + +#ifdef CONCAT2 +#undef CONCAT2 +#endif + +#ifdef CONCAT2x +#undef CONCAT2x +#endif + +#ifdef TYPE +#undef TYPE +#endif + +#ifdef REAL_TYPE +#undef REAL_TYPE +#endif + +#ifdef QUALIFIED_TYPE +#undef QUALIFIED_TYPE +#endif + +#ifdef VIEW +#undef VIEW +#endif + +#ifdef REAL_VIEW +#undef REAL_VIEW +#endif + +#ifdef QUALIFIED_VIEW +#undef QUALIFIED_VIEW +#endif + +#ifdef QUALIFIED_REAL_TYPE +#undef QUALIFIED_REAL_TYPE +#endif + +#ifdef QUALIFIED_REAL_VIEW +#undef QUALIFIED_REAL_VIEW +#endif + +#ifdef USES_LONGDOUBLE +#undef USES_LONGDOUBLE +#endif + +#ifdef SHORT_REAL +#undef SHORT_REAL +#endif + +#ifndef USE_QUALIFIER +#ifdef QUALIFIER +#undef QUALIFIER +#endif +#endif + +#undef BASE +#undef BASE_EPSILON +#undef SHORT +#undef ATOMIC +#undef MULTIPLICITY +#undef IN_FORMAT +#undef OUT_FORMAT +#undef ATOMIC_IO +#undef ZERO +#undef ONE +#undef NAME +#undef STRING +#undef EXPAND +#undef UNSIGNED + +#ifdef FP +#undef FP +#endif diff --git a/gsl-2.5/templates_on.h b/gsl-2.5/templates_on.h new file mode 100644 index 00000000..2e51543b --- /dev/null +++ b/gsl-2.5/templates_on.h @@ -0,0 +1,257 @@ +/* If BASE is undefined we use function names like gsl_name() + and assume that we are using doubles. + + If BASE is defined we used function names like gsl_BASE_name() + and use BASE as the base datatype */ + +#if defined(BASE_GSL_COMPLEX_LONG) +#define BASE gsl_complex_long_double +#define SHORT complex_long_double +#define SHORT_REAL long_double +#define ATOMIC long double +#define USES_LONGDOUBLE 1 +#define MULTIPLICITY 2 +#define FP 1 +#define IN_FORMAT "%Lg" +#define OUT_FORMAT "%Lg" +#define ATOMIC_IO ATOMIC +#define ZERO {{0.0L,0.0L}} +#define ONE {{1.0L,0.0L}} +#define BASE_EPSILON GSL_DBL_EPSILON + +#elif defined(BASE_GSL_COMPLEX) +#if defined(_MSC_VER) && defined(complex) +#undef complex +#endif +#define BASE gsl_complex +#define SHORT complex +#define SHORT_REAL +#define ATOMIC double +#define MULTIPLICITY 2 +#define FP 1 +#define IN_FORMAT "%lg" +#define OUT_FORMAT "%g" +#define ATOMIC_IO ATOMIC +#define ZERO {{0.0,0.0}} +#define ONE {{1.0,0.0}} +#define BASE_EPSILON GSL_DBL_EPSILON + +#elif defined(BASE_GSL_COMPLEX_FLOAT) +#define BASE gsl_complex_float +#define SHORT complex_float +#define SHORT_REAL float +#define ATOMIC float +#define MULTIPLICITY 2 +#define FP 1 +#define IN_FORMAT "%g" +#define OUT_FORMAT "%g" +#define ATOMIC_IO ATOMIC +#define ZERO {{0.0F,0.0F}} +#define ONE {{1.0F,0.0F}} +#define BASE_EPSILON GSL_FLT_EPSILON + +#elif defined(BASE_LONG_DOUBLE) +#define BASE long double +#define SHORT long_double +#define ATOMIC long double +#define USES_LONGDOUBLE 1 +#define MULTIPLICITY 1 +#define FP 1 +#define IN_FORMAT "%Lg" +#define OUT_FORMAT "%Lg" +#define ATOMIC_IO ATOMIC +#define ZERO 0.0L +#define ONE 1.0L +#define BASE_EPSILON GSL_DBL_EPSILON + +#elif defined(BASE_DOUBLE) +#define BASE double +#define SHORT +#define ATOMIC double +#define MULTIPLICITY 1 +#define FP 1 +#define IN_FORMAT "%lg" +#define OUT_FORMAT "%g" +#define ATOMIC_IO ATOMIC +#define ZERO 0.0 +#define ONE 1.0 +#define BASE_EPSILON GSL_DBL_EPSILON + +#elif defined(BASE_FLOAT) +#define BASE float +#define SHORT float +#define ATOMIC float +#define MULTIPLICITY 1 +#define FP 1 +#define IN_FORMAT "%g" +#define OUT_FORMAT "%g" +#define ATOMIC_IO ATOMIC +#define ZERO 0.0F +#define ONE 1.0F +#define BASE_EPSILON GSL_FLT_EPSILON + +#elif defined(BASE_ULONG) +#define BASE unsigned long +#define SHORT ulong +#define ATOMIC unsigned long +#define MULTIPLICITY 1 +#define IN_FORMAT "%lu" +#define OUT_FORMAT "%lu" +#define ATOMIC_IO ATOMIC +#define ZERO 0UL +#define ONE 1UL +#define UNSIGNED 1 + +#elif defined(BASE_LONG) +#define BASE long +#define SHORT long +#define ATOMIC long +#define MULTIPLICITY 1 +#define IN_FORMAT "%ld" +#define OUT_FORMAT "%ld" +#define ATOMIC_IO ATOMIC +#define ZERO 0L +#define ONE 1L + +#elif defined(BASE_UINT) +#define BASE unsigned int +#define SHORT uint +#define ATOMIC unsigned int +#define MULTIPLICITY 1 +#define IN_FORMAT "%u" +#define OUT_FORMAT "%u" +#define ATOMIC_IO ATOMIC +#define ZERO 0U +#define ONE 1U +#define UNSIGNED 1 + +#elif defined(BASE_INT) +#define BASE int +#define SHORT int +#define ATOMIC int +#define MULTIPLICITY 1 +#define IN_FORMAT "%d" +#define OUT_FORMAT "%d" +#define ATOMIC_IO ATOMIC +#define ZERO 0 +#define ONE 1 + +#elif defined(BASE_USHORT) +#define BASE unsigned short +#define SHORT ushort +#define ATOMIC unsigned short +#define MULTIPLICITY 1 +#define IN_FORMAT "%hu" +#define OUT_FORMAT "%hu" +#define ATOMIC_IO ATOMIC +#define ZERO 0U +#define ONE 1U +#define UNSIGNED 1 + +#elif defined(BASE_SHORT) +#define BASE short +#define SHORT short +#define ATOMIC short +#define MULTIPLICITY 1 +#define IN_FORMAT "%hd" +#define OUT_FORMAT "%hd" +#define ATOMIC_IO ATOMIC +#define ZERO 0 +#define ONE 1 + +#elif defined(BASE_UCHAR) +#define BASE unsigned char +#define SHORT uchar +#define ATOMIC unsigned char +#define MULTIPLICITY 1 +#define IN_FORMAT "%u" +#define OUT_FORMAT "%u" +#define ATOMIC_IO unsigned int +#define ZERO 0U +#define ONE 1U +#define UNSIGNED 1 + +#elif defined(BASE_CHAR) +#define BASE char +#define SHORT char +#define ATOMIC char +#define MULTIPLICITY 1 +#define IN_FORMAT "%d" +#define OUT_FORMAT "%d" +#define ATOMIC_IO int +#define ZERO 0 +#define ONE 1 +#ifdef __CHAR_UNSIGNED__ +#define UNSIGNED 1 +#endif + +#else +#error unknown BASE_ directive in source.h +#endif + +#define CONCAT2x(a,b) a ## _ ## b +#define CONCAT2(a,b) CONCAT2x(a,b) +#define CONCAT3x(a,b,c) a ## _ ## b ## _ ## c +#define CONCAT3(a,b,c) CONCAT3x(a,b,c) +#define CONCAT4x(a,b,c,d) a ## _ ## b ## _ ## c ## _ ## d +#define CONCAT4(a,b,c,d) CONCAT4x(a,b,c,d) + +#ifndef USE_QUALIFIER +#define QUALIFIER +#endif + +#ifdef USE_QUALIFIER +#if defined(BASE_DOUBLE) +#define FUNCTION(dir,name) CONCAT3(dir,QUALIFIER,name) +#define TYPE(dir) dir +#define VIEW(dir,name) CONCAT2(dir,name) +#define QUALIFIED_TYPE(dir) QUALIFIER dir +#define QUALIFIED_VIEW(dir,name) CONCAT3(dir,QUALIFIER,name) +#else +#define FUNCTION(a,c) CONCAT4(a,SHORT,QUALIFIER,c) +#define TYPE(dir) CONCAT2(dir,SHORT) +#define VIEW(dir,name) CONCAT3(dir,SHORT,name) +#define QUALIFIED_TYPE(dir) QUALIFIER CONCAT2(dir,SHORT) +#define QUALIFIED_VIEW(dir,name) CONCAT4(dir,SHORT,QUALIFIER,name) +#endif +#if defined(BASE_GSL_COMPLEX) +#define REAL_TYPE(dir) dir +#define REAL_VIEW(dir,name) CONCAT2(dir,name) +#define QUALIFIED_REAL_TYPE(dir) QUALIFIER dir +#define QUALIFIED_REAL_VIEW(dir,name) CONCAT3(dir,QUALIFIER,name) +#else +#define REAL_TYPE(dir) CONCAT2(dir,SHORT_REAL) +#define REAL_VIEW(dir,name) CONCAT3(dir,SHORT_REAL,name) +#define QUALIFIED_REAL_TYPE(dir) QUALIFIER CONCAT2(dir,SHORT_REAL) +#define QUALIFIED_REAL_VIEW(dir,name) CONCAT4(dir,SHORT_REAL,QUALIFIER,name) +#endif +#else +#if defined(BASE_DOUBLE) +#define FUNCTION(dir,name) CONCAT2(dir,name) +#define TYPE(dir) dir +#define VIEW(dir,name) CONCAT2(dir,name) +#define QUALIFIED_TYPE(dir) TYPE(dir) +#define QUALIFIED_VIEW(dir,name) CONCAT2(dir,name) +#else +#define FUNCTION(a,c) CONCAT3(a,SHORT,c) +#define TYPE(dir) CONCAT2(dir,SHORT) +#define VIEW(dir,name) CONCAT3(dir,SHORT,name) +#define QUALIFIED_TYPE(dir) TYPE(dir) +#define QUALIFIED_VIEW(dir,name) CONCAT3(dir,SHORT,name) +#endif +#if defined(BASE_GSL_COMPLEX) +#define REAL_TYPE(dir) dir +#define REAL_VIEW(dir,name) CONCAT2(dir,name) +#define QUALIFIED_REAL_TYPE(dir) dir +#define QUALIFIED_REAL_VIEW(dir,name) CONCAT2(dir,name) +#else +#define REAL_TYPE(dir) CONCAT2(dir,SHORT_REAL) +#define REAL_VIEW(dir,name) CONCAT3(dir,SHORT_REAL,name) +#define QUALIFIED_REAL_TYPE(dir) CONCAT2(dir,SHORT_REAL) +#define QUALIFIED_REAL_VIEW(dir,name) CONCAT3(dir,SHORT_REAL,name) +#endif +#endif + +#define STRING(x) #x +#define EXPAND(x) STRING(x) +#define NAME(x) EXPAND(TYPE(x)) diff --git a/gsl-2.5/test-driver b/gsl-2.5/test-driver new file mode 100755 index 00000000..32bf39e8 --- /dev/null +++ b/gsl-2.5/test-driver @@ -0,0 +1,127 @@ +#! /bin/sh +# test-driver - basic testsuite driver script. + +scriptversion=2012-06-27.10; # UTC + +# Copyright (C) 2011-2013 Free Software Foundation, Inc. +# +# 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, or (at your option) +# any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# This file is maintained in Automake, please report +# bugs to or send patches to +# . + +# Make unconditional expansion of undefined variables an error. This +# helps a lot in preventing typo-related bugs. +set -u + +usage_error () +{ + echo "$0: $*" >&2 + print_usage >&2 + exit 2 +} + +print_usage () +{ + cat <$log_file 2>&1 +estatus=$? +if test $enable_hard_errors = no && test $estatus -eq 99; then + estatus=1 +fi + +case $estatus:$expect_failure in + 0:yes) col=$red res=XPASS recheck=yes gcopy=yes;; + 0:*) col=$grn res=PASS recheck=no gcopy=no;; + 77:*) col=$blu res=SKIP recheck=no gcopy=yes;; + 99:*) col=$mgn res=ERROR recheck=yes gcopy=yes;; + *:yes) col=$lgn res=XFAIL recheck=no gcopy=yes;; + *:*) col=$red res=FAIL recheck=yes gcopy=yes;; +esac + +# Report outcome to console. +echo "${col}${res}${std}: $test_name" + +# Register the test result, and other relevant metadata. +echo ":test-result: $res" > $trs_file +echo ":global-test-result: $res" >> $trs_file +echo ":recheck: $recheck" >> $trs_file +echo ":copy-in-global-log: $gcopy" >> $trs_file + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC" +# time-stamp-end: "; # UTC" +# End: diff --git a/gsl-2.5/test-suite.log b/gsl-2.5/test-suite.log new file mode 100644 index 00000000..5d2d431b --- /dev/null +++ b/gsl-2.5/test-suite.log @@ -0,0 +1,14 @@ +=============================== + gsl 2.5: ./test-suite.log +=============================== + +# TOTAL: 2 +# PASS: 2 +# SKIP: 0 +# XFAIL: 0 +# FAIL: 0 +# XPASS: 0 +# ERROR: 0 + +.. contents:: :depth: 2 + diff --git a/gsl-2.5/test/.deps/results.Plo b/gsl-2.5/test/.deps/results.Plo new file mode 100644 index 00000000..f7c27c63 --- /dev/null +++ b/gsl-2.5/test/.deps/results.Plo @@ -0,0 +1,149 @@ +results.lo: results.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/math.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h /usr/include/string.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/xlocale.h /usr/include/bits/string.h \ + /usr/include/bits/string2.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/byteswap.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/bits/byteswap-16.h /usr/include/stdlib.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/sys/types.h \ + /usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib-float.h ../gsl/gsl_sys.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h ../gsl/gsl_test.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/math.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +/usr/include/string.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string.h: + +/usr/include/bits/string2.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/stdlib.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_test.h: diff --git a/gsl-2.5/test/.libs/libgsltest.la b/gsl-2.5/test/.libs/libgsltest.la new file mode 120000 index 00000000..ea985da0 --- /dev/null +++ b/gsl-2.5/test/.libs/libgsltest.la @@ -0,0 +1 @@ +../libgsltest.la \ No newline at end of file diff --git a/gsl-2.5/test/ChangeLog b/gsl-2.5/test/ChangeLog new file mode 100644 index 00000000..b93407d6 --- /dev/null +++ b/gsl-2.5/test/ChangeLog @@ -0,0 +1,32 @@ +2005-06-21 Brian Gough + + * results.c: now displayed PASS lines only if GSL_TEST_VERBOSE=1, + otherwise only display fail lines by default. + +Thu Sep 12 22:56:31 2002 Brian Gough + + * results.c (gsl_test_rel): catch NaN + (gsl_test_abs): catch NaN + +Fri Sep 28 10:40:21 2001 Brian Gough + + * results.c: use the definition STDC_HEADERS instead of __STDC__ + as recommended by the autoconf manual + +Thu Sep 6 10:17:10 2001 Brian Gough + + * results.c (gsl_test_factor): fixed factor to work for case of + 0==0 without dividing by zero + +Wed Nov 29 10:42:57 2000 Brian Gough + + * results.c (gsl_test_factor): added a test for two results being + within a given factor of each other (e.g. "result should be good + to within a factor of 2"). Note that this is different from the + definition of relative error, which starts with a measurement of + the difference by subtraction. + +Fri May 5 11:20:36 2000 Brian Gough + + * split out gsl_test code from err/ directory + diff --git a/gsl-2.5/test/Makefile b/gsl-2.5/test/Makefile new file mode 100644 index 00000000..25a0d96d --- /dev/null +++ b/gsl-2.5/test/Makefile @@ -0,0 +1,659 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# test/Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + + + + +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/gsl +pkgincludedir = $(includedir)/gsl +pkglibdir = $(libdir)/gsl +pkglibexecdir = $(libexecdir)/gsl +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = x86_64-unknown-linux-gnu +host_triplet = x86_64-unknown-linux-gnu +subdir = test +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp \ + $(pkginclude_HEADERS) ChangeLog +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +libgsltest_la_LIBADD = +am_libgsltest_la_OBJECTS = results.lo +libgsltest_la_OBJECTS = $(am_libgsltest_la_OBJECTS) +AM_V_lt = $(am__v_lt_$(V)) +am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) +am__v_lt_0 = --silent +am__v_lt_1 = +AM_V_P = $(am__v_P_$(V)) +am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY)) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_$(V)) +am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_$(V)) +am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I. -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_$(V)) +am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_$(V)) +am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libgsltest_la_SOURCES) +DIST_SOURCES = $(libgsltest_la_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(pkgincludedir)" +HEADERS = $(pkginclude_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing aclocal-1.13 +AMTAR = $${TAR-tar} +AM_DEFAULT_VERBOSITY = 1 +AR = ar +AS = as +AUTOCONF = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing autoconf +AUTOHEADER = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing autoheader +AUTOMAKE = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing automake-1.13 +AWK = gawk +CC = gcc +CCDEPMODE = depmode=gcc3 +CFLAGS = -g -O2 +CPP = gcc -E +CPPFLAGS = +CYGPATH_W = echo +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +DLLTOOL = false +DSYMUTIL = +DUMPBIN = +ECHO_C = +ECHO_N = -n +ECHO_T = +EGREP = /usr/bin/grep -E +EXEEXT = +FGREP = /usr/bin/grep -F +GREP = /usr/bin/grep +GSLCBLAS_LDFLAGS = +GSL_CFLAGS = -I${prefix}/include +GSL_LDFLAGS = +GSL_LIBADD = +GSL_LIBM = -lm +GSL_LIBS = -L${exec_prefix}/lib -lgsl +GSL_LT_CBLAS_VERSION = 0:0:0 +GSL_LT_VERSION = 24:0:1 +GSL_MAJOR_VERSION = 2 +GSL_MINOR_VERSION = 5 +HAVE_AIX_IEEE_INTERFACE = +HAVE_DARWIN86_IEEE_INTERFACE = +HAVE_DARWIN_IEEE_INTERFACE = +HAVE_FREEBSD_IEEE_INTERFACE = +HAVE_GNUM68K_IEEE_INTERFACE = +HAVE_GNUPPC_IEEE_INTERFACE = +HAVE_GNUSPARC_IEEE_INTERFACE = +HAVE_GNUX86_IEEE_INTERFACE = +HAVE_HPUX11_IEEE_INTERFACE = +HAVE_HPUX_IEEE_INTERFACE = +HAVE_IRIX_IEEE_INTERFACE = +HAVE_NETBSD_IEEE_INTERFACE = +HAVE_OPENBSD_IEEE_INTERFACE = +HAVE_OS2EMX_IEEE_INTERFACE = +HAVE_SOLARIS_IEEE_INTERFACE = +HAVE_SUNOS4_IEEE_INTERFACE = +HAVE_TRU64_IEEE_INTERFACE = +INSTALL = /usr/bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = $(install_sh) -c -s +LD = /usr/bin/ld -m elf_x86_64 +LDFLAGS = +LIBM = -lm +LIBOBJS = +LIBS = -lm +LIBTOOL = $(SHELL) $(top_builddir)/libtool +LIPO = +LN_S = ln -s +LTLIBOBJS = +MAINT = # +MAKEINFO = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing makeinfo +MANIFEST_TOOL = : +MKDIR_P = /usr/bin/mkdir -p +NM = /usr/bin/nm -B +NMEDIT = +OBJDUMP = objdump +OBJEXT = o +OTOOL = +OTOOL64 = +PACKAGE = gsl +PACKAGE_BUGREPORT = +PACKAGE_NAME = gsl +PACKAGE_STRING = gsl 2.5 +PACKAGE_TARNAME = gsl +PACKAGE_URL = +PACKAGE_VERSION = 2.5 +PATH_SEPARATOR = : +RANLIB = ranlib +SED = /usr/bin/sed +SET_MAKE = +SHELL = /bin/sh +STRIP = strip +VERSION = 2.5 +abs_builddir = /home/groups/kipac/chto/package/gsl/gsl-2.5/test +abs_srcdir = /home/groups/kipac/chto/package/gsl/gsl-2.5/test +abs_top_builddir = /home/groups/kipac/chto/package/gsl/gsl-2.5 +abs_top_srcdir = /home/groups/kipac/chto/package/gsl/gsl-2.5 +ac_ct_AR = ar +ac_ct_CC = gcc +ac_ct_DUMPBIN = +am__include = include +am__leading_dot = . +am__quote = +am__tar = $${TAR-tar} chof - "$$tardir" +am__untar = $${TAR-tar} xf - +bindir = ${exec_prefix}/bin +build = x86_64-unknown-linux-gnu +build_alias = +build_cpu = x86_64 +build_os = linux-gnu +build_vendor = unknown +builddir = . +datadir = ${datarootdir} +datarootdir = ${prefix}/share +docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} +dvidir = ${docdir} +exec_prefix = ${prefix} +host = x86_64-unknown-linux-gnu +host_alias = +host_cpu = x86_64 +host_os = linux-gnu +host_vendor = unknown +htmldir = ${docdir} +includedir = ${prefix}/include +infodir = ${datarootdir}/info +install_sh = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/install-sh +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +localedir = ${datarootdir}/locale +localstatedir = ${prefix}/var +mandir = ${datarootdir}/man +mkdir_p = $(MKDIR_P) +oldincludedir = /usr/include +pdfdir = ${docdir} +prefix = /home/groups/kipac/chto/package/gsl/gsl_lib +program_transform_name = s,x,x, +psdir = ${docdir} +sbindir = ${exec_prefix}/sbin +sharedstatedir = ${prefix}/com +srcdir = . +sysconfdir = ${prefix}/etc +target_alias = +top_build_prefix = ../ +top_builddir = .. +top_srcdir = .. +noinst_LTLIBRARIES = libgsltest.la +pkginclude_HEADERS = gsl_test.h +libgsltest_la_SOURCES = results.c +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu test/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu test/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: # $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): # $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libgsltest.la: $(libgsltest_la_OBJECTS) $(libgsltest_la_DEPENDENCIES) $(EXTRA_libgsltest_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(libgsltest_la_OBJECTS) $(libgsltest_la_LIBADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +include ./$(DEPDIR)/results.Plo + +.c.o: + $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# $(AM_V_CC)source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(COMPILE) -c $< + +.c.obj: + $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# $(AM_V_CC)source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: + $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +# $(AM_V_CC)source='$<' object='$@' libtool=yes \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-pkgincludeHEADERS: $(pkginclude_HEADERS) + @$(NORMAL_INSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \ + done + +uninstall-pkgincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(LTLIBRARIES) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(pkgincludedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ + mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-pkgincludeHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-pkgincludeHEADERS + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-noinstLTLIBRARIES cscopelist-am ctags \ + ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-pkgincludeHEADERS install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \ + uninstall-pkgincludeHEADERS + + +#check_PROGRAMS = test +#TESTS = test +#test_SOURCES = test_errnos.c +#test_LDADD = libgsltest.la ../sys/libgslsys.la ../utils/libutils.la + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gsl-2.5/test/Makefile.am b/gsl-2.5/test/Makefile.am new file mode 100644 index 00000000..b6fe04de --- /dev/null +++ b/gsl-2.5/test/Makefile.am @@ -0,0 +1,10 @@ +noinst_LTLIBRARIES = libgsltest.la + +pkginclude_HEADERS = gsl_test.h + +libgsltest_la_SOURCES = results.c + +#check_PROGRAMS = test +#TESTS = test +#test_SOURCES = test_errnos.c +#test_LDADD = libgsltest.la ../sys/libgslsys.la ../utils/libutils.la diff --git a/gsl-2.5/test/Makefile.in b/gsl-2.5/test/Makefile.in new file mode 100644 index 00000000..5858a41a --- /dev/null +++ b/gsl-2.5/test/Makefile.in @@ -0,0 +1,659 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + + +VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = test +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp \ + $(pkginclude_HEADERS) ChangeLog +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +libgsltest_la_LIBADD = +am_libgsltest_la_OBJECTS = results.lo +libgsltest_la_OBJECTS = $(am_libgsltest_la_OBJECTS) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libgsltest_la_SOURCES) +DIST_SOURCES = $(libgsltest_la_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(pkgincludedir)" +HEADERS = $(pkginclude_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +GSLCBLAS_LDFLAGS = @GSLCBLAS_LDFLAGS@ +GSL_CFLAGS = @GSL_CFLAGS@ +GSL_LDFLAGS = @GSL_LDFLAGS@ +GSL_LIBADD = @GSL_LIBADD@ +GSL_LIBM = @GSL_LIBM@ +GSL_LIBS = @GSL_LIBS@ +GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ +GSL_LT_VERSION = @GSL_LT_VERSION@ +GSL_MAJOR_VERSION = @GSL_MAJOR_VERSION@ +GSL_MINOR_VERSION = @GSL_MINOR_VERSION@ +HAVE_AIX_IEEE_INTERFACE = @HAVE_AIX_IEEE_INTERFACE@ +HAVE_DARWIN86_IEEE_INTERFACE = @HAVE_DARWIN86_IEEE_INTERFACE@ +HAVE_DARWIN_IEEE_INTERFACE = @HAVE_DARWIN_IEEE_INTERFACE@ +HAVE_FREEBSD_IEEE_INTERFACE = @HAVE_FREEBSD_IEEE_INTERFACE@ +HAVE_GNUM68K_IEEE_INTERFACE = @HAVE_GNUM68K_IEEE_INTERFACE@ +HAVE_GNUPPC_IEEE_INTERFACE = @HAVE_GNUPPC_IEEE_INTERFACE@ +HAVE_GNUSPARC_IEEE_INTERFACE = @HAVE_GNUSPARC_IEEE_INTERFACE@ +HAVE_GNUX86_IEEE_INTERFACE = @HAVE_GNUX86_IEEE_INTERFACE@ +HAVE_HPUX11_IEEE_INTERFACE = @HAVE_HPUX11_IEEE_INTERFACE@ +HAVE_HPUX_IEEE_INTERFACE = @HAVE_HPUX_IEEE_INTERFACE@ +HAVE_IRIX_IEEE_INTERFACE = @HAVE_IRIX_IEEE_INTERFACE@ +HAVE_NETBSD_IEEE_INTERFACE = @HAVE_NETBSD_IEEE_INTERFACE@ +HAVE_OPENBSD_IEEE_INTERFACE = @HAVE_OPENBSD_IEEE_INTERFACE@ +HAVE_OS2EMX_IEEE_INTERFACE = @HAVE_OS2EMX_IEEE_INTERFACE@ +HAVE_SOLARIS_IEEE_INTERFACE = @HAVE_SOLARIS_IEEE_INTERFACE@ +HAVE_SUNOS4_IEEE_INTERFACE = @HAVE_SUNOS4_IEEE_INTERFACE@ +HAVE_TRU64_IEEE_INTERFACE = @HAVE_TRU64_IEEE_INTERFACE@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBM = @LIBM@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +noinst_LTLIBRARIES = libgsltest.la +pkginclude_HEADERS = gsl_test.h +libgsltest_la_SOURCES = results.c +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu test/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu test/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libgsltest.la: $(libgsltest_la_OBJECTS) $(libgsltest_la_DEPENDENCIES) $(EXTRA_libgsltest_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(libgsltest_la_OBJECTS) $(libgsltest_la_LIBADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/results.Plo@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-pkgincludeHEADERS: $(pkginclude_HEADERS) + @$(NORMAL_INSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \ + done + +uninstall-pkgincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(LTLIBRARIES) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(pkgincludedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ + mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-pkgincludeHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-pkgincludeHEADERS + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-noinstLTLIBRARIES cscopelist-am ctags \ + ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-pkgincludeHEADERS install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \ + uninstall-pkgincludeHEADERS + + +#check_PROGRAMS = test +#TESTS = test +#test_SOURCES = test_errnos.c +#test_LDADD = libgsltest.la ../sys/libgslsys.la ../utils/libutils.la + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gsl-2.5/test/gsl_test.h b/gsl-2.5/test/gsl_test.h new file mode 100644 index 00000000..bb86896c --- /dev/null +++ b/gsl-2.5/test/gsl_test.h @@ -0,0 +1,66 @@ +/* err/gsl_test.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_TEST_H__ +#define __GSL_TEST_H__ + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +void + gsl_test (int status, const char *test_description, ...); + +void +gsl_test_rel (double result, double expected, double relative_error, + const char *test_description, ...) ; + +void +gsl_test_abs (double result, double expected, double absolute_error, + const char *test_description, ...) ; + +void +gsl_test_factor (double result, double expected, double factor, + const char *test_description, ...) ; + +void +gsl_test_int (int result, int expected, const char *test_description, ...) ; + +void +gsl_test_str (const char * result, const char * expected, + const char *test_description, ...) ; + +void + gsl_test_verbose (int verbose) ; + +int + gsl_test_summary (void) ; + + +__END_DECLS + +#endif /* __GSL_TEST_H__ */ diff --git a/gsl-2.5/test/libgsltest.la b/gsl-2.5/test/libgsltest.la new file mode 100644 index 00000000..7862c5aa --- /dev/null +++ b/gsl-2.5/test/libgsltest.la @@ -0,0 +1,41 @@ +# libgsltest.la - a libtool library file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='' + +# Names of this library. +library_names='' + +# The name of the static archive. +old_library='libgsltest.a' + +# Linker flags that can not go in dependency_libs. +inherited_linker_flags='' + +# Libraries that this one depends upon. +dependency_libs=' -lm' + +# Names of additional weak libraries provided by this library +weak_library_names='' + +# Version information for libgsltest. +current= +age= +revision= + +# Is this an already installed library? +installed=no + +# Should we warn about portability when linking against -modules? +shouldnotlink=no + +# Files to dlopen/dlpreopen +dlopen='' +dlpreopen='' + +# Directory that this library needs to be installed in: +libdir='' diff --git a/gsl-2.5/test/results.c b/gsl-2.5/test/results.c new file mode 100644 index 00000000..0e37effc --- /dev/null +++ b/gsl-2.5/test/results.c @@ -0,0 +1,461 @@ +/* err/test_results.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include +#include + +#if HAVE_VPRINTF +#ifdef STDC_HEADERS +#include +#else +#include +#endif +#endif + +#include + +static unsigned int tests = 0; +static unsigned int passed = 0; +static unsigned int failed = 0; + +static unsigned int verbose = 0; + +static void +initialise (void) +{ + const char * p = getenv("GSL_TEST_VERBOSE"); + + /* 0 = show failures only (we always want to see these) */ + /* 1 = show passes and failures */ + + if (p == 0) /* environment variable is not set */ + return ; + + if (*p == '\0') /* environment variable is empty */ + return ; + + verbose = strtoul (p, 0, 0); + + return; +} + +static void +update (int s) +{ + tests++; + + if (s == 0) + { + passed++; + } + else + { + failed++; + } +} + +void +gsl_test (int status, const char *test_description,...) +{ + if (!tests) initialise(); + + update (status); + + if (status || verbose) + { + printf (status ? "FAIL: " : "PASS: "); + +#if HAVE_VPRINTF + { + va_list ap; +#ifdef STDC_HEADERS + va_start (ap, test_description); +#else + va_start (ap); +#endif + vprintf (test_description, ap); + va_end (ap); + } +#endif + + if (status && !verbose) + printf(" [%u]", tests); + + printf("\n"); + fflush (stdout); + } +} + + +void +gsl_test_rel (double result, double expected, double relative_error, + const char *test_description,...) +{ + int status ; + + if (!tests) initialise(); + + /* Check for NaN vs inf vs number */ + + if (gsl_isnan(result) || gsl_isnan(expected)) + { + status = gsl_isnan(result) != gsl_isnan(expected); + } + else if (gsl_isinf(result) || gsl_isinf(expected)) + { + status = gsl_isinf(result) != gsl_isinf(expected); + } + else if ((expected > 0 && expected < GSL_DBL_MIN) + || (expected < 0 && expected > -(GSL_DBL_MIN))) + { + status = -1; + } + else if (expected != 0 ) + { + status = (fabs(result-expected)/fabs(expected) > relative_error) ; + } + else + { + status = (fabs(result) > relative_error) ; + } + + update (status); + + if (status || verbose) + { + printf (status ? "FAIL: " : "PASS: "); + +#if HAVE_VPRINTF + { + va_list ap; +#ifdef STDC_HEADERS + va_start (ap, test_description); +#else + va_start (ap); +#endif + vprintf (test_description, ap); + va_end (ap); + } +#endif + + if (status == 0) + { + if (strlen(test_description) < 45) + { + printf(" (%g observed vs %g expected)", result, expected) ; + } + else + { + printf(" (%g obs vs %g exp)", result, expected) ; + } + } + else + { + printf(" (%.18g observed vs %.18g expected)", result, expected) ; + } + + if (status == -1) + { + printf(" [test uses subnormal value]") ; + } + + if (status && !verbose) + printf(" [%u]", tests); + + printf ("\n") ; + fflush (stdout); + } +} + +void +gsl_test_abs (double result, double expected, double absolute_error, + const char *test_description,...) +{ + int status ; + + if (!tests) initialise(); + + /* Check for NaN vs inf vs number */ + + if (gsl_isnan(result) || gsl_isnan(expected)) + { + status = gsl_isnan(result) != gsl_isnan(expected); + } + else if (gsl_isinf(result) || gsl_isinf(expected)) + { + status = gsl_isinf(result) != gsl_isinf(expected); + } + else if ((expected > 0 && expected < GSL_DBL_MIN) + || (expected < 0 && expected > -(GSL_DBL_MIN))) + { + status = -1; + } + else + { + status = fabs(result-expected) > absolute_error ; + } + + update (status); + + if (status || verbose) + { + printf (status ? "FAIL: " : "PASS: "); + +#if HAVE_VPRINTF + { + va_list ap; + +#ifdef STDC_HEADERS + va_start (ap, test_description); +#else + va_start (ap); +#endif + vprintf (test_description, ap); + va_end (ap); + } +#endif + + if (status == 0) + { + if (strlen(test_description) < 45) + { + printf(" (%g observed vs %g expected)", result, expected) ; + } + else + { + printf(" (%g obs vs %g exp)", result, expected) ; + } + } + else + { + printf(" (%.18g observed vs %.18g expected)", result, expected) ; + } + + if (status == -1) + { + printf(" [test uses subnormal value]") ; + } + + if (status && !verbose) + printf(" [%u]", tests); + + printf ("\n") ; + fflush (stdout); + } +} + + +void +gsl_test_factor (double result, double expected, double factor, + const char *test_description,...) +{ + int status; + + if (!tests) initialise(); + + if ((expected > 0 && expected < GSL_DBL_MIN) + || (expected < 0 && expected > -(GSL_DBL_MIN))) + { + status = -1; + } + else if (result == expected) + { + status = 0; + } + else if (expected == 0.0) + { + status = (result > expected || result < expected); + } + else + { + double u = result / expected; + status = (u > factor || u < 1.0 / factor) ; + } + + update (status); + + if (status || verbose) + { + printf (status ? "FAIL: " : "PASS: "); + +#if HAVE_VPRINTF + { + va_list ap; + +#ifdef STDC_HEADERS + va_start (ap, test_description); +#else + va_start (ap); +#endif + vprintf (test_description, ap); + va_end (ap); + } +#endif + if (status == 0) + { + if (strlen(test_description) < 45) + { + printf(" (%g observed vs %g expected)", result, expected) ; + } + else + { + printf(" (%g obs vs %g exp)", result, expected) ; + } + } + else + { + printf(" (%.18g observed vs %.18g expected)", result, expected) ; + } + + if (status == -1) + { + printf(" [test uses subnormal value]") ; + } + + if (status && !verbose) + printf(" [%u]", tests); + + printf ("\n") ; + fflush (stdout); + } +} + +void +gsl_test_int (int result, int expected, const char *test_description,...) +{ + int status = (result != expected) ; + + if (!tests) initialise(); + + update (status); + + if (status || verbose) + { + printf (status ? "FAIL: " : "PASS: "); + +#if HAVE_VPRINTF + { + va_list ap; + +#ifdef STDC_HEADERS + va_start (ap, test_description); +#else + va_start (ap); +#endif + vprintf (test_description, ap); + va_end (ap); + } +#endif + if (status == 0) + { + printf(" (%d observed vs %d expected)", result, expected) ; + } + else + { + printf(" (%d observed vs %d expected)", result, expected) ; + } + + if (status && !verbose) + printf(" [%u]", tests); + + printf ("\n"); + fflush (stdout); + } +} + +void +gsl_test_str (const char * result, const char * expected, + const char *test_description,...) +{ + int status = strcmp(result,expected) ; + + if (!tests) initialise(); + + update (status); + + if (status || verbose) + { + printf (status ? "FAIL: " : "PASS: "); + +#if HAVE_VPRINTF + { + va_list ap; + +#ifdef STDC_HEADERS + va_start (ap, test_description); +#else + va_start (ap); +#endif + vprintf (test_description, ap); + va_end (ap); + } +#endif + if (status) + { + printf(" (%s observed vs %s expected)", result, expected) ; + } + + if (status && !verbose) + printf(" [%u]", tests); + + printf ("\n"); + fflush (stdout); + } +} + +void +gsl_test_verbose (int v) +{ + verbose = v; +} + +int +gsl_test_summary (void) +{ + if (verbose && 0) /* FIXME: turned it off, this annoys me */ + printf ("%d tests, passed %d, failed %d.\n", tests, passed, failed); + + if (failed != 0) + { + return EXIT_FAILURE; + } + + if (tests != passed + failed) + { + if (verbose) + printf ("TEST RESULTS DO NOT ADD UP %d != %d + %d\n", + tests, passed, failed); + return EXIT_FAILURE; + } + + if (passed == tests) + { + if (!verbose) /* display a summary of passed tests */ + printf ("Completed [%d/%d]\n", passed, tests); + + return EXIT_SUCCESS; + } + + return EXIT_FAILURE; +} diff --git a/gsl-2.5/test/results.lo b/gsl-2.5/test/results.lo new file mode 100644 index 00000000..d652547c --- /dev/null +++ b/gsl-2.5/test/results.lo @@ -0,0 +1,12 @@ +# results.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/results.o' + +# Name of the non-PIC object +non_pic_object='results.o' + diff --git a/gsl-2.5/test_gsl_histogram.sh b/gsl-2.5/test_gsl_histogram.sh new file mode 100755 index 00000000..74116605 --- /dev/null +++ b/gsl-2.5/test_gsl_histogram.sh @@ -0,0 +1,16 @@ +#! /bin/sh + +cat > test.exp.1.tmp < test.obs.1.tmp + +cmp test.exp.1.tmp test.obs.1.tmp +STATUS=$? +rm test.exp.1.tmp test.obs.1.tmp + +exit $STATUS diff --git a/gsl-2.5/test_gsl_histogram.sh.log b/gsl-2.5/test_gsl_histogram.sh.log new file mode 100644 index 00000000..e69de29b diff --git a/gsl-2.5/test_gsl_histogram.sh.trs b/gsl-2.5/test_gsl_histogram.sh.trs new file mode 100644 index 00000000..3f0f396c --- /dev/null +++ b/gsl-2.5/test_gsl_histogram.sh.trs @@ -0,0 +1,4 @@ +:test-result: PASS +:global-test-result: PASS +:recheck: no +:copy-in-global-log: no diff --git a/gsl-2.5/utils/.deps/memcpy.Po b/gsl-2.5/utils/.deps/memcpy.Po new file mode 100644 index 00000000..9ce06a81 --- /dev/null +++ b/gsl-2.5/utils/.deps/memcpy.Po @@ -0,0 +1 @@ +# dummy diff --git a/gsl-2.5/utils/.deps/memmove.Po b/gsl-2.5/utils/.deps/memmove.Po new file mode 100644 index 00000000..9ce06a81 --- /dev/null +++ b/gsl-2.5/utils/.deps/memmove.Po @@ -0,0 +1 @@ +# dummy diff --git a/gsl-2.5/utils/.deps/placeholder.Plo b/gsl-2.5/utils/.deps/placeholder.Plo new file mode 100644 index 00000000..cc8b6e7a --- /dev/null +++ b/gsl-2.5/utils/.deps/placeholder.Plo @@ -0,0 +1,3 @@ +placeholder.lo: placeholder.c /usr/include/stdc-predef.h + +/usr/include/stdc-predef.h: diff --git a/gsl-2.5/utils/.deps/strdup.Po b/gsl-2.5/utils/.deps/strdup.Po new file mode 100644 index 00000000..9ce06a81 --- /dev/null +++ b/gsl-2.5/utils/.deps/strdup.Po @@ -0,0 +1 @@ +# dummy diff --git a/gsl-2.5/utils/.deps/strtol.Po b/gsl-2.5/utils/.deps/strtol.Po new file mode 100644 index 00000000..9ce06a81 --- /dev/null +++ b/gsl-2.5/utils/.deps/strtol.Po @@ -0,0 +1 @@ +# dummy diff --git a/gsl-2.5/utils/.deps/strtoul.Po b/gsl-2.5/utils/.deps/strtoul.Po new file mode 100644 index 00000000..9ce06a81 --- /dev/null +++ b/gsl-2.5/utils/.deps/strtoul.Po @@ -0,0 +1 @@ +# dummy diff --git a/gsl-2.5/utils/.libs/libutils.la b/gsl-2.5/utils/.libs/libutils.la new file mode 120000 index 00000000..4d2461e4 --- /dev/null +++ b/gsl-2.5/utils/.libs/libutils.la @@ -0,0 +1 @@ +../libutils.la \ No newline at end of file diff --git a/gsl-2.5/utils/Makefile b/gsl-2.5/utils/Makefile new file mode 100644 index 00000000..1950e033 --- /dev/null +++ b/gsl-2.5/utils/Makefile @@ -0,0 +1,607 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# utils/Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + + + +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/gsl +pkgincludedir = $(includedir)/gsl +pkglibdir = $(libdir)/gsl +pkglibexecdir = $(libexecdir)/gsl +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = x86_64-unknown-linux-gnu +host_triplet = x86_64-unknown-linux-gnu +subdir = utils +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs strtoul.c strdup.c memmove.c \ + memcpy.c strtol.c $(top_srcdir)/depcomp README +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +libutils_la_DEPENDENCIES = +am_libutils_la_OBJECTS = placeholder.lo +libutils_la_OBJECTS = $(am_libutils_la_OBJECTS) +AM_V_lt = $(am__v_lt_$(V)) +am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) +am__v_lt_0 = --silent +am__v_lt_1 = +AM_V_P = $(am__v_P_$(V)) +am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY)) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_$(V)) +am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_$(V)) +am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I. -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_$(V)) +am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_$(V)) +am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libutils_la_SOURCES) +DIST_SOURCES = $(libutils_la_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing aclocal-1.13 +AMTAR = $${TAR-tar} +AM_DEFAULT_VERBOSITY = 1 +AR = ar +AS = as +AUTOCONF = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing autoconf +AUTOHEADER = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing autoheader +AUTOMAKE = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing automake-1.13 +AWK = gawk +CC = gcc +CCDEPMODE = depmode=gcc3 +CFLAGS = -g -O2 +CPP = gcc -E +CPPFLAGS = +CYGPATH_W = echo +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +DLLTOOL = false +DSYMUTIL = +DUMPBIN = +ECHO_C = +ECHO_N = -n +ECHO_T = +EGREP = /usr/bin/grep -E +EXEEXT = +FGREP = /usr/bin/grep -F +GREP = /usr/bin/grep +GSLCBLAS_LDFLAGS = +GSL_CFLAGS = -I${prefix}/include +GSL_LDFLAGS = +GSL_LIBADD = +GSL_LIBM = -lm +GSL_LIBS = -L${exec_prefix}/lib -lgsl +GSL_LT_CBLAS_VERSION = 0:0:0 +GSL_LT_VERSION = 24:0:1 +GSL_MAJOR_VERSION = 2 +GSL_MINOR_VERSION = 5 +HAVE_AIX_IEEE_INTERFACE = +HAVE_DARWIN86_IEEE_INTERFACE = +HAVE_DARWIN_IEEE_INTERFACE = +HAVE_FREEBSD_IEEE_INTERFACE = +HAVE_GNUM68K_IEEE_INTERFACE = +HAVE_GNUPPC_IEEE_INTERFACE = +HAVE_GNUSPARC_IEEE_INTERFACE = +HAVE_GNUX86_IEEE_INTERFACE = +HAVE_HPUX11_IEEE_INTERFACE = +HAVE_HPUX_IEEE_INTERFACE = +HAVE_IRIX_IEEE_INTERFACE = +HAVE_NETBSD_IEEE_INTERFACE = +HAVE_OPENBSD_IEEE_INTERFACE = +HAVE_OS2EMX_IEEE_INTERFACE = +HAVE_SOLARIS_IEEE_INTERFACE = +HAVE_SUNOS4_IEEE_INTERFACE = +HAVE_TRU64_IEEE_INTERFACE = +INSTALL = /usr/bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = $(install_sh) -c -s +LD = /usr/bin/ld -m elf_x86_64 +LDFLAGS = +LIBM = -lm +LIBOBJS = +LIBS = -lm +LIBTOOL = $(SHELL) $(top_builddir)/libtool +LIPO = +LN_S = ln -s +LTLIBOBJS = +MAINT = # +MAKEINFO = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing makeinfo +MANIFEST_TOOL = : +MKDIR_P = /usr/bin/mkdir -p +NM = /usr/bin/nm -B +NMEDIT = +OBJDUMP = objdump +OBJEXT = o +OTOOL = +OTOOL64 = +PACKAGE = gsl +PACKAGE_BUGREPORT = +PACKAGE_NAME = gsl +PACKAGE_STRING = gsl 2.5 +PACKAGE_TARNAME = gsl +PACKAGE_URL = +PACKAGE_VERSION = 2.5 +PATH_SEPARATOR = : +RANLIB = ranlib +SED = /usr/bin/sed +SET_MAKE = +SHELL = /bin/sh +STRIP = strip +VERSION = 2.5 +abs_builddir = /home/groups/kipac/chto/package/gsl/gsl-2.5/utils +abs_srcdir = /home/groups/kipac/chto/package/gsl/gsl-2.5/utils +abs_top_builddir = /home/groups/kipac/chto/package/gsl/gsl-2.5 +abs_top_srcdir = /home/groups/kipac/chto/package/gsl/gsl-2.5 +ac_ct_AR = ar +ac_ct_CC = gcc +ac_ct_DUMPBIN = +am__include = include +am__leading_dot = . +am__quote = +am__tar = $${TAR-tar} chof - "$$tardir" +am__untar = $${TAR-tar} xf - +bindir = ${exec_prefix}/bin +build = x86_64-unknown-linux-gnu +build_alias = +build_cpu = x86_64 +build_os = linux-gnu +build_vendor = unknown +builddir = . +datadir = ${datarootdir} +datarootdir = ${prefix}/share +docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} +dvidir = ${docdir} +exec_prefix = ${prefix} +host = x86_64-unknown-linux-gnu +host_alias = +host_cpu = x86_64 +host_os = linux-gnu +host_vendor = unknown +htmldir = ${docdir} +includedir = ${prefix}/include +infodir = ${datarootdir}/info +install_sh = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/install-sh +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +localedir = ${datarootdir}/locale +localstatedir = ${prefix}/var +mandir = ${datarootdir}/man +mkdir_p = $(MKDIR_P) +oldincludedir = /usr/include +pdfdir = ${docdir} +prefix = /home/groups/kipac/chto/package/gsl/gsl_lib +program_transform_name = s,x,x, +psdir = ${docdir} +sbindir = ${exec_prefix}/sbin +sharedstatedir = ${prefix}/com +srcdir = . +sysconfdir = ${prefix}/etc +target_alias = +top_build_prefix = ../ +top_builddir = .. +top_srcdir = .. +noinst_LTLIBRARIES = libutils.la + +# Don't need to list alloca.c, etc., Automake includes them. +libutils_la_SOURCES = system.h placeholder.c +libutils_la_LIBADD = +EXTRA_DIST = README +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu utils/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu utils/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: # $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): # $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libutils.la: $(libutils_la_OBJECTS) $(libutils_la_DEPENDENCIES) $(EXTRA_libutils_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(libutils_la_OBJECTS) $(libutils_la_LIBADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +include $(DEPDIR)/memcpy.Po +include $(DEPDIR)/memmove.Po +include $(DEPDIR)/strdup.Po +include $(DEPDIR)/strtol.Po +include $(DEPDIR)/strtoul.Po +include ./$(DEPDIR)/placeholder.Plo + +.c.o: + $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# $(AM_V_CC)source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(COMPILE) -c $< + +.c.obj: + $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# $(AM_V_CC)source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: + $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +# $(AM_V_CC)source='$<' object='$@' libtool=yes \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(LTLIBRARIES) +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ + mostlyclean-am + +distclean: distclean-am + -rm -rf $(DEPDIR) ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf $(DEPDIR) ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-noinstLTLIBRARIES cscopelist-am ctags \ + ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags tags-am uninstall uninstall-am + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gsl-2.5/utils/Makefile.am b/gsl-2.5/utils/Makefile.am new file mode 100644 index 00000000..117cf7ce --- /dev/null +++ b/gsl-2.5/utils/Makefile.am @@ -0,0 +1,7 @@ +noinst_LTLIBRARIES = libutils.la + +# Don't need to list alloca.c, etc., Automake includes them. +libutils_la_SOURCES = system.h placeholder.c +libutils_la_LIBADD = @LIBOBJS@ + +EXTRA_DIST = README diff --git a/gsl-2.5/utils/Makefile.in b/gsl-2.5/utils/Makefile.in new file mode 100644 index 00000000..ab8849bf --- /dev/null +++ b/gsl-2.5/utils/Makefile.in @@ -0,0 +1,607 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = utils +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs strtoul.c strdup.c memmove.c \ + memcpy.c strtol.c $(top_srcdir)/depcomp README +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +libutils_la_DEPENDENCIES = @LIBOBJS@ +am_libutils_la_OBJECTS = placeholder.lo +libutils_la_OBJECTS = $(am_libutils_la_OBJECTS) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libutils_la_SOURCES) +DIST_SOURCES = $(libutils_la_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +GSLCBLAS_LDFLAGS = @GSLCBLAS_LDFLAGS@ +GSL_CFLAGS = @GSL_CFLAGS@ +GSL_LDFLAGS = @GSL_LDFLAGS@ +GSL_LIBADD = @GSL_LIBADD@ +GSL_LIBM = @GSL_LIBM@ +GSL_LIBS = @GSL_LIBS@ +GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ +GSL_LT_VERSION = @GSL_LT_VERSION@ +GSL_MAJOR_VERSION = @GSL_MAJOR_VERSION@ +GSL_MINOR_VERSION = @GSL_MINOR_VERSION@ +HAVE_AIX_IEEE_INTERFACE = @HAVE_AIX_IEEE_INTERFACE@ +HAVE_DARWIN86_IEEE_INTERFACE = @HAVE_DARWIN86_IEEE_INTERFACE@ +HAVE_DARWIN_IEEE_INTERFACE = @HAVE_DARWIN_IEEE_INTERFACE@ +HAVE_FREEBSD_IEEE_INTERFACE = @HAVE_FREEBSD_IEEE_INTERFACE@ +HAVE_GNUM68K_IEEE_INTERFACE = @HAVE_GNUM68K_IEEE_INTERFACE@ +HAVE_GNUPPC_IEEE_INTERFACE = @HAVE_GNUPPC_IEEE_INTERFACE@ +HAVE_GNUSPARC_IEEE_INTERFACE = @HAVE_GNUSPARC_IEEE_INTERFACE@ +HAVE_GNUX86_IEEE_INTERFACE = @HAVE_GNUX86_IEEE_INTERFACE@ +HAVE_HPUX11_IEEE_INTERFACE = @HAVE_HPUX11_IEEE_INTERFACE@ +HAVE_HPUX_IEEE_INTERFACE = @HAVE_HPUX_IEEE_INTERFACE@ +HAVE_IRIX_IEEE_INTERFACE = @HAVE_IRIX_IEEE_INTERFACE@ +HAVE_NETBSD_IEEE_INTERFACE = @HAVE_NETBSD_IEEE_INTERFACE@ +HAVE_OPENBSD_IEEE_INTERFACE = @HAVE_OPENBSD_IEEE_INTERFACE@ +HAVE_OS2EMX_IEEE_INTERFACE = @HAVE_OS2EMX_IEEE_INTERFACE@ +HAVE_SOLARIS_IEEE_INTERFACE = @HAVE_SOLARIS_IEEE_INTERFACE@ +HAVE_SUNOS4_IEEE_INTERFACE = @HAVE_SUNOS4_IEEE_INTERFACE@ +HAVE_TRU64_IEEE_INTERFACE = @HAVE_TRU64_IEEE_INTERFACE@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBM = @LIBM@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +noinst_LTLIBRARIES = libutils.la + +# Don't need to list alloca.c, etc., Automake includes them. +libutils_la_SOURCES = system.h placeholder.c +libutils_la_LIBADD = @LIBOBJS@ +EXTRA_DIST = README +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu utils/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu utils/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libutils.la: $(libutils_la_OBJECTS) $(libutils_la_DEPENDENCIES) $(EXTRA_libutils_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(libutils_la_OBJECTS) $(libutils_la_LIBADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/memcpy.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/memmove.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/strdup.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/strtol.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/strtoul.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/placeholder.Plo@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(LTLIBRARIES) +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ + mostlyclean-am + +distclean: distclean-am + -rm -rf $(DEPDIR) ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf $(DEPDIR) ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-noinstLTLIBRARIES cscopelist-am ctags \ + ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags tags-am uninstall uninstall-am + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gsl-2.5/utils/README b/gsl-2.5/utils/README new file mode 100644 index 00000000..87073b6c --- /dev/null +++ b/gsl-2.5/utils/README @@ -0,0 +1,5 @@ +Some common routines. +These were taken from the lib directory of Texinfo-3.11. +Many are common to other GNU packages as well. +(On the FSF machines, check /gd/gnu/lib for the latest.) + diff --git a/gsl-2.5/utils/libutils.la b/gsl-2.5/utils/libutils.la new file mode 100644 index 00000000..13c66b70 --- /dev/null +++ b/gsl-2.5/utils/libutils.la @@ -0,0 +1,41 @@ +# libutils.la - a libtool library file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='' + +# Names of this library. +library_names='' + +# The name of the static archive. +old_library='libutils.a' + +# Linker flags that can not go in dependency_libs. +inherited_linker_flags='' + +# Libraries that this one depends upon. +dependency_libs=' -lm' + +# Names of additional weak libraries provided by this library +weak_library_names='' + +# Version information for libutils. +current= +age= +revision= + +# Is this an already installed library? +installed=no + +# Should we warn about portability when linking against -modules? +shouldnotlink=no + +# Files to dlopen/dlpreopen +dlopen='' +dlpreopen='' + +# Directory that this library needs to be installed in: +libdir='' diff --git a/gsl-2.5/utils/memcpy.c b/gsl-2.5/utils/memcpy.c new file mode 100644 index 00000000..4f293339 --- /dev/null +++ b/gsl-2.5/utils/memcpy.c @@ -0,0 +1,20 @@ +/* Copy LEN bytes starting at SRCADDR to DESTADDR. Result undefined + if the source overlaps with the destination. + Return DESTADDR. */ + +#if HAVE_CONFIG_H +#include +#endif + +void * +memcpy (destaddr, srcaddr, len) + void *destaddr; + const void *srcaddr; + unsigned int len; +{ + char *dest = (char *) destaddr; + const char *src = srcaddr; + while (len-- > 0) + *dest++ = *src++; + return destaddr; +} diff --git a/gsl-2.5/utils/memmove.c b/gsl-2.5/utils/memmove.c new file mode 100644 index 00000000..5615f5bf --- /dev/null +++ b/gsl-2.5/utils/memmove.c @@ -0,0 +1,28 @@ +/* memmove.c -- copy memory. + Copy LENGTH bytes from SOURCE to DEST. Does not null-terminate. + In the public domain. + By David MacKenzie . */ + +#if HAVE_CONFIG_H +#include +#endif + +void * +memmove (destaddr, sourceaddr, length) + void *destaddr; + const void *sourceaddr; + unsigned length; +{ + char *dest = destaddr; + const char *source = sourceaddr; + if (source < dest) + /* Moving from low mem to hi mem; start at end. */ + for (source += length, dest += length; length; --length) + *--dest = *--source; + else if (source != dest) + /* Moving from hi mem to low mem; start at beginning. */ + for (; length; --length) + *dest++ = *source++; + + return destaddr; +} diff --git a/gsl-2.5/utils/placeholder.c b/gsl-2.5/utils/placeholder.c new file mode 100644 index 00000000..e96ec1ae --- /dev/null +++ b/gsl-2.5/utils/placeholder.c @@ -0,0 +1,9 @@ +void +gsl_utils_placeholder (void); + +void +gsl_utils_placeholder (void) +{ + int i = 0; + i++ ; +} diff --git a/gsl-2.5/utils/placeholder.lo b/gsl-2.5/utils/placeholder.lo new file mode 100644 index 00000000..7b4405ab --- /dev/null +++ b/gsl-2.5/utils/placeholder.lo @@ -0,0 +1,12 @@ +# placeholder.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/placeholder.o' + +# Name of the non-PIC object +non_pic_object='placeholder.o' + diff --git a/gsl-2.5/utils/strdup.c b/gsl-2.5/utils/strdup.c new file mode 100644 index 00000000..44aaf353 --- /dev/null +++ b/gsl-2.5/utils/strdup.c @@ -0,0 +1,43 @@ +/* strdup.c -- return a newly allocated copy of a string + Copyright (C) 1990 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3, 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. */ + +#if HAVE_CONFIG_H +#include +#endif + +#ifdef STDC_HEADERS +#include +#include +#else +char *malloc (); +char *strcpy (); +#endif + +/* Return a newly allocated copy of STR, + or 0 if out of memory. */ + +char * +strdup (str) + const char *str; +{ + char *newstr; + + newstr = (char *) malloc (strlen (str) + 1); + if (newstr) + strcpy (newstr, str); + return newstr; +} diff --git a/gsl-2.5/utils/strtol.c b/gsl-2.5/utils/strtol.c new file mode 100644 index 00000000..7ea9c239 --- /dev/null +++ b/gsl-2.5/utils/strtol.c @@ -0,0 +1,162 @@ +/* Copyright (C) 1991, 1992, 1994 Free Software Foundation, Inc. + +This file is part of the GNU C Library. + +The GNU C Library is free software; you can redistribute it and/or +modify it under the terms of the GNU Library General Public License as +published by the Free Software Foundation; either version 3 of the +License, or (at your option) any later version. + +The GNU C 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 +Library General Public License for more details. + +You should have received a copy of the GNU Library General Public +License along with the GNU C Library; see the file COPYING.LIB. If +not, write to the Free Software Foundation, Inc., 675 Mass Ave, +Cambridge, MA 02110-1301, USA. */ + +#include +#include +#include +#include +#include + +#ifndef UNSIGNED +#define UNSIGNED 0 +#endif + +/* Convert NPTR to an `unsigned long int' or `long int' in base BASE. + If BASE is 0 the base is determined by the presence of a leading + zero, indicating octal or a leading "0x" or "0X", indicating hexadecimal. + If BASE is < 2 or > 36, it is reset to 10. + If ENDPTR is not NULL, a pointer to the character after the last + one converted is stored in *ENDPTR. */ +#if UNSIGNED +unsigned long int +#define strtol strtoul +#else +long int +#endif +strtol (nptr, endptr, base) + const char *nptr; + char **endptr; + int base; +{ + int negative; + register unsigned long int cutoff; + register unsigned int cutlim; + register unsigned long int i; + register const char *s; + register unsigned char c; + const char *save; + int overflow; + + if (base < 0 || base == 1 || base > 36) + base = 10; + + s = nptr; + + /* Skip white space. */ + while (isspace (*s)) + ++s; + if (*s == '\0') + goto noconv; + + /* Check for a sign. */ + if (*s == '-') + { + negative = 1; + ++s; + } + else if (*s == '+') + { + negative = 0; + ++s; + } + else + negative = 0; + + if (base == 16 && s[0] == '0' && toupper (s[1]) == 'X') + s += 2; + + /* If BASE is zero, figure it out ourselves. */ + if (base == 0) + if (*s == '0') + { + if (toupper (s[1]) == 'X') + { + s += 2; + base = 16; + } + else + base = 8; + } + else + base = 10; + + /* Save the pointer so we can check later if anything happened. */ + save = s; + + cutoff = ULONG_MAX / (unsigned long int) base; + cutlim = ULONG_MAX % (unsigned long int) base; + + overflow = 0; + i = 0; + for (c = *s; c != '\0'; c = *++s) + { + if (isdigit (c)) + c -= '0'; + else if (isalpha (c)) + c = toupper (c) - 'A' + 10; + else + break; + if (c >= base) + break; + /* Check for overflow. */ + if (i > cutoff || (i == cutoff && c > cutlim)) + overflow = 1; + else + { + i *= (unsigned long int) base; + i += c; + } + } + + /* Check if anything actually happened. */ + if (s == save) + goto noconv; + + /* Store in ENDPTR the address of one character + past the last character we converted. */ + if (endptr != NULL) + *endptr = (char *) s; + +#if !UNSIGNED + /* Check for a value that is within the range of + `unsigned long int', but outside the range of `long int'. */ + if (i > (negative ? + -(unsigned long int) LONG_MIN : (unsigned long int) LONG_MAX)) + overflow = 1; +#endif + + if (overflow) + { + errno = ERANGE; +#if UNSIGNED + return ULONG_MAX; +#else + return negative ? LONG_MIN : LONG_MAX; +#endif + } + + /* Return the result of the appropriate sign. */ + return (negative ? -i : i); + +noconv: + /* There was no number to convert. */ + if (endptr != NULL) + *endptr = (char *) nptr; + return 0L; +} diff --git a/gsl-2.5/utils/strtoul.c b/gsl-2.5/utils/strtoul.c new file mode 100644 index 00000000..a085746e --- /dev/null +++ b/gsl-2.5/utils/strtoul.c @@ -0,0 +1,21 @@ +/* Copyright (C) 1991 Free Software Foundation, Inc. +This file is part of the GNU C Library. + +The GNU C Library is free software; you can redistribute it and/or +modify it under the terms of the GNU Library General Public License as +published by the Free Software Foundation; either version 3 of the +License, or (at your option) any later version. + +The GNU C 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 +Library General Public License for more details. + +You should have received a copy of the GNU Library General Public +License along with the GNU C Library; see the file COPYING.LIB. If +not, write to the Free Software Foundation, Inc., 675 Mass Ave, +Cambridge, MA 02110-1301, USA. */ + +#define UNSIGNED 1 + +#include diff --git a/gsl-2.5/utils/system.h b/gsl-2.5/utils/system.h new file mode 100644 index 00000000..43dd0ea8 --- /dev/null +++ b/gsl-2.5/utils/system.h @@ -0,0 +1,102 @@ +/* system.h: System-dependent declarations. Include this first. + $Id$ + + Copyright (C) 1997 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3, 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. */ + +#ifndef TEXINFO_SYSTEM_H +#define TEXINFO_SYSTEM_H + +#define _GNU_SOURCE + +#include + +/* should be included before any preprocessor test + of _POSIX_VERSION. */ +#if HAVE_UNISTD_H +#include +#endif /* HAVE_UNISTD_H */ + +#include +#include +#include + +#if HAVE_LOCALE_H +#include +#endif +#include + +/* Don't use bcopy! Use memmove if source and destination may overlap, + memcpy otherwise. */ +#if HAVE_STRING_H +# if !STDC_HEADERS && HAVE_MEMORY_H +# include +# endif +# include +#else +# include +char *memchr (); +#endif + +#ifdef STDC_HEADERS +#define getopt system_getopt +#include +#undef getopt +#else +extern char *getenv (); +#endif + +#ifndef HAVE_STRERROR +extern char *strerror (); +#endif + +#include +#ifndef errno +extern int errno; +#endif +#ifdef VMS +#include +#endif + +#include + +#if HAVE_SYS_FILE_H +#include +#endif /* HAVE_SYS_FILE_H */ + +#ifndef O_RDONLY +/* Since is POSIX, prefer that to . + This also avoids some useless warnings on (at least) Linux. */ +#if HAVE_FCNTL_H +#include +#else /* not HAVE_FCNTL_H */ +#if HAVE_SYS_FCNTL_H +#include +#endif /* not HAVE_SYS_FCNTL_H */ +#endif /* not HAVE_FCNTL_H */ +#endif /* not O_RDONLY */ + +#if HAVE_PWD_H +#include +#endif +/* Some systems don't declare this function in pwd.h. */ +struct passwd *getpwnam (); + +/* Our library routines not included in any system library. */ +extern void *xmalloc (), *xrealloc (); +extern char *xstrdup (); + +#endif /* TEXINFO_SYSTEM_H */ diff --git a/gsl-2.5/vector/.deps/copy.Plo b/gsl-2.5/vector/.deps/copy.Plo new file mode 100644 index 00000000..ebc8fda7 --- /dev/null +++ b/gsl-2.5/vector/.deps/copy.Plo @@ -0,0 +1,197 @@ +copy.lo: copy.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_vector.h ../gsl/gsl_vector_complex_long_double.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_types.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_inline.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_vector_complex.h \ + ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../templates_on.h copy_source.c \ + ../templates_off.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_types.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../templates_on.h: + +copy_source.c: + +../templates_off.h: diff --git a/gsl-2.5/vector/.deps/file.Plo b/gsl-2.5/vector/.deps/file.Plo new file mode 100644 index 00000000..0ab07b63 --- /dev/null +++ b/gsl-2.5/vector/.deps/file.Plo @@ -0,0 +1,198 @@ +file.lo: file.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdio.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../gsl/gsl_errno.h /usr/include/errno.h \ + /usr/include/bits/errno.h /usr/include/linux/errno.h \ + /usr/include/asm/errno.h /usr/include/asm-generic/errno.h \ + /usr/include/asm-generic/errno-base.h ../gsl/gsl_types.h \ + ../gsl/gsl_block.h ../gsl/gsl_block_complex_long_double.h \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/byteswap.h \ + /usr/include/bits/byteswap-16.h /usr/include/sys/types.h \ + /usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib-float.h \ + ../gsl/gsl_block_complex_double.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_block_double.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_block_long.h ../gsl/gsl_block_uint.h ../gsl/gsl_block_int.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_block_short.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_block_char.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_complex.h \ + ../gsl/gsl_check_range.h ../gsl/gsl_vector_long_double.h \ + ../gsl/gsl_inline.h ../gsl/gsl_vector_complex.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_vector_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_vector_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_vector_uchar.h ../gsl/gsl_vector_char.h ../templates_on.h \ + file_source.c ../templates_off.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_block.h: + +../gsl/gsl_block_complex_long_double.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_vector_char.h: + +../templates_on.h: + +file_source.c: + +../templates_off.h: diff --git a/gsl-2.5/vector/.deps/init.Plo b/gsl-2.5/vector/.deps/init.Plo new file mode 100644 index 00000000..3cd4a4a6 --- /dev/null +++ b/gsl-2.5/vector/.deps/init.Plo @@ -0,0 +1,207 @@ +init.lo: init.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/string.h \ + /usr/include/xlocale.h /usr/include/bits/string.h \ + /usr/include/bits/string2.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_types.h \ + ../gsl/gsl_errno.h /usr/include/stdio.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_inline.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_vector_complex.h \ + ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../templates_on.h init_source.c \ + ../templates_off.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string.h: + +/usr/include/bits/string2.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_types.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../templates_on.h: + +init_source.c: + +../templates_off.h: diff --git a/gsl-2.5/vector/.deps/minmax.Plo b/gsl-2.5/vector/.deps/minmax.Plo new file mode 100644 index 00000000..a19028dc --- /dev/null +++ b/gsl-2.5/vector/.deps/minmax.Plo @@ -0,0 +1,257 @@ +minmax.lo: minmax.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../templates_on.h minmax_source.c \ + ../templates_off.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../templates_on.h: + +minmax_source.c: + +../templates_off.h: diff --git a/gsl-2.5/vector/.deps/oper.Plo b/gsl-2.5/vector/.deps/oper.Plo new file mode 100644 index 00000000..517d56a4 --- /dev/null +++ b/gsl-2.5/vector/.deps/oper.Plo @@ -0,0 +1,260 @@ +oper.lo: oper.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_math.h ../gsl/gsl_sys.h ../gsl/gsl_inline.h \ + ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../templates_on.h oper_complex_source.c \ + ../templates_off.h oper_source.c + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_math.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../templates_on.h: + +oper_complex_source.c: + +../templates_off.h: + +oper_source.c: diff --git a/gsl-2.5/vector/.deps/prop.Plo b/gsl-2.5/vector/.deps/prop.Plo new file mode 100644 index 00000000..9fbf5fa2 --- /dev/null +++ b/gsl-2.5/vector/.deps/prop.Plo @@ -0,0 +1,197 @@ +prop.lo: prop.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_vector.h ../gsl/gsl_vector_complex_long_double.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_types.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_inline.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_vector_complex.h \ + ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../templates_on.h prop_source.c \ + ../templates_off.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_types.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../templates_on.h: + +prop_source.c: + +../templates_off.h: diff --git a/gsl-2.5/vector/.deps/reim.Plo b/gsl-2.5/vector/.deps/reim.Plo new file mode 100644 index 00000000..4743bff4 --- /dev/null +++ b/gsl-2.5/vector/.deps/reim.Plo @@ -0,0 +1,199 @@ +reim.lo: reim.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_types.h \ + ../gsl/gsl_errno.h /usr/include/stdio.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_inline.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_vector_complex.h \ + ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h view.h ../templates_on.h reim_source.c \ + ../templates_off.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_types.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +view.h: + +../templates_on.h: + +reim_source.c: + +../templates_off.h: diff --git a/gsl-2.5/vector/.deps/subvector.Plo b/gsl-2.5/vector/.deps/subvector.Plo new file mode 100644 index 00000000..6a48e917 --- /dev/null +++ b/gsl-2.5/vector/.deps/subvector.Plo @@ -0,0 +1,199 @@ +subvector.lo: subvector.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_types.h \ + ../gsl/gsl_errno.h /usr/include/stdio.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_inline.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_vector_complex.h \ + ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h view.h ../templates_on.h subvector_source.c \ + ../templates_off.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_types.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +view.h: + +../templates_on.h: + +subvector_source.c: + +../templates_off.h: diff --git a/gsl-2.5/vector/.deps/swap.Plo b/gsl-2.5/vector/.deps/swap.Plo new file mode 100644 index 00000000..1d033831 --- /dev/null +++ b/gsl-2.5/vector/.deps/swap.Plo @@ -0,0 +1,196 @@ +swap.lo: swap.c /usr/include/stdc-predef.h ../config.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_types.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_complex.h \ + ../gsl/gsl_check_range.h ../gsl/gsl_vector_long_double.h \ + ../gsl/gsl_inline.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../templates_on.h swap_source.c \ + ../templates_off.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../templates_on.h: + +swap_source.c: + +../templates_off.h: diff --git a/gsl-2.5/vector/.deps/test.Po b/gsl-2.5/vector/.deps/test.Po new file mode 100644 index 00000000..60f1a998 --- /dev/null +++ b/gsl-2.5/vector/.deps/test.Po @@ -0,0 +1,285 @@ +test.o: test.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/unistd.h \ + /usr/include/bits/posix_opt.h /usr/include/bits/environments.h \ + /usr/include/bits/confname.h /usr/include/getopt.h /usr/include/fcntl.h \ + /usr/include/bits/fcntl.h /usr/include/bits/fcntl-linux.h \ + /usr/include/bits/stat.h /usr/include/stdio.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_errno.h \ + /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_test.h ../gsl/gsl_ieee_utils.h \ + ../templates_on.h test_complex_source.c ../templates_off.h test_source.c + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/unistd.h: + +/usr/include/bits/posix_opt.h: + +/usr/include/bits/environments.h: + +/usr/include/bits/confname.h: + +/usr/include/getopt.h: + +/usr/include/fcntl.h: + +/usr/include/bits/fcntl.h: + +/usr/include/bits/fcntl-linux.h: + +/usr/include/bits/stat.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_test.h: + +../gsl/gsl_ieee_utils.h: + +../templates_on.h: + +test_complex_source.c: + +../templates_off.h: + +test_source.c: diff --git a/gsl-2.5/vector/.deps/test_static.Po b/gsl-2.5/vector/.deps/test_static.Po new file mode 100644 index 00000000..cb03c4af --- /dev/null +++ b/gsl-2.5/vector/.deps/test_static.Po @@ -0,0 +1,287 @@ +test_static.o: test_static.c /usr/include/stdc-predef.h test.c \ + ../config.h /usr/include/stdlib.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h /usr/include/unistd.h \ + /usr/include/bits/posix_opt.h /usr/include/bits/environments.h \ + /usr/include/bits/confname.h /usr/include/getopt.h /usr/include/fcntl.h \ + /usr/include/bits/fcntl.h /usr/include/bits/fcntl-linux.h \ + /usr/include/bits/stat.h /usr/include/stdio.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_types.h ../gsl/gsl_nan.h \ + ../gsl/gsl_pow_int.h ../gsl/gsl_minmax.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_errno.h \ + /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_test.h ../gsl/gsl_ieee_utils.h \ + ../templates_on.h test_complex_source.c ../templates_off.h test_source.c + +/usr/include/stdc-predef.h: + +test.c: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/unistd.h: + +/usr/include/bits/posix_opt.h: + +/usr/include/bits/environments.h: + +/usr/include/bits/confname.h: + +/usr/include/getopt.h: + +/usr/include/fcntl.h: + +/usr/include/bits/fcntl.h: + +/usr/include/bits/fcntl-linux.h: + +/usr/include/bits/stat.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_types.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_test.h: + +../gsl/gsl_ieee_utils.h: + +../templates_on.h: + +test_complex_source.c: + +../templates_off.h: + +test_source.c: diff --git a/gsl-2.5/vector/.deps/vector.Plo b/gsl-2.5/vector/.deps/vector.Plo new file mode 100644 index 00000000..3fa80d79 --- /dev/null +++ b/gsl-2.5/vector/.deps/vector.Plo @@ -0,0 +1,191 @@ +vector.lo: vector.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_errno.h /usr/include/stdio.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_types.h ../build.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_complex.h \ + ../gsl/gsl_check_range.h ../gsl/gsl_vector_long_double.h \ + ../gsl/gsl_inline.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../build.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: diff --git a/gsl-2.5/vector/.deps/view.Plo b/gsl-2.5/vector/.deps/view.Plo new file mode 100644 index 00000000..f1b2a14b --- /dev/null +++ b/gsl-2.5/vector/.deps/view.Plo @@ -0,0 +1,199 @@ +view.lo: view.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h ../gsl/gsl_types.h \ + ../gsl/gsl_errno.h /usr/include/stdio.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_complex.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_vector_long_double.h ../gsl/gsl_inline.h \ + ../gsl/gsl_block_long_double.h ../gsl/gsl_vector_complex.h \ + ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h view.h ../templates_on.h view_source.c \ + ../templates_off.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +../gsl/gsl_types.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +view.h: + +../templates_on.h: + +view_source.c: + +../templates_off.h: diff --git a/gsl-2.5/vector/.libs/libgslvector.la b/gsl-2.5/vector/.libs/libgslvector.la new file mode 120000 index 00000000..0e34c859 --- /dev/null +++ b/gsl-2.5/vector/.libs/libgslvector.la @@ -0,0 +1 @@ +../libgslvector.la \ No newline at end of file diff --git a/gsl-2.5/vector/ChangeLog b/gsl-2.5/vector/ChangeLog new file mode 100644 index 00000000..9e3cd16a --- /dev/null +++ b/gsl-2.5/vector/ChangeLog @@ -0,0 +1,247 @@ +2017-01-07 Rhys Ulerich + + * init_source.c: permit zero-length vectors (#49988) + * subvector_source.c: permit zero-length subvectors (#49988) + * test.c: change trap into alloc_zero_length, add calloc tests + * test_complex_source.c: zero-length for alloc and calloc + * test_source.c: zero-length for alloc and calloc + * view_source.c: permit zero-length views + * Audit range checking regarding n - 1 underflow for n = 0 + +2010-03-12 Brian Gough + + * prop_source.c (FUNCTION): added a function to test if two + vectors are equal + +2009-11-14 Brian Gough + + * gsl_vector_complex.h (GSL_VECTOR_COMPLEX): added missing + dereference + +2009-07-09 Brian Gough + + * init_source.c (FUNCTION): handle NULL argument in free + +2008-09-27 Brian Gough + + * gsl_vector_complex_double.h: added missing functions isnonneg, + add, sub, mul, div, scale, add_constant + +2008-07-03 Brian Gough + + * gsl_vector.h: use new inline declarations in all header files + + * vector.c: compile inline functions from header here + + * vector_source.c: removed + + * Makefile.am (INCLUDES): use top_srcdir instead of top_builddir + +2007-08-21 Brian Gough + + * prop_source.c (FUNCTION): added gsl_vector_isnonneg + +2007-02-17 Brian Gough + + * test_source.c (FUNCTION): avoid running tests on char, because + it can be unsigned + +2007-01-26 Brian Gough + + * minmax_source.c: added support for NaNs + +2006-10-31 Brian Gough + + * prop_source.c: added functions gsl_vector_ispos, + gsl_vector_isneg + +2004-09-13 Brian Gough + + * swap_source.c (gsl_vector_swap): fixed bug where stride of + first argument v was used for second argument w + + * test.c: improved test coverage + +2003-01-01 Brian Gough + + * gsl_vector_complex_float.h (gsl_vector_complex_float_get): + removed const from zero + + * vector_source.c (FUNCTION): removed const from zero + +Sun Jan 27 22:29:54 2002 Brian Gough + + * test.c: ensure that range check is working when running the + tests + +Fri Sep 14 19:13:20 2001 Brian Gough + + * view.c (USE_QUALIFIER): added missing qualified types + +Thu Aug 23 13:22:29 2001 Brian Gough + + * gsl_vector_complex_float.h: added const to second argument of + _ptr functions + + * gsl_vector.h: changed definition of gsl_vector_const_view to + compile with Sun's cc + +Fri Aug 3 14:11:51 2001 Brian Gough + + * added gsl_vector_ptr and gsl_vector_const_ptr functions + +Mon Jul 16 21:28:37 2001 Brian Gough + + * reim_source.c: initialized views to null + +Fri Jul 13 21:29:06 2001 Brian Gough + + * changed views to be structs and used casts to initialize them + +Mon Jul 2 12:34:43 2001 Brian Gough + + * view.h: provide macros for initializing null vectors and views + +Sun Jul 1 22:38:30 2001 Brian Gough + + * introduction of new-style vector views + + * view_source.c: changed order of arguments to be consistent with + rest of library for _with_stride functions + +Mon May 14 22:43:18 2001 Brian Gough + + * vector_source.c (FUNCTION): removed unnecessary inline from + static function definition + +Tue Mar 27 15:12:07 2001 Brian Gough + + * view_source.c: split view functions into a separate file + +Sat Sep 9 16:45:15 2000 Brian Gough + + * added an owner field for indicating whether the underlying + memory is owned by the vector. Changed the meaning of the block + field to always be the address of the underlying block, even for + subviews (previously the block field was set to NULL in this + case). + +Sun Jul 16 10:39:39 2000 Brian Gough + + * init_source.c (FUNCTION): added gsl_vector_view function for + creating a vector view of an ordinary C array + +Sat Jul 15 21:44:49 2000 Brian Gough + + * changed GSL_EDOM to GSL_EINVAL for invalid vector size arguments + +Sat Jun 17 15:37:57 2000 Brian Gough + + * fixed up missing MULTIPLICITY factors in various functions + +Sun May 28 12:25:31 2000 Brian Gough + + * test_complex_source.c (FUNCTION): use binary mode "b" when + reading and writing binary files + + * test_source.c (FUNCTION): use binary mode "b" when reading and + writing binary files + +Fri May 5 10:57:16 2000 Brian Gough + + * oper_source.c (FUNCTION): changed functions + gsl_vector_mul_elements and gsl_vector_div_elements to + gsl_vector_mul and gsl_vector_div since the _elements suffix is + redundant for vectors (unlike matrices). + + * oper.c: added simple arithmetic operations (+,-,*,/,scale,+const) + +Wed Apr 26 14:17:14 2000 Brian Gough + + * prop_source.c (FUNCTION): added const to argument of + gsl_vector_isnull + + * init_source.c (FUNCTION): added gsl_vector_set_basis(v,i) to set + v to basis vector v = e_i (0,0,...,1,...,0) + +Tue Apr 25 11:31:38 2000 Brian Gough + + * test_source.c (FUNCTION): modified the tests so that they work + more cleanly with checkergcc when using long doubles. The trick + seems to be to avoid having any long doubles on the stack. + +Sat Apr 22 15:09:44 2000 Brian Gough + + * init_source.c (FUNCTION): separated subvector functions into + gsl_vector_subvector and gsl_vector_subvector_with_stride + +Sat Mar 25 20:23:58 2000 Brian Gough + + * swap_source.c (FUNCTION): renames gsl_vector_swap to + gsl_vector_swap_elements + +Tue Mar 21 21:15:10 2000 Brian Gough + + * vector_source.c (FUNCTION): added set_zero function + +Thu Feb 24 16:19:55 2000 Brian Gough + + * added missing prototypes for gsl_vector_complex_..._reverse + +Fri Feb 18 20:48:32 2000 Brian Gough + + * swap_source.c (FUNCTION): added gsl_vector_reverse function for + flipping the order of a vector + + * copy_source.c: renamed gsl_vector_copy to gsl_vector_cpy + since it acts like memcpy (dest, src) not 'cp(copy) from to' + +Thu Dec 2 20:39:02 1999 Brian Gough + + * init_source.c: fixed bug, block element needs to be null in + gsl_vector_alloc_from_vector to maintain correct ownership, + added gsl_vector_view_from_vector (Thanks to Fabrice Rossi) + +Tue Oct 19 14:13:14 1999 Brian Gough + + * added gsl_vector_swap function to exchange elements + +Fri Oct 1 15:47:45 1999 Brian Gough + + * removed support for gsl_vector_ptr. Use set/get instead. + + * now uses separate block directory for memory management + +Mon Mar 1 19:38:16 1999 Brian Gough + + * test_source.c: added tests for gsl_vector_ptr with and without + stride + + * gsl_vector_char.h: added missing code to gsl_vector_char_ptr for + stride in char case. + + +Sun Nov 8 18:39:40 1998 Brian Gough + + * test_io.c, test_complex_io.c: split out the printf/scanf + routines since these aren't supported on all platforms + for long double + +Fri Jul 24 19:44:52 1998 Brian Gough + + * added parent pointer in structs, to determine whether or not + we're allowed to free the memory pointed to by * data. + +Wed Jun 10 19:13:35 1998 Brian Gough + + * init_source.c: added a cast for each malloc + +Sun Apr 26 14:10:06 1998 Brian Gough + + * added support for complex vectors + +Mon Apr 6 15:06:38 1998 Brian Gough + + * make range checking the default, you have to define + GSL_RANGE_CHECK_OFF to turn it off + diff --git a/gsl-2.5/vector/Makefile b/gsl-2.5/vector/Makefile new file mode 100644 index 00000000..f76a21c7 --- /dev/null +++ b/gsl-2.5/vector/Makefile @@ -0,0 +1,1060 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# vector/Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + + + + +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/gsl +pkgincludedir = $(includedir)/gsl +pkglibdir = $(libdir)/gsl +pkglibexecdir = $(libexecdir)/gsl +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = x86_64-unknown-linux-gnu +host_triplet = x86_64-unknown-linux-gnu +check_PROGRAMS = test$(EXEEXT) test_static$(EXEEXT) +subdir = vector +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp \ + $(noinst_HEADERS) $(pkginclude_HEADERS) \ + $(top_srcdir)/test-driver ChangeLog TODO +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +libgslvector_la_LIBADD = +am_libgslvector_la_OBJECTS = init.lo file.lo vector.lo copy.lo swap.lo \ + prop.lo minmax.lo oper.lo reim.lo subvector.lo view.lo +libgslvector_la_OBJECTS = $(am_libgslvector_la_OBJECTS) +AM_V_lt = $(am__v_lt_$(V)) +am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) +am__v_lt_0 = --silent +am__v_lt_1 = +am_test_OBJECTS = test.$(OBJEXT) +test_OBJECTS = $(am_test_OBJECTS) +test_DEPENDENCIES = libgslvector.la ../block/libgslblock.la \ + ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la \ + ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la +am_test_static_OBJECTS = test_static.$(OBJEXT) +test_static_OBJECTS = $(am_test_static_OBJECTS) +test_static_DEPENDENCIES = libgslvector.la ../block/libgslblock.la \ + ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la \ + ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la +AM_V_P = $(am__v_P_$(V)) +am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY)) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_$(V)) +am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_$(V)) +am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I. -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_$(V)) +am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_$(V)) +am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libgslvector_la_SOURCES) $(test_SOURCES) \ + $(test_static_SOURCES) +DIST_SOURCES = $(libgslvector_la_SOURCES) $(test_SOURCES) \ + $(test_static_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(pkgincludedir)" +HEADERS = $(noinst_HEADERS) $(pkginclude_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = .test +LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing aclocal-1.13 +AMTAR = $${TAR-tar} +AM_DEFAULT_VERBOSITY = 1 +AR = ar +AS = as +AUTOCONF = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing autoconf +AUTOHEADER = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing autoheader +AUTOMAKE = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing automake-1.13 +AWK = gawk +CC = gcc +CCDEPMODE = depmode=gcc3 +CFLAGS = -g -O2 +CPP = gcc -E +CPPFLAGS = +CYGPATH_W = echo +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +DLLTOOL = false +DSYMUTIL = +DUMPBIN = +ECHO_C = +ECHO_N = -n +ECHO_T = +EGREP = /usr/bin/grep -E +EXEEXT = +FGREP = /usr/bin/grep -F +GREP = /usr/bin/grep +GSLCBLAS_LDFLAGS = +GSL_CFLAGS = -I${prefix}/include +GSL_LDFLAGS = +GSL_LIBADD = +GSL_LIBM = -lm +GSL_LIBS = -L${exec_prefix}/lib -lgsl +GSL_LT_CBLAS_VERSION = 0:0:0 +GSL_LT_VERSION = 24:0:1 +GSL_MAJOR_VERSION = 2 +GSL_MINOR_VERSION = 5 +HAVE_AIX_IEEE_INTERFACE = +HAVE_DARWIN86_IEEE_INTERFACE = +HAVE_DARWIN_IEEE_INTERFACE = +HAVE_FREEBSD_IEEE_INTERFACE = +HAVE_GNUM68K_IEEE_INTERFACE = +HAVE_GNUPPC_IEEE_INTERFACE = +HAVE_GNUSPARC_IEEE_INTERFACE = +HAVE_GNUX86_IEEE_INTERFACE = +HAVE_HPUX11_IEEE_INTERFACE = +HAVE_HPUX_IEEE_INTERFACE = +HAVE_IRIX_IEEE_INTERFACE = +HAVE_NETBSD_IEEE_INTERFACE = +HAVE_OPENBSD_IEEE_INTERFACE = +HAVE_OS2EMX_IEEE_INTERFACE = +HAVE_SOLARIS_IEEE_INTERFACE = +HAVE_SUNOS4_IEEE_INTERFACE = +HAVE_TRU64_IEEE_INTERFACE = +INSTALL = /usr/bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = $(install_sh) -c -s +LD = /usr/bin/ld -m elf_x86_64 +LDFLAGS = +LIBM = -lm +LIBOBJS = +LIBS = -lm +LIBTOOL = $(SHELL) $(top_builddir)/libtool +LIPO = +LN_S = ln -s +LTLIBOBJS = +MAINT = # +MAKEINFO = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing makeinfo +MANIFEST_TOOL = : +MKDIR_P = /usr/bin/mkdir -p +NM = /usr/bin/nm -B +NMEDIT = +OBJDUMP = objdump +OBJEXT = o +OTOOL = +OTOOL64 = +PACKAGE = gsl +PACKAGE_BUGREPORT = +PACKAGE_NAME = gsl +PACKAGE_STRING = gsl 2.5 +PACKAGE_TARNAME = gsl +PACKAGE_URL = +PACKAGE_VERSION = 2.5 +PATH_SEPARATOR = : +RANLIB = ranlib +SED = /usr/bin/sed +SET_MAKE = +SHELL = /bin/sh +STRIP = strip +VERSION = 2.5 +abs_builddir = /home/groups/kipac/chto/package/gsl/gsl-2.5/vector +abs_srcdir = /home/groups/kipac/chto/package/gsl/gsl-2.5/vector +abs_top_builddir = /home/groups/kipac/chto/package/gsl/gsl-2.5 +abs_top_srcdir = /home/groups/kipac/chto/package/gsl/gsl-2.5 +ac_ct_AR = ar +ac_ct_CC = gcc +ac_ct_DUMPBIN = +am__include = include +am__leading_dot = . +am__quote = +am__tar = $${TAR-tar} chof - "$$tardir" +am__untar = $${TAR-tar} xf - +bindir = ${exec_prefix}/bin +build = x86_64-unknown-linux-gnu +build_alias = +build_cpu = x86_64 +build_os = linux-gnu +build_vendor = unknown +builddir = . +datadir = ${datarootdir} +datarootdir = ${prefix}/share +docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} +dvidir = ${docdir} +exec_prefix = ${prefix} +host = x86_64-unknown-linux-gnu +host_alias = +host_cpu = x86_64 +host_os = linux-gnu +host_vendor = unknown +htmldir = ${docdir} +includedir = ${prefix}/include +infodir = ${datarootdir}/info +install_sh = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/install-sh +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +localedir = ${datarootdir}/locale +localstatedir = ${prefix}/var +mandir = ${datarootdir}/man +mkdir_p = $(MKDIR_P) +oldincludedir = /usr/include +pdfdir = ${docdir} +prefix = /home/groups/kipac/chto/package/gsl/gsl_lib +program_transform_name = s,x,x, +psdir = ${docdir} +sbindir = ${exec_prefix}/sbin +sharedstatedir = ${prefix}/com +srcdir = . +sysconfdir = ${prefix}/etc +target_alias = +top_build_prefix = ../ +top_builddir = .. +top_srcdir = .. +noinst_LTLIBRARIES = libgslvector.la +pkginclude_HEADERS = gsl_vector.h gsl_vector_char.h gsl_vector_complex.h gsl_vector_complex_double.h gsl_vector_complex_float.h gsl_vector_complex_long_double.h gsl_vector_double.h gsl_vector_float.h gsl_vector_int.h gsl_vector_long.h gsl_vector_long_double.h gsl_vector_short.h gsl_vector_uchar.h gsl_vector_uint.h gsl_vector_ulong.h gsl_vector_ushort.h +AM_CPPFLAGS = -I$(top_srcdir) +TESTS = $(check_PROGRAMS) +test_LDADD = libgslvector.la ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la +test_static_LDADD = libgslvector.la ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la +test_SOURCES = test.c +test_static_SOURCES = test_static.c +CLEANFILES = test.txt test.dat test_static.dat +noinst_HEADERS = init_source.c file_source.c copy_source.c swap_source.c prop_source.c test_complex_source.c test_source.c minmax_source.c oper_source.c oper_complex_source.c reim_source.c subvector_source.c view_source.c +libgslvector_la_SOURCES = init.c file.c vector.c copy.c swap.c prop.c minmax.c oper.c reim.c subvector.c view.c view.h +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu vector/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu vector/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: # $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): # $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libgslvector.la: $(libgslvector_la_OBJECTS) $(libgslvector_la_DEPENDENCIES) $(EXTRA_libgslvector_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(libgslvector_la_OBJECTS) $(libgslvector_la_LIBADD) $(LIBS) + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) $(EXTRA_test_DEPENDENCIES) + @rm -f test$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_OBJECTS) $(test_LDADD) $(LIBS) + +test_static$(EXEEXT): $(test_static_OBJECTS) $(test_static_DEPENDENCIES) $(EXTRA_test_static_DEPENDENCIES) + @rm -f test_static$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_static_OBJECTS) $(test_static_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +include ./$(DEPDIR)/copy.Plo +include ./$(DEPDIR)/file.Plo +include ./$(DEPDIR)/init.Plo +include ./$(DEPDIR)/minmax.Plo +include ./$(DEPDIR)/oper.Plo +include ./$(DEPDIR)/prop.Plo +include ./$(DEPDIR)/reim.Plo +include ./$(DEPDIR)/subvector.Plo +include ./$(DEPDIR)/swap.Plo +include ./$(DEPDIR)/test.Po +include ./$(DEPDIR)/test_static.Po +include ./$(DEPDIR)/vector.Plo +include ./$(DEPDIR)/view.Plo + +.c.o: + $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# $(AM_V_CC)source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(COMPILE) -c $< + +.c.obj: + $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# $(AM_V_CC)source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: + $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +# $(AM_V_CC)source='$<' object='$@' libtool=yes \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-pkgincludeHEADERS: $(pkginclude_HEADERS) + @$(NORMAL_INSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \ + done + +uninstall-pkgincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + else \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_PROGRAMS) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +test.log: test$(EXEEXT) + @p='test$(EXEEXT)'; \ + b='test'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test_static.log: test_static$(EXEEXT) + @p='test_static$(EXEEXT)'; \ + b='test_static'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +#.test$(EXEEXT).log: +# @p='$<'; \ +# $(am__set_b); \ +# $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +# --log-file $$b.log --trs-file $$b.trs \ +# $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +# "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-am +all-am: Makefile $(LTLIBRARIES) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(pkgincludedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-pkgincludeHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-pkgincludeHEADERS + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES cscopelist-am ctags ctags-am distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-pkgincludeHEADERS \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + recheck tags tags-am uninstall uninstall-am \ + uninstall-pkgincludeHEADERS + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gsl-2.5/vector/Makefile.am b/gsl-2.5/vector/Makefile.am new file mode 100644 index 00000000..63d47aa3 --- /dev/null +++ b/gsl-2.5/vector/Makefile.am @@ -0,0 +1,21 @@ +noinst_LTLIBRARIES = libgslvector.la + +check_PROGRAMS = test test_static + +pkginclude_HEADERS = gsl_vector.h gsl_vector_char.h gsl_vector_complex.h gsl_vector_complex_double.h gsl_vector_complex_float.h gsl_vector_complex_long_double.h gsl_vector_double.h gsl_vector_float.h gsl_vector_int.h gsl_vector_long.h gsl_vector_long_double.h gsl_vector_short.h gsl_vector_uchar.h gsl_vector_uint.h gsl_vector_ulong.h gsl_vector_ushort.h + +AM_CPPFLAGS = -I$(top_srcdir) + +TESTS = $(check_PROGRAMS) + +test_LDADD = libgslvector.la ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la +test_static_LDADD = libgslvector.la ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la + +test_SOURCES = test.c +test_static_SOURCES = test_static.c + +CLEANFILES = test.txt test.dat test_static.dat + +noinst_HEADERS = init_source.c file_source.c copy_source.c swap_source.c prop_source.c test_complex_source.c test_source.c minmax_source.c oper_source.c oper_complex_source.c reim_source.c subvector_source.c view_source.c + +libgslvector_la_SOURCES = init.c file.c vector.c copy.c swap.c prop.c minmax.c oper.c reim.c subvector.c view.c view.h diff --git a/gsl-2.5/vector/Makefile.in b/gsl-2.5/vector/Makefile.in new file mode 100644 index 00000000..d5144ab0 --- /dev/null +++ b/gsl-2.5/vector/Makefile.in @@ -0,0 +1,1060 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + + +VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +check_PROGRAMS = test$(EXEEXT) test_static$(EXEEXT) +subdir = vector +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp \ + $(noinst_HEADERS) $(pkginclude_HEADERS) \ + $(top_srcdir)/test-driver ChangeLog TODO +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +libgslvector_la_LIBADD = +am_libgslvector_la_OBJECTS = init.lo file.lo vector.lo copy.lo swap.lo \ + prop.lo minmax.lo oper.lo reim.lo subvector.lo view.lo +libgslvector_la_OBJECTS = $(am_libgslvector_la_OBJECTS) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +am_test_OBJECTS = test.$(OBJEXT) +test_OBJECTS = $(am_test_OBJECTS) +test_DEPENDENCIES = libgslvector.la ../block/libgslblock.la \ + ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la \ + ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la +am_test_static_OBJECTS = test_static.$(OBJEXT) +test_static_OBJECTS = $(am_test_static_OBJECTS) +test_static_DEPENDENCIES = libgslvector.la ../block/libgslblock.la \ + ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la \ + ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libgslvector_la_SOURCES) $(test_SOURCES) \ + $(test_static_SOURCES) +DIST_SOURCES = $(libgslvector_la_SOURCES) $(test_SOURCES) \ + $(test_static_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(pkgincludedir)" +HEADERS = $(noinst_HEADERS) $(pkginclude_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = @EXEEXT@ .test +LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +GSLCBLAS_LDFLAGS = @GSLCBLAS_LDFLAGS@ +GSL_CFLAGS = @GSL_CFLAGS@ +GSL_LDFLAGS = @GSL_LDFLAGS@ +GSL_LIBADD = @GSL_LIBADD@ +GSL_LIBM = @GSL_LIBM@ +GSL_LIBS = @GSL_LIBS@ +GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ +GSL_LT_VERSION = @GSL_LT_VERSION@ +GSL_MAJOR_VERSION = @GSL_MAJOR_VERSION@ +GSL_MINOR_VERSION = @GSL_MINOR_VERSION@ +HAVE_AIX_IEEE_INTERFACE = @HAVE_AIX_IEEE_INTERFACE@ +HAVE_DARWIN86_IEEE_INTERFACE = @HAVE_DARWIN86_IEEE_INTERFACE@ +HAVE_DARWIN_IEEE_INTERFACE = @HAVE_DARWIN_IEEE_INTERFACE@ +HAVE_FREEBSD_IEEE_INTERFACE = @HAVE_FREEBSD_IEEE_INTERFACE@ +HAVE_GNUM68K_IEEE_INTERFACE = @HAVE_GNUM68K_IEEE_INTERFACE@ +HAVE_GNUPPC_IEEE_INTERFACE = @HAVE_GNUPPC_IEEE_INTERFACE@ +HAVE_GNUSPARC_IEEE_INTERFACE = @HAVE_GNUSPARC_IEEE_INTERFACE@ +HAVE_GNUX86_IEEE_INTERFACE = @HAVE_GNUX86_IEEE_INTERFACE@ +HAVE_HPUX11_IEEE_INTERFACE = @HAVE_HPUX11_IEEE_INTERFACE@ +HAVE_HPUX_IEEE_INTERFACE = @HAVE_HPUX_IEEE_INTERFACE@ +HAVE_IRIX_IEEE_INTERFACE = @HAVE_IRIX_IEEE_INTERFACE@ +HAVE_NETBSD_IEEE_INTERFACE = @HAVE_NETBSD_IEEE_INTERFACE@ +HAVE_OPENBSD_IEEE_INTERFACE = @HAVE_OPENBSD_IEEE_INTERFACE@ +HAVE_OS2EMX_IEEE_INTERFACE = @HAVE_OS2EMX_IEEE_INTERFACE@ +HAVE_SOLARIS_IEEE_INTERFACE = @HAVE_SOLARIS_IEEE_INTERFACE@ +HAVE_SUNOS4_IEEE_INTERFACE = @HAVE_SUNOS4_IEEE_INTERFACE@ +HAVE_TRU64_IEEE_INTERFACE = @HAVE_TRU64_IEEE_INTERFACE@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBM = @LIBM@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +noinst_LTLIBRARIES = libgslvector.la +pkginclude_HEADERS = gsl_vector.h gsl_vector_char.h gsl_vector_complex.h gsl_vector_complex_double.h gsl_vector_complex_float.h gsl_vector_complex_long_double.h gsl_vector_double.h gsl_vector_float.h gsl_vector_int.h gsl_vector_long.h gsl_vector_long_double.h gsl_vector_short.h gsl_vector_uchar.h gsl_vector_uint.h gsl_vector_ulong.h gsl_vector_ushort.h +AM_CPPFLAGS = -I$(top_srcdir) +TESTS = $(check_PROGRAMS) +test_LDADD = libgslvector.la ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la +test_static_LDADD = libgslvector.la ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la +test_SOURCES = test.c +test_static_SOURCES = test_static.c +CLEANFILES = test.txt test.dat test_static.dat +noinst_HEADERS = init_source.c file_source.c copy_source.c swap_source.c prop_source.c test_complex_source.c test_source.c minmax_source.c oper_source.c oper_complex_source.c reim_source.c subvector_source.c view_source.c +libgslvector_la_SOURCES = init.c file.c vector.c copy.c swap.c prop.c minmax.c oper.c reim.c subvector.c view.c view.h +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu vector/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu vector/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libgslvector.la: $(libgslvector_la_OBJECTS) $(libgslvector_la_DEPENDENCIES) $(EXTRA_libgslvector_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(libgslvector_la_OBJECTS) $(libgslvector_la_LIBADD) $(LIBS) + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) $(EXTRA_test_DEPENDENCIES) + @rm -f test$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_OBJECTS) $(test_LDADD) $(LIBS) + +test_static$(EXEEXT): $(test_static_OBJECTS) $(test_static_DEPENDENCIES) $(EXTRA_test_static_DEPENDENCIES) + @rm -f test_static$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_static_OBJECTS) $(test_static_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/copy.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/file.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/init.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/minmax.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/oper.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/prop.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/reim.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/subvector.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/swap.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_static.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vector.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/view.Plo@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-pkgincludeHEADERS: $(pkginclude_HEADERS) + @$(NORMAL_INSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \ + done + +uninstall-pkgincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + else \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_PROGRAMS) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +test.log: test$(EXEEXT) + @p='test$(EXEEXT)'; \ + b='test'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test_static.log: test_static$(EXEEXT) + @p='test_static$(EXEEXT)'; \ + b='test_static'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +@am__EXEEXT_TRUE@.test$(EXEEXT).log: +@am__EXEEXT_TRUE@ @p='$<'; \ +@am__EXEEXT_TRUE@ $(am__set_b); \ +@am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +@am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ +@am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +@am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-am +all-am: Makefile $(LTLIBRARIES) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(pkgincludedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-pkgincludeHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-pkgincludeHEADERS + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES cscopelist-am ctags ctags-am distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-pkgincludeHEADERS \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + recheck tags tags-am uninstall uninstall-am \ + uninstall-pkgincludeHEADERS + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gsl-2.5/vector/TODO b/gsl-2.5/vector/TODO new file mode 100644 index 00000000..a3c88490 --- /dev/null +++ b/gsl-2.5/vector/TODO @@ -0,0 +1,6 @@ +# -*- org -*- +#+CATEGORY: vector + +* Pretty print function + +* Vector p-norms diff --git a/gsl-2.5/vector/copy.c b/gsl-2.5/vector/copy.c new file mode 100644 index 00000000..1b42916b --- /dev/null +++ b/gsl-2.5/vector/copy.c @@ -0,0 +1,87 @@ +#include +#include +#include + +#define BASE_GSL_COMPLEX_LONG +#include "templates_on.h" +#include "copy_source.c" +#include "templates_off.h" +#undef BASE_GSL_COMPLEX_LONG + +#define BASE_GSL_COMPLEX +#include "templates_on.h" +#include "copy_source.c" +#include "templates_off.h" +#undef BASE_GSL_COMPLEX + +#define BASE_GSL_COMPLEX_FLOAT +#include "templates_on.h" +#include "copy_source.c" +#include "templates_off.h" +#undef BASE_GSL_COMPLEX_FLOAT + +#define BASE_LONG_DOUBLE +#include "templates_on.h" +#include "copy_source.c" +#include "templates_off.h" +#undef BASE_LONG_DOUBLE + +#define BASE_DOUBLE +#include "templates_on.h" +#include "copy_source.c" +#include "templates_off.h" +#undef BASE_DOUBLE + +#define BASE_FLOAT +#include "templates_on.h" +#include "copy_source.c" +#include "templates_off.h" +#undef BASE_FLOAT + +#define BASE_ULONG +#include "templates_on.h" +#include "copy_source.c" +#include "templates_off.h" +#undef BASE_ULONG + +#define BASE_LONG +#include "templates_on.h" +#include "copy_source.c" +#include "templates_off.h" +#undef BASE_LONG + +#define BASE_UINT +#include "templates_on.h" +#include "copy_source.c" +#include "templates_off.h" +#undef BASE_UINT + +#define BASE_INT +#include "templates_on.h" +#include "copy_source.c" +#include "templates_off.h" +#undef BASE_INT + +#define BASE_USHORT +#include "templates_on.h" +#include "copy_source.c" +#include "templates_off.h" +#undef BASE_USHORT + +#define BASE_SHORT +#include "templates_on.h" +#include "copy_source.c" +#include "templates_off.h" +#undef BASE_SHORT + +#define BASE_UCHAR +#include "templates_on.h" +#include "copy_source.c" +#include "templates_off.h" +#undef BASE_UCHAR + +#define BASE_CHAR +#include "templates_on.h" +#include "copy_source.c" +#include "templates_off.h" +#undef BASE_CHAR diff --git a/gsl-2.5/vector/copy.lo b/gsl-2.5/vector/copy.lo new file mode 100644 index 00000000..4853e963 --- /dev/null +++ b/gsl-2.5/vector/copy.lo @@ -0,0 +1,12 @@ +# copy.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/copy.o' + +# Name of the non-PIC object +non_pic_object='copy.o' + diff --git a/gsl-2.5/vector/copy_source.c b/gsl-2.5/vector/copy_source.c new file mode 100644 index 00000000..66283fec --- /dev/null +++ b/gsl-2.5/vector/copy_source.c @@ -0,0 +1,51 @@ +/* vector/copy_source.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +int +FUNCTION (gsl_vector, memcpy) (TYPE (gsl_vector) * dest, + const TYPE (gsl_vector) * src) +{ + const size_t src_size = src->size; + const size_t dest_size = dest->size; + + if (src_size != dest_size) + { + GSL_ERROR ("vector lengths are not equal", GSL_EBADLEN); + } + + { + const size_t src_stride = src->stride ; + const size_t dest_stride = dest->stride ; + size_t j; + + for (j = 0; j < src_size; j++) + { + size_t k; + + for (k = 0; k < MULTIPLICITY; k++) + { + dest->data[MULTIPLICITY * dest_stride * j + k] + = src->data[MULTIPLICITY * src_stride * j + k]; + } + } + } + + return GSL_SUCCESS; +} + diff --git a/gsl-2.5/vector/file.c b/gsl-2.5/vector/file.c new file mode 100644 index 00000000..d7b88724 --- /dev/null +++ b/gsl-2.5/vector/file.c @@ -0,0 +1,89 @@ +#include +#include +#include +#include +#include + +#define BASE_GSL_COMPLEX_LONG +#include "templates_on.h" +#include "file_source.c" +#include "templates_off.h" +#undef BASE_GSL_COMPLEX_LONG + +#define BASE_GSL_COMPLEX +#include "templates_on.h" +#include "file_source.c" +#include "templates_off.h" +#undef BASE_GSL_COMPLEX + +#define BASE_GSL_COMPLEX_FLOAT +#include "templates_on.h" +#include "file_source.c" +#include "templates_off.h" +#undef BASE_GSL_COMPLEX_FLOAT + +#define BASE_LONG_DOUBLE +#include "templates_on.h" +#include "file_source.c" +#include "templates_off.h" +#undef BASE_LONG_DOUBLE + +#define BASE_DOUBLE +#include "templates_on.h" +#include "file_source.c" +#include "templates_off.h" +#undef BASE_DOUBLE + +#define BASE_FLOAT +#include "templates_on.h" +#include "file_source.c" +#include "templates_off.h" +#undef BASE_FLOAT + +#define BASE_ULONG +#include "templates_on.h" +#include "file_source.c" +#include "templates_off.h" +#undef BASE_ULONG + +#define BASE_LONG +#include "templates_on.h" +#include "file_source.c" +#include "templates_off.h" +#undef BASE_LONG + +#define BASE_UINT +#include "templates_on.h" +#include "file_source.c" +#include "templates_off.h" +#undef BASE_UINT + +#define BASE_INT +#include "templates_on.h" +#include "file_source.c" +#include "templates_off.h" +#undef BASE_INT + +#define BASE_USHORT +#include "templates_on.h" +#include "file_source.c" +#include "templates_off.h" +#undef BASE_USHORT + +#define BASE_SHORT +#include "templates_on.h" +#include "file_source.c" +#include "templates_off.h" +#undef BASE_SHORT + +#define BASE_UCHAR +#include "templates_on.h" +#include "file_source.c" +#include "templates_off.h" +#undef BASE_UCHAR + +#define BASE_CHAR +#include "templates_on.h" +#include "file_source.c" +#include "templates_off.h" +#undef BASE_CHAR diff --git a/gsl-2.5/vector/file.lo b/gsl-2.5/vector/file.lo new file mode 100644 index 00000000..1443af7c --- /dev/null +++ b/gsl-2.5/vector/file.lo @@ -0,0 +1,12 @@ +# file.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/file.o' + +# Name of the non-PIC object +non_pic_object='file.o' + diff --git a/gsl-2.5/vector/file_source.c b/gsl-2.5/vector/file_source.c new file mode 100644 index 00000000..b4b0375a --- /dev/null +++ b/gsl-2.5/vector/file_source.c @@ -0,0 +1,63 @@ +/* vector/file_source.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +int +FUNCTION (gsl_vector, fread) (FILE * stream, TYPE (gsl_vector) * v) +{ + int status = FUNCTION (gsl_block, raw_fread) (stream, + v->data, + v->size, + v->stride); + return status; +} + +int +FUNCTION (gsl_vector, fwrite) (FILE * stream, const TYPE (gsl_vector) * v) +{ + int status = FUNCTION (gsl_block, raw_fwrite) (stream, + v->data, + v->size, + v->stride); + return status; +} + +#if !(USES_LONGDOUBLE && !HAVE_PRINTF_LONGDOUBLE) +int +FUNCTION (gsl_vector, fprintf) (FILE * stream, const TYPE (gsl_vector) * v, + const char *format) +{ + int status = FUNCTION (gsl_block, raw_fprintf) (stream, + v->data, + v->size, + v->stride, + format); + return status; +} + +int +FUNCTION (gsl_vector, fscanf) (FILE * stream, TYPE (gsl_vector) * v) +{ + int status = FUNCTION (gsl_block, raw_fscanf) (stream, + v->data, + v->size, + v->stride); + return status; +} +#endif + diff --git a/gsl-2.5/vector/gsl_vector.h b/gsl-2.5/vector/gsl_vector.h new file mode 100644 index 00000000..cf762e42 --- /dev/null +++ b/gsl-2.5/vector/gsl_vector.h @@ -0,0 +1,25 @@ +#ifndef __GSL_VECTOR_H__ +#define __GSL_VECTOR_H__ + +#include +#include +#include + +#include +#include +#include + +#include +#include + +#include +#include + +#include +#include + +#include +#include + + +#endif /* __GSL_VECTOR_H__ */ diff --git a/gsl-2.5/vector/gsl_vector_char.h b/gsl-2.5/vector/gsl_vector_char.h new file mode 100644 index 00000000..ab1107de --- /dev/null +++ b/gsl-2.5/vector/gsl_vector_char.h @@ -0,0 +1,230 @@ +/* vector/gsl_vector_char.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_VECTOR_CHAR_H__ +#define __GSL_VECTOR_CHAR_H__ + +#include +#include +#include +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +typedef struct +{ + size_t size; + size_t stride; + char *data; + gsl_block_char *block; + int owner; +} +gsl_vector_char; + +typedef struct +{ + gsl_vector_char vector; +} _gsl_vector_char_view; + +typedef _gsl_vector_char_view gsl_vector_char_view; + +typedef struct +{ + gsl_vector_char vector; +} _gsl_vector_char_const_view; + +typedef const _gsl_vector_char_const_view gsl_vector_char_const_view; + + +/* Allocation */ + +gsl_vector_char *gsl_vector_char_alloc (const size_t n); +gsl_vector_char *gsl_vector_char_calloc (const size_t n); + +gsl_vector_char *gsl_vector_char_alloc_from_block (gsl_block_char * b, + const size_t offset, + const size_t n, + const size_t stride); + +gsl_vector_char *gsl_vector_char_alloc_from_vector (gsl_vector_char * v, + const size_t offset, + const size_t n, + const size_t stride); + +void gsl_vector_char_free (gsl_vector_char * v); + +/* Views */ + +_gsl_vector_char_view +gsl_vector_char_view_array (char *v, size_t n); + +_gsl_vector_char_view +gsl_vector_char_view_array_with_stride (char *base, + size_t stride, + size_t n); + +_gsl_vector_char_const_view +gsl_vector_char_const_view_array (const char *v, size_t n); + +_gsl_vector_char_const_view +gsl_vector_char_const_view_array_with_stride (const char *base, + size_t stride, + size_t n); + +_gsl_vector_char_view +gsl_vector_char_subvector (gsl_vector_char *v, + size_t i, + size_t n); + +_gsl_vector_char_view +gsl_vector_char_subvector_with_stride (gsl_vector_char *v, + size_t i, + size_t stride, + size_t n); + +_gsl_vector_char_const_view +gsl_vector_char_const_subvector (const gsl_vector_char *v, + size_t i, + size_t n); + +_gsl_vector_char_const_view +gsl_vector_char_const_subvector_with_stride (const gsl_vector_char *v, + size_t i, + size_t stride, + size_t n); + +/* Operations */ + +void gsl_vector_char_set_zero (gsl_vector_char * v); +void gsl_vector_char_set_all (gsl_vector_char * v, char x); +int gsl_vector_char_set_basis (gsl_vector_char * v, size_t i); + +int gsl_vector_char_fread (FILE * stream, gsl_vector_char * v); +int gsl_vector_char_fwrite (FILE * stream, const gsl_vector_char * v); +int gsl_vector_char_fscanf (FILE * stream, gsl_vector_char * v); +int gsl_vector_char_fprintf (FILE * stream, const gsl_vector_char * v, + const char *format); + +int gsl_vector_char_memcpy (gsl_vector_char * dest, const gsl_vector_char * src); + +int gsl_vector_char_reverse (gsl_vector_char * v); + +int gsl_vector_char_swap (gsl_vector_char * v, gsl_vector_char * w); +int gsl_vector_char_swap_elements (gsl_vector_char * v, const size_t i, const size_t j); + +char gsl_vector_char_max (const gsl_vector_char * v); +char gsl_vector_char_min (const gsl_vector_char * v); +void gsl_vector_char_minmax (const gsl_vector_char * v, char * min_out, char * max_out); + +size_t gsl_vector_char_max_index (const gsl_vector_char * v); +size_t gsl_vector_char_min_index (const gsl_vector_char * v); +void gsl_vector_char_minmax_index (const gsl_vector_char * v, size_t * imin, size_t * imax); + +int gsl_vector_char_add (gsl_vector_char * a, const gsl_vector_char * b); +int gsl_vector_char_sub (gsl_vector_char * a, const gsl_vector_char * b); +int gsl_vector_char_mul (gsl_vector_char * a, const gsl_vector_char * b); +int gsl_vector_char_div (gsl_vector_char * a, const gsl_vector_char * b); +int gsl_vector_char_scale (gsl_vector_char * a, const double x); +int gsl_vector_char_add_constant (gsl_vector_char * a, const double x); + +int gsl_vector_char_equal (const gsl_vector_char * u, + const gsl_vector_char * v); + +int gsl_vector_char_isnull (const gsl_vector_char * v); +int gsl_vector_char_ispos (const gsl_vector_char * v); +int gsl_vector_char_isneg (const gsl_vector_char * v); +int gsl_vector_char_isnonneg (const gsl_vector_char * v); + +INLINE_DECL char gsl_vector_char_get (const gsl_vector_char * v, const size_t i); +INLINE_DECL void gsl_vector_char_set (gsl_vector_char * v, const size_t i, char x); +INLINE_DECL char * gsl_vector_char_ptr (gsl_vector_char * v, const size_t i); +INLINE_DECL const char * gsl_vector_char_const_ptr (const gsl_vector_char * v, const size_t i); + +#ifdef HAVE_INLINE + +INLINE_FUN +char +gsl_vector_char_get (const gsl_vector_char * v, const size_t i) +{ +#if GSL_RANGE_CHECK + if (GSL_RANGE_COND(i >= v->size)) + { + GSL_ERROR_VAL ("index out of range", GSL_EINVAL, 0); + } +#endif + return v->data[i * v->stride]; +} + +INLINE_FUN +void +gsl_vector_char_set (gsl_vector_char * v, const size_t i, char x) +{ +#if GSL_RANGE_CHECK + if (GSL_RANGE_COND(i >= v->size)) + { + GSL_ERROR_VOID ("index out of range", GSL_EINVAL); + } +#endif + v->data[i * v->stride] = x; +} + +INLINE_FUN +char * +gsl_vector_char_ptr (gsl_vector_char * v, const size_t i) +{ +#if GSL_RANGE_CHECK + if (GSL_RANGE_COND(i >= v->size)) + { + GSL_ERROR_NULL ("index out of range", GSL_EINVAL); + } +#endif + return (char *) (v->data + i * v->stride); +} + +INLINE_FUN +const char * +gsl_vector_char_const_ptr (const gsl_vector_char * v, const size_t i) +{ +#if GSL_RANGE_CHECK + if (GSL_RANGE_COND(i >= v->size)) + { + GSL_ERROR_NULL ("index out of range", GSL_EINVAL); + } +#endif + return (const char *) (v->data + i * v->stride); +} +#endif /* HAVE_INLINE */ + +__END_DECLS + +#endif /* __GSL_VECTOR_CHAR_H__ */ + + diff --git a/gsl-2.5/vector/gsl_vector_complex.h b/gsl-2.5/vector/gsl_vector_complex.h new file mode 100644 index 00000000..e56d6a61 --- /dev/null +++ b/gsl-2.5/vector/gsl_vector_complex.h @@ -0,0 +1,17 @@ +#ifndef __GSL_VECTOR_COMPLEX_H__ +#define __GSL_VECTOR_COMPLEX_H__ + +#define GSL_VECTOR_REAL(z, i) ((z)->data[2*(i)*(z)->stride]) +#define GSL_VECTOR_IMAG(z, i) ((z)->data[2*(i)*(z)->stride + 1]) + +#if GSL_RANGE_CHECK +#define GSL_VECTOR_COMPLEX(zv, i) (((i) >= (zv)->size ? (gsl_error ("index out of range", __FILE__, __LINE__, GSL_EINVAL), 0):0 , *GSL_COMPLEX_AT((zv),(i)))) +#else +#define GSL_VECTOR_COMPLEX(zv, i) (*GSL_COMPLEX_AT((zv),(i))) +#endif + +#define GSL_COMPLEX_AT(zv,i) ((gsl_complex*)&((zv)->data[2*(i)*(zv)->stride])) +#define GSL_COMPLEX_FLOAT_AT(zv,i) ((gsl_complex_float*)&((zv)->data[2*(i)*(zv)->stride])) +#define GSL_COMPLEX_LONG_DOUBLE_AT(zv,i) ((gsl_complex_long_double*)&((zv)->data[2*(i)*(zv)->stride])) + +#endif /* __GSL_VECTOR_COMPLEX_H__ */ diff --git a/gsl-2.5/vector/gsl_vector_complex_double.h b/gsl-2.5/vector/gsl_vector_complex_double.h new file mode 100644 index 00000000..2e536176 --- /dev/null +++ b/gsl-2.5/vector/gsl_vector_complex_double.h @@ -0,0 +1,251 @@ +/* vector/gsl_vector_complex_double.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_VECTOR_COMPLEX_DOUBLE_H__ +#define __GSL_VECTOR_COMPLEX_DOUBLE_H__ + +#include +#include +#include +#include +#include +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +typedef struct +{ + size_t size; + size_t stride; + double *data; + gsl_block_complex *block; + int owner; +} gsl_vector_complex; + +typedef struct +{ + gsl_vector_complex vector; +} _gsl_vector_complex_view; + +typedef _gsl_vector_complex_view gsl_vector_complex_view; + +typedef struct +{ + gsl_vector_complex vector; +} _gsl_vector_complex_const_view; + +typedef const _gsl_vector_complex_const_view gsl_vector_complex_const_view; + +/* Allocation */ + +gsl_vector_complex *gsl_vector_complex_alloc (const size_t n); +gsl_vector_complex *gsl_vector_complex_calloc (const size_t n); + +gsl_vector_complex * +gsl_vector_complex_alloc_from_block (gsl_block_complex * b, + const size_t offset, + const size_t n, + const size_t stride); + +gsl_vector_complex * +gsl_vector_complex_alloc_from_vector (gsl_vector_complex * v, + const size_t offset, + const size_t n, + const size_t stride); + +void gsl_vector_complex_free (gsl_vector_complex * v); + +/* Views */ + +_gsl_vector_complex_view +gsl_vector_complex_view_array (double *base, + size_t n); + +_gsl_vector_complex_view +gsl_vector_complex_view_array_with_stride (double *base, + size_t stride, + size_t n); + +_gsl_vector_complex_const_view +gsl_vector_complex_const_view_array (const double *base, + size_t n); + +_gsl_vector_complex_const_view +gsl_vector_complex_const_view_array_with_stride (const double *base, + size_t stride, + size_t n); + +_gsl_vector_complex_view +gsl_vector_complex_subvector (gsl_vector_complex *base, + size_t i, + size_t n); + + +_gsl_vector_complex_view +gsl_vector_complex_subvector_with_stride (gsl_vector_complex *v, + size_t i, + size_t stride, + size_t n); + +_gsl_vector_complex_const_view +gsl_vector_complex_const_subvector (const gsl_vector_complex *base, + size_t i, + size_t n); + + +_gsl_vector_complex_const_view +gsl_vector_complex_const_subvector_with_stride (const gsl_vector_complex *v, + size_t i, + size_t stride, + size_t n); + +_gsl_vector_view +gsl_vector_complex_real (gsl_vector_complex *v); + +_gsl_vector_view +gsl_vector_complex_imag (gsl_vector_complex *v); + +_gsl_vector_const_view +gsl_vector_complex_const_real (const gsl_vector_complex *v); + +_gsl_vector_const_view +gsl_vector_complex_const_imag (const gsl_vector_complex *v); + + +/* Operations */ + +void gsl_vector_complex_set_zero (gsl_vector_complex * v); +void gsl_vector_complex_set_all (gsl_vector_complex * v, + gsl_complex z); +int gsl_vector_complex_set_basis (gsl_vector_complex * v, size_t i); + +int gsl_vector_complex_fread (FILE * stream, + gsl_vector_complex * v); +int gsl_vector_complex_fwrite (FILE * stream, + const gsl_vector_complex * v); +int gsl_vector_complex_fscanf (FILE * stream, + gsl_vector_complex * v); +int gsl_vector_complex_fprintf (FILE * stream, + const gsl_vector_complex * v, + const char *format); + +int gsl_vector_complex_memcpy (gsl_vector_complex * dest, const gsl_vector_complex * src); + +int gsl_vector_complex_reverse (gsl_vector_complex * v); + +int gsl_vector_complex_swap (gsl_vector_complex * v, gsl_vector_complex * w); +int gsl_vector_complex_swap_elements (gsl_vector_complex * v, const size_t i, const size_t j); + +int gsl_vector_complex_equal (const gsl_vector_complex * u, + const gsl_vector_complex * v); + +int gsl_vector_complex_isnull (const gsl_vector_complex * v); +int gsl_vector_complex_ispos (const gsl_vector_complex * v); +int gsl_vector_complex_isneg (const gsl_vector_complex * v); +int gsl_vector_complex_isnonneg (const gsl_vector_complex * v); + +int gsl_vector_complex_add (gsl_vector_complex * a, const gsl_vector_complex * b); +int gsl_vector_complex_sub (gsl_vector_complex * a, const gsl_vector_complex * b); +int gsl_vector_complex_mul (gsl_vector_complex * a, const gsl_vector_complex * b); +int gsl_vector_complex_div (gsl_vector_complex * a, const gsl_vector_complex * b); +int gsl_vector_complex_scale (gsl_vector_complex * a, const gsl_complex x); +int gsl_vector_complex_add_constant (gsl_vector_complex * a, const gsl_complex x); + +INLINE_DECL gsl_complex gsl_vector_complex_get (const gsl_vector_complex * v, const size_t i); +INLINE_DECL void gsl_vector_complex_set (gsl_vector_complex * v, const size_t i, gsl_complex z); +INLINE_DECL gsl_complex *gsl_vector_complex_ptr (gsl_vector_complex * v, const size_t i); +INLINE_DECL const gsl_complex *gsl_vector_complex_const_ptr (const gsl_vector_complex * v, const size_t i); + +#ifdef HAVE_INLINE + +INLINE_FUN +gsl_complex +gsl_vector_complex_get (const gsl_vector_complex * v, + const size_t i) +{ +#if GSL_RANGE_CHECK + if (GSL_RANGE_COND(i >= v->size)) + { + gsl_complex zero = {{0, 0}}; + GSL_ERROR_VAL ("index out of range", GSL_EINVAL, zero); + } +#endif + return *GSL_COMPLEX_AT (v, i); +} + +INLINE_FUN +void +gsl_vector_complex_set (gsl_vector_complex * v, + const size_t i, gsl_complex z) +{ +#if GSL_RANGE_CHECK + if (GSL_RANGE_COND(i >= v->size)) + { + GSL_ERROR_VOID ("index out of range", GSL_EINVAL); + } +#endif + *GSL_COMPLEX_AT (v, i) = z; +} + +INLINE_FUN +gsl_complex * +gsl_vector_complex_ptr (gsl_vector_complex * v, + const size_t i) +{ +#if GSL_RANGE_CHECK + if (GSL_RANGE_COND(i >= v->size)) + { + GSL_ERROR_NULL ("index out of range", GSL_EINVAL); + } +#endif + return GSL_COMPLEX_AT (v, i); +} + +INLINE_FUN +const gsl_complex * +gsl_vector_complex_const_ptr (const gsl_vector_complex * v, + const size_t i) +{ +#if GSL_RANGE_CHECK + if (GSL_RANGE_COND(i >= v->size)) + { + GSL_ERROR_NULL ("index out of range", GSL_EINVAL); + } +#endif + return GSL_COMPLEX_AT (v, i); +} + + +#endif /* HAVE_INLINE */ + +__END_DECLS + +#endif /* __GSL_VECTOR_COMPLEX_DOUBLE_H__ */ diff --git a/gsl-2.5/vector/gsl_vector_complex_float.h b/gsl-2.5/vector/gsl_vector_complex_float.h new file mode 100644 index 00000000..182f4874 --- /dev/null +++ b/gsl-2.5/vector/gsl_vector_complex_float.h @@ -0,0 +1,251 @@ +/* vector/gsl_vector_complex_float.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_VECTOR_COMPLEX_FLOAT_H__ +#define __GSL_VECTOR_COMPLEX_FLOAT_H__ + +#include +#include +#include +#include +#include +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +typedef struct +{ + size_t size; + size_t stride; + float *data; + gsl_block_complex_float *block; + int owner; +} gsl_vector_complex_float; + +typedef struct +{ + gsl_vector_complex_float vector; +} _gsl_vector_complex_float_view; + +typedef _gsl_vector_complex_float_view gsl_vector_complex_float_view; + +typedef struct +{ + gsl_vector_complex_float vector; +} _gsl_vector_complex_float_const_view; + +typedef const _gsl_vector_complex_float_const_view gsl_vector_complex_float_const_view; + +/* Allocation */ + +gsl_vector_complex_float *gsl_vector_complex_float_alloc (const size_t n); +gsl_vector_complex_float *gsl_vector_complex_float_calloc (const size_t n); + +gsl_vector_complex_float * +gsl_vector_complex_float_alloc_from_block (gsl_block_complex_float * b, + const size_t offset, + const size_t n, + const size_t stride); + +gsl_vector_complex_float * +gsl_vector_complex_float_alloc_from_vector (gsl_vector_complex_float * v, + const size_t offset, + const size_t n, + const size_t stride); + +void gsl_vector_complex_float_free (gsl_vector_complex_float * v); + +/* Views */ + +_gsl_vector_complex_float_view +gsl_vector_complex_float_view_array (float *base, + size_t n); + +_gsl_vector_complex_float_view +gsl_vector_complex_float_view_array_with_stride (float *base, + size_t stride, + size_t n); + +_gsl_vector_complex_float_const_view +gsl_vector_complex_float_const_view_array (const float *base, + size_t n); + +_gsl_vector_complex_float_const_view +gsl_vector_complex_float_const_view_array_with_stride (const float *base, + size_t stride, + size_t n); + +_gsl_vector_complex_float_view +gsl_vector_complex_float_subvector (gsl_vector_complex_float *base, + size_t i, + size_t n); + + +_gsl_vector_complex_float_view +gsl_vector_complex_float_subvector_with_stride (gsl_vector_complex_float *v, + size_t i, + size_t stride, + size_t n); + +_gsl_vector_complex_float_const_view +gsl_vector_complex_float_const_subvector (const gsl_vector_complex_float *base, + size_t i, + size_t n); + + +_gsl_vector_complex_float_const_view +gsl_vector_complex_float_const_subvector_with_stride (const gsl_vector_complex_float *v, + size_t i, + size_t stride, + size_t n); + +_gsl_vector_float_view +gsl_vector_complex_float_real (gsl_vector_complex_float *v); + +_gsl_vector_float_view +gsl_vector_complex_float_imag (gsl_vector_complex_float *v); + +_gsl_vector_float_const_view +gsl_vector_complex_float_const_real (const gsl_vector_complex_float *v); + +_gsl_vector_float_const_view +gsl_vector_complex_float_const_imag (const gsl_vector_complex_float *v); + + +/* Operations */ + +void gsl_vector_complex_float_set_zero (gsl_vector_complex_float * v); +void gsl_vector_complex_float_set_all (gsl_vector_complex_float * v, + gsl_complex_float z); +int gsl_vector_complex_float_set_basis (gsl_vector_complex_float * v, size_t i); + +int gsl_vector_complex_float_fread (FILE * stream, + gsl_vector_complex_float * v); +int gsl_vector_complex_float_fwrite (FILE * stream, + const gsl_vector_complex_float * v); +int gsl_vector_complex_float_fscanf (FILE * stream, + gsl_vector_complex_float * v); +int gsl_vector_complex_float_fprintf (FILE * stream, + const gsl_vector_complex_float * v, + const char *format); + +int gsl_vector_complex_float_memcpy (gsl_vector_complex_float * dest, const gsl_vector_complex_float * src); + +int gsl_vector_complex_float_reverse (gsl_vector_complex_float * v); + +int gsl_vector_complex_float_swap (gsl_vector_complex_float * v, gsl_vector_complex_float * w); +int gsl_vector_complex_float_swap_elements (gsl_vector_complex_float * v, const size_t i, const size_t j); + +int gsl_vector_complex_float_equal (const gsl_vector_complex_float * u, + const gsl_vector_complex_float * v); + +int gsl_vector_complex_float_isnull (const gsl_vector_complex_float * v); +int gsl_vector_complex_float_ispos (const gsl_vector_complex_float * v); +int gsl_vector_complex_float_isneg (const gsl_vector_complex_float * v); +int gsl_vector_complex_float_isnonneg (const gsl_vector_complex_float * v); + +int gsl_vector_complex_float_add (gsl_vector_complex_float * a, const gsl_vector_complex_float * b); +int gsl_vector_complex_float_sub (gsl_vector_complex_float * a, const gsl_vector_complex_float * b); +int gsl_vector_complex_float_mul (gsl_vector_complex_float * a, const gsl_vector_complex_float * b); +int gsl_vector_complex_float_div (gsl_vector_complex_float * a, const gsl_vector_complex_float * b); +int gsl_vector_complex_float_scale (gsl_vector_complex_float * a, const gsl_complex_float x); +int gsl_vector_complex_float_add_constant (gsl_vector_complex_float * a, const gsl_complex_float x); + +INLINE_DECL gsl_complex_float gsl_vector_complex_float_get (const gsl_vector_complex_float * v, const size_t i); +INLINE_DECL void gsl_vector_complex_float_set (gsl_vector_complex_float * v, const size_t i, gsl_complex_float z); +INLINE_DECL gsl_complex_float *gsl_vector_complex_float_ptr (gsl_vector_complex_float * v, const size_t i); +INLINE_DECL const gsl_complex_float *gsl_vector_complex_float_const_ptr (const gsl_vector_complex_float * v, const size_t i); + +#ifdef HAVE_INLINE + +INLINE_FUN +gsl_complex_float +gsl_vector_complex_float_get (const gsl_vector_complex_float * v, + const size_t i) +{ +#if GSL_RANGE_CHECK + if (GSL_RANGE_COND(i >= v->size)) + { + gsl_complex_float zero = {{0, 0}}; + GSL_ERROR_VAL ("index out of range", GSL_EINVAL, zero); + } +#endif + return *GSL_COMPLEX_FLOAT_AT (v, i); +} + +INLINE_FUN +void +gsl_vector_complex_float_set (gsl_vector_complex_float * v, + const size_t i, gsl_complex_float z) +{ +#if GSL_RANGE_CHECK + if (GSL_RANGE_COND(i >= v->size)) + { + GSL_ERROR_VOID ("index out of range", GSL_EINVAL); + } +#endif + *GSL_COMPLEX_FLOAT_AT (v, i) = z; +} + +INLINE_FUN +gsl_complex_float * +gsl_vector_complex_float_ptr (gsl_vector_complex_float * v, + const size_t i) +{ +#if GSL_RANGE_CHECK + if (GSL_RANGE_COND(i >= v->size)) + { + GSL_ERROR_NULL ("index out of range", GSL_EINVAL); + } +#endif + return GSL_COMPLEX_FLOAT_AT (v, i); +} + +INLINE_FUN +const gsl_complex_float * +gsl_vector_complex_float_const_ptr (const gsl_vector_complex_float * v, + const size_t i) +{ +#if GSL_RANGE_CHECK + if (GSL_RANGE_COND(i >= v->size)) + { + GSL_ERROR_NULL ("index out of range", GSL_EINVAL); + } +#endif + return GSL_COMPLEX_FLOAT_AT (v, i); +} + + +#endif /* HAVE_INLINE */ + +__END_DECLS + +#endif /* __GSL_VECTOR_COMPLEX_FLOAT_H__ */ diff --git a/gsl-2.5/vector/gsl_vector_complex_long_double.h b/gsl-2.5/vector/gsl_vector_complex_long_double.h new file mode 100644 index 00000000..91755e0c --- /dev/null +++ b/gsl-2.5/vector/gsl_vector_complex_long_double.h @@ -0,0 +1,251 @@ +/* vector/gsl_vector_complex_long_double.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_VECTOR_COMPLEX_LONG_DOUBLE_H__ +#define __GSL_VECTOR_COMPLEX_LONG_DOUBLE_H__ + +#include +#include +#include +#include +#include +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +typedef struct +{ + size_t size; + size_t stride; + long double *data; + gsl_block_complex_long_double *block; + int owner; +} gsl_vector_complex_long_double; + +typedef struct +{ + gsl_vector_complex_long_double vector; +} _gsl_vector_complex_long_double_view; + +typedef _gsl_vector_complex_long_double_view gsl_vector_complex_long_double_view; + +typedef struct +{ + gsl_vector_complex_long_double vector; +} _gsl_vector_complex_long_double_const_view; + +typedef const _gsl_vector_complex_long_double_const_view gsl_vector_complex_long_double_const_view; + +/* Allocation */ + +gsl_vector_complex_long_double *gsl_vector_complex_long_double_alloc (const size_t n); +gsl_vector_complex_long_double *gsl_vector_complex_long_double_calloc (const size_t n); + +gsl_vector_complex_long_double * +gsl_vector_complex_long_double_alloc_from_block (gsl_block_complex_long_double * b, + const size_t offset, + const size_t n, + const size_t stride); + +gsl_vector_complex_long_double * +gsl_vector_complex_long_double_alloc_from_vector (gsl_vector_complex_long_double * v, + const size_t offset, + const size_t n, + const size_t stride); + +void gsl_vector_complex_long_double_free (gsl_vector_complex_long_double * v); + +/* Views */ + +_gsl_vector_complex_long_double_view +gsl_vector_complex_long_double_view_array (long double *base, + size_t n); + +_gsl_vector_complex_long_double_view +gsl_vector_complex_long_double_view_array_with_stride (long double *base, + size_t stride, + size_t n); + +_gsl_vector_complex_long_double_const_view +gsl_vector_complex_long_double_const_view_array (const long double *base, + size_t n); + +_gsl_vector_complex_long_double_const_view +gsl_vector_complex_long_double_const_view_array_with_stride (const long double *base, + size_t stride, + size_t n); + +_gsl_vector_complex_long_double_view +gsl_vector_complex_long_double_subvector (gsl_vector_complex_long_double *base, + size_t i, + size_t n); + + +_gsl_vector_complex_long_double_view +gsl_vector_complex_long_double_subvector_with_stride (gsl_vector_complex_long_double *v, + size_t i, + size_t stride, + size_t n); + +_gsl_vector_complex_long_double_const_view +gsl_vector_complex_long_double_const_subvector (const gsl_vector_complex_long_double *base, + size_t i, + size_t n); + + +_gsl_vector_complex_long_double_const_view +gsl_vector_complex_long_double_const_subvector_with_stride (const gsl_vector_complex_long_double *v, + size_t i, + size_t stride, + size_t n); + +_gsl_vector_long_double_view +gsl_vector_complex_long_double_real (gsl_vector_complex_long_double *v); + +_gsl_vector_long_double_view +gsl_vector_complex_long_double_imag (gsl_vector_complex_long_double *v); + +_gsl_vector_long_double_const_view +gsl_vector_complex_long_double_const_real (const gsl_vector_complex_long_double *v); + +_gsl_vector_long_double_const_view +gsl_vector_complex_long_double_const_imag (const gsl_vector_complex_long_double *v); + + +/* Operations */ + +void gsl_vector_complex_long_double_set_zero (gsl_vector_complex_long_double * v); +void gsl_vector_complex_long_double_set_all (gsl_vector_complex_long_double * v, + gsl_complex_long_double z); +int gsl_vector_complex_long_double_set_basis (gsl_vector_complex_long_double * v, size_t i); + +int gsl_vector_complex_long_double_fread (FILE * stream, + gsl_vector_complex_long_double * v); +int gsl_vector_complex_long_double_fwrite (FILE * stream, + const gsl_vector_complex_long_double * v); +int gsl_vector_complex_long_double_fscanf (FILE * stream, + gsl_vector_complex_long_double * v); +int gsl_vector_complex_long_double_fprintf (FILE * stream, + const gsl_vector_complex_long_double * v, + const char *format); + +int gsl_vector_complex_long_double_memcpy (gsl_vector_complex_long_double * dest, const gsl_vector_complex_long_double * src); + +int gsl_vector_complex_long_double_reverse (gsl_vector_complex_long_double * v); + +int gsl_vector_complex_long_double_swap (gsl_vector_complex_long_double * v, gsl_vector_complex_long_double * w); +int gsl_vector_complex_long_double_swap_elements (gsl_vector_complex_long_double * v, const size_t i, const size_t j); + +int gsl_vector_complex_long_double_equal (const gsl_vector_complex_long_double * u, + const gsl_vector_complex_long_double * v); + +int gsl_vector_complex_long_double_isnull (const gsl_vector_complex_long_double * v); +int gsl_vector_complex_long_double_ispos (const gsl_vector_complex_long_double * v); +int gsl_vector_complex_long_double_isneg (const gsl_vector_complex_long_double * v); +int gsl_vector_complex_long_double_isnonneg (const gsl_vector_complex_long_double * v); + +int gsl_vector_complex_long_double_add (gsl_vector_complex_long_double * a, const gsl_vector_complex_long_double * b); +int gsl_vector_complex_long_double_sub (gsl_vector_complex_long_double * a, const gsl_vector_complex_long_double * b); +int gsl_vector_complex_long_double_mul (gsl_vector_complex_long_double * a, const gsl_vector_complex_long_double * b); +int gsl_vector_complex_long_double_div (gsl_vector_complex_long_double * a, const gsl_vector_complex_long_double * b); +int gsl_vector_complex_long_double_scale (gsl_vector_complex_long_double * a, const gsl_complex_long_double x); +int gsl_vector_complex_long_double_add_constant (gsl_vector_complex_long_double * a, const gsl_complex_long_double x); + +INLINE_DECL gsl_complex_long_double gsl_vector_complex_long_double_get (const gsl_vector_complex_long_double * v, const size_t i); +INLINE_DECL void gsl_vector_complex_long_double_set (gsl_vector_complex_long_double * v, const size_t i, gsl_complex_long_double z); +INLINE_DECL gsl_complex_long_double *gsl_vector_complex_long_double_ptr (gsl_vector_complex_long_double * v, const size_t i); +INLINE_DECL const gsl_complex_long_double *gsl_vector_complex_long_double_const_ptr (const gsl_vector_complex_long_double * v, const size_t i); + +#ifdef HAVE_INLINE + +INLINE_FUN +gsl_complex_long_double +gsl_vector_complex_long_double_get (const gsl_vector_complex_long_double * v, + const size_t i) +{ +#if GSL_RANGE_CHECK + if (GSL_RANGE_COND(i >= v->size)) + { + gsl_complex_long_double zero = {{0, 0}}; + GSL_ERROR_VAL ("index out of range", GSL_EINVAL, zero); + } +#endif + return *GSL_COMPLEX_LONG_DOUBLE_AT (v, i); +} + +INLINE_FUN +void +gsl_vector_complex_long_double_set (gsl_vector_complex_long_double * v, + const size_t i, gsl_complex_long_double z) +{ +#if GSL_RANGE_CHECK + if (GSL_RANGE_COND(i >= v->size)) + { + GSL_ERROR_VOID ("index out of range", GSL_EINVAL); + } +#endif + *GSL_COMPLEX_LONG_DOUBLE_AT (v, i) = z; +} + +INLINE_FUN +gsl_complex_long_double * +gsl_vector_complex_long_double_ptr (gsl_vector_complex_long_double * v, + const size_t i) +{ +#if GSL_RANGE_CHECK + if (GSL_RANGE_COND(i >= v->size)) + { + GSL_ERROR_NULL ("index out of range", GSL_EINVAL); + } +#endif + return GSL_COMPLEX_LONG_DOUBLE_AT (v, i); +} + +INLINE_FUN +const gsl_complex_long_double * +gsl_vector_complex_long_double_const_ptr (const gsl_vector_complex_long_double * v, + const size_t i) +{ +#if GSL_RANGE_CHECK + if (GSL_RANGE_COND(i >= v->size)) + { + GSL_ERROR_NULL ("index out of range", GSL_EINVAL); + } +#endif + return GSL_COMPLEX_LONG_DOUBLE_AT (v, i); +} + + +#endif /* HAVE_INLINE */ + +__END_DECLS + +#endif /* __GSL_VECTOR_COMPLEX_LONG_DOUBLE_H__ */ diff --git a/gsl-2.5/vector/gsl_vector_double.h b/gsl-2.5/vector/gsl_vector_double.h new file mode 100644 index 00000000..26a12d83 --- /dev/null +++ b/gsl-2.5/vector/gsl_vector_double.h @@ -0,0 +1,230 @@ +/* vector/gsl_vector_double.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_VECTOR_DOUBLE_H__ +#define __GSL_VECTOR_DOUBLE_H__ + +#include +#include +#include +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +typedef struct +{ + size_t size; + size_t stride; + double *data; + gsl_block *block; + int owner; +} +gsl_vector; + +typedef struct +{ + gsl_vector vector; +} _gsl_vector_view; + +typedef _gsl_vector_view gsl_vector_view; + +typedef struct +{ + gsl_vector vector; +} _gsl_vector_const_view; + +typedef const _gsl_vector_const_view gsl_vector_const_view; + + +/* Allocation */ + +gsl_vector *gsl_vector_alloc (const size_t n); +gsl_vector *gsl_vector_calloc (const size_t n); + +gsl_vector *gsl_vector_alloc_from_block (gsl_block * b, + const size_t offset, + const size_t n, + const size_t stride); + +gsl_vector *gsl_vector_alloc_from_vector (gsl_vector * v, + const size_t offset, + const size_t n, + const size_t stride); + +void gsl_vector_free (gsl_vector * v); + +/* Views */ + +_gsl_vector_view +gsl_vector_view_array (double *v, size_t n); + +_gsl_vector_view +gsl_vector_view_array_with_stride (double *base, + size_t stride, + size_t n); + +_gsl_vector_const_view +gsl_vector_const_view_array (const double *v, size_t n); + +_gsl_vector_const_view +gsl_vector_const_view_array_with_stride (const double *base, + size_t stride, + size_t n); + +_gsl_vector_view +gsl_vector_subvector (gsl_vector *v, + size_t i, + size_t n); + +_gsl_vector_view +gsl_vector_subvector_with_stride (gsl_vector *v, + size_t i, + size_t stride, + size_t n); + +_gsl_vector_const_view +gsl_vector_const_subvector (const gsl_vector *v, + size_t i, + size_t n); + +_gsl_vector_const_view +gsl_vector_const_subvector_with_stride (const gsl_vector *v, + size_t i, + size_t stride, + size_t n); + +/* Operations */ + +void gsl_vector_set_zero (gsl_vector * v); +void gsl_vector_set_all (gsl_vector * v, double x); +int gsl_vector_set_basis (gsl_vector * v, size_t i); + +int gsl_vector_fread (FILE * stream, gsl_vector * v); +int gsl_vector_fwrite (FILE * stream, const gsl_vector * v); +int gsl_vector_fscanf (FILE * stream, gsl_vector * v); +int gsl_vector_fprintf (FILE * stream, const gsl_vector * v, + const char *format); + +int gsl_vector_memcpy (gsl_vector * dest, const gsl_vector * src); + +int gsl_vector_reverse (gsl_vector * v); + +int gsl_vector_swap (gsl_vector * v, gsl_vector * w); +int gsl_vector_swap_elements (gsl_vector * v, const size_t i, const size_t j); + +double gsl_vector_max (const gsl_vector * v); +double gsl_vector_min (const gsl_vector * v); +void gsl_vector_minmax (const gsl_vector * v, double * min_out, double * max_out); + +size_t gsl_vector_max_index (const gsl_vector * v); +size_t gsl_vector_min_index (const gsl_vector * v); +void gsl_vector_minmax_index (const gsl_vector * v, size_t * imin, size_t * imax); + +int gsl_vector_add (gsl_vector * a, const gsl_vector * b); +int gsl_vector_sub (gsl_vector * a, const gsl_vector * b); +int gsl_vector_mul (gsl_vector * a, const gsl_vector * b); +int gsl_vector_div (gsl_vector * a, const gsl_vector * b); +int gsl_vector_scale (gsl_vector * a, const double x); +int gsl_vector_add_constant (gsl_vector * a, const double x); + +int gsl_vector_equal (const gsl_vector * u, + const gsl_vector * v); + +int gsl_vector_isnull (const gsl_vector * v); +int gsl_vector_ispos (const gsl_vector * v); +int gsl_vector_isneg (const gsl_vector * v); +int gsl_vector_isnonneg (const gsl_vector * v); + +INLINE_DECL double gsl_vector_get (const gsl_vector * v, const size_t i); +INLINE_DECL void gsl_vector_set (gsl_vector * v, const size_t i, double x); +INLINE_DECL double * gsl_vector_ptr (gsl_vector * v, const size_t i); +INLINE_DECL const double * gsl_vector_const_ptr (const gsl_vector * v, const size_t i); + +#ifdef HAVE_INLINE + +INLINE_FUN +double +gsl_vector_get (const gsl_vector * v, const size_t i) +{ +#if GSL_RANGE_CHECK + if (GSL_RANGE_COND(i >= v->size)) + { + GSL_ERROR_VAL ("index out of range", GSL_EINVAL, 0); + } +#endif + return v->data[i * v->stride]; +} + +INLINE_FUN +void +gsl_vector_set (gsl_vector * v, const size_t i, double x) +{ +#if GSL_RANGE_CHECK + if (GSL_RANGE_COND(i >= v->size)) + { + GSL_ERROR_VOID ("index out of range", GSL_EINVAL); + } +#endif + v->data[i * v->stride] = x; +} + +INLINE_FUN +double * +gsl_vector_ptr (gsl_vector * v, const size_t i) +{ +#if GSL_RANGE_CHECK + if (GSL_RANGE_COND(i >= v->size)) + { + GSL_ERROR_NULL ("index out of range", GSL_EINVAL); + } +#endif + return (double *) (v->data + i * v->stride); +} + +INLINE_FUN +const double * +gsl_vector_const_ptr (const gsl_vector * v, const size_t i) +{ +#if GSL_RANGE_CHECK + if (GSL_RANGE_COND(i >= v->size)) + { + GSL_ERROR_NULL ("index out of range", GSL_EINVAL); + } +#endif + return (const double *) (v->data + i * v->stride); +} +#endif /* HAVE_INLINE */ + +__END_DECLS + +#endif /* __GSL_VECTOR_DOUBLE_H__ */ + + diff --git a/gsl-2.5/vector/gsl_vector_float.h b/gsl-2.5/vector/gsl_vector_float.h new file mode 100644 index 00000000..2b499c81 --- /dev/null +++ b/gsl-2.5/vector/gsl_vector_float.h @@ -0,0 +1,230 @@ +/* vector/gsl_vector_float.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_VECTOR_FLOAT_H__ +#define __GSL_VECTOR_FLOAT_H__ + +#include +#include +#include +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +typedef struct +{ + size_t size; + size_t stride; + float *data; + gsl_block_float *block; + int owner; +} +gsl_vector_float; + +typedef struct +{ + gsl_vector_float vector; +} _gsl_vector_float_view; + +typedef _gsl_vector_float_view gsl_vector_float_view; + +typedef struct +{ + gsl_vector_float vector; +} _gsl_vector_float_const_view; + +typedef const _gsl_vector_float_const_view gsl_vector_float_const_view; + + +/* Allocation */ + +gsl_vector_float *gsl_vector_float_alloc (const size_t n); +gsl_vector_float *gsl_vector_float_calloc (const size_t n); + +gsl_vector_float *gsl_vector_float_alloc_from_block (gsl_block_float * b, + const size_t offset, + const size_t n, + const size_t stride); + +gsl_vector_float *gsl_vector_float_alloc_from_vector (gsl_vector_float * v, + const size_t offset, + const size_t n, + const size_t stride); + +void gsl_vector_float_free (gsl_vector_float * v); + +/* Views */ + +_gsl_vector_float_view +gsl_vector_float_view_array (float *v, size_t n); + +_gsl_vector_float_view +gsl_vector_float_view_array_with_stride (float *base, + size_t stride, + size_t n); + +_gsl_vector_float_const_view +gsl_vector_float_const_view_array (const float *v, size_t n); + +_gsl_vector_float_const_view +gsl_vector_float_const_view_array_with_stride (const float *base, + size_t stride, + size_t n); + +_gsl_vector_float_view +gsl_vector_float_subvector (gsl_vector_float *v, + size_t i, + size_t n); + +_gsl_vector_float_view +gsl_vector_float_subvector_with_stride (gsl_vector_float *v, + size_t i, + size_t stride, + size_t n); + +_gsl_vector_float_const_view +gsl_vector_float_const_subvector (const gsl_vector_float *v, + size_t i, + size_t n); + +_gsl_vector_float_const_view +gsl_vector_float_const_subvector_with_stride (const gsl_vector_float *v, + size_t i, + size_t stride, + size_t n); + +/* Operations */ + +void gsl_vector_float_set_zero (gsl_vector_float * v); +void gsl_vector_float_set_all (gsl_vector_float * v, float x); +int gsl_vector_float_set_basis (gsl_vector_float * v, size_t i); + +int gsl_vector_float_fread (FILE * stream, gsl_vector_float * v); +int gsl_vector_float_fwrite (FILE * stream, const gsl_vector_float * v); +int gsl_vector_float_fscanf (FILE * stream, gsl_vector_float * v); +int gsl_vector_float_fprintf (FILE * stream, const gsl_vector_float * v, + const char *format); + +int gsl_vector_float_memcpy (gsl_vector_float * dest, const gsl_vector_float * src); + +int gsl_vector_float_reverse (gsl_vector_float * v); + +int gsl_vector_float_swap (gsl_vector_float * v, gsl_vector_float * w); +int gsl_vector_float_swap_elements (gsl_vector_float * v, const size_t i, const size_t j); + +float gsl_vector_float_max (const gsl_vector_float * v); +float gsl_vector_float_min (const gsl_vector_float * v); +void gsl_vector_float_minmax (const gsl_vector_float * v, float * min_out, float * max_out); + +size_t gsl_vector_float_max_index (const gsl_vector_float * v); +size_t gsl_vector_float_min_index (const gsl_vector_float * v); +void gsl_vector_float_minmax_index (const gsl_vector_float * v, size_t * imin, size_t * imax); + +int gsl_vector_float_add (gsl_vector_float * a, const gsl_vector_float * b); +int gsl_vector_float_sub (gsl_vector_float * a, const gsl_vector_float * b); +int gsl_vector_float_mul (gsl_vector_float * a, const gsl_vector_float * b); +int gsl_vector_float_div (gsl_vector_float * a, const gsl_vector_float * b); +int gsl_vector_float_scale (gsl_vector_float * a, const double x); +int gsl_vector_float_add_constant (gsl_vector_float * a, const double x); + +int gsl_vector_float_equal (const gsl_vector_float * u, + const gsl_vector_float * v); + +int gsl_vector_float_isnull (const gsl_vector_float * v); +int gsl_vector_float_ispos (const gsl_vector_float * v); +int gsl_vector_float_isneg (const gsl_vector_float * v); +int gsl_vector_float_isnonneg (const gsl_vector_float * v); + +INLINE_DECL float gsl_vector_float_get (const gsl_vector_float * v, const size_t i); +INLINE_DECL void gsl_vector_float_set (gsl_vector_float * v, const size_t i, float x); +INLINE_DECL float * gsl_vector_float_ptr (gsl_vector_float * v, const size_t i); +INLINE_DECL const float * gsl_vector_float_const_ptr (const gsl_vector_float * v, const size_t i); + +#ifdef HAVE_INLINE + +INLINE_FUN +float +gsl_vector_float_get (const gsl_vector_float * v, const size_t i) +{ +#if GSL_RANGE_CHECK + if (GSL_RANGE_COND(i >= v->size)) + { + GSL_ERROR_VAL ("index out of range", GSL_EINVAL, 0); + } +#endif + return v->data[i * v->stride]; +} + +INLINE_FUN +void +gsl_vector_float_set (gsl_vector_float * v, const size_t i, float x) +{ +#if GSL_RANGE_CHECK + if (GSL_RANGE_COND(i >= v->size)) + { + GSL_ERROR_VOID ("index out of range", GSL_EINVAL); + } +#endif + v->data[i * v->stride] = x; +} + +INLINE_FUN +float * +gsl_vector_float_ptr (gsl_vector_float * v, const size_t i) +{ +#if GSL_RANGE_CHECK + if (GSL_RANGE_COND(i >= v->size)) + { + GSL_ERROR_NULL ("index out of range", GSL_EINVAL); + } +#endif + return (float *) (v->data + i * v->stride); +} + +INLINE_FUN +const float * +gsl_vector_float_const_ptr (const gsl_vector_float * v, const size_t i) +{ +#if GSL_RANGE_CHECK + if (GSL_RANGE_COND(i >= v->size)) + { + GSL_ERROR_NULL ("index out of range", GSL_EINVAL); + } +#endif + return (const float *) (v->data + i * v->stride); +} +#endif /* HAVE_INLINE */ + +__END_DECLS + +#endif /* __GSL_VECTOR_FLOAT_H__ */ + + diff --git a/gsl-2.5/vector/gsl_vector_int.h b/gsl-2.5/vector/gsl_vector_int.h new file mode 100644 index 00000000..de04a449 --- /dev/null +++ b/gsl-2.5/vector/gsl_vector_int.h @@ -0,0 +1,230 @@ +/* vector/gsl_vector_int.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_VECTOR_INT_H__ +#define __GSL_VECTOR_INT_H__ + +#include +#include +#include +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +typedef struct +{ + size_t size; + size_t stride; + int *data; + gsl_block_int *block; + int owner; +} +gsl_vector_int; + +typedef struct +{ + gsl_vector_int vector; +} _gsl_vector_int_view; + +typedef _gsl_vector_int_view gsl_vector_int_view; + +typedef struct +{ + gsl_vector_int vector; +} _gsl_vector_int_const_view; + +typedef const _gsl_vector_int_const_view gsl_vector_int_const_view; + + +/* Allocation */ + +gsl_vector_int *gsl_vector_int_alloc (const size_t n); +gsl_vector_int *gsl_vector_int_calloc (const size_t n); + +gsl_vector_int *gsl_vector_int_alloc_from_block (gsl_block_int * b, + const size_t offset, + const size_t n, + const size_t stride); + +gsl_vector_int *gsl_vector_int_alloc_from_vector (gsl_vector_int * v, + const size_t offset, + const size_t n, + const size_t stride); + +void gsl_vector_int_free (gsl_vector_int * v); + +/* Views */ + +_gsl_vector_int_view +gsl_vector_int_view_array (int *v, size_t n); + +_gsl_vector_int_view +gsl_vector_int_view_array_with_stride (int *base, + size_t stride, + size_t n); + +_gsl_vector_int_const_view +gsl_vector_int_const_view_array (const int *v, size_t n); + +_gsl_vector_int_const_view +gsl_vector_int_const_view_array_with_stride (const int *base, + size_t stride, + size_t n); + +_gsl_vector_int_view +gsl_vector_int_subvector (gsl_vector_int *v, + size_t i, + size_t n); + +_gsl_vector_int_view +gsl_vector_int_subvector_with_stride (gsl_vector_int *v, + size_t i, + size_t stride, + size_t n); + +_gsl_vector_int_const_view +gsl_vector_int_const_subvector (const gsl_vector_int *v, + size_t i, + size_t n); + +_gsl_vector_int_const_view +gsl_vector_int_const_subvector_with_stride (const gsl_vector_int *v, + size_t i, + size_t stride, + size_t n); + +/* Operations */ + +void gsl_vector_int_set_zero (gsl_vector_int * v); +void gsl_vector_int_set_all (gsl_vector_int * v, int x); +int gsl_vector_int_set_basis (gsl_vector_int * v, size_t i); + +int gsl_vector_int_fread (FILE * stream, gsl_vector_int * v); +int gsl_vector_int_fwrite (FILE * stream, const gsl_vector_int * v); +int gsl_vector_int_fscanf (FILE * stream, gsl_vector_int * v); +int gsl_vector_int_fprintf (FILE * stream, const gsl_vector_int * v, + const char *format); + +int gsl_vector_int_memcpy (gsl_vector_int * dest, const gsl_vector_int * src); + +int gsl_vector_int_reverse (gsl_vector_int * v); + +int gsl_vector_int_swap (gsl_vector_int * v, gsl_vector_int * w); +int gsl_vector_int_swap_elements (gsl_vector_int * v, const size_t i, const size_t j); + +int gsl_vector_int_max (const gsl_vector_int * v); +int gsl_vector_int_min (const gsl_vector_int * v); +void gsl_vector_int_minmax (const gsl_vector_int * v, int * min_out, int * max_out); + +size_t gsl_vector_int_max_index (const gsl_vector_int * v); +size_t gsl_vector_int_min_index (const gsl_vector_int * v); +void gsl_vector_int_minmax_index (const gsl_vector_int * v, size_t * imin, size_t * imax); + +int gsl_vector_int_add (gsl_vector_int * a, const gsl_vector_int * b); +int gsl_vector_int_sub (gsl_vector_int * a, const gsl_vector_int * b); +int gsl_vector_int_mul (gsl_vector_int * a, const gsl_vector_int * b); +int gsl_vector_int_div (gsl_vector_int * a, const gsl_vector_int * b); +int gsl_vector_int_scale (gsl_vector_int * a, const double x); +int gsl_vector_int_add_constant (gsl_vector_int * a, const double x); + +int gsl_vector_int_equal (const gsl_vector_int * u, + const gsl_vector_int * v); + +int gsl_vector_int_isnull (const gsl_vector_int * v); +int gsl_vector_int_ispos (const gsl_vector_int * v); +int gsl_vector_int_isneg (const gsl_vector_int * v); +int gsl_vector_int_isnonneg (const gsl_vector_int * v); + +INLINE_DECL int gsl_vector_int_get (const gsl_vector_int * v, const size_t i); +INLINE_DECL void gsl_vector_int_set (gsl_vector_int * v, const size_t i, int x); +INLINE_DECL int * gsl_vector_int_ptr (gsl_vector_int * v, const size_t i); +INLINE_DECL const int * gsl_vector_int_const_ptr (const gsl_vector_int * v, const size_t i); + +#ifdef HAVE_INLINE + +INLINE_FUN +int +gsl_vector_int_get (const gsl_vector_int * v, const size_t i) +{ +#if GSL_RANGE_CHECK + if (GSL_RANGE_COND(i >= v->size)) + { + GSL_ERROR_VAL ("index out of range", GSL_EINVAL, 0); + } +#endif + return v->data[i * v->stride]; +} + +INLINE_FUN +void +gsl_vector_int_set (gsl_vector_int * v, const size_t i, int x) +{ +#if GSL_RANGE_CHECK + if (GSL_RANGE_COND(i >= v->size)) + { + GSL_ERROR_VOID ("index out of range", GSL_EINVAL); + } +#endif + v->data[i * v->stride] = x; +} + +INLINE_FUN +int * +gsl_vector_int_ptr (gsl_vector_int * v, const size_t i) +{ +#if GSL_RANGE_CHECK + if (GSL_RANGE_COND(i >= v->size)) + { + GSL_ERROR_NULL ("index out of range", GSL_EINVAL); + } +#endif + return (int *) (v->data + i * v->stride); +} + +INLINE_FUN +const int * +gsl_vector_int_const_ptr (const gsl_vector_int * v, const size_t i) +{ +#if GSL_RANGE_CHECK + if (GSL_RANGE_COND(i >= v->size)) + { + GSL_ERROR_NULL ("index out of range", GSL_EINVAL); + } +#endif + return (const int *) (v->data + i * v->stride); +} +#endif /* HAVE_INLINE */ + +__END_DECLS + +#endif /* __GSL_VECTOR_INT_H__ */ + + diff --git a/gsl-2.5/vector/gsl_vector_long.h b/gsl-2.5/vector/gsl_vector_long.h new file mode 100644 index 00000000..f844a027 --- /dev/null +++ b/gsl-2.5/vector/gsl_vector_long.h @@ -0,0 +1,230 @@ +/* vector/gsl_vector_long.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_VECTOR_LONG_H__ +#define __GSL_VECTOR_LONG_H__ + +#include +#include +#include +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +typedef struct +{ + size_t size; + size_t stride; + long *data; + gsl_block_long *block; + int owner; +} +gsl_vector_long; + +typedef struct +{ + gsl_vector_long vector; +} _gsl_vector_long_view; + +typedef _gsl_vector_long_view gsl_vector_long_view; + +typedef struct +{ + gsl_vector_long vector; +} _gsl_vector_long_const_view; + +typedef const _gsl_vector_long_const_view gsl_vector_long_const_view; + + +/* Allocation */ + +gsl_vector_long *gsl_vector_long_alloc (const size_t n); +gsl_vector_long *gsl_vector_long_calloc (const size_t n); + +gsl_vector_long *gsl_vector_long_alloc_from_block (gsl_block_long * b, + const size_t offset, + const size_t n, + const size_t stride); + +gsl_vector_long *gsl_vector_long_alloc_from_vector (gsl_vector_long * v, + const size_t offset, + const size_t n, + const size_t stride); + +void gsl_vector_long_free (gsl_vector_long * v); + +/* Views */ + +_gsl_vector_long_view +gsl_vector_long_view_array (long *v, size_t n); + +_gsl_vector_long_view +gsl_vector_long_view_array_with_stride (long *base, + size_t stride, + size_t n); + +_gsl_vector_long_const_view +gsl_vector_long_const_view_array (const long *v, size_t n); + +_gsl_vector_long_const_view +gsl_vector_long_const_view_array_with_stride (const long *base, + size_t stride, + size_t n); + +_gsl_vector_long_view +gsl_vector_long_subvector (gsl_vector_long *v, + size_t i, + size_t n); + +_gsl_vector_long_view +gsl_vector_long_subvector_with_stride (gsl_vector_long *v, + size_t i, + size_t stride, + size_t n); + +_gsl_vector_long_const_view +gsl_vector_long_const_subvector (const gsl_vector_long *v, + size_t i, + size_t n); + +_gsl_vector_long_const_view +gsl_vector_long_const_subvector_with_stride (const gsl_vector_long *v, + size_t i, + size_t stride, + size_t n); + +/* Operations */ + +void gsl_vector_long_set_zero (gsl_vector_long * v); +void gsl_vector_long_set_all (gsl_vector_long * v, long x); +int gsl_vector_long_set_basis (gsl_vector_long * v, size_t i); + +int gsl_vector_long_fread (FILE * stream, gsl_vector_long * v); +int gsl_vector_long_fwrite (FILE * stream, const gsl_vector_long * v); +int gsl_vector_long_fscanf (FILE * stream, gsl_vector_long * v); +int gsl_vector_long_fprintf (FILE * stream, const gsl_vector_long * v, + const char *format); + +int gsl_vector_long_memcpy (gsl_vector_long * dest, const gsl_vector_long * src); + +int gsl_vector_long_reverse (gsl_vector_long * v); + +int gsl_vector_long_swap (gsl_vector_long * v, gsl_vector_long * w); +int gsl_vector_long_swap_elements (gsl_vector_long * v, const size_t i, const size_t j); + +long gsl_vector_long_max (const gsl_vector_long * v); +long gsl_vector_long_min (const gsl_vector_long * v); +void gsl_vector_long_minmax (const gsl_vector_long * v, long * min_out, long * max_out); + +size_t gsl_vector_long_max_index (const gsl_vector_long * v); +size_t gsl_vector_long_min_index (const gsl_vector_long * v); +void gsl_vector_long_minmax_index (const gsl_vector_long * v, size_t * imin, size_t * imax); + +int gsl_vector_long_add (gsl_vector_long * a, const gsl_vector_long * b); +int gsl_vector_long_sub (gsl_vector_long * a, const gsl_vector_long * b); +int gsl_vector_long_mul (gsl_vector_long * a, const gsl_vector_long * b); +int gsl_vector_long_div (gsl_vector_long * a, const gsl_vector_long * b); +int gsl_vector_long_scale (gsl_vector_long * a, const double x); +int gsl_vector_long_add_constant (gsl_vector_long * a, const double x); + +int gsl_vector_long_equal (const gsl_vector_long * u, + const gsl_vector_long * v); + +int gsl_vector_long_isnull (const gsl_vector_long * v); +int gsl_vector_long_ispos (const gsl_vector_long * v); +int gsl_vector_long_isneg (const gsl_vector_long * v); +int gsl_vector_long_isnonneg (const gsl_vector_long * v); + +INLINE_DECL long gsl_vector_long_get (const gsl_vector_long * v, const size_t i); +INLINE_DECL void gsl_vector_long_set (gsl_vector_long * v, const size_t i, long x); +INLINE_DECL long * gsl_vector_long_ptr (gsl_vector_long * v, const size_t i); +INLINE_DECL const long * gsl_vector_long_const_ptr (const gsl_vector_long * v, const size_t i); + +#ifdef HAVE_INLINE + +INLINE_FUN +long +gsl_vector_long_get (const gsl_vector_long * v, const size_t i) +{ +#if GSL_RANGE_CHECK + if (GSL_RANGE_COND(i >= v->size)) + { + GSL_ERROR_VAL ("index out of range", GSL_EINVAL, 0); + } +#endif + return v->data[i * v->stride]; +} + +INLINE_FUN +void +gsl_vector_long_set (gsl_vector_long * v, const size_t i, long x) +{ +#if GSL_RANGE_CHECK + if (GSL_RANGE_COND(i >= v->size)) + { + GSL_ERROR_VOID ("index out of range", GSL_EINVAL); + } +#endif + v->data[i * v->stride] = x; +} + +INLINE_FUN +long * +gsl_vector_long_ptr (gsl_vector_long * v, const size_t i) +{ +#if GSL_RANGE_CHECK + if (GSL_RANGE_COND(i >= v->size)) + { + GSL_ERROR_NULL ("index out of range", GSL_EINVAL); + } +#endif + return (long *) (v->data + i * v->stride); +} + +INLINE_FUN +const long * +gsl_vector_long_const_ptr (const gsl_vector_long * v, const size_t i) +{ +#if GSL_RANGE_CHECK + if (GSL_RANGE_COND(i >= v->size)) + { + GSL_ERROR_NULL ("index out of range", GSL_EINVAL); + } +#endif + return (const long *) (v->data + i * v->stride); +} +#endif /* HAVE_INLINE */ + +__END_DECLS + +#endif /* __GSL_VECTOR_LONG_H__ */ + + diff --git a/gsl-2.5/vector/gsl_vector_long_double.h b/gsl-2.5/vector/gsl_vector_long_double.h new file mode 100644 index 00000000..836b09a5 --- /dev/null +++ b/gsl-2.5/vector/gsl_vector_long_double.h @@ -0,0 +1,230 @@ +/* vector/gsl_vector_long_double.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_VECTOR_LONG_DOUBLE_H__ +#define __GSL_VECTOR_LONG_DOUBLE_H__ + +#include +#include +#include +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +typedef struct +{ + size_t size; + size_t stride; + long double *data; + gsl_block_long_double *block; + int owner; +} +gsl_vector_long_double; + +typedef struct +{ + gsl_vector_long_double vector; +} _gsl_vector_long_double_view; + +typedef _gsl_vector_long_double_view gsl_vector_long_double_view; + +typedef struct +{ + gsl_vector_long_double vector; +} _gsl_vector_long_double_const_view; + +typedef const _gsl_vector_long_double_const_view gsl_vector_long_double_const_view; + + +/* Allocation */ + +gsl_vector_long_double *gsl_vector_long_double_alloc (const size_t n); +gsl_vector_long_double *gsl_vector_long_double_calloc (const size_t n); + +gsl_vector_long_double *gsl_vector_long_double_alloc_from_block (gsl_block_long_double * b, + const size_t offset, + const size_t n, + const size_t stride); + +gsl_vector_long_double *gsl_vector_long_double_alloc_from_vector (gsl_vector_long_double * v, + const size_t offset, + const size_t n, + const size_t stride); + +void gsl_vector_long_double_free (gsl_vector_long_double * v); + +/* Views */ + +_gsl_vector_long_double_view +gsl_vector_long_double_view_array (long double *v, size_t n); + +_gsl_vector_long_double_view +gsl_vector_long_double_view_array_with_stride (long double *base, + size_t stride, + size_t n); + +_gsl_vector_long_double_const_view +gsl_vector_long_double_const_view_array (const long double *v, size_t n); + +_gsl_vector_long_double_const_view +gsl_vector_long_double_const_view_array_with_stride (const long double *base, + size_t stride, + size_t n); + +_gsl_vector_long_double_view +gsl_vector_long_double_subvector (gsl_vector_long_double *v, + size_t i, + size_t n); + +_gsl_vector_long_double_view +gsl_vector_long_double_subvector_with_stride (gsl_vector_long_double *v, + size_t i, + size_t stride, + size_t n); + +_gsl_vector_long_double_const_view +gsl_vector_long_double_const_subvector (const gsl_vector_long_double *v, + size_t i, + size_t n); + +_gsl_vector_long_double_const_view +gsl_vector_long_double_const_subvector_with_stride (const gsl_vector_long_double *v, + size_t i, + size_t stride, + size_t n); + +/* Operations */ + +void gsl_vector_long_double_set_zero (gsl_vector_long_double * v); +void gsl_vector_long_double_set_all (gsl_vector_long_double * v, long double x); +int gsl_vector_long_double_set_basis (gsl_vector_long_double * v, size_t i); + +int gsl_vector_long_double_fread (FILE * stream, gsl_vector_long_double * v); +int gsl_vector_long_double_fwrite (FILE * stream, const gsl_vector_long_double * v); +int gsl_vector_long_double_fscanf (FILE * stream, gsl_vector_long_double * v); +int gsl_vector_long_double_fprintf (FILE * stream, const gsl_vector_long_double * v, + const char *format); + +int gsl_vector_long_double_memcpy (gsl_vector_long_double * dest, const gsl_vector_long_double * src); + +int gsl_vector_long_double_reverse (gsl_vector_long_double * v); + +int gsl_vector_long_double_swap (gsl_vector_long_double * v, gsl_vector_long_double * w); +int gsl_vector_long_double_swap_elements (gsl_vector_long_double * v, const size_t i, const size_t j); + +long double gsl_vector_long_double_max (const gsl_vector_long_double * v); +long double gsl_vector_long_double_min (const gsl_vector_long_double * v); +void gsl_vector_long_double_minmax (const gsl_vector_long_double * v, long double * min_out, long double * max_out); + +size_t gsl_vector_long_double_max_index (const gsl_vector_long_double * v); +size_t gsl_vector_long_double_min_index (const gsl_vector_long_double * v); +void gsl_vector_long_double_minmax_index (const gsl_vector_long_double * v, size_t * imin, size_t * imax); + +int gsl_vector_long_double_add (gsl_vector_long_double * a, const gsl_vector_long_double * b); +int gsl_vector_long_double_sub (gsl_vector_long_double * a, const gsl_vector_long_double * b); +int gsl_vector_long_double_mul (gsl_vector_long_double * a, const gsl_vector_long_double * b); +int gsl_vector_long_double_div (gsl_vector_long_double * a, const gsl_vector_long_double * b); +int gsl_vector_long_double_scale (gsl_vector_long_double * a, const double x); +int gsl_vector_long_double_add_constant (gsl_vector_long_double * a, const double x); + +int gsl_vector_long_double_equal (const gsl_vector_long_double * u, + const gsl_vector_long_double * v); + +int gsl_vector_long_double_isnull (const gsl_vector_long_double * v); +int gsl_vector_long_double_ispos (const gsl_vector_long_double * v); +int gsl_vector_long_double_isneg (const gsl_vector_long_double * v); +int gsl_vector_long_double_isnonneg (const gsl_vector_long_double * v); + +INLINE_DECL long double gsl_vector_long_double_get (const gsl_vector_long_double * v, const size_t i); +INLINE_DECL void gsl_vector_long_double_set (gsl_vector_long_double * v, const size_t i, long double x); +INLINE_DECL long double * gsl_vector_long_double_ptr (gsl_vector_long_double * v, const size_t i); +INLINE_DECL const long double * gsl_vector_long_double_const_ptr (const gsl_vector_long_double * v, const size_t i); + +#ifdef HAVE_INLINE + +INLINE_FUN +long double +gsl_vector_long_double_get (const gsl_vector_long_double * v, const size_t i) +{ +#if GSL_RANGE_CHECK + if (GSL_RANGE_COND(i >= v->size)) + { + GSL_ERROR_VAL ("index out of range", GSL_EINVAL, 0); + } +#endif + return v->data[i * v->stride]; +} + +INLINE_FUN +void +gsl_vector_long_double_set (gsl_vector_long_double * v, const size_t i, long double x) +{ +#if GSL_RANGE_CHECK + if (GSL_RANGE_COND(i >= v->size)) + { + GSL_ERROR_VOID ("index out of range", GSL_EINVAL); + } +#endif + v->data[i * v->stride] = x; +} + +INLINE_FUN +long double * +gsl_vector_long_double_ptr (gsl_vector_long_double * v, const size_t i) +{ +#if GSL_RANGE_CHECK + if (GSL_RANGE_COND(i >= v->size)) + { + GSL_ERROR_NULL ("index out of range", GSL_EINVAL); + } +#endif + return (long double *) (v->data + i * v->stride); +} + +INLINE_FUN +const long double * +gsl_vector_long_double_const_ptr (const gsl_vector_long_double * v, const size_t i) +{ +#if GSL_RANGE_CHECK + if (GSL_RANGE_COND(i >= v->size)) + { + GSL_ERROR_NULL ("index out of range", GSL_EINVAL); + } +#endif + return (const long double *) (v->data + i * v->stride); +} +#endif /* HAVE_INLINE */ + +__END_DECLS + +#endif /* __GSL_VECTOR_LONG_DOUBLE_H__ */ + + diff --git a/gsl-2.5/vector/gsl_vector_short.h b/gsl-2.5/vector/gsl_vector_short.h new file mode 100644 index 00000000..4f41f7a6 --- /dev/null +++ b/gsl-2.5/vector/gsl_vector_short.h @@ -0,0 +1,230 @@ +/* vector/gsl_vector_short.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_VECTOR_SHORT_H__ +#define __GSL_VECTOR_SHORT_H__ + +#include +#include +#include +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +typedef struct +{ + size_t size; + size_t stride; + short *data; + gsl_block_short *block; + int owner; +} +gsl_vector_short; + +typedef struct +{ + gsl_vector_short vector; +} _gsl_vector_short_view; + +typedef _gsl_vector_short_view gsl_vector_short_view; + +typedef struct +{ + gsl_vector_short vector; +} _gsl_vector_short_const_view; + +typedef const _gsl_vector_short_const_view gsl_vector_short_const_view; + + +/* Allocation */ + +gsl_vector_short *gsl_vector_short_alloc (const size_t n); +gsl_vector_short *gsl_vector_short_calloc (const size_t n); + +gsl_vector_short *gsl_vector_short_alloc_from_block (gsl_block_short * b, + const size_t offset, + const size_t n, + const size_t stride); + +gsl_vector_short *gsl_vector_short_alloc_from_vector (gsl_vector_short * v, + const size_t offset, + const size_t n, + const size_t stride); + +void gsl_vector_short_free (gsl_vector_short * v); + +/* Views */ + +_gsl_vector_short_view +gsl_vector_short_view_array (short *v, size_t n); + +_gsl_vector_short_view +gsl_vector_short_view_array_with_stride (short *base, + size_t stride, + size_t n); + +_gsl_vector_short_const_view +gsl_vector_short_const_view_array (const short *v, size_t n); + +_gsl_vector_short_const_view +gsl_vector_short_const_view_array_with_stride (const short *base, + size_t stride, + size_t n); + +_gsl_vector_short_view +gsl_vector_short_subvector (gsl_vector_short *v, + size_t i, + size_t n); + +_gsl_vector_short_view +gsl_vector_short_subvector_with_stride (gsl_vector_short *v, + size_t i, + size_t stride, + size_t n); + +_gsl_vector_short_const_view +gsl_vector_short_const_subvector (const gsl_vector_short *v, + size_t i, + size_t n); + +_gsl_vector_short_const_view +gsl_vector_short_const_subvector_with_stride (const gsl_vector_short *v, + size_t i, + size_t stride, + size_t n); + +/* Operations */ + +void gsl_vector_short_set_zero (gsl_vector_short * v); +void gsl_vector_short_set_all (gsl_vector_short * v, short x); +int gsl_vector_short_set_basis (gsl_vector_short * v, size_t i); + +int gsl_vector_short_fread (FILE * stream, gsl_vector_short * v); +int gsl_vector_short_fwrite (FILE * stream, const gsl_vector_short * v); +int gsl_vector_short_fscanf (FILE * stream, gsl_vector_short * v); +int gsl_vector_short_fprintf (FILE * stream, const gsl_vector_short * v, + const char *format); + +int gsl_vector_short_memcpy (gsl_vector_short * dest, const gsl_vector_short * src); + +int gsl_vector_short_reverse (gsl_vector_short * v); + +int gsl_vector_short_swap (gsl_vector_short * v, gsl_vector_short * w); +int gsl_vector_short_swap_elements (gsl_vector_short * v, const size_t i, const size_t j); + +short gsl_vector_short_max (const gsl_vector_short * v); +short gsl_vector_short_min (const gsl_vector_short * v); +void gsl_vector_short_minmax (const gsl_vector_short * v, short * min_out, short * max_out); + +size_t gsl_vector_short_max_index (const gsl_vector_short * v); +size_t gsl_vector_short_min_index (const gsl_vector_short * v); +void gsl_vector_short_minmax_index (const gsl_vector_short * v, size_t * imin, size_t * imax); + +int gsl_vector_short_add (gsl_vector_short * a, const gsl_vector_short * b); +int gsl_vector_short_sub (gsl_vector_short * a, const gsl_vector_short * b); +int gsl_vector_short_mul (gsl_vector_short * a, const gsl_vector_short * b); +int gsl_vector_short_div (gsl_vector_short * a, const gsl_vector_short * b); +int gsl_vector_short_scale (gsl_vector_short * a, const double x); +int gsl_vector_short_add_constant (gsl_vector_short * a, const double x); + +int gsl_vector_short_equal (const gsl_vector_short * u, + const gsl_vector_short * v); + +int gsl_vector_short_isnull (const gsl_vector_short * v); +int gsl_vector_short_ispos (const gsl_vector_short * v); +int gsl_vector_short_isneg (const gsl_vector_short * v); +int gsl_vector_short_isnonneg (const gsl_vector_short * v); + +INLINE_DECL short gsl_vector_short_get (const gsl_vector_short * v, const size_t i); +INLINE_DECL void gsl_vector_short_set (gsl_vector_short * v, const size_t i, short x); +INLINE_DECL short * gsl_vector_short_ptr (gsl_vector_short * v, const size_t i); +INLINE_DECL const short * gsl_vector_short_const_ptr (const gsl_vector_short * v, const size_t i); + +#ifdef HAVE_INLINE + +INLINE_FUN +short +gsl_vector_short_get (const gsl_vector_short * v, const size_t i) +{ +#if GSL_RANGE_CHECK + if (GSL_RANGE_COND(i >= v->size)) + { + GSL_ERROR_VAL ("index out of range", GSL_EINVAL, 0); + } +#endif + return v->data[i * v->stride]; +} + +INLINE_FUN +void +gsl_vector_short_set (gsl_vector_short * v, const size_t i, short x) +{ +#if GSL_RANGE_CHECK + if (GSL_RANGE_COND(i >= v->size)) + { + GSL_ERROR_VOID ("index out of range", GSL_EINVAL); + } +#endif + v->data[i * v->stride] = x; +} + +INLINE_FUN +short * +gsl_vector_short_ptr (gsl_vector_short * v, const size_t i) +{ +#if GSL_RANGE_CHECK + if (GSL_RANGE_COND(i >= v->size)) + { + GSL_ERROR_NULL ("index out of range", GSL_EINVAL); + } +#endif + return (short *) (v->data + i * v->stride); +} + +INLINE_FUN +const short * +gsl_vector_short_const_ptr (const gsl_vector_short * v, const size_t i) +{ +#if GSL_RANGE_CHECK + if (GSL_RANGE_COND(i >= v->size)) + { + GSL_ERROR_NULL ("index out of range", GSL_EINVAL); + } +#endif + return (const short *) (v->data + i * v->stride); +} +#endif /* HAVE_INLINE */ + +__END_DECLS + +#endif /* __GSL_VECTOR_SHORT_H__ */ + + diff --git a/gsl-2.5/vector/gsl_vector_uchar.h b/gsl-2.5/vector/gsl_vector_uchar.h new file mode 100644 index 00000000..b27096d9 --- /dev/null +++ b/gsl-2.5/vector/gsl_vector_uchar.h @@ -0,0 +1,230 @@ +/* vector/gsl_vector_uchar.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_VECTOR_UCHAR_H__ +#define __GSL_VECTOR_UCHAR_H__ + +#include +#include +#include +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +typedef struct +{ + size_t size; + size_t stride; + unsigned char *data; + gsl_block_uchar *block; + int owner; +} +gsl_vector_uchar; + +typedef struct +{ + gsl_vector_uchar vector; +} _gsl_vector_uchar_view; + +typedef _gsl_vector_uchar_view gsl_vector_uchar_view; + +typedef struct +{ + gsl_vector_uchar vector; +} _gsl_vector_uchar_const_view; + +typedef const _gsl_vector_uchar_const_view gsl_vector_uchar_const_view; + + +/* Allocation */ + +gsl_vector_uchar *gsl_vector_uchar_alloc (const size_t n); +gsl_vector_uchar *gsl_vector_uchar_calloc (const size_t n); + +gsl_vector_uchar *gsl_vector_uchar_alloc_from_block (gsl_block_uchar * b, + const size_t offset, + const size_t n, + const size_t stride); + +gsl_vector_uchar *gsl_vector_uchar_alloc_from_vector (gsl_vector_uchar * v, + const size_t offset, + const size_t n, + const size_t stride); + +void gsl_vector_uchar_free (gsl_vector_uchar * v); + +/* Views */ + +_gsl_vector_uchar_view +gsl_vector_uchar_view_array (unsigned char *v, size_t n); + +_gsl_vector_uchar_view +gsl_vector_uchar_view_array_with_stride (unsigned char *base, + size_t stride, + size_t n); + +_gsl_vector_uchar_const_view +gsl_vector_uchar_const_view_array (const unsigned char *v, size_t n); + +_gsl_vector_uchar_const_view +gsl_vector_uchar_const_view_array_with_stride (const unsigned char *base, + size_t stride, + size_t n); + +_gsl_vector_uchar_view +gsl_vector_uchar_subvector (gsl_vector_uchar *v, + size_t i, + size_t n); + +_gsl_vector_uchar_view +gsl_vector_uchar_subvector_with_stride (gsl_vector_uchar *v, + size_t i, + size_t stride, + size_t n); + +_gsl_vector_uchar_const_view +gsl_vector_uchar_const_subvector (const gsl_vector_uchar *v, + size_t i, + size_t n); + +_gsl_vector_uchar_const_view +gsl_vector_uchar_const_subvector_with_stride (const gsl_vector_uchar *v, + size_t i, + size_t stride, + size_t n); + +/* Operations */ + +void gsl_vector_uchar_set_zero (gsl_vector_uchar * v); +void gsl_vector_uchar_set_all (gsl_vector_uchar * v, unsigned char x); +int gsl_vector_uchar_set_basis (gsl_vector_uchar * v, size_t i); + +int gsl_vector_uchar_fread (FILE * stream, gsl_vector_uchar * v); +int gsl_vector_uchar_fwrite (FILE * stream, const gsl_vector_uchar * v); +int gsl_vector_uchar_fscanf (FILE * stream, gsl_vector_uchar * v); +int gsl_vector_uchar_fprintf (FILE * stream, const gsl_vector_uchar * v, + const char *format); + +int gsl_vector_uchar_memcpy (gsl_vector_uchar * dest, const gsl_vector_uchar * src); + +int gsl_vector_uchar_reverse (gsl_vector_uchar * v); + +int gsl_vector_uchar_swap (gsl_vector_uchar * v, gsl_vector_uchar * w); +int gsl_vector_uchar_swap_elements (gsl_vector_uchar * v, const size_t i, const size_t j); + +unsigned char gsl_vector_uchar_max (const gsl_vector_uchar * v); +unsigned char gsl_vector_uchar_min (const gsl_vector_uchar * v); +void gsl_vector_uchar_minmax (const gsl_vector_uchar * v, unsigned char * min_out, unsigned char * max_out); + +size_t gsl_vector_uchar_max_index (const gsl_vector_uchar * v); +size_t gsl_vector_uchar_min_index (const gsl_vector_uchar * v); +void gsl_vector_uchar_minmax_index (const gsl_vector_uchar * v, size_t * imin, size_t * imax); + +int gsl_vector_uchar_add (gsl_vector_uchar * a, const gsl_vector_uchar * b); +int gsl_vector_uchar_sub (gsl_vector_uchar * a, const gsl_vector_uchar * b); +int gsl_vector_uchar_mul (gsl_vector_uchar * a, const gsl_vector_uchar * b); +int gsl_vector_uchar_div (gsl_vector_uchar * a, const gsl_vector_uchar * b); +int gsl_vector_uchar_scale (gsl_vector_uchar * a, const double x); +int gsl_vector_uchar_add_constant (gsl_vector_uchar * a, const double x); + +int gsl_vector_uchar_equal (const gsl_vector_uchar * u, + const gsl_vector_uchar * v); + +int gsl_vector_uchar_isnull (const gsl_vector_uchar * v); +int gsl_vector_uchar_ispos (const gsl_vector_uchar * v); +int gsl_vector_uchar_isneg (const gsl_vector_uchar * v); +int gsl_vector_uchar_isnonneg (const gsl_vector_uchar * v); + +INLINE_DECL unsigned char gsl_vector_uchar_get (const gsl_vector_uchar * v, const size_t i); +INLINE_DECL void gsl_vector_uchar_set (gsl_vector_uchar * v, const size_t i, unsigned char x); +INLINE_DECL unsigned char * gsl_vector_uchar_ptr (gsl_vector_uchar * v, const size_t i); +INLINE_DECL const unsigned char * gsl_vector_uchar_const_ptr (const gsl_vector_uchar * v, const size_t i); + +#ifdef HAVE_INLINE + +INLINE_FUN +unsigned char +gsl_vector_uchar_get (const gsl_vector_uchar * v, const size_t i) +{ +#if GSL_RANGE_CHECK + if (GSL_RANGE_COND(i >= v->size)) + { + GSL_ERROR_VAL ("index out of range", GSL_EINVAL, 0); + } +#endif + return v->data[i * v->stride]; +} + +INLINE_FUN +void +gsl_vector_uchar_set (gsl_vector_uchar * v, const size_t i, unsigned char x) +{ +#if GSL_RANGE_CHECK + if (GSL_RANGE_COND(i >= v->size)) + { + GSL_ERROR_VOID ("index out of range", GSL_EINVAL); + } +#endif + v->data[i * v->stride] = x; +} + +INLINE_FUN +unsigned char * +gsl_vector_uchar_ptr (gsl_vector_uchar * v, const size_t i) +{ +#if GSL_RANGE_CHECK + if (GSL_RANGE_COND(i >= v->size)) + { + GSL_ERROR_NULL ("index out of range", GSL_EINVAL); + } +#endif + return (unsigned char *) (v->data + i * v->stride); +} + +INLINE_FUN +const unsigned char * +gsl_vector_uchar_const_ptr (const gsl_vector_uchar * v, const size_t i) +{ +#if GSL_RANGE_CHECK + if (GSL_RANGE_COND(i >= v->size)) + { + GSL_ERROR_NULL ("index out of range", GSL_EINVAL); + } +#endif + return (const unsigned char *) (v->data + i * v->stride); +} +#endif /* HAVE_INLINE */ + +__END_DECLS + +#endif /* __GSL_VECTOR_UCHAR_H__ */ + + diff --git a/gsl-2.5/vector/gsl_vector_uint.h b/gsl-2.5/vector/gsl_vector_uint.h new file mode 100644 index 00000000..d2f6cb35 --- /dev/null +++ b/gsl-2.5/vector/gsl_vector_uint.h @@ -0,0 +1,230 @@ +/* vector/gsl_vector_uint.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_VECTOR_UINT_H__ +#define __GSL_VECTOR_UINT_H__ + +#include +#include +#include +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +typedef struct +{ + size_t size; + size_t stride; + unsigned int *data; + gsl_block_uint *block; + int owner; +} +gsl_vector_uint; + +typedef struct +{ + gsl_vector_uint vector; +} _gsl_vector_uint_view; + +typedef _gsl_vector_uint_view gsl_vector_uint_view; + +typedef struct +{ + gsl_vector_uint vector; +} _gsl_vector_uint_const_view; + +typedef const _gsl_vector_uint_const_view gsl_vector_uint_const_view; + + +/* Allocation */ + +gsl_vector_uint *gsl_vector_uint_alloc (const size_t n); +gsl_vector_uint *gsl_vector_uint_calloc (const size_t n); + +gsl_vector_uint *gsl_vector_uint_alloc_from_block (gsl_block_uint * b, + const size_t offset, + const size_t n, + const size_t stride); + +gsl_vector_uint *gsl_vector_uint_alloc_from_vector (gsl_vector_uint * v, + const size_t offset, + const size_t n, + const size_t stride); + +void gsl_vector_uint_free (gsl_vector_uint * v); + +/* Views */ + +_gsl_vector_uint_view +gsl_vector_uint_view_array (unsigned int *v, size_t n); + +_gsl_vector_uint_view +gsl_vector_uint_view_array_with_stride (unsigned int *base, + size_t stride, + size_t n); + +_gsl_vector_uint_const_view +gsl_vector_uint_const_view_array (const unsigned int *v, size_t n); + +_gsl_vector_uint_const_view +gsl_vector_uint_const_view_array_with_stride (const unsigned int *base, + size_t stride, + size_t n); + +_gsl_vector_uint_view +gsl_vector_uint_subvector (gsl_vector_uint *v, + size_t i, + size_t n); + +_gsl_vector_uint_view +gsl_vector_uint_subvector_with_stride (gsl_vector_uint *v, + size_t i, + size_t stride, + size_t n); + +_gsl_vector_uint_const_view +gsl_vector_uint_const_subvector (const gsl_vector_uint *v, + size_t i, + size_t n); + +_gsl_vector_uint_const_view +gsl_vector_uint_const_subvector_with_stride (const gsl_vector_uint *v, + size_t i, + size_t stride, + size_t n); + +/* Operations */ + +void gsl_vector_uint_set_zero (gsl_vector_uint * v); +void gsl_vector_uint_set_all (gsl_vector_uint * v, unsigned int x); +int gsl_vector_uint_set_basis (gsl_vector_uint * v, size_t i); + +int gsl_vector_uint_fread (FILE * stream, gsl_vector_uint * v); +int gsl_vector_uint_fwrite (FILE * stream, const gsl_vector_uint * v); +int gsl_vector_uint_fscanf (FILE * stream, gsl_vector_uint * v); +int gsl_vector_uint_fprintf (FILE * stream, const gsl_vector_uint * v, + const char *format); + +int gsl_vector_uint_memcpy (gsl_vector_uint * dest, const gsl_vector_uint * src); + +int gsl_vector_uint_reverse (gsl_vector_uint * v); + +int gsl_vector_uint_swap (gsl_vector_uint * v, gsl_vector_uint * w); +int gsl_vector_uint_swap_elements (gsl_vector_uint * v, const size_t i, const size_t j); + +unsigned int gsl_vector_uint_max (const gsl_vector_uint * v); +unsigned int gsl_vector_uint_min (const gsl_vector_uint * v); +void gsl_vector_uint_minmax (const gsl_vector_uint * v, unsigned int * min_out, unsigned int * max_out); + +size_t gsl_vector_uint_max_index (const gsl_vector_uint * v); +size_t gsl_vector_uint_min_index (const gsl_vector_uint * v); +void gsl_vector_uint_minmax_index (const gsl_vector_uint * v, size_t * imin, size_t * imax); + +int gsl_vector_uint_add (gsl_vector_uint * a, const gsl_vector_uint * b); +int gsl_vector_uint_sub (gsl_vector_uint * a, const gsl_vector_uint * b); +int gsl_vector_uint_mul (gsl_vector_uint * a, const gsl_vector_uint * b); +int gsl_vector_uint_div (gsl_vector_uint * a, const gsl_vector_uint * b); +int gsl_vector_uint_scale (gsl_vector_uint * a, const double x); +int gsl_vector_uint_add_constant (gsl_vector_uint * a, const double x); + +int gsl_vector_uint_equal (const gsl_vector_uint * u, + const gsl_vector_uint * v); + +int gsl_vector_uint_isnull (const gsl_vector_uint * v); +int gsl_vector_uint_ispos (const gsl_vector_uint * v); +int gsl_vector_uint_isneg (const gsl_vector_uint * v); +int gsl_vector_uint_isnonneg (const gsl_vector_uint * v); + +INLINE_DECL unsigned int gsl_vector_uint_get (const gsl_vector_uint * v, const size_t i); +INLINE_DECL void gsl_vector_uint_set (gsl_vector_uint * v, const size_t i, unsigned int x); +INLINE_DECL unsigned int * gsl_vector_uint_ptr (gsl_vector_uint * v, const size_t i); +INLINE_DECL const unsigned int * gsl_vector_uint_const_ptr (const gsl_vector_uint * v, const size_t i); + +#ifdef HAVE_INLINE + +INLINE_FUN +unsigned int +gsl_vector_uint_get (const gsl_vector_uint * v, const size_t i) +{ +#if GSL_RANGE_CHECK + if (GSL_RANGE_COND(i >= v->size)) + { + GSL_ERROR_VAL ("index out of range", GSL_EINVAL, 0); + } +#endif + return v->data[i * v->stride]; +} + +INLINE_FUN +void +gsl_vector_uint_set (gsl_vector_uint * v, const size_t i, unsigned int x) +{ +#if GSL_RANGE_CHECK + if (GSL_RANGE_COND(i >= v->size)) + { + GSL_ERROR_VOID ("index out of range", GSL_EINVAL); + } +#endif + v->data[i * v->stride] = x; +} + +INLINE_FUN +unsigned int * +gsl_vector_uint_ptr (gsl_vector_uint * v, const size_t i) +{ +#if GSL_RANGE_CHECK + if (GSL_RANGE_COND(i >= v->size)) + { + GSL_ERROR_NULL ("index out of range", GSL_EINVAL); + } +#endif + return (unsigned int *) (v->data + i * v->stride); +} + +INLINE_FUN +const unsigned int * +gsl_vector_uint_const_ptr (const gsl_vector_uint * v, const size_t i) +{ +#if GSL_RANGE_CHECK + if (GSL_RANGE_COND(i >= v->size)) + { + GSL_ERROR_NULL ("index out of range", GSL_EINVAL); + } +#endif + return (const unsigned int *) (v->data + i * v->stride); +} +#endif /* HAVE_INLINE */ + +__END_DECLS + +#endif /* __GSL_VECTOR_UINT_H__ */ + + diff --git a/gsl-2.5/vector/gsl_vector_ulong.h b/gsl-2.5/vector/gsl_vector_ulong.h new file mode 100644 index 00000000..01bf2429 --- /dev/null +++ b/gsl-2.5/vector/gsl_vector_ulong.h @@ -0,0 +1,230 @@ +/* vector/gsl_vector_ulong.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_VECTOR_ULONG_H__ +#define __GSL_VECTOR_ULONG_H__ + +#include +#include +#include +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +typedef struct +{ + size_t size; + size_t stride; + unsigned long *data; + gsl_block_ulong *block; + int owner; +} +gsl_vector_ulong; + +typedef struct +{ + gsl_vector_ulong vector; +} _gsl_vector_ulong_view; + +typedef _gsl_vector_ulong_view gsl_vector_ulong_view; + +typedef struct +{ + gsl_vector_ulong vector; +} _gsl_vector_ulong_const_view; + +typedef const _gsl_vector_ulong_const_view gsl_vector_ulong_const_view; + + +/* Allocation */ + +gsl_vector_ulong *gsl_vector_ulong_alloc (const size_t n); +gsl_vector_ulong *gsl_vector_ulong_calloc (const size_t n); + +gsl_vector_ulong *gsl_vector_ulong_alloc_from_block (gsl_block_ulong * b, + const size_t offset, + const size_t n, + const size_t stride); + +gsl_vector_ulong *gsl_vector_ulong_alloc_from_vector (gsl_vector_ulong * v, + const size_t offset, + const size_t n, + const size_t stride); + +void gsl_vector_ulong_free (gsl_vector_ulong * v); + +/* Views */ + +_gsl_vector_ulong_view +gsl_vector_ulong_view_array (unsigned long *v, size_t n); + +_gsl_vector_ulong_view +gsl_vector_ulong_view_array_with_stride (unsigned long *base, + size_t stride, + size_t n); + +_gsl_vector_ulong_const_view +gsl_vector_ulong_const_view_array (const unsigned long *v, size_t n); + +_gsl_vector_ulong_const_view +gsl_vector_ulong_const_view_array_with_stride (const unsigned long *base, + size_t stride, + size_t n); + +_gsl_vector_ulong_view +gsl_vector_ulong_subvector (gsl_vector_ulong *v, + size_t i, + size_t n); + +_gsl_vector_ulong_view +gsl_vector_ulong_subvector_with_stride (gsl_vector_ulong *v, + size_t i, + size_t stride, + size_t n); + +_gsl_vector_ulong_const_view +gsl_vector_ulong_const_subvector (const gsl_vector_ulong *v, + size_t i, + size_t n); + +_gsl_vector_ulong_const_view +gsl_vector_ulong_const_subvector_with_stride (const gsl_vector_ulong *v, + size_t i, + size_t stride, + size_t n); + +/* Operations */ + +void gsl_vector_ulong_set_zero (gsl_vector_ulong * v); +void gsl_vector_ulong_set_all (gsl_vector_ulong * v, unsigned long x); +int gsl_vector_ulong_set_basis (gsl_vector_ulong * v, size_t i); + +int gsl_vector_ulong_fread (FILE * stream, gsl_vector_ulong * v); +int gsl_vector_ulong_fwrite (FILE * stream, const gsl_vector_ulong * v); +int gsl_vector_ulong_fscanf (FILE * stream, gsl_vector_ulong * v); +int gsl_vector_ulong_fprintf (FILE * stream, const gsl_vector_ulong * v, + const char *format); + +int gsl_vector_ulong_memcpy (gsl_vector_ulong * dest, const gsl_vector_ulong * src); + +int gsl_vector_ulong_reverse (gsl_vector_ulong * v); + +int gsl_vector_ulong_swap (gsl_vector_ulong * v, gsl_vector_ulong * w); +int gsl_vector_ulong_swap_elements (gsl_vector_ulong * v, const size_t i, const size_t j); + +unsigned long gsl_vector_ulong_max (const gsl_vector_ulong * v); +unsigned long gsl_vector_ulong_min (const gsl_vector_ulong * v); +void gsl_vector_ulong_minmax (const gsl_vector_ulong * v, unsigned long * min_out, unsigned long * max_out); + +size_t gsl_vector_ulong_max_index (const gsl_vector_ulong * v); +size_t gsl_vector_ulong_min_index (const gsl_vector_ulong * v); +void gsl_vector_ulong_minmax_index (const gsl_vector_ulong * v, size_t * imin, size_t * imax); + +int gsl_vector_ulong_add (gsl_vector_ulong * a, const gsl_vector_ulong * b); +int gsl_vector_ulong_sub (gsl_vector_ulong * a, const gsl_vector_ulong * b); +int gsl_vector_ulong_mul (gsl_vector_ulong * a, const gsl_vector_ulong * b); +int gsl_vector_ulong_div (gsl_vector_ulong * a, const gsl_vector_ulong * b); +int gsl_vector_ulong_scale (gsl_vector_ulong * a, const double x); +int gsl_vector_ulong_add_constant (gsl_vector_ulong * a, const double x); + +int gsl_vector_ulong_equal (const gsl_vector_ulong * u, + const gsl_vector_ulong * v); + +int gsl_vector_ulong_isnull (const gsl_vector_ulong * v); +int gsl_vector_ulong_ispos (const gsl_vector_ulong * v); +int gsl_vector_ulong_isneg (const gsl_vector_ulong * v); +int gsl_vector_ulong_isnonneg (const gsl_vector_ulong * v); + +INLINE_DECL unsigned long gsl_vector_ulong_get (const gsl_vector_ulong * v, const size_t i); +INLINE_DECL void gsl_vector_ulong_set (gsl_vector_ulong * v, const size_t i, unsigned long x); +INLINE_DECL unsigned long * gsl_vector_ulong_ptr (gsl_vector_ulong * v, const size_t i); +INLINE_DECL const unsigned long * gsl_vector_ulong_const_ptr (const gsl_vector_ulong * v, const size_t i); + +#ifdef HAVE_INLINE + +INLINE_FUN +unsigned long +gsl_vector_ulong_get (const gsl_vector_ulong * v, const size_t i) +{ +#if GSL_RANGE_CHECK + if (GSL_RANGE_COND(i >= v->size)) + { + GSL_ERROR_VAL ("index out of range", GSL_EINVAL, 0); + } +#endif + return v->data[i * v->stride]; +} + +INLINE_FUN +void +gsl_vector_ulong_set (gsl_vector_ulong * v, const size_t i, unsigned long x) +{ +#if GSL_RANGE_CHECK + if (GSL_RANGE_COND(i >= v->size)) + { + GSL_ERROR_VOID ("index out of range", GSL_EINVAL); + } +#endif + v->data[i * v->stride] = x; +} + +INLINE_FUN +unsigned long * +gsl_vector_ulong_ptr (gsl_vector_ulong * v, const size_t i) +{ +#if GSL_RANGE_CHECK + if (GSL_RANGE_COND(i >= v->size)) + { + GSL_ERROR_NULL ("index out of range", GSL_EINVAL); + } +#endif + return (unsigned long *) (v->data + i * v->stride); +} + +INLINE_FUN +const unsigned long * +gsl_vector_ulong_const_ptr (const gsl_vector_ulong * v, const size_t i) +{ +#if GSL_RANGE_CHECK + if (GSL_RANGE_COND(i >= v->size)) + { + GSL_ERROR_NULL ("index out of range", GSL_EINVAL); + } +#endif + return (const unsigned long *) (v->data + i * v->stride); +} +#endif /* HAVE_INLINE */ + +__END_DECLS + +#endif /* __GSL_VECTOR_ULONG_H__ */ + + diff --git a/gsl-2.5/vector/gsl_vector_ushort.h b/gsl-2.5/vector/gsl_vector_ushort.h new file mode 100644 index 00000000..7b7e6643 --- /dev/null +++ b/gsl-2.5/vector/gsl_vector_ushort.h @@ -0,0 +1,230 @@ +/* vector/gsl_vector_ushort.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_VECTOR_USHORT_H__ +#define __GSL_VECTOR_USHORT_H__ + +#include +#include +#include +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +typedef struct +{ + size_t size; + size_t stride; + unsigned short *data; + gsl_block_ushort *block; + int owner; +} +gsl_vector_ushort; + +typedef struct +{ + gsl_vector_ushort vector; +} _gsl_vector_ushort_view; + +typedef _gsl_vector_ushort_view gsl_vector_ushort_view; + +typedef struct +{ + gsl_vector_ushort vector; +} _gsl_vector_ushort_const_view; + +typedef const _gsl_vector_ushort_const_view gsl_vector_ushort_const_view; + + +/* Allocation */ + +gsl_vector_ushort *gsl_vector_ushort_alloc (const size_t n); +gsl_vector_ushort *gsl_vector_ushort_calloc (const size_t n); + +gsl_vector_ushort *gsl_vector_ushort_alloc_from_block (gsl_block_ushort * b, + const size_t offset, + const size_t n, + const size_t stride); + +gsl_vector_ushort *gsl_vector_ushort_alloc_from_vector (gsl_vector_ushort * v, + const size_t offset, + const size_t n, + const size_t stride); + +void gsl_vector_ushort_free (gsl_vector_ushort * v); + +/* Views */ + +_gsl_vector_ushort_view +gsl_vector_ushort_view_array (unsigned short *v, size_t n); + +_gsl_vector_ushort_view +gsl_vector_ushort_view_array_with_stride (unsigned short *base, + size_t stride, + size_t n); + +_gsl_vector_ushort_const_view +gsl_vector_ushort_const_view_array (const unsigned short *v, size_t n); + +_gsl_vector_ushort_const_view +gsl_vector_ushort_const_view_array_with_stride (const unsigned short *base, + size_t stride, + size_t n); + +_gsl_vector_ushort_view +gsl_vector_ushort_subvector (gsl_vector_ushort *v, + size_t i, + size_t n); + +_gsl_vector_ushort_view +gsl_vector_ushort_subvector_with_stride (gsl_vector_ushort *v, + size_t i, + size_t stride, + size_t n); + +_gsl_vector_ushort_const_view +gsl_vector_ushort_const_subvector (const gsl_vector_ushort *v, + size_t i, + size_t n); + +_gsl_vector_ushort_const_view +gsl_vector_ushort_const_subvector_with_stride (const gsl_vector_ushort *v, + size_t i, + size_t stride, + size_t n); + +/* Operations */ + +void gsl_vector_ushort_set_zero (gsl_vector_ushort * v); +void gsl_vector_ushort_set_all (gsl_vector_ushort * v, unsigned short x); +int gsl_vector_ushort_set_basis (gsl_vector_ushort * v, size_t i); + +int gsl_vector_ushort_fread (FILE * stream, gsl_vector_ushort * v); +int gsl_vector_ushort_fwrite (FILE * stream, const gsl_vector_ushort * v); +int gsl_vector_ushort_fscanf (FILE * stream, gsl_vector_ushort * v); +int gsl_vector_ushort_fprintf (FILE * stream, const gsl_vector_ushort * v, + const char *format); + +int gsl_vector_ushort_memcpy (gsl_vector_ushort * dest, const gsl_vector_ushort * src); + +int gsl_vector_ushort_reverse (gsl_vector_ushort * v); + +int gsl_vector_ushort_swap (gsl_vector_ushort * v, gsl_vector_ushort * w); +int gsl_vector_ushort_swap_elements (gsl_vector_ushort * v, const size_t i, const size_t j); + +unsigned short gsl_vector_ushort_max (const gsl_vector_ushort * v); +unsigned short gsl_vector_ushort_min (const gsl_vector_ushort * v); +void gsl_vector_ushort_minmax (const gsl_vector_ushort * v, unsigned short * min_out, unsigned short * max_out); + +size_t gsl_vector_ushort_max_index (const gsl_vector_ushort * v); +size_t gsl_vector_ushort_min_index (const gsl_vector_ushort * v); +void gsl_vector_ushort_minmax_index (const gsl_vector_ushort * v, size_t * imin, size_t * imax); + +int gsl_vector_ushort_add (gsl_vector_ushort * a, const gsl_vector_ushort * b); +int gsl_vector_ushort_sub (gsl_vector_ushort * a, const gsl_vector_ushort * b); +int gsl_vector_ushort_mul (gsl_vector_ushort * a, const gsl_vector_ushort * b); +int gsl_vector_ushort_div (gsl_vector_ushort * a, const gsl_vector_ushort * b); +int gsl_vector_ushort_scale (gsl_vector_ushort * a, const double x); +int gsl_vector_ushort_add_constant (gsl_vector_ushort * a, const double x); + +int gsl_vector_ushort_equal (const gsl_vector_ushort * u, + const gsl_vector_ushort * v); + +int gsl_vector_ushort_isnull (const gsl_vector_ushort * v); +int gsl_vector_ushort_ispos (const gsl_vector_ushort * v); +int gsl_vector_ushort_isneg (const gsl_vector_ushort * v); +int gsl_vector_ushort_isnonneg (const gsl_vector_ushort * v); + +INLINE_DECL unsigned short gsl_vector_ushort_get (const gsl_vector_ushort * v, const size_t i); +INLINE_DECL void gsl_vector_ushort_set (gsl_vector_ushort * v, const size_t i, unsigned short x); +INLINE_DECL unsigned short * gsl_vector_ushort_ptr (gsl_vector_ushort * v, const size_t i); +INLINE_DECL const unsigned short * gsl_vector_ushort_const_ptr (const gsl_vector_ushort * v, const size_t i); + +#ifdef HAVE_INLINE + +INLINE_FUN +unsigned short +gsl_vector_ushort_get (const gsl_vector_ushort * v, const size_t i) +{ +#if GSL_RANGE_CHECK + if (GSL_RANGE_COND(i >= v->size)) + { + GSL_ERROR_VAL ("index out of range", GSL_EINVAL, 0); + } +#endif + return v->data[i * v->stride]; +} + +INLINE_FUN +void +gsl_vector_ushort_set (gsl_vector_ushort * v, const size_t i, unsigned short x) +{ +#if GSL_RANGE_CHECK + if (GSL_RANGE_COND(i >= v->size)) + { + GSL_ERROR_VOID ("index out of range", GSL_EINVAL); + } +#endif + v->data[i * v->stride] = x; +} + +INLINE_FUN +unsigned short * +gsl_vector_ushort_ptr (gsl_vector_ushort * v, const size_t i) +{ +#if GSL_RANGE_CHECK + if (GSL_RANGE_COND(i >= v->size)) + { + GSL_ERROR_NULL ("index out of range", GSL_EINVAL); + } +#endif + return (unsigned short *) (v->data + i * v->stride); +} + +INLINE_FUN +const unsigned short * +gsl_vector_ushort_const_ptr (const gsl_vector_ushort * v, const size_t i) +{ +#if GSL_RANGE_CHECK + if (GSL_RANGE_COND(i >= v->size)) + { + GSL_ERROR_NULL ("index out of range", GSL_EINVAL); + } +#endif + return (const unsigned short *) (v->data + i * v->stride); +} +#endif /* HAVE_INLINE */ + +__END_DECLS + +#endif /* __GSL_VECTOR_USHORT_H__ */ + + diff --git a/gsl-2.5/vector/init.c b/gsl-2.5/vector/init.c new file mode 100644 index 00000000..f99b1c26 --- /dev/null +++ b/gsl-2.5/vector/init.c @@ -0,0 +1,88 @@ +#include +#include +#include +#include + +#define BASE_GSL_COMPLEX_LONG +#include "templates_on.h" +#include "init_source.c" +#include "templates_off.h" +#undef BASE_GSL_COMPLEX_LONG + +#define BASE_GSL_COMPLEX +#include "templates_on.h" +#include "init_source.c" +#include "templates_off.h" +#undef BASE_GSL_COMPLEX + +#define BASE_GSL_COMPLEX_FLOAT +#include "templates_on.h" +#include "init_source.c" +#include "templates_off.h" +#undef BASE_GSL_COMPLEX_FLOAT + +#define BASE_LONG_DOUBLE +#include "templates_on.h" +#include "init_source.c" +#include "templates_off.h" +#undef BASE_LONG_DOUBLE + +#define BASE_DOUBLE +#include "templates_on.h" +#include "init_source.c" +#include "templates_off.h" +#undef BASE_DOUBLE + +#define BASE_FLOAT +#include "templates_on.h" +#include "init_source.c" +#include "templates_off.h" +#undef BASE_FLOAT + +#define BASE_ULONG +#include "templates_on.h" +#include "init_source.c" +#include "templates_off.h" +#undef BASE_ULONG + +#define BASE_LONG +#include "templates_on.h" +#include "init_source.c" +#include "templates_off.h" +#undef BASE_LONG + +#define BASE_UINT +#include "templates_on.h" +#include "init_source.c" +#include "templates_off.h" +#undef BASE_UINT + +#define BASE_INT +#include "templates_on.h" +#include "init_source.c" +#include "templates_off.h" +#undef BASE_INT + +#define BASE_USHORT +#include "templates_on.h" +#include "init_source.c" +#include "templates_off.h" +#undef BASE_USHORT + +#define BASE_SHORT +#include "templates_on.h" +#include "init_source.c" +#include "templates_off.h" +#undef BASE_SHORT + +#define BASE_UCHAR +#include "templates_on.h" +#include "init_source.c" +#include "templates_off.h" +#undef BASE_UCHAR + +#define BASE_CHAR +#include "templates_on.h" +#include "init_source.c" +#include "templates_off.h" +#undef BASE_CHAR diff --git a/gsl-2.5/vector/init.lo b/gsl-2.5/vector/init.lo new file mode 100644 index 00000000..c1ea778f --- /dev/null +++ b/gsl-2.5/vector/init.lo @@ -0,0 +1,12 @@ +# init.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/init.o' + +# Name of the non-PIC object +non_pic_object='init.o' + diff --git a/gsl-2.5/vector/init_source.c b/gsl-2.5/vector/init_source.c new file mode 100644 index 00000000..32283a1e --- /dev/null +++ b/gsl-2.5/vector/init_source.c @@ -0,0 +1,213 @@ +/* vector/init_source.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +TYPE (gsl_vector) * +FUNCTION (gsl_vector, alloc) (const size_t n) +{ + TYPE (gsl_block) * block; + TYPE (gsl_vector) * v; + + v = (TYPE (gsl_vector) *) malloc (sizeof (TYPE (gsl_vector))); + + if (v == 0) + { + GSL_ERROR_VAL ("failed to allocate space for vector struct", + GSL_ENOMEM, 0); + } + + block = FUNCTION (gsl_block,alloc) (n); + + if (block == 0) + { + free (v) ; + + GSL_ERROR_VAL ("failed to allocate space for block", + GSL_ENOMEM, 0); + } + + v->data = block->data ; + v->size = n; + v->stride = 1; + v->block = block; + v->owner = 1; + + return v; +} + +TYPE (gsl_vector) * +FUNCTION (gsl_vector, calloc) (const size_t n) +{ + size_t i; + + TYPE (gsl_vector) * v = FUNCTION (gsl_vector, alloc) (n); + + if (v == 0) + return 0; + + /* initialize vector to zero; memset takes care of the padding bytes */ + memset(v->data, 0, MULTIPLICITY * n * sizeof(ATOMIC)); + + for (i = 0; i < MULTIPLICITY * n; i++) + { + v->data[i] = 0; + } + + return v; +} + +TYPE (gsl_vector) * +FUNCTION (gsl_vector, alloc_from_block) (TYPE(gsl_block) * block, + const size_t offset, + const size_t n, + const size_t stride) +{ + TYPE (gsl_vector) * v; + + if (stride == 0) + { + GSL_ERROR_VAL ("stride must be positive integer", GSL_EINVAL, 0); + } + + if (block->size <= offset + (n > 0 ? n - 1 : 0) * stride) + { + GSL_ERROR_VAL ("vector would extend past end of block", GSL_EINVAL, 0); + } + + v = (TYPE (gsl_vector) *) malloc (sizeof (TYPE (gsl_vector))); + + if (v == 0) + { + GSL_ERROR_VAL ("failed to allocate space for vector struct", + GSL_ENOMEM, 0); + } + + v->data = block->data + MULTIPLICITY * offset ; + v->size = n; + v->stride = stride; + v->block = block; + v->owner = 0; + + return v; +} + +TYPE (gsl_vector) * +FUNCTION (gsl_vector, alloc_from_vector) (TYPE(gsl_vector) * w, + const size_t offset, + const size_t n, + const size_t stride) +{ + TYPE (gsl_vector) * v; + + if (stride == 0) + { + GSL_ERROR_VAL ("stride must be positive integer", GSL_EINVAL, 0); + } + + if (offset + (n > 0 ? n - 1 : 0) * stride >= w->size) + { + GSL_ERROR_VAL ("vector would extend past end of block", GSL_EINVAL, 0); + } + + v = (TYPE (gsl_vector) *) malloc (sizeof (TYPE (gsl_vector))); + + if (v == 0) + { + GSL_ERROR_VAL ("failed to allocate space for vector struct", + GSL_ENOMEM, 0); + } + + v->data = w->data + MULTIPLICITY * w->stride * offset ; + v->size = n; + v->stride = stride * w->stride; + v->block = w->block; + v->owner = 0; + + return v; +} + + +void +FUNCTION (gsl_vector, free) (TYPE (gsl_vector) * v) +{ + RETURN_IF_NULL (v); + + if (v->owner) + { + FUNCTION(gsl_block, free) (v->block) ; + } + free (v); +} + + +void +FUNCTION (gsl_vector, set_all) (TYPE (gsl_vector) * v, BASE x) +{ + ATOMIC * const data = v->data; + const size_t n = v->size; + const size_t stride = v->stride; + + size_t i; + + for (i = 0; i < n; i++) + { + *(BASE *) (data + MULTIPLICITY * i * stride) = x; + } +} + +void +FUNCTION (gsl_vector, set_zero) (TYPE (gsl_vector) * v) +{ + ATOMIC * const data = v->data; + const size_t n = v->size; + const size_t stride = v->stride; + const BASE zero = ZERO ; + + size_t i; + + for (i = 0; i < n; i++) + { + *(BASE *) (data + MULTIPLICITY * i * stride) = zero; + } +} + +int +FUNCTION (gsl_vector, set_basis) (TYPE (gsl_vector) * v, size_t i) +{ + ATOMIC * const data = v->data; + const size_t n = v->size; + const size_t stride = v->stride; + const BASE zero = ZERO ; + const BASE one = ONE; + + size_t k; + + if (i >= n) + { + GSL_ERROR ("index out of range", GSL_EINVAL); + } + + for (k = 0; k < n; k++) + { + *(BASE *) (data + MULTIPLICITY * k * stride) = zero; + } + + *(BASE *) (data + MULTIPLICITY * i * stride) = one; + + return GSL_SUCCESS; +} diff --git a/gsl-2.5/vector/libgslvector.la b/gsl-2.5/vector/libgslvector.la new file mode 100644 index 00000000..acc3a279 --- /dev/null +++ b/gsl-2.5/vector/libgslvector.la @@ -0,0 +1,41 @@ +# libgslvector.la - a libtool library file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='' + +# Names of this library. +library_names='' + +# The name of the static archive. +old_library='libgslvector.a' + +# Linker flags that can not go in dependency_libs. +inherited_linker_flags='' + +# Libraries that this one depends upon. +dependency_libs=' -lm' + +# Names of additional weak libraries provided by this library +weak_library_names='' + +# Version information for libgslvector. +current= +age= +revision= + +# Is this an already installed library? +installed=no + +# Should we warn about portability when linking against -modules? +shouldnotlink=no + +# Files to dlopen/dlpreopen +dlopen='' +dlpreopen='' + +# Directory that this library needs to be installed in: +libdir='' diff --git a/gsl-2.5/vector/minmax.c b/gsl-2.5/vector/minmax.c new file mode 100644 index 00000000..27ee8dba --- /dev/null +++ b/gsl-2.5/vector/minmax.c @@ -0,0 +1,72 @@ +#include +#include +#include +#include + +#define BASE_LONG_DOUBLE +#include "templates_on.h" +#include "minmax_source.c" +#include "templates_off.h" +#undef BASE_LONG_DOUBLE + +#define BASE_DOUBLE +#include "templates_on.h" +#include "minmax_source.c" +#include "templates_off.h" +#undef BASE_DOUBLE + +#define BASE_FLOAT +#include "templates_on.h" +#include "minmax_source.c" +#include "templates_off.h" +#undef BASE_FLOAT + +#define BASE_ULONG +#include "templates_on.h" +#include "minmax_source.c" +#include "templates_off.h" +#undef BASE_ULONG + +#define BASE_LONG +#include "templates_on.h" +#include "minmax_source.c" +#include "templates_off.h" +#undef BASE_LONG + +#define BASE_UINT +#include "templates_on.h" +#include "minmax_source.c" +#include "templates_off.h" +#undef BASE_UINT + +#define BASE_INT +#include "templates_on.h" +#include "minmax_source.c" +#include "templates_off.h" +#undef BASE_INT + +#define BASE_USHORT +#include "templates_on.h" +#include "minmax_source.c" +#include "templates_off.h" +#undef BASE_USHORT + +#define BASE_SHORT +#include "templates_on.h" +#include "minmax_source.c" +#include "templates_off.h" +#undef BASE_SHORT + +#define BASE_UCHAR +#include "templates_on.h" +#include "minmax_source.c" +#include "templates_off.h" +#undef BASE_UCHAR + +#define BASE_CHAR +#include "templates_on.h" +#include "minmax_source.c" +#include "templates_off.h" +#undef BASE_CHAR + + diff --git a/gsl-2.5/vector/minmax.lo b/gsl-2.5/vector/minmax.lo new file mode 100644 index 00000000..adb8d3f7 --- /dev/null +++ b/gsl-2.5/vector/minmax.lo @@ -0,0 +1,12 @@ +# minmax.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/minmax.o' + +# Name of the non-PIC object +non_pic_object='minmax.o' + diff --git a/gsl-2.5/vector/minmax_source.c b/gsl-2.5/vector/minmax_source.c new file mode 100644 index 00000000..a6ba45aa --- /dev/null +++ b/gsl-2.5/vector/minmax_source.c @@ -0,0 +1,217 @@ +/* vector/minmax_source.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +BASE +FUNCTION(gsl_vector,max) (const TYPE(gsl_vector) * v) +{ + /* finds the largest element of a vector */ + + const size_t N = v->size ; + const size_t stride = v->stride ; + + BASE max = v->data[0 * stride]; + size_t i; + + for (i = 0; i < N; i++) + { + BASE x = v->data[i*stride]; + if (x > max) + max = x; +#ifdef FP + if (isnan (x)) + return x; +#endif + } + + return max; +} + +BASE +FUNCTION(gsl_vector,min) (const TYPE(gsl_vector) * v) +{ + /* finds the smallest element of a vector */ + + const size_t N = v->size ; + const size_t stride = v->stride ; + + BASE min = v->data[0 * stride]; + size_t i; + + for (i = 0; i < N; i++) + { + BASE x = v->data[i*stride]; + if (x < min) + min = x; +#ifdef FP + if (isnan (x)) + return x; +#endif + } + + return min; +} + +void +FUNCTION(gsl_vector,minmax) (const TYPE(gsl_vector) * v, + BASE * min_out, + BASE * max_out) +{ + /* finds the smallest and largest elements of a vector */ + + const size_t N = v->size ; + const size_t stride = v->stride ; + + BASE max = v->data[0 * stride]; + BASE min = v->data[0 * stride]; + + size_t i; + + for (i = 0; i < N; i++) + { + BASE x = v->data[i*stride]; + if (x < min) + { + min = x; + } + if (x > max) + { + max = x; + } +#ifdef FP + if (isnan (x)) + { + min = x; + max = x; + break; + } +#endif + } + + *min_out = min; + *max_out = max; +} + + +size_t +FUNCTION(gsl_vector,max_index) (const TYPE(gsl_vector) * v) +{ + /* finds the largest element of a vector */ + + const size_t N = v->size ; + const size_t stride = v->stride ; + + BASE max = v->data[0 * stride]; + size_t imax = 0; + size_t i; + + for (i = 0; i < N; i++) + { + BASE x = v->data[i*stride]; + if (x > max) + { + max = x; + imax = i; + } +#ifdef FP + if (isnan (x)) + { + return i; + } +#endif + } + + return imax; +} + +size_t +FUNCTION(gsl_vector,min_index) (const TYPE(gsl_vector) * v) +{ + /* finds the smallest element of a vector */ + + const size_t N = v->size ; + const size_t stride = v->stride ; + + BASE min = v->data[0 * stride]; + size_t imin = 0; + size_t i; + + for (i = 0; i < N; i++) + { + BASE x = v->data[i*stride]; + if (x < min) + { + min = x; + imin = i; + } +#ifdef FP + if (isnan (x)) + { + return i; + } +#endif + } + + return imin; +} + + +void +FUNCTION(gsl_vector,minmax_index) (const TYPE(gsl_vector) * v, + size_t * imin_out, + size_t * imax_out) +{ + /* finds the smallest and largest elements of a vector */ + + const size_t N = v->size ; + const size_t stride = v->stride ; + + size_t imin = 0, imax = 0; + BASE max = v->data[0 * stride]; + BASE min = v->data[0 * stride]; + + size_t i; + + for (i = 0; i < N; i++) + { + BASE x = v->data[i*stride]; + if (x < min) + { + min = x; + imin = i; + } + if (x > max) + { + max = x; + imax = i; + } +#ifdef FP + if (isnan (x)) + { + imin = i; + imax = i; + break; + } +#endif + } + + *imin_out = imin; + *imax_out = imax; +} + + diff --git a/gsl-2.5/vector/oper.c b/gsl-2.5/vector/oper.c new file mode 100644 index 00000000..73665f61 --- /dev/null +++ b/gsl-2.5/vector/oper.c @@ -0,0 +1,91 @@ +#include +#include +#include +#include +#include + +#define BASE_GSL_COMPLEX_LONG +#include "templates_on.h" +#include "oper_complex_source.c" +#include "templates_off.h" +#undef BASE_GSL_COMPLEX_LONG + +#define BASE_GSL_COMPLEX +#include "templates_on.h" +#include "oper_complex_source.c" +#include "templates_off.h" +#undef BASE_GSL_COMPLEX + +#define BASE_GSL_COMPLEX_FLOAT +#include "templates_on.h" +#include "oper_complex_source.c" +#include "templates_off.h" +#undef BASE_GSL_COMPLEX_FLOAT + +#define BASE_LONG_DOUBLE +#include "templates_on.h" +#include "oper_source.c" +#include "templates_off.h" +#undef BASE_LONG_DOUBLE + +#define BASE_DOUBLE +#include "templates_on.h" +#include "oper_source.c" +#include "templates_off.h" +#undef BASE_DOUBLE + +#define BASE_FLOAT +#include "templates_on.h" +#include "oper_source.c" +#include "templates_off.h" +#undef BASE_FLOAT + +#define BASE_ULONG +#include "templates_on.h" +#include "oper_source.c" +#include "templates_off.h" +#undef BASE_ULONG + +#define BASE_LONG +#include "templates_on.h" +#include "oper_source.c" +#include "templates_off.h" +#undef BASE_LONG + +#define BASE_UINT +#include "templates_on.h" +#include "oper_source.c" +#include "templates_off.h" +#undef BASE_UINT + +#define BASE_INT +#include "templates_on.h" +#include "oper_source.c" +#include "templates_off.h" +#undef BASE_INT + +#define BASE_USHORT +#include "templates_on.h" +#include "oper_source.c" +#include "templates_off.h" +#undef BASE_USHORT + +#define BASE_SHORT +#include "templates_on.h" +#include "oper_source.c" +#include "templates_off.h" +#undef BASE_SHORT + +#define BASE_UCHAR +#include "templates_on.h" +#include "oper_source.c" +#include "templates_off.h" +#undef BASE_UCHAR + +#define BASE_CHAR +#include "templates_on.h" +#include "oper_source.c" +#include "templates_off.h" +#undef BASE_CHAR + + diff --git a/gsl-2.5/vector/oper.lo b/gsl-2.5/vector/oper.lo new file mode 100644 index 00000000..0bc91450 --- /dev/null +++ b/gsl-2.5/vector/oper.lo @@ -0,0 +1,12 @@ +# oper.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/oper.o' + +# Name of the non-PIC object +non_pic_object='oper.o' + diff --git a/gsl-2.5/vector/oper_complex_source.c b/gsl-2.5/vector/oper_complex_source.c new file mode 100644 index 00000000..aa9a5687 --- /dev/null +++ b/gsl-2.5/vector/oper_complex_source.c @@ -0,0 +1,182 @@ +/* vector/oper_source.c + * + * Copyright (C) 2008 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +int +FUNCTION(gsl_vector, add) (TYPE(gsl_vector) * a, const TYPE(gsl_vector) * b) +{ + const size_t N = a->size; + + if (b->size != N) + { + GSL_ERROR ("vectors must have same length", GSL_EBADLEN); + } + else + { + const size_t stride_a = a->stride; + const size_t stride_b = b->stride; + + size_t i; + + for (i = 0; i < N; i++) + { + a->data[2 * i * stride_a] += b->data[2 * i * stride_b]; + a->data[2 * i * stride_a + 1] += b->data[2 * i * stride_b + 1]; + } + + return GSL_SUCCESS; + } +} + +int +FUNCTION(gsl_vector, sub) (TYPE(gsl_vector) * a, const TYPE(gsl_vector) * b) +{ + const size_t N = a->size; + + if (b->size != N) + { + GSL_ERROR ("vectors must have same length", GSL_EBADLEN); + } + else + { + const size_t stride_a = a->stride; + const size_t stride_b = b->stride; + + size_t i; + + for (i = 0; i < N; i++) + { + a->data[2 * i * stride_a] -= b->data[2 * i * stride_b]; + a->data[2 * i * stride_a + 1] -= b->data[2 * i * stride_b + 1]; + } + + return GSL_SUCCESS; + } +} + +int +FUNCTION(gsl_vector, mul) (TYPE(gsl_vector) * a, const TYPE(gsl_vector) * b) +{ + const size_t N = a->size; + + if (b->size != N) + { + GSL_ERROR ("vectors must have same length", GSL_EBADLEN); + } + else + { + const size_t stride_a = a->stride; + const size_t stride_b = b->stride; + + size_t i; + + for (i = 0; i < N; i++) + { + ATOMIC ar = a->data[2 * i * stride_a]; + ATOMIC ai = a->data[2 * i * stride_a + 1]; + + ATOMIC br = b->data[2 * i * stride_b]; + ATOMIC bi = b->data[2 * i * stride_b + 1]; + + a->data[2 * i * stride_a] = ar * br - ai * bi; + a->data[2 * i * stride_a + 1] = ar * bi + ai * br; + } + + return GSL_SUCCESS; + } +} + +int +FUNCTION(gsl_vector, div) (TYPE(gsl_vector) * a, const TYPE(gsl_vector) * b) +{ + const size_t N = a->size; + + if (b->size != N) + { + GSL_ERROR ("vectors must have same length", GSL_EBADLEN); + } + else + { + const size_t stride_a = a->stride; + const size_t stride_b = b->stride; + + size_t i; + + for (i = 0; i < N; i++) + { + ATOMIC ar = a->data[2 * i * stride_a]; + ATOMIC ai = a->data[2 * i * stride_a + 1]; + + ATOMIC br = b->data[2 * i * stride_b]; + ATOMIC bi = b->data[2 * i * stride_b + 1]; + + ATOMIC s = 1.0 / hypot(br, bi); + + ATOMIC sbr = s * br; + ATOMIC sbi = s * bi; + + a->data[2 * i * stride_a] = (ar * sbr + ai * sbi) * s; + a->data[2 * i * stride_a + 1] = (ai * sbr - ar * sbi) * s; + } + + return GSL_SUCCESS; + } +} + +int +FUNCTION(gsl_vector, scale) (TYPE(gsl_vector) * a, const BASE x) +{ + const size_t N = a->size; + const size_t stride = a->stride; + + size_t i; + + ATOMIC xr = GSL_REAL(x); + ATOMIC xi = GSL_IMAG(x); + + for (i = 0; i < N; i++) + { + ATOMIC ar = a->data[2 * i * stride]; + ATOMIC ai = a->data[2 * i * stride + 1]; + + a->data[2 * i * stride] = ar * xr - ai * xi; + a->data[2 * i * stride + 1] = ar * xi + ai * xr; + } + + return GSL_SUCCESS; +} + +int +FUNCTION(gsl_vector, add_constant) (TYPE(gsl_vector) * a, const BASE x) +{ + const size_t N = a->size; + const size_t stride = a->stride; + + size_t i; + + ATOMIC xr = GSL_REAL(x); + ATOMIC xi = GSL_IMAG(x); + + for (i = 0; i < N; i++) + { + a->data[2 * i * stride] += xr; + a->data[2 * i * stride + 1] += xi; + } + + return GSL_SUCCESS; +} diff --git a/gsl-2.5/vector/oper_source.c b/gsl-2.5/vector/oper_source.c new file mode 100644 index 00000000..c08714f4 --- /dev/null +++ b/gsl-2.5/vector/oper_source.c @@ -0,0 +1,151 @@ +/* vector/oper_source.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +int +FUNCTION(gsl_vector, add) (TYPE(gsl_vector) * a, const TYPE(gsl_vector) * b) +{ + const size_t N = a->size; + + if (b->size != N) + { + GSL_ERROR ("vectors must have same length", GSL_EBADLEN); + } + else + { + const size_t stride_a = a->stride; + const size_t stride_b = b->stride; + + size_t i; + + for (i = 0; i < N; i++) + { + a->data[i * stride_a] += b->data[i * stride_b]; + } + + return GSL_SUCCESS; + } +} + +int +FUNCTION(gsl_vector, sub) (TYPE(gsl_vector) * a, const TYPE(gsl_vector) * b) +{ + const size_t N = a->size; + + if (b->size != N) + { + GSL_ERROR ("vectors must have same length", GSL_EBADLEN); + } + else + { + const size_t stride_a = a->stride; + const size_t stride_b = b->stride; + + size_t i; + + for (i = 0; i < N; i++) + { + a->data[i * stride_a] -= b->data[i * stride_b]; + } + + return GSL_SUCCESS; + } +} + +int +FUNCTION(gsl_vector, mul) (TYPE(gsl_vector) * a, const TYPE(gsl_vector) * b) +{ + const size_t N = a->size; + + if (b->size != N) + { + GSL_ERROR ("vectors must have same length", GSL_EBADLEN); + } + else + { + const size_t stride_a = a->stride; + const size_t stride_b = b->stride; + + size_t i; + + for (i = 0; i < N; i++) + { + a->data[i * stride_a] *= b->data[i * stride_b]; + } + + return GSL_SUCCESS; + } +} + +int +FUNCTION(gsl_vector, div) (TYPE(gsl_vector) * a, const TYPE(gsl_vector) * b) +{ + const size_t N = a->size; + + if (b->size != N) + { + GSL_ERROR ("vectors must have same length", GSL_EBADLEN); + } + else + { + const size_t stride_a = a->stride; + const size_t stride_b = b->stride; + + size_t i; + + for (i = 0; i < N; i++) + { + a->data[i * stride_a] /= b->data[i * stride_b]; + } + + return GSL_SUCCESS; + } +} + +int +FUNCTION(gsl_vector, scale) (TYPE(gsl_vector) * a, const double x) +{ + const size_t N = a->size; + const size_t stride = a->stride; + + size_t i; + + for (i = 0; i < N; i++) + { + a->data[i * stride] *= x; + } + + return GSL_SUCCESS; +} + +int +FUNCTION(gsl_vector, add_constant) (TYPE(gsl_vector) * a, const double x) +{ + const size_t N = a->size; + const size_t stride = a->stride; + + size_t i; + + for (i = 0; i < N; i++) + { + a->data[i * stride] += x; + } + + return GSL_SUCCESS; +} + diff --git a/gsl-2.5/vector/prop.c b/gsl-2.5/vector/prop.c new file mode 100644 index 00000000..eeb18d63 --- /dev/null +++ b/gsl-2.5/vector/prop.c @@ -0,0 +1,87 @@ +#include +#include +#include + +#define BASE_GSL_COMPLEX_LONG +#include "templates_on.h" +#include "prop_source.c" +#include "templates_off.h" +#undef BASE_GSL_COMPLEX_LONG + +#define BASE_GSL_COMPLEX +#include "templates_on.h" +#include "prop_source.c" +#include "templates_off.h" +#undef BASE_GSL_COMPLEX + +#define BASE_GSL_COMPLEX_FLOAT +#include "templates_on.h" +#include "prop_source.c" +#include "templates_off.h" +#undef BASE_GSL_COMPLEX_FLOAT + +#define BASE_LONG_DOUBLE +#include "templates_on.h" +#include "prop_source.c" +#include "templates_off.h" +#undef BASE_LONG_DOUBLE + +#define BASE_DOUBLE +#include "templates_on.h" +#include "prop_source.c" +#include "templates_off.h" +#undef BASE_DOUBLE + +#define BASE_FLOAT +#include "templates_on.h" +#include "prop_source.c" +#include "templates_off.h" +#undef BASE_FLOAT + +#define BASE_ULONG +#include "templates_on.h" +#include "prop_source.c" +#include "templates_off.h" +#undef BASE_ULONG + +#define BASE_LONG +#include "templates_on.h" +#include "prop_source.c" +#include "templates_off.h" +#undef BASE_LONG + +#define BASE_UINT +#include "templates_on.h" +#include "prop_source.c" +#include "templates_off.h" +#undef BASE_UINT + +#define BASE_INT +#include "templates_on.h" +#include "prop_source.c" +#include "templates_off.h" +#undef BASE_INT + +#define BASE_USHORT +#include "templates_on.h" +#include "prop_source.c" +#include "templates_off.h" +#undef BASE_USHORT + +#define BASE_SHORT +#include "templates_on.h" +#include "prop_source.c" +#include "templates_off.h" +#undef BASE_SHORT + +#define BASE_UCHAR +#include "templates_on.h" +#include "prop_source.c" +#include "templates_off.h" +#undef BASE_UCHAR + +#define BASE_CHAR +#include "templates_on.h" +#include "prop_source.c" +#include "templates_off.h" +#undef BASE_CHAR diff --git a/gsl-2.5/vector/prop.lo b/gsl-2.5/vector/prop.lo new file mode 100644 index 00000000..f76bd287 --- /dev/null +++ b/gsl-2.5/vector/prop.lo @@ -0,0 +1,12 @@ +# prop.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/prop.o' + +# Name of the non-PIC object +non_pic_object='prop.o' + diff --git a/gsl-2.5/vector/prop_source.c b/gsl-2.5/vector/prop_source.c new file mode 100644 index 00000000..5913e7e6 --- /dev/null +++ b/gsl-2.5/vector/prop_source.c @@ -0,0 +1,148 @@ +/* vector/prop_source.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007, 2010 Gerard Jungman, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + + +int +FUNCTION (gsl_vector, equal) (const TYPE (gsl_vector) * u, const TYPE (gsl_vector) * v) +{ + const size_t n = v->size; + const size_t stride_u = u->stride ; + const size_t stride_v = v->stride ; + + size_t j; + + if (u->size != v->size) + { + GSL_ERROR_VAL ("vectors must have same length", GSL_EBADLEN, 0); + } + + for (j = 0; j < n; j++) + { + size_t k; + + for (k = 0; k < MULTIPLICITY; k++) + { + if (u->data[MULTIPLICITY * stride_u * j + k] != v->data[MULTIPLICITY * stride_v * j + k]) + { + return 0; + } + } + } + + return 1; +} + + + +int +FUNCTION (gsl_vector, isnull) (const TYPE (gsl_vector) * v) +{ + const size_t n = v->size; + const size_t stride = v->stride ; + + size_t j; + + for (j = 0; j < n; j++) + { + size_t k; + + for (k = 0; k < MULTIPLICITY; k++) + { + if (v->data[MULTIPLICITY * stride * j + k] != 0.0) + { + return 0; + } + } + } + + return 1; +} + +int +FUNCTION (gsl_vector, ispos) (const TYPE (gsl_vector) * v) +{ + const size_t n = v->size; + const size_t stride = v->stride ; + + size_t j; + + for (j = 0; j < n; j++) + { + size_t k; + + for (k = 0; k < MULTIPLICITY; k++) + { + if (v->data[MULTIPLICITY * stride * j + k] <= 0.0) + { + return 0; + } + } + } + + return 1; +} + +int +FUNCTION (gsl_vector, isneg) (const TYPE (gsl_vector) * v) +{ + const size_t n = v->size; + const size_t stride = v->stride ; + + size_t j; + + for (j = 0; j < n; j++) + { + size_t k; + + for (k = 0; k < MULTIPLICITY; k++) + { + if (v->data[MULTIPLICITY * stride * j + k] >= 0.0) + { + return 0; + } + } + } + + return 1; +} + +int +FUNCTION (gsl_vector, isnonneg) (const TYPE (gsl_vector) * v) +{ + const size_t n = v->size; + const size_t stride = v->stride ; + + size_t j; + + for (j = 0; j < n; j++) + { + size_t k; + + for (k = 0; k < MULTIPLICITY; k++) + { + if (v->data[MULTIPLICITY * stride * j + k] < 0.0) + { + return 0; + } + } + } + + return 1; +} + diff --git a/gsl-2.5/vector/reim.c b/gsl-2.5/vector/reim.c new file mode 100644 index 00000000..9271a1a8 --- /dev/null +++ b/gsl-2.5/vector/reim.c @@ -0,0 +1,44 @@ +#include +#include +#include + +#include "view.h" + +#define BASE_GSL_COMPLEX_LONG +#include "templates_on.h" +#include "reim_source.c" +#include "templates_off.h" +#undef BASE_GSL_COMPLEX_LONG + +#define BASE_GSL_COMPLEX +#include "templates_on.h" +#include "reim_source.c" +#include "templates_off.h" +#undef BASE_GSL_COMPLEX + +#define BASE_GSL_COMPLEX_FLOAT +#include "templates_on.h" +#include "reim_source.c" +#include "templates_off.h" +#undef BASE_GSL_COMPLEX_FLOAT + +#define USE_QUALIFIER +#define QUALIFIER const + +#define BASE_GSL_COMPLEX_LONG +#include "templates_on.h" +#include "reim_source.c" +#include "templates_off.h" +#undef BASE_GSL_COMPLEX_LONG + +#define BASE_GSL_COMPLEX +#include "templates_on.h" +#include "reim_source.c" +#include "templates_off.h" +#undef BASE_GSL_COMPLEX + +#define BASE_GSL_COMPLEX_FLOAT +#include "templates_on.h" +#include "reim_source.c" +#include "templates_off.h" +#undef BASE_GSL_COMPLEX_FLOAT diff --git a/gsl-2.5/vector/reim.lo b/gsl-2.5/vector/reim.lo new file mode 100644 index 00000000..63d7160d --- /dev/null +++ b/gsl-2.5/vector/reim.lo @@ -0,0 +1,12 @@ +# reim.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/reim.o' + +# Name of the non-PIC object +non_pic_object='reim.o' + diff --git a/gsl-2.5/vector/reim_source.c b/gsl-2.5/vector/reim_source.c new file mode 100644 index 00000000..c413d5b4 --- /dev/null +++ b/gsl-2.5/vector/reim_source.c @@ -0,0 +1,56 @@ +/* vector/reim_source.c + * + * Copyright (C) 2001, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +QUALIFIED_REAL_VIEW(_gsl_vector, view) +FUNCTION(gsl_vector, real) (QUALIFIED_TYPE(gsl_vector) * v) +{ + REAL_TYPE(gsl_vector) s = NULL_VECTOR; + + s.data = v->data; + s.size = v->size; + s.stride = MULTIPLICITY * v->stride; + s.block = 0; /* FIXME: should be v->block, but cannot point to + block of different type */ + s.owner = 0; + + { + QUALIFIED_REAL_VIEW(_gsl_vector,view) view = NULL_VECTOR_VIEW; + view.vector = s; + return view; + } +} + +QUALIFIED_REAL_VIEW(_gsl_vector, view) +FUNCTION(gsl_vector, imag) (QUALIFIED_TYPE(gsl_vector) * v) +{ + REAL_TYPE(gsl_vector) s = NULL_VECTOR; + + s.data = v->data + 1; + s.size = v->size; + s.stride = MULTIPLICITY * v->stride; + s.block = 0; /* FIXME: cannot point to block of different type */ + s.owner = 0; + + { + QUALIFIED_REAL_VIEW(_gsl_vector,view) view = NULL_VECTOR_VIEW; + view.vector = s; + return view; + } +} + diff --git a/gsl-2.5/vector/subvector.c b/gsl-2.5/vector/subvector.c new file mode 100644 index 00000000..5f6b83e5 --- /dev/null +++ b/gsl-2.5/vector/subvector.c @@ -0,0 +1,176 @@ +#include +#include +#include + +#include "view.h" + +#define BASE_GSL_COMPLEX_LONG +#include "templates_on.h" +#include "subvector_source.c" +#include "templates_off.h" +#undef BASE_GSL_COMPLEX_LONG + +#define BASE_GSL_COMPLEX +#include "templates_on.h" +#include "subvector_source.c" +#include "templates_off.h" +#undef BASE_GSL_COMPLEX + +#define BASE_GSL_COMPLEX_FLOAT +#include "templates_on.h" +#include "subvector_source.c" +#include "templates_off.h" +#undef BASE_GSL_COMPLEX_FLOAT + +#define BASE_LONG_DOUBLE +#include "templates_on.h" +#include "subvector_source.c" +#include "templates_off.h" +#undef BASE_LONG_DOUBLE + +#define BASE_DOUBLE +#include "templates_on.h" +#include "subvector_source.c" +#include "templates_off.h" +#undef BASE_DOUBLE + +#define BASE_FLOAT +#include "templates_on.h" +#include "subvector_source.c" +#include "templates_off.h" +#undef BASE_FLOAT + +#define BASE_ULONG +#include "templates_on.h" +#include "subvector_source.c" +#include "templates_off.h" +#undef BASE_ULONG + +#define BASE_LONG +#include "templates_on.h" +#include "subvector_source.c" +#include "templates_off.h" +#undef BASE_LONG + +#define BASE_UINT +#include "templates_on.h" +#include "subvector_source.c" +#include "templates_off.h" +#undef BASE_UINT + +#define BASE_INT +#include "templates_on.h" +#include "subvector_source.c" +#include "templates_off.h" +#undef BASE_INT + +#define BASE_USHORT +#include "templates_on.h" +#include "subvector_source.c" +#include "templates_off.h" +#undef BASE_USHORT + +#define BASE_SHORT +#include "templates_on.h" +#include "subvector_source.c" +#include "templates_off.h" +#undef BASE_SHORT + +#define BASE_UCHAR +#include "templates_on.h" +#include "subvector_source.c" +#include "templates_off.h" +#undef BASE_UCHAR + +#define BASE_CHAR +#include "templates_on.h" +#include "subvector_source.c" +#include "templates_off.h" +#undef BASE_CHAR + +#define USE_QUALIFIER +#define QUALIFIER const + +#define BASE_GSL_COMPLEX_LONG +#include "templates_on.h" +#include "subvector_source.c" +#include "templates_off.h" +#undef BASE_GSL_COMPLEX_LONG + +#define BASE_GSL_COMPLEX +#include "templates_on.h" +#include "subvector_source.c" +#include "templates_off.h" +#undef BASE_GSL_COMPLEX + +#define BASE_GSL_COMPLEX_FLOAT +#include "templates_on.h" +#include "subvector_source.c" +#include "templates_off.h" +#undef BASE_GSL_COMPLEX_FLOAT + +#define BASE_LONG_DOUBLE +#include "templates_on.h" +#include "subvector_source.c" +#include "templates_off.h" +#undef BASE_LONG_DOUBLE + +#define BASE_DOUBLE +#include "templates_on.h" +#include "subvector_source.c" +#include "templates_off.h" +#undef BASE_DOUBLE + +#define BASE_FLOAT +#include "templates_on.h" +#include "subvector_source.c" +#include "templates_off.h" +#undef BASE_FLOAT + +#define BASE_ULONG +#include "templates_on.h" +#include "subvector_source.c" +#include "templates_off.h" +#undef BASE_ULONG + +#define BASE_LONG +#include "templates_on.h" +#include "subvector_source.c" +#include "templates_off.h" +#undef BASE_LONG + +#define BASE_UINT +#include "templates_on.h" +#include "subvector_source.c" +#include "templates_off.h" +#undef BASE_UINT + +#define BASE_INT +#include "templates_on.h" +#include "subvector_source.c" +#include "templates_off.h" +#undef BASE_INT + +#define BASE_USHORT +#include "templates_on.h" +#include "subvector_source.c" +#include "templates_off.h" +#undef BASE_USHORT + +#define BASE_SHORT +#include "templates_on.h" +#include "subvector_source.c" +#include "templates_off.h" +#undef BASE_SHORT + +#define BASE_UCHAR +#include "templates_on.h" +#include "subvector_source.c" +#include "templates_off.h" +#undef BASE_UCHAR + +#define BASE_CHAR +#include "templates_on.h" +#include "subvector_source.c" +#include "templates_off.h" +#undef BASE_CHAR diff --git a/gsl-2.5/vector/subvector.lo b/gsl-2.5/vector/subvector.lo new file mode 100644 index 00000000..598a9c82 --- /dev/null +++ b/gsl-2.5/vector/subvector.lo @@ -0,0 +1,12 @@ +# subvector.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/subvector.o' + +# Name of the non-PIC object +non_pic_object='subvector.o' + diff --git a/gsl-2.5/vector/subvector_source.c b/gsl-2.5/vector/subvector_source.c new file mode 100644 index 00000000..e15d3e71 --- /dev/null +++ b/gsl-2.5/vector/subvector_source.c @@ -0,0 +1,74 @@ +/* vector/subvector_source.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +QUALIFIED_VIEW(_gsl_vector, view) +FUNCTION(gsl_vector, subvector) (QUALIFIED_TYPE(gsl_vector) * v, size_t offset, size_t n) +{ + QUALIFIED_VIEW(_gsl_vector,view) view = NULL_VECTOR_VIEW; + + if (offset + (n > 0 ? n - 1 : 0) >= v->size) + { + GSL_ERROR_VAL ("view would extend past end of vector", + GSL_EINVAL, view); + } + + { + TYPE(gsl_vector) s = NULL_VECTOR; + + s.data = v->data + MULTIPLICITY * v->stride * offset ; + s.size = n; + s.stride = v->stride; + s.block = v->block; + s.owner = 0; + + view.vector = s; + return view; + } +} + +QUALIFIED_VIEW(_gsl_vector, view) +FUNCTION(gsl_vector, subvector_with_stride) (QUALIFIED_TYPE(gsl_vector) * v, size_t offset, size_t stride, size_t n) +{ + QUALIFIED_VIEW(_gsl_vector,view) view = NULL_VECTOR_VIEW; + + if (stride == 0) + { + GSL_ERROR_VAL ("stride must be positive integer", + GSL_EINVAL, view); + } + + if (offset + (n > 0 ? n - 1 : 0) * stride >= v->size) + { + GSL_ERROR_VAL ("view would extend past end of vector", + GSL_EINVAL, view); + } + + { + TYPE(gsl_vector) s = NULL_VECTOR; + + s.data = v->data + MULTIPLICITY * v->stride * offset ; + s.size = n; + s.stride = v->stride * stride; + s.block = v->block; + s.owner = 0; + + view.vector = s; + return view; + } +} diff --git a/gsl-2.5/vector/swap.c b/gsl-2.5/vector/swap.c new file mode 100644 index 00000000..226e9832 --- /dev/null +++ b/gsl-2.5/vector/swap.c @@ -0,0 +1,87 @@ +#include +#include +#include + +#define BASE_GSL_COMPLEX_LONG +#include "templates_on.h" +#include "swap_source.c" +#include "templates_off.h" +#undef BASE_GSL_COMPLEX_LONG + +#define BASE_GSL_COMPLEX +#include "templates_on.h" +#include "swap_source.c" +#include "templates_off.h" +#undef BASE_GSL_COMPLEX + +#define BASE_GSL_COMPLEX_FLOAT +#include "templates_on.h" +#include "swap_source.c" +#include "templates_off.h" +#undef BASE_GSL_COMPLEX_FLOAT + +#define BASE_LONG_DOUBLE +#include "templates_on.h" +#include "swap_source.c" +#include "templates_off.h" +#undef BASE_LONG_DOUBLE + +#define BASE_DOUBLE +#include "templates_on.h" +#include "swap_source.c" +#include "templates_off.h" +#undef BASE_DOUBLE + +#define BASE_FLOAT +#include "templates_on.h" +#include "swap_source.c" +#include "templates_off.h" +#undef BASE_FLOAT + +#define BASE_ULONG +#include "templates_on.h" +#include "swap_source.c" +#include "templates_off.h" +#undef BASE_ULONG + +#define BASE_LONG +#include "templates_on.h" +#include "swap_source.c" +#include "templates_off.h" +#undef BASE_LONG + +#define BASE_UINT +#include "templates_on.h" +#include "swap_source.c" +#include "templates_off.h" +#undef BASE_UINT + +#define BASE_INT +#include "templates_on.h" +#include "swap_source.c" +#include "templates_off.h" +#undef BASE_INT + +#define BASE_USHORT +#include "templates_on.h" +#include "swap_source.c" +#include "templates_off.h" +#undef BASE_USHORT + +#define BASE_SHORT +#include "templates_on.h" +#include "swap_source.c" +#include "templates_off.h" +#undef BASE_SHORT + +#define BASE_UCHAR +#include "templates_on.h" +#include "swap_source.c" +#include "templates_off.h" +#undef BASE_UCHAR + +#define BASE_CHAR +#include "templates_on.h" +#include "swap_source.c" +#include "templates_off.h" +#undef BASE_CHAR diff --git a/gsl-2.5/vector/swap.lo b/gsl-2.5/vector/swap.lo new file mode 100644 index 00000000..fd74e39c --- /dev/null +++ b/gsl-2.5/vector/swap.lo @@ -0,0 +1,12 @@ +# swap.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/swap.o' + +# Name of the non-PIC object +non_pic_object='swap.o' + diff --git a/gsl-2.5/vector/swap_source.c b/gsl-2.5/vector/swap_source.c new file mode 100644 index 00000000..92300d83 --- /dev/null +++ b/gsl-2.5/vector/swap_source.c @@ -0,0 +1,107 @@ +/* vector/swap_source.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +int +FUNCTION (gsl_vector, swap) (TYPE (gsl_vector) * v, TYPE (gsl_vector) * w) +{ + ATOMIC * d1 = v->data ; + ATOMIC * d2 = w->data ; + const size_t size = v->size ; + const size_t s1 = MULTIPLICITY * v->stride ; + const size_t s2 = MULTIPLICITY * w->stride ; + size_t i, k ; + + if (v->size != w->size) + { + GSL_ERROR("vector lengths must be equal", GSL_EINVAL); + } + + for (i = 0; i < size; i++) + { + for (k = 0; k < MULTIPLICITY; k++) + { + ATOMIC tmp = d1[i*s1 + k]; + d1[i*s1+k] = d2[i*s2 + k]; + d2[i*s2+k] = tmp; + } + } + + return GSL_SUCCESS; +} + +int +FUNCTION (gsl_vector, swap_elements) (TYPE (gsl_vector) * v, const size_t i, const size_t j) +{ + ATOMIC * data = v->data ; + const size_t size = v->size ; + const size_t stride = v->stride ; + + if (i >= size) + { + GSL_ERROR("first index is out of range", GSL_EINVAL); + } + + if (j >= size) + { + GSL_ERROR("second index is out of range", GSL_EINVAL); + } + + if (i != j) + { + const size_t s = MULTIPLICITY * stride ; + size_t k ; + + for (k = 0; k < MULTIPLICITY; k++) + { + ATOMIC tmp = data[j*s + k]; + data[j*s+k] = data[i*s + k]; + data[i*s+k] = tmp; + } + } + + return GSL_SUCCESS; +} + +int +FUNCTION (gsl_vector, reverse) (TYPE (gsl_vector) * v) +{ + ATOMIC * data = v->data ; + const size_t size = v->size ; + const size_t stride = v->stride ; + + const size_t s = MULTIPLICITY * stride ; + + size_t i ; + + for (i = 0 ; i < (size / 2) ; i++) + { + size_t j = size - i - 1 ; + size_t k; + + for (k = 0; k < MULTIPLICITY; k++) + { + ATOMIC tmp = data[j*s + k]; + data[j*s+k] = data[i*s + k]; + data[i*s+k] = tmp; + } + } + + return GSL_SUCCESS; +} + diff --git a/gsl-2.5/vector/test b/gsl-2.5/vector/test new file mode 100755 index 00000000..12d4b18e Binary files /dev/null and b/gsl-2.5/vector/test differ diff --git a/gsl-2.5/vector/test-suite.log b/gsl-2.5/vector/test-suite.log new file mode 100644 index 00000000..13944d53 --- /dev/null +++ b/gsl-2.5/vector/test-suite.log @@ -0,0 +1,14 @@ +==================================== + gsl 2.5: vector/test-suite.log +==================================== + +# TOTAL: 2 +# PASS: 2 +# SKIP: 0 +# XFAIL: 0 +# FAIL: 0 +# XPASS: 0 +# ERROR: 0 + +.. contents:: :depth: 2 + diff --git a/gsl-2.5/vector/test.c b/gsl-2.5/vector/test.c new file mode 100644 index 00000000..a5f5eee8 --- /dev/null +++ b/gsl-2.5/vector/test.c @@ -0,0 +1,282 @@ +/* vector/test.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include + +#if defined( _MSC_VER ) && defined( GSL_DLL ) +#undef inline +#define inline __forceinline +#endif + +#if (!GSL_RANGE_CHECK) && defined(HAVE_INLINE) +#undef GSL_RANGE_CHECK +#define GSL_RANGE_CHECK 1 +#endif + +#include +#include +#include +#include +#include +#include +#include +#include + +int status = 0; + +#ifndef DESC +#define DESC "" +#endif + +#define BASE_GSL_COMPLEX_LONG +#include "templates_on.h" +#include "test_complex_source.c" +#include "templates_off.h" +#undef BASE_GSL_COMPLEX_LONG + +#define BASE_GSL_COMPLEX +#include "templates_on.h" +#include "test_complex_source.c" +#include "templates_off.h" +#undef BASE_GSL_COMPLEX + +#define BASE_GSL_COMPLEX_FLOAT +#include "templates_on.h" +#include "test_complex_source.c" +#include "templates_off.h" +#undef BASE_GSL_COMPLEX_FLOAT + +#define BASE_LONG_DOUBLE +#include "templates_on.h" +#include "test_source.c" +#include "templates_off.h" +#undef BASE_LONG_DOUBLE + +#define BASE_DOUBLE +#include "templates_on.h" +#include "test_source.c" +#include "templates_off.h" +#undef BASE_DOUBLE + +#define BASE_FLOAT +#include "templates_on.h" +#include "test_source.c" +#include "templates_off.h" +#undef BASE_FLOAT + +#define BASE_ULONG +#include "templates_on.h" +#include "test_source.c" +#include "templates_off.h" +#undef BASE_ULONG + +#define BASE_LONG +#include "templates_on.h" +#include "test_source.c" +#include "templates_off.h" +#undef BASE_LONG + +#define BASE_UINT +#include "templates_on.h" +#include "test_source.c" +#include "templates_off.h" +#undef BASE_UINT + +#define BASE_INT +#include "templates_on.h" +#include "test_source.c" +#include "templates_off.h" +#undef BASE_INT + +#define BASE_USHORT +#include "templates_on.h" +#include "test_source.c" +#include "templates_off.h" +#undef BASE_USHORT + +#define BASE_SHORT +#include "templates_on.h" +#include "test_source.c" +#include "templates_off.h" +#undef BASE_SHORT + +#define BASE_UCHAR +#include "templates_on.h" +#include "test_source.c" +#include "templates_off.h" +#undef BASE_UCHAR + +#define BASE_CHAR +#include "templates_on.h" +#include "test_source.c" +#include "templates_off.h" +#undef BASE_CHAR + +void my_error_handler (const char *reason, const char *file, + int line, int err); + +int +main (void) +{ + size_t stride, ostride, N; + + gsl_ieee_env_setup (); + + for (N = 10; N < 1024; N = 2*N + 1) + { + for (stride = 1; stride < 5 ; stride++) + { + test_func (stride, N); + test_float_func (stride, N); + test_long_double_func (stride, N); + test_ulong_func (stride, N); + test_long_func (stride, N); + test_uint_func (stride, N); + test_int_func (stride, N); + test_ushort_func (stride, N); + test_short_func (stride, N); + test_uchar_func (stride, N); + test_char_func (stride, N); + + test_complex_func (stride, N); + test_complex_float_func (stride, N); + test_complex_long_double_func (stride, N); + + for (ostride = 1; ostride < 5 ; ostride++) + { + test_ops (stride, ostride, N); + test_float_ops (stride, ostride, N); + test_long_double_ops (stride, ostride, N); + test_ulong_ops (stride, ostride, N); + test_long_ops (stride, ostride, N); + test_uint_ops (stride, ostride, N); + test_int_ops (stride, ostride, N); + test_ushort_ops (stride, ostride, N); + test_short_ops (stride, ostride, N); + test_uchar_ops (stride, ostride, N); + test_char_ops (stride, ostride, N); + test_complex_ops (stride, ostride, N); + test_complex_float_ops (stride, ostride, N); + test_complex_long_double_ops (stride, ostride, N); + } + + test_text (stride, N); + test_float_text (stride, N); +#if HAVE_PRINTF_LONGDOUBLE + test_long_double_text (stride, N); +#endif + test_ulong_text (stride, N); + test_long_text (stride, N); + test_uint_text (stride, N); + test_int_text (stride, N); + test_ushort_text (stride, N); + test_short_text (stride, N); + test_uchar_text (stride, N); + test_char_text (stride, N); + + test_complex_text (stride, N); + test_complex_float_text (stride, N); +#if HAVE_PRINTF_LONGDOUBLE + test_complex_long_double_text (stride, N); +#endif + + test_file (stride, N); + test_float_file (stride, N); + test_long_double_file (stride, N); + test_ulong_file (stride, N); + test_long_file (stride, N); + test_uint_file (stride, N); + test_int_file (stride, N); + test_ushort_file (stride, N); + test_short_file (stride, N); + test_uchar_file (stride, N); + test_char_file (stride, N); + test_complex_file (stride, N); + test_complex_float_file (stride, N); + test_complex_long_double_file (stride, N); + } + } + + test_alloc_zero_length (); + test_float_alloc_zero_length (); + test_long_double_alloc_zero_length (); + test_ulong_alloc_zero_length (); + test_long_alloc_zero_length (); + test_uint_alloc_zero_length (); + test_int_alloc_zero_length (); + test_ushort_alloc_zero_length (); + test_short_alloc_zero_length (); + test_uchar_alloc_zero_length (); + test_char_alloc_zero_length (); + + test_complex_alloc_zero_length (); + test_complex_float_alloc_zero_length (); + test_complex_long_double_alloc_zero_length (); + + test_calloc_zero_length (); + test_float_calloc_zero_length (); + test_long_double_calloc_zero_length (); + test_ulong_calloc_zero_length (); + test_long_calloc_zero_length (); + test_uint_calloc_zero_length (); + test_int_calloc_zero_length (); + test_ushort_calloc_zero_length (); + test_short_calloc_zero_length (); + test_uchar_calloc_zero_length (); + test_char_calloc_zero_length (); + + test_complex_calloc_zero_length (); + test_complex_float_calloc_zero_length (); + test_complex_long_double_calloc_zero_length (); + +#if GSL_RANGE_CHECK + gsl_set_error_handler (&my_error_handler); + + for (N = 1; N < 1024; N *=2) + { + for (stride = 1; stride < 5 ; stride++) + { + test_trap (stride, N); + test_float_trap (stride, N); + test_long_double_trap (stride, N); + test_ulong_trap (stride, N); + test_long_trap (stride, N); + test_uint_trap (stride, N); + test_int_trap (stride, N); + test_ushort_trap (stride, N); + test_short_trap (stride, N); + test_uchar_trap (stride, N); + test_char_trap (stride, N); + test_complex_trap (stride, N); + test_complex_float_trap (stride, N); + test_complex_long_double_trap (stride, N); + } + } +#endif + + exit (gsl_test_summary ()); +} + +void +my_error_handler (const char *reason, const char *file, int line, int err) +{ + if (0) + printf ("(caught [%s:%d: %s (%d)])\n", file, line, reason, err); + status = 1; +} diff --git a/gsl-2.5/vector/test.dat b/gsl-2.5/vector/test.dat new file mode 100644 index 00000000..d0551e9d Binary files /dev/null and b/gsl-2.5/vector/test.dat differ diff --git a/gsl-2.5/vector/test.log b/gsl-2.5/vector/test.log new file mode 100644 index 00000000..2196f62f --- /dev/null +++ b/gsl-2.5/vector/test.log @@ -0,0 +1 @@ +Completed [33799/33799] diff --git a/gsl-2.5/vector/test.trs b/gsl-2.5/vector/test.trs new file mode 100644 index 00000000..3f0f396c --- /dev/null +++ b/gsl-2.5/vector/test.trs @@ -0,0 +1,4 @@ +:test-result: PASS +:global-test-result: PASS +:recheck: no +:copy-in-global-log: no diff --git a/gsl-2.5/vector/test_complex_source.c b/gsl-2.5/vector/test_complex_source.c new file mode 100644 index 00000000..d78efe8a --- /dev/null +++ b/gsl-2.5/vector/test_complex_source.c @@ -0,0 +1,815 @@ +/* vector/test_complex_source.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007, 2010 Gerard Jungman, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +void FUNCTION (test, func) (size_t stride, size_t N); +void FUNCTION (test, ops) (size_t stride1, size_t stride2, size_t N); +void FUNCTION (test, file) (size_t stride, size_t N); +void FUNCTION (test, text) (size_t stride, size_t N); +void FUNCTION (test, trap) (size_t stride, size_t N); +TYPE (gsl_vector) * FUNCTION(create, vector) (size_t stride, size_t N); + +#define TEST(expr,desc) gsl_test((expr), NAME(gsl_vector) desc " stride=%d, N=%d", stride, N) +#define TEST2(expr,desc) gsl_test((expr), NAME(gsl_vector) desc " stride1=%d, stride2=%d, N=%d", stride1, stride2, N) + +TYPE (gsl_vector) * +FUNCTION(create, vector) (size_t stride, size_t N) +{ + TYPE (gsl_vector) * v = FUNCTION (gsl_vector, calloc) (N*stride); + v->stride = stride; + v->size = N; + return v; +} + +void +FUNCTION (test, func) (size_t stride, size_t N) +{ + TYPE (gsl_vector) * v0; + TYPE (gsl_vector) * v; + QUALIFIED_VIEW(gsl_vector,view) view; + + size_t i, j; + + if (stride == 1) + { + v = FUNCTION (gsl_vector, calloc) (N); + + TEST(v->data == 0, "_calloc pointer"); + TEST(v->size != N, "_calloc size"); + TEST(v->stride != 1, "_calloc stride"); + + { + int status = (FUNCTION(gsl_vector,isnull)(v) != 1); + TEST (status, "_isnull" DESC " on calloc vector"); + + status = (FUNCTION(gsl_vector,ispos)(v) != 0); + TEST (status, "_ispos" DESC " on calloc vector"); + + status = (FUNCTION(gsl_vector,isneg)(v) != 0); + TEST (status, "_isneg" DESC " on calloc vector"); + } + + FUNCTION (gsl_vector, free) (v); /* free whatever is in v */ + } + + if (stride == 1) + { + v = FUNCTION (gsl_vector, alloc) (N); + + TEST(v->data == 0, "_alloc pointer"); + TEST(v->size != N, "_alloc size"); + TEST(v->stride != 1, "_alloc stride"); + + FUNCTION (gsl_vector, free) (v); /* free whatever is in v */ + } + + if (stride == 1) + { + v0 = FUNCTION (gsl_vector, alloc) (N); + view = FUNCTION (gsl_vector, subvector) (v0, 0, N); + v = &view.vector; + } + else + { + v0 = FUNCTION (gsl_vector, alloc) (N * stride); + + for (i = 0; i < N*stride; i++) + { + BASE x = ZERO; + GSL_REAL (x) = (ATOMIC)i; + GSL_IMAG (x) = (ATOMIC)(i + 1234); + FUNCTION (gsl_vector, set) (v0, i, x); + } + + view = FUNCTION (gsl_vector, subvector_with_stride) (v0, 0, stride, N); + v = &view.vector; + } + + { + int status = 0; + + for (i = 0; i < N; i++) + { + BASE x = ZERO; + GSL_REAL (x) = (ATOMIC)i; + GSL_IMAG (x) = (ATOMIC)(i + 1234); + FUNCTION (gsl_vector, set) (v, i, x); + } + + for (i = 0; i < N; i++) + { + if (v->data[2*i*stride] != (ATOMIC) (i) || v->data[2 * i * stride + 1] != (ATOMIC) (i + 1234)) + status = 1; + }; + + TEST(status,"_set" DESC " writes into array"); + } + + + { + int status = 0; + + for (i = 0; i < N; i++) + { + BASE x, y; + GSL_REAL (x) = (ATOMIC)i; + GSL_IMAG (x) = (ATOMIC)(i + 1234); + y = FUNCTION (gsl_vector, get) (v, i); + if (!GSL_COMPLEX_EQ (x, y)) + status = 1; + }; + + TEST (status, "_get" DESC " reads from array"); + } + + { + int status = 0; + + for (i = 0; i < N; i++) + { + if (FUNCTION (gsl_vector, ptr) (v, i) != (BASE *)v->data + i*stride) + status = 1; + }; + + TEST (status, "_ptr" DESC " access to array"); + } + + + { + int status = 0; + + for (i = 0; i < N; i++) + { + if (FUNCTION (gsl_vector, const_ptr) (v, i) != (BASE *)v->data + i*stride) + status = 1; + }; + + TEST (status, "_const_ptr" DESC " access to array"); + } + + { + int status = 0; + + for (i = 0; i < N; i++) + { + BASE x = ZERO; + FUNCTION (gsl_vector, set) (v, i, x); + } + + status = (FUNCTION(gsl_vector,isnull)(v) != 1); + TEST (status, "_isnull" DESC " on null vector") ; + + status = (FUNCTION(gsl_vector,ispos)(v) != 0); + TEST (status, "_ispos" DESC " on null vector") ; + + status = (FUNCTION(gsl_vector,isneg)(v) != 0); + TEST (status, "_isneg" DESC " on null vector") ; + } + + { + int status = 0; + + for (i = 0; i < N; i++) + { + BASE x = ZERO; + GSL_REAL (x) = (ATOMIC)i; + GSL_IMAG (x) = (ATOMIC)(i + 1234); + FUNCTION (gsl_vector, set) (v, i, x); + } + + status = (FUNCTION(gsl_vector,isnull)(v) != 0); + TEST (status, "_isnull" DESC " on non-null vector") ; + + status = (FUNCTION(gsl_vector,ispos)(v) != 0); + TEST (status, "_ispos" DESC " on non-null vector") ; + + status = (FUNCTION(gsl_vector,ispos)(v) != 0); + TEST (status, "_isneg" DESC " on non-null vector") ; + } + + { + int status = 0; + + FUNCTION (gsl_vector, set_zero) (v); + + for (i = 0; i < N; i++) + { + BASE x, y = ZERO; + x = FUNCTION (gsl_vector, get) (v, i); + if (!GSL_COMPLEX_EQ (x, y)) + status = 1; + }; + + TEST (status, "_setzero" DESC " on non-null vector") ; + } + + { + int status = 0; + + BASE x; + GSL_REAL (x) = (ATOMIC)27; + GSL_IMAG (x) = (ATOMIC)(27 + 1234); + + FUNCTION (gsl_vector, set_all) (v, x); + + for (i = 0; i < N; i++) + { + BASE y = FUNCTION (gsl_vector, get) (v, i); + if (!GSL_COMPLEX_EQ (x, y)) + status = 1; + }; + + TEST (status, "_setall" DESC " to non-zero value") ; + } + + + { + int status = 0; + + for (i = 0; i < N; i++) + { + FUNCTION (gsl_vector, set_basis) (v, i); + + for (j = 0; j < N; j++) + { + BASE x = FUNCTION (gsl_vector, get) (v, j); + BASE one = ONE; + BASE zero = ZERO; + + if (i == j) + { + if (!GSL_COMPLEX_EQ (x, one)) + status = 1 ; + } + else + { + if (!GSL_COMPLEX_EQ (x, zero)) + status = 1; + } + }; + } + + TEST (status, "_setbasis" DESC " over range") ; + } + + { + int status = 0; + + for (i = 0; i < N; i++) + { + BASE x = ZERO; + GSL_REAL (x) = (ATOMIC)i; + GSL_IMAG (x) = (ATOMIC)(i + 1234); + FUNCTION (gsl_vector, set) (v, i, x); + } + + { + BASE x = ZERO; + GSL_REAL(x) = 2.0; + GSL_IMAG(x) = 3.0; + FUNCTION (gsl_vector, scale) (v, x); + } + + for (i = 0; i < N; i++) + { + BASE r = FUNCTION(gsl_vector,get) (v,i); + ATOMIC real = -(ATOMIC)i-(ATOMIC)3702; + ATOMIC imag = 5*(ATOMIC)i+(ATOMIC)2468; + if (GSL_REAL(r) != real || GSL_IMAG(r) != imag) + status = 1; + }; + + TEST (status, "_scale" DESC " by 2") ; + } + + { + int status = 0; + + { + BASE x = ZERO; + GSL_REAL(x) = 7.0; + GSL_IMAG(x) = 13.0; + FUNCTION (gsl_vector, add_constant) (v, x); + } + + + for (i = 0; i < N; i++) + { + BASE r = FUNCTION(gsl_vector,get) (v,i); + ATOMIC real = -(ATOMIC)i-(ATOMIC)3695; + ATOMIC imag = 5*(ATOMIC)i+(ATOMIC)2481; + + if (GSL_REAL(r) != real || GSL_IMAG(r) != imag) + status = 1; + }; + + TEST (status, "_add_constant" DESC) ; + } + + for (i = 0; i < N; i++) + { + BASE x = ZERO; + GSL_REAL (x) = (ATOMIC)i; + GSL_IMAG (x) = (ATOMIC)(i + 1234); + FUNCTION (gsl_vector, set) (v, i, x); + } + + { + int status; + BASE x, y, r, s ; + GSL_REAL(x) = 2 ; + GSL_IMAG(x) = 2 + 1234; + GSL_REAL(y) = 5 ; + GSL_IMAG(y) = 5 + 1234; + + FUNCTION (gsl_vector,swap_elements) (v, 2, 5) ; + + r = FUNCTION(gsl_vector,get)(v,2); + s = FUNCTION(gsl_vector,get)(v,5); + + status = ! GSL_COMPLEX_EQ(r,y) ; + status |= ! GSL_COMPLEX_EQ(s,x) ; + + FUNCTION (gsl_vector,swap_elements) (v, 2, 5) ; + + r = FUNCTION(gsl_vector,get)(v,2); + s = FUNCTION(gsl_vector,get)(v,5); + + status |= ! GSL_COMPLEX_EQ(r,x) ; + status |= ! GSL_COMPLEX_EQ(s,y) ; + + TEST (status, "_swap_elements" DESC " exchanges elements") ; + } + + { + int status = 0; + + FUNCTION (gsl_vector,reverse) (v) ; + + for (i = 0; i < N; i++) + { + BASE x,r ; + GSL_REAL(x) = (ATOMIC)(N - i - 1) ; + GSL_IMAG(x) = (ATOMIC)(N - i - 1 + 1234); + + r = FUNCTION (gsl_vector, get) (v, i); + + status |= !GSL_COMPLEX_EQ(r,x); + } + + gsl_test (status, NAME(gsl_vector) "_reverse" DESC " reverses elements") ; + } + + { + int status = 0; + + QUALIFIED_VIEW(gsl_vector,view) v1 = FUNCTION(gsl_vector, view_array) (v->data, N*stride); + + for (i = 0; i < N; i++) + { + BASE x = FUNCTION (gsl_vector, get) (&v1.vector, i*stride) ; + BASE y = FUNCTION (gsl_vector, get) (v, i); + if (!GSL_COMPLEX_EQ(x,y)) + status = 1; + }; + + TEST (status, "_view_array" DESC); + } + + { + int status = 0; + + QUALIFIED_VIEW(gsl_vector,view) v1 = FUNCTION(gsl_vector, view_array_with_stride) (v->data, stride, N*stride); + + for (i = 0; i < N; i++) + { + BASE x = FUNCTION (gsl_vector, get) (&v1.vector, i) ; + BASE y = FUNCTION (gsl_vector, get) (v, i); + if (!GSL_COMPLEX_EQ(x,y)) + status = 1; + }; + + TEST (status, "_view_array_with_stride" DESC); + } + + + { + int status = 0; + + QUALIFIED_VIEW(gsl_vector,view) v1 = FUNCTION(gsl_vector, subvector) (v, N/3, N/2); + + for (i = 0; i < N/2; i++) + { + BASE x = FUNCTION (gsl_vector, get) (&v1.vector, i) ; + BASE y = FUNCTION (gsl_vector, get) (v, (N/3)+i); + if (!GSL_COMPLEX_EQ(x,y)) + status = 1; + }; + + TEST (status, "_view_subvector" DESC); + } + + { + int status = 0; + + QUALIFIED_VIEW(gsl_vector,view) v1 = FUNCTION(gsl_vector, subvector_with_stride) (v, N/5, 3, N/4); + + for (i = 0; i < N/4; i++) + { + BASE x = FUNCTION (gsl_vector, get) (&v1.vector, i) ; + BASE y = FUNCTION (gsl_vector, get) (v, (N/5)+3*i); + if (!GSL_COMPLEX_EQ(x,y)) + status = 1; + }; + + TEST (status, "_view_subvector_with_stride" DESC); + } + + + { + int status = 0; + + QUALIFIED_REAL_VIEW(gsl_vector,view) vv = FUNCTION(gsl_vector, real) (v); + + for (i = 0; i < N; i++) + { + ATOMIC xr = REAL_VIEW (gsl_vector, get) (&vv.vector, i) ; + BASE y = FUNCTION (gsl_vector, get) (v, i); + ATOMIC yr = GSL_REAL(y); + + if (xr != yr) + status = 1; + }; + + TEST (status, "_real" DESC); + } + + { + int status = 0; + + QUALIFIED_REAL_VIEW(gsl_vector,view) vv = FUNCTION(gsl_vector, imag) (v); + + for (i = 0; i < N; i++) + { + ATOMIC xr = REAL_VIEW (gsl_vector, get) (&vv.vector, i) ; + BASE y = FUNCTION (gsl_vector, get) (v, i); + ATOMIC yr = GSL_IMAG(y); + + if (xr != yr) + status = 1; + }; + + TEST (status, "_imag" DESC); + } + + + FUNCTION (gsl_vector, free) (v0); /* free whatever is in v */ +} + +void +FUNCTION (test, ops) (size_t stride1, size_t stride2, size_t N) +{ + size_t i; + TYPE (gsl_vector) * a = FUNCTION (create, vector) (stride1, N); + TYPE (gsl_vector) * b = FUNCTION (create, vector) (stride2, N); + TYPE (gsl_vector) * v = FUNCTION (create, vector) (stride1, N); + + for (i = 0; i < N; i++) + { + BASE z, z1; + GSL_REAL (z) = (ATOMIC) 3+i; + GSL_IMAG (z) = (ATOMIC) (3+i + 10); + GSL_REAL (z1) = (ATOMIC) (3 + 2*i + 5); + GSL_IMAG (z1) = (ATOMIC) (3 + 2*i + 20); + + FUNCTION (gsl_vector, set) (a, i, z); + FUNCTION (gsl_vector, set) (b, i, z1); + } + + { + int status = (FUNCTION(gsl_vector,equal) (a,b) != 0); + TEST2 (status, "_equal vectors unequal"); + } + + FUNCTION(gsl_vector, memcpy) (v, a); + + { + int status = (FUNCTION(gsl_vector,equal) (a,v) != 1); + TEST2 (status, "_equal vectors equal"); + } + + FUNCTION(gsl_vector, add) (v, b); + + { + int status = 0; + + for (i = 0; i < N; i++) + { + BASE r = FUNCTION(gsl_vector,get) (v,i); + if (GSL_REAL(r) != (ATOMIC) (3*i+11) + || GSL_IMAG(r) != (ATOMIC) (3*i+36)) + status = 1; + } + TEST2 (status, "_add vector addition"); + } + + { + int status = 0; + + FUNCTION(gsl_vector, swap) (a, b); + + for (i = 0; i < N; i++) + { + BASE z, z1; + + BASE x = FUNCTION (gsl_vector, get) (a, i); + BASE y = FUNCTION (gsl_vector, get) (b, i); + + GSL_REAL (z) = (ATOMIC) 3+i; + GSL_IMAG (z) = (ATOMIC) (3+i + 10); + GSL_REAL (z1) = (ATOMIC) (3 + 2*i + 5); + GSL_IMAG (z1) = (ATOMIC) (3 + 2*i + 20); + + status |= !GSL_COMPLEX_EQ(z,y); + status |= !GSL_COMPLEX_EQ(z1,x); + } + + FUNCTION(gsl_vector, swap) (a, b); + + for (i = 0; i < N; i++) + { + BASE z, z1; + + BASE x = FUNCTION (gsl_vector, get) (a, i); + BASE y = FUNCTION (gsl_vector, get) (b, i); + + GSL_REAL (z) = (ATOMIC) 3+i; + GSL_IMAG (z) = (ATOMIC) (3+i + 10); + GSL_REAL (z1) = (ATOMIC) (3 + 2*i + 5); + GSL_IMAG (z1) = (ATOMIC) (3 + 2*i + 20); + + status |= !GSL_COMPLEX_EQ(z,x); + status |= !GSL_COMPLEX_EQ(z1,y); + } + + TEST2 (status, "_swap exchange vectors"); + } + + FUNCTION(gsl_vector, memcpy) (v, a); + FUNCTION(gsl_vector, sub) (v, b); + + { + int status = 0; + + for (i = 0; i < N; i++) + { + BASE r = FUNCTION(gsl_vector,get) (v,i); + if (GSL_REAL(r) != (-(ATOMIC)i-(ATOMIC)5) || GSL_IMAG(r) != (-(ATOMIC)i-(ATOMIC)10)) + status = 1; + } + + TEST2 (status, "_sub vector subtraction"); + } + + FUNCTION(gsl_vector, memcpy) (v, a); + FUNCTION(gsl_vector, mul) (v, b); + + { + int status = 0; + + for (i = 0; i < N; i++) + { + BASE r = FUNCTION(gsl_vector,get) (v,i); + ATOMIC real = (-35*(ATOMIC)i-275); + ATOMIC imag = (173+((ATOMIC)i)*(63+4*(ATOMIC)i)); + if (fabs(GSL_REAL(r) - real) > 100 * BASE_EPSILON || + fabs(GSL_IMAG(r) - imag) > 100 * BASE_EPSILON) + status = 1; + } + + TEST2 (status, "_mul multiplication"); + } + + FUNCTION(gsl_vector, memcpy) (v, a); + FUNCTION(gsl_vector, div) (v, b); + + { + int status = 0; + + for (i = 0; i < N; i++) + { + BASE r = FUNCTION(gsl_vector,get) (v,i); + ATOMIC denom = 593 + ((ATOMIC)i)*(124+((ATOMIC)i)*8); + ATOMIC real = (323+((ATOMIC)i)*(63+4*((ATOMIC)i))) / denom; + ATOMIC imag = (35 +((ATOMIC)i)*5) / denom; + if (fabs(GSL_REAL(r) - real) > 100 * BASE_EPSILON) + status = 1; + if (fabs(GSL_IMAG(r) - imag) > 100 * BASE_EPSILON) + status = 1; + } + TEST2 (status, "_div division"); + } + + FUNCTION(gsl_vector, free) (a); + FUNCTION(gsl_vector, free) (b); + FUNCTION(gsl_vector, free) (v); +} + +void +FUNCTION (test, file) (size_t stride, size_t N) +{ + TYPE (gsl_vector) * v = FUNCTION (create, vector) (stride, N); + TYPE (gsl_vector) * w = FUNCTION (create, vector) (stride, N); + size_t i; + +#ifdef NO_INLINE + char filename[] = "test_static.dat"; +#else + char filename[] = "test.dat"; +#endif + + { + /* write file */ + FILE *f = fopen(filename, "wb"); + + for (i = 0; i < N; i++) + { + BASE x = ZERO; + GSL_REAL (x) = (ATOMIC)(N - i); + GSL_IMAG (x) = (ATOMIC)(N - i + 1); + FUNCTION (gsl_vector, set) (v, i, x); + }; + + FUNCTION (gsl_vector, fwrite) (f, v); + + fclose(f); + } + + { + /* read file */ + FILE *f = fopen(filename, "rb"); + + FUNCTION (gsl_vector, fread) (f, w); + + status = 0; + for (i = 0; i < N; i++) + { + if (w->data[2 * i * stride] != (ATOMIC) (N - i) || w->data[2 * i * stride + 1] != (ATOMIC) (N - i + 1)) + status = 1; + }; + + gsl_test (status, NAME (gsl_vector) "_write and read work"); + + fclose (f); + } + + FUNCTION (gsl_vector, free) (v); + FUNCTION (gsl_vector, free) (w); +} + +#if USES_LONGDOUBLE && ! HAVE_PRINTF_LONGDOUBLE +/* skip this test */ +#else +void +FUNCTION (test, text) (size_t stride, size_t N) +{ + TYPE (gsl_vector) * v = FUNCTION (create, vector) (stride, N); + TYPE (gsl_vector) * w = FUNCTION (create, vector) (stride, N); + size_t i; + +#ifdef NO_INLINE + char filename[] = "test_static.dat"; +#else + char filename[] = "test.dat"; +#endif + + { + /* write file */ + FILE *f = fopen(filename, "w"); + + for (i = 0; i < N; i++) + { + BASE x; + GSL_REAL (x) = (ATOMIC)i; + GSL_IMAG (x) = (ATOMIC)(i + 1); + FUNCTION (gsl_vector, set) (v, i, x); + }; + + FUNCTION (gsl_vector, fprintf) (f, v, OUT_FORMAT); + + fclose(f); + } + + { + /* read file */ + FILE *f = fopen(filename, "r"); + + FUNCTION (gsl_vector, fscanf) (f, w); + + status = 0; + for (i = 0; i < N; i++) + { + if (w->data[2 * i * stride] != (ATOMIC) i || w->data[2 * i * stride + 1] != (ATOMIC) (i + 1)) + status = 1; + }; + + gsl_test (status, NAME (gsl_vector) "_fprintf and fscanf"); + + fclose (f); + } + + FUNCTION (gsl_vector, free) (v); + FUNCTION (gsl_vector, free) (w); +} +#endif + +void +FUNCTION (test, trap) (size_t stride, size_t N) +{ + TYPE (gsl_vector) * vc = FUNCTION (create, vector) (stride, N); + + BASE z = {{(ATOMIC)1.2, (ATOMIC)3.4}}; + BASE z1 = {{(ATOMIC)4.5, (ATOMIC)6.7}}; + + size_t j = 0; + + status = 0; + FUNCTION (gsl_vector, set) (vc, j - 1, z); + gsl_test (!status, + NAME (gsl_vector) "_set traps index below lower bound"); + + status = 0; + FUNCTION (gsl_vector, set) (vc, N + 1, z); + gsl_test (!status, + NAME (gsl_vector) "_set traps index above upper bound"); + + status = 0; + FUNCTION (gsl_vector, set) (vc, N, z); + gsl_test (!status, NAME (gsl_vector) "_set traps index at upper bound"); + + status = 0; + z1 = FUNCTION (gsl_vector, get) (vc, j - 1); + gsl_test (!status, + NAME (gsl_vector) "_get traps index below lower bound"); + + gsl_test (GSL_REAL (z1) != 0, + NAME (gsl_vector) "_get returns zero real below lower bound"); + gsl_test (GSL_IMAG (z1) != 0, + NAME (gsl_vector) "_get returns zero imag below lower bound"); + + status = 0; + z1 = FUNCTION (gsl_vector, get) (vc, N + 1); + gsl_test (!status, + NAME (gsl_vector) "_get traps index above upper bound"); + gsl_test (GSL_REAL (z1) != 0, + NAME (gsl_vector) "_get returns zero real above upper bound"); + gsl_test (GSL_IMAG (z1) != 0, + NAME (gsl_vector) "_get returns zero imag above upper bound"); + + status = 0; + z1 = FUNCTION (gsl_vector, get) (vc, N); + gsl_test (!status, NAME (gsl_vector) "_get traps index at upper bound"); + gsl_test (GSL_REAL (z1) != 0, + NAME (gsl_vector) "_get returns zero real at upper bound"); + gsl_test (GSL_IMAG (z1) != 0, + NAME (gsl_vector) "_get returns zero imag at upper bound"); + + FUNCTION (gsl_vector, free) (vc); +} + +void +FUNCTION (test, alloc_zero_length) (void) +{ + TYPE (gsl_vector) * b = FUNCTION (gsl_vector, alloc) (0); + + gsl_test (b == 0, NAME (gsl_vector) "_alloc permits zero length"); + gsl_test (b->size != 0, NAME (gsl_vector) "_alloc reflects zero length"); + + FUNCTION (gsl_vector, free) (b); +} + +void +FUNCTION (test, calloc_zero_length) (void) +{ + TYPE (gsl_vector) * b = FUNCTION (gsl_vector, calloc) (0); + + gsl_test (b == 0, NAME (gsl_vector) "_calloc permits zero length"); + gsl_test (b->size != 0, NAME (gsl_vector) "_calloc reflects zero length"); + + FUNCTION (gsl_vector, free) (b); +} diff --git a/gsl-2.5/vector/test_source.c b/gsl-2.5/vector/test_source.c new file mode 100644 index 00000000..c37be76f --- /dev/null +++ b/gsl-2.5/vector/test_source.c @@ -0,0 +1,874 @@ +/* vector/test_source.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007, 2010 Gerard Jungman, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +void FUNCTION (test, func) (size_t stride, size_t N); +void FUNCTION (test, ops) (size_t stride1, size_t stride2, size_t N); +void FUNCTION (test, file) (size_t stride, size_t N); +void FUNCTION (test, text) (size_t stride, size_t N); +void FUNCTION (test, trap) (size_t stride, size_t N); +TYPE (gsl_vector) * FUNCTION(create, vector) (size_t stride, size_t N); + +#define TEST(expr,desc) gsl_test((expr), NAME(gsl_vector) desc " stride=%d, N=%d", stride, N) +#define TEST2(expr,desc) gsl_test((expr), NAME(gsl_vector) desc " stride1=%d, stride2=%d, N=%d", stride1, stride2, N) + +TYPE (gsl_vector) * +FUNCTION(create, vector) (size_t stride, size_t N) +{ + TYPE (gsl_vector) * v = FUNCTION (gsl_vector, calloc) (N*stride); + v->stride = stride; + v->size = N; + return v; +} + +void +FUNCTION (test, func) (size_t stride, size_t N) +{ + TYPE (gsl_vector) * v0; + TYPE (gsl_vector) * v; + QUALIFIED_VIEW(gsl_vector,view) view; + + size_t i, j; + + if (stride == 1) + { + v = FUNCTION (gsl_vector, calloc) (N); + + TEST(v->data == 0, "_calloc pointer"); + TEST(v->size != N, "_calloc size"); + TEST(v->stride != 1, "_calloc stride"); + + { + int status = (FUNCTION(gsl_vector,isnull)(v) != 1); + TEST (status, "_isnull" DESC " on calloc vector"); + + status = (FUNCTION(gsl_vector,ispos)(v) != 0); + TEST (status, "_ispos" DESC " on calloc vector"); + + status = (FUNCTION(gsl_vector,isneg)(v) != 0); + TEST (status, "_isneg" DESC " on calloc vector"); + + status = (FUNCTION(gsl_vector,isnonneg)(v) != 1); + TEST (status, "_isnonneg" DESC " on calloc vector"); + + } + + FUNCTION (gsl_vector, free) (v); /* free whatever is in v */ + } + + if (stride == 1) + { + v = FUNCTION (gsl_vector, alloc) (N); + + TEST(v->data == 0, "_alloc pointer"); + TEST(v->size != N, "_alloc size"); + TEST(v->stride != 1, "_alloc stride"); + + FUNCTION (gsl_vector, free) (v); /* free whatever is in v */ + } + + if (stride == 1) + { + v0 = FUNCTION (gsl_vector, alloc) (N); + view = FUNCTION (gsl_vector, subvector) (v0, 0, N); + v = &view.vector; + } + else + { + v0 = FUNCTION (gsl_vector, alloc) (N * stride); + + for (i = 0; i < N*stride; i++) + { + v0->data[i] = i; + } + + view = FUNCTION (gsl_vector, subvector_with_stride) (v0, 0, stride, N); + v = &view.vector; + } + + { + int status = 0; + + for (i = 0; i < N; i++) + { + FUNCTION (gsl_vector, set) (v, i, (ATOMIC) i); + } + + for (i = 0; i < N; i++) + { + if (v->data[i*stride] != (ATOMIC) (i)) + status = 1; + }; + + TEST(status,"_set" DESC " writes into array"); + } + + + { + int status = 0; + + for (i = 0; i < N; i++) + { + if (FUNCTION (gsl_vector, get) (v, i) != (ATOMIC) (i)) + status = 1; + }; + + TEST (status, "_get" DESC " reads from array"); + } + + { + int status = 0; + + for (i = 0; i < N; i++) + { + if (FUNCTION (gsl_vector, ptr) (v, i) != v->data + i*stride) + status = 1; + }; + + TEST (status, "_ptr" DESC " access to array"); + } + + + { + int status = 0; + + for (i = 0; i < N; i++) + { + if (FUNCTION (gsl_vector, const_ptr) (v, i) != v->data + i*stride) + status = 1; + }; + + TEST (status, "_const_ptr" DESC " access to array"); + } + + + { + int status = 0; + + for (i = 0; i < N; i++) + { + FUNCTION (gsl_vector, set) (v, i, (ATOMIC) 0); + } + + status = (FUNCTION(gsl_vector,isnull)(v) != 1); + TEST (status, "_isnull" DESC " on null vector") ; + + status = (FUNCTION(gsl_vector,ispos)(v) != 0); + TEST (status, "_ispos" DESC " on null vector") ; + + status = (FUNCTION(gsl_vector,isneg)(v) != 0); + TEST (status, "_isneg" DESC " on null vector") ; + + status = (FUNCTION(gsl_vector,isnonneg)(v) != 1); + TEST (status, "_isnonneg" DESC " on null vector") ; + + } + + { + int status = 0; + + for (i = 0; i < N; i++) + { + FUNCTION (gsl_vector, set) (v, i, (ATOMIC) (i % 10)); + } + + status = (FUNCTION(gsl_vector,isnull)(v) != 0); + TEST (status, "_isnull" DESC " on non-negative vector") ; + + status = (FUNCTION(gsl_vector,ispos)(v) != 0); + TEST (status, "_ispos" DESC " on non-negative vector") ; + + status = (FUNCTION(gsl_vector,isneg)(v) != 0); + TEST (status, "_isneg" DESC " on non-negative vector") ; + + status = (FUNCTION(gsl_vector,isnonneg)(v) != 1); + TEST (status, "_isnonneg" DESC " on non-negative vector") ; + } + + +#ifndef UNSIGNED + { + int status = 0; + + for (i = 0; i < N; i++) + { + ATOMIC vi = (i % 10) - (ATOMIC) 5; + FUNCTION (gsl_vector, set) (v, i, vi); + } + + status = (FUNCTION(gsl_vector,isnull)(v) != 0); + TEST (status, "_isnull" DESC " on mixed vector") ; + + status = (FUNCTION(gsl_vector,ispos)(v) != 0); + TEST (status, "_ispos" DESC " on mixed vector") ; + + status = (FUNCTION(gsl_vector,isneg)(v) != 0); + TEST (status, "_isneg" DESC " on mixed vector") ; + + status = (FUNCTION(gsl_vector,isnonneg)(v) != 0); + TEST (status, "_isnonneg" DESC " on mixed vector") ; + } + + { + int status = 0; + + for (i = 0; i < N; i++) + { + FUNCTION (gsl_vector, set) (v, i, -(ATOMIC) (i % 10)); + } + + status = (FUNCTION(gsl_vector,isnull)(v) != 0); + TEST (status, "_isnull" DESC " on non-positive vector") ; + + status = (FUNCTION(gsl_vector,ispos)(v) != 0); + TEST (status, "_ispos" DESC " on non-positive vector") ; + + status = (FUNCTION(gsl_vector,isneg)(v) != 0); + TEST (status, "_isneg" DESC " on non-positive non-null vector") ; + + status = (FUNCTION(gsl_vector,isnonneg)(v) != 0); + TEST (status, "_isnonneg" DESC " on non-positive non-null vector") ; + } +#endif + + { + int status = 0; + + for (i = 0; i < N; i++) + { + FUNCTION (gsl_vector, set) (v, i, (ATOMIC) (i % 10 + 1)); + } + + status = (FUNCTION(gsl_vector,isnull)(v) != 0); + TEST (status, "_isnull" DESC " on positive vector") ; + + status = (FUNCTION(gsl_vector,ispos)(v) != 1); + TEST (status, "_ispos" DESC " on positive vector") ; + + status = (FUNCTION(gsl_vector,isneg)(v) != 0); + TEST (status, "_isneg" DESC " on positive vector") ; + + status = (FUNCTION(gsl_vector,isnonneg)(v) != 1); + TEST (status, "_isnonneg" DESC " on positive vector") ; + } + + +#if (!defined(UNSIGNED) && !defined(BASE_CHAR)) + { + int status = 0; + + for (i = 0; i < N; i++) + { + FUNCTION (gsl_vector, set) (v, i, -(ATOMIC) (i % 10 + 1)); + } + + status = (FUNCTION(gsl_vector,isnull)(v) != 0); + TEST (status, "_isnull" DESC " on negative vector") ; + + status = (FUNCTION(gsl_vector,ispos)(v) != 0); + TEST (status, "_ispos" DESC " on negative vector") ; + + status = (FUNCTION(gsl_vector,isneg)(v) != 1); + TEST (status, "_isneg" DESC " on negative vector") ; + + status = (FUNCTION(gsl_vector,isnonneg)(v) != 0); + TEST (status, "_isnonneg" DESC " on negative vector") ; + } +#endif + + { + int status = 0; + + FUNCTION (gsl_vector, set_zero) (v); + + for (i = 0; i < N; i++) + { + if (FUNCTION (gsl_vector, get) (v, i) != (ATOMIC)0) + status = 1; + }; + + TEST (status, "_setzero" DESC " on non-null vector") ; + } + + { + int status = 0; + + FUNCTION (gsl_vector, set_all) (v, (ATOMIC)27); + + for (i = 0; i < N; i++) + { + if (FUNCTION (gsl_vector, get) (v, i) != (ATOMIC) (27)) + status = 1; + }; + + TEST (status, "_setall" DESC " to non-zero value") ; + } + + + { + int status = 0; + + for (i = 0; i < N; i++) + { + FUNCTION (gsl_vector, set_basis) (v, i); + + for (j = 0; j < N; j++) + { + if (i == j) + { + if (FUNCTION (gsl_vector, get) (v, j) != (ATOMIC)1) + status = 1 ; + } + else + { + if (FUNCTION (gsl_vector, get) (v, j) != (ATOMIC)(0)) + status = 1; + } + }; + } + + TEST (status, "_setbasis" DESC " over range") ; + } + + { + int status = 0; + + for (i = 0; i < N; i++) + { + FUNCTION (gsl_vector, set) (v, i, (ATOMIC) i); + } + + FUNCTION (gsl_vector, scale) (v, 2.0); + + for (i = 0; i < N; i++) + { + if (FUNCTION (gsl_vector, get) (v, i) != (ATOMIC) ((ATOMIC)i*(ATOMIC)2.0)) + status = 1; + }; + + TEST (status, "_scale" DESC " by 2") ; + } + + { + int status = 0; + + FUNCTION (gsl_vector, add_constant) (v, (ATOMIC)7); + + for (i = 0; i < N; i++) + { + if (FUNCTION (gsl_vector, get) (v, i) != (ATOMIC) ((ATOMIC)i*(ATOMIC)2.0 + (ATOMIC)7)) + status = 1; + }; + + TEST (status, "_add_constant" DESC) ; + } + + { + int status = 0; + + for (i = 0; i < N; i++) + { + FUNCTION (gsl_vector, set) (v, i, (ATOMIC) i); + } + + FUNCTION (gsl_vector,swap_elements) (v, 2, 5) ; + + status = (FUNCTION(gsl_vector,get)(v,2) != 5) ; + status |= (FUNCTION(gsl_vector,get)(v,5) != 2) ; + + FUNCTION (gsl_vector,swap_elements) (v, 2, 5) ; + + status |= (FUNCTION(gsl_vector,get)(v,2) != 2) ; + status |= (FUNCTION(gsl_vector,get)(v,5) != 5) ; + + TEST (status, "_swap_elements" DESC " (2,5)") ; + } + + { + int status = 0; + + FUNCTION (gsl_vector,reverse) (v) ; + + for (i = 0; i < N; i++) + { + status |= (FUNCTION (gsl_vector, get) (v, i) != (ATOMIC) (N - i - 1)); + } + + TEST (status, "_reverse" DESC " reverses elements") ; + } + + + { + int status = 0; + + QUALIFIED_VIEW(gsl_vector,view) v1 = FUNCTION(gsl_vector, view_array) (v->data, N*stride); + + for (i = 0; i < N; i++) + { + if (FUNCTION (gsl_vector, get) (&v1.vector, i*stride) != FUNCTION (gsl_vector, get) (v, i)) + status = 1; + }; + + TEST (status, "_view_array" DESC); + } + + { + int status = 0; + + QUALIFIED_VIEW(gsl_vector,view) v1 = FUNCTION(gsl_vector, view_array_with_stride) (v->data, stride, N*stride); + + for (i = 0; i < N; i++) + { + if (FUNCTION (gsl_vector, get) (&v1.vector, i) != FUNCTION (gsl_vector, get) (v, i)) + status = 1; + }; + + TEST (status, "_view_array_with_stride" DESC); + } + + + { + int status = 0; + + QUALIFIED_VIEW(gsl_vector,view) v1 = FUNCTION(gsl_vector, subvector) (v, N/3, N/2); + + for (i = 0; i < N/2; i++) + { + if (FUNCTION (gsl_vector, get) (&v1.vector, i) != FUNCTION (gsl_vector, get) (v, (N/3) + i)) + status = 1; + }; + + TEST (status, "_view_subvector" DESC); + } + + { + int status = 0; + + QUALIFIED_VIEW(gsl_vector,view) v1 = FUNCTION(gsl_vector, subvector_with_stride) (v, N/5, 3, N/4); + + for (i = 0; i < N/4; i++) + { + if (FUNCTION (gsl_vector, get) (&v1.vector, i) != FUNCTION (gsl_vector, get) (v, (N/5) + 3*i)) + status = 1; + }; + + TEST (status, "_view_subvector_with_stride" DESC); + } + + + { + BASE exp_max = FUNCTION(gsl_vector,get)(v, 0); + BASE exp_min = FUNCTION(gsl_vector,get)(v, 0); + size_t exp_imax = 0, exp_imin = 0; + + for (i = 0; i < N; i++) + { + BASE k = FUNCTION(gsl_vector, get) (v, i) ; + if (k < exp_min) { + exp_min = FUNCTION(gsl_vector, get) (v, i); + exp_imin = i; + } + } + + for (i = 0; i < N; i++) + { + BASE k = FUNCTION(gsl_vector, get) (v, i) ; + if (k > exp_max) { + exp_max = FUNCTION(gsl_vector, get) (v, i) ; + exp_imax = i; + } + } + + { + BASE max = FUNCTION(gsl_vector, max) (v) ; + TEST (max != exp_max, "_max returns correct maximum value"); + } + + { + BASE min = FUNCTION(gsl_vector, min) (v) ; + TEST (min != exp_min, "_min returns correct minimum value"); + } + + { + BASE min, max; + FUNCTION(gsl_vector, minmax) (v, &min, &max); + + TEST (max != exp_max, "_minmax returns correct maximum value"); + TEST (min != exp_min, "_minmax returns correct minimum value"); + } + + + { + size_t imax = FUNCTION(gsl_vector, max_index) (v) ; + TEST (imax != exp_imax, "_max_index returns correct maximum i"); + } + + { + size_t imin = FUNCTION(gsl_vector, min_index) (v) ; + TEST (imin != exp_imin, "_min_index returns correct minimum i"); + } + + { + size_t imin, imax; + + FUNCTION(gsl_vector, minmax_index) (v, &imin, &imax); + + TEST (imax != exp_imax, "_minmax_index returns correct maximum i"); + TEST (imin != exp_imin, "_minmax_index returns correct minimum i"); + } + +#if FP + i = N/2; + FUNCTION(gsl_vector, set) (v, i, GSL_NAN); + exp_max = GSL_NAN; exp_min = GSL_NAN; + exp_imax = i; exp_imin = i; + + { + BASE max = FUNCTION(gsl_vector, max) (v) ; + gsl_test_abs (max, exp_max, 0, "_max returns correct maximum value for NaN"); + } + + { + BASE min = FUNCTION(gsl_vector, min) (v) ; + gsl_test_abs (min, exp_min, 0, "_min returns correct minimum value for NaN"); + } + + { + BASE min, max; + FUNCTION(gsl_vector, minmax) (v, &min, &max); + + gsl_test_abs (max, exp_max, 0, "_minmax returns correct maximum value for NaN"); + gsl_test_abs (min, exp_min, 0, "_minmax returns correct minimum value for NaN"); + } + + + { + size_t imax = FUNCTION(gsl_vector, max_index) (v) ; + TEST (imax != exp_imax, "_max_index returns correct maximum i for NaN"); + } + + { + size_t imin = FUNCTION(gsl_vector, min_index) (v) ; + TEST (imin != exp_imin, "_min_index returns correct minimum i for NaN"); + } + + { + size_t imin, imax; + + FUNCTION(gsl_vector, minmax_index) (v, &imin, &imax); + + TEST (imax != exp_imax, "_minmax_index returns correct maximum i for NaN"); + TEST (imin != exp_imin, "_minmax_index returns correct minimum i for NaN"); + } +#endif + + } + + + FUNCTION (gsl_vector, free) (v0); /* free whatever is in v */ +} + +void +FUNCTION (test, ops) (size_t stride1, size_t stride2, size_t N) +{ + size_t i; + TYPE (gsl_vector) * a = FUNCTION (create, vector) (stride1, N); + TYPE (gsl_vector) * b = FUNCTION (create, vector) (stride2, N); + TYPE (gsl_vector) * v = FUNCTION (create, vector) (stride1, N); + + for (i = 0; i < N; i++) + { + FUNCTION (gsl_vector, set) (a, i, (BASE)(3 + i)); + FUNCTION (gsl_vector, set) (b, i, (BASE)(3 + 2 * i)); + } + + { + int status = (FUNCTION(gsl_vector,equal) (a,b) != 0); + TEST2 (status, "_equal vectors unequal"); + } + + FUNCTION(gsl_vector, memcpy) (v, a); + + { + int status = (FUNCTION(gsl_vector,equal) (a,v) != 1); + TEST2 (status, "_equal vectors equal"); + } + + FUNCTION(gsl_vector, add) (v, b); + + { + int status = 0; + + for (i = 0; i < N; i++) + { + BASE r = FUNCTION(gsl_vector,get) (v,i); + BASE x = FUNCTION(gsl_vector,get) (a,i); + BASE y = FUNCTION(gsl_vector,get) (b,i); + BASE z = x + y; + if (r != z) + status = 1; + } + TEST2 (status, "_add vector addition"); + } + + { + int status = 0; + + FUNCTION(gsl_vector, swap) (a, b); + + for (i = 0; i < N; i++) + { + status |= (FUNCTION (gsl_vector, get) (a, i) != (BASE)(3 + 2 * i)); + status |= (FUNCTION (gsl_vector, get) (b, i) != (BASE)(3 + i)); + } + + FUNCTION(gsl_vector, swap) (a, b); + + for (i = 0; i < N; i++) + { + status |= (FUNCTION (gsl_vector, get) (a, i) != (BASE)(3 + i)); + status |= (FUNCTION (gsl_vector, get) (b, i) != (BASE)(3 + 2 * i)); + } + + TEST2 (status, "_swap exchange vectors"); + } + + FUNCTION(gsl_vector, memcpy) (v, a); + FUNCTION(gsl_vector, sub) (v, b); + + { + int status = 0; + + for (i = 0; i < N; i++) + { + BASE r = FUNCTION(gsl_vector,get) (v,i); + BASE x = FUNCTION(gsl_vector,get) (a,i); + BASE y = FUNCTION(gsl_vector,get) (b,i); + BASE z = x - y; + if (r != z) + status = 1; + } + + TEST2 (status, "_sub vector subtraction"); + } + + FUNCTION(gsl_vector, memcpy) (v, a); + FUNCTION(gsl_vector, mul) (v, b); + + { + int status = 0; + + for (i = 0; i < N; i++) + { + BASE r = FUNCTION(gsl_vector,get) (v,i); + BASE x = FUNCTION(gsl_vector,get) (a,i); + BASE y = FUNCTION(gsl_vector,get) (b,i); + BASE z = x * y; + if (r != z) + status = 1; + } + + TEST2 (status, "_mul multiplication"); + } + + FUNCTION(gsl_vector, memcpy) (v, a); + FUNCTION(gsl_vector, div) (v, b); + + { + int status = 0; + + for (i = 0; i < N; i++) + { + BASE r = FUNCTION(gsl_vector,get) (v,i); + BASE x = FUNCTION(gsl_vector,get) (a,i); + BASE y = FUNCTION(gsl_vector,get) (b,i); + BASE z = x / y; + if (fabs(r - z) > 2 * GSL_FLT_EPSILON * fabs(z)) + status = 1; + } + TEST2 (status, "_div division"); + } + + FUNCTION(gsl_vector, free) (a); + FUNCTION(gsl_vector, free) (b); + FUNCTION(gsl_vector, free) (v); +} + + +void +FUNCTION (test, file) (size_t stride, size_t N) +{ + TYPE (gsl_vector) * v = FUNCTION (create, vector) (stride, N); + TYPE (gsl_vector) * w = FUNCTION (create, vector) (stride, N); + size_t i; + +#ifdef NO_INLINE + char filename[] = "test_static.dat"; +#else + char filename[] = "test.dat"; +#endif + + { + /* write file */ + FILE *f = fopen(filename, "wb"); + + for (i = 0; i < N; i++) + { + FUNCTION (gsl_vector, set) (v, i, (ATOMIC) (N - i)); + }; + + FUNCTION (gsl_vector, fwrite) (f, v); + + fclose(f); + } + + { + /* read file */ + FILE *f = fopen(filename, "rb"); + + FUNCTION (gsl_vector, fread) (f, w); + + status = 0; + for (i = 0; i < N; i++) + { + if (w->data[i*stride] != (ATOMIC) (N - i)) + status = 1; + }; + + TEST (status, "_write and read"); + + fclose(f); + } + + FUNCTION (gsl_vector, free) (v); /* free whatever is in v */ + FUNCTION (gsl_vector, free) (w); /* free whatever is in w */ +} + +#if USES_LONGDOUBLE && ! HAVE_PRINTF_LONGDOUBLE +/* skip this test */ +#else +void +FUNCTION (test, text) (size_t stride, size_t N) +{ + TYPE (gsl_vector) * v = FUNCTION (create, vector) (stride, N); + TYPE (gsl_vector) * w = FUNCTION (create, vector) (stride, N); + size_t i; + +#ifdef NO_INLINE + char filename[] = "test_static.dat"; +#else + char filename[] = "test.dat"; +#endif + + { + /* write file */ + FILE *f = fopen(filename, "w"); + + for (i = 0; i < N; i++) + { + FUNCTION (gsl_vector, set) (v, i, (ATOMIC) i); + }; + + FUNCTION (gsl_vector, fprintf) (f, v, OUT_FORMAT); + + fclose(f); + } + + { + /* read file */ + FILE *f = fopen(filename, "r"); + + FUNCTION (gsl_vector, fscanf) (f, w); + + status = 0; + for (i = 0; i < N; i++) + { + if (w->data[i*stride] != (ATOMIC) i) + status = 1; + }; + + gsl_test (status, NAME (gsl_vector) "_fprintf and fscanf"); + + fclose (f); + } + + FUNCTION (gsl_vector, free) (v); + FUNCTION (gsl_vector, free) (w); +} +#endif + +void +FUNCTION (test, trap) (size_t stride, size_t N) +{ + double x; + size_t j = 0; + TYPE (gsl_vector) * v = FUNCTION (create, vector) (stride, N); + v->size = N; + v->stride = stride; + + status = 0; + FUNCTION (gsl_vector, set) (v, j - 1, (ATOMIC)0); + TEST (!status, "_set traps index below lower bound"); + + status = 0; + FUNCTION (gsl_vector, set) (v, N + 1, (ATOMIC)0); + TEST (!status, "_set traps index above upper bound"); + + status = 0; + FUNCTION (gsl_vector, set) (v, N, (ATOMIC)0); + TEST (!status, "_set traps index at upper bound"); + + status = 0; + x = FUNCTION (gsl_vector, get) (v, j - 1); + TEST (!status, "_get traps index below lower bound"); + TEST (x != 0, "_get returns zero for index below lower bound"); + + status = 0; + x = FUNCTION (gsl_vector, get) (v, N + 1); + TEST (!status, "_get traps index above upper bound"); + TEST (x != 0, "_get returns zero for index above upper bound"); + + status = 0; + x = FUNCTION (gsl_vector, get) (v, N); + TEST (!status, "_get traps index at upper bound"); + TEST (x != 0, "_get returns zero for index at upper bound"); + + FUNCTION (gsl_vector, free) (v); /* free whatever is in v */ +} + +void +FUNCTION (test, alloc_zero_length) (void) +{ + TYPE (gsl_vector) * b = FUNCTION (gsl_vector, alloc) (0); + + gsl_test (b == 0, NAME (gsl_vector) "_alloc permits zero length"); + gsl_test (b->size != 0, NAME (gsl_vector) "_alloc reflects zero length"); + + FUNCTION (gsl_vector, free) (b); +} + +void +FUNCTION (test, calloc_zero_length) (void) +{ + TYPE (gsl_vector) * b = FUNCTION (gsl_vector, calloc) (0); + + gsl_test (b == 0, NAME (gsl_vector) "_calloc permits zero length"); + gsl_test (b->size != 0, NAME (gsl_vector) "_calloc reflects zero length"); + + FUNCTION (gsl_vector, free) (b); +} diff --git a/gsl-2.5/vector/test_static b/gsl-2.5/vector/test_static new file mode 100755 index 00000000..55d05817 Binary files /dev/null and b/gsl-2.5/vector/test_static differ diff --git a/gsl-2.5/vector/test_static.c b/gsl-2.5/vector/test_static.c new file mode 100644 index 00000000..bd11f002 --- /dev/null +++ b/gsl-2.5/vector/test_static.c @@ -0,0 +1,6 @@ +#undef HAVE_INLINE +#ifndef NO_INLINE +#define NO_INLINE +#endif +#define DESC " (static)" +#include "test.c" diff --git a/gsl-2.5/vector/test_static.dat b/gsl-2.5/vector/test_static.dat new file mode 100644 index 00000000..d0551e9d Binary files /dev/null and b/gsl-2.5/vector/test_static.dat differ diff --git a/gsl-2.5/vector/test_static.log b/gsl-2.5/vector/test_static.log new file mode 100644 index 00000000..2196f62f --- /dev/null +++ b/gsl-2.5/vector/test_static.log @@ -0,0 +1 @@ +Completed [33799/33799] diff --git a/gsl-2.5/vector/test_static.trs b/gsl-2.5/vector/test_static.trs new file mode 100644 index 00000000..3f0f396c --- /dev/null +++ b/gsl-2.5/vector/test_static.trs @@ -0,0 +1,4 @@ +:test-result: PASS +:global-test-result: PASS +:recheck: no +:copy-in-global-log: no diff --git a/gsl-2.5/vector/vector.c b/gsl-2.5/vector/vector.c new file mode 100644 index 00000000..347c6eaa --- /dev/null +++ b/gsl-2.5/vector/vector.c @@ -0,0 +1,31 @@ +/* vector/vector.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include + +/* Compile all the inline functions */ + +#define COMPILE_INLINE_STATIC +#include "build.h" +#include + +/* turn on range checking at runtime (disabled if zero) */ +int gsl_check_range = 1; + diff --git a/gsl-2.5/vector/vector.lo b/gsl-2.5/vector/vector.lo new file mode 100644 index 00000000..f98f0ffc --- /dev/null +++ b/gsl-2.5/vector/vector.lo @@ -0,0 +1,12 @@ +# vector.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/vector.o' + +# Name of the non-PIC object +non_pic_object='vector.o' + diff --git a/gsl-2.5/vector/view.c b/gsl-2.5/vector/view.c new file mode 100644 index 00000000..da7b5e97 --- /dev/null +++ b/gsl-2.5/vector/view.c @@ -0,0 +1,176 @@ +#include +#include +#include + +#include "view.h" + +#define BASE_GSL_COMPLEX_LONG +#include "templates_on.h" +#include "view_source.c" +#include "templates_off.h" +#undef BASE_GSL_COMPLEX_LONG + +#define BASE_GSL_COMPLEX +#include "templates_on.h" +#include "view_source.c" +#include "templates_off.h" +#undef BASE_GSL_COMPLEX + +#define BASE_GSL_COMPLEX_FLOAT +#include "templates_on.h" +#include "view_source.c" +#include "templates_off.h" +#undef BASE_GSL_COMPLEX_FLOAT + +#define BASE_LONG_DOUBLE +#include "templates_on.h" +#include "view_source.c" +#include "templates_off.h" +#undef BASE_LONG_DOUBLE + +#define BASE_DOUBLE +#include "templates_on.h" +#include "view_source.c" +#include "templates_off.h" +#undef BASE_DOUBLE + +#define BASE_FLOAT +#include "templates_on.h" +#include "view_source.c" +#include "templates_off.h" +#undef BASE_FLOAT + +#define BASE_ULONG +#include "templates_on.h" +#include "view_source.c" +#include "templates_off.h" +#undef BASE_ULONG + +#define BASE_LONG +#include "templates_on.h" +#include "view_source.c" +#include "templates_off.h" +#undef BASE_LONG + +#define BASE_UINT +#include "templates_on.h" +#include "view_source.c" +#include "templates_off.h" +#undef BASE_UINT + +#define BASE_INT +#include "templates_on.h" +#include "view_source.c" +#include "templates_off.h" +#undef BASE_INT + +#define BASE_USHORT +#include "templates_on.h" +#include "view_source.c" +#include "templates_off.h" +#undef BASE_USHORT + +#define BASE_SHORT +#include "templates_on.h" +#include "view_source.c" +#include "templates_off.h" +#undef BASE_SHORT + +#define BASE_UCHAR +#include "templates_on.h" +#include "view_source.c" +#include "templates_off.h" +#undef BASE_UCHAR + +#define BASE_CHAR +#include "templates_on.h" +#include "view_source.c" +#include "templates_off.h" +#undef BASE_CHAR + +#define USE_QUALIFIER +#define QUALIFIER const + +#define BASE_GSL_COMPLEX_LONG +#include "templates_on.h" +#include "view_source.c" +#include "templates_off.h" +#undef BASE_GSL_COMPLEX_LONG + +#define BASE_GSL_COMPLEX +#include "templates_on.h" +#include "view_source.c" +#include "templates_off.h" +#undef BASE_GSL_COMPLEX + +#define BASE_GSL_COMPLEX_FLOAT +#include "templates_on.h" +#include "view_source.c" +#include "templates_off.h" +#undef BASE_GSL_COMPLEX_FLOAT + +#define BASE_LONG_DOUBLE +#include "templates_on.h" +#include "view_source.c" +#include "templates_off.h" +#undef BASE_LONG_DOUBLE + +#define BASE_DOUBLE +#include "templates_on.h" +#include "view_source.c" +#include "templates_off.h" +#undef BASE_DOUBLE + +#define BASE_FLOAT +#include "templates_on.h" +#include "view_source.c" +#include "templates_off.h" +#undef BASE_FLOAT + +#define BASE_ULONG +#include "templates_on.h" +#include "view_source.c" +#include "templates_off.h" +#undef BASE_ULONG + +#define BASE_LONG +#include "templates_on.h" +#include "view_source.c" +#include "templates_off.h" +#undef BASE_LONG + +#define BASE_UINT +#include "templates_on.h" +#include "view_source.c" +#include "templates_off.h" +#undef BASE_UINT + +#define BASE_INT +#include "templates_on.h" +#include "view_source.c" +#include "templates_off.h" +#undef BASE_INT + +#define BASE_USHORT +#include "templates_on.h" +#include "view_source.c" +#include "templates_off.h" +#undef BASE_USHORT + +#define BASE_SHORT +#include "templates_on.h" +#include "view_source.c" +#include "templates_off.h" +#undef BASE_SHORT + +#define BASE_UCHAR +#include "templates_on.h" +#include "view_source.c" +#include "templates_off.h" +#undef BASE_UCHAR + +#define BASE_CHAR +#include "templates_on.h" +#include "view_source.c" +#include "templates_off.h" +#undef BASE_CHAR diff --git a/gsl-2.5/vector/view.h b/gsl-2.5/vector/view.h new file mode 100644 index 00000000..37e324a5 --- /dev/null +++ b/gsl-2.5/vector/view.h @@ -0,0 +1,2 @@ +#define NULL_VECTOR {0, 0, 0, 0, 0} +#define NULL_VECTOR_VIEW {{0, 0, 0, 0, 0}} diff --git a/gsl-2.5/vector/view.lo b/gsl-2.5/vector/view.lo new file mode 100644 index 00000000..c68e7846 --- /dev/null +++ b/gsl-2.5/vector/view.lo @@ -0,0 +1,12 @@ +# view.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/view.o' + +# Name of the non-PIC object +non_pic_object='view.o' + diff --git a/gsl-2.5/vector/view_source.c b/gsl-2.5/vector/view_source.c new file mode 100644 index 00000000..ff874fff --- /dev/null +++ b/gsl-2.5/vector/view_source.c @@ -0,0 +1,64 @@ +/* vector/view_source.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2007 Gerard Jungman, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +QUALIFIED_VIEW(_gsl_vector,view) +FUNCTION(gsl_vector, view_array) (QUALIFIER ATOMIC * base, size_t n) +{ + QUALIFIED_VIEW(_gsl_vector,view) view = NULL_VECTOR_VIEW; + + { + TYPE(gsl_vector) v = NULL_VECTOR; + + v.data = (ATOMIC *)base ; + v.size = n; + v.stride = 1; + v.block = 0; + v.owner = 0; + + view.vector = v; + return view; + } +} + +QUALIFIED_VIEW(_gsl_vector,view) +FUNCTION(gsl_vector, view_array_with_stride) (QUALIFIER ATOMIC * base, + size_t stride, + size_t n) +{ + QUALIFIED_VIEW(_gsl_vector,view) view = NULL_VECTOR_VIEW; + + if (stride == 0) + { + GSL_ERROR_VAL ("stride must be positive integer", + GSL_EINVAL, view); + } + + { + TYPE(gsl_vector) v = NULL_VECTOR; + + v.data = (ATOMIC *)base ; + v.size = n; + v.stride = stride; + v.block = 0; + v.owner = 0; + + view.vector = v; + return view; + } +} diff --git a/gsl-2.5/version.c b/gsl-2.5/version.c new file mode 100644 index 00000000..c791116d --- /dev/null +++ b/gsl-2.5/version.c @@ -0,0 +1,30 @@ +/* version.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include + +/* This file needs to use the top-level due to the + possibility of a VPATH-style build where the original source + tree is on read-only filesystem and so will not be picked up + by the symlinking comands in gsl/Makefile.am */ + + +const char * gsl_version = GSL_VERSION; + diff --git a/gsl-2.5/version.lo b/gsl-2.5/version.lo new file mode 100644 index 00000000..89037d42 --- /dev/null +++ b/gsl-2.5/version.lo @@ -0,0 +1,12 @@ +# version.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/version.o' + +# Name of the non-PIC object +non_pic_object='version.o' + diff --git a/gsl-2.5/wavelet/.deps/bspline.Plo b/gsl-2.5/wavelet/.deps/bspline.Plo new file mode 100644 index 00000000..7274e8ad --- /dev/null +++ b/gsl-2.5/wavelet/.deps/bspline.Plo @@ -0,0 +1,172 @@ +bspline.lo: bspline.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_errno.h /usr/include/stdio.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_types.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_nan.h ../gsl/gsl_pow_int.h \ + ../gsl/gsl_minmax.h ../gsl/gsl_wavelet.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_wavelet.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: diff --git a/gsl-2.5/wavelet/.deps/daubechies.Plo b/gsl-2.5/wavelet/.deps/daubechies.Plo new file mode 100644 index 00000000..44c2cdcd --- /dev/null +++ b/gsl-2.5/wavelet/.deps/daubechies.Plo @@ -0,0 +1,109 @@ +daubechies.lo: daubechies.c /usr/include/stdc-predef.h ../config.h \ + ../gsl/gsl_errno.h /usr/include/stdio.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_types.h ../gsl/gsl_wavelet.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_wavelet.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: diff --git a/gsl-2.5/wavelet/.deps/dwt.Plo b/gsl-2.5/wavelet/.deps/dwt.Plo new file mode 100644 index 00000000..f239437c --- /dev/null +++ b/gsl-2.5/wavelet/.deps/dwt.Plo @@ -0,0 +1,123 @@ +dwt.lo: dwt.c /usr/include/stdc-predef.h ../config.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_types.h ../gsl/gsl_wavelet.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_wavelet2d.h \ + ../gsl/gsl_vector_double.h ../gsl/gsl_inline.h ../gsl/gsl_check_range.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_matrix_double.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_wavelet.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_wavelet2d.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_matrix_double.h: diff --git a/gsl-2.5/wavelet/.deps/haar.Plo b/gsl-2.5/wavelet/.deps/haar.Plo new file mode 100644 index 00000000..688df419 --- /dev/null +++ b/gsl-2.5/wavelet/.deps/haar.Plo @@ -0,0 +1,172 @@ +haar.lo: haar.c /usr/include/stdc-predef.h ../config.h ../gsl/gsl_errno.h \ + /usr/include/stdio.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_types.h ../gsl/gsl_math.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_sys.h ../gsl/gsl_inline.h ../gsl/gsl_machine.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h \ + ../gsl/gsl_precision.h ../gsl/gsl_nan.h ../gsl/gsl_pow_int.h \ + ../gsl/gsl_minmax.h ../gsl/gsl_wavelet.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h + +/usr/include/stdc-predef.h: + +../config.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_math.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_sys.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_machine.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/float.h: + +../gsl/gsl_precision.h: + +../gsl/gsl_nan.h: + +../gsl/gsl_pow_int.h: + +../gsl/gsl_minmax.h: + +../gsl/gsl_wavelet.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: diff --git a/gsl-2.5/wavelet/.deps/test.Po b/gsl-2.5/wavelet/.deps/test.Po new file mode 100644 index 00000000..c9fe3040 --- /dev/null +++ b/gsl-2.5/wavelet/.deps/test.Po @@ -0,0 +1,263 @@ +test.o: test.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdio.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + ../gsl/gsl_errno.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_types.h ../gsl/gsl_vector.h \ + ../gsl/gsl_vector_complex_long_double.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_complex.h \ + ../gsl/gsl_check_range.h ../gsl/gsl_vector_long_double.h \ + ../gsl/gsl_inline.h ../gsl/gsl_block_long_double.h \ + ../gsl/gsl_vector_complex.h ../gsl/gsl_block_complex_long_double.h \ + ../gsl/gsl_vector_complex_double.h ../gsl/gsl_vector_double.h \ + ../gsl/gsl_block_double.h ../gsl/gsl_block_complex_double.h \ + ../gsl/gsl_vector_complex_float.h ../gsl/gsl_vector_float.h \ + ../gsl/gsl_block_float.h ../gsl/gsl_block_complex_float.h \ + ../gsl/gsl_vector_ulong.h ../gsl/gsl_block_ulong.h \ + ../gsl/gsl_vector_long.h ../gsl/gsl_block_long.h \ + ../gsl/gsl_vector_uint.h ../gsl/gsl_block_uint.h ../gsl/gsl_vector_int.h \ + ../gsl/gsl_block_int.h ../gsl/gsl_vector_ushort.h \ + ../gsl/gsl_block_ushort.h ../gsl/gsl_vector_short.h \ + ../gsl/gsl_block_short.h ../gsl/gsl_vector_uchar.h \ + ../gsl/gsl_block_uchar.h ../gsl/gsl_vector_char.h \ + ../gsl/gsl_block_char.h ../gsl/gsl_blas.h ../gsl/gsl_matrix.h \ + ../gsl/gsl_matrix_complex_long_double.h \ + ../gsl/gsl_matrix_complex_double.h ../gsl/gsl_matrix_complex_float.h \ + ../gsl/gsl_matrix_long_double.h ../gsl/gsl_matrix_double.h \ + ../gsl/gsl_matrix_float.h ../gsl/gsl_matrix_ulong.h \ + ../gsl/gsl_matrix_long.h ../gsl/gsl_matrix_uint.h \ + ../gsl/gsl_matrix_int.h ../gsl/gsl_matrix_ushort.h \ + ../gsl/gsl_matrix_short.h ../gsl/gsl_matrix_uchar.h \ + ../gsl/gsl_matrix_char.h ../gsl/gsl_blas_types.h ../gsl/gsl_cblas.h \ + ../gsl/gsl_test.h ../gsl/gsl_wavelet.h ../gsl/gsl_wavelet2d.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +../gsl/gsl_errno.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_vector.h: + +../gsl/gsl_vector_complex_long_double.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_complex.h: + +../gsl/gsl_check_range.h: + +../gsl/gsl_vector_long_double.h: + +../gsl/gsl_inline.h: + +../gsl/gsl_block_long_double.h: + +../gsl/gsl_vector_complex.h: + +../gsl/gsl_block_complex_long_double.h: + +../gsl/gsl_vector_complex_double.h: + +../gsl/gsl_vector_double.h: + +../gsl/gsl_block_double.h: + +../gsl/gsl_block_complex_double.h: + +../gsl/gsl_vector_complex_float.h: + +../gsl/gsl_vector_float.h: + +../gsl/gsl_block_float.h: + +../gsl/gsl_block_complex_float.h: + +../gsl/gsl_vector_ulong.h: + +../gsl/gsl_block_ulong.h: + +../gsl/gsl_vector_long.h: + +../gsl/gsl_block_long.h: + +../gsl/gsl_vector_uint.h: + +../gsl/gsl_block_uint.h: + +../gsl/gsl_vector_int.h: + +../gsl/gsl_block_int.h: + +../gsl/gsl_vector_ushort.h: + +../gsl/gsl_block_ushort.h: + +../gsl/gsl_vector_short.h: + +../gsl/gsl_block_short.h: + +../gsl/gsl_vector_uchar.h: + +../gsl/gsl_block_uchar.h: + +../gsl/gsl_vector_char.h: + +../gsl/gsl_block_char.h: + +../gsl/gsl_blas.h: + +../gsl/gsl_matrix.h: + +../gsl/gsl_matrix_complex_long_double.h: + +../gsl/gsl_matrix_complex_double.h: + +../gsl/gsl_matrix_complex_float.h: + +../gsl/gsl_matrix_long_double.h: + +../gsl/gsl_matrix_double.h: + +../gsl/gsl_matrix_float.h: + +../gsl/gsl_matrix_ulong.h: + +../gsl/gsl_matrix_long.h: + +../gsl/gsl_matrix_uint.h: + +../gsl/gsl_matrix_int.h: + +../gsl/gsl_matrix_ushort.h: + +../gsl/gsl_matrix_short.h: + +../gsl/gsl_matrix_uchar.h: + +../gsl/gsl_matrix_char.h: + +../gsl/gsl_blas_types.h: + +../gsl/gsl_cblas.h: + +../gsl/gsl_test.h: + +../gsl/gsl_wavelet.h: + +../gsl/gsl_wavelet2d.h: diff --git a/gsl-2.5/wavelet/.deps/wavelet.Plo b/gsl-2.5/wavelet/.deps/wavelet.Plo new file mode 100644 index 00000000..e448b01f --- /dev/null +++ b/gsl-2.5/wavelet/.deps/wavelet.Plo @@ -0,0 +1,109 @@ +wavelet.lo: wavelet.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-float.h ../gsl/gsl_errno.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + ../gsl/gsl_types.h ../gsl/gsl_wavelet.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-float.h: + +../gsl/gsl_errno.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +../gsl/gsl_types.h: + +../gsl/gsl_wavelet.h: diff --git a/gsl-2.5/wavelet/.libs/libgslwavelet.la b/gsl-2.5/wavelet/.libs/libgslwavelet.la new file mode 120000 index 00000000..85f06353 --- /dev/null +++ b/gsl-2.5/wavelet/.libs/libgslwavelet.la @@ -0,0 +1 @@ +../libgslwavelet.la \ No newline at end of file diff --git a/gsl-2.5/wavelet/.libs/lt-test b/gsl-2.5/wavelet/.libs/lt-test new file mode 100755 index 00000000..483c59d7 Binary files /dev/null and b/gsl-2.5/wavelet/.libs/lt-test differ diff --git a/gsl-2.5/wavelet/.libs/test b/gsl-2.5/wavelet/.libs/test new file mode 100755 index 00000000..29e23b61 Binary files /dev/null and b/gsl-2.5/wavelet/.libs/test differ diff --git a/gsl-2.5/wavelet/ChangeLog b/gsl-2.5/wavelet/ChangeLog new file mode 100644 index 00000000..dfadaa97 --- /dev/null +++ b/gsl-2.5/wavelet/ChangeLog @@ -0,0 +1,32 @@ +2009-07-09 Brian Gough + + * wavelet.c (gsl_wavelet_free): handle NULL argument in free + (gsl_wavelet_workspace_free): handle NULL argument in free + +2008-10-13 Brian Gough + + * test.c (test_2d): change typename variable to name to avoid + conflict with C++ typename keyword + +2008-07-03 Brian Gough + + * Makefile.am (INCLUDES): use top_srcdir instead of top_builddir + +2008-01-03 Brian Gough + + * dwt.c (dwt_step): move pointer dereference out of loop + +2006-03-16 Brian Gough + + * changed to gsl_wavelet_forward and gsl_wavelet_backward enums + throughout internally instead of forward and backward. + +2004-12-29 Brian Gough + + * gsl_wavelet.h: added missing includes, use GSL_VAR instead of + extern + +2004-07-23 Brian Gough + + * added wavelet directory from Ivo Alxneit. + diff --git a/gsl-2.5/wavelet/Makefile b/gsl-2.5/wavelet/Makefile new file mode 100644 index 00000000..c743f4fb --- /dev/null +++ b/gsl-2.5/wavelet/Makefile @@ -0,0 +1,1031 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# wavelet/Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + + + + +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/gsl +pkgincludedir = $(includedir)/gsl +pkglibdir = $(libdir)/gsl +pkglibexecdir = $(libexecdir)/gsl +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = x86_64-unknown-linux-gnu +host_triplet = x86_64-unknown-linux-gnu +check_PROGRAMS = test$(EXEEXT) +subdir = wavelet +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp \ + $(pkginclude_HEADERS) $(top_srcdir)/test-driver ChangeLog TODO +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +libgslwavelet_la_LIBADD = +am_libgslwavelet_la_OBJECTS = dwt.lo wavelet.lo bspline.lo \ + daubechies.lo haar.lo +libgslwavelet_la_OBJECTS = $(am_libgslwavelet_la_OBJECTS) +AM_V_lt = $(am__v_lt_$(V)) +am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) +am__v_lt_0 = --silent +am__v_lt_1 = +am_test_OBJECTS = test.$(OBJEXT) +test_OBJECTS = $(am_test_OBJECTS) +test_DEPENDENCIES = libgslwavelet.la ../blas/libgslblas.la \ + ../cblas/libgslcblas.la ../matrix/libgslmatrix.la \ + ../vector/libgslvector.la ../block/libgslblock.la \ + ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la \ + ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la +AM_V_P = $(am__v_P_$(V)) +am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY)) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_$(V)) +am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_$(V)) +am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I. -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_$(V)) +am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_$(V)) +am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libgslwavelet_la_SOURCES) $(test_SOURCES) +DIST_SOURCES = $(libgslwavelet_la_SOURCES) $(test_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(pkgincludedir)" +HEADERS = $(pkginclude_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = .test +LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing aclocal-1.13 +AMTAR = $${TAR-tar} +AM_DEFAULT_VERBOSITY = 1 +AR = ar +AS = as +AUTOCONF = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing autoconf +AUTOHEADER = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing autoheader +AUTOMAKE = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing automake-1.13 +AWK = gawk +CC = gcc +CCDEPMODE = depmode=gcc3 +CFLAGS = -g -O2 +CPP = gcc -E +CPPFLAGS = +CYGPATH_W = echo +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +DLLTOOL = false +DSYMUTIL = +DUMPBIN = +ECHO_C = +ECHO_N = -n +ECHO_T = +EGREP = /usr/bin/grep -E +EXEEXT = +FGREP = /usr/bin/grep -F +GREP = /usr/bin/grep +GSLCBLAS_LDFLAGS = +GSL_CFLAGS = -I${prefix}/include +GSL_LDFLAGS = +GSL_LIBADD = +GSL_LIBM = -lm +GSL_LIBS = -L${exec_prefix}/lib -lgsl +GSL_LT_CBLAS_VERSION = 0:0:0 +GSL_LT_VERSION = 24:0:1 +GSL_MAJOR_VERSION = 2 +GSL_MINOR_VERSION = 5 +HAVE_AIX_IEEE_INTERFACE = +HAVE_DARWIN86_IEEE_INTERFACE = +HAVE_DARWIN_IEEE_INTERFACE = +HAVE_FREEBSD_IEEE_INTERFACE = +HAVE_GNUM68K_IEEE_INTERFACE = +HAVE_GNUPPC_IEEE_INTERFACE = +HAVE_GNUSPARC_IEEE_INTERFACE = +HAVE_GNUX86_IEEE_INTERFACE = +HAVE_HPUX11_IEEE_INTERFACE = +HAVE_HPUX_IEEE_INTERFACE = +HAVE_IRIX_IEEE_INTERFACE = +HAVE_NETBSD_IEEE_INTERFACE = +HAVE_OPENBSD_IEEE_INTERFACE = +HAVE_OS2EMX_IEEE_INTERFACE = +HAVE_SOLARIS_IEEE_INTERFACE = +HAVE_SUNOS4_IEEE_INTERFACE = +HAVE_TRU64_IEEE_INTERFACE = +INSTALL = /usr/bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = $(install_sh) -c -s +LD = /usr/bin/ld -m elf_x86_64 +LDFLAGS = +LIBM = -lm +LIBOBJS = +LIBS = -lm +LIBTOOL = $(SHELL) $(top_builddir)/libtool +LIPO = +LN_S = ln -s +LTLIBOBJS = +MAINT = # +MAKEINFO = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/missing makeinfo +MANIFEST_TOOL = : +MKDIR_P = /usr/bin/mkdir -p +NM = /usr/bin/nm -B +NMEDIT = +OBJDUMP = objdump +OBJEXT = o +OTOOL = +OTOOL64 = +PACKAGE = gsl +PACKAGE_BUGREPORT = +PACKAGE_NAME = gsl +PACKAGE_STRING = gsl 2.5 +PACKAGE_TARNAME = gsl +PACKAGE_URL = +PACKAGE_VERSION = 2.5 +PATH_SEPARATOR = : +RANLIB = ranlib +SED = /usr/bin/sed +SET_MAKE = +SHELL = /bin/sh +STRIP = strip +VERSION = 2.5 +abs_builddir = /home/groups/kipac/chto/package/gsl/gsl-2.5/wavelet +abs_srcdir = /home/groups/kipac/chto/package/gsl/gsl-2.5/wavelet +abs_top_builddir = /home/groups/kipac/chto/package/gsl/gsl-2.5 +abs_top_srcdir = /home/groups/kipac/chto/package/gsl/gsl-2.5 +ac_ct_AR = ar +ac_ct_CC = gcc +ac_ct_DUMPBIN = +am__include = include +am__leading_dot = . +am__quote = +am__tar = $${TAR-tar} chof - "$$tardir" +am__untar = $${TAR-tar} xf - +bindir = ${exec_prefix}/bin +build = x86_64-unknown-linux-gnu +build_alias = +build_cpu = x86_64 +build_os = linux-gnu +build_vendor = unknown +builddir = . +datadir = ${datarootdir} +datarootdir = ${prefix}/share +docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} +dvidir = ${docdir} +exec_prefix = ${prefix} +host = x86_64-unknown-linux-gnu +host_alias = +host_cpu = x86_64 +host_os = linux-gnu +host_vendor = unknown +htmldir = ${docdir} +includedir = ${prefix}/include +infodir = ${datarootdir}/info +install_sh = ${SHELL} /home/groups/kipac/chto/package/gsl/gsl-2.5/install-sh +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +localedir = ${datarootdir}/locale +localstatedir = ${prefix}/var +mandir = ${datarootdir}/man +mkdir_p = $(MKDIR_P) +oldincludedir = /usr/include +pdfdir = ${docdir} +prefix = /home/groups/kipac/chto/package/gsl/gsl_lib +program_transform_name = s,x,x, +psdir = ${docdir} +sbindir = ${exec_prefix}/sbin +sharedstatedir = ${prefix}/com +srcdir = . +sysconfdir = ${prefix}/etc +target_alias = +top_build_prefix = ../ +top_builddir = .. +top_srcdir = .. +noinst_LTLIBRARIES = libgslwavelet.la +pkginclude_HEADERS = gsl_wavelet.h gsl_wavelet2d.h +AM_CPPFLAGS = -I$(top_srcdir) +libgslwavelet_la_SOURCES = dwt.c wavelet.c bspline.c daubechies.c haar.c +TESTS = $(check_PROGRAMS) +test_LDADD = libgslwavelet.la ../blas/libgslblas.la ../cblas/libgslcblas.la ../matrix/libgslmatrix.la ../vector/libgslvector.la ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la +test_SOURCES = test.c +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu wavelet/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu wavelet/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: # $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): # $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libgslwavelet.la: $(libgslwavelet_la_OBJECTS) $(libgslwavelet_la_DEPENDENCIES) $(EXTRA_libgslwavelet_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(libgslwavelet_la_OBJECTS) $(libgslwavelet_la_LIBADD) $(LIBS) + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) $(EXTRA_test_DEPENDENCIES) + @rm -f test$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_OBJECTS) $(test_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +include ./$(DEPDIR)/bspline.Plo +include ./$(DEPDIR)/daubechies.Plo +include ./$(DEPDIR)/dwt.Plo +include ./$(DEPDIR)/haar.Plo +include ./$(DEPDIR)/test.Po +include ./$(DEPDIR)/wavelet.Plo + +.c.o: + $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# $(AM_V_CC)source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(COMPILE) -c $< + +.c.obj: + $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# $(AM_V_CC)source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: + $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +# $(AM_V_CC)source='$<' object='$@' libtool=yes \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-pkgincludeHEADERS: $(pkginclude_HEADERS) + @$(NORMAL_INSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \ + done + +uninstall-pkgincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + else \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_PROGRAMS) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +test.log: test$(EXEEXT) + @p='test$(EXEEXT)'; \ + b='test'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +#.test$(EXEEXT).log: +# @p='$<'; \ +# $(am__set_b); \ +# $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +# --log-file $$b.log --trs-file $$b.trs \ +# $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +# "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-am +all-am: Makefile $(LTLIBRARIES) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(pkgincludedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-pkgincludeHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-pkgincludeHEADERS + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES cscopelist-am ctags ctags-am distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-pkgincludeHEADERS \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + recheck tags tags-am uninstall uninstall-am \ + uninstall-pkgincludeHEADERS + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gsl-2.5/wavelet/Makefile.am b/gsl-2.5/wavelet/Makefile.am new file mode 100644 index 00000000..9da20d83 --- /dev/null +++ b/gsl-2.5/wavelet/Makefile.am @@ -0,0 +1,17 @@ +noinst_LTLIBRARIES = libgslwavelet.la + +pkginclude_HEADERS = gsl_wavelet.h gsl_wavelet2d.h + +AM_CPPFLAGS = -I$(top_srcdir) + +libgslwavelet_la_SOURCES = dwt.c wavelet.c bspline.c daubechies.c haar.c + +check_PROGRAMS = test + +TESTS = $(check_PROGRAMS) + +test_LDADD = libgslwavelet.la ../blas/libgslblas.la ../cblas/libgslcblas.la ../matrix/libgslmatrix.la ../vector/libgslvector.la ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la + +test_SOURCES = test.c + + diff --git a/gsl-2.5/wavelet/Makefile.in b/gsl-2.5/wavelet/Makefile.in new file mode 100644 index 00000000..26e7a7ac --- /dev/null +++ b/gsl-2.5/wavelet/Makefile.in @@ -0,0 +1,1031 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + + +VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +check_PROGRAMS = test$(EXEEXT) +subdir = wavelet +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp \ + $(pkginclude_HEADERS) $(top_srcdir)/test-driver ChangeLog TODO +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +libgslwavelet_la_LIBADD = +am_libgslwavelet_la_OBJECTS = dwt.lo wavelet.lo bspline.lo \ + daubechies.lo haar.lo +libgslwavelet_la_OBJECTS = $(am_libgslwavelet_la_OBJECTS) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +am_test_OBJECTS = test.$(OBJEXT) +test_OBJECTS = $(am_test_OBJECTS) +test_DEPENDENCIES = libgslwavelet.la ../blas/libgslblas.la \ + ../cblas/libgslcblas.la ../matrix/libgslmatrix.la \ + ../vector/libgslvector.la ../block/libgslblock.la \ + ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la \ + ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libgslwavelet_la_SOURCES) $(test_SOURCES) +DIST_SOURCES = $(libgslwavelet_la_SOURCES) $(test_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(pkgincludedir)" +HEADERS = $(pkginclude_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = @EXEEXT@ .test +LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +GSLCBLAS_LDFLAGS = @GSLCBLAS_LDFLAGS@ +GSL_CFLAGS = @GSL_CFLAGS@ +GSL_LDFLAGS = @GSL_LDFLAGS@ +GSL_LIBADD = @GSL_LIBADD@ +GSL_LIBM = @GSL_LIBM@ +GSL_LIBS = @GSL_LIBS@ +GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ +GSL_LT_VERSION = @GSL_LT_VERSION@ +GSL_MAJOR_VERSION = @GSL_MAJOR_VERSION@ +GSL_MINOR_VERSION = @GSL_MINOR_VERSION@ +HAVE_AIX_IEEE_INTERFACE = @HAVE_AIX_IEEE_INTERFACE@ +HAVE_DARWIN86_IEEE_INTERFACE = @HAVE_DARWIN86_IEEE_INTERFACE@ +HAVE_DARWIN_IEEE_INTERFACE = @HAVE_DARWIN_IEEE_INTERFACE@ +HAVE_FREEBSD_IEEE_INTERFACE = @HAVE_FREEBSD_IEEE_INTERFACE@ +HAVE_GNUM68K_IEEE_INTERFACE = @HAVE_GNUM68K_IEEE_INTERFACE@ +HAVE_GNUPPC_IEEE_INTERFACE = @HAVE_GNUPPC_IEEE_INTERFACE@ +HAVE_GNUSPARC_IEEE_INTERFACE = @HAVE_GNUSPARC_IEEE_INTERFACE@ +HAVE_GNUX86_IEEE_INTERFACE = @HAVE_GNUX86_IEEE_INTERFACE@ +HAVE_HPUX11_IEEE_INTERFACE = @HAVE_HPUX11_IEEE_INTERFACE@ +HAVE_HPUX_IEEE_INTERFACE = @HAVE_HPUX_IEEE_INTERFACE@ +HAVE_IRIX_IEEE_INTERFACE = @HAVE_IRIX_IEEE_INTERFACE@ +HAVE_NETBSD_IEEE_INTERFACE = @HAVE_NETBSD_IEEE_INTERFACE@ +HAVE_OPENBSD_IEEE_INTERFACE = @HAVE_OPENBSD_IEEE_INTERFACE@ +HAVE_OS2EMX_IEEE_INTERFACE = @HAVE_OS2EMX_IEEE_INTERFACE@ +HAVE_SOLARIS_IEEE_INTERFACE = @HAVE_SOLARIS_IEEE_INTERFACE@ +HAVE_SUNOS4_IEEE_INTERFACE = @HAVE_SUNOS4_IEEE_INTERFACE@ +HAVE_TRU64_IEEE_INTERFACE = @HAVE_TRU64_IEEE_INTERFACE@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBM = @LIBM@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +noinst_LTLIBRARIES = libgslwavelet.la +pkginclude_HEADERS = gsl_wavelet.h gsl_wavelet2d.h +AM_CPPFLAGS = -I$(top_srcdir) +libgslwavelet_la_SOURCES = dwt.c wavelet.c bspline.c daubechies.c haar.c +TESTS = $(check_PROGRAMS) +test_LDADD = libgslwavelet.la ../blas/libgslblas.la ../cblas/libgslcblas.la ../matrix/libgslmatrix.la ../vector/libgslvector.la ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la +test_SOURCES = test.c +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu wavelet/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu wavelet/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libgslwavelet.la: $(libgslwavelet_la_OBJECTS) $(libgslwavelet_la_DEPENDENCIES) $(EXTRA_libgslwavelet_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(libgslwavelet_la_OBJECTS) $(libgslwavelet_la_LIBADD) $(LIBS) + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) $(EXTRA_test_DEPENDENCIES) + @rm -f test$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_OBJECTS) $(test_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bspline.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/daubechies.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwt.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/haar.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wavelet.Plo@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-pkgincludeHEADERS: $(pkginclude_HEADERS) + @$(NORMAL_INSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \ + done + +uninstall-pkgincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + else \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_PROGRAMS) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +test.log: test$(EXEEXT) + @p='test$(EXEEXT)'; \ + b='test'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +@am__EXEEXT_TRUE@.test$(EXEEXT).log: +@am__EXEEXT_TRUE@ @p='$<'; \ +@am__EXEEXT_TRUE@ $(am__set_b); \ +@am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +@am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ +@am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +@am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-am +all-am: Makefile $(LTLIBRARIES) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(pkgincludedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-pkgincludeHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-pkgincludeHEADERS + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES cscopelist-am ctags ctags-am distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-pkgincludeHEADERS \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + recheck tags tags-am uninstall uninstall-am \ + uninstall-pkgincludeHEADERS + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gsl-2.5/wavelet/TODO b/gsl-2.5/wavelet/TODO new file mode 100644 index 00000000..52ced714 --- /dev/null +++ b/gsl-2.5/wavelet/TODO @@ -0,0 +1,14 @@ +# -*- org -*- +#+CATEGORY: wavelet + +* Implement more wavelet types: + Check the literature to find out what are commonly used types. Candidates + could be coiflets and symmlets. +** Coefficients for coiflets and symmlets found so far are only with a + precision of about eight digts. This is probaly insufficient. + +* Wavelet packet transform: + Should include utility functions for selecting the coefficients according + to "dwt-type", "best basis" or "best level". + +* Continuous wavelet transform. diff --git a/gsl-2.5/wavelet/bspline.c b/gsl-2.5/wavelet/bspline.c new file mode 100644 index 00000000..eef166e7 --- /dev/null +++ b/gsl-2.5/wavelet/bspline.c @@ -0,0 +1,591 @@ +/* wavelet/bspline.c + * + * Copyright (C) 2004 Ivo Alxneit + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Coefficients are from A. Cohen, I. Daubechies, and J.-C. Feauveau; + * "Biorthogonal Bases of Compactly Supported Wavelets", Communications + * on Pure and Applied Mathematics, 45 (1992) 485--560 (table 6.1). + * + * Note the following errors in table 1: + * + * N = 2, N~ = 4, m0~ + * the second term in z^-1 (45/64 z^-1) should be left out. + * + * N = 3, N~ = 7, m0~ + * the term 336z^-3 should read 363z^-3. + */ + +#include +#include +#include +#include + +static const double h1_103[6] = { -0.0883883476483184405501055452631, + 0.0883883476483184405501055452631, + M_SQRT1_2, + M_SQRT1_2, + 0.0883883476483184405501055452631, + -0.0883883476483184405501055452631 +}; + +static const double g2_103[6] = { -0.0883883476483184405501055452631, + -0.0883883476483184405501055452631, + M_SQRT1_2, + -(M_SQRT1_2), + 0.0883883476483184405501055452631, + 0.0883883476483184405501055452631 +}; + +static const double h1_105[10] = { 0.0165728151840597076031447897368, + -0.0165728151840597076031447897368, + -0.1215339780164378557563951247368, + 0.1215339780164378557563951247368, + M_SQRT1_2, + M_SQRT1_2, + 0.1215339780164378557563951247368, + -0.1215339780164378557563951247368, + -0.0165728151840597076031447897368, + 0.0165728151840597076031447897368 +}; + +static const double g2_105[10] = { 0.0165728151840597076031447897368, + 0.0165728151840597076031447897368, + -0.1215339780164378557563951247368, + -0.1215339780164378557563951247368, + M_SQRT1_2, + -(M_SQRT1_2), + 0.1215339780164378557563951247368, + 0.1215339780164378557563951247368, + -0.0165728151840597076031447897368, + -0.0165728151840597076031447897368 +}; + +static const double g1_1[10] = { 0.0, 0.0, 0.0, 0.0, + M_SQRT1_2, + -(M_SQRT1_2), + 0.0, 0.0, 0.0, 0.0 +}; + +static const double h2_1[10] = { 0.0, 0.0, 0.0, 0.0, + M_SQRT1_2, + M_SQRT1_2, + 0.0, 0.0, 0.0, 0.0 +}; + +static const double h1_202[6] = { -0.1767766952966368811002110905262, + 0.3535533905932737622004221810524, + 1.0606601717798212866012665431573, + 0.3535533905932737622004221810524, + -0.1767766952966368811002110905262, + 0.0 +}; + +static const double g2_202[6] = { 0.0, + -0.1767766952966368811002110905262, + -0.3535533905932737622004221810524, + 1.0606601717798212866012665431573, + -0.3535533905932737622004221810524, + -0.1767766952966368811002110905262 +}; + +static const double h1_204[10] = { 0.0331456303681194152062895794737, + -0.0662912607362388304125791589473, + -0.1767766952966368811002110905262, + 0.4198446513295125926130013399998, + 0.9943689110435824561886873842099, + 0.4198446513295125926130013399998, + -0.1767766952966368811002110905262, + -0.0662912607362388304125791589473, + 0.0331456303681194152062895794737, + 0.0 +}; + +static const double g2_204[10] = { 0.0, + 0.0331456303681194152062895794737, + 0.0662912607362388304125791589473, + -0.1767766952966368811002110905262, + -0.4198446513295125926130013399998, + 0.9943689110435824561886873842099, + -0.4198446513295125926130013399998, + -0.1767766952966368811002110905262, + 0.0662912607362388304125791589473, + 0.0331456303681194152062895794737 +}; + +static const double h1_206[14] = { -0.0069053396600248781679769957237, + 0.0138106793200497563359539914474, + 0.0469563096881691715422435709210, + -0.1077232986963880994204411332894, + -0.1698713556366120029322340948025, + 0.4474660099696121052849093228945, + 0.9667475524034829435167794013152, + 0.4474660099696121052849093228945, + -0.1698713556366120029322340948025, + -0.1077232986963880994204411332894, + 0.0469563096881691715422435709210, + 0.0138106793200497563359539914474, + -0.0069053396600248781679769957237, + 0.0 +}; + +static const double g2_206[14] = { 0.0, + -0.0069053396600248781679769957237, + -0.0138106793200497563359539914474, + 0.0469563096881691715422435709210, + 0.1077232986963880994204411332894, + -0.1698713556366120029322340948025, + -0.4474660099696121052849093228945, + 0.9667475524034829435167794013152, + -0.4474660099696121052849093228945, + -0.1698713556366120029322340948025, + 0.1077232986963880994204411332894, + 0.0469563096881691715422435709210, + -0.0138106793200497563359539914474, + -0.0069053396600248781679769957237, +}; + +static const double h1_208[18] = { 0.0015105430506304420992449678146, + -0.0030210861012608841984899356291, + -0.0129475118625466465649568669819, + 0.0289161098263541773284036695929, + 0.0529984818906909399392234421792, + -0.1349130736077360572068505539514, + -0.1638291834340902345352542235443, + 0.4625714404759165262773590010400, + 0.9516421218971785225243297231697, + 0.4625714404759165262773590010400, + -0.1638291834340902345352542235443, + -0.1349130736077360572068505539514, + 0.0529984818906909399392234421792, + 0.0289161098263541773284036695929, + -0.0129475118625466465649568669819, + -0.0030210861012608841984899356291, + 0.0015105430506304420992449678146, + 0.0 +}; + +static const double g2_208[18] = { 0.0, + 0.0015105430506304420992449678146, + 0.0030210861012608841984899356291, + -0.0129475118625466465649568669819, + -0.0289161098263541773284036695929, + 0.0529984818906909399392234421792, + 0.1349130736077360572068505539514, + -0.1638291834340902345352542235443, + -0.4625714404759165262773590010400, + 0.9516421218971785225243297231697, + -0.4625714404759165262773590010400, + -0.1638291834340902345352542235443, + 0.1349130736077360572068505539514, + 0.0529984818906909399392234421792, + -0.0289161098263541773284036695929, + -0.0129475118625466465649568669819, + 0.0030210861012608841984899356291, + 0.0015105430506304420992449678146, +}; + +static const double h2_2[18] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.3535533905932737622004221810524, + 0.7071067811865475244008443621048, + 0.3535533905932737622004221810524, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 +}; + +static const double g1_2[18] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + -0.3535533905932737622004221810524, + 0.7071067811865475244008443621048, + -0.3535533905932737622004221810524, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 +}; + +static const double h1_301[4] = { -0.3535533905932737622004221810524, + 1.0606601717798212866012665431573, + 1.0606601717798212866012665431573, + -0.3535533905932737622004221810524 +}; + +static const double g2_301[4] = { 0.3535533905932737622004221810524, + 1.0606601717798212866012665431573, + -1.0606601717798212866012665431573, + -0.3535533905932737622004221810524 +}; + +static const double h1_303[8] = { 0.0662912607362388304125791589473, + -0.1988737822087164912377374768420, + -0.1546796083845572709626847042104, + 0.9943689110435824561886873842099, + 0.9943689110435824561886873842099, + -0.1546796083845572709626847042104, + -0.1988737822087164912377374768420, + 0.0662912607362388304125791589473 +}; + +static const double g2_303[8] = { -0.0662912607362388304125791589473, + -0.1988737822087164912377374768420, + 0.1546796083845572709626847042104, + 0.9943689110435824561886873842099, + -0.9943689110435824561886873842099, + -0.1546796083845572709626847042104, + 0.1988737822087164912377374768420, + 0.0662912607362388304125791589473 +}; + +static const double h1_305[12] = { -0.0138106793200497563359539914474, + 0.0414320379601492690078619743421, + 0.0524805814161890740766251675000, + -0.2679271788089652729175074340788, + -0.0718155324642587329469607555263, + 0.9667475524034829435167794013152, + 0.9667475524034829435167794013152, + -0.0718155324642587329469607555263, + -0.2679271788089652729175074340788, + 0.0524805814161890740766251675000, + 0.0414320379601492690078619743421, + -0.0138106793200497563359539914474 +}; + +static const double g2_305[12] = { 0.0138106793200497563359539914474, + 0.0414320379601492690078619743421, + -0.0524805814161890740766251675000, + -0.2679271788089652729175074340788, + 0.0718155324642587329469607555263, + 0.9667475524034829435167794013152, + -0.9667475524034829435167794013152, + -0.0718155324642587329469607555263, + 0.2679271788089652729175074340788, + 0.0524805814161890740766251675000, + -0.0414320379601492690078619743421, + -0.0138106793200497563359539914474 +}; + +static const double h1_307[16] = { 0.0030210861012608841984899356291, + -0.0090632583037826525954698068873, + -0.0168317654213106405344439270765, + 0.0746639850740189951912512662623, + 0.0313329787073628846871956180962, + -0.3011591259228349991008967259990, + -0.0264992409453454699696117210896, + 0.9516421218971785225243297231697, + 0.9516421218971785225243297231697, + -0.0264992409453454699696117210896, + -0.3011591259228349991008967259990, + 0.0313329787073628846871956180962, + 0.0746639850740189951912512662623, + -0.0168317654213106405344439270765, + -0.0090632583037826525954698068873, + 0.0030210861012608841984899356291 +}; + +static const double g2_307[16] = { -0.0030210861012608841984899356291, + -0.0090632583037826525954698068873, + 0.0168317654213106405344439270765, + 0.0746639850740189951912512662623, + -0.0313329787073628846871956180962, + -0.3011591259228349991008967259990, + 0.0264992409453454699696117210896, + 0.9516421218971785225243297231697, + -0.9516421218971785225243297231697, + -0.0264992409453454699696117210896, + 0.3011591259228349991008967259990, + 0.0313329787073628846871956180962, + -0.0746639850740189951912512662623, + -0.0168317654213106405344439270765, + 0.0090632583037826525954698068873, + 0.0030210861012608841984899356291 +}; + +static const double h1_309[20] = { -0.0006797443727836989446602355165, + 0.0020392331183510968339807065496, + 0.0050603192196119810324706421788, + -0.0206189126411055346546938106687, + -0.0141127879301758447558029850103, + 0.0991347824942321571990197448581, + 0.0123001362694193142367090236328, + -0.3201919683607785695513833204624, + 0.0020500227115698857061181706055, + 0.9421257006782067372990864259380, + 0.9421257006782067372990864259380, + 0.0020500227115698857061181706055, + -0.3201919683607785695513833204624, + 0.0123001362694193142367090236328, + 0.0991347824942321571990197448581, + -0.0141127879301758447558029850103, + -0.0206189126411055346546938106687, + 0.0050603192196119810324706421788, + 0.0020392331183510968339807065496, + -0.0006797443727836989446602355165 +}; + +static const double g2_309[20] = { 0.0006797443727836989446602355165, + 0.0020392331183510968339807065496, + -0.0050603192196119810324706421788, + -0.0206189126411055346546938106687, + 0.0141127879301758447558029850103, + 0.0991347824942321571990197448581, + -0.0123001362694193142367090236328, + -0.3201919683607785695513833204624, + -0.0020500227115698857061181706055, + 0.9421257006782067372990864259380, + -0.9421257006782067372990864259380, + 0.0020500227115698857061181706055, + 0.3201919683607785695513833204624, + 0.0123001362694193142367090236328, + -0.0991347824942321571990197448581, + -0.0141127879301758447558029850103, + 0.0206189126411055346546938106687, + 0.0050603192196119810324706421788, + -0.0020392331183510968339807065496, + -0.0006797443727836989446602355165 +}; + +static const double h2_3[20] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.1767766952966368811002110905262, + 0.5303300858899106433006332715786, + 0.5303300858899106433006332715786, + 0.1767766952966368811002110905262, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 +}; + +static const double g1_3[20] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + -0.1767766952966368811002110905262, + 0.5303300858899106433006332715786, + -0.5303300858899106433006332715786, + 0.1767766952966368811002110905262, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 +}; + +static int +bspline_init (const double **h1, const double **g1, + const double **h2, const double **g2, size_t * nc, + size_t * offset, size_t member) +{ + switch (member) + { + case 103: + *nc = 6; + *h1 = h1_103; + *g1 = &g1_1[2]; + *h2 = &h2_1[2]; + *g2 = g2_103; + break; + + case 105: + *nc = 10; + *h1 = h1_105; + *g1 = g1_1; + *h2 = h2_1; + *g2 = g2_105; + break; + + case 202: + *nc = 6; + *h1 = h1_202; + *g1 = &g1_2[6]; + *h2 = &h2_2[6]; + *g2 = g2_202; + break; + + case 204: + *nc = 10; + *h1 = h1_204; + *g1 = &g1_2[4]; + *h2 = &h2_2[4]; + *g2 = g2_204; + break; + + case 206: + *nc = 14; + *h1 = h1_206; + *g1 = &g1_2[2]; + *h2 = &h2_2[2]; + *g2 = g2_206; + break; + + case 208: + *nc = 18; + *h1 = h1_208; + *g1 = g1_2; + *h2 = h2_2; + *g2 = g2_208; + break; + + case 301: + *nc = 4; + *h1 = h1_301; + *g1 = &g1_3[8]; + *h2 = &h2_3[8]; + *g2 = g2_301; + break; + + case 303: + *nc = 8; + *h1 = h1_303; + *g1 = &g1_3[6]; + *h2 = &h2_3[6]; + *g2 = g2_303; + break; + + case 305: + *nc = 12; + *h1 = h1_305; + *g1 = &g1_3[4]; + *h2 = &h2_3[4]; + *g2 = g2_305; + break; + + case 307: + *nc = 16; + *h1 = h1_307; + *g1 = &g1_3[2]; + *h2 = &h2_3[2]; + *g2 = g2_307; + break; + + case 309: + *nc = 20; + *h1 = h1_309; + *g1 = g1_3; + *h2 = h2_3; + *g2 = g2_309; + break; + + default: + return GSL_FAILURE; + } + + *offset = 0; + + return GSL_SUCCESS; +} + +static int +bspline_centered_init (const double **h1, const double **g1, + const double **h2, const double **g2, size_t * nc, + size_t * offset, size_t member) +{ + switch (member) + { + case 103: + *nc = 6; + *h1 = h1_103; + *g1 = &g1_1[2]; + *h2 = &h2_1[2]; + *g2 = g2_103; + break; + + case 105: + *nc = 10; + *h1 = h1_105; + *g1 = g1_1; + *h2 = h2_1; + *g2 = g2_105; + break; + + case 202: + *nc = 6; + *h1 = h1_202; + *g1 = &g1_2[6]; + *h2 = &h2_2[6]; + *g2 = g2_202; + break; + + case 204: + *nc = 10; + *h1 = h1_204; + *g1 = &g1_2[4]; + *h2 = &h2_2[4]; + *g2 = g2_204; + break; + + case 206: + *nc = 14; + *h1 = h1_206; + *g1 = &g1_2[2]; + *h2 = &h2_2[2]; + *g2 = g2_206; + break; + + case 208: + *nc = 18; + *h1 = h1_208; + *g1 = g1_2; + *h2 = h2_2; + *g2 = g2_208; + break; + + case 301: + *nc = 4; + *h1 = h1_301; + *g1 = &g1_3[8]; + *h2 = &h2_3[8]; + *g2 = g2_301; + break; + + case 303: + *nc = 8; + *h1 = h1_303; + *g1 = &g1_3[6]; + *h2 = &h2_3[6]; + *g2 = g2_303; + break; + + case 305: + *nc = 12; + *h1 = h1_305; + *g1 = &g1_3[4]; + *h2 = &h2_3[4]; + *g2 = g2_305; + break; + + case 307: + *nc = 16; + *h1 = h1_307; + *g1 = &g1_3[2]; + *h2 = &h2_3[2]; + *g2 = g2_307; + break; + + case 309: + *nc = 20; + *h1 = h1_309; + *g1 = g1_3; + *h2 = h2_3; + *g2 = g2_309; + break; + + default: + return GSL_FAILURE; + } + + *offset = ((*nc) >> 1); + + return GSL_SUCCESS; +} + +static const gsl_wavelet_type bspline_type = { + "bspline", + &bspline_init +}; + +static const gsl_wavelet_type bspline_centered_type = { + "bspline-centered", + &bspline_centered_init +}; + +const gsl_wavelet_type *gsl_wavelet_bspline = &bspline_type; +const gsl_wavelet_type *gsl_wavelet_bspline_centered = &bspline_centered_type; diff --git a/gsl-2.5/wavelet/bspline.lo b/gsl-2.5/wavelet/bspline.lo new file mode 100644 index 00000000..e2be9302 --- /dev/null +++ b/gsl-2.5/wavelet/bspline.lo @@ -0,0 +1,12 @@ +# bspline.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/bspline.o' + +# Name of the non-PIC object +non_pic_object='bspline.o' + diff --git a/gsl-2.5/wavelet/daubechies.c b/gsl-2.5/wavelet/daubechies.c new file mode 100644 index 00000000..8b1b8107 --- /dev/null +++ b/gsl-2.5/wavelet/daubechies.c @@ -0,0 +1,458 @@ +/* wavelet/daubechies.c + * + * Copyright (C) 2004 Ivo Alxneit + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* + * Coefficients for Daubechies wavelets of extremal phase are from + * I. Daubechies, "Orthonormal Bases of Compactly Supported Wavelets", + * Communications on Pure and Applied Mathematics, 41 (1988) 909--996 + * (table 1). + * Additional digits have been obtained using the Mathematica package + * Daubechies.m by Tong Chen & Meng Xu available at + * http://www.cwp.mines.edu/wavelets/. + */ + +#include +#include +#include + +static const double h_4[4] = { 0.48296291314453414337487159986, + 0.83651630373780790557529378092, + 0.22414386804201338102597276224, + -0.12940952255126038117444941881 +}; + +static const double g_4[4] = { -0.12940952255126038117444941881, + -0.22414386804201338102597276224, + 0.83651630373780790557529378092, + -0.48296291314453414337487159986 +}; + +static const double h_6[6] = { 0.33267055295008261599851158914, + 0.80689150931109257649449360409, + 0.45987750211849157009515194215, + -0.13501102001025458869638990670, + -0.08544127388202666169281916918, + 0.03522629188570953660274066472 +}; + +static const double g_6[6] = { 0.03522629188570953660274066472, + 0.08544127388202666169281916918, + -0.13501102001025458869638990670, + -0.45987750211849157009515194215, + 0.80689150931109257649449360409, + -0.33267055295008261599851158914 +}; + +static const double h_8[8] = { 0.23037781330889650086329118304, + 0.71484657055291564708992195527, + 0.63088076792985890788171633830, + -0.02798376941685985421141374718, + -0.18703481171909308407957067279, + 0.03084138183556076362721936253, + 0.03288301166688519973540751355, + -0.01059740178506903210488320852 +}; + +static const double g_8[8] = { -0.01059740178506903210488320852, + -0.03288301166688519973540751355, + 0.03084138183556076362721936253, + 0.18703481171909308407957067279, + -0.02798376941685985421141374718, + -0.63088076792985890788171633830, + 0.71484657055291564708992195527, + -0.23037781330889650086329118304 +}; + +static const double h_10[10] = { 0.16010239797419291448072374802, + 0.60382926979718967054011930653, + 0.72430852843777292772807124410, + 0.13842814590132073150539714634, + -0.24229488706638203186257137947, + -0.03224486958463837464847975506, + 0.07757149384004571352313048939, + -0.00624149021279827427419051911, + -0.01258075199908199946850973993, + 0.00333572528547377127799818342 +}; + +static const double g_10[10] = { 0.00333572528547377127799818342, + 0.01258075199908199946850973993, + -0.00624149021279827427419051911, + -0.07757149384004571352313048939, + -0.03224486958463837464847975506, + 0.24229488706638203186257137947, + 0.13842814590132073150539714634, + -0.72430852843777292772807124410, + 0.60382926979718967054011930653, + -0.16010239797419291448072374802 +}; + +static const double h_12[12] = { 0.11154074335010946362132391724, + 0.49462389039845308567720417688, + 0.75113390802109535067893449844, + 0.31525035170919762908598965481, + -0.22626469396543982007631450066, + -0.12976686756726193556228960588, + 0.09750160558732304910234355254, + 0.02752286553030572862554083950, + -0.03158203931748602956507908070, + 0.00055384220116149613925191840, + 0.00477725751094551063963597525, + -0.00107730108530847956485262161 +}; + +static const double g_12[12] = { -0.00107730108530847956485262161, + -0.00477725751094551063963597525, + 0.00055384220116149613925191840, + 0.03158203931748602956507908070, + 0.02752286553030572862554083950, + -0.09750160558732304910234355254, + -0.12976686756726193556228960588, + 0.22626469396543982007631450066, + 0.31525035170919762908598965481, + -0.75113390802109535067893449844, + 0.49462389039845308567720417688, + -0.11154074335010946362132391724 +}; + +static const double h_14[14] = { 0.07785205408500917901996352196, + 0.39653931948191730653900039094, + 0.72913209084623511991694307034, + 0.46978228740519312247159116097, + -0.14390600392856497540506836221, + -0.22403618499387498263814042023, + 0.07130921926683026475087657050, + 0.08061260915108307191292248036, + -0.03802993693501441357959206160, + -0.01657454163066688065410767489, + 0.01255099855609984061298988603, + 0.00042957797292136652113212912, + -0.00180164070404749091526826291, + 0.00035371379997452024844629584 +}; + +static const double g_14[14] = { 0.00035371379997452024844629584, + 0.00180164070404749091526826291, + 0.00042957797292136652113212912, + -0.01255099855609984061298988603, + -0.01657454163066688065410767489, + 0.03802993693501441357959206160, + 0.08061260915108307191292248036, + -0.07130921926683026475087657050, + -0.22403618499387498263814042023, + 0.14390600392856497540506836221, + 0.46978228740519312247159116097, + -0.72913209084623511991694307034, + 0.39653931948191730653900039094, + -0.07785205408500917901996352196 +}; + +static const double h_16[16] = { 0.05441584224310400995500940520, + 0.31287159091429997065916237551, + 0.67563073629728980680780076705, + 0.58535468365420671277126552005, + -0.01582910525634930566738054788, + -0.28401554296154692651620313237, + 0.00047248457391328277036059001, + 0.12874742662047845885702928751, + -0.01736930100180754616961614887, + -0.04408825393079475150676372324, + 0.01398102791739828164872293057, + 0.00874609404740577671638274325, + -0.00487035299345157431042218156, + -0.00039174037337694704629808036, + 0.00067544940645056936636954757, + -0.00011747678412476953373062823 +}; + +static const double g_16[16] = { -0.00011747678412476953373062823, + -0.00067544940645056936636954757, + -0.00039174037337694704629808036, + 0.00487035299345157431042218156, + 0.00874609404740577671638274325, + -0.01398102791739828164872293057, + -0.04408825393079475150676372324, + 0.01736930100180754616961614887, + 0.12874742662047845885702928751, + -0.00047248457391328277036059001, + -0.28401554296154692651620313237, + 0.01582910525634930566738054788, + 0.58535468365420671277126552005, + -0.67563073629728980680780076705, + 0.31287159091429997065916237551, + -0.05441584224310400995500940520 +}; + +static const double h_18[18] = { 0.03807794736387834658869765888, + 0.24383467461259035373204158165, + 0.60482312369011111190307686743, + 0.65728807805130053807821263905, + 0.13319738582500757619095494590, + -0.29327378327917490880640319524, + -0.09684078322297646051350813354, + 0.14854074933810638013507271751, + 0.03072568147933337921231740072, + -0.06763282906132997367564227483, + 0.00025094711483145195758718975, + 0.02236166212367909720537378270, + -0.00472320475775139727792570785, + -0.00428150368246342983449679500, + 0.00184764688305622647661912949, + 0.00023038576352319596720521639, + -0.00025196318894271013697498868, + 0.00003934732031627159948068988 +}; + +static const double g_18[18] = { 0.00003934732031627159948068988, + 0.00025196318894271013697498868, + 0.00023038576352319596720521639, + -0.00184764688305622647661912949, + -0.00428150368246342983449679500, + 0.00472320475775139727792570785, + 0.02236166212367909720537378270, + -0.00025094711483145195758718975, + -0.06763282906132997367564227483, + -0.03072568147933337921231740072, + 0.14854074933810638013507271751, + 0.09684078322297646051350813354, + -0.29327378327917490880640319524, + -0.13319738582500757619095494590, + 0.65728807805130053807821263905, + -0.60482312369011111190307686743, + 0.24383467461259035373204158165, + -0.03807794736387834658869765888 +}; + +static const double h_20[20] = { 0.02667005790055555358661744877, + 0.18817680007769148902089297368, + 0.52720118893172558648174482796, + 0.68845903945360356574187178255, + 0.28117234366057746074872699845, + -0.24984642432731537941610189792, + -0.19594627437737704350429925432, + 0.12736934033579326008267723320, + 0.09305736460357235116035228984, + -0.07139414716639708714533609308, + -0.02945753682187581285828323760, + 0.03321267405934100173976365318, + 0.00360655356695616965542329142, + -0.01073317548333057504431811411, + 0.00139535174705290116578931845, + 0.00199240529518505611715874224, + -0.00068585669495971162656137098, + -0.00011646685512928545095148097, + 0.00009358867032006959133405013, + -0.00001326420289452124481243668 +}; + +static const double g_20[20] = { -0.00001326420289452124481243668, + -0.00009358867032006959133405013, + -0.00011646685512928545095148097, + 0.00068585669495971162656137098, + 0.00199240529518505611715874224, + -0.00139535174705290116578931845, + -0.01073317548333057504431811411, + -0.00360655356695616965542329142, + 0.03321267405934100173976365318, + 0.02945753682187581285828323760, + -0.07139414716639708714533609308, + -0.09305736460357235116035228984, + 0.12736934033579326008267723320, + 0.19594627437737704350429925432, + -0.24984642432731537941610189792, + -0.28117234366057746074872699845, + 0.68845903945360356574187178255, + -0.52720118893172558648174482796, + 0.18817680007769148902089297368, + -0.02667005790055555358661744877 +}; + +static int +daubechies_init (const double **h1, const double **g1, const double **h2, + const double **g2, size_t * nc, size_t * offset, + size_t member) +{ + switch (member) + { + case 4: + *h1 = h_4; + *g1 = g_4; + *h2 = h_4; + *g2 = g_4; + break; + + case 6: + *h1 = h_6; + *g1 = g_6; + *h2 = h_6; + *g2 = g_6; + break; + + case 8: + *h1 = h_8; + *g1 = g_8; + *h2 = h_8; + *g2 = g_8; + break; + + case 10: + *h1 = h_10; + *g1 = g_10; + *h2 = h_10; + *g2 = g_10; + break; + + case 12: + *h1 = h_12; + *g1 = g_12; + *h2 = h_12; + *g2 = g_12; + break; + + case 14: + *h1 = h_14; + *g1 = g_14; + *h2 = h_14; + *g2 = g_14; + break; + + case 16: + *h1 = h_16; + *g1 = g_16; + *h2 = h_16; + *g2 = g_16; + break; + + case 18: + *h1 = h_18; + *g1 = g_18; + *h2 = h_18; + *g2 = g_18; + break; + + case 20: + *h1 = h_20; + *g1 = g_20; + *h2 = h_20; + *g2 = g_20; + break; + + default: + return GSL_FAILURE; + } + + *nc = member; + *offset = 0; + + return GSL_SUCCESS; +} + +static int +daubechies_centered_init (const double **h1, const double **g1, + const double **h2, const double **g2, size_t * nc, + size_t * offset, size_t member) +{ + switch (member) + { + case 4: + *h1 = h_4; + *g1 = g_4; + *h2 = h_4; + *g2 = g_4; + break; + + case 6: + *h1 = h_6; + *g1 = g_6; + *h2 = h_6; + *g2 = g_6; + break; + + case 8: + *h1 = h_8; + *g1 = g_8; + *h2 = h_8; + *g2 = g_8; + break; + + case 10: + *h1 = h_10; + *g1 = g_10; + *h2 = h_10; + *g2 = g_10; + break; + + case 12: + *h1 = h_12; + *g1 = g_12; + *h2 = h_12; + *g2 = g_12; + break; + + case 14: + *h1 = h_14; + *g1 = g_14; + *h2 = h_14; + *g2 = g_14; + break; + + case 16: + *h1 = h_16; + *g1 = g_16; + *h2 = h_16; + *g2 = g_16; + break; + + case 18: + *h1 = h_18; + *g1 = g_18; + *h2 = h_18; + *g2 = g_18; + break; + + case 20: + *h1 = h_20; + *g1 = g_20; + *h2 = h_20; + *g2 = g_20; + break; + + default: + return GSL_FAILURE; + } + + *nc = member; + *offset = (member >> 1); + + return GSL_SUCCESS; +} + +static const gsl_wavelet_type daubechies_type = { + "daubechies", + &daubechies_init +}; + +static const gsl_wavelet_type daubechies_centered_type = { + "daubechies-centered", + &daubechies_centered_init +}; + +const gsl_wavelet_type *gsl_wavelet_daubechies = &daubechies_type; +const gsl_wavelet_type *gsl_wavelet_daubechies_centered = + &daubechies_centered_type; diff --git a/gsl-2.5/wavelet/daubechies.lo b/gsl-2.5/wavelet/daubechies.lo new file mode 100644 index 00000000..489cea9f --- /dev/null +++ b/gsl-2.5/wavelet/daubechies.lo @@ -0,0 +1,12 @@ +# daubechies.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/daubechies.o' + +# Name of the non-PIC object +non_pic_object='daubechies.o' + diff --git a/gsl-2.5/wavelet/dwt.c b/gsl-2.5/wavelet/dwt.c new file mode 100644 index 00000000..519e9553 --- /dev/null +++ b/gsl-2.5/wavelet/dwt.c @@ -0,0 +1,396 @@ +/* wavelet/dwt.c + * + * Copyright (C) 2004 Ivo Alxneit + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* function dwt_step is based on the public domain function pwt.c + * available from http://www.numerical-recipes.com + */ + +#include +#include +#include +#include + +#define ELEMENT(a,stride,i) ((a)[(stride)*(i)]) + +static int binary_logn (const size_t n); +static void dwt_step (const gsl_wavelet * w, double *a, size_t stride, size_t n, gsl_wavelet_direction dir, gsl_wavelet_workspace * work); + +static int +binary_logn (const size_t n) +{ + size_t ntest; + size_t logn = 0; + size_t k = 1; + + while (k < n) + { + k *= 2; + logn++; + } + + ntest = ((size_t)1 << logn); + + if (n != ntest) + { + return -1; /* n is not a power of 2 */ + } + + return logn; +} + +static void +dwt_step (const gsl_wavelet * w, double *a, size_t stride, size_t n, + gsl_wavelet_direction dir, gsl_wavelet_workspace * work) +{ + double ai, ai1; + size_t i, ii; + size_t jf; + size_t k; + size_t n1, ni, nh, nmod; + + for (i = 0; i < work->n; i++) + { + work->scratch[i] = 0.0; + } + + nmod = w->nc * n; + nmod -= w->offset; /* center support */ + + n1 = n - 1; + nh = n >> 1; + + if (dir == gsl_wavelet_forward) + { + for (ii = 0, i = 0; i < n; i += 2, ii++) + { + double h = 0, g = 0; + + ni = i + nmod; + + for (k = 0; k < w->nc; k++) + { + jf = n1 & (ni + k); + h += w->h1[k] * ELEMENT (a, stride, jf); + g += w->g1[k] * ELEMENT (a, stride, jf); + } + + work->scratch[ii] += h; + work->scratch[ii + nh] += g; + } + } + else + { + for (ii = 0, i = 0; i < n; i += 2, ii++) + { + ai = ELEMENT (a, stride, ii); + ai1 = ELEMENT (a, stride, ii + nh); + ni = i + nmod; + for (k = 0; k < w->nc; k++) + { + jf = (n1 & (ni + k)); + work->scratch[jf] += (w->h2[k] * ai + w->g2[k] * ai1); + } + } + } + + for (i = 0; i < n; i++) + { + ELEMENT (a, stride, i) = work->scratch[i]; + } +} + +int +gsl_wavelet_transform (const gsl_wavelet * w, + double *data, size_t stride, size_t n, + gsl_wavelet_direction dir, + gsl_wavelet_workspace * work) +{ + size_t i; + + if (work->n < n) + { + GSL_ERROR ("not enough workspace provided", GSL_EINVAL); + } + + if (binary_logn (n) == -1) + { + GSL_ERROR ("n is not a power of 2", GSL_EINVAL); + } + + if (n < 2) + { + return GSL_SUCCESS; + } + + if (dir == gsl_wavelet_forward) + { + for (i = n; i >= 2; i >>= 1) + { + dwt_step (w, data, stride, i, dir, work); + } + } + else + { + for (i = 2; i <= n; i <<= 1) + { + dwt_step (w, data, stride, i, dir, work); + } + } + + return GSL_SUCCESS; +} + +int +gsl_wavelet_transform_forward (const gsl_wavelet * w, + double *data, size_t stride, size_t n, + gsl_wavelet_workspace * work) +{ + return gsl_wavelet_transform (w, data, stride, n, gsl_wavelet_forward, work); +} + +int +gsl_wavelet_transform_inverse (const gsl_wavelet * w, + double *data, size_t stride, size_t n, + gsl_wavelet_workspace * work) +{ + return gsl_wavelet_transform (w, data, stride, n, gsl_wavelet_backward, work); +} + + +/* Leaving this out for now BJG */ +#if 0 +int +gsl_dwt_vector (const gsl_wavelet * w, gsl_vector *v, gsl_wavelet_direction + dir, gsl_wavelet_workspace * work) +{ + return gsl_dwt (w, v->data, v->stride, v->size, dir, work); +} +#endif + +int +gsl_wavelet2d_transform (const gsl_wavelet * w, + double *data, size_t tda, size_t size1, + size_t size2, gsl_wavelet_direction dir, + gsl_wavelet_workspace * work) +{ + size_t i; + + if (size1 != size2) + { + GSL_ERROR ("2d dwt works only with square matrix", GSL_EINVAL); + } + + if (work->n < size1) + { + GSL_ERROR ("not enough workspace provided", GSL_EINVAL); + } + + if (binary_logn (size1) == -1) + { + GSL_ERROR ("n is not a power of 2", GSL_EINVAL); + } + + if (size1 < 2) + { + return GSL_SUCCESS; + } + + if (dir == gsl_wavelet_forward) + { + for (i = 0; i < size1; i++) /* for every row j */ + { + gsl_wavelet_transform (w, &ELEMENT(data, tda, i), 1, size1, dir, work); + } + for (i = 0; i < size2; i++) /* for every column j */ + { + gsl_wavelet_transform (w, &ELEMENT(data, 1, i), tda, size2, dir, work); + } + } + else + { + for (i = 0; i < size2; i++) /* for every column j */ + { + gsl_wavelet_transform (w, &ELEMENT(data, 1, i), tda, size2, dir, work); + } + for (i = 0; i < size1; i++) /* for every row j */ + { + gsl_wavelet_transform (w, &ELEMENT(data, tda, i), 1, size1, dir, work); + } + } + + return GSL_SUCCESS; +} + +int +gsl_wavelet2d_nstransform (const gsl_wavelet * w, + double *data, size_t tda, size_t size1, + size_t size2, gsl_wavelet_direction dir, + gsl_wavelet_workspace * work) +{ + size_t i, j; + + if (size1 != size2) + { + GSL_ERROR ("2d dwt works only with square matrix", GSL_EINVAL); + } + + if (work->n < size1) + { + GSL_ERROR ("not enough workspace provided", GSL_EINVAL); + } + + if (binary_logn (size1) == -1) + { + GSL_ERROR ("n is not a power of 2", GSL_EINVAL); + } + + if (size1 < 2) + { + return GSL_SUCCESS; + } + + if (dir == gsl_wavelet_forward) + { + for (i = size1; i >= 2; i >>= 1) + { + for (j = 0; j < i; j++) /* for every row j */ + { + dwt_step (w, &ELEMENT(data, tda, j), 1, i, dir, work); + } + for (j = 0; j < i; j++) /* for every column j */ + { + dwt_step (w, &ELEMENT(data, 1, j), tda, i, dir, work); + } + } + } + else + { + for (i = 2; i <= size1; i <<= 1) + { + for (j = 0; j < i; j++) /* for every column j */ + { + dwt_step (w, &ELEMENT(data, 1, j), tda, i, dir, work); + } + for (j = 0; j < i; j++) /* for every row j */ + { + dwt_step (w, &ELEMENT(data, tda, j), 1, i, dir, work); + } + } + } + + return GSL_SUCCESS; +} + + +int +gsl_wavelet2d_transform_forward (const gsl_wavelet * w, + double *data, size_t tda, size_t size1, + size_t size2, gsl_wavelet_workspace * work) +{ + return gsl_wavelet2d_transform (w, data, tda, size1, size2, gsl_wavelet_forward, work); +} + +int +gsl_wavelet2d_transform_inverse (const gsl_wavelet * w, + double *data, size_t tda, size_t size1, + size_t size2, gsl_wavelet_workspace * work) +{ + return gsl_wavelet2d_transform (w, data, tda, size1, size2, gsl_wavelet_backward, work); +} + +int +gsl_wavelet2d_nstransform_forward (const gsl_wavelet * w, + double *data, size_t tda, size_t size1, + size_t size2, gsl_wavelet_workspace * work) +{ + return gsl_wavelet2d_nstransform (w, data, tda, size1, size2, gsl_wavelet_forward, work); +} + +int +gsl_wavelet2d_nstransform_inverse (const gsl_wavelet * w, + double *data, size_t tda, size_t size1, + size_t size2, gsl_wavelet_workspace * work) +{ + return gsl_wavelet2d_nstransform (w, data, tda, size1, size2, gsl_wavelet_backward, work); +} + + +int +gsl_wavelet2d_transform_matrix (const gsl_wavelet * w, + gsl_matrix * a, + gsl_wavelet_direction dir, + gsl_wavelet_workspace * work) +{ + return gsl_wavelet2d_transform (w, a->data, + a->tda, a->size1, a->size2, + dir, work); +} + +int +gsl_wavelet2d_transform_matrix_forward (const gsl_wavelet * w, + gsl_matrix * a, + gsl_wavelet_workspace * work) +{ + return gsl_wavelet2d_transform (w, a->data, + a->tda, a->size1, a->size2, + gsl_wavelet_forward, work); +} + +int +gsl_wavelet2d_transform_matrix_inverse (const gsl_wavelet * w, + gsl_matrix * a, + gsl_wavelet_workspace * work) +{ + return gsl_wavelet2d_transform (w, a->data, + a->tda, a->size1, a->size2, + gsl_wavelet_backward, work); +} + +int +gsl_wavelet2d_nstransform_matrix (const gsl_wavelet * w, + gsl_matrix * a, + gsl_wavelet_direction dir, + gsl_wavelet_workspace * work) +{ + return gsl_wavelet2d_nstransform (w, a->data, + a->tda, a->size1, a->size2, + dir, work); +} + +int +gsl_wavelet2d_nstransform_matrix_forward (const gsl_wavelet * w, + gsl_matrix * a, + gsl_wavelet_workspace * work) +{ + return gsl_wavelet2d_nstransform (w, a->data, + a->tda, a->size1, a->size2, + gsl_wavelet_forward, work); +} + +int +gsl_wavelet2d_nstransform_matrix_inverse (const gsl_wavelet * w, + gsl_matrix * a, + gsl_wavelet_workspace * work) +{ + return gsl_wavelet2d_nstransform (w, a->data, + a->tda, a->size1, a->size2, + gsl_wavelet_backward, work); +} + + diff --git a/gsl-2.5/wavelet/dwt.lo b/gsl-2.5/wavelet/dwt.lo new file mode 100644 index 00000000..fd4dd9cd --- /dev/null +++ b/gsl-2.5/wavelet/dwt.lo @@ -0,0 +1,12 @@ +# dwt.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/dwt.o' + +# Name of the non-PIC object +non_pic_object='dwt.o' + diff --git a/gsl-2.5/wavelet/gsl_wavelet.h b/gsl-2.5/wavelet/gsl_wavelet.h new file mode 100644 index 00000000..5e1ec2b2 --- /dev/null +++ b/gsl-2.5/wavelet/gsl_wavelet.h @@ -0,0 +1,100 @@ +/* wavelet/gsl_wavelet.h + * + * Copyright (C) 2004 Ivo Alxneit + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_WAVELET_H__ +#define __GSL_WAVELET_H__ +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +typedef enum { + gsl_wavelet_forward = 1, gsl_wavelet_backward = -1 +} +gsl_wavelet_direction; + +typedef struct +{ + const char *name; + int (*init) (const double **h1, const double **g1, + const double **h2, const double **g2, size_t * nc, + size_t * offset, size_t member); +} +gsl_wavelet_type; + +typedef struct +{ + const gsl_wavelet_type *type; + const double *h1; + const double *g1; + const double *h2; + const double *g2; + size_t nc; + size_t offset; +} +gsl_wavelet; + +typedef struct +{ + double *scratch; + size_t n; +} +gsl_wavelet_workspace; + +GSL_VAR const gsl_wavelet_type *gsl_wavelet_daubechies; +GSL_VAR const gsl_wavelet_type *gsl_wavelet_daubechies_centered; +GSL_VAR const gsl_wavelet_type *gsl_wavelet_haar; +GSL_VAR const gsl_wavelet_type *gsl_wavelet_haar_centered; +GSL_VAR const gsl_wavelet_type *gsl_wavelet_bspline; +GSL_VAR const gsl_wavelet_type *gsl_wavelet_bspline_centered; + +gsl_wavelet *gsl_wavelet_alloc (const gsl_wavelet_type * T, size_t k); +void gsl_wavelet_free (gsl_wavelet * w); +const char *gsl_wavelet_name (const gsl_wavelet * w); + +gsl_wavelet_workspace *gsl_wavelet_workspace_alloc (size_t n); +void gsl_wavelet_workspace_free (gsl_wavelet_workspace * work); + +int gsl_wavelet_transform (const gsl_wavelet * w, + double *data, size_t stride, size_t n, + gsl_wavelet_direction dir, + gsl_wavelet_workspace * work); + +int gsl_wavelet_transform_forward (const gsl_wavelet * w, + double *data, size_t stride, size_t n, + gsl_wavelet_workspace * work); + +int gsl_wavelet_transform_inverse (const gsl_wavelet * w, + double *data, size_t stride, size_t n, + gsl_wavelet_workspace * work); + +__END_DECLS + +#endif /* __GSL_WAVELET_H__ */ diff --git a/gsl-2.5/wavelet/gsl_wavelet2d.h b/gsl-2.5/wavelet/gsl_wavelet2d.h new file mode 100644 index 00000000..173f43e2 --- /dev/null +++ b/gsl-2.5/wavelet/gsl_wavelet2d.h @@ -0,0 +1,107 @@ +/* wavelet/gsl_wavelet.h + * + * Copyright (C) 2004 Ivo Alxneit + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_WAVELET2D_H__ +#define __GSL_WAVELET2D_H__ +#include +#include +#include +#include +#include + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +int gsl_wavelet2d_transform (const gsl_wavelet * w, + double *data, + size_t tda, size_t size1, size_t size2, + gsl_wavelet_direction dir, + gsl_wavelet_workspace * work); + +int gsl_wavelet2d_transform_forward (const gsl_wavelet * w, + double *data, + size_t tda, size_t size1, size_t size2, + gsl_wavelet_workspace * work); + +int gsl_wavelet2d_transform_inverse (const gsl_wavelet * w, + double *data, + size_t tda, size_t size1, size_t size2, + gsl_wavelet_workspace * work); + +int gsl_wavelet2d_nstransform (const gsl_wavelet * w, + double *data, + size_t tda, size_t size1, size_t size2, + gsl_wavelet_direction dir, + gsl_wavelet_workspace * work); + +int gsl_wavelet2d_nstransform_forward (const gsl_wavelet * w, + double *data, + size_t tda, size_t size1, size_t size2, + gsl_wavelet_workspace * work); + +int gsl_wavelet2d_nstransform_inverse (const gsl_wavelet * w, + double *data, + size_t tda, size_t size1, size_t size2, + gsl_wavelet_workspace * work); + +int +gsl_wavelet2d_transform_matrix (const gsl_wavelet * w, + gsl_matrix * a, + gsl_wavelet_direction dir, + gsl_wavelet_workspace * work); + +int +gsl_wavelet2d_transform_matrix_forward (const gsl_wavelet * w, + gsl_matrix * a, + gsl_wavelet_workspace * work); + +int +gsl_wavelet2d_transform_matrix_inverse (const gsl_wavelet * w, + gsl_matrix * a, + gsl_wavelet_workspace * work); + + +int +gsl_wavelet2d_nstransform_matrix (const gsl_wavelet * w, + gsl_matrix * a, + gsl_wavelet_direction dir, + gsl_wavelet_workspace * work); + +int +gsl_wavelet2d_nstransform_matrix_forward (const gsl_wavelet * w, + gsl_matrix * a, + gsl_wavelet_workspace * work); + +int +gsl_wavelet2d_nstransform_matrix_inverse (const gsl_wavelet * w, + gsl_matrix * a, + gsl_wavelet_workspace * work); + +__END_DECLS + +#endif /* __GSL_WAVELET2D_H__ */ diff --git a/gsl-2.5/wavelet/haar.c b/gsl-2.5/wavelet/haar.c new file mode 100644 index 00000000..5d2e3246 --- /dev/null +++ b/gsl-2.5/wavelet/haar.c @@ -0,0 +1,81 @@ +/* wavelet/haar.c + * + * Copyright (C) 2004 Ivo Alxneit + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include + +static const double ch_2[2] = { M_SQRT1_2, M_SQRT1_2 }; +static const double cg_2[2] = { M_SQRT1_2, -(M_SQRT1_2) }; + +static int +haar_init (const double **h1, const double **g1, const double **h2, + const double **g2, size_t * nc, size_t * offset, + const size_t member) +{ + if (member != 2) + { + return GSL_FAILURE; + } + + *h1 = ch_2; + *g1 = cg_2; + *h2 = ch_2; + *g2 = cg_2; + + *nc = 2; + *offset = 0; + + return GSL_SUCCESS; +} + +static int +haar_centered_init (const double **h1, const double **g1, const double **h2, + const double **g2, size_t * nc, size_t * offset, + const size_t member) +{ + if (member != 2) + { + return GSL_FAILURE; + } + + *h1 = ch_2; + *g1 = cg_2; + *h2 = ch_2; + *g2 = cg_2; + + *nc = 2; + *offset = 1; + + return GSL_SUCCESS; +} + +static const gsl_wavelet_type haar_type = { + "haar", + &haar_init +}; + +static const gsl_wavelet_type haar_centered_type = { + "haar-centered", + &haar_centered_init +}; + +const gsl_wavelet_type *gsl_wavelet_haar = &haar_type; +const gsl_wavelet_type *gsl_wavelet_haar_centered = &haar_centered_type; diff --git a/gsl-2.5/wavelet/haar.lo b/gsl-2.5/wavelet/haar.lo new file mode 100644 index 00000000..42bb1300 --- /dev/null +++ b/gsl-2.5/wavelet/haar.lo @@ -0,0 +1,12 @@ +# haar.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/haar.o' + +# Name of the non-PIC object +non_pic_object='haar.o' + diff --git a/gsl-2.5/wavelet/libgslwavelet.la b/gsl-2.5/wavelet/libgslwavelet.la new file mode 100644 index 00000000..949a3a17 --- /dev/null +++ b/gsl-2.5/wavelet/libgslwavelet.la @@ -0,0 +1,41 @@ +# libgslwavelet.la - a libtool library file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='' + +# Names of this library. +library_names='' + +# The name of the static archive. +old_library='libgslwavelet.a' + +# Linker flags that can not go in dependency_libs. +inherited_linker_flags='' + +# Libraries that this one depends upon. +dependency_libs=' -lm' + +# Names of additional weak libraries provided by this library +weak_library_names='' + +# Version information for libgslwavelet. +current= +age= +revision= + +# Is this an already installed library? +installed=no + +# Should we warn about portability when linking against -modules? +shouldnotlink=no + +# Files to dlopen/dlpreopen +dlopen='' +dlpreopen='' + +# Directory that this library needs to be installed in: +libdir='' diff --git a/gsl-2.5/wavelet/test b/gsl-2.5/wavelet/test new file mode 100755 index 00000000..cf32121e --- /dev/null +++ b/gsl-2.5/wavelet/test @@ -0,0 +1,228 @@ +#! /bin/sh + +# test - temporary wrapper script for .libs/test +# Generated by libtool (GNU libtool) 2.4.2 +# +# The test program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s/\([`"$\\]\)/\\\1/g' + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command="(cd /home/groups/kipac/chto/package/gsl/gsl-2.5/wavelet; LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LIBRARY_PATH; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; LD_LIBRARY_PATH=/share/software/user/open/curl/7.54.0/lib:/share/software/user/open/libressl/2.5.3/lib:/home/users/chto/lib/fftw/include:/home/users/chto/lib/fftw/lib:/home/users/chto/lib/healpix/lib:/home/users/chto/lib/namaster/lib:/home/users/chto/lib/cfitsio/lib:/home/users/chto/include:/home/users/chto/cpp/lib:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/lib64:/share/software/user/open/fftw/3.3.6/lib:/share/software/user/restricted/ifort/2019/lib/intel64:/share/software/user/open/gsl/2.3/lib; export LD_LIBRARY_PATH; PATH=/share/software/user/open/curl/7.54.0/bin:/share/software/user/open/libressl/2.5.3/bin:/home/users/chto/lib/cfitsio:/home/users/chto/lib/cfitsio/include:/home/users/chto/lib:/home/users/chto/bin/bin:/home/users/chto/bin:/home/users/chto/.texlive/bin/x86_64-linux:/home/groups/kipac/chto/anaconda2/envs/newenv3/bin:/home/users/chto/.local/bin/include:/home/users/chto/.local/bin/lib:/home/users/chto/.local/bin:/share/software/user/restricted/impi/2018.u1/impi/2018.1.163/bin64:/share/software/user/open/fftw/3.3.6/bin:/home/groups/kipac/chto/anaconda2/condabin:/share/software/user/restricted/ifort/2019/bin:/share/software/user/open/gsl/2.3/bin:/share/software/user/srcc/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/dell/srvadmin/bin:/opt/dell/srvadmin/iSM/bin:/home/users/chto/bin; export PATH; gcc -g -O2 -o \$progdir/\$file test.o ./.libs/libgslwavelet.a ../blas/.libs/libgslblas.a ../cblas/.libs/libgslcblas.so ../matrix/.libs/libgslmatrix.a ../vector/.libs/libgslvector.a ../block/.libs/libgslblock.a ../ieee-utils/.libs/libgslieeeutils.a ../err/.libs/libgslerr.a ../test/.libs/libgsltest.a ../sys/.libs/libgslsys.a ../utils/.libs/libutils.a -lm -Wl,-rpath -Wl,/home/groups/kipac/chto/package/gsl/gsl-2.5/cblas/.libs -Wl,-rpath -Wl,/usr/local/lib)" + +# This environment variable determines our operation mode. +if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then + # install mode needs the following variables: + generated_by_libtool_version='2.4.2' + notinst_deplibs=' ../cblas/libgslcblas.la' +else + # When we are sourced in execute mode, $file and $ECHO are already set. + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + file="$0" + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + ECHO="printf %s\\n" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ which is used only on +# windows platforms, and (c) all begin with the string --lt- +# (application programs are unlikely to have options which match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's ../libtool value, followed by no. +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=$0 + shift + for lt_opt + do + case "$lt_opt" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%/[^/]*$%%'` + test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=. + lt_dump_F=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%^.*/%%'` + cat "$lt_dump_D/$lt_dump_F" + exit 0 + ;; + --lt-*) + $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n "$lt_option_debug"; then + echo "test:test:${LINENO}: libtool wrapper (GNU libtool) 2.4.2" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + $ECHO "test:test:${LINENO}: newargv[$lt_dump_args_N]: $lt_arg" + lt_dump_args_N=`expr $lt_dump_args_N + 1` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ + + if test -n "$lt_option_debug"; then + $ECHO "test:test:${LINENO}: newargv[0]: $progdir/$program" 1>&2 + func_lt_dump_args ${1+"$@"} 1>&2 + fi + exec "$progdir/$program" ${1+"$@"} + + $ECHO "$0: cannot exec $program $*" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from $@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case " $* " in + *\ --lt-*) + for lt_wr_arg + do + case $lt_wr_arg in + --lt-*) ;; + *) set x "$@" "$lt_wr_arg"; shift;; + esac + shift + done ;; + esac + func_exec_program_core ${1+"$@"} +} + + # Parse options + func_parse_lt_options "$0" ${1+"$@"} + + # Find the directory that this script lives in. + thisdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + test "x$thisdir" = "x$file" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=`ls -ld "$file" | /usr/bin/sed -n 's/.*-> //p'` + while test -n "$file"; do + destdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + + # If there was a directory component, then change thisdir. + if test "x$destdir" != "x$file"; then + case "$destdir" in + [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;; + *) thisdir="$thisdir/$destdir" ;; + esac + fi + + file=`$ECHO "$file" | /usr/bin/sed 's%^.*/%%'` + file=`ls -ld "$thisdir/$file" | /usr/bin/sed -n 's/.*-> //p'` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no + if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then + # special case for '.' + if test "$thisdir" = "."; then + thisdir=`pwd` + fi + # remove .libs from thisdir + case "$thisdir" in + *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /usr/bin/sed 's%[\\/][^\\/]*$%%'` ;; + .libs ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=`cd "$thisdir" && pwd` + test -n "$absdir" && thisdir="$absdir" + + program=lt-'test' + progdir="$thisdir/.libs" + + if test ! -f "$progdir/$program" || + { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /usr/bin/sed 1q`; \ + test "X$file" != "X$progdir/$program"; }; then + + file="$$-$program" + + if test ! -d "$progdir"; then + mkdir "$progdir" + else + rm -f "$progdir/$file" + fi + + # relink executable if necessary + if test -n "$relink_command"; then + if relink_command_output=`eval $relink_command 2>&1`; then : + else + printf %s\n "$relink_command_output" >&2 + rm -f "$progdir/$file" + exit 1 + fi + fi + + mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null || + { rm -f "$progdir/$program"; + mv -f "$progdir/$file" "$progdir/$program"; } + rm -f "$progdir/$file" + fi + + if test -f "$progdir/$program"; then + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + # Run the actual program with our arguments. + func_exec_program ${1+"$@"} + fi + else + # The program doesn't exist. + $ECHO "$0: error: \`$progdir/$program' does not exist" 1>&2 + $ECHO "This script is just a wrapper for $program." 1>&2 + $ECHO "See the libtool documentation for more information." 1>&2 + exit 1 + fi +fi diff --git a/gsl-2.5/wavelet/test-suite.log b/gsl-2.5/wavelet/test-suite.log new file mode 100644 index 00000000..a64ff1b3 --- /dev/null +++ b/gsl-2.5/wavelet/test-suite.log @@ -0,0 +1,14 @@ +===================================== + gsl 2.5: wavelet/test-suite.log +===================================== + +# TOTAL: 1 +# PASS: 1 +# SKIP: 0 +# XFAIL: 0 +# FAIL: 0 +# XPASS: 0 +# ERROR: 0 + +.. contents:: :depth: 2 + diff --git a/gsl-2.5/wavelet/test.c b/gsl-2.5/wavelet/test.c new file mode 100644 index 00000000..db8dcd58 --- /dev/null +++ b/gsl-2.5/wavelet/test.c @@ -0,0 +1,270 @@ +#include +#include +#include + +#include +#include +#include +#include + +#include +#include + +#define N_BS 11 + +double urand (void); + +double +urand (void) +{ + static unsigned long int x = 1; + x = (1103515245 * x + 12345) & 0x7fffffffUL; + return x / 2147483648.0; +} + +const size_t member[N_BS] = + { 309, 307, 305, 303, 301, 208, 206, 204, 202, 105, 103 }; + +void +test_1d (size_t N, size_t stride, const gsl_wavelet_type * T, size_t member); + +void +test_2d (size_t N, size_t tda, const gsl_wavelet_type * T, size_t member, int type); + +int +main (int argc, char **argv) +{ + size_t i, N, stride, tda; + const int S = 1, NS = 2; /* Standard & Non-standard transforms */ + + /* One-dimensional tests */ + + for (N = 1; N <= 16384; N *= 2) + { + for (stride = 1; stride <= 5; stride++) + { + for (i = 0; i < N_BS; i++) + { + test_1d (N, stride, gsl_wavelet_bspline, member[i]); + test_1d (N, stride, gsl_wavelet_bspline_centered, member[i]); + } + + for (i = 4; i <= 20; i += 2) + { + test_1d (N, stride, gsl_wavelet_daubechies, i); + test_1d (N, stride, gsl_wavelet_daubechies_centered, i); + } + + test_1d (N, stride, gsl_wavelet_haar, 2); + test_1d (N, stride, gsl_wavelet_haar_centered, 2); + } + } + + /* Two-dimensional tests */ + + for (N = 1; N <= 64; N *= 2) + { + for (tda = N; tda <= N + 5; tda++) + { + for (i = 0; i < N_BS; i++) + { + test_2d (N, tda, gsl_wavelet_bspline, member[i], S); + test_2d (N, tda, gsl_wavelet_bspline_centered, member[i], S); + + test_2d (N, tda, gsl_wavelet_bspline, member[i], NS); + test_2d (N, tda, gsl_wavelet_bspline_centered, member[i], NS); + } + + for (i = 4; i <= 20; i += 2) + { + test_2d (N, tda, gsl_wavelet_daubechies, i, S); + test_2d (N, tda, gsl_wavelet_daubechies_centered, i, S); + + test_2d (N, tda, gsl_wavelet_daubechies, i, NS); + test_2d (N, tda, gsl_wavelet_daubechies_centered, i, NS); + } + + test_2d (N, tda, gsl_wavelet_haar, 2, S); + test_2d (N, tda, gsl_wavelet_haar_centered, 2, S); + + test_2d (N, tda, gsl_wavelet_haar, 2, NS); + test_2d (N, tda, gsl_wavelet_haar_centered, 2, NS); + } + } + + exit (gsl_test_summary ()); +} + + +void +test_1d (size_t N, size_t stride, const gsl_wavelet_type * T, size_t member) +{ + gsl_wavelet_workspace *work; + gsl_vector *v1, *v2, *vdelta; + gsl_vector_view v; + gsl_wavelet *w; + + size_t i; + double *data = (double *)malloc (N * stride * sizeof (double)); + + for (i = 0; i < N * stride; i++) + data[i] = 12345.0 + i; + + v = gsl_vector_view_array_with_stride (data, stride, N); + v1 = &(v.vector); + + for (i = 0; i < N; i++) + { + gsl_vector_set (v1, i, urand ()); + } + + v2 = gsl_vector_alloc (N); + gsl_vector_memcpy (v2, v1); + + vdelta = gsl_vector_alloc (N); + + work = gsl_wavelet_workspace_alloc (N); + + w = gsl_wavelet_alloc (T, member); + + gsl_wavelet_transform_forward (w, v2->data, v2->stride, v2->size, work); + gsl_wavelet_transform_inverse (w, v2->data, v2->stride, v2->size, work); + + for (i = 0; i < N; i++) + { + double x1 = gsl_vector_get (v1, i); + double x2 = gsl_vector_get (v2, i); + gsl_vector_set (vdelta, i, fabs (x1 - x2)); + } + + { + double x1, x2; + i = gsl_vector_max_index (vdelta); + x1 = gsl_vector_get (v1, i); + x2 = gsl_vector_get (v2, i); + + gsl_test (fabs (x2 - x1) > N * 1e-15, + "%s(%d), n = %d, stride = %d, maxerr = %g", + gsl_wavelet_name (w), member, N, stride, fabs (x2 - x1)); + } + + if (stride > 1) + { + int status = 0; + + for (i = 0; i < N * stride; i++) + { + if (i % stride == 0) + continue; + + status |= (data[i] != (12345.0 + i)); + } + + gsl_test (status, "%s(%d) other data untouched, n = %d, stride = %d", + gsl_wavelet_name (w), member, N, stride); + } + + gsl_wavelet_workspace_free (work); + gsl_wavelet_free (w); + gsl_vector_free (vdelta); + gsl_vector_free (v2); + free (data); +} + + +void +test_2d (size_t N, size_t tda, const gsl_wavelet_type * T, size_t member, int type) +{ + gsl_wavelet_workspace *work; + gsl_matrix *m2; + gsl_wavelet *w; + gsl_matrix *m1; + gsl_matrix *mdelta; + gsl_matrix_view m; + size_t i; + size_t j; + + double *data = (double *)malloc (N * tda * sizeof (double)); + + const char * name; + + name = (type == 1) ? "standard" : "nonstd" ; + + for (i = 0; i < N * tda; i++) + data[i] = 12345.0 + i; + + m = gsl_matrix_view_array_with_tda (data, N, N, tda); + m1 = &(m.matrix); + + for (i = 0; i < N; i++) + { + for (j = 0; j < N; j++) + { + gsl_matrix_set (m1, i, j, urand()); + } + } + + m2 = gsl_matrix_alloc (N, N); + gsl_matrix_memcpy (m2, m1); + + mdelta = gsl_matrix_alloc (N, N); + + work = gsl_wavelet_workspace_alloc (N); + + w = gsl_wavelet_alloc (T, member); + + switch (type) + { + case 1: + gsl_wavelet2d_transform_matrix_forward (w, m2, work); + gsl_wavelet2d_transform_matrix_inverse (w, m2, work); + break; + case 2: + gsl_wavelet2d_nstransform_matrix_forward (w, m2, work); + gsl_wavelet2d_nstransform_matrix_inverse (w, m2, work); + break; + } + + for (i = 0; i < N; i++) + { + for (j = 0; j < N; j++) + { + double x1 = gsl_matrix_get (m1, i, j); + double x2 = gsl_matrix_get (m2, i, j ); + gsl_matrix_set (mdelta, i, j, fabs (x1 - x2)); + } + } + + { + double x1, x2; + gsl_matrix_max_index (mdelta, &i, &j); + x1 = gsl_matrix_get (m1, i, j); + x2 = gsl_matrix_get (m2, i, j); + + gsl_test (fabs (x2 - x1) > N * 1e-15, + "%s(%d)-2d %s, n = %d, tda = %d, maxerr = %g", + gsl_wavelet_name (w), member, name, N, tda, fabs (x2 - x1)); + } + + if (tda > N) + { + int status = 0; + + for (i = 0; i < N ; i++) + { + for (j = N; j < tda; j++) + { + status |= (data[i*tda+j] != (12345.0 + (i*tda+j))); + } + } + + gsl_test (status, "%s(%d)-2d %s other data untouched, n = %d, tda = %d", + gsl_wavelet_name (w), member, name, N, tda); + } + + free (data); + gsl_wavelet_workspace_free (work); + gsl_wavelet_free (w); + gsl_matrix_free (m2); + gsl_matrix_free (mdelta); +} diff --git a/gsl-2.5/wavelet/test.log b/gsl-2.5/wavelet/test.log new file mode 100644 index 00000000..edcfb415 --- /dev/null +++ b/gsl-2.5/wavelet/test.log @@ -0,0 +1 @@ +Completed [12138/12138] diff --git a/gsl-2.5/wavelet/test.trs b/gsl-2.5/wavelet/test.trs new file mode 100644 index 00000000..3f0f396c --- /dev/null +++ b/gsl-2.5/wavelet/test.trs @@ -0,0 +1,4 @@ +:test-result: PASS +:global-test-result: PASS +:recheck: no +:copy-in-global-log: no diff --git a/gsl-2.5/wavelet/wavelet.c b/gsl-2.5/wavelet/wavelet.c new file mode 100644 index 00000000..8a83ae6a --- /dev/null +++ b/gsl-2.5/wavelet/wavelet.c @@ -0,0 +1,134 @@ +/* wavelet/wavelet.c + * + * Copyright (C) 2004, 2009 Ivo Alxneit + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include + +gsl_wavelet * +gsl_wavelet_alloc (const gsl_wavelet_type * T, size_t k) +{ + int status; + + gsl_wavelet *w = (gsl_wavelet *) malloc (sizeof (gsl_wavelet)); + + if (w == NULL) + { + GSL_ERROR_VAL ("failed to allocate space for wavelet struct", + GSL_ENOMEM, 0); + }; + + w->type = T; + + status = (T->init) (&(w->h1), &(w->g1), &(w->h2), &(w->g2), + &(w->nc), &(w->offset), k); + + if (status) + { + free (w); + GSL_ERROR_VAL ("invalid wavelet member", GSL_EINVAL, 0); + } + + return w; +} + +void +gsl_wavelet_free (gsl_wavelet * w) +{ + RETURN_IF_NULL (w); + free (w); +} + +const char * +gsl_wavelet_name (const gsl_wavelet * w) +{ + return w->type->name; +} + + +/* Let's not export this for now (BJG) */ +#if 0 +void +gsl_wavelet_print (const gsl_wavelet * w) +{ + size_t n = w->nc; + size_t i; + + printf ("Wavelet type: %s\n", w->type->name); + + printf + (" h1(%d):%12.8f g1(%d):%12.8f h2(%d):%12.8f g2(%d):%12.8f\n", + 0, w->h1[0], 0, w->g1[0], 0, w->h2[0], 0, w->g2[0]); + + for (i = 1; i < (n < 10 ? n : 10); i++) + { + printf + (" h1(%d):%12.8f g1(%d):%12.8f h2(%d):%12.8f g2(%d):%12.8f\n", + i, w->h1[i], i, w->g1[i], i, w->h2[i], i, w->g2[i]); + } + + for (; i < n; i++) + { + printf + ("h1(%d):%12.8f g1(%d):%12.8f h2(%d):%12.8f g2(%d):%12.8f\n", + i, w->h1[i], i, w->g1[i], i, w->h2[i], i, w->g2[i]); + } +} +#endif + +gsl_wavelet_workspace * +gsl_wavelet_workspace_alloc (size_t n) +{ + gsl_wavelet_workspace *work; + + if (n == 0) + { + GSL_ERROR_VAL ("length n must be positive integer", GSL_EDOM, 0); + } + + work = (gsl_wavelet_workspace *) malloc (sizeof (gsl_wavelet_workspace)); + + if (work == NULL) + { + GSL_ERROR_VAL ("failed to allocate struct", GSL_ENOMEM, 0); + } + + work->n = n; + work->scratch = (double *) malloc (n * sizeof (double)); + + if (work->scratch == NULL) + { + /* error in constructor, prevent memory leak */ + free (work); + GSL_ERROR_VAL ("failed to allocate scratch space", GSL_ENOMEM, 0); + } + + return work; +} + +void +gsl_wavelet_workspace_free (gsl_wavelet_workspace * work) +{ + RETURN_IF_NULL (work); + /* release scratch space */ + free (work->scratch); + work->scratch = NULL; + free (work); +} diff --git a/gsl-2.5/wavelet/wavelet.lo b/gsl-2.5/wavelet/wavelet.lo new file mode 100644 index 00000000..8a6035b5 --- /dev/null +++ b/gsl-2.5/wavelet/wavelet.lo @@ -0,0 +1,12 @@ +# wavelet.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/wavelet.o' + +# Name of the non-PIC object +non_pic_object='wavelet.o' + diff --git a/theory/.cosmo3D.c.swo b/theory/.cosmo3D.c.swo new file mode 100644 index 00000000..6b606804 Binary files /dev/null and b/theory/.cosmo3D.c.swo differ diff --git a/theory/.cosmo3D.c.swp b/theory/.cosmo3D.c.swp new file mode 100644 index 00000000..120ffedd Binary files /dev/null and b/theory/.cosmo3D.c.swp differ diff --git a/theory/.halo.c.swl b/theory/.halo.c.swl new file mode 100644 index 00000000..73e6c39d Binary files /dev/null and b/theory/.halo.c.swl differ diff --git a/theory/.halo.c.swm b/theory/.halo.c.swm new file mode 100644 index 00000000..71ac4722 Binary files /dev/null and b/theory/.halo.c.swm differ diff --git a/theory/.halo.c.swn b/theory/.halo.c.swn new file mode 100644 index 00000000..d9b444a2 Binary files /dev/null and b/theory/.halo.c.swn differ diff --git a/theory/.redshift_spline.c.swp b/theory/.redshift_spline.c.swp new file mode 100644 index 00000000..d0f7b314 Binary files /dev/null and b/theory/.redshift_spline.c.swp differ diff --git a/theory/.structs.c.swm b/theory/.structs.c.swm new file mode 100644 index 00000000..79b4f58f Binary files /dev/null and b/theory/.structs.c.swm differ diff --git a/theory/.structs.c.swn b/theory/.structs.c.swn new file mode 100644 index 00000000..8a95f895 Binary files /dev/null and b/theory/.structs.c.swn differ diff --git a/theory/.structs.c.swo b/theory/.structs.c.swo new file mode 100644 index 00000000..397cd854 Binary files /dev/null and b/theory/.structs.c.swo differ diff --git a/theory/.structs.c.swp b/theory/.structs.c.swp new file mode 100644 index 00000000..6a0072a4 Binary files /dev/null and b/theory/.structs.c.swp differ diff --git a/theory/IA.c b/theory/IA.c index cbfd41c4..ed6f2836 100644 --- a/theory/IA.c +++ b/theory/IA.c @@ -846,6 +846,8 @@ double C_shear_shear_IA_tab(double l, int ni, int nj) //shear power spectrum of static double **table; static double ds = .0, logsmin = .0, logsmax = .0; + double result =0 ; + double negative=0; if (ni < 0 || ni >= tomo.shear_Nbin ||nj < 0 || nj >= tomo.shear_Nbin){ printf("C_shear_tomo(l,%d,%d) outside tomo.shear_Nbin range\nEXIT\n",ni,nj); exit(1); } @@ -864,8 +866,15 @@ double C_shear_shear_IA_tab(double l, int ni, int nj) //shear power spectrum of for (k=0; k0) table[k][i]= log(result); + else { + table[k][i]=log(1E-30); + negative=1; + } + if(negative>0){table[k][i]=log(1E-30);} } } update_cosmopara(&C); update_nuisance(&N); @@ -874,4 +883,4 @@ double C_shear_shear_IA_tab(double l, int ni, int nj) //shear power spectrum of if (isnan(f1)){f1 = 0.;} // printf("%le %d %d %le\n", l, ni, nj, f1); return f1; -} \ No newline at end of file +} diff --git a/theory/backup.c b/theory/backup.c new file mode 100644 index 00000000..1aea60af --- /dev/null +++ b/theory/backup.c @@ -0,0 +1,533 @@ +double C1_TA(double a, double nz); +double C2_TT(double a, double nz); +double C_EE_tab(double l, int ni, int nj); +double C_reduced_shear(double l, int ni, int nj); +double C_BB_tab(double l, int ni, int nj); +double C_ggl_TATT_tab(double l, int ni, int nj); +double w_gamma_t_TATT(int nt,int ni, int nj); //G-G lensing, lens bin ni, source bin nj, including IA contamination if like.IA = 3 +double xi_pm_TATT(int pm, int nt, int ni, int nj); //shear tomography correlation functions, including IA contamination if like.IA = 3 +int reduced_shear = 0; +int source_clustering = 0; +//ell_max for transform to angular correlation functions +int LMAX = 100000; +//ell_min for switching from exact evalution of C(ell) to interpolated look-up table +int LMIN_tab =20; +//number of grid point for C(ell) look-up tables +int NTAB_TATT = 60; +double C_source[4] ={-1.165,-0.641,-0.547,0.803}; +/* NLA/TA amplitude C1, nz argument only need if per-bin amplitude*/ +double C1_TA(double a, double nz){ + // per-bin IA parameters + if (like.IA ==3 || like.IA ==5){ + return -nuisance.A_z[(int)nz]*cosmology.Omega_m*nuisance.c1rhocrit_ia*growfac(1.)/growfac(a); + } + //power law evolution + return -cosmology.Omega_m*nuisance.c1rhocrit_ia*growfac(1.)/growfac(a)*nuisance.A_ia*pow(1./(a*nuisance.oneplusz0_ia),nuisance.eta_ia); + //observed A_0(z)<(L/L0)^beta>f_red(z) + //return A_IA_Joachimi(a)*cosmology.Omega_m*nuisance.c1rhocrit_ia*growfac(1.)/growfac(a); +} +/* TA source bias parameter, nz argument only need if per-bin amplitude*/ +double b_TA(double a, double nz){ + // per-bin IA parameters + if (like.IA ==5){ + return nuisance.b_ta_z[(int)nz]; + } + //power law evolution + return nuisance.b_ta_z[0]; +} +/* TT amplitude C2, nz argument only need if per-bin amplitude*/ +double C2_TT(double a, double nz){ + // per-bin IA parameters + if (like.IA == 5){ + return 5.*nuisance.A2_z[(int)nz]*cosmology.Omega_m*nuisance.c1rhocrit_ia*pow(growfac(1.)/growfac(a),2.0); + } + //power law evolution + return 5.*nuisance.A2_ia*cosmology.Omega_m*nuisance.c1rhocrit_ia*pow(growfac(1.)/growfac(a),2.0)*pow(1./(a*nuisance.oneplusz0_ia),nuisance.eta_ia_tt); +} + +/****** Limber integrands for shear and ggl ******/ +double int_for_C_shear_shear_IA_EE(double a, void *params){ + double res=0., ell, fK, k,ws1,ws2,wk1,wk2, norm,C1,C1_2,C2,C2_2,b_ta,b_ta_2; + double *ar = (double *) params; + if (a >= 1.0) error("a>=1 in int_for_C_II"); + ell = ar[2]+0.5; + fK = f_K(chi(a)); + k = ell/fK; + ws1 = W_source(a,ar[0]); /*radial n_z weight for first source bin (for use with IA term)*/ + ws2 = W_source(a,ar[1]); /*radial n_z weight for second source bin (for use with IA term)*/ + wk1 = W_kappa(a,fK,ar[0]); /* radial lens efficiency for first source bin*/ + wk2 = W_kappa(a,fK,ar[1]); /* radial lens efficiency for second source bin*/ + + /* IA parameters for first source bin*/ + C1 = C1_TA(a,ar[0]); b_ta = b_TA(a,ar[0]); C2 = C2_TT(a,ar[0]); + /* IA parameters for second source bin*/ + C1_2 = C1_TA(a,ar[1]); b_ta_2 = b_TA(a,ar[1]); C2_2 = C2_TT(a,ar[1]); + + /*GG cosmic shear */ + res = wk1*wk2*Pdelta(k,a); + if (C1 || C1_2 || C2 || C2_2){ + /*II contribution */ + res += ws1*ws2*TATT_II_EE(k,a,C1,C2,b_ta,C1_2,C2_2,b_ta_2); + /*GI contribution */ + res += ws1*wk2*TATT_GI_E(k,a,C1,C2,b_ta)+ws2*wk1*TATT_GI_E(k,a,C1_2,C2_2,b_ta_2); + } + return res*dchi_da(a)/fK/fK; +} + + + +double int_for_C_shear_shear_IA_BB(double a, void *params){ + double res = 0., ell, fK, k,ws1,ws2,wk1,wk2, norm,C1,C1_2,C2,C2_2,b_ta,b_ta_2; + double *ar = (double *) params; + if (a >= 1.0) error("a>=1 in int_for_C_II"); + ell = ar[2]+0.5; + fK = f_K(chi(a)); + k = ell/fK; + ws1 = W_source(a,ar[0]); /*radial n_z weight for first source bin (for use with IA term)*/ + ws2 = W_source(a,ar[1]); /*radial n_z weight for second source bin (for use with IA term)*/ + wk1 = W_kappa(a,fK,ar[0]); /* radial lens efficiency for first source bin*/ + wk2 = W_kappa(a,fK,ar[1]); /* radial lens efficiency for second source bin*/ + + /* IA parameters for first source bin*/ + C1 = C1_TA(a,ar[0]); b_ta = b_TA(a,ar[0]); C2 = C2_TT(a,ar[0]); + /* IA parameters for second source bin*/ + C1_2 = C1_TA(a,ar[1]); b_ta_2 = b_TA(a,ar[1]); C2_2 = C2_TT(a,ar[1]); + + if ((b_ta || C2) &&(b_ta_2 || C2_2)){res = ws1*ws2*TATT_II_BB(k,a,C1,C2,b_ta,C1_2,C2_2,b_ta_2);} + return res*dchi_da(a)/fK/fK; +} + + +double int_for_C_ggl_IA_TATT(double a, void *params){ + double res, ell, fK, k,w_density,w_mag, ws,wk, b1,b2,bs2,C1,C2,b_ta; + double *ar = (double *) params; + if (a >= 1.0) error("a>=1 in int_for_C_II"); + ell = ar[2]+0.5; + fK = f_K(chi(a)); + k = ell/fK; + + ws = W_source(a,ar[1]); /*radial n_z weight for source bin (for use with IA term)*/ + wk = W_kappa(a,fK,ar[1]); /* radial lens efficiency for source bin*/ + /* IA parameters for first source bin*/ + C1 = C1_TA(a,ar[1]); b_ta = b_TA(a,ar[1]); C2 = C2_TT(a,ar[1]); + + w_density = W_HOD(a,ar[0]); /*radial n_z weight for lens bin (for use with clustering term)*/ + w_mag = W_mag(a,fK,ar[0])*gbias.b_mag[(int)ar[0]]; /* lens efficiency *b_mag for lens bin (for lens magnification)*/ + + /* galaxy bias parameters for lens bin*/ + b1 = gbias.b1_function(1./a-1.,(int)ar[0]); + b2 = gbias.b2[(int)ar[0]]; + bs2 = gbias.bs2[(int)ar[0]]; + double g4 = pow(growfac(a)/growfac(1.0),4.); + double Pnl = Pdelta(k,a); + + double P_1loop =b1*Pnl; + if (w_density*b2 !=0){ + P_1loop += g4*(0.5*b2*PT_d1d2(k)+0.5*bs2*PT_d1s2(k)+0.5*b3nl_from_b1(b1)*PT_d1d3(k)); + } + + /*1-loop P_gm ggl terms*/ + res = w_density*wk*P_1loop; + /* lens magnification x G term*/ + res += w_mag*wk*Pnl; + /* (linear bias lens density + lens magnification) with TATT_GI terms*/ + if (C1 || C2) res += (b1*w_density+w_mag)*ws*TATT_GI_E(k,a,C1,C2,b_ta); + return res*dchi_da(a)/fK/fK; +} + +double C_EE_TATT(double l, int ni,int nj){ + double array[3] = {(double) ni, (double) nj, l}; + // double EE = int_gsl_integrate_low_precision(int_for_C_shear_shear_IA_EE,(void*)array,fmax(amin_source(ni),amin_source(nj)),amax_source(ni),NULL,1000); + // double EE = int_gsl_integrate_low_precision(int_for_C_shear_shear_IA_EE,(void*)array,fmax(amin_source(ni),amin_source(nj)),0.99999,NULL,1000); + double EE = int_gsl_integrate_low_precision(int_for_C_shear_shear_IA_EE,(void*)array,fmax(amin_source(ni),amin_source(nj)),0.998,NULL,1000); + // double EE = int_gsl_integrate_low_precision(int_for_C_shear_shear_IA_EE,(void*)array,0.95,0.99,NULL,1000); + return EE; +} + +double C_BB_TATT(double l, int ni, int nj){ + double array[3] = {(double) ni, (double) nj, l}; + // return int_gsl_integrate_low_precision(int_for_C_shear_shear_IA_BB,(void*)array,fmax(amin_source(ni),amin_source(nj)),fmin(amax_source_IA(ni),amax_source_IA(nj)),NULL,1000); + return int_gsl_integrate_low_precision(int_for_C_shear_shear_IA_BB,(void*)array,fmax(amin_source(ni),amin_source(nj)),0.998,NULL,1000); +} + +double C_ggl_TATT(double l, int nl, int ns) +{ + double array[3] = {(double) nl, (double) ns, l}; + // double gE = int_gsl_integrate_low_precision(int_for_C_ggl_IA_TATT,(void*)array,amin_lens(nl),amax_lens(nl),NULL,1000); + double gE = int_gsl_integrate_low_precision(int_for_C_ggl_IA_TATT,(void*)array,amin_lens(nl),0.99999,NULL,1000); + return gE; +} +/*************** look-up tables for angular correlation functions ***************/ +/******************** all angles in radian! ***********************************/ +/******************** full-sky, bin-avergage ***********************************/ + +double w_gamma_t_TATT(int nt, int ni, int nj){ + static int NTHETA = 0; + static double ** Pl =0; + static double *Cl =0; + static double *w_vec =0; + static cosmopara C; + static nuisancepara N; + static galpara G; + int i,l,nz; + if (like.Ntheta ==0){ + printf("cosmo2D_fullsky_TATT.c:w_gamma_t_TATT: like.Ntheta not initialized\nEXIT\n"); exit(1); + } + if (Pl ==0){ + Pl =create_double_matrix(0, like.Ntheta-1, 0, LMAX-1); + Cl = create_double_vector(0,LMAX-1); + w_vec = create_double_vector(0,tomo.ggl_Npowerspectra*like.Ntheta-1); + NTHETA = like.Ntheta; + double *xmin, *xmax, *Pmin, *Pmax, *dP; + xmin= create_double_vector(0, like.Ntheta-1); + xmax= create_double_vector(0, like.Ntheta-1); + double logdt=(log(like.vtmax)-log(like.vtmin))/like.Ntheta; + for(i=0; i 0) return xi_vec_plus[N_shear(ni,nj)*like.Ntheta + nt]; + return xi_vec_minus[N_shear(ni,nj)*like.Ntheta + nt]; +} + + +/************* tabulated angular power spectra *************/ + +double C_EE_tab(double l, int ni, int nj) //shear power spectrum of source galaxies in bins ni, nj +{ + static cosmopara C; + static nuisancepara N; + + static double **table,*sig; + static int osc[100]; + static double ds = .0, logsmin = .0, logsmax = .0; + if (ni < 0 || ni >= tomo.shear_Nbin ||nj < 0 || nj >= tomo.shear_Nbin){ + printf("C_shear_shear_EE(l,%d,%d) outside tomo.shear_Nbin range\nEXIT\n",ni,nj); exit(1); + } + if (recompute_shear(C,N)){ + //printf("calculating C_shear_shear_IA_tab %e %e %e %e %e\n", nuisance.A_z[0], nuisance.A_z[1], nuisance.A_z[2], nuisance.A_z[3], nuisance.A_z[4]); + if (table==0) { + table = create_double_matrix(0, tomo.shear_Npowerspectra-1, 0, NTAB_TATT-1); + sig = create_double_vector(0,tomo.ggl_Npowerspectra-1); + logsmin = log(fmax(LMIN_tab - 1.,1.0)); + logsmax = log(LMAX + 1); + ds = (logsmax - logsmin)/(NTAB_TATT - 1.); + } + + double llog; + int i,k; + + + for (k=0; k logsmax){ + printf ("C_EE_tab: l = %e outside look-up table range [%e,%e]\n",l,exp(logsmin),exp(logsmax)); + exit(1); + } + int k = N_shear(ni,nj); + double f1; + if (osc[k] ==0 ){f1 = sig[k]*exp(interpol(table[k], NTAB_TATT, logsmin, logsmax, ds, log(l), 0.,0.));} + else {f1 = interpol(table[k], NTAB_TATT, logsmin, logsmax, ds, log(l), 0.,0.);} + if (isnan(f1)){f1 = 0.;} + // printf("%le %d %d %le\n", l, ni, nj, f1); + return f1; +} + +double C_BB_tab(double l, int ni, int nj) //shear power spectrum of source galaxies in bins ni, nj +{ + static cosmopara C; + static nuisancepara N; + + static double **table,*sig; + static int osc[100]; + static double ds = .0, logsmin = .0, logsmax = .0; + if (ni < 0 || ni >= tomo.shear_Nbin ||nj < 0 || nj >= tomo.shear_Nbin){ + printf("C_shear_shear_BB(l,%d,%d) outside tomo.shear_Nbin range\nEXIT\n",ni,nj); exit(1); + } + + if (recompute_shear(C,N)){ + //printf("calculating C_shear_shear_IA_tab %e %e %e %e %e\n", nuisance.A_z[0], nuisance.A_z[1], nuisance.A_z[2], nuisance.A_z[3], nuisance.A_z[4]); + if (table==0) { + table = create_double_matrix(0, tomo.shear_Npowerspectra-1, 0, NTAB_TATT-1); + sig = create_double_vector(0,tomo.ggl_Npowerspectra-1); + logsmin = log(fmax(LMIN_tab - 1.,1.0)); + logsmax = log(LMAX + 1); + ds = (logsmax - logsmin)/(NTAB_TATT - 1.); + } + + double llog; + int i,k; + + + for (k=0; k logsmax){ + printf ("C_BB_tab: l = %e outside look-up table range [%e,%e]\n",l,exp(logsmin),exp(logsmax)); + exit(1); + } + int k = N_shear(ni,nj); + double f1; + if (osc[k] ==0 ){f1 = sig[k]*exp(interpol(table[k], NTAB_TATT, logsmin, logsmax, ds, log(l), 0.,0.));} + else {f1 = interpol(table[k], NTAB_TATT, logsmin, logsmax, ds, log(l), 0.,0.);} + if (isnan(f1)){f1 = 0.;} + // printf("%le %d %d %le\n", l, ni, nj, f1); + return f1; +} + +double C_ggl_TATT_tab(double l, int ni, int nj) //G-G lensing power spectrum, lens bin ni, source bin nj +{ + static cosmopara C; + static nuisancepara N; + static galpara G; + + static double **table, *sig; + static int osc[100]; + static double ds = .0, logsmin = .0, logsmax = .0; + + if (ni < 0 || ni >= tomo.clustering_Nbin ||nj < 0 || nj >= tomo.shear_Nbin){ + printf("C_ggl_TATT_tab(l,%d,%d) outside tomo.X_Nbin range\nEXIT\n",ni,nj); exit(1); + } + + if (recompute_ggl(C,G,N,ni)){ + //printf("calculating C_ggl_IA_tab %e %e %e %e %e\n", nuisance.A_z[0], nuisance.A_z[1], nuisance.A_z[2], nuisance.A_z[3], nuisance.A_z[4]); + if (table==0){ + table = create_double_matrix(0, tomo.ggl_Npowerspectra-1, 0, NTAB_TATT-1); + sig = create_double_vector(0,tomo.ggl_Npowerspectra-1); + logsmin = log(fmax(LMIN_tab - 1.,1.0)); + logsmax = log(LMAX + 1); + ds = (logsmax - logsmin)/(NTAB_TATT - 1.); + } + int i,k; + double llog; + + for (k=0; k logsmax){ + printf ("C_ggl_TATT_tab: l = %e outside look-up table range [%e,%e]\n",l,exp(logsmin),exp(logsmax)); + exit(1); + } + int k = N_ggl(ni,nj); + double f1 = 0.; + if(test_zoverlap(ni,nj) && osc[k] ==0 ){f1 = sig[k]*exp(interpol(table[k], NTAB_TATT, logsmin, logsmax, ds, log(l), 0.,0.));} + if(test_zoverlap(ni,nj) && osc[k] ==1 ){f1 = interpol(table[k], NTAB_TATT, logsmin, logsmax, ds, log(l), 0.,0.);} + if (isnan(f1)){f1 = 0;} + return f1; +} diff --git a/theory/cosmo2D_exact.c b/theory/cosmo2D_exact.c index 7a5e69c3..1bedc0ff 100644 --- a/theory/cosmo2D_exact.c +++ b/theory/cosmo2D_exact.c @@ -683,4 +683,4 @@ double w_gamma_t_nonLimber(int nt, int ni, int nj){ update_nuisance(&N); } return w_vec[N_ggl(ni,nj)*like.Ntheta+nt]; -} \ No newline at end of file +} diff --git a/theory/cosmo2D_exact_fft.c b/theory/cosmo2D_exact_fft.c index 76b01a35..1b29357d 100644 --- a/theory/cosmo2D_exact_fft.c +++ b/theory/cosmo2D_exact_fft.c @@ -295,7 +295,12 @@ void C_cl_mixed(int L, int LMAX, int ni, int nj, double *Cl, double dev, double i_block++; L = i_block*Nell_block -1 ; + if(L>=LMAX-Nell_block){ + printf("L>Lmax\n"); + break; + } dev = Cl[L]/C_cl_tomo_nointerp((double)L,ni,nj)-1.; + // printf("ni,L,Cl[L],dev=%d %d %e %e\n",ni,L,Cl[L],dev); // printf("i_block: %d\n", i_block); } @@ -305,15 +310,17 @@ void C_cl_mixed(int L, int LMAX, int ni, int nj, double *Cl, double dev, double // Cl[l]=C_cl_tomo_nointerp((double)l,ni,nj); // // fprintf(OUT, "%d %lg\n", l, Cl[l]); // } - for (l = L; l < LMAX; l++){ - Cl[l]=C_cl_tomo((double)l,ni,nj); - // fprintf(OUT, "%d %lg\n", l, Cl[l]); - } + if(Lerror_message); - return 1; - } - if (thermodynamics_init(&pr,ba,th) == _FAILURE_) { - fprintf(stderr,"cosmo3D.c: Error running CLASS thermodynamics:%s\n",th->error_message); - background_free(ba); - return 1; - } - cosmology.theta_s = 100.*th->rs_rec/th->ra_rec; - cosmology.h0 = ba->h; -// printf("theta_* = %.5f\n",cosmology.theta_s); -// printf("h_CLASS = %.3f\n\n", ba->h); - if (perturb_init(&pr,ba,th,pt) == _FAILURE_) { - fprintf(stderr,"cosmo3D.c: Error running CLASS perturb:%s\n",pt->error_message); - thermodynamics_free(th); - background_free(ba); - return 1; - } - if (primordial_init(&pr,pt,pm) == _FAILURE_) { - fprintf(stderr,"cosmo3D.c: Error running CLASS primordial:%s\n",pm->error_message); - perturb_free(pt); - thermodynamics_free(th); - background_free(ba); - return 1; - } + struct file_content *fc, + struct background *ba, + struct thermo *th, + struct perturbs *pt, + struct transfers *tr, + struct primordial *pm, + struct spectra *sp, + struct nonlinear *nl, + struct lensing *le){ + struct precision pr; // for precision parameters + struct output op; /* for output files */ + ErrorMsg errmsg; // for error messages + + if(input_init(fc,&pr,ba,th,pt,tr,pm,sp,nl,le,&op,errmsg) == _FAILURE_) { + fprintf(stderr,"cosmo3D.c: Error running CLASS input:%s\n",errmsg); + parser_free(fc); + return 1; + } + if (background_init(&pr,ba) == _FAILURE_) { + fprintf(stderr,"cosmo3D.c: Error running CLASS background:%s\n",ba->error_message); + return 1; + } + if (thermodynamics_init(&pr,ba,th) == _FAILURE_) { + fprintf(stderr,"cosmo3D.c: Error running CLASS thermodynamics:%s\n",th->error_message); + background_free(ba); + return 1; + } + cosmology.theta_s = 100.*th->rs_rec/th->ra_rec; + cosmology.rs_d = th->rs_d; + cosmology.h0 = ba->h; + // printf("theta_* = %.5f\n",cosmology.theta_s); + // printf("h_CLASS = %.3f\n\n", ba->h); + if (perturb_init(&pr,ba,th,pt) == _FAILURE_) { + fprintf(stderr,"cosmo3D.c: Error running CLASS perturb:%s\n",pt->error_message); + thermodynamics_free(th); + background_free(ba); + return 1; + } + if (primordial_init(&pr,pt,pm) == _FAILURE_) { + fprintf(stderr,"cosmo3D.c: Error running CLASS primordial:%s\n",pm->error_message); + perturb_free(pt); + thermodynamics_free(th); + background_free(ba); + return 1; + } - if (nonlinear_init(&pr,ba,th,pt,pm,nl) == _FAILURE_) { - fprintf(stderr,"cosmo3D.c: Error running CLASS nonlinear:%s\n",nl->error_message); - primordial_free(pm); - perturb_free(pt); - thermodynamics_free(th); - background_free(ba); - return 1; - } + if (nonlinear_init(&pr,ba,th,pt,pm,nl) == _FAILURE_) { + fprintf(stderr,"cosmo3D.c: Error running CLASS nonlinear:%s\n",nl->error_message); + primordial_free(pm); + perturb_free(pt); + thermodynamics_free(th); + background_free(ba); + return 1; + } - if (transfer_init(&pr,ba,th,pt,nl,tr) == _FAILURE_) { - fprintf(stderr,"cosmo3D.c: Error running CLASS transfer:%s\n",tr->error_message); - nonlinear_free(nl); - primordial_free(pm); - perturb_free(pt); - thermodynamics_free(th); - background_free(ba); - return 1; - } - if (spectra_init(&pr,ba,pt,pm,nl,tr,sp) == _FAILURE_) { - fprintf(stderr,"cosmo3D.c: Error running CLASS spectra:%s\n",sp->error_message); - transfer_free(tr); - nonlinear_free(nl); - primordial_free(pm); - perturb_free(pt); - thermodynamics_free(th); - background_free(ba); - return 1; - } - return 0; + if (transfer_init(&pr,ba,th,pt,nl,tr) == _FAILURE_) { + fprintf(stderr,"cosmo3D.c: Error running CLASS transfer:%s\n",tr->error_message); + nonlinear_free(nl); + primordial_free(pm); + perturb_free(pt); + thermodynamics_free(th); + background_free(ba); + return 1; + } + if (spectra_init(&pr,ba,pt,pm,nl,tr,sp) == _FAILURE_) { + fprintf(stderr,"cosmo3D.c: Error running CLASS spectra:%s\n",sp->error_message); + transfer_free(tr); + nonlinear_free(nl); + primordial_free(pm); + perturb_free(pt); + thermodynamics_free(th); + background_free(ba); + return 1; + } + return 0; +} +double CLASS_sigma8(struct spectra *sp, struct nonlinear *nl){ + #ifndef CLASS_V29 + return sp->sigma8; + #else + return *nl->sigma8; + #endif } + double get_class_s8(struct file_content *fc, int *status){ //structures for class test run struct background ba; // for cosmological background @@ -529,11 +538,14 @@ double get_class_s8(struct file_content *fc, int *status){ sprintf(fc->value[position_kmax],"%e",10.); } *status = run_class(fc,&ba,&th,&pt,&tr,&pm,&sp,&nl,&le); - if (*status ==0) free_class_structs(&ba,&th,&pt,&tr,&pm,&sp,&nl,&le); + if (k_max_old >0){ sprintf(fc->value[position_kmax],"%e",k_max_old); } - return sp.sigma8; + double s8= CLASS_sigma8(&sp,&nl); + if (*status ==0) free_class_structs(&ba,&th,&pt,&tr,&pm,&sp,&nl,&le); + return s8; + //nl.sigma8[nl.index_pk_total]; } double get_class_As(struct file_content *fc, int position_As,double sigma8, int *status){ @@ -562,11 +574,11 @@ double get_class_s8(struct file_content *fc, int *status){ sprintf(fc->value[position_As],"%e",A_s_guess); *status = run_class(fc,&ba,&th,&pt,&tr,&pm,&sp,&nl,&le); - A_s_guess*=pow(sigma8/sp.sigma8,2.); + A_s_guess*=pow(sigma8/(nl.sigma8[nl.index_pk_total]),2.); printf("A_s_guess=%e\n",A_s_guess); sprintf(fc->value[position_As],"%e",A_s_guess); *status = run_class(fc,&ba,&th,&pt,&tr,&pm,&sp,&nl,&le); - A_s_guess*=pow(sigma8/sp.sigma8,2.); + A_s_guess*=pow(sigma8/(nl.sigma8[nl.index_pk_total]),2.); printf("A_s_guess=%e\n",A_s_guess); if (*status ==0) free_class_structs(&ba,&th,&pt,&tr,&pm,&sp,&nl,&le); @@ -606,7 +618,7 @@ double get_class_s8(struct file_content *fc, int *status){ sprintf(fc->value[6],"%e",cosmology.h0); } strcpy(fc->name[7],"Omega_cdm"); - sprintf(fc->value[7],"%e",cosmology.Omega_m-cosmology.Omega_nu-cosmology.omb); + sprintf(fc->value[7],"%e",cosmology.Omega_m-cosmology.Omega_nu-cosmology.omb);//I don't think I need to subtract out the ultrarelativistic neutrinos. I think the energy density of that is not part of omega_m strcpy(fc->name[8],"Omega_b"); sprintf(fc->value[8],"%e",cosmology.omb); @@ -630,13 +642,13 @@ double get_class_s8(struct file_content *fc, int *status){ // pass neutrino parameters if (cosmology.M_nu > 1.e-5 || cosmology.Omega_nu >0.){ strcpy(fc->name[14],"N_ncdm"); - sprintf(fc->value[14],"%d",1); + sprintf(fc->value[14],"%d",3); if (cosmology.Omega_nu >0.) { strcpy(fc->name[15],"Omega_ncdm"); -// sprintf(fc->value[15],"%e,%e,%e",cosmology.Omega_nu/3,cosmology.Omega_nu/3,cosmology.Omega_nu/3); - sprintf(fc->value[15],"%e",cosmology.Omega_nu); + sprintf(fc->value[15],"%e,%e,%e",cosmology.Omega_nu/3,cosmology.Omega_nu/3,cosmology.Omega_nu/3); + //sprintf(fc->value[15],"%e",cosmology.Omega_nu); } else{ strcpy(fc->name[15],"m_ncdm"); //\Sigma(m_nu) in eV @@ -644,7 +656,7 @@ double get_class_s8(struct file_content *fc, int *status){ sprintf(fc->value[15],"%e,%e,%e",cosmology.M_nu/3,cosmology.M_nu/3,cosmology.M_nu/3); } strcpy(fc->name[16],"N_ur"); - sprintf(fc->value[16],"%e",2.0328);//0.00641); + sprintf(fc->value[16],"%e",0.00641);//0.00641); } //normalization comes last, so that all other parameters are filled in for determining A_s if sigma_8 is specified if (cosmology.A_s >0){ @@ -672,99 +684,288 @@ void fprint_parser(struct file_content * fc,int parser_length){ fprintf(stderr, "%d %s %s\n",i, fc->name[i],fc->value[i]); } } -double p_class(double k_coverh0,double a, int NL, int *status){ - static cosmopara C; - static double **table_P_L = 0; - static double **table_P_NL = 0; - static double logkmin = 0., logkmax = 0., dk = 0., da = 0.; - static int class_status = 0; - double val,klog; - if (recompute_cosmo3D(C)){ - if (table_P_L ==0){ - table_P_L = create_double_matrix(0, Ntable.N_a-1, 0, Ntable.N_k_nlin-1); - table_P_NL = create_double_matrix(0, Ntable.N_a-1, 0, Ntable.N_k_nlin-1); - da = (1. - limits.a_min)/(Ntable.N_a-1.); - logkmin = log(limits.k_min_mpc*cosmology.coverH0); - logkmax = log(limits.k_max_mpc_class*cosmology.coverH0); - dk = (logkmax-logkmin)/(Ntable.N_k_nlin-1.); - } - //allocate CLASS structures - struct background ba; // for cosmological background - struct thermo th; // for thermodynamics - struct perturbs pt; // for source functions - struct transfers tr; // for transfer functions - struct primordial pm; // for primordial spectra - struct spectra sp; // for output spectra - struct nonlinear nl; // for non-linear spectra - struct lensing le; - struct output op; - ErrorMsg errmsg; // for error messages +int run_class_SNBAO( + struct file_content *fc, + struct background *ba, + struct thermo *th, + struct perturbs *pt, + struct transfers *tr, + struct primordial *pm, + struct spectra *sp, + struct nonlinear *nl, + struct lensing *le){ + struct precision pr; // for precision parameters + struct output op; /* for output files */ + ErrorMsg errmsg; // for error messages + + if(input_init(fc,&pr,ba,th,pt,tr,pm,sp,nl,le,&op,errmsg) == _FAILURE_) { + fprintf(stderr,"cosmo3D.c: Error running CLASS input:%s\n",errmsg); + parser_free(fc); + return 1; + } + if (background_init(&pr,ba) == _FAILURE_) { + fprintf(stderr,"cosmo3D.c: Error running CLASS background:%s\n",ba->error_message); + return 1; + } + if (thermodynamics_init(&pr,ba,th) == _FAILURE_) { + fprintf(stderr,"cosmo3D.c: Error running CLASS thermodynamics:%s\n",th->error_message); + background_free(ba); + return 1; + } + cosmology.theta_s = 100.*th->rs_rec/th->ra_rec; + cosmology.rs_d = th->rs_d; + cosmology.h0 = ba->h; + return 0; +} +void free_class_structs_SNBAO( + struct background *ba, + struct thermo *th, + struct perturbs *pt, + struct transfers *tr, + struct primordial *pm, + struct spectra *sp, + struct nonlinear *nl, + struct lensing *le){ + if (thermodynamics_free(th) == _FAILURE_) { + printf("\n\nError in thermodynamics_free \n=>%s\n",th->error_message); + } - struct file_content fc; - int parser_length = 30; - if (parser_init(&fc,parser_length,"none",errmsg) == _FAILURE_){ - fprintf(stderr,"cosmo3D.c: CLASS parser init error:%s\n",errmsg); - *status = 1; - return 0.; - } - for (int i =0; i < parser_length; i++){ - strcpy(fc.name[i]," "); - strcpy(fc.value[i]," "); - } + if (background_free(ba) == _FAILURE_) { + printf("\n\nError in background_free \n=>%s\n",ba->error_message); + } +} - *status = fill_class_parameters(&fc,parser_length); - if(*status>0) return 1; - *status = run_class(&fc,&ba,&th,&pt,&tr,&pm,&sp,&nl,&le); - if(*status>0) { - fprint_parser(&fc,parser_length); - parser_free(&fc); - return 1; - } - parser_free(&fc); - double aa,norm, k_class,Pk,ic; - int i,j,s; - aa = limits.a_min; - if (cosmology.A_s){ - norm = 3.*log(cosmology.h0/cosmology.coverH0); - cosmology.sigma_8 = sp.sigma8; - } - else{ - norm = log(pow(cosmology.sigma_8/sp.sigma8,2.)*pow(cosmology.h0/cosmology.coverH0,3.)); - } - //printf("power spectrum scaling factor %e\n", pow(cosmology.sigma_8/sp.sigma8,2.)); - if (*status ==0){ + +double p_class_SNBAO(int *status){ + static cosmopara C; + static int class_status = 0; + + if (recompute_cosmo3D(C)){ + //allocate CLASS structures + struct background ba; // for cosmological background + struct thermo th; // for thermodynamics + struct perturbs pt; // for source functions + struct transfers tr; // for transfer functions + struct primordial pm; // for primordial spectra + struct spectra sp; // for output spectra + struct nonlinear nl; // for non-linear spectra + struct lensing le; + struct output op; + + ErrorMsg errmsg; // for error messages + + struct file_content fc; + int parser_length = 30; + if (parser_init(&fc,parser_length,"none",errmsg) == _FAILURE_){ + fprintf(stderr,"cosmo3D.c: CLASS parser init error:%s\n",errmsg); + *status = 1; + return 0.; + } + for (int i =0; i < parser_length; i++){ + strcpy(fc.name[i]," "); + strcpy(fc.value[i]," "); + } + + *status = fill_class_parameters(&fc,parser_length); + if(*status>0) return 1; + *status = run_class_SNBAO(&fc,&ba,&th,&pt,&tr,&pm,&sp,&nl,&le); + if(*status>0) { + fprint_parser(&fc,parser_length); + parser_free(&fc); + return 1; + } + parser_free(&fc); + if (*status ==0){ + free_class_structs_SNBAO(&ba,&th,&pt,&tr,&pm,&sp,&nl,&le); + } + update_cosmopara(&C); + } +} + + + +double p_class_inner(double k_coverh0,double a, int NL, int cdm_b, int nonlinear, int *status){ + static cosmopara C; + static double **table_P_L = 0; + static double **table_P_NL = 0; + static double **table_P_L_c = 0; + static double **table_P_NL_c = 0; + static double logkmin = 0., logkmax = 0., dk = 0., da = 0.; + static int class_status = 0; + double val,klog; + + if (recompute_cosmo3D(C)){ + if (table_P_L ==0){ + table_P_L = create_double_matrix(0, Ntable.N_a-1, 0, Ntable.N_k_nlin-1); + table_P_NL = create_double_matrix(0, Ntable.N_a-1, 0, Ntable.N_k_nlin-1); + table_P_L_c = create_double_matrix(0, Ntable.N_a-1, 0, Ntable.N_k_nlin-1); + table_P_NL_c = create_double_matrix(0, Ntable.N_a-1, 0, Ntable.N_k_nlin-1); + da = (1. - limits.a_min)/(Ntable.N_a-1.); + logkmin = log(limits.k_min_mpc*cosmology.coverH0); + logkmax = log(limits.k_max_mpc_class*cosmology.coverH0); + dk = (logkmax-logkmin)/(Ntable.N_k_nlin-1.); + } + //allocate CLASS structures + struct background ba; // for cosmological background + struct thermo th; // for thermodynamics + struct perturbs pt; // for source functions + struct transfers tr; // for transfer functions + struct primordial pm; // for primordial spectra + struct spectra sp; // for output spectra + struct nonlinear nl; // for non-linear spectra + struct lensing le; + struct output op; + + ErrorMsg errmsg; // for error messages + + struct file_content fc; + int parser_length = 30; + if (parser_init(&fc,parser_length,"none",errmsg) == _FAILURE_){ + fprintf(stderr,"cosmo3D.c: CLASS parser init error:%s\n",errmsg); + *status = 1; + return 0.; + } + for (int i =0; i < parser_length; i++){ + strcpy(fc.name[i]," "); + strcpy(fc.value[i]," "); + } + + *status = fill_class_parameters(&fc,parser_length); + switch(nonlinear){ + case 0: break; //use Halofit within CLASS + case 1: //use hmcode2020 within class + strcpy(fc.name[1],"non linear"); + strcpy(fc.value[1],"hmcode2020"); + break; + case 2: //use hmcode2020 with TAGN within class + strcpy(fc.name[1],"non linear"); + strcpy(fc.value[1],"hmcode2020"); //to use Halofit within CLASS + strcpy(fc.name[18],"hmcode2020log10tagn"); + sprintf(fc.value[18],"%e",cosmology.log10Tagn); + break; + } + + if(*status>0) return 1; + *status = run_class(&fc,&ba,&th,&pt,&tr,&pm,&sp,&nl,&le); + if(*status>0) { + fprint_parser(&fc,parser_length); + parser_free(&fc); + return 1; + } + parser_free(&fc); + double aa,norm, k_class,Pk,ic, Pk_c; + int i,j,s; + aa = limits.a_min; + if (cosmology.A_s){ + norm = 3.*log(cosmology.h0/cosmology.coverH0); + cosmology.sigma_8 = (nl.sigma8[nl.index_pk_total]); + cosmology.sigma_8_cc = (nl.sigma8[nl.index_pk_cluster]); + } + else{ + norm = log(pow(cosmology.sigma_8/(nl.sigma8[nl.index_pk_total]),2.)*pow(cosmology.h0/cosmology.coverH0,3.)); + } + //printf("power spectrum scaling factor %e\n", pow(cosmology.sigma_8/sp.sigma8,2.)); + if (*status ==0){ + for (i=0; i= 0.99999){a =0.99999;} + if (recompute_cosmo3D(C)){ + update_cosmopara(&C); + if (table_P_Lz!=0) free_double_matrix(table_P_Lz,0, Ntable.N_a-1, 0, Ntable.N_k_lin-1); + table_P_Lz = create_double_matrix(0, Ntable.N_a-1, 0, Ntable.N_k_lin-1); + grow0=growfac(1.); + da = (1. - limits.a_min)/(Ntable.N_a-1.); + aa = limits.a_min; for (i=0; i1.0) aa=1.0; + amp=growfac(aa)/grow0; + ampsqr=amp*amp; + + logkmin = log(limits.k_min_mpc); + logkmax = log(limits.k_max_mpc); + dk = (logkmax - logkmin)/(Ntable.N_k_lin-1.); klog = logkmin; - for (j=0; j exp(logkmax)) return 0.0; + klog = log(k/cosmology.coverH0); + val = interpol2d(table_P_Lz, Ntable.N_a, limits.a_min, 1., da, a, Ntable.N_k_lin, logkmin, logkmax, dk, klog, 3.0+cosmology.n_spec, 0.0); + if(isnan(val) || (k==0)) return 0.0; + return 2.0*constants.pi_sqr*exp(val)/k/k/k; } // linear power spectrum routine with k in units H_0/c; used in covariances.c for beat coupling and in halo.c -double p_lin(double k,double a) +double p_lin_cdm_b(double k,double a) { static cosmopara C; static double **table_P_Lz = 0; static double logkmin = 0., logkmax = 0., dk = 0., da = 0.; int status; - if (strcmp(pdeltaparams.runmode,"CLASS")==0 || strcmp(pdeltaparams.runmode,"class")==0) return p_class(k,a,0, &status); + if (strcmp(pdeltaparams.runmode,"CLASS")==0 || strcmp(pdeltaparams.runmode,"class")==0 || strcmp(pdeltaparams.runmode,"classtagn")==0 || strcmp(pdeltaparams.runmode,"classhmcode")==0) return p_class(k,a,0, 1, &status); double amp,ampsqr,grow0,aa,klog,val; @@ -1335,6 +1536,79 @@ return exp(val); // returns the dimensionless power spectrum as a function of scale factor a and k in units of h/Mpc } +double p_emu2_only(double k_NL,double a) +{ + static cosmopara C; + + static double logkmin = 0., logkmax = 0., dk = 0., da = 0.; + static double **table_P_NL=0; + + double aa,klog,val, oldk; + double kstar[613],p_emu[613],emu_min,emu_max,k_min_emu,k_max_emu; + double ystar[101][613]; + int i,j,k, nk, status; + + if (recompute_cosmo3D(C)){ + update_cosmopara(&C); + if (table_P_NL!=0) free_double_matrix(table_P_NL,0, Ntable.N_a-1, 0, Ntable.N_k_nlin-1); + table_P_NL = create_double_matrix(0, Ntable.N_a-1, 0,Ntable.N_k_nlin-1); + da = (1.0 - limits.a_min)/(Ntable.N_a-1.); + logkmin = log(limits.k_min_mpc/cosmology.h0); + logkmax = log(limits.k_max_mpc/cosmology.h0); + dk = (logkmax - logkmin)/(Ntable.N_k_nlin-1.); + + printf("Starting P_delta %le %le %le %le %le %le %le\n",cosmology.Omega_m,cosmology.omb,cosmology.n_spec,cosmology.A_s,cosmology.w0,cosmology.wa,cosmology.h0); + double * redshift = create_double_vector(0, Ntable.N_a-1); + aa = limits.a_min; + for (i=0; i= log(k_min_emu)) && (klog <= log(k_max_emu))){ + table_P_NL[i][j]=log(gsl_spline_eval(timspline, exp(klog), acc)); + } + if(klog>log(k_max_emu)) table_P_NL[i][j]=log(emu_max); + if(klog=lmax){ + W = 0.; + } + else{ + W = (lmax - l1) / l_interval - 1./(2.*M_PI) * sin(2.*(lmax - l1)*M_PI/l_interval); + } + + if(l2<=lpivot){ + W *= 1.; + } + else if(l2>=lmax){ + W *= 0.; + } + else{ + W *= (lmax - l2) / l_interval - 1./(2.*M_PI) * sin(2.*(lmax - l2)*M_PI/l_interval); + } + return W; +} + +double bin_cov_NG_shear_shear_tomo(double l1,double l2, int z1, int z2, int z3, int z4){ + static int Z1 = -42; + static int Z2 = -42; + static int Z3 = -42; + static int Z4 = -42; + static int Ntab = 20; + static double **table=0; + static double ds = .0, logsmin = .0, logsmax = .0; + int i,j; + double res, llog1,llog2,ll1,ll2; + if (Z1!=z1 || Z2!=z2 || Z3!=z3 || Z4!=z4 ) + { + if (table==0) { table = create_double_matrix(0, Ntab-1, 0, Ntab-1);} + logsmin = log(1.); + logsmax = log(5.e+4); + ds = (logsmax - logsmin)/(Ntab - 1.); + llog1 = logsmin; + for (i=0; i logsmin && llog2 > logsmin && llog1 < logsmax && llog2 < logsmax){ + res = exp(interpol2d(table, Ntab, logsmin, logsmax, ds, llog1, Ntab, logsmin, logsmax, ds, llog2,0.0,0.0));} + res *= filter_cov_fourier(llog1, llog2, logsmax, log(4.e4)); + return res; +} +double bin_cov_NG_gl_gl_tomo(double l1,double l2, int z1, int z2, int z3, int z4){ + static int Z1 = -42; + static int Z2 = -42; + static int Z3 = -42; + static int Z4 = -42; + static int Ntab = 40; + static double **table=0; + static double ds = .0, logsmin = .0, logsmax = .0; + int i,j; + double res, llog1,llog2,ll1,ll2; + if (Z1!=z1 || Z2!=z2 || Z3!=z3 || Z4!=z4 ) + { + if (table==0) { table = create_double_matrix(0, Ntab-1, 0, Ntab-1);} + logsmin = log(1.); + logsmax = log(5.e+4); + ds = (logsmax - logsmin)/(Ntab - 1.); + llog1 = logsmin; + for (i=0; i logsmin && llog2 > logsmin && llog1 < logsmax && llog2 < logsmax){ + res = interpol2d(table, Ntab, logsmin, logsmax, ds, llog1, Ntab, logsmin, logsmax, ds, llog2,0.0,0.0);} + return res; +} +double bin_cov_NG_cl_cl_tomo(double l1,double l2, int z1, int z2, int z3, int z4){ + static int Z1 = -42; + static int Z2 = -42; + static int Z3 = -42; + static int Z4 = -42; + static int Ntab = 40; + static double **table=0; + static double ds = .0, logsmin = .0, logsmax = .0; + int i,j; + double res, llog1,llog2,ll1,ll2; + if (Z1!=z1 || Z2!=z2 || Z3!=z3 || Z4!=z4 ) + { + if (table==0) { table = create_double_matrix(0, Ntab-1, 0, Ntab-1);} + logsmin = log(1.); + logsmax = log(5.e+4); + ds = (logsmax - logsmin)/(Ntab - 1.); + llog1 = logsmin; + for (i=0; i logsmin && llog2 > logsmin && llog1 < logsmax && llog2 < logsmax){ + res = interpol2d(table, Ntab, logsmin, logsmax, ds, llog1, Ntab, logsmin, logsmax, ds, llog2,0.0,0.0);} + return res; +} +double bin_cov_NG_cl_shear_tomo(double l1,double l2, int z1, int z2, int z3, int z4){ + static int Z1 = -42; + static int Z2 = -42; + static int Z3 = -42; + static int Z4 = -42; + static int Ntab = 40; + static double **table=0; + static double ds = .0, logsmin = .0, logsmax = .0; + int i,j; + double res, llog1,llog2,ll1,ll2; + if (Z1!=z1 || Z2!=z2 || Z3!=z3 || Z4!=z4 ) + { + if (table==0) { table = create_double_matrix(0, Ntab-1, 0, Ntab-1);} + logsmin = log(1.); + logsmax = log(5.e+4); + ds = (logsmax - logsmin)/(Ntab - 1.); + llog1 = logsmin; + for (i=0; i logsmin && llog2 > logsmin && llog1 < logsmax && llog2 < logsmax){ + res = interpol2d(table, Ntab, logsmin, logsmax, ds, llog1, Ntab, logsmin, logsmax, ds, llog2,0.0,0.0);} + return res; +} +double bin_cov_NG_cl_gl_tomo(double l1,double l2, int z1, int z2, int z3, int z4){ + static int Z1 = -42; + static int Z2 = -42; + static int Z3 = -42; + static int Z4 = -42; + static int Ntab = 40; + static double **table=0; + static double ds = .0, logsmin = .0, logsmax = .0; + int i,j; + double res, llog1,llog2,ll1,ll2; + if (Z1!=z1 || Z2!=z2 || Z3!=z3 || Z4!=z4 ) + { + if (table==0) { table = create_double_matrix(0, Ntab-1, 0, Ntab-1);} + logsmin = log(1.); + logsmax = log(5.e+4); + ds = (logsmax - logsmin)/(Ntab - 1.); + llog1 = logsmin; + for (i=0; i logsmin && llog2 > logsmin && llog1 < logsmax && llog2 < logsmax){ + res = interpol2d(table, Ntab, logsmin, logsmax, ds, llog1, Ntab, logsmin, logsmax, ds, llog2,0.0,0.0);} + return res; +} +double bin_cov_NG_gl_shear_tomo(double l1,double l2, int z1, int z2, int z3, int z4){ + static int Z1 = -42; + static int Z2 = -42; + static int Z3 = -42; + static int Z4 = -42; + static int Ntab = 40; + static double **table=0; + static double ds = .0, logsmin = .0, logsmax = .0; + int i,j; + double res, llog1,llog2,ll1,ll2; + if (Z1!=z1 || Z2!=z2 || Z3!=z3 || Z4!=z4 ) + { + if (table==0) { table = create_double_matrix(0, Ntab-1, 0, Ntab-1);} + logsmin = log(1.); + logsmax = log(5.e+4); + ds = (logsmax - logsmin)/(Ntab - 1.); + llog1 = logsmin; + for (i=0; i logsmin && llog2 > logsmin && llog1 < logsmax && llog2 < logsmax){ + res = interpol2d(table, Ntab, logsmin, logsmax, ds, llog1, Ntab, logsmin, logsmax, ds, llog2,0.0,0.0);} + return res; +} diff --git a/theory/covariances_real_binned_fullsky_nonlimber_w.c b/theory/covariances_real_binned_fullsky_nonlimber_w.c new file mode 100644 index 00000000..781be13b --- /dev/null +++ b/theory/covariances_real_binned_fullsky_nonlimber_w.c @@ -0,0 +1,1078 @@ +/****************************************************************************** +CosmoLike Configuration Space Covariances for Projected Galaxy 2-Point Statistics +https://github.com/CosmoLike/CosmoCov +by CosmoLike developers +******************************************************************************/ + +/*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/ +// Note the look-up tables for power spectrum covariances are recomputed if one the redshift bins changes +// Loop over theta1, theta2 first, before computing the next combination of redshift bins +/*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/ +/*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/ +// The vector called "theta" contains theta_min, the lower bin boundaries +// This is used in the bin-average and shot/shape noise computation +/*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/ + +double w_mask(double theta_min);// angular correlation funtion of survey mask, computed as sum P_l(cos(like.theta[nt])*C_mask(l) +double cov_G_shear_binned(double theta1_min, double theta1_max,double theta2_min, double theta2_max, int z1,int z2,int z3,int z4,int pm1,int pm2); //Version of Gaussian cov calculation for wide bins +double cov_NG_shear_binned(double theta1_min, double theta1_max,double theta2_min, double theta2_max, int z1,int z2,int z3,int z4,int pm1,int pm2); + +double cov_NG_cl_cl_real_binned(double theta1_min, double theta1_max,double theta2_min, double theta2_max, int z1,int z2, int z3, int z4); +double cov_G_cl_cl_real_binned(double theta1_min, double theta1_max,double theta2_min, double theta2_max, int z1,int z2, int z3, int z4); + +double cov_NG_gl_gl_real_binned(double theta1_min, double theta1_max,double theta2_min, double theta2_max, int z1,int z2, int z3, int z4); +double cov_G_gl_gl_real_binned(double theta1_min, double theta1_max,double theta2_min, double theta2_max, int z1l,int z1s, int z2l, int z2s); + +double cov_NG_cl_gl_real_binned(double theta1_min, double theta1_max,double theta2_min, double theta2_max, int z1,int z2, int zl, int zs);//z1,z2 clustering bins; zl,zs g-g lensing bins +double cov_G_cl_gl_real_binned(double theta1_min, double theta1_max,double theta2_min, double theta2_max, int z1,int z2, int zl, int zs); + +double cov_NG_gl_shear_real_binned(double theta1_min, double theta1_max,double theta2_min, double theta2_max, int zl,int zs, int z3, int z4, int pm); +double cov_G_gl_shear_real_binned(double theta1_min, double theta1_max,double theta2_min, double theta2_max,int zl,int zs, int z3, int z4,int pm); + +double cov_NG_cl_shear_real_binned(double theta1_min, double theta1_max,double theta2_min, double theta2_max, int z1,int z2, int z3, int z4, int pm); //z1,z2 clustering bins; z3,z4 shear bins +double cov_G_cl_shear_real_binned(double theta1_min, double theta1_max,double theta2_min, double theta2_max, int z1,int z2, int z3, int z4, int pm); + +double func_for_cov_G_shear(double l, int *ar); +double func_for_cov_G_cl(double l, int *ar); +double func_for_cov_G_gl(double l, int *ar); +double func_for_cov_G_cl_shear(double l, int *ar); +double func_for_cov_G_cl_gl(double l, int *ar); +double func_for_cov_G_gl_shear(double l, int *ar); + +//used only for computing 2pt model vector +double Cl_cl_cov(double l, int z1, int z2); //redirect to C_cl_tomo_nonlimber_interp(l,n1,n3) for non-Limber, C_cl_tomo for Limber + +/************************* covariance routines for angular correlation functions *********************/ +/*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/ +// Note the look-up tables for power spectrum covariances are recomputed if one the redshift bins changes +// Loop over theta1, theta2 first, before computing the next combination of redshift bins +/*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/ +double J0_binned(double l, double tmin, double tmax){ + return 2./(l*tmax*tmax-l*tmin*tmin)*(tmax*gsl_sf_bessel_J1(l*tmax)-tmin*gsl_sf_bessel_J1(l*tmin)); +} +double xJ2 (double x, void *params){ + double *ar = (double *) params; + return 2.*x*gsl_sf_bessel_Jn(2,x*ar[0]); +} +double J2_binned(double l, double tmin, double tmax){ + if (tmin*l < 1.0){ + double array[1] ={l}; + return int_gsl_integrate_high_precision(xJ2,(void*)array,tmin,tmax,NULL,1000)/(tmax*tmax-tmin*tmin); + } + return 1./(l*l*tmax*tmax-l*l*tmin*tmin)*(4.*gsl_sf_bessel_J0(l*tmin)-4.*gsl_sf_bessel_J0(l*tmax)+2.*l*tmin*gsl_sf_bessel_J1(l*tmin)-2.*l*tmax*gsl_sf_bessel_J1(l*tmax)); +} + +double xJ4 (double x, void *params){ + double *ar = (double *) params; + return 2.*x*gsl_sf_bessel_Jn(4,x*ar[0]); +} +double J4_binned(double l, double tmin, double tmax){ + if (tmin*l < 1.0){ + double array[1] ={l}; + return int_gsl_integrate_high_precision(xJ4,(void*)array,tmin,tmax,NULL,1000)/(tmax*tmax-tmin*tmin); + } + double j1_max = gsl_sf_bessel_J1(l*tmax); + double j1_min = gsl_sf_bessel_J1(l*tmin); + + return 2./(l*l*l*(tmax*tmax-tmin*tmin))*(((8.-l*l*tmin*tmin)*j1_min/tmin+(l*l*tmax*tmax-8.)*j1_max/tmax)-8.*l*(gsl_sf_bessel_Jn(2,l*tmax)-gsl_sf_bessel_Jn(2,l*tmin))); +} + +double w_mask(double theta_min){ + static int NTHETA = 0; + static double *w_vec =0; + int i,l; + if (like.theta ==NULL || like.Ntheta < 1){ + printf("covariances_real_binned.c:w_mask: like.theta or like.Ntheta not initialized\nEXIT\n"); + exit(1); + } + if (w_vec ==0){ + w_vec = create_double_vector(0,like.Ntheta-1); + NTHETA = like.Ntheta; + FILE *F1; + F1 = fopen(covparams.C_FOOTPRINT_FILE,"r"); + if (F1 != NULL) { //covparams.C_FOOTPRINT_FILE exists, use healpix C_mask(l) to compute mask correlation function + fclose(F1); + int lbins = line_count(covparams.C_FOOTPRINT_FILE); + double *Cl; + Cl = create_double_vector(0,lbins-1); + F1=fopen(covparams.C_FOOTPRINT_FILE,"r"); + for (int i = 0; i < lbins; i++){ + int tmp; + double tmp2; + fscanf(F1,"%d %le\n",&tmp, &tmp2); + Cl[i] = tmp2; + } + fclose(F1); + + printf("\nTabulating w_mask(theta) from mask power spectrum %s\n",covparams.C_FOOTPRINT_FILE); + double **Pl, *xmin, *xmax, *Pmin, *Pmax; + Pl =create_double_matrix(0, like.Ntheta-1, 0, lbins); + xmin= create_double_vector(0, like.Ntheta-1); + xmax= create_double_vector(0, like.Ntheta-1); + double logdt=(log(like.vtmax)-log(like.vtmin))/like.Ntheta; + Pmin= create_double_vector(0, lbins); + Pmax= create_double_vector(0, lbins); + for(i=0; i= tomo.clustering_Nbin ||nj < 0 || nj >= tomo.shear_Nbin){ + printf("C_gl_tomo_all(l,%d,%d) outside tomo.X_Nbin range\nEXIT\n",ni,nj); exit(1); + } + + if (recompute_ggl(C,G,N,ni)){ + if (table==0){ + if (tomo.shear_Nbin> 10){printf("tomo.shear_Nbin too large for look-up table in C_gl_tomo_all\nEXIT\n");exit(1);} + table = create_double_matrix(0, tomo.clustering_Nbin*10-1, 0, Ntable.N_ell-1); + logsmin = log(limits.P_2_s_min); + logsmax = log(limits.P_2_s_max); + ds = (logsmax - logsmin)/(Ntable.N_ell); + } + int i,j,k; + double llog; + + for (k=0; k0 && pm2>0){ + for (l1 = 2; l1 < LMAX; l1++){ + l1_double = (double)l1; + cov_g_l = func_for_cov_G_shear(l1_double, ar); + for(i=0; i0 && pm2==0){ + for (l1 = 2; l1 < LMAX; l1++){ + l1_double = (double)l1; + cov_g_l = func_for_cov_G_shear(l1_double, ar); + for(i=0; i0){ + for (l1 = 2; l1 < LMAX; l1++){ + l1_double = (double)l1; + cov_g_l = func_for_cov_G_shear(l1_double, ar); + for(i=0; i0){ + for (l1 = 1; l1 < LMAX; l1++){ + l1_double = (double)l1; + // printf("l1,%d\n", l1); + cov_g_l = func_for_cov_G_gl_shear(l1_double, ar); + for(i=0; i0){ + for (l1 = 1; l1 < LMAX; l1++){ + l1_double = (double)l1; + // printf("l1,%d\n", l1); + cov_g_l = func_for_cov_G_cl_shear(l1_double, ar); + for(i=0; i0)){ + for (l2 = 1; l2 < LMAX; l2++){ + tri = bin_cov_NG_cl_cl_tomo(l1_double,(double)l2,z1,z2,z3,z4); + for(i=0; i +double conc_Ludlow16_fit(double m, double a); +double conc_Ludlow16(double m, double a); + +// use this routine in inner I[0-1]j and modify int_rho_nfw if to work with different halo profiles, e.g. to include adiabatic contraction, AGN feedback, etc. +/*halo model building blocks */ +double I0j_y (int j, double k1, double k2, double k3, double k4, double a, int is_y[4]); +/*halo model matter power spectrum, bispectrum, trispectrum*/ +double p_1h_hmcode(double k, double a); +double p_2h_hmcode(double k, double a); +double Pdelta_hmcode_2020(double k, double a); +double P_my(double k,double a); + + +/* ********************* Routines for halo model ************* */ +/*++++++++++++++++++++++++++++++++++++++++* +* Variance of the density field * +*++++++++++++++++++++++++++++++++++++++++*/ + +double dlogsigma_dlogR(double m) +{ + double dlogm = 0.0001; + double logm = log(m); + double m1 = exp(logm + dlogm); + double dlogsigma2 = log(sigma2(m1) / sigma2(m)); + double dlogR = log(radius(m1) / radius(m)); + return 0.5 * dlogsigma2 / dlogR; +} +double dlogPlin_dlogk(double m) +{ + double k0 = 0.69* 2*M_PI / radius(m); + double dlogk = 0.001; + double k1 = exp(log(k0) + dlogk); + double dlogPlin = log(p_lin(k1,1.) / p_lin(k0,1.)); + return dlogPlin / dlogk; +} + + +/***************** halo profiles ***************/ +/******** mass-concentration relation **********/ +double conc(double m, double a) // for matter +{ +#ifdef LUDLOW16 + return conc_Ludlow16(m, a); +#endif +#ifdef LUDLOW16_FIT + return conc_Ludlow16_fit(m, a); +#endif + + double result; + double M0=pow(10,nuisance.gas_lgM0); + // result = 9.*pow(nu(m,a),-.29)*pow(growfac(a)/growfac(1.),1.15);// Bhattacharya et al. 2013, Delta = 200 rho_{mean} (Table 2) + result = 10.14*pow(m/2.e+12,-0.081)*pow(a,1.01); //Duffy et al. 2008 (Delta = 200 mean) + if(like.feedback_on == 1){ + result *= (1.+nuisance.gas_eps1 + (nuisance.gas_eps2 - nuisance.gas_eps1)/(1.+pow(M0/m, nuisance.gas_beta)) ); + } + return result; +} + +double conc_y(double m, double a) // for y field, with a separate set of gas parameters lgM0,beta,eps1,eps2. +// ONLY USED FOR TEST_CALIB +{ + double result; + double M0=pow(10,nuisance.gas_lgM0_v2); + // result = 9.*pow(nu(m,a),-.29)*pow(growfac(a)/growfac(1.),1.15);// Bhattacharya et al. 2013, Delta = 200 rho_{mean} (Table 2) + result = 10.14*pow(m/2.e+12,-0.081)*pow(a,1.01); //Duffy et al. 2008 (Delta = 200 mean) - If use this, set c_max=50 !! + if(like.feedback_on == 1){ + result *= (1.+nuisance.gas_eps1_v2 + (nuisance.gas_eps2_v2 - nuisance.gas_eps1_v2)/(1.+pow(M0/m, nuisance.gas_beta_v2)) ); + } + return result; +} + +#ifdef LUDLOW16_FIT +double conc_Ludlow16_fit(double m, double a) +// Ludlow16 fit at Planck cosmology +{ + double c0, beta, gamma1, gamma2, nu0; + c0 = 3.395 * pow(a, 0.215); + beta = 0.307 * pow(a, -0.540); + gamma1 = 0.628 * pow(a, 0.047); + gamma2 = 0.317 * pow(a, 0.893); + double a2 = a*a; + nu0 = (4.135 - 0.564 / a - 0.210 / a2 + 0.0557 / (a2*a) - 0.00348 / (a2*a2)) * growfac(1.) / growfac(a); + double nu_nu0_ratio = nu(m,a) / nu0; + return c0 * pow(nu_nu0_ratio, -gamma1) * pow(1+ pow(nu_nu0_ratio, 1./beta), -beta*(gamma2-gamma1)); +} +#endif + + +#ifdef LUDLOW16 +double conc_Ludlow16(double m, double a) +{ + static double **table=0; + static int N_c = 30, N_a = 50; + static double c_min = 0.608, c_max = 50.; // the method produces cmin ~0.607 + static double a_min, a_max = 0.999; + static double dc, da; + static double C_Ludlow = 650., f_Ludlow = 0.02; + double cc, aa; + double M2, c3; + double af, rho_2; + int i, j; + printf("here!\n"); + if (table==0) { + table = create_double_matrix(0, N_c-1, 0, N_a-1); + a_min = limits.a_min_hm; + dc = (c_max-c_min) / (N_c - 1); + da = (a_max - a_min) / (N_a - 1); + printf("here!-\n"); + for (i=0; i= a_max) {a = a_max;} + + int ia = floor((a - a_min) / da); + double frac_high = (a - (a_min + ia * da)) / da; + double table_interp[N_c]; + + if (ia == N_a-1) { + ia--; + frac_high = 0; + } + + double LHS, sig2rf, sig2r; + sig2r = sigma2(m); + sig2rf = sigma2(f_Ludlow * m); + LHS = sqrt(2.* (sig2rf - sig2r)); + printf("here!!!\n"); + for (i=0; icmax){return 0.;} + if (log(x) < logxmin || log(x) > logxmax){return 0.;} + // printf("c, x = %le, %le\n",c,x); + return interpol2d(table, N_c, cmin, cmax, dc, c, N_x, logxmin, logxmax, dx, log(x), 0.0, 0.0); +} + +/*********** FT of bound gas K-S Profile (sinc integral part) **************/ + +double int_KS(double r, void *params){//Fourier kernel * K-S profile, integrand for u_KS + double *array = (double*)params; + double k = array[0]; + double c = array[1]; + double rv = array[2]; + double rs =rv/c; + double x = r/rs; + return r*sinl(k*r)/k*pow(log(1.+x)/x, nuisance.gas_Gamma_KS/(nuisance.gas_Gamma_KS-1.)); +} + +double u_KS(double c, double k, double rv){ + // FFT density of K-S profile, truncated at r_Delta, through direct integration + // use this routine in inner I[0-1]j and modify int_KS to work with different halo profiles + + double array[3] ={k,c,rv}; + return int_gsl_integrate_medium_precision(int_KS, (void*)array, 0,rv,NULL, 5000); +} + +double int_F_KS(double x, void *params){ + double *array = (double*)params; + double y = array[0]; + return x*sinl(x*y)/y * pow(log(1.+x)/x, nuisance.gas_Gamma_KS/(nuisance.gas_Gamma_KS-1.)); +} +double F_KS(double c, double kr_s){ + double array[1] ={kr_s}; + return int_gsl_integrate_medium_precision(int_F_KS, (void*)array, 0,c,NULL, 5000); +} + +#ifdef RUN_FFT +void fft_F_KS(double *c_arr, int Nc, double *krs_arr, int Nx, double **F) { + config fftconfig; + fftconfig.nu = 1.01; + fftconfig.c_window_width = 0.25; + fftconfig.derivative = 0; + fftconfig.N_pad = 0; + fftconfig.N_extrap_low = 0; + fftconfig.N_extrap_high = 0; + + int ell=0; // spherical bessel order + double x[Nx]; + int i,j; + for(i=0;ic_arr[j] ? 0 : pow(x[i],3)*pow(log(1.+x[i])/x[i], nuisance.gas_Gamma_KS/(nuisance.gas_Gamma_KS-1.)); + // fprintf(output, "%le %le %le\n", c_arr[j], x[i], fx[j][i]); + } + } + // fclose(output); + // exit(0); + + cfftlog_multiple(x, fx, Nx, Nc, &fftconfig, ell, krs_arr, F); + for(j=0;jcmax){return 0.;} + if (log(x) < logxmin || log(x) > logxmax){return 0.;} + return interpol2d(table, N_c, cmin, cmax, dc, c, N_x, logxmin, logxmax, dx, log(x), 0.0, 0.0); +} + + + +double int_KS_norm(double r, void *params){//normalization of u_KS + double *array = (double*)params; + double c = array[0]; + double rv = array[1]; + double rs =rv/c; + double x = r/rs; + return r*r*pow(log(1.+x)/x, 1./(nuisance.gas_Gamma_KS-1.)); +} + +double KS_norm(double c, double rv){ + + double array[2] ={c,rv}; + return int_gsl_integrate_medium_precision(int_KS_norm, (void*)array, 0,rv,NULL, 1000); +} + +double frac_bnd(double m){ + double M0=pow(10,nuisance.gas_lgM0); + return cosmology.omb / cosmology.Omega_m / (1.+ pow(M0/m, nuisance.gas_beta)); +} +double frac_ejc(double m){ + double M0=pow(10,nuisance.gas_lgM0); + double lgm=log10(m); + double frac_star = nuisance.gas_A_star * exp(-0.5* pow((lgm - nuisance.gas_lgM_star)/nuisance.gas_sigma_star,2)); + if(lgm>nuisance.gas_lgM0 && frac_star0.999) aa=.999; + klog = logkmin; + // t1=clock(); + for (j=0; jlogkmax){return 0.;} + if (a < limits.a_min_hm){return Pdelta_hmcode_2020(k,limits.a_min_hm)*pow(growfac(a)/growfac(limits.a_min_hm),2);} + if (a > 0.999){return Pdelta_hmcode_2020(k,0.999)*pow(growfac(a)/growfac(0.999),2);} + val = interpol2d(table_P_NL, N_a, limits.a_min_hm, 0.999, da, a, N_k_nlin, logkmin, logkmax, dk, klog, 0.0, 0.0); + return exp(val); +} + +double P_yy(double k,double a) +{ + static cosmopara C; + static nuisancepara N; + static double logkmin = 0., logkmax = 0., dk = 0., da = 0.; + + static int N_a = 20, N_k_nlin = 100; + + static double **table_P_NL=0; + + double klog,val,aa,kk; + int i,j; + double p1, p2; + if (recompute_cosmo3D(C) || recompute_halo(N)){ //extend this by halo model parameters if these become part of the model + update_cosmopara(&C); update_nuisance(&N); + if (table_P_NL!=0) free_double_matrix(table_P_NL,0, N_a-1, 0, N_k_nlin-1); + table_P_NL = create_double_matrix(0, N_a-1, 0, N_k_nlin-1); + + da = (0.999 - limits.a_min_hm)/(N_a*1.0-1); + logkmin = log(limits.k_min_cH0); + logkmax = log(limits.k_max_cH0); + dk = (logkmax - logkmin)/(N_k_nlin*1.0-1); + aa= limits.a_min_hm; + for (i=0; i0.999) aa=.999; + klog = logkmin; + for (j=0; jlogkmax){return 0.;} + if (a < limits.a_min_hm){return 0.;} + if (a > 0.999) {return P_yy(k,0.999);} + val = interpol2d(table_P_NL, N_a, limits.a_min_hm, 0.999, da, a, N_k_nlin, logkmin, logkmax, dk, klog, 0.0, 0.0); + return exp(val); +} + +double P_my(double k,double a) +{ + static cosmopara C; + static nuisancepara N; + static double logkmin = 0., logkmax = 0., dk = 0., da = 0.; + + static int N_a = 20, N_k_nlin = 100; + + static double **table_P_NL=0; + + double klog,val,aa,kk; + double p1,p2; + int i,j; + if (recompute_cosmo3D(C) || recompute_halo(N)){ //extend this by halo model parameters if these become part of the model + update_cosmopara(&C); update_nuisance(&N); + if (table_P_NL!=0) free_double_matrix(table_P_NL,0, N_a-1, 0, N_k_nlin-1); + table_P_NL = create_double_matrix(0, N_a-1, 0, N_k_nlin-1); + + da = (0.999 - limits.a_min_hm)/(N_a*1.0-1); + logkmin = log(limits.k_min_cH0); + logkmax = log(limits.k_max_cH0); + dk = (logkmax - logkmin)/(N_k_nlin*1.0-1); + aa= limits.a_min_hm; + for (i=0; i0.999) aa=.999; + klog = logkmin; + // if(i==N_a-1){ + for (j=0; jlogkmax){return 0.;} + if (a < limits.a_min_hm){return 0.;} + if (a > 0.999) {return P_my(k,0.999);} + val = interpol2d(table_P_NL, N_a, limits.a_min_hm, 0.999, da, a, N_k_nlin, logkmin, logkmax, dk, klog, 0.0, 0.0); + return (val); +} +#endif + +/****************** Lookup table for 1-halo term super-sample covariance/halo sample variance term**********/ + + +double I12_SSC_yy (double k,double a){//one-halo term contribution to super sample covariance + static cosmopara C; + static nuisancepara N; + static double amin = 0, amax = 0,logkmin = 0., logkmax = 0., dk = 0., da = 0.; + + static double **table_I1=0; + + double aa,klog; + int i,j; + + static int ni[4]={-2,-2,0,0}; + + if (recompute_cosmo3D(C) || recompute_halo(N)){ //extend this by halo model parameters if these become part of the model + update_cosmopara(&C); update_nuisance(&N); + if (table_I1==0) table_I1 = create_double_matrix(0, Ntable.N_a-1, 0, Ntable.N_k_nlin-1); + // double array[11]; + // array[5]=2.0; + // array[7]=array[8]=-2.; + + amin = limits.a_min_hm; + amax = 0.999; + da = (amax - amin)/(Ntable.N_a-1.); + aa = amin; + logkmin = log(limits.k_min_cH0); + logkmax = log(limits.k_max_cH0); + dk = (logkmax - logkmin)/(Ntable.N_k_nlin-1.); + for (i=0; ilogkmax){return 0.0;}; + aa = fmin(a,0.999); + double res = exp(interpol2d(table_I1, Ntable.N_a, amin, amax, da, aa, Ntable.N_k_nlin, logkmin, logkmax, dk, log(k), 1.0, 1.0)); + if(isnan(res)) {res=0.;} + return res; +} + +double I12_SSC_my (double k,double a){//one-halo term contribution to super sample covariance + static cosmopara C; + static nuisancepara N; + static double amin = 0, amax = 0,logkmin = 0., logkmax = 0., dk = 0., da = 0.; + + static double **table_I1=0; + + double aa,klog; + int i,j; + + static int ni[4]={-2,0,0,0}; + + if (recompute_cosmo3D(C) || recompute_halo(N)){ //extend this by halo model parameters if these become part of the model + update_cosmopara(&C); update_nuisance(&N); + if (table_I1==0) table_I1 = create_double_matrix(0, Ntable.N_a-1, 0, Ntable.N_k_nlin-1); + // double array[11]; + // array[5]=2.0; + // array[7]=-2.; + // array[8]=0.; + + amin = limits.a_min_hm; + amax = 0.999; + da = (amax - amin)/(Ntable.N_a-1.); + aa = amin; + logkmin = log(limits.k_min_cH0); + logkmax = log(limits.k_max_cH0); + dk = (logkmax - logkmin)/(Ntable.N_k_nlin-1.); + for (i=0; ilogkmax){return 0.0;}; + aa = fmin(a,0.999); + double res = exp(interpol2d(table_I1, Ntable.N_a, amin, amax, da, aa, Ntable.N_k_nlin, logkmin, logkmax, dk, log(k), 1.0, 1.0)); + if(isnan(res)) {res=0.;} + return res; +} + + + + + diff --git a/theory/old/halo_hmcode.c b/theory/old/halo_hmcode.c new file mode 100644 index 00000000..f66339ba --- /dev/null +++ b/theory/old/halo_hmcode.c @@ -0,0 +1,935 @@ +#ifndef __HALO_FAST__ +#define __HALO_FAST__ +#include +double conc_Ludlow16_fit(double m, double a); +double conc_Ludlow16(double m, double a); + +// use this routine in inner I[0-1]j and modify int_rho_nfw if to work with different halo profiles, e.g. to include adiabatic contraction, AGN feedback, etc. +/*halo model building blocks */ +double I0j_y (int j, double k1, double k2, double k3, double k4, double a, int is_y[4]); +/*halo model matter power spectrum, bispectrum, trispectrum*/ +double p_1h_hmcode(double k, double a); +double p_2h_hmcode(double k, double a); +double Pdelta_hmcode_2020(double k, double a); +double P_my(double k,double a); + + +/* ********************* Routines for halo model ************* */ +/*++++++++++++++++++++++++++++++++++++++++* +* Variance of the density field * +*++++++++++++++++++++++++++++++++++++++++*/ + +double dlogsigma_dlogR(double m) +{ + double dlogm = 0.0001; + double logm = log(m); + double m1 = exp(logm + dlogm); + double dlogsigma2 = log(sigma2(m1) / sigma2(m)); + double dlogR = log(radius(m1) / radius(m)); + return 0.5 * dlogsigma2 / dlogR; +} +double dlogPlin_dlogk(double m) +{ + double k0 = 0.69* 2*M_PI / radius(m); + double dlogk = 0.001; + double k1 = exp(log(k0) + dlogk); + double dlogPlin = log(p_lin(k1,1.) / p_lin(k0,1.)); + return dlogPlin / dlogk; +} + + +/***************** halo profiles ***************/ +/******** mass-concentration relation **********/ +double conc(double m, double a) // for matter +{ +#ifdef LUDLOW16 + return conc_Ludlow16(m, a); +#endif +#ifdef LUDLOW16_FIT + return conc_Ludlow16_fit(m, a); +#endif + + double result; + double M0=pow(10,nuisance.gas_lgM0); + // result = 9.*pow(nu(m,a),-.29)*pow(growfac(a)/growfac(1.),1.15);// Bhattacharya et al. 2013, Delta = 200 rho_{mean} (Table 2) + result = 10.14*pow(m/2.e+12,-0.081)*pow(a,1.01); //Duffy et al. 2008 (Delta = 200 mean) + if(like.feedback_on == 1){ + result *= (1.+nuisance.gas_eps1 + (nuisance.gas_eps2 - nuisance.gas_eps1)/(1.+pow(M0/m, nuisance.gas_beta)) ); + } + return result; +} + +double conc_y(double m, double a) // for y field, with a separate set of gas parameters lgM0,beta,eps1,eps2. +// ONLY USED FOR TEST_CALIB +{ + double result; + double M0=pow(10,nuisance.gas_lgM0_v2); + // result = 9.*pow(nu(m,a),-.29)*pow(growfac(a)/growfac(1.),1.15);// Bhattacharya et al. 2013, Delta = 200 rho_{mean} (Table 2) + result = 10.14*pow(m/2.e+12,-0.081)*pow(a,1.01); //Duffy et al. 2008 (Delta = 200 mean) - If use this, set c_max=50 !! + if(like.feedback_on == 1){ + result *= (1.+nuisance.gas_eps1_v2 + (nuisance.gas_eps2_v2 - nuisance.gas_eps1_v2)/(1.+pow(M0/m, nuisance.gas_beta_v2)) ); + } + return result; +} + +#ifdef LUDLOW16_FIT +double conc_Ludlow16_fit(double m, double a) +// Ludlow16 fit at Planck cosmology +{ + double c0, beta, gamma1, gamma2, nu0; + c0 = 3.395 * pow(a, 0.215); + beta = 0.307 * pow(a, -0.540); + gamma1 = 0.628 * pow(a, 0.047); + gamma2 = 0.317 * pow(a, 0.893); + double a2 = a*a; + nu0 = (4.135 - 0.564 / a - 0.210 / a2 + 0.0557 / (a2*a) - 0.00348 / (a2*a2)) * growfac(1.) / growfac(a); + double nu_nu0_ratio = nu(m,a) / nu0; + return c0 * pow(nu_nu0_ratio, -gamma1) * pow(1+ pow(nu_nu0_ratio, 1./beta), -beta*(gamma2-gamma1)); +} +#endif + + +#ifdef LUDLOW16 +double conc_Ludlow16(double m, double a) +{ + static double **table=0; + static int N_c = 30, N_a = 50; + static double c_min = 0.608, c_max = 50.; // the method produces cmin ~0.607 + static double a_min, a_max = 0.999; + static double dc, da; + static double C_Ludlow = 650., f_Ludlow = 0.02; + double cc, aa; + double M2, c3; + double af, rho_2; + int i, j; + printf("here!\n"); + if (table==0) { + table = create_double_matrix(0, N_c-1, 0, N_a-1); + a_min = limits.a_min_hm; + dc = (c_max-c_min) / (N_c - 1); + da = (a_max - a_min) / (N_a - 1); + printf("here!-\n"); + for (i=0; i= a_max) {a = a_max;} + + int ia = floor((a - a_min) / da); + double frac_high = (a - (a_min + ia * da)) / da; + double table_interp[N_c]; + + if (ia == N_a-1) { + ia--; + frac_high = 0; + } + + double LHS, sig2rf, sig2r; + sig2r = sigma2(m); + sig2rf = sigma2(f_Ludlow * m); + LHS = sqrt(2.* (sig2rf - sig2r)); + printf("here!!!\n"); + for (i=0; icmax){return 0.;} + if (log(x) < logxmin || log(x) > logxmax){return 0.;} + // printf("c, x = %le, %le\n",c,x); + return interpol2d(table, N_c, cmin, cmax, dc, c, N_x, logxmin, logxmax, dx, log(x), 0.0, 0.0); +} + +/*********** FT of bound gas K-S Profile (sinc integral part) **************/ + +double int_KS(double r, void *params){//Fourier kernel * K-S profile, integrand for u_KS + double *array = (double*)params; + double k = array[0]; + double c = array[1]; + double rv = array[2]; + double rs =rv/c; + double x = r/rs; + return r*sinl(k*r)/k*pow(log(1.+x)/x, nuisance.gas_Gamma_KS/(nuisance.gas_Gamma_KS-1.)); +} + +double u_KS(double c, double k, double rv){ + // FFT density of K-S profile, truncated at r_Delta, through direct integration + // use this routine in inner I[0-1]j and modify int_KS to work with different halo profiles + + double array[3] ={k,c,rv}; + return int_gsl_integrate_medium_precision(int_KS, (void*)array, 0,rv,NULL, 5000); +} + +double int_F_KS(double x, void *params){ + double *array = (double*)params; + double y = array[0]; + return x*sinl(x*y)/y * pow(log(1.+x)/x, nuisance.gas_Gamma_KS/(nuisance.gas_Gamma_KS-1.)); +} +double F_KS(double c, double kr_s){ + double array[1] ={kr_s}; + return int_gsl_integrate_medium_precision(int_F_KS, (void*)array, 0,c,NULL, 5000); +} + +#ifdef RUN_FFT +void fft_F_KS(double *c_arr, int Nc, double *krs_arr, int Nx, double **F) { + config fftconfig; + fftconfig.nu = 1.01; + fftconfig.c_window_width = 0.25; + fftconfig.derivative = 0; + fftconfig.N_pad = 0; + fftconfig.N_extrap_low = 0; + fftconfig.N_extrap_high = 0; + + int ell=0; // spherical bessel order + double x[Nx]; + int i,j; + for(i=0;ic_arr[j] ? 0 : pow(x[i],3)*pow(log(1.+x[i])/x[i], nuisance.gas_Gamma_KS/(nuisance.gas_Gamma_KS-1.)); + // fprintf(output, "%le %le %le\n", c_arr[j], x[i], fx[j][i]); + } + } + // fclose(output); + // exit(0); + + cfftlog_multiple(x, fx, Nx, Nc, &fftconfig, ell, krs_arr, F); + for(j=0;jcmax){return 0.;} + if (log(x) < logxmin || log(x) > logxmax){return 0.;} + return interpol2d(table, N_c, cmin, cmax, dc, c, N_x, logxmin, logxmax, dx, log(x), 0.0, 0.0); +} + + + +double int_KS_norm(double r, void *params){//normalization of u_KS + double *array = (double*)params; + double c = array[0]; + double rv = array[1]; + double rs =rv/c; + double x = r/rs; + return r*r*pow(log(1.+x)/x, 1./(nuisance.gas_Gamma_KS-1.)); +} + +double KS_norm(double c, double rv){ + + double array[2] ={c,rv}; + return int_gsl_integrate_medium_precision(int_KS_norm, (void*)array, 0,rv,NULL, 1000); +} + +double frac_bnd(double m){ + double M0=pow(10,nuisance.gas_lgM0); + return cosmology.omb / cosmology.Omega_m / (1.+ pow(M0/m, nuisance.gas_beta)); +} +double frac_ejc(double m){ + double M0=pow(10,nuisance.gas_lgM0); + double lgm=log10(m); + double frac_star = nuisance.gas_A_star * exp(-0.5* pow((lgm - nuisance.gas_lgM_star)/nuisance.gas_sigma_star,2)); + if(lgm>nuisance.gas_lgM0 && frac_star0.999) aa=.999; + klog = logkmin; + // t1=clock(); + for (j=0; jlogkmax){return 0.;} + if (a < limits.a_min_hm){return Pdelta_hmcode_2020(k,limits.a_min_hm)*pow(growfac(a)/growfac(limits.a_min_hm),2);} + if (a > 0.999){return Pdelta_hmcode_2020(k,0.999)*pow(growfac(a)/growfac(0.999),2);} + val = interpol2d(table_P_NL, N_a, limits.a_min_hm, 0.999, da, a, N_k_nlin, logkmin, logkmax, dk, klog, 0.0, 0.0); + return exp(val); +} + +double P_yy(double k,double a) +{ + static cosmopara C; + static nuisancepara N; + static double logkmin = 0., logkmax = 0., dk = 0., da = 0.; + + static int N_a = 20, N_k_nlin = 100; + + static double **table_P_NL=0; + + double klog,val,aa,kk; + int i,j; + double p1, p2; + if (recompute_cosmo3D(C) || recompute_halo(N)){ //extend this by halo model parameters if these become part of the model + update_cosmopara(&C); update_nuisance(&N); + if (table_P_NL!=0) free_double_matrix(table_P_NL,0, N_a-1, 0, N_k_nlin-1); + table_P_NL = create_double_matrix(0, N_a-1, 0, N_k_nlin-1); + + da = (0.999 - limits.a_min_hm)/(N_a*1.0-1); + logkmin = log(limits.k_min_cH0); + logkmax = log(limits.k_max_cH0); + dk = (logkmax - logkmin)/(N_k_nlin*1.0-1); + aa= limits.a_min_hm; + for (i=0; i0.999) aa=.999; + klog = logkmin; + for (j=0; jlogkmax){return 0.;} + if (a < limits.a_min_hm){return 0.;} + if (a > 0.999) {return P_yy(k,0.999);} + val = interpol2d(table_P_NL, N_a, limits.a_min_hm, 0.999, da, a, N_k_nlin, logkmin, logkmax, dk, klog, 0.0, 0.0); + return exp(val); +} + +double P_my(double k,double a) +{ + static cosmopara C; + static nuisancepara N; + static double logkmin = 0., logkmax = 0., dk = 0., da = 0.; + + static int N_a = 20, N_k_nlin = 100; + + static double **table_P_NL=0; + + double klog,val,aa,kk; + double p1,p2; + int i,j; + if (recompute_cosmo3D(C) || recompute_halo(N)){ //extend this by halo model parameters if these become part of the model + update_cosmopara(&C); update_nuisance(&N); + if (table_P_NL!=0) free_double_matrix(table_P_NL,0, N_a-1, 0, N_k_nlin-1); + table_P_NL = create_double_matrix(0, N_a-1, 0, N_k_nlin-1); + + da = (0.999 - limits.a_min_hm)/(N_a*1.0-1); + logkmin = log(limits.k_min_cH0); + logkmax = log(limits.k_max_cH0); + dk = (logkmax - logkmin)/(N_k_nlin*1.0-1); + aa= limits.a_min_hm; + for (i=0; i0.999) aa=.999; + klog = logkmin; + // if(i==N_a-1){ + for (j=0; jlogkmax){return 0.;} + if (a < limits.a_min_hm){return 0.;} + if (a > 0.999) {return P_my(k,0.999);} + val = interpol2d(table_P_NL, N_a, limits.a_min_hm, 0.999, da, a, N_k_nlin, logkmin, logkmax, dk, klog, 0.0, 0.0); + return (val); +} +#endif + +/****************** Lookup table for 1-halo term super-sample covariance/halo sample variance term**********/ + + +double I12_SSC_yy (double k,double a){//one-halo term contribution to super sample covariance + static cosmopara C; + static nuisancepara N; + static double amin = 0, amax = 0,logkmin = 0., logkmax = 0., dk = 0., da = 0.; + + static double **table_I1=0; + + double aa,klog; + int i,j; + + static int ni[4]={-2,-2,0,0}; + + if (recompute_cosmo3D(C) || recompute_halo(N)){ //extend this by halo model parameters if these become part of the model + update_cosmopara(&C); update_nuisance(&N); + if (table_I1==0) table_I1 = create_double_matrix(0, Ntable.N_a-1, 0, Ntable.N_k_nlin-1); + // double array[11]; + // array[5]=2.0; + // array[7]=array[8]=-2.; + + amin = limits.a_min_hm; + amax = 0.999; + da = (amax - amin)/(Ntable.N_a-1.); + aa = amin; + logkmin = log(limits.k_min_cH0); + logkmax = log(limits.k_max_cH0); + dk = (logkmax - logkmin)/(Ntable.N_k_nlin-1.); + for (i=0; ilogkmax){return 0.0;}; + aa = fmin(a,0.999); + double res = exp(interpol2d(table_I1, Ntable.N_a, amin, amax, da, aa, Ntable.N_k_nlin, logkmin, logkmax, dk, log(k), 1.0, 1.0)); + if(isnan(res)) {res=0.;} + return res; +} + +double I12_SSC_my (double k,double a){//one-halo term contribution to super sample covariance + static cosmopara C; + static nuisancepara N; + static double amin = 0, amax = 0,logkmin = 0., logkmax = 0., dk = 0., da = 0.; + + static double **table_I1=0; + + double aa,klog; + int i,j; + + static int ni[4]={-2,0,0,0}; + + if (recompute_cosmo3D(C) || recompute_halo(N)){ //extend this by halo model parameters if these become part of the model + update_cosmopara(&C); update_nuisance(&N); + if (table_I1==0) table_I1 = create_double_matrix(0, Ntable.N_a-1, 0, Ntable.N_k_nlin-1); + // double array[11]; + // array[5]=2.0; + // array[7]=-2.; + // array[8]=0.; + + amin = limits.a_min_hm; + amax = 0.999; + da = (amax - amin)/(Ntable.N_a-1.); + aa = amin; + logkmin = log(limits.k_min_cH0); + logkmax = log(limits.k_max_cH0); + dk = (logkmax - logkmin)/(Ntable.N_k_nlin-1.); + for (i=0; ilogkmax){return 0.0;}; + aa = fmin(a,0.999); + double res = exp(interpol2d(table_I1, Ntable.N_a, amin, amax, da, aa, Ntable.N_k_nlin, logkmin, logkmax, dk, log(k), 1.0, 1.0)); + if(isnan(res)) {res=0.;} + return res; +} + + + + + diff --git a/theory/priors_mpp.c b/theory/priors_mpp.c index 9509763f..82574b10 100644 --- a/theory/priors_mpp.c +++ b/theory/priors_mpp.c @@ -1,6 +1,7 @@ void set_shear_priors_mpp(double *mean_m,double *sigma_m); void set_wlphotoz_priors_mpp(double *bias_photoz_s,double *sigma_photoz_s); void set_clphotoz_priors_mpp(double *bias_photoz_l,double *sigma_photoz_l); +void set_clphotozstretch_priors_mpp(double *stretch_photoz_l,double *sigma_stretch_photoz_l); void set_ia_priors_mpp(double A_min, double A_max); void set_b1_priors_mpp(double b1_min, double b1_max); @@ -61,6 +62,20 @@ void set_clphotoz_priors_mpp(double *bias_photoz_l,double *sigma_b_photoz_l){ } printf("\n"); } +void set_clphotozstretch_priors_mpp(double *stretch_photoz_l,double *sigma_stretch_photoz_l){ + printf("Setting Gaussian Priors on lens n(z) stretch\n"); + for (int i=0;i<10; i++){ + prior.stretch_zphot_clustering[i][0] = stretch_photoz_l[i]; + prior.stretch_zphot_clustering[i][1] = sigma_stretch_photoz_l[i]; + if (sigma_stretch_photoz_l[i]) { + printf("zn = %d (mean,sigma) = (%e, %e)\n",i, + prior.stretch_zphot_clustering[i][0], + prior.stretch_zphot_clustering[i][1]); + like.clphotoz=1; + } + } + printf("\n"); +} diff --git a/theory/recompute.c b/theory/recompute.c index f1353339..4c63445c 100644 --- a/theory/recompute.c +++ b/theory/recompute.c @@ -36,6 +36,7 @@ void update_cosmopara (cosmopara *C){ C->MGmu = cosmology.MGmu; C->M_nu = cosmology.M_nu; C->theta_s = cosmology.theta_s; + C->log10Tagn =cosmology.log10Tagn; } void update_galpara (galpara *G){ @@ -105,6 +106,9 @@ void update_nuisance (nuisancepara *N){ for (int _i = 0; _i < nuisance.N_cluster_selection; ++_i){ N->cluster_selection[_i] = nuisance.cluster_selection[_i]; } + N->cluster_b2=cbias.b2[2]; + strcpy(N->clustering_REDSHIFT_FILE, redshift.clustering_REDSHIFT_FILE); + strcpy(N->shear_REDSHIFT_FILE, redshift.shear_REDSHIFT_FILE); } int recompute_expansion(cosmopara C){ //rules for recomputing growth factor & comoving distance if (C.Omega_m != cosmology.Omega_m || C.Omega_v != cosmology.Omega_v || C.w0 != cosmology.w0 || C.wa != cosmology.wa || C.MGmu != cosmology.MGmu || C.M_nu != cosmology.M_nu){return 1;} @@ -124,7 +128,7 @@ int recompute_Delta(cosmopara C){ //rules for recomputing early time power spect } int recompute_cosmo3D(cosmopara C){ - if (C.Omega_m != cosmology.Omega_m || C.Omega_v != cosmology.Omega_v || C.Omega_nu != cosmology.Omega_nu || C.M_nu != cosmology.M_nu || C.h0 != cosmology.h0 || C.omb != cosmology.omb || C.n_spec != cosmology.n_spec|| C.alpha_s != cosmology.alpha_s || C.w0 != cosmology.w0 || C.wa != cosmology.wa || C.MGSigma != cosmology.MGSigma || C.MGmu != cosmology.MGmu || C.M_nu != cosmology.M_nu){return 1;} + if (C.Omega_m != cosmology.Omega_m || C.Omega_v != cosmology.Omega_v || C.Omega_nu != cosmology.Omega_nu || C.M_nu != cosmology.M_nu || C.h0 != cosmology.h0 || C.omb != cosmology.omb || C.n_spec != cosmology.n_spec|| C.alpha_s != cosmology.alpha_s || C.w0 != cosmology.w0 || C.wa != cosmology.wa || C.MGSigma != cosmology.MGSigma || C.MGmu != cosmology.MGmu || C.M_nu != cosmology.M_nu || C.log10Tagn!=cosmology.log10Tagn){return 1;} if (cosmology.A_s){ if(C.A_s != cosmology.A_s){return 1;} } @@ -135,7 +139,7 @@ int recompute_cosmo3D(cosmopara C){ return 0; } int recompute_cosmo3D_CLASS(cosmopara C){ - if (C.Omega_m != cosmology.Omega_m || C.Omega_v != cosmology.Omega_v || C.Omega_nu != cosmology.Omega_nu || C.M_nu != cosmology.M_nu || C.h0 != cosmology.h0 || C.omb != cosmology.omb || C.n_spec != cosmology.n_spec|| C.alpha_s != cosmology.alpha_s || C.w0 != cosmology.w0 || C.wa != cosmology.wa || C.MGSigma != cosmology.MGSigma || C.MGmu != cosmology.MGmu || C.M_nu != cosmology.M_nu){return 1;} + if (C.Omega_m != cosmology.Omega_m || C.Omega_v != cosmology.Omega_v || C.Omega_nu != cosmology.Omega_nu || C.M_nu != cosmology.M_nu || C.h0 != cosmology.h0 || C.omb != cosmology.omb || C.n_spec != cosmology.n_spec|| C.alpha_s != cosmology.alpha_s || C.w0 != cosmology.w0 || C.wa != cosmology.wa || C.MGSigma != cosmology.MGSigma || C.MGmu != cosmology.MGmu || C.M_nu != cosmology.M_nu || C.log10Tagn!=cosmology.log10Tagn){return 1;} if (cosmology.A_s > 0){ if(C.A_s != cosmology.A_s){return 1;} } @@ -148,6 +152,11 @@ int recompute_cosmo3D_CLASS(cosmopara C){ int recompute_zphot_shear(nuisancepara N){ static int photoz = -1; + //static char REDSHIFT_FILE[200]; + //recompute condition for passing new REDSHIFT_FILE for each n(z) draw - e.g., DES-Y6KP + //if (strcmp(REDSHIFT_FILE,redshift.shear_REDSHIFT_FILE) !=0){strcpy(REDSHIFT_FILE,redshift.shear_REDSHIFT_FILE); return 1;} + if(strcmp(N.shear_REDSHIFT_FILE,redshift.shear_REDSHIFT_FILE)!=0) return 1; + if (photoz != redshift.shear_photoz){photoz = redshift.shear_photoz; return 1;} if (redshift.shear_photoz != 3 && redshift.shear_photoz != 4){return 0;} int i, res = 0; @@ -158,6 +167,10 @@ int recompute_zphot_shear(nuisancepara N){ } int recompute_zphot_clustering(nuisancepara N){ static int photoz = -1; + //static char REDSHIFT_FILE[200]; + //recompute condition for passing new REDSHIFT_FILE for each n(z) draw - e.g., DES-Y6KP + //if (strcmp(REDSHIFT_FILE,redshift.clustering_REDSHIFT_FILE) !=0){strcpy(REDSHIFT_FILE,redshift.clustering_REDSHIFT_FILE); return 1;} + if(strcmp(N.clustering_REDSHIFT_FILE, redshift.clustering_REDSHIFT_FILE)!=0) return 1; if (photoz != redshift.clustering_photoz){photoz = redshift.clustering_photoz; return 1;} if (redshift.clustering_photoz != 3 && redshift.clustering_photoz != 4){return 0;} int i, res = 0; @@ -195,6 +208,9 @@ int recompute_clusters(cosmopara C, nuisancepara N){ int recompute_DESclusters(cosmopara C, nuisancepara N){ if (recompute_cosmo3D(C)) return 1; + if (N.cluster_b2!=cbias.b2[2]){ + return 1; + } for (int _i = 0; _i < nuisance.N_cluster_MOR; ++_i){ if (N.cluster_MOR[_i] !=nuisance.cluster_MOR[_i] ) return 1; } diff --git a/theory/redshift.c b/theory/redshift.c index 7745c653..65a03d09 100644 --- a/theory/redshift.c +++ b/theory/redshift.c @@ -1103,4 +1103,4 @@ double p_zspec_clustering(double zs, double zp){ //p(z_{true} | z_{phot}) for l res = interpol2d(table_z,Ntable.N_zs, zmin, zmax,dz,zs,Ntable.N_zp, zmin, zmax,dz,zp,1.0,1.0)/dz; return res; } -*/ \ No newline at end of file +*/ diff --git a/theory/redshift_spline.c b/theory/redshift_spline.c index f1759526..6350e44e 100644 --- a/theory/redshift_spline.c +++ b/theory/redshift_spline.c @@ -58,6 +58,22 @@ double ggl_efficiency(int zl, int zs); /// double g_bg (double a, int nzlens);//no longer supported - declaration only to prevent compile errors +int N_clustering_tomo (int z1, int z2){ //find shear tomography bin number N_shear of tomography combination (z1,z2) + static int N[20][20] = {-42}; + if (N[0][0] < -1){ + int i, j,n = 0; + for (i = 0; i < tomo.clustering_Nbin; i ++){ + for (j = i; j < tomo.clustering_Nbin; j++){ + N[i][j] = n; + N[j][i] = n; + n++; + } + } + } + return N[z1][z2]; +} + + /********** integration boundary routines *************/ double amin_source(int i){ @@ -301,15 +317,17 @@ double zdistr_histo_n(double z, void *params) // return nz(z,j) based on redshi { double *array = (double*)params; static double **tab; + static double *z_v; FILE *ein; static double zhisto_max,zhisto_min,dz; - - if (tab==0){ - double *z_v; + static char REDSHIFT_FILE[200]; + if (tab==0 || strcmp(REDSHIFT_FILE,redshift.shear_REDSHIFT_FILE) !=0){ int i,k,zbins; zbins = line_count(redshift.shear_REDSHIFT_FILE); - tab=create_double_matrix(0,tomo.shear_Nbin-1,0, zbins-1); - z_v=create_double_vector(0, zbins-1); + if (tab==0){ + tab=create_double_matrix(0,tomo.shear_Nbin-1,0, zbins-1); + z_v=create_double_vector(0, zbins-1); + } ein=fopen(redshift.shear_REDSHIFT_FILE,"r"); for (i=0;i tomo.shear_zmin[0]){ printf("zhisto_min = %e,zhisto_max = %e\n",zhisto_min,zhisto_max); printf("tomo.shear_zmin[0] = %e, tomo.shear_zmax[N-1] = %e\n", tomo.shear_zmin[0],tomo.shear_zmax[tomo.shear_Nbin-1]); printf("Error in redshift.c:zdistr_histo_n: %s parameters incompatible with tomo.shear bin choice\nEXIT!\n",redshift.shear_REDSHIFT_FILE); exit(1); } + strcpy(REDSHIFT_FILE,redshift.shear_REDSHIFT_FILE); } if ((z>=zhisto_min) &&(z 0 && z_v[i] < z_v[i-1]){break;} - for (k = 0; k < tomo.shear_Nbin; k++){fscanf(ein,"%le",&space);} - } - fclose(ein); - redshift.shear_zdistrpar_zmin = fmax(z_v[0],1.e-5); - redshift.shear_zdistrpar_zmax = z_v[i-1] +(z_v[i-1]-z_v[0])/(zbins1-1.); - printf("redshift_spline.c %d %e %e\n", zbins,redshift.shear_zdistrpar_zmin,redshift.shear_zdistrpar_zmax); } - } + if (table == 0 || strcmp(REDSHIFT_FILE,redshift.shear_REDSHIFT_FILE) !=0 ){ + if (redshift.shear_photoz ==4){//if multihisto, force zmin, zmax, tomo bins to match supplied file + int zbins1 = line_count(redshift.shear_REDSHIFT_FILE); + FILE *ein; + double space; + int i,k; + ein=fopen(redshift.shear_REDSHIFT_FILE,"r"); + for (i=0;i 0 && z_v[i] < z_v[i-1]){break;} + for (k = 0; k < tomo.shear_Nbin; k++){fscanf(ein,"%le",&space);} + } + fclose(ein); + redshift.shear_zdistrpar_zmin = z_v[0]; //fmax(z_v[0],1.e-5); + redshift.shear_zdistrpar_zmax = z_v[i-1] +(z_v[i-1]-z_v[0])/(zbins1-1.); + printf("redshift_spline.c %d %e %e\n", zbins,redshift.shear_zdistrpar_zmin,redshift.shear_zdistrpar_zmax); + } + } + strcpy(REDSHIFT_FILE,redshift.shear_REDSHIFT_FILE); zhisto_max =redshift.shear_zdistrpar_zmax; zhisto_min = redshift.shear_zdistrpar_zmin; @@ -566,15 +589,19 @@ double pf_histo(double z, void *params) //return pf(z) based on redshift file wi { static double *tab = 0; FILE *ein; + static double * z_v=0; static double zhisto_max,zhisto_min,dz; - if (tab==0){ - double *z_v,space1,space2; + static char REDSHIFT_FILE[200]; + if (tab==0 || strcmp(REDSHIFT_FILE,redshift.clustering_REDSHIFT_FILE) !=0){ + double space1,space2; int i,zbins; zbins = line_count(redshift.clustering_REDSHIFT_FILE); - tab=create_double_vector(0, zbins-1); - z_v=create_double_vector(0, zbins-1); + if (tab==0){ + tab=create_double_vector(0, zbins-1); + z_v=create_double_vector(0, zbins-1); + } ein=fopen(redshift.clustering_REDSHIFT_FILE,"r"); for (i=0;i tomo.clustering_zmin[0]){ printf("Error in redshift_spline.c:pf_histo.c: %s parameters incompatible with tomo.clustering bin choice\nEXIT!\n",redshift.clustering_REDSHIFT_FILE); exit(1); } + strcpy(REDSHIFT_FILE,redshift.clustering_REDSHIFT_FILE); } if ((z>=zhisto_min) &&(z max){max = tab[k][i];} } i = 0; - while (tab[k][i] <1.e-8*max && i < zbins-2){i++;} + while (fabs(tab[k][i]) <1.e-8*max && i < zbins-2){i++;} tomo.clustering_zmin[k] = z_v[i]; i = zbins-1; - while (tab[k][i] <1.e-8*max && i > 0){i--;} + while (fabs(tab[k][i]) <1.e-8*max && i > 0){i--;} tomo.clustering_zmax[k] = z_v[i]; printf("tomo.clustering_zmin[%d] = %.3f,tomo.clustering_zmax[%d] = %.3f\n",k,tomo.clustering_zmin[k],k,tomo.clustering_zmax[k]); } - free_double_vector(z_v,0,zbins-1); + //free_double_vector(z_v,0,zbins-1); if (zhisto_max < tomo.clustering_zmax[tomo.clustering_Nbin-1] || zhisto_min > tomo.clustering_zmin[0]){ printf("%e %e %e %e\n",zhisto_min,tomo.clustering_zmin[0],zhisto_max,tomo.clustering_zmax[tomo.clustering_Nbin-1]); printf("Error in redshift.c:pf_histo_n.c: %s parameters incompatible with tomo.clustering bin choice\nEXIT!\n",redshift.clustering_REDSHIFT_FILE); exit(1); } + strcpy(REDSHIFT_FILE,redshift.clustering_REDSHIFT_FILE); } if ((z>=zhisto_min) &&(z no tomography; j>= 0 -> tomography bin j { static double **table = 0; static double *z_v = 0; + static double *zmean_tomo = 0; static double da = 0.0; static double zhisto_max,zhisto_min; static nuisancepara N; + static char REDSHIFT_FILE[200]; static int zbins = -1; static gsl_spline * photoz_splines[11]; static gsl_interp_accel * photoz_accel[11]; - if (redshift.clustering_photoz == -1){return n_of_z(zz,j);} - if ((redshift.clustering_photoz != 4 && recompute_zphot_clustering(N)) || table==0){ + if ((redshift.clustering_photoz != 4 && recompute_zphot_clustering(N)) || table==0 || strcmp(REDSHIFT_FILE,redshift.clustering_REDSHIFT_FILE) !=0){ update_nuisance(&N); + strcpy(REDSHIFT_FILE,redshift.clustering_REDSHIFT_FILE); if (table == 0){ zbins = line_count(redshift.clustering_REDSHIFT_FILE); if (redshift.clustering_photoz !=4 && redshift.clustering_photoz !=0){pf_histo(0.5,NULL); zbins*=20;}//upsample if convolving with analytic photo-z model @@ -687,7 +734,8 @@ double pf_photoz(double zz,int j) //returns n(ztrue, j), works only with binned for (k = 0; k < tomo.clustering_Nbin; k++){fscanf(ein,"%le",&space);} } fclose(ein); - redshift.clustering_zdistrpar_zmin = fmax(z_v[0],1.e-5); + //redshift.clustering_zdistrpar_zmin = fmax(z_v[0],1.e-5); + redshift.clustering_zdistrpar_zmin = z_v[0]; redshift.clustering_zdistrpar_zmax = z_v[i-1] +(z_v[i-1]-z_v[0])/(zbins-1.); } } @@ -770,8 +818,18 @@ double pf_photoz(double zz,int j) //returns n(ztrue, j), works only with binned for (k = 0;k= z_v[zbins-1]) return 0.0; - return gsl_spline_eval(photoz_splines[j+1],zz,photoz_accel[j+1]); + double res= gsl_spline_eval(photoz_splines[j+1],zz,photoz_accel[j+1]); + if (redshift.clustering_photoz == 4){ + res = res/nuisance.stretch_zphot_clustering[j]; + } + return res; } /*********** routines calculating the number of source and lens galaxies per bin ****************/ @@ -1179,4 +1241,4 @@ double p_zspec_clustering(double zs, double zp){ //p(z_{true} | z_{phot}) for l res = interpol2d(table_z,Ntable.N_zs, zmin, zmax,dz,zs,Ntable.N_zp, zmin, zmax,dz,zp,1.0,1.0)/dz; return res; } -*/ \ No newline at end of file +*/ diff --git a/theory/structs.c b/theory/structs.c index 835af290..a4f17ccb 100644 --- a/theory/structs.c +++ b/theory/structs.c @@ -25,6 +25,7 @@ typedef struct { int Planck18_BAO_w0wa; //CH int Planck18_w0; //CH int BAO; + int SN; int SN_WFIRST; int GRS; int SRD; @@ -47,8 +48,9 @@ typedef struct { char probes[500]; char ext_data[500]; int theta_s; + int Ytransform; }likepara; -likepara like ={.baryons = 0, .IA = 0., .bias = 0, .wlphotoz = 0, .clphotoz = 0, .shearcalib = 0, .clusterMobs =0, .BAO = 0, .SN_WFIRST = 0, .GRS = 0, .SRD = 0, .Planck15_BAO_H070p6_JLA_w0wa = 0, .Planck18_BAO_Riess18_Pantheon_w0wa = 0, .Planck18_BAO_w0wa = 0, .Planck18_w0 = 0,.theta_s =0}; +likepara like ={.baryons = 0, .IA = 0., .bias = 0, .wlphotoz = 0, .clphotoz = 0, .shearcalib = 0, .clusterMobs =0, .BAO = 0, .SN_WFIRST = 0, .GRS = 0, .SRD = 0, .Planck15_BAO_H070p6_JLA_w0wa = 0, .Planck18_BAO_Riess18_Pantheon_w0wa = 0, .Planck18_BAO_w0wa = 0, .Planck18_w0 = 0,.theta_s =0, .Ytransform=0, .SN=0}; typedef struct { double Omega_m; /* matter density parameter */ @@ -69,8 +71,12 @@ typedef struct { double MGSigma; double MGmu; double theta_s; + double rs_d; // comoving sound horizon at baryon drag + double Tcmb; + double sigma_8_cc; /*sigma_8 of cold dark matter and baryon*/ + double log10Tagn; }cosmopara; -cosmopara cosmology = {.A_s = 0., .sigma_8=0., .alpha_s =0.0, .M_nu =0., .Omega_nu =0.,.coverH0= 2997.92458, .rho_crit = 7.4775e+21,.MGSigma=0.0,.MGmu=0.0,.theta_s =0.0}; +cosmopara cosmology = {.A_s = 0., .sigma_8=0., .alpha_s =0.0, .M_nu =0., .Omega_nu =0.,.coverH0= 2997.92458, .rho_crit = 7.4775e+21,.MGSigma=0.0,.MGmu=0.0,.theta_s =0.0, .Tcmb=2.728, .sigma_8_cc=0.,.log10Tagn=0., .rs_d=0}; typedef struct { int shear_Nbin; // number of tomography bins @@ -244,6 +250,7 @@ typedef struct { double bias_zphot_shear[10]; double sigma_zphot_clustering[10]; double bias_zphot_clustering[10]; + double stretch_zphot_clustering[10]; double sigma_zphot_magnification[10]; double bias_zphot_magnification[10]; double LF_alpha; @@ -271,6 +278,9 @@ typedef struct { double cluster_MOR[10]; int N_cluster_selection; double cluster_selection[10]; + double cluster_b2; + char clustering_REDSHIFT_FILE[200]; + char shear_REDSHIFT_FILE[200]; } nuisancepara; nuisancepara nuisance ={.c1rhocrit_ia = 0.013873073650776856, @@ -281,7 +291,10 @@ nuisancepara nuisance ={.c1rhocrit_ia = 0.013873073650776856, .sigma_zphot_shear = {0.,0.,0.,0.,0.,0.,0.,0.,0.,0.}, .bias_zphot_shear = {0.,0.,0.,0.,0.,0.,0.,0.,0.,0.}, .sigma_zphot_clustering = {0.,0.,0.,0.,0.,0.,0.,0.,0.,0.}, - .bias_zphot_clustering = {0.,0.,0.,0.,0.,0.,0.,0.,0.,0.}}; + .bias_zphot_clustering = {0.,0.,0.,0.,0.,0.,0.,0.,0.,0.}, + .stretch_zphot_clustering = {1.,1.,1.,1.,1.,1.,1.,1.,1.,1.}, + .cluster_b2=-1 + }; @@ -319,6 +332,7 @@ typedef struct { //two parameters for each nuisance parameter: Center (prior.*[0 double bias_zphot_clustering[10][2]; double sigma_zphot_magnification[10][2]; double bias_zphot_magnification[10][2]; +double stretch_zphot_clustering[10][2]; double cluster_Mobs_lgM0[2]; double cluster_Mobs_sigma[2]; double cluster_Mobs_alpha[2]; @@ -341,7 +355,9 @@ priorpara prior = {.shear_calibration_m = {{0.,0.},{0.,0.},{0.,0.},{0.,0.},{0.,0 .sigma_zphot_shear = {{0.,0.},{0.,0.},{0.,0.},{0.,0.},{0.,0.},{0.,0.},{0.,0.},{0.,0.},{0.,0.},{0.,0.}}, .bias_zphot_shear = {{0.,0.},{0.,0.},{0.,0.},{0.,0.},{0.,0.},{0.,0.},{0.,0.},{0.,0.},{0.,0.},{0.,0.}}, .sigma_zphot_clustering = {{0.,0.},{0.,0.},{0.,0.},{0.,0.},{0.,0.},{0.,0.},{0.,0.},{0.,0.},{0.,0.},{0.,0.}}, -.bias_zphot_clustering = {{0.,0.},{0.,0.},{0.,0.},{0.,0.},{0.,0.},{0.,0.},{0.,0.},{0.,0.},{0.,0.},{0.,0.}}}; +.bias_zphot_clustering = {{0.,0.},{0.,0.},{0.,0.},{0.,0.},{0.,0.},{0.,0.},{0.,0.},{0.,0.},{0.,0.},{0.,0.}}, +.stretch_zphot_clustering = {{0.,0.},{0.,0.},{0.,0.},{0.,0.},{0.,0.},{0.,0.},{0.,0.},{0.,0.},{0.,0.},{0.,0.}}, +}; typedef struct{ double HOD_rm[5][2]; @@ -362,6 +378,7 @@ typedef struct input_cosmo_params_mpp { double h0; double MGSigma; double MGmu; + double log10Tagn; } input_cosmo_params_mpp; typedef struct input_cosmo_params { @@ -380,12 +397,16 @@ typedef struct input_nuisance_params_mpp { double bias[10]; double bias2[10]; double lens_z_bias[10]; + double lens_z_stretch[10]; double source_z_bias[10]; double shear_m[10]; double A_z[10]; double MOR[10]; double selection[10]; double b_mag[10]; + double pm[10]; + double lens_z_u[20]; + double source_z_u[20]; } input_nuisance_params_mpp; typedef struct input_HOD_params { @@ -483,4 +504,10 @@ typedef struct { int Nell; int Nchi; } fft_optimize; -fft_optimize fft_int; \ No newline at end of file +fft_optimize fft_int; + + +typedef struct{ + double b2[10]; /* quadratic bias parameter for redshift bin i */ +}clpara; +clpara cbias ={.b2 ={0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0}}; diff --git a/theory/tags b/theory/tags new file mode 100644 index 00000000..f0c371e7 --- /dev/null +++ b/theory/tags @@ -0,0 +1,2060 @@ +!_TAG_FILE_FORMAT 2 /extended format; --format=1 will not append ;" to lines/ +!_TAG_FILE_SORTED 1 /0=unsorted, 1=sorted, 2=foldcase/ +!_TAG_PROGRAM_AUTHOR Darren Hiebert /dhiebert@users.sourceforge.net/ +!_TAG_PROGRAM_NAME Exuberant Ctags // +!_TAG_PROGRAM_URL http://ctags.sourceforge.net /official site/ +!_TAG_PROGRAM_VERSION 5.8 // +A2_ia structs.c /^ double A2_ia; \/\/placeholder param for quadratic,etc IA$/;" m struct:__anon21 file: +A2_ia structs.c /^ double A2_ia[2];$/;" m struct:__anon22 file: +A2_z structs.c /^ double A2_z[10]; \/\/NLA normalization per source redshift bin, for mpp analyis (activate with like.IA = 5)$/;" m struct:__anon21 file: +AD_DESdepth baryons.h /^ static double AD_DESdepth[100][11]={{1.00221, 1.00221, 1.00221, 1.00221, 1.00221, 1.00221, 1.00221, 1.00221, 1.00221, 1.00221, 1.00221},{1.00277, 1.00277, 1.00277, 1.00277, 1.00277, 1.00277, 1.00277, 1.00277, 1.00277, 1.00277, 1.00277},{1.000374, 1.000374, 1.000374, 1.000374, 1.000374, 1.000374, 1.000374, 1.000374, 1.000374, 1.000374, 1.000374},{1.002085, 1.002085, 1.002085, 1.002085, 1.002085, 1.002085, 1.002085, 1.002085, 1.002085, 1.002085, 1.002085},{1.004155, 1.004155, 1.004155, 1.004155, 1.004155, 1.004155, 1.004155, 1.004155, 1.004155, 1.004155, 1.004155},{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},{0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054},{0.993116, 0.993116, 0.993116, 0.993116, 0.993116, 0.993116, 0.993116, 0.993116, 0.993116, 0.993116, 0.993116},{0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054},{0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001},{0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001},{0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001},{0.9987237, 0.9987237, 0.9987237, 0.9987237, 0.9987237, 0.9987237, 0.9987237, 0.9987237, 0.9987237, 0.9987237, 0.9987237},{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},{0.9946961, 0.9946961, 0.9946961, 0.9946961, 0.9946961, 0.9946961, 0.9946961, 0.9946961, 0.9946961, 0.9946961, 0.9946961},{0.9899444, 0.9899444, 0.9899444, 0.9899444, 0.9899444, 0.9899444, 0.9899444, 0.9899444, 0.9899444, 0.9899444, 0.9899444},{0.9872812, 0.9872812, 0.9872812, 0.9872812, 0.9872812, 0.9872812, 0.9872812, 0.9872812, 0.9872812, 0.9872812, 0.9872812},{0.9878035, 0.9878035, 0.9878035, 0.9878035, 0.9878035, 0.9878035, 0.9878035, 0.9878035, 0.9878035, 0.9878035, 0.9878035},{0.9918709, 0.9918709, 0.9918709, 0.9918709, 0.9918709, 0.9918709, 0.9918709, 0.9918709, 0.9918709, 0.9918709, 0.9918709},{0.9964829, 0.9964829, 0.9964829, 0.9964829, 0.9964829, 0.9964829, 0.9964829, 0.9964829, 0.9964829, 0.9964829, 0.9964829},{0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001},{0.9948678, 0.9948678, 0.9948678, 0.9948678, 0.9948678, 0.9948678, 0.9948678, 0.9948678, 0.9948678, 0.9948678, 0.9948678},{0.99197, 0.99197, 0.99197, 0.99197, 0.99197, 0.99197, 0.99197, 0.99197, 0.99197, 0.99197, 0.99197},{0.9900302, 0.9900302, 0.9900302, 0.9900302, 0.9900302, 0.9900302, 0.9900302, 0.9900302, 0.9900302, 0.9900302, 0.9900302},{0.9877746, 0.9877746, 0.9877746, 0.9877746, 0.9877746, 0.9877746, 0.9877746, 0.9877746, 0.9877746, 0.9877746, 0.9877746},{0.9841846, 0.9841846, 0.9841846, 0.9841846, 0.9841846, 0.9841846, 0.9841846, 0.9841846, 0.9841846, 0.9841846, 0.9841846},{0.9872739, 0.9872739, 0.9872739, 0.9872739, 0.9872739, 0.9872739, 0.9872739, 0.9872739, 0.9872739, 0.9872739, 0.9872739},{0.9865005, 0.9865005, 0.9865005, 0.9865005, 0.9865005, 0.9865005, 0.9865005, 0.9865005, 0.9865005, 0.9865005, 0.9865005},{0.9828935, 0.9828935, 0.9828935, 0.9828935, 0.9828935, 0.9828935, 0.9828935, 0.9828935, 0.9828935, 0.9828935, 0.9828935},{0.9782302, 0.9782302, 0.9782302, 0.9782302, 0.9782302, 0.9782302, 0.9782302, 0.9782302, 0.9782302, 0.9782302, 0.9782302},{0.9737563, 0.9737563, 0.9737563, 0.9737563, 0.9737563, 0.9737563, 0.9737563, 0.9737563, 0.9737563, 0.9737563, 0.9737563},{0.9693942, 0.9693942, 0.9693942, 0.9693942, 0.9693942, 0.9693942, 0.9693942, 0.9693942, 0.9693942, 0.9693942, 0.9693942},{0.9651996, 0.9651996, 0.9651996, 0.9651996, 0.9651996, 0.9651996, 0.9651996, 0.9651996, 0.9651996, 0.9651996, 0.9651996},{0.963829, 0.963829, 0.963829, 0.963829, 0.963829, 0.963829, 0.963829, 0.963829, 0.963829, 0.963829, 0.963829},{0.9638221, 0.9638221, 0.9638221, 0.9638221, 0.9638221, 0.9638221, 0.9638221, 0.9638221, 0.9638221, 0.9638221, 0.9638221},{0.9625528, 0.9625528, 0.9625528, 0.9625528, 0.9625528, 0.9625528, 0.9625528, 0.9625528, 0.9625528, 0.9625528, 0.9625528},{0.961299, 0.961299, 0.961299, 0.961299, 0.961299, 0.961299, 0.961299, 0.961299, 0.961299, 0.961299, 0.961299},{0.9600896, 0.9600896, 0.9600896, 0.9600896, 0.9600896, 0.9600896, 0.9600896, 0.9600896, 0.9600896, 0.9600896, 0.9600896},{0.9579165, 0.9579165, 0.9579165, 0.9579165, 0.9579165, 0.9579165, 0.9579165, 0.9579165, 0.9579165, 0.9579165, 0.9579165},{0.9544676, 0.9544676, 0.9544676, 0.9544676, 0.9544676, 0.9544676, 0.9544676, 0.9544676, 0.9544676, 0.9544676, 0.9544676},{0.9511103, 0.9511103, 0.9511103, 0.9511103, 0.9511103, 0.9511103, 0.9511103, 0.9511103, 0.9511103, 0.9511103, 0.9511103},{0.9478392, 0.9478392, 0.9478392, 0.9478392, 0.9478392, 0.9478392, 0.9478392, 0.9478392, 0.9478392, 0.9478392, 0.9478392},{0.9451807, 0.9451807, 0.9451807, 0.9451807, 0.9451807, 0.9451807, 0.9451807, 0.9451807, 0.9451807, 0.9451807, 0.9451807},{0.94311, 0.94311, 0.94311, 0.94311, 0.94311, 0.94311, 0.94311, 0.94311, 0.94311, 0.94311, 0.94311},{0.9422951, 0.9422951, 0.9422951, 0.9422951, 0.9422951, 0.9422951, 0.9422951, 0.9422951, 0.9422951, 0.9422951, 0.9422951},{0.9432827, 0.9432827, 0.9432827, 0.9432827, 0.9432827, 0.9432827, 0.9432827, 0.9432827, 0.9432827, 0.9432827, 0.9432827},{0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609},{0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609},{0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609},{0.9407946, 0.9407946, 0.9407946, 0.9407946, 0.9407946, 0.9407946, 0.9407946, 0.9407946, 0.9407946, 0.9407946, 0.9407946},{0.9372043, 0.9372043, 0.9372043, 0.9372043, 0.9372043, 0.9372043, 0.9372043, 0.9372043, 0.9372043, 0.9372043, 0.9372043},{0.9341327, 0.9341327, 0.9341327, 0.9341327, 0.9341327, 0.9341327, 0.9341327, 0.9341327, 0.9341327, 0.9341327, 0.9341327},{0.9315818, 0.9315818, 0.9315818, 0.9315818, 0.9315818, 0.9315818, 0.9315818, 0.9315818, 0.9315818, 0.9315818, 0.9315818},{0.9290309, 0.9290309, 0.9290309, 0.9290309, 0.9290309, 0.9290309, 0.9290309, 0.9290309, 0.9290309, 0.9290309, 0.9290309},{0.9266083, 0.9266083, 0.9266083, 0.9266083, 0.9266083, 0.9266083, 0.9266083, 0.9266083, 0.9266083, 0.9266083, 0.9266083},{0.924189, 0.924189, 0.924189, 0.924189, 0.924189, 0.924189, 0.924189, 0.924189, 0.924189, 0.924189, 0.924189},{0.9215588, 0.9215588, 0.9215588, 0.9215588, 0.9215588, 0.9215588, 0.9215588, 0.9215588, 0.9215588, 0.9215588, 0.9215588},{0.9185029, 0.9185029, 0.9185029, 0.9185029, 0.9185029, 0.9185029, 0.9185029, 0.9185029, 0.9185029, 0.9185029, 0.9185029},{0.9154471, 0.9154471, 0.9154471, 0.9154471, 0.9154471, 0.9154471, 0.9154471, 0.9154471, 0.9154471, 0.9154471, 0.9154471},{0.9128898, 0.9128898, 0.9128898, 0.9128898, 0.9128898, 0.9128898, 0.9128898, 0.9128898, 0.9128898, 0.9128898, 0.9128898},{0.9107186, 0.9107186, 0.9107186, 0.9107186, 0.9107186, 0.9107186, 0.9107186, 0.9107186, 0.9107186, 0.9107186, 0.9107186},{0.9085475, 0.9085475, 0.9085475, 0.9085475, 0.9085475, 0.9085475, 0.9085475, 0.9085475, 0.9085475, 0.9085475, 0.9085475},{0.9064508, 0.9064508, 0.9064508, 0.9064508, 0.9064508, 0.9064508, 0.9064508, 0.9064508, 0.9064508, 0.9064508, 0.9064508},{0.9043917, 0.9043917, 0.9043917, 0.9043917, 0.9043917, 0.9043917, 0.9043917, 0.9043917, 0.9043917, 0.9043917, 0.9043917},{0.9023325, 0.9023325, 0.9023325, 0.9023325, 0.9023325, 0.9023325, 0.9023325, 0.9023325, 0.9023325, 0.9023325, 0.9023325},{0.9003403, 0.9003403, 0.9003403, 0.9003403, 0.9003403, 0.9003403, 0.9003403, 0.9003403, 0.9003403, 0.9003403, 0.9003403},{0.8983873, 0.8983873, 0.8983873, 0.8983873, 0.8983873, 0.8983873, 0.8983873, 0.8983873, 0.8983873, 0.8983873, 0.8983873},{0.8964344, 0.8964344, 0.8964344, 0.8964344, 0.8964344, 0.8964344, 0.8964344, 0.8964344, 0.8964344, 0.8964344, 0.8964344},{0.894527, 0.894527, 0.894527, 0.894527, 0.894527, 0.894527, 0.894527, 0.894527, 0.894527, 0.894527, 0.894527},{0.8926748, 0.8926748, 0.8926748, 0.8926748, 0.8926748, 0.8926748, 0.8926748, 0.8926748, 0.8926748, 0.8926748, 0.8926748},{0.8908226, 0.8908226, 0.8908226, 0.8908226, 0.8908226, 0.8908226, 0.8908226, 0.8908226, 0.8908226, 0.8908226, 0.8908226},{0.8889097, 0.8889097, 0.8889097, 0.8889097, 0.8889097, 0.8889097, 0.8889097, 0.8889097, 0.8889097, 0.8889097, 0.8889097},{0.8865701, 0.8865701, 0.8865701, 0.8865701, 0.8865701, 0.8865701, 0.8865701, 0.8865701, 0.8865701, 0.8865701, 0.8865701},{0.8842306, 0.8842306, 0.8842306, 0.8842306, 0.8842306, 0.8842306, 0.8842306, 0.8842306, 0.8842306, 0.8842306, 0.8842306},{0.8818911, 0.8818911, 0.8818911, 0.8818911, 0.8818911, 0.8818911, 0.8818911, 0.8818911, 0.8818911, 0.8818911, 0.8818911},{0.8792798, 0.8792798, 0.8792798, 0.8792798, 0.8792798, 0.8792798, 0.8792798, 0.8792798, 0.8792798, 0.8792798, 0.8792798},{0.8765158, 0.8765158, 0.8765158, 0.8765158, 0.8765158, 0.8765158, 0.8765158, 0.8765158, 0.8765158, 0.8765158, 0.8765158},{0.8737518, 0.8737518, 0.8737518, 0.8737518, 0.8737518, 0.8737518, 0.8737518, 0.8737518, 0.8737518, 0.8737518, 0.8737518},{0.8709878, 0.8709878, 0.8709878, 0.8709878, 0.8709878, 0.8709878, 0.8709878, 0.8709878, 0.8709878, 0.8709878, 0.8709878},{0.868892, 0.868892, 0.868892, 0.868892, 0.868892, 0.868892, 0.868892, 0.868892, 0.868892, 0.868892, 0.868892},{0.8668021, 0.8668021, 0.8668021, 0.8668021, 0.8668021, 0.8668021, 0.8668021, 0.8668021, 0.8668021, 0.8668021, 0.8668021},{0.8647121, 0.8647121, 0.8647121, 0.8647121, 0.8647121, 0.8647121, 0.8647121, 0.8647121, 0.8647121, 0.8647121, 0.8647121},{0.8626414, 0.8626414, 0.8626414, 0.8626414, 0.8626414, 0.8626414, 0.8626414, 0.8626414, 0.8626414, 0.8626414, 0.8626414},{0.8606638, 0.8606638, 0.8606638, 0.8606638, 0.8606638, 0.8606638, 0.8606638, 0.8606638, 0.8606638, 0.8606638, 0.8606638},{0.8586863, 0.8586863, 0.8586863, 0.8586863, 0.8586863, 0.8586863, 0.8586863, 0.8586863, 0.8586863, 0.8586863, 0.8586863},{0.8567087, 0.8567087, 0.8567087, 0.8567087, 0.8567087, 0.8567087, 0.8567087, 0.8567087, 0.8567087, 0.8567087, 0.8567087},{0.8548283, 0.8548283, 0.8548283, 0.8548283, 0.8548283, 0.8548283, 0.8548283, 0.8548283, 0.8548283, 0.8548283, 0.8548283},{0.8534232, 0.8534232, 0.8534232, 0.8534232, 0.8534232, 0.8534232, 0.8534232, 0.8534232, 0.8534232, 0.8534232, 0.8534232},{0.8520182, 0.8520182, 0.8520182, 0.8520182, 0.8520182, 0.8520182, 0.8520182, 0.8520182, 0.8520182, 0.8520182, 0.8520182},{0.8506131, 0.8506131, 0.8506131, 0.8506131, 0.8506131, 0.8506131, 0.8506131, 0.8506131, 0.8506131, 0.8506131, 0.8506131},{0.8492081, 0.8492081, 0.8492081, 0.8492081, 0.8492081, 0.8492081, 0.8492081, 0.8492081, 0.8492081, 0.8492081, 0.8492081},{0.8483086, 0.8483086, 0.8483086, 0.8483086, 0.8483086, 0.8483086, 0.8483086, 0.8483086, 0.8483086, 0.8483086, 0.8483086},{0.8474192, 0.8474192, 0.8474192, 0.8474192, 0.8474192, 0.8474192, 0.8474192, 0.8474192, 0.8474192, 0.8474192, 0.8474192},{0.8465298, 0.8465298, 0.8465298, 0.8465298, 0.8465298, 0.8465298, 0.8465298, 0.8465298, 0.8465298, 0.8465298, 0.8465298},{0.8456404, 0.8456404, 0.8456404, 0.8456404, 0.8456404, 0.8456404, 0.8456404, 0.8456404, 0.8456404, 0.8456404, 0.8456404},{0.844527, 0.844527, 0.844527, 0.844527, 0.844527, 0.844527, 0.844527, 0.844527, 0.844527, 0.844527, 0.844527},{0.8432602, 0.8432602, 0.8432602, 0.8432602, 0.8432602, 0.8432602, 0.8432602, 0.8432602, 0.8432602, 0.8432602, 0.8432602},{0.8419935, 0.8419935, 0.8419935, 0.8419935, 0.8419935, 0.8419935, 0.8419935, 0.8419935, 0.8419935, 0.8419935, 0.8419935},{0.8407267, 0.8407267, 0.8407267, 0.8407267, 0.8407267, 0.8407267, 0.8407267, 0.8407267, 0.8407267, 0.8407267, 0.8407267},{0.83946, 0.83946, 0.83946, 0.83946, 0.83946, 0.83946, 0.83946, 0.83946, 0.83946, 0.83946, 0.83946}};$/;" v +AD_DESdepth baryons2.h /^ static double AD_DESdepth[100][11]={{1.00221, 1.00221, 1.00221, 1.00221, 1.00221, 1.00221, 1.00221, 1.00221, 1.00221, 1.00221, 1.00221}{1.00277, 1.00277, 1.00277, 1.00277, 1.00277, 1.00277, 1.00277, 1.00277, 1.00277, 1.00277, 1.00277}{1.000374, 1.000374, 1.000374, 1.000374, 1.000374, 1.000374, 1.000374, 1.000374, 1.000374, 1.000374, 1.000374}{1.002085, 1.002085, 1.002085, 1.002085, 1.002085, 1.002085, 1.002085, 1.002085, 1.002085, 1.002085, 1.002085}{1.004155, 1.004155, 1.004155, 1.004155, 1.004155, 1.004155, 1.004155, 1.004155, 1.004155, 1.004155, 1.004155}{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}{0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054}{0.993116, 0.993116, 0.993116, 0.993116, 0.993116, 0.993116, 0.993116, 0.993116, 0.993116, 0.993116, 0.993116}{0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054}{0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001}{0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001}{0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001}{0.9987237, 0.9987237, 0.9987237, 0.9987237, 0.9987237, 0.9987237, 0.9987237, 0.9987237, 0.9987237, 0.9987237, 0.9987237}{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}{0.9946961, 0.9946961, 0.9946961, 0.9946961, 0.9946961, 0.9946961, 0.9946961, 0.9946961, 0.9946961, 0.9946961, 0.9946961}{0.9899444, 0.9899444, 0.9899444, 0.9899444, 0.9899444, 0.9899444, 0.9899444, 0.9899444, 0.9899444, 0.9899444, 0.9899444}{0.9872812, 0.9872812, 0.9872812, 0.9872812, 0.9872812, 0.9872812, 0.9872812, 0.9872812, 0.9872812, 0.9872812, 0.9872812}{0.9878035, 0.9878035, 0.9878035, 0.9878035, 0.9878035, 0.9878035, 0.9878035, 0.9878035, 0.9878035, 0.9878035, 0.9878035}{0.9918709, 0.9918709, 0.9918709, 0.9918709, 0.9918709, 0.9918709, 0.9918709, 0.9918709, 0.9918709, 0.9918709, 0.9918709}{0.9964829, 0.9964829, 0.9964829, 0.9964829, 0.9964829, 0.9964829, 0.9964829, 0.9964829, 0.9964829, 0.9964829, 0.9964829}{0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001}{0.9948678, 0.9948678, 0.9948678, 0.9948678, 0.9948678, 0.9948678, 0.9948678, 0.9948678, 0.9948678, 0.9948678, 0.9948678}{0.99197, 0.99197, 0.99197, 0.99197, 0.99197, 0.99197, 0.99197, 0.99197, 0.99197, 0.99197, 0.99197}{0.9900302, 0.9900302, 0.9900302, 0.9900302, 0.9900302, 0.9900302, 0.9900302, 0.9900302, 0.9900302, 0.9900302, 0.9900302}{0.9877746, 0.9877746, 0.9877746, 0.9877746, 0.9877746, 0.9877746, 0.9877746, 0.9877746, 0.9877746, 0.9877746, 0.9877746}{0.9841846, 0.9841846, 0.9841846, 0.9841846, 0.9841846, 0.9841846, 0.9841846, 0.9841846, 0.9841846, 0.9841846, 0.9841846}{0.9872739, 0.9872739, 0.9872739, 0.9872739, 0.9872739, 0.9872739, 0.9872739, 0.9872739, 0.9872739, 0.9872739, 0.9872739}{0.9865005, 0.9865005, 0.9865005, 0.9865005, 0.9865005, 0.9865005, 0.9865005, 0.9865005, 0.9865005, 0.9865005, 0.9865005}{0.9828935, 0.9828935, 0.9828935, 0.9828935, 0.9828935, 0.9828935, 0.9828935, 0.9828935, 0.9828935, 0.9828935, 0.9828935}{0.9782302, 0.9782302, 0.9782302, 0.9782302, 0.9782302, 0.9782302, 0.9782302, 0.9782302, 0.9782302, 0.9782302, 0.9782302}{0.9737563, 0.9737563, 0.9737563, 0.9737563, 0.9737563, 0.9737563, 0.9737563, 0.9737563, 0.9737563, 0.9737563, 0.9737563}{0.9693942, 0.9693942, 0.9693942, 0.9693942, 0.9693942, 0.9693942, 0.9693942, 0.9693942, 0.9693942, 0.9693942, 0.9693942}{0.9651996, 0.9651996, 0.9651996, 0.9651996, 0.9651996, 0.9651996, 0.9651996, 0.9651996, 0.9651996, 0.9651996, 0.9651996}{0.963829, 0.963829, 0.963829, 0.963829, 0.963829, 0.963829, 0.963829, 0.963829, 0.963829, 0.963829, 0.963829}{0.9638221, 0.9638221, 0.9638221, 0.9638221, 0.9638221, 0.9638221, 0.9638221, 0.9638221, 0.9638221, 0.9638221, 0.9638221}{0.9625528, 0.9625528, 0.9625528, 0.9625528, 0.9625528, 0.9625528, 0.9625528, 0.9625528, 0.9625528, 0.9625528, 0.9625528}{0.961299, 0.961299, 0.961299, 0.961299, 0.961299, 0.961299, 0.961299, 0.961299, 0.961299, 0.961299, 0.961299}{0.9600896, 0.9600896, 0.9600896, 0.9600896, 0.9600896, 0.9600896, 0.9600896, 0.9600896, 0.9600896, 0.9600896, 0.9600896}{0.9579165, 0.9579165, 0.9579165, 0.9579165, 0.9579165, 0.9579165, 0.9579165, 0.9579165, 0.9579165, 0.9579165, 0.9579165}{0.9544676, 0.9544676, 0.9544676, 0.9544676, 0.9544676, 0.9544676, 0.9544676, 0.9544676, 0.9544676, 0.9544676, 0.9544676}{0.9511103, 0.9511103, 0.9511103, 0.9511103, 0.9511103, 0.9511103, 0.9511103, 0.9511103, 0.9511103, 0.9511103, 0.9511103}{0.9478392, 0.9478392, 0.9478392, 0.9478392, 0.9478392, 0.9478392, 0.9478392, 0.9478392, 0.9478392, 0.9478392, 0.9478392}{0.9451807, 0.9451807, 0.9451807, 0.9451807, 0.9451807, 0.9451807, 0.9451807, 0.9451807, 0.9451807, 0.9451807, 0.9451807}{0.94311, 0.94311, 0.94311, 0.94311, 0.94311, 0.94311, 0.94311, 0.94311, 0.94311, 0.94311, 0.94311}{0.9422951, 0.9422951, 0.9422951, 0.9422951, 0.9422951, 0.9422951, 0.9422951, 0.9422951, 0.9422951, 0.9422951, 0.9422951}{0.9432827, 0.9432827, 0.9432827, 0.9432827, 0.9432827, 0.9432827, 0.9432827, 0.9432827, 0.9432827, 0.9432827, 0.9432827}{0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609}{0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609}{0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609}{0.9407946, 0.9407946, 0.9407946, 0.9407946, 0.9407946, 0.9407946, 0.9407946, 0.9407946, 0.9407946, 0.9407946, 0.9407946}{0.9372043, 0.9372043, 0.9372043, 0.9372043, 0.9372043, 0.9372043, 0.9372043, 0.9372043, 0.9372043, 0.9372043, 0.9372043}{0.9341327, 0.9341327, 0.9341327, 0.9341327, 0.9341327, 0.9341327, 0.9341327, 0.9341327, 0.9341327, 0.9341327, 0.9341327}{0.9315818, 0.9315818, 0.9315818, 0.9315818, 0.9315818, 0.9315818, 0.9315818, 0.9315818, 0.9315818, 0.9315818, 0.9315818}{0.9290309, 0.9290309, 0.9290309, 0.9290309, 0.9290309, 0.9290309, 0.9290309, 0.9290309, 0.9290309, 0.9290309, 0.9290309}{0.9266083, 0.9266083, 0.9266083, 0.9266083, 0.9266083, 0.9266083, 0.9266083, 0.9266083, 0.9266083, 0.9266083, 0.9266083}{0.924189, 0.924189, 0.924189, 0.924189, 0.924189, 0.924189, 0.924189, 0.924189, 0.924189, 0.924189, 0.924189}{0.9215588, 0.9215588, 0.9215588, 0.9215588, 0.9215588, 0.9215588, 0.9215588, 0.9215588, 0.9215588, 0.9215588, 0.9215588}{0.9185029, 0.9185029, 0.9185029, 0.9185029, 0.9185029, 0.9185029, 0.9185029, 0.9185029, 0.9185029, 0.9185029, 0.9185029}{0.9154471, 0.9154471, 0.9154471, 0.9154471, 0.9154471, 0.9154471, 0.9154471, 0.9154471, 0.9154471, 0.9154471, 0.9154471}{0.9128898, 0.9128898, 0.9128898, 0.9128898, 0.9128898, 0.9128898, 0.9128898, 0.9128898, 0.9128898, 0.9128898, 0.9128898}{0.9107186, 0.9107186, 0.9107186, 0.9107186, 0.9107186, 0.9107186, 0.9107186, 0.9107186, 0.9107186, 0.9107186, 0.9107186}{0.9085475, 0.9085475, 0.9085475, 0.9085475, 0.9085475, 0.9085475, 0.9085475, 0.9085475, 0.9085475, 0.9085475, 0.9085475}{0.9064508, 0.9064508, 0.9064508, 0.9064508, 0.9064508, 0.9064508, 0.9064508, 0.9064508, 0.9064508, 0.9064508, 0.9064508}{0.9043917, 0.9043917, 0.9043917, 0.9043917, 0.9043917, 0.9043917, 0.9043917, 0.9043917, 0.9043917, 0.9043917, 0.9043917}{0.9023325, 0.9023325, 0.9023325, 0.9023325, 0.9023325, 0.9023325, 0.9023325, 0.9023325, 0.9023325, 0.9023325, 0.9023325}{0.9003403, 0.9003403, 0.9003403, 0.9003403, 0.9003403, 0.9003403, 0.9003403, 0.9003403, 0.9003403, 0.9003403, 0.9003403}{0.8983873, 0.8983873, 0.8983873, 0.8983873, 0.8983873, 0.8983873, 0.8983873, 0.8983873, 0.8983873, 0.8983873, 0.8983873}{0.8964344, 0.8964344, 0.8964344, 0.8964344, 0.8964344, 0.8964344, 0.8964344, 0.8964344, 0.8964344, 0.8964344, 0.8964344}{0.894527, 0.894527, 0.894527, 0.894527, 0.894527, 0.894527, 0.894527, 0.894527, 0.894527, 0.894527, 0.894527}{0.8926748, 0.8926748, 0.8926748, 0.8926748, 0.8926748, 0.8926748, 0.8926748, 0.8926748, 0.8926748, 0.8926748, 0.8926748}{0.8908226, 0.8908226, 0.8908226, 0.8908226, 0.8908226, 0.8908226, 0.8908226, 0.8908226, 0.8908226, 0.8908226, 0.8908226}{0.8889097, 0.8889097, 0.8889097, 0.8889097, 0.8889097, 0.8889097, 0.8889097, 0.8889097, 0.8889097, 0.8889097, 0.8889097}{0.8865701, 0.8865701, 0.8865701, 0.8865701, 0.8865701, 0.8865701, 0.8865701, 0.8865701, 0.8865701, 0.8865701, 0.8865701}{0.8842306, 0.8842306, 0.8842306, 0.8842306, 0.8842306, 0.8842306, 0.8842306, 0.8842306, 0.8842306, 0.8842306, 0.8842306}{0.8818911, 0.8818911, 0.8818911, 0.8818911, 0.8818911, 0.8818911, 0.8818911, 0.8818911, 0.8818911, 0.8818911, 0.8818911}{0.8792798, 0.8792798, 0.8792798, 0.8792798, 0.8792798, 0.8792798, 0.8792798, 0.8792798, 0.8792798, 0.8792798, 0.8792798}{0.8765158, 0.8765158, 0.8765158, 0.8765158, 0.8765158, 0.8765158, 0.8765158, 0.8765158, 0.8765158, 0.8765158, 0.8765158}{0.8737518, 0.8737518, 0.8737518, 0.8737518, 0.8737518, 0.8737518, 0.8737518, 0.8737518, 0.8737518, 0.8737518, 0.8737518}{0.8709878, 0.8709878, 0.8709878, 0.8709878, 0.8709878, 0.8709878, 0.8709878, 0.8709878, 0.8709878, 0.8709878, 0.8709878}{0.868892, 0.868892, 0.868892, 0.868892, 0.868892, 0.868892, 0.868892, 0.868892, 0.868892, 0.868892, 0.868892}{0.8668021, 0.8668021, 0.8668021, 0.8668021, 0.8668021, 0.8668021, 0.8668021, 0.8668021, 0.8668021, 0.8668021, 0.8668021}{0.8647121, 0.8647121, 0.8647121, 0.8647121, 0.8647121, 0.8647121, 0.8647121, 0.8647121, 0.8647121, 0.8647121, 0.8647121}{0.8626414, 0.8626414, 0.8626414, 0.8626414, 0.8626414, 0.8626414, 0.8626414, 0.8626414, 0.8626414, 0.8626414, 0.8626414}{0.8606638, 0.8606638, 0.8606638, 0.8606638, 0.8606638, 0.8606638, 0.8606638, 0.8606638, 0.8606638, 0.8606638, 0.8606638}{0.8586863, 0.8586863, 0.8586863, 0.8586863, 0.8586863, 0.8586863, 0.8586863, 0.8586863, 0.8586863, 0.8586863, 0.8586863}{0.8567087, 0.8567087, 0.8567087, 0.8567087, 0.8567087, 0.8567087, 0.8567087, 0.8567087, 0.8567087, 0.8567087, 0.8567087}{0.8548283, 0.8548283, 0.8548283, 0.8548283, 0.8548283, 0.8548283, 0.8548283, 0.8548283, 0.8548283, 0.8548283, 0.8548283}{0.8534232, 0.8534232, 0.8534232, 0.8534232, 0.8534232, 0.8534232, 0.8534232, 0.8534232, 0.8534232, 0.8534232, 0.8534232}{0.8520182, 0.8520182, 0.8520182, 0.8520182, 0.8520182, 0.8520182, 0.8520182, 0.8520182, 0.8520182, 0.8520182, 0.8520182}{0.8506131, 0.8506131, 0.8506131, 0.8506131, 0.8506131, 0.8506131, 0.8506131, 0.8506131, 0.8506131, 0.8506131, 0.8506131}{0.8492081, 0.8492081, 0.8492081, 0.8492081, 0.8492081, 0.8492081, 0.8492081, 0.8492081, 0.8492081, 0.8492081, 0.8492081}{0.8483086, 0.8483086, 0.8483086, 0.8483086, 0.8483086, 0.8483086, 0.8483086, 0.8483086, 0.8483086, 0.8483086, 0.8483086}{0.8474192, 0.8474192, 0.8474192, 0.8474192, 0.8474192, 0.8474192, 0.8474192, 0.8474192, 0.8474192, 0.8474192, 0.8474192}{0.8465298, 0.8465298, 0.8465298, 0.8465298, 0.8465298, 0.8465298, 0.8465298, 0.8465298, 0.8465298, 0.8465298, 0.8465298}{0.8456404, 0.8456404, 0.8456404, 0.8456404, 0.8456404, 0.8456404, 0.8456404, 0.8456404, 0.8456404, 0.8456404, 0.8456404}{0.844527, 0.844527, 0.844527, 0.844527, 0.844527, 0.844527, 0.844527, 0.844527, 0.844527, 0.844527, 0.844527}{0.8432602, 0.8432602, 0.8432602, 0.8432602, 0.8432602, 0.8432602, 0.8432602, 0.8432602, 0.8432602, 0.8432602, 0.8432602}{0.8419935, 0.8419935, 0.8419935, 0.8419935, 0.8419935, 0.8419935, 0.8419935, 0.8419935, 0.8419935, 0.8419935, 0.8419935}{0.8407267, 0.8407267, 0.8407267, 0.8407267, 0.8407267, 0.8407267, 0.8407267, 0.8407267, 0.8407267, 0.8407267, 0.8407267}{0.83946, 0.83946, 0.83946, 0.83946, 0.83946, 0.83946, 0.83946, 0.83946, 0.83946, 0.83946, 0.83946}};$/;" v +AD_LSSTdepth baryons2.h /^ static double AD_LSSTdepth[100][11]={{1.00221, 1.00221, 1.00221, 1.00221, 1.00221, 1.00221, 1.00221, 1.00221, 1.00221, 1.00221, 1.00221}{1.00277, 1.00277, 1.00277, 1.00277, 1.00277, 1.00277, 1.00277, 1.00277, 1.00277, 1.00277, 1.00277}{1.000374, 1.000374, 1.000374, 1.000374, 1.000374, 1.000374, 1.000374, 1.000374, 1.000374, 1.000374, 1.000374}{1.002085, 1.002085, 1.002085, 1.002085, 1.002085, 1.002085, 1.002085, 1.002085, 1.002085, 1.002085, 1.002085}{1.004155, 1.004155, 1.004155, 1.004155, 1.004155, 1.004155, 1.004155, 1.004155, 1.004155, 1.004155, 1.004155}{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}{0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054}{0.993116, 0.993116, 0.993116, 0.993116, 0.993116, 0.993116, 0.993116, 0.993116, 0.993116, 0.993116, 0.993116}{0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054}{0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001}{0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001}{0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001}{0.9987237, 0.9987237, 0.9987237, 0.9987237, 0.9987237, 0.9987237, 0.9987237, 0.9987237, 0.9987237, 0.9987237, 0.9987237}{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}{0.9946961, 0.9946961, 0.9946961, 0.9946961, 0.9946961, 0.9946961, 0.9946961, 0.9946961, 0.9946961, 0.9946961, 0.9946961}{0.9899444, 0.9899444, 0.9899444, 0.9899444, 0.9899444, 0.9899444, 0.9899444, 0.9899444, 0.9899444, 0.9899444, 0.9899444}{0.9872812, 0.9872812, 0.9872812, 0.9872812, 0.9872812, 0.9872812, 0.9872812, 0.9872812, 0.9872812, 0.9872812, 0.9872812}{0.9878035, 0.9878035, 0.9878035, 0.9878035, 0.9878035, 0.9878035, 0.9878035, 0.9878035, 0.9878035, 0.9878035, 0.9878035}{0.9918709, 0.9918709, 0.9918709, 0.9918709, 0.9918709, 0.9918709, 0.9918709, 0.9918709, 0.9918709, 0.9918709, 0.9918709}{0.9964829, 0.9964829, 0.9964829, 0.9964829, 0.9964829, 0.9964829, 0.9964829, 0.9964829, 0.9964829, 0.9964829, 0.9964829}{0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001, 0.9977001}{0.9948678, 0.9948678, 0.9948678, 0.9948678, 0.9948678, 0.9948678, 0.9948678, 0.9948678, 0.9948678, 0.9948678, 0.9948678}{0.99197, 0.99197, 0.99197, 0.99197, 0.99197, 0.99197, 0.99197, 0.99197, 0.99197, 0.99197, 0.99197}{0.9900302, 0.9900302, 0.9900302, 0.9900302, 0.9900302, 0.9900302, 0.9900302, 0.9900302, 0.9900302, 0.9900302, 0.9900302}{0.9877746, 0.9877746, 0.9877746, 0.9877746, 0.9877746, 0.9877746, 0.9877746, 0.9877746, 0.9877746, 0.9877746, 0.9877746}{0.9841846, 0.9841846, 0.9841846, 0.9841846, 0.9841846, 0.9841846, 0.9841846, 0.9841846, 0.9841846, 0.9841846, 0.9841846}{0.9872739, 0.9872739, 0.9872739, 0.9872739, 0.9872739, 0.9872739, 0.9872739, 0.9872739, 0.9872739, 0.9872739, 0.9872739}{0.9865005, 0.9865005, 0.9865005, 0.9865005, 0.9865005, 0.9865005, 0.9865005, 0.9865005, 0.9865005, 0.9865005, 0.9865005}{0.9828935, 0.9828935, 0.9828935, 0.9828935, 0.9828935, 0.9828935, 0.9828935, 0.9828935, 0.9828935, 0.9828935, 0.9828935}{0.9782302, 0.9782302, 0.9782302, 0.9782302, 0.9782302, 0.9782302, 0.9782302, 0.9782302, 0.9782302, 0.9782302, 0.9782302}{0.9737563, 0.9737563, 0.9737563, 0.9737563, 0.9737563, 0.9737563, 0.9737563, 0.9737563, 0.9737563, 0.9737563, 0.9737563}{0.9693942, 0.9693942, 0.9693942, 0.9693942, 0.9693942, 0.9693942, 0.9693942, 0.9693942, 0.9693942, 0.9693942, 0.9693942}{0.9651996, 0.9651996, 0.9651996, 0.9651996, 0.9651996, 0.9651996, 0.9651996, 0.9651996, 0.9651996, 0.9651996, 0.9651996}{0.963829, 0.963829, 0.963829, 0.963829, 0.963829, 0.963829, 0.963829, 0.963829, 0.963829, 0.963829, 0.963829}{0.9638221, 0.9638221, 0.9638221, 0.9638221, 0.9638221, 0.9638221, 0.9638221, 0.9638221, 0.9638221, 0.9638221, 0.9638221}{0.9625528, 0.9625528, 0.9625528, 0.9625528, 0.9625528, 0.9625528, 0.9625528, 0.9625528, 0.9625528, 0.9625528, 0.9625528}{0.961299, 0.961299, 0.961299, 0.961299, 0.961299, 0.961299, 0.961299, 0.961299, 0.961299, 0.961299, 0.961299}{0.9600896, 0.9600896, 0.9600896, 0.9600896, 0.9600896, 0.9600896, 0.9600896, 0.9600896, 0.9600896, 0.9600896, 0.9600896}{0.9579165, 0.9579165, 0.9579165, 0.9579165, 0.9579165, 0.9579165, 0.9579165, 0.9579165, 0.9579165, 0.9579165, 0.9579165}{0.9544676, 0.9544676, 0.9544676, 0.9544676, 0.9544676, 0.9544676, 0.9544676, 0.9544676, 0.9544676, 0.9544676, 0.9544676}{0.9511103, 0.9511103, 0.9511103, 0.9511103, 0.9511103, 0.9511103, 0.9511103, 0.9511103, 0.9511103, 0.9511103, 0.9511103}{0.9478392, 0.9478392, 0.9478392, 0.9478392, 0.9478392, 0.9478392, 0.9478392, 0.9478392, 0.9478392, 0.9478392, 0.9478392}{0.9451807, 0.9451807, 0.9451807, 0.9451807, 0.9451807, 0.9451807, 0.9451807, 0.9451807, 0.9451807, 0.9451807, 0.9451807}{0.94311, 0.94311, 0.94311, 0.94311, 0.94311, 0.94311, 0.94311, 0.94311, 0.94311, 0.94311, 0.94311}{0.9422951, 0.9422951, 0.9422951, 0.9422951, 0.9422951, 0.9422951, 0.9422951, 0.9422951, 0.9422951, 0.9422951, 0.9422951}{0.9432827, 0.9432827, 0.9432827, 0.9432827, 0.9432827, 0.9432827, 0.9432827, 0.9432827, 0.9432827, 0.9432827, 0.9432827}{0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609}{0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609}{0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609, 0.9440609}{0.9407946, 0.9407946, 0.9407946, 0.9407946, 0.9407946, 0.9407946, 0.9407946, 0.9407946, 0.9407946, 0.9407946, 0.9407946}{0.9372043, 0.9372043, 0.9372043, 0.9372043, 0.9372043, 0.9372043, 0.9372043, 0.9372043, 0.9372043, 0.9372043, 0.9372043}{0.9341327, 0.9341327, 0.9341327, 0.9341327, 0.9341327, 0.9341327, 0.9341327, 0.9341327, 0.9341327, 0.9341327, 0.9341327}{0.9315818, 0.9315818, 0.9315818, 0.9315818, 0.9315818, 0.9315818, 0.9315818, 0.9315818, 0.9315818, 0.9315818, 0.9315818}{0.9290309, 0.9290309, 0.9290309, 0.9290309, 0.9290309, 0.9290309, 0.9290309, 0.9290309, 0.9290309, 0.9290309, 0.9290309}{0.9266083, 0.9266083, 0.9266083, 0.9266083, 0.9266083, 0.9266083, 0.9266083, 0.9266083, 0.9266083, 0.9266083, 0.9266083}{0.924189, 0.924189, 0.924189, 0.924189, 0.924189, 0.924189, 0.924189, 0.924189, 0.924189, 0.924189, 0.924189}{0.9215588, 0.9215588, 0.9215588, 0.9215588, 0.9215588, 0.9215588, 0.9215588, 0.9215588, 0.9215588, 0.9215588, 0.9215588}{0.9185029, 0.9185029, 0.9185029, 0.9185029, 0.9185029, 0.9185029, 0.9185029, 0.9185029, 0.9185029, 0.9185029, 0.9185029}{0.9154471, 0.9154471, 0.9154471, 0.9154471, 0.9154471, 0.9154471, 0.9154471, 0.9154471, 0.9154471, 0.9154471, 0.9154471}{0.9128898, 0.9128898, 0.9128898, 0.9128898, 0.9128898, 0.9128898, 0.9128898, 0.9128898, 0.9128898, 0.9128898, 0.9128898}{0.9107186, 0.9107186, 0.9107186, 0.9107186, 0.9107186, 0.9107186, 0.9107186, 0.9107186, 0.9107186, 0.9107186, 0.9107186}{0.9085475, 0.9085475, 0.9085475, 0.9085475, 0.9085475, 0.9085475, 0.9085475, 0.9085475, 0.9085475, 0.9085475, 0.9085475}{0.9064508, 0.9064508, 0.9064508, 0.9064508, 0.9064508, 0.9064508, 0.9064508, 0.9064508, 0.9064508, 0.9064508, 0.9064508}{0.9043917, 0.9043917, 0.9043917, 0.9043917, 0.9043917, 0.9043917, 0.9043917, 0.9043917, 0.9043917, 0.9043917, 0.9043917}{0.9023325, 0.9023325, 0.9023325, 0.9023325, 0.9023325, 0.9023325, 0.9023325, 0.9023325, 0.9023325, 0.9023325, 0.9023325}{0.9003403, 0.9003403, 0.9003403, 0.9003403, 0.9003403, 0.9003403, 0.9003403, 0.9003403, 0.9003403, 0.9003403, 0.9003403}{0.8983873, 0.8983873, 0.8983873, 0.8983873, 0.8983873, 0.8983873, 0.8983873, 0.8983873, 0.8983873, 0.8983873, 0.8983873}{0.8964344, 0.8964344, 0.8964344, 0.8964344, 0.8964344, 0.8964344, 0.8964344, 0.8964344, 0.8964344, 0.8964344, 0.8964344}{0.894527, 0.894527, 0.894527, 0.894527, 0.894527, 0.894527, 0.894527, 0.894527, 0.894527, 0.894527, 0.894527}{0.8926748, 0.8926748, 0.8926748, 0.8926748, 0.8926748, 0.8926748, 0.8926748, 0.8926748, 0.8926748, 0.8926748, 0.8926748}{0.8908226, 0.8908226, 0.8908226, 0.8908226, 0.8908226, 0.8908226, 0.8908226, 0.8908226, 0.8908226, 0.8908226, 0.8908226}{0.8889097, 0.8889097, 0.8889097, 0.8889097, 0.8889097, 0.8889097, 0.8889097, 0.8889097, 0.8889097, 0.8889097, 0.8889097}{0.8865701, 0.8865701, 0.8865701, 0.8865701, 0.8865701, 0.8865701, 0.8865701, 0.8865701, 0.8865701, 0.8865701, 0.8865701}{0.8842306, 0.8842306, 0.8842306, 0.8842306, 0.8842306, 0.8842306, 0.8842306, 0.8842306, 0.8842306, 0.8842306, 0.8842306}{0.8818911, 0.8818911, 0.8818911, 0.8818911, 0.8818911, 0.8818911, 0.8818911, 0.8818911, 0.8818911, 0.8818911, 0.8818911}{0.8792798, 0.8792798, 0.8792798, 0.8792798, 0.8792798, 0.8792798, 0.8792798, 0.8792798, 0.8792798, 0.8792798, 0.8792798}{0.8765158, 0.8765158, 0.8765158, 0.8765158, 0.8765158, 0.8765158, 0.8765158, 0.8765158, 0.8765158, 0.8765158, 0.8765158}{0.8737518, 0.8737518, 0.8737518, 0.8737518, 0.8737518, 0.8737518, 0.8737518, 0.8737518, 0.8737518, 0.8737518, 0.8737518}{0.8709878, 0.8709878, 0.8709878, 0.8709878, 0.8709878, 0.8709878, 0.8709878, 0.8709878, 0.8709878, 0.8709878, 0.8709878}{0.868892, 0.868892, 0.868892, 0.868892, 0.868892, 0.868892, 0.868892, 0.868892, 0.868892, 0.868892, 0.868892}{0.8668021, 0.8668021, 0.8668021, 0.8668021, 0.8668021, 0.8668021, 0.8668021, 0.8668021, 0.8668021, 0.8668021, 0.8668021}{0.8647121, 0.8647121, 0.8647121, 0.8647121, 0.8647121, 0.8647121, 0.8647121, 0.8647121, 0.8647121, 0.8647121, 0.8647121}{0.8626414, 0.8626414, 0.8626414, 0.8626414, 0.8626414, 0.8626414, 0.8626414, 0.8626414, 0.8626414, 0.8626414, 0.8626414}{0.8606638, 0.8606638, 0.8606638, 0.8606638, 0.8606638, 0.8606638, 0.8606638, 0.8606638, 0.8606638, 0.8606638, 0.8606638}{0.8586863, 0.8586863, 0.8586863, 0.8586863, 0.8586863, 0.8586863, 0.8586863, 0.8586863, 0.8586863, 0.8586863, 0.8586863}{0.8567087, 0.8567087, 0.8567087, 0.8567087, 0.8567087, 0.8567087, 0.8567087, 0.8567087, 0.8567087, 0.8567087, 0.8567087}{0.8548283, 0.8548283, 0.8548283, 0.8548283, 0.8548283, 0.8548283, 0.8548283, 0.8548283, 0.8548283, 0.8548283, 0.8548283}{0.8534232, 0.8534232, 0.8534232, 0.8534232, 0.8534232, 0.8534232, 0.8534232, 0.8534232, 0.8534232, 0.8534232, 0.8534232}{0.8520182, 0.8520182, 0.8520182, 0.8520182, 0.8520182, 0.8520182, 0.8520182, 0.8520182, 0.8520182, 0.8520182, 0.8520182}{0.8506131, 0.8506131, 0.8506131, 0.8506131, 0.8506131, 0.8506131, 0.8506131, 0.8506131, 0.8506131, 0.8506131, 0.8506131}{0.8492081, 0.8492081, 0.8492081, 0.8492081, 0.8492081, 0.8492081, 0.8492081, 0.8492081, 0.8492081, 0.8492081, 0.8492081}{0.8483086, 0.8483086, 0.8483086, 0.8483086, 0.8483086, 0.8483086, 0.8483086, 0.8483086, 0.8483086, 0.8483086, 0.8483086}{0.8474192, 0.8474192, 0.8474192, 0.8474192, 0.8474192, 0.8474192, 0.8474192, 0.8474192, 0.8474192, 0.8474192, 0.8474192}{0.8465298, 0.8465298, 0.8465298, 0.8465298, 0.8465298, 0.8465298, 0.8465298, 0.8465298, 0.8465298, 0.8465298, 0.8465298}{0.8456404, 0.8456404, 0.8456404, 0.8456404, 0.8456404, 0.8456404, 0.8456404, 0.8456404, 0.8456404, 0.8456404, 0.8456404}{0.844527, 0.844527, 0.844527, 0.844527, 0.844527, 0.844527, 0.844527, 0.844527, 0.844527, 0.844527, 0.844527}{0.8432602, 0.8432602, 0.8432602, 0.8432602, 0.8432602, 0.8432602, 0.8432602, 0.8432602, 0.8432602, 0.8432602, 0.8432602}{0.8419935, 0.8419935, 0.8419935, 0.8419935, 0.8419935, 0.8419935, 0.8419935, 0.8419935, 0.8419935, 0.8419935, 0.8419935}{0.8407267, 0.8407267, 0.8407267, 0.8407267, 0.8407267, 0.8407267, 0.8407267, 0.8407267, 0.8407267, 0.8407267, 0.8407267}{0.83946, 0.83946, 0.83946, 0.83946, 0.83946, 0.83946, 0.83946, 0.83946, 0.83946, 0.83946, 0.83946}};$/;" v +AGN_DESdepth baryons.h /^static double AGN_DESdepth[100][11]={{0.992103, 0.9913154, 0.9915626, 0.9922639, 0.9930532, 0.9940195, 0.9952336, 0.996125, 0.9969577, 0.9977286, 0.9984023},{0.9862238, 0.9850474, 0.9853872, 0.9867358, 0.9878644, 0.9892341, 0.9909417, 0.9926103, 0.9941552, 0.9954102, 0.9965004},{0.9792363, 0.9770282, 0.9774568, 0.9789421, 0.9809105, 0.983191, 0.9856612, 0.9879151, 0.9901159, 0.9921596, 0.9940022},{0.9707152, 0.9685157, 0.9688622, 0.9709949, 0.9730114, 0.9756282, 0.9788727, 0.9821772, 0.985299, 0.9879745, 0.9905162},{0.9633447, 0.9610002, 0.9606276, 0.9618652, 0.9639265, 0.966955, 0.9705846, 0.9745577, 0.9786747, 0.9827154, 0.9865062},{0.9559308, 0.9515092, 0.9505406, 0.952549, 0.9552053, 0.9587884, 0.9634037, 0.9684815, 0.9732076, 0.9779229, 0.9824552},{0.9486312, 0.9431001, 0.9412192, 0.9426963, 0.9455684, 0.9491253, 0.9541202, 0.9598931, 0.9660997, 0.9723172, 0.9779563},{0.9419175, 0.9360152, 0.9323581, 0.9332932, 0.9355892, 0.9399028, 0.9456136, 0.9520271, 0.9587386, 0.9656153, 0.972368},{0.9348555, 0.9273062, 0.9227023, 0.9231835, 0.9255543, 0.9297719, 0.9359059, 0.9430856, 0.9508999, 0.9587439, 0.9662732},{0.9270361, 0.9181366, 0.9130682, 0.9132722, 0.9150848, 0.91956, 0.9268135, 0.9342387, 0.9425517, 0.9513753, 0.9604644},{0.9202743, 0.9105997, 0.9037077, 0.903495, 0.9054413, 0.9102093, 0.9167847, 0.9247303, 0.9339236, 0.9435545, 0.9536671},{0.9164651, 0.9040356, 0.8962363, 0.8956205, 0.8982074, 0.9032825, 0.909182, 0.9167981, 0.9260476, 0.9365776, 0.947747},{0.9126702, 0.8978611, 0.8888007, 0.8873102, 0.8894997, 0.8938567, 0.9001338, 0.9087315, 0.9187546, 0.9299116, 0.9417343},{0.9067148, 0.8919746, 0.8813962, 0.8794718, 0.8815581, 0.8857945, 0.8923543, 0.9008221, 0.9111027, 0.9228682, 0.9355676},{0.9019037, 0.8856563, 0.8746283, 0.8726379, 0.8737598, 0.8783998, 0.8843163, 0.8928539, 0.902889, 0.9150131, 0.9286834},{0.8965476, 0.8790511, 0.8673356, 0.8658841, 0.8682718, 0.8722875, 0.8774977, 0.8856364, 0.8964559, 0.9093034, 0.9231976},{0.8890194, 0.8722973, 0.8608868, 0.8589226, 0.8605992, 0.864958, 0.8695043, 0.8775554, 0.8882644, 0.9013454, 0.9162898},{0.8856219, 0.8671239, 0.8554035, 0.8524618, 0.8535533, 0.8579717, 0.8632652, 0.8719683, 0.883448, 0.8968232, 0.9114673},{0.8796482, 0.8616644, 0.8490595, 0.8467956, 0.8484921, 0.8533917, 0.8578507, 0.8660102, 0.8770641, 0.890088, 0.905349},{0.8759122, 0.8578012, 0.8451617, 0.8424477, 0.8427965, 0.8469436, 0.8521275, 0.8606221, 0.8720776, 0.884719, 0.9002302},{0.8704401, 0.8528132, 0.8403681, 0.8366071, 0.8362363, 0.8407242, 0.8460477, 0.8542618, 0.8652815, 0.8786939, 0.8947763},{0.8668882, 0.8474592, 0.8336503, 0.8299787, 0.8307142, 0.8364935, 0.8408385, 0.8486727, 0.8597475, 0.8735452, 0.8902304},{0.8614488, 0.8419818, 0.8279147, 0.8251514, 0.8262472, 0.8315138, 0.8359218, 0.8438909, 0.8549789, 0.8688528, 0.885747},{0.8564946, 0.8364185, 0.8218321, 0.8181942, 0.8200708, 0.8267527, 0.8310587, 0.8389525, 0.8502277, 0.8645266, 0.8815253},{0.8517035, 0.8313884, 0.8172998, 0.8145006, 0.8162872, 0.8233551, 0.8269491, 0.8350095, 0.8464587, 0.8606221, 0.8781826},{0.8494936, 0.8277909, 0.8125864, 0.8092104, 0.8123598, 0.8198974, 0.8229253, 0.8303979, 0.8418359, 0.8561623, 0.8739197},{0.8472725, 0.8233794, 0.8078375, 0.8060666, 0.8089754, 0.8162133, 0.818981, 0.8267332, 0.8388539, 0.8532659, 0.8708769},{0.8424161, 0.8197662, 0.802678, 0.8012019, 0.8050023, 0.8124111, 0.8152152, 0.8233457, 0.8355499, 0.8499477, 0.8681233},{0.8375437, 0.8143921, 0.7962712, 0.7966803, 0.8008442, 0.8084622, 0.8111975, 0.8189556, 0.8312869, 0.8459359, 0.8646289},{0.8348242, 0.8103635, 0.7929938, 0.7930845, 0.7963522, 0.8037351, 0.8072678, 0.8162014, 0.828802, 0.8434311, 0.862133},{0.8286013, 0.8063152, 0.7885883, 0.7885846, 0.7932479, 0.8021005, 0.8045482, 0.8124703, 0.8243256, 0.8397015, 0.8587101},{0.8248232, 0.8014088, 0.785549, 0.7856843, 0.7891623, 0.7990361, 0.801158, 0.8096831, 0.8222979, 0.8371266, 0.8558873},{0.8209558, 0.796842, 0.7822403, 0.7826428, 0.7865069, 0.7966847, 0.7984103, 0.8065706, 0.8194765, 0.8344036, 0.8533596},{0.8177785, 0.7933885, 0.7788667, 0.7795009, 0.7835101, 0.7930686, 0.7952267, 0.8038326, 0.8165379, 0.8313252, 0.8510627},{0.8144434, 0.7892754, 0.7754078, 0.7766766, 0.7804556, 0.788873, 0.7912937, 0.8004868, 0.8138579, 0.8289941, 0.8487277},{0.8113398, 0.7869947, 0.7706193, 0.7730418, 0.7772954, 0.7871535, 0.7903659, 0.7994615, 0.8117925, 0.8263522, 0.8466529},{0.807519, 0.7831047, 0.7689179, 0.7710145, 0.7739416, 0.7840354, 0.7873904, 0.7966763, 0.8097768, 0.8250775, 0.8453153},{0.8056178, 0.7786786, 0.7658294, 0.7683137, 0.7715711, 0.7821307, 0.7854527, 0.7936346, 0.8064268, 0.8226429, 0.8433393},{0.7997935, 0.7768335, 0.7640092, 0.7653897, 0.7686835, 0.7800769, 0.7829013, 0.7919811, 0.8052452, 0.8213145, 0.8417179},{0.7978049, 0.7746143, 0.7606913, 0.7625051, 0.7663874, 0.7780121, 0.7810024, 0.7898876, 0.8030174, 0.8195098, 0.8417193},{0.7947118, 0.7687285, 0.7586973, 0.759595, 0.7641244, 0.7755724, 0.7786703, 0.7876487, 0.8015071, 0.8176121, 0.8386624},{0.7915449, 0.7670919, 0.7569037, 0.7576914, 0.7619174, 0.7731261, 0.7764614, 0.786256, 0.7998805, 0.815803, 0.8362512},{0.7890908, 0.7649145, 0.7554956, 0.7558376, 0.7598519, 0.77084, 0.7748926, 0.7850591, 0.7986741, 0.8149169, 0.8356906},{0.7890914, 0.76202, 0.7539136, 0.7541925, 0.7581733, 0.7688089, 0.7730263, 0.7825859, 0.7961853, 0.8130518, 0.835144},{0.7865675, 0.7575497, 0.7497242, 0.7505677, 0.7554975, 0.7668301, 0.770356, 0.780213, 0.7952075, 0.8120938, 0.8334754},{0.7839286, 0.7542888, 0.7480873, 0.7489287, 0.7527054, 0.764901, 0.7686272, 0.7799228, 0.7945027, 0.8108957, 0.8313088},{0.7824809, 0.7539448, 0.7472213, 0.7468243, 0.7505585, 0.7636022, 0.7685201, 0.7789709, 0.7935072, 0.8090096, 0.829386},{0.7829211, 0.7518782, 0.7458011, 0.7455432, 0.7496429, 0.7633628, 0.7669682, 0.7778496, 0.7918508, 0.8070426, 0.8284923},{0.7776697, 0.7490035, 0.7422249, 0.7451797, 0.7491711, 0.7608673, 0.7648584, 0.7763446, 0.790862, 0.8062019, 0.8278689},{0.7755579, 0.74684, 0.7431664, 0.744137, 0.746392, 0.7605642, 0.7644526, 0.7755978, 0.7892497, 0.8068219, 0.8273529},{0.7740814, 0.7456813, 0.7423201, 0.7421699, 0.7458754, 0.7600856, 0.7637112, 0.7742457, 0.7886106, 0.8051402, 0.8255958},{0.771745, 0.7440503, 0.7408428, 0.7415382, 0.7453227, 0.7589181, 0.7629456, 0.7725004, 0.7862547, 0.802367, 0.823545},{0.7675026, 0.7414568, 0.7402434, 0.7399565, 0.7433241, 0.7585701, 0.7607065, 0.7708857, 0.78529, 0.8023917, 0.8257661},{0.7662192, 0.740942, 0.738118, 0.7385428, 0.7426277, 0.7567146, 0.7605203, 0.7709485, 0.7841347, 0.8021351, 0.8244602},{0.7644159, 0.7410005, 0.7369835, 0.7365558, 0.7401214, 0.7553578, 0.7599978, 0.769746, 0.7842573, 0.8013556, 0.823512},{0.762325, 0.7370022, 0.7358676, 0.7346996, 0.7390625, 0.7542048, 0.7584185, 0.7689477, 0.7835215, 0.8006974, 0.8227227},{0.7605017, 0.7364016, 0.7353092, 0.7348365, 0.739568, 0.75281, 0.7568411, 0.7679746, 0.7825285, 0.7998919, 0.8215617},{0.7586617, 0.7365576, 0.7341471, 0.733297, 0.7385529, 0.7512736, 0.7564789, 0.7672942, 0.7814329, 0.7996141, 0.8206204},{0.7562932, 0.7330796, 0.7325298, 0.7334416, 0.7363112, 0.752183, 0.7569259, 0.766543, 0.7803103, 0.7986286, 0.8210313},{0.7537873, 0.7318043, 0.730541, 0.730761, 0.7355258, 0.7519558, 0.7556298, 0.7644722, 0.7808563, 0.7986674, 0.8213783},{0.751818, 0.7278625, 0.7277702, 0.7297412, 0.7344508, 0.7504618, 0.7538077, 0.7653258, 0.7805655, 0.7984146, 0.8210293},{0.7517044, 0.7303698, 0.7265828, 0.7300685, 0.7337712, 0.75063, 0.7535152, 0.7636599, 0.7784462, 0.7971492, 0.8196614},{0.75117, 0.7301836, 0.7264508, 0.7284014, 0.7333695, 0.7506761, 0.7539025, 0.7642217, 0.7794234, 0.7974139, 0.8193373},{0.7483676, 0.7266786, 0.726667, 0.7279004, 0.7323516, 0.7492683, 0.753254, 0.7642838, 0.7792401, 0.7980284, 0.8192106},{0.7453453, 0.7236045, 0.7263393, 0.7265321, 0.7313968, 0.7479281, 0.7530313, 0.764057, 0.7793401, 0.7980859, 0.8192614},{0.7439653, 0.7246663, 0.7246985, 0.7257892, 0.7313767, 0.7481055, 0.7530295, 0.7636337, 0.7790518, 0.7975254, 0.8193703},{0.7430467, 0.7248894, 0.7220381, 0.7259672, 0.7317682, 0.7502191, 0.7527763, 0.763901, 0.7798862, 0.7961389, 0.8181297},{0.7396655, 0.7232718, 0.7207239, 0.7259052, 0.7293076, 0.7484538, 0.7517135, 0.7634533, 0.7775074, 0.7963108, 0.8178092},{0.7378971, 0.7222773, 0.7203909, 0.7251162, 0.7279422, 0.7468789, 0.7511565, 0.7616375, 0.7776177, 0.7968149, 0.8186243},{0.737942, 0.7202095, 0.7206607, 0.7248869, 0.727697, 0.7467675, 0.7506631, 0.7620319, 0.7776337, 0.7973161, 0.8198154},{0.7374793, 0.719663, 0.7207927, 0.7243456, 0.7281426, 0.7483357, 0.7520627, 0.7618034, 0.7767373, 0.7965735, 0.8196977},{0.7364797, 0.7190809, 0.7188082, 0.7228311, 0.7271766, 0.7481299, 0.7514607, 0.7617219, 0.7777109, 0.7962466, 0.8202257},{0.7358845, 0.7195911, 0.7186004, 0.7219239, 0.7272756, 0.7475118, 0.7512696, 0.7622466, 0.7767385, 0.7969144, 0.8196465},{0.7351944, 0.7187974, 0.7180904, 0.7221018, 0.7278409, 0.7472084, 0.7515757, 0.7608282, 0.7772994, 0.7969976, 0.8190575},{0.7341961, 0.7194245, 0.7173818, 0.7229347, 0.728861, 0.7475807, 0.749999, 0.7613777, 0.7779086, 0.7973539, 0.8192867},{0.7344137, 0.7184855, 0.7168505, 0.7225095, 0.7274305, 0.7475504, 0.7508772, 0.7619759, 0.7780751, 0.7975239, 0.8194472},{0.7348019, 0.7168246, 0.7158289, 0.7203214, 0.7260921, 0.7481479, 0.7511988, 0.7618306, 0.7777631, 0.7963419, 0.8189715},{0.7324423, 0.7160381, 0.7148255, 0.7201405, 0.7265632, 0.748213, 0.7512776, 0.7624254, 0.7775287, 0.7964367, 0.8188323},{0.7293718, 0.7150998, 0.7147379, 0.7205559, 0.7269969, 0.7476776, 0.7518458, 0.7626526, 0.7779854, 0.7968671, 0.8188174},{0.7305337, 0.7158097, 0.7146396, 0.720124, 0.7266174, 0.7469717, 0.7516402, 0.762356, 0.7776841, 0.7966816, 0.8181076},{0.73042, 0.711363, 0.7154516, 0.7198612, 0.7265148, 0.7454599, 0.7509768, 0.7631707, 0.7784504, 0.7957061, 0.818103},{0.7302812, 0.7123786, 0.7162812, 0.7197211, 0.7264223, 0.7439709, 0.7517824, 0.7639198, 0.7785918, 0.7947309, 0.8181126},{0.7293467, 0.7129372, 0.7160781, 0.7196894, 0.7244375, 0.7431136, 0.7522369, 0.7627652, 0.7789955, 0.795407, 0.8189252},{0.7273127, 0.7121906, 0.7156612, 0.7196001, 0.7209297, 0.7431073, 0.7496705, 0.7611526, 0.7808535, 0.796889, 0.8208336},{0.7253215, 0.7110182, 0.7154043, 0.7173358, 0.7187643, 0.7431012, 0.7469224, 0.7628734, 0.7822713, 0.7984409, 0.822686},{0.7243835, 0.7119322, 0.7148134, 0.7176543, 0.7214922, 0.7442718, 0.7482244, 0.7659066, 0.7816321, 0.7994681, 0.8223942},{0.7236563, 0.7114738, 0.7141202, 0.7189519, 0.7246713, 0.745609, 0.7508358, 0.7659929, 0.7812308, 0.8003505, 0.8217469},{0.7228474, 0.7099551, 0.7142246, 0.7203062, 0.7256532, 0.7464872, 0.7526294, 0.7656249, 0.7817272, 0.8001916, 0.8212968},{0.7217921, 0.7072247, 0.7138733, 0.7190738, 0.7245798, 0.7463045, 0.7528913, 0.7656991, 0.7813182, 0.7994181, 0.8212998},{0.7207651, 0.7058379, 0.7134008, 0.7181745, 0.7237527, 0.7461244, 0.7533012, 0.7654463, 0.7809283, 0.7988636, 0.8213025},{0.720137, 0.7058291, 0.7119641, 0.7203029, 0.7239949, 0.7471785, 0.7541694, 0.7646265, 0.7809994, 0.8003384, 0.8223932},{0.7196614, 0.7060545, 0.7103372, 0.7229944, 0.7243321, 0.7486889, 0.7533396, 0.7646284, 0.7814868, 0.8023408, 0.8238794},{0.7192988, 0.7058209, 0.7113554, 0.7229122, 0.7250871, 0.749918, 0.7525965, 0.7651071, 0.7828432, 0.8036629, 0.825114},{0.7195365, 0.704087, 0.7129947, 0.7209238, 0.7248584, 0.7497515, 0.7529109, 0.7656398, 0.7827802, 0.8033529, 0.825138},{0.7197688, 0.704418, 0.7142926, 0.7200552, 0.7246745, 0.7495907, 0.7535406, 0.765686, 0.7828193, 0.803108, 0.8251618},{0.7198048, 0.7069278, 0.7134478, 0.7191617, 0.7235878, 0.7488035, 0.7530055, 0.7659106, 0.7835008, 0.8037166, 0.8255925},{0.7197065, 0.7090744, 0.7130744, 0.7177888, 0.721659, 0.7475887, 0.7533673, 0.7666312, 0.7845605, 0.8045855, 0.8262998},{0.719567, 0.7096464, 0.7124155, 0.7164912, 0.7203929, 0.7464268, 0.7537257, 0.7675817, 0.7853767, 0.8053209, 0.8269853},{0.7176328, 0.7050845, 0.7126353, 0.7182245, 0.7205632, 0.7467906, 0.7535209, 0.7664387, 0.7861449, 0.8047596, 0.8272283},{0.715719, 0.7051204, 0.7128493, 0.7191758, 0.7207285, 0.7471498, 0.7527435, 0.7671566, 0.7864195, 0.8042135, 0.8274643}};$/;" v +AGN_DESdepth baryons2.h /^ static double AGN_DESdepth[100][11]={{0.992103, 0.9913154, 0.9915626, 0.9922639, 0.9930532, 0.9940195, 0.9952336, 0.996125, 0.9969577, 0.9977286, 0.9984023}{0.9862238, 0.9850474, 0.9853872, 0.9867358, 0.9878644, 0.9892341, 0.9909417, 0.9926103, 0.9941552, 0.9954102, 0.9965004}{0.9792363, 0.9770282, 0.9774568, 0.9789421, 0.9809105, 0.983191, 0.9856612, 0.9879151, 0.9901159, 0.9921596, 0.9940022}{0.9707152, 0.9685157, 0.9688622, 0.9709949, 0.9730114, 0.9756282, 0.9788727, 0.9821772, 0.985299, 0.9879745, 0.9905162}{0.9633447, 0.9610002, 0.9606276, 0.9618652, 0.9639265, 0.966955, 0.9705846, 0.9745577, 0.9786747, 0.9827154, 0.9865062}{0.9559308, 0.9515092, 0.9505406, 0.952549, 0.9552053, 0.9587884, 0.9634037, 0.9684815, 0.9732076, 0.9779229, 0.9824552}{0.9486312, 0.9431001, 0.9412192, 0.9426963, 0.9455684, 0.9491253, 0.9541202, 0.9598931, 0.9660997, 0.9723172, 0.9779563}{0.9419175, 0.9360152, 0.9323581, 0.9332932, 0.9355892, 0.9399028, 0.9456136, 0.9520271, 0.9587386, 0.9656153, 0.972368}{0.9348555, 0.9273062, 0.9227023, 0.9231835, 0.9255543, 0.9297719, 0.9359059, 0.9430856, 0.9508999, 0.9587439, 0.9662732}{0.9270361, 0.9181366, 0.9130682, 0.9132722, 0.9150848, 0.91956, 0.9268135, 0.9342387, 0.9425517, 0.9513753, 0.9604644}{0.9202743, 0.9105997, 0.9037077, 0.903495, 0.9054413, 0.9102093, 0.9167847, 0.9247303, 0.9339236, 0.9435545, 0.9536671}{0.9164651, 0.9040356, 0.8962363, 0.8956205, 0.8982074, 0.9032825, 0.909182, 0.9167981, 0.9260476, 0.9365776, 0.947747}{0.9126702, 0.8978611, 0.8888007, 0.8873102, 0.8894997, 0.8938567, 0.9001338, 0.9087315, 0.9187546, 0.9299116, 0.9417343}{0.9067148, 0.8919746, 0.8813962, 0.8794718, 0.8815581, 0.8857945, 0.8923543, 0.9008221, 0.9111027, 0.9228682, 0.9355676}{0.9019037, 0.8856563, 0.8746283, 0.8726379, 0.8737598, 0.8783998, 0.8843163, 0.8928539, 0.902889, 0.9150131, 0.9286834}{0.8965476, 0.8790511, 0.8673356, 0.8658841, 0.8682718, 0.8722875, 0.8774977, 0.8856364, 0.8964559, 0.9093034, 0.9231976}{0.8890194, 0.8722973, 0.8608868, 0.8589226, 0.8605992, 0.864958, 0.8695043, 0.8775554, 0.8882644, 0.9013454, 0.9162898}{0.8856219, 0.8671239, 0.8554035, 0.8524618, 0.8535533, 0.8579717, 0.8632652, 0.8719683, 0.883448, 0.8968232, 0.9114673}{0.8796482, 0.8616644, 0.8490595, 0.8467956, 0.8484921, 0.8533917, 0.8578507, 0.8660102, 0.8770641, 0.890088, 0.905349}{0.8759122, 0.8578012, 0.8451617, 0.8424477, 0.8427965, 0.8469436, 0.8521275, 0.8606221, 0.8720776, 0.884719, 0.9002302}{0.8704401, 0.8528132, 0.8403681, 0.8366071, 0.8362363, 0.8407242, 0.8460477, 0.8542618, 0.8652815, 0.8786939, 0.8947763}{0.8668882, 0.8474592, 0.8336503, 0.8299787, 0.8307142, 0.8364935, 0.8408385, 0.8486727, 0.8597475, 0.8735452, 0.8902304}{0.8614488, 0.8419818, 0.8279147, 0.8251514, 0.8262472, 0.8315138, 0.8359218, 0.8438909, 0.8549789, 0.8688528, 0.885747}{0.8564946, 0.8364185, 0.8218321, 0.8181942, 0.8200708, 0.8267527, 0.8310587, 0.8389525, 0.8502277, 0.8645266, 0.8815253}{0.8517035, 0.8313884, 0.8172998, 0.8145006, 0.8162872, 0.8233551, 0.8269491, 0.8350095, 0.8464587, 0.8606221, 0.8781826}{0.8494936, 0.8277909, 0.8125864, 0.8092104, 0.8123598, 0.8198974, 0.8229253, 0.8303979, 0.8418359, 0.8561623, 0.8739197}{0.8472725, 0.8233794, 0.8078375, 0.8060666, 0.8089754, 0.8162133, 0.818981, 0.8267332, 0.8388539, 0.8532659, 0.8708769}{0.8424161, 0.8197662, 0.802678, 0.8012019, 0.8050023, 0.8124111, 0.8152152, 0.8233457, 0.8355499, 0.8499477, 0.8681233}{0.8375437, 0.8143921, 0.7962712, 0.7966803, 0.8008442, 0.8084622, 0.8111975, 0.8189556, 0.8312869, 0.8459359, 0.8646289}{0.8348242, 0.8103635, 0.7929938, 0.7930845, 0.7963522, 0.8037351, 0.8072678, 0.8162014, 0.828802, 0.8434311, 0.862133}{0.8286013, 0.8063152, 0.7885883, 0.7885846, 0.7932479, 0.8021005, 0.8045482, 0.8124703, 0.8243256, 0.8397015, 0.8587101}{0.8248232, 0.8014088, 0.785549, 0.7856843, 0.7891623, 0.7990361, 0.801158, 0.8096831, 0.8222979, 0.8371266, 0.8558873}{0.8209558, 0.796842, 0.7822403, 0.7826428, 0.7865069, 0.7966847, 0.7984103, 0.8065706, 0.8194765, 0.8344036, 0.8533596}{0.8177785, 0.7933885, 0.7788667, 0.7795009, 0.7835101, 0.7930686, 0.7952267, 0.8038326, 0.8165379, 0.8313252, 0.8510627}{0.8144434, 0.7892754, 0.7754078, 0.7766766, 0.7804556, 0.788873, 0.7912937, 0.8004868, 0.8138579, 0.8289941, 0.8487277}{0.8113398, 0.7869947, 0.7706193, 0.7730418, 0.7772954, 0.7871535, 0.7903659, 0.7994615, 0.8117925, 0.8263522, 0.8466529}{0.807519, 0.7831047, 0.7689179, 0.7710145, 0.7739416, 0.7840354, 0.7873904, 0.7966763, 0.8097768, 0.8250775, 0.8453153}{0.8056178, 0.7786786, 0.7658294, 0.7683137, 0.7715711, 0.7821307, 0.7854527, 0.7936346, 0.8064268, 0.8226429, 0.8433393}{0.7997935, 0.7768335, 0.7640092, 0.7653897, 0.7686835, 0.7800769, 0.7829013, 0.7919811, 0.8052452, 0.8213145, 0.8417179}{0.7978049, 0.7746143, 0.7606913, 0.7625051, 0.7663874, 0.7780121, 0.7810024, 0.7898876, 0.8030174, 0.8195098, 0.8417193}{0.7947118, 0.7687285, 0.7586973, 0.759595, 0.7641244, 0.7755724, 0.7786703, 0.7876487, 0.8015071, 0.8176121, 0.8386624}{0.7915449, 0.7670919, 0.7569037, 0.7576914, 0.7619174, 0.7731261, 0.7764614, 0.786256, 0.7998805, 0.815803, 0.8362512}{0.7890908, 0.7649145, 0.7554956, 0.7558376, 0.7598519, 0.77084, 0.7748926, 0.7850591, 0.7986741, 0.8149169, 0.8356906}{0.7890914, 0.76202, 0.7539136, 0.7541925, 0.7581733, 0.7688089, 0.7730263, 0.7825859, 0.7961853, 0.8130518, 0.835144}{0.7865675, 0.7575497, 0.7497242, 0.7505677, 0.7554975, 0.7668301, 0.770356, 0.780213, 0.7952075, 0.8120938, 0.8334754}{0.7839286, 0.7542888, 0.7480873, 0.7489287, 0.7527054, 0.764901, 0.7686272, 0.7799228, 0.7945027, 0.8108957, 0.8313088}{0.7824809, 0.7539448, 0.7472213, 0.7468243, 0.7505585, 0.7636022, 0.7685201, 0.7789709, 0.7935072, 0.8090096, 0.829386}{0.7829211, 0.7518782, 0.7458011, 0.7455432, 0.7496429, 0.7633628, 0.7669682, 0.7778496, 0.7918508, 0.8070426, 0.8284923}{0.7776697, 0.7490035, 0.7422249, 0.7451797, 0.7491711, 0.7608673, 0.7648584, 0.7763446, 0.790862, 0.8062019, 0.8278689}{0.7755579, 0.74684, 0.7431664, 0.744137, 0.746392, 0.7605642, 0.7644526, 0.7755978, 0.7892497, 0.8068219, 0.8273529}{0.7740814, 0.7456813, 0.7423201, 0.7421699, 0.7458754, 0.7600856, 0.7637112, 0.7742457, 0.7886106, 0.8051402, 0.8255958}{0.771745, 0.7440503, 0.7408428, 0.7415382, 0.7453227, 0.7589181, 0.7629456, 0.7725004, 0.7862547, 0.802367, 0.823545}{0.7675026, 0.7414568, 0.7402434, 0.7399565, 0.7433241, 0.7585701, 0.7607065, 0.7708857, 0.78529, 0.8023917, 0.8257661}{0.7662192, 0.740942, 0.738118, 0.7385428, 0.7426277, 0.7567146, 0.7605203, 0.7709485, 0.7841347, 0.8021351, 0.8244602}{0.7644159, 0.7410005, 0.7369835, 0.7365558, 0.7401214, 0.7553578, 0.7599978, 0.769746, 0.7842573, 0.8013556, 0.823512}{0.762325, 0.7370022, 0.7358676, 0.7346996, 0.7390625, 0.7542048, 0.7584185, 0.7689477, 0.7835215, 0.8006974, 0.8227227}{0.7605017, 0.7364016, 0.7353092, 0.7348365, 0.739568, 0.75281, 0.7568411, 0.7679746, 0.7825285, 0.7998919, 0.8215617}{0.7586617, 0.7365576, 0.7341471, 0.733297, 0.7385529, 0.7512736, 0.7564789, 0.7672942, 0.7814329, 0.7996141, 0.8206204}{0.7562932, 0.7330796, 0.7325298, 0.7334416, 0.7363112, 0.752183, 0.7569259, 0.766543, 0.7803103, 0.7986286, 0.8210313}{0.7537873, 0.7318043, 0.730541, 0.730761, 0.7355258, 0.7519558, 0.7556298, 0.7644722, 0.7808563, 0.7986674, 0.8213783}{0.751818, 0.7278625, 0.7277702, 0.7297412, 0.7344508, 0.7504618, 0.7538077, 0.7653258, 0.7805655, 0.7984146, 0.8210293}{0.7517044, 0.7303698, 0.7265828, 0.7300685, 0.7337712, 0.75063, 0.7535152, 0.7636599, 0.7784462, 0.7971492, 0.8196614}{0.75117, 0.7301836, 0.7264508, 0.7284014, 0.7333695, 0.7506761, 0.7539025, 0.7642217, 0.7794234, 0.7974139, 0.8193373}{0.7483676, 0.7266786, 0.726667, 0.7279004, 0.7323516, 0.7492683, 0.753254, 0.7642838, 0.7792401, 0.7980284, 0.8192106}{0.7453453, 0.7236045, 0.7263393, 0.7265321, 0.7313968, 0.7479281, 0.7530313, 0.764057, 0.7793401, 0.7980859, 0.8192614}{0.7439653, 0.7246663, 0.7246985, 0.7257892, 0.7313767, 0.7481055, 0.7530295, 0.7636337, 0.7790518, 0.7975254, 0.8193703}{0.7430467, 0.7248894, 0.7220381, 0.7259672, 0.7317682, 0.7502191, 0.7527763, 0.763901, 0.7798862, 0.7961389, 0.8181297}{0.7396655, 0.7232718, 0.7207239, 0.7259052, 0.7293076, 0.7484538, 0.7517135, 0.7634533, 0.7775074, 0.7963108, 0.8178092}{0.7378971, 0.7222773, 0.7203909, 0.7251162, 0.7279422, 0.7468789, 0.7511565, 0.7616375, 0.7776177, 0.7968149, 0.8186243}{0.737942, 0.7202095, 0.7206607, 0.7248869, 0.727697, 0.7467675, 0.7506631, 0.7620319, 0.7776337, 0.7973161, 0.8198154}{0.7374793, 0.719663, 0.7207927, 0.7243456, 0.7281426, 0.7483357, 0.7520627, 0.7618034, 0.7767373, 0.7965735, 0.8196977}{0.7364797, 0.7190809, 0.7188082, 0.7228311, 0.7271766, 0.7481299, 0.7514607, 0.7617219, 0.7777109, 0.7962466, 0.8202257}{0.7358845, 0.7195911, 0.7186004, 0.7219239, 0.7272756, 0.7475118, 0.7512696, 0.7622466, 0.7767385, 0.7969144, 0.8196465}{0.7351944, 0.7187974, 0.7180904, 0.7221018, 0.7278409, 0.7472084, 0.7515757, 0.7608282, 0.7772994, 0.7969976, 0.8190575}{0.7341961, 0.7194245, 0.7173818, 0.7229347, 0.728861, 0.7475807, 0.749999, 0.7613777, 0.7779086, 0.7973539, 0.8192867}{0.7344137, 0.7184855, 0.7168505, 0.7225095, 0.7274305, 0.7475504, 0.7508772, 0.7619759, 0.7780751, 0.7975239, 0.8194472}{0.7348019, 0.7168246, 0.7158289, 0.7203214, 0.7260921, 0.7481479, 0.7511988, 0.7618306, 0.7777631, 0.7963419, 0.8189715}{0.7324423, 0.7160381, 0.7148255, 0.7201405, 0.7265632, 0.748213, 0.7512776, 0.7624254, 0.7775287, 0.7964367, 0.8188323}{0.7293718, 0.7150998, 0.7147379, 0.7205559, 0.7269969, 0.7476776, 0.7518458, 0.7626526, 0.7779854, 0.7968671, 0.8188174}{0.7305337, 0.7158097, 0.7146396, 0.720124, 0.7266174, 0.7469717, 0.7516402, 0.762356, 0.7776841, 0.7966816, 0.8181076}{0.73042, 0.711363, 0.7154516, 0.7198612, 0.7265148, 0.7454599, 0.7509768, 0.7631707, 0.7784504, 0.7957061, 0.818103}{0.7302812, 0.7123786, 0.7162812, 0.7197211, 0.7264223, 0.7439709, 0.7517824, 0.7639198, 0.7785918, 0.7947309, 0.8181126}{0.7293467, 0.7129372, 0.7160781, 0.7196894, 0.7244375, 0.7431136, 0.7522369, 0.7627652, 0.7789955, 0.795407, 0.8189252}{0.7273127, 0.7121906, 0.7156612, 0.7196001, 0.7209297, 0.7431073, 0.7496705, 0.7611526, 0.7808535, 0.796889, 0.8208336}{0.7253215, 0.7110182, 0.7154043, 0.7173358, 0.7187643, 0.7431012, 0.7469224, 0.7628734, 0.7822713, 0.7984409, 0.822686}{0.7243835, 0.7119322, 0.7148134, 0.7176543, 0.7214922, 0.7442718, 0.7482244, 0.7659066, 0.7816321, 0.7994681, 0.8223942}{0.7236563, 0.7114738, 0.7141202, 0.7189519, 0.7246713, 0.745609, 0.7508358, 0.7659929, 0.7812308, 0.8003505, 0.8217469}{0.7228474, 0.7099551, 0.7142246, 0.7203062, 0.7256532, 0.7464872, 0.7526294, 0.7656249, 0.7817272, 0.8001916, 0.8212968}{0.7217921, 0.7072247, 0.7138733, 0.7190738, 0.7245798, 0.7463045, 0.7528913, 0.7656991, 0.7813182, 0.7994181, 0.8212998}{0.7207651, 0.7058379, 0.7134008, 0.7181745, 0.7237527, 0.7461244, 0.7533012, 0.7654463, 0.7809283, 0.7988636, 0.8213025}{0.720137, 0.7058291, 0.7119641, 0.7203029, 0.7239949, 0.7471785, 0.7541694, 0.7646265, 0.7809994, 0.8003384, 0.8223932}{0.7196614, 0.7060545, 0.7103372, 0.7229944, 0.7243321, 0.7486889, 0.7533396, 0.7646284, 0.7814868, 0.8023408, 0.8238794}{0.7192988, 0.7058209, 0.7113554, 0.7229122, 0.7250871, 0.749918, 0.7525965, 0.7651071, 0.7828432, 0.8036629, 0.825114}{0.7195365, 0.704087, 0.7129947, 0.7209238, 0.7248584, 0.7497515, 0.7529109, 0.7656398, 0.7827802, 0.8033529, 0.825138}{0.7197688, 0.704418, 0.7142926, 0.7200552, 0.7246745, 0.7495907, 0.7535406, 0.765686, 0.7828193, 0.803108, 0.8251618}{0.7198048, 0.7069278, 0.7134478, 0.7191617, 0.7235878, 0.7488035, 0.7530055, 0.7659106, 0.7835008, 0.8037166, 0.8255925}{0.7197065, 0.7090744, 0.7130744, 0.7177888, 0.721659, 0.7475887, 0.7533673, 0.7666312, 0.7845605, 0.8045855, 0.8262998}{0.719567, 0.7096464, 0.7124155, 0.7164912, 0.7203929, 0.7464268, 0.7537257, 0.7675817, 0.7853767, 0.8053209, 0.8269853}{0.7176328, 0.7050845, 0.7126353, 0.7182245, 0.7205632, 0.7467906, 0.7535209, 0.7664387, 0.7861449, 0.8047596, 0.8272283}{0.715719, 0.7051204, 0.7128493, 0.7191758, 0.7207285, 0.7471498, 0.7527435, 0.7671566, 0.7864195, 0.8042135, 0.8274643}};$/;" v +AGN_LSSTdepth baryons2.h /^ static double AGN_LSSTdepth[100][11]={{0.992103, 0.9915196, 0.9927834, 0.9942885, 0.996125, 0.9975558, 0.9986637, 0.9993038, 0.9997905, 1.000082, 1.000243}{0.9862238, 0.9851566, 0.9870934, 0.9897954, 0.9926103, 0.9950301, 0.9970605, 0.998294, 0.9991604, 0.9996851, 0.9999835}{0.9792363, 0.9772819, 0.9800251, 0.983715, 0.9879151, 0.9917546, 0.9946649, 0.9965207, 0.9980996, 0.998957, 0.9994951}{0.9707152, 0.9685983, 0.97181, 0.976526, 0.9821772, 0.9872062, 0.991804, 0.994685, 0.9968318, 0.9981731, 0.9989713}{0.9633447, 0.9605728, 0.9627785, 0.9677352, 0.9745577, 0.9819462, 0.9878128, 0.9917185, 0.9952281, 0.997067, 0.9982923}{0.9559308, 0.9505149, 0.9538011, 0.9599097, 0.9684815, 0.9767774, 0.984428, 0.9894449, 0.9936349, 0.9961287, 0.9976364}{0.9486312, 0.9413293, 0.943779, 0.9505287, 0.9598931, 0.9709126, 0.9801592, 0.9864344, 0.9920494, 0.9950249, 0.9970036}{0.9419175, 0.9328934, 0.9344102, 0.9411196, 0.9520271, 0.9641233, 0.9750941, 0.9827542, 0.989563, 0.9934365, 0.9958852}{0.9348555, 0.9234021, 0.9239728, 0.9313699, 0.9430856, 0.9567511, 0.9695291, 0.9786604, 0.9870526, 0.9917207, 0.9948763}{0.9270361, 0.9140485, 0.9142566, 0.9210353, 0.9342387, 0.9495219, 0.9639371, 0.9744256, 0.9844463, 0.9900892, 0.9938595}{0.9202743, 0.9049603, 0.9040337, 0.9117534, 0.9247303, 0.941214, 0.9580569, 0.970302, 0.9815209, 0.988067, 0.9924605}{0.9164651, 0.8976822, 0.8967693, 0.9044821, 0.9167981, 0.9344171, 0.9519606, 0.9652558, 0.9785687, 0.9859463, 0.9911251}{0.9126702, 0.8905904, 0.8881422, 0.8952693, 0.9087315, 0.9272926, 0.9470101, 0.9618522, 0.9757849, 0.9840549, 0.9897435}{0.9067148, 0.8836459, 0.8802335, 0.887162, 0.9008221, 0.9203369, 0.94058, 0.9565756, 0.9729853, 0.9821869, 0.9887242}{0.9019037, 0.8769141, 0.8728936, 0.879683, 0.8928539, 0.9121713, 0.9344481, 0.9518312, 0.9692286, 0.9794305, 0.9865335}{0.8965476, 0.869703, 0.8666474, 0.8735892, 0.8856364, 0.9063059, 0.9288704, 0.9468845, 0.9658339, 0.976859, 0.9849691}{0.8890194, 0.8632835, 0.8595867, 0.8658897, 0.8775554, 0.898418, 0.922444, 0.9419283, 0.9623196, 0.9744456, 0.9832684}{0.8856219, 0.8580852, 0.8525157, 0.8592489, 0.8719683, 0.8937875, 0.9178183, 0.9380591, 0.9598091, 0.9726966, 0.9822419}{0.8796482, 0.8518727, 0.8475911, 0.8542887, 0.8660102, 0.8872075, 0.91172, 0.9330346, 0.956512, 0.9703556, 0.9805577}{0.8759122, 0.8483114, 0.8420475, 0.8481219, 0.8606221, 0.881496, 0.907145, 0.9292165, 0.953192, 0.9675395, 0.9785861}{0.8704401, 0.843653, 0.8358935, 0.841786, 0.8542618, 0.8757653, 0.9012216, 0.9237373, 0.9498044, 0.9652245, 0.9769874}{0.8668882, 0.8373235, 0.8299454, 0.8372514, 0.8486727, 0.870687, 0.8966207, 0.919706, 0.947051, 0.9626423, 0.9750335}{0.8614488, 0.8315232, 0.8252057, 0.8324011, 0.8438909, 0.8658197, 0.8925588, 0.9162302, 0.9435155, 0.9596825, 0.9729134}{0.8564946, 0.8257216, 0.8188615, 0.8274856, 0.8389525, 0.8616225, 0.8880519, 0.9118844, 0.9410087, 0.9578911, 0.971732}{0.8517035, 0.8213629, 0.8147526, 0.8240863, 0.8350095, 0.8575494, 0.8850762, 0.9097483, 0.9389957, 0.9559491, 0.9701591}{0.8494936, 0.8167934, 0.8104899, 0.8204752, 0.8303979, 0.8532606, 0.8806777, 0.905544, 0.9356783, 0.9537494, 0.9686444}{0.8472725, 0.8123696, 0.8069158, 0.8167408, 0.8267332, 0.8501723, 0.8777165, 0.9024838, 0.9331436, 0.9513753, 0.9668719}{0.8424161, 0.8072517, 0.8028486, 0.8129522, 0.8233457, 0.8468544, 0.8751071, 0.9003877, 0.9313335, 0.949867, 0.9654712}{0.8375437, 0.8005629, 0.7983719, 0.8090012, 0.8189556, 0.8427438, 0.8714852, 0.8966968, 0.9282256, 0.94735, 0.9637857}{0.8348242, 0.7972574, 0.7942886, 0.8044453, 0.8162014, 0.8400545, 0.8691273, 0.8943694, 0.9260451, 0.9455271, 0.96206}{0.8286013, 0.7930794, 0.7904758, 0.802562, 0.8124703, 0.8363844, 0.8655999, 0.890556, 0.9236707, 0.9435082, 0.9606569}{0.8248232, 0.7891257, 0.7867511, 0.7994691, 0.8096831, 0.8337904, 0.8627303, 0.8882639, 0.9213571, 0.9416422, 0.9590702}{0.8209558, 0.7863038, 0.78397, 0.7969355, 0.8065706, 0.831097, 0.8601758, 0.8860218, 0.9195888, 0.9400176, 0.9578464}{0.8177785, 0.7826637, 0.7807652, 0.7935088, 0.8038326, 0.8278784, 0.8581511, 0.8843856, 0.9180298, 0.9384705, 0.9566754}{0.8144434, 0.7789167, 0.7780309, 0.789117, 0.8004868, 0.825631, 0.8555211, 0.8808573, 0.9149498, 0.936066, 0.9548386}{0.8113398, 0.7747312, 0.7748346, 0.787781, 0.7994615, 0.8228268, 0.8534865, 0.879597, 0.9139413, 0.934675, 0.9536199}{0.807519, 0.7724314, 0.7717547, 0.784676, 0.7966763, 0.8214867, 0.8521686, 0.8780248, 0.912078, 0.933531, 0.9528461}{0.8056178, 0.7686615, 0.7694338, 0.7828105, 0.7936346, 0.8190221, 0.850259, 0.8757921, 0.9102623, 0.9318157, 0.9513094}{0.7997935, 0.7672779, 0.7661737, 0.7806541, 0.7919811, 0.8176434, 0.8486312, 0.8746735, 0.9092709, 0.9306414, 0.9498214}{0.7978049, 0.7637558, 0.7637859, 0.7784504, 0.7898876, 0.8160671, 0.8486185, 0.8748204, 0.9082722, 0.9291703, 0.9485035}{0.7947118, 0.7609468, 0.7612511, 0.7760737, 0.7876487, 0.8138348, 0.8451777, 0.8691365, 0.9058611, 0.9275254, 0.9476355}{0.7915449, 0.7591019, 0.7591196, 0.7737301, 0.786256, 0.8121868, 0.8424576, 0.8680791, 0.9049544, 0.9268173, 0.9466933}{0.7890908, 0.7574507, 0.7570021, 0.7716692, 0.7850591, 0.8112372, 0.8423059, 0.8683975, 0.9048578, 0.9257923, 0.9453416}{0.7890914, 0.7557914, 0.7555125, 0.7696075, 0.7825859, 0.8092886, 0.8414167, 0.8665388, 0.9016697, 0.9228362, 0.9430958}{0.7865675, 0.7515668, 0.7525769, 0.7675839, 0.780213, 0.8082257, 0.8394916, 0.8649517, 0.9001752, 0.9216473, 0.9423598}{0.7839286, 0.7500016, 0.7501955, 0.7654716, 0.7799228, 0.8070978, 0.83758, 0.862604, 0.898614, 0.9201604, 0.9416862}{0.7824809, 0.7489664, 0.7476181, 0.7646252, 0.7789709, 0.8054624, 0.8357463, 0.8615993, 0.8973032, 0.9192046, 0.9408086}{0.7829211, 0.7476047, 0.7465221, 0.7641014, 0.7778496, 0.8030796, 0.8351569, 0.8610114, 0.8965082, 0.9186113, 0.9396594}{0.7776697, 0.744215, 0.7461583, 0.7614626, 0.7763446, 0.8024511, 0.8343864, 0.8600753, 0.8959048, 0.9173585, 0.9392571}{0.7755579, 0.7438414, 0.7443544, 0.7614168, 0.7755978, 0.8029442, 0.8337337, 0.8580511, 0.894911, 0.9160149, 0.9377361}{0.7740814, 0.7435761, 0.7425836, 0.7607851, 0.7742457, 0.8015953, 0.8313252, 0.8569565, 0.8938324, 0.9148055, 0.9369313}{0.771745, 0.7414472, 0.7424734, 0.759749, 0.7725004, 0.7986182, 0.830311, 0.8566471, 0.8928714, 0.9145833, 0.9368977}{0.7675026, 0.7407943, 0.7404621, 0.7591088, 0.7708857, 0.7982796, 0.8320917, 0.8571803, 0.8923658, 0.9141577, 0.9359177}{0.7662192, 0.7394124, 0.739435, 0.7569968, 0.7709485, 0.7980091, 0.8306039, 0.8566707, 0.8911105, 0.9126994, 0.9346015}{0.7644159, 0.7368381, 0.7372753, 0.7563203, 0.769746, 0.7974219, 0.8301468, 0.8548412, 0.8907799, 0.9121983, 0.9339969}{0.762325, 0.7362337, 0.7353433, 0.7550622, 0.7689477, 0.7966361, 0.8288267, 0.8537757, 0.8897759, 0.9112025, 0.9336293}{0.7605017, 0.7358592, 0.7361974, 0.753644, 0.7679746, 0.7958606, 0.8276397, 0.8522095, 0.8876458, 0.9103179, 0.9329298}{0.7586617, 0.7353195, 0.7351128, 0.7520704, 0.7672942, 0.7956587, 0.8265923, 0.8509768, 0.8868444, 0.9090375, 0.9317886}{0.7562932, 0.7332229, 0.7338788, 0.7533833, 0.766543, 0.7949095, 0.8268984, 0.8529421, 0.8874531, 0.90939, 0.9315118}{0.7537873, 0.7299261, 0.7315602, 0.752717, 0.7644722, 0.7944846, 0.8278705, 0.8523677, 0.8870183, 0.908492, 0.931262}{0.751818, 0.7284894, 0.7311927, 0.7511589, 0.7653258, 0.7942252, 0.8267963, 0.850828, 0.8856662, 0.9074291, 0.9306568}{0.7517044, 0.7271398, 0.7305371, 0.7512492, 0.7636599, 0.7930126, 0.8253328, 0.8496329, 0.8854373, 0.9066313, 0.9294785}{0.75117, 0.7270354, 0.7296319, 0.7512603, 0.7642217, 0.7932955, 0.8249566, 0.8491328, 0.8841939, 0.9063922, 0.929266}{0.7483676, 0.7257904, 0.7287962, 0.7498963, 0.7642838, 0.7939637, 0.8249362, 0.8490349, 0.8836263, 0.9058601, 0.9288203}{0.7453453, 0.726688, 0.7273976, 0.7489966, 0.764057, 0.7942232, 0.825064, 0.8486285, 0.8829411, 0.9055854, 0.9285889}{0.7439653, 0.7254591, 0.727417, 0.7491402, 0.7636337, 0.7935078, 0.8248674, 0.8481142, 0.8825654, 0.9061436, 0.9289046}{0.7430467, 0.7234067, 0.7276668, 0.7511685, 0.763901, 0.7921929, 0.8236001, 0.8472021, 0.8830176, 0.9060896, 0.9285298}{0.7396655, 0.7214049, 0.7260425, 0.7487464, 0.7634533, 0.7922734, 0.823276, 0.8474882, 0.8814661, 0.904635, 0.9278236}{0.7378971, 0.7198185, 0.7247848, 0.747789, 0.7616375, 0.7928396, 0.8245372, 0.8467417, 0.8811644, 0.9049055, 0.9272726}{0.737942, 0.7196406, 0.7242101, 0.7475751, 0.7620319, 0.7931614, 0.8248496, 0.8468383, 0.8815496, 0.9046282, 0.9268638}{0.7374793, 0.7199905, 0.7244846, 0.7491341, 0.7618034, 0.7923417, 0.8244535, 0.845921, 0.8803024, 0.9035025, 0.9262676}{0.7364797, 0.7189841, 0.7233538, 0.7488788, 0.7617219, 0.7920431, 0.824903, 0.8463617, 0.881587, 0.9045391, 0.9270277}{0.7358845, 0.718155, 0.722863, 0.7481447, 0.7622466, 0.7924213, 0.8242459, 0.8465934, 0.8812562, 0.9041115, 0.9274337}{0.7351944, 0.7185626, 0.723314, 0.7482011, 0.7608282, 0.7929585, 0.8241865, 0.8463804, 0.8808726, 0.9046967, 0.9280974}{0.7341961, 0.7174673, 0.7246106, 0.7480834, 0.7613777, 0.7932472, 0.824313, 0.8463469, 0.881077, 0.9056801, 0.9292154}{0.7344137, 0.716838, 0.7234613, 0.7481221, 0.7619759, 0.7934313, 0.8242318, 0.8458782, 0.880937, 0.9053229, 0.928261}{0.7348019, 0.7158221, 0.7217037, 0.7489054, 0.7618306, 0.7923442, 0.8236356, 0.8471334, 0.8810111, 0.9059095, 0.9282236}{0.7324423, 0.7145064, 0.7215476, 0.7487461, 0.7624254, 0.7922033, 0.8244278, 0.8465779, 0.8809756, 0.9050046, 0.9274472}{0.7293718, 0.7142729, 0.7220776, 0.7485464, 0.7626526, 0.7927766, 0.8238698, 0.8460895, 0.8803818, 0.9035411, 0.926723}{0.7305337, 0.714287, 0.7218151, 0.7479337, 0.762356, 0.7926517, 0.8233469, 0.8459533, 0.8804614, 0.9046697, 0.9282168}{0.73042, 0.7155048, 0.721635, 0.7463375, 0.7631707, 0.7917591, 0.823286, 0.8468671, 0.8801707, 0.9054607, 0.9283183}{0.7302812, 0.7162711, 0.7216214, 0.7447551, 0.7639198, 0.7908646, 0.8236744, 0.8474554, 0.87987, 0.9063262, 0.9283883}{0.7293467, 0.7160131, 0.7215516, 0.7450098, 0.7627652, 0.7909758, 0.8250768, 0.8476376, 0.8802109, 0.9065192, 0.9285728}{0.7273127, 0.7155035, 0.7188056, 0.7450009, 0.7611526, 0.7924602, 0.8270801, 0.8478032, 0.8801199, 0.9060477, 0.9289197}{0.7253215, 0.7151358, 0.7158667, 0.7441719, 0.7628734, 0.7938972, 0.8276067, 0.8479915, 0.8799621, 0.9059904, 0.929261}{0.7243835, 0.7142869, 0.7168719, 0.7450462, 0.7659066, 0.7948801, 0.8269503, 0.848009, 0.8803806, 0.9064481, 0.9302736}{0.7236563, 0.713651, 0.7196492, 0.7464322, 0.7659929, 0.7957688, 0.8264773, 0.8481682, 0.8809143, 0.9069876, 0.9313564}{0.7228474, 0.7126396, 0.7212131, 0.7477642, 0.7656249, 0.7961976, 0.8266594, 0.848397, 0.8815108, 0.9074949, 0.9318527}{0.7217921, 0.7119635, 0.7201714, 0.7475623, 0.7656991, 0.7955175, 0.826628, 0.8478584, 0.8819059, 0.9078163, 0.9309882}{0.7207651, 0.7116752, 0.7192519, 0.7475117, 0.7654463, 0.7948572, 0.8265554, 0.8483291, 0.8823627, 0.9077377, 0.9301419}{0.720137, 0.7113364, 0.7210096, 0.7487821, 0.7646265, 0.7960574, 0.8276796, 0.8488234, 0.8830053, 0.9087377, 0.9305694}{0.7196614, 0.7098367, 0.721344, 0.7503493, 0.7646284, 0.7979724, 0.8290424, 0.8492641, 0.8836023, 0.9096767, 0.9314584}{0.7192988, 0.7086364, 0.7212678, 0.75048, 0.7651071, 0.7995527, 0.8294006, 0.8502632, 0.884259, 0.9100172, 0.9321913}{0.7195365, 0.7097468, 0.7203179, 0.7502946, 0.7656398, 0.799339, 0.8293713, 0.8524843, 0.8831896, 0.9084545, 0.9322447}{0.7197688, 0.7112571, 0.7201237, 0.7501895, 0.765686, 0.7991343, 0.8304431, 0.8530582, 0.8821564, 0.9081723, 0.9322969}{0.7198048, 0.7123088, 0.7190887, 0.7496487, 0.7659106, 0.7995632, 0.831595, 0.8524543, 0.8822454, 0.9098787, 0.932066}{0.7197065, 0.7119818, 0.7174677, 0.7483609, 0.7666312, 0.8004215, 0.8322738, 0.8518162, 0.8830462, 0.911738, 0.93165}{0.719567, 0.7116724, 0.7159866, 0.7479463, 0.7675817, 0.801236, 0.8320353, 0.8525158, 0.8846396, 0.9126139, 0.9312951}{0.7176328, 0.7117973, 0.7170657, 0.7483202, 0.7664387, 0.8007553, 0.832225, 0.8539687, 0.8856161, 0.9114368, 0.9328651}{0.715719, 0.7120046, 0.7172575, 0.7486892, 0.7671566, 0.800287, 0.8328536, 0.8551811, 0.8865611, 0.9121349, 0.9343992}};$/;" v +A_DESdepth baryons2.h /^ static double A_DESdepth[100][11]={{0.9976184, 0.9980697, 0.9982269, 0.9982621, 0.9983736, 0.9985172, 0.9985371, 0.9985579, 0.9985605, 0.9985448, 0.998529}{0.9963896, 0.9971233, 0.9973514, 0.9974239, 0.9976798, 0.997964, 0.9980294, 0.9981998, 0.9982771, 0.9983021, 0.9983373}{0.9950917, 0.9961214, 0.996472, 0.9967, 0.9970639, 0.9974749, 0.9976593, 0.9979378, 0.9980947, 0.9981248, 0.9981518}{0.993363, 0.9949858, 0.9957156, 0.9961606, 0.9966154, 0.9971354, 0.997414, 0.9976783, 0.9978231, 0.9978608, 0.9979143}{0.9914338, 0.9936385, 0.9946245, 0.99533, 0.9959207, 0.9966952, 0.9969579, 0.9973519, 0.9975943, 0.9976418, 0.9976738}{0.9897566, 0.9921123, 0.9934478, 0.9944718, 0.9952735, 0.9961633, 0.9965947, 0.9970738, 0.9973379, 0.9973696, 0.9974008}{0.9878758, 0.9904882, 0.9921797, 0.9933692, 0.9942795, 0.9953777, 0.9958739, 0.9965094, 0.9968894, 0.9969332, 0.9970926}{0.9859491, 0.9889259, 0.990871, 0.9922574, 0.9933556, 0.9945997, 0.9953287, 0.9960772, 0.9965486, 0.996708, 0.9968527}{0.9845915, 0.9878922, 0.9899617, 0.9915007, 0.9927683, 0.994181, 0.9949642, 0.9957653, 0.9962827, 0.9964251, 0.9966525}{0.9831045, 0.9862902, 0.9886135, 0.9902578, 0.9917444, 0.9933725, 0.994265, 0.995158, 0.9957427, 0.9960133, 0.996328}{0.9816061, 0.9853061, 0.9874837, 0.9892113, 0.9909422, 0.9926317, 0.9935303, 0.994429, 0.9951878, 0.9955343, 0.9959134}{0.9808666, 0.9842914, 0.9864208, 0.988056, 0.9896994, 0.9914284, 0.9926152, 0.9938019, 0.9946269, 0.9950422, 0.9954562}{0.9798476, 0.9833243, 0.9853091, 0.9869896, 0.9889415, 0.9909139, 0.9921867, 0.9934596, 0.9943223, 0.9947329, 0.9951452}{0.9788184, 0.9825783, 0.9841684, 0.9856855, 0.9878417, 0.9900012, 0.9914831, 0.992965, 0.993921, 0.9943492, 0.9947794}{0.9785834, 0.9818118, 0.9832759, 0.9848413, 0.9871088, 0.9893764, 0.9908882, 0.9924035, 0.9934022, 0.9938983, 0.9943945}{0.9776927, 0.9808599, 0.9823572, 0.9839931, 0.9863899, 0.9887868, 0.9902723, 0.9917437, 0.9927485, 0.9933629, 0.9939774}{0.9774097, 0.979902, 0.9814176, 0.9833377, 0.9856893, 0.9880394, 0.9895748, 0.9911834, 0.9922948, 0.9928859, 0.9934761}{0.9772347, 0.9792872, 0.9808271, 0.9826867, 0.9850614, 0.9874412, 0.9890645, 0.9907184, 0.9918405, 0.9924952, 0.9931636}{0.9772113, 0.9790138, 0.9804526, 0.9823074, 0.9845665, 0.9867752, 0.9884503, 0.9902081, 0.9914211, 0.9920829, 0.9927419}{0.9767637, 0.9783787, 0.9798033, 0.9816546, 0.9838937, 0.986159, 0.9879142, 0.9896037, 0.990778, 0.9914565, 0.9921519}{0.9761365, 0.9777183, 0.979278, 0.9812342, 0.983535, 0.9858993, 0.9875888, 0.989051, 0.9901109, 0.9908347, 0.9916095}{0.9755893, 0.9772921, 0.9789185, 0.9806397, 0.98304, 0.9855755, 0.9869999, 0.9884624, 0.9895887, 0.9903597, 0.9911164}{0.9751566, 0.9770757, 0.9784421, 0.9803426, 0.9828696, 0.9853009, 0.9867787, 0.9881292, 0.9891369, 0.9899007, 0.9907442}{0.9748701, 0.9769801, 0.9783743, 0.980097, 0.9825283, 0.9850498, 0.9863085, 0.9875586, 0.9885997, 0.9894432, 0.9903525}{0.974819, 0.9766423, 0.9779198, 0.9792944, 0.9818223, 0.984428, 0.9856668, 0.9868853, 0.9879214, 0.9888354, 0.9897782}{0.9748499, 0.9769692, 0.9774596, 0.9790246, 0.9816558, 0.984085, 0.9852433, 0.9864045, 0.9874809, 0.9884331, 0.9893609}{0.9741777, 0.9762387, 0.9774789, 0.9790393, 0.9813149, 0.9835421, 0.9847425, 0.9859429, 0.9870143, 0.9879235, 0.988833}{0.9738305, 0.9761244, 0.977205, 0.9787501, 0.9809071, 0.9829663, 0.9842073, 0.9854482, 0.9865138, 0.9874237, 0.988317}{0.9733631, 0.9752528, 0.9763431, 0.9784984, 0.9804264, 0.9817944, 0.9830354, 0.9842135, 0.9852492, 0.98612, 0.9868954}{0.9728956, 0.9741888, 0.9760914, 0.9778865, 0.9792545, 0.9806225, 0.9817874, 0.9829488, 0.9839231, 0.9846984, 0.9854738}{0.9724359, 0.9736437, 0.975521, 0.9772377, 0.9786942, 0.9806965, 0.9818579, 0.9827634, 0.9835318, 0.9843028, 0.9850471}{0.9719766, 0.9730674, 0.9748925, 0.9768143, 0.9788165, 0.9808187, 0.9816508, 0.9824121, 0.9831704, 0.9839147, 0.984659}{0.9714701, 0.9725772, 0.9744306, 0.9763565, 0.9783587, 0.9809026, 0.981664, 0.9821244, 0.9825563, 0.9833005, 0.9842908}{0.9709553, 0.9721444, 0.9738746, 0.975857, 0.9784184, 0.9809798, 0.9813513, 0.9814707, 0.9819297, 0.9829279, 0.9839262}{0.9705055, 0.9717152, 0.9733863, 0.9753383, 0.9778998, 0.9802869, 0.9804063, 0.9806371, 0.9814186, 0.9824168, 0.9834913}{0.9700899, 0.9712645, 0.9726369, 0.9745059, 0.9768592, 0.9791884, 0.9794842, 0.9800489, 0.9808303, 0.9819196, 0.9830194}{0.9695845, 0.9707607, 0.9720939, 0.974072, 0.9764012, 0.9784533, 0.979018, 0.979582, 0.9804094, 0.9815092, 0.9824872}{0.9689791, 0.9705401, 0.972174, 0.9743272, 0.9762863, 0.9781229, 0.9786851, 0.97924, 0.9800674, 0.9810046, 0.9818879}{0.9684071, 0.9702105, 0.9720849, 0.9740816, 0.9759182, 0.9778628, 0.9784177, 0.9789726, 0.9795628, 0.9804462, 0.9813326}{0.9678921, 0.9695433, 0.9715385, 0.9736493, 0.9756407, 0.9777224, 0.9782389, 0.9785013, 0.9790741, 0.9799618, 0.9808521}{0.9671807, 0.968715, 0.971013, 0.9733605, 0.9754422, 0.9774862, 0.9777485, 0.9780109, 0.9787159, 0.9796061, 0.980481}{0.9659392, 0.9678623, 0.9704062, 0.9730052, 0.9750305, 0.9769912, 0.9772536, 0.9779142, 0.9786967, 0.979564, 0.9804048}{0.9647542, 0.9670936, 0.9700118, 0.9725696, 0.9745303, 0.9765118, 0.9771866, 0.9778613, 0.978626, 0.9794669, 0.9802679}{0.9640584, 0.9663725, 0.9693244, 0.9720237, 0.9740337, 0.9761669, 0.9768417, 0.9775614, 0.9783478, 0.9790941, 0.979604}{0.9633625, 0.9656391, 0.9687784, 0.9715556, 0.9736888, 0.975822, 0.9765512, 0.9772831, 0.9779203, 0.9784302, 0.9789401}{0.9625335, 0.9648435, 0.9679988, 0.970642, 0.9727933, 0.9750587, 0.9757907, 0.9764344, 0.9769859, 0.9775747, 0.9786612}{0.9616986, 0.964074, 0.9670603, 0.9697463, 0.9720117, 0.9742771, 0.9748949, 0.9754882, 0.9762262, 0.9773127, 0.9783993}{0.9609651, 0.9634603, 0.9665283, 0.9690527, 0.9713218, 0.9740414, 0.9746347, 0.9750131, 0.9756416, 0.976727, 0.9776637}{0.9602494, 0.9630012, 0.9658501, 0.968462, 0.9711816, 0.9739012, 0.9742016, 0.9743721, 0.9749717, 0.9759085, 0.9768453}{0.9596655, 0.9625348, 0.9653975, 0.9678814, 0.970601, 0.9731637, 0.9733342, 0.9736755, 0.9744655, 0.9754023, 0.9764237}{0.9591277, 0.9621613, 0.9647058, 0.9671422, 0.9696796, 0.9722169, 0.9726352, 0.9732786, 0.9740711, 0.9751061, 0.976141}{0.9584713, 0.9616095, 0.9641091, 0.9663204, 0.9688578, 0.9717144, 0.9723578, 0.9729565, 0.9736724, 0.9747073, 0.9756423}{0.9577327, 0.9611085, 0.9634386, 0.9655852, 0.9685139, 0.9715198, 0.9720805, 0.9724773, 0.9731932, 0.9741056, 0.9749938}{0.9571073, 0.9606201, 0.9625911, 0.9650795, 0.9680854, 0.9710179, 0.9714147, 0.9718115, 0.972762, 0.9736502, 0.9745124}{0.9566358, 0.9596218, 0.9617352, 0.9643331, 0.9672405, 0.9700983, 0.9705978, 0.9716158, 0.972569, 0.9734223, 0.974258}{0.9560953, 0.9587038, 0.9609148, 0.9635234, 0.9663813, 0.9692969, 0.970315, 0.9713331, 0.9721815, 0.9730172, 0.9739439}{0.9553825, 0.9577402, 0.960038, 0.9628148, 0.9657599, 0.9687903, 0.9698071, 0.970591, 0.9714008, 0.9723738, 0.9734809}{0.9545911, 0.9567008, 0.9592714, 0.9621514, 0.9651818, 0.9681364, 0.9689203, 0.9697042, 0.9707599, 0.971867, 0.9729563}{0.9533563, 0.9555075, 0.958178, 0.9611702, 0.9642006, 0.9666529, 0.9674368, 0.9684349, 0.9700065, 0.9711136, 0.9720845}{0.9521215, 0.9544142, 0.9571335, 0.960189, 0.9630004, 0.9651693, 0.9659532, 0.9676815, 0.9692531, 0.9703086, 0.9712126}{0.9508867, 0.9533208, 0.9561523, 0.9592078, 0.9615169, 0.9636858, 0.964892, 0.9669281, 0.9684997, 0.9694368, 0.9703408}{0.9496519, 0.9522274, 0.9551711, 0.9578644, 0.9600333, 0.9622022, 0.9641386, 0.9661747, 0.9676609, 0.9685649, 0.9694689}{0.949004, 0.9515985, 0.954549, 0.9569527, 0.9591216, 0.9617826, 0.9638187, 0.9658415, 0.9667149, 0.9676189, 0.9690144}{0.9484488, 0.9510332, 0.9539391, 0.9561313, 0.9583994, 0.9615313, 0.9635673, 0.9648838, 0.9657571, 0.9667602, 0.968626}{0.9478936, 0.9504678, 0.9531177, 0.95531, 0.9581481, 0.9612799, 0.9630834, 0.963926, 0.9647994, 0.9663717, 0.9682375}{0.9473384, 0.9499024, 0.9522964, 0.9547648, 0.9578967, 0.9610285, 0.9621256, 0.9629683, 0.9641175, 0.9659833, 0.9678491}{0.9466995, 0.9492598, 0.951265, 0.9543186, 0.9574504, 0.9605447, 0.9613874, 0.96223, 0.9635276, 0.9653934, 0.9672676}{0.9460134, 0.9482206, 0.9501152, 0.9537625, 0.9568944, 0.95993, 0.9607726, 0.9615479, 0.9628244, 0.9646902, 0.9665775}{0.9453272, 0.9470708, 0.9494897, 0.9532065, 0.9562865, 0.9593152, 0.9601575, 0.9608447, 0.9621212, 0.9639985, 0.9658873}{0.9446411, 0.9459211, 0.9489337, 0.952643, 0.9556718, 0.9587005, 0.9594543, 0.9601415, 0.9614196, 0.9633084, 0.9651972}{0.9439861, 0.9449175, 0.9484586, 0.951922, 0.9549508, 0.9580446, 0.9587318, 0.959419, 0.9606751, 0.9625639, 0.9646064}{0.9434255, 0.944481, 0.9482289, 0.950879, 0.9539077, 0.9572639, 0.9579511, 0.95859, 0.9597657, 0.9616545, 0.9643165}{0.9428648, 0.9442513, 0.9475904, 0.9498359, 0.9529966, 0.9564832, 0.9571704, 0.9576806, 0.9588564, 0.9610566, 0.9640267}{0.9423041, 0.9440216, 0.9465473, 0.9487929, 0.9522158, 0.9557025, 0.9563086, 0.9567713, 0.957947, 0.9607667, 0.9637368}{0.9417435, 0.9437919, 0.9455043, 0.9479485, 0.9514351, 0.9549218, 0.9553993, 0.9558619, 0.9575067, 0.9604768, 0.963447}{0.9409731, 0.9430546, 0.944574, 0.9472335, 0.9507201, 0.9537441, 0.9542067, 0.954711, 0.9572367, 0.9602068, 0.9631872}{0.9401753, 0.942139, 0.9437006, 0.946527, 0.949908, 0.9525146, 0.9529772, 0.9544435, 0.9569693, 0.9599417, 0.9629313}{0.9393775, 0.9412235, 0.9429942, 0.9458205, 0.9486785, 0.951285, 0.9520947, 0.9541761, 0.9567018, 0.9596859, 0.9626755}{0.9385798, 0.9403079, 0.9422877, 0.9448423, 0.9474489, 0.9500555, 0.9518273, 0.9539086, 0.9564404, 0.95943, 0.9624196}{0.9379151, 0.9396054, 0.9416939, 0.9437209, 0.9463275, 0.9492246, 0.951306, 0.9533873, 0.955558, 0.9585477, 0.9617734}{0.9373137, 0.9390551, 0.9411535, 0.9426508, 0.9452574, 0.9485829, 0.9506642, 0.9522947, 0.9543785, 0.9573681, 0.9609419}{0.9367123, 0.9385147, 0.9400841, 0.9415807, 0.944615, 0.9479412, 0.9499371, 0.9511151, 0.9531989, 0.9565361, 0.9601104}{0.9361108, 0.9379743, 0.939014, 0.9406472, 0.9439733, 0.9472994, 0.9487576, 0.9499356, 0.9521304, 0.9557046, 0.9592789}{0.9354948, 0.9373901, 0.937863, 0.9400502, 0.9433763, 0.9465971, 0.9477751, 0.9489531, 0.9512173, 0.9547916, 0.9585109}{0.934863, 0.9363866, 0.936624, 0.9395018, 0.9428279, 0.9458289, 0.9470069, 0.9480419, 0.9502155, 0.9537897, 0.9578119}{0.9342312, 0.9351476, 0.9358999, 0.9389535, 0.9421157, 0.9450607, 0.9462387, 0.9470401, 0.9492137, 0.9530137, 0.9571129}{0.9335995, 0.9339086, 0.9353515, 0.9384025, 0.9413475, 0.9442926, 0.9452653, 0.9460382, 0.9482154, 0.9523147, 0.9564139}{0.9329269, 0.932717, 0.9348311, 0.9376587, 0.9406037, 0.9435548, 0.9443278, 0.9451007, 0.9475372, 0.9516365, 0.9557536}{0.932014, 0.9319639, 0.9344753, 0.9370585, 0.9400036, 0.9429965, 0.9437694, 0.9445432, 0.9469816, 0.9510809, 0.9553211}{0.9311011, 0.9316081, 0.9340148, 0.9364584, 0.9394214, 0.9424382, 0.9432111, 0.9439876, 0.946426, 0.950578, 0.9548885}{0.9301881, 0.9312524, 0.9334147, 0.9358583, 0.938863, 0.9418798, 0.9426543, 0.943432, 0.9458704, 0.9501455, 0.954456}{0.9292752, 0.9308967, 0.9328146, 0.9352879, 0.9383047, 0.9413215, 0.9420987, 0.9428763, 0.9454025, 0.949713, 0.9540235}{0.9286723, 0.9303758, 0.9323097, 0.9341569, 0.9371737, 0.9405202, 0.9412978, 0.9420805, 0.9450013, 0.9493118, 0.9533522}{0.9281224, 0.9298872, 0.9316963, 0.9329282, 0.9360101, 0.9396775, 0.9404551, 0.9416847, 0.9446054, 0.9488626, 0.9526401}{0.9275725, 0.9293986, 0.9304676, 0.9316995, 0.9351673, 0.9388347, 0.9397579, 0.9412889, 0.9442096, 0.9481506, 0.9519281}{0.9270226, 0.92891, 0.9292388, 0.9306572, 0.9343245, 0.9379919, 0.9393621, 0.940893, 0.943661, 0.9474385, 0.951216}{0.926538, 0.9284475, 0.9281569, 0.9298705, 0.9335379, 0.9372015, 0.9387325, 0.9402634, 0.9428267, 0.9466042, 0.950575}{0.9260902, 0.9275606, 0.9271576, 0.9291153, 0.9327827, 0.9364405, 0.9379715, 0.9393893, 0.9419236, 0.9457011, 0.9499739}{0.9256424, 0.9265612, 0.9263906, 0.9283601, 0.932022, 0.9356796, 0.9371952, 0.9384863, 0.9410206, 0.9450855, 0.9493729}{0.9251947, 0.9255619, 0.9256355, 0.9276034, 0.931261, 0.9349186, 0.9362922, 0.9375832, 0.9401971, 0.9444845, 0.9487718}};$/;" v +A_IA_Joachimi IA.c /^double A_IA_Joachimi(double a){$/;" f +A_LF IA.c /^double A_LF(double mag, double a){\/\/ averaged (L\/L_0)^beta over red galaxy LF$/;" f +A_LF_all IA.c /^double A_LF_all(double mag, double a){\/\/ averaged (L\/L_0)^beta over red galaxy LF$/;" f +A_ia structs.c /^ double A_ia;$/;" m struct:input_nuisance_params file: +A_ia structs.c /^ double A_ia; \/\/A IA see Joachimi2012$/;" m struct:__anon21 file: +A_ia structs.c /^ double A_ia[2]; \/\/A IA see Joachimi2012$/;" m struct:__anon22 file: +A_s structs.c /^ double A_s;$/;" m struct:__anon10 file: +A_s structs.c /^ double A_s;$/;" m struct:input_cosmo_params_mpp file: +A_s structs.c /^ double A_s;$/;" m struct:__anon22 file: +A_z structs.c /^ double A_z[10];$/;" m struct:input_nuisance_params_mpp file: +A_z structs.c /^ double A_z[10]; \/\/NLA normalization per source redshift bin, for mpp analyis (activate with like.IA =3 or like.IA = 5)$/;" m struct:__anon21 file: +B1 halo.c /^double B1 (double m,double a){ \/\/b(m,a) based on redshift evolution fits in Tinker et al. paper, no additional normalization$/;" f +B1_model structs.c /^typedef double (*B1_model)(double z, int nz);$/;" t file: +B1_normalized halo.c /^double B1_normalized (double m,double a){ \/\/divide by bias norm only in matter spectra, not in HOD modeling\/cluster analyses$/;" f +B1_nu halo.c /^double B1_nu (double n,double a){$/;" f +BAO BAO.c /^baopara BAO;$/;" v +BAO structs.c /^ int BAO;$/;" m struct:__anon9 file: +BARY_FILE structs.c /^ char BARY_FILE[500]; $/;" m struct:__anon9 file: +C structs.c /^ cosmopara C;$/;" m struct:__anon20 file: +C1_TA cosmo2D_fullsky_TATT.c /^double C1_TA(double a, double nz){$/;" f +C2_TT cosmo2D_fullsky_TATT.c /^double C2_TT(double a, double nz){$/;" f +COS_shear_shear_tomo EBfunctions.c /^void COS_shear_shear_tomo(double *E,double *B,int ORDER,double vt_max, double vt_min,int ni, int nj)$/;" f +COV_FILE structs.c /^ char COV_FILE[500];$/;" m struct:__anon9 file: +CSF_DESdepth baryons2.h /^ static double CSF_DESdepth[100][11]={{0.998183, 0.9983853, 0.998452, 0.9984787, 0.9985515, 0.9986352, 0.9986458, 0.9986549, 0.9986562, 0.9986346, 0.9986083}{0.9980241, 0.9981315, 0.9980876, 0.9980564, 0.9981817, 0.9983176, 0.9983623, 0.9984908, 0.9985419, 0.9985111, 0.9984791}{0.9981029, 0.99795, 0.9978325, 0.9979343, 0.9980838, 0.9982414, 0.9983734, 0.9985295, 0.9985915, 0.9985369, 0.9984688}{0.9981204, 0.9980167, 0.9980872, 0.9981641, 0.9982827, 0.9983431, 0.9984992, 0.9986038, 0.9986193, 0.9985253, 0.9983924}{0.998073, 0.9981888, 0.9982503, 0.9984343, 0.9984852, 0.9985112, 0.9986103, 0.9987254, 0.9987188, 0.998575, 0.9984025}{0.9983572, 0.9983268, 0.9985223, 0.9987815, 0.9988115, 0.9988542, 0.9989739, 0.9989817, 0.9988793, 0.9986832, 0.9984104}{0.9987019, 0.9985092, 0.9988351, 0.9989447, 0.9989894, 0.999053, 0.9990206, 0.9990455, 0.9989408, 0.9986672, 0.9983866}{0.9990963, 0.9990118, 0.9991538, 0.9991888, 0.9992523, 0.9992548, 0.9993182, 0.9993303, 0.9991508, 0.9988703, 0.9985376}{0.9999526, 0.9999876, 0.9999725, 0.9998518, 0.9998445, 0.999795, 0.9997166, 0.9996343, 0.9994124, 0.9990712, 0.9987039}{1.000743, 1.000724, 1.000332, 1.000142, 1.000072, 1.000066, 0.9999631, 0.9998472, 0.9995217, 0.9991411, 0.9987424}{1.001915, 1.001377, 1.000952, 1.000782, 1.000823, 1.000779, 1.000509, 1.000238, 0.9998971, 0.9994853, 0.9989965}{1.003371, 1.002507, 1.00185, 1.001545, 1.001405, 1.001233, 1.000963, 1.000693, 1.000283, 0.9997085, 0.999102}{1.004563, 1.003173, 1.002493, 1.002131, 1.001874, 1.00165, 1.001427, 1.001205, 1.00072, 1.000031, 0.9993408}{1.006098, 1.004279, 1.003112, 1.002672, 1.002737, 1.002795, 1.002281, 1.001767, 1.00116, 1.000462, 0.9997612}{1.007968, 1.005782, 1.00443, 1.003826, 1.003644, 1.003462, 1.002922, 1.002379, 1.001714, 1.000906, 1.000097}{1.009403, 1.007033, 1.005643, 1.004999, 1.004651, 1.004302, 1.003668, 1.002991, 1.002225, 1.001293, 1.00036}{1.011137, 1.008465, 1.007185, 1.006693, 1.005983, 1.005261, 1.004556, 1.003819, 1.002985, 1.001909, 1.000828}{1.012595, 1.009961, 1.008665, 1.007771, 1.007124, 1.006493, 1.005667, 1.004654, 1.003608, 1.002511, 1.00141}{1.014626, 1.012104, 1.010607, 1.009656, 1.00879, 1.007825, 1.006786, 1.005642, 1.004521, 1.00324, 1.001884}{1.016323, 1.014146, 1.012651, 1.011402, 1.010338, 1.009188, 1.008036, 1.006644, 1.005269, 1.003873, 1.002443}{1.018185, 1.016177, 1.014485, 1.013151, 1.012023, 1.010933, 1.00954, 1.007604, 1.005875, 1.004433, 1.002971}{1.020417, 1.018328, 1.016648, 1.015063, 1.013927, 1.012621, 1.010594, 1.00851, 1.006725, 1.005202, 1.003448}{1.022787, 1.020738, 1.018602, 1.01701, 1.01569, 1.014215, 1.012107, 1.009744, 1.007593, 1.005843, 1.00413}{1.025272, 1.022763, 1.020573, 1.019046, 1.017572, 1.015938, 1.01339, 1.010782, 1.008581, 1.006869, 1.004998}{1.027981, 1.024755, 1.02261, 1.020913, 1.019268, 1.017522, 1.014834, 1.012035, 1.009532, 1.007651, 1.005809}{1.030939, 1.027034, 1.024703, 1.023002, 1.021222, 1.019075, 1.01595, 1.012825, 1.010342, 1.008513, 1.006642}{1.033338, 1.02945, 1.027151, 1.025274, 1.022847, 1.020264, 1.017126, 1.013988, 1.011446, 1.009544, 1.007519}{1.036399, 1.031424, 1.029378, 1.027345, 1.024534, 1.021652, 1.01846, 1.015268, 1.012541, 1.010336, 1.008068}{1.038698, 1.033916, 1.031795, 1.02926, 1.026285, 1.02291, 1.019718, 1.016342, 1.013527, 1.011175, 1.008463}{1.040996, 1.0365, 1.03371, 1.030918, 1.027543, 1.024168, 1.020753, 1.017327, 1.014281, 1.011569, 1.008857}{1.043532, 1.038733, 1.035767, 1.033625, 1.030214, 1.026588, 1.023163, 1.019174, 1.015664, 1.012857, 1.009456}{1.046077, 1.040698, 1.03853, 1.036306, 1.03268, 1.029053, 1.024902, 1.020595, 1.016863, 1.013463, 1.010063}{1.048429, 1.043146, 1.041293, 1.038869, 1.035243, 1.031241, 1.026934, 1.022267, 1.018029, 1.014629, 1.011239}{1.050746, 1.045909, 1.043878, 1.041408, 1.037394, 1.033379, 1.028606, 1.023531, 1.019295, 1.015905, 1.012515}{1.053561, 1.048642, 1.046078, 1.043581, 1.039566, 1.035207, 1.030132, 1.025008, 1.020679, 1.017289, 1.013776}{1.056638, 1.050641, 1.048226, 1.045771, 1.041344, 1.03687, 1.031719, 1.026451, 1.022122, 1.018585, 1.015031}{1.059563, 1.052998, 1.050687, 1.047953, 1.043479, 1.03885, 1.033582, 1.028285, 1.023644, 1.02009, 1.016133}{1.062318, 1.055759, 1.053384, 1.050612, 1.045931, 1.041182, 1.035799, 1.030071, 1.02543, 1.021338, 1.017067}{1.065076, 1.058522, 1.055979, 1.053038, 1.048289, 1.043694, 1.037966, 1.032238, 1.026691, 1.022421, 1.018127}{1.067842, 1.061023, 1.058421, 1.05544, 1.050911, 1.04651, 1.040619, 1.033649, 1.028028, 1.023725, 1.019403}{1.070571, 1.06355, 1.060853, 1.058065, 1.053664, 1.049038, 1.042067, 1.035097, 1.029578, 1.025256, 1.020757}{1.073204, 1.066083, 1.063394, 1.060646, 1.055909, 1.050786, 1.043815, 1.037241, 1.0318, 1.027214, 1.022324}{1.075783, 1.068554, 1.066008, 1.062812, 1.057688, 1.0526, 1.04604, 1.03948, 1.033675, 1.028785, 1.023828}{1.077884, 1.071191, 1.068697, 1.064866, 1.059825, 1.05499, 1.04843, 1.04134, 1.035277, 1.030227, 1.024778}{1.079985, 1.074087, 1.070752, 1.067051, 1.062215, 1.05738, 1.050178, 1.042942, 1.036627, 1.031177, 1.025727}{1.082906, 1.076492, 1.072754, 1.069534, 1.064682, 1.059722, 1.052487, 1.044794, 1.038091, 1.032682, 1.027526}{1.085864, 1.078426, 1.075242, 1.071981, 1.067022, 1.062063, 1.054235, 1.046281, 1.039673, 1.034518, 1.029362}{1.088299, 1.081127, 1.078432, 1.074466, 1.069507, 1.064565, 1.056611, 1.048389, 1.041571, 1.036409, 1.03044}{1.090643, 1.084446, 1.080941, 1.076979, 1.072037, 1.067096, 1.058777, 1.050297, 1.043322, 1.037353, 1.031384}{1.093218, 1.086981, 1.08286, 1.079367, 1.074425, 1.069449, 1.060968, 1.05226, 1.04472, 1.038751, 1.032744}{1.095874, 1.088693, 1.085123, 1.081704, 1.076721, 1.071739, 1.062927, 1.053816, 1.046275, 1.040261, 1.034248}{1.098975, 1.091327, 1.087795, 1.084061, 1.079078, 1.074117, 1.065006, 1.055846, 1.04815, 1.042137, 1.035942}{1.102383, 1.09423, 1.090336, 1.086465, 1.081508, 1.076557, 1.067356, 1.057978, 1.050282, 1.044046, 1.037767}{1.105509, 1.097065, 1.093006, 1.088833, 1.083882, 1.079155, 1.069777, 1.060399, 1.052394, 1.046114, 1.039355}{1.108252, 1.100095, 1.095612, 1.091118, 1.086467, 1.081968, 1.072531, 1.062798, 1.054791, 1.047868, 1.040621}{1.111026, 1.103075, 1.098116, 1.093924, 1.089424, 1.084576, 1.074843, 1.065109, 1.056416, 1.049169, 1.042052}{1.113878, 1.106099, 1.101283, 1.097241, 1.092214, 1.086673, 1.076936, 1.066596, 1.057802, 1.050753, 1.043895}{1.116696, 1.109086, 1.104485, 1.099876, 1.094334, 1.088745, 1.078405, 1.068064, 1.059507, 1.052649, 1.045592}{1.119319, 1.111689, 1.107041, 1.102125, 1.096584, 1.090672, 1.080332, 1.070072, 1.061708, 1.05485, 1.046471}{1.121941, 1.114245, 1.109464, 1.104374, 1.098693, 1.092599, 1.082259, 1.072273, 1.063909, 1.056475, 1.04735}{1.124564, 1.116802, 1.111713, 1.106623, 1.10062, 1.094526, 1.084344, 1.074474, 1.06611, 1.057354, 1.048229}{1.127186, 1.119358, 1.113962, 1.10864, 1.102547, 1.096453, 1.086546, 1.076675, 1.067358, 1.058233, 1.049108}{1.130445, 1.122594, 1.116572, 1.111526, 1.105433, 1.09882, 1.08895, 1.079061, 1.068722, 1.059597, 1.05137}{1.133804, 1.125261, 1.119303, 1.114564, 1.108366, 1.101257, 1.091387, 1.080502, 1.070162, 1.061218, 1.053849}{1.137163, 1.127927, 1.12234, 1.117601, 1.110802, 1.103694, 1.093495, 1.081942, 1.071603, 1.063698, 1.056329}{1.140522, 1.130594, 1.125378, 1.120348, 1.113239, 1.10613, 1.094936, 1.083382, 1.073547, 1.066178, 1.058809}{1.143957, 1.133779, 1.12842, 1.122957, 1.115848, 1.108752, 1.097199, 1.085645, 1.075984, 1.068615, 1.060581}{1.147434, 1.136928, 1.131466, 1.125664, 1.118555, 1.111479, 1.099925, 1.088133, 1.078396, 1.071028, 1.061955}{1.150912, 1.139974, 1.134212, 1.12837, 1.121279, 1.114205, 1.10265, 1.090546, 1.080809, 1.072523, 1.063328}{1.15439, 1.143019, 1.136919, 1.131079, 1.124005, 1.116931, 1.105063, 1.092958, 1.083091, 1.073896, 1.064702}{1.157755, 1.14606, 1.139786, 1.133875, 1.126801, 1.119613, 1.107509, 1.095405, 1.084689, 1.075494, 1.066196}{1.160781, 1.149209, 1.143139, 1.136881, 1.129807, 1.122161, 1.110057, 1.097851, 1.086967, 1.077773, 1.068059}{1.163806, 1.152562, 1.146318, 1.139888, 1.132583, 1.124709, 1.112605, 1.10013, 1.089246, 1.079842, 1.069921}{1.166832, 1.155915, 1.149324, 1.142894, 1.135131, 1.127257, 1.114983, 1.102409, 1.091524, 1.081705, 1.071784}{1.169858, 1.159268, 1.15233, 1.145553, 1.137679, 1.129804, 1.117261, 1.104687, 1.093488, 1.083567, 1.073646}{1.173318, 1.162744, 1.155328, 1.148204, 1.140329, 1.131973, 1.119399, 1.106829, 1.095662, 1.085741, 1.075401}{1.176836, 1.165741, 1.158258, 1.150868, 1.142883, 1.134092, 1.121518, 1.109044, 1.097877, 1.08786, 1.077142}{1.180354, 1.168738, 1.160922, 1.153532, 1.145003, 1.136212, 1.123672, 1.111259, 1.100092, 1.089601, 1.078883}{1.183872, 1.171735, 1.163586, 1.155913, 1.147122, 1.138331, 1.125887, 1.113474, 1.102061, 1.091342, 1.080624}{1.187609, 1.175305, 1.166443, 1.158618, 1.149828, 1.141216, 1.128803, 1.116389, 1.10421, 1.093492, 1.082444}{1.191451, 1.178397, 1.16939, 1.161602, 1.152811, 1.144464, 1.132051, 1.118879, 1.106553, 1.095835, 1.0843}{1.195293, 1.181345, 1.172374, 1.164586, 1.156059, 1.147712, 1.135155, 1.121222, 1.108896, 1.097692, 1.086156}{1.199134, 1.184292, 1.175358, 1.167654, 1.159307, 1.15096, 1.137498, 1.123565, 1.111084, 1.099548, 1.088013}{1.202297, 1.186989, 1.178591, 1.171076, 1.162729, 1.153991, 1.140058, 1.126125, 1.113041, 1.101506, 1.089658}{1.204722, 1.190075, 1.182095, 1.174689, 1.166342, 1.156789, 1.142856, 1.128475, 1.115108, 1.103573, 1.091074}{1.207147, 1.19358, 1.18568, 1.178302, 1.169347, 1.159586, 1.145653, 1.130542, 1.117175, 1.105154, 1.092489}{1.209572, 1.197084, 1.189293, 1.181905, 1.172144, 1.162383, 1.147808, 1.132609, 1.119234, 1.10657, 1.093905}{1.21218, 1.200615, 1.192804, 1.184716, 1.174955, 1.165141, 1.149942, 1.134743, 1.120803, 1.108138, 1.095398}{1.215866, 1.204078, 1.195713, 1.187608, 1.177847, 1.167668, 1.15247, 1.137254, 1.123273, 1.110608, 1.097346}{1.219552, 1.206987, 1.198615, 1.1905, 1.180583, 1.170196, 1.154997, 1.139724, 1.125743, 1.112855, 1.099294}{1.223238, 1.209896, 1.201507, 1.193393, 1.183111, 1.172724, 1.157492, 1.142194, 1.128213, 1.114803, 1.101242}{1.226924, 1.212805, 1.204399, 1.196025, 1.185638, 1.175252, 1.159962, 1.144664, 1.130311, 1.116751, 1.10319}{1.230707, 1.216464, 1.207194, 1.198886, 1.188499, 1.177725, 1.162427, 1.147129, 1.132644, 1.119084, 1.104825}{1.234507, 1.219241, 1.209995, 1.201804, 1.19134, 1.180189, 1.164891, 1.149527, 1.135043, 1.121345, 1.106405}{1.238307, 1.222019, 1.212912, 1.204721, 1.193804, 1.182653, 1.167334, 1.151926, 1.137442, 1.122925, 1.107986}{1.242107, 1.224796, 1.21583, 1.207419, 1.196268, 1.185117, 1.169733, 1.154325, 1.139446, 1.124506, 1.109567}{1.245619, 1.227941, 1.219379, 1.210679, 1.199528, 1.188048, 1.172641, 1.157233, 1.141704, 1.126764, 1.111446}{1.24897, 1.231733, 1.223284, 1.214385, 1.203234, 1.191242, 1.175835, 1.159985, 1.144342, 1.129402, 1.113493}{1.25232, 1.235638, 1.227, 1.218091, 1.206453, 1.194437, 1.178969, 1.162623, 1.14698, 1.131478, 1.11554}{1.255671, 1.239543, 1.230707, 1.221663, 1.209647, 1.197631, 1.181607, 1.165261, 1.149463, 1.133525, 1.117587}};$/;" v +CUBE basics.c 33;" d file: +CW_DESdepth baryons.h /^ static double CW_DESdepth[100][11]={{0.979908, 0.979908, 0.979908, 0.979908, 0.979908, 0.979908, 0.979908, 0.979908, 0.979908, 0.979908, 0.979908},{0.9808265, 0.9808265, 0.9808265, 0.9808265, 0.9808265, 0.9808265, 0.9808265, 0.9808265, 0.9808265, 0.9808265, 0.9808265},{0.9737475, 0.9737475, 0.9737475, 0.9737475, 0.9737475, 0.9737475, 0.9737475, 0.9737475, 0.9737475, 0.9737475, 0.9737475},{0.9857354, 0.9857354, 0.9857354, 0.9857354, 0.9857354, 0.9857354, 0.9857354, 0.9857354, 0.9857354, 0.9857354, 0.9857354},{0.986506, 0.986506, 0.986506, 0.986506, 0.986506, 0.986506, 0.986506, 0.986506, 0.986506, 0.986506, 0.986506},{0.9905496, 0.9905496, 0.9905496, 0.9905496, 0.9905496, 0.9905496, 0.9905496, 0.9905496, 0.9905496, 0.9905496, 0.9905496},{0.9898929, 0.9898929, 0.9898929, 0.9898929, 0.9898929, 0.9898929, 0.9898929, 0.9898929, 0.9898929, 0.9898929, 0.9898929},{0.9817479, 0.9817479, 0.9817479, 0.9817479, 0.9817479, 0.9817479, 0.9817479, 0.9817479, 0.9817479, 0.9817479, 0.9817479},{0.9840111, 0.9840111, 0.9840111, 0.9840111, 0.9840111, 0.9840111, 0.9840111, 0.9840111, 0.9840111, 0.9840111, 0.9840111},{0.9826031, 0.9826031, 0.9826031, 0.9826031, 0.9826031, 0.9826031, 0.9826031, 0.9826031, 0.9826031, 0.9826031, 0.9826031},{0.9833421, 0.9833421, 0.9833421, 0.9833421, 0.9833421, 0.9833421, 0.9833421, 0.9833421, 0.9833421, 0.9833421, 0.9833421},{0.9972209, 0.9972209, 0.9972209, 0.9972209, 0.9972209, 0.9972209, 0.9972209, 0.9972209, 0.9972209, 0.9972209, 0.9972209},{0.9966788, 0.9966788, 0.9966788, 0.9966788, 0.9966788, 0.9966788, 0.9966788, 0.9966788, 0.9966788, 0.9966788, 0.9966788},{0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054},{0.993116, 0.993116, 0.993116, 0.993116, 0.993116, 0.993116, 0.993116, 0.993116, 0.993116, 0.993116, 0.993116},{0.9940076, 0.9940076, 0.9940076, 0.9940076, 0.9940076, 0.9940076, 0.9940076, 0.9940076, 0.9940076, 0.9940076, 0.9940076},{0.9966891, 0.9966891, 0.9966891, 0.9966891, 0.9966891, 0.9966891, 0.9966891, 0.9966891, 0.9966891, 0.9966891, 0.9966891},{0.9992418, 0.9992418, 0.9992418, 0.9992418, 0.9992418, 0.9992418, 0.9992418, 0.9992418, 0.9992418, 0.9992418, 0.9992418},{1.003356, 1.003356, 1.003356, 1.003356, 1.003356, 1.003356, 1.003356, 1.003356, 1.003356, 1.003356, 1.003356},{1.006317, 1.006317, 1.006317, 1.006317, 1.006317, 1.006317, 1.006317, 1.006317, 1.006317, 1.006317, 1.006317},{1.01017, 1.01017, 1.01017, 1.01017, 1.01017, 1.01017, 1.01017, 1.01017, 1.01017, 1.01017, 1.01017},{1.014464, 1.014464, 1.014464, 1.014464, 1.014464, 1.014464, 1.014464, 1.014464, 1.014464, 1.014464, 1.014464},{1.018602, 1.018602, 1.018602, 1.018602, 1.018602, 1.018602, 1.018602, 1.018602, 1.018602, 1.018602, 1.018602},{1.022597, 1.022597, 1.022597, 1.022597, 1.022597, 1.022597, 1.022597, 1.022597, 1.022597, 1.022597, 1.022597},{1.025652, 1.025652, 1.025652, 1.025652, 1.025652, 1.025652, 1.025652, 1.025652, 1.025652, 1.025652, 1.025652},{1.025652, 1.025652, 1.025652, 1.025652, 1.025652, 1.025652, 1.025652, 1.025652, 1.025652, 1.025652, 1.025652},{1.032469, 1.032469, 1.032469, 1.032469, 1.032469, 1.032469, 1.032469, 1.032469, 1.032469, 1.032469, 1.032469},{1.038385, 1.038385, 1.038385, 1.038385, 1.038385, 1.038385, 1.038385, 1.038385, 1.038385, 1.038385, 1.038385},{1.042714, 1.042714, 1.042714, 1.042714, 1.042714, 1.042714, 1.042714, 1.042714, 1.042714, 1.042714, 1.042714},{1.044368, 1.044368, 1.044368, 1.044368, 1.044368, 1.044368, 1.044368, 1.044368, 1.044368, 1.044368, 1.044368},{1.04472, 1.04472, 1.04472, 1.04472, 1.04472, 1.04472, 1.04472, 1.04472, 1.04472, 1.04472, 1.04472},{1.044319, 1.044319, 1.044319, 1.044319, 1.044319, 1.044319, 1.044319, 1.044319, 1.044319, 1.044319, 1.044319},{1.04281, 1.04281, 1.04281, 1.04281, 1.04281, 1.04281, 1.04281, 1.04281, 1.04281, 1.04281, 1.04281},{1.045234, 1.045234, 1.045234, 1.045234, 1.045234, 1.045234, 1.045234, 1.045234, 1.045234, 1.045234, 1.045234},{1.049573, 1.049573, 1.049573, 1.049573, 1.049573, 1.049573, 1.049573, 1.049573, 1.049573, 1.049573, 1.049573},{1.055133, 1.055133, 1.055133, 1.055133, 1.055133, 1.055133, 1.055133, 1.055133, 1.055133, 1.055133, 1.055133},{1.060294, 1.060294, 1.060294, 1.060294, 1.060294, 1.060294, 1.060294, 1.060294, 1.060294, 1.060294, 1.060294},{1.064309, 1.064309, 1.064309, 1.064309, 1.064309, 1.064309, 1.064309, 1.064309, 1.064309, 1.064309, 1.064309},{1.067149, 1.067149, 1.067149, 1.067149, 1.067149, 1.067149, 1.067149, 1.067149, 1.067149, 1.067149, 1.067149},{1.068433, 1.068433, 1.068433, 1.068433, 1.068433, 1.068433, 1.068433, 1.068433, 1.068433, 1.068433, 1.068433},{1.069688, 1.069688, 1.069688, 1.069688, 1.069688, 1.069688, 1.069688, 1.069688, 1.069688, 1.069688, 1.069688},{1.070917, 1.070917, 1.070917, 1.070917, 1.070917, 1.070917, 1.070917, 1.070917, 1.070917, 1.070917, 1.070917},{1.072721, 1.072721, 1.072721, 1.072721, 1.072721, 1.072721, 1.072721, 1.072721, 1.072721, 1.072721, 1.072721},{1.075077, 1.075077, 1.075077, 1.075077, 1.075077, 1.075077, 1.075077, 1.075077, 1.075077, 1.075077, 1.075077},{1.078325, 1.078325, 1.078325, 1.078325, 1.078325, 1.078325, 1.078325, 1.078325, 1.078325, 1.078325, 1.078325},{1.082856, 1.082856, 1.082856, 1.082856, 1.082856, 1.082856, 1.082856, 1.082856, 1.082856, 1.082856, 1.082856},{1.087351, 1.087351, 1.087351, 1.087351, 1.087351, 1.087351, 1.087351, 1.087351, 1.087351, 1.087351, 1.087351},{1.091718, 1.091718, 1.091718, 1.091718, 1.091718, 1.091718, 1.091718, 1.091718, 1.091718, 1.091718, 1.091718},{1.096084, 1.096084, 1.096084, 1.096084, 1.096084, 1.096084, 1.096084, 1.096084, 1.096084, 1.096084, 1.096084},{1.097432, 1.097432, 1.097432, 1.097432, 1.097432, 1.097432, 1.097432, 1.097432, 1.097432, 1.097432, 1.097432},{1.098481, 1.098481, 1.098481, 1.098481, 1.098481, 1.098481, 1.098481, 1.098481, 1.098481, 1.098481, 1.098481},{1.098008, 1.098008, 1.098008, 1.098008, 1.098008, 1.098008, 1.098008, 1.098008, 1.098008, 1.098008, 1.098008},{1.096007, 1.096007, 1.096007, 1.096007, 1.096007, 1.096007, 1.096007, 1.096007, 1.096007, 1.096007, 1.096007},{1.094007, 1.094007, 1.094007, 1.094007, 1.094007, 1.094007, 1.094007, 1.094007, 1.094007, 1.094007, 1.094007},{1.097689, 1.097689, 1.097689, 1.097689, 1.097689, 1.097689, 1.097689, 1.097689, 1.097689, 1.097689, 1.097689},{1.101518, 1.101518, 1.101518, 1.101518, 1.101518, 1.101518, 1.101518, 1.101518, 1.101518, 1.101518, 1.101518},{1.105302, 1.105302, 1.105302, 1.105302, 1.105302, 1.105302, 1.105302, 1.105302, 1.105302, 1.105302, 1.105302},{1.108993, 1.108993, 1.108993, 1.108993, 1.108993, 1.108993, 1.108993, 1.108993, 1.108993, 1.108993, 1.108993},{1.112683, 1.112683, 1.112683, 1.112683, 1.112683, 1.112683, 1.112683, 1.112683, 1.112683, 1.112683, 1.112683},{1.116803, 1.116803, 1.116803, 1.116803, 1.116803, 1.116803, 1.116803, 1.116803, 1.116803, 1.116803, 1.116803},{1.121255, 1.121255, 1.121255, 1.121255, 1.121255, 1.121255, 1.121255, 1.121255, 1.121255, 1.121255, 1.121255},{1.125707, 1.125707, 1.125707, 1.125707, 1.125707, 1.125707, 1.125707, 1.125707, 1.125707, 1.125707, 1.125707},{1.12891, 1.12891, 1.12891, 1.12891, 1.12891, 1.12891, 1.12891, 1.12891, 1.12891, 1.12891, 1.12891},{1.131484, 1.131484, 1.131484, 1.131484, 1.131484, 1.131484, 1.131484, 1.131484, 1.131484, 1.131484, 1.131484},{1.134059, 1.134059, 1.134059, 1.134059, 1.134059, 1.134059, 1.134059, 1.134059, 1.134059, 1.134059, 1.134059},{1.137617, 1.137617, 1.137617, 1.137617, 1.137617, 1.137617, 1.137617, 1.137617, 1.137617, 1.137617, 1.137617},{1.141753, 1.141753, 1.141753, 1.141753, 1.141753, 1.141753, 1.141753, 1.141753, 1.141753, 1.141753, 1.141753},{1.145889, 1.145889, 1.145889, 1.145889, 1.145889, 1.145889, 1.145889, 1.145889, 1.145889, 1.145889, 1.145889},{1.149235, 1.149235, 1.149235, 1.149235, 1.149235, 1.149235, 1.149235, 1.149235, 1.149235, 1.149235, 1.149235},{1.151627, 1.151627, 1.151627, 1.151627, 1.151627, 1.151627, 1.151627, 1.151627, 1.151627, 1.151627, 1.151627},{1.154019, 1.154019, 1.154019, 1.154019, 1.154019, 1.154019, 1.154019, 1.154019, 1.154019, 1.154019, 1.154019},{1.156495, 1.156495, 1.156495, 1.156495, 1.156495, 1.156495, 1.156495, 1.156495, 1.156495, 1.156495, 1.156495},{1.159565, 1.159565, 1.159565, 1.159565, 1.159565, 1.159565, 1.159565, 1.159565, 1.159565, 1.159565, 1.159565},{1.162635, 1.162635, 1.162635, 1.162635, 1.162635, 1.162635, 1.162635, 1.162635, 1.162635, 1.162635, 1.162635},{1.165705, 1.165705, 1.165705, 1.165705, 1.165705, 1.165705, 1.165705, 1.165705, 1.165705, 1.165705, 1.165705},{1.168228, 1.168228, 1.168228, 1.168228, 1.168228, 1.168228, 1.168228, 1.168228, 1.168228, 1.168228, 1.168228},{1.170445, 1.170445, 1.170445, 1.170445, 1.170445, 1.170445, 1.170445, 1.170445, 1.170445, 1.170445, 1.170445},{1.172662, 1.172662, 1.172662, 1.172662, 1.172662, 1.172662, 1.172662, 1.172662, 1.172662, 1.172662, 1.172662},{1.174878, 1.174878, 1.174878, 1.174878, 1.174878, 1.174878, 1.174878, 1.174878, 1.174878, 1.174878, 1.174878},{1.177718, 1.177718, 1.177718, 1.177718, 1.177718, 1.177718, 1.177718, 1.177718, 1.177718, 1.177718, 1.177718},{1.180563, 1.180563, 1.180563, 1.180563, 1.180563, 1.180563, 1.180563, 1.180563, 1.180563, 1.180563, 1.180563},{1.183409, 1.183409, 1.183409, 1.183409, 1.183409, 1.183409, 1.183409, 1.183409, 1.183409, 1.183409, 1.183409},{1.186354, 1.186354, 1.186354, 1.186354, 1.186354, 1.186354, 1.186354, 1.186354, 1.186354, 1.186354, 1.186354},{1.189786, 1.189786, 1.189786, 1.189786, 1.189786, 1.189786, 1.189786, 1.189786, 1.189786, 1.189786, 1.189786},{1.193218, 1.193218, 1.193218, 1.193218, 1.193218, 1.193218, 1.193218, 1.193218, 1.193218, 1.193218, 1.193218},{1.19665, 1.19665, 1.19665, 1.19665, 1.19665, 1.19665, 1.19665, 1.19665, 1.19665, 1.19665, 1.19665},{1.200062, 1.200062, 1.200062, 1.200062, 1.200062, 1.200062, 1.200062, 1.200062, 1.200062, 1.200062, 1.200062},{1.203377, 1.203377, 1.203377, 1.203377, 1.203377, 1.203377, 1.203377, 1.203377, 1.203377, 1.203377, 1.203377},{1.206693, 1.206693, 1.206693, 1.206693, 1.206693, 1.206693, 1.206693, 1.206693, 1.206693, 1.206693, 1.206693},{1.210008, 1.210008, 1.210008, 1.210008, 1.210008, 1.210008, 1.210008, 1.210008, 1.210008, 1.210008, 1.210008},{1.213324, 1.213324, 1.213324, 1.213324, 1.213324, 1.213324, 1.213324, 1.213324, 1.213324, 1.213324, 1.213324},{1.21843, 1.21843, 1.21843, 1.21843, 1.21843, 1.21843, 1.21843, 1.21843, 1.21843, 1.21843, 1.21843},{1.223572, 1.223572, 1.223572, 1.223572, 1.223572, 1.223572, 1.223572, 1.223572, 1.223572, 1.223572, 1.223572},{1.228715, 1.228715, 1.228715, 1.228715, 1.228715, 1.228715, 1.228715, 1.228715, 1.228715, 1.228715, 1.228715},{1.233857, 1.233857, 1.233857, 1.233857, 1.233857, 1.233857, 1.233857, 1.233857, 1.233857, 1.233857, 1.233857},{1.238169, 1.238169, 1.238169, 1.238169, 1.238169, 1.238169, 1.238169, 1.238169, 1.238169, 1.238169, 1.238169},{1.241912, 1.241912, 1.241912, 1.241912, 1.241912, 1.241912, 1.241912, 1.241912, 1.241912, 1.241912, 1.241912},{1.245655, 1.245655, 1.245655, 1.245655, 1.245655, 1.245655, 1.245655, 1.245655, 1.245655, 1.245655, 1.245655},{1.249398, 1.249398, 1.249398, 1.249398, 1.249398, 1.249398, 1.249398, 1.249398, 1.249398, 1.249398, 1.249398},{1.253141, 1.253141, 1.253141, 1.253141, 1.253141, 1.253141, 1.253141, 1.253141, 1.253141, 1.253141, 1.253141}};$/;" v +CW_DESdepth baryons2.h /^ static double CW_DESdepth[100][11]={{0.979908, 0.979908, 0.979908, 0.979908, 0.979908, 0.979908, 0.979908, 0.979908, 0.979908, 0.979908, 0.979908}{0.9808265, 0.9808265, 0.9808265, 0.9808265, 0.9808265, 0.9808265, 0.9808265, 0.9808265, 0.9808265, 0.9808265, 0.9808265}{0.9737475, 0.9737475, 0.9737475, 0.9737475, 0.9737475, 0.9737475, 0.9737475, 0.9737475, 0.9737475, 0.9737475, 0.9737475}{0.9857354, 0.9857354, 0.9857354, 0.9857354, 0.9857354, 0.9857354, 0.9857354, 0.9857354, 0.9857354, 0.9857354, 0.9857354}{0.986506, 0.986506, 0.986506, 0.986506, 0.986506, 0.986506, 0.986506, 0.986506, 0.986506, 0.986506, 0.986506}{0.9905496, 0.9905496, 0.9905496, 0.9905496, 0.9905496, 0.9905496, 0.9905496, 0.9905496, 0.9905496, 0.9905496, 0.9905496}{0.9898929, 0.9898929, 0.9898929, 0.9898929, 0.9898929, 0.9898929, 0.9898929, 0.9898929, 0.9898929, 0.9898929, 0.9898929}{0.9817479, 0.9817479, 0.9817479, 0.9817479, 0.9817479, 0.9817479, 0.9817479, 0.9817479, 0.9817479, 0.9817479, 0.9817479}{0.9840111, 0.9840111, 0.9840111, 0.9840111, 0.9840111, 0.9840111, 0.9840111, 0.9840111, 0.9840111, 0.9840111, 0.9840111}{0.9826031, 0.9826031, 0.9826031, 0.9826031, 0.9826031, 0.9826031, 0.9826031, 0.9826031, 0.9826031, 0.9826031, 0.9826031}{0.9833421, 0.9833421, 0.9833421, 0.9833421, 0.9833421, 0.9833421, 0.9833421, 0.9833421, 0.9833421, 0.9833421, 0.9833421}{0.9972209, 0.9972209, 0.9972209, 0.9972209, 0.9972209, 0.9972209, 0.9972209, 0.9972209, 0.9972209, 0.9972209, 0.9972209}{0.9966788, 0.9966788, 0.9966788, 0.9966788, 0.9966788, 0.9966788, 0.9966788, 0.9966788, 0.9966788, 0.9966788, 0.9966788}{0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054}{0.993116, 0.993116, 0.993116, 0.993116, 0.993116, 0.993116, 0.993116, 0.993116, 0.993116, 0.993116, 0.993116}{0.9940076, 0.9940076, 0.9940076, 0.9940076, 0.9940076, 0.9940076, 0.9940076, 0.9940076, 0.9940076, 0.9940076, 0.9940076}{0.9966891, 0.9966891, 0.9966891, 0.9966891, 0.9966891, 0.9966891, 0.9966891, 0.9966891, 0.9966891, 0.9966891, 0.9966891}{0.9992418, 0.9992418, 0.9992418, 0.9992418, 0.9992418, 0.9992418, 0.9992418, 0.9992418, 0.9992418, 0.9992418, 0.9992418}{1.003356, 1.003356, 1.003356, 1.003356, 1.003356, 1.003356, 1.003356, 1.003356, 1.003356, 1.003356, 1.003356}{1.006317, 1.006317, 1.006317, 1.006317, 1.006317, 1.006317, 1.006317, 1.006317, 1.006317, 1.006317, 1.006317}{1.01017, 1.01017, 1.01017, 1.01017, 1.01017, 1.01017, 1.01017, 1.01017, 1.01017, 1.01017, 1.01017}{1.014464, 1.014464, 1.014464, 1.014464, 1.014464, 1.014464, 1.014464, 1.014464, 1.014464, 1.014464, 1.014464}{1.018602, 1.018602, 1.018602, 1.018602, 1.018602, 1.018602, 1.018602, 1.018602, 1.018602, 1.018602, 1.018602}{1.022597, 1.022597, 1.022597, 1.022597, 1.022597, 1.022597, 1.022597, 1.022597, 1.022597, 1.022597, 1.022597}{1.025652, 1.025652, 1.025652, 1.025652, 1.025652, 1.025652, 1.025652, 1.025652, 1.025652, 1.025652, 1.025652}{1.025652, 1.025652, 1.025652, 1.025652, 1.025652, 1.025652, 1.025652, 1.025652, 1.025652, 1.025652, 1.025652}{1.032469, 1.032469, 1.032469, 1.032469, 1.032469, 1.032469, 1.032469, 1.032469, 1.032469, 1.032469, 1.032469}{1.038385, 1.038385, 1.038385, 1.038385, 1.038385, 1.038385, 1.038385, 1.038385, 1.038385, 1.038385, 1.038385}{1.042714, 1.042714, 1.042714, 1.042714, 1.042714, 1.042714, 1.042714, 1.042714, 1.042714, 1.042714, 1.042714}{1.044368, 1.044368, 1.044368, 1.044368, 1.044368, 1.044368, 1.044368, 1.044368, 1.044368, 1.044368, 1.044368}{1.04472, 1.04472, 1.04472, 1.04472, 1.04472, 1.04472, 1.04472, 1.04472, 1.04472, 1.04472, 1.04472}{1.044319, 1.044319, 1.044319, 1.044319, 1.044319, 1.044319, 1.044319, 1.044319, 1.044319, 1.044319, 1.044319}{1.04281, 1.04281, 1.04281, 1.04281, 1.04281, 1.04281, 1.04281, 1.04281, 1.04281, 1.04281, 1.04281}{1.045234, 1.045234, 1.045234, 1.045234, 1.045234, 1.045234, 1.045234, 1.045234, 1.045234, 1.045234, 1.045234}{1.049573, 1.049573, 1.049573, 1.049573, 1.049573, 1.049573, 1.049573, 1.049573, 1.049573, 1.049573, 1.049573}{1.055133, 1.055133, 1.055133, 1.055133, 1.055133, 1.055133, 1.055133, 1.055133, 1.055133, 1.055133, 1.055133}{1.060294, 1.060294, 1.060294, 1.060294, 1.060294, 1.060294, 1.060294, 1.060294, 1.060294, 1.060294, 1.060294}{1.064309, 1.064309, 1.064309, 1.064309, 1.064309, 1.064309, 1.064309, 1.064309, 1.064309, 1.064309, 1.064309}{1.067149, 1.067149, 1.067149, 1.067149, 1.067149, 1.067149, 1.067149, 1.067149, 1.067149, 1.067149, 1.067149}{1.068433, 1.068433, 1.068433, 1.068433, 1.068433, 1.068433, 1.068433, 1.068433, 1.068433, 1.068433, 1.068433}{1.069688, 1.069688, 1.069688, 1.069688, 1.069688, 1.069688, 1.069688, 1.069688, 1.069688, 1.069688, 1.069688}{1.070917, 1.070917, 1.070917, 1.070917, 1.070917, 1.070917, 1.070917, 1.070917, 1.070917, 1.070917, 1.070917}{1.072721, 1.072721, 1.072721, 1.072721, 1.072721, 1.072721, 1.072721, 1.072721, 1.072721, 1.072721, 1.072721}{1.075077, 1.075077, 1.075077, 1.075077, 1.075077, 1.075077, 1.075077, 1.075077, 1.075077, 1.075077, 1.075077}{1.078325, 1.078325, 1.078325, 1.078325, 1.078325, 1.078325, 1.078325, 1.078325, 1.078325, 1.078325, 1.078325}{1.082856, 1.082856, 1.082856, 1.082856, 1.082856, 1.082856, 1.082856, 1.082856, 1.082856, 1.082856, 1.082856}{1.087351, 1.087351, 1.087351, 1.087351, 1.087351, 1.087351, 1.087351, 1.087351, 1.087351, 1.087351, 1.087351}{1.091718, 1.091718, 1.091718, 1.091718, 1.091718, 1.091718, 1.091718, 1.091718, 1.091718, 1.091718, 1.091718}{1.096084, 1.096084, 1.096084, 1.096084, 1.096084, 1.096084, 1.096084, 1.096084, 1.096084, 1.096084, 1.096084}{1.097432, 1.097432, 1.097432, 1.097432, 1.097432, 1.097432, 1.097432, 1.097432, 1.097432, 1.097432, 1.097432}{1.098481, 1.098481, 1.098481, 1.098481, 1.098481, 1.098481, 1.098481, 1.098481, 1.098481, 1.098481, 1.098481}{1.098008, 1.098008, 1.098008, 1.098008, 1.098008, 1.098008, 1.098008, 1.098008, 1.098008, 1.098008, 1.098008}{1.096007, 1.096007, 1.096007, 1.096007, 1.096007, 1.096007, 1.096007, 1.096007, 1.096007, 1.096007, 1.096007}{1.094007, 1.094007, 1.094007, 1.094007, 1.094007, 1.094007, 1.094007, 1.094007, 1.094007, 1.094007, 1.094007}{1.097689, 1.097689, 1.097689, 1.097689, 1.097689, 1.097689, 1.097689, 1.097689, 1.097689, 1.097689, 1.097689}{1.101518, 1.101518, 1.101518, 1.101518, 1.101518, 1.101518, 1.101518, 1.101518, 1.101518, 1.101518, 1.101518}{1.105302, 1.105302, 1.105302, 1.105302, 1.105302, 1.105302, 1.105302, 1.105302, 1.105302, 1.105302, 1.105302}{1.108993, 1.108993, 1.108993, 1.108993, 1.108993, 1.108993, 1.108993, 1.108993, 1.108993, 1.108993, 1.108993}{1.112683, 1.112683, 1.112683, 1.112683, 1.112683, 1.112683, 1.112683, 1.112683, 1.112683, 1.112683, 1.112683}{1.116803, 1.116803, 1.116803, 1.116803, 1.116803, 1.116803, 1.116803, 1.116803, 1.116803, 1.116803, 1.116803}{1.121255, 1.121255, 1.121255, 1.121255, 1.121255, 1.121255, 1.121255, 1.121255, 1.121255, 1.121255, 1.121255}{1.125707, 1.125707, 1.125707, 1.125707, 1.125707, 1.125707, 1.125707, 1.125707, 1.125707, 1.125707, 1.125707}{1.12891, 1.12891, 1.12891, 1.12891, 1.12891, 1.12891, 1.12891, 1.12891, 1.12891, 1.12891, 1.12891}{1.131484, 1.131484, 1.131484, 1.131484, 1.131484, 1.131484, 1.131484, 1.131484, 1.131484, 1.131484, 1.131484}{1.134059, 1.134059, 1.134059, 1.134059, 1.134059, 1.134059, 1.134059, 1.134059, 1.134059, 1.134059, 1.134059}{1.137617, 1.137617, 1.137617, 1.137617, 1.137617, 1.137617, 1.137617, 1.137617, 1.137617, 1.137617, 1.137617}{1.141753, 1.141753, 1.141753, 1.141753, 1.141753, 1.141753, 1.141753, 1.141753, 1.141753, 1.141753, 1.141753}{1.145889, 1.145889, 1.145889, 1.145889, 1.145889, 1.145889, 1.145889, 1.145889, 1.145889, 1.145889, 1.145889}{1.149235, 1.149235, 1.149235, 1.149235, 1.149235, 1.149235, 1.149235, 1.149235, 1.149235, 1.149235, 1.149235}{1.151627, 1.151627, 1.151627, 1.151627, 1.151627, 1.151627, 1.151627, 1.151627, 1.151627, 1.151627, 1.151627}{1.154019, 1.154019, 1.154019, 1.154019, 1.154019, 1.154019, 1.154019, 1.154019, 1.154019, 1.154019, 1.154019}{1.156495, 1.156495, 1.156495, 1.156495, 1.156495, 1.156495, 1.156495, 1.156495, 1.156495, 1.156495, 1.156495}{1.159565, 1.159565, 1.159565, 1.159565, 1.159565, 1.159565, 1.159565, 1.159565, 1.159565, 1.159565, 1.159565}{1.162635, 1.162635, 1.162635, 1.162635, 1.162635, 1.162635, 1.162635, 1.162635, 1.162635, 1.162635, 1.162635}{1.165705, 1.165705, 1.165705, 1.165705, 1.165705, 1.165705, 1.165705, 1.165705, 1.165705, 1.165705, 1.165705}{1.168228, 1.168228, 1.168228, 1.168228, 1.168228, 1.168228, 1.168228, 1.168228, 1.168228, 1.168228, 1.168228}{1.170445, 1.170445, 1.170445, 1.170445, 1.170445, 1.170445, 1.170445, 1.170445, 1.170445, 1.170445, 1.170445}{1.172662, 1.172662, 1.172662, 1.172662, 1.172662, 1.172662, 1.172662, 1.172662, 1.172662, 1.172662, 1.172662}{1.174878, 1.174878, 1.174878, 1.174878, 1.174878, 1.174878, 1.174878, 1.174878, 1.174878, 1.174878, 1.174878}{1.177718, 1.177718, 1.177718, 1.177718, 1.177718, 1.177718, 1.177718, 1.177718, 1.177718, 1.177718, 1.177718}{1.180563, 1.180563, 1.180563, 1.180563, 1.180563, 1.180563, 1.180563, 1.180563, 1.180563, 1.180563, 1.180563}{1.183409, 1.183409, 1.183409, 1.183409, 1.183409, 1.183409, 1.183409, 1.183409, 1.183409, 1.183409, 1.183409}{1.186354, 1.186354, 1.186354, 1.186354, 1.186354, 1.186354, 1.186354, 1.186354, 1.186354, 1.186354, 1.186354}{1.189786, 1.189786, 1.189786, 1.189786, 1.189786, 1.189786, 1.189786, 1.189786, 1.189786, 1.189786, 1.189786}{1.193218, 1.193218, 1.193218, 1.193218, 1.193218, 1.193218, 1.193218, 1.193218, 1.193218, 1.193218, 1.193218}{1.19665, 1.19665, 1.19665, 1.19665, 1.19665, 1.19665, 1.19665, 1.19665, 1.19665, 1.19665, 1.19665}{1.200062, 1.200062, 1.200062, 1.200062, 1.200062, 1.200062, 1.200062, 1.200062, 1.200062, 1.200062, 1.200062}{1.203377, 1.203377, 1.203377, 1.203377, 1.203377, 1.203377, 1.203377, 1.203377, 1.203377, 1.203377, 1.203377}{1.206693, 1.206693, 1.206693, 1.206693, 1.206693, 1.206693, 1.206693, 1.206693, 1.206693, 1.206693, 1.206693}{1.210008, 1.210008, 1.210008, 1.210008, 1.210008, 1.210008, 1.210008, 1.210008, 1.210008, 1.210008, 1.210008}{1.213324, 1.213324, 1.213324, 1.213324, 1.213324, 1.213324, 1.213324, 1.213324, 1.213324, 1.213324, 1.213324}{1.21843, 1.21843, 1.21843, 1.21843, 1.21843, 1.21843, 1.21843, 1.21843, 1.21843, 1.21843, 1.21843}{1.223572, 1.223572, 1.223572, 1.223572, 1.223572, 1.223572, 1.223572, 1.223572, 1.223572, 1.223572, 1.223572}{1.228715, 1.228715, 1.228715, 1.228715, 1.228715, 1.228715, 1.228715, 1.228715, 1.228715, 1.228715, 1.228715}{1.233857, 1.233857, 1.233857, 1.233857, 1.233857, 1.233857, 1.233857, 1.233857, 1.233857, 1.233857, 1.233857}{1.238169, 1.238169, 1.238169, 1.238169, 1.238169, 1.238169, 1.238169, 1.238169, 1.238169, 1.238169, 1.238169}{1.241912, 1.241912, 1.241912, 1.241912, 1.241912, 1.241912, 1.241912, 1.241912, 1.241912, 1.241912, 1.241912}{1.245655, 1.245655, 1.245655, 1.245655, 1.245655, 1.245655, 1.245655, 1.245655, 1.245655, 1.245655, 1.245655}{1.249398, 1.249398, 1.249398, 1.249398, 1.249398, 1.249398, 1.249398, 1.249398, 1.249398, 1.249398, 1.249398}{1.253141, 1.253141, 1.253141, 1.253141, 1.253141, 1.253141, 1.253141, 1.253141, 1.253141, 1.253141, 1.253141}};$/;" v +CW_LSSTdepth baryons2.h /^ static double CW_LSSTdepth[100][11]={{0.979908, 0.979908, 0.979908, 0.979908, 0.979908, 0.979908, 0.979908, 0.979908, 0.979908, 0.979908, 0.979908}{0.9808265, 0.9808265, 0.9808265, 0.9808265, 0.9808265, 0.9808265, 0.9808265, 0.9808265, 0.9808265, 0.9808265, 0.9808265}{0.9737475, 0.9737475, 0.9737475, 0.9737475, 0.9737475, 0.9737475, 0.9737475, 0.9737475, 0.9737475, 0.9737475, 0.9737475}{0.9857354, 0.9857354, 0.9857354, 0.9857354, 0.9857354, 0.9857354, 0.9857354, 0.9857354, 0.9857354, 0.9857354, 0.9857354}{0.986506, 0.986506, 0.986506, 0.986506, 0.986506, 0.986506, 0.986506, 0.986506, 0.986506, 0.986506, 0.986506}{0.9905496, 0.9905496, 0.9905496, 0.9905496, 0.9905496, 0.9905496, 0.9905496, 0.9905496, 0.9905496, 0.9905496, 0.9905496}{0.9898929, 0.9898929, 0.9898929, 0.9898929, 0.9898929, 0.9898929, 0.9898929, 0.9898929, 0.9898929, 0.9898929, 0.9898929}{0.9817479, 0.9817479, 0.9817479, 0.9817479, 0.9817479, 0.9817479, 0.9817479, 0.9817479, 0.9817479, 0.9817479, 0.9817479}{0.9840111, 0.9840111, 0.9840111, 0.9840111, 0.9840111, 0.9840111, 0.9840111, 0.9840111, 0.9840111, 0.9840111, 0.9840111}{0.9826031, 0.9826031, 0.9826031, 0.9826031, 0.9826031, 0.9826031, 0.9826031, 0.9826031, 0.9826031, 0.9826031, 0.9826031}{0.9833421, 0.9833421, 0.9833421, 0.9833421, 0.9833421, 0.9833421, 0.9833421, 0.9833421, 0.9833421, 0.9833421, 0.9833421}{0.9972209, 0.9972209, 0.9972209, 0.9972209, 0.9972209, 0.9972209, 0.9972209, 0.9972209, 0.9972209, 0.9972209, 0.9972209}{0.9966788, 0.9966788, 0.9966788, 0.9966788, 0.9966788, 0.9966788, 0.9966788, 0.9966788, 0.9966788, 0.9966788, 0.9966788}{0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054, 0.9954054}{0.993116, 0.993116, 0.993116, 0.993116, 0.993116, 0.993116, 0.993116, 0.993116, 0.993116, 0.993116, 0.993116}{0.9940076, 0.9940076, 0.9940076, 0.9940076, 0.9940076, 0.9940076, 0.9940076, 0.9940076, 0.9940076, 0.9940076, 0.9940076}{0.9966891, 0.9966891, 0.9966891, 0.9966891, 0.9966891, 0.9966891, 0.9966891, 0.9966891, 0.9966891, 0.9966891, 0.9966891}{0.9992418, 0.9992418, 0.9992418, 0.9992418, 0.9992418, 0.9992418, 0.9992418, 0.9992418, 0.9992418, 0.9992418, 0.9992418}{1.003356, 1.003356, 1.003356, 1.003356, 1.003356, 1.003356, 1.003356, 1.003356, 1.003356, 1.003356, 1.003356}{1.006317, 1.006317, 1.006317, 1.006317, 1.006317, 1.006317, 1.006317, 1.006317, 1.006317, 1.006317, 1.006317}{1.01017, 1.01017, 1.01017, 1.01017, 1.01017, 1.01017, 1.01017, 1.01017, 1.01017, 1.01017, 1.01017}{1.014464, 1.014464, 1.014464, 1.014464, 1.014464, 1.014464, 1.014464, 1.014464, 1.014464, 1.014464, 1.014464}{1.018602, 1.018602, 1.018602, 1.018602, 1.018602, 1.018602, 1.018602, 1.018602, 1.018602, 1.018602, 1.018602}{1.022597, 1.022597, 1.022597, 1.022597, 1.022597, 1.022597, 1.022597, 1.022597, 1.022597, 1.022597, 1.022597}{1.025652, 1.025652, 1.025652, 1.025652, 1.025652, 1.025652, 1.025652, 1.025652, 1.025652, 1.025652, 1.025652}{1.025652, 1.025652, 1.025652, 1.025652, 1.025652, 1.025652, 1.025652, 1.025652, 1.025652, 1.025652, 1.025652}{1.032469, 1.032469, 1.032469, 1.032469, 1.032469, 1.032469, 1.032469, 1.032469, 1.032469, 1.032469, 1.032469}{1.038385, 1.038385, 1.038385, 1.038385, 1.038385, 1.038385, 1.038385, 1.038385, 1.038385, 1.038385, 1.038385}{1.042714, 1.042714, 1.042714, 1.042714, 1.042714, 1.042714, 1.042714, 1.042714, 1.042714, 1.042714, 1.042714}{1.044368, 1.044368, 1.044368, 1.044368, 1.044368, 1.044368, 1.044368, 1.044368, 1.044368, 1.044368, 1.044368}{1.04472, 1.04472, 1.04472, 1.04472, 1.04472, 1.04472, 1.04472, 1.04472, 1.04472, 1.04472, 1.04472}{1.044319, 1.044319, 1.044319, 1.044319, 1.044319, 1.044319, 1.044319, 1.044319, 1.044319, 1.044319, 1.044319}{1.04281, 1.04281, 1.04281, 1.04281, 1.04281, 1.04281, 1.04281, 1.04281, 1.04281, 1.04281, 1.04281}{1.045234, 1.045234, 1.045234, 1.045234, 1.045234, 1.045234, 1.045234, 1.045234, 1.045234, 1.045234, 1.045234}{1.049573, 1.049573, 1.049573, 1.049573, 1.049573, 1.049573, 1.049573, 1.049573, 1.049573, 1.049573, 1.049573}{1.055133, 1.055133, 1.055133, 1.055133, 1.055133, 1.055133, 1.055133, 1.055133, 1.055133, 1.055133, 1.055133}{1.060294, 1.060294, 1.060294, 1.060294, 1.060294, 1.060294, 1.060294, 1.060294, 1.060294, 1.060294, 1.060294}{1.064309, 1.064309, 1.064309, 1.064309, 1.064309, 1.064309, 1.064309, 1.064309, 1.064309, 1.064309, 1.064309}{1.067149, 1.067149, 1.067149, 1.067149, 1.067149, 1.067149, 1.067149, 1.067149, 1.067149, 1.067149, 1.067149}{1.068433, 1.068433, 1.068433, 1.068433, 1.068433, 1.068433, 1.068433, 1.068433, 1.068433, 1.068433, 1.068433}{1.069688, 1.069688, 1.069688, 1.069688, 1.069688, 1.069688, 1.069688, 1.069688, 1.069688, 1.069688, 1.069688}{1.070917, 1.070917, 1.070917, 1.070917, 1.070917, 1.070917, 1.070917, 1.070917, 1.070917, 1.070917, 1.070917}{1.072721, 1.072721, 1.072721, 1.072721, 1.072721, 1.072721, 1.072721, 1.072721, 1.072721, 1.072721, 1.072721}{1.075077, 1.075077, 1.075077, 1.075077, 1.075077, 1.075077, 1.075077, 1.075077, 1.075077, 1.075077, 1.075077}{1.078325, 1.078325, 1.078325, 1.078325, 1.078325, 1.078325, 1.078325, 1.078325, 1.078325, 1.078325, 1.078325}{1.082856, 1.082856, 1.082856, 1.082856, 1.082856, 1.082856, 1.082856, 1.082856, 1.082856, 1.082856, 1.082856}{1.087351, 1.087351, 1.087351, 1.087351, 1.087351, 1.087351, 1.087351, 1.087351, 1.087351, 1.087351, 1.087351}{1.091718, 1.091718, 1.091718, 1.091718, 1.091718, 1.091718, 1.091718, 1.091718, 1.091718, 1.091718, 1.091718}{1.096084, 1.096084, 1.096084, 1.096084, 1.096084, 1.096084, 1.096084, 1.096084, 1.096084, 1.096084, 1.096084}{1.097432, 1.097432, 1.097432, 1.097432, 1.097432, 1.097432, 1.097432, 1.097432, 1.097432, 1.097432, 1.097432}{1.098481, 1.098481, 1.098481, 1.098481, 1.098481, 1.098481, 1.098481, 1.098481, 1.098481, 1.098481, 1.098481}{1.098008, 1.098008, 1.098008, 1.098008, 1.098008, 1.098008, 1.098008, 1.098008, 1.098008, 1.098008, 1.098008}{1.096007, 1.096007, 1.096007, 1.096007, 1.096007, 1.096007, 1.096007, 1.096007, 1.096007, 1.096007, 1.096007}{1.094007, 1.094007, 1.094007, 1.094007, 1.094007, 1.094007, 1.094007, 1.094007, 1.094007, 1.094007, 1.094007}{1.097689, 1.097689, 1.097689, 1.097689, 1.097689, 1.097689, 1.097689, 1.097689, 1.097689, 1.097689, 1.097689}{1.101518, 1.101518, 1.101518, 1.101518, 1.101518, 1.101518, 1.101518, 1.101518, 1.101518, 1.101518, 1.101518}{1.105302, 1.105302, 1.105302, 1.105302, 1.105302, 1.105302, 1.105302, 1.105302, 1.105302, 1.105302, 1.105302}{1.108993, 1.108993, 1.108993, 1.108993, 1.108993, 1.108993, 1.108993, 1.108993, 1.108993, 1.108993, 1.108993}{1.112683, 1.112683, 1.112683, 1.112683, 1.112683, 1.112683, 1.112683, 1.112683, 1.112683, 1.112683, 1.112683}{1.116803, 1.116803, 1.116803, 1.116803, 1.116803, 1.116803, 1.116803, 1.116803, 1.116803, 1.116803, 1.116803}{1.121255, 1.121255, 1.121255, 1.121255, 1.121255, 1.121255, 1.121255, 1.121255, 1.121255, 1.121255, 1.121255}{1.125707, 1.125707, 1.125707, 1.125707, 1.125707, 1.125707, 1.125707, 1.125707, 1.125707, 1.125707, 1.125707}{1.12891, 1.12891, 1.12891, 1.12891, 1.12891, 1.12891, 1.12891, 1.12891, 1.12891, 1.12891, 1.12891}{1.131484, 1.131484, 1.131484, 1.131484, 1.131484, 1.131484, 1.131484, 1.131484, 1.131484, 1.131484, 1.131484}{1.134059, 1.134059, 1.134059, 1.134059, 1.134059, 1.134059, 1.134059, 1.134059, 1.134059, 1.134059, 1.134059}{1.137617, 1.137617, 1.137617, 1.137617, 1.137617, 1.137617, 1.137617, 1.137617, 1.137617, 1.137617, 1.137617}{1.141753, 1.141753, 1.141753, 1.141753, 1.141753, 1.141753, 1.141753, 1.141753, 1.141753, 1.141753, 1.141753}{1.145889, 1.145889, 1.145889, 1.145889, 1.145889, 1.145889, 1.145889, 1.145889, 1.145889, 1.145889, 1.145889}{1.149235, 1.149235, 1.149235, 1.149235, 1.149235, 1.149235, 1.149235, 1.149235, 1.149235, 1.149235, 1.149235}{1.151627, 1.151627, 1.151627, 1.151627, 1.151627, 1.151627, 1.151627, 1.151627, 1.151627, 1.151627, 1.151627}{1.154019, 1.154019, 1.154019, 1.154019, 1.154019, 1.154019, 1.154019, 1.154019, 1.154019, 1.154019, 1.154019}{1.156495, 1.156495, 1.156495, 1.156495, 1.156495, 1.156495, 1.156495, 1.156495, 1.156495, 1.156495, 1.156495}{1.159565, 1.159565, 1.159565, 1.159565, 1.159565, 1.159565, 1.159565, 1.159565, 1.159565, 1.159565, 1.159565}{1.162635, 1.162635, 1.162635, 1.162635, 1.162635, 1.162635, 1.162635, 1.162635, 1.162635, 1.162635, 1.162635}{1.165705, 1.165705, 1.165705, 1.165705, 1.165705, 1.165705, 1.165705, 1.165705, 1.165705, 1.165705, 1.165705}{1.168228, 1.168228, 1.168228, 1.168228, 1.168228, 1.168228, 1.168228, 1.168228, 1.168228, 1.168228, 1.168228}{1.170445, 1.170445, 1.170445, 1.170445, 1.170445, 1.170445, 1.170445, 1.170445, 1.170445, 1.170445, 1.170445}{1.172662, 1.172662, 1.172662, 1.172662, 1.172662, 1.172662, 1.172662, 1.172662, 1.172662, 1.172662, 1.172662}{1.174878, 1.174878, 1.174878, 1.174878, 1.174878, 1.174878, 1.174878, 1.174878, 1.174878, 1.174878, 1.174878}{1.177718, 1.177718, 1.177718, 1.177718, 1.177718, 1.177718, 1.177718, 1.177718, 1.177718, 1.177718, 1.177718}{1.180563, 1.180563, 1.180563, 1.180563, 1.180563, 1.180563, 1.180563, 1.180563, 1.180563, 1.180563, 1.180563}{1.183409, 1.183409, 1.183409, 1.183409, 1.183409, 1.183409, 1.183409, 1.183409, 1.183409, 1.183409, 1.183409}{1.186354, 1.186354, 1.186354, 1.186354, 1.186354, 1.186354, 1.186354, 1.186354, 1.186354, 1.186354, 1.186354}{1.189786, 1.189786, 1.189786, 1.189786, 1.189786, 1.189786, 1.189786, 1.189786, 1.189786, 1.189786, 1.189786}{1.193218, 1.193218, 1.193218, 1.193218, 1.193218, 1.193218, 1.193218, 1.193218, 1.193218, 1.193218, 1.193218}{1.19665, 1.19665, 1.19665, 1.19665, 1.19665, 1.19665, 1.19665, 1.19665, 1.19665, 1.19665, 1.19665}{1.200062, 1.200062, 1.200062, 1.200062, 1.200062, 1.200062, 1.200062, 1.200062, 1.200062, 1.200062, 1.200062}{1.203377, 1.203377, 1.203377, 1.203377, 1.203377, 1.203377, 1.203377, 1.203377, 1.203377, 1.203377, 1.203377}{1.206693, 1.206693, 1.206693, 1.206693, 1.206693, 1.206693, 1.206693, 1.206693, 1.206693, 1.206693, 1.206693}{1.210008, 1.210008, 1.210008, 1.210008, 1.210008, 1.210008, 1.210008, 1.210008, 1.210008, 1.210008, 1.210008}{1.213324, 1.213324, 1.213324, 1.213324, 1.213324, 1.213324, 1.213324, 1.213324, 1.213324, 1.213324, 1.213324}{1.21843, 1.21843, 1.21843, 1.21843, 1.21843, 1.21843, 1.21843, 1.21843, 1.21843, 1.21843, 1.21843}{1.223572, 1.223572, 1.223572, 1.223572, 1.223572, 1.223572, 1.223572, 1.223572, 1.223572, 1.223572, 1.223572}{1.228715, 1.228715, 1.228715, 1.228715, 1.228715, 1.228715, 1.228715, 1.228715, 1.228715, 1.228715, 1.228715}{1.233857, 1.233857, 1.233857, 1.233857, 1.233857, 1.233857, 1.233857, 1.233857, 1.233857, 1.233857, 1.233857}{1.238169, 1.238169, 1.238169, 1.238169, 1.238169, 1.238169, 1.238169, 1.238169, 1.238169, 1.238169, 1.238169}{1.241912, 1.241912, 1.241912, 1.241912, 1.241912, 1.241912, 1.241912, 1.241912, 1.241912, 1.241912, 1.241912}{1.245655, 1.245655, 1.245655, 1.245655, 1.245655, 1.245655, 1.245655, 1.245655, 1.245655, 1.245655, 1.245655}{1.249398, 1.249398, 1.249398, 1.249398, 1.249398, 1.249398, 1.249398, 1.249398, 1.249398, 1.249398, 1.249398}{1.253141, 1.253141, 1.253141, 1.253141, 1.253141, 1.253141, 1.253141, 1.253141, 1.253141, 1.253141, 1.253141}};$/;" v +CX_DESdepth baryons.h /^ static double CX_DESdepth[100][11]={{0.9406909, 0.9406909, 0.9406909, 0.9406909, 0.9406909, 0.9406909, 0.9406909, 0.9406909, 0.9406909, 0.9406909, 0.9406909},{0.9429438, 0.9429438, 0.9429438, 0.9429438, 0.9429438, 0.9429438, 0.9429438, 0.9429438, 0.9429438, 0.9429438, 0.9429438},{0.9283723, 0.9283723, 0.9283723, 0.9283723, 0.9283723, 0.9283723, 0.9283723, 0.9283723, 0.9283723, 0.9283723, 0.9283723},{0.9436262, 0.9436262, 0.9436262, 0.9436262, 0.9436262, 0.9436262, 0.9436262, 0.9436262, 0.9436262, 0.9436262, 0.9436262},{0.9225663, 0.9225663, 0.9225663, 0.9225663, 0.9225663, 0.9225663, 0.9225663, 0.9225663, 0.9225663, 0.9225663, 0.9225663},{0.9244347, 0.9244347, 0.9244347, 0.9244347, 0.9244347, 0.9244347, 0.9244347, 0.9244347, 0.9244347, 0.9244347, 0.9244347},{0.9094236, 0.9094236, 0.9094236, 0.9094236, 0.9094236, 0.9094236, 0.9094236, 0.9094236, 0.9094236, 0.9094236, 0.9094236},{0.9029965, 0.9029965, 0.9029965, 0.9029965, 0.9029965, 0.9029965, 0.9029965, 0.9029965, 0.9029965, 0.9029965, 0.9029965},{0.9057326, 0.9057326, 0.9057326, 0.9057326, 0.9057326, 0.9057326, 0.9057326, 0.9057326, 0.9057326, 0.9057326, 0.9057326},{0.9044366, 0.9044366, 0.9044366, 0.9044366, 0.9044366, 0.9044366, 0.9044366, 0.9044366, 0.9044366, 0.9044366, 0.9044366},{0.9036495, 0.9036495, 0.9036495, 0.9036495, 0.9036495, 0.9036495, 0.9036495, 0.9036495, 0.9036495, 0.9036495, 0.9036495},{0.9197447, 0.9197447, 0.9197447, 0.9197447, 0.9197447, 0.9197447, 0.9197447, 0.9197447, 0.9197447, 0.9197447, 0.9197447},{0.9115528, 0.9115528, 0.9115528, 0.9115528, 0.9115528, 0.9115528, 0.9115528, 0.9115528, 0.9115528, 0.9115528, 0.9115528},{0.9004727, 0.9004727, 0.9004727, 0.9004727, 0.9004727, 0.9004727, 0.9004727, 0.9004727, 0.9004727, 0.9004727, 0.9004727},{0.9004646, 0.9004646, 0.9004646, 0.9004646, 0.9004646, 0.9004646, 0.9004646, 0.9004646, 0.9004646, 0.9004646, 0.9004646},{0.9065457, 0.9065457, 0.9065457, 0.9065457, 0.9065457, 0.9065457, 0.9065457, 0.9065457, 0.9065457, 0.9065457, 0.9065457},{0.9089913, 0.9089913, 0.9089913, 0.9089913, 0.9089913, 0.9089913, 0.9089913, 0.9089913, 0.9089913, 0.9089913, 0.9089913},{0.9099133, 0.9099133, 0.9099133, 0.9099133, 0.9099133, 0.9099133, 0.9099133, 0.9099133, 0.9099133, 0.9099133, 0.9099133},{0.9114385, 0.9114385, 0.9114385, 0.9114385, 0.9114385, 0.9114385, 0.9114385, 0.9114385, 0.9114385, 0.9114385, 0.9114385},{0.916654, 0.916654, 0.916654, 0.916654, 0.916654, 0.916654, 0.916654, 0.916654, 0.916654, 0.916654, 0.916654},{0.9227675, 0.9227675, 0.9227675, 0.9227675, 0.9227675, 0.9227675, 0.9227675, 0.9227675, 0.9227675, 0.9227675, 0.9227675},{0.9299847, 0.9299847, 0.9299847, 0.9299847, 0.9299847, 0.9299847, 0.9299847, 0.9299847, 0.9299847, 0.9299847, 0.9299847},{0.9375869, 0.9375869, 0.9375869, 0.9375869, 0.9375869, 0.9375869, 0.9375869, 0.9375869, 0.9375869, 0.9375869, 0.9375869},{0.9434192, 0.9434192, 0.9434192, 0.9434192, 0.9434192, 0.9434192, 0.9434192, 0.9434192, 0.9434192, 0.9434192, 0.9434192},{0.9458641, 0.9458641, 0.9458641, 0.9458641, 0.9458641, 0.9458641, 0.9458641, 0.9458641, 0.9458641, 0.9458641, 0.9458641},{0.944144, 0.944144, 0.944144, 0.944144, 0.944144, 0.944144, 0.944144, 0.944144, 0.944144, 0.944144, 0.944144},{0.9519139, 0.9519139, 0.9519139, 0.9519139, 0.9519139, 0.9519139, 0.9519139, 0.9519139, 0.9519139, 0.9519139, 0.9519139},{0.9599899, 0.9599899, 0.9599899, 0.9599899, 0.9599899, 0.9599899, 0.9599899, 0.9599899, 0.9599899, 0.9599899, 0.9599899},{0.9675257, 0.9675257, 0.9675257, 0.9675257, 0.9675257, 0.9675257, 0.9675257, 0.9675257, 0.9675257, 0.9675257, 0.9675257},{0.9736793, 0.9736793, 0.9736793, 0.9736793, 0.9736793, 0.9736793, 0.9736793, 0.9736793, 0.9736793, 0.9736793, 0.9736793},{0.9784867, 0.9784867, 0.9784867, 0.9784867, 0.9784867, 0.9784867, 0.9784867, 0.9784867, 0.9784867, 0.9784867, 0.9784867},{0.9821259, 0.9821259, 0.9821259, 0.9821259, 0.9821259, 0.9821259, 0.9821259, 0.9821259, 0.9821259, 0.9821259, 0.9821259},{0.9835468, 0.9835468, 0.9835468, 0.9835468, 0.9835468, 0.9835468, 0.9835468, 0.9835468, 0.9835468, 0.9835468, 0.9835468},{0.9886107, 0.9886107, 0.9886107, 0.9886107, 0.9886107, 0.9886107, 0.9886107, 0.9886107, 0.9886107, 0.9886107, 0.9886107},{0.9954558, 0.9954558, 0.9954558, 0.9954558, 0.9954558, 0.9954558, 0.9954558, 0.9954558, 0.9954558, 0.9954558, 0.9954558},{1.004717, 1.004717, 1.004717, 1.004717, 1.004717, 1.004717, 1.004717, 1.004717, 1.004717, 1.004717, 1.004717},{1.013573, 1.013573, 1.013573, 1.013573, 1.013573, 1.013573, 1.013573, 1.013573, 1.013573, 1.013573, 1.013573},{1.021268, 1.021268, 1.021268, 1.021268, 1.021268, 1.021268, 1.021268, 1.021268, 1.021268, 1.021268, 1.021268},{1.027784, 1.027784, 1.027784, 1.027784, 1.027784, 1.027784, 1.027784, 1.027784, 1.027784, 1.027784, 1.027784},{1.03274, 1.03274, 1.03274, 1.03274, 1.03274, 1.03274, 1.03274, 1.03274, 1.03274, 1.03274, 1.03274},{1.03637, 1.03637, 1.03637, 1.03637, 1.03637, 1.03637, 1.03637, 1.03637, 1.03637, 1.03637, 1.03637},{1.038753, 1.038753, 1.038753, 1.038753, 1.038753, 1.038753, 1.038753, 1.038753, 1.038753, 1.038753, 1.038753},{1.042846, 1.042846, 1.042846, 1.042846, 1.042846, 1.042846, 1.042846, 1.042846, 1.042846, 1.042846, 1.042846},{1.048582, 1.048582, 1.048582, 1.048582, 1.048582, 1.048582, 1.048582, 1.048582, 1.048582, 1.048582, 1.048582},{1.056075, 1.056075, 1.056075, 1.056075, 1.056075, 1.056075, 1.056075, 1.056075, 1.056075, 1.056075, 1.056075},{1.066094, 1.066094, 1.066094, 1.066094, 1.066094, 1.066094, 1.066094, 1.066094, 1.066094, 1.066094, 1.066094},{1.075828, 1.075828, 1.075828, 1.075828, 1.075828, 1.075828, 1.075828, 1.075828, 1.075828, 1.075828, 1.075828},{1.084501, 1.084501, 1.084501, 1.084501, 1.084501, 1.084501, 1.084501, 1.084501, 1.084501, 1.084501, 1.084501},{1.093174, 1.093174, 1.093174, 1.093174, 1.093174, 1.093174, 1.093174, 1.093174, 1.093174, 1.093174, 1.093174},{1.100664, 1.100664, 1.100664, 1.100664, 1.100664, 1.100664, 1.100664, 1.100664, 1.100664, 1.100664, 1.100664},{1.108038, 1.108038, 1.108038, 1.108038, 1.108038, 1.108038, 1.108038, 1.108038, 1.108038, 1.108038, 1.108038},{1.113765, 1.113765, 1.113765, 1.113765, 1.113765, 1.113765, 1.113765, 1.113765, 1.113765, 1.113765, 1.113765},{1.11784, 1.11784, 1.11784, 1.11784, 1.11784, 1.11784, 1.11784, 1.11784, 1.11784, 1.11784, 1.11784},{1.121915, 1.121915, 1.121915, 1.121915, 1.121915, 1.121915, 1.121915, 1.121915, 1.121915, 1.121915, 1.121915},{1.128741, 1.128741, 1.128741, 1.128741, 1.128741, 1.128741, 1.128741, 1.128741, 1.128741, 1.128741, 1.128741},{1.135638, 1.135638, 1.135638, 1.135638, 1.135638, 1.135638, 1.135638, 1.135638, 1.135638, 1.135638, 1.135638},{1.142788, 1.142788, 1.142788, 1.142788, 1.142788, 1.142788, 1.142788, 1.142788, 1.142788, 1.142788, 1.142788},{1.150447, 1.150447, 1.150447, 1.150447, 1.150447, 1.150447, 1.150447, 1.150447, 1.150447, 1.150447, 1.150447},{1.158106, 1.158106, 1.158106, 1.158106, 1.158106, 1.158106, 1.158106, 1.158106, 1.158106, 1.158106, 1.158106},{1.166177, 1.166177, 1.166177, 1.166177, 1.166177, 1.166177, 1.166177, 1.166177, 1.166177, 1.166177, 1.166177},{1.174568, 1.174568, 1.174568, 1.174568, 1.174568, 1.174568, 1.174568, 1.174568, 1.174568, 1.174568, 1.174568},{1.182959, 1.182959, 1.182959, 1.182959, 1.182959, 1.182959, 1.182959, 1.182959, 1.182959, 1.182959, 1.182959},{1.191211, 1.191211, 1.191211, 1.191211, 1.191211, 1.191211, 1.191211, 1.191211, 1.191211, 1.191211, 1.191211},{1.199392, 1.199392, 1.199392, 1.199392, 1.199392, 1.199392, 1.199392, 1.199392, 1.199392, 1.199392, 1.199392},{1.207573, 1.207573, 1.207573, 1.207573, 1.207573, 1.207573, 1.207573, 1.207573, 1.207573, 1.207573, 1.207573},{1.216757, 1.216757, 1.216757, 1.216757, 1.216757, 1.216757, 1.216757, 1.216757, 1.216757, 1.216757, 1.216757},{1.226529, 1.226529, 1.226529, 1.226529, 1.226529, 1.226529, 1.226529, 1.226529, 1.226529, 1.226529, 1.226529},{1.2363, 1.2363, 1.2363, 1.2363, 1.2363, 1.2363, 1.2363, 1.2363, 1.2363, 1.2363, 1.2363},{1.245583, 1.245583, 1.245583, 1.245583, 1.245583, 1.245583, 1.245583, 1.245583, 1.245583, 1.245583, 1.245583},{1.254275, 1.254275, 1.254275, 1.254275, 1.254275, 1.254275, 1.254275, 1.254275, 1.254275, 1.254275, 1.254275},{1.262966, 1.262966, 1.262966, 1.262966, 1.262966, 1.262966, 1.262966, 1.262966, 1.262966, 1.262966, 1.262966},{1.271525, 1.271525, 1.271525, 1.271525, 1.271525, 1.271525, 1.271525, 1.271525, 1.271525, 1.271525, 1.271525},{1.27916, 1.27916, 1.27916, 1.27916, 1.27916, 1.27916, 1.27916, 1.27916, 1.27916, 1.27916, 1.27916},{1.286796, 1.286796, 1.286796, 1.286796, 1.286796, 1.286796, 1.286796, 1.286796, 1.286796, 1.286796, 1.286796},{1.294431, 1.294431, 1.294431, 1.294431, 1.294431, 1.294431, 1.294431, 1.294431, 1.294431, 1.294431, 1.294431},{1.301944, 1.301944, 1.301944, 1.301944, 1.301944, 1.301944, 1.301944, 1.301944, 1.301944, 1.301944, 1.301944},{1.309388, 1.309388, 1.309388, 1.309388, 1.309388, 1.309388, 1.309388, 1.309388, 1.309388, 1.309388, 1.309388},{1.316832, 1.316832, 1.316832, 1.316832, 1.316832, 1.316832, 1.316832, 1.316832, 1.316832, 1.316832, 1.316832},{1.324276, 1.324276, 1.324276, 1.324276, 1.324276, 1.324276, 1.324276, 1.324276, 1.324276, 1.324276, 1.324276},{1.332345, 1.332345, 1.332345, 1.332345, 1.332345, 1.332345, 1.332345, 1.332345, 1.332345, 1.332345, 1.332345},{1.340418, 1.340418, 1.340418, 1.340418, 1.340418, 1.340418, 1.340418, 1.340418, 1.340418, 1.340418, 1.340418},{1.348492, 1.348492, 1.348492, 1.348492, 1.348492, 1.348492, 1.348492, 1.348492, 1.348492, 1.348492, 1.348492},{1.356671, 1.356671, 1.356671, 1.356671, 1.356671, 1.356671, 1.356671, 1.356671, 1.356671, 1.356671, 1.356671},{1.36536, 1.36536, 1.36536, 1.36536, 1.36536, 1.36536, 1.36536, 1.36536, 1.36536, 1.36536, 1.36536},{1.374049, 1.374049, 1.374049, 1.374049, 1.374049, 1.374049, 1.374049, 1.374049, 1.374049, 1.374049, 1.374049},{1.382738, 1.382738, 1.382738, 1.382738, 1.382738, 1.382738, 1.382738, 1.382738, 1.382738, 1.382738, 1.382738},{1.391397, 1.391397, 1.391397, 1.391397, 1.391397, 1.391397, 1.391397, 1.391397, 1.391397, 1.391397, 1.391397},{1.399908, 1.399908, 1.399908, 1.399908, 1.399908, 1.399908, 1.399908, 1.399908, 1.399908, 1.399908, 1.399908},{1.408419, 1.408419, 1.408419, 1.408419, 1.408419, 1.408419, 1.408419, 1.408419, 1.408419, 1.408419, 1.408419},{1.416929, 1.416929, 1.416929, 1.416929, 1.416929, 1.416929, 1.416929, 1.416929, 1.416929, 1.416929, 1.416929},{1.42544, 1.42544, 1.42544, 1.42544, 1.42544, 1.42544, 1.42544, 1.42544, 1.42544, 1.42544, 1.42544},{1.434533, 1.434533, 1.434533, 1.434533, 1.434533, 1.434533, 1.434533, 1.434533, 1.434533, 1.434533, 1.434533},{1.443638, 1.443638, 1.443638, 1.443638, 1.443638, 1.443638, 1.443638, 1.443638, 1.443638, 1.443638, 1.443638},{1.452743, 1.452743, 1.452743, 1.452743, 1.452743, 1.452743, 1.452743, 1.452743, 1.452743, 1.452743, 1.452743},{1.461847, 1.461847, 1.461847, 1.461847, 1.461847, 1.461847, 1.461847, 1.461847, 1.461847, 1.461847, 1.461847},{1.469959, 1.469959, 1.469959, 1.469959, 1.469959, 1.469959, 1.469959, 1.469959, 1.469959, 1.469959, 1.469959},{1.47739, 1.47739, 1.47739, 1.47739, 1.47739, 1.47739, 1.47739, 1.47739, 1.47739, 1.47739, 1.47739},{1.484822, 1.484822, 1.484822, 1.484822, 1.484822, 1.484822, 1.484822, 1.484822, 1.484822, 1.484822, 1.484822},{1.492253, 1.492253, 1.492253, 1.492253, 1.492253, 1.492253, 1.492253, 1.492253, 1.492253, 1.492253, 1.492253},{1.499685, 1.499685, 1.499685, 1.499685, 1.499685, 1.499685, 1.499685, 1.499685, 1.499685, 1.499685, 1.499685}};$/;" v +CX_DESdepth baryons2.h /^ static double CX_DESdepth[100][11]={{0.9406909, 0.9406909, 0.9406909, 0.9406909, 0.9406909, 0.9406909, 0.9406909, 0.9406909, 0.9406909, 0.9406909, 0.9406909}{0.9429438, 0.9429438, 0.9429438, 0.9429438, 0.9429438, 0.9429438, 0.9429438, 0.9429438, 0.9429438, 0.9429438, 0.9429438}{0.9283723, 0.9283723, 0.9283723, 0.9283723, 0.9283723, 0.9283723, 0.9283723, 0.9283723, 0.9283723, 0.9283723, 0.9283723}{0.9436262, 0.9436262, 0.9436262, 0.9436262, 0.9436262, 0.9436262, 0.9436262, 0.9436262, 0.9436262, 0.9436262, 0.9436262}{0.9225663, 0.9225663, 0.9225663, 0.9225663, 0.9225663, 0.9225663, 0.9225663, 0.9225663, 0.9225663, 0.9225663, 0.9225663}{0.9244347, 0.9244347, 0.9244347, 0.9244347, 0.9244347, 0.9244347, 0.9244347, 0.9244347, 0.9244347, 0.9244347, 0.9244347}{0.9094236, 0.9094236, 0.9094236, 0.9094236, 0.9094236, 0.9094236, 0.9094236, 0.9094236, 0.9094236, 0.9094236, 0.9094236}{0.9029965, 0.9029965, 0.9029965, 0.9029965, 0.9029965, 0.9029965, 0.9029965, 0.9029965, 0.9029965, 0.9029965, 0.9029965}{0.9057326, 0.9057326, 0.9057326, 0.9057326, 0.9057326, 0.9057326, 0.9057326, 0.9057326, 0.9057326, 0.9057326, 0.9057326}{0.9044366, 0.9044366, 0.9044366, 0.9044366, 0.9044366, 0.9044366, 0.9044366, 0.9044366, 0.9044366, 0.9044366, 0.9044366}{0.9036495, 0.9036495, 0.9036495, 0.9036495, 0.9036495, 0.9036495, 0.9036495, 0.9036495, 0.9036495, 0.9036495, 0.9036495}{0.9197447, 0.9197447, 0.9197447, 0.9197447, 0.9197447, 0.9197447, 0.9197447, 0.9197447, 0.9197447, 0.9197447, 0.9197447}{0.9115528, 0.9115528, 0.9115528, 0.9115528, 0.9115528, 0.9115528, 0.9115528, 0.9115528, 0.9115528, 0.9115528, 0.9115528}{0.9004727, 0.9004727, 0.9004727, 0.9004727, 0.9004727, 0.9004727, 0.9004727, 0.9004727, 0.9004727, 0.9004727, 0.9004727}{0.9004646, 0.9004646, 0.9004646, 0.9004646, 0.9004646, 0.9004646, 0.9004646, 0.9004646, 0.9004646, 0.9004646, 0.9004646}{0.9065457, 0.9065457, 0.9065457, 0.9065457, 0.9065457, 0.9065457, 0.9065457, 0.9065457, 0.9065457, 0.9065457, 0.9065457}{0.9089913, 0.9089913, 0.9089913, 0.9089913, 0.9089913, 0.9089913, 0.9089913, 0.9089913, 0.9089913, 0.9089913, 0.9089913}{0.9099133, 0.9099133, 0.9099133, 0.9099133, 0.9099133, 0.9099133, 0.9099133, 0.9099133, 0.9099133, 0.9099133, 0.9099133}{0.9114385, 0.9114385, 0.9114385, 0.9114385, 0.9114385, 0.9114385, 0.9114385, 0.9114385, 0.9114385, 0.9114385, 0.9114385}{0.916654, 0.916654, 0.916654, 0.916654, 0.916654, 0.916654, 0.916654, 0.916654, 0.916654, 0.916654, 0.916654}{0.9227675, 0.9227675, 0.9227675, 0.9227675, 0.9227675, 0.9227675, 0.9227675, 0.9227675, 0.9227675, 0.9227675, 0.9227675}{0.9299847, 0.9299847, 0.9299847, 0.9299847, 0.9299847, 0.9299847, 0.9299847, 0.9299847, 0.9299847, 0.9299847, 0.9299847}{0.9375869, 0.9375869, 0.9375869, 0.9375869, 0.9375869, 0.9375869, 0.9375869, 0.9375869, 0.9375869, 0.9375869, 0.9375869}{0.9434192, 0.9434192, 0.9434192, 0.9434192, 0.9434192, 0.9434192, 0.9434192, 0.9434192, 0.9434192, 0.9434192, 0.9434192}{0.9458641, 0.9458641, 0.9458641, 0.9458641, 0.9458641, 0.9458641, 0.9458641, 0.9458641, 0.9458641, 0.9458641, 0.9458641}{0.944144, 0.944144, 0.944144, 0.944144, 0.944144, 0.944144, 0.944144, 0.944144, 0.944144, 0.944144, 0.944144}{0.9519139, 0.9519139, 0.9519139, 0.9519139, 0.9519139, 0.9519139, 0.9519139, 0.9519139, 0.9519139, 0.9519139, 0.9519139}{0.9599899, 0.9599899, 0.9599899, 0.9599899, 0.9599899, 0.9599899, 0.9599899, 0.9599899, 0.9599899, 0.9599899, 0.9599899}{0.9675257, 0.9675257, 0.9675257, 0.9675257, 0.9675257, 0.9675257, 0.9675257, 0.9675257, 0.9675257, 0.9675257, 0.9675257}{0.9736793, 0.9736793, 0.9736793, 0.9736793, 0.9736793, 0.9736793, 0.9736793, 0.9736793, 0.9736793, 0.9736793, 0.9736793}{0.9784867, 0.9784867, 0.9784867, 0.9784867, 0.9784867, 0.9784867, 0.9784867, 0.9784867, 0.9784867, 0.9784867, 0.9784867}{0.9821259, 0.9821259, 0.9821259, 0.9821259, 0.9821259, 0.9821259, 0.9821259, 0.9821259, 0.9821259, 0.9821259, 0.9821259}{0.9835468, 0.9835468, 0.9835468, 0.9835468, 0.9835468, 0.9835468, 0.9835468, 0.9835468, 0.9835468, 0.9835468, 0.9835468}{0.9886107, 0.9886107, 0.9886107, 0.9886107, 0.9886107, 0.9886107, 0.9886107, 0.9886107, 0.9886107, 0.9886107, 0.9886107}{0.9954558, 0.9954558, 0.9954558, 0.9954558, 0.9954558, 0.9954558, 0.9954558, 0.9954558, 0.9954558, 0.9954558, 0.9954558}{1.004717, 1.004717, 1.004717, 1.004717, 1.004717, 1.004717, 1.004717, 1.004717, 1.004717, 1.004717, 1.004717}{1.013573, 1.013573, 1.013573, 1.013573, 1.013573, 1.013573, 1.013573, 1.013573, 1.013573, 1.013573, 1.013573}{1.021268, 1.021268, 1.021268, 1.021268, 1.021268, 1.021268, 1.021268, 1.021268, 1.021268, 1.021268, 1.021268}{1.027784, 1.027784, 1.027784, 1.027784, 1.027784, 1.027784, 1.027784, 1.027784, 1.027784, 1.027784, 1.027784}{1.03274, 1.03274, 1.03274, 1.03274, 1.03274, 1.03274, 1.03274, 1.03274, 1.03274, 1.03274, 1.03274}{1.03637, 1.03637, 1.03637, 1.03637, 1.03637, 1.03637, 1.03637, 1.03637, 1.03637, 1.03637, 1.03637}{1.038753, 1.038753, 1.038753, 1.038753, 1.038753, 1.038753, 1.038753, 1.038753, 1.038753, 1.038753, 1.038753}{1.042846, 1.042846, 1.042846, 1.042846, 1.042846, 1.042846, 1.042846, 1.042846, 1.042846, 1.042846, 1.042846}{1.048582, 1.048582, 1.048582, 1.048582, 1.048582, 1.048582, 1.048582, 1.048582, 1.048582, 1.048582, 1.048582}{1.056075, 1.056075, 1.056075, 1.056075, 1.056075, 1.056075, 1.056075, 1.056075, 1.056075, 1.056075, 1.056075}{1.066094, 1.066094, 1.066094, 1.066094, 1.066094, 1.066094, 1.066094, 1.066094, 1.066094, 1.066094, 1.066094}{1.075828, 1.075828, 1.075828, 1.075828, 1.075828, 1.075828, 1.075828, 1.075828, 1.075828, 1.075828, 1.075828}{1.084501, 1.084501, 1.084501, 1.084501, 1.084501, 1.084501, 1.084501, 1.084501, 1.084501, 1.084501, 1.084501}{1.093174, 1.093174, 1.093174, 1.093174, 1.093174, 1.093174, 1.093174, 1.093174, 1.093174, 1.093174, 1.093174}{1.100664, 1.100664, 1.100664, 1.100664, 1.100664, 1.100664, 1.100664, 1.100664, 1.100664, 1.100664, 1.100664}{1.108038, 1.108038, 1.108038, 1.108038, 1.108038, 1.108038, 1.108038, 1.108038, 1.108038, 1.108038, 1.108038}{1.113765, 1.113765, 1.113765, 1.113765, 1.113765, 1.113765, 1.113765, 1.113765, 1.113765, 1.113765, 1.113765}{1.11784, 1.11784, 1.11784, 1.11784, 1.11784, 1.11784, 1.11784, 1.11784, 1.11784, 1.11784, 1.11784}{1.121915, 1.121915, 1.121915, 1.121915, 1.121915, 1.121915, 1.121915, 1.121915, 1.121915, 1.121915, 1.121915}{1.128741, 1.128741, 1.128741, 1.128741, 1.128741, 1.128741, 1.128741, 1.128741, 1.128741, 1.128741, 1.128741}{1.135638, 1.135638, 1.135638, 1.135638, 1.135638, 1.135638, 1.135638, 1.135638, 1.135638, 1.135638, 1.135638}{1.142788, 1.142788, 1.142788, 1.142788, 1.142788, 1.142788, 1.142788, 1.142788, 1.142788, 1.142788, 1.142788}{1.150447, 1.150447, 1.150447, 1.150447, 1.150447, 1.150447, 1.150447, 1.150447, 1.150447, 1.150447, 1.150447}{1.158106, 1.158106, 1.158106, 1.158106, 1.158106, 1.158106, 1.158106, 1.158106, 1.158106, 1.158106, 1.158106}{1.166177, 1.166177, 1.166177, 1.166177, 1.166177, 1.166177, 1.166177, 1.166177, 1.166177, 1.166177, 1.166177}{1.174568, 1.174568, 1.174568, 1.174568, 1.174568, 1.174568, 1.174568, 1.174568, 1.174568, 1.174568, 1.174568}{1.182959, 1.182959, 1.182959, 1.182959, 1.182959, 1.182959, 1.182959, 1.182959, 1.182959, 1.182959, 1.182959}{1.191211, 1.191211, 1.191211, 1.191211, 1.191211, 1.191211, 1.191211, 1.191211, 1.191211, 1.191211, 1.191211}{1.199392, 1.199392, 1.199392, 1.199392, 1.199392, 1.199392, 1.199392, 1.199392, 1.199392, 1.199392, 1.199392}{1.207573, 1.207573, 1.207573, 1.207573, 1.207573, 1.207573, 1.207573, 1.207573, 1.207573, 1.207573, 1.207573}{1.216757, 1.216757, 1.216757, 1.216757, 1.216757, 1.216757, 1.216757, 1.216757, 1.216757, 1.216757, 1.216757}{1.226529, 1.226529, 1.226529, 1.226529, 1.226529, 1.226529, 1.226529, 1.226529, 1.226529, 1.226529, 1.226529}{1.2363, 1.2363, 1.2363, 1.2363, 1.2363, 1.2363, 1.2363, 1.2363, 1.2363, 1.2363, 1.2363}{1.245583, 1.245583, 1.245583, 1.245583, 1.245583, 1.245583, 1.245583, 1.245583, 1.245583, 1.245583, 1.245583}{1.254275, 1.254275, 1.254275, 1.254275, 1.254275, 1.254275, 1.254275, 1.254275, 1.254275, 1.254275, 1.254275}{1.262966, 1.262966, 1.262966, 1.262966, 1.262966, 1.262966, 1.262966, 1.262966, 1.262966, 1.262966, 1.262966}{1.271525, 1.271525, 1.271525, 1.271525, 1.271525, 1.271525, 1.271525, 1.271525, 1.271525, 1.271525, 1.271525}{1.27916, 1.27916, 1.27916, 1.27916, 1.27916, 1.27916, 1.27916, 1.27916, 1.27916, 1.27916, 1.27916}{1.286796, 1.286796, 1.286796, 1.286796, 1.286796, 1.286796, 1.286796, 1.286796, 1.286796, 1.286796, 1.286796}{1.294431, 1.294431, 1.294431, 1.294431, 1.294431, 1.294431, 1.294431, 1.294431, 1.294431, 1.294431, 1.294431}{1.301944, 1.301944, 1.301944, 1.301944, 1.301944, 1.301944, 1.301944, 1.301944, 1.301944, 1.301944, 1.301944}{1.309388, 1.309388, 1.309388, 1.309388, 1.309388, 1.309388, 1.309388, 1.309388, 1.309388, 1.309388, 1.309388}{1.316832, 1.316832, 1.316832, 1.316832, 1.316832, 1.316832, 1.316832, 1.316832, 1.316832, 1.316832, 1.316832}{1.324276, 1.324276, 1.324276, 1.324276, 1.324276, 1.324276, 1.324276, 1.324276, 1.324276, 1.324276, 1.324276}{1.332345, 1.332345, 1.332345, 1.332345, 1.332345, 1.332345, 1.332345, 1.332345, 1.332345, 1.332345, 1.332345}{1.340418, 1.340418, 1.340418, 1.340418, 1.340418, 1.340418, 1.340418, 1.340418, 1.340418, 1.340418, 1.340418}{1.348492, 1.348492, 1.348492, 1.348492, 1.348492, 1.348492, 1.348492, 1.348492, 1.348492, 1.348492, 1.348492}{1.356671, 1.356671, 1.356671, 1.356671, 1.356671, 1.356671, 1.356671, 1.356671, 1.356671, 1.356671, 1.356671}{1.36536, 1.36536, 1.36536, 1.36536, 1.36536, 1.36536, 1.36536, 1.36536, 1.36536, 1.36536, 1.36536}{1.374049, 1.374049, 1.374049, 1.374049, 1.374049, 1.374049, 1.374049, 1.374049, 1.374049, 1.374049, 1.374049}{1.382738, 1.382738, 1.382738, 1.382738, 1.382738, 1.382738, 1.382738, 1.382738, 1.382738, 1.382738, 1.382738}{1.391397, 1.391397, 1.391397, 1.391397, 1.391397, 1.391397, 1.391397, 1.391397, 1.391397, 1.391397, 1.391397}{1.399908, 1.399908, 1.399908, 1.399908, 1.399908, 1.399908, 1.399908, 1.399908, 1.399908, 1.399908, 1.399908}{1.408419, 1.408419, 1.408419, 1.408419, 1.408419, 1.408419, 1.408419, 1.408419, 1.408419, 1.408419, 1.408419}{1.416929, 1.416929, 1.416929, 1.416929, 1.416929, 1.416929, 1.416929, 1.416929, 1.416929, 1.416929, 1.416929}{1.42544, 1.42544, 1.42544, 1.42544, 1.42544, 1.42544, 1.42544, 1.42544, 1.42544, 1.42544, 1.42544}{1.434533, 1.434533, 1.434533, 1.434533, 1.434533, 1.434533, 1.434533, 1.434533, 1.434533, 1.434533, 1.434533}{1.443638, 1.443638, 1.443638, 1.443638, 1.443638, 1.443638, 1.443638, 1.443638, 1.443638, 1.443638, 1.443638}{1.452743, 1.452743, 1.452743, 1.452743, 1.452743, 1.452743, 1.452743, 1.452743, 1.452743, 1.452743, 1.452743}{1.461847, 1.461847, 1.461847, 1.461847, 1.461847, 1.461847, 1.461847, 1.461847, 1.461847, 1.461847, 1.461847}{1.469959, 1.469959, 1.469959, 1.469959, 1.469959, 1.469959, 1.469959, 1.469959, 1.469959, 1.469959, 1.469959}{1.47739, 1.47739, 1.47739, 1.47739, 1.47739, 1.47739, 1.47739, 1.47739, 1.47739, 1.47739, 1.47739}{1.484822, 1.484822, 1.484822, 1.484822, 1.484822, 1.484822, 1.484822, 1.484822, 1.484822, 1.484822, 1.484822}{1.492253, 1.492253, 1.492253, 1.492253, 1.492253, 1.492253, 1.492253, 1.492253, 1.492253, 1.492253, 1.492253}{1.499685, 1.499685, 1.499685, 1.499685, 1.499685, 1.499685, 1.499685, 1.499685, 1.499685, 1.499685, 1.499685}};$/;" v +CX_LSSTdepth baryons2.h /^ static double CX_LSSTdepth[100][11]={{0.9406909, 0.9406909, 0.9406909, 0.9406909, 0.9406909, 0.9406909, 0.9406909, 0.9406909, 0.9406909, 0.9406909, 0.9406909}{0.9429438, 0.9429438, 0.9429438, 0.9429438, 0.9429438, 0.9429438, 0.9429438, 0.9429438, 0.9429438, 0.9429438, 0.9429438}{0.9283723, 0.9283723, 0.9283723, 0.9283723, 0.9283723, 0.9283723, 0.9283723, 0.9283723, 0.9283723, 0.9283723, 0.9283723}{0.9436262, 0.9436262, 0.9436262, 0.9436262, 0.9436262, 0.9436262, 0.9436262, 0.9436262, 0.9436262, 0.9436262, 0.9436262}{0.9225663, 0.9225663, 0.9225663, 0.9225663, 0.9225663, 0.9225663, 0.9225663, 0.9225663, 0.9225663, 0.9225663, 0.9225663}{0.9244347, 0.9244347, 0.9244347, 0.9244347, 0.9244347, 0.9244347, 0.9244347, 0.9244347, 0.9244347, 0.9244347, 0.9244347}{0.9094236, 0.9094236, 0.9094236, 0.9094236, 0.9094236, 0.9094236, 0.9094236, 0.9094236, 0.9094236, 0.9094236, 0.9094236}{0.9029965, 0.9029965, 0.9029965, 0.9029965, 0.9029965, 0.9029965, 0.9029965, 0.9029965, 0.9029965, 0.9029965, 0.9029965}{0.9057326, 0.9057326, 0.9057326, 0.9057326, 0.9057326, 0.9057326, 0.9057326, 0.9057326, 0.9057326, 0.9057326, 0.9057326}{0.9044366, 0.9044366, 0.9044366, 0.9044366, 0.9044366, 0.9044366, 0.9044366, 0.9044366, 0.9044366, 0.9044366, 0.9044366}{0.9036495, 0.9036495, 0.9036495, 0.9036495, 0.9036495, 0.9036495, 0.9036495, 0.9036495, 0.9036495, 0.9036495, 0.9036495}{0.9197447, 0.9197447, 0.9197447, 0.9197447, 0.9197447, 0.9197447, 0.9197447, 0.9197447, 0.9197447, 0.9197447, 0.9197447}{0.9115528, 0.9115528, 0.9115528, 0.9115528, 0.9115528, 0.9115528, 0.9115528, 0.9115528, 0.9115528, 0.9115528, 0.9115528}{0.9004727, 0.9004727, 0.9004727, 0.9004727, 0.9004727, 0.9004727, 0.9004727, 0.9004727, 0.9004727, 0.9004727, 0.9004727}{0.9004646, 0.9004646, 0.9004646, 0.9004646, 0.9004646, 0.9004646, 0.9004646, 0.9004646, 0.9004646, 0.9004646, 0.9004646}{0.9065457, 0.9065457, 0.9065457, 0.9065457, 0.9065457, 0.9065457, 0.9065457, 0.9065457, 0.9065457, 0.9065457, 0.9065457}{0.9089913, 0.9089913, 0.9089913, 0.9089913, 0.9089913, 0.9089913, 0.9089913, 0.9089913, 0.9089913, 0.9089913, 0.9089913}{0.9099133, 0.9099133, 0.9099133, 0.9099133, 0.9099133, 0.9099133, 0.9099133, 0.9099133, 0.9099133, 0.9099133, 0.9099133}{0.9114385, 0.9114385, 0.9114385, 0.9114385, 0.9114385, 0.9114385, 0.9114385, 0.9114385, 0.9114385, 0.9114385, 0.9114385}{0.916654, 0.916654, 0.916654, 0.916654, 0.916654, 0.916654, 0.916654, 0.916654, 0.916654, 0.916654, 0.916654}{0.9227675, 0.9227675, 0.9227675, 0.9227675, 0.9227675, 0.9227675, 0.9227675, 0.9227675, 0.9227675, 0.9227675, 0.9227675}{0.9299847, 0.9299847, 0.9299847, 0.9299847, 0.9299847, 0.9299847, 0.9299847, 0.9299847, 0.9299847, 0.9299847, 0.9299847}{0.9375869, 0.9375869, 0.9375869, 0.9375869, 0.9375869, 0.9375869, 0.9375869, 0.9375869, 0.9375869, 0.9375869, 0.9375869}{0.9434192, 0.9434192, 0.9434192, 0.9434192, 0.9434192, 0.9434192, 0.9434192, 0.9434192, 0.9434192, 0.9434192, 0.9434192}{0.9458641, 0.9458641, 0.9458641, 0.9458641, 0.9458641, 0.9458641, 0.9458641, 0.9458641, 0.9458641, 0.9458641, 0.9458641}{0.944144, 0.944144, 0.944144, 0.944144, 0.944144, 0.944144, 0.944144, 0.944144, 0.944144, 0.944144, 0.944144}{0.9519139, 0.9519139, 0.9519139, 0.9519139, 0.9519139, 0.9519139, 0.9519139, 0.9519139, 0.9519139, 0.9519139, 0.9519139}{0.9599899, 0.9599899, 0.9599899, 0.9599899, 0.9599899, 0.9599899, 0.9599899, 0.9599899, 0.9599899, 0.9599899, 0.9599899}{0.9675257, 0.9675257, 0.9675257, 0.9675257, 0.9675257, 0.9675257, 0.9675257, 0.9675257, 0.9675257, 0.9675257, 0.9675257}{0.9736793, 0.9736793, 0.9736793, 0.9736793, 0.9736793, 0.9736793, 0.9736793, 0.9736793, 0.9736793, 0.9736793, 0.9736793}{0.9784867, 0.9784867, 0.9784867, 0.9784867, 0.9784867, 0.9784867, 0.9784867, 0.9784867, 0.9784867, 0.9784867, 0.9784867}{0.9821259, 0.9821259, 0.9821259, 0.9821259, 0.9821259, 0.9821259, 0.9821259, 0.9821259, 0.9821259, 0.9821259, 0.9821259}{0.9835468, 0.9835468, 0.9835468, 0.9835468, 0.9835468, 0.9835468, 0.9835468, 0.9835468, 0.9835468, 0.9835468, 0.9835468}{0.9886107, 0.9886107, 0.9886107, 0.9886107, 0.9886107, 0.9886107, 0.9886107, 0.9886107, 0.9886107, 0.9886107, 0.9886107}{0.9954558, 0.9954558, 0.9954558, 0.9954558, 0.9954558, 0.9954558, 0.9954558, 0.9954558, 0.9954558, 0.9954558, 0.9954558}{1.004717, 1.004717, 1.004717, 1.004717, 1.004717, 1.004717, 1.004717, 1.004717, 1.004717, 1.004717, 1.004717}{1.013573, 1.013573, 1.013573, 1.013573, 1.013573, 1.013573, 1.013573, 1.013573, 1.013573, 1.013573, 1.013573}{1.021268, 1.021268, 1.021268, 1.021268, 1.021268, 1.021268, 1.021268, 1.021268, 1.021268, 1.021268, 1.021268}{1.027784, 1.027784, 1.027784, 1.027784, 1.027784, 1.027784, 1.027784, 1.027784, 1.027784, 1.027784, 1.027784}{1.03274, 1.03274, 1.03274, 1.03274, 1.03274, 1.03274, 1.03274, 1.03274, 1.03274, 1.03274, 1.03274}{1.03637, 1.03637, 1.03637, 1.03637, 1.03637, 1.03637, 1.03637, 1.03637, 1.03637, 1.03637, 1.03637}{1.038753, 1.038753, 1.038753, 1.038753, 1.038753, 1.038753, 1.038753, 1.038753, 1.038753, 1.038753, 1.038753}{1.042846, 1.042846, 1.042846, 1.042846, 1.042846, 1.042846, 1.042846, 1.042846, 1.042846, 1.042846, 1.042846}{1.048582, 1.048582, 1.048582, 1.048582, 1.048582, 1.048582, 1.048582, 1.048582, 1.048582, 1.048582, 1.048582}{1.056075, 1.056075, 1.056075, 1.056075, 1.056075, 1.056075, 1.056075, 1.056075, 1.056075, 1.056075, 1.056075}{1.066094, 1.066094, 1.066094, 1.066094, 1.066094, 1.066094, 1.066094, 1.066094, 1.066094, 1.066094, 1.066094}{1.075828, 1.075828, 1.075828, 1.075828, 1.075828, 1.075828, 1.075828, 1.075828, 1.075828, 1.075828, 1.075828}{1.084501, 1.084501, 1.084501, 1.084501, 1.084501, 1.084501, 1.084501, 1.084501, 1.084501, 1.084501, 1.084501}{1.093174, 1.093174, 1.093174, 1.093174, 1.093174, 1.093174, 1.093174, 1.093174, 1.093174, 1.093174, 1.093174}{1.100664, 1.100664, 1.100664, 1.100664, 1.100664, 1.100664, 1.100664, 1.100664, 1.100664, 1.100664, 1.100664}{1.108038, 1.108038, 1.108038, 1.108038, 1.108038, 1.108038, 1.108038, 1.108038, 1.108038, 1.108038, 1.108038}{1.113765, 1.113765, 1.113765, 1.113765, 1.113765, 1.113765, 1.113765, 1.113765, 1.113765, 1.113765, 1.113765}{1.11784, 1.11784, 1.11784, 1.11784, 1.11784, 1.11784, 1.11784, 1.11784, 1.11784, 1.11784, 1.11784}{1.121915, 1.121915, 1.121915, 1.121915, 1.121915, 1.121915, 1.121915, 1.121915, 1.121915, 1.121915, 1.121915}{1.128741, 1.128741, 1.128741, 1.128741, 1.128741, 1.128741, 1.128741, 1.128741, 1.128741, 1.128741, 1.128741}{1.135638, 1.135638, 1.135638, 1.135638, 1.135638, 1.135638, 1.135638, 1.135638, 1.135638, 1.135638, 1.135638}{1.142788, 1.142788, 1.142788, 1.142788, 1.142788, 1.142788, 1.142788, 1.142788, 1.142788, 1.142788, 1.142788}{1.150447, 1.150447, 1.150447, 1.150447, 1.150447, 1.150447, 1.150447, 1.150447, 1.150447, 1.150447, 1.150447}{1.158106, 1.158106, 1.158106, 1.158106, 1.158106, 1.158106, 1.158106, 1.158106, 1.158106, 1.158106, 1.158106}{1.166177, 1.166177, 1.166177, 1.166177, 1.166177, 1.166177, 1.166177, 1.166177, 1.166177, 1.166177, 1.166177}{1.174568, 1.174568, 1.174568, 1.174568, 1.174568, 1.174568, 1.174568, 1.174568, 1.174568, 1.174568, 1.174568}{1.182959, 1.182959, 1.182959, 1.182959, 1.182959, 1.182959, 1.182959, 1.182959, 1.182959, 1.182959, 1.182959}{1.191211, 1.191211, 1.191211, 1.191211, 1.191211, 1.191211, 1.191211, 1.191211, 1.191211, 1.191211, 1.191211}{1.199392, 1.199392, 1.199392, 1.199392, 1.199392, 1.199392, 1.199392, 1.199392, 1.199392, 1.199392, 1.199392}{1.207573, 1.207573, 1.207573, 1.207573, 1.207573, 1.207573, 1.207573, 1.207573, 1.207573, 1.207573, 1.207573}{1.216757, 1.216757, 1.216757, 1.216757, 1.216757, 1.216757, 1.216757, 1.216757, 1.216757, 1.216757, 1.216757}{1.226529, 1.226529, 1.226529, 1.226529, 1.226529, 1.226529, 1.226529, 1.226529, 1.226529, 1.226529, 1.226529}{1.2363, 1.2363, 1.2363, 1.2363, 1.2363, 1.2363, 1.2363, 1.2363, 1.2363, 1.2363, 1.2363}{1.245583, 1.245583, 1.245583, 1.245583, 1.245583, 1.245583, 1.245583, 1.245583, 1.245583, 1.245583, 1.245583}{1.254275, 1.254275, 1.254275, 1.254275, 1.254275, 1.254275, 1.254275, 1.254275, 1.254275, 1.254275, 1.254275}{1.262966, 1.262966, 1.262966, 1.262966, 1.262966, 1.262966, 1.262966, 1.262966, 1.262966, 1.262966, 1.262966}{1.271525, 1.271525, 1.271525, 1.271525, 1.271525, 1.271525, 1.271525, 1.271525, 1.271525, 1.271525, 1.271525}{1.27916, 1.27916, 1.27916, 1.27916, 1.27916, 1.27916, 1.27916, 1.27916, 1.27916, 1.27916, 1.27916}{1.286796, 1.286796, 1.286796, 1.286796, 1.286796, 1.286796, 1.286796, 1.286796, 1.286796, 1.286796, 1.286796}{1.294431, 1.294431, 1.294431, 1.294431, 1.294431, 1.294431, 1.294431, 1.294431, 1.294431, 1.294431, 1.294431}{1.301944, 1.301944, 1.301944, 1.301944, 1.301944, 1.301944, 1.301944, 1.301944, 1.301944, 1.301944, 1.301944}{1.309388, 1.309388, 1.309388, 1.309388, 1.309388, 1.309388, 1.309388, 1.309388, 1.309388, 1.309388, 1.309388}{1.316832, 1.316832, 1.316832, 1.316832, 1.316832, 1.316832, 1.316832, 1.316832, 1.316832, 1.316832, 1.316832}{1.324276, 1.324276, 1.324276, 1.324276, 1.324276, 1.324276, 1.324276, 1.324276, 1.324276, 1.324276, 1.324276}{1.332345, 1.332345, 1.332345, 1.332345, 1.332345, 1.332345, 1.332345, 1.332345, 1.332345, 1.332345, 1.332345}{1.340418, 1.340418, 1.340418, 1.340418, 1.340418, 1.340418, 1.340418, 1.340418, 1.340418, 1.340418, 1.340418}{1.348492, 1.348492, 1.348492, 1.348492, 1.348492, 1.348492, 1.348492, 1.348492, 1.348492, 1.348492, 1.348492}{1.356671, 1.356671, 1.356671, 1.356671, 1.356671, 1.356671, 1.356671, 1.356671, 1.356671, 1.356671, 1.356671}{1.36536, 1.36536, 1.36536, 1.36536, 1.36536, 1.36536, 1.36536, 1.36536, 1.36536, 1.36536, 1.36536}{1.374049, 1.374049, 1.374049, 1.374049, 1.374049, 1.374049, 1.374049, 1.374049, 1.374049, 1.374049, 1.374049}{1.382738, 1.382738, 1.382738, 1.382738, 1.382738, 1.382738, 1.382738, 1.382738, 1.382738, 1.382738, 1.382738}{1.391397, 1.391397, 1.391397, 1.391397, 1.391397, 1.391397, 1.391397, 1.391397, 1.391397, 1.391397, 1.391397}{1.399908, 1.399908, 1.399908, 1.399908, 1.399908, 1.399908, 1.399908, 1.399908, 1.399908, 1.399908, 1.399908}{1.408419, 1.408419, 1.408419, 1.408419, 1.408419, 1.408419, 1.408419, 1.408419, 1.408419, 1.408419, 1.408419}{1.416929, 1.416929, 1.416929, 1.416929, 1.416929, 1.416929, 1.416929, 1.416929, 1.416929, 1.416929, 1.416929}{1.42544, 1.42544, 1.42544, 1.42544, 1.42544, 1.42544, 1.42544, 1.42544, 1.42544, 1.42544, 1.42544}{1.434533, 1.434533, 1.434533, 1.434533, 1.434533, 1.434533, 1.434533, 1.434533, 1.434533, 1.434533, 1.434533}{1.443638, 1.443638, 1.443638, 1.443638, 1.443638, 1.443638, 1.443638, 1.443638, 1.443638, 1.443638, 1.443638}{1.452743, 1.452743, 1.452743, 1.452743, 1.452743, 1.452743, 1.452743, 1.452743, 1.452743, 1.452743, 1.452743}{1.461847, 1.461847, 1.461847, 1.461847, 1.461847, 1.461847, 1.461847, 1.461847, 1.461847, 1.461847, 1.461847}{1.469959, 1.469959, 1.469959, 1.469959, 1.469959, 1.469959, 1.469959, 1.469959, 1.469959, 1.469959, 1.469959}{1.47739, 1.47739, 1.47739, 1.47739, 1.47739, 1.47739, 1.47739, 1.47739, 1.47739, 1.47739, 1.47739}{1.484822, 1.484822, 1.484822, 1.484822, 1.484822, 1.484822, 1.484822, 1.484822, 1.484822, 1.484822, 1.484822}{1.492253, 1.492253, 1.492253, 1.492253, 1.492253, 1.492253, 1.492253, 1.492253, 1.492253, 1.492253, 1.492253}{1.499685, 1.499685, 1.499685, 1.499685, 1.499685, 1.499685, 1.499685, 1.499685, 1.499685, 1.499685, 1.499685}};$/;" v +C_BB_TATT cosmo2D_fullsky_TATT.c /^double C_BB_TATT(double l, int ni, int nj){$/;" f +C_BB_tab cosmo2D_fullsky_TATT.c /^double C_BB_tab(double l, int ni, int nj) \/\/shear power spectrum of source galaxies in bins ni, nj$/;" f +C_EE_TATT cosmo2D_fullsky_TATT.c /^double C_EE_TATT(double l, int ni,int nj){$/;" f +C_EE_tab cosmo2D_fullsky_TATT.c /^double C_EE_tab(double l, int ni, int nj) \/\/shear power spectrum of source galaxies in bins ni, nj$/;" f +C_FOOTPRINT_FILE structs.c /^ char C_FOOTPRINT_FILE[200]; \/*angular power spectrum of survey footprint, in healpix format *\/$/;" m struct:__anon24 file: +C_GI_JB_nointerp IA.c /^double C_GI_JB_nointerp(double s, int ni, int nj) $/;" f +C_GI_lin_nointerp IA.c /^double C_GI_lin_nointerp(double s, int ni, int nj) $/;" f +C_GI_nointerp IA.c /^double C_GI_nointerp(double s, int ni, int nj) $/;" f +C_II_JB_nointerp IA.c /^double C_II_JB_nointerp(double s, int ni, int nj)$/;" f +C_II_lin_nointerp IA.c /^double C_II_lin_nointerp(double s, int ni, int nj) $/;" f +C_II_nointerp IA.c /^double C_II_nointerp(double s, int ni, int nj) $/;" f +C_ccl_tomo cluster.c /^double C_ccl_tomo(double l, int nz1, int nN1, int nz2, int nN2){$/;" f +C_ccl_tomo clusters_DES.c /^double C_ccl_tomo(double l, int nz1, int nN1, int nz2, int nN2){$/;" f +C_cgl_tomo_nointerp cluster.c /^double C_cgl_tomo_nointerp(double l, int nz, int nN, int zs){$/;" f +C_cgl_tomo_nointerp clusters_DES.c /^double C_cgl_tomo_nointerp(double l, int nz, int nN, int zs){$/;" f +C_cgl_tomo_sys like_fourier.c /^double C_cgl_tomo_sys(double ell_Cluster, int zl,int nN, int zs)$/;" f +C_cgl_tomo_sys like_fourier_HOD.c /^double C_cgl_tomo_sys(double ell_Cluster, int zl,int nN, int zs)$/;" f +C_cl_HOD cosmo2D_fourier.c /^double C_cl_HOD(double l, int ni) \/\/galaxy clustering power spectrum of galaxies in bin ni, using HOD model$/;" f +C_cl_HOD_rm redmagic_real.c /^double C_cl_HOD_rm (double k){$/;" f +C_cl_HOD_rm_1h redmagic_real.c /^double C_cl_HOD_rm_1h (double k){$/;" f +C_cl_HOD_wrapper cosmo2D_real.c /^double C_cl_HOD_wrapper(double l,int ni, int nj){$/;" f +C_cl_RSD cosmo2D_exact.c /^double C_cl_RSD(int l, int ni, int nj){$/;" f +C_cl_RSD_nointerp cosmo2D_fourier.c /^double C_cl_RSD_nointerp(double l, int ni, int nj) \/\/galaxy clustering power spectrum of galaxy bins ni, nj$/;" f +C_cl_g_rm_tomo covariances_fourier_HOD.c /^double C_cl_g_rm_tomo(double l, int nzc1, int nN1, int nzl1){$/;" f +C_cl_g_tomo cluster.c /^double C_cl_g_tomo(double l, int nzc1, int nN1, int nzl1){$/;" f +C_cl_g_tomo clusters_DES.c /^double C_cl_g_tomo(double l, int nzc1, int nN1, int nzl1){$/;" f +C_cl_lin_nointerp cosmo2D_exact.c /^double C_cl_lin_nointerp(double l, int ni, int nj) \/\/galaxy clustering power spectrum of galaxy bins ni, nj$/;" f +C_cl_lin_nointerp cosmo2D_exact_fft.c /^double C_cl_lin_nointerp(double l, int ni, int nj) \/\/galaxy clustering power spectrum of galaxy bins ni, nj$/;" f +C_cl_lin_nointerp cosmo2D_exact_fft_cltomo.c /^double C_cl_lin_nointerp(double l, int ni, int nj) \/\/galaxy clustering power spectrum of galaxy bins ni, nj$/;" f +C_cl_lin_nointerp cosmo2D_exact_fft_optimize.c /^double C_cl_lin_nointerp(double l, int ni, int nj) \/\/galaxy clustering power spectrum of galaxy bins ni, nj$/;" f +C_cl_mixed cosmo2D_exact_fft.c /^void C_cl_mixed(int L, int LMAX, int ni, int nj, double *Cl, double dev, double tolerance) {$/;" f +C_cl_mixed cosmo2D_exact_fft_cltomo.c /^void C_cl_mixed(int L, int LMAX, int ni, int nj, double *Cl, double dev, double tolerance) {$/;" f +C_cl_mixed cosmo2D_exact_fft_optimize.c /^void C_cl_mixed(int L, int LMAX, int ni, int nj, double *Cl, double dev, double tolerance) {$/;" f +C_cl_nl_rescaled_nointerp cosmo2D_exact_fft.c /^double C_cl_nl_rescaled_nointerp(double l, int ni, int nj) \/\/galaxy clustering power spectrum of galaxy bins ni, nj$/;" f +C_cl_nl_rescaled_nointerp cosmo2D_exact_fft_cltomo.c /^double C_cl_nl_rescaled_nointerp(double l, int ni, int nj) \/\/galaxy clustering power spectrum of galaxy bins ni, nj$/;" f +C_cl_non_Limber cosmo2D_exact.c /^double C_cl_non_Limber(int l, int ni, int nj){ \/\/includes RSD too!$/;" f +C_cl_tomo cosmo2D_fourier.c /^double C_cl_tomo(double l, int ni, int nj) \/\/galaxy clustering power spectrum of galaxies in bins ni, nj$/;" f +C_cl_tomo_nointerp cosmo2D_fourier.c /^double C_cl_tomo_nointerp(double l, int ni, int nj) \/\/galaxy clustering power spectrum of galaxy bins ni, nj$/;" f +C_gI_JB_nointerp IA.c /^double C_gI_JB_nointerp(double s, int ni, int nj)$/;" f +C_gI_lin_nointerp IA.c /^double C_gI_lin_nointerp(double s, int ni, int nj)$/;" f +C_gI_nointerp IA.c /^double C_gI_nointerp(double s, int ni, int nj)$/;" f +C_ggl_IA IA.c /^double C_ggl_IA(double s, int nl, int ns)$/;" f +C_ggl_IA_tab IA.c /^double C_ggl_IA_tab(double l, int ni, int nj) \/\/G-G lensing power spectrum, lens bin ni, source bin nj$/;" f +C_ggl_TATT cosmo2D_fullsky_TATT.c /^double C_ggl_TATT(double l, int nl, int ns)$/;" f +C_ggl_TATT_tab cosmo2D_fullsky_TATT.c /^double C_ggl_TATT_tab(double l, int ni, int nj) \/\/G-G lensing power spectrum, lens bin ni, source bin nj$/;" f +C_gk CMBxLSS_fourier.c /^double C_gk(double l, int ni)$/;" f +C_gk_nointerp CMBxLSS_fourier.c /^double C_gk_nointerp(double l, int nl)$/;" f +C_gk_wrapper CMBxLSS_real.c /^double C_gk_wrapper(double l,int ni, int nj){$/;" f +C_gl_HOD_tomo cosmo2D_fourier.c /^double C_gl_HOD_tomo(double l, int ni, int nj) \/\/G-G lensing power spectrum, lens bin ni, source bin nj$/;" f +C_gl_lin_IA_nointerp cosmo2D_exact.c /^double C_gl_lin_IA_nointerp(double l, int ni, int nj) \/\/galaxy clustering power spectrum of galaxy bins ni, nj$/;" f +C_gl_lin_nointerp cosmo2D_exact.c /^double C_gl_lin_nointerp(double l, int ni, int nj) \/\/galaxy clustering power spectrum of galaxy bins ni, nj$/;" f +C_gl_lin_nointerp cosmo2D_exact_fft_optimize.c /^double C_gl_lin_nointerp(double l, int ni, int nj) \/\/galaxy clustering power spectrum of galaxy bins ni, nj$/;" f +C_gl_lin_nointerp_IA cosmo2D_exact_fft_optimize.c /^double C_gl_lin_nointerp_IA(double l, int ni, int nj) \/\/galaxy clustering power spectrum of galaxy bins ni, nj$/;" f +C_gl_mixed cosmo2D_exact_fft_optimize.c /^void C_gl_mixed(int L, int LMAX, int nl, int ns, double *Cl, double dev, double tolerance) {$/;" f +C_gl_non_Limber cosmo2D_exact.c /^double C_gl_non_Limber(double l, int ni, int nj){ \/\/includes RSD too!$/;" f +C_gl_tomo cosmo2D_fourier.c /^double C_gl_tomo(double l, int ni, int nj) \/\/G-G lensing power spectrum, lens bin ni, source bin nj$/;" f +C_gl_tomo_HOD_sys like_fourier_HOD.c /^double C_gl_tomo_HOD_sys(double ell,int zl,int zs)$/;" f +C_gl_tomo_all covariances_real.c /^double C_gl_tomo_all(double l, int ni, int nj) \/\/slower version of G-G lensing power spectrum, lens bin ni, source bin nj - tabulated for all lens-source combinations without overlap criterion$/;" f +C_gl_tomo_all covariances_real_binned.c /^double C_gl_tomo_all(double l, int ni, int nj) \/\/slower version of G-G lensing power spectrum, lens bin ni, source bin nj - tabulated for all lens-source combinations without overlap criterion$/;" f +C_gl_tomo_all covariances_real_binned_fullsky.c /^double C_gl_tomo_all(double l, int ni, int nj) \/\/slower version of G-G lensing power spectrum, lens bin ni, source bin nj - tabulated for all lens-source combinations without overlap criterion$/;" f +C_gl_tomo_nointerp cosmo2D_fourier.c /^double C_gl_tomo_nointerp(double l, int ni, int nj) \/\/G-G lensing power spectrum, lens bin ni, source bin nj$/;" f +C_gl_tomo_sys like_fourier.c /^double C_gl_tomo_sys(double ell,int zl,int zs)$/;" f +C_gl_withIA_non_Limber cosmo2D_exact.c /^double C_gl_withIA_non_Limber(double l, int ni, int nj){ \/\/includes RSD too!$/;" f +C_kk CMBxLSS_fourier.c /^double C_kk(double l)$/;" f +C_kk_nointerp CMBxLSS_fourier.c /^double C_kk_nointerp(double l){$/;" f +C_ks CMBxLSS_fourier.c /^double C_ks(double l, int ni)$/;" f +C_ks_IA CMBxLSS_fourier.c /^double C_ks_IA(double s, int ni)$/;" f +C_ks_nointerp CMBxLSS_fourier.c /^double C_ks_nointerp(double l, int ns) {$/;" f +C_ks_wrapper CMBxLSS_real.c /^double C_ks_wrapper(double l,int ni, int nj){$/;" f +C_magnification_magnification magnification.c /^double C_magnification_magnification(double s) $/;" f +C_magnification_magnification_tomo magnification.c /^double C_magnification_magnification_tomo(double s, int ni, int nj) \/\/shear tomography power spectra$/;" f +C_pos_mag magnification.c /^double C_pos_mag(double s) $/;" f +C_pos_mag_tomo magnification.c /^double C_pos_mag_tomo(double s, int ni, int nj) \/\/G-G lensing power spectrum, lens bin ni, source bin nj$/;" f +C_shear_mag magnification.c /^double C_shear_mag(double s) $/;" f +C_shear_mag_tomo magnification.c /^double C_shear_mag_tomo(double s, int ni, int nj) \/\/shear magnification tomography power spectra$/;" f +C_shear_shear_IA IA.c /^double C_shear_shear_IA(double s, int ni, int nj)$/;" f +C_shear_shear_IA_tab IA.c /^double C_shear_shear_IA_tab(double l, int ni, int nj) \/\/shear power spectrum of source galaxies in bins ni, nj$/;" f +C_shear_tomo cosmo2D_fourier.c /^double C_shear_tomo(double l, int ni, int nj) \/\/shear power spectrum of source galaxies in bins ni, nj$/;" f +C_shear_tomo_nointerp cosmo2D_fourier.c /^double C_shear_tomo_nointerp(double l, int ni, int nj) \/\/shear tomography power spectra of source galaxy bins ni, nj$/;" f +C_shear_tomo_sys like_fourier.c /^double C_shear_tomo_sys(double ell, int z1, int z2)$/;" f +C_shear_tomo_sys like_fourier_HOD.c /^double C_shear_tomo_sys(double ell, int z1, int z2)$/;" f +C_survey_window covariances_3D.c /^double C_survey_window(int l){$/;" f +C_tomo_pointer cosmo2D_exact.c /^typedef double (*C_tomo_pointer)(double l, int n1, int n2);$/;" t file: +C_tomo_pointer cosmo2D_fullsky.c /^typedef double (*C_tomo_pointer)(double l, int n1, int n2);$/;" t file: +C_tomo_pointer cosmo2D_real.c /^typedef double (*C_tomo_pointer)(double l, int n1, int n2);$/;" t file: +Cluster structs.c /^clusterpara Cluster = {.model = "default"};$/;" v +Cmb structs.c /^}Cmb;$/;" t typeref:struct:__anon14 file: +DATA_FILE structs.c /^ char DATA_FILE[500];$/;" m struct:__anon9 file: +DA_ref GRS.c /^ double DA_ref[10];$/;" m struct:__anon7 file: +DA_ref structs.c /^ double DA_ref[10];$/;" m struct:__anon25 file: +DBLIMFV1618_DESdepth baryons2.h /^ static double DBLIMFV1618_DESdepth[100][11]={{0.9955844, 0.9960998, 0.9965749, 0.9971625, 0.997761, 0.9984067, 0.9990535, 0.9994733, 0.999825, 1.000117, 1.000355}{0.9922675, 0.9930631, 0.9938424, 0.9948373, 0.9956659, 0.9965894, 0.9975415, 0.9983624, 0.9990277, 0.9994947, 0.9998518}{0.9886578, 0.9894049, 0.9904721, 0.991601, 0.9929301, 0.994411, 0.9958176, 0.9969436, 0.9979042, 0.9986736, 0.99926}{0.9847318, 0.9855671, 0.9868389, 0.9884524, 0.989842, 0.9915916, 0.9935922, 0.99528, 0.9966298, 0.9976365, 0.9984485}{0.980311, 0.9814526, 0.9830079, 0.9843886, 0.9861742, 0.9884957, 0.9908428, 0.9929679, 0.9948179, 0.9963566, 0.9975241}{0.9764134, 0.9771034, 0.9786551, 0.9804935, 0.9826178, 0.9853975, 0.988396, 0.9910931, 0.9932788, 0.9951406, 0.9965887}{0.9728339, 0.973288, 0.9750771, 0.9766563, 0.9789509, 0.9818696, 0.9852199, 0.9883611, 0.991194, 0.9935994, 0.9953941}{0.9679727, 0.9682349, 0.9697239, 0.9715005, 0.9742285, 0.9781844, 0.9823919, 0.986103, 0.9893109, 0.9920878, 0.9942599}{0.963326, 0.9636855, 0.9654144, 0.9670015, 0.9698057, 0.9738365, 0.9785986, 0.9829725, 0.9869052, 0.9902274, 0.9927868}{0.958617, 0.9582409, 0.9604055, 0.9620948, 0.9647286, 0.969221, 0.9750377, 0.9798319, 0.9842402, 0.9881858, 0.9913752}{0.9551231, 0.9555516, 0.9575387, 0.9584966, 0.9605181, 0.9651654, 0.9711318, 0.9765881, 0.9816515, 0.9860552, 0.9896391}{0.9538386, 0.9528792, 0.9538054, 0.953625, 0.955694, 0.9611013, 0.9672989, 0.9730948, 0.9786531, 0.9839014, 0.9880988}{0.9512626, 0.9495854, 0.9500124, 0.9492055, 0.9512029, 0.9566908, 0.9633507, 0.9699532, 0.9760884, 0.9818304, 0.9864793}{0.9491332, 0.9470204, 0.9461399, 0.9443978, 0.946131, 0.951857, 0.959008, 0.9660971, 0.9730077, 0.9795004, 0.9846447}{0.946289, 0.9438106, 0.9421062, 0.9398676, 0.9410044, 0.9472706, 0.9550122, 0.9627629, 0.9700055, 0.977063, 0.9828314}{0.9436782, 0.9402078, 0.9380014, 0.9355512, 0.9368748, 0.9429674, 0.9508077, 0.9588921, 0.9670627, 0.9747368, 0.9808091}{0.9402291, 0.935493, 0.9333213, 0.9302302, 0.9319584, 0.9396206, 0.9477297, 0.95596, 0.9641792, 0.9721877, 0.9789075}{0.9401049, 0.9334436, 0.9308895, 0.9267183, 0.9281619, 0.9352784, 0.9436096, 0.9521897, 0.9611327, 0.9697285, 0.9769404}{0.9387906, 0.9313598, 0.9281709, 0.9235747, 0.9247889, 0.9321421, 0.9403584, 0.9490645, 0.9581861, 0.9673232, 0.9750712}{0.9371147, 0.9295512, 0.9253938, 0.9202126, 0.920907, 0.9279439, 0.9366936, 0.9458889, 0.95571, 0.965273, 0.9735544}{0.935437, 0.9272289, 0.9217355, 0.915966, 0.9168872, 0.9235832, 0.9324595, 0.9417621, 0.9518031, 0.9623441, 0.9713201}{0.9324077, 0.9243745, 0.9170064, 0.9106709, 0.9121844, 0.9189491, 0.9278263, 0.9377555, 0.9486857, 0.9600431, 0.9693517}{0.9303783, 0.9211518, 0.9127935, 0.9064958, 0.9077307, 0.9143751, 0.9242842, 0.9347957, 0.9458134, 0.9572942, 0.9669808}{0.928306, 0.9173496, 0.9099241, 0.9033526, 0.9048338, 0.912036, 0.9219068, 0.9319006, 0.9425223, 0.9547158, 0.9651926}{0.9270702, 0.9140351, 0.9078047, 0.9009419, 0.9020504, 0.9093781, 0.918168, 0.9278574, 0.939519, 0.9526095, 0.9636299}{0.9260842, 0.9119551, 0.9060824, 0.8974094, 0.8989711, 0.9059992, 0.9146209, 0.9248372, 0.9369688, 0.950238, 0.9616684}{0.9256683, 0.9102669, 0.9030377, 0.8945682, 0.8961605, 0.9028118, 0.9120023, 0.9222567, 0.9345101, 0.9482178, 0.9599146}{0.9227927, 0.9077191, 0.8998419, 0.8917967, 0.8920851, 0.8987947, 0.9083388, 0.9192192, 0.9322057, 0.9464363, 0.9585274}{0.9202546, 0.9048302, 0.8955607, 0.8892403, 0.8902779, 0.8965721, 0.9059191, 0.9165387, 0.9294633, 0.9439645, 0.9567463}{0.915959, 0.9008638, 0.8937619, 0.8867069, 0.8864673, 0.8928097, 0.9036952, 0.9148631, 0.9276178, 0.9423075, 0.9553307}{0.9121354, 0.9001352, 0.891205, 0.8821687, 0.8841225, 0.8908096, 0.9004036, 0.9108275, 0.9237545, 0.9398978, 0.9535091}{0.9114716, 0.8973513, 0.8896719, 0.8819262, 0.8830465, 0.887896, 0.8972732, 0.908592, 0.922487, 0.9384277, 0.9522624}{0.909157, 0.8940289, 0.886738, 0.8774672, 0.8793958, 0.8853946, 0.8950632, 0.9067203, 0.9207982, 0.9367772, 0.9510452}{0.9069455, 0.8926413, 0.8852812, 0.8750364, 0.8764897, 0.8819767, 0.8917696, 0.9042975, 0.9190062, 0.9357212, 0.9499736}{0.9068492, 0.8886185, 0.8837618, 0.8739177, 0.8742, 0.8792702, 0.890115, 0.9027263, 0.9176816, 0.9339272, 0.9481055}{0.9061849, 0.8868313, 0.8807101, 0.8701744, 0.8705721, 0.8769085, 0.8886343, 0.9015411, 0.9159853, 0.9324459, 0.9475689}{0.9031967, 0.8851607, 0.8802786, 0.8665223, 0.8680391, 0.8747694, 0.8866827, 0.8994605, 0.9140859, 0.9306654, 0.9462493}{0.9020141, 0.8824463, 0.8769046, 0.8655578, 0.8670794, 0.8729148, 0.8845852, 0.8969112, 0.9110979, 0.9287666, 0.9446312}{0.8981856, 0.880712, 0.8751719, 0.8628911, 0.8638866, 0.871539, 0.8830488, 0.8948717, 0.9091728, 0.9272567, 0.9434015}{0.8959426, 0.8807256, 0.8699999, 0.8594585, 0.8642123, 0.8679192, 0.8802763, 0.8926815, 0.9076506, 0.9269617, 0.9437135}{0.8926835, 0.8774565, 0.8704504, 0.8569182, 0.8604346, 0.8663957, 0.8786105, 0.8910162, 0.9068521, 0.9252422, 0.9421122}{0.8915833, 0.8780648, 0.8691643, 0.854061, 0.8581613, 0.8644805, 0.8763059, 0.8896711, 0.9053876, 0.9243165, 0.9412614}{0.8927218, 0.8788881, 0.8670695, 0.8526728, 0.8563203, 0.86165, 0.8746434, 0.888715, 0.9047397, 0.9241516, 0.9415444}{0.8915595, 0.8743222, 0.866464, 0.853481, 0.856097, 0.8603081, 0.8735927, 0.886787, 0.9023413, 0.921638, 0.9399549}{0.8879992, 0.8722959, 0.8636491, 0.8507207, 0.8549387, 0.8576908, 0.870829, 0.885008, 0.9025374, 0.9214735, 0.9402183}{0.8877425, 0.8718845, 0.8624849, 0.849845, 0.8531854, 0.8569905, 0.8699589, 0.8850666, 0.9014624, 0.9207403, 0.9396014}{0.8883965, 0.8705365, 0.862052, 0.8485945, 0.8525098, 0.8573473, 0.8698186, 0.8834674, 0.9002948, 0.9195989, 0.9385421}{0.8863439, 0.869663, 0.86117, 0.8478339, 0.8521708, 0.8571615, 0.8681462, 0.8824056, 0.8994113, 0.9188886, 0.9379534}{0.8802031, 0.8650825, 0.8571878, 0.8450302, 0.8482592, 0.8555065, 0.8667893, 0.8815864, 0.8988582, 0.9178376, 0.9371732}{0.8770977, 0.8658527, 0.8564627, 0.8425134, 0.8467321, 0.8546281, 0.8663895, 0.8812413, 0.8972299, 0.9171067, 0.9367172}{0.878009, 0.8652233, 0.8559735, 0.8420416, 0.8463448, 0.8536286, 0.8656577, 0.8793407, 0.8973407, 0.9165085, 0.9367111}{0.8813164, 0.8632066, 0.8560477, 0.8416157, 0.8455368, 0.8522827, 0.863963, 0.8793784, 0.8971503, 0.916183, 0.9370907}{0.8805203, 0.8624783, 0.8556902, 0.8387645, 0.8425457, 0.8511208, 0.8618645, 0.8781581, 0.8966005, 0.9162742, 0.937522}{0.8777952, 0.8609314, 0.854124, 0.8372545, 0.8426774, 0.8496381, 0.8623479, 0.8785055, 0.8949098, 0.9159758, 0.9365223}{0.876193, 0.8610179, 0.853313, 0.8393456, 0.8421815, 0.8488034, 0.8627096, 0.8777389, 0.8943898, 0.9158987, 0.9371131}{0.8747671, 0.8568692, 0.8528209, 0.839048, 0.8412877, 0.8483826, 0.8624651, 0.8777087, 0.8940525, 0.91604, 0.9377235}{0.8722041, 0.8550582, 0.8505596, 0.8374225, 0.8399734, 0.8480649, 0.863887, 0.8774578, 0.8934193, 0.9153852, 0.9367671}{0.8677214, 0.8560732, 0.8486656, 0.8348283, 0.8396434, 0.8478083, 0.8623094, 0.8767438, 0.8942451, 0.9163999, 0.9369343}{0.8700929, 0.8536926, 0.8493626, 0.8359515, 0.8386736, 0.8479403, 0.8613394, 0.8759353, 0.8943656, 0.915414, 0.9376067}{0.8701296, 0.851905, 0.8492775, 0.8332287, 0.8369319, 0.846583, 0.8594836, 0.8751061, 0.8942097, 0.9154086, 0.9377022}{0.8673704, 0.8495802, 0.8476468, 0.8312342, 0.835458, 0.8446999, 0.8589654, 0.8755949, 0.8938939, 0.9154443, 0.9373931}{0.8690551, 0.852522, 0.8478944, 0.8330454, 0.8379877, 0.8464057, 0.8600545, 0.8752148, 0.8931317, 0.9158644, 0.9380164}{0.8712193, 0.8538068, 0.8477909, 0.8336645, 0.8381783, 0.8483309, 0.8597359, 0.8747796, 0.894895, 0.9167998, 0.9369519}{0.8688876, 0.8508712, 0.8473989, 0.8325073, 0.8368238, 0.8456564, 0.8578965, 0.8757631, 0.8945417, 0.9155596, 0.9368791}{0.8653711, 0.8485168, 0.8462271, 0.8316125, 0.835405, 0.8433803, 0.8593053, 0.8757022, 0.8933347, 0.9154987, 0.937497}{0.8641019, 0.8474544, 0.8452654, 0.8326096, 0.8366208, 0.8456251, 0.8599899, 0.8751762, 0.8935458, 0.9165477, 0.9383777}{0.8656234, 0.8472067, 0.843401, 0.8330863, 0.8353278, 0.8469983, 0.8603407, 0.8755885, 0.8944899, 0.9175424, 0.9397142}{0.8606418, 0.8478223, 0.8427042, 0.8324786, 0.8356182, 0.8464294, 0.8603604, 0.8763789, 0.8951638, 0.9165765, 0.9399019}{0.8580248, 0.8452845, 0.8416962, 0.8324872, 0.8351641, 0.8466486, 0.8608696, 0.8759877, 0.8946287, 0.9178001, 0.9407353}{0.8587218, 0.8430849, 0.8418817, 0.8321524, 0.8352527, 0.847495, 0.8597728, 0.876396, 0.8957851, 0.9196846, 0.9421001}{0.8587662, 0.843283, 0.8443722, 0.8322019, 0.8355825, 0.8468347, 0.8610553, 0.8767508, 0.8959606, 0.9200822, 0.942636}{0.8597239, 0.8460516, 0.8411794, 0.8311949, 0.834699, 0.8464301, 0.8612385, 0.8771028, 0.8963025, 0.9207797, 0.94363}{0.8596965, 0.845625, 0.8408308, 0.8302382, 0.83568, 0.8457281, 0.8613516, 0.8773932, 0.8967945, 0.9208035, 0.9434556}{0.8590015, 0.8441738, 0.8410309, 0.8299281, 0.8352509, 0.8455399, 0.8619267, 0.8781003, 0.8963817, 0.9207116, 0.9434003}{0.8581641, 0.8452023, 0.8412846, 0.8284247, 0.8341444, 0.8464989, 0.8628973, 0.8778867, 0.8967191, 0.921639, 0.9444856}{0.8584682, 0.8436317, 0.8421506, 0.8287323, 0.8340816, 0.8485961, 0.8634716, 0.8787992, 0.8982895, 0.923312, 0.9465266}{0.8609338, 0.8441477, 0.841135, 0.8302818, 0.8345128, 0.8500937, 0.8649952, 0.8802009, 0.8984734, 0.9241278, 0.9469371}{0.8597925, 0.8430347, 0.8422167, 0.8305557, 0.8362025, 0.851251, 0.8660977, 0.8802343, 0.8993082, 0.9252982, 0.9475864}{0.8573281, 0.842707, 0.8427332, 0.8321334, 0.83786, 0.8518176, 0.8659608, 0.8811379, 0.9006962, 0.9262862, 0.9484486}{0.8602611, 0.8450314, 0.8421311, 0.8334573, 0.8383657, 0.8512715, 0.8668186, 0.881989, 0.9009701, 0.9260631, 0.9486047}{0.8567769, 0.8447501, 0.8433352, 0.8330852, 0.8378529, 0.850062, 0.8663199, 0.8828638, 0.9020641, 0.9258499, 0.9502527}{0.8532117, 0.8436719, 0.844521, 0.8327272, 0.8373528, 0.8488703, 0.8672066, 0.8839015, 0.9026753, 0.9256259, 0.9518937}{0.851537, 0.8421556, 0.8444687, 0.8320703, 0.8363244, 0.8487939, 0.8684765, 0.8839126, 0.9038385, 0.9270855, 0.9533696}{0.8524644, 0.8418261, 0.844626, 0.8309704, 0.8349382, 0.8502604, 0.8678862, 0.8840288, 0.9066037, 0.9287112, 0.95463}{0.8533726, 0.8441261, 0.8443492, 0.8299888, 0.8344807, 0.8517234, 0.8670582, 0.8864981, 0.9082999, 0.9301788, 0.9558534}{0.854215, 0.8453305, 0.8439982, 0.8319405, 0.8370037, 0.8537057, 0.8687397, 0.8889613, 0.9098107, 0.9327383, 0.9571454}{0.8550178, 0.8439289, 0.8437689, 0.8342414, 0.8397514, 0.855716, 0.8707014, 0.8906045, 0.9115594, 0.935473, 0.9584123}{0.8547256, 0.8429368, 0.8447719, 0.8352076, 0.8414893, 0.8574214, 0.8724622, 0.8924248, 0.9127834, 0.9364394, 0.959658}{0.8517858, 0.8430462, 0.8453479, 0.8334217, 0.8425893, 0.8584931, 0.8747882, 0.8941357, 0.9111869, 0.9355818, 0.960933}{0.8489253, 0.8399635, 0.8454505, 0.8335911, 0.8436386, 0.8595505, 0.8773431, 0.8929462, 0.9105072, 0.9351985, 0.9621935}{0.851006, 0.8394951, 0.8453005, 0.8371611, 0.8439659, 0.8598139, 0.8779405, 0.8927874, 0.9107578, 0.9372807, 0.9633824}{0.8549744, 0.8413572, 0.8456413, 0.8409339, 0.8440683, 0.8597703, 0.8781467, 0.8933327, 0.911505, 0.9397311, 0.964523}{0.8584351, 0.8430425, 0.8475623, 0.8409781, 0.8441501, 0.8600213, 0.8786191, 0.8939897, 0.9133321, 0.9411742, 0.9657064}{0.8592538, 0.8409447, 0.8478702, 0.8406529, 0.8441682, 0.8618561, 0.8797415, 0.8946377, 0.9143056, 0.9414843, 0.9672431}{0.8600558, 0.8413173, 0.8481174, 0.8405378, 0.8443508, 0.8636294, 0.8804015, 0.8955266, 0.9150995, 0.9418963, 0.9687436}{0.8600959, 0.8443014, 0.8481619, 0.8397845, 0.8456442, 0.8651223, 0.8815423, 0.8966487, 0.9167482, 0.9428306, 0.9703945}{0.8596176, 0.8469274, 0.8484116, 0.8386247, 0.8466656, 0.8664336, 0.8826751, 0.8983519, 0.9189626, 0.9434185, 0.9721469}{0.8591924, 0.847807, 0.8479841, 0.8395276, 0.8476919, 0.8676774, 0.88374, 0.9003064, 0.9196001, 0.9445082, 0.9738706}{0.8606048, 0.8460313, 0.847613, 0.8413912, 0.8476883, 0.8668312, 0.8830889, 0.8999325, 0.9208469, 0.9457022, 0.9755158}{0.8620017, 0.8451488, 0.8472498, 0.8423672, 0.8476848, 0.8659955, 0.8829683, 0.9010431, 0.9220717, 0.9468638, 0.977116}};$/;" v +DBLIMFV1618_LSSTdepth baryons2.h /^ static double DBLIMFV1618_LSSTdepth[100][11]={{0.9955844, 0.9964964, 0.9975539, 0.9985496, 0.9994733, 1.000058, 1.0004, 0.9876062, 1.000675, 1.0007, 1.000753}{0.9922675, 0.9935898, 0.9951578, 0.9968793, 0.9983624, 0.9993728, 0.9999633, 0.9949814, 1.000439, 1.000511, 1.000592}{0.9886578, 0.9902096, 0.9923142, 0.9947094, 0.9969436, 0.9985455, 0.9993933, 0.9845381, 1.000167, 1.000301, 1.000429}{0.9847318, 0.9864751, 0.9890178, 0.9921524, 0.99528, 0.9973948, 0.9987294, 0.9945826, 0.9998525, 1.000069, 1.000242}{0.980311, 0.9826038, 0.9852211, 0.9889979, 0.9929679, 0.9961196, 0.9978015, 0.980241, 0.9994373, 0.9997484, 1.000014}{0.9764134, 0.9782651, 0.9815096, 0.986098, 0.9910931, 0.9947797, 0.9970272, 0.9859166, 0.9990649, 0.9994912, 0.9997961}{0.9728339, 0.9745431, 0.9775581, 0.9827589, 0.9883611, 0.9931594, 0.9958913, 0.9813331, 0.9985646, 0.9990967, 0.9995106}{0.9679727, 0.9693075, 0.9728368, 0.97908, 0.986103, 0.9916153, 0.9948632, 0.9771445, 0.9980586, 0.9987382, 0.9992249}{0.963326, 0.9649646, 0.9681144, 0.9750357, 0.9829725, 0.989571, 0.9935654, 0.9769236, 0.9975266, 0.9983412, 0.9989422}{0.958617, 0.9600502, 0.9634569, 0.9704042, 0.9798319, 0.9875311, 0.9922187, 0.9699741, 0.9968927, 0.9978956, 0.998626}{0.9551231, 0.9571294, 0.9590805, 0.9665634, 0.9765881, 0.9852301, 0.9906995, 0.9766001, 0.9961398, 0.9973513, 0.9982187}{0.9538386, 0.9536452, 0.9543487, 0.9623616, 0.9730948, 0.983087, 0.9891627, 0.9672736, 0.995469, 0.9968434, 0.9978621}{0.9512626, 0.9500988, 0.9497455, 0.9581695, 0.9699532, 0.9808322, 0.9878309, 0.9703272, 0.9948317, 0.9963664, 0.9974413}{0.9491332, 0.9465825, 0.9448057, 0.9533483, 0.9660971, 0.9784668, 0.9859957, 0.9649588, 0.9939514, 0.9956808, 0.9969773}{0.946289, 0.9427483, 0.939874, 0.9489443, 0.9627629, 0.9758911, 0.9844067, 0.9632881, 0.9931997, 0.9951759, 0.9965727}{0.9436782, 0.9387327, 0.9354733, 0.944867, 0.9588921, 0.973429, 0.9824528, 0.9598102, 0.9923355, 0.9945511, 0.9961761}{0.9402291, 0.9342747, 0.9304363, 0.9412654, 0.95596, 0.9708786, 0.9807322, 0.9562953, 0.9913796, 0.9938289, 0.9955591}{0.9401049, 0.9320027, 0.9267406, 0.9371492, 0.9521897, 0.9682215, 0.9789276, 0.9591313, 0.9906645, 0.9932752, 0.9952123}{0.9387906, 0.9292917, 0.9237649, 0.9337953, 0.9490645, 0.9658661, 0.9770847, 0.9524468, 0.9896072, 0.992493, 0.9946686}{0.9371147, 0.9271349, 0.9197377, 0.9298613, 0.9458889, 0.9636318, 0.975708, 0.9541976, 0.9888497, 0.9919606, 0.9942675}{0.935437, 0.9236704, 0.9158453, 0.9253543, 0.9417621, 0.9607034, 0.9735296, 0.9473007, 0.9878792, 0.9911844, 0.9937316}{0.9324077, 0.9193619, 0.9109908, 0.9205517, 0.9377555, 0.958428, 0.9715071, 0.9450121, 0.9867414, 0.990217, 0.9930311}{0.9303783, 0.9152606, 0.9064966, 0.9163693, 0.9347957, 0.9555523, 0.9694308, 0.9455919, 0.9857808, 0.9895322, 0.9926238}{0.928306, 0.9121118, 0.9036238, 0.9139829, 0.9319006, 0.9530804, 0.9675416, 0.9348488, 0.9849418, 0.9887319, 0.9919543}{0.9270702, 0.9099544, 0.9006465, 0.9111661, 0.9278574, 0.9506743, 0.9662594, 0.9413029, 0.9838927, 0.9879882, 0.9914423}{0.9260842, 0.9084124, 0.8977612, 0.9076222, 0.9248372, 0.948413, 0.9643636, 0.9386985, 0.9830817, 0.9874597, 0.9910254}{0.9256683, 0.9060172, 0.8946784, 0.9046456, 0.9222567, 0.9462199, 0.9627648, 0.9383828, 0.9822142, 0.9866801, 0.9904238}{0.9227927, 0.9028346, 0.8913756, 0.9006384, 0.9192192, 0.9443166, 0.9615178, 0.935835, 0.9814502, 0.9860094, 0.9898239}{0.9202546, 0.8979567, 0.8892748, 0.8984066, 0.9165387, 0.9418301, 0.9597442, 0.9337827, 0.9805277, 0.9853007, 0.9893384}{0.915959, 0.8959001, 0.8858684, 0.895007, 0.9148631, 0.9399562, 0.9585638, 0.9350322, 0.9794474, 0.9845212, 0.9886552}{0.9121354, 0.89394, 0.8826835, 0.8928628, 0.9108275, 0.9375632, 0.9566778, 0.9288836, 0.9785425, 0.9836227, 0.9880259}{0.9114716, 0.8916637, 0.8820988, 0.8898107, 0.908592, 0.9359496, 0.955689, 0.9286501, 0.9780087, 0.9830626, 0.9875922}{0.909157, 0.8889181, 0.8780498, 0.8871797, 0.9067203, 0.9344194, 0.9543912, 0.9281827, 0.9772126, 0.9824944, 0.9871782}{0.9069455, 0.8873619, 0.8752195, 0.8839748, 0.9042975, 0.9332419, 0.9533909, 0.9288923, 0.9766074, 0.9819563, 0.9867615}{0.9068492, 0.8853508, 0.8735902, 0.8812907, 0.9027263, 0.9314826, 0.9516627, 0.927522, 0.9759973, 0.9813714, 0.9863705}{0.9061849, 0.8825587, 0.8698266, 0.879245, 0.9015411, 0.9298627, 0.9512222, 0.9270758, 0.9754365, 0.9805879, 0.9856024}{0.9031967, 0.882681, 0.8667806, 0.8771975, 0.8994605, 0.9279364, 0.9500267, 0.9275433, 0.9746864, 0.9801484, 0.9853836}{0.9020141, 0.8793107, 0.865912, 0.8752556, 0.8969112, 0.9261062, 0.9485493, 0.9251382, 0.974051, 0.979467, 0.9847906}{0.8981856, 0.8777528, 0.8625893, 0.8738907, 0.8948717, 0.9243469, 0.947552, 0.9255949, 0.9735145, 0.979053, 0.9843172}{0.8959426, 0.8736191, 0.8615724, 0.8699895, 0.8926815, 0.9241726, 0.9477767, 0.9236599, 0.9729977, 0.9783617, 0.9838486}{0.8926835, 0.8722042, 0.8588519, 0.8688832, 0.8910162, 0.92241, 0.9458607, 0.9136247, 0.9726753, 0.9780379, 0.9836017}{0.8915833, 0.8733426, 0.8557892, 0.8667721, 0.8896711, 0.9213172, 0.9456698, 0.9194156, 0.9722815, 0.9777026, 0.9834547}{0.8927218, 0.8704982, 0.8544856, 0.8643086, 0.888715, 0.921075, 0.9455693, 0.9198602, 0.9717634, 0.9773464, 0.9831487}{0.8915595, 0.8692677, 0.8545884, 0.862946, 0.886787, 0.9185283, 0.9440737, 0.9230099, 0.9708269, 0.9759802, 0.9819661}{0.8879992, 0.8666718, 0.8529297, 0.8602384, 0.885008, 0.9182318, 0.9443349, 0.9130408, 0.9710008, 0.975751, 0.9817206}{0.8877425, 0.8648136, 0.8517248, 0.8596628, 0.8850666, 0.9173727, 0.9436412, 0.9183939, 0.970398, 0.9752083, 0.9817891}{0.8883965, 0.864469, 0.8502846, 0.859916, 0.8834674, 0.9161947, 0.9424973, 0.9209022, 0.9699606, 0.9752222, 0.9817975}{0.8863439, 0.8637031, 0.8499739, 0.8594117, 0.8824056, 0.9153679, 0.9420768, 0.9179317, 0.9702067, 0.9751993, 0.9814452}{0.8802031, 0.859688, 0.8465936, 0.8576258, 0.8815864, 0.914518, 0.941444, 0.9162782, 0.9700902, 0.9746539, 0.9813971}{0.8770977, 0.859279, 0.8443851, 0.8568958, 0.8812413, 0.9137149, 0.9411204, 0.909685, 0.9697319, 0.9745838, 0.9811489}{0.878009, 0.8583309, 0.843808, 0.8560877, 0.8793407, 0.9129626, 0.941221, 0.9116856, 0.9694556, 0.9743832, 0.9809027}{0.8813164, 0.8580914, 0.843278, 0.8546929, 0.8793784, 0.9124002, 0.9411448, 0.9166154, 0.9691208, 0.9742201, 0.9808453}{0.8805203, 0.8580805, 0.8402799, 0.853352, 0.8781581, 0.9124085, 0.9418908, 0.9163592, 0.9690263, 0.9747523, 0.9813415}{0.8777952, 0.8565455, 0.839666, 0.8516601, 0.8785055, 0.912228, 0.9407196, 0.9155007, 0.9692157, 0.9743573, 0.9806992}{0.876193, 0.8544719, 0.8405495, 0.8516365, 0.8777389, 0.9122392, 0.9413487, 0.9146357, 0.9696731, 0.9745132, 0.9803672}{0.8747671, 0.8534386, 0.8396716, 0.8512244, 0.8777087, 0.9120465, 0.9412401, 0.9167441, 0.9699931, 0.9741337, 0.9802157}{0.8722041, 0.8512458, 0.8379144, 0.8513386, 0.8774578, 0.9114003, 0.9403764, 0.9204995, 0.9697247, 0.9736957, 0.9800021}{0.8677214, 0.8499092, 0.8369166, 0.8509628, 0.8767438, 0.912441, 0.9404744, 0.9208694, 0.9701016, 0.9735695, 0.9800454}{0.8700929, 0.8496837, 0.8367602, 0.8508439, 0.8759353, 0.9117793, 0.9410732, 0.9214671, 0.9706028, 0.9739108, 0.9800489}{0.8701296, 0.8488589, 0.8342637, 0.8491495, 0.8751061, 0.9112518, 0.9416769, 0.9195969, 0.9708878, 0.9742745, 0.9803852}{0.8673704, 0.848756, 0.8326473, 0.847672, 0.8755949, 0.9113708, 0.9413992, 0.916041, 0.9710794, 0.9745816, 0.9808599}{0.8690551, 0.8490227, 0.835111, 0.8492795, 0.8752148, 0.9117853, 0.9417202, 0.9228708, 0.9713159, 0.9745234, 0.9806478}{0.8712193, 0.8488828, 0.8355214, 0.8512074, 0.8747796, 0.9127129, 0.9405881, 0.9204373, 0.971487, 0.9744877, 0.9802954}{0.8688876, 0.8477654, 0.8340923, 0.8475926, 0.8757631, 0.9119408, 0.9408478, 0.923563, 0.9713168, 0.9741505, 0.980184}{0.8653711, 0.8469047, 0.8330459, 0.8467518, 0.8757022, 0.9113506, 0.9423563, 0.9251137, 0.9716929, 0.9744781, 0.980457}{0.8641019, 0.8458255, 0.8342853, 0.8486433, 0.8751762, 0.9125247, 0.9429622, 0.9312145, 0.9728983, 0.9753744, 0.9811247}{0.8656234, 0.844315, 0.8334702, 0.8499525, 0.8755885, 0.9134901, 0.9438792, 0.9309713, 0.9732302, 0.97618, 0.981374}{0.8606418, 0.8435529, 0.8331102, 0.8490576, 0.8763789, 0.9125633, 0.9437586, 0.926278, 0.9733321, 0.9764325, 0.981583}{0.8580248, 0.8418031, 0.832988, 0.849747, 0.8759877, 0.9133545, 0.9454505, 0.92928, 0.9731016, 0.9768734, 0.9817964}{0.8587218, 0.8410227, 0.8324765, 0.8500405, 0.876396, 0.9154986, 0.9459215, 0.9298826, 0.9732183, 0.9772316, 0.9818062}{0.8587662, 0.8440396, 0.8330193, 0.8497611, 0.8767508, 0.915924, 0.9463655, 0.9222618, 0.9740096, 0.9768873, 0.9811572}{0.8597239, 0.8428865, 0.8321664, 0.849346, 0.8771028, 0.9166279, 0.9474537, 0.9254883, 0.9747477, 0.9784711, 0.9822612}{0.8596965, 0.8412097, 0.8321799, 0.8488446, 0.8773932, 0.9165626, 0.9474008, 0.9294714, 0.9747502, 0.9789968, 0.983116}{0.8590015, 0.8420577, 0.8321508, 0.8490259, 0.8781003, 0.9165738, 0.9474139, 0.9314648, 0.9754839, 0.9800003, 0.9840515}{0.8581641, 0.842805, 0.8306559, 0.8499077, 0.8778867, 0.9173605, 0.9485681, 0.9308449, 0.9772523, 0.9810661, 0.9852286}{0.8584682, 0.8434939, 0.8306051, 0.8519293, 0.8787992, 0.9189754, 0.9505511, 0.9320962, 0.9778285, 0.9812683, 0.9851222}{0.8609338, 0.8419928, 0.8312745, 0.8531595, 0.8802009, 0.919793, 0.950808, 0.9291105, 0.9782375, 0.9827113, 0.9855657}{0.8597925, 0.841816, 0.8320846, 0.8544011, 0.8802343, 0.9210515, 0.9514911, 0.9362289, 0.9793032, 0.9830904, 0.985226}{0.8573281, 0.8440689, 0.8342908, 0.8547669, 0.8811379, 0.9222157, 0.9521391, 0.9416932, 0.979978, 0.9828254, 0.9848064}{0.8602611, 0.8429208, 0.8350043, 0.854485, 0.881989, 0.9218425, 0.9526631, 0.9343993, 0.9805559, 0.9834922, 0.9861694}{0.8567769, 0.8426702, 0.8345876, 0.853192, 0.8828638, 0.9216574, 0.9544537, 0.9356159, 0.9821612, 0.9854006, 0.9871617}{0.8532117, 0.8437692, 0.8341929, 0.8518916, 0.8839015, 0.9214796, 0.955951, 0.9393842, 0.9837341, 0.9870048, 0.988111}{0.851537, 0.8456675, 0.8334168, 0.852885, 0.8839126, 0.922067, 0.9571769, 0.9445605, 0.9846129, 0.987681, 0.9886055}{0.8524644, 0.8460701, 0.8322346, 0.8544285, 0.8840288, 0.9236974, 0.958504, 0.9382298, 0.9848877, 0.9872124, 0.9884955}{0.8533726, 0.846181, 0.8311034, 0.855226, 0.8864981, 0.9252762, 0.9593322, 0.9367911, 0.9849328, 0.9868992, 0.9883872}{0.854215, 0.8448349, 0.8331916, 0.8569448, 0.8889613, 0.9278091, 0.9606193, 0.9356315, 0.9862351, 0.9882336, 0.9904874}{0.8550178, 0.8446216, 0.8355912, 0.8589914, 0.8906045, 0.9304651, 0.9615901, 0.9351448, 0.9878065, 0.9895709, 0.9928715}{0.8547256, 0.8432742, 0.8367022, 0.8605486, 0.8924248, 0.932116, 0.9620921, 0.9415744, 0.9891337, 0.9910205, 0.9946789}{0.8517858, 0.8427519, 0.8369669, 0.8616578, 0.8941357, 0.9313604, 0.9634909, 0.9429488, 0.9907417, 0.9927265, 0.9952631}{0.8489253, 0.8433064, 0.8379293, 0.8630512, 0.8929462, 0.9306267, 0.9653724, 0.9452162, 0.9922174, 0.9937494, 0.995835}{0.851006, 0.8451916, 0.8409718, 0.8636532, 0.8927874, 0.9321154, 0.9668291, 0.9466587, 0.9930477, 0.9949028, 0.9966308}{0.8549744, 0.845507, 0.8411016, 0.863567, 0.8933327, 0.9344586, 0.9679622, 0.9466351, 0.99369, 0.9956707, 0.9974855}{0.8584351, 0.8458352, 0.8411499, 0.8639235, 0.8939897, 0.9364938, 0.9688736, 0.9477748, 0.9943971, 0.9961368, 0.998402}{0.8592538, 0.8461742, 0.8410269, 0.8657847, 0.8946377, 0.936884, 0.9705233, 0.9477459, 0.9949546, 0.9961063, 0.9998183}{0.8600558, 0.8464665, 0.8410461, 0.8674686, 0.8955266, 0.9372591, 0.9721732, 0.9490261, 0.9954355, 0.9965909, 1.001206}{0.8600959, 0.8472568, 0.8403602, 0.8685508, 0.8966487, 0.9377649, 0.9739847, 0.9507411, 0.9967366, 0.9986476, 1.001547}{0.8596176, 0.8475001, 0.841355, 0.8699091, 0.8983519, 0.938363, 0.9758549, 0.9417518, 0.9989672, 1.000516, 1.001181}{0.8591924, 0.8477037, 0.8423429, 0.8710213, 0.9003064, 0.9389669, 0.977177, 0.9441416, 1.001073, 1.001391, 1.000882}{0.8606048, 0.8469562, 0.8434053, 0.8701063, 0.8999325, 0.9401755, 0.9789265, 0.9520442, 1.002162, 1.001586, 1.002855}{0.8620017, 0.8466281, 0.843459, 0.8692032, 0.9010431, 0.9413531, 0.9805075, 0.9629663, 1.003215, 1.002999, 1.004784}};$/;" v +DIFF_A structs.c /^ double DIFF_A; \/\/difference fucntion describing the scale dependent uncertainty in Pdelta for k>0.01$/;" m struct:__anon18 file: +DIFF_n structs.c /^ double DIFF_n; \/\/difference fucntion describing the constant uncertainty in Pdelta for k>0.01$/;" m struct:__anon18 file: +DeltaLin_LD covariances_3D.c /^double DeltaLin_LD(double logk, void * params)$/;" f +Delta_C_gl_reduced_shear_tomo reduced_shear.c /^double Delta_C_gl_reduced_shear_tomo(double l, int ni, int nj) \/\/G-G lensing power spectrum, lens bin ni, source bin nj$/;" f +Delta_C_reduced_shear_tomo reduced_shear.c /^double Delta_C_reduced_shear_tomo(double l, int ni, int nj) \/\/shear power spectrum of source galaxies in bins ni, nj$/;" f +Delta_C_shear_gl_shear_nointerp reduced_shear.c /^double Delta_C_shear_gl_shear_nointerp(double l, int nl, int ns){$/;" f +Delta_C_shear_reduced_shear_nointerp reduced_shear.c /^double Delta_C_shear_reduced_shear_nointerp(double l, int ni, int nj){$/;" f +Delta_LD covariances_3D.c /^double Delta_LD(double logk,void * params)$/;" f +Delta_L_wiggle cosmo3D.c /^double Delta_L_wiggle(double k)$/;" f +Delta_L_wiggle cosmo3D_april7.c /^double Delta_L_wiggle(double k)$/;" f +Delta_NL_Halofit cosmo3D.c /^double Delta_NL_Halofit(double k_NL, double a)$/;" f +Delta_NL_Halofit cosmo3D_april7.c /^double Delta_NL_Halofit(double k_NL, double a)$/;" f +Delta_NL_emu cosmo3D.c /^double Delta_NL_emu(double k_NL,double a)$/;" f +Delta_NL_emu cosmo3D_april7.c /^double Delta_NL_emu(double k_NL,double a)$/;" f +Delta_NL_emu_only cosmo3D.c /^double Delta_NL_emu_only(double k_NL,double a)$/;" f +Delta_NL_emu_only cosmo3D_april7.c /^double Delta_NL_emu_only(double k_NL,double a)$/;" f +Delta_P_reduced_shear reduced_shear.c /^double Delta_P_reduced_shear(double k1, double a){$/;" f +Delta_P_reduced_shear_tab reduced_shear.c /^double Delta_P_reduced_shear_tab(double k, double a){$/;" f +Delta_halofit cosmo3D.c /^void Delta_halofit(double **table_P_NL,double logkmin, double logkmax, double dk, double da)$/;" f +Delta_halofit cosmo3D_april7.c /^void Delta_halofit(double **table_P_NL,double logkmin, double logkmax, double dk, double da)$/;" f +Delta_w_gamma_t_reduced_shear_tomo reduced_shear.c /^double Delta_w_gamma_t_reduced_shear_tomo(double theta,int ni, int nj) \/\/G-G lensing, lens bin ni, source bin nj$/;" f +Delta_xi_pm_reduced_shear_tomo reduced_shear.c /^double Delta_xi_pm_reduced_shear_tomo(int pm, double theta, int ni, int nj) \/\/shear tomography correlation functions$/;" f +EXIT_MISSING_FILE basics.c 20;" d file: +FILE_logPkR structs.c /^ char FILE_logPkR[500];$/;" m struct:__anon26 file: +FMAX basics.c 25;" d file: +FMIN basics.c 26;" d file: +FPT structs.c /^FPTpara FPT ={.k_min = 1.e-5, .k_max =1.e+3, .N = 800, .N_per_dec = 100, .N_AB = 7,.N_IA = 10};$/;" v +FPT_bias_interface pt.c /^void FPT_bias_interface(void){$/;" f +FPT_input pt.c /^void FPT_input(double k[FPT.N], double P[FPT.N]){$/;" f +FPT_input pt_cfastpt.c /^void FPT_input(double k[FPT.N], double P[FPT.N]){$/;" f +FPTpara structs.c /^}FPTpara;$/;" t typeref:struct:__anon20 file: +FREE_ARG basics.c 17;" d file: +G02 HOD.c /^double G02 (double k, double a, int nz){\/\/needs to be devided by ngal(nz, a)^2$/;" f +G02_rm redmagic.c /^double G02_rm (double k, double a){\/\/needs to be devided by ngal(nz, a)^2$/;" f +G11 HOD.c /^double G11 (double k, double a, int nz){ \/\/needs to be devided by ngal(nz, a)$/;" f +GM02 HOD.c /^double GM02 (double k, double a, int nz){\/\/needs to be devided by ngal(nz, a)$/;" f +GM02_rm redmagic.c /^double GM02_rm (double k, double a){ \/\/needs to be devided by ngal_rm(nz, a)$/;" f +GRS GRS.c /^GRSpara GRS;$/;" v +GRS structs.c /^ int GRS;$/;" m struct:__anon9 file: +GRS_gal GRS.c /^GRS_galaxy_para GRS_gal;$/;" v +GRS_galaxy_para GRS.c /^} GRS_galaxy_para;$/;" t typeref:struct:__anon8 file: +GRSpara GRS.c /^} GRSpara;$/;" t typeref:struct:__anon7 file: +GRSpara_mt structs.c /^} GRSpara_mt;$/;" t typeref:struct:__anon25 file: +G_taper cosmo2D_exact.c /^double G_taper(double k){$/;" f +G_taper cosmo2D_exact_fft.c /^double G_taper(double k){$/;" f +G_taper cosmo2D_exact_fft_cltomo.c /^double G_taper(double k){$/;" f +G_taper cosmo2D_exact_fft_optimize.c /^double G_taper(double k){$/;" f +HOD_FILE structs.c /^ char HOD_FILE[500];$/;" m struct:__anon16 file: +HOD_rm structs.c /^ double HOD_rm[5][2];$/;" m struct:__anon23 file: +HSV_shear_shear_tomo covariances_wl.c /^double HSV_shear_shear_tomo(double l1, double l2,int z1, int z2, int z3, int z4){$/;" f +H_ref GRS.c /^ double H_ref[10];$/;" m struct:__anon7 file: +H_ref structs.c /^ double H_ref[10];$/;" m struct:__anon25 file: +Halofit cosmo3D.c /^double Halofit(double k, double amp, double omm, double omv,double w_z, double R_NL, double neff,double Curv, double P_delta_Lin)$/;" f +Halofit cosmo3D_april7.c /^double Halofit(double k, double amp, double omm, double omv,double w_z, double R_NL, double neff,double Curv, double P_delta_Lin)$/;" f +I0j halo.c /^double I0j (int j, double k1, double k2, double k3, double k4,double a){$/;" f +I12_SSC halo.c /^double I12_SSC (double k,double a){\/\/one-halo term contribution to super sample covariance$/;" f +I12_SSC_cm covariances_cluster.c /^double I12_SSC_cm(double k, double a, int nz, int nN){$/;" f +I12_SSC_gg covariances_fourier_HOD.c /^double I12_SSC_gg (double k,double a){\/\/one-halo term contribution to super sample covariance$/;" f +I12_SSC_gm covariances_fourier_HOD.c /^double I12_SSC_gm (double k,double a){\/\/one-halo term contribution to super sample covariance$/;" f +I1j halo.c /^double I1j (int j, double k1, double k2, double k3,double a){$/;" f +IA structs.c /^ int IA;$/;" m struct:__anon9 file: +IA_JB_terms IA.h /^static double IA_JB_terms[500][13] = {{1.000000000E-03, 3.896222290E+03, 6.433348972E-04, -8.002063134E-02, -2.322371876E-01, 1.911325752E-01, -5.722297802E-02, 1.360370548E-01, -4.858843362E-01, -4.859947878E-01, 2.055606300E+03, 2.055606459E+03, 3.896226186E+03},$/;" v +INV_FILE structs.c /^ char INV_FILE[500]; $/;" m struct:__anon9 file: +I_11 halo.c /^double I_11 (double k,double a){\/\/look-up table for I11 integral$/;" f +J0_binned covariances_real_binned.c /^double J0_binned(double l, double tmin, double tmax){$/;" f +J0_binned covariances_real_binned_fullsky.c /^double J0_binned(double l, double tmin, double tmax){$/;" f +J2_binned covariances_real_binned.c /^double J2_binned(double l, double tmin, double tmax){$/;" f +J2_binned covariances_real_binned_fullsky.c /^double J2_binned(double l, double tmin, double tmax){$/;" f +J4_binned covariances_real_binned.c /^double J4_binned(double l, double tmin, double tmax){$/;" f +J4_binned covariances_real_binned_fullsky.c /^double J4_binned(double l, double tmin, double tmax){$/;" f +KE IA.h /^double KE[31] = {0. , -0.018, 0.013, 0.043, 0.091, 0.236, 0.449, 0.667, 0.827, 0.907, 0.916, 0.91 , 0.932, 0.901, 0.835, 0.735, 0.594, 0.427, 0.179, -0.025, -0.226, -0.423, -0.591, -0.754, -0.913, -1.061, -1.181, -1.301, -1.421, -1.541, -1.661};$/;" v +K_CH0 pt.c /^double K_CH0(double k_mpch){$/;" f +K_CH0 pt_cfastpt.c /^double K_CH0(double k_mpch){$/;" f +K_MPCH pt.c /^double K_MPCH(double k_ch0){$/;" f +Kcorrect_File structs.c /^ char Kcorrect_File[200];$/;" m struct:__anon13 file: +LD_term covariances_3D.c /^double LD_term(double k)$/;" f +LDlin_term covariances_3D.c /^double LDlin_term(double k)$/;" f +LF_P structs.c /^ double LF_P;$/;" m struct:__anon21 file: +LF_P structs.c /^ double LF_P[2];$/;" m struct:__anon22 file: +LF_Q structs.c /^ double LF_Q;$/;" m struct:__anon21 file: +LF_Q structs.c /^ double LF_Q[2];$/;" m struct:__anon22 file: +LF_alpha structs.c /^ double LF_alpha;$/;" m struct:__anon21 file: +LF_alpha structs.c /^ double LF_alpha[2];$/;" m struct:__anon22 file: +LF_coefficients IA.h /^static double LF_coefficients[2][5] = {{-1.,0.,0.,0.,0.},{-1.,0.,0.,0.,0.}};\/\/{Phistat, alpha, Mstar,Q,P} [0][] =red,[1][] = all$/;" v +LF_coefficients_DEEP2 IA.h /^static double LF_coefficients_DEEP2[2][5] = {{1.11e-3,-0.57,-20.34,1.20,-1.15},{0.94e-3,-1.23,-20.70,1.23,-.3}};\/\/P,Q from DEEP2 (B-band), otherwise GAMA$/;" v +LF_coefficients_GAMA IA.h /^static double LF_coefficients_GAMA[2][5] = {{1.11e-3,-0.57,-20.34,1.8,-1.2},{0.94e-3,-1.23,-20.70,0.7,1.8}};\/\/from GAMA survey http:\/\/arxiv.org\/pdf\/1111.0166v2.pdf$/;" v +LF_red_P structs.c /^ double LF_red_P;$/;" m struct:__anon21 file: +LF_red_P structs.c /^ double LF_red_P[2];$/;" m struct:__anon22 file: +LF_red_Q structs.c /^ double LF_red_Q;$/;" m struct:__anon21 file: +LF_red_Q structs.c /^ double LF_red_Q[2];$/;" m struct:__anon22 file: +LF_red_alpha structs.c /^ double LF_red_alpha;$/;" m struct:__anon21 file: +LF_red_alpha structs.c /^ double LF_red_alpha[2];$/;" m struct:__anon22 file: +LMAX cosmo2D_fullsky_TATT.c /^int LMAX = 100000;$/;" v +LMIN_tab cosmo2D_fullsky_TATT.c /^int LMIN_tab =20;$/;" v +MASK_FILE structs.c /^ char MASK_FILE[500]; $/;" m struct:__anon9 file: +MGSigma structs.c /^ double MGSigma;$/;" m struct:__anon10 file: +MGSigma structs.c /^ double MGSigma;$/;" m struct:input_cosmo_params file: +MGSigma structs.c /^ double MGSigma;$/;" m struct:input_cosmo_params_mpp file: +MGSigma structs.c /^ double MGSigma;$/;" m struct:__anon22 file: +MG_Sigma cosmo2D_fourier.c /^double MG_Sigma(double a)$/;" f +MGmu structs.c /^ double MGmu;$/;" m struct:__anon10 file: +MGmu structs.c /^ double MGmu;$/;" m struct:input_cosmo_params file: +MGmu structs.c /^ double MGmu;$/;" m struct:input_cosmo_params_mpp file: +MGmu structs.c /^ double MGmu;$/;" m struct:__anon22 file: +MOR structs.c /^ double MOR[10];$/;" m struct:input_nuisance_params_mpp file: +M_abs IA.c /^double M_abs(double mag, double a){ \/\/in h = 1 units, incl. Poggianti 1997 k+e-corrections$/;" f +M_max basics.c /^ double M_max;$/;" m struct:__anon5 file: +M_min basics.c /^ double M_min;$/;" m struct:__anon5 file: +M_nu structs.c /^ double M_nu;$/;" m struct:__anon10 file: +M_nu structs.c /^ double M_nu;$/;" m struct:__anon22 file: +Mobs_x cluster.c /^double Mobs_x(double Nobs, double lgM, double a){$/;" f +N BAO.c /^ int N;$/;" m struct:__anon1 file: +N structs.c /^ int N;$/;" m struct:__anon20 file: +N200_Nbin structs.c /^ int N200_Nbin;$/;" m struct:__anon17 file: +N200_completeness cluster.c /^double N200_completeness(int nz, int nN){$/;" f +N200_completeness clusters_DES.c /^double N200_completeness(int nz, int nN){$/;" f +N200_max structs.c /^ double N200_max;$/;" m struct:__anon17 file: +N200_min structs.c /^ double N200_min;$/;" m struct:__anon17 file: +NG run_covariances_real.c /^int NG = 1;$/;" v +NG run_covariances_real_fullsky.c /^int NG = 1;$/;" v +NG run_covariances_real_fullsky_cltomo.c /^int NG = 1;$/;" v +NOSN_DESdepth baryons2.h /^ static double NOSN_DESdepth[100][11]={{0.9990871, 0.9942591, 1.0002, 1.00047, 1.000687, 1.000818, 1.000885, 1.0009, 1.000897, 1.000886, 1.00089}{0.9981768, 1.002662, 0.9998689, 1.000279, 1.000493, 1.000659, 1.000789, 1.000858, 1.000879, 1.000869, 1.000865}{0.9961528, 0.9961901, 0.9987581, 0.9994543, 1.00001, 1.000412, 1.000683, 1.000806, 1.000857, 1.000861, 1.000846}{0.9951525, 1.001664, 0.9986309, 0.9995079, 0.9999267, 1.000239, 1.000615, 1.000766, 1.000805, 1.000801, 1.000796}{0.993446, 1.002933, 0.9979311, 0.9986836, 0.9992639, 0.999744, 1.00019, 1.000453, 1.000597, 1.000689, 1.000716}{0.9916882, 0.9997891, 0.9968021, 0.9979973, 0.9988605, 0.9995087, 1.000066, 1.000403, 1.000608, 1.000742, 1.000784}{0.9902664, 0.9987756, 0.9957517, 0.9969538, 0.9980728, 0.9988666, 0.9996142, 1.000122, 1.000457, 1.000657, 1.000731}{0.9876207, 0.9930046, 0.9937164, 0.9953918, 0.9970428, 0.9983358, 0.9993033, 0.9999552, 1.000359, 1.000627, 1.000727}{0.9856391, 0.9972358, 0.9924927, 0.9942844, 0.9961633, 0.9975275, 0.998842, 0.9996514, 1.000158, 1.000484, 1.000655}{0.9845015, 0.9919567, 0.9913063, 0.9932565, 0.9952277, 0.9969435, 0.9985198, 0.9994114, 0.9999946, 1.000463, 1.000744}{0.9836875, 0.9968837, 0.9909141, 0.9930097, 0.9949309, 0.996506, 0.9980387, 0.9989557, 0.9996413, 1.000268, 1.00064}{0.983795, 0.9922165, 0.9901434, 0.9921195, 0.9941539, 0.9956671, 0.9972383, 0.9983132, 0.9992231, 1.000169, 1.000634}{0.9825931, 0.9921804, 0.9895117, 0.9915154, 0.9937526, 0.9952751, 0.9970092, 0.9982727, 0.9992615, 1.000272, 1.000776}{0.9828572, 0.9923188, 0.9890413, 0.9907743, 0.9926206, 0.9945711, 0.9965121, 0.9979193, 0.9990701, 1.000163, 1.000728}{0.982006, 0.9919958, 0.9889263, 0.9905452, 0.9921124, 0.9941422, 0.9959442, 0.9974835, 0.9987711, 1.000099, 1.000794}{0.9815181, 0.9914807, 0.9893156, 0.9905051, 0.9918294, 0.9939538, 0.9958903, 0.9974026, 0.9988361, 1.00017, 1.00088}{0.9826476, 0.9912253, 0.9898301, 0.9905335, 0.9918535, 0.9937637, 0.9952965, 0.9968238, 0.9983165, 1.000026, 1.000991}{0.9851723, 0.9933035, 0.9899865, 0.9902679, 0.9916198, 0.9935511, 0.9954586, 0.9970029, 0.9985924, 1.000167, 1.001043}{0.9861359, 0.9974315, 0.9908848, 0.9911777, 0.9921975, 0.9936039, 0.9954555, 0.9969814, 0.9985772, 1.00038, 1.001325}{0.9853352, 0.9965792, 0.9917997, 0.9917847, 0.9924436, 0.9940194, 0.9958422, 0.9971039, 0.9987377, 1.000623, 1.001715}{0.9868989, 0.9894565, 0.9911528, 0.9907791, 0.9916185, 0.9931485, 0.9952429, 0.9967724, 0.9985476, 1.000901, 1.001963}{0.9874078, 0.9914928, 0.9923954, 0.9920421, 0.9926693, 0.9941049, 0.9958583, 0.9973405, 0.9988902, 1.001296, 1.00221}{0.9882466, 0.9957506, 0.9920802, 0.9916586, 0.9926923, 0.9945203, 0.9967057, 0.9977028, 0.9989871, 1.001365, 1.002326}{0.9889541, 0.9969507, 0.9928544, 0.9927846, 0.9936595, 0.9956319, 0.9972738, 0.9979735, 0.9991598, 1.001794, 1.00274}{0.9910725, 1.003288, 0.9948164, 0.9938642, 0.9942734, 0.9964796, 0.9976547, 0.9981243, 0.9995704, 1.002299, 1.003171}{0.991612, 1.000572, 0.9948057, 0.9942581, 0.9955301, 0.9973803, 0.9980875, 0.9986429, 1.000166, 1.002888, 1.003762}{0.9927216, 1.004224, 0.9964417, 0.9951001, 0.9962644, 0.9980016, 0.9990285, 0.9997606, 1.001042, 1.003449, 1.004179}{0.9928392, 0.9976285, 0.9966127, 0.9970327, 0.9972163, 0.9986229, 0.9998161, 1.000328, 1.001538, 1.004162, 1.00506}{0.9925588, 1.00339, 0.9975456, 0.9982378, 0.9986629, 1.000427, 1.001189, 1.001226, 1.001917, 1.004633, 1.005666}{0.9929198, 0.9990881, 1.00016, 1.000775, 0.9997344, 1.000605, 1.002179, 1.002231, 1.003046, 1.005883, 1.006658}{0.9912, 1.003587, 0.9995556, 1.000273, 1.001296, 1.002519, 1.003362, 1.002622, 1.003144, 1.006198, 1.00721}{0.9924668, 1.007759, 1.002022, 1.00312, 1.003589, 1.003283, 1.004416, 1.003777, 1.004282, 1.007389, 1.008403}{0.9934106, 1.007199, 1.002722, 1.002611, 1.003473, 1.004939, 1.005968, 1.005308, 1.005608, 1.008855, 1.009679}{0.993293, 1.012248, 1.004564, 1.004376, 1.005435, 1.006937, 1.007651, 1.006757, 1.006961, 1.010253, 1.010575}{0.9950129, 1.009506, 1.005703, 1.007051, 1.007243, 1.008309, 1.008934, 1.007938, 1.008516, 1.01157, 1.011518}{0.9972684, 1.014865, 1.006996, 1.007981, 1.007707, 1.009488, 1.011064, 1.010415, 1.00988, 1.012476, 1.012953}{0.9970944, 1.016503, 1.008368, 1.008679, 1.009433, 1.010268, 1.012856, 1.011721, 1.011109, 1.014025, 1.014322}{0.9985665, 1.01987, 1.009249, 1.010546, 1.011963, 1.012188, 1.014474, 1.013013, 1.01171, 1.015105, 1.01532}{0.9961019, 1.023212, 1.01126, 1.01226, 1.013097, 1.014205, 1.016591, 1.014386, 1.013304, 1.016813, 1.016566}{0.9968482, 1.026479, 1.011902, 1.013923, 1.015675, 1.015361, 1.018142, 1.016058, 1.014993, 1.019136, 1.019121}{0.9983679, 1.015936, 1.016924, 1.014886, 1.017203, 1.017793, 1.020341, 1.017897, 1.016684, 1.019715, 1.019596}{0.9998594, 1.017852, 1.019016, 1.0165, 1.018597, 1.019769, 1.022069, 1.019956, 1.018488, 1.021646, 1.021255}{1.001051, 1.020161, 1.019536, 1.018253, 1.019905, 1.021196, 1.024681, 1.022774, 1.021355, 1.024869, 1.024552}{1.002036, 1.015464, 1.019864, 1.022135, 1.023233, 1.024504, 1.027307, 1.024241, 1.022102, 1.025758, 1.025717}{1.001033, 1.015959, 1.021269, 1.024023, 1.026691, 1.024997, 1.027971, 1.025712, 1.025052, 1.027323, 1.027315}{1.003871, 1.015055, 1.024038, 1.02642, 1.028875, 1.026936, 1.029928, 1.028233, 1.026287, 1.029283, 1.029537}{1.007983, 1.022087, 1.027323, 1.029384, 1.031438, 1.02974, 1.032225, 1.029753, 1.028284, 1.031514, 1.031759}{1.00944, 1.026186, 1.031109, 1.032506, 1.033797, 1.032157, 1.034449, 1.031936, 1.030515, 1.033523, 1.033171}{1.006024, 1.024786, 1.034391, 1.034344, 1.036414, 1.03613, 1.037836, 1.035069, 1.033445, 1.035872, 1.034237}{1.005102, 1.02287, 1.034826, 1.035041, 1.038494, 1.038478, 1.040458, 1.037803, 1.035423, 1.038215, 1.036878}{1.010054, 1.023532, 1.036675, 1.037991, 1.041148, 1.040569, 1.043049, 1.039887, 1.038687, 1.040892, 1.039849}{1.018731, 1.032574, 1.040316, 1.040443, 1.043968, 1.042769, 1.045055, 1.042745, 1.041497, 1.043383, 1.042585}{1.019364, 1.037939, 1.043276, 1.039873, 1.045364, 1.044266, 1.045783, 1.044204, 1.043486, 1.045455, 1.044804}{1.017927, 1.034287, 1.046954, 1.045376, 1.049145, 1.048009, 1.049659, 1.047472, 1.045484, 1.048452, 1.046242}{1.020571, 1.039045, 1.050869, 1.050753, 1.051951, 1.050394, 1.052812, 1.050516, 1.0484, 1.050399, 1.048879}{1.02393, 1.04024, 1.053347, 1.052393, 1.054387, 1.052629, 1.056677, 1.054406, 1.05082, 1.05298, 1.051837}{1.024208, 1.039449, 1.053036, 1.053495, 1.057377, 1.056059, 1.06147, 1.057258, 1.053642, 1.055817, 1.054135}{1.023366, 1.040918, 1.056108, 1.05565, 1.058749, 1.058803, 1.062537, 1.059478, 1.057663, 1.05991, 1.056241}{1.027166, 1.044441, 1.059405, 1.058706, 1.062447, 1.06226, 1.064362, 1.061563, 1.060751, 1.062116, 1.059984}{1.029349, 1.052328, 1.062765, 1.061404, 1.06492, 1.065142, 1.066328, 1.064792, 1.063078, 1.064592, 1.062418}{1.030359, 1.052232, 1.066012, 1.063111, 1.067482, 1.067763, 1.070018, 1.067514, 1.065389, 1.066767, 1.063781}{1.037058, 1.053267, 1.069761, 1.066403, 1.07303, 1.072076, 1.07362, 1.070393, 1.068299, 1.07026, 1.066966}{1.04273, 1.056318, 1.072368, 1.071032, 1.077829, 1.075703, 1.075965, 1.07334, 1.07316, 1.07333, 1.068154}{1.043195, 1.055593, 1.076668, 1.074754, 1.078705, 1.076954, 1.078311, 1.078165, 1.075745, 1.07526, 1.070508}{1.041291, 1.058563, 1.079653, 1.076131, 1.08093, 1.078639, 1.082908, 1.0804, 1.077821, 1.078208, 1.073607}{1.040804, 1.060319, 1.081299, 1.080239, 1.08609, 1.083234, 1.085396, 1.082526, 1.08067, 1.081765, 1.076895}{1.049454, 1.067069, 1.083357, 1.084705, 1.088299, 1.088949, 1.089198, 1.085754, 1.083745, 1.084786, 1.080665}{1.049764, 1.071358, 1.08653, 1.087987, 1.093776, 1.092863, 1.093295, 1.090409, 1.088739, 1.087836, 1.083471}{1.04932, 1.072293, 1.089378, 1.091692, 1.096777, 1.096778, 1.097166, 1.093581, 1.091884, 1.091775, 1.086779}{1.051262, 1.080325, 1.092984, 1.094065, 1.099535, 1.100876, 1.099303, 1.097475, 1.095152, 1.095826, 1.090535}{1.057084, 1.079258, 1.098589, 1.097045, 1.102747, 1.104018, 1.104555, 1.09984, 1.096715, 1.098471, 1.093712}{1.058276, 1.082457, 1.100553, 1.100522, 1.104217, 1.106461, 1.107853, 1.103927, 1.101579, 1.10242, 1.096722}{1.058802, 1.084617, 1.101243, 1.101254, 1.111328, 1.109472, 1.11167, 1.108452, 1.105278, 1.105048, 1.099668}{1.062176, 1.086726, 1.103365, 1.106682, 1.114992, 1.11234, 1.11516, 1.111904, 1.107869, 1.108085, 1.102476}{1.069557, 1.090034, 1.108099, 1.108247, 1.115348, 1.114967, 1.119013, 1.114656, 1.110952, 1.111393, 1.105224}{1.071446, 1.088527, 1.112488, 1.111734, 1.120228, 1.121905, 1.123399, 1.118513, 1.114921, 1.115733, 1.110474}{1.078153, 1.090659, 1.117472, 1.117686, 1.12337, 1.128112, 1.129135, 1.123725, 1.119072, 1.119742, 1.113522}{1.079588, 1.095627, 1.12107, 1.12009, 1.129102, 1.132551, 1.133315, 1.126933, 1.122006, 1.123256, 1.116331}{1.077729, 1.101243, 1.123652, 1.124975, 1.133715, 1.135951, 1.136504, 1.129866, 1.125711, 1.126546, 1.118858}{1.080807, 1.109856, 1.127633, 1.128389, 1.135783, 1.140297, 1.140566, 1.134392, 1.129646, 1.129046, 1.120084}{1.082093, 1.116213, 1.132854, 1.132867, 1.139047, 1.141253, 1.143124, 1.139487, 1.134512, 1.132124, 1.124369}{1.083322, 1.115899, 1.138041, 1.136455, 1.142206, 1.142114, 1.147126, 1.143416, 1.138289, 1.135196, 1.128617}{1.085248, 1.110902, 1.141067, 1.137059, 1.144487, 1.144965, 1.15242, 1.14727, 1.14223, 1.139011, 1.132529}{1.08814, 1.110216, 1.143244, 1.135123, 1.148531, 1.150654, 1.15582, 1.151428, 1.148208, 1.143538, 1.136001}{1.090971, 1.116297, 1.144012, 1.137671, 1.15257, 1.156329, 1.158697, 1.15606, 1.151948, 1.147274, 1.13937}{1.095485, 1.139463, 1.148671, 1.146266, 1.157544, 1.161418, 1.16338, 1.160301, 1.15662, 1.15254, 1.143192}{1.100132, 1.142588, 1.154416, 1.153877, 1.162599, 1.166248, 1.166752, 1.164222, 1.161289, 1.158173, 1.146982}{1.102891, 1.138921, 1.159522, 1.156973, 1.166734, 1.170932, 1.170855, 1.168942, 1.165326, 1.161246, 1.150771}{1.101293, 1.122384, 1.160475, 1.158313, 1.171131, 1.175559, 1.176538, 1.174702, 1.168486, 1.162989, 1.154809}{1.099738, 1.120603, 1.161419, 1.161105, 1.175316, 1.180124, 1.181953, 1.177185, 1.17025, 1.165013, 1.1588}{1.106065, 1.125865, 1.165908, 1.168845, 1.17859, 1.184315, 1.186888, 1.181753, 1.172889, 1.169336, 1.162833}{1.115402, 1.13184, 1.171708, 1.176932, 1.181681, 1.188306, 1.191214, 1.18505, 1.176086, 1.174113, 1.16681}{1.123672, 1.140874, 1.177469, 1.179442, 1.184842, 1.192337, 1.195759, 1.18756, 1.180081, 1.178125, 1.170765}{1.12642, 1.153082, 1.178736, 1.182931, 1.188658, 1.19691, 1.19961, 1.191213, 1.185465, 1.183563, 1.175014}{1.129111, 1.153462, 1.180126, 1.18604, 1.192443, 1.201329, 1.202356, 1.195484, 1.190073, 1.188581, 1.179165}{1.132635, 1.158974, 1.183268, 1.189049, 1.197759, 1.206131, 1.207076, 1.199828, 1.194326, 1.191996, 1.182581}{1.136706, 1.163457, 1.186663, 1.19218, 1.2041, 1.211216, 1.210587, 1.203704, 1.198563, 1.195548, 1.185497}{1.140788, 1.167836, 1.189528, 1.197054, 1.208935, 1.216169, 1.21404, 1.207149, 1.201438, 1.198407, 1.188439}{1.148499, 1.158723, 1.196246, 1.201468, 1.207929, 1.218389, 1.216873, 1.210709, 1.207577, 1.202613, 1.194318}{1.156127, 1.160671, 1.202813, 1.203369, 1.206954, 1.220582, 1.219655, 1.215631, 1.212284, 1.206705, 1.200036}};$/;" v +NOSN_LSSTdepth baryons2.h /^ static double NOSN_LSSTdepth[100][11]={{0.9990871, 1.000133, 1.000617, 1.000833, 1.0009, 1.000886, 1.000867, 0.9878576, 1.000801, 1.000749, 1.000715}{0.9981768, 0.9997068, 1.000381, 1.000694, 1.000858, 1.000872, 1.00083, 0.995508, 1.000724, 1.000658, 1.000609}{0.9961528, 0.998515, 0.9997834, 1.000469, 1.000806, 1.000864, 1.000809, 0.9853735, 1.000659, 1.000574, 1.000512}{0.9951525, 0.998318, 0.9996985, 1.000374, 1.000766, 1.000792, 1.000767, 0.9958565, 1.000612, 1.000501, 1.000417}{0.993446, 0.9975574, 0.9989863, 0.9998395, 1.000453, 1.000683, 1.000686, 0.9820089, 1.00052, 1.000395, 1.000288}{0.9916882, 0.9963793, 0.9984913, 0.9996287, 1.000403, 1.000731, 1.000741, 0.9882319, 1.000511, 1.000341, 1.000209}{0.9902664, 0.9951752, 0.9974713, 0.9990791, 1.000122, 1.000641, 1.000689, 0.984326, 1.000419, 1.000219, 1.000047}{0.9876207, 0.9930928, 0.9963073, 0.998537, 0.9999552, 1.000603, 1.000688, 0.9807855, 1.000394, 1.000149, 0.9999471}{0.9856391, 0.991806, 0.9952112, 0.9978884, 0.9996514, 1.000437, 1.00064, 0.9814614, 1.000424, 1.000146, 0.999886}{0.9845015, 0.9906494, 0.9944239, 0.9972642, 0.9994114, 1.000405, 1.000734, 0.9753778, 1.000478, 1.000127, 0.9998097}{0.9836875, 0.9900916, 0.9940022, 0.9968468, 0.9989557, 1.000183, 1.000632, 0.9831083, 1.0004, 1.000029, 0.9996705}{0.983795, 0.9893234, 0.9932074, 0.9959864, 0.9983132, 1.000079, 1.000639, 0.9746923, 1.000416, 0.9999778, 0.9995571}{0.9825931, 0.9886056, 0.9926158, 0.9956838, 0.9982727, 1.000179, 1.000808, 0.9788524, 1.000534, 0.9999876, 0.9994665}{0.9828572, 0.9882072, 0.9916844, 0.9949662, 0.9979193, 1.00005, 1.000772, 0.9746759, 1.000505, 0.999895, 0.9993012}{0.982006, 0.9880776, 0.9913309, 0.9945153, 0.9974835, 0.9999544, 1.00086, 0.9741422, 1.000599, 0.9999409, 0.9992889}{0.9815181, 0.9884373, 0.9910407, 0.9943767, 0.9974026, 1.000005, 1.000942, 0.9721654, 1.000817, 1.000107, 0.9993313}{0.9826476, 0.9889757, 0.9910631, 0.9940667, 0.9968238, 0.999833, 1.001089, 0.9698492, 1.000833, 1.000015, 0.9991377}{0.9851723, 0.9892497, 0.990923, 0.9939412, 0.9970029, 0.9999958, 1.001127, 0.9741022, 1.001027, 1.000144, 0.9992123}{0.9861359, 0.9900969, 0.9917504, 0.9939761, 0.9969814, 1.000206, 1.00143, 0.9688955, 1.001265, 1.000254, 0.9992284}{0.9853352, 0.9911479, 0.991967, 0.9943914, 0.9971039, 1.000406, 1.001748, 0.9720575, 1.001472, 1.000412, 0.9992497}{0.9868989, 0.9907339, 0.9911542, 0.9935663, 0.9967724, 1.000709, 1.002049, 0.9667217, 1.001722, 1.000525, 0.9992662}{0.9874078, 0.9916053, 0.9923064, 0.9944228, 0.9973405, 1.001121, 1.002273, 0.9661127, 1.001947, 1.000632, 0.9992156}{0.9882466, 0.9914083, 0.9920858, 0.9949594, 0.9977028, 1.001192, 1.002426, 0.9684049, 1.002326, 1.000943, 0.999492}{0.9889541, 0.9919629, 0.9930693, 0.9960131, 0.9979735, 1.001601, 1.002847, 0.9590086, 1.002825, 1.001124, 0.9994251}{0.9910725, 0.9938205, 0.993524, 0.9967187, 0.9981243, 1.002138, 1.003295, 0.9672187, 1.002842, 1.001187, 0.9994669}{0.991612, 0.9939363, 0.9948872, 0.9975624, 0.9986429, 1.002724, 1.003876, 0.9662113, 1.003491, 1.001673, 0.9997522}{0.9927216, 0.9962056, 0.9953699, 0.998195, 0.9997606, 1.00334, 1.00438, 0.967763, 1.004013, 1.002082, 0.9999397}{0.9928392, 0.9958447, 0.9969909, 0.9989061, 1.000328, 1.003979, 1.005187, 0.9665936, 1.004487, 1.002245, 0.9999204}{0.9925588, 0.9964191, 0.99831, 1.000541, 1.001226, 1.004468, 1.005766, 0.9662723, 1.004995, 1.002756, 1.000246}{0.9929198, 0.9985008, 1.000039, 1.000923, 1.002231, 1.005741, 1.00676, 0.9695206, 1.005618, 1.003157, 1.000401}{0.9912, 0.9981561, 1.000803, 1.002813, 1.002622, 1.005994, 1.007395, 0.9651554, 1.006228, 1.003546, 1.000573}{0.9924668, 1.000269, 1.003469, 1.003515, 1.003777, 1.007189, 1.00853, 0.9664472, 1.006758, 1.003809, 1.000871}{0.9934106, 1.000931, 1.003092, 1.005152, 1.005308, 1.008697, 1.009831, 0.9680073, 1.007733, 1.004586, 1.001356}{0.993293, 1.003147, 1.004829, 1.007089, 1.006757, 1.010173, 1.010591, 0.9703638, 1.008414, 1.005229, 1.00179}{0.9950129, 1.003867, 1.00702, 1.008422, 1.007938, 1.011491, 1.011609, 0.9709047, 1.009438, 1.005785, 1.002282}{0.9972684, 1.00496, 1.007619, 1.009809, 1.010415, 1.012453, 1.013104, 0.9721378, 1.010034, 1.006169, 1.002397}{0.9970944, 1.006401, 1.009016, 1.010735, 1.011721, 1.013889, 1.014316, 0.9741831, 1.010775, 1.006835, 1.002882}{0.9985665, 1.007202, 1.011249, 1.012692, 1.013013, 1.015096, 1.015378, 0.9736965, 1.011867, 1.007701, 1.003399}{0.9961019, 1.009568, 1.012648, 1.014693, 1.014386, 1.016856, 1.016559, 0.9758184, 1.012615, 1.008253, 1.003811}{0.9968482, 1.009982, 1.014793, 1.015904, 1.016058, 1.019053, 1.019128, 0.9756584, 1.013912, 1.008949, 1.004244}{0.9983679, 1.013583, 1.016304, 1.018491, 1.017897, 1.019687, 1.019382, 0.9671967, 1.01501, 1.01002, 1.005031}{0.9998594, 1.01827, 1.017812, 1.020196, 1.019956, 1.021583, 1.021843, 0.9752937, 1.016172, 1.01102, 1.005878}{1.001051, 1.018151, 1.019365, 1.021909, 1.022774, 1.024925, 1.024229, 0.9776072, 1.017173, 1.011658, 1.006485}{1.002036, 1.017783, 1.022622, 1.025188, 1.024241, 1.025766, 1.025283, 0.9827887, 1.018356, 1.012125, 1.006535}{1.001033, 1.019387, 1.025426, 1.025554, 1.025712, 1.027246, 1.026993, 0.9737962, 1.01999, 1.013091, 1.0071}{1.003871, 1.021027, 1.02811, 1.027679, 1.028233, 1.029198, 1.029412, 0.9815568, 1.02087, 1.014054, 1.008123}{1.007983, 1.0244, 1.03125, 1.030261, 1.029753, 1.031376, 1.030868, 0.9862401, 1.021954, 1.015295, 1.009288}{1.00944, 1.027845, 1.033481, 1.032627, 1.031936, 1.033571, 1.032446, 0.9848882, 1.023702, 1.016511, 1.010291}{1.006024, 1.029918, 1.035712, 1.036794, 1.035069, 1.035826, 1.033753, 0.9847908, 1.025475, 1.017562, 1.011191}{1.005102, 1.031912, 1.037141, 1.038853, 1.037803, 1.038379, 1.036795, 0.9798027, 1.026571, 1.018606, 1.011782}{1.010054, 1.033527, 1.040046, 1.041124, 1.039887, 1.041018, 1.039254, 0.9838922, 1.027899, 1.019839, 1.012515}{1.018731, 1.036556, 1.042279, 1.043241, 1.042745, 1.043508, 1.041161, 0.9908041, 1.029395, 1.021204, 1.013667}{1.019364, 1.040078, 1.043362, 1.044644, 1.044204, 1.045539, 1.043573, 0.9919914, 1.030891, 1.022785, 1.015269}{1.017927, 1.043549, 1.04769, 1.048502, 1.047472, 1.048418, 1.045024, 0.993035, 1.0331, 1.024348, 1.015807}{1.020571, 1.04638, 1.051798, 1.050779, 1.050516, 1.050744, 1.047556, 0.9940436, 1.03481, 1.025386, 1.016383}{1.02393, 1.048734, 1.053249, 1.053448, 1.054406, 1.053083, 1.049882, 0.9984639, 1.036531, 1.026367, 1.017283}{1.024208, 1.048807, 1.056114, 1.057179, 1.057258, 1.056089, 1.051705, 1.003976, 1.038371, 1.027742, 1.01854}{1.023366, 1.052462, 1.057657, 1.059962, 1.059478, 1.060065, 1.053898, 1.0067, 1.040166, 1.028242, 1.019115}{1.027166, 1.054976, 1.060889, 1.063086, 1.061563, 1.062662, 1.057985, 1.008522, 1.041993, 1.030061, 1.020473}{1.029349, 1.05753, 1.063664, 1.065365, 1.064792, 1.064804, 1.059863, 1.008147, 1.043658, 1.031934, 1.021886}{1.030359, 1.061722, 1.065253, 1.068233, 1.067514, 1.067256, 1.061586, 1.006808, 1.04533, 1.033238, 1.023268}{1.037058, 1.065904, 1.070489, 1.072474, 1.070393, 1.070794, 1.064449, 1.016213, 1.047429, 1.034911, 1.025009}{1.04273, 1.068821, 1.075169, 1.076193, 1.07334, 1.073775, 1.065726, 1.015253, 1.049484, 1.036597, 1.025325}{1.043195, 1.071738, 1.077607, 1.076856, 1.078165, 1.076168, 1.068371, 1.019622, 1.051018, 1.037743, 1.026186}{1.041291, 1.075443, 1.078869, 1.079614, 1.0804, 1.078931, 1.071574, 1.022847, 1.052759, 1.039042, 1.027604}{1.040804, 1.077356, 1.084476, 1.083688, 1.082526, 1.082661, 1.074508, 1.031782, 1.05485, 1.040864, 1.02936}{1.049454, 1.080185, 1.087103, 1.089489, 1.085754, 1.085525, 1.078127, 1.033596, 1.056864, 1.043123, 1.030677}{1.049764, 1.082308, 1.091287, 1.092962, 1.090409, 1.088437, 1.080917, 1.030083, 1.059434, 1.045276, 1.032164}{1.04932, 1.084721, 1.095076, 1.097083, 1.093581, 1.092444, 1.084366, 1.035451, 1.060851, 1.046972, 1.033616}{1.051262, 1.087202, 1.097318, 1.10055, 1.097475, 1.096802, 1.087018, 1.038041, 1.06213, 1.048583, 1.03476}{1.057084, 1.093115, 1.100395, 1.104097, 1.09984, 1.099341, 1.089662, 1.030394, 1.064539, 1.049983, 1.03516}{1.058276, 1.096174, 1.102613, 1.106707, 1.103927, 1.103086, 1.092986, 1.036263, 1.067332, 1.053086, 1.037908}{1.058802, 1.097307, 1.106731, 1.109946, 1.108452, 1.106002, 1.096217, 1.042938, 1.068919, 1.055199, 1.039791}{1.062176, 1.099937, 1.112927, 1.112922, 1.111904, 1.108938, 1.098455, 1.046809, 1.071215, 1.057243, 1.041596}{1.069557, 1.104345, 1.112653, 1.115808, 1.114656, 1.112541, 1.101321, 1.04773, 1.074588, 1.059443, 1.043916}{1.071446, 1.107872, 1.116854, 1.122769, 1.118513, 1.116677, 1.10633, 1.051211, 1.076237, 1.060768, 1.044942}{1.078153, 1.112459, 1.120918, 1.128583, 1.123725, 1.120518, 1.109308, 1.050261, 1.0782, 1.063827, 1.046725}{1.079588, 1.116328, 1.124602, 1.1328, 1.126933, 1.124326, 1.112077, 1.059981, 1.081263, 1.066033, 1.047758}{1.077729, 1.120151, 1.13097, 1.136068, 1.129866, 1.127842, 1.114165, 1.067503, 1.083789, 1.067275, 1.048657}{1.080807, 1.123815, 1.132457, 1.140371, 1.134392, 1.130688, 1.115926, 1.060237, 1.085228, 1.069042, 1.05119}{1.082093, 1.125905, 1.136493, 1.141355, 1.139487, 1.133644, 1.120747, 1.063682, 1.088255, 1.071955, 1.053206}{1.083322, 1.130733, 1.139309, 1.142261, 1.143416, 1.136554, 1.124543, 1.069424, 1.09122, 1.074204, 1.055139}{1.085248, 1.136699, 1.13995, 1.146515, 1.14727, 1.140057, 1.127671, 1.07774, 1.093481, 1.07652, 1.056715}{1.08814, 1.139325, 1.142987, 1.152521, 1.151428, 1.144354, 1.131582, 1.072844, 1.096287, 1.078496, 1.057852}{1.090971, 1.141334, 1.146505, 1.157233, 1.15606, 1.148515, 1.134758, 1.073333, 1.098579, 1.079658, 1.058971}{1.095485, 1.144081, 1.154071, 1.162027, 1.160301, 1.153766, 1.13897, 1.074318, 1.100985, 1.082832, 1.062248}{1.100132, 1.149368, 1.158468, 1.167072, 1.164222, 1.159118, 1.142491, 1.074847, 1.103514, 1.08537, 1.065751}{1.102891, 1.15234, 1.162026, 1.170916, 1.168942, 1.163356, 1.145058, 1.083404, 1.106108, 1.088122, 1.068659}{1.101293, 1.152464, 1.165324, 1.175801, 1.174702, 1.164989, 1.149572, 1.085959, 1.109772, 1.091548, 1.070397}{1.099738, 1.153435, 1.169137, 1.180562, 1.177185, 1.166574, 1.152777, 1.089389, 1.112971, 1.093574, 1.072098}{1.106065, 1.159966, 1.17639, 1.18489, 1.181753, 1.170289, 1.156814, 1.093684, 1.115805, 1.096415, 1.074624}{1.115402, 1.165353, 1.179121, 1.189069, 1.18505, 1.174827, 1.161029, 1.096018, 1.118808, 1.098539, 1.077381}{1.123672, 1.169903, 1.181993, 1.193055, 1.18756, 1.179463, 1.164378, 1.099716, 1.120996, 1.100288, 1.079987}{1.12642, 1.170768, 1.185573, 1.197856, 1.191213, 1.184631, 1.169136, 1.101501, 1.122876, 1.102498, 1.0823}{1.129111, 1.171975, 1.188897, 1.202254, 1.195484, 1.189597, 1.173026, 1.104276, 1.124655, 1.10438, 1.084567}{1.132635, 1.175786, 1.192512, 1.206374, 1.199828, 1.19359, 1.176356, 1.108263, 1.128092, 1.108451, 1.08617}{1.136706, 1.179027, 1.198199, 1.211738, 1.203704, 1.196958, 1.179599, 1.099145, 1.132963, 1.111912, 1.087297}{1.140788, 1.182159, 1.203679, 1.215726, 1.207149, 1.200292, 1.182522, 1.103301, 1.137009, 1.113749, 1.088428}{1.148499, 1.186609, 1.205698, 1.218072, 1.210709, 1.20427, 1.18904, 1.114122, 1.140493, 1.115861, 1.091389}{1.156127, 1.192781, 1.204867, 1.220389, 1.215631, 1.208145, 1.193821, 1.127786, 1.143867, 1.118459, 1.094282}};$/;" v +NOSN_NOZCOOL_DESdepth baryons2.h /^ static double NOSN_NOZCOOL_DESdepth[100][11]={{0.9990932, 0.9997307, 1.00009, 1.000297, 1.000468, 1.000575, 1.000658, 1.000671, 1.000661, 1.000647, 1.000648}{0.9980975, 0.9990149, 0.999616, 0.9999627, 1.000178, 1.000362, 1.000532, 1.00062, 1.000651, 1.000647, 1.000644}{0.9963601, 0.9974836, 0.998541, 0.9991244, 0.9996414, 1.000051, 1.000393, 1.000549, 1.000615, 1.000625, 1.000614}{0.9953192, 0.9971, 0.9984213, 0.9991852, 0.9996231, 0.99997, 1.000394, 1.000542, 1.00057, 1.000565, 1.000571}{0.9937599, 0.9960001, 0.9976407, 0.998287, 0.9989116, 0.9994382, 0.9999653, 1.000241, 1.000358, 1.000424, 1.000467}{0.9921713, 0.9946356, 0.9966645, 0.9977173, 0.9985958, 0.9992668, 0.9998896, 1.000188, 1.000335, 1.000442, 1.000507}{0.9911154, 0.9935284, 0.9958957, 0.9968916, 0.9979616, 0.9987516, 0.9995395, 0.9999772, 1.000199, 1.000331, 1.000425}{0.9892273, 0.9916289, 0.9942042, 0.9954785, 0.9969727, 0.9982097, 0.9992463, 0.9998091, 1.000094, 1.000287, 1.000412}{0.9875901, 0.9902933, 0.9932279, 0.994587, 0.9962778, 0.9975412, 0.9988952, 0.9995868, 0.9999153, 1.000132, 1.000339}{0.9864441, 0.9890053, 0.9921165, 0.9935457, 0.9953473, 0.9969169, 0.9985777, 0.9993526, 0.9997528, 1.000096, 1.000419}{0.9862744, 0.9889519, 0.9921474, 0.9934864, 0.9951067, 0.996562, 0.9982073, 0.9989807, 0.9994138, 0.9998794, 1.000292}{0.9870366, 0.9886583, 0.9916546, 0.9927121, 0.9944819, 0.995919, 0.99757, 0.9984264, 0.9990015, 0.9997248, 1.000243}{0.9866316, 0.9878489, 0.9913512, 0.9922329, 0.9941248, 0.9955518, 0.9973387, 0.9983517, 0.9989693, 0.9997843, 1.000367}{0.9874055, 0.9881245, 0.9911093, 0.9916493, 0.9932264, 0.9950464, 0.9969949, 0.998081, 0.9988064, 0.9996644, 1.000313}{0.9870907, 0.9883318, 0.9912153, 0.9914913, 0.9927513, 0.9946258, 0.9965614, 0.997725, 0.998528, 0.999547, 1.000337}{0.9870452, 0.9886375, 0.992058, 0.9917518, 0.9927952, 0.9946132, 0.9965748, 0.9976923, 0.9985834, 0.999597, 1.000411}{0.9884296, 0.989003, 0.9925122, 0.9915496, 0.9926488, 0.9943623, 0.9961454, 0.9972314, 0.9980928, 0.9993598, 1.000438}{0.9916057, 0.9900805, 0.9932385, 0.9916872, 0.9926477, 0.9941389, 0.9961761, 0.997279, 0.9982197, 0.9994023, 1.00042}{0.993102, 0.9917895, 0.9941895, 0.9923441, 0.9931202, 0.9942561, 0.9962788, 0.9973493, 0.9982181, 0.9995445, 1.000665}{0.9926723, 0.9925039, 0.9953659, 0.9931181, 0.9934366, 0.9945307, 0.9965837, 0.997398, 0.9982583, 0.9996818, 1.000983}{0.9946157, 0.9937734, 0.995055, 0.992286, 0.9926826, 0.9936777, 0.996072, 0.9971158, 0.9980397, 0.9998163, 1.001142}{0.9955081, 0.9943024, 0.9961198, 0.9931735, 0.9934229, 0.9944189, 0.9964892, 0.9975397, 0.9982809, 1.000099, 1.001322}{0.9966049, 0.9947511, 0.9960162, 0.9929157, 0.993561, 0.9947167, 0.9972466, 0.9978881, 0.9983508, 1.000075, 1.001327}{0.9972773, 0.9942682, 0.9968872, 0.9937232, 0.9942379, 0.9956448, 0.9978312, 0.9981555, 0.9984126, 1.000326, 1.001648}{0.9997646, 0.9951153, 0.9987656, 0.9947918, 0.9948994, 0.9964467, 0.9980551, 0.9981272, 0.9986641, 1.000707, 1.002014}{1.000679, 0.99556, 0.9993752, 0.9950629, 0.9959462, 0.9971904, 0.9984795, 0.9986544, 0.999206, 1.001096, 1.002452}{1.002337, 0.9976968, 1.000637, 0.9954684, 0.9964248, 0.9974703, 0.9992472, 0.999601, 0.9998227, 1.001505, 1.00282}{1.002973, 0.9986632, 1.00083, 0.9971455, 0.9971872, 0.9979329, 0.9998502, 0.9999746, 1.000184, 1.002067, 1.003533}{1.002915, 1.000069, 1.001361, 0.9979789, 0.9984166, 0.999409, 1.000985, 1.000775, 1.000457, 1.00235, 1.004005}{1.00257, 0.9991983, 1.003722, 1.000079, 0.9990555, 0.9991723, 1.001801, 1.001619, 1.001369, 1.003302, 1.004785}{1.001088, 1.000795, 1.003551, 0.9996485, 1.000561, 1.000882, 1.002702, 1.00173, 1.001215, 1.00347, 1.005209}{1.002359, 1.001095, 1.005382, 1.001899, 1.002579, 1.001287, 1.003479, 1.002725, 1.002222, 1.004388, 1.006183}{1.003, 1.001773, 1.006223, 1.001165, 1.001938, 1.002606, 1.00492, 1.00413, 1.003275, 1.005593, 1.007326}{1.002988, 1.003312, 1.007635, 1.002329, 1.003181, 1.004101, 1.006218, 1.005293, 1.004356, 1.006719, 1.008063}{1.004337, 1.003205, 1.008787, 1.004814, 1.004653, 1.005224, 1.007217, 1.0061, 1.005676, 1.007766, 1.008795}{1.005919, 1.004181, 1.009157, 1.004883, 1.004648, 1.005927, 1.009051, 1.008281, 1.006665, 1.008355, 1.009968}{1.005442, 1.004771, 1.010597, 1.005081, 1.005647, 1.00633, 1.010413, 1.009271, 1.007629, 1.009597, 1.011191}{1.006389, 1.004999, 1.010828, 1.006327, 1.00801, 1.007905, 1.011677, 1.010167, 1.007809, 1.010381, 1.01196}{1.00343, 1.006927, 1.01232, 1.007628, 1.008513, 1.009356, 1.013218, 1.01107, 1.009045, 1.011715, 1.012947}{1.004678, 1.00934, 1.012807, 1.00854, 1.011239, 1.010243, 1.014392, 1.012382, 1.010455, 1.013763, 1.015208}{1.004989, 1.009385, 1.016603, 1.009363, 1.011862, 1.012088, 1.016063, 1.013803, 1.011686, 1.013963, 1.015482}{1.005869, 1.012763, 1.018104, 1.00985, 1.012466, 1.013391, 1.017277, 1.015405, 1.013173, 1.015533, 1.016875}{1.007674, 1.01602, 1.018264, 1.010856, 1.013115, 1.01412, 1.019377, 1.017875, 1.015649, 1.018389, 1.019802}{1.009024, 1.014881, 1.019279, 1.014545, 1.015857, 1.016538, 1.021314, 1.018697, 1.015906, 1.019044, 1.020639}{1.007104, 1.016244, 1.019031, 1.014656, 1.018565, 1.016679, 1.021618, 1.019809, 1.018523, 1.020057, 1.021911}{1.008424, 1.018716, 1.021031, 1.016431, 1.01996, 1.017921, 1.023024, 1.022006, 1.019364, 1.021579, 1.023732}{1.011152, 1.01884, 1.023647, 1.018601, 1.021587, 1.019929, 1.024905, 1.023053, 1.020945, 1.023412, 1.025626}{1.012067, 1.020046, 1.026239, 1.020926, 1.023121, 1.021834, 1.026463, 1.024745, 1.022795, 1.025149, 1.026947}{1.008652, 1.017388, 1.028336, 1.021937, 1.024833, 1.024902, 1.028951, 1.027025, 1.024948, 1.026739, 1.027648}{1.007377, 1.020061, 1.028849, 1.022146, 1.026115, 1.026397, 1.030898, 1.02923, 1.026323, 1.028846, 1.029825}{1.011355, 1.023812, 1.03015, 1.023414, 1.027964, 1.027816, 1.033015, 1.03077, 1.02916, 1.031056, 1.032362}{1.018771, 1.025361, 1.032436, 1.024718, 1.029983, 1.029602, 1.034632, 1.033134, 1.031398, 1.033017, 1.034727}{1.019358, 1.026515, 1.034719, 1.023818, 1.030478, 1.031079, 1.035115, 1.034163, 1.032879, 1.034614, 1.036581}{1.017122, 1.02742, 1.037724, 1.028072, 1.033334, 1.033829, 1.038257, 1.036879, 1.034362, 1.037117, 1.037593}{1.018583, 1.029911, 1.039772, 1.032201, 1.035829, 1.035219, 1.040382, 1.038744, 1.036388, 1.038629, 1.039802}{1.020594, 1.029713, 1.041078, 1.033443, 1.037495, 1.036671, 1.043134, 1.04185, 1.038274, 1.040766, 1.042347}{1.019591, 1.030845, 1.040644, 1.033568, 1.039265, 1.039623, 1.047514, 1.044277, 1.04063, 1.043125, 1.044244}{1.018306, 1.035253, 1.042526, 1.034602, 1.040492, 1.041525, 1.047947, 1.045835, 1.043877, 1.046394, 1.045776}{1.021931, 1.034614, 1.045083, 1.036486, 1.04311, 1.044093, 1.049218, 1.047479, 1.046383, 1.048161, 1.049058}{1.023456, 1.034401, 1.047134, 1.038101, 1.044908, 1.046281, 1.050631, 1.049824, 1.048232, 1.050153, 1.051167}{1.023277, 1.035306, 1.049181, 1.039497, 1.046855, 1.048355, 1.053298, 1.052096, 1.049908, 1.051758, 1.052199}{1.028796, 1.041277, 1.05281, 1.04274, 1.051192, 1.051934, 1.056691, 1.054368, 1.051984, 1.054428, 1.054722}{1.033892, 1.045781, 1.053944, 1.044568, 1.054291, 1.05445, 1.057954, 1.056383, 1.056223, 1.057055, 1.055605}{1.034017, 1.045687, 1.056453, 1.047106, 1.05497, 1.055159, 1.059609, 1.060529, 1.05826, 1.05844, 1.057597}{1.031904, 1.044902, 1.058536, 1.048274, 1.056318, 1.056326, 1.063401, 1.062109, 1.059609, 1.06082, 1.060202}{1.031053, 1.045362, 1.059791, 1.050957, 1.059593, 1.059909, 1.065124, 1.063466, 1.061791, 1.063773, 1.062851}{1.037227, 1.049213, 1.061046, 1.053349, 1.061104, 1.064594, 1.068452, 1.066382, 1.064452, 1.066028, 1.066031}{1.036695, 1.05255, 1.062305, 1.055988, 1.065435, 1.06767, 1.071435, 1.069878, 1.068644, 1.068624, 1.068415}{1.036028, 1.050456, 1.063861, 1.058892, 1.067556, 1.070901, 1.074494, 1.072822, 1.071113, 1.072017, 1.071253}{1.037309, 1.050255, 1.066365, 1.060485, 1.069591, 1.074316, 1.076468, 1.075815, 1.073701, 1.075475, 1.074498}{1.040511, 1.051939, 1.070887, 1.062721, 1.07218, 1.076544, 1.080701, 1.077451, 1.07473, 1.077636, 1.077279}{1.042104, 1.054964, 1.070958, 1.063811, 1.072852, 1.078514, 1.082845, 1.080218, 1.078482, 1.080578, 1.079828}{1.042628, 1.056844, 1.071134, 1.064989, 1.078297, 1.080331, 1.085342, 1.083739, 1.081504, 1.082799, 1.082273}{1.044806, 1.059755, 1.072768, 1.068877, 1.080959, 1.082243, 1.088248, 1.086884, 1.08364, 1.085347, 1.084551}{1.049816, 1.062614, 1.075773, 1.069639, 1.081204, 1.084694, 1.091862, 1.089072, 1.08621, 1.088088, 1.086757}{1.051474, 1.061548, 1.079081, 1.071259, 1.083711, 1.090229, 1.094829, 1.092006, 1.089552, 1.091374, 1.091228}{1.055308, 1.06502, 1.08281, 1.075223, 1.087038, 1.094914, 1.099431, 1.09645, 1.092751, 1.09466, 1.093754}{1.056096, 1.065105, 1.08543, 1.077417, 1.091462, 1.098158, 1.102788, 1.098817, 1.094822, 1.097447, 1.096122}{1.054801, 1.067159, 1.087099, 1.080829, 1.094749, 1.10067, 1.10518, 1.100931, 1.097707, 1.100083, 1.098252}{1.055591, 1.07149, 1.089306, 1.082985, 1.096116, 1.104133, 1.108713, 1.104792, 1.100998, 1.102098, 1.099142}{1.055832, 1.07592, 1.093371, 1.086172, 1.097439, 1.104705, 1.110471, 1.108526, 1.104728, 1.104538, 1.102912}{1.056058, 1.075877, 1.097423, 1.088426, 1.098691, 1.105201, 1.113404, 1.111529, 1.107656, 1.106973, 1.106654}{1.056802, 1.07458, 1.09911, 1.088221, 1.100444, 1.10751, 1.117658, 1.114434, 1.110944, 1.110149, 1.109968}{1.058263, 1.074981, 1.099587, 1.086278, 1.103826, 1.112395, 1.120258, 1.117719, 1.116054, 1.113685, 1.112715}{1.059694, 1.080116, 1.099282, 1.088447, 1.107238, 1.117268, 1.122386, 1.121693, 1.119044, 1.116634, 1.11538}{1.062822, 1.08144, 1.103175, 1.094686, 1.111301, 1.120798, 1.125631, 1.125125, 1.122746, 1.121333, 1.118755}{1.066134, 1.081248, 1.108034, 1.10027, 1.115396, 1.123986, 1.128326, 1.128246, 1.126601, 1.126396, 1.122154}{1.068097, 1.081561, 1.111848, 1.1027, 1.118398, 1.127229, 1.131551, 1.132112, 1.130113, 1.129045, 1.125511}{1.066944, 1.082484, 1.112707, 1.103432, 1.121576, 1.130809, 1.136313, 1.136954, 1.132493, 1.130091, 1.128985}{1.065822, 1.080405, 1.113466, 1.105403, 1.12465, 1.134341, 1.14097, 1.138824, 1.133681, 1.131501, 1.132418}{1.071168, 1.084485, 1.116019, 1.111435, 1.127525, 1.137501, 1.14466, 1.141698, 1.135688, 1.1352, 1.135831}{1.078982, 1.090705, 1.119341, 1.11787, 1.130365, 1.140475, 1.147286, 1.144004, 1.138242, 1.13927, 1.139178}{1.085763, 1.095858, 1.123347, 1.120002, 1.132818, 1.143439, 1.150102, 1.146083, 1.141563, 1.142661, 1.14247}{1.08716, 1.095782, 1.12374, 1.121561, 1.13502, 1.146586, 1.153225, 1.149449, 1.145577, 1.147036, 1.145824}{1.088528, 1.09546, 1.124206, 1.123185, 1.137253, 1.149627, 1.155892, 1.152636, 1.149195, 1.151073, 1.1491}{1.090355, 1.09795, 1.125889, 1.124543, 1.141169, 1.153037, 1.159585, 1.156119, 1.152732, 1.15379, 1.151929}{1.092484, 1.101343, 1.127871, 1.125796, 1.145903, 1.156714, 1.162547, 1.15938, 1.15629, 1.156595, 1.154451}{1.094652, 1.103853, 1.129288, 1.129583, 1.149447, 1.160297, 1.165454, 1.16226, 1.158585, 1.158962, 1.157003}{1.100106, 1.104015, 1.134086, 1.132102, 1.147288, 1.161998, 1.16723, 1.164076, 1.163772, 1.162346, 1.162344}{1.1055, 1.107, 1.138777, 1.132675, 1.145194, 1.16368, 1.168649, 1.168244, 1.167699, 1.165638, 1.167539}};$/;" v +NOSN_NOZCOOL_LSSTdepth baryons2.h /^ static double NOSN_NOZCOOL_LSSTdepth[100][11]={{0.9990932, 1.000037, 1.000413, 1.000594, 1.000671, 1.000648, 1.000621, 0.9876143, 1.00053, 1.000488, 1.000551}{0.9980975, 0.9994798, 1.000067, 1.000404, 1.00062, 1.000651, 1.000605, 0.9952854, 1.000477, 1.00042, 1.000476}{0.9963601, 0.9983342, 0.9994288, 1.000124, 1.000549, 1.000627, 1.000575, 0.9851494, 1.000407, 1.000332, 1.000381}{0.9953192, 0.998142, 0.9993872, 1.00011, 1.000542, 1.000555, 1.000534, 0.9956293, 1.000356, 1.000257, 1.000297}{0.9937599, 0.99732, 0.9986126, 0.9995503, 1.000241, 1.000415, 1.000431, 0.9817626, 1.000239, 1.000129, 1.000158}{0.9921713, 0.9962858, 0.9982109, 0.9994034, 1.000188, 1.000424, 1.000458, 0.9879599, 1.000209, 1.000058, 1.000066}{0.9911154, 0.9953738, 0.9973884, 0.9989713, 0.9999772, 1.000312, 1.000376, 0.98403, 1.000093, 0.9999156, 0.9998925}{0.9892273, 0.9936663, 0.9962902, 0.9984263, 0.9998091, 1.000257, 1.000367, 0.9804841, 1.000058, 0.9998378, 0.9997967}{0.9875901, 0.992653, 0.9954145, 0.9979101, 0.9995868, 1.000079, 1.000312, 0.981148, 1.000076, 0.9998235, 0.9997369}{0.9864441, 0.9915756, 0.994618, 0.9972548, 0.9993526, 1.000029, 1.000396, 0.9750485, 1.000105, 0.9997854, 0.999651}{0.9862744, 0.9914979, 0.9943161, 0.996916, 0.9989807, 0.9997837, 1.000271, 0.9827588, 1.000012, 0.9996734, 0.9995114}{0.9870366, 0.9910257, 0.9936423, 0.9962546, 0.9984264, 0.9996239, 1.000235, 0.9743181, 1.000005, 0.9996082, 0.9994025}{0.9866316, 0.9907024, 0.9931555, 0.99596, 0.9983517, 0.9996737, 1.000388, 0.978462, 1.0001, 0.9995935, 0.9992941}{0.9874055, 0.9905731, 0.9924124, 0.9954431, 0.998081, 0.9995339, 1.000339, 0.9742556, 1.000029, 0.9994638, 0.9991052}{0.9870907, 0.9906827, 0.9921013, 0.9950337, 0.997725, 0.9993856, 1.000375, 0.9736721, 1.00009, 0.9994902, 0.9990927}{0.9870452, 0.9915293, 0.9921575, 0.9950575, 0.9976923, 0.9994081, 1.00045, 0.9716816, 1.000289, 0.9996359, 0.9991256}{0.9884296, 0.9920653, 0.9919683, 0.9947191, 0.9972314, 0.9991454, 1.00051, 0.9693083, 1.000251, 0.9995067, 0.9989221}{0.9916057, 0.9929316, 0.9921183, 0.9945611, 0.997279, 0.9991946, 1.000482, 0.9735041, 1.000398, 0.9996031, 0.9989778}{0.993102, 0.9938858, 0.9927917, 0.9946629, 0.9973493, 0.9993377, 1.000741, 0.9682576, 1.000601, 0.999684, 0.9989826}{0.9926723, 0.9952612, 0.9931459, 0.9949568, 0.997398, 0.9994208, 1.000993, 0.97137, 1.000765, 0.9998065, 0.9989889}{0.9946157, 0.9951786, 0.992438, 0.9941562, 0.9971158, 0.999576, 1.001198, 0.9659507, 1.00095, 0.9998807, 0.9989965}{0.9955081, 0.9959513, 0.9932398, 0.9947996, 0.9975397, 0.999876, 1.001355, 0.965289, 1.00112, 0.9999389, 0.9989184}{0.9966049, 0.9960215, 0.993175, 0.9952255, 0.9978881, 0.9998499, 1.001407, 0.9675173, 1.001444, 1.000192, 0.9991652}{0.9972773, 0.9966165, 0.9938362, 0.9961405, 0.9981555, 1.00008, 1.001739, 0.9580586, 1.00188, 1.000343, 0.9990903}{0.9997646, 0.9984608, 0.9943528, 0.9967738, 0.9981272, 1.000471, 1.002123, 0.9662139, 1.001874, 1.000377, 0.9991236}{1.000679, 0.9992718, 0.9955051, 0.9974769, 0.9986544, 1.000862, 1.002552, 0.9651163, 1.002424, 1.000787, 0.9993625}{1.002337, 1.001317, 0.9956231, 0.9978213, 0.999601, 1.001293, 1.003007, 0.9666041, 1.002893, 1.001154, 0.9995507}{1.002973, 1.001047, 0.9971016, 0.9983434, 0.9999746, 1.001784, 1.003664, 0.9653454, 1.003285, 1.001274, 0.9995057}{1.002915, 1.00124, 0.9981138, 0.9996738, 1.000775, 1.002084, 1.004101, 0.9649043, 1.003713, 1.001736, 0.999817}{1.00257, 1.003072, 0.9994358, 0.9997031, 1.001619, 1.003032, 1.004915, 0.9680672, 1.004274, 1.002092, 0.999943}{1.001088, 1.003228, 1.000203, 1.00135, 1.00173, 1.003136, 1.005425, 0.9636002, 1.004781, 1.002389, 1.000069}{1.002359, 1.004786, 1.002591, 1.001735, 1.002725, 1.004054, 1.006364, 0.9647887, 1.005223, 1.002598, 1.00033}{1.003, 1.005623, 1.001652, 1.003049, 1.00413, 1.00528, 1.007524, 0.9662195, 1.006102, 1.003317, 1.000805}{1.002988, 1.007324, 1.002659, 1.004539, 1.005293, 1.006464, 1.008126, 0.9684548, 1.006702, 1.003891, 1.00121}{1.004337, 1.008106, 1.004641, 1.00564, 1.0061, 1.007514, 1.008951, 0.9688631, 1.007595, 1.004364, 1.001654}{1.005919, 1.008433, 1.004616, 1.006573, 1.008281, 1.008136, 1.01021, 0.9699803, 1.00813, 1.004685, 1.001734}{1.005442, 1.010094, 1.005327, 1.007081, 1.009271, 1.00925, 1.011282, 0.9719006, 1.008741, 1.005269, 1.002176}{1.006389, 1.010229, 1.007251, 1.00871, 1.010167, 1.010139, 1.012129, 0.9712407, 1.009706, 1.006078, 1.002663}{1.00343, 1.012024, 1.008054, 1.010145, 1.01107, 1.01149, 1.013068, 0.9732133, 1.010352, 1.006538, 1.003007}{1.004678, 1.012433, 1.01002, 1.011061, 1.012382, 1.013437, 1.015352, 0.9729627, 1.011626, 1.007174, 1.003426}{1.004989, 1.01487, 1.011007, 1.013021, 1.013803, 1.0137, 1.015425, 0.964316, 1.012531, 1.008109, 1.004145}{1.005869, 1.018673, 1.01142, 1.014119, 1.015405, 1.015178, 1.017575, 0.9721775, 1.013525, 1.009001, 1.004919}{1.007674, 1.018423, 1.012426, 1.015196, 1.017875, 1.018132, 1.019677, 0.9743341, 1.014406, 1.009562, 1.005475}{1.009024, 1.018794, 1.015222, 1.017588, 1.018697, 1.018758, 1.020436, 0.9793086, 1.015418, 1.009919, 1.005462}{1.007104, 1.01894, 1.016921, 1.017625, 1.019809, 1.019719, 1.021819, 0.9701857, 1.016936, 1.010794, 1.005998}{1.008424, 1.019776, 1.018834, 1.019023, 1.022006, 1.021169, 1.023869, 0.9777835, 1.01772, 1.01165, 1.006998}{1.011152, 1.022651, 1.021045, 1.020959, 1.023053, 1.022937, 1.025119, 0.9823042, 1.018639, 1.012779, 1.008117}{1.012067, 1.024809, 1.022414, 1.022782, 1.024745, 1.024805, 1.026514, 0.9806786, 1.020123, 1.013851, 1.009025}{1.008652, 1.025694, 1.023804, 1.025986, 1.027025, 1.026348, 1.027458, 0.9803116, 1.021731, 1.014785, 1.009903}{1.007377, 1.027654, 1.024554, 1.027211, 1.02923, 1.028572, 1.03002, 0.9751308, 1.022731, 1.015719, 1.010419}{1.011355, 1.028783, 1.026081, 1.028918, 1.03077, 1.030798, 1.032156, 0.9790564, 1.023886, 1.016806, 1.011083}{1.018771, 1.030728, 1.02769, 1.03064, 1.033134, 1.032698, 1.033794, 0.9857493, 1.025175, 1.018077, 1.012172}{1.019358, 1.033466, 1.027894, 1.031985, 1.034163, 1.034237, 1.03584, 0.9866904, 1.02651, 1.019535, 1.013676}{1.017122, 1.03627, 1.031155, 1.034756, 1.036879, 1.036644, 1.036864, 0.9875245, 1.028465, 1.020936, 1.014142}{1.018583, 1.037476, 1.034492, 1.03618, 1.038744, 1.038512, 1.039042, 0.9882411, 1.030026, 1.021865, 1.014659}{1.020594, 1.038398, 1.035635, 1.03798, 1.04185, 1.040384, 1.041018, 0.9923397, 1.03155, 1.022732, 1.015511}{1.019591, 1.038483, 1.037036, 1.041256, 1.044277, 1.042883, 1.042517, 0.9976133, 1.033127, 1.023975, 1.016735}{1.018306, 1.040945, 1.03816, 1.043159, 1.045835, 1.046068, 1.044171, 1.000118, 1.034763, 1.024413, 1.01726}{1.021931, 1.04269, 1.040375, 1.045442, 1.047479, 1.048181, 1.047801, 1.001744, 1.036447, 1.026055, 1.018499}{1.023456, 1.044057, 1.042165, 1.047185, 1.049824, 1.049831, 1.04946, 1.00108, 1.037908, 1.027742, 1.019812}{1.023277, 1.046808, 1.043658, 1.049385, 1.052096, 1.051631, 1.050774, 0.999445, 1.039363, 1.028912, 1.021116}{1.028796, 1.050701, 1.047795, 1.052968, 1.054368, 1.054324, 1.053149, 1.008611, 1.041261, 1.030435, 1.022741}{1.033892, 1.05248, 1.050386, 1.055544, 1.056383, 1.056869, 1.054115, 1.007262, 1.042963, 1.031972, 1.022998}{1.034017, 1.054064, 1.052061, 1.05573, 1.060529, 1.058683, 1.056372, 1.011311, 1.044382, 1.032999, 1.023786}{1.031904, 1.056268, 1.053048, 1.057871, 1.062109, 1.060811, 1.05908, 1.014318, 1.045954, 1.03417, 1.02512}{1.031053, 1.057813, 1.056412, 1.061005, 1.063466, 1.063948, 1.06152, 1.022828, 1.047804, 1.03581, 1.02679}{1.037227, 1.059797, 1.057991, 1.06576, 1.066382, 1.066071, 1.064552, 1.024318, 1.049634, 1.03789, 1.028013}{1.036695, 1.060907, 1.061259, 1.068499, 1.069878, 1.068493, 1.06691, 1.020601, 1.051938, 1.039838, 1.029414}{1.036028, 1.061312, 1.064123, 1.071816, 1.072822, 1.071935, 1.069958, 1.025681, 1.053181, 1.041425, 1.030776}{1.037309, 1.062822, 1.065452, 1.074763, 1.075815, 1.075658, 1.072227, 1.028005, 1.054289, 1.042911, 1.031843}{1.040511, 1.06773, 1.068043, 1.077379, 1.077451, 1.077704, 1.074458, 1.019975, 1.056354, 1.044137, 1.032215}{1.042104, 1.068918, 1.068894, 1.07948, 1.080218, 1.080492, 1.077287, 1.025454, 1.058916, 1.04696, 1.0348}{1.042628, 1.069361, 1.072234, 1.0813, 1.083739, 1.082843, 1.080034, 1.031873, 1.060323, 1.048892, 1.036563}{1.044806, 1.070967, 1.076694, 1.083502, 1.086884, 1.085338, 1.081887, 1.03548, 1.062384, 1.050774, 1.038284}{1.049816, 1.073989, 1.076395, 1.086184, 1.089072, 1.088344, 1.084264, 1.03602, 1.065429, 1.052852, 1.040528}{1.051474, 1.076954, 1.078431, 1.091689, 1.092006, 1.091444, 1.088537, 1.039157, 1.066814, 1.053967, 1.041442}{1.055308, 1.079989, 1.081711, 1.095955, 1.09645, 1.094525, 1.090996, 1.037951, 1.068657, 1.056898, 1.043147}{1.056096, 1.082917, 1.084842, 1.099182, 1.098817, 1.097552, 1.093394, 1.047308, 1.071392, 1.058861, 1.044092}{1.054801, 1.08571, 1.089301, 1.101611, 1.100931, 1.100314, 1.095161, 1.054408, 1.073553, 1.06, 1.044882}{1.055591, 1.087661, 1.090193, 1.105097, 1.104792, 1.102618, 1.096574, 1.046989, 1.07487, 1.061718, 1.04729}{1.055832, 1.089271, 1.092637, 1.105672, 1.108526, 1.104969, 1.100804, 1.049911, 1.077571, 1.064436, 1.049135}{1.056058, 1.093036, 1.093804, 1.106182, 1.111529, 1.107282, 1.104124, 1.055208, 1.080213, 1.066514, 1.050901}{1.056802, 1.097886, 1.093474, 1.109619, 1.114434, 1.110048, 1.106704, 1.062971, 1.082292, 1.068585, 1.052341}{1.058263, 1.098924, 1.096016, 1.114775, 1.117719, 1.113419, 1.109789, 1.057891, 1.084833, 1.070265, 1.053379}{1.059694, 1.09936, 1.099008, 1.11873, 1.121693, 1.116684, 1.112553, 1.058158, 1.086884, 1.071224, 1.054401}{1.062822, 1.100532, 1.104609, 1.121919, 1.125125, 1.121342, 1.116304, 1.058872, 1.089137, 1.074197, 1.057549}{1.066134, 1.105001, 1.10819, 1.125237, 1.128246, 1.126163, 1.119458, 1.059187, 1.091525, 1.076647, 1.060923}{1.068097, 1.107293, 1.11096, 1.128128, 1.132112, 1.129842, 1.121742, 1.067273, 1.09394, 1.079232, 1.063708}{1.066944, 1.107243, 1.113279, 1.131901, 1.136954, 1.130829, 1.125618, 1.069448, 1.097234, 1.082294, 1.065324}{1.065822, 1.108093, 1.116045, 1.135687, 1.138824, 1.131787, 1.128341, 1.0726, 1.100112, 1.084119, 1.066905}{1.071168, 1.113102, 1.121745, 1.139069, 1.141698, 1.134846, 1.131731, 1.076427, 1.102583, 1.086666, 1.069277}{1.078982, 1.116184, 1.124304, 1.142172, 1.144004, 1.138716, 1.135293, 1.078372, 1.105177, 1.088596, 1.071871}{1.085763, 1.118644, 1.126692, 1.144837, 1.146083, 1.142634, 1.138196, 1.081629, 1.107114, 1.090214, 1.074321}{1.08716, 1.118608, 1.128568, 1.148124, 1.149449, 1.146814, 1.141942, 1.083031, 1.108795, 1.092312, 1.076484}{1.088528, 1.119001, 1.13049, 1.151206, 1.152636, 1.15083, 1.145214, 1.08554, 1.110394, 1.094117, 1.078604}{1.090355, 1.120961, 1.13223, 1.154428, 1.156119, 1.154026, 1.148118, 1.089037, 1.113539, 1.097909, 1.080069}{1.092484, 1.122862, 1.136563, 1.158297, 1.15938, 1.156694, 1.150914, 1.079617, 1.117951, 1.101147, 1.081067}{1.094652, 1.124753, 1.140716, 1.16137, 1.16226, 1.159336, 1.153484, 1.083246, 1.121664, 1.102907, 1.082074}{1.100106, 1.128934, 1.141157, 1.16316, 1.164076, 1.162552, 1.159378, 1.093504, 1.124769, 1.104848, 1.08491}{1.1055, 1.133324, 1.139391, 1.164925, 1.168244, 1.165685, 1.163696, 1.106596, 1.127776, 1.107192, 1.087681}};$/;" v +NOZCOOL_DESdepth baryons2.h /^ static double NOZCOOL_DESdepth[100][11]={{0.9985162, 0.9990644, 0.9993579, 0.9995421, 0.9997053, 0.9998427, 0.9999944, 1.000087, 1.000175, 1.000267, 1.000372}{0.9970993, 0.9980107, 0.9985687, 0.9989136, 0.9991069, 0.9992959, 0.9995091, 0.9996959, 0.9998575, 0.9999883, 1.000126}{0.9950728, 0.9963094, 0.9974101, 0.9979237, 0.9983466, 0.9986569, 0.9989661, 0.9991912, 0.9993935, 0.9995899, 0.9998028}{0.9937125, 0.9956226, 0.9969145, 0.9974468, 0.9976517, 0.9978492, 0.9982503, 0.9985379, 0.9987925, 0.999043, 0.9993391}{0.9919158, 0.994528, 0.9962646, 0.9965589, 0.9967023, 0.9969155, 0.9973193, 0.9976493, 0.9979785, 0.9983675, 0.9987863}{0.9908396, 0.9932565, 0.9951334, 0.9955348, 0.9957161, 0.9959677, 0.9964353, 0.9968486, 0.9972767, 0.9977793, 0.9983069}{0.9898224, 0.9922295, 0.9944029, 0.9946013, 0.9946397, 0.9947687, 0.995288, 0.9957687, 0.996299, 0.9969168, 0.9975582}{0.9882405, 0.9903662, 0.9925999, 0.9928451, 0.9931362, 0.9936194, 0.9943632, 0.994969, 0.9955513, 0.9962386, 0.9970125}{0.986594, 0.9891451, 0.9916765, 0.9917387, 0.9919326, 0.9922781, 0.993195, 0.9938432, 0.9944853, 0.9952641, 0.9961774}{0.9853322, 0.9875564, 0.9903588, 0.9904053, 0.9905252, 0.9909504, 0.992071, 0.9927582, 0.9934578, 0.9944114, 0.9955736}{0.9852575, 0.9879425, 0.9908382, 0.9903315, 0.9898735, 0.9899787, 0.9908723, 0.9914434, 0.9921364, 0.993182, 0.9944747}{0.9867572, 0.9883332, 0.9907473, 0.9895409, 0.988803, 0.9888349, 0.9895824, 0.9900832, 0.9907996, 0.9920814, 0.9936176}{0.9873684, 0.9882472, 0.9909266, 0.989082, 0.9878972, 0.987532, 0.9881744, 0.9888371, 0.9896698, 0.9911389, 0.9928493}{0.9881402, 0.9888719, 0.9907953, 0.988039, 0.9861927, 0.9858615, 0.9867193, 0.9874445, 0.9884321, 0.9900055, 0.991881}{0.987737, 0.9891748, 0.9904644, 0.9871633, 0.9847933, 0.9843788, 0.9853035, 0.986053, 0.9870345, 0.9887432, 0.990842}{0.9880309, 0.9892342, 0.9908377, 0.9870621, 0.9842894, 0.9833656, 0.9840967, 0.9847325, 0.9857942, 0.9875223, 0.9896919}{0.9884873, 0.9886889, 0.990319, 0.9856597, 0.983124, 0.98286, 0.9833624, 0.9837856, 0.984587, 0.9863045, 0.9887344}{0.9919616, 0.9903213, 0.9907753, 0.9851736, 0.9822748, 0.9814339, 0.9819891, 0.9822979, 0.983162, 0.9849718, 0.9875529}{0.9934404, 0.9923502, 0.9915889, 0.9856351, 0.9825537, 0.981076, 0.981229, 0.9813613, 0.9820003, 0.9838461, 0.9865873}{0.9944291, 0.9935311, 0.9922774, 0.9855407, 0.9818977, 0.9799404, 0.9801995, 0.9801362, 0.9808505, 0.982842, 0.98585}{0.996577, 0.9947131, 0.9919242, 0.9847322, 0.9807258, 0.9782983, 0.9787142, 0.9785738, 0.9791164, 0.9813252, 0.9845004}{0.997682, 0.9947723, 0.9914161, 0.9841598, 0.9798615, 0.9769809, 0.9770553, 0.9770143, 0.9776809, 0.9801065, 0.9833457}{0.9987193, 0.9952593, 0.9903264, 0.98262, 0.9780844, 0.9752269, 0.975983, 0.9759595, 0.9764026, 0.9785811, 0.9818796}{0.9996153, 0.9938562, 0.9905781, 0.9832832, 0.9784028, 0.9756175, 0.9759095, 0.9750916, 0.9747335, 0.9770267, 0.9807955}{1.002914, 0.9939896, 0.9920983, 0.984037, 0.9783325, 0.9754057, 0.9746416, 0.9731114, 0.9731749, 0.9759066, 0.9798493}{1.003968, 0.9945215, 0.9933578, 0.9838683, 0.978137, 0.9746065, 0.9734195, 0.9721727, 0.9722981, 0.9748579, 0.9788411}{1.007205, 0.9966487, 0.9941175, 0.9835255, 0.9774195, 0.9736171, 0.9729576, 0.9715268, 0.971268, 0.9738143, 0.9777378}{1.007593, 0.9975114, 0.9937038, 0.9841525, 0.9766054, 0.9723215, 0.9715795, 0.9702312, 0.9701166, 0.9728055, 0.9768661}{1.00782, 0.9984328, 0.9925589, 0.9843937, 0.9773429, 0.972332, 0.9712519, 0.9692422, 0.9684839, 0.9710837, 0.9755986}{1.006533, 0.9972628, 0.9938418, 0.9846264, 0.9763594, 0.970736, 0.9703358, 0.9684283, 0.9676625, 0.9703246, 0.9747926}{1.004952, 0.9994252, 0.9944492, 0.984126, 0.9769289, 0.9709816, 0.9696007, 0.9668545, 0.9657094, 0.9688982, 0.9736288}{1.007813, 0.9988501, 0.995617, 0.9860078, 0.9777349, 0.9699878, 0.9680203, 0.9654909, 0.9650138, 0.9681599, 0.9729108}{1.007853, 0.999249, 0.9963074, 0.9843464, 0.9762384, 0.9692748, 0.9674548, 0.9652589, 0.9646714, 0.9675583, 0.9723471}{1.008918, 1.00082, 0.997517, 0.9843173, 0.9753821, 0.9680706, 0.966301, 0.9644855, 0.9640122, 0.9670309, 0.9715}{1.011195, 0.9998062, 0.9981152, 0.9866823, 0.9753643, 0.9674792, 0.9659485, 0.9639022, 0.9635993, 0.9658278, 0.9701581}{1.013934, 1.000423, 0.997397, 0.984814, 0.9739777, 0.966796, 0.9661019, 0.9641685, 0.9628787, 0.9649573, 0.9700329}{1.013319, 1.001739, 0.9989523, 0.983553, 0.9734384, 0.9661499, 0.9654904, 0.9631569, 0.9617932, 0.9639543, 0.9692221}{1.01471, 1.002655, 0.9980797, 0.9844851, 0.9746326, 0.9658918, 0.9648742, 0.962065, 0.9599568, 0.9625816, 0.967891}{1.011097, 1.003437, 0.9981863, 0.9840528, 0.9731489, 0.9656473, 0.9645417, 0.9610852, 0.9590204, 0.9616272, 0.9670088}{1.011059, 1.005733, 0.9962771, 0.9828813, 0.9752031, 0.9637087, 0.9636278, 0.9604747, 0.9584192, 0.9620867, 0.9677138}{1.011036, 1.00573, 0.9998546, 0.9829705, 0.9741465, 0.9638714, 0.9634038, 0.9596795, 0.9581339, 0.9606145, 0.9661521}{1.012653, 1.009607, 1.000176, 0.9820662, 0.9732633, 0.9632056, 0.9619135, 0.9588123, 0.9574557, 0.9601509, 0.9654584}{1.015843, 1.013236, 0.9988285, 0.9819978, 0.9721729, 0.9613253, 0.9610875, 0.9590447, 0.9577155, 0.9605762, 0.9660072}{1.017574, 1.010435, 1.000642, 0.9852431, 0.9737283, 0.9617113, 0.9616824, 0.9583844, 0.9558063, 0.9580579, 0.9639769}{1.015156, 1.011009, 0.9987591, 0.9841751, 0.9745118, 0.9596979, 0.9592429, 0.956586, 0.9559982, 0.9574621, 0.9643424}{1.017355, 1.013185, 1.00003, 0.9846669, 0.9744451, 0.9601955, 0.959263, 0.9572932, 0.955226, 0.957112, 0.9640402}{1.021455, 1.012966, 1.002112, 0.9856953, 0.9750474, 0.9617738, 0.9598925, 0.9563804, 0.9548751, 0.9566919, 0.963339}{1.022833, 1.013593, 1.00388, 0.9867078, 0.9750369, 0.9620354, 0.9590325, 0.9562649, 0.9550488, 0.9566952, 0.9629691}{1.017776, 1.009473, 1.000804, 0.985495, 0.9729502, 0.9621015, 0.9587166, 0.9561235, 0.9550321, 0.9556714, 0.9617872}{1.016993, 1.01255, 1.001388, 0.9842783, 0.9728529, 0.9624398, 0.9593321, 0.9565325, 0.9534359, 0.955196, 0.9616464}{1.021291, 1.014474, 1.002319, 0.9845629, 0.9733022, 0.9622155, 0.9592815, 0.9549487, 0.9542785, 0.955175, 0.9621235}{1.02839, 1.014252, 1.003914, 0.984927, 0.9732694, 0.9615744, 0.9582911, 0.9555994, 0.9546729, 0.9552485, 0.9627008}{1.029594, 1.015875, 1.00578, 0.9837407, 0.971926, 0.9619916, 0.9563833, 0.9541938, 0.9538676, 0.954732, 0.9623523}{1.026929, 1.015773, 1.006922, 0.9844801, 0.9739179, 0.9604086, 0.9571339, 0.9553898, 0.9534214, 0.9550716, 0.9615871}{1.02785, 1.017125, 1.007398, 0.9877, 0.9740863, 0.9599283, 0.9580908, 0.9552597, 0.9528844, 0.9549449, 0.9622197}{1.029602, 1.015459, 1.007761, 0.9875783, 0.9735245, 0.9602751, 0.9586909, 0.9559302, 0.9526041, 0.9549958, 0.962705}{1.028605, 1.015621, 1.006126, 0.9855812, 0.972145, 0.9607636, 0.9610921, 0.9560013, 0.952296, 0.9543719, 0.9615884}{1.023619, 1.018435, 1.006291, 0.9843351, 0.9732153, 0.9600715, 0.95888, 0.9551185, 0.9532176, 0.9548984, 0.9614093}{1.028113, 1.017376, 1.008004, 0.9862378, 0.9728082, 0.9611857, 0.958235, 0.9545875, 0.9533419, 0.9542957, 0.9621708}{1.031442, 1.01711, 1.009068, 0.9853701, 0.972491, 0.9610766, 0.9567596, 0.9537858, 0.9533641, 0.9543147, 0.9619876}{1.031846, 1.017011, 1.009128, 0.9846738, 0.972553, 0.960306, 0.9565212, 0.9547602, 0.9530834, 0.9541428, 0.9612105}{1.034721, 1.021538, 1.010139, 0.9864801, 0.9764235, 0.9630388, 0.9589067, 0.9546113, 0.9523325, 0.9547786, 0.9623269}{1.039817, 1.02403, 1.013546, 0.988059, 0.9766506, 0.9642363, 0.9576677, 0.9538687, 0.9546199, 0.9553228, 0.9608834}{1.040318, 1.02347, 1.013975, 0.9881292, 0.9758269, 0.9611548, 0.9555345, 0.95516, 0.9537122, 0.9539323, 0.9603208}{1.039086, 1.021462, 1.013074, 0.9874348, 0.9745491, 0.9588746, 0.9570904, 0.9545224, 0.952572, 0.9537245, 0.9605266}{1.039347, 1.021479, 1.011726, 0.987986, 0.9756054, 0.9613854, 0.9575611, 0.9542247, 0.9527828, 0.9546288, 0.9611754}{1.042359, 1.023181, 1.01183, 0.9899553, 0.9749262, 0.9627809, 0.9586035, 0.9549351, 0.9532447, 0.9551744, 0.962374}{1.039938, 1.025484, 1.011274, 0.9904495, 0.9760652, 0.9624664, 0.9587732, 0.9557692, 0.9549663, 0.954448, 0.9624818}{1.038618, 1.021526, 1.010333, 0.9901791, 0.9754086, 0.9630167, 0.9591042, 0.9556274, 0.9544001, 0.9552607, 0.9630166}{1.039901, 1.020376, 1.010862, 0.9897712, 0.9755941, 0.9640722, 0.9577071, 0.9559872, 0.9548593, 0.9564936, 0.9639997}{1.042537, 1.021756, 1.015831, 0.9913366, 0.9770893, 0.9631477, 0.9593874, 0.9559218, 0.9542642, 0.956536, 0.9645226}{1.045302, 1.026582, 1.013542, 0.9909095, 0.9754694, 0.9624461, 0.9593555, 0.9560332, 0.9544481, 0.9570892, 0.964739}{1.046158, 1.026896, 1.011926, 0.989853, 0.9771835, 0.9619866, 0.9592484, 0.9561304, 0.9549889, 0.956874, 0.964707}{1.04737, 1.025562, 1.012045, 0.9903921, 0.9773395, 0.9618694, 0.9594663, 0.9570025, 0.9544491, 0.9567664, 0.9646614}{1.05017, 1.026887, 1.013581, 0.9891053, 0.976177, 0.9623594, 0.9609238, 0.9565615, 0.9542702, 0.9570743, 0.9648962}{1.050222, 1.025043, 1.015344, 0.9897984, 0.9775507, 0.9648207, 0.9615102, 0.9570051, 0.9549605, 0.9578077, 0.9662057}{1.055358, 1.026808, 1.014808, 0.992461, 0.977413, 0.9670813, 0.9633097, 0.9584976, 0.9557212, 0.9585014, 0.9666203}{1.055463, 1.025035, 1.016677, 0.993659, 0.9789638, 0.9680791, 0.9640518, 0.9586206, 0.9561442, 0.959116, 0.9672319}{1.052408, 1.026225, 1.018109, 0.9955378, 0.9800576, 0.9680957, 0.9638478, 0.9591144, 0.9568174, 0.9595814, 0.9675984}{1.054237, 1.029072, 1.017813, 0.9962823, 0.980173, 0.9681865, 0.9647693, 0.9599681, 0.9571648, 0.9591004, 0.9664384}{1.051992, 1.032305, 1.020061, 0.9974165, 0.9805999, 0.9666221, 0.9638092, 0.9601328, 0.9582195, 0.9585504, 0.967709}{1.049696, 1.032578, 1.022311, 0.9981032, 0.9810223, 0.965064, 0.9638867, 0.9609473, 0.9586289, 0.9580151, 0.9690011}{1.049315, 1.03111, 1.022535, 0.9966761, 0.9797312, 0.964697, 0.9646015, 0.9612701, 0.9592017, 0.959046, 0.9699821}{1.051575, 1.02982, 1.021906, 0.9931754, 0.9782448, 0.9659697, 0.9644143, 0.961625, 0.9611419, 0.9602187, 0.9705462}{1.053787, 1.032149, 1.020418, 0.9916076, 0.977664, 0.9672393, 0.9640416, 0.9631359, 0.9621616, 0.9611456, 0.9710939}{1.055293, 1.03449, 1.021068, 0.9939127, 0.97963, 0.9689292, 0.9655532, 0.9646643, 0.9636764, 0.9628055, 0.9718896}{1.056627, 1.032407, 1.022368, 0.996367, 0.9817577, 0.9706393, 0.9667906, 0.965995, 0.9652165, 0.9646262, 0.9727044}{1.057181, 1.030171, 1.024005, 0.9971503, 0.9829886, 0.971854, 0.9677207, 0.9677855, 0.96561, 0.9650222, 0.973626}{1.055894, 1.029149, 1.025455, 0.9960848, 0.983776, 0.971941, 0.9696919, 0.9695928, 0.9634336, 0.9638083, 0.974868}{1.054641, 1.0262, 1.026315, 0.9962362, 0.9843789, 0.9720269, 0.9721161, 0.9678344, 0.9621792, 0.9631379, 0.9760954}{1.058582, 1.027279, 1.026296, 1.00106, 0.984228, 0.972757, 0.973251, 0.9667037, 0.9621212, 0.9648972, 0.9766942}{1.064506, 1.03142, 1.02664, 1.006234, 0.9840228, 0.9737227, 0.9725318, 0.9665401, 0.9626362, 0.9669355, 0.9770426}{1.069863, 1.035123, 1.029287, 1.005706, 0.9842786, 0.974534, 0.9719435, 0.9667118, 0.9641131, 0.967839, 0.9775261}{1.072323, 1.033089, 1.030083, 1.004506, 0.98421, 0.9745901, 0.9720882, 0.9670179, 0.9648756, 0.9680838, 0.9787793}{1.074733, 1.032798, 1.030693, 1.004003, 0.9841396, 0.9746445, 0.9722395, 0.9676153, 0.9653134, 0.9684033, 0.9800037}{1.07657, 1.036, 1.02984, 1.003633, 0.985048, 0.975239, 0.9730104, 0.9685157, 0.9662992, 0.9688383, 0.9810842}{1.078007, 1.038705, 1.029073, 1.003137, 0.9865985, 0.9762019, 0.9738803, 0.9696762, 0.9677161, 0.9688345, 0.9820666}{1.079447, 1.039095, 1.028435, 1.004042, 0.9876231, 0.9771067, 0.9746908, 0.9708228, 0.9677277, 0.9692905, 0.9830406}{1.082143, 1.036817, 1.030899, 1.005277, 0.9867491, 0.9761215, 0.9738076, 0.9701971, 0.9680568, 0.9702355, 0.9842918}{1.084809, 1.036158, 1.033308, 1.005479, 0.9859003, 0.9751485, 0.9732687, 0.9704482, 0.9685983, 0.9711548, 0.9855087}};$/;" v +NOZCOOL_LSSTdepth baryons2.h /^ static double NOZCOOL_LSSTdepth[100][11]={{0.9985162, 0.9993199, 0.9996571, 0.9998762, 1.000087, 1.000241, 1.00038, 0.9874492, 1.000462, 1.000488, 1.00046}{0.9970993, 0.9984401, 0.9989939, 0.9993586, 0.9996959, 0.9999431, 1.000153, 0.9949615, 1.00031, 1.000359, 1.000341}{0.9950728, 0.99721, 0.9981701, 0.9987224, 0.9991912, 0.9995433, 0.9998399, 0.9846464, 1.000114, 1.000191, 1.000194}{0.9937125, 0.9966709, 0.9975228, 0.9979819, 0.9985379, 0.9989512, 0.9994389, 0.9948458, 0.999882, 1.000008, 1.000024}{0.9919158, 0.9959686, 0.9966212, 0.9970025, 0.9976493, 0.9982821, 0.9988827, 0.9806759, 0.9995501, 0.9997314, 0.9997935}{0.9908396, 0.9948345, 0.9956238, 0.9960762, 0.9968486, 0.9976437, 0.9984712, 0.9865558, 0.999293, 0.9995258, 0.9995978}{0.9898224, 0.99401, 0.9945421, 0.9949367, 0.9957687, 0.9967637, 0.9977366, 0.982157, 0.9988613, 0.9991635, 0.9993019}{0.9882405, 0.9922166, 0.9929743, 0.9937787, 0.994969, 0.9960629, 0.9972459, 0.978283, 0.9985713, 0.9989311, 0.9990848}{0.986594, 0.9913207, 0.9917721, 0.992527, 0.9938432, 0.9950308, 0.9964767, 0.9783639, 0.998175, 0.9986206, 0.9988349}{0.9853322, 0.9900269, 0.9905117, 0.9911784, 0.9927582, 0.9941696, 0.9958919, 0.9718012, 0.9977971, 0.9983026, 0.998551}{0.9852575, 0.9904499, 0.990037, 0.9901812, 0.9914434, 0.9928794, 0.9948794, 0.9787572, 0.9971972, 0.9978555, 0.9981859}{0.9867572, 0.9904557, 0.989066, 0.9889866, 0.9900832, 0.9917823, 0.9940398, 0.9697994, 0.9967743, 0.9975004, 0.9978911}{0.9873684, 0.9906982, 0.9883353, 0.9876831, 0.9888371, 0.9907717, 0.993391, 0.9732644, 0.9963714, 0.9971622, 0.9975519}{0.9881402, 0.9908483, 0.9869491, 0.9860357, 0.9874445, 0.9896232, 0.9924168, 0.9683841, 0.9957739, 0.9966497, 0.9971271}{0.987737, 0.9906847, 0.9857763, 0.9846044, 0.986053, 0.9883215, 0.9914632, 0.9670286, 0.995217, 0.9962539, 0.9967728}{0.9880309, 0.9910657, 0.9853666, 0.9836066, 0.9847325, 0.9870404, 0.990341, 0.9640813, 0.994678, 0.9958439, 0.9964686}{0.9884873, 0.9906692, 0.9840317, 0.9829504, 0.9837856, 0.9858287, 0.9894533, 0.9609623, 0.9939795, 0.9952772, 0.9959316}{0.9919616, 0.9915383, 0.9835159, 0.9815206, 0.9822979, 0.9844123, 0.988367, 0.9642947, 0.9935292, 0.994905, 0.9956661}{0.9934404, 0.9923538, 0.9839765, 0.981107, 0.9813613, 0.9833332, 0.9873757, 0.9580669, 0.9928409, 0.9943645, 0.9952478}{0.9944291, 0.9935623, 0.9834114, 0.9800262, 0.9801362, 0.9822469, 0.9866614, 0.9603001, 0.9923265, 0.9939572, 0.9948483}{0.996577, 0.9933128, 0.9825157, 0.9783815, 0.9785738, 0.9807441, 0.9853593, 0.9538213, 0.9916133, 0.9933573, 0.9943931}{0.997682, 0.992858, 0.9818592, 0.9769319, 0.9770143, 0.9795312, 0.9841554, 0.9519718, 0.990742, 0.9925918, 0.9937674}{0.9987193, 0.9920142, 0.9800928, 0.9753789, 0.9759595, 0.9779916, 0.9828346, 0.9530831, 0.9902123, 0.992243, 0.9935628}{0.9996153, 0.9919084, 0.9805486, 0.9757808, 0.9750916, 0.9764748, 0.9817168, 0.9427015, 0.9896394, 0.991564, 0.992905}{1.002914, 0.9932457, 0.9807569, 0.9752506, 0.9731114, 0.9752077, 0.9809059, 0.9495139, 0.9886526, 0.9908806, 0.9924141}{1.003968, 0.9946131, 0.9807655, 0.9743576, 0.9721727, 0.9742344, 0.979863, 0.9473183, 0.9882312, 0.9906286, 0.9921536}{1.007205, 0.9963517, 0.979899, 0.9734813, 0.9715268, 0.973173, 0.9788626, 0.9474735, 0.9876233, 0.9900349, 0.991619}{1.007593, 0.9957046, 0.9799985, 0.9721485, 0.9702312, 0.9720828, 0.9780195, 0.9450699, 0.987008, 0.9894733, 0.9911047}{1.00782, 0.9941261, 0.9807009, 0.9720978, 0.9692422, 0.9703686, 0.9767853, 0.9433714, 0.9862637, 0.9888998, 0.9906875}{1.006533, 0.9951073, 0.9801574, 0.9706531, 0.9684283, 0.9695173, 0.9760786, 0.945038, 0.9854631, 0.988282, 0.9900844}{1.004952, 0.9959865, 0.9803008, 0.9708512, 0.9668545, 0.968086, 0.9749072, 0.9393259, 0.9848721, 0.9876886, 0.9896585}{1.007813, 0.9966355, 0.9818564, 0.9695861, 0.9654909, 0.9673063, 0.9742953, 0.9391832, 0.9843706, 0.9871884, 0.9892326}{1.007853, 0.9976079, 0.9800757, 0.968779, 0.9652589, 0.9667657, 0.9736807, 0.9390965, 0.9838304, 0.9868302, 0.9889526}{1.008918, 0.9990359, 0.9794961, 0.9677053, 0.9644855, 0.9662629, 0.9728099, 0.9400211, 0.9833621, 0.9864586, 0.9886374}{1.011195, 0.999334, 0.9805823, 0.9671512, 0.9639022, 0.965076, 0.9716026, 0.9389532, 0.9829867, 0.986046, 0.9883251}{1.013934, 0.9986785, 0.9789239, 0.9666393, 0.9641685, 0.9641444, 0.9715395, 0.938708, 0.9824371, 0.9853178, 0.9875976}{1.013319, 1.000708, 0.9780864, 0.966023, 0.9631569, 0.9630151, 0.9707446, 0.9393768, 0.9818889, 0.9850299, 0.9873902}{1.01471, 1.000278, 0.9792829, 0.9656863, 0.962065, 0.9618008, 0.9695537, 0.937209, 0.9813453, 0.9844607, 0.9869117}{1.011097, 1.000528, 0.9780283, 0.9654215, 0.9610852, 0.9606573, 0.9687878, 0.9376981, 0.9807241, 0.9840203, 0.9863908}{1.011059, 0.9990288, 0.9788302, 0.9633743, 0.9604747, 0.9611269, 0.9693995, 0.9359455, 0.9805237, 0.983746, 0.9861102}{1.011036, 1.000926, 0.978727, 0.9639701, 0.9596795, 0.9597121, 0.9674848, 0.9259711, 0.9801115, 0.9832935, 0.9858232}{1.012653, 1.004785, 0.9777527, 0.9628619, 0.9588123, 0.9591652, 0.9675828, 0.9318586, 0.9796135, 0.9829572, 0.9857003}{1.015843, 1.002287, 0.9775878, 0.9612766, 0.9590447, 0.9596434, 0.9675261, 0.9321616, 0.9791708, 0.9827951, 0.9855385}{1.017574, 1.003227, 0.9793081, 0.9616984, 0.9583844, 0.9571156, 0.9656276, 0.9353347, 0.9784472, 0.9815157, 0.9843095}{1.015156, 1.002167, 0.979435, 0.9595758, 0.956586, 0.9564438, 0.9660953, 0.9254839, 0.9786653, 0.9814136, 0.9838968}{1.017355, 1.002074, 0.9799997, 0.9601522, 0.9572932, 0.955854, 0.9657789, 0.9310073, 0.9781804, 0.9810376, 0.9839653}{1.021455, 1.00448, 0.9810138, 0.9614073, 0.9563804, 0.9554556, 0.9648322, 0.9335285, 0.9776868, 0.9809792, 0.9840233}{1.022833, 1.00612, 0.9810048, 0.9614203, 0.9562649, 0.955536, 0.9644665, 0.9302552, 0.9775705, 0.9807373, 0.9835995}{1.017776, 1.002813, 0.9792473, 0.9614963, 0.9561235, 0.954613, 0.9635121, 0.9284942, 0.9774587, 0.9803217, 0.9835903}{1.016993, 1.004005, 0.978376, 0.9617543, 0.9565325, 0.9541365, 0.963653, 0.9219057, 0.9769133, 0.9800094, 0.9831575}{1.021291, 1.004533, 0.9787566, 0.9616252, 0.9549487, 0.9539803, 0.9640606, 0.9239504, 0.9764562, 0.9796404, 0.9828183}{1.02839, 1.006059, 0.9791597, 0.9608969, 0.9555994, 0.9539092, 0.9639278, 0.9287523, 0.9761035, 0.9795477, 0.9828007}{1.029594, 1.008264, 0.9776505, 0.9609838, 0.9541938, 0.9533617, 0.9639591, 0.9281905, 0.9762188, 0.9802046, 0.9832507}{1.026929, 1.008804, 0.9789738, 0.9591675, 0.9553898, 0.953705, 0.9630997, 0.9273589, 0.9760983, 0.9796644, 0.9826217}{1.02785, 1.008667, 0.9810391, 0.9595553, 0.9552597, 0.953811, 0.9636742, 0.9265427, 0.9762879, 0.9797274, 0.9822286}{1.029602, 1.008801, 0.980483, 0.959915, 0.9559302, 0.9535515, 0.9635221, 0.9286339, 0.9764812, 0.9794029, 0.9821287}{1.028605, 1.007625, 0.9784428, 0.9608316, 0.9560013, 0.9530213, 0.962465, 0.932202, 0.9762432, 0.9791735, 0.9821997}{1.023619, 1.0084, 0.9787098, 0.9600468, 0.9551185, 0.9535613, 0.9622385, 0.9327011, 0.9765626, 0.9786984, 0.9817197}{1.028113, 1.009256, 0.9794145, 0.9609337, 0.9545875, 0.9531586, 0.9630493, 0.933073, 0.9768383, 0.9789369, 0.9817176}{1.031442, 1.009784, 0.978626, 0.9601284, 0.9537858, 0.9527918, 0.9630911, 0.9307449, 0.9768656, 0.9792126, 0.982014}{1.031846, 1.010975, 0.9780981, 0.9595175, 0.9547602, 0.9528452, 0.9624962, 0.9267575, 0.9768006, 0.9794244, 0.9823625}{1.034721, 1.012259, 0.9816676, 0.9622278, 0.9546113, 0.9534055, 0.9631066, 0.9336411, 0.9769339, 0.9794329, 0.9822986}{1.039817, 1.015246, 0.9824731, 0.9634446, 0.9538687, 0.953919, 0.9616176, 0.9310289, 0.9768846, 0.9792332, 0.9817447}{1.040318, 1.015946, 0.9819715, 0.9593572, 0.95516, 0.9530122, 0.9614582, 0.9337959, 0.9764135, 0.9786549, 0.9813617}{1.039086, 1.015692, 0.9812026, 0.9585729, 0.9545224, 0.9523986, 0.9625912, 0.9350186, 0.9765392, 0.978743, 0.981431}{1.039347, 1.014336, 0.9821791, 0.9605821, 0.9542247, 0.9534305, 0.9629488, 0.9409949, 0.977561, 0.9796078, 0.9820379}{1.042359, 1.014647, 0.9822299, 0.9620208, 0.9549351, 0.9539315, 0.9638115, 0.9405081, 0.9774193, 0.9801564, 0.9821217}{1.039938, 1.014013, 0.9829194, 0.9615642, 0.9557692, 0.9531659, 0.9636821, 0.9354796, 0.9775012, 0.980321, 0.9822331}{1.038618, 1.012467, 0.9826992, 0.9624067, 0.9556274, 0.9536834, 0.9649098, 0.9382652, 0.9770355, 0.9806881, 0.9823173}{1.039901, 1.011869, 0.9823861, 0.9627528, 0.9559872, 0.9551187, 0.9650901, 0.9386059, 0.9769432, 0.9809651, 0.9821653}{1.042537, 1.017418, 0.9840228, 0.962281, 0.9559218, 0.9550822, 0.9653225, 0.930566, 0.9777942, 0.9804523, 0.9813815}{1.045302, 1.017381, 0.98295, 0.9616636, 0.9560332, 0.9556033, 0.9656143, 0.9333537, 0.9779253, 0.9816836, 0.9824145}{1.046158, 1.015088, 0.9832853, 0.9613835, 0.9561304, 0.9554722, 0.9657529, 0.9373935, 0.977739, 0.982089, 0.9831181}{1.04737, 1.015096, 0.9842274, 0.9613325, 0.9570025, 0.9553063, 0.9655962, 0.9391774, 0.9783349, 0.9829557, 0.9838875}{1.05017, 1.017282, 0.9826442, 0.962061, 0.9565615, 0.9556187, 0.9660889, 0.9379413, 0.9798245, 0.9837376, 0.9849096}{1.050222, 1.018862, 0.9836964, 0.9644561, 0.9570051, 0.9562964, 0.9673368, 0.9387344, 0.9795581, 0.983479, 0.9845019}{1.055358, 1.017657, 0.9845542, 0.9664191, 0.9584976, 0.9569137, 0.9676457, 0.9354232, 0.9797357, 0.9846132, 0.9847975}{1.055463, 1.018658, 0.9857205, 0.9672627, 0.9586206, 0.9576056, 0.968065, 0.9422771, 0.9805815, 0.984794, 0.9845066}{1.052408, 1.021715, 0.9876617, 0.9672086, 0.9591144, 0.958063, 0.9680936, 0.9475803, 0.9809042, 0.9844674, 0.9841287}{1.054237, 1.021042, 0.9877085, 0.9674651, 0.9599681, 0.9577122, 0.9677878, 0.9396882, 0.9808161, 0.9849296, 0.9851453}{1.051992, 1.022105, 0.9885813, 0.9658383, 0.9601328, 0.9572092, 0.9692205, 0.939815, 0.9821269, 0.986376, 0.9860347}{1.049696, 1.024174, 0.988841, 0.9642063, 0.9609473, 0.9567115, 0.9699689, 0.9431092, 0.9834154, 0.9877397, 0.98689}{1.049315, 1.026725, 0.9873781, 0.9646773, 0.9612701, 0.9569111, 0.9701702, 0.9481807, 0.984082, 0.9883223, 0.9871981}{1.051575, 1.02644, 0.9857126, 0.9660213, 0.961625, 0.9580635, 0.9707893, 0.9416428, 0.9842517, 0.9878443, 0.986771}{1.053787, 1.025793, 0.9843327, 0.9667484, 0.9631359, 0.9591795, 0.9716798, 0.9399593, 0.9842567, 0.9873621, 0.9863503}{1.055293, 1.02414, 0.9865509, 0.9682756, 0.9646643, 0.9608635, 0.9725993, 0.9387312, 0.9848, 0.9882398, 0.9880793}{1.056627, 1.025326, 0.9883634, 0.9700771, 0.965995, 0.9626176, 0.9733135, 0.93754, 0.9854771, 0.9893576, 0.9900981}{1.057181, 1.025045, 0.9893146, 0.9709947, 0.9677855, 0.9635238, 0.9739312, 0.943105, 0.9864695, 0.9905412, 0.9916137}{1.055894, 1.025171, 0.9895612, 0.9710926, 0.9695928, 0.9623864, 0.9753066, 0.9441631, 0.9880546, 0.9917978, 0.992056}{1.054641, 1.026476, 0.9902312, 0.9716382, 0.9678344, 0.961282, 0.9763976, 0.9464226, 0.9894396, 0.9926233, 0.9924889}{1.058582, 1.030195, 0.9942636, 0.9729459, 0.9667037, 0.9623805, 0.976953, 0.9478522, 0.9900457, 0.9935202, 0.9932949}{1.064506, 1.030492, 0.9939504, 0.9739569, 0.9665401, 0.9643248, 0.9773992, 0.9476329, 0.9905059, 0.994016, 0.994215}{1.069863, 1.030688, 0.993482, 0.9739905, 0.9667118, 0.9660056, 0.978241, 0.9485114, 0.9910109, 0.9941908, 0.9951512}{1.072323, 1.031027, 0.9929482, 0.9740593, 0.9670179, 0.9662763, 0.979611, 0.9478492, 0.9911848, 0.993771, 0.9963523}{1.074733, 1.031742, 0.9928806, 0.97413, 0.9676153, 0.9665363, 0.9808272, 0.9485173, 0.991303, 0.9941296, 0.9975291}{1.07657, 1.032332, 0.9926923, 0.9747803, 0.9685157, 0.9666481, 0.9819303, 0.9496551, 0.9920617, 0.9959633, 0.997648}{1.078007, 1.031588, 0.9939244, 0.9757996, 0.9696762, 0.966661, 0.982994, 0.9398754, 0.9935651, 0.9976868, 0.9970559}{1.079447, 1.030863, 0.9951221, 0.9766038, 0.9708228, 0.9666954, 0.9838529, 0.9414697, 0.9952446, 0.998519, 0.9965344}{1.082143, 1.031599, 0.9954156, 0.9755674, 0.9701971, 0.9676287, 0.985209, 0.9487696, 0.9957888, 0.9982953, 0.9980869}{1.084809, 1.033819, 0.9945537, 0.9745444, 0.9704482, 0.9685379, 0.9863066, 0.9592831, 0.9963144, 0.9993805, 0.9996036}};$/;" v +NR_END basics.c 16;" d file: +NTAB_TATT cosmo2D_fullsky_TATT.c /^int NTAB_TATT = 60;$/;" v +N_AB structs.c /^ int N_AB;$/;" m struct:__anon20 file: +N_DS basics.c /^ int N_DS;$/;" m struct:__anon6 file: +N_IA structs.c /^ int N_IA;$/;" m struct:__anon20 file: +N_N200 cluster.c /^double N_N200(int nz, int nN){$/;" f +N_N200 clusters_DES.c /^double N_N200(int nz, int nN){$/;" f +N_S2 basics.c /^ int N_S2;$/;" m struct:__anon6 file: +N_a basics.c /^ int N_a ;$/;" m struct:__anon6 file: +N_a_halo basics.c /^ int N_a_halo;$/;" m struct:__anon6 file: +N_cgl redshift.c /^int N_cgl(int zc, int zs){$/;" f +N_cgl redshift_spline.c /^int N_cgl(int zc, int zs){$/;" f +N_cluster_MOR structs.c /^ int N_cluster_MOR;$/;" m struct:__anon21 file: +N_cluster_selection structs.c /^ int N_cluster_selection;$/;" m struct:__anon21 file: +N_ell basics.c /^ int N_ell;$/;" m struct:__anon6 file: +N_ggl redshift.c /^int N_ggl(int zl, int zs){$/;" f +N_ggl redshift_spline.c /^int N_ggl(int zl, int zs){$/;" f +N_k GRS.c /^ int N_k;$/;" m struct:__anon7 file: +N_k structs.c /^ int N_k;$/;" m struct:__anon25 file: +N_k_3d basics.c /^ int N_k_3d;$/;" m struct:__anon6 file: +N_k_lin basics.c /^ int N_k_lin;$/;" m struct:__anon6 file: +N_k_nlin basics.c /^ int N_k_nlin;$/;" m struct:__anon6 file: +N_max structs.c /^ double N_max[10];$/;" m struct:__anon17 file: +N_min structs.c /^ double N_min[10];$/;" m struct:__anon17 file: +N_mu GRS.c /^ int N_mu;$/;" m struct:__anon7 file: +N_mu structs.c /^ int N_mu;$/;" m struct:__anon25 file: +N_norm basics.c /^ int N_norm;$/;" m struct:__anon6 file: +N_per_dec structs.c /^ int N_per_dec;$/;" m struct:__anon20 file: +N_r_3d basics.c /^ int N_r_3d;$/;" m struct:__anon6 file: +N_shear redshift.c /^int N_shear (int z1, int z2){ \/\/find shear tomography bin number N_shear of tomography combination (z1,z2)$/;" f +N_shear redshift_spline.c /^int N_shear (int z1, int z2){ \/\/find shear tomography bin number N_shear of tomography combination (z1,z2)$/;" f +N_t structs.c /^ int N_t;$/;" m struct:__anon25 file: +N_theta basics.c /^ int N_theta;$/;" m struct:__anon6 file: +N_thetaH basics.c /^ int N_thetaH;$/;" m struct:__anon6 file: +N_z GRS.c /^ int N_z;$/;" m struct:__anon7 file: +N_z structs.c /^ int N_z;$/;" m struct:__anon25 file: +Nabins structs.c /^ int Nabins;$/;" m struct:__anon26 file: +Nchi structs.c /^ int Nchi;$/;" m struct:__anon27 file: +Ncl structs.c /^ int Ncl;$/;" m struct:__anon9 file: +Ncos structs.c /^ int Ncos;$/;" m struct:__anon9 file: +Ndata structs.c /^ int Ndata;$/;" m struct:__anon9 file: +Nell structs.c /^ int Nell;$/;" m struct:__anon27 file: +Nkbins structs.c /^ int Nkbins;$/;" m struct:__anon26 file: +Ntab basics.c /^}Ntab;$/;" t typeref:struct:__anon6 file: +Ntable basics.c /^Ntab Ntable = {$/;" v +Ntheta structs.c /^ int Ntheta;$/;" m struct:__anon9 file: +ORDER basics.c /^ int ORDER ;$/;" m struct:cos file: +Omega_m structs.c /^ double Omega_m; \/* matter density parameter *\/$/;" m struct:__anon10 file: +Omega_m structs.c /^ double Omega_m; \/* matter density parameter *\/$/;" m struct:__anon22 file: +Omega_nu structs.c /^ double Omega_nu; \/\/density parameter of massive neutrinos; Omega_m = Omega_cdm+ Omega_nu + omb$/;" m struct:__anon10 file: +Omega_nu structs.c /^ double Omega_nu; \/\/density parameter of massive neutrinos; Omega_m = Omega_cdm+ Omega_nu + omb$/;" m struct:__anon22 file: +Omega_v structs.c /^ double Omega_v; \/* cosmogical constant parameter *\/$/;" m struct:__anon10 file: +Omega_v structs.c /^ double Omega_v; \/* cosmogical constant parameter *\/$/;" m struct:__anon22 file: +POW4 basics.c 35;" d file: +PT_AB pt.h /^static double PT_AB[7][70]={{-2.1024937749e-14, -3.3317686284e-14, -5.2794957251e-14, -8.3644863773e-14, -1.3249669417e-13, -2.0981691528e-13, -3.3209178755e-13, -5.2522570327e-13, -8.2967929846e-13, -1.3081263591e-12, -2.0564134478e-12, -3.2179083906e-12, -4.9992198442e-12, -7.6785847041e-12, -1.1581497781e-11, -1.6958530617e-11, -2.3611953877e-11, -2.9932339654e-11, -3.0665502589e-11, -1.2193571997e-11, 5.6424473650e-11, 2.3824909004e-10, 6.4779725600e-10, 1.4645539607e-09, 2.9114043576e-09, 5.1592167002e-09, 8.2173165203e-09, 1.2174298554e-08, 1.7622105574e-08, 2.4351547758e-08, 3.0565723812e-08, 3.5651871841e-08, 3.9290301006e-08, 4.1030836495e-08, 4.1101396653e-08, 3.8922483438e-08, 3.4779227303e-08, 2.9804812529e-08, 2.4598062581e-08, 1.9623372501e-08, 1.5172466295e-08, 1.1402215546e-08, 8.3508292331e-09, 5.9742563095e-09, 4.1838702398e-09, 2.8738474167e-09, 1.9395131170e-09, 1.2880603209e-09, 8.4292324310e-10, 5.4423247230e-10, 3.4705142937e-10, 2.1879856446e-10, 1.3649181356e-10, 8.4316379645e-11, 5.1608877176e-11, 3.1321023265e-11, 1.8852550922e-11, 1.1248155893e-11, 6.6590240823e-12, 3.9234803101e-12, 2.3037328204e-12, 1.3482727449e-12, 7.8685472652e-13, 4.5809370308e-13, 2.6611893572e-13, 1.5449594605e-13, 9.0336081778e-14, 4.9964739555e-14, 3.0704285651e-14, 2.1664808656e-14},$/;" v +PT_d1d2 pt.c /^double PT_d1d2(double k_coverH0){ \/\/interpolate FPT.tab_AB[0] - Pd1d2$/;" f +PT_d1d2 pt.c /^double PT_d1d2(double k_coverH0){ \/\/interpolate PT_AB[0] - Pd1d2$/;" f +PT_d1d2 pt_cfastpt.c /^double PT_d1d2(double k_coverH0){ \/\/interpolate FPT.tab_AB[0] - Pd1d2$/;" f +PT_d1d3 pt.c /^double PT_d1d3(double k_coverH0){ \/\/interpolate FPT.tab_AB[0] - Pd1d3$/;" f +PT_d1d3 pt.c /^double PT_d1d3(double k_coverH0){ \/\/interpolate PT_AB[5]$/;" f +PT_d1d3 pt_cfastpt.c /^double PT_d1d3(double k_coverH0){ \/\/interpolate FPT.tab_AB[0] - Pd1d3$/;" f +PT_d1s2 pt.c /^double PT_d1s2(double k_coverH0){ \/\/interpolate FPT.tab_AB[2]$/;" f +PT_d1s2 pt.c /^double PT_d1s2(double k_coverH0){ \/\/interpolate PT_AB[2]$/;" f +PT_d1s2 pt_cfastpt.c /^double PT_d1s2(double k_coverH0){ \/\/interpolate FPT.tab_AB[2]$/;" f +PT_d2d2 pt.c /^double PT_d2d2(double k_coverH0){ \/\/interpolate FPT.tab_AB[1]$/;" f +PT_d2d2 pt.c /^double PT_d2d2(double k_coverH0){ \/\/interpolate PT_AB[1]$/;" f +PT_d2d2 pt_cfastpt.c /^double PT_d2d2(double k_coverH0){ \/\/interpolate FPT.tab_AB[1]$/;" f +PT_d2s2 pt.c /^double PT_d2s2(double k_coverH0){ \/\/interpolate FPT.tab_AB[3]$/;" f +PT_d2s2 pt.c /^double PT_d2s2(double k_coverH0){ \/\/interpolate PT_AB[3]$/;" f +PT_d2s2 pt_cfastpt.c /^double PT_d2s2(double k_coverH0){ \/\/interpolate FPT.tab_AB[3]$/;" f +PT_s2s2 pt.c /^double PT_s2s2(double k_coverH0){ \/\/interpolate FPT.tab_AB[4]$/;" f +PT_s2s2 pt.c /^double PT_s2s2(double k_coverH0){ \/\/interpolate PT_AB[4]$/;" f +PT_s2s2 pt_cfastpt.c /^double PT_s2s2(double k_coverH0){ \/\/interpolate FPT.tab_AB[4]$/;" f +PT_sigma4 pt.c /^double PT_sigma4(double k_coverH0){$/;" f +PT_sigma4 pt_cfastpt.c /^double PT_sigma4(double k_coverH0){$/;" f +P_2_s_max basics.c /^ double P_2_s_max;$/;" m struct:__anon5 file: +P_2_s_min basics.c /^ double P_2_s_min;$/;" m struct:__anon5 file: +P_DW GRS.c /^double P_DW(double k, double mu, double a){$/;" f +P_II IA.c /^double P_II (double k, double a){$/;" f +P_II_JB IA.c /^double P_II_JB(double k, double a){$/;" f +P_II_lin IA.c /^double P_II_lin (double k, double a){$/;" f +P_cm cluster.c /^double P_cm(double k,double a,int nz,int nN){$/;" f +P_cm clusters_DES.c /^double P_cm(double k,double a,int nz,int nN){$/;" f +P_cm_1h cluster.c /^double P_cm_1h(double k, double a,int nz, int nN){ $/;" f +P_cm_1h clusters_DES.c /^double P_cm_1h(double k, double a,int nz, int nN){ $/;" f +P_cm_offcentering cluster.c /^double P_cm_offcentering(double k, double M, double a){$/;" f +P_cm_offcentering clusters_DES.c /^double P_cm_offcentering(double k, double M, double a){$/;" f +P_dI IA.c /^double P_dI (double k, double a){$/;" f +P_dI_JB IA.c /^double P_dI_JB(double k, double a){$/;" f +P_dI_lin IA.c /^double P_dI_lin (double k, double a){$/;" f +P_g GRS.c /^double P_g(double k, double mu, int nz){$/;" f +P_gg HOD.c /^double P_gg (double k, double a,int nz){ \/\/galaxy-galaxy power spectrum based on HOD model in bin nz$/;" f +P_gg_2h_excl_old redmagic_real.c /^double P_gg_2h_excl_old(double k,double r, double a){$/;" f +P_gg_rm redmagic.c /^double P_gg_rm(double k,double a)$/;" f +P_gg_rm_1h redmagic_real.c /^double P_gg_rm_1h(double k,double a)$/;" f +P_gm HOD.c /^double P_gm (double k, double a,int nz){\/\/galaxy-matter power spectrum based on HOD model in bin nz$/;" f +P_gm_rm redmagic.c /^double P_gm_rm(double k,double a)$/;" f +P_obs GRS.c /^double P_obs(double k_ref, double mu_ref, int nz){$/;" f +P_shot GRS.c /^ double P_shot[10]; \/\/ in (Mpc\/h)^3$/;" m struct:__anon8 file: +Pdelta cosmo3D.c /^double Pdelta(double k_NL,double a)$/;" f +Pdelta cosmo3D_april7.c /^double Pdelta(double k_NL,double a)$/;" f +Pdelta_halo halo.c /^double Pdelta_halo(double k,double a)$/;" f +PkRatio_baryons cosmo3D.c /^double PkRatio_baryons(double kintern,double a){$/;" f +Planck15_BAO_H070p6_JLA_w0wa structs.c /^ int Planck15_BAO_H070p6_JLA_w0wa; \/\/CH$/;" m struct:__anon9 file: +Planck18_BAO_Riess18_Pantheon_w0wa structs.c /^ int Planck18_BAO_Riess18_Pantheon_w0wa; \/\/CH$/;" m struct:__anon9 file: +Planck18_BAO_w0wa structs.c /^ int Planck18_BAO_w0wa; \/\/CH$/;" m struct:__anon9 file: +Planck18_w0 structs.c /^ int Planck18_w0; \/\/CH$/;" m struct:__anon9 file: +Plin_FILE structs.c /^ char Plin_FILE[200];$/;" m struct:__anon20 file: +Psi_IA cosmo2D_exact.c /^double Psi_IA(double k, int l,int ni){$/;" f +Psi_L cosmo2D_exact.c /^double Psi_L(double k, int l,int ni){$/;" f +Psi_L_withIA cosmo2D_exact.c /^double Psi_L_withIA(double k, int l,int ni){$/;" f +Psi_Mag cosmo2D_exact.c /^double Psi_Mag(double k, int l,int ni){$/;" f +Psi_RSD cosmo2D_exact.c /^double Psi_RSD(double k, int l,int ni){$/;" f +Psi_RSD_z cosmo2D_exact.c /^double Psi_RSD_z(double z,void *params){$/;" f +Psi_cl cosmo2D_exact.c /^double Psi_cl(double k, int l,int ni){$/;" f +Psi_cl_noRSD cosmo2D_exact.c /^double Psi_cl_noRSD(double k, int l,int ni){$/;" f +Psi_cl_withMag cosmo2D_exact.c /^double Psi_cl_withMag(double k, int l,int ni){$/;" f +REF_DESdepth baryons2.h /^ static double REF_DESdepth[100][11]={{0.9982078, 0.9988084, 0.9991498, 0.9993733, 0.9995794, 0.9997605, 0.9999366, 1.000044, 1.00013, 1.000206, 1.000294}{0.9967595, 0.9977036, 0.9982948, 0.9986681, 0.9989189, 0.9991699, 0.999433, 0.9996469, 0.9998105, 0.9999263, 1.000047}{0.995063, 0.9962777, 0.9972576, 0.9977254, 0.998157, 0.9985699, 0.9989623, 0.9992228, 0.9994224, 0.9995861, 0.9997618}{0.9938044, 0.9954887, 0.9966119, 0.997171, 0.9974698, 0.9978125, 0.9983279, 0.9986575, 0.9988887, 0.9990844, 0.9993328}{0.9918995, 0.9940481, 0.9955113, 0.9958726, 0.9962351, 0.9967239, 0.9973062, 0.997746, 0.9980988, 0.9984424, 0.9988192}{0.9898503, 0.99227, 0.9940609, 0.9947371, 0.9952273, 0.9958193, 0.9965095, 0.9970515, 0.9974832, 0.9979133, 0.9983789}{0.9891261, 0.9914425, 0.9933891, 0.9937368, 0.9941262, 0.9946724, 0.9954798, 0.9961321, 0.9966942, 0.9972252, 0.9977932}{0.9861897, 0.9889024, 0.9910983, 0.9916751, 0.9924663, 0.9935071, 0.99457, 0.9953781, 0.99598, 0.9965693, 0.9972496}{0.9844806, 0.9874232, 0.9898614, 0.9902618, 0.9910488, 0.9920482, 0.9933918, 0.9943038, 0.9949977, 0.9956623, 0.9964715}{0.9825256, 0.9853705, 0.9882854, 0.9887327, 0.9894381, 0.9906952, 0.9923263, 0.9932846, 0.9940228, 0.9948318, 0.9959015}{0.9817826, 0.9853115, 0.9882109, 0.9881524, 0.9884929, 0.9895935, 0.9911485, 0.9921431, 0.9929477, 0.9938593, 0.9950633}{0.9817923, 0.9848562, 0.987456, 0.9867569, 0.986971, 0.9882228, 0.9898003, 0.990865, 0.9917934, 0.9929649, 0.9943922}{0.9811865, 0.9839547, 0.9866827, 0.9857108, 0.9859496, 0.9870478, 0.9886427, 0.9899116, 0.9909118, 0.9921867, 0.9937192}{0.9813639, 0.9843038, 0.9859963, 0.9843826, 0.9842291, 0.9855468, 0.9874055, 0.9887599, 0.9898602, 0.9911157, 0.9927511}{0.9809085, 0.9835303, 0.9847539, 0.9829164, 0.9824923, 0.9840722, 0.9860504, 0.9875124, 0.9886328, 0.9900105, 0.9918601}{0.980137, 0.9831501, 0.9849281, 0.9827134, 0.981977, 0.9831863, 0.9849481, 0.9862915, 0.9875176, 0.9889609, 0.9909221}{0.9805551, 0.982238, 0.9837619, 0.9809037, 0.9806324, 0.9825576, 0.9841863, 0.9854853, 0.986561, 0.9879765, 0.9901993}{0.9828982, 0.9830594, 0.9841008, 0.9803361, 0.9795725, 0.9812096, 0.9830082, 0.984325, 0.9854776, 0.9868992, 0.9891783}{0.9839676, 0.9836668, 0.9841833, 0.9802963, 0.9795387, 0.980742, 0.9823969, 0.9836023, 0.9846299, 0.9860223, 0.9883962}{0.9834811, 0.9839509, 0.9843682, 0.9799633, 0.9788332, 0.9798499, 0.98166, 0.9827703, 0.9838113, 0.9852463, 0.9878232}{0.984081, 0.9843808, 0.9835737, 0.9787695, 0.9775818, 0.9784003, 0.9803133, 0.9814438, 0.9824031, 0.984006, 0.986702}{0.9845384, 0.9846243, 0.9831966, 0.9782049, 0.9765861, 0.9772188, 0.9789295, 0.9802153, 0.9812701, 0.9830308, 0.9858087}{0.9847272, 0.9842089, 0.9817058, 0.9764629, 0.9749427, 0.9757334, 0.9781222, 0.9793863, 0.980261, 0.9818546, 0.9846975}{0.9853631, 0.9830642, 0.9815592, 0.9765538, 0.9751842, 0.9763307, 0.9782419, 0.9788453, 0.9790921, 0.9807244, 0.983835}{0.9871172, 0.9825211, 0.9823469, 0.9770259, 0.9751231, 0.9760311, 0.977205, 0.977427, 0.978061, 0.979918, 0.9831395}{0.9877497, 0.9826206, 0.9830771, 0.9767486, 0.9750254, 0.9755523, 0.9763785, 0.9768173, 0.9775327, 0.9792397, 0.9825333}{0.9895307, 0.9841835, 0.9834299, 0.9762413, 0.9745912, 0.9749564, 0.9762535, 0.9766894, 0.9770861, 0.9785486, 0.9816995}{0.9887858, 0.9839579, 0.9824012, 0.9765109, 0.9738251, 0.9738905, 0.9753092, 0.9758701, 0.9763958, 0.9779472, 0.9813001}{0.9881283, 0.9837458, 0.9807308, 0.977016, 0.974779, 0.9743717, 0.9754877, 0.9753441, 0.9751261, 0.9765595, 0.9802897}{0.9853197, 0.9809827, 0.9818703, 0.9772899, 0.9735979, 0.9729947, 0.9751584, 0.9752735, 0.9750154, 0.9764155, 0.9800261}{0.9845638, 0.9831415, 0.9821555, 0.9769221, 0.974234, 0.973456, 0.9746359, 0.9740029, 0.9735637, 0.9753006, 0.9791411}{0.9855414, 0.9831168, 0.9833463, 0.9787173, 0.9753331, 0.9728377, 0.9735961, 0.973329, 0.9734643, 0.9752079, 0.979026}{0.9851899, 0.9824767, 0.9831662, 0.9767925, 0.9739144, 0.9727663, 0.9737799, 0.9738804, 0.9737785, 0.9749672, 0.9787516}{0.9858364, 0.983272, 0.9838825, 0.9768962, 0.9737043, 0.9723896, 0.9733132, 0.9736414, 0.9736539, 0.9749019, 0.9783544}{0.9862906, 0.9819465, 0.9847195, 0.9793542, 0.9739544, 0.9722645, 0.9735325, 0.9737823, 0.9738563, 0.9743622, 0.9775253}{0.9883937, 0.9824947, 0.9841233, 0.9777095, 0.972888, 0.9720131, 0.9740794, 0.974648, 0.9737943, 0.9742215, 0.9780104}{0.9874947, 0.9829327, 0.9862202, 0.9770941, 0.9725615, 0.9717252, 0.9742391, 0.9744133, 0.9735861, 0.973797, 0.9774978}{0.9882609, 0.9828651, 0.9851776, 0.9778015, 0.9738775, 0.9718996, 0.9741788, 0.9741021, 0.9725683, 0.9731448, 0.9768}{0.9851385, 0.9837092, 0.9858575, 0.9780416, 0.9731358, 0.9726248, 0.9747692, 0.9739035, 0.9723659, 0.972968, 0.9764829}{0.9841316, 0.9847504, 0.9837993, 0.9770417, 0.9754381, 0.971362, 0.9745164, 0.9740448, 0.9726, 0.9739863, 0.9778946}{0.983513, 0.9847935, 0.9876622, 0.9770921, 0.9748777, 0.9720348, 0.9750527, 0.9741457, 0.9727409, 0.9727983, 0.976597}{0.9849846, 0.9883796, 0.9879583, 0.9766709, 0.974495, 0.9722888, 0.9747666, 0.974043, 0.9727298, 0.9729051, 0.9764078}{0.9883069, 0.9910055, 0.9864332, 0.9771399, 0.9739305, 0.9716937, 0.9748926, 0.9751357, 0.9739619, 0.974325, 0.9779066}{0.9898101, 0.9886006, 0.9874459, 0.9808849, 0.9751131, 0.9726374, 0.975761, 0.9751216, 0.9730728, 0.9729546, 0.9768678}{0.9866966, 0.9887357, 0.9856221, 0.9793, 0.9771261, 0.9713566, 0.9742823, 0.9743943, 0.9741159, 0.9732325, 0.9776744}{0.9882051, 0.9906379, 0.9865251, 0.9806259, 0.9777542, 0.9726851, 0.9753291, 0.9760501, 0.974415, 0.9736514, 0.9782361}{0.9918996, 0.9905403, 0.9888629, 0.9827115, 0.9790636, 0.9751467, 0.9769219, 0.9761743, 0.9749974, 0.9740748, 0.9785113}{0.9932803, 0.9910721, 0.9916642, 0.9849824, 0.9798598, 0.9763211, 0.9769416, 0.9769847, 0.9759598, 0.974693, 0.97872}{0.9864006, 0.9859275, 0.9898863, 0.9839219, 0.9788869, 0.9774526, 0.9777047, 0.9779596, 0.977091, 0.9747476, 0.9782739}{0.9844782, 0.989468, 0.989883, 0.9825584, 0.980071, 0.9782017, 0.9788979, 0.9792069, 0.9766567, 0.9750565, 0.9789213}{0.9887189, 0.9915613, 0.9904921, 0.9844311, 0.9810985, 0.9784409, 0.9796898, 0.9789606, 0.9784765, 0.9757904, 0.9801025}{0.9964677, 0.9911094, 0.9926313, 0.9852824, 0.981452, 0.9785646, 0.980004, 0.9807238, 0.9797672, 0.9766809, 0.9813287}{0.9973305, 0.9925814, 0.9950134, 0.9835698, 0.9805144, 0.979864, 0.9791032, 0.9803145, 0.9800422, 0.9774057, 0.9817879}{0.9939193, 0.9926112, 0.9962748, 0.9845644, 0.9834438, 0.9795095, 0.9809313, 0.9823062, 0.9802256, 0.9786247, 0.9819909}{0.9948249, 0.9949281, 0.9967011, 0.9896423, 0.9846354, 0.9802378, 0.9831409, 0.9834455, 0.9811989, 0.9791594, 0.9834584}{0.9968838, 0.9925028, 0.9973631, 0.990466, 0.9852525, 0.981804, 0.9852264, 0.9858862, 0.9820301, 0.9802206, 0.9847984}{0.9961331, 0.991351, 0.9957874, 0.989461, 0.9852107, 0.9835424, 0.9892506, 0.9873676, 0.9831706, 0.9810975, 0.9847439}{0.9931804, 0.995314, 0.9974382, 0.9901767, 0.9864199, 0.9840457, 0.9878104, 0.9871055, 0.9848942, 0.9829706, 0.9859707}{0.9956228, 0.9939249, 0.9995066, 0.9909737, 0.9869588, 0.9861744, 0.987978, 0.9875545, 0.9868444, 0.9833533, 0.9877245}{0.9969946, 0.9929688, 1.000341, 0.9904092, 0.9878781, 0.9872233, 0.987726, 0.9887005, 0.9874857, 0.9841192, 0.9883671}{0.9968832, 0.9929812, 1.000703, 0.9907517, 0.9892725, 0.9877625, 0.9892224, 0.9903245, 0.9881732, 0.9848278, 0.9883445}{1.000205, 0.998554, 1.003009, 0.9939113, 0.9941664, 0.9916811, 0.9925626, 0.9918005, 0.9891785, 0.986771, 0.9900683}{1.005439, 1.00152, 1.005321, 0.9965998, 0.9960018, 0.99466, 0.992672, 0.9918959, 0.9918485, 0.988073, 0.9899859}{1.005273, 1.000306, 1.006701, 0.9977315, 0.9964428, 0.9933257, 0.9919794, 0.9943348, 0.9923243, 0.9877652, 0.9904243}{1.00299, 0.9982998, 1.006901, 0.9986127, 0.9963315, 0.9922318, 0.994651, 0.99515, 0.9924164, 0.988855, 0.9916367}{1.002636, 0.999916, 1.006797, 1.000547, 0.9981943, 0.9952592, 0.9965034, 0.9961136, 0.994079, 0.9913496, 0.9936047}{1.008934, 1.003478, 1.006737, 1.00211, 0.9984048, 0.9989444, 0.9986466, 0.9976907, 0.9954397, 0.9926156, 0.9956131}{1.004897, 1.005637, 1.007581, 1.004123, 1.002279, 1.001113, 1.000582, 1.000084, 0.9988064, 0.9933797, 0.9967787}{1.00282, 1.002288, 1.007998, 1.005999, 1.002937, 1.003407, 1.002114, 1.000998, 0.9996443, 0.995665, 0.9984982}{1.004709, 0.9999008, 1.009414, 1.006121, 1.003806, 1.005558, 1.001435, 1.003021, 1.001316, 0.9981931, 1.000649}{1.006509, 1.001096, 1.014305, 1.008146, 1.006601, 1.005716, 1.005622, 1.004271, 1.001447, 0.9990798, 1.002109}{1.008904, 1.00467, 1.012268, 1.00935, 1.006829, 1.006996, 1.006992, 1.005497, 1.002973, 1.001278, 1.003471}{1.009921, 1.00667, 1.011874, 1.00884, 1.010598, 1.007371, 1.007725, 1.006885, 1.005466, 1.002083, 1.004668}{1.011855, 1.007533, 1.01315, 1.010938, 1.011394, 1.007955, 1.009256, 1.009908, 1.006003, 1.003276, 1.005689}{1.015776, 1.008195, 1.016149, 1.010227, 1.010545, 1.009922, 1.013039, 1.010551, 1.007107, 1.004873, 1.00671}{1.016167, 1.00633, 1.017776, 1.011981, 1.014573, 1.015303, 1.014483, 1.012089, 1.009363, 1.006761, 1.009579}{1.020287, 1.0095, 1.019729, 1.015646, 1.015218, 1.018454, 1.017444, 1.015106, 1.011029, 1.00911, 1.010722}{1.019762, 1.009409, 1.021045, 1.016998, 1.018354, 1.020945, 1.020244, 1.01678, 1.012627, 1.011276, 1.012356}{1.017614, 1.010675, 1.022173, 1.020563, 1.02158, 1.023332, 1.022291, 1.018456, 1.015067, 1.013306, 1.014034}{1.023091, 1.014478, 1.02461, 1.023362, 1.023337, 1.025972, 1.024956, 1.021595, 1.017375, 1.013996, 1.013931}{1.019825, 1.016952, 1.028625, 1.02601, 1.024378, 1.025472, 1.025492, 1.023882, 1.019881, 1.014233, 1.016373}{1.016425, 1.017938, 1.032612, 1.0278, 1.025366, 1.024919, 1.02727, 1.025887, 1.021348, 1.014473, 1.018811}{1.015468, 1.016081, 1.03389, 1.026632, 1.025896, 1.025774, 1.02978, 1.027256, 1.022839, 1.016912, 1.020966}{1.017877, 1.01434, 1.033869, 1.022915, 1.027488, 1.028604, 1.03046, 1.02858, 1.026162, 1.020267, 1.022747}{1.020235, 1.0186, 1.032796, 1.023553, 1.029237, 1.031426, 1.030807, 1.031147, 1.02877, 1.022848, 1.024476}{1.022609, 1.023233, 1.033287, 1.029038, 1.031934, 1.034877, 1.034015, 1.034349, 1.032337, 1.025901, 1.026741}{1.024905, 1.021272, 1.03438, 1.033878, 1.034708, 1.03833, 1.03669, 1.037387, 1.035656, 1.029185, 1.029032}{1.026287, 1.019159, 1.037462, 1.035379, 1.037363, 1.041395, 1.039458, 1.041068, 1.037344, 1.030832, 1.031256}{1.025563, 1.019403, 1.039071, 1.035464, 1.040017, 1.043712, 1.043629, 1.045037, 1.03696, 1.031081, 1.033462}{1.024858, 1.017638, 1.040283, 1.036962, 1.04246, 1.045999, 1.047993, 1.044694, 1.036955, 1.031668, 1.035643}{1.028414, 1.019229, 1.042935, 1.043347, 1.044338, 1.048852, 1.051365, 1.045637, 1.037875, 1.034536, 1.037208}{1.033596, 1.023853, 1.046574, 1.050145, 1.046205, 1.051882, 1.052522, 1.046673, 1.039319, 1.037834, 1.038512}{1.038198, 1.028381, 1.050852, 1.051317, 1.048024, 1.054619, 1.053779, 1.047809, 1.04202, 1.039685, 1.039999}{1.039802, 1.028253, 1.050579, 1.051607, 1.048131, 1.056021, 1.055831, 1.050568, 1.045366, 1.041141, 1.042621}{1.041373, 1.028205, 1.05036, 1.051767, 1.048347, 1.057376, 1.057987, 1.053213, 1.047282, 1.042605, 1.045181}{1.043933, 1.030848, 1.050867, 1.051931, 1.051425, 1.059592, 1.060782, 1.055088, 1.049082, 1.044399, 1.047398}{1.047149, 1.034615, 1.051555, 1.052299, 1.055695, 1.062402, 1.061834, 1.056714, 1.051343, 1.046011, 1.049379}{1.050326, 1.037681, 1.052095, 1.055507, 1.058734, 1.065096, 1.062833, 1.058523, 1.052619, 1.047618, 1.051355}{1.054323, 1.036568, 1.058281, 1.058277, 1.05884, 1.064546, 1.062904, 1.059543, 1.055223, 1.05035, 1.05435}{1.058276, 1.036664, 1.064327, 1.059719, 1.058945, 1.064002, 1.063684, 1.061614, 1.057568, 1.053009, 1.057264}};$/;" v +REF_LSSTdepth baryons2.h /^ static double REF_LSSTdepth[100][11]={{0.9982078, 0.9991043, 0.9995127, 0.9997994, 1.000044, 1.000184, 1.000317, 0.9874216, 1.000395, 1.000408, 1.000417}{0.9967595, 0.9981594, 0.9987783, 0.9992446, 0.9996469, 0.9998868, 1.000091, 0.9949377, 1.000243, 1.000275, 1.000294}{0.995063, 0.9970795, 0.9979635, 0.9986531, 0.9992228, 0.9995476, 0.9998117, 0.9846446, 1.000053, 1.000107, 1.000143}{0.9938044, 0.9963914, 0.9972789, 0.9979784, 0.9986575, 0.9990041, 0.9994527, 0.9948853, 0.9998461, 0.9999354, 0.9999809}{0.9918995, 0.9952624, 0.9960386, 0.9968492, 0.997746, 0.9983657, 0.9989392, 0.9807702, 0.9995469, 0.9996751, 0.9997488}{0.9898503, 0.9937676, 0.9949984, 0.9959744, 0.9970515, 0.9977944, 0.9985632, 0.9866732, 0.9993071, 0.9994759, 0.999565}{0.9891261, 0.993034, 0.9938302, 0.9949078, 0.9961321, 0.9970906, 0.9979899, 0.9824023, 0.9989539, 0.9991566, 0.999278}{0.9861897, 0.9907243, 0.992074, 0.9937323, 0.9953781, 0.9964132, 0.9975103, 0.9785508, 0.9986757, 0.9989274, 0.9990623}{0.9844806, 0.9895307, 0.9905597, 0.9924078, 0.9943038, 0.9954475, 0.9968022, 0.9787016, 0.9983289, 0.9986525, 0.9988297}{0.9825256, 0.9879619, 0.9891459, 0.9910269, 0.9932846, 0.9946088, 0.9962738, 0.9722342, 0.9980399, 0.9983969, 0.9985905}{0.9817826, 0.9878584, 0.9882217, 0.9899506, 0.9921431, 0.9935717, 0.9955217, 0.9793946, 0.9975763, 0.9980267, 0.9982583}{0.9817923, 0.9872001, 0.9867566, 0.9885434, 0.990865, 0.9926879, 0.9948465, 0.97055, 0.9972148, 0.9976981, 0.9979586}{0.9811865, 0.9865026, 0.9856695, 0.9874123, 0.9899116, 0.9918602, 0.9943102, 0.974126, 0.9968933, 0.9974194, 0.9976664}{0.9813639, 0.9861046, 0.9841354, 0.9859326, 0.9887599, 0.9907821, 0.9933456, 0.9692926, 0.9963427, 0.9969316, 0.9972482}{0.9809085, 0.9849628, 0.9825019, 0.9845066, 0.9875124, 0.9896356, 0.9925582, 0.9681031, 0.9959153, 0.9966293, 0.9969635}{0.980137, 0.9851108, 0.982034, 0.983652, 0.9862915, 0.9885158, 0.9916677, 0.9654058, 0.9955644, 0.996348, 0.9967151}{0.9805551, 0.9841274, 0.9804611, 0.9828785, 0.9854853, 0.9875476, 0.9909956, 0.9624717, 0.9950078, 0.9958538, 0.9962143}{0.9828982, 0.984657, 0.9797221, 0.9815595, 0.984325, 0.9864223, 0.9900788, 0.9659668, 0.9946747, 0.9955767, 0.9960042}{0.9839676, 0.9847052, 0.979799, 0.9810748, 0.9836023, 0.9855776, 0.9893003, 0.9599655, 0.9941611, 0.9951514, 0.9956506}{0.9834811, 0.9852823, 0.9790683, 0.9802601, 0.9827703, 0.9847262, 0.988768, 0.9623549, 0.9937833, 0.9948718, 0.9953484}{0.984081, 0.984706, 0.9779634, 0.9787824, 0.9814438, 0.9835132, 0.9876904, 0.9561341, 0.9933242, 0.9944607, 0.9949963}{0.9845384, 0.9843957, 0.9771986, 0.9774976, 0.9802153, 0.9825357, 0.9867775, 0.9546632, 0.9927619, 0.9939015, 0.9944526}{0.9847272, 0.9830622, 0.9753838, 0.976214, 0.9793863, 0.9813439, 0.9858087, 0.9559979, 0.9923096, 0.9935787, 0.9942653}{0.9853631, 0.9827405, 0.9755821, 0.9767625, 0.9788453, 0.9802602, 0.9849166, 0.9458354, 0.9920257, 0.9931734, 0.9938047}{0.9871172, 0.9834219, 0.9755364, 0.9762698, 0.977427, 0.9793465, 0.9843887, 0.953037, 0.9913394, 0.9927017, 0.9934449}{0.9877497, 0.9841457, 0.9757297, 0.9756932, 0.9768173, 0.9787218, 0.9837673, 0.9511438, 0.9911922, 0.9926109, 0.99324}{0.9895307, 0.9853645, 0.9748275, 0.9752094, 0.9766894, 0.9780451, 0.9830636, 0.9517126, 0.9908757, 0.9922494, 0.9928404}{0.9887858, 0.9841064, 0.9748938, 0.9741601, 0.9758701, 0.977343, 0.9827134, 0.9496578, 0.9905065, 0.9918285, 0.9924108}{0.9881283, 0.981796, 0.9758076, 0.9745808, 0.9753441, 0.9759611, 0.9817286, 0.9482086, 0.9900496, 0.9915523, 0.9922009}{0.9853197, 0.9823725, 0.975086, 0.9734294, 0.9752735, 0.9757626, 0.9815637, 0.9503432, 0.9896452, 0.9911947, 0.9917558}{0.9845638, 0.9829938, 0.9753847, 0.9738348, 0.9740029, 0.9746372, 0.9806893, 0.9449496, 0.9892915, 0.990817, 0.9914177}{0.9855414, 0.9837356, 0.9769328, 0.9729929, 0.973329, 0.9745157, 0.9806681, 0.9451855, 0.9890569, 0.9904908, 0.9911325}{0.9851899, 0.9835141, 0.9751861, 0.9728858, 0.9738804, 0.9743512, 0.9803975, 0.9455409, 0.988938, 0.9904295, 0.9910112}{0.9858364, 0.9845354, 0.9750206, 0.9725771, 0.9736414, 0.9742979, 0.979995, 0.9468434, 0.9886851, 0.9902102, 0.9907873}{0.9862906, 0.9847965, 0.9762795, 0.9724872, 0.9737823, 0.9737839, 0.9792787, 0.9461523, 0.9886846, 0.9900881, 0.9906569}{0.9883937, 0.9843237, 0.9748143, 0.9724171, 0.974648, 0.9736289, 0.9798556, 0.9464824, 0.9885188, 0.9896864, 0.9900954}{0.9874947, 0.9866415, 0.9743995, 0.9722202, 0.9744133, 0.9731045, 0.9793093, 0.9473874, 0.988428, 0.9897307, 0.990135}{0.9882609, 0.9858771, 0.9755057, 0.9723509, 0.9741021, 0.9726155, 0.9786876, 0.9457013, 0.9883064, 0.9893952, 0.9897182}{0.9851385, 0.9866713, 0.9749816, 0.9730629, 0.9739035, 0.9723352, 0.9785558, 0.9467224, 0.9879867, 0.9891663, 0.9894275}{0.9841316, 0.9848948, 0.9760075, 0.9717127, 0.9740448, 0.9733208, 0.979916, 0.9455417, 0.988251, 0.9892419, 0.9893347}{0.983513, 0.9873405, 0.976163, 0.9727908, 0.9741457, 0.9721798, 0.978255, 0.9358058, 0.9881964, 0.9891057, 0.9892077}{0.9849846, 0.9908577, 0.9756373, 0.9727445, 0.974043, 0.9722047, 0.9789611, 0.9422937, 0.9880744, 0.989054, 0.9892492}{0.9883069, 0.9883403, 0.9760455, 0.9723483, 0.9751357, 0.9737062, 0.9797825, 0.9433043, 0.9880072, 0.9890883, 0.9892951}{0.9898101, 0.9884368, 0.9775343, 0.9732942, 0.9751216, 0.9723242, 0.9788769, 0.9472377, 0.9878233, 0.9882651, 0.988442}{0.9866966, 0.9868491, 0.9781455, 0.9719042, 0.9743943, 0.9725226, 0.9797542, 0.9374623, 0.9885482, 0.9885729, 0.9882992}{0.9882051, 0.9868159, 0.9795319, 0.9733809, 0.9760501, 0.9728149, 0.9802669, 0.9436187, 0.9884062, 0.9884896, 0.9885763}{0.9918996, 0.9890747, 0.981556, 0.9755317, 0.9761743, 0.9732223, 0.9801484, 0.9469035, 0.9883703, 0.9887731, 0.9888745}{0.9932803, 0.9913747, 0.9822203, 0.9764482, 0.9769847, 0.9739442, 0.9805246, 0.9443979, 0.9890379, 0.9890781, 0.9888204}{0.9864006, 0.9888439, 0.9812313, 0.9776317, 0.9779596, 0.9740357, 0.9802918, 0.9431882, 0.9894703, 0.9890507, 0.9890261}{0.9844782, 0.9901298, 0.9811238, 0.9782541, 0.9792069, 0.9744143, 0.9812292, 0.9369446, 0.9893145, 0.9892467, 0.9889148}{0.9887189, 0.9902357, 0.9827969, 0.9786875, 0.9789606, 0.9750377, 0.982149, 0.939669, 0.9894294, 0.9894547, 0.9888439}{0.9964677, 0.9917858, 0.9831353, 0.9788616, 0.9807238, 0.9758166, 0.9828136, 0.9451476, 0.9897359, 0.9897485, 0.9890643}{0.9973305, 0.9947087, 0.9818743, 0.9798543, 0.9803145, 0.9765669, 0.9835558, 0.9452509, 0.9904668, 0.9907484, 0.9898924}{0.9939193, 0.9963087, 0.9838438, 0.9792928, 0.9823062, 0.9777884, 0.9836752, 0.945154, 0.9908905, 0.9906564, 0.9893694}{0.9948249, 0.9959453, 0.9872947, 0.9808466, 0.9834455, 0.9785582, 0.9850349, 0.9448988, 0.9914235, 0.990872, 0.9891497}{0.9968838, 0.9954014, 0.9875517, 0.9824671, 0.9858862, 0.9792722, 0.9856832, 0.9476018, 0.9921158, 0.9909538, 0.9892405}{0.9961331, 0.9941574, 0.9870134, 0.9847234, 0.9873676, 0.9804053, 0.9855296, 0.9519994, 0.9927105, 0.991144, 0.9894513}{0.9931804, 0.9965044, 0.9880109, 0.9851529, 0.9871055, 0.9822257, 0.98668, 0.9531521, 0.9935964, 0.9911694, 0.9894715}{0.9956228, 0.9972431, 0.9887402, 0.9869513, 0.9875545, 0.9827955, 0.9884539, 0.9539092, 0.9942227, 0.9917899, 0.9898263}{0.9969946, 0.9976968, 0.9886596, 0.9872747, 0.9887005, 0.9832126, 0.9891634, 0.9521528, 0.9947793, 0.9925792, 0.9904276}{0.9968832, 0.9992262, 0.9896617, 0.9880668, 0.9903245, 0.9841352, 0.9893197, 0.9490494, 0.9954093, 0.993163, 0.9911195}{1.000205, 1.001703, 0.9942536, 0.9919321, 0.9918005, 0.9861198, 0.9906318, 0.9569145, 0.9962277, 0.9937458, 0.9915756}{1.005439, 1.004264, 0.9964391, 0.9949824, 0.9918959, 0.9874058, 0.9905489, 0.9552121, 0.9970091, 0.9939808, 0.9911338}{1.005273, 1.004912, 0.9971225, 0.9924779, 0.9943348, 0.9874584, 0.9912514, 0.9587467, 0.9972272, 0.9939546, 0.9910913}{1.00299, 1.006121, 0.9978319, 0.992786, 0.99515, 0.9882024, 0.9932996, 0.9608899, 0.9980421, 0.9945856, 0.9915981}{1.002636, 1.005866, 0.9996024, 0.9955207, 0.9961136, 0.9909407, 0.9948554, 0.9680077, 0.9996529, 0.9958524, 0.9925729}{1.008934, 1.006561, 1.000077, 0.9992422, 0.9976907, 0.9921246, 0.9964948, 0.968063, 0.9999556, 0.9967075, 0.992875}{1.004897, 1.006931, 1.002802, 1.00105, 1.000084, 0.9927921, 0.9974565, 0.9636098, 1.00082, 0.9976187, 0.9932774}{1.00282, 1.005915, 1.004473, 1.003388, 1.000998, 0.9949153, 0.9997534, 0.9672625, 1.000955, 0.998384, 0.9937634}{1.004709, 1.00608, 1.004169, 1.004704, 1.003021, 0.9977534, 1.000953, 0.968335, 1.001293, 0.9991645, 0.9940423}{1.006509, 1.011506, 1.007208, 1.005588, 1.004271, 0.9985346, 1.002103, 0.9609824, 1.002859, 0.9992149, 0.9935282}{1.008904, 1.012019, 1.007882, 1.007077, 1.005497, 1.000612, 1.003643, 0.9648787, 1.003739, 1.00106, 0.9950233}{1.009921, 1.01111, 1.009598, 1.007353, 1.006885, 1.001655, 1.005098, 0.9698536, 1.004261, 1.002029, 0.9959245}{1.011855, 1.011649, 1.01215, 1.00819, 1.009908, 1.002713, 1.005779, 0.9723075, 1.00544, 1.003152, 0.9968097}{1.015776, 1.015191, 1.010325, 1.01057, 1.010551, 1.00454, 1.006907, 0.9720035, 1.007481, 1.004185, 0.9980894}{1.016167, 1.016519, 1.013516, 1.015811, 1.012089, 1.006303, 1.009751, 0.973885, 1.008265, 1.004871, 0.9984197}{1.020287, 1.018003, 1.015278, 1.018237, 1.015106, 1.008473, 1.010823, 0.971397, 1.009018, 1.006571, 0.998984}{1.019762, 1.019554, 1.017205, 1.020879, 1.01678, 1.010953, 1.01245, 0.9793489, 1.010546, 1.007164, 0.9988465}{1.017614, 1.021373, 1.021595, 1.023115, 1.018456, 1.013108, 1.013544, 0.9855952, 1.011573, 1.007078, 0.9986754}{1.023091, 1.0234, 1.023052, 1.02577, 1.021595, 1.013988, 1.014191, 0.9780828, 1.012098, 1.007761, 1.000084}{1.019825, 1.025778, 1.025081, 1.025233, 1.023882, 1.014234, 1.016927, 0.9797057, 1.014327, 1.010032, 1.001438}{1.016425, 1.029477, 1.025941, 1.024653, 1.025887, 1.014462, 1.018958, 0.9840251, 1.016515, 1.011878, 1.002743}{1.015468, 1.033829, 1.02464, 1.026607, 1.027256, 1.015954, 1.02047, 0.9900778, 1.017666, 1.013015, 1.003488}{1.017877, 1.034325, 1.025498, 1.029594, 1.02858, 1.019166, 1.022443, 0.9838246, 1.018299, 1.013142, 1.003492}{1.020235, 1.034297, 1.026881, 1.031598, 1.031147, 1.022276, 1.023821, 0.9826274, 1.018732, 1.013135, 1.003496}{1.022609, 1.032276, 1.031549, 1.034812, 1.034349, 1.025449, 1.026249, 0.9823068, 1.020148, 1.014899, 1.005451}{1.024905, 1.033281, 1.033956, 1.038427, 1.037387, 1.028582, 1.028316, 0.9819125, 1.021772, 1.016242, 1.007654}{1.026287, 1.033264, 1.035693, 1.040992, 1.041068, 1.030855, 1.029708, 0.9888371, 1.023328, 1.017771, 1.00948}{1.025563, 1.033874, 1.037493, 1.043442, 1.045037, 1.031091, 1.032165, 0.990489, 1.025357, 1.019936, 1.010562}{1.024858, 1.035394, 1.039794, 1.046153, 1.044694, 1.031322, 1.03435, 0.9930428, 1.027185, 1.021348, 1.011622}{1.028414, 1.040168, 1.045601, 1.049501, 1.045637, 1.03365, 1.035997, 0.9955058, 1.028442, 1.022991, 1.013032}{1.033596, 1.043543, 1.047216, 1.052671, 1.046673, 1.036787, 1.037467, 0.9965548, 1.029591, 1.023962, 1.014529}{1.038198, 1.046315, 1.048603, 1.054443, 1.047809, 1.039648, 1.039227, 0.9987871, 1.030639, 1.024504, 1.015946}{1.039802, 1.046045, 1.048785, 1.055922, 1.050568, 1.041041, 1.042122, 0.9991462, 1.0315, 1.024635, 1.017216}{1.041373, 1.045831, 1.048879, 1.057387, 1.053213, 1.042378, 1.044573, 1.000585, 1.032251, 1.02528, 1.018461}{1.043933, 1.047907, 1.049365, 1.05988, 1.055088, 1.043829, 1.046774, 1.003151, 1.033801, 1.02794, 1.018954}{1.047149, 1.048585, 1.053167, 1.062842, 1.056714, 1.045368, 1.048957, 0.9938638, 1.03642, 1.03036, 1.018933}{1.050326, 1.04923, 1.056828, 1.064625, 1.058523, 1.04691, 1.051077, 0.9965755, 1.038969, 1.031508, 1.018955}{1.054323, 1.052198, 1.058431, 1.064047, 1.059543, 1.04952, 1.054357, 1.004993, 1.040357, 1.031897, 1.020721}{1.058276, 1.057851, 1.058529, 1.063477, 1.061614, 1.052063, 1.05669, 1.016709, 1.041702, 1.033344, 1.022447}};$/;" v +Rmin_bias structs.c /^ double Rmin_bias;$/;" m struct:__anon9 file: +Rmin_shear structs.c /^ double Rmin_shear;$/;" m struct:__anon9 file: +SN_WFIRST structs.c /^ int SN_WFIRST;$/;" m struct:__anon9 file: +SQR basics.c 31;" d file: +SRD structs.c /^ int SRD;$/;" m struct:__anon9 file: +SVD_inversion basics.c /^void SVD_inversion(gsl_matrix *cov, gsl_matrix *inverseSVD,int Nmatrix)$/;" f +S_integrands_cl structs.c /^ double*** S_integrands_cl; \/\/ galaxy density nonlimber integrand$/;" m struct:__anon27 file: +S_integrands_sh structs.c /^ double*** S_integrands_sh; \/\/ galaxy shape nonlimber integrand$/;" m struct:__anon27 file: +T baryons.c /^ const gsl_interp2d_type *T = gsl_interp2d_bilinear;$/;" m struct:__anon2 file: +TATT_GI_E pt_cfastpt.c /^double TATT_GI_E (double k_coverH0, double a, double C1, double C2, double b_ta){$/;" f +TATT_II_BB pt_cfastpt.c /^double TATT_II_BB (double k_coverH0, double a, double C1, double C2, double b_ta,double C1_2, double C2_2, double b_ta_2){$/;" f +TATT_II_EE pt_cfastpt.c /^double TATT_II_EE (double k_coverH0, double a, double C1, double C2, double b_ta, double C1_2, double C2_2, double b_ta_2){$/;" f +T_lin_minus_COSEBIS EBfunctions.c /^double T_lin_minus_COSEBIS(double theta,int ORDER,double vt_max,double vt_min)$/;" f +T_lin_minus_COSEBIS coefficients.c /^double T_lin_minus_COSEBIS(double theta,int ORDER,double vt_max,double vt_min)$/;" f +T_lin_minus_integrand_COSEBIS EBfunctions.c /^double T_lin_minus_integrand_COSEBIS(double t, void *params)$/;" f +T_lin_minus_integrand_COSEBIS coefficients.c /^double T_lin_minus_integrand_COSEBIS(double t, void *params)$/;" f +T_lin_plus_COSEBIS EBfunctions.c /^double T_lin_plus_COSEBIS(double vartheta,int ORDER,double vt_max,double vt_min)$/;" f +T_lin_plus_COSEBIS coefficients.c /^double T_lin_plus_COSEBIS(double vartheta,int ORDER,double vt_max,double vt_min)$/;" f +T_log_minus_COSEBIS EBfunctions.c /^double T_log_minus_COSEBIS(double vartheta,int ORDER,double vt_max,double vt_min)$/;" f +T_log_minus_COSEBIS coefficients.c /^double T_log_minus_COSEBIS(double vartheta,int ORDER,double vt_max,double vt_min)$/;" f +T_log_minus_integrand_COSEBIS EBfunctions.c /^double T_log_minus_integrand_COSEBIS(double theta, void *params)$/;" f +T_log_minus_integrand_COSEBIS coefficients.c /^double T_log_minus_integrand_COSEBIS(double theta, void *params)$/;" f +T_log_plus_COSEBIS EBfunctions.c /^double T_log_plus_COSEBIS(double vartheta,int ORDER,double vt_max,double vt_min)$/;" f +T_log_plus_COSEBIS coefficients.c /^double T_log_plus_COSEBIS(double vartheta,int ORDER,double vt_max,double vt_min)$/;" f +T_minus_MAP EBfunctions.c /^double T_minus_MAP(double x)$/;" f +T_plus_MAP EBfunctions.c /^double T_plus_MAP(double x)$/;" f +Tsqr_EH_no_wiggle GRS.c /^double Tsqr_EH_no_wiggle(double khoverMPC)$/;" f +Tsqr_EH_wiggle cosmo3D.c /^double Tsqr_EH_wiggle(double khoverMPC)$/;" f +Tsqr_EH_wiggle cosmo3D_april7.c /^double Tsqr_EH_wiggle(double khoverMPC)$/;" f +V_z GRS.c /^ double V_z[10]; \/\/ in (Mpc\/h)^3$/;" m struct:__anon7 file: +V_z structs.c /^ double V_z[10]; \/\/ in (Mpc\/h)^3$/;" m struct:__anon25 file: +W1 EBfunctions.c /^double W1(double theta_1, double zeta_1, double zeta_2)$/;" f +W2 EBfunctions.c /^double W2(double theta_2, double zeta_3, double zeta_4)$/;" f +WDENS_DESdepth baryons2.h /^ static double WDENS_DESdepth[100][11]={{0.9972338, 0.9974389, 1.006422, 1.01724, 1.013021, 0.9980901, 1.014312, 1.013636, 1.011537, 1.008746, 0.9997192}{0.9951338, 0.9953619, 1.004796, 1.024475, 1.00954, 0.9961141, 1.010157, 1.015429, 1.01255, 1.005533, 0.9986751}{0.9925948, 0.9927007, 0.9978023, 1.001818, 1.000219, 0.9936098, 1.001294, 1.000507, 1.000221, 1.000229, 0.9974306}{0.9895258, 0.9895355, 0.998317, 1.019976, 1.00199, 0.9902966, 1.004874, 1.016551, 1.015008, 1.004005, 0.9957554}{0.9862037, 0.9865193, 0.9872215, 0.9872463, 0.9867653, 0.9865722, 0.9884763, 0.9896828, 0.9909988, 0.9923567, 0.9937011}{0.9834725, 0.9832317, 0.991236, 1.007238, 0.9911511, 0.9830933, 0.9942489, 1.003996, 1.004708, 0.997656, 0.9916568}{0.9803354, 0.979933, 0.9835221, 0.9852476, 0.9846109, 0.9787664, 0.9871239, 0.9879037, 0.9893922, 0.9911551, 0.9890365}{0.9775395, 0.9767691, 0.9810244, 0.9872505, 0.9805906, 0.9744996, 0.984082, 0.9883787, 0.9890244, 0.987938, 0.9862713}{0.9733028, 0.9725999, 0.9730672, 0.9735015, 0.9734103, 0.9692833, 0.9769227, 0.9802942, 0.9827959, 0.9839282, 0.9828091}{0.9697291, 0.9682972, 0.9748565, 0.9782002, 0.9723261, 0.9636317, 0.9763095, 0.9779516, 0.9802037, 0.9827038, 0.9795323}{0.9665725, 0.9657642, 0.9709779, 0.9786856, 0.9662657, 0.9585076, 0.9717106, 0.9813333, 0.9816692, 0.9772705, 0.9754677}{0.9657998, 0.9637117, 0.9648262, 0.9612885, 0.9558639, 0.9545226, 0.9573789, 0.9598319, 0.9634173, 0.96792, 0.9718322}{0.9647774, 0.9616523, 0.960518, 0.9504998, 0.9503328, 0.9486646, 0.9578204, 0.9717107, 0.9729349, 0.9686304, 0.9680291}{0.962986, 0.9594039, 0.957095, 0.9493917, 0.9447939, 0.9427955, 0.9467726, 0.9499581, 0.9542349, 0.9594406, 0.96412}{0.9612126, 0.9568124, 0.9534836, 0.9448395, 0.9404694, 0.9376641, 0.9421248, 0.950767, 0.957365, 0.958304, 0.9593663}{0.9587544, 0.9538013, 0.9502151, 0.9420716, 0.9354283, 0.9326943, 0.9367219, 0.9424867, 0.9479384, 0.9530448, 0.9550657}{0.9555223, 0.9494487, 0.9491897, 0.9428298, 0.9319309, 0.9289601, 0.9367157, 0.9409216, 0.9420951, 0.9455567, 0.9502505}{0.9568958, 0.9482908, 0.9446062, 0.937518, 0.9271739, 0.924128, 0.9293768, 0.9329761, 0.9371418, 0.9420203, 0.9460282}{0.9556908, 0.9463423, 0.9440375, 0.9286342, 0.9220644, 0.9204639, 0.9229272, 0.9242681, 0.9273937, 0.9335713, 0.9413353}{0.9540391, 0.9448173, 0.9364888, 0.9356021, 0.9253511, 0.9153287, 0.9188359, 0.9214217, 0.9305966, 0.9338653, 0.9371537}{0.9522286, 0.9426345, 0.9355344, 0.9218012, 0.9129469, 0.9106046, 0.9119635, 0.9137805, 0.917548, 0.9236795, 0.9324008}{0.9507305, 0.928471, 0.9305378, 0.9161486, 0.9080564, 0.9055273, 0.9054044, 0.9074973, 0.9121534, 0.9190762, 0.9283259}{0.9485568, 0.9351777, 0.9254334, 0.9112753, 0.9030937, 0.9002722, 0.900817, 0.903129, 0.9073871, 0.9139792, 0.923304}{0.9472804, 0.9358771, 0.9231966, 0.9084594, 0.900332, 0.8974985, 0.8973356, 0.8987836, 0.9026301, 0.9096127, 0.9194672}{0.9468401, 0.931369, 0.9209969, 0.9062339, 0.897229, 0.8943278, 0.892597, 0.8935068, 0.8979384, 0.9055135, 0.9157756}{0.9451038, 0.9276504, 0.9195291, 0.902876, 0.8944665, 0.891229, 0.888959, 0.8900421, 0.8944089, 0.9011988, 0.9112739}{0.9455943, 0.9276041, 0.9167475, 0.9003116, 0.8914873, 0.8872851, 0.8852095, 0.8861346, 0.8903794, 0.8974042, 0.9077878}{0.9433964, 0.9233265, 0.9134735, 0.8975138, 0.8876412, 0.8834397, 0.8810147, 0.8823546, 0.8870495, 0.8942645, 0.9050268}{0.9416778, 0.9175398, 0.9094109, 0.895036, 0.8850475, 0.8799706, 0.8776923, 0.8788563, 0.8831934, 0.8902015, 0.9012498}{0.9388582, 0.9200164, 0.9068525, 0.8924205, 0.8819283, 0.8762768, 0.8747678, 0.8761322, 0.8801892, 0.8869032, 0.8978679}{0.9346578, 0.9197857, 0.9051454, 0.8889021, 0.8799035, 0.8743922, 0.8715897, 0.8718192, 0.8752713, 0.882996, 0.8944457}{0.9332683, 0.915444, 0.9026113, 0.8874209, 0.8775858, 0.8714802, 0.867933, 0.8683239, 0.8723484, 0.8795266, 0.8911153}{0.9321852, 0.9112604, 0.901414, 0.8849621, 0.8751876, 0.8688705, 0.8654776, 0.8662349, 0.8705542, 0.8775796, 0.889271}{0.9305858, 0.9089065, 0.8997457, 0.8820642, 0.8722297, 0.8652786, 0.8619503, 0.8633009, 0.8677915, 0.8751097, 0.8865951}{0.930415, 0.9080172, 0.8977707, 0.8809356, 0.8696984, 0.862575, 0.8596161, 0.8609262, 0.8656879, 0.8722566, 0.883685}{0.9294416, 0.9061092, 0.8954841, 0.8776691, 0.8658581, 0.8602409, 0.8579719, 0.8594121, 0.8632036, 0.8695809, 0.8814153}{0.9281726, 0.9051198, 0.8948082, 0.8747237, 0.8637384, 0.8577528, 0.8553266, 0.8565799, 0.8607771, 0.8675575, 0.8795124}{0.9270042, 0.9022401, 0.8918676, 0.8734006, 0.8622867, 0.8561217, 0.8530442, 0.8536707, 0.8572964, 0.8645122, 0.8767084}{0.9231036, 0.9022498, 0.8900585, 0.8703212, 0.859683, 0.8542955, 0.8511646, 0.8513196, 0.8549858, 0.8625388, 0.8749042}{0.9212382, 0.9006938, 0.8865323, 0.8681495, 0.8582821, 0.8508267, 0.8483132, 0.8488852, 0.8529099, 0.8609986, 0.8743959}{0.9191016, 0.8820475, 0.8875001, 0.8650688, 0.855116, 0.8498837, 0.8466664, 0.8468575, 0.8520504, 0.8597863, 0.8717385}{0.9182098, 0.8990474, 0.8859892, 0.8627416, 0.8530525, 0.8477678, 0.8436862, 0.8455165, 0.8506309, 0.8579942, 0.8695223}{0.9186195, 0.8981197, 0.8837517, 0.8611437, 0.8508201, 0.8438125, 0.8417816, 0.8437737, 0.8488226, 0.8565584, 0.8684941}{0.918364, 0.8951777, 0.8828757, 0.8605755, 0.8505781, 0.8418088, 0.8391179, 0.8406754, 0.8459697, 0.8546402, 0.8670416}{0.9156784, 0.8902863, 0.8801778, 0.8585505, 0.8485543, 0.8395674, 0.8373599, 0.8396981, 0.8458765, 0.8534505, 0.8658023}{0.915476, 0.8869569, 0.8790404, 0.8574831, 0.8474765, 0.8392178, 0.8369748, 0.8392229, 0.8447217, 0.8518093, 0.8637355}{0.916519, 0.8944455, 0.8789403, 0.8567707, 0.8468317, 0.8394456, 0.8360357, 0.8376014, 0.8433008, 0.8500137, 0.8617974}{0.9164008, 0.8909759, 0.8789282, 0.8555186, 0.8453615, 0.8384486, 0.8338246, 0.8363106, 0.8422087, 0.8489887, 0.8612059}{0.9101122, 0.8854868, 0.8734379, 0.8531082, 0.8427319, 0.8377125, 0.8326973, 0.8351732, 0.8410635, 0.8473314, 0.86018}{0.9075168, 0.8791368, 0.8737456, 0.8515539, 0.8414798, 0.8372402, 0.8321837, 0.8343479, 0.8390514, 0.8464871, 0.8591512}{0.9085852, 0.8900539, 0.8738174, 0.8507798, 0.8410904, 0.83662, 0.8315897, 0.8329533, 0.8390076, 0.8454298, 0.8580187}{0.9115042, 0.8867549, 0.8737988, 0.8504367, 0.8404137, 0.8355649, 0.8305241, 0.8326828, 0.8383074, 0.8443366, 0.8570646}{0.9105355, 0.8855797, 0.8736367, 0.8486018, 0.8377495, 0.8337658, 0.8278074, 0.8306468, 0.8370497, 0.8438976, 0.8573141}{0.90684, 0.8772053, 0.8725727, 0.8470414, 0.8385263, 0.8323304, 0.8280139, 0.8308007, 0.8355813, 0.8429648, 0.8556392}{0.9055302, 0.8763878, 0.8716179, 0.8482288, 0.8380762, 0.8308424, 0.8273709, 0.8292452, 0.8346027, 0.8422048, 0.8551799}{0.9049799, 0.8798425, 0.8708113, 0.8478773, 0.8367668, 0.830038, 0.8265402, 0.8284877, 0.8337395, 0.841658, 0.8550562}{0.9030678, 0.8788749, 0.8688741, 0.8462515, 0.835278, 0.8304903, 0.8262389, 0.8276013, 0.8326942, 0.8406456, 0.854121}{0.9001154, 0.8799876, 0.8676909, 0.8430141, 0.8355767, 0.8289789, 0.8252431, 0.8272766, 0.8327967, 0.8402437, 0.8524176}{0.9018876, 0.8795441, 0.868175, 0.844654, 0.8330022, 0.8301258, 0.8255632, 0.8269703, 0.832182, 0.8398155, 0.8526049}{0.9015856, 0.8784589, 0.8672965, 0.8416501, 0.8319622, 0.8295962, 0.8240521, 0.8254856, 0.832693, 0.8396707, 0.8525658}{0.899404, 0.8720236, 0.8650798, 0.8401873, 0.8310365, 0.8276119, 0.8228833, 0.8262704, 0.8319215, 0.8390761, 0.8518921}{0.9020292, 0.8761056, 0.8656747, 0.8409499, 0.8324235, 0.828663, 0.8235511, 0.824616, 0.8297871, 0.8384807, 0.8514602}{0.9029079, 0.8739084, 0.8658609, 0.8410125, 0.83342, 0.8288509, 0.8220855, 0.8236859, 0.8314848, 0.8388933, 0.8506449}{0.9002211, 0.8762723, 0.8661646, 0.8402459, 0.8317427, 0.8260402, 0.8206748, 0.8254091, 0.8311548, 0.8377175, 0.8500944}{0.8970065, 0.8702784, 0.8650183, 0.8387776, 0.8305303, 0.8242224, 0.822524, 0.8247388, 0.8300517, 0.8372047, 0.8499035}{0.8962027, 0.8726964, 0.8630807, 0.8393606, 0.8318856, 0.826507, 0.8219763, 0.8240683, 0.8300253, 0.8375051, 0.8500307}{0.898363, 0.8730105, 0.8623962, 0.839955, 0.8296696, 0.8281425, 0.8227684, 0.8252118, 0.8313266, 0.8373734, 0.8497759}{0.894462, 0.8744138, 0.8609277, 0.8402535, 0.8304465, 0.8266881, 0.8224801, 0.8256451, 0.83067, 0.836659, 0.8493387}{0.8920797, 0.8741642, 0.8603218, 0.8404027, 0.8292612, 0.8262997, 0.8227866, 0.8245859, 0.8300578, 0.8368906, 0.8500402}{0.8924723, 0.8656003, 0.8608397, 0.8394844, 0.8290267, 0.8269601, 0.8215661, 0.8245315, 0.8302057, 0.8377862, 0.8512941}{0.8931899, 0.8680789, 0.8630492, 0.8394652, 0.8300505, 0.8259709, 0.8224027, 0.8246308, 0.8301444, 0.8379594, 0.851072}{0.8947188, 0.8689181, 0.860642, 0.8389805, 0.8293121, 0.8255205, 0.8222435, 0.8246973, 0.8304845, 0.8378562, 0.8521134}{0.8957418, 0.8674813, 0.8600458, 0.8376158, 0.8291955, 0.8253027, 0.8228469, 0.8256585, 0.8296472, 0.8385119, 0.8517738}{0.8960273, 0.8648998, 0.8598126, 0.8371228, 0.8292624, 0.8248044, 0.8233105, 0.8244815, 0.8299137, 0.8384917, 0.8511587}{0.8956199, 0.8693579, 0.8599083, 0.8368586, 0.8291666, 0.8240585, 0.8224305, 0.8247206, 0.8302459, 0.8386201, 0.8513459}{0.8954545, 0.8678176, 0.8588648, 0.8369673, 0.8293692, 0.8257379, 0.8238959, 0.825981, 0.8311353, 0.839014, 0.8528721}{0.8985468, 0.8621182, 0.858748, 0.8367444, 0.8281018, 0.8275909, 0.8255452, 0.8269902, 0.8309701, 0.8387667, 0.8521589}{0.8974612, 0.8653649, 0.8592178, 0.8366379, 0.8293774, 0.8283749, 0.8260416, 0.8267197, 0.8312468, 0.8390581, 0.8521504}{0.8946291, 0.8674493, 0.8594531, 0.838044, 0.8305005, 0.8280644, 0.8255183, 0.827205, 0.831951, 0.839648, 0.8525481}{0.8978102, 0.8671841, 0.8586132, 0.8385979, 0.8304562, 0.8272381, 0.8254817, 0.8272479, 0.8317846, 0.8390951, 0.8514716}{0.894488, 0.8675555, 0.8600347, 0.8386434, 0.8302141, 0.8263628, 0.8251575, 0.8278226, 0.8329483, 0.8386072, 0.8519602}{0.8910802, 0.8670869, 0.8614568, 0.8385474, 0.8299882, 0.8255095, 0.8256518, 0.8287963, 0.8334567, 0.8381308, 0.85247}{0.889489, 0.8636133, 0.8614457, 0.8378287, 0.8290196, 0.8251092, 0.8260496, 0.8288555, 0.8340577, 0.8389332, 0.8536043}{0.8903986, 0.8597167, 0.8613851, 0.8365182, 0.8276148, 0.8253257, 0.8252317, 0.8287328, 0.8359488, 0.8402594, 0.8555944}{0.8912892, 0.8646115, 0.8608553, 0.8353417, 0.8268029, 0.8255416, 0.8243259, 0.8303099, 0.8371276, 0.8417008, 0.8575257}{0.8923228, 0.8712664, 0.8608285, 0.8352425, 0.82898, 0.8272837, 0.8261169, 0.8325613, 0.8369182, 0.8433729, 0.8576098}{0.893346, 0.8687787, 0.8610381, 0.8358753, 0.8314912, 0.8292351, 0.8280215, 0.8327371, 0.837044, 0.845006, 0.8573785}{0.8932936, 0.8574788, 0.8612063, 0.83697, 0.8328183, 0.8303354, 0.8290653, 0.8331872, 0.8378505, 0.8450769, 0.8573694}{0.8906562, 0.8431971, 0.8621244, 0.8361743, 0.8331432, 0.8294362, 0.8303174, 0.8347623, 0.8372994, 0.8442194, 0.8579027}{0.8880899, 0.8566016, 0.8626405, 0.8361494, 0.8332275, 0.8285492, 0.8322102, 0.834336, 0.8367221, 0.8436896, 0.8584296}{0.8893091, 0.8593396, 0.8609608, 0.8399912, 0.8329686, 0.8287473, 0.8330032, 0.8338229, 0.8373848, 0.8452905, 0.8596364}{0.8919749, 0.8591232, 0.8589308, 0.8442036, 0.8328874, 0.8293569, 0.8325636, 0.8343327, 0.8385892, 0.8473205, 0.8610812}{0.8943888, 0.8626474, 0.8602593, 0.8437211, 0.8331256, 0.830006, 0.8323629, 0.835086, 0.8398662, 0.8487562, 0.8622984}{0.895515, 0.8718445, 0.8605246, 0.8416263, 0.8334014, 0.8309165, 0.8325883, 0.8347197, 0.8393176, 0.8494644, 0.8624328}{0.8966178, 0.8661007, 0.8605959, 0.8409439, 0.833716, 0.8317966, 0.832326, 0.8343072, 0.8395518, 0.8500982, 0.8625641}{0.8965551, 0.862054, 0.859649, 0.8405448, 0.8341873, 0.8321716, 0.8323448, 0.8351083, 0.8407576, 0.849916, 0.8633689}{0.8957007, 0.8627521, 0.8591843, 0.8397894, 0.8345156, 0.8322074, 0.8336886, 0.8365516, 0.8421978, 0.8494599, 0.864632}{0.8949243, 0.8682215, 0.8585678, 0.8399593, 0.8346705, 0.8322553, 0.8350016, 0.8377627, 0.8419021, 0.8498372, 0.8658799}{0.8967478, 0.8539803, 0.8584849, 0.8404111, 0.8346538, 0.8328279, 0.8346755, 0.8361235, 0.8424174, 0.8511638, 0.8673111}{0.8985515, 0.8575454, 0.8584028, 0.8406008, 0.8346376, 0.8333934, 0.8333796, 0.8365658, 0.8432352, 0.8524543, 0.8687035}};$/;" v +WDENS_LSSTdepth baryons2.h /^ static double WDENS_LSSTdepth[100][11]={{0.9972338, 1.006271, 1.017278, 1.011789, 1.013636, 0.9993548, 1.009459, 0.9952393, 1.006372, 1.006988, 1.000568}{0.9951338, 0.9945817, 1.014789, 1.007987, 1.015429, 0.9980698, 1.009951, 1.000394, 1.004437, 1.007366, 1.000326}{0.9925948, 0.9947268, 1.003147, 0.9996293, 1.000507, 0.9965074, 1.000925, 0.986367, 1.001587, 1.001936, 1.000053}{0.9895258, 0.9981572, 1.006818, 1.001994, 1.016551, 0.9944339, 1.013794, 1.001182, 1.004783, 1.011116, 0.9996954}{0.9862037, 0.9854796, 0.9871395, 0.9873571, 0.9896828, 0.991931, 0.9943073, 0.9777439, 0.9977054, 0.998645, 0.9992613}{0.9834725, 0.9916454, 0.9966927, 0.9914137, 1.003996, 0.989412, 1.007901, 0.9901617, 1.002253, 1.008391, 0.9988115}{0.9803354, 0.9805492, 0.9856581, 0.9848628, 0.9879037, 0.9862129, 0.9940652, 0.9808548, 0.998128, 0.9994171, 0.998322}{0.9775395, 0.9803637, 0.983581, 0.9811127, 0.9883787, 0.9830059, 0.9936201, 0.9755077, 0.9969779, 1.000464, 0.9976562}{0.9733028, 0.9713436, 0.9723216, 0.9743469, 0.9802942, 0.9789445, 0.9888187, 0.9732922, 0.9951407, 0.9984066, 0.9969569}{0.9697291, 0.9738909, 0.9791189, 0.972203, 0.9779516, 0.9749352, 0.987515, 0.9677444, 0.9949967, 0.9977478, 0.9962515}{0.9665725, 0.9703569, 0.9703745, 0.9678138, 0.9813333, 0.970189, 0.987085, 0.9712213, 0.9920687, 0.9979967, 0.9953408}{0.9657998, 0.9643596, 0.9597383, 0.9555459, 0.9598319, 0.9660306, 0.9750048, 0.9573257, 0.9884214, 0.9924905, 0.9944404}{0.9647774, 0.9618158, 0.94903, 0.9548645, 0.9717107, 0.9614315, 0.9805747, 0.961407, 0.9879633, 0.995338, 0.9935461}{0.962986, 0.9568258, 0.9462142, 0.9445362, 0.9499581, 0.9570879, 0.9675835, 0.9511521, 0.9837143, 0.9889635, 0.9926374}{0.9612126, 0.9550758, 0.9408017, 0.9399285, 0.950767, 0.9516226, 0.9717068, 0.9506935, 0.9837247, 0.9926034, 0.9912957}{0.9587544, 0.951211, 0.9382509, 0.935019, 0.9424867, 0.9470245, 0.961184, 0.9428286, 0.9782031, 0.9846513, 0.9901854}{0.9555223, 0.9497012, 0.9375809, 0.9342509, 0.9409216, 0.941734, 0.9566768, 0.9378061, 0.9783159, 0.9874931, 0.9887742}{0.9568958, 0.9452013, 0.9321031, 0.9277318, 0.9329761, 0.9369138, 0.9549442, 0.9402386, 0.9764262, 0.9854654, 0.9878223}{0.9556908, 0.9473096, 0.9247791, 0.9222599, 0.9242681, 0.9318977, 0.9449727, 0.92767, 0.971097, 0.9802958, 0.9864836}{0.9540391, 0.9400831, 0.9263064, 0.9177731, 0.9214217, 0.9272697, 0.9495746, 0.9298307, 0.9682071, 0.9770035, 0.9850166}{0.9522286, 0.9374437, 0.9169418, 0.9112399, 0.9137805, 0.9217816, 0.9361994, 0.9179112, 0.9652238, 0.9754882, 0.9833489}{0.9507305, 0.9320953, 0.9115003, 0.9054, 0.9074973, 0.9175047, 0.9317314, 0.9133616, 0.9620399, 0.972763, 0.981755}{0.9485568, 0.927406, 0.9065496, 0.9003814, 0.903129, 0.9123091, 0.9271014, 0.9113985, 0.9588802, 0.9704032, 0.9801559}{0.9472804, 0.9249142, 0.9037427, 0.8975107, 0.8987836, 0.9080808, 0.9230716, 0.8990826, 0.956382, 0.9684421, 0.9787869}{0.9468401, 0.9231564, 0.9008471, 0.8939758, 0.8935068, 0.9037052, 0.9197081, 0.9032432, 0.9536988, 0.966268, 0.9772036}{0.9451038, 0.9222442, 0.8981473, 0.890751, 0.8900421, 0.8996301, 0.9151436, 0.8986531, 0.9509862, 0.9643841, 0.9759062}{0.9455943, 0.9191482, 0.8951334, 0.8868522, 0.8861346, 0.8956883, 0.9119351, 0.8965235, 0.9482784, 0.9619004, 0.9741256}{0.9433964, 0.9145364, 0.8920157, 0.8829071, 0.8823546, 0.8923828, 0.9093639, 0.8928238, 0.9463535, 0.9604609, 0.9728516}{0.9416778, 0.9105783, 0.8895284, 0.8794816, 0.8788563, 0.8884174, 0.9053722, 0.8883035, 0.9430189, 0.9578061, 0.9710902}{0.9388582, 0.908596, 0.8865872, 0.8759686, 0.8761322, 0.8849236, 0.902345, 0.8878267, 0.9404622, 0.9558494, 0.9694463}{0.9346578, 0.9076713, 0.883887, 0.8739386, 0.8718192, 0.8810595, 0.8987948, 0.8801953, 0.9377676, 0.9533683, 0.9678523}{0.9332683, 0.9033068, 0.8820004, 0.870756, 0.8683239, 0.8774577, 0.8958493, 0.878252, 0.9354707, 0.9514703, 0.9662154}{0.9321852, 0.9035516, 0.8795437, 0.868047, 0.8662349, 0.8755969, 0.8936455, 0.8761735, 0.9331367, 0.9497346, 0.964853}{0.9305858, 0.9010728, 0.8767285, 0.8645869, 0.8633009, 0.8731261, 0.8910628, 0.8753199, 0.9312162, 0.9479454, 0.9635884}{0.930415, 0.8982301, 0.8748152, 0.8619513, 0.8609262, 0.8703345, 0.8881608, 0.8723231, 0.9288056, 0.9458793, 0.9618829}{0.9294416, 0.8979679, 0.8711278, 0.8597348, 0.8594121, 0.8675413, 0.8859658, 0.870498, 0.9269598, 0.9440326, 0.9604821}{0.9281726, 0.8954026, 0.8685386, 0.8572847, 0.8565799, 0.8654707, 0.8841475, 0.8699473, 0.9250735, 0.9426729, 0.959405}{0.9270042, 0.8928564, 0.8672965, 0.8554517, 0.8536707, 0.8625308, 0.881542, 0.8661485, 0.9230597, 0.9409967, 0.9579149}{0.9231036, 0.8924117, 0.8642735, 0.8536557, 0.8513196, 0.8603141, 0.879765, 0.8656976, 0.9215289, 0.9393574, 0.9562028}{0.9212382, 0.8890477, 0.862647, 0.8499999, 0.8488852, 0.8589365, 0.8792143, 0.8634344, 0.9202043, 0.9376509, 0.9548188}{0.9191016, 0.8810333, 0.8597475, 0.8494381, 0.8468575, 0.8575113, 0.8762551, 0.8516413, 0.9178711, 0.9359438, 0.9537725}{0.9182098, 0.8859042, 0.8572966, 0.8467774, 0.8455165, 0.8560304, 0.8739676, 0.8554977, 0.916536, 0.9349067, 0.9527242}{0.9186195, 0.8844729, 0.8554496, 0.8433969, 0.8437737, 0.8544428, 0.8731333, 0.8559498, 0.9158098, 0.9338172, 0.9514801}{0.918364, 0.8820378, 0.8552259, 0.8412691, 0.8406754, 0.8525259, 0.8713831, 0.8572149, 0.9130352, 0.9313985, 0.9497046}{0.9156784, 0.877708, 0.853349, 0.8388898, 0.8396981, 0.8513141, 0.870022, 0.84692, 0.9116537, 0.9298377, 0.9484935}{0.915476, 0.8775765, 0.8522815, 0.8388923, 0.8392229, 0.849648, 0.868217, 0.8513915, 0.9106164, 0.9284808, 0.9478214}{0.916519, 0.8792325, 0.8515472, 0.8387631, 0.8376014, 0.8479392, 0.866667, 0.8532641, 0.9095863, 0.9277017, 0.9470829}{0.9164008, 0.8804776, 0.8500297, 0.8375012, 0.8363106, 0.8467389, 0.8656863, 0.8489277, 0.9083319, 0.9267336, 0.945637}{0.9101122, 0.8731475, 0.8475486, 0.8367388, 0.8351732, 0.8452497, 0.8647215, 0.8467792, 0.9074136, 0.9254793, 0.9453751}{0.9075168, 0.876197, 0.8458939, 0.8361931, 0.8343479, 0.8442522, 0.8637108, 0.8400775, 0.9068659, 0.9247206, 0.9442492}{0.9085852, 0.8713008, 0.845204, 0.8355745, 0.8329533, 0.8431905, 0.8625771, 0.841645, 0.9058751, 0.9233722, 0.9432897}{0.9115042, 0.8715315, 0.8449833, 0.8345249, 0.8326828, 0.8420615, 0.8618906, 0.8458771, 0.9045348, 0.9225926, 0.942641}{0.9105355, 0.8704217, 0.8424293, 0.832571, 0.8306468, 0.841504, 0.8621738, 0.8446095, 0.9039006, 0.9220701, 0.941789}{0.90684, 0.8689523, 0.8421946, 0.8310658, 0.8308007, 0.8406354, 0.8603148, 0.8432494, 0.9028704, 0.9214112, 0.9412364}{0.9055302, 0.8682836, 0.8427867, 0.8300964, 0.8292452, 0.8399862, 0.8600839, 0.841584, 0.9027532, 0.9210411, 0.9404967}{0.9049799, 0.8679777, 0.8421045, 0.8293409, 0.8284877, 0.8392357, 0.8593104, 0.8430245, 0.9020694, 0.919769, 0.9396961}{0.9030678, 0.8645042, 0.8397865, 0.8296105, 0.8276013, 0.8381281, 0.8583874, 0.845373, 0.9005734, 0.9187231, 0.9390712}{0.9001154, 0.8644887, 0.8389573, 0.8280658, 0.8272766, 0.8378099, 0.8567296, 0.8450011, 0.9003683, 0.9181991, 0.9385597}{0.9018876, 0.8659494, 0.8382749, 0.8294766, 0.8269703, 0.8376529, 0.8570054, 0.8455743, 0.9004348, 0.9181687, 0.9383327}{0.9015856, 0.8643896, 0.8356183, 0.8283524, 0.8254856, 0.8373034, 0.8575521, 0.8431381, 0.900072, 0.9177268, 0.938194}{0.899404, 0.8642227, 0.8348285, 0.8266266, 0.8262704, 0.8367118, 0.8563092, 0.8389972, 0.8993156, 0.9170615, 0.9377789}{0.9020292, 0.8656654, 0.8360794, 0.8276313, 0.824616, 0.8361067, 0.8559224, 0.844511, 0.8988371, 0.9159877, 0.9363449}{0.9029079, 0.8694127, 0.8366995, 0.8278091, 0.8236859, 0.8365054, 0.8550019, 0.8411257, 0.8977385, 0.9160445, 0.9365071}{0.9002211, 0.8664809, 0.8355865, 0.8243219, 0.8254091, 0.8356305, 0.8544776, 0.8433227, 0.8973618, 0.9153139, 0.9362618}{0.8970065, 0.8664581, 0.8341463, 0.823958, 0.8247388, 0.8348127, 0.8551064, 0.8444707, 0.8971141, 0.915004, 0.9359078}{0.8962027, 0.865898, 0.8356239, 0.8255552, 0.8240683, 0.8351946, 0.8549329, 0.8486611, 0.8974617, 0.9152738, 0.9357989}{0.898363, 0.8642024, 0.8341975, 0.8272151, 0.8252118, 0.8350883, 0.8544552, 0.8475446, 0.8971631, 0.9154899, 0.9355865}{0.894462, 0.8645576, 0.8343752, 0.8254557, 0.8256451, 0.8344227, 0.8538451, 0.842647, 0.8961499, 0.9146506, 0.9352703}{0.8920797, 0.8602925, 0.8342056, 0.8257229, 0.8245859, 0.8345098, 0.855211, 0.84546, 0.8957683, 0.9148631, 0.9352574}{0.8924723, 0.8627885, 0.8328946, 0.8258418, 0.8245315, 0.835237, 0.8555809, 0.8463064, 0.8960212, 0.9148914, 0.9352316}{0.8931899, 0.8652932, 0.8340562, 0.8251651, 0.8246308, 0.8355237, 0.8552686, 0.8377125, 0.8957832, 0.9140364, 0.934294}{0.8947188, 0.8614258, 0.8334818, 0.8247836, 0.8246973, 0.8354684, 0.8562308, 0.83993, 0.8966686, 0.9154543, 0.9351948}{0.8957418, 0.8630386, 0.8327734, 0.8246349, 0.8256585, 0.8358198, 0.855689, 0.8433064, 0.8959988, 0.9148332, 0.9354402}{0.8960273, 0.8645773, 0.8325724, 0.8244852, 0.8244815, 0.8361757, 0.8551948, 0.8451039, 0.8959614, 0.9152288, 0.9358883}{0.8956199, 0.8648824, 0.8327062, 0.82372, 0.8247206, 0.8362609, 0.8558997, 0.844215, 0.8972301, 0.9162763, 0.9369489}{0.8954545, 0.859483, 0.832789, 0.8254415, 0.825981, 0.8365764, 0.8570276, 0.8445204, 0.8964392, 0.9157914, 0.9360872}{0.8985468, 0.8589045, 0.8318332, 0.8272866, 0.8269902, 0.8362154, 0.8559557, 0.8416299, 0.8971218, 0.9166339, 0.9362995}{0.8974612, 0.8682729, 0.8320233, 0.8279022, 0.8267197, 0.8365853, 0.8563817, 0.8480778, 0.8975377, 0.9166548, 0.936047}{0.8946291, 0.8592858, 0.8338438, 0.8275321, 0.827205, 0.8372375, 0.8566397, 0.8524896, 0.8974668, 0.9159341, 0.9357451}{0.8978102, 0.8588545, 0.8339327, 0.8268596, 0.8272479, 0.8367653, 0.8560471, 0.8458864, 0.897599, 0.9164134, 0.9368359}{0.894488, 0.8666314, 0.8338763, 0.8259586, 0.8278226, 0.8363236, 0.8565561, 0.8460519, 0.8977697, 0.9175276, 0.937307}{0.8910802, 0.8687767, 0.8336264, 0.8250644, 0.8287963, 0.8358898, 0.8570409, 0.8485947, 0.8979326, 0.9184319, 0.9377487}{0.889489, 0.8675763, 0.8328944, 0.8253047, 0.8288555, 0.8361926, 0.8582034, 0.8529573, 0.8987127, 0.9187281, 0.9378683}{0.8903986, 0.8669655, 0.8315886, 0.8255331, 0.8287328, 0.8375008, 0.8603226, 0.847452, 0.8993945, 0.9182954, 0.9375537}{0.8912892, 0.8631745, 0.8303341, 0.825396, 0.8303099, 0.8387677, 0.8614863, 0.8463377, 0.8997505, 0.9180018, 0.9372437}{0.8923228, 0.8567316, 0.8309814, 0.8270741, 0.8325613, 0.8403298, 0.8613541, 0.8450372, 0.9004158, 0.918417, 0.9386702}{0.893346, 0.860419, 0.8331487, 0.8291203, 0.8327371, 0.8419174, 0.861198, 0.8437776, 0.9012209, 0.9193418, 0.9403296}{0.8932936, 0.8677784, 0.8344311, 0.8300715, 0.8331872, 0.8428077, 0.8615214, 0.8484518, 0.901673, 0.9202545, 0.9414823}{0.8906562, 0.8702472, 0.8344379, 0.8291239, 0.8347623, 0.842022, 0.8620863, 0.8492678, 0.9016141, 0.9209615, 0.9415225}{0.8880899, 0.8709544, 0.8347162, 0.8287851, 0.834336, 0.8412594, 0.8626887, 0.8513323, 0.9017541, 0.9215679, 0.9415621}{0.8893091, 0.8700213, 0.8379101, 0.8297037, 0.8338229, 0.8424471, 0.8639839, 0.8521808, 0.9030222, 0.9228588, 0.9423338}{0.8919749, 0.8672151, 0.8377732, 0.8303331, 0.8343327, 0.8443845, 0.8652869, 0.8517624, 0.9044366, 0.9236899, 0.9433549}{0.8943888, 0.8634071, 0.8372898, 0.8305006, 0.835086, 0.8461313, 0.8655137, 0.85253, 0.9054952, 0.9239943, 0.9442575}{0.895515, 0.8711914, 0.8365762, 0.8314501, 0.8347197, 0.8468605, 0.8656199, 0.8526041, 0.9052723, 0.9233075, 0.9447107}{0.8966178, 0.8713527, 0.8368139, 0.8322529, 0.8343072, 0.8475613, 0.8668255, 0.853656, 0.9050355, 0.9235026, 0.9451549}{0.8965551, 0.8722581, 0.8364777, 0.8321871, 0.8351083, 0.8475939, 0.8684019, 0.8545585, 0.9054423, 0.9246706, 0.9452729}{0.8957007, 0.871135, 0.8367266, 0.8322249, 0.8365516, 0.8471776, 0.8697112, 0.8453763, 0.9063965, 0.9260671, 0.9451704}{0.8949243, 0.8673968, 0.836975, 0.832827, 0.8377627, 0.8468079, 0.8703119, 0.8464493, 0.9075865, 0.927097, 0.9451106}{0.8967478, 0.869858, 0.8372199, 0.8334276, 0.8361235, 0.8481101, 0.8718104, 0.853118, 0.9084389, 0.9272213, 0.9466787}{0.8985515, 0.8680867, 0.8371722, 0.8340202, 0.8365658, 0.8493786, 0.8730797, 0.8624535, 0.9092636, 0.9278993, 0.9482106}};$/;" v +WML1V848_DESdepth baryons2.h /^ static double WML1V848_DESdepth[100][11]={{0.9970392, 0.9975931, 0.997977, 0.9983605, 0.9987271, 0.9990848, 0.9994573, 0.9997007, 0.9999077, 1.000088, 1.000264}{0.9948117, 0.9956671, 0.9963203, 0.9969678, 0.9974229, 0.9978947, 0.9984132, 0.9988713, 0.9992453, 0.9995182, 0.9997682}{0.9921357, 0.9931357, 0.9942234, 0.9950028, 0.9957743, 0.9964928, 0.9972102, 0.9977897, 0.9982927, 0.9987203, 0.9991223}{0.9898314, 0.9911962, 0.9925038, 0.9934636, 0.9940936, 0.9947708, 0.9957275, 0.9965462, 0.9972167, 0.9977601, 0.9983134}{0.9870729, 0.9891006, 0.9907072, 0.9913181, 0.9919214, 0.9926945, 0.9937745, 0.9947935, 0.995728, 0.9965819, 0.9973901}{0.9846757, 0.9862884, 0.9878746, 0.9887583, 0.9895138, 0.9904875, 0.9918865, 0.9932175, 0.9943561, 0.9954239, 0.9964372}{0.9830389, 0.9843331, 0.9859357, 0.9865114, 0.9872209, 0.9880629, 0.989581, 0.9911042, 0.99256, 0.9939001, 0.995136}{0.9800863, 0.9808457, 0.9823745, 0.9830716, 0.984091, 0.9855515, 0.9875325, 0.9893856, 0.9910296, 0.9925402, 0.9939996}{0.9770531, 0.9780165, 0.9797259, 0.9803442, 0.9813835, 0.9827494, 0.9850494, 0.9871325, 0.9890266, 0.990749, 0.9924325}{0.97391, 0.97443, 0.9764857, 0.9771409, 0.9780647, 0.9796719, 0.9824752, 0.9847477, 0.9868556, 0.9889066, 0.991044}{0.97212, 0.9730871, 0.9752848, 0.9754647, 0.9757502, 0.97703, 0.9796866, 0.9821102, 0.9844442, 0.9867162, 0.9891293}{0.972215, 0.9716024, 0.9731634, 0.9725562, 0.9728872, 0.9743822, 0.9769828, 0.979475, 0.9820385, 0.9847966, 0.9876076}{0.9712759, 0.970031, 0.9714597, 0.9700807, 0.9700051, 0.9712152, 0.9739705, 0.9770035, 0.9799174, 0.982947, 0.9859857}{0.9706842, 0.9689184, 0.96923, 0.9668176, 0.9663415, 0.9677062, 0.9708234, 0.9740919, 0.9774143, 0.9807624, 0.9841085}{0.9683175, 0.9667778, 0.9666703, 0.963974, 0.9630873, 0.9646347, 0.9681155, 0.9717057, 0.9750638, 0.9785562, 0.982161}{0.9670261, 0.9648746, 0.9649677, 0.9619224, 0.9606722, 0.9618365, 0.9652085, 0.9688126, 0.9725227, 0.9761803, 0.9799559}{0.9657353, 0.962401, 0.962414, 0.9584587, 0.9574927, 0.9600846, 0.9633811, 0.9668875, 0.9704064, 0.9740498, 0.9781608}{0.9668908, 0.9618262, 0.9609797, 0.9560997, 0.9550755, 0.9569353, 0.9602286, 0.9637727, 0.9675886, 0.9715454, 0.9759758}{0.9663036, 0.9616437, 0.959808, 0.9546515, 0.953556, 0.9550963, 0.9581378, 0.9616029, 0.96535, 0.9694146, 0.9740414}{0.965708, 0.9610329, 0.9583487, 0.9527575, 0.9511651, 0.9523569, 0.9556664, 0.9592723, 0.9632796, 0.9675073, 0.9724048}{0.9654688, 0.9600311, 0.956273, 0.9499036, 0.9484809, 0.9493414, 0.9528922, 0.9564838, 0.9603881, 0.9648597, 0.969991}{0.9643263, 0.9585383, 0.9535929, 0.9468317, 0.9455119, 0.9462105, 0.949486, 0.9532627, 0.9575728, 0.9624858, 0.9678749}{0.9634797, 0.957136, 0.9504027, 0.9433425, 0.9417248, 0.9428409, 0.9471496, 0.9511671, 0.955215, 0.9599421, 0.9654366}{0.9631898, 0.9543345, 0.9491991, 0.9423114, 0.9408084, 0.9423873, 0.9458758, 0.9489155, 0.9522708, 0.9574097, 0.9634193}{0.9638125, 0.952609, 0.9484423, 0.9412612, 0.9395082, 0.9410472, 0.9432582, 0.9457844, 0.9498402, 0.9554096, 0.9616296}{0.9636967, 0.9515452, 0.9480037, 0.9396021, 0.9382456, 0.9389836, 0.9407902, 0.9437229, 0.9479733, 0.9533215, 0.9595875}{0.9648847, 0.9517629, 0.9466681, 0.937672, 0.9362816, 0.9372537, 0.9394841, 0.9421614, 0.9461768, 0.9515121, 0.9577569}{0.9631904, 0.9512569, 0.9447374, 0.9365076, 0.9340571, 0.9347461, 0.9368622, 0.9399099, 0.944233, 0.9498304, 0.9562966}{0.9616413, 0.9494015, 0.9414348, 0.935351, 0.9335882, 0.9335825, 0.9354289, 0.9378835, 0.9417378, 0.9472967, 0.9542695}{0.9582933, 0.9467741, 0.9414433, 0.9342724, 0.9314037, 0.9310184, 0.9335443, 0.9364289, 0.9404146, 0.9460666, 0.9528443}{0.9561402, 0.947518, 0.940379, 0.9319677, 0.9306818, 0.9305001, 0.9317581, 0.933746, 0.9374806, 0.94398, 0.9510096}{0.9570488, 0.9455538, 0.9405435, 0.9328543, 0.9303707, 0.9288544, 0.9294848, 0.9317805, 0.9362288, 0.9424699, 0.949471}{0.9559987, 0.944332, 0.9393351, 0.9298331, 0.928145, 0.927409, 0.9282599, 0.9311463, 0.9357967, 0.9416708, 0.9484922}{0.9557386, 0.9441697, 0.9389014, 0.9285227, 0.9265968, 0.9253666, 0.9263948, 0.9297523, 0.9346726, 0.9407759, 0.9471326}{0.9567354, 0.941671, 0.9381272, 0.9290872, 0.9255839, 0.9243793, 0.9254901, 0.9288299, 0.9338847, 0.9389658, 0.9450791}{0.9577858, 0.9412254, 0.9361433, 0.9268413, 0.9234806, 0.9229445, 0.9248548, 0.9284947, 0.9326489, 0.9378106, 0.9445497}{0.9556589, 0.9400991, 0.9368149, 0.9246908, 0.9222685, 0.9217014, 0.9237517, 0.9269441, 0.931145, 0.9363146, 0.9433628}{0.9549707, 0.9397401, 0.9350492, 0.9245474, 0.9222553, 0.9208683, 0.9226029, 0.9255539, 0.9290899, 0.9346125, 0.9413112}{0.9508334, 0.939407, 0.9344868, 0.923258, 0.9203465, 0.9205429, 0.9218768, 0.9241516, 0.9278605, 0.9334696, 0.9401713}{0.9486547, 0.9400697, 0.9310559, 0.9209634, 0.9214254, 0.918306, 0.9204006, 0.9229874, 0.9268798, 0.9332796, 0.9403177}{0.9472794, 0.939182, 0.9336051, 0.9200109, 0.9196214, 0.9179907, 0.9197675, 0.9220499, 0.9266924, 0.9321292, 0.9386928}{0.9478831, 0.9427022, 0.932742, 0.9184681, 0.9181256, 0.9167813, 0.9179532, 0.9211411, 0.9260019, 0.9313332, 0.9376114}{0.9499345, 0.9446529, 0.9302455, 0.9175769, 0.9166057, 0.9144056, 0.9168467, 0.9209425, 0.9256706, 0.9309653, 0.9375125}{0.9497879, 0.9409953, 0.9307359, 0.9197866, 0.9181812, 0.9145707, 0.9167786, 0.9198936, 0.9237144, 0.9285376, 0.9361474}{0.9463748, 0.9392215, 0.9286103, 0.9182348, 0.9177306, 0.9126423, 0.9146165, 0.9186691, 0.9246083, 0.9289922, 0.9365509}{0.9479624, 0.9398907, 0.9288369, 0.9176427, 0.9171831, 0.9133864, 0.9150023, 0.9197557, 0.9244717, 0.9286806, 0.9358511}{0.9507689, 0.9390223, 0.9296237, 0.917771, 0.9181291, 0.9150526, 0.9156154, 0.918986, 0.9238955, 0.9278552, 0.9348614}{0.9493206, 0.9394259, 0.9301938, 0.9186847, 0.9190115, 0.9149453, 0.9144737, 0.9184624, 0.9235085, 0.9274841, 0.934845}{0.9444401, 0.9348484, 0.9272013, 0.9169804, 0.9154774, 0.9148158, 0.9143336, 0.9186511, 0.9237124, 0.926358, 0.9336375}{0.9419169, 0.9365224, 0.9274294, 0.9155061, 0.9155139, 0.914962, 0.9146022, 0.9186447, 0.9220451, 0.9260006, 0.933247}{0.9444433, 0.9373599, 0.9272826, 0.9157708, 0.9159408, 0.91472, 0.9144222, 0.9174322, 0.9233077, 0.9260121, 0.9336338}{0.9502015, 0.9360602, 0.9277261, 0.9157591, 0.9158388, 0.9140829, 0.9138212, 0.918706, 0.9239036, 0.9262599, 0.9343867}{0.9496284, 0.9357593, 0.9294583, 0.9138879, 0.9142896, 0.913862, 0.9121655, 0.9173369, 0.9230843, 0.926151, 0.9343375}{0.9473885, 0.9351938, 0.9292098, 0.9144483, 0.9155497, 0.9130657, 0.9134567, 0.9187202, 0.922786, 0.9264135, 0.9335318}{0.9471748, 0.9366234, 0.9291995, 0.9165861, 0.915893, 0.9129955, 0.9144999, 0.9185869, 0.9223874, 0.9265326, 0.9345391}{0.9471946, 0.9340412, 0.9289174, 0.9165125, 0.9156047, 0.9133853, 0.9148996, 0.9192597, 0.922598, 0.9269379, 0.935377}{0.9453373, 0.9324458, 0.9270648, 0.9148914, 0.914626, 0.9137758, 0.9172494, 0.9199323, 0.9226871, 0.926463, 0.9341555}{0.9420546, 0.9357128, 0.9269811, 0.9130464, 0.9154091, 0.9133938, 0.9154202, 0.919154, 0.9236539, 0.9276465, 0.9341394}{0.9443194, 0.9331332, 0.9279635, 0.9149067, 0.914496, 0.9145555, 0.9148831, 0.918679, 0.9243795, 0.9270291, 0.9353131}{0.9456869, 0.93228, 0.9283255, 0.9132153, 0.9142398, 0.9142403, 0.9136225, 0.918915, 0.9244142, 0.9273102, 0.9354442}{0.9454156, 0.9311172, 0.9276817, 0.9124797, 0.9143317, 0.913304, 0.914529, 0.9197757, 0.9243815, 0.9275017, 0.9348033}{0.9475738, 0.9342518, 0.9290254, 0.9141502, 0.9178057, 0.9166383, 0.9163101, 0.9197301, 0.9240914, 0.9286519, 0.9359522}{0.9516091, 0.9363382, 0.9311274, 0.9160437, 0.91852, 0.9181331, 0.915651, 0.9197164, 0.9271023, 0.9296957, 0.9349786}{0.9505581, 0.935079, 0.9317691, 0.916086, 0.9170652, 0.9150877, 0.9140423, 0.9217199, 0.9265345, 0.9278992, 0.9346397}{0.9482168, 0.9334489, 0.9308826, 0.9152012, 0.9159054, 0.9129918, 0.9163271, 0.9214341, 0.9252422, 0.9275857, 0.9351313}{0.9484337, 0.932355, 0.9292795, 0.9164403, 0.918005, 0.9161462, 0.9171679, 0.9214396, 0.9258519, 0.92904, 0.9363473}{0.9506312, 0.933936, 0.9274679, 0.9175813, 0.9176676, 0.9181491, 0.9181221, 0.9222208, 0.9269787, 0.9306697, 0.9374874}{0.947038, 0.9359714, 0.9287319, 0.9179841, 0.9187449, 0.9181632, 0.9186168, 0.9235543, 0.92914, 0.9300917, 0.9377724}{0.9449881, 0.9319428, 0.9281543, 0.9184246, 0.9182925, 0.9192399, 0.9195192, 0.9236725, 0.9289149, 0.9313171, 0.9386411}{0.9457191, 0.9302922, 0.9284206, 0.918373, 0.9187099, 0.9208603, 0.9182124, 0.9245208, 0.9298732, 0.9330262, 0.9399597}{0.9468992, 0.9311482, 0.932161, 0.9197499, 0.9200385, 0.9198425, 0.9204164, 0.9249559, 0.9296854, 0.9333574, 0.9405571}{0.950285, 0.9349218, 0.9308759, 0.9192835, 0.919148, 0.9201484, 0.9215016, 0.9258256, 0.9301136, 0.9344728, 0.9414055}{0.9510497, 0.9354583, 0.9298604, 0.9180108, 0.9212179, 0.9199437, 0.9216632, 0.9258582, 0.9310775, 0.9348003, 0.9416705}{0.9513465, 0.9346862, 0.9300341, 0.9186008, 0.9213527, 0.9200392, 0.9220988, 0.9273183, 0.931396, 0.9352558, 0.9419094}{0.9526739, 0.9358481, 0.9312959, 0.9173978, 0.9205213, 0.9212097, 0.9242404, 0.9279678, 0.9321919, 0.9362009, 0.9426845}{0.9522766, 0.9334551, 0.9318716, 0.9183362, 0.9232891, 0.9241852, 0.9250098, 0.9287124, 0.9332582, 0.9370669, 0.9448662}{0.9572666, 0.9345793, 0.9316705, 0.9212714, 0.9219559, 0.9270277, 0.9274971, 0.9309508, 0.9345271, 0.9386748, 0.9451547}{0.9574857, 0.9336203, 0.9331297, 0.9209006, 0.924695, 0.9284939, 0.928863, 0.9315931, 0.9356205, 0.9398404, 0.945789}{0.9548918, 0.9342064, 0.9340071, 0.9236672, 0.9270179, 0.9288247, 0.9290899, 0.9327458, 0.9368035, 0.9407086, 0.9466531}{0.9576965, 0.936751, 0.9347219, 0.9250986, 0.9269262, 0.9291064, 0.9308548, 0.9340176, 0.9372078, 0.940339, 0.9465032}{0.9543055, 0.9378318, 0.93705, 0.9257654, 0.9276255, 0.9281094, 0.9306433, 0.9351136, 0.9389319, 0.9402672, 0.9476979}{0.9508365, 0.9372717, 0.9393555, 0.9263819, 0.9283129, 0.9271118, 0.9315651, 0.9365355, 0.9398839, 0.9401954, 0.9488933}{0.9499821, 0.9360954, 0.9401409, 0.9257206, 0.9276859, 0.9277012, 0.9335681, 0.9373389, 0.9411373, 0.9417657, 0.9502541}{0.9527301, 0.9362857, 0.9411247, 0.9234283, 0.9270226, 0.9305049, 0.9339275, 0.9382652, 0.9441687, 0.94425, 0.9518477}{0.9554205, 0.9396653, 0.9410113, 0.922766, 0.9273693, 0.933302, 0.9339344, 0.9407162, 0.9462214, 0.9462634, 0.9533943}{0.9566737, 0.941513, 0.9398476, 0.9255551, 0.929359, 0.935575, 0.9360503, 0.9434216, 0.9479185, 0.9476923, 0.9547836}{0.9576406, 0.9382003, 0.9388326, 0.9282704, 0.9313106, 0.9376867, 0.9382606, 0.9450466, 0.9493853, 0.9491155, 0.9561069}{0.9581294, 0.9354136, 0.9403756, 0.9290089, 0.9332258, 0.9393005, 0.9400294, 0.9470072, 0.9496844, 0.9500458, 0.9574117}{0.9575027, 0.9358109, 0.9421964, 0.9279334, 0.9355979, 0.9398054, 0.9424494, 0.949177, 0.9479492, 0.9502722, 0.9587566}{0.9568933, 0.9345598, 0.9433498, 0.928985, 0.9375052, 0.9403037, 0.9452938, 0.9477922, 0.9476671, 0.9506937, 0.9600862}{0.9599127, 0.9359527, 0.9429503, 0.93345, 0.9377947, 0.9418666, 0.9473159, 0.9475032, 0.9487449, 0.9530504, 0.9612817}{0.9643178, 0.9390306, 0.9427459, 0.9379421, 0.9380359, 0.9438138, 0.9474261, 0.9483445, 0.950276, 0.9558903, 0.9624051}{0.9681064, 0.9414213, 0.944877, 0.9380165, 0.9389121, 0.9455543, 0.9476659, 0.9494571, 0.9524155, 0.9573615, 0.9635539}{0.9686769, 0.9388517, 0.9455434, 0.9375172, 0.9390541, 0.9463353, 0.9485559, 0.9505193, 0.954011, 0.9576431, 0.9649612}{0.9692355, 0.9388615, 0.9460935, 0.937392, 0.9392519, 0.9470903, 0.9493989, 0.9518142, 0.9547855, 0.9580036, 0.9663353}{0.9709858, 0.9418594, 0.9463171, 0.9372731, 0.9413231, 0.9485296, 0.9510249, 0.9527232, 0.9562651, 0.9587559, 0.9678792}{0.9735361, 0.9446552, 0.9469549, 0.9371297, 0.9442612, 0.9504391, 0.9515554, 0.9540775, 0.9584673, 0.9592247, 0.9695379}{0.9760155, 0.9456231, 0.9471309, 0.9394138, 0.9463356, 0.9522659, 0.9520504, 0.9559476, 0.9588494, 0.960167, 0.971171}{0.9775189, 0.9438397, 0.9489713, 0.9415379, 0.9459299, 0.9516997, 0.9521857, 0.9570571, 0.9594661, 0.9614542, 0.9727978}{0.9790059, 0.9440606, 0.9507698, 0.9424893, 0.9455372, 0.9511406, 0.9531246, 0.957568, 0.960284, 0.9627067, 0.9743799}};$/;" v +WML1V848_LSSTdepth baryons2.h /^ static double WML1V848_LSSTdepth[100][11]={{0.9970392, 0.9979198, 0.9986086, 0.9991673, 0.9997007, 1.000043, 1.000313, 0.9875152, 1.000576, 1.000614, 1.000633}{0.9948117, 0.9961314, 0.9971472, 0.998054, 0.9988713, 0.9994329, 0.999873, 0.9948805, 1.000333, 1.000419, 1.000467}{0.9921357, 0.993992, 0.9954314, 0.9966449, 0.9977897, 0.9986318, 0.9992496, 0.9843808, 1.000017, 1.000184, 1.000286}{0.9898314, 0.9921995, 0.9937283, 0.9950566, 0.9965462, 0.9975864, 0.9985782, 0.994397, 0.9996787, 0.9999325, 1.000075}{0.9870729, 0.9903902, 0.9915978, 0.9929277, 0.9947935, 0.996417, 0.9976405, 0.9800051, 0.9991974, 0.9995563, 0.9997881}{0.9846757, 0.9875773, 0.9891354, 0.9908171, 0.9932175, 0.995169, 0.9968292, 0.9856296, 0.9987885, 0.9992762, 0.9995599}{0.9830389, 0.9855695, 0.9867284, 0.9885094, 0.9911042, 0.9935994, 0.9955717, 0.9808959, 0.9981592, 0.998787, 0.9992014}{0.9800863, 0.982052, 0.9835769, 0.9859728, 0.9893856, 0.992217, 0.9945342, 0.9766525, 0.9975889, 0.9983834, 0.9988775}{0.9770531, 0.9794036, 0.9807287, 0.9833647, 0.9871325, 0.990299, 0.9931104, 0.9762601, 0.9969039, 0.9978756, 0.9985189}{0.97391, 0.9762332, 0.9776861, 0.9802421, 0.9847477, 0.9884643, 0.9917692, 0.9692546, 0.996207, 0.9973862, 0.9981594}{0.97212, 0.9749129, 0.9754416, 0.9776618, 0.9821102, 0.9861559, 0.9900383, 0.9756666, 0.995274, 0.9967095, 0.9976557}{0.972215, 0.9729308, 0.9726161, 0.9749109, 0.979475, 0.9842495, 0.9885114, 0.9662404, 0.9944765, 0.9961013, 0.9972079}{0.9712759, 0.9714102, 0.9698427, 0.9718337, 0.9770035, 0.9822873, 0.9871361, 0.9691932, 0.9937696, 0.9955842, 0.9967579}{0.9706842, 0.969519, 0.9663657, 0.9683574, 0.9740919, 0.9800877, 0.9852462, 0.9637089, 0.9927639, 0.9948092, 0.9962144}{0.9683175, 0.9670535, 0.9632721, 0.9654121, 0.9717057, 0.9778299, 0.9834657, 0.961756, 0.991736, 0.9940844, 0.9956321}{0.9670261, 0.9653532, 0.9608465, 0.9627145, 0.9688126, 0.9753483, 0.981318, 0.9580547, 0.9906765, 0.9933225, 0.995155}{0.9657353, 0.9629997, 0.9575878, 0.9607441, 0.9668875, 0.9732511, 0.9796277, 0.9543855, 0.9895307, 0.99247, 0.9944284}{0.9668908, 0.9618924, 0.9552656, 0.9576445, 0.9637727, 0.9706126, 0.9776115, 0.95699, 0.9886168, 0.9917534, 0.993954}{0.9663036, 0.9607848, 0.9539143, 0.9557081, 0.9616029, 0.9685431, 0.9756547, 0.9500753, 0.9873073, 0.9907922, 0.9932837}{0.965708, 0.9599223, 0.9515174, 0.9530916, 0.9592723, 0.9665403, 0.9741139, 0.9515868, 0.9863226, 0.9900697, 0.9926839}{0.9654688, 0.9579432, 0.9489443, 0.9500498, 0.9564838, 0.9639206, 0.9717318, 0.9444129, 0.9850462, 0.9890124, 0.9919221}{0.9643263, 0.9554803, 0.9460292, 0.9467728, 0.9532627, 0.9615427, 0.9695506, 0.9418428, 0.9835864, 0.9877993, 0.9910318}{0.9634797, 0.9525961, 0.9421897, 0.9437082, 0.9511671, 0.9589595, 0.967337, 0.9421393, 0.9823499, 0.9869104, 0.9904769}{0.9631898, 0.951069, 0.9412745, 0.9431729, 0.9489155, 0.956494, 0.9652339, 0.9311249, 0.9812238, 0.985923, 0.989677}{0.9638125, 0.9502132, 0.9397773, 0.9414971, 0.9457844, 0.9543136, 0.9636643, 0.9371402, 0.979742, 0.9848471, 0.988918}{0.9636967, 0.9498648, 0.93875, 0.9392767, 0.9437229, 0.9523427, 0.9615733, 0.9342832, 0.9787601, 0.9842039, 0.9883878}{0.9648847, 0.9494356, 0.9364228, 0.9377017, 0.9421614, 0.9504846, 0.9598932, 0.9337732, 0.9775785, 0.983102, 0.9875121}{0.9631904, 0.9474002, 0.9350023, 0.9351207, 0.9399099, 0.9486882, 0.9584955, 0.9309304, 0.9765664, 0.9822862, 0.9867877}{0.9616413, 0.9433162, 0.9343856, 0.9339468, 0.9378835, 0.9461798, 0.9564877, 0.9285279, 0.9751147, 0.9811207, 0.9860312}{0.9582933, 0.9431832, 0.9325507, 0.9315267, 0.9364289, 0.9448418, 0.9551884, 0.9294985, 0.97369, 0.9800983, 0.9851551}{0.9561402, 0.9424033, 0.9312108, 0.9308796, 0.933746, 0.9427588, 0.9532716, 0.9231664, 0.9725018, 0.9790292, 0.9844566}{0.9570488, 0.9419682, 0.9314431, 0.9289834, 0.9317805, 0.9412062, 0.9519504, 0.9225336, 0.9716289, 0.9782521, 0.9837916}{0.9559987, 0.9410642, 0.9288928, 0.927427, 0.9311463, 0.94053, 0.9507842, 0.9217477, 0.9704886, 0.9774667, 0.9831816}{0.9557386, 0.940776, 0.927314, 0.9255761, 0.9297523, 0.9396791, 0.9493861, 0.9220549, 0.9695739, 0.9767041, 0.9826072}{0.9567354, 0.9395551, 0.9271662, 0.9245625, 0.9288299, 0.9379127, 0.9474806, 0.9204072, 0.9685568, 0.9757869, 0.981925}{0.9577858, 0.9376476, 0.9248342, 0.9232955, 0.9284947, 0.9366803, 0.9470103, 0.9197586, 0.9676762, 0.974776, 0.9809341}{0.9556589, 0.9385003, 0.9232787, 0.9221356, 0.9269441, 0.9350936, 0.9459012, 0.9202058, 0.9669911, 0.9743832, 0.9806167}{0.9549707, 0.937037, 0.9232841, 0.9212187, 0.9255539, 0.9335915, 0.9439593, 0.9172482, 0.9657762, 0.9732628, 0.9797141}{0.9508334, 0.9367814, 0.9213539, 0.9208155, 0.9241516, 0.9322623, 0.9429546, 0.9174984, 0.9648575, 0.972517, 0.9789002}{0.9486547, 0.9338305, 0.9211816, 0.9184382, 0.9229874, 0.9321257, 0.9430327, 0.9155468, 0.9644386, 0.9719238, 0.9782749}{0.9472794, 0.9348011, 0.9201636, 0.9184815, 0.9220499, 0.9309625, 0.9411311, 0.9052294, 0.9634534, 0.9709777, 0.9777253}{0.9478831, 0.9372684, 0.9184122, 0.9169179, 0.9211411, 0.9302145, 0.9405305, 0.9105485, 0.9626741, 0.9704073, 0.9773739}{0.9499345, 0.9336282, 0.9173639, 0.9149051, 0.9209425, 0.9298515, 0.9401369, 0.9110077, 0.9621337, 0.9700096, 0.977017}{0.9497879, 0.9334277, 0.9190789, 0.915037, 0.9198936, 0.927344, 0.9387737, 0.9135771, 0.9605765, 0.9683385, 0.9756508}{0.9463748, 0.9313291, 0.9183273, 0.9129686, 0.9186691, 0.9276173, 0.9391896, 0.9036109, 0.9603829, 0.9678176, 0.9750362}{0.9479624, 0.9303924, 0.9179103, 0.9138733, 0.9197557, 0.9273337, 0.9383763, 0.908708, 0.9597741, 0.9671159, 0.9748985}{0.9507689, 0.9316937, 0.9181941, 0.9151826, 0.918986, 0.9266258, 0.9372658, 0.9112388, 0.9592264, 0.9669088, 0.9747483}{0.9493206, 0.9321452, 0.9194114, 0.9148486, 0.9184624, 0.9261247, 0.9372538, 0.9078886, 0.9590255, 0.9666741, 0.9741059}{0.9444401, 0.9287014, 0.9166036, 0.914714, 0.9186511, 0.9251117, 0.9362423, 0.9060716, 0.9585009, 0.9660736, 0.9740841}{0.9419169, 0.9293465, 0.9155779, 0.914875, 0.9186447, 0.9247285, 0.9360808, 0.8994049, 0.9581142, 0.9658063, 0.9735593}{0.9444433, 0.9289819, 0.9159095, 0.9146468, 0.9174322, 0.9246967, 0.9363762, 0.9013411, 0.9575755, 0.9652189, 0.973038}{0.9502015, 0.9285688, 0.9159202, 0.9140289, 0.918706, 0.9247879, 0.9364654, 0.9058411, 0.9569905, 0.9649009, 0.9727421}{0.9496284, 0.9306449, 0.9142654, 0.9135932, 0.9173369, 0.9246591, 0.9367487, 0.9055193, 0.9572227, 0.9653463, 0.9728612}{0.9473885, 0.9303466, 0.915131, 0.9126607, 0.9187202, 0.9249504, 0.9358342, 0.9046676, 0.9569043, 0.9650067, 0.9724233}{0.9471748, 0.9294677, 0.9165779, 0.9133378, 0.9185869, 0.9252768, 0.9368851, 0.9039816, 0.9571854, 0.9651143, 0.9720855}{0.9471946, 0.9286136, 0.9161992, 0.9136572, 0.9192597, 0.9253356, 0.9369065, 0.905933, 0.9572982, 0.9645977, 0.971763}{0.9453373, 0.927041, 0.9146366, 0.9144944, 0.9199323, 0.9250156, 0.9356335, 0.9090679, 0.9568674, 0.964059, 0.9713569}{0.9420546, 0.927651, 0.9145908, 0.9140257, 0.919154, 0.9262002, 0.9355725, 0.9097974, 0.9574682, 0.9637696, 0.971223}{0.9443194, 0.927856, 0.9149061, 0.9149628, 0.918679, 0.9258956, 0.9368104, 0.9105123, 0.9577357, 0.9639568, 0.9710556}{0.9456869, 0.9276078, 0.9135551, 0.9139741, 0.918915, 0.9256757, 0.9371588, 0.9081061, 0.9578134, 0.9641512, 0.9712493}{0.9454156, 0.9277846, 0.9133378, 0.9135593, 0.9197757, 0.9261285, 0.9364031, 0.9042071, 0.9578241, 0.9643667, 0.971627}{0.9475738, 0.929384, 0.916489, 0.9166731, 0.9197301, 0.927288, 0.9373291, 0.9113301, 0.9579884, 0.9641851, 0.9713939}{0.9516091, 0.9312638, 0.9176771, 0.9181152, 0.9197164, 0.9283121, 0.9362998, 0.9087854, 0.9578033, 0.9639649, 0.9708112}{0.9505581, 0.9318419, 0.9168601, 0.9141663, 0.9217199, 0.9270537, 0.9361898, 0.9117585, 0.9573987, 0.9635233, 0.9704862}{0.9482168, 0.9313315, 0.9157629, 0.9137674, 0.9214341, 0.9261208, 0.9377482, 0.9131065, 0.9576796, 0.9638711, 0.9706542}{0.9484337, 0.9297207, 0.9177807, 0.916361, 0.9214396, 0.9276765, 0.9383354, 0.9187891, 0.9588879, 0.9649242, 0.9713324}{0.9506312, 0.9285905, 0.9178047, 0.9183692, 0.9222208, 0.9292762, 0.9392137, 0.9184441, 0.9586626, 0.9653529, 0.9711778}{0.947038, 0.9290517, 0.9183621, 0.9180853, 0.9235543, 0.9288717, 0.9393212, 0.9135954, 0.9584433, 0.9652427, 0.9711252}{0.9449881, 0.9282397, 0.9185611, 0.9195425, 0.9236725, 0.9297854, 0.9408519, 0.916309, 0.9581486, 0.9654438, 0.9711903}{0.9457191, 0.9271806, 0.9182159, 0.9203114, 0.9245208, 0.9317411, 0.9411297, 0.9168925, 0.9583041, 0.9656685, 0.9711006}{0.9468992, 0.9313336, 0.9198834, 0.9198678, 0.9249559, 0.9320369, 0.9416299, 0.9094083, 0.9590856, 0.9652044, 0.9702878}{0.950285, 0.9317481, 0.9192521, 0.9203126, 0.9258256, 0.9331017, 0.9425534, 0.9123907, 0.9595835, 0.9667789, 0.9713466}{0.9510497, 0.9304829, 0.9196572, 0.9202679, 0.9258582, 0.9335059, 0.9428847, 0.9163901, 0.9595926, 0.9672847, 0.9721615}{0.9513465, 0.9308385, 0.9206724, 0.9204553, 0.9273183, 0.93398, 0.9429485, 0.9182523, 0.9602908, 0.9682025, 0.9729606}{0.9526739, 0.9325726, 0.919085, 0.9218396, 0.9279678, 0.9350118, 0.9438447, 0.9173742, 0.9618521, 0.969014, 0.9738431}{0.9522766, 0.9328599, 0.9212496, 0.9247333, 0.9287124, 0.9357661, 0.9459111, 0.9183325, 0.9616242, 0.9686991, 0.9733874}{0.9572666, 0.9320339, 0.9216406, 0.9272315, 0.9309508, 0.937153, 0.9460217, 0.9152949, 0.9619184, 0.9697697, 0.9736699}{0.9574857, 0.9327605, 0.9222004, 0.9285867, 0.9315931, 0.9386626, 0.9465908, 0.9223341, 0.9628432, 0.9702044, 0.9736174}{0.9548918, 0.9350988, 0.9261399, 0.9288785, 0.9327458, 0.9396298, 0.9472451, 0.9275498, 0.9633052, 0.9700881, 0.9735258}{0.9576965, 0.9353376, 0.9259831, 0.9294515, 0.9340176, 0.9391891, 0.9476201, 0.9201269, 0.9631882, 0.9702708, 0.9744106}{0.9543055, 0.9359226, 0.9266732, 0.9284194, 0.9351136, 0.9391216, 0.9489538, 0.9207806, 0.9647231, 0.9722375, 0.9753934}{0.9508365, 0.9380586, 0.9272912, 0.9273632, 0.9365355, 0.9390632, 0.9497767, 0.9246308, 0.9662343, 0.9738743, 0.9763434}{0.9499821, 0.941159, 0.9265189, 0.9289207, 0.9373389, 0.9400434, 0.950633, 0.9301156, 0.9671262, 0.9745022, 0.9767011}{0.9527301, 0.9423933, 0.9257488, 0.9318802, 0.9382652, 0.9424387, 0.9523846, 0.9236471, 0.9673312, 0.9738204, 0.9762634}{0.9554205, 0.9432422, 0.9252075, 0.9337685, 0.9407162, 0.9447582, 0.9536205, 0.9218949, 0.9673068, 0.9732089, 0.9758326}{0.9566737, 0.9401193, 0.9276609, 0.9357073, 0.9434216, 0.9462885, 0.9550756, 0.9211188, 0.9680461, 0.9740837, 0.9775496}{0.9576406, 0.9391858, 0.9293604, 0.9379154, 0.9450466, 0.9476587, 0.9562842, 0.9204846, 0.9689767, 0.9752068, 0.9795568}{0.9581294, 0.9380263, 0.9302098, 0.9394521, 0.9470072, 0.9486915, 0.9571617, 0.926442, 0.9700554, 0.9765311, 0.9811258}{0.9575027, 0.9389596, 0.9315122, 0.9399841, 0.949177, 0.9489274, 0.9586548, 0.9274249, 0.9716846, 0.9781964, 0.9817819}{0.9568933, 0.9406414, 0.9335716, 0.9409557, 0.9477922, 0.9491567, 0.9599628, 0.9294556, 0.9731844, 0.9792226, 0.9824241}{0.9599127, 0.9433659, 0.9374604, 0.9431253, 0.9475032, 0.9511726, 0.9612169, 0.9308592, 0.9739893, 0.9801535, 0.9832619}{0.9643178, 0.9431744, 0.9376761, 0.9451546, 0.9483445, 0.9538778, 0.9623569, 0.9309547, 0.9745826, 0.9806557, 0.9841472}{0.9681064, 0.9430054, 0.937765, 0.9459974, 0.9494571, 0.9562027, 0.9631826, 0.9322192, 0.975195, 0.9809249, 0.9850644}{0.9686769, 0.943387, 0.9376381, 0.9468115, 0.9505193, 0.9564951, 0.9647355, 0.9321229, 0.9757395, 0.9809493, 0.9863263}{0.9692355, 0.9440071, 0.9377633, 0.9475907, 0.9518142, 0.9567762, 0.9663967, 0.9331159, 0.9762165, 0.9814405, 0.9875627}{0.9709858, 0.9450217, 0.9378513, 0.9490791, 0.9527232, 0.9571615, 0.968195, 0.9347782, 0.9772574, 0.9831155, 0.9877373}{0.9735361, 0.945629, 0.9405044, 0.9510897, 0.9540775, 0.9576195, 0.9699934, 0.9255431, 0.9790006, 0.9846471, 0.9871971}{0.9760155, 0.9462115, 0.9430631, 0.9522209, 0.9559476, 0.9580898, 0.9713158, 0.9275036, 0.9806776, 0.9854241, 0.9867228}{0.9775189, 0.9472253, 0.9440727, 0.9516237, 0.9570571, 0.9593424, 0.9730925, 0.935162, 0.9812234, 0.9855069, 0.988186}{0.9790059, 0.9489067, 0.9437509, 0.9510343, 0.957568, 0.9605622, 0.974574, 0.9459074, 0.9817519, 0.9867061, 0.9896156}};$/;" v +WML4_DESdepth baryons2.h /^ static double WML4_DESdepth[100][11]={{0.9983986, 0.9989664, 0.9993156, 0.9995302, 0.9997236, 0.9999125, 1.000115, 1.000233, 1.000335, 1.000429, 1.000524}{0.9969909, 0.9978816, 0.998461, 0.9988056, 0.998998, 0.9992254, 0.9995073, 0.9997395, 0.9999257, 1.000063, 1.000191}{0.9951235, 0.996298, 0.9973827, 0.997861, 0.9982392, 0.9985818, 0.9989552, 0.9992213, 0.9994423, 0.9996345, 0.9998173}{0.9938421, 0.995446, 0.9966955, 0.9972041, 0.997371, 0.9975925, 0.998099, 0.9984605, 0.9987447, 0.9989859, 0.99925}{0.9921554, 0.9942834, 0.9959309, 0.9961785, 0.9962451, 0.9964912, 0.9970228, 0.9974624, 0.997864, 0.9982747, 0.9986644}{0.9905067, 0.9925761, 0.9944337, 0.994841, 0.9949743, 0.99533, 0.9959689, 0.9965227, 0.9970215, 0.9975377, 0.9980303}{0.9898139, 0.9917389, 0.9938864, 0.9940029, 0.9939147, 0.9940881, 0.9947698, 0.9953797, 0.9959866, 0.9966158, 0.9972145}{0.9874131, 0.9893068, 0.9916437, 0.9918626, 0.9920858, 0.9927129, 0.9936432, 0.9944306, 0.9951371, 0.99587, 0.9965933}{0.9854304, 0.9876882, 0.9904584, 0.9905338, 0.9906635, 0.9910822, 0.9922456, 0.993141, 0.9939583, 0.9947852, 0.9956232}{0.9839085, 0.9858928, 0.9891452, 0.9891669, 0.989054, 0.9895461, 0.990957, 0.991899, 0.9927729, 0.9937643, 0.9948354}{0.9832935, 0.9859463, 0.9893889, 0.9887871, 0.9880143, 0.9881586, 0.9894405, 0.9903845, 0.9913375, 0.9924637, 0.9936791}{0.9846329, 0.9860921, 0.9889477, 0.9875714, 0.986508, 0.9867253, 0.9879463, 0.9889038, 0.9899565, 0.9913586, 0.9928125}{0.9843232, 0.9852905, 0.9884654, 0.9865993, 0.9853614, 0.9853035, 0.9864698, 0.9876057, 0.9887756, 0.9903158, 0.9918774}{0.9847978, 0.9856636, 0.9878566, 0.985209, 0.9833006, 0.9833299, 0.9846756, 0.9858946, 0.9872382, 0.988912, 0.9906292}{0.9839745, 0.985, 0.986857, 0.9838827, 0.9815769, 0.9816583, 0.9831938, 0.984632, 0.9860614, 0.9878544, 0.9896704}{0.9837695, 0.984847, 0.9871005, 0.9836899, 0.9808863, 0.9804085, 0.9817306, 0.9830355, 0.9845847, 0.9864029, 0.9882931}{0.9843012, 0.9837687, 0.9862948, 0.9821431, 0.9795198, 0.9797561, 0.9808819, 0.982089, 0.9834323, 0.9852299, 0.9873353}{0.9865355, 0.9844721, 0.9866228, 0.9813018, 0.978193, 0.9780855, 0.9793208, 0.9804623, 0.981948, 0.9838417, 0.986093}{0.9877234, 0.9860759, 0.9873702, 0.9816629, 0.9783131, 0.9775839, 0.9785348, 0.9794836, 0.9807557, 0.9827142, 0.9850608}{0.9881039, 0.9865576, 0.9873894, 0.9810892, 0.9773136, 0.9762543, 0.9773053, 0.9782429, 0.9796876, 0.9817469, 0.9842798}{0.9891804, 0.9872011, 0.9868691, 0.9798924, 0.9759915, 0.9745617, 0.975706, 0.9765553, 0.9778766, 0.9801885, 0.9827719}{0.9899388, 0.9873115, 0.9861452, 0.9789961, 0.9746056, 0.9726646, 0.9736487, 0.9747051, 0.976252, 0.9788771, 0.981531}{0.9904738, 0.9872933, 0.984784, 0.9771258, 0.9726114, 0.9709545, 0.9727542, 0.9737909, 0.9750367, 0.9773882, 0.9800933}{0.9914324, 0.9856948, 0.9848406, 0.9774742, 0.9729141, 0.9713488, 0.9725171, 0.972779, 0.9732965, 0.9758181, 0.9789006}{0.9936982, 0.9854896, 0.9859946, 0.9778191, 0.9725914, 0.9710959, 0.9712621, 0.9708525, 0.9718698, 0.9748406, 0.9779691}{0.9947946, 0.9855746, 0.9870115, 0.9774971, 0.9722926, 0.9702134, 0.9699295, 0.9699037, 0.9710764, 0.9737788, 0.9768527}{0.9977208, 0.9872383, 0.9872599, 0.9767143, 0.9715675, 0.9694043, 0.9695314, 0.9693459, 0.9700647, 0.9727514, 0.9758467}{0.997013, 0.9873145, 0.986514, 0.9769461, 0.9704307, 0.9680109, 0.9681842, 0.9681161, 0.969077, 0.9718811, 0.9750234}{0.9966228, 0.9870838, 0.9844498, 0.9773596, 0.9714805, 0.9683842, 0.9678766, 0.9669515, 0.9672704, 0.9700191, 0.9736639}{0.9947252, 0.9851803, 0.9857993, 0.9775143, 0.9700579, 0.9665798, 0.9670263, 0.9663355, 0.9665638, 0.9693399, 0.9728739}{0.9932631, 0.9871046, 0.9859975, 0.976386, 0.9702111, 0.9668365, 0.9661118, 0.9645408, 0.9646251, 0.9681441, 0.9719571}{0.994671, 0.9867007, 0.9872252, 0.9783268, 0.971233, 0.9659778, 0.9647627, 0.9635677, 0.9643336, 0.9677281, 0.9713655}{0.9947239, 0.9862021, 0.9868608, 0.9761252, 0.9694974, 0.9655893, 0.9643306, 0.9635337, 0.9643446, 0.9673271, 0.9708781}{0.9949733, 0.9876426, 0.9875029, 0.9760895, 0.9689051, 0.9647323, 0.963494, 0.962958, 0.963973, 0.966998, 0.9699965}{0.9967782, 0.9860801, 0.9882865, 0.9783414, 0.9687822, 0.9644656, 0.9632826, 0.9627917, 0.9637717, 0.9658832, 0.9686939}{0.9994424, 0.9864525, 0.9873777, 0.9764147, 0.9672398, 0.9639487, 0.963559, 0.9630826, 0.9630981, 0.9653368, 0.9689328}{0.9992118, 0.9866825, 0.9883931, 0.9751299, 0.9669662, 0.9634311, 0.9631483, 0.9622876, 0.9623048, 0.9643981, 0.9678829}{0.9992797, 0.9868364, 0.9876374, 0.9761395, 0.9678879, 0.9634027, 0.962685, 0.9614169, 0.9606786, 0.9632698, 0.9666052}{0.9963969, 0.9878704, 0.9878896, 0.975599, 0.9666669, 0.9637586, 0.9627802, 0.9606985, 0.9600067, 0.9625717, 0.9659328}{0.9946392, 0.9886907, 0.9856171, 0.9749157, 0.9691292, 0.9620394, 0.961991, 0.96033, 0.9599257, 0.9637299, 0.9669001}{0.9947089, 0.9894395, 0.9898318, 0.9749772, 0.9676055, 0.9625549, 0.9621919, 0.960082, 0.9601403, 0.9622154, 0.9653036}{0.9960996, 0.9932705, 0.9901502, 0.973865, 0.9670196, 0.9624037, 0.9612294, 0.9594528, 0.9595454, 0.9618744, 0.9646205}{0.9982112, 0.9959942, 0.988517, 0.9741928, 0.9665161, 0.9610511, 0.9604456, 0.9600277, 0.9600989, 0.9625042, 0.965366}{0.9997833, 0.9929329, 0.989851, 0.9775086, 0.9678866, 0.961412, 0.9617436, 0.9598793, 0.9583155, 0.9597905, 0.9636436}{0.9974384, 0.992543, 0.9877878, 0.9762506, 0.9689226, 0.9598685, 0.9595199, 0.9581328, 0.9587366, 0.9601042, 0.9644709}{1.000171, 0.9945216, 0.9887222, 0.9764675, 0.9689248, 0.9612354, 0.9601539, 0.9594724, 0.9588048, 0.9602523, 0.9643992}{1.004265, 0.9945873, 0.9905752, 0.9775395, 0.9701425, 0.9634591, 0.9612419, 0.9591407, 0.9587473, 0.9599663, 0.9638121}{1.004095, 0.9965193, 0.992616, 0.979348, 0.9710007, 0.9635644, 0.9606973, 0.9590975, 0.9588299, 0.9598748, 0.9636333}{0.9986327, 0.9913541, 0.9903923, 0.978434, 0.9681756, 0.9645863, 0.9611698, 0.9596289, 0.9594244, 0.9595072, 0.9630475}{0.996177, 0.994196, 0.9906632, 0.9766148, 0.9693924, 0.9648966, 0.9617544, 0.9601991, 0.9585121, 0.9597247, 0.9631882}{1.000188, 0.9962912, 0.991277, 0.9778189, 0.9701213, 0.9647644, 0.9619428, 0.9592871, 0.9600304, 0.9600001, 0.9639181}{1.008464, 0.9955666, 0.9929804, 0.9782539, 0.9701631, 0.9647249, 0.9616636, 0.9606577, 0.9607494, 0.9603246, 0.9647448}{1.009028, 0.9961992, 0.9949036, 0.9768919, 0.9690606, 0.9660173, 0.9606571, 0.9597666, 0.9602915, 0.9602742, 0.9643467}{1.006501, 0.9961563, 0.9963688, 0.9781769, 0.9717794, 0.9646804, 0.9617992, 0.9613202, 0.9601634, 0.9607897, 0.9640466}{1.007846, 0.9986295, 0.9968965, 0.9819135, 0.9718363, 0.964814, 0.9634945, 0.9619275, 0.9602781, 0.9611968, 0.9654135}{1.009587, 0.996492, 0.9971639, 0.9818393, 0.9718274, 0.9659084, 0.964896, 0.9634331, 0.9606312, 0.961871, 0.9662631}{1.007779, 0.9952463, 0.9953611, 0.9806839, 0.9715911, 0.9669605, 0.968099, 0.9641122, 0.9608586, 0.9616062, 0.9647454}{1.004874, 0.9992861, 0.9950964, 0.9804874, 0.972467, 0.9671765, 0.9664414, 0.9636624, 0.9623854, 0.9633097, 0.9658546}{1.008263, 0.9968918, 0.9974396, 0.9816271, 0.9722506, 0.9686122, 0.9660945, 0.9636758, 0.9637495, 0.9634619, 0.9673074}{1.009949, 0.9954779, 0.9985309, 0.9803317, 0.9723816, 0.9688909, 0.9652569, 0.9641596, 0.96427, 0.9638931, 0.967417}{1.0096, 0.9959438, 0.9986108, 0.9800743, 0.9731664, 0.9687921, 0.9662088, 0.9654712, 0.9645419, 0.9641586, 0.9667937}{1.013731, 1.001141, 1.000264, 0.9830344, 0.9778709, 0.972429, 0.9686769, 0.9660567, 0.9648586, 0.9657487, 0.9683113}{1.019104, 1.004, 1.003242, 0.9852063, 0.979559, 0.9748082, 0.9685622, 0.9661239, 0.9674026, 0.9665168, 0.967463}{1.018382, 1.002796, 1.003915, 0.9861481, 0.9785615, 0.9720784, 0.9669327, 0.9678023, 0.9668726, 0.9653117, 0.967108}{1.015763, 1.001138, 1.003446, 0.985532, 0.9772619, 0.9700269, 0.9691292, 0.9679181, 0.9662641, 0.965613, 0.9676872}{1.015827, 1.001717, 1.002461, 0.9867215, 0.9790639, 0.973325, 0.9707091, 0.9685904, 0.9674036, 0.9676107, 0.9692985}{1.020854, 1.004455, 1.00151, 0.9891268, 0.9796601, 0.9757263, 0.9723708, 0.9693687, 0.9677591, 0.9688333, 0.9710914}{1.017125, 1.006491, 1.002465, 0.9900221, 0.981653, 0.9771902, 0.9738132, 0.9711282, 0.9707643, 0.9684426, 0.9715497}{1.014863, 1.002083, 1.002106, 0.9904973, 0.9817381, 0.9787801, 0.9747164, 0.9716209, 0.9706414, 0.9698795, 0.9723612}{1.016181, 1.000676, 1.003029, 0.9904004, 0.982276, 0.9801509, 0.9735447, 0.9728874, 0.9717394, 0.9717409, 0.973656}{1.018655, 1.002384, 1.008482, 0.9923046, 0.9844349, 0.9797292, 0.9769432, 0.9736587, 0.9715291, 0.9722036, 0.9746421}{1.022332, 1.006642, 1.006291, 0.9923232, 0.9835687, 0.9798394, 0.9778035, 0.9745319, 0.972484, 0.974316, 0.9758413}{1.022183, 1.007374, 1.004609, 0.9913631, 0.986122, 0.9795638, 0.9778707, 0.9749117, 0.9743488, 0.9744456, 0.9762732}{1.022924, 1.006957, 1.004924, 0.9925899, 0.9863593, 0.979678, 0.9784788, 0.9772295, 0.9742693, 0.974745, 0.9763693}{1.02726, 1.008387, 1.007218, 0.9914631, 0.9852468, 0.9809967, 0.9815857, 0.9774554, 0.974796, 0.9755493, 0.9767516}{1.027223, 1.006644, 1.009664, 0.9925711, 0.9882488, 0.9849774, 0.9822146, 0.9782525, 0.9762262, 0.9765696, 0.9792238}{1.031308, 1.008128, 1.01024, 0.996251, 0.9885573, 0.988209, 0.9846921, 0.9805265, 0.9775237, 0.9786097, 0.9800696}{1.030314, 1.00746, 1.011706, 0.9970018, 0.9914787, 0.99023, 0.9865187, 0.9816488, 0.9788554, 0.9802845, 0.9810414}{1.026941, 1.008971, 1.012745, 0.9998924, 0.9939918, 0.9915204, 0.9877454, 0.9829351, 0.9804604, 0.9814716, 0.9819602}{1.030255, 1.012461, 1.014295, 1.001751, 0.994867, 0.9932462, 0.9897579, 0.9846764, 0.9812911, 0.9811884, 0.9816907}{1.028132, 1.014841, 1.017393, 1.003981, 0.9962263, 0.9921483, 0.9896025, 0.9861388, 0.9829975, 0.9811008, 0.9833191}{1.025926, 1.01536, 1.020473, 1.005624, 0.9975438, 0.9910203, 0.9907191, 0.9875087, 0.9839239, 0.9810163, 0.9849493}{1.025128, 1.013904, 1.021411, 1.004636, 0.997251, 0.9913929, 0.992657, 0.9882496, 0.9850657, 0.9825651, 0.9864353}{1.026265, 1.012408, 1.021224, 1.001094, 0.9974531, 0.9938544, 0.992802, 0.9890401, 0.9878787, 0.9846432, 0.9877335}{1.027379, 1.01481, 1.020045, 1.000752, 0.9982408, 0.99631, 0.9926248, 0.9912243, 0.9895909, 0.9863036, 0.9889936}{1.029046, 1.018388, 1.020669, 1.004672, 0.9997263, 0.9985818, 0.9950014, 0.99452, 0.9923493, 0.9887094, 0.9906154}{1.030751, 1.016675, 1.02192, 1.008081, 1.001137, 1.000751, 0.9978195, 0.9970704, 0.9949792, 0.9913083, 0.9922524}{1.031485, 1.014423, 1.024261, 1.008653, 1.002966, 1.002751, 1.000471, 0.9999383, 0.9960467, 0.9922626, 0.9937966}{1.029934, 1.013329, 1.025685, 1.008105, 1.005499, 1.004465, 1.003627, 1.002781, 0.9947713, 0.991472, 0.9952164}{1.028424, 1.011195, 1.026631, 1.009366, 1.007737, 1.006156, 1.006943, 1.00173, 0.9939577, 0.9911421, 0.9966195}{1.032363, 1.013328, 1.027655, 1.014141, 1.008326, 1.007825, 1.008964, 1.001721, 0.9936308, 0.993838, 0.9976855}{1.038384, 1.01783, 1.029263, 1.018938, 1.008634, 1.009463, 1.009277, 1.001641, 0.9939363, 0.9971328, 0.9986041}{1.04359, 1.021623, 1.0321, 1.019086, 1.009508, 1.011006, 1.009776, 1.001605, 0.9965405, 0.9986476, 0.9996429}{1.044557, 1.019917, 1.032632, 1.019457, 1.010402, 1.012173, 1.010946, 1.003028, 0.9992201, 0.9989373, 1.001434}{1.045504, 1.018812, 1.033129, 1.020009, 1.011296, 1.013302, 1.011908, 1.005149, 1.000368, 0.9993305, 1.003183}{1.047153, 1.020903, 1.033471, 1.02045, 1.013486, 1.015031, 1.013754, 1.006435, 1.001632, 1.000278, 1.004761}{1.049272, 1.024042, 1.033857, 1.020824, 1.016479, 1.017176, 1.014284, 1.007637, 1.003538, 1.000899, 1.006223}{1.051371, 1.026212, 1.034142, 1.02296, 1.01867, 1.01922, 1.014766, 1.009194, 1.004032, 1.001832, 1.007672}{1.054316, 1.025977, 1.037268, 1.024391, 1.018866, 1.018246, 1.014597, 1.010264, 1.005271, 1.003799, 1.00952}{1.05723, 1.025871, 1.040323, 1.025156, 1.019058, 1.017283, 1.015406, 1.011236, 1.006647, 1.005712, 1.011317}};$/;" v +WML4_LSSTdepth baryons2.h /^ static double WML4_LSSTdepth[100][11]={{0.9983986, 0.9992681, 0.9996594, 0.9999571, 1.000233, 1.000405, 1.000544, 0.987675, 1.000669, 1.000707, 1.00075}{0.9969909, 0.9983232, 0.998879, 0.9993083, 0.9997395, 1.00002, 1.000234, 0.9951152, 1.000458, 1.000527, 1.000588}{0.9951235, 0.9971783, 0.9980691, 0.998661, 0.9992213, 0.9995944, 0.9998635, 0.9847404, 1.000203, 1.000313, 1.000414}{0.9938421, 0.9964473, 0.997249, 0.997758, 0.9984605, 0.9988969, 0.9993748, 0.994885, 0.9999286, 1.000101, 1.00023}{0.9921554, 0.9956365, 0.9961884, 0.9966065, 0.9974624, 0.998195, 0.9987786, 0.9806839, 0.9995568, 0.9997829, 0.9999713}{0.9905067, 0.9941317, 0.9948934, 0.9954758, 0.9965227, 0.9974085, 0.998214, 0.9864251, 0.9991837, 0.9994943, 0.9997185}{0.9898139, 0.9934838, 0.9938406, 0.9943091, 0.9953797, 0.9964683, 0.9974142, 0.981966, 0.998701, 0.9990937, 0.9994105}{0.9874131, 0.9912397, 0.9919402, 0.9929094, 0.9944306, 0.9957065, 0.9968386, 0.9780176, 0.9983334, 0.9988002, 0.9991479}{0.9854304, 0.9900425, 0.9905097, 0.9913979, 0.993141, 0.9945681, 0.9959365, 0.977966, 0.9978026, 0.9983617, 0.9988035}{0.9839085, 0.9887302, 0.9891053, 0.989833, 0.991899, 0.9935396, 0.9951785, 0.9712859, 0.9973173, 0.9979763, 0.9984945}{0.9832935, 0.9888866, 0.9882789, 0.9884564, 0.9903845, 0.9921751, 0.9940926, 0.9781225, 0.996592, 0.9974059, 0.9980371}{0.9846329, 0.988568, 0.9868807, 0.9869736, 0.9889038, 0.991075, 0.9932179, 0.9690637, 0.9960209, 0.9969197, 0.9976414}{0.9843232, 0.9881386, 0.9857745, 0.9855816, 0.9876057, 0.9899843, 0.9924038, 0.9723832, 0.995492, 0.9964869, 0.9972337}{0.9847978, 0.9878061, 0.984035, 0.98361, 0.9858946, 0.9885658, 0.9911493, 0.9672684, 0.994672, 0.9957881, 0.9967054}{0.9839745, 0.9868899, 0.9824786, 0.9820112, 0.984632, 0.9874946, 0.9902476, 0.9658623, 0.994004, 0.9952951, 0.9962569}{0.9837695, 0.9870937, 0.9819182, 0.9808008, 0.9830355, 0.9859887, 0.9888923, 0.9627194, 0.9932686, 0.9946938, 0.9958193}{0.9843012, 0.9863819, 0.9804311, 0.9799715, 0.982089, 0.9848128, 0.9879915, 0.9595173, 0.9924323, 0.993997, 0.9951723}{0.9865355, 0.986939, 0.9794516, 0.9783162, 0.9804623, 0.9833652, 0.9867992, 0.9626941, 0.9918197, 0.9934681, 0.9947817}{0.9877234, 0.9876808, 0.9797337, 0.977775, 0.9794836, 0.9822726, 0.9857481, 0.9563743, 0.990979, 0.9927607, 0.9942174}{0.9881039, 0.9881631, 0.9787722, 0.9764768, 0.9782429, 0.981237, 0.9849683, 0.9584266, 0.9902266, 0.9921401, 0.9936497}{0.9891804, 0.9877695, 0.9776402, 0.9747906, 0.9765553, 0.9797159, 0.9834787, 0.9517585, 0.9893001, 0.9913113, 0.9929993}{0.9899388, 0.9870356, 0.9765496, 0.9727809, 0.9747051, 0.9783872, 0.9822157, 0.9497835, 0.9882074, 0.9903119, 0.9921906}{0.9904738, 0.9858984, 0.9744696, 0.9713162, 0.9737909, 0.9769043, 0.9808622, 0.9507764, 0.9874634, 0.9897202, 0.9917773}{0.9914324, 0.9856372, 0.9747967, 0.9716488, 0.972779, 0.9753856, 0.9796209, 0.9402773, 0.9867296, 0.9889145, 0.9910436}{0.9936982, 0.9866737, 0.9746129, 0.9711295, 0.9708525, 0.9742867, 0.9787875, 0.946916, 0.9855125, 0.9880037, 0.9903677}{0.9947946, 0.987761, 0.9745795, 0.9701138, 0.9699037, 0.973294, 0.9776399, 0.9446171, 0.9849118, 0.9875335, 0.989882}{0.9977208, 0.9889544, 0.9734689, 0.9694224, 0.9693459, 0.97226, 0.9767071, 0.9446648, 0.9840152, 0.986623, 0.9890788}{0.997013, 0.9879481, 0.9732514, 0.9680205, 0.9681161, 0.971305, 0.9758836, 0.9421526, 0.983289, 0.9859592, 0.9884355}{0.9966228, 0.9851883, 0.974224, 0.9682637, 0.9669515, 0.9694617, 0.9745717, 0.940366, 0.9822946, 0.9850679, 0.9877964}{0.9947252, 0.9861628, 0.9733096, 0.9666675, 0.9663355, 0.9687011, 0.9738368, 0.9418295, 0.9811877, 0.9841846, 0.986954}{0.9932631, 0.986641, 0.9729707, 0.9668777, 0.9645408, 0.9674761, 0.972844, 0.9359928, 0.980324, 0.9833443, 0.9863276}{0.994671, 0.9873867, 0.9745261, 0.96573, 0.9635677, 0.9670688, 0.9723315, 0.9358382, 0.9797145, 0.982707, 0.9857308}{0.9947239, 0.9872472, 0.9725187, 0.9652224, 0.9635337, 0.9667498, 0.9717361, 0.9355558, 0.9789467, 0.9820589, 0.9851668}{0.9949733, 0.9882056, 0.9721005, 0.9644802, 0.962958, 0.9664906, 0.9707792, 0.936246, 0.9781834, 0.9813974, 0.9845678}{0.9967782, 0.9883195, 0.9729847, 0.9641658, 0.9627917, 0.9653783, 0.9695972, 0.9351613, 0.9776883, 0.9808091, 0.9840591}{0.9994424, 0.9875353, 0.9711888, 0.9638646, 0.9630826, 0.9647732, 0.9698094, 0.9348167, 0.9768638, 0.979777, 0.9830007}{0.9992118, 0.9888877, 0.9704526, 0.9633614, 0.9622876, 0.9637574, 0.9687612, 0.9353233, 0.976349, 0.9794477, 0.982754}{0.9992797, 0.9884247, 0.9715393, 0.9632439, 0.9614169, 0.962821, 0.967578, 0.9329576, 0.9754139, 0.9783903, 0.9817915}{0.9963969, 0.9888422, 0.9703017, 0.9635588, 0.9606985, 0.961964, 0.9669675, 0.9333661, 0.9745671, 0.9777172, 0.9810996}{0.9946392, 0.9868271, 0.9715337, 0.9617432, 0.96033, 0.9630811, 0.967829, 0.9315756, 0.974246, 0.9772822, 0.9805589}{0.9947089, 0.9894819, 0.9711938, 0.9626703, 0.960082, 0.9617452, 0.9658361, 0.9214298, 0.9736996, 0.9766406, 0.9799842}{0.9960996, 0.9932368, 0.9700829, 0.9621165, 0.9594528, 0.9613162, 0.9658638, 0.9273016, 0.9730566, 0.9760887, 0.9796057}{0.9982112, 0.9903972, 0.9705574, 0.9609271, 0.9600277, 0.9620568, 0.9660564, 0.9276816, 0.9724632, 0.9756787, 0.979245}{0.9997833, 0.9908214, 0.9721558, 0.9614201, 0.9598793, 0.9592666, 0.9644269, 0.9308412, 0.9715784, 0.9741813, 0.977801}{0.9974384, 0.9890444, 0.9723553, 0.9598636, 0.9581328, 0.9594034, 0.9653327, 0.9208707, 0.9716861, 0.9738793, 0.9772094}{1.000171, 0.9887447, 0.972801, 0.9612072, 0.9594724, 0.9594437, 0.9650264, 0.9262148, 0.9709778, 0.973254, 0.9769718}{1.004265, 0.9914263, 0.9739821, 0.9630165, 0.9591407, 0.9592657, 0.9641522, 0.9287025, 0.9704399, 0.9729909, 0.9766255}{1.004095, 0.993153, 0.9751194, 0.9629771, 0.9590975, 0.9591792, 0.9639812, 0.9256325, 0.9705727, 0.9726264, 0.9757665}{0.9986327, 0.9900132, 0.9730054, 0.964057, 0.9596289, 0.9588618, 0.963607, 0.9240969, 0.9703218, 0.9720449, 0.9757018}{0.996177, 0.9914308, 0.9724767, 0.9641764, 0.9601991, 0.9590851, 0.9639952, 0.9173791, 0.9697397, 0.9717309, 0.9751588}{1.000188, 0.9915778, 0.9736978, 0.9642004, 0.9592871, 0.959368, 0.9643968, 0.9194946, 0.9692474, 0.9712036, 0.9746166}{1.008464, 0.9928455, 0.9739184, 0.9640931, 0.9606577, 0.9595075, 0.9645529, 0.9243251, 0.9688475, 0.9709256, 0.9743338}{1.009028, 0.9951333, 0.9725258, 0.9650728, 0.9597666, 0.9595037, 0.9646267, 0.9241889, 0.9691841, 0.9715758, 0.9746436}{1.006501, 0.9962312, 0.9744682, 0.9634985, 0.9613202, 0.9600431, 0.9642569, 0.9233131, 0.9689575, 0.9707809, 0.9735458}{1.007846, 0.9962033, 0.9767818, 0.9645677, 0.9619275, 0.9606131, 0.9654622, 0.9226141, 0.9690195, 0.9705605, 0.9729812}{1.009587, 0.9956521, 0.9762167, 0.9656636, 0.9634331, 0.9609561, 0.9653864, 0.9246349, 0.9692858, 0.9701981, 0.9726759}{1.007779, 0.994308, 0.9755503, 0.9671958, 0.9641122, 0.96101, 0.9639545, 0.9284738, 0.9693484, 0.9697539, 0.9722091}{1.004874, 0.994984, 0.9760235, 0.9673439, 0.9636624, 0.962665, 0.9649441, 0.9291115, 0.9695973, 0.9692581, 0.97196}{1.008263, 0.9955774, 0.9764309, 0.9684387, 0.9636758, 0.9629973, 0.9664084, 0.9295386, 0.9697095, 0.9693311, 0.9717266}{1.009949, 0.9964955, 0.9755665, 0.9680629, 0.9641596, 0.9631001, 0.9666041, 0.9272615, 0.9697589, 0.9694563, 0.9718103}{1.0096, 0.9979054, 0.9759632, 0.9682539, 0.9654712, 0.9636423, 0.9661467, 0.9234798, 0.9698047, 0.9695454, 0.9720027}{1.013731, 0.9996976, 0.9803596, 0.9717412, 0.9660567, 0.9652471, 0.9670577, 0.9306512, 0.9699281, 0.9692974, 0.9715145}{1.019104, 1.002436, 0.9822559, 0.9741451, 0.9661239, 0.9660108, 0.9662045, 0.9284388, 0.9698876, 0.9689723, 0.9707642}{1.018382, 1.003081, 0.9821332, 0.9703349, 0.9678023, 0.9652288, 0.9661974, 0.9313771, 0.9693609, 0.9681567, 0.970242}{1.015763, 1.003212, 0.9812189, 0.9699068, 0.9679181, 0.9651232, 0.9678184, 0.9327652, 0.9696238, 0.9683589, 0.9702291}{1.015827, 1.002335, 0.9828394, 0.9727754, 0.9685904, 0.9673037, 0.9687707, 0.938952, 0.9710864, 0.9695199, 0.9707972}{1.020854, 1.002045, 0.9838684, 0.9752288, 0.9693687, 0.9684539, 0.970199, 0.9386964, 0.9705742, 0.969586, 0.9706434}{1.017125, 1.002117, 0.9852514, 0.9765193, 0.9711282, 0.9680486, 0.9704288, 0.9339646, 0.9705026, 0.9695235, 0.9702131}{1.014863, 1.001146, 0.9856916, 0.9781516, 0.9716209, 0.9691872, 0.971966, 0.9368098, 0.9700877, 0.9698154, 0.9700601}{1.016181, 1.000725, 0.9855246, 0.9787813, 0.9728874, 0.9714065, 0.9723151, 0.937329, 0.9701143, 0.9701782, 0.9699192}{1.018655, 1.006787, 0.9878953, 0.9790376, 0.9736587, 0.9717699, 0.9730835, 0.9297519, 0.9709852, 0.9694766, 0.9689024}{1.022332, 1.006815, 0.9874612, 0.979308, 0.9745319, 0.9737625, 0.9743991, 0.9330689, 0.9711734, 0.9706593, 0.969552}{1.022183, 1.004923, 0.9882978, 0.9791752, 0.9749117, 0.9741759, 0.9748422, 0.9372993, 0.9712631, 0.9711863, 0.970136}{1.022924, 1.004912, 0.9899054, 0.9793776, 0.9772295, 0.9743581, 0.9747907, 0.9390903, 0.9718891, 0.972034, 0.9708796}{1.02726, 1.007651, 0.9879516, 0.9811192, 0.9774554, 0.9753509, 0.9753777, 0.9381374, 0.9731737, 0.9727909, 0.9717976}{1.027223, 1.009732, 0.9902681, 0.9849628, 0.9782525, 0.9762404, 0.9777071, 0.9393682, 0.9731461, 0.9724024, 0.9711185}{1.031308, 1.009708, 0.991835, 0.9876356, 0.9805265, 0.9780184, 0.9784212, 0.9361752, 0.9732354, 0.9735231, 0.9711316}{1.030314, 1.010934, 0.9933165, 0.9894935, 0.9816488, 0.9800099, 0.9792288, 0.943186, 0.9742521, 0.9736424, 0.9706676}{1.026941, 1.013155, 0.997087, 0.9907328, 0.9829351, 0.9813869, 0.9797817, 0.9489379, 0.9747533, 0.9731594, 0.9701356}{1.030255, 1.01436, 0.9976974, 0.9925228, 0.9846764, 0.9810962, 0.9801869, 0.9409341, 0.9746499, 0.9729954, 0.9708032}{1.028132, 1.016012, 0.9996111, 0.9913716, 0.9861388, 0.9810113, 0.9820408, 0.9414586, 0.9763857, 0.974791, 0.9716557}{1.025926, 1.018865, 1.000724, 0.9901928, 0.9875087, 0.9809323, 0.9830811, 0.94512, 0.9781015, 0.9763176, 0.9724818}{1.025128, 1.021783, 0.9996842, 0.9916556, 0.9882496, 0.9817307, 0.9837249, 0.9507583, 0.9787851, 0.9769332, 0.9727561}{1.026265, 1.021913, 0.9994158, 0.994255, 0.9890401, 0.9837246, 0.985202, 0.9444201, 0.9787159, 0.9763819, 0.9722883}{1.027379, 1.021733, 0.9995559, 0.9958385, 0.9912243, 0.9856553, 0.986594, 0.9428792, 0.9785231, 0.9759195, 0.9718273}{1.029046, 1.020133, 1.002711, 0.9978132, 0.99452, 0.9880899, 0.9884274, 0.9417962, 0.9791302, 0.9767883, 0.9731906}{1.030751, 1.021283, 1.003919, 1.000098, 0.9970704, 0.9905716, 0.9897944, 0.9407056, 0.9799051, 0.9776017, 0.9748042}{1.031485, 1.021247, 1.004605, 1.002277, 0.9999383, 0.9921008, 0.9904394, 0.9466117, 0.9809235, 0.9786749, 0.9760901}{1.029934, 1.021617, 1.006157, 1.00409, 1.002781, 0.9913479, 0.9920353, 0.9477132, 0.9827003, 0.9803216, 0.9767037}{1.028424, 1.022954, 1.008346, 1.006111, 1.00173, 0.9906168, 0.9934982, 0.9497803, 0.9842774, 0.9812397, 0.9773041}{1.032363, 1.026914, 1.012538, 1.008143, 1.001721, 0.992678, 0.9946634, 0.9517037, 0.9847646, 0.9820554, 0.9778266}{1.038384, 1.028403, 1.012751, 1.009857, 1.001641, 0.9958134, 0.9957468, 0.9519303, 0.9849812, 0.9823698, 0.9783039}{1.04359, 1.029398, 1.012992, 1.010748, 1.001605, 0.9984989, 0.9970944, 0.9532135, 0.9853579, 0.9823497, 0.9788609}{1.044557, 1.029141, 1.013648, 1.011981, 1.003028, 0.9987787, 0.9990978, 0.9526694, 0.9857686, 0.9817369, 0.9799438}{1.045504, 1.029648, 1.014423, 1.013132, 1.005149, 0.999048, 1.000553, 0.9534185, 0.9860753, 0.9819461, 0.9810048}{1.047153, 1.031383, 1.015156, 1.0148, 1.006435, 0.9995112, 1.001989, 0.9552283, 0.9867247, 0.9836389, 0.9809806}{1.049272, 1.031771, 1.017766, 1.017065, 1.007637, 1.000108, 1.003614, 0.9459683, 0.9881726, 0.9851331, 0.9802301}{1.051371, 1.032133, 1.020266, 1.018293, 1.009194, 1.000727, 1.005089, 0.9481393, 0.9897469, 0.9856812, 0.9795496}{1.054316, 1.033536, 1.02116, 1.01727, 1.010264, 1.002613, 1.007148, 0.9557918, 0.9906798, 0.985769, 0.9806732}{1.05723, 1.0364, 1.021298, 1.016261, 1.011236, 1.004451, 1.008704, 0.966594, 0.9915818, 0.9869429, 0.981771}};$/;" v +W_HOD cosmo2D_fourier.c /^double W_HOD(double a, double nz){$/;" f +W_RSD cosmo2D_fourier.c /^double W_RSD(double l, double a0, double a1, double nz){$/;" f +W_calc_j0 EBfunctions.c /^double W_calc_j0(double ell,int ORDER,double max,double min)$/;" f +W_calc_j2 EBfunctions.c /^double W_calc_j2(double ell,int ORDER,double max,double min)$/;" f +W_cluster cluster.c /^double W_cluster(double a, double nz,double nN){$/;" f +W_cluster clusters_DES.c /^double W_cluster(double a, double nz,double nN){$/;" f +W_gal cosmo2D_fourier.c /^double W_gal(double a, double nz){$/;" f +W_k CMBxLSS_fourier.c /^double W_k(double a, double fK){$/;" f +W_kappa cosmo2D_fourier.c /^double W_kappa(double a, double fK, double nz){$/;" f +W_mag cosmo2D_fourier.c /^double W_mag(double a, double fK, double nz){$/;" f +W_rm covariances_fourier_HOD.c /^double W_rm(double a, double nz){$/;" f +W_source cosmo2D_fourier.c /^double W_source(double a, double nz){$/;" f +Y_minus EBfunctions.c /^void Y_minus(double x, double eta, double *ym)$/;" f +Y_plus EBfunctions.c /^void Y_plus(double x, double eta, double *yp)$/;" f +Ytransform structs.c /^ int Ytransform;$/;" m struct:__anon9 file: +Z1 redshift.c /^int Z1(int Nbin){\/\/ find z1 of tomography combination (z1,z2) constituting shear tomography bin Nbin$/;" f +Z1 redshift_spline.c /^int Z1(int Nbin){\/\/ find z1 of tomography combination (z1,z2) constituting shear tomography bin Nbin$/;" f +Z2 redshift.c /^int Z2(int Nbin){ \/\/ find z2 of tomography combination (z1,z2) constituting shear tomography bin Nbin$/;" f +Z2 redshift_spline.c /^int Z2(int Nbin){ \/\/ find z2 of tomography combination (z1,z2) constituting shear tomography bin Nbin$/;" f +ZC redshift.c /^int ZC(int Nbin){$/;" f +ZC redshift_spline.c /^int ZC(int Nbin){$/;" f +ZL redshift.c /^int ZL(int Nbin){$/;" f +ZL redshift_spline.c /^int ZL(int Nbin){$/;" f +ZS redshift.c /^int ZS(int Nbin){$/;" f +ZS redshift_spline.c /^int ZS(int Nbin){$/;" f +ZSC redshift.c /^int ZSC(int Nbin){$/;" f +ZSC redshift_spline.c /^int ZSC(int Nbin){$/;" f +Z_SPLINE_TYPE redshift_spline.c 2;" d file: +Z_minus EBfunctions.c /^double Z_minus(double vartheta,double *array)$/;" f +Z_plus EBfunctions.c /^double Z_plus(double vartheta, double *array)$/;" f +Zcl1 redshift_spline.c /^int Zcl1(int Nbin){\/\/ find zcl1 of tomography combination (zcl1,zcl2) constituting galaxy clustering tomography bin Nbin$/;" f +Zcl2 redshift_spline.c /^int Zcl2(int Nbin){ \/\/ find zcl2 of tomography combination (zcl1,zcl2) constituting galaxy clustering tomography bin Nbin$/;" f +a inv_cov.py /^a = np.sort(LA.eigvals(cor))$/;" v +a inv_cov.py /^a = np.sort(LA.eigvals(cov))$/;" v +a inv_cov.py /^a = np.sort(LA.eigvals(cov[(nshear+nggl)*ncl:(nshear+nggl+nlens)*ncl,(nshear+nggl)*ncl:(nshear+nggl+nlens)*ncl]))$/;" v +a inv_cov.py /^a = np.sort(LA.eigvals(cov[0:n2pt,0:n2pt]))$/;" v +a inv_cov.py /^a = np.sort(LA.eigvals(cov[0:nshear*ncl,0:nshear*ncl]))$/;" v +a inv_cov.py /^a = np.sort(LA.eigvals(cov[n2pt:n2pt+ncluster,n2pt:n2pt+ncluster]))$/;" v +a inv_cov.py /^a = np.sort(LA.eigvals(cov[n2pt:n2pt+nclusterN_WL,n2pt:n2pt+nclusterN_WL]))$/;" v +a inv_cov.py /^a = np.sort(LA.eigvals(cov[nshear*ncl:(nshear+nggl)*ncl,nshear*ncl:(nshear+nggl)*ncl]))$/;" v +a patch_cov_HOD.py /^a = np.sort(LA.eigvals(cor))$/;" v +a patch_cov_HOD.py /^a = np.sort(LA.eigvals(cov))$/;" v +a patch_cov_HOD.py /^a = np.sort(LA.eigvals(cov[(nshear+nggl)*ncl:(nshear+nggl+nlens)*ncl,(nshear+nggl)*ncl:(nshear+nggl+nlens)*ncl]))$/;" v +a patch_cov_HOD.py /^a = np.sort(LA.eigvals(cov[0:n2pt,0:n2pt]))$/;" v +a patch_cov_HOD.py /^a = np.sort(LA.eigvals(cov[0:nshear*ncl,0:nshear*ncl]))$/;" v +a patch_cov_HOD.py /^a = np.sort(LA.eigvals(cov[n2pt:n2pt+ncluster,n2pt:n2pt+ncluster]))$/;" v +a patch_cov_HOD.py /^a = np.sort(LA.eigvals(cov[n2pt:n2pt+nclusterN_WL,n2pt:n2pt+nclusterN_WL]))$/;" v +a patch_cov_HOD.py /^a = np.sort(LA.eigvals(cov[nshear*ncl:(nshear+nggl)*ncl,nshear*ncl:(nshear+nggl)*ncl]))$/;" v +a patch_cov_Rmin.py /^a = np.sort(LA.eigvals(cor))$/;" v +a patch_cov_Rmin.py /^a = np.sort(LA.eigvals(cov))$/;" v +a patch_cov_Rmin.py /^a = np.sort(LA.eigvals(cov[(nshear+nggl)*ncl:(nshear+nggl+nlens)*ncl,(nshear+nggl)*ncl:(nshear+nggl+nlens)*ncl]))$/;" v +a patch_cov_Rmin.py /^a = np.sort(LA.eigvals(cov[0:n2pt,0:n2pt]))$/;" v +a patch_cov_Rmin.py /^a = np.sort(LA.eigvals(cov[0:nshear*ncl,0:nshear*ncl]))$/;" v +a patch_cov_Rmin.py /^a = np.sort(LA.eigvals(cov[n2pt:n2pt+ncluster,n2pt:n2pt+ncluster]))$/;" v +a patch_cov_Rmin.py /^a = np.sort(LA.eigvals(cov[n2pt:n2pt+nclusterN_WL,n2pt:n2pt+nclusterN_WL]))$/;" v +a patch_cov_Rmin.py /^a = np.sort(LA.eigvals(cov[nshear*ncl:(nshear+nggl)*ncl,nshear*ncl:(nshear+nggl)*ncl]))$/;" v +a_chi cosmo3D.c /^double a_chi(double chi1){$/;" f +a_chi cosmo3D_april7.c /^double a_chi(double chi1){$/;" f +a_max_emu cosmo3D.c 14;" d file: +a_max_emu cosmo3D_april7.c 14;" d file: +a_min basics.c /^ double a_min;$/;" m struct:__anon5 file: +a_min_emu cosmo3D.c 15;" d file: +a_min_emu cosmo3D_april7.c 15;" d file: +aglob structs.c /^ double aglob;$/;" m struct:__anon19 file: +alpha structs.c /^ double alpha;$/;" m struct:input_HOD_params file: +alpha_c covariances_3D.c /^double alpha_c(double k1x,double k1y,double k2x,double k2y) {$/;" f +alpha_s structs.c /^ double alpha_s; \/* running of spectral index of initial power spectrum *\/$/;" m struct:__anon10 file: +alpha_s structs.c /^ double alpha_s; \/* running of spectral index of initial power spectrum *\/$/;" m struct:__anon22 file: +amax_lens redshift.c /^double amax_lens(int i){$/;" f +amax_lens redshift_spline.c /^double amax_lens(int i){$/;" f +amax_source redshift.c /^double amax_source(int i){$/;" f +amax_source redshift_spline.c /^double amax_source(int i){$/;" f +amax_source_IA redshift.c /^double amax_source_IA(int i){$/;" f +amax_source_IA redshift_spline.c /^double amax_source_IA(int i){$/;" f +amin_lens redshift.c /^double amin_lens(int i){$/;" f +amin_lens redshift_spline.c /^double amin_lens(int i){$/;" f +amin_source redshift.c /^double amin_source(int i){$/;" f +amin_source redshift_spline.c /^double amin_source(int i){$/;" f +arcmin basics.c /^ double arcmin;$/;" m struct:__anon3 file: +area structs.c /^ double area;\/* survey_area in deg^2. *\/$/;" m struct:__anon13 file: +area_conversion_factor structs.c /^ double area_conversion_factor; \/*factor from deg^2 to radian^2: 60*60*constants.arcmin*constants.arcmin *\/$/;" m struct:__anon13 file: +arrayFromDoublePointer pt.c /^PyObject * arrayFromDoublePointer(int n, double *x)$/;" f +b inv_cov.py /^b = np.sort(LA.eigvals(cov))$/;" v +b patch_cov_HOD.py /^b = np.sort(LA.eigvals(cov))$/;" v +b patch_cov_Rmin.py /^b = np.sort(LA.eigvals(cov))$/;" v +b structs.c /^ double b[10]; \/* linear galaxy bias paramter in clustering bin i*\/$/;" m struct:__anon15 file: +b1_function structs.c /^ B1_model b1_function;$/;" m struct:__anon15 file: +b1_growth_scaling HOD.c /^double b1_growth_scaling(double z, int ni){$/;" f +b1_per_bin HOD.c /^double b1_per_bin(double z, int ni){$/;" f +b1_per_bin_evolv HOD.c /^double b1_per_bin_evolv(double z, int ni){$/;" f +b1_per_bin_pass_evolv HOD.c /^double b1_per_bin_pass_evolv(double z, int ni){$/;" f +b1_powerlaw HOD.c /^double b1_powerlaw(double z, int ni){$/;" f +b2 structs.c /^ double b2[10]; \/* quadratic bias parameter for redshift bin i *\/$/;" m struct:__anon15 file: +b2_from_b1 HOD.c /^double b2_from_b1(double b1){$/;" f +b3nl_from_b1 HOD.c /^double b3nl_from_b1 (double b1){$/;" f +b_TA cosmo2D_fullsky_TATT.c /^double b_TA(double a, double nz){$/;" f +b_a structs.c /^ double b_a; \/\/assembly bias$/;" m struct:__anon16 file: +b_cluster cluster.c /^double b_cluster (int nz, int nN){ \/\/mean bias of clusters in redshift bin nz, richness bin nN, evaluated at center of redshift bin$/;" f +b_cluster clusters_DES.c /^double b_cluster (int nz, int nN){ \/\/mean bias of clusters in redshift bin nz, richness bin nN, evaluated at center of redshift bin$/;" f +b_g GRS.c /^ double b_g[10];$/;" m struct:__anon8 file: +b_g_fid GRS.c /^ double b_g_fid[10]; \/\/ fiducial input values=center for prior calculation$/;" m struct:__anon8 file: +b_lin covariances_3D.c /^double b_lin (double k1x, double k1y, double k2x, double k2y, double a)$/;" f +b_lin_cov covariances_3D.c /^double b_lin_cov(double k1, double k2, double a){ \/\/linear bispectrum, averaged over angle between k1 and k2$/;" f +b_lin_cov_mu covariances_3D.c /^double b_lin_cov_mu(double k1, double k2, double a){ \/\/linear bispectrum, averaged over angle between k1 and k2$/;" f +b_lin_mu covariances_3D.c /^double b_lin_mu(double k1,double k2, double m, double a){$/;" f +b_mag structs.c /^ double b_mag[10];$/;" m struct:input_nuisance_params file: +b_mag structs.c /^ double b_mag[10];$/;" m struct:input_nuisance_params_mpp file: +b_mag structs.c /^ double b_mag[10]; \/*amplitude of magnification bias, b_mag[i] = 5*s[i]+beta[i] -2 *\/$/;" m struct:__anon15 file: +b_mt structs.c /^ double b_mt[10][2];$/;" m struct:__anon25 file: +b_ngmatched halo.c /^double b_ngmatched(double a, double n_cmv){$/;" f +b_source halo.c /^double b_source(double a){ \/\/lookup table for b1 of source galaxies$/;" f +b_ta_z structs.c /^ double b_ta_z[10]; \/\/b_ta, per bin (like.IA = 6), or use b_ta_z[0] with like.IA = 5$/;" m struct:__anon21 file: +baopara BAO.c /^}baopara;$/;" t typeref:struct:__anon1 file: +bary structs.c /^ double bary[3];$/;" m struct:input_nuisance_params file: +bary structs.c /^barypara bary ={.isPkbary=0};$/;" v +bary_Q1 structs.c /^ double bary_Q1[2];$/;" m struct:__anon22 file: +bary_Q2 structs.c /^ double bary_Q2[2];$/;" m struct:__anon22 file: +bary_Q3 structs.c /^ double bary_Q3[2];$/;" m struct:__anon22 file: +baryons structs.c /^ char baryons[300];$/;" m struct:__anon18 file: +baryons structs.c /^ int baryons;$/;" m struct:__anon9 file: +barypara structs.c /^}barypara;$/;" t typeref:struct:__anon26 file: +beam_SPT CMBxLSS_fourier.c /^double beam_SPT(double l){$/;" f +beta_c covariances_3D.c /^double beta_c(double k1x,double k1y,double k2x,double k2y)$/;" f +beta_ia structs.c /^ double beta_ia;$/;" m struct:input_nuisance_params file: +beta_ia structs.c /^ double beta_ia; \/\/beta IA see Joachimi2012$/;" m struct:__anon21 file: +beta_ia structs.c /^ double beta_ia[2]; \/\/beta IA see Joachimi2012$/;" m struct:__anon22 file: +bgal HOD.c /^double bgal(int nz,double a){$/;" f +bgal_a covariances_fourier.c /^double bgal_a(double a, double nz){$/;" f +bgal_a covariances_fourier_SSC.c /^double bgal_a(double a, double nz){$/;" f +bgal_rm redmagic.c /^double bgal_rm(double a){$/;" f +bgal_z HOD.c /^double bgal_z(double z, int ni){ \/\/bias evolution within redshift bin, used by clustering\/G-G-lensing routines without HOD modeling$/;" f +bi_1h covariances_3D.c /^double bi_1h(double k1,double k2, double k3, double a)$/;" f +bi_3D_reduced_shear_angle_weighted reduced_shear.c /^double bi_3D_reduced_shear_angle_weighted(double k1, double k2, double a){ \/\/linear bispectrum, averaged over angle between k1 and k2$/;" f +bi_eff_mu reduced_shear.c /^double bi_eff_mu(double k1,double k2, double mu, double a){$/;" f +bi_tree_nl reduced_shear.c /^double bi_tree_nl (double k1x, double k1y, double k2x, double k2y, double a)$/;" f +bias structs.c /^ double bias[10];$/;" m struct:input_nuisance_params file: +bias structs.c /^ double bias[10];$/;" m struct:input_nuisance_params_mpp file: +bias structs.c /^ int bias;$/;" m struct:__anon9 file: +bias2 structs.c /^ double bias2[10];$/;" m struct:input_nuisance_params_mpp file: +bias_norm halo.c /^double bias_norm(double a)$/;" f +bias_norm_integrand halo.c /^double bias_norm_integrand (double n,void * params){$/;" f +bias_zphot_clustering redshift.c /^double bias_zphot_clustering (double z, int nz){$/;" f +bias_zphot_clustering redshift_spline.c /^double bias_zphot_clustering (double z, int nz){$/;" f +bias_zphot_clustering structs.c /^ double bias_zphot_clustering[10];$/;" m struct:__anon21 file: +bias_zphot_clustering structs.c /^ double bias_zphot_clustering[10][2];$/;" m struct:__anon22 file: +bias_zphot_magnification structs.c /^ double bias_zphot_magnification[10];$/;" m struct:__anon21 file: +bias_zphot_magnification structs.c /^ double bias_zphot_magnification[10][2];$/;" m struct:__anon22 file: +bias_zphot_shear redshift.c /^double bias_zphot_shear (double z, int nz){$/;" f +bias_zphot_shear redshift_spline.c /^double bias_zphot_shear (double z, int nz){$/;" f +bias_zphot_shear structs.c /^ double bias_zphot_shear[10];$/;" m struct:__anon21 file: +bias_zphot_shear structs.c /^ double bias_zphot_shear[10][2];$/;" m struct:__anon22 file: +bin_cov_NG_cl_cl_tomo covariances_real.c /^double bin_cov_NG_cl_cl_tomo(double l1,double l2, int z1, int z2, int z3, int z4){$/;" f +bin_cov_NG_cl_cl_tomo covariances_real_binned.c /^double bin_cov_NG_cl_cl_tomo(double l1,double l2, int z1, int z2, int z3, int z4){$/;" f +bin_cov_NG_cl_cl_tomo covariances_real_binned_fullsky.c /^double bin_cov_NG_cl_cl_tomo(double l1,double l2, int z1, int z2, int z3, int z4){$/;" f +bin_cov_NG_cl_gl_tomo covariances_real.c /^double bin_cov_NG_cl_gl_tomo(double l1,double l2, int z1, int z2, int z3, int z4){$/;" f +bin_cov_NG_cl_gl_tomo covariances_real_binned.c /^double bin_cov_NG_cl_gl_tomo(double l1,double l2, int z1, int z2, int z3, int z4){$/;" f +bin_cov_NG_cl_gl_tomo covariances_real_binned_fullsky.c /^double bin_cov_NG_cl_gl_tomo(double l1,double l2, int z1, int z2, int z3, int z4){$/;" f +bin_cov_NG_cl_shear_tomo covariances_real.c /^double bin_cov_NG_cl_shear_tomo(double l1,double l2, int z1, int z2, int z3, int z4){$/;" f +bin_cov_NG_cl_shear_tomo covariances_real_binned.c /^double bin_cov_NG_cl_shear_tomo(double l1,double l2, int z1, int z2, int z3, int z4){$/;" f +bin_cov_NG_cl_shear_tomo covariances_real_binned_fullsky.c /^double bin_cov_NG_cl_shear_tomo(double l1,double l2, int z1, int z2, int z3, int z4){$/;" f +bin_cov_NG_gl_gl_tomo covariances_real.c /^double bin_cov_NG_gl_gl_tomo(double l1,double l2, int z1, int z2, int z3, int z4){$/;" f +bin_cov_NG_gl_gl_tomo covariances_real_binned.c /^double bin_cov_NG_gl_gl_tomo(double l1,double l2, int z1, int z2, int z3, int z4){$/;" f +bin_cov_NG_gl_gl_tomo covariances_real_binned_fullsky.c /^double bin_cov_NG_gl_gl_tomo(double l1,double l2, int z1, int z2, int z3, int z4){$/;" f +bin_cov_NG_gl_shear_tomo covariances_real.c /^double bin_cov_NG_gl_shear_tomo(double l1,double l2, int z1, int z2, int z3, int z4){$/;" f +bin_cov_NG_gl_shear_tomo covariances_real_binned.c /^double bin_cov_NG_gl_shear_tomo(double l1,double l2, int z1, int z2, int z3, int z4){$/;" f +bin_cov_NG_gl_shear_tomo covariances_real_binned_fullsky.c /^double bin_cov_NG_gl_shear_tomo(double l1,double l2, int z1, int z2, int z3, int z4){$/;" f +bin_cov_NG_shear_shear_tomo covariances_real.c /^double bin_cov_NG_shear_shear_tomo(double l1,double l2, int z1, int z2, int z3, int z4){$/;" f +bin_cov_NG_shear_shear_tomo covariances_real_binned.c /^double bin_cov_NG_shear_shear_tomo(double l1,double l2, int z1, int z2, int z3, int z4){$/;" f +bin_cov_NG_shear_shear_tomo covariances_real_binned_fullsky.c /^double bin_cov_NG_shear_shear_tomo(double l1,double l2, int z1, int z2, int z3, int z4){$/;" f +bs2 structs.c /^ double bs2[10]; \/* leading order tidal bias for redshift bin i *\/$/;" m struct:__anon15 file: +bs2_from_b1 HOD.c /^double bs2_from_b1 (double b1){$/;" f +c1rhocrit_ia structs.c /^ double c1rhocrit_ia;$/;" m struct:__anon21 file: +cNG covariances_fourier.c /^int cNG = 1;$/;" v +c_g structs.c /^ double c_g;$/;" m struct:input_HOD_params file: +cdgamma basics.c /^void cdgamma(fftw_complex x, fftw_complex *res)$/;" f +cg structs.c /^ double cg; \/\/galaxy concentration$/;" m struct:__anon16 file: +cg structs.c /^ double cg[10];$/;" m struct:__anon15 file: +cg_rm structs.c /^ double cg_rm[2];$/;" m struct:__anon23 file: +cgl_Npowerspectra structs.c /^ int cgl_Npowerspectra;\/\/ number of cluster-lensing tomography combinations$/;" m struct:__anon11 file: +check_LF IA.c /^int check_LF(void){ \/\/return 1 if combination of all + red galaxy LF parameters is unphysical, i.e. if f_red > 1 for some z < redshift.shear_zdistrpar_zmax$/;" f +chi cosmo3D.c /^double chi(double a)$/;" f +chi cosmo3D_april7.c /^double chi(double a)$/;" f +clphotoz structs.c /^ int clphotoz;$/;" m struct:__anon9 file: +clusterCC structs.c /^ int clusterCC;$/;" m struct:__anon9 file: +clusterCG structs.c /^ int clusterCG;$/;" m struct:__anon9 file: +clusterMobs structs.c /^ int clusterMobs;$/;" m struct:__anon9 file: +clusterN structs.c /^ int clusterN;$/;" m struct:__anon9 file: +clusterWL structs.c /^ int clusterWL;$/;" m struct:__anon9 file: +cluster_MOR structs.c /^ double cluster_MOR[10];$/;" m struct:__anon21 file: +cluster_Mobs_N_pivot structs.c /^ double cluster_Mobs_N_pivot;$/;" m struct:__anon21 file: +cluster_Mobs_N_pivot structs.c /^ double cluster_Mobs_N_pivot[2];$/;" m struct:__anon22 file: +cluster_Mobs_alpha structs.c /^ double cluster_Mobs_alpha;$/;" m struct:__anon21 file: +cluster_Mobs_alpha structs.c /^ double cluster_Mobs_alpha[2];$/;" m struct:__anon22 file: +cluster_Mobs_beta structs.c /^ double cluster_Mobs_beta;$/;" m struct:__anon21 file: +cluster_Mobs_beta structs.c /^ double cluster_Mobs_beta[2];$/;" m struct:__anon22 file: +cluster_Mobs_lgM0 structs.c /^ double cluster_Mobs_lgM0;$/;" m struct:__anon21 file: +cluster_Mobs_lgM0 structs.c /^ double cluster_Mobs_lgM0[2];$/;" m struct:__anon22 file: +cluster_Mobs_lgN0 structs.c /^ double cluster_Mobs_lgN0;$/;" m struct:__anon21 file: +cluster_Mobs_lgN0 structs.c /^ double cluster_Mobs_lgN0[2];$/;" m struct:__anon22 file: +cluster_Mobs_sigma structs.c /^ double cluster_Mobs_sigma;$/;" m struct:__anon21 file: +cluster_Mobs_sigma structs.c /^ double cluster_Mobs_sigma[2];$/;" m struct:__anon22 file: +cluster_Mobs_sigma0 structs.c /^ double cluster_Mobs_sigma0;$/;" m struct:__anon21 file: +cluster_Mobs_sigma0 structs.c /^ double cluster_Mobs_sigma0[2];$/;" m struct:__anon22 file: +cluster_Mobs_sigma_qm structs.c /^ double cluster_Mobs_sigma_qm;$/;" m struct:__anon21 file: +cluster_Mobs_sigma_qm structs.c /^ double cluster_Mobs_sigma_qm[2];$/;" m struct:__anon22 file: +cluster_Mobs_sigma_qz structs.c /^ double cluster_Mobs_sigma_qz;$/;" m struct:__anon21 file: +cluster_Mobs_sigma_qz structs.c /^ double cluster_Mobs_sigma_qz[2];$/;" m struct:__anon22 file: +cluster_Nbin structs.c /^ int cluster_Nbin; \/\/ number of cluster redshift bins$/;" m struct:__anon11 file: +cluster_c structs.c /^ double cluster_c[4];$/;" m struct:input_nuisance_params file: +cluster_centering_M_pivot structs.c /^ double cluster_centering_M_pivot;$/;" m struct:__anon21 file: +cluster_centering_M_pivot structs.c /^ double cluster_centering_M_pivot[2];$/;" m struct:__anon22 file: +cluster_centering_alpha structs.c /^ double cluster_centering_alpha;$/;" m struct:__anon21 file: +cluster_centering_alpha structs.c /^ double cluster_centering_alpha[2];$/;" m struct:__anon22 file: +cluster_centering_f0 structs.c /^ double cluster_centering_f0;$/;" m struct:__anon21 file: +cluster_centering_f0 structs.c /^ double cluster_centering_f0[2];$/;" m struct:__anon22 file: +cluster_centering_sigma structs.c /^ double cluster_centering_sigma;$/;" m struct:__anon21 file: +cluster_centering_sigma structs.c /^ double cluster_centering_sigma[2];$/;" m struct:__anon22 file: +cluster_cg_Npowerspectra structs.c /^ int cluster_cg_Npowerspectra;\/\/ number of cluster-lensing tomography combinations$/;" m struct:__anon11 file: +cluster_completeness structs.c /^ double cluster_completeness[10];$/;" m struct:__anon21 file: +cluster_completeness structs.c /^ double cluster_completeness[2];$/;" m struct:__anon22 file: +cluster_selection structs.c /^ double cluster_selection[10];$/;" m struct:__anon21 file: +cluster_zmax structs.c /^ double cluster_zmax[10];$/;" m struct:__anon11 file: +cluster_zmin structs.c /^ double cluster_zmin[10];$/;" m struct:__anon11 file: +clustering_Nbin structs.c /^ int clustering_Nbin; \/\/ number of tomography bins$/;" m struct:__anon11 file: +clustering_Npowerspectra structs.c /^ int clustering_Npowerspectra;\/\/ number of tomography power spectra+2+3+...+Nbin$/;" m struct:__anon11 file: +clustering_REDSHIFT_FILE structs.c /^ char clustering_REDSHIFT_FILE[200];$/;" m struct:__anon12 file: +clustering_histogram_zbins structs.c /^ int clustering_histogram_zbins;$/;" m struct:__anon12 file: +clustering_photoz structs.c /^ int clustering_photoz;$/;" m struct:__anon12 file: +clustering_zdistrpar_zmax structs.c /^ double clustering_zdistrpar_zmax;$/;" m struct:__anon12 file: +clustering_zdistrpar_zmin structs.c /^ double clustering_zdistrpar_zmin;$/;" m struct:__anon12 file: +clustering_zmax structs.c /^ double clustering_zmax[10]; $/;" m struct:__anon11 file: +clustering_zmin structs.c /^ double clustering_zmin[10];$/;" m struct:__anon11 file: +clusterpara structs.c /^} clusterpara;$/;" t typeref:struct:__anon17 file: +cmb structs.c /^Cmb cmb;$/;" v +compute_data_vector like_fourier.c /^void compute_data_vector(char *details,double OMM, double S8, double NS, double W0,double WA, double OMB, double H0, double MGSigma, double MGmu, double B1, double B2, double B3, double B4, double B5, double B6, double B7, double B8, double B9, double B10, double SP1, double SP2, double SP3, double SP4, double SP5, double SP6, double SP7, double SP8, double SP9, double SP10, double SPS1, double CP1, double CP2, double CP3, double CP4, double CP5, double CP6, double CP7, double CP8, double CP9, double CP10, double CPS1, double M1, double M2, double M3, double M4, double M5, double M6, double M7, double M8, double M9, double M10, double A_ia, double beta_ia, double eta_ia, double eta_ia_highz, double LF_alpha, double LF_P, double LF_Q, double LF_red_alpha, double LF_red_P, double LF_red_Q, double mass_obs_norm, double mass_obs_slope, double mass_z_slope, double mass_obs_scatter, double c1, double c2, double c3, double c4)$/;" f +compute_data_vector like_fourier_HOD.c /^void compute_data_vector(char *details,double OMM, double S8, double NS, double W0,double WA, double OMB, double H0, double HOD_Mc, double HOD_sigmaM,double HOD_M1,double HOD_M0, double HOD_alpha,double HOD_fc, double SP1, double SP2, double SP3, double SP4, double SP5, double SP6, double SP7, double SP8, double SP9, double SP10, double SPS1, double CP1, double CP2, double CP3, double CP4, double CP5, double CP6, double CP7, double CP8, double CP9, double CP10, double CPS1, double M1, double M2, double M3, double M4, double M5, double M6, double M7, double M8, double M9, double M10, double A_ia, double beta_ia, double eta_ia, double eta_ia_highz, double LF_alpha, double LF_P, double LF_Q, double LF_red_alpha, double LF_red_P, double LF_red_Q, double mass_obs_norm, double mass_obs_slope, double mass_z_slope, double mass_obs_scatter, double c1, double c2, double c3, double c4)$/;" f +con basics.c /^}con;$/;" t typeref:struct:__anon3 file: +conc halo.c /^double conc(double m, double a)$/;" f +constants basics.c /^con constants = {$/;" v +cor inv_cov.py /^cor = np.zeros((ndata,ndata))$/;" v +cor patch_cov_HOD.py /^cor = np.zeros((ndata,ndata))$/;" v +cor patch_cov_Rmin.py /^cor = np.zeros((ndata,ndata))$/;" v +cos basics.c /^struct cos{$/;" s file: +cosmax structs.c /^ double cosmax;$/;" m struct:__anon9 file: +cosmology structs.c /^cosmopara cosmology = {.A_s = 0., .sigma_8=0., .alpha_s =0.0, .M_nu =0., .Omega_nu =0.,.coverH0= 2997.92458, .rho_crit = 7.4775e+21,.MGSigma=0.0,.MGmu=0.0,.theta_s =0.0};$/;" v +cosmopara structs.c /^}cosmopara;$/;" t typeref:struct:__anon10 file: +count_rows init.c /^int count_rows(char* filename,const char delimiter){$/;" f +count_rows init_basic.c /^int count_rows(char* filename,const char delimiter){$/;" f +cov inv_cov.py /^cov = np.zeros((ndata,ndata))$/;" v +cov patch_cov_HOD.py /^cov = cov+covNG$/;" v +cov patch_cov_HOD.py /^cov = np.zeros((ndata,ndata))$/;" v +cov patch_cov_Rmin.py /^cov = np.zeros((ndata,ndata))$/;" v +covNG patch_cov_HOD.py /^covNG = np.zeros((ndata,ndata))$/;" v +cov_G_cgl_cgl covariances_cluster.c /^double cov_G_cgl_cgl(double l, double delta_l,int nzc1,int nN1, int nzs1, int nzc2, int nN2, int nzs2){$/;" f +cov_G_cl_cgl covariances_cluster.c /^double cov_G_cl_cgl (double l, double delta_l,int nzl1,int nzl2, int nzc, int nN,int nzs){$/;" f +cov_G_cl_cgl_HOD covariances_fourier_HOD.c /^double cov_G_cl_cgl_HOD (double l, double delta_l,int nzl1,int nzl2, int nzc, int nN,int nzs){$/;" f +cov_G_cl_cl_real covariances_real.c /^double cov_G_cl_cl_real(double theta1, double theta2, double Dtheta, int z1,int z2, int z3, int z4){$/;" f +cov_G_cl_cl_real_binned covariances_real_binned.c /^double cov_G_cl_cl_real_binned(double thetamin_i, double thetamax_i,double thetamin_j,double thetamax_j, int z1,int z2,int z3,int z4){$/;" f +cov_G_cl_cl_real_nonoise covariances_real.c /^double cov_G_cl_cl_real_nonoise(double theta1, double theta2, double Dtheta, int z1,int z2, int z3, int z4){$/;" f +cov_G_cl_cl_real_rebin covariances_real.c /^double cov_G_cl_cl_real_rebin(double thetamin_i, double thetamax_i,double thetamin_j, double thetamax_j, int z1,int z2, int z3, int z4){$/;" f +cov_G_cl_cl_tomo covariances_fourier.c /^double cov_G_cl_cl_tomo(double l, double delta_l, int z1, int z2, int z3, int z4){$/;" f +cov_G_cl_cl_tomo covariances_fourier_SSC.c /^double cov_G_cl_cl_tomo(double l, double delta_l, int z1, int z2, int z3, int z4){$/;" f +cov_G_cl_cl_tomo_HOD covariances_fourier_HOD.c /^double cov_G_cl_cl_tomo_HOD(double l, double delta_l, int z1, int z2, int z3, int z4){$/;" f +cov_G_cl_gl_real covariances_real.c /^double cov_G_cl_gl_real(double theta1, double theta2, double Dtheta, int z1,int z2, int z3, int z4){$/;" f +cov_G_cl_gl_real_binned covariances_real_binned.c /^double cov_G_cl_gl_real_binned (double theta1_min,double theta1_max, double theta2_min, double theta2_max, int z1,int z2, int z3, int z4){$/;" f +cov_G_cl_gl_real_rebin covariances_real.c /^double cov_G_cl_gl_real_rebin(double thetamin_i, double thetamax_i,double thetamin_j, double thetamax_j, int z1,int z2, int z3, int z4){$/;" f +cov_G_cl_gl_tomo covariances_fourier.c /^double cov_G_cl_gl_tomo(double l, double delta_l, int z1, int z2, int zl, int zs){$/;" f +cov_G_cl_gl_tomo covariances_fourier_SSC.c /^double cov_G_cl_gl_tomo(double l, double delta_l, int z1, int z2, int zl, int zs){$/;" f +cov_G_cl_gl_tomo_HOD covariances_fourier_HOD.c /^double cov_G_cl_gl_tomo_HOD(double l, double delta_l, int z1, int z2, int zl, int zs){$/;" f +cov_G_cl_no_shot_noise_binned covariances_real_binned.c /^double cov_G_cl_no_shot_noise_binned (double theta1_min,double theta1_max, double theta2_min, double theta2_max, int z1,int z2, int z3, int z4){$/;" f +cov_G_cl_shear_real covariances_real.c /^double cov_G_cl_shear_real(double theta1, double theta2, double Dtheta, int z1,int z2, int z3, int z4, int pm){$/;" f +cov_G_cl_shear_real_binned covariances_real_binned.c /^double cov_G_cl_shear_real_binned (double theta1_min,double theta1_max, double theta2_min, double theta2_max, int z1,int z2, int z3, int z4, int pm){$/;" f +cov_G_cl_shear_real_rebin covariances_real.c /^double cov_G_cl_shear_real_rebin(double thetamin_i, double thetamax_i,double thetamin_j, double thetamax_j, int z1,int z2, int z3, int z4, int pm){$/;" f +cov_G_cl_shear_tomo covariances_fourier.c /^double cov_G_cl_shear_tomo(double l, double delta_l, int z1, int z2, int z3, int z4){$/;" f +cov_G_cl_shear_tomo covariances_fourier_SSC.c /^double cov_G_cl_shear_tomo(double l, double delta_l, int z1, int z2, int z3, int z4){$/;" f +cov_G_cl_shear_tomo_HOD covariances_fourier_HOD.c /^double cov_G_cl_shear_tomo_HOD(double l, double delta_l, int z1, int z2, int z3, int z4){$/;" f +cov_G_gg_gk covariances_CMBxLSS_fourier.c /^double cov_G_gg_gk(double l, double delta_l, int n1, int n2, int n3){$/;" f +cov_G_gg_kk covariances_CMBxLSS_fourier.c /^double cov_G_gg_kk(double l, double delta_l, int n1, int n2){$/;" f +cov_G_gg_ks covariances_CMBxLSS_fourier.c /^double cov_G_gg_ks(double l, double delta_l, int n1, int n2, int zs){$/;" f +cov_G_ggl_cgl covariances_cluster.c /^double cov_G_ggl_cgl (double l, double delta_l,int nzl,int nzs1, int nzc, int nN,int nzs2){$/;" f +cov_G_ggl_cgl_HOD covariances_fourier_HOD.c /^double cov_G_ggl_cgl_HOD (double l, double delta_l,int nzl,int nzs1, int nzc, int nN,int nzs2){$/;" f +cov_G_ggl_no_shot_noise covariances_real.c /^double cov_G_ggl_no_shot_noise(double theta1, double theta2, double Dtheta, int z1l,int z1s, int z2l, int z2s){$/;" f +cov_G_gk_gk covariances_CMBxLSS_fourier.c /^double cov_G_gk_gk(double l, double delta_l, int n1, int n3){$/;" f +cov_G_gk_gs covariances_CMBxLSS_fourier.c /^double cov_G_gk_gs(double l, double delta_l, int zl1, int zl2, int zs){$/;" f +cov_G_gk_kk covariances_CMBxLSS_fourier.c /^double cov_G_gk_kk(double l, double delta_l, int zl){$/;" f +cov_G_gk_ks covariances_CMBxLSS_fourier.c /^double cov_G_gk_ks(double l, double delta_l, int zl, int zs){$/;" f +cov_G_gk_ss covariances_CMBxLSS_fourier.c /^double cov_G_gk_ss(double l, double delta_l, int zl, int zs1, int zs2){$/;" f +cov_G_gl_gl_real covariances_real.c /^double cov_G_gl_gl_real(double theta1, double theta2, double Dtheta, int z1l,int z1s, int z2l, int z2s){$/;" f +cov_G_gl_gl_real_binned covariances_real_binned.c /^double cov_G_gl_gl_real_binned(double thetamin_i, double thetamax_i,double thetamin_j,double thetamax_j, int z1,int z2,int z3,int z4){$/;" f +cov_G_gl_gl_real_rebin covariances_real.c /^double cov_G_gl_gl_real_rebin(double thetamin_i, double thetamax_i,double thetamin_j, double thetamax_j, int z1l,int z1s, int z2l, int z2s){$/;" f +cov_G_gl_gl_tomo covariances_fourier.c /^double cov_G_gl_gl_tomo(double l, double delta_l, int z1, int z2, int z3, int z4){$/;" f +cov_G_gl_gl_tomo covariances_fourier_SSC.c /^double cov_G_gl_gl_tomo(double l, double delta_l, int z1, int z2, int z3, int z4){$/;" f +cov_G_gl_gl_tomo_HOD covariances_fourier_HOD.c /^double cov_G_gl_gl_tomo_HOD(double l, double delta_l, int z1, int z2, int z3, int z4){$/;" f +cov_G_gl_no_shot_noise_binned covariances_real_binned.c /^double cov_G_gl_no_shot_noise_binned (double theta1_min,double theta1_max, double theta2_min, double theta2_max, int z1,int z2, int z3, int z4){$/;" f +cov_G_gl_shear_real covariances_real.c /^double cov_G_gl_shear_real(double theta1, double theta2, double Dtheta, int z1l,int z1s, int z3, int z4, int pm){$/;" f +cov_G_gl_shear_real_binned covariances_real_binned.c /^double cov_G_gl_shear_real_binned (double theta1_min,double theta1_max, double theta2_min, double theta2_max, int z1,int z2, int z3, int z4, int pm){$/;" f +cov_G_gl_shear_real_rebin covariances_real.c /^double cov_G_gl_shear_real_rebin(double thetamin_i, double thetamax_i,double thetamin_j, double thetamax_j, int zl,int zs, int z3, int z4, int pm){$/;" f +cov_G_gl_shear_tomo covariances_fourier.c /^double cov_G_gl_shear_tomo(double l, double delta_l, int zl, int zs, int z3, int z4){$/;" f +cov_G_gl_shear_tomo covariances_fourier_SSC.c /^double cov_G_gl_shear_tomo(double l, double delta_l, int zl, int zs, int z3, int z4){$/;" f +cov_G_gl_shear_tomo_HOD covariances_fourier_HOD.c /^double cov_G_gl_shear_tomo_HOD(double l, double delta_l, int zl, int zs, int z3, int z4){$/;" f +cov_G_gs_kk covariances_CMBxLSS_fourier.c /^double cov_G_gs_kk(double l, double delta_l, int zl, int zs){$/;" f +cov_G_gs_ks covariances_CMBxLSS_fourier.c /^double cov_G_gs_ks(double l, double delta_l, int zl, int zs1, int zs2){$/;" f +cov_G_kk_kk covariances_CMBxLSS_fourier.c /^double cov_G_kk_kk(double l, double delta_l){$/;" f +cov_G_kk_ks covariances_CMBxLSS_fourier.c /^double cov_G_kk_ks(double l, double delta_l, int zs){$/;" f +cov_G_kk_ss covariances_CMBxLSS_fourier.c /^double cov_G_kk_ss(double l, double delta_l, int z1, int z2){$/;" f +cov_G_ks_ks covariances_CMBxLSS_fourier.c /^double cov_G_ks_ks(double l, double delta_l, int z1, int z3){$/;" f +cov_G_ks_ss covariances_CMBxLSS_fourier.c /^double cov_G_ks_ss(double l, double delta_l, int z1, int z2, int z3){$/;" f +cov_G_shear_binned covariances_real_binned.c /^double cov_G_shear_binned(double thetamin_i, double thetamax_i,double thetamin_j,double thetamax_j, int z1,int z2,int z3,int z4,int pm1,int pm2){$/;" f +cov_G_shear_cgl covariances_cluster.c /^double cov_G_shear_cgl (double l, double delta_l,int nzs1,int nzs2, int nzc, int nN, int nzs3){$/;" f +cov_G_shear_no_shot_noise covariances_real.c /^double cov_G_shear_no_shot_noise(double theta1, double theta2, double Dtheta, int z1,int z2, int z3, int z4, int pm1, int pm2){$/;" f +cov_G_shear_no_shot_noise_binned covariances_real_binned.c /^double cov_G_shear_no_shot_noise_binned (double theta1_min,double theta1_max, double theta2_min, double theta2_max, int z1,int z2, int z3, int z4, int pm1, int pm2){$/;" f +cov_G_shear_rebin covariances_real.c /^double cov_G_shear_rebin(double thetamin_i, double thetamax_i,double thetamin_j,double thetamax_j, int z1,int z2,int z3,int z4,int pm1,int pm2){ \/\/now without shotnoise!$/;" f +cov_G_shear_shear_real covariances_real.c /^double cov_G_shear_shear_real(double theta1, double theta2, double Dtheta, int z1,int z2, int z3, int z4, int pm1, int pm2){$/;" f +cov_G_shear_shear_tomo covariances_fourier.c /^double cov_G_shear_shear_tomo(double l, double delta_l, int z1, int z2, int z3, int z4){$/;" f +cov_G_shear_shear_tomo covariances_fourier_SSC.c /^double cov_G_shear_shear_tomo(double l, double delta_l, int z1, int z2, int z3, int z4){$/;" f +cov_G_shear_shotnoise covariances_real.c /^double cov_G_shear_shotnoise(double thetamin_i, double thetamax_i,double thetamin_j,double thetamax_j, int z1,int z2,int z3,int z4,int pm1,int pm2){$/;" f +cov_NG_cgl_cgl covariances_cluster.c /^double cov_NG_cgl_cgl(double l1,double l2,int nzc1,int nN1, int nzs1, int nzc2, int nN2, int nzs2){$/;" f +cov_NG_cl_cgl covariances_cluster.c /^double cov_NG_cl_cgl (double l1,double l2, int nzl1,int nzl2, int nzc, int nN,int nzs){$/;" f +cov_NG_cl_cgl_HOD covariances_fourier_HOD.c /^double cov_NG_cl_cgl_HOD (double l1,double l2, int nzl1,int nzl2, int nzc, int nN,int nzs){$/;" f +cov_NG_cl_cl_real covariances_real.c /^double cov_NG_cl_cl_real(double theta1, double theta2, int z1,int z2, int z3, int z4){$/;" f +cov_NG_cl_cl_real_binned covariances_real_binned.c /^double cov_NG_cl_cl_real_binned(double theta1_min, double theta1_max,double theta2_min,double theta2_max, int z1,int z2,int z3,int z4){$/;" f +cov_NG_cl_cl_real_binned_fullsky covariances_real_binned.c /^void cov_NG_cl_cl_real_binned_fullsky(double **cov, int z1,int z2,int z3,int z4){$/;" f +cov_NG_cl_cl_tomo covariances_fourier.c /^double cov_NG_cl_cl_tomo(double l1,double l2, int z1, int z2, int z3, int z4){$/;" f +cov_NG_cl_cl_tomo covariances_fourier_SSC.c /^double cov_NG_cl_cl_tomo(double l1,double l2, int z1, int z2, int z3, int z4){$/;" f +cov_NG_cl_cl_tomo_HOD covariances_fourier_HOD.c /^double cov_NG_cl_cl_tomo_HOD(double l1,double l2, int z1, int z2, int z3, int z4){$/;" f +cov_NG_cl_gl_real covariances_real.c /^double cov_NG_cl_gl_real(double theta1, double theta2, int z1,int z2, int z3, int z4){$/;" f +cov_NG_cl_gl_real_binned covariances_real_binned.c /^double cov_NG_cl_gl_real_binned(double theta1_min, double theta1_max,double theta2_min,double theta2_max, int z1,int z2,int z3,int z4){$/;" f +cov_NG_cl_gl_real_binned_fullsky covariances_real_binned.c /^void cov_NG_cl_gl_real_binned_fullsky(double **cov, int z1,int z2,int z3,int z4){$/;" f +cov_NG_cl_gl_tomo covariances_fourier.c /^double cov_NG_cl_gl_tomo(double l1,double l2, int z1, int z2, int zl, int zs){ \/\/z1,z2 clustering bins; zl,zs g-g lensing bins$/;" f +cov_NG_cl_gl_tomo covariances_fourier_SSC.c /^double cov_NG_cl_gl_tomo(double l1,double l2, int z1, int z2, int zl, int zs){ \/\/z1,z2 clustering bins; zl,zs g-g lensing bins$/;" f +cov_NG_cl_gl_tomo_HOD covariances_fourier_HOD.c /^double cov_NG_cl_gl_tomo_HOD(double l1,double l2, int z1, int z2, int zl, int zs){ \/\/z1,z2 clustering bins; zl,zs g-g lensing bins$/;" f +cov_NG_cl_shear_real covariances_real.c /^double cov_NG_cl_shear_real(double theta1, double theta2, int z1,int z2, int z3, int z4, int pm){$/;" f +cov_NG_cl_shear_real_binned covariances_real_binned.c /^double cov_NG_cl_shear_real_binned(double theta1_min, double theta1_max,double theta2_min,double theta2_max, int z1,int z2,int z3,int z4, int pm){$/;" f +cov_NG_cl_shear_real_binned_fullsky covariances_real_binned.c /^void cov_NG_cl_shear_real_binned_fullsky(double **cov, int z1,int z2,int z3,int z4,int pm){$/;" f +cov_NG_cl_shear_tomo covariances_fourier.c /^double cov_NG_cl_shear_tomo(double l1,double l2, int z1, int z2, int z3, int z4){ \/\/z1,z2 clustering bins; z3,z4 shear bins$/;" f +cov_NG_cl_shear_tomo covariances_fourier_SSC.c /^double cov_NG_cl_shear_tomo(double l1,double l2, int z1, int z2, int z3, int z4){ \/\/z1,z2 clustering bins; z3,z4 shear bins$/;" f +cov_NG_cl_shear_tomo_HOD covariances_fourier_HOD.c /^double cov_NG_cl_shear_tomo_HOD(double l1,double l2, int z1, int z2, int z3, int z4){ \/\/z1,z2 clustering bins; z3,z4 shear bins$/;" f +cov_NG_gg_gk covariances_CMBxLSS_fourier.c /^double cov_NG_gg_gk(double l1, double l2, int n1, int n2, int n3){$/;" f +cov_NG_gg_kk covariances_CMBxLSS_fourier.c /^double cov_NG_gg_kk(double l1,double l2, int n1, int n2){$/;" f +cov_NG_gg_ks covariances_CMBxLSS_fourier.c /^double cov_NG_gg_ks(double l1,double l2, int n1, int n2, int zs){$/;" f +cov_NG_ggl_cgl covariances_cluster.c /^double cov_NG_ggl_cgl (double l1,double l2,int nzl,int nzs1, int nzc, int nN,int nzs2){$/;" f +cov_NG_ggl_cgl_HOD covariances_fourier_HOD.c /^double cov_NG_ggl_cgl_HOD (double l1,double l2,int nzl,int nzs1, int nzc, int nN,int nzs2){$/;" f +cov_NG_gk_gk covariances_CMBxLSS_fourier.c /^double cov_NG_gk_gk(double l1,double l2, int n1, int n2){$/;" f +cov_NG_gk_gs covariances_CMBxLSS_fourier.c /^double cov_NG_gk_gs(double l1,double l2, int zl1, int zl2, int zs){$/;" f +cov_NG_gk_kk covariances_CMBxLSS_fourier.c /^double cov_NG_gk_kk(double l1,double l2, int zl){$/;" f +cov_NG_gk_ks covariances_CMBxLSS_fourier.c /^double cov_NG_gk_ks(double l1,double l2, int zl, int zs){$/;" f +cov_NG_gk_ss covariances_CMBxLSS_fourier.c /^double cov_NG_gk_ss(double l1,double l2, int zl, int zs1, int zs2){$/;" f +cov_NG_gl_gl_real covariances_real.c /^double cov_NG_gl_gl_real(double theta1, double theta2, int z1l,int z1s, int z2l, int z2s){$/;" f +cov_NG_gl_gl_real_binned covariances_real_binned.c /^double cov_NG_gl_gl_real_binned(double theta1_min, double theta1_max,double theta2_min,double theta2_max, int z1,int z2,int z3,int z4){$/;" f +cov_NG_gl_gl_real_binned_fullsky covariances_real_binned.c /^void cov_NG_gl_gl_real_binned_fullsky(double **cov, int z1,int z2,int z3,int z4){$/;" f +cov_NG_gl_gl_tomo covariances_fourier.c /^double cov_NG_gl_gl_tomo(double l1,double l2, int z1l, int z1s, int z2l, int z2s){$/;" f +cov_NG_gl_gl_tomo covariances_fourier_SSC.c /^double cov_NG_gl_gl_tomo(double l1,double l2, int z1l, int z1s, int z2l, int z2s){$/;" f +cov_NG_gl_gl_tomo_HOD covariances_fourier_HOD.c /^double cov_NG_gl_gl_tomo_HOD(double l1,double l2, int z1l, int z1s, int z2l, int z2s){$/;" f +cov_NG_gl_shear_real covariances_real.c /^double cov_NG_gl_shear_real(double theta1, double theta2, int z1l,int z1s, int z3, int z4, int pm){$/;" f +cov_NG_gl_shear_real_binned covariances_real_binned.c /^double cov_NG_gl_shear_real_binned(double theta1_min, double theta1_max,double theta2_min,double theta2_max, int z1,int z2,int z3,int z4, int pm){$/;" f +cov_NG_gl_shear_real_binned_fullsky covariances_real_binned.c /^void cov_NG_gl_shear_real_binned_fullsky(double **cov, int z1,int z2,int z3,int z4,int pm){$/;" f +cov_NG_gl_shear_tomo covariances_fourier.c /^double cov_NG_gl_shear_tomo(double l1,double l2, int zl, int zs, int z3, int z4){ \/\/zl,zs g-g lensing bins; z3,z4 shear bins$/;" f +cov_NG_gl_shear_tomo covariances_fourier_SSC.c /^double cov_NG_gl_shear_tomo(double l1,double l2, int zl, int zs, int z3, int z4){ \/\/zl,zs g-g lensing bins; z3,z4 shear bins$/;" f +cov_NG_gl_shear_tomo_HOD covariances_fourier_HOD.c /^double cov_NG_gl_shear_tomo_HOD(double l1,double l2, int zl, int zs, int z3, int z4){ \/\/zl,zs g-g lensing bins; z3,z4 shear bins$/;" f +cov_NG_gs_kk covariances_CMBxLSS_fourier.c /^double cov_NG_gs_kk(double l1,double l2, int zl, int zs){$/;" f +cov_NG_gs_ks covariances_CMBxLSS_fourier.c /^double cov_NG_gs_ks(double l1,double l2, int zl, int zs1, int zs2){$/;" f +cov_NG_kk_kk covariances_CMBxLSS_fourier.c /^double cov_NG_kk_kk(double l1,double l2){$/;" f +cov_NG_kk_ks covariances_CMBxLSS_fourier.c /^double cov_NG_kk_ks(double l1,double l2, int zs){$/;" f +cov_NG_kk_ss covariances_CMBxLSS_fourier.c /^double cov_NG_kk_ss(double l1,double l2, int z1, int z2){$/;" f +cov_NG_ks_ks covariances_CMBxLSS_fourier.c /^double cov_NG_ks_ks(double l1,double l2, int z1, int z2){$/;" f +cov_NG_ks_ss covariances_CMBxLSS_fourier.c /^double cov_NG_ks_ss(double l1,double l2, int z1, int z2, int z3){$/;" f +cov_NG_shear_cgl covariances_cluster.c /^double cov_NG_shear_cgl (double l1,double l2,int nzs1,int nzs2, int nzc, int nN, int nzs3){$/;" f +cov_NG_shear_rebin covariances_real.c /^double cov_NG_shear_rebin(double thetamin_i, double thetamax_i,double thetamin_j,double thetamax_j, int z1,int z2,int z3,int z4,int pm1,int pm2){$/;" f +cov_NG_shear_shear_real covariances_real.c /^double cov_NG_shear_shear_real(double theta1, double theta2, int z1,int z2, int z3, int z4, int pm1, int pm2){ \/\/pm1 = pm2 = 1 for C++, pm1=pm2 = 0 for C--, pm1 = 1, pm2 = 0 for C+-$/;" f +cov_NG_shear_shear_real_binned covariances_real_binned.c /^double cov_NG_shear_shear_real_binned(double theta1_min, double theta1_max,double theta2_min,double theta2_max, int z1,int z2,int z3,int z4,int pm1,int pm2){$/;" f +cov_NG_shear_shear_real_binned_fullsky covariances_real_binned.c /^void cov_NG_shear_shear_real_binned_fullsky(double **cov, int z1,int z2,int z3,int z4,int pm1,int pm2){$/;" f +cov_NG_shear_shear_tomo covariances_fourier.c /^double cov_NG_shear_shear_tomo(double l1,double l2, int z1, int z2, int z3, int z4){$/;" f +cov_NG_shear_shear_tomo covariances_fourier_SSC.c /^double cov_NG_shear_shear_tomo(double l1,double l2, int z1, int z2, int z3, int z4){$/;" f +cov_N_N covariances_cluster.c /^double cov_N_N(int nzc1,int nN1, int nzc2, int nN2){$/;" f +cov_cgl_N covariances_cluster.c /^double cov_cgl_N(double l,int nzc1,int nN1, int nzs,int nzc2, int nN2){$/;" f +cov_cl_N covariances_cluster.c /^double cov_cl_N(double l,int nl1,int nl2, int nzc, int nN){$/;" f +cov_cl_N_HOD covariances_fourier_HOD.c /^double cov_cl_N_HOD(double l,int nl1,int nl2, int nzc, int nN){$/;" f +cov_cl_cl_real_binned_fullsky covariances_real_binned_fullsky.c /^void cov_cl_cl_real_binned_fullsky(double **cov, double **covNG, int z1,int z2,int z3,int z4, int FLAG_NG, double *theta, double *dtheta){$/;" f +cov_cl_gl_real_binned_fullsky covariances_real_binned_fullsky.c /^void cov_cl_gl_real_binned_fullsky(double **cov, double **covNG, int z1,int z2,int z3,int z4, int FLAG_NG, double *theta, double *dtheta){$/;" f +cov_cl_shear_real_binned_fullsky covariances_real_binned_fullsky.c /^void cov_cl_shear_real_binned_fullsky(double **cov, double **covNG, int z1,int z2,int z3,int z4,int pm, int FLAG_NG, double *theta, double *dtheta){$/;" f +cov_ggl_N covariances_cluster.c /^double cov_ggl_N(double l,int nzl,int nzs, int nzc, int nN){$/;" f +cov_ggl_N_HOD covariances_fourier_HOD.c /^double cov_ggl_N_HOD(double l,int nzl,int nzs, int nzc, int nN){$/;" f +cov_gl_gl_real_binned_fullsky covariances_real_binned_fullsky.c /^void cov_gl_gl_real_binned_fullsky(double **cov, double **covNG, int z1,int z2,int z3,int z4, int FLAG_NG, double *theta, double *dtheta){$/;" f +cov_gl_shear_real_binned_fullsky covariances_real_binned_fullsky.c /^void cov_gl_shear_real_binned_fullsky(double **cov, double **covNG, int z1,int z2,int z3,int z4,int pm, int FLAG_NG, double *theta, double *dtheta){$/;" f +cov_shear_N covariances_cluster.c /^double cov_shear_N(double l,int ns1,int ns2, int nzc, int nN){$/;" f +cov_shear_shear_real_binned_fullsky covariances_real_binned_fullsky.c /^void cov_shear_shear_real_binned_fullsky(double **cov, double **covNG, int z1,int z2,int z3,int z4,int pm1,int pm2, int FLAG_NG, double *theta, double *dtheta){$/;" f +coverH0 structs.c /^ double coverH0; \/\/units for comoving distances - speeds up code$/;" m struct:__anon10 file: +covfile inv_cov.py /^covfile = np.genfromtxt(infile)$/;" v +covfile patch_cov_HOD.py /^covfile = np.genfromtxt(infile)$/;" v +covfile patch_cov_HOD.py /^covfile = np.genfromtxt(infileG)$/;" v +covfile patch_cov_Rmin.py /^covfile = np.genfromtxt(infile)$/;" v +covpar structs.c /^} covpar;$/;" t typeref:struct:__anon24 file: +covparams structs.c /^covpar covparams;$/;" v +create_Tm_COSEBIs_table EBfunctions.c /^void create_Tm_COSEBIs_table(double vt_max,double vt_min,char *filename2,int table_Tm_COSEBIs,int N_ORDER)$/;" f +create_Ztable_lin EBfunctions.c /^void create_Ztable_lin(double vt_max,double vt_min,double thetarad,char *filename,int table_Nring_z)$/;" f +create_Ztable_log EBfunctions.c /^void create_Ztable_log(double vt_max,double vt_min,double thetarad,char *filename,int table_Nring_z)$/;" f +create_double_matrix basics.c /^double **create_double_matrix(long nrl, long nrh, long ncl, long nch)$/;" f +create_double_vector basics.c /^double *create_double_vector(long nl, long nh)$/;" f +cubearg basics.c /^static double cubearg;$/;" v file: +dN200_dchi cluster.c /^double dN200_dchi (double a, int nN){$/;" f +dN200_dchi clusters_DES.c /^double dN200_dchi (double a, int nN){$/;" f +dV_cluster cluster.c /^double dV_cluster(double z, void* params){ \/\/placeholder routine, factor in selection function for actual analaysis$/;" f +dV_cluster clusters_DES.c /^double dV_cluster(double z, void* params){ \/\/placeholder routine, factor in selection function for actual analaysis$/;" f +darg basics.c /^static double darg __attribute__((unused)),maxarg1 __attribute__((unused)), maxarg2 __attribute__((unused));$/;" v file: +data BAO.c /^ double data[10];$/;" m struct:__anon1 file: +data_read init.c /^double data_read(int READ, int ci)$/;" f +data_read init_basic.c /^double data_read(int READ, int ci)$/;" f +datav GRS.c /^ double* datav;$/;" m struct:__anon7 file: +datav structs.c /^ double** datav;$/;" m struct:__anon25 file: +dchi_da cosmo2D_fourier.c /^double dchi_da(double a){$/;" f +delP_SSC covariances_3D.c /^double delP_SSC(double k, double a){$/;" f +delP_SSC_cm covariances_cluster.c /^double delP_SSC_cm(double k, double a, double nz, double nN){$/;" f +delPgg_SSC covariances_fourier_HOD.c /^double delPgg_SSC(double k, double a){$/;" f +delPgm_SSC covariances_fourier_HOD.c /^double delPgm_SSC(double k, double a){$/;" f +delPlin_SSC covariances_3D.c /^double delPlin_SSC(double k, double a){$/;" f +delta_Delta halo.c /^double delta_Delta(double a)$/;" f +delta_c halo.c /^double delta_c(double a) \/*set to 1.686 for consistency with Tinker mass & bias definition *\/$/;" f +determine_emu_cosmo_calib cosmo3D.c /^void determine_emu_cosmo_calib(double *COSMO_emu, int *calibflag)$/;" f +determine_emu_cosmo_calib cosmo3D_april7.c /^void determine_emu_cosmo_calib(double *COSMO_emu, int *calibflag)$/;" f +dist_BAO BAO.c /^double dist_BAO(double z){$/;" f +dlognudlogm halo.c /^double dlognudlogm(double m)$/;" f +do_matrix_mult_invcov external_prior.c /^double do_matrix_mult_invcov(int n_param, double invcov[n_param][n_param], double param_diff[n_param]) $/;" f +error basics.c /^void error(char *s)$/;" f +eta_ia structs.c /^ double eta_ia;$/;" m struct:input_nuisance_params file: +eta_ia structs.c /^ double eta_ia; \/\/eta_other IA see Joachimi2012$/;" m struct:__anon21 file: +eta_ia structs.c /^ double eta_ia[2]; \/\/eta_other IA see Joachimi2012$/;" m struct:__anon22 file: +eta_ia_highz structs.c /^ double eta_ia_highz;$/;" m struct:input_nuisance_params file: +eta_ia_highz structs.c /^ double eta_ia_highz; \/\/uncertainty in high z evolution$/;" m struct:__anon21 file: +eta_ia_highz structs.c /^ double eta_ia_highz[2]; \/\/additional uncertainty at high z$/;" m struct:__anon22 file: +eta_ia_tt structs.c /^ double eta_ia_tt; \/\/same as eta_ia, for TT$/;" m struct:__anon21 file: +example_Cl examples.c /^void example_Cl (){$/;" f +example_Cov examples.c /^void example_Cov(){$/;" f +example_pdelta examples.c /^void example_pdelta(){$/;" f +example_w_HOD examples.c /^void example_w_HOD(){ \/\/examples for angular correlation functions using HOD model$/;" f +example_wtheta examples.c /^void example_wtheta(){ \/\/angular 2PT functions using linear bias + non-linear matter power spectrum$/;" f +ext_data structs.c /^ char ext_data[500];$/;" m struct:__anon9 file: +f inv_cov.py /^f = open(outfile, "w")$/;" v +f patch_cov_HOD.py /^f = open(outfile, "w")$/;" v +f patch_cov_Rmin.py /^f = open(outfile, "w")$/;" v +f patch_cov_Rmin.py /^f = open(outfilebase, "w")$/;" v +fA_blue structs.c /^ double fA_blue; \/\/fractional IA amplitude of blue galaxies compared to red $/;" m struct:__anon21 file: +f_K cosmo3D.c /^double f_K(double chi)$/;" f +f_K cosmo3D_april7.c /^double f_K(double chi)$/;" f +f_NL structs.c /^ double f_NL; $/;" m struct:__anon10 file: +f_NL structs.c /^ double f_NL; $/;" m struct:__anon22 file: +f_a GRS.c /^double f_a(double a){$/;" f +f_c HOD.c /^double f_c(int nz){$/;" f +f_c structs.c /^ double f_c;$/;" m struct:input_HOD_params file: +f_chi_for_Psi_cl cosmo2D_exact_fft.c /^void f_chi_for_Psi_cl(double* chi_ar, int Nchi, double* f_chi_ar, int ni){$/;" f +f_chi_for_Psi_cl cosmo2D_exact_fft_cltomo.c /^void f_chi_for_Psi_cl(double* chi_ar, int Nchi, double* f_chi_ar, int ni){$/;" f +f_chi_for_Psi_cl cosmo2D_exact_fft_optimize.c /^void f_chi_for_Psi_cl(double* chi_ar, int Nchi, double* f_chi_ar, int ni){$/;" f +f_chi_for_Psi_cl_Mag cosmo2D_exact_fft.c /^void f_chi_for_Psi_cl_Mag(double* chi_ar, int Nchi, double* f_chi_Mag_ar, int ni){$/;" f +f_chi_for_Psi_cl_Mag cosmo2D_exact_fft_cltomo.c /^void f_chi_for_Psi_cl_Mag(double* chi_ar, int Nchi, double* f_chi_Mag_ar, int ni){$/;" f +f_chi_for_Psi_cl_Mag cosmo2D_exact_fft_optimize.c /^void f_chi_for_Psi_cl_Mag(double* chi_ar, int Nchi, double* f_chi_Mag_ar, int ni){$/;" f +f_chi_for_Psi_cl_RSD cosmo2D_exact_fft.c /^void f_chi_for_Psi_cl_RSD(double* chi_ar, int Nchi, double* f_chi_RSD_ar, int ni){$/;" f +f_chi_for_Psi_cl_RSD cosmo2D_exact_fft_cltomo.c /^void f_chi_for_Psi_cl_RSD(double* chi_ar, int Nchi, double* f_chi_RSD_ar, int ni){$/;" f +f_chi_for_Psi_cl_RSD cosmo2D_exact_fft_optimize.c /^void f_chi_for_Psi_cl_RSD(double* chi_ar, int Nchi, double* f_chi_RSD_ar, int ni){$/;" f +f_chi_for_Psi_sh cosmo2D_exact_fft_optimize.c /^void f_chi_for_Psi_sh(double* chi_ar, int Nchi, double* f_chi_ar, int ns) {$/;" f +f_chi_for_Psi_sh_IA cosmo2D_exact_fft_optimize.c /^void f_chi_for_Psi_sh_IA(double* chi_ar, int Nchi, double* f_chi_IA_ar, int ns) {$/;" f +f_growth cosmo2D_exact.c /^double f_growth(double z){$/;" f +f_growth cosmo2D_exact_fft.c /^double f_growth(double z){$/;" f +f_growth cosmo2D_exact_fft_cltomo.c /^double f_growth(double z){$/;" f +f_growth cosmo2D_exact_fft_optimize.c /^double f_growth(double z){$/;" f +f_red_LF IA.c /^double f_red_LF(double mag, double a){$/;" f +f_rsd cosmo2D_fourier.c /^double f_rsd (double aa){$/;" f +f_sky GRS.c /^ double f_sky; $/;" m struct:__anon7 file: +f_sky structs.c /^ double f_sky; $/;" m struct:__anon25 file: +f_tinker halo.c /^double f_tinker(double n, double a_in)$/;" f +fc structs.c /^ double fc; \/\/central occupation$/;" m struct:__anon16 file: +fc_rm structs.c /^ double fc_rm[2];$/;" m struct:__anon23 file: +fft_int structs.c /^fft_optimize fft_int;$/;" v +fft_optimize structs.c /^} fft_optimize;$/;" t typeref:struct:__anon27 file: +filename structs.c /^ char filename[200]; \/* output file name prefix *\/$/;" m struct:__anon24 file: +fill_class_parameters cosmo3D.c /^ int fill_class_parameters(struct file_content * fc,int parser_length){$/;" f +fill_class_parameters cosmo3D_april7.c /^ int fill_class_parameters(struct file_content * fc,int parser_length){$/;" f +filter_cov patch_cov_HOD.py /^def filter_cov(cov,mask):$/;" f +filter_cov patch_cov_Rmin.py /^def filter_cov(cov,mask):$/;" f +filter_cov_fourier covariances_real.c /^double filter_cov_fourier(double l1, double l2, double lmax, double lpivot) {$/;" f +filter_cov_fourier covariances_real_binned.c /^double filter_cov_fourier(double l1, double l2, double lmax, double lpivot) {$/;" f +filter_cov_fourier covariances_real_binned_fullsky.c /^double filter_cov_fourier(double l1, double l2, double lmax, double lpivot) {$/;" f +flat_prior structs.c /^flat_priorpara flat_prior;$/;" v +flat_priorpara structs.c /^}flat_priorpara;$/;" t typeref:struct:__anon23 file: +fnu_tinker halo.c /^double fnu_tinker(double n, double a)$/;" f +fprint_parser cosmo3D.c /^void fprint_parser(struct file_content * fc,int parser_length){$/;" f +fraction_Pdelta_baryon_from_sims_DES baryons.c /^double fraction_Pdelta_baryon_from_sims_DES(double k,double z)$/;" f +fraction_Pdelta_baryon_from_spline_DES baryons.c /^double fraction_Pdelta_baryon_from_spline_DES(double k,double z)$/;" f +fred structs.c /^ double fred[10];$/;" m struct:__anon21 file: +free_baryon_spline_interpolation_to_TNG100 baryons.c /^void free_baryon_spline_interpolation_to_TNG100(){$/;" f +free_class_structs cosmo3D.c /^void free_class_structs($/;" f +free_class_structs cosmo3D_april7.c /^void free_class_structs( $/;" f +free_double_matrix basics.c /^void free_double_matrix(double **m, long nrl, long nrh, long ncl, long nch)$/;" f +free_double_vector basics.c /^void free_double_vector(double *v, long nl, long nh)$/;" f +fs_2 covariances_3D.c /^double fs_2(double k1x, double k1y, double k2x, double k2y)$/;" f +fs_2 reduced_shear.c /^double fs_2(double k1x, double k1y, double k2x, double k2y)$/;" f +fs_3 covariances_3D.c /^double fs_3(double k1x, double k1y, double k2x, double k2y, double k3x, double k3y)$/;" f +fsat HOD.c /^double fsat(int nz,double a){$/;" f +fsat_rm redmagic.c /^double fsat_rm(double a){$/;" f +func_for_cov_G_cl covariances_real_binned_fullsky.c /^double func_for_cov_G_cl(double l, int *ar){$/;" f +func_for_cov_G_cl_gl covariances_real_binned_fullsky.c /^double func_for_cov_G_cl_gl(double l, int *ar){$/;" f +func_for_cov_G_cl_shear covariances_real_binned_fullsky.c /^double func_for_cov_G_cl_shear(double l, int *ar){$/;" f +func_for_cov_G_gl covariances_real_binned_fullsky.c /^double func_for_cov_G_gl(double l, int *ar){$/;" f +func_for_cov_G_gl_shear covariances_real_binned_fullsky.c /^double func_for_cov_G_gl_shear(double l, int *ar){$/;" f +func_for_cov_G_shear covariances_real_binned_fullsky.c /^double func_for_cov_G_shear(double l, int *ar){$/;" f +func_for_growfac cosmo3D.c /^int func_for_growfac(double a,const double y[],double f[],void *params)$/;" f +func_for_growfac cosmo3D_april7.c /^int func_for_growfac(double a,const double y[],double f[],void *params)$/;" f +fwhm structs.c /^ double fwhm; \/\/ beam fwhm in rad$/;" m struct:__anon14 file: +g_bg redshift.c /^double g_bg (double a, int nzlens){$/;" f +g_bg redshift_spline.c /^double g_bg (double a, int nzlens){$/;" f +g_cmb redshift.c /^double g_cmb (double a){$/;" f +g_cmb redshift_spline.c /^double g_cmb (double a){$/;" f +g_lens redshift.c /^double g_lens(double a, int zbin) \/\/ for *lens* tomography bin zbin$/;" f +g_lens redshift_spline.c /^double g_lens(double a, int zbin) \/\/ for *lens* tomography bin zbin$/;" f +g_tomo redshift.c /^double g_tomo(double a, int zbin) \/\/ for tomography bin zbin$/;" f +g_tomo redshift_spline.c /^double g_tomo(double a, int zbin) \/\/ for tomography bin zbin$/;" f +galpara structs.c /^}galpara;$/;" t typeref:struct:__anon15 file: +galsample structs.c /^ char galsample[256];$/;" m struct:__anon13 file: +gbias structs.c /^galpara gbias ={.b2 ={0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0},.bs2 ={0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0},.b1_function = &b1_per_bin, .b_mag ={0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0}}; \/\/default: point to old bgal_z routin$/;" v +get_FPT_IA pt_cfastpt.c /^void get_FPT_IA(void){$/;" f +get_FPT_bias pt.c /^void get_FPT_bias(void){$/;" f +get_FPT_bias pt_cfastpt.c /^void get_FPT_bias(void){$/;" f +get_FPT_bias_command_line pt.c /^void get_FPT_bias_command_line(void){$/;" f +get_N_ell like_fourier.c /^int get_N_ell(void){$/;" f +get_N_ggl like_fourier.c /^int get_N_ggl(void){$/;" f +get_N_tomo_clustering like_fourier.c /^int get_N_tomo_clustering(void){$/;" f +get_N_tomo_shear like_fourier.c /^int get_N_tomo_shear(void){$/;" f +get_class_As cosmo3D.c /^ double get_class_As(struct file_content *fc, int position_As,double sigma8, int *status){$/;" f +get_class_As cosmo3D_april7.c /^ double get_class_As(struct file_content *fc, int position_As,double sigma8, int *status){$/;" f +get_class_s8 cosmo3D.c /^double get_class_s8(struct file_content *fc, int *status){$/;" f +get_class_s8 cosmo3D_april7.c /^double get_class_s8(struct file_content *fc, int *status){$/;" f +ggl_Npowerspectra structs.c /^ int ggl_Npowerspectra;\/\/ number of ggl tomography combinations$/;" m struct:__anon11 file: +ggl_efficiency redshift.c /^double ggl_efficiency(int zl, int zs){$/;" f +ggl_efficiency redshift_spline.c /^double ggl_efficiency(int zl, int zs){$/;" f +ggl_overlap_cut structs.c /^ double ggl_overlap_cut;$/;" m struct:__anon13 file: +gk structs.c /^ int gk;$/;" m struct:__anon9 file: +global structs.c /^globalpara global;$/;" v +global_baryon_spline baryons.c /^spline_interpolator global_baryon_spline;$/;" v +globalpara structs.c /^}globalpara;$/;" t typeref:struct:__anon19 file: +grid_values baryons.c /^ double *grid_values;$/;" m struct:__anon2 file: +growfac cosmo3D.c /^double growfac(double a)$/;" f +growfac cosmo3D_april7.c /^double growfac(double a)$/;" f +growfac_from_class cosmo3D.c /^double growfac_from_class(double a){$/;" f +grsbias structs.c /^ double grsbias[7];$/;" m struct:input_nuisance_params_grs file: +grskstar structs.c /^ double grskstar;$/;" m struct:input_nuisance_params_grs file: +grspshot structs.c /^ double grspshot;$/;" m struct:input_nuisance_params_grs file: +grssigmap structs.c /^ double grssigmap[7];$/;" m struct:input_nuisance_params_grs file: +grssigmaz structs.c /^ double grssigmaz;$/;" m struct:input_nuisance_params_grs file: +gs_2 covariances_3D.c /^double gs_2(double k1x, double k1y,double k2x, double k2y)$/;" f +h0 structs.c /^ double h0; \/\/Hubble constant$/;" m struct:__anon10 file: +h0 structs.c /^ double h0;$/;" m struct:input_cosmo_params file: +h0 structs.c /^ double h0;$/;" m struct:input_cosmo_params_mpp file: +h0 structs.c /^ double h0; \/\/Hubble constant$/;" m struct:__anon22 file: +h0_max_emu cosmo3D.c 23;" d file: +h0_max_emu cosmo3D_april7.c 23;" d file: +h0_min_emu cosmo3D.c 24;" d file: +h0_min_emu cosmo3D_april7.c 24;" d file: +hankel_kernel_FT basics.c /^void hankel_kernel_FT(double x, fftw_complex *res, double *arg, int argc)$/;" f +high basics.c /^ double high;$/;" m struct:__anon4 file: +hod structs.c /^ double hod[10][6]; \/*HOD[i] contains HOD parameters of galaxies in clustering bin i, following 5 parameter model of Zehavi et al. 2011 + modification of concentration parameter*\/$/;" m struct:__anon15 file: +hod structs.c /^ double hod[5];$/;" m struct:__anon16 file: +hoverh0 cosmo3D.c /^static inline double hoverh0(double a){$/;" f file: +hoverh0 cosmo3D_april7.c /^static inline double hoverh0(double a){$/;" f file: +infile inv_cov.py /^infile = 'Euclid_Y6_cov_combi_incl_clusters'$/;" v +infile patch_cov_HOD.py /^infile = '..\/cov\/RMIN01_cov_combi_LSST_Ntomo10'$/;" v +infile patch_cov_Rmin.py /^infile = '..\/cov\/RMIN01_cov_combi_LSST_Ntomo10'$/;" v +infileG patch_cov_HOD.py /^infileG = '..\/cov\/cov_G_HOD'$/;" v +init_BAO_BOSS BAO.c /^void init_BAO_BOSS(){$/;" f +init_BAO_DES BAO.c /^void init_BAO_DES(){$/;" f +init_BAO_LSST BAO.c /^void init_BAO_LSST(){$/;" f +init_BAO_WFIRST BAO.c /^void init_BAO_WFIRST(){$/;" f +init_DES examples.c /^void init_DES(){$/;" f +init_HOD_rm init.c /^void init_HOD_rm(){$/;" f +init_HOD_rm init_basic.c /^void init_HOD_rm(){$/;" f +init_IA init.c /^void init_IA(char *model,char *lumfct)$/;" f +init_IA init_basic.c /^void init_IA(char *model,char *lumfct)$/;" f +init_IA_mpp init_mpp.c /^void init_IA_mpp(int N)$/;" f +init_Pdelta init.c /^void init_Pdelta(char *model,double nexp,double A_factor)$/;" f +init_Pdelta init_basic.c /^void init_Pdelta(char *model,double nexp,double A_factor)$/;" f +init_analysis_choices init_LSST_SRD.c /^void init_analysis_choices()$/;" f +init_bary init_baryon.c /^void init_bary(char *scenario){$/;" f +init_baryon_spline_interpolation_to_TNG100 baryons.c /^void init_baryon_spline_interpolation_to_TNG100(){$/;" f +init_baryons init.c /^void init_baryons()$/;" f +init_baryons init_basic.c /^void init_baryons()$/;" f +init_binning_fourier init.c /^void init_binning_fourier(int Ncl, double lmin, double lmax, double lmax_shear, double Rmin_bias, int cluster_rich_Nbin)$/;" f +init_binning_fourier init_basic.c /^void init_binning_fourier(int Ncl, double lmin, double lmax, double lmax_shear, double Rmin_bias, int cluster_rich_Nbin, int Ntomo)$/;" f +init_binning_mpp init_mpp.c /^void init_binning_mpp(int Ntheta,double theta_min_arcmin, double theta_max_arcmin){$/;" f +init_binning_real init.c /^void init_binning_real(int Nt, double min, double max)$/;" f +init_binning_real init_basic.c /^void init_binning_real(int Nt, double min, double max)$/;" f +init_clphotoz_LSST_gold init.c /^void init_clphotoz_LSST_gold()$/;" f +init_clphotoz_LSST_gold init_basic.c /^void init_clphotoz_LSST_gold()$/;" f +init_clphotoz_benchmark init.c /^void init_clphotoz_benchmark()$/;" f +init_clphotoz_benchmark init_basic.c /^void init_clphotoz_benchmark()$/;" f +init_clphotoz_cmass init.c /^void init_clphotoz_cmass()$/;" f +init_clphotoz_cmass init_basic.c /^void init_clphotoz_cmass()$/;" f +init_clphotoz_redmagic init.c /^void init_clphotoz_redmagic()$/;" f +init_clphotoz_redmagic init_basic.c /^void init_clphotoz_redmagic()$/;" f +init_clphotoz_source init.c /^void init_clphotoz_source()$/;" f +init_clphotoz_source init_basic.c /^void init_clphotoz_source()$/;" f +init_clusters init_basic.c /^void init_clusters()$/;" f +init_cmb init.c /^void init_cmb(char * cmbName) {$/;" f +init_cmb init_basic.c /^void init_cmb(char * cmbName) {$/;" f +init_cosmo init.c /^void init_cosmo()$/;" f +init_cosmo init_basic.c /^void init_cosmo()$/;" f +init_cosmo_runmode init.c /^void init_cosmo_runmode(char *runmode)$/;" f +init_cosmo_runmode init_basic.c /^void init_cosmo_runmode(char *runmode)$/;" f +init_data_inv init.c /^void init_data_inv(char *INV_FILE, char *DATA_FILE)$/;" f +init_data_inv init_basic.c /^void init_data_inv(char *INV_FILE, char *DATA_FILE)$/;" f +init_data_real init.c /^void init_data_real(char *COV_FILE, char *MASK_FILE, char *DATA_FILE)$/;" f +init_data_real init_basic.c /^void init_data_real(char *COV_FILE, char *MASK_FILE, char *DATA_FILE)$/;" f +init_galaxies init.c /^void init_galaxies(char *SOURCE_ZFILE, char *LENS_ZFILE, char *lensphotoz, char *sourcephotoz, char *galsample)$/;" f +init_galaxies init_basic.c /^void init_galaxies(char *SOURCE_ZFILE, char *LENS_ZFILE, char *lensphotoz, char *sourcephotoz, char *galsample)$/;" f +init_ggl_tomo init_mpp.c /^void init_ggl_tomo(){$/;" f +init_lens_sample init.c /^void init_lens_sample(char *lensphotoz, char *galsample)$/;" f +init_lens_sample init_LSST_SRD.c /^void init_lens_sample(char *lensphotoz)$/;" f +init_lens_sample init_basic.c /^void init_lens_sample(char *lensphotoz, char *galsample)$/;" f +init_lens_sample_ init.c /^void init_lens_sample_()$/;" f +init_lens_sample_ init_basic.c /^void init_lens_sample_()$/;" f +init_lens_sample_mpp init_mpp.c /^void init_lens_sample_mpp(char *multihisto_file, int Ntomo, double *b1, double *b2, double ggl_cut)$/;" f +init_priors init.c /^void init_priors(char *cosmoPrior1, char *cosmoPrior2, char *cosmoPrior3, char *cosmoPrior4)$/;" f +init_priors init_basic.c /^void init_priors(char *cosmoPrior1, char *cosmoPrior2, char *cosmoPrior3, char *cosmoPrior4)$/;" f +init_probes init.c /^void init_probes(char *probes)$/;" f +init_probes init_basic.c /^void init_probes(char *probes)$/;" f +init_probes_5x2pt init_mpp.c /^void init_probes_5x2pt(char *probes)$/;" f +init_probes_real init.c /^void init_probes_real(char *probes)$/;" f +init_probes_real init_basic.c /^void init_probes_real(char *probes)$/;" f +init_probes_real_mpp init_mpp.c /^void init_probes_real_mpp(char *probes)$/;" f +init_source_sample init.c /^void init_source_sample(char *sourcephotoz)$/;" f +init_source_sample init_LSST_SRD.c /^void init_source_sample(char *sourcephotoz)$/;" f +init_source_sample init_basic.c /^void init_source_sample(char *sourcephotoz)$/;" f +init_source_sample_ init.c /^void init_source_sample_()$/;" f +init_source_sample_ init_basic.c /^void init_source_sample_()$/;" f +init_source_sample_mpp init_mpp.c /^void init_source_sample_mpp(char *multihisto_file, int Ntomo)$/;" f +init_survey init.c /^void init_survey(char *surveyname)$/;" f +init_survey init_basic.c /^void init_survey(char *surveyname)$/;" f +init_survey_mpp init_mpp.c /^void init_survey_mpp(char *surveyname, double area, double sigma_e){$/;" f +init_wlphotoz_stage3 init.c /^void init_wlphotoz_stage3()$/;" f +init_wlphotoz_stage3 init_basic.c /^void init_wlphotoz_stage3()$/;" f +init_wlphotoz_stage4 init.c /^void init_wlphotoz_stage4()$/;" f +init_wlphotoz_stage4 init_basic.c /^void init_wlphotoz_stage4()$/;" f +inner_I0j halo.c /^double inner_I0j (double logm, void *para){$/;" f +inner_I1j halo.c /^double inner_I1j (double logm, void *para){$/;" f +inner_P_bin covariances_3D.c /^double inner_P_bin(double theta, void *params){$/;" f +inner_SSC_gg covariances_fourier_HOD.c /^double inner_SSC_gg (double logm, void *para){$/;" f +inner_SSC_gm covariances_fourier_HOD.c /^double inner_SSC_gm (double logm, void *para){$/;" f +inner_project_tri_1h_cov_shear_shear_tomo covariances_wl.c /^double inner_project_tri_1h_cov_shear_shear_tomo(double a, void *params)$/;" f +inner_project_tri_2h_cov_shear_shear_tomo covariances_wl.c /^double inner_project_tri_2h_cov_shear_shear_tomo(double a,void *params)$/;" f +inner_project_tri_cov_cl_cl_tomo covariances_fourier.c /^double inner_project_tri_cov_cl_cl_tomo(double a,void *params)$/;" f +inner_project_tri_cov_cl_cl_tomo covariances_fourier_SSC.c /^double inner_project_tri_cov_cl_cl_tomo(double a,void *params)$/;" f +inner_project_tri_cov_cl_cl_tomo_HOD covariances_fourier_HOD.c /^double inner_project_tri_cov_cl_cl_tomo_HOD(double a,void *params)$/;" f +inner_project_tri_cov_cl_gl_tomo covariances_fourier.c /^double inner_project_tri_cov_cl_gl_tomo(double a,void *params)$/;" f +inner_project_tri_cov_cl_gl_tomo covariances_fourier_SSC.c /^double inner_project_tri_cov_cl_gl_tomo(double a,void *params)$/;" f +inner_project_tri_cov_cl_gl_tomo_HOD covariances_fourier_HOD.c /^double inner_project_tri_cov_cl_gl_tomo_HOD(double a,void *params)$/;" f +inner_project_tri_cov_cl_shear_tomo covariances_fourier.c /^double inner_project_tri_cov_cl_shear_tomo(double a,void *params)$/;" f +inner_project_tri_cov_cl_shear_tomo covariances_fourier_SSC.c /^double inner_project_tri_cov_cl_shear_tomo(double a,void *params)$/;" f +inner_project_tri_cov_cl_shear_tomo_HOD covariances_fourier_HOD.c /^double inner_project_tri_cov_cl_shear_tomo_HOD(double a,void *params)$/;" f +inner_project_tri_cov_gg_gk covariances_CMBxLSS_fourier.c /^double inner_project_tri_cov_gg_gk(double a,void *params)$/;" f +inner_project_tri_cov_gg_kk covariances_CMBxLSS_fourier.c /^double inner_project_tri_cov_gg_kk(double a,void *params)$/;" f +inner_project_tri_cov_gg_ks covariances_CMBxLSS_fourier.c /^double inner_project_tri_cov_gg_ks(double a,void *params)$/;" f +inner_project_tri_cov_gk_gk covariances_CMBxLSS_fourier.c /^double inner_project_tri_cov_gk_gk(double a,void *params)$/;" f +inner_project_tri_cov_gk_gs covariances_CMBxLSS_fourier.c /^double inner_project_tri_cov_gk_gs(double a, void *params)$/;" f +inner_project_tri_cov_gk_kk covariances_CMBxLSS_fourier.c /^double inner_project_tri_cov_gk_kk(double a, void *params)$/;" f +inner_project_tri_cov_gk_ks covariances_CMBxLSS_fourier.c /^double inner_project_tri_cov_gk_ks(double a, void *params)$/;" f +inner_project_tri_cov_gk_ss covariances_CMBxLSS_fourier.c /^double inner_project_tri_cov_gk_ss(double a, void *params)$/;" f +inner_project_tri_cov_gl_gl_tomo covariances_fourier.c /^double inner_project_tri_cov_gl_gl_tomo(double a,void *params)$/;" f +inner_project_tri_cov_gl_gl_tomo covariances_fourier_SSC.c /^double inner_project_tri_cov_gl_gl_tomo(double a,void *params)$/;" f +inner_project_tri_cov_gl_gl_tomo_HOD covariances_fourier_HOD.c /^double inner_project_tri_cov_gl_gl_tomo_HOD(double a,void *params)$/;" f +inner_project_tri_cov_gl_shear_tomo covariances_fourier.c /^double inner_project_tri_cov_gl_shear_tomo(double a,void *params)$/;" f +inner_project_tri_cov_gl_shear_tomo covariances_fourier_SSC.c /^double inner_project_tri_cov_gl_shear_tomo(double a,void *params)$/;" f +inner_project_tri_cov_gl_shear_tomo_HOD covariances_fourier_HOD.c /^double inner_project_tri_cov_gl_shear_tomo_HOD(double a,void *params)$/;" f +inner_project_tri_cov_gs_kk covariances_CMBxLSS_fourier.c /^double inner_project_tri_cov_gs_kk(double a,void *params)$/;" f +inner_project_tri_cov_gs_ks covariances_CMBxLSS_fourier.c /^double inner_project_tri_cov_gs_ks(double a,void *params)$/;" f +inner_project_tri_cov_kk_kk covariances_CMBxLSS_fourier.c /^double inner_project_tri_cov_kk_kk(double a,void *params)$/;" f +inner_project_tri_cov_kk_ks covariances_CMBxLSS_fourier.c /^double inner_project_tri_cov_kk_ks(double a,void *params)$/;" f +inner_project_tri_cov_kk_ss covariances_CMBxLSS_fourier.c /^double inner_project_tri_cov_kk_ss(double a,void *params)$/;" f +inner_project_tri_cov_ks_ks covariances_CMBxLSS_fourier.c /^double inner_project_tri_cov_ks_ks(double a,void *params)$/;" f +inner_project_tri_cov_ks_ss covariances_CMBxLSS_fourier.c /^double inner_project_tri_cov_ks_ss(double a,void *params)$/;" f +inner_project_tri_cov_shear_shear_tomo covariances_fourier.c /^double inner_project_tri_cov_shear_shear_tomo(double a,void *params)$/;" f +inner_project_tri_cov_shear_shear_tomo covariances_fourier_SSC.c /^double inner_project_tri_cov_shear_shear_tomo(double a,void *params)$/;" f +inner_project_tri_lin_cov_shear_shear_tomo covariances_wl.c /^double inner_project_tri_lin_cov_shear_shear_tomo(double a,void *params)$/;" f +inner_tri_lin_cov covariances_3D.c /^double inner_tri_lin_cov(double theta, void *params){$/;" f +input_HOD_params structs.c /^typedef struct input_HOD_params {$/;" s file: +input_HOD_params structs.c /^} input_HOD_params;$/;" t typeref:struct:input_HOD_params file: +input_cosmo_params structs.c /^typedef struct input_cosmo_params {$/;" s file: +input_cosmo_params structs.c /^} input_cosmo_params;$/;" t typeref:struct:input_cosmo_params file: +input_cosmo_params_mpp structs.c /^typedef struct input_cosmo_params_mpp {$/;" s file: +input_cosmo_params_mpp structs.c /^} input_cosmo_params_mpp;$/;" t typeref:struct:input_cosmo_params_mpp file: +input_nuisance_params structs.c /^typedef struct input_nuisance_params {$/;" s file: +input_nuisance_params structs.c /^} input_nuisance_params;$/;" t typeref:struct:input_nuisance_params file: +input_nuisance_params_grs structs.c /^typedef struct input_nuisance_params_grs {$/;" s file: +input_nuisance_params_grs structs.c /^} input_nuisance_params_grs;$/;" t typeref:struct:input_nuisance_params_grs file: +input_nuisance_params_mpp structs.c /^typedef struct input_nuisance_params_mpp {$/;" s file: +input_nuisance_params_mpp structs.c /^} input_nuisance_params_mpp;$/;" t typeref:struct:input_nuisance_params_mpp file: +insane basics.c /^ double insane;$/;" m struct:__anon4 file: +int2_for_cov_NG_cl_binned covariances_real_binned.c /^double int2_for_cov_NG_cl_binned(double l2,void *params){$/;" f +int2_for_cov_NG_cl_cl covariances_real.c /^double int2_for_cov_NG_cl_cl(double l2,void *params){$/;" f +int2_for_cov_NG_cl_gl covariances_real.c /^double int2_for_cov_NG_cl_gl(double l2,void *params){$/;" f +int2_for_cov_NG_cl_gl_binned covariances_real_binned.c /^double int2_for_cov_NG_cl_gl_binned(double l2,void *params){$/;" f +int2_for_cov_NG_cl_shear covariances_real.c /^double int2_for_cov_NG_cl_shear(double l2,void *params){$/;" f +int2_for_cov_NG_cl_shear_binned covariances_real_binned.c /^double int2_for_cov_NG_cl_shear_binned(double l2,void *params){$/;" f +int2_for_cov_NG_gl_binned covariances_real_binned.c /^double int2_for_cov_NG_gl_binned(double l2,void *params){$/;" f +int2_for_cov_NG_gl_gl covariances_real.c /^double int2_for_cov_NG_gl_gl(double l2,void *params){$/;" f +int2_for_cov_NG_gl_shear covariances_real.c /^double int2_for_cov_NG_gl_shear(double l2,void *params){$/;" f +int2_for_cov_NG_gl_shear_binned covariances_real_binned.c /^double int2_for_cov_NG_gl_shear_binned(double l2,void *params){$/;" f +int2_for_cov_NG_shear covariances_real.c /^double int2_for_cov_NG_shear(double l2,void *params){$/;" f +int2_for_cov_NG_shear_binned covariances_real_binned.c /^double int2_for_cov_NG_shear_binned(double l2,void *params){$/;" f +int2_for_wreal redmagic_real.c /^double int2_for_wreal(double z2,void *params)$/;" f +int_Delta_P_reduced_shear_dk2 reduced_shear.c /^double int_Delta_P_reduced_shear_dk2(double logk2, void *params){$/;" f +int_G11 HOD.c /^double int_G11 (double logm, void *para){$/;" f +int_GM02 HOD.c /^double int_GM02 (double logm, void *para){$/;" f +int_GM02_rm redmagic.c /^double int_GM02_rm (double logm, void *para){$/;" f +int_I04_cmcm covariances_cluster.c /^double int_I04_cmcm (double lgM, void *para){$/;" f +int_I04_mmcm covariances_cluster.c /^double int_I04_mmcm (double lgM, void *para){$/;" f +int_I12_cm covariances_cluster.c /^double int_I12_cm (double lgM, void *para){$/;" f +int_M_Mobs cluster.c /^double int_M_Mobs(double lgM, void* params){$/;" f +int_M_Mobs clusters_DES.c /^double int_M_Mobs(double lgM, void* params){$/;" f +int_P_cm_1h cluster.c /^double int_P_cm_1h(double lgM, void *params){$/;" f +int_P_cm_1h clusters_DES.c /^double int_P_cm_1h(double lgM, void *params){$/;" f +int_P_gg_2h_excl redmagic_real.c /^double int_P_gg_2h_excl(double lgM, void *para){$/;" f +int_b_Mobs cluster.c /^double int_b_Mobs(double lgM, void* params){$/;" f +int_b_Mobs clusters_DES.c /^double int_b_Mobs(double lgM, void* params){$/;" f +int_b_lin covariances_3D.c /^double int_b_lin(double theta, void *params){$/;" f +int_b_lin_mu covariances_3D.c /^double int_b_lin_mu(double m, void *params){$/;" f +int_bgal HOD.c /^double int_bgal (double m, void *params){$/;" f +int_bgal_rm redmagic.c /^double int_bgal_rm (double m, void *params){$/;" f +int_bi_reduced_shear_phi reduced_shear.c /^double int_bi_reduced_shear_phi(double phi, void *params){$/;" f +int_cov_N_N covariances_cluster.c /^double int_cov_N_N(double a, void *params)$/;" f +int_cur cosmo3D.c /^double int_cur(double lnk, void *args) \/\/tak12 A5$/;" f +int_cur cosmo3D_april7.c /^double int_cur(double lnk, void *args) \/\/tak12 A5$/;" f +int_da_n_Mobs cluster.c /^double int_da_n_Mobs(double a, void* params){$/;" f +int_da_n_Mobs clusters_DES.c /^double int_da_n_Mobs(double a, void* params){$/;" f +int_for_C_GI IA.c /^double int_for_C_GI(double a, void *params)$/;" f +int_for_C_GI_JB IA.c /^double int_for_C_GI_JB(double a, void *params)$/;" f +int_for_C_GI_lin IA.c /^double int_for_C_GI_lin(double a, void *params)$/;" f +int_for_C_II IA.c /^double int_for_C_II(double a, void *params)$/;" f +int_for_C_II_JB IA.c /^double int_for_C_II_JB(double a, void *params)$/;" f +int_for_C_II_lin IA.c /^double int_for_C_II_lin(double a, void *params)$/;" f +int_for_C_Mag_nonLimber cosmo2D_exact.c /^double int_for_C_Mag_nonLimber (double lk, void *params){$/;" f +int_for_C_ccl_tomo cluster.c /^double int_for_C_ccl_tomo(double a, void *params){$/;" f +int_for_C_ccl_tomo clusters_DES.c /^double int_for_C_ccl_tomo(double a, void *params){$/;" f +int_for_C_cgl_tomo cluster.c /^double int_for_C_cgl_tomo(double a, void *params)$/;" f +int_for_C_cgl_tomo clusters_DES.c /^double int_for_C_cgl_tomo(double a, void *params)$/;" f +int_for_C_cl_HOD cosmo2D_fourier.c /^double int_for_C_cl_HOD(double a, void *params)$/;" f +int_for_C_cl_HOD_rm_1h redmagic_real.c /^double int_for_C_cl_HOD_rm_1h(double a, void *params)$/;" f +int_for_C_cl_RSD cosmo2D_exact.c /^double int_for_C_cl_RSD (double klog, void *params){$/;" f +int_for_C_cl_g_rm_tomo covariances_fourier_HOD.c /^double int_for_C_cl_g_rm_tomo(double a, void *params){$/;" f +int_for_C_cl_g_tomo cluster.c /^double int_for_C_cl_g_tomo(double a, void *params){$/;" f +int_for_C_cl_g_tomo clusters_DES.c /^double int_for_C_cl_g_tomo(double a, void *params){$/;" f +int_for_C_cl_lin cosmo2D_exact.c /^double int_for_C_cl_lin(double a, void *params)$/;" f +int_for_C_cl_lin cosmo2D_exact_fft.c /^double int_for_C_cl_lin(double a, void *params)$/;" f +int_for_C_cl_lin cosmo2D_exact_fft_cltomo.c /^double int_for_C_cl_lin(double a, void *params)$/;" f +int_for_C_cl_lin cosmo2D_exact_fft_optimize.c /^double int_for_C_cl_lin(double a, void *params)$/;" f +int_for_C_cl_nl_rescale cosmo2D_exact_fft.c /^double int_for_C_cl_nl_rescale(double a, void *params)$/;" f +int_for_C_cl_nl_rescale cosmo2D_exact_fft_cltomo.c /^double int_for_C_cl_nl_rescale(double a, void *params)$/;" f +int_for_C_cl_nonLimber cosmo2D_exact.c /^double int_for_C_cl_nonLimber (double lk, void *params){$/;" f +int_for_C_cl_nonLimber_tomo cosmo2D_exact.c /^double int_for_C_cl_nonLimber_tomo (double k, void *params){$/;" f +int_for_C_cl_tomo cosmo2D_fourier.c /^double int_for_C_cl_tomo(double a, void *params)$/;" f +int_for_C_cl_tomo_RSD cosmo2D_fourier.c /^double int_for_C_cl_tomo_RSD(double k, void *params)$/;" f +int_for_C_cl_tomo_b2 cosmo2D_fourier.c /^double int_for_C_cl_tomo_b2(double a, void *params)$/;" f +int_for_C_gI IA.c /^double int_for_C_gI(double a, void *params)$/;" f +int_for_C_gI_JB IA.c /^double int_for_C_gI_JB(double a, void *params)$/;" f +int_for_C_gI_lin IA.c /^double int_for_C_gI_lin(double a, void *params)$/;" f +int_for_C_ggl_IA IA.c /^double int_for_C_ggl_IA(double a, void *params)$/;" f +int_for_C_ggl_IA_Az IA.c /^double int_for_C_ggl_IA_Az(double a, void *params)$/;" f +int_for_C_ggl_IA_Az_b2 IA.c /^double int_for_C_ggl_IA_Az_b2(double a, void *params)$/;" f +int_for_C_ggl_IA_TATT cosmo2D_fullsky_TATT.c /^double int_for_C_ggl_IA_TATT(double a, void *params){$/;" f +int_for_C_ggl_IA_mpp IA.c /^double int_for_C_ggl_IA_mpp(double a, void *params)$/;" f +int_for_C_ggl_IA_mpp_b2 IA.c /^double int_for_C_ggl_IA_mpp_b2(double a, void *params)$/;" f +int_for_C_ggl_IA_mpp_part1 IA.c /^double int_for_C_ggl_IA_mpp_part1(double a, void *params)$/;" f +int_for_C_ggl_IA_mpp_part2 IA.c /^double int_for_C_ggl_IA_mpp_part2(double a, void *params)$/;" f +int_for_C_gk CMBxLSS_fourier.c /^double int_for_C_gk(double a, void *params)$/;" f +int_for_C_gk_b2 CMBxLSS_fourier.c /^double int_for_C_gk_b2(double a, void *params)$/;" f +int_for_C_gl_HOD_tomo cosmo2D_fourier.c /^double int_for_C_gl_HOD_tomo(double a, void *params)$/;" f +int_for_C_gl_IA_lin cosmo2D_exact.c /^double int_for_C_gl_IA_lin(double a, void *params)$/;" f +int_for_C_gl_lin cosmo2D_exact.c /^double int_for_C_gl_lin(double a, void *params)$/;" f +int_for_C_gl_lin cosmo2D_exact_fft_optimize.c /^double int_for_C_gl_lin(double a, void *params)$/;" f +int_for_C_gl_lin_IA cosmo2D_exact_fft_optimize.c /^double int_for_C_gl_lin_IA(double a, void *params)$/;" f +int_for_C_gl_nonLimber_tomo cosmo2D_exact.c /^double int_for_C_gl_nonLimber_tomo (double lk, void *params){$/;" f +int_for_C_gl_onlyIA_nonLimber_tomo cosmo2D_exact.c /^double int_for_C_gl_onlyIA_nonLimber_tomo (double lk, void *params){$/;" f +int_for_C_gl_tomo cosmo2D_fourier.c /^double int_for_C_gl_tomo(double a, void *params) \/\/ Add RSD$/;" f +int_for_C_gl_tomo_b2 cosmo2D_fourier.c /^double int_for_C_gl_tomo_b2(double a, void *params)$/;" f +int_for_C_gl_withIA_nonLimber_tomo cosmo2D_exact.c /^double int_for_C_gl_withIA_nonLimber_tomo (double lk, void *params){$/;" f +int_for_C_kk CMBxLSS_fourier.c /^double int_for_C_kk(double a, void *params){$/;" f +int_for_C_ks CMBxLSS_fourier.c /^double int_for_C_ks(double a, void *params)$/;" f +int_for_C_ks_IA CMBxLSS_fourier.c /^double int_for_C_ks_IA(double a, void *params)$/;" f +int_for_C_ks_IA_Az CMBxLSS_fourier.c /^double int_for_C_ks_IA_Az(double a, void *params)$/;" f +int_for_C_ks_IA_mpp CMBxLSS_fourier.c /^double int_for_C_ks_IA_mpp(double a, void *params)$/;" f +int_for_C_magnification_magnification magnification.c /^double int_for_C_magnification_magnification(double a, void *params)$/;" f +int_for_C_position_magnification magnification.c /^double int_for_C_position_magnification(double a, void *params)$/;" f +int_for_C_shear_magnification magnification.c /^double int_for_C_shear_magnification(double a, void *params)$/;" f +int_for_C_shear_nonLimber_tomo cosmo2D_exact.c /^double int_for_C_shear_nonLimber_tomo (double lk, void *params){$/;" f +int_for_C_shear_shear_IA IA.c /^double int_for_C_shear_shear_IA(double a, void *params)$/;" f +int_for_C_shear_shear_IA_Az IA.c /^double int_for_C_shear_shear_IA_Az(double a, void *params)$/;" f +int_for_C_shear_shear_IA_BB cosmo2D_fullsky_TATT.c /^double int_for_C_shear_shear_IA_BB(double a, void *params){$/;" f +int_for_C_shear_shear_IA_EE cosmo2D_fullsky_TATT.c /^double int_for_C_shear_shear_IA_EE(double a, void *params){$/;" f +int_for_C_shear_shear_IA_mpp IA.c /^double int_for_C_shear_shear_IA_mpp(double a, void *params)$/;" f +int_for_C_shear_tomo cosmo2D_fourier.c /^double int_for_C_shear_tomo(double a, void *params)$/;" f +int_for_Delta_C_gl_reduced_shear reduced_shear.c /^double int_for_Delta_C_gl_reduced_shear(double a, void *params){$/;" f +int_for_Delta_C_shear_reduced_shear reduced_shear.c /^double int_for_Delta_C_shear_reduced_shear(double a, void *params){$/;" f +int_for_G02 HOD.c /^double int_for_G02 (double logm, void *para){$/;" f +int_for_G02_rm redmagic.c /^double int_for_G02_rm (double logm, void *para){$/;" f +int_for_HSV_shear_shear_tomo covariances_wl.c /^double int_for_HSV_shear_shear_tomo(double a, void *params){$/;" f +int_for_Psi_IA cosmo2D_exact.c /^double int_for_Psi_IA(double z, void *params){$/;" f +int_for_Psi_L cosmo2D_exact.c /^double int_for_Psi_L(double z, void *params){$/;" f +int_for_Psi_L_withIA cosmo2D_exact.c /^double int_for_Psi_L_withIA(double z, void *params){$/;" f +int_for_Psi_Mag cosmo2D_exact.c /^double int_for_Psi_Mag (double z, void *params){$/;" f +int_for_Psi_RSD cosmo2D_exact.c /^double int_for_Psi_RSD(double z, void *params){$/;" f +int_for_Psi_cl cosmo2D_exact.c /^double int_for_Psi_cl (double z, void *params){$/;" f +int_for_Psi_cl_noRSD cosmo2D_exact.c /^double int_for_Psi_cl_noRSD (double z, void *params){$/;" f +int_for_Psi_cl_withMag cosmo2D_exact.c /^double int_for_Psi_cl_withMag (double z, void *params){$/;" f +int_for_b_ngmatched halo.c /^double int_for_b_ngmatched (double logm, void *para){$/;" f +int_for_chi cosmo3D.c /^double int_for_chi(double a, void * args){$/;" f +int_for_chi cosmo3D_april7.c /^double int_for_chi(double a, void * args){$/;" f +int_for_cov_G_cl_binned covariances_real_binned.c /^double int_for_cov_G_cl_binned(double l, void *params){$/;" f +int_for_cov_G_cl_cl covariances_real.c /^double int_for_cov_G_cl_cl(double l, void *params){$/;" f +int_for_cov_G_cl_gl covariances_real.c /^double int_for_cov_G_cl_gl(double l, void *params){$/;" f +int_for_cov_G_cl_gl_binned covariances_real_binned.c /^double int_for_cov_G_cl_gl_binned(double l, void *params){$/;" f +int_for_cov_G_cl_shear covariances_real.c /^double int_for_cov_G_cl_shear(double l, void *params){$/;" f +int_for_cov_G_cl_shear_binned covariances_real_binned.c /^double int_for_cov_G_cl_shear_binned(double l, void *params){$/;" f +int_for_cov_G_gl_binned covariances_real_binned.c /^double int_for_cov_G_gl_binned(double l, void *params){$/;" f +int_for_cov_G_gl_gl covariances_real.c /^double int_for_cov_G_gl_gl(double l, void *params){$/;" f +int_for_cov_G_gl_shear covariances_real.c /^double int_for_cov_G_gl_shear(double l, void *params){$/;" f +int_for_cov_G_gl_shear_binned covariances_real_binned.c /^double int_for_cov_G_gl_shear_binned(double l, void *params){$/;" f +int_for_cov_G_shear covariances_real.c /^double int_for_cov_G_shear(double l, void *params){$/;" f +int_for_cov_G_shear_binned covariances_real_binned.c /^double int_for_cov_G_shear_binned(double l, void *params){$/;" f +int_for_cov_G_shear_nonoise covariances_real.c /^double int_for_cov_G_shear_nonoise(double l, void *params){ \/\/no mixed term!$/;" f +int_for_cov_NG_cl_binned covariances_real_binned.c /^double int_for_cov_NG_cl_binned(double l1, void *params){$/;" f +int_for_cov_NG_cl_cl covariances_real.c /^double int_for_cov_NG_cl_cl(double l1, void *params){$/;" f +int_for_cov_NG_cl_gl covariances_real.c /^double int_for_cov_NG_cl_gl(double l1, void *params){$/;" f +int_for_cov_NG_cl_gl_binned covariances_real_binned.c /^double int_for_cov_NG_cl_gl_binned(double l1, void *params){$/;" f +int_for_cov_NG_cl_shear covariances_real.c /^double int_for_cov_NG_cl_shear(double l1, void *params){$/;" f +int_for_cov_NG_cl_shear_binned covariances_real_binned.c /^double int_for_cov_NG_cl_shear_binned(double l1, void *params){$/;" f +int_for_cov_NG_gl_binned covariances_real_binned.c /^double int_for_cov_NG_gl_binned(double l1, void *params){$/;" f +int_for_cov_NG_gl_gl covariances_real.c /^double int_for_cov_NG_gl_gl(double l1, void *params){$/;" f +int_for_cov_NG_gl_shear covariances_real.c /^double int_for_cov_NG_gl_shear(double l1, void *params){$/;" f +int_for_cov_NG_gl_shear_binned covariances_real_binned.c /^double int_for_cov_NG_gl_shear_binned(double l1, void *params){$/;" f +int_for_cov_NG_shear covariances_real.c /^double int_for_cov_NG_shear(double l1, void *params){$/;" f +int_for_cov_NG_shear_binned covariances_real_binned.c /^double int_for_cov_NG_shear_binned(double l1, void *params){$/;" f +int_for_g_lens redshift.c /^double int_for_g_lens(double aprime,void *params)$/;" f +int_for_g_lens redshift_spline.c /^double int_for_g_lens(double aprime,void *params)$/;" f +int_for_g_tomo redshift.c /^double int_for_g_tomo(double aprime,void *params)$/;" f +int_for_g_tomo redshift_spline.c /^double int_for_g_tomo(double aprime,void *params)$/;" f +int_for_ggl_efficiency redshift.c /^double int_for_ggl_efficiency(double z, void *params){$/;" f +int_for_ggl_efficiency redshift_spline.c /^double int_for_ggl_efficiency(double z, void *params){$/;" f +int_for_ngmatched halo.c /^double int_for_ngmatched (double logm, void *para){$/;" f +int_for_sigma_r_sqr cosmo3D.c /^double int_for_sigma_r_sqr(double k, void * args)$/;" f +int_for_sigma_r_sqr cosmo3D_april7.c /^double int_for_sigma_r_sqr(double k, void * args)$/;" f +int_for_variance covariances_3D.c /^double int_for_variance (double logk, void *params){$/;" f +int_for_w cosmo2D_real.c /^double int_for_w(double l, void *params){$/;" f +int_for_wreal redmagic_real.c /^double int_for_wreal(double z1,void *params)$/;" f +int_for_xi_gg redmagic_real.c /^double int_for_xi_gg (double k, void *params){$/;" f +int_for_xi_gg_1h redmagic_real.c /^double int_for_xi_gg_1h (double k, void *params){$/;" f +int_for_xi_nl redmagic_real.c /^double int_for_xi_nl (double k, void *params){$/;" f +int_for_zmean redshift.c /^double int_for_zmean(double z, void *params){$/;" f +int_for_zmean redshift_spline.c /^double int_for_zmean(double z, void *params){$/;" f +int_for_zmean_source redshift.c /^double int_for_zmean_source(double z, void *params){$/;" f +int_for_zmean_source redshift_spline.c /^double int_for_zmean_source(double z, void *params){$/;" f +int_fsat HOD.c /^double int_fsat (double m, void *params){$/;" f +int_fsat_rm redmagic.c /^double int_fsat_rm (double m, void *params){$/;" f +int_gsl_integrate_cov_precision basics.c /^double int_gsl_integrate_cov_precision(double (*func)(double, void*),void *arg,double a, double b, double *error, int niter)$/;" f +int_gsl_integrate_high_precision basics.c /^double int_gsl_integrate_high_precision(double (*func)(double, void*),void *arg,double a, double b, double *error, int niter)$/;" f +int_gsl_integrate_insane_precision basics.c /^double int_gsl_integrate_insane_precision(double (*func)(double, void*),void *arg,double a, double b, double *error, int niter)$/;" f +int_gsl_integrate_low_precision basics.c /^double int_gsl_integrate_low_precision(double (*func)(double, void*),void *arg,double a, double b, double *error, int niter)$/;" f +int_gsl_integrate_medium_precision basics.c /^double int_gsl_integrate_medium_precision(double (*func)(double, void*),void *arg,double a, double b, double *error, int niter)$/;" f +int_mc_rm redmagic.c /^double int_mc_rm (double m, void *params){$/;" f +int_mmean HOD.c /^double int_mmean (double m, void *params){$/;" f +int_mmean_rm redmagic.c /^double int_mmean_rm (double m, void *params){$/;" f +int_n_Mobs cluster.c /^double int_n_Mobs(double lgM, void* params){$/;" f +int_n_Mobs clusters_DES.c /^double int_n_Mobs(double lgM, void* params){$/;" f +int_nc_rm redmagic.c /^double int_nc_rm (double m, void *params){$/;" f +int_neff cosmo3D.c /^double int_neff(double lnk, void *args) \/\/tak12 A5$/;" f +int_neff cosmo3D_april7.c /^double int_neff(double lnk, void *args) \/\/tak12 A5$/;" f +int_ngal HOD.c /^double int_ngal (double m, void *params){$/;" f +int_ngal_rm redmagic.c /^double int_ngal_rm (double m, void *params){$/;" f +int_nlens redshift.c /^double int_nlens(double z, void* param){$/;" f +int_nlens redshift_spline.c /^double int_nlens(double z, void* param){$/;" f +int_nsource redshift.c /^double int_nsource(double z, void* param){$/;" f +int_nsource redshift_spline.c /^double int_nsource(double z, void* param){$/;" f +int_rho_nfw halo.c /^double int_rho_nfw(double r, void *params){\/\/Fourier kernel * NFW profile, integrand for u_nfw $/;" f +int_sig_R_knl cosmo3D.c /^double int_sig_R_knl(double lnk, void *args) \/\/ tak12 A4$/;" f +int_sig_R_knl cosmo3D_april7.c /^double int_sig_R_knl(double lnk, void *args) \/\/ tak12 A4$/;" f +int_vector basics.c /^int *int_vector(long nl, long nh)$/;" f +integrand1_minus EBfunctions.c /^double integrand1_minus(double theta1, void *params)$/;" f +integrand1_plus EBfunctions.c /^double integrand1_plus(double theta1, void *params)$/;" f +integrand2_minus EBfunctions.c /^double integrand2_minus(double theta2, void *params)$/;" f +integrand2_plus EBfunctions.c /^double integrand2_plus(double theta2, void *params)$/;" f +integrand_Tm_log_shear_shear EBfunctions.c /^double integrand_Tm_log_shear_shear(double vartheta, void *p)$/;" f +integrand_Tp_log_shear_shear EBfunctions.c /^double integrand_Tp_log_shear_shear(double vartheta, void *p)$/;" f +integrand_j0_Tfunc EBfunctions.c /^double integrand_j0_Tfunc(double vartheta, void *params)$/;" f +integrand_j2_Tfunc EBfunctions.c /^double integrand_j2_Tfunc(double vartheta, void *params)$/;" f +interpol basics.c /^double interpol(double *f, int n, double a, double b, double dx, double x, double lower, double upper)$/;" f +interpol2d basics.c /^double interpol2d(double **f,$/;" f +interpol2d_fitslope basics.c /^double interpol2d_fitslope(double **f,$/;" f +interpol_fitslope basics.c /^double interpol_fitslope(double *f, int n, double a, double b, double dx, double x, double lower)$/;" f +inv inv_cov.py /^inv = LA.inv(cov)$/;" v +inv inv_cov.py /^inv = LA.inv(cov[(nshear+nggl)*ncl:(nshear+nggl+nlens)*ncl,(nshear+nggl)*ncl:(nshear+nggl+nlens)*ncl])$/;" v +inv inv_cov.py /^inv = LA.inv(cov[0:n2pt,0:n2pt])$/;" v +inv inv_cov.py /^inv = LA.inv(cov[0:nshear*ncl,0:nshear*ncl])$/;" v +inv inv_cov.py /^inv = LA.inv(cov[n2pt:n2pt+ncluster,n2pt:n2pt+ncluster])$/;" v +inv inv_cov.py /^inv = LA.inv(cov[n2pt:n2pt+nclusterN_WL,n2pt:n2pt+nclusterN_WL])$/;" v +inv inv_cov.py /^inv = LA.inv(cov[nshear*ncl:(nshear+nggl)*ncl,nshear*ncl:(nshear+nggl)*ncl])$/;" v +inv patch_cov_HOD.py /^inv = LA.inv(cov)$/;" v +inv patch_cov_HOD.py /^inv = LA.inv(cov[(nshear+nggl)*ncl:(nshear+nggl+nlens)*ncl,(nshear+nggl)*ncl:(nshear+nggl+nlens)*ncl])$/;" v +inv patch_cov_HOD.py /^inv = LA.inv(cov[0:n2pt,0:n2pt])$/;" v +inv patch_cov_HOD.py /^inv = LA.inv(cov[0:nshear*ncl,0:nshear*ncl])$/;" v +inv patch_cov_HOD.py /^inv = LA.inv(cov[n2pt:n2pt+ncluster,n2pt:n2pt+ncluster])$/;" v +inv patch_cov_HOD.py /^inv = LA.inv(cov[n2pt:n2pt+nclusterN_WL,n2pt:n2pt+nclusterN_WL])$/;" v +inv patch_cov_HOD.py /^inv = LA.inv(cov[nshear*ncl:(nshear+nggl)*ncl,nshear*ncl:(nshear+nggl)*ncl])$/;" v +inv patch_cov_Rmin.py /^inv = LA.inv(cov)$/;" v +inv patch_cov_Rmin.py /^inv = LA.inv(cov[(nshear+nggl)*ncl:(nshear+nggl+nlens)*ncl,(nshear+nggl)*ncl:(nshear+nggl+nlens)*ncl])$/;" v +inv patch_cov_Rmin.py /^inv = LA.inv(cov[0:n2pt,0:n2pt])$/;" v +inv patch_cov_Rmin.py /^inv = LA.inv(cov[0:nshear*ncl,0:nshear*ncl])$/;" v +inv patch_cov_Rmin.py /^inv = LA.inv(cov[n2pt:n2pt+ncluster,n2pt:n2pt+ncluster])$/;" v +inv patch_cov_Rmin.py /^inv = LA.inv(cov[n2pt:n2pt+nclusterN_WL,n2pt:n2pt+nclusterN_WL])$/;" v +inv patch_cov_Rmin.py /^inv = LA.inv(cov[nshear*ncl:(nshear+nggl)*ncl,nshear*ncl:(nshear+nggl)*ncl])$/;" v +invcov_mask init.c /^double invcov_mask(int READ, int ci, int cj)$/;" f +invcov_mask init_basic.c /^double invcov_mask(int READ, int ci, int cj)$/;" f +invcov_read init.c /^double invcov_read(int READ, int ci, int cj)$/;" f +invcov_read init_basic.c /^double invcov_read(int READ, int ci, int cj)$/;" f +invert_matrix_colesky basics.c /^void invert_matrix_colesky(gsl_matrix *A)$/;" f +isPkbary structs.c /^ int isPkbary; \/\/ if isPkbary=1$/;" m struct:__anon26 file: +k GRS.c /^ double* k;$/;" m struct:__anon7 file: +k structs.c /^ double* k;$/;" m struct:__anon25 file: +k_max GRS.c /^ double k_max; \/\/in h\/Mpc$/;" m struct:__anon7 file: +k_max structs.c /^ double k_max; \/\/in h\/Mpc$/;" m struct:__anon25 file: +k_max structs.c /^ double k_max;$/;" m struct:__anon20 file: +k_max_cH0 basics.c /^ double k_max_cH0;$/;" m struct:__anon5 file: +k_max_mpc basics.c /^ double k_max_mpc;$/;" m struct:__anon5 file: +k_max_mpc_class basics.c /^ double k_max_mpc_class;$/;" m struct:__anon5 file: +k_min GRS.c /^ double k_min; \/\/ in h\/Mpc$/;" m struct:__anon7 file: +k_min structs.c /^ double k_min; \/\/ in h\/Mpc$/;" m struct:__anon25 file: +k_min structs.c /^ double k_min;$/;" m struct:__anon20 file: +k_min_cH0 basics.c /^ double k_min_cH0;$/;" m struct:__anon5 file: +k_min_mpc basics.c /^ double k_min_mpc;$/;" m struct:__anon5 file: +k_star GRS.c /^ double k_star; \/\/in h\/Mpc$/;" m struct:__anon7 file: +k_star structs.c /^ double k_star; \/\/in h\/Mpc$/;" m struct:__anon25 file: +kappa_reconstruction_noise covariances_CMBxLSS_fourier.c /^double kappa_reconstruction_noise(double l){$/;" f +kk structs.c /^ int kk;$/;" m struct:__anon9 file: +ks structs.c /^ int ks;$/;" m struct:__anon9 file: +l_max structs.c /^ double l_max;$/;" m struct:__anon17 file: +l_min structs.c /^ double l_min;$/;" m struct:__anon17 file: +lbin structs.c /^ int lbin;$/;" m struct:__anon17 file: +lens_z_bias structs.c /^ double lens_z_bias[10];$/;" m struct:input_nuisance_params file: +lens_z_bias structs.c /^ double lens_z_bias[10];$/;" m struct:input_nuisance_params_mpp file: +lens_z_s structs.c /^ double lens_z_s;$/;" m struct:input_nuisance_params file: +lensphotoz structs.c /^ char lensphotoz[256];$/;" m struct:__anon13 file: +lf structs.c /^ double lf[6];$/;" m struct:input_nuisance_params file: +lgM0 structs.c /^ double lgM0;$/;" m struct:input_HOD_params file: +lgM1 structs.c /^ double lgM1;$/;" m struct:input_HOD_params file: +lgM_obs cluster.c /^double lgM_obs(double N200, double a){$/;" f +lgM_obs clusters_DES.c /^double lgM_obs(double N200, double a){$/;" f +lgMmax cluster.c /^double lgMmax(double a,int nN){\/\/ speed up of mass integrals for Gaussian scatter - change to log(limits.M_max) for general scatter distribution$/;" f +lgMmax clusters_DES.c /^double lgMmax(double a,int nN){\/\/ speed up of mass integrals for Gaussian scatter - change to log(limits.M_max) for general scatter distribution $/;" f +lgMmin cluster.c /^double lgMmin(double a,int nN){ \/\/ speed up of mass integrals for Gaussian scatter - change to log(limits.M_min) for general scatter distribution$/;" f +lgMmin clusters_DES.c /^double lgMmin(double a,int nN){ \/\/ speed up of mass integrals for Gaussian scatter - change to log(limits.M_min) for general scatter distribution $/;" f +lgMmin structs.c /^ double lgMmin[10];$/;" m struct:input_HOD_params file: +lgN200_model cluster.c /^double lgN200_model(double M, double a){$/;" f +lightspeed basics.c /^ double lightspeed;$/;" m struct:__anon3 file: +like structs.c /^likepara like ={.baryons = 0, .IA = 0., .bias = 0, .wlphotoz = 0, .clphotoz = 0, .shearcalib = 0, .clusterMobs =0, .BAO = 0, .SN_WFIRST = 0, .GRS = 0, .SRD = 0, .Planck15_BAO_H070p6_JLA_w0wa = 0, .Planck18_BAO_Riess18_Pantheon_w0wa = 0, .Planck18_BAO_w0wa = 0, .Planck18_w0 = 0,.theta_s =0, .Ytransform=0};$/;" v +likepara structs.c /^}likepara;$/;" t typeref:struct:__anon9 file: +lim basics.c /^}lim;$/;" t typeref:struct:__anon5 file: +limits basics.c /^lim limits = {$/;" v +line_count basics.c /^int line_count(char *filename)$/;" f +ll structs.c /^ char ll[8]; \/* Calculate position-position components *\/$/;" m struct:__anon24 file: +lmax structs.c /^ double lmax; \/* ell max *\/$/;" m struct:__anon24 file: +lmax structs.c /^ double lmax;$/;" m struct:__anon9 file: +lmax_kappacmb structs.c /^ double lmax_kappacmb;$/;" m struct:__anon9 file: +lmax_shear structs.c /^ double lmax_shear;$/;" m struct:__anon9 file: +lmin structs.c /^ double lmin; \/* ell min *\/$/;" m struct:__anon24 file: +lmin structs.c /^ double lmin;$/;" m struct:__anon9 file: +ln2 basics.c /^ double ln2; $/;" m struct:__anon3 file: +logG GRS.c /^double logG(double loga,void * params){$/;" f +log_L_BAO external_prior.c /^double log_L_BAO()$/;" f +log_L_Planck15_BAO_H070p6_JLA_w0wa external_prior.c /^double log_L_Planck15_BAO_H070p6_JLA_w0wa()$/;" f +log_L_Planck15_BAO_w0wa external_prior.c /^double log_L_Planck15_BAO_w0wa()$/;" f +log_L_Planck18_BAO_Riess18_Pantheon_w0wa external_prior.c /^double log_L_Planck18_BAO_Riess18_Pantheon_w0wa()$/;" f +log_L_Planck18_BAO_w0wa external_prior.c /^double log_L_Planck18_BAO_w0wa()$/;" f +log_L_Planck18_w0 external_prior.c /^double log_L_Planck18_w0()$/;" f +log_L_SN_WFIRST_w0wa external_prior.c /^double log_L_SN_WFIRST_w0wa()$/;" f +log_L_clphotoz external_prior.c /^double log_L_clphotoz()$/;" f +log_L_clusterMobs external_prior.c /^double log_L_clusterMobs()$/;" f +log_L_ia external_prior.c /^ double log_L_ia()$/;" f +log_L_shear_calib external_prior.c /^double log_L_shear_calib()$/;" f +log_L_wlphotoz external_prior.c /^double log_L_wlphotoz()$/;" f +log_like_f_red external_prior.c /^double log_like_f_red(){ \/\/use f_red in each tomography bin to constrain LF parameters, assuming 10% uncertainty in f_red measurement; evaluated at bin center to avoid cosmology dependence$/;" f +log_like_wrapper like_fourier.c /^double log_like_wrapper(input_cosmo_params ic, input_nuisance_params in)$/;" f +log_multi_like like_fourier.c /^double log_multi_like(double OMM, double S8, double NS, double W0,double WA, double OMB, double H0, double MGSigma, double MGmu, double B1, double B2, double B3, double B4, double B5, double B6, double B7, double B8, double B9, double B10, double SP1, double SP2, double SP3, double SP4, double SP5, double SP6, double SP7, double SP8, double SP9, double SP10, double SPS1, double CP1, double CP2, double CP3, double CP4, double CP5, double CP6, double CP7, double CP8, double CP9, double CP10, double CPS1, double M1, double M2, double M3, double M4, double M5, double M6, double M7, double M8, double M9, double M10, double A_ia, double beta_ia, double eta_ia, double eta_ia_highz, double LF_alpha, double LF_P, double LF_Q, double LF_red_alpha, double LF_red_P, double LF_red_Q, double mass_obs_norm, double mass_obs_slope, double mass_z_slope, double mass_obs_scatter, double c1, double c2, double c3, double c4)$/;" f +log_multi_like like_fourier_HOD.c /^double log_multi_like(double OMM, double S8, double NS, double W0,double WA, double OMB, double H0, double HOD_Mc, double HOD_sigmaM,double HOD_M1,double HOD_M0, double HOD_alpha,double HOD_fc, double SP1, double SP2, double SP3, double SP4, double SP5, double SP6, double SP7, double SP8, double SP9, double SP10, double SPS1, double CP1, double CP2, double CP3, double CP4, double CP5, double CP6, double CP7, double CP8, double CP9, double CP10, double CPS1, double M1, double M2, double M3, double M4, double M5, double M6, double M7, double M8, double M9, double M10, double A_ia, double beta_ia, double eta_ia, double eta_ia_highz, double LF_alpha, double LF_P, double LF_Q, double LF_red_alpha, double LF_red_P, double LF_red_Q, double mass_obs_norm, double mass_obs_slope, double mass_z_slope, double mass_obs_scatter, double c1, double c2, double c3, double c4)$/;" f +long_vector basics.c /^long *long_vector(long nl, long nh)$/;" f +low basics.c /^ double low;$/;" m struct:__anon4 file: +ls structs.c /^ char ls[8]; \/* Calculate shear-position components *\/$/;" m struct:__anon24 file: +m_Delta halo.c /^double m_Delta(double r, double a){$/;" f +m_lambda structs.c /^ double m_lambda[6];$/;" m struct:input_nuisance_params file: +m_lim structs.c /^ double m_lim;$/;" m struct:__anon13 file: +magnification_Nbin structs.c /^ int magnification_Nbin; \/\/ number of tomography bins$/;" m struct:__anon11 file: +magnification_Npowerspectra structs.c /^ int magnification_Npowerspectra;\/\/ number of tomography power spectra+2+3+...+Nbin$/;" m struct:__anon11 file: +magnification_REDSHIFT_FILE structs.c /^ char magnification_REDSHIFT_FILE[200];$/;" m struct:__anon12 file: +magnification_histogram_zbins structs.c /^ int magnification_histogram_zbins;$/;" m struct:__anon12 file: +magnification_photoz structs.c /^ int magnification_photoz;$/;" m struct:__anon12 file: +magnification_zdistrpar_zmax structs.c /^ double magnification_zdistrpar_zmax;$/;" m struct:__anon12 file: +magnification_zdistrpar_zmin structs.c /^ double magnification_zdistrpar_zmin;$/;" m struct:__anon12 file: +magnification_zmax structs.c /^ double magnification_zmax[10]; $/;" m struct:__anon11 file: +magnification_zmin structs.c /^ double magnification_zmin[10];$/;" m struct:__anon11 file: +main compute_covariances_fourier.c /^int main(int argc, char** argv)$/;" f +main compute_covariances_fourier_HOD.c /^int main(int argc, char** argv)$/;" f +main compute_covariances_fourier_HSC.c /^ int main(int argc, char** argv)$/;" f +main examples.c /^int main(void){$/;" f +main like_fourier.c /^ int main(void)$/;" f +main like_fourier_HOD.c /^ int main(void)$/;" f +main tests.c /^int main(){$/;" f +mask init.c /^double mask(int READ, int ci)$/;" f +mask init_basic.c /^double mask(int READ, int ci)$/;" f +mask patch_cov_HOD.py /^mask =np.genfromtxt(maskfile)$/;" v +mask patch_cov_Rmin.py /^mask =np.genfromtxt(maskfile)$/;" v +maskfile patch_cov_HOD.py /^maskfile = '..\/cov\/maskRmin_0.1'$/;" v +maskfile patch_cov_Rmin.py /^maskfile = '..\/cov\/maskRmin_10'$/;" v +mass_norm halo.c /^double mass_norm(double a)$/;" f +mass_norm_integrand halo.c /^double mass_norm_integrand(double n, void * params) \/\/ inner integral$/;" f +massfunc halo.c /^double massfunc(double m, double a){$/;" f +max_g_tomo redshift.c /^double max_g_tomo(int zs){$/;" f +max_g_tomo redshift_spline.c /^double max_g_tomo(int zs){$/;" f +maxarg1 basics.c /^static double darg __attribute__((unused)),maxarg1 __attribute__((unused)), maxarg2 __attribute__((unused));$/;" v file: +maxarg2 basics.c /^static double darg __attribute__((unused)),maxarg1 __attribute__((unused)), maxarg2 __attribute__((unused));$/;" v file: +mc_rm redmagic.c /^double mc_rm(double a){$/;" f +medium basics.c /^ double medium;$/;" m struct:__anon4 file: +mmean HOD.c /^double mmean(int nz,double a){$/;" f +mmean_rm redmagic.c /^double mmean_rm(double a){$/;" f +model structs.c /^ char model[256];$/;" m struct:__anon17 file: +model_para_redmagic structs.c /^} model_para_redmagic;$/;" t typeref:struct:__anon16 file: +mu GRS.c /^ double* mu;$/;" m struct:__anon7 file: +mu structs.c /^ double* mu;$/;" m struct:__anon25 file: +n0 structs.c /^ double n0;$/;" m struct:__anon16 file: +n2pt inv_cov.py /^n2pt = (nshear+nggl+nlens)*ncl #(55+?+4)*20 for WFIRST$/;" v +n2pt patch_cov_HOD.py /^n2pt = (nshear+nggl+nlens)*ncl #(55+?+4)*20 for WFIRST$/;" v +n2pt patch_cov_Rmin.py /^n2pt = (nshear+nggl+nlens)*ncl #(55+?+4)*20 for WFIRST$/;" v +n2ptcl inv_cov.py /^n2ptcl=n2pt+ncluster$/;" v +n2ptcl patch_cov_HOD.py /^n2ptcl=n2pt+ncluster$/;" v +n2ptcl patch_cov_Rmin.py /^n2ptcl=n2pt+ncluster$/;" v +n_N200 cluster.c /^double n_N200 (int nz, int nN){$/;" f +n_N200 clusters_DES.c /^double n_N200 (int nz, int nN){$/;" f +n_all_LF IA.c /^double n_all_LF(double mag, double a){$/;" f +n_c HOD.c /^double n_c(double mh, double a, int nz){$/;" f +n_c_Reddick redmagic.c /^double n_c_Reddick(double mh){$/;" f +n_c_rm redmagic.c /^double n_c_rm(double mh){$/;" f +n_c_tab redmagic.c /^double n_c_tab(double mh){$/;" f +n_g GRS.c /^ double n_g[10]; \/\/ in (h\/Mpc)^3$/;" m struct:__anon8 file: +n_gal structs.c /^ double n_gal;\/* galaxy density per arcmin^2 *\/$/;" m struct:__anon13 file: +n_gal_conversion_factor structs.c /^ double n_gal_conversion_factor; \/*factor from n_gal\/arcmin^2 to n_gal\/radian^2: 1.0\/constants.arcmin\/constants.arcmin *\/$/;" m struct:__anon13 file: +n_hod structs.c /^ double n_hod[10];$/;" m struct:__anon15 file: +n_lens structs.c /^ double n_lens;\/* lens galaxy density per arcmin^2 *\/$/;" m struct:__anon13 file: +n_lens structs.c /^ double n_lens[10];$/;" m struct:__anon11 file: +n_mt structs.c /^ double n_mt[10][2]; \/\/ in (h\/Mpc)^3$/;" m struct:__anon25 file: +n_of_z redshift_spline.c /^double n_of_z(double z, int nz){$/;" f +n_s HOD.c /^double n_s(double mh, double a, int nz){$/;" f +n_s structs.c /^ double n_s;$/;" m struct:input_cosmo_params file: +n_s structs.c /^ double n_s;$/;" m struct:input_cosmo_params_mpp file: +n_s_Reddick redmagic.c /^double n_s_Reddick(double mh){$/;" f +n_s_cmv halo.c /^double n_s_cmv (double a){$/;" f +n_s_rm redmagic.c /^double n_s_rm(double mh){$/;" f +n_s_tab redmagic.c /^double n_s_tab(double mh){$/;" f +n_source structs.c /^ double n_source[10];$/;" m struct:__anon11 file: +n_spec structs.c /^ double n_spec; \/* spectral index of initial power spectrum *\/$/;" m struct:__anon10 file: +n_spec structs.c /^ double n_spec; \/* spectral index of initial power spectrum *\/$/;" m struct:__anon22 file: +name structs.c /^ char name[500]; $/;" m struct:__anon13 file: +name structs.c /^ char name[500];$/;" m struct:__anon14 file: +ncl inv_cov.py /^ncl=25$/;" v +ncl patch_cov_HOD.py /^ncl=25$/;" v +ncl patch_cov_Rmin.py /^ncl=25$/;" v +ncl structs.c /^ int ncl;\/* number of ell bins *\/$/;" m struct:__anon24 file: +ncluster inv_cov.py /^ncluster = nlens*7 #4*7 fir WFIRST$/;" v +ncluster patch_cov_HOD.py /^ncluster = nlens*7 #4*7 fir WFIRST$/;" v +ncluster patch_cov_Rmin.py /^ncluster = nlens*7 #4*7 fir WFIRST$/;" v +nclusterN_WL inv_cov.py /^nclusterN_WL=ncluster+7*nggl*5$/;" v +nclusterN_WL patch_cov_HOD.py /^nclusterN_WL=ncluster+7*nggl*5$/;" v +nclusterN_WL patch_cov_Rmin.py /^nclusterN_WL=ncluster+7*nggl*5$/;" v +ndata inv_cov.py /^ndata = (nshear+nggl+nlens)*ncl+nlens*7+7*nggl*5 #??? for WFIRST$/;" v +ndata patch_cov_HOD.py /^ndata = (nshear+nggl+nlens)*ncl+nlens*7+7*nggl*5 #??? for WFIRST$/;" v +ndata patch_cov_Rmin.py /^ndata = (nshear+nggl+nlens)*ncl+nlens*7+7*nggl*5 #??? for WFIRST$/;" v +ng structs.c /^ int ng;\/* ng covariance? *\/$/;" m struct:__anon24 file: +ngal HOD.c /^double ngal(int nz,double a){$/;" f +ngal_rm redmagic.c /^double ngal_rm(double a){$/;" f +nggl inv_cov.py /^nggl = 9$/;" v +nggl patch_cov_HOD.py /^nggl = 24$/;" v +nggl patch_cov_Rmin.py /^nggl = 24$/;" v +ni basics.c /^ int ni ;$/;" m struct:cos file: +nj basics.c /^ int nj ;$/;" m struct:cos file: +nlens inv_cov.py /^nlens = 3$/;" v +nlens patch_cov_HOD.py /^nlens = 4$/;" v +nlens patch_cov_Rmin.py /^nlens = 4$/;" v +nlens redshift.c /^double nlens(int j) \/\/returns n_gal for clustering tomography bin j, works only with binned distributions; j =-1 -> no tomography; j>= 0 -> tomography bin j$/;" f +nlens redshift_spline.c /^double nlens(int j) \/\/returns n_gal for clustering tomography bin j, works only with binned distributions; j =-1 -> no tomography; j>= 0 -> tomography bin j$/;" f +nonlin_scale cosmo3D.c /^void nonlin_scale(double amp, double *R_NL, double *neff, double *Curv)$/;" f +nonlin_scale cosmo3D_april7.c /^void nonlin_scale(double amp, double *R_NL, double *neff, double *Curv)$/;" f +nonlinear_scale_computation cosmo3D.c /^double nonlinear_scale_computation(double a)$/;" f +nonlinear_scale_computation cosmo3D_april7.c /^double nonlinear_scale_computation(double a)$/;" f +norm_for_zmean redshift_spline.c /^double norm_for_zmean(double z, void *params){$/;" f +norm_z_cluster cluster.c /^double norm_z_cluster(int nz){$/;" f +norm_z_cluster clusters_DES.c /^double norm_z_cluster(int nz){$/;" f +normalization EBfunctions.c /^void normalization(int vartheta_max,int vt_min,double *store)$/;" f +normalization coefficients.c /^void normalization(int vartheta_max,int vt_min,double *store)$/;" f +ns_max_emu cosmo3D.c 25;" d file: +ns_max_emu cosmo3D_april7.c 25;" d file: +ns_min_emu cosmo3D.c 26;" d file: +ns_min_emu cosmo3D_april7.c 26;" d file: +nshear inv_cov.py /^nshear = 15$/;" v +nshear patch_cov_HOD.py /^nshear = 55$/;" v +nshear patch_cov_Rmin.py /^nshear = 55$/;" v +nsource redshift.c /^double nsource(int j) \/\/returns n_gal for shear tomography bin j, works only with binned distributions; j =-1 -> no tomography; j>= 0 -> tomography bin j$/;" f +nsource redshift_spline.c /^double nsource(int j) \/\/returns n_gal for shear tomography bin j, works only with binned distributions; j =-1 -> no tomography; j>= 0 -> tomography bin j$/;" f +ntheta structs.c /^ int ntheta;\/* number of theta bins *\/$/;" m struct:__anon24 file: +nu halo.c /^double nu(double m, double a){$/;" f +nuisance structs.c /^nuisancepara nuisance ={.c1rhocrit_ia = 0.013873073650776856,$/;" v +nuisancepara structs.c /^nuisancepara;$/;" t typeref:struct:__anon21 file: +nulogm_a1 halo.c /^double nulogm_a1(double lgm,void * params)$/;" f +number_of_cluster_bins init_LSST_SRD.c /^double number_of_cluster_bins(){$/;" f +omb structs.c /^ double omb; \/\/Omega baryon$/;" m struct:__anon10 file: +omb structs.c /^ double omb; \/\/Omega baryon$/;" m struct:__anon22 file: +ombhh_max_emu cosmo3D.c 19;" d file: +ombhh_max_emu cosmo3D_april7.c 19;" d file: +ombhh_min_emu cosmo3D.c 20;" d file: +ombhh_min_emu cosmo3D_april7.c 20;" d file: +omega_a cosmo3D.c /^void omega_a(double aa,double *om_m,double *om_v)$/;" f +omega_a cosmo3D_april7.c /^void omega_a(double aa,double *om_m,double *om_v)$/;" f +omega_b structs.c /^ double omega_b;$/;" m struct:input_cosmo_params file: +omega_b structs.c /^ double omega_b;$/;" m struct:input_cosmo_params_mpp file: +omega_m structs.c /^ double omega_m;$/;" m struct:input_cosmo_params file: +omega_m structs.c /^ double omega_m;$/;" m struct:input_cosmo_params_mpp file: +omega_nuh2 structs.c /^ double omega_nuh2;$/;" m struct:input_cosmo_params_mpp file: +omhh_max_emu cosmo3D.c 17;" d file: +omhh_max_emu cosmo3D_april7.c 17;" d file: +omhh_min_emu cosmo3D.c 18;" d file: +omhh_min_emu cosmo3D_april7.c 18;" d file: +omv_vareos cosmo3D.c /^double omv_vareos(double a)$/;" f +omv_vareos cosmo3D_april7.c /^double omv_vareos(double a)$/;" f +oneplusz0_ia structs.c /^ double oneplusz0_ia; \/\/oneplusz0-ia MegaZ$/;" m struct:__anon21 file: +onuhh_max_emu cosmo3D.c 31;" d file: +onuhh_max_emu cosmo3D_april7.c 31;" d file: +onuhh_min_emu cosmo3D.c 32;" d file: +onuhh_min_emu cosmo3D_april7.c 32;" d file: +outdir structs.c /^ char outdir[200]; \/* output directory *\/$/;" m struct:__anon24 file: +outfile inv_cov.py /^outfile = infile+"_2pt_clusterN_clusterWL_inv"$/;" v +outfile inv_cov.py /^outfile = infile+"_2pt_inv" $/;" v +outfile inv_cov.py /^outfile = infile+"_clusterN_clusterWL_inv"$/;" v +outfile inv_cov.py /^outfile = infile+"_clusterN_inv"$/;" v +outfile inv_cov.py /^outfile = infile+"_clustering_inv"$/;" v +outfile inv_cov.py /^outfile = infile+"_ggl_inv"$/;" v +outfile inv_cov.py /^outfile = infile+"_shear_inv"$/;" v +outfile patch_cov_HOD.py /^outfile = outfilebase+"_2pt_inv"$/;" v +outfile patch_cov_HOD.py /^outfile = outfilebase+"_clusterN_clusterWL_inv"$/;" v +outfile patch_cov_HOD.py /^outfile = outfilebase+"_clusterN_inv"$/;" v +outfile patch_cov_HOD.py /^outfile = outfilebase+"_clustering_inv"$/;" v +outfile patch_cov_HOD.py /^outfile = outfilebase+"_ggl_inv"$/;" v +outfile patch_cov_HOD.py /^outfile = outfilebase+"_shear_inv"$/;" v +outfile patch_cov_HOD.py /^outfile =outfilebase+"_2pt_clusterN_clusterWL_inv"$/;" v +outfile patch_cov_Rmin.py /^outfile = outfilebase+"_2pt_inv"$/;" v +outfile patch_cov_Rmin.py /^outfile = outfilebase+"_clusterN_clusterWL_inv"$/;" v +outfile patch_cov_Rmin.py /^outfile = outfilebase+"_clusterN_inv"$/;" v +outfile patch_cov_Rmin.py /^outfile = outfilebase+"_clustering_inv"$/;" v +outfile patch_cov_Rmin.py /^outfile = outfilebase+"_ggl_inv"$/;" v +outfile patch_cov_Rmin.py /^outfile = outfilebase+"_shear_inv"$/;" v +outfile patch_cov_Rmin.py /^outfile =outfilebase+"_2pt_clusterN_clusterWL_inv"$/;" v +outfilebase patch_cov_HOD.py /^outfilebase = '..\/cov\/cov_combi_LSST_HOD_Ntomo10'$/;" v +outfilebase patch_cov_Rmin.py /^outfilebase = '..\/cov\/cov_combi_LSST_Rmin10'$/;" v +p_1h halo.c /^double p_1h(double k, double a)$/;" f +p_2h halo.c /^double p_2h(double k, double a)$/;" f +p_class cosmo3D.c /^double p_class(double k_coverh0,double a, int NL, int cdm_b, int *status){$/;" f +p_class cosmo3D_april7.c /^double p_class(double k_coverh0,double a, int NL, int *status){$/;" f +p_lin cosmo3D.c /^double p_lin(double k,double a)$/;" f +p_lin cosmo3D_april7.c /^double p_lin(double k,double a)$/;" f +p_lin_cdm_b cosmo3D.c /^double p_lin_cdm_b(double k,double a)$/;" f +parameterization structs.c /^ int parameterization; \/\/Zehavi, Reddick, histo$/;" m struct:__anon16 file: +path structs.c /^ char path[200];$/;" m struct:__anon20 file: +pathLensRecNoise structs.c /^ char * pathLensRecNoise; \/\/ path to precomputed noise on reconstructed kappa$/;" m struct:__anon14 file: +pdeltapara structs.c /^}pdeltapara;$/;" t typeref:struct:__anon18 file: +pdeltaparams structs.c /^pdeltapara pdeltaparams = {.runmode = "Halofit", .DIFF_n = 0., .DIFF_A = 0.};$/;" v +pf_histo redshift.c /^double pf_histo(double z, void *params) \/\/return pf(z) based on redshift file with one redshift distribution$/;" f +pf_histo redshift_spline.c /^double pf_histo(double z, void *params) \/\/return pf(z) based on redshift file with one redshift distribution$/;" f +pf_histo_n redshift.c /^double pf_histo_n(double z, void *params) \/\/return pf(z,j) based on redshift file with structure z[i] nz[0][i] .. nz[tomo.clustering_Nbin-1][i]$/;" f +pf_histo_n redshift_spline.c /^double pf_histo_n(double z, void *params) \/\/return pf(z,j) based on redshift file with structure z[i] nz[0][i] .. nz[tomo.clustering_Nbin-1][i]$/;" f +pf_photoz redshift.c /^double pf_photoz(double zz,int j) \/\/returns n(ztrue, j), works only with binned distributions; j =-1 -> no tomography; j>= 0 -> tomography bin j$/;" f +pf_photoz redshift_spline.c /^double pf_photoz(double zz,int j) \/\/returns n(ztrue, j), works only with binned distributions; j =-1 -> no tomography; j>= 0 -> tomography bin j$/;" f +pi basics.c /^ double pi; $/;" m struct:__anon3 file: +pi_sqr basics.c /^ double pi_sqr; $/;" m struct:__anon3 file: +pos_pos structs.c /^ int pos_pos;$/;" m struct:__anon9 file: +pow4arg basics.c /^static double pow4arg;$/;" v file: +pre basics.c /^}pre;$/;" t typeref:struct:__anon4 file: +precision basics.c /^pre precision= {$/;" v +precond inv_cov.py /^precond = 1.e-7$/;" v +precond patch_cov_HOD.py /^precond = 1.e-7$/;" v +precond patch_cov_Rmin.py /^precond = 1.e-7$/;" v +print_zdistr examples.c /^void print_zdistr(){$/;" f +prior structs.c /^priorpara prior = {.shear_calibration_m = {{0.,0.},{0.,0.},{0.,0.},{0.,0.},{0.,0.},{0.,0.},{0.,0.},{0.,0.},{0.,0.},{0.,0.}},$/;" v +priorpara structs.c /^}priorpara;$/;" t typeref:struct:__anon22 file: +probes structs.c /^ char probes[500];$/;" m struct:__anon9 file: +project_cov_cgl_N covariances_cluster.c /^double project_cov_cgl_N(double a,void *params)$/;" f +project_cov_cl_N covariances_cluster.c /^double project_cov_cl_N(double a,void *params)$/;" f +project_cov_cl_N_HOD covariances_fourier_HOD.c /^double project_cov_cl_N_HOD(double a,void *params)$/;" f +project_cov_ggl_N covariances_cluster.c /^double project_cov_ggl_N(double a,void *params)$/;" f +project_cov_ggl_N_HOD covariances_fourier_HOD.c /^double project_cov_ggl_N_HOD(double a,void *params)$/;" f +project_cov_shear_N covariances_cluster.c /^double project_cov_shear_N(double a,void *params)$/;" f +project_tri_1h_cov_shear_shear_tomo covariances_wl.c /^double project_tri_1h_cov_shear_shear_tomo(double l1,double l2, int z1, int z2, int z3, int z4){$/;" f +project_tri_2h_cov_shear_shear_tomo covariances_wl.c /^double project_tri_2h_cov_shear_shear_tomo(double l1,double l2, int z1, int z2, int z3, int z4){$/;" f +project_tri_cgl_cgl covariances_cluster.c /^double project_tri_cgl_cgl(double a,void *params)$/;" f +project_tri_cl_cgl covariances_cluster.c /^double project_tri_cl_cgl(double a,void *params)$/;" f +project_tri_cl_cgl_HOD covariances_fourier_HOD.c /^double project_tri_cl_cgl_HOD(double a,void *params)$/;" f +project_tri_ggl_cgl covariances_cluster.c /^double project_tri_ggl_cgl(double a,void *params)$/;" f +project_tri_ggl_cgl_HOD covariances_fourier_HOD.c /^double project_tri_ggl_cgl_HOD(double a,void *params)$/;" f +project_tri_lin_cov_shear_shear_tomo covariances_wl.c /^double project_tri_lin_cov_shear_shear_tomo(double l1,double l2, int z1, int z2, int z3, int z4){$/;" f +project_tri_shear_cgl covariances_cluster.c /^double project_tri_shear_cgl(double a,void *params)$/;" f +r_Delta halo.c /^double r_Delta(double m, double a) \/\/calculate r_Delta in c\/H0 given m in (solar masses\/h)$/;" f +r_s halo.c /^double r_s(double m, double a)$/;" f +radius halo.c /^double radius(double m)$/;" f +rcorr structs.c /^ double rcorr[10];$/;" m struct:__anon15 file: +recompute_DESclusters recompute.c /^int recompute_DESclusters(cosmopara C, nuisancepara N){$/;" f +recompute_Delta recompute.c /^int recompute_Delta(cosmopara C){ \/\/rules for recomputing early time power spectrum Delta_L$/;" f +recompute_IA recompute.c /^int recompute_IA(nuisancepara N){$/;" f +recompute_PkRatio recompute.c /^int recompute_PkRatio(barypara B){$/;" f +recompute_cl structs.c /^ int *recompute_cl; \/\/ recompute the above or not$/;" m struct:__anon27 file: +recompute_clustering recompute.c /^int recompute_clustering(cosmopara C, galpara G, nuisancepara N, int i, int j){$/;" f +recompute_clusters recompute.c /^int recompute_clusters(cosmopara C, nuisancepara N){$/;" f +recompute_cosmo3D recompute.c /^int recompute_cosmo3D(cosmopara C){$/;" f +recompute_cosmo3D_CLASS recompute.c /^int recompute_cosmo3D_CLASS(cosmopara C){$/;" f +recompute_expansion recompute.c /^int recompute_expansion(cosmopara C){ \/\/rules for recomputing growth factor & comoving distance$/;" f +recompute_galaxies recompute.c /^int recompute_galaxies(galpara G, int i){$/;" f +recompute_ggl recompute.c /^int recompute_ggl(cosmopara C, galpara G, nuisancepara N, int i){$/;" f +recompute_ii recompute.c /^int recompute_ii(cosmopara C, nuisancepara N){$/;" f +recompute_sh structs.c /^ int *recompute_sh;$/;" m struct:__anon27 file: +recompute_shear recompute.c /^int recompute_shear(cosmopara C, nuisancepara N){$/;" f +recompute_zphot_clustering recompute.c /^int recompute_zphot_clustering(nuisancepara N){$/;" f +recompute_zphot_magnification recompute.c /^int recompute_zphot_magnification(nuisancepara N){$/;" f +recompute_zphot_shear recompute.c /^int recompute_zphot_shear(nuisancepara N){$/;" f +redm structs.c /^model_para_redmagic redm;$/;" v +redshift structs.c /^redshiftpara redshift;$/;" v +redshiftpara structs.c /^}redshiftpara;$/;" t typeref:struct:__anon12 file: +relax_shear_priors external_prior.c /^void relax_shear_priors()$/;" f +reset_cov_tables structs.c /^ int reset_cov_tables;$/;" m struct:__anon19 file: +rglob structs.c /^ double rglob;$/;" m struct:__anon19 file: +rho_Delta halo.c /^double rho_Delta(double a) \/\/virial density in solar masses\/h\/(H0\/c)^3$/;" f +rho_crit structs.c /^ double rho_crit; \/* = 3 H_0^2\/(8 pi G), critical comoving density *\/$/;" m struct:__anon10 file: +roots EBfunctions.c /^void roots(int vartheta_max,int vt_min,double store[20][21])$/;" f +roots coefficients.c /^void roots(int vartheta_max,int vt_min,double store[20][21])$/;" f +run_class cosmo3D.c /^int run_class($/;" f +run_class cosmo3D_april7.c /^int run_class($/;" f +run_cov_N_N compute_covariances_fourier.c /^void run_cov_N_N (char *OUTFILE, char *PATH, int nzc1, int nzc2,int start)$/;" f +run_cov_N_N compute_covariances_fourier_HSC.c /^void run_cov_N_N (char *OUTFILE, char *PATH, int nzc1, int nzc2,int start)$/;" f +run_cov_cgl_N compute_covariances_fourier.c /^void run_cov_cgl_N (char *OUTFILE, char *PATH, double *ell_Cluster, double *dell_Cluster,int N1, int nzc2, int start)$/;" f +run_cov_cgl_N compute_covariances_fourier_HSC.c /^void run_cov_cgl_N (char *OUTFILE, char *PATH, double *ell_Cluster, double *dell_Cluster,int N1, int nzc2, int start)$/;" f +run_cov_cgl_cgl compute_covariances_fourier.c /^void run_cov_cgl_cgl (char *OUTFILE, char *PATH, double *ell_Cluster, double *dell_Cluster,int N1, int N2, int start)$/;" f +run_cov_cgl_cgl compute_covariances_fourier_HSC.c /^void run_cov_cgl_cgl (char *OUTFILE, char *PATH, double *ell_Cluster, double *dell_Cluster,int N1, int N2, int start)$/;" f +run_cov_cgl_cgl_all compute_covariances_fourier.c /^void run_cov_cgl_cgl_all (char *OUTFILE, char *PATH, double *ell_Cluster, double *dell_Cluster)$/;" f +run_cov_cgl_cgl_all compute_covariances_fourier_HSC.c /^void run_cov_cgl_cgl_all (char *OUTFILE, char *PATH, double *ell_Cluster, double *dell_Cluster)$/;" f +run_cov_cl_N compute_covariances_fourier.c /^void run_cov_cl_N (char *OUTFILE, char *PATH, double *ell, double *dell,int N1, int nzc2, int start)$/;" f +run_cov_cl_N compute_covariances_fourier_HSC.c /^void run_cov_cl_N (char *OUTFILE, char *PATH, double *ell, double *dell,int N1, int nzc2, int start)$/;" f +run_cov_cl_N_HOD compute_covariances_fourier_HOD.c /^void run_cov_cl_N_HOD (char *OUTFILE, char *PATH, double *ell, double *dell,int N1, int nzc2, int start)$/;" f +run_cov_cl_cgl compute_covariances_fourier.c /^void run_cov_cl_cgl (char *OUTFILE, char *PATH, double *ell, double *dell, double *ell_Cluster, double *dell_Cluster,int N1, int N2, int nl1, int start)$/;" f +run_cov_cl_cgl compute_covariances_fourier_HSC.c /^void run_cov_cl_cgl (char *OUTFILE, char *PATH, double *ell, double *dell, double *ell_Cluster, double *dell_Cluster,int N1, int N2, int nl1, int start)$/;" f +run_cov_cl_cgl_HOD compute_covariances_fourier_HOD.c /^void run_cov_cl_cgl_HOD (char *OUTFILE, char *PATH, double *ell, double *dell, double *ell_Cluster, double *dell_Cluster,int N1, int N2, int nl1, int start)$/;" f +run_cov_clustering compute_covariances_fourier.c /^void run_cov_clustering(char *OUTFILE, char *PATH, double *ell, double *dell, int n1, int n2,int start)$/;" f +run_cov_clustering compute_covariances_fourier_HSC.c /^void run_cov_clustering(char *OUTFILE, char *PATH, double *ell, double *dell, int n1, int n2,int start)$/;" f +run_cov_clustering_HOD compute_covariances_fourier_HOD.c /^void run_cov_clustering_HOD(char *OUTFILE, char *PATH, double *ell, double *dell, int n1, int n2,int start)$/;" f +run_cov_clustering_ggl compute_covariances_fourier.c /^void run_cov_clustering_ggl(char *OUTFILE, char *PATH, double *ell, double *dell, int n1, int n2,int start)$/;" f +run_cov_clustering_ggl compute_covariances_fourier_HSC.c /^void run_cov_clustering_ggl(char *OUTFILE, char *PATH, double *ell, double *dell, int n1, int n2,int start)$/;" f +run_cov_clustering_ggl_HOD compute_covariances_fourier_HOD.c /^void run_cov_clustering_ggl_HOD(char *OUTFILE, char *PATH, double *ell, double *dell, int n1, int n2,int start)$/;" f +run_cov_clustering_ggl_real_bin run_covariances_real.c /^void run_cov_clustering_ggl_real_bin(char *OUTFILE, char *PATH, double *theta, int Ntheta, int n1, int n2, int start)$/;" f +run_cov_clustering_ggl_real_bin run_covariances_real_fullsky.c /^void run_cov_clustering_ggl_real_bin(char *OUTFILE, char *PATH, double *theta, double *dtheta, int Ntheta, int n1, int n2, int start)$/;" f +run_cov_clustering_ggl_real_bin run_covariances_real_fullsky_cltomo.c /^void run_cov_clustering_ggl_real_bin(char *OUTFILE, char *PATH, double *theta, double *dtheta, int Ntheta, int n1, int n2, int start)$/;" f +run_cov_clustering_real_bin run_covariances_real.c /^void run_cov_clustering_real_bin(char *OUTFILE, char *PATH, double *theta, int Ntheta, int n1, int n2, int start)$/;" f +run_cov_clustering_real_bin run_covariances_real_fullsky.c /^void run_cov_clustering_real_bin(char *OUTFILE, char *PATH, double *theta, double *dtheta, int Ntheta, int n1, int n2, int start)$/;" f +run_cov_clustering_real_bin run_covariances_real_fullsky_cltomo.c /^void run_cov_clustering_real_bin(char *OUTFILE, char *PATH, double *theta, double *dtheta, int Ntheta, int n1, int n2, int start)$/;" f +run_cov_clustering_shear compute_covariances_fourier.c /^void run_cov_clustering_shear(char *OUTFILE, char *PATH, double *ell, double *dell, int n1, int n2,int start)$/;" f +run_cov_clustering_shear compute_covariances_fourier_HSC.c /^void run_cov_clustering_shear(char *OUTFILE, char *PATH, double *ell, double *dell, int n1, int n2,int start)$/;" f +run_cov_clustering_shear_HOD compute_covariances_fourier_HOD.c /^void run_cov_clustering_shear_HOD(char *OUTFILE, char *PATH, double *ell, double *dell, int n1, int n2,int start)$/;" f +run_cov_clustering_shear_real_bin run_covariances_real.c /^void run_cov_clustering_shear_real_bin(char *OUTFILE, char *PATH, double *theta, int Ntheta, int n1, int n2, int pm, int start)$/;" f +run_cov_clustering_shear_real_bin run_covariances_real_fullsky.c /^void run_cov_clustering_shear_real_bin(char *OUTFILE, char *PATH, double *theta, double *dtheta, int Ntheta, int n1, int n2, int pm, int start)$/;" f +run_cov_clustering_shear_real_bin run_covariances_real_fullsky_cltomo.c /^void run_cov_clustering_shear_real_bin(char *OUTFILE, char *PATH, double *theta, double *dtheta, int Ntheta, int n1, int n2, int pm, int start)$/;" f +run_cov_ggl compute_covariances_fourier.c /^void run_cov_ggl(char *OUTFILE, char *PATH, double *ell, double *dell, int n1, int n2,int start)$/;" f +run_cov_ggl compute_covariances_fourier_HSC.c /^void run_cov_ggl(char *OUTFILE, char *PATH, double *ell, double *dell, int n1, int n2,int start)$/;" f +run_cov_ggl_HOD compute_covariances_fourier_HOD.c /^void run_cov_ggl_HOD(char *OUTFILE, char *PATH, double *ell, double *dell, int n1, int n2,int start)$/;" f +run_cov_ggl_N compute_covariances_fourier.c /^void run_cov_ggl_N (char *OUTFILE, char *PATH, double *ell, double *dell, int N1, int nzc2, int start)$/;" f +run_cov_ggl_N compute_covariances_fourier_HSC.c /^void run_cov_ggl_N (char *OUTFILE, char *PATH, double *ell, double *dell, int N1, int nzc2, int start)$/;" f +run_cov_ggl_N_HOD compute_covariances_fourier_HOD.c /^void run_cov_ggl_N_HOD (char *OUTFILE, char *PATH, double *ell, double *dell, int N1, int nzc2, int start)$/;" f +run_cov_ggl_cgl compute_covariances_fourier.c /^void run_cov_ggl_cgl (char *OUTFILE, char *PATH, double *ell, double *dell, double *ell_Cluster, double *dell_Cluster,int N1, int N2, int nl1, int start)$/;" f +run_cov_ggl_cgl compute_covariances_fourier_HSC.c /^void run_cov_ggl_cgl (char *OUTFILE, char *PATH, double *ell, double *dell, double *ell_Cluster, double *dell_Cluster,int N1, int N2, int nl1, int start)$/;" f +run_cov_ggl_cgl_HOD compute_covariances_fourier_HOD.c /^void run_cov_ggl_cgl_HOD (char *OUTFILE, char *PATH, double *ell, double *dell, double *ell_Cluster, double *dell_Cluster,int N1, int N2, int nl1, int start)$/;" f +run_cov_ggl_real_bin run_covariances_real.c /^void run_cov_ggl_real_bin(char *OUTFILE, char *PATH, double *theta,int Ntheta, int n1, int n2, int start)$/;" f +run_cov_ggl_real_bin run_covariances_real_fullsky.c /^void run_cov_ggl_real_bin(char *OUTFILE, char *PATH, double *theta, double *dtheta,int Ntheta, int n1, int n2, int start)$/;" f +run_cov_ggl_real_bin run_covariances_real_fullsky_cltomo.c /^void run_cov_ggl_real_bin(char *OUTFILE, char *PATH, double *theta, double *dtheta,int Ntheta, int n1, int n2, int start)$/;" f +run_cov_ggl_shear compute_covariances_fourier.c /^void run_cov_ggl_shear(char *OUTFILE, char *PATH, double *ell, double *dell, int n1, int n2,int start)$/;" f +run_cov_ggl_shear compute_covariances_fourier_HSC.c /^void run_cov_ggl_shear(char *OUTFILE, char *PATH, double *ell, double *dell, int n1, int n2,int start)$/;" f +run_cov_ggl_shear_HOD compute_covariances_fourier_HOD.c /^void run_cov_ggl_shear_HOD(char *OUTFILE, char *PATH, double *ell, double *dell, int n1, int n2,int start)$/;" f +run_cov_ggl_shear_real_bin run_covariances_real.c /^void run_cov_ggl_shear_real_bin(char *OUTFILE, char *PATH, double *theta, int Ntheta, int n1, int n2, int pm, int start)$/;" f +run_cov_ggl_shear_real_bin run_covariances_real_fullsky.c /^void run_cov_ggl_shear_real_bin(char *OUTFILE, char *PATH, double *theta, double *dtheta, int Ntheta, int n1, int n2, int pm, int start)$/;" f +run_cov_ggl_shear_real_bin run_covariances_real_fullsky_cltomo.c /^void run_cov_ggl_shear_real_bin(char *OUTFILE, char *PATH, double *theta, double *dtheta, int Ntheta, int n1, int n2, int pm, int start)$/;" f +run_cov_shear_N compute_covariances_fourier.c /^void run_cov_shear_N (char *OUTFILE, char *PATH, double *ell, double *dell, int N1, int nzc2, int start)$/;" f +run_cov_shear_N compute_covariances_fourier_HSC.c /^void run_cov_shear_N (char *OUTFILE, char *PATH, double *ell, double *dell, int N1, int nzc2, int start)$/;" f +run_cov_shear_cgl compute_covariances_fourier.c /^void run_cov_shear_cgl (char *OUTFILE, char *PATH, double *ell, double *dell, double *ell_Cluster, double *dell_Cluster,int N1, int N2, int nl1, int start)$/;" f +run_cov_shear_cgl compute_covariances_fourier_HSC.c /^void run_cov_shear_cgl (char *OUTFILE, char *PATH, double *ell, double *dell, double *ell_Cluster, double *dell_Cluster,int N1, int N2, int nl1, int start)$/;" f +run_cov_shear_shear compute_covariances_fourier.c /^void run_cov_shear_shear(char *OUTFILE, char *PATH, double *ell, double *dell,int n1, int n2,int start)$/;" f +run_cov_shear_shear compute_covariances_fourier_HSC.c /^void run_cov_shear_shear(char *OUTFILE, char *PATH, double *ell, double *dell,int n1, int n2,int start)$/;" f +run_cov_shear_shear_real_bin run_covariances_real.c /^void run_cov_shear_shear_real_bin(char *OUTFILE, char *PATH,double *theta, int Ntheta, int n1, int n2, int pm1, int pm2, int start)$/;" f +run_cov_shear_shear_real_bin run_covariances_real_fullsky.c /^void run_cov_shear_shear_real_bin(char *OUTFILE, char *PATH,double *theta, double *dtheta, int Ntheta, int n1, int n2, int pm1, int pm2, int start)$/;" f +run_cov_shear_shear_real_bin run_covariances_real_fullsky_cltomo.c /^void run_cov_shear_shear_real_bin(char *OUTFILE, char *PATH,double *theta, double *dtheta, int Ntheta, int n1, int n2, int pm1, int pm2, int start)$/;" f +runmode structs.c /^ char runmode[300];$/;" m struct:__anon18 file: +s8_max_emu cosmo3D.c 21;" d file: +s8_max_emu cosmo3D_april7.c 21;" d file: +s8_min_emu cosmo3D.c 22;" d file: +s8_min_emu cosmo3D_april7.c 22;" d file: +scatter_lgM_obs cluster.c /^double scatter_lgM_obs(double N200, double a){$/;" f +scatter_lgM_obs clusters_DES.c /^double scatter_lgM_obs(double N200, double a){$/;" f +scatter_lgN200_model_mz cluster.c /^double scatter_lgN200_model_mz(double M, double a){$/;" f +scenario structs.c /^ char scenario[100]; \/\/available options: mb2, illustris, eagle, HzAGN, TNG100, owls_AGN, owls_DBLIMFV1618, owls_NOSN, owls_NOSN_NOZCOOL, owls_NOZCOOL, owls_REF, owls_WDENS, owls_WML1V848, owls_WML4$/;" m struct:__anon26 file: +selection structs.c /^ double selection[10];$/;" m struct:input_nuisance_params_mpp file: +sensitivity structs.c /^ double sensitivity; \/\/ white noise level in muK*rad$/;" m struct:__anon14 file: +set_HOD HOD.c /^void set_HOD(int n){ \/\/n >=0: set HOD parameters in redshift bin n; n = -1: unset HOD parameters (code then uses linear bias + non-linear matter power spectrum instead of halo model)$/;" f +set_HOD_redmagic parameters.c /^void set_HOD_redmagic()$/;" f +set_HOD_redmagic_priors external_prior.c /^void set_HOD_redmagic_priors()$/;" f +set_HOD_rm like_fourier_HOD.c /^int set_HOD_rm(double HOD_Mc, double HOD_sigmaM, double HOD_M1, double HOD_M0, double HOD_alpha, double HOD_fc, double HOD_cg){$/;" f +set_LF_DEEP2 IA.c /^void set_LF_DEEP2(void){$/;" f +set_LF_GAMA IA.c /^void set_LF_GAMA(void){$/;" f +set_b1_priors_mpp priors_mpp.c /^void set_b1_priors_mpp(double b1_min, double b1_max)$/;" f +set_b2_priors_mpp priors_mpp.c /^void set_b2_priors_mpp(double b2_min, double b2_max)$/;" f +set_bary_parameters_to_HzAGN parameters_bary.c /^void set_bary_parameters_to_HzAGN()$/;" f +set_bary_parameters_to_TNG100 parameters_bary.c /^void set_bary_parameters_to_TNG100()$/;" f +set_bary_parameters_to_eagle parameters_bary.c /^void set_bary_parameters_to_eagle()$/;" f +set_bary_parameters_to_illustris parameters_bary.c /^void set_bary_parameters_to_illustris()$/;" f +set_bary_parameters_to_mb2 parameters_bary.c /^void set_bary_parameters_to_mb2()$/;" f +set_bary_parameters_to_owls_AGN parameters_bary.c /^void set_bary_parameters_to_owls_AGN()$/;" f +set_bary_parameters_to_owls_DBLIMFV1618 parameters_bary.c /^void set_bary_parameters_to_owls_DBLIMFV1618()$/;" f +set_bary_parameters_to_owls_NOSN parameters_bary.c /^void set_bary_parameters_to_owls_NOSN()$/;" f +set_bary_parameters_to_owls_NOSN_NOZCOOL parameters_bary.c /^void set_bary_parameters_to_owls_NOSN_NOZCOOL()$/;" f +set_bary_parameters_to_owls_NOZCOOL parameters_bary.c /^void set_bary_parameters_to_owls_NOZCOOL()$/;" f +set_bary_parameters_to_owls_REF parameters_bary.c /^void set_bary_parameters_to_owls_REF()$/;" f +set_bary_parameters_to_owls_WDENS parameters_bary.c /^void set_bary_parameters_to_owls_WDENS()$/;" f +set_bary_parameters_to_owls_WML1V848 parameters_bary.c /^void set_bary_parameters_to_owls_WML1V848()$/;" f +set_bary_parameters_to_owls_WML4 parameters_bary.c /^void set_bary_parameters_to_owls_WML4()$/;" f +set_baryon_priors external_prior.c /^void set_baryon_priors()$/;" f +set_clphotoz_priors_LSST_SRD external_prior.c /^void set_clphotoz_priors_LSST_SRD()$/;" f +set_clphotoz_priors_LSST_gold external_prior.c /^void set_clphotoz_priors_LSST_gold()$/;" f +set_clphotoz_priors_benchmark external_prior.c /^void set_clphotoz_priors_benchmark()$/;" f +set_clphotoz_priors_cmass external_prior.c /^void set_clphotoz_priors_cmass()$/;" f +set_clphotoz_priors_mpp priors_mpp.c /^void set_clphotoz_priors_mpp(double *bias_photoz_l,double *sigma_b_photoz_l){$/;" f +set_clphotoz_priors_redmagic external_prior.c /^void set_clphotoz_priors_redmagic()$/;" f +set_clphotoz_priors_source external_prior.c /^void set_clphotoz_priors_source()$/;" f +set_clusterMobs_priors external_prior.c /^void set_clusterMobs_priors()$/;" f +set_clusters_DES init_basic.c /^void set_clusters_DES(){$/;" f +set_clusters_LSST init_basic.c /^void set_clusters_LSST(){$/;" f +set_cmb_actpol init.c /^void set_cmb_actpol() {$/;" f +set_cmb_actpol init_basic.c /^void set_cmb_actpol() {$/;" f +set_cmb_advact init.c /^void set_cmb_advact() {$/;" f +set_cmb_advact init_basic.c /^void set_cmb_advact() {$/;" f +set_cmb_cmbs4 init.c /^void set_cmb_cmbs4() {$/;" f +set_cmb_cmbs4 init_basic.c /^void set_cmb_cmbs4() {$/;" f +set_cosmological_parameters_to_ parameters.c /^void set_cosmological_parameters_to_(char *cosmofile, int output)$/;" f +set_cosmological_parameters_to_BCC parameters.c /^void set_cosmological_parameters_to_BCC()$/;" f +set_cosmological_parameters_to_CFHTLens_cov parameters.c /^void set_cosmological_parameters_to_CFHTLens_cov()$/;" f +set_cosmological_parameters_to_Coyote parameters.c /^void set_cosmological_parameters_to_Coyote()$/;" f +set_cosmological_parameters_to_Joe parameters.c /^void set_cosmological_parameters_to_Joe()$/;" f +set_cosmological_parameters_to_MICE parameters.c /^void set_cosmological_parameters_to_MICE()$/;" f +set_cosmological_parameters_to_MILLENIUM parameters.c /^void set_cosmological_parameters_to_MILLENIUM()$/;" f +set_cosmological_parameters_to_OWLS parameters.c /^void set_cosmological_parameters_to_OWLS()$/;" f +set_cosmological_parameters_to_Planck_15_TT_TE_EE_lowP parameters.c /^void set_cosmological_parameters_to_Planck_15_TT_TE_EE_lowP()$/;" f +set_cosmological_parameters_to_Planck_WP parameters.c /^void set_cosmological_parameters_to_Planck_WP()$/;" f +set_cosmological_parameters_to_SATO parameters.c /^void set_cosmological_parameters_to_SATO()$/;" f +set_cosmological_parameters_to_WMAP_7years_BAO_SN parameters.c /^void set_cosmological_parameters_to_WMAP_7years_BAO_SN()$/;" f +set_cosmological_parameters_to_chincilla parameters.c /^void set_cosmological_parameters_to_chincilla()$/;" f +set_cosmology_params like_fourier.c /^int set_cosmology_params(double OMM, double S8, double NS, double W0,double WA, double OMB, double H0)$/;" f +set_cosmology_params like_fourier_HOD.c /^int set_cosmology_params(double OMM, double S8, double NS, double W0,double WA, double OMB, double H0)$/;" f +set_cov_parameters_to_ parameters.c /^void set_cov_parameters_to_(char *covparamfile, int output)$/;" f +set_data_cgl like_fourier.c /^void set_data_cgl(double *ell_Cluster, double *data, int start)$/;" f +set_data_cgl like_fourier_HOD.c /^void set_data_cgl(double *ell_Cluster, double *data, int start)$/;" f +set_data_cluster_N like_fourier.c /^void set_data_cluster_N(double *data, int start){$/;" f +set_data_cluster_N like_fourier_HOD.c /^void set_data_cluster_N(double *data, int start){$/;" f +set_data_clustering like_fourier.c /^void set_data_clustering(int Ncl, double *ell, double *data, int start){$/;" f +set_data_clustering_HOD like_fourier_HOD.c /^void set_data_clustering_HOD(int Ncl, double *ell, double *data, int start){$/;" f +set_data_ggl like_fourier.c /^void set_data_ggl(int Ncl, double *ell, double *data, int start)$/;" f +set_data_ggl_HOD like_fourier_HOD.c /^void set_data_ggl_HOD(int Ncl, double *ell, double *data, int start)$/;" f +set_data_shear like_fourier.c /^void set_data_shear(int Ncl, double *ell, double *data, int start)$/;" f +set_data_shear like_fourier_HOD.c /^void set_data_shear(int Ncl, double *ell, double *data, int start)$/;" f +set_equal_tomo_bins init.c /^void set_equal_tomo_bins(int Ntomo)$/;" f +set_equal_tomo_bins init_LSST_SRD.c /^void set_equal_tomo_bins()$/;" f +set_equal_tomo_bins init_basic.c /^void set_equal_tomo_bins()$/;" f +set_galaxies_CMASS init.c /^void set_galaxies_CMASS(double density)$/;" f +set_galaxies_CMASS init_basic.c /^void set_galaxies_CMASS(double density)$/;" f +set_galaxies_DES init.c /^void set_galaxies_DES(double density)$/;" f +set_galaxies_DES init_basic.c /^void set_galaxies_DES(double density)$/;" f +set_galaxies_DES_SV init.c /^void set_galaxies_DES_SV(double density)$/;" f +set_galaxies_DES_SV init_basic.c /^void set_galaxies_DES_SV(double density)$/;" f +set_galaxies_DES_Y1 init.c /^void set_galaxies_DES_Y1(void)$/;" f +set_galaxies_DES_Y1 init_basic.c /^void set_galaxies_DES_Y1(void)$/;" f +set_galaxies_LSST init.c /^void set_galaxies_LSST(double density)$/;" f +set_galaxies_LSST init_basic.c /^void set_galaxies_LSST(double density)$/;" f +set_galaxies_LSST_gold init.c /^void set_galaxies_LSST_gold(double density)$/;" f +set_galaxies_LSST_gold init_basic.c /^void set_galaxies_LSST_gold(double density)$/;" f +set_galaxies_LSST_like init.c /^void set_galaxies_LSST_like(double density)$/;" f +set_galaxies_LSST_like init_basic.c /^void set_galaxies_LSST_like(double density)$/;" f +set_galaxies_benchmark_DES init.c /^void set_galaxies_benchmark_DES()$/;" f +set_galaxies_benchmark_DES init_basic.c /^void set_galaxies_benchmark_DES()$/;" f +set_galaxies_benchmark_LSST init.c /^void set_galaxies_benchmark_LSST()$/;" f +set_galaxies_benchmark_LSST init_basic.c /^void set_galaxies_benchmark_LSST()$/;" f +set_galaxies_source init.c /^void set_galaxies_source(void)$/;" f +set_galaxies_source init_basic.c /^void set_galaxies_source(void)$/;" f +set_ia_priors external_prior.c /^void set_ia_priors()$/;" f +set_ia_priors_mpp priors_mpp.c /^void set_ia_priors_mpp(double A_min, double A_max)$/;" f +set_lin_bias_priors external_prior.c /^void set_lin_bias_priors()$/;" f +set_nuisance_cluster_Mobs like_fourier.c /^int set_nuisance_cluster_Mobs(double mass_obs_norm, double mass_obs_slope, double mass_z_slope, double mass_obs_scatter, double c1, double c2, double c3, double c4)$/;" f +set_nuisance_cluster_Mobs like_fourier_HOD.c /^int set_nuisance_cluster_Mobs(double mass_obs_norm, double mass_obs_slope, double mass_z_slope, double mass_obs_scatter, double c1, double c2, double c3, double c4)$/;" f +set_nuisance_clustering_photoz like_fourier.c /^int set_nuisance_clustering_photoz(double CP1,double CP2,double CP3,double CP4,double CP5,double CP6,double CP7,double CP8,double CP9,double CP10,double CPS1)$/;" f +set_nuisance_clustering_photoz like_fourier_HOD.c /^int set_nuisance_clustering_photoz(double CP1,double CP2,double CP3,double CP4,double CP5,double CP6,double CP7,double CP8,double CP9,double CP10,double CPS1)$/;" f +set_nuisance_gbias like_fourier.c /^int set_nuisance_gbias(double B1, double B2, double B3, double B4, double B5, double B6, double B7, double B8, double B9, double B10)$/;" f +set_nuisance_ia like_fourier.c /^int set_nuisance_ia(double A_ia, double beta_ia, double eta_ia, double eta_ia_highz, double LF_alpha, double LF_P, double LF_Q, double LF_red_alpha, double LF_red_P, double LF_red_Q)$/;" f +set_nuisance_ia like_fourier_HOD.c /^int set_nuisance_ia(double A_ia, double beta_ia, double eta_ia, double eta_ia_highz, double LF_alpha, double LF_P, double LF_Q, double LF_red_alpha, double LF_red_P, double LF_red_Q)$/;" f +set_nuisance_shear_calib like_fourier.c /^void set_nuisance_shear_calib(double M1, double M2, double M3, double M4, double M5, double M6, double M7, double M8, double M9, double M10)$/;" f +set_nuisance_shear_calib like_fourier_HOD.c /^void set_nuisance_shear_calib(double M1, double M2, double M3, double M4, double M5, double M6, double M7, double M8, double M9, double M10)$/;" f +set_nuisance_shear_photoz like_fourier.c /^int set_nuisance_shear_photoz(double SP1,double SP2,double SP3,double SP4,double SP5,double SP6,double SP7,double SP8,double SP9,double SP10,double SPS1)$/;" f +set_nuisance_shear_photoz like_fourier_HOD.c /^int set_nuisance_shear_photoz(double SP1,double SP2,double SP3,double SP4,double SP5,double SP6,double SP7,double SP8,double SP9,double SP10,double SPS1)$/;" f +set_prior_cosmology external_prior.c /^void set_prior_cosmology()$/;" f +set_shear_priors_mpp priors_mpp.c /^void set_shear_priors_mpp(double *mean_m,double *sigma_m)$/;" f +set_shear_priors_stage3 external_prior.c /^void set_shear_priors_stage3()$/;" f +set_shear_priors_stage4 external_prior.c /^void set_shear_priors_stage4()$/;" f +set_survey_parameters_to_ parameters.c /^void set_survey_parameters_to_(char *surveyfile, int output)$/;" f +set_survey_parameters_to_CFHTLS parameters.c /^void set_survey_parameters_to_CFHTLS()$/;" f +set_survey_parameters_to_DES parameters.c /^void set_survey_parameters_to_DES()$/;" f +set_survey_parameters_to_DES_BCC_noise parameters.c /^void set_survey_parameters_to_DES_BCC_noise()$/;" f +set_survey_parameters_to_DES_BCC_nonoise parameters.c /^void set_survey_parameters_to_DES_BCC_nonoise()$/;" f +set_survey_parameters_to_DES_SV parameters.c /^void set_survey_parameters_to_DES_SV()$/;" f +set_survey_parameters_to_DES_Y1 parameters.c /^void set_survey_parameters_to_DES_Y1()$/;" f +set_survey_parameters_to_Euclid parameters.c /^void set_survey_parameters_to_Euclid()$/;" f +set_survey_parameters_to_HSC parameters.c /^void set_survey_parameters_to_HSC()$/;" f +set_survey_parameters_to_LSST parameters.c /^void set_survey_parameters_to_LSST()$/;" f +set_survey_parameters_to_LSST_Tully_Fisher parameters.c /^void set_survey_parameters_to_LSST_Tully_Fisher()$/;" f +set_survey_parameters_to_WFIRST parameters.c /^void set_survey_parameters_to_WFIRST() \/\/ according to WFIRST AFTA report April 2015$/;" f +set_survey_parameters_to_WFIRST_Tully_Fisher parameters.c /^void set_survey_parameters_to_WFIRST_Tully_Fisher()$/;" f +set_survey_parameters_to_WFIRST_extended parameters.c /^void set_survey_parameters_to_WFIRST_extended()$/;" f +set_survey_parameters_to_largeULDB parameters.c /^void set_survey_parameters_to_largeULDB()$/;" f +set_survey_parameters_to_mediumULDB parameters.c /^void set_survey_parameters_to_mediumULDB()$/;" f +set_survey_parameters_to_smallULDB parameters.c /^void set_survey_parameters_to_smallULDB()$/;" f +set_wlphotoz_priors_SV external_prior.c /^void set_wlphotoz_priors_SV()$/;" f +set_wlphotoz_priors_mpp priors_mpp.c /^void set_wlphotoz_priors_mpp(double *bias_photoz_s,double *sigma_b_photoz_s){$/;" f +set_wlphotoz_priors_stage3 external_prior.c /^void set_wlphotoz_priors_stage3()$/;" f +set_wlphotoz_priors_stage4 external_prior.c /^void set_wlphotoz_priors_stage4()$/;" f +setup_numpy pt.c /^void setup_numpy(){$/;" f +sglob structs.c /^ double sglob;$/;" m struct:__anon19 file: +shear_Nbin structs.c /^ int shear_Nbin; \/\/ number of tomography bins$/;" m struct:__anon11 file: +shear_Npowerspectra structs.c /^ int shear_Npowerspectra;\/\/ number of tomography power spectra+2+3+...+Nbin$/;" m struct:__anon11 file: +shear_REDSHIFT_FILE structs.c /^ char shear_REDSHIFT_FILE[200];$/;" m struct:__anon12 file: +shear_calibration_m structs.c /^ double shear_calibration_m[10];$/;" m struct:__anon21 file: +shear_calibration_m structs.c /^ double shear_calibration_m[10][2];$/;" m struct:__anon22 file: +shear_histogram_zbins structs.c /^ int shear_histogram_zbins;$/;" m struct:__anon12 file: +shear_m structs.c /^ double shear_m[10];$/;" m struct:input_nuisance_params file: +shear_m structs.c /^ double shear_m[10];$/;" m struct:input_nuisance_params_mpp file: +shear_photoz structs.c /^ int shear_photoz;$/;" m struct:__anon12 file: +shear_pos structs.c /^ int shear_pos;$/;" m struct:__anon9 file: +shear_shear structs.c /^ int shear_shear;$/;" m struct:__anon9 file: +shear_zdistrpar_zmax structs.c /^ double shear_zdistrpar_zmax;$/;" m struct:__anon12 file: +shear_zdistrpar_zmin structs.c /^ double shear_zdistrpar_zmin;$/;" m struct:__anon12 file: +shear_zmax structs.c /^ double shear_zmax[10]; \/\/ code needs modification if more than 10 zbins$/;" m struct:__anon11 file: +shear_zmin structs.c /^ double shear_zmin[10];$/;" m struct:__anon11 file: +shearcalib structs.c /^ int shearcalib;$/;" m struct:__anon9 file: +sigma BAO.c /^ double sigma[10];$/;" m struct:__anon1 file: +sigma2 halo.c /^double sigma2(double m)$/;" f +sigma2_integrand halo.c /^double sigma2_integrand(double x, void * params) \/\/ inner integral$/;" f +sigma_8 structs.c /^ double sigma_8; \/* power spectrum normalization *\/$/;" m struct:__anon10 file: +sigma_8 structs.c /^ double sigma_8;$/;" m struct:input_cosmo_params file: +sigma_8 structs.c /^ double sigma_8;$/;" m struct:input_cosmo_params_mpp file: +sigma_8 structs.c /^ double sigma_8; \/* power spectrum normalization *\/$/;" m struct:__anon22 file: +sigma_e structs.c /^ double sigma_e;\/* rms inrinsic ellipticity noise*\/$/;" m struct:__anon13 file: +sigma_lgMin structs.c /^ double sigma_lgMin;$/;" m struct:input_HOD_params file: +sigma_p GRS.c /^ double sigma_p[10]; \/\/ in km\/s$/;" m struct:__anon8 file: +sigma_p structs.c /^ double sigma_p; \/\/ in km\/s$/;" m struct:__anon25 file: +sigma_p_fid GRS.c /^ double sigma_p_fid[10]; \/\/ in km\/s, fiducial input values=center for prior calculation$/;" m struct:__anon8 file: +sigma_p_fid_sigma GRS.c /^ double sigma_p_fid_sigma; \/\/ in km\/s, sigma for prior calculation$/;" m struct:__anon8 file: +sigma_r_sqr cosmo3D.c /^double sigma_r_sqr()$/;" f +sigma_r_sqr cosmo3D_april7.c /^double sigma_r_sqr() $/;" f +sigma_z GRS.c /^ double sigma_z[10]; \/\/ fractional accuracy$/;" m struct:__anon8 file: +sigma_z structs.c /^ double sigma_z; \/\/ fractional accuracy$/;" m struct:__anon25 file: +sigma_zphot_clustering redshift.c /^double sigma_zphot_clustering (double z, int nz){$/;" f +sigma_zphot_clustering redshift_spline.c /^double sigma_zphot_clustering (double z, int nz){$/;" f +sigma_zphot_clustering structs.c /^ double sigma_zphot_clustering[10];$/;" m struct:__anon21 file: +sigma_zphot_clustering structs.c /^ double sigma_zphot_clustering[10][2];$/;" m struct:__anon22 file: +sigma_zphot_magnification structs.c /^ double sigma_zphot_magnification[10];$/;" m struct:__anon21 file: +sigma_zphot_magnification structs.c /^ double sigma_zphot_magnification[10][2];$/;" m struct:__anon22 file: +sigma_zphot_shear redshift.c /^double sigma_zphot_shear (double z, int nz){$/;" f +sigma_zphot_shear redshift_spline.c /^double sigma_zphot_shear (double z, int nz){$/;" f +sigma_zphot_shear structs.c /^ double sigma_zphot_shear[10];$/;" m struct:__anon21 file: +sigma_zphot_shear structs.c /^ double sigma_zphot_shear[10][2];$/;" m struct:__anon22 file: +source_z_bias structs.c /^ double source_z_bias[10];$/;" m struct:input_nuisance_params file: +source_z_bias structs.c /^ double source_z_bias[10];$/;" m struct:input_nuisance_params_mpp file: +source_z_s structs.c /^ double source_z_s;$/;" m struct:input_nuisance_params file: +sourcephotoz structs.c /^ char sourcephotoz[256];$/;" m struct:__anon13 file: +spline baryons.c /^ gsl_spline2d *spline;$/;" m struct:__anon2 file: +spline_interpolator baryons.c /^} spline_interpolator;$/;" t typeref:struct:__anon2 file: +sqrarg basics.c /^static double sqrarg;$/;" v file: +ss structs.c /^ char ss[8]; \/* Calculate shear-shear components *\/$/;" m struct:__anon24 file: +sum_variance_healpix covariances_3D.c /^double sum_variance_healpix(double a){$/;" f +sur structs.c /^}sur;$/;" t typeref:struct:__anon13 file: +survey structs.c /^sur survey = {.area_conversion_factor = 60.0*60.0*2.90888208665721580e-4*2.90888208665721580e-4, .n_gal_conversion_factor = 1.0\/2.90888208665721580e-4\/2.90888208665721580e-4,.ggl_overlap_cut = 1.};$/;" v +survey_variance covariances_3D.c /^double survey_variance (double a, double fsky){$/;" f +surveystage structs.c /^ int surveystage;$/;" m struct:__anon13 file: +t_lin covariances_3D.c /^double t_lin(double k1x, double k1y, double k2x, double k2y, double k3x, double k3y, double a)$/;" f +tab_AB structs.c /^ double **tab_AB;$/;" m struct:__anon20 file: +tab_IA structs.c /^ double **tab_IA;$/;" m struct:__anon20 file: +tab_d1d3 FASTPT_b3nl.h /^static double tab_d1d3[800] = {3.910971e-18,$/;" v +test_kmax redshift.c /^int test_kmax(double l, int zl){ \/\/test whether the (l,zl) bin is in the linear clustering regime - return 1 if true, 0 otherwise$/;" f +test_kmax redshift_spline.c /^int test_kmax(double l, int zl){ \/\/test whether the (l,zl) bin is in the linear clustering regime - return 1 if true, 0 otherwise$/;" f +test_zoverlap redshift.c /^int test_zoverlap(int zl, int zs){ \/\/test whether source bin zs is behind lens bin zl$/;" f +test_zoverlap redshift_spline.c /^int test_zoverlap(int zl, int zs){ \/\/test whether source bin zs is behind lens bin zl$/;" f +test_zoverlap_c redshift.c /^int test_zoverlap_c(int zc, int zs){ \/\/test whether source bin zs is behind lens bin zl$/;" f +test_zoverlap_c redshift_spline.c /^int test_zoverlap_c(int zc, int zs){ \/\/test whether source bin zs is behind lens bin zl$/;" f +test_zoverlap_cov redshift.c /^int test_zoverlap_cov(int zl, int zs){ \/\/test whether source bin zs is behind lens bin zl$/;" f +test_zoverlap_cov redshift_spline.c /^int test_zoverlap_cov(int zl, int zs){ \/\/test whether source bin zs is behind lens bin zl$/;" f +theta structs.c /^ double *theta;$/;" m struct:__anon9 file: +theta_s structs.c /^ double theta_s;$/;" m struct:__anon10 file: +theta_s structs.c /^ int theta_s;$/;" m struct:__anon9 file: +tmax structs.c /^ double tmax; \/* Theta max (arcmin) *\/$/;" m struct:__anon24 file: +tmin structs.c /^ double tmin; \/* Theta min (arcmin) *\/$/;" m struct:__anon24 file: +tomo structs.c /^tomopara tomo = {.n_source = {0.,0.,0.,0.,0.,0.,0.,0.,0.,0.},.n_lens = {0.,0.,0.,0.,0.,0.,0.,0.,0.,0.}};$/;" v +tomopara structs.c /^}tomopara;$/;" t typeref:struct:__anon11 file: +tri_1h covariances_3D.c /^double tri_1h(double k1, double k2, double k3, double k4,double a)$/;" f +tri_1h_cmcm covariances_cluster.c /^double tri_1h_cmcm (double k1, double k2, double a,int nzc,int nN1, int nN2){\/\/cmcm 1-halo term$/;" f +tri_1h_cov covariances_3D.c /^double tri_1h_cov(double k1, double k2, double a){$/;" f +tri_1h_mmcm covariances_cluster.c /^double tri_1h_mmcm(double k1, double k2, double a,int nzc,int nN){ \/\/mmcm 1-halo term$/;" f +tri_2h covariances_3D.c /^double tri_2h (double k1x,double k1y,double k2x,double k2y,double k3x,double k3y,double a){$/;" f +tri_2h_13 covariances_3D.c /^double tri_2h_13 (double k1x,double k1y,double k2x,double k2y,double k3x,double k3y,double a){$/;" f +tri_2h_13_cov covariances_3D.c /^double tri_2h_13_cov (double k1,double k2,double a){$/;" f +tri_2h_22 covariances_3D.c /^double tri_2h_22 (double k1x,double k1y,double k2x,double k2y,double k3x,double k3y,double a){$/;" f +tri_2h_22_cov covariances_3D.c /^double tri_2h_22_cov (double k1, double k2, double a){$/;" f +tri_2h_cov covariances_3D.c /^double tri_2h_cov (double k1,double k2,double a){$/;" f +tri_3h_cov covariances_3D.c /^double tri_3h_cov(double k1, double k2, double a){$/;" f +tri_4h_cov covariances_3D.c /^double tri_4h_cov(double k1, double k2, double a){$/;" f +tri_matter_cov covariances_3D.c /^double tri_matter_cov(double k1, double k2, double a){$/;" f +tri_multih_cov covariances_3D.c /^double tri_multih_cov(double k1, double k2, double a){$/;" f +twopi basics.c /^ double twopi; $/;" m struct:__anon3 file: +twopoint_via_hankel cosmo2D_real.c /^void twopoint_via_hankel(double **xi, double *logthetamin, double *logthetamax, C_tomo_pointer C_tomo, int ni, int nj, int N_Bessel){$/;" f +u_g HOD.c /^double u_g(double k, double m, double a,int nz)\/\/ Fourier transformed normalized galaxy density profile, NFW with rescaled concentraion so far$/;" f +u_g_rm redmagic.c /^double u_g_rm(double k, double m, double a)\/\/ Fourier transformed normalized galaxy density profile, NFW with rescaled concentraion so far$/;" f +u_nfw halo.c /^double u_nfw(double c, double k, double m, double a){$/;" f +u_nfw_c halo.c /^double u_nfw_c(double c,double k, double m, double aa){\/\/ analytic FT of NFW profile, from Cooray & Sheth 01$/;" f +update_PkRatio recompute.c /^void update_PkRatio(barypara *B){$/;" f +update_cosmopara recompute.c /^void update_cosmopara (cosmopara *C){$/;" f +update_galpara recompute.c /^void update_galpara (galpara *G){$/;" f +update_nuisance recompute.c /^void update_nuisance (nuisancepara *N){$/;" f +var GRS.c /^ double* var;$/;" m struct:__anon7 file: +var structs.c /^ double** var;$/;" m struct:__anon25 file: +vt_bin_max basics.c /^ double vt_bin_max;$/;" m struct:cos file: +vt_bin_min basics.c /^ double vt_bin_min;$/;" m struct:cos file: +vt_max basics.c /^ double vt_max;$/;" m struct:cos file: +vt_min basics.c /^ double vt_min;$/;" m struct:cos file: +vtmax structs.c /^ double vtmax;$/;" m struct:__anon9 file: +vtmin structs.c /^ double vtmin;$/;" m struct:__anon9 file: +w0 structs.c /^ double w0; \/\/time dependent Dark energy parametrization zero order$/;" m struct:__anon10 file: +w0 structs.c /^ double w0;$/;" m struct:input_cosmo_params file: +w0 structs.c /^ double w0;$/;" m struct:input_cosmo_params_mpp file: +w0 structs.c /^ double w0; \/\/time dependent Dark energy parametrization zero order$/;" m struct:__anon22 file: +w_clustering_HOD cosmo2D_real.c /^double w_clustering_HOD(double theta, int ni) \/\/ HOD based galaxy clustering 2PCF galaxies in bin ni$/;" f +w_clustering_HOD_RM redmagic_real.c /^double w_clustering_HOD_RM(double theta)$/;" f +w_clustering_HOD_rm redmagic_real.c /^double w_clustering_HOD_rm(double theta){$/;" f +w_clustering_HOD_rm_1h redmagic_real.c /^double w_clustering_HOD_rm_1h(double theta)$/;" f +w_clustering_HOD_rm_max redmagic_real.c /^double w_clustering_HOD_rm_max(double theta){$/;" f +w_clustering_HOD_rm_tomo redmagic_real.c /^double w_clustering_HOD_rm_tomo(double theta, int nz)$/;" f +w_clustering_tomo cosmo2D_real.c /^double w_clustering_tomo(double theta, int ni, int nj) \/\/ galaxy clustering tomography 2PCF galaxies in bins ni, nj$/;" f +w_gamma_t_HOD_tomo cosmo2D_real.c /^double w_gamma_t_HOD_tomo(double theta,int ni, int nj) \/\/G-G lensing with HOD model, lens bin ni, source bin nj$/;" f +w_gamma_t_TATT cosmo2D_fullsky_TATT.c /^double w_gamma_t_TATT(int nt, int ni, int nj){$/;" f +w_gamma_t_fullsky cosmo2D_fullsky.c /^double w_gamma_t_fullsky(int nt, int ni, int nj){$/;" f +w_gamma_t_nonLimber cosmo2D_exact.c /^double w_gamma_t_nonLimber(int nt, int ni, int nj){$/;" f +w_gamma_t_nonLimber cosmo2D_exact_fft_optimize.c /^double w_gamma_t_nonLimber(int nt, int ni, int nj){$/;" f +w_gamma_t_tomo cosmo2D_real.c /^double w_gamma_t_tomo(double theta,int ni, int nj) \/\/G-G lensing, lens bin ni, source bin nj$/;" f +w_gk_SPT CMBxLSS_real.c /^double w_gk_SPT(double theta, int ni) \/\/ galaxies (ni) x CMB kappa$/;" f +w_ks_SPT CMBxLSS_real.c /^double w_ks_SPT(double theta, int ni){ \/\/ CMB kappa x shear (ni)$/;" f +w_mask covariances_real_binned.c /^double w_mask(double theta_min){$/;" f +w_mask covariances_real_binned_fullsky.c /^double w_mask(double theta_min){$/;" f +w_max_emu cosmo3D.c 27;" d file: +w_max_emu cosmo3D_april7.c 27;" d file: +w_min_emu cosmo3D.c 28;" d file: +w_min_emu cosmo3D_april7.c 28;" d file: +w_real redmagic_real.c /^double w_real(double theta){$/;" f +w_tomo_exact cosmo2D_real.c /^double w_tomo_exact(int nt, int ni, int nj){$/;" f +w_tomo_fullsky cosmo2D_fullsky.c /^double w_tomo_fullsky(int nt, int ni, int nj){$/;" f +w_tomo_nonLimber cosmo2D_exact.c /^double w_tomo_nonLimber(int nt, int ni, int nj){$/;" f +w_tomo_nonLimber cosmo2D_exact_fft.c /^double w_tomo_nonLimber(int nt, int ni, int nj){$/;" f +w_tomo_nonLimber cosmo2D_exact_fft_cltomo.c /^double w_tomo_nonLimber(int nt, int ni, int nj){$/;" f +w_tomo_nonLimber cosmo2D_exact_fft_optimize.c /^double w_tomo_nonLimber(int nt, int ni, int nj){$/;" f +w_via_hankel_HOD_rm redmagic_real.c /^void w_via_hankel_HOD_rm(double **xi, double *logthetamin, double *logthetamax)$/;" f +w_via_hankel_HOD_rm_1h redmagic_real.c /^void w_via_hankel_HOD_rm_1h(double **xi, double *logthetamin, double *logthetamax)$/;" f +w_via_hankel_HOD_rm_tomo redmagic_real.c /^void w_via_hankel_HOD_rm_tomo(double **xi, double *logthetamin, double *logthetamax, int nz)$/;" f +wa structs.c /^ double wa; \/\/time dependent Dark energy parametrization first order$/;" m struct:__anon10 file: +wa structs.c /^ double wa;$/;" m struct:input_cosmo_params file: +wa structs.c /^ double wa;$/;" m struct:input_cosmo_params_mpp file: +wa structs.c /^ double wa; \/\/time dependent Dark energy parametrization first order$/;" m struct:__anon22 file: +wa_max_emu cosmo3D.c 29;" d file: +wa_max_emu cosmo3D_april7.c 29;" d file: +wa_min_emu cosmo3D.c 30;" d file: +wa_min_emu cosmo3D_april7.c 30;" d file: +wlphotoz structs.c /^ int wlphotoz;$/;" m struct:__anon9 file: +write_gglensing_zbins redshift.c /^void write_gglensing_zbins(char *surveyname){$/;" f +write_gglensing_zbins redshift_spline.c /^void write_gglensing_zbins(char *surveyname){$/;" f +write_plin pt.c /^void write_plin(char *filebase){$/;" f +write_plin pt_cfastpt.c /^void write_plin(void){$/;" f +xJ2 covariances_real_binned.c /^double xJ2 (double x, void *params){$/;" f +xJ2 covariances_real_binned_fullsky.c /^double xJ2 (double x, void *params){$/;" f +xJ4 covariances_real_binned.c /^double xJ4 (double x, void *params){$/;" f +xJ4 covariances_real_binned_fullsky.c /^double xJ4 (double x, void *params){$/;" f +xacc baryons.c /^ gsl_interp_accel *xacc;$/;" m struct:__anon2 file: +xi_3d_rmax basics.c /^ double xi_3d_rmax;$/;" m struct:__anon5 file: +xi_3d_rmin basics.c /^ double xi_3d_rmin;$/;" m struct:__anon5 file: +xi_gg redmagic_real.c /^double xi_gg (double R_mpc, double a){ \/\/ 3D gg correlation function (tabulated at z = 0.5*(tomo.clustering_zmin[0]+tomo.clustering_zmax[0]); scaled with D(z)^2)$/;" f +xi_gg_1h redmagic_real.c /^double xi_gg_1h (double R_mpc, double a){ \/\/ 3D gg correlation function (tabulated at z = 0.5*(tomo.clustering_zmin[0]+tomo.clustering_zmax[0]); scaled with D(z)^2)$/;" f +xi_magnification_magnification_tomo magnification.c /^double xi_magnification_magnification_tomo(double theta, int ni, int nj)$/;" f +xi_nl redmagic_real.c /^double xi_nl (double R, double a){ \/\/ 3D matter correlation function (tabulated at z = 0.5*(tomo.clustering_zmin[0]+tomo.clustering_zmax[0]); scaled with D(z)^2)$/;" f +xi_nl2 redmagic_real.c /^double xi_nl2 (double R, double a){ \/\/ 3D matter correlation function (tabulated at z = 0.5*(tomo.clustering_zmin[0]+tomo.clustering_zmax[0]); scaled with D(z)^2)$/;" f +xi_pm_TATT cosmo2D_fullsky_TATT.c /^double xi_pm_TATT(int pm, int nt, int ni, int nj) \/\/shear tomography correlation functions$/;" f +xi_pm_fullsky cosmo2D_fullsky.c /^double xi_pm_fullsky(int pm, int nt, int ni, int nj) \/\/shear tomography correlation functions$/;" f +xi_pm_rebin cosmo2D_real.c /^double xi_pm_rebin(int pm, double thetamin_i, double thetamax_i, int ni,int nj){$/;" f +xi_pm_tomo cosmo2D_real.c /^double xi_pm_tomo(int pm, double theta, int ni, int nj) \/\/shear tomography correlation functions$/;" f +xi_position_magnification_tomo magnification.c /^double xi_position_magnification_tomo(double theta, int ni, int nj)$/;" f +xi_shear_magnification_tomo magnification.c /^double xi_shear_magnification_tomo(double theta, int ni, int nj)$/;" f +xi_via_hankel_magnification_magnification_tomo magnification.c /^void xi_via_hankel_magnification_magnification_tomo(double **xi, double *logthetamin, double *logthetamax, int ni, int nj)$/;" f +xi_via_hankel_position_magnification_tomo magnification.c /^void xi_via_hankel_position_magnification_tomo(double **xi, double *logthetamin, double *logthetamax, int ni, int nj)$/;" f +xi_via_hankel_shear_magnification_tomo magnification.c /^void xi_via_hankel_shear_magnification_tomo(double **xi, double *logthetamin, double *logthetamax, int ni, int nj)$/;" f +xi_via_hankel_theta_max basics.c /^ double xi_via_hankel_theta_max;$/;" m struct:__anon5 file: +xi_via_hankel_theta_min basics.c /^ double xi_via_hankel_theta_min;$/;" m struct:__anon5 file: +xipm_via_hankel cosmo2D_real.c /^void xipm_via_hankel(double **xi, double *logthetamin, double *logthetamax, C_tomo_pointer C_tomo,int ni, int nj)$/;" f +yacc baryons.c /^ gsl_interp_accel *yacc;$/;" m struct:__anon2 file: +z BAO.c /^ double z[10];$/;" m struct:__anon1 file: +z GRS.c /^ double z[10];$/;" m struct:__anon7 file: +z structs.c /^ double z[10];$/;" m struct:__anon25 file: +z_bins structs.c /^ double z_bins[50];$/;" m struct:__anon26 file: +zdistr_cluster cluster.c /^double zdistr_cluster(double z, int nz, int nN){ \/\/simplfied selection function, disregards evolution of N-M relation + mass function within redshift bin$/;" f +zdistr_cluster clusters_DES.c /^double zdistr_cluster(double z, int nz, int nN){ \/\/simplfied selection function, disregards evolution of N-M relation + mass function within redshift bin$/;" f +zdistr_histo_1 redshift.c /^double zdistr_histo_1(double z, void *params) \/\/return nz(z) based on redshift file with one redshift distribution$/;" f +zdistr_histo_1 redshift_spline.c /^double zdistr_histo_1(double z, void *params) \/\/return nz(z) based on redshift file with one redshift distribution$/;" f +zdistr_histo_n redshift.c /^double zdistr_histo_n(double z, void *params) \/\/ return nz(z,j) based on redshift file with structure z[i] nz[0][i] .. nz[tomo.shear_Nbin-1][i]$/;" f +zdistr_histo_n redshift_spline.c /^double zdistr_histo_n(double z, void *params) \/\/ return nz(z,j) based on redshift file with structure z[i] nz[0][i] .. nz[tomo.shear_Nbin-1][i]$/;" f +zdistr_photoz redshift.c /^double zdistr_photoz(double zz,int j) \/\/returns n(ztrue | j), works only with binned distributions; j =-1 -> no tomography; j>= 0 -> tomography bin j$/;" f +zdistr_photoz redshift_spline.c /^double zdistr_photoz(double zz,int j) \/\/returns n(ztrue | j), works only with binned distributions; j>= 0 -> tomography bin j$/;" f +zmean redshift.c /^double zmean(int j){ \/\/mean true redshift of galaxies in tomography bin j$/;" f +zmean redshift_spline.c /^double zmean(int j){ \/\/mean true redshift of galaxies in tomography bin j$/;" f +zmean_source redshift.c /^double zmean_source(int j){ \/\/mean true redshift of source galaxies in tomography bin j$/;" f +zmean_source redshift_spline.c /^double zmean_source(int j){ \/\/mean true redshift of source galaxies in tomography bin j$/;" f